[
  {
    "path": ".gitignore",
    "content": "Sources/*/bin/*\nSources/*/obj/*\n"
  },
  {
    "path": "3rd/SharpDX/SharpDX.D3DCompiler.xml",
    "content": "<?xml version=\"1.0\"?>\n<doc>\n    <assembly>\n        <name>SharpDX.D3DCompiler</name>\n    </assembly>\n    <members>\n        <member name=\"T:SharpDX.D3DCompiler.AssemblyDoc\">\n            <summary>\n            The <see cref=\"A:SharpDX.D3DCompiler\"/> assembly is a managed Direct3D Compiler API.\n            </summary>\n            <msdn-id>dd607340</msdn-id>\n            <unmanaged>D3DCompiler</unmanaged>\t\n            <unmanaged-short>D3DCompiler</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.D3DCompiler.CompilationResult\">\n            <summary>\n            Shader compilation results.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.CompilationResult.#ctor(SharpDX.D3DCompiler.ShaderBytecode,SharpDX.Result,System.String)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.D3DCompiler.CompilationResult\"/> class.\n            </summary>\n            <param name=\"bytecode\">The bytecode.</param>\n            <param name=\"resultCode\">The result code.</param>\n            <param name=\"message\">The message.</param>\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.CompilationResult.op_Implicit(SharpDX.D3DCompiler.CompilationResult)~SharpDX.D3DCompiler.ShaderBytecode\">\n            <summary>\n            Performs an implicit conversion from <see cref=\"T:SharpDX.D3DCompiler.CompilationResult\"/> to <see cref=\"T:SharpDX.D3DCompiler.ShaderBytecode\"/>.\n            </summary>\n            <param name=\"input\">The input.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.CompilationResult.op_Implicit(SharpDX.D3DCompiler.CompilationResult)~System.Byte[]\">\n            <summary>\n            Performs an implicit conversion from <see cref=\"T:SharpDX.D3DCompiler.CompilationResult\"/> to byte array\n            </summary>\n            <param name=\"input\">The input.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"T:SharpDX.D3DCompiler.D3D\">\n            <summary>\n            Warming, the following code is manually copied from generated code from Direct3D10 compiler.\n            We need to access this method in order to compile Direct3D10 Effects with plain old D3D10CompileEffectFromMemory function.\n            </summary>\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.D3DCompiler.D3D']/*\"/>\t\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.D3D.CompileEffect10FromMemory(System.IntPtr,SharpDX.PointerSize,System.String,SharpDX.Direct3D.ShaderMacro[],System.IntPtr,SharpDX.D3DCompiler.ShaderFlags,SharpDX.D3DCompiler.EffectFlags,SharpDX.Direct3D.Blob@,SharpDX.Direct3D.Blob@)\">\n            <summary>\n            Compiles the effect10 from memory.\n            </summary>\n            <param name=\"dataRef\">The data ref.</param>\n            <param name=\"dataLength\">Length of the data.</param>\n            <param name=\"srcFileNameRef\">The SRC file name ref.</param>\n            <param name=\"definesRef\">The defines ref.</param>\n            <param name=\"includeRef\">The include ref.</param>\n            <param name=\"hlslFlags\">The h LSL flags.</param>\n            <param name=\"fxFlags\">The f X flags.</param>\n            <param name=\"compiledEffectOut\">The compiled effect out.</param>\n            <param name=\"errorsOut\">The errors out.</param>\n            <returns>Result code.</returns>\n            <unmanaged>HRESULT D3D10CompileEffectFromMemory([In] void* pData,[In] SIZE_T DataLength,[In] const char* pSrcFileName,[In, Buffer, Optional] const D3D_SHADER_MACRO* pDefines,[In] ID3DInclude* pInclude,[In] D3DCOMPILE_SHADER_FLAGS HLSLFlags,[In] D3DCOMPILE_EFFECT_FLAGS FXFlags,[In] ID3D10Blob** ppCompiledEffect,[In] ID3D10Blob** ppErrors)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.D3D.GetBlobPart(System.IntPtr,SharpDX.PointerSize,SharpDX.D3DCompiler.ShaderBytecodePart,System.Int32,SharpDX.Direct3D.Blob@)\">\n            <summary>\t\n            <p>Retrieves a specific part from a compilation result.</p>\t\n            </summary>\t\n            <param name=\"srcDataRef\"><dd>  <p>A reference to uncompiled shader data; either ASCII HLSL code or a compiled effect.</p> </dd></param>\t\n            <param name=\"srcDataSize\"><dd>  <p>Length of uncompiled shader data that <em>pSrcData</em> points to.</p> </dd></param>\t\n            <param name=\"part\"><dd>  <p>A <strong><see cref=\"T:SharpDX.D3DCompiler.ShaderBytecodePart\"/></strong>-typed value that specifies the part of the buffer to retrieve.</p> </dd></param>\t\n            <param name=\"flags\"><dd>  <p>Flags that indicate how to retrieve the blob part. Currently, no flags are defined.</p> </dd></param>\t\n            <param name=\"partOut\"><dd>  <p>The address of a reference to the <strong>ID3DBlob</strong> interface that is used to retrieve the specified part of the buffer.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p><strong><see cref=\"M:SharpDX.D3DCompiler.D3D.GetBlobPart(System.IntPtr,SharpDX.PointerSize,SharpDX.D3DCompiler.ShaderBytecodePart,System.Int32,SharpDX.Direct3D.Blob@)\"/></strong> retrieves the part of a blob (arbitrary length data buffer) that contains the type of data that the  <em>Part</em> parameter specifies.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DGetBlobPart']/*\"/>\t\n            <msdn-id>ff728674</msdn-id>\t\n            <unmanaged>HRESULT D3DGetBlobPart([In, Buffer] const void* pSrcData,[In] SIZE_T SrcDataSize,[In] D3D_BLOB_PART Part,[In] unsigned int Flags,[Out] ID3D10Blob** ppPart)</unmanaged>\t\n            <unmanaged-short>D3DGetBlobPart</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.D3D.DecompressShaders(System.IntPtr,SharpDX.PointerSize,System.Int32,System.Int32,System.Int32[],System.Int32,SharpDX.Direct3D.Blob[],System.Int32@)\">\n            <summary>\t\n            <p>Decompresses one or more shaders from a compressed set. </p>\t\n            </summary>\t\n            <param name=\"srcDataRef\"><dd>  <p>A reference to uncompiled shader data; either ASCII HLSL code or a compiled effect.</p> </dd></param>\t\n            <param name=\"srcDataSize\"><dd>  <p>Length of uncompiled shader data that <em>pSrcData</em> points to.</p> </dd></param>\t\n            <param name=\"uNumShaders\"><dd>  <p>The number of shaders to decompress.</p> </dd></param>\t\n            <param name=\"uStartIndex\"><dd>  <p>The index of the first shader to decompress.</p> </dd></param>\t\n            <param name=\"indicesRef\"><dd>  <p>An array of indexes that represent the shaders to decompress.</p> </dd></param>\t\n            <param name=\"uFlags\"><dd>  <p>Flags that indicate how to decompress. Currently, no flags are defined.</p> </dd></param>\t\n            <param name=\"shadersOut\"><dd>  <p>The address of a reference to the <strong>ID3DBlob</strong> interface that is used to retrieve the decompressed shader data.</p> </dd></param>\t\n            <param name=\"totalShadersRef\"><dd>  <p>A reference to a variable that receives the total number of shaders that  <strong><see cref=\"M:SharpDX.D3DCompiler.D3D.DecompressShaders(System.IntPtr,SharpDX.PointerSize,System.Int32,System.Int32,System.Int32[],System.Int32,SharpDX.Direct3D.Blob[],System.Int32@)\"/></strong> decompressed.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDecompressShaders']/*\"/>\t\n            <msdn-id>ff728673</msdn-id>\t\n            <unmanaged>HRESULT D3DDecompressShaders([In, Buffer] const void* pSrcData,[In] SIZE_T SrcDataSize,[In] unsigned int uNumShaders,[In] unsigned int uStartIndex,[In, Buffer, Optional] unsigned int* pIndices,[In] unsigned int uFlags,[Out, Buffer] ID3D10Blob** ppShaders,[Out, Optional] unsigned int* pTotalShaders)</unmanaged>\t\n            <unmanaged-short>D3DDecompressShaders</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.D3D.Disassemble(System.IntPtr,SharpDX.PointerSize,SharpDX.D3DCompiler.DisassemblyFlags,System.String,SharpDX.Direct3D.Blob@)\">\n            <summary>\t\n            <p>Disassembles compiled HLSL code.</p>\t\n            </summary>\t\n            <param name=\"srcDataRef\"><dd>  <p>A reference to source data as compiled HLSL code.</p> </dd></param>\t\n            <param name=\"srcDataSize\"><dd>  <p>Length of <em>pSrcData</em>.</p> </dd></param>\t\n            <param name=\"flags\"><dd>  <p>Flags affecting the behavior of <strong><see cref=\"M:SharpDX.D3DCompiler.D3D.Disassemble(System.IntPtr,SharpDX.PointerSize,SharpDX.D3DCompiler.DisassemblyFlags,System.String,SharpDX.Direct3D.Blob@)\"/></strong>.  <em>Flags</em> can be a combination of zero or more of the following values. </p> <table> <tr><th>Flag</th><th>Description</th></tr> <tr><td><see cref=\"F:SharpDX.D3DCompiler.DisassemblyFlags.EnableColorCode\"/></td><td>Enable the output of color codes.</td></tr> <tr><td><see cref=\"F:SharpDX.D3DCompiler.DisassemblyFlags.EnableDefaultValuePrints\"/></td><td>Enable the output of default values.</td></tr> <tr><td><see cref=\"F:SharpDX.D3DCompiler.DisassemblyFlags.EnableInstructionNumbering\"/></td><td>Enable instruction numbering.</td></tr> <tr><td><see cref=\"F:SharpDX.D3DCompiler.DisassemblyFlags.EnableInstructionCycle\"/></td><td>No effect.</td></tr> </table> <p>?</p> </dd></param>\t\n            <param name=\"szComments\"><dd>  <p>The optional comment string at the top of the shader that identifies the shader constants and variables.</p> </dd></param>\t\n            <param name=\"disassemblyOut\"><dd>  <p>A reference to a buffer that receives the <see cref=\"T:SharpDX.Direct3D.Blob\"/> interface that accesses assembly text.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDisassemble']/*\"/>\t\n            <msdn-id>dd607326</msdn-id>\t\n            <unmanaged>HRESULT D3DDisassemble([In, Buffer] const void* pSrcData,[In] SIZE_T SrcDataSize,[In] D3DCOMPILE_DISASM_FLAGS Flags,[In, Optional] const char* szComments,[Out] ID3D10Blob** ppDisassembly)</unmanaged>\t\n            <unmanaged-short>D3DDisassemble</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.D3D.Compile(System.IntPtr,SharpDX.PointerSize,System.String,SharpDX.Direct3D.ShaderMacro[],System.IntPtr,System.String,System.String,SharpDX.D3DCompiler.ShaderFlags,SharpDX.D3DCompiler.EffectFlags,SharpDX.Direct3D.Blob@,SharpDX.Direct3D.Blob@)\">\n            <summary>\t\n            <p>Compile HLSL code or an  effect file into bytecode for a given target.</p>\t\n            </summary>\t\n            <param name=\"srcDataRef\"><dd>  <p>A reference to uncompiled shader data; either ASCII HLSL code or a compiled effect.</p> </dd></param>\t\n            <param name=\"srcDataSize\"><dd>  <p>Length of <em>pSrcData</em>.</p> </dd></param>\t\n            <param name=\"sourceNameRef\"><dd>  <p>Optional. You can use this parameter for strings that specify  error messages. If not used, set to <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"definesRef\"><dd>  <p>Optional. An array of <c>null</c>-terminated macro definitions (see <strong><see cref=\"T:SharpDX.Direct3D.ShaderMacro\"/></strong>).</p> </dd></param>\t\n            <param name=\"includeRef\"><dd>  <p>Optional. A reference to an <strong><see cref=\"T:SharpDX.D3DCompiler.Include\"/></strong> for handling include files. Setting this to <strong><c>null</c></strong> will cause a compile error if a shader contains a #include. You can pass the <strong>D3D_COMPILE_STANDARD_FILE_INCLUDE</strong> macro, which is a reference to a default include handler. This default include handler includes files that are relative to the current directory and files that are relative to the directory of the initial source file. When you use <strong>D3D_COMPILE_STANDARD_FILE_INCLUDE</strong>, you must specify the source file name in the <em>pSourceName</em> parameter; the compiler will derive the initial relative directory from <em>pSourceName</em>.</p>  <pre><code>#define D3D_COMPILE_STANDARD_FILE_INCLUDE ((<see cref=\"T:SharpDX.D3DCompiler.Include\"/>*)(<see cref=\"T:System.IntPtr\"/>)1)</code></pre>  </dd></param>\t\n            <param name=\"entrypointRef\"><dd>  <p>The name of the shader entry point function where shader execution begins. When you compile an effect, <strong><see cref=\"M:SharpDX.D3DCompiler.D3D.Compile(System.IntPtr,SharpDX.PointerSize,System.String,SharpDX.Direct3D.ShaderMacro[],System.IntPtr,System.String,System.String,SharpDX.D3DCompiler.ShaderFlags,SharpDX.D3DCompiler.EffectFlags,SharpDX.Direct3D.Blob@,SharpDX.Direct3D.Blob@)\"/></strong> ignores <em>pEntrypoint</em>; we recommend that you set <em>pEntrypoint</em> to <strong><c>null</c></strong> because it is good programming practice to set a reference parameter to <strong><c>null</c></strong> if the called function will not use it.</p> </dd></param>\t\n            <param name=\"targetRef\"><dd>  <p>A string that specifies the shader target or set of shader features to compile against. The shader target can be shader model 2, shader model 3, shader model 4, or shader model 5. The target can also be an effect type (for example, fx_4_1).</p> </dd></param>\t\n            <param name=\"flags1\"><dd>  <p>Shader <strong>compile options</strong>.</p> </dd></param>\t\n            <param name=\"flags2\"><dd>  <p>Effect <strong>compile options</strong>. When you compile a shader and not an effect file, <strong><see cref=\"M:SharpDX.D3DCompiler.D3D.Compile(System.IntPtr,SharpDX.PointerSize,System.String,SharpDX.Direct3D.ShaderMacro[],System.IntPtr,System.String,System.String,SharpDX.D3DCompiler.ShaderFlags,SharpDX.D3DCompiler.EffectFlags,SharpDX.Direct3D.Blob@,SharpDX.Direct3D.Blob@)\"/></strong> ignores <em>Flags2</em>; we recommend that you set <em>Flags2</em> to zero because it is good programming practice to set a nonreference parameter to zero if the called function will not use it.</p> </dd></param>\t\n            <param name=\"codeOut\"><dd>  <p>The address of a <strong>ID3DBlob</strong> that contains the compiled code.</p> </dd></param>\t\n            <param name=\"errorMsgsOut\"><dd>  <p>Optional. A reference to an <strong>ID3DBlob</strong> that contains compiler error messages, or <strong><c>null</c></strong> if there were no errors.</p> </dd></param>\t\n            <returns><p>Returns one of the Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCompile']/*\"/>\t\n            <msdn-id>dd607324</msdn-id>\t\n            <unmanaged>HRESULT D3DCompile([In, Buffer] const void* pSrcData,[In] SIZE_T SrcDataSize,[In, Optional] const char* pSourceName,[In, Buffer, Optional] const D3D_SHADER_MACRO* pDefines,[In, Optional] ID3DInclude* pInclude,[In] const char* pEntrypoint,[In] const char* pTarget,[In] D3DCOMPILE_SHADER_FLAGS Flags1,[In] D3DCOMPILE_EFFECT_FLAGS Flags2,[Out] ID3D10Blob** ppCode,[Out, Optional] ID3D10Blob** ppErrorMsgs)</unmanaged>\t\n            <unmanaged-short>D3DCompile</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.D3D.StripShader(System.IntPtr,SharpDX.PointerSize,SharpDX.D3DCompiler.StripFlags,SharpDX.Direct3D.Blob@)\">\n            <summary>\t\n            <p>Removes unwanted blobs from a compilation result.</p>\t\n            </summary>\t\n            <param name=\"shaderBytecodeRef\"><dd>  <p>A reference to source data as compiled HLSL code.</p> </dd></param>\t\n            <param name=\"bytecodeLength\"><dd>  <p>Length of <em>pSrcData</em>.</p> </dd></param>\t\n            <param name=\"uStripFlags\"><dd>  <p>Strip flag options, represented by <strong><see cref=\"T:SharpDX.D3DCompiler.StripFlags\"/></strong>.</p> </dd></param>\t\n            <param name=\"strippedBlobOut\"><dd>  <p>A reference to a variable that receives a reference to the <strong>ID3DBlob</strong> interface that you can use to access the unwanted stripped out shader code.</p> </dd></param>\t\n            <returns><p>Returns one of the Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DStripShader']/*\"/>\t\n            <msdn-id>dd607335</msdn-id>\t\n            <unmanaged>HRESULT D3DStripShader([In, Buffer] const void* pShaderBytecode,[In] SIZE_T BytecodeLength,[In] D3DCOMPILER_STRIP_FLAGS uStripFlags,[Out] ID3D10Blob** ppStrippedBlob)</unmanaged>\t\n            <unmanaged-short>D3DStripShader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.D3D.Preprocess(System.IntPtr,SharpDX.PointerSize,System.String,SharpDX.Direct3D.ShaderMacro[],System.IntPtr,SharpDX.Direct3D.Blob@,SharpDX.Direct3D.Blob@)\">\n            <summary>\t\n            <p>Preprocesses uncompiled HLSL code.</p>\t\n            </summary>\t\n            <param name=\"srcDataRef\"><dd>  <p>A reference to uncompiled shader data; either ASCII HLSL code or a compiled effect.</p> </dd></param>\t\n            <param name=\"srcDataSize\"><dd>  <p>Length of <em>pSrcData</em>.</p> </dd></param>\t\n            <param name=\"sourceNameRef\"><dd>  <p>Optional. The name of the file that contains the uncompiled HLSL code.</p> </dd></param>\t\n            <param name=\"definesRef\"><dd>  <p>Optional. An array of <c>null</c>-terminated macro definitions (see <strong><see cref=\"T:SharpDX.Direct3D.ShaderMacro\"/></strong>).</p> </dd></param>\t\n            <param name=\"includeRef\"><dd>  <p>Optional. A reference to an <strong><see cref=\"T:SharpDX.D3DCompiler.Include\"/></strong> for handling include files. Setting this to <strong><c>null</c></strong> will cause a compile error if a shader contains a #include. You can pass the <strong>D3D_COMPILE_STANDARD_FILE_INCLUDE</strong> macro, which is a reference to a default include handler. This default include handler includes files that are relative to the current directory and files that are relative to the directory of the initial source file. When you use <strong>D3D_COMPILE_STANDARD_FILE_INCLUDE</strong>, you must specify the source file name in the <em>pSourceName</em> parameter; the compiler will derive the initial relative directory from <em>pSourceName</em>.</p>  <pre><code>#define D3D_COMPILE_STANDARD_FILE_INCLUDE ((<see cref=\"T:SharpDX.D3DCompiler.Include\"/>*)(<see cref=\"T:System.IntPtr\"/>)1)</code></pre>  </dd></param>\t\n            <param name=\"codeTextOut\"><dd>  <p>The address of a <strong>ID3DBlob</strong> that contains the compiled code.</p> </dd></param>\t\n            <param name=\"errorMsgsOut\"><dd>  <p>Optional. A reference to an <strong>ID3DBlob</strong> that contains compiler error messages, or <strong><c>null</c></strong> if there were no errors.</p> </dd></param>\t\n            <returns><p>Returns one of the Direct3D 10 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p><strong><see cref=\"M:SharpDX.D3DCompiler.D3D.Preprocess(System.IntPtr,SharpDX.PointerSize,System.String,SharpDX.Direct3D.ShaderMacro[],System.IntPtr,SharpDX.Direct3D.Blob@,SharpDX.Direct3D.Blob@)\"/></strong> outputs #line directives and preserves line numbering of source input so that output line numbering can be properly related to the input source.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPreprocess']/*\"/>\t\n            <msdn-id>dd607332</msdn-id>\t\n            <unmanaged>HRESULT D3DPreprocess([In, Buffer] const void* pSrcData,[In] SIZE_T SrcDataSize,[In, Optional] const char* pSourceName,[In, Buffer, Optional] const D3D_SHADER_MACRO* pDefines,[In, Optional] ID3DInclude* pInclude,[Out] ID3D10Blob** ppCodeText,[Out, Optional] ID3D10Blob** ppErrorMsgs)</unmanaged>\t\n            <unmanaged-short>D3DPreprocess</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.D3D.CompressShaders(System.Int32,SharpDX.D3DCompiler.ShaderData[],System.Int32,SharpDX.Direct3D.Blob@)\">\n            <summary>\t\n            <p>Compresses a set of shaders into a more compact form. </p>\t\n            </summary>\t\n            <param name=\"uNumShaders\"><dd>  <p>The number of shaders to compress.</p> </dd></param>\t\n            <param name=\"shaderDataRef\"><dd>  <p>An array of <strong><see cref=\"T:SharpDX.D3DCompiler.ShaderData\"/></strong> structures that describe the set of shaders to compress.</p> </dd></param>\t\n            <param name=\"uFlags\"><dd>  <p>Flags that indicate how to compress the shaders. Currently, only the  D3D_COMPRESS_SHADER_KEEP_ALL_PARTS (0x00000001) flag is defined.</p> </dd></param>\t\n            <param name=\"compressedDataOut\"><dd>  <p>The address of a reference to the <strong>ID3DBlob</strong> interface that is used to retrieve the compressed shader data.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCompressShaders']/*\"/>\t\n            <msdn-id>ff728671</msdn-id>\t\n            <unmanaged>HRESULT D3DCompressShaders([In] unsigned int uNumShaders,[In, Buffer] D3D_SHADER_DATA* pShaderData,[In] unsigned int uFlags,[Out] ID3D10Blob** ppCompressedData)</unmanaged>\t\n            <unmanaged-short>D3DCompressShaders</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.D3D.Reflect(System.IntPtr,SharpDX.PointerSize,System.Guid,System.IntPtr@)\">\n            <summary>\t\n            <p>Gets a reference to a reflection interface.</p>\t\n            </summary>\t\n            <param name=\"srcDataRef\"><dd>  <p>A reference to source data as compiled HLSL code.</p> </dd></param>\t\n            <param name=\"srcDataSize\"><dd>  <p>Length of <em>pSrcData</em>.</p> </dd></param>\t\n            <param name=\"interfaceRef\"><dd>  <p>The reference <see cref=\"T:System.Guid\"/> of the COM interface to use. For example, <strong>IID_ID3D11ShaderReflection</strong> or <strong>IID_ID3D10ShaderReflection</strong>.</p> </dd></param>\t\n            <param name=\"reflectorOut\"><dd>  <p>A reference to a reflection interface.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>Shader code contains metadata that can be inspected using the reflection APIs.</p><p>The following code illustrates retrieving a <see cref=\"T:SharpDX.D3DCompiler.ShaderReflection\"/> Interface from a shader.</p><pre><code> pd3dDevice-&gt;CreatePixelShader( pPixelShaderBuffer-&gt;GetBufferPointer(), pPixelShaderBuffer-&gt;GetBufferSize(), g_pPSClassLinkage, &amp;g_pPixelShader ); <see cref=\"T:SharpDX.D3DCompiler.ShaderReflection\"/>* pReflector = <c>null</c>; \t\n            <see cref=\"M:SharpDX.D3DCompiler.D3D.Reflect(System.IntPtr,SharpDX.PointerSize,System.Guid,System.IntPtr@)\"/>( pPixelShaderBuffer-&gt;GetBufferPointer(), pPixelShaderBuffer-&gt;GetBufferSize(),  IID_ID3D11ShaderReflection, (void**) &amp;pReflector);\t\n            </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DReflect']/*\"/>\t\n            <msdn-id>dd607334</msdn-id>\t\n            <unmanaged>HRESULT D3DReflect([In, Buffer] const void* pSrcData,[In] SIZE_T SrcDataSize,[In] const GUID&amp; pInterface,[Out] void** ppReflector)</unmanaged>\t\n            <unmanaged-short>D3DReflect</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.D3D.GetInputSignatureBlob(System.IntPtr,SharpDX.PointerSize,SharpDX.Direct3D.Blob@)\">\n            <summary>\t\n            <p>Gets the input signature from a compilation result.</p>\t\n            </summary>\t\n            <param name=\"srcDataRef\"><dd>  <p>A reference to source data as compiled HLSL code.</p> </dd></param>\t\n            <param name=\"srcDataSize\"><dd>  <p>Length of <em>pSrcData</em>.</p> </dd></param>\t\n            <param name=\"signatureBlobOut\"><dd>  <p>Optional. A reference to an <see cref=\"T:SharpDX.Direct3D.Blob\"/> that contains a compiled shader.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DGetInputSignatureBlob']/*\"/>\t\n            <msdn-id>dd607330</msdn-id>\t\n            <unmanaged>HRESULT D3DGetInputSignatureBlob([In, Buffer] const void* pSrcData,[In] SIZE_T SrcDataSize,[Out] ID3D10Blob** ppSignatureBlob)</unmanaged>\t\n            <unmanaged-short>D3DGetInputSignatureBlob</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.D3D.GetInputAndOutputSignatureBlob(System.IntPtr,SharpDX.PointerSize,SharpDX.Direct3D.Blob@)\">\n            <summary>\t\n            <p>Gets the input and output signatures from a compilation result.</p>\t\n            </summary>\t\n            <param name=\"srcDataRef\"><dd>  <p>A reference to source data as compiled HLSL code.</p> </dd></param>\t\n            <param name=\"srcDataSize\"><dd>  <p>Length of <em>pSrcData</em>.</p> </dd></param>\t\n            <param name=\"signatureBlobOut\"><dd>  <p>Optional. A reference to an <see cref=\"T:SharpDX.Direct3D.Blob\"/> that contains a compiled shader.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DGetInputAndOutputSignatureBlob']/*\"/>\t\n            <msdn-id>dd607329</msdn-id>\t\n            <unmanaged>HRESULT D3DGetInputAndOutputSignatureBlob([In, Buffer] const void* pSrcData,[In] SIZE_T SrcDataSize,[Out] ID3D10Blob** ppSignatureBlob)</unmanaged>\t\n            <unmanaged-short>D3DGetInputAndOutputSignatureBlob</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.D3D.GetOutputSignatureBlob(System.IntPtr,SharpDX.PointerSize,SharpDX.Direct3D.Blob@)\">\n            <summary>\t\n            <p>Gets the output signature from a compilation result.</p>\t\n            </summary>\t\n            <param name=\"srcDataRef\"><dd>  <p>A reference to source data as compiled HLSL code.</p> </dd></param>\t\n            <param name=\"srcDataSize\"><dd>  <p>Length of <em>pSrcData</em>.</p> </dd></param>\t\n            <param name=\"signatureBlobOut\"><dd>  <p>Optional. A reference to an <see cref=\"T:SharpDX.Direct3D.Blob\"/> that contains a compiled shader.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DGetOutputSignatureBlob']/*\"/>\t\n            <msdn-id>dd607331</msdn-id>\t\n            <unmanaged>HRESULT D3DGetOutputSignatureBlob([In, Buffer] const void* pSrcData,[In] SIZE_T SrcDataSize,[Out] ID3D10Blob** ppSignatureBlob)</unmanaged>\t\n            <unmanaged-short>D3DGetOutputSignatureBlob</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.D3D.GetDebugInfo(System.IntPtr,SharpDX.PointerSize,SharpDX.Direct3D.Blob@)\">\n            <summary>\t\n            <p>Gets shader debug information.</p>\t\n            </summary>\t\n            <param name=\"srcDataRef\"><dd>  <p>A reference to source data; either uncompiled or compiled HLSL code.</p> </dd></param>\t\n            <param name=\"srcDataSize\"><dd>  <p>Length of <em>pSrcData</em>.</p> </dd></param>\t\n            <param name=\"debugInfoOut\"><dd>  <p>Optional. A reference to an <see cref=\"T:SharpDX.Direct3D.Blob\"/> that contains debug information.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>Debug information is embedded in the body of the shader after calling <strong><see cref=\"M:SharpDX.D3DCompiler.D3D.Compile(System.IntPtr,SharpDX.PointerSize,System.String,SharpDX.Direct3D.ShaderMacro[],System.IntPtr,System.String,System.String,SharpDX.D3DCompiler.ShaderFlags,SharpDX.D3DCompiler.EffectFlags,SharpDX.Direct3D.Blob@,SharpDX.Direct3D.Blob@)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DGetDebugInfo']/*\"/>\t\n            <msdn-id>dd607328</msdn-id>\t\n            <unmanaged>HRESULT D3DGetDebugInfo([In, Buffer] const void* pSrcData,[In] SIZE_T SrcDataSize,[Out] ID3D10Blob** ppDebugInfo)</unmanaged>\t\n            <unmanaged-short>D3DGetDebugInfo</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.D3DCompiler.ConstantBufferFlags\">\n            <summary>\t\n            <p>Values that identify the indended use of a constant-data buffer.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p><strong><see cref=\"T:SharpDX.D3DCompiler.ConstantBufferFlags\"/></strong>-typed values are specified in the <strong>uFlags</strong> member of the <strong><see cref=\"T:SharpDX.D3DCompiler.ConstantBufferDescription\"/></strong> structure.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SHADER_CBUFFER_FLAGS']/*\"/>\t\n            <msdn-id>ff728729</msdn-id>\t\n            <unmanaged>D3D_SHADER_CBUFFER_FLAGS</unmanaged>\t\n            <unmanaged-short>D3D_SHADER_CBUFFER_FLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ConstantBufferFlags.ConstantBufferUserpacked\">\n            <summary>\t\n            <dd> <p>Bind the constant buffer to an input slot defined in HLSL code (instead of letting the compiler choose the input slot).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_CBF_USERPACKED']/*\"/>\t\n            <msdn-id>ff728729</msdn-id>\t\n            <unmanaged>D3D_CBF_USERPACKED</unmanaged>\t\n            <unmanaged-short>D3D_CBF_USERPACKED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ConstantBufferFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.D3DCompiler.ConstantBufferType\">\n            <summary>\t\n            <p>Values that identify the intended use of constant-buffer data. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_CBUFFER_TYPE']/*\"/>\t\n            <msdn-id>ff728722</msdn-id>\t\n            <unmanaged>D3D_CBUFFER_TYPE</unmanaged>\t\n            <unmanaged-short>D3D_CBUFFER_TYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ConstantBufferType.ConstantBuffer\">\n            <summary>\t\n            <dd> <p>A buffer containing scalar constants.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_CT_CBUFFER']/*\"/>\t\n            <msdn-id>ff728722</msdn-id>\t\n            <unmanaged>D3D_CT_CBUFFER</unmanaged>\t\n            <unmanaged-short>D3D_CT_CBUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ConstantBufferType.TextureBuffer\">\n            <summary>\t\n            <dd> <p>A buffer containing texture data.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_CT_TBUFFER']/*\"/>\t\n            <msdn-id>ff728722</msdn-id>\t\n            <unmanaged>D3D_CT_TBUFFER</unmanaged>\t\n            <unmanaged-short>D3D_CT_TBUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ConstantBufferType.InterfacePointers\">\n            <summary>\t\n            <dd> <p>A buffer containing interface references.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_CT_INTERFACE_POINTERS']/*\"/>\t\n            <msdn-id>ff728722</msdn-id>\t\n            <unmanaged>D3D_CT_INTERFACE_POINTERS</unmanaged>\t\n            <unmanaged-short>D3D_CT_INTERFACE_POINTERS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ConstantBufferType.ResourceBindInformation\">\n            <summary>\t\n            <dd> <p>A buffer containing binding information.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_CT_RESOURCE_BIND_INFO']/*\"/>\t\n            <msdn-id>ff728722</msdn-id>\t\n            <unmanaged>D3D_CT_RESOURCE_BIND_INFO</unmanaged>\t\n            <unmanaged-short>D3D_CT_RESOURCE_BIND_INFO</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.D3DCompiler.DisassemblyFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCOMPILE_DISASM_FLAGS']/*\"/>\t\n            <unmanaged>D3DCOMPILE_DISASM_FLAGS</unmanaged>\t\n            <unmanaged-short>D3DCOMPILE_DISASM_FLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.DisassemblyFlags.EnableColorCode\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_DISASM_ENABLE_COLOR_CODE']/*\"/>\t\n            <unmanaged>D3D_DISASM_ENABLE_COLOR_CODE</unmanaged>\t\n            <unmanaged-short>D3D_DISASM_ENABLE_COLOR_CODE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.DisassemblyFlags.EnableDefaultValuePrints\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_DISASM_ENABLE_DEFAULT_VALUE_PRINTS']/*\"/>\t\n            <unmanaged>D3D_DISASM_ENABLE_DEFAULT_VALUE_PRINTS</unmanaged>\t\n            <unmanaged-short>D3D_DISASM_ENABLE_DEFAULT_VALUE_PRINTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.DisassemblyFlags.EnableInstructionNumbering\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_DISASM_ENABLE_INSTRUCTION_NUMBERING']/*\"/>\t\n            <unmanaged>D3D_DISASM_ENABLE_INSTRUCTION_NUMBERING</unmanaged>\t\n            <unmanaged-short>D3D_DISASM_ENABLE_INSTRUCTION_NUMBERING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.DisassemblyFlags.EnableInstructionCycle\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_DISASM_ENABLE_INSTRUCTION_CYCLE']/*\"/>\t\n            <unmanaged>D3D_DISASM_ENABLE_INSTRUCTION_CYCLE</unmanaged>\t\n            <unmanaged-short>D3D_DISASM_ENABLE_INSTRUCTION_CYCLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.DisassemblyFlags.DisableDebugInformation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_DISASM_DISABLE_DEBUG_INFO']/*\"/>\t\n            <unmanaged>D3D_DISASM_DISABLE_DEBUG_INFO</unmanaged>\t\n            <unmanaged-short>D3D_DISASM_DISABLE_DEBUG_INFO</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.DisassemblyFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.D3DCompiler.EffectFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCOMPILE_EFFECT_FLAGS']/*\"/>\t\n            <unmanaged>D3DCOMPILE_EFFECT_FLAGS</unmanaged>\t\n            <unmanaged-short>D3DCOMPILE_EFFECT_FLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.EffectFlags.ChildEffect\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCOMPILE_EFFECT_CHILD_EFFECT']/*\"/>\t\n            <unmanaged>D3DCOMPILE_EFFECT_CHILD_EFFECT</unmanaged>\t\n            <unmanaged-short>D3DCOMPILE_EFFECT_CHILD_EFFECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.EffectFlags.AllowSlowOperations\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCOMPILE_EFFECT_ALLOW_SLOW_OPS']/*\"/>\t\n            <unmanaged>D3DCOMPILE_EFFECT_ALLOW_SLOW_OPS</unmanaged>\t\n            <unmanaged-short>D3DCOMPILE_EFFECT_ALLOW_SLOW_OPS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.EffectFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.D3DCompiler.IncludeType\">\n            <summary>\t\n            <p>Values that indicate the location of a shader #include file. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>You pass a <strong><see cref=\"T:SharpDX.D3DCompiler.IncludeType\"/></strong>-typed value to the  <em>IncludeType</em> parameter in a call to the  <strong><see cref=\"M:SharpDX.D3DCompiler.Include.Open(SharpDX.D3DCompiler.IncludeType,System.String,System.IO.Stream)\"/></strong> method to indicate the location of the #include file.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_INCLUDE_TYPE']/*\"/>\t\n            <msdn-id>ff728723</msdn-id>\t\n            <unmanaged>D3D_INCLUDE_TYPE</unmanaged>\t\n            <unmanaged-short>D3D_INCLUDE_TYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.IncludeType.Local\">\n            <summary>\t\n            <dd> <p>The local directory.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_INCLUDE_LOCAL']/*\"/>\t\n            <msdn-id>ff728723</msdn-id>\t\n            <unmanaged>D3D_INCLUDE_LOCAL</unmanaged>\t\n            <unmanaged-short>D3D_INCLUDE_LOCAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.IncludeType.System\">\n            <summary>\t\n            <dd> <p>The system directory.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_INCLUDE_SYSTEM']/*\"/>\t\n            <msdn-id>ff728723</msdn-id>\t\n            <unmanaged>D3D_INCLUDE_SYSTEM</unmanaged>\t\n            <unmanaged-short>D3D_INCLUDE_SYSTEM</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.D3DCompiler.InputPrimitive\">\n            <summary>\t\n            <p>Values that indicate how the pipeline interprets vertex data that is bound to the input-assembler stage. These primitive topology values determine how the vertex data is rendered on screen.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Use the  <strong><see cref=\"!:SharpDX.Direct3D11.InputAssemblerStage.SetPrimitiveTopology\"/></strong> method and a value from <strong><see cref=\"T:SharpDX.Direct3D.PrimitiveTopology\"/></strong> to bind a primitive topology to the input-assembler stage. Use the  <strong><see cref=\"!:SharpDX.Direct3D11.InputAssemblerStage.GetPrimitiveTopology\"/></strong> method to retrieve the primitive topology for the input-assembler stage.</p><p>The following diagram shows the various primitive types for a geometry shader object.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_PRIMITIVE']/*\"/>\t\n            <msdn-id>ff728726</msdn-id>\t\n            <unmanaged>D3D_PRIMITIVE</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.InputPrimitive.Undefined\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_PRIMITIVE_UNDEFINED']/*\"/>\t\n            <unmanaged>D3D_PRIMITIVE_UNDEFINED</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_UNDEFINED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.InputPrimitive.Point\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_PRIMITIVE_POINT']/*\"/>\t\n            <unmanaged>D3D_PRIMITIVE_POINT</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_POINT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.InputPrimitive.Line\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_PRIMITIVE_LINE']/*\"/>\t\n            <unmanaged>D3D_PRIMITIVE_LINE</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_LINE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.InputPrimitive.Triangle\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_PRIMITIVE_TRIANGLE']/*\"/>\t\n            <unmanaged>D3D_PRIMITIVE_TRIANGLE</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_TRIANGLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.InputPrimitive.LineWithAdjacency\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_PRIMITIVE_LINE_ADJ']/*\"/>\t\n            <unmanaged>D3D_PRIMITIVE_LINE_ADJ</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_LINE_ADJ</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.InputPrimitive.TriangleWithAdjacency\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_PRIMITIVE_TRIANGLE_ADJ']/*\"/>\t\n            <unmanaged>D3D_PRIMITIVE_TRIANGLE_ADJ</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_TRIANGLE_ADJ</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.InputPrimitive.PatchWith1ControlPoints\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_PRIMITIVE_1_CONTROL_POINT_PATCH']/*\"/>\t\n            <unmanaged>D3D_PRIMITIVE_1_CONTROL_POINT_PATCH</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_1_CONTROL_POINT_PATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.InputPrimitive.PatchWith2ControlPoints\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_PRIMITIVE_2_CONTROL_POINT_PATCH']/*\"/>\t\n            <unmanaged>D3D_PRIMITIVE_2_CONTROL_POINT_PATCH</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_2_CONTROL_POINT_PATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.InputPrimitive.PatchWith3ControlPoints\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_PRIMITIVE_3_CONTROL_POINT_PATCH']/*\"/>\t\n            <unmanaged>D3D_PRIMITIVE_3_CONTROL_POINT_PATCH</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_3_CONTROL_POINT_PATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.InputPrimitive.PatchWith4ControlPoints\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_PRIMITIVE_4_CONTROL_POINT_PATCH']/*\"/>\t\n            <unmanaged>D3D_PRIMITIVE_4_CONTROL_POINT_PATCH</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_4_CONTROL_POINT_PATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.InputPrimitive.PatchWith5ControlPoints\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_PRIMITIVE_5_CONTROL_POINT_PATCH']/*\"/>\t\n            <unmanaged>D3D_PRIMITIVE_5_CONTROL_POINT_PATCH</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_5_CONTROL_POINT_PATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.InputPrimitive.PatchWith6ControlPoints\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_PRIMITIVE_6_CONTROL_POINT_PATCH']/*\"/>\t\n            <unmanaged>D3D_PRIMITIVE_6_CONTROL_POINT_PATCH</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_6_CONTROL_POINT_PATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.InputPrimitive.PatchWith7ControlPoints\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_PRIMITIVE_7_CONTROL_POINT_PATCH']/*\"/>\t\n            <unmanaged>D3D_PRIMITIVE_7_CONTROL_POINT_PATCH</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_7_CONTROL_POINT_PATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.InputPrimitive.PatchWith8ControlPoints\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_PRIMITIVE_8_CONTROL_POINT_PATCH']/*\"/>\t\n            <unmanaged>D3D_PRIMITIVE_8_CONTROL_POINT_PATCH</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_8_CONTROL_POINT_PATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.InputPrimitive.PatchWith9ControlPoints\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_PRIMITIVE_9_CONTROL_POINT_PATCH']/*\"/>\t\n            <unmanaged>D3D_PRIMITIVE_9_CONTROL_POINT_PATCH</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_9_CONTROL_POINT_PATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.InputPrimitive.PatchWith10ControlPoints\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_PRIMITIVE_10_CONTROL_POINT_PATCH']/*\"/>\t\n            <unmanaged>D3D_PRIMITIVE_10_CONTROL_POINT_PATCH</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_10_CONTROL_POINT_PATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.InputPrimitive.PatchWith11ControlPoints\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_PRIMITIVE_11_CONTROL_POINT_PATCH']/*\"/>\t\n            <unmanaged>D3D_PRIMITIVE_11_CONTROL_POINT_PATCH</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_11_CONTROL_POINT_PATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.InputPrimitive.PatchWith12ControlPoints\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_PRIMITIVE_12_CONTROL_POINT_PATCH']/*\"/>\t\n            <unmanaged>D3D_PRIMITIVE_12_CONTROL_POINT_PATCH</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_12_CONTROL_POINT_PATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.InputPrimitive.PatchWith13ControlPoints\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_PRIMITIVE_13_CONTROL_POINT_PATCH']/*\"/>\t\n            <unmanaged>D3D_PRIMITIVE_13_CONTROL_POINT_PATCH</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_13_CONTROL_POINT_PATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.InputPrimitive.PatchWith14ControlPoints\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_PRIMITIVE_14_CONTROL_POINT_PATCH']/*\"/>\t\n            <unmanaged>D3D_PRIMITIVE_14_CONTROL_POINT_PATCH</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_14_CONTROL_POINT_PATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.InputPrimitive.PatchWith15ControlPoints\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_PRIMITIVE_15_CONTROL_POINT_PATCH']/*\"/>\t\n            <unmanaged>D3D_PRIMITIVE_15_CONTROL_POINT_PATCH</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_15_CONTROL_POINT_PATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.InputPrimitive.PatchWith16ControlPoints\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_PRIMITIVE_16_CONTROL_POINT_PATCH']/*\"/>\t\n            <unmanaged>D3D_PRIMITIVE_16_CONTROL_POINT_PATCH</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_16_CONTROL_POINT_PATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.InputPrimitive.PatchWith17ControlPoints\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_PRIMITIVE_17_CONTROL_POINT_PATCH']/*\"/>\t\n            <unmanaged>D3D_PRIMITIVE_17_CONTROL_POINT_PATCH</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_17_CONTROL_POINT_PATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.InputPrimitive.PatchWith18ControlPoints\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_PRIMITIVE_18_CONTROL_POINT_PATCH']/*\"/>\t\n            <unmanaged>D3D_PRIMITIVE_18_CONTROL_POINT_PATCH</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_18_CONTROL_POINT_PATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.InputPrimitive.PatchWith19ControlPoints\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_PRIMITIVE_19_CONTROL_POINT_PATCH']/*\"/>\t\n            <unmanaged>D3D_PRIMITIVE_19_CONTROL_POINT_PATCH</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_19_CONTROL_POINT_PATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.InputPrimitive.PatchWith20ControlPoints\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_PRIMITIVE_20_CONTROL_POINT_PATCH']/*\"/>\t\n            <unmanaged>D3D_PRIMITIVE_20_CONTROL_POINT_PATCH</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_20_CONTROL_POINT_PATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.InputPrimitive.PatchWith21ControlPoints\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_PRIMITIVE_21_CONTROL_POINT_PATCH']/*\"/>\t\n            <unmanaged>D3D_PRIMITIVE_21_CONTROL_POINT_PATCH</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_21_CONTROL_POINT_PATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.InputPrimitive.PatchWith22ControlPoints\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_PRIMITIVE_22_CONTROL_POINT_PATCH']/*\"/>\t\n            <unmanaged>D3D_PRIMITIVE_22_CONTROL_POINT_PATCH</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_22_CONTROL_POINT_PATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.InputPrimitive.PatchWith23ControlPoints\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_PRIMITIVE_23_CONTROL_POINT_PATCH']/*\"/>\t\n            <unmanaged>D3D_PRIMITIVE_23_CONTROL_POINT_PATCH</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_23_CONTROL_POINT_PATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.InputPrimitive.PatchWith24ControlPoints\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_PRIMITIVE_24_CONTROL_POINT_PATCH']/*\"/>\t\n            <unmanaged>D3D_PRIMITIVE_24_CONTROL_POINT_PATCH</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_24_CONTROL_POINT_PATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.InputPrimitive.PatchWith25ControlPoints\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_PRIMITIVE_25_CONTROL_POINT_PATCH']/*\"/>\t\n            <unmanaged>D3D_PRIMITIVE_25_CONTROL_POINT_PATCH</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_25_CONTROL_POINT_PATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.InputPrimitive.PatchWith26ControlPoints\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_PRIMITIVE_26_CONTROL_POINT_PATCH']/*\"/>\t\n            <unmanaged>D3D_PRIMITIVE_26_CONTROL_POINT_PATCH</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_26_CONTROL_POINT_PATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.InputPrimitive.PatchWith27ControlPoints\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_PRIMITIVE_27_CONTROL_POINT_PATCH']/*\"/>\t\n            <unmanaged>D3D_PRIMITIVE_27_CONTROL_POINT_PATCH</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_27_CONTROL_POINT_PATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.InputPrimitive.PatchWith28ControlPoints\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_PRIMITIVE_28_CONTROL_POINT_PATCH']/*\"/>\t\n            <unmanaged>D3D_PRIMITIVE_28_CONTROL_POINT_PATCH</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_28_CONTROL_POINT_PATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.InputPrimitive.PatchWith29ControlPoints\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_PRIMITIVE_29_CONTROL_POINT_PATCH']/*\"/>\t\n            <unmanaged>D3D_PRIMITIVE_29_CONTROL_POINT_PATCH</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_29_CONTROL_POINT_PATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.InputPrimitive.PatchWith30ControlPoints\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_PRIMITIVE_30_CONTROL_POINT_PATCH']/*\"/>\t\n            <unmanaged>D3D_PRIMITIVE_30_CONTROL_POINT_PATCH</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_30_CONTROL_POINT_PATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.InputPrimitive.PatchWith31ControlPoints\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_PRIMITIVE_31_CONTROL_POINT_PATCH']/*\"/>\t\n            <unmanaged>D3D_PRIMITIVE_31_CONTROL_POINT_PATCH</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_31_CONTROL_POINT_PATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.InputPrimitive.PatchWith32ControlPoints\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_PRIMITIVE_32_CONTROL_POINT_PATCH']/*\"/>\t\n            <unmanaged>D3D_PRIMITIVE_32_CONTROL_POINT_PATCH</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_32_CONTROL_POINT_PATCH</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.D3DCompiler.RegisterComponentType\">\n            <summary>\t\n            <p>Values that identify the data types that can be stored in a register.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>A register component type is specified in the <strong>ComponentType</strong> member of the <strong><see cref=\"T:SharpDX.D3DCompiler.ShaderParameterDescription\"/></strong> structure.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_REGISTER_COMPONENT_TYPE']/*\"/>\t\n            <msdn-id>ff728727</msdn-id>\t\n            <unmanaged>D3D_REGISTER_COMPONENT_TYPE</unmanaged>\t\n            <unmanaged-short>D3D_REGISTER_COMPONENT_TYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.RegisterComponentType.Unknown\">\n            <summary>\t\n            <dd> <p>The data type is unknown.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_REGISTER_COMPONENT_UNKNOWN']/*\"/>\t\n            <msdn-id>ff728727</msdn-id>\t\n            <unmanaged>D3D_REGISTER_COMPONENT_UNKNOWN</unmanaged>\t\n            <unmanaged-short>D3D_REGISTER_COMPONENT_UNKNOWN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.RegisterComponentType.UInt32\">\n            <summary>\t\n            <dd> <p>32-bit unsigned integer.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_REGISTER_COMPONENT_UINT32']/*\"/>\t\n            <msdn-id>ff728727</msdn-id>\t\n            <unmanaged>D3D_REGISTER_COMPONENT_UINT32</unmanaged>\t\n            <unmanaged-short>D3D_REGISTER_COMPONENT_UINT32</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.RegisterComponentType.SInt32\">\n            <summary>\t\n            <dd> <p>32-bit signed integer.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_REGISTER_COMPONENT_SINT32']/*\"/>\t\n            <msdn-id>ff728727</msdn-id>\t\n            <unmanaged>D3D_REGISTER_COMPONENT_SINT32</unmanaged>\t\n            <unmanaged-short>D3D_REGISTER_COMPONENT_SINT32</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.RegisterComponentType.Float32\">\n            <summary>\t\n            <dd> <p>32-bit floating-point number.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_REGISTER_COMPONENT_FLOAT32']/*\"/>\t\n            <msdn-id>ff728727</msdn-id>\t\n            <unmanaged>D3D_REGISTER_COMPONENT_FLOAT32</unmanaged>\t\n            <unmanaged-short>D3D_REGISTER_COMPONENT_FLOAT32</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.D3DCompiler.ResourceReturnType\">\n            <summary>\t\n            <p>Values that identify the return type of a resource.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>A resource return type is specified in the <strong>ReturnType</strong> member of the <strong><see cref=\"T:SharpDX.D3DCompiler.InputBindingDescription\"/></strong> structure.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_RESOURCE_RETURN_TYPE']/*\"/>\t\n            <msdn-id>ff728728</msdn-id>\t\n            <unmanaged>D3D_RESOURCE_RETURN_TYPE</unmanaged>\t\n            <unmanaged-short>D3D_RESOURCE_RETURN_TYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ResourceReturnType.UNorm\">\n            <summary>\t\n            <dd> <p>Return type is an unsigned integer value normalized to a value between 0 and 1.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_RETURN_TYPE_UNORM']/*\"/>\t\n            <msdn-id>ff728728</msdn-id>\t\n            <unmanaged>D3D_RETURN_TYPE_UNORM</unmanaged>\t\n            <unmanaged-short>D3D_RETURN_TYPE_UNORM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ResourceReturnType.SNorm\">\n            <summary>\t\n            <dd> <p>Return type is a signed integer value normalized to a value between -1 and 1.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_RETURN_TYPE_SNORM']/*\"/>\t\n            <msdn-id>ff728728</msdn-id>\t\n            <unmanaged>D3D_RETURN_TYPE_SNORM</unmanaged>\t\n            <unmanaged-short>D3D_RETURN_TYPE_SNORM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ResourceReturnType.SInt\">\n            <summary>\t\n            <dd> <p>Return type is a signed integer.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_RETURN_TYPE_SINT']/*\"/>\t\n            <msdn-id>ff728728</msdn-id>\t\n            <unmanaged>D3D_RETURN_TYPE_SINT</unmanaged>\t\n            <unmanaged-short>D3D_RETURN_TYPE_SINT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ResourceReturnType.UInt\">\n            <summary>\t\n            <dd> <p>Return type is an unsigned integer.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_RETURN_TYPE_UINT']/*\"/>\t\n            <msdn-id>ff728728</msdn-id>\t\n            <unmanaged>D3D_RETURN_TYPE_UINT</unmanaged>\t\n            <unmanaged-short>D3D_RETURN_TYPE_UINT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ResourceReturnType.Float\">\n            <summary>\t\n            <dd> <p>Return type is a floating-point number.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_RETURN_TYPE_FLOAT']/*\"/>\t\n            <msdn-id>ff728728</msdn-id>\t\n            <unmanaged>D3D_RETURN_TYPE_FLOAT</unmanaged>\t\n            <unmanaged-short>D3D_RETURN_TYPE_FLOAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ResourceReturnType.Mixed\">\n            <summary>\t\n            <dd> <p>Return type is unknown.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_RETURN_TYPE_MIXED']/*\"/>\t\n            <msdn-id>ff728728</msdn-id>\t\n            <unmanaged>D3D_RETURN_TYPE_MIXED</unmanaged>\t\n            <unmanaged-short>D3D_RETURN_TYPE_MIXED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ResourceReturnType.Double\">\n            <summary>\t\n            <dd> <p>Return type is a double-precision value.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_RETURN_TYPE_DOUBLE']/*\"/>\t\n            <msdn-id>ff728728</msdn-id>\t\n            <unmanaged>D3D_RETURN_TYPE_DOUBLE</unmanaged>\t\n            <unmanaged-short>D3D_RETURN_TYPE_DOUBLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ResourceReturnType.Continued\">\n            <summary>\t\n            <dd> <p>Return type is a multiple-dword type, such as a double or uint64, and the component is continued from the previous component that was declared.  The first component represents the lower bits.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_RETURN_TYPE_CONTINUED']/*\"/>\t\n            <msdn-id>ff728728</msdn-id>\t\n            <unmanaged>D3D_RETURN_TYPE_CONTINUED</unmanaged>\t\n            <unmanaged-short>D3D_RETURN_TYPE_CONTINUED</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.D3DCompiler.SecondaryDataFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCOMPILE_SECDATA_FLAGS']/*\"/>\t\n            <unmanaged>D3DCOMPILE_SECDATA_FLAGS</unmanaged>\t\n            <unmanaged-short>D3DCOMPILE_SECDATA_FLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.SecondaryDataFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.D3DCompiler.ShaderBytecodePart\">\n            <summary>\t\n            <p>Values that identify parts of the content of an arbitrary length data buffer.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>These values are passed to the <strong><see cref=\"M:SharpDX.D3DCompiler.D3D.GetBlobPart(System.IntPtr,SharpDX.PointerSize,SharpDX.D3DCompiler.ShaderBytecodePart,System.Int32,SharpDX.Direct3D.Blob@)\"/></strong> function.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_BLOB_PART']/*\"/>\t\n            <msdn-id>ff728720</msdn-id>\t\n            <unmanaged>D3D_BLOB_PART</unmanaged>\t\n            <unmanaged-short>D3D_BLOB_PART</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderBytecodePart.InputSignatureBlob\">\n            <summary>\t\n            <dd> <p>The blob part is an input signature.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_BLOB_INPUT_SIGNATURE_BLOB']/*\"/>\t\n            <msdn-id>ff728720</msdn-id>\t\n            <unmanaged>D3D_BLOB_INPUT_SIGNATURE_BLOB</unmanaged>\t\n            <unmanaged-short>D3D_BLOB_INPUT_SIGNATURE_BLOB</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderBytecodePart.OutputSignatureBlob\">\n            <summary>\t\n            <dd> <p>The blob part is an output signature.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_BLOB_OUTPUT_SIGNATURE_BLOB']/*\"/>\t\n            <msdn-id>ff728720</msdn-id>\t\n            <unmanaged>D3D_BLOB_OUTPUT_SIGNATURE_BLOB</unmanaged>\t\n            <unmanaged-short>D3D_BLOB_OUTPUT_SIGNATURE_BLOB</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderBytecodePart.InputAndOutputSignatureBlob\">\n            <summary>\t\n            <dd> <p>The blob part is an input and output signature.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_BLOB_INPUT_AND_OUTPUT_SIGNATURE_BLOB']/*\"/>\t\n            <msdn-id>ff728720</msdn-id>\t\n            <unmanaged>D3D_BLOB_INPUT_AND_OUTPUT_SIGNATURE_BLOB</unmanaged>\t\n            <unmanaged-short>D3D_BLOB_INPUT_AND_OUTPUT_SIGNATURE_BLOB</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderBytecodePart.PatchConstantSignatureBlob\">\n            <summary>\t\n            <dd> <p>The blob part is a patch constant signature.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_BLOB_PATCH_CONSTANT_SIGNATURE_BLOB']/*\"/>\t\n            <msdn-id>ff728720</msdn-id>\t\n            <unmanaged>D3D_BLOB_PATCH_CONSTANT_SIGNATURE_BLOB</unmanaged>\t\n            <unmanaged-short>D3D_BLOB_PATCH_CONSTANT_SIGNATURE_BLOB</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderBytecodePart.AllSignatureBlob\">\n            <summary>\t\n            <dd> <p>The blob part is all signature.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_BLOB_ALL_SIGNATURE_BLOB']/*\"/>\t\n            <msdn-id>ff728720</msdn-id>\t\n            <unmanaged>D3D_BLOB_ALL_SIGNATURE_BLOB</unmanaged>\t\n            <unmanaged-short>D3D_BLOB_ALL_SIGNATURE_BLOB</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderBytecodePart.DebugInformation\">\n            <summary>\t\n            <dd> <p>The blob part is debug information.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_BLOB_DEBUG_INFO']/*\"/>\t\n            <msdn-id>ff728720</msdn-id>\t\n            <unmanaged>D3D_BLOB_DEBUG_INFO</unmanaged>\t\n            <unmanaged-short>D3D_BLOB_DEBUG_INFO</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderBytecodePart.LegacyShader\">\n            <summary>\t\n            <dd> <p>The blob part is a legacy shader.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_BLOB_LEGACY_SHADER']/*\"/>\t\n            <msdn-id>ff728720</msdn-id>\t\n            <unmanaged>D3D_BLOB_LEGACY_SHADER</unmanaged>\t\n            <unmanaged-short>D3D_BLOB_LEGACY_SHADER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderBytecodePart.XnaPrepassShader\">\n            <summary>\t\n            <dd> <p>The blob part is an XNA prepass shader.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_BLOB_XNA_PREPASS_SHADER']/*\"/>\t\n            <msdn-id>ff728720</msdn-id>\t\n            <unmanaged>D3D_BLOB_XNA_PREPASS_SHADER</unmanaged>\t\n            <unmanaged-short>D3D_BLOB_XNA_PREPASS_SHADER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderBytecodePart.XnaShader\">\n            <summary>\t\n            <dd> <p>The blob part is an XNA shader.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_BLOB_XNA_SHADER']/*\"/>\t\n            <msdn-id>ff728720</msdn-id>\t\n            <unmanaged>D3D_BLOB_XNA_SHADER</unmanaged>\t\n            <unmanaged-short>D3D_BLOB_XNA_SHADER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderBytecodePart.TestAlternateShader\">\n            <summary>\t\n            <dd> <p>The blob part is a test alternate shader.</p> <p><strong>Note</strong>??This value identifies a test part and is only produced by special compiler versions. Therefore, this part type is typically not present in shaders.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_BLOB_TEST_ALTERNATE_SHADER']/*\"/>\t\n            <msdn-id>ff728720</msdn-id>\t\n            <unmanaged>D3D_BLOB_TEST_ALTERNATE_SHADER</unmanaged>\t\n            <unmanaged-short>D3D_BLOB_TEST_ALTERNATE_SHADER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderBytecodePart.TestCompileDetails\">\n            <summary>\t\n            <dd> <p>The blob part is test compilation details. </p> <p><strong>Note</strong>??This value identifies a test part and is only produced by special compiler versions. Therefore, this part type is typically not present in shaders.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_BLOB_TEST_COMPILE_DETAILS']/*\"/>\t\n            <msdn-id>ff728720</msdn-id>\t\n            <unmanaged>D3D_BLOB_TEST_COMPILE_DETAILS</unmanaged>\t\n            <unmanaged-short>D3D_BLOB_TEST_COMPILE_DETAILS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderBytecodePart.TestCompilePerf\">\n            <summary>\t\n            <dd> <p>The blob part is test compilation performance. </p> <p><strong>Note</strong>??This value identifies a test part and is only produced by special compiler versions. Therefore, this part type is typically not present in shaders.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_BLOB_TEST_COMPILE_PERF']/*\"/>\t\n            <msdn-id>ff728720</msdn-id>\t\n            <unmanaged>D3D_BLOB_TEST_COMPILE_PERF</unmanaged>\t\n            <unmanaged-short>D3D_BLOB_TEST_COMPILE_PERF</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.D3DCompiler.ShaderFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCOMPILE_SHADER_FLAGS']/*\"/>\t\n            <unmanaged>D3DCOMPILE_SHADER_FLAGS</unmanaged>\t\n            <unmanaged-short>D3DCOMPILE_SHADER_FLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderFlags.Debug\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCOMPILE_DEBUG']/*\"/>\t\n            <unmanaged>D3DCOMPILE_DEBUG</unmanaged>\t\n            <unmanaged-short>D3DCOMPILE_DEBUG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderFlags.SkipValidation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCOMPILE_SKIP_VALIDATION']/*\"/>\t\n            <unmanaged>D3DCOMPILE_SKIP_VALIDATION</unmanaged>\t\n            <unmanaged-short>D3DCOMPILE_SKIP_VALIDATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderFlags.SkipOptimization\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCOMPILE_SKIP_OPTIMIZATION']/*\"/>\t\n            <unmanaged>D3DCOMPILE_SKIP_OPTIMIZATION</unmanaged>\t\n            <unmanaged-short>D3DCOMPILE_SKIP_OPTIMIZATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderFlags.PackMatrixRowMajor\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCOMPILE_PACK_MATRIX_ROW_MAJOR']/*\"/>\t\n            <unmanaged>D3DCOMPILE_PACK_MATRIX_ROW_MAJOR</unmanaged>\t\n            <unmanaged-short>D3DCOMPILE_PACK_MATRIX_ROW_MAJOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderFlags.PackMatrixColumnMajor\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCOMPILE_PACK_MATRIX_COLUMN_MAJOR']/*\"/>\t\n            <unmanaged>D3DCOMPILE_PACK_MATRIX_COLUMN_MAJOR</unmanaged>\t\n            <unmanaged-short>D3DCOMPILE_PACK_MATRIX_COLUMN_MAJOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderFlags.PartialPrecision\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCOMPILE_PARTIAL_PRECISION']/*\"/>\t\n            <unmanaged>D3DCOMPILE_PARTIAL_PRECISION</unmanaged>\t\n            <unmanaged-short>D3DCOMPILE_PARTIAL_PRECISION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderFlags.ForceVertexShaderSoftwareNoOptimization\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCOMPILE_FORCE_VS_SOFTWARE_NO_OPT']/*\"/>\t\n            <unmanaged>D3DCOMPILE_FORCE_VS_SOFTWARE_NO_OPT</unmanaged>\t\n            <unmanaged-short>D3DCOMPILE_FORCE_VS_SOFTWARE_NO_OPT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderFlags.ForcePixelShaderSoftwareNoOptimization\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCOMPILE_FORCE_PS_SOFTWARE_NO_OPT']/*\"/>\t\n            <unmanaged>D3DCOMPILE_FORCE_PS_SOFTWARE_NO_OPT</unmanaged>\t\n            <unmanaged-short>D3DCOMPILE_FORCE_PS_SOFTWARE_NO_OPT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderFlags.NoPreshader\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCOMPILE_NO_PRESHADER']/*\"/>\t\n            <unmanaged>D3DCOMPILE_NO_PRESHADER</unmanaged>\t\n            <unmanaged-short>D3DCOMPILE_NO_PRESHADER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderFlags.AvoidFlowControl\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCOMPILE_AVOID_FLOW_CONTROL']/*\"/>\t\n            <unmanaged>D3DCOMPILE_AVOID_FLOW_CONTROL</unmanaged>\t\n            <unmanaged-short>D3DCOMPILE_AVOID_FLOW_CONTROL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderFlags.PreferFlowControl\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCOMPILE_PREFER_FLOW_CONTROL']/*\"/>\t\n            <unmanaged>D3DCOMPILE_PREFER_FLOW_CONTROL</unmanaged>\t\n            <unmanaged-short>D3DCOMPILE_PREFER_FLOW_CONTROL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderFlags.EnableStrictness\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCOMPILE_ENABLE_STRICTNESS']/*\"/>\t\n            <unmanaged>D3DCOMPILE_ENABLE_STRICTNESS</unmanaged>\t\n            <unmanaged-short>D3DCOMPILE_ENABLE_STRICTNESS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderFlags.EnableBackwardsCompatibility\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCOMPILE_ENABLE_BACKWARDS_COMPATIBILITY']/*\"/>\t\n            <unmanaged>D3DCOMPILE_ENABLE_BACKWARDS_COMPATIBILITY</unmanaged>\t\n            <unmanaged-short>D3DCOMPILE_ENABLE_BACKWARDS_COMPATIBILITY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderFlags.IeeeStrictness\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCOMPILE_IEEE_STRICTNESS']/*\"/>\t\n            <unmanaged>D3DCOMPILE_IEEE_STRICTNESS</unmanaged>\t\n            <unmanaged-short>D3DCOMPILE_IEEE_STRICTNESS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderFlags.OptimizationLevel0\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCOMPILE_OPTIMIZATION_LEVEL0']/*\"/>\t\n            <unmanaged>D3DCOMPILE_OPTIMIZATION_LEVEL0</unmanaged>\t\n            <unmanaged-short>D3DCOMPILE_OPTIMIZATION_LEVEL0</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderFlags.OptimizationLevel1\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCOMPILE_OPTIMIZATION_LEVEL1']/*\"/>\t\n            <unmanaged>D3DCOMPILE_OPTIMIZATION_LEVEL1</unmanaged>\t\n            <unmanaged-short>D3DCOMPILE_OPTIMIZATION_LEVEL1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderFlags.OptimizationLevel2\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCOMPILE_OPTIMIZATION_LEVEL2']/*\"/>\t\n            <unmanaged>D3DCOMPILE_OPTIMIZATION_LEVEL2</unmanaged>\t\n            <unmanaged-short>D3DCOMPILE_OPTIMIZATION_LEVEL2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderFlags.OptimizationLevel3\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCOMPILE_OPTIMIZATION_LEVEL3']/*\"/>\t\n            <unmanaged>D3DCOMPILE_OPTIMIZATION_LEVEL3</unmanaged>\t\n            <unmanaged-short>D3DCOMPILE_OPTIMIZATION_LEVEL3</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderFlags.Reserved16\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCOMPILE_RESERVED16']/*\"/>\t\n            <unmanaged>D3DCOMPILE_RESERVED16</unmanaged>\t\n            <unmanaged-short>D3DCOMPILE_RESERVED16</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderFlags.Reserved17\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCOMPILE_RESERVED17']/*\"/>\t\n            <unmanaged>D3DCOMPILE_RESERVED17</unmanaged>\t\n            <unmanaged-short>D3DCOMPILE_RESERVED17</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderFlags.WarningsAreErrors\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCOMPILE_WARNINGS_ARE_ERRORS']/*\"/>\t\n            <unmanaged>D3DCOMPILE_WARNINGS_ARE_ERRORS</unmanaged>\t\n            <unmanaged-short>D3DCOMPILE_WARNINGS_ARE_ERRORS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.D3DCompiler.ShaderInputFlags\">\n            <summary>\t\n            <p>Values that identify shader-input options.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p><strong><see cref=\"T:SharpDX.D3DCompiler.ShaderInputFlags\"/></strong>-typed values are specified in the <strong>uFlags</strong> member of the <strong><see cref=\"T:SharpDX.D3DCompiler.InputBindingDescription\"/></strong> structure.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SHADER_INPUT_FLAGS']/*\"/>\t\n            <msdn-id>ff728730</msdn-id>\t\n            <unmanaged>D3D_SHADER_INPUT_FLAGS</unmanaged>\t\n            <unmanaged-short>D3D_SHADER_INPUT_FLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderInputFlags.Userpacked\">\n            <summary>\t\n            <dd> <p>Assign a shader input to a register based on the register assignment in the HLSL code (instead of letting the compiler choose the register).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SIF_USERPACKED']/*\"/>\t\n            <msdn-id>ff728730</msdn-id>\t\n            <unmanaged>D3D_SIF_USERPACKED</unmanaged>\t\n            <unmanaged-short>D3D_SIF_USERPACKED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderInputFlags.ComparisonSampler\">\n            <summary>\t\n            <dd> <p>Use a comparison sampler, which uses the SampleCmp (DirectX HLSL Texture Object) and SampleCmpLevelZero (DirectX HLSL Texture Object) sampling functions.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SIF_COMPARISON_SAMPLER']/*\"/>\t\n            <msdn-id>ff728730</msdn-id>\t\n            <unmanaged>D3D_SIF_COMPARISON_SAMPLER</unmanaged>\t\n            <unmanaged-short>D3D_SIF_COMPARISON_SAMPLER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderInputFlags.TextureComponent0\">\n            <summary>\t\n            <dd> <p>A 2-bit value for encoding texture components.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SIF_TEXTURE_COMPONENT_0']/*\"/>\t\n            <msdn-id>ff728730</msdn-id>\t\n            <unmanaged>D3D_SIF_TEXTURE_COMPONENT_0</unmanaged>\t\n            <unmanaged-short>D3D_SIF_TEXTURE_COMPONENT_0</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderInputFlags.TextureComponent1\">\n            <summary>\t\n            <dd> <p>A 2-bit value for encoding texture components.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SIF_TEXTURE_COMPONENT_1']/*\"/>\t\n            <msdn-id>ff728730</msdn-id>\t\n            <unmanaged>D3D_SIF_TEXTURE_COMPONENT_1</unmanaged>\t\n            <unmanaged-short>D3D_SIF_TEXTURE_COMPONENT_1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderInputFlags.TextureComponents\">\n            <summary>\t\n            <dd> <p>A 2-bit value for encoding texture components.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SIF_TEXTURE_COMPONENTS']/*\"/>\t\n            <msdn-id>ff728730</msdn-id>\t\n            <unmanaged>D3D_SIF_TEXTURE_COMPONENTS</unmanaged>\t\n            <unmanaged-short>D3D_SIF_TEXTURE_COMPONENTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderInputFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.D3DCompiler.ShaderInputType\">\n            <summary>\t\n            <p>Values that identify resource types that can be bound to a shader and that are reflected as part of the resource description for the shader.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p><strong><see cref=\"T:SharpDX.D3DCompiler.ShaderInputType\"/></strong>-typed values are specified in the <strong>Type</strong> member of the <strong><see cref=\"T:SharpDX.D3DCompiler.InputBindingDescription\"/></strong> structure.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SHADER_INPUT_TYPE']/*\"/>\t\n            <msdn-id>ff728731</msdn-id>\t\n            <unmanaged>D3D_SHADER_INPUT_TYPE</unmanaged>\t\n            <unmanaged-short>D3D_SHADER_INPUT_TYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderInputType.ConstantBuffer\">\n            <summary>\t\n            <dd> <p>The shader resource is a constant buffer.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SIT_CBUFFER']/*\"/>\t\n            <msdn-id>ff728731</msdn-id>\t\n            <unmanaged>D3D_SIT_CBUFFER</unmanaged>\t\n            <unmanaged-short>D3D_SIT_CBUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderInputType.TextureBuffer\">\n            <summary>\t\n            <dd> <p>The shader resource is a texture buffer.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SIT_TBUFFER']/*\"/>\t\n            <msdn-id>ff728731</msdn-id>\t\n            <unmanaged>D3D_SIT_TBUFFER</unmanaged>\t\n            <unmanaged-short>D3D_SIT_TBUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderInputType.Texture\">\n            <summary>\t\n            <dd> <p>The shader resource is a texture.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SIT_TEXTURE']/*\"/>\t\n            <msdn-id>ff728731</msdn-id>\t\n            <unmanaged>D3D_SIT_TEXTURE</unmanaged>\t\n            <unmanaged-short>D3D_SIT_TEXTURE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderInputType.Sampler\">\n            <summary>\t\n            <dd> <p>The shader resource is a sampler.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SIT_SAMPLER']/*\"/>\t\n            <msdn-id>ff728731</msdn-id>\t\n            <unmanaged>D3D_SIT_SAMPLER</unmanaged>\t\n            <unmanaged-short>D3D_SIT_SAMPLER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderInputType.UnorderedAccessViewRWTyped\">\n            <summary>\t\n            <dd> <p>The shader resource is a read-and-write buffer.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SIT_UAV_RWTYPED']/*\"/>\t\n            <msdn-id>ff728731</msdn-id>\t\n            <unmanaged>D3D_SIT_UAV_RWTYPED</unmanaged>\t\n            <unmanaged-short>D3D_SIT_UAV_RWTYPED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderInputType.Structured\">\n            <summary>\t\n            <dd> <p>The shader resource is a structured buffer.</p> <p>For more information about structured buffer, see the <strong>Remarks</strong> section.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SIT_STRUCTURED']/*\"/>\t\n            <msdn-id>ff728731</msdn-id>\t\n            <unmanaged>D3D_SIT_STRUCTURED</unmanaged>\t\n            <unmanaged-short>D3D_SIT_STRUCTURED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderInputType.UnorderedAccessViewRWStructured\">\n            <summary>\t\n            <dd> <p>The shader resource is a read-and-write structured buffer.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SIT_UAV_RWSTRUCTURED']/*\"/>\t\n            <msdn-id>ff728731</msdn-id>\t\n            <unmanaged>D3D_SIT_UAV_RWSTRUCTURED</unmanaged>\t\n            <unmanaged-short>D3D_SIT_UAV_RWSTRUCTURED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderInputType.ByteAddress\">\n            <summary>\t\n            <dd> <p>The shader resource is a byte-address buffer.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SIT_BYTEADDRESS']/*\"/>\t\n            <msdn-id>ff728731</msdn-id>\t\n            <unmanaged>D3D_SIT_BYTEADDRESS</unmanaged>\t\n            <unmanaged-short>D3D_SIT_BYTEADDRESS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderInputType.UnorderedAccessViewRWByteAddress\">\n            <summary>\t\n            <dd> <p>The shader resource is a read-and-write byte-address buffer.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SIT_UAV_RWBYTEADDRESS']/*\"/>\t\n            <msdn-id>ff728731</msdn-id>\t\n            <unmanaged>D3D_SIT_UAV_RWBYTEADDRESS</unmanaged>\t\n            <unmanaged-short>D3D_SIT_UAV_RWBYTEADDRESS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderInputType.UnorderedAccessViewAppendStructured\">\n            <summary>\t\n            <dd> <p>The shader resource is an append-structured buffer.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SIT_UAV_APPEND_STRUCTURED']/*\"/>\t\n            <msdn-id>ff728731</msdn-id>\t\n            <unmanaged>D3D_SIT_UAV_APPEND_STRUCTURED</unmanaged>\t\n            <unmanaged-short>D3D_SIT_UAV_APPEND_STRUCTURED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderInputType.UnorderedAccessViewConsumeStructured\">\n            <summary>\t\n            <dd> <p>The shader resource is a consume-structured buffer.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SIT_UAV_CONSUME_STRUCTURED']/*\"/>\t\n            <msdn-id>ff728731</msdn-id>\t\n            <unmanaged>D3D_SIT_UAV_CONSUME_STRUCTURED</unmanaged>\t\n            <unmanaged-short>D3D_SIT_UAV_CONSUME_STRUCTURED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderInputType.UnorderedAccessViewRWStructuredWithCounter\">\n            <summary>\t\n            <dd> <p>The shader resource is a read-and-write structured buffer that uses the built-in counter to append or consume.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SIT_UAV_RWSTRUCTURED_WITH_COUNTER']/*\"/>\t\n            <msdn-id>ff728731</msdn-id>\t\n            <unmanaged>D3D_SIT_UAV_RWSTRUCTURED_WITH_COUNTER</unmanaged>\t\n            <unmanaged-short>D3D_SIT_UAV_RWSTRUCTURED_WITH_COUNTER</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.D3DCompiler.ShaderVariableClass\">\n            <summary>\t\n            <p>Values that identify the class of a shader variable.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The class of a shader variable is not a programming class; the class identifies the variable class such as scalar, vector, object, and so on. <strong><see cref=\"T:SharpDX.D3DCompiler.ShaderVariableClass\"/></strong>-typed values are specified in the <strong>Class</strong> member of the <strong><see cref=\"T:SharpDX.D3DCompiler.ShaderTypeDescription\"/></strong> structure.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SHADER_VARIABLE_CLASS']/*\"/>\t\n            <msdn-id>ff728733</msdn-id>\t\n            <unmanaged>D3D_SHADER_VARIABLE_CLASS</unmanaged>\t\n            <unmanaged-short>D3D_SHADER_VARIABLE_CLASS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderVariableClass.Scalar\">\n            <summary>\t\n            <dd> <p>The shader variable is a scalar.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SVC_SCALAR']/*\"/>\t\n            <msdn-id>ff728733</msdn-id>\t\n            <unmanaged>D3D_SVC_SCALAR</unmanaged>\t\n            <unmanaged-short>D3D_SVC_SCALAR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderVariableClass.Vector\">\n            <summary>\t\n            <dd> <p>The shader variable is a vector.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SVC_VECTOR']/*\"/>\t\n            <msdn-id>ff728733</msdn-id>\t\n            <unmanaged>D3D_SVC_VECTOR</unmanaged>\t\n            <unmanaged-short>D3D_SVC_VECTOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderVariableClass.MatrixRows\">\n            <summary>\t\n            <dd> <p>The shader variable is a row-major matrix.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SVC_MATRIX_ROWS']/*\"/>\t\n            <msdn-id>ff728733</msdn-id>\t\n            <unmanaged>D3D_SVC_MATRIX_ROWS</unmanaged>\t\n            <unmanaged-short>D3D_SVC_MATRIX_ROWS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderVariableClass.MatrixColumns\">\n            <summary>\t\n            <dd> <p>The shader variable is a column-major matrix.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SVC_MATRIX_COLUMNS']/*\"/>\t\n            <msdn-id>ff728733</msdn-id>\t\n            <unmanaged>D3D_SVC_MATRIX_COLUMNS</unmanaged>\t\n            <unmanaged-short>D3D_SVC_MATRIX_COLUMNS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderVariableClass.Object\">\n            <summary>\t\n            <dd> <p>The shader variable is an object.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SVC_OBJECT']/*\"/>\t\n            <msdn-id>ff728733</msdn-id>\t\n            <unmanaged>D3D_SVC_OBJECT</unmanaged>\t\n            <unmanaged-short>D3D_SVC_OBJECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderVariableClass.Struct\">\n            <summary>\t\n            <dd> <p>The shader variable is a structure.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SVC_STRUCT']/*\"/>\t\n            <msdn-id>ff728733</msdn-id>\t\n            <unmanaged>D3D_SVC_STRUCT</unmanaged>\t\n            <unmanaged-short>D3D_SVC_STRUCT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderVariableClass.InterfaceClass\">\n            <summary>\t\n            <dd> <p>The shader variable is a class.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SVC_INTERFACE_CLASS']/*\"/>\t\n            <msdn-id>ff728733</msdn-id>\t\n            <unmanaged>D3D_SVC_INTERFACE_CLASS</unmanaged>\t\n            <unmanaged-short>D3D_SVC_INTERFACE_CLASS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderVariableClass.InterfacePointer\">\n            <summary>\t\n            <dd> <p>The shader variable is an interface.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SVC_INTERFACE_POINTER']/*\"/>\t\n            <msdn-id>ff728733</msdn-id>\t\n            <unmanaged>D3D_SVC_INTERFACE_POINTER</unmanaged>\t\n            <unmanaged-short>D3D_SVC_INTERFACE_POINTER</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.D3DCompiler.ShaderVariableFlags\">\n            <summary>\t\n            <p>Values that identify information about a shader variable.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>A call to the  <strong><see cref=\"M:SharpDX.D3DCompiler.ShaderReflectionVariable.GetDescription(SharpDX.D3DCompiler.ShaderVariableDescription@)\"/></strong> method returns <strong><see cref=\"T:SharpDX.D3DCompiler.ShaderVariableFlags\"/></strong> values in the  <strong>uFlags</strong> member of a  <strong><see cref=\"T:SharpDX.D3DCompiler.ShaderVariableDescription\"/></strong> structure.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SHADER_VARIABLE_FLAGS']/*\"/>\t\n            <msdn-id>ff728734</msdn-id>\t\n            <unmanaged>D3D_SHADER_VARIABLE_FLAGS</unmanaged>\t\n            <unmanaged-short>D3D_SHADER_VARIABLE_FLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderVariableFlags.Userpacked\">\n            <summary>\t\n            <dd> <p>Indicates that the registers assigned to this shader variable were explicitly declared in shader code (instead of automatically assigned by the compiler).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SVF_USERPACKED']/*\"/>\t\n            <msdn-id>ff728734</msdn-id>\t\n            <unmanaged>D3D_SVF_USERPACKED</unmanaged>\t\n            <unmanaged-short>D3D_SVF_USERPACKED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderVariableFlags.Used\">\n            <summary>\t\n            <dd> <p>Indicates that this variable is used by this shader. This value confirms that a particular shader variable (which can be common to many different shaders) is indeed used by a particular shader.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SVF_USED']/*\"/>\t\n            <msdn-id>ff728734</msdn-id>\t\n            <unmanaged>D3D_SVF_USED</unmanaged>\t\n            <unmanaged-short>D3D_SVF_USED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderVariableFlags.InterfacePointer\">\n            <summary>\t\n            <dd> <p>Indicates that this variable is an interface.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SVF_INTERFACE_POINTER']/*\"/>\t\n            <msdn-id>ff728734</msdn-id>\t\n            <unmanaged>D3D_SVF_INTERFACE_POINTER</unmanaged>\t\n            <unmanaged-short>D3D_SVF_INTERFACE_POINTER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderVariableFlags.InterfaceParameter\">\n            <summary>\t\n            <dd> <p>Indicates that this variable is a parameter of an interface.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SVF_INTERFACE_PARAMETER']/*\"/>\t\n            <msdn-id>ff728734</msdn-id>\t\n            <unmanaged>D3D_SVF_INTERFACE_PARAMETER</unmanaged>\t\n            <unmanaged-short>D3D_SVF_INTERFACE_PARAMETER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderVariableFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.D3DCompiler.ShaderVariableType\">\n            <summary>\t\n            <p>Values that identify various data, texture, and buffer types that can be assigned to a shader variable.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>A call to the <strong><see cref=\"M:SharpDX.D3DCompiler.ShaderReflectionType.GetDescription(SharpDX.D3DCompiler.ShaderTypeDescription@)\"/></strong> method returns a <strong><see cref=\"T:SharpDX.D3DCompiler.ShaderVariableType\"/></strong> value in the  <strong>Type</strong> member of a  <strong><see cref=\"T:SharpDX.D3DCompiler.ShaderTypeDescription\"/></strong> structure.</p><p>The types in a structured buffer describe the structure of the elements in the buffer. The layout of these types generally match their C++ struct counterparts. The following examples show structured buffers:</p><pre><code>struct mystruct {float4 val; uint ind;}; RWStructuredBuffer&lt;mystruct&gt; rwbuf;\t\n            RWStructuredBuffer&lt;float3&gt; rwbuf2;</code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SHADER_VARIABLE_TYPE']/*\"/>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SHADER_VARIABLE_TYPE</unmanaged>\t\n            <unmanaged-short>D3D_SHADER_VARIABLE_TYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderVariableType.Void\">\n            <summary>\t\n            <dd> <p>The variable is a void reference.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SVT_VOID']/*\"/>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_VOID</unmanaged>\t\n            <unmanaged-short>D3D_SVT_VOID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderVariableType.Bool\">\n            <summary>\t\n            <dd> <p>The variable is a boolean.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SVT_BOOL']/*\"/>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_BOOL</unmanaged>\t\n            <unmanaged-short>D3D_SVT_BOOL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderVariableType.Int\">\n            <summary>\t\n            <dd> <p>The variable is an integer.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SVT_INT']/*\"/>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_INT</unmanaged>\t\n            <unmanaged-short>D3D_SVT_INT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderVariableType.Float\">\n            <summary>\t\n            <dd> <p>The variable is a floating-point number.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SVT_FLOAT']/*\"/>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_FLOAT</unmanaged>\t\n            <unmanaged-short>D3D_SVT_FLOAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderVariableType.String\">\n            <summary>\t\n            <dd> <p>The variable is a string.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SVT_STRING']/*\"/>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_STRING</unmanaged>\t\n            <unmanaged-short>D3D_SVT_STRING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderVariableType.Texture\">\n            <summary>\t\n            <dd> <p>The variable is a texture.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SVT_TEXTURE']/*\"/>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_TEXTURE</unmanaged>\t\n            <unmanaged-short>D3D_SVT_TEXTURE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderVariableType.Texture1D\">\n            <summary>\t\n            <dd> <p>The variable is a 1D texture.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SVT_TEXTURE1D']/*\"/>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_TEXTURE1D</unmanaged>\t\n            <unmanaged-short>D3D_SVT_TEXTURE1D</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderVariableType.Texture2D\">\n            <summary>\t\n            <dd> <p>The variable is a 2D texture.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SVT_TEXTURE2D']/*\"/>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_TEXTURE2D</unmanaged>\t\n            <unmanaged-short>D3D_SVT_TEXTURE2D</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderVariableType.Texture3D\">\n            <summary>\t\n            <dd> <p>The variable is a 3D texture.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SVT_TEXTURE3D']/*\"/>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_TEXTURE3D</unmanaged>\t\n            <unmanaged-short>D3D_SVT_TEXTURE3D</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderVariableType.TextureCube\">\n            <summary>\t\n            <dd> <p>The variable is a texture cube.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SVT_TEXTURECUBE']/*\"/>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_TEXTURECUBE</unmanaged>\t\n            <unmanaged-short>D3D_SVT_TEXTURECUBE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderVariableType.Sampler\">\n            <summary>\t\n            <dd> <p>The variable is a sampler.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SVT_SAMPLER']/*\"/>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_SAMPLER</unmanaged>\t\n            <unmanaged-short>D3D_SVT_SAMPLER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderVariableType.Sampler1D\">\n            <summary>\t\n            <dd> <p>The variable is a pixel shader.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SVT_SAMPLER1D']/*\"/>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_SAMPLER1D</unmanaged>\t\n            <unmanaged-short>D3D_SVT_SAMPLER1D</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderVariableType.Sampler2D\">\n            <summary>\t\n            <dd> <p>The variable is a vertex shader.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SVT_SAMPLER2D']/*\"/>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_SAMPLER2D</unmanaged>\t\n            <unmanaged-short>D3D_SVT_SAMPLER2D</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderVariableType.Sampler3D\">\n            <summary>\t\n            <dd> <p>The variable is an unsigned integer.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SVT_SAMPLER3D']/*\"/>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_SAMPLER3D</unmanaged>\t\n            <unmanaged-short>D3D_SVT_SAMPLER3D</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderVariableType.SamplerCube\">\n            <summary>\t\n            <dd> <p>The variable is an 8-bit unsigned integer.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SVT_SAMPLERCUBE']/*\"/>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_SAMPLERCUBE</unmanaged>\t\n            <unmanaged-short>D3D_SVT_SAMPLERCUBE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderVariableType.PixelShader\">\n            <summary>\t\n            <dd> <p>The variable is a geometry shader.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SVT_PIXELSHADER']/*\"/>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_PIXELSHADER</unmanaged>\t\n            <unmanaged-short>D3D_SVT_PIXELSHADER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderVariableType.VertexShader\">\n            <summary>\t\n            <dd> <p>The variable is a rasterizer-state object.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SVT_VERTEXSHADER']/*\"/>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_VERTEXSHADER</unmanaged>\t\n            <unmanaged-short>D3D_SVT_VERTEXSHADER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderVariableType.PixelFragment\">\n            <summary>\t\n            <dd> <p>The variable is a depth-stencil-state object.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SVT_PIXELFRAGMENT']/*\"/>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_PIXELFRAGMENT</unmanaged>\t\n            <unmanaged-short>D3D_SVT_PIXELFRAGMENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderVariableType.VertexFragment\">\n            <summary>\t\n            <dd> <p>The variable is a blend-state object.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SVT_VERTEXFRAGMENT']/*\"/>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_VERTEXFRAGMENT</unmanaged>\t\n            <unmanaged-short>D3D_SVT_VERTEXFRAGMENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderVariableType.UInt\">\n            <summary>\t\n            <dd> <p>The variable is a buffer.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SVT_UINT']/*\"/>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_UINT</unmanaged>\t\n            <unmanaged-short>D3D_SVT_UINT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderVariableType.UInt8\">\n            <summary>\t\n            <dd> <p>The variable is a constant buffer.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SVT_UINT8']/*\"/>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_UINT8</unmanaged>\t\n            <unmanaged-short>D3D_SVT_UINT8</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderVariableType.GeometryShader\">\n            <summary>\t\n            <dd> <p>The variable is a texture buffer.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SVT_GEOMETRYSHADER']/*\"/>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_GEOMETRYSHADER</unmanaged>\t\n            <unmanaged-short>D3D_SVT_GEOMETRYSHADER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderVariableType.Rasterizer\">\n            <summary>\t\n            <dd> <p>The variable is a 1D-texture array.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SVT_RASTERIZER']/*\"/>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_RASTERIZER</unmanaged>\t\n            <unmanaged-short>D3D_SVT_RASTERIZER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderVariableType.DepthStencil\">\n            <summary>\t\n            <dd> <p>The variable is a 2D-texture array.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SVT_DEPTHSTENCIL']/*\"/>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_DEPTHSTENCIL</unmanaged>\t\n            <unmanaged-short>D3D_SVT_DEPTHSTENCIL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderVariableType.Blend\">\n            <summary>\t\n            <dd> <p>The variable is a render-target view.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SVT_BLEND']/*\"/>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_BLEND</unmanaged>\t\n            <unmanaged-short>D3D_SVT_BLEND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderVariableType.Buffer\">\n            <summary>\t\n            <dd> <p>The variable is a depth-stencil view.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SVT_BUFFER']/*\"/>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_BUFFER</unmanaged>\t\n            <unmanaged-short>D3D_SVT_BUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderVariableType.ConstantBuffer\">\n            <summary>\t\n            <dd> <p>The variable is a 2D-multisampled texture.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SVT_CBUFFER']/*\"/>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_CBUFFER</unmanaged>\t\n            <unmanaged-short>D3D_SVT_CBUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderVariableType.TextureBuffer\">\n            <summary>\t\n            <dd> <p>The variable is a 2D-multisampled-texture array.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SVT_TBUFFER']/*\"/>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_TBUFFER</unmanaged>\t\n            <unmanaged-short>D3D_SVT_TBUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderVariableType.Texture1DArray\">\n            <summary>\t\n            <dd> <p>The variable is a texture-cube array.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SVT_TEXTURE1DARRAY']/*\"/>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_TEXTURE1DARRAY</unmanaged>\t\n            <unmanaged-short>D3D_SVT_TEXTURE1DARRAY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderVariableType.Texture2DArray\">\n            <summary>\t\n            <dd> <p>The variable holds a compiled hull-shader binary.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SVT_TEXTURE2DARRAY']/*\"/>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_TEXTURE2DARRAY</unmanaged>\t\n            <unmanaged-short>D3D_SVT_TEXTURE2DARRAY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderVariableType.RenderTargetView\">\n            <summary>\t\n            <dd> <p>The variable holds a compiled domain-shader binary.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SVT_RENDERTARGETVIEW']/*\"/>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_RENDERTARGETVIEW</unmanaged>\t\n            <unmanaged-short>D3D_SVT_RENDERTARGETVIEW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderVariableType.DepthStencilView\">\n            <summary>\t\n            <dd> <p>The variable is an interface.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SVT_DEPTHSTENCILVIEW']/*\"/>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_DEPTHSTENCILVIEW</unmanaged>\t\n            <unmanaged-short>D3D_SVT_DEPTHSTENCILVIEW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderVariableType.Texture2DMultisampled\">\n            <summary>\t\n            <dd> <p>The variable holds a compiled compute-shader binary.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SVT_TEXTURE2DMS']/*\"/>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_TEXTURE2DMS</unmanaged>\t\n            <unmanaged-short>D3D_SVT_TEXTURE2DMS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderVariableType.Texture2DMultisampledArray\">\n            <summary>\t\n            <dd> <p>The variable is a double precision (64-bit) floating-point number.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SVT_TEXTURE2DMSARRAY']/*\"/>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_TEXTURE2DMSARRAY</unmanaged>\t\n            <unmanaged-short>D3D_SVT_TEXTURE2DMSARRAY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderVariableType.TextureCubeArray\">\n            <summary>\t\n            <dd> <p>The variable is a 1D read-and-write texture.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SVT_TEXTURECUBEARRAY']/*\"/>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_TEXTURECUBEARRAY</unmanaged>\t\n            <unmanaged-short>D3D_SVT_TEXTURECUBEARRAY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderVariableType.HullShader\">\n            <summary>\t\n            <dd> <p>The variable is an array of 1D read-and-write textures.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SVT_HULLSHADER']/*\"/>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_HULLSHADER</unmanaged>\t\n            <unmanaged-short>D3D_SVT_HULLSHADER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderVariableType.DomainShader\">\n            <summary>\t\n            <dd> <p>The variable is a 2D read-and-write texture.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SVT_DOMAINSHADER']/*\"/>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_DOMAINSHADER</unmanaged>\t\n            <unmanaged-short>D3D_SVT_DOMAINSHADER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderVariableType.InterfacePointer\">\n            <summary>\t\n            <dd> <p>The variable is an array of 2D read-and-write textures.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SVT_INTERFACE_POINTER']/*\"/>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_INTERFACE_POINTER</unmanaged>\t\n            <unmanaged-short>D3D_SVT_INTERFACE_POINTER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderVariableType.ComputeShader\">\n            <summary>\t\n            <dd> <p>The variable is a 3D read-and-write texture.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SVT_COMPUTESHADER']/*\"/>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_COMPUTESHADER</unmanaged>\t\n            <unmanaged-short>D3D_SVT_COMPUTESHADER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderVariableType.Double\">\n            <summary>\t\n            <dd> <p>The variable is a read-and-write buffer.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SVT_DOUBLE']/*\"/>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_DOUBLE</unmanaged>\t\n            <unmanaged-short>D3D_SVT_DOUBLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderVariableType.RWTexture1D\">\n            <summary>\t\n            <dd> <p>The variable is a byte-address buffer.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SVT_RWTEXTURE1D']/*\"/>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_RWTEXTURE1D</unmanaged>\t\n            <unmanaged-short>D3D_SVT_RWTEXTURE1D</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderVariableType.RWTexture1DArray\">\n            <summary>\t\n            <dd> <p>The variable is a read-and-write byte-address buffer.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SVT_RWTEXTURE1DARRAY']/*\"/>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_RWTEXTURE1DARRAY</unmanaged>\t\n            <unmanaged-short>D3D_SVT_RWTEXTURE1DARRAY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderVariableType.RWTexture2D\">\n            <summary>\t\n            <dd> <p>The variable is a structured buffer. </p> <p>For more information about structured buffer, see the <strong>Remarks</strong> section.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SVT_RWTEXTURE2D']/*\"/>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_RWTEXTURE2D</unmanaged>\t\n            <unmanaged-short>D3D_SVT_RWTEXTURE2D</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderVariableType.RWTexture2DArray\">\n            <summary>\t\n            <dd> <p>The variable is a read-and-write structured buffer.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SVT_RWTEXTURE2DARRAY']/*\"/>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_RWTEXTURE2DARRAY</unmanaged>\t\n            <unmanaged-short>D3D_SVT_RWTEXTURE2DARRAY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderVariableType.RWTexture3D\">\n            <summary>\t\n            <dd> <p>The variable is an append structured buffer.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SVT_RWTEXTURE3D']/*\"/>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_RWTEXTURE3D</unmanaged>\t\n            <unmanaged-short>D3D_SVT_RWTEXTURE3D</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderVariableType.RWBuffer\">\n            <summary>\t\n            <dd> <p>The variable is a consume structured buffer.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SVT_RWBUFFER']/*\"/>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_RWBUFFER</unmanaged>\t\n            <unmanaged-short>D3D_SVT_RWBUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderVariableType.ByteAddressBuffer\">\n            <summary>\t\n            <dd> <p>The variable is a void reference.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SVT_BYTEADDRESS_BUFFER']/*\"/>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_BYTEADDRESS_BUFFER</unmanaged>\t\n            <unmanaged-short>D3D_SVT_BYTEADDRESS_BUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderVariableType.RWByteAddressBuffer\">\n            <summary>\t\n            <dd> <p>The variable is a boolean.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SVT_RWBYTEADDRESS_BUFFER']/*\"/>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_RWBYTEADDRESS_BUFFER</unmanaged>\t\n            <unmanaged-short>D3D_SVT_RWBYTEADDRESS_BUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderVariableType.StructuredBuffer\">\n            <summary>\t\n            <dd> <p>The variable is an integer.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SVT_STRUCTURED_BUFFER']/*\"/>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_STRUCTURED_BUFFER</unmanaged>\t\n            <unmanaged-short>D3D_SVT_STRUCTURED_BUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderVariableType.RWStructuredBuffer\">\n            <summary>\t\n            <dd> <p>The variable is a floating-point number.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SVT_RWSTRUCTURED_BUFFER']/*\"/>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_RWSTRUCTURED_BUFFER</unmanaged>\t\n            <unmanaged-short>D3D_SVT_RWSTRUCTURED_BUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderVariableType.AppendStructuredBuffer\">\n            <summary>\t\n            <dd> <p>The variable is a string.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SVT_APPEND_STRUCTURED_BUFFER']/*\"/>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_APPEND_STRUCTURED_BUFFER</unmanaged>\t\n            <unmanaged-short>D3D_SVT_APPEND_STRUCTURED_BUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderVariableType.ConsumeStructuredBuffer\">\n            <summary>\t\n            <dd> <p>The variable is a texture.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SVT_CONSUME_STRUCTURED_BUFFER']/*\"/>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_CONSUME_STRUCTURED_BUFFER</unmanaged>\t\n            <unmanaged-short>D3D_SVT_CONSUME_STRUCTURED_BUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.D3DCompiler.ShaderVersion\">\n            <summary>\t\n            <p>Indicates shader type.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_VERSION_TYPE']/*\"/>\t\n            <msdn-id>ff476214</msdn-id>\t\n            <unmanaged>D3D11_SHADER_VERSION_TYPE</unmanaged>\t\n            <unmanaged-short>D3D11_SHADER_VERSION_TYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderVersion.PixelShader\">\n            <summary>\t\n            <dd> <p>Pixel shader.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHVER_PIXEL_SHADER']/*\"/>\t\n            <msdn-id>ff476214</msdn-id>\t\n            <unmanaged>D3D11_SHVER_PIXEL_SHADER</unmanaged>\t\n            <unmanaged-short>D3D11_SHVER_PIXEL_SHADER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderVersion.VertexShader\">\n            <summary>\t\n            <dd> <p>Vertex shader.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHVER_VERTEX_SHADER']/*\"/>\t\n            <msdn-id>ff476214</msdn-id>\t\n            <unmanaged>D3D11_SHVER_VERTEX_SHADER</unmanaged>\t\n            <unmanaged-short>D3D11_SHVER_VERTEX_SHADER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderVersion.GeometryShader\">\n            <summary>\t\n            <dd> <p>Geometry shader.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHVER_GEOMETRY_SHADER']/*\"/>\t\n            <msdn-id>ff476214</msdn-id>\t\n            <unmanaged>D3D11_SHVER_GEOMETRY_SHADER</unmanaged>\t\n            <unmanaged-short>D3D11_SHVER_GEOMETRY_SHADER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderVersion.HullShader\">\n            <summary>\t\n            <dd> <p>Hull shader.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHVER_HULL_SHADER']/*\"/>\t\n            <msdn-id>ff476214</msdn-id>\t\n            <unmanaged>D3D11_SHVER_HULL_SHADER</unmanaged>\t\n            <unmanaged-short>D3D11_SHVER_HULL_SHADER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderVersion.DomainShader\">\n            <summary>\t\n            <dd> <p>Domain shader.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHVER_DOMAIN_SHADER']/*\"/>\t\n            <msdn-id>ff476214</msdn-id>\t\n            <unmanaged>D3D11_SHVER_DOMAIN_SHADER</unmanaged>\t\n            <unmanaged-short>D3D11_SHVER_DOMAIN_SHADER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderVersion.ComputeShader\">\n            <summary>\t\n            <dd> <p>Compute shader.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHVER_COMPUTE_SHADER']/*\"/>\t\n            <msdn-id>ff476214</msdn-id>\t\n            <unmanaged>D3D11_SHVER_COMPUTE_SHADER</unmanaged>\t\n            <unmanaged-short>D3D11_SHVER_COMPUTE_SHADER</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.D3DCompiler.StripFlags\">\n            <summary>\t\n            <p>Strip flag options.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>These flags are used by <strong><see cref=\"M:SharpDX.D3DCompiler.D3D.StripShader(System.IntPtr,SharpDX.PointerSize,SharpDX.D3DCompiler.StripFlags,SharpDX.Direct3D.Blob@)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCOMPILER_STRIP_FLAGS']/*\"/>\t\n            <msdn-id>dd607325</msdn-id>\t\n            <unmanaged>D3DCOMPILER_STRIP_FLAGS</unmanaged>\t\n            <unmanaged-short>D3DCOMPILER_STRIP_FLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.StripFlags.CompilerStripReflectionData\">\n            <summary>\t\n            <dd> <p>Remove reflection data.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCOMPILER_STRIP_REFLECTION_DATA']/*\"/>\t\n            <msdn-id>dd607325</msdn-id>\t\n            <unmanaged>D3DCOMPILER_STRIP_REFLECTION_DATA</unmanaged>\t\n            <unmanaged-short>D3DCOMPILER_STRIP_REFLECTION_DATA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.StripFlags.CompilerStripDebugInformation\">\n            <summary>\t\n            <dd> <p>Remove debug information.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCOMPILER_STRIP_DEBUG_INFO']/*\"/>\t\n            <msdn-id>dd607325</msdn-id>\t\n            <unmanaged>D3DCOMPILER_STRIP_DEBUG_INFO</unmanaged>\t\n            <unmanaged-short>D3DCOMPILER_STRIP_DEBUG_INFO</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.StripFlags.CompilerStripTestBlobs\">\n            <summary>\t\n            <dd> <p>Remove test blob data.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCOMPILER_STRIP_TEST_BLOBS']/*\"/>\t\n            <msdn-id>dd607325</msdn-id>\t\n            <unmanaged>D3DCOMPILER_STRIP_TEST_BLOBS</unmanaged>\t\n            <unmanaged-short>D3DCOMPILER_STRIP_TEST_BLOBS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.StripFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.D3DCompiler.SystemValueType\">\n            <summary>\t\n            <p>Values that identify shader parameters that use system-value semantics.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The <strong><see cref=\"T:SharpDX.D3DCompiler.SystemValueType\"/></strong> values identify shader parameters that have predefined system-value semantics. These values are used in a shader-signature description. For more information about shader-signature description, see <strong><see cref=\"T:SharpDX.D3DCompiler.ShaderParameterDescription\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_NAME']/*\"/>\t\n            <msdn-id>ff728724</msdn-id>\t\n            <unmanaged>D3D_NAME</unmanaged>\t\n            <unmanaged-short>D3D_NAME</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.SystemValueType.Undefined\">\n            <summary>\t\n            <dd> <p>This parameter does not use a predefined system-value semantic.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_NAME_UNDEFINED']/*\"/>\t\n            <msdn-id>ff728724</msdn-id>\t\n            <unmanaged>D3D_NAME_UNDEFINED</unmanaged>\t\n            <unmanaged-short>D3D_NAME_UNDEFINED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.SystemValueType.Position\">\n            <summary>\t\n            <dd> <p>This parameter contains position data.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_NAME_POSITION']/*\"/>\t\n            <msdn-id>ff728724</msdn-id>\t\n            <unmanaged>D3D_NAME_POSITION</unmanaged>\t\n            <unmanaged-short>D3D_NAME_POSITION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.SystemValueType.ClipDistance\">\n            <summary>\t\n            <dd> <p>This parameter contains clip-distance data.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_NAME_CLIP_DISTANCE']/*\"/>\t\n            <msdn-id>ff728724</msdn-id>\t\n            <unmanaged>D3D_NAME_CLIP_DISTANCE</unmanaged>\t\n            <unmanaged-short>D3D_NAME_CLIP_DISTANCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.SystemValueType.CullDistance\">\n            <summary>\t\n            <dd> <p>This parameter contains cull-distance data.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_NAME_CULL_DISTANCE']/*\"/>\t\n            <msdn-id>ff728724</msdn-id>\t\n            <unmanaged>D3D_NAME_CULL_DISTANCE</unmanaged>\t\n            <unmanaged-short>D3D_NAME_CULL_DISTANCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.SystemValueType.RenderTargetArrayIndex\">\n            <summary>\t\n            <dd> <p>This parameter contains a render-target-array index.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_NAME_RENDER_TARGET_ARRAY_INDEX']/*\"/>\t\n            <msdn-id>ff728724</msdn-id>\t\n            <unmanaged>D3D_NAME_RENDER_TARGET_ARRAY_INDEX</unmanaged>\t\n            <unmanaged-short>D3D_NAME_RENDER_TARGET_ARRAY_INDEX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.SystemValueType.ViewportArrayIndex\">\n            <summary>\t\n            <dd> <p>This parameter contains a viewport-array index.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_NAME_VIEWPORT_ARRAY_INDEX']/*\"/>\t\n            <msdn-id>ff728724</msdn-id>\t\n            <unmanaged>D3D_NAME_VIEWPORT_ARRAY_INDEX</unmanaged>\t\n            <unmanaged-short>D3D_NAME_VIEWPORT_ARRAY_INDEX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.SystemValueType.VertexId\">\n            <summary>\t\n            <dd> <p>This parameter contains a vertex ID.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_NAME_VERTEX_ID']/*\"/>\t\n            <msdn-id>ff728724</msdn-id>\t\n            <unmanaged>D3D_NAME_VERTEX_ID</unmanaged>\t\n            <unmanaged-short>D3D_NAME_VERTEX_ID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.SystemValueType.PrimitiveId\">\n            <summary>\t\n            <dd> <p>This parameter contains a primitive ID.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_NAME_PRIMITIVE_ID']/*\"/>\t\n            <msdn-id>ff728724</msdn-id>\t\n            <unmanaged>D3D_NAME_PRIMITIVE_ID</unmanaged>\t\n            <unmanaged-short>D3D_NAME_PRIMITIVE_ID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.SystemValueType.InstanceId\">\n            <summary>\t\n            <dd> <p>This parameter contains an instance ID.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_NAME_INSTANCE_ID']/*\"/>\t\n            <msdn-id>ff728724</msdn-id>\t\n            <unmanaged>D3D_NAME_INSTANCE_ID</unmanaged>\t\n            <unmanaged-short>D3D_NAME_INSTANCE_ID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.SystemValueType.IsFrontFace\">\n            <summary>\t\n            <dd> <p>This parameter contains data that identifies whether or not the primitive faces the camera.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_NAME_IS_FRONT_FACE']/*\"/>\t\n            <msdn-id>ff728724</msdn-id>\t\n            <unmanaged>D3D_NAME_IS_FRONT_FACE</unmanaged>\t\n            <unmanaged-short>D3D_NAME_IS_FRONT_FACE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.SystemValueType.SampleIndex\">\n            <summary>\t\n            <dd> <p>This parameter contains a sampler-array index.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_NAME_SAMPLE_INDEX']/*\"/>\t\n            <msdn-id>ff728724</msdn-id>\t\n            <unmanaged>D3D_NAME_SAMPLE_INDEX</unmanaged>\t\n            <unmanaged-short>D3D_NAME_SAMPLE_INDEX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.SystemValueType.FinalQuadEdgeTessfactor\">\n            <summary>\t\n            <dd> <p>This parameter contains one of four tessellation factors that correspond to the amount of parts that a quad patch is broken into along the given edge. This flag is used to tessellate a quad patch.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_NAME_FINAL_QUAD_EDGE_TESSFACTOR']/*\"/>\t\n            <msdn-id>ff728724</msdn-id>\t\n            <unmanaged>D3D_NAME_FINAL_QUAD_EDGE_TESSFACTOR</unmanaged>\t\n            <unmanaged-short>D3D_NAME_FINAL_QUAD_EDGE_TESSFACTOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.SystemValueType.FinalQuadInsideTessfactor\">\n            <summary>\t\n            <dd> <p>This parameter contains one of two tessellation factors that correspond to the amount of parts that a quad patch is broken into vertically and horizontally within the patch. This flag is used to tessellate a quad patch.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_NAME_FINAL_QUAD_INSIDE_TESSFACTOR']/*\"/>\t\n            <msdn-id>ff728724</msdn-id>\t\n            <unmanaged>D3D_NAME_FINAL_QUAD_INSIDE_TESSFACTOR</unmanaged>\t\n            <unmanaged-short>D3D_NAME_FINAL_QUAD_INSIDE_TESSFACTOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.SystemValueType.FinalTriEdgeTessfactor\">\n            <summary>\t\n            <dd> <p>This parameter contains one of three tessellation factors that correspond to the amount of parts that a tri patch is broken into along the given edge. This flag is used to tessellate a tri patch.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_NAME_FINAL_TRI_EDGE_TESSFACTOR']/*\"/>\t\n            <msdn-id>ff728724</msdn-id>\t\n            <unmanaged>D3D_NAME_FINAL_TRI_EDGE_TESSFACTOR</unmanaged>\t\n            <unmanaged-short>D3D_NAME_FINAL_TRI_EDGE_TESSFACTOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.SystemValueType.FinalTriInsideTessfactor\">\n            <summary>\t\n            <dd> <p>This parameter contains the tessellation factor that corresponds to the amount of parts that a tri patch is broken into within the patch. This flag is used to tessellate a tri patch.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_NAME_FINAL_TRI_INSIDE_TESSFACTOR']/*\"/>\t\n            <msdn-id>ff728724</msdn-id>\t\n            <unmanaged>D3D_NAME_FINAL_TRI_INSIDE_TESSFACTOR</unmanaged>\t\n            <unmanaged-short>D3D_NAME_FINAL_TRI_INSIDE_TESSFACTOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.SystemValueType.FinalLineDetailTessfactor\">\n            <summary>\t\n            <dd> <p>This parameter contains the tessellation factor that corresponds to the number of lines broken into within the patch. This flag is used to tessellate an isolines patch.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_NAME_FINAL_LINE_DETAIL_TESSFACTOR']/*\"/>\t\n            <msdn-id>ff728724</msdn-id>\t\n            <unmanaged>D3D_NAME_FINAL_LINE_DETAIL_TESSFACTOR</unmanaged>\t\n            <unmanaged-short>D3D_NAME_FINAL_LINE_DETAIL_TESSFACTOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.SystemValueType.FinalLineDensityTessfactor\">\n            <summary>\t\n            <dd> <p>This parameter contains the tessellation factor that corresponds to the number of lines that are created within the patch. This flag is used to tessellate an isolines patch.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_NAME_FINAL_LINE_DENSITY_TESSFACTOR']/*\"/>\t\n            <msdn-id>ff728724</msdn-id>\t\n            <unmanaged>D3D_NAME_FINAL_LINE_DENSITY_TESSFACTOR</unmanaged>\t\n            <unmanaged-short>D3D_NAME_FINAL_LINE_DENSITY_TESSFACTOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.SystemValueType.Target\">\n            <summary>\t\n            <dd> <p>This parameter contains render-target data.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_NAME_TARGET']/*\"/>\t\n            <msdn-id>ff728724</msdn-id>\t\n            <unmanaged>D3D_NAME_TARGET</unmanaged>\t\n            <unmanaged-short>D3D_NAME_TARGET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.SystemValueType.Depth\">\n            <summary>\t\n            <dd> <p>This parameter contains depth data.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_NAME_DEPTH']/*\"/>\t\n            <msdn-id>ff728724</msdn-id>\t\n            <unmanaged>D3D_NAME_DEPTH</unmanaged>\t\n            <unmanaged-short>D3D_NAME_DEPTH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.SystemValueType.Coverage\">\n            <summary>\t\n            <dd> <p>This parameter contains alpha-coverage data.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_NAME_COVERAGE']/*\"/>\t\n            <msdn-id>ff728724</msdn-id>\t\n            <unmanaged>D3D_NAME_COVERAGE</unmanaged>\t\n            <unmanaged-short>D3D_NAME_COVERAGE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.SystemValueType.DepthGreaterEqual\">\n            <summary>\t\n            <dd> <p>This parameter signifies that the value is greater than or equal to a reference value. This flag is used to specify conservative depth for a pixel shader.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_NAME_DEPTH_GREATER_EQUAL']/*\"/>\t\n            <msdn-id>ff728724</msdn-id>\t\n            <unmanaged>D3D_NAME_DEPTH_GREATER_EQUAL</unmanaged>\t\n            <unmanaged-short>D3D_NAME_DEPTH_GREATER_EQUAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.SystemValueType.DepthLessEqual\">\n            <summary>\t\n            <dd> <p>This parameter signifies that the value is less than or equal to a reference value. This flag is used to specify conservative depth for a pixel shader.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_NAME_DEPTH_LESS_EQUAL']/*\"/>\t\n            <msdn-id>ff728724</msdn-id>\t\n            <unmanaged>D3D_NAME_DEPTH_LESS_EQUAL</unmanaged>\t\n            <unmanaged-short>D3D_NAME_DEPTH_LESS_EQUAL</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.D3DCompiler.TessellatorDomain\">\n            <summary>\t\n            <p>Values that identify domain options for tessellator data.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The data domain defines the type of data. This enumeration is used by <strong><see cref=\"T:SharpDX.D3DCompiler.ShaderDescription\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_TESSELLATOR_DOMAIN']/*\"/>\t\n            <msdn-id>ff728737</msdn-id>\t\n            <unmanaged>D3D_TESSELLATOR_DOMAIN</unmanaged>\t\n            <unmanaged-short>D3D_TESSELLATOR_DOMAIN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.TessellatorDomain.Undefined\">\n            <summary>\t\n            <dd> <p>The data type is undefined.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_TESSELLATOR_DOMAIN_UNDEFINED']/*\"/>\t\n            <msdn-id>ff728737</msdn-id>\t\n            <unmanaged>D3D_TESSELLATOR_DOMAIN_UNDEFINED</unmanaged>\t\n            <unmanaged-short>D3D_TESSELLATOR_DOMAIN_UNDEFINED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.TessellatorDomain.Isoline\">\n            <summary>\t\n            <dd> <p>Isoline data.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_TESSELLATOR_DOMAIN_ISOLINE']/*\"/>\t\n            <msdn-id>ff728737</msdn-id>\t\n            <unmanaged>D3D_TESSELLATOR_DOMAIN_ISOLINE</unmanaged>\t\n            <unmanaged-short>D3D_TESSELLATOR_DOMAIN_ISOLINE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.TessellatorDomain.Triangle\">\n            <summary>\t\n            <dd> <p>Triangle data.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_TESSELLATOR_DOMAIN_TRI']/*\"/>\t\n            <msdn-id>ff728737</msdn-id>\t\n            <unmanaged>D3D_TESSELLATOR_DOMAIN_TRI</unmanaged>\t\n            <unmanaged-short>D3D_TESSELLATOR_DOMAIN_TRI</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.TessellatorDomain.Quad\">\n            <summary>\t\n            <dd> <p>Quad data.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_TESSELLATOR_DOMAIN_QUAD']/*\"/>\t\n            <msdn-id>ff728737</msdn-id>\t\n            <unmanaged>D3D_TESSELLATOR_DOMAIN_QUAD</unmanaged>\t\n            <unmanaged-short>D3D_TESSELLATOR_DOMAIN_QUAD</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.D3DCompiler.TessellatorOutputPrimitive\">\n            <summary>\t\n            <p>Values that identify output primitive types.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The output primitive type determines how the tessellator output data is organized; this enumeration is used by <strong><see cref=\"T:SharpDX.D3DCompiler.ShaderDescription\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_TESSELLATOR_OUTPUT_PRIMITIVE']/*\"/>\t\n            <msdn-id>ff728738</msdn-id>\t\n            <unmanaged>D3D_TESSELLATOR_OUTPUT_PRIMITIVE</unmanaged>\t\n            <unmanaged-short>D3D_TESSELLATOR_OUTPUT_PRIMITIVE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.TessellatorOutputPrimitive.Undefined\">\n            <summary>\t\n            <dd> <p>The output primitive type is undefined.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_TESSELLATOR_OUTPUT_UNDEFINED']/*\"/>\t\n            <msdn-id>ff728738</msdn-id>\t\n            <unmanaged>D3D_TESSELLATOR_OUTPUT_UNDEFINED</unmanaged>\t\n            <unmanaged-short>D3D_TESSELLATOR_OUTPUT_UNDEFINED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.TessellatorOutputPrimitive.Point\">\n            <summary>\t\n            <dd> <p>The output primitive type is a point.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_TESSELLATOR_OUTPUT_POINT']/*\"/>\t\n            <msdn-id>ff728738</msdn-id>\t\n            <unmanaged>D3D_TESSELLATOR_OUTPUT_POINT</unmanaged>\t\n            <unmanaged-short>D3D_TESSELLATOR_OUTPUT_POINT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.TessellatorOutputPrimitive.Line\">\n            <summary>\t\n            <dd> <p>The output primitive type is a line.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_TESSELLATOR_OUTPUT_LINE']/*\"/>\t\n            <msdn-id>ff728738</msdn-id>\t\n            <unmanaged>D3D_TESSELLATOR_OUTPUT_LINE</unmanaged>\t\n            <unmanaged-short>D3D_TESSELLATOR_OUTPUT_LINE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.TessellatorOutputPrimitive.TriangleClockwise\">\n            <summary>\t\n            <dd> <p>The output primitive type is a clockwise triangle.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_TESSELLATOR_OUTPUT_TRIANGLE_CW']/*\"/>\t\n            <msdn-id>ff728738</msdn-id>\t\n            <unmanaged>D3D_TESSELLATOR_OUTPUT_TRIANGLE_CW</unmanaged>\t\n            <unmanaged-short>D3D_TESSELLATOR_OUTPUT_TRIANGLE_CW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.TessellatorOutputPrimitive.TriangleCounterclockwise\">\n            <summary>\t\n            <dd> <p>The output primitive type is a counter clockwise triangle.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_TESSELLATOR_OUTPUT_TRIANGLE_CCW']/*\"/>\t\n            <msdn-id>ff728738</msdn-id>\t\n            <unmanaged>D3D_TESSELLATOR_OUTPUT_TRIANGLE_CCW</unmanaged>\t\n            <unmanaged-short>D3D_TESSELLATOR_OUTPUT_TRIANGLE_CCW</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.D3DCompiler.TessellatorPartitioning\">\n            <summary>\t\n            <p>Values that identify partitioning options.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>During tessellation, the partition option helps to determine how the algorithm chooses the next partition value; this enumeration is used by <strong><see cref=\"T:SharpDX.D3DCompiler.ShaderDescription\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_TESSELLATOR_PARTITIONING']/*\"/>\t\n            <msdn-id>ff728739</msdn-id>\t\n            <unmanaged>D3D_TESSELLATOR_PARTITIONING</unmanaged>\t\n            <unmanaged-short>D3D_TESSELLATOR_PARTITIONING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.TessellatorPartitioning.Undefined\">\n            <summary>\t\n            <dd> <p>The partitioning type is undefined.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_TESSELLATOR_PARTITIONING_UNDEFINED']/*\"/>\t\n            <msdn-id>ff728739</msdn-id>\t\n            <unmanaged>D3D_TESSELLATOR_PARTITIONING_UNDEFINED</unmanaged>\t\n            <unmanaged-short>D3D_TESSELLATOR_PARTITIONING_UNDEFINED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.TessellatorPartitioning.Integer\">\n            <summary>\t\n            <dd> <p>Partition with integers only.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_TESSELLATOR_PARTITIONING_INTEGER']/*\"/>\t\n            <msdn-id>ff728739</msdn-id>\t\n            <unmanaged>D3D_TESSELLATOR_PARTITIONING_INTEGER</unmanaged>\t\n            <unmanaged-short>D3D_TESSELLATOR_PARTITIONING_INTEGER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.TessellatorPartitioning.PowerOfTwo\">\n            <summary>\t\n            <dd> <p>Partition with a power-of-two number only.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_TESSELLATOR_PARTITIONING_POW2']/*\"/>\t\n            <msdn-id>ff728739</msdn-id>\t\n            <unmanaged>D3D_TESSELLATOR_PARTITIONING_POW2</unmanaged>\t\n            <unmanaged-short>D3D_TESSELLATOR_PARTITIONING_POW2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.TessellatorPartitioning.FractionalOdd\">\n            <summary>\t\n            <dd> <p>Partition with an odd, fractional number.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD']/*\"/>\t\n            <msdn-id>ff728739</msdn-id>\t\n            <unmanaged>D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD</unmanaged>\t\n            <unmanaged-short>D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.TessellatorPartitioning.FractionalEven\">\n            <summary>\t\n            <dd> <p>Partition with an even, fractional number.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN']/*\"/>\t\n            <msdn-id>ff728739</msdn-id>\t\n            <unmanaged>D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN</unmanaged>\t\n            <unmanaged-short>D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.D3DCompiler.ConstantBuffer\">\n            <summary>\t\n            <p>This shader-reflection interface provides access to a constant buffer.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>To create a constant-buffer interface, call <strong><see cref=\"M:SharpDX.D3DCompiler.ShaderReflection.GetConstantBuffer(System.Int32)\"/></strong> or <strong><see cref=\"M:SharpDX.D3DCompiler.ShaderReflection.GetConstantBuffer(System.Int32)\"/></strong>. This is not a COM interface; therefore, you do not need to worry about reference counts or releasing the interface when you are done with it.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11ShaderReflectionConstantBuffer']/*\"/>\t\n            <msdn-id>ff476591</msdn-id>\t\n            <unmanaged>ID3D11ShaderReflectionConstantBuffer</unmanaged>\t\n            <unmanaged-short>ID3D11ShaderReflectionConstantBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ConstantBuffer.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.D3DCompiler.ConstantBuffer\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ConstantBuffer.op_Explicit(System.IntPtr)~SharpDX.D3DCompiler.ConstantBuffer\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.D3DCompiler.ConstantBuffer\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ConstantBuffer.GetDescription(SharpDX.D3DCompiler.ConstantBufferDescription@)\">\n            <summary>\t\n            <p>Get a constant-buffer description.</p>\t\n            </summary>\t\n            <param name=\"descRef\"><dd>  <p>A reference to a <strong><see cref=\"T:SharpDX.D3DCompiler.ConstantBufferDescription\"/></strong>, which represents a shader-buffer description.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11ShaderReflectionConstantBuffer::GetDesc']/*\"/>\t\n            <msdn-id>ff476592</msdn-id>\t\n            <unmanaged>HRESULT ID3D11ShaderReflectionConstantBuffer::GetDesc([Out] D3D11_SHADER_BUFFER_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>ID3D11ShaderReflectionConstantBuffer::GetDesc</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ConstantBuffer.GetVariable(System.Int32)\">\n            <summary>\t\n            <p>Get a shader-reflection variable by index.</p>\t\n            </summary>\t\n            <param name=\"index\"><dd>  <p>Zero-based index.</p> </dd></param>\t\n            <returns><p>A reference to a shader-reflection variable interface (see <strong><see cref=\"T:SharpDX.D3DCompiler.ShaderReflectionVariable\"/> Interface</strong>).</p></returns>\t\n            <remarks>\t\n            <p>This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11ShaderReflectionConstantBuffer::GetVariableByIndex']/*\"/>\t\n            <msdn-id>ff476593</msdn-id>\t\n            <unmanaged>ID3D11ShaderReflectionVariable* ID3D11ShaderReflectionConstantBuffer::GetVariableByIndex([In] unsigned int Index)</unmanaged>\t\n            <unmanaged-short>ID3D11ShaderReflectionConstantBuffer::GetVariableByIndex</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ConstantBuffer.GetVariable(System.String)\">\n            <summary>\t\n            <p>Get a shader-reflection variable by name.</p>\t\n            </summary>\t\n            <param name=\"name\"><dd>  <p>Variable name.</p> </dd></param>\t\n            <returns><p>Returns a sentinel object (end of list marker). To determine if GetVariableByName successfully completed, call <strong><see cref=\"M:SharpDX.D3DCompiler.ShaderReflectionVariable.GetDescription(SharpDX.D3DCompiler.ShaderVariableDescription@)\"/></strong> and check the returned <strong><see cref=\"T:SharpDX.Result\"/></strong>; any return value other than success means that GetVariableByName failed.</p></returns>\t\n            <remarks>\t\n            <p>This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11ShaderReflectionConstantBuffer::GetVariableByName']/*\"/>\t\n            <msdn-id>ff476594</msdn-id>\t\n            <unmanaged>ID3D11ShaderReflectionVariable* ID3D11ShaderReflectionConstantBuffer::GetVariableByName([In] const char* Name)</unmanaged>\t\n            <unmanaged-short>ID3D11ShaderReflectionConstantBuffer::GetVariableByName</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.D3DCompiler.ConstantBuffer.Description\">\n            <summary>\t\n            <p>Get a constant-buffer description.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11ShaderReflectionConstantBuffer::GetDesc']/*\"/>\t\n            <msdn-id>ff476592</msdn-id>\t\n            <unmanaged>GetDesc</unmanaged>\t\n            <unmanaged-short>GetDesc</unmanaged-short>\t\n            <unmanaged>HRESULT ID3D11ShaderReflectionConstantBuffer::GetDesc([Out] D3D11_SHADER_BUFFER_DESC* pDesc)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.D3DCompiler.Include\">\n            <summary>\t\n            <p><strong><see cref=\"T:SharpDX.D3DCompiler.Include\"/></strong> is an include interface that the user implements to allow an application to call user-overridable methods for opening and closing shader #include files.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>To use this interface, create an interface that inherits from <strong><see cref=\"T:SharpDX.D3DCompiler.Include\"/></strong> and implement custom behavior for the methods.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DInclude']/*\"/>\t\n            <msdn-id>ff728746</msdn-id>\t\n            <unmanaged>ID3DInclude</unmanaged>\t\n            <unmanaged-short>ID3DInclude</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.Include.Open(SharpDX.D3DCompiler.IncludeType,System.String,System.IO.Stream)\">\n            <summary>\n            A user-implemented method for opening and reading the contents of a shader #include file.\n            </summary>\n            <param name=\"type\">A <see cref=\"T:SharpDX.D3DCompiler.IncludeType\"/>-typed value that indicates the location of the #include file.</param>\n            <param name=\"fileName\">Name of the #include file.</param>\n            <param name=\"parentStream\">Pointer to the container that includes the #include file.</param>\n            <returns>Stream that is associated with fileName to be read. This reference remains valid until <see cref=\"M:SharpDX.D3DCompiler.Include.Close(System.IO.Stream)\"/> is called.</returns>\n            <unmanaged>HRESULT Open([None] D3D_INCLUDE_TYPE IncludeType,[None] const char* pFileName,[None] LPCVOID pParentData,[None] LPCVOID* ppData,[None] UINT* pBytes)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.Include.Close(System.IO.Stream)\">\n            <summary>\t\n            A user-implemented method for closing a shader #include file.\t\n            </summary>\t\n            <remarks>\t\n            If <see cref=\"M:SharpDX.D3DCompiler.Include.Open(SharpDX.D3DCompiler.IncludeType,System.String,System.IO.Stream)\"/> was successful, Close is guaranteed to be called before the API using the <see cref=\"T:SharpDX.D3DCompiler.Include\"/> interface returns.\t\n            </remarks>\t\n            <param name=\"stream\">This is a reference that was returned by the corresponding <see cref=\"M:SharpDX.D3DCompiler.Include.Open(SharpDX.D3DCompiler.IncludeType,System.String,System.IO.Stream)\"/> call.</param>\n            <unmanaged>HRESULT Close([None] LPCVOID pData)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.D3DCompiler.ShaderReflection\">\n            <summary>\t\n            <p>A shader-reflection interface accesses shader information.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>An <strong><see cref=\"T:SharpDX.D3DCompiler.ShaderReflection\"/></strong> interface can be retrieved for a shader by using  <strong><see cref=\"M:SharpDX.D3DCompiler.D3D.Reflect(System.IntPtr,SharpDX.PointerSize,System.Guid,System.IntPtr@)\"/></strong>.  The following code illustrates retrieving a <strong><see cref=\"T:SharpDX.D3DCompiler.ShaderReflection\"/></strong> from a shader.</p><pre><code> pd3dDevice-&gt;CreatePixelShader( pPixelShaderBuffer-&gt;GetBufferPointer(), pPixelShaderBuffer-&gt;GetBufferSize(), g_pPSClassLinkage, &amp;g_pPixelShader ); <see cref=\"T:SharpDX.D3DCompiler.ShaderReflection\"/>* pReflector = <c>null</c>; \t\n            <see cref=\"M:SharpDX.D3DCompiler.D3D.Reflect(System.IntPtr,SharpDX.PointerSize,System.Guid,System.IntPtr@)\"/>( pPixelShaderBuffer-&gt;GetBufferPointer(), pPixelShaderBuffer-&gt;GetBufferSize(),  IID_ID3D11ShaderReflection, (void**) &amp;pReflector); </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11ShaderReflection']/*\"/>\t\n            <msdn-id>ff476590</msdn-id>\t\n            <unmanaged>ID3D11ShaderReflection</unmanaged>\t\n            <unmanaged-short>ID3D11ShaderReflection</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderReflection.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.D3DCompiler.ShaderReflection\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderReflection.op_Explicit(System.IntPtr)~SharpDX.D3DCompiler.ShaderReflection\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.D3DCompiler.ShaderReflection\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderReflection.GetDescription(SharpDX.D3DCompiler.ShaderDescription@)\">\n            <summary>\t\n            <p>Get a shader description.</p>\t\n            </summary>\t\n            <param name=\"descRef\"><dd>  <p>A reference to a shader description. See <strong><see cref=\"T:SharpDX.D3DCompiler.ShaderDescription\"/></strong>.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11ShaderReflection::GetDesc']/*\"/>\t\n            <msdn-id>ff476615</msdn-id>\t\n            <unmanaged>HRESULT ID3D11ShaderReflection::GetDesc([Out] D3D11_SHADER_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>ID3D11ShaderReflection::GetDesc</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderReflection.GetConstantBuffer(System.Int32)\">\n            <summary>\t\n            <p>Get a constant buffer by index.</p>\t\n            </summary>\t\n            <param name=\"index\"><dd>  <p>Zero-based index.</p> </dd></param>\t\n            <returns><p>A reference to a constant buffer (see <strong><see cref=\"T:SharpDX.D3DCompiler.ConstantBuffer\"/> Interface</strong>).</p></returns>\t\n            <remarks>\t\n            <p>A constant buffer supplies either scalar constants or texture constants to a shader. A shader can use one or more constant buffers. For best performance, separate constants into buffers based on the frequency they are updated.</p><p>This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11ShaderReflection::GetConstantBufferByIndex']/*\"/>\t\n            <msdn-id>ff476612</msdn-id>\t\n            <unmanaged>ID3D11ShaderReflectionConstantBuffer* ID3D11ShaderReflection::GetConstantBufferByIndex([In] unsigned int Index)</unmanaged>\t\n            <unmanaged-short>ID3D11ShaderReflection::GetConstantBufferByIndex</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderReflection.GetConstantBuffer(System.String)\">\n            <summary>\t\n            <p>Get a constant buffer by name.</p>\t\n            </summary>\t\n            <param name=\"name\"><dd>  <p>The constant-buffer name.</p> </dd></param>\t\n            <returns><p>A reference to a constant buffer (see <strong><see cref=\"T:SharpDX.D3DCompiler.ConstantBuffer\"/> Interface</strong>).</p></returns>\t\n            <remarks>\t\n            <p>A constant buffer supplies either scalar constants or texture constants to a shader. A shader can use one or more constant buffers. For best performance, separate constants into buffers based on the frequency they are updated.</p><p>This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11ShaderReflection::GetConstantBufferByName']/*\"/>\t\n            <msdn-id>ff476613</msdn-id>\t\n            <unmanaged>ID3D11ShaderReflectionConstantBuffer* ID3D11ShaderReflection::GetConstantBufferByName([In] const char* Name)</unmanaged>\t\n            <unmanaged-short>ID3D11ShaderReflection::GetConstantBufferByName</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderReflection.GetResourceBindingDescription(System.Int32)\">\n            <summary>\t\n            <p>Get a description of how a resource is bound to a shader.</p>\t\n            </summary>\t\n            <param name=\"resourceIndex\"><dd>  <p>A zero-based resource index.</p> </dd></param>\t\n            <returns><dd>  <p>A reference to an input-binding description. See <strong><see cref=\"T:SharpDX.D3DCompiler.InputBindingDescription\"/></strong>.</p> </dd></returns>\t\n            <remarks>\t\n            <p>A shader consists of executable code (the compiled HLSL functions) and a set of resources that supply the shader with input data. <strong>GetResourceBindingDesc</strong> gets information about how one resource in the set is bound as an input to the shader. The  <em>ResourceIndex</em> parameter specifies the index for the resource.</p><p>This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11ShaderReflection::GetResourceBindingDesc']/*\"/>\t\n            <msdn-id>ff476624</msdn-id>\t\n            <unmanaged>HRESULT ID3D11ShaderReflection::GetResourceBindingDesc([In] unsigned int ResourceIndex,[Out] D3D11_SHADER_INPUT_BIND_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>ID3D11ShaderReflection::GetResourceBindingDesc</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderReflection.GetInputParameterDescription(System.Int32)\">\n            <summary>\t\n            <p>Get an input-parameter description for a shader.</p>\t\n            </summary>\t\n            <param name=\"parameterIndex\"><dd>  <p>A zero-based parameter index.</p> </dd></param>\t\n            <returns><dd>  <p>A reference to a shader-input-signature description. See <strong><see cref=\"T:SharpDX.D3DCompiler.ShaderParameterDescription\"/></strong>.</p> </dd></returns>\t\n            <remarks>\t\n            <p>An input-parameter description is also called a shader signature. The shader signature contains information about the input parameters such as the order or parameters, their data type, and a parameter semantic.</p><p>This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11ShaderReflection::GetInputParameterDesc']/*\"/>\t\n            <msdn-id>ff476617</msdn-id>\t\n            <unmanaged>HRESULT ID3D11ShaderReflection::GetInputParameterDesc([In] unsigned int ParameterIndex,[Out] D3D11_SIGNATURE_PARAMETER_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>ID3D11ShaderReflection::GetInputParameterDesc</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderReflection.GetOutputParameterDescription(System.Int32)\">\n            <summary>\t\n            <p>Get an output-parameter description for a shader.</p>\t\n            </summary>\t\n            <param name=\"parameterIndex\"><dd>  <p>A zero-based parameter index.</p> </dd></param>\t\n            <returns><dd>  <p>A reference to a shader-output-parameter description. See <strong><see cref=\"T:SharpDX.D3DCompiler.ShaderParameterDescription\"/></strong>.</p> </dd></returns>\t\n            <remarks>\t\n            <p>An output-parameter description is also called a shader signature. The shader signature contains information about the output parameters such as the order or parameters, their data type, and a parameter semantic.</p><p>This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11ShaderReflection::GetOutputParameterDesc']/*\"/>\t\n            <msdn-id>ff476622</msdn-id>\t\n            <unmanaged>HRESULT ID3D11ShaderReflection::GetOutputParameterDesc([In] unsigned int ParameterIndex,[Out] D3D11_SIGNATURE_PARAMETER_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>ID3D11ShaderReflection::GetOutputParameterDesc</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderReflection.GetPatchConstantParameterDescription(System.Int32)\">\n            <summary>\t\n            <p>Get a patch-constant parameter description for a shader.</p>\t\n            </summary>\t\n            <param name=\"parameterIndex\"><dd>  <p>A zero-based parameter index.</p> </dd></param>\t\n            <returns><dd>  <p>A reference to a shader-input-signature description. See <strong><see cref=\"T:SharpDX.D3DCompiler.ShaderParameterDescription\"/></strong>.</p> </dd></returns>\t\n            <remarks>\t\n            <p>This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11ShaderReflection::GetPatchConstantParameterDesc']/*\"/>\t\n            <msdn-id>ff476623</msdn-id>\t\n            <unmanaged>HRESULT ID3D11ShaderReflection::GetPatchConstantParameterDesc([In] unsigned int ParameterIndex,[Out] D3D11_SIGNATURE_PARAMETER_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>ID3D11ShaderReflection::GetPatchConstantParameterDesc</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderReflection.GetVariable(System.String)\">\n            <summary>\t\n            <p>Gets a variable by name.</p>\t\n            </summary>\t\n            <param name=\"name\"><dd>  <p>A reference to a string containing the variable name.</p> </dd></param>\t\n            <returns><p>Returns a <strong><see cref=\"T:SharpDX.D3DCompiler.ShaderReflectionVariable\"/> Interface</strong> interface.</p></returns>\t\n            <remarks>\t\n            <p>This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11ShaderReflection::GetVariableByName']/*\"/>\t\n            <msdn-id>ff476626</msdn-id>\t\n            <unmanaged>ID3D11ShaderReflectionVariable* ID3D11ShaderReflection::GetVariableByName([In] const char* Name)</unmanaged>\t\n            <unmanaged-short>ID3D11ShaderReflection::GetVariableByName</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderReflection.GetResourceBindingDescription(System.String)\">\n            <summary>\t\n            <p>Get a description of how a resource is bound to a shader. </p>\t\n            </summary>\t\n            <param name=\"name\"><dd>  <p>The constant-buffer name of the resource.</p> </dd></param>\t\n            <returns><dd>  <p>A reference to an input-binding description. See <strong><see cref=\"T:SharpDX.D3DCompiler.InputBindingDescription\"/></strong>.</p> </dd></returns>\t\n            <remarks>\t\n            <p>A shader consists of executable code (the compiled HLSL functions) and a set of resources that supply the shader with input data. <strong>GetResourceBindingDescByName</strong> gets information about how one resource in the set is bound as an input to the shader. The  <em>Name</em> parameter specifies the name of the resource.</p><p>This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11ShaderReflection::GetResourceBindingDescByName']/*\"/>\t\n            <msdn-id>ff476625</msdn-id>\t\n            <unmanaged>HRESULT ID3D11ShaderReflection::GetResourceBindingDescByName([In] const char* Name,[Out] D3D11_SHADER_INPUT_BIND_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>ID3D11ShaderReflection::GetResourceBindingDescByName</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderReflection.GetMoveInstructionCount\">\n            <summary>\t\n            <p>Gets the number of Mov instructions.</p>\t\n            </summary>\t\n            <returns><p>Returns the number of Mov instructions.</p></returns>\t\n            <remarks>\t\n            <p>This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11ShaderReflection::GetMovInstructionCount']/*\"/>\t\n            <msdn-id>ff476620</msdn-id>\t\n            <unmanaged>unsigned int ID3D11ShaderReflection::GetMovInstructionCount()</unmanaged>\t\n            <unmanaged-short>ID3D11ShaderReflection::GetMovInstructionCount</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderReflection.GetConditionalMoveInstructionCount\">\n            <summary>\t\n            <p>Gets the number of Movc instructions.</p>\t\n            </summary>\t\n            <returns><p>Returns the number of Movc instructions.</p></returns>\t\n            <remarks>\t\n            <p>This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11ShaderReflection::GetMovcInstructionCount']/*\"/>\t\n            <msdn-id>ff476619</msdn-id>\t\n            <unmanaged>unsigned int ID3D11ShaderReflection::GetMovcInstructionCount()</unmanaged>\t\n            <unmanaged-short>ID3D11ShaderReflection::GetMovcInstructionCount</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderReflection.GetConversionInstructionCount\">\n            <summary>\t\n            <p>Gets the number of conversion instructions.</p>\t\n            </summary>\t\n            <returns><p>Returns the number of conversion instructions.</p></returns>\t\n            <remarks>\t\n            <p>This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11ShaderReflection::GetConversionInstructionCount']/*\"/>\t\n            <msdn-id>ff476614</msdn-id>\t\n            <unmanaged>unsigned int ID3D11ShaderReflection::GetConversionInstructionCount()</unmanaged>\t\n            <unmanaged-short>ID3D11ShaderReflection::GetConversionInstructionCount</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderReflection.GetBitwiseInstructionCount\">\n            <summary>\t\n            <p>Gets the number of bitwise instructions.</p>\t\n            </summary>\t\n            <returns><p>The number of bitwise instructions.</p></returns>\t\n            <remarks>\t\n            <p>This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11ShaderReflection::GetBitwiseInstructionCount']/*\"/>\t\n            <msdn-id>ff476611</msdn-id>\t\n            <unmanaged>unsigned int ID3D11ShaderReflection::GetBitwiseInstructionCount()</unmanaged>\t\n            <unmanaged-short>ID3D11ShaderReflection::GetBitwiseInstructionCount</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderReflection.GetGeometryShaderSInputPrimitive\">\n            <summary>\t\n            <p>Gets the geometry-shader input-primitive description.</p>\t\n            </summary>\t\n            <returns><p>The input-primitive description, see D3D10_PRIMITIVE_TOPOLOGY.</p></returns>\t\n            <remarks>\t\n            <p>This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11ShaderReflection::GetGSInputPrimitive']/*\"/>\t\n            <msdn-id>ff476616</msdn-id>\t\n            <unmanaged>D3D_PRIMITIVE ID3D11ShaderReflection::GetGSInputPrimitive()</unmanaged>\t\n            <unmanaged-short>ID3D11ShaderReflection::GetGSInputPrimitive</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderReflection.IsSampleFrequencyShader_\">\n            <summary>\t\n            <p>Indicates whether a shader is a sample frequency shader.</p>\t\n            </summary>\t\n            <returns><p>Returns true if the shader is a sample frequency shader; otherwise returns false.</p></returns>\t\n            <remarks>\t\n            <p>This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11ShaderReflection::IsSampleFrequencyShader']/*\"/>\t\n            <msdn-id>ff476627</msdn-id>\t\n            <unmanaged>BOOL ID3D11ShaderReflection::IsSampleFrequencyShader()</unmanaged>\t\n            <unmanaged-short>ID3D11ShaderReflection::IsSampleFrequencyShader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderReflection.GetInterfaceSlotCount\">\n            <summary>\t\n            <p>Gets the number of interface slots in a shader.</p>\t\n            </summary>\t\n            <returns><p>The number of interface slots in the shader.</p></returns>\t\n            <remarks>\t\n            <p>This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11ShaderReflection::GetNumInterfaceSlots']/*\"/>\t\n            <msdn-id>ff476621</msdn-id>\t\n            <unmanaged>unsigned int ID3D11ShaderReflection::GetNumInterfaceSlots()</unmanaged>\t\n            <unmanaged-short>ID3D11ShaderReflection::GetNumInterfaceSlots</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderReflection.GetMinFeatureLevel(SharpDX.Direct3D.FeatureLevel@)\">\n            <summary>\t\n            <p>Gets the minimum feature level.</p>\t\n            </summary>\t\n            <param name=\"levelRef\"><dd>  <p>A reference to one of the enumerated values in <strong><see cref=\"T:SharpDX.Direct3D.FeatureLevel\"/></strong>, which represents the minimum feature level.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11ShaderReflection::GetMinFeatureLevel']/*\"/>\t\n            <msdn-id>ff476618</msdn-id>\t\n            <unmanaged>HRESULT ID3D11ShaderReflection::GetMinFeatureLevel([Out] D3D_FEATURE_LEVEL* pLevel)</unmanaged>\t\n            <unmanaged-short>ID3D11ShaderReflection::GetMinFeatureLevel</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderReflection.GetThreadGroupSize(System.Int32@,System.Int32@,System.Int32@)\">\n            <summary>\t\n            <p>Retrieves the sizes, in thread groups, of the X, Y, and Z dimensions of the shader's thread-group grid.</p>\t\n            </summary>\t\n            <param name=\"sizeXRef\"><dd>  <p>A reference to the size, in thread groups, of the x-dimension of the thread-group grid. The maximum size is 65535.</p> </dd></param>\t\n            <param name=\"sizeYRef\"><dd>  <p>A reference to the size, in thread groups, of the y-dimension of the thread-group grid. The maximum size is 65535.</p> </dd></param>\t\n            <param name=\"sizeZRef\"><dd>  <p>A reference to the size, in thread groups, of the z-dimension of the thread-group grid. The maximum size is 65535.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11ShaderReflection::GetThreadGroupSize']/*\"/>\t\n            <msdn-id>ff728742</msdn-id>\t\n            <unmanaged>unsigned int ID3D11ShaderReflection::GetThreadGroupSize([Out, Optional] unsigned int* pSizeX,[Out, Optional] unsigned int* pSizeY,[Out, Optional] unsigned int* pSizeZ)</unmanaged>\t\n            <unmanaged-short>ID3D11ShaderReflection::GetThreadGroupSize</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderReflection.#ctor(System.Byte[])\">\n            <summary>\n              Initializes a new instance of the <see cref = \"T:SharpDX.D3DCompiler.ShaderReflection\" /> class from a <see cref = \"T:SharpDX.D3DCompiler.ShaderBytecode\" />.\n            </summary>\n            <param name = \"shaderBytecode\"></param>\n        </member>\n        <member name=\"P:SharpDX.D3DCompiler.ShaderReflection.Description\">\n            <summary>\t\n            <p>Get a shader description.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11ShaderReflection::GetDesc']/*\"/>\t\n            <msdn-id>ff476615</msdn-id>\t\n            <unmanaged>GetDesc</unmanaged>\t\n            <unmanaged-short>GetDesc</unmanaged-short>\t\n            <unmanaged>HRESULT ID3D11ShaderReflection::GetDesc([Out] D3D11_SHADER_DESC* pDesc)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.D3DCompiler.ShaderReflection.MoveInstructionCount\">\n            <summary>\t\n            <p>Gets the number of Mov instructions.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11ShaderReflection::GetMovInstructionCount']/*\"/>\t\n            <msdn-id>ff476620</msdn-id>\t\n            <unmanaged>GetMovInstructionCount</unmanaged>\t\n            <unmanaged-short>GetMovInstructionCount</unmanaged-short>\t\n            <unmanaged>unsigned int ID3D11ShaderReflection::GetMovInstructionCount()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.D3DCompiler.ShaderReflection.ConditionalMoveInstructionCount\">\n            <summary>\t\n            <p>Gets the number of Movc instructions.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11ShaderReflection::GetMovcInstructionCount']/*\"/>\t\n            <msdn-id>ff476619</msdn-id>\t\n            <unmanaged>GetMovcInstructionCount</unmanaged>\t\n            <unmanaged-short>GetMovcInstructionCount</unmanaged-short>\t\n            <unmanaged>unsigned int ID3D11ShaderReflection::GetMovcInstructionCount()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.D3DCompiler.ShaderReflection.ConversionInstructionCount\">\n            <summary>\t\n            <p>Gets the number of conversion instructions.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11ShaderReflection::GetConversionInstructionCount']/*\"/>\t\n            <msdn-id>ff476614</msdn-id>\t\n            <unmanaged>GetConversionInstructionCount</unmanaged>\t\n            <unmanaged-short>GetConversionInstructionCount</unmanaged-short>\t\n            <unmanaged>unsigned int ID3D11ShaderReflection::GetConversionInstructionCount()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.D3DCompiler.ShaderReflection.BitwiseInstructionCount\">\n            <summary>\t\n            <p>Gets the number of bitwise instructions.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11ShaderReflection::GetBitwiseInstructionCount']/*\"/>\t\n            <msdn-id>ff476611</msdn-id>\t\n            <unmanaged>GetBitwiseInstructionCount</unmanaged>\t\n            <unmanaged-short>GetBitwiseInstructionCount</unmanaged-short>\t\n            <unmanaged>unsigned int ID3D11ShaderReflection::GetBitwiseInstructionCount()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.D3DCompiler.ShaderReflection.GeometryShaderSInputPrimitive\">\n            <summary>\t\n            <p>Gets the geometry-shader input-primitive description.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11ShaderReflection::GetGSInputPrimitive']/*\"/>\t\n            <msdn-id>ff476616</msdn-id>\t\n            <unmanaged>GetGSInputPrimitive</unmanaged>\t\n            <unmanaged-short>GetGSInputPrimitive</unmanaged-short>\t\n            <unmanaged>D3D_PRIMITIVE ID3D11ShaderReflection::GetGSInputPrimitive()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.D3DCompiler.ShaderReflection.IsSampleFrequencyShader\">\n            <summary>\t\n            <p>Indicates whether a shader is a sample frequency shader.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11ShaderReflection::IsSampleFrequencyShader']/*\"/>\t\n            <msdn-id>ff476627</msdn-id>\t\n            <unmanaged>IsSampleFrequencyShader</unmanaged>\t\n            <unmanaged-short>IsSampleFrequencyShader</unmanaged-short>\t\n            <unmanaged>BOOL ID3D11ShaderReflection::IsSampleFrequencyShader()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.D3DCompiler.ShaderReflection.InterfaceSlotCount\">\n            <summary>\t\n            <p>Gets the number of interface slots in a shader.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11ShaderReflection::GetNumInterfaceSlots']/*\"/>\t\n            <msdn-id>ff476621</msdn-id>\t\n            <unmanaged>GetNumInterfaceSlots</unmanaged>\t\n            <unmanaged-short>GetNumInterfaceSlots</unmanaged-short>\t\n            <unmanaged>unsigned int ID3D11ShaderReflection::GetNumInterfaceSlots()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.D3DCompiler.ShaderReflection.MinFeatureLevel\">\n            <summary>\t\n            <p>Gets the minimum feature level.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11ShaderReflection::GetMinFeatureLevel']/*\"/>\t\n            <msdn-id>ff476618</msdn-id>\t\n            <unmanaged>GetMinFeatureLevel</unmanaged>\t\n            <unmanaged-short>GetMinFeatureLevel</unmanaged-short>\t\n            <unmanaged>HRESULT ID3D11ShaderReflection::GetMinFeatureLevel([Out] D3D_FEATURE_LEVEL* pLevel)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.D3DCompiler.ShaderReflectionType\">\n            <summary>\t\n            <p>This shader-reflection interface provides access to variable type.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The get a shader-reflection-type interface, call <strong><see cref=\"M:SharpDX.D3DCompiler.ShaderReflectionVariable.GetVariableType\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11ShaderReflectionType']/*\"/>\t\n            <msdn-id>ff476595</msdn-id>\t\n            <unmanaged>ID3D11ShaderReflectionType</unmanaged>\t\n            <unmanaged-short>ID3D11ShaderReflectionType</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderReflectionType.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.D3DCompiler.ShaderReflectionType\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderReflectionType.op_Explicit(System.IntPtr)~SharpDX.D3DCompiler.ShaderReflectionType\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.D3DCompiler.ShaderReflectionType\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderReflectionType.GetDescription(SharpDX.D3DCompiler.ShaderTypeDescription@)\">\n            <summary>\t\n            <p>Get the description of a shader-reflection-variable type.</p>\t\n            </summary>\t\n            <param name=\"descRef\"><dd>  <p>A reference to a shader-type description (see <strong><see cref=\"T:SharpDX.D3DCompiler.ShaderTypeDescription\"/></strong>).</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11ShaderReflectionType::GetDesc']/*\"/>\t\n            <msdn-id>ff476597</msdn-id>\t\n            <unmanaged>HRESULT ID3D11ShaderReflectionType::GetDesc([Out] D3D11_SHADER_TYPE_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>ID3D11ShaderReflectionType::GetDesc</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderReflectionType.GetMemberType(System.Int32)\">\n            <summary>\t\n            <p>Get a shader-reflection-variable type by index.</p>\t\n            </summary>\t\n            <param name=\"index\"><dd>  <p>Zero-based index.</p> </dd></param>\t\n            <returns><p>A reference to a <strong><see cref=\"T:SharpDX.D3DCompiler.ShaderReflectionType\"/> Interface</strong>.</p></returns>\t\n            <remarks>\t\n            <p>This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11ShaderReflectionType::GetMemberTypeByIndex']/*\"/>\t\n            <msdn-id>ff476599</msdn-id>\t\n            <unmanaged>ID3D11ShaderReflectionType* ID3D11ShaderReflectionType::GetMemberTypeByIndex([In] unsigned int Index)</unmanaged>\t\n            <unmanaged-short>ID3D11ShaderReflectionType::GetMemberTypeByIndex</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderReflectionType.GetMemberType(System.String)\">\n            <summary>\t\n            <p>Get a shader-reflection-variable type by name.</p>\t\n            </summary>\t\n            <param name=\"name\"><dd>  <p>Member name.</p> </dd></param>\t\n            <returns><p>A reference to a <strong><see cref=\"T:SharpDX.D3DCompiler.ShaderReflectionType\"/> Interface</strong>.</p></returns>\t\n            <remarks>\t\n            <p>This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11ShaderReflectionType::GetMemberTypeByName']/*\"/>\t\n            <msdn-id>ff476600</msdn-id>\t\n            <unmanaged>ID3D11ShaderReflectionType* ID3D11ShaderReflectionType::GetMemberTypeByName([In] const char* Name)</unmanaged>\t\n            <unmanaged-short>ID3D11ShaderReflectionType::GetMemberTypeByName</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderReflectionType.GetMemberTypeName(System.Int32)\">\n            <summary>\t\n            <p>Get a shader-reflection-variable type.</p>\t\n            </summary>\t\n            <param name=\"index\"><dd>  <p>Zero-based index.</p> </dd></param>\t\n            <returns><p>The variable type.</p></returns>\t\n            <remarks>\t\n            <p>This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11ShaderReflectionType::GetMemberTypeName']/*\"/>\t\n            <msdn-id>ff476601</msdn-id>\t\n            <unmanaged>const char* ID3D11ShaderReflectionType::GetMemberTypeName([In] unsigned int Index)</unmanaged>\t\n            <unmanaged-short>ID3D11ShaderReflectionType::GetMemberTypeName</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderReflectionType.IsEqual_(SharpDX.D3DCompiler.ShaderReflectionType)\">\n            <summary>\t\n            <p>Indicates whether two <strong><see cref=\"T:SharpDX.D3DCompiler.ShaderReflectionType\"/> Interface</strong> references have the same underlying type.</p>\t\n            </summary>\t\n            <param name=\"typeRef\">No documentation.</param>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if the references have the same underlying type; otherwise returns S_FALSE.</p></returns>\t\n            <remarks>\t\n            <p>IsEqual indicates whether the sources of the <strong><see cref=\"T:SharpDX.D3DCompiler.ShaderReflectionType\"/> Interface</strong> references have the same underlying type. For example, if two <strong><see cref=\"T:SharpDX.D3DCompiler.ShaderReflectionType\"/> Interface</strong> references were retrieved from variables, IsEqual can be used to see if  the variables have the same type.</p><p>This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11ShaderReflectionType::IsEqual']/*\"/>\t\n            <msdn-id>ff476605</msdn-id>\t\n            <unmanaged>HRESULT ID3D11ShaderReflectionType::IsEqual([In] ID3D11ShaderReflectionType* pType)</unmanaged>\t\n            <unmanaged-short>ID3D11ShaderReflectionType::IsEqual</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderReflectionType.GetSubType\">\n            <summary>\t\n            <p>Gets the base class of a class.</p>\t\n            </summary>\t\n            <returns><p>Returns a reference to a <strong><see cref=\"T:SharpDX.D3DCompiler.ShaderReflectionType\"/> Interface</strong> containing the base class type.  Returns <strong><c>null</c></strong> if the class does not have a base class.</p></returns>\t\n            <remarks>\t\n            <p>This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11ShaderReflectionType::GetSubType']/*\"/>\t\n            <msdn-id>ff476603</msdn-id>\t\n            <unmanaged>ID3D11ShaderReflectionType* ID3D11ShaderReflectionType::GetSubType()</unmanaged>\t\n            <unmanaged-short>ID3D11ShaderReflectionType::GetSubType</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderReflectionType.GetBaseClass\">\n            <summary>\t\n            <p>Gets an <strong><see cref=\"T:SharpDX.D3DCompiler.ShaderReflectionType\"/> Interface</strong> interface containing the variable base class type.</p>\t\n            </summary>\t\n            <returns><p>Returns A reference to a <strong><see cref=\"T:SharpDX.D3DCompiler.ShaderReflectionType\"/> Interface</strong>.</p></returns>\t\n            <remarks>\t\n            <p>This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11ShaderReflectionType::GetBaseClass']/*\"/>\t\n            <msdn-id>ff476596</msdn-id>\t\n            <unmanaged>ID3D11ShaderReflectionType* ID3D11ShaderReflectionType::GetBaseClass()</unmanaged>\t\n            <unmanaged-short>ID3D11ShaderReflectionType::GetBaseClass</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderReflectionType.GetNumInterfaces\">\n            <summary>\t\n            <p>Gets the number of interfaces.</p>\t\n            </summary>\t\n            <returns><p>Returns the number of interfaces.</p></returns>\t\n            <remarks>\t\n            <p>This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11ShaderReflectionType::GetNumInterfaces']/*\"/>\t\n            <msdn-id>ff476602</msdn-id>\t\n            <unmanaged>unsigned int ID3D11ShaderReflectionType::GetNumInterfaces()</unmanaged>\t\n            <unmanaged-short>ID3D11ShaderReflectionType::GetNumInterfaces</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderReflectionType.GetInterface(System.Int32)\">\n            <summary>\t\n            <p>Get an interface by index.</p>\t\n            </summary>\t\n            <param name=\"uIndex\"><dd>  <p>Zero-based index.</p> </dd></param>\t\n            <returns><p>A reference to a <strong><see cref=\"T:SharpDX.D3DCompiler.ShaderReflectionType\"/> Interface</strong>.</p></returns>\t\n            <remarks>\t\n            <p>This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11ShaderReflectionType::GetInterfaceByIndex']/*\"/>\t\n            <msdn-id>ff476598</msdn-id>\t\n            <unmanaged>ID3D11ShaderReflectionType* ID3D11ShaderReflectionType::GetInterfaceByIndex([In] unsigned int uIndex)</unmanaged>\t\n            <unmanaged-short>ID3D11ShaderReflectionType::GetInterfaceByIndex</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderReflectionType.IsOfType_(SharpDX.D3DCompiler.ShaderReflectionType)\">\n            <summary>\t\n            <p>Indicates whether a variable is of the specified type.</p>\t\n            </summary>\t\n            <param name=\"typeRef\"><dd>  <p>A reference to a <strong><see cref=\"T:SharpDX.D3DCompiler.ShaderReflectionType\"/> Interface</strong>.</p> </dd></param>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if object being queried is equal to or inherits from the type in the <em>pType</em> parameter; otherwise returns S_FALSE.</p></returns>\t\n            <remarks>\t\n            <p>This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11ShaderReflectionType::IsOfType']/*\"/>\t\n            <msdn-id>ff476606</msdn-id>\t\n            <unmanaged>HRESULT ID3D11ShaderReflectionType::IsOfType([In] ID3D11ShaderReflectionType* pType)</unmanaged>\t\n            <unmanaged-short>ID3D11ShaderReflectionType::IsOfType</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderReflectionType.ImplementsInterface_(SharpDX.D3DCompiler.ShaderReflectionType)\">\n            <summary>\t\n            <p>Indicates whether a class type implements an interface.</p>\t\n            </summary>\t\n            <param name=\"baseRef\"><dd>  <p>A reference to a <strong><see cref=\"T:SharpDX.D3DCompiler.ShaderReflectionType\"/> Interface</strong>.</p> </dd></param>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if the interface is implemented; otherwise return S_FALSE.</p></returns>\t\n            <remarks>\t\n            <p>This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11ShaderReflectionType::ImplementsInterface']/*\"/>\t\n            <msdn-id>ff476604</msdn-id>\t\n            <unmanaged>HRESULT ID3D11ShaderReflectionType::ImplementsInterface([In] ID3D11ShaderReflectionType* pBase)</unmanaged>\t\n            <unmanaged-short>ID3D11ShaderReflectionType::ImplementsInterface</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderReflectionType.IsEqual(SharpDX.D3DCompiler.ShaderReflectionType)\">\n            <summary>\t\n            Indicates whether two <see cref=\"T:SharpDX.D3DCompiler.ShaderReflectionType\"/> references have the same underlying type.\t\n            </summary>\t\n            <remarks>\t\n            IsEqual indicates whether the sources of the <see cref=\"T:SharpDX.D3DCompiler.ShaderReflectionType\"/> references have the same underlying type. For example, if two ID3D11ShaderReflectionType Interface references were retrieved from variables, IsEqual can be used to see if  the variables have the same type. This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll. \t\n            </remarks>\t\n            <param name=\"typeRef\">A reference to a <see cref=\"T:SharpDX.D3DCompiler.ShaderReflectionType\"/>. </param>\n            <returns>Returns true if the references have the same underlying type; otherwise returns false. </returns>\n            <unmanaged>HRESULT ID3D11ShaderReflectionType::IsEqual([In] ID3D11ShaderReflectionType* pType)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderReflectionType.IsOfType(SharpDX.D3DCompiler.ShaderReflectionType)\">\n            <summary>\t\n            Indicates whether a variable is of the specified type.\t\n            </summary>\t\n            <remarks>\t\n            This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll. \t\n            </remarks>\t\n            <param name=\"typeRef\">A reference to a <see cref=\"T:SharpDX.D3DCompiler.ShaderReflectionType\"/>. </param>\n            <returns>Returns true if object being queried is equal to or inherits from the type in the pType parameter; otherwise returns false. </returns>\n            <unmanaged>HRESULT ID3D11ShaderReflectionType::IsOfType([In] ID3D11ShaderReflectionType* pType)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderReflectionType.ImplementsInterface(SharpDX.D3DCompiler.ShaderReflectionType)\">\n            <summary>\t\n            Indicates whether a class type implements an interface.\t\n            </summary>\t\n            <remarks>\t\n            This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll. \t\n            </remarks>\t\n            <param name=\"baseRef\">A reference to a <see cref=\"T:SharpDX.D3DCompiler.ShaderReflectionType\"/>. </param>\n            <returns>Returns true if the interface is implemented; otherwise return false. </returns>\n            <unmanaged>HRESULT ID3D11ShaderReflectionType::ImplementsInterface([In] ID3D11ShaderReflectionType* pBase)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.D3DCompiler.ShaderReflectionType.Description\">\n            <summary>\t\n            <p>Get the description of a shader-reflection-variable type.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11ShaderReflectionType::GetDesc']/*\"/>\t\n            <msdn-id>ff476597</msdn-id>\t\n            <unmanaged>GetDesc</unmanaged>\t\n            <unmanaged-short>GetDesc</unmanaged-short>\t\n            <unmanaged>HRESULT ID3D11ShaderReflectionType::GetDesc([Out] D3D11_SHADER_TYPE_DESC* pDesc)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.D3DCompiler.ShaderReflectionType.SubType\">\n            <summary>\t\n            <p>Gets the base class of a class.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11ShaderReflectionType::GetSubType']/*\"/>\t\n            <msdn-id>ff476603</msdn-id>\t\n            <unmanaged>GetSubType</unmanaged>\t\n            <unmanaged-short>GetSubType</unmanaged-short>\t\n            <unmanaged>ID3D11ShaderReflectionType* ID3D11ShaderReflectionType::GetSubType()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.D3DCompiler.ShaderReflectionType.BaseClass\">\n            <summary>\t\n            <p>Gets an <strong><see cref=\"T:SharpDX.D3DCompiler.ShaderReflectionType\"/> Interface</strong> interface containing the variable base class type.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11ShaderReflectionType::GetBaseClass']/*\"/>\t\n            <msdn-id>ff476596</msdn-id>\t\n            <unmanaged>GetBaseClass</unmanaged>\t\n            <unmanaged-short>GetBaseClass</unmanaged-short>\t\n            <unmanaged>ID3D11ShaderReflectionType* ID3D11ShaderReflectionType::GetBaseClass()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.D3DCompiler.ShaderReflectionType.NumInterfaces\">\n            <summary>\t\n            <p>Gets the number of interfaces.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11ShaderReflectionType::GetNumInterfaces']/*\"/>\t\n            <msdn-id>ff476602</msdn-id>\t\n            <unmanaged>GetNumInterfaces</unmanaged>\t\n            <unmanaged-short>GetNumInterfaces</unmanaged-short>\t\n            <unmanaged>unsigned int ID3D11ShaderReflectionType::GetNumInterfaces()</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.D3DCompiler.ShaderReflectionVariable\">\n            <summary>\t\n            <p>This shader-reflection interface provides access to a variable.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>To get a shader-reflection-variable interface, call a method like <strong><see cref=\"M:SharpDX.D3DCompiler.ShaderReflection.GetVariable(System.String)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11ShaderReflectionVariable']/*\"/>\t\n            <msdn-id>ff476607</msdn-id>\t\n            <unmanaged>ID3D11ShaderReflectionVariable</unmanaged>\t\n            <unmanaged-short>ID3D11ShaderReflectionVariable</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderReflectionVariable.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.D3DCompiler.ShaderReflectionVariable\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderReflectionVariable.op_Explicit(System.IntPtr)~SharpDX.D3DCompiler.ShaderReflectionVariable\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.D3DCompiler.ShaderReflectionVariable\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderReflectionVariable.GetDescription(SharpDX.D3DCompiler.ShaderVariableDescription@)\">\n            <summary>\t\n            <p>Get a shader-variable description.</p>\t\n            </summary>\t\n            <param name=\"descRef\"><dd>  <p>A reference to a shader-variable description (see <strong><see cref=\"T:SharpDX.D3DCompiler.ShaderVariableDescription\"/></strong>).</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>This method can be used to determine if the <strong><see cref=\"T:SharpDX.D3DCompiler.ShaderReflectionVariable\"/> Interface</strong> is valid, the method returns <strong>E_FAIL</strong> when the variable is not valid.</p><p>This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11ShaderReflectionVariable::GetDesc']/*\"/>\t\n            <msdn-id>ff476608</msdn-id>\t\n            <unmanaged>HRESULT ID3D11ShaderReflectionVariable::GetDesc([Out] D3D11_SHADER_VARIABLE_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>ID3D11ShaderReflectionVariable::GetDesc</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderReflectionVariable.GetVariableType\">\n            <summary>\t\n            <p>Get a shader-variable type.</p>\t\n            </summary>\t\n            <returns><p>A reference to a <strong><see cref=\"T:SharpDX.D3DCompiler.ShaderReflectionType\"/> Interface</strong>.</p></returns>\t\n            <remarks>\t\n            <p>This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11ShaderReflectionVariable::GetType']/*\"/>\t\n            <msdn-id>ff476610</msdn-id>\t\n            <unmanaged>ID3D11ShaderReflectionType* ID3D11ShaderReflectionVariable::GetType()</unmanaged>\t\n            <unmanaged-short>ID3D11ShaderReflectionVariable::GetType</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderReflectionVariable.GetBuffer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11ShaderReflectionVariable::GetBuffer']/*\"/>\t\n            <unmanaged>ID3D11ShaderReflectionConstantBuffer* ID3D11ShaderReflectionVariable::GetBuffer()</unmanaged>\t\n            <unmanaged-short>ID3D11ShaderReflectionVariable::GetBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderReflectionVariable.GetInterfaceSlot(System.Int32)\">\n            <summary>\t\n            <p>Gets the corresponding interface slot for a variable that represents an interface reference.</p>\t\n            </summary>\t\n            <param name=\"uArrayIndex\"><dd>  <p>Index of the array element to get the slot number for.  For a non-array variable this value will be zero.</p> </dd></param>\t\n            <returns><p>Returns the index of the interface in the interface array.</p></returns>\t\n            <remarks>\t\n            <p>GetInterfaceSlot gets the corresponding slot in an dynamic linkage array for an interface instance.  The returned slot number is used to set an interface instance to a particular class instance.  See the HLSL Interfaces and Classes overview for additional information.</p><p>This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11ShaderReflectionVariable::GetInterfaceSlot']/*\"/>\t\n            <msdn-id>ff476609</msdn-id>\t\n            <unmanaged>unsigned int ID3D11ShaderReflectionVariable::GetInterfaceSlot([In] unsigned int uArrayIndex)</unmanaged>\t\n            <unmanaged-short>ID3D11ShaderReflectionVariable::GetInterfaceSlot</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.D3DCompiler.ShaderReflectionVariable.Description\">\n            <summary>\t\n            <p>Get a shader-variable description.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This method can be used to determine if the <strong><see cref=\"T:SharpDX.D3DCompiler.ShaderReflectionVariable\"/> Interface</strong> is valid, the method returns <strong>E_FAIL</strong> when the variable is not valid.</p><p>This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11ShaderReflectionVariable::GetDesc']/*\"/>\t\n            <msdn-id>ff476608</msdn-id>\t\n            <unmanaged>GetDesc</unmanaged>\t\n            <unmanaged-short>GetDesc</unmanaged-short>\t\n            <unmanaged>HRESULT ID3D11ShaderReflectionVariable::GetDesc([Out] D3D11_SHADER_VARIABLE_DESC* pDesc)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.D3DCompiler.ShaderReflectionVariable.Buffer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11ShaderReflectionVariable::GetBuffer']/*\"/>\t\n            <unmanaged>GetBuffer</unmanaged>\t\n            <unmanaged-short>GetBuffer</unmanaged-short>\t\n            <unmanaged>ID3D11ShaderReflectionConstantBuffer* ID3D11ShaderReflectionVariable::GetBuffer()</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.D3DCompiler.IncludeShadow\">\n            <summary>\n            Shadow callback for <see cref=\"T:SharpDX.D3DCompiler.Include\"/>.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.IncludeShadow.ToIntPtr(SharpDX.D3DCompiler.Include)\">\n            <summary>\n            Return a pointer to the unamanged version of this callback.\n            </summary>\n            <param name=\"callback\">The callback.</param>\n            <returns>A pointer to a shadow c++ callback</returns>\n        </member>\n        <member name=\"T:SharpDX.D3DCompiler.IncludeShadow.IncludeVtbl\">\n            <summary>\n            Internal Include Callback\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.D3DCompiler.IncludeShadow.IncludeVtbl.OpenDelegate\">\n            <summary>\t\n            A user-implemented method for opening and reading the contents of a shader #include file.\t\n            </summary>\n            <param name=\"thisPtr\">This pointer</param>\n            <param name=\"includeType\">A <see cref=\"T:SharpDX.D3DCompiler.IncludeType\"/>-typed value that indicates the location of the #include file. </param>\n            <param name=\"fileNameRef\">Name of the #include file.</param>\n            <param name=\"pParentData\">Pointer to the container that includes the #include file.</param>\n            <param name=\"dataRef\">Pointer to the buffer that Open returns that contains the include directives. This pointer remains valid until <see cref=\"M:SharpDX.D3DCompiler.Include.Close(System.IO.Stream)\"/> is called.</param>\n            <param name=\"bytesRef\">Pointer to the number of bytes that Open returns in ppData.</param>\n            <returns>The user-implemented method should return S_OK. If Open fails when reading the #include file, the application programming interface (API) that caused Open to be called fails. This failure can occur in one of the following situations:The high-level shader language (HLSL) shader fails one of the D3D10CompileShader*** functions.The effect fails one of the D3D10CreateEffect*** functions.</returns>\n            <unmanaged>HRESULT Open([None] D3D_INCLUDE_TYPE IncludeType,[None] const char* pFileName,[None] LPCVOID pParentData,[None] LPCVOID* ppData,[None] UINT* pBytes)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.D3DCompiler.IncludeShadow.IncludeVtbl.CloseDelegate\">\n            <summary>\t\n            A user-implemented method for closing a shader #include file.\t\n            </summary>\t\n            <remarks>\t\n            If <see cref=\"M:SharpDX.D3DCompiler.Include.Open(SharpDX.D3DCompiler.IncludeType,System.String,System.IO.Stream)\"/> was successful, Close is guaranteed to be called before the API using the <see cref=\"T:SharpDX.D3DCompiler.Include\"/> interface returns.\t\n            </remarks>\n            <param name=\"thisPtr\">This pointer</param>\n            <param name=\"pData\">Pointer to the buffer that contains the include directives. This is the pointer that was returned by the corresponding <see cref=\"M:SharpDX.D3DCompiler.Include.Open(SharpDX.D3DCompiler.IncludeType,System.String,System.IO.Stream)\"/> call.</param>\n            <returns>The user-implemented Close method should return S_OK. If Close fails when it closes the #include file, the application programming interface (API) that caused Close to be called fails. This failure can occur in one of the following situations:The high-level shader language (HLSL) shader fails one of the D3D10CompileShader*** functions.The effect fails one of the D3D10CreateEffect*** functions.</returns>\n            <unmanaged>HRESULT Close([None] LPCVOID pData)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.D3DCompiler.NamespaceDoc\">\n            <summary>\n            The <see cref=\"N:SharpDX.D3DCompiler\"/> namespace provides managed Direct3D Compiler API.\n            </summary>\n            <msdn-id>dd607340</msdn-id>\n            <unmanaged>D3DCompiler</unmanaged>\t\n            <unmanaged-short>D3DCompiler</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.D3DCompiler.RegisterComponentMaskFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <unmanaged>D3D11_REGISTER_COMPONENT_MASK_FLAG</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.RegisterComponentMaskFlags.All\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <unmanaged>D3D11_REGISTER_COMPONENT_MASK_ALL</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.RegisterComponentMaskFlags.ComponentW\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <unmanaged>D3D11_REGISTER_COMPONENT_MASK_COMPONENT_W</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.RegisterComponentMaskFlags.ComponentX\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <unmanaged>D3D11_REGISTER_COMPONENT_MASK_COMPONENT_X</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.RegisterComponentMaskFlags.ComponentY\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <unmanaged>D3D11_REGISTER_COMPONENT_MASK_COMPONENT_Y</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.RegisterComponentMaskFlags.ComponentZ\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <unmanaged>D3D11_REGISTER_COMPONENT_MASK_COMPONENT_Z</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.RegisterComponentMaskFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <unmanaged>None</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.D3DCompiler.ConstantBufferDescription\">\n            <summary>\t\n            <p>Describes a shader constant-buffer.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Constants are supplied to shaders in a shader-constant buffer. Get the description of a shader-constant-buffer by calling <strong><see cref=\"M:SharpDX.D3DCompiler.ConstantBuffer.GetDescription(SharpDX.D3DCompiler.ConstantBufferDescription@)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_BUFFER_DESC']/*\"/>\t\n            <msdn-id>ff476208</msdn-id>\t\n            <unmanaged>D3D11_SHADER_BUFFER_DESC</unmanaged>\t\n            <unmanaged-short>D3D11_SHADER_BUFFER_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ConstantBufferDescription.Name\">\n            <summary>\t\n            <dd> <p>The name of the buffer.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_BUFFER_DESC::Name']/*\"/>\t\n            <msdn-id>ff476208</msdn-id>\t\n            <unmanaged>const char* Name</unmanaged>\t\n            <unmanaged-short>char Name</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ConstantBufferDescription.Type\">\n            <summary>\t\n            <dd> <p>The intended use of the constant data.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_BUFFER_DESC::Type']/*\"/>\t\n            <msdn-id>ff476208</msdn-id>\t\n            <unmanaged>D3D_CBUFFER_TYPE Type</unmanaged>\t\n            <unmanaged-short>D3D_CBUFFER_TYPE Type</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ConstantBufferDescription.VariableCount\">\n            <summary>\t\n            <dd> <p>The number of unique variables.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_BUFFER_DESC::Variables']/*\"/>\t\n            <msdn-id>ff476208</msdn-id>\t\n            <unmanaged>unsigned int Variables</unmanaged>\t\n            <unmanaged-short>unsigned int Variables</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ConstantBufferDescription.Size\">\n            <summary>\t\n            <dd> <p>Buffer size (in bytes).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_BUFFER_DESC::Size']/*\"/>\t\n            <msdn-id>ff476208</msdn-id>\t\n            <unmanaged>unsigned int Size</unmanaged>\t\n            <unmanaged-short>unsigned int Size</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ConstantBufferDescription.Flags\">\n            <summary>\t\n            <dd> <p>Shader buffer properties.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_BUFFER_DESC::uFlags']/*\"/>\t\n            <msdn-id>ff476208</msdn-id>\t\n            <unmanaged>D3D_SHADER_CBUFFER_FLAGS uFlags</unmanaged>\t\n            <unmanaged-short>D3D_SHADER_CBUFFER_FLAGS uFlags</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.D3DCompiler.InputBindingDescription\">\n            <summary>\t\n            <p>Describes how a shader resource is bound to a shader input.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Get a shader-input-signature description by calling <strong><see cref=\"M:SharpDX.D3DCompiler.ShaderReflection.GetResourceBindingDescription(System.Int32)\"/></strong> or <strong><see cref=\"M:SharpDX.D3DCompiler.ShaderReflection.GetResourceBindingDescription(System.Int32)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_INPUT_BIND_DESC']/*\"/>\t\n            <msdn-id>ff476210</msdn-id>\t\n            <unmanaged>D3D11_SHADER_INPUT_BIND_DESC</unmanaged>\t\n            <unmanaged-short>D3D11_SHADER_INPUT_BIND_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.InputBindingDescription.Name\">\n            <summary>\t\n            <dd> <p>Name of the shader resource.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_INPUT_BIND_DESC::Name']/*\"/>\t\n            <msdn-id>ff476210</msdn-id>\t\n            <unmanaged>const char* Name</unmanaged>\t\n            <unmanaged-short>char Name</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.InputBindingDescription.Type\">\n            <summary>\t\n            <dd> <p>Identifies the type of data in the resource. See <strong>D3D10_SHADER_INPUT_TYPE</strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_INPUT_BIND_DESC::Type']/*\"/>\t\n            <msdn-id>ff476210</msdn-id>\t\n            <unmanaged>D3D_SHADER_INPUT_TYPE Type</unmanaged>\t\n            <unmanaged-short>D3D_SHADER_INPUT_TYPE Type</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.InputBindingDescription.BindPoint\">\n            <summary>\t\n            <dd> <p>Starting bind point.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_INPUT_BIND_DESC::BindPoint']/*\"/>\t\n            <msdn-id>ff476210</msdn-id>\t\n            <unmanaged>unsigned int BindPoint</unmanaged>\t\n            <unmanaged-short>unsigned int BindPoint</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.InputBindingDescription.BindCount\">\n            <summary>\t\n            <dd> <p>Number of contiguous bind points for arrays.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_INPUT_BIND_DESC::BindCount']/*\"/>\t\n            <msdn-id>ff476210</msdn-id>\t\n            <unmanaged>unsigned int BindCount</unmanaged>\t\n            <unmanaged-short>unsigned int BindCount</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.InputBindingDescription.Flags\">\n            <summary>\t\n            <dd> <p>Shader input-parameter options.  See <strong>D3D10_SHADER_INPUT_FLAGS</strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_INPUT_BIND_DESC::uFlags']/*\"/>\t\n            <msdn-id>ff476210</msdn-id>\t\n            <unmanaged>D3D_SHADER_INPUT_FLAGS uFlags</unmanaged>\t\n            <unmanaged-short>D3D_SHADER_INPUT_FLAGS uFlags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.InputBindingDescription.ReturnType\">\n            <summary>\t\n            <dd> <p>If the input is a texture, the return type. See <strong>D3D11_RESOURCE_RETURN_TYPE</strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_INPUT_BIND_DESC::ReturnType']/*\"/>\t\n            <msdn-id>ff476210</msdn-id>\t\n            <unmanaged>D3D_RESOURCE_RETURN_TYPE ReturnType</unmanaged>\t\n            <unmanaged-short>D3D_RESOURCE_RETURN_TYPE ReturnType</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.InputBindingDescription.Dimension\">\n            <summary>\t\n            <dd> <p>Identifies the dimensions of the bound resource. For a list of values that <strong><see cref=\"M:SharpDX.D3DCompiler.ShaderReflection.GetResourceBindingDescription(System.Int32)\"/></strong> or <strong><see cref=\"M:SharpDX.D3DCompiler.ShaderReflection.GetResourceBindingDescription(System.Int32)\"/></strong> can return, see <strong>D3D11_SRV_DIMENSION</strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_INPUT_BIND_DESC::Dimension']/*\"/>\t\n            <msdn-id>ff476210</msdn-id>\t\n            <unmanaged>D3D_SRV_DIMENSION Dimension</unmanaged>\t\n            <unmanaged-short>D3D_SRV_DIMENSION Dimension</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.InputBindingDescription.NumSamples\">\n            <summary>\t\n            <dd> <p>The number of samples for a multisampled texture; otherwise 0.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_INPUT_BIND_DESC::NumSamples']/*\"/>\t\n            <msdn-id>ff476210</msdn-id>\t\n            <unmanaged>unsigned int NumSamples</unmanaged>\t\n            <unmanaged-short>unsigned int NumSamples</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.D3DCompiler.ShaderData\">\n            <summary>\t\n            <p>Describes shader data.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>An array of <strong><see cref=\"T:SharpDX.D3DCompiler.ShaderData\"/></strong> structures is passed to <strong><see cref=\"M:SharpDX.D3DCompiler.D3D.CompressShaders(System.Int32,SharpDX.D3DCompiler.ShaderData[],System.Int32,SharpDX.Direct3D.Blob@)\"/></strong> to compress the shader data into a more compact form.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SHADER_DATA']/*\"/>\t\n            <msdn-id>ff728721</msdn-id>\t\n            <unmanaged>D3D_SHADER_DATA</unmanaged>\t\n            <unmanaged-short>D3D_SHADER_DATA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderData.BytecodePtr\">\n            <summary>\t\n            <dd> <p>A reference to shader data.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SHADER_DATA::pBytecode']/*\"/>\t\n            <msdn-id>ff728721</msdn-id>\t\n            <unmanaged>const void* pBytecode</unmanaged>\t\n            <unmanaged-short>void pBytecode</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderData.BytecodeLength\">\n            <summary>\t\n            <dd> <p>Length of shader data that <strong>pBytecode</strong> points to.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SHADER_DATA::BytecodeLength']/*\"/>\t\n            <msdn-id>ff728721</msdn-id>\t\n            <unmanaged>SIZE_T BytecodeLength</unmanaged>\t\n            <unmanaged-short>SIZE_T BytecodeLength</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.D3DCompiler.ShaderDescription\">\n            <summary>\t\n            <p>Describes a shader.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>A shader is written in HLSL and compiled into an intermediate language by the HLSL compiler. The shader description returns information about the compiled shader. Get a shader description by calling <strong><see cref=\"M:SharpDX.D3DCompiler.ShaderReflection.GetDescription(SharpDX.D3DCompiler.ShaderDescription@)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_DESC']/*\"/>\t\n            <msdn-id>ff476209</msdn-id>\t\n            <unmanaged>D3D11_SHADER_DESC</unmanaged>\t\n            <unmanaged-short>D3D11_SHADER_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderDescription.Version\">\n            <summary>\t\n            <dd> <p>Shader version.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_DESC::Version']/*\"/>\t\n            <msdn-id>ff476209</msdn-id>\t\n            <unmanaged>unsigned int Version</unmanaged>\t\n            <unmanaged-short>unsigned int Version</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderDescription.Creator\">\n            <summary>\t\n            <dd> <p>The name of the originator of the shader.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_DESC::Creator']/*\"/>\t\n            <msdn-id>ff476209</msdn-id>\t\n            <unmanaged>const char* Creator</unmanaged>\t\n            <unmanaged-short>char Creator</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderDescription.Flags\">\n            <summary>\t\n            <dd> <p>Shader compilation/parse flags.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_DESC::Flags']/*\"/>\t\n            <msdn-id>ff476209</msdn-id>\t\n            <unmanaged>D3DCOMPILE_SHADER_FLAGS Flags</unmanaged>\t\n            <unmanaged-short>D3DCOMPILE_SHADER_FLAGS Flags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderDescription.ConstantBuffers\">\n            <summary>\t\n            <dd> <p>The number of shader-constant buffers.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_DESC::ConstantBuffers']/*\"/>\t\n            <msdn-id>ff476209</msdn-id>\t\n            <unmanaged>unsigned int ConstantBuffers</unmanaged>\t\n            <unmanaged-short>unsigned int ConstantBuffers</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderDescription.BoundResources\">\n            <summary>\t\n            <dd> <p>The number of resource (textures and buffers) bound to a shader.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_DESC::BoundResources']/*\"/>\t\n            <msdn-id>ff476209</msdn-id>\t\n            <unmanaged>unsigned int BoundResources</unmanaged>\t\n            <unmanaged-short>unsigned int BoundResources</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderDescription.InputParameters\">\n            <summary>\t\n            <dd> <p>The number of parameters in the input signature.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_DESC::InputParameters']/*\"/>\t\n            <msdn-id>ff476209</msdn-id>\t\n            <unmanaged>unsigned int InputParameters</unmanaged>\t\n            <unmanaged-short>unsigned int InputParameters</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderDescription.OutputParameters\">\n            <summary>\t\n            <dd> <p>The number of parameters in the output signature.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_DESC::OutputParameters']/*\"/>\t\n            <msdn-id>ff476209</msdn-id>\t\n            <unmanaged>unsigned int OutputParameters</unmanaged>\t\n            <unmanaged-short>unsigned int OutputParameters</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderDescription.InstructionCount\">\n            <summary>\t\n            <dd> <p>The number of intermediate-language instructions in the compiled shader.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_DESC::InstructionCount']/*\"/>\t\n            <msdn-id>ff476209</msdn-id>\t\n            <unmanaged>unsigned int InstructionCount</unmanaged>\t\n            <unmanaged-short>unsigned int InstructionCount</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderDescription.TempRegisterCount\">\n            <summary>\t\n            <dd> <p>The number of temporary registers in the compiled shader.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_DESC::TempRegisterCount']/*\"/>\t\n            <msdn-id>ff476209</msdn-id>\t\n            <unmanaged>unsigned int TempRegisterCount</unmanaged>\t\n            <unmanaged-short>unsigned int TempRegisterCount</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderDescription.TempArrayCount\">\n            <summary>\t\n            <dd> <p>Number of temporary arrays used.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_DESC::TempArrayCount']/*\"/>\t\n            <msdn-id>ff476209</msdn-id>\t\n            <unmanaged>unsigned int TempArrayCount</unmanaged>\t\n            <unmanaged-short>unsigned int TempArrayCount</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderDescription.DefineCount\">\n            <summary>\t\n            <dd> <p>Number of constant defines.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_DESC::DefCount']/*\"/>\t\n            <msdn-id>ff476209</msdn-id>\t\n            <unmanaged>unsigned int DefCount</unmanaged>\t\n            <unmanaged-short>unsigned int DefCount</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderDescription.DeclarationCount\">\n            <summary>\t\n            <dd> <p>Number of declarations (input + output).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_DESC::DclCount']/*\"/>\t\n            <msdn-id>ff476209</msdn-id>\t\n            <unmanaged>unsigned int DclCount</unmanaged>\t\n            <unmanaged-short>unsigned int DclCount</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderDescription.TextureNormalInstructions\">\n            <summary>\t\n            <dd> <p>Number of non-categorized texture instructions.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_DESC::TextureNormalInstructions']/*\"/>\t\n            <msdn-id>ff476209</msdn-id>\t\n            <unmanaged>unsigned int TextureNormalInstructions</unmanaged>\t\n            <unmanaged-short>unsigned int TextureNormalInstructions</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderDescription.TextureLoadInstructions\">\n            <summary>\t\n            <dd> <p>Number of texture load instructions</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_DESC::TextureLoadInstructions']/*\"/>\t\n            <msdn-id>ff476209</msdn-id>\t\n            <unmanaged>unsigned int TextureLoadInstructions</unmanaged>\t\n            <unmanaged-short>unsigned int TextureLoadInstructions</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderDescription.TextureCompInstructions\">\n            <summary>\t\n            <dd> <p>Number of texture comparison instructions</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_DESC::TextureCompInstructions']/*\"/>\t\n            <msdn-id>ff476209</msdn-id>\t\n            <unmanaged>unsigned int TextureCompInstructions</unmanaged>\t\n            <unmanaged-short>unsigned int TextureCompInstructions</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderDescription.TextureBiasInstructions\">\n            <summary>\t\n            <dd> <p>Number of texture bias instructions</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_DESC::TextureBiasInstructions']/*\"/>\t\n            <msdn-id>ff476209</msdn-id>\t\n            <unmanaged>unsigned int TextureBiasInstructions</unmanaged>\t\n            <unmanaged-short>unsigned int TextureBiasInstructions</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderDescription.TextureGradientInstructions\">\n            <summary>\t\n            <dd> <p>Number of texture gradient instructions.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_DESC::TextureGradientInstructions']/*\"/>\t\n            <msdn-id>ff476209</msdn-id>\t\n            <unmanaged>unsigned int TextureGradientInstructions</unmanaged>\t\n            <unmanaged-short>unsigned int TextureGradientInstructions</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderDescription.FloatInstructionCount\">\n            <summary>\t\n            <dd> <p>Number of floating point arithmetic instructions used.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_DESC::FloatInstructionCount']/*\"/>\t\n            <msdn-id>ff476209</msdn-id>\t\n            <unmanaged>unsigned int FloatInstructionCount</unmanaged>\t\n            <unmanaged-short>unsigned int FloatInstructionCount</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderDescription.IntInstructionCount\">\n            <summary>\t\n            <dd> <p>Number of signed integer arithmetic instructions used.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_DESC::IntInstructionCount']/*\"/>\t\n            <msdn-id>ff476209</msdn-id>\t\n            <unmanaged>unsigned int IntInstructionCount</unmanaged>\t\n            <unmanaged-short>unsigned int IntInstructionCount</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderDescription.UintInstructionCount\">\n            <summary>\t\n            <dd> <p>Number of unsigned integer arithmetic instructions used.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_DESC::UintInstructionCount']/*\"/>\t\n            <msdn-id>ff476209</msdn-id>\t\n            <unmanaged>unsigned int UintInstructionCount</unmanaged>\t\n            <unmanaged-short>unsigned int UintInstructionCount</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderDescription.StaticFlowControlCount\">\n            <summary>\t\n            <dd> <p>Number of static flow control instructions used.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_DESC::StaticFlowControlCount']/*\"/>\t\n            <msdn-id>ff476209</msdn-id>\t\n            <unmanaged>unsigned int StaticFlowControlCount</unmanaged>\t\n            <unmanaged-short>unsigned int StaticFlowControlCount</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderDescription.DynamicFlowControlCount\">\n            <summary>\t\n            <dd> <p>Number of dynamic flow control instructions used.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_DESC::DynamicFlowControlCount']/*\"/>\t\n            <msdn-id>ff476209</msdn-id>\t\n            <unmanaged>unsigned int DynamicFlowControlCount</unmanaged>\t\n            <unmanaged-short>unsigned int DynamicFlowControlCount</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderDescription.MacroInstructionCount\">\n            <summary>\t\n            <dd> <p>Number of macro instructions used.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_DESC::MacroInstructionCount']/*\"/>\t\n            <msdn-id>ff476209</msdn-id>\t\n            <unmanaged>unsigned int MacroInstructionCount</unmanaged>\t\n            <unmanaged-short>unsigned int MacroInstructionCount</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderDescription.ArrayInstructionCount\">\n            <summary>\t\n            <dd> <p>Number of array instructions used.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_DESC::ArrayInstructionCount']/*\"/>\t\n            <msdn-id>ff476209</msdn-id>\t\n            <unmanaged>unsigned int ArrayInstructionCount</unmanaged>\t\n            <unmanaged-short>unsigned int ArrayInstructionCount</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderDescription.CutInstructionCount\">\n            <summary>\t\n            <dd> <p>Number of cut instructions used.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_DESC::CutInstructionCount']/*\"/>\t\n            <msdn-id>ff476209</msdn-id>\t\n            <unmanaged>unsigned int CutInstructionCount</unmanaged>\t\n            <unmanaged-short>unsigned int CutInstructionCount</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderDescription.EmitInstructionCount\">\n            <summary>\t\n            <dd> <p>Number of emit instructions used.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_DESC::EmitInstructionCount']/*\"/>\t\n            <msdn-id>ff476209</msdn-id>\t\n            <unmanaged>unsigned int EmitInstructionCount</unmanaged>\t\n            <unmanaged-short>unsigned int EmitInstructionCount</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderDescription.GeometryShaderOutputTopology\">\n            <summary>\t\n            <dd> <p>The <strong>D3D10_PRIMITIVE_TOPOLOGY</strong>, which represents the shader output topology.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_DESC::GSOutputTopology']/*\"/>\t\n            <msdn-id>ff476209</msdn-id>\t\n            <unmanaged>D3D_PRIMITIVE_TOPOLOGY GSOutputTopology</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_TOPOLOGY GSOutputTopology</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderDescription.GeometryShaderMaxOutputVertexCount\">\n            <summary>\t\n            <dd> <p>Geometry shader maximum output vertex count.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_DESC::GSMaxOutputVertexCount']/*\"/>\t\n            <msdn-id>ff476209</msdn-id>\t\n            <unmanaged>unsigned int GSMaxOutputVertexCount</unmanaged>\t\n            <unmanaged-short>unsigned int GSMaxOutputVertexCount</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderDescription.InputPrimitive\">\n            <summary>\t\n            <dd> <p>The <strong>D3D11_PRIMITIVE</strong>-typed value that represents the input primitive for a  geometry shader or hull shader.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_DESC::InputPrimitive']/*\"/>\t\n            <msdn-id>ff476209</msdn-id>\t\n            <unmanaged>D3D_PRIMITIVE InputPrimitive</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE InputPrimitive</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderDescription.PatchConstantParameters\">\n            <summary>\t\n            <dd> <p>Number of parameters in the patch-constant signature.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_DESC::PatchConstantParameters']/*\"/>\t\n            <msdn-id>ff476209</msdn-id>\t\n            <unmanaged>unsigned int PatchConstantParameters</unmanaged>\t\n            <unmanaged-short>unsigned int PatchConstantParameters</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderDescription.GeometryShaderInstanceCount\">\n            <summary>\t\n            <dd> <p>Number of geometry shader instances.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_DESC::cGSInstanceCount']/*\"/>\t\n            <msdn-id>ff476209</msdn-id>\t\n            <unmanaged>unsigned int cGSInstanceCount</unmanaged>\t\n            <unmanaged-short>unsigned int cGSInstanceCount</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderDescription.ControlPoints\">\n            <summary>\t\n            <dd> <p>Number of control points in the hull shader and domain shader.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_DESC::cControlPoints']/*\"/>\t\n            <msdn-id>ff476209</msdn-id>\t\n            <unmanaged>unsigned int cControlPoints</unmanaged>\t\n            <unmanaged-short>unsigned int cControlPoints</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderDescription.HullShaderOutputPrimitive\">\n            <summary>\t\n            <dd> <p>The <strong>D3D11_TESSELLATOR_OUTPUT_PRIMITIVE</strong>, which represents the tessellator output-primitive type.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_DESC::HSOutputPrimitive']/*\"/>\t\n            <msdn-id>ff476209</msdn-id>\t\n            <unmanaged>D3D_TESSELLATOR_OUTPUT_PRIMITIVE HSOutputPrimitive</unmanaged>\t\n            <unmanaged-short>D3D_TESSELLATOR_OUTPUT_PRIMITIVE HSOutputPrimitive</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderDescription.HullShaderPartitioning\">\n            <summary>\t\n            <dd> <p>The <strong>D3D11_TESSELLATOR_PARTITIONING</strong>, which represents the tessellator partitioning mode.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_DESC::HSPartitioning']/*\"/>\t\n            <msdn-id>ff476209</msdn-id>\t\n            <unmanaged>D3D_TESSELLATOR_PARTITIONING HSPartitioning</unmanaged>\t\n            <unmanaged-short>D3D_TESSELLATOR_PARTITIONING HSPartitioning</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderDescription.TessellatorDomain\">\n            <summary>\t\n            <dd> <p>The <strong>D3D11_TESSELLATOR_DOMAIN</strong>, which represents the tessellator domain.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_DESC::TessellatorDomain']/*\"/>\t\n            <msdn-id>ff476209</msdn-id>\t\n            <unmanaged>D3D_TESSELLATOR_DOMAIN TessellatorDomain</unmanaged>\t\n            <unmanaged-short>D3D_TESSELLATOR_DOMAIN TessellatorDomain</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderDescription.BarrierInstructions\">\n            <summary>\t\n            <dd> <p>Number of barrier instructions in a compute shader.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_DESC::cBarrierInstructions']/*\"/>\t\n            <msdn-id>ff476209</msdn-id>\t\n            <unmanaged>unsigned int cBarrierInstructions</unmanaged>\t\n            <unmanaged-short>unsigned int cBarrierInstructions</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderDescription.InterlockedInstructions\">\n            <summary>\t\n            <dd> <p>Number of interlocked instructions in a compute shader.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_DESC::cInterlockedInstructions']/*\"/>\t\n            <msdn-id>ff476209</msdn-id>\t\n            <unmanaged>unsigned int cInterlockedInstructions</unmanaged>\t\n            <unmanaged-short>unsigned int cInterlockedInstructions</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderDescription.TextureStoreInstructions\">\n            <summary>\t\n            <dd> <p>Number of texture writes in a compute shader.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_DESC::cTextureStoreInstructions']/*\"/>\t\n            <msdn-id>ff476209</msdn-id>\t\n            <unmanaged>unsigned int cTextureStoreInstructions</unmanaged>\t\n            <unmanaged-short>unsigned int cTextureStoreInstructions</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.D3DCompiler.ShaderParameterDescription\">\n            <summary>\t\n            <p>Describes a shader signature.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>A shader can take n inputs and can produce m outputs. The order of the input (or output) parameters, their associated types, and any attached semantics make up the shader signature. Each shader has an input and an output signature.</p><p>When compiling a shader or an effect, some API calls validate shader signatures  That is, they compare the output signature of one shader (like a vertex shader) with the input signature of another shader (like a pixel shader). This ensures that a shader outputs data that is compatible with a downstream shader that is consuming that data. Compatible means that a shader signature is a exact-match subset of the preceding shader stage. Exact match means parameter types and semantics must exactly match. Subset means that a parameter that is not required by a downstream stage, does not need to include that parameter in its shader signature.</p><p>Get a shader-signature from a shader or an effect by calling APIs such as <strong><see cref=\"M:SharpDX.D3DCompiler.ShaderReflection.GetInputParameterDescription(System.Int32)\"/></strong>. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SIGNATURE_PARAMETER_DESC']/*\"/>\t\n            <msdn-id>ff476215</msdn-id>\t\n            <unmanaged>D3D11_SIGNATURE_PARAMETER_DESC</unmanaged>\t\n            <unmanaged-short>D3D11_SIGNATURE_PARAMETER_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderParameterDescription.SemanticName\">\n            <summary>\t\n            <dd> <p>A per-parameter string that identifies how the data will be used. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SIGNATURE_PARAMETER_DESC::SemanticName']/*\"/>\t\n            <msdn-id>ff476215</msdn-id>\t\n            <unmanaged>const char* SemanticName</unmanaged>\t\n            <unmanaged-short>char SemanticName</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderParameterDescription.SemanticIndex\">\n            <summary>\t\n            <dd> <p>Semantic index that modifies the semantic. Used to differentiate different parameters that use the same semantic.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SIGNATURE_PARAMETER_DESC::SemanticIndex']/*\"/>\t\n            <msdn-id>ff476215</msdn-id>\t\n            <unmanaged>unsigned int SemanticIndex</unmanaged>\t\n            <unmanaged-short>unsigned int SemanticIndex</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderParameterDescription.Register\">\n            <summary>\t\n            <dd> <p>The register that will contain this variable's data.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SIGNATURE_PARAMETER_DESC::Register']/*\"/>\t\n            <msdn-id>ff476215</msdn-id>\t\n            <unmanaged>unsigned int Register</unmanaged>\t\n            <unmanaged-short>unsigned int Register</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderParameterDescription.SystemValueType\">\n            <summary>\t\n            <dd> <p>A predefined string that determines the functionality of certain pipeline stages. See <strong>D3D10_NAME</strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SIGNATURE_PARAMETER_DESC::SystemValueType']/*\"/>\t\n            <msdn-id>ff476215</msdn-id>\t\n            <unmanaged>D3D_NAME SystemValueType</unmanaged>\t\n            <unmanaged-short>D3D_NAME SystemValueType</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderParameterDescription.ComponentType\">\n            <summary>\t\n            <dd> <p>The per-component-data type that is stored in a register.  See <strong>D3D10_REGISTER_COMPONENT_TYPE</strong>. Each register can store up to four-components of data.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SIGNATURE_PARAMETER_DESC::ComponentType']/*\"/>\t\n            <msdn-id>ff476215</msdn-id>\t\n            <unmanaged>D3D_REGISTER_COMPONENT_TYPE ComponentType</unmanaged>\t\n            <unmanaged-short>D3D_REGISTER_COMPONENT_TYPE ComponentType</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderParameterDescription.UsageMask\">\n            <summary>\t\n            <dd> <p>Mask which indicates which components of a register are used.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SIGNATURE_PARAMETER_DESC::Mask']/*\"/>\t\n            <msdn-id>ff476215</msdn-id>\t\n            <unmanaged>D3D11_REGISTER_COMPONENT_MASK_FLAG Mask</unmanaged>\t\n            <unmanaged-short>D3D11_REGISTER_COMPONENT_MASK_FLAG Mask</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderParameterDescription.ReadWriteMask\">\n            <summary>\t\n            <dd> <p>Mask which indicates whether a given component is never written (if the signature is an output signature) or always read (if the signature is an input signature). </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SIGNATURE_PARAMETER_DESC::ReadWriteMask']/*\"/>\t\n            <msdn-id>ff476215</msdn-id>\t\n            <unmanaged>D3D11_REGISTER_COMPONENT_MASK_FLAG ReadWriteMask</unmanaged>\t\n            <unmanaged-short>D3D11_REGISTER_COMPONENT_MASK_FLAG ReadWriteMask</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderParameterDescription.Stream\">\n            <summary>\t\n            <dd> <p>Indicates which stream the geometry shader is using for the signature parameter.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SIGNATURE_PARAMETER_DESC::Stream']/*\"/>\t\n            <msdn-id>ff476215</msdn-id>\t\n            <unmanaged>unsigned int Stream</unmanaged>\t\n            <unmanaged-short>unsigned int Stream</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.D3DCompiler.ShaderTypeDescription\">\n            <summary>\t\n            <p>Describes a shader-variable type.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Get a shader-variable-type description by calling <strong><see cref=\"M:SharpDX.D3DCompiler.ShaderReflectionType.GetDescription(SharpDX.D3DCompiler.ShaderTypeDescription@)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_TYPE_DESC']/*\"/>\t\n            <msdn-id>ff476212</msdn-id>\t\n            <unmanaged>D3D11_SHADER_TYPE_DESC</unmanaged>\t\n            <unmanaged-short>D3D11_SHADER_TYPE_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderTypeDescription.Class\">\n            <summary>\t\n            <dd> <p>Identifies the variable class as one of scalar, vector, matrix or object.  See <strong>D3D10_SHADER_VARIABLE_CLASS</strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_TYPE_DESC::Class']/*\"/>\t\n            <msdn-id>ff476212</msdn-id>\t\n            <unmanaged>D3D_SHADER_VARIABLE_CLASS Class</unmanaged>\t\n            <unmanaged-short>D3D_SHADER_VARIABLE_CLASS Class</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderTypeDescription.Type\">\n            <summary>\t\n            <dd> <p>The variable type. See <strong>D3D10_SHADER_VARIABLE_TYPE</strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_TYPE_DESC::Type']/*\"/>\t\n            <msdn-id>ff476212</msdn-id>\t\n            <unmanaged>D3D_SHADER_VARIABLE_TYPE Type</unmanaged>\t\n            <unmanaged-short>D3D_SHADER_VARIABLE_TYPE Type</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderTypeDescription.RowCount\">\n            <summary>\t\n            <dd> <p>Number of rows in a matrix. Otherwise a numeric type returns 1, any other type returns 0.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_TYPE_DESC::Rows']/*\"/>\t\n            <msdn-id>ff476212</msdn-id>\t\n            <unmanaged>unsigned int Rows</unmanaged>\t\n            <unmanaged-short>unsigned int Rows</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderTypeDescription.ColumnCount\">\n            <summary>\t\n            <dd> <p>Number of columns in a matrix. Otherwise a numeric type returns 1, any other type returns 0.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_TYPE_DESC::Columns']/*\"/>\t\n            <msdn-id>ff476212</msdn-id>\t\n            <unmanaged>unsigned int Columns</unmanaged>\t\n            <unmanaged-short>unsigned int Columns</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderTypeDescription.ElementCount\">\n            <summary>\t\n            <dd> <p>Number of elements in an array; otherwise 0.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_TYPE_DESC::Elements']/*\"/>\t\n            <msdn-id>ff476212</msdn-id>\t\n            <unmanaged>unsigned int Elements</unmanaged>\t\n            <unmanaged-short>unsigned int Elements</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderTypeDescription.MemberCount\">\n            <summary>\t\n            <dd> <p>Number of members in the structure; otherwise 0.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_TYPE_DESC::Members']/*\"/>\t\n            <msdn-id>ff476212</msdn-id>\t\n            <unmanaged>unsigned int Members</unmanaged>\t\n            <unmanaged-short>unsigned int Members</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderTypeDescription.Offset\">\n            <summary>\t\n            <dd> <p>Offset, in bytes, between the start of the parent structure and this variable.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_TYPE_DESC::Offset']/*\"/>\t\n            <msdn-id>ff476212</msdn-id>\t\n            <unmanaged>unsigned int Offset</unmanaged>\t\n            <unmanaged-short>unsigned int Offset</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderTypeDescription.Name\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_TYPE_DESC::Name']/*\"/>\t\n            <unmanaged>const char* Name</unmanaged>\t\n            <unmanaged-short>char Name</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.D3DCompiler.ShaderVariableDescription\">\n            <summary>\t\n            <p>Describes a shader variable.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Get a shader-variable description using reflection by calling <strong><see cref=\"M:SharpDX.D3DCompiler.ShaderReflectionVariable.GetDescription(SharpDX.D3DCompiler.ShaderVariableDescription@)\"/></strong>.</p><p>As of the June 2010 update, <strong>DefaultValue</strong> emits default values for reflection. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_VARIABLE_DESC']/*\"/>\t\n            <msdn-id>ff476213</msdn-id>\t\n            <unmanaged>D3D11_SHADER_VARIABLE_DESC</unmanaged>\t\n            <unmanaged-short>D3D11_SHADER_VARIABLE_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderVariableDescription.Name\">\n            <summary>\t\n            <dd> <p>The variable name.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_VARIABLE_DESC::Name']/*\"/>\t\n            <msdn-id>ff476213</msdn-id>\t\n            <unmanaged>const char* Name</unmanaged>\t\n            <unmanaged-short>char Name</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderVariableDescription.StartOffset\">\n            <summary>\t\n            <dd> <p>Offset from the start of the parent structure to the beginning of the variable.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_VARIABLE_DESC::StartOffset']/*\"/>\t\n            <msdn-id>ff476213</msdn-id>\t\n            <unmanaged>unsigned int StartOffset</unmanaged>\t\n            <unmanaged-short>unsigned int StartOffset</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderVariableDescription.Size\">\n            <summary>\t\n            <dd> <p>Size of the variable (in bytes).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_VARIABLE_DESC::Size']/*\"/>\t\n            <msdn-id>ff476213</msdn-id>\t\n            <unmanaged>unsigned int Size</unmanaged>\t\n            <unmanaged-short>unsigned int Size</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderVariableDescription.Flags\">\n            <summary>\t\n            <dd> <p>A combination of <strong><see cref=\"T:SharpDX.D3DCompiler.ShaderVariableFlags\"/></strong>-typed values that are combined by using a bitwise OR operation. The resulting value identifies shader-variable properties.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_VARIABLE_DESC::uFlags']/*\"/>\t\n            <msdn-id>ff476213</msdn-id>\t\n            <unmanaged>D3D_SHADER_VARIABLE_FLAGS uFlags</unmanaged>\t\n            <unmanaged-short>D3D_SHADER_VARIABLE_FLAGS uFlags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderVariableDescription.DefaultValue\">\n            <summary>\t\n            <dd> <p>The default value for initializing the variable.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_VARIABLE_DESC::DefaultValue']/*\"/>\t\n            <msdn-id>ff476213</msdn-id>\t\n            <unmanaged>void* DefaultValue</unmanaged>\t\n            <unmanaged-short>void DefaultValue</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderVariableDescription.StartTexture\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_VARIABLE_DESC::StartTexture']/*\"/>\t\n            <unmanaged>unsigned int StartTexture</unmanaged>\t\n            <unmanaged-short>unsigned int StartTexture</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderVariableDescription.TextureSize\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_VARIABLE_DESC::TextureSize']/*\"/>\t\n            <unmanaged>unsigned int TextureSize</unmanaged>\t\n            <unmanaged-short>unsigned int TextureSize</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderVariableDescription.StartSampler\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_VARIABLE_DESC::StartSampler']/*\"/>\t\n            <unmanaged>unsigned int StartSampler</unmanaged>\t\n            <unmanaged-short>unsigned int StartSampler</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderVariableDescription.SamplerSize\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_VARIABLE_DESC::SamplerSize']/*\"/>\t\n            <unmanaged>unsigned int SamplerSize</unmanaged>\t\n            <unmanaged-short>unsigned int SamplerSize</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.D3DCompiler.ShaderBytecode\">\n            <summary>\n              Represents the compiled bytecode of a shader or effect.\n            </summary>\n            <unmanaged>Blob</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.D3DCompiler.ShaderBytecode.Effect10\">\n            <summary>\n            Use this ShaderFlags constant in order to compile an effect with old D3D10CompileEffectFromMemory.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderBytecode.#ctor(SharpDX.DataStream)\">\n            <summary>\n              Initializes a new instance of the <see cref = \"T:SharpDX.D3DCompiler.ShaderBytecode\" /> class.\n            </summary>\n            <param name = \"data\">A <see cref = \"T:SharpDX.DataStream\" /> containing the compiled bytecode.</param>\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderBytecode.#ctor(System.IO.Stream)\">\n            <summary>\n              Initializes a new instance of the <see cref = \"T:SharpDX.D3DCompiler.ShaderBytecode\" /> class.\n            </summary>\n            <param name = \"data\">A <see cref = \"T:System.IO.Stream\" /> containing the compiled bytecode.</param>\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderBytecode.#ctor(System.Byte[])\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.D3DCompiler.ShaderBytecode\"/> class.\n            </summary>\n            <param name=\"buffer\">The buffer.</param>\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderBytecode.#ctor(System.IntPtr,System.Int32)\">\n            <summary>\n              Initializes a new instance of the <see cref = \"T:SharpDX.D3DCompiler.ShaderBytecode\" /> class.\n            </summary>\n            <param name = \"buffer\">a pointer to a compiler bytecode</param>\n            <param name = \"sizeInBytes\">size of the bytecode</param>\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderBytecode.#ctor(SharpDX.Direct3D.Blob)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.D3DCompiler.ShaderBytecode\"/> class.\n            </summary>\n            <param name=\"blob\">The BLOB.</param>\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderBytecode.Compile(System.String,System.String,SharpDX.D3DCompiler.ShaderFlags,SharpDX.D3DCompiler.EffectFlags,System.String)\">\n            <summary>\n            Compiles the provided shader or effect source.\n            </summary>\n            <param name=\"shaderSource\">A string containing the source of the shader or effect to compile.</param>\n            <param name=\"profile\">The shader target or set of shader features to compile against.</param>\n            <param name=\"shaderFlags\">Shader compilation options.</param>\n            <param name=\"effectFlags\">Effect compilation options.</param>\n            <param name=\"sourceFileName\">Name of the source file.</param>\n            <returns>\n            The compiled shader bytecode, or <c>null</c> if the method fails.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderBytecode.Compile(System.Byte[],System.String,SharpDX.D3DCompiler.ShaderFlags,SharpDX.D3DCompiler.EffectFlags,System.String)\">\n            <summary>\n            Compiles the provided shader or effect source.\n            </summary>\n            <param name=\"shaderSource\">An array of bytes containing the raw source of the shader or effect to compile.</param>\n            <param name=\"profile\">The shader target or set of shader features to compile against.</param>\n            <param name=\"shaderFlags\">Shader compilation options.</param>\n            <param name=\"effectFlags\">Effect compilation options.</param>\n            <param name=\"sourceFileName\">Name of the source file.</param>\n            <returns>\n            The compiled shader bytecode, or <c>null</c> if the method fails.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderBytecode.Compile(System.String,System.String,System.String,SharpDX.D3DCompiler.ShaderFlags,SharpDX.D3DCompiler.EffectFlags,System.String)\">\n            <summary>\n            Compiles the provided shader or effect source.\n            </summary>\n            <param name=\"shaderSource\">A string containing the source of the shader or effect to compile.</param>\n            <param name=\"entryPoint\">The name of the shader entry-point function, or <c>null</c> for an effect file.</param>\n            <param name=\"profile\">The shader target or set of shader features to compile against.</param>\n            <param name=\"shaderFlags\">Shader compilation options.</param>\n            <param name=\"effectFlags\">Effect compilation options.</param>\n            <param name=\"sourceFileName\">Name of the source file.</param>\n            <returns>\n            The compiled shader bytecode, or <c>null</c> if the method fails.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderBytecode.Compile(System.Byte[],System.String,System.String,SharpDX.D3DCompiler.ShaderFlags,SharpDX.D3DCompiler.EffectFlags,System.String)\">\n            <summary>\n              Compiles the provided shader or effect source.\n            </summary>\n            <param name = \"shaderSource\">An array of bytes containing the raw source of the shader or effect to compile.</param>\n            <param name = \"entryPoint\">The name of the shader entry-point function, or <c>null</c> for an effect file.</param>\n            <param name = \"profile\">The shader target or set of shader features to compile against.</param>\n            <param name = \"shaderFlags\">Shader compilation options.</param>\n            <param name = \"effectFlags\">Effect compilation options.</param>\n            <returns>The compiled shader bytecode, or <c>null</c> if the method fails.</returns>\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderBytecode.Compile(System.String,System.String,SharpDX.D3DCompiler.ShaderFlags,SharpDX.D3DCompiler.EffectFlags,SharpDX.Direct3D.ShaderMacro[],SharpDX.D3DCompiler.Include,System.String)\">\n            <summary>\n            Compiles the provided shader or effect source.\n            </summary>\n            <param name=\"shaderSource\">A string containing the source of the shader or effect to compile.</param>\n            <param name=\"profile\">The shader target or set of shader features to compile against.</param>\n            <param name=\"shaderFlags\">Shader compilation options.</param>\n            <param name=\"effectFlags\">Effect compilation options.</param>\n            <param name=\"defines\">A set of macros to define during compilation.</param>\n            <param name=\"include\">An interface for handling include files.</param>\n            <param name=\"compilationErrors\">When the method completes, contains a string of compilation errors, or an empty string if compilation succeeded.</param>\n            <param name=\"sourceFileName\">Name of the source file.</param>\n            <returns>\n            The compiled shader bytecode, or <c>null</c> if the method fails.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderBytecode.Compile(System.Byte[],System.String,SharpDX.D3DCompiler.ShaderFlags,SharpDX.D3DCompiler.EffectFlags,SharpDX.Direct3D.ShaderMacro[],SharpDX.D3DCompiler.Include,System.String)\">\n            <summary>\n            Compiles the provided shader or effect source.\n            </summary>\n            <param name=\"shaderSource\">An array of bytes containing the raw source of the shader or effect to compile.</param>\n            <param name=\"profile\">The shader target or set of shader features to compile against.</param>\n            <param name=\"shaderFlags\">Shader compilation options.</param>\n            <param name=\"effectFlags\">Effect compilation options.</param>\n            <param name=\"defines\">A set of macros to define during compilation.</param>\n            <param name=\"include\">An interface for handling include files.</param>\n            <param name=\"sourceFileName\">Name of the source file.</param>\n            <returns>\n            The compiled shader bytecode, or <c>null</c> if the method fails.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderBytecode.Compile(System.String,System.String,System.String,SharpDX.D3DCompiler.ShaderFlags,SharpDX.D3DCompiler.EffectFlags,SharpDX.Direct3D.ShaderMacro[],SharpDX.D3DCompiler.Include,System.String)\">\n            <summary>\n            Compiles the provided shader or effect source.\n            </summary>\n            <param name=\"shaderSource\">A string containing the source of the shader or effect to compile.</param>\n            <param name=\"entryPoint\">The name of the shader entry-point function, or <c>null</c> for an effect file.</param>\n            <param name=\"profile\">The shader target or set of shader features to compile against.</param>\n            <param name=\"shaderFlags\">Shader compilation options.</param>\n            <param name=\"effectFlags\">Effect compilation options.</param>\n            <param name=\"defines\">A set of macros to define during compilation.</param>\n            <param name=\"include\">An interface for handling include files.</param>\n            <param name=\"compilationErrors\">When the method completes, contains a string of compilation errors, or an empty string if compilation succeeded.</param>\n            <param name=\"sourceFileName\">Name of the source file.</param>\n            <returns>\n            The compiled shader bytecode, or <c>null</c> if the method fails.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderBytecode.CompileFromFile(System.String,System.String,SharpDX.D3DCompiler.ShaderFlags,SharpDX.D3DCompiler.EffectFlags,SharpDX.Direct3D.ShaderMacro[],SharpDX.D3DCompiler.Include)\">\n            <summary>\n              Compiles a shader or effect from a file on disk.\n            </summary>\n            <param name = \"fileName\">The name of the source file to compile.</param>\n            <param name = \"profile\">The shader target or set of shader features to compile against.</param>\n            <param name = \"shaderFlags\">Shader compilation options.</param>\n            <param name = \"effectFlags\">Effect compilation options.</param>\n            <param name = \"defines\">A set of macros to define during compilation.</param>\n            <param name = \"include\">An interface for handling include files.</param>\n            <param name = \"compilationErrors\">When the method completes, contains a string of compilation errors, or an empty string if compilation succeeded.</param>\n            <returns>The compiled shader bytecode, or <c>null</c> if the method fails.</returns>\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderBytecode.CompileFromFile(System.String,System.String,System.String,SharpDX.D3DCompiler.ShaderFlags,SharpDX.D3DCompiler.EffectFlags,SharpDX.Direct3D.ShaderMacro[],SharpDX.D3DCompiler.Include)\">\n            <summary>\n            Compiles a shader or effect from a file on disk.\n            </summary>\n            <param name=\"fileName\">The name of the source file to compile.</param>\n            <param name=\"entryPoint\">The name of the shader entry-point function, or <c>null</c> for an effect file.</param>\n            <param name=\"profile\">The shader target or set of shader features to compile against.</param>\n            <param name=\"shaderFlags\">Shader compilation options.</param>\n            <param name=\"effectFlags\">Effect compilation options.</param>\n            <param name=\"defines\">A set of macros to define during compilation.</param>\n            <param name=\"include\">An interface for handling include files.</param>\n            <returns>\n            The compiled shader bytecode, or <c>null</c> if the method fails.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderBytecode.Compile(System.Byte[],System.String,System.String,SharpDX.D3DCompiler.ShaderFlags,SharpDX.D3DCompiler.EffectFlags,SharpDX.Direct3D.ShaderMacro[],SharpDX.D3DCompiler.Include,System.String)\">\n            <summary>\n            Compiles the provided shader or effect source.\n            </summary>\n            <param name=\"shaderSource\">An array of bytes containing the raw source of the shader or effect to compile.</param>\n            <param name=\"entryPoint\">The name of the shader entry-point function, or <c>null</c> for an effect file.</param>\n            <param name=\"profile\">The shader target or set of shader features to compile against.</param>\n            <param name=\"shaderFlags\">Shader compilation options.</param>\n            <param name=\"effectFlags\">Effect compilation options.</param>\n            <param name=\"defines\">A set of macros to define during compilation.</param>\n            <param name=\"include\">An interface for handling include files.</param>\n            <param name=\"sourceFileName\">Name of the source file used for reporting errors. Default is \"unknown\"</param>\n            <returns>\n            The compiled shader bytecode, or <c>null</c> if the method fails.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderBytecode.Save(System.String)\">\n            <summary>\n            Saves to the specified file name.\n            </summary>\n            <param name=\"fileName\">Name of the file.</param>\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderBytecode.Compress(SharpDX.D3DCompiler.ShaderBytecode[])\">\n            <summary>\t\n            Compresses a set of shaders into a more compact form. \t\n            </summary>\t\n            <param name=\"shaderBytecodes\">An array of <see cref=\"T:SharpDX.D3DCompiler.ShaderBytecode\"/> structures that describe the set of shaders to compress. </param>\n            <returns>A compressed <see cref=\"T:SharpDX.D3DCompiler.ShaderBytecode\"/>. </returns>\n            <unmanaged>HRESULT D3DCompressShaders([In] int uNumShaders,[In, Buffer] D3D_SHADER_DATA* pShaderData,[In] int uFlags,[Out] ID3DBlob** ppCompressedData)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderBytecode.Decompress\">\n            <summary>\t\n            Decompresses all shaders from a compressed set.\t\n            </summary>\t\n            <returns>Returns an array of decompresss shader bytecode.</returns>\t\n            <unmanaged>HRESULT D3DDecompressShaders([In, Buffer] const void* pSrcData,[In] SIZE_T SrcDataSize,[In] unsigned int uNumShaders,[In] unsigned int uStartIndex,[In, Buffer, Optional] unsigned int* pIndices,[In] unsigned int uFlags,[Out, Buffer] ID3D10Blob** ppShaders,[Out, Optional] unsigned int* pTotalShaders)</unmanaged>\t\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderBytecode.Decompress(System.Int32,System.Int32)\">\n            <summary>\t\n            Decompresses one or more shaders from a compressed set.\t\n            </summary>\t\n            <param name=\"numShaders\"><para>The number of shaders to decompress.</para></param>\t\n            <param name=\"startIndex\"><para>The index of the first shader to decompress.</para></param>\t\n            <returns>Returns an array of decompresss shader bytecode.</returns>\t\n            <unmanaged>HRESULT D3DDecompressShaders([In, Buffer] const void* pSrcData,[In] SIZE_T SrcDataSize,[In] unsigned int uNumShaders,[In] unsigned int uStartIndex,[In, Buffer, Optional] unsigned int* pIndices,[In] unsigned int uFlags,[Out, Buffer] ID3D10Blob** ppShaders,[Out, Optional] unsigned int* pTotalShaders)</unmanaged>\t\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderBytecode.Decompress(System.Int32[])\">\n            <summary>\t\n            Decompresses one or more shaders from a compressed set.\t\n            </summary>\t\n            <param name=\"indices\"><para>An array of indexes that represent the shaders to decompress.</para></param>\t\n            <returns>Returns an array of decompresss shader bytecode.</returns>\t\n            <unmanaged>HRESULT D3DDecompressShaders([In, Buffer] const void* pSrcData,[In] SIZE_T SrcDataSize,[In] unsigned int uNumShaders,[In] unsigned int uStartIndex,[In, Buffer, Optional] unsigned int* pIndices,[In] unsigned int uFlags,[Out, Buffer] ID3D10Blob** ppShaders,[Out, Optional] unsigned int* pTotalShaders)</unmanaged>\t\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderBytecode.Disassemble\">\n            <summary>\n              Disassembles compiled HLSL code back into textual source.\n            </summary>\n            <returns>The textual source of the shader or effect.</returns>\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderBytecode.Disassemble(SharpDX.D3DCompiler.DisassemblyFlags)\">\n            <summary>\n              Disassembles compiled HLSL code back into textual source.\n            </summary>\n            <param name = \"flags\">Flags affecting the output of the disassembly.</param>\n            <returns>The textual source of the shader or effect.</returns>\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderBytecode.Disassemble(SharpDX.D3DCompiler.DisassemblyFlags,System.String)\">\n            <summary>\n              Disassembles compiled HLSL code back into textual source.\n            </summary>\n            <param name = \"flags\">Flags affecting the output of the disassembly.</param>\n            <param name = \"comments\">Commenting information to embed in the disassembly.</param>\n            <returns>The textual source of the shader or effect.</returns>\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderBytecode.GetPart(SharpDX.D3DCompiler.ShaderBytecodePart)\">\n            <summary>\t\n            Retrieves a specific part from a compilation result.\t\n            </summary>\t\n            <remarks>\t\n            D3DGetBlobPart retrieves the part of a blob (arbitrary length data buffer) that contains the type of data that the  Part parameter specifies. \t\n            </remarks>\t\n            <param name=\"part\">A <see cref=\"T:SharpDX.D3DCompiler.ShaderBytecodePart\"/>-typed value that specifies the part of the buffer to retrieve. </param>\n            <returns>Returns the extracted part. </returns>\n            <unmanaged>HRESULT D3DGetBlobPart([In, Buffer] const void* pSrcData,[In] SIZE_T SrcDataSize,[In] D3D_BLOB_PART Part,[In] int Flags,[Out] ID3DBlob** ppPart)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderBytecode.Load(System.IO.Stream)\">\n            <summary>\n            Loads from the specified stream.\n            </summary>\n            <param name=\"stream\">The stream.</param>\n            <returns>A shader bytecode</returns>\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderBytecode.Save(System.IO.Stream)\">\n            <summary>\n            Saves this bycode to the specified stream.\n            </summary>\n            <param name=\"stream\">The stream.</param>\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderBytecode.Preprocess(System.String,SharpDX.Direct3D.ShaderMacro[],SharpDX.D3DCompiler.Include,System.String)\">\n            <summary>\n              Preprocesses the provided shader or effect source.\n            </summary>\n            <param name = \"shaderSource\">A string containing the source of the shader or effect to preprocess.</param>\n            <param name = \"defines\">A set of macros to define during preprocessing.</param>\n            <param name = \"include\">An interface for handling include files.</param>\n            <returns>The preprocessed shader source.</returns>\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderBytecode.Preprocess(System.Byte[],SharpDX.Direct3D.ShaderMacro[],SharpDX.D3DCompiler.Include,System.String)\">\n            <summary>\n              Preprocesses the provided shader or effect source.\n            </summary>\n            <param name = \"shaderSource\">An array of bytes containing the raw source of the shader or effect to preprocess.</param>\n            <param name = \"defines\">A set of macros to define during preprocessing.</param>\n            <param name = \"include\">An interface for handling include files.</param>\n            <returns>The preprocessed shader source.</returns>\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderBytecode.Preprocess(System.Byte[],SharpDX.Direct3D.ShaderMacro[],SharpDX.D3DCompiler.Include,System.String@,System.String)\">\n            <summary>\n              Preprocesses the provided shader or effect source.\n            </summary>\n            <param name = \"shaderSource\">An array of bytes containing the raw source of the shader or effect to preprocess.</param>\n            <param name = \"defines\">A set of macros to define during preprocessing.</param>\n            <param name = \"include\">An interface for handling include files.</param>\n            <param name = \"compilationErrors\">When the method completes, contains a string of compilation errors, or an empty string if preprocessing succeeded.</param>\n            <returns>The preprocessed shader source.</returns>\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderBytecode.Preprocess(System.IntPtr,System.Int32,SharpDX.Direct3D.ShaderMacro[],SharpDX.D3DCompiler.Include,System.String@,System.String)\">\n            <summary>\n              Preprocesses the provided shader or effect source.\n            </summary>\n            <param name = \"shaderSource\">An array of bytes containing the raw source of the shader or effect to preprocess.</param>\n            <param name = \"defines\">A set of macros to define during preprocessing.</param>\n            <param name = \"include\">An interface for handling include files.</param>\n            <param name = \"compilationErrors\">When the method completes, contains a string of compilation errors, or an empty string if preprocessing succeeded.</param>\n            <returns>The preprocessed shader source.</returns>\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderBytecode.Preprocess(System.String,SharpDX.Direct3D.ShaderMacro[],SharpDX.D3DCompiler.Include,System.String@,System.String)\">\n            <summary>\n              Preprocesses the provided shader or effect source.\n            </summary>\n            <param name = \"shaderSource\">A string containing the source of the shader or effect to preprocess.</param>\n            <param name = \"defines\">A set of macros to define during preprocessing.</param>\n            <param name = \"include\">An interface for handling include files.</param>\n            <param name = \"compilationErrors\">When the method completes, contains a string of compilation errors, or an empty string if preprocessing succeeded.</param>\n            <returns>The preprocessed shader source.</returns>\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderBytecode.PreprocessFromFile(System.String)\">\n            <summary>\n              Preprocesses a shader or effect from a file on disk.\n            </summary>\n            <param name = \"fileName\">The name of the source file to compile.</param>\n            <returns>The preprocessed shader source.</returns>\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderBytecode.PreprocessFromFile(System.String,SharpDX.Direct3D.ShaderMacro[],SharpDX.D3DCompiler.Include)\">\n            <summary>\n              Preprocesses a shader or effect from a file on disk.\n            </summary>\n            <param name = \"fileName\">The name of the source file to compile.</param>\n            <param name = \"defines\">A set of macros to define during preprocessing.</param>\n            <param name = \"include\">An interface for handling include files.</param>\n            <returns>The preprocessed shader source.</returns>\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderBytecode.PreprocessFromFile(System.String,SharpDX.Direct3D.ShaderMacro[],SharpDX.D3DCompiler.Include,System.String@)\">\n            <summary>\n              Preprocesses a shader or effect from a file on disk.\n            </summary>\n            <param name = \"fileName\">The name of the source file to compile.</param>\n            <param name = \"defines\">A set of macros to define during preprocessing.</param>\n            <param name = \"include\">An interface for handling include files.</param>\n            <param name = \"compilationErrors\">When the method completes, contains a string of compilation errors, or an empty string if preprocessing succeeded.</param>\n            <returns>The preprocessed shader source.</returns>\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderBytecode.Strip(SharpDX.D3DCompiler.StripFlags)\">\n            <summary>\n              Strips extraneous information from a compiled shader or effect.\n            </summary>\n            <param name = \"flags\">Options specifying what to remove from the shader.</param>\n            <returns>A string containing any errors that may have occurred.</returns>\n            <unmanaged>HRESULT D3DStripShader([In, Buffer] const void* pShaderBytecode,[In] SIZE_T BytecodeLength,[In] D3DCOMPILER_STRIP_FLAGS uStripFlags,[Out] ID3D10Blob** ppStrippedBlob)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderBytecode.op_Implicit(SharpDX.D3DCompiler.ShaderBytecode)~System.Byte[]\">\n            <summary>\n            Cast this <see cref=\"T:SharpDX.D3DCompiler.ShaderBytecode\"/> to the underlying byte buffer.\n            </summary>\n            <param name=\"shaderBytecode\"></param>\n            <returns>A byte buffer</returns>\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderBytecode.FromStream(System.IO.Stream)\">\n            <summary>\n              Read a compiled shader bytecode from a Stream and return a ShaderBytecode\n            </summary>\n            <param name = \"stream\"></param>\n            <returns></returns>\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderBytecode.FromFile(System.String)\">\n            <summary>\n              Read a compiled shader bytecode from a Stream and return a ShaderBytecode\n            </summary>\n            <param name = \"fileName\"></param>\n            <returns></returns>\n        </member>\n        <member name=\"P:SharpDX.D3DCompiler.ShaderBytecode.Data\">\n            <summary>\n            Gets the buffer pointer.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.D3DCompiler.ShaderBytecode.IsCompressed\">\n            <summary>\n            Gets this instance is composed of compressed shaders.\n            </summary>\n            <value>\n                <c>true</c> if this instance is compressed; otherwise, <c>false</c>.\n            </value>\n        </member>\n        <member name=\"T:SharpDX.D3DCompiler.ShaderSignature\">\n            <summary>\n              Represents a shader signature.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderSignature.#ctor(System.IntPtr,System.Int32)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.D3DCompiler.ShaderSignature\"/> class.\n            </summary>\n            <param name=\"ptr\">A pointer to a shader signature bytecode.</param>\n            <param name=\"size\">The size.</param>\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderSignature.#ctor(SharpDX.Direct3D.Blob)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.D3DCompiler.ShaderSignature\"/> class.\n            </summary>\n            <param name=\"blob\">The BLOB.</param>\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderSignature.#ctor(SharpDX.DataStream)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.D3DCompiler.ShaderSignature\"/> class.\n            </summary>\n            <param name=\"data\">The data.</param>\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderSignature.#ctor(System.Byte[])\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.D3DCompiler.ShaderSignature\"/> class.\n            </summary>\n            <param name=\"data\">The data.</param>\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderSignature.GetInputOutputSignature(System.Byte[])\">\n            <summary>\n              Extracts the input and output signatures from a compiled shader or effect.\n            </summary>\n            <param name = \"shaderBytecode\">The bytecode of the compiled shader or effect.</param>\n            <returns>The input and output signatures of the shader or effect.</returns>\n            <msdn-id>dd607329</msdn-id>\t\n            <unmanaged>HRESULT D3DGetInputAndOutputSignatureBlob([In, Buffer] const void* pSrcData,[In] SIZE_T SrcDataSize,[Out] ID3D10Blob** ppSignatureBlob)</unmanaged>\t\n            <unmanaged-short>D3DGetInputAndOutputSignatureBlob</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderSignature.GetInputSignature(System.Byte[])\">\n            <summary>\n              Extracts the input signature from a compiled shader or effect.\n            </summary>\n            <param name = \"shaderBytecode\">The bytecode of the compiled shader or effect.</param>\n            <returns>The input signature of the shader or effect.</returns>\n            <msdn-id>dd607330</msdn-id>\t\n            <unmanaged>HRESULT D3DGetInputSignatureBlob([In, Buffer] const void* pSrcData,[In] SIZE_T SrcDataSize,[Out] ID3D10Blob** ppSignatureBlob)</unmanaged>\t\n            <unmanaged-short>D3DGetInputSignatureBlob</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderSignature.GetOutputSignature(System.Byte[])\">\n            <summary>\n              Extracts the output signature from a compiled shader or effect.\n            </summary>\n            <param name = \"shaderBytecode\">The bytecode of the compiled shader or effect.</param>\n            <returns>The output signature of the shader or effect.</returns>\n            <unmanaged>HRESULT D3DGetOutputSignatureBlob([In, Buffer] const void* pSrcData,[In] SIZE_T SrcDataSize,[Out] ID3D10Blob** ppSignatureBlob)</unmanaged>\n            <msdn-id>dd607331</msdn-id>\t\n            <unmanaged>HRESULT D3DGetOutputSignatureBlob([In, Buffer] const void* pSrcData,[In] SIZE_T SrcDataSize,[Out] ID3D10Blob** ppSignatureBlob)</unmanaged>\t\n            <unmanaged-short>D3DGetOutputSignatureBlob</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.D3DCompiler.ShaderSignature.op_Implicit(SharpDX.D3DCompiler.ShaderSignature)~System.Byte[]\">\n            <summary>\n            Cast this <see cref=\"T:SharpDX.D3DCompiler.ShaderSignature\"/> to the underlying byte buffer.\n            </summary>\n            <param name=\"shaderSignature\"></param>\n            <returns>A byte buffer</returns>\n        </member>\n        <member name=\"P:SharpDX.D3DCompiler.ShaderSignature.Data\">\n            <summary>\n              Gets the raw data of the shader signature.\n            </summary>\n        </member>\n    </members>\n</doc>\n"
  },
  {
    "path": "3rd/SharpDX/SharpDX.DXGI.xml",
    "content": "<?xml version=\"1.0\"?>\n<doc>\n    <assembly>\n        <name>SharpDX.DXGI</name>\n    </assembly>\n    <members>\n        <member name=\"T:SharpDX.DXGI.Adapter\">\n            <summary>\t\n            <p>The  <strong><see cref=\"T:SharpDX.DXGI.Adapter\"/></strong> interface represents a display sub-system (including one or more GPU's, DACs and video memory).</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>A display sub-system is often referred to as a video card, however, on some machines the display sub-system is part of the mother board.</p><p>To enumerate the display sub-systems, use <strong><see cref=\"M:SharpDX.DXGI.Factory.GetAdapter(System.Int32)\"/></strong>. To get an interface to the adapter for a particular device, use <strong><see cref=\"M:SharpDX.DXGI.Device.GetAdapter(SharpDX.DXGI.Adapter@)\"/></strong>. To create a software adapter, use <strong><see cref=\"M:SharpDX.DXGI.Factory.CreateSoftwareAdapter(System.Reflection.Module)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGIAdapter']/*\"/>\t\n            <msdn-id>bb174523</msdn-id>\t\n            <unmanaged>IDXGIAdapter</unmanaged>\t\n            <unmanaged-short>IDXGIAdapter</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DXGI.DXGIObject\">\n            <summary>\t\n            <p>An <strong><see cref=\"T:SharpDX.DXGI.DXGIObject\"/></strong> interface is a base interface for all DXGI objects; <strong><see cref=\"T:SharpDX.DXGI.DXGIObject\"/></strong> supports associating caller-defined (private data) with an object and retrieval of an interface to the parent object.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p><strong><see cref=\"T:SharpDX.DXGI.DXGIObject\"/></strong> implements base class functionality for several other interfaces: <strong><see cref=\"T:SharpDX.DXGI.Adapter\"/></strong>, <strong><see cref=\"T:SharpDX.DXGI.Device\"/></strong>, <strong><see cref=\"T:SharpDX.DXGI.Factory\"/></strong>, <strong><see cref=\"T:SharpDX.DXGI.Output\"/></strong> </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGIObject']/*\"/>\t\n            <msdn-id>bb174541</msdn-id>\t\n            <unmanaged>IDXGIObject</unmanaged>\t\n            <unmanaged-short>IDXGIObject</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.DXGIObject.GetParent``1\">\n            <summary>\n            Gets the parent of the object.\n            </summary>\n            <typeparam name=\"T\">Type of the parent object</typeparam>\n            <returns>Returns the parent object based on the GUID of the type of the parent object.</returns>\n            <msdn-id>bb174542</msdn-id>\n            <unmanaged>HRESULT IDXGIObject::GetParent([In] const GUID&amp; riid,[Out] void** ppParent)</unmanaged>\n            <unmanaged-short>IDXGIObject::GetParent</unmanaged-short>\n        </member>\n        <member name=\"M:SharpDX.DXGI.DXGIObject.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DXGI.DXGIObject\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.DXGIObject.op_Explicit(System.IntPtr)~SharpDX.DXGI.DXGIObject\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.DXGI.DXGIObject\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.DXGI.DXGIObject.SetPrivateData(System.Guid,System.Int32,System.IntPtr)\">\n            <summary>\t\n            <p>Sets application-defined data to the object and associates that data with a <see cref=\"T:System.Guid\"/>.</p>\t\n            </summary>\t\n            <param name=\"name\"><dd>  <p>A <see cref=\"T:System.Guid\"/> that identifies the data. Use this <see cref=\"T:System.Guid\"/> in a call to <strong>GetPrivateData</strong> to get the data.</p> </dd></param>\t\n            <param name=\"dataSize\"><dd>  <p>The size of the object's data.</p> </dd></param>\t\n            <param name=\"dataRef\"><dd>  <p>A reference to the object's data.</p> </dd></param>\t\n            <returns><p>Returns one of the DXGI_ERROR values.</p></returns>\t\n            <remarks>\t\n            <p><strong>SetPrivateData</strong> makes a copy of the specified data and stores it with the object.</p><p>Private data that <strong>SetPrivateData</strong> stores in the object occupies the same storage space as private data that is stored by associated Direct3D objects (for example, by a Microsoft Direct3D?11 device through <strong><see cref=\"!:SharpDX.Direct3D11.Device.SetPrivateData\"/></strong> or by a Direct3D?11 child device through <strong><see cref=\"!:SharpDX.Direct3D11.DeviceChild.SetPrivateData\"/></strong>).</p><p>The debug layer reports memory leaks by outputting a list of object interface references along with their friendly names. The default friendly name is \"&lt;unnamed&gt;\". You can set the friendly name so that you can determine if the corresponding object interface reference caused the leak. To set the friendly name, use the <strong>SetPrivateData</strong> method and the well-known private data <see cref=\"T:System.Guid\"/> (<strong><see cref=\"F:SharpDX.Direct3D.CommonGuid.DebugObjectName\"/></strong>) that is in D3Dcommon.h. For example, to give pContext a friendly name of <em>My name</em>, use the following code:</p><pre><code> static const char c_szName[] = \"My name\";\t\n            hr = pContext-&gt;SetPrivateData( <see cref=\"F:SharpDX.Direct3D.CommonGuid.DebugObjectName\"/>, sizeof( c_szName ) - 1, c_szName );\t\n            </code></pre><p>You can use <strong><see cref=\"F:SharpDX.Direct3D.CommonGuid.DebugObjectName\"/></strong> to track down memory leaks and understand performance characteristics of your applications. This information is reflected in the output of the debug layer that is related to memory leaks (<strong><see cref=\"!:SharpDX.Direct3D11.DeviceDebug.ReportLiveDeviceObjects\"/></strong>) and with the event tracing for Windows events that we've added to Windows Developer Preview.\t\n            </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGIObject::SetPrivateData']/*\"/>\t\n            <msdn-id>bb174544</msdn-id>\t\n            <unmanaged>HRESULT IDXGIObject::SetPrivateData([In] const GUID&amp; Name,[In] unsigned int DataSize,[In, Buffer] const void* pData)</unmanaged>\t\n            <unmanaged-short>IDXGIObject::SetPrivateData</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.DXGIObject.SetPrivateDataInterface(System.Guid,SharpDX.ComObject)\">\n            <summary>\t\n            <p>Set an interface in the object's private data.</p>\t\n            </summary>\t\n            <param name=\"name\"><dd>  <p>A <see cref=\"T:System.Guid\"/> identifying the interface.</p> </dd></param>\t\n            <param name=\"unknownRef\"><dd>  <p>The interface to set.</p> </dd></param>\t\n            <returns><p>Returns one of the following DXGI_ERROR.</p></returns>\t\n            <remarks>\t\n            <p>This API associates an interface reference with the object.</p><p>When the interface is set its reference count is incremented. When the data are overwritten (by calling SPD or SPDI with the same <see cref=\"T:System.Guid\"/>) or the object is destroyed, ::Release() is called and the interface's reference count is decremented.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGIObject::SetPrivateDataInterface']/*\"/>\t\n            <msdn-id>bb174545</msdn-id>\t\n            <unmanaged>HRESULT IDXGIObject::SetPrivateDataInterface([In] const GUID&amp; Name,[In] const IUnknown* pUnknown)</unmanaged>\t\n            <unmanaged-short>IDXGIObject::SetPrivateDataInterface</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.DXGIObject.GetPrivateData(System.Guid,System.Int32@,System.IntPtr)\">\n            <summary>\t\n            <p>Get a reference to the object's data.</p>\t\n            </summary>\t\n            <param name=\"name\"><dd>  <p>A <see cref=\"T:System.Guid\"/> identifying the data.</p> </dd></param>\t\n            <param name=\"dataSizeRef\"><dd>  <p>The size of the data.</p> </dd></param>\t\n            <param name=\"dataRef\"><dd>  <p>Pointer to the data.</p> </dd></param>\t\n            <returns><p>Returns one of the following DXGI_ERROR.</p></returns>\t\n            <remarks>\t\n            <p>If the data returned is a reference to an <see cref=\"T:SharpDX.ComObject\"/>, or one of its derivative classes, previously set by <strong><see cref=\"M:SharpDX.DXGI.DXGIObject.SetPrivateDataInterface(System.Guid,SharpDX.ComObject)\"/></strong>, then ::Release() must be called on the reference before the reference is freed to decrement the reference count.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGIObject::GetPrivateData']/*\"/>\t\n            <msdn-id>bb174543</msdn-id>\t\n            <unmanaged>HRESULT IDXGIObject::GetPrivateData([In] const GUID&amp; Name,[InOut] unsigned int* pDataSize,[Out, Buffer] void* pData)</unmanaged>\t\n            <unmanaged-short>IDXGIObject::GetPrivateData</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.DXGIObject.GetParent(System.Guid,System.IntPtr@)\">\n            <summary>\t\n            <p>Gets the parent of the object.</p>\t\n            </summary>\t\n            <param name=\"riid\"><dd>  <p>The ID of the requested interface.</p> </dd></param>\t\n            <param name=\"parentOut\"><dd>  <p>The address of a reference to the parent object.</p> </dd></param>\t\n            <returns><p>Returns one of the DXGI_ERROR values.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGIObject::GetParent']/*\"/>\t\n            <msdn-id>bb174542</msdn-id>\t\n            <unmanaged>HRESULT IDXGIObject::GetParent([In] const GUID&amp; riid,[Out] void** ppParent)</unmanaged>\t\n            <unmanaged-short>IDXGIObject::GetParent</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.Adapter.IsInterfaceSupported(System.Type)\">\n            <summary>\n            Checks to see if a device interface for a graphics component is supported by the system.\n            </summary>\n            <param name=\"type\">The GUID of the interface of the device version for which support is being checked. For example, typeof(ID3D10Device).GUID.</param>\n            <returns>\n              <c>true</c> if the interface is supported; otherwise, <c>false</c>.\n            </returns>\n            <msdn-id>Bb174524</msdn-id>\t\n            <unmanaged>HRESULT IDXGIAdapter::CheckInterfaceSupport([In] const GUID&amp; InterfaceName,[Out] LARGE_INTEGER* pUMDVersion)</unmanaged>\t\n            <unmanaged-short>IDXGIAdapter::CheckInterfaceSupport</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.Adapter.IsInterfaceSupported``1\">\n            <summary>\n            Checks to see if a device interface for a graphics component is supported by the system.\n            </summary>\n            <typeparam name=\"T\">the interface of the device version for which support is being checked.</typeparam>\n            <returns>\n              <c>true</c> if the interface is supported; otherwise, <c>false</c>.\n            </returns>\n            <msdn-id>Bb174524</msdn-id>\t\n            <unmanaged>HRESULT IDXGIAdapter::CheckInterfaceSupport([In] const GUID&amp; InterfaceName,[Out] LARGE_INTEGER* pUMDVersion)</unmanaged>\t\n            <unmanaged-short>IDXGIAdapter::CheckInterfaceSupport</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.Adapter.IsInterfaceSupported``1(System.Int64@)\">\n            <summary>\n            Checks to see if a device interface for a graphics component is supported by the system.\n            </summary>\n            <typeparam name=\"T\">the interface of the device version for which support is being checked.</typeparam>\n            <param name=\"userModeVersion\">The user mode driver version of InterfaceName. This is only returned if the interface is supported.</param>\n            <returns>\n              <c>true</c> if the interface is supported; otherwise, <c>false</c>.\n            </returns>\n            <msdn-id>Bb174524</msdn-id>\t\n            <unmanaged>HRESULT IDXGIAdapter::CheckInterfaceSupport([In] const GUID&amp; InterfaceName,[Out] LARGE_INTEGER* pUMDVersion)</unmanaged>\t\n            <unmanaged-short>IDXGIAdapter::CheckInterfaceSupport</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.Adapter.IsInterfaceSupported(System.Type,System.Int64@)\">\n            <summary>\n            Checks to see if a device interface for a graphics component is supported by the system.\n            </summary>\n            <param name=\"type\">The GUID of the interface of the device version for which support is being checked. For example, typeof(ID3D10Device).GUID.</param>\n            <param name=\"userModeVersion\">The user mode driver version of InterfaceName. This is only returned if the interface is supported.</param>\n            <returns>\n              <c>true</c> if the interface is supported; otherwise, <c>false</c>.\n            </returns>\n            <msdn-id>Bb174524</msdn-id>\t\n            <unmanaged>HRESULT IDXGIAdapter::CheckInterfaceSupport([In] const GUID&amp; InterfaceName,[Out] LARGE_INTEGER* pUMDVersion)</unmanaged>\t\n            <unmanaged-short>IDXGIAdapter::CheckInterfaceSupport</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.Adapter.GetOutput(System.Int32)\">\n            <summary>\n            Gets an adapter (video card) outputs.\n            </summary>\n            <param name=\"outputIndex\">The index of the output.</param>\n            <returns>\n            An instance of <see cref=\"T:SharpDX.DXGI.Output\"/> \n            </returns>\n            <unmanaged>HRESULT IDXGIAdapter::EnumOutputs([In] unsigned int Output,[Out] IDXGIOutput** ppOutput)</unmanaged>\n            <remarks>\n            When the EnumOutputs method succeeds and fills the ppOutput parameter with the address of the reference to the output interface, EnumOutputs increments the output interface's reference count. To avoid a memory leak, when you finish using the  output interface, call the Release method to decrement the reference count.EnumOutputs first returns the output on which the desktop primary is displayed. This adapter corresponds with an index of zero. EnumOutputs then returns other outputs.\n            </remarks>\n            <exception cref=\"T:SharpDX.SharpDXException\">if the index is greater than the number of outputs, result code <see cref=\"F:SharpDX.DXGI.ResultCode.NotFound\"/></exception>\n            <msdn-id>bb174525</msdn-id>\t\n            <unmanaged>HRESULT IDXGIAdapter::EnumOutputs([In] unsigned int Output,[Out] IDXGIOutput** ppOutput)</unmanaged>\t\n            <unmanaged-short>IDXGIAdapter::EnumOutputs</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.Adapter.GetOutputCount\">\n            <summary>\n              Return the number of available outputs from this adapter.\n            </summary>\n            <returns>The number of outputs</returns>\n            <msdn-id>bb174525</msdn-id>\t\n            <unmanaged>HRESULT IDXGIAdapter::EnumOutputs([In] unsigned int Output,[Out] IDXGIOutput** ppOutput)</unmanaged>\t\n            <unmanaged-short>IDXGIAdapter::EnumOutputs</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.Adapter.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DXGI.Adapter\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.Adapter.op_Explicit(System.IntPtr)~SharpDX.DXGI.Adapter\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.DXGI.Adapter\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.DXGI.Adapter.GetOutput(System.Int32,SharpDX.DXGI.Output@)\">\n            <summary>\t\n            <p>Enumerate adapter (video card) outputs.</p>\t\n            </summary>\t\n            <param name=\"output\"><dd>  <p>The index of the output.</p> </dd></param>\t\n            <param name=\"outputOut\"><dd>  <p>The address of a reference to an <strong><see cref=\"T:SharpDX.DXGI.Output\"/></strong> interface at the position specified by the <em>Output</em> parameter.</p> </dd></param>\t\n            <returns><p>A code that indicates success or failure (see DXGI_ERROR). Will return <see cref=\"F:SharpDX.DXGI.ResultCode.NotFound\"/> if the index is greater than the number of outputs.</p></returns>\t\n            <remarks>\t\n            <p>When the <strong>EnumOutputs</strong> method succeeds and fills the <em>ppOutput</em> parameter with the address of the reference to the output interface, <strong>EnumOutputs</strong> increments the output interface's reference count. To avoid a memory leak, when you finish using the  output interface, call the <strong>Release</strong> method to decrement the reference count.</p><p><strong>EnumOutputs</strong> first returns the output on which the desktop primary is displayed. This adapter corresponds with an index of zero. <strong>EnumOutputs</strong> then returns other outputs.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGIAdapter::EnumOutputs']/*\"/>\t\n            <msdn-id>bb174525</msdn-id>\t\n            <unmanaged>HRESULT IDXGIAdapter::EnumOutputs([In] unsigned int Output,[Out] IDXGIOutput** ppOutput)</unmanaged>\t\n            <unmanaged-short>IDXGIAdapter::EnumOutputs</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.Adapter.GetDescription(SharpDX.DXGI.AdapterDescription@)\">\n            <summary>\t\n            <p>Gets a DXGI 1.0 description of an adapter (or video card).</p>\t\n            </summary>\t\n            <param name=\"descRef\"><dd>  <p>A reference to a <strong><see cref=\"T:SharpDX.DXGI.AdapterDescription\"/></strong> structure that describes the adapter. This parameter must not be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful; otherwise returns E_INVALIDARG if the <em>pDesc</em> parameter is <strong><c>null</c></strong>.   </p></returns>\t\n            <remarks>\t\n            <p>Graphics applications can use the DXGI API to retrieve an accurate set of graphics memory  values on systems that have WDDM drivers. The following are the critical steps involved.</p><ul> <li> Graphics driver model determination ? Because DXGI is only available on systems with WDDM drivers, the application must first confirm the driver model by using the following API.  <pre><code> HasWDDMDriver()\t\n            { LPDIRECT3DCREATE9EX pD3D9Create9Ex = <c>null</c>; HMODULE             hD3D9          = <c>null</c>; hD3D9 = LoadLibrary( L\"d3d9.dll\" ); if ( <c>null</c> == hD3D9 ) { return false; } // /*  Try to create <see cref=\"!:SharpDX.Direct3D9.Direct3DEx\"/> interface (also known as a DX9L interface). This interface can only be created if the driver is a WDDM driver. */ // pD3D9Create9Ex = (LPDIRECT3DCREATE9EX) GetProcAddress( hD3D9, \"Direct3DCreate9Ex\" ); return pD3D9Create9Ex != <c>null</c>;\t\n            } </code></pre>  </li> <li> Retrieval of graphics memory values.? After the driver model is determined to be WDDM, the application can use the DirectX 10 or later API and DXGI to get the amount of graphics memory.  After creating a Direct3D device the following code can be used to obtain  a <strong><see cref=\"T:SharpDX.DXGI.AdapterDescription\"/></strong> structure containing the amount of available graphics memory.  <pre><code> <see cref=\"T:SharpDX.DXGI.Device\"/> * pDXGIDevice;\t\n            hr = g_pd3dDevice-&gt;QueryInterface(__uuidof(<see cref=\"T:SharpDX.DXGI.Device\"/>), (void **)&amp;pDXGIDevice);\t\n            <see cref=\"T:SharpDX.DXGI.Adapter\"/> * pDXGIAdapter;\t\n            pDXGIDevice-&gt;GetAdapter(&amp;pDXGIAdapter);\t\n            <see cref=\"T:SharpDX.DXGI.AdapterDescription\"/> adapterDesc;\t\n            pDXGIAdapter-&gt;GetDesc(&amp;adapterDesc); </code></pre>  </li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGIAdapter::GetDesc']/*\"/>\t\n            <msdn-id>bb174526</msdn-id>\t\n            <unmanaged>HRESULT IDXGIAdapter::GetDesc([Out] DXGI_ADAPTER_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>IDXGIAdapter::GetDesc</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.Adapter.CheckInterfaceSupport(System.Guid,System.Int64@)\">\n            <summary>\t\n            <p>Checks whether the system supports a device interface for a graphics component.</p>\t\n            </summary>\t\n            <param name=\"interfaceName\"><dd>  <p>The <see cref=\"T:System.Guid\"/> of the interface of the device version for which support is being checked. For example, __uuidof(<see cref=\"!:SharpDX.Direct3D10.Device\"/>).</p> </dd></param>\t\n            <param name=\"uMDVersionRef\"><dd>  <p>The user mode driver version of InterfaceName. This is  returned only if the interface is supported. This parameter can be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <returns><p><see cref=\"F:SharpDX.Result.Ok\"/> indicates that the interface is supported, otherwise <see cref=\"F:SharpDX.DXGI.ResultCode.Unsupported\"/> is returned (For more information, see DXGI_ERROR).</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??You can  use <strong>CheckInterfaceSupport</strong> only to  check whether a Direct3D 10.x interface is supported, and only on Windows Vista SP1 and later versions of the operating system. If you try to use <strong>CheckInterfaceSupport</strong> to check whether a Direct3D 11.x and later version interface is supported, <strong>CheckInterfaceSupport</strong> returns <see cref=\"F:SharpDX.DXGI.ResultCode.Unsupported\"/>. Therefore, do not use <strong>CheckInterfaceSupport</strong>. Instead, to verify whether the operating system supports a particular interface, try to create the interface. For example, if you call the <strong><see cref=\"!:SharpDX.Direct3D11.Device.CreateBlendState\"/></strong> method and it fails, the operating system does not support the <strong><see cref=\"!:SharpDX.Direct3D11.BlendState\"/></strong> interface.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGIAdapter::CheckInterfaceSupport']/*\"/>\t\n            <msdn-id>Bb174524</msdn-id>\t\n            <unmanaged>HRESULT IDXGIAdapter::CheckInterfaceSupport([In] const GUID&amp; InterfaceName,[Out] LARGE_INTEGER* pUMDVersion)</unmanaged>\t\n            <unmanaged-short>IDXGIAdapter::CheckInterfaceSupport</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.DXGI.Adapter.Outputs\">\n            <summary>\n            Gets all outputs from this adapter.\n            </summary>\n            <msdn-id>bb174525</msdn-id>\t\n            <unmanaged>HRESULT IDXGIAdapter::EnumOutputs([In] unsigned int Output,[Out] IDXGIOutput** ppOutput)</unmanaged>\t\n            <unmanaged-short>IDXGIAdapter::EnumOutputs</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.DXGI.Adapter.Description\">\n            <summary>\t\n            <p>Gets a DXGI 1.0 description of an adapter (or video card).</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Graphics applications can use the DXGI API to retrieve an accurate set of graphics memory  values on systems that have WDDM drivers. The following are the critical steps involved.</p><ul> <li> Graphics driver model determination ? Because DXGI is only available on systems with WDDM drivers, the application must first confirm the driver model by using the following API.  <pre><code> HasWDDMDriver()\t\n            { LPDIRECT3DCREATE9EX pD3D9Create9Ex = <c>null</c>; HMODULE             hD3D9          = <c>null</c>; hD3D9 = LoadLibrary( L\"d3d9.dll\" ); if ( <c>null</c> == hD3D9 ) { return false; } // /*  Try to create <see cref=\"!:SharpDX.Direct3D9.Direct3DEx\"/> interface (also known as a DX9L interface). This interface can only be created if the driver is a WDDM driver. */ // pD3D9Create9Ex = (LPDIRECT3DCREATE9EX) GetProcAddress( hD3D9, \"Direct3DCreate9Ex\" ); return pD3D9Create9Ex != <c>null</c>;\t\n            } </code></pre>  </li> <li> Retrieval of graphics memory values.? After the driver model is determined to be WDDM, the application can use the DirectX 10 or later API and DXGI to get the amount of graphics memory.  After creating a Direct3D device the following code can be used to obtain  a <strong><see cref=\"T:SharpDX.DXGI.AdapterDescription\"/></strong> structure containing the amount of available graphics memory.  <pre><code> <see cref=\"T:SharpDX.DXGI.Device\"/> * pDXGIDevice;\t\n            hr = g_pd3dDevice-&gt;QueryInterface(__uuidof(<see cref=\"T:SharpDX.DXGI.Device\"/>), (void **)&amp;pDXGIDevice);\t\n            <see cref=\"T:SharpDX.DXGI.Adapter\"/> * pDXGIAdapter;\t\n            pDXGIDevice-&gt;GetAdapter(&amp;pDXGIAdapter);\t\n            <see cref=\"T:SharpDX.DXGI.AdapterDescription\"/> adapterDesc;\t\n            pDXGIAdapter-&gt;GetDesc(&amp;adapterDesc); </code></pre>  </li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGIAdapter::GetDesc']/*\"/>\t\n            <msdn-id>bb174526</msdn-id>\t\n            <unmanaged>GetDesc</unmanaged>\t\n            <unmanaged-short>GetDesc</unmanaged-short>\t\n            <unmanaged>HRESULT IDXGIAdapter::GetDesc([Out] DXGI_ADAPTER_DESC* pDesc)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DXGI.AssemblyDoc\">\n            <summary>\n            The <see cref=\"A:SharpDX.DXGI\"/> assembly provides managed DXGI API.\n            </summary>\n            <msdn-id>hh404534</msdn-id>\n            <unmanaged>DXGI</unmanaged>\t\n            <unmanaged-short>DXGI</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DXGI.NamespaceDoc\">\n            <summary>\n            The <see cref=\"N:SharpDX.DXGI\"/> namespace provides a managed DXGI API.\n            </summary>\n            <msdn-id>hh404534</msdn-id>\n            <unmanaged>DXGI</unmanaged>\t\n            <unmanaged-short>DXGI</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DXGI.Device\">\n            <summary>\t\n            <p>An <strong><see cref=\"T:SharpDX.DXGI.Device\"/></strong> interface implements a derived class for DXGI objects that produce image data.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The <strong><see cref=\"T:SharpDX.DXGI.Device\"/></strong> interface is designed for use by DXGI objects that need access to other DXGI objects. This interface is useful to  applications that do not use Direct3D to communicate with DXGI.</p><p>The object returned by the Direct3D create device functions implements the <see cref=\"T:SharpDX.ComObject\"/> interface and can be queried for the device's corresponding <see cref=\"T:SharpDX.DXGI.Device\"/> interface. To retrieve the <strong><see cref=\"T:SharpDX.DXGI.Device\"/></strong> interface of a Direct3D device the following code can be used.</p><pre><code><see cref=\"T:SharpDX.DXGI.Device\"/> * pDXGIDevice;\t\n            hr = g_pd3dDevice-&gt;QueryInterface(__uuidof(<see cref=\"T:SharpDX.DXGI.Device\"/>), (void **)&amp;pDXGIDevice);\t\n            </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGIDevice']/*\"/>\t\n            <msdn-id>bb174527</msdn-id>\t\n            <unmanaged>IDXGIDevice</unmanaged>\t\n            <unmanaged-short>IDXGIDevice</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.Device.QueryResourceResidency(SharpDX.ComObject[])\">\n            <summary>\t\n            Gets the residency status of an array of resources.\t\n            </summary>\t\n            <remarks>\t\n            The information returned by the pResidencyStatus argument array describes the residency status at the time that the QueryResourceResidency method was called.   Note that the residency status will constantly change. If you call the QueryResourceResidency method during a device removed state, the pResidencyStatus argument will return the DXGI_RESIDENCY_EVICTED_TO_DISK flag. Note??This method should not be called every frame as it incurs a non-trivial amount of overhead. \t\n            </remarks>\t\n            <param name=\"comObjects\">An array of <see cref=\"T:SharpDX.DXGI.Resource\"/> interfaces. </param>\n            <returns>Returns an array of <see cref=\"T:SharpDX.DXGI.Residency\"/> flags. Each element describes the residency status for corresponding element in  the ppResources argument array. </returns>\n            <unmanaged>HRESULT IDXGIDevice::QueryResourceResidency([In, Buffer] const IUnknown** ppResources,[Out, Buffer] DXGI_RESIDENCY* pResidencyStatus,[None] int NumResources)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DXGI.Device.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DXGI.Device\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.Device.op_Explicit(System.IntPtr)~SharpDX.DXGI.Device\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.DXGI.Device\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.DXGI.Device.GetAdapter(SharpDX.DXGI.Adapter@)\">\n            <summary>\t\n            <p>Returns the adapter for the specified device.</p>\t\n            </summary>\t\n            <param name=\"adapterRef\"><dd>  <p>The address of an <strong><see cref=\"T:SharpDX.DXGI.Adapter\"/></strong> interface reference to the adapter.  This parameter must not be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful; otherwise, returns one of the DXGI_ERROR that indicates failure. If the <em>pAdapter</em> parameter is <strong><c>null</c></strong> this method returns E_INVALIDARG.</p></returns>\t\n            <remarks>\t\n            <p>If the <strong>GetAdapter</strong> method succeeds, the reference count on the adapter interface will be incremented. To avoid a memory leak, be sure to release the interface when you are finished using it.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGIDevice::GetAdapter']/*\"/>\t\n            <msdn-id>bb174531</msdn-id>\t\n            <unmanaged>HRESULT IDXGIDevice::GetAdapter([Out] IDXGIAdapter** pAdapter)</unmanaged>\t\n            <unmanaged-short>IDXGIDevice::GetAdapter</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.Device.CreateSurface(SharpDX.DXGI.SurfaceDescription@,System.Int32,System.Int32,System.Nullable{SharpDX.DXGI.SharedResource},SharpDX.DXGI.Surface@)\">\n            <summary>\t\n            <p>Returns a surface. This method is used internally and you should not call it directly in your application.</p>\t\n            </summary>\t\n            <param name=\"descRef\"><dd>  <p>A reference to a <strong><see cref=\"T:SharpDX.DXGI.SurfaceDescription\"/></strong> structure that describes the surface.</p> </dd></param>\t\n            <param name=\"numSurfaces\"><dd>  <p>The number of surfaces to create.</p> </dd></param>\t\n            <param name=\"usage\"><dd>  <p>A DXGI_USAGE flag that specifies how the surface is expected to be used.</p> </dd></param>\t\n            <param name=\"sharedResourceRef\"><dd>  <p>An optional reference to a <strong><see cref=\"T:SharpDX.DXGI.SharedResource\"/></strong> structure that contains shared resource information for opening views of such resources.</p> </dd></param>\t\n            <param name=\"surfaceOut\"><dd>  <p>The address of an <strong><see cref=\"T:SharpDX.DXGI.Surface\"/></strong> interface reference to the first created surface.</p> </dd></param>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful; an error code otherwise.  For a list of error codes, see DXGI_ERROR.</p></returns>\t\n            <remarks>\t\n            <p>The <strong>CreateSurface</strong> method creates a buffer to exchange data between one or more devices. It is used internally, and you should not directly call it.</p><p>The runtime automatically creates an <strong><see cref=\"T:SharpDX.DXGI.Surface\"/></strong> interface when it creates a Direct3D resource object that represents a surface. For example, the runtime creates an <strong><see cref=\"T:SharpDX.DXGI.Surface\"/></strong> interface when it calls <strong><see cref=\"!:SharpDX.Direct3D11.Device.CreateTexture2D\"/></strong> or <strong><see cref=\"!:SharpDX.Direct3D10.Device.CreateTexture2D\"/></strong> to create a 2D texture. To retrieve the <strong><see cref=\"T:SharpDX.DXGI.Surface\"/></strong> interface that represents the 2D texture surface, call <strong>ID3D11Texture2D::QueryInterface</strong> or <strong>ID3D10Texture2D::QueryInterface</strong>. In this call, you must pass the identifier of <strong><see cref=\"T:SharpDX.DXGI.Surface\"/></strong>. If the 2D texture has only a single MIP-map level and does not consist of an array of textures, <strong>QueryInterface</strong> succeeds and returns a reference to the <strong><see cref=\"T:SharpDX.DXGI.Surface\"/></strong> interface reference. Otherwise, <strong>QueryInterface</strong> fails and does not return the reference to <strong><see cref=\"T:SharpDX.DXGI.Surface\"/></strong>. \t\n            </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGIDevice::CreateSurface']/*\"/>\t\n            <msdn-id>bb174530</msdn-id>\t\n            <unmanaged>HRESULT IDXGIDevice::CreateSurface([In] const DXGI_SURFACE_DESC* pDesc,[In] unsigned int NumSurfaces,[In] unsigned int Usage,[In, Optional] const DXGI_SHARED_RESOURCE* pSharedResource,[Out] IDXGISurface** ppSurface)</unmanaged>\t\n            <unmanaged-short>IDXGIDevice::CreateSurface</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.Device.QueryResourceResidency(SharpDX.ComObject[],SharpDX.DXGI.Residency[],System.Int32)\">\n            <summary>\t\n            <p>Gets the residency status of an array of resources.</p>\t\n            </summary>\t\n            <param name=\"resourcesOut\"><dd>  <p>An array of <strong><see cref=\"T:SharpDX.DXGI.Resource\"/></strong> interfaces.</p> </dd></param>\t\n            <param name=\"residencyStatusRef\"><dd>  <p>An array of <strong><see cref=\"T:SharpDX.DXGI.Residency\"/></strong> flags. Each element describes the residency status for corresponding element in  the <em>ppResources</em> argument array.</p> </dd></param>\t\n            <param name=\"numResources\"><dd>  <p>The number of resources in the <em>ppResources</em> argument array and <em>pResidencyStatus</em> argument array.</p> </dd></param>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successfull; otherwise, returns <see cref=\"F:SharpDX.DXGI.ResultCode.DeviceRemoved\"/>, E_INVALIDARG, or  E_POINTER (see WinError.h for more information).</p></returns>\t\n            <remarks>\t\n            <p>The information returned by the <em>pResidencyStatus</em> argument array describes the residency status at the time that the <strong>QueryResourceResidency</strong> method was called.   Note that the residency status will constantly change.</p><p>If you call the <strong>QueryResourceResidency</strong> method during a device removed state, the <em>pResidencyStatus</em> argument will return the <see cref=\"F:SharpDX.DXGI.Residency.EvictedToDisk\"/> flag.</p><p><strong>Note</strong>??This method should not be called every frame as it incurs a non-trivial amount of overhead.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGIDevice::QueryResourceResidency']/*\"/>\t\n            <msdn-id>bb174533</msdn-id>\t\n            <unmanaged>HRESULT IDXGIDevice::QueryResourceResidency([In, Buffer] const IUnknown** ppResources,[Out, Buffer] DXGI_RESIDENCY* pResidencyStatus,[In] unsigned int NumResources)</unmanaged>\t\n            <unmanaged-short>IDXGIDevice::QueryResourceResidency</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.Device.QueryResourceResidency(SharpDX.ComArray{SharpDX.ComObject},SharpDX.DXGI.Residency[],System.Int32)\">\n            <summary>\t\n            <p>Gets the residency status of an array of resources.</p>\t\n            </summary>\t\n            <param name=\"resourcesOut\"><dd>  <p>An array of <strong><see cref=\"T:SharpDX.DXGI.Resource\"/></strong> interfaces.</p> </dd></param>\t\n            <param name=\"residencyStatusRef\"><dd>  <p>An array of <strong><see cref=\"T:SharpDX.DXGI.Residency\"/></strong> flags. Each element describes the residency status for corresponding element in  the <em>ppResources</em> argument array.</p> </dd></param>\t\n            <param name=\"numResources\"><dd>  <p>The number of resources in the <em>ppResources</em> argument array and <em>pResidencyStatus</em> argument array.</p> </dd></param>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successfull; otherwise, returns <see cref=\"F:SharpDX.DXGI.ResultCode.DeviceRemoved\"/>, E_INVALIDARG, or  E_POINTER (see WinError.h for more information).</p></returns>\t\n            <remarks>\t\n            <p>The information returned by the <em>pResidencyStatus</em> argument array describes the residency status at the time that the <strong>QueryResourceResidency</strong> method was called.   Note that the residency status will constantly change.</p><p>If you call the <strong>QueryResourceResidency</strong> method during a device removed state, the <em>pResidencyStatus</em> argument will return the <see cref=\"F:SharpDX.DXGI.Residency.EvictedToDisk\"/> flag.</p><p><strong>Note</strong>??This method should not be called every frame as it incurs a non-trivial amount of overhead.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGIDevice::QueryResourceResidency']/*\"/>\t\n            <msdn-id>bb174533</msdn-id>\t\n            <unmanaged>HRESULT IDXGIDevice::QueryResourceResidency([In, Buffer] const IUnknown** ppResources,[Out, Buffer] DXGI_RESIDENCY* pResidencyStatus,[In] unsigned int NumResources)</unmanaged>\t\n            <unmanaged-short>IDXGIDevice::QueryResourceResidency</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.Device.SetGPUThreadPriority(System.Int32)\">\n            <summary>\t\n            <p>Sets the GPU thread priority.</p>\t\n            </summary>\t\n            <param name=\"priority\"><dd>  <p>A value that specifies the required GPU thread priority. This value must be between -7 and 7, inclusive, where 0 represents normal priority.</p> </dd></param>\t\n            <returns><p>Return <see cref=\"F:SharpDX.Result.Ok\"/> if successful; otherwise, returns E_INVALIDARG if the <em>Priority</em> parameter is invalid.</p></returns>\t\n            <remarks>\t\n            <p>The values for the <em>Priority</em> parameter function as follows:</p><ul> <li>Positive values increase the likelihood that the GPU scheduler will grant GPU execution cycles to the device when rendering.</li> <li>Negative values lessen the likelihood that the device will receive GPU execution cycles when devices compete for them.</li> <li>The device is guaranteed to receive some GPU execution cycles at all settings.</li> </ul><p>To use the <strong>SetGPUThreadPriority</strong> method, you should have a comprehensive understanding of GPU scheduling. You should profile your application to ensure that it behaves as intended. If used inappropriately, the <strong>SetGPUThreadPriority</strong> method can impede rendering speed and result in a poor user experience.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGIDevice::SetGPUThreadPriority']/*\"/>\t\n            <msdn-id>bb174534</msdn-id>\t\n            <unmanaged>HRESULT IDXGIDevice::SetGPUThreadPriority([In] int Priority)</unmanaged>\t\n            <unmanaged-short>IDXGIDevice::SetGPUThreadPriority</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.Device.GetGPUThreadPriority(System.Int32@)\">\n            <summary>\t\n            <p>Gets the GPU thread priority.</p>\t\n            </summary>\t\n            <param name=\"priorityRef\"><dd>  <p>A reference to a variable that receives a value that indicates the current GPU thread priority. The value will be between -7 and 7, inclusive, where 0 represents normal priority.</p> </dd></param>\t\n            <returns><p>Return <see cref=\"F:SharpDX.Result.Ok\"/> if successful; otherwise, returns E_POINTER if the <em>pPriority</em> parameter is <strong><c>null</c></strong>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGIDevice::GetGPUThreadPriority']/*\"/>\t\n            <msdn-id>Bb174532</msdn-id>\t\n            <unmanaged>HRESULT IDXGIDevice::GetGPUThreadPriority([Out] int* pPriority)</unmanaged>\t\n            <unmanaged-short>IDXGIDevice::GetGPUThreadPriority</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.DXGI.Device.Adapter\">\n            <summary>\t\n            <p>Returns the adapter for the specified device.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>If the <strong>GetAdapter</strong> method succeeds, the reference count on the adapter interface will be incremented. To avoid a memory leak, be sure to release the interface when you are finished using it.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGIDevice::GetAdapter']/*\"/>\t\n            <msdn-id>bb174531</msdn-id>\t\n            <unmanaged>GetAdapter</unmanaged>\t\n            <unmanaged-short>GetAdapter</unmanaged-short>\t\n            <unmanaged>HRESULT IDXGIDevice::GetAdapter([Out] IDXGIAdapter** pAdapter)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DXGI.Device.GPUThreadPriority\">\n            <summary>\t\n            <p>Gets or sets the GPU thread priority.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGIDevice::GetGPUThreadPriority']/*\"/>\t\n            <msdn-id>Bb174532</msdn-id>\t\n            <unmanaged>GetGPUThreadPriority / SetGPUThreadPriority</unmanaged>\t\n            <unmanaged-short>GetGPUThreadPriority</unmanaged-short>\t\n            <unmanaged>HRESULT IDXGIDevice::GetGPUThreadPriority([Out] int* pPriority)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DXGI.DeviceChild\">\n            <summary>\t\n            <p>Inherited from objects that are tied to the device so that they can retrieve a reference to it.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGIDeviceSubObject']/*\"/>\t\n            <msdn-id>bb174528</msdn-id>\t\n            <unmanaged>IDXGIDeviceSubObject</unmanaged>\t\n            <unmanaged-short>IDXGIDeviceSubObject</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.DeviceChild.GetDevice``1\">\n            <summary>\n            Retrieves the device.\n            </summary>\n            <typeparam name=\"T\">The interface that is returned can be any interface published by the device.</typeparam>\n            <returns>The associated device. </returns>\n            <unmanaged>HRESULT IDXGIDeviceSubObject::GetDevice([In] GUID* riid,[Out] void** ppDevice)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DXGI.DeviceChild.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DXGI.DeviceChild\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.DeviceChild.op_Explicit(System.IntPtr)~SharpDX.DXGI.DeviceChild\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.DXGI.DeviceChild\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.DXGI.DeviceChild.GetDevice(System.Guid,System.IntPtr@)\">\n            <summary>\t\n            <p>Retrieves the device.</p>\t\n            </summary>\t\n            <param name=\"riid\"><dd>  <p>The reference id for the device.</p> </dd></param>\t\n            <param name=\"deviceOut\"><dd>  <p>The address of a reference to the device.</p> </dd></param>\t\n            <returns><p>A code that indicates success or failure (see DXGI_ERROR).</p></returns>\t\n            <remarks>\t\n            <p>The type of interface that is returned can be any interface published by the device. For example, it could be an <see cref=\"T:SharpDX.DXGI.Device\"/> * called pDevice, and therefore the REFIID would be obtained by calling __uuidof(pDevice).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGIDeviceSubObject::GetDevice']/*\"/>\t\n            <msdn-id>bb174529</msdn-id>\t\n            <unmanaged>HRESULT IDXGIDeviceSubObject::GetDevice([In] const GUID&amp; riid,[Out] void** ppDevice)</unmanaged>\t\n            <unmanaged-short>IDXGIDeviceSubObject::GetDevice</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.DXGI.DeviceChild.DebugName\">\n            <summary>\n            Gets or sets the debug-name for this object.\n            </summary>\n            <value>\n            The debug name.\n            </value>\n        </member>\n        <member name=\"T:SharpDX.DXGI.Factory\">\n            <summary>\t\n            <p>An <strong><see cref=\"T:SharpDX.DXGI.Factory\"/></strong> interface implements methods for generating DXGI objects (which handle full screen transitions).</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Create a factory by calling <strong>CreateDXGIFactory</strong>.</p><p>Because a Direct3D device can be created without creating a swap chain, you might need to retrieve the factory that is used to create the device in order to create a swap chain.\t\n            This can be accomplished by requesting the <strong><see cref=\"T:SharpDX.DXGI.Device\"/></strong> interface from the Direct3D device and then using <strong><see cref=\"M:SharpDX.DXGI.DXGIObject.GetParent(System.Guid,System.IntPtr@)\"/></strong> to locate \t\n            the factory.  The following code illustrates the process.</p><pre><code><see cref=\"T:SharpDX.DXGI.Device\"/> * pDXGIDevice;\t\n            hr = g_pd3dDevice-&gt;QueryInterface(__uuidof(<see cref=\"T:SharpDX.DXGI.Device\"/>), (void **)&amp;pDXGIDevice); <see cref=\"T:SharpDX.DXGI.Adapter\"/> * pDXGIAdapter;\t\n            hr = pDXGIDevice-&gt;GetParent(__uuidof(<see cref=\"T:SharpDX.DXGI.Adapter\"/>), (void **)&amp;pDXGIAdapter); <see cref=\"T:SharpDX.DXGI.Factory\"/> * pIDXGIFactory;\t\n            pDXGIAdapter-&gt;GetParent(__uuidof(<see cref=\"T:SharpDX.DXGI.Factory\"/>), (void **)&amp;pIDXGIFactory);\t\n            </code></pre><p>See <strong><see cref=\"M:SharpDX.DXGI.DXGIObject.GetParent(System.Guid,System.IntPtr@)\"/></strong> for a diagram of the relationship between DXGI objects.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGIFactory']/*\"/>\t\n            <msdn-id>bb174535</msdn-id>\t\n            <unmanaged>IDXGIFactory</unmanaged>\t\n            <unmanaged-short>IDXGIFactory</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.Factory.#ctor\">\n            <summary>\n              Default Constructor for Factory\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.DXGI.Factory.CreateSoftwareAdapter(System.Reflection.Module)\">\n            <summary>\t\n            Create an adapter interface that represents a software adapter.\t\n            </summary>\t\n            <remarks>\t\n            A software adapter is a DLL that implements the entirety of a device driver interface, plus emulation, if necessary, of kernel-mode graphics components for Windows. Details on implementing a software adapter can be found in the Windows Vista Driver Development Kit. This is a very complex development task, and is not recommended for general readers. Calling this method will increment the module's reference count by one. The reference count can be decremented by calling {{FreeLibrary}}. The typical calling scenario is to call {{LoadLibrary}}, pass the handle to CreateSoftwareAdapter, then immediately call {{FreeLibrary}} on the DLL and forget the DLL's {{HMODULE}}. Since the software adapter calls FreeLibrary when it is destroyed, the lifetime of the DLL will now be owned by the adapter, and the application is free of any further consideration of its lifetime. \t\n            </remarks>\t\n            <param name=\"module\">Handle to the software adapter's dll.</param>\n            <returns>A reference to an adapter (see <see cref=\"T:SharpDX.DXGI.Adapter\" />). </returns>\n            <unmanaged>HRESULT IDXGIFactory::CreateSoftwareAdapter([None] void* Module,[Out] IDXGIAdapter** ppAdapter)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DXGI.Factory.GetAdapter(System.Int32)\">\n            <summary>\t\n            Gets both adapters (video cards) with or without outputs.\t\n            </summary>\t\n            <param name=\"adapter\"><para>The index of the adapter to enumerate.</para></param>\t\n            <returns>a reference to an <see cref=\"T:SharpDX.DXGI.Adapter\"/> interface at the position specified by the Adapter parameter</returns>\n            <remarks>\t\n            When you create a factory, the factory enumerates the set of adapters that are available in the system. Therefore, if you change the adapters in a system, you must destroy  and recreate the <see cref=\"T:SharpDX.DXGI.Factory\"/> object. The number of adapters in a system changes when you add or remove a display card, or dock or undock a laptop.When the EnumAdapters method succeeds and fills the ppAdapter parameter with the address of the reference to the adapter interface, EnumAdapters increments the adapter interface's reference count. When you finish using the  adapter interface, call the Release method to decrement the reference count before you destroy the reference.EnumAdapters first returns the local adapter with the output on which the desktop primary is displayed. This adapter corresponds with an index of zero. EnumAdapters then returns other adapters with outputs.\t\n            </remarks>\t\n            <unmanaged>HRESULT IDXGIFactory::EnumAdapters([In] unsigned int Adapter,[Out] IDXGIAdapter** ppAdapter)</unmanaged>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.Factory.GetAdapterCount\">\n            <summary>\n              Return the number of available adapters from this factory.\n            </summary>\n            <returns>The number of adapters</returns>\n            <unmanaged>HRESULT IDXGIFactory::EnumAdapters([In] unsigned int Adapter,[Out] IDXGIAdapter** ppAdapter)</unmanaged>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.Factory.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DXGI.Factory\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.Factory.op_Explicit(System.IntPtr)~SharpDX.DXGI.Factory\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.DXGI.Factory\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.DXGI.Factory.GetAdapter(System.Int32,SharpDX.DXGI.Adapter@)\">\n            <summary>\t\n            <p>Enumerates the adapters (video cards).</p>\t\n            </summary>\t\n            <param name=\"adapter\"><dd>  <p>The index of the adapter to enumerate.</p> </dd></param>\t\n            <param name=\"adapterOut\"><dd>  <p>The address of a reference to an <strong><see cref=\"T:SharpDX.DXGI.Adapter\"/></strong> interface at the position specified by the <em>Adapter</em> parameter.  This parameter must not be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful; otherwise, returns <see cref=\"F:SharpDX.DXGI.ResultCode.NotFound\"/> if the index is greater than or equal to the number of adapters in the local system, or <see cref=\"F:SharpDX.DXGI.ResultCode.InvalidCall\"/> if <em>ppAdapter</em> parameter is <strong><c>null</c></strong>.</p></returns>\t\n            <remarks>\t\n            <p>When you create a factory, the factory enumerates the set of adapters that are available in the system. Therefore, if you change the adapters in a system, you must destroy  and recreate the <strong><see cref=\"T:SharpDX.DXGI.Factory\"/></strong> object. The number of adapters in a system changes when you add or remove a display card, or dock or undock a laptop. </p><p>When the <strong>EnumAdapters</strong> method succeeds and fills the <em>ppAdapter</em> parameter with the address of the reference to the adapter interface, <strong>EnumAdapters</strong> increments the adapter interface's reference count. When you finish using the  adapter interface, call the <strong>Release</strong> method to decrement the reference count before you destroy the reference.</p><p><strong>EnumAdapters</strong> first returns the local adapter with the output on which the desktop primary is displayed. This adapter corresponds with an index of zero. <strong>EnumAdapters</strong> then returns other adapters with outputs.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGIFactory::EnumAdapters']/*\"/>\t\n            <msdn-id>bb174538</msdn-id>\t\n            <unmanaged>HRESULT IDXGIFactory::EnumAdapters([In] unsigned int Adapter,[Out] IDXGIAdapter** ppAdapter)</unmanaged>\t\n            <unmanaged-short>IDXGIFactory::EnumAdapters</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.Factory.MakeWindowAssociation(System.IntPtr,SharpDX.DXGI.WindowAssociationFlags)\">\n            <summary>\t\n            <p>Allows DXGI to monitor an application's message queue for the alt-enter key sequence (which causes the application to switch from windowed to full screen or vice versa).</p>\t\n            </summary>\t\n            <param name=\"windowHandle\"><dd>  <p>The handle of the window that is to be monitored. This parameter can be <strong><c>null</c></strong>; but only if the flags are also 0. </p> </dd></param>\t\n            <param name=\"flags\"><dd>  <p>One or more of the following values:</p> <ul> <li><see cref=\"F:SharpDX.DXGI.WindowAssociationFlags.IgnoreAll\"/> - Prevent DXGI from monitoring an applications message queue; this makes DXGI unable to respond to mode changes.</li> <li><see cref=\"F:SharpDX.DXGI.WindowAssociationFlags.IgnoreAltEnter\"/> - Prevent DXGI from responding to an alt-enter sequence.</li> <li><see cref=\"F:SharpDX.DXGI.WindowAssociationFlags.IgnorePrintScreen\"/> - Prevent DXGI from responding to a print-screen key.</li> </ul> </dd></param>\t\n            <returns><p> <see cref=\"F:SharpDX.DXGI.ResultCode.InvalidCall\"/> if <em>WindowHandle</em> is invalid, or E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>The combination of <em>WindowHandle</em> and <em>Flags</em> informs DXGI to stop monitoring window messages for the previously-associated window.</p><p>If the application switches to full-screen mode, DXGI will choose a full-screen resolution to be the smallest supported resolution that is larger or the same size as the current back buffer size.</p><p>Applications can make some changes to make the transition from windowed to full screen more efficient. For example, on a WM_SIZE message, the application should release any outstanding swap-chain back buffers, call <strong><see cref=\"M:SharpDX.DXGI.SwapChain.ResizeBuffers(System.Int32,System.Int32,System.Int32,SharpDX.DXGI.Format,SharpDX.DXGI.SwapChainFlags)\"/></strong>, then re-acquire the back buffers from the swap chain(s). This gives the swap chain(s) an opportunity to resize the back buffers, and/or recreate them to enable full-screen flipping operation. If the application does not perform this sequence, DXGI will still make the full-screen/windowed transition, but may be forced to use a stretch operation (since the back buffers may not be the correct size), which may be less efficient. Even if a stretch is not required, presentation may not be optimal because the back buffers might not be directly interchangeable with the front buffer. Thus, a call to <strong>ResizeBuffers</strong> on WM_SIZE is always recommended, since WM_SIZE is always sent during a fullscreen transition.</p><p>While windowed, the application can, if it chooses, restrict the size of its window's client area to sizes to which it is comfortable rendering. A fully flexible application would make no such restriction, but UI elements or other design considerations can, of course, make this flexibility untenable. If the application further chooses to restrict its window's client area to just those that match supported full-screen resolutions, the application can field WM_SIZING, then check against <strong><see cref=\"M:SharpDX.DXGI.Output.FindClosestMatchingMode(SharpDX.DXGI.ModeDescription@,SharpDX.DXGI.ModeDescription@,SharpDX.ComObject)\"/></strong>. If a matching mode is found, allow the resize. (The <see cref=\"T:SharpDX.DXGI.Output\"/> can be retrieved from <strong><see cref=\"M:SharpDX.DXGI.SwapChain.GetContainingOutput(SharpDX.DXGI.Output@)\"/></strong>. Absent subsequent changes to desktop topology, this will be the same output that will be chosen when alt-enter is fielded and fullscreen mode is begun for that swap chain.)</p><p>Applications that want to handle mode changes or Alt+Enter themselves should call <strong>MakeWindowAssociation</strong> with the <see cref=\"F:SharpDX.DXGI.WindowAssociationFlags.IgnoreAll\"/> flag after swap chain creation. The <em>WindowHandle</em> argument, if non-<strong><c>null</c></strong>, specifies that the application message queues will not be handled by the DXGI runtime for all swap chains of a particular target <strong><see cref=\"T:System.IntPtr\"/></strong>.  Calling <strong>MakeWindowAssociation</strong> with the <see cref=\"F:SharpDX.DXGI.WindowAssociationFlags.IgnoreAll\"/> flag after swapchain creation ensures that DXGI will not interfere with application's handling of window mode changes or Alt+Enter.</p>Notes for Metro style apps<p>If a Metro style app calls <strong>MakeWindowAssociation</strong>, it fails with <see cref=\"F:SharpDX.DXGI.ResultCode.NotCurrentlyAvailable\"/>.</p><p>A Microsoft Win32 application can use <strong>MakeWindowAssociation</strong> to control full-screen transitions through the Alt+Enter key combination and print screen behavior for full screen.  For Metro style apps, because DXGI cannot perform full-screen transitions, Metro style app have no way to control full-screen transitions.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGIFactory::MakeWindowAssociation']/*\"/>\t\n            <msdn-id>bb174540</msdn-id>\t\n            <unmanaged>HRESULT IDXGIFactory::MakeWindowAssociation([In] HWND WindowHandle,[In] DXGI_MWA_FLAGS Flags)</unmanaged>\t\n            <unmanaged-short>IDXGIFactory::MakeWindowAssociation</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.Factory.GetWindowAssociation\">\n            <summary>\t\n            <p>Get the window through which the user controls the transition to and from full screen.</p>\t\n            </summary>\t\n            <returns><dd>  <p>A reference to a window handle.</p> </dd></returns>\t\n            <remarks>\t\n            Notes for Metro style apps<p>If a Metro style app calls <strong>GetWindowAssociation</strong>, it fails with <see cref=\"F:SharpDX.DXGI.ResultCode.NotCurrentlyAvailable\"/>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGIFactory::GetWindowAssociation']/*\"/>\t\n            <msdn-id>Bb174539</msdn-id>\t\n            <unmanaged>HRESULT IDXGIFactory::GetWindowAssociation([Out] HWND* pWindowHandle)</unmanaged>\t\n            <unmanaged-short>IDXGIFactory::GetWindowAssociation</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.Factory.CreateSwapChain(SharpDX.ComObject,SharpDX.DXGI.SwapChainDescription@,SharpDX.DXGI.SwapChain)\">\n            <summary>\t\n            <p>[Starting with Direct3D 11.1, we recommend not to use <strong>CreateSwapChain</strong> anymore to create a swap chain. Instead, use <strong>CreateSwapChainForHwnd</strong>, <strong>CreateSwapChainForImmersiveWindow</strong>, or <strong>CreateSwapChainForCompositionSurface</strong> depending on how you want to create the swap chain.]</p><p>Creates a swap chain.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\">No documentation.</param>\t\n            <param name=\"descRef\">No documentation.</param>\t\n            <param name=\"swapChainOut\">No documentation.</param>\t\n            <returns><p> <see cref=\"F:SharpDX.DXGI.ResultCode.InvalidCall\"/> if <em>pDesc</em> or <em>ppSwapChain</em> is <strong><c>null</c></strong>, <see cref=\"F:SharpDX.DXGI.DXGIStatus.Occluded\"/> if you request full-screen mode and it is unavailable, or E_OUTOFMEMORY. Other error codes defined by the type of device passed in may also be returned.</p></returns>\t\n            <remarks>\t\n            <p>If you attempt to create a swap chain in full-screen mode, and full-screen mode is unavailable, the swap chain will be created in windowed mode and <see cref=\"F:SharpDX.DXGI.DXGIStatus.Occluded\"/> will be returned.</p><p>If the buffer width or the buffer height is zero, the sizes will be inferred from the output window size in the swap-chain description.</p><p>Because the target output cannot be chosen explicitly when the swap-chain is created, you should not create a full-screen swap chain. This can reduce presentation performance if the swap chain size and the output window size do not match. Here are two ways to ensure that the sizes match:</p><ul> <li>Create a windowed swap chain and then set it full-screen using <strong><see cref=\"M:SharpDX.DXGI.SwapChain.SetFullscreenState(SharpDX.Bool,SharpDX.DXGI.Output)\"/></strong>.</li> <li>Save a reference to the swap chain immediately after creation, and use it to get the output window size during a WM_SIZE event. Then resize the swap chain buffers (with <strong><see cref=\"M:SharpDX.DXGI.SwapChain.ResizeBuffers(System.Int32,System.Int32,System.Int32,SharpDX.DXGI.Format,SharpDX.DXGI.SwapChainFlags)\"/></strong>) during the transition from windowed to full-screen.</li> </ul><p>If the swap chain is in full-screen mode, before you release it you must use <strong>SetFullscreenState</strong> to switch it to windowed mode. For more information about releasing a swap chain, see the \"Destroying a Swap Chain\" section of DXGI Overview.</p><p>You can specify <strong><see cref=\"T:SharpDX.DXGI.SwapEffect\"/></strong> and <strong><see cref=\"T:SharpDX.DXGI.SwapChainFlags\"/></strong> values in the swap-chain description that <em>pDesc</em> points to. These values allow you to use features like flip-model presentation and content protection by using pre-Windows Developer Preview APIs.</p><p>However, to use stereo presentation and to change resize behavior for the flip model, applications must use the <strong>IDXGIFactory2::CreateSwapChainForHwnd</strong> method. Otherwise, the back-buffer contents implicitly scale to fit the presentation target size; that is, you can't turn off scaling.</p>Notes for Metro style apps<p>If a Metro style app calls <strong>CreateSwapChain</strong> with full screen specified, <strong>CreateSwapChain</strong> fails.</p><p>Metro style apps call the  <strong>IDXGIFactory2::CreateSwapChainForImmersiveWindow</strong> method to create a swap chain.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGIFactory::CreateSwapChain']/*\"/>\t\n            <msdn-id>bb174537</msdn-id>\t\n            <unmanaged>HRESULT IDXGIFactory::CreateSwapChain([In] IUnknown* pDevice,[In] DXGI_SWAP_CHAIN_DESC* pDesc,[Out, Fast] IDXGISwapChain** ppSwapChain)</unmanaged>\t\n            <unmanaged-short>IDXGIFactory::CreateSwapChain</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.Factory.CreateSoftwareAdapter(System.IntPtr)\">\n            <summary>\t\n            <p>Create an adapter interface that represents a software adapter.</p>\t\n            </summary>\t\n            <param name=\"module\"><dd>  <p>Handle to the software adapter's dll. HMODULE can be obtained with <strong>GetModuleHandle</strong> or <strong>LoadLibrary</strong>.</p> </dd></param>\t\n            <returns><dd>  <p>Address of a reference to an adapter (see <strong><see cref=\"T:SharpDX.DXGI.Adapter\"/></strong>).</p> </dd></returns>\t\n            <remarks>\t\n            <p>A software adapter is a DLL that implements the entirety of a device driver interface, plus emulation, if necessary, of kernel-mode graphics components for Windows. Details on implementing a software adapter can be found in the Windows Vista Driver Development Kit. This is a very complex development task, and is not recommended for general readers.</p><p>Calling this method will increment the module's reference count by one. The reference count can be decremented by calling <strong>FreeLibrary</strong>.</p><p>The typical calling scenario is to call <strong>LoadLibrary</strong>, pass the handle to <strong>CreateSoftwareAdapter</strong>, then immediately call <strong>FreeLibrary</strong> on the DLL and forget the DLL's <strong>HMODULE</strong>. Since the software adapter calls <strong>FreeLibrary</strong> when it is destroyed, the lifetime of the DLL will now be owned by the adapter, and the application is free of any further consideration of its lifetime.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGIFactory::CreateSoftwareAdapter']/*\"/>\t\n            <msdn-id>bb174536</msdn-id>\t\n            <unmanaged>HRESULT IDXGIFactory::CreateSoftwareAdapter([In] HINSTANCE Module,[Out] IDXGIAdapter** ppAdapter)</unmanaged>\t\n            <unmanaged-short>IDXGIFactory::CreateSoftwareAdapter</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.DXGI.Factory.Adapters\">\n            <summary>\n            Return an array of <see cref=\"T:SharpDX.DXGI.Adapter\"/> available from this factory.\n            </summary>\n            <unmanaged>HRESULT IDXGIFactory::EnumAdapters([In] unsigned int Adapter,[Out] IDXGIAdapter** ppAdapter)</unmanaged>\t\n        </member>\n        <member name=\"T:SharpDX.DXGI.Factory1\">\n            <summary>\t\n            <p>The <strong><see cref=\"T:SharpDX.DXGI.Factory1\"/></strong> interface implements methods for generating DXGI objects.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This interface is not supported by DXGI 1.0, which shipped in Windows?Vista and Windows Server?2008. DXGI 1.1 support is required, which is available on  Windows?7, Windows Server?2008?R2, and as an update to Windows?Vista with Service Pack?2 (SP2) (KB 971644) and Windows Server?2008 (KB 971512).</p><p>To create a factory, call the <strong>CreateDXGIFactory1</strong> function.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGIFactory1']/*\"/>\t\n            <msdn-id>ff471335</msdn-id>\t\n            <unmanaged>IDXGIFactory1</unmanaged>\t\n            <unmanaged-short>IDXGIFactory1</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.Factory1.#ctor\">\n            <summary>\n              Default Constructor for Factory1.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.DXGI.Factory1.GetAdapter1(System.Int32)\">\n            <summary>\t\n            Gets both adapters (video cards) with or without outputs.\t\n            </summary>\t\n            <param name=\"adapter\"><para>The index of the adapter to enumerate.</para></param>\t\n            <returns>a reference to an <see cref=\"T:SharpDX.DXGI.Adapter1\"/> interface at the position specified by the Adapter parameter</returns>\t\n            <remarks>\t\n            This method is not supported by DXGI 1.0, which shipped in Windows?Vista and Windows Server?2008. DXGI 1.1 support is required, which is available on  Windows?7, Windows Server?2008?R2, and as an update to Windows?Vista with Service Pack?2 (SP2) (KB 971644) and Windows Server?2008 (KB 971512).When you create a factory, the factory enumerates the set of adapters that are available in the system. Therefore, if you change the adapters in a system, you must destroy  and recreate the <see cref=\"T:SharpDX.DXGI.Factory1\"/> object. The number of adapters in a system changes when you add or remove a display card, or dock or undock a laptop.When the EnumAdapters1 method succeeds and fills the ppAdapter parameter with the address of the reference to the adapter interface, EnumAdapters1 increments the adapter interface's reference count. When you finish using the  adapter interface, call the Release method to decrement the reference count before you destroy the reference.EnumAdapters1 first returns the local adapter with the output on which the desktop primary is displayed. This adapter corresponds with an index of zero. EnumAdapters1 next returns other adapters with outputs. EnumAdapters1 finally returns adapters without outputs.\t\n            </remarks>\t\n            <unmanaged>HRESULT IDXGIFactory1::EnumAdapters1([In] unsigned int Adapter,[Out] IDXGIAdapter1** ppAdapter)</unmanaged>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.Factory1.GetAdapterCount1\">\n            <summary>\n              Return the number of available adapters from this factory.\n            </summary>\n            <returns>The number of adapters</returns>\n            <unmanaged>HRESULT IDXGIFactory1::EnumAdapters1([In] unsigned int Adapter,[Out] IDXGIAdapter1** ppAdapter)</unmanaged>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.Factory1.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DXGI.Factory1\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.Factory1.op_Explicit(System.IntPtr)~SharpDX.DXGI.Factory1\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.DXGI.Factory1\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.DXGI.Factory1.GetAdapter1(System.Int32,SharpDX.DXGI.Adapter1@)\">\n            <summary>\t\n            <p>Enumerates both adapters (video cards) with or without outputs.</p>\t\n            </summary>\t\n            <param name=\"adapter\"><dd>  <p>The index of the adapter to enumerate.</p> </dd></param>\t\n            <param name=\"adapterOut\"><dd>  <p>The address of a reference to an <strong><see cref=\"T:SharpDX.DXGI.Adapter1\"/></strong> interface at the position specified by the <em>Adapter</em> parameter.   This parameter must not be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful; otherwise, returns <see cref=\"F:SharpDX.DXGI.ResultCode.NotFound\"/> if the index is greater than or equal to the number of adapters in the local  system, or <see cref=\"F:SharpDX.DXGI.ResultCode.InvalidCall\"/> if <em>ppAdapter</em> parameter is <strong><c>null</c></strong>.</p></returns>\t\n            <remarks>\t\n            <p>This method is not supported by DXGI 1.0, which shipped in Windows?Vista and Windows Server?2008. DXGI 1.1 support is required, which is available on  Windows?7, Windows Server?2008?R2, and as an update to Windows?Vista with Service Pack?2 (SP2) (KB 971644) and Windows Server?2008 (KB 971512).</p><p>When you create a factory, the factory enumerates the set of adapters that are available in the system. Therefore, if you change the adapters in a system, you must destroy  and recreate the <strong><see cref=\"T:SharpDX.DXGI.Factory1\"/></strong> object. The number of adapters in a system changes when you add or remove a display card, or dock or undock a laptop. </p><p>When the <strong>EnumAdapters1</strong> method succeeds and fills the <em>ppAdapter</em> parameter with the address of the reference to the adapter interface, <strong>EnumAdapters1</strong> increments the adapter interface's reference count. When you finish using the  adapter interface, call the <strong>Release</strong> method to decrement the reference count before you destroy the reference.</p><p><strong>EnumAdapters1</strong> first returns the local adapter with the output on which the desktop primary is displayed. This adapter corresponds with an index of zero. <strong>EnumAdapters1</strong> next returns other adapters with outputs. <strong>EnumAdapters1</strong> finally returns adapters without outputs.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGIFactory1::EnumAdapters1']/*\"/>\t\n            <msdn-id>ff471336</msdn-id>\t\n            <unmanaged>HRESULT IDXGIFactory1::EnumAdapters1([In] unsigned int Adapter,[Out] IDXGIAdapter1** ppAdapter)</unmanaged>\t\n            <unmanaged-short>IDXGIFactory1::EnumAdapters1</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.Factory1.IsCurrent_\">\n            <summary>\t\n            <p>Informs an application of the possible need to re-enumerate adapters.</p>\t\n            </summary>\t\n            <returns><p><strong><see cref=\"F:SharpDX.Result.False\"/></strong>, if a new adapter is becoming available or the current adapter is going away. <strong>TRUE</strong>, no adapter changes.</p><p><strong>IsCurrent</strong> returns <strong><see cref=\"F:SharpDX.Result.False\"/></strong> to inform the calling application to re-enumerate adapters.</p></returns>\t\n            <remarks>\t\n            <p>This method is not supported by DXGI 1.0, which shipped in Windows?Vista and Windows Server?2008. DXGI 1.1 support is required, which is available on  Windows?7, Windows Server?2008?R2, and as an update to Windows?Vista with Service Pack?2 (SP2) (KB 971644) and Windows Server?2008 (KB 971512).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGIFactory1::IsCurrent']/*\"/>\t\n            <msdn-id>ff471337</msdn-id>\t\n            <unmanaged>BOOL IDXGIFactory1::IsCurrent()</unmanaged>\t\n            <unmanaged-short>IDXGIFactory1::IsCurrent</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.DXGI.Factory1.Adapters1\">\n            <summary>\n            Return an array of <see cref=\"T:SharpDX.DXGI.Adapter1\"/> available from this factory.\n            </summary>\n            <unmanaged>HRESULT IDXGIFactory1::EnumAdapters1([In] unsigned int Adapter,[Out] IDXGIAdapter1** ppAdapter)</unmanaged>\t\n        </member>\n        <member name=\"P:SharpDX.DXGI.Factory1.IsCurrent\">\n            <summary>\t\n            <p>Informs an application of the possible need to re-enumerate adapters.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This method is not supported by DXGI 1.0, which shipped in Windows?Vista and Windows Server?2008. DXGI 1.1 support is required, which is available on  Windows?7, Windows Server?2008?R2, and as an update to Windows?Vista with Service Pack?2 (SP2) (KB 971644) and Windows Server?2008 (KB 971512).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGIFactory1::IsCurrent']/*\"/>\t\n            <msdn-id>ff471337</msdn-id>\t\n            <unmanaged>IsCurrent</unmanaged>\t\n            <unmanaged-short>IsCurrent</unmanaged-short>\t\n            <unmanaged>BOOL IDXGIFactory1::IsCurrent()</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DXGI.FormatHelper\">\n            <summary>\n            Helper to use with <see cref=\"T:SharpDX.DXGI.Format\"/>.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.DXGI.FormatHelper.SizeOfInBytes(SharpDX.DXGI.Format)\">\n            <summary>\n            Calculates the size of a <see cref=\"T:SharpDX.DXGI.Format\"/> in bytes.\n            </summary>\n            <param name=\"format\">The dxgi format.</param>\n            <returns>size of in bytes</returns>\n        </member>\n        <member name=\"M:SharpDX.DXGI.FormatHelper.SizeOfInBits(SharpDX.DXGI.Format)\">\n            <summary>\n            Calculates the size of a <see cref=\"T:SharpDX.DXGI.Format\"/> in bits.\n            </summary>\n            <param name=\"format\">The dxgi format.</param>\n            <returns>size of in bits</returns>\n        </member>\n        <member name=\"M:SharpDX.DXGI.FormatHelper.IsValid(SharpDX.DXGI.Format)\">\n            <summary>\n            Returns true if the <see cref=\"T:SharpDX.DXGI.Format\"/> is valid.\n            </summary>\n            <param name=\"format\">A format to validate</param>\n            <returns>True if the <see cref=\"T:SharpDX.DXGI.Format\"/> is valid.</returns>\n        </member>\n        <member name=\"M:SharpDX.DXGI.FormatHelper.IsCompressed(SharpDX.DXGI.Format)\">\n            <summary>\n            Returns true if the <see cref=\"T:SharpDX.DXGI.Format\"/> is a compressed format.\n            </summary>\n            <param name=\"fmt\">The format to check for compressed.</param>\n            <returns>True if the <see cref=\"T:SharpDX.DXGI.Format\"/> is a compressed format</returns>\n        </member>\n        <member name=\"M:SharpDX.DXGI.FormatHelper.IsPacked(SharpDX.DXGI.Format)\">\n            <summary>\n            Determines whether the specified <see cref=\"T:SharpDX.DXGI.Format\"/> is packed.\n            </summary>\n            <param name=\"fmt\">The DXGI Format.</param>\n            <returns><c>true</c> if the specified <see cref=\"T:SharpDX.DXGI.Format\"/> is packed; otherwise, <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.DXGI.FormatHelper.IsVideo(SharpDX.DXGI.Format)\">\n            <summary>\n            Determines whether the specified <see cref=\"T:SharpDX.DXGI.Format\"/> is video.\n            </summary>\n            <param name=\"fmt\">The <see cref=\"T:SharpDX.DXGI.Format\"/>.</param>\n            <returns><c>true</c> if the specified <see cref=\"T:SharpDX.DXGI.Format\"/> is video; otherwise, <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.DXGI.FormatHelper.IsSRgb(SharpDX.DXGI.Format)\">\n            <summary>\n            Determines whether the specified <see cref=\"T:SharpDX.DXGI.Format\"/> is a SRGB format.\n            </summary>\n            <param name=\"fmt\">The <see cref=\"T:SharpDX.DXGI.Format\"/>.</param>\n            <returns><c>true</c> if the specified <see cref=\"T:SharpDX.DXGI.Format\"/> is a SRGB format; otherwise, <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.DXGI.FormatHelper.IsTypeless(SharpDX.DXGI.Format)\">\n            <summary>\n            Determines whether the specified <see cref=\"T:SharpDX.DXGI.Format\"/> is typeless.\n            </summary>\n            <param name=\"fmt\">The <see cref=\"T:SharpDX.DXGI.Format\"/>.</param>\n            <returns><c>true</c> if the specified <see cref=\"T:SharpDX.DXGI.Format\"/> is typeless; otherwise, <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.DXGI.FormatHelper.ComputeScanlineCount(SharpDX.DXGI.Format,System.Int32)\">\n            <summary>\n            Computes the scanline count (number of scanlines).\n            </summary>\n            <param name=\"fmt\">The <see cref=\"T:SharpDX.DXGI.Format\"/>.</param>\n            <param name=\"height\">The height.</param>\n            <returns>The scanline count.</returns>\n        </member>\n        <member name=\"M:SharpDX.DXGI.FormatHelper.#cctor\">\n            <summary>\n            Static initializer to speed up size calculation (not sure the JIT is enough \"smart\" for this kind of thing).\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.DXGI.AdapterFlags\">\n            <summary>\t\n            <p>Identifies the type of DXGI adapter.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The <strong><see cref=\"T:SharpDX.DXGI.AdapterFlags\"/></strong> enumerated type is used by the <strong>Flags</strong> member of the <strong><see cref=\"T:SharpDX.DXGI.AdapterDescription1\"/></strong> or <strong>DXGI_ADAPTER_DESC2</strong> structure to  identify the type of DXGI adapter.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_ADAPTER_FLAG']/*\"/>\t\n            <msdn-id>ff471327</msdn-id>\t\n            <unmanaged>DXGI_ADAPTER_FLAG</unmanaged>\t\n            <unmanaged-short>DXGI_ADAPTER_FLAG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.AdapterFlags.None\">\n            <summary>\t\n            <dd> <p>Specifies no flags.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_ADAPTER_FLAG_NONE']/*\"/>\t\n            <msdn-id>ff471327</msdn-id>\t\n            <unmanaged>DXGI_ADAPTER_FLAG_NONE</unmanaged>\t\n            <unmanaged-short>DXGI_ADAPTER_FLAG_NONE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.AdapterFlags.Remote\">\n            <summary>\t\n            <dd> <p>Value always set to 0. This flag is reserved.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_ADAPTER_FLAG_REMOTE']/*\"/>\t\n            <msdn-id>ff471327</msdn-id>\t\n            <unmanaged>DXGI_ADAPTER_FLAG_REMOTE</unmanaged>\t\n            <unmanaged-short>DXGI_ADAPTER_FLAG_REMOTE</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DXGI.DisplayModeEnumerationFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_ENUM_MODES_FLAGS']/*\"/>\t\n            <unmanaged>DXGI_ENUM_MODES_FLAGS</unmanaged>\t\n            <unmanaged-short>DXGI_ENUM_MODES_FLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.DisplayModeEnumerationFlags.Interlaced\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_ENUM_MODES_INTERLACED']/*\"/>\t\n            <unmanaged>DXGI_ENUM_MODES_INTERLACED</unmanaged>\t\n            <unmanaged-short>DXGI_ENUM_MODES_INTERLACED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.DisplayModeEnumerationFlags.Scaling\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_ENUM_MODES_SCALING']/*\"/>\t\n            <unmanaged>DXGI_ENUM_MODES_SCALING</unmanaged>\t\n            <unmanaged-short>DXGI_ENUM_MODES_SCALING</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DXGI.DisplayModeRotation\">\n            <summary>\t\n            <p>Flags that indicate how the back buffers should be rotated to fit the physical rotation of a monitor.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_MODE_ROTATION']/*\"/>\t\n            <msdn-id>bb173065</msdn-id>\t\n            <unmanaged>DXGI_MODE_ROTATION</unmanaged>\t\n            <unmanaged-short>DXGI_MODE_ROTATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.DisplayModeRotation.Unspecified\">\n            <summary>\t\n            <dd> <p>Unspecified rotation.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_MODE_ROTATION_UNSPECIFIED']/*\"/>\t\n            <msdn-id>bb173065</msdn-id>\t\n            <unmanaged>DXGI_MODE_ROTATION_UNSPECIFIED</unmanaged>\t\n            <unmanaged-short>DXGI_MODE_ROTATION_UNSPECIFIED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.DisplayModeRotation.Identity\">\n            <summary>\t\n            <dd> <p>Specifies no rotation.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_MODE_ROTATION_IDENTITY']/*\"/>\t\n            <msdn-id>bb173065</msdn-id>\t\n            <unmanaged>DXGI_MODE_ROTATION_IDENTITY</unmanaged>\t\n            <unmanaged-short>DXGI_MODE_ROTATION_IDENTITY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.DisplayModeRotation.Rotate90\">\n            <summary>\t\n            <dd> <p>Specifies 90 degrees of rotation.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_MODE_ROTATION_ROTATE90']/*\"/>\t\n            <msdn-id>bb173065</msdn-id>\t\n            <unmanaged>DXGI_MODE_ROTATION_ROTATE90</unmanaged>\t\n            <unmanaged-short>DXGI_MODE_ROTATION_ROTATE90</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.DisplayModeRotation.Rotate180\">\n            <summary>\t\n            <dd> <p>Specifies 180 degrees of rotation.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_MODE_ROTATION_ROTATE180']/*\"/>\t\n            <msdn-id>bb173065</msdn-id>\t\n            <unmanaged>DXGI_MODE_ROTATION_ROTATE180</unmanaged>\t\n            <unmanaged-short>DXGI_MODE_ROTATION_ROTATE180</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.DisplayModeRotation.Rotate270\">\n            <summary>\t\n            <dd> <p>Specifies 270 degrees of rotation.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_MODE_ROTATION_ROTATE270']/*\"/>\t\n            <msdn-id>bb173065</msdn-id>\t\n            <unmanaged>DXGI_MODE_ROTATION_ROTATE270</unmanaged>\t\n            <unmanaged-short>DXGI_MODE_ROTATION_ROTATE270</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DXGI.DisplayModeScaling\">\n            <summary>\t\n            <p>Flags indicating how an image is stretched to fit a given monitor's resolution.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_MODE_SCALING']/*\"/>\t\n            <msdn-id>bb173066</msdn-id>\t\n            <unmanaged>DXGI_MODE_SCALING</unmanaged>\t\n            <unmanaged-short>DXGI_MODE_SCALING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.DisplayModeScaling.Unspecified\">\n            <summary>\t\n            <dd> <p>Unspecified scaling.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_MODE_SCALING_UNSPECIFIED']/*\"/>\t\n            <msdn-id>bb173066</msdn-id>\t\n            <unmanaged>DXGI_MODE_SCALING_UNSPECIFIED</unmanaged>\t\n            <unmanaged-short>DXGI_MODE_SCALING_UNSPECIFIED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.DisplayModeScaling.Centered\">\n            <summary>\t\n            <dd> <p>Specifies no scaling. The image is centered on the display. This flag is typically used for a fixed-dot-pitch display (such as an LED display).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_MODE_SCALING_CENTERED']/*\"/>\t\n            <msdn-id>bb173066</msdn-id>\t\n            <unmanaged>DXGI_MODE_SCALING_CENTERED</unmanaged>\t\n            <unmanaged-short>DXGI_MODE_SCALING_CENTERED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.DisplayModeScaling.Stretched\">\n            <summary>\t\n            <dd> <p>Specifies stretched scaling.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_MODE_SCALING_STRETCHED']/*\"/>\t\n            <msdn-id>bb173066</msdn-id>\t\n            <unmanaged>DXGI_MODE_SCALING_STRETCHED</unmanaged>\t\n            <unmanaged-short>DXGI_MODE_SCALING_STRETCHED</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DXGI.DisplayModeScanlineOrder\">\n            <summary>\t\n            <p>Flags indicating the method the raster uses to create an image on a surface.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_MODE_SCANLINE_ORDER']/*\"/>\t\n            <msdn-id>bb173067</msdn-id>\t\n            <unmanaged>DXGI_MODE_SCANLINE_ORDER</unmanaged>\t\n            <unmanaged-short>DXGI_MODE_SCANLINE_ORDER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.DisplayModeScanlineOrder.Unspecified\">\n            <summary>\t\n            <dd> <p>Scanline order is unspecified.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_MODE_SCANLINE_ORDER_UNSPECIFIED']/*\"/>\t\n            <msdn-id>bb173067</msdn-id>\t\n            <unmanaged>DXGI_MODE_SCANLINE_ORDER_UNSPECIFIED</unmanaged>\t\n            <unmanaged-short>DXGI_MODE_SCANLINE_ORDER_UNSPECIFIED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.DisplayModeScanlineOrder.Progressive\">\n            <summary>\t\n            <dd> <p>The image is created from the first scanline to the last without skipping any.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_MODE_SCANLINE_ORDER_PROGRESSIVE']/*\"/>\t\n            <msdn-id>bb173067</msdn-id>\t\n            <unmanaged>DXGI_MODE_SCANLINE_ORDER_PROGRESSIVE</unmanaged>\t\n            <unmanaged-short>DXGI_MODE_SCANLINE_ORDER_PROGRESSIVE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.DisplayModeScanlineOrder.UpperFieldFirst\">\n            <summary>\t\n            <dd> <p>The image is created beginning with the upper field.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_MODE_SCANLINE_ORDER_UPPER_FIELD_FIRST']/*\"/>\t\n            <msdn-id>bb173067</msdn-id>\t\n            <unmanaged>DXGI_MODE_SCANLINE_ORDER_UPPER_FIELD_FIRST</unmanaged>\t\n            <unmanaged-short>DXGI_MODE_SCANLINE_ORDER_UPPER_FIELD_FIRST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.DisplayModeScanlineOrder.LowerFieldFirst\">\n            <summary>\t\n            <dd> <p>The image is created beginning with the lower field.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_MODE_SCANLINE_ORDER_LOWER_FIELD_FIRST']/*\"/>\t\n            <msdn-id>bb173067</msdn-id>\t\n            <unmanaged>DXGI_MODE_SCANLINE_ORDER_LOWER_FIELD_FIRST</unmanaged>\t\n            <unmanaged-short>DXGI_MODE_SCANLINE_ORDER_LOWER_FIELD_FIRST</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DXGI.DXGIStatus\">\n            <summary>\t\n            <p>Status codes that can be returned by DXGI functions.</p><p></p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_STATUS']/*\"/>\t\n            <msdn-id>cc308061</msdn-id>\t\n            <unmanaged>DXGI_STATUS</unmanaged>\t\n            <unmanaged-short>DXGI_STATUS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.DXGIStatus.Occluded\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_STATUS_OCCLUDED']/*\"/>\t\n            <unmanaged>DXGI_STATUS_OCCLUDED</unmanaged>\t\n            <unmanaged-short>DXGI_STATUS_OCCLUDED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.DXGIStatus.Clipped\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_STATUS_CLIPPED']/*\"/>\t\n            <unmanaged>DXGI_STATUS_CLIPPED</unmanaged>\t\n            <unmanaged-short>DXGI_STATUS_CLIPPED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.DXGIStatus.NoRedirection\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_STATUS_NO_REDIRECTION']/*\"/>\t\n            <unmanaged>DXGI_STATUS_NO_REDIRECTION</unmanaged>\t\n            <unmanaged-short>DXGI_STATUS_NO_REDIRECTION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.DXGIStatus.NoDesktopAccess\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_STATUS_NO_DESKTOP_ACCESS']/*\"/>\t\n            <unmanaged>DXGI_STATUS_NO_DESKTOP_ACCESS</unmanaged>\t\n            <unmanaged-short>DXGI_STATUS_NO_DESKTOP_ACCESS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.DXGIStatus.GraphicsVidpnSourceInUse\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_STATUS_GRAPHICS_VIDPN_SOURCE_IN_USE']/*\"/>\t\n            <unmanaged>DXGI_STATUS_GRAPHICS_VIDPN_SOURCE_IN_USE</unmanaged>\t\n            <unmanaged-short>DXGI_STATUS_GRAPHICS_VIDPN_SOURCE_IN_USE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.DXGIStatus.ModeChanged\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_STATUS_MODE_CHANGED']/*\"/>\t\n            <unmanaged>DXGI_STATUS_MODE_CHANGED</unmanaged>\t\n            <unmanaged-short>DXGI_STATUS_MODE_CHANGED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.DXGIStatus.ModeChangeInProgress\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_STATUS_MODE_CHANGE_IN_PROGRESS']/*\"/>\t\n            <unmanaged>DXGI_STATUS_MODE_CHANGE_IN_PROGRESS</unmanaged>\t\n            <unmanaged-short>DXGI_STATUS_MODE_CHANGE_IN_PROGRESS</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DXGI.Format\">\n            <summary>\t\n            <p>Resource data formats which includes fully-typed and typeless formats. There is a list of format modifiers at the bottom of the page,  that more fully describes each format type.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>A few formats have additional restrictions.</p><ol> <li>A resource declared with the DXGI_FORMAT_R32G32B32 family of formats cannot be used simultaneously for vertex and texture data. That is, you may not create a buffer resource with the DXGI_FORMAT_R32G32B32 family of formats that uses any of the following bind flags: <see cref=\"!:SharpDX.Direct3D10.BindFlags.VertexBuffer\"/>, <see cref=\"!:SharpDX.Direct3D10.BindFlags.IndexBuffer\"/>, <see cref=\"!:SharpDX.Direct3D10.BindFlags.ConstantBuffer\"/>, or <see cref=\"!:SharpDX.Direct3D10.BindFlags.StreamOutput\"/> (see <strong><see cref=\"!:SharpDX.Direct3D10.BindFlags\"/></strong>).</li> <li><see cref=\"F:SharpDX.DXGI.Format.R1_UNorm\"/> is designed specifically for text filtering, and must be used with a format-specific, configurable 8x8 filter mode. When calling an HLSL sampling function using this format, the address offset parameter must be set to (0,0).</li> <li>A resource using a sub-sampled format (such as DXGI_FORMAT_R8G8_B8G8) must have a size that is a multiple of 2 in the x dimension.</li> <li>Format is not available in Direct3D 10 and Direct3D 10.1</li> </ol><p>The following topics provide lists of the formats that particular hardware feature levels support:</p><ul> <li> Hardware Support for Direct3D 11.1 Formats </li> <li> Hardware Support for Direct3D 11 Formats </li> <li> Hardware Support for Direct3D 10.1 Formats </li> <li> Hardware Support for Direct3D 10 Formats </li> <li> Hardware Support for Direct3D 10Level9 Formats </li> </ul><p>For a list of the <strong>DirectXMath</strong> types that map to <strong><see cref=\"T:SharpDX.DXGI.Format\"/></strong> values, see DirectXMath Library Internals.</p>Format Modifiers<p>Each enumeration value contains a format modifier which describes the data type.</p><table> <tr><th>Format Modifiers</th><th>Description</th></tr> <tr><td>_FLOAT</td><td>A floating-point value; 32-bit floating-point formats use IEEE 754 single-precision (s23e8 format): sign bit, 8-bit biased (127) exponent,  and 23-bit mantissa. 16-bit floating-point formats use half-precision (s10e5 format): sign bit, 5-bit biased (15) exponent, and 10-bit mantissa.</td></tr> <tr><td>_SINT</td><td>Two's complement signed integer. For example, a 3-bit SINT represents the values -4, -3, -2, -1, 0, 1, 2, 3.</td></tr> <tr><td>_SNORM</td><td>Signed normalized integer; which is interpreted in a resource as a signed integer, and is interpreted in a shader as a signed normalized floating-point value in the range [-1, 1]. For an 2's complement number, the maximum value is 1.0f (a 5-bit value 01111 maps to 1.0f), and the minimum value is -1.0f (a 5-bit value 10000 maps to -1.0f). In addition, the second-minimum number maps to -1.0f (a 5-bit value 10001 maps to -1.0f). The resulting integer representations are evenly spaced floating-point values in the range (-1.0f...0.0f), and also a complementary set of representations for numbers in the range (0.0f...1.0f).</td></tr> <tr><td>_SRGB</td><td>Standard RGB data, which roughly displays colors in a linear ramp of luminosity levels such that an average observer, under average viewing conditions, can view them on an average display.  <p>All 0's maps to 0.0f, and all 1's maps to 1.0f. The sequence of unsigned integer encodings between all 0's and all 1's represent a nonlinear progression in the floating-point interpretation of the numbers between 0.0f to 1.0f. For more detail, see the SRGB color standard, IEC 61996-2-1, at IEC (International Electrotechnical Commission).</p> Conversion to or from sRGB space is automatically done by D3DX10 or D3DX9 texture-load functions. If the format has an alpha channel, the alpha data is also stored in sRGB color space. </td></tr> <tr><td>_TYPELESS</td><td>Typeless data, with a defined number of bits. Typeless formats are designed for creating typeless resources; that is, a resource whose size is known, but whose data type is not yet fully defined. When a typeless resource is bound to a shader, the application or shader must resolve the format type (which must match the number of bits per component in the typeless format). <p>A typeless format contains one or more subformats; each subformat resolves the data type. For example, in the R32G32B32 group, which defines types for three-component 96-bit data, there is one typeless format and three fully typed subformats.</p>  <pre><code> <see cref=\"F:SharpDX.DXGI.Format.R32G32B32_Typeless\"/>, <see cref=\"F:SharpDX.DXGI.Format.R32G32B32_Float\"/>, <see cref=\"F:SharpDX.DXGI.Format.R32G32B32_UInt\"/>, <see cref=\"F:SharpDX.DXGI.Format.R32G32B32_SInt\"/>,\t\n            </code></pre>  </td></tr> <tr><td>_UINT</td><td>Unsigned integer. For instance, a 3-bit UINT represents the values 0, 1, 2, 3, 4, 5, 6, 7.</td></tr> <tr><td>_UNORM</td><td>Unsigned normalized integer; which is interpreted in a resource as an unsigned integer, and is interpreted in a shader as an unsigned normalized floating-point value in the range [0, 1]. All 0's maps to 0.0f, and all 1's maps to 1.0f. A sequence of evenly spaced floating-point values from 0.0f to 1.0f are represented. For instance, a 2-bit UNORM represents 0.0f, 1/3, 2/3, and 1.0f.</td></tr> </table><p>?</p>New Resource Formats<p>Direct3D 10 offers new data compression formats for compressing high-dynamic range (HDR) lighting data, normal maps and heightfields to a fraction of their original size. These compression types include:</p><ul> <li>Shared-Exponent high-dynamic range (HDR) format (RGBE)</li> <li>New Block-Compressed 1-2 channel UNORM/SNORM formats</li> </ul><p>The block compression formats can be used for any of the 2D or 3D texture types ( Texture2D, Texture2DArray, Texture3D, or TextureCube) including mipmap surfaces. The block compression techniques require texture dimensions to be a multiple of 4 (since the implementation compresses on blocks of 4x4 texels). In the texture sampler, compressed formats are always decompressed before texture filtering.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.Unknown\">\n            <summary>\t\n            <dd> <p>The format is not known.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_UNKNOWN']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_UNKNOWN</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_UNKNOWN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.R32G32B32A32_Typeless\">\n            <summary>\t\n            <dd> <p>A four-component, 128-bit typeless format that supports 32 bits per channel including alpha. 1</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_R32G32B32A32_TYPELESS']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_R32G32B32A32_TYPELESS</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_R32G32B32A32_TYPELESS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.R32G32B32A32_Float\">\n            <summary>\t\n            <dd> <p>A four-component, 128-bit floating-point format that supports 32 bits per channel including alpha. 1</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_R32G32B32A32_FLOAT']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_R32G32B32A32_FLOAT</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_R32G32B32A32_FLOAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.R32G32B32A32_UInt\">\n            <summary>\t\n            <dd> <p>A four-component, 128-bit unsigned-integer format that supports 32 bits per channel including alpha. 1</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_R32G32B32A32_UINT']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_R32G32B32A32_UINT</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_R32G32B32A32_UINT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.R32G32B32A32_SInt\">\n            <summary>\t\n            <dd> <p>A four-component, 128-bit signed-integer format that supports 32 bits per channel including alpha. 1</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_R32G32B32A32_SINT']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_R32G32B32A32_SINT</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_R32G32B32A32_SINT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.R32G32B32_Typeless\">\n            <summary>\t\n            <dd> <p>A three-component, 96-bit typeless format that supports 32 bits per color channel.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_R32G32B32_TYPELESS']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_R32G32B32_TYPELESS</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_R32G32B32_TYPELESS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.R32G32B32_Float\">\n            <summary>\t\n            <dd> <p>A three-component, 96-bit floating-point format that supports 32 bits per color channel.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_R32G32B32_FLOAT']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_R32G32B32_FLOAT</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_R32G32B32_FLOAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.R32G32B32_UInt\">\n            <summary>\t\n            <dd> <p>A three-component, 96-bit unsigned-integer format that supports 32 bits per color channel.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_R32G32B32_UINT']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_R32G32B32_UINT</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_R32G32B32_UINT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.R32G32B32_SInt\">\n            <summary>\t\n            <dd> <p>A three-component, 96-bit signed-integer format that supports 32 bits per color channel.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_R32G32B32_SINT']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_R32G32B32_SINT</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_R32G32B32_SINT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.R16G16B16A16_Typeless\">\n            <summary>\t\n            <dd> <p>A four-component, 64-bit typeless format that supports 16 bits per channel including alpha.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_R16G16B16A16_TYPELESS']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_R16G16B16A16_TYPELESS</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_R16G16B16A16_TYPELESS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.R16G16B16A16_Float\">\n            <summary>\t\n            <dd> <p>A four-component, 64-bit floating-point format that supports 16 bits per channel including alpha.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_R16G16B16A16_FLOAT']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_R16G16B16A16_FLOAT</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_R16G16B16A16_FLOAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.R16G16B16A16_UNorm\">\n            <summary>\t\n            <dd> <p>A four-component, 64-bit unsigned-normalized-integer format that supports 16 bits per channel including alpha.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_R16G16B16A16_UNORM']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_R16G16B16A16_UNORM</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_R16G16B16A16_UNORM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.R16G16B16A16_UInt\">\n            <summary>\t\n            <dd> <p>A four-component, 64-bit unsigned-integer format that supports 16 bits per channel including alpha.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_R16G16B16A16_UINT']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_R16G16B16A16_UINT</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_R16G16B16A16_UINT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.R16G16B16A16_SNorm\">\n            <summary>\t\n            <dd> <p>A four-component, 64-bit signed-normalized-integer format that supports 16 bits per channel including alpha.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_R16G16B16A16_SNORM']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_R16G16B16A16_SNORM</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_R16G16B16A16_SNORM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.R16G16B16A16_SInt\">\n            <summary>\t\n            <dd> <p>A four-component, 64-bit signed-integer format that supports 16 bits per channel including alpha.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_R16G16B16A16_SINT']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_R16G16B16A16_SINT</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_R16G16B16A16_SINT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.R32G32_Typeless\">\n            <summary>\t\n            <dd> <p>A two-component, 64-bit typeless format that supports 32 bits for the red channel and 32 bits for the green channel.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_R32G32_TYPELESS']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_R32G32_TYPELESS</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_R32G32_TYPELESS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.R32G32_Float\">\n            <summary>\t\n            <dd> <p>A two-component, 64-bit floating-point format that supports 32 bits for the red channel and 32 bits for the green channel.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_R32G32_FLOAT']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_R32G32_FLOAT</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_R32G32_FLOAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.R32G32_UInt\">\n            <summary>\t\n            <dd> <p>A two-component, 64-bit unsigned-integer format that supports 32 bits for the red channel and 32 bits for the green channel.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_R32G32_UINT']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_R32G32_UINT</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_R32G32_UINT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.R32G32_SInt\">\n            <summary>\t\n            <dd> <p>A two-component, 64-bit signed-integer format that supports 32 bits for the red channel and 32 bits for the green channel.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_R32G32_SINT']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_R32G32_SINT</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_R32G32_SINT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.R32G8X24_Typeless\">\n            <summary>\t\n            <dd> <p>A two-component, 64-bit typeless format that supports 32 bits for the red channel, 8 bits for the green channel, and 24 bits are unused.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_R32G8X24_TYPELESS']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_R32G8X24_TYPELESS</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_R32G8X24_TYPELESS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.D32_Float_S8X24_UInt\">\n            <summary>\t\n            <dd> <p>A 32-bit floating-point component, and two unsigned-integer components (with an additional 32 bits). This format supports 32-bit depth, 8-bit stencil, and 24 bits are unused.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_D32_FLOAT_S8X24_UINT']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_D32_FLOAT_S8X24_UINT</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_D32_FLOAT_S8X24_UINT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.R32_Float_X8X24_Typeless\">\n            <summary>\t\n            <dd> <p>A 32-bit floating-point component, and two typeless components (with an additional 32 bits). This format supports 32-bit red channel, 8 bits are unused, and 24 bits are unused.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.X32_Typeless_G8X24_UInt\">\n            <summary>\t\n            <dd> <p>A 32-bit typeless component, and two unsigned-integer components (with an additional 32 bits). This format has 32 bits unused, 8 bits for green channel, and 24 bits are unused.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_X32_TYPELESS_G8X24_UINT']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_X32_TYPELESS_G8X24_UINT</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_X32_TYPELESS_G8X24_UINT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.R10G10B10A2_Typeless\">\n            <summary>\t\n            <dd> <p>A four-component, 32-bit typeless format that supports 10 bits for each color and 2 bits for alpha.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_R10G10B10A2_TYPELESS']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_R10G10B10A2_TYPELESS</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_R10G10B10A2_TYPELESS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.R10G10B10A2_UNorm\">\n            <summary>\t\n            <dd> <p>A four-component, 32-bit unsigned-normalized-integer format that supports 10 bits for each color and 2 bits for alpha.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_R10G10B10A2_UNORM']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_R10G10B10A2_UNORM</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_R10G10B10A2_UNORM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.R10G10B10A2_UInt\">\n            <summary>\t\n            <dd> <p>A four-component, 32-bit unsigned-integer format that supports 10 bits for each color and 2 bits for alpha.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_R10G10B10A2_UINT']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_R10G10B10A2_UINT</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_R10G10B10A2_UINT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.R11G11B10_Float\">\n            <summary>\t\n            <dd> <p>Three partial-precision floating-point numbers encoded into a single 32-bit value (a variant of s10e5, which is sign bit, 10-bit mantissa, and 5-bit biased (15) exponent).  There are no sign bits, and there is a 5-bit biased (15) exponent for each channel, 6-bit mantissa  for R and G, and a 5-bit mantissa for B, as shown in the following illustration.</p> <p></p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_R11G11B10_FLOAT']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_R11G11B10_FLOAT</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_R11G11B10_FLOAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.R8G8B8A8_Typeless\">\n            <summary>\t\n            <dd> <p>A four-component, 32-bit typeless format that supports 8 bits per channel including alpha.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_R8G8B8A8_TYPELESS']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_R8G8B8A8_TYPELESS</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_R8G8B8A8_TYPELESS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.R8G8B8A8_UNorm\">\n            <summary>\t\n            <dd> <p>A four-component, 32-bit unsigned-normalized-integer format that supports 8 bits per channel including alpha.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_R8G8B8A8_UNORM']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_R8G8B8A8_UNORM</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_R8G8B8A8_UNORM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.R8G8B8A8_UNorm_SRgb\">\n            <summary>\t\n            <dd> <p>A four-component, 32-bit unsigned-normalized integer sRGB format that supports 8 bits per channel including alpha.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_R8G8B8A8_UNORM_SRGB']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_R8G8B8A8_UNORM_SRGB</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_R8G8B8A8_UNORM_SRGB</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.R8G8B8A8_UInt\">\n            <summary>\t\n            <dd> <p>A four-component, 32-bit unsigned-integer format that supports 8 bits per channel including alpha.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_R8G8B8A8_UINT']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_R8G8B8A8_UINT</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_R8G8B8A8_UINT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.R8G8B8A8_SNorm\">\n            <summary>\t\n            <dd> <p>A four-component, 32-bit signed-normalized-integer format that supports 8 bits per channel including alpha.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_R8G8B8A8_SNORM']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_R8G8B8A8_SNORM</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_R8G8B8A8_SNORM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.R8G8B8A8_SInt\">\n            <summary>\t\n            <dd> <p>A four-component, 32-bit signed-integer format that supports 8 bits per channel including alpha.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_R8G8B8A8_SINT']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_R8G8B8A8_SINT</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_R8G8B8A8_SINT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.R16G16_Typeless\">\n            <summary>\t\n            <dd> <p>A two-component, 32-bit typeless format that supports 16 bits for the red channel and 16 bits for the green channel.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_R16G16_TYPELESS']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_R16G16_TYPELESS</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_R16G16_TYPELESS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.R16G16_Float\">\n            <summary>\t\n            <dd> <p>A two-component, 32-bit floating-point format that supports 16 bits for the red channel and 16 bits for the green channel.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_R16G16_FLOAT']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_R16G16_FLOAT</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_R16G16_FLOAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.R16G16_UNorm\">\n            <summary>\t\n            <dd> <p>A two-component, 32-bit unsigned-normalized-integer format that supports 16 bits each for the green and red channels.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_R16G16_UNORM']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_R16G16_UNORM</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_R16G16_UNORM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.R16G16_UInt\">\n            <summary>\t\n            <dd> <p>A two-component, 32-bit unsigned-integer format that supports 16 bits for the red channel and 16 bits for the green channel.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_R16G16_UINT']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_R16G16_UINT</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_R16G16_UINT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.R16G16_SNorm\">\n            <summary>\t\n            <dd> <p>A two-component, 32-bit signed-normalized-integer format that supports 16 bits for the red channel and 16 bits for the green channel.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_R16G16_SNORM']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_R16G16_SNORM</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_R16G16_SNORM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.R16G16_SInt\">\n            <summary>\t\n            <dd> <p>A two-component, 32-bit signed-integer format that supports 16 bits for the red channel and 16 bits for the green channel.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_R16G16_SINT']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_R16G16_SINT</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_R16G16_SINT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.R32_Typeless\">\n            <summary>\t\n            <dd> <p>A single-component, 32-bit typeless format that supports 32 bits for the red channel.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_R32_TYPELESS']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_R32_TYPELESS</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_R32_TYPELESS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.D32_Float\">\n            <summary>\t\n            <dd> <p>A single-component, 32-bit floating-point format that supports 32 bits for depth.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_D32_FLOAT']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_D32_FLOAT</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_D32_FLOAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.R32_Float\">\n            <summary>\t\n            <dd> <p>A single-component, 32-bit floating-point format that supports 32 bits for the red channel.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_R32_FLOAT']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_R32_FLOAT</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_R32_FLOAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.R32_UInt\">\n            <summary>\t\n            <dd> <p>A single-component, 32-bit unsigned-integer format that supports 32 bits for the red channel.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_R32_UINT']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_R32_UINT</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_R32_UINT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.R32_SInt\">\n            <summary>\t\n            <dd> <p>A single-component, 32-bit signed-integer format that supports 32 bits for the red channel.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_R32_SINT']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_R32_SINT</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_R32_SINT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.R24G8_Typeless\">\n            <summary>\t\n            <dd> <p>A two-component, 32-bit typeless format that supports 24 bits for the red channel and 8 bits for the green channel.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_R24G8_TYPELESS']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_R24G8_TYPELESS</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_R24G8_TYPELESS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.D24_UNorm_S8_UInt\">\n            <summary>\t\n            <dd> <p>A 32-bit z-buffer format that supports 24 bits for depth and 8 bits for stencil.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_D24_UNORM_S8_UINT']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_D24_UNORM_S8_UINT</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_D24_UNORM_S8_UINT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.R24_UNorm_X8_Typeless\">\n            <summary>\t\n            <dd> <p>A 32-bit format, that contains a 24 bit, single-component, unsigned-normalized integer, with an additional typeless 8 bits. This format has 24 bits red channel and 8 bits unused.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_R24_UNORM_X8_TYPELESS']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_R24_UNORM_X8_TYPELESS</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_R24_UNORM_X8_TYPELESS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.X24_Typeless_G8_UInt\">\n            <summary>\t\n            <dd> <p>A 32-bit format, that contains a 24 bit, single-component, typeless format,  with an additional 8 bit unsigned integer component. This format has 24 bits unused and 8 bits green channel.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_X24_TYPELESS_G8_UINT']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_X24_TYPELESS_G8_UINT</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_X24_TYPELESS_G8_UINT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.R8G8_Typeless\">\n            <summary>\t\n            <dd> <p>A two-component, 16-bit typeless format that supports 8 bits for the red channel and 8 bits for the green channel.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_R8G8_TYPELESS']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_R8G8_TYPELESS</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_R8G8_TYPELESS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.R8G8_UNorm\">\n            <summary>\t\n            <dd> <p>A two-component, 16-bit unsigned-normalized-integer format that supports 8 bits for the red channel and 8 bits for the green channel.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_R8G8_UNORM']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_R8G8_UNORM</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_R8G8_UNORM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.R8G8_UInt\">\n            <summary>\t\n            <dd> <p>A two-component, 16-bit unsigned-integer format that supports 8 bits for the red channel and 8 bits for the green channel.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_R8G8_UINT']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_R8G8_UINT</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_R8G8_UINT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.R8G8_SNorm\">\n            <summary>\t\n            <dd> <p>A two-component, 16-bit signed-normalized-integer format that supports 8 bits for the red channel and 8 bits for the green channel.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_R8G8_SNORM']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_R8G8_SNORM</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_R8G8_SNORM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.R8G8_SInt\">\n            <summary>\t\n            <dd> <p>A two-component, 16-bit signed-integer format that supports 8 bits for the red channel and 8 bits for the green channel.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_R8G8_SINT']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_R8G8_SINT</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_R8G8_SINT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.R16_Typeless\">\n            <summary>\t\n            <dd> <p>A single-component, 16-bit typeless format that supports 16 bits for the red channel.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_R16_TYPELESS']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_R16_TYPELESS</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_R16_TYPELESS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.R16_Float\">\n            <summary>\t\n            <dd> <p>A single-component, 16-bit floating-point format that supports 16 bits for the red channel.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_R16_FLOAT']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_R16_FLOAT</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_R16_FLOAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.D16_UNorm\">\n            <summary>\t\n            <dd> <p>A single-component, 16-bit unsigned-normalized-integer format that supports 16 bits for depth.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_D16_UNORM']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_D16_UNORM</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_D16_UNORM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.R16_UNorm\">\n            <summary>\t\n            <dd> <p>A single-component, 16-bit unsigned-normalized-integer format that supports 16 bits for the red channel.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_R16_UNORM']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_R16_UNORM</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_R16_UNORM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.R16_UInt\">\n            <summary>\t\n            <dd> <p>A single-component, 16-bit unsigned-integer format that supports 16 bits for the red channel.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_R16_UINT']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_R16_UINT</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_R16_UINT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.R16_SNorm\">\n            <summary>\t\n            <dd> <p>A single-component, 16-bit signed-normalized-integer format that supports 16 bits for the red channel.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_R16_SNORM']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_R16_SNORM</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_R16_SNORM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.R16_SInt\">\n            <summary>\t\n            <dd> <p>A single-component, 16-bit signed-integer format that supports 16 bits for the red channel.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_R16_SINT']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_R16_SINT</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_R16_SINT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.R8_Typeless\">\n            <summary>\t\n            <dd> <p>A single-component, 8-bit typeless format that supports 8 bits for the red channel.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_R8_TYPELESS']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_R8_TYPELESS</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_R8_TYPELESS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.R8_UNorm\">\n            <summary>\t\n            <dd> <p>A single-component, 8-bit unsigned-normalized-integer format that supports 8 bits for the red channel.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_R8_UNORM']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_R8_UNORM</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_R8_UNORM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.R8_UInt\">\n            <summary>\t\n            <dd> <p>A single-component, 8-bit unsigned-integer format that supports 8 bits for the red channel.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_R8_UINT']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_R8_UINT</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_R8_UINT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.R8_SNorm\">\n            <summary>\t\n            <dd> <p>A single-component, 8-bit signed-normalized-integer format that supports 8 bits for the red channel.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_R8_SNORM']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_R8_SNORM</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_R8_SNORM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.R8_SInt\">\n            <summary>\t\n            <dd> <p>A single-component, 8-bit signed-integer format that supports 8 bits for the red channel.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_R8_SINT']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_R8_SINT</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_R8_SINT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.A8_UNorm\">\n            <summary>\t\n            <dd> <p>A single-component, 8-bit unsigned-normalized-integer format for alpha only.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_A8_UNORM']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_A8_UNORM</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_A8_UNORM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.R1_UNorm\">\n            <summary>\t\n            <dd> <p>A single-component, 1-bit unsigned-normalized integer format that supports 1 bit for the red channel. 2.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_R1_UNORM']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_R1_UNORM</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_R1_UNORM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.R9G9B9E5_Sharedexp\">\n            <summary>\t\n            <dd> <p>Three partial-precision floating-point numbers encoded into a single 32-bit value all sharing the same 5-bit exponent (variant of s10e5, which is sign bit, 10-bit mantissa, and 5-bit biased (15) exponent).  There is no sign bit, and there is a shared 5-bit biased (15) exponent and a 9-bit mantissa for each channel, as shown in the following illustration. 2.</p> <p></p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_R9G9B9E5_SHAREDEXP']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_R9G9B9E5_SHAREDEXP</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_R9G9B9E5_SHAREDEXP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.R8G8_B8G8_UNorm\">\n            <summary>\t\n            <dd> <p>A four-component, 32-bit unsigned-normalized-integer format. This packed RGB format is analogous to the UYVY format. Each 32-bit block describes a pair of pixels: (R8, G8, B8) and (R8, G8, B8) where the R8/B8 values are repeated, and the G8 values are unique to each pixel. 3</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_R8G8_B8G8_UNORM']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_R8G8_B8G8_UNORM</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_R8G8_B8G8_UNORM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.G8R8_G8B8_UNorm\">\n            <summary>\t\n            <dd> <p>A four-component, 32-bit unsigned-normalized-integer format. This packed RGB format is analogous to the YUY2 format. Each 32-bit block describes a pair of pixels: (R8, G8, B8) and (R8, G8, B8) where the R8/B8 values are repeated, and the G8 values are unique to each pixel. 3</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_G8R8_G8B8_UNORM']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_G8R8_G8B8_UNORM</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_G8R8_G8B8_UNORM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.BC1_Typeless\">\n            <summary>\t\n            <dd> <p>Four-component typeless block-compression format. For information about block-compression formats, see Texture Block Compression in Direct3D 11.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_BC1_TYPELESS']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_BC1_TYPELESS</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_BC1_TYPELESS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.BC1_UNorm\">\n            <summary>\t\n            <dd> <p>Four-component block-compression format. For information about block-compression formats, see Texture Block Compression in Direct3D 11.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_BC1_UNORM']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_BC1_UNORM</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_BC1_UNORM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.BC1_UNorm_SRgb\">\n            <summary>\t\n            <dd> <p>Four-component block-compression format for sRGB data. For information about block-compression formats, see Texture Block Compression in Direct3D 11.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_BC1_UNORM_SRGB']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_BC1_UNORM_SRGB</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_BC1_UNORM_SRGB</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.BC2_Typeless\">\n            <summary>\t\n            <dd> <p>Four-component typeless block-compression format. For information about block-compression formats, see Texture Block Compression in Direct3D 11.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_BC2_TYPELESS']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_BC2_TYPELESS</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_BC2_TYPELESS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.BC2_UNorm\">\n            <summary>\t\n            <dd> <p>Four-component block-compression format. For information about block-compression formats, see Texture Block Compression in Direct3D 11.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_BC2_UNORM']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_BC2_UNORM</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_BC2_UNORM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.BC2_UNorm_SRgb\">\n            <summary>\t\n            <dd> <p>Four-component block-compression format for sRGB data. For information about block-compression formats, see Texture Block Compression in Direct3D 11.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_BC2_UNORM_SRGB']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_BC2_UNORM_SRGB</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_BC2_UNORM_SRGB</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.BC3_Typeless\">\n            <summary>\t\n            <dd> <p>Four-component typeless block-compression format. For information about block-compression formats, see Texture Block Compression in Direct3D 11.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_BC3_TYPELESS']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_BC3_TYPELESS</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_BC3_TYPELESS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.BC3_UNorm\">\n            <summary>\t\n            <dd> <p>Four-component block-compression format. For information about block-compression formats, see Texture Block Compression in Direct3D 11.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_BC3_UNORM']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_BC3_UNORM</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_BC3_UNORM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.BC3_UNorm_SRgb\">\n            <summary>\t\n            <dd> <p>Four-component block-compression format for sRGB data. For information about block-compression formats, see Texture Block Compression in Direct3D 11.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_BC3_UNORM_SRGB']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_BC3_UNORM_SRGB</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_BC3_UNORM_SRGB</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.BC4_Typeless\">\n            <summary>\t\n            <dd> <p>One-component typeless block-compression format. For information about block-compression formats, see Texture Block Compression in Direct3D 11.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_BC4_TYPELESS']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_BC4_TYPELESS</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_BC4_TYPELESS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.BC4_UNorm\">\n            <summary>\t\n            <dd> <p>One-component block-compression format. For information about block-compression formats, see Texture Block Compression in Direct3D 11.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_BC4_UNORM']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_BC4_UNORM</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_BC4_UNORM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.BC4_SNorm\">\n            <summary>\t\n            <dd> <p>One-component block-compression format. For information about block-compression formats, see Texture Block Compression in Direct3D 11.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_BC4_SNORM']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_BC4_SNORM</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_BC4_SNORM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.BC5_Typeless\">\n            <summary>\t\n            <dd> <p>Two-component typeless block-compression format. For information about block-compression formats, see Texture Block Compression in Direct3D 11.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_BC5_TYPELESS']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_BC5_TYPELESS</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_BC5_TYPELESS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.BC5_UNorm\">\n            <summary>\t\n            <dd> <p>Two-component block-compression format. For information about block-compression formats, see Texture Block Compression in Direct3D 11.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_BC5_UNORM']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_BC5_UNORM</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_BC5_UNORM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.BC5_SNorm\">\n            <summary>\t\n            <dd> <p>Two-component block-compression format. For information about block-compression formats, see Texture Block Compression in Direct3D 11.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_BC5_SNORM']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_BC5_SNORM</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_BC5_SNORM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.B5G6R5_UNorm\">\n            <summary>\t\n            <dd> <p>A three-component, 16-bit unsigned-normalized-integer format that supports 5 bits for blue, 6 bits for green, and 5 bits for red.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_B5G6R5_UNORM']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_B5G6R5_UNORM</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_B5G6R5_UNORM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.B5G5R5A1_UNorm\">\n            <summary>\t\n            <dd> <p>A four-component, 16-bit unsigned-normalized-integer format that supports 5 bits for each color channel and 1-bit alpha.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_B5G5R5A1_UNORM']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_B5G5R5A1_UNORM</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_B5G5R5A1_UNORM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.B8G8R8A8_UNorm\">\n            <summary>\t\n            <dd> <p>A four-component, 32-bit unsigned-normalized-integer format that supports 8 bits for each color channel and 8-bit alpha.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_B8G8R8A8_UNORM']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_B8G8R8A8_UNORM</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_B8G8R8A8_UNORM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.B8G8R8X8_UNorm\">\n            <summary>\t\n            <dd> <p>A four-component, 32-bit unsigned-normalized-integer format that supports 8 bits for each color channel and 8 bits unused.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_B8G8R8X8_UNORM']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_B8G8R8X8_UNORM</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_B8G8R8X8_UNORM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.R10G10B10_Xr_Bias_A2_UNorm\">\n            <summary>\t\n            <dd> <p>A four-component, 32-bit 2.8-biased fixed-point format that supports 10 bits for each color channel and 2-bit alpha.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.B8G8R8A8_Typeless\">\n            <summary>\t\n            <dd> <p>A four-component, 32-bit typeless format that supports 8 bits for each channel including alpha. 4</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_B8G8R8A8_TYPELESS']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_B8G8R8A8_TYPELESS</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_B8G8R8A8_TYPELESS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.B8G8R8A8_UNorm_SRgb\">\n            <summary>\t\n            <dd> <p>A four-component, 32-bit unsigned-normalized standard RGB format that supports 8 bits for each channel including alpha. 4</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_B8G8R8A8_UNORM_SRGB']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_B8G8R8A8_UNORM_SRGB</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_B8G8R8A8_UNORM_SRGB</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.B8G8R8X8_Typeless\">\n            <summary>\t\n            <dd> <p>A four-component, 32-bit typeless format that supports 8 bits for each color channel, and 8 bits are unused. 4</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_B8G8R8X8_TYPELESS']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_B8G8R8X8_TYPELESS</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_B8G8R8X8_TYPELESS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.B8G8R8X8_UNorm_SRgb\">\n            <summary>\t\n            <dd> <p>A four-component, 32-bit unsigned-normalized standard RGB format that supports 8 bits for each color channel, and 8 bits are unused. 4</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_B8G8R8X8_UNORM_SRGB']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_B8G8R8X8_UNORM_SRGB</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_B8G8R8X8_UNORM_SRGB</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.BC6H_Typeless\">\n            <summary>\t\n            <dd> <p>A typeless block-compression format. 4 For information about block-compression formats, see Texture Block Compression in Direct3D 11.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_BC6H_TYPELESS']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_BC6H_TYPELESS</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_BC6H_TYPELESS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.BC6H_Uf16\">\n            <summary>\t\n            <dd> <p>A block-compression format. 4 For information about block-compression formats, see Texture Block Compression in Direct3D 11.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_BC6H_UF16']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_BC6H_UF16</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_BC6H_UF16</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.BC6H_Sf16\">\n            <summary>\t\n            <dd> <p>A block-compression format. 4 For information about block-compression formats, see Texture Block Compression in Direct3D 11.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_BC6H_SF16']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_BC6H_SF16</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_BC6H_SF16</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.BC7_Typeless\">\n            <summary>\t\n            <dd> <p>A typeless block-compression format. 4 For information about block-compression formats, see Texture Block Compression in Direct3D 11.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_BC7_TYPELESS']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_BC7_TYPELESS</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_BC7_TYPELESS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.BC7_UNorm\">\n            <summary>\t\n            <dd> <p>A block-compression format. 4 For information about block-compression formats, see Texture Block Compression in Direct3D 11.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_BC7_UNORM']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_BC7_UNORM</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_BC7_UNORM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Format.BC7_UNorm_SRgb\">\n            <summary>\t\n            <dd> <p>A block-compression format. 4 For information about block-compression formats, see Texture Block Compression in Direct3D 11.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FORMAT_BC7_UNORM_SRGB']/*\"/>\t\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_BC7_UNORM_SRGB</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_BC7_UNORM_SRGB</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DXGI.MapFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_MAP_FLAGS']/*\"/>\t\n            <unmanaged>DXGI_MAP_FLAGS</unmanaged>\t\n            <unmanaged-short>DXGI_MAP_FLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.MapFlags.Read\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_MAP_READ']/*\"/>\t\n            <unmanaged>DXGI_MAP_READ</unmanaged>\t\n            <unmanaged-short>DXGI_MAP_READ</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.MapFlags.Write\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_MAP_WRITE']/*\"/>\t\n            <unmanaged>DXGI_MAP_WRITE</unmanaged>\t\n            <unmanaged-short>DXGI_MAP_WRITE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.MapFlags.Discard\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_MAP_DISCARD']/*\"/>\t\n            <unmanaged>DXGI_MAP_DISCARD</unmanaged>\t\n            <unmanaged-short>DXGI_MAP_DISCARD</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DXGI.PresentFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_PRESENT_FLAGS']/*\"/>\t\n            <unmanaged>DXGI_PRESENT_FLAGS</unmanaged>\t\n            <unmanaged-short>DXGI_PRESENT_FLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.PresentFlags.Test\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_PRESENT_TEST']/*\"/>\t\n            <unmanaged>DXGI_PRESENT_TEST</unmanaged>\t\n            <unmanaged-short>DXGI_PRESENT_TEST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.PresentFlags.DoNotSequence\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_PRESENT_DO_NOT_SEQUENCE']/*\"/>\t\n            <unmanaged>DXGI_PRESENT_DO_NOT_SEQUENCE</unmanaged>\t\n            <unmanaged-short>DXGI_PRESENT_DO_NOT_SEQUENCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.PresentFlags.Restart\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_PRESENT_RESTART']/*\"/>\t\n            <unmanaged>DXGI_PRESENT_RESTART</unmanaged>\t\n            <unmanaged-short>DXGI_PRESENT_RESTART</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.PresentFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DXGI.Residency\">\n            <summary>\t\n            <p>Flags indicating the memory location of a resource.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_RESIDENCY']/*\"/>\t\n            <msdn-id>bb173070</msdn-id>\t\n            <unmanaged>DXGI_RESIDENCY</unmanaged>\t\n            <unmanaged-short>DXGI_RESIDENCY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Residency.FullyResident\">\n            <summary>\t\n            <dd> <p>The resource is located in video memory.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_RESIDENCY_FULLY_RESIDENT']/*\"/>\t\n            <msdn-id>bb173070</msdn-id>\t\n            <unmanaged>DXGI_RESIDENCY_FULLY_RESIDENT</unmanaged>\t\n            <unmanaged-short>DXGI_RESIDENCY_FULLY_RESIDENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Residency.ResidentInSharedMemory\">\n            <summary>\t\n            <dd> <p>At least some of the resource is located in CPU memory.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_RESIDENCY_RESIDENT_IN_SHARED_MEMORY']/*\"/>\t\n            <msdn-id>bb173070</msdn-id>\t\n            <unmanaged>DXGI_RESIDENCY_RESIDENT_IN_SHARED_MEMORY</unmanaged>\t\n            <unmanaged-short>DXGI_RESIDENCY_RESIDENT_IN_SHARED_MEMORY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Residency.EvictedToDisk\">\n            <summary>\t\n            <dd> <p>At least some of the resource has been paged out to the hard drive.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_RESIDENCY_EVICTED_TO_DISK']/*\"/>\t\n            <msdn-id>bb173070</msdn-id>\t\n            <unmanaged>DXGI_RESIDENCY_EVICTED_TO_DISK</unmanaged>\t\n            <unmanaged-short>DXGI_RESIDENCY_EVICTED_TO_DISK</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DXGI.ResourcePriority\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_RESOURCE_PRIORITY']/*\"/>\t\n            <unmanaged>DXGI_RESOURCE_PRIORITY</unmanaged>\t\n            <unmanaged-short>DXGI_RESOURCE_PRIORITY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.ResourcePriority.Minimum\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_RESOURCE_PRIORITY_MINIMUM']/*\"/>\t\n            <unmanaged>DXGI_RESOURCE_PRIORITY_MINIMUM</unmanaged>\t\n            <unmanaged-short>DXGI_RESOURCE_PRIORITY_MINIMUM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.ResourcePriority.Low\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_RESOURCE_PRIORITY_LOW']/*\"/>\t\n            <unmanaged>DXGI_RESOURCE_PRIORITY_LOW</unmanaged>\t\n            <unmanaged-short>DXGI_RESOURCE_PRIORITY_LOW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.ResourcePriority.Normal\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_RESOURCE_PRIORITY_NORMAL']/*\"/>\t\n            <unmanaged>DXGI_RESOURCE_PRIORITY_NORMAL</unmanaged>\t\n            <unmanaged-short>DXGI_RESOURCE_PRIORITY_NORMAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.ResourcePriority.High\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_RESOURCE_PRIORITY_HIGH']/*\"/>\t\n            <unmanaged>DXGI_RESOURCE_PRIORITY_HIGH</unmanaged>\t\n            <unmanaged-short>DXGI_RESOURCE_PRIORITY_HIGH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.ResourcePriority.Maximum\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_RESOURCE_PRIORITY_MAXIMUM']/*\"/>\t\n            <unmanaged>DXGI_RESOURCE_PRIORITY_MAXIMUM</unmanaged>\t\n            <unmanaged-short>DXGI_RESOURCE_PRIORITY_MAXIMUM</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DXGI.SharedResourceFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_SHARED_RESOURCE_FLAGS']/*\"/>\t\n            <unmanaged>DXGI_SHARED_RESOURCE_FLAGS</unmanaged>\t\n            <unmanaged-short>DXGI_SHARED_RESOURCE_FLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.SharedResourceFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DXGI.SwapEffect\">\n            <summary>\t\n            <p>Options for handling pixels in a display surface after calling <strong><see cref=\"M:SharpDX.DXGI.SwapChain.Present(System.Int32,SharpDX.DXGI.PresentFlags)\"/></strong>.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This enumeration is used by the <strong><see cref=\"T:SharpDX.DXGI.SwapChainDescription\"/></strong> structure.</p><p>This enumeration is also used by the  <strong>DXGI_SWAP_CHAIN_DESC1</strong> structure.</p><p>The primary difference between presentation models is how back-buffer contents get to the Desktop Window Manager (DWM) for composition. In the bitblt model, which is used with the <strong><see cref=\"F:SharpDX.DXGI.SwapEffect.Discard\"/></strong> and <strong><see cref=\"F:SharpDX.DXGI.SwapEffect.Sequential\"/></strong> values, contents of the back buffer get copied into the redirection surface on each call to <strong><see cref=\"M:SharpDX.DXGI.SwapChain.Present(System.Int32,SharpDX.DXGI.PresentFlags)\"/></strong>. In the flip model, which is used with the <strong>DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL</strong> value, all back buffers are shared with the DWM. Therefore, the DWM can compose straight from those back buffers without any additional copy operations.\t\n            In general, the flip model is the more efficient model. The flip model also provides more features, such as enhanced present statistics.\t\n            </p><p>Regardless of whether the flip model is more efficient, an application still might choose the bitblt model for the following reasons:</p><ul> <li> <p>The bitblt model is the only way to mix GDI and DirectX presentation.</p> <p>In the flip model, the application must create the swap chain with <strong><see cref=\"F:SharpDX.DXGI.SwapChainFlags.GdiCompatible\"/></strong>, and then must use <strong>GetDC</strong> on the back buffer explicitly. After the first successful call to <strong><see cref=\"M:SharpDX.DXGI.SwapChain.Present(System.Int32,SharpDX.DXGI.PresentFlags)\"/></strong> on a flip-model swap chain, GDI no longer works with the <strong><see cref=\"T:System.IntPtr\"/></strong> that is associated with that swap chain, even after the destruction of the swap chain. This restriction even extends to methods like <strong>ScrollWindowEx</strong>.</p> </li> <li>The flip model requires at least three window-sized buffers if the application uses child windows. For the bitblt model, this minimum is two buffers.</li> </ul><p></p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_SWAP_EFFECT']/*\"/>\t\n            <msdn-id>bb173077</msdn-id>\t\n            <unmanaged>DXGI_SWAP_EFFECT</unmanaged>\t\n            <unmanaged-short>DXGI_SWAP_EFFECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.SwapEffect.Discard\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_SWAP_EFFECT_DISCARD']/*\"/>\t\n            <unmanaged>DXGI_SWAP_EFFECT_DISCARD</unmanaged>\t\n            <unmanaged-short>DXGI_SWAP_EFFECT_DISCARD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.SwapEffect.Sequential\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_SWAP_EFFECT_SEQUENTIAL']/*\"/>\t\n            <unmanaged>DXGI_SWAP_EFFECT_SEQUENTIAL</unmanaged>\t\n            <unmanaged-short>DXGI_SWAP_EFFECT_SEQUENTIAL</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DXGI.SwapChainFlags\">\n            <summary>\t\n            <p>Options for swap-chain behavior.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This enumeration is used by the <strong><see cref=\"T:SharpDX.DXGI.SwapChainDescription\"/></strong> structure and the <strong><see cref=\"M:SharpDX.DXGI.SwapChain.ResizeTarget(SharpDX.DXGI.ModeDescription@)\"/></strong> method.</p><p>This enumeration is also used by the  <strong>DXGI_SWAP_CHAIN_DESC1</strong> structure.</p><p>Swap chains that you create in full-screen mode with the <strong><see cref=\"M:SharpDX.DXGI.Factory.CreateSwapChain(SharpDX.ComObject,SharpDX.DXGI.SwapChainDescription@,SharpDX.DXGI.SwapChain)\"/></strong> method behave as if <strong>DXGI_SWAP_CHAIN_FLAG_DISPLAY_ONLY</strong> is set even though the flag is not set. That is, presented content is not accessible by remote access or through the <strong>desktop duplication APIs</strong>.  </p><p>Swap chains that you create with the <strong>IDXGIFactory2::CreateSwapChainForHwnd</strong>, <strong>IDXGIFactory2::CreateSwapChainForImmersiveWindow</strong>, and  <strong>IDXGIFactory2::CreateSwapChainForCompositionSurface</strong> methods are not protected if <strong>DXGI_SWAP_CHAIN_FLAG_DISPLAY_ONLY</strong> is not set and are protected if <strong>DXGI_SWAP_CHAIN_FLAG_DISPLAY_ONLY</strong> is set. When swap chains are protected, screen scraping is prevented and, in full-screen mode, presented content is not accessible through the <strong>desktop duplication APIs</strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_SWAP_CHAIN_FLAG']/*\"/>\t\n            <msdn-id>bb173076</msdn-id>\t\n            <unmanaged>DXGI_SWAP_CHAIN_FLAG</unmanaged>\t\n            <unmanaged-short>DXGI_SWAP_CHAIN_FLAG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.SwapChainFlags.Nonprerotated\">\n            <summary>\t\n            <dd> <p>Set this flag to turn off automatic image rotation; that is, do not perform a rotation when transferring the contents of the front buffer to the monitor.  Use this flag to avoid a bandwidth penalty when an application expects to handle rotation. This option is valid only during full-screen mode. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_SWAP_CHAIN_FLAG_NONPREROTATED']/*\"/>\t\n            <msdn-id>bb173076</msdn-id>\t\n            <unmanaged>DXGI_SWAP_CHAIN_FLAG_NONPREROTATED</unmanaged>\t\n            <unmanaged-short>DXGI_SWAP_CHAIN_FLAG_NONPREROTATED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.SwapChainFlags.AllowModeSwitch\">\n            <summary>\t\n            <dd> <p>Set this flag to enable an application to switch modes by calling <strong><see cref=\"M:SharpDX.DXGI.SwapChain.ResizeTarget(SharpDX.DXGI.ModeDescription@)\"/></strong>.  When switching from windowed to full-screen mode, the display mode (or monitor resolution) will be changed to match the dimensions of the application window.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_SWAP_CHAIN_FLAG_ALLOW_MODE_SWITCH']/*\"/>\t\n            <msdn-id>bb173076</msdn-id>\t\n            <unmanaged>DXGI_SWAP_CHAIN_FLAG_ALLOW_MODE_SWITCH</unmanaged>\t\n            <unmanaged-short>DXGI_SWAP_CHAIN_FLAG_ALLOW_MODE_SWITCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.SwapChainFlags.GdiCompatible\">\n            <summary>\t\n            <dd> <p>Set this flag to enable an application to render using GDI on a swap chain or a surface.  This will allow the application to call <strong><see cref=\"M:SharpDX.DXGI.Surface1.GetDC(SharpDX.Bool)\"/></strong> on the 0th back buffer or a surface.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_SWAP_CHAIN_FLAG_GDI_COMPATIBLE']/*\"/>\t\n            <msdn-id>bb173076</msdn-id>\t\n            <unmanaged>DXGI_SWAP_CHAIN_FLAG_GDI_COMPATIBLE</unmanaged>\t\n            <unmanaged-short>DXGI_SWAP_CHAIN_FLAG_GDI_COMPATIBLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.SwapChainFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DXGI.Usage\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_USAGE_ENUM']/*\"/>\t\n            <unmanaged>DXGI_USAGE_ENUM</unmanaged>\t\n            <unmanaged-short>DXGI_USAGE_ENUM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Usage.ShaderInput\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_USAGE_SHADER_INPUT']/*\"/>\t\n            <unmanaged>DXGI_USAGE_SHADER_INPUT</unmanaged>\t\n            <unmanaged-short>DXGI_USAGE_SHADER_INPUT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Usage.RenderTargetOutput\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_USAGE_RENDER_TARGET_OUTPUT']/*\"/>\t\n            <unmanaged>DXGI_USAGE_RENDER_TARGET_OUTPUT</unmanaged>\t\n            <unmanaged-short>DXGI_USAGE_RENDER_TARGET_OUTPUT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Usage.BackBuffer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_USAGE_BACK_BUFFER']/*\"/>\t\n            <unmanaged>DXGI_USAGE_BACK_BUFFER</unmanaged>\t\n            <unmanaged-short>DXGI_USAGE_BACK_BUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Usage.Shared\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_USAGE_SHARED']/*\"/>\t\n            <unmanaged>DXGI_USAGE_SHARED</unmanaged>\t\n            <unmanaged-short>DXGI_USAGE_SHARED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Usage.ReadOnly\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_USAGE_READ_ONLY']/*\"/>\t\n            <unmanaged>DXGI_USAGE_READ_ONLY</unmanaged>\t\n            <unmanaged-short>DXGI_USAGE_READ_ONLY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Usage.DiscardOnPresent\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_USAGE_DISCARD_ON_PRESENT']/*\"/>\t\n            <unmanaged>DXGI_USAGE_DISCARD_ON_PRESENT</unmanaged>\t\n            <unmanaged-short>DXGI_USAGE_DISCARD_ON_PRESENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Usage.UnorderedAccess\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_USAGE_UNORDERED_ACCESS']/*\"/>\t\n            <unmanaged>DXGI_USAGE_UNORDERED_ACCESS</unmanaged>\t\n            <unmanaged-short>DXGI_USAGE_UNORDERED_ACCESS</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DXGI.WindowAssociationFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_MWA_FLAGS']/*\"/>\t\n            <unmanaged>DXGI_MWA_FLAGS</unmanaged>\t\n            <unmanaged-short>DXGI_MWA_FLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.WindowAssociationFlags.IgnoreAll\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_MWA_NO_WINDOW_CHANGES']/*\"/>\t\n            <unmanaged>DXGI_MWA_NO_WINDOW_CHANGES</unmanaged>\t\n            <unmanaged-short>DXGI_MWA_NO_WINDOW_CHANGES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.WindowAssociationFlags.IgnoreAltEnter\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_MWA_NO_ALT_ENTER']/*\"/>\t\n            <unmanaged>DXGI_MWA_NO_ALT_ENTER</unmanaged>\t\n            <unmanaged-short>DXGI_MWA_NO_ALT_ENTER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.WindowAssociationFlags.IgnorePrintScreen\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_MWA_NO_PRINT_SCREEN']/*\"/>\t\n            <unmanaged>DXGI_MWA_NO_PRINT_SCREEN</unmanaged>\t\n            <unmanaged-short>DXGI_MWA_NO_PRINT_SCREEN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.WindowAssociationFlags.Valid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_MWA_VALID']/*\"/>\t\n            <unmanaged>DXGI_MWA_VALID</unmanaged>\t\n            <unmanaged-short>DXGI_MWA_VALID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.WindowAssociationFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DXGI.DXGI\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.DXGI.DXGI']/*\"/>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.DXGI.CreateDXGIFactory1(System.Guid,System.IntPtr@)\">\n            <summary>\t\n            <p>Creates a DXGI 1.1 factory that generates objects used to enumerate and specify video graphics settings.</p>\t\n            </summary>\t\n            <param name=\"riid\"><dd>  <p>The globally unique identifier (<see cref=\"T:System.Guid\"/>) of the <strong><see cref=\"T:SharpDX.DXGI.Factory1\"/></strong> object referenced by  the <em>ppFactory</em> parameter.</p> </dd></param>\t\n            <param name=\"factoryOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.DXGI.Factory1\"/></strong> object.</p> </dd></param>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful; an error code otherwise. For a list of error codes, see DXGI_ERROR.</p></returns>\t\n            <remarks>\t\n            <p>Use a DXGI 1.1 factory to generate objects that <strong>enumerate adapters</strong>,  <strong>create swap chains</strong>, and <strong>associate a window</strong> with  the alt+enter key sequence for toggling to and from the full-screen display mode.  </p><p>If the <strong>CreateDXGIFactory1</strong> function succeeds, the reference count on the <strong><see cref=\"T:SharpDX.DXGI.Factory1\"/></strong> interface is incremented. To avoid a memory leak, when you finish using the interface, call the <strong>IDXGIFactory1::Release</strong> method to release the interface.</p><p>This entry point is not supported by DXGI 1.0, which shipped in Windows?Vista and Windows Server?2008. DXGI 1.1 support is required, which is available on  Windows?7, Windows Server?2008?R2, and as an update to Windows?Vista with Service Pack?2 (SP2) (KB 971644) and Windows Server?2008 (KB 971512).</p><p><strong>Note</strong>??Do not mix the use of DXGI 1.0 (<strong><see cref=\"T:SharpDX.DXGI.Factory\"/></strong>) and DXGI 1.1 (<strong><see cref=\"T:SharpDX.DXGI.Factory1\"/></strong>) in an application. Use <strong><see cref=\"T:SharpDX.DXGI.Factory\"/></strong> or <strong><see cref=\"T:SharpDX.DXGI.Factory1\"/></strong>, but not both in an application.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='CreateDXGIFactory1']/*\"/>\t\n            <msdn-id>ff471318</msdn-id>\t\n            <unmanaged>HRESULT CreateDXGIFactory1([In] const GUID&amp; riid,[Out] void** ppFactory)</unmanaged>\t\n            <unmanaged-short>CreateDXGIFactory1</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.DXGI.CreateDXGIFactory(System.Guid,System.IntPtr@)\">\n            <summary>\t\n            <p>Creates a DXGI 1.0 factory that generates objects used to enumerate and specify video graphics settings.</p>\t\n            </summary>\t\n            <param name=\"riid\"><dd>  <p>The globally unique identifier (<see cref=\"T:System.Guid\"/>) of the <strong><see cref=\"T:SharpDX.DXGI.Factory\"/></strong> object referenced by the <em>ppFactory</em> parameter.</p> </dd></param>\t\n            <param name=\"factoryOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.DXGI.Factory\"/></strong> object.</p> </dd></param>\t\n            <returns><p>Returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong> if successful; otherwise, returns one of the following DXGI_ERROR.</p></returns>\t\n            <remarks>\t\n            <p>Use a DXGI factory to generate objects that <strong>enumerate adapters</strong>, <strong>create swap chains</strong>, and <strong>associate a window</strong> with the alt+enter key sequence for toggling to and from the fullscreen display mode.</p><p>If the <strong>CreateDXGIFactory</strong> function succeeds, the reference count on the <strong><see cref=\"T:SharpDX.DXGI.Factory\"/></strong> interface is incremented. To avoid a memory leak, when you finish using the interface, call the <strong>IDXGIFactory::Release</strong> method to release the interface.</p><p><strong>Note</strong>??Do not mix the use of DXGI 1.0 (<strong><see cref=\"T:SharpDX.DXGI.Factory\"/></strong>) and DXGI 1.1 (<strong><see cref=\"T:SharpDX.DXGI.Factory1\"/></strong>) in an application. Use <strong><see cref=\"T:SharpDX.DXGI.Factory\"/></strong> or <strong><see cref=\"T:SharpDX.DXGI.Factory1\"/></strong>, but not both in an application.</p><p>The <strong>CreateDXGIFactory</strong> function does not exist for Metro style apps. Instead, Metro style apps use the  <strong>CreateDXGIFactory1</strong> function.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='CreateDXGIFactory']/*\"/>\t\n            <msdn-id>bb204862</msdn-id>\t\n            <unmanaged>HRESULT CreateDXGIFactory([In] const GUID&amp; riid,[Out] void** ppFactory)</unmanaged>\t\n            <unmanaged-short>CreateDXGIFactory</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DXGI.ResultCode\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.DXGI.ResultCode']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.ResultCode.FrameStatisticsDisjoint\">\n            <summary>Constant FrameStatisticsDisjoint.</summary>\n            <unmanaged>DXGI_ERROR_FRAME_STATISTICS_DISJOINT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DXGI.ResultCode.DeviceReset\">\n            <summary>Constant DeviceReset.</summary>\n            <unmanaged>DXGI_ERROR_DEVICE_RESET</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DXGI.ResultCode.NotFound\">\n            <summary>Constant NotFound.</summary>\n            <unmanaged>DXGI_ERROR_NOT_FOUND</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DXGI.ResultCode.DriverInternalError\">\n            <summary>Constant DriverInternalError.</summary>\n            <unmanaged>DXGI_ERROR_DRIVER_INTERNAL_ERROR</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DXGI.ResultCode.InvalidCall\">\n            <summary>Constant InvalidCall.</summary>\n            <unmanaged>DXGI_ERROR_INVALID_CALL</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DXGI.ResultCode.WasStillDrawing\">\n            <summary>Constant WasStillDrawing.</summary>\n            <unmanaged>DXGI_ERROR_WAS_STILL_DRAWING</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DXGI.ResultCode.Unsupported\">\n            <summary>Constant Unsupported.</summary>\n            <unmanaged>DXGI_ERROR_UNSUPPORTED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DXGI.ResultCode.RemoteClientDisconnected\">\n            <summary>Constant RemoteClientDisconnected.</summary>\n            <unmanaged>DXGI_ERROR_REMOTE_CLIENT_DISCONNECTED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DXGI.ResultCode.DeviceRemoved\">\n            <summary>Constant DeviceRemoved.</summary>\n            <unmanaged>DXGI_ERROR_DEVICE_REMOVED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DXGI.ResultCode.DeviceHung\">\n            <summary>Constant DeviceHung.</summary>\n            <unmanaged>DXGI_ERROR_DEVICE_HUNG</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DXGI.ResultCode.RemoteOufOfMemory\">\n            <summary>Constant RemoteOufOfMemory.</summary>\n            <unmanaged>DXGI_ERROR_REMOTE_OUTOFMEMORY</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DXGI.ResultCode.MoreData\">\n            <summary>Constant MoreData.</summary>\n            <unmanaged>DXGI_ERROR_MORE_DATA</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DXGI.ResultCode.Nonexclusive\">\n            <summary>Constant Nonexclusive.</summary>\n            <unmanaged>DXGI_ERROR_NONEXCLUSIVE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DXGI.ResultCode.GraphicsVidpnSourceInUse\">\n            <summary>Constant GraphicsVidpnSourceInUse.</summary>\n            <unmanaged>DXGI_ERROR_GRAPHICS_VIDPN_SOURCE_IN_USE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DXGI.ResultCode.NotCurrentlyAvailable\">\n            <summary>Constant NotCurrentlyAvailable.</summary>\n            <unmanaged>DXGI_ERROR_NOT_CURRENTLY_AVAILABLE</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DXGI.Adapter1\">\n            <summary>\t\n            <p>The <strong><see cref=\"T:SharpDX.DXGI.Adapter1\"/></strong> interface represents a display sub-system (including one or more GPU's, DACs and video memory).</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This interface is not supported by DXGI 1.0, which shipped in Windows?Vista and Windows Server?2008. DXGI 1.1 support is required, which is available on  Windows?7, Windows Server?2008?R2, and as an update to Windows?Vista with Service Pack?2 (SP2) (KB 971644) and Windows Server?2008 (KB 971512).</p><p>A display sub-system is often referred to as a video card, however, on some machines the display sub-system is part of the mother board.</p><p>To enumerate the display sub-systems, use <strong><see cref=\"M:SharpDX.DXGI.Factory1.GetAdapter1(System.Int32)\"/></strong>. To get an interface to the adapter for a  particular device, use <strong><see cref=\"M:SharpDX.DXGI.Device.GetAdapter(SharpDX.DXGI.Adapter@)\"/></strong>. To create a software adapter, use <strong><see cref=\"M:SharpDX.DXGI.Factory.CreateSoftwareAdapter(System.Reflection.Module)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGIAdapter1']/*\"/>\t\n            <msdn-id>ff471329</msdn-id>\t\n            <unmanaged>IDXGIAdapter1</unmanaged>\t\n            <unmanaged-short>IDXGIAdapter1</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.Adapter1.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DXGI.Adapter1\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.Adapter1.op_Explicit(System.IntPtr)~SharpDX.DXGI.Adapter1\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.DXGI.Adapter1\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.DXGI.Adapter1.GetDescription1(SharpDX.DXGI.AdapterDescription1@)\">\n            <summary>\t\n            <p>Gets a DXGI 1.1 description of an adapter (or video card).</p>\t\n            </summary>\t\n            <param name=\"descRef\"><dd>  <p>A reference to a <strong><see cref=\"T:SharpDX.DXGI.AdapterDescription1\"/></strong> structure that describes the adapter.   This parameter must not be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful; otherwise, returns E_INVALIDARG if the <em>pDesc</em> parameter is <strong><c>null</c></strong>.   </p></returns>\t\n            <remarks>\t\n            <p>This method is not supported by DXGI 1.0, which shipped in Windows?Vista and Windows Server?2008. DXGI 1.1 support is required, which is available on  Windows?7, Windows Server?2008?R2, and as an update to Windows?Vista with Service Pack?2 (SP2) (KB 971644) and Windows Server?2008 (KB 971512).</p><p>Use the <strong>GetDesc1</strong> method to get a DXGI 1.1 description of an adapter.  To get a DXGI 1.0 description, use the <strong><see cref=\"T:SharpDX.DXGI.Adapter\"/></strong> method.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGIAdapter1::GetDesc1']/*\"/>\t\n            <msdn-id>ff471330</msdn-id>\t\n            <unmanaged>HRESULT IDXGIAdapter1::GetDesc1([Out] DXGI_ADAPTER_DESC1* pDesc)</unmanaged>\t\n            <unmanaged-short>IDXGIAdapter1::GetDesc1</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.DXGI.Adapter1.Description1\">\n            <summary>\t\n            <p>Gets a DXGI 1.1 description of an adapter (or video card).</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This method is not supported by DXGI 1.0, which shipped in Windows?Vista and Windows Server?2008. DXGI 1.1 support is required, which is available on  Windows?7, Windows Server?2008?R2, and as an update to Windows?Vista with Service Pack?2 (SP2) (KB 971644) and Windows Server?2008 (KB 971512).</p><p>Use the <strong>GetDesc1</strong> method to get a DXGI 1.1 description of an adapter.  To get a DXGI 1.0 description, use the <strong><see cref=\"T:SharpDX.DXGI.Adapter\"/></strong> method.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGIAdapter1::GetDesc1']/*\"/>\t\n            <msdn-id>ff471330</msdn-id>\t\n            <unmanaged>GetDesc1</unmanaged>\t\n            <unmanaged-short>GetDesc1</unmanaged-short>\t\n            <unmanaged>HRESULT IDXGIAdapter1::GetDesc1([Out] DXGI_ADAPTER_DESC1* pDesc)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DXGI.Device1\">\n            <summary>\t\n            <p>An <strong><see cref=\"T:SharpDX.DXGI.Device1\"/></strong> interface implements a derived class for DXGI objects that produce image data.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This interface is not supported by DXGI 1.0, which shipped in Windows?Vista and Windows Server?2008. DXGI 1.1 support is required, which is available on  Windows?7, Windows Server?2008?R2, and as an update to Windows?Vista with Service Pack?2 (SP2) (KB 971644) and Windows Server?2008 (KB 971512).</p><p>The <strong><see cref=\"T:SharpDX.DXGI.Device1\"/></strong> interface is designed for use by DXGI objects that need access to other DXGI objects. This interface is useful to applications that do not use Direct3D to communicate with DXGI.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGIDevice1']/*\"/>\t\n            <msdn-id>ff471331</msdn-id>\t\n            <unmanaged>IDXGIDevice1</unmanaged>\t\n            <unmanaged-short>IDXGIDevice1</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.Device1.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DXGI.Device1\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.Device1.op_Explicit(System.IntPtr)~SharpDX.DXGI.Device1\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.DXGI.Device1\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.DXGI.Device1.SetMaximumFrameLatency(System.Int32)\">\n            <summary>\t\n            <p>Sets the number of frames that the system is allowed to queue for rendering.</p>\t\n            </summary>\t\n            <param name=\"maxLatency\"><dd>  <p>The maximum number of back buffer frames that a driver can queue. The value defaults to 3, but  can range from 1 to 16. A value of 0 will reset latency to the default.  For multi-head devices, this value is specified per-head.</p> </dd></param>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful; otherwise, <see cref=\"F:SharpDX.DXGI.ResultCode.DeviceRemoved\"/> if the device was removed.</p></returns>\t\n            <remarks>\t\n            <p>This method is not supported by DXGI 1.0, which shipped in Windows?Vista and Windows Server?2008. DXGI 1.1 support is required, which is available on  Windows?7, Windows Server?2008?R2, and as an update to Windows?Vista with Service Pack?2 (SP2) (KB 971644) and Windows Server?2008 (KB 971512).</p><p>Frame latency is the number of frames that are allowed to be stored in a queue before submission for rendering.  Latency is often used to  control how the CPU chooses between responding to user input and frames that are in the render queue.  It is often beneficial for applications that  have no user input (for example, video playback) to queue more than 3 frames of data.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGIDevice1::SetMaximumFrameLatency']/*\"/>\t\n            <msdn-id>ff471334</msdn-id>\t\n            <unmanaged>HRESULT IDXGIDevice1::SetMaximumFrameLatency([In] unsigned int MaxLatency)</unmanaged>\t\n            <unmanaged-short>IDXGIDevice1::SetMaximumFrameLatency</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.Device1.GetMaximumFrameLatency(System.Int32@)\">\n            <summary>\t\n            <p>Gets the number of frames that the system is allowed to queue for rendering.</p>\t\n            </summary>\t\n            <param name=\"maxLatencyRef\"><dd>  <p>This value is set to the number of frames that can be queued for render.   This value defaults to 3, but can range from 1 to 16.</p> </dd></param>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful; otherwise, returns one of the following members of the D3DERR enumerated type:</p><ul> <li><strong><see cref=\"!:SharpDX.Direct3D9.ResultCode.DeviceLost\"/></strong></li> <li><strong><see cref=\"!:SharpDX.Direct3D9.ResultCode.DeviceRemoved\"/></strong></li> <li><strong><see cref=\"!:SharpDX.Direct3D9.ResultCode.DriverInternalError\"/></strong></li> <li><strong><see cref=\"!:SharpDX.Direct3D9.ResultCode.InvalidCall\"/></strong></li> <li><strong><see cref=\"!:SharpDX.Direct3D9.ResultCode.OutOfVideoMemory\"/></strong></li> </ul></returns>\t\n            <remarks>\t\n            <p>This method is not supported by DXGI 1.0, which shipped in Windows?Vista and Windows Server?2008. DXGI 1.1 support is required, which is available on  Windows?7, Windows Server?2008?R2, and as an update to Windows?Vista with Service Pack?2 (SP2) (KB 971644) and Windows Server?2008 (KB 971512).</p><p>Frame latency is the number of frames that are allowed to be stored in a queue before submission for rendering.  Latency is often  used to control how the CPU chooses between responding to user input and frames that are in the render queue.  It is often beneficial for applications  that have no user input (for example, video playback) to queue more than 3 frames of data.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGIDevice1::GetMaximumFrameLatency']/*\"/>\t\n            <msdn-id>ff471332</msdn-id>\t\n            <unmanaged>HRESULT IDXGIDevice1::GetMaximumFrameLatency([Out] unsigned int* pMaxLatency)</unmanaged>\t\n            <unmanaged-short>IDXGIDevice1::GetMaximumFrameLatency</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.DXGI.Device1.MaximumFrameLatency\">\n            <summary>\t\n            <p>Gets or sets the number of frames that the system is allowed to queue for rendering.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This method is not supported by DXGI 1.0, which shipped in Windows?Vista and Windows Server?2008. DXGI 1.1 support is required, which is available on  Windows?7, Windows Server?2008?R2, and as an update to Windows?Vista with Service Pack?2 (SP2) (KB 971644) and Windows Server?2008 (KB 971512).</p><p>Frame latency is the number of frames that are allowed to be stored in a queue before submission for rendering.  Latency is often  used to control how the CPU chooses between responding to user input and frames that are in the render queue.  It is often beneficial for applications  that have no user input (for example, video playback) to queue more than 3 frames of data.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGIDevice1::GetMaximumFrameLatency']/*\"/>\t\n            <msdn-id>ff471332</msdn-id>\t\n            <unmanaged>GetMaximumFrameLatency / SetMaximumFrameLatency</unmanaged>\t\n            <unmanaged-short>GetMaximumFrameLatency</unmanaged-short>\t\n            <unmanaged>HRESULT IDXGIDevice1::GetMaximumFrameLatency([Out] unsigned int* pMaxLatency)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DXGI.KeyedMutex\">\n            <summary>\t\n            <p>Using a key, acquires exclusive rendering access to a shared resource.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The <strong>AcquireSync</strong> method creates a lock to a surface that is shared between multiple devices, allowing only one device to render to a surface at a time.   This method uses a key to determine which device currently has exclusive access to the surface.</p><p>When a surface is created using the <strong><see cref=\"!:SharpDX.Direct3D10.ResourceOptionFlags.SharedKeyedmutex\"/></strong> value of the <strong><see cref=\"!:SharpDX.Direct3D10.ResourceOptionFlags\"/></strong> enumeration,  you must call the <strong>AcquireSync</strong> method before rendering to the surface.  You must call the <strong>ReleaseSync</strong> method when you are done  rendering to a surface.</p><p>To acquire a reference to the keyed mutex object of a shared resource, call the <strong>QueryInterface</strong> method of the resource and pass in  the <strong>UUID</strong> of the <strong><see cref=\"T:SharpDX.DXGI.KeyedMutex\"/></strong> interface.  For more information about acquiring this reference, see the following code example.</p><p>The <strong>AcquireSync</strong> method uses the key as follows, depending on the state of the surface:</p><ul> <li>On initial creation, the surface is unowned and any device can call the <strong>AcquireSync</strong> method to gain access.  For an unowned device, only a key of 0 will succeed. Calling the <strong>AcquireSync</strong> method for any other key will stall the  calling CPU thread.</li> <li>If the surface is owned by a device when you call the <strong>AcquireSync</strong> method, the CPU thread that called  the <strong>AcquireSync</strong> method will stall until the owning device calls the <strong>ReleaseSync</strong> method  using the same Key.</li> <li>If the surface is unowned when you call the <strong>AcquireSync</strong> method (for example, the last owning device has already called  the <strong>ReleaseSync</strong> method), the <strong>AcquireSync</strong> method will succeed if you specify the same key  that was specified when the <strong>ReleaseSync</strong> method was last called. Calling the <strong>AcquireSync</strong> method using  any other key will cause a stall.</li> <li>When the owning device calls the <strong>ReleaseSync</strong> method with a particular key, and more than one device is waiting after  calling the  <strong>AcquireSync</strong> method using the same key, any one of the waiting devices could be woken up first.  The order in which devices are woken up is undefined.</li> <li>A keyed mutex does not support recursive calls to the <strong>AcquireSync</strong> method.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGIKeyedMutex']/*\"/>\t\n            <msdn-id>ff471339</msdn-id>\t\n            <unmanaged>IDXGIKeyedMutex</unmanaged>\t\n            <unmanaged-short>IDXGIKeyedMutex</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.KeyedMutex.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DXGI.KeyedMutex\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.KeyedMutex.op_Explicit(System.IntPtr)~SharpDX.DXGI.KeyedMutex\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.DXGI.KeyedMutex\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.DXGI.KeyedMutex.Acquire(System.Int64,System.Int32)\">\n            <summary>\t\n            <p>Using a key, acquires exclusive rendering access to a shared resource.</p>\t\n            </summary>\t\n            <param name=\"key\"><dd>  <p>A value that indicates which device to give access to. This method will succeed when the device that currently owns the surface calls  the <strong><see cref=\"M:SharpDX.DXGI.KeyedMutex.Release(System.Int64)\"/></strong> method using the same value. This value can be any UINT64 value.</p> </dd></param>\t\n            <param name=\"dwMilliseconds\"><dd>  <p>The time-out interval, in milliseconds. This method will return if the interval elapses, and the keyed mutex has not been released  using the specified <em>Key</em>.  If this value is set to zero, the <strong>AcquireSync</strong> method will test to see if the keyed mutex has been released and returns immediately.  If this value is set to INFINITE, the time-out interval will never elapse.</p> </dd></param>\t\n            <returns><p>Return <see cref=\"F:SharpDX.Result.Ok\"/> if successful.</p><p>If the owning device attempted to create another keyed mutex on the same shared resource, <strong>AcquireSync</strong> returns E_FAIL.</p><p><strong>AcquireSync</strong> can also return the following <strong>DWORD</strong> constants. Therefore, you should explicitly check for these constants. If you only use the <strong>SUCCEEDED</strong> macro on the return value to determine if  <strong>AcquireSync</strong> succeeded, you will not catch these constants.</p><ul> <li>WAIT_ABANDONED - The shared surface and keyed mutex are no longer in a consistent state.  If <strong>AcquireSync</strong> returns this value, you should release and recreate both the keyed mutex and the shared surface.</li> <li>WAIT_TIMEOUT - The time-out interval elapsed before the specified key was released.</li> </ul></returns>\t\n            <remarks>\t\n            <p>The <strong>AcquireSync</strong> method creates a lock to a surface that is shared between multiple devices, allowing only one device to render to a surface at a time.   This method uses a key to determine which device currently has exclusive access to the surface.</p><p>When a surface is created using the <strong><see cref=\"!:SharpDX.Direct3D10.ResourceOptionFlags.SharedKeyedmutex\"/></strong> value of the <strong><see cref=\"!:SharpDX.Direct3D10.ResourceOptionFlags\"/></strong> enumeration,  you must call the <strong>AcquireSync</strong> method before rendering to the surface.  You must call the <strong>ReleaseSync</strong> method when you are done  rendering to a surface.</p><p>To acquire a reference to the keyed mutex object of a shared resource, call the <strong>QueryInterface</strong> method of the resource and pass in  the <strong>UUID</strong> of the <strong><see cref=\"T:SharpDX.DXGI.KeyedMutex\"/></strong> interface.  For more information about acquiring this reference, see the following code example.</p><p>The <strong>AcquireSync</strong> method uses the key as follows, depending on the state of the surface:</p><ul> <li>On initial creation, the surface is unowned and any device can call the <strong>AcquireSync</strong> method to gain access.  For an unowned device, only a key of 0 will succeed. Calling the <strong>AcquireSync</strong> method for any other key will stall the  calling CPU thread.</li> <li>If the surface is owned by a device when you call the <strong>AcquireSync</strong> method, the CPU thread that called  the <strong>AcquireSync</strong> method will stall until the owning device calls the <strong>ReleaseSync</strong> method  using the same Key.</li> <li>If the surface is unowned when you call the <strong>AcquireSync</strong> method (for example, the last owning device has already called  the <strong>ReleaseSync</strong> method), the <strong>AcquireSync</strong> method will succeed if you specify the same key  that was specified when the <strong>ReleaseSync</strong> method was last called. Calling the <strong>AcquireSync</strong> method using  any other key will cause a stall.</li> <li>When the owning device calls the <strong>ReleaseSync</strong> method with a particular key, and more than one device is waiting after  calling the  <strong>AcquireSync</strong> method using the same key, any one of the waiting devices could be woken up first.  The order in which devices are woken up is undefined.</li> <li>A keyed mutex does not support recursive calls to the <strong>AcquireSync</strong> method.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGIKeyedMutex::AcquireSync']/*\"/>\t\n            <msdn-id>ff471339</msdn-id>\t\n            <unmanaged>HRESULT IDXGIKeyedMutex::AcquireSync([In] unsigned longlong Key,[In] unsigned int dwMilliseconds)</unmanaged>\t\n            <unmanaged-short>IDXGIKeyedMutex::AcquireSync</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.KeyedMutex.Release(System.Int64)\">\n            <summary>\t\n            <p>Using a key, releases exclusive rendering access to a shared resource.</p>\t\n            </summary>\t\n            <param name=\"key\"><dd>  <p>A value that indicates which device to give access to. This method succeeds when the device that currently owns the surface calls the <strong>ReleaseSync</strong> method using the same value. This value can be any UINT64 value.</p> </dd></param>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful.</p><p>If the device attempted to release a keyed mutex that is not valid or owned by the device, <strong>ReleaseSync</strong> returns E_FAIL.</p></returns>\t\n            <remarks>\t\n            <p>The <strong>ReleaseSync</strong> method releases a lock to a surface that is shared between multiple devices.  This method uses a key to determine which device currently has exclusive access to the surface.</p><p>When a surface is created using the <strong><see cref=\"!:SharpDX.Direct3D10.ResourceOptionFlags.SharedKeyedmutex\"/></strong> value of the <strong><see cref=\"!:SharpDX.Direct3D10.ResourceOptionFlags\"/></strong> enumeration,  you must call the <strong><see cref=\"M:SharpDX.DXGI.KeyedMutex.Acquire(System.Int64,System.Int32)\"/></strong> method before rendering to the surface.  You must call the <strong>ReleaseSync</strong> method when you are done  rendering to a surface.</p><p>After you call the <strong>ReleaseSync</strong> method, the shared resource is unset from the rendering pipeline. </p><p>To acquire a reference to the keyed mutex object of a shared resource, call the <strong>QueryInterface</strong> method of the resource and pass in  the <strong>UUID</strong> of the <strong><see cref=\"T:SharpDX.DXGI.KeyedMutex\"/></strong> interface.  For more information about acquiring this reference, see the following code example.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGIKeyedMutex::ReleaseSync']/*\"/>\t\n            <msdn-id>ff471340</msdn-id>\t\n            <unmanaged>HRESULT IDXGIKeyedMutex::ReleaseSync([In] unsigned longlong Key)</unmanaged>\t\n            <unmanaged-short>IDXGIKeyedMutex::ReleaseSync</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DXGI.Output\">\n            <summary>\t\n            <p>An <strong><see cref=\"T:SharpDX.DXGI.Output\"/></strong> interface represents an adapter output (such as a monitor).</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>To see the outputs available, use <strong><see cref=\"M:SharpDX.DXGI.Adapter.GetOutput(System.Int32)\"/></strong>. To see the specific output that the swap chain will update, use <strong><see cref=\"M:SharpDX.DXGI.SwapChain.GetContainingOutput(SharpDX.DXGI.Output@)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGIOutput']/*\"/>\t\n            <msdn-id>bb174546</msdn-id>\t\n            <unmanaged>IDXGIOutput</unmanaged>\t\n            <unmanaged-short>IDXGIOutput</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.Output.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DXGI.Output\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.Output.op_Explicit(System.IntPtr)~SharpDX.DXGI.Output\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.DXGI.Output\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.DXGI.Output.GetDescription(SharpDX.DXGI.OutputDescription@)\">\n            <summary>\t\n            <p>Get a description of the output.</p>\t\n            </summary>\t\n            <param name=\"descRef\"><dd>  <p>A reference to the output description (see <strong><see cref=\"T:SharpDX.DXGI.OutputDescription\"/></strong>).</p> </dd></param>\t\n            <returns><p>Returns a code that indicates success or failure. <see cref=\"F:SharpDX.Result.Ok\"/> if successful, <see cref=\"F:SharpDX.DXGI.ResultCode.InvalidCall\"/> if <em>pDesc</em> is passed in as <strong><c>null</c></strong>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGIOutput::GetDesc']/*\"/>\t\n            <msdn-id>bb174548</msdn-id>\t\n            <unmanaged>HRESULT IDXGIOutput::GetDesc([Out] DXGI_OUTPUT_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>IDXGIOutput::GetDesc</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.Output.GetDisplayModeList(SharpDX.DXGI.Format,System.Int32,System.Int32@,SharpDX.DXGI.ModeDescription[])\">\n            <summary>\t\n            <p>[Starting with Direct3D 11.1, we recommend not to use <strong>GetDisplayModeList</strong> anymore to retrieve the matching display mode. Instead, use <strong>IDXGIOutput1::GetDisplayModeList1</strong>, which supports stereo display mode.]</p><p>Gets the display modes that match the requested format and other input options.</p>\t\n            </summary>\t\n            <param name=\"enumFormat\">No documentation.</param>\t\n            <param name=\"flags\">No documentation.</param>\t\n            <param name=\"numModesRef\">No documentation.</param>\t\n            <param name=\"descRef\">No documentation.</param>\t\n            <returns><p>Returns one of the following DXGI_ERROR. It is rare, but possible, that the display modes available can change immediately after calling  this method, in which case <see cref=\"F:SharpDX.DXGI.ResultCode.MoreData\"/> is returned (if there is not enough room for all the display modes).   If <strong>GetDisplayModeList</strong> is called from a Remote Desktop Services session (formerly Terminal Services session), <see cref=\"F:SharpDX.DXGI.ResultCode.NotCurrentlyAvailable\"/> is returned.</p></returns>\t\n            <remarks>\t\n            <p>In general, when switching from windowed to full-screen mode, a swap chain automatically chooses a display mode that meets (or exceeds) the resolution, color  depth and refresh rate of the swap chain. To exercise more control over the display mode, use this API to poll the set of display modes that are validated  against monitor capabilities, or all modes that match the desktop (if the desktop settings are not validated against the monitor).</p><p>As shown, this API is designed to be called twice. First to get the number of modes available, and second to return a description of the modes.</p><pre><code> UINT num = 0;\t\n            <see cref=\"T:SharpDX.DXGI.Format\"/> format = <see cref=\"F:SharpDX.DXGI.Format.R32G32B32A32_Float\"/>;\t\n            UINT flags         = <see cref=\"F:SharpDX.DXGI.DisplayModeEnumerationFlags.Interlaced\"/>; pOutput-&gt;GetDisplayModeList( format, flags, &amp;num, 0); ... <see cref=\"T:SharpDX.DXGI.ModeDescription\"/> * pDescs = new <see cref=\"T:SharpDX.DXGI.ModeDescription\"/>[num];\t\n            pOutput-&gt;GetDisplayModeList( format, flags, &amp;num, pDescs); </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGIOutput::GetDisplayModeList']/*\"/>\t\n            <msdn-id>bb174549</msdn-id>\t\n            <unmanaged>HRESULT IDXGIOutput::GetDisplayModeList([In] DXGI_FORMAT EnumFormat,[In] unsigned int Flags,[InOut] unsigned int* pNumModes,[Out, Buffer, Optional] DXGI_MODE_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>IDXGIOutput::GetDisplayModeList</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.Output.FindClosestMatchingMode(SharpDX.DXGI.ModeDescription@,SharpDX.DXGI.ModeDescription@,SharpDX.ComObject)\">\n            <summary>\t\n            <p>[Starting with Direct3D 11.1, we recommend not to use <strong>FindClosestMatchingMode</strong> anymore to find the display mode that most closely matches the requested display mode. Instead, use <strong>IDXGIOutput1::FindClosestMatchingMode1</strong>, which supports stereo display mode.]</p><p>Finds the display mode that most closely matches the requested display mode.</p>\t\n            </summary>\t\n            <param name=\"modeToMatchRef\">No documentation.</param>\t\n            <param name=\"closestMatchRef\">No documentation.</param>\t\n            <param name=\"concernedDeviceRef\">No documentation.</param>\t\n            <returns><p>Returns one of the following DXGI_ERROR.</p></returns>\t\n            <remarks>\t\n            <p><strong>FindClosestMatchingMode</strong> behaves similarly to the <strong>IDXGIOutput1::FindClosestMatchingMode1</strong> except <strong>FindClosestMatchingMode</strong> considers only the mono display modes. <strong>IDXGIOutput1::FindClosestMatchingMode1</strong> considers only stereo modes if you set the <strong>Stereo</strong> member in the <strong>DXGI_MODE_DESC1</strong> structure that <em>pModeToMatch</em> points to, and considers only mono modes if <strong>Stereo</strong> is not set.</p><p> <strong>IDXGIOutput1::FindClosestMatchingMode1</strong> returns a matched display-mode set with only stereo modes or only mono modes.\t\n            <strong>FindClosestMatchingMode</strong> behaves as though you specified the input mode as mono.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGIOutput::FindClosestMatchingMode']/*\"/>\t\n            <msdn-id>bb174547</msdn-id>\t\n            <unmanaged>HRESULT IDXGIOutput::FindClosestMatchingMode([In] const DXGI_MODE_DESC* pModeToMatch,[Out] DXGI_MODE_DESC* pClosestMatch,[In, Optional] IUnknown* pConcernedDevice)</unmanaged>\t\n            <unmanaged-short>IDXGIOutput::FindClosestMatchingMode</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.Output.WaitForVerticalBlank\">\n            <summary>\t\n            <p>Halt a thread until the next vertical blank occurs.</p>\t\n            </summary>\t\n            <returns><p>Returns one of the following DXGI_ERROR.</p></returns>\t\n            <remarks>\t\n            <p>A vertical blank occurs when the raster moves from the lower right corner to the upper left corner to begin drawing the next frame.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGIOutput::WaitForVBlank']/*\"/>\t\n            <msdn-id>bb174559</msdn-id>\t\n            <unmanaged>HRESULT IDXGIOutput::WaitForVBlank()</unmanaged>\t\n            <unmanaged-short>IDXGIOutput::WaitForVBlank</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.Output.TakeOwnership(SharpDX.ComObject,SharpDX.Bool)\">\n            <summary>\t\n            <p>Takes ownership of an output.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\"><dd>  <p>A reference to the <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interface of a device (such as an <strong><see cref=\"!:SharpDX.Direct3D10.Device\"/></strong>).</p> </dd></param>\t\n            <param name=\"exclusive\"><dd>  <p>Set to <strong>TRUE</strong> to enable other threads or applications to take ownership of the device; otherwise, set to <strong><see cref=\"F:SharpDX.Result.False\"/></strong>.</p> </dd></param>\t\n            <returns><p>Returns one of the DXGI_ERROR values.</p></returns>\t\n            <remarks>\t\n            <p>When you are finished with the output, call <strong><see cref=\"M:SharpDX.DXGI.Output.ReleaseOwnership\"/></strong>.</p><p><strong>TakeOwnership</strong> should not be called directly by applications, since results will be unpredictable. It is called implicitly by the DXGI swap chain object during full-screen transitions, and should not be used as a substitute for swap-chain methods.</p>Notes for Metro style apps<p>If a Metro style app uses <strong>TakeOwnership</strong>, it fails with <see cref=\"F:SharpDX.DXGI.ResultCode.NotCurrentlyAvailable\"/>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGIOutput::TakeOwnership']/*\"/>\t\n            <msdn-id>Bb174558</msdn-id>\t\n            <unmanaged>HRESULT IDXGIOutput::TakeOwnership([In] IUnknown* pDevice,[In] BOOL Exclusive)</unmanaged>\t\n            <unmanaged-short>IDXGIOutput::TakeOwnership</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.Output.ReleaseOwnership\">\n            <summary>\t\n            <p>Releases ownership of the output.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>If you are not using a swap chain, get access to an output by calling <strong><see cref=\"M:SharpDX.DXGI.Output.TakeOwnership(SharpDX.ComObject,SharpDX.Bool)\"/></strong> and release it when you are finished by calling <strong><see cref=\"M:SharpDX.DXGI.Output.ReleaseOwnership\"/></strong>. An application that uses a swap chain will typically not call either of these methods.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGIOutput::ReleaseOwnership']/*\"/>\t\n            <msdn-id>Bb174554</msdn-id>\t\n            <unmanaged>void IDXGIOutput::ReleaseOwnership()</unmanaged>\t\n            <unmanaged-short>IDXGIOutput::ReleaseOwnership</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.Output.GetGammaControlCapabilities(SharpDX.DXGI.GammaControlCapabilities@)\">\n            <summary>\t\n            <p>Gets a description of the gamma-control capabilities.</p>\t\n            </summary>\t\n            <param name=\"gammaCapsRef\"><dd>  <p>A reference to a  description of the gamma-control capabilities (see <strong><see cref=\"T:SharpDX.DXGI.GammaControlCapabilities\"/></strong>).</p> </dd></param>\t\n            <returns><p>Returns one of the DXGI_ERROR values.</p></returns>\t\n            <remarks>\t\n            <p> </p><p><strong>Note</strong>??Calling this method is only supported while in full-screen mode.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGIOutput::GetGammaControlCapabilities']/*\"/>\t\n            <msdn-id>bb174553</msdn-id>\t\n            <unmanaged>HRESULT IDXGIOutput::GetGammaControlCapabilities([Out] DXGI_GAMMA_CONTROL_CAPABILITIES* pGammaCaps)</unmanaged>\t\n            <unmanaged-short>IDXGIOutput::GetGammaControlCapabilities</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.Output.SetGammaControl(SharpDX.DXGI.GammaControl@)\">\n            <summary>\t\n            <p>Sets the gamma controls.</p>\t\n            </summary>\t\n            <param name=\"arrayRef\"><dd>  <p>A reference to an array of gamma controls (see <strong><see cref=\"T:SharpDX.DXGI.GammaControl\"/></strong>).</p> </dd></param>\t\n            <returns><p>Returns one of the DXGI_ERROR values.</p></returns>\t\n            <remarks>\t\n            <p> </p><p><strong>Note</strong>??Calling this method is only supported while in full-screen mode.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGIOutput::SetGammaControl']/*\"/>\t\n            <msdn-id>Bb174557</msdn-id>\t\n            <unmanaged>HRESULT IDXGIOutput::SetGammaControl([In] const DXGI_GAMMA_CONTROL* pArray)</unmanaged>\t\n            <unmanaged-short>IDXGIOutput::SetGammaControl</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.Output.GetGammaControl(SharpDX.DXGI.GammaControl@)\">\n            <summary>\t\n            <p>Gets the gamma control settings.</p>\t\n            </summary>\t\n            <param name=\"arrayRef\"><dd>  <p>An array of gamma control settings (see <strong><see cref=\"T:SharpDX.DXGI.GammaControl\"/></strong>).</p> </dd></param>\t\n            <returns><p>Returns one of the DXGI_ERROR values.</p></returns>\t\n            <remarks>\t\n            <p> </p><p><strong>Note</strong>??Calling this method is only supported while in full-screen mode.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGIOutput::GetGammaControl']/*\"/>\t\n            <msdn-id>bb174552</msdn-id>\t\n            <unmanaged>HRESULT IDXGIOutput::GetGammaControl([Out] DXGI_GAMMA_CONTROL* pArray)</unmanaged>\t\n            <unmanaged-short>IDXGIOutput::GetGammaControl</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.Output.SetDisplaySurface(SharpDX.DXGI.Surface)\">\n            <summary>\t\n            <p>Changes the display mode.</p>\t\n            </summary>\t\n            <param name=\"scanoutSurfaceRef\"><dd>  <p>A reference to a surface (see <strong><see cref=\"T:SharpDX.DXGI.Surface\"/></strong>) used for rendering an image to the screen. The surface must have been created as a back buffer (DXGI_USAGE_BACKBUFFER).</p> </dd></param>\t\n            <returns><p>Returns one of the DXGI_ERROR values.</p></returns>\t\n            <remarks>\t\n            <p><strong><see cref=\"M:SharpDX.DXGI.Output.SetDisplaySurface(SharpDX.DXGI.Surface)\"/></strong> should not be called directly by applications, since results will be unpredictable. It is called implicitly by the DXGI swap chain object during full-screen transitions, and should not be used as a substitute for swap-chain methods.</p><p>This method should only be called between <strong><see cref=\"M:SharpDX.DXGI.Output.TakeOwnership(SharpDX.ComObject,SharpDX.Bool)\"/></strong> and <strong><see cref=\"M:SharpDX.DXGI.Output.ReleaseOwnership\"/></strong> calls.</p>Notes for Metro style apps<p>If a Metro style app uses <strong>SetDisplaySurface</strong>, it fails with <see cref=\"F:SharpDX.DXGI.ResultCode.NotCurrentlyAvailable\"/>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGIOutput::SetDisplaySurface']/*\"/>\t\n            <msdn-id>bb174556</msdn-id>\t\n            <unmanaged>HRESULT IDXGIOutput::SetDisplaySurface([In] IDXGISurface* pScanoutSurface)</unmanaged>\t\n            <unmanaged-short>IDXGIOutput::SetDisplaySurface</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.Output.CopyDisplaySurfaceTo(SharpDX.DXGI.Surface)\">\n            <summary>\t\n            <p>[Starting with Direct3D 11.1, we recommend not to use <strong>GetDisplaySurfaceData</strong> anymore to retrieve the current display surface. Instead, use <strong>IDXGIOutput1::GetDisplaySurfaceData1</strong>, which supports stereo display mode.]</p><p>Gets a copy of the current display surface.</p>\t\n            </summary>\t\n            <param name=\"destinationRef\">No documentation.</param>\t\n            <returns><p>Returns one of the DXGI_ERROR values.</p></returns>\t\n            <remarks>\t\n            <p><strong><see cref=\"M:SharpDX.DXGI.Output.CopyDisplaySurfaceTo(SharpDX.DXGI.Surface)\"/></strong> can only be called when an output is in full-screen mode. If the method succeeds, DXGI fills the destination surface.</p><p>Use <strong><see cref=\"M:SharpDX.DXGI.Output.GetDescription(SharpDX.DXGI.OutputDescription@)\"/></strong> to determine the size (width and height) of the output when you want to allocate space for the destination surface. This is true regardless of target monitor rotation. A destination surface created by a graphics component (such as Direct3D 10) must be created with CPU-write permission (see <see cref=\"!:SharpDX.Direct3D10.CpuAccessFlags.Write\"/>). Other surfaces should be created with CPU read-write permission (see D3D10_CPU_ACCESS_READ_WRITE). This method will modify the surface data to fit the destination surface (stretch, shrink, convert format, rotate). The stretch and shrink is performed with point-sampling.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGIOutput::GetDisplaySurfaceData']/*\"/>\t\n            <msdn-id>bb174550</msdn-id>\t\n            <unmanaged>HRESULT IDXGIOutput::GetDisplaySurfaceData([In] IDXGISurface* pDestination)</unmanaged>\t\n            <unmanaged-short>IDXGIOutput::GetDisplaySurfaceData</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.Output.GetFrameStatistics(SharpDX.DXGI.FrameStatistics@)\">\n            <summary>\t\n            <p>Gets statistics about recently rendered frames.</p>\t\n            </summary>\t\n            <param name=\"statsRef\"><dd>  <p>A reference to frame statistics (see <strong><see cref=\"T:SharpDX.DXGI.FrameStatistics\"/></strong>).</p> </dd></param>\t\n            <returns><p>If this function succeeds, it returns <see cref=\"F:SharpDX.Result.Ok\"/>. Otherwise, it might return <see cref=\"F:SharpDX.DXGI.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>This API is similar to <strong><see cref=\"M:SharpDX.DXGI.SwapChain.GetFrameStatistics(SharpDX.DXGI.FrameStatistics@)\"/></strong>.</p><p> </p><p><strong>Note</strong>??Calling this method is only supported while in full-screen mode.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGIOutput::GetFrameStatistics']/*\"/>\t\n            <msdn-id>bb174551</msdn-id>\t\n            <unmanaged>HRESULT IDXGIOutput::GetFrameStatistics([Out] DXGI_FRAME_STATISTICS* pStats)</unmanaged>\t\n            <unmanaged-short>IDXGIOutput::GetFrameStatistics</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.Output.GetClosestMatchingMode(SharpDX.ComObject,SharpDX.DXGI.ModeDescription,SharpDX.DXGI.ModeDescription@)\">\n            <summary>\t\n            Find the display mode that most closely matches the requested display mode.\t\n            </summary>\t\n            <remarks>\t\n            Direct3D devices require UNORM formats. This method finds the closest matching available display mode to the mode specified in pModeToMatch. Similarly ranked fields (ie. all specified, or all unspecified, etc) are resolved in the following order.  ScanlineOrdering Scaling Format Resolution RefreshRate  When determining the closest value for a particular field, previously matched fields are used to filter the display mode list choices, and  other fields are ignored. For example, when matching Resolution, the display mode list will have already been filtered by a certain ScanlineOrdering,  Scaling, and Format, while RefreshRate is ignored. This ordering doesn't define the absolute ordering for every usage scenario of FindClosestMatchingMode, because  the application can choose some values initially, effectively changing the order that fields are chosen. Fields of the display mode are matched one at a time, generally in a specified order. If a field is unspecified, FindClosestMatchingMode gravitates toward the values for the desktop related to this output.  If this output is not part of the desktop, then the default desktop output is used to find values. If an application uses a fully unspecified  display mode, FindClosestMatchingMode will typically return a display mode that matches the desktop settings for this output.   Unspecified fields are lower priority than specified fields and will be resolved later than specified fields. \t\n            </remarks>\t\n            <param name=\"device\">A reference to the Direct3D device interface. If this parameter is NULL, only modes whose format matches that of pModeToMatch will  be returned; otherwise, only those formats that are supported for scan-out by the device are returned. </param>\n            <param name=\"modeToMatch\">The desired display mode (see <see cref=\"T:SharpDX.DXGI.ModeDescription\"/>). Members of DXGI_MODE_DESC can be unspecified indicating no preference for  that member.  A value of 0 for Width or Height indicates the value is unspecified.  If either Width or  Height are 0 both must be 0.  A numerator and denominator of 0 in RefreshRate indicate it is unspecified. Other members  of DXGI_MODE_DESC have enumeration values indicating the member is unspecified.  If pConnectedDevice is NULL Format cannot be DXGI_FORMAT_UNKNOWN. </param>\n            <param name=\"closestMatch\">The mode that most closely matches pModeToMatch. </param>\n            <returns>Returns one of the following <see cref=\"!:SharpDX.DXGI.DXGIError\"/>. </returns>\n            <unmanaged>HRESULT IDXGIOutput::FindClosestMatchingMode([In] const DXGI_MODE_DESC* pModeToMatch,[Out] DXGI_MODE_DESC* pClosestMatch,[In, Optional] IUnknown* pConcernedDevice)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DXGI.Output.GetDisplayModeList(SharpDX.DXGI.Format,SharpDX.DXGI.DisplayModeEnumerationFlags)\">\n            <summary>\t\n            Gets the display modes that match the requested format and other input options.\t\n            </summary>\t\n            <remarks>\t\n            In general, when switching from windowed to full-screen mode, a swap chain automatically chooses a display mode that meets (or exceeds) the resolution, color  depth and refresh rate of the swap chain. To exercise more control over the display mode, use this API to poll the set of display modes that are validated  against monitor capabilities, or all modes that match the desktop (if the desktop settings are not validated against the monitor). As shown, this API is designed to be called twice. First to get the number of modes available, and second to return a description of the modes. \t\n            <code> UINT num = 0;\t\n            DXGI_FORMAT format = DXGI_FORMAT_R32G32B32A32_FLOAT;\t\n            UINT flags         = DXGI_ENUM_MODES_INTERLACED; pOutput-&gt;GetDisplayModeList( format, flags, &amp;num, 0); ... DXGI_MODE_DESC * pDescs = new DXGI_MODE_DESC[num];\t\n            pOutput-&gt;GetDisplayModeList( format, flags, &amp;num, pDescs); </code>\t\n            \t\n             \t\n            </remarks>\t\n            <param name=\"format\">The color format (see <see cref=\"T:SharpDX.DXGI.Format\"/>). </param>\n            <param name=\"flags\">format for modes to include (see {{DXGI_ENUM_MODES}}). DXGI_ENUM_MODES_SCALING needs to be specified to expose the display modes that require scaling.  Centered modes, requiring no  scaling and corresponding directly to the display output, are enumerated by default. </param>\n            <returns>Returns a list of display modes (see <see cref=\"T:SharpDX.DXGI.ModeDescription\"/>); </returns>\n            <unmanaged>HRESULT IDXGIOutput::GetDisplayModeList([None] DXGI_FORMAT EnumFormat,[None] int Flags,[InOut] int* pNumModes,[Out, Buffer, Optional] DXGI_MODE_DESC* pDesc)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DXGI.Output.Description\">\n            <summary>\t\n            <p>Get a description of the output.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGIOutput::GetDesc']/*\"/>\t\n            <msdn-id>bb174548</msdn-id>\t\n            <unmanaged>GetDesc</unmanaged>\t\n            <unmanaged-short>GetDesc</unmanaged-short>\t\n            <unmanaged>HRESULT IDXGIOutput::GetDesc([Out] DXGI_OUTPUT_DESC* pDesc)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DXGI.Output.GammaControlCapabilities\">\n            <summary>\t\n            <p>Gets a description of the gamma-control capabilities.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p> </p><p><strong>Note</strong>??Calling this method is only supported while in full-screen mode.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGIOutput::GetGammaControlCapabilities']/*\"/>\t\n            <msdn-id>bb174553</msdn-id>\t\n            <unmanaged>GetGammaControlCapabilities</unmanaged>\t\n            <unmanaged-short>GetGammaControlCapabilities</unmanaged-short>\t\n            <unmanaged>HRESULT IDXGIOutput::GetGammaControlCapabilities([Out] DXGI_GAMMA_CONTROL_CAPABILITIES* pGammaCaps)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DXGI.Output.GammaControl\">\n            <summary>\t\n            <p>Gets or sets the gamma control settings.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p> </p><p><strong>Note</strong>??Calling this method is only supported while in full-screen mode.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGIOutput::GetGammaControl']/*\"/>\t\n            <msdn-id>bb174552</msdn-id>\t\n            <unmanaged>GetGammaControl / SetGammaControl</unmanaged>\t\n            <unmanaged-short>GetGammaControl</unmanaged-short>\t\n            <unmanaged>HRESULT IDXGIOutput::GetGammaControl([Out] DXGI_GAMMA_CONTROL* pArray)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DXGI.Output.FrameStatistics\">\n            <summary>\t\n            <p>Gets statistics about recently rendered frames.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This API is similar to <strong><see cref=\"M:SharpDX.DXGI.SwapChain.GetFrameStatistics(SharpDX.DXGI.FrameStatistics@)\"/></strong>.</p><p> </p><p><strong>Note</strong>??Calling this method is only supported while in full-screen mode.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGIOutput::GetFrameStatistics']/*\"/>\t\n            <msdn-id>bb174551</msdn-id>\t\n            <unmanaged>GetFrameStatistics</unmanaged>\t\n            <unmanaged-short>GetFrameStatistics</unmanaged-short>\t\n            <unmanaged>HRESULT IDXGIOutput::GetFrameStatistics([Out] DXGI_FRAME_STATISTICS* pStats)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DXGI.Resource\">\n            <summary>\t\n            <p>An <strong><see cref=\"T:SharpDX.DXGI.Resource\"/></strong> interface allows resource sharing and identifies the memory that a resource resides in.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>To find out what type of memory a resource is currently located in, use <strong><see cref=\"M:SharpDX.DXGI.Device.QueryResourceResidency(SharpDX.ComObject[])\"/></strong>. To share resources between processes, use <strong><see cref=\"!:SharpDX.Direct3D10.Device.OpenSharedResource\"/></strong>. For information about how to share resources between multiple Windows graphics APIs, including Direct3D 11, Direct2D, Direct3D 10, and Direct3D 9Ex, see Surface Sharing Between Windows Graphics APIs.</p><p>You can retrieve the <strong><see cref=\"T:SharpDX.DXGI.Resource\"/></strong> interface from any video memory resource that you create from a Direct3D 10 and later function. Any Direct3D object that supports <strong><see cref=\"!:SharpDX.Direct3D10.Resource\"/></strong> or <strong><see cref=\"!:SharpDX.Direct3D11.Resource\"/></strong> also supports <strong><see cref=\"T:SharpDX.DXGI.Resource\"/></strong>. For example, the Direct3D 2D texture object that you create from <strong><see cref=\"!:SharpDX.Direct3D11.Device.CreateTexture2D\"/></strong> supports <strong><see cref=\"T:SharpDX.DXGI.Resource\"/></strong>. You can call <strong>QueryInterface</strong> on the 2D texture object (<strong><see cref=\"!:SharpDX.Direct3D11.Texture2D\"/></strong>) to retrieve the <strong><see cref=\"T:SharpDX.DXGI.Resource\"/></strong> interface. For example, to retrieve the <strong><see cref=\"T:SharpDX.DXGI.Resource\"/></strong> interface from  the 2D texture object, use the following code.</p><pre><code><see cref=\"T:SharpDX.DXGI.Resource\"/> * pDXGIResource;\t\n            hr = g_pd3dTexture2D-&gt;QueryInterface(__uuidof(<see cref=\"T:SharpDX.DXGI.Resource\"/>), (void **)&amp;pDXGIResource);\t\n            </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGIResource']/*\"/>\t\n            <msdn-id>bb174560</msdn-id>\t\n            <unmanaged>IDXGIResource</unmanaged>\t\n            <unmanaged-short>IDXGIResource</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.Resource.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DXGI.Resource\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.Resource.op_Explicit(System.IntPtr)~SharpDX.DXGI.Resource\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.DXGI.Resource\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.DXGI.Resource.GetSharedHandle(System.IntPtr@)\">\n            <summary>\t\n            <p>[Starting with Direct3D 11.1, we recommend not to use <strong>GetSharedHandle</strong> anymore to retrieve the handle to a shared resource. Instead, use <strong>IDXGIResource1::CreateSharedHandle</strong> to get a handle for sharing. To use <strong>IDXGIResource1::CreateSharedHandle</strong>, you  must create the resource as shared and specify that it uses NT handles (that is, you set the <strong>D3D11_RESOURCE_MISC_SHARED_NTHANDLE</strong> flag). We also recommend that you create shared resources that use NT handles so you can use <strong>CloseHandle</strong>, <strong>DuplicateHandle</strong>, and so on on those shared resources.]</p><p>Gets the handle to a shared resource.</p>\t\n            </summary>\t\n            <param name=\"sharedHandleRef\">No documentation.</param>\t\n            <returns><p>Returns one of the DXGI_ERROR values.</p></returns>\t\n            <remarks>\t\n            <p>You can pass the handle that  <strong>GetSharedHandle</strong> returns in a call to the <strong><see cref=\"!:SharpDX.Direct3D11.Device.OpenSharedResource\"/></strong> method to give a device access to a shared resource that you created on a different device.</p><p><strong>GetSharedHandle</strong> doesn't always return a handle. <strong>GetSharedHandle</strong> only returns the handle when you  created the resource as shared (that is, you set the <strong><see cref=\"!:SharpDX.Direct3D11.ResourceOptionFlags.Shared\"/></strong> or <strong><see cref=\"!:SharpDX.Direct3D11.ResourceOptionFlags.SharedKeyedmutex\"/></strong> flag).</p><p>The handle that  <strong>GetSharedHandle</strong> returns is not an NT handle. Therefore, don't use the handle with <strong>CloseHandle</strong>, <strong>DuplicateHandle</strong>, and so on. The creator of a shared resource must not destroy the resource until all entities that  opened the resource have destroyed the resource. The validity of the handle is tied to the lifetime of the underlying video memory. If no resource objects exist on any devices that refer to this resource, the handle is no longer valid. To extend the lifetime of the handle and video memory, you must open the shared resource on a device.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGIResource::GetSharedHandle']/*\"/>\t\n            <msdn-id>bb174562</msdn-id>\t\n            <unmanaged>HRESULT IDXGIResource::GetSharedHandle([Out] void** pSharedHandle)</unmanaged>\t\n            <unmanaged-short>IDXGIResource::GetSharedHandle</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.Resource.GetUsage(System.Int32@)\">\n            <summary>\t\n            <p>Get the expected resource usage.</p>\t\n            </summary>\t\n            <param name=\"usageRef\"><dd>  <p>A reference to a usage flag (see DXGI_USAGE). For Direct3D 10, a surface can be used as a shader input or a render-target output.</p> </dd></param>\t\n            <returns><p>Returns one of the following DXGI_ERROR.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGIResource::GetUsage']/*\"/>\t\n            <msdn-id>bb174563</msdn-id>\t\n            <unmanaged>HRESULT IDXGIResource::GetUsage([Out] unsigned int* pUsage)</unmanaged>\t\n            <unmanaged-short>IDXGIResource::GetUsage</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.Resource.SetEvictionPriority(System.Int32)\">\n            <summary>\t\n            <p>Set the priority for evicting the resource from memory.</p>\t\n            </summary>\t\n            <param name=\"evictionPriority\"><dd>  <p>The priority is one of the following values: </p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.DXGI.ResourcePriority.Minimum\"/> (0x28000000)</strong></dt> </dl> </td><td> <p>The resource is unused and can be evicted as soon as another resource requires the memory that the resource occupies.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.DXGI.ResourcePriority.Low\"/> (0x50000000)</strong></dt> </dl> </td><td> <p>The eviction priority of the resource is low. The placement of the resource is not critical, and minimal work is performed to find a location for the resource. For example, if a GPU can render with a vertex buffer from either local or non-local memory with little difference in performance, that vertex buffer is low priority. Other more critical resources (for example, a render target or texture) can then occupy the faster memory.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.DXGI.ResourcePriority.Normal\"/> (0x78000000)</strong></dt> </dl> </td><td> <p>The eviction priority of the resource is normal. The placement of the resource is important, but not critical, for performance. The resource is placed in its preferred location instead of a low-priority resource. </p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.DXGI.ResourcePriority.High\"/> (0xa0000000)</strong></dt> </dl> </td><td> <p>The eviction priority of the resource is high. The resource is placed in its preferred location instead of a low-priority or normal-priority resource.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.DXGI.ResourcePriority.Maximum\"/> (0xc8000000)</strong></dt> </dl> </td><td> <p>The resource is evicted from memory only if there is no other way of resolving the memory requirement.</p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <returns><p>Returns one of the following DXGI_ERROR.</p></returns>\t\n            <remarks>\t\n            <p>The eviction priority is a memory-management variable that is used by DXGI for determining how to populate overcommitted memory.</p><p>You can set priority levels other than the defined values when appropriate. For example, you can set a resource with a priority level of 0x78000001 to indicate that the resource is slightly above normal.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGIResource::SetEvictionPriority']/*\"/>\t\n            <msdn-id>Bb174564</msdn-id>\t\n            <unmanaged>HRESULT IDXGIResource::SetEvictionPriority([In] unsigned int EvictionPriority)</unmanaged>\t\n            <unmanaged-short>IDXGIResource::SetEvictionPriority</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.Resource.GetEvictionPriority(System.Int32@)\">\n            <summary>\t\n            <p>Get the eviction priority.</p>\t\n            </summary>\t\n            <param name=\"evictionPriorityRef\"><dd>  <p>A reference to the eviction priority, which determines when a resource can be evicted from memory.  </p> <p>The following defined values are possible.</p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.DXGI.ResourcePriority.Minimum\"/> (0x28000000)</strong></dt> </dl> </td><td> <p>The resource is unused and can be evicted as soon as another resource requires the memory that the resource occupies.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.DXGI.ResourcePriority.Low\"/> (0x50000000)</strong></dt> </dl> </td><td> <p>The eviction priority of the resource is low. The placement of the resource is not critical, and minimal work is performed to find a location for the resource. For example, if a GPU can render with a vertex buffer from either local or non-local memory with little difference in performance, that vertex buffer is low priority. Other more critical resources (for example, a render target or texture) can then occupy the faster memory.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.DXGI.ResourcePriority.Normal\"/> (0x78000000)</strong></dt> </dl> </td><td> <p>The eviction priority of the resource is normal. The placement of the resource is important, but not critical, for performance. The resource is placed in its preferred location instead of a low-priority resource. </p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.DXGI.ResourcePriority.High\"/> (0xa0000000)</strong></dt> </dl> </td><td> <p>The eviction priority of the resource is high. The resource is placed in its preferred location instead of a low-priority or normal-priority resource.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.DXGI.ResourcePriority.Maximum\"/> (0xc8000000)</strong></dt> </dl> </td><td> <p>The resource is evicted from memory only if there is no other way of resolving the memory requirement.</p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <returns><p>Returns one of the following DXGI_ERROR.</p></returns>\t\n            <remarks>\t\n            <p>The eviction priority is a memory-management variable that is used by DXGI to determine how to manage overcommitted memory.</p><p>Priority levels other than the defined values are used when appropriate. For example, a resource with a priority level of 0x78000001 indicates that the resource is slightly above normal.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGIResource::GetEvictionPriority']/*\"/>\t\n            <msdn-id>bb174561</msdn-id>\t\n            <unmanaged>HRESULT IDXGIResource::GetEvictionPriority([Out] unsigned int* pEvictionPriority)</unmanaged>\t\n            <unmanaged-short>IDXGIResource::GetEvictionPriority</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.DXGI.Resource.SharedHandle\">\n            <summary>\t\n            <p>[Starting with Direct3D 11.1, we recommend not to use <strong>GetSharedHandle</strong> anymore to retrieve the handle to a shared resource. Instead, use <strong>IDXGIResource1::CreateSharedHandle</strong> to get a handle for sharing. To use <strong>IDXGIResource1::CreateSharedHandle</strong>, you  must create the resource as shared and specify that it uses NT handles (that is, you set the <strong>D3D11_RESOURCE_MISC_SHARED_NTHANDLE</strong> flag). We also recommend that you create shared resources that use NT handles so you can use <strong>CloseHandle</strong>, <strong>DuplicateHandle</strong>, and so on on those shared resources.]</p><p>Gets the handle to a shared resource.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>You can pass the handle that  <strong>GetSharedHandle</strong> returns in a call to the <strong><see cref=\"!:SharpDX.Direct3D11.Device.OpenSharedResource\"/></strong> method to give a device access to a shared resource that you created on a different device.</p><p><strong>GetSharedHandle</strong> doesn't always return a handle. <strong>GetSharedHandle</strong> only returns the handle when you  created the resource as shared (that is, you set the <strong><see cref=\"!:SharpDX.Direct3D11.ResourceOptionFlags.Shared\"/></strong> or <strong><see cref=\"!:SharpDX.Direct3D11.ResourceOptionFlags.SharedKeyedmutex\"/></strong> flag).</p><p>The handle that  <strong>GetSharedHandle</strong> returns is not an NT handle. Therefore, don't use the handle with <strong>CloseHandle</strong>, <strong>DuplicateHandle</strong>, and so on. The creator of a shared resource must not destroy the resource until all entities that  opened the resource have destroyed the resource. The validity of the handle is tied to the lifetime of the underlying video memory. If no resource objects exist on any devices that refer to this resource, the handle is no longer valid. To extend the lifetime of the handle and video memory, you must open the shared resource on a device.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGIResource::GetSharedHandle']/*\"/>\t\n            <msdn-id>bb174562</msdn-id>\t\n            <unmanaged>GetSharedHandle</unmanaged>\t\n            <unmanaged-short>GetSharedHandle</unmanaged-short>\t\n            <unmanaged>HRESULT IDXGIResource::GetSharedHandle([Out] void** pSharedHandle)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DXGI.Resource.Usage\">\n            <summary>\t\n            <p>Get the expected resource usage.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGIResource::GetUsage']/*\"/>\t\n            <msdn-id>bb174563</msdn-id>\t\n            <unmanaged>GetUsage</unmanaged>\t\n            <unmanaged-short>GetUsage</unmanaged-short>\t\n            <unmanaged>HRESULT IDXGIResource::GetUsage([Out] unsigned int* pUsage)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DXGI.Resource.EvictionPriority\">\n            <summary>\t\n            <p>Get or sets the eviction priority.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The eviction priority is a memory-management variable that is used by DXGI to determine how to manage overcommitted memory.</p><p>Priority levels other than the defined values are used when appropriate. For example, a resource with a priority level of 0x78000001 indicates that the resource is slightly above normal.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGIResource::GetEvictionPriority']/*\"/>\t\n            <msdn-id>bb174561</msdn-id>\t\n            <unmanaged>GetEvictionPriority / SetEvictionPriority</unmanaged>\t\n            <unmanaged-short>GetEvictionPriority</unmanaged-short>\t\n            <unmanaged>HRESULT IDXGIResource::GetEvictionPriority([Out] unsigned int* pEvictionPriority)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DXGI.Surface\">\n            <summary>\t\n            <p>The  <strong><see cref=\"T:SharpDX.DXGI.Surface\"/></strong> interface implements methods for image-data objects.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>An image-data object is a 2D section of memory, commonly called a surface. To get the surface from an output, call <strong><see cref=\"M:SharpDX.DXGI.Output.CopyDisplaySurfaceTo(SharpDX.DXGI.Surface)\"/></strong>. </p><p>The runtime automatically creates an <strong><see cref=\"T:SharpDX.DXGI.Surface\"/></strong> interface when it creates a Direct3D resource object that represents a surface. For example, the runtime creates an <strong><see cref=\"T:SharpDX.DXGI.Surface\"/></strong> interface when you call <strong><see cref=\"!:SharpDX.Direct3D11.Device.CreateTexture2D\"/></strong> or <strong><see cref=\"!:SharpDX.Direct3D10.Device.CreateTexture2D\"/></strong> to create a 2D texture. To retrieve the <strong><see cref=\"T:SharpDX.DXGI.Surface\"/></strong> interface that represents the 2D texture surface, call <strong>ID3D11Texture2D::QueryInterface</strong> or <strong>ID3D10Texture2D::QueryInterface</strong>. In this call, you must pass the identifier of <strong><see cref=\"T:SharpDX.DXGI.Surface\"/></strong>. If the 2D texture has only a single MIP-map level and does not consist of an array of textures, <strong>QueryInterface</strong> succeeds and returns a reference to the <strong><see cref=\"T:SharpDX.DXGI.Surface\"/></strong> interface reference. Otherwise, <strong>QueryInterface</strong> fails and does not return the reference to <strong><see cref=\"T:SharpDX.DXGI.Surface\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGISurface']/*\"/>\t\n            <msdn-id>bb174565</msdn-id>\t\n            <unmanaged>IDXGISurface</unmanaged>\t\n            <unmanaged-short>IDXGISurface</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.Surface.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DXGI.Surface\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.Surface.op_Explicit(System.IntPtr)~SharpDX.DXGI.Surface\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.DXGI.Surface\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.DXGI.Surface.GetDescription(SharpDX.DXGI.SurfaceDescription@)\">\n            <summary>\t\n            <p>Get a description of the surface.</p>\t\n            </summary>\t\n            <param name=\"descRef\"><dd>  <p>A reference to the surface description (see <strong><see cref=\"T:SharpDX.DXGI.SurfaceDescription\"/></strong>).</p> </dd></param>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful; otherwise, returns one of the error codes that are described in the DXGI_ERROR topic.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGISurface::GetDesc']/*\"/>\t\n            <msdn-id>bb174566</msdn-id>\t\n            <unmanaged>HRESULT IDXGISurface::GetDesc([Out] DXGI_SURFACE_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>IDXGISurface::GetDesc</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.Surface.Map(SharpDX.DXGI.MappedRectangle@,System.Int32)\">\n            <summary>\t\n            <p>Get a reference to the data contained in the surface, and deny GPU access to the surface.</p>\t\n            </summary>\t\n            <param name=\"lockedRectRef\"><dd>  <p>A reference to the surface data (see <strong><see cref=\"T:SharpDX.DXGI.MappedRectangle\"/></strong>).</p> </dd></param>\t\n            <param name=\"mapFlags\"><dd>  <p>CPU read-write flags. These flags can be combined with a logical OR. </p> <ul> <li><see cref=\"F:SharpDX.DXGI.MapFlags.Read\"/> - Allow CPU read access.</li> <li><see cref=\"F:SharpDX.DXGI.MapFlags.Write\"/> - Allow CPU write access.</li> <li><see cref=\"F:SharpDX.DXGI.MapFlags.Discard\"/> - Discard the previous contents of a resource when it is mapped.</li> </ul> </dd></param>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful; otherwise, returns one of the error codes that are described in the DXGI_ERROR topic.</p></returns>\t\n            <remarks>\t\n            <p>Use <strong><see cref=\"M:SharpDX.DXGI.Surface.Map(SharpDX.DXGI.MappedRectangle@,System.Int32)\"/></strong> to access a surface from the CPU. To release a mapped surface (and allow GPU access) call <strong><see cref=\"M:SharpDX.DXGI.Surface.Unmap\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGISurface::Map']/*\"/>\t\n            <msdn-id>bb174567</msdn-id>\t\n            <unmanaged>HRESULT IDXGISurface::Map([Out] DXGI_MAPPED_RECT* pLockedRect,[In] unsigned int MapFlags)</unmanaged>\t\n            <unmanaged-short>IDXGISurface::Map</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.Surface.Unmap\">\n            <summary>\t\n            <p>Invalidate the reference to the surface retrieved by <strong><see cref=\"M:SharpDX.DXGI.Surface.Map(SharpDX.DXGI.MappedRectangle@,System.Int32)\"/></strong> and re-enable GPU access to the resource.</p>\t\n            </summary>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful; otherwise, returns one of the error codes that are described in the DXGI_ERROR topic.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGISurface::Unmap']/*\"/>\t\n            <msdn-id>bb174568</msdn-id>\t\n            <unmanaged>HRESULT IDXGISurface::Unmap()</unmanaged>\t\n            <unmanaged-short>IDXGISurface::Unmap</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.Surface.Map(SharpDX.DXGI.MapFlags)\">\n            <summary>\n            Acquires access to the surface data.\n            </summary>\n            <param name=\"flags\">Flags specifying CPU access permissions.</param>\n            <returns>A <see cref=\"T:SharpDX.DataRectangle\" /> for accessing the mapped data, or <c>null</c> on failure.</returns>.\n        </member>\n        <member name=\"M:SharpDX.DXGI.Surface.Map(SharpDX.DXGI.MapFlags,SharpDX.DataStream@)\">\n            <summary>\n            Acquires access to the surface data.\n            </summary>\n            <param name=\"flags\">Flags specifying CPU access permissions.</param>\n            <returns>A <see cref=\"T:SharpDX.DataRectangle\" /> for accessing the mapped data, or <c>null</c> on failure.</returns>.\n        </member>\n        <member name=\"M:SharpDX.DXGI.Surface.FromSwapChain(SharpDX.DXGI.SwapChain,System.Int32)\">\n            <summary>\n            Gets a swap chain back buffer.\n            </summary>\n            <param name=\"swapChain\">The swap chain to get the buffer from.</param>\n            <param name=\"index\">The index of the desired buffer.</param>\n            <returns>The buffer interface, or <c>null</c> on failure.</returns>\n        </member>\n        <member name=\"P:SharpDX.DXGI.Surface.Description\">\n            <summary>\t\n            <p>Get a description of the surface.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGISurface::GetDesc']/*\"/>\t\n            <msdn-id>bb174566</msdn-id>\t\n            <unmanaged>GetDesc</unmanaged>\t\n            <unmanaged-short>GetDesc</unmanaged-short>\t\n            <unmanaged>HRESULT IDXGISurface::GetDesc([Out] DXGI_SURFACE_DESC* pDesc)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DXGI.Surface1\">\n            <summary>\t\n            <p>The <strong><see cref=\"T:SharpDX.DXGI.Surface1\"/></strong> interface extends the <strong><see cref=\"T:SharpDX.DXGI.Surface\"/></strong> by adding support for using Windows Graphics Device Interface (GDI) to render to a Microsoft DirectX Graphics Infrastructure (DXGI) surface.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This interface is not supported by DXGI 1.0, which shipped in Windows?Vista and Windows Server?2008. DXGI 1.1 support is required, which is available on  Windows?7, Windows Server?2008?R2, and as an update to Windows?Vista with Service Pack?2 (SP2) (KB 971644) and Windows Server?2008 (KB 971512).</p><p>An image-data object is a 2D section of memory, commonly called a surface. To get the surface from an output, call <strong><see cref=\"M:SharpDX.DXGI.Output.CopyDisplaySurfaceTo(SharpDX.DXGI.Surface)\"/></strong>. Then, call <strong>QueryInterface</strong> on the <strong><see cref=\"T:SharpDX.DXGI.Surface\"/></strong> object that <strong><see cref=\"M:SharpDX.DXGI.Output.CopyDisplaySurfaceTo(SharpDX.DXGI.Surface)\"/></strong> returns to retrieve the <strong><see cref=\"T:SharpDX.DXGI.Surface1\"/></strong> interface.</p><p>Any object that supports <strong><see cref=\"T:SharpDX.DXGI.Surface\"/></strong> also supports <strong><see cref=\"T:SharpDX.DXGI.Surface1\"/></strong>.</p><p>The runtime automatically creates an <strong><see cref=\"T:SharpDX.DXGI.Surface1\"/></strong> interface when it creates a Direct3D resource object that represents a surface. For example, the runtime creates an <strong><see cref=\"T:SharpDX.DXGI.Surface1\"/></strong> interface when you call <strong><see cref=\"!:SharpDX.Direct3D11.Device.CreateTexture2D\"/></strong> or <strong><see cref=\"!:SharpDX.Direct3D10.Device.CreateTexture2D\"/></strong> to create a 2D texture. To retrieve the <strong><see cref=\"T:SharpDX.DXGI.Surface1\"/></strong> interface that represents the 2D texture surface, call <strong>ID3D11Texture2D::QueryInterface</strong> or <strong>ID3D10Texture2D::QueryInterface</strong>. In this call, you must pass the identifier of <strong><see cref=\"T:SharpDX.DXGI.Surface1\"/></strong>. If the 2D texture has only a single MIP-map level and does not consist of an array of textures, <strong>QueryInterface</strong> succeeds and returns a reference to the <strong><see cref=\"T:SharpDX.DXGI.Surface1\"/></strong> interface reference. Otherwise, <strong>QueryInterface</strong> fails and does not return the reference to <strong><see cref=\"T:SharpDX.DXGI.Surface1\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGISurface1']/*\"/>\t\n            <msdn-id>ff471343</msdn-id>\t\n            <unmanaged>IDXGISurface1</unmanaged>\t\n            <unmanaged-short>IDXGISurface1</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.Surface1.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DXGI.Surface1\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.Surface1.op_Explicit(System.IntPtr)~SharpDX.DXGI.Surface1\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.DXGI.Surface1\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.DXGI.Surface1.GetDC(SharpDX.Bool)\">\n            <summary>\t\n            <p>Returns a device context (DC) that allows you to render to a Microsoft DirectX Graphics Infrastructure (DXGI) surface using Windows Graphics Device Interface (GDI).</p>\t\n            </summary>\t\n            <param name=\"discard\"><dd>  <p>A Boolean value that specifies whether to preserve Direct3D contents in the GDI DC. <strong>TRUE</strong> directs the runtime not to preserve Direct3D contents in the GDI DC; that is, the runtime discards the Direct3D contents. <strong><see cref=\"F:SharpDX.Result.False\"/></strong> guarantees that Direct3D contents are available in the GDI DC.</p> </dd></param>\t\n            <returns><dd>  <p>A reference to an <strong><see cref=\"T:System.IntPtr\"/></strong> handle that represents the current device context for GDI rendering.</p> </dd></returns>\t\n            <remarks>\t\n            <p>This method is not supported by DXGI 1.0, which shipped in Windows?Vista and Windows Server?2008. DXGI 1.1 support is required, which is available on  Windows?7, Windows Server?2008?R2, and as an update to Windows?Vista with Service Pack?2 (SP2) (KB 971644) and Windows Server?2008 (KB 971512).</p><p>After you use the <strong>GetDC</strong> method to retrieve a DC, you can render to the DXGI surface by using GDI.   The <strong>GetDC</strong> method readies the surface for GDI rendering and allows inter-operation between DXGI and GDI technologies.  </p><p>Keep the following in mind when using this method:</p><ul> <li>You must create the surface by using the <strong><see cref=\"!:SharpDX.Direct3D11.ResourceOptionFlags.GdiCompatible\"/></strong> flag for a surface or by using the <strong><see cref=\"F:SharpDX.DXGI.SwapChainFlags.GdiCompatible\"/></strong> flag for swap chains,  otherwise this method fails.</li> <li>You must release the device and call the <strong><see cref=\"M:SharpDX.DXGI.Surface1.ReleaseDC_(System.Nullable{SharpDX.Rectangle})\"/></strong> method before you issue any new Direct3D commands.</li> <li>This method fails if an outstanding DC has already been created by this method.</li> <li>The format for the surface or swap chain must be <strong><see cref=\"F:SharpDX.DXGI.Format.B8G8R8A8_UNorm_SRgb\"/></strong> or <strong><see cref=\"F:SharpDX.DXGI.Format.B8G8R8A8_UNorm\"/></strong>.</li> <li>On <strong>GetDC</strong>, the render target in the output merger of the Direct3D pipeline is unbound from the surface.   You must call the <strong><see cref=\"!:SharpDX.Direct3D11.OutputMergerStage.SetRenderTargets\"/></strong> method on the device prior to Direct3D rendering after GDI rendering.</li> <li>Prior to resizing buffers you must release all outstanding DCs.</li> </ul><p> You can also call <strong>GetDC</strong> on the back buffer at index 0 of a swap chain by obtaining an <strong><see cref=\"T:SharpDX.DXGI.Surface1\"/></strong> from the swap chain.   The following code illustrates the process.</p><pre><code> <see cref=\"T:SharpDX.DXGI.SwapChain\"/>* g_pSwapChain = <c>null</c>;\t\n            <see cref=\"T:SharpDX.DXGI.Surface1\"/>* g_pSurface1 = <c>null</c>;\t\n            ...\t\n            //Setup the device and and swapchain\t\n            g_pSwapChain-&gt;GetBuffer(0, __uuidof(<see cref=\"T:SharpDX.DXGI.Surface1\"/>), (void**) &amp;g_pSurface1);\t\n            g_pSurface1-&gt;GetDC( <see cref=\"F:SharpDX.Result.False\"/>, &amp;g_hDC );\t\n            ...      \t\n            //Draw on the DC using GDI\t\n            ...\t\n            //When finish drawing release the DC\t\n            g_pSurface1-&gt;ReleaseDC( <c>null</c> ); </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGISurface1::GetDC']/*\"/>\t\n            <msdn-id>ff471345</msdn-id>\t\n            <unmanaged>HRESULT IDXGISurface1::GetDC([In] BOOL Discard,[Out] HDC* phdc)</unmanaged>\t\n            <unmanaged-short>IDXGISurface1::GetDC</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.Surface1.ReleaseDC_(System.Nullable{SharpDX.Rectangle})\">\n            <summary>\t\n            <p>Releases the GDI device context (DC) that is associated with the current surface and allows you to use Direct3D to render.</p>\t\n            </summary>\t\n            <param name=\"dirtyRectRef\"><dd>  <p>A reference to a <strong><see cref=\"T:SharpDX.Rectangle\"/></strong> structure that identifies the dirty region of the surface.   A dirty region is any part of the surface that you used for GDI rendering and that you want to preserve.  This area is used as a performance hint to graphics subsystem in certain scenarios.  Do not use this parameter to restrict rendering to the specified rectangular region.  If you pass in <strong><c>null</c></strong>, <strong>ReleaseDC</strong> considers the whole surface as dirty.  Otherwise, <strong>ReleaseDC</strong> uses the area specified by the <see cref=\"T:SharpDX.Rectangle\"/> as a performance hint to indicate what areas have been manipulated by GDI rendering.</p> <p>You can pass a reference to an empty <strong><see cref=\"T:SharpDX.Rectangle\"/></strong> structure (a rectangle with no position or area) if you didn't change any content.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>This method is not supported by DXGI 1.0, which shipped in Windows?Vista and Windows Server?2008. DXGI 1.1 support is required, which is available on  Windows?7, Windows Server?2008?R2, and as an update to Windows?Vista with Service Pack?2 (SP2) (KB 971644) and Windows Server?2008 (KB 971512).</p><p>Use the <strong>ReleaseDC</strong> method to release the DC and indicate that your application finished all GDI rendering to this surface.   You must call the <strong>ReleaseDC</strong> method before you can use Direct3D to perform additional rendering.</p><p>Prior to resizing buffers you must release all outstanding DCs.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGISurface1::ReleaseDC']/*\"/>\t\n            <msdn-id>ff471346</msdn-id>\t\n            <unmanaged>HRESULT IDXGISurface1::ReleaseDC([In, Optional] RECT* pDirtyRect)</unmanaged>\t\n            <unmanaged-short>IDXGISurface1::ReleaseDC</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.Surface1.ReleaseDC\">\n            <summary>\t\n            Releases the GDI device context (DC) associated with the current surface and allows rendering using Direct3D. The whole surface to be considered dirty.\n            </summary>\t\n            <remarks>\t\n            Use the ReleaseDC method to release the DC and indicate that your application has finished all GDI rendering to this surface.   You must call the ReleaseDC method before you perform addition rendering using Direct3D. Prior to resizing buffers all outstanding DCs must be released. \t\n            </remarks>\t\n            <returns>If the method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code. </returns>\n            <unmanaged>HRESULT IDXGISurface1::ReleaseDC([In, Optional] RECT* pDirtyRect)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DXGI.Surface1.ReleaseDC(SharpDX.Rectangle)\">\n            <summary>\t\n            Releases the GDI device context (DC) associated with the current surface and allows rendering using Direct3D.\t\n            </summary>\t\n            <remarks>\t\n            Use the ReleaseDC method to release the DC and indicate that your application has finished all GDI rendering to this surface.   You must call the ReleaseDC method before you perform addition rendering using Direct3D. Prior to resizing buffers all outstanding DCs must be released. \t\n            </remarks>\t\n            <param name=\"dirtyRect\">A reference to a <see cref=\"T:SharpDX.Rectangle\"/> structure that identifies the dirty region of the surface.   A dirty region is any part of the surface that you have used for GDI rendering and that you want to preserve.  This is used as a performance hint to graphics subsystem in certain scenarios.  Do not use this parameter to restrict rendering to the specified rectangular region. The area specified by the <see cref=\"T:SharpDX.Rectangle\"/> will be used as a performance hint to indicate what areas have been manipulated by GDI rendering. </param>\n            <returns>If the method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code. </returns>\n            <unmanaged>HRESULT IDXGISurface1::ReleaseDC([In, Optional] RECT* pDirtyRect)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DXGI.SwapChain\">\n            <summary>\t\n            <p>An <strong><see cref=\"T:SharpDX.DXGI.SwapChain\"/></strong> interface implements one or more <strong>surfaces</strong> for storing rendered data before presenting it to an output.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>You can create a swap chain in several ways. If your application uses Direct3D, create a swap chain when you create a device by \t\n            calling <strong><see cref=\"!:SharpDX.Direct3D10.D3D10.CreateDeviceAndSwapChain\"/></strong> or <strong><see cref=\"!:SharpDX.Direct3D11.D3D11.CreateDeviceAndSwapChain\"/></strong>. If your application does not need Direct3D, create a swap chain for use directly with DXGI by \t\n            calling <strong><see cref=\"M:SharpDX.DXGI.Factory.CreateSwapChain(SharpDX.ComObject,SharpDX.DXGI.SwapChainDescription@,SharpDX.DXGI.SwapChain)\"/></strong>, <strong>IDXGIFactory2::CreateSwapChainForHwnd</strong>, <strong>IDXGIFactory2::CreateSwapChainForImmersiveWindow</strong>, or <strong>IDXGIFactory2::CreateSwapChainForCompositionSurface</strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGISwapChain']/*\"/>\t\n            <msdn-id>bb174569</msdn-id>\t\n            <unmanaged>IDXGISwapChain</unmanaged>\t\n            <unmanaged-short>IDXGISwapChain</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.SwapChain.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DXGI.SwapChain\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.SwapChain.op_Explicit(System.IntPtr)~SharpDX.DXGI.SwapChain\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.DXGI.SwapChain\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.DXGI.SwapChain.Present(System.Int32,SharpDX.DXGI.PresentFlags)\">\n            <summary>\t\n            <p>[Starting with Direct3D 11.1, we recommend not to use <strong>Present</strong> anymore to present a rendered image. Instead, use <strong>IDXGISwapChain1::Present1</strong>.]</p><p>Presents a rendered image to the user.</p>\t\n            </summary>\t\n            <param name=\"syncInterval\">No documentation.</param>\t\n            <param name=\"flags\">No documentation.</param>\t\n            <returns><p>Possible return values include: <see cref=\"F:SharpDX.Result.Ok\"/>, <see cref=\"F:SharpDX.DXGI.ResultCode.DeviceReset\"/> or <see cref=\"F:SharpDX.DXGI.ResultCode.DeviceRemoved\"/> (see DXGI_ERROR), <see cref=\"F:SharpDX.DXGI.DXGIStatus.Occluded\"/> (see <see cref=\"T:SharpDX.DXGI.DXGIStatus\"/>), or D3DDDIERR_DEVICEREMOVED.  </p><p><strong>Note</strong>??The <strong>Present</strong> method can return either <see cref=\"F:SharpDX.DXGI.ResultCode.DeviceRemoved\"/> or D3DDDIERR_DEVICEREMOVED if a video card has been physically removed from the computer, or a driver upgrade for the video card has occurred.</p></returns>\t\n            <remarks>\t\n            <p>For the best performance when flipping swap-chain buffers in a full-screen application, see Full-Screen Application Performance Hints.</p><p>Because calling <strong>Present</strong> might cause the render thread to wait on the message-pump thread, be careful when calling this method in an application that uses multiple threads. For more details, see Multithreading Considerations.</p><table> <tr><td> <p>Differences between Direct3D 9 and Direct3D 10:</p> <p>Specifying <strong><see cref=\"F:SharpDX.DXGI.PresentFlags.Test\"/></strong> in the <em>Flags</em> parameter is analogous to <strong><see cref=\"!:SharpDX.Direct3D9.Device.TestCooperativeLevel\"/></strong> in Direct3D 9.</p> </td></tr> </table><p>?</p><p>For flip presentation model swap chains that you create with the <strong>DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL</strong> value set, a successful presentation unbinds back buffer 0 from the graphics pipeline, except for when you pass the <strong><see cref=\"F:SharpDX.DXGI.PresentFlags.DoNotSequence\"/></strong> flag in the <em>Flags</em> parameter.</p>Flip presentation model queue<p>Suppose the following frames with sync-interval values are queued from oldest (A) to newest (E) before you call <strong>Present</strong>.</p><p>A: 3, B: 0, C: 0, D: 1, E: 0</p><p>When you call <strong>Present</strong>, the runtime shows frame A for 3 vertical blank intervals, then frame D for 1 vertical blank interval, and then frame E until you submit a new presentation. The runtime discards frames C and D.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGISwapChain::Present']/*\"/>\t\n            <msdn-id>bb174576</msdn-id>\t\n            <unmanaged>HRESULT IDXGISwapChain::Present([In] unsigned int SyncInterval,[In] DXGI_PRESENT_FLAGS Flags)</unmanaged>\t\n            <unmanaged-short>IDXGISwapChain::Present</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.SwapChain.GetBuffer(System.Int32,System.Guid,System.IntPtr@)\">\n            <summary>\t\n            <p>Accesses one of the swap-chain's back buffers.</p>\t\n            </summary>\t\n            <param name=\"buffer\"><dd>  <p>A zero-based buffer index. </p> <p>If the swap chain's swap effect is <strong><see cref=\"F:SharpDX.DXGI.SwapEffect.Discard\"/></strong>, this method can only access the first buffer; for this situation, set the index to zero.</p> <p>If the swap chain's swap effect is either <strong><see cref=\"F:SharpDX.DXGI.SwapEffect.Sequential\"/></strong> or <strong>DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL</strong>, this method can only access read-only buffers with indexes greater than zero. Read-only back buffers have the <strong>BufferUsage</strong> member of the <strong><see cref=\"T:SharpDX.DXGI.SwapChainDescription\"/></strong> or <strong>DXGI_SWAP_CHAIN_DESC1</strong> structure set to <strong><see cref=\"F:SharpDX.DXGI.Usage.ReadOnly\"/></strong>.</p> </dd></param>\t\n            <param name=\"riid\"><dd>  <p>The type of interface used to manipulate the buffer. See remarks.</p> </dd></param>\t\n            <param name=\"surfaceOut\"><dd>  <p>A reference to a back-buffer interface.</p> </dd></param>\t\n            <returns><p>Returns one of the following DXGI_ERROR.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGISwapChain::GetBuffer']/*\"/>\t\n            <msdn-id>bb174570</msdn-id>\t\n            <unmanaged>HRESULT IDXGISwapChain::GetBuffer([In] unsigned int Buffer,[In] const GUID&amp; riid,[Out] void** ppSurface)</unmanaged>\t\n            <unmanaged-short>IDXGISwapChain::GetBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.SwapChain.SetFullscreenState(SharpDX.Bool,SharpDX.DXGI.Output)\">\n            <summary>\t\n            <p>Sets the display state to windowed or full screen.</p>\t\n            </summary>\t\n            <param name=\"fullscreen\"><dd>  <p>A Boolean value that specifies whether to set the display state to windowed or full screen. <strong>TRUE</strong> for full screen, and <strong><see cref=\"F:SharpDX.Result.False\"/></strong> for windowed.</p> </dd></param>\t\n            <param name=\"targetRef\"><dd>  <p>If you pass <strong>TRUE</strong> to the <em>Fullscreen</em> parameter to set the display state to full screen, you can optionally set this parameter to a reference to an <strong><see cref=\"T:SharpDX.DXGI.Output\"/></strong> interface for the output target that contains the swap chain. If you set this parameter to <strong><c>null</c></strong>, DXGI will choose the output based on the swap-chain's device and the output window's  placement. If you pass <strong><see cref=\"F:SharpDX.Result.False\"/></strong> to <em>Fullscreen</em>, you must set this parameter to <strong><c>null</c></strong>.</p> </dd></param>\t\n            <returns><p>This methods returns: </p><ul> <li><see cref=\"F:SharpDX.Result.Ok\"/> if the action succeeded and the swap chain was placed in the requested state.</li> <li><see cref=\"F:SharpDX.DXGI.ResultCode.NotCurrentlyAvailable\"/> if the action failed. There are many reasons why a windowed-mode swap chain cannot switch to full-screen mode. For instance: <ul> <li>The application is running over Terminal Server.</li> <li>The output window is occluded.</li> <li>The output window does not have keyboard focus.</li> <li>Another application is already in full-screen mode.</li> </ul> <p>When this error is returned, an application can continue to run in windowed mode and try to switch to full-screen mode later.</p> </li> <li><see cref=\"F:SharpDX.DXGI.DXGIStatus.ModeChangeInProgress\"/> is returned if a fullscreen/windowed mode transition is occurring when this API is called.</li> <li>Other error codes if you run out of memory or encounter another unexpected fault; these codes may be treated as hard, non-continuable errors.</li> </ul></returns>\t\n            <remarks>\t\n            <p>DXGI may change the display state of a swap chain in response to end user or system requests.</p><p>We recommend that you create a windowed swap chain and allow the end user to change the swap chain to full screen through <strong>SetFullscreenState</strong>; that is, do not set the <strong>Windowed</strong> member of <strong><see cref=\"T:SharpDX.DXGI.SwapChainDescription\"/></strong> to <see cref=\"F:SharpDX.Result.False\"/> to force the swap chain to be full screen. However, if you create the swap chain as full screen, also provide the end user with a list of supported display modes because a swap chain that is created with an unsupported display mode might cause the display to go black and prevent the end user from seeing anything. Also, we recommend that you have a time-out confirmation screen or other fallback mechanism when you allow the end user to change display modes.</p>Notes for Metro style apps<p>If a Metro style app calls <strong>SetFullscreenState</strong> to set the display state to full screen, <strong>SetFullscreenState</strong> fails with <see cref=\"F:SharpDX.DXGI.ResultCode.NotCurrentlyAvailable\"/>.</p><p>You cannot call <strong>SetFullscreenState</strong> on a windowless swap chain that you created with <strong>IDXGIFactory2::CreateSwapChainForCompositionSurface</strong>.</p><p>For the flip presentation model, after you transition the display state to full screen, you must call <strong>ResizeBuffers</strong> to ensure that your call to <strong>IDXGISwapChain1::Present1</strong> succeeds.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGISwapChain::SetFullscreenState']/*\"/>\t\n            <msdn-id>bb174579</msdn-id>\t\n            <unmanaged>HRESULT IDXGISwapChain::SetFullscreenState([In] BOOL Fullscreen,[In, Optional] IDXGIOutput* pTarget)</unmanaged>\t\n            <unmanaged-short>IDXGISwapChain::SetFullscreenState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.SwapChain.GetFullscreenState(SharpDX.Bool@,SharpDX.DXGI.Output@)\">\n            <summary>\t\n            <p>Get the state associated with full-screen mode.</p>\t\n            </summary>\t\n            <param name=\"fullscreenRef\"><dd>  <p>A reference to a boolean whose value is either:</p> <ul> <li><strong>TRUE</strong> if the swap chain is in full-screen mode</li> <li><strong><see cref=\"F:SharpDX.Result.False\"/></strong> if the swap chain is in windowed mode</li> </ul> </dd></param>\t\n            <param name=\"targetOut\"><dd>  <p>A reference to the output target (see <strong><see cref=\"T:SharpDX.DXGI.Output\"/></strong>) when the mode is full screen; otherwise <strong><c>null</c></strong>.</p> </dd></param>\t\n            <returns><p>Returns one of the following DXGI_ERROR.</p></returns>\t\n            <remarks>\t\n            <p>When the swap chain is in full-screen mode, a reference to the  target output will be returned and its reference count will be incremented.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGISwapChain::GetFullscreenState']/*\"/>\t\n            <msdn-id>bb174574</msdn-id>\t\n            <unmanaged>HRESULT IDXGISwapChain::GetFullscreenState([Out] BOOL* pFullscreen,[Out] IDXGIOutput** ppTarget)</unmanaged>\t\n            <unmanaged-short>IDXGISwapChain::GetFullscreenState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.SwapChain.GetDescription(SharpDX.DXGI.SwapChainDescription@)\">\n            <summary>\t\n            <p>[Starting with Direct3D 11.1, we recommend not to use <strong>GetDesc</strong> anymore to get a description of the swap chain. Instead, use <strong>IDXGISwapChain1::GetDesc1</strong>.]</p><p>Get a description of the swap chain.</p>\t\n            </summary>\t\n            <param name=\"descRef\">No documentation.</param>\t\n            <returns><p>Returns one of the following DXGI_ERROR.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGISwapChain::GetDesc']/*\"/>\t\n            <msdn-id>bb174572</msdn-id>\t\n            <unmanaged>HRESULT IDXGISwapChain::GetDesc([Out] DXGI_SWAP_CHAIN_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>IDXGISwapChain::GetDesc</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.SwapChain.ResizeBuffers(System.Int32,System.Int32,System.Int32,SharpDX.DXGI.Format,SharpDX.DXGI.SwapChainFlags)\">\n            <summary>\t\n            <p>Changes the swap chain's back buffer size, format, and number of buffers. This should be called when the application window is resized.</p>\t\n            </summary>\t\n            <param name=\"bufferCount\"><dd>  <p>The number of buffers in the swap chain (including all back and front buffers). This number can be different from the number of buffers with which you created the swap chain. This number can't be greater than <strong>DXGI_MAX_SWAP_CHAIN_BUFFERS</strong>. Set this number to zero to preserve the existing number of buffers in the swap chain. You can't specify greater than two buffers for the flip presentation model.</p> </dd></param>\t\n            <param name=\"width\"><dd>  <p>New width of the back buffer. If you specify zero, DXGI will use the width of the client area of the target window. You can't specify the width as zero if you called the <strong>IDXGIFactory2::CreateSwapChainForCompositionSurface</strong> method to create the swap chain for a composition surface.</p> </dd></param>\t\n            <param name=\"height\"><dd>  <p>New height of the back buffer. If you specify zero, DXGI will use the height of the client area of the target window. You can't specify the height as zero if you called the <strong>IDXGIFactory2::CreateSwapChainForCompositionSurface</strong> method to create the swap chain for a composition surface.</p> </dd></param>\t\n            <param name=\"newFormat\"><dd>  <p>A <strong><see cref=\"T:SharpDX.DXGI.Format\"/></strong>-typed value for the new format of the back buffer. Set this value to <strong><see cref=\"F:SharpDX.DXGI.Format.Unknown\"/></strong> to preserve the existing format of the back buffer. The flip presentation model supports a more restricted set of formats than the bit-block transfer (bitblt) model.</p> </dd></param>\t\n            <param name=\"swapChainFlags\"><dd>  <p>A combination of <strong><see cref=\"T:SharpDX.DXGI.SwapChainFlags\"/></strong>-typed values that are combined by using a bitwise OR operation. The resulting value specifies options for swap-chain behavior.</p> </dd></param>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful; an error code otherwise. For a list of error codes, see DXGI_ERROR.</p></returns>\t\n            <remarks>\t\n            <p>You can't resize a swap chain unless you release all outstanding references to its back buffers. You must release all of its direct and indirect references on the back buffers in order for <strong>ResizeBuffers</strong> to succeed.</p><p>Direct references are held by the application after it calls <strong>AddRef</strong> on a resource.</p><p>Indirect references are held by views to a resource, binding a view of the resource to a device context,  a command list that used the resource, a command list that used a view to that resource, a command list that executed another command list that used the  resource, and so on.</p><p>Before you call <strong>ResizeBuffers</strong>, ensure that the application releases all references (by calling the appropriate number of <strong>Release</strong> invocations)  on the resources, any views to the resource, and any command lists that use either the resources or views, and ensure that neither the resource nor a view is  still bound to a device context.  You can use <strong><see cref=\"!:SharpDX.Direct3D11.DeviceContext.ClearState\"/></strong> to ensure that all references are released. If a view is bound to a deferred context, you must discard the partially built command list as well (by calling <strong>ClearState</strong>, <strong><see cref=\"!:SharpDX.Direct3D11.DeviceContext.FinishCommandListInternal\"/></strong>, then <strong>Release</strong> on the command list).   After you call <strong>ResizeBuffers</strong>, you can re-query interfaces via <strong><see cref=\"M:SharpDX.DXGI.SwapChain.GetBuffer(System.Int32,System.Guid,System.IntPtr@)\"/></strong>.</p><p>For swap chains that you created with <strong><see cref=\"F:SharpDX.DXGI.SwapChainFlags.GdiCompatible\"/></strong>, before you call <strong>ResizeBuffers</strong>, also call <strong><see cref=\"M:SharpDX.DXGI.Surface1.ReleaseDC_(System.Nullable{SharpDX.Rectangle})\"/></strong> on the swap chain's back-buffer surface to ensure that you have no outstanding GDI device contexts (DCs) open.</p><p>We recommend that you call <strong>ResizeBuffers</strong> when a client window is resized (that is, when an application receives a WM_SIZE message).</p><p>The only difference between <strong>ResizeBuffers</strong> in Windows Developer Preview and <strong>ResizeBuffers</strong> in Windows?7 is with flip presentation model swap chains that you create with the <strong>DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL</strong> value set. In Windows Developer Preview, you must call <strong>ResizeBuffers</strong> to realize a transition between full-screen mode and windowed mode; otherwise, your next call to the <strong>Present</strong> method fails.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGISwapChain::ResizeBuffers']/*\"/>\t\n            <msdn-id>bb174577</msdn-id>\t\n            <unmanaged>HRESULT IDXGISwapChain::ResizeBuffers([In] unsigned int BufferCount,[In] unsigned int Width,[In] unsigned int Height,[In] DXGI_FORMAT NewFormat,[In] DXGI_SWAP_CHAIN_FLAG SwapChainFlags)</unmanaged>\t\n            <unmanaged-short>IDXGISwapChain::ResizeBuffers</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.SwapChain.ResizeTarget(SharpDX.DXGI.ModeDescription@)\">\n            <summary>\t\n            <p>Resizes the output target.</p>\t\n            </summary>\t\n            <param name=\"newTargetParametersRef\"><dd>  <p>A reference to a <strong><see cref=\"T:SharpDX.DXGI.ModeDescription\"/></strong> structure that describes the mode, which specifies the new width, height, format, and refresh rate of the target.  If the format is <strong><see cref=\"F:SharpDX.DXGI.Format.Unknown\"/></strong>, <strong>ResizeTarget</strong> uses the existing format. We only recommend that you use <strong><see cref=\"F:SharpDX.DXGI.Format.Unknown\"/></strong> when the swap chain is in full-screen  mode as this method is not thread safe.</p> </dd></param>\t\n            <returns><p>Returns a code that indicates success or failure. <see cref=\"F:SharpDX.DXGI.DXGIStatus.ModeChangeInProgress\"/> is returned if a fullscreen/windowed mode transition is occurring  when this API is called. See DXGI_ERROR for additional DXGI error codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>ResizeTarget</strong> resizes the target window when the swap chain is in windowed mode, and changes the display mode on the target output when the swap  chain is in full-screen mode. Therefore, applications can call <strong>ResizeTarget</strong> to resize the target window (rather than a Microsoft Win32API such as <strong>SetWindowPos</strong>)  without knowledge of the swap chain display mode.</p><p>If a Metro style app calls <strong>ResizeTarget</strong>, it fails with <see cref=\"F:SharpDX.DXGI.ResultCode.NotCurrentlyAvailable\"/>.</p><p>You cannot call <strong>ResizeTarget</strong> on a windowless swap chain that you created with <strong>IDXGIFactory2::CreateSwapChainForCompositionSurface</strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGISwapChain::ResizeTarget']/*\"/>\t\n            <msdn-id>bb174578</msdn-id>\t\n            <unmanaged>HRESULT IDXGISwapChain::ResizeTarget([In] const DXGI_MODE_DESC* pNewTargetParameters)</unmanaged>\t\n            <unmanaged-short>IDXGISwapChain::ResizeTarget</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.SwapChain.GetContainingOutput(SharpDX.DXGI.Output@)\">\n            <summary>\t\n            <p>Get the output (the display monitor) that contains the majority of the client area of the target window.</p>\t\n            </summary>\t\n            <param name=\"outputOut\"><dd>  <p>A reference to the output interface (see <strong><see cref=\"T:SharpDX.DXGI.Output\"/></strong>).</p> </dd></param>\t\n            <returns><p>Returns one of the following DXGI_ERROR.</p></returns>\t\n            <remarks>\t\n            <p>If the method succeeds, the output interface will be filled and its reference count incremented. When you are finished with it, be sure to release the interface to avoid a memory leak.</p><p>The output is also owned by the adapter on which the swap chain's device was created.</p><p>You cannot call <strong>GetContainingOutput</strong> on a windowless swap chain that you created with <strong>IDXGIFactory2::CreateSwapChainForCompositionSurface</strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGISwapChain::GetContainingOutput']/*\"/>\t\n            <msdn-id>bb174571</msdn-id>\t\n            <unmanaged>HRESULT IDXGISwapChain::GetContainingOutput([Out] IDXGIOutput** ppOutput)</unmanaged>\t\n            <unmanaged-short>IDXGISwapChain::GetContainingOutput</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.SwapChain.GetFrameStatistics(SharpDX.DXGI.FrameStatistics@)\">\n            <summary>\t\n            <p>Gets performance statistics about the last render frame.</p>\t\n            </summary>\t\n            <param name=\"statsRef\"><dd>  <p>A reference to a <strong><see cref=\"T:SharpDX.DXGI.FrameStatistics\"/></strong> structure for the frame statistics.</p> </dd></param>\t\n            <returns><p>Returns one of the DXGI_ERROR values.</p></returns>\t\n            <remarks>\t\n            <p>You cannot use <strong>GetFrameStatistics</strong> for swap chains that both use the bit-block transfer (bitblt) presentation model and draw in windowed mode.</p><p>You can only use <strong>GetFrameStatistics</strong> for swap chains that either use the flip presentation model or draw in full-screen mode. You set the <strong>DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL</strong> value in the <strong>SwapEffect</strong> member of the <strong>DXGI_SWAP_CHAIN_DESC1</strong> structure to specify that the swap chain uses the flip presentation model.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGISwapChain::GetFrameStatistics']/*\"/>\t\n            <msdn-id>bb174573</msdn-id>\t\n            <unmanaged>HRESULT IDXGISwapChain::GetFrameStatistics([Out] DXGI_FRAME_STATISTICS* pStats)</unmanaged>\t\n            <unmanaged-short>IDXGISwapChain::GetFrameStatistics</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.SwapChain.GetLastPresentCount(System.Int32@)\">\n            <summary>\t\n            <p>Gets the number of times  that <strong><see cref=\"M:SharpDX.DXGI.SwapChain.Present(System.Int32,SharpDX.DXGI.PresentFlags)\"/></strong> or <strong>IDXGISwapChain1::Present1</strong> has been called.</p>\t\n            </summary>\t\n            <param name=\"lastPresentCountRef\">No documentation.</param>\t\n            <returns><p>Returns one of the DXGI_ERROR values.</p></returns>\t\n            <remarks>\t\n            <p>For info about presentation statistics for a frame, see <strong><see cref=\"T:SharpDX.DXGI.FrameStatistics\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGISwapChain::GetLastPresentCount']/*\"/>\t\n            <msdn-id>bb174575</msdn-id>\t\n            <unmanaged>HRESULT IDXGISwapChain::GetLastPresentCount([Out] unsigned int* pLastPresentCount)</unmanaged>\t\n            <unmanaged-short>IDXGISwapChain::GetLastPresentCount</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.SwapChain.#ctor(SharpDX.DXGI.Factory,SharpDX.ComObject,SharpDX.DXGI.SwapChainDescription)\">\n            <summary>\t\n            Creates a swap chain.\t\n            </summary>\t\n            <remarks>\t\n            If you attempt to create a swap chain in full-screen mode, and full-screen mode is unavailable, the swap chain will be created in windowed mode and DXGI_STATUS_OCCLUDED will be returned. If the buffer width or the buffer height are zero, the sizes will be inferred from the output window size in the swap-chain description. Since the target output cannot be chosen explicitly when the swap-chain is created, you should not create a full-screen swap chain. This can reduce presentation performance if the swap chain size and the output window size do not match. Here are two ways to ensure the sizes match:  Create a windowed swap chain and then set it full-screen using <see cref=\"M:SharpDX.DXGI.SwapChain.SetFullscreenState(SharpDX.Bool,SharpDX.DXGI.Output)\"/>. Save a reference to the swap-chain immediately after creation, and use it to get the output window size during a WM_SIZE event. Then resize the swap chain buffers (with <see cref=\"M:SharpDX.DXGI.SwapChain.ResizeBuffers(System.Int32,System.Int32,System.Int32,SharpDX.DXGI.Format,SharpDX.DXGI.SwapChainFlags)\"/>) during the transition from windowed to full-screen.  If the swap chain is in full-screen mode, before you release it, you must use {{SetFullscreenState}} to switch it to windowed mode. For more information about releasing a swap chain, see the Destroying a Swap Chain section of {{DXGI Overview}}. \t\n            </remarks>\t\n            <param name=\"factory\">a reference to a <see cref=\"T:SharpDX.DXGI.Factory\"/>.</param>\n            <param name=\"device\">A reference to the device that will write 2D images to the swap chain. </param>\n            <param name=\"description\">A reference to the swap-chain description (see <see cref=\"T:SharpDX.DXGI.SwapChainDescription\"/>).</param>\n            <unmanaged>HRESULT IDXGIFactory::CreateSwapChain([In] IUnknown* pDevice,[In] DXGI_SWAP_CHAIN_DESC* pDesc,[Out] IDXGISwapChain** ppSwapChain)</unmanaged>\n            <msdn-id>bb174537</msdn-id>\t\n            <unmanaged>HRESULT IDXGIFactory::CreateSwapChain([In] IUnknown* pDevice,[In] DXGI_SWAP_CHAIN_DESC* pDesc,[Out, Fast] IDXGISwapChain** ppSwapChain)</unmanaged>\t\n            <unmanaged-short>IDXGIFactory::CreateSwapChain</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.SwapChain.GetBackBuffer``1(System.Int32)\">\n            <summary>\n            Access one of the swap-chain back buffers.\n            </summary>\n            <typeparam name=\"T\">The interface of the surface to resolve from the back buffer</typeparam>\n            <param name=\"index\">A zero-based buffer index. If the swap effect is not DXGI_SWAP_EFFECT_SEQUENTIAL, this method only has access to the first buffer; for this case, set the index to zero.</param>\n            <returns>\n            Returns a reference to a back-buffer interface.\n            </returns>\n            <msdn-id>bb174570</msdn-id>\t\n            <unmanaged>HRESULT IDXGISwapChain::GetBuffer([In] unsigned int Buffer,[In] const GUID&amp; riid,[Out] void** ppSurface)</unmanaged>\t\n            <unmanaged-short>IDXGISwapChain::GetBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.DXGI.SwapChain.Description\">\n            <summary>\t\n            <p>[Starting with Direct3D 11.1, we recommend not to use <strong>GetDesc</strong> anymore to get a description of the swap chain. Instead, use <strong>IDXGISwapChain1::GetDesc1</strong>.]</p><p>Get a description of the swap chain.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGISwapChain::GetDesc']/*\"/>\t\n            <msdn-id>bb174572</msdn-id>\t\n            <unmanaged>GetDesc</unmanaged>\t\n            <unmanaged-short>GetDesc</unmanaged-short>\t\n            <unmanaged>HRESULT IDXGISwapChain::GetDesc([Out] DXGI_SWAP_CHAIN_DESC* pDesc)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DXGI.SwapChain.ContainingOutput\">\n            <summary>\t\n            <p>Get the output (the display monitor) that contains the majority of the client area of the target window.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>If the method succeeds, the output interface will be filled and its reference count incremented. When you are finished with it, be sure to release the interface to avoid a memory leak.</p><p>The output is also owned by the adapter on which the swap chain's device was created.</p><p>You cannot call <strong>GetContainingOutput</strong> on a windowless swap chain that you created with <strong>IDXGIFactory2::CreateSwapChainForCompositionSurface</strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGISwapChain::GetContainingOutput']/*\"/>\t\n            <msdn-id>bb174571</msdn-id>\t\n            <unmanaged>GetContainingOutput</unmanaged>\t\n            <unmanaged-short>GetContainingOutput</unmanaged-short>\t\n            <unmanaged>HRESULT IDXGISwapChain::GetContainingOutput([Out] IDXGIOutput** ppOutput)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DXGI.SwapChain.FrameStatistics\">\n            <summary>\t\n            <p>Gets performance statistics about the last render frame.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>You cannot use <strong>GetFrameStatistics</strong> for swap chains that both use the bit-block transfer (bitblt) presentation model and draw in windowed mode.</p><p>You can only use <strong>GetFrameStatistics</strong> for swap chains that either use the flip presentation model or draw in full-screen mode. You set the <strong>DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL</strong> value in the <strong>SwapEffect</strong> member of the <strong>DXGI_SWAP_CHAIN_DESC1</strong> structure to specify that the swap chain uses the flip presentation model.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGISwapChain::GetFrameStatistics']/*\"/>\t\n            <msdn-id>bb174573</msdn-id>\t\n            <unmanaged>GetFrameStatistics</unmanaged>\t\n            <unmanaged-short>GetFrameStatistics</unmanaged-short>\t\n            <unmanaged>HRESULT IDXGISwapChain::GetFrameStatistics([Out] DXGI_FRAME_STATISTICS* pStats)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DXGI.SwapChain.LastPresentCount\">\n            <summary>\t\n            <p>Gets the number of times  that <strong><see cref=\"M:SharpDX.DXGI.SwapChain.Present(System.Int32,SharpDX.DXGI.PresentFlags)\"/></strong> or <strong>IDXGISwapChain1::Present1</strong> has been called.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>For info about presentation statistics for a frame, see <strong><see cref=\"T:SharpDX.DXGI.FrameStatistics\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXGISwapChain::GetLastPresentCount']/*\"/>\t\n            <msdn-id>bb174575</msdn-id>\t\n            <unmanaged>GetLastPresentCount</unmanaged>\t\n            <unmanaged-short>GetLastPresentCount</unmanaged-short>\t\n            <unmanaged>HRESULT IDXGISwapChain::GetLastPresentCount([Out] unsigned int* pLastPresentCount)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DXGI.SwapChain.IsFullScreen\">\n            <summary>\n            Gets or sets a value indicating whether the swapchain is in fullscreen.\n            </summary>\n            <value>\n            \t<c>true</c> if this swapchain is in fullscreen; otherwise, <c>false</c>.\n            </value>\n            <msdn-id>bb174574</msdn-id>\t\n            <unmanaged>HRESULT IDXGISwapChain::GetFullscreenState([Out] BOOL* pFullscreen,[Out] IDXGIOutput** ppTarget)</unmanaged>\t\n            <unmanaged-short>IDXGISwapChain::GetFullscreenState</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DXGI.AdapterDescription\">\n            <summary>\t\n            <p>Describes an adapter (or video card) by using DXGI 1.0.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The <strong><see cref=\"T:SharpDX.DXGI.AdapterDescription\"/></strong> structure provides a description of an adapter.  This structure is initialized by using the <strong><see cref=\"M:SharpDX.DXGI.Adapter.GetDescription(SharpDX.DXGI.AdapterDescription@)\"/></strong> method.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_ADAPTER_DESC']/*\"/>\t\n            <msdn-id>bb173058</msdn-id>\t\n            <unmanaged>DXGI_ADAPTER_DESC</unmanaged>\t\n            <unmanaged-short>DXGI_ADAPTER_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.AdapterDescription.Description\">\n            <summary>\t\n            <dd> <p>A string that contains the adapter description.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_ADAPTER_DESC::Description']/*\"/>\t\n            <msdn-id>bb173058</msdn-id>\t\n            <unmanaged>wchar_t Description[128]</unmanaged>\t\n            <unmanaged-short>wchar_t Description</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.AdapterDescription.VendorId\">\n            <summary>\t\n            <dd> <p>The PCI ID of the hardware vendor.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_ADAPTER_DESC::VendorId']/*\"/>\t\n            <msdn-id>bb173058</msdn-id>\t\n            <unmanaged>unsigned int VendorId</unmanaged>\t\n            <unmanaged-short>unsigned int VendorId</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.AdapterDescription.DeviceId\">\n            <summary>\t\n            <dd> <p>The PCI ID of the hardware device.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_ADAPTER_DESC::DeviceId']/*\"/>\t\n            <msdn-id>bb173058</msdn-id>\t\n            <unmanaged>unsigned int DeviceId</unmanaged>\t\n            <unmanaged-short>unsigned int DeviceId</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.AdapterDescription.SubsystemId\">\n            <summary>\t\n            <dd> <p>The PCI ID of the sub system.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_ADAPTER_DESC::SubSysId']/*\"/>\t\n            <msdn-id>bb173058</msdn-id>\t\n            <unmanaged>unsigned int SubSysId</unmanaged>\t\n            <unmanaged-short>unsigned int SubSysId</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.AdapterDescription.Revision\">\n            <summary>\t\n            <dd> <p>The PCI ID of the revision number of the adapter.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_ADAPTER_DESC::Revision']/*\"/>\t\n            <msdn-id>bb173058</msdn-id>\t\n            <unmanaged>unsigned int Revision</unmanaged>\t\n            <unmanaged-short>unsigned int Revision</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.AdapterDescription.DedicatedVideoMemory\">\n            <summary>\t\n            <dd> <p>The number of bytes of dedicated video memory that are not shared with the CPU.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_ADAPTER_DESC::DedicatedVideoMemory']/*\"/>\t\n            <msdn-id>bb173058</msdn-id>\t\n            <unmanaged>SIZE_T DedicatedVideoMemory</unmanaged>\t\n            <unmanaged-short>SIZE_T DedicatedVideoMemory</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.AdapterDescription.DedicatedSystemMemory\">\n            <summary>\t\n            <dd> <p>The number of bytes of dedicated system memory that are not shared with the CPU. This memory is allocated from available system memory at boot time.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_ADAPTER_DESC::DedicatedSystemMemory']/*\"/>\t\n            <msdn-id>bb173058</msdn-id>\t\n            <unmanaged>SIZE_T DedicatedSystemMemory</unmanaged>\t\n            <unmanaged-short>SIZE_T DedicatedSystemMemory</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.AdapterDescription.SharedSystemMemory\">\n            <summary>\t\n            <dd> <p>The number of bytes of shared system memory. This is the maximum value of system memory that may be consumed by the adapter during operation. Any incidental memory consumed by the driver as it manages and uses video memory is additional.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_ADAPTER_DESC::SharedSystemMemory']/*\"/>\t\n            <msdn-id>bb173058</msdn-id>\t\n            <unmanaged>SIZE_T SharedSystemMemory</unmanaged>\t\n            <unmanaged-short>SIZE_T SharedSystemMemory</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.AdapterDescription.Luid\">\n            <summary>\t\n            <dd> <p>A unique value that identifies the adapter. See <strong><see cref=\"T:System.Int64\"/></strong> for a definition of the structure. <strong><see cref=\"T:System.Int64\"/></strong> is defined in dxgi.h.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_ADAPTER_DESC::AdapterLuid']/*\"/>\t\n            <msdn-id>bb173058</msdn-id>\t\n            <unmanaged>LUID AdapterLuid</unmanaged>\t\n            <unmanaged-short>LUID AdapterLuid</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DXGI.AdapterDescription1\">\n            <summary>\t\n            <p>Describes an adapter (or video card) using DXGI 1.1.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The <strong><see cref=\"T:SharpDX.DXGI.AdapterDescription1\"/></strong> structure provides a DXGI 1.1 description of an adapter.  This structure is initialized by using the <strong><see cref=\"M:SharpDX.DXGI.Adapter1.GetDescription1(SharpDX.DXGI.AdapterDescription1@)\"/></strong> method.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_ADAPTER_DESC1']/*\"/>\t\n            <msdn-id>ff471326</msdn-id>\t\n            <unmanaged>DXGI_ADAPTER_DESC1</unmanaged>\t\n            <unmanaged-short>DXGI_ADAPTER_DESC1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.AdapterDescription1.Description\">\n            <summary>\t\n            <dd> <p>A string that contains the adapter description.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_ADAPTER_DESC1::Description']/*\"/>\t\n            <msdn-id>ff471326</msdn-id>\t\n            <unmanaged>wchar_t Description[128]</unmanaged>\t\n            <unmanaged-short>wchar_t Description</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.AdapterDescription1.VendorId\">\n            <summary>\t\n            <dd> <p>The PCI ID of the hardware vendor.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_ADAPTER_DESC1::VendorId']/*\"/>\t\n            <msdn-id>ff471326</msdn-id>\t\n            <unmanaged>unsigned int VendorId</unmanaged>\t\n            <unmanaged-short>unsigned int VendorId</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.AdapterDescription1.DeviceId\">\n            <summary>\t\n            <dd> <p>The PCI ID of the hardware device.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_ADAPTER_DESC1::DeviceId']/*\"/>\t\n            <msdn-id>ff471326</msdn-id>\t\n            <unmanaged>unsigned int DeviceId</unmanaged>\t\n            <unmanaged-short>unsigned int DeviceId</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.AdapterDescription1.SubsystemId\">\n            <summary>\t\n            <dd> <p>The PCI ID of the sub system.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_ADAPTER_DESC1::SubSysId']/*\"/>\t\n            <msdn-id>ff471326</msdn-id>\t\n            <unmanaged>unsigned int SubSysId</unmanaged>\t\n            <unmanaged-short>unsigned int SubSysId</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.AdapterDescription1.Revision\">\n            <summary>\t\n            <dd> <p>The PCI ID of the revision number of the adapter.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_ADAPTER_DESC1::Revision']/*\"/>\t\n            <msdn-id>ff471326</msdn-id>\t\n            <unmanaged>unsigned int Revision</unmanaged>\t\n            <unmanaged-short>unsigned int Revision</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.AdapterDescription1.DedicatedVideoMemory\">\n            <summary>\t\n            <dd> <p>The number of bytes of dedicated video memory that are not shared with the CPU.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_ADAPTER_DESC1::DedicatedVideoMemory']/*\"/>\t\n            <msdn-id>ff471326</msdn-id>\t\n            <unmanaged>SIZE_T DedicatedVideoMemory</unmanaged>\t\n            <unmanaged-short>SIZE_T DedicatedVideoMemory</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.AdapterDescription1.DedicatedSystemMemory\">\n            <summary>\t\n            <dd> <p>The number of bytes of dedicated system memory that are not shared with the CPU. This memory is allocated from available system memory at boot time.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_ADAPTER_DESC1::DedicatedSystemMemory']/*\"/>\t\n            <msdn-id>ff471326</msdn-id>\t\n            <unmanaged>SIZE_T DedicatedSystemMemory</unmanaged>\t\n            <unmanaged-short>SIZE_T DedicatedSystemMemory</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.AdapterDescription1.SharedSystemMemory\">\n            <summary>\t\n            <dd> <p>The number of bytes of shared system memory. This is the maximum value of system memory that may be consumed by the adapter during operation. Any incidental memory consumed by the driver as it manages and uses video memory is additional.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_ADAPTER_DESC1::SharedSystemMemory']/*\"/>\t\n            <msdn-id>ff471326</msdn-id>\t\n            <unmanaged>SIZE_T SharedSystemMemory</unmanaged>\t\n            <unmanaged-short>SIZE_T SharedSystemMemory</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.AdapterDescription1.Luid\">\n            <summary>\t\n            <dd> <p>A unique value that identifies the adapter. See <strong><see cref=\"T:System.Int64\"/></strong> for a definition of the structure. <strong><see cref=\"T:System.Int64\"/></strong> is defined in dxgi.h.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_ADAPTER_DESC1::AdapterLuid']/*\"/>\t\n            <msdn-id>ff471326</msdn-id>\t\n            <unmanaged>LUID AdapterLuid</unmanaged>\t\n            <unmanaged-short>LUID AdapterLuid</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.AdapterDescription1.Flags\">\n            <summary>\t\n            <dd> <p>A value of the <strong><see cref=\"T:SharpDX.DXGI.AdapterFlags\"/></strong> enumerated type that describes the adapter type.  The <strong><see cref=\"F:SharpDX.DXGI.AdapterFlags.Remote\"/></strong> flag is reserved.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_ADAPTER_DESC1::Flags']/*\"/>\t\n            <msdn-id>ff471326</msdn-id>\t\n            <unmanaged>DXGI_ADAPTER_FLAG Flags</unmanaged>\t\n            <unmanaged-short>DXGI_ADAPTER_FLAG Flags</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DXGI.FrameStatistics\">\n            <summary>\t\n            <p>Describes timing and presentation statistics for a frame.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>You initialize the <strong><see cref=\"T:SharpDX.DXGI.FrameStatistics\"/></strong> structure with the <strong><see cref=\"M:SharpDX.DXGI.Output.GetFrameStatistics(SharpDX.DXGI.FrameStatistics@)\"/></strong> or <strong><see cref=\"M:SharpDX.DXGI.SwapChain.GetFrameStatistics(SharpDX.DXGI.FrameStatistics@)\"/></strong> method.</p><p>You can only use <strong><see cref=\"M:SharpDX.DXGI.SwapChain.GetFrameStatistics(SharpDX.DXGI.FrameStatistics@)\"/></strong> for swap chains that either use the flip presentation model or draw in full-screen mode. You set the <strong>DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL</strong> value in the <strong>SwapEffect</strong> member of the <strong>DXGI_SWAP_CHAIN_DESC1</strong> structure to specify that the swap chain uses the flip presentation model.</p><p>The values in the <strong>PresentCount</strong> and <strong>PresentRefreshCount</strong> members indicate information about when a frame was presented on the display screen. You can use these values to determine whether a glitch occurred. The values in the <strong>SyncRefreshCount</strong> and <strong>SyncQPCTime</strong> members indicate timing information that you can use for audio and video synchronization or very precise animation. If the swap chain draws in full-screen mode, these values are based on when the computer booted. \t\n            If the swap chain draws in windowed mode, these values are based on when the swap chain is created.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FRAME_STATISTICS']/*\"/>\t\n            <msdn-id>bb173060</msdn-id>\t\n            <unmanaged>DXGI_FRAME_STATISTICS</unmanaged>\t\n            <unmanaged-short>DXGI_FRAME_STATISTICS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.FrameStatistics.PresentCount\">\n            <summary>\t\n            <dd> <p>A value that represents the running total count of times that an image was presented to the monitor since the computer booted.</p> <p><strong>Note</strong>??The number of times that an image was presented to the monitor is not necessarily the same as the number of times  that you called <strong><see cref=\"M:SharpDX.DXGI.SwapChain.Present(System.Int32,SharpDX.DXGI.PresentFlags)\"/></strong> or <strong>IDXGISwapChain1::Present1</strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FRAME_STATISTICS::PresentCount']/*\"/>\t\n            <msdn-id>bb173060</msdn-id>\t\n            <unmanaged>unsigned int PresentCount</unmanaged>\t\n            <unmanaged-short>unsigned int PresentCount</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.FrameStatistics.PresentRefreshCount\">\n            <summary>\t\n            <dd> <p>A value that represents  the running total count of v-blanks at which the last image was presented to the monitor and that have happened since the computer booted (for windowed mode, since the swap chain was created).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FRAME_STATISTICS::PresentRefreshCount']/*\"/>\t\n            <msdn-id>bb173060</msdn-id>\t\n            <unmanaged>unsigned int PresentRefreshCount</unmanaged>\t\n            <unmanaged-short>unsigned int PresentRefreshCount</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.FrameStatistics.SyncRefreshCount\">\n            <summary>\t\n            <dd> <p>A value that represents  the running total count of v-blanks when the scheduler last sampled the machine time by calling <strong>QueryPerformanceCounter</strong> and that have happened since the computer booted (for windowed mode, since the swap chain was created).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FRAME_STATISTICS::SyncRefreshCount']/*\"/>\t\n            <msdn-id>bb173060</msdn-id>\t\n            <unmanaged>unsigned int SyncRefreshCount</unmanaged>\t\n            <unmanaged-short>unsigned int SyncRefreshCount</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.FrameStatistics.SyncQPCTime\">\n            <summary>\t\n            <dd> <p>A value that represents the high-resolution performance counter timer.  This value is the same as the value returned by the <strong>QueryPerformanceCounter</strong> function.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FRAME_STATISTICS::SyncQPCTime']/*\"/>\t\n            <msdn-id>bb173060</msdn-id>\t\n            <unmanaged>LARGE_INTEGER SyncQPCTime</unmanaged>\t\n            <unmanaged-short>LARGE_INTEGER SyncQPCTime</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.FrameStatistics.SyncGPUTime\">\n            <summary>\t\n            <dd> <p>Reserved. Always returns 0.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_FRAME_STATISTICS::SyncGPUTime']/*\"/>\t\n            <msdn-id>bb173060</msdn-id>\t\n            <unmanaged>LARGE_INTEGER SyncGPUTime</unmanaged>\t\n            <unmanaged-short>LARGE_INTEGER SyncGPUTime</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DXGI.GammaControl\">\n            <summary>\t\n            <p>Controls the settings of a gamma curve.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The <strong><see cref=\"T:SharpDX.DXGI.GammaControl\"/></strong> structure is used by the <strong><see cref=\"M:SharpDX.DXGI.Output.SetGammaControl(SharpDX.DXGI.GammaControl@)\"/></strong> method.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_GAMMA_CONTROL']/*\"/>\t\n            <msdn-id>bb173061</msdn-id>\t\n            <unmanaged>DXGI_GAMMA_CONTROL</unmanaged>\t\n            <unmanaged-short>DXGI_GAMMA_CONTROL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.GammaControl.Scale\">\n            <summary>\t\n            <dd> <p>A <strong><see cref=\"T:SharpDX.Color4\"/></strong> structure with scalar values that are applied to rgb values before being sent to the gamma look up table.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_GAMMA_CONTROL::Scale']/*\"/>\t\n            <msdn-id>bb173061</msdn-id>\t\n            <unmanaged>DXGI_RGB Scale</unmanaged>\t\n            <unmanaged-short>DXGI_RGB Scale</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.GammaControl.Offset\">\n            <summary>\t\n            <dd> <p>A <strong><see cref=\"T:SharpDX.Color4\"/></strong> structure with offset values that are applied to the rgb values before being sent to the gamma look up table.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_GAMMA_CONTROL::Offset']/*\"/>\t\n            <msdn-id>bb173061</msdn-id>\t\n            <unmanaged>DXGI_RGB Offset</unmanaged>\t\n            <unmanaged-short>DXGI_RGB Offset</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.DXGI.GammaControl.GammaCurve\">\n            <summary>\t\n            <dd> <p>An array of <strong><see cref=\"T:SharpDX.Color4\"/></strong> structures that control the points of a gamma curve.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_GAMMA_CONTROL::GammaCurve']/*\"/>\t\n            <msdn-id>bb173061</msdn-id>\t\n            <unmanaged>DXGI_RGB GammaCurve[1025]</unmanaged>\t\n            <unmanaged-short>DXGI_RGB GammaCurve</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DXGI.GammaControlCapabilities\">\n            <summary>\t\n            <p>Controls the gamma capabilities of an adapter.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>To get a list of the capabilities for controlling gamma correction, call <strong><see cref=\"M:SharpDX.DXGI.Output.GetGammaControlCapabilities(SharpDX.DXGI.GammaControlCapabilities@)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_GAMMA_CONTROL_CAPABILITIES']/*\"/>\t\n            <msdn-id>bb173062</msdn-id>\t\n            <unmanaged>DXGI_GAMMA_CONTROL_CAPABILITIES</unmanaged>\t\n            <unmanaged-short>DXGI_GAMMA_CONTROL_CAPABILITIES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.GammaControlCapabilities.IsScaleAndOffsetSupported\">\n            <summary>\t\n            <dd> <p>True if scaling and offset operations are supported during gamma correction; otherwise, false.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_GAMMA_CONTROL_CAPABILITIES::ScaleAndOffsetSupported']/*\"/>\t\n            <msdn-id>bb173062</msdn-id>\t\n            <unmanaged>BOOL ScaleAndOffsetSupported</unmanaged>\t\n            <unmanaged-short>BOOL ScaleAndOffsetSupported</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.GammaControlCapabilities.MaximumConvertedValue\">\n            <summary>\t\n            <dd> <p>A value describing the maximum range of the control-point positions.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_GAMMA_CONTROL_CAPABILITIES::MaxConvertedValue']/*\"/>\t\n            <msdn-id>bb173062</msdn-id>\t\n            <unmanaged>float MaxConvertedValue</unmanaged>\t\n            <unmanaged-short>float MaxConvertedValue</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.GammaControlCapabilities.MinimumConvertedValue\">\n            <summary>\t\n            <dd> <p>A value describing the minimum range of the control-point positions.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_GAMMA_CONTROL_CAPABILITIES::MinConvertedValue']/*\"/>\t\n            <msdn-id>bb173062</msdn-id>\t\n            <unmanaged>float MinConvertedValue</unmanaged>\t\n            <unmanaged-short>float MinConvertedValue</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.GammaControlCapabilities.ControlPointsCount\">\n            <summary>\t\n            <dd> <p>A value describing the number of control points in the array.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_GAMMA_CONTROL_CAPABILITIES::NumGammaControlPoints']/*\"/>\t\n            <msdn-id>bb173062</msdn-id>\t\n            <unmanaged>unsigned int NumGammaControlPoints</unmanaged>\t\n            <unmanaged-short>unsigned int NumGammaControlPoints</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.DXGI.GammaControlCapabilities.ControlPoints\">\n            <summary>\t\n            <dd> <p>An array of values describing control points; the maximum length of control points is 1025.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_GAMMA_CONTROL_CAPABILITIES::ControlPointPositions']/*\"/>\t\n            <msdn-id>bb173062</msdn-id>\t\n            <unmanaged>float ControlPointPositions[1025]</unmanaged>\t\n            <unmanaged-short>float ControlPointPositions</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DXGI.MappedRectangle\">\n            <summary>\t\n            <p>Describes a mapped rectangle that is used to access a surface.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The <strong><see cref=\"T:SharpDX.DXGI.MappedRectangle\"/></strong> structure is initialized by the <strong><see cref=\"M:SharpDX.DXGI.Surface.Map(SharpDX.DXGI.MappedRectangle@,System.Int32)\"/></strong> method.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_MAPPED_RECT']/*\"/>\t\n            <msdn-id>bb173063</msdn-id>\t\n            <unmanaged>DXGI_MAPPED_RECT</unmanaged>\t\n            <unmanaged-short>DXGI_MAPPED_RECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.MappedRectangle.Pitch\">\n            <summary>\t\n            <dd> <p>A value that describes the width, in bytes, of the surface.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_MAPPED_RECT::Pitch']/*\"/>\t\n            <msdn-id>bb173063</msdn-id>\t\n            <unmanaged>int Pitch</unmanaged>\t\n            <unmanaged-short>int Pitch</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.MappedRectangle.PBits\">\n            <summary>\t\n            <dd> <p>A reference to the image buffer of the surface.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_MAPPED_RECT::pBits']/*\"/>\t\n            <msdn-id>bb173063</msdn-id>\t\n            <unmanaged>unsigned char* pBits</unmanaged>\t\n            <unmanaged-short>unsigned char pBits</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DXGI.ModeDescription\">\n            <summary>\t\n            <p>Describes a display mode.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The following format values are valid for display modes and when you create a bit-block transfer (bitblt) model swap chain. The valid values depend on the feature level that you are working with.</p><ul> <li> <p>Feature level &gt;= 9.1</p> <ul> <li> <strong><see cref=\"F:SharpDX.DXGI.Format.R8G8B8A8_UNorm\"/></strong> </li> <li><strong><see cref=\"F:SharpDX.DXGI.Format.R8G8B8A8_UNorm_SRgb\"/></strong></li> <li> <strong><see cref=\"F:SharpDX.DXGI.Format.B8G8R8A8_UNorm\"/></strong> (except 10.x on Windows?Vista)</li> <li><strong><see cref=\"F:SharpDX.DXGI.Format.B8G8R8A8_UNorm_SRgb\"/></strong> (except 10.x on Windows?Vista)</li> </ul> </li> <li> <p>Feature level &gt;= 10.0</p> <ul> <li> <strong><see cref=\"F:SharpDX.DXGI.Format.R16G16B16A16_Float\"/></strong> </li> <li><strong><see cref=\"F:SharpDX.DXGI.Format.R10G10B10A2_UNorm\"/></strong></li> </ul> </li> <li> <p>Feature level &gt;= 11.0</p> <ul> <li><strong><see cref=\"F:SharpDX.DXGI.Format.R10G10B10_Xr_Bias_A2_UNorm\"/></strong></li> </ul> </li> </ul><p>You can pass one of these format values to <strong><see cref=\"!:SharpDX.Direct3D11.Device.CheckFormatSupport\"/></strong> to determine if it is a valid format for displaying on screen. If <strong><see cref=\"!:SharpDX.Direct3D11.Device.CheckFormatSupport\"/></strong> returns <strong><see cref=\"!:SharpDX.Direct3D11.FormatSupport.Display\"/></strong> in the bit field to which the <em>pFormatSupport</em> parameter points, the format is valid for displaying on screen.</p><p>Starting with Windows Developer Preview for a flip model swap chain (that is, a swap chain that has the <strong>DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL</strong> value set in the <strong>SwapEffect</strong> member of <strong><see cref=\"T:SharpDX.DXGI.SwapChainDescription\"/></strong>), you must set the <strong>Format</strong> member of <strong><see cref=\"T:SharpDX.DXGI.ModeDescription\"/></strong> to <strong><see cref=\"F:SharpDX.DXGI.Format.R16G16B16A16_Float\"/></strong>, <strong><see cref=\"F:SharpDX.DXGI.Format.B8G8R8A8_UNorm\"/></strong>, or <strong><see cref=\"F:SharpDX.DXGI.Format.R8G8B8A8_UNorm\"/></strong>.</p><p>Because of the relaxed render target creation rules that Direct3D 11 has for back buffers, applications can create a <strong><see cref=\"F:SharpDX.DXGI.Format.B8G8R8A8_UNorm_SRgb\"/></strong> render target view from a <strong><see cref=\"F:SharpDX.DXGI.Format.B8G8R8A8_UNorm\"/></strong> swap chain so they can use automatic color space conversion when they render the swap chain.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_MODE_DESC']/*\"/>\t\n            <msdn-id>bb173064</msdn-id>\t\n            <unmanaged>DXGI_MODE_DESC</unmanaged>\t\n            <unmanaged-short>DXGI_MODE_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.ModeDescription.Width\">\n            <summary>\t\n            <dd> <p>A value that describes the resolution width. If you specify the width as zero when you call the  <strong><see cref=\"M:SharpDX.DXGI.Factory.CreateSwapChain(SharpDX.ComObject,SharpDX.DXGI.SwapChainDescription@,SharpDX.DXGI.SwapChain)\"/></strong> method to create a swap chain, the runtime obtains the width from the output window and assigns this width value to the swap-chain description. You can subsequently call the <strong><see cref=\"M:SharpDX.DXGI.SwapChain.GetDescription(SharpDX.DXGI.SwapChainDescription@)\"/></strong> method to retrieve the assigned width value.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_MODE_DESC::Width']/*\"/>\t\n            <msdn-id>bb173064</msdn-id>\t\n            <unmanaged>unsigned int Width</unmanaged>\t\n            <unmanaged-short>unsigned int Width</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.ModeDescription.Height\">\n            <summary>\t\n            <dd> <p>A value describing the resolution height. If you specify the height as zero when you call the  <strong><see cref=\"M:SharpDX.DXGI.Factory.CreateSwapChain(SharpDX.ComObject,SharpDX.DXGI.SwapChainDescription@,SharpDX.DXGI.SwapChain)\"/></strong> method to create a swap chain, the runtime obtains the height from the output window and assigns this height value to the swap-chain description. You can subsequently call the <strong><see cref=\"M:SharpDX.DXGI.SwapChain.GetDescription(SharpDX.DXGI.SwapChainDescription@)\"/></strong> method to retrieve the assigned height value.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_MODE_DESC::Height']/*\"/>\t\n            <msdn-id>bb173064</msdn-id>\t\n            <unmanaged>unsigned int Height</unmanaged>\t\n            <unmanaged-short>unsigned int Height</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.ModeDescription.RefreshRate\">\n            <summary>\t\n            <dd> <p>A <strong><see cref=\"T:SharpDX.DXGI.Rational\"/></strong> structure describing the refresh rate in hertz</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_MODE_DESC::RefreshRate']/*\"/>\t\n            <msdn-id>bb173064</msdn-id>\t\n            <unmanaged>DXGI_RATIONAL RefreshRate</unmanaged>\t\n            <unmanaged-short>DXGI_RATIONAL RefreshRate</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.ModeDescription.Format\">\n            <summary>\t\n            <dd> <p>A <strong><see cref=\"T:SharpDX.DXGI.Format\"/></strong> structure describing the display format.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_MODE_DESC::Format']/*\"/>\t\n            <msdn-id>bb173064</msdn-id>\t\n            <unmanaged>DXGI_FORMAT Format</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT Format</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.ModeDescription.ScanlineOrdering\">\n            <summary>\t\n            <dd> <p>A member of the <strong><see cref=\"T:SharpDX.DXGI.DisplayModeScanlineOrder\"/></strong> enumerated type describing the scanline drawing mode.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_MODE_DESC::ScanlineOrdering']/*\"/>\t\n            <msdn-id>bb173064</msdn-id>\t\n            <unmanaged>DXGI_MODE_SCANLINE_ORDER ScanlineOrdering</unmanaged>\t\n            <unmanaged-short>DXGI_MODE_SCANLINE_ORDER ScanlineOrdering</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.ModeDescription.Scaling\">\n            <summary>\t\n            <dd> <p>A member of the <strong><see cref=\"T:SharpDX.DXGI.DisplayModeScaling\"/></strong> enumerated type describing the scaling mode.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_MODE_DESC::Scaling']/*\"/>\t\n            <msdn-id>bb173064</msdn-id>\t\n            <unmanaged>DXGI_MODE_SCALING Scaling</unmanaged>\t\n            <unmanaged-short>DXGI_MODE_SCALING Scaling</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.ModeDescription.#ctor(System.Int32,System.Int32,SharpDX.DXGI.Rational,SharpDX.DXGI.Format)\">\n            <summary>\n              Initializes a new instance of the <see cref = \"T:SharpDX.DXGI.ModeDescription\" /> structure.\n            </summary>\n            <param name = \"width\">The width.</param>\n            <param name = \"height\">The height.</param>\n            <param name = \"refreshRate\">The refresh rate.</param>\n            <param name = \"format\">The format.</param>\n        </member>\n        <member name=\"T:SharpDX.DXGI.OutputDescription\">\n            <summary>\t\n            <p>Describes an output or physical connection between the adapter (video card) and a device.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The <strong><see cref=\"T:SharpDX.DXGI.OutputDescription\"/></strong> structure is initialized by the <strong><see cref=\"M:SharpDX.DXGI.Output.GetDescription(SharpDX.DXGI.OutputDescription@)\"/></strong> method.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_OUTPUT_DESC']/*\"/>\t\n            <msdn-id>bb173068</msdn-id>\t\n            <unmanaged>DXGI_OUTPUT_DESC</unmanaged>\t\n            <unmanaged-short>DXGI_OUTPUT_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.OutputDescription.DeviceName\">\n            <summary>\t\n            <dd> <p>A string that contains the name of the output device.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_OUTPUT_DESC::DeviceName']/*\"/>\t\n            <msdn-id>bb173068</msdn-id>\t\n            <unmanaged>wchar_t DeviceName[32]</unmanaged>\t\n            <unmanaged-short>wchar_t DeviceName</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.OutputDescription.DesktopBounds\">\n            <summary>\t\n            <dd> <p>A <strong><see cref=\"T:SharpDX.Rectangle\"/></strong> structure containing the bounds of the output in desktop coordinates.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_OUTPUT_DESC::DesktopCoordinates']/*\"/>\t\n            <msdn-id>bb173068</msdn-id>\t\n            <unmanaged>RECT DesktopCoordinates</unmanaged>\t\n            <unmanaged-short>RECT DesktopCoordinates</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.OutputDescription.IsAttachedToDesktop\">\n            <summary>\t\n            <dd> <p>True if the output is attached to the desktop; otherwise, false.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_OUTPUT_DESC::AttachedToDesktop']/*\"/>\t\n            <msdn-id>bb173068</msdn-id>\t\n            <unmanaged>BOOL AttachedToDesktop</unmanaged>\t\n            <unmanaged-short>BOOL AttachedToDesktop</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.OutputDescription.Rotation\">\n            <summary>\t\n            <dd> <p>A member of the <strong><see cref=\"T:SharpDX.DXGI.DisplayModeRotation\"/></strong> enumerated type describing on how an image is rotated by the output.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_OUTPUT_DESC::Rotation']/*\"/>\t\n            <msdn-id>bb173068</msdn-id>\t\n            <unmanaged>DXGI_MODE_ROTATION Rotation</unmanaged>\t\n            <unmanaged-short>DXGI_MODE_ROTATION Rotation</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.OutputDescription.MonitorHandle\">\n            <summary>\t\n            <dd> <p>An <strong><see cref=\"T:System.IntPtr\"/></strong> handle that represents the display monitor. For more information, see <see cref=\"T:System.IntPtr\"/> and the Device Context.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_OUTPUT_DESC::Monitor']/*\"/>\t\n            <msdn-id>bb173068</msdn-id>\t\n            <unmanaged>HMONITOR Monitor</unmanaged>\t\n            <unmanaged-short>HMONITOR Monitor</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DXGI.Rational\">\n            <summary>\t\n            <p>Represents a rational number.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The <strong><see cref=\"T:SharpDX.DXGI.Rational\"/></strong> structure operates under the following rules:</p><ul> <li>0/0 is legal and will be interpreted as 0/1.</li> <li>0/anything is interpreted as zero.</li> <li>If you are representing a whole number, the denominator should be 1.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_RATIONAL']/*\"/>\t\n            <msdn-id>bb173069</msdn-id>\t\n            <unmanaged>DXGI_RATIONAL</unmanaged>\t\n            <unmanaged-short>DXGI_RATIONAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Rational.Numerator\">\n            <summary>\t\n            <dd> <p>An unsigned integer value representing the top of the rational number.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_RATIONAL::Numerator']/*\"/>\t\n            <msdn-id>bb173069</msdn-id>\t\n            <unmanaged>unsigned int Numerator</unmanaged>\t\n            <unmanaged-short>unsigned int Numerator</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Rational.Denominator\">\n            <summary>\t\n            <dd> <p>An unsigned integer value representing the bottom of the rational number.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_RATIONAL::Denominator']/*\"/>\t\n            <msdn-id>bb173069</msdn-id>\t\n            <unmanaged>unsigned int Denominator</unmanaged>\t\n            <unmanaged-short>unsigned int Denominator</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.Rational.Empty\">\n            <summary>\n            An empty rational that can be used for comparisons. \n            </summary>\n        </member>\n        <member name=\"M:SharpDX.DXGI.Rational.#ctor(System.Int32,System.Int32)\">\n            <summary>\n              Initializes a new instance of the <see cref = \"T:SharpDX.DXGI.Rational\" /> structure.\n            </summary>\n            <param name = \"numerator\">The numerator of the rational pair.</param>\n            <param name = \"denominator\">The denominator of the rational pair.</param>\n        </member>\n        <member name=\"T:SharpDX.DXGI.SampleDescription\">\n            <summary>\t\n            <p>Describes multi-sampling parameters for a resource.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The default sampler mode, with no anti-aliasing, has a count of 1 and a quality level of 0.</p><p>If multi-sample antialiasing is being used, all bound render targets and depth buffers must have the same sample counts and quality levels.</p><table> <tr><td> <p>Differences between Direct3D 10.0 and Direct3D 10.1 and between Direct3D 10.0 and Direct3D 11:</p> <p>Direct3D 10.1 has defined two standard quality levels:   <strong><see cref=\"!:SharpDX.Direct3D10.StandardMultisampleQualityLevels.StandardMultisamplePattern\"/></strong> and <strong><see cref=\"!:SharpDX.Direct3D10.StandardMultisampleQualityLevels.CenterMultisamplePattern\"/></strong> in the <strong><see cref=\"!:SharpDX.Direct3D10.StandardMultisampleQualityLevels\"/></strong> enumeration in D3D10_1.h.</p> <p>Direct3D 11 has defined two standard quality levels:   <strong><see cref=\"!:SharpDX.Direct3D11.StandardMultisampleQualityLevels.StandardMultisamplePattern\"/></strong> and <strong><see cref=\"!:SharpDX.Direct3D11.StandardMultisampleQualityLevels.CenterMultisamplePattern\"/></strong> in the <strong><see cref=\"!:SharpDX.Direct3D11.StandardMultisampleQualityLevels\"/></strong> enumeration in D3D11.h.</p> </td></tr> </table><p>?</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_SAMPLE_DESC']/*\"/>\t\n            <msdn-id>bb173072</msdn-id>\t\n            <unmanaged>DXGI_SAMPLE_DESC</unmanaged>\t\n            <unmanaged-short>DXGI_SAMPLE_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.SampleDescription.Count\">\n            <summary>\t\n            <dd> <p>The number of multisamples per pixel.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_SAMPLE_DESC::Count']/*\"/>\t\n            <msdn-id>bb173072</msdn-id>\t\n            <unmanaged>unsigned int Count</unmanaged>\t\n            <unmanaged-short>unsigned int Count</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.SampleDescription.Quality\">\n            <summary>\t\n            <dd> <p>The image quality level. The higher the quality, the lower the performance. The valid range is between zero and one less than the level returned  by <strong><see cref=\"!:SharpDX.Direct3D10.Device.CheckMultisampleQualityLevels\"/></strong> for Direct3D 10 or <strong><see cref=\"!:SharpDX.Direct3D11.Device.CheckMultisampleQualityLevels\"/></strong> for Direct3D 11.</p> <p>For Direct3D 10.1 and Direct3D 11, you can use two special quality level values. For more information about these quality level values, see Remarks.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_SAMPLE_DESC::Quality']/*\"/>\t\n            <msdn-id>bb173072</msdn-id>\t\n            <unmanaged>unsigned int Quality</unmanaged>\t\n            <unmanaged-short>unsigned int Quality</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DXGI.SampleDescription.#ctor(System.Int32,System.Int32)\">\n            <summary>\n              Initializes a new instance of the <see cref = \"T:SharpDX.DXGI.SampleDescription\" /> structure.\n            </summary>\n            <param name = \"count\">The sample count.</param>\n            <param name = \"quality\">The sample quality.</param>\n        </member>\n        <member name=\"T:SharpDX.DXGI.SharedResource\">\n            <summary>\t\n            <p>Represents a handle to a shared resource.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>To create a shared surface, pass a shared-resource handle into the <strong><see cref=\"M:SharpDX.DXGI.Device.CreateSurface(SharpDX.DXGI.SurfaceDescription@,System.Int32,System.Int32,System.Nullable{SharpDX.DXGI.SharedResource},SharpDX.DXGI.Surface@)\"/></strong> method.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_SHARED_RESOURCE']/*\"/>\t\n            <msdn-id>bb173073</msdn-id>\t\n            <unmanaged>DXGI_SHARED_RESOURCE</unmanaged>\t\n            <unmanaged-short>DXGI_SHARED_RESOURCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.SharedResource.Handle\">\n            <summary>\t\n            <dd> <p>A handle to a shared resource.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_SHARED_RESOURCE::Handle']/*\"/>\t\n            <msdn-id>bb173073</msdn-id>\t\n            <unmanaged>void* Handle</unmanaged>\t\n            <unmanaged-short>void Handle</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DXGI.SurfaceDescription\">\n            <summary>\t\n            <p>Describes a surface.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_SURFACE_DESC']/*\"/>\t\n            <msdn-id>bb173074</msdn-id>\t\n            <unmanaged>DXGI_SURFACE_DESC</unmanaged>\t\n            <unmanaged-short>DXGI_SURFACE_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.SurfaceDescription.Width\">\n            <summary>\t\n            <dd> <p>A value describing the surface width.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_SURFACE_DESC::Width']/*\"/>\t\n            <msdn-id>bb173074</msdn-id>\t\n            <unmanaged>unsigned int Width</unmanaged>\t\n            <unmanaged-short>unsigned int Width</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.SurfaceDescription.Height\">\n            <summary>\t\n            <dd> <p>A value describing the surface height.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_SURFACE_DESC::Height']/*\"/>\t\n            <msdn-id>bb173074</msdn-id>\t\n            <unmanaged>unsigned int Height</unmanaged>\t\n            <unmanaged-short>unsigned int Height</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.SurfaceDescription.Format\">\n            <summary>\t\n            <dd> <p>A member of the <strong><see cref=\"T:SharpDX.DXGI.Format\"/></strong> enumerated type that describes the surface format.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_SURFACE_DESC::Format']/*\"/>\t\n            <msdn-id>bb173074</msdn-id>\t\n            <unmanaged>DXGI_FORMAT Format</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT Format</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.SurfaceDescription.SampleDescription\">\n            <summary>\t\n            <dd> <p>A member of the <strong><see cref=\"T:SharpDX.DXGI.SampleDescription\"/></strong> structure that describes multi-sampling parameters for the surface.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_SURFACE_DESC::SampleDesc']/*\"/>\t\n            <msdn-id>bb173074</msdn-id>\t\n            <unmanaged>DXGI_SAMPLE_DESC SampleDesc</unmanaged>\t\n            <unmanaged-short>DXGI_SAMPLE_DESC SampleDesc</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DXGI.SwapChainDescription\">\n            <summary>\t\n            <p>Describes a swap chain.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>In full-screen mode, there is a dedicated front buffer; in windowed mode, the desktop is the front buffer.</p><p>If you create a swap chain with one buffer, specifying <strong><see cref=\"F:SharpDX.DXGI.SwapEffect.Sequential\"/></strong> does not cause the contents of the single  buffer to be swapped with the front buffer.</p><p>For performance information about flipping swap-chain buffers in full-screen application,  see Full-Screen Application Performance Hints.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_SWAP_CHAIN_DESC']/*\"/>\t\n            <msdn-id>bb173075</msdn-id>\t\n            <unmanaged>DXGI_SWAP_CHAIN_DESC</unmanaged>\t\n            <unmanaged-short>DXGI_SWAP_CHAIN_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.SwapChainDescription.ModeDescription\">\n            <summary>\t\n            <dd> <p>A <strong><see cref=\"T:SharpDX.DXGI.ModeDescription\"/></strong> structure that describes the backbuffer display mode.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_SWAP_CHAIN_DESC::BufferDesc']/*\"/>\t\n            <msdn-id>bb173075</msdn-id>\t\n            <unmanaged>DXGI_MODE_DESC BufferDesc</unmanaged>\t\n            <unmanaged-short>DXGI_MODE_DESC BufferDesc</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.SwapChainDescription.SampleDescription\">\n            <summary>\t\n            <dd> <p>A <strong><see cref=\"T:SharpDX.DXGI.SampleDescription\"/></strong> structure that describes multi-sampling parameters.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_SWAP_CHAIN_DESC::SampleDesc']/*\"/>\t\n            <msdn-id>bb173075</msdn-id>\t\n            <unmanaged>DXGI_SAMPLE_DESC SampleDesc</unmanaged>\t\n            <unmanaged-short>DXGI_SAMPLE_DESC SampleDesc</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.SwapChainDescription.Usage\">\n            <summary>\t\n            <dd> <p>A member of the DXGI_USAGE enumerated type that describes the surface usage and CPU access options for the back buffer. The back buffer can  be used for shader input or render-target output.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_SWAP_CHAIN_DESC::BufferUsage']/*\"/>\t\n            <msdn-id>bb173075</msdn-id>\t\n            <unmanaged>DXGI_USAGE_ENUM BufferUsage</unmanaged>\t\n            <unmanaged-short>DXGI_USAGE_ENUM BufferUsage</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.SwapChainDescription.BufferCount\">\n            <summary>\t\n            <dd> <p>A value that describes the number of buffers in the swap chain. When you call  <strong><see cref=\"M:SharpDX.DXGI.Factory.CreateSwapChain(SharpDX.ComObject,SharpDX.DXGI.SwapChainDescription@,SharpDX.DXGI.SwapChain)\"/></strong> to create a full-screen swap chain, you typically include the front buffer in this value. For more information about swap-chain buffers, see Remarks.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_SWAP_CHAIN_DESC::BufferCount']/*\"/>\t\n            <msdn-id>bb173075</msdn-id>\t\n            <unmanaged>unsigned int BufferCount</unmanaged>\t\n            <unmanaged-short>unsigned int BufferCount</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.SwapChainDescription.OutputHandle\">\n            <summary>\t\n            <dd> <p>An <strong><see cref=\"T:System.IntPtr\"/></strong> handle to the output window. This member must not be <strong><c>null</c></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_SWAP_CHAIN_DESC::OutputWindow']/*\"/>\t\n            <msdn-id>bb173075</msdn-id>\t\n            <unmanaged>HWND OutputWindow</unmanaged>\t\n            <unmanaged-short>HWND OutputWindow</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.SwapChainDescription.IsWindowed\">\n            <summary>\t\n            <dd> <p>A Boolean value that specifies whether the output is in windowed mode. <strong>TRUE</strong> if the output is in windowed mode; otherwise, <strong><see cref=\"F:SharpDX.Result.False\"/></strong>. </p> <p>We recommend that you create a windowed swap chain and allow the end user to change the swap chain to full screen through <strong><see cref=\"M:SharpDX.DXGI.SwapChain.SetFullscreenState(SharpDX.Bool,SharpDX.DXGI.Output)\"/></strong>; that is, do not set this member to <see cref=\"F:SharpDX.Result.False\"/> to force the swap chain to be full screen. However, if you create the swap chain as full screen, also provide the end user with a list of supported display modes through the <strong>BufferDesc</strong> member because a swap chain that is created with an unsupported display mode might cause the display to go black and prevent the end user from seeing anything. </p> <p>For more information about choosing windowed verses full screen, see <strong><see cref=\"M:SharpDX.DXGI.Factory.CreateSwapChain(SharpDX.ComObject,SharpDX.DXGI.SwapChainDescription@,SharpDX.DXGI.SwapChain)\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_SWAP_CHAIN_DESC::Windowed']/*\"/>\t\n            <msdn-id>bb173075</msdn-id>\t\n            <unmanaged>BOOL Windowed</unmanaged>\t\n            <unmanaged-short>BOOL Windowed</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.SwapChainDescription.SwapEffect\">\n            <summary>\t\n            <dd> <p>A member of the <strong><see cref=\"T:SharpDX.DXGI.SwapEffect\"/></strong> enumerated type that describes options for handling the contents of the presentation buffer after  presenting a surface.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_SWAP_CHAIN_DESC::SwapEffect']/*\"/>\t\n            <msdn-id>bb173075</msdn-id>\t\n            <unmanaged>DXGI_SWAP_EFFECT SwapEffect</unmanaged>\t\n            <unmanaged-short>DXGI_SWAP_EFFECT SwapEffect</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DXGI.SwapChainDescription.Flags\">\n            <summary>\t\n            <dd> <p>A member of the <strong><see cref=\"T:SharpDX.DXGI.SwapChainFlags\"/></strong> enumerated type that describes options for swap-chain behavior.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXGI_SWAP_CHAIN_DESC::Flags']/*\"/>\t\n            <msdn-id>bb173075</msdn-id>\t\n            <unmanaged>DXGI_SWAP_CHAIN_FLAG Flags</unmanaged>\t\n            <unmanaged-short>DXGI_SWAP_CHAIN_FLAG Flags</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DXGI.ModuleInit\">\n            <summary>\n            Internal class used to initialize this assembly.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.DXGI.ModuleInit.Setup\">\n            <summary>\n            Initializes this assembly.\n            </summary>\n            <remarks>\n            This method is called when the assembly is loaded.\n            </remarks>\n        </member>\n    </members>\n</doc>\n"
  },
  {
    "path": "3rd/SharpDX/SharpDX.Direct2D1.xml",
    "content": "<?xml version=\"1.0\"?>\n<doc>\n    <assembly>\n        <name>SharpDX.Direct2D1</name>\n    </assembly>\n    <members>\n        <member name=\"T:SharpDX.Direct2D1.AssemblyDoc\">\n            <summary>\n            The <see cref=\"A:SharpDX.Direct2D1\"/> assembly provides managed API for <see cref=\"N:SharpDX.Direct2D1\"/>, <see cref=\"N:SharpDX.DirectWrite\"/> and <see cref=\"N:SharpDX.WIC\"/>.\n            </summary>\n            <msdn-id>ee663274</msdn-id>\n            <unmanaged>Direct2D1 / DirectWrite</unmanaged>\t\n            <unmanaged-short>Direct2D1 / DirectWrite</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.NamespaceDoc\">\n            <summary>\n            The <see cref=\"N:SharpDX.DirectWrite\"/> namespace provides a managed DirectWrite API.\n            </summary>\n            <msdn-id>dd368038</msdn-id>\n            <unmanaged>DirectWrite</unmanaged>\t\n            <unmanaged-short>DirectWrite</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.Effects.NamespaceDoc\">\n            <summary>\n            The <see cref=\"N:SharpDX.Direct2D1.Effects\"/> namespace provides a managed Direct2D1 builtin Effects API.\n            </summary>\n            <msdn-id>hh706327</msdn-id>\n            <unmanaged>Direct2D1 Effects</unmanaged>\t\n            <unmanaged-short>Direct2D1 Effects</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.NamespaceDoc\">\n            <summary>\n            The <see cref=\"N:SharpDX.Direct2D1\"/> namespace provides a managed Direct2D API.\n            </summary>\n            <msdn-id>dd370990</msdn-id>\n            <unmanaged>Direct2D1</unmanaged>\t\n            <unmanaged-short>Direct2D1</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.LayerParameters\">\n            <summary>\t\n            <p> Contains the content bounds, mask information, opacity settings, and other options for a layer resource. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_LAYER_PARAMETERS']/*\"/>\t\n            <msdn-id>dd368127</msdn-id>\t\n            <unmanaged>D2D1_LAYER_PARAMETERS</unmanaged>\t\n            <unmanaged-short>D2D1_LAYER_PARAMETERS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.LayerParameters.ContentBounds\">\n            <summary>\t\n            <dd> <p>The content bounds of the layer. Content outside these bounds is not guaranteed to render.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_LAYER_PARAMETERS::contentBounds']/*\"/>\t\n            <msdn-id>dd368127</msdn-id>\t\n            <unmanaged>D2D_RECT_F contentBounds</unmanaged>\t\n            <unmanaged-short>D2D_RECT_F contentBounds</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.LayerParameters.GeometricMaskPointer\">\n            <summary>\t\n            <dd> <p>The geometric mask specifies the area of the layer that is composited into the render target. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_LAYER_PARAMETERS::geometricMask']/*\"/>\t\n            <msdn-id>dd368127</msdn-id>\t\n            <unmanaged>ID2D1Geometry* geometricMask</unmanaged>\t\n            <unmanaged-short>ID2D1Geometry geometricMask</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.LayerParameters.MaskAntialiasMode\">\n            <summary>\t\n            <dd> <p>A value that specifies the antialiasing mode for the geometricMask.  </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_LAYER_PARAMETERS::maskAntialiasMode']/*\"/>\t\n            <msdn-id>dd368127</msdn-id>\t\n            <unmanaged>D2D1_ANTIALIAS_MODE maskAntialiasMode</unmanaged>\t\n            <unmanaged-short>D2D1_ANTIALIAS_MODE maskAntialiasMode</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.LayerParameters.MaskTransform\">\n            <summary>\t\n            <dd> <p> A value that specifies the transform that is applied to the geometric mask when composing the layer.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_LAYER_PARAMETERS::maskTransform']/*\"/>\t\n            <msdn-id>dd368127</msdn-id>\t\n            <unmanaged>D2D_MATRIX_3X2_F maskTransform</unmanaged>\t\n            <unmanaged-short>D2D_MATRIX_3X2_F maskTransform</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.LayerParameters.Opacity\">\n            <summary>\t\n            <dd> <p>An opacity value that is applied uniformly to all resources in the layer when compositing to the target.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_LAYER_PARAMETERS::opacity']/*\"/>\t\n            <msdn-id>dd368127</msdn-id>\t\n            <unmanaged>float opacity</unmanaged>\t\n            <unmanaged-short>float opacity</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.LayerParameters.OpacityBrushPointer\">\n            <summary>\t\n            <dd> <p>A brush that is used to modify the opacity of the layer. The brush \t\n            is mapped to the layer, and the alpha channel of each mapped brush pixel is multiplied against the corresponding layer pixel. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_LAYER_PARAMETERS::opacityBrush']/*\"/>\t\n            <msdn-id>dd368127</msdn-id>\t\n            <unmanaged>ID2D1Brush* opacityBrush</unmanaged>\t\n            <unmanaged-short>ID2D1Brush opacityBrush</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.LayerParameters.LayerOptions\">\n            <summary>\t\n            <dd> <p> A value that specifies whether the layer intends to render text with ClearType antialiasing.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_LAYER_PARAMETERS::layerOptions']/*\"/>\t\n            <msdn-id>dd368127</msdn-id>\t\n            <unmanaged>D2D1_LAYER_OPTIONS layerOptions</unmanaged>\t\n            <unmanaged-short>D2D1_LAYER_OPTIONS layerOptions</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct2D1.LayerParameters.GeometricMask\">\n            <summary>\n            Sets the geometric mask.\n            </summary>\n            <value>\n            The geometric mask.\n            </value>\n            <unmanaged>ID2D1Geometry* geometricMask</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct2D1.LayerParameters.OpacityBrush\">\n            <summary>\n            Sets the opacity brush.\n            </summary>\n            <value>\n            The opacity brush.\n            </value>\n            <unmanaged>ID2D1Brush* opacityBrush</unmanaged>\t\n        </member>\n        <member name=\"T:SharpDX.WIC.BIMIptcDigestProperties\">\n            <summary>\t\n            <p>Specifies the identifiers of the metadata items in an 8BIM IPTC digest metadata block.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WIC8BIMIptcDigestProperties']/*\"/>\t\n            <msdn-id>ee719802</msdn-id>\t\n            <unmanaged>WIC8BIMIptcDigestProperties</unmanaged>\t\n            <unmanaged-short>WIC8BIMIptcDigestProperties</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.BIMIptcDigestProperties.PString\">\n            <summary>\t\n            <dd> <p>[VT_LPSTR] A name that identifies the 8BIM block.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WIC8BIMIptcDigestPString']/*\"/>\t\n            <msdn-id>ee719802</msdn-id>\t\n            <unmanaged>WIC8BIMIptcDigestPString</unmanaged>\t\n            <unmanaged-short>WIC8BIMIptcDigestPString</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.BIMIptcDigestProperties.IptcDigest\">\n            <summary>\t\n            <dd> <p>[VT_BLOB] The embedded IPTC digest value.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WIC8BIMIptcDigestIptcDigest']/*\"/>\t\n            <msdn-id>ee719802</msdn-id>\t\n            <unmanaged>WIC8BIMIptcDigestIptcDigest</unmanaged>\t\n            <unmanaged-short>WIC8BIMIptcDigestIptcDigest</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.WIC.BIMIptcProperties\">\n            <summary>\t\n            <p>Specifies the identifiers of the metadata items in an 8BIM IPTC block.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WIC8BIMIptcProperties']/*\"/>\t\n            <msdn-id>ee719803</msdn-id>\t\n            <unmanaged>WIC8BIMIptcProperties</unmanaged>\t\n            <unmanaged-short>WIC8BIMIptcProperties</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.BIMIptcProperties.PString\">\n            <summary>\t\n            <dd> <p>[VT_LPSTR] A name that identifies the 8BIM block.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WIC8BIMIptcPString']/*\"/>\t\n            <msdn-id>ee719803</msdn-id>\t\n            <unmanaged>WIC8BIMIptcPString</unmanaged>\t\n            <unmanaged-short>WIC8BIMIptcPString</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.BIMIptcProperties.EmbeddedIPTC\">\n            <summary>\t\n            <dd> <p>[VT_UNKNOWN] The IPTC block embedded in this 8BIM IPTC block.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WIC8BIMIptcEmbeddedIPTC']/*\"/>\t\n            <msdn-id>ee719803</msdn-id>\t\n            <unmanaged>WIC8BIMIptcEmbeddedIPTC</unmanaged>\t\n            <unmanaged-short>WIC8BIMIptcEmbeddedIPTC</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.WIC.BIMResolutionInfoProperties\">\n            <summary>\t\n            <p>Specifies the identifiers of the metadata items in an 8BIMResolutionInfo block.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WIC8BIMResolutionInfoProperties']/*\"/>\t\n            <msdn-id>ee719804</msdn-id>\t\n            <unmanaged>WIC8BIMResolutionInfoProperties</unmanaged>\t\n            <unmanaged-short>WIC8BIMResolutionInfoProperties</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.BIMResolutionInfoProperties.PString\">\n            <summary>\t\n            <dd> <p>[VT_LPSTR] A name that identifies the 8BIM block.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WIC8BIMResolutionInfoPString']/*\"/>\t\n            <msdn-id>ee719804</msdn-id>\t\n            <unmanaged>WIC8BIMResolutionInfoPString</unmanaged>\t\n            <unmanaged-short>WIC8BIMResolutionInfoPString</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.BIMResolutionInfoProperties.HResolution\">\n            <summary>\t\n            <dd> <p>[VT_UI4] The horizontal resolution of the image.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WIC8BIMResolutionInfoHResolution']/*\"/>\t\n            <msdn-id>ee719804</msdn-id>\t\n            <unmanaged>WIC8BIMResolutionInfoHResolution</unmanaged>\t\n            <unmanaged-short>WIC8BIMResolutionInfoHResolution</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.BIMResolutionInfoProperties.HResolutionUnit\">\n            <summary>\t\n            <dd> <p>[VT_UI2] The units that the horizontal resolution is specified in; a 1 indicates pixels per inch and a 2 indicates pixels per centimeter.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WIC8BIMResolutionInfoHResolutionUnit']/*\"/>\t\n            <msdn-id>ee719804</msdn-id>\t\n            <unmanaged>WIC8BIMResolutionInfoHResolutionUnit</unmanaged>\t\n            <unmanaged-short>WIC8BIMResolutionInfoHResolutionUnit</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.BIMResolutionInfoProperties.WidthUnit\">\n            <summary>\t\n            <dd> <p>[VT_UI2] The units that the image width is specified in; a 1 indicates inches, a 2 indicates centimeters, a 3 indicates points, a 4 specifies picas, and a 5 specifies columns.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WIC8BIMResolutionInfoWidthUnit']/*\"/>\t\n            <msdn-id>ee719804</msdn-id>\t\n            <unmanaged>WIC8BIMResolutionInfoWidthUnit</unmanaged>\t\n            <unmanaged-short>WIC8BIMResolutionInfoWidthUnit</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.BIMResolutionInfoProperties.VResolution\">\n            <summary>\t\n            <dd> <p>[VT_UI4] The vertical resolution of the image.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WIC8BIMResolutionInfoVResolution']/*\"/>\t\n            <msdn-id>ee719804</msdn-id>\t\n            <unmanaged>WIC8BIMResolutionInfoVResolution</unmanaged>\t\n            <unmanaged-short>WIC8BIMResolutionInfoVResolution</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.BIMResolutionInfoProperties.VResolutionUnit\">\n            <summary>\t\n            <dd> <p>[VT_UI2] The units that the vertical resolution is specified in; a 1 indicates pixels per inch and a 2 indicates pixels per centimeter.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WIC8BIMResolutionInfoVResolutionUnit']/*\"/>\t\n            <msdn-id>ee719804</msdn-id>\t\n            <unmanaged>WIC8BIMResolutionInfoVResolutionUnit</unmanaged>\t\n            <unmanaged-short>WIC8BIMResolutionInfoVResolutionUnit</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.BIMResolutionInfoProperties.HeightUnit\">\n            <summary>\t\n            <dd> <p>[VT_UI2] The units that the image height is specified in; a 1 indicates inches, a 2 indicates centimeters, a 3 indicates points, a 4 specifies picas, and a 5 specifies columns.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WIC8BIMResolutionInfoHeightUnit']/*\"/>\t\n            <msdn-id>ee719804</msdn-id>\t\n            <unmanaged>WIC8BIMResolutionInfoHeightUnit</unmanaged>\t\n            <unmanaged-short>WIC8BIMResolutionInfoHeightUnit</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.WIC.BitmapAlphaChannelOption\">\n            <summary>\t\n            <p>Specifies the desired alpha channel usage.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICBitmapAlphaChannelOption']/*\"/>\t\n            <msdn-id>ee719805</msdn-id>\t\n            <unmanaged>WICBitmapAlphaChannelOption</unmanaged>\t\n            <unmanaged-short>WICBitmapAlphaChannelOption</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.BitmapAlphaChannelOption.UseAlpha\">\n            <summary>\t\n            <dd> <p>Use alpha channel.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICBitmapUseAlpha']/*\"/>\t\n            <msdn-id>ee719805</msdn-id>\t\n            <unmanaged>WICBitmapUseAlpha</unmanaged>\t\n            <unmanaged-short>WICBitmapUseAlpha</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.BitmapAlphaChannelOption.UsePremultipliedAlpha\">\n            <summary>\t\n            <dd> <p>Use a pre-multiplied alpha channel.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICBitmapUsePremultipliedAlpha']/*\"/>\t\n            <msdn-id>ee719805</msdn-id>\t\n            <unmanaged>WICBitmapUsePremultipliedAlpha</unmanaged>\t\n            <unmanaged-short>WICBitmapUsePremultipliedAlpha</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.BitmapAlphaChannelOption.IgnoreAlpha\">\n            <summary>\t\n            <dd> <p>Ignore alpha channel.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICBitmapIgnoreAlpha']/*\"/>\t\n            <msdn-id>ee719805</msdn-id>\t\n            <unmanaged>WICBitmapIgnoreAlpha</unmanaged>\t\n            <unmanaged-short>WICBitmapIgnoreAlpha</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.WIC.BitmapCreateCacheOption\">\n            <summary>\t\n            <p>Specifies the desired cache usage.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The <strong>CreateBitmap</strong> of the <strong><see cref=\"T:SharpDX.WIC.ImagingFactory\"/></strong> interface does not support <see cref=\"F:SharpDX.WIC.BitmapCreateCacheOption.NoCache\"/> when the <em>pixelFormat</em> is a native pixel format provided by Windows Imaging Component (WIC).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICBitmapCreateCacheOption']/*\"/>\t\n            <msdn-id>ee719806</msdn-id>\t\n            <unmanaged>WICBitmapCreateCacheOption</unmanaged>\t\n            <unmanaged-short>WICBitmapCreateCacheOption</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.BitmapCreateCacheOption.NoCache\">\n            <summary>\t\n            <dd> <p>Do not cache the bitmap.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICBitmapNoCache']/*\"/>\t\n            <msdn-id>ee719806</msdn-id>\t\n            <unmanaged>WICBitmapNoCache</unmanaged>\t\n            <unmanaged-short>WICBitmapNoCache</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.BitmapCreateCacheOption.CacheOnDemand\">\n            <summary>\t\n            <dd> <p>Cache the bitmap when needed.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICBitmapCacheOnDemand']/*\"/>\t\n            <msdn-id>ee719806</msdn-id>\t\n            <unmanaged>WICBitmapCacheOnDemand</unmanaged>\t\n            <unmanaged-short>WICBitmapCacheOnDemand</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.BitmapCreateCacheOption.CacheOnLoad\">\n            <summary>\t\n            <dd> <p>Cache the bitmap at initialization.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICBitmapCacheOnLoad']/*\"/>\t\n            <msdn-id>ee719806</msdn-id>\t\n            <unmanaged>WICBitmapCacheOnLoad</unmanaged>\t\n            <unmanaged-short>WICBitmapCacheOnLoad</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.WIC.BitmapDecoderCapabilities\">\n            <summary>\t\n            <p>Specifies the capabilities of the decoder.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICBitmapDecoderCapabilities']/*\"/>\t\n            <msdn-id>ee719807</msdn-id>\t\n            <unmanaged>WICBitmapDecoderCapabilities</unmanaged>\t\n            <unmanaged-short>WICBitmapDecoderCapabilities</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.BitmapDecoderCapabilities.SameEncoder\">\n            <summary>\t\n            <dd> <p>Decoder recognizes the image was encoded with an encoder produced by the same vendor. </p> <p></p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICBitmapDecoderCapabilitySameEncoder']/*\"/>\t\n            <msdn-id>ee719807</msdn-id>\t\n            <unmanaged>WICBitmapDecoderCapabilitySameEncoder</unmanaged>\t\n            <unmanaged-short>WICBitmapDecoderCapabilitySameEncoder</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.BitmapDecoderCapabilities.CanDecodeAllImages\">\n            <summary>\t\n            <dd> <p>Decoder can decode all the images within an image container.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICBitmapDecoderCapabilityCanDecodeAllImages']/*\"/>\t\n            <msdn-id>ee719807</msdn-id>\t\n            <unmanaged>WICBitmapDecoderCapabilityCanDecodeAllImages</unmanaged>\t\n            <unmanaged-short>WICBitmapDecoderCapabilityCanDecodeAllImages</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.BitmapDecoderCapabilities.CanDecodeSomeImages\">\n            <summary>\t\n            <dd> <p>Decoder can decode some of the images within an image container.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICBitmapDecoderCapabilityCanDecodeSomeImages']/*\"/>\t\n            <msdn-id>ee719807</msdn-id>\t\n            <unmanaged>WICBitmapDecoderCapabilityCanDecodeSomeImages</unmanaged>\t\n            <unmanaged-short>WICBitmapDecoderCapabilityCanDecodeSomeImages</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.BitmapDecoderCapabilities.CanEnumerateMetadata\">\n            <summary>\t\n            <dd> <p>Decoder can enumerate the metadata blocks within a container format.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICBitmapDecoderCapabilityCanEnumerateMetadata']/*\"/>\t\n            <msdn-id>ee719807</msdn-id>\t\n            <unmanaged>WICBitmapDecoderCapabilityCanEnumerateMetadata</unmanaged>\t\n            <unmanaged-short>WICBitmapDecoderCapabilityCanEnumerateMetadata</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.BitmapDecoderCapabilities.CanDecodeThumbnail\">\n            <summary>\t\n            <dd> <p>Decoder can find and decode a thumbnail.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICBitmapDecoderCapabilityCanDecodeThumbnail']/*\"/>\t\n            <msdn-id>ee719807</msdn-id>\t\n            <unmanaged>WICBitmapDecoderCapabilityCanDecodeThumbnail</unmanaged>\t\n            <unmanaged-short>WICBitmapDecoderCapabilityCanDecodeThumbnail</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.BitmapDecoderCapabilities.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.WIC.BitmapDitherType\">\n            <summary>\t\n            <p>Specifies the type of <em>dither</em> algorithm to apply when converting between image formats.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICBitmapDitherType']/*\"/>\t\n            <msdn-id>ee719808</msdn-id>\t\n            <unmanaged>WICBitmapDitherType</unmanaged>\t\n            <unmanaged-short>WICBitmapDitherType</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.BitmapDitherType.None\">\n            <summary>\t\n            <dd> <p>A solid color algorithm without dither.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICBitmapDitherTypeNone']/*\"/>\t\n            <msdn-id>ee719808</msdn-id>\t\n            <unmanaged>WICBitmapDitherTypeNone</unmanaged>\t\n            <unmanaged-short>WICBitmapDitherTypeNone</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.BitmapDitherType.Solid\">\n            <summary>\t\n            <dd> <p>A solid color algorithm without dither.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICBitmapDitherTypeSolid']/*\"/>\t\n            <msdn-id>ee719808</msdn-id>\t\n            <unmanaged>WICBitmapDitherTypeSolid</unmanaged>\t\n            <unmanaged-short>WICBitmapDitherTypeSolid</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.BitmapDitherType.Ordered4x4\">\n            <summary>\t\n            <dd> <p>A 4x4 ordered dither algorithm. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICBitmapDitherTypeOrdered4x4']/*\"/>\t\n            <msdn-id>ee719808</msdn-id>\t\n            <unmanaged>WICBitmapDitherTypeOrdered4x4</unmanaged>\t\n            <unmanaged-short>WICBitmapDitherTypeOrdered4x4</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.BitmapDitherType.Ordered8x8\">\n            <summary>\t\n            <dd> <p>An 8x8 ordered dither algorithm.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICBitmapDitherTypeOrdered8x8']/*\"/>\t\n            <msdn-id>ee719808</msdn-id>\t\n            <unmanaged>WICBitmapDitherTypeOrdered8x8</unmanaged>\t\n            <unmanaged-short>WICBitmapDitherTypeOrdered8x8</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.BitmapDitherType.Ordered16x16\">\n            <summary>\t\n            <dd> <p>A 16x16 ordered dither algorithm.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICBitmapDitherTypeOrdered16x16']/*\"/>\t\n            <msdn-id>ee719808</msdn-id>\t\n            <unmanaged>WICBitmapDitherTypeOrdered16x16</unmanaged>\t\n            <unmanaged-short>WICBitmapDitherTypeOrdered16x16</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.BitmapDitherType.Spiral4x4\">\n            <summary>\t\n            <dd> <p>A 4x4 spiral dither algorithm.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICBitmapDitherTypeSpiral4x4']/*\"/>\t\n            <msdn-id>ee719808</msdn-id>\t\n            <unmanaged>WICBitmapDitherTypeSpiral4x4</unmanaged>\t\n            <unmanaged-short>WICBitmapDitherTypeSpiral4x4</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.BitmapDitherType.Spiral8x8\">\n            <summary>\t\n            <dd> <p>An 8x8 spiral dither algorithm.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICBitmapDitherTypeSpiral8x8']/*\"/>\t\n            <msdn-id>ee719808</msdn-id>\t\n            <unmanaged>WICBitmapDitherTypeSpiral8x8</unmanaged>\t\n            <unmanaged-short>WICBitmapDitherTypeSpiral8x8</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.BitmapDitherType.DualSpiral4x4\">\n            <summary>\t\n            <dd> <p>A 4x4 dual spiral dither algorithm.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICBitmapDitherTypeDualSpiral4x4']/*\"/>\t\n            <msdn-id>ee719808</msdn-id>\t\n            <unmanaged>WICBitmapDitherTypeDualSpiral4x4</unmanaged>\t\n            <unmanaged-short>WICBitmapDitherTypeDualSpiral4x4</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.BitmapDitherType.DualSpiral8x8\">\n            <summary>\t\n            <dd> <p>An 8x8 dual spiral dither algorithm.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICBitmapDitherTypeDualSpiral8x8']/*\"/>\t\n            <msdn-id>ee719808</msdn-id>\t\n            <unmanaged>WICBitmapDitherTypeDualSpiral8x8</unmanaged>\t\n            <unmanaged-short>WICBitmapDitherTypeDualSpiral8x8</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.BitmapDitherType.ErrorDiffusion\">\n            <summary>\t\n            <dd> <p>An error diffusion algorithm.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICBitmapDitherTypeErrorDiffusion']/*\"/>\t\n            <msdn-id>ee719808</msdn-id>\t\n            <unmanaged>WICBitmapDitherTypeErrorDiffusion</unmanaged>\t\n            <unmanaged-short>WICBitmapDitherTypeErrorDiffusion</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.WIC.BitmapEncoderCacheOption\">\n            <summary>\t\n            <p>Specifies the cache options available for an encoder.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICBitmapEncoderCacheOption']/*\"/>\t\n            <msdn-id>ee719809</msdn-id>\t\n            <unmanaged>WICBitmapEncoderCacheOption</unmanaged>\t\n            <unmanaged-short>WICBitmapEncoderCacheOption</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.BitmapEncoderCacheOption.InMemory\">\n            <summary>\t\n            <dd> <p>The encoder is cached in memory. This option is not supported.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICBitmapEncoderCacheInMemory']/*\"/>\t\n            <msdn-id>ee719809</msdn-id>\t\n            <unmanaged>WICBitmapEncoderCacheInMemory</unmanaged>\t\n            <unmanaged-short>WICBitmapEncoderCacheInMemory</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.BitmapEncoderCacheOption.TempFile\">\n            <summary>\t\n            <dd> <p>The encoder is cached to a temporary file. This option is not supported.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICBitmapEncoderCacheTempFile']/*\"/>\t\n            <msdn-id>ee719809</msdn-id>\t\n            <unmanaged>WICBitmapEncoderCacheTempFile</unmanaged>\t\n            <unmanaged-short>WICBitmapEncoderCacheTempFile</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.BitmapEncoderCacheOption.NoCache\">\n            <summary>\t\n            <dd> <p>The encoder is not cached.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICBitmapEncoderNoCache']/*\"/>\t\n            <msdn-id>ee719809</msdn-id>\t\n            <unmanaged>WICBitmapEncoderNoCache</unmanaged>\t\n            <unmanaged-short>WICBitmapEncoderNoCache</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.WIC.BitmapInterpolationMode\">\n            <summary>\t\n            <p>Specifies the sampling or filtering mode to use when scaling an image.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICBitmapInterpolationMode']/*\"/>\t\n            <msdn-id>ee719810</msdn-id>\t\n            <unmanaged>WICBitmapInterpolationMode</unmanaged>\t\n            <unmanaged-short>WICBitmapInterpolationMode</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.BitmapInterpolationMode.NearestNeighbor\">\n            <summary>\t\n            <dd> <p>A nearest neighbor interpolation algorithm. Also known as nearest pixel or point interpolation. </p> <p>The output pixel is assigned the value of the pixel that the point falls within. No other pixels are considered.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICBitmapInterpolationModeNearestNeighbor']/*\"/>\t\n            <msdn-id>ee719810</msdn-id>\t\n            <unmanaged>WICBitmapInterpolationModeNearestNeighbor</unmanaged>\t\n            <unmanaged-short>WICBitmapInterpolationModeNearestNeighbor</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.BitmapInterpolationMode.Linear\">\n            <summary>\t\n            <dd> <p>A bilinear interpolation algorithm. </p> <p>The output pixel values are computed as a weighted average of the nearest four pixels in a 2x2 grid.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICBitmapInterpolationModeLinear']/*\"/>\t\n            <msdn-id>ee719810</msdn-id>\t\n            <unmanaged>WICBitmapInterpolationModeLinear</unmanaged>\t\n            <unmanaged-short>WICBitmapInterpolationModeLinear</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.BitmapInterpolationMode.Cubic\">\n            <summary>\t\n            <dd> <p>A bicubic interpolation algorithm. </p> <p>Destination pixel values are computed as a weighted average of the nearest sixteen pixels in a 4x4 grid. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICBitmapInterpolationModeCubic']/*\"/>\t\n            <msdn-id>ee719810</msdn-id>\t\n            <unmanaged>WICBitmapInterpolationModeCubic</unmanaged>\t\n            <unmanaged-short>WICBitmapInterpolationModeCubic</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.BitmapInterpolationMode.Fant\">\n            <summary>\t\n            <dd> <p>A Fant resampling algorithm. </p> <p>Destination pixel values are computed as a weighted average of the all the pixels that map to the new pixel.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICBitmapInterpolationModeFant']/*\"/>\t\n            <msdn-id>ee719810</msdn-id>\t\n            <unmanaged>WICBitmapInterpolationModeFant</unmanaged>\t\n            <unmanaged-short>WICBitmapInterpolationModeFant</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.WIC.BitmapLockFlags\">\n            <summary>\t\n            <p>Specifies access to an <strong><see cref=\"T:SharpDX.WIC.Bitmap\"/></strong>.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICBitmapLockFlags']/*\"/>\t\n            <msdn-id>ee719811</msdn-id>\t\n            <unmanaged>WICBitmapLockFlags</unmanaged>\t\n            <unmanaged-short>WICBitmapLockFlags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.BitmapLockFlags.Read\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICBitmapLockRead']/*\"/>\t\n            <unmanaged>WICBitmapLockRead</unmanaged>\t\n            <unmanaged-short>WICBitmapLockRead</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.BitmapLockFlags.Write\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICBitmapLockWrite']/*\"/>\t\n            <unmanaged>WICBitmapLockWrite</unmanaged>\t\n            <unmanaged-short>WICBitmapLockWrite</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.WIC.BitmapPaletteType\">\n            <summary>\t\n            <p>Specifies the type of palette used for an indexed image format.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICBitmapPaletteType']/*\"/>\t\n            <msdn-id>ee719812</msdn-id>\t\n            <unmanaged>WICBitmapPaletteType</unmanaged>\t\n            <unmanaged-short>WICBitmapPaletteType</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.BitmapPaletteType.Custom\">\n            <summary>\t\n            <dd> <p>An arbitrary custom palette provided by caller.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICBitmapPaletteTypeCustom']/*\"/>\t\n            <msdn-id>ee719812</msdn-id>\t\n            <unmanaged>WICBitmapPaletteTypeCustom</unmanaged>\t\n            <unmanaged-short>WICBitmapPaletteTypeCustom</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.BitmapPaletteType.MedianCut\">\n            <summary>\t\n            <dd> <p>An optimal palette generated using a median-cut algorithm. Derived from the colors in an image.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICBitmapPaletteTypeMedianCut']/*\"/>\t\n            <msdn-id>ee719812</msdn-id>\t\n            <unmanaged>WICBitmapPaletteTypeMedianCut</unmanaged>\t\n            <unmanaged-short>WICBitmapPaletteTypeMedianCut</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.BitmapPaletteType.FixedBW\">\n            <summary>\t\n            <dd> <p>A black and white palette.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICBitmapPaletteTypeFixedBW']/*\"/>\t\n            <msdn-id>ee719812</msdn-id>\t\n            <unmanaged>WICBitmapPaletteTypeFixedBW</unmanaged>\t\n            <unmanaged-short>WICBitmapPaletteTypeFixedBW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.BitmapPaletteType.FixedHalftone8\">\n            <summary>\t\n            <dd> <p>A palette that has its 8-color on-off primaries and the 16 system colors added. With duplicates removed, 16 colors are available.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICBitmapPaletteTypeFixedHalftone8']/*\"/>\t\n            <msdn-id>ee719812</msdn-id>\t\n            <unmanaged>WICBitmapPaletteTypeFixedHalftone8</unmanaged>\t\n            <unmanaged-short>WICBitmapPaletteTypeFixedHalftone8</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.BitmapPaletteType.FixedHalftone27\">\n            <summary>\t\n            <dd> <p>A palette that has 3 intensity levels of each primary: 27-color on-off primaries and the 16 system colors added. With duplicates removed, 35 colors are available.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICBitmapPaletteTypeFixedHalftone27']/*\"/>\t\n            <msdn-id>ee719812</msdn-id>\t\n            <unmanaged>WICBitmapPaletteTypeFixedHalftone27</unmanaged>\t\n            <unmanaged-short>WICBitmapPaletteTypeFixedHalftone27</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.BitmapPaletteType.FixedHalftone64\">\n            <summary>\t\n            <dd> <p>A palette that has 4 intensity levels of each primary: 64-color on-off primaries and the 16 system colors added. With duplicates removed, 72 colors are available.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICBitmapPaletteTypeFixedHalftone64']/*\"/>\t\n            <msdn-id>ee719812</msdn-id>\t\n            <unmanaged>WICBitmapPaletteTypeFixedHalftone64</unmanaged>\t\n            <unmanaged-short>WICBitmapPaletteTypeFixedHalftone64</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.BitmapPaletteType.FixedHalftone125\">\n            <summary>\t\n            <dd> <p>A palette that has 5 intensity levels of each primary: 125-color on-off primaries and the 16 system colors added. With duplicates removed, 133 colors are available.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICBitmapPaletteTypeFixedHalftone125']/*\"/>\t\n            <msdn-id>ee719812</msdn-id>\t\n            <unmanaged>WICBitmapPaletteTypeFixedHalftone125</unmanaged>\t\n            <unmanaged-short>WICBitmapPaletteTypeFixedHalftone125</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.BitmapPaletteType.FixedHalftone216\">\n            <summary>\t\n            <dd> <p>A palette that has 6 intensity levels of each primary: 216-color on-off primaries and the 16 system colors added. With duplicates removed, 224 colors are available. This is the same as <strong>WICBitmapPaletteFixedHalftoneWeb</strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICBitmapPaletteTypeFixedHalftone216']/*\"/>\t\n            <msdn-id>ee719812</msdn-id>\t\n            <unmanaged>WICBitmapPaletteTypeFixedHalftone216</unmanaged>\t\n            <unmanaged-short>WICBitmapPaletteTypeFixedHalftone216</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.BitmapPaletteType.FixedWebPalette\">\n            <summary>\t\n            <dd> <p>A palette that has 6 intensity levels of each primary: 216-color on-off primaries and the 16 system colors added. With duplicates removed, 224 colors are available. This is the same as <strong><see cref=\"F:SharpDX.WIC.BitmapPaletteType.FixedHalftone216\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICBitmapPaletteTypeFixedWebPalette']/*\"/>\t\n            <msdn-id>ee719812</msdn-id>\t\n            <unmanaged>WICBitmapPaletteTypeFixedWebPalette</unmanaged>\t\n            <unmanaged-short>WICBitmapPaletteTypeFixedWebPalette</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.BitmapPaletteType.FixedHalftone252\">\n            <summary>\t\n            <dd> <p>A palette that has its 252-color on-off primaries and the 16 system colors added. With duplicates removed, 256 colors are available.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICBitmapPaletteTypeFixedHalftone252']/*\"/>\t\n            <msdn-id>ee719812</msdn-id>\t\n            <unmanaged>WICBitmapPaletteTypeFixedHalftone252</unmanaged>\t\n            <unmanaged-short>WICBitmapPaletteTypeFixedHalftone252</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.BitmapPaletteType.FixedHalftone256\">\n            <summary>\t\n            <dd> <p>A palette that has its 256-color on-off primaries and the 16 system colors added. With duplicates removed, 256 colors are available.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICBitmapPaletteTypeFixedHalftone256']/*\"/>\t\n            <msdn-id>ee719812</msdn-id>\t\n            <unmanaged>WICBitmapPaletteTypeFixedHalftone256</unmanaged>\t\n            <unmanaged-short>WICBitmapPaletteTypeFixedHalftone256</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.BitmapPaletteType.FixedGray4\">\n            <summary>\t\n            <dd> <p>A palette that has 4 shades of gray.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICBitmapPaletteTypeFixedGray4']/*\"/>\t\n            <msdn-id>ee719812</msdn-id>\t\n            <unmanaged>WICBitmapPaletteTypeFixedGray4</unmanaged>\t\n            <unmanaged-short>WICBitmapPaletteTypeFixedGray4</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.BitmapPaletteType.FixedGray16\">\n            <summary>\t\n            <dd> <p>A palette that has 16 shades of gray.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICBitmapPaletteTypeFixedGray16']/*\"/>\t\n            <msdn-id>ee719812</msdn-id>\t\n            <unmanaged>WICBitmapPaletteTypeFixedGray16</unmanaged>\t\n            <unmanaged-short>WICBitmapPaletteTypeFixedGray16</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.BitmapPaletteType.FixedGray256\">\n            <summary>\t\n            <dd> <p>A palette that has 256 shades of gray.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICBitmapPaletteTypeFixedGray256']/*\"/>\t\n            <msdn-id>ee719812</msdn-id>\t\n            <unmanaged>WICBitmapPaletteTypeFixedGray256</unmanaged>\t\n            <unmanaged-short>WICBitmapPaletteTypeFixedGray256</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.WIC.BitmapTransformOptions\">\n            <summary>\t\n            <p>Specifies the flip and rotation transforms.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICBitmapTransformOptions']/*\"/>\t\n            <msdn-id>ee719814</msdn-id>\t\n            <unmanaged>WICBitmapTransformOptions</unmanaged>\t\n            <unmanaged-short>WICBitmapTransformOptions</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.BitmapTransformOptions.Rotate0\">\n            <summary>\t\n            <dd> <p>A rotation of 0 degrees.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICBitmapTransformRotate0']/*\"/>\t\n            <msdn-id>ee719814</msdn-id>\t\n            <unmanaged>WICBitmapTransformRotate0</unmanaged>\t\n            <unmanaged-short>WICBitmapTransformRotate0</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.BitmapTransformOptions.Rotate90\">\n            <summary>\t\n            <dd> <p>A clockwise rotation of 90 degrees.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICBitmapTransformRotate90']/*\"/>\t\n            <msdn-id>ee719814</msdn-id>\t\n            <unmanaged>WICBitmapTransformRotate90</unmanaged>\t\n            <unmanaged-short>WICBitmapTransformRotate90</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.BitmapTransformOptions.Rotate180\">\n            <summary>\t\n            <dd> <p>A clockwise rotation of 180 degrees.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICBitmapTransformRotate180']/*\"/>\t\n            <msdn-id>ee719814</msdn-id>\t\n            <unmanaged>WICBitmapTransformRotate180</unmanaged>\t\n            <unmanaged-short>WICBitmapTransformRotate180</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.BitmapTransformOptions.Rotate270\">\n            <summary>\t\n            <dd> <p>A clockwise rotation of 270 degrees.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICBitmapTransformRotate270']/*\"/>\t\n            <msdn-id>ee719814</msdn-id>\t\n            <unmanaged>WICBitmapTransformRotate270</unmanaged>\t\n            <unmanaged-short>WICBitmapTransformRotate270</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.BitmapTransformOptions.FlipHorizontal\">\n            <summary>\t\n            <dd> <p>A horizontal flip. Pixels are flipped around the vertical y-axis.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICBitmapTransformFlipHorizontal']/*\"/>\t\n            <msdn-id>ee719814</msdn-id>\t\n            <unmanaged>WICBitmapTransformFlipHorizontal</unmanaged>\t\n            <unmanaged-short>WICBitmapTransformFlipHorizontal</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.BitmapTransformOptions.FlipVertical\">\n            <summary>\t\n            <dd> <p>A vertical flip. Pixels are flipped around the horizontal x-axis.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICBitmapTransformFlipVertical']/*\"/>\t\n            <msdn-id>ee719814</msdn-id>\t\n            <unmanaged>WICBitmapTransformFlipVertical</unmanaged>\t\n            <unmanaged-short>WICBitmapTransformFlipVertical</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.WIC.ColorContextType\">\n            <summary>\t\n            <p>Specifies the color context types.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICColorContextType']/*\"/>\t\n            <msdn-id>ee719815</msdn-id>\t\n            <unmanaged>WICColorContextType</unmanaged>\t\n            <unmanaged-short>WICColorContextType</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.ColorContextType.Uninitialized\">\n            <summary>\t\n            <dd> <p>An uninitialized color context.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICColorContextUninitialized']/*\"/>\t\n            <msdn-id>ee719815</msdn-id>\t\n            <unmanaged>WICColorContextUninitialized</unmanaged>\t\n            <unmanaged-short>WICColorContextUninitialized</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.ColorContextType.Profile\">\n            <summary>\t\n            <dd> <p>A color context profile.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICColorContextProfile']/*\"/>\t\n            <msdn-id>ee719815</msdn-id>\t\n            <unmanaged>WICColorContextProfile</unmanaged>\t\n            <unmanaged-short>WICColorContextProfile</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.ColorContextType.ExifColorSpace\">\n            <summary>\t\n            <dd> <p>An EXIF color space color context.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICColorContextExifColorSpace']/*\"/>\t\n            <msdn-id>ee719815</msdn-id>\t\n            <unmanaged>WICColorContextExifColorSpace</unmanaged>\t\n            <unmanaged-short>WICColorContextExifColorSpace</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.WIC.ComponentEnumerateOptions\">\n            <summary>\t\n            <p>Specifies component enumeration options.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICComponentEnumerateOptions']/*\"/>\t\n            <msdn-id>ee719816</msdn-id>\t\n            <unmanaged>WICComponentEnumerateOptions</unmanaged>\t\n            <unmanaged-short>WICComponentEnumerateOptions</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.ComponentEnumerateOptions.Default\">\n            <summary>\t\n            <dd> <p>Enumerate signed components.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICComponentEnumerateDefault']/*\"/>\t\n            <msdn-id>ee719816</msdn-id>\t\n            <unmanaged>WICComponentEnumerateDefault</unmanaged>\t\n            <unmanaged-short>WICComponentEnumerateDefault</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.ComponentEnumerateOptions.Refresh\">\n            <summary>\t\n            <dd> <p>Force a read of the registry when enumerating components.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICComponentEnumerateRefresh']/*\"/>\t\n            <msdn-id>ee719816</msdn-id>\t\n            <unmanaged>WICComponentEnumerateRefresh</unmanaged>\t\n            <unmanaged-short>WICComponentEnumerateRefresh</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.ComponentEnumerateOptions.Disabled\">\n            <summary>\t\n            <dd> <p>Enumerate disabled components.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICComponentEnumerateDisabled']/*\"/>\t\n            <msdn-id>ee719816</msdn-id>\t\n            <unmanaged>WICComponentEnumerateDisabled</unmanaged>\t\n            <unmanaged-short>WICComponentEnumerateDisabled</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.ComponentEnumerateOptions.Unsigned\">\n            <summary>\t\n            <dd> <p>Enumerate unsigned components.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICComponentEnumerateUnsigned']/*\"/>\t\n            <msdn-id>ee719816</msdn-id>\t\n            <unmanaged>WICComponentEnumerateUnsigned</unmanaged>\t\n            <unmanaged-short>WICComponentEnumerateUnsigned</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.ComponentEnumerateOptions.BuiltInOnly\">\n            <summary>\t\n            <dd> <p>Enumerate only built in components.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICComponentEnumerateBuiltInOnly']/*\"/>\t\n            <msdn-id>ee719816</msdn-id>\t\n            <unmanaged>WICComponentEnumerateBuiltInOnly</unmanaged>\t\n            <unmanaged-short>WICComponentEnumerateBuiltInOnly</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.WIC.ComponentSigning\">\n            <summary>\t\n            <p>Specifies the component signing status.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICComponentSigning']/*\"/>\t\n            <msdn-id>ee719817</msdn-id>\t\n            <unmanaged>WICComponentSigning</unmanaged>\t\n            <unmanaged-short>WICComponentSigning</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.ComponentSigning.Signed\">\n            <summary>\t\n            <dd> <p>A signed component.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICComponentSigned']/*\"/>\t\n            <msdn-id>ee719817</msdn-id>\t\n            <unmanaged>WICComponentSigned</unmanaged>\t\n            <unmanaged-short>WICComponentSigned</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.ComponentSigning.Unsigned\">\n            <summary>\t\n            <dd> <p>An unsigned component</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICComponentUnsigned']/*\"/>\t\n            <msdn-id>ee719817</msdn-id>\t\n            <unmanaged>WICComponentUnsigned</unmanaged>\t\n            <unmanaged-short>WICComponentUnsigned</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.ComponentSigning.Safe\">\n            <summary>\t\n            <dd> <p>A component is safe. </p> <p>Components that do not have a binary component to sign, such as a pixel format, should return this value.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICComponentSafe']/*\"/>\t\n            <msdn-id>ee719817</msdn-id>\t\n            <unmanaged>WICComponentSafe</unmanaged>\t\n            <unmanaged-short>WICComponentSafe</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.ComponentSigning.Disabled\">\n            <summary>\t\n            <dd> <p>A component has been disabled.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICComponentDisabled']/*\"/>\t\n            <msdn-id>ee719817</msdn-id>\t\n            <unmanaged>WICComponentDisabled</unmanaged>\t\n            <unmanaged-short>WICComponentDisabled</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.WIC.ComponentType\">\n            <summary>\t\n            <p>Specifies the type of Windows Imaging Component (WIC) component.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICComponentType']/*\"/>\t\n            <msdn-id>ee719818</msdn-id>\t\n            <unmanaged>WICComponentType</unmanaged>\t\n            <unmanaged-short>WICComponentType</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.ComponentType.Decoder\">\n            <summary>\t\n            <dd> <p>A WIC decoder.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICDecoder']/*\"/>\t\n            <msdn-id>ee719818</msdn-id>\t\n            <unmanaged>WICDecoder</unmanaged>\t\n            <unmanaged-short>WICDecoder</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.ComponentType.Encoder\">\n            <summary>\t\n            <dd> <p>A WIC encoder.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICEncoder']/*\"/>\t\n            <msdn-id>ee719818</msdn-id>\t\n            <unmanaged>WICEncoder</unmanaged>\t\n            <unmanaged-short>WICEncoder</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.ComponentType.PixelFormatConverter\">\n            <summary>\t\n            <dd> <p>A WIC pixel converter.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICPixelFormatConverter']/*\"/>\t\n            <msdn-id>ee719818</msdn-id>\t\n            <unmanaged>WICPixelFormatConverter</unmanaged>\t\n            <unmanaged-short>WICPixelFormatConverter</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.ComponentType.MetadataReader\">\n            <summary>\t\n            <dd> <p>A WIC metadata reader.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICMetadataReader']/*\"/>\t\n            <msdn-id>ee719818</msdn-id>\t\n            <unmanaged>WICMetadataReader</unmanaged>\t\n            <unmanaged-short>WICMetadataReader</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.ComponentType.MetadataWriter\">\n            <summary>\t\n            <dd> <p>A WIC metadata writer.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICMetadataWriter']/*\"/>\t\n            <msdn-id>ee719818</msdn-id>\t\n            <unmanaged>WICMetadataWriter</unmanaged>\t\n            <unmanaged-short>WICMetadataWriter</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.ComponentType.PixelFormat\">\n            <summary>\t\n            <dd> <p>A WIC pixel format.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICPixelFormat']/*\"/>\t\n            <msdn-id>ee719818</msdn-id>\t\n            <unmanaged>WICPixelFormat</unmanaged>\t\n            <unmanaged-short>WICPixelFormat</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.ComponentType.AllComponents\">\n            <summary>\t\n            <dd> <p>All WIC components.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICAllComponents']/*\"/>\t\n            <msdn-id>ee719818</msdn-id>\t\n            <unmanaged>WICAllComponents</unmanaged>\t\n            <unmanaged-short>WICAllComponents</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.WIC.DecodeOptions\">\n            <summary>\t\n            <p>Specifies decode options.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICDecodeOptions']/*\"/>\t\n            <msdn-id>ee719824</msdn-id>\t\n            <unmanaged>WICDecodeOptions</unmanaged>\t\n            <unmanaged-short>WICDecodeOptions</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.DecodeOptions.CacheOnDemand\">\n            <summary>\t\n            <dd> <p>Cache metadata when needed.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICDecodeMetadataCacheOnDemand']/*\"/>\t\n            <msdn-id>ee719824</msdn-id>\t\n            <unmanaged>WICDecodeMetadataCacheOnDemand</unmanaged>\t\n            <unmanaged-short>WICDecodeMetadataCacheOnDemand</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.DecodeOptions.CacheOnLoad\">\n            <summary>\t\n            <dd> <p>Cache metadata when decoder is loaded.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICDecodeMetadataCacheOnLoad']/*\"/>\t\n            <msdn-id>ee719824</msdn-id>\t\n            <unmanaged>WICDecodeMetadataCacheOnLoad</unmanaged>\t\n            <unmanaged-short>WICDecodeMetadataCacheOnLoad</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.WIC.GifApplicationExtensionProperties\">\n            <summary>\t\n            <p>Specifies the application extension metadata properties for a Graphics Interchange Format (GIF) image.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICGifApplicationExtensionProperties']/*\"/>\t\n            <msdn-id>ee719826</msdn-id>\t\n            <unmanaged>WICGifApplicationExtensionProperties</unmanaged>\t\n            <unmanaged-short>WICGifApplicationExtensionProperties</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.GifApplicationExtensionProperties.Application\">\n            <summary>\t\n            <dd> <p>[VT_UI1 | VT_VECTOR] Indicates a string that identifies the application.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICGifApplicationExtensionApplication']/*\"/>\t\n            <msdn-id>ee719826</msdn-id>\t\n            <unmanaged>WICGifApplicationExtensionApplication</unmanaged>\t\n            <unmanaged-short>WICGifApplicationExtensionApplication</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.GifApplicationExtensionProperties.Data\">\n            <summary>\t\n            <dd> <p>[VT_UI1 | VT_VECTOR] Indicates data that is exposed by the application.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICGifApplicationExtensionData']/*\"/>\t\n            <msdn-id>ee719826</msdn-id>\t\n            <unmanaged>WICGifApplicationExtensionData</unmanaged>\t\n            <unmanaged-short>WICGifApplicationExtensionData</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.WIC.GifCommentExtensionProperties\">\n            <summary>\t\n            <p>Specifies the comment extension metadata properties for a Graphics Interchange Format (GIF) image.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICGifCommentExtensionProperties']/*\"/>\t\n            <msdn-id>ee719827</msdn-id>\t\n            <unmanaged>WICGifCommentExtensionProperties</unmanaged>\t\n            <unmanaged-short>WICGifCommentExtensionProperties</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.GifCommentExtensionProperties.Text\">\n            <summary>\t\n            <dd> <p>[VT_LPSTR] Indicates the comment text.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICGifCommentExtensionText']/*\"/>\t\n            <msdn-id>ee719827</msdn-id>\t\n            <unmanaged>WICGifCommentExtensionText</unmanaged>\t\n            <unmanaged-short>WICGifCommentExtensionText</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.WIC.GifGraphicControlExtensionProperties\">\n            <summary>\t\n            <p>Specifies the graphic control extension metadata properties that define the transitions between each frame animation for Graphics Interchange Format (GIF) images.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICGifGraphicControlExtensionProperties']/*\"/>\t\n            <msdn-id>ee719828</msdn-id>\t\n            <unmanaged>WICGifGraphicControlExtensionProperties</unmanaged>\t\n            <unmanaged-short>WICGifGraphicControlExtensionProperties</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.GifGraphicControlExtensionProperties.Disposal\">\n            <summary>\t\n            <dd> <p>[VT_UI1] Indicates  the disposal requirements. 0 - no disposal, 1 - do not dispose, 2 - restore to background color, 3 - restore to previous.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICGifGraphicControlExtensionDisposal']/*\"/>\t\n            <msdn-id>ee719828</msdn-id>\t\n            <unmanaged>WICGifGraphicControlExtensionDisposal</unmanaged>\t\n            <unmanaged-short>WICGifGraphicControlExtensionDisposal</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.GifGraphicControlExtensionProperties.UserInputFlag\">\n            <summary>\t\n            <dd> <p>[VT_BOOL] Indicates the user input flag. <strong>TRUE</strong> if user input should advance to the next frame; otherwise, <strong><see cref=\"F:SharpDX.Result.False\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICGifGraphicControlExtensionUserInputFlag']/*\"/>\t\n            <msdn-id>ee719828</msdn-id>\t\n            <unmanaged>WICGifGraphicControlExtensionUserInputFlag</unmanaged>\t\n            <unmanaged-short>WICGifGraphicControlExtensionUserInputFlag</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.GifGraphicControlExtensionProperties.TransparencyFlag\">\n            <summary>\t\n            <dd> <p>[VT_BOOL] Indicates the transparency flag. <strong>TRUE</strong> if a transparent color in is in the color table for this frame; otherwise, <strong><see cref=\"F:SharpDX.Result.False\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICGifGraphicControlExtensionTransparencyFlag']/*\"/>\t\n            <msdn-id>ee719828</msdn-id>\t\n            <unmanaged>WICGifGraphicControlExtensionTransparencyFlag</unmanaged>\t\n            <unmanaged-short>WICGifGraphicControlExtensionTransparencyFlag</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.GifGraphicControlExtensionProperties.Delay\">\n            <summary>\t\n            <dd> <p>[VT_UI2] Indicates  how long to display the next frame before advancing to the next frame, in units of 1/100th of a second.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICGifGraphicControlExtensionDelay']/*\"/>\t\n            <msdn-id>ee719828</msdn-id>\t\n            <unmanaged>WICGifGraphicControlExtensionDelay</unmanaged>\t\n            <unmanaged-short>WICGifGraphicControlExtensionDelay</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.GifGraphicControlExtensionProperties.TransparentColorIndex\">\n            <summary>\t\n            <dd> <p>[VT_UI1] Indicates which color in the palette should be treated as transparent.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICGifGraphicControlExtensionTransparentColorIndex']/*\"/>\t\n            <msdn-id>ee719828</msdn-id>\t\n            <unmanaged>WICGifGraphicControlExtensionTransparentColorIndex</unmanaged>\t\n            <unmanaged-short>WICGifGraphicControlExtensionTransparentColorIndex</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.WIC.GifImageDescriptorProperties\">\n            <summary>\t\n            <p>Specifies the image descriptor metadata properties for  Graphics Interchange Format (GIF) frames.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICGifImageDescriptorProperties']/*\"/>\t\n            <msdn-id>ee719829</msdn-id>\t\n            <unmanaged>WICGifImageDescriptorProperties</unmanaged>\t\n            <unmanaged-short>WICGifImageDescriptorProperties</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.GifImageDescriptorProperties.Left\">\n            <summary>\t\n            <dd> <p>[VT_UI2] Indicates the X offset at which to locate this frame within the logical screen.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICGifImageDescriptorLeft']/*\"/>\t\n            <msdn-id>ee719829</msdn-id>\t\n            <unmanaged>WICGifImageDescriptorLeft</unmanaged>\t\n            <unmanaged-short>WICGifImageDescriptorLeft</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.GifImageDescriptorProperties.Top\">\n            <summary>\t\n            <dd> <p>[VT_UI2] Indicates the Y offset at which to locate this frame within the logical screen.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICGifImageDescriptorTop']/*\"/>\t\n            <msdn-id>ee719829</msdn-id>\t\n            <unmanaged>WICGifImageDescriptorTop</unmanaged>\t\n            <unmanaged-short>WICGifImageDescriptorTop</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.GifImageDescriptorProperties.Width\">\n            <summary>\t\n            <dd> <p>[VT_UI2] Indicates width of this frame, in pixels.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICGifImageDescriptorWidth']/*\"/>\t\n            <msdn-id>ee719829</msdn-id>\t\n            <unmanaged>WICGifImageDescriptorWidth</unmanaged>\t\n            <unmanaged-short>WICGifImageDescriptorWidth</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.GifImageDescriptorProperties.Height\">\n            <summary>\t\n            <dd> <p>[VT_UI2] Indicates height of this frame, in pixels.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICGifImageDescriptorHeight']/*\"/>\t\n            <msdn-id>ee719829</msdn-id>\t\n            <unmanaged>WICGifImageDescriptorHeight</unmanaged>\t\n            <unmanaged-short>WICGifImageDescriptorHeight</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.GifImageDescriptorProperties.LocalColorTableFlag\">\n            <summary>\t\n            <dd> <p>[VT_BOOL] Indicates the local color table flag. <strong>TRUE</strong> if global color table is present; otherwise, <strong><see cref=\"F:SharpDX.Result.False\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICGifImageDescriptorLocalColorTableFlag']/*\"/>\t\n            <msdn-id>ee719829</msdn-id>\t\n            <unmanaged>WICGifImageDescriptorLocalColorTableFlag</unmanaged>\t\n            <unmanaged-short>WICGifImageDescriptorLocalColorTableFlag</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.GifImageDescriptorProperties.InterlaceFlag\">\n            <summary>\t\n            <dd> <p>[VT_BOOL] Indicates the interlace flag. <strong>TRUE</strong> if image is interlaced; otherwise, <strong><see cref=\"F:SharpDX.Result.False\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICGifImageDescriptorInterlaceFlag']/*\"/>\t\n            <msdn-id>ee719829</msdn-id>\t\n            <unmanaged>WICGifImageDescriptorInterlaceFlag</unmanaged>\t\n            <unmanaged-short>WICGifImageDescriptorInterlaceFlag</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.GifImageDescriptorProperties.SortFlag\">\n            <summary>\t\n            <dd> <p>[VT_BOOL] Indicates the sorted color table flag. <strong>TRUE</strong> if the color table is sorted from most frequently to least frequently used color; otherwise, <strong><see cref=\"F:SharpDX.Result.False\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICGifImageDescriptorSortFlag']/*\"/>\t\n            <msdn-id>ee719829</msdn-id>\t\n            <unmanaged>WICGifImageDescriptorSortFlag</unmanaged>\t\n            <unmanaged-short>WICGifImageDescriptorSortFlag</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.GifImageDescriptorProperties.LocalColorTableSize\">\n            <summary>\t\n            <dd> <p>[VT_UI1] Indicates the value used to calculate the number of bytes contained in the global color table. </p> <p>To calculate the actual size of the color table, raise 2 to the value of the field + 1.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICGifImageDescriptorLocalColorTableSize']/*\"/>\t\n            <msdn-id>ee719829</msdn-id>\t\n            <unmanaged>WICGifImageDescriptorLocalColorTableSize</unmanaged>\t\n            <unmanaged-short>WICGifImageDescriptorLocalColorTableSize</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.WIC.GifLogicalScreenDescriptorProperties\">\n            <summary>\t\n            <p>Specifies the logical screen descriptor properties for Graphics Interchange Format (GIF) metadata.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICGifLogicalScreenDescriptorProperties']/*\"/>\t\n            <msdn-id>ee719830</msdn-id>\t\n            <unmanaged>WICGifLogicalScreenDescriptorProperties</unmanaged>\t\n            <unmanaged-short>WICGifLogicalScreenDescriptorProperties</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.GifLogicalScreenDescriptorProperties.Signature\">\n            <summary>\t\n            <dd> <p> [VT_UI1 | VT_VECTOR] Indicates the signature property.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICGifLogicalScreenSignature']/*\"/>\t\n            <msdn-id>ee719830</msdn-id>\t\n            <unmanaged>WICGifLogicalScreenSignature</unmanaged>\t\n            <unmanaged-short>WICGifLogicalScreenSignature</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.GifLogicalScreenDescriptorProperties.Width\">\n            <summary>\t\n            <dd> <p>[VT_UI2] Indicates the width in pixels. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICGifLogicalScreenDescriptorWidth']/*\"/>\t\n            <msdn-id>ee719830</msdn-id>\t\n            <unmanaged>WICGifLogicalScreenDescriptorWidth</unmanaged>\t\n            <unmanaged-short>WICGifLogicalScreenDescriptorWidth</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.GifLogicalScreenDescriptorProperties.Height\">\n            <summary>\t\n            <dd> <p>[VT_UI2] Indicates the height in pixels. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICGifLogicalScreenDescriptorHeight']/*\"/>\t\n            <msdn-id>ee719830</msdn-id>\t\n            <unmanaged>WICGifLogicalScreenDescriptorHeight</unmanaged>\t\n            <unmanaged-short>WICGifLogicalScreenDescriptorHeight</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.GifLogicalScreenDescriptorProperties.GlobalColorTableFlag\">\n            <summary>\t\n            <dd> <p>[VT_BOOL] Indicates the  global color table flag. <strong>TRUE</strong> if a global color table is present; otherwise, <strong><see cref=\"F:SharpDX.Result.False\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICGifLogicalScreenDescriptorGlobalColorTableFlag']/*\"/>\t\n            <msdn-id>ee719830</msdn-id>\t\n            <unmanaged>WICGifLogicalScreenDescriptorGlobalColorTableFlag</unmanaged>\t\n            <unmanaged-short>WICGifLogicalScreenDescriptorGlobalColorTableFlag</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.GifLogicalScreenDescriptorProperties.ColorResolution\">\n            <summary>\t\n            <dd> <p>[VT_UI1] Indicates the color resolution in bits per pixel.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICGifLogicalScreenDescriptorColorResolution']/*\"/>\t\n            <msdn-id>ee719830</msdn-id>\t\n            <unmanaged>WICGifLogicalScreenDescriptorColorResolution</unmanaged>\t\n            <unmanaged-short>WICGifLogicalScreenDescriptorColorResolution</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.GifLogicalScreenDescriptorProperties.SortFlag\">\n            <summary>\t\n            <dd> <p>[VT_BOOL] Indicates the sorted color table flag. <strong>TRUE</strong> if the table is sorted; otherwise, <strong><see cref=\"F:SharpDX.Result.False\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICGifLogicalScreenDescriptorSortFlag']/*\"/>\t\n            <msdn-id>ee719830</msdn-id>\t\n            <unmanaged>WICGifLogicalScreenDescriptorSortFlag</unmanaged>\t\n            <unmanaged-short>WICGifLogicalScreenDescriptorSortFlag</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.GifLogicalScreenDescriptorProperties.GlobalColorTableSize\">\n            <summary>\t\n            <dd> <p>[VT_UI1] Indicates the value used to calculate the number of bytes contained in the global color table. </p> <p>To calculate the actual size of the color table, raise 2 to the value of the field + 1.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICGifLogicalScreenDescriptorGlobalColorTableSize']/*\"/>\t\n            <msdn-id>ee719830</msdn-id>\t\n            <unmanaged>WICGifLogicalScreenDescriptorGlobalColorTableSize</unmanaged>\t\n            <unmanaged-short>WICGifLogicalScreenDescriptorGlobalColorTableSize</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.GifLogicalScreenDescriptorProperties.BackgroundColorIndex\">\n            <summary>\t\n            <dd> <p>[VT_UI1] Indicates the index within the color table to use for the background (pixels not defined in the image).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICGifLogicalScreenDescriptorBackgroundColorIndex']/*\"/>\t\n            <msdn-id>ee719830</msdn-id>\t\n            <unmanaged>WICGifLogicalScreenDescriptorBackgroundColorIndex</unmanaged>\t\n            <unmanaged-short>WICGifLogicalScreenDescriptorBackgroundColorIndex</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.GifLogicalScreenDescriptorProperties.PixelAspectRatio\">\n            <summary>\t\n            <dd> <p>[VT_UI1] Indicates the factor used to compute an approximation of the aspect ratio.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICGifLogicalScreenDescriptorPixelAspectRatio']/*\"/>\t\n            <msdn-id>ee719830</msdn-id>\t\n            <unmanaged>WICGifLogicalScreenDescriptorPixelAspectRatio</unmanaged>\t\n            <unmanaged-short>WICGifLogicalScreenDescriptorPixelAspectRatio</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.WIC.JpegCommentProperties\">\n            <summary>\t\n            <p>Specifies the JPEG comment properties.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICJpegCommentProperties']/*\"/>\t\n            <msdn-id>ee719832</msdn-id>\t\n            <unmanaged>WICJpegCommentProperties</unmanaged>\t\n            <unmanaged-short>WICJpegCommentProperties</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.JpegCommentProperties.Text\">\n            <summary>\t\n            <dd> <p>Indicates the metadata property is comment text.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICJpegCommentText']/*\"/>\t\n            <msdn-id>ee719832</msdn-id>\t\n            <unmanaged>WICJpegCommentText</unmanaged>\t\n            <unmanaged-short>WICJpegCommentText</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.WIC.JpegChrominanceProperties\">\n            <summary>\t\n            <p>Specifies the JPEG chrominance table property.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICJpegChrominanceProperties']/*\"/>\t\n            <msdn-id>ee719831</msdn-id>\t\n            <unmanaged>WICJpegChrominanceProperties</unmanaged>\t\n            <unmanaged-short>WICJpegChrominanceProperties</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.JpegChrominanceProperties.Table\">\n            <summary>\t\n            <dd> <p>[VT_UI2|VT_VECTOR] Indicates the metadata property is a chrominance table.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICJpegChrominanceTable']/*\"/>\t\n            <msdn-id>ee719831</msdn-id>\t\n            <unmanaged>WICJpegChrominanceTable</unmanaged>\t\n            <unmanaged-short>WICJpegChrominanceTable</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.WIC.JpegLuminanceProperties\">\n            <summary>\t\n            <p>Specifies the JPEG luminance table property.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICJpegLuminanceProperties']/*\"/>\t\n            <msdn-id>ee719833</msdn-id>\t\n            <unmanaged>WICJpegLuminanceProperties</unmanaged>\t\n            <unmanaged-short>WICJpegLuminanceProperties</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.JpegLuminanceProperties.Table\">\n            <summary>\t\n            <dd> <p>[VT_UI2|VT_VECTOR] Indicates the metadata property is a luminance table.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICJpegLuminanceTable']/*\"/>\t\n            <msdn-id>ee719833</msdn-id>\t\n            <unmanaged>WICJpegLuminanceTable</unmanaged>\t\n            <unmanaged-short>WICJpegLuminanceTable</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.WIC.JpegYCrCbSubsamplingOption\">\n            <summary>\t\n            <p>Specifies the JPEG YCrCB subsampling options. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The native JPEG encoder uses <strong><see cref=\"F:SharpDX.WIC.JpegYCrCbSubsamplingOption.Mode420\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICJpegYCrCbSubsamplingOption']/*\"/>\t\n            <msdn-id>ee719834</msdn-id>\t\n            <unmanaged>WICJpegYCrCbSubsamplingOption</unmanaged>\t\n            <unmanaged-short>WICJpegYCrCbSubsamplingOption</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.JpegYCrCbSubsamplingOption.Default\">\n            <summary>\t\n            <dd> <p>The default subsampling option. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICJpegYCrCbSubsamplingDefault']/*\"/>\t\n            <msdn-id>ee719834</msdn-id>\t\n            <unmanaged>WICJpegYCrCbSubsamplingDefault</unmanaged>\t\n            <unmanaged-short>WICJpegYCrCbSubsamplingDefault</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.JpegYCrCbSubsamplingOption.Mode420\">\n            <summary>\t\n            <dd> <p>Subsampling option that uses both horizontal and vertical decimation.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICJpegYCrCbSubsampling420']/*\"/>\t\n            <msdn-id>ee719834</msdn-id>\t\n            <unmanaged>WICJpegYCrCbSubsampling420</unmanaged>\t\n            <unmanaged-short>WICJpegYCrCbSubsampling420</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.JpegYCrCbSubsamplingOption.Mode422\">\n            <summary>\t\n            <dd> <p>Subsampling option that uses horizontal decimation  .</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICJpegYCrCbSubsampling422']/*\"/>\t\n            <msdn-id>ee719834</msdn-id>\t\n            <unmanaged>WICJpegYCrCbSubsampling422</unmanaged>\t\n            <unmanaged-short>WICJpegYCrCbSubsampling422</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.JpegYCrCbSubsamplingOption.Mode444\">\n            <summary>\t\n            <dd> <p>Subsampling option that uses no decimation.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICJpegYCrCbSubsampling444']/*\"/>\t\n            <msdn-id>ee719834</msdn-id>\t\n            <unmanaged>WICJpegYCrCbSubsampling444</unmanaged>\t\n            <unmanaged-short>WICJpegYCrCbSubsampling444</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.WIC.NamedWhitePoint\">\n            <summary>\t\n            <p>Specifies named white balances for raw images.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICNamedWhitePoint']/*\"/>\t\n            <msdn-id>ee719842</msdn-id>\t\n            <unmanaged>WICNamedWhitePoint</unmanaged>\t\n            <unmanaged-short>WICNamedWhitePoint</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.NamedWhitePoint.Default\">\n            <summary>\t\n            <dd> <p>The default white balance.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICWhitePointDefault']/*\"/>\t\n            <msdn-id>ee719842</msdn-id>\t\n            <unmanaged>WICWhitePointDefault</unmanaged>\t\n            <unmanaged-short>WICWhitePointDefault</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.NamedWhitePoint.Daylight\">\n            <summary>\t\n            <dd> <p>A daylight white balance.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICWhitePointDaylight']/*\"/>\t\n            <msdn-id>ee719842</msdn-id>\t\n            <unmanaged>WICWhitePointDaylight</unmanaged>\t\n            <unmanaged-short>WICWhitePointDaylight</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.NamedWhitePoint.Cloudy\">\n            <summary>\t\n            <dd> <p>A cloudy white balance.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICWhitePointCloudy']/*\"/>\t\n            <msdn-id>ee719842</msdn-id>\t\n            <unmanaged>WICWhitePointCloudy</unmanaged>\t\n            <unmanaged-short>WICWhitePointCloudy</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.NamedWhitePoint.Shade\">\n            <summary>\t\n            <dd> <p>A shade white balance.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICWhitePointShade']/*\"/>\t\n            <msdn-id>ee719842</msdn-id>\t\n            <unmanaged>WICWhitePointShade</unmanaged>\t\n            <unmanaged-short>WICWhitePointShade</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.NamedWhitePoint.Tungsten\">\n            <summary>\t\n            <dd> <p>A tungsten white balance.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICWhitePointTungsten']/*\"/>\t\n            <msdn-id>ee719842</msdn-id>\t\n            <unmanaged>WICWhitePointTungsten</unmanaged>\t\n            <unmanaged-short>WICWhitePointTungsten</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.NamedWhitePoint.Fluorescent\">\n            <summary>\t\n            <dd> <p>A fluorescent white balance.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICWhitePointFluorescent']/*\"/>\t\n            <msdn-id>ee719842</msdn-id>\t\n            <unmanaged>WICWhitePointFluorescent</unmanaged>\t\n            <unmanaged-short>WICWhitePointFluorescent</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.NamedWhitePoint.Flash\">\n            <summary>\t\n            <dd> <p>Daylight white balance.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICWhitePointFlash']/*\"/>\t\n            <msdn-id>ee719842</msdn-id>\t\n            <unmanaged>WICWhitePointFlash</unmanaged>\t\n            <unmanaged-short>WICWhitePointFlash</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.NamedWhitePoint.Underwater\">\n            <summary>\t\n            <dd> <p>A flash white balance.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICWhitePointUnderwater']/*\"/>\t\n            <msdn-id>ee719842</msdn-id>\t\n            <unmanaged>WICWhitePointUnderwater</unmanaged>\t\n            <unmanaged-short>WICWhitePointUnderwater</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.NamedWhitePoint.Custom\">\n            <summary>\t\n            <dd> <p>A custom white balance. This is typically used when using a picture (grey-card) as white balance.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICWhitePointCustom']/*\"/>\t\n            <msdn-id>ee719842</msdn-id>\t\n            <unmanaged>WICWhitePointCustom</unmanaged>\t\n            <unmanaged-short>WICWhitePointCustom</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.NamedWhitePoint.AutoWhiteBalance\">\n            <summary>\t\n            <dd> <p>An automatic balance.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICWhitePointAutoWhiteBalance']/*\"/>\t\n            <msdn-id>ee719842</msdn-id>\t\n            <unmanaged>WICWhitePointAutoWhiteBalance</unmanaged>\t\n            <unmanaged-short>WICWhitePointAutoWhiteBalance</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.NamedWhitePoint.AsShot\">\n            <summary>\t\n            <dd> <p>An \"as shot\" white balance.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICWhitePointAsShot']/*\"/>\t\n            <msdn-id>ee719842</msdn-id>\t\n            <unmanaged>WICWhitePointAsShot</unmanaged>\t\n            <unmanaged-short>WICWhitePointAsShot</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.WIC.PixelFormatNumericRepresentation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICPixelFormatNumericRepresentation']/*\"/>\t\n            <msdn-id>ee719844</msdn-id>\t\n            <unmanaged>WICPixelFormatNumericRepresentation</unmanaged>\t\n            <unmanaged-short>WICPixelFormatNumericRepresentation</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.PixelFormatNumericRepresentation.Unspecified\">\n            <summary>\t\n            <dd></dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICPixelFormatNumericRepresentationUnspecified']/*\"/>\t\n            <msdn-id>ee719844</msdn-id>\t\n            <unmanaged>WICPixelFormatNumericRepresentationUnspecified</unmanaged>\t\n            <unmanaged-short>WICPixelFormatNumericRepresentationUnspecified</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.PixelFormatNumericRepresentation.Indexed\">\n            <summary>\t\n            <dd></dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICPixelFormatNumericRepresentationIndexed']/*\"/>\t\n            <msdn-id>ee719844</msdn-id>\t\n            <unmanaged>WICPixelFormatNumericRepresentationIndexed</unmanaged>\t\n            <unmanaged-short>WICPixelFormatNumericRepresentationIndexed</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.PixelFormatNumericRepresentation.UnsignedInteger\">\n            <summary>\t\n            <dd></dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICPixelFormatNumericRepresentationUnsignedInteger']/*\"/>\t\n            <msdn-id>ee719844</msdn-id>\t\n            <unmanaged>WICPixelFormatNumericRepresentationUnsignedInteger</unmanaged>\t\n            <unmanaged-short>WICPixelFormatNumericRepresentationUnsignedInteger</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.PixelFormatNumericRepresentation.SignedInteger\">\n            <summary>\t\n            <dd></dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICPixelFormatNumericRepresentationSignedInteger']/*\"/>\t\n            <msdn-id>ee719844</msdn-id>\t\n            <unmanaged>WICPixelFormatNumericRepresentationSignedInteger</unmanaged>\t\n            <unmanaged-short>WICPixelFormatNumericRepresentationSignedInteger</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.PixelFormatNumericRepresentation.Fixed\">\n            <summary>\t\n            <dd></dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICPixelFormatNumericRepresentationFixed']/*\"/>\t\n            <msdn-id>ee719844</msdn-id>\t\n            <unmanaged>WICPixelFormatNumericRepresentationFixed</unmanaged>\t\n            <unmanaged-short>WICPixelFormatNumericRepresentationFixed</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.PixelFormatNumericRepresentation.Float\">\n            <summary>\t\n            <dd></dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICPixelFormatNumericRepresentationFloat']/*\"/>\t\n            <msdn-id>ee719844</msdn-id>\t\n            <unmanaged>WICPixelFormatNumericRepresentationFloat</unmanaged>\t\n            <unmanaged-short>WICPixelFormatNumericRepresentationFloat</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.WIC.PngBkgdProperties\">\n            <summary>\t\n            <p>Specifies the Portable Network Graphics (PNG) background (bKGD) chunk metadata properties.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICPngBkgdProperties']/*\"/>\t\n            <msdn-id>ee719845</msdn-id>\t\n            <unmanaged>WICPngBkgdProperties</unmanaged>\t\n            <unmanaged-short>WICPngBkgdProperties</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.PngBkgdProperties.Color\">\n            <summary>\t\n            <dd> <p>Indicates the background color. There are three possible types, depending on the image's pixel format.</p> <p></p> <dl> <dt>VT_UI1</dt> <dd> <p>Specifies the index of the background color in an image with an indexed pixel format.</p> </dd> <dt>VT_UI2</dt> <dd> <p>Specifies the background color in a grayscale image.</p> </dd> <dt>VT_VECTOR|VT_UI2</dt> <dd> <p>Specifies the background color in an RGB image as three USHORT values: {0x<em>RRRR</em>, 0x<em>GGGG</em>, 0x<em>BBBB</em>}.</p> </dd> </dl> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICPngBkgdBackgroundColor']/*\"/>\t\n            <msdn-id>ee719845</msdn-id>\t\n            <unmanaged>WICPngBkgdBackgroundColor</unmanaged>\t\n            <unmanaged-short>WICPngBkgdBackgroundColor</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.WIC.PngFilterOption\">\n            <summary>\t\n            <p>Specifies the Portable Network Graphics (PNG) filters available for compression optimization.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICPngFilterOption']/*\"/>\t\n            <msdn-id>ee719847</msdn-id>\t\n            <unmanaged>WICPngFilterOption</unmanaged>\t\n            <unmanaged-short>WICPngFilterOption</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.PngFilterOption.Unspecified\">\n            <summary>\t\n            <dd> <p>Indicates an unspecified PNG filter. This enables WIC to algorithmically choose the best filtering option for the image.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICPngFilterUnspecified']/*\"/>\t\n            <msdn-id>ee719847</msdn-id>\t\n            <unmanaged>WICPngFilterUnspecified</unmanaged>\t\n            <unmanaged-short>WICPngFilterUnspecified</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.PngFilterOption.None\">\n            <summary>\t\n            <dd> <p>Indicates no PNG filter.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICPngFilterNone']/*\"/>\t\n            <msdn-id>ee719847</msdn-id>\t\n            <unmanaged>WICPngFilterNone</unmanaged>\t\n            <unmanaged-short>WICPngFilterNone</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.PngFilterOption.Sub\">\n            <summary>\t\n            <dd> <p>Indicates a PNG sub filter.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICPngFilterSub']/*\"/>\t\n            <msdn-id>ee719847</msdn-id>\t\n            <unmanaged>WICPngFilterSub</unmanaged>\t\n            <unmanaged-short>WICPngFilterSub</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.PngFilterOption.Up\">\n            <summary>\t\n            <dd> <p>Indicates a PNG up filter.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICPngFilterUp']/*\"/>\t\n            <msdn-id>ee719847</msdn-id>\t\n            <unmanaged>WICPngFilterUp</unmanaged>\t\n            <unmanaged-short>WICPngFilterUp</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.PngFilterOption.Average\">\n            <summary>\t\n            <dd> <p>Indicates a PNG average filter.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICPngFilterAverage']/*\"/>\t\n            <msdn-id>ee719847</msdn-id>\t\n            <unmanaged>WICPngFilterAverage</unmanaged>\t\n            <unmanaged-short>WICPngFilterAverage</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.PngFilterOption.Paeth\">\n            <summary>\t\n            <dd> <p>Indicates a PNG paeth filter.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICPngFilterPaeth']/*\"/>\t\n            <msdn-id>ee719847</msdn-id>\t\n            <unmanaged>WICPngFilterPaeth</unmanaged>\t\n            <unmanaged-short>WICPngFilterPaeth</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.PngFilterOption.Adaptive\">\n            <summary>\t\n            <dd> <p>Indicates a PNG adaptive filter. This enables WIC to choose the best filtering mode on a per-scanline basis.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICPngFilterAdaptive']/*\"/>\t\n            <msdn-id>ee719847</msdn-id>\t\n            <unmanaged>WICPngFilterAdaptive</unmanaged>\t\n            <unmanaged-short>WICPngFilterAdaptive</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.WIC.PngGamaProperties\">\n            <summary>\t\n            <p>Specifies the Portable Network Graphics (PNG) gAMA chunk metadata properties.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICPngGamaProperties']/*\"/>\t\n            <msdn-id>ee719848</msdn-id>\t\n            <unmanaged>WICPngGamaProperties</unmanaged>\t\n            <unmanaged-short>WICPngGamaProperties</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.PngGamaProperties.Gamma\">\n            <summary>\t\n            <dd> <p>[VT_UI4] Indicates the gamma value.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICPngGamaGamma']/*\"/>\t\n            <msdn-id>ee719848</msdn-id>\t\n            <unmanaged>WICPngGamaGamma</unmanaged>\t\n            <unmanaged-short>WICPngGamaGamma</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.WIC.PngHistProperties\">\n            <summary>\t\n            <p>Specifies the Portable Network Graphics (PNG) hIST chunk metadata properties.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICPngHistProperties']/*\"/>\t\n            <msdn-id>ee719849</msdn-id>\t\n            <unmanaged>WICPngHistProperties</unmanaged>\t\n            <unmanaged-short>WICPngHistProperties</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.PngHistProperties.Frequencies\">\n            <summary>\t\n            <dd> <p>[VT_VECTOR | VT_UI2] Indicates the approximate usage frequency of each color in the color palette. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICPngHistFrequencies']/*\"/>\t\n            <msdn-id>ee719849</msdn-id>\t\n            <unmanaged>WICPngHistFrequencies</unmanaged>\t\n            <unmanaged-short>WICPngHistFrequencies</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.WIC.PngChrmProperties\">\n            <summary>\t\n            <p>Specifies the Portable Network Graphics (PNG) cHRM chunk metadata properties for CIE XYZ chromaticity.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICPngChrmProperties']/*\"/>\t\n            <msdn-id>ee719846</msdn-id>\t\n            <unmanaged>WICPngChrmProperties</unmanaged>\t\n            <unmanaged-short>WICPngChrmProperties</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.PngChrmProperties.WhitePointX\">\n            <summary>\t\n            <dd> <p>[VT_UI4] Indicates the whitepoint x value ratio.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICPngChrmWhitePointX']/*\"/>\t\n            <msdn-id>ee719846</msdn-id>\t\n            <unmanaged>WICPngChrmWhitePointX</unmanaged>\t\n            <unmanaged-short>WICPngChrmWhitePointX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.PngChrmProperties.WhitePointY\">\n            <summary>\t\n            <dd> <p>[VT_UI4] Indicates the whitepoint y value ratio.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICPngChrmWhitePointY']/*\"/>\t\n            <msdn-id>ee719846</msdn-id>\t\n            <unmanaged>WICPngChrmWhitePointY</unmanaged>\t\n            <unmanaged-short>WICPngChrmWhitePointY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.PngChrmProperties.RedX\">\n            <summary>\t\n            <dd> <p>[VT_UI4] Indicates the red x value ratio.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICPngChrmRedX']/*\"/>\t\n            <msdn-id>ee719846</msdn-id>\t\n            <unmanaged>WICPngChrmRedX</unmanaged>\t\n            <unmanaged-short>WICPngChrmRedX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.PngChrmProperties.RedY\">\n            <summary>\t\n            <dd> <p>[VT_UI4] Indicates the red y value ratio.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICPngChrmRedY']/*\"/>\t\n            <msdn-id>ee719846</msdn-id>\t\n            <unmanaged>WICPngChrmRedY</unmanaged>\t\n            <unmanaged-short>WICPngChrmRedY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.PngChrmProperties.GreenX\">\n            <summary>\t\n            <dd> <p>[VT_UI4] Indicates the green x value ratio.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICPngChrmGreenX']/*\"/>\t\n            <msdn-id>ee719846</msdn-id>\t\n            <unmanaged>WICPngChrmGreenX</unmanaged>\t\n            <unmanaged-short>WICPngChrmGreenX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.PngChrmProperties.GreenY\">\n            <summary>\t\n            <dd> <p>[VT_UI4] Indicates the green y value ratio.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICPngChrmGreenY']/*\"/>\t\n            <msdn-id>ee719846</msdn-id>\t\n            <unmanaged>WICPngChrmGreenY</unmanaged>\t\n            <unmanaged-short>WICPngChrmGreenY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.PngChrmProperties.BlueX\">\n            <summary>\t\n            <dd> <p>[VT_UI4] Indicates the blue x value ratio.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICPngChrmBlueX']/*\"/>\t\n            <msdn-id>ee719846</msdn-id>\t\n            <unmanaged>WICPngChrmBlueX</unmanaged>\t\n            <unmanaged-short>WICPngChrmBlueX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.PngChrmProperties.BlueY\">\n            <summary>\t\n            <dd> <p>[VT_UI4] Indicates the blue y value ratio.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICPngChrmBlueY']/*\"/>\t\n            <msdn-id>ee719846</msdn-id>\t\n            <unmanaged>WICPngChrmBlueY</unmanaged>\t\n            <unmanaged-short>WICPngChrmBlueY</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.WIC.PngIccpProperties\">\n            <summary>\t\n            <p>Specifies the Portable Network Graphics (PNG) iCCP chunk metadata properties.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICPngIccpProperties']/*\"/>\t\n            <msdn-id>ee719850</msdn-id>\t\n            <unmanaged>WICPngIccpProperties</unmanaged>\t\n            <unmanaged-short>WICPngIccpProperties</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.PngIccpProperties.ProfileName\">\n            <summary>\t\n            <dd> <p>[VT_LPSTR] Indicates the International Color Consortium (ICC) profile name.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICPngIccpProfileName']/*\"/>\t\n            <msdn-id>ee719850</msdn-id>\t\n            <unmanaged>WICPngIccpProfileName</unmanaged>\t\n            <unmanaged-short>WICPngIccpProfileName</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.PngIccpProperties.ProfileData\">\n            <summary>\t\n            <dd> <p>[VT_VECTOR | VT_UI1] Indicates the embedded ICC profile.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICPngIccpProfileData']/*\"/>\t\n            <msdn-id>ee719850</msdn-id>\t\n            <unmanaged>WICPngIccpProfileData</unmanaged>\t\n            <unmanaged-short>WICPngIccpProfileData</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.WIC.PngItxtProperties\">\n            <summary>\t\n            <p>Specifies the Portable Network Graphics (PNG) iTXT chunk metadata properties.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICPngItxtProperties']/*\"/>\t\n            <msdn-id>ee719851</msdn-id>\t\n            <unmanaged>WICPngItxtProperties</unmanaged>\t\n            <unmanaged-short>WICPngItxtProperties</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.PngItxtProperties.Keyword\">\n            <summary>\t\n            <dd> <p>[VT_LPSTR] Indicates the keywords in the iTXT metadata chunk.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICPngItxtKeyword']/*\"/>\t\n            <msdn-id>ee719851</msdn-id>\t\n            <unmanaged>WICPngItxtKeyword</unmanaged>\t\n            <unmanaged-short>WICPngItxtKeyword</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.PngItxtProperties.CompressionFlag\">\n            <summary>\t\n            <dd> <p>[VT_UI1] Indicates whether the text in the iTXT chunk is compressed. 1 if the text is compressed; otherwise, 0.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICPngItxtCompressionFlag']/*\"/>\t\n            <msdn-id>ee719851</msdn-id>\t\n            <unmanaged>WICPngItxtCompressionFlag</unmanaged>\t\n            <unmanaged-short>WICPngItxtCompressionFlag</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.PngItxtProperties.LanguageTag\">\n            <summary>\t\n            <dd> <p>[VT_LPSTR] Indicates the human language used by the translated keyword and the text.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICPngItxtLanguageTag']/*\"/>\t\n            <msdn-id>ee719851</msdn-id>\t\n            <unmanaged>WICPngItxtLanguageTag</unmanaged>\t\n            <unmanaged-short>WICPngItxtLanguageTag</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.PngItxtProperties.TranslatedKeyword\">\n            <summary>\t\n            <dd> <p>[VT_LPWSTR] Indicates a translation of the keyword into the language indicated by the language tag.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICPngItxtTranslatedKeyword']/*\"/>\t\n            <msdn-id>ee719851</msdn-id>\t\n            <unmanaged>WICPngItxtTranslatedKeyword</unmanaged>\t\n            <unmanaged-short>WICPngItxtTranslatedKeyword</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.PngItxtProperties.Text\">\n            <summary>\t\n            <dd> <p>[VT_LPWSTR] Indicates additional text in the iTXT metadata chunk.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICPngItxtText']/*\"/>\t\n            <msdn-id>ee719851</msdn-id>\t\n            <unmanaged>WICPngItxtText</unmanaged>\t\n            <unmanaged-short>WICPngItxtText</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.WIC.PngSrgbProperties\">\n            <summary>\t\n            <p>Specifies the Portable Network Graphics (PNG) sRGB chunk metadata properties.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICPngSrgbProperties']/*\"/>\t\n            <msdn-id>ee719852</msdn-id>\t\n            <unmanaged>WICPngSrgbProperties</unmanaged>\t\n            <unmanaged-short>WICPngSrgbProperties</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.PngSrgbProperties.RenderingIntent\">\n            <summary>\t\n            <dd> <p>[VT_UI1] Indicates the rendering intent for an sRGB color space image. The rendering intents have the following meaning.</p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td>0</td><td>Perceptual</td></tr> <tr><td>1</td><td>Relative colorimetric</td></tr> <tr><td>2</td><td>Saturation</td></tr> <tr><td>3</td><td>Absolute colorimetric</td></tr> </table> <p>?</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICPngSrgbRenderingIntent']/*\"/>\t\n            <msdn-id>ee719852</msdn-id>\t\n            <unmanaged>WICPngSrgbRenderingIntent</unmanaged>\t\n            <unmanaged-short>WICPngSrgbRenderingIntent</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.WIC.PngTimeProperties\">\n            <summary>\t\n            <p>Specifies the Portable Network Graphics (PNG) tIME chunk metadata properties.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICPngTimeProperties']/*\"/>\t\n            <msdn-id>ee719853</msdn-id>\t\n            <unmanaged>WICPngTimeProperties</unmanaged>\t\n            <unmanaged-short>WICPngTimeProperties</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.PngTimeProperties.Year\">\n            <summary>\t\n            <dd> <p>[VT_UI2] Indicates the year of the last modification.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICPngTimeYear']/*\"/>\t\n            <msdn-id>ee719853</msdn-id>\t\n            <unmanaged>WICPngTimeYear</unmanaged>\t\n            <unmanaged-short>WICPngTimeYear</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.PngTimeProperties.Month\">\n            <summary>\t\n            <dd> <p>[VT_UI1] Indicates the month of the last modification.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICPngTimeMonth']/*\"/>\t\n            <msdn-id>ee719853</msdn-id>\t\n            <unmanaged>WICPngTimeMonth</unmanaged>\t\n            <unmanaged-short>WICPngTimeMonth</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.PngTimeProperties.Day\">\n            <summary>\t\n            <dd> <p>[VT_UI1] Indicates day of the last modification.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICPngTimeDay']/*\"/>\t\n            <msdn-id>ee719853</msdn-id>\t\n            <unmanaged>WICPngTimeDay</unmanaged>\t\n            <unmanaged-short>WICPngTimeDay</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.PngTimeProperties.Hour\">\n            <summary>\t\n            <dd> <p>[VT_UI1] Indicates the hour of the last modification.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICPngTimeHour']/*\"/>\t\n            <msdn-id>ee719853</msdn-id>\t\n            <unmanaged>WICPngTimeHour</unmanaged>\t\n            <unmanaged-short>WICPngTimeHour</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.PngTimeProperties.Minute\">\n            <summary>\t\n            <dd> <p>[VT_UI1] Indicates the minute of the last modification.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICPngTimeMinute']/*\"/>\t\n            <msdn-id>ee719853</msdn-id>\t\n            <unmanaged>WICPngTimeMinute</unmanaged>\t\n            <unmanaged-short>WICPngTimeMinute</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.PngTimeProperties.Second\">\n            <summary>\t\n            <dd> <p>[VT_UI1] Indicates the second of the last modification.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICPngTimeSecond']/*\"/>\t\n            <msdn-id>ee719853</msdn-id>\t\n            <unmanaged>WICPngTimeSecond</unmanaged>\t\n            <unmanaged-short>WICPngTimeSecond</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.WIC.ProgressNotification\">\n            <summary>\t\n            <p>Specifies when the progress notification callback should be called.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICProgressNotification']/*\"/>\t\n            <msdn-id>ee719854</msdn-id>\t\n            <unmanaged>WICProgressNotification</unmanaged>\t\n            <unmanaged-short>WICProgressNotification</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.ProgressNotification.Begin\">\n            <summary>\t\n            <dd> <p>The callback should be called when codec operations begin.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICProgressNotificationBegin']/*\"/>\t\n            <msdn-id>ee719854</msdn-id>\t\n            <unmanaged>WICProgressNotificationBegin</unmanaged>\t\n            <unmanaged-short>WICProgressNotificationBegin</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.ProgressNotification.End\">\n            <summary>\t\n            <dd> <p>The callback should be called when codec operations end.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICProgressNotificationEnd']/*\"/>\t\n            <msdn-id>ee719854</msdn-id>\t\n            <unmanaged>WICProgressNotificationEnd</unmanaged>\t\n            <unmanaged-short>WICProgressNotificationEnd</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.ProgressNotification.Frequent\">\n            <summary>\t\n            <dd> <p>The callback should be called frequently to report status.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICProgressNotificationFrequent']/*\"/>\t\n            <msdn-id>ee719854</msdn-id>\t\n            <unmanaged>WICProgressNotificationFrequent</unmanaged>\t\n            <unmanaged-short>WICProgressNotificationFrequent</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.ProgressNotification.All\">\n            <summary>\t\n            <dd> <p>The callback should be called on all available progress notifications.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICProgressNotificationAll']/*\"/>\t\n            <msdn-id>ee719854</msdn-id>\t\n            <unmanaged>WICProgressNotificationAll</unmanaged>\t\n            <unmanaged-short>WICProgressNotificationAll</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.WIC.ProgressOperation\">\n            <summary>\t\n            <p>Specifies the progress operations to receive notifications for.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICProgressOperation']/*\"/>\t\n            <msdn-id>ee719855</msdn-id>\t\n            <unmanaged>WICProgressOperation</unmanaged>\t\n            <unmanaged-short>WICProgressOperation</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.ProgressOperation.CopyPixels\">\n            <summary>\t\n            <dd> <p>Receive copy pixel operation.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICProgressOperationCopyPixels']/*\"/>\t\n            <msdn-id>ee719855</msdn-id>\t\n            <unmanaged>WICProgressOperationCopyPixels</unmanaged>\t\n            <unmanaged-short>WICProgressOperationCopyPixels</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.ProgressOperation.WritePixels\">\n            <summary>\t\n            <dd> <p>Receive write pixel operation.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICProgressOperationWritePixels']/*\"/>\t\n            <msdn-id>ee719855</msdn-id>\t\n            <unmanaged>WICProgressOperationWritePixels</unmanaged>\t\n            <unmanaged-short>WICProgressOperationWritePixels</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.ProgressOperation.All\">\n            <summary>\t\n            <dd> <p>Receive all progress operations available.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICProgressOperationAll']/*\"/>\t\n            <msdn-id>ee719855</msdn-id>\t\n            <unmanaged>WICProgressOperationAll</unmanaged>\t\n            <unmanaged-short>WICProgressOperationAll</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.WIC.RawCapabilities\">\n            <summary>\t\n            <p>Specifies the capability support of a raw image.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICRawCapabilities']/*\"/>\t\n            <msdn-id>ee719856</msdn-id>\t\n            <unmanaged>WICRawCapabilities</unmanaged>\t\n            <unmanaged-short>WICRawCapabilities</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.RawCapabilities.NotSupported\">\n            <summary>\t\n            <dd> <p>The capability is not supported.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICRawCapabilityNotSupported']/*\"/>\t\n            <msdn-id>ee719856</msdn-id>\t\n            <unmanaged>WICRawCapabilityNotSupported</unmanaged>\t\n            <unmanaged-short>WICRawCapabilityNotSupported</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.RawCapabilities.GetSupported\">\n            <summary>\t\n            <dd> <p>The capability supports only get operations.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICRawCapabilityGetSupported']/*\"/>\t\n            <msdn-id>ee719856</msdn-id>\t\n            <unmanaged>WICRawCapabilityGetSupported</unmanaged>\t\n            <unmanaged-short>WICRawCapabilityGetSupported</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.RawCapabilities.FullySupported\">\n            <summary>\t\n            <dd> <p>The capability supports get and set operations.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICRawCapabilityFullySupported']/*\"/>\t\n            <msdn-id>ee719856</msdn-id>\t\n            <unmanaged>WICRawCapabilityFullySupported</unmanaged>\t\n            <unmanaged-short>WICRawCapabilityFullySupported</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.WIC.RawParameterSet\">\n            <summary>\t\n            <p>Specifies the parameter set used by a raw codec.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICRawParameterSet']/*\"/>\t\n            <msdn-id>ee719858</msdn-id>\t\n            <unmanaged>WICRawParameterSet</unmanaged>\t\n            <unmanaged-short>WICRawParameterSet</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.RawParameterSet.AsShot\">\n            <summary>\t\n            <dd> <p>An as shot parameter set.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICAsShotParameterSet']/*\"/>\t\n            <msdn-id>ee719858</msdn-id>\t\n            <unmanaged>WICAsShotParameterSet</unmanaged>\t\n            <unmanaged-short>WICAsShotParameterSet</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.RawParameterSet.UserAdjusted\">\n            <summary>\t\n            <dd> <p>A user adjusted parameter set.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICUserAdjustedParameterSet']/*\"/>\t\n            <msdn-id>ee719858</msdn-id>\t\n            <unmanaged>WICUserAdjustedParameterSet</unmanaged>\t\n            <unmanaged-short>WICUserAdjustedParameterSet</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.RawParameterSet.AutoAdjusted\">\n            <summary>\t\n            <dd> <p>A codec adjusted parameter set.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICAutoAdjustedParameterSet']/*\"/>\t\n            <msdn-id>ee719858</msdn-id>\t\n            <unmanaged>WICAutoAdjustedParameterSet</unmanaged>\t\n            <unmanaged-short>WICAutoAdjustedParameterSet</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.WIC.RawRenderMode\">\n            <summary>\t\n            <p>Specifies the render intent of the next <strong>CopyPixels</strong> call. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICRawRenderMode']/*\"/>\t\n            <msdn-id>ee719859</msdn-id>\t\n            <unmanaged>WICRawRenderMode</unmanaged>\t\n            <unmanaged-short>WICRawRenderMode</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.RawRenderMode.Draft\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICRawRenderModeDraft']/*\"/>\t\n            <unmanaged>WICRawRenderModeDraft</unmanaged>\t\n            <unmanaged-short>WICRawRenderModeDraft</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.RawRenderMode.Normal\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICRawRenderModeNormal']/*\"/>\t\n            <unmanaged>WICRawRenderModeNormal</unmanaged>\t\n            <unmanaged-short>WICRawRenderModeNormal</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.RawRenderMode.BestQuality\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICRawRenderModeBestQuality']/*\"/>\t\n            <unmanaged>WICRawRenderModeBestQuality</unmanaged>\t\n            <unmanaged-short>WICRawRenderModeBestQuality</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.WIC.RawRotationCapabilities\">\n            <summary>\t\n            <p>Specifies the rotation capabilities of the codec.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICRawRotationCapabilities']/*\"/>\t\n            <msdn-id>ee719860</msdn-id>\t\n            <unmanaged>WICRawRotationCapabilities</unmanaged>\t\n            <unmanaged-short>WICRawRotationCapabilities</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.RawRotationCapabilities.NotSupported\">\n            <summary>\t\n            <dd> <p>Rotation is not supported.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICRawRotationCapabilityNotSupported']/*\"/>\t\n            <msdn-id>ee719860</msdn-id>\t\n            <unmanaged>WICRawRotationCapabilityNotSupported</unmanaged>\t\n            <unmanaged-short>WICRawRotationCapabilityNotSupported</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.RawRotationCapabilities.GetSupported\">\n            <summary>\t\n            <dd> <p>Set operations for rotation is not supported.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICRawRotationCapabilityGetSupported']/*\"/>\t\n            <msdn-id>ee719860</msdn-id>\t\n            <unmanaged>WICRawRotationCapabilityGetSupported</unmanaged>\t\n            <unmanaged-short>WICRawRotationCapabilityGetSupported</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.RawRotationCapabilities.NinetyDegreesSupported\">\n            <summary>\t\n            <dd> <p>90 degree rotations are supported.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICRawRotationCapabilityNinetyDegreesSupported']/*\"/>\t\n            <msdn-id>ee719860</msdn-id>\t\n            <unmanaged>WICRawRotationCapabilityNinetyDegreesSupported</unmanaged>\t\n            <unmanaged-short>WICRawRotationCapabilityNinetyDegreesSupported</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.RawRotationCapabilities.FullySupported\">\n            <summary>\t\n            <dd> <p>All rotation angles are supported.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICRawRotationCapabilityFullySupported']/*\"/>\t\n            <msdn-id>ee719860</msdn-id>\t\n            <unmanaged>WICRawRotationCapabilityFullySupported</unmanaged>\t\n            <unmanaged-short>WICRawRotationCapabilityFullySupported</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.WIC.SectionAccessLevel\">\n            <summary>\t\n            <p>Specifies the access level of a Windows Graphics Device Interface (GDI) section.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICSectionAccessLevel']/*\"/>\t\n            <msdn-id>ee719864</msdn-id>\t\n            <unmanaged>WICSectionAccessLevel</unmanaged>\t\n            <unmanaged-short>WICSectionAccessLevel</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.SectionAccessLevel.Read\">\n            <summary>\t\n            <dd> <p>Indicates a read only access level.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICSectionAccessLevelRead']/*\"/>\t\n            <msdn-id>ee719864</msdn-id>\t\n            <unmanaged>WICSectionAccessLevelRead</unmanaged>\t\n            <unmanaged-short>WICSectionAccessLevelRead</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.SectionAccessLevel.ReadWrite\">\n            <summary>\t\n            <dd> <p>Indicates a read/write access level.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICSectionAccessLevelReadWrite']/*\"/>\t\n            <msdn-id>ee719864</msdn-id>\t\n            <unmanaged>WICSectionAccessLevelReadWrite</unmanaged>\t\n            <unmanaged-short>WICSectionAccessLevelReadWrite</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.WIC.TiffCompressionOption\">\n            <summary>\t\n            <p>Specifies the Tagged Image File Format (TIFF) compression options.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICTiffCompressionOption']/*\"/>\t\n            <msdn-id>ee719867</msdn-id>\t\n            <unmanaged>WICTiffCompressionOption</unmanaged>\t\n            <unmanaged-short>WICTiffCompressionOption</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.TiffCompressionOption.DontCare\">\n            <summary>\t\n            <dd> <p>Indicates a suitable compression algorithm based on the image and pixel format.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICTiffCompressionDontCare']/*\"/>\t\n            <msdn-id>ee719867</msdn-id>\t\n            <unmanaged>WICTiffCompressionDontCare</unmanaged>\t\n            <unmanaged-short>WICTiffCompressionDontCare</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.TiffCompressionOption.None\">\n            <summary>\t\n            <dd> <p>Indicates no compression.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICTiffCompressionNone']/*\"/>\t\n            <msdn-id>ee719867</msdn-id>\t\n            <unmanaged>WICTiffCompressionNone</unmanaged>\t\n            <unmanaged-short>WICTiffCompressionNone</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.TiffCompressionOption.CCITT3\">\n            <summary>\t\n            <dd> <p>Indicates a CCITT3 compression algorithm. This algorithm is only valid for 1bpp pixel formats.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICTiffCompressionCCITT3']/*\"/>\t\n            <msdn-id>ee719867</msdn-id>\t\n            <unmanaged>WICTiffCompressionCCITT3</unmanaged>\t\n            <unmanaged-short>WICTiffCompressionCCITT3</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.TiffCompressionOption.CCITT4\">\n            <summary>\t\n            <dd> <p>Indicates a CCITT4 compression algorithm. This algorithm is only valid for 1bpp pixel formats.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICTiffCompressionCCITT4']/*\"/>\t\n            <msdn-id>ee719867</msdn-id>\t\n            <unmanaged>WICTiffCompressionCCITT4</unmanaged>\t\n            <unmanaged-short>WICTiffCompressionCCITT4</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.TiffCompressionOption.LZW\">\n            <summary>\t\n            <dd> <p>Indicates a LZW compression algorithm.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICTiffCompressionLZW']/*\"/>\t\n            <msdn-id>ee719867</msdn-id>\t\n            <unmanaged>WICTiffCompressionLZW</unmanaged>\t\n            <unmanaged-short>WICTiffCompressionLZW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.TiffCompressionOption.RLE\">\n            <summary>\t\n            <dd> <p>Indicates a RLE compression algorithm. This algorithm is only valid for 1bpp pixel formats.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICTiffCompressionRLE']/*\"/>\t\n            <msdn-id>ee719867</msdn-id>\t\n            <unmanaged>WICTiffCompressionRLE</unmanaged>\t\n            <unmanaged-short>WICTiffCompressionRLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.TiffCompressionOption.ZIP\">\n            <summary>\t\n            <dd> <p>Indicates a ZIP compression algorithm.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICTiffCompressionZIP']/*\"/>\t\n            <msdn-id>ee719867</msdn-id>\t\n            <unmanaged>WICTiffCompressionZIP</unmanaged>\t\n            <unmanaged-short>WICTiffCompressionZIP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.TiffCompressionOption.LZWHDifferencing\">\n            <summary>\t\n            <dd> <p>Indicates an LZWH differencing algorithm.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICTiffCompressionLZWHDifferencing']/*\"/>\t\n            <msdn-id>ee719867</msdn-id>\t\n            <unmanaged>WICTiffCompressionLZWHDifferencing</unmanaged>\t\n            <unmanaged-short>WICTiffCompressionLZWHDifferencing</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.WIC.BitmapDecoderGuids\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.WIC.BitmapDecoderGuids']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.BitmapDecoderGuids.Gif\">\n            <summary>Constant Gif.</summary>\n            <unmanaged>CLSID_WICGifDecoder</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.BitmapDecoderGuids.Jpeg\">\n            <summary>Constant Jpeg.</summary>\n            <unmanaged>CLSID_WICJpegDecoder</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.BitmapDecoderGuids.Png\">\n            <summary>Constant Png.</summary>\n            <unmanaged>CLSID_WICPngDecoder</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.BitmapDecoderGuids.Tiff\">\n            <summary>Constant Tiff.</summary>\n            <unmanaged>CLSID_WICTiffDecoder</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.BitmapDecoderGuids.Wmp\">\n            <summary>Constant Wmp.</summary>\n            <unmanaged>CLSID_WICWmpDecoder</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.BitmapDecoderGuids.Bmp\">\n            <summary>Constant Bmp.</summary>\n            <unmanaged>CLSID_WICBmpDecoder</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.BitmapDecoderGuids.Ico\">\n            <summary>Constant Ico.</summary>\n            <unmanaged>CLSID_WICIcoDecoder</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.WIC.BitmapEncoderGuids\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.WIC.BitmapEncoderGuids']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.BitmapEncoderGuids.Wmp\">\n            <summary>Constant Wmp.</summary>\n            <unmanaged>CLSID_WICWmpEncoder</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.BitmapEncoderGuids.Gif\">\n            <summary>Constant Gif.</summary>\n            <unmanaged>CLSID_WICGifEncoder</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.BitmapEncoderGuids.Jpeg\">\n            <summary>Constant Jpeg.</summary>\n            <unmanaged>CLSID_WICJpegEncoder</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.BitmapEncoderGuids.Png\">\n            <summary>Constant Png.</summary>\n            <unmanaged>CLSID_WICPngEncoder</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.BitmapEncoderGuids.Bmp\">\n            <summary>Constant Bmp.</summary>\n            <unmanaged>CLSID_WICBmpEncoder</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.BitmapEncoderGuids.Tiff\">\n            <summary>Constant Tiff.</summary>\n            <unmanaged>CLSID_WICTiffEncoder</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.WIC.ContainerFormatGuids\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.WIC.ContainerFormatGuids']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.ContainerFormatGuids.Gif\">\n            <summary>Constant Gif.</summary>\n            <unmanaged>GUID_ContainerFormatGif</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.ContainerFormatGuids.Ico\">\n            <summary>Constant Ico.</summary>\n            <unmanaged>GUID_ContainerFormatIco</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.ContainerFormatGuids.Jpeg\">\n            <summary>Constant Jpeg.</summary>\n            <unmanaged>GUID_ContainerFormatJpeg</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.ContainerFormatGuids.Wmp\">\n            <summary>Constant Wmp.</summary>\n            <unmanaged>GUID_ContainerFormatWmp</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.ContainerFormatGuids.Tiff\">\n            <summary>Constant Tiff.</summary>\n            <unmanaged>GUID_ContainerFormatTiff</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.ContainerFormatGuids.Png\">\n            <summary>Constant Png.</summary>\n            <unmanaged>GUID_ContainerFormatPng</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.ContainerFormatGuids.Bmp\">\n            <summary>Constant Bmp.</summary>\n            <unmanaged>GUID_ContainerFormatBmp</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.WIC.PixelFormat\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.WIC.PixelFormat']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.PixelFormat.Format32bppBGR101010\">\n            <summary>Constant Format32bppBGR101010.</summary>\n            <unmanaged>GUID_WICPixelFormat32bppBGR101010</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.PixelFormat.Format72bpp8ChannelsAlpha\">\n            <summary>Constant Format72bpp8ChannelsAlpha.</summary>\n            <unmanaged>GUID_WICPixelFormat72bpp8ChannelsAlpha</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.PixelFormat.Format2bppIndexed\">\n            <summary>Constant Format2bppIndexed.</summary>\n            <unmanaged>GUID_WICPixelFormat2bppIndexed</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.PixelFormat.Format32bppGrayFixedPoint\">\n            <summary>Constant Format32bppGrayFixedPoint.</summary>\n            <unmanaged>GUID_WICPixelFormat32bppGrayFixedPoint</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.PixelFormat.Format1bppIndexed\">\n            <summary>Constant Format1bppIndexed.</summary>\n            <unmanaged>GUID_WICPixelFormat1bppIndexed</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.PixelFormat.Format64bpp8Channels\">\n            <summary>Constant Format64bpp8Channels.</summary>\n            <unmanaged>GUID_WICPixelFormat64bpp8Channels</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.PixelFormat.Format16bppBGR555\">\n            <summary>Constant Format16bppBGR555.</summary>\n            <unmanaged>GUID_WICPixelFormat16bppBGR555</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.PixelFormat.Format16bppBGR565\">\n            <summary>Constant Format16bppBGR565.</summary>\n            <unmanaged>GUID_WICPixelFormat16bppBGR565</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.PixelFormat.Format32bppRGBA1010102XR\">\n            <summary>Constant Format32bppRGBA1010102XR.</summary>\n            <unmanaged>GUID_WICPixelFormat32bppRGBA1010102XR</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.PixelFormat.Format112bpp7Channels\">\n            <summary>Constant Format112bpp7Channels.</summary>\n            <unmanaged>GUID_WICPixelFormat112bpp7Channels</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.PixelFormat.Format128bppRGBFloat\">\n            <summary>Constant Format128bppRGBFloat.</summary>\n            <unmanaged>GUID_WICPixelFormat128bppRGBFloat</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.PixelFormat.Format48bppRGBFixedPoint\">\n            <summary>Constant Format48bppRGBFixedPoint.</summary>\n            <unmanaged>GUID_WICPixelFormat48bppRGBFixedPoint</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.PixelFormat.FormatDontCare\">\n            <summary>Constant FormatDontCare.</summary>\n            <unmanaged>GUID_WICPixelFormatDontCare</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.PixelFormat.Format128bpp7ChannelsAlpha\">\n            <summary>Constant Format128bpp7ChannelsAlpha.</summary>\n            <unmanaged>GUID_WICPixelFormat128bpp7ChannelsAlpha</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.PixelFormat.Format48bppBGRFixedPoint\">\n            <summary>Constant Format48bppBGRFixedPoint.</summary>\n            <unmanaged>GUID_WICPixelFormat48bppBGRFixedPoint</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.PixelFormat.Format24bppRGB\">\n            <summary>Constant Format24bppRGB.</summary>\n            <unmanaged>GUID_WICPixelFormat24bppRGB</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.PixelFormat.Format24bpp3Channels\">\n            <summary>Constant Format24bpp3Channels.</summary>\n            <unmanaged>GUID_WICPixelFormat24bpp3Channels</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.PixelFormat.Format32bppBGR\">\n            <summary>Constant Format32bppBGR.</summary>\n            <unmanaged>GUID_WICPixelFormat32bppBGR</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.PixelFormat.Format48bppRGBHalf\">\n            <summary>Constant Format48bppRGBHalf.</summary>\n            <unmanaged>GUID_WICPixelFormat48bppRGBHalf</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.PixelFormat.Format64bpp3ChannelsAlpha\">\n            <summary>Constant Format64bpp3ChannelsAlpha.</summary>\n            <unmanaged>GUID_WICPixelFormat64bpp3ChannelsAlpha</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.PixelFormat.Format64bppBGRA\">\n            <summary>Constant Format64bppBGRA.</summary>\n            <unmanaged>GUID_WICPixelFormat64bppBGRA</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.PixelFormat.Format96bpp6Channels\">\n            <summary>Constant Format96bpp6Channels.</summary>\n            <unmanaged>GUID_WICPixelFormat96bpp6Channels</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.PixelFormat.FormatBlackWhite\">\n            <summary>Constant FormatBlackWhite.</summary>\n            <unmanaged>GUID_WICPixelFormatBlackWhite</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.PixelFormat.Format32bppPBGRA\">\n            <summary>Constant Format32bppPBGRA.</summary>\n            <unmanaged>GUID_WICPixelFormat32bppPBGRA</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.PixelFormat.Format96bpp5ChannelsAlpha\">\n            <summary>Constant Format96bpp5ChannelsAlpha.</summary>\n            <unmanaged>GUID_WICPixelFormat96bpp5ChannelsAlpha</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.PixelFormat.Format80bppCMYKAlpha\">\n            <summary>Constant Format80bppCMYKAlpha.</summary>\n            <unmanaged>GUID_WICPixelFormat80bppCMYKAlpha</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.PixelFormat.Format128bpp8Channels\">\n            <summary>Constant Format128bpp8Channels.</summary>\n            <unmanaged>GUID_WICPixelFormat128bpp8Channels</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.PixelFormat.Format64bppRGBAFixedPoint\">\n            <summary>Constant Format64bppRGBAFixedPoint.</summary>\n            <unmanaged>GUID_WICPixelFormat64bppRGBAFixedPoint</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.PixelFormat.Format144bpp8ChannelsAlpha\">\n            <summary>Constant Format144bpp8ChannelsAlpha.</summary>\n            <unmanaged>GUID_WICPixelFormat144bpp8ChannelsAlpha</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.PixelFormat.Format112bpp6ChannelsAlpha\">\n            <summary>Constant Format112bpp6ChannelsAlpha.</summary>\n            <unmanaged>GUID_WICPixelFormat112bpp6ChannelsAlpha</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.PixelFormat.Format16bppGrayHalf\">\n            <summary>Constant Format16bppGrayHalf.</summary>\n            <unmanaged>GUID_WICPixelFormat16bppGrayHalf</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.PixelFormat.Format48bpp6Channels\">\n            <summary>Constant Format48bpp6Channels.</summary>\n            <unmanaged>GUID_WICPixelFormat48bpp6Channels</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.PixelFormat.Format64bpp7ChannelsAlpha\">\n            <summary>Constant Format64bpp7ChannelsAlpha.</summary>\n            <unmanaged>GUID_WICPixelFormat64bpp7ChannelsAlpha</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.PixelFormat.Format128bppRGBAFixedPoint\">\n            <summary>Constant Format128bppRGBAFixedPoint.</summary>\n            <unmanaged>GUID_WICPixelFormat128bppRGBAFixedPoint</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.PixelFormat.Format8bppIndexed\">\n            <summary>Constant Format8bppIndexed.</summary>\n            <unmanaged>GUID_WICPixelFormat8bppIndexed</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.PixelFormat.Format16bppGrayFixedPoint\">\n            <summary>Constant Format16bppGrayFixedPoint.</summary>\n            <unmanaged>GUID_WICPixelFormat16bppGrayFixedPoint</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.PixelFormat.Format48bppRGB\">\n            <summary>Constant Format48bppRGB.</summary>\n            <unmanaged>GUID_WICPixelFormat48bppRGB</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.PixelFormat.Format32bpp4Channels\">\n            <summary>Constant Format32bpp4Channels.</summary>\n            <unmanaged>GUID_WICPixelFormat32bpp4Channels</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.PixelFormat.Format32bpp3ChannelsAlpha\">\n            <summary>Constant Format32bpp3ChannelsAlpha.</summary>\n            <unmanaged>GUID_WICPixelFormat32bpp3ChannelsAlpha</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.PixelFormat.Format64bppCMYK\">\n            <summary>Constant Format64bppCMYK.</summary>\n            <unmanaged>GUID_WICPixelFormat64bppCMYK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.PixelFormat.Format4bppIndexed\">\n            <summary>Constant Format4bppIndexed.</summary>\n            <unmanaged>GUID_WICPixelFormat4bppIndexed</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.PixelFormat.Format40bpp4ChannelsAlpha\">\n            <summary>Constant Format40bpp4ChannelsAlpha.</summary>\n            <unmanaged>GUID_WICPixelFormat40bpp4ChannelsAlpha</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.PixelFormat.Format64bppRGBFixedPoint\">\n            <summary>Constant Format64bppRGBFixedPoint.</summary>\n            <unmanaged>GUID_WICPixelFormat64bppRGBFixedPoint</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.PixelFormat.Format64bppPBGRA\">\n            <summary>Constant Format64bppPBGRA.</summary>\n            <unmanaged>GUID_WICPixelFormat64bppPBGRA</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.PixelFormat.Format16bppGray\">\n            <summary>Constant Format16bppGray.</summary>\n            <unmanaged>GUID_WICPixelFormat16bppGray</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.PixelFormat.Format40bppCMYKAlpha\">\n            <summary>Constant Format40bppCMYKAlpha.</summary>\n            <unmanaged>GUID_WICPixelFormat40bppCMYKAlpha</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.PixelFormat.Format32bppBGRA\">\n            <summary>Constant Format32bppBGRA.</summary>\n            <unmanaged>GUID_WICPixelFormat32bppBGRA</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.PixelFormat.Format80bpp4ChannelsAlpha\">\n            <summary>Constant Format80bpp4ChannelsAlpha.</summary>\n            <unmanaged>GUID_WICPixelFormat80bpp4ChannelsAlpha</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.PixelFormat.Format64bppRGBA\">\n            <summary>Constant Format64bppRGBA.</summary>\n            <unmanaged>GUID_WICPixelFormat64bppRGBA</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.PixelFormat.Format16bppBGRA5551\">\n            <summary>Constant Format16bppBGRA5551.</summary>\n            <unmanaged>GUID_WICPixelFormat16bppBGRA5551</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.PixelFormat.Format64bppBGRAFixedPoint\">\n            <summary>Constant Format64bppBGRAFixedPoint.</summary>\n            <unmanaged>GUID_WICPixelFormat64bppBGRAFixedPoint</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.PixelFormat.Format32bppPRGBA\">\n            <summary>Constant Format32bppPRGBA.</summary>\n            <unmanaged>GUID_WICPixelFormat32bppPRGBA</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.PixelFormat.Format96bppRGBFixedPoint\">\n            <summary>Constant Format96bppRGBFixedPoint.</summary>\n            <unmanaged>GUID_WICPixelFormat96bppRGBFixedPoint</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.PixelFormat.Format32bppGrayFloat\">\n            <summary>Constant Format32bppGrayFloat.</summary>\n            <unmanaged>GUID_WICPixelFormat32bppGrayFloat</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.PixelFormat.Format48bpp3Channels\">\n            <summary>Constant Format48bpp3Channels.</summary>\n            <unmanaged>GUID_WICPixelFormat48bpp3Channels</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.PixelFormat.Format80bpp5Channels\">\n            <summary>Constant Format80bpp5Channels.</summary>\n            <unmanaged>GUID_WICPixelFormat80bpp5Channels</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.PixelFormat.Format56bpp7Channels\">\n            <summary>Constant Format56bpp7Channels.</summary>\n            <unmanaged>GUID_WICPixelFormat56bpp7Channels</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.PixelFormat.Format128bppRGBFixedPoint\">\n            <summary>Constant Format128bppRGBFixedPoint.</summary>\n            <unmanaged>GUID_WICPixelFormat128bppRGBFixedPoint</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.PixelFormat.Format64bpp4Channels\">\n            <summary>Constant Format64bpp4Channels.</summary>\n            <unmanaged>GUID_WICPixelFormat64bpp4Channels</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.PixelFormat.Format40bpp5Channels\">\n            <summary>Constant Format40bpp5Channels.</summary>\n            <unmanaged>GUID_WICPixelFormat40bpp5Channels</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.PixelFormat.Format8bppGray\">\n            <summary>Constant Format8bppGray.</summary>\n            <unmanaged>GUID_WICPixelFormat8bppGray</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.PixelFormat.Format32bppCMYK\">\n            <summary>Constant Format32bppCMYK.</summary>\n            <unmanaged>GUID_WICPixelFormat32bppCMYK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.PixelFormat.Format24bppBGR\">\n            <summary>Constant Format24bppBGR.</summary>\n            <unmanaged>GUID_WICPixelFormat24bppBGR</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.PixelFormat.Format32bppRGBA1010102\">\n            <summary>Constant Format32bppRGBA1010102.</summary>\n            <unmanaged>GUID_WICPixelFormat32bppRGBA1010102</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.PixelFormat.Format4bppGray\">\n            <summary>Constant Format4bppGray.</summary>\n            <unmanaged>GUID_WICPixelFormat4bppGray</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.PixelFormat.Format64bppPRGBA\">\n            <summary>Constant Format64bppPRGBA.</summary>\n            <unmanaged>GUID_WICPixelFormat64bppPRGBA</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.PixelFormat.Format2bppGray\">\n            <summary>Constant Format2bppGray.</summary>\n            <unmanaged>GUID_WICPixelFormat2bppGray</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.PixelFormat.Format64bppRGBAHalf\">\n            <summary>Constant Format64bppRGBAHalf.</summary>\n            <unmanaged>GUID_WICPixelFormat64bppRGBAHalf</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.PixelFormat.Format128bppRGBAFloat\">\n            <summary>Constant Format128bppRGBAFloat.</summary>\n            <unmanaged>GUID_WICPixelFormat128bppRGBAFloat</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.PixelFormat.Format48bpp5ChannelsAlpha\">\n            <summary>Constant Format48bpp5ChannelsAlpha.</summary>\n            <unmanaged>GUID_WICPixelFormat48bpp5ChannelsAlpha</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.PixelFormat.Format32bppRGBA\">\n            <summary>Constant Format32bppRGBA.</summary>\n            <unmanaged>GUID_WICPixelFormat32bppRGBA</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.PixelFormat.Format32bppRGBE\">\n            <summary>Constant Format32bppRGBE.</summary>\n            <unmanaged>GUID_WICPixelFormat32bppRGBE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.PixelFormat.Format56bpp6ChannelsAlpha\">\n            <summary>Constant Format56bpp6ChannelsAlpha.</summary>\n            <unmanaged>GUID_WICPixelFormat56bpp6ChannelsAlpha</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.PixelFormat.Format128bppPRGBAFloat\">\n            <summary>Constant Format128bppPRGBAFloat.</summary>\n            <unmanaged>GUID_WICPixelFormat128bppPRGBAFloat</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.PixelFormat.Format48bppBGR\">\n            <summary>Constant Format48bppBGR.</summary>\n            <unmanaged>GUID_WICPixelFormat48bppBGR</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.PixelFormat.Format64bppRGBHalf\">\n            <summary>Constant Format64bppRGBHalf.</summary>\n            <unmanaged>GUID_WICPixelFormat64bppRGBHalf</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.PixelFormat.Format8bppAlpha\">\n            <summary>Constant Format8bppAlpha.</summary>\n            <unmanaged>GUID_WICPixelFormat8bppAlpha</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.WIC.PixelFormat.GetBitsPerPixel(System.Guid)\">\n            <summary>\n            Gets the number of bits per pixel for a particular pixel format.\n            </summary>\n            <param name=\"guid\">The pixel format guid.</param>\n            <returns>The number of bits per pixel. If the pixel format guid is invalid, returns 0</returns>\n        </member>\n        <member name=\"M:SharpDX.WIC.PixelFormat.GetStride(System.Guid,System.Int32)\">\n            <summary>\n            Gets the stride in bytes from a pixel format and a width..\n            </summary>\n            <param name=\"guid\">The pixel format guid.</param>\n            <param name=\"width\">The width.</param>\n            <returns>The number of bytes per row.</returns>\n        </member>\n        <member name=\"T:SharpDX.WIC.ResultCode\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.WIC.ResultCode']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.ResultCode.Badheader\">\n            <summary>Constant Badheader.</summary>\n            <unmanaged>WINCODEC_ERR_BADHEADER</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.ResultCode.UnexpectedMetadataType\">\n            <summary>Constant UnexpectedMetadataType.</summary>\n            <unmanaged>WINCODEC_ERR_UNEXPECTEDMETADATATYPE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.ResultCode.InvalidQueryCharacter\">\n            <summary>Constant InvalidQueryCharacter.</summary>\n            <unmanaged>WINCODEC_ERR_INVALIDQUERYCHARACTER</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.ResultCode.InvalidParameter\">\n            <summary>Constant InvalidParameter.</summary>\n            <unmanaged>WINCODEC_ERR_INVALIDPARAMETER</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.ResultCode.Valueoutofrange\">\n            <summary>Constant Valueoutofrange.</summary>\n            <unmanaged>WINCODEC_ERR_VALUEOUTOFRANGE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.ResultCode.Codectoomanyscanlines\">\n            <summary>Constant Codectoomanyscanlines.</summary>\n            <unmanaged>WINCODEC_ERR_CODECTOOMANYSCANLINES</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.ResultCode.Propertysize\">\n            <summary>Constant Propertysize.</summary>\n            <unmanaged>WINCODEC_ERR_PROPERTYSIZE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.ResultCode.OufOfMemory\">\n            <summary>Constant OufOfMemory.</summary>\n            <unmanaged>WINCODEC_ERR_OUTOFMEMORY</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.ResultCode.Codecpresent\">\n            <summary>Constant Codecpresent.</summary>\n            <unmanaged>WINCODEC_ERR_CODECPRESENT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.ResultCode.NotInitializeD\">\n            <summary>Constant NotInitializeD.</summary>\n            <unmanaged>WINCODEC_ERR_NOTINITIALIZED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.ResultCode.Alreadylocked\">\n            <summary>Constant Alreadylocked.</summary>\n            <unmanaged>WINCODEC_ERR_ALREADYLOCKED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.ResultCode.Valueoverflow\">\n            <summary>Constant Valueoverflow.</summary>\n            <unmanaged>WINCODEC_ERR_VALUEOVERFLOW</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.ResultCode.Paletteunavailable\">\n            <summary>Constant Paletteunavailable.</summary>\n            <unmanaged>WINCODEC_ERR_PALETTEUNAVAILABLE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.ResultCode.Badstreamdata\">\n            <summary>Constant Badstreamdata.</summary>\n            <unmanaged>WINCODEC_ERR_BADSTREAMDATA</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.ResultCode.Componentinitializefailure\">\n            <summary>Constant Componentinitializefailure.</summary>\n            <unmanaged>WINCODEC_ERR_COMPONENTINITIALIZEFAILURE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.ResultCode.Aborted\">\n            <summary>Constant Aborted.</summary>\n            <unmanaged>WINCODEC_ERR_ABORTED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.ResultCode.Imagesizeoutofrange\">\n            <summary>Constant Imagesizeoutofrange.</summary>\n            <unmanaged>WINCODEC_ERR_IMAGESIZEOUTOFRANGE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.ResultCode.UnsupportedPixelFormat\">\n            <summary>Constant UnsupportedPixelFormat.</summary>\n            <unmanaged>WINCODEC_ERR_UNSUPPORTEDPIXELFORMAT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.ResultCode.Componentnotfound\">\n            <summary>Constant Componentnotfound.</summary>\n            <unmanaged>WINCODEC_ERR_COMPONENTNOTFOUND</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.ResultCode.InvalidRegistration\">\n            <summary>Constant InvalidRegistration.</summary>\n            <unmanaged>WINCODEC_ERR_INVALIDREGISTRATION</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.ResultCode.UnexpectedSize\">\n            <summary>Constant UnexpectedSize.</summary>\n            <unmanaged>WINCODEC_ERR_UNEXPECTEDSIZE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.ResultCode.Internalerror\">\n            <summary>Constant Internalerror.</summary>\n            <unmanaged>WINCODEC_ERR_INTERNALERROR</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.ResultCode.WrongState\">\n            <summary>Constant WrongState.</summary>\n            <unmanaged>WINCODEC_ERR_WRONGSTATE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.ResultCode.Badmetadataheader\">\n            <summary>Constant Badmetadataheader.</summary>\n            <unmanaged>WINCODEC_ERR_BADMETADATAHEADER</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.ResultCode.NotImplemented\">\n            <summary>Constant NotImplemented.</summary>\n            <unmanaged>WINCODEC_ERR_NOTIMPLEMENTED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.ResultCode.StreamWrite\">\n            <summary>Constant StreamWrite.</summary>\n            <unmanaged>WINCODEC_ERR_STREAMWRITE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.ResultCode.StreamRead\">\n            <summary>Constant StreamRead.</summary>\n            <unmanaged>WINCODEC_ERR_STREAMREAD</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.ResultCode.Requestonlyvalidatmetadataroot\">\n            <summary>Constant Requestonlyvalidatmetadataroot.</summary>\n            <unmanaged>WINCODEC_ERR_REQUESTONLYVALIDATMETADATAROOT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.ResultCode.SourceRectangleDoesnotmatchdimensions\">\n            <summary>Constant SourceRectangleDoesnotmatchdimensions.</summary>\n            <unmanaged>WINCODEC_ERR_SOURCERECTDOESNOTMATCHDIMENSIONS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.ResultCode.StreamNotAvailable\">\n            <summary>Constant StreamNotAvailable.</summary>\n            <unmanaged>WINCODEC_ERR_STREAMNOTAVAILABLE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.ResultCode.InvalidQueryRequest\">\n            <summary>Constant InvalidQueryRequest.</summary>\n            <unmanaged>WINCODEC_ERR_INVALIDQUERYREQUEST</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.ResultCode.Base\">\n            <summary>Constant Base.</summary>\n            <unmanaged>WINCODEC_ERR_BASE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.ResultCode.Unknownimageformat\">\n            <summary>Constant Unknownimageformat.</summary>\n            <unmanaged>WINCODEC_ERR_UNKNOWNIMAGEFORMAT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.ResultCode.GenericError\">\n            <summary>Constant GenericError.</summary>\n            <unmanaged>WINCODEC_ERR_GENERIC_ERROR</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.ResultCode.InvalidProgressivelevel\">\n            <summary>Constant InvalidProgressivelevel.</summary>\n            <unmanaged>WINCODEC_ERR_INVALIDPROGRESSIVELEVEL</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.ResultCode.Insufficientbuffer\">\n            <summary>Constant Insufficientbuffer.</summary>\n            <unmanaged>WINCODEC_ERR_INSUFFICIENTBUFFER</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.ResultCode.UnsupportedVersion\">\n            <summary>Constant UnsupportedVersion.</summary>\n            <unmanaged>WINCODEC_ERR_UNSUPPORTEDVERSION</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.ResultCode.FrameMissing\">\n            <summary>Constant FrameMissing.</summary>\n            <unmanaged>WINCODEC_ERR_FRAMEMISSING</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.ResultCode.Codecnothumbnail\">\n            <summary>Constant Codecnothumbnail.</summary>\n            <unmanaged>WINCODEC_ERR_CODECNOTHUMBNAIL</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.ResultCode.TooMuchmetadata\">\n            <summary>Constant TooMuchmetadata.</summary>\n            <unmanaged>WINCODEC_ERR_TOOMUCHMETADATA</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.ResultCode.Badimage\">\n            <summary>Constant Badimage.</summary>\n            <unmanaged>WINCODEC_ERR_BADIMAGE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.ResultCode.Duplicatemetadatapresent\">\n            <summary>Constant Duplicatemetadatapresent.</summary>\n            <unmanaged>WINCODEC_ERR_DUPLICATEMETADATAPRESENT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.ResultCode.Propertynotsupported\">\n            <summary>Constant Propertynotsupported.</summary>\n            <unmanaged>WINCODEC_ERR_PROPERTYNOTSUPPORTED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.ResultCode.UnsupportedOperation\">\n            <summary>Constant UnsupportedOperation.</summary>\n            <unmanaged>WINCODEC_ERR_UNSUPPORTEDOPERATION</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.ResultCode.Win32error\">\n            <summary>Constant Win32error.</summary>\n            <unmanaged>WINCODEC_ERR_WIN32ERROR</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.ResultCode.AccessDenied\">\n            <summary>Constant AccessDenied.</summary>\n            <unmanaged>WINCODEC_ERR_ACCESSDENIED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.ResultCode.Propertyunexpectedtype\">\n            <summary>Constant Propertyunexpectedtype.</summary>\n            <unmanaged>WINCODEC_ERR_PROPERTYUNEXPECTEDTYPE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.WIC.ResultCode.Propertynotfound\">\n            <summary>Constant Propertynotfound.</summary>\n            <unmanaged>WINCODEC_ERR_PROPERTYNOTFOUND</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.WIC.Bitmap\">\n            <summary>\t\n            <p>Defines methods that add the concept of writeability and static in-memory representations of bitmaps to <strong><see cref=\"T:SharpDX.WIC.BitmapSource\"/></strong>. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p><strong><see cref=\"T:SharpDX.WIC.Bitmap\"/></strong> inherits from <strong><see cref=\"T:SharpDX.WIC.BitmapSource\"/></strong> and therefore also inherits the <strong>CopyPixels</strong> method. When pixels need to be moved to a new memory location, <strong>CopyPixels</strong> is often the most efficient. </p><p> Because of to the internal memory representation implied by the <strong><see cref=\"T:SharpDX.WIC.Bitmap\"/></strong>, in-place modification and processing using the <strong>Lock</strong> is more efficient than <strong>CopyPixels</strong>, usually reducing to a simple reference access directly into the memory owned by the bitmap rather than a as a copy.  This is contrasted to procedural bitmaps which implement only <strong>CopyPixels</strong> because there is no internal memory representation and one would need to be created on demand to satisfy a call to <strong>Lock</strong>.  </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmap']/*\"/>\t\n            <msdn-id>ee719675</msdn-id>\t\n            <unmanaged>IWICBitmap</unmanaged>\t\n            <unmanaged-short>IWICBitmap</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.WIC.BitmapSource\">\n            <summary>\t\n            <p>Exposes methods that refers to a source from which pixels are retrieved, but cannot be written back to.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This interface provides a common way of accessing and linking together bitmaps, decoders, format converters, and scalers. Components that implement this interface can be connected together in a graph to pull imaging data through.</p><p>This interface defines only the notion of readability or being able to produce pixels. Modifying or writing to a bitmap is considered to be a specialization specific to bitmaps which have storage and is defined in the descendant interface <strong><see cref=\"T:SharpDX.WIC.Bitmap\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapSource']/*\"/>\t\n            <msdn-id>ee690171</msdn-id>\t\n            <unmanaged>IWICBitmapSource</unmanaged>\t\n            <unmanaged-short>IWICBitmapSource</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapSource.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.BitmapSource\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapSource.op_Explicit(System.IntPtr)~SharpDX.WIC.BitmapSource\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.WIC.BitmapSource\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapSource.GetSize(System.Int32@,System.Int32@)\">\n            <summary>\t\n            <p>Retrieves the pixel width and height of the bitmap.</p>\t\n            </summary>\t\n            <param name=\"widthRef\"><dd>  <p>A reference that receives the pixel width of the bitmap.</p> </dd></param>\t\n            <param name=\"heightRef\"><dd>  <p>A reference that receives the pixel height of the bitmap</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapSource::GetSize']/*\"/>\t\n            <msdn-id>ee690185</msdn-id>\t\n            <unmanaged>HRESULT IWICBitmapSource::GetSize([Out] unsigned int* puiWidth,[Out] unsigned int* puiHeight)</unmanaged>\t\n            <unmanaged-short>IWICBitmapSource::GetSize</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapSource.GetPixelFormat(System.Guid@)\">\n            <summary>\t\n            <p>Retrieves the pixel format of the bitmap source.. </p>\t\n            </summary>\t\n            <param name=\"pixelFormatRef\"><dd>  <p>Receives the pixel format <see cref=\"T:System.Guid\"/> the bitmap is stored in. For a list of available pixel formats, see the Native Pixel Formats topic.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p> The pixel format returned by this method is not necessarily the pixel format the image is stored as. The codec may perform a format conversion from the storage pixel format to an output pixel format. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapSource::GetPixelFormat']/*\"/>\t\n            <msdn-id>ee690181</msdn-id>\t\n            <unmanaged>HRESULT IWICBitmapSource::GetPixelFormat([Out] GUID* pPixelFormat)</unmanaged>\t\n            <unmanaged-short>IWICBitmapSource::GetPixelFormat</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapSource.GetResolution(System.Double@,System.Double@)\">\n            <summary>\t\n            <p>Retrieves the sampling rate between pixels and physical world measurements.</p>\t\n            </summary>\t\n            <param name=\"dpiXRef\"><dd>  <p>A reference that receives the x-axis dpi resolution.</p> </dd></param>\t\n            <param name=\"dpiYRef\"><dd>  <p>A reference that receives the y-axis dpi resolution.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p> Some formats, such as GIF and ICO, do not have full DPI support. For GIF, this method calculates the DPI values from the aspect ratio, using a base DPI of (96.0, 96.0). The ICO format does not support DPI at all, and the method always returns (96.0,96.0) for ICO images. </p><p> Additionally, WIC itself does not transform images based on the DPI values in an image. It is up to the caller to transform an image based on the resolution returned. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapSource::GetResolution']/*\"/>\t\n            <msdn-id>ee690183</msdn-id>\t\n            <unmanaged>HRESULT IWICBitmapSource::GetResolution([Out] double* pDpiX,[Out] double* pDpiY)</unmanaged>\t\n            <unmanaged-short>IWICBitmapSource::GetResolution</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapSource.CopyPalette(SharpDX.WIC.Palette)\">\n            <summary>\t\n            <p>Retrieves the color table for indexed pixel formats.</p>\t\n            </summary>\t\n            <param name=\"paletteRef\"><dd>  <p>An <strong><see cref=\"T:SharpDX.WIC.Palette\"/></strong>. A palette can be created using the <strong>CreatePalette</strong> method.</p> </dd></param>\t\n            <returns><p>Returns one of the following values.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.WIC.ResultCode.Paletteunavailable\"/></strong></dt> </dl> </td><td> <p>The palette was unavailable.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The palette was successfully copied.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> If the <strong><see cref=\"T:SharpDX.WIC.BitmapSource\"/></strong> is an <strong><see cref=\"T:SharpDX.WIC.BitmapFrameDecode\"/></strong>, the function may return the image's global palette if a frame-level palette is not available. The global palette may also be retrieved using the <strong>CopyPalette</strong> method. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapSource::CopyPalette']/*\"/>\t\n            <msdn-id>ee690177</msdn-id>\t\n            <unmanaged>HRESULT IWICBitmapSource::CopyPalette([In, Optional] IWICPalette* pIPalette)</unmanaged>\t\n            <unmanaged-short>IWICBitmapSource::CopyPalette</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapSource.CopyPixels(System.Nullable{SharpDX.DrawingRectangle},System.Int32,System.Int32,System.IntPtr)\">\n            <summary>\t\n            <p>Instructs the object to produce pixels.</p>\t\n            </summary>\t\n            <param name=\"rectangleRef\"><dd>  <p>The rectangle to copy. A <strong><c>null</c></strong> value specifies the entire bitmap.</p> </dd></param>\t\n            <param name=\"stride\"><dd>  <p>The stride of the bitmap</p> </dd></param>\t\n            <param name=\"bufferSize\"><dd>  <p>The size of the buffer.</p> </dd></param>\t\n            <param name=\"bufferRef\"><dd>  <p>A reference to the buffer.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p><strong>CopyPixels</strong> is one of the two main image processing routines (the other being <strong>Lock</strong>) triggering the actual processing.  It instructs the object to produce pixels according to its algorithm - this may involve decoding a portion of a JPEG stored on disk, copying a block of memory, or even analytically computing a complex gradient.  The algorithm is completely dependent on the object implementing the interface. </p><p> The caller can restrict the operation to a rectangle of interest (ROI) using the prc parameter.  The ROI sub-rectangle must be fully contained in the bounds of the bitmap.  Specifying a <strong><c>null</c></strong> ROI implies that the whole bitmap should be returned. \t\n            </p><p> The caller controls the memory management and must provide an output buffer (<em>pbBuffer</em>) for the results of the copy along with the buffer's bounds (<em>cbBufferSize</em>).  The cbStride parameter defines the count of bytes between two vertically adjacent pixels in the output buffer.  The caller must ensure that there is sufficient buffer to complete the call based on the width, height and pixel format of the bitmap and the sub-rectangle provided to the copy method. </p><p> If the caller needs to perform numerous copies of an expensive <strong><see cref=\"T:SharpDX.WIC.BitmapSource\"/></strong> such as a JPEG, it is recommended to create an in-memory <strong><see cref=\"T:SharpDX.WIC.Bitmap\"/></strong> first. </p>Codec Developer Remarks<p> The callee must only write to the first (prc-&gt;Width*bitsperpixel+7)/8 bytes of each line of the output buffer (in this case, a line is a consecutive string of <em>cbStride</em> bytes). </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapSource::CopyPixels']/*\"/>\t\n            <msdn-id>ee690179</msdn-id>\t\n            <unmanaged>HRESULT IWICBitmapSource::CopyPixels([In, Optional] const WICRect* prc,[In] unsigned int cbStride,[In] unsigned int cbBufferSize,[In] void* pbBuffer)</unmanaged>\t\n            <unmanaged-short>IWICBitmapSource::CopyPixels</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapSource.CopyPixels(SharpDX.DrawingRectangle,System.Int32,SharpDX.DataPointer)\">\n            <summary>\t\n            <p>Instructs the object to produce pixels.</p>\t\n            </summary>\t\n            <param name=\"rectangle\"><dd>  <p>The rectangle to copy. A <strong><c>null</c></strong> value specifies the entire bitmap.</p> </dd></param>\t\n            <param name=\"stride\"><dd>  <p>The stride of the bitmap</p> </dd></param>\t\n            <param name=\"dataPointer\"><dd>  <p>A reference to the buffer.</p> </dd></param>\t\n            <remarks>\t\n            <p><strong>CopyPixels</strong> is one of the two main image processing routines (the other being <strong>Lock</strong>) triggering the actual processing.  It instructs the object to produce pixels according to its algorithm - this may involve decoding a portion of a JPEG stored on disk, copying a block of memory, or even analytically computing a complex gradient.  The algorithm is completely dependent on the object implementing the interface. </p><p> The caller can restrict the operation to a rectangle of interest (ROI) using the prc parameter.  The ROI sub-rectangle must be fully contained in the bounds of the bitmap.  Specifying a <strong><c>null</c></strong> ROI implies that the whole bitmap should be returned. \t\n            </p><p> The caller controls the memory management and must provide an output buffer (<em>pbBuffer</em>) for the results of the copy along with the buffer's bounds (<em>cbBufferSize</em>).  The cbStride parameter defines the count of bytes between two vertically adjacent pixels in the output buffer.  The caller must ensure that there is sufficient buffer to complete the call based on the width, height and pixel format of the bitmap and the sub-rectangle provided to the copy method. </p><p> If the caller needs to perform numerous copies of an expensive <strong><see cref=\"T:SharpDX.WIC.BitmapSource\"/></strong> such as a JPEG, it is recommended to create an in-memory <strong><see cref=\"T:SharpDX.WIC.Bitmap\"/></strong> first. </p>Codec Developer Remarks<p> The callee must only write to the first (prc-&gt;Width*bitsperpixel+7)/8 bytes of each line of the output buffer (in this case, a line is a consecutive string of <em>cbStride</em> bytes). </p>\t\n            </remarks>\t\n            <msdn-id>ee690179</msdn-id>\t\n            <unmanaged>HRESULT IWICBitmapSource::CopyPixels([In, Optional] const WICRect* prc,[In] unsigned int cbStride,[In] unsigned int cbBufferSize,[In] void* pbBuffer)</unmanaged>\t\n            <unmanaged-short>IWICBitmapSource::CopyPixels</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapSource.CopyPixels(System.Int32,SharpDX.DataPointer)\">\n            <summary>\t\n            <p>Instructs the object to produce pixels.</p>\t\n            </summary>\t\n            <param name=\"stride\"><dd>  <p>The stride of the bitmap</p> </dd></param>\t\n            <param name=\"dataPointer\"><dd>  <p>A reference to the buffer.</p> </dd></param>\t\n            <remarks>\t\n            <p><strong>CopyPixels</strong> is one of the two main image processing routines (the other being <strong>Lock</strong>) triggering the actual processing.  It instructs the object to produce pixels according to its algorithm - this may involve decoding a portion of a JPEG stored on disk, copying a block of memory, or even analytically computing a complex gradient.  The algorithm is completely dependent on the object implementing the interface. </p><p> The caller can restrict the operation to a rectangle of interest (ROI) using the prc parameter.  The ROI sub-rectangle must be fully contained in the bounds of the bitmap.  Specifying a <strong><c>null</c></strong> ROI implies that the whole bitmap should be returned. \t\n            </p><p> The caller controls the memory management and must provide an output buffer (<em>pbBuffer</em>) for the results of the copy along with the buffer's bounds (<em>cbBufferSize</em>).  The cbStride parameter defines the count of bytes between two vertically adjacent pixels in the output buffer.  The caller must ensure that there is sufficient buffer to complete the call based on the width, height and pixel format of the bitmap and the sub-rectangle provided to the copy method. </p><p> If the caller needs to perform numerous copies of an expensive <strong><see cref=\"T:SharpDX.WIC.BitmapSource\"/></strong> such as a JPEG, it is recommended to create an in-memory <strong><see cref=\"T:SharpDX.WIC.Bitmap\"/></strong> first. </p>Codec Developer Remarks<p> The callee must only write to the first (prc-&gt;Width*bitsperpixel+7)/8 bytes of each line of the output buffer (in this case, a line is a consecutive string of <em>cbStride</em> bytes). </p>\t\n            </remarks>\t\n            <msdn-id>ee690179</msdn-id>\t\n            <unmanaged>HRESULT IWICBitmapSource::CopyPixels([In, Optional] const WICRect* prc,[In] unsigned int cbStride,[In] unsigned int cbBufferSize,[In] void* pbBuffer)</unmanaged>\t\n            <unmanaged-short>IWICBitmapSource::CopyPixels</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapSource.CopyPixels(System.Int32,System.IntPtr,System.Int32)\">\n            <summary>\t\n            <p>Instructs the object to produce pixels.</p>\t\n            </summary>\t\n            <param name=\"stride\"><dd>  <p>The stride of the bitmap</p> </dd></param>\t\n            <param name=\"dataPointer\"><dd>  <p>A reference to the buffer.</p> </dd></param>\t\n            <param name=\"size\">Size of the buffer in bytes.</param>\t\n            <remarks>\t\n            <p><strong>CopyPixels</strong> is one of the two main image processing routines (the other being <strong>Lock</strong>) triggering the actual processing.  It instructs the object to produce pixels according to its algorithm - this may involve decoding a portion of a JPEG stored on disk, copying a block of memory, or even analytically computing a complex gradient.  The algorithm is completely dependent on the object implementing the interface. </p><p> The caller can restrict the operation to a rectangle of interest (ROI) using the prc parameter.  The ROI sub-rectangle must be fully contained in the bounds of the bitmap.  Specifying a <strong><c>null</c></strong> ROI implies that the whole bitmap should be returned. \t\n            </p><p> The caller controls the memory management and must provide an output buffer (<em>pbBuffer</em>) for the results of the copy along with the buffer's bounds (<em>cbBufferSize</em>).  The cbStride parameter defines the count of bytes between two vertically adjacent pixels in the output buffer.  The caller must ensure that there is sufficient buffer to complete the call based on the width, height and pixel format of the bitmap and the sub-rectangle provided to the copy method. </p><p> If the caller needs to perform numerous copies of an expensive <strong><see cref=\"T:SharpDX.WIC.BitmapSource\"/></strong> such as a JPEG, it is recommended to create an in-memory <strong><see cref=\"T:SharpDX.WIC.Bitmap\"/></strong> first. </p>Codec Developer Remarks<p> The callee must only write to the first (prc-&gt;Width*bitsperpixel+7)/8 bytes of each line of the output buffer (in this case, a line is a consecutive string of <em>cbStride</em> bytes). </p>\t\n            </remarks>\t\n            <msdn-id>ee690179</msdn-id>\t\n            <unmanaged>HRESULT IWICBitmapSource::CopyPixels([In, Optional] const WICRect* prc,[In] unsigned int cbStride,[In] unsigned int cbBufferSize,[In] void* pbBuffer)</unmanaged>\t\n            <unmanaged-short>IWICBitmapSource::CopyPixels</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapSource.CopyPixels``1(SharpDX.DrawingRectangle,``0[])\">\n            <summary>\t\n            <p>Instructs the object to produce pixels.</p>\t\n            </summary>\t\n            <param name=\"rectangle\"><dd>  <p>The rectangle to copy. A <strong><c>null</c></strong> value specifies the entire bitmap.</p> </dd></param>\t\n            <param name=\"output\">The destination array. The size of the array must be sizeof(pixel) * rectangle.Width * rectangle.Height</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p><strong>CopyPixels</strong> is one of the two main image processing routines (the other being <strong>Lock</strong>) triggering the actual processing.  It instructs the object to produce pixels according to its algorithm - this may involve decoding a portion of a JPEG stored on disk, copying a block of memory, or even analytically computing a complex gradient.  The algorithm is completely dependent on the object implementing the interface. </p><p> The caller can restrict the operation to a rectangle of interest (ROI) using the prc parameter.  The ROI sub-rectangle must be fully contained in the bounds of the bitmap.  Specifying a <strong><c>null</c></strong> ROI implies that the whole bitmap should be returned. \t\n            </p><p> The caller controls the memory management and must provide an output buffer (<em>pbBuffer</em>) for the results of the copy along with the buffer's bounds (<em>cbBufferSize</em>).  The cbStride parameter defines the count of bytes between two vertically adjacent pixels in the output buffer.  The caller must ensure that there is sufficient buffer to complete the call based on the width, height and pixel format of the bitmap and the sub-rectangle provided to the copy method. </p><p> If the caller needs to perform numerous copies of an expensive <strong><see cref=\"T:SharpDX.WIC.BitmapSource\"/></strong> such as a JPEG, it is recommended to create an in-memory <strong><see cref=\"T:SharpDX.WIC.Bitmap\"/></strong> first. </p>Codec Developer Remarks<p> The callee must only write to the first (prc-&gt;Width*bitsperpixel+7)/8 bytes of each line of the output buffer (in this case, a line is a consecutive string of <em>cbStride</em> bytes). </p>\t\n            </remarks>\t\n            <msdn-id>ee690179</msdn-id>\t\n            <unmanaged>HRESULT IWICBitmapSource::CopyPixels([In, Optional] const WICRect* prc,[In] unsigned int cbStride,[In] unsigned int cbBufferSize,[In] void* pbBuffer)</unmanaged>\t\n            <unmanaged-short>IWICBitmapSource::CopyPixels</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapSource.CopyPixels``1(``0[])\">\n            <summary>\t\n            <p>Instructs the object to produce pixels.</p>\t\n            </summary>\t\n            <param name=\"output\">The destination array. The size of the array must be sizeof(pixel) * Width * Height</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p><strong>CopyPixels</strong> is one of the two main image processing routines (the other being <strong>Lock</strong>) triggering the actual processing.  It instructs the object to produce pixels according to its algorithm - this may involve decoding a portion of a JPEG stored on disk, copying a block of memory, or even analytically computing a complex gradient.  The algorithm is completely dependent on the object implementing the interface. </p><p> The caller can restrict the operation to a rectangle of interest (ROI) using the prc parameter.  The ROI sub-rectangle must be fully contained in the bounds of the bitmap.  Specifying a <strong><c>null</c></strong> ROI implies that the whole bitmap should be returned. \t\n            </p><p> The caller controls the memory management and must provide an output buffer (<em>pbBuffer</em>) for the results of the copy along with the buffer's bounds (<em>cbBufferSize</em>).  The cbStride parameter defines the count of bytes between two vertically adjacent pixels in the output buffer.  The caller must ensure that there is sufficient buffer to complete the call based on the width, height and pixel format of the bitmap and the sub-rectangle provided to the copy method. </p><p> If the caller needs to perform numerous copies of an expensive <strong><see cref=\"T:SharpDX.WIC.BitmapSource\"/></strong> such as a JPEG, it is recommended to create an in-memory <strong><see cref=\"T:SharpDX.WIC.Bitmap\"/></strong> first. </p>Codec Developer Remarks<p> The callee must only write to the first (prc-&gt;Width*bitsperpixel+7)/8 bytes of each line of the output buffer (in this case, a line is a consecutive string of <em>cbStride</em> bytes). </p>\t\n            </remarks>\t\n            <msdn-id>ee690179</msdn-id>\t\n            <unmanaged>HRESULT IWICBitmapSource::CopyPixels([In, Optional] const WICRect* prc,[In] unsigned int cbStride,[In] unsigned int cbBufferSize,[In] void* pbBuffer)</unmanaged>\t\n            <unmanaged-short>IWICBitmapSource::CopyPixels</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.WIC.BitmapSource.PixelFormat\">\n            <summary>\t\n            <p>Retrieves the pixel format of the bitmap source.. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p> The pixel format returned by this method is not necessarily the pixel format the image is stored as. The codec may perform a format conversion from the storage pixel format to an output pixel format. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapSource::GetPixelFormat']/*\"/>\t\n            <msdn-id>ee690181</msdn-id>\t\n            <unmanaged>GetPixelFormat</unmanaged>\t\n            <unmanaged-short>GetPixelFormat</unmanaged-short>\t\n            <unmanaged>HRESULT IWICBitmapSource::GetPixelFormat([Out] GUID* pPixelFormat)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.WIC.BitmapSource.Size\">\n            <summary>\t\n            <p>Retrieves the pixel width and height of the bitmap.</p>\t\n            </summary>\t\n            <unmanaged>HRESULT IWICBitmapSource::GetSize([Out] unsigned int* puiWidth,[Out] unsigned int* puiHeight)</unmanaged>\n            <msdn-id>ee690185</msdn-id>\t\n            <unmanaged>HRESULT IWICBitmapSource::GetSize([Out] unsigned int* puiWidth,[Out] unsigned int* puiHeight)</unmanaged>\t\n            <unmanaged-short>IWICBitmapSource::GetSize</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.Bitmap.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.Bitmap\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.Bitmap.op_Explicit(System.IntPtr)~SharpDX.WIC.Bitmap\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.WIC.Bitmap\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.WIC.Bitmap.Lock(System.Nullable{SharpDX.DrawingRectangle},SharpDX.WIC.BitmapLockFlags)\">\n            <summary>\t\n            <p>Provides access to a rectangular area of the bitmap.</p>\t\n            </summary>\t\n            <param name=\"rcLockRef\"><dd>  <p>The rectangle to be accessed.</p> </dd></param>\t\n            <param name=\"flags\"><dd>  <p>The access mode you wish to obtain for the lock. This is a bitwise combination of <strong><see cref=\"T:SharpDX.WIC.BitmapLockFlags\"/></strong> for read, write, or read and write access.</p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.WIC.BitmapLockFlags.Read\"/></strong></dt> </dl> </td><td> <p>The read access lock.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.WIC.BitmapLockFlags.Write\"/></strong></dt> </dl> </td><td> <p>The write access lock.</p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <returns><dd>  <p>A reference that receives the locked memory location.</p> </dd></returns>\t\n            <remarks>\t\n            <p>Locks are exclusive for writing but can be shared for reading. You cannot call <strong>CopyPixels</strong> while the <strong><see cref=\"T:SharpDX.WIC.Bitmap\"/></strong> is locked for writing. Doing so will return an error, since locks are exclusive.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmap::Lock']/*\"/>\t\n            <msdn-id>ee690187</msdn-id>\t\n            <unmanaged>HRESULT IWICBitmap::Lock([In, Optional] const WICRect* prcLock,[In] WICBitmapLockFlags flags,[Out] IWICBitmapLock** ppILock)</unmanaged>\t\n            <unmanaged-short>IWICBitmap::Lock</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.Bitmap.SetPalette(SharpDX.WIC.Palette)\">\n            <summary>\t\n            <p>Provides access for palette modifications.</p>\t\n            </summary>\t\n            <param name=\"paletteRef\"><dd>  <p>The palette to use for conversion.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmap::SetPalette']/*\"/>\t\n            <msdn-id>ee690189</msdn-id>\t\n            <unmanaged>HRESULT IWICBitmap::SetPalette([In, Optional] IWICPalette* pIPalette)</unmanaged>\t\n            <unmanaged-short>IWICBitmap::SetPalette</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.Bitmap.SetResolution(System.Double,System.Double)\">\n            <summary>\t\n            <p>Changes the physical resolution of the image.</p>\t\n            </summary>\t\n            <param name=\"dpiX\"><dd>  <p>The horizontal resolution.</p> </dd></param>\t\n            <param name=\"dpiY\"><dd>  <p>The vertical resolution.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p> This method has no effect on the actual pixels or samples stored in the bitmap.  Instead the interpretation of the sampling rate is modified.  This means that a 96 DPI image which is 96 pixels wide is one inch.  If the physical resolution is modified to 48 DPI, then the bitmap is considered to be 2 inches wide but has the same number of pixels.   If the resolution is less than <strong>REAL_EPSILON</strong> (1.192092896e-07F) the error code <strong><see cref=\"F:SharpDX.WIC.ResultCode.InvalidParameter\"/></strong> is returned.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmap::SetResolution']/*\"/>\t\n            <msdn-id>ee690191</msdn-id>\t\n            <unmanaged>HRESULT IWICBitmap::SetResolution([In] double dpiX,[In] double dpiY)</unmanaged>\t\n            <unmanaged-short>IWICBitmap::SetResolution</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.Bitmap.#ctor(SharpDX.WIC.ImagingFactory,System.Int32,System.Int32,System.Guid,SharpDX.WIC.BitmapCreateCacheOption)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.Bitmap\"/> class.\n            </summary>\n            <param name=\"factory\">The factory.</param>\n            <param name=\"width\">The width.</param>\n            <param name=\"height\">The height.</param>\n            <param name=\"pixelFormat\">The pixel format. <see cref=\"T:SharpDX.WIC.PixelFormat\"/> for a list of valid formats. </param>\n            <param name=\"option\">The option.</param>\n            <msdn-id>ee690282</msdn-id>\t\n            <unmanaged>HRESULT IWICImagingFactory::CreateBitmap([In] unsigned int uiWidth,[In] unsigned int uiHeight,[In] const GUID&amp; pixelFormat,[In] WICBitmapCreateCacheOption option,[Out, Fast] IWICBitmap** ppIBitmap)</unmanaged>\t\n            <unmanaged-short>IWICImagingFactory::CreateBitmap</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.Bitmap.#ctor(SharpDX.WIC.ImagingFactory,System.Int32,System.Int32,System.Guid,SharpDX.DataRectangle,System.Int32)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.Bitmap\"/> class from a memory location using <see cref=\"T:SharpDX.DataRectangle\"/>.\n            </summary>\n            <param name=\"factory\">The factory.</param>\n            <param name=\"width\">The width.</param>\n            <param name=\"height\">The height.</param>\n            <param name=\"pixelFormat\">The pixel format.</param>\n            <param name=\"dataRectangle\">The data rectangle.</param>\n            <param name=\"totalSizeInBytes\">Size of the buffer in <see cref=\"!:dataRectangle\"/>. If == 0, calculate the size automatically based on the height and row pitch.</param>\n            <msdn-id>ee690291</msdn-id>\t\n            <unmanaged>HRESULT IWICImagingFactory::CreateBitmapFromMemory([In] unsigned int uiWidth,[In] unsigned int uiHeight,[In] const GUID&amp; pixelFormat,[In] unsigned int cbStride,[In] unsigned int cbBufferSize,[In] void* pbBuffer,[Out, Fast] IWICBitmap** ppIBitmap)</unmanaged>\t\n            <unmanaged-short>IWICImagingFactory::CreateBitmapFromMemory</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.Bitmap.#ctor(SharpDX.WIC.ImagingFactory,SharpDX.WIC.BitmapSource,SharpDX.WIC.BitmapCreateCacheOption)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.Bitmap\"/> class from a <see cref=\"T:SharpDX.WIC.BitmapSource\"/>\n            </summary>\n            <param name=\"factory\">The factory.</param>\n            <param name=\"bitmapSource\">The bitmap source ref.</param>\n            <param name=\"option\">The option.</param>\n            <msdn-id>ee690293</msdn-id>\t\n            <unmanaged>HRESULT IWICImagingFactory::CreateBitmapFromSource([In, Optional] IWICBitmapSource* pIBitmapSource,[In] WICBitmapCreateCacheOption option,[Out, Fast] IWICBitmap** ppIBitmap)</unmanaged>\t\n            <unmanaged-short>IWICImagingFactory::CreateBitmapFromSource</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.Bitmap.#ctor(SharpDX.WIC.ImagingFactory,SharpDX.WIC.BitmapSource,SharpDX.DrawingRectangle)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.Bitmap\"/> class from a <see cref=\"T:SharpDX.WIC.BitmapSource\"/>.\n            </summary>\n            <param name=\"factory\">The factory.</param>\n            <param name=\"bitmapSource\">The bitmap source.</param>\n            <param name=\"rectangle\">The rectangle.</param>\n            <msdn-id>ee690294</msdn-id>\t\n            <unmanaged>HRESULT IWICImagingFactory::CreateBitmapFromSourceRect([In, Optional] IWICBitmapSource* pIBitmapSource,[In] unsigned int x,[In] unsigned int y,[In] unsigned int width,[In] unsigned int height,[Out, Fast] IWICBitmap** ppIBitmap)</unmanaged>\t\n            <unmanaged-short>IWICImagingFactory::CreateBitmapFromSourceRect</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.Bitmap.New``1(SharpDX.WIC.ImagingFactory,System.Int32,System.Int32,System.Guid,``0[],System.Int32)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.Bitmap\"/> class from an array of pixel datas.\n            </summary>\n            <param name=\"factory\">The factory.</param>\n            <param name=\"width\">The width.</param>\n            <param name=\"height\">The height.</param>\n            <param name=\"pixelFormat\">The pixel format.</param>\n            <param name=\"pixelDatas\">The pixel datas.</param>\n            <param name=\"stride\">Stride of a row of pixels (number of bytes per row). By default the stride is == 0, and calculated by taking the sizeof(T) * width.</param>\n            <msdn-id>ee690291</msdn-id>\t\n            <unmanaged>HRESULT IWICImagingFactory::CreateBitmapFromMemory([In] unsigned int uiWidth,[In] unsigned int uiHeight,[In] const GUID&amp; pixelFormat,[In] unsigned int cbStride,[In] unsigned int cbBufferSize,[In] void* pbBuffer,[Out, Fast] IWICBitmap** ppIBitmap)</unmanaged>\t\n            <unmanaged-short>IWICImagingFactory::CreateBitmapFromMemory</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.Bitmap.#ctor(SharpDX.WIC.ImagingFactory,System.Drawing.Icon)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.Bitmap\"/> class from a <see cref=\"T:System.Drawing.Icon\"/>.\n            </summary>\n            <param name=\"factory\">The factory.</param>\n            <param name=\"icon\">The icon.</param>\n            <unmanaged>HRESULT IWICImagingFactory::CreateBitmapFromHICON([In] HICON hIcon,[Out, Fast] IWICBitmap** ppIBitmap)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.WIC.Bitmap.#ctor(SharpDX.WIC.ImagingFactory,System.Drawing.Bitmap,SharpDX.WIC.BitmapAlphaChannelOption)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.Bitmap\"/> class from a <see cref=\"T:System.Drawing.Bitmap\"/>.\n            </summary>\n            <param name=\"factory\">The factory.</param>\n            <param name=\"bitmap\">The bitmap.</param>\n            <param name=\"options\">The options.</param>\n            <unmanaged>HRESULT IWICImagingFactory::CreateBitmapFromHBITMAP([In] HBITMAP hBitmap,[In, Optional] HPALETTE hPalette,[In] WICBitmapAlphaChannelOption options,[Out, Fast] IWICBitmap** ppIBitmap)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.WIC.Bitmap.Palette\">\n            <summary>\t\n            <p>Provides access for palette modifications.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmap::SetPalette']/*\"/>\t\n            <msdn-id>ee690189</msdn-id>\t\n            <unmanaged>SetPalette</unmanaged>\t\n            <unmanaged-short>SetPalette</unmanaged-short>\t\n            <unmanaged>HRESULT IWICBitmap::SetPalette([In, Optional] IWICPalette* pIPalette)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.WIC.BitmapClipper\">\n            <summary>\t\n            <p>Exposes methods that produce a clipped version of the input bitmap for a specified rectangular region of interest.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapClipper']/*\"/>\t\n            <msdn-id>ee719676</msdn-id>\t\n            <unmanaged>IWICBitmapClipper</unmanaged>\t\n            <unmanaged-short>IWICBitmapClipper</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapClipper.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.BitmapClipper\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapClipper.op_Explicit(System.IntPtr)~SharpDX.WIC.BitmapClipper\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.WIC.BitmapClipper\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapClipper.Initialize(SharpDX.WIC.BitmapSource,SharpDX.DrawingRectangle)\">\n            <summary>\t\n            <p>Initializes the bitmap clipper with the provided parameters.</p>\t\n            </summary>\t\n            <param name=\"sourceRef\"><dd>  <p>he input bitmap source.</p> </dd></param>\t\n            <param name=\"rectangleRef\"><dd>  <p>The rectangle of the bitmap source to clip.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapClipper::Initialize']/*\"/>\t\n            <msdn-id>ee719677</msdn-id>\t\n            <unmanaged>HRESULT IWICBitmapClipper::Initialize([In, Optional] IWICBitmapSource* pISource,[In] const WICRect* prc)</unmanaged>\t\n            <unmanaged-short>IWICBitmapClipper::Initialize</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapClipper.#ctor(SharpDX.WIC.ImagingFactory)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.BitmapClipper\"/> class.\n            </summary>\n            <param name=\"factory\">The factory.</param>\n        </member>\n        <member name=\"T:SharpDX.WIC.BitmapCodecInfo\">\n            <summary>\t\n            <p>Exposes methods that provide information about a particular codec.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapCodecInfo']/*\"/>\t\n            <msdn-id>ee719679</msdn-id>\t\n            <unmanaged>IWICBitmapCodecInfo</unmanaged>\t\n            <unmanaged-short>IWICBitmapCodecInfo</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.WIC.ComponentInfo\">\n            <summary>\t\n            <p>Exposes methods that provide component information.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICComponentInfo']/*\"/>\t\n            <msdn-id>ee690213</msdn-id>\t\n            <unmanaged>IWICComponentInfo</unmanaged>\t\n            <unmanaged-short>IWICComponentInfo</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.ComponentInfo.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.ComponentInfo\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.ComponentInfo.op_Explicit(System.IntPtr)~SharpDX.WIC.ComponentInfo\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.WIC.ComponentInfo\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.WIC.ComponentInfo.GetComponentType(SharpDX.WIC.ComponentType@)\">\n            <summary>\t\n            <p>Retrieves the component's <strong><see cref=\"T:SharpDX.WIC.ComponentType\"/></strong>.</p>\t\n            </summary>\t\n            <param name=\"typeRef\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICComponentInfo::GetComponentType']/*\"/>\t\n            <msdn-id>ee690218</msdn-id>\t\n            <unmanaged>HRESULT IWICComponentInfo::GetComponentType([Out] WICComponentType* pType)</unmanaged>\t\n            <unmanaged-short>IWICComponentInfo::GetComponentType</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.ComponentInfo.GetCLSID(System.Guid@)\">\n            <summary>\t\n            <p>Retrieves the component's class identifier (CLSID)</p>\t\n            </summary>\t\n            <param name=\"clsidRef\"><dd>  <p>A reference that receives the component's CLSID.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICComponentInfo::GetCLSID']/*\"/>\t\n            <msdn-id>ee690216</msdn-id>\t\n            <unmanaged>HRESULT IWICComponentInfo::GetCLSID([Out] GUID* pclsid)</unmanaged>\t\n            <unmanaged-short>IWICComponentInfo::GetCLSID</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.ComponentInfo.GetSigningStatus(System.Int32@)\">\n            <summary>\t\n            <p>Retrieves the signing status of the component.</p>\t\n            </summary>\t\n            <param name=\"statusRef\"><dd>  <p>A reference that receives the <strong><see cref=\"T:SharpDX.WIC.ComponentSigning\"/></strong> status of the component.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>Signing is unused by WIC. Therefore, all components <see cref=\"F:SharpDX.WIC.ComponentSigning.Signed\"/>.</p><p>This function can be used to determine whether a component has no binary component or has been added to the disabled components list in the registry.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICComponentInfo::GetSigningStatus']/*\"/>\t\n            <msdn-id>ee690221</msdn-id>\t\n            <unmanaged>HRESULT IWICComponentInfo::GetSigningStatus([Out] unsigned int* pStatus)</unmanaged>\t\n            <unmanaged-short>IWICComponentInfo::GetSigningStatus</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.ComponentInfo.GetAuthor(System.Int32,System.IntPtr,System.Int32@)\">\n            <summary>\t\n            <p>Retrieves the name of component's author.</p>\t\n            </summary>\t\n            <param name=\"cchAuthor\"><dd>  <p>The size of the <em>wzAuthor</em> buffer.</p> </dd></param>\t\n            <param name=\"author\"><dd>  <p>A reference that receives the name of the component's author. The locale of the string depends on the value that the codec wrote to the registry at install time. For built-in components, these strings are always in English.</p> </dd></param>\t\n            <param name=\"cchActualRef\"><dd>  <p>A reference that receives the actual length of the component's authors name. The author name is optional; if an author name is not specified by the component, the length returned is 0.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>If <em>cchAuthor</em> is 0 and <em>wzAuthor</em> is <strong><c>null</c></strong>, the required buffer size is returned in <em>pccchActual</em>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICComponentInfo::GetAuthor']/*\"/>\t\n            <msdn-id>ee690214</msdn-id>\t\n            <unmanaged>HRESULT IWICComponentInfo::GetAuthor([In] unsigned int cchAuthor,[In] void* wzAuthor,[Out] unsigned int* pcchActual)</unmanaged>\t\n            <unmanaged-short>IWICComponentInfo::GetAuthor</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.ComponentInfo.GetVendorGUID(System.Guid@)\">\n            <summary>\t\n            <p>Retrieves the vendor <see cref=\"T:System.Guid\"/>.</p>\t\n            </summary>\t\n            <param name=\"guidVendorRef\"><dd>  <p>A reference that receives the component's vendor <see cref=\"T:System.Guid\"/>.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICComponentInfo::GetVendorGUID']/*\"/>\t\n            <msdn-id>ee690225</msdn-id>\t\n            <unmanaged>HRESULT IWICComponentInfo::GetVendorGUID([Out] GUID* pguidVendor)</unmanaged>\t\n            <unmanaged-short>IWICComponentInfo::GetVendorGUID</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.ComponentInfo.GetVersion(System.Int32,System.IntPtr,System.Int32@)\">\n            <summary>\t\n            <p>Retrieves the component's version. </p>\t\n            </summary>\t\n            <param name=\"cchVersion\"><dd>  <p>The size of the <em>wzVersion</em> buffer.</p> </dd></param>\t\n            <param name=\"version\"><dd>  <p>A reference that receives a culture invariant string of the component's version.</p> </dd></param>\t\n            <param name=\"cchActualRef\"><dd>  <p>A reference that receives the actual length of the component's version. The version is optional; if a value is not specified by the component, the length returned is 0.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>All built-in components return \"1.0.0.0\", except for pixel formats, which do not have a version.</p><p>If <em>cchAuthor</em> is 0 and <em>wzAuthor</em> is <strong><c>null</c></strong>, the required buffer size is returned in <em>pccchActual</em>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICComponentInfo::GetVersion']/*\"/>\t\n            <msdn-id>ee690226</msdn-id>\t\n            <unmanaged>HRESULT IWICComponentInfo::GetVersion([In] unsigned int cchVersion,[In] void* wzVersion,[Out] unsigned int* pcchActual)</unmanaged>\t\n            <unmanaged-short>IWICComponentInfo::GetVersion</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.ComponentInfo.GetSpecVersion(System.Int32,System.IntPtr,System.Int32@)\">\n            <summary>\t\n            <p>Retrieves the component's specification version.</p>\t\n            </summary>\t\n            <param name=\"cchSpecVersion\"><dd>  <p>The size of the <em>wzSpecVersion</em> buffer.</p> </dd></param>\t\n            <param name=\"specVersion\"><dd>  <p>When this method returns, contain a culture invarient string of the component's specification version. The version form is NN.NN.NN.NN.</p> </dd></param>\t\n            <param name=\"cchActualRef\"><dd>  <p>A reference that receives the actual length of the component's specification version. The specification version is optional; if a value is not specified by the component, the length returned is 0.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>All built-in components return \"1.0.0.0\", except for pixel formats, which do not have a spec version.</p><p>If <em>cchAuthor</em> is 0 and <em>wzAuthor</em> is <strong><c>null</c></strong>, the required buffer size is returned in <em>pccchActual</em>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICComponentInfo::GetSpecVersion']/*\"/>\t\n            <msdn-id>ee690223</msdn-id>\t\n            <unmanaged>HRESULT IWICComponentInfo::GetSpecVersion([In] unsigned int cchSpecVersion,[In] void* wzSpecVersion,[Out] unsigned int* pcchActual)</unmanaged>\t\n            <unmanaged-short>IWICComponentInfo::GetSpecVersion</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.ComponentInfo.GetFriendlyName(System.Int32,System.IntPtr,System.Int32@)\">\n            <summary>\t\n            <p>Retrieves the component's friendly name, which is a human-readable display name for the component.</p>\t\n            </summary>\t\n            <param name=\"cchFriendlyName\"><dd>  <p>The size of the <em>wzFriendlyName</em> buffer.</p> </dd></param>\t\n            <param name=\"friendlyName\"><dd>  <p>A reference that receives the friendly name of the component. The locale of the string depends on the value that the codec wrote to the registry at install time. For built-in components, these strings are always in English.</p> </dd></param>\t\n            <param name=\"cchActualRef\"><dd>  <p>A reference that receives the actual length of the component's friendly name.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>If <em>cchFriendlyName</em> is 0 and <em>wzFriendlyName</em> is <strong><c>null</c></strong>, the required buffer size is returned in <em>pccchActual</em>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICComponentInfo::GetFriendlyName']/*\"/>\t\n            <msdn-id>ee690219</msdn-id>\t\n            <unmanaged>HRESULT IWICComponentInfo::GetFriendlyName([In] unsigned int cchFriendlyName,[In] void* wzFriendlyName,[Out] unsigned int* pcchActual)</unmanaged>\t\n            <unmanaged-short>IWICComponentInfo::GetFriendlyName</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.ComponentInfo.#ctor(SharpDX.WIC.ImagingFactory,System.Guid)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.ComponentInfo\"/> class.\n            </summary>\n            <param name=\"factory\">The factory.</param>\n            <param name=\"clsidComponent\">The CLSID component.</param>\n        </member>\n        <member name=\"P:SharpDX.WIC.ComponentInfo.ComponentType\">\n            <summary>\t\n            <p>Retrieves the component's <strong><see cref=\"T:SharpDX.WIC.ComponentType\"/></strong>.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICComponentInfo::GetComponentType']/*\"/>\t\n            <msdn-id>ee690218</msdn-id>\t\n            <unmanaged>GetComponentType</unmanaged>\t\n            <unmanaged-short>GetComponentType</unmanaged-short>\t\n            <unmanaged>HRESULT IWICComponentInfo::GetComponentType([Out] WICComponentType* pType)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.WIC.ComponentInfo.CLSID\">\n            <summary>\t\n            <p>Retrieves the component's class identifier (CLSID)</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICComponentInfo::GetCLSID']/*\"/>\t\n            <msdn-id>ee690216</msdn-id>\t\n            <unmanaged>GetCLSID</unmanaged>\t\n            <unmanaged-short>GetCLSID</unmanaged-short>\t\n            <unmanaged>HRESULT IWICComponentInfo::GetCLSID([Out] GUID* pclsid)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.WIC.ComponentInfo.SigningStatus\">\n            <summary>\t\n            <p>Retrieves the signing status of the component.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Signing is unused by WIC. Therefore, all components <see cref=\"F:SharpDX.WIC.ComponentSigning.Signed\"/>.</p><p>This function can be used to determine whether a component has no binary component or has been added to the disabled components list in the registry.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICComponentInfo::GetSigningStatus']/*\"/>\t\n            <msdn-id>ee690221</msdn-id>\t\n            <unmanaged>GetSigningStatus</unmanaged>\t\n            <unmanaged-short>GetSigningStatus</unmanaged-short>\t\n            <unmanaged>HRESULT IWICComponentInfo::GetSigningStatus([Out] unsigned int* pStatus)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.WIC.ComponentInfo.VendorGUID\">\n            <summary>\t\n            <p>Retrieves the vendor <see cref=\"T:System.Guid\"/>.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICComponentInfo::GetVendorGUID']/*\"/>\t\n            <msdn-id>ee690225</msdn-id>\t\n            <unmanaged>GetVendorGUID</unmanaged>\t\n            <unmanaged-short>GetVendorGUID</unmanaged-short>\t\n            <unmanaged>HRESULT IWICComponentInfo::GetVendorGUID([Out] GUID* pguidVendor)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.WIC.ComponentInfo.Author\">\n            <summary>\n            Gets the author.\n            </summary>\n            <unmanaged>HRESULT IWICComponentInfo::GetAuthor([In] unsigned int cchAuthor,[InOut, Buffer, Optional] wchar_t* wzAuthor,[Out] unsigned int* pcchActual)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.WIC.ComponentInfo.Version\">\n            <summary>\n            Gets the version.\n            </summary>\n            <unmanaged>HRESULT IWICComponentInfo::GetVersion([In] unsigned int cchVersion,[InOut, Buffer, Optional] wchar_t* wzVersion,[Out] unsigned int* pcchActual)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.WIC.ComponentInfo.SpecVersion\">\n            <summary>\n            Gets the spec version.\n            </summary>\n            <unmanaged>HRESULT IWICComponentInfo::GetSpecVersion([In] unsigned int cchSpecVersion,[InOut, Buffer, Optional] wchar_t* wzSpecVersion,[Out] unsigned int* pcchActual)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.WIC.ComponentInfo.FriendlyName\">\n            <summary>\n            Gets the friendly name.\n            </summary>\n            <value>\n            The name of the friendly.\n            </value>\n            <unmanaged>HRESULT IWICComponentInfo::GetFriendlyName([In] unsigned int cchFriendlyName,[InOut, Buffer, Optional] wchar_t* wzFriendlyName,[Out] unsigned int* pcchActual)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapCodecInfo.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.BitmapCodecInfo\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapCodecInfo.op_Explicit(System.IntPtr)~SharpDX.WIC.BitmapCodecInfo\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.WIC.BitmapCodecInfo\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapCodecInfo.GetContainerFormat(System.Guid@)\">\n            <summary>\t\n            <p>Retrieves the container <see cref=\"T:System.Guid\"/> associated with the codec.</p>\t\n            </summary>\t\n            <param name=\"guidContainerFormatRef\"><dd>  <p>Receives the container <see cref=\"T:System.Guid\"/>.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapCodecInfo::GetContainerFormat']/*\"/>\t\n            <msdn-id>ee719688</msdn-id>\t\n            <unmanaged>HRESULT IWICBitmapCodecInfo::GetContainerFormat([Out] GUID* pguidContainerFormat)</unmanaged>\t\n            <unmanaged-short>IWICBitmapCodecInfo::GetContainerFormat</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapCodecInfo.GetPixelFormats(System.Int32,System.Guid[],System.Int32@)\">\n            <summary>\t\n            <p>Retrieves the pixel formats the codec supports.</p>\t\n            </summary>\t\n            <param name=\"formats\"><dd>  <p>The size of the <em>pguidPixelFormats</em> array. Use <code>0</code> on first call to determine the needed array size.</p> </dd></param>\t\n            <param name=\"guidPixelFormatsRef\"><dd>  <p>Receives the supported pixel formats. Use <code><c>null</c></code> on first call to determine needed array size.</p> </dd></param>\t\n            <param name=\"actualRef\"><dd>  <p>The array size needed to retrieve all supported pixel formats.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p> The usage pattern for this method is a two call process. The first call retrieves the array size needed to retrieve all the supported pixel formats by calling it with <em>cFormats</em> set to <code>0</code> and <em>pguidPixelFormats</em> set to <code><c>null</c></code>. This call sets <em>pcActual</em> to the array size needed. Once the needed array size is determined, a second <strong>GetPixelFormats</strong> call with <em>pguidPixelFormats</em> set to an array of the appropriate size will retrieve the pixel formats. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapCodecInfo::GetPixelFormats']/*\"/>\t\n            <msdn-id>ee690082</msdn-id>\t\n            <unmanaged>HRESULT IWICBitmapCodecInfo::GetPixelFormats([In] unsigned int cFormats,[In, Buffer] GUID* pguidPixelFormats,[Out] unsigned int* pcActual)</unmanaged>\t\n            <unmanaged-short>IWICBitmapCodecInfo::GetPixelFormats</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapCodecInfo.GetColorManagementVersion(System.Int32,System.IntPtr,System.Int32@)\">\n            <summary>\t\n            <p>Retrieves the color manangement version number the codec supports.</p>\t\n            </summary>\t\n            <param name=\"cchColorManagementVersion\"><dd>  <p>The size of the version buffer. Use <code>0</code> on first call to determine needed buffer size.</p> </dd></param>\t\n            <param name=\"colorManagementVersion\"><dd>  <p>Receives the color management version number. Use <code><c>null</c></code> on first call to determine needed buffer size.</p> </dd></param>\t\n            <param name=\"cchActualRef\"><dd>  <p>The actual buffer size needed to retrieve the full color management version number.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p> The usage pattern for this method is a two call process. The first call retrieves the buffer size needed to retrieve the full color management version number by calling it with <em>cchColorManagementVersion</em> set to <code>0</code> and <em>wzColorManagementVersion</em> set to <code><c>null</c></code>. This call sets <em>pcchActual</em> to the buffer size needed. Once the needed buffer size is determined, a second <strong>GetColorManagementVersion</strong> call with <em>cchColorManagementVersion</em> set to the buffer size and <em>wzColorManagementVersion</em> set to a buffer of the appropriate size will retrieve the pixel formats. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapCodecInfo::GetColorManagementVersion']/*\"/>\t\n            <msdn-id>ee719687</msdn-id>\t\n            <unmanaged>HRESULT IWICBitmapCodecInfo::GetColorManagementVersion([In] unsigned int cchColorManagementVersion,[In] void* wzColorManagementVersion,[Out] unsigned int* pcchActual)</unmanaged>\t\n            <unmanaged-short>IWICBitmapCodecInfo::GetColorManagementVersion</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapCodecInfo.GetDeviceManufacturer(System.Int32,System.IntPtr,System.Int32@)\">\n            <summary>\t\n            <p>Retrieves the name of the device manufacture associated with the codec.</p>\t\n            </summary>\t\n            <param name=\"cchDeviceManufacturer\"><dd>  <p>The size of the device manufacture's name. Use <code>0</code> on first call to determine needed buffer size.</p> </dd></param>\t\n            <param name=\"deviceManufacturer\"><dd>  <p>Receives the device manufacture's name. Use <code><c>null</c></code> on first call to determine needed buffer size.</p> </dd></param>\t\n            <param name=\"cchActualRef\"><dd>  <p>The actual buffer size needed to retrieve the device manufacture's name.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p> The usage pattern for this method is a two call process. The first call retrieves the buffer size needed to retrieve the full color management version number by calling it with <em>cchDeviceManufacturer</em> set to <code>0</code> and <em>wzDeviceManufacturer</em> set to <code><c>null</c></code>. This call sets <em>pcchActual</em> to the buffer size needed. Once the needed buffer size is determined, a second <strong>GetDeviceManufacturer</strong> call with <em>cchDeviceManufacturer</em> set to the buffer size and <em>wzDeviceManufacturer</em> set to a buffer of the appropriate size will retrieve the pixel formats. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapCodecInfo::GetDeviceManufacturer']/*\"/>\t\n            <msdn-id>ee719690</msdn-id>\t\n            <unmanaged>HRESULT IWICBitmapCodecInfo::GetDeviceManufacturer([In] unsigned int cchDeviceManufacturer,[In] void* wzDeviceManufacturer,[Out] unsigned int* pcchActual)</unmanaged>\t\n            <unmanaged-short>IWICBitmapCodecInfo::GetDeviceManufacturer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapCodecInfo.GetDeviceModels(System.Int32,System.IntPtr,System.Int32@)\">\n            <summary>\t\n            <p>Retrieves a comma delimited list of device models associated with the codec.</p>\t\n            </summary>\t\n            <param name=\"cchDeviceModels\"><dd>  <p>The size of the device models buffer. Use <code>0</code> on first call to determine needed buffer size.</p> </dd></param>\t\n            <param name=\"deviceModels\"><dd>  <p>Receives a comma delimited list of device model names associated with the codec. Use <code><c>null</c></code> on first call to determine needed buffer size.</p> </dd></param>\t\n            <param name=\"cchActualRef\"><dd>  <p>The actual buffer size needed to retrieve all of the device model names.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p> The usage pattern for this method is a two call process. The first call retrieves the buffer size needed to retrieve the full color management version number by calling it with <em>cchDeviceModels</em> set to <code>0</code> and <em>wzDeviceModels</em> set to <code><c>null</c></code>. This call sets <em>pcchActual</em> to the buffer size needed. Once the needed buffer size is determined, a second <strong>GetDeviceModels</strong> call with <em>cchDeviceModels</em> set to the buffer size and <em>wzDeviceModels</em> set to a buffer of the appropriate size will retrieve the pixel formats. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapCodecInfo::GetDeviceModels']/*\"/>\t\n            <msdn-id>ee719692</msdn-id>\t\n            <unmanaged>HRESULT IWICBitmapCodecInfo::GetDeviceModels([In] unsigned int cchDeviceModels,[In] void* wzDeviceModels,[Out] unsigned int* pcchActual)</unmanaged>\t\n            <unmanaged-short>IWICBitmapCodecInfo::GetDeviceModels</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapCodecInfo.GetMimeTypes(System.Int32,System.IntPtr,System.Int32@)\">\n            <summary>\t\n            <p>Retrieves a comma delimited sequence of mime types associated with the codec.</p>\t\n            </summary>\t\n            <param name=\"cchMimeTypes\"><dd>  <p>The size of the mime types buffer.  Use <code>0</code> on first call to determine needed buffer size.</p> </dd></param>\t\n            <param name=\"mimeTypes\"><dd>  <p>Receives the mime types associated with the codec. Use <code><c>null</c></code> on first call to determine needed buffer size.</p> </dd></param>\t\n            <param name=\"cchActualRef\"><dd>  <p>The actual buffer size needed to retrieve all mime types associated with the codec.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p> The usage pattern for this method is a two call process. The first call retrieves the buffer size needed to retrieve the full color management version number by calling it with <em>cchMimeTypes</em> set to <code>0</code> and <em>wzMimeTypes</em> set to <code><c>null</c></code>. This call sets <em>pcchActual</em> to the buffer size needed. Once the needed buffer size is determined, a second <strong>GetMimeTypes</strong> call with <em>cchMimeTypes</em> set to the buffer size and <em>wzMimeTypes</em> set to a buffer of the appropriate size will retrieve the pixel formats. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapCodecInfo::GetMimeTypes']/*\"/>\t\n            <msdn-id>ee719696</msdn-id>\t\n            <unmanaged>HRESULT IWICBitmapCodecInfo::GetMimeTypes([In] unsigned int cchMimeTypes,[In] void* wzMimeTypes,[Out] unsigned int* pcchActual)</unmanaged>\t\n            <unmanaged-short>IWICBitmapCodecInfo::GetMimeTypes</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapCodecInfo.GetFileExtensions(System.Int32,System.IntPtr,System.Int32@)\">\n            <summary>\t\n            <p>Retrieves a comma delimited list of the file name extensions associated with the codec.</p>\t\n            </summary>\t\n            <param name=\"cchFileExtensions\"><dd>  <p>The size of the file name extension buffer. Use <code>0</code> on first call to determine needed buffer size.</p> </dd></param>\t\n            <param name=\"fileExtensions\"><dd>  <p>Receives a comma delimited list  of file name extensions associated with the codec. Use <code><c>null</c></code> on first call to determine needed buffer size.</p> </dd></param>\t\n            <param name=\"cchActualRef\"><dd>  <p>The actual buffer size needed to retrieve all file name extensions associated with the codec. </p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>The default extension for an image encoder is the first item in the list of returned extensions.</p><p> The usage pattern for this method is a two call process. The first call retrieves the buffer size needed to retrieve the full color management version number by calling it with <em>cchFileExtensions</em> set to <code>0</code> and <em>wzFileExtensions</em> set to <code><c>null</c></code>. This call sets <em>pcchActual</em> to the buffer size needed. Once the needed buffer size is determined, a second <strong>GetFileExtensions</strong> call with <em>cchFileExtensions</em> set to the buffer size and <em>wzFileExtensions</em> set to a buffer of the appropriate size will retrieve the pixel formats. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapCodecInfo::GetFileExtensions']/*\"/>\t\n            <msdn-id>ee719694</msdn-id>\t\n            <unmanaged>HRESULT IWICBitmapCodecInfo::GetFileExtensions([In] unsigned int cchFileExtensions,[In] void* wzFileExtensions,[Out] unsigned int* pcchActual)</unmanaged>\t\n            <unmanaged-short>IWICBitmapCodecInfo::GetFileExtensions</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapCodecInfo.IsAnimationSupported_(SharpDX.Bool@)\">\n            <summary>\t\n            <p>Retrieves a value indicating whether the codec supports animation.</p>\t\n            </summary>\t\n            <param name=\"fSupportAnimationRef\"><dd>  <p>Receives <strong>TRUE</strong> if the codec supports images with timing information; otherwise, <strong><see cref=\"F:SharpDX.Result.False\"/></strong>. </p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapCodecInfo::DoesSupportAnimation']/*\"/>\t\n            <msdn-id>ee719680</msdn-id>\t\n            <unmanaged>HRESULT IWICBitmapCodecInfo::DoesSupportAnimation([Out] BOOL* pfSupportAnimation)</unmanaged>\t\n            <unmanaged-short>IWICBitmapCodecInfo::DoesSupportAnimation</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapCodecInfo.IsChromakeySupported_(SharpDX.Bool@)\">\n            <summary>\t\n            <p>Retrieves a value indicating whether the codec supports chromakeys.</p>\t\n            </summary>\t\n            <param name=\"fSupportChromakeyRef\"><dd>  <p>Receives <strong>TRUE</strong> if the codec supports chromakeys; otherwise, <strong><see cref=\"F:SharpDX.Result.False\"/></strong>.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapCodecInfo::DoesSupportChromakey']/*\"/>\t\n            <msdn-id>ee719682</msdn-id>\t\n            <unmanaged>HRESULT IWICBitmapCodecInfo::DoesSupportChromakey([Out] BOOL* pfSupportChromakey)</unmanaged>\t\n            <unmanaged-short>IWICBitmapCodecInfo::DoesSupportChromakey</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapCodecInfo.IsLosslessSupported_(SharpDX.Bool@)\">\n            <summary>\t\n            <p>Retrieves a value indicating whether the codec supports lossless formats.</p>\t\n            </summary>\t\n            <param name=\"fSupportLosslessRef\"><dd>  <p>Receives <strong>TRUE</strong> if the codec supports lossless formats; otherwise, <strong><see cref=\"F:SharpDX.Result.False\"/></strong>.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapCodecInfo::DoesSupportLossless']/*\"/>\t\n            <msdn-id>ee719683</msdn-id>\t\n            <unmanaged>HRESULT IWICBitmapCodecInfo::DoesSupportLossless([Out] BOOL* pfSupportLossless)</unmanaged>\t\n            <unmanaged-short>IWICBitmapCodecInfo::DoesSupportLossless</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapCodecInfo.IsMultiframeSupported_(SharpDX.Bool@)\">\n            <summary>\t\n            <p>Retrieves a value indicating whether the codec supports multi frame images.</p>\t\n            </summary>\t\n            <param name=\"fSupportMultiframeRef\"><dd>  <p>Receives <strong>TRUE</strong> if the codec supports multi frame images; otherwise, <strong><see cref=\"F:SharpDX.Result.False\"/></strong>.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapCodecInfo::DoesSupportMultiframe']/*\"/>\t\n            <msdn-id>ee719685</msdn-id>\t\n            <unmanaged>HRESULT IWICBitmapCodecInfo::DoesSupportMultiframe([Out] BOOL* pfSupportMultiframe)</unmanaged>\t\n            <unmanaged-short>IWICBitmapCodecInfo::DoesSupportMultiframe</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapCodecInfo.MatchesMimeType(System.String)\">\n            <summary>\t\n            <p>Retrieves a value indicating whether the given mime type matches the mime type of the codec.</p>\t\n            </summary>\t\n            <param name=\"mimeType\"><dd>  <p>The mime type to compare.</p> </dd></param>\t\n            <returns><dd>  <p>Receives <strong>TRUE</strong> if the mime types match; otherwise, <strong><see cref=\"F:SharpDX.Result.False\"/></strong>.</p> </dd></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapCodecInfo::MatchesMimeType']/*\"/>\t\n            <msdn-id>ee690083</msdn-id>\t\n            <unmanaged>HRESULT IWICBitmapCodecInfo::MatchesMimeType([In] const wchar_t* wzMimeType,[Out] BOOL* pfMatches)</unmanaged>\t\n            <unmanaged-short>IWICBitmapCodecInfo::MatchesMimeType</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.WIC.BitmapCodecInfo.ContainerFormat\">\n            <summary>\t\n            <p>Retrieves the container <see cref=\"T:System.Guid\"/> associated with the codec.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapCodecInfo::GetContainerFormat']/*\"/>\t\n            <msdn-id>ee719688</msdn-id>\t\n            <unmanaged>GetContainerFormat</unmanaged>\t\n            <unmanaged-short>GetContainerFormat</unmanaged-short>\t\n            <unmanaged>HRESULT IWICBitmapCodecInfo::GetContainerFormat([Out] GUID* pguidContainerFormat)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.WIC.BitmapCodecInfo.IsAnimationSupported\">\n            <summary>\t\n            <p>Retrieves a value indicating whether the codec supports animation.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapCodecInfo::DoesSupportAnimation']/*\"/>\t\n            <msdn-id>ee719680</msdn-id>\t\n            <unmanaged>DoesSupportAnimation</unmanaged>\t\n            <unmanaged-short>DoesSupportAnimation</unmanaged-short>\t\n            <unmanaged>HRESULT IWICBitmapCodecInfo::DoesSupportAnimation([Out] BOOL* pfSupportAnimation)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.WIC.BitmapCodecInfo.IsChromakeySupported\">\n            <summary>\t\n            <p>Retrieves a value indicating whether the codec supports chromakeys.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapCodecInfo::DoesSupportChromakey']/*\"/>\t\n            <msdn-id>ee719682</msdn-id>\t\n            <unmanaged>DoesSupportChromakey</unmanaged>\t\n            <unmanaged-short>DoesSupportChromakey</unmanaged-short>\t\n            <unmanaged>HRESULT IWICBitmapCodecInfo::DoesSupportChromakey([Out] BOOL* pfSupportChromakey)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.WIC.BitmapCodecInfo.IsLosslessSupported\">\n            <summary>\t\n            <p>Retrieves a value indicating whether the codec supports lossless formats.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapCodecInfo::DoesSupportLossless']/*\"/>\t\n            <msdn-id>ee719683</msdn-id>\t\n            <unmanaged>DoesSupportLossless</unmanaged>\t\n            <unmanaged-short>DoesSupportLossless</unmanaged-short>\t\n            <unmanaged>HRESULT IWICBitmapCodecInfo::DoesSupportLossless([Out] BOOL* pfSupportLossless)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.WIC.BitmapCodecInfo.IsMultiframeSupported\">\n            <summary>\t\n            <p>Retrieves a value indicating whether the codec supports multi frame images.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapCodecInfo::DoesSupportMultiframe']/*\"/>\t\n            <msdn-id>ee719685</msdn-id>\t\n            <unmanaged>DoesSupportMultiframe</unmanaged>\t\n            <unmanaged-short>DoesSupportMultiframe</unmanaged-short>\t\n            <unmanaged>HRESULT IWICBitmapCodecInfo::DoesSupportMultiframe([Out] BOOL* pfSupportMultiframe)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.WIC.BitmapCodecInfo.PixelFormats\">\n            <summary>\n            Gets the pixel formats the codec supports.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.WIC.BitmapCodecInfo.ColorManagementVersion\">\n            <summary>\n            Gets the color manangement version number the codec supports.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.WIC.BitmapCodecInfo.DeviceManufacturer\">\n            <summary>\n            Gets the name of the device manufacture associated with the codec.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.WIC.BitmapCodecInfo.DeviceModels\">\n            <summary>\n            Gets a comma delimited list of device models associated with the codec.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.WIC.BitmapCodecInfo.MimeTypes\">\n            <summary>\n            Gets a comma delimited sequence of mime types associated with the codec.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.WIC.BitmapCodecInfo.FileExtensions\">\n            <summary>\n            Gets a comma delimited list of the file name extensions associated with the codec.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.WIC.BitmapCodecProgressNotification\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapCodecProgressNotification']/*\"/>\t\n            <msdn-id>ee719890</msdn-id>\t\n            <unmanaged>IWICBitmapCodecProgressNotification</unmanaged>\t\n            <unmanaged-short>IWICBitmapCodecProgressNotification</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapCodecProgressNotification.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.BitmapCodecProgressNotification\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapCodecProgressNotification.op_Explicit(System.IntPtr)~SharpDX.WIC.BitmapCodecProgressNotification\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.WIC.BitmapCodecProgressNotification\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapCodecProgressNotification.RegisterProgressNotification(SharpDX.FunctionCallback,System.IntPtr,System.Int32)\">\n            <summary>\t\n            <p>Registers a progress notification callback function.</p>\t\n            </summary>\t\n            <param name=\"fnProgressNotificationRef\"><dd>  <p>A function reference to the application defined progress notification callback function. See <strong>ProgressNotificationCallback</strong> for the callback signature.</p> </dd></param>\t\n            <param name=\"vDataRef\"><dd>  <p>A reference to component data for the callback method.</p> </dd></param>\t\n            <param name=\"progressFlags\"><dd>  <p>The <strong><see cref=\"T:SharpDX.WIC.ProgressOperation\"/></strong> and <strong><see cref=\"T:SharpDX.WIC.ProgressNotification\"/></strong> flags to use for progress notification.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>Applications can only register a single callback. Subsequent registration calls will replace the previously registered callback. To unregister a callback, pass in <strong><c>null</c></strong> or register a new callback function.</p><p> Progress is reported in an increasing order between 0.0 and 1.0.  If <em>dwProgressFlags</em> includes <strong><see cref=\"F:SharpDX.WIC.ProgressNotification.Begin\"/></strong>, the callback is guaranteed to be called with progress 0.0. If <em>dwProgressFlags</em> includes <strong><see cref=\"F:SharpDX.WIC.ProgressNotification.End\"/></strong>, the callback is guaranteed to be called with progress 1.0. </p><p><strong><see cref=\"F:SharpDX.WIC.ProgressNotification.Frequent\"/></strong> increases the frequency in which the callback is called. If an operation is expected to take more than 30 seconds, <strong><see cref=\"F:SharpDX.WIC.ProgressNotification.Frequent\"/></strong> should be added to <em>dwProgressFlags</em>. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapCodecProgressNotification::RegisterProgressNotification']/*\"/>\t\n            <msdn-id>ee690085</msdn-id>\t\n            <unmanaged>HRESULT IWICBitmapCodecProgressNotification::RegisterProgressNotification([In, Optional] __function__stdcall* pfnProgressNotification,[In, Optional] void* pvData,[In] unsigned int dwProgressFlags)</unmanaged>\t\n            <unmanaged-short>IWICBitmapCodecProgressNotification::RegisterProgressNotification</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.WIC.BitmapDecoder\">\n            <summary>\t\n            <p>Exposes methods that represent a decoder.</p><p>The interface provides access to the decoder's properties such as global thumbnails (if supported), frames, and palette. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>There are a number of concrete implemenations of this interface representing each of the standard decoders provided by the platform including bitmap (BMP), Portable Network Graphics (PNG), icon (ICO), Joint Photographic Experts Group (JPEG), Graphics Interchange Format (GIF), Tagged Image File Format (TIFF), and Microsoft?Windows Digital Photo (WDP). The following table includes the class identifier (CLSID) for each native decoder. </p><table> <tr><th>CLSID Name</th><th>CLSID</th></tr> <tr><td><see cref=\"F:SharpDX.WIC.BitmapDecoderGuids.Bmp\"/></td><td>0x6b462062, 0x7cbf, 0x400d, 0x9f, 0xdb, 0x81, 0x3d, 0xd1, 0xf, 0x27, 0x78</td></tr> <tr><td><see cref=\"F:SharpDX.WIC.BitmapDecoderGuids.Png\"/></td><td>0x389ea17b, 0x5078, 0x4cde, 0xb6, 0xef, 0x25, 0xc1, 0x51, 0x75, 0xc7, 0x51</td></tr> <tr><td><see cref=\"F:SharpDX.WIC.BitmapDecoderGuids.Ico\"/></td><td>0xc61bfcdf, 0x2e0f, 0x4aad, 0xa8, 0xd7, 0xe0, 0x6b, 0xaf, 0xeb, 0xcd, 0xfe</td></tr> <tr><td><see cref=\"F:SharpDX.WIC.BitmapDecoderGuids.Jpeg\"/></td><td>0x9456a480, 0xe88b, 0x43ea, 0x9e, 0x73, 0xb, 0x2d, 0x9b, 0x71, 0xb1, 0xca</td></tr> <tr><td><see cref=\"F:SharpDX.WIC.BitmapDecoderGuids.Gif\"/></td><td>0x381dda3c, 0x9ce9, 0x4834, 0xa2, 0x3e, 0x1f, 0x98, 0xf8, 0xfc, 0x52, 0xbe</td></tr> <tr><td><see cref=\"F:SharpDX.WIC.BitmapDecoderGuids.Tiff\"/></td><td>0xb54e85d9, 0xfe23, 0x499f, 0x8b, 0x88, 0x6a, 0xce, 0xa7, 0x13, 0x75, 0x2b</td></tr> <tr><td><see cref=\"F:SharpDX.WIC.BitmapDecoderGuids.Wmp\"/></td><td>0xa26cec36, 0x234c, 0x4950, 0xae, 0x16, 0xe3, 0x4a, 0xac, 0xe7, 0x1d, 0x0d</td></tr> </table><p>?</p><p>This interface may be sub-classed to provide support for third party codecs as part of the extensibility model. See the AITCodec Sample CODEC.</p><p>Codecs written as TIFF container formats that are not register will decode as a TIFF image. Client applications should check for a zero frame count to determine if the codec is valid.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapDecoder']/*\"/>\t\n            <msdn-id>ee690086</msdn-id>\t\n            <unmanaged>IWICBitmapDecoder</unmanaged>\t\n            <unmanaged-short>IWICBitmapDecoder</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapDecoder.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.BitmapDecoder\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapDecoder.op_Explicit(System.IntPtr)~SharpDX.WIC.BitmapDecoder\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.WIC.BitmapDecoder\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapDecoder.QueryCapability_(System.IntPtr)\">\n            <summary>\t\n            <p>Retrieves the capabilities of the decoder based on the specified stream.</p>\t\n            </summary>\t\n            <param name=\"streamRef\"><dd>  <p>The stream to retrieve the decoder capabilities from.</p> </dd></param>\t\n            <returns><dd>  <p>The <strong><see cref=\"T:SharpDX.WIC.BitmapDecoderCapabilities\"/></strong> of the decoder.</p> </dd></returns>\t\n            <remarks>\t\n            <p>Custom decoder implementations should save the current position of the specified <see cref=\"T:SharpDX.Win32.IStream\"/>, read whatever information is necessary in order to determine which capabilities it can provide for the supplied stream, and restore the stream position.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapDecoder::QueryCapability']/*\"/>\t\n            <msdn-id>ee690109</msdn-id>\t\n            <unmanaged>HRESULT IWICBitmapDecoder::QueryCapability([In, Optional] IStream* pIStream,[Out] WICBitmapDecoderCapabilities* pdwCapability)</unmanaged>\t\n            <unmanaged-short>IWICBitmapDecoder::QueryCapability</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapDecoder.Initialize_(System.IntPtr,SharpDX.WIC.DecodeOptions)\">\n            <summary>\t\n            <p>Initializes the decoder with the provided stream.</p>\t\n            </summary>\t\n            <param name=\"streamRef\"><dd>  <p>The stream to use for initialization.</p> <p>The stream contains the encoded pixels which are decoded each time the <strong>CopyPixels</strong> method on the <strong><see cref=\"T:SharpDX.WIC.BitmapFrameDecode\"/></strong> interface (see <strong>GetFrame</strong>) is invoked.</p> </dd></param>\t\n            <param name=\"cacheOptions\"><dd>  <p>The <strong><see cref=\"T:SharpDX.WIC.DecodeOptions\"/></strong> to use for initialization.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapDecoder::Initialize']/*\"/>\t\n            <msdn-id>ee690108</msdn-id>\t\n            <unmanaged>HRESULT IWICBitmapDecoder::Initialize([In, Optional] IStream* pIStream,[In] WICDecodeOptions cacheOptions)</unmanaged>\t\n            <unmanaged-short>IWICBitmapDecoder::Initialize</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapDecoder.GetContainerFormat(System.Guid@)\">\n            <summary>\t\n            <p>Retrieves the image's container format.</p>\t\n            </summary>\t\n            <param name=\"guidContainerFormatRef\"><dd>  <p>A reference that receives the image's container format <see cref=\"T:System.Guid\"/>.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapDecoder::GetContainerFormat']/*\"/>\t\n            <msdn-id>ee690095</msdn-id>\t\n            <unmanaged>HRESULT IWICBitmapDecoder::GetContainerFormat([Out] GUID* pguidContainerFormat)</unmanaged>\t\n            <unmanaged-short>IWICBitmapDecoder::GetContainerFormat</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapDecoder.GetDecoderInfo(SharpDX.WIC.BitmapDecoderInfo@)\">\n            <summary>\t\n            <p>Retrieves an <strong><see cref=\"T:SharpDX.WIC.BitmapDecoderInfo\"/></strong> for the image.</p>\t\n            </summary>\t\n            <param name=\"decoderInfoOut\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapDecoder::GetDecoderInfo']/*\"/>\t\n            <msdn-id>ee690096</msdn-id>\t\n            <unmanaged>HRESULT IWICBitmapDecoder::GetDecoderInfo([Out] IWICBitmapDecoderInfo** ppIDecoderInfo)</unmanaged>\t\n            <unmanaged-short>IWICBitmapDecoder::GetDecoderInfo</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapDecoder.CopyPalette(SharpDX.WIC.Palette)\">\n            <summary>\t\n            <p>Copies the decoder's <strong><see cref=\"T:SharpDX.WIC.Palette\"/></strong> .</p>\t\n            </summary>\t\n            <param name=\"paletteRef\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p><strong>CopyPalette</strong> returns a global palette (a palette that applies to all the frames in the image) if there is one; otherwise, it returns <see cref=\"F:SharpDX.WIC.ResultCode.Paletteunavailable\"/>. If an image doesn't have a global palette, it may still have a frame-level palette, which can be retrieved using <strong>IWICBitmapFrameDecode::CopyPalette</strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapDecoder::CopyPalette']/*\"/>\t\n            <msdn-id>ee690091</msdn-id>\t\n            <unmanaged>HRESULT IWICBitmapDecoder::CopyPalette([In, Optional] IWICPalette* pIPalette)</unmanaged>\t\n            <unmanaged-short>IWICBitmapDecoder::CopyPalette</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapDecoder.GetMetadataQueryReader(SharpDX.WIC.MetadataQueryReader@)\">\n            <summary>\t\n            <p>Retrieves the metadata query reader from the decoder.</p>\t\n            </summary>\t\n            <param name=\"metadataQueryReaderOut\"><dd>  <p>Receives a reference to the decoder's <strong><see cref=\"T:SharpDX.WIC.MetadataQueryReader\"/></strong>.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapDecoder::GetMetadataQueryReader']/*\"/>\t\n            <msdn-id>ee690102</msdn-id>\t\n            <unmanaged>HRESULT IWICBitmapDecoder::GetMetadataQueryReader([Out] IWICMetadataQueryReader** ppIMetadataQueryReader)</unmanaged>\t\n            <unmanaged-short>IWICBitmapDecoder::GetMetadataQueryReader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapDecoder.GetPreview(SharpDX.WIC.BitmapSource@)\">\n            <summary>\t\n            <p>Retrieves a preview image, if supported.</p>\t\n            </summary>\t\n            <param name=\"bitmapSourceOut\"><dd>  <p>Receives a reference to the preview bitmap if supported.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>Not all formats support previews. Only the native Microsoft?Windows Digital Photo (WDP) codec support previews.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapDecoder::GetPreview']/*\"/>\t\n            <msdn-id>ee690104</msdn-id>\t\n            <unmanaged>HRESULT IWICBitmapDecoder::GetPreview([Out] IWICBitmapSource** ppIBitmapSource)</unmanaged>\t\n            <unmanaged-short>IWICBitmapDecoder::GetPreview</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapDecoder.GetColorContexts(System.Int32,SharpDX.WIC.ColorContext[],System.Int32@)\">\n            <summary>\t\n            <p>Retrieves the <strong><see cref=\"T:SharpDX.WIC.ColorContext\"/></strong> objects of the image.</p>\t\n            </summary>\t\n            <param name=\"count\">No documentation.</param>\t\n            <param name=\"colorContextsOut\">No documentation.</param>\t\n            <param name=\"actualCountRef\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapDecoder::GetColorContexts']/*\"/>\t\n            <msdn-id>ee690093</msdn-id>\t\n            <unmanaged>HRESULT IWICBitmapDecoder::GetColorContexts([In] unsigned int cCount,[Out, Buffer, Optional] IWICColorContext** ppIColorContexts,[Out] unsigned int* pcActualCount)</unmanaged>\t\n            <unmanaged-short>IWICBitmapDecoder::GetColorContexts</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapDecoder.GetThumbnail(SharpDX.WIC.BitmapSource@)\">\n            <summary>\t\n            <p>Retrieves a bitmap thumbnail of the image, if one exists</p>\t\n            </summary>\t\n            <param name=\"thumbnailOut\"><dd>  <p>Receives a reference to the <strong><see cref=\"T:SharpDX.WIC.BitmapSource\"/></strong> of the thumbnail.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>None of the native formats support global thumbnails. Joint Photographic Experts Group (JPEG), Tagged Image File Format (TIFF), and Microsoft?Windows Digital Photo (WDP) support frame level thumbnails that can be accessed through a frame's <strong>GetThumbnail</strong> method.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapDecoder::GetThumbnail']/*\"/>\t\n            <msdn-id>ee690106</msdn-id>\t\n            <unmanaged>HRESULT IWICBitmapDecoder::GetThumbnail([Out] IWICBitmapSource** ppIThumbnail)</unmanaged>\t\n            <unmanaged-short>IWICBitmapDecoder::GetThumbnail</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapDecoder.GetFrameCount(System.Int32@)\">\n            <summary>\t\n            <p>Retrieves the total number of frames in the image.</p>\t\n            </summary>\t\n            <param name=\"countRef\"><dd>  <p>A reference that receives the total number of frames in the image.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapDecoder::GetFrameCount']/*\"/>\t\n            <msdn-id>ee690099</msdn-id>\t\n            <unmanaged>HRESULT IWICBitmapDecoder::GetFrameCount([Out] unsigned int* pCount)</unmanaged>\t\n            <unmanaged-short>IWICBitmapDecoder::GetFrameCount</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapDecoder.GetFrame(System.Int32)\">\n            <summary>\t\n            <p>Retrieves the specified frame of the image.</p>\t\n            </summary>\t\n            <param name=\"index\"><dd>  <p>The particular frame to retrieve.</p> </dd></param>\t\n            <returns><dd>  <p>A reference that receives a reference to the <strong><see cref=\"T:SharpDX.WIC.BitmapFrameDecode\"/></strong>.</p> </dd></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapDecoder::GetFrame']/*\"/>\t\n            <msdn-id>ee690098</msdn-id>\t\n            <unmanaged>HRESULT IWICBitmapDecoder::GetFrame([In] unsigned int index,[Out] IWICBitmapFrameDecode** ppIBitmapFrame)</unmanaged>\t\n            <unmanaged-short>IWICBitmapDecoder::GetFrame</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapDecoder.#ctor(SharpDX.WIC.BitmapDecoderInfo)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.BitmapDecoder\"/> class from a <see cref=\"T:SharpDX.WIC.BitmapDecoderInfo\"/>.\n            </summary>\n            <param name=\"bitmapDecoderInfo\">The bitmap decoder info.</param>\n            <unmanaged>HRESULT IWICBitmapDecoderInfo::CreateInstance([Out, Fast] IWICBitmapDecoder** ppIBitmapDecoder)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapDecoder.#ctor(SharpDX.WIC.ImagingFactory,System.Guid)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.BitmapDecoder\"/> class from a guid. <see cref=\"T:SharpDX.WIC.BitmapDecoderGuids\"/> for a list of default supported decoder.\n            </summary>\n            <param name=\"factory\">The factory.</param>\n            <param name=\"containerFormatGuid\">The container format GUID.</param>\n            <unmanaged>HRESULT IWICImagingFactory::CreateDecoder([In] const GUID&amp; guidContainerFormat,[In, Optional] const GUID* pguidVendor,[Out, Fast] IWICBitmapDecoder** ppIDecoder)</unmanaged>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapDecoder.#ctor(SharpDX.WIC.ImagingFactory,System.Guid,System.Guid)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.BitmapDecoder\"/> class.\n            </summary>\n            <param name=\"factory\">The factory.</param>\n            <param name=\"containerFormatGuid\">The container format GUID.</param>\n            <param name=\"guidVendorRef\">The GUID vendor ref.</param>\n            <unmanaged>HRESULT IWICImagingFactory::CreateDecoder([In] const GUID&amp; guidContainerFormat,[In, Optional] const GUID* pguidVendor,[Out, Fast] IWICBitmapDecoder** ppIDecoder)</unmanaged>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapDecoder.#ctor(SharpDX.WIC.ImagingFactory,SharpDX.Win32.IStream,SharpDX.WIC.DecodeOptions)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.BitmapDecoder\"/> class from a <see cref=\"T:SharpDX.Win32.IStream\"/>.\n            </summary>\n            <param name=\"factory\">The factory.</param>\n            <param name=\"streamRef\">The stream ref.</param>\n            <param name=\"metadataOptions\">The metadata options.</param>\n            <unmanaged>HRESULT IWICImagingFactory::CreateDecoderFromStream([In, Optional] IStream* pIStream,[In, Optional] const GUID* pguidVendor,[In] WICDecodeOptions metadataOptions,[Out, Fast] IWICBitmapDecoder** ppIDecoder)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapDecoder.#ctor(SharpDX.WIC.ImagingFactory,System.IO.Stream,SharpDX.WIC.DecodeOptions)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.BitmapDecoder\"/> class from a <see cref=\"T:SharpDX.Win32.IStream\"/>.\n            </summary>\n            <param name=\"factory\">The factory.</param>\n            <param name=\"streamRef\">The stream ref.</param>\n            <param name=\"metadataOptions\">The metadata options.</param>\n            <unmanaged>HRESULT IWICImagingFactory::CreateDecoderFromStream([In, Optional] IStream* pIStream,[In, Optional] const GUID* pguidVendor,[In] WICDecodeOptions metadataOptions,[Out, Fast] IWICBitmapDecoder** ppIDecoder)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapDecoder.#ctor(SharpDX.WIC.ImagingFactory,SharpDX.Win32.IStream,System.Guid,SharpDX.WIC.DecodeOptions)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.BitmapDecoder\"/> class from a <see cref=\"T:SharpDX.Win32.IStream\"/>.\n            </summary>\n            <param name=\"factory\">The factory.</param>\n            <param name=\"streamRef\">The stream ref.</param>\n            <param name=\"guidVendorRef\">The GUID vendor ref.</param>\n            <param name=\"metadataOptions\">The metadata options.</param>\n            <unmanaged>HRESULT IWICImagingFactory::CreateDecoderFromStream([In, Optional] IStream* pIStream,[In, Optional] const GUID* pguidVendor,[In] WICDecodeOptions metadataOptions,[Out, Fast] IWICBitmapDecoder** ppIDecoder)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapDecoder.#ctor(SharpDX.WIC.ImagingFactory,System.IO.Stream,System.Guid,SharpDX.WIC.DecodeOptions)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.BitmapDecoder\"/> class from a <see cref=\"T:SharpDX.Win32.IStream\"/>.\n            </summary>\n            <param name=\"factory\">The factory.</param>\n            <param name=\"streamRef\">The stream ref.</param>\n            <param name=\"guidVendorRef\">The GUID vendor ref.</param>\n            <param name=\"metadataOptions\">The metadata options.</param>\n            <unmanaged>HRESULT IWICImagingFactory::CreateDecoderFromStream([In, Optional] IStream* pIStream,[In, Optional] const GUID* pguidVendor,[In] WICDecodeOptions metadataOptions,[Out, Fast] IWICBitmapDecoder** ppIDecoder)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapDecoder.#ctor(SharpDX.WIC.ImagingFactory,System.String,SharpDX.WIC.DecodeOptions)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.BitmapDecoder\"/> class from a file in read mode.\n            </summary>\n            <param name=\"factory\">The factory.</param>\n            <param name=\"filename\">The filename.</param>\n            <param name=\"metadataOptions\">The metadata options.</param>\n            <unmanaged>HRESULT IWICImagingFactory::CreateDecoderFromFilename([In] const wchar_t* wzFilename,[In, Optional] const GUID* pguidVendor,[In] unsigned int dwDesiredAccess,[In] WICDecodeOptions metadataOptions,[Out, Fast] IWICBitmapDecoder** ppIDecoder)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapDecoder.#ctor(SharpDX.WIC.ImagingFactory,System.String,SharpDX.IO.NativeFileAccess,SharpDX.WIC.DecodeOptions)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.BitmapDecoder\"/> class from a file.\n            </summary>\n            <param name=\"factory\">The factory.</param>\n            <param name=\"filename\">The filename.</param>\n            <param name=\"desiredAccess\">The desired access.</param>\n            <param name=\"metadataOptions\">The metadata options.</param>\n            <unmanaged>HRESULT IWICImagingFactory::CreateDecoderFromFilename([In] const wchar_t* wzFilename,[In, Optional] const GUID* pguidVendor,[In] unsigned int dwDesiredAccess,[In] WICDecodeOptions metadataOptions,[Out, Fast] IWICBitmapDecoder** ppIDecoder)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapDecoder.#ctor(SharpDX.WIC.ImagingFactory,System.String,System.Nullable{System.Guid},SharpDX.IO.NativeFileAccess,SharpDX.WIC.DecodeOptions)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.BitmapDecoder\"/> class from a file.\n            </summary>\n            <param name=\"factory\">The factory.</param>\n            <param name=\"filename\">The filename.</param>\n            <param name=\"guidVendorRef\">The GUID vendor ref.</param>\n            <param name=\"desiredAccess\">The desired access.</param>\n            <param name=\"metadataOptions\">The metadata options.</param>\n            <unmanaged>HRESULT IWICImagingFactory::CreateDecoderFromFilename([In] const wchar_t* wzFilename,[In, Optional] const GUID* pguidVendor,[In] unsigned int dwDesiredAccess,[In] WICDecodeOptions metadataOptions,[Out, Fast] IWICBitmapDecoder** ppIDecoder)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapDecoder.#ctor(SharpDX.WIC.ImagingFactory,System.IO.FileStream,SharpDX.WIC.DecodeOptions)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.BitmapDecoder\"/> class from a filestream.\n            </summary>\n            <param name=\"factory\">The factory.</param>\n            <param name=\"fileStream\">The filename.</param>\n            <param name=\"metadataOptions\">The metadata options.</param>\n            <unmanaged>HRESULT IWICImagingFactory::CreateDecoderFromFileHandle([In] unsigned int hFile,[In, Optional] const GUID* pguidVendor,[In] WICDecodeOptions metadataOptions,[Out, Fast] IWICBitmapDecoder** ppIDecoder)</unmanaged>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapDecoder.#ctor(SharpDX.WIC.ImagingFactory,System.IO.FileStream,System.Guid,SharpDX.WIC.DecodeOptions)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.BitmapDecoder\"/> class from a filestream.\n            </summary>\n            <param name=\"factory\">The factory.</param>\n            <param name=\"fileStream\">The filename.</param>\n            <param name=\"guidVendorRef\">The GUID vendor ref.</param>\n            <param name=\"metadataOptions\">The metadata options.</param>\n            <unmanaged>HRESULT IWICImagingFactory::CreateDecoderFromFileHandle([In] unsigned int hFile,[In, Optional] const GUID* pguidVendor,[In] WICDecodeOptions metadataOptions,[Out, Fast] IWICBitmapDecoder** ppIDecoder)</unmanaged>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapDecoder.QueryCapability(SharpDX.Win32.IStream)\">\n            <summary>\n            Queries the capabilities of the decoder based on the specified stream.\n            </summary>\n            <param name=\"stream\">The stream to retrieve the decoder capabilities from..</param>\n            <returns>Capabilities of the decoder</returns>\n            <unmanaged>HRESULT IWICBitmapDecoder::QueryCapability([In, Optional] IStream* pIStream,[Out] WICBitmapDecoderCapabilities* pdwCapability)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapDecoder.Initialize(SharpDX.Win32.IStream,SharpDX.WIC.DecodeOptions)\">\n            <summary>\n            Initializes the decoder with the provided stream.\n            </summary>\n            <param name=\"stream\">The stream to use for initialization.</param>\n            <param name=\"cacheOptions\">The cache options.</param>\n            <returns>If the method succeeds, it returns <see cref=\"F:SharpDX.Result.Ok\"/>. Otherwise, it throws an exception.</returns>\n            <unmanaged>HRESULT IWICBitmapDecoder::Initialize([In, Optional] IStream* pIStream,[In] WICDecodeOptions cacheOptions)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.WIC.BitmapDecoder.ContainerFormat\">\n            <summary>\t\n            <p>Retrieves the image's container format.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapDecoder::GetContainerFormat']/*\"/>\t\n            <msdn-id>ee690095</msdn-id>\t\n            <unmanaged>GetContainerFormat</unmanaged>\t\n            <unmanaged-short>GetContainerFormat</unmanaged-short>\t\n            <unmanaged>HRESULT IWICBitmapDecoder::GetContainerFormat([Out] GUID* pguidContainerFormat)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.WIC.BitmapDecoder.DecoderInfo\">\n            <summary>\t\n            <p>Retrieves an <strong><see cref=\"T:SharpDX.WIC.BitmapDecoderInfo\"/></strong> for the image.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapDecoder::GetDecoderInfo']/*\"/>\t\n            <msdn-id>ee690096</msdn-id>\t\n            <unmanaged>GetDecoderInfo</unmanaged>\t\n            <unmanaged-short>GetDecoderInfo</unmanaged-short>\t\n            <unmanaged>HRESULT IWICBitmapDecoder::GetDecoderInfo([Out] IWICBitmapDecoderInfo** ppIDecoderInfo)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.WIC.BitmapDecoder.MetadataQueryReader\">\n            <summary>\t\n            <p>Retrieves the metadata query reader from the decoder.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapDecoder::GetMetadataQueryReader']/*\"/>\t\n            <msdn-id>ee690102</msdn-id>\t\n            <unmanaged>GetMetadataQueryReader</unmanaged>\t\n            <unmanaged-short>GetMetadataQueryReader</unmanaged-short>\t\n            <unmanaged>HRESULT IWICBitmapDecoder::GetMetadataQueryReader([Out] IWICMetadataQueryReader** ppIMetadataQueryReader)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.WIC.BitmapDecoder.Preview\">\n            <summary>\t\n            <p>Retrieves a preview image, if supported.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Not all formats support previews. Only the native Microsoft?Windows Digital Photo (WDP) codec support previews.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapDecoder::GetPreview']/*\"/>\t\n            <msdn-id>ee690104</msdn-id>\t\n            <unmanaged>GetPreview</unmanaged>\t\n            <unmanaged-short>GetPreview</unmanaged-short>\t\n            <unmanaged>HRESULT IWICBitmapDecoder::GetPreview([Out] IWICBitmapSource** ppIBitmapSource)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.WIC.BitmapDecoder.Thumbnail\">\n            <summary>\t\n            <p>Retrieves a bitmap thumbnail of the image, if one exists</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>None of the native formats support global thumbnails. Joint Photographic Experts Group (JPEG), Tagged Image File Format (TIFF), and Microsoft?Windows Digital Photo (WDP) support frame level thumbnails that can be accessed through a frame's <strong>GetThumbnail</strong> method.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapDecoder::GetThumbnail']/*\"/>\t\n            <msdn-id>ee690106</msdn-id>\t\n            <unmanaged>GetThumbnail</unmanaged>\t\n            <unmanaged-short>GetThumbnail</unmanaged-short>\t\n            <unmanaged>HRESULT IWICBitmapDecoder::GetThumbnail([Out] IWICBitmapSource** ppIThumbnail)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.WIC.BitmapDecoder.FrameCount\">\n            <summary>\t\n            <p>Retrieves the total number of frames in the image.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapDecoder::GetFrameCount']/*\"/>\t\n            <msdn-id>ee690099</msdn-id>\t\n            <unmanaged>GetFrameCount</unmanaged>\t\n            <unmanaged-short>GetFrameCount</unmanaged-short>\t\n            <unmanaged>HRESULT IWICBitmapDecoder::GetFrameCount([Out] unsigned int* pCount)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.WIC.BitmapDecoder.ColorContexts\">\n            <summary>\n            Gets the <see cref=\"T:SharpDX.WIC.ColorContext\"/> objects of the image.\n            </summary>\n            <unmanaged>HRESULT IWICBitmapDecoder::GetColorContexts([In] unsigned int cCount,[Out, Buffer, Optional] IWICColorContext** ppIColorContexts,[Out] unsigned int* pcActualCount)</unmanaged>\t\n        </member>\n        <member name=\"T:SharpDX.WIC.BitmapDecoderInfo\">\n            <summary>\t\n            <p>Exposes methods that provide information about a decoder.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapDecoderInfo']/*\"/>\t\n            <msdn-id>ee690087</msdn-id>\t\n            <unmanaged>IWICBitmapDecoderInfo</unmanaged>\t\n            <unmanaged-short>IWICBitmapDecoderInfo</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapDecoderInfo.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.BitmapDecoderInfo\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapDecoderInfo.op_Explicit(System.IntPtr)~SharpDX.WIC.BitmapDecoderInfo\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.WIC.BitmapDecoderInfo\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapDecoderInfo.GetPatterns(System.Int32,SharpDX.WIC.BitmapPattern[],System.Int32@,System.Int32@)\">\n            <summary>\t\n            <p>Retrieves the file pattern signatures supported by the decoder.</p>\t\n            </summary>\t\n            <param name=\"sizePatterns\"><dd>  <p>The array size of the <em>pPatterns</em> array.</p> </dd></param>\t\n            <param name=\"patternsRef\"><dd>  <p>Receives a list of <strong><see cref=\"T:SharpDX.WIC.BitmapPattern\"/></strong> objects supported by the decoder.</p> </dd></param>\t\n            <param name=\"atternCountRef\"><dd>  <p>Receives the number of patterns the decoder supports.</p> </dd></param>\t\n            <param name=\"patternsActualRef\"><dd>  <p>Receives the actual buffer size needed to retrieve all pattern signatures supported by the decoder. </p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p> To retrieve all pattern signatures, this method should first be called with <em>pPatterns</em> set to <code><c>null</c></code> to retrieve the actual buffer size needed through <em>pcbPatternsActual</em>. Once the needed buffer size is known, allocate a buffer of the needed size and call <strong>GetPatterns</strong> again with the allocated buffer. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapDecoderInfo::GetPatterns']/*\"/>\t\n            <msdn-id>ee690089</msdn-id>\t\n            <unmanaged>HRESULT IWICBitmapDecoderInfo::GetPatterns([In] unsigned int cbSizePatterns,[Out, Buffer, Optional] WICBitmapPattern* pPatterns,[Out] unsigned int* pcPatterns,[Out] unsigned int* pcbPatternsActual)</unmanaged>\t\n            <unmanaged-short>IWICBitmapDecoderInfo::GetPatterns</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapDecoderInfo.MatchesPattern_(System.IntPtr)\">\n            <summary>\t\n            <p>Retrieves a value that indicates whether the codec recognizes the pattern within a specified stream.</p>\t\n            </summary>\t\n            <param name=\"streamRef\"><dd>  <p>The stream to pattern match within.</p> </dd></param>\t\n            <returns><dd>  <p>A reference that receives <strong>TRUE</strong> if the patterns match; otherwise, <strong><see cref=\"F:SharpDX.Result.False\"/></strong>.</p> </dd></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapDecoderInfo::MatchesPattern']/*\"/>\t\n            <msdn-id>ee690090</msdn-id>\t\n            <unmanaged>HRESULT IWICBitmapDecoderInfo::MatchesPattern([In, Optional] IStream* pIStream,[Out] BOOL* pfMatches)</unmanaged>\t\n            <unmanaged-short>IWICBitmapDecoderInfo::MatchesPattern</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapDecoderInfo.CreateInstance(SharpDX.WIC.BitmapDecoder)\">\n            <summary>\t\n            <p>Creates a new <strong><see cref=\"T:SharpDX.WIC.BitmapDecoder\"/></strong> instance.</p>\t\n            </summary>\t\n            <param name=\"bitmapDecoderOut\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapDecoderInfo::CreateInstance']/*\"/>\t\n            <msdn-id>ee690088</msdn-id>\t\n            <unmanaged>HRESULT IWICBitmapDecoderInfo::CreateInstance([Out, Fast] IWICBitmapDecoder** ppIBitmapDecoder)</unmanaged>\t\n            <unmanaged-short>IWICBitmapDecoderInfo::CreateInstance</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapDecoderInfo.MatchesPattern(SharpDX.Win32.IStream)\">\n            <summary>\n            Retrieves a value that indicates whether the codec recognizes the pattern within a specified stream.\n            </summary>\n            <param name=\"stream\">The stream to pattern match within.</param>\n            <returns><c>true</c> if the patterns match; otherwise, <c>false</c>.</returns>\n            <unmanaged>HRESULT IWICBitmapDecoderInfo::MatchesPattern([In, Optional] IStream* pIStream,[Out] BOOL* pfMatches)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.WIC.BitmapDecoderInfo.Patterns\">\n            <summary>\n            Gets the file pattern signatures supported by the decoder.\n            </summary>\n            <unmanaged>HRESULT IWICBitmapDecoderInfo::GetPatterns([In] unsigned int cbSizePatterns,[Out, Buffer, Optional] WICBitmapPattern* pPatterns,[Out] unsigned int* pcPatterns,[Out] unsigned int* pcbPatternsActual)</unmanaged>\t\n        </member>\n        <member name=\"T:SharpDX.WIC.BitmapEncoder\">\n            <summary>\t\n            <p>Defines methods for setting an encoder's properties such as thumbnails, frames, and palettes.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>There are a number of concrete implemenations of this interface representing each of the standard encoders provided by the platform including bitmap (BMP), Portable Network Graphics (PNG), Joint Photographic Experts Group (JPEG), Graphics Interchange Format (GIF), Tagged Image File Format (TIFF), and Microsoft?Windows Digital Photo (WDP). The following table includes the class identifier (CLSID) for each native encoder. </p><table> <tr><th>CLSID Name</th><th>CLSID</th></tr> <tr><td><see cref=\"F:SharpDX.WIC.BitmapEncoderGuids.Bmp\"/></td><td>0x69be8bb4, 0xd66d, 0x47c8, 0x86, 0x5a, 0xed, 0x15, 0x89, 0x43, 0x37, 0x82</td></tr> <tr><td><see cref=\"F:SharpDX.WIC.BitmapEncoderGuids.Png\"/></td><td>0x27949969, 0x876a, 0x41d7, 0x94, 0x47, 0x56, 0x8f, 0x6a, 0x35, 0xa4, 0xdc</td></tr> <tr><td><see cref=\"F:SharpDX.WIC.BitmapEncoderGuids.Jpeg\"/></td><td>0x1a34f5c1, 0x4a5a, 0x46dc, 0xb6, 0x44, 0x1f, 0x45, 0x67, 0xe7, 0xa6, 0x76</td></tr> <tr><td><see cref=\"F:SharpDX.WIC.BitmapEncoderGuids.Gif\"/></td><td>0x114f5598, 0xb22, 0x40a0, 0x86, 0xa1, 0xc8, 0x3e, 0xa4, 0x95, 0xad, 0xbd</td></tr> <tr><td><see cref=\"F:SharpDX.WIC.BitmapEncoderGuids.Tiff\"/></td><td>0x0131be10, 0x2001, 0x4c5f, 0xa9, 0xb0, 0xcc, 0x88, 0xfa, 0xb6, 0x4c, 0xe8</td></tr> <tr><td><see cref=\"F:SharpDX.WIC.BitmapEncoderGuids.Wmp\"/></td><td>0xac4ce3cb, 0xe1c1, 0x44cd, 0x82, 0x15, 0x5a, 0x16, 0x65, 0x50, 0x9e, 0xc2</td></tr> </table><p>?</p><p>Additionally this interface may be sub-classed to provide support for third party codecs as part of the extensibility model. See the AITCodec Sample CODEC.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapEncoder']/*\"/>\t\n            <msdn-id>ee690110</msdn-id>\t\n            <unmanaged>IWICBitmapEncoder</unmanaged>\t\n            <unmanaged-short>IWICBitmapEncoder</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapEncoder.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.BitmapEncoder\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapEncoder.op_Explicit(System.IntPtr)~SharpDX.WIC.BitmapEncoder\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.WIC.BitmapEncoder\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapEncoder.Initialize_(System.IntPtr,SharpDX.WIC.BitmapEncoderCacheOption)\">\n            <summary>\t\n            <p>Initializes the encoder with an <see cref=\"T:SharpDX.Win32.IStream\"/> which tells the encoder where to encode the bits.</p>\t\n            </summary>\t\n            <param name=\"streamRef\">No documentation.</param>\t\n            <param name=\"cacheOption\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapEncoder::Initialize']/*\"/>\t\n            <msdn-id>ee690123</msdn-id>\t\n            <unmanaged>HRESULT IWICBitmapEncoder::Initialize([In, Optional] IStream* pIStream,[In] WICBitmapEncoderCacheOption cacheOption)</unmanaged>\t\n            <unmanaged-short>IWICBitmapEncoder::Initialize</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapEncoder.GetContainerFormat(System.Guid@)\">\n            <summary>\t\n            <p>Retrieves the encoder's container format.</p>\t\n            </summary>\t\n            <param name=\"guidContainerFormatRef\"><dd>  <p>A reference that receives the encoder's container format <see cref=\"T:System.Guid\"/>.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapEncoder::GetContainerFormat']/*\"/>\t\n            <msdn-id>ee690118</msdn-id>\t\n            <unmanaged>HRESULT IWICBitmapEncoder::GetContainerFormat([Out] GUID* pguidContainerFormat)</unmanaged>\t\n            <unmanaged-short>IWICBitmapEncoder::GetContainerFormat</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapEncoder.GetEncoderInfo(SharpDX.WIC.BitmapEncoderInfo@)\">\n            <summary>\t\n            <p>Retrieves an <strong><see cref=\"T:SharpDX.WIC.BitmapEncoderInfo\"/></strong> for the encoder.</p>\t\n            </summary>\t\n            <param name=\"encoderInfoOut\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapEncoder::GetEncoderInfo']/*\"/>\t\n            <msdn-id>ee690119</msdn-id>\t\n            <unmanaged>HRESULT IWICBitmapEncoder::GetEncoderInfo([Out] IWICBitmapEncoderInfo** ppIEncoderInfo)</unmanaged>\t\n            <unmanaged-short>IWICBitmapEncoder::GetEncoderInfo</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapEncoder.SetColorContexts(System.Int32,SharpDX.WIC.ColorContext[])\">\n            <summary>\t\n            <p>Sets the <strong><see cref=\"T:SharpDX.WIC.ColorContext\"/></strong> objects for the encoder.</p>\t\n            </summary>\t\n            <param name=\"count\">No documentation.</param>\t\n            <param name=\"colorContextOut\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapEncoder::SetColorContexts']/*\"/>\t\n            <msdn-id>ee690125</msdn-id>\t\n            <unmanaged>HRESULT IWICBitmapEncoder::SetColorContexts([In] unsigned int cCount,[In, Buffer] IWICColorContext** ppIColorContext)</unmanaged>\t\n            <unmanaged-short>IWICBitmapEncoder::SetColorContexts</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapEncoder.SetColorContexts(System.Int32,SharpDX.ComArray{SharpDX.WIC.ColorContext})\">\n            <summary>\t\n            <p>Sets the <strong><see cref=\"T:SharpDX.WIC.ColorContext\"/></strong> objects for the encoder.</p>\t\n            </summary>\t\n            <param name=\"count\">No documentation.</param>\t\n            <param name=\"colorContextOut\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapEncoder::SetColorContexts']/*\"/>\t\n            <msdn-id>ee690125</msdn-id>\t\n            <unmanaged>HRESULT IWICBitmapEncoder::SetColorContexts([In] unsigned int cCount,[In, Buffer] IWICColorContext** ppIColorContext)</unmanaged>\t\n            <unmanaged-short>IWICBitmapEncoder::SetColorContexts</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapEncoder.SetPalette(SharpDX.WIC.Palette)\">\n            <summary>\t\n            <p>Sets the global palette for the image.</p>\t\n            </summary>\t\n            <param name=\"paletteRef\"><dd>  <p>The <strong><see cref=\"T:SharpDX.WIC.Palette\"/></strong> to use as the global palette.</p> </dd></param>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful, or an error value otherwise. </p><p>Returns <see cref=\"F:SharpDX.WIC.ResultCode.UnsupportedOperation\"/> if the feature is not supported by the encoder.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapEncoder::SetPalette']/*\"/>\t\n            <msdn-id>ee690126</msdn-id>\t\n            <unmanaged>HRESULT IWICBitmapEncoder::SetPalette([In, Optional] IWICPalette* pIPalette)</unmanaged>\t\n            <unmanaged-short>IWICBitmapEncoder::SetPalette</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapEncoder.SetThumbnail(SharpDX.WIC.BitmapSource)\">\n            <summary>\t\n            <p>Sets the global thumbnail for the image.</p>\t\n            </summary>\t\n            <param name=\"thumbnailRef\"><dd>  <p>The <strong><see cref=\"T:SharpDX.WIC.BitmapSource\"/></strong> to set as the global thumbnail.</p> </dd></param>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful, or an error value otherwise. </p><p>Returns <see cref=\"F:SharpDX.WIC.ResultCode.UnsupportedOperation\"/> if the feature is not supported by the encoder.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapEncoder::SetThumbnail']/*\"/>\t\n            <msdn-id>ee690129</msdn-id>\t\n            <unmanaged>HRESULT IWICBitmapEncoder::SetThumbnail([In, Optional] IWICBitmapSource* pIThumbnail)</unmanaged>\t\n            <unmanaged-short>IWICBitmapEncoder::SetThumbnail</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapEncoder.SetPreview(SharpDX.WIC.BitmapSource)\">\n            <summary>\t\n            <p>Sets the global preview for the image.</p>\t\n            </summary>\t\n            <param name=\"previewRef\"><dd>  <p>The <strong><see cref=\"T:SharpDX.WIC.BitmapSource\"/></strong> to use as the global preview.</p> </dd></param>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful, or an error value otherwise. </p><p>Returns <see cref=\"F:SharpDX.WIC.ResultCode.UnsupportedOperation\"/> if the feature is not supported by the encoder.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapEncoder::SetPreview']/*\"/>\t\n            <msdn-id>ee690128</msdn-id>\t\n            <unmanaged>HRESULT IWICBitmapEncoder::SetPreview([In, Optional] IWICBitmapSource* pIPreview)</unmanaged>\t\n            <unmanaged-short>IWICBitmapEncoder::SetPreview</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapEncoder.CreateNewFrame(SharpDX.WIC.BitmapFrameEncode,SharpDX.Win32.PropertyBag)\">\n            <summary>\t\n            <p>Creates a new <strong><see cref=\"T:SharpDX.WIC.BitmapFrameEncode\"/></strong> instance.</p>\t\n            </summary>\t\n            <param name=\"frameEncodeOut\">No documentation.</param>\t\n            <param name=\"encoderOptionsOut\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>The parameter <em>ppIEncoderOptions</em> can be used to receive an <see cref=\"T:SharpDX.Win32.PropertyBag\"/> that can then be used to specify encoder options. This is done by passing a reference to a <strong><c>null</c></strong><see cref=\"T:SharpDX.Win32.PropertyBag\"/> reference in <em>ppIEncoderOptions</em>. You should then set your desired encoder options on the <see cref=\"T:SharpDX.Win32.PropertyBag\"/> returned, and pass this <see cref=\"T:SharpDX.Win32.PropertyBag\"/> to <strong><see cref=\"M:SharpDX.WIC.BitmapFrameEncode.Initialize(SharpDX.Win32.PropertyBag)\"/></strong>.</p><p><strong>Note</strong>??Do not pass in a reference to an initialized <see cref=\"T:SharpDX.Win32.PropertyBag\"/>. The reference will be overwritten, and the original <see cref=\"T:SharpDX.Win32.PropertyBag\"/> will not be freed.</p><p>Otherwise, you can pass <strong><c>null</c></strong> in <em>ppIEncoderOptions</em> if you do not intend to specify encoder options.</p><p>See Encoding Overview for an example of how to set encoder options.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapEncoder::CreateNewFrame']/*\"/>\t\n            <msdn-id>ee690116</msdn-id>\t\n            <unmanaged>HRESULT IWICBitmapEncoder::CreateNewFrame([Out, Fast] IWICBitmapFrameEncode** ppIFrameEncode,[Out, Fast] IPropertyBag2** ppIEncoderOptions)</unmanaged>\t\n            <unmanaged-short>IWICBitmapEncoder::CreateNewFrame</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapEncoder.Commit\">\n            <summary>\t\n            <p>Commits all changes for the image and closes the stream.</p>\t\n            </summary>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>To finalize an image, both the frame <strong>Commit</strong> and the encoder <strong>Commit</strong> must be called. However, only call the encoder  <strong>Commit</strong> method after all frames have been committed.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapEncoder::Commit']/*\"/>\t\n            <msdn-id>ee690114</msdn-id>\t\n            <unmanaged>HRESULT IWICBitmapEncoder::Commit()</unmanaged>\t\n            <unmanaged-short>IWICBitmapEncoder::Commit</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapEncoder.GetMetadataQueryWriter(SharpDX.WIC.MetadataQueryWriter@)\">\n            <summary>\t\n            <p>Retrieves a metadata query writer for the encoder.</p>\t\n            </summary>\t\n            <param name=\"metadataQueryWriterOut\"><dd>  <p>When this method returns, contains a reference to the encoder's metadata query writer.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapEncoder::GetMetadataQueryWriter']/*\"/>\t\n            <msdn-id>ee690121</msdn-id>\t\n            <unmanaged>HRESULT IWICBitmapEncoder::GetMetadataQueryWriter([Out] IWICMetadataQueryWriter** ppIMetadataQueryWriter)</unmanaged>\t\n            <unmanaged-short>IWICBitmapEncoder::GetMetadataQueryWriter</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapEncoder.#ctor(SharpDX.WIC.ImagingFactory,System.Guid)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.BitmapEncoder\"/> class.\n            </summary>\n            <param name=\"factory\">The factory.</param>\n            <param name=\"containerFormatGuid\">The container format GUID. List from <see cref=\"T:SharpDX.WIC.ContainerFormatGuids\"/> </param>\n            <unmanaged>HRESULT IWICImagingFactory::CreateEncoder([In] const GUID&amp; guidContainerFormat,[In, Optional] const GUID* pguidVendor,[Out] IWICBitmapEncoder** ppIEncoder)</unmanaged>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapEncoder.#ctor(SharpDX.WIC.ImagingFactory,System.Guid,System.Guid)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.BitmapEncoder\"/> class.\n            </summary>\n            <param name=\"factory\">The factory.</param>\n            <param name=\"containerFormatGuid\">The container format GUID. List from <see cref=\"T:SharpDX.WIC.ContainerFormatGuids\"/></param>\n            <param name=\"guidVendorRef\">The GUID vendor ref.</param>\n            <unmanaged>HRESULT IWICImagingFactory::CreateEncoder([In] const GUID&amp; guidContainerFormat,[In, Optional] const GUID* pguidVendor,[Out] IWICBitmapEncoder** ppIEncoder)</unmanaged>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapEncoder.#ctor(SharpDX.WIC.ImagingFactory,System.Guid,SharpDX.WIC.WICStream)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.BitmapEncoder\"/> class.\n            </summary>\n            <param name=\"factory\">The factory.</param>\n            <param name=\"containerFormatGuid\">The container format GUID. List from <see cref=\"T:SharpDX.WIC.ContainerFormatGuids\"/> </param>\n            <param name=\"stream\">A stream to use as the output of this bitmap encoder.</param>\n            <unmanaged>HRESULT IWICImagingFactory::CreateEncoder([In] const GUID&amp; guidContainerFormat,[In, Optional] const GUID* pguidVendor,[Out] IWICBitmapEncoder** ppIEncoder)</unmanaged>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapEncoder.#ctor(SharpDX.WIC.ImagingFactory,System.Guid,System.IO.Stream)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.BitmapEncoder\"/> class.\n            </summary>\n            <param name=\"factory\">The factory.</param>\n            <param name=\"containerFormatGuid\">The container format GUID. List from <see cref=\"T:SharpDX.WIC.ContainerFormatGuids\"/> </param>\n            <param name=\"stream\">A stream to use as the output of this bitmap encoder.</param>\n            <unmanaged>HRESULT IWICImagingFactory::CreateEncoder([In] const GUID&amp; guidContainerFormat,[In, Optional] const GUID* pguidVendor,[Out] IWICBitmapEncoder** ppIEncoder)</unmanaged>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapEncoder.#ctor(SharpDX.WIC.ImagingFactory,System.Guid,System.Guid,SharpDX.WIC.WICStream)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.BitmapEncoder\"/> class.\n            </summary>\n            <param name=\"factory\">The factory.</param>\n            <param name=\"containerFormatGuid\">The container format GUID. List from <see cref=\"T:SharpDX.WIC.ContainerFormatGuids\"/></param>\n            <param name=\"guidVendorRef\">The GUID vendor ref.</param>\n            <param name=\"stream\">A stream to use as the output of this bitmap encoder.</param>\n            <unmanaged>HRESULT IWICImagingFactory::CreateEncoder([In] const GUID&amp; guidContainerFormat,[In, Optional] const GUID* pguidVendor,[Out] IWICBitmapEncoder** ppIEncoder)</unmanaged>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapEncoder.#ctor(SharpDX.WIC.ImagingFactory,System.Guid,System.Guid,System.IO.Stream)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.BitmapEncoder\"/> class.\n            </summary>\n            <param name=\"factory\">The factory.</param>\n            <param name=\"containerFormatGuid\">The container format GUID. List from <see cref=\"T:SharpDX.WIC.ContainerFormatGuids\"/></param>\n            <param name=\"guidVendorRef\">The GUID vendor ref.</param>\n            <param name=\"stream\">A stream to use as the output of this bitmap encoder.</param>\n            <unmanaged>HRESULT IWICImagingFactory::CreateEncoder([In] const GUID&amp; guidContainerFormat,[In, Optional] const GUID* pguidVendor,[Out] IWICBitmapEncoder** ppIEncoder)</unmanaged>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapEncoder.Initialize(SharpDX.Win32.IStream)\">\n            <summary>\n            Initializes the encoder with the provided stream.\n            </summary>\n            <param name=\"stream\">The stream to use for initialization.</param>\n            <returns>If the method succeeds, it returns <see cref=\"F:SharpDX.Result.Ok\"/>. Otherwise, it throws an exception.</returns>\n            <unmanaged>HRESULT IWICBitmapEncoder::Initialize([In, Optional] IStream* pIStream,[In] WICBitmapEncoderCacheOption cacheOption)</unmanaged>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapEncoder.Initialize(System.IO.Stream)\">\n            <summary>\n            Initializes the encoder with the provided stream.\n            </summary>\n            <param name=\"stream\">The stream to use for initialization.</param>\n            <returns>If the method succeeds, it returns <see cref=\"F:SharpDX.Result.Ok\"/>. Otherwise, it throws an exception.</returns>\n            <unmanaged>HRESULT IWICBitmapEncoder::Initialize([In, Optional] IStream* pIStream,[In] WICBitmapEncoderCacheOption cacheOption)</unmanaged>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapEncoder.SetColorContexts(SharpDX.WIC.ColorContext[])\">\n            <summary>\n            Sets the <see cref=\"T:SharpDX.WIC.ColorContext\"/> objects for the encoder.\n            </summary>\n            <param name=\"colorContextOut\">The color contexts to set for the encoder.</param>\n            <returns>If the method succeeds, it returns <see cref=\"F:SharpDX.Result.Ok\"/>. Otherwise, it throws an exception.</returns>\n            <unmanaged>HRESULT IWICBitmapEncoder::SetColorContexts([In] unsigned int cCount,[In, Buffer] IWICColorContext** ppIColorContext)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.WIC.BitmapEncoder.ContainerFormat\">\n            <summary>\t\n            <p>Retrieves the encoder's container format.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapEncoder::GetContainerFormat']/*\"/>\t\n            <msdn-id>ee690118</msdn-id>\t\n            <unmanaged>GetContainerFormat</unmanaged>\t\n            <unmanaged-short>GetContainerFormat</unmanaged-short>\t\n            <unmanaged>HRESULT IWICBitmapEncoder::GetContainerFormat([Out] GUID* pguidContainerFormat)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.WIC.BitmapEncoder.EncoderInfo\">\n            <summary>\t\n            <p>Retrieves an <strong><see cref=\"T:SharpDX.WIC.BitmapEncoderInfo\"/></strong> for the encoder.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapEncoder::GetEncoderInfo']/*\"/>\t\n            <msdn-id>ee690119</msdn-id>\t\n            <unmanaged>GetEncoderInfo</unmanaged>\t\n            <unmanaged-short>GetEncoderInfo</unmanaged-short>\t\n            <unmanaged>HRESULT IWICBitmapEncoder::GetEncoderInfo([Out] IWICBitmapEncoderInfo** ppIEncoderInfo)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.WIC.BitmapEncoder.Palette\">\n            <summary>\t\n            <p>Sets the global palette for the image.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapEncoder::SetPalette']/*\"/>\t\n            <msdn-id>ee690126</msdn-id>\t\n            <unmanaged>SetPalette</unmanaged>\t\n            <unmanaged-short>SetPalette</unmanaged-short>\t\n            <unmanaged>HRESULT IWICBitmapEncoder::SetPalette([In, Optional] IWICPalette* pIPalette)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.WIC.BitmapEncoder.Thumbnail\">\n            <summary>\t\n            <p>Sets the global thumbnail for the image.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapEncoder::SetThumbnail']/*\"/>\t\n            <msdn-id>ee690129</msdn-id>\t\n            <unmanaged>SetThumbnail</unmanaged>\t\n            <unmanaged-short>SetThumbnail</unmanaged-short>\t\n            <unmanaged>HRESULT IWICBitmapEncoder::SetThumbnail([In, Optional] IWICBitmapSource* pIThumbnail)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.WIC.BitmapEncoder.Preview\">\n            <summary>\t\n            <p>Sets the global preview for the image.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapEncoder::SetPreview']/*\"/>\t\n            <msdn-id>ee690128</msdn-id>\t\n            <unmanaged>SetPreview</unmanaged>\t\n            <unmanaged-short>SetPreview</unmanaged-short>\t\n            <unmanaged>HRESULT IWICBitmapEncoder::SetPreview([In, Optional] IWICBitmapSource* pIPreview)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.WIC.BitmapEncoder.MetadataQueryWriter\">\n            <summary>\t\n            <p>Retrieves a metadata query writer for the encoder.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapEncoder::GetMetadataQueryWriter']/*\"/>\t\n            <msdn-id>ee690121</msdn-id>\t\n            <unmanaged>GetMetadataQueryWriter</unmanaged>\t\n            <unmanaged-short>GetMetadataQueryWriter</unmanaged-short>\t\n            <unmanaged>HRESULT IWICBitmapEncoder::GetMetadataQueryWriter([Out] IWICMetadataQueryWriter** ppIMetadataQueryWriter)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.WIC.BitmapEncoderInfo\">\n            <summary>\t\n            <p>Exposes methods that provide information about an encoder.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapEncoderInfo']/*\"/>\t\n            <msdn-id>ee690112</msdn-id>\t\n            <unmanaged>IWICBitmapEncoderInfo</unmanaged>\t\n            <unmanaged-short>IWICBitmapEncoderInfo</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapEncoderInfo.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.BitmapEncoderInfo\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapEncoderInfo.op_Explicit(System.IntPtr)~SharpDX.WIC.BitmapEncoderInfo\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.WIC.BitmapEncoderInfo\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapEncoderInfo.CreateInstance(SharpDX.WIC.BitmapEncoder@)\">\n            <summary>\t\n            <p>Creates a new <strong><see cref=\"T:SharpDX.WIC.BitmapEncoder\"/></strong> instance.</p>\t\n            </summary>\t\n            <param name=\"bitmapEncoderOut\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapEncoderInfo::CreateInstance']/*\"/>\t\n            <msdn-id>ee690113</msdn-id>\t\n            <unmanaged>HRESULT IWICBitmapEncoderInfo::CreateInstance([Out] IWICBitmapEncoder** ppIBitmapEncoder)</unmanaged>\t\n            <unmanaged-short>IWICBitmapEncoderInfo::CreateInstance</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.WIC.BitmapFlipRotator\">\n            <summary>\t\n            <p>Exposes methods that produce a flipped (horizontal or vertical) and/or rotated (by 90 degree increments) bitmap source. Rotations are done before the flip.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>IWICBitmapFipRotator requests data on a per-pixel basis, while WIC codecs provide data on a per-scanline basis. This causes the fliprotator object to exhibit n2 behavior if there is no buffering.  This occures because each pixel in the transformed image requires an entire scanline to be decoded in the file. It is recommended that you buffer the image using <strong><see cref=\"T:SharpDX.WIC.Bitmap\"/></strong>, or flip/rotate the image using Direct2D.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapFlipRotator']/*\"/>\t\n            <msdn-id>ee690131</msdn-id>\t\n            <unmanaged>IWICBitmapFlipRotator</unmanaged>\t\n            <unmanaged-short>IWICBitmapFlipRotator</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapFlipRotator.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.BitmapFlipRotator\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapFlipRotator.op_Explicit(System.IntPtr)~SharpDX.WIC.BitmapFlipRotator\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.WIC.BitmapFlipRotator\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapFlipRotator.Initialize(SharpDX.WIC.BitmapSource,SharpDX.WIC.BitmapTransformOptions)\">\n            <summary>\t\n            <p>Initializes the bitmap flip rotator with the provided parameters.</p>\t\n            </summary>\t\n            <param name=\"sourceRef\"><dd>  <p>The input bitmap source.</p> </dd></param>\t\n            <param name=\"options\"><dd>  <p>The <strong><see cref=\"T:SharpDX.WIC.BitmapTransformOptions\"/></strong> to flip or rotate the image.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapFlipRotator::Initialize']/*\"/>\t\n            <msdn-id>ee690132</msdn-id>\t\n            <unmanaged>HRESULT IWICBitmapFlipRotator::Initialize([In, Optional] IWICBitmapSource* pISource,[In] WICBitmapTransformOptions options)</unmanaged>\t\n            <unmanaged-short>IWICBitmapFlipRotator::Initialize</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapFlipRotator.#ctor(SharpDX.WIC.ImagingFactory)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.BitmapFlipRotator\"/> class.\n            </summary>\n            <param name=\"factory\">The factory.</param>\n        </member>\n        <member name=\"T:SharpDX.WIC.BitmapFrameDecode\">\n            <summary>\t\n            <p>Defines methods for decoding individual image frames of an encoded file.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapFrameDecode']/*\"/>\t\n            <msdn-id>ee690134</msdn-id>\t\n            <unmanaged>IWICBitmapFrameDecode</unmanaged>\t\n            <unmanaged-short>IWICBitmapFrameDecode</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapFrameDecode.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.BitmapFrameDecode\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapFrameDecode.op_Explicit(System.IntPtr)~SharpDX.WIC.BitmapFrameDecode\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.WIC.BitmapFrameDecode\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapFrameDecode.GetMetadataQueryReader(SharpDX.WIC.MetadataQueryReader@)\">\n            <summary>\t\n            <p>Retrieves a metadata query reader for the frame.</p>\t\n            </summary>\t\n            <param name=\"metadataQueryReaderOut\"><dd>  <p>When this method returns, contains a reference to the frame's metadata query reader.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapFrameDecode::GetMetadataQueryReader']/*\"/>\t\n            <msdn-id>ee690137</msdn-id>\t\n            <unmanaged>HRESULT IWICBitmapFrameDecode::GetMetadataQueryReader([Out] IWICMetadataQueryReader** ppIMetadataQueryReader)</unmanaged>\t\n            <unmanaged-short>IWICBitmapFrameDecode::GetMetadataQueryReader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapFrameDecode.GetColorContexts(System.Int32,SharpDX.WIC.ColorContext[],System.Int32@)\">\n            <summary>\t\n            <p>Retrieves the <strong><see cref=\"T:SharpDX.WIC.ColorContext\"/></strong> associated with the image frame.</p>\t\n            </summary>\t\n            <param name=\"count\">No documentation.</param>\t\n            <param name=\"colorContextsOut\">No documentation.</param>\t\n            <param name=\"actualCountRef\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapFrameDecode::GetColorContexts']/*\"/>\t\n            <msdn-id>ee690135</msdn-id>\t\n            <unmanaged>HRESULT IWICBitmapFrameDecode::GetColorContexts([In] unsigned int cCount,[Out, Buffer, Optional] IWICColorContext** ppIColorContexts,[Out] unsigned int* pcActualCount)</unmanaged>\t\n            <unmanaged-short>IWICBitmapFrameDecode::GetColorContexts</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapFrameDecode.GetThumbnail(SharpDX.WIC.BitmapSource@)\">\n            <summary>\t\n            <p>Retrieves a small preview of the frame, if supported by the codec.</p>\t\n            </summary>\t\n            <param name=\"thumbnailOut\"><dd>  <p>A reference that receives a reference to the <strong><see cref=\"T:SharpDX.WIC.BitmapSource\"/></strong> of the thumbnail.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>Not all formats support thumbnails. Joint Photographic Experts Group (JPEG), Tagged Image File Format (TIFF), and Microsoft?Windows Digital Photo (WDP) support thumbnails.</p>Note to Implementers<p>If the codec does not support thumbnails, return WINCODEC_ERROR_CODECNOTHUMBNAIL rather than E_NOTIMPL.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapFrameDecode::GetThumbnail']/*\"/>\t\n            <msdn-id>ee690139</msdn-id>\t\n            <unmanaged>HRESULT IWICBitmapFrameDecode::GetThumbnail([Out] IWICBitmapSource** ppIThumbnail)</unmanaged>\t\n            <unmanaged-short>IWICBitmapFrameDecode::GetThumbnail</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.WIC.BitmapFrameDecode.MetadataQueryReader\">\n            <summary>\t\n            <p>Retrieves a metadata query reader for the frame.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapFrameDecode::GetMetadataQueryReader']/*\"/>\t\n            <msdn-id>ee690137</msdn-id>\t\n            <unmanaged>GetMetadataQueryReader</unmanaged>\t\n            <unmanaged-short>GetMetadataQueryReader</unmanaged-short>\t\n            <unmanaged>HRESULT IWICBitmapFrameDecode::GetMetadataQueryReader([Out] IWICMetadataQueryReader** ppIMetadataQueryReader)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.WIC.BitmapFrameDecode.Thumbnail\">\n            <summary>\t\n            <p>Retrieves a small preview of the frame, if supported by the codec.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Not all formats support thumbnails. Joint Photographic Experts Group (JPEG), Tagged Image File Format (TIFF), and Microsoft?Windows Digital Photo (WDP) support thumbnails.</p>Note to Implementers<p>If the codec does not support thumbnails, return WINCODEC_ERROR_CODECNOTHUMBNAIL rather than E_NOTIMPL.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapFrameDecode::GetThumbnail']/*\"/>\t\n            <msdn-id>ee690139</msdn-id>\t\n            <unmanaged>GetThumbnail</unmanaged>\t\n            <unmanaged-short>GetThumbnail</unmanaged-short>\t\n            <unmanaged>HRESULT IWICBitmapFrameDecode::GetThumbnail([Out] IWICBitmapSource** ppIThumbnail)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.WIC.BitmapFrameDecode.ColorContexts\">\n            <summary>\n            Gets the <see cref=\"T:SharpDX.WIC.ColorContext\"/> objects of the image.\n            </summary>\n            <unmanaged>HRESULT IWICBitmapFrameDecode::GetColorContexts([In] unsigned int cCount,[InOut, Buffer, Optional] IWICColorContext** ppIColorContexts,[Out] unsigned int* pcActualCount)</unmanaged>\t\n        </member>\n        <member name=\"T:SharpDX.WIC.BitmapFrameEncode\">\n            <summary>\t\n            <p>Represents an encoder's individual image frames.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapFrameEncode']/*\"/>\t\n            <msdn-id>ee690141</msdn-id>\t\n            <unmanaged>IWICBitmapFrameEncode</unmanaged>\t\n            <unmanaged-short>IWICBitmapFrameEncode</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapFrameEncode.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.BitmapFrameEncode\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapFrameEncode.op_Explicit(System.IntPtr)~SharpDX.WIC.BitmapFrameEncode\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.WIC.BitmapFrameEncode\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapFrameEncode.Initialize(SharpDX.Win32.PropertyBag)\">\n            <summary>\t\n            <p>Initializes the frame encoder using the given properties.</p>\t\n            </summary>\t\n            <param name=\"encoderOptionsRef\"><dd>  <p>The set of properties to use for <strong><see cref=\"T:SharpDX.WIC.BitmapFrameEncode\"/></strong> initialization.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapFrameEncode::Initialize']/*\"/>\t\n            <msdn-id>ee690146</msdn-id>\t\n            <unmanaged>HRESULT IWICBitmapFrameEncode::Initialize([In, Optional] IPropertyBag2* pIEncoderOptions)</unmanaged>\t\n            <unmanaged-short>IWICBitmapFrameEncode::Initialize</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapFrameEncode.SetSize(System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Sets the output image dimensions for the frame.</p>\t\n            </summary>\t\n            <param name=\"width\"><dd>  <p>The width of the output image.</p> </dd></param>\t\n            <param name=\"height\"><dd>  <p>The height of the output image.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapFrameEncode::SetSize']/*\"/>\t\n            <msdn-id>ee690154</msdn-id>\t\n            <unmanaged>HRESULT IWICBitmapFrameEncode::SetSize([In] unsigned int uiWidth,[In] unsigned int uiHeight)</unmanaged>\t\n            <unmanaged-short>IWICBitmapFrameEncode::SetSize</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapFrameEncode.SetResolution(System.Double,System.Double)\">\n            <summary>\t\n            <p>Sets the physical resolution of the output image.</p>\t\n            </summary>\t\n            <param name=\"dpiX\"><dd>  <p>The horizontal resolution value.</p> </dd></param>\t\n            <param name=\"dpiY\"><dd>  <p>The vertical resolution value.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapFrameEncode::SetResolution']/*\"/>\t\n            <msdn-id>ee690152</msdn-id>\t\n            <unmanaged>HRESULT IWICBitmapFrameEncode::SetResolution([In] double dpiX,[In] double dpiY)</unmanaged>\t\n            <unmanaged-short>IWICBitmapFrameEncode::SetResolution</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapFrameEncode.SetPixelFormat(System.Guid@)\">\n            <summary>\t\n            <p>Requests that the encoder use the specified pixel format.</p>\t\n            </summary>\t\n            <param name=\"pixelFormatRef\"><dd>  <p>If the method succeeds, contains the specified pixel format <see cref=\"T:System.Guid\"/>; otherwise, contains the closest supported pixel format <see cref=\"T:System.Guid\"/>. For a list of pixel format GUIDs, see Native Pixel Formats.</p> </dd></param>\t\n            <returns><p>Possible return values include the following.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>Success.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.WIC.ResultCode.WrongState\"/></strong></dt> </dl> </td><td> <p>The <strong><see cref=\"M:SharpDX.WIC.BitmapFrameEncode.Initialize(SharpDX.Win32.PropertyBag)\"/></strong> method was not called.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapFrameEncode::SetPixelFormat']/*\"/>\t\n            <msdn-id>ee690151</msdn-id>\t\n            <unmanaged>HRESULT IWICBitmapFrameEncode::SetPixelFormat([InOut] GUID* pPixelFormat)</unmanaged>\t\n            <unmanaged-short>IWICBitmapFrameEncode::SetPixelFormat</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapFrameEncode.SetColorContexts(System.Int32,SharpDX.WIC.ColorContext[])\">\n            <summary>\t\n            <p>Sets a given number <strong><see cref=\"T:SharpDX.WIC.ColorContext\"/></strong> profiles to the frame.</p>\t\n            </summary>\t\n            <param name=\"count\">No documentation.</param>\t\n            <param name=\"colorContextOut\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapFrameEncode::SetColorContexts']/*\"/>\t\n            <msdn-id>ee690148</msdn-id>\t\n            <unmanaged>HRESULT IWICBitmapFrameEncode::SetColorContexts([In] unsigned int cCount,[In, Buffer] IWICColorContext** ppIColorContext)</unmanaged>\t\n            <unmanaged-short>IWICBitmapFrameEncode::SetColorContexts</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapFrameEncode.SetColorContexts(System.Int32,SharpDX.ComArray{SharpDX.WIC.ColorContext})\">\n            <summary>\t\n            <p>Sets a given number <strong><see cref=\"T:SharpDX.WIC.ColorContext\"/></strong> profiles to the frame.</p>\t\n            </summary>\t\n            <param name=\"count\">No documentation.</param>\t\n            <param name=\"colorContextOut\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapFrameEncode::SetColorContexts']/*\"/>\t\n            <msdn-id>ee690148</msdn-id>\t\n            <unmanaged>HRESULT IWICBitmapFrameEncode::SetColorContexts([In] unsigned int cCount,[In, Buffer] IWICColorContext** ppIColorContext)</unmanaged>\t\n            <unmanaged-short>IWICBitmapFrameEncode::SetColorContexts</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapFrameEncode.SetPalette(SharpDX.WIC.Palette)\">\n            <summary>\t\n            <p>Sets the <strong><see cref=\"T:SharpDX.WIC.Palette\"/></strong> for indexed pixel formats.</p>\t\n            </summary>\t\n            <param name=\"paletteRef\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>This method does not fail if called on a frame whose pixel format is set to a non-indexed pixel format. The target pixel format is a non-indexed format, the palette will be ignored.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapFrameEncode::SetPalette']/*\"/>\t\n            <msdn-id>ee690150</msdn-id>\t\n            <unmanaged>HRESULT IWICBitmapFrameEncode::SetPalette([In, Optional] IWICPalette* pIPalette)</unmanaged>\t\n            <unmanaged-short>IWICBitmapFrameEncode::SetPalette</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapFrameEncode.SetThumbnail(SharpDX.WIC.BitmapSource)\">\n            <summary>\t\n            <p>Sets the frame thumbnail if supported by the codec.</p>\t\n            </summary>\t\n            <param name=\"thumbnailRef\"><dd>  <p>The bitmap source to use as the thumbnail.</p> </dd></param>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful, or an error value otherwise. </p><p>Returns <see cref=\"F:SharpDX.WIC.ResultCode.UnsupportedOperation\"/> if the feature is not supported by the encoder.</p></returns>\t\n            <remarks>\t\n            <p><strong>SetThumbnail</strong> should be called before calling <strong>WritePixels</strong> or <strong>WriteSource</strong>. The thumbnail will not be added to the encoded file if <strong>SetThumbnail</strong> after a call to <strong>WritePixels</strong> or <strong>WriteSource</strong>. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapFrameEncode::SetThumbnail']/*\"/>\t\n            <msdn-id>ee690156</msdn-id>\t\n            <unmanaged>HRESULT IWICBitmapFrameEncode::SetThumbnail([In, Optional] IWICBitmapSource* pIThumbnail)</unmanaged>\t\n            <unmanaged-short>IWICBitmapFrameEncode::SetThumbnail</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapFrameEncode.WritePixels(System.Int32,System.Int32,System.Int32,System.IntPtr)\">\n            <summary>\t\n            <p>Encodes the frame scanlines.</p>\t\n            </summary>\t\n            <param name=\"lineCount\"><dd>  <p>The number of lines to encode.</p> </dd></param>\t\n            <param name=\"stride\"><dd>  <p>The <em>stride</em> of the image pixels.</p> </dd></param>\t\n            <param name=\"bufferSize\"><dd>  <p>The size of the pixel buffer.</p> </dd></param>\t\n            <param name=\"pixelsRef\"><dd>  <p>A reference to the pixel buffer.</p> </dd></param>\t\n            <returns><p>Possible return values include the following.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>Success.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.WIC.ResultCode.Codectoomanyscanlines\"/></strong></dt> </dl> </td><td> <p>The value of <em>lineCount</em> is larger than the number of scan lines in the image.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>Successive <strong>WritePixels</strong> calls are assumed to be sequential scanline access in the output image.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapFrameEncode::WritePixels']/*\"/>\t\n            <msdn-id>ee690158</msdn-id>\t\n            <unmanaged>HRESULT IWICBitmapFrameEncode::WritePixels([In] unsigned int lineCount,[In] unsigned int cbStride,[In] unsigned int cbBufferSize,[In, Buffer] void* pbPixels)</unmanaged>\t\n            <unmanaged-short>IWICBitmapFrameEncode::WritePixels</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapFrameEncode.WriteSource(SharpDX.WIC.BitmapSource,System.Nullable{SharpDX.DrawingRectangle})\">\n            <summary>\t\n            <p>Encodes a bitmap source.</p>\t\n            </summary>\t\n            <param name=\"bitmapSourceRef\"><dd>  <p>The bitmap source to encode.</p> </dd></param>\t\n            <param name=\"rectangleRef\"><dd>  <p>The size rectangle of the bitmap source.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>If <strong>SetSize</strong> is not called prior to calling <strong>WriteSource</strong>, the size given in <em>prc</em> is used if not <strong><c>null</c></strong>. Otherwise, the size of the <strong><see cref=\"T:SharpDX.WIC.BitmapSource\"/></strong> given in <em>pIBitmapSource</em> is used. </p><p>If <strong>SetPixelFormat</strong> is not called prior to calling <strong>WriteSource</strong>, the pixel format of the <strong><see cref=\"T:SharpDX.WIC.BitmapSource\"/></strong> given in <em>pIBitmapSource</em> is used.</p><p>If <strong>SetResolution</strong> is not called prior to calling <strong>WriteSource</strong>, the pixel format of <em>pIBitmapSource</em> is used.</p><p>If <strong>SetPalette</strong> is not called prior to calling <strong>WriteSource</strong>, the target pixel format is indexed, and the pixel format of <em>pIBitmapSource</em> matches the encoder frame's pixel format, then the <em>pIBitmapSource</em> pixel format is used.</p><p>When encoding a GIF image, if the global palette is set and the frame level palette is not set directly by the user or by a custom independent software vendor (ISV) GIF codec, <strong>WriteSource</strong> will use the global palette to encode the frame even when <em>pIBitmapSource</em> has a frame level palette.</p><p><strong>Windows Vista:</strong>The source rect width must match the width set through SetSize. Repeated <strong>WriteSource</strong> calls can be made as long as the total accumulated source rect height is the same as set through SetSize.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapFrameEncode::WriteSource']/*\"/>\t\n            <msdn-id>ee690159</msdn-id>\t\n            <unmanaged>HRESULT IWICBitmapFrameEncode::WriteSource([In, Optional] IWICBitmapSource* pIBitmapSource,[In, Optional] WICRect* prc)</unmanaged>\t\n            <unmanaged-short>IWICBitmapFrameEncode::WriteSource</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapFrameEncode.Commit\">\n            <summary>\t\n            <p>Commits the frame to the image.</p>\t\n            </summary>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>To finalize the image, both the frame <strong>Commit</strong> and the encoder <strong>Commit</strong> must be called. However, only call the encoder  <strong>Commit</strong> method after all frames have been committed.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapFrameEncode::Commit']/*\"/>\t\n            <msdn-id>ee690142</msdn-id>\t\n            <unmanaged>HRESULT IWICBitmapFrameEncode::Commit()</unmanaged>\t\n            <unmanaged-short>IWICBitmapFrameEncode::Commit</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapFrameEncode.GetMetadataQueryWriter(SharpDX.WIC.MetadataQueryWriter@)\">\n            <summary>\t\n            <p>Gets the metadata query writer for the encoder frame.</p>\t\n            </summary>\t\n            <param name=\"metadataQueryWriterOut\"><dd>  <p>When this method returns, contains a reference to metadata query writer for the encoder frame.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapFrameEncode::GetMetadataQueryWriter']/*\"/>\t\n            <msdn-id>ee690144</msdn-id>\t\n            <unmanaged>HRESULT IWICBitmapFrameEncode::GetMetadataQueryWriter([Out] IWICMetadataQueryWriter** ppIMetadataQueryWriter)</unmanaged>\t\n            <unmanaged-short>IWICBitmapFrameEncode::GetMetadataQueryWriter</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapFrameEncode.#ctor(SharpDX.WIC.BitmapEncoder)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.BitmapFrameEncode\"/> class.\n            </summary>\n            <param name=\"encoder\">The encoder.</param>\n            <unmanaged>HRESULT IWICBitmapEncoder::CreateNewFrame([Out] IWICBitmapFrameEncode** ppIFrameEncode,[Out] IPropertyBag2** ppIEncoderOptions)</unmanaged>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapFrameEncode.Initialize\">\n            <summary>\n            Initializes this instance.\n            </summary>\n            <unmanaged>HRESULT IWICBitmapFrameEncode::Initialize([In, Optional] IPropertyBag2* pIEncoderOptions)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapFrameEncode.SetColorContexts(SharpDX.WIC.ColorContext[])\">\n            <summary>\n            Sets the <see cref=\"T:SharpDX.WIC.ColorContext\"/> objects for this frame encoder.\n            </summary>\n            <param name=\"colorContextOut\">The color contexts to set for the encoder.</param>\n            <returns>If the method succeeds, it returns <see cref=\"F:SharpDX.Result.Ok\"/>. Otherwise, it throws an exception.</returns>\n            <unmanaged>HRESULT IWICBitmapFrameEncode::SetColorContexts([In] unsigned int cCount,[In, Buffer] IWICColorContext** ppIColorContext)</unmanaged>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapFrameEncode.WritePixels(System.Int32,SharpDX.DataRectangle,System.Int32)\">\n            <summary>\t\n            <p>Encodes the frame scanlines.</p>\t\n            </summary>\t\n            <param name=\"lineCount\"><dd>  <p>The number of lines to encode.</p> </dd></param>\t\n            <param name=\"buffer\">A data buffer containing the pixels to copy from.</param>\t\n            <param name=\"totalSizeInBytes\">Total size in bytes of pixels to write. If == 0, size is calculated with lineCount * rowStride.</param>\n            <remarks>\t\n            <p>Successive <strong>WritePixels</strong> calls are assumed to be sequential scanline access in the output image.</p>\t\n            </remarks>\t\n            <msdn-id>ee690158</msdn-id>\t\n            <unmanaged>HRESULT IWICBitmapFrameEncode::WritePixels([In] unsigned int lineCount,[In] unsigned int cbStride,[In] unsigned int cbBufferSize,[In, Buffer] void* pbPixels)</unmanaged>\t\n            <unmanaged-short>IWICBitmapFrameEncode::WritePixels</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapFrameEncode.WritePixels(System.Int32,System.IntPtr,System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Encodes the frame scanlines.</p>\t\n            </summary>\t\n            <param name=\"lineCount\"><dd>  <p>The number of lines to encode.</p> </dd></param>\t\n            <param name=\"buffer\">A data buffer containing the pixels to copy from.</param>\n            <param name=\"rowStride\">The stride of one row.</param>\n            <param name=\"totalSizeInBytes\">Total size in bytes of pixels to write. If == 0, size is calculated with lineCount * rowStride.</param>\n            <remarks>\t\n            <p>Successive <strong>WritePixels</strong> calls are assumed to be sequential scanline access in the output image.</p>\t\n            </remarks>\t\n            <msdn-id>ee690158</msdn-id>\t\n            <unmanaged>HRESULT IWICBitmapFrameEncode::WritePixels([In] unsigned int lineCount,[In] unsigned int cbStride,[In] unsigned int cbBufferSize,[In, Buffer] void* pbPixels)</unmanaged>\t\n            <unmanaged-short>IWICBitmapFrameEncode::WritePixels</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapFrameEncode.WritePixels``1(System.Int32,System.Int32,``0[])\">\n            <summary>\t\n            <p>Encodes the frame scanlines.</p>\t\n            </summary>\t\n            <param name=\"lineCount\"><dd>  <p>The number of lines to encode.</p> </dd></param>\t\n            <param name=\"stride\"><dd>  <p>The <em>stride</em> of the image pixels.</p> </dd></param>\t\n            <param name=\"pixelBuffer\"><dd>  <p>A reference to the pixel buffer.</p> </dd></param>\t\n            <remarks>\t\n            <p>Successive <strong>WritePixels</strong> calls are assumed to be sequential scanline access in the output image.</p>\t\n            </remarks>\t\n            <msdn-id>ee690158</msdn-id>\t\n            <unmanaged>HRESULT IWICBitmapFrameEncode::WritePixels([In] unsigned int lineCount,[In] unsigned int cbStride,[In] unsigned int cbBufferSize,[In, Buffer] void* pbPixels)</unmanaged>\t\n            <unmanaged-short>IWICBitmapFrameEncode::WritePixels</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.WIC.BitmapFrameEncode.Palette\">\n            <summary>\t\n            <p>Sets the <strong><see cref=\"T:SharpDX.WIC.Palette\"/></strong> for indexed pixel formats.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This method does not fail if called on a frame whose pixel format is set to a non-indexed pixel format. The target pixel format is a non-indexed format, the palette will be ignored.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapFrameEncode::SetPalette']/*\"/>\t\n            <msdn-id>ee690150</msdn-id>\t\n            <unmanaged>SetPalette</unmanaged>\t\n            <unmanaged-short>SetPalette</unmanaged-short>\t\n            <unmanaged>HRESULT IWICBitmapFrameEncode::SetPalette([In, Optional] IWICPalette* pIPalette)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.WIC.BitmapFrameEncode.Thumbnail\">\n            <summary>\t\n            <p>Sets the frame thumbnail if supported by the codec.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p><strong>SetThumbnail</strong> should be called before calling <strong>WritePixels</strong> or <strong>WriteSource</strong>. The thumbnail will not be added to the encoded file if <strong>SetThumbnail</strong> after a call to <strong>WritePixels</strong> or <strong>WriteSource</strong>. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapFrameEncode::SetThumbnail']/*\"/>\t\n            <msdn-id>ee690156</msdn-id>\t\n            <unmanaged>SetThumbnail</unmanaged>\t\n            <unmanaged-short>SetThumbnail</unmanaged-short>\t\n            <unmanaged>HRESULT IWICBitmapFrameEncode::SetThumbnail([In, Optional] IWICBitmapSource* pIThumbnail)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.WIC.BitmapFrameEncode.MetadataQueryWriter\">\n            <summary>\t\n            <p>Gets the metadata query writer for the encoder frame.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapFrameEncode::GetMetadataQueryWriter']/*\"/>\t\n            <msdn-id>ee690144</msdn-id>\t\n            <unmanaged>GetMetadataQueryWriter</unmanaged>\t\n            <unmanaged-short>GetMetadataQueryWriter</unmanaged-short>\t\n            <unmanaged>HRESULT IWICBitmapFrameEncode::GetMetadataQueryWriter([Out] IWICMetadataQueryWriter** ppIMetadataQueryWriter)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.WIC.BitmapFrameEncode.Options\">\n            <summary>\n            Gets the properties to setup before <see cref=\"M:SharpDX.WIC.BitmapFrameEncode.Initialize\"/>.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.WIC.BitmapLock\">\n            <summary>\t\n            <p>Exposes methods that support the <strong>Lock</strong> method.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The bitmap lock is simply an abstraction for a rectangular memory window into the bitmap. For the simplest case, a system memory bitmap, this is simply a reference to the top left corner of the rectangle and a stride value.</p><p>To release the exclusive lock set by <strong>Lock</strong> method and the associated <strong><see cref=\"T:SharpDX.WIC.BitmapLock\"/></strong> object, call IUnknown::Release on the <strong><see cref=\"T:SharpDX.WIC.BitmapLock\"/></strong> object.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapLock']/*\"/>\t\n            <msdn-id>ee690161</msdn-id>\t\n            <unmanaged>IWICBitmapLock</unmanaged>\t\n            <unmanaged-short>IWICBitmapLock</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapLock.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.BitmapLock\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapLock.op_Explicit(System.IntPtr)~SharpDX.WIC.BitmapLock\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.WIC.BitmapLock\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapLock.GetSize(System.Int32@,System.Int32@)\">\n            <summary>\t\n            <p>Retrieves the width and height, in pixels, of the locked rectangle.</p>\t\n            </summary>\t\n            <param name=\"widthRef\"><dd>  <p>A reference that receives the width of the locked rectangle.</p> </dd></param>\t\n            <param name=\"heightRef\"><dd>  <p>A reference that receives the height of the locked rectangle.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapLock::GetSize']/*\"/>\t\n            <msdn-id>ee690165</msdn-id>\t\n            <unmanaged>HRESULT IWICBitmapLock::GetSize([Out] unsigned int* puiWidth,[Out] unsigned int* puiHeight)</unmanaged>\t\n            <unmanaged-short>IWICBitmapLock::GetSize</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapLock.GetStride(System.Int32@)\">\n            <summary>\t\n            <p>Provides access to the <em>stride</em> value for the memory.</p>\t\n            </summary>\t\n            <param name=\"strideRef\"><dd>  </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p> Note the stride value is specific to the <strong><see cref=\"T:SharpDX.WIC.BitmapLock\"/></strong>, not the bitmap.  For example, two consecutive locks on the same rectangle of a bitmap may return different references and stride values, depending on internal implementation.  </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapLock::GetStride']/*\"/>\t\n            <msdn-id>ee690166</msdn-id>\t\n            <unmanaged>HRESULT IWICBitmapLock::GetStride([Out] unsigned int* pcbStride)</unmanaged>\t\n            <unmanaged-short>IWICBitmapLock::GetStride</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapLock.GetDataPointer(System.Int32@)\">\n            <summary>\t\n            <p>Gets the reference to the top left pixel in the locked rectangle.</p>\t\n            </summary>\t\n            <param name=\"bufferSizeRef\"><dd>  <p>A reference that receives the size of the buffer.</p> </dd></param>\t\n            <returns><dd>  <p>A reference that receives a reference to the top left pixel in the locked rectangle.</p> </dd></returns>\t\n            <remarks>\t\n            <p>The reference provided by this method should not be used outside of the lifetime of the lock itself.</p><p><strong>GetDataPointer</strong> is not available in multi-threaded apartment applications.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapLock::GetDataPointer']/*\"/>\t\n            <msdn-id>ee690162</msdn-id>\t\n            <unmanaged>HRESULT IWICBitmapLock::GetDataPointer([Out] unsigned int* pcbBufferSize,[Out] void** ppbData)</unmanaged>\t\n            <unmanaged-short>IWICBitmapLock::GetDataPointer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapLock.GetPixelFormat(System.Guid@)\">\n            <summary>\t\n            <p>Gets the pixel format of for the locked area of pixels. This can be used to compute the number of bytes-per-pixel in the locked area.</p>\t\n            </summary>\t\n            <param name=\"pixelFormatRef\"><dd>  <p>A reference that receives the pixel format <see cref=\"T:System.Guid\"/> of the locked area.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapLock::GetPixelFormat']/*\"/>\t\n            <msdn-id>ee690164</msdn-id>\t\n            <unmanaged>HRESULT IWICBitmapLock::GetPixelFormat([Out] GUID* pPixelFormat)</unmanaged>\t\n            <unmanaged-short>IWICBitmapLock::GetPixelFormat</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.WIC.BitmapLock.Stride\">\n            <summary>\t\n            <p>Provides access to the <em>stride</em> value for the memory.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p> Note the stride value is specific to the <strong><see cref=\"T:SharpDX.WIC.BitmapLock\"/></strong>, not the bitmap.  For example, two consecutive locks on the same rectangle of a bitmap may return different references and stride values, depending on internal implementation.  </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapLock::GetStride']/*\"/>\t\n            <msdn-id>ee690166</msdn-id>\t\n            <unmanaged>GetStride</unmanaged>\t\n            <unmanaged-short>GetStride</unmanaged-short>\t\n            <unmanaged>HRESULT IWICBitmapLock::GetStride([Out] unsigned int* pcbStride)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.WIC.BitmapLock.PixelFormat\">\n            <summary>\t\n            <p>Gets the pixel format of for the locked area of pixels. This can be used to compute the number of bytes-per-pixel in the locked area.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapLock::GetPixelFormat']/*\"/>\t\n            <msdn-id>ee690164</msdn-id>\t\n            <unmanaged>GetPixelFormat</unmanaged>\t\n            <unmanaged-short>GetPixelFormat</unmanaged-short>\t\n            <unmanaged>HRESULT IWICBitmapLock::GetPixelFormat([Out] GUID* pPixelFormat)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.WIC.BitmapLock.Size\">\n            <summary>\n            Gets the size.\n            </summary>\n            <unmanaged>HRESULT IWICBitmapLock::GetSize([Out] unsigned int* puiWidth,[Out] unsigned int* puiHeight)</unmanaged>\t\n        </member>\n        <member name=\"P:SharpDX.WIC.BitmapLock.Data\">\n            <summary>\n            Gets a pointer to the data.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.WIC.BitmapScaler\">\n            <summary>\t\n            <p>Represents a resized version of the input bitmap using a resampling or filtering algorithm.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Images can be scaled to larger sizes; however, even with sophisticated scaling algorithms, there is only so much information in the image and artifacts tend to worsen the more you scale up.</p><p> The scaler will reapply the resampling algorithm every time <strong>CopyPixels</strong> is called.  If the scaled image is to be animated, the scaled image should be created once and cached in a new bitmap, after which the <strong><see cref=\"T:SharpDX.WIC.BitmapScaler\"/></strong> may be released.  In this way the scaling algorithm - which may be computationally expensive relative to drawing - is performed only once and the result displayed many times. </p><p> The scaler is optimized to use the minimum amount of memory required to scale the image correctly.  The scaler may be used to produce parts of the image incrementally (banding) by calling <strong>CopyPixels</strong> with different rectangles representing the output bands of the image.  Resampling typically requires overlapping rectangles from the source image and thus may need to request the same pixels from the source bitmap multiple times.  Requesting scanlines out-of-order from some image decoders can have a significant performance penalty.  Because of this reason, the scaler is optimized to handle consecutive horizontal bands of scanlines (rectangle width equal to the bitmap width).  In this case the accumulator from the previous vertically adjacent rectangle is re-used to avoid duplicate scanline requests from the source.  This implies that banded output from the scaler may have better performance if the bands are requested sequentially.  Of course if the scaler is simply used to produce a single rectangle output, this concern is eliminated because the scaler will internally request scanlines in the correct order. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapScaler']/*\"/>\t\n            <msdn-id>ee690168</msdn-id>\t\n            <unmanaged>IWICBitmapScaler</unmanaged>\t\n            <unmanaged-short>IWICBitmapScaler</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapScaler.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.BitmapScaler\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapScaler.op_Explicit(System.IntPtr)~SharpDX.WIC.BitmapScaler\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.WIC.BitmapScaler\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapScaler.Initialize(SharpDX.WIC.BitmapSource,System.Int32,System.Int32,SharpDX.WIC.BitmapInterpolationMode)\">\n            <summary>\t\n            <p>Initializes the bitmap scaler with the provided parameters.</p>\t\n            </summary>\t\n            <param name=\"sourceRef\"><dd>  <p>The input bitmap source.</p> </dd></param>\t\n            <param name=\"width\"><dd>  <p>The destination width.</p> </dd></param>\t\n            <param name=\"height\"><dd>  <p>The desination height.</p> </dd></param>\t\n            <param name=\"mode\"><dd>  <p>The <strong><see cref=\"T:SharpDX.WIC.BitmapInterpolationMode\"/></strong> to use when scaling.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapScaler::Initialize']/*\"/>\t\n            <msdn-id>ee690169</msdn-id>\t\n            <unmanaged>HRESULT IWICBitmapScaler::Initialize([In, Optional] IWICBitmapSource* pISource,[In] unsigned int uiWidth,[In] unsigned int uiHeight,[In] WICBitmapInterpolationMode mode)</unmanaged>\t\n            <unmanaged-short>IWICBitmapScaler::Initialize</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapScaler.#ctor(SharpDX.WIC.ImagingFactory)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.BitmapScaler\"/> class.\n            </summary>\n            <param name=\"factory\">The factory.</param>\n        </member>\n        <member name=\"T:SharpDX.WIC.BitmapSourceTransform\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapSourceTransform']/*\"/>\t\n            <msdn-id>ee719897</msdn-id>\t\n            <unmanaged>IWICBitmapSourceTransform</unmanaged>\t\n            <unmanaged-short>IWICBitmapSourceTransform</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapSourceTransform.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.BitmapSourceTransform\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapSourceTransform.op_Explicit(System.IntPtr)~SharpDX.WIC.BitmapSourceTransform\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.WIC.BitmapSourceTransform\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapSourceTransform.CopyPixels(System.Nullable{SharpDX.DrawingRectangle},System.Int32,System.Int32,System.Nullable{System.Guid},SharpDX.WIC.BitmapTransformOptions,System.Int32,System.Int32,System.IntPtr)\">\n            <summary>\t\n            <p>Copies pixel data using the supplied input parameters.</p>\t\n            </summary>\t\n            <param name=\"rectangleRef\"><dd>  <p>The rectangle of pixels to copy.</p> </dd></param>\t\n            <param name=\"width\"><dd>  <p>The width to scale the source bitmap. This parameter must equal the value obtainable through <strong><see cref=\"M:SharpDX.WIC.BitmapSourceTransform.GetClosestSize(System.Int32@,System.Int32@)\"/></strong>.</p> </dd></param>\t\n            <param name=\"height\"><dd>  <p>The height to scale the source bitmap. This parameter must equal the value obtainable through <strong><see cref=\"M:SharpDX.WIC.BitmapSourceTransform.GetClosestSize(System.Int32@,System.Int32@)\"/></strong>.</p> </dd></param>\t\n            <param name=\"guidDstFormatRef\"><dd>  <p> The <see cref=\"T:System.Guid\"/> of desired pixel format in which the pixels should be returned.  </p> <p>This <see cref=\"T:System.Guid\"/> must be a format obtained through an <strong>GetClosestPixelFormat</strong> call.</p> </dd></param>\t\n            <param name=\"dstTransform\"><dd>  <p> The desired rotation or flip to perform prior to the pixel copy. </p> <p>The transform must be an operation supported by an <strong>DoesSupportTransform</strong> call.</p> <p>If a <em>dstTransform</em> is specified, <em>nStride</em> is the <em>transformed stride</em> and is based on the <em>pguidDstFormat</em> pixel format, not the original source's pixel format.</p> </dd></param>\t\n            <param name=\"nStride\"><dd>  <p>The <em>stride</em> of the destination buffer.</p> </dd></param>\t\n            <param name=\"bufferSize\"><dd>  <p>The size of the destination buffer.</p> </dd></param>\t\n            <param name=\"bufferRef\"><dd>  <p>The output buffer.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            Codec Developer Remarks<p>For codec developer implementation details for this method, see Implementing <see cref=\"T:SharpDX.WIC.BitmapSourceTransform\"/>.</p><p> When multiple transform operations are requested, the result is dependent on the order in which the operations are performed. To ensure predictability and consistency across CODECs, it's important that all CODECs perform these operations in the same order. The recommended order of these operations is: </p><ol> <li>Scale</li> <li>Crop</li> <li>Flip/Rotate</li> </ol><p> Pixel format conversion can be performed at any time, since it has no effect on the other transforms. </p><p> The first parameter, <em>prc</em> is used to specify the region of interest for clipping the image. By convention, scaling is performed before clipping so, if the image is to be scaled as well as clipped, the region of interest should be determined after the image has been scaled. </p><p> If a <em>dstTransform</em> is specified, the stride is the transformed stride, and is based on the pixelFormat specified in the <strong>CopyPixels</strong> call, not the original frame's pixel format.             </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapSourceTransform::CopyPixels']/*\"/>\t\n            <msdn-id>ee690173</msdn-id>\t\n            <unmanaged>HRESULT IWICBitmapSourceTransform::CopyPixels([In, Optional] const WICRect* prc,[In] unsigned int uiWidth,[In] unsigned int uiHeight,[In, Optional] GUID* pguidDstFormat,[In] WICBitmapTransformOptions dstTransform,[In] unsigned int nStride,[In] unsigned int cbBufferSize,[In] void* pbBuffer)</unmanaged>\t\n            <unmanaged-short>IWICBitmapSourceTransform::CopyPixels</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapSourceTransform.GetClosestSize(System.Int32@,System.Int32@)\">\n            <summary>\t\n            <p>Returns the closest dimensions the implementation can natively scale to given the desired dimensions.</p>\t\n            </summary>\t\n            <param name=\"widthRef\"><dd>  <p>The desired width. A reference that receives the closest supported width.</p> </dd></param>\t\n            <param name=\"heightRef\"><dd>  <p>The desired height.A reference that receives the closest supported height.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapSourceTransform::GetClosestSize']/*\"/>\t\n            <msdn-id>ee690176</msdn-id>\t\n            <unmanaged>HRESULT IWICBitmapSourceTransform::GetClosestSize([InOut] unsigned int* puiWidth,[InOut] unsigned int* puiHeight)</unmanaged>\t\n            <unmanaged-short>IWICBitmapSourceTransform::GetClosestSize</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapSourceTransform.GetClosestPixelFormat(System.Guid@)\">\n            <summary>\t\n            <p>Retrieves the closest pixel format to which the implementation of <strong><see cref=\"T:SharpDX.WIC.BitmapSourceTransform\"/></strong> can natively copy pixels, given a desired format.</p>\t\n            </summary>\t\n            <param name=\"guidDstFormatRef\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapSourceTransform::GetClosestPixelFormat']/*\"/>\t\n            <msdn-id>ee690175</msdn-id>\t\n            <unmanaged>HRESULT IWICBitmapSourceTransform::GetClosestPixelFormat([InOut] GUID* pguidDstFormat)</unmanaged>\t\n            <unmanaged-short>IWICBitmapSourceTransform::GetClosestPixelFormat</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapSourceTransform.IsSupportingTransform(SharpDX.WIC.BitmapTransformOptions,SharpDX.Bool@)\">\n            <summary>\t\n            <p>Determines whether a specific transform option is supported natively by the implementation of the <strong><see cref=\"T:SharpDX.WIC.BitmapSourceTransform\"/></strong> interface.</p>\t\n            </summary>\t\n            <param name=\"dstTransform\">No documentation.</param>\t\n            <param name=\"fIsSupportedRef\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICBitmapSourceTransform::DoesSupportTransform']/*\"/>\t\n            <msdn-id>ee690174</msdn-id>\t\n            <unmanaged>HRESULT IWICBitmapSourceTransform::DoesSupportTransform([In] WICBitmapTransformOptions dstTransform,[Out] BOOL* pfIsSupported)</unmanaged>\t\n            <unmanaged-short>IWICBitmapSourceTransform::DoesSupportTransform</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapSourceTransform.CopyPixels(System.Int32,System.Int32,System.Int32,SharpDX.DataStream)\">\n            <summary>\n            Copies pixel data using the supplied input parameters.\n            </summary>\n            <param name=\"width\">The width.</param>\n            <param name=\"height\">The height.</param>\n            <param name=\"stride\">The stride.</param>\n            <param name=\"output\">The output.</param>\n            <returns></returns>\n            <unmanaged>HRESULT IWICBitmapSourceTransform::CopyPixels([In, Optional] const WICRect* prc,[In] unsigned int uiWidth,[In] unsigned int uiHeight,[In, Optional] GUID* pguidDstFormat,[In] WICBitmapTransformOptions dstTransform,[In] unsigned int nStride,[In] unsigned int cbBufferSize,[In] void* pbBuffer)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapSourceTransform.CopyPixels(System.Int32,System.Int32,SharpDX.WIC.BitmapTransformOptions,System.Int32,SharpDX.DataStream)\">\n            <summary>\n            Copies pixel data using the supplied input parameters.\n            </summary>\n            <param name=\"width\">The width.</param>\n            <param name=\"height\">The height.</param>\n            <param name=\"dstTransform\">The DST transform.</param>\n            <param name=\"stride\">The stride.</param>\n            <param name=\"output\">The output.</param>\n            <returns></returns>\n            <unmanaged>HRESULT IWICBitmapSourceTransform::CopyPixels([In, Optional] const WICRect* prc,[In] unsigned int uiWidth,[In] unsigned int uiHeight,[In, Optional] GUID* pguidDstFormat,[In] WICBitmapTransformOptions dstTransform,[In] unsigned int nStride,[In] unsigned int cbBufferSize,[In] void* pbBuffer)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapSourceTransform.CopyPixels(System.Int32,System.Int32,System.Guid,SharpDX.WIC.BitmapTransformOptions,System.Int32,SharpDX.DataStream)\">\n            <summary>\n            Copies pixel data using the supplied input parameters.\n            </summary>\n            <param name=\"width\">The width.</param>\n            <param name=\"height\">The height.</param>\n            <param name=\"guidDstFormat\">The GUID DST format.</param>\n            <param name=\"dstTransform\">The DST transform.</param>\n            <param name=\"stride\">The stride.</param>\n            <param name=\"output\">The output.</param>\n            <returns></returns>\n            <unmanaged>HRESULT IWICBitmapSourceTransform::CopyPixels([In, Optional] const WICRect* prc,[In] unsigned int uiWidth,[In] unsigned int uiHeight,[In, Optional] GUID* pguidDstFormat,[In] WICBitmapTransformOptions dstTransform,[In] unsigned int nStride,[In] unsigned int cbBufferSize,[In] void* pbBuffer)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapSourceTransform.CopyPixels(SharpDX.DrawingRectangle,System.Int32,System.Int32,System.Guid,SharpDX.WIC.BitmapTransformOptions,System.Int32,SharpDX.DataStream)\">\n            <summary>\n            Copies pixel data using the supplied input parameters.\n            </summary>\n            <param name=\"rectangle\">The rectangle.</param>\n            <param name=\"width\">The width.</param>\n            <param name=\"height\">The height.</param>\n            <param name=\"guidDstFormat\">The GUID DST format.</param>\n            <param name=\"dstTransform\">The DST transform.</param>\n            <param name=\"stride\">The stride.</param>\n            <param name=\"output\">The output.</param>\n            <returns></returns>\n            <unmanaged>HRESULT IWICBitmapSourceTransform::CopyPixels([In, Optional] const WICRect* prc,[In] unsigned int uiWidth,[In] unsigned int uiHeight,[In, Optional] GUID* pguidDstFormat,[In] WICBitmapTransformOptions dstTransform,[In] unsigned int nStride,[In] unsigned int cbBufferSize,[In] void* pbBuffer)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapSourceTransform.GetClosestSize(SharpDX.DrawingSize@)\">\n            <summary>\n            Returns the closest dimensions the implementation can natively scale to given the desired dimensions.\n            </summary>\n            <param name=\"size\">The size.</param>\n            <returns></returns>\n            <unmanaged>HRESULT IWICBitmapSourceTransform::GetClosestSize([InOut] unsigned int* puiWidth,[InOut] unsigned int* puiHeight)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.WIC.ColorContext\">\n            <summary>\t\n            <p>Exposes methods for color management.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p> A Color Context is an abstraction for a color profile. The profile can be loaded from a file (ie. \"sRGB Color Space Profile.icm\") or from a memory buffer obtained by reading. The color profile directory can be obtained by calling the GetColorDirectory API (See http://msdn.microsoft.com/library/en-us/icm/icm_58xl.asp). </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICColorContext']/*\"/>\t\n            <msdn-id>ee690193</msdn-id>\t\n            <unmanaged>IWICColorContext</unmanaged>\t\n            <unmanaged-short>IWICColorContext</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.ColorContext.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.ColorContext\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.ColorContext.op_Explicit(System.IntPtr)~SharpDX.WIC.ColorContext\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.WIC.ColorContext\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.WIC.ColorContext.InitializeFromFilename(System.String)\">\n            <summary>\t\n            <p>Initializes the color context from the given file.</p>\t\n            </summary>\t\n            <param name=\"filename\"><dd>  </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICColorContext::InitializeFromFilename']/*\"/>\t\n            <msdn-id>ee690198</msdn-id>\t\n            <unmanaged>HRESULT IWICColorContext::InitializeFromFilename([In] const wchar_t* wzFilename)</unmanaged>\t\n            <unmanaged-short>IWICColorContext::InitializeFromFilename</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.ColorContext.InitializeFromMemory(System.IntPtr,System.Int32)\">\n            <summary>\t\n            <p>Initializes the color context from a memory block.</p>\t\n            </summary>\t\n            <param name=\"bufferRef\"><dd>  <p>The buffer used to initialize the <strong><see cref=\"T:SharpDX.WIC.ColorContext\"/></strong>.</p> </dd></param>\t\n            <param name=\"bufferSize\"><dd>  <p>The size of the <em>pbBuffer</em> buffer.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICColorContext::InitializeFromMemory']/*\"/>\t\n            <msdn-id>ee690199</msdn-id>\t\n            <unmanaged>HRESULT IWICColorContext::InitializeFromMemory([In] const void* pbBuffer,[In] unsigned int cbBufferSize)</unmanaged>\t\n            <unmanaged-short>IWICColorContext::InitializeFromMemory</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.ColorContext.InitializeFromExifColorSpace(System.Int32)\">\n            <summary>\t\n            <p>Initializes the color context using an Exchangeable Image File (EXIF) color space.</p>\t\n            </summary>\t\n            <param name=\"value\"><dd>  <p>The value of the EXIF color space.</p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td><dl> <dt><strong></strong></dt> <dt>1</dt> </dl> </td><td> <p>A sRGB color space.</p> </td></tr> <tr><td><dl> <dt><strong></strong></dt> <dt>2</dt> </dl> </td><td> <p>An Adobe RGB color space.</p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICColorContext::InitializeFromExifColorSpace']/*\"/>\t\n            <msdn-id>ee690197</msdn-id>\t\n            <unmanaged>HRESULT IWICColorContext::InitializeFromExifColorSpace([In] unsigned int value)</unmanaged>\t\n            <unmanaged-short>IWICColorContext::InitializeFromExifColorSpace</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.ColorContext.GetTypeInfo(SharpDX.WIC.ColorContextType@)\">\n            <summary>\t\n            <p>Retrieves the color context type.</p>\t\n            </summary>\t\n            <param name=\"typeRef\"><dd>  <p>A reference that receives the <strong><see cref=\"T:SharpDX.WIC.ColorContextType\"/></strong> of the color context.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICColorContext::GetType']/*\"/>\t\n            <msdn-id>ee690196</msdn-id>\t\n            <unmanaged>HRESULT IWICColorContext::GetType([Out] WICColorContextType* pType)</unmanaged>\t\n            <unmanaged-short>IWICColorContext::GetType</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.ColorContext.GetProfileBytes(System.Int32,System.IntPtr,System.Int32@)\">\n            <summary>\t\n            <p>Retrieves the color context profile.</p>\t\n            </summary>\t\n            <param name=\"buffer\"><dd>  <p>The size of the <em>pbBuffer</em> buffer.</p> </dd></param>\t\n            <param name=\"bufferRef\"><dd>  <p>A reference that receives the color context profile.</p> </dd></param>\t\n            <param name=\"actualRef\"><dd>  <p>A reference that receives the actual buffer size needed to retrieve the entire color context profile.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICColorContext::GetProfileBytes']/*\"/>\t\n            <msdn-id>ee690195</msdn-id>\t\n            <unmanaged>HRESULT IWICColorContext::GetProfileBytes([In] unsigned int cbBuffer,[In] void* pbBuffer,[Out] unsigned int* pcbActual)</unmanaged>\t\n            <unmanaged-short>IWICColorContext::GetProfileBytes</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.ColorContext.GetExifColorSpace(System.Int32@)\">\n            <summary>\t\n            <p>Retrieves the Exchangeable Image File (EXIF) color space color context.</p>\t\n            </summary>\t\n            <param name=\"valueRef\"><dd>  <p>A reference that receives the EXIF color space color context.</p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td><dl> <dt><strong></strong></dt> <dt>1</dt> </dl> </td><td> <p>A sRGB color space.</p> </td></tr> <tr><td><dl> <dt><strong></strong></dt> <dt>2</dt> </dl> </td><td> <p>An Adobe RGB color space.</p> </td></tr> <tr><td><dl> <dt><strong></strong></dt> <dt>3 through 65534</dt> </dl> </td><td> <p>Unused.</p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICColorContext::GetExifColorSpace']/*\"/>\t\n            <msdn-id>ee690194</msdn-id>\t\n            <unmanaged>HRESULT IWICColorContext::GetExifColorSpace([Out] unsigned int* pValue)</unmanaged>\t\n            <unmanaged-short>IWICColorContext::GetExifColorSpace</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.ColorContext.#ctor(SharpDX.WIC.ImagingFactory)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.ColorContext\"/> class.\n            </summary>\n            <param name=\"factory\">The factory.</param>\n            <unmanaged>HRESULT IWICImagingFactory::CreateColorContext([Out, Fast] IWICColorContext** ppIWICColorContext)</unmanaged>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.ColorContext.InitializeFromMemory(SharpDX.DataStream)\">\n            <summary>\n            Initializes from memory.\n            </summary>\n            <param name=\"dataStream\">The data stream.</param>\n            <returns></returns>\n            <unmanaged>HRESULT IWICColorContext::InitializeFromMemory([In] const void* pbBuffer,[In] unsigned int cbBufferSize)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.WIC.ColorContext.TypeInfo\">\n            <summary>\t\n            <p>Retrieves the color context type.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICColorContext::GetType']/*\"/>\t\n            <msdn-id>ee690196</msdn-id>\t\n            <unmanaged>GetType</unmanaged>\t\n            <unmanaged-short>GetType</unmanaged-short>\t\n            <unmanaged>HRESULT IWICColorContext::GetType([Out] WICColorContextType* pType)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.WIC.ColorContext.ExifColorSpace\">\n            <summary>\t\n            <p>Retrieves the Exchangeable Image File (EXIF) color space color context.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICColorContext::GetExifColorSpace']/*\"/>\t\n            <msdn-id>ee690194</msdn-id>\t\n            <unmanaged>GetExifColorSpace</unmanaged>\t\n            <unmanaged-short>GetExifColorSpace</unmanaged-short>\t\n            <unmanaged>HRESULT IWICColorContext::GetExifColorSpace([Out] unsigned int* pValue)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.WIC.ColorContext.Profile\">\n            <summary>\n            Gets the color context profile.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.WIC.ColorTransform\">\n            <summary>\t\n            <p>Exposes methods that transforms an <strong><see cref=\"T:SharpDX.WIC.BitmapSource\"/></strong> from one color context to another.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>A <strong><see cref=\"T:SharpDX.WIC.ColorTransform\"/></strong> is an imaging pipeline component that knows how to pull pixels obtained from a given <strong><see cref=\"T:SharpDX.WIC.BitmapSource\"/></strong> through a color transform. The color transform is defined by mapping colors from the source color context to the destination color context in a given output pixel format.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICColorTransform']/*\"/>\t\n            <msdn-id>ee690201</msdn-id>\t\n            <unmanaged>IWICColorTransform</unmanaged>\t\n            <unmanaged-short>IWICColorTransform</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.ColorTransform.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.ColorTransform\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.ColorTransform.op_Explicit(System.IntPtr)~SharpDX.WIC.ColorTransform\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.WIC.ColorTransform\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.WIC.ColorTransform.Initialize(SharpDX.WIC.BitmapSource,SharpDX.WIC.ColorContext,SharpDX.WIC.ColorContext,System.Guid)\">\n            <summary>\t\n            <p>Initializes an <strong><see cref=\"T:SharpDX.WIC.ColorTransform\"/></strong> with a <strong><see cref=\"T:SharpDX.WIC.BitmapSource\"/></strong> and transforms it from one <strong><see cref=\"T:SharpDX.WIC.ColorContext\"/></strong> to another. </p>\t\n            </summary>\t\n            <param name=\"bitmapSourceRef\">No documentation.</param>\t\n            <param name=\"contextSourceRef\">No documentation.</param>\t\n            <param name=\"contextDestRef\">No documentation.</param>\t\n            <param name=\"ixelFmtDestRef\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICColorTransform::Initialize']/*\"/>\t\n            <msdn-id>ee690202</msdn-id>\t\n            <unmanaged>HRESULT IWICColorTransform::Initialize([In, Optional] IWICBitmapSource* pIBitmapSource,[In, Optional] IWICColorContext* pIContextSource,[In, Optional] IWICColorContext* pIContextDest,[In] const GUID&amp; pixelFmtDest)</unmanaged>\t\n            <unmanaged-short>IWICColorTransform::Initialize</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.ColorTransform.#ctor(SharpDX.WIC.ImagingFactory)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.ColorTransform\"/> class.\n            </summary>\n            <param name=\"factory\">The factory.</param>\n            <unmanaged>HRESULT IWICImagingFactory::CreateColorTransformer([Out, Fast] IWICColorTransform** ppIWICColorTransform)</unmanaged>\t\n        </member>\n        <member name=\"T:SharpDX.WIC.DevelopRaw\">\n            <summary>\t\n            <p>Exposes methods that provide access to the capabilites of a raw codec format.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICDevelopRaw']/*\"/>\t\n            <msdn-id>ee690228</msdn-id>\t\n            <unmanaged>IWICDevelopRaw</unmanaged>\t\n            <unmanaged-short>IWICDevelopRaw</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.DevelopRaw.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.DevelopRaw\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.DevelopRaw.op_Explicit(System.IntPtr)~SharpDX.WIC.DevelopRaw\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.WIC.DevelopRaw\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.WIC.DevelopRaw.QueryRawCapabilitiesInfo(SharpDX.WIC.RawCapabilitiesInfo@)\">\n            <summary>\t\n            <p>Retrieves information about which capabilities are supported for a raw image.</p>\t\n            </summary>\t\n            <param name=\"infoRef\"><dd>  <p>A reference that receives <strong><see cref=\"T:SharpDX.WIC.RawCapabilitiesInfo\"/></strong> that provides the capabilities supported by the raw image.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>It is recommended that a codec report that a capability is supported even if the results at the outer range limits are not of perfect quality.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICDevelopRaw::QueryRawCapabilitiesInfo']/*\"/>\t\n            <msdn-id>ee690248</msdn-id>\t\n            <unmanaged>HRESULT IWICDevelopRaw::QueryRawCapabilitiesInfo([In] WICRawCapabilitiesInfo* pInfo)</unmanaged>\t\n            <unmanaged-short>IWICDevelopRaw::QueryRawCapabilitiesInfo</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.DevelopRaw.LoadParameterSet(SharpDX.WIC.RawParameterSet)\">\n            <summary>\t\n            <p>Sets the desired <strong><see cref=\"T:SharpDX.WIC.RawParameterSet\"/></strong> option.</p>\t\n            </summary>\t\n            <param name=\"parameterSet\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICDevelopRaw::LoadParameterSet']/*\"/>\t\n            <msdn-id>ee690247</msdn-id>\t\n            <unmanaged>HRESULT IWICDevelopRaw::LoadParameterSet([In] WICRawParameterSet ParameterSet)</unmanaged>\t\n            <unmanaged-short>IWICDevelopRaw::LoadParameterSet</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.DevelopRaw.GetCurrentParameterSet(SharpDX.Win32.PropertyBag@)\">\n            <summary>\t\n            <p>Gets the current set of parameters.</p>\t\n            </summary>\t\n            <param name=\"currentParameterSetOut\"><dd>  <p>A reference that receives a reference to the current set of parameters.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICDevelopRaw::GetCurrentParameterSet']/*\"/>\t\n            <msdn-id>ee690233</msdn-id>\t\n            <unmanaged>HRESULT IWICDevelopRaw::GetCurrentParameterSet([Out] IPropertyBag2** ppCurrentParameterSet)</unmanaged>\t\n            <unmanaged-short>IWICDevelopRaw::GetCurrentParameterSet</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.DevelopRaw.SetExposureCompensation(System.Double)\">\n            <summary>\t\n            <p>Sets the exposure compensation stop value.</p>\t\n            </summary>\t\n            <param name=\"ev\"><dd>  <p>The exposure compensation value. The value range for exposure compensation is -5.0 through +5.0, which equates to 10 full stops.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>It is recommended that a codec report that this method is supported even if the results at the outer range limits are not of perfect quality.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICDevelopRaw::SetExposureCompensation']/*\"/>\t\n            <msdn-id>ee690251</msdn-id>\t\n            <unmanaged>HRESULT IWICDevelopRaw::SetExposureCompensation([In] double ev)</unmanaged>\t\n            <unmanaged-short>IWICDevelopRaw::SetExposureCompensation</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.DevelopRaw.GetExposureCompensation(System.Double@)\">\n            <summary>\t\n            <p>Gets the exposure compensation stop value of the raw image.</p>\t\n            </summary>\t\n            <param name=\"eVRef\"><dd>  <p>A reference that receives the exposure compensation stop value. The default is the \"as-shot\" setting.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICDevelopRaw::GetExposureCompensation']/*\"/>\t\n            <msdn-id>ee690234</msdn-id>\t\n            <unmanaged>HRESULT IWICDevelopRaw::GetExposureCompensation([Out] double* pEV)</unmanaged>\t\n            <unmanaged-short>IWICDevelopRaw::GetExposureCompensation</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.DevelopRaw.SetWhitePointRGB(System.Int32,System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Sets the white point RGB values.</p>\t\n            </summary>\t\n            <param name=\"red\"><dd>  <p>The red white point value.</p> </dd></param>\t\n            <param name=\"green\"><dd>  <p>The green white point value.</p> </dd></param>\t\n            <param name=\"blue\"><dd>  <p>The blue white point value.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>Due to other white point setting methods (e.g. <strong>SetWhitePointKelvin</strong>), care must be taken by codec implementers to ensure proper interoperability. For instance, if the caller sets via a named white point then the codec implementer may whis to disable reading back the correspoinding Kelvin temperature. In specific cases where the codec implementer wishes to deny a given action because of previous calls, <strong><see cref=\"F:SharpDX.WIC.ResultCode.WrongState\"/></strong> should be returned.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICDevelopRaw::SetWhitePointRGB']/*\"/>\t\n            <msdn-id>ee690263</msdn-id>\t\n            <unmanaged>HRESULT IWICDevelopRaw::SetWhitePointRGB([In] unsigned int Red,[In] unsigned int Green,[In] unsigned int Blue)</unmanaged>\t\n            <unmanaged-short>IWICDevelopRaw::SetWhitePointRGB</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.DevelopRaw.GetWhitePointRGB(System.Int32@,System.Int32@,System.Int32@)\">\n            <summary>\t\n            <p>Gets the white point RGB values.</p>\t\n            </summary>\t\n            <param name=\"redRef\"><dd>  <p>A reference that receives the red white point value.</p> </dd></param>\t\n            <param name=\"greenRef\"><dd>  <p>A reference that receives the green white point value.</p> </dd></param>\t\n            <param name=\"blueRef\"><dd>  <p>A reference that receives the blue white point value.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICDevelopRaw::GetWhitePointRGB']/*\"/>\t\n            <msdn-id>ee690246</msdn-id>\t\n            <unmanaged>HRESULT IWICDevelopRaw::GetWhitePointRGB([Out] unsigned int* pRed,[Out] unsigned int* pGreen,[Out] unsigned int* pBlue)</unmanaged>\t\n            <unmanaged-short>IWICDevelopRaw::GetWhitePointRGB</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.DevelopRaw.SetNamedWhitePoint(SharpDX.WIC.NamedWhitePoint)\">\n            <summary>\t\n            <p>Sets the named white point of the raw file.</p>\t\n            </summary>\t\n            <param name=\"whitePoint\"><dd>  <p>A bitwise combination of the enumeration values.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>If the named white points are not supported by the raw image or the raw file contains named white points that are not supported by this API, the codec implementer should still mark this capability as supported.</p><p>If the named white points are not supported by the raw image, a best effort should be made to adjust the image to the named white point even when it isn't a pre-defined white point of the raw file.</p><p>If the raw file containes named white points not supported by this API, the codec implementer should support the named white points in the API.</p><p>Due to other white point setting methods (e.g. <strong>SetWhitePointKelvin</strong>), care must be taken by codec implementers to ensure proper interoperability. For instance, if the caller sets via a named white point then the codec implementer may whis to disable reading back the correspoinding Kelvin temperature. In specific cases where the codec implementer wishes to deny a given action because of previous calls, <strong><see cref=\"F:SharpDX.WIC.ResultCode.WrongState\"/></strong> should be returned.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICDevelopRaw::SetNamedWhitePoint']/*\"/>\t\n            <msdn-id>ee690253</msdn-id>\t\n            <unmanaged>HRESULT IWICDevelopRaw::SetNamedWhitePoint([In] WICNamedWhitePoint WhitePoint)</unmanaged>\t\n            <unmanaged-short>IWICDevelopRaw::SetNamedWhitePoint</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.DevelopRaw.GetNamedWhitePoint(SharpDX.WIC.NamedWhitePoint@)\">\n            <summary>\t\n            <p>Gets the named white point of the raw image.</p>\t\n            </summary>\t\n            <param name=\"whitePointRef\"><dd>  <p>A reference that receives the bitwise combination of the enumeration values.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>If the named white points are not supported by the raw image or the raw file contains named white points that are not supported by this API, the codec implementer should still mark this capability as supported.</p><p>If the named white points are not supported by the raw image, a best effort should be made to adjust the image to the named white point even when it isn't a pre-defined white point of the raw file.</p><p>If the raw file containes named white points not supported by this API, the codec implementer should support the named white points in <strong><see cref=\"T:SharpDX.WIC.NamedWhitePoint\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICDevelopRaw::GetNamedWhitePoint']/*\"/>\t\n            <msdn-id>ee690237</msdn-id>\t\n            <unmanaged>HRESULT IWICDevelopRaw::GetNamedWhitePoint([Out] WICNamedWhitePoint* pWhitePoint)</unmanaged>\t\n            <unmanaged-short>IWICDevelopRaw::GetNamedWhitePoint</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.DevelopRaw.SetWhitePointKelvin(System.Int32)\">\n            <summary>\t\n            <p>Sets the white point Kelvin value.</p>\t\n            </summary>\t\n            <param name=\"whitePointKelvin\"><dd>  <p>The white point Kelvin value. Acceptable Kelvin values are 1,500 through 30,000.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>Codec implementers should faithfully adjust the color temperature within the range supported natively by the raw image. For values outside the native support range, the codec implementer should provide a best effort representation of the image at that color temperature.</p><p>Codec implementers should return <strong><see cref=\"F:SharpDX.WIC.ResultCode.Valueoutofrange\"/></strong> if the value is out of defined acceptable range.</p><p>Codec implementers must ensure proper interoperability with other white point setting methods such as <strong>SetWhitePointRGB</strong>. For example, if the caller sets the white point via <strong>SetNamedWhitePoint</strong> then the codec implementer may want to disable reading back the correspoinding Kelvin temperature. In specific cases where the codec implementer wants to deny a given action because of previous calls, <strong><see cref=\"F:SharpDX.WIC.ResultCode.WrongState\"/></strong> should be returned.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICDevelopRaw::SetWhitePointKelvin']/*\"/>\t\n            <msdn-id>ee690262</msdn-id>\t\n            <unmanaged>HRESULT IWICDevelopRaw::SetWhitePointKelvin([In] unsigned int WhitePointKelvin)</unmanaged>\t\n            <unmanaged-short>IWICDevelopRaw::SetWhitePointKelvin</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.DevelopRaw.GetWhitePointKelvin(System.Int32@)\">\n            <summary>\t\n            <p>Gets the white point Kelvin temperature of the raw image.</p>\t\n            </summary>\t\n            <param name=\"whitePointKelvinRef\"><dd>  <p>A reference that receives the white point Kelvin temperature of the raw image. The default is the \"as-shot\" setting value.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICDevelopRaw::GetWhitePointKelvin']/*\"/>\t\n            <msdn-id>ee690245</msdn-id>\t\n            <unmanaged>HRESULT IWICDevelopRaw::GetWhitePointKelvin([Out] unsigned int* pWhitePointKelvin)</unmanaged>\t\n            <unmanaged-short>IWICDevelopRaw::GetWhitePointKelvin</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.DevelopRaw.GetKelvinRangeInfo(System.Int32@,System.Int32@,System.Int32@)\">\n            <summary>\t\n            <p>Gets the information about the current Kelvin range of the raw image.</p>\t\n            </summary>\t\n            <param name=\"minKelvinTempRef\"><dd>  <p>A reference that receives the minimum Kelvin temperature.</p> </dd></param>\t\n            <param name=\"maxKelvinTempRef\"><dd>  <p>A reference that receives the maximum Kelvin temperature. </p> </dd></param>\t\n            <param name=\"kelvinTempStepValueRef\"><dd>  <p>A reference that receives the Kelvin step value.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICDevelopRaw::GetKelvinRangeInfo']/*\"/>\t\n            <msdn-id>ee690236</msdn-id>\t\n            <unmanaged>HRESULT IWICDevelopRaw::GetKelvinRangeInfo([Out] unsigned int* pMinKelvinTemp,[Out] unsigned int* pMaxKelvinTemp,[Out] unsigned int* pKelvinTempStepValue)</unmanaged>\t\n            <unmanaged-short>IWICDevelopRaw::GetKelvinRangeInfo</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.DevelopRaw.SetContrast(System.Double)\">\n            <summary>\t\n            <p>Sets the contrast value of the raw image.</p>\t\n            </summary>\t\n            <param name=\"contrast\"><dd>  <p>The contrast value of the raw image.  The default value is the \"as-shot\" setting. The value range for contrast is 0.0 through 1.0. The 0.0 lower limit represents no contrast applied to the image, while the 1.0 upper limit represents the highest amount of contrast that can be applied.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>The codec implementer must determine what the upper range value represents and must determine how to map the value to their image processing routines.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICDevelopRaw::SetContrast']/*\"/>\t\n            <msdn-id>ee690249</msdn-id>\t\n            <unmanaged>HRESULT IWICDevelopRaw::SetContrast([In] double Contrast)</unmanaged>\t\n            <unmanaged-short>IWICDevelopRaw::SetContrast</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.DevelopRaw.GetContrast(System.Double@)\">\n            <summary>\t\n            <p>Gets the contrast value of the raw image.</p>\t\n            </summary>\t\n            <param name=\"contrastRef\"><dd>  <p>A reference that receives the contrast value of the raw image. The default value is the \"as-shot\" setting. The value range for contrast is 0.0 through 1.0. The 0.0 lower limit represents no contrast applied to the image, while the 1.0 upper limit represents the highest amount of contrast that can be applied.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICDevelopRaw::GetContrast']/*\"/>\t\n            <msdn-id>ee690232</msdn-id>\t\n            <unmanaged>HRESULT IWICDevelopRaw::GetContrast([Out] double* pContrast)</unmanaged>\t\n            <unmanaged-short>IWICDevelopRaw::GetContrast</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.DevelopRaw.SetGamma(System.Double)\">\n            <summary>\t\n            <p>Sets the desired gamma value.</p>\t\n            </summary>\t\n            <param name=\"gamma\"><dd>  <p>The desired gamma value.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICDevelopRaw::SetGamma']/*\"/>\t\n            <msdn-id>ee690252</msdn-id>\t\n            <unmanaged>HRESULT IWICDevelopRaw::SetGamma([In] double Gamma)</unmanaged>\t\n            <unmanaged-short>IWICDevelopRaw::SetGamma</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.DevelopRaw.GetGamma(System.Double@)\">\n            <summary>\t\n            <p>Gets the current gamma setting of the raw image.</p>\t\n            </summary>\t\n            <param name=\"gammaRef\"><dd>  <p>A reference that receives the current gamma setting.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICDevelopRaw::GetGamma']/*\"/>\t\n            <msdn-id>ee690235</msdn-id>\t\n            <unmanaged>HRESULT IWICDevelopRaw::GetGamma([Out] double* pGamma)</unmanaged>\t\n            <unmanaged-short>IWICDevelopRaw::GetGamma</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.DevelopRaw.SetSharpness(System.Double)\">\n            <summary>\t\n            <p>Sets the sharpness value of the raw image.</p>\t\n            </summary>\t\n            <param name=\"sharpness\"><dd>  <p>The sharpness value of the raw image. The default value is the \"as-shot\" setting. The value range for sharpness is 0.0 through 1.0. The 0.0 lower limit represents no sharpening applied to the image, while the 1.0 upper limit represents the highest amount of sharpness that can be applied.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>The codec implementer must determine what the upper range value represents and must determine how to map the value to their image processing routines.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICDevelopRaw::SetSharpness']/*\"/>\t\n            <msdn-id>ee690259</msdn-id>\t\n            <unmanaged>HRESULT IWICDevelopRaw::SetSharpness([In] double Sharpness)</unmanaged>\t\n            <unmanaged-short>IWICDevelopRaw::SetSharpness</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.DevelopRaw.GetSharpness(System.Double@)\">\n            <summary>\t\n            <p>Gets the sharpness value of the raw image.</p>\t\n            </summary>\t\n            <param name=\"sharpnessRef\"><dd>  <p>A reference that receives the sharpness value of the raw image. The default value is the \"as-shot\" setting. The value range for sharpness is 0.0 through 1.0. The 0.0 lower limit represents no sharpening applied to the image, while the 1.0 upper limit represents the highest amount of sharpness that can be applied.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICDevelopRaw::GetSharpness']/*\"/>\t\n            <msdn-id>ee690242</msdn-id>\t\n            <unmanaged>HRESULT IWICDevelopRaw::GetSharpness([Out] double* pSharpness)</unmanaged>\t\n            <unmanaged-short>IWICDevelopRaw::GetSharpness</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.DevelopRaw.SetSaturation(System.Double)\">\n            <summary>\t\n            <p>Sets the saturation value of the raw image.</p>\t\n            </summary>\t\n            <param name=\"saturation\"><dd>  <p>The saturation value of the raw image. The value range for saturation is 0.0 through 1.0. A value of 0.0 represents an image with a fully de-saturated image, while a value of 1.0 represents the highest amount of saturation that can be applied.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>The codec implementer must determine what the upper range value represents and must determine how to map the value to their image processing routines.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICDevelopRaw::SetSaturation']/*\"/>\t\n            <msdn-id>ee690258</msdn-id>\t\n            <unmanaged>HRESULT IWICDevelopRaw::SetSaturation([In] double Saturation)</unmanaged>\t\n            <unmanaged-short>IWICDevelopRaw::SetSaturation</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.DevelopRaw.GetSaturation(System.Double@)\">\n            <summary>\t\n            <p>Gets the saturation value of the raw image.</p>\t\n            </summary>\t\n            <param name=\"saturationRef\"><dd>  <p>A reference that receives the saturation value of the raw image. The default value is the \"as-shot\" setting. The value range for saturation is 0.0 through 1.0. A value of 0.0 represents an image with a fully de-saturated image, while a value of 1.0 represents the highest amount of saturation that can be applied.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICDevelopRaw::GetSaturation']/*\"/>\t\n            <msdn-id>ee690241</msdn-id>\t\n            <unmanaged>HRESULT IWICDevelopRaw::GetSaturation([Out] double* pSaturation)</unmanaged>\t\n            <unmanaged-short>IWICDevelopRaw::GetSaturation</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.DevelopRaw.SetTint(System.Double)\">\n            <summary>\t\n            <p>Sets the tint value of the raw image.</p>\t\n            </summary>\t\n            <param name=\"tint\"><dd>  <p>The tint value of the raw image. The default value is the \"as-shot\" setting if it exists or 0.0. The value range for sharpness is -1.0 through +1.0. The -1.0 lower limit represents a full green bias to the image, while the 1.0 upper limit represents a full magenta bias.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>The codec implementer must determine what the outer range values represent and must determine how to map the values to their image processing routines.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICDevelopRaw::SetTint']/*\"/>\t\n            <msdn-id>ee690260</msdn-id>\t\n            <unmanaged>HRESULT IWICDevelopRaw::SetTint([In] double Tint)</unmanaged>\t\n            <unmanaged-short>IWICDevelopRaw::SetTint</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.DevelopRaw.GetTint(System.Double@)\">\n            <summary>\t\n            <p>Gets the tint value of the raw image.</p>\t\n            </summary>\t\n            <param name=\"tintRef\"><dd>  <p>A reference that receives the tint value of the raw image. The default value is the \"as-shot\" setting if it exists or 0.0. The value range for sharpness is -1.0 through +1.0. The -1.0 lower limit represents a full green bias to the image, while the 1.0 upper limit represents a full magenta bias.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICDevelopRaw::GetTint']/*\"/>\t\n            <msdn-id>ee690243</msdn-id>\t\n            <unmanaged>HRESULT IWICDevelopRaw::GetTint([Out] double* pTint)</unmanaged>\t\n            <unmanaged-short>IWICDevelopRaw::GetTint</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.DevelopRaw.SetNoiseReduction(System.Double)\">\n            <summary>\t\n            <p>Sets the noise reduction value of the raw image.</p>\t\n            </summary>\t\n            <param name=\"noiseReduction\"><dd>  <p>The noise reduction value of the raw image.  The default value is the \"as-shot\" setting if it exists or 0.0. The value range for noise reduction is 0.0 through 1.0. The 0.0 lower limit represents no noise reduction applied to the image, while the 1.0 upper limit represents highest noise reduction amount that can be applied.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>The codec implementer must determine what the upper range value represents and must determine how to map the value to their image processing routines.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICDevelopRaw::SetNoiseReduction']/*\"/>\t\n            <msdn-id>ee690254</msdn-id>\t\n            <unmanaged>HRESULT IWICDevelopRaw::SetNoiseReduction([In] double NoiseReduction)</unmanaged>\t\n            <unmanaged-short>IWICDevelopRaw::SetNoiseReduction</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.DevelopRaw.GetNoiseReduction(System.Double@)\">\n            <summary>\t\n            <p>Gets the noise reduction value of the raw image.</p>\t\n            </summary>\t\n            <param name=\"noiseReductionRef\"><dd>  <p>A reference that receives the noise reduction value of the raw image.  The default value is the \"as-shot\" setting if it exists or 0.0. The value range for noise reduction is 0.0 through 1.0. The 0.0 lower limit represents no noise reduction applied to the image, while the 1.0 upper limit represents full highest noise reduction amount that can be applied.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICDevelopRaw::GetNoiseReduction']/*\"/>\t\n            <msdn-id>ee690238</msdn-id>\t\n            <unmanaged>HRESULT IWICDevelopRaw::GetNoiseReduction([Out] double* pNoiseReduction)</unmanaged>\t\n            <unmanaged-short>IWICDevelopRaw::GetNoiseReduction</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.DevelopRaw.SetDestinationColorContext(SharpDX.WIC.ColorContext)\">\n            <summary>\t\n            <p>Sets the destination color context.</p>\t\n            </summary>\t\n            <param name=\"colorContextRef\"><dd>  <p>The destination color context.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICDevelopRaw::SetDestinationColorContext']/*\"/>\t\n            <msdn-id>ee690250</msdn-id>\t\n            <unmanaged>HRESULT IWICDevelopRaw::SetDestinationColorContext([In, Optional] IWICColorContext* pColorContext)</unmanaged>\t\n            <unmanaged-short>IWICDevelopRaw::SetDestinationColorContext</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.DevelopRaw.SetToneCurve(System.Int32,SharpDX.WIC.RawToneCurve[])\">\n            <summary>\t\n            <p>Sets the tone curve for the raw image.</p>\t\n            </summary>\t\n            <param name=\"toneCurveSize\"><dd>  <p>The size of the <em>pToneCurve</em> structure.</p> </dd></param>\t\n            <param name=\"toneCurveRef\"><dd>  <p>The desired tone curve.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICDevelopRaw::SetToneCurve']/*\"/>\t\n            <msdn-id>ee690261</msdn-id>\t\n            <unmanaged>HRESULT IWICDevelopRaw::SetToneCurve([In] unsigned int cbToneCurveSize,[In, Buffer] const WICRawToneCurve* pToneCurve)</unmanaged>\t\n            <unmanaged-short>IWICDevelopRaw::SetToneCurve</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.DevelopRaw.GetToneCurve(System.Int32,SharpDX.WIC.RawToneCurve[],System.IntPtr)\">\n            <summary>\t\n            <p>Gets the tone curve of the raw image.</p>\t\n            </summary>\t\n            <param name=\"toneCurveBufferSize\"><dd>  <p>The size of the <em>pToneCurve</em> buffer.</p> </dd></param>\t\n            <param name=\"toneCurveRef\"><dd>  <p>A reference that receives the <strong><see cref=\"T:SharpDX.WIC.RawToneCurve\"/></strong> of the raw image.</p> </dd></param>\t\n            <param name=\"actualToneCurveBufferSizeRef\"><dd>  <p>A reference that receives the size needed to obtain the tone curve structure.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICDevelopRaw::GetToneCurve']/*\"/>\t\n            <msdn-id>ee690244</msdn-id>\t\n            <unmanaged>HRESULT IWICDevelopRaw::GetToneCurve([In] unsigned int cbToneCurveBufferSize,[Out, Buffer, Optional] WICRawToneCurve* pToneCurve,[InOut, Optional] unsigned int* pcbActualToneCurveBufferSize)</unmanaged>\t\n            <unmanaged-short>IWICDevelopRaw::GetToneCurve</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.DevelopRaw.SetRotation(System.Double)\">\n            <summary>\t\n            <p>Sets the desired rotation angle.</p>\t\n            </summary>\t\n            <param name=\"rotation\"><dd>  <p>The desired rotation angle.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICDevelopRaw::SetRotation']/*\"/>\t\n            <msdn-id>ee690257</msdn-id>\t\n            <unmanaged>HRESULT IWICDevelopRaw::SetRotation([In] double Rotation)</unmanaged>\t\n            <unmanaged-short>IWICDevelopRaw::SetRotation</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.DevelopRaw.GetRotation(System.Double@)\">\n            <summary>\t\n            <p>Gets the current rotation angle.</p>\t\n            </summary>\t\n            <param name=\"rotationRef\"><dd>  <p>A reference that receives the current rotation angle.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICDevelopRaw::GetRotation']/*\"/>\t\n            <msdn-id>ee690240</msdn-id>\t\n            <unmanaged>HRESULT IWICDevelopRaw::GetRotation([Out] double* pRotation)</unmanaged>\t\n            <unmanaged-short>IWICDevelopRaw::GetRotation</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.DevelopRaw.SetRenderMode(SharpDX.WIC.RawRenderMode)\">\n            <summary>\t\n            <p>Sets the current <strong><see cref=\"T:SharpDX.WIC.RawRenderMode\"/></strong>.</p>\t\n            </summary>\t\n            <param name=\"renderMode\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICDevelopRaw::SetRenderMode']/*\"/>\t\n            <msdn-id>ee690256</msdn-id>\t\n            <unmanaged>HRESULT IWICDevelopRaw::SetRenderMode([In] WICRawRenderMode RenderMode)</unmanaged>\t\n            <unmanaged-short>IWICDevelopRaw::SetRenderMode</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.DevelopRaw.GetRenderMode(SharpDX.WIC.RawRenderMode@)\">\n            <summary>\t\n            <p>Gets the current <strong><see cref=\"T:SharpDX.WIC.RawRenderMode\"/></strong>.</p>\t\n            </summary>\t\n            <param name=\"renderModeRef\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICDevelopRaw::GetRenderMode']/*\"/>\t\n            <msdn-id>ee690239</msdn-id>\t\n            <unmanaged>HRESULT IWICDevelopRaw::GetRenderMode([Out] WICRawRenderMode* pRenderMode)</unmanaged>\t\n            <unmanaged-short>IWICDevelopRaw::GetRenderMode</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.DevelopRaw.SetNotificationCallback(SharpDX.WIC.DevelopRawNotificationCallback)\">\n            <summary>\t\n            <p>Sets the notification callback method.</p>\t\n            </summary>\t\n            <param name=\"callbackRef\"><dd>  <p>Pointer to the notification callback method.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICDevelopRaw::SetNotificationCallback']/*\"/>\t\n            <msdn-id>ee690255</msdn-id>\t\n            <unmanaged>HRESULT IWICDevelopRaw::SetNotificationCallback([In, Optional] IWICDevelopRawNotificationCallback* pCallback)</unmanaged>\t\n            <unmanaged-short>IWICDevelopRaw::SetNotificationCallback</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.WIC.DevelopRaw.CurrentParameterSet\">\n            <summary>\t\n            <p>Gets the current set of parameters.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICDevelopRaw::GetCurrentParameterSet']/*\"/>\t\n            <msdn-id>ee690233</msdn-id>\t\n            <unmanaged>GetCurrentParameterSet</unmanaged>\t\n            <unmanaged-short>GetCurrentParameterSet</unmanaged-short>\t\n            <unmanaged>HRESULT IWICDevelopRaw::GetCurrentParameterSet([Out] IPropertyBag2** ppCurrentParameterSet)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.WIC.DevelopRaw.ExposureCompensation\">\n            <summary>\t\n            <p>Gets or sets the exposure compensation stop value of the raw image.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICDevelopRaw::GetExposureCompensation']/*\"/>\t\n            <msdn-id>ee690234</msdn-id>\t\n            <unmanaged>GetExposureCompensation / SetExposureCompensation</unmanaged>\t\n            <unmanaged-short>GetExposureCompensation</unmanaged-short>\t\n            <unmanaged>HRESULT IWICDevelopRaw::GetExposureCompensation([Out] double* pEV)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.WIC.DevelopRaw.NamedWhitePoint\">\n            <summary>\t\n            <p>Gets or sets the named white point of the raw image.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>If the named white points are not supported by the raw image or the raw file contains named white points that are not supported by this API, the codec implementer should still mark this capability as supported.</p><p>If the named white points are not supported by the raw image, a best effort should be made to adjust the image to the named white point even when it isn't a pre-defined white point of the raw file.</p><p>If the raw file containes named white points not supported by this API, the codec implementer should support the named white points in <strong><see cref=\"T:SharpDX.WIC.NamedWhitePoint\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICDevelopRaw::GetNamedWhitePoint']/*\"/>\t\n            <msdn-id>ee690237</msdn-id>\t\n            <unmanaged>GetNamedWhitePoint / SetNamedWhitePoint</unmanaged>\t\n            <unmanaged-short>GetNamedWhitePoint</unmanaged-short>\t\n            <unmanaged>HRESULT IWICDevelopRaw::GetNamedWhitePoint([Out] WICNamedWhitePoint* pWhitePoint)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.WIC.DevelopRaw.WhitePointKelvin\">\n            <summary>\t\n            <p>Gets or sets the white point Kelvin temperature of the raw image.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICDevelopRaw::GetWhitePointKelvin']/*\"/>\t\n            <msdn-id>ee690245</msdn-id>\t\n            <unmanaged>GetWhitePointKelvin / SetWhitePointKelvin</unmanaged>\t\n            <unmanaged-short>GetWhitePointKelvin</unmanaged-short>\t\n            <unmanaged>HRESULT IWICDevelopRaw::GetWhitePointKelvin([Out] unsigned int* pWhitePointKelvin)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.WIC.DevelopRaw.Contrast\">\n            <summary>\t\n            <p>Gets or sets the contrast value of the raw image.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICDevelopRaw::GetContrast']/*\"/>\t\n            <msdn-id>ee690232</msdn-id>\t\n            <unmanaged>GetContrast / SetContrast</unmanaged>\t\n            <unmanaged-short>GetContrast</unmanaged-short>\t\n            <unmanaged>HRESULT IWICDevelopRaw::GetContrast([Out] double* pContrast)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.WIC.DevelopRaw.Gamma\">\n            <summary>\t\n            <p>Gets or sets the current gamma setting of the raw image.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICDevelopRaw::GetGamma']/*\"/>\t\n            <msdn-id>ee690235</msdn-id>\t\n            <unmanaged>GetGamma / SetGamma</unmanaged>\t\n            <unmanaged-short>GetGamma</unmanaged-short>\t\n            <unmanaged>HRESULT IWICDevelopRaw::GetGamma([Out] double* pGamma)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.WIC.DevelopRaw.Sharpness\">\n            <summary>\t\n            <p>Gets or sets the sharpness value of the raw image.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICDevelopRaw::GetSharpness']/*\"/>\t\n            <msdn-id>ee690242</msdn-id>\t\n            <unmanaged>GetSharpness / SetSharpness</unmanaged>\t\n            <unmanaged-short>GetSharpness</unmanaged-short>\t\n            <unmanaged>HRESULT IWICDevelopRaw::GetSharpness([Out] double* pSharpness)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.WIC.DevelopRaw.Saturation\">\n            <summary>\t\n            <p>Gets or sets the saturation value of the raw image.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICDevelopRaw::GetSaturation']/*\"/>\t\n            <msdn-id>ee690241</msdn-id>\t\n            <unmanaged>GetSaturation / SetSaturation</unmanaged>\t\n            <unmanaged-short>GetSaturation</unmanaged-short>\t\n            <unmanaged>HRESULT IWICDevelopRaw::GetSaturation([Out] double* pSaturation)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.WIC.DevelopRaw.Tint\">\n            <summary>\t\n            <p>Gets or sets the tint value of the raw image.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICDevelopRaw::GetTint']/*\"/>\t\n            <msdn-id>ee690243</msdn-id>\t\n            <unmanaged>GetTint / SetTint</unmanaged>\t\n            <unmanaged-short>GetTint</unmanaged-short>\t\n            <unmanaged>HRESULT IWICDevelopRaw::GetTint([Out] double* pTint)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.WIC.DevelopRaw.NoiseReduction\">\n            <summary>\t\n            <p>Gets or sets the noise reduction value of the raw image.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICDevelopRaw::GetNoiseReduction']/*\"/>\t\n            <msdn-id>ee690238</msdn-id>\t\n            <unmanaged>GetNoiseReduction / SetNoiseReduction</unmanaged>\t\n            <unmanaged-short>GetNoiseReduction</unmanaged-short>\t\n            <unmanaged>HRESULT IWICDevelopRaw::GetNoiseReduction([Out] double* pNoiseReduction)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.WIC.DevelopRaw.DestinationColorContext\">\n            <summary>\t\n            <p>Sets the destination color context.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICDevelopRaw::SetDestinationColorContext']/*\"/>\t\n            <msdn-id>ee690250</msdn-id>\t\n            <unmanaged>SetDestinationColorContext</unmanaged>\t\n            <unmanaged-short>SetDestinationColorContext</unmanaged-short>\t\n            <unmanaged>HRESULT IWICDevelopRaw::SetDestinationColorContext([In, Optional] IWICColorContext* pColorContext)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.WIC.DevelopRaw.Rotation\">\n            <summary>\t\n            <p>Gets or sets the current rotation angle.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICDevelopRaw::GetRotation']/*\"/>\t\n            <msdn-id>ee690240</msdn-id>\t\n            <unmanaged>GetRotation / SetRotation</unmanaged>\t\n            <unmanaged-short>GetRotation</unmanaged-short>\t\n            <unmanaged>HRESULT IWICDevelopRaw::GetRotation([Out] double* pRotation)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.WIC.DevelopRaw.RenderMode\">\n            <summary>\t\n            <p>Gets or sets the current <strong><see cref=\"T:SharpDX.WIC.RawRenderMode\"/></strong>.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICDevelopRaw::GetRenderMode']/*\"/>\t\n            <msdn-id>ee690239</msdn-id>\t\n            <unmanaged>GetRenderMode / SetRenderMode</unmanaged>\t\n            <unmanaged-short>GetRenderMode</unmanaged-short>\t\n            <unmanaged>HRESULT IWICDevelopRaw::GetRenderMode([Out] WICRawRenderMode* pRenderMode)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.WIC.DevelopRaw.NotificationCallback\">\n            <summary>\t\n            <p>Sets the notification callback method.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICDevelopRaw::SetNotificationCallback']/*\"/>\t\n            <msdn-id>ee690255</msdn-id>\t\n            <unmanaged>SetNotificationCallback</unmanaged>\t\n            <unmanaged-short>SetNotificationCallback</unmanaged-short>\t\n            <unmanaged>HRESULT IWICDevelopRaw::SetNotificationCallback([In, Optional] IWICDevelopRawNotificationCallback* pCallback)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.WIC.DevelopRawNotificationCallback\">\n            <summary>\t\n            <p>Flags used to by <strong><see cref=\"T:SharpDX.WIC.DevelopRawNotificationCallback\"/></strong> to indicate which members have changed.</p><p></p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICDevelopRawNotificationCallback']/*\"/>\t\n            <msdn-id>ee690231</msdn-id>\t\n            <unmanaged>IWICDevelopRawNotificationCallback</unmanaged>\t\n            <unmanaged-short>IWICDevelopRawNotificationCallback</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.DevelopRawNotificationCallback.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.DevelopRawNotificationCallback\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.DevelopRawNotificationCallback.op_Explicit(System.IntPtr)~SharpDX.WIC.DevelopRawNotificationCallback\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.WIC.DevelopRawNotificationCallback\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.WIC.DevelopRawNotificationCallback.Notify(System.Int32)\">\n            <summary>\t\n            <p>An application-defined callback method used for raw image parameter change notifications.</p>\t\n            </summary>\t\n            <param name=\"notificationMask\"><dd>  <p>A set of <strong><see cref=\"T:SharpDX.WIC.DevelopRawNotificationCallback\"/> Constants</strong> parameter notification flags.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICDevelopRawNotificationCallback::Notify']/*\"/>\t\n            <msdn-id>ee690230</msdn-id>\t\n            <unmanaged>HRESULT IWICDevelopRawNotificationCallback::Notify([In] unsigned int NotificationMask)</unmanaged>\t\n            <unmanaged-short>IWICDevelopRawNotificationCallback::Notify</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.WIC.EnumMetadataItem\">\n            <summary>\t\n            <p>Exposes methods that provide enumeration services for individual metadata items.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICEnumMetadataItem']/*\"/>\t\n            <msdn-id>ee690264</msdn-id>\t\n            <unmanaged>IWICEnumMetadataItem</unmanaged>\t\n            <unmanaged-short>IWICEnumMetadataItem</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.EnumMetadataItem.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.EnumMetadataItem\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.EnumMetadataItem.op_Explicit(System.IntPtr)~SharpDX.WIC.EnumMetadataItem\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.WIC.EnumMetadataItem\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.WIC.EnumMetadataItem.Skip(System.Int32)\">\n            <summary>\t\n            <p>Skips to given number of objects.</p>\t\n            </summary>\t\n            <param name=\"celt\"><dd>  <p>The number of objects to skip.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICEnumMetadataItem::Skip']/*\"/>\t\n            <msdn-id>ee690268</msdn-id>\t\n            <unmanaged>HRESULT IWICEnumMetadataItem::Skip([In] unsigned int celt)</unmanaged>\t\n            <unmanaged-short>IWICEnumMetadataItem::Skip</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.EnumMetadataItem.Reset\">\n            <summary>\t\n            <p>Resets the current position to the beginning of the enumeration.</p>\t\n            </summary>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICEnumMetadataItem::Reset']/*\"/>\t\n            <msdn-id>ee690267</msdn-id>\t\n            <unmanaged>HRESULT IWICEnumMetadataItem::Reset()</unmanaged>\t\n            <unmanaged-short>IWICEnumMetadataItem::Reset</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.EnumMetadataItem.Clone(SharpDX.WIC.EnumMetadataItem@)\">\n            <summary>\t\n            <p>Creates a copy of the current <strong><see cref=\"T:SharpDX.WIC.EnumMetadataItem\"/></strong>.</p>\t\n            </summary>\t\n            <param name=\"enumMetadataItemOut\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICEnumMetadataItem::Clone']/*\"/>\t\n            <msdn-id>ee690265</msdn-id>\t\n            <unmanaged>HRESULT IWICEnumMetadataItem::Clone([Out] IWICEnumMetadataItem** ppIEnumMetadataItem)</unmanaged>\t\n            <unmanaged-short>IWICEnumMetadataItem::Clone</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.WIC.FastMetadataEncoder\">\n            <summary>\t\n            <p>Exposes methods used for in-place metadata editing. A fast metadata encoder enables you to add and remove metadata to an image without having to fully re-encode the image.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p> A decoder must be created using the <strong><see cref=\"T:SharpDX.WIC.DecodeOptions\"/></strong> value <strong><see cref=\"F:SharpDX.WIC.DecodeOptions.CacheOnDemand\"/></strong> to perform in-place metadata updates.  Using the <strong><see cref=\"F:SharpDX.WIC.DecodeOptions.CacheOnLoad\"/></strong> option causes the decoder to release the file stream necessary to perform the metadata updates.  </p><p> Not all metadata formats support fast metadata encoding. The native metadata handlers that support metadata are IFD, Exif, XMP, and GPS. </p><p> If a fast metadata encoder fails, the image will need to be fully re-encoded to add the metadata. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICFastMetadataEncoder']/*\"/>\t\n            <msdn-id>ee690269</msdn-id>\t\n            <unmanaged>IWICFastMetadataEncoder</unmanaged>\t\n            <unmanaged-short>IWICFastMetadataEncoder</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.FastMetadataEncoder.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.FastMetadataEncoder\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.FastMetadataEncoder.op_Explicit(System.IntPtr)~SharpDX.WIC.FastMetadataEncoder\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.WIC.FastMetadataEncoder\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.WIC.FastMetadataEncoder.Commit\">\n            <summary>\t\n            <p>Finalizes metadata changes to the image stream.</p>\t\n            </summary>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>If the commit fails and returns <strong><see cref=\"F:SharpDX.WIC.ResultCode.StreamNotAvailable\"/></strong>, ensure that the image decoder was loaded using the <strong><see cref=\"F:SharpDX.WIC.DecodeOptions.CacheOnDemand\"/></strong> option. A fast metadata encoder is not supported when the decoder is created using the <strong><see cref=\"F:SharpDX.WIC.DecodeOptions.CacheOnLoad\"/></strong> option. </p><p>If the commit fails for any reason, you will need to re-encode the image to ensure the new metadata is added to the image.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICFastMetadataEncoder::Commit']/*\"/>\t\n            <msdn-id>ee690270</msdn-id>\t\n            <unmanaged>HRESULT IWICFastMetadataEncoder::Commit()</unmanaged>\t\n            <unmanaged-short>IWICFastMetadataEncoder::Commit</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.FastMetadataEncoder.GetMetadataQueryWriter(SharpDX.WIC.MetadataQueryWriter@)\">\n            <summary>\t\n            <p>Retrieves a metadata query writer for fast metadata encoding.</p>\t\n            </summary>\t\n            <param name=\"metadataQueryWriterOut\"><dd>  <p>When this method returns, contains a reference to the fast metadata encoder's metadata query writer.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICFastMetadataEncoder::GetMetadataQueryWriter']/*\"/>\t\n            <msdn-id>ee690272</msdn-id>\t\n            <unmanaged>HRESULT IWICFastMetadataEncoder::GetMetadataQueryWriter([Out] IWICMetadataQueryWriter** ppIMetadataQueryWriter)</unmanaged>\t\n            <unmanaged-short>IWICFastMetadataEncoder::GetMetadataQueryWriter</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.FastMetadataEncoder.#ctor(SharpDX.WIC.ImagingFactory,SharpDX.WIC.BitmapDecoder)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.FastMetadataEncoder\"/> class from a <see cref=\"T:SharpDX.WIC.BitmapDecoder\"/>\n            </summary>\n            <param name=\"factory\">The factory.</param>\n            <param name=\"decoder\">The decoder.</param>\n        </member>\n        <member name=\"M:SharpDX.WIC.FastMetadataEncoder.#ctor(SharpDX.WIC.ImagingFactory,SharpDX.WIC.BitmapFrameDecode)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.FastMetadataEncoder\"/> class from a <see cref=\"T:SharpDX.WIC.BitmapFrameDecode\"/>\n            </summary>\n            <param name=\"factory\">The factory.</param>\n            <param name=\"frameDecoder\">The frame decoder.</param>\n        </member>\n        <member name=\"P:SharpDX.WIC.FastMetadataEncoder.MetadataQueryWriter\">\n            <summary>\t\n            <p>Retrieves a metadata query writer for fast metadata encoding.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICFastMetadataEncoder::GetMetadataQueryWriter']/*\"/>\t\n            <msdn-id>ee690272</msdn-id>\t\n            <unmanaged>GetMetadataQueryWriter</unmanaged>\t\n            <unmanaged-short>GetMetadataQueryWriter</unmanaged-short>\t\n            <unmanaged>HRESULT IWICFastMetadataEncoder::GetMetadataQueryWriter([Out] IWICMetadataQueryWriter** ppIMetadataQueryWriter)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.WIC.FormatConverter\">\n            <summary>\t\n            <p> Represents an <strong><see cref=\"T:SharpDX.WIC.BitmapSource\"/></strong> that provides converts the image data from one pixel format to another, handling dithering and halftoning to indexed formats, palette translation and alpha thresholding. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICFormatConverter']/*\"/>\t\n            <msdn-id>ee690274</msdn-id>\t\n            <unmanaged>IWICFormatConverter</unmanaged>\t\n            <unmanaged-short>IWICFormatConverter</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.FormatConverter.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.FormatConverter\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.FormatConverter.op_Explicit(System.IntPtr)~SharpDX.WIC.FormatConverter\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.WIC.FormatConverter\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.WIC.FormatConverter.Initialize(SharpDX.WIC.BitmapSource,System.Guid,SharpDX.WIC.BitmapDitherType,SharpDX.WIC.Palette,System.Double,SharpDX.WIC.BitmapPaletteType)\">\n            <summary>\t\n            <p>Initializes the format converter.</p>\t\n            </summary>\t\n            <param name=\"sourceRef\"><dd>  <p>The input bitmap to convert</p> </dd></param>\t\n            <param name=\"dstFormat\"><dd>  <p>The destination pixel format <see cref=\"T:System.Guid\"/>.</p> </dd></param>\t\n            <param name=\"dither\"><dd>  <p>The <strong><see cref=\"T:SharpDX.WIC.BitmapDitherType\"/></strong> used for conversion.</p> </dd></param>\t\n            <param name=\"paletteRef\"><dd>  <p>The palette to use for conversion.</p> </dd></param>\t\n            <param name=\"alphaThresholdPercent\"><dd>  <p>The alpha threshold to use for conversion.</p> </dd></param>\t\n            <param name=\"paletteTranslate\"><dd>  <p>The palette translation type to use for conversion.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p> If you do not have a predefined palette, you must first create one. Use <strong>InitializeFromBitmap</strong> to create the palette object, then pass it in along with your other parameters. </p><p><em>dither</em>, <em>pIPalette</em>, <em>alphaThresholdPercent</em>, and <em>paletteTranslate</em> are used to mitigate color loss when converting to a reduced bit-depth format. For conversions that do not need these settings, the following parameters values should be used: <em>dither</em> set to <strong><see cref=\"F:SharpDX.WIC.BitmapDitherType.None\"/></strong>, <em>pIPalette</em> set to <strong><c>null</c></strong>, <em>alphaThresholdPercent</em> set to <strong>0.0f</strong>, and <em>paletteTranslate</em> set to <strong><see cref=\"F:SharpDX.WIC.BitmapPaletteType.Custom\"/></strong>.   </p><p> The basic algorithm involved when using an ordered dither requires a fixed palette, found in the <strong><see cref=\"T:SharpDX.WIC.BitmapPaletteType\"/></strong> enumeration, in a specific order. Often, the actual palette provided for the output may have a different ordering or some slight variation in the actual colors.  This is the case when using the Microsoft?Windows palette which has slight differences among versions of Windows. To provide for this, a palette and a palette translation are given to the format converter.  The <em>pIPalette</em> is the actual destination palette to be used and the <em>paletteTranslate</em> is a fixed palette.  Once the conversion is complete, the colors are mapped from the fixed palette to the actual colors in <em>pIPalette</em> using a nearest color matching algorithm.  </p><p> If colors in <em>pIPalette</em> do not closely match those in <em>paletteTranslate</em>, the mapping may produce undesireable results. </p><p><strong><see cref=\"F:SharpDX.WIC.BitmapDitherType.Ordered4x4\"/></strong> can be useful in format conversions from 8-bit formats to 5- or 6-bit formats as there is no way to accurately convert color data. </p><p><strong><see cref=\"F:SharpDX.WIC.BitmapDitherType.ErrorDiffusion\"/></strong> selects the error diffusion algorithm and may be used with any palette.  If an arbitrary palette is provided, <strong>WICBitmapPaletteCustom</strong> should be passed in as the <em>paletteTranslate</em>.  Error diffusion often provides superior results compared to the ordered dithering algorithms especially when combined with the optimized palette generation functionality on the <strong><see cref=\"T:SharpDX.WIC.Palette\"/></strong>. </p><p> When converting a bitmap which has an alpha channel, such as a Portable Network Graphics (PNG), to 8bpp, the alpha channel is normally ignored.  Any pixels which were transparent in the original bitmap show up as black in the final output because both transparent and black have pixel values of zero in the respective formats.  </p><p> Some 8bpp content can contains an alpha color; for instance, the Graphics Interchange Format (GIF) format allows for a single palette entry to be used as a transparent color. For this type of content, <em>alphaThresholdPercent</em> specifies what percentage of transparency should map to the transparent color. Because the alpha value is directly proportional to the opacity (not transparency) of a pixel, the <em>alphaThresholdPercent</em> indicates what level of opacity is mapped to the fully transparent color.  For instance, 9.8% implies that any pixel with an alpha value of less than 25 will be mapped to the transparent color.  A value of 100% maps all pixels which are not fully opaque to the transparent color. Note that the palette should provide a transparent color. If it does not, the 'transparent' color will be the one closest to zero - often black. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICFormatConverter::Initialize']/*\"/>\t\n            <msdn-id>ee690279</msdn-id>\t\n            <unmanaged>HRESULT IWICFormatConverter::Initialize([In, Optional] IWICBitmapSource* pISource,[In] const GUID&amp; dstFormat,[In] WICBitmapDitherType dither,[In, Optional] IWICPalette* pIPalette,[In] double alphaThresholdPercent,[In] WICBitmapPaletteType paletteTranslate)</unmanaged>\t\n            <unmanaged-short>IWICFormatConverter::Initialize</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.FormatConverter.CanConvert(System.Guid,System.Guid)\">\n            <summary>\t\n            <p>Determines if the source pixel format can be converted to the destination pixel format.</p>\t\n            </summary>\t\n            <param name=\"srcPixelFormat\"><dd>  <p>The source pixel format.</p> </dd></param>\t\n            <param name=\"dstPixelFormat\"><dd>  <p>The destionation pixel format.</p> </dd></param>\t\n            <returns><dd>  <p>A reference that receives a value indicating whether the source pixel format can be converted to the destination pixel format.</p> </dd></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICFormatConverter::CanConvert']/*\"/>\t\n            <msdn-id>ee690278</msdn-id>\t\n            <unmanaged>HRESULT IWICFormatConverter::CanConvert([In] const GUID&amp; srcPixelFormat,[In] const GUID&amp; dstPixelFormat,[Out] BOOL* pfCanConvert)</unmanaged>\t\n            <unmanaged-short>IWICFormatConverter::CanConvert</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.FormatConverter.#ctor(SharpDX.WIC.FormatConverterInfo)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.FormatConverter\"/> class.\n            </summary>\n            <param name=\"converterInfo\">The converter info.</param>\n        </member>\n        <member name=\"M:SharpDX.WIC.FormatConverter.Initialize(SharpDX.WIC.BitmapSource,System.Guid)\">\n            <summary>\n            Initializes this instance with the specified bitmap source and format\n            </summary>\n            <param name=\"sourceRef\">The source ref.</param>\n            <param name=\"dstFormat\">The destination format.</param>\n            <returns></returns>\n        </member>\n        <member name=\"M:SharpDX.WIC.FormatConverter.#ctor(SharpDX.WIC.ImagingFactory)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.FormatConverter\"/> class.\n            </summary>\n            <param name=\"factory\">The factory.</param>\n        </member>\n        <member name=\"T:SharpDX.WIC.FormatConverterInfo\">\n            <summary>\t\n            <p>Exposes methods that provide information about a pixel format converter.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICFormatConverterInfo']/*\"/>\t\n            <msdn-id>ee690275</msdn-id>\t\n            <unmanaged>IWICFormatConverterInfo</unmanaged>\t\n            <unmanaged-short>IWICFormatConverterInfo</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.FormatConverterInfo.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.FormatConverterInfo\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.FormatConverterInfo.op_Explicit(System.IntPtr)~SharpDX.WIC.FormatConverterInfo\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.WIC.FormatConverterInfo\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.WIC.FormatConverterInfo.GetPixelFormats(System.Int32,System.IntPtr,System.Int32@)\">\n            <summary>\t\n            <p>Retrieves a list of GUIDs that signify which pixel formats the converter supports.</p>\t\n            </summary>\t\n            <param name=\"formats\"><dd>  <p>The size of the <em>pPixelFormatGUIDs</em> array.</p> </dd></param>\t\n            <param name=\"pixelFormatGUIDsRef\"><dd>  <p>Pointer to a <see cref=\"T:System.Guid\"/> array that receives the pixel formats the converter supports.</p> </dd></param>\t\n            <param name=\"actualRef\"><dd>  <p>The actual array size needed to retrieve all pixel formats supported by the converter.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>The format converter does not necessarily guarantee symmetricality with respect to conversion; that is, a converter may be able to convert FROM a particular format without actually being able to convert TO a particular format. In order to test symmetricality, use <strong>CanConvert</strong>.</p><p>To determine the number of pixel formats a coverter can handle, set <em>cFormats</em> to <code>0</code> and <em>pPixelFormatGUIDs</em> to <code><c>null</c></code>. The converter will fill <em>pcActual</em> with the number of formats supported by that converter.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICFormatConverterInfo::GetPixelFormats']/*\"/>\t\n            <msdn-id>ee690277</msdn-id>\t\n            <unmanaged>HRESULT IWICFormatConverterInfo::GetPixelFormats([In] unsigned int cFormats,[In] void* pPixelFormatGUIDs,[Out] unsigned int* pcActual)</unmanaged>\t\n            <unmanaged-short>IWICFormatConverterInfo::GetPixelFormats</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.FormatConverterInfo.CreateInstance(SharpDX.WIC.FormatConverter)\">\n            <summary>\t\n            <p>Creates a new <strong><see cref=\"T:SharpDX.WIC.FormatConverter\"/></strong> instance.</p>\t\n            </summary>\t\n            <param name=\"converterOut\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICFormatConverterInfo::CreateInstance']/*\"/>\t\n            <msdn-id>ee690276</msdn-id>\t\n            <unmanaged>HRESULT IWICFormatConverterInfo::CreateInstance([Out, Fast] IWICFormatConverter** ppIConverter)</unmanaged>\t\n            <unmanaged-short>IWICFormatConverterInfo::CreateInstance</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.WIC.FormatConverterInfo.PixelFormats\">\n            <summary>\n            Gets the supported pixel formats.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.WIC.ImagingFactory\">\n            <summary>\t\n            <p>Exposes methods used to create components for the Windows Imaging Component (WIC) such as decoders, encoders and pixel format converters.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICImagingFactory']/*\"/>\t\n            <msdn-id>ee690281</msdn-id>\t\n            <unmanaged>IWICImagingFactory</unmanaged>\t\n            <unmanaged-short>IWICImagingFactory</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.ImagingFactory.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.ImagingFactory\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.ImagingFactory.op_Explicit(System.IntPtr)~SharpDX.WIC.ImagingFactory\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.WIC.ImagingFactory\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"F:SharpDX.WIC.ImagingFactory.WICImagingFactoryClsid\">\n            <summary>Constant WICImagingFactoryClsid.</summary>\n            <unmanaged>CLSID_WICImagingFactory</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.WIC.ImagingFactory.CreateDecoderFromFilename(System.String,System.Nullable{System.Guid},System.Int32,SharpDX.WIC.DecodeOptions,SharpDX.WIC.BitmapDecoder)\">\n            <summary>\t\n            <p>Creates a new instance of the <strong><see cref=\"T:SharpDX.WIC.BitmapDecoder\"/></strong> class based on the given file.</p>\t\n            </summary>\t\n            <param name=\"filename\">No documentation.</param>\t\n            <param name=\"guidVendorRef\">No documentation.</param>\t\n            <param name=\"desiredAccess\">No documentation.</param>\t\n            <param name=\"metadataOptions\">No documentation.</param>\t\n            <param name=\"decoderOut\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICImagingFactory::CreateDecoderFromFilename']/*\"/>\t\n            <msdn-id>ee690307</msdn-id>\t\n            <unmanaged>HRESULT IWICImagingFactory::CreateDecoderFromFilename([In] const wchar_t* wzFilename,[In, Optional] const GUID* pguidVendor,[In] unsigned int dwDesiredAccess,[In] WICDecodeOptions metadataOptions,[Out, Fast] IWICBitmapDecoder** ppIDecoder)</unmanaged>\t\n            <unmanaged-short>IWICImagingFactory::CreateDecoderFromFilename</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.ImagingFactory.CreateDecoderFromStream_(System.IntPtr,System.Nullable{System.Guid},SharpDX.WIC.DecodeOptions,SharpDX.WIC.BitmapDecoder)\">\n            <summary>\t\n            <p>Creates a new instance of the <strong><see cref=\"T:SharpDX.WIC.BitmapDecoder\"/></strong> class based on the given <see cref=\"T:SharpDX.Win32.IStream\"/>.</p>\t\n            </summary>\t\n            <param name=\"streamRef\">No documentation.</param>\t\n            <param name=\"guidVendorRef\">No documentation.</param>\t\n            <param name=\"metadataOptions\">No documentation.</param>\t\n            <param name=\"decoderOut\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICImagingFactory::CreateDecoderFromStream']/*\"/>\t\n            <msdn-id>ee690309</msdn-id>\t\n            <unmanaged>HRESULT IWICImagingFactory::CreateDecoderFromStream([In, Optional] IStream* pIStream,[In, Optional] const GUID* pguidVendor,[In] WICDecodeOptions metadataOptions,[Out, Fast] IWICBitmapDecoder** ppIDecoder)</unmanaged>\t\n            <unmanaged-short>IWICImagingFactory::CreateDecoderFromStream</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.ImagingFactory.CreateDecoderFromFileHandle(System.IntPtr,System.Nullable{System.Guid},SharpDX.WIC.DecodeOptions,SharpDX.WIC.BitmapDecoder)\">\n            <summary>\t\n            <p>Creates a new instance of the <strong><see cref=\"T:SharpDX.WIC.BitmapDecoder\"/></strong> based on the given file handle.</p>\t\n            </summary>\t\n            <param name=\"hFile\">No documentation.</param>\t\n            <param name=\"guidVendorRef\">No documentation.</param>\t\n            <param name=\"metadataOptions\">No documentation.</param>\t\n            <param name=\"decoderOut\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>When a decoder is created using this method, the file handle must remain alive during the lifetime of the decoder.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICImagingFactory::CreateDecoderFromFileHandle']/*\"/>\t\n            <msdn-id>ee690305</msdn-id>\t\n            <unmanaged>HRESULT IWICImagingFactory::CreateDecoderFromFileHandle([In] ULONG_PTR hFile,[In, Optional] const GUID* pguidVendor,[In] WICDecodeOptions metadataOptions,[Out, Fast] IWICBitmapDecoder** ppIDecoder)</unmanaged>\t\n            <unmanaged-short>IWICImagingFactory::CreateDecoderFromFileHandle</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.ImagingFactory.CreateComponentInfo(System.Guid,SharpDX.WIC.ComponentInfo)\">\n            <summary>\t\n            <p>Creates a new instance of the <strong><see cref=\"T:SharpDX.WIC.ComponentInfo\"/></strong> class for the given component class identifier (CLSID).</p>\t\n            </summary>\t\n            <param name=\"clsidComponent\">No documentation.</param>\t\n            <param name=\"infoOut\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICImagingFactory::CreateComponentInfo']/*\"/>\t\n            <msdn-id>ee690302</msdn-id>\t\n            <unmanaged>HRESULT IWICImagingFactory::CreateComponentInfo([In] const GUID&amp; clsidComponent,[Out, Fast] IWICComponentInfo** ppIInfo)</unmanaged>\t\n            <unmanaged-short>IWICImagingFactory::CreateComponentInfo</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.ImagingFactory.CreateDecoder(System.Guid,System.Nullable{System.Guid},SharpDX.WIC.BitmapDecoder)\">\n            <summary>\t\n            <p>Creates a new instance of the <strong><see cref=\"T:SharpDX.WIC.BitmapDecoder\"/></strong> interface.</p>\t\n            </summary>\t\n            <param name=\"guidContainerFormat\">No documentation.</param>\t\n            <param name=\"guidVendorRef\">No documentation.</param>\t\n            <param name=\"decoderOut\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICImagingFactory::CreateDecoder']/*\"/>\t\n            <msdn-id>ee690304</msdn-id>\t\n            <unmanaged>HRESULT IWICImagingFactory::CreateDecoder([In] const GUID&amp; guidContainerFormat,[In, Optional] const GUID* pguidVendor,[Out, Fast] IWICBitmapDecoder** ppIDecoder)</unmanaged>\t\n            <unmanaged-short>IWICImagingFactory::CreateDecoder</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.ImagingFactory.CreateEncoder(System.Guid,System.Nullable{System.Guid},SharpDX.WIC.BitmapEncoder)\">\n            <summary>\t\n            <p>Creates a new instance of the <strong><see cref=\"T:SharpDX.WIC.BitmapEncoder\"/></strong> class.</p>\t\n            </summary>\t\n            <param name=\"guidContainerFormat\">No documentation.</param>\t\n            <param name=\"guidVendorRef\">No documentation.</param>\t\n            <param name=\"encoderOut\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p> Other values may be available for both <em>guidContainerFormat</em> and <em>pguidVendor</em> depending on the installed WIC-enabled encoders. The values listed are those that are natively supported by the operating system. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICImagingFactory::CreateEncoder']/*\"/>\t\n            <msdn-id>ee690311</msdn-id>\t\n            <unmanaged>HRESULT IWICImagingFactory::CreateEncoder([In] const GUID&amp; guidContainerFormat,[In, Optional] const GUID* pguidVendor,[Out, Fast] IWICBitmapEncoder** ppIEncoder)</unmanaged>\t\n            <unmanaged-short>IWICImagingFactory::CreateEncoder</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.ImagingFactory.CreatePalette(SharpDX.WIC.Palette)\">\n            <summary>\t\n            <p>Creates a new instance of the <strong><see cref=\"T:SharpDX.WIC.Palette\"/></strong> class.</p>\t\n            </summary>\t\n            <param name=\"paletteOut\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICImagingFactory::CreatePalette']/*\"/>\t\n            <msdn-id>ee690319</msdn-id>\t\n            <unmanaged>HRESULT IWICImagingFactory::CreatePalette([Out, Fast] IWICPalette** ppIPalette)</unmanaged>\t\n            <unmanaged-short>IWICImagingFactory::CreatePalette</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.ImagingFactory.CreateFormatConverter(SharpDX.WIC.FormatConverter)\">\n            <summary>\t\n            <p>Creates a new instance of the <strong><see cref=\"T:SharpDX.WIC.FormatConverter\"/></strong> class.</p>\t\n            </summary>\t\n            <param name=\"formatConverterOut\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICImagingFactory::CreateFormatConverter']/*\"/>\t\n            <msdn-id>ee690317</msdn-id>\t\n            <unmanaged>HRESULT IWICImagingFactory::CreateFormatConverter([Out, Fast] IWICFormatConverter** ppIFormatConverter)</unmanaged>\t\n            <unmanaged-short>IWICImagingFactory::CreateFormatConverter</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.ImagingFactory.CreateBitmapScaler(SharpDX.WIC.BitmapScaler)\">\n            <summary>\t\n            <p>Creates a new instance of an <strong><see cref=\"T:SharpDX.WIC.BitmapScaler\"/></strong>.</p>\t\n            </summary>\t\n            <param name=\"bitmapScalerOut\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICImagingFactory::CreateBitmapScaler']/*\"/>\t\n            <msdn-id>ee690296</msdn-id>\t\n            <unmanaged>HRESULT IWICImagingFactory::CreateBitmapScaler([Out, Fast] IWICBitmapScaler** ppIBitmapScaler)</unmanaged>\t\n            <unmanaged-short>IWICImagingFactory::CreateBitmapScaler</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.ImagingFactory.CreateBitmapClipper(SharpDX.WIC.BitmapClipper)\">\n            <summary>\t\n            <p>Creates a new instance of an <strong><see cref=\"T:SharpDX.WIC.BitmapClipper\"/></strong> object.</p>\t\n            </summary>\t\n            <param name=\"bitmapClipperOut\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICImagingFactory::CreateBitmapClipper']/*\"/>\t\n            <msdn-id>ee690283</msdn-id>\t\n            <unmanaged>HRESULT IWICImagingFactory::CreateBitmapClipper([Out, Fast] IWICBitmapClipper** ppIBitmapClipper)</unmanaged>\t\n            <unmanaged-short>IWICImagingFactory::CreateBitmapClipper</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.ImagingFactory.CreateBitmapFlipRotator(SharpDX.WIC.BitmapFlipRotator)\">\n            <summary>\t\n            <p>Creates a new instance of an <strong><see cref=\"T:SharpDX.WIC.BitmapFlipRotator\"/></strong> object.</p>\t\n            </summary>\t\n            <param name=\"bitmapFlipRotatorOut\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICImagingFactory::CreateBitmapFlipRotator']/*\"/>\t\n            <msdn-id>ee690285</msdn-id>\t\n            <unmanaged>HRESULT IWICImagingFactory::CreateBitmapFlipRotator([Out, Fast] IWICBitmapFlipRotator** ppIBitmapFlipRotator)</unmanaged>\t\n            <unmanaged-short>IWICImagingFactory::CreateBitmapFlipRotator</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.ImagingFactory.CreateStream(SharpDX.WIC.WICStream)\">\n            <summary>\t\n            <p>Creates a new instance of the <strong><see cref=\"T:SharpDX.WIC.WICStream\"/></strong> class.</p>\t\n            </summary>\t\n            <param name=\"wICStreamOut\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICImagingFactory::CreateStream']/*\"/>\t\n            <msdn-id>ee690325</msdn-id>\t\n            <unmanaged>HRESULT IWICImagingFactory::CreateStream([Out, Fast] IWICStream** ppIWICStream)</unmanaged>\t\n            <unmanaged-short>IWICImagingFactory::CreateStream</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.ImagingFactory.CreateColorContext(SharpDX.WIC.ColorContext)\">\n            <summary>\t\n            <p>Creates a new instance of the <strong><see cref=\"T:SharpDX.WIC.ColorContext\"/></strong> class.</p>\t\n            </summary>\t\n            <param name=\"wICColorContextOut\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICImagingFactory::CreateColorContext']/*\"/>\t\n            <msdn-id>ee690299</msdn-id>\t\n            <unmanaged>HRESULT IWICImagingFactory::CreateColorContext([Out, Fast] IWICColorContext** ppIWICColorContext)</unmanaged>\t\n            <unmanaged-short>IWICImagingFactory::CreateColorContext</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.ImagingFactory.CreateColorTransformer(SharpDX.WIC.ColorTransform)\">\n            <summary>\t\n            <p>Creates a new instance of the <strong><see cref=\"T:SharpDX.WIC.ColorTransform\"/></strong> class.</p>\t\n            </summary>\t\n            <param name=\"wICColorTransformOut\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICImagingFactory::CreateColorTransformer']/*\"/>\t\n            <msdn-id>ee690300</msdn-id>\t\n            <unmanaged>HRESULT IWICImagingFactory::CreateColorTransformer([Out, Fast] IWICColorTransform** ppIWICColorTransform)</unmanaged>\t\n            <unmanaged-short>IWICImagingFactory::CreateColorTransformer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.ImagingFactory.CreateBitmap(System.Int32,System.Int32,System.Guid,SharpDX.WIC.BitmapCreateCacheOption,SharpDX.WIC.Bitmap)\">\n            <summary>\t\n            <p>Creates an <strong><see cref=\"T:SharpDX.WIC.Bitmap\"/></strong> object.</p>\t\n            </summary>\t\n            <param name=\"width\">No documentation.</param>\t\n            <param name=\"height\">No documentation.</param>\t\n            <param name=\"ixelFormatRef\">No documentation.</param>\t\n            <param name=\"option\">No documentation.</param>\t\n            <param name=\"bitmapOut\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICImagingFactory::CreateBitmap']/*\"/>\t\n            <msdn-id>ee690282</msdn-id>\t\n            <unmanaged>HRESULT IWICImagingFactory::CreateBitmap([In] unsigned int uiWidth,[In] unsigned int uiHeight,[In] const GUID&amp; pixelFormat,[In] WICBitmapCreateCacheOption option,[Out, Fast] IWICBitmap** ppIBitmap)</unmanaged>\t\n            <unmanaged-short>IWICImagingFactory::CreateBitmap</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.ImagingFactory.CreateBitmapFromSource(SharpDX.WIC.BitmapSource,SharpDX.WIC.BitmapCreateCacheOption,SharpDX.WIC.Bitmap)\">\n            <summary>\t\n            <p>Creates a <strong><see cref=\"T:SharpDX.WIC.Bitmap\"/></strong> from a <strong><see cref=\"T:SharpDX.WIC.BitmapSource\"/></strong>.</p>\t\n            </summary>\t\n            <param name=\"bitmapSourceRef\">No documentation.</param>\t\n            <param name=\"option\">No documentation.</param>\t\n            <param name=\"bitmapOut\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICImagingFactory::CreateBitmapFromSource']/*\"/>\t\n            <msdn-id>ee690293</msdn-id>\t\n            <unmanaged>HRESULT IWICImagingFactory::CreateBitmapFromSource([In, Optional] IWICBitmapSource* pIBitmapSource,[In] WICBitmapCreateCacheOption option,[Out, Fast] IWICBitmap** ppIBitmap)</unmanaged>\t\n            <unmanaged-short>IWICImagingFactory::CreateBitmapFromSource</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.ImagingFactory.CreateBitmapFromSourceRect(SharpDX.WIC.BitmapSource,System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.WIC.Bitmap)\">\n            <summary>\t\n            <p>Creates an <strong><see cref=\"T:SharpDX.WIC.Bitmap\"/></strong> from a specified rectangle of an <strong><see cref=\"T:SharpDX.WIC.BitmapSource\"/></strong>.</p>\t\n            </summary>\t\n            <param name=\"bitmapSourceRef\">No documentation.</param>\t\n            <param name=\"x\">No documentation.</param>\t\n            <param name=\"y\">No documentation.</param>\t\n            <param name=\"width\">No documentation.</param>\t\n            <param name=\"height\">No documentation.</param>\t\n            <param name=\"bitmapOut\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICImagingFactory::CreateBitmapFromSourceRect']/*\"/>\t\n            <msdn-id>ee690294</msdn-id>\t\n            <unmanaged>HRESULT IWICImagingFactory::CreateBitmapFromSourceRect([In, Optional] IWICBitmapSource* pIBitmapSource,[In] unsigned int x,[In] unsigned int y,[In] unsigned int width,[In] unsigned int height,[Out, Fast] IWICBitmap** ppIBitmap)</unmanaged>\t\n            <unmanaged-short>IWICImagingFactory::CreateBitmapFromSourceRect</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.ImagingFactory.CreateBitmapFromMemory(System.Int32,System.Int32,System.Guid,System.Int32,System.Int32,System.IntPtr,SharpDX.WIC.Bitmap)\">\n            <summary>\t\n            <p>Creates an <strong><see cref=\"T:SharpDX.WIC.Bitmap\"/></strong> from a memory block.</p>\t\n            </summary>\t\n            <param name=\"width\">No documentation.</param>\t\n            <param name=\"height\">No documentation.</param>\t\n            <param name=\"ixelFormatRef\">No documentation.</param>\t\n            <param name=\"stride\">No documentation.</param>\t\n            <param name=\"bufferSize\">No documentation.</param>\t\n            <param name=\"bufferRef\">No documentation.</param>\t\n            <param name=\"bitmapOut\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICImagingFactory::CreateBitmapFromMemory']/*\"/>\t\n            <msdn-id>ee690291</msdn-id>\t\n            <unmanaged>HRESULT IWICImagingFactory::CreateBitmapFromMemory([In] unsigned int uiWidth,[In] unsigned int uiHeight,[In] const GUID&amp; pixelFormat,[In] unsigned int cbStride,[In] unsigned int cbBufferSize,[In] void* pbBuffer,[Out, Fast] IWICBitmap** ppIBitmap)</unmanaged>\t\n            <unmanaged-short>IWICImagingFactory::CreateBitmapFromMemory</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.ImagingFactory.CreateBitmapFromHBITMAP(System.IntPtr,System.IntPtr,SharpDX.WIC.BitmapAlphaChannelOption,SharpDX.WIC.Bitmap)\">\n            <summary>\t\n            <p>Creates an <strong><see cref=\"T:SharpDX.WIC.Bitmap\"/></strong> from a bitmap handle.</p>\t\n            </summary>\t\n            <param name=\"hBitmap\">No documentation.</param>\t\n            <param name=\"hPalette\">No documentation.</param>\t\n            <param name=\"options\">No documentation.</param>\t\n            <param name=\"bitmapOut\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICImagingFactory::CreateBitmapFromHBITMAP']/*\"/>\t\n            <msdn-id>ee690287</msdn-id>\t\n            <unmanaged>HRESULT IWICImagingFactory::CreateBitmapFromHBITMAP([In] HBITMAP hBitmap,[In, Optional] HPALETTE hPalette,[In] WICBitmapAlphaChannelOption options,[Out, Fast] IWICBitmap** ppIBitmap)</unmanaged>\t\n            <unmanaged-short>IWICImagingFactory::CreateBitmapFromHBITMAP</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.ImagingFactory.CreateBitmapFromHICON(System.IntPtr,SharpDX.WIC.Bitmap)\">\n            <summary>\t\n            <p>Creates an <strong><see cref=\"T:SharpDX.WIC.Bitmap\"/></strong> from an icon handle.</p>\t\n            </summary>\t\n            <param name=\"hIcon\">No documentation.</param>\t\n            <param name=\"bitmapOut\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICImagingFactory::CreateBitmapFromHICON']/*\"/>\t\n            <msdn-id>ee690289</msdn-id>\t\n            <unmanaged>HRESULT IWICImagingFactory::CreateBitmapFromHICON([In] HICON hIcon,[Out, Fast] IWICBitmap** ppIBitmap)</unmanaged>\t\n            <unmanaged-short>IWICImagingFactory::CreateBitmapFromHICON</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.ImagingFactory.CreateComponentEnumerator(System.Int32,System.Int32,SharpDX.ComObject)\">\n            <summary>\t\n            <p>Creates an <see cref=\"T:SharpDX.ComObject\"/> object of the specified component types.</p>\t\n            </summary>\t\n            <param name=\"componentTypes\">No documentation.</param>\t\n            <param name=\"options\">No documentation.</param>\t\n            <param name=\"enumUnknownOut\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>Component types must be enumerated seperately. Combinations of component types and <strong><see cref=\"F:SharpDX.WIC.ComponentType.AllComponents\"/></strong> are unsupported.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICImagingFactory::CreateComponentEnumerator']/*\"/>\t\n            <msdn-id>ee690301</msdn-id>\t\n            <unmanaged>HRESULT IWICImagingFactory::CreateComponentEnumerator([In] unsigned int componentTypes,[In] unsigned int options,[Out, Fast] IEnumUnknown** ppIEnumUnknown)</unmanaged>\t\n            <unmanaged-short>IWICImagingFactory::CreateComponentEnumerator</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.ImagingFactory.CreateFastMetadataEncoderFromDecoder(SharpDX.WIC.BitmapDecoder,SharpDX.WIC.FastMetadataEncoder)\">\n            <summary>\t\n            <p>Creates a new instance of the fast metadata encoder based on the given <strong><see cref=\"T:SharpDX.WIC.BitmapDecoder\"/></strong>.</p>\t\n            </summary>\t\n            <param name=\"decoderRef\">No documentation.</param>\t\n            <param name=\"fastEncoderOut\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p> The native image formats provided by Windows Imaging Component (WIC) do not support metadata at the decoder level. WIC codecs only support metadata on image frames. To create a fast metadata encoder from an image frame, see the image factory's <strong>CreateFastMetadataEncoderFromFrameDecode</strong> method. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICImagingFactory::CreateFastMetadataEncoderFromDecoder']/*\"/>\t\n            <msdn-id>ee690313</msdn-id>\t\n            <unmanaged>HRESULT IWICImagingFactory::CreateFastMetadataEncoderFromDecoder([In, Optional] IWICBitmapDecoder* pIDecoder,[Out, Fast] IWICFastMetadataEncoder** ppIFastEncoder)</unmanaged>\t\n            <unmanaged-short>IWICImagingFactory::CreateFastMetadataEncoderFromDecoder</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.ImagingFactory.CreateFastMetadataEncoderFromFrameDecode(SharpDX.WIC.BitmapFrameDecode,SharpDX.WIC.FastMetadataEncoder)\">\n            <summary>\t\n            <p>Creates a new instance of the fast metadata encoder based on the given image frame.</p>\t\n            </summary>\t\n            <param name=\"frameDecoderRef\"><dd>  <p>The <strong><see cref=\"T:SharpDX.WIC.BitmapFrameDecode\"/></strong> to create the <strong><see cref=\"T:SharpDX.WIC.FastMetadataEncoder\"/></strong> from.</p> </dd></param>\t\n            <param name=\"fastEncoderOut\"><dd>  <p>When this method returns, contains a reference to a new fast metadata encoder.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICImagingFactory::CreateFastMetadataEncoderFromFrameDecode']/*\"/>\t\n            <msdn-id>ee690315</msdn-id>\t\n            <unmanaged>HRESULT IWICImagingFactory::CreateFastMetadataEncoderFromFrameDecode([In, Optional] IWICBitmapFrameDecode* pIFrameDecoder,[Out, Fast] IWICFastMetadataEncoder** ppIFastEncoder)</unmanaged>\t\n            <unmanaged-short>IWICImagingFactory::CreateFastMetadataEncoderFromFrameDecode</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.ImagingFactory.CreateQueryWriter(System.Guid,System.Nullable{System.Guid},SharpDX.WIC.MetadataQueryWriter)\">\n            <summary>\t\n            <p>Creates a new instance of a query writer.</p>\t\n            </summary>\t\n            <param name=\"guidMetadataFormat\"><dd>  <p>The <see cref=\"T:System.Guid\"/> for the desired metadata format. </p> </dd></param>\t\n            <param name=\"guidVendorRef\"><dd>  <p>The <see cref=\"T:System.Guid\"/> for the preferred metadata writer vendor. Use <strong><c>null</c></strong> if no preferred vendor.</p> </dd></param>\t\n            <param name=\"queryWriterOut\"><dd>  <p>When this method returns, contains a reference to a new <strong><see cref=\"T:SharpDX.WIC.MetadataQueryWriter\"/></strong>.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICImagingFactory::CreateQueryWriter']/*\"/>\t\n            <msdn-id>ee690321</msdn-id>\t\n            <unmanaged>HRESULT IWICImagingFactory::CreateQueryWriter([In] const GUID&amp; guidMetadataFormat,[In, Optional] const GUID* pguidVendor,[Out, Fast] IWICMetadataQueryWriter** ppIQueryWriter)</unmanaged>\t\n            <unmanaged-short>IWICImagingFactory::CreateQueryWriter</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.ImagingFactory.CreateQueryWriterFromReader(SharpDX.WIC.MetadataQueryReader,System.Nullable{System.Guid},SharpDX.WIC.MetadataQueryWriter)\">\n            <summary>\t\n            <p>Creates a new instance of a query writer based on the given query reader. The query writer will be pre-populated with metadata from the query reader.</p>\t\n            </summary>\t\n            <param name=\"queryReaderRef\"><dd>  <p>The <strong><see cref=\"T:SharpDX.WIC.MetadataQueryReader\"/></strong> to create the <strong><see cref=\"T:SharpDX.WIC.MetadataQueryWriter\"/></strong> from.</p> </dd></param>\t\n            <param name=\"guidVendorRef\"><dd>  <p>The <see cref=\"T:System.Guid\"/> for the preferred metadata writer vendor. Use <strong><c>null</c></strong> if no preferred vendor.</p> </dd></param>\t\n            <param name=\"queryWriterOut\"><dd>  <p>When this method returns, contains a reference to a new metadata writer.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICImagingFactory::CreateQueryWriterFromReader']/*\"/>\t\n            <msdn-id>ee690322</msdn-id>\t\n            <unmanaged>HRESULT IWICImagingFactory::CreateQueryWriterFromReader([In, Optional] IWICMetadataQueryReader* pIQueryReader,[In, Optional] const GUID* pguidVendor,[Out, Fast] IWICMetadataQueryWriter** ppIQueryWriter)</unmanaged>\t\n            <unmanaged-short>IWICImagingFactory::CreateQueryWriterFromReader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.ImagingFactory.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.ImagingFactory\"/> class.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.WIC.MetadataQueryReader\">\n            <summary>\t\n            <p>Exposes methods for retrieving metadata blocks and items from a decoder or its image frames using a metadata query expression.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>A metadata query reader uses metadata query expressions to access embedded metadata. For more information on the metadata query language, see the Metadata Query Language Overview.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICMetadataQueryReader']/*\"/>\t\n            <msdn-id>ee719708</msdn-id>\t\n            <unmanaged>IWICMetadataQueryReader</unmanaged>\t\n            <unmanaged-short>IWICMetadataQueryReader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.MetadataQueryReader.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.MetadataQueryReader\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.MetadataQueryReader.op_Explicit(System.IntPtr)~SharpDX.WIC.MetadataQueryReader\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.WIC.MetadataQueryReader\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.WIC.MetadataQueryReader.GetContainerFormat(System.Guid@)\">\n            <summary>\t\n            <p>Gets the metadata query readers container format.</p>\t\n            </summary>\t\n            <param name=\"guidContainerFormatRef\"><dd>  <p>Pointer that receives the cointainer format <see cref=\"T:System.Guid\"/>.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICMetadataQueryReader::GetContainerFormat']/*\"/>\t\n            <msdn-id>ee719709</msdn-id>\t\n            <unmanaged>HRESULT IWICMetadataQueryReader::GetContainerFormat([Out] GUID* pguidContainerFormat)</unmanaged>\t\n            <unmanaged-short>IWICMetadataQueryReader::GetContainerFormat</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.MetadataQueryReader.GetLocation(System.Int32,System.IntPtr,System.Int32@)\">\n            <summary>\t\n            <p>Retrieves the current path relative to the root metadata block.</p>\t\n            </summary>\t\n            <param name=\"cchMaxLength\"><dd>  <p>The length of the <em>wzNamespace</em> buffer.</p> </dd></param>\t\n            <param name=\"@namespace\"><dd>  <p>Pointer that receives the current namespace location.</p> </dd></param>\t\n            <param name=\"cchActualLengthRef\"><dd>  <p>The actual buffer length that was needed to retrieve the current namespace location.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>If the query reader is relative to the top of the metadata hierarchy it will return an empty string.</p><p>If the query reader is relative to a nested metadata block this method will return the path to the current query reader.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICMetadataQueryReader::GetLocation']/*\"/>\t\n            <msdn-id>ee719713</msdn-id>\t\n            <unmanaged>HRESULT IWICMetadataQueryReader::GetLocation([In] unsigned int cchMaxLength,[In] void* wzNamespace,[Out] unsigned int* pcchActualLength)</unmanaged>\t\n            <unmanaged-short>IWICMetadataQueryReader::GetLocation</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.MetadataQueryReader.GetMetadataByName(System.String,System.IntPtr)\">\n            <summary>\t\n            <p>Retrieves the metadata block or item identified by a metadata query expression. </p>\t\n            </summary>\t\n            <param name=\"name\"><dd>  <p>The query expression to the requested metadata block or item.</p> </dd></param>\t\n            <param name=\"varValueRef\"><dd>  <p>When this method returns, contains the metadata block or item requested.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p><strong>GetMetadataByName</strong> uses metadata query expressions to access embedded metadata. For more information on the metadata query language, see the Metadata Query Language Overview.</p><p>If multiple blocks or items exist that are expressed by the same query expression, the first metadata block or item found will be returned.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICMetadataQueryReader::GetMetadataByName']/*\"/>\t\n            <msdn-id>ee719715</msdn-id>\t\n            <unmanaged>HRESULT IWICMetadataQueryReader::GetMetadataByName([In] const wchar_t* wzName,[InOut, Optional] PROPVARIANT* pvarValue)</unmanaged>\t\n            <unmanaged-short>IWICMetadataQueryReader::GetMetadataByName</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.MetadataQueryReader.GetEnumerator\">\n            <summary>\t\n            <p>Gets an enumerator of all metadata items at the current relative location within the metadata hierachy.</p>\t\n            </summary>\t\n            <returns><dd>  <p>When this method returns, contais a reference to an enumerator that contains the metadata items.</p> </dd></returns>\t\n            <remarks>\t\n            <p>If a metadata item is a nested metadata block it will be passed back as a <code>VT_UNKNOWN</code>; otherwise, the \"name\" of the property will be passed back as a <code>VT_LPWSTR</code>. The enumerator does not enumerate content within nested metadata blocks.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICMetadataQueryReader::GetEnumerator']/*\"/>\t\n            <msdn-id>ee719711</msdn-id>\t\n            <unmanaged>HRESULT IWICMetadataQueryReader::GetEnumerator([Out] void** ppIEnumString)</unmanaged>\t\n            <unmanaged-short>IWICMetadataQueryReader::GetEnumerator</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.MetadataQueryReader.GetMetadataByName(System.String)\">\n            <summary>\n            Gets the metadata value by name.\n            </summary>\n            <param name=\"name\">The name.</param>\n            <returns>Value of the metadata</returns>\n            <unmanaged>HRESULT IWICMetadataQueryReader::GetMetadataByName([In] const wchar_t* wzName,[InOut, Optional] PROPVARIANT* pvarValue)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.WIC.MetadataQueryReader.Dump(System.IO.TextWriter,System.Int32)\">\n            <summary>\n            Dumps all metadatas.\n            </summary>\n            <param name=\"writer\">The text writer output.</param>\n            <param name=\"level\">The level of tabulations.</param>\n            <remarks>\n            This is a simple helper method to dump metadata stored in this instance.\n            </remarks>\n        </member>\n        <member name=\"P:SharpDX.WIC.MetadataQueryReader.ContainerFormat\">\n            <summary>\t\n            <p>Gets the metadata query readers container format.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICMetadataQueryReader::GetContainerFormat']/*\"/>\t\n            <msdn-id>ee719709</msdn-id>\t\n            <unmanaged>GetContainerFormat</unmanaged>\t\n            <unmanaged-short>GetContainerFormat</unmanaged-short>\t\n            <unmanaged>HRESULT IWICMetadataQueryReader::GetContainerFormat([Out] GUID* pguidContainerFormat)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.WIC.MetadataQueryReader.Enumerator\">\n            <summary>\n            Gets the enumerator on the metadata names.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.WIC.MetadataQueryReader.Location\">\n            <summary>\n            Gets the location.\n            </summary>\n            <unmanaged>HRESULT IWICMetadataQueryReader::GetLocation([In] unsigned int cchMaxLength,[InOut, Buffer, Optional] wchar_t* wzNamespace,[Out] unsigned int* pcchActualLength)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.WIC.MetadataQueryWriter\">\n            <summary>\t\n            <p>Exposes methods for setting or removing metadata blocks and items to an encoder or its image frames using a metadata query expression.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>A metadata query writer uses metadata query expressions to set or remove metadata. For more information on the metadata query language, see the Metadata Query Language Overview.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICMetadataQueryWriter']/*\"/>\t\n            <msdn-id>ee719717</msdn-id>\t\n            <unmanaged>IWICMetadataQueryWriter</unmanaged>\t\n            <unmanaged-short>IWICMetadataQueryWriter</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.MetadataQueryWriter.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.MetadataQueryWriter\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.MetadataQueryWriter.op_Explicit(System.IntPtr)~SharpDX.WIC.MetadataQueryWriter\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.WIC.MetadataQueryWriter\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.WIC.MetadataQueryWriter.SetMetadataByName(System.String,System.IntPtr)\">\n            <summary>\t\n            <p>Sets a metadata item to a specific location.</p>\t\n            </summary>\t\n            <param name=\"name\"><dd>  <p>The name of the metadata item.</p> </dd></param>\t\n            <param name=\"varValueRef\"><dd>  <p>The metadata to set.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p><strong>SetMetadataByName</strong> uses metadata query expressions to remove metadata. For more information on the metadata query language, see the Metadata Query Language Overview.</p><p> If the value set is a nested metadata block then use variant type <code>VT_UNKNOWN</code> and <em>pvarValue</em> pointing to the <strong><see cref=\"T:SharpDX.WIC.MetadataQueryWriter\"/></strong> of the new metadata block.   The ordering of metadata items is at the discretion of the query writer since relative locations are not specified. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICMetadataQueryWriter::SetMetadataByName']/*\"/>\t\n            <msdn-id>ee719720</msdn-id>\t\n            <unmanaged>HRESULT IWICMetadataQueryWriter::SetMetadataByName([In] const wchar_t* wzName,[In] const void* pvarValue)</unmanaged>\t\n            <unmanaged-short>IWICMetadataQueryWriter::SetMetadataByName</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.MetadataQueryWriter.RemoveMetadataByName(System.String)\">\n            <summary>\t\n            <p>Removes a metadata item from a specific location using a metadata query expression.</p>\t\n            </summary>\t\n            <param name=\"name\"><dd>  <p>The name of the metadata item to remove.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p><strong>RemoveMetadataByName</strong> uses metadata query expressions to remove metadata. For more information on the metadata query language, see the Metadata Query Language Overview.</p><p>If the metadata item is a metadata block, it is removed from the metadata hierarchy.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICMetadataQueryWriter::RemoveMetadataByName']/*\"/>\t\n            <msdn-id>ee719718</msdn-id>\t\n            <unmanaged>HRESULT IWICMetadataQueryWriter::RemoveMetadataByName([In] const wchar_t* wzName)</unmanaged>\t\n            <unmanaged-short>IWICMetadataQueryWriter::RemoveMetadataByName</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.MetadataQueryWriter.#ctor(SharpDX.WIC.ImagingFactory,System.Guid)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.MetadataQueryWriter\"/> class.\n            </summary>\n            <param name=\"factory\">The factory.</param>\n            <param name=\"guidMetadataFormat\">The GUID metadata format.</param>\n        </member>\n        <member name=\"M:SharpDX.WIC.MetadataQueryWriter.#ctor(SharpDX.WIC.ImagingFactory,System.Guid,System.Guid)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.MetadataQueryWriter\"/> class.\n            </summary>\n            <param name=\"factory\">The factory.</param>\n            <param name=\"guidMetadataFormat\">The GUID metadata format.</param>\n            <param name=\"guidVendorRef\">The GUID vendor ref.</param>\n            <unmanaged>HRESULT IWICImagingFactory::CreateQueryWriter([In] const GUID&amp; guidMetadataFormat,[In, Optional] const GUID* pguidVendor,[Out, Fast] IWICMetadataQueryWriter** ppIQueryWriter)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.WIC.MetadataQueryWriter.#ctor(SharpDX.WIC.ImagingFactory,SharpDX.WIC.MetadataQueryReader)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.MetadataQueryWriter\"/> class from a <see cref=\"T:SharpDX.WIC.MetadataQueryReader\"/>.\n            </summary>\n            <param name=\"factory\">The factory.</param>\n            <param name=\"metadataQueryReader\">The metadata query reader.</param>\n        </member>\n        <member name=\"M:SharpDX.WIC.MetadataQueryWriter.#ctor(SharpDX.WIC.ImagingFactory,SharpDX.WIC.MetadataQueryReader,System.Guid)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.MetadataQueryWriter\"/> class from a <see cref=\"T:SharpDX.WIC.MetadataQueryReader\"/>.\n            </summary>\n            <param name=\"factory\">The factory.</param>\n            <param name=\"metadataQueryReader\">The metadata query reader.</param>\n            <param name=\"guidVendorRef\">The GUID vendor ref.</param>\n        </member>\n        <member name=\"M:SharpDX.WIC.MetadataQueryWriter.SetMetadataByName(System.String,System.Object)\">\n            <summary>\n            Sets the value for a metadata name\n            </summary>\n            <param name=\"name\">The name of the metadata.</param>\n            <param name=\"value\">The value.</param>\n            <returns></returns>\n        </member>\n        <member name=\"T:SharpDX.WIC.Palette\">\n            <summary>\t\n            <p>Exposes methods for accessing and building a color table, primarily for indexed pixel formats.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>If the <strong><see cref=\"T:SharpDX.WIC.BitmapPaletteType\"/></strong> is not <strong>WICBitmapPaletteCustom</strong>, then the colors are automatically generated based on the table above.  If the user subsequently changes a color palette entry the WICBitmapPalette is set to Custom by that action.</p><p> <strong>InitializeFromBitmap</strong>'s <em>fAddTransparentColor</em> parameter will add a transparent color to the end of the color collection if its size if less than 256, otherwise index 255 will be replaced with the transparent color.  If a pre-defined palette type is used, it will change to BitmapPaletteTypeCustom since it no longer matches the predefined palette.</p><p>The palette interface is an auxiliary imaging interface in that it does not directly concern bitmaps and pixels; rather it provides indexed color translation for indexed bitmaps. For an indexed pixel format with M bits per pixels: (The number of colors in the palette) greater than 2^M.</p><p>Traditionally the basic operation of the palette is to provide a translation from a byte (or smaller) index into a 32bpp color value. This is often accomplished by a 256 entry table of color values.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICPalette']/*\"/>\t\n            <msdn-id>ee719741</msdn-id>\t\n            <unmanaged>IWICPalette</unmanaged>\t\n            <unmanaged-short>IWICPalette</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.Palette.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.Palette\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.Palette.op_Explicit(System.IntPtr)~SharpDX.WIC.Palette\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.WIC.Palette\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.WIC.Palette.Initialize(SharpDX.WIC.BitmapPaletteType,SharpDX.Bool)\">\n            <summary>\t\n            <p>Initializes the palette to one of the pre-defined palettes specified by <strong><see cref=\"T:SharpDX.WIC.BitmapPaletteType\"/></strong> and optionally adds a transparent color.</p>\t\n            </summary>\t\n            <param name=\"ePaletteType\">No documentation.</param>\t\n            <param name=\"fAddTransparentColor\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICPalette::InitializePredefined']/*\"/>\t\n            <msdn-id>ee719756</msdn-id>\t\n            <unmanaged>HRESULT IWICPalette::InitializePredefined([In] WICBitmapPaletteType ePaletteType,[In] BOOL fAddTransparentColor)</unmanaged>\t\n            <unmanaged-short>IWICPalette::InitializePredefined</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.Palette.Initialize(System.IntPtr,System.Int32)\">\n            <summary>\t\n            <p>Initializes a palette to the custom color entries provided.</p>\t\n            </summary>\t\n            <param name=\"colorsRef\"><dd>  <p>Pointer to the color array.</p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>The number of colors in <em>pColors</em>.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>If a transparent color is required, it should be provided as part of the custom entries.</p><p>The entry count is limited to 256.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICPalette::InitializeCustom']/*\"/>\t\n            <msdn-id>ee719750</msdn-id>\t\n            <unmanaged>HRESULT IWICPalette::InitializeCustom([In, Buffer] void* pColors,[In] unsigned int cCount)</unmanaged>\t\n            <unmanaged-short>IWICPalette::InitializeCustom</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.Palette.Initialize(SharpDX.WIC.BitmapSource,System.Int32,SharpDX.Bool)\">\n            <summary>\t\n            <p>Initializes a palette using a computed optimized values based on the reference bitmap.</p>\t\n            </summary>\t\n            <param name=\"surfaceRef\"><dd>  <p>Pointer to the source bitmap.</p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>The number of colors to initialize the palette with.</p> </dd></param>\t\n            <param name=\"fAddTransparentColor\"><dd>  <p>A value to indicate whether to add a transparent color.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p> The resulting palette contains the specified number of colors which best represent the colors present in the bitmap. The algorithm operates on the opaque RGB color value of each pixel in the reference bitmap and hence ignores any alpha values. If a transparent color is required, set the fAddTransparentColor parameter to <strong>TRUE</strong> and one fewer optimized color will be computed, reducing the <em>colorCount</em>, and a fully transparent color entry will be added. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICPalette::InitializeFromBitmap']/*\"/>\t\n            <msdn-id>ee719752</msdn-id>\t\n            <unmanaged>HRESULT IWICPalette::InitializeFromBitmap([In, Optional] IWICBitmapSource* pISurface,[In] unsigned int cCount,[In] BOOL fAddTransparentColor)</unmanaged>\t\n            <unmanaged-short>IWICPalette::InitializeFromBitmap</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.Palette.Initialize(SharpDX.WIC.Palette)\">\n            <summary>\t\n            <p>Initialize the palette based on a given palette.</p>\t\n            </summary>\t\n            <param name=\"paletteRef\"><dd>  <p>Pointer to the source palette.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICPalette::InitializeFromPalette']/*\"/>\t\n            <msdn-id>ee719754</msdn-id>\t\n            <unmanaged>HRESULT IWICPalette::InitializeFromPalette([In, Optional] IWICPalette* pIPalette)</unmanaged>\t\n            <unmanaged-short>IWICPalette::InitializeFromPalette</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.Palette.GetTypeInfo(SharpDX.WIC.BitmapPaletteType@)\">\n            <summary>\t\n            <p>Retrieves the <strong><see cref=\"T:SharpDX.WIC.BitmapPaletteType\"/></strong> that describes the palette. </p>\t\n            </summary>\t\n            <param name=\"ePaletteTypeRef\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p><strong>WICBitmapPaletteCustom</strong> is used for palettes initialized from both <strong>InitializeCustom</strong> and <strong>InitializeFromBitmap</strong>. There is no distinction is made between optimized and custom palettes.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICPalette::GetType']/*\"/>\t\n            <msdn-id>ee719746</msdn-id>\t\n            <unmanaged>HRESULT IWICPalette::GetType([Out] WICBitmapPaletteType* pePaletteType)</unmanaged>\t\n            <unmanaged-short>IWICPalette::GetType</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.Palette.GetColorCount(System.Int32@)\">\n            <summary>\t\n            <p>Retrieves the number of colors in the color table.</p>\t\n            </summary>\t\n            <param name=\"countRef\"><dd>  <p>Pointer that receives the number of colors in the color table.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICPalette::GetColorCount']/*\"/>\t\n            <msdn-id>ee719742</msdn-id>\t\n            <unmanaged>HRESULT IWICPalette::GetColorCount([Out] unsigned int* pcCount)</unmanaged>\t\n            <unmanaged-short>IWICPalette::GetColorCount</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.Palette.GetColors(System.Int32,System.IntPtr,System.Int32@)\">\n            <summary>\t\n            <p>Fills out the supplied color array with the colors from the internal color table. The color array should be sized according to the return results from <strong>GetColorCount</strong>.</p>\t\n            </summary>\t\n            <param name=\"count\">No documentation.</param>\t\n            <param name=\"colorsRef\">No documentation.</param>\t\n            <param name=\"actualColorsRef\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICPalette::GetColors']/*\"/>\t\n            <msdn-id>ee719744</msdn-id>\t\n            <unmanaged>HRESULT IWICPalette::GetColors([In] unsigned int cCount,[Out, Buffer] void* pColors,[Out] unsigned int* pcActualColors)</unmanaged>\t\n            <unmanaged-short>IWICPalette::GetColors</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.Palette.IsBlackWhite_(SharpDX.Bool@)\">\n            <summary>\t\n            <p>Retrieves a value that describes whether the palette is black and white.</p>\t\n            </summary>\t\n            <param name=\"fIsBlackWhiteRef\"><dd>  <p>Pointer that receives <code>TRUE</code> if the palette is black and white; otherwise, <code><see cref=\"F:SharpDX.Result.False\"/></code>.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICPalette::IsBlackWhite']/*\"/>\t\n            <msdn-id>ee719758</msdn-id>\t\n            <unmanaged>HRESULT IWICPalette::IsBlackWhite([Out] BOOL* pfIsBlackWhite)</unmanaged>\t\n            <unmanaged-short>IWICPalette::IsBlackWhite</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.Palette.IsGrayscale_(SharpDX.Bool@)\">\n            <summary>\t\n            <p>Retrieves a value that describes whether a palette is grayscale.</p>\t\n            </summary>\t\n            <param name=\"fIsGrayscaleRef\"><dd>  <p>Pointer that receives <code>TRUE</code> if the palette is grayscale; otherwise <code><see cref=\"F:SharpDX.Result.False\"/></code>.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICPalette::IsGrayscale']/*\"/>\t\n            <msdn-id>ee719759</msdn-id>\t\n            <unmanaged>HRESULT IWICPalette::IsGrayscale([Out] BOOL* pfIsGrayscale)</unmanaged>\t\n            <unmanaged-short>IWICPalette::IsGrayscale</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.Palette.HasAlpha(SharpDX.Bool@)\">\n            <summary>\t\n            <p>Retrieves a value that describes whether the palette contains an alpha transparent color.</p>\t\n            </summary>\t\n            <param name=\"fHasAlphaRef\"><dd>  <p>Pointer that receives <code>TRUE</code> if the palette contains a transparent color; otherwise, <code><see cref=\"F:SharpDX.Result.False\"/></code>.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICPalette::HasAlpha']/*\"/>\t\n            <msdn-id>ee719748</msdn-id>\t\n            <unmanaged>HRESULT IWICPalette::HasAlpha([Out] BOOL* pfHasAlpha)</unmanaged>\t\n            <unmanaged-short>IWICPalette::HasAlpha</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.Palette.#ctor(SharpDX.WIC.ImagingFactory)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.Palette\"/> class.\n            </summary>\n            <param name=\"factory\">The factory.</param>\n            <msdn-id>ee690319</msdn-id>\t\n            <unmanaged>HRESULT IWICImagingFactory::CreatePalette([Out, Fast] IWICPalette** ppIPalette)</unmanaged>\t\n            <unmanaged-short>IWICImagingFactory::CreatePalette</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.Palette.Initialize(SharpDX.Color[])\">\n            <summary>\n            Initializes with the specified colors.\n            </summary>\n            <param name=\"colors\">The colors.</param>\n            <msdn-id>ee719750</msdn-id>\t\n            <unmanaged>HRESULT IWICPalette::InitializeCustom([In, Buffer] void* pColors,[In] unsigned int cCount)</unmanaged>\t\n            <unmanaged-short>IWICPalette::InitializeCustom</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.Palette.Initialize(SharpDX.Color4[])\">\n            <summary>\n            Initializes with the specified colors.\n            </summary>\n            <param name=\"colors\">The colors.</param>\n            <msdn-id>ee719750</msdn-id>\t\n            <unmanaged>HRESULT IWICPalette::InitializeCustom([In, Buffer] void* pColors,[In] unsigned int cCount)</unmanaged>\t\n            <unmanaged-short>IWICPalette::InitializeCustom</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.WIC.Palette.TypeInfo\">\n            <summary>\t\n            <p>Retrieves the <strong><see cref=\"T:SharpDX.WIC.BitmapPaletteType\"/></strong> that describes the palette. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p><strong>WICBitmapPaletteCustom</strong> is used for palettes initialized from both <strong>InitializeCustom</strong> and <strong>InitializeFromBitmap</strong>. There is no distinction is made between optimized and custom palettes.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICPalette::GetType']/*\"/>\t\n            <msdn-id>ee719746</msdn-id>\t\n            <unmanaged>GetType</unmanaged>\t\n            <unmanaged-short>GetType</unmanaged-short>\t\n            <unmanaged>HRESULT IWICPalette::GetType([Out] WICBitmapPaletteType* pePaletteType)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.WIC.Palette.ColorCount\">\n            <summary>\t\n            <p>Retrieves the number of colors in the color table.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICPalette::GetColorCount']/*\"/>\t\n            <msdn-id>ee719742</msdn-id>\t\n            <unmanaged>GetColorCount</unmanaged>\t\n            <unmanaged-short>GetColorCount</unmanaged-short>\t\n            <unmanaged>HRESULT IWICPalette::GetColorCount([Out] unsigned int* pcCount)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.WIC.Palette.IsBlackWhite\">\n            <summary>\t\n            <p>Retrieves a value that describes whether the palette is black and white.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICPalette::IsBlackWhite']/*\"/>\t\n            <msdn-id>ee719758</msdn-id>\t\n            <unmanaged>IsBlackWhite</unmanaged>\t\n            <unmanaged-short>IsBlackWhite</unmanaged-short>\t\n            <unmanaged>HRESULT IWICPalette::IsBlackWhite([Out] BOOL* pfIsBlackWhite)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.WIC.Palette.IsGrayscale\">\n            <summary>\t\n            <p>Retrieves a value that describes whether a palette is grayscale.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICPalette::IsGrayscale']/*\"/>\t\n            <msdn-id>ee719759</msdn-id>\t\n            <unmanaged>IsGrayscale</unmanaged>\t\n            <unmanaged-short>IsGrayscale</unmanaged-short>\t\n            <unmanaged>HRESULT IWICPalette::IsGrayscale([Out] BOOL* pfIsGrayscale)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.WIC.Palette.Colors\">\n            <summary>\n            Gets the colors.\n            </summary>\n            <msdn-id>ee719744</msdn-id>\t\n            <unmanaged>HRESULT IWICPalette::GetColors([In] unsigned int cCount,[Out, Buffer] void* pColors,[Out] unsigned int* pcActualColors)</unmanaged>\t\n            <unmanaged-short>IWICPalette::GetColors</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.WIC.PixelFormatInfo\">\n            <summary>\t\n            <p>Exposes methods that provide information about a pixel format.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICPixelFormatInfo']/*\"/>\t\n            <msdn-id>ee719763</msdn-id>\t\n            <unmanaged>IWICPixelFormatInfo</unmanaged>\t\n            <unmanaged-short>IWICPixelFormatInfo</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.PixelFormatInfo.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.PixelFormatInfo\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.PixelFormatInfo.op_Explicit(System.IntPtr)~SharpDX.WIC.PixelFormatInfo\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.WIC.PixelFormatInfo\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.WIC.PixelFormatInfo.GetFormatGUID(System.Guid@)\">\n            <summary>\t\n            <p>Gets the pixel format <see cref=\"T:System.Guid\"/>.</p>\t\n            </summary>\t\n            <param name=\"formatRef\"><dd>  <p>Pointer that receives the pixel format <see cref=\"T:System.Guid\"/>.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICPixelFormatInfo::GetFormatGUID']/*\"/>\t\n            <msdn-id>ee719774</msdn-id>\t\n            <unmanaged>HRESULT IWICPixelFormatInfo::GetFormatGUID([Out] GUID* pFormat)</unmanaged>\t\n            <unmanaged-short>IWICPixelFormatInfo::GetFormatGUID</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.PixelFormatInfo.GetColorContext(SharpDX.WIC.ColorContext@)\">\n            <summary>\t\n            <p>Gets the pixel format's <strong><see cref=\"T:SharpDX.WIC.ColorContext\"/></strong>.</p>\t\n            </summary>\t\n            <param name=\"colorContextOut\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICPixelFormatInfo::GetColorContext']/*\"/>\t\n            <msdn-id>ee719773</msdn-id>\t\n            <unmanaged>HRESULT IWICPixelFormatInfo::GetColorContext([Out] IWICColorContext** ppIColorContext)</unmanaged>\t\n            <unmanaged-short>IWICPixelFormatInfo::GetColorContext</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.PixelFormatInfo.GetBitsPerPixel(System.Int32@)\">\n            <summary>\t\n            <p>Gets the bits per pixel (BPP) of the pixel format.</p>\t\n            </summary>\t\n            <param name=\"bitsPerPixelRef\"><dd>  <p>Pointer that receives the BPP of the pixel format.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICPixelFormatInfo::GetBitsPerPixel']/*\"/>\t\n            <msdn-id>ee719767</msdn-id>\t\n            <unmanaged>HRESULT IWICPixelFormatInfo::GetBitsPerPixel([Out] unsigned int* puiBitsPerPixel)</unmanaged>\t\n            <unmanaged-short>IWICPixelFormatInfo::GetBitsPerPixel</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.PixelFormatInfo.GetChannelCount(System.Int32@)\">\n            <summary>\t\n            <p>Gets the number of channels the pixel format contains.</p>\t\n            </summary>\t\n            <param name=\"channelCountRef\"><dd>  <p>Pointer that receives the channel count.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICPixelFormatInfo::GetChannelCount']/*\"/>\t\n            <msdn-id>ee719769</msdn-id>\t\n            <unmanaged>HRESULT IWICPixelFormatInfo::GetChannelCount([Out] unsigned int* puiChannelCount)</unmanaged>\t\n            <unmanaged-short>IWICPixelFormatInfo::GetChannelCount</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.PixelFormatInfo.GetChannelMask(System.Int32,System.Int32,System.IntPtr,System.Int32@)\">\n            <summary>\t\n            <p>Gets the pixel format's channel mask.</p>\t\n            </summary>\t\n            <param name=\"channelIndex\"><dd>  <p>The index to the channel mask to retrieve.</p> </dd></param>\t\n            <param name=\"maskBuffer\"><dd>  <p>The size of the <em>pbMaskBuffer</em> buffer.</p> </dd></param>\t\n            <param name=\"maskBufferRef\"><dd>  <p>Pointer to the mask buffer.</p> </dd></param>\t\n            <param name=\"actualRef\"><dd>  <p>The actual buffer size needed to obtain the channel mask.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICPixelFormatInfo::GetChannelMask']/*\"/>\t\n            <msdn-id>ee719771</msdn-id>\t\n            <unmanaged>HRESULT IWICPixelFormatInfo::GetChannelMask([In] unsigned int uiChannelIndex,[In] unsigned int cbMaskBuffer,[In] void* pbMaskBuffer,[Out] unsigned int* pcbActual)</unmanaged>\t\n            <unmanaged-short>IWICPixelFormatInfo::GetChannelMask</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.PixelFormatInfo.GetChannelMask(System.Int32)\">\n            <summary>\n            Gets the channel mask.\n            </summary>\n            <param name=\"channelIndex\">Index of the channel.</param>\n            <returns></returns>\n            <unmanaged>HRESULT IWICPixelFormatInfo::GetChannelMask([In] unsigned int uiChannelIndex,[In] unsigned int cbMaskBuffer,[In] void* pbMaskBuffer,[Out] unsigned int* pcbActual)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.WIC.PixelFormatInfo.FormatGUID\">\n            <summary>\t\n            <p>Gets the pixel format <see cref=\"T:System.Guid\"/>.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICPixelFormatInfo::GetFormatGUID']/*\"/>\t\n            <msdn-id>ee719774</msdn-id>\t\n            <unmanaged>GetFormatGUID</unmanaged>\t\n            <unmanaged-short>GetFormatGUID</unmanaged-short>\t\n            <unmanaged>HRESULT IWICPixelFormatInfo::GetFormatGUID([Out] GUID* pFormat)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.WIC.PixelFormatInfo.ColorContext\">\n            <summary>\t\n            <p>Gets the pixel format's <strong><see cref=\"T:SharpDX.WIC.ColorContext\"/></strong>.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICPixelFormatInfo::GetColorContext']/*\"/>\t\n            <msdn-id>ee719773</msdn-id>\t\n            <unmanaged>GetColorContext</unmanaged>\t\n            <unmanaged-short>GetColorContext</unmanaged-short>\t\n            <unmanaged>HRESULT IWICPixelFormatInfo::GetColorContext([Out] IWICColorContext** ppIColorContext)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.WIC.PixelFormatInfo.BitsPerPixel\">\n            <summary>\t\n            <p>Gets the bits per pixel (BPP) of the pixel format.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICPixelFormatInfo::GetBitsPerPixel']/*\"/>\t\n            <msdn-id>ee719767</msdn-id>\t\n            <unmanaged>GetBitsPerPixel</unmanaged>\t\n            <unmanaged-short>GetBitsPerPixel</unmanaged-short>\t\n            <unmanaged>HRESULT IWICPixelFormatInfo::GetBitsPerPixel([Out] unsigned int* puiBitsPerPixel)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.WIC.PixelFormatInfo.ChannelCount\">\n            <summary>\t\n            <p>Gets the number of channels the pixel format contains.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICPixelFormatInfo::GetChannelCount']/*\"/>\t\n            <msdn-id>ee719769</msdn-id>\t\n            <unmanaged>GetChannelCount</unmanaged>\t\n            <unmanaged-short>GetChannelCount</unmanaged-short>\t\n            <unmanaged>HRESULT IWICPixelFormatInfo::GetChannelCount([Out] unsigned int* puiChannelCount)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.WIC.PixelFormatInfo2\">\n            <summary>\t\n            <p>Extends <strong><see cref=\"T:SharpDX.WIC.PixelFormatInfo\"/></strong> by providing additional information about a pixel format.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICPixelFormatInfo2']/*\"/>\t\n            <msdn-id>ee719764</msdn-id>\t\n            <unmanaged>IWICPixelFormatInfo2</unmanaged>\t\n            <unmanaged-short>IWICPixelFormatInfo2</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.PixelFormatInfo2.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.PixelFormatInfo2\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.PixelFormatInfo2.op_Explicit(System.IntPtr)~SharpDX.WIC.PixelFormatInfo2\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.WIC.PixelFormatInfo2\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.WIC.PixelFormatInfo2.IsSupportingTransparency_(SharpDX.Bool@)\">\n            <summary>\t\n            <p>Returns whether the format supports transparent pixels.</p>\t\n            </summary>\t\n            <param name=\"fSupportsTransparencyRef\"><dd>  <p>Returns <strong>TRUE</strong> if the pixel format supports transparency; otherwise, false.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICPixelFormatInfo2::SupportsTransparency']/*\"/>\t\n            <msdn-id>ee719766</msdn-id>\t\n            <unmanaged>HRESULT IWICPixelFormatInfo2::SupportsTransparency([Out] BOOL* pfSupportsTransparency)</unmanaged>\t\n            <unmanaged-short>IWICPixelFormatInfo2::SupportsTransparency</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.PixelFormatInfo2.GetNumericRepresentation(SharpDX.WIC.PixelFormatNumericRepresentation@)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"numericRepresentationRef\"><dd>  <p>Returns the <strong><see cref=\"T:SharpDX.WIC.PixelFormatNumericRepresentation\"/></strong> of the pixel format.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICPixelFormatInfo2::GetNumericRepresentation']/*\"/>\t\n            <msdn-id>ee719765</msdn-id>\t\n            <unmanaged>HRESULT IWICPixelFormatInfo2::GetNumericRepresentation([Out] WICPixelFormatNumericRepresentation* pNumericRepresentation)</unmanaged>\t\n            <unmanaged-short>IWICPixelFormatInfo2::GetNumericRepresentation</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.WIC.PixelFormatInfo2.IsSupportingTransparency\">\n            <summary>\t\n            <p>Returns whether the format supports transparent pixels.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICPixelFormatInfo2::SupportsTransparency']/*\"/>\t\n            <msdn-id>ee719766</msdn-id>\t\n            <unmanaged>SupportsTransparency</unmanaged>\t\n            <unmanaged-short>SupportsTransparency</unmanaged-short>\t\n            <unmanaged>HRESULT IWICPixelFormatInfo2::SupportsTransparency([Out] BOOL* pfSupportsTransparency)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.WIC.PixelFormatInfo2.NumericRepresentation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICPixelFormatInfo2::GetNumericRepresentation']/*\"/>\t\n            <msdn-id>ee719765</msdn-id>\t\n            <unmanaged>GetNumericRepresentation</unmanaged>\t\n            <unmanaged-short>GetNumericRepresentation</unmanaged-short>\t\n            <unmanaged>HRESULT IWICPixelFormatInfo2::GetNumericRepresentation([Out] WICPixelFormatNumericRepresentation* pNumericRepresentation)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.WIC.ProgressCallback\">\n            <summary>\t\n            <p><strong><see cref=\"T:SharpDX.WIC.ProgressCallback\"/></strong> interface is documented only for compliance; its use is not recommended and may be altered or unavailable in the future. Instead, and use <strong>RegisterProgressNotification</strong>. \t\n            </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICProgressCallback']/*\"/>\t\n            <msdn-id>ee719775</msdn-id>\t\n            <unmanaged>IWICProgressCallback</unmanaged>\t\n            <unmanaged-short>IWICProgressCallback</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.ProgressCallback.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.ProgressCallback\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.ProgressCallback.op_Explicit(System.IntPtr)~SharpDX.WIC.ProgressCallback\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.WIC.ProgressCallback\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.WIC.ProgressCallback.Notify(System.Int32,SharpDX.WIC.ProgressOperation,System.Double)\">\n            <summary>\t\n            <p><strong>Notify</strong> method is documented only for compliance; its use is not recommended and may be altered or unavailable in the future. Instead, and use <strong>RegisterProgressNotification</strong>. \t\n            </p>\t\n            </summary>\t\n            <param name=\"frameNum\">No documentation.</param>\t\n            <param name=\"operation\">No documentation.</param>\t\n            <param name=\"dblProgress\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICProgressCallback::Notify']/*\"/>\t\n            <msdn-id>ee719776</msdn-id>\t\n            <unmanaged>HRESULT IWICProgressCallback::Notify([In] unsigned int uFrameNum,[In] WICProgressOperation operation,[In] double dblProgress)</unmanaged>\t\n            <unmanaged-short>IWICProgressCallback::Notify</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.WIC.ProgressiveLevelControl\">\n            <summary>\t\n            <p>Exposes methods for obtaining information about and controlling progressive decoding.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Images can only be progressively decoded if they were progressively encoded. The native encoders supplied by Windows Imaging Component (WIC) do not </p><p>E_NOTIMPL is returned if the codec does not support progressive level decoding.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICProgressiveLevelControl']/*\"/>\t\n            <msdn-id>ee719778</msdn-id>\t\n            <unmanaged>IWICProgressiveLevelControl</unmanaged>\t\n            <unmanaged-short>IWICProgressiveLevelControl</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.ProgressiveLevelControl.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.ProgressiveLevelControl\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.ProgressiveLevelControl.op_Explicit(System.IntPtr)~SharpDX.WIC.ProgressiveLevelControl\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.WIC.ProgressiveLevelControl\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.WIC.ProgressiveLevelControl.GetLevelCount(System.Int32@)\">\n            <summary>\t\n            <p>Gets the number of levels of progressive decoding supported by the CODEC.</p>\t\n            </summary>\t\n            <param name=\"levelsRef\"><dd>  <p>Indicates the number of levels supported by the CODEC.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>Users should not use this function to iterate through the progressive levels of a progressive JPEG image. JPEG progressive levels are determined by the image and do not have a fixed level count. Using this method will force the application to wait for all progressive levels to be downloaded before it can return. Instead, applications should use the following code to iterate through the progressive levels of a progressive JPEG image.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICProgressiveLevelControl::GetLevelCount']/*\"/>\t\n            <msdn-id>ee719780</msdn-id>\t\n            <unmanaged>HRESULT IWICProgressiveLevelControl::GetLevelCount([Out] unsigned int* pcLevels)</unmanaged>\t\n            <unmanaged-short>IWICProgressiveLevelControl::GetLevelCount</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.ProgressiveLevelControl.GetCurrentLevel(System.Int32@)\">\n            <summary>\t\n            <p>Gets the last level set by the <strong>SetCurrentLevel</strong> call.</p>\t\n            </summary>\t\n            <param name=\"nLevelRef\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICProgressiveLevelControl::GetCurrentLevel']/*\"/>\t\n            <msdn-id>ee719779</msdn-id>\t\n            <unmanaged>HRESULT IWICProgressiveLevelControl::GetCurrentLevel([Out] unsigned int* pnLevel)</unmanaged>\t\n            <unmanaged-short>IWICProgressiveLevelControl::GetCurrentLevel</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.ProgressiveLevelControl.SetCurrentLevel(System.Int32)\">\n            <summary>\t\n            <p>Specifies the level to retrieve on the next call to <strong>CopyPixels</strong>.</p>\t\n            </summary>\t\n            <param name=\"nLevel\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p> A call does not have to request every level supported. If a caller requests level 1, without having previously requested level 0, the bits returned by the next call to <strong>CopyPixels</strong> will include both levels. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICProgressiveLevelControl::SetCurrentLevel']/*\"/>\t\n            <msdn-id>ee719781</msdn-id>\t\n            <unmanaged>HRESULT IWICProgressiveLevelControl::SetCurrentLevel([In] unsigned int nLevel)</unmanaged>\t\n            <unmanaged-short>IWICProgressiveLevelControl::SetCurrentLevel</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.WIC.ProgressiveLevelControl.LevelCount\">\n            <summary>\t\n            <p>Gets the number of levels of progressive decoding supported by the CODEC.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Users should not use this function to iterate through the progressive levels of a progressive JPEG image. JPEG progressive levels are determined by the image and do not have a fixed level count. Using this method will force the application to wait for all progressive levels to be downloaded before it can return. Instead, applications should use the following code to iterate through the progressive levels of a progressive JPEG image.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICProgressiveLevelControl::GetLevelCount']/*\"/>\t\n            <msdn-id>ee719780</msdn-id>\t\n            <unmanaged>GetLevelCount</unmanaged>\t\n            <unmanaged-short>GetLevelCount</unmanaged-short>\t\n            <unmanaged>HRESULT IWICProgressiveLevelControl::GetLevelCount([Out] unsigned int* pcLevels)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.WIC.ProgressiveLevelControl.CurrentLevel\">\n            <summary>\t\n            <p>Gets or sets the last level set by the <strong>SetCurrentLevel</strong> call.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICProgressiveLevelControl::GetCurrentLevel']/*\"/>\t\n            <msdn-id>ee719779</msdn-id>\t\n            <unmanaged>GetCurrentLevel / SetCurrentLevel</unmanaged>\t\n            <unmanaged-short>GetCurrentLevel</unmanaged-short>\t\n            <unmanaged>HRESULT IWICProgressiveLevelControl::GetCurrentLevel([Out] unsigned int* pnLevel)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.WIC.WICStream\">\n            <summary>\t\n            <p>Represents a Windows Imaging Component (WIC) stream for referencing imaging and metadata content.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Decoders and metadata handlers are expected to create sub streams of whatever stream they hold when handing off control for embedded metadata to another metadata handler.  If the stream is not restricted then use MAXLONGLONG as the max size and offset 0.</p><p> The <strong><see cref=\"T:SharpDX.WIC.WICStream\"/></strong> interface methods do not enable you to provide a file sharing option. To create a file stream for an image, use the SHCreateStreamOnFileEx function. This stream can then be used to create an <strong><see cref=\"T:SharpDX.WIC.BitmapDecoder\"/></strong> using the <strong>CreateDecoderFromStream</strong> method. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICStream']/*\"/>\t\n            <msdn-id>ee719782</msdn-id>\t\n            <unmanaged>IWICStream</unmanaged>\t\n            <unmanaged-short>IWICStream</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.WICStream.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.WICStream\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.WICStream.op_Explicit(System.IntPtr)~SharpDX.WIC.WICStream\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.WIC.WICStream\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.WIC.WICStream.InitializeFromIStream_(System.IntPtr)\">\n            <summary>\t\n            <p>Initializes a stream from another stream. Access rights are inherited from the underlying stream.</p>\t\n            </summary>\t\n            <param name=\"streamRef\"><dd>  <p>The initialize stream.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICStream::InitializeFromIStream']/*\"/>\t\n            <msdn-id>ee719789</msdn-id>\t\n            <unmanaged>HRESULT IWICStream::InitializeFromIStream([In, Optional] IStream* pIStream)</unmanaged>\t\n            <unmanaged-short>IWICStream::InitializeFromIStream</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.WICStream.InitializeFromFilename(System.String,System.Int32)\">\n            <summary>\t\n            <p>Initializes a stream from a particular file.</p>\t\n            </summary>\t\n            <param name=\"fileName\"><dd>  <p>The file used to initialize the stream.</p> </dd></param>\t\n            <param name=\"desiredAccess\"><dd>  <p>The desired file access mode.</p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td><dl> <dt><strong>GENERIC_READ</strong></dt> </dl> </td><td> <p>Read access.</p> </td></tr> <tr><td><dl> <dt><strong>GENERIC_WRITE</strong></dt> </dl> </td><td> <p>Write access.</p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p> The <strong><see cref=\"T:SharpDX.WIC.WICStream\"/></strong> interface methods do not enable you to provide a file sharing option. To create a shared file stream for an image, use the SHCreateStreamOnFileEx function. This stream can then be used to create an <strong><see cref=\"T:SharpDX.WIC.BitmapDecoder\"/></strong> using the <strong>CreateDecoderFromStream</strong> method. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICStream::InitializeFromFilename']/*\"/>\t\n            <msdn-id>ee719788</msdn-id>\t\n            <unmanaged>HRESULT IWICStream::InitializeFromFilename([In] const wchar_t* wzFileName,[In] unsigned int dwDesiredAccess)</unmanaged>\t\n            <unmanaged-short>IWICStream::InitializeFromFilename</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.WICStream.InitializeFromMemory(System.IntPtr,System.Int32)\">\n            <summary>\t\n            <p>Initializes a stream to treat a block of memory as a stream. The stream cannot grow beyond the buffer size. </p>\t\n            </summary>\t\n            <param name=\"bufferRef\"><dd>  <p>Pointer to the buffer used to initialize the stream.</p> </dd></param>\t\n            <param name=\"bufferSize\"><dd>  <p>The size of buffer.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>This method should be avoided whenever possible. The caller is responsible for ensuring the memory block is valid for the lifetime of the stream when using <strong>InitializeFromMemory</strong>.  A workaround for this behavior is to create an <strong><see cref=\"T:SharpDX.Win32.IStream\"/></strong> and use <strong>InitializeFromIStream</strong> to create the <strong><see cref=\"T:SharpDX.WIC.WICStream\"/></strong>.</p><p>If you require a growable memory stream, use <strong>CreateStreamOnHGlobal</strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICStream::InitializeFromMemory']/*\"/>\t\n            <msdn-id>ee719792</msdn-id>\t\n            <unmanaged>HRESULT IWICStream::InitializeFromMemory([In] void* pbBuffer,[In] unsigned int cbBufferSize)</unmanaged>\t\n            <unmanaged-short>IWICStream::InitializeFromMemory</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.WICStream.InitializeFromIStreamRegion_(System.IntPtr,System.Int64,System.Int64)\">\n            <summary>\t\n            <p>Initializes the stream as a substream of another stream.</p>\t\n            </summary>\t\n            <param name=\"streamRef\"><dd>  <p>Pointer to the input stream.</p> </dd></param>\t\n            <param name=\"ulOffset\"><dd>  <p>The stream offset used to create the new stream.</p> </dd></param>\t\n            <param name=\"ulMaxSize\"><dd>  <p>The maximum size of the stream.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>The stream functions with its own stream position, independent of the underlying stream but restricted to a region.  All seek positions are relative to the sub region.  It is allowed, though not recommended, to have multiple writable sub streams overlapping the same range.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IWICStream::InitializeFromIStreamRegion']/*\"/>\t\n            <msdn-id>ee719790</msdn-id>\t\n            <unmanaged>HRESULT IWICStream::InitializeFromIStreamRegion([In, Optional] IStream* pIStream,[In] ULARGE_INTEGER ulOffset,[In] ULARGE_INTEGER ulMaxSize)</unmanaged>\t\n            <unmanaged-short>IWICStream::InitializeFromIStreamRegion</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.WICStream.#ctor(SharpDX.WIC.ImagingFactory,System.String,SharpDX.IO.NativeFileAccess)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.WICStream\"/> class from a file.\n            </summary>\n            <param name=\"factory\">The factory.</param>\n            <param name=\"fileName\">Name of the file.</param>\n            <param name=\"fileAccess\">The file access.</param>\n            <msdn-id>ee690325</msdn-id>\t\n            <unmanaged>HRESULT IWICImagingFactory::CreateStream([Out, Fast] IWICStream** ppIWICStream)</unmanaged>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.WICStream.#ctor(SharpDX.WIC.ImagingFactory,System.IO.Stream)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.WICStream\"/> class from a <see cref=\"T:SharpDX.Win32.IStream\"/>.\n            </summary>\n            <param name=\"factory\">The factory.</param>\n            <param name=\"stream\">The stream.</param>\n            <msdn-id>ee719789</msdn-id>\t\n            <unmanaged>HRESULT IWICStream::InitializeFromIStream([In, Optional] IStream* pIStream)</unmanaged>\t\n            <unmanaged-short>IWICStream::InitializeFromIStream</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.WIC.WICStream.#ctor(SharpDX.WIC.ImagingFactory,SharpDX.DataPointer)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.WICStream\"/> class from an unmanaged memory through a <see cref=\"T:SharpDX.DataStream\"/>.\n            </summary>\n            <param name=\"factory\">The factory.</param>\n            <param name=\"dataStream\">The unmanaged memory stream.</param>\n            <msdn-id>ee719792</msdn-id>\t\n            <unmanaged>HRESULT IWICStream::InitializeFromMemory([In] void* pbBuffer,[In] unsigned int cbBufferSize)</unmanaged>\t\n            <unmanaged-short>IWICStream::InitializeFromMemory</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.WIC.BitmapPattern\">\n            <summary>\t\n            <p>Contains members that identify a pattern within an image file which can be used to identify a particular format.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICBitmapPattern']/*\"/>\t\n            <msdn-id>ee719813</msdn-id>\t\n            <unmanaged>WICBitmapPattern</unmanaged>\t\n            <unmanaged-short>WICBitmapPattern</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.BitmapPattern.Position\">\n            <summary>\t\n            <dd> <p>The offset the pattern is located in the file.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICBitmapPattern::Position']/*\"/>\t\n            <msdn-id>ee719813</msdn-id>\t\n            <unmanaged>ULARGE_INTEGER Position</unmanaged>\t\n            <unmanaged-short>ULARGE_INTEGER Position</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.BitmapPattern.Length\">\n            <summary>\t\n            <dd> <p>The pattern length.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICBitmapPattern::Length']/*\"/>\t\n            <msdn-id>ee719813</msdn-id>\t\n            <unmanaged>unsigned int Length</unmanaged>\t\n            <unmanaged-short>unsigned int Length</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.BitmapPattern.Pattern\">\n            <summary>\t\n            <dd> <p>The actual pattern.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICBitmapPattern::Pattern']/*\"/>\t\n            <msdn-id>ee719813</msdn-id>\t\n            <unmanaged>unsigned char* Pattern</unmanaged>\t\n            <unmanaged-short>unsigned char Pattern</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.BitmapPattern.Mask\">\n            <summary>\t\n            <dd> <p>The pattern mask.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICBitmapPattern::Mask']/*\"/>\t\n            <msdn-id>ee719813</msdn-id>\t\n            <unmanaged>unsigned char* Mask</unmanaged>\t\n            <unmanaged-short>unsigned char Mask</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.BitmapPattern.EndOfStream\">\n            <summary>\t\n            <dd> <p>The end of the stream.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICBitmapPattern::EndOfStream']/*\"/>\t\n            <msdn-id>ee719813</msdn-id>\t\n            <unmanaged>BOOL EndOfStream</unmanaged>\t\n            <unmanaged-short>BOOL EndOfStream</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.WIC.RawCapabilitiesInfo\">\n            <summary>\t\n            <p>Defines raw codec capabilites.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICRawCapabilitiesInfo']/*\"/>\t\n            <msdn-id>ee719857</msdn-id>\t\n            <unmanaged>WICRawCapabilitiesInfo</unmanaged>\t\n            <unmanaged-short>WICRawCapabilitiesInfo</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.RawCapabilitiesInfo.CbSize\">\n            <summary>\t\n            <dd> <p>Size of the <strong><see cref=\"T:SharpDX.WIC.RawCapabilitiesInfo\"/></strong> structure.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICRawCapabilitiesInfo::cbSize']/*\"/>\t\n            <msdn-id>ee719857</msdn-id>\t\n            <unmanaged>unsigned int cbSize</unmanaged>\t\n            <unmanaged-short>unsigned int cbSize</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.RawCapabilitiesInfo.CodecMajorVersion\">\n            <summary>\t\n            <dd> <p>The codec's major version.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICRawCapabilitiesInfo::CodecMajorVersion']/*\"/>\t\n            <msdn-id>ee719857</msdn-id>\t\n            <unmanaged>unsigned int CodecMajorVersion</unmanaged>\t\n            <unmanaged-short>unsigned int CodecMajorVersion</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.RawCapabilitiesInfo.CodecMinorVersion\">\n            <summary>\t\n            <dd> <p>The codec's minor version.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICRawCapabilitiesInfo::CodecMinorVersion']/*\"/>\t\n            <msdn-id>ee719857</msdn-id>\t\n            <unmanaged>unsigned int CodecMinorVersion</unmanaged>\t\n            <unmanaged-short>unsigned int CodecMinorVersion</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.RawCapabilitiesInfo.ExposureCompensationSupport\">\n            <summary>\t\n            <dd> <p>The <strong><see cref=\"T:SharpDX.WIC.RawCapabilities\"/></strong> of exposure compensation support.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICRawCapabilitiesInfo::ExposureCompensationSupport']/*\"/>\t\n            <msdn-id>ee719857</msdn-id>\t\n            <unmanaged>WICRawCapabilities ExposureCompensationSupport</unmanaged>\t\n            <unmanaged-short>WICRawCapabilities ExposureCompensationSupport</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.RawCapabilitiesInfo.ContrastSupport\">\n            <summary>\t\n            <dd> <p>The <strong><see cref=\"T:SharpDX.WIC.RawCapabilities\"/></strong> of contrast support.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICRawCapabilitiesInfo::ContrastSupport']/*\"/>\t\n            <msdn-id>ee719857</msdn-id>\t\n            <unmanaged>WICRawCapabilities ContrastSupport</unmanaged>\t\n            <unmanaged-short>WICRawCapabilities ContrastSupport</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.RawCapabilitiesInfo.RGBWhitePointSupport\">\n            <summary>\t\n            <dd> <p>The <strong><see cref=\"T:SharpDX.WIC.RawCapabilities\"/></strong> of RGB white point support.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICRawCapabilitiesInfo::RGBWhitePointSupport']/*\"/>\t\n            <msdn-id>ee719857</msdn-id>\t\n            <unmanaged>WICRawCapabilities RGBWhitePointSupport</unmanaged>\t\n            <unmanaged-short>WICRawCapabilities RGBWhitePointSupport</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.RawCapabilitiesInfo.NamedWhitePointSupport\">\n            <summary>\t\n            <dd> <p>The <strong><see cref=\"T:SharpDX.WIC.RawCapabilities\"/></strong> of <strong><see cref=\"T:SharpDX.WIC.NamedWhitePoint\"/></strong> support.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICRawCapabilitiesInfo::NamedWhitePointSupport']/*\"/>\t\n            <msdn-id>ee719857</msdn-id>\t\n            <unmanaged>WICRawCapabilities NamedWhitePointSupport</unmanaged>\t\n            <unmanaged-short>WICRawCapabilities NamedWhitePointSupport</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.RawCapabilitiesInfo.NamedWhitePointSupportMask\">\n            <summary>\t\n            <dd> <p>The <strong><see cref=\"T:SharpDX.WIC.NamedWhitePoint\"/></strong> mask.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICRawCapabilitiesInfo::NamedWhitePointSupportMask']/*\"/>\t\n            <msdn-id>ee719857</msdn-id>\t\n            <unmanaged>unsigned int NamedWhitePointSupportMask</unmanaged>\t\n            <unmanaged-short>unsigned int NamedWhitePointSupportMask</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.RawCapabilitiesInfo.KelvinWhitePointSupport\">\n            <summary>\t\n            <dd> <p>The <strong><see cref=\"T:SharpDX.WIC.RawCapabilities\"/></strong> of kelvin white point support.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICRawCapabilitiesInfo::KelvinWhitePointSupport']/*\"/>\t\n            <msdn-id>ee719857</msdn-id>\t\n            <unmanaged>WICRawCapabilities KelvinWhitePointSupport</unmanaged>\t\n            <unmanaged-short>WICRawCapabilities KelvinWhitePointSupport</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.RawCapabilitiesInfo.GammaSupport\">\n            <summary>\t\n            <dd> <p>The <strong><see cref=\"T:SharpDX.WIC.RawCapabilities\"/></strong> of gamma support.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICRawCapabilitiesInfo::GammaSupport']/*\"/>\t\n            <msdn-id>ee719857</msdn-id>\t\n            <unmanaged>WICRawCapabilities GammaSupport</unmanaged>\t\n            <unmanaged-short>WICRawCapabilities GammaSupport</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.RawCapabilitiesInfo.TintSupport\">\n            <summary>\t\n            <dd> <p>The <strong><see cref=\"T:SharpDX.WIC.RawCapabilities\"/></strong> of tint support.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICRawCapabilitiesInfo::TintSupport']/*\"/>\t\n            <msdn-id>ee719857</msdn-id>\t\n            <unmanaged>WICRawCapabilities TintSupport</unmanaged>\t\n            <unmanaged-short>WICRawCapabilities TintSupport</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.RawCapabilitiesInfo.SaturationSupport\">\n            <summary>\t\n            <dd> <p>The <strong><see cref=\"T:SharpDX.WIC.RawCapabilities\"/></strong> of saturation support.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICRawCapabilitiesInfo::SaturationSupport']/*\"/>\t\n            <msdn-id>ee719857</msdn-id>\t\n            <unmanaged>WICRawCapabilities SaturationSupport</unmanaged>\t\n            <unmanaged-short>WICRawCapabilities SaturationSupport</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.RawCapabilitiesInfo.SharpnessSupport\">\n            <summary>\t\n            <dd> <p>The <strong><see cref=\"T:SharpDX.WIC.RawCapabilities\"/></strong> of sharpness support.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICRawCapabilitiesInfo::SharpnessSupport']/*\"/>\t\n            <msdn-id>ee719857</msdn-id>\t\n            <unmanaged>WICRawCapabilities SharpnessSupport</unmanaged>\t\n            <unmanaged-short>WICRawCapabilities SharpnessSupport</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.RawCapabilitiesInfo.NoiseReductionSupport\">\n            <summary>\t\n            <dd> <p>The <strong><see cref=\"T:SharpDX.WIC.RawCapabilities\"/></strong> of noise reduction support.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICRawCapabilitiesInfo::NoiseReductionSupport']/*\"/>\t\n            <msdn-id>ee719857</msdn-id>\t\n            <unmanaged>WICRawCapabilities NoiseReductionSupport</unmanaged>\t\n            <unmanaged-short>WICRawCapabilities NoiseReductionSupport</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.RawCapabilitiesInfo.DestinationColorProfileSupport\">\n            <summary>\t\n            <dd> <p>The <strong><see cref=\"T:SharpDX.WIC.RawCapabilities\"/></strong> of destination color profile support.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICRawCapabilitiesInfo::DestinationColorProfileSupport']/*\"/>\t\n            <msdn-id>ee719857</msdn-id>\t\n            <unmanaged>WICRawCapabilities DestinationColorProfileSupport</unmanaged>\t\n            <unmanaged-short>WICRawCapabilities DestinationColorProfileSupport</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.RawCapabilitiesInfo.ToneCurveSupport\">\n            <summary>\t\n            <dd> <p>The <strong><see cref=\"T:SharpDX.WIC.RawCapabilities\"/></strong> of tone curve support.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICRawCapabilitiesInfo::ToneCurveSupport']/*\"/>\t\n            <msdn-id>ee719857</msdn-id>\t\n            <unmanaged>WICRawCapabilities ToneCurveSupport</unmanaged>\t\n            <unmanaged-short>WICRawCapabilities ToneCurveSupport</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.RawCapabilitiesInfo.RotationSupport\">\n            <summary>\t\n            <dd> <p>The <strong><see cref=\"T:SharpDX.WIC.RawRotationCapabilities\"/></strong> of rotation support.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICRawCapabilitiesInfo::RotationSupport']/*\"/>\t\n            <msdn-id>ee719857</msdn-id>\t\n            <unmanaged>WICRawRotationCapabilities RotationSupport</unmanaged>\t\n            <unmanaged-short>WICRawRotationCapabilities RotationSupport</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.RawCapabilitiesInfo.RenderModeSupport\">\n            <summary>\t\n            <dd> <p>The <strong><see cref=\"T:SharpDX.WIC.RawCapabilities\"/></strong> of <strong><see cref=\"T:SharpDX.WIC.RawRenderMode\"/></strong> support.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICRawCapabilitiesInfo::RenderModeSupport']/*\"/>\t\n            <msdn-id>ee719857</msdn-id>\t\n            <unmanaged>WICRawCapabilities RenderModeSupport</unmanaged>\t\n            <unmanaged-short>WICRawCapabilities RenderModeSupport</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.WIC.RawToneCurve\">\n            <summary>\t\n            <p>Represents a raw image tone curve.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICRawToneCurve']/*\"/>\t\n            <msdn-id>ee719861</msdn-id>\t\n            <unmanaged>WICRawToneCurve</unmanaged>\t\n            <unmanaged-short>WICRawToneCurve</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.RawToneCurve.CPoints\">\n            <summary>\t\n            <dd> <p>The number of tone curve points.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICRawToneCurve::cPoints']/*\"/>\t\n            <msdn-id>ee719861</msdn-id>\t\n            <unmanaged>unsigned int cPoints</unmanaged>\t\n            <unmanaged-short>unsigned int cPoints</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.WIC.RawToneCurve.APoints\">\n            <summary>\t\n            <dd> <p>The array of tone curve points.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICRawToneCurve::aPoints']/*\"/>\t\n            <msdn-id>ee719861</msdn-id>\t\n            <unmanaged>WICRawToneCurvePoint aPoints[1]</unmanaged>\t\n            <unmanaged-short>WICRawToneCurvePoint aPoints</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.WIC.RawToneCurvePoint\">\n            <summary>\t\n            <p>Represents a raw image tone curve point.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICRawToneCurvePoint']/*\"/>\t\n            <msdn-id>ee719862</msdn-id>\t\n            <unmanaged>WICRawToneCurvePoint</unmanaged>\t\n            <unmanaged-short>WICRawToneCurvePoint</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.RawToneCurvePoint.Input\">\n            <summary>\t\n            <dd> <p>The tone curve input.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICRawToneCurvePoint::Input']/*\"/>\t\n            <msdn-id>ee719862</msdn-id>\t\n            <unmanaged>double Input</unmanaged>\t\n            <unmanaged-short>double Input</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.WIC.RawToneCurvePoint.Output\">\n            <summary>\t\n            <dd> <p>The tone curve output.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WICRawToneCurvePoint::Output']/*\"/>\t\n            <msdn-id>ee719862</msdn-id>\t\n            <unmanaged>double Output</unmanaged>\t\n            <unmanaged-short>double Output</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.ModuleInit\">\n            <summary>\n            Internal class used to initialize this assembly.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.ModuleInit.Setup\">\n            <summary>\n            Initializes this assembly.\n            </summary>\n            <remarks>\n            This method is called when the assembly is loaded.\n            </remarks>\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.WicRenderTarget\">\n            <summary>\n            A Wic RenderTarget.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.RenderTarget\">\n            <summary>\t\n            <p>Represents an object that can receive drawing commands. Interfaces that inherit from <strong><see cref=\"T:SharpDX.Direct2D1.RenderTarget\"/></strong> render the drawing commands they receive in different ways. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Your application should create render targets once and hold onto them for the life of the application or until the render target's  <strong>EndDraw</strong> method returns the <strong><see cref=\"F:SharpDX.Direct2D1.ResultCode.RecreateTarget\"/></strong> error. When you receive this error, you need to recreate the render target (and any resources it created). </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1RenderTarget']/*\"/>\t\n            <msdn-id>dd371766</msdn-id>\t\n            <unmanaged>ID2D1RenderTarget</unmanaged>\t\n            <unmanaged-short>ID2D1RenderTarget</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.Resource\">\n            <summary>\t\n            <p>Represents a Direct2D drawing resource.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1Resource']/*\"/>\t\n            <msdn-id>dd316908</msdn-id>\t\n            <unmanaged>ID2D1Resource</unmanaged>\t\n            <unmanaged-short>ID2D1Resource</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Resource.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct2D1.Resource\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Resource.op_Explicit(System.IntPtr)~SharpDX.Direct2D1.Resource\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct2D1.Resource\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Resource.GetFactory(SharpDX.Direct2D1.Factory@)\">\n            <summary>\t\n            <p>Retrieves the factory associated with this resource.</p>\t\n            </summary>\t\n            <param name=\"factory\"><dd>  <p>When this method returns, contains a reference to a reference to the factory that created this resource. This parameter is passed uninitialized.</p> </dd></param>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1Resource::GetFactory']/*\"/>\t\n            <msdn-id>dd316911</msdn-id>\t\n            <unmanaged>void ID2D1Resource::GetFactory([Out] ID2D1Factory** factory)</unmanaged>\t\n            <unmanaged-short>ID2D1Resource::GetFactory</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct2D1.Resource.Factory\">\n            <summary>\t\n            <p>Retrieves the factory associated with this resource.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1Resource::GetFactory']/*\"/>\t\n            <msdn-id>dd316911</msdn-id>\t\n            <unmanaged>GetFactory</unmanaged>\t\n            <unmanaged-short>GetFactory</unmanaged-short>\t\n            <unmanaged>void ID2D1Resource::GetFactory([Out] ID2D1Factory** factory)</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.RenderTarget.DefaultStrokeWidth\">\n            <summary>\n            Default stroke width used for all methods that are not explicitly using it. Default is set to 1.0f.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RenderTarget.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct2D1.RenderTarget\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RenderTarget.op_Explicit(System.IntPtr)~SharpDX.Direct2D1.RenderTarget\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct2D1.RenderTarget\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RenderTarget.CreateBitmap(SharpDX.DrawingSize,System.IntPtr,System.Int32,SharpDX.Direct2D1.BitmapProperties,SharpDX.Direct2D1.Bitmap)\">\n            <summary>\t\n            <p>Creates a Direct2D bitmap from a reference to in-memory source data.</p>\t\n            </summary>\t\n            <param name=\"size\"><dd>  <p>The dimension of the bitmap to create in pixels.</p> </dd></param>\t\n            <param name=\"srcData\"><dd>  <p>A reference to the memory location of the image data, or <strong><c>null</c></strong> to create an uninitialized bitmap.</p> </dd></param>\t\n            <param name=\"pitch\"><dd>  <p>The byte count of each scanline, which is equal to (the image width in pixels ? the number of bytes per pixel) + memory padding. If <em>srcData</em> is <strong><c>null</c></strong>, this value is ignored. (Note that pitch is also sometimes called <em>stride</em>.)</p> </dd></param>\t\n            <param name=\"bitmapProperties\"><dd>  <p>The pixel format and dots per inch (DPI) of the bitmap to create.</p> </dd></param>\t\n            <param name=\"bitmap\"><dd>  <p>When this method returns, contains a reference to a reference to the new bitmap. This parameter is passed uninitialized.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1RenderTarget::CreateBitmap']/*\"/>\t\n            <msdn-id>dd371800</msdn-id>\t\n            <unmanaged>HRESULT ID2D1RenderTarget::CreateBitmap([In] D2D_SIZE_U size,[In, Optional] const void* srcData,[In] unsigned int pitch,[In] const D2D1_BITMAP_PROPERTIES* bitmapProperties,[Out, Fast] ID2D1Bitmap** bitmap)</unmanaged>\t\n            <unmanaged-short>ID2D1RenderTarget::CreateBitmap</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RenderTarget.CreateBitmapFromWicBitmap(SharpDX.WIC.BitmapSource,System.Nullable{SharpDX.Direct2D1.BitmapProperties},SharpDX.Direct2D1.Bitmap@)\">\n            <summary>\t\n            <p>Creates an <strong><see cref=\"T:SharpDX.Direct2D1.Bitmap\"/></strong> by copying the specified Microsoft Windows Imaging Component (WIC)   bitmap.</p>\t\n            </summary>\t\n            <param name=\"wicBitmapSource\">No documentation.</param>\t\n            <param name=\"bitmapProperties\">No documentation.</param>\t\n            <param name=\"bitmap\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>Before Direct2D can load a WIC bitmap, that bitmap must be converted to a supported pixel format and alpha mode. For a list of supported pixel formats and alpha modes, see Supported Pixel Formats and Alpha Modes. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1RenderTarget::CreateBitmapFromWicBitmap']/*\"/>\t\n            <msdn-id>dd371797</msdn-id>\t\n            <unmanaged>HRESULT ID2D1RenderTarget::CreateBitmapFromWicBitmap([In] IWICBitmapSource* wicBitmapSource,[In, Optional] const D2D1_BITMAP_PROPERTIES* bitmapProperties,[Out] ID2D1Bitmap** bitmap)</unmanaged>\t\n            <unmanaged-short>ID2D1RenderTarget::CreateBitmapFromWicBitmap</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RenderTarget.CreateSharedBitmap(System.Guid,System.IntPtr,System.Nullable{SharpDX.Direct2D1.BitmapProperties},SharpDX.Direct2D1.Bitmap)\">\n            <summary>\t\n            <p>Creates an <strong><see cref=\"T:SharpDX.Direct2D1.Bitmap\"/></strong> whose data is shared with another resource.</p>\t\n            </summary>\t\n            <param name=\"riid\">No documentation.</param>\t\n            <param name=\"data\">No documentation.</param>\t\n            <param name=\"bitmapProperties\">No documentation.</param>\t\n            <param name=\"bitmap\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>The <strong>CreateSharedBitmap</strong> method is useful for efficiently reusing bitmap data and can also be used to provide interoperability with Direct3D. </p>Sharing an <see cref=\"T:SharpDX.Direct2D1.Bitmap\"/><p>By passing an <strong><see cref=\"T:SharpDX.Direct2D1.Bitmap\"/></strong> created by a render target that is resource-compatible, you can share a bitmap with that render target; both the original <strong><see cref=\"T:SharpDX.Direct2D1.Bitmap\"/></strong> and the new <strong><see cref=\"T:SharpDX.Direct2D1.Bitmap\"/></strong> created by this method will point to the same bitmap data. For more information about when render target resources can be shared, see the Sharing Render Target Resources section of the Resources Overview.</p><p>You may also use this method to reinterpret the data of an existing bitmap and specify a new DPI or alpha mode. For example, in the case of a bitmap atlas, an <strong><see cref=\"T:SharpDX.Direct2D1.Bitmap\"/></strong> may contain multiple sub-images, each of which should be rendered with a different <strong><see cref=\"T:SharpDX.Direct2D1.AlphaMode\"/></strong> (<strong><see cref=\"F:SharpDX.Direct2D1.AlphaMode.Premultiplied\"/></strong> or <strong><see cref=\"F:SharpDX.Direct2D1.AlphaMode.Ignore\"/></strong>). You could use the <strong>CreateSharedBitmap</strong> method to reinterpret the bitmap using the desired alpha mode  without having to load a separate copy of the bitmap into memory.</p>Sharing an <see cref=\"T:SharpDX.DXGI.Surface\"/><p>When using a DXGI surface render target (an <strong><see cref=\"T:SharpDX.Direct2D1.RenderTarget\"/></strong> object created by the <strong>CreateDxgiSurfaceRenderTarget</strong> method), you can pass an  <see cref=\"T:SharpDX.DXGI.Surface\"/> surface to the <strong>CreateSharedBitmap</strong> method to share video memory with Direct3D and manipulate Direct3D content as an <strong><see cref=\"T:SharpDX.Direct2D1.Bitmap\"/></strong>. As described in  the Resources Overview, the render target and the <see cref=\"T:SharpDX.DXGI.Surface\"/> must be using the same Direct3D device. </p><p>Note also that the <see cref=\"T:SharpDX.DXGI.Surface\"/> must use one of the supported pixel formats and alpha modes described in Supported Pixel Formats and Alpha Modes.</p><p>For more information about interoperability with Direct3D, see the Direct2D and Direct3D Interoperability Overview.</p>Sharing an <see cref=\"T:SharpDX.WIC.BitmapLock\"/><p>An <strong><see cref=\"T:SharpDX.WIC.BitmapLock\"/></strong> stores the content of a WIC bitmap and shields it from simultaneous accesses. By passing an <strong><see cref=\"T:SharpDX.WIC.BitmapLock\"/></strong> to the <strong>CreateSharedBitmap</strong> method, you can create an <strong><see cref=\"T:SharpDX.Direct2D1.Bitmap\"/></strong> that points to the bitmap data already stored in the  <strong><see cref=\"T:SharpDX.WIC.BitmapLock\"/></strong>. </p><p>To use an <strong><see cref=\"T:SharpDX.WIC.BitmapLock\"/></strong> with the <strong>CreateSharedBitmap</strong> method, the render target must use software rendering. To force a render target to use software rendering, set to <strong><see cref=\"F:SharpDX.Direct2D1.RenderTargetType.Software\"/></strong> the <strong>type</strong> field of the  <strong><see cref=\"T:SharpDX.Direct2D1.RenderTargetProperties\"/></strong> structure that you use to create the render target. To check whether an existing render target uses software rendering, use the <strong>IsSupported</strong> method.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1RenderTarget::CreateSharedBitmap']/*\"/>\t\n            <msdn-id>dd371865</msdn-id>\t\n            <unmanaged>HRESULT ID2D1RenderTarget::CreateSharedBitmap([In] const GUID&amp; riid,[In] void* data,[In, Optional] const D2D1_BITMAP_PROPERTIES* bitmapProperties,[Out, Fast] ID2D1Bitmap** bitmap)</unmanaged>\t\n            <unmanaged-short>ID2D1RenderTarget::CreateSharedBitmap</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RenderTarget.CreateBitmapBrush(SharpDX.Direct2D1.Bitmap,System.Nullable{SharpDX.Direct2D1.BitmapBrushProperties},System.Nullable{SharpDX.Direct2D1.BrushProperties},SharpDX.Direct2D1.BitmapBrush)\">\n            <summary>\t\n            Creates an <strong><see cref=\"T:SharpDX.Direct2D1.BitmapBrush\"/></strong> from the specified bitmap.Overload list\t\n            </summary>\t\n            <param name=\"bitmap\">No documentation.</param>\t\n            <param name=\"bitmapBrushProperties\">No documentation.</param>\t\n            <param name=\"brushProperties\">No documentation.</param>\t\n            <param name=\"bitmapBrush\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1RenderTarget::CreateBitmapBrush']/*\"/>\t\n            <msdn-id>dd742778</msdn-id>\t\n            <unmanaged>HRESULT ID2D1RenderTarget::CreateBitmapBrush([In] ID2D1Bitmap* bitmap,[In, Optional] const D2D1_BITMAP_BRUSH_PROPERTIES* bitmapBrushProperties,[In, Optional] const D2D1_BRUSH_PROPERTIES* brushProperties,[Out, Fast] ID2D1BitmapBrush** bitmapBrush)</unmanaged>\t\n            <unmanaged-short>ID2D1RenderTarget::CreateBitmapBrush</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RenderTarget.CreateSolidColorBrush(SharpDX.Color4,System.Nullable{SharpDX.Direct2D1.BrushProperties},SharpDX.Direct2D1.SolidColorBrush)\">\n            <summary>\t\n            Creates a new <strong><see cref=\"T:SharpDX.Direct2D1.SolidColorBrush\"/></strong> that can be used to paint areas with a solid color.Overload list\t\n            </summary>\t\n            <param name=\"color\">No documentation.</param>\t\n            <param name=\"brushProperties\">No documentation.</param>\t\n            <param name=\"solidColorBrush\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1RenderTarget::CreateSolidColorBrush']/*\"/>\t\n            <msdn-id>dd742843</msdn-id>\t\n            <unmanaged>HRESULT ID2D1RenderTarget::CreateSolidColorBrush([In] const D2D_COLOR_F* color,[In, Optional] const D2D1_BRUSH_PROPERTIES* brushProperties,[Out, Fast] ID2D1SolidColorBrush** solidColorBrush)</unmanaged>\t\n            <unmanaged-short>ID2D1RenderTarget::CreateSolidColorBrush</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RenderTarget.CreateGradientStopCollection(SharpDX.Direct2D1.GradientStop[],System.Int32,SharpDX.Direct2D1.Gamma,SharpDX.Direct2D1.ExtendMode,SharpDX.Direct2D1.GradientStopCollection)\">\n            <summary>\t\n            <p>Creates an <strong><see cref=\"T:SharpDX.Direct2D1.GradientStopCollection\"/></strong> from the specified gradient stops, color interpolation gamma, and extend mode.  </p>\t\n            </summary>\t\n            <param name=\"gradientStops\">No documentation.</param>\t\n            <param name=\"gradientStopsCount\">No documentation.</param>\t\n            <param name=\"colorInterpolationGamma\">No documentation.</param>\t\n            <param name=\"extendMode\">No documentation.</param>\t\n            <param name=\"gradientStopCollection\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1RenderTarget::CreateGradientStopCollection']/*\"/>\t\n            <msdn-id>dd371830</msdn-id>\t\n            <unmanaged>HRESULT ID2D1RenderTarget::CreateGradientStopCollection([In, Buffer] const D2D1_GRADIENT_STOP* gradientStops,[In] unsigned int gradientStopsCount,[In] D2D1_GAMMA colorInterpolationGamma,[In] D2D1_EXTEND_MODE extendMode,[Out, Fast] ID2D1GradientStopCollection** gradientStopCollection)</unmanaged>\t\n            <unmanaged-short>ID2D1RenderTarget::CreateGradientStopCollection</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RenderTarget.CreateLinearGradientBrush(SharpDX.Direct2D1.LinearGradientBrushProperties,System.Nullable{SharpDX.Direct2D1.BrushProperties},SharpDX.Direct2D1.GradientStopCollection,SharpDX.Direct2D1.LinearGradientBrush)\">\n            <summary>\t\n            <p>Creates an <strong><see cref=\"T:SharpDX.Direct2D1.LinearGradientBrush\"/></strong> that contains the specified gradient stops and has the specified transform and base opacity. </p>\t\n            </summary>\t\n            <param name=\"linearGradientBrushProperties\">No documentation.</param>\t\n            <param name=\"brushProperties\">No documentation.</param>\t\n            <param name=\"gradientStopCollection\">No documentation.</param>\t\n            <param name=\"linearGradientBrush\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1RenderTarget::CreateLinearGradientBrush']/*\"/>\t\n            <msdn-id>dd371842</msdn-id>\t\n            <unmanaged>HRESULT ID2D1RenderTarget::CreateLinearGradientBrush([In] const D2D1_LINEAR_GRADIENT_BRUSH_PROPERTIES* linearGradientBrushProperties,[In, Optional] const D2D1_BRUSH_PROPERTIES* brushProperties,[In] ID2D1GradientStopCollection* gradientStopCollection,[Out, Fast] ID2D1LinearGradientBrush** linearGradientBrush)</unmanaged>\t\n            <unmanaged-short>ID2D1RenderTarget::CreateLinearGradientBrush</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RenderTarget.CreateRadialGradientBrush(SharpDX.Direct2D1.RadialGradientBrushProperties@,System.Nullable{SharpDX.Direct2D1.BrushProperties},SharpDX.Direct2D1.GradientStopCollection,SharpDX.Direct2D1.RadialGradientBrush)\">\n            <summary>\t\n            <p>Creates an <strong><see cref=\"T:SharpDX.Direct2D1.RadialGradientBrush\"/></strong> that contains the specified gradient stops, has no transform, and has a base opacity of 1.0. </p>\t\n            </summary>\t\n            <param name=\"radialGradientBrushProperties\">No documentation.</param>\t\n            <param name=\"brushProperties\">No documentation.</param>\t\n            <param name=\"gradientStopCollection\">No documentation.</param>\t\n            <param name=\"radialGradientBrush\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1RenderTarget::CreateRadialGradientBrush']/*\"/>\t\n            <msdn-id>dd371859</msdn-id>\t\n            <unmanaged>HRESULT ID2D1RenderTarget::CreateRadialGradientBrush([In] const D2D1_RADIAL_GRADIENT_BRUSH_PROPERTIES* radialGradientBrushProperties,[In, Optional] const D2D1_BRUSH_PROPERTIES* brushProperties,[In] ID2D1GradientStopCollection* gradientStopCollection,[Out, Fast] ID2D1RadialGradientBrush** radialGradientBrush)</unmanaged>\t\n            <unmanaged-short>ID2D1RenderTarget::CreateRadialGradientBrush</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RenderTarget.CreateCompatibleRenderTarget(System.Nullable{SharpDX.DrawingSizeF},System.Nullable{SharpDX.DrawingSize},System.Nullable{SharpDX.Direct2D1.PixelFormat},SharpDX.Direct2D1.CompatibleRenderTargetOptions,SharpDX.Direct2D1.BitmapRenderTarget)\">\n            <summary>\t\n            Creates a new  bitmap render target for use during intermediate offscreen drawing that is compatible with the current render target .Overload list\t\n            </summary>\t\n            <param name=\"desiredSize\">No documentation.</param>\t\n            <param name=\"desiredPixelSize\">No documentation.</param>\t\n            <param name=\"desiredFormat\">No documentation.</param>\t\n            <param name=\"options\">No documentation.</param>\t\n            <param name=\"bitmapRenderTarget\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1RenderTarget::CreateCompatibleRenderTarget']/*\"/>\t\n            <msdn-id>dd742780</msdn-id>\t\n            <unmanaged>HRESULT ID2D1RenderTarget::CreateCompatibleRenderTarget([In, Optional] const D2D_SIZE_F* desiredSize,[In, Optional] const D2D_SIZE_U* desiredPixelSize,[In, Optional] const D2D1_PIXEL_FORMAT* desiredFormat,[In] D2D1_COMPATIBLE_RENDER_TARGET_OPTIONS options,[Out, Fast] ID2D1BitmapRenderTarget** bitmapRenderTarget)</unmanaged>\t\n            <unmanaged-short>ID2D1RenderTarget::CreateCompatibleRenderTarget</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RenderTarget.CreateLayer(System.Nullable{SharpDX.DrawingSizeF},SharpDX.Direct2D1.Layer)\">\n            <summary>\t\n            <p>Creates a layer resource that can be used with this render target and its compatible render targets. </p>\t\n            </summary>\t\n            <param name=\"size\"><dd>  <p>When the method returns, contains a reference to a reference to the new layer. This parameter is passed uninitialized.</p> </dd></param>\t\n            <param name=\"layer\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>The layer automatically resizes itself, as needed.  </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1RenderTarget::CreateLayer']/*\"/>\t\n            <msdn-id>dd371839</msdn-id>\t\n            <unmanaged>HRESULT ID2D1RenderTarget::CreateLayer([In, Optional] const D2D_SIZE_F* size,[Out, Fast] ID2D1Layer** layer)</unmanaged>\t\n            <unmanaged-short>ID2D1RenderTarget::CreateLayer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RenderTarget.CreateMesh(SharpDX.Direct2D1.Mesh)\">\n            <summary>\t\n            <p>Create a mesh that uses triangles to describe a shape.</p>\t\n            </summary>\t\n            <param name=\"mesh\"><dd>  <p>When this method returns, contains a reference to a reference to the new mesh.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>To populate a mesh, use its <strong>Open</strong> method to obtain an <strong><see cref=\"T:SharpDX.Direct2D1.TessellationSink\"/></strong>. To draw the mesh, use the render target's <strong>FillMesh</strong> method.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1RenderTarget::CreateMesh']/*\"/>\t\n            <msdn-id>dd371851</msdn-id>\t\n            <unmanaged>HRESULT ID2D1RenderTarget::CreateMesh([Out, Fast] ID2D1Mesh** mesh)</unmanaged>\t\n            <unmanaged-short>ID2D1RenderTarget::CreateMesh</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RenderTarget.DrawLine(SharpDX.DrawingPointF,SharpDX.DrawingPointF,SharpDX.Direct2D1.Brush,System.Single,SharpDX.Direct2D1.StrokeStyle)\">\n            <summary>\t\n            <p>Draws a line between the specified points using the specified stroke style. </p>\t\n            </summary>\t\n            <param name=\"point0\"><dd>  <p>The start point of the line, in device-independent pixels.</p> </dd></param>\t\n            <param name=\"point1\"><dd>  <p>The end point of the line, in device-independent pixels.</p> </dd></param>\t\n            <param name=\"brush\"><dd>  <p>The brush used to paint the line's stroke.</p> </dd></param>\t\n            <param name=\"strokeWidth\"><dd>  <p>A value greater than or equal to 0.0f that specifies the width of the stroke. If this parameter isn't specified, it defaults to 1.0f.  The stroke is centered on the line.</p> </dd></param>\t\n            <param name=\"strokeStyle\"><dd>  <p>The style of stroke to paint, or <strong><c>null</c></strong> to paint a solid line.</p> </dd></param>\t\n            <remarks>\t\n            <p>This method doesn't return an error code if it fails. To determine whether a drawing operation (such as <strong>DrawLine</strong>) failed, check the result returned by the <strong><see cref=\"M:SharpDX.Direct2D1.RenderTarget.EndDraw(System.Int64@,System.Int64@)\"/></strong> or <strong><see cref=\"M:SharpDX.Direct2D1.RenderTarget.Flush(System.Int64@,System.Int64@)\"/></strong> methods. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1RenderTarget::DrawLine']/*\"/>\t\n            <msdn-id>dd371895</msdn-id>\t\n            <unmanaged>void ID2D1RenderTarget::DrawLine([In] D2D_POINT_2F point0,[In] D2D_POINT_2F point1,[In] ID2D1Brush* brush,[In] float strokeWidth,[In, Optional] ID2D1StrokeStyle* strokeStyle)</unmanaged>\t\n            <unmanaged-short>ID2D1RenderTarget::DrawLine</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RenderTarget.DrawRectangle(SharpDX.RectangleF,SharpDX.Direct2D1.Brush,System.Single,SharpDX.Direct2D1.StrokeStyle)\">\n            <summary>\t\n            <p>Draws the outline of a rectangle that has the specified dimensions and stroke style. </p>\t\n            </summary>\t\n            <param name=\"rect\"><dd>  <p>The dimensions of the rectangle to draw, in device-independent pixels.</p> </dd></param>\t\n            <param name=\"brush\"><dd>  <p>The brush used to paint the rectangle's stroke.</p> </dd></param>\t\n            <param name=\"strokeWidth\"><dd>  <p>A value greater than or equal to 0.0f that specifies the width of the rectangle's stroke. The stroke is centered on the rectangle's outline.</p> </dd></param>\t\n            <param name=\"strokeStyle\"><dd>  <p>The style of stroke to paint, or <strong><c>null</c></strong> to paint a solid stroke.</p> </dd></param>\t\n            <remarks>\t\n            <p>When this method fails, it does not return an error code. To determine whether a drawing method (such as <strong>DrawRectangle</strong>) failed, check the result returned by the <strong><see cref=\"M:SharpDX.Direct2D1.RenderTarget.EndDraw(System.Int64@,System.Int64@)\"/></strong> or <strong><see cref=\"M:SharpDX.Direct2D1.RenderTarget.Flush(System.Int64@,System.Int64@)\"/></strong> method. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1RenderTarget::DrawRectangle']/*\"/>\t\n            <msdn-id>dd371902</msdn-id>\t\n            <unmanaged>void ID2D1RenderTarget::DrawRectangle([In] const D2D_RECT_F* rect,[In] ID2D1Brush* brush,[In] float strokeWidth,[In, Optional] ID2D1StrokeStyle* strokeStyle)</unmanaged>\t\n            <unmanaged-short>ID2D1RenderTarget::DrawRectangle</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RenderTarget.FillRectangle(SharpDX.RectangleF,SharpDX.Direct2D1.Brush)\">\n            <summary>\t\n            <p>Paints the interior of the specified rectangle. </p>\t\n            </summary>\t\n            <param name=\"rect\"><dd>  <p>The dimension of the rectangle to paint, in device-independent pixels.</p> </dd></param>\t\n            <param name=\"brush\"><dd>  <p>The brush used to paint the rectangle's interior.</p> </dd></param>\t\n            <remarks>\t\n            <p>This method doesn't return an error code if it fails. To determine whether a drawing operation (such as <strong>FillRectangle</strong>) failed, check the result returned by the <strong><see cref=\"M:SharpDX.Direct2D1.RenderTarget.EndDraw(System.Int64@,System.Int64@)\"/></strong> or <strong><see cref=\"M:SharpDX.Direct2D1.RenderTarget.Flush(System.Int64@,System.Int64@)\"/></strong> methods. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1RenderTarget::FillRectangle']/*\"/>\t\n            <msdn-id>dd371954</msdn-id>\t\n            <unmanaged>void ID2D1RenderTarget::FillRectangle([In] const D2D_RECT_F* rect,[In] ID2D1Brush* brush)</unmanaged>\t\n            <unmanaged-short>ID2D1RenderTarget::FillRectangle</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RenderTarget.DrawRoundedRectangle(SharpDX.Direct2D1.RoundedRectangle@,SharpDX.Direct2D1.Brush,System.Single,SharpDX.Direct2D1.StrokeStyle)\">\n            <summary>\t\n            <p> Draws the outline of the specified rounded rectangle using the specified stroke style.</p>\t\n            </summary>\t\n            <param name=\"roundedRect\"><dd>  <p>The dimensions of the rounded rectangle to draw, in device-independent pixels.</p> </dd></param>\t\n            <param name=\"brush\"><dd>  <p>The brush used to paint the rounded rectangle's outline. </p> </dd></param>\t\n            <param name=\"strokeWidth\"><dd>  <p>The width of the rounded rectangle's stroke. The stroke is centered on the rounded rectangle's outline. The default value is 1.0f. </p> </dd></param>\t\n            <param name=\"strokeStyle\"><dd>  <p>The style of the rounded rectangle's stroke, or <strong><c>null</c></strong> to paint a solid stroke. The default value is <strong><c>null</c></strong>.</p> </dd></param>\t\n            <remarks>\t\n            <p>This method doesn't return an error code if it fails. To determine whether a drawing operation (such as <strong>DrawRoundedRectangle</strong>) failed, check the result returned by the <strong><see cref=\"M:SharpDX.Direct2D1.RenderTarget.EndDraw(System.Int64@,System.Int64@)\"/></strong> or <strong><see cref=\"M:SharpDX.Direct2D1.RenderTarget.Flush(System.Int64@,System.Int64@)\"/></strong> methods. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1RenderTarget::DrawRoundedRectangle']/*\"/>\t\n            <msdn-id>dd371908</msdn-id>\t\n            <unmanaged>void ID2D1RenderTarget::DrawRoundedRectangle([In] const D2D1_ROUNDED_RECT* roundedRect,[In] ID2D1Brush* brush,[In] float strokeWidth,[In, Optional] ID2D1StrokeStyle* strokeStyle)</unmanaged>\t\n            <unmanaged-short>ID2D1RenderTarget::DrawRoundedRectangle</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RenderTarget.FillRoundedRectangle(SharpDX.Direct2D1.RoundedRectangle@,SharpDX.Direct2D1.Brush)\">\n            <summary>\t\n            <p>Paints the interior of the specified rounded rectangle. </p>\t\n            </summary>\t\n            <param name=\"roundedRect\"><dd>  <p>The dimensions of the rounded rectangle to paint, in device independent pixels.</p> </dd></param>\t\n            <param name=\"brush\"><dd>  <p>The brush used to paint the interior of the rounded rectangle.</p> </dd></param>\t\n            <remarks>\t\n            <p>This method doesn't return an error code if it fails. To determine whether a drawing operation (such as <strong>FillRoundedRectangle</strong>) failed, check the result returned by the <strong><see cref=\"M:SharpDX.Direct2D1.RenderTarget.EndDraw(System.Int64@,System.Int64@)\"/></strong> or <strong><see cref=\"M:SharpDX.Direct2D1.RenderTarget.Flush(System.Int64@,System.Int64@)\"/></strong> methods. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1RenderTarget::FillRoundedRectangle']/*\"/>\t\n            <msdn-id>dd316795</msdn-id>\t\n            <unmanaged>void ID2D1RenderTarget::FillRoundedRectangle([In] const D2D1_ROUNDED_RECT* roundedRect,[In] ID2D1Brush* brush)</unmanaged>\t\n            <unmanaged-short>ID2D1RenderTarget::FillRoundedRectangle</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RenderTarget.DrawEllipse(SharpDX.Direct2D1.Ellipse,SharpDX.Direct2D1.Brush,System.Single,SharpDX.Direct2D1.StrokeStyle)\">\n            <summary>\t\n            <p>Draws the outline of the specified ellipse using the specified stroke style. </p>\t\n            </summary>\t\n            <param name=\"ellipse\"><dd>  <p>The position and radius of the ellipse to draw, in device-independent pixels.</p> </dd></param>\t\n            <param name=\"brush\"><dd>  <p>The brush used to paint the ellipse's outline.</p> </dd></param>\t\n            <param name=\"strokeWidth\"><dd>  <p>The thickness of the ellipse's stroke. The stroke is centered on the ellipse's outline.</p> </dd></param>\t\n            <param name=\"strokeStyle\"><dd>  <p>The style of stroke to apply to the ellipse's outline, or <strong><c>null</c></strong> to paint a solid stroke.</p> </dd></param>\t\n            <remarks>\t\n            <p>The <strong>DrawEllipse</strong> method doesn't return an error code if it fails. To determine whether a drawing operation (such as <strong>DrawEllipse</strong>) failed, check the result returned by the <strong><see cref=\"M:SharpDX.Direct2D1.RenderTarget.EndDraw(System.Int64@,System.Int64@)\"/></strong> or <strong><see cref=\"M:SharpDX.Direct2D1.RenderTarget.Flush(System.Int64@,System.Int64@)\"/></strong> methods. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1RenderTarget::DrawEllipse']/*\"/>\t\n            <msdn-id>dd371886</msdn-id>\t\n            <unmanaged>void ID2D1RenderTarget::DrawEllipse([In] const D2D1_ELLIPSE* ellipse,[In] ID2D1Brush* brush,[In] float strokeWidth,[In, Optional] ID2D1StrokeStyle* strokeStyle)</unmanaged>\t\n            <unmanaged-short>ID2D1RenderTarget::DrawEllipse</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RenderTarget.FillEllipse(SharpDX.Direct2D1.Ellipse,SharpDX.Direct2D1.Brush)\">\n            <summary>\t\n            <p>Paints the interior of the specified ellipse. </p>\t\n            </summary>\t\n            <param name=\"ellipse\"><dd>  <p>The position and radius, in device-independent pixels, of the ellipse to paint.</p> </dd></param>\t\n            <param name=\"brush\"><dd>  <p>The brush used to paint the interior of the ellipse.</p> </dd></param>\t\n            <remarks>\t\n            <p>This method doesn't return an error code if it fails. To determine whether a drawing operation (such as <strong>FillEllipse</strong>) failed, check the result returned by the <strong><see cref=\"M:SharpDX.Direct2D1.RenderTarget.EndDraw(System.Int64@,System.Int64@)\"/></strong> or <strong><see cref=\"M:SharpDX.Direct2D1.RenderTarget.Flush(System.Int64@,System.Int64@)\"/></strong> methods. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1RenderTarget::FillEllipse']/*\"/>\t\n            <msdn-id>dd371928</msdn-id>\t\n            <unmanaged>void ID2D1RenderTarget::FillEllipse([In] const D2D1_ELLIPSE* ellipse,[In] ID2D1Brush* brush)</unmanaged>\t\n            <unmanaged-short>ID2D1RenderTarget::FillEllipse</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RenderTarget.DrawGeometry(SharpDX.Direct2D1.Geometry,SharpDX.Direct2D1.Brush,System.Single,SharpDX.Direct2D1.StrokeStyle)\">\n            <summary>\t\n            <p>Draws the outline of the specified geometry using the specified stroke style. </p>\t\n            </summary>\t\n            <param name=\"geometry\"><dd>  <p>The geometry to draw.</p> </dd></param>\t\n            <param name=\"brush\"><dd>  <p>The brush used to paint the geometry's stroke.</p> </dd></param>\t\n            <param name=\"strokeWidth\"><dd>  <p>The thickness of the geometry's stroke. The stroke is centered on the geometry's outline.</p> </dd></param>\t\n            <param name=\"strokeStyle\"><dd>  <p>The style of stroke to apply to the geometry's outline, or <strong><c>null</c></strong> to paint a solid stroke.</p> </dd></param>\t\n            <remarks>\t\n            <p>This method doesn't return an error code if it fails. To determine whether a drawing operation (such as <strong>DrawGeometry</strong>) failed, check the result returned by the <strong><see cref=\"M:SharpDX.Direct2D1.RenderTarget.EndDraw(System.Int64@,System.Int64@)\"/></strong> or <strong><see cref=\"M:SharpDX.Direct2D1.RenderTarget.Flush(System.Int64@,System.Int64@)\"/></strong> methods. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1RenderTarget::DrawGeometry']/*\"/>\t\n            <msdn-id>dd371890</msdn-id>\t\n            <unmanaged>void ID2D1RenderTarget::DrawGeometry([In] ID2D1Geometry* geometry,[In] ID2D1Brush* brush,[In] float strokeWidth,[In, Optional] ID2D1StrokeStyle* strokeStyle)</unmanaged>\t\n            <unmanaged-short>ID2D1RenderTarget::DrawGeometry</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RenderTarget.FillGeometry(SharpDX.Direct2D1.Geometry,SharpDX.Direct2D1.Brush,SharpDX.Direct2D1.Brush)\">\n            <summary>\t\n            <p>Paints the interior of the specified geometry. </p>\t\n            </summary>\t\n            <param name=\"geometry\"><dd>  <p>The geometry to paint.</p> </dd></param>\t\n            <param name=\"brush\"><dd>  <p>The brush used to paint the geometry's interior.</p> </dd></param>\t\n            <param name=\"opacityBrush\"><dd>  <p>The opacity mask to apply to the geometry, or <strong><c>null</c></strong> for no opacity mask. If an opacity mask (the <em>opacityBrush</em> parameter) is specified, <em>brush</em> must be an <strong><see cref=\"T:SharpDX.Direct2D1.BitmapBrush\"/></strong> that has   its x- and y-extend modes set to <strong><see cref=\"F:SharpDX.Direct2D1.ExtendMode.Clamp\"/></strong>. For more information, see the Remarks section. </p> </dd></param>\t\n            <remarks>\t\n            <p>If the <em>opacityBrush</em> parameter is not <strong><c>null</c></strong>, the alpha value of each pixel of the mapped <em>opacityBrush</em> is used to determine the resulting opacity of each corresponding pixel of the geometry. Only the alpha value of each color in the brush is used for this processing; all other color information is ignored.  The alpha value specified by the brush is multiplied by the alpha value of the geometry after the geometry has been painted by <em>brush</em>.  \t\n            </p><p>When this method fails, it does not return an error code. To determine whether a drawing operation (such as <strong>FillGeometry</strong>) failed, check the result returned by the <strong><see cref=\"M:SharpDX.Direct2D1.RenderTarget.EndDraw(System.Int64@,System.Int64@)\"/></strong> or <strong><see cref=\"M:SharpDX.Direct2D1.RenderTarget.Flush(System.Int64@,System.Int64@)\"/></strong> method. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1RenderTarget::FillGeometry']/*\"/>\t\n            <msdn-id>dd371933</msdn-id>\t\n            <unmanaged>void ID2D1RenderTarget::FillGeometry([In] ID2D1Geometry* geometry,[In] ID2D1Brush* brush,[In, Optional] ID2D1Brush* opacityBrush)</unmanaged>\t\n            <unmanaged-short>ID2D1RenderTarget::FillGeometry</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RenderTarget.FillMesh(SharpDX.Direct2D1.Mesh,SharpDX.Direct2D1.Brush)\">\n            <summary>\t\n            <p> Paints the interior of the specified mesh.</p>\t\n            </summary>\t\n            <param name=\"mesh\"><dd>  <p>The mesh to paint.</p> </dd></param>\t\n            <param name=\"brush\"><dd>  <p>The brush used to paint the mesh.</p> </dd></param>\t\n            <remarks>\t\n            <p>The current antialias mode of the render target must be <strong><see cref=\"F:SharpDX.Direct2D1.AntialiasMode.Aliased\"/></strong> when <strong>FillMesh</strong> is called. To change the render target's antialias mode, use the <strong>SetAntialiasMode</strong> method.</p><p><strong>FillMesh</strong> does not expect a particular winding order for the triangles in the <strong><see cref=\"T:SharpDX.Direct2D1.Mesh\"/></strong>; both clockwise and counter-clockwise will work. </p><p>This method doesn't return an error code if it fails. To determine whether a drawing operation (such as <strong>FillMesh</strong>) failed, check the result returned by the <strong><see cref=\"M:SharpDX.Direct2D1.RenderTarget.EndDraw(System.Int64@,System.Int64@)\"/></strong> or <strong><see cref=\"M:SharpDX.Direct2D1.RenderTarget.Flush(System.Int64@,System.Int64@)\"/></strong> methods. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1RenderTarget::FillMesh']/*\"/>\t\n            <msdn-id>dd371939</msdn-id>\t\n            <unmanaged>void ID2D1RenderTarget::FillMesh([In] ID2D1Mesh* mesh,[In] ID2D1Brush* brush)</unmanaged>\t\n            <unmanaged-short>ID2D1RenderTarget::FillMesh</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RenderTarget.FillOpacityMask(SharpDX.Direct2D1.Bitmap,SharpDX.Direct2D1.Brush,SharpDX.Direct2D1.OpacityMaskContent,System.Nullable{SharpDX.RectangleF},System.Nullable{SharpDX.RectangleF})\">\n            <summary>\t\n            Applies the opacity mask described by the specified bitmap to a brush and uses that brush to paint a region of the render target.Overload list\t\n            </summary>\t\n            <param name=\"opacityMask\">No documentation.</param>\t\n            <param name=\"brush\">No documentation.</param>\t\n            <param name=\"content\">No documentation.</param>\t\n            <param name=\"destinationRectangle\">No documentation.</param>\t\n            <param name=\"sourceRectangle\">No documentation.</param>\t\n            <remarks>\t\n            <p>For this method to work properly, the render target must be using the <strong><see cref=\"F:SharpDX.Direct2D1.AntialiasMode.Aliased\"/></strong> antialiasing mode. You can set the antialiasing mode by calling the <strong><see cref=\"M:SharpDX.Direct2D1.RenderTarget.SetAntialiasMode(SharpDX.Direct2D1.AntialiasMode)\"/></strong> method.</p><p>This method doesn't return an error code if it fails. To determine whether a drawing operation (such as <strong>FillOpacityMask</strong>) failed, check the result returned by the <strong><see cref=\"M:SharpDX.Direct2D1.RenderTarget.EndDraw(System.Int64@,System.Int64@)\"/></strong> or <strong><see cref=\"M:SharpDX.Direct2D1.RenderTarget.Flush(System.Int64@,System.Int64@)\"/></strong> methods. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1RenderTarget::FillOpacityMask']/*\"/>\t\n            <msdn-id>dd742850</msdn-id>\t\n            <unmanaged>void ID2D1RenderTarget::FillOpacityMask([In] ID2D1Bitmap* opacityMask,[In] ID2D1Brush* brush,[In] D2D1_OPACITY_MASK_CONTENT content,[In, Optional] const D2D_RECT_F* destinationRectangle,[In, Optional] const D2D_RECT_F* sourceRectangle)</unmanaged>\t\n            <unmanaged-short>ID2D1RenderTarget::FillOpacityMask</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RenderTarget.DrawBitmap(SharpDX.Direct2D1.Bitmap,System.Nullable{SharpDX.RectangleF},System.Single,SharpDX.Direct2D1.BitmapInterpolationMode,System.Nullable{SharpDX.RectangleF})\">\n            <summary>\t\n            <p>Draws the specified bitmap after scaling it to the size of the specified rectangle. </p>\t\n            </summary>\t\n            <param name=\"bitmap\"><dd>  <p>The bitmap to render.</p> </dd></param>\t\n            <param name=\"destinationRectangle\"><dd>  <p>The size and position, in device-independent pixels in the render target's coordinate space, of the area to which the bitmap is drawn. If the rectangle is not well-ordered, nothing is drawn, but the render target does not enter an error state.</p> </dd></param>\t\n            <param name=\"opacity\"><dd>  <p>A value between 0.0f and 1.0f, inclusive, that specifies the opacity value to be applied to the bitmap; this value is multiplied against the alpha values of the bitmap's contents.  Default is 1.0f.</p> </dd></param>\t\n            <param name=\"interpolationMode\"><dd>  <p>The interpolation mode to use if the bitmap is scaled or rotated by the drawing operation. The default value is <strong><see cref=\"F:SharpDX.Direct2D1.BitmapInterpolationMode.Linear\"/></strong>. </p> </dd></param>\t\n            <param name=\"sourceRectangle\"><dd>  <p>The size and position, in device-independent pixels in the bitmap's coordinate space, of the area within the bitmap to draw; <strong><c>null</c></strong> to draw the entire bitmap.</p> </dd></param>\t\n            <remarks>\t\n            <p>This method doesn't return an error code if it fails. To determine whether a drawing operation (such as <strong>DrawBitmap</strong>) failed, check the result returned by the <strong><see cref=\"M:SharpDX.Direct2D1.RenderTarget.EndDraw(System.Int64@,System.Int64@)\"/></strong> or <strong><see cref=\"M:SharpDX.Direct2D1.RenderTarget.Flush(System.Int64@,System.Int64@)\"/></strong> methods. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1RenderTarget::DrawBitmap']/*\"/>\t\n            <msdn-id>dd371878</msdn-id>\t\n            <unmanaged>void ID2D1RenderTarget::DrawBitmap([In] ID2D1Bitmap* bitmap,[In, Optional] const D2D_RECT_F* destinationRectangle,[In] float opacity,[In] D2D1_BITMAP_INTERPOLATION_MODE interpolationMode,[In, Optional] const D2D_RECT_F* sourceRectangle)</unmanaged>\t\n            <unmanaged-short>ID2D1RenderTarget::DrawBitmap</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RenderTarget.DrawText(System.String,System.Int32,SharpDX.DirectWrite.TextFormat,SharpDX.RectangleF,SharpDX.Direct2D1.Brush,SharpDX.Direct2D1.DrawTextOptions,SharpDX.Direct2D1.MeasuringMode)\">\n            <summary>\t\n            Draws the specified text using the format information provided by an <strong><see cref=\"T:SharpDX.DirectWrite.TextFormat\"/></strong> object.Overload list\t\n            </summary>\t\n            <param name=\"text\">No documentation.</param>\t\n            <param name=\"stringLength\">No documentation.</param>\t\n            <param name=\"textFormat\">No documentation.</param>\t\n            <param name=\"layoutRect\">No documentation.</param>\t\n            <param name=\"defaultForegroundBrush\">No documentation.</param>\t\n            <param name=\"options\">No documentation.</param>\t\n            <param name=\"measuringMode\">No documentation.</param>\t\n            <remarks>\t\n            <p>To draw text with Direct2D,  use the <strong><see cref=\"M:SharpDX.Direct2D1.RenderTarget.DrawText(System.String,System.Int32,SharpDX.DirectWrite.TextFormat,SharpDX.RectangleF,SharpDX.Direct2D1.Brush,SharpDX.Direct2D1.DrawTextOptions,SharpDX.Direct2D1.MeasuringMode)\"/></strong> method for text that has a single format, or the <strong><see cref=\"M:SharpDX.Direct2D1.RenderTarget.DrawTextLayout(SharpDX.DrawingPointF,SharpDX.DirectWrite.TextLayout,SharpDX.Direct2D1.Brush,SharpDX.Direct2D1.DrawTextOptions)\"/></strong> method when you need multiple formats, advanced OpenType features, or hit testing. These methods use the DirectWrite API to provide high-quality text display.</p><p>This method doesn't return an error code if it fails. To determine whether a drawing operation (such as <strong>DrawText</strong>) failed, check the result returned by the <strong><see cref=\"M:SharpDX.Direct2D1.RenderTarget.EndDraw(System.Int64@,System.Int64@)\"/></strong> or <strong><see cref=\"M:SharpDX.Direct2D1.RenderTarget.Flush(System.Int64@,System.Int64@)\"/></strong> methods. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1RenderTarget::DrawTextW']/*\"/>\t\n            <msdn-id>dd742848</msdn-id>\t\n            <unmanaged>void ID2D1RenderTarget::DrawTextW([In, Buffer] const wchar_t* string,[In] unsigned int stringLength,[In] IDWriteTextFormat* textFormat,[In] const D2D_RECT_F* layoutRect,[In] ID2D1Brush* defaultForegroundBrush,[In] D2D1_DRAW_TEXT_OPTIONS options,[In] DWRITE_MEASURING_MODE measuringMode)</unmanaged>\t\n            <unmanaged-short>ID2D1RenderTarget::DrawTextW</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RenderTarget.DrawTextLayout(SharpDX.DrawingPointF,SharpDX.DirectWrite.TextLayout,SharpDX.Direct2D1.Brush,SharpDX.Direct2D1.DrawTextOptions)\">\n            <summary>\t\n            <p>Draws the formatted text described by the specified <strong><see cref=\"T:SharpDX.DirectWrite.TextLayout\"/></strong> object.</p>\t\n            </summary>\t\n            <param name=\"origin\">No documentation.</param>\t\n            <param name=\"textLayout\">No documentation.</param>\t\n            <param name=\"defaultForegroundBrush\">No documentation.</param>\t\n            <param name=\"options\">No documentation.</param>\t\n            <remarks>\t\n            <p>When drawing the same text repeatedly, using the <strong>DrawTextLayout</strong> method is more efficient than using the <strong>DrawText</strong> method because the text doesn't need to be formatted and the layout processed with each call.</p><p>This method doesn't return an error code if it fails. To determine whether a drawing operation (such as <strong>DrawTextLayout</strong>) failed, check the result returned by the <strong><see cref=\"M:SharpDX.Direct2D1.RenderTarget.EndDraw(System.Int64@,System.Int64@)\"/></strong> or <strong><see cref=\"M:SharpDX.Direct2D1.RenderTarget.Flush(System.Int64@,System.Int64@)\"/></strong> methods. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1RenderTarget::DrawTextLayout']/*\"/>\t\n            <msdn-id>dd371913</msdn-id>\t\n            <unmanaged>void ID2D1RenderTarget::DrawTextLayout([In] D2D_POINT_2F origin,[In] IDWriteTextLayout* textLayout,[In] ID2D1Brush* defaultForegroundBrush,[In] D2D1_DRAW_TEXT_OPTIONS options)</unmanaged>\t\n            <unmanaged-short>ID2D1RenderTarget::DrawTextLayout</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RenderTarget.DrawGlyphRun(SharpDX.DrawingPointF,SharpDX.DirectWrite.GlyphRun,SharpDX.Direct2D1.Brush,SharpDX.Direct2D1.MeasuringMode)\">\n            <summary>\t\n            <p>Draws the specified glyphs. </p>\t\n            </summary>\t\n            <param name=\"baselineOrigin\"><dd>  <p>The origin, in device-independent pixels, of the glyphs' baseline.</p> </dd></param>\t\n            <param name=\"glyphRun\"><dd>  <p>The glyphs to render.</p> </dd></param>\t\n            <param name=\"foregroundBrush\"><dd>  <p>The brush used to paint the specified glyphs.</p> </dd></param>\t\n            <param name=\"measuringMode\"><dd>  <p>A value that indicates how glyph metrics are used to measure text when it is formatted.  The default value is <strong><see cref=\"F:SharpDX.Direct2D1.MeasuringMode.Natural\"/></strong>. </p> </dd></param>\t\n            <remarks>\t\n            <p>This method doesn't return an error code if it fails. To determine whether a drawing operation (such as <strong>DrawGlyphRun</strong>) failed, check the result returned by the <strong><see cref=\"M:SharpDX.Direct2D1.RenderTarget.EndDraw(System.Int64@,System.Int64@)\"/></strong> or <strong><see cref=\"M:SharpDX.Direct2D1.RenderTarget.Flush(System.Int64@,System.Int64@)\"/></strong> methods. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1RenderTarget::DrawGlyphRun']/*\"/>\t\n            <msdn-id>dd371893</msdn-id>\t\n            <unmanaged>void ID2D1RenderTarget::DrawGlyphRun([In] D2D_POINT_2F baselineOrigin,[In] const DWRITE_GLYPH_RUN* glyphRun,[In] ID2D1Brush* foregroundBrush,[In] DWRITE_MEASURING_MODE measuringMode)</unmanaged>\t\n            <unmanaged-short>ID2D1RenderTarget::DrawGlyphRun</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RenderTarget.SetTransform(SharpDX.Matrix3x2@)\">\n            <summary>\t\n            Applies the specified transform to the render target, replacing the existing transformation. All subsequent drawing operations occur in the transformed space.Overload list\t\n            </summary>\t\n            <param name=\"transform\">No documentation.</param>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1RenderTarget::SetTransform']/*\"/>\t\n            <msdn-id>dd742857</msdn-id>\t\n            <unmanaged>void ID2D1RenderTarget::SetTransform([In] const D2D_MATRIX_3X2_F* transform)</unmanaged>\t\n            <unmanaged-short>ID2D1RenderTarget::SetTransform</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RenderTarget.GetTransform(SharpDX.Matrix3x2@)\">\n            <summary>\t\n            <p>Gets the current transform of the render target. </p>\t\n            </summary>\t\n            <param name=\"transform\"><dd>  <p>When this returns, contains the current transform of the render target. This parameter is passed uninitialized.</p> </dd></param>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1RenderTarget::GetTransform']/*\"/>\t\n            <msdn-id>dd316845</msdn-id>\t\n            <unmanaged>void ID2D1RenderTarget::GetTransform([Out] D2D_MATRIX_3X2_F* transform)</unmanaged>\t\n            <unmanaged-short>ID2D1RenderTarget::GetTransform</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RenderTarget.SetAntialiasMode(SharpDX.Direct2D1.AntialiasMode)\">\n            <summary>\t\n            <p>Sets the antialiasing mode of the render target. The antialiasing mode applies to all subsequent drawing operations, excluding text and glyph drawing operations. </p>\t\n            </summary>\t\n            <param name=\"antialiasMode\"><dd>  <p>The antialiasing mode for future drawing operations. </p> </dd></param>\t\n            <remarks>\t\n            <p>To specify the antialiasing mode for text and glyph operations, use the <strong>SetTextAntialiasMode</strong> method. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1RenderTarget::SetAntialiasMode']/*\"/>\t\n            <msdn-id>dd316881</msdn-id>\t\n            <unmanaged>void ID2D1RenderTarget::SetAntialiasMode([In] D2D1_ANTIALIAS_MODE antialiasMode)</unmanaged>\t\n            <unmanaged-short>ID2D1RenderTarget::SetAntialiasMode</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RenderTarget.GetAntialiasMode\">\n            <summary>\t\n            <p> Retrieves the current antialiasing mode for nontext drawing operations.</p>\t\n            </summary>\t\n            <returns><p>The current antialiasing mode for nontext drawing operations. </p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1RenderTarget::GetAntialiasMode']/*\"/>\t\n            <msdn-id>dd316805</msdn-id>\t\n            <unmanaged>D2D1_ANTIALIAS_MODE ID2D1RenderTarget::GetAntialiasMode()</unmanaged>\t\n            <unmanaged-short>ID2D1RenderTarget::GetAntialiasMode</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RenderTarget.SetTextAntialiasMode(SharpDX.Direct2D1.TextAntialiasMode)\">\n            <summary>\t\n            <p>Specifies the antialiasing mode to use for subsequent text and glyph drawing operations. </p>\t\n            </summary>\t\n            <param name=\"textAntialiasMode\"><dd>  <p>The antialiasing mode to use for subsequent text and glyph drawing operations.</p> </dd></param>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1RenderTarget::SetTextAntialiasMode']/*\"/>\t\n            <msdn-id>dd316897</msdn-id>\t\n            <unmanaged>void ID2D1RenderTarget::SetTextAntialiasMode([In] D2D1_TEXT_ANTIALIAS_MODE textAntialiasMode)</unmanaged>\t\n            <unmanaged-short>ID2D1RenderTarget::SetTextAntialiasMode</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RenderTarget.GetTextAntialiasMode\">\n            <summary>\t\n            <p>Gets the current antialiasing mode for text and glyph drawing operations. </p>\t\n            </summary>\t\n            <returns><p>The current antialiasing mode for text and glyph drawing operations. </p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1RenderTarget::GetTextAntialiasMode']/*\"/>\t\n            <msdn-id>dd316835</msdn-id>\t\n            <unmanaged>D2D1_TEXT_ANTIALIAS_MODE ID2D1RenderTarget::GetTextAntialiasMode()</unmanaged>\t\n            <unmanaged-short>ID2D1RenderTarget::GetTextAntialiasMode</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RenderTarget.SetTextRenderingParams(SharpDX.DirectWrite.RenderingParams)\">\n            <summary>\t\n            <p>Specifies text rendering options to be applied to all subsequent text and glyph drawing operations. </p>\t\n            </summary>\t\n            <param name=\"textRenderingParams\"><dd>  <p>The text rendering options to be applied to all subsequent text and glyph drawing operations; <strong><c>null</c></strong> to clear current text rendering options. </p> </dd></param>\t\n            <remarks>\t\n            <p>If the settings specified by  <em>textRenderingParams</em> are incompatible with the render target's text antialiasing mode (specified by <strong>SetTextAntialiasMode</strong>), subsequent text and glyph drawing operations will fail and put the render target into an error state.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1RenderTarget::SetTextRenderingParams']/*\"/>\t\n            <msdn-id>dd316898</msdn-id>\t\n            <unmanaged>void ID2D1RenderTarget::SetTextRenderingParams([In, Optional] IDWriteRenderingParams* textRenderingParams)</unmanaged>\t\n            <unmanaged-short>ID2D1RenderTarget::SetTextRenderingParams</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RenderTarget.GetTextRenderingParams(SharpDX.DirectWrite.RenderingParams@)\">\n            <summary>\t\n            <p>Retrieves the render target's current text rendering options. </p>\t\n            </summary>\t\n            <param name=\"textRenderingParams\"><dd>  <p> When this method returns, <em>textRenderingParams</em>contains the address  of a reference to the render target's current text rendering options. </p> </dd></param>\t\n            <remarks>\t\n            <p>If the settings specified by  <em>textRenderingParams</em> are incompatible with the render target's text antialiasing mode (specified by <strong>SetTextAntialiasMode</strong>), subsequent text and glyph drawing operations will fail and put the render target into an error state.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1RenderTarget::GetTextRenderingParams']/*\"/>\t\n            <msdn-id>dd316841</msdn-id>\t\n            <unmanaged>void ID2D1RenderTarget::GetTextRenderingParams([Out, Optional] IDWriteRenderingParams** textRenderingParams)</unmanaged>\t\n            <unmanaged-short>ID2D1RenderTarget::GetTextRenderingParams</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RenderTarget.SetTags(System.Int64,System.Int64)\">\n            <summary>\t\n            <p>Specifies a label for subsequent drawing operations.   </p>\t\n            </summary>\t\n            <param name=\"tag1\"><dd>  <p>A label to apply to subsequent drawing operations.</p> </dd></param>\t\n            <param name=\"tag2\"><dd>  <p>A label to apply to subsequent drawing operations.</p> </dd></param>\t\n            <remarks>\t\n            <p>The labels specified by this method are printed by debug error messages. If no tag is set, the default value for each tag is 0.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1RenderTarget::SetTags']/*\"/>\t\n            <msdn-id>dd316892</msdn-id>\t\n            <unmanaged>void ID2D1RenderTarget::SetTags([In] unsigned longlong tag1,[In] unsigned longlong tag2)</unmanaged>\t\n            <unmanaged-short>ID2D1RenderTarget::SetTags</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RenderTarget.GetTags(System.Int64@,System.Int64@)\">\n            <summary>\t\n            <p>Gets the label for subsequent drawing operations. </p>\t\n            </summary>\t\n            <param name=\"tag1\"><dd>  <p>When this method returns, contains the first label for subsequent drawing operations. This parameter is passed uninitialized. If <strong><c>null</c></strong> is specified, no value is retrieved for this parameter. </p> </dd></param>\t\n            <param name=\"tag2\"><dd>  <p>When this method returns, contains the second label for subsequent drawing operations. This parameter is passed uninitialized. If <strong><c>null</c></strong> is specified, no value is retrieved for this parameter.</p> </dd></param>\t\n            <remarks>\t\n            <p>If the same address is passed for both parameters, both parameters receive the value of the second tag. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1RenderTarget::GetTags']/*\"/>\t\n            <msdn-id>dd316830</msdn-id>\t\n            <unmanaged>void ID2D1RenderTarget::GetTags([Out, Optional] unsigned longlong* tag1,[Out, Optional] unsigned longlong* tag2)</unmanaged>\t\n            <unmanaged-short>ID2D1RenderTarget::GetTags</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RenderTarget.PushLayer(SharpDX.Direct2D1.LayerParameters@,SharpDX.Direct2D1.Layer)\">\n            <summary>\t\n            <p>Adds the specified layer to the render target so that it receives all subsequent drawing operations until <strong>PopLayer</strong> is called. </p>\t\n            </summary>\t\n            <param name=\"layerParameters\">No documentation.</param>\t\n            <param name=\"layer\">No documentation.</param>\t\n            <remarks>\t\n            <p>The <strong>PushLayer</strong> method allows a caller to begin redirecting rendering to a layer. All rendering operations are valid in a layer. The location of the layer is affected by the world transform set on the render target. </p><p>Each <strong>PushLayer</strong> must have a matching <strong>PopLayer</strong> call. If there are more <strong>PopLayer</strong> calls than <strong>PushLayer</strong> calls, the render target is placed into an error state. If <strong>Flush</strong> is called before all outstanding layers are popped, the render target is placed into an error state, and an error is returned. The error state can be cleared by a call to <strong>EndDraw</strong>.</p><p>A particular <strong><see cref=\"T:SharpDX.Direct2D1.Layer\"/></strong> resource can be active only at one time. In other words, you cannot call a <strong>PushLayer</strong> method, and then immediately follow  with another <strong>PushLayer</strong> method with the same layer resource. Instead, you must call the second <strong>PushLayer</strong> method with different layer resources. \t\n            </p><p>This method doesn't return an error code if it fails. To determine whether a drawing operation (such as <strong>PushLayer</strong>) failed, check the result returned by the <strong><see cref=\"M:SharpDX.Direct2D1.RenderTarget.EndDraw(System.Int64@,System.Int64@)\"/></strong> or <strong><see cref=\"M:SharpDX.Direct2D1.RenderTarget.Flush(System.Int64@,System.Int64@)\"/></strong> methods. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1RenderTarget::PushLayer']/*\"/>\t\n            <msdn-id>dd316869</msdn-id>\t\n            <unmanaged>void ID2D1RenderTarget::PushLayer([In] const D2D1_LAYER_PARAMETERS* layerParameters,[In] ID2D1Layer* layer)</unmanaged>\t\n            <unmanaged-short>ID2D1RenderTarget::PushLayer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RenderTarget.PopLayer\">\n            <summary>\t\n            <p>Stops redirecting drawing operations to the layer that is specified by the last <strong>PushLayer</strong> call. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>A <strong>PopLayer</strong> must match a previous <strong>PushLayer</strong> call.</p><p>This method doesn't return an error code if it fails. To determine whether a drawing operation (such as <strong>PopLayer</strong>) failed, check the result returned by the <strong><see cref=\"M:SharpDX.Direct2D1.RenderTarget.EndDraw(System.Int64@,System.Int64@)\"/></strong> or <strong><see cref=\"M:SharpDX.Direct2D1.RenderTarget.Flush(System.Int64@,System.Int64@)\"/></strong> methods. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1RenderTarget::PopLayer']/*\"/>\t\n            <msdn-id>dd316852</msdn-id>\t\n            <unmanaged>void ID2D1RenderTarget::PopLayer()</unmanaged>\t\n            <unmanaged-short>ID2D1RenderTarget::PopLayer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RenderTarget.Flush(System.Int64@,System.Int64@)\">\n            <summary>\t\n            <p>Executes all pending drawing commands. </p>\t\n            </summary>\t\n            <param name=\"tag1\"><dd>  <p>When this method returns, contains the tag for drawing operations that caused errors or 0 if there were no errors. This parameter is passed uninitialized.</p> </dd></param>\t\n            <param name=\"tag2\"><dd>  <p>When this method returns, contains the tag for drawing operations that caused errors or 0 if there were no errors. This parameter is passed uninitialized.</p> </dd></param>\t\n            <returns><p>If the method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code and sets <em>tag1</em> and <em>tag2</em> to the tags that were active when the error occurred. If no error occurred, this method sets the error tag state to be (0,0).</p></returns>\t\n            <remarks>\t\n            <p>This command does not flush the device that is associated with the render target.  </p><p>Calling this method resets the error state of the render target.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1RenderTarget::Flush']/*\"/>\t\n            <msdn-id>dd316801</msdn-id>\t\n            <unmanaged>HRESULT ID2D1RenderTarget::Flush([Out, Optional] unsigned longlong* tag1,[Out, Optional] unsigned longlong* tag2)</unmanaged>\t\n            <unmanaged-short>ID2D1RenderTarget::Flush</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RenderTarget.SaveDrawingState(SharpDX.Direct2D1.DrawingStateBlock)\">\n            <summary>\t\n            <p>Saves the current drawing state to the specified <strong><see cref=\"T:SharpDX.Direct2D1.DrawingStateBlock\"/></strong>.</p>\t\n            </summary>\t\n            <param name=\"drawingStateBlock\">No documentation.</param>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1RenderTarget::SaveDrawingState']/*\"/>\t\n            <msdn-id>dd316876</msdn-id>\t\n            <unmanaged>void ID2D1RenderTarget::SaveDrawingState([InOut] ID2D1DrawingStateBlock* drawingStateBlock)</unmanaged>\t\n            <unmanaged-short>ID2D1RenderTarget::SaveDrawingState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RenderTarget.RestoreDrawingState(SharpDX.Direct2D1.DrawingStateBlock)\">\n            <summary>\t\n            <p>Sets the render target's drawing state to that of the specified <strong><see cref=\"T:SharpDX.Direct2D1.DrawingStateBlock\"/></strong>.</p>\t\n            </summary>\t\n            <param name=\"drawingStateBlock\">No documentation.</param>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1RenderTarget::RestoreDrawingState']/*\"/>\t\n            <msdn-id>dd316872</msdn-id>\t\n            <unmanaged>void ID2D1RenderTarget::RestoreDrawingState([In] ID2D1DrawingStateBlock* drawingStateBlock)</unmanaged>\t\n            <unmanaged-short>ID2D1RenderTarget::RestoreDrawingState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RenderTarget.PushAxisAlignedClip(SharpDX.RectangleF,SharpDX.Direct2D1.AntialiasMode)\">\n            <summary>\t\n            <p>Specifies a rectangle to which all subsequent drawing operations are clipped. </p>\t\n            </summary>\t\n            <param name=\"clipRect\"><dd>  <p>The size and position of the clipping area, in device-independent pixels.</p> </dd></param>\t\n            <param name=\"antialiasMode\"><dd>  <p>The antialiasing mode that is used to draw the edges of clip rects that have subpixel boundaries, and to blend the clip with the scene contents. The blending is performed once when the <strong>PopAxisAlignedClip</strong> method is called, and does not apply to each primitive within the layer. </p> </dd></param>\t\n            <remarks>\t\n            <p>The <em>clipRect</em> is transformed by the current world transform set on the render target. After the transform is applied to the <em>clipRect</em> that is passed in, the axis-aligned bounding box for the <em>clipRect</em> is computed.  For efficiency, the contents are clipped to this axis-aligned bounding box and not to the original <em>clipRect</em> that is passed in. </p><p>The following diagrams show how a rotation transform is applied to the render target, the resulting <em>clipRect</em>, and  a calculated axis-aligned bounding box.</p><ol> <li> <p>Assume the rectangle in the following illustration is a render target that is aligned to the screen pixels.</p> <p></p> </li> <li> <p>Apply a rotation transform to the render target. In the following illustration, the black rectangle represents the original render target and the red dashed rectangle represents the transformed render target.</p> <p></p> </li> <li> <p>After calling <strong>PushAxisAlignedClip</strong>, the rotation transform is applied to the <em>clipRect</em>. In the following illustration, the blue rectangle represents the transformed <em>clipRect</em>.</p> <p></p> </li> <li> <p>The axis-aligned bounding box is calculated. The green dashed rectangle represents the bounding box in the following illustration. All contents are clipped to this axis-aligned bounding box.</p> <p></p> </li> </ol><p><strong>Note</strong>??If rendering operations fail or if <strong>PopAxisAlignedClip</strong> is not called, clip rects may cause some artifacts on the render target. <strong>PopAxisAlignedClip</strong> can be considered a drawing operation that is designed to fix the borders of a clipping region. Without this call, the borders of a clipped area may be not antialiased or otherwise corrected.</p><p>The <strong>PushAxisAlignedClip</strong> and <strong>PopAxisAlignedClip</strong> must match. Otherwise, the error state is set. For the render target to continue receiving new commands, you can call <strong>Flush</strong> to clear the error. </p><p>A           <strong>PushAxisAlignedClip</strong> and <strong>PopAxisAlignedClip</strong> pair can occur around or within a PushLayer and PopLayer, but cannot overlap. For example, the sequence of <strong>PushAxisAlignedClip</strong>, <strong>PushLayer</strong>, <strong>PopLayer</strong>, <strong>PopAxisAlignedClip</strong> is valid, but the sequence of <strong>PushAxisAlignedClip</strong>, <strong>PushLayer</strong>, <strong>PopAxisAlignedClip</strong>, <strong>PopLayer</strong> is invalid.</p><p>This method doesn't return an error code if it fails. To determine whether a drawing operation (such as <strong>PushAxisAlignedClip</strong>) failed, check the result returned by the <strong><see cref=\"M:SharpDX.Direct2D1.RenderTarget.EndDraw(System.Int64@,System.Int64@)\"/></strong> or <strong><see cref=\"M:SharpDX.Direct2D1.RenderTarget.Flush(System.Int64@,System.Int64@)\"/></strong> methods. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1RenderTarget::PushAxisAlignedClip']/*\"/>\t\n            <msdn-id>dd316860</msdn-id>\t\n            <unmanaged>void ID2D1RenderTarget::PushAxisAlignedClip([In] const D2D_RECT_F* clipRect,[In] D2D1_ANTIALIAS_MODE antialiasMode)</unmanaged>\t\n            <unmanaged-short>ID2D1RenderTarget::PushAxisAlignedClip</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RenderTarget.PopAxisAlignedClip\">\n            <summary>\t\n            <p>Removes the last axis-aligned clip from the render target. After this method is called, the clip is no longer applied to subsequent drawing operations. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>A <strong>PushAxisAlignedClip</strong>/<strong>PopAxisAlignedClip</strong> pair can occur around or within a <strong>PushLayer</strong>/<strong>PopLayer</strong> pair, but may not overlap. For example, a <strong>PushAxisAlignedClip</strong>, <strong>PushLayer</strong>, <strong>PopLayer</strong>, <strong>PopAxisAlignedClip</strong> sequence is valid, but a <strong>PushAxisAlignedClip</strong>, <strong>PushLayer</strong>, <strong>PopAxisAlignedClip</strong>, <strong>PopLayer</strong> sequence is not. </p><p><strong>PopAxisAlignedClip</strong> must be called once for every call to <strong>PushAxisAlignedClip</strong>.</p><p>For an example, see How to Clip with an Axis-Aligned Clip Rectangle.</p><p>This method doesn't return an error code if it fails. To determine whether a drawing operation (such as <strong>PopAxisAlignedClip</strong>) failed, check the result returned by the <strong><see cref=\"M:SharpDX.Direct2D1.RenderTarget.EndDraw(System.Int64@,System.Int64@)\"/></strong> or <strong><see cref=\"M:SharpDX.Direct2D1.RenderTarget.Flush(System.Int64@,System.Int64@)\"/></strong> methods. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1RenderTarget::PopAxisAlignedClip']/*\"/>\t\n            <msdn-id>dd316850</msdn-id>\t\n            <unmanaged>void ID2D1RenderTarget::PopAxisAlignedClip()</unmanaged>\t\n            <unmanaged-short>ID2D1RenderTarget::PopAxisAlignedClip</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RenderTarget.Clear(System.Nullable{SharpDX.Color4})\">\n            <summary>\t\n            <p>Clears the drawing area to the specified color. </p>\t\n            </summary>\t\n            <param name=\"clearColor\"><dd>  <p>The color to which the drawing area is cleared.</p> </dd></param>\t\n            <remarks>\t\n            <p>Direct2D interprets the <em>clearColor</em> as straight alpha (not premultiplied).  If the render target's alpha mode is <strong><see cref=\"F:SharpDX.Direct2D1.AlphaMode.Ignore\"/></strong>, the alpha channel of <em>clearColor</em> is ignored and replaced with 1.0f (fully opaque).</p><p>If the render target has an active clip (specified by <strong>PushAxisAlignedClip</strong>), the clear command is applied only to the area within the clip region.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1RenderTarget::Clear']/*\"/>\t\n            <msdn-id>dd371772</msdn-id>\t\n            <unmanaged>void ID2D1RenderTarget::Clear([In, Optional] const D2D_COLOR_F* clearColor)</unmanaged>\t\n            <unmanaged-short>ID2D1RenderTarget::Clear</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RenderTarget.BeginDraw\">\n            <summary>\t\n            <p>Initiates drawing on this render target. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Drawing operations can only be issued between a <strong>BeginDraw</strong> and <strong>EndDraw</strong> call.</p><p>BeginDraw and EndDraw are used to indicate that a render target is in use by the Direct2D system. Different implementations of <strong><see cref=\"T:SharpDX.Direct2D1.RenderTarget\"/></strong> might behave differently when <strong>BeginDraw</strong> is called. An <strong><see cref=\"T:SharpDX.Direct2D1.BitmapRenderTarget\"/></strong> may be locked between <strong>BeginDraw</strong>/<strong>EndDraw</strong> calls, a DXGI surface render target might be acquired on <strong>BeginDraw</strong> and released on <strong>EndDraw</strong>, while an <strong><see cref=\"T:SharpDX.Direct2D1.WindowRenderTarget\"/></strong> may begin batching at <strong>BeginDraw</strong> and may present on <strong>EndDraw</strong>, for example.</p><p> The BeginDraw method must be called before rendering operations can be called, though state-setting and state-retrieval operations can be performed even outside of <strong>BeginDraw</strong>/<strong>EndDraw</strong>. </p><p>After <strong>BeginDraw</strong> is called, a render target will normally build up a batch of rendering commands, but defer processing of these commands until either an internal buffer is full, the <strong>Flush</strong> method is called, or until <strong>EndDraw</strong> is called. The <strong>EndDraw</strong> method causes any batched drawing operations to complete, and then returns an <see cref=\"T:SharpDX.Result\"/> indicating the success of the operations and, optionally, the tag state of the render target at the time the error occurred. The <strong>EndDraw</strong> method always succeeds: it should not be called twice even if a previous <strong>EndDraw</strong> resulted in a failing <see cref=\"T:SharpDX.Result\"/>. </p><p>If <strong>EndDraw</strong> is called without a matched call to <strong>BeginDraw</strong>, it returns an error indicating that <strong>BeginDraw</strong> must be called before <strong>EndDraw</strong>. Calling <strong>BeginDraw</strong> twice on a render target puts the target into an error state where nothing further is drawn, and returns an appropriate <see cref=\"T:SharpDX.Result\"/> and error information when <strong>EndDraw</strong> is called.\t\n            </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1RenderTarget::BeginDraw']/*\"/>\t\n            <msdn-id>dd371768</msdn-id>\t\n            <unmanaged>void ID2D1RenderTarget::BeginDraw()</unmanaged>\t\n            <unmanaged-short>ID2D1RenderTarget::BeginDraw</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RenderTarget.EndDraw(System.Int64@,System.Int64@)\">\n            <summary>\t\n            <p>Ends drawing operations  on the render target and indicates the current error state and associated tags. </p>\t\n            </summary>\t\n            <param name=\"tag1\"><dd>  <p>When this method returns, contains the tag for drawing operations that caused errors or 0 if there were no errors. This parameter is passed uninitialized.</p> </dd></param>\t\n            <param name=\"tag2\"><dd>  <p>When this method returns, contains the tag for drawing operations that caused errors or 0 if there were no errors. This parameter is passed uninitialized.</p> </dd></param>\t\n            <returns><p>If the method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code and sets <em>tag1</em> and <em>tag2</em> to the tags that were active when the error occurred. </p></returns>\t\n            <remarks>\t\n            <p>Drawing operations can only be issued between a <strong>BeginDraw</strong> and <strong>EndDraw</strong> call.</p><p> <strong>BeginDraw</strong> and <strong>EndDraw</strong> are use to indicate that a render target is in use by the Direct2D system. Different implementations of <strong><see cref=\"T:SharpDX.Direct2D1.RenderTarget\"/></strong> might behave differently when <strong>BeginDraw</strong> is called. An <strong><see cref=\"T:SharpDX.Direct2D1.BitmapRenderTarget\"/></strong> may be locked between <strong>BeginDraw</strong>/<strong>EndDraw</strong> calls, a DXGI surface render target might be acquired on <strong>BeginDraw</strong> and released on <strong>EndDraw</strong>, while an <strong><see cref=\"T:SharpDX.Direct2D1.WindowRenderTarget\"/></strong> may begin batching at <strong>BeginDraw</strong> and may present on <strong>EndDraw</strong>, for example.</p><p> The <strong>BeginDraw</strong> method must be called before rendering operations can be called, though state-setting and state-retrieval operations can be performed even outside of <strong>BeginDraw</strong>/<strong>EndDraw</strong>. </p><p>After <strong>BeginDraw</strong> is called, a render target will normally build up a batch of rendering commands, but defer processing of these commands until either an internal buffer is full, the <strong>Flush</strong> method is called, or until <strong>EndDraw</strong> is called. The <strong>EndDraw</strong> method causes any batched drawing operations to complete, and then returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> indicating the success of the operations and, optionally, the tag state of the render target at the time the error occurred. The <strong>EndDraw</strong> method always succeeds: it should not be called twice even if a previous <strong>EndDraw</strong> resulted in a failing <strong><see cref=\"T:SharpDX.Result\"/></strong>. </p><p>If <strong>EndDraw</strong> is called without a matched call to <strong>BeginDraw</strong>, it returns an error indicating that <strong>BeginDraw</strong> must be called before <strong>EndDraw</strong>. Calling <strong>BeginDraw</strong> twice on a render target puts the target into an error state where nothing further is drawn, and returns an appropriate <strong><see cref=\"T:SharpDX.Result\"/></strong> and error information when <strong>EndDraw</strong> is called.\t\n            </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1RenderTarget::EndDraw']/*\"/>\t\n            <msdn-id>dd371924</msdn-id>\t\n            <unmanaged>HRESULT ID2D1RenderTarget::EndDraw([Out, Optional] unsigned longlong* tag1,[Out, Optional] unsigned longlong* tag2)</unmanaged>\t\n            <unmanaged-short>ID2D1RenderTarget::EndDraw</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RenderTarget.GetPixelFormat\">\n            <summary>\t\n            <p>Retrieves the pixel format and alpha mode of the render target. </p>\t\n            </summary>\t\n            <returns><p>The pixel format and alpha mode of the render target.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1RenderTarget::GetPixelFormat']/*\"/>\t\n            <msdn-id>dd316814</msdn-id>\t\n            <unmanaged>D2D1_PIXEL_FORMAT ID2D1RenderTarget::GetPixelFormat()</unmanaged>\t\n            <unmanaged-short>ID2D1RenderTarget::GetPixelFormat</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RenderTarget.SetDpi(System.Single,System.Single)\">\n            <summary>\t\n            <p>Sets the dots per inch (DPI) of the render target. </p>\t\n            </summary>\t\n            <param name=\"dpiX\"><dd>  <p>A value greater than or equal to zero that specifies the horizontal DPI of the render target.</p> </dd></param>\t\n            <param name=\"dpiY\"><dd>  <p>A value greater than or equal to zero that specifies the vertical DPI of the render target.</p> </dd></param>\t\n            <remarks>\t\n            <p>This method specifies the mapping from pixel space to device-independent space  for the render target.  If both <em>dpiX</em> and <em>dpiY</em> are 0, the factory-read system DPI is chosen. If one parameter is zero and the other unspecified, the DPI is not changed.</p><p>For <strong><see cref=\"T:SharpDX.Direct2D1.WindowRenderTarget\"/></strong>, the DPI defaults to the most recently factory-read system DPI. The default value for all other render targets is 96 DPI.  </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1RenderTarget::SetDpi']/*\"/>\t\n            <msdn-id>dd316887</msdn-id>\t\n            <unmanaged>void ID2D1RenderTarget::SetDpi([In] float dpiX,[In] float dpiY)</unmanaged>\t\n            <unmanaged-short>ID2D1RenderTarget::SetDpi</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RenderTarget.GetDpi(System.Single@,System.Single@)\">\n            <summary>\t\n            <p>Return the render target's dots per inch (DPI).</p>\t\n            </summary>\t\n            <param name=\"dpiX\"><dd>  <p>When this method returns, contains the horizontal DPI of the render target. This parameter is passed uninitialized.</p> </dd></param>\t\n            <param name=\"dpiY\"><dd>  <p>When this method returns, contains the vertical DPI of the render target. This parameter is passed uninitialized.</p> </dd></param>\t\n            <remarks>\t\n            <p>This method indicates the mapping from pixel space to device-independent space  for the render target.  </p><p>For <strong><see cref=\"T:SharpDX.Direct2D1.WindowRenderTarget\"/></strong>, the DPI defaults to the most recently factory-read system DPI. The default value for all other render targets is 96 DPI.  </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1RenderTarget::GetDpi']/*\"/>\t\n            <msdn-id>dd316809</msdn-id>\t\n            <unmanaged>void ID2D1RenderTarget::GetDpi([Out] float* dpiX,[Out] float* dpiY)</unmanaged>\t\n            <unmanaged-short>ID2D1RenderTarget::GetDpi</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RenderTarget.GetSize\">\n            <summary>\t\n            <p>Returns the size of the render target in device-independent pixels.</p>\t\n            </summary>\t\n            <returns><p>The current size of the render target in device-independent pixels.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1RenderTarget::GetSize']/*\"/>\t\n            <msdn-id>dd316823</msdn-id>\t\n            <unmanaged>D2D_SIZE_F ID2D1RenderTarget::GetSize()</unmanaged>\t\n            <unmanaged-short>ID2D1RenderTarget::GetSize</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RenderTarget.GetPixelSize\">\n            <summary>\t\n            <p>Returns the size of the render target in device pixels.</p>\t\n            </summary>\t\n            <returns><p>The size of the render target in device pixels.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1RenderTarget::GetPixelSize']/*\"/>\t\n            <msdn-id>dd316820</msdn-id>\t\n            <unmanaged>D2D_SIZE_U ID2D1RenderTarget::GetPixelSize()</unmanaged>\t\n            <unmanaged-short>ID2D1RenderTarget::GetPixelSize</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RenderTarget.GetMaximumBitmapSize\">\n            <summary>\t\n            <p>Gets the maximum size, in device-dependent units (pixels), of  any one bitmap dimension supported by the render target.</p>\t\n            </summary>\t\n            <returns><p> The maximum size, in pixels, of  any one bitmap dimension supported by the render target.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1RenderTarget::GetMaximumBitmapSize']/*\"/>\t\n            <msdn-id>dd742853</msdn-id>\t\n            <unmanaged>unsigned int ID2D1RenderTarget::GetMaximumBitmapSize()</unmanaged>\t\n            <unmanaged-short>ID2D1RenderTarget::GetMaximumBitmapSize</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RenderTarget.IsSupported(SharpDX.Direct2D1.RenderTargetProperties@)\">\n            <summary>\t\n            <p>Indicates whether the render target supports the specified properties.</p>\t\n            </summary>\t\n            <param name=\"renderTargetProperties\"><dd>  <p>The render target properties to test.</p> </dd></param>\t\n            <returns><p><strong>TRUE</strong> if the specified render target properties are supported by this render target; otherwise, <strong><see cref=\"F:SharpDX.Result.False\"/></strong>.</p></returns>\t\n            <remarks>\t\n            <p>This method does not evaluate the DPI settings specified by the <em>renderTargetProperties</em> parameter.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1RenderTarget::IsSupported']/*\"/>\t\n            <msdn-id>dd742854</msdn-id>\t\n            <unmanaged>BOOL ID2D1RenderTarget::IsSupported([In] const D2D1_RENDER_TARGET_PROPERTIES* renderTargetProperties)</unmanaged>\t\n            <unmanaged-short>ID2D1RenderTarget::IsSupported</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RenderTarget.#ctor(SharpDX.Direct2D1.Factory,SharpDX.DXGI.Surface,SharpDX.Direct2D1.RenderTargetProperties)\">\n            <summary>\t\n            Creates a render target that draws to a DirectX Graphics Infrastructure (DXGI) surface. \t\n            </summary>\t\n            <remarks>\t\n            To write to a Direct3D surface, you obtain an <see cref=\"T:SharpDX.DXGI.Surface\"/> and pass it to the {{CreateDxgiSurfaceRenderTarget}} method to create a DXGI surface render target; you can then use the DXGI surface render target to draw 2-D content to the DXGI surface.  A DXGI surface render target is a type of <see cref=\"T:SharpDX.Direct2D1.RenderTarget\"/>. Like other Direct2D render targets, you can use it to create resources and issue drawing commands. The DXGI surface render target and the DXGI surface must use the same DXGI format. If you specify the {{DXGI_FORMAT_UNKOWN}} format when you create the render target, it will automatically use the surface's format.The DXGI surface render target does not perform DXGI surface synchronization. To work with Direct2D, the Direct3D device that provides the <see cref=\"T:SharpDX.DXGI.Surface\"/> must be created with the D3D10_CREATE_DEVICE_BGRA_SUPPORT flag.For more information about creating and using DXGI surface render targets, see the {{Direct2D and Direct3D Interoperability Overview}}.When you create a render target and hardware acceleration is available, you allocate resources on the computer's GPU. By creating a render target once and retaining it as long as possible, you gain performance benefits. Your application should create render targets once and hold onto them for the life of the application or until the render target's {{EndDraw}} method returns the {{D2DERR_RECREATE_TARGET}} error. When you receive this error, you need to recreate the render target (and any resources it created). \t\n            </remarks>\t\n            <param name=\"factory\">an instance of <see cref=\"T:SharpDX.Direct2D1.Factory\"/></param>\n            <param name=\"dxgiSurface\">The dxgi surface to bind this render target to</param>\n            <param name=\"properties\">The rendering mode, pixel format, remoting options, DPI information, and the minimum DirectX support required for hardware rendering. For information about supported pixel formats, see  {{Supported Pixel  Formats and Alpha Modes}}.</param>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RenderTarget.DrawBitmap(SharpDX.Direct2D1.Bitmap,System.Single,SharpDX.Direct2D1.BitmapInterpolationMode)\">\n            <summary>\t\n            Draws the specified bitmap after scaling it to the size of the specified rectangle. \t\n            </summary>\t\n            <remarks>\t\n            This method doesn't return an error code if it fails. To determine whether a drawing operation (such as {{DrawBitmap}}) failed, check the result returned by the <see cref=\"M:SharpDX.Direct2D1.RenderTarget.EndDraw(System.Int64@,System.Int64@)\" /> or <see cref=\"M:SharpDX.Direct2D1.RenderTarget.Flush(System.Int64@,System.Int64@)\" /> methods.  \t\n            </remarks>\t\n            <param name=\"bitmap\">The bitmap to render. </param>\n            <param name=\"opacity\">A value between 0.0f and 1.0f, inclusive, that specifies an opacity value to apply to the bitmap; this value is multiplied against the alpha values of the bitmap's contents.  The default value is 1.0f. </param>\n            <param name=\"interpolationMode\">The interpolation mode to use if the bitmap is scaled or rotated by the drawing operation. The default value is <see cref=\"F:SharpDX.Direct2D1.BitmapInterpolationMode.Linear\" />.  </param>\n            <unmanaged>void ID2D1RenderTarget::DrawBitmap([In] ID2D1Bitmap* bitmap,[In, Optional] const D2D1_RECT_F* destinationRectangle,[None] float opacity,[None] D2D1_BITMAP_INTERPOLATION_MODE interpolationMode,[In, Optional] const D2D1_RECT_F* sourceRectangle)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RenderTarget.DrawBitmap(SharpDX.Direct2D1.Bitmap,SharpDX.RectangleF,System.Single,SharpDX.Direct2D1.BitmapInterpolationMode)\">\n            <summary>\t\n            Draws the specified bitmap after scaling it to the size of the specified rectangle. \t\n            </summary>\t\n            <remarks>\t\n            This method doesn't return an error code if it fails. To determine whether a drawing operation (such as {{DrawBitmap}}) failed, check the result returned by the <see cref=\"M:SharpDX.Direct2D1.RenderTarget.EndDraw\"/> or <see cref=\"M:SharpDX.Direct2D1.RenderTarget.Flush\"/> methods.  \t\n            </remarks>\t\n            <param name=\"bitmap\">The bitmap to render. </param>\n            <param name=\"destinationRectangle\">The size and position, in device-independent pixels in the render target's coordinate space, of the area to which the bitmap is drawn; NULL to draw the selected portion of the bitmap at the origin of the render target.  If the rectangle is specified but not well-ordered, nothing is drawn, but the render target does not enter an error state. </param>\n            <param name=\"opacity\">A value between 0.0f and 1.0f, inclusive, that specifies an opacity value to apply to the bitmap; this value is multiplied against the alpha values of the bitmap's contents.  The default value is 1.0f. </param>\n            <param name=\"interpolationMode\">The interpolation mode to use if the bitmap is scaled or rotated by the drawing operation. The default value is <see cref=\"F:SharpDX.Direct2D1.BitmapInterpolationMode.Linear\"/>.  </param>\n            <unmanaged>void ID2D1RenderTarget::DrawBitmap([In] ID2D1Bitmap* bitmap,[In, Optional] const D2D1_RECT_F* destinationRectangle,[None] float opacity,[None] D2D1_BITMAP_INTERPOLATION_MODE interpolationMode,[In, Optional] const D2D1_RECT_F* sourceRectangle)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RenderTarget.DrawBitmap(SharpDX.Direct2D1.Bitmap,System.Single,SharpDX.Direct2D1.BitmapInterpolationMode,SharpDX.RectangleF)\">\n            <summary>\t\n            Draws the specified bitmap after scaling it to the size of the specified rectangle. \t\n            </summary>\t\n            <remarks>\t\n            This method doesn't return an error code if it fails. To determine whether a drawing operation (such as {{DrawBitmap}}) failed, check the result returned by the <see cref=\"M:SharpDX.Direct2D1.RenderTarget.EndDraw\"/> or <see cref=\"M:SharpDX.Direct2D1.RenderTarget.Flush(System.Int64@,System.Int64@)\"/> methods.  \t\n            </remarks>\t\n            <param name=\"bitmap\">The bitmap to render. </param>\n            <param name=\"opacity\">A value between 0.0f and 1.0f, inclusive, that specifies an opacity value to apply to the bitmap; this value is multiplied against the alpha values of the bitmap's contents.  The default value is 1.0f. </param>\n            <param name=\"interpolationMode\">The interpolation mode to use if the bitmap is scaled or rotated by the drawing operation. The default value is <see cref=\"F:SharpDX.Direct2D1.BitmapInterpolationMode.Linear\"/>.  </param>\n            <param name=\"sourceRectangle\">The size and position, in device-independent pixels in the bitmap's coordinate space, of the area within the bitmap to be drawn; NULL to draw the entire bitmap.  </param>\n            <unmanaged>void ID2D1RenderTarget::DrawBitmap([In] ID2D1Bitmap* bitmap,[In, Optional] const D2D1_RECT_F* destinationRectangle,[None] float opacity,[None] D2D1_BITMAP_INTERPOLATION_MODE interpolationMode,[In, Optional] const D2D1_RECT_F* sourceRectangle)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RenderTarget.DrawEllipse(SharpDX.Direct2D1.Ellipse,SharpDX.Direct2D1.Brush)\">\n            <summary>\t\n            Draws the outline of the specified ellipse using the specified stroke style. \t\n            </summary>\t\n            <remarks>\t\n            The {{DrawEllipse}} method doesn't return an error code if it fails. To determine whether a drawing operation (such as DrawEllipse) failed, check the result returned by the <see cref=\"M:SharpDX.Direct2D1.RenderTarget.EndDraw(System.Int64@,System.Int64@)\" /> or <see cref=\"M:SharpDX.Direct2D1.RenderTarget.Flush(System.Int64@,System.Int64@)\" /> methods.  \t\n            </remarks>\t\n            <param name=\"ellipse\">The position and radius of the ellipse to draw, in device-independent pixels. </param>\n            <param name=\"brush\">The brush used to paint the ellipse's outline. </param>\n            <unmanaged>void ID2D1RenderTarget::DrawEllipse([In] const D2D1_ELLIPSE* ellipse,[In] ID2D1Brush* brush,[None] float strokeWidth,[In, Optional] ID2D1StrokeStyle* strokeStyle)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RenderTarget.DrawEllipse(SharpDX.Direct2D1.Ellipse,SharpDX.Direct2D1.Brush,System.Single)\">\n            <summary>\t\n            Draws the outline of the specified ellipse using the specified stroke style. \t\n            </summary>\t\n            <remarks>\t\n            The {{DrawEllipse}} method doesn't return an error code if it fails. To determine whether a drawing operation (such as DrawEllipse) failed, check the result returned by the <see cref=\"M:SharpDX.Direct2D1.RenderTarget.EndDraw(System.Int64@,System.Int64@)\" /> or <see cref=\"M:SharpDX.Direct2D1.RenderTarget.Flush(System.Int64@,System.Int64@)\" /> methods.  \t\n            </remarks>\t\n            <param name=\"ellipse\">The position and radius of the ellipse to draw, in device-independent pixels. </param>\n            <param name=\"brush\">The brush used to paint the ellipse's outline. </param>\n            <param name=\"strokeWidth\">The thickness of the ellipse's stroke. The stroke is centered on the ellipse's outline. </param>\n            <unmanaged>void ID2D1RenderTarget::DrawEllipse([In] const D2D1_ELLIPSE* ellipse,[In] ID2D1Brush* brush,[None] float strokeWidth,[In, Optional] ID2D1StrokeStyle* strokeStyle)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RenderTarget.DrawGeometry(SharpDX.Direct2D1.Geometry,SharpDX.Direct2D1.Brush)\">\n            <summary>\t\n            Draws the outline of the specified geometry. \t\n            </summary>\t\n            <remarks>\t\n            This method doesn't return an error code if it fails. To determine whether a drawing operation (such as DrawGeometry) failed, check the result returned by the <see cref=\"M:SharpDX.Direct2D1.RenderTarget.EndDraw(System.Int64@,System.Int64@)\" /> or <see cref=\"M:SharpDX.Direct2D1.RenderTarget.Flush(System.Int64@,System.Int64@)\" /> methods.  \t\n            </remarks>\t\n            <param name=\"geometry\">The geometry to draw. </param>\n            <param name=\"brush\">The brush used to paint the geometry's stroke. </param>\n            <unmanaged>void ID2D1RenderTarget::DrawGeometry([In] ID2D1Geometry* geometry,[In] ID2D1Brush* brush,[None] float strokeWidth,[In, Optional] ID2D1StrokeStyle* strokeStyle)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RenderTarget.DrawGeometry(SharpDX.Direct2D1.Geometry,SharpDX.Direct2D1.Brush,System.Single)\">\n            <summary>\t\n            Draws the outline of the specified geometry. \t\n            </summary>\t\n            <remarks>\t\n            This method doesn't return an error code if it fails. To determine whether a drawing operation (such as DrawGeometry) failed, check the result returned by the <see cref=\"M:SharpDX.Direct2D1.RenderTarget.EndDraw(System.Int64@,System.Int64@)\" /> or <see cref=\"M:SharpDX.Direct2D1.RenderTarget.Flush(System.Int64@,System.Int64@)\" /> methods.  \t\n            </remarks>\t\n            <param name=\"geometry\">The geometry to draw. </param>\n            <param name=\"brush\">The brush used to paint the geometry's stroke. </param>\n            <param name=\"strokeWidth\">The thickness of the geometry's stroke. The stroke is centered on the geometry's outline. </param>\n            <unmanaged>void ID2D1RenderTarget::DrawGeometry([In] ID2D1Geometry* geometry,[In] ID2D1Brush* brush,[None] float strokeWidth,[In, Optional] ID2D1StrokeStyle* strokeStyle)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RenderTarget.DrawLine(SharpDX.DrawingPointF,SharpDX.DrawingPointF,SharpDX.Direct2D1.Brush)\">\n            <summary>\t\n            Draws a line between the specified points. \t\n            </summary>\t\n            <remarks>\t\n            This method doesn't return an error code if it fails. To determine whether a drawing operation (such as DrawLine) failed, check the result returned by the <see cref=\"M:SharpDX.Direct2D1.RenderTarget.EndDraw(System.Int64@,System.Int64@)\" /> or <see cref=\"M:SharpDX.Direct2D1.RenderTarget.Flush(System.Int64@,System.Int64@)\" /> methods.  \t\n            </remarks>\t\n            <param name=\"point0\">The start point of the line, in device-independent pixels. </param>\n            <param name=\"point1\">The end point of the line, in device-independent pixels. </param>\n            <param name=\"brush\">The brush used to paint the line's stroke. </param>\n            <unmanaged>void ID2D1RenderTarget::DrawLine([None] D2D1_POINT_2F point0,[None] D2D1_POINT_2F point1,[In] ID2D1Brush* brush,[None] float strokeWidth,[In, Optional] ID2D1StrokeStyle* strokeStyle)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RenderTarget.DrawLine(SharpDX.DrawingPointF,SharpDX.DrawingPointF,SharpDX.Direct2D1.Brush,System.Single)\">\n            <summary>\t\n            Draws a line between the specified points. \t\n            </summary>\t\n            <remarks>\t\n            This method doesn't return an error code if it fails. To determine whether a drawing operation (such as DrawLine) failed, check the result returned by the <see cref=\"M:SharpDX.Direct2D1.RenderTarget.EndDraw(System.Int64@,System.Int64@)\" /> or <see cref=\"M:SharpDX.Direct2D1.RenderTarget.Flush(System.Int64@,System.Int64@)\" /> methods.  \t\n            </remarks>\t\n            <param name=\"point0\">The start point of the line, in device-independent pixels. </param>\n            <param name=\"point1\">The end point of the line, in device-independent pixels. </param>\n            <param name=\"brush\">The brush used to paint the line's stroke. </param>\n            <param name=\"strokeWidth\">A value greater than or equal to 0.0f that specifies the width of the stroke. If this parameter isn't specified, it defaults to 1.0f.  The stroke is centered on the line. </param>\n            <unmanaged>void ID2D1RenderTarget::DrawLine([None] D2D1_POINT_2F point0,[None] D2D1_POINT_2F point1,[In] ID2D1Brush* brush,[None] float strokeWidth,[In, Optional] ID2D1StrokeStyle* strokeStyle)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RenderTarget.DrawRectangle(SharpDX.RectangleF,SharpDX.Direct2D1.Brush)\">\n            <summary>\t\n            Draws the outline of a rectangle that has the specified dimensions. \t\n            </summary>\t\n            <remarks>\t\n            When this method fails, it does not return an error code. To determine whether a drawing method (such as {{DrawRectangle}}) failed, check the result returned by the <see cref=\"M:SharpDX.Direct2D1.RenderTarget.EndDraw(System.Int64@,System.Int64@)\" /> or <see cref=\"M:SharpDX.Direct2D1.RenderTarget.Flush(System.Int64@,System.Int64@)\" /> method.  \t\n            </remarks>\t\n            <param name=\"rect\">The dimensions of the rectangle to draw, in device-independent pixels. </param>\n            <param name=\"brush\">The brush used to paint the rectangle's stroke. </param>\n            <unmanaged>void ID2D1RenderTarget::DrawRectangle([In] const D2D1_RECT_F* rect,[In] ID2D1Brush* brush,[None] float strokeWidth,[In, Optional] ID2D1StrokeStyle* strokeStyle)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RenderTarget.DrawRectangle(SharpDX.RectangleF,SharpDX.Direct2D1.Brush,System.Single)\">\n            <summary>\t\n            Draws the outline of a rectangle that has the specified dimensions and stroke style. \t\n            </summary>\t\n            <remarks>\t\n            When this method fails, it does not return an error code. To determine whether a drawing method (such as {{DrawRectangle}}) failed, check the result returned by the <see cref=\"M:SharpDX.Direct2D1.RenderTarget.EndDraw(System.Int64@,System.Int64@)\" /> or <see cref=\"M:SharpDX.Direct2D1.RenderTarget.Flush(System.Int64@,System.Int64@)\" /> method.  \t\n            </remarks>\t\n            <param name=\"rect\">The dimensions of the rectangle to draw, in device-independent pixels. </param>\n            <param name=\"brush\">The brush used to paint the rectangle's stroke. </param>\n            <param name=\"strokeWidth\">A value greater than or equal to 0.0f that specifies the width of the rectangle's stroke. The stroke is centered on the rectangle's outline. </param>\n            <unmanaged>void ID2D1RenderTarget::DrawRectangle([In] const D2D1_RECT_F* rect,[In] ID2D1Brush* brush,[None] float strokeWidth,[In, Optional] ID2D1StrokeStyle* strokeStyle)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RenderTarget.DrawRoundedRectangle(SharpDX.Direct2D1.RoundedRectangle,SharpDX.Direct2D1.Brush)\">\n            <summary>\t\n            Draws the outline of the specified rounded rectangle.\t\n            </summary>\t\n            <remarks>\t\n            This method doesn't return an error code if it fails. To determine whether a drawing operation (such as {{DrawRoundedRectangle}}) failed, check the result returned by the <see cref=\"M:SharpDX.Direct2D1.RenderTarget.EndDraw(System.Int64@,System.Int64@)\" /> or <see cref=\"M:SharpDX.Direct2D1.RenderTarget.Flush(System.Int64@,System.Int64@)\" /> methods.  \t\n            </remarks>\t\n            <param name=\"roundedRect\">The dimensions of the rounded rectangle to draw, in device-independent pixels. </param>\n            <param name=\"brush\">The brush used to paint the rounded rectangle's outline.  </param>\n            <unmanaged>void ID2D1RenderTarget::DrawRoundedRectangle([In] const D2D1_ROUNDED_RECT* roundedRect,[In] ID2D1Brush* brush,[None] float strokeWidth,[In, Optional] ID2D1StrokeStyle* strokeStyle)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RenderTarget.DrawRoundedRectangle(SharpDX.Direct2D1.RoundedRectangle,SharpDX.Direct2D1.Brush,System.Single)\">\n            <summary>\t\n            Draws the outline of the specified rounded rectangle.\t\n            </summary>\t\n            <remarks>\t\n            This method doesn't return an error code if it fails. To determine whether a drawing operation (such as {{DrawRoundedRectangle}}) failed, check the result returned by the <see cref=\"M:SharpDX.Direct2D1.RenderTarget.EndDraw(System.Int64@,System.Int64@)\" /> or <see cref=\"M:SharpDX.Direct2D1.RenderTarget.Flush(System.Int64@,System.Int64@)\" /> methods.  \t\n            </remarks>\t\n            <param name=\"roundedRect\">The dimensions of the rounded rectangle to draw, in device-independent pixels. </param>\n            <param name=\"brush\">The brush used to paint the rounded rectangle's outline.  </param>\n            <param name=\"strokeWidth\">The width of the rounded rectangle's stroke. The stroke is centered on the rounded rectangle's outline. The default value is 1.0f.  </param>\n            <unmanaged>void ID2D1RenderTarget::DrawRoundedRectangle([In] const D2D1_ROUNDED_RECT* roundedRect,[In] ID2D1Brush* brush,[None] float strokeWidth,[In, Optional] ID2D1StrokeStyle* strokeStyle)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RenderTarget.DrawRoundedRectangle(SharpDX.Direct2D1.RoundedRectangle,SharpDX.Direct2D1.Brush,System.Single,SharpDX.Direct2D1.StrokeStyle)\">\n            <summary>\t\n            Draws the outline of the specified rounded rectangle using the specified stroke style.\t\n            </summary>\t\n            <remarks>\t\n            This method doesn't return an error code if it fails. To determine whether a drawing operation (such as {{DrawRoundedRectangle}}) failed, check the result returned by the <see cref=\"M:SharpDX.Direct2D1.RenderTarget.EndDraw(System.Int64@,System.Int64@)\" /> or <see cref=\"M:SharpDX.Direct2D1.RenderTarget.Flush(System.Int64@,System.Int64@)\" /> methods.  \t\n            </remarks>\t\n            <param name=\"roundedRect\">The dimensions of the rounded rectangle to draw, in device-independent pixels. </param>\n            <param name=\"brush\">The brush used to paint the rounded rectangle's outline.  </param>\n            <param name=\"strokeWidth\">The width of the rounded rectangle's stroke. The stroke is centered on the rounded rectangle's outline. The default value is 1.0f.  </param>\n            <param name=\"strokeStyle\">The style of the rounded rectangle's stroke, or NULL to paint a solid stroke. The default value is NULL. </param>\n            <unmanaged>void ID2D1RenderTarget::DrawRoundedRectangle([In] const D2D1_ROUNDED_RECT* roundedRect,[In] ID2D1Brush* brush,[None] float strokeWidth,[In, Optional] ID2D1StrokeStyle* strokeStyle)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RenderTarget.DrawText(System.String,SharpDX.DirectWrite.TextFormat,SharpDX.RectangleF,SharpDX.Direct2D1.Brush)\">\n            <summary>\t\n            Draws the specified text using the format information provided by an <see cref=\"T:SharpDX.DirectWrite.TextFormat\" /> object. \t\n            </summary>\t\n            <remarks>\t\n            To create an <see cref=\"T:SharpDX.DirectWrite.TextFormat\" /> object, create an <see cref=\"T:SharpDX.DirectWrite.Factory\" /> and call its {{CreateTextFormat}} method. This method doesn't return an error code if it fails. To determine whether a drawing operation (such as {{DrawText}}) failed, check the result returned by the <see cref=\"M:SharpDX.Direct2D1.RenderTarget.EndDraw(System.Int64@,System.Int64@)\" /> or <see cref=\"M:SharpDX.Direct2D1.RenderTarget.Flush(System.Int64@,System.Int64@)\" /> methods.  \t\n            </remarks>\t\n            <param name=\"text\">A reference to an array of Unicode characters to draw.  </param>\n            <param name=\"textFormat\">An object that describes formatting details of the text to draw, such as the font, the font size, and flow direction.   </param>\n            <param name=\"layoutRect\">The size and position of the area in which the text is drawn.  </param>\n            <param name=\"defaultForegroundBrush\">The brush used to paint the text. </param>\n            <unmanaged>void ID2D1RenderTarget::DrawTextA([In, Buffer] const wchar_t* string,[None] int stringLength,[In] IDWriteTextFormat* textFormat,[In] const D2D1_RECT_F* layoutRect,[In] ID2D1Brush* defaultForegroundBrush,[None] D2D1_DRAW_TEXT_OPTIONS options,[None] DWRITE_MEASURING_MODE measuringMode)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RenderTarget.DrawText(System.String,SharpDX.DirectWrite.TextFormat,SharpDX.RectangleF,SharpDX.Direct2D1.Brush,SharpDX.Direct2D1.DrawTextOptions)\">\n            <summary>\t\n            Draws the specified text using the format information provided by an <see cref=\"T:SharpDX.DirectWrite.TextFormat\" /> object. \t\n            </summary>\t\n            <remarks>\t\n            To create an <see cref=\"T:SharpDX.DirectWrite.TextFormat\" /> object, create an <see cref=\"T:SharpDX.DirectWrite.Factory\" /> and call its {{CreateTextFormat}} method. This method doesn't return an error code if it fails. To determine whether a drawing operation (such as {{DrawText}}) failed, check the result returned by the <see cref=\"M:SharpDX.Direct2D1.RenderTarget.EndDraw(System.Int64@,System.Int64@)\" /> or <see cref=\"M:SharpDX.Direct2D1.RenderTarget.Flush(System.Int64@,System.Int64@)\" /> methods.  \t\n            </remarks>\t\n            <param name=\"text\">A reference to an array of Unicode characters to draw.  </param>\n            <param name=\"textFormat\">An object that describes formatting details of the text to draw, such as the font, the font size, and flow direction.   </param>\n            <param name=\"layoutRect\">The size and position of the area in which the text is drawn.  </param>\n            <param name=\"defaultForegroundBrush\">The brush used to paint the text. </param>\n            <param name=\"options\">A value that indicates whether the text should be snapped to pixel boundaries and whether the text should be clipped to the layout rectangle. The default value is <see cref=\"F:SharpDX.Direct2D1.DrawTextOptions.None\" />, which indicates that text should be snapped to pixel boundaries and it should not be clipped to the layout rectangle. </param>\n            <unmanaged>void ID2D1RenderTarget::DrawTextA([In, Buffer] const wchar_t* string,[None] int stringLength,[In] IDWriteTextFormat* textFormat,[In] const D2D1_RECT_F* layoutRect,[In] ID2D1Brush* defaultForegroundBrush,[None] D2D1_DRAW_TEXT_OPTIONS options,[None] DWRITE_MEASURING_MODE measuringMode)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RenderTarget.DrawText(System.String,SharpDX.DirectWrite.TextFormat,SharpDX.RectangleF,SharpDX.Direct2D1.Brush,SharpDX.Direct2D1.DrawTextOptions,SharpDX.Direct2D1.MeasuringMode)\">\n            <summary>\t\n            Draws the specified text using the format information provided by an <see cref=\"T:SharpDX.DirectWrite.TextFormat\" /> object. \t\n            </summary>\t\n            <remarks>\t\n            To create an <see cref=\"T:SharpDX.DirectWrite.TextFormat\" /> object, create an <see cref=\"T:SharpDX.DirectWrite.Factory\" /> and call its {{CreateTextFormat}} method. This method doesn't return an error code if it fails. To determine whether a drawing operation (such as {{DrawText}}) failed, check the result returned by the <see cref=\"M:SharpDX.Direct2D1.RenderTarget.EndDraw(System.Int64@,System.Int64@)\" /> or <see cref=\"M:SharpDX.Direct2D1.RenderTarget.Flush(System.Int64@,System.Int64@)\" /> methods.  \t\n            </remarks>\t\n            <param name=\"text\">A reference to an array of Unicode characters to draw.  </param>\n            <param name=\"textFormat\">An object that describes formatting details of the text to draw, such as the font, the font size, and flow direction.   </param>\n            <param name=\"layoutRect\">The size and position of the area in which the text is drawn.  </param>\n            <param name=\"defaultForegroundBrush\">The brush used to paint the text. </param>\n            <param name=\"options\">A value that indicates whether the text should be snapped to pixel boundaries and whether the text should be clipped to the layout rectangle. The default value is <see cref=\"F:SharpDX.Direct2D1.DrawTextOptions.None\" />, which indicates that text should be snapped to pixel boundaries and it should not be clipped to the layout rectangle. </param>\n            <param name=\"measuringMode\">A value that indicates how glyph metrics are used to measure text when it is formatted.  The default value is DWRITE_MEASURING_MODE_NATURAL.  </param>\n            <unmanaged>void ID2D1RenderTarget::DrawTextA([In, Buffer] const wchar_t* string,[None] int stringLength,[In] IDWriteTextFormat* textFormat,[In] const D2D1_RECT_F* layoutRect,[In] ID2D1Brush* defaultForegroundBrush,[None] D2D1_DRAW_TEXT_OPTIONS options,[None] DWRITE_MEASURING_MODE measuringMode)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RenderTarget.DrawTextLayout(SharpDX.DrawingPointF,SharpDX.DirectWrite.TextLayout,SharpDX.Direct2D1.Brush)\">\n            <summary>\t\n            Draws the formatted text described by the specified <see cref=\"T:SharpDX.DirectWrite.TextLayout\" /> object.\t\n            </summary>\t\n            <remarks>\t\n            When drawing the same text repeatedly, using the DrawTextLayout method is more efficient than using the {{DrawText}} method because the text doesn't need to be formatted and the layout processed with each call. This method doesn't return an error code if it fails. To determine whether a drawing operation (such as DrawTextLayout) failed, check the result returned by the <see cref=\"M:SharpDX.Direct2D1.RenderTarget.EndDraw(System.Int64@,System.Int64@)\" /> or <see cref=\"M:SharpDX.Direct2D1.RenderTarget.Flush(System.Int64@,System.Int64@)\" /> methods.  \t\n            </remarks>\t\n            <param name=\"origin\">The point, described in device-independent pixels, at which the upper-left corner of the text described by textLayout is drawn. </param>\n            <param name=\"textLayout\">The formatted text to draw. Any drawing effects that do not inherit from <see cref=\"T:SharpDX.Direct2D1.Resource\" /> are ignored. If there are drawing effects that inherit from ID2D1Resource that are not brushes, this method fails and the render target is put in an error state.  </param>\n            <param name=\"defaultForegroundBrush\">The brush used to paint any text in textLayout that does not already have a brush associated with it as a drawing effect (specified by the <see cref=\"M:SharpDX.DirectWrite.TextLayout.SetDrawingEffect(SharpDX.ComObject,SharpDX.DirectWrite.TextRange)\" /> method).  </param>\n            <unmanaged>void ID2D1RenderTarget::DrawTextLayout([None] D2D1_POINT_2F origin,[In] IDWriteTextLayout* textLayout,[In] ID2D1Brush* defaultForegroundBrush,[None] D2D1_DRAW_TEXT_OPTIONS options)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RenderTarget.EndDraw\">\n            <summary>\t\n            Ends drawing operations  on the render target and indicates the current error state and associated tags. \t\n            </summary>\t\n            <remarks>\t\n            Drawing operations can only be issued between a {{BeginDraw}} and EndDraw call.BeginDraw and EndDraw are use to indicate that a render target is in use by the Direct2D system. Different implementations of <see cref=\"T:SharpDX.Direct2D1.RenderTarget\"/> might behave differently when {{BeginDraw}} is called. An <see cref=\"T:SharpDX.Direct2D1.BitmapRenderTarget\"/> may be locked between BeginDraw/EndDraw calls, a DXGI surface render target might be acquired on BeginDraw and released on EndDraw, while an <see cref=\"T:SharpDX.Direct2D1.WindowRenderTarget\"/> may begin batching at BeginDraw and may present on EndDraw, for example. The BeginDraw method must be called before rendering operations can be called, though state-setting and state-retrieval operations can be performed even outside of {{BeginDraw}}/EndDraw. After {{BeginDraw}} is called, a render target will normally build up a batch of rendering commands, but defer processing of these commands until either an internal buffer is full, the {{Flush}} method is called, or until EndDraw is called. The EndDraw method causes any batched drawing operations to complete, and then returns an HRESULT indicating the success of the operations and, optionally, the tag state of the render target at the time the error occurred. The EndDraw method always succeeds: it should not be called twice even if a previous EndDraw resulted in a failing HRESULT. If EndDraw is called without a matched call to {{BeginDraw}}, it returns an error indicating that BeginDraw must be called before EndDraw. Calling BeginDraw twice on a render target puts the target into an error state where nothing further is drawn, and returns an appropriate HRESULT and error information when EndDraw is called.\t\n            </remarks>\t\n            <returns>If the method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code and sets tag1 and tag2 to the tags that were active when the error occurred. </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RenderTarget.FillGeometry(SharpDX.Direct2D1.Geometry,SharpDX.Direct2D1.Brush)\">\n            <summary>\t\n            Paints the interior of the specified geometry. \t\n            </summary>\t\n            <remarks>\t\n            If the opacityBrush parameter is not NULL, the alpha value of each pixel of the mapped opacityBrush is used to determine the resulting opacity of each corresponding pixel of the geometry. Only the alpha value of each color in the brush is used for this processing; all other color information is ignored.  The alpha value specified by the brush is multiplied by the alpha value of the geometry after the geometry has been painted by brush.  \t\n            When this method fails, it does not return an error code. To determine whether a drawing operation (such as FillGeometry) failed, check the result returned by the <see cref=\"M:SharpDX.Direct2D1.RenderTarget.EndDraw\"/> or <see cref=\"M:SharpDX.Direct2D1.RenderTarget.Flush\"/> method. \t\n            </remarks>\t\n            <param name=\"geometry\">The geometry to paint.</param>\n            <param name=\"brush\">The brush used to paint the geometry's interior.</param>\n            <unmanaged>void FillGeometry([In] ID2D1Geometry* geometry,[In] ID2D1Brush* brush,[In, Optional] ID2D1Brush* opacityBrush)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RenderTarget.FillOpacityMask(SharpDX.Direct2D1.Bitmap,SharpDX.Direct2D1.Brush,SharpDX.Direct2D1.OpacityMaskContent)\">\n            <summary>\t\n            Applies the opacity mask described by the specified bitmap to a brush and uses that brush to paint a region of the render target.    \t\n            </summary>\t\n            <remarks>\t\n            For this method to work properly, the render target must be using the <see cref=\"F:SharpDX.Direct2D1.AntialiasMode.Aliased\" /> antialiasing mode. You can set the antialiasing mode by calling the <see cref=\"M:SharpDX.Direct2D1.RenderTarget.SetAntialiasMode(SharpDX.Direct2D1.AntialiasMode)\" /> method. This method doesn't return an error code if it fails. To determine whether a drawing operation (such as {{FillOpacityMask}}) failed, check the result returned by the <see cref=\"M:SharpDX.Direct2D1.RenderTarget.EndDraw(System.Int64@,System.Int64@)\" /> or <see cref=\"M:SharpDX.Direct2D1.RenderTarget.Flush(System.Int64@,System.Int64@)\" /> methods.  \t\n            </remarks>\t\n            <param name=\"opacityMask\">The opacity mask to apply to the brush. The alpha value of each pixel in the  region specified by sourceRectangle is multiplied with the alpha value of the brush after the brush has been mapped to the area defined by destinationRectangle. </param>\n            <param name=\"brush\">The brush used to paint the region of the render target specified by destinationRectangle. </param>\n            <param name=\"content\">The type of content the opacity mask contains. The value is used to determine the color space in which the opacity mask is blended. </param>\n            <unmanaged>void ID2D1RenderTarget::FillOpacityMask([In] ID2D1Bitmap* opacityMask,[In] ID2D1Brush* brush,[None] D2D1_OPACITY_MASK_CONTENT content,[In, Optional] const D2D1_RECT_F* destinationRectangle,[In, Optional] const D2D1_RECT_F* sourceRectangle)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RenderTarget.FillRoundedRectangle(SharpDX.Direct2D1.RoundedRectangle,SharpDX.Direct2D1.Brush)\">\n            <summary>\t\n            Paints the interior of the specified rounded rectangle.\t\n            </summary>\t\n            <remarks>\t\n            This method doesn't return an error code if it fails. To determine whether a drawing operation (such as {{FillRoundedRectangle}}) failed, check the result returned by the <see cref=\"M:SharpDX.Direct2D1.RenderTarget.EndDraw(System.Int64@,System.Int64@)\" /> or <see cref=\"M:SharpDX.Direct2D1.RenderTarget.Flush(System.Int64@,System.Int64@)\" /> methods.  \t\n            </remarks>\t\n            <param name=\"roundedRect\">The dimensions of the rounded rectangle to paint, in device-independent pixels. </param>\n            <param name=\"brush\">The brush used to paint the interior of the rounded rectangle. </param>\n            <unmanaged>void ID2D1RenderTarget::FillRoundedRectangle([In] const D2D1_ROUNDED_RECT* roundedRect,[In] ID2D1Brush* brush)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RenderTarget.Flush\">\n            <summary>\t\n            Executes all pending drawing commands. \t\n            </summary>\t\n            <remarks>\t\n            This command does not flush the device that is associated with the render target.   Calling this method resets the error state of the render target. \t\n            </remarks>\t\n            <returns>If the method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code and sets tag1 and tag2 to the tags that were active when the error occurred. If no error occurred, this method sets the error tag state to be (0,0). </returns>\n            <unmanaged>HRESULT ID2D1RenderTarget::Flush([Out, Optional] D2D1_TAG* tag1,[Out, Optional] D2D1_TAG* tag2)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct2D1.RenderTarget.Transform\">\n            <summary>\t\n            <p>Gets or sets the current transform of the render target. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1RenderTarget::GetTransform']/*\"/>\t\n            <msdn-id>dd316845</msdn-id>\t\n            <unmanaged>GetTransform / SetTransform</unmanaged>\t\n            <unmanaged-short>GetTransform</unmanaged-short>\t\n            <unmanaged>void ID2D1RenderTarget::GetTransform([Out] D2D_MATRIX_3X2_F* transform)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct2D1.RenderTarget.AntialiasMode\">\n            <summary>\t\n            <p>Retrieves or sets the current antialiasing mode for nontext drawing operations.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1RenderTarget::GetAntialiasMode']/*\"/>\t\n            <msdn-id>dd316805</msdn-id>\t\n            <unmanaged>GetAntialiasMode / SetAntialiasMode</unmanaged>\t\n            <unmanaged-short>GetAntialiasMode</unmanaged-short>\t\n            <unmanaged>D2D1_ANTIALIAS_MODE ID2D1RenderTarget::GetAntialiasMode()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct2D1.RenderTarget.TextAntialiasMode\">\n            <summary>\t\n            <p>Gets or sets the current antialiasing mode for text and glyph drawing operations. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1RenderTarget::GetTextAntialiasMode']/*\"/>\t\n            <msdn-id>dd316835</msdn-id>\t\n            <unmanaged>GetTextAntialiasMode / SetTextAntialiasMode</unmanaged>\t\n            <unmanaged-short>GetTextAntialiasMode</unmanaged-short>\t\n            <unmanaged>D2D1_TEXT_ANTIALIAS_MODE ID2D1RenderTarget::GetTextAntialiasMode()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct2D1.RenderTarget.TextRenderingParams\">\n            <summary>\t\n            <p>Retrieves or sets the render target's current text rendering options. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>If the settings specified by  <em>textRenderingParams</em> are incompatible with the render target's text antialiasing mode (specified by <strong>SetTextAntialiasMode</strong>), subsequent text and glyph drawing operations will fail and put the render target into an error state.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1RenderTarget::GetTextRenderingParams']/*\"/>\t\n            <msdn-id>dd316841</msdn-id>\t\n            <unmanaged>GetTextRenderingParams / SetTextRenderingParams</unmanaged>\t\n            <unmanaged-short>GetTextRenderingParams</unmanaged-short>\t\n            <unmanaged>void ID2D1RenderTarget::GetTextRenderingParams([Out, Optional] IDWriteRenderingParams** textRenderingParams)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct2D1.RenderTarget.PixelFormat\">\n            <summary>\t\n            <p>Retrieves the pixel format and alpha mode of the render target. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1RenderTarget::GetPixelFormat']/*\"/>\t\n            <msdn-id>dd316814</msdn-id>\t\n            <unmanaged>GetPixelFormat</unmanaged>\t\n            <unmanaged-short>GetPixelFormat</unmanaged-short>\t\n            <unmanaged>D2D1_PIXEL_FORMAT ID2D1RenderTarget::GetPixelFormat()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct2D1.RenderTarget.Size\">\n            <summary>\t\n            <p>Returns the size of the render target in device-independent pixels.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1RenderTarget::GetSize']/*\"/>\t\n            <msdn-id>dd316823</msdn-id>\t\n            <unmanaged>GetSize</unmanaged>\t\n            <unmanaged-short>GetSize</unmanaged-short>\t\n            <unmanaged>D2D_SIZE_F ID2D1RenderTarget::GetSize()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct2D1.RenderTarget.PixelSize\">\n            <summary>\t\n            <p>Returns the size of the render target in device pixels.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1RenderTarget::GetPixelSize']/*\"/>\t\n            <msdn-id>dd316820</msdn-id>\t\n            <unmanaged>GetPixelSize</unmanaged>\t\n            <unmanaged-short>GetPixelSize</unmanaged-short>\t\n            <unmanaged>D2D_SIZE_U ID2D1RenderTarget::GetPixelSize()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct2D1.RenderTarget.MaximumBitmapSize\">\n            <summary>\t\n            <p>Gets the maximum size, in device-dependent units (pixels), of  any one bitmap dimension supported by the render target.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1RenderTarget::GetMaximumBitmapSize']/*\"/>\t\n            <msdn-id>dd742853</msdn-id>\t\n            <unmanaged>GetMaximumBitmapSize</unmanaged>\t\n            <unmanaged-short>GetMaximumBitmapSize</unmanaged-short>\t\n            <unmanaged>unsigned int ID2D1RenderTarget::GetMaximumBitmapSize()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct2D1.RenderTarget.StrokeWidth\">\n            <summary>\n            Get or set the default stroke width used for all methods that are not explicitly using it. Default is set to 1.0f.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Direct2D1.RenderTarget.DotsPerInch\">\n            <summary>\t\n            Get or sets the dots per inch (DPI) of the render target. \t\n            </summary>\t\n            <remarks>\t\n            This method specifies the mapping from pixel space to device-independent space  for the render target.  If both dpiX and dpiY are 0, the factory-read system DPI is chosen. If one parameter is zero and the other unspecified, the DPI is not changed. For <see cref=\"T:SharpDX.Direct2D1.WindowRenderTarget\"/>, the DPI defaults to the most recently factory-read system DPI. The default value for all other render targets is 96 DPI.   \t\n            </remarks>\t\n            <unmanaged>void ID2D1RenderTarget::SetDpi([None] float dpiX,[None] float dpiY)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.WicRenderTarget.#ctor(SharpDX.Direct2D1.Factory,SharpDX.WIC.Bitmap,SharpDX.Direct2D1.RenderTargetProperties)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct2D1.WicRenderTarget\"/> class from a <see cref=\"T:SharpDX.WIC.Bitmap\"/>.\n            </summary>\n            <param name=\"factory\">The factory.</param>\n            <param name=\"wicBitmap\">The wic bitmap.</param>\n            <param name=\"renderTargetProperties\">The render target properties.</param>\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.BitmapRenderTarget\">\n            <summary>\t\n            <p> Encapsulates a 32-bit device independent bitmap and device context, which can be used for rendering glyphs.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>You create an <strong><see cref=\"T:SharpDX.DirectWrite.BitmapRenderTarget\"/></strong> by using the <strong><see cref=\"M:SharpDX.DirectWrite.GdiInterop.CreateBitmapRenderTarget(System.IntPtr,System.Int32,System.Int32)\"/></strong> method, as shown in the following code.</p><pre><code>if (SUCCEEDED(hr))\t\n            { hr = g_pGdiInterop-&gt;CreateBitmapRenderTarget(hdc, r.right, r.bottom, &amp;g_pBitmapRenderTarget);\t\n            }\t\n            </code></pre><p> <strong><see cref=\"M:SharpDX.DirectWrite.GdiInterop.CreateBitmapRenderTarget(System.IntPtr,System.Int32,System.Int32)\"/></strong> takes a handle to a DC and the desired width and height.  In the above example, the width and height given are the size of the window rect.</p>Rendering<p>One way to use a  <strong><see cref=\"T:SharpDX.DirectWrite.BitmapRenderTarget\"/></strong>, for rendering to a bitmap, is to implement a custom renderer interface derived from the <strong><see cref=\"T:SharpDX.DirectWrite.TextRenderer\"/></strong> interface.  In your implementation of  the <strong>DrawGlyphRun</strong> method of your custom renderer, call the <strong><see cref=\"M:SharpDX.DirectWrite.BitmapRenderTarget.DrawGlyphRun(System.Single,System.Single,SharpDX.Direct2D1.MeasuringMode,SharpDX.DirectWrite.GlyphRun,SharpDX.DirectWrite.RenderingParams,SharpDX.Color4)\"/></strong> method to draw the glyphs as shown in the following code.</p><pre><code>STDMETHODIMP GdiTextRenderer::DrawGlyphRun( __maybenull void* clientDrawingContext, FLOAT baselineOriginX, FLOAT baselineOriginY, <see cref=\"T:SharpDX.Direct2D1.MeasuringMode\"/> measuringMode, __in <see cref=\"T:SharpDX.DirectWrite.GlyphRun\"/> const* glyphRun, __in <see cref=\"T:SharpDX.DirectWrite.GlyphRunDescription\"/> const* glyphRunDescription, <see cref=\"T:SharpDX.ComObject\"/>* clientDrawingEffect )\t\n            { <see cref=\"T:SharpDX.Result\"/> hr = <see cref=\"F:SharpDX.Result.Ok\"/>; // Pass on the drawing call to the render target to do the real work. <see cref=\"T:SharpDX.Rectangle\"/> dirtyRect = {0}; hr = pRenderTarget_-&gt;DrawGlyphRun( baselineOriginX, baselineOriginY, measuringMode, glyphRun, pRenderingParams_, RGB(0,200,255), &amp;dirtyRect ); return hr;\t\n            }\t\n            </code></pre><p>The <strong><see cref=\"T:SharpDX.DirectWrite.BitmapRenderTarget\"/></strong> encapsulates and renders to a bitmap in memory.  The  <strong>GetMemoryDC</strong> function returns a handle to the device context of this bitmap.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteBitmapRenderTarget']/*\"/>\t\n            <msdn-id>dd368165</msdn-id>\t\n            <unmanaged>IDWriteBitmapRenderTarget</unmanaged>\t\n            <unmanaged-short>IDWriteBitmapRenderTarget</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.BitmapRenderTarget.DrawGlyphRun(System.Single,System.Single,SharpDX.Direct2D1.MeasuringMode,SharpDX.DirectWrite.GlyphRun,SharpDX.DirectWrite.RenderingParams,SharpDX.Color4)\">\n            <summary>\t\n            Draws a run of glyphs to a bitmap target at the specified position.\t\n            </summary>\t\n            <remarks>\t\n            You can use the IDWriteBitmapRenderTarget::DrawGlyphRun to render to a bitmap from a custom text renderer that you implement.  The custom text renderer should call this method from within the <see cref=\"M:SharpDX.DirectWrite.TextRenderer.DrawGlyphRun(System.IntPtr,System.Single,System.Single,SharpDX.DirectWrite.MeasuringMode,SharpDX.DirectWrite.GlyphRun,SharpDX.DirectWrite.GlyphRunDescription,SharpDX.ComObject)\" /> callback method as shown in the following code. \t\n            <code> STDMETHODIMP GdiTextRenderer::DrawGlyphRun( __maybenull void* clientDrawingContext, FLOAT baselineOriginX, FLOAT baselineOriginY, DWRITE_MEASURING_MODE measuringMode, __in DWRITE_GLYPH_RUN const* glyphRun, __in DWRITE_GLYPH_RUN_DESCRIPTION const* glyphRunDescription, IUnknown* clientDrawingEffect )\t\n            { HRESULT hr = S_OK; // Pass on the drawing call to the render target to do the real work. RECT dirtyRect = {0}; hr = pRenderTarget_-&gt;DrawGlyphRun( baselineOriginX, baselineOriginY, measuringMode, glyphRun, pRenderingParams_, RGB(0,200,255), &amp;dirtyRect ); return hr;\t\n            } </code>\t\n            \n            The baselineOriginX, baslineOriginY, measuringMethod, and glyphRun parameters are provided (as arguments) when the callback method is invoked.  The renderingParams, textColor and blackBoxRect are not. Default rendering params can be retrieved by using the <see cref=\"M:SharpDX.DirectWrite.Factory.CreateMonitorRenderingParams(System.IntPtr,SharpDX.DirectWrite.RenderingParams@)\" /> method.  \t\n            </remarks>\t\n            <param name=\"baselineOriginX\">The horizontal position of the baseline origin, in DIPs, relative to the upper-left corner of the DIB. </param>\n            <param name=\"baselineOriginY\">The vertical position of the baseline origin, in DIPs, relative to the upper-left corner of the DIB. </param>\n            <param name=\"measuringMode\">The measuring method for glyphs in the run, used with the other properties to determine the rendering mode. </param>\n            <param name=\"glyphRun\">The structure containing the properties of the glyph run. </param>\n            <param name=\"renderingParams\">The object that controls rendering behavior. </param>\n            <param name=\"textColor\">The foreground color of the text. </param>\n            <returns>If the method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code. </returns>\n            <unmanaged>HRESULT IDWriteBitmapRenderTarget::DrawGlyphRun([None] float baselineOriginX,[None] float baselineOriginY,[None] DWRITE_MEASURING_MODE measuringMode,[In] const DWRITE_GLYPH_RUN* glyphRun,[None] IDWriteRenderingParams* renderingParams,[None] COLORREF textColor,[Out, Optional] RECT* blackBoxRect)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.BitmapRenderTarget.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectWrite.BitmapRenderTarget\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.BitmapRenderTarget.op_Explicit(System.IntPtr)~SharpDX.DirectWrite.BitmapRenderTarget\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.DirectWrite.BitmapRenderTarget\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.BitmapRenderTarget.DrawGlyphRun(System.Single,System.Single,SharpDX.Direct2D1.MeasuringMode,SharpDX.DirectWrite.GlyphRun,SharpDX.DirectWrite.RenderingParams,SharpDX.Color4,SharpDX.Rectangle@)\">\n            <summary>\t\n            <p> Draws a run of glyphs to a bitmap target at the specified position.</p>\t\n            </summary>\t\n            <param name=\"baselineOriginX\"><dd> <p> The horizontal position of the baseline origin, in DIPs, relative to the upper-left corner of the DIB.</p> </dd></param>\t\n            <param name=\"baselineOriginY\"><dd> <p> The vertical position of the baseline origin, in DIPs, relative to the upper-left corner of the DIB.</p> </dd></param>\t\n            <param name=\"measuringMode\"><dd> <p> The measuring method for glyphs in the run, used with the other properties to determine the rendering mode.</p> </dd></param>\t\n            <param name=\"glyphRun\"><dd> <p> The structure containing the properties of the glyph run.</p> </dd></param>\t\n            <param name=\"renderingParams\"><dd> <p> The object that controls rendering behavior.</p> </dd></param>\t\n            <param name=\"textColor\"><dd> <p> The foreground color of the text.</p> </dd></param>\t\n            <param name=\"blackBoxRect\"><dd> <p> The optional rectangle that receives the bounding box (in pixels not DIPs) of all the pixels affected by  drawing the glyph run. The black box rectangle may extend beyond the dimensions of the bitmap.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>You can use the <strong><see cref=\"M:SharpDX.DirectWrite.BitmapRenderTarget.DrawGlyphRun(System.Single,System.Single,SharpDX.Direct2D1.MeasuringMode,SharpDX.DirectWrite.GlyphRun,SharpDX.DirectWrite.RenderingParams,SharpDX.Color4)\"/></strong> to render to a bitmap from a custom text renderer that you implement.  The custom text renderer should call this method from within the <strong><see cref=\"M:SharpDX.DirectWrite.TextRenderer.DrawGlyphRun(System.Object,System.Single,System.Single,SharpDX.Direct2D1.MeasuringMode,SharpDX.DirectWrite.GlyphRun,SharpDX.DirectWrite.GlyphRunDescription,SharpDX.ComObject)\"/></strong> callback method as shown in the following code.</p><pre><code>STDMETHODIMP GdiTextRenderer::DrawGlyphRun( __maybenull void* clientDrawingContext, FLOAT baselineOriginX, FLOAT baselineOriginY, <see cref=\"T:SharpDX.Direct2D1.MeasuringMode\"/> measuringMode, __in <see cref=\"T:SharpDX.DirectWrite.GlyphRun\"/> const* glyphRun, __in <see cref=\"T:SharpDX.DirectWrite.GlyphRunDescription\"/> const* glyphRunDescription, <see cref=\"T:SharpDX.ComObject\"/>* clientDrawingEffect )\t\n            { <see cref=\"T:SharpDX.Result\"/> hr = <see cref=\"F:SharpDX.Result.Ok\"/>; // Pass on the drawing call to the render target to do the real work. <see cref=\"T:SharpDX.Rectangle\"/> dirtyRect = {0}; hr = pRenderTarget_-&gt;DrawGlyphRun( baselineOriginX, baselineOriginY, measuringMode, glyphRun, pRenderingParams_, RGB(0,200,255), &amp;dirtyRect ); return hr;\t\n            }\t\n            </code></pre><p>The <em>baselineOriginX</em>, <em>baslineOriginY</em>, <em>measuringMethod</em>, and <em>glyphRun</em> parameters are provided (as arguments) when the callback method is invoked.  The <em>renderingParams</em>, <em>textColor</em> and <em>blackBoxRect</em> are not.</p><p>Default rendering params can be retrieved by using the <strong><see cref=\"M:SharpDX.DirectWrite.Factory.CreateMonitorRenderingParams(System.IntPtr,SharpDX.DirectWrite.RenderingParams)\"/></strong> method.</p><p></p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteBitmapRenderTarget::DrawGlyphRun']/*\"/>\t\n            <msdn-id>dd368167</msdn-id>\t\n            <unmanaged>HRESULT IDWriteBitmapRenderTarget::DrawGlyphRun([In] float baselineOriginX,[In] float baselineOriginY,[In] DWRITE_MEASURING_MODE measuringMode,[In] const DWRITE_GLYPH_RUN* glyphRun,[In] IDWriteRenderingParams* renderingParams,[In] COLORREF textColor,[Out, Optional] RECT* blackBoxRect)</unmanaged>\t\n            <unmanaged-short>IDWriteBitmapRenderTarget::DrawGlyphRun</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.BitmapRenderTarget.GetMemoryDC\">\n            <summary>\t\n            <p> Gets a handle to the memory device context. </p>\t\n            </summary>\t\n            <returns><p>Returns a device context handle to the memory device context.</p></returns>\t\n            <remarks>\t\n            <p> An application can use the device context to draw using GDI functions. An application can obtain the bitmap handle (<see cref=\"T:System.IntPtr\"/>) by calling <strong>GetCurrentObject</strong>. An application that wants information about the underlying bitmap, including a reference to the pixel data, can call <strong>GetObject</strong> to fill in a <strong>DIBSECTION</strong> structure. The bitmap is always a 32-bit  top-down DIB. </p><p>Note that this method takes no parameters and returns an <see cref=\"T:System.IntPtr\"/> variable, not an <see cref=\"T:SharpDX.Result\"/>.</p><pre><code>memoryHdc = g_pBitmapRenderTarget-&gt;GetMemoryDC();\t\n            </code></pre><p>The <see cref=\"T:System.IntPtr\"/> returned here is still owned by the bitmap render targer object and should not be released or deleted by the client.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteBitmapRenderTarget::GetMemoryDC']/*\"/>\t\n            <msdn-id>dd368171</msdn-id>\t\n            <unmanaged>HDC IDWriteBitmapRenderTarget::GetMemoryDC()</unmanaged>\t\n            <unmanaged-short>IDWriteBitmapRenderTarget::GetMemoryDC</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.BitmapRenderTarget.GetPixelsPerDip\">\n            <summary>\t\n            <p> Gets the number of bitmap pixels per DIP.  </p>\t\n            </summary>\t\n            <returns><p>The number of bitmap pixels per DIP.</p></returns>\t\n            <remarks>\t\n            <p>A DIP (device-independent pixel) is 1/96 inch. Therefore, this value is the number if pixels per inch divided by 96.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteBitmapRenderTarget::GetPixelsPerDip']/*\"/>\t\n            <msdn-id>dd368173</msdn-id>\t\n            <unmanaged>float IDWriteBitmapRenderTarget::GetPixelsPerDip()</unmanaged>\t\n            <unmanaged-short>IDWriteBitmapRenderTarget::GetPixelsPerDip</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.BitmapRenderTarget.SetPixelsPerDip(System.Single)\">\n            <summary>\t\n            <p> Sets the number of bitmap pixels per DIP (device-independent pixel). A DIP is 1/96 inch, so this value is the number if pixels per inch divided by 96. </p>\t\n            </summary>\t\n            <param name=\"pixelsPerDip\"><dd> <p>A value that specifies the number of pixels per DIP.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteBitmapRenderTarget::SetPixelsPerDip']/*\"/>\t\n            <msdn-id>dd368182</msdn-id>\t\n            <unmanaged>HRESULT IDWriteBitmapRenderTarget::SetPixelsPerDip([In] float pixelsPerDip)</unmanaged>\t\n            <unmanaged-short>IDWriteBitmapRenderTarget::SetPixelsPerDip</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.BitmapRenderTarget.GetCurrentTransform(SharpDX.DirectWrite.Matrix@)\">\n            <summary>\t\n            <p> Gets the transform that maps abstract coordinates to DIPs. By default this is the identity  transform. Note that this is unrelated to the world transform of the underlying device context. </p>\t\n            </summary>\t\n            <param name=\"transform\"><dd> <p>When this method returns, contains a transform matrix.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteBitmapRenderTarget::GetCurrentTransform']/*\"/>\t\n            <msdn-id>dd368169</msdn-id>\t\n            <unmanaged>HRESULT IDWriteBitmapRenderTarget::GetCurrentTransform([Out] DWRITE_MATRIX* transform)</unmanaged>\t\n            <unmanaged-short>IDWriteBitmapRenderTarget::GetCurrentTransform</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.BitmapRenderTarget.SetCurrentTransform(System.Nullable{SharpDX.DirectWrite.Matrix})\">\n            <summary>\t\n            <p> Sets the transform that maps abstract coordinate to DIPs (device-independent pixel). This does not affect the world transform of the underlying device context. </p>\t\n            </summary>\t\n            <param name=\"transform\"><dd> <p> Specifies the new transform. This parameter can be <strong><c>null</c></strong>, in which case the identity transform is implied.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteBitmapRenderTarget::SetCurrentTransform']/*\"/>\t\n            <msdn-id>dd368179</msdn-id>\t\n            <unmanaged>HRESULT IDWriteBitmapRenderTarget::SetCurrentTransform([In, Optional] const DWRITE_MATRIX* transform)</unmanaged>\t\n            <unmanaged-short>IDWriteBitmapRenderTarget::SetCurrentTransform</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.BitmapRenderTarget.GetSize(SharpDX.DrawingSize@)\">\n            <summary>\t\n            <p> Gets the dimensions of the target bitmap. </p>\t\n            </summary>\t\n            <param name=\"size\"><dd> <p>Returns  the width and height of the bitmap in pixels.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteBitmapRenderTarget::GetSize']/*\"/>\t\n            <msdn-id>dd368176</msdn-id>\t\n            <unmanaged>HRESULT IDWriteBitmapRenderTarget::GetSize([Out] SIZE* size)</unmanaged>\t\n            <unmanaged-short>IDWriteBitmapRenderTarget::GetSize</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.BitmapRenderTarget.Resize(System.Int32,System.Int32)\">\n            <summary>\t\n            <p> Resizes the bitmap. </p>\t\n            </summary>\t\n            <param name=\"width\"><dd> <p>The new bitmap width, in pixels.</p> </dd></param>\t\n            <param name=\"height\"><dd> <p>The new bitmap height, in pixels.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteBitmapRenderTarget::Resize']/*\"/>\t\n            <msdn-id>dd368177</msdn-id>\t\n            <unmanaged>HRESULT IDWriteBitmapRenderTarget::Resize([In] unsigned int width,[In] unsigned int height)</unmanaged>\t\n            <unmanaged-short>IDWriteBitmapRenderTarget::Resize</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.DirectWrite.BitmapRenderTarget.MemoryDC\">\n            <summary>\t\n            <p> Gets a handle to the memory device context. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p> An application can use the device context to draw using GDI functions. An application can obtain the bitmap handle (<see cref=\"T:System.IntPtr\"/>) by calling <strong>GetCurrentObject</strong>. An application that wants information about the underlying bitmap, including a reference to the pixel data, can call <strong>GetObject</strong> to fill in a <strong>DIBSECTION</strong> structure. The bitmap is always a 32-bit  top-down DIB. </p><p>Note that this method takes no parameters and returns an <see cref=\"T:System.IntPtr\"/> variable, not an <see cref=\"T:SharpDX.Result\"/>.</p><pre><code>memoryHdc = g_pBitmapRenderTarget-&gt;GetMemoryDC();\t\n            </code></pre><p>The <see cref=\"T:System.IntPtr\"/> returned here is still owned by the bitmap render targer object and should not be released or deleted by the client.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteBitmapRenderTarget::GetMemoryDC']/*\"/>\t\n            <msdn-id>dd368171</msdn-id>\t\n            <unmanaged>GetMemoryDC</unmanaged>\t\n            <unmanaged-short>GetMemoryDC</unmanaged-short>\t\n            <unmanaged>HDC IDWriteBitmapRenderTarget::GetMemoryDC()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectWrite.BitmapRenderTarget.PixelsPerDip\">\n            <summary>\t\n            <p>Gets or sets the number of bitmap pixels per DIP.  </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>A DIP (device-independent pixel) is 1/96 inch. Therefore, this value is the number if pixels per inch divided by 96.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteBitmapRenderTarget::GetPixelsPerDip']/*\"/>\t\n            <msdn-id>dd368173</msdn-id>\t\n            <unmanaged>GetPixelsPerDip / SetPixelsPerDip</unmanaged>\t\n            <unmanaged-short>GetPixelsPerDip</unmanaged-short>\t\n            <unmanaged>float IDWriteBitmapRenderTarget::GetPixelsPerDip()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectWrite.BitmapRenderTarget.CurrentTransform\">\n            <summary>\t\n            <p>Gets or sets the transform that maps abstract coordinates to DIPs. By default this is the identity  transform. Note that this is unrelated to the world transform of the underlying device context. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteBitmapRenderTarget::GetCurrentTransform']/*\"/>\t\n            <msdn-id>dd368169</msdn-id>\t\n            <unmanaged>GetCurrentTransform / SetCurrentTransform</unmanaged>\t\n            <unmanaged-short>GetCurrentTransform</unmanaged-short>\t\n            <unmanaged>HRESULT IDWriteBitmapRenderTarget::GetCurrentTransform([Out] DWRITE_MATRIX* transform)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectWrite.BitmapRenderTarget.Size\">\n            <summary>\t\n            <p> Gets the dimensions of the target bitmap. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteBitmapRenderTarget::GetSize']/*\"/>\t\n            <msdn-id>dd368176</msdn-id>\t\n            <unmanaged>GetSize</unmanaged>\t\n            <unmanaged-short>GetSize</unmanaged-short>\t\n            <unmanaged>HRESULT IDWriteBitmapRenderTarget::GetSize([Out] SIZE* size)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.EllipsisTrimming\">\n            <summary>\n            An inline object for trimming, using an ellipsis as the omission sign.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.InlineObjectNative\">\n            <summary>\t\n            <p> Wraps an application-defined inline graphic, allowing DWrite to query metrics as if the graphic were a glyph inline with the text.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteInlineObject']/*\"/>\t\n            <msdn-id>dd371221</msdn-id>\t\n            <unmanaged>IDWriteInlineObject</unmanaged>\t\n            <unmanaged-short>IDWriteInlineObject</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.InlineObject\">\n            <summary>\t\n            <p> Wraps an application-defined inline graphic, allowing DWrite to query metrics as if the graphic were a glyph inline with the text.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteInlineObject']/*\"/>\t\n            <msdn-id>dd371221</msdn-id>\t\n            <unmanaged>IDWriteInlineObject</unmanaged>\t\n            <unmanaged-short>IDWriteInlineObject</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.InlineObject.Draw(System.Object,SharpDX.DirectWrite.TextRenderer,System.Single,System.Single,System.Boolean,System.Boolean,SharpDX.ComObject)\">\n            <summary>\t\n            The application implemented rendering callback (<see cref=\"M:SharpDX.DirectWrite.TextRenderer.DrawInlineObject(System.Object,System.Single,System.Single,SharpDX.DirectWrite.InlineObject,System.Boolean,System.Boolean,SharpDX.ComObject)\"/>) can use this to draw the inline object without needing to cast or query the object type. The text layout does not call this method directly. \t\n            </summary>\t\n            <param name=\"clientDrawingContext\">The drawing context passed to <see cref=\"M:SharpDX.DirectWrite.TextLayout.Draw_(System.IntPtr,System.IntPtr,System.Single,System.Single)\"/>.  This parameter may be NULL. </param>\n            <param name=\"renderer\">The same renderer passed to <see cref=\"M:SharpDX.DirectWrite.TextLayout.Draw_(System.IntPtr,System.IntPtr,System.Single,System.Single)\"/> as the object's containing parent.  This is useful if the inline object is recursive such as a nested layout. </param>\n            <param name=\"originX\">The x-coordinate at the upper-left corner of the inline object. </param>\n            <param name=\"originY\">The y-coordinate at the upper-left corner of the inline object. </param>\n            <param name=\"isSideways\">A Boolean flag that indicates whether the object's baseline runs alongside the baseline axis of the line. </param>\n            <param name=\"isRightToLeft\">A Boolean flag that indicates whether the object is in a right-to-left context and should be drawn flipped. </param>\n            <param name=\"clientDrawingEffect\">The drawing effect set in <see cref=\"M:SharpDX.DirectWrite.TextLayout.SetDrawingEffect(SharpDX.ComObject,SharpDX.DirectWrite.TextRange)\"/>.  Usually this effect is a foreground brush that  is used in glyph drawing. </param>\n            <returns>If the method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code. </returns>\n            <unmanaged>HRESULT IDWriteInlineObject::Draw([None] void* clientDrawingContext,[None] IDWriteTextRenderer* renderer,[None] float originX,[None] float originY,[None] BOOL isSideways,[None] BOOL isRightToLeft,[None] IUnknown* clientDrawingEffect)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.InlineObject.GetBreakConditions(SharpDX.DirectWrite.BreakCondition@,SharpDX.DirectWrite.BreakCondition@)\">\n            <summary>\t\n            Layout uses this to determine the line-breaking behavior of the inline object among the text. \t\n            </summary>\t\n            <param name=\"breakConditionBefore\">When this method returns, contains a value which indicates the line-breaking condition between the object and the content immediately preceding it. </param>\n            <param name=\"breakConditionAfter\">When this method returns, contains a value which indicates the line-breaking condition between the object and the content immediately following it. </param>\n            <returns>If the method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code. </returns>\n            <unmanaged>HRESULT IDWriteInlineObject::GetBreakConditions([Out] DWRITE_BREAK_CONDITION* breakConditionBefore,[Out] DWRITE_BREAK_CONDITION* breakConditionAfter)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectWrite.InlineObject.Metrics\">\n            <summary>\t\n            <see cref=\"T:SharpDX.DirectWrite.TextLayout\"/> calls this callback function to get the measurement of the inline object. \t\n            </summary>\t\n            <returns>a structure describing the geometric measurement of anapplication-defined inline object.  These metrics are in relation to the baseline of the adjacent text. </returns>\n            <unmanaged>HRESULT IDWriteInlineObject::GetMetrics([Out] DWRITE_INLINE_OBJECT_METRICS* metrics)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectWrite.InlineObject.OverhangMetrics\">\n            <summary>\t\n            TextLayout calls this callback function to get the visible extents (in DIPs) of the inline object. In the case of a simple bitmap, with no padding and no overhang, all the overhangs will simply be zeroes.\t\n            </summary>\t\n            <returns>Overshoot of visible extents (in DIPs) outside the object. </returns>\n            <unmanaged>HRESULT IDWriteInlineObject::GetOverhangMetrics([Out] DWRITE_OVERHANG_METRICS* overhangs)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.InlineObjectNative.Draw(System.Object,SharpDX.DirectWrite.TextRenderer,System.Single,System.Single,System.Boolean,System.Boolean,SharpDX.ComObject)\">\n            <summary>\t\n            The application implemented rendering callback (<see cref=\"M:SharpDX.DirectWrite.TextRenderer.DrawInlineObject(System.Object,System.Single,System.Single,SharpDX.DirectWrite.InlineObject,System.Boolean,System.Boolean,SharpDX.ComObject)\"/>) can use this to draw the inline object without needing to cast or query the object type. The text layout does not call this method directly. \t\n            </summary>\t\n            <param name=\"clientDrawingContext\">The drawing context passed to <see cref=\"M:SharpDX.DirectWrite.TextLayout.Draw_(System.IntPtr,System.IntPtr,System.Single,System.Single)\"/>.  This parameter may be NULL. </param>\n            <param name=\"renderer\">The same renderer passed to <see cref=\"M:SharpDX.DirectWrite.TextLayout.Draw_(System.IntPtr,System.IntPtr,System.Single,System.Single)\"/> as the object's containing parent.  This is useful if the inline object is recursive such as a nested layout. </param>\n            <param name=\"originX\">The x-coordinate at the upper-left corner of the inline object. </param>\n            <param name=\"originY\">The y-coordinate at the upper-left corner of the inline object. </param>\n            <param name=\"isSideways\">A Boolean flag that indicates whether the object's baseline runs alongside the baseline axis of the line. </param>\n            <param name=\"isRightToLeft\">A Boolean flag that indicates whether the object is in a right-to-left context and should be drawn flipped. </param>\n            <param name=\"clientDrawingEffect\">The drawing effect set in <see cref=\"M:SharpDX.DirectWrite.TextLayout.SetDrawingEffect(SharpDX.ComObject,SharpDX.DirectWrite.TextRange)\"/>.  Usually this effect is a foreground brush that  is used in glyph drawing. </param>\n            <returns>If the method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code. </returns>\n            <unmanaged>HRESULT IDWriteInlineObject::Draw([None] void* clientDrawingContext,[None] IDWriteTextRenderer* renderer,[None] float originX,[None] float originY,[None] BOOL isSideways,[None] BOOL isRightToLeft,[None] IUnknown* clientDrawingEffect)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.InlineObjectNative.GetBreakConditions(SharpDX.DirectWrite.BreakCondition@,SharpDX.DirectWrite.BreakCondition@)\">\n            <summary>\t\n            Layout uses this to determine the line-breaking behavior of the inline object among the text. \t\n            </summary>\t\n            <param name=\"breakConditionBefore\">When this method returns, contains a value which indicates the line-breaking condition between the object and the content immediately preceding it. </param>\n            <param name=\"breakConditionAfter\">When this method returns, contains a value which indicates the line-breaking condition between the object and the content immediately following it. </param>\n            <returns>If the method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code. </returns>\n            <unmanaged>HRESULT IDWriteInlineObject::GetBreakConditions([Out] DWRITE_BREAK_CONDITION* breakConditionBefore,[Out] DWRITE_BREAK_CONDITION* breakConditionAfter)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.InlineObjectNative.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectWrite.InlineObjectNative\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.InlineObjectNative.op_Explicit(System.IntPtr)~SharpDX.DirectWrite.InlineObjectNative\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.DirectWrite.InlineObjectNative\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.InlineObjectNative.Draw__(System.IntPtr,System.IntPtr,System.Single,System.Single,SharpDX.Bool,SharpDX.Bool,System.IntPtr)\">\n            <summary>\t\n            <p> The application implemented rendering callback (<strong><see cref=\"!:SharpDX.DirectWrite.TextRenderer.DrawInlineObject_\"/></strong>) can use this to draw the inline object without needing to cast or query the object type. The text layout does not call this method directly. </p>\t\n            </summary>\t\n            <param name=\"clientDrawingContext\">No documentation.</param>\t\n            <param name=\"renderer\">No documentation.</param>\t\n            <param name=\"originX\">No documentation.</param>\t\n            <param name=\"originY\">No documentation.</param>\t\n            <param name=\"isSideways\">No documentation.</param>\t\n            <param name=\"isRightToLeft\">No documentation.</param>\t\n            <param name=\"clientDrawingEffect\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteInlineObject::Draw']/*\"/>\t\n            <msdn-id>dd371225</msdn-id>\t\n            <unmanaged>HRESULT IDWriteInlineObject::Draw([In, Optional] void* clientDrawingContext,[In] IDWriteTextRenderer* renderer,[In] float originX,[In] float originY,[In] BOOL isSideways,[In] BOOL isRightToLeft,[In, Optional] void* clientDrawingEffect)</unmanaged>\t\n            <unmanaged-short>IDWriteInlineObject::Draw</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.InlineObjectNative.GetMetrics_(SharpDX.DirectWrite.InlineObjectMetrics@)\">\n            <summary>\t\n            <p> <strong><see cref=\"T:SharpDX.DirectWrite.TextLayout\"/></strong> calls this callback function to get the measurement of the inline object. </p>\t\n            </summary>\t\n            <param name=\"metrics\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteInlineObject::GetMetrics']/*\"/>\t\n            <msdn-id>dd371232</msdn-id>\t\n            <unmanaged>HRESULT IDWriteInlineObject::GetMetrics([Out] DWRITE_INLINE_OBJECT_METRICS* metrics)</unmanaged>\t\n            <unmanaged-short>IDWriteInlineObject::GetMetrics</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.InlineObjectNative.GetOverhangMetrics_(SharpDX.DirectWrite.OverhangMetrics@)\">\n            <summary>\t\n            <p>TextLayout calls this callback function to get the visible extents (in DIPs) of the inline object. In the case of a simple bitmap, with no padding and no overhang, all the overhangs will simply be zeroes.</p><p>The overhangs should be returned relative to the reported size of the object (see <strong><see cref=\"T:SharpDX.DirectWrite.InlineObjectMetrics\"/></strong>), and should not be baseline adjusted.</p>\t\n            </summary>\t\n            <param name=\"overhangs\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteInlineObject::GetOverhangMetrics']/*\"/>\t\n            <msdn-id>dd371235</msdn-id>\t\n            <unmanaged>HRESULT IDWriteInlineObject::GetOverhangMetrics([Out] DWRITE_OVERHANG_METRICS* overhangs)</unmanaged>\t\n            <unmanaged-short>IDWriteInlineObject::GetOverhangMetrics</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.InlineObjectNative.GetBreakConditions_(SharpDX.DirectWrite.BreakCondition@,SharpDX.DirectWrite.BreakCondition@)\">\n            <summary>\t\n            <p> Layout uses this to determine the line-breaking behavior of the inline object among the text. </p>\t\n            </summary>\t\n            <param name=\"breakConditionBefore\"><dd> <p>When this method returns, contains a value which indicates the line-breaking condition between the object and the content immediately preceding it.</p> </dd></param>\t\n            <param name=\"breakConditionAfter\"><dd> <p>When this method returns, contains a value which indicates the line-breaking condition between the object and the content immediately following it.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteInlineObject::GetBreakConditions']/*\"/>\t\n            <msdn-id>dd371229</msdn-id>\t\n            <unmanaged>HRESULT IDWriteInlineObject::GetBreakConditions([Out] DWRITE_BREAK_CONDITION* breakConditionBefore,[Out] DWRITE_BREAK_CONDITION* breakConditionAfter)</unmanaged>\t\n            <unmanaged-short>IDWriteInlineObject::GetBreakConditions</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.DirectWrite.InlineObjectNative.Metrics\">\n            <summary>\t\n            <see cref=\"T:SharpDX.DirectWrite.TextLayout\"/> calls this callback function to get the measurement of the inline object. \t\n            </summary>\t\n            <returns>a structure describing the geometric measurement of anapplication-defined inline object.  These metrics are in relation to the baseline of the adjacent text. </returns>\n            <unmanaged>HRESULT IDWriteInlineObject::GetMetrics([Out] DWRITE_INLINE_OBJECT_METRICS* metrics)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectWrite.InlineObjectNative.OverhangMetrics\">\n            <summary>\t\n            TextLayout calls this callback function to get the visible extents (in DIPs) of the inline object. In the case of a simple bitmap, with no padding and no overhang, all the overhangs will simply be zeroes.\t\n            </summary>\t\n            <returns>Overshoot of visible extents (in DIPs) outside the object. </returns>\n            <unmanaged>HRESULT IDWriteInlineObject::GetOverhangMetrics([Out] DWRITE_OVERHANG_METRICS* overhangs)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.EllipsisTrimming.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectWrite.EllipsisTrimming\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native PTR.</param>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.EllipsisTrimming.#ctor(SharpDX.DirectWrite.Factory,SharpDX.DirectWrite.TextFormat)\">\n            <summary>\t\n            Creates an inline object for trimming, using an ellipsis as the omission sign. \t\n            </summary>\t\n            <remarks>\t\n            The ellipsis will be created using the current settings of the format, including base font, style, and any effects. Alternate omission signs can be created by the application by implementing <see cref=\"T:SharpDX.DirectWrite.InlineObject\"/>.  \t\n            </remarks>\n            <param name=\"factory\">a <see cref=\"T:SharpDX.DirectWrite.Factory\"/></param>\n            <param name=\"textFormat\">A text format object, created with {{CreateTextFormat}}, used for text layout. </param>\n            <unmanaged>HRESULT IDWriteFactory::CreateEllipsisTrimmingSign([None] IDWriteTextFormat* textFormat,[Out] IDWriteInlineObject** trimmingSign)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.Factory\">\n            <summary>\t\n            <p>Used to create all subsequent DirectWrite objects. This interface is the root factory interface for all DirectWrite objects.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p> Create an <strong><see cref=\"T:SharpDX.DirectWrite.Factory\"/></strong> object by using the <strong><see cref=\"M:SharpDX.DirectWrite.DWrite.CreateFactory(SharpDX.DirectWrite.FactoryType,System.Guid,SharpDX.ComObject)\"/></strong> function.  </p><pre><code> if (SUCCEEDED(hr))\t\n            { hr = <see cref=\"M:SharpDX.DirectWrite.DWrite.CreateFactory(SharpDX.DirectWrite.FactoryType,System.Guid,SharpDX.ComObject)\"/>( <see cref=\"F:SharpDX.DirectWrite.FactoryType.Shared\"/>, __uuidof(<see cref=\"T:SharpDX.DirectWrite.Factory\"/>), reinterpret_cast&lt;<see cref=\"T:SharpDX.ComObject\"/>**&gt;(&amp;pDWriteFactory_) );\t\n            } </code></pre><p>An <strong><see cref=\"T:SharpDX.DirectWrite.Factory\"/></strong> object holds state information, such as font loader registration and cached font data.  This state can be shared or isolated.  Shared is recommended for most applications because it saves memory.  However, isolated can be useful in situations where you want to have a separate state for some objects.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFactory']/*\"/>\t\n            <msdn-id>dd368183</msdn-id>\t\n            <unmanaged>IDWriteFactory</unmanaged>\t\n            <unmanaged-short>IDWriteFactory</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.Factory.#ctor\">\n            <summary>\n            Default Constructor for a <see cref=\"T:SharpDX.Direct2D1.Factory\"/>.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.Factory.#ctor(SharpDX.DirectWrite.FactoryType)\">\n            <summary>\n            Default Constructor for a <see cref=\"T:SharpDX.Direct2D1.Factory\"/>.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.Factory.RegisterFontCollectionLoader(SharpDX.DirectWrite.FontCollectionLoader)\">\n            <summary>\t\n            Registers a custom font collection loader with the factory object. \t\n            </summary>\t\n            <remarks>\t\n            This function registers a font collection loader with DirectWrite. The font collection loader interface, which should be implemented by a singleton object, handles enumerating font files in a font collection given a particular type of key. A given instance can only be registered once. Succeeding attempts will return an error, indicating that it has already been registered. Note that font file loader implementations must not register themselves with DirectWrite inside their constructors, and must not unregister themselves inside their destructors, because registration and unregistraton operations increment and decrement the object reference count respectively. Instead, registration and unregistration with DirectWrite of font file loaders should be performed outside of the font file loader implementation. \t\n            </remarks>\t\n            <param name=\"fontCollectionLoader\">Reference to a <see cref=\"T:SharpDX.DirectWrite.FontCollectionLoader\"/> object to be registered. </param>\n            <returns>If the method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code. </returns>\n            <unmanaged>HRESULT IDWriteFactory::RegisterFontCollectionLoader([None] IDWriteFontCollectionLoader* fontCollectionLoader)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.Factory.UnregisterFontCollectionLoader(SharpDX.DirectWrite.FontCollectionLoader)\">\n            <summary>\t\n            Unregisters a custom font collection loader that was previously registered using {{RegisterFontCollectionLoader}}. \t\n            </summary>\t\n            <param name=\"fontCollectionLoader\">Pointer to a <see cref=\"T:SharpDX.DirectWrite.FontCollectionLoader\"/> object to be unregistered. </param>\n            <returns>If the method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code. </returns>\n            <unmanaged>HRESULT IDWriteFactory::UnregisterFontCollectionLoader([None] IDWriteFontCollectionLoader* fontCollectionLoader)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.Factory.RegisterFontFileLoader(SharpDX.DirectWrite.FontFileLoader)\">\n            <summary>\t\n            Registers a font file loader with DirectWrite. \t\n            </summary>\t\n            <remarks>\t\n            This function registers a font file loader with DirectWrite. The font file loader interface, which should be implemented   by a singleton object, handles loading font file resources of a particular type from a key. A given instance can only be registered once. Succeeding attempts will return an error, indicating that it has already been registered. Note that font file loader implementations must not register themselves with DirectWrite inside their constructors, and must not unregister themselves inside their destructors, because registration and unregistraton operations increment and decrement the object reference count respectively. Instead, registration and unregistration with DirectWrite of font file loaders should be performed outside of the font file loader implementation.  \t\n            </remarks>\t\n            <param name=\"fontFileLoader\">Pointer to a <see cref=\"T:SharpDX.DirectWrite.FontFileLoader\"/> object for a particular file resource type. </param>\n            <returns>If the method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code. </returns>\n            <unmanaged>HRESULT IDWriteFactory::RegisterFontFileLoader([None] IDWriteFontFileLoader* fontFileLoader)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.Factory.UnregisterFontFileLoader(SharpDX.DirectWrite.FontFileLoader)\">\n            <summary>\t\n            Unregisters a font file loader that was previously registered with the DirectWrite font system using {{RegisterFontFileLoader}}. \t\n            </summary>\t\n            <remarks>\t\n            This function unregisters font file loader callbacks with the DirectWrite font system. You should implement the font file loader interface by a singleton object. Note that font file loader implementations must not register themselves with DirectWrite inside their constructors and must not unregister themselves in their destructors, because registration and unregistraton operations increment and decrement the object reference count respectively. Instead, registration and unregistration of font file loaders with DirectWrite should be performed outside of the font file loader implementation.  \t\n            </remarks>\t\n            <param name=\"fontFileLoader\">Pointer to the file loader that was previously registered with the DirectWrite font system using {{RegisterFontFileLoader}}. </param>\n            <returns>If the method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code. </returns>\n            <unmanaged>HRESULT IDWriteFactory::UnregisterFontFileLoader([None] IDWriteFontFileLoader* fontFileLoader)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.Factory.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectWrite.Factory\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.Factory.op_Explicit(System.IntPtr)~SharpDX.DirectWrite.Factory\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.DirectWrite.Factory\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.Factory.GetSystemFontCollection(SharpDX.Bool)\">\n            <summary>\t\n            <p> Gets an object which represents the set of installed fonts. </p>\t\n            </summary>\t\n            <param name=\"checkForUpdates\"><dd> <p>If this parameter is nonzero, the function performs an immediate check for changes to the set of installed fonts. If this parameter is <strong><see cref=\"F:SharpDX.Result.False\"/></strong>, the function will still detect changes if the font cache service is running, but there may be some latency. For example, an application might specify <strong>TRUE</strong> if it has itself just installed a font and wants to  be sure the font collection contains that font.</p> </dd></param>\t\n            <returns><dd> <p>When this method returns, contains the address of a reference to the system font collection object, or <strong><c>null</c></strong> in case of failure.</p> </dd></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFactory::GetSystemFontCollection']/*\"/>\t\n            <msdn-id>dd368208</msdn-id>\t\n            <unmanaged>HRESULT IDWriteFactory::GetSystemFontCollection([Out] IDWriteFontCollection** fontCollection,[In] BOOL checkForUpdates)</unmanaged>\t\n            <unmanaged-short>IDWriteFactory::GetSystemFontCollection</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.Factory.CreateCustomFontCollection_(System.IntPtr,System.IntPtr,System.Int32,SharpDX.DirectWrite.FontCollection)\">\n            <summary>\t\n            <p> Creates a font collection using a custom font collection loader. </p>\t\n            </summary>\t\n            <param name=\"collectionLoader\"><dd> <p>An application-defined font collection loader, which must have been previously registered using <strong>RegisterFontCollectionLoader</strong>.</p> </dd></param>\t\n            <param name=\"collectionKey\"><dd> <p>The key used by the loader to identify a collection of font files.  The buffer allocated for this key should at least be the size of <em>collectionKeySize</em>.</p> </dd></param>\t\n            <param name=\"collectionKeySize\"><dd> <p>The size, in bytes, of the collection key.</p> </dd></param>\t\n            <param name=\"fontCollection\"><dd> <p>Contains  an address of a reference to the system font collection object if the method succeeds, or <strong><c>null</c></strong> in case of failure.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFactory::CreateCustomFontCollection']/*\"/>\t\n            <msdn-id>dd368186</msdn-id>\t\n            <unmanaged>HRESULT IDWriteFactory::CreateCustomFontCollection([In] IDWriteFontCollectionLoader* collectionLoader,[In, Buffer] const void* collectionKey,[In] unsigned int collectionKeySize,[Out, Fast] IDWriteFontCollection** fontCollection)</unmanaged>\t\n            <unmanaged-short>IDWriteFactory::CreateCustomFontCollection</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.Factory.RegisterFontCollectionLoader_(System.IntPtr)\">\n            <summary>\t\n            <p> Registers a custom font collection loader with the factory object. </p>\t\n            </summary>\t\n            <param name=\"fontCollectionLoader\"><dd> <p>Pointer to a <strong><see cref=\"T:SharpDX.DirectWrite.FontCollectionLoader\"/></strong> object to be registered.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>This function registers a font collection loader with DirectWrite. The font collection loader interface, which should be implemented by a singleton object, handles enumerating font files in a font collection given a particular type of key. A given instance can only be registered once. Succeeding attempts will return an error, indicating that it has already been registered. Note that font file loader implementations must not register themselves with DirectWrite inside their constructors, and must not unregister themselves inside their destructors, because registration and unregistraton operations increment and decrement the object reference count respectively. Instead, registration and unregistration with DirectWrite of font file loaders should be performed outside of the font file loader implementation.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFactory::RegisterFontCollectionLoader']/*\"/>\t\n            <msdn-id>dd368209</msdn-id>\t\n            <unmanaged>HRESULT IDWriteFactory::RegisterFontCollectionLoader([In] IDWriteFontCollectionLoader* fontCollectionLoader)</unmanaged>\t\n            <unmanaged-short>IDWriteFactory::RegisterFontCollectionLoader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.Factory.UnregisterFontCollectionLoader_(System.IntPtr)\">\n            <summary>\t\n            <p> Unregisters a custom font collection loader that was previously registered using <strong>RegisterFontCollectionLoader</strong>. </p>\t\n            </summary>\t\n            <param name=\"fontCollectionLoader\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFactory::UnregisterFontCollectionLoader']/*\"/>\t\n            <msdn-id>dd368211</msdn-id>\t\n            <unmanaged>HRESULT IDWriteFactory::UnregisterFontCollectionLoader([In] IDWriteFontCollectionLoader* fontCollectionLoader)</unmanaged>\t\n            <unmanaged-short>IDWriteFactory::UnregisterFontCollectionLoader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.Factory.CreateFontFileReference(System.String,System.Nullable{System.Int64},SharpDX.DirectWrite.FontFile)\">\n            <summary>\t\n            <p> Creates a font file reference object from a local font file. </p>\t\n            </summary>\t\n            <param name=\"filePath\"><dd> <p>An array of characters that contains the absolute file path for the font file. Subsequent operations on the constructed object may fail if the user provided <em>filePath</em> doesn't correspond to a valid file on the disk.</p> </dd></param>\t\n            <param name=\"lastWriteTime\"><dd> <p>The last modified time of the input file path. If the parameter is omitted, the function will access the font file to obtain its last write time. You should specify this value to avoid extra disk access. Subsequent operations on the constructed object may fail if the user provided <em>lastWriteTime</em> doesn't match the file on the disk.</p> </dd></param>\t\n            <param name=\"fontFile\"><dd> <p>When this method returns, contains an address of a reference to the newly created font file reference object, or <strong><c>null</c></strong> in case of failure.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFactory::CreateFontFileReference']/*\"/>\t\n            <msdn-id>dd368197</msdn-id>\t\n            <unmanaged>HRESULT IDWriteFactory::CreateFontFileReference([In, Buffer] const wchar_t* filePath,[In, Optional] const FILETIME* lastWriteTime,[Out, Fast] IDWriteFontFile** fontFile)</unmanaged>\t\n            <unmanaged-short>IDWriteFactory::CreateFontFileReference</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.Factory.CreateCustomFontFileReference_(System.IntPtr,System.Int32,System.IntPtr,SharpDX.DirectWrite.FontFile)\">\n            <summary>\t\n            <p> Creates a reference to an application-specific font file resource. </p>\t\n            </summary>\t\n            <param name=\"fontFileReferenceKey\"><dd> <p>A font file reference key that uniquely identifies the font file resource during the lifetime of <em>fontFileLoader</em>.</p> </dd></param>\t\n            <param name=\"fontFileReferenceKeySize\"><dd> <p>The size of the font file reference key in bytes.</p> </dd></param>\t\n            <param name=\"fontFileLoader\"><dd> <p>The font file loader that will be used by the font system to load data from the file identified by <em>fontFileReferenceKey</em>.</p> </dd></param>\t\n            <param name=\"fontFile\"><dd> <p>Contains an address of a reference to the newly created font file object when this method succeeds, or <strong><c>null</c></strong> in case of failure.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p> This function is provided for cases when an application or a document needs to use a private font without having to install it on the system. <em>fontFileReferenceKey</em> has to be unique only in the scope of the <em>fontFileLoader</em> used in this call. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFactory::CreateCustomFontFileReference']/*\"/>\t\n            <msdn-id>dd368188</msdn-id>\t\n            <unmanaged>HRESULT IDWriteFactory::CreateCustomFontFileReference([In, Buffer] const void* fontFileReferenceKey,[In] unsigned int fontFileReferenceKeySize,[In] IDWriteFontFileLoader* fontFileLoader,[Out, Fast] IDWriteFontFile** fontFile)</unmanaged>\t\n            <unmanaged-short>IDWriteFactory::CreateCustomFontFileReference</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.Factory.CreateFontFace(SharpDX.DirectWrite.FontFaceType,System.Int32,SharpDX.DirectWrite.FontFile[],System.Int32,SharpDX.DirectWrite.FontSimulations,SharpDX.DirectWrite.FontFace)\">\n            <summary>\t\n            <p> Creates an object that represents a font face. </p>\t\n            </summary>\t\n            <param name=\"fontFaceType\"><dd> <p>A value that indicates the type of file format of the font face.</p> </dd></param>\t\n            <param name=\"numberOfFiles\"><dd> <p>The number of font files, in element count, required to represent the font face.</p> </dd></param>\t\n            <param name=\"fontFiles\"><dd> <p>A font file object representing the font face.  Because <strong><see cref=\"T:SharpDX.DirectWrite.FontFace\"/></strong> maintains its own references to the input font file objects, you may release them after this call.</p> </dd></param>\t\n            <param name=\"faceIndex\"><dd> <p>The zero-based index of a font face, in cases when the font files contain a collection of font faces. If the font files contain a single face, this value should be zero.</p> </dd></param>\t\n            <param name=\"fontFaceSimulationFlags\"><dd> <p>A value that indicates which, if any, font face simulation flags for algorithmic means of making text bold or italic are applied to the current font face.</p> </dd></param>\t\n            <param name=\"fontFace\"><dd> <p>When this method returns, contains an address of a reference to the newly created font face object, or <strong><c>null</c></strong> in case of failure.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFactory::CreateFontFace']/*\"/>\t\n            <msdn-id>dd368196</msdn-id>\t\n            <unmanaged>HRESULT IDWriteFactory::CreateFontFace([In] DWRITE_FONT_FACE_TYPE fontFaceType,[In] unsigned int numberOfFiles,[In, Buffer] const IDWriteFontFile** fontFiles,[In] unsigned int faceIndex,[In] DWRITE_FONT_SIMULATIONS fontFaceSimulationFlags,[Out, Fast] IDWriteFontFace** fontFace)</unmanaged>\t\n            <unmanaged-short>IDWriteFactory::CreateFontFace</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.Factory.CreateFontFace(SharpDX.DirectWrite.FontFaceType,System.Int32,SharpDX.ComArray{SharpDX.DirectWrite.FontFile},System.Int32,SharpDX.DirectWrite.FontSimulations,SharpDX.DirectWrite.FontFace)\">\n            <summary>\t\n            <p> Creates an object that represents a font face. </p>\t\n            </summary>\t\n            <param name=\"fontFaceType\"><dd> <p>A value that indicates the type of file format of the font face.</p> </dd></param>\t\n            <param name=\"numberOfFiles\"><dd> <p>The number of font files, in element count, required to represent the font face.</p> </dd></param>\t\n            <param name=\"fontFiles\"><dd> <p>A font file object representing the font face.  Because <strong><see cref=\"T:SharpDX.DirectWrite.FontFace\"/></strong> maintains its own references to the input font file objects, you may release them after this call.</p> </dd></param>\t\n            <param name=\"faceIndex\"><dd> <p>The zero-based index of a font face, in cases when the font files contain a collection of font faces. If the font files contain a single face, this value should be zero.</p> </dd></param>\t\n            <param name=\"fontFaceSimulationFlags\"><dd> <p>A value that indicates which, if any, font face simulation flags for algorithmic means of making text bold or italic are applied to the current font face.</p> </dd></param>\t\n            <param name=\"fontFace\"><dd> <p>When this method returns, contains an address of a reference to the newly created font face object, or <strong><c>null</c></strong> in case of failure.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFactory::CreateFontFace']/*\"/>\t\n            <msdn-id>dd368196</msdn-id>\t\n            <unmanaged>HRESULT IDWriteFactory::CreateFontFace([In] DWRITE_FONT_FACE_TYPE fontFaceType,[In] unsigned int numberOfFiles,[In, Buffer] const IDWriteFontFile** fontFiles,[In] unsigned int faceIndex,[In] DWRITE_FONT_SIMULATIONS fontFaceSimulationFlags,[Out, Fast] IDWriteFontFace** fontFace)</unmanaged>\t\n            <unmanaged-short>IDWriteFactory::CreateFontFace</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.Factory.CreateRenderingParams(SharpDX.DirectWrite.RenderingParams)\">\n            <summary>\t\n            <p> Creates a rendering parameters object with default settings for the primary monitor. Different monitors may have different rendering parameters, for more information see the How to Add Support for Multiple Monitors topic.</p>\t\n            </summary>\t\n            <param name=\"renderingParams\">No documentation.</param>\t\n            <returns><p>Standard <see cref=\"T:SharpDX.Result\"/> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFactory::CreateRenderingParams']/*\"/>\t\n            <msdn-id>dd368201</msdn-id>\t\n            <unmanaged>HRESULT IDWriteFactory::CreateRenderingParams([Out, Fast] IDWriteRenderingParams** renderingParams)</unmanaged>\t\n            <unmanaged-short>IDWriteFactory::CreateRenderingParams</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.Factory.CreateMonitorRenderingParams(System.IntPtr,SharpDX.DirectWrite.RenderingParams)\">\n            <summary>\t\n            <p> Creates a rendering parameters object with default settings for the specified monitor. In most cases, this is the preferred way to create a rendering parameters object.</p>\t\n            </summary>\t\n            <param name=\"monitor\"><dd> <p>A handle for the specified monitor.</p> </dd></param>\t\n            <param name=\"renderingParams\"><dd> <p>When this method returns, contains an address of a reference to the rendering parameters object created by this method.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFactory::CreateMonitorRenderingParams']/*\"/>\t\n            <msdn-id>dd368199</msdn-id>\t\n            <unmanaged>HRESULT IDWriteFactory::CreateMonitorRenderingParams([In] HMONITOR monitor,[Out, Fast] IDWriteRenderingParams** renderingParams)</unmanaged>\t\n            <unmanaged-short>IDWriteFactory::CreateMonitorRenderingParams</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.Factory.CreateCustomRenderingParams(System.Single,System.Single,System.Single,SharpDX.DirectWrite.PixelGeometry,SharpDX.DirectWrite.RenderingMode,SharpDX.DirectWrite.RenderingParams)\">\n            <summary>\t\n            <p> Creates a rendering parameters object with the specified properties. </p>\t\n            </summary>\t\n            <param name=\"gamma\"><dd> <p>The gamma level to be set for the new rendering parameters object.</p> </dd></param>\t\n            <param name=\"enhancedContrast\"><dd> <p>The enhanced contrast level to be set for the new rendering parameters object.</p> </dd></param>\t\n            <param name=\"clearTypeLevel\"><dd> <p>The ClearType level to be set for the new rendering parameters object.</p> </dd></param>\t\n            <param name=\"pixelGeometry\"><dd> <p>Represents the internal structure of a device pixel (that is, the physical arrangement of red, green, and blue color components) that is assumed for purposes of rendering text.</p> </dd></param>\t\n            <param name=\"renderingMode\"><dd> <p>A value that represents the method (for example, ClearType natural quality) for rendering glyphs.</p> </dd></param>\t\n            <param name=\"renderingParams\"><dd> <p>When this method returns, contains an address of a reference to the newly created rendering parameters object.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFactory::CreateCustomRenderingParams']/*\"/>\t\n            <msdn-id>dd368190</msdn-id>\t\n            <unmanaged>HRESULT IDWriteFactory::CreateCustomRenderingParams([In] float gamma,[In] float enhancedContrast,[In] float clearTypeLevel,[In] DWRITE_PIXEL_GEOMETRY pixelGeometry,[In] DWRITE_RENDERING_MODE renderingMode,[Out, Fast] IDWriteRenderingParams** renderingParams)</unmanaged>\t\n            <unmanaged-short>IDWriteFactory::CreateCustomRenderingParams</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.Factory.RegisterFontFileLoader_(System.IntPtr)\">\n            <summary>\t\n            <p> Registers a font file loader with DirectWrite. </p>\t\n            </summary>\t\n            <param name=\"fontFileLoader\"><dd> <p>Pointer to a <strong><see cref=\"T:SharpDX.DirectWrite.FontFileLoader\"/></strong> object for a particular file resource type.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p> This function registers a font file loader with DirectWrite. The font file loader interface, which should be implemented   by a singleton object, handles loading font file resources of a particular type from a key. A given instance can only be registered once. Succeeding attempts will return an error, indicating that it has already been registered. Note that font file loader implementations must not register themselves with DirectWrite inside their constructors, and must not unregister themselves inside their destructors, because registration and unregistraton operations increment and decrement the object reference count respectively. Instead, registration and unregistration with DirectWrite of font file loaders should be performed outside of the font file loader implementation. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFactory::RegisterFontFileLoader']/*\"/>\t\n            <msdn-id>dd368210</msdn-id>\t\n            <unmanaged>HRESULT IDWriteFactory::RegisterFontFileLoader([In] IDWriteFontFileLoader* fontFileLoader)</unmanaged>\t\n            <unmanaged-short>IDWriteFactory::RegisterFontFileLoader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.Factory.UnregisterFontFileLoader_(System.IntPtr)\">\n            <summary>\t\n            <p> Unregisters a font file loader that was previously registered with the DirectWrite font system using <strong>RegisterFontFileLoader</strong>. </p>\t\n            </summary>\t\n            <param name=\"fontFileLoader\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p> This function unregisters font file loader callbacks with the DirectWrite font system. You should implement the font file loader interface by a singleton object. Note that font file loader implementations must not register themselves with DirectWrite inside their constructors and must not unregister themselves in their destructors, because registration and unregistraton operations increment and decrement the object reference count respectively. Instead, registration and unregistration of font file loaders with DirectWrite should be performed outside of the font file loader implementation. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFactory::UnregisterFontFileLoader']/*\"/>\t\n            <msdn-id>dd368212</msdn-id>\t\n            <unmanaged>HRESULT IDWriteFactory::UnregisterFontFileLoader([In] IDWriteFontFileLoader* fontFileLoader)</unmanaged>\t\n            <unmanaged-short>IDWriteFactory::UnregisterFontFileLoader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.Factory.CreateTextFormat(System.String,SharpDX.DirectWrite.FontCollection,SharpDX.DirectWrite.FontWeight,SharpDX.DirectWrite.FontStyle,SharpDX.DirectWrite.FontStretch,System.Single,System.String,SharpDX.DirectWrite.TextFormat)\">\n            <summary>\t\n            <p> Creates a text format object used for text layout. </p>\t\n            </summary>\t\n            <param name=\"fontFamilyName\"><dd> <p>An array of characters that contains the name of the font family</p> </dd></param>\t\n            <param name=\"fontCollection\"><dd> <p>A reference to a font collection object. When this is <strong><c>null</c></strong>, indicates the system font collection.</p> </dd></param>\t\n            <param name=\"fontWeight\"><dd> <p>A value that indicates the font weight for the text object created by this method.</p> </dd></param>\t\n            <param name=\"fontStyle\"><dd> <p>A value that indicates the font style for the text object created by this method.</p> </dd></param>\t\n            <param name=\"fontStretch\"><dd> <p>A value that indicates the font stretch for the text object created by this method.</p> </dd></param>\t\n            <param name=\"fontSize\"><dd> <p>The logical size of the font in DIP (\"device-independent pixel\") units. A DIP equals 1/96 inch.</p> </dd></param>\t\n            <param name=\"localeName\"><dd> <p>An array of characters that contains the locale name.</p> </dd></param>\t\n            <param name=\"textFormat\"><dd> <p>When this method returns, contains an address of a reference to a  newly created text format object, or <strong><c>null</c></strong> in case of failure.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFactory::CreateTextFormat']/*\"/>\t\n            <msdn-id>dd368203</msdn-id>\t\n            <unmanaged>HRESULT IDWriteFactory::CreateTextFormat([In, Buffer] const wchar_t* fontFamilyName,[In, Optional] IDWriteFontCollection* fontCollection,[In] DWRITE_FONT_WEIGHT fontWeight,[In] DWRITE_FONT_STYLE fontStyle,[In] DWRITE_FONT_STRETCH fontStretch,[In] float fontSize,[In, Buffer] const wchar_t* localeName,[Out, Fast] IDWriteTextFormat** textFormat)</unmanaged>\t\n            <unmanaged-short>IDWriteFactory::CreateTextFormat</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.Factory.CreateTypography(SharpDX.DirectWrite.Typography)\">\n            <summary>\t\n            <p> Creates a typography object for use in a text layout. </p>\t\n            </summary>\t\n            <param name=\"typography\"><dd> <p>When this method returns, contains the address of  a reference to a newly created typography object, or <strong><c>null</c></strong> in case of failure.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFactory::CreateTypography']/*\"/>\t\n            <msdn-id>dd368206</msdn-id>\t\n            <unmanaged>HRESULT IDWriteFactory::CreateTypography([Out, Fast] IDWriteTypography** typography)</unmanaged>\t\n            <unmanaged-short>IDWriteFactory::CreateTypography</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.Factory.GetGdiInterop(SharpDX.DirectWrite.GdiInterop@)\">\n            <summary>\t\n            <p> Creates an object that is used for interoperability with GDI. </p>\t\n            </summary>\t\n            <param name=\"gdiInterop\"><dd> <p>When this method returns, contains an address of a reference to a GDI interop object if successful, or <strong><c>null</c></strong> in case of failure.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFactory::GetGdiInterop']/*\"/>\t\n            <msdn-id>dd368207</msdn-id>\t\n            <unmanaged>HRESULT IDWriteFactory::GetGdiInterop([Out] IDWriteGdiInterop** gdiInterop)</unmanaged>\t\n            <unmanaged-short>IDWriteFactory::GetGdiInterop</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.Factory.CreateTextLayout(System.String,System.Int32,SharpDX.DirectWrite.TextFormat,System.Single,System.Single,SharpDX.DirectWrite.TextLayout)\">\n            <summary>\t\n            <p> Takes a string, text format, and associated constraints, and produces an object that represents the fully analyzed and formatted result. </p>\t\n            </summary>\t\n            <param name=\"text\"><dd> <p>An array of characters that contains the string to create a new <strong><see cref=\"T:SharpDX.DirectWrite.TextLayout\"/></strong> object from. This array must be of length <em>stringLength</em> and can contain embedded <strong><c>null</c></strong> characters.</p> </dd></param>\t\n            <param name=\"stringLength\"><dd> <p>The number of characters in  the string.</p> </dd></param>\t\n            <param name=\"textFormat\"><dd> <p>A reference to an object that indicates the format to apply to the string.</p> </dd></param>\t\n            <param name=\"maxWidth\"><dd> <p>The width of the layout box.</p> </dd></param>\t\n            <param name=\"maxHeight\"><dd> <p>The height of the layout box.</p> </dd></param>\t\n            <param name=\"textLayout\"><dd> <p>When this method returns, contains an address of a reference to the resultant text layout object.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFactory::CreateTextLayout']/*\"/>\t\n            <msdn-id>dd368205</msdn-id>\t\n            <unmanaged>HRESULT IDWriteFactory::CreateTextLayout([In, Buffer] const wchar_t* string,[In] unsigned int stringLength,[In] IDWriteTextFormat* textFormat,[In] float maxWidth,[In] float maxHeight,[Out, Fast] IDWriteTextLayout** textLayout)</unmanaged>\t\n            <unmanaged-short>IDWriteFactory::CreateTextLayout</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.Factory.CreateGdiCompatibleTextLayout(System.String,System.Int32,SharpDX.DirectWrite.TextFormat,System.Single,System.Single,System.Single,System.Nullable{SharpDX.DirectWrite.Matrix},SharpDX.Bool,SharpDX.DirectWrite.TextLayout)\">\n            <summary>\t\n            <p> Takes a string, format, and associated constraints, and produces an object representing the result, formatted for a particular display resolution and measuring mode.  </p>\t\n            </summary>\t\n            <param name=\"text\"><dd> <p>An array of characters that contains the string to create a new <strong><see cref=\"T:SharpDX.DirectWrite.TextLayout\"/></strong> object from. This array must be of length <em>stringLength</em> and can contain embedded <strong><c>null</c></strong> characters.</p> </dd></param>\t\n            <param name=\"stringLength\"><dd> <p>The length of the string, in character count.</p> </dd></param>\t\n            <param name=\"textFormat\"><dd> <p>The text formatting object to apply to the string.</p> </dd></param>\t\n            <param name=\"layoutWidth\"><dd> <p>The width of the layout box.</p> </dd></param>\t\n            <param name=\"layoutHeight\"><dd> <p>The height of the layout box.</p> </dd></param>\t\n            <param name=\"pixelsPerDip\"><dd> <p>The number of physical pixels per DIP (device independent pixel). For example, if rendering onto a 96 DPI device <em>pixelsPerDip</em> is 1. If rendering onto a 120 DPI device <em>pixelsPerDip</em> is 1.25 (120/96).</p> </dd></param>\t\n            <param name=\"transform\"><dd> <p>An optional transform applied to the glyphs and their positions. This transform is applied after the scaling specifies the font size and pixels per DIP.</p> </dd></param>\t\n            <param name=\"useGdiNatural\"><dd> <p> Instructs the text layout to use the same metrics as GDI bi-level text when set to <strong><see cref=\"F:SharpDX.Result.False\"/></strong>. When set to <strong>TRUE</strong>, instructs the text layout to use the same metrics as text measured by GDI using a font created with <strong>CLEARTYPE_NATURAL_QUALITY</strong>. </p> </dd></param>\t\n            <param name=\"textLayout\"><dd> <p>When this method returns, contains an address to the reference of the resultant text layout object.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>The resulting text layout should only be used for the intended resolution, and for cases where text scalability is desired <strong>CreateTextLayout</strong> should be used instead.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFactory::CreateGdiCompatibleTextLayout']/*\"/>\t\n            <msdn-id>dd368192</msdn-id>\t\n            <unmanaged>HRESULT IDWriteFactory::CreateGdiCompatibleTextLayout([In, Buffer] const wchar_t* string,[In] unsigned int stringLength,[In] IDWriteTextFormat* textFormat,[In] float layoutWidth,[In] float layoutHeight,[In] float pixelsPerDip,[In, Optional] const DWRITE_MATRIX* transform,[In] BOOL useGdiNatural,[Out, Fast] IDWriteTextLayout** textLayout)</unmanaged>\t\n            <unmanaged-short>IDWriteFactory::CreateGdiCompatibleTextLayout</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.Factory.CreateEllipsisTrimmingSign(SharpDX.DirectWrite.TextFormat,SharpDX.DirectWrite.InlineObject)\">\n            <summary>\t\n            <p> Creates an inline object for trimming, using an ellipsis as the omission sign. </p>\t\n            </summary>\t\n            <param name=\"textFormat\"><dd> <p>A text format object, created with <strong>CreateTextFormat</strong>, used for text layout.</p> </dd></param>\t\n            <param name=\"trimmingSign\"><dd> <p>When this method returns, contains an address of a reference to the omission (that is, ellipsis trimming) sign created by this method.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>The ellipsis will be created using the current settings of the format, including base font, style, and any effects. Alternate omission signs can be created by the application by implementing <strong><see cref=\"T:SharpDX.DirectWrite.InlineObject\"/></strong>. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFactory::CreateEllipsisTrimmingSign']/*\"/>\t\n            <msdn-id>dd368194</msdn-id>\t\n            <unmanaged>HRESULT IDWriteFactory::CreateEllipsisTrimmingSign([In] IDWriteTextFormat* textFormat,[Out, Fast] IDWriteInlineObject** trimmingSign)</unmanaged>\t\n            <unmanaged-short>IDWriteFactory::CreateEllipsisTrimmingSign</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.Factory.CreateTextAnalyzer(SharpDX.DirectWrite.TextAnalyzer)\">\n            <summary>\t\n            <p> Returns an interface for performing text analysis. </p>\t\n            </summary>\t\n            <param name=\"textAnalyzer\"><dd> <p>When this method returns, contains an address of  a reference to the newly created text analyzer object.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFactory::CreateTextAnalyzer']/*\"/>\t\n            <msdn-id>dd368202</msdn-id>\t\n            <unmanaged>HRESULT IDWriteFactory::CreateTextAnalyzer([Out, Fast] IDWriteTextAnalyzer** textAnalyzer)</unmanaged>\t\n            <unmanaged-short>IDWriteFactory::CreateTextAnalyzer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.Factory.CreateNumberSubstitution(SharpDX.DirectWrite.NumberSubstitutionMethod,System.String,SharpDX.Bool,SharpDX.DirectWrite.NumberSubstitution)\">\n            <summary>\t\n            <p> Creates a number substitution object using a locale name, substitution method, and an indicator  whether to ignore user overrides (use NLS defaults for the given culture instead). </p>\t\n            </summary>\t\n            <param name=\"substitutionMethod\"><dd> <p>A value that specifies how to apply number substitution on digits and related punctuation.</p> </dd></param>\t\n            <param name=\"localeName\"><dd> <p>The name of the locale to be used in the <em>numberSubstitution</em> object.</p> </dd></param>\t\n            <param name=\"ignoreUserOverride\"><dd> <p>A Boolean flag that indicates whether to ignore user overrides.</p> </dd></param>\t\n            <param name=\"numberSubstitution\"><dd> <p>When this method returns, contains an address to  a reference to the number substitution object created by this method.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFactory::CreateNumberSubstitution']/*\"/>\t\n            <msdn-id>dd368200</msdn-id>\t\n            <unmanaged>HRESULT IDWriteFactory::CreateNumberSubstitution([In] DWRITE_NUMBER_SUBSTITUTION_METHOD substitutionMethod,[In, Buffer] const wchar_t* localeName,[In] BOOL ignoreUserOverride,[Out, Fast] IDWriteNumberSubstitution** numberSubstitution)</unmanaged>\t\n            <unmanaged-short>IDWriteFactory::CreateNumberSubstitution</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.Factory.CreateGlyphRunAnalysis(SharpDX.DirectWrite.GlyphRun,System.Single,System.Nullable{SharpDX.DirectWrite.Matrix},SharpDX.DirectWrite.RenderingMode,SharpDX.Direct2D1.MeasuringMode,System.Single,System.Single,SharpDX.DirectWrite.GlyphRunAnalysis)\">\n            <summary>\t\n            <p> Creates a glyph run analysis object, which encapsulates information used to render a glyph run. </p>\t\n            </summary>\t\n            <param name=\"glyphRun\"><dd> <p>A structure that contains the properties of the glyph run (font face, advances, and so on).</p> </dd></param>\t\n            <param name=\"pixelsPerDip\"><dd> <p>Number of physical pixels per DIP (device independent pixel). For example, if rendering onto a 96 DPI bitmap then <em>pixelsPerDip</em> is 1. If rendering onto a 120 DPI bitmap then <em>pixelsPerDip</em> is 1.25.</p> </dd></param>\t\n            <param name=\"transform\"><dd> <p>Optional transform applied to the glyphs and their positions. This transform is applied after the scaling specified the <em>emSize</em> and <em>pixelsPerDip</em>.</p> </dd></param>\t\n            <param name=\"renderingMode\"><dd> <p>A value that specifies the rendering mode, which must be one of the raster rendering modes (that is, not default and not outline).</p> </dd></param>\t\n            <param name=\"measuringMode\"><dd> <p>Specifies the measuring mode to use with glyphs.</p> </dd></param>\t\n            <param name=\"baselineOriginX\"><dd> <p>The horizontal position (X-coordinate) of the baseline origin, in DIPs.</p> </dd></param>\t\n            <param name=\"baselineOriginY\"><dd> <p>Vertical position (Y-coordinate) of the baseline origin, in DIPs.</p> </dd></param>\t\n            <param name=\"glyphRunAnalysis\"><dd> <p>When this method returns, contains an address of a reference to the newly created glyph run analysis object.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>The glyph run analysis object contains the results of analyzing the glyph run, including the positions of all the glyphs and references to all of the rasterized glyphs in the font cache. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFactory::CreateGlyphRunAnalysis']/*\"/>\t\n            <msdn-id>dd368198</msdn-id>\t\n            <unmanaged>HRESULT IDWriteFactory::CreateGlyphRunAnalysis([In] const DWRITE_GLYPH_RUN* glyphRun,[In] float pixelsPerDip,[In, Optional] const DWRITE_MATRIX* transform,[In] DWRITE_RENDERING_MODE renderingMode,[In] DWRITE_MEASURING_MODE measuringMode,[In] float baselineOriginX,[In] float baselineOriginY,[Out, Fast] IDWriteGlyphRunAnalysis** glyphRunAnalysis)</unmanaged>\t\n            <unmanaged-short>IDWriteFactory::CreateGlyphRunAnalysis</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.DirectWrite.Factory.GdiInterop\">\n            <summary>\t\n            <p> Creates an object that is used for interoperability with GDI. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFactory::GetGdiInterop']/*\"/>\t\n            <msdn-id>dd368207</msdn-id>\t\n            <unmanaged>GetGdiInterop</unmanaged>\t\n            <unmanaged-short>GetGdiInterop</unmanaged-short>\t\n            <unmanaged>HRESULT IDWriteFactory::GetGdiInterop([Out] IDWriteGdiInterop** gdiInterop)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.FontCollection\">\n            <summary>\t\n            <p> An object that encapsulates a set of fonts, such as the set of fonts installed on the system, or the set of fonts in a particular directory. The font collection API can be used to discover what font families and fonts are available, and to obtain some metadata about the fonts.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The <strong><see cref=\"M:SharpDX.DirectWrite.Factory.GetSystemFontCollection(SharpDX.Bool)\"/></strong> method will give you an <strong><see cref=\"T:SharpDX.DirectWrite.FontCollection\"/></strong> object, which encapsulates the set of fonts installed on the system, as shown in the following code example.</p><pre><code><see cref=\"T:SharpDX.DirectWrite.FontCollection\"/>* pFontCollection = <c>null</c>; // Get the system font collection.\t\n            if (SUCCEEDED(hr))\t\n            { hr = pDWriteFactory-&gt;GetSystemFontCollection(&amp;pFontCollection);\t\n            }\t\n            </code></pre><p> <strong><see cref=\"T:SharpDX.DirectWrite.TextFormat\"/></strong> and <strong><see cref=\"T:SharpDX.DirectWrite.TextLayout\"/></strong> both have a <strong>GetFontCollection</strong> method that returns the font collection being used by the object.  These interfaces use the system font collection by default, but can use a custom font collection instead.</p><p>To determine what fonts are available on the system,  get a reference to the system font collection.  You can then use the <strong><see cref=\"M:SharpDX.DirectWrite.FontCollection.GetFontFamilyCount\"/></strong> method to determine the number of fonts and loop through the list. The following example enumerates the fonts in the system font collection, and prints the font family names to the console.</p><pre><code> #include &lt;dwrite.h&gt;\t\n            #include &lt;string.h&gt;\t\n            #include &lt;stdio.h&gt;\t\n            #include &lt;new&gt; // SafeRelease inline function.\t\n            template &lt;class T&gt; inline void SafeRelease(T **ppT)\t\n            { if (*ppT) { (*ppT)-&gt;Release(); *ppT = <c>null</c>; }\t\n            } void wmain()\t\n            { <see cref=\"T:SharpDX.DirectWrite.Factory\"/>* pDWriteFactory = <c>null</c>; <see cref=\"T:SharpDX.Result\"/> hr = <see cref=\"M:SharpDX.DirectWrite.DWrite.CreateFactory(SharpDX.DirectWrite.FactoryType,System.Guid,SharpDX.ComObject)\"/>( <see cref=\"F:SharpDX.DirectWrite.FactoryType.Shared\"/>, __uuidof(<see cref=\"T:SharpDX.DirectWrite.Factory\"/>), reinterpret_cast&lt;<see cref=\"T:SharpDX.ComObject\"/>**&gt;(&amp;pDWriteFactory) ); <see cref=\"T:SharpDX.DirectWrite.FontCollection\"/>* pFontCollection = <c>null</c>; // Get the system font collection. if (SUCCEEDED(hr)) { hr = pDWriteFactory-&gt;GetSystemFontCollection(&amp;pFontCollection); } UINT32 familyCount = 0; // Get the number of font families in the collection. if (SUCCEEDED(hr)) { familyCount = pFontCollection-&gt;GetFontFamilyCount(); } for (UINT32 i = 0; i &lt; familyCount; ++i) { <see cref=\"T:SharpDX.DirectWrite.FontFamily\"/>* pFontFamily = <c>null</c>; // Get the font family. if (SUCCEEDED(hr)) { hr = pFontCollection-&gt;GetFontFamily(i, &amp;pFontFamily); } <see cref=\"T:SharpDX.DirectWrite.LocalizedStrings\"/>* pFamilyNames = <c>null</c>; // Get a list of localized strings for the family name. if (SUCCEEDED(hr)) { hr = pFontFamily-&gt;GetFamilyNames(&amp;pFamilyNames); } UINT32 index = 0; <see cref=\"T:SharpDX.Bool\"/> exists = false; wchar_t localeName[LOCALE_NAME_MAX_LENGTH]; if (SUCCEEDED(hr)) { // Get the default locale for this user. int defaultLocaleSuccess = GetUserDefaultLocaleName(localeName, LOCALE_NAME_MAX_LENGTH); // If the default locale is returned, find that locale name, otherwise use \"en-us\". if (defaultLocaleSuccess) { hr = pFamilyNames-&gt;FindLocaleName(localeName, &amp;index, &amp;exists); } if (SUCCEEDED(hr) &amp;&amp; !exists) // if the above find did not find a match, retry with US English { hr = pFamilyNames-&gt;FindLocaleName(L\"en-us\", &amp;index, &amp;exists); } } // If the specified locale doesn't exist, select the first on the list. if (!exists) index = 0; UINT32 length = 0; // Get the string length. if (SUCCEEDED(hr)) { hr = pFamilyNames-&gt;GetStringLength(index, &amp;length); } // Allocate a string big enough to hold the name. wchar_t* name = new (std::nothrow) wchar_t[length+1]; if (name == <c>null</c>) { hr = E_OUTOFMEMORY; } // Get the family name. if (SUCCEEDED(hr)) { hr = pFamilyNames-&gt;GetString(index, name, length+1); } if (SUCCEEDED(hr)) { // Print out the family name. wprintf(L\"%s\\n\", name); } SafeRelease(&amp;pFontFamily); SafeRelease(&amp;pFamilyNames); delete [] name; } SafeRelease(&amp;pFontCollection); SafeRelease(&amp;pDWriteFactory);\t\n            } </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFontCollection']/*\"/>\t\n            <msdn-id>dd368214</msdn-id>\t\n            <unmanaged>IDWriteFontCollection</unmanaged>\t\n            <unmanaged-short>IDWriteFontCollection</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.FontCollection.#ctor(SharpDX.DirectWrite.Factory,SharpDX.DirectWrite.FontCollectionLoader,SharpDX.DataStream)\">\n            <summary>\t\n            Creates a font collection using a custom font collection loader. \t\n            </summary>\t\n            <param name=\"factory\">A reference to a DirectWrite factory <see cref=\"T:SharpDX.DirectWrite.Factory\"/></param>\n            <param name=\"collectionLoader\">An application-defined font collection loader, which must have been previously registered using <see cref=\"M:SharpDX.DirectWrite.Factory.RegisterFontCollectionLoader_(System.IntPtr)\"/>. </param>\n            <param name=\"collectionKey\">The key used by the loader to identify a collection of font files.  The buffer allocated for this key should at least be the size of collectionKeySize. </param>\n            <unmanaged>HRESULT IDWriteFactory::CreateCustomFontCollection([None] IDWriteFontCollectionLoader* collectionLoader,[In, Buffer] const void* collectionKey,[None] int collectionKeySize,[Out] IDWriteFontCollection** fontCollection)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.FontCollection.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectWrite.FontCollection\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.FontCollection.op_Explicit(System.IntPtr)~SharpDX.DirectWrite.FontCollection\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.DirectWrite.FontCollection\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.FontCollection.GetFontFamilyCount\">\n            <summary>\t\n            <p> Gets the number of font families in the collection. </p>\t\n            </summary>\t\n            <returns><p>The number of font families in the collection.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFontCollection::GetFontFamilyCount']/*\"/>\t\n            <msdn-id>dd370974</msdn-id>\t\n            <unmanaged>unsigned int IDWriteFontCollection::GetFontFamilyCount()</unmanaged>\t\n            <unmanaged-short>IDWriteFontCollection::GetFontFamilyCount</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.FontCollection.GetFontFamily(System.Int32)\">\n            <summary>\t\n            <p> Creates a font family object given a zero-based font family index. </p>\t\n            </summary>\t\n            <param name=\"index\"><dd> <p>Zero-based index of the font family.</p> </dd></param>\t\n            <returns><dd> <p>When this method returns, contains the address of   a reference to the newly created font family object.</p> </dd></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFontCollection::GetFontFamily']/*\"/>\t\n            <msdn-id>dd370970</msdn-id>\t\n            <unmanaged>HRESULT IDWriteFontCollection::GetFontFamily([In] unsigned int index,[Out] IDWriteFontFamily** fontFamily)</unmanaged>\t\n            <unmanaged-short>IDWriteFontCollection::GetFontFamily</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.FontCollection.FindFamilyName(System.String,System.Int32@)\">\n            <summary>\t\n            <p> Finds the font family with the specified family name. </p>\t\n            </summary>\t\n            <param name=\"familyName\"><dd> <p>An array of characters, which is null-terminated, containing the name of the font family. The name is not case-sensitive but must otherwise exactly match a family name in the collection.</p> </dd></param>\t\n            <param name=\"index\"><dd> <p>When this method returns, contains the zero-based index of the matching font family if the family name was found; otherwise, <strong>UINT_MAX</strong>.</p> </dd></param>\t\n            <returns><dd> <p>When this method returns, <strong>TRUE</strong> if the family name exists; otherwise, <strong><see cref=\"F:SharpDX.Result.False\"/></strong>.</p> </dd></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFontCollection::FindFamilyName']/*\"/>\t\n            <msdn-id>dd368217</msdn-id>\t\n            <unmanaged>HRESULT IDWriteFontCollection::FindFamilyName([In, Buffer] const wchar_t* familyName,[Out] unsigned int* index,[Out] BOOL* exists)</unmanaged>\t\n            <unmanaged-short>IDWriteFontCollection::FindFamilyName</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.FontCollection.GetFontFromFontFace(SharpDX.DirectWrite.FontFace)\">\n            <summary>\t\n            <p> Gets the font object that corresponds to the same physical font as the specified font face object. The specified physical font must belong  to the font collection. </p>\t\n            </summary>\t\n            <param name=\"fontFace\"><dd> <p>A font face object that specifies the physical font.</p> </dd></param>\t\n            <returns><dd> <p>When this method returns, contains the address of a reference to the newly created font object if successful; otherwise, <strong><c>null</c></strong>.</p> </dd></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFontCollection::GetFontFromFontFace']/*\"/>\t\n            <msdn-id>dd370978</msdn-id>\t\n            <unmanaged>HRESULT IDWriteFontCollection::GetFontFromFontFace([In] IDWriteFontFace* fontFace,[Out] IDWriteFont** font)</unmanaged>\t\n            <unmanaged-short>IDWriteFontCollection::GetFontFromFontFace</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.DirectWrite.FontCollection.FontFamilyCount\">\n            <summary>\t\n            <p> Gets the number of font families in the collection. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFontCollection::GetFontFamilyCount']/*\"/>\t\n            <msdn-id>dd370974</msdn-id>\t\n            <unmanaged>GetFontFamilyCount</unmanaged>\t\n            <unmanaged-short>GetFontFamilyCount</unmanaged-short>\t\n            <unmanaged>unsigned int IDWriteFontCollection::GetFontFamilyCount()</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.FontCollectionLoader\">\n            <summary>\t\n            <p> Used to construct a collection of fonts given a particular type of key. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The font collection loader interface is recommended to be implemented by a singleton object. Note that font collection loader implementations must not register themselves with DirectWrite factory inside their constructors and must not unregister themselves in their destructors, because registration and unregistraton operations increment and decrement the object reference count respectively. Instead, registration and unregistration of font file loaders with DirectWrite factory should be performed outside of the font file loader implementation as a separate step.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFontCollectionLoader']/*\"/>\t\n            <msdn-id>dd368215</msdn-id>\t\n            <unmanaged>IDWriteFontCollectionLoader</unmanaged>\t\n            <unmanaged-short>IDWriteFontCollectionLoader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.FontCollectionLoader.CreateEnumeratorFromKey(SharpDX.DirectWrite.Factory,SharpDX.DataStream)\">\n            <summary>\t\n            Creates a font file enumerator object that encapsulates a collection of font files. The font system calls back to this interface to create a font collection. \t\n            </summary>\t\n            <param name=\"factory\">Pointer to the <see cref=\"T:SharpDX.DirectWrite.Factory\"/> object that was used to create the current font collection. </param>\n            <param name=\"collectionKey\">A font collection key that uniquely identifies the collection of font files within the scope of the font collection loader being used. The buffer allocated for this key must be at least  the size, in bytes, specified by collectionKeySize. </param>\n            <returns>a reference to the newly created font file enumerator.</returns>\n            <unmanaged>HRESULT IDWriteFontCollectionLoader::CreateEnumeratorFromKey([None] IDWriteFactory* factory,[In, Buffer] const void* collectionKey,[None] int collectionKeySize,[Out] IDWriteFontFileEnumerator** fontFileEnumerator)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.FontCollectionLoaderShadow\">\n            <summary>\n            Internal FontCollectionLoader Callback\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.FontCollectionLoaderShadow.FontCollectionLoaderVtbl.CreateEnumeratorFromKeyDelegate\">\n            <unmanaged>HRESULT IDWriteFontCollectionLoader::CreateEnumeratorFromKey([None] IDWriteFactory* factory,[In, Buffer] const void* collectionKey,[None] int collectionKeySize,[Out] IDWriteFontFileEnumerator** fontFileEnumerator)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.FontFace\">\n            <summary>\t\n            <p>Represents an absolute reference to a font face which contains font face type, appropriate file references,  face identification data and various font data such as metrics, names and glyph outlines. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFontFace']/*\"/>\t\n            <msdn-id>dd370983</msdn-id>\t\n            <unmanaged>IDWriteFontFace</unmanaged>\t\n            <unmanaged-short>IDWriteFontFace</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.FontFace.#ctor(SharpDX.DirectWrite.Factory,SharpDX.DirectWrite.FontFaceType,SharpDX.DirectWrite.FontFile[],System.Int32,SharpDX.DirectWrite.FontSimulations)\">\n            <summary>\t\n            Creates an object that represents a font face. \t\n            </summary>\t\n            <param name=\"factory\">A reference to a DirectWrite factory <see cref=\"T:SharpDX.DirectWrite.Factory\"/></param>\n            <param name=\"fontFaceType\">A value that indicates the type of file format of the font face. </param>\n            <param name=\"fontFiles\">A font file object representing the font face. Because<see cref=\"T:SharpDX.DirectWrite.FontFace\"/> maintains its own references to the input font file objects, you may release them after this call. </param>\n            <param name=\"faceIndex\">The zero-based index of a font face, in cases when the font files contain a collection of font faces. If the font files contain a single face, this value should be zero. </param>\n            <param name=\"fontFaceSimulationFlags\">A value that indicates which, if any, font face simulation flags for algorithmic means of making text bold or italic are applied to the current font face. </param>\n            <unmanaged>HRESULT IDWriteFactory::CreateFontFace([None] DWRITE_FONT_FACE_TYPE fontFaceType,[None] int numberOfFiles,[In, Buffer] const IDWriteFontFile** fontFiles,[None] int faceIndex,[None] DWRITE_FONT_SIMULATIONS fontFaceSimulationFlags,[Out] IDWriteFontFace** fontFace)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.FontFace.#ctor(SharpDX.DirectWrite.Font)\">\n            <summary>\t\n            Creates a font face object for the font. \t\n            </summary>\t\n            <param name=\"font\">the <see cref=\"T:SharpDX.DirectWrite.Font\"/> to create the FontFace from.</param>\n            <unmanaged>HRESULT IDWriteFont::CreateFontFace([Out] IDWriteFontFace** fontFace)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.FontFace.GetDesignGlyphMetrics(System.Int16[],System.Boolean)\">\n            <summary>\t\n            Obtains ideal (resolution-independent) glyph metrics in font design units.  \t\n            </summary>\t\n            <remarks>\t\n            Design glyph metrics are used for glyph positioning. \t\n            </remarks>\t\n            <param name=\"glyphIndices\">An array of glyph indices for which to compute  metrics. The array must contain at least as many elements as specified by glyphCount. </param>\n            <param name=\"isSideways\">Indicates whether the font is being used in a sideways run. This can affect the glyph metrics if the font has oblique simulation because sideways oblique simulation differs from non-sideways oblique simulation </param>\n            <returns>an array of <see cref=\"T:SharpDX.DirectWrite.GlyphMetrics\"/> structures. </returns>\n            <unmanaged>HRESULT IDWriteFontFace::GetDesignGlyphMetrics([In, Buffer] const short* glyphIndices,[None] int glyphCount,[Out, Buffer] DWRITE_GLYPH_METRICS* glyphMetrics,[None] BOOL isSideways)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.FontFace.GetGdiCompatibleGlyphMetrics(System.Single,System.Single,System.Nullable{SharpDX.DirectWrite.Matrix},System.Boolean,System.Int16[],System.Boolean)\">\n            <summary>\t\n            Obtains glyph metrics in font design units with the return values compatible with what GDI would produce.\t\n            </summary>\t\n            <param name=\"fontSize\">The ogical size of the font in DIP units. </param>\n            <param name=\"pixelsPerDip\">The number of physical pixels per DIP. </param>\n            <param name=\"transform\">An optional transform applied to the glyphs and their positions. This transform is applied after the scaling specified by the font size and pixelsPerDip. </param>\n            <param name=\"useGdiNatural\">When set to FALSE, the metrics are the same as the metrics of GDI aliased text.  When set to TRUE, the metrics are the same as the metrics of text measured by GDI using a font created with CLEARTYPE_NATURAL_QUALITY. </param>\n            <param name=\"glyphIndices\">An array of glyph indices for which to compute the metrics. </param>\n            <param name=\"isSideways\">A BOOL value that indicates whether the font is being used in a sideways run.  This can affect the glyph metrics if the font has oblique simulation because sideways oblique simulation differs from non-sideways oblique simulation. </param>\n            <returns>An array of <see cref=\"T:SharpDX.DirectWrite.GlyphMetrics\" /> structures filled by this function. The metrics are in font design units. </returns>\n            <unmanaged>HRESULT IDWriteFontFace::GetGdiCompatibleGlyphMetrics([None] float emSize,[None] float pixelsPerDip,[In, Optional] const DWRITE_MATRIX* transform,[None] BOOL useGdiNatural,[In, Buffer] const short* glyphIndices,[None] int glyphCount,[Out, Buffer] DWRITE_GLYPH_METRICS* glyphMetrics,[None] BOOL isSideways)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.FontFace.GetGlyphIndices(System.Int32[])\">\n            <summary>\t\n            Returns the nominal mapping of UCS4 Unicode code points to glyph indices as defined by the font 'CMAP' table. \t\n            </summary>\t\n            <remarks>\t\n            Note that this mapping is primarily provided for line layout engines built on top of the physical font API. Because of OpenType glyph substitution and line layout character substitution, the nominal conversion does not always correspond to how a Unicode string will map to glyph indices when rendering using a particular font face. Also, note that Unicode variant selectors provide for alternate mappings for character to glyph. This call will always return the default variant.  \t\n            </remarks>\t\n            <param name=\"codePoints\">An array of USC4 code points from which to obtain nominal glyph indices. The array must be allocated and be able to contain the number of elements specified by codePointCount. </param>\n            <returns>a reference to an array of nominal glyph indices filled by this function.</returns>\n            <unmanaged>HRESULT IDWriteFontFace::GetGlyphIndices([In, Buffer] const int* codePoints,[None] int codePointCount,[Out, Buffer] short* glyphIndices)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.FontFace.GetFiles\">\n            <summary>\t\n            Obtains the font files representing a font face. \t\n            </summary>\t\n            <remarks>\t\n            The IDWriteFontFace::GetFiles method should be called twice.  The first time you call GetFilesfontFiles should be NULL. When the method returns, numberOfFiles receives the number of font files that represent the font face. Then, call the method a second time, passing the numberOfFiles value that was output the first call, and a non-null buffer of the correct size to store the <see cref=\"T:SharpDX.DirectWrite.FontFile\"/> references. \t\n            </remarks>\t\n            <returns>An array that stores references to font files representing the font face. This parameter can be NULL if the user wants only the number of files representing the font face. This API increments reference count of the font file references returned according to COM conventions, and the client should release them when finished. </returns>\n            <unmanaged>HRESULT IDWriteFontFace::GetFiles([InOut] int* numberOfFiles,[Out, Buffer, Optional] IDWriteFontFile** fontFiles)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.FontFace.TryGetFontTable(System.Int32,SharpDX.DataStream@,System.IntPtr@)\">\n            <summary>\t\n            Finds the specified OpenType font table if it exists and returns a reference to it. The function accesses the underlying font data through the <see cref=\"T:SharpDX.DirectWrite.FontFileStream\" /> interface implemented by the font file loader. \t\n            </summary>\t\n            <remarks>\t\n            The context for the same tag may be different for each call, so each one must be held and released separately.  \t\n            </remarks>\t\n            <param name=\"openTypeTableTag\">The four-character tag of a OpenType font table to find. Use the DWRITE_MAKE_OPENTYPE_TAG macro to create it as an UINT32. Unlike GDI, it does not support the special TTCF and null tags to access the whole font. </param>\n            <param name=\"tableData\">When this method returns, contains the address of  a reference to the base of the table in memory. The reference is valid only as long as the font face used to get the font table still exists; (not any other font face, even if it actually refers to the same physical font).</param>\n            <param name=\"tableContext\">When this method returns, the address of a reference to  the opaque context, which must be freed by calling {{ReleaseFontTable}}. The context actually comes from the lower-level <see cref=\"T:SharpDX.DirectWrite.FontFileStream\" />, which may be implemented by the application or DWrite itself. It is possible for a NULL tableContext to be returned, especially if the implementation performs direct memory mapping on the whole file. Nevertheless, always release it later, and do not use it as a test for function success. The same table can be queried multiple times, but because each returned context can be different, you must release each context separately.  </param>\n            <returns>TRUE if the font table exists; otherwise, FALSE. </returns>\n            <unmanaged>HRESULT IDWriteFontFace::TryGetFontTable([In] int openTypeTableTag,[Out, Buffer] const void** tableData,[Out] int* tableSize,[Out] void** tableContext,[Out] BOOL* exists)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.FontFace.GetGlyphRunOutline(System.Single,System.Int16[],System.Single[],SharpDX.DirectWrite.GlyphOffset[],System.Boolean,System.Boolean,SharpDX.Direct2D1.SimplifiedGeometrySink)\">\n            <summary>\t\n            Computes the outline of a run of glyphs by calling back to the outline sink interface. \t\n            </summary>\t\n            <param name=\"emSize\">The logical size of the font in DIP units. A DIP (\"device-independent pixel\") equals 1/96 inch. </param>\n            <param name=\"glyphIndices\">An array of glyph indices. The glyphs are in logical order and the advance direction depends on the isRightToLeft parameter. The array must be allocated and be able to contain the number of elements specified by glyphCount. </param>\n            <param name=\"glyphAdvances\">An optional array of glyph advances in DIPs. The advance of a glyph is the amount to advance the position (in the direction of the baseline) after drawing the glyph. glyphAdvances contains the number of elements specified by glyphIndices.Length. </param>\n            <param name=\"glyphOffsets\">An optional array of glyph offsets, each of which specifies the offset along the baseline and offset perpendicular to the baseline of a glyph relative to the current pen position.   glyphOffsets contains the number of elements specified by glyphIndices.Length. </param>\n            <param name=\"isSideways\">If TRUE, the ascender of the glyph runs alongside the baseline. If FALSE, the glyph ascender runs perpendicular to the baseline. For example, an English alphabet on a vertical baseline would have isSideways set to FALSE. A client can render a vertical run by setting isSideways to TRUE and rotating the resulting geometry 90 degrees to the right using a transform. The isSideways and isRightToLeft parameters cannot both be true. </param>\n            <param name=\"isRightToLeft\">The visual order of the glyphs. If this parameter is FALSE, then glyph advances are from left to right. If TRUE, the advance direction is right to left. By default, the advance direction is left to right. </param>\n            <param name=\"geometrySink\">A reference to the interface that is called back to perform outline drawing operations. </param>\n            <returns>If the method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code. </returns>\n            <unmanaged>HRESULT IDWriteFontFace::GetGlyphRunOutline([None] float emSize,[In, Buffer] const short* glyphIndices,[In, Buffer, Optional] const float* glyphAdvances,[In, Buffer, Optional] const DWRITE_GLYPH_OFFSET* glyphOffsets,[None] int glyphCount,[None] BOOL isSideways,[None] BOOL isRightToLeft,[None] IDWriteGeometrySink* geometrySink)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.FontFace.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectWrite.FontFace\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.FontFace.op_Explicit(System.IntPtr)~SharpDX.DirectWrite.FontFace\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.DirectWrite.FontFace\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.FontFace.GetFaceType\">\n            <summary>\t\n            <p> Obtains the file format type of a font face. </p>\t\n            </summary>\t\n            <returns><p>A value that indicates the type of format for the font face (such as Type 1, TrueType, vector, or bitmap).</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFontFace::GetType']/*\"/>\t\n            <msdn-id>dd371031</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FACE_TYPE IDWriteFontFace::GetType()</unmanaged>\t\n            <unmanaged-short>IDWriteFontFace::GetType</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.FontFace.GetFiles(System.Int32@,SharpDX.DirectWrite.FontFile[])\">\n            <summary>\t\n            <p> Obtains the font files representing a font face. </p>\t\n            </summary>\t\n            <param name=\"numberOfFiles\"><dd> <p>If <em>fontFiles</em> is <strong><c>null</c></strong>, receives the number of files representing the font face.  Otherwise, the number of font files being requested should be passed.  See the Remarks section below for more information.</p> </dd></param>\t\n            <param name=\"fontFiles\"><dd> <p>When this method returns, contains a reference to a user-provided array that stores references to font files representing the font face. This parameter can be <strong><c>null</c></strong> if the user wants only the number of files representing the font face. This API increments reference count of the font file references returned according to COM conventions, and the client should release them when finished.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>The <strong><see cref=\"M:SharpDX.DirectWrite.FontFace.GetFiles\"/></strong> method should be called twice.  The first time you call <strong>GetFiles</strong><em>fontFiles</em> should be <strong><c>null</c></strong>. When the method returns, <em>numberOfFiles</em> receives the number of font files that represent the font face.</p><p>Then, call the method a second time, passing the <em>numberOfFiles</em> value that was output the first call, and a non-null buffer of the correct size to store the <strong><see cref=\"T:SharpDX.DirectWrite.FontFile\"/></strong> references.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFontFace::GetFiles']/*\"/>\t\n            <msdn-id>dd370989</msdn-id>\t\n            <unmanaged>HRESULT IDWriteFontFace::GetFiles([InOut] unsigned int* numberOfFiles,[Out, Buffer, Optional] IDWriteFontFile** fontFiles)</unmanaged>\t\n            <unmanaged-short>IDWriteFontFace::GetFiles</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.FontFace.GetIndex\">\n            <summary>\t\n            <p> Obtains the index of a font face in the context of its font files. </p>\t\n            </summary>\t\n            <returns><p>The zero-based index of a font face in cases when the font files contain a collection of font faces. If the font files contain a single face, this value is zero.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFontFace::GetIndex']/*\"/>\t\n            <msdn-id>dd371007</msdn-id>\t\n            <unmanaged>unsigned int IDWriteFontFace::GetIndex()</unmanaged>\t\n            <unmanaged-short>IDWriteFontFace::GetIndex</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.FontFace.GetSimulations\">\n            <summary>\t\n            <p> Obtains the algorithmic style simulation flags of a font face. </p>\t\n            </summary>\t\n            <returns><p>Font face simulation flags for algorithmic means of making text bold or italic.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFontFace::GetSimulations']/*\"/>\t\n            <msdn-id>dd371018</msdn-id>\t\n            <unmanaged>DWRITE_FONT_SIMULATIONS IDWriteFontFace::GetSimulations()</unmanaged>\t\n            <unmanaged-short>IDWriteFontFace::GetSimulations</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.FontFace.IsSymbolFont_\">\n            <summary>\t\n            <p> Determines whether the font is a symbol font. </p>\t\n            </summary>\t\n            <returns><p>Returns <strong>TRUE</strong> if the font is a symbol font, otherwise <strong><see cref=\"F:SharpDX.Result.False\"/></strong>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFontFace::IsSymbolFont']/*\"/>\t\n            <msdn-id>dd371034</msdn-id>\t\n            <unmanaged>BOOL IDWriteFontFace::IsSymbolFont()</unmanaged>\t\n            <unmanaged-short>IDWriteFontFace::IsSymbolFont</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.FontFace.GetMetrics(SharpDX.DirectWrite.FontMetrics@)\">\n            <summary>\t\n            <p> Obtains design units and common metrics for the font face. These metrics are applicable to all the glyphs within a font face and are used by applications for layout calculations. </p>\t\n            </summary>\t\n            <param name=\"fontFaceMetrics\"><dd> <p>When this method returns, a?<strong><see cref=\"T:SharpDX.DirectWrite.FontMetrics\"/></strong> structure that holds metrics (such as ascent, descent, or cap height) for the current font face element. The metrics returned by this function are in font design units.</p> </dd></param>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFontFace::GetMetrics']/*\"/>\t\n            <msdn-id>dd371011</msdn-id>\t\n            <unmanaged>void IDWriteFontFace::GetMetrics([Out] DWRITE_FONT_METRICS* fontFaceMetrics)</unmanaged>\t\n            <unmanaged-short>IDWriteFontFace::GetMetrics</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.FontFace.GetGlyphCount\">\n            <summary>\t\n            <p> Obtains the number of glyphs in the font face. </p>\t\n            </summary>\t\n            <returns><p>The number of glyphs in the font face.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFontFace::GetGlyphCount']/*\"/>\t\n            <msdn-id>dd370993</msdn-id>\t\n            <unmanaged>unsigned short IDWriteFontFace::GetGlyphCount()</unmanaged>\t\n            <unmanaged-short>IDWriteFontFace::GetGlyphCount</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.FontFace.GetDesignGlyphMetrics(System.Int16[],System.Int32,SharpDX.DirectWrite.GlyphMetrics[],SharpDX.Bool)\">\n            <summary>\t\n            <p> Obtains ideal (resolution-independent) glyph metrics in font design units.  </p>\t\n            </summary>\t\n            <param name=\"glyphIndices\"><dd> <p> An array of glyph indices for which to compute  metrics. The array must contain at least as many elements as specified by <em>glyphCount</em>.</p> </dd></param>\t\n            <param name=\"glyphCount\"><dd> <p>The number of elements in the <em>glyphIndices</em> array.</p> </dd></param>\t\n            <param name=\"glyphMetrics\"><dd> <p>When this method returns, contains an array of <see cref=\"T:SharpDX.DirectWrite.GlyphMetrics\"/> structures.  <em>glyphMetrics</em> must be initialized with an empty buffer that contains at least as many elements as <em>glyphCount</em>. The metrics returned by this function are in font design units.</p> </dd></param>\t\n            <param name=\"isSideways\"><dd> <p>Indicates whether the font is being used in a sideways run. This can affect the glyph metrics if the font has oblique simulation because sideways oblique simulation differs from non-sideways oblique simulation</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>Design glyph metrics are used for glyph positioning.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFontFace::GetDesignGlyphMetrics']/*\"/>\t\n            <msdn-id>dd370986</msdn-id>\t\n            <unmanaged>HRESULT IDWriteFontFace::GetDesignGlyphMetrics([In, Buffer] const unsigned short* glyphIndices,[In] unsigned int glyphCount,[Out, Buffer] DWRITE_GLYPH_METRICS* glyphMetrics,[In] BOOL isSideways)</unmanaged>\t\n            <unmanaged-short>IDWriteFontFace::GetDesignGlyphMetrics</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.FontFace.GetGlyphIndices(System.Int32[],System.Int32,System.Int16[])\">\n            <summary>\t\n            <p> Returns the nominal mapping of UCS4 Unicode code points to glyph indices as defined by the font 'CMAP' table. </p>\t\n            </summary>\t\n            <param name=\"codePoints\"><dd> <p>An array of USC4 code points from which to obtain nominal glyph indices. The array must be allocated and be able to contain the number of elements specified by <em>codePointCount</em>.</p> </dd></param>\t\n            <param name=\"codePointCount\"><dd> <p>The number of elements in the <em>codePoints</em> array.</p> </dd></param>\t\n            <param name=\"glyphIndices\"><dd> <p>When this method returns, contains a reference to an array of nominal glyph indices filled by this function.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>Note that this mapping is primarily provided for line layout engines built on top of the physical font API. Because of OpenType glyph substitution and line layout character substitution, the nominal conversion does not always correspond to how a Unicode string will map to glyph indices when rendering using a particular font face. Also, note that Unicode variant selectors provide for alternate mappings for character to glyph. This call will always return the default variant. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFontFace::GetGlyphIndicesW']/*\"/>\t\n            <msdn-id>dd370998</msdn-id>\t\n            <unmanaged>HRESULT IDWriteFontFace::GetGlyphIndicesW([In, Buffer] const unsigned int* codePoints,[In] unsigned int codePointCount,[Out, Buffer] unsigned short* glyphIndices)</unmanaged>\t\n            <unmanaged-short>IDWriteFontFace::GetGlyphIndicesW</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.FontFace.TryGetFontTable(System.Int32,System.IntPtr,System.Int32@,System.IntPtr@,SharpDX.Bool@)\">\n            <summary>\t\n            <p> Finds the specified OpenType font table if it exists and returns a reference to it. The function accesses the underlying font data through the <strong><see cref=\"T:SharpDX.DirectWrite.FontFileStream\"/></strong> interface implemented by the font file loader. </p>\t\n            </summary>\t\n            <param name=\"openTypeTableTag\">No documentation.</param>\t\n            <param name=\"tableData\">No documentation.</param>\t\n            <param name=\"tableSize\">No documentation.</param>\t\n            <param name=\"tableContext\">No documentation.</param>\t\n            <param name=\"exists\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p> The context for the same tag may be different for each call, so each one must be held and released separately. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFontFace::TryGetFontTable']/*\"/>\t\n            <msdn-id>dd371039</msdn-id>\t\n            <unmanaged>HRESULT IDWriteFontFace::TryGetFontTable([In] unsigned int openTypeTableTag,[Out, Buffer] const void** tableData,[Out] unsigned int* tableSize,[Out] void** tableContext,[Out] BOOL* exists)</unmanaged>\t\n            <unmanaged-short>IDWriteFontFace::TryGetFontTable</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.FontFace.ReleaseFontTable(System.IntPtr)\">\n            <summary>\t\n            <p> Releases the table obtained earlier from <strong>TryGetFontTable</strong>. </p>\t\n            </summary>\t\n            <param name=\"tableContext\">No documentation.</param>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFontFace::ReleaseFontTable']/*\"/>\t\n            <msdn-id>dd371036</msdn-id>\t\n            <unmanaged>void IDWriteFontFace::ReleaseFontTable([In] void* tableContext)</unmanaged>\t\n            <unmanaged-short>IDWriteFontFace::ReleaseFontTable</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.FontFace.GetGlyphRunOutline_(System.Single,System.Int16[],System.Single[],SharpDX.DirectWrite.GlyphOffset[],System.Int32,SharpDX.Bool,SharpDX.Bool,System.IntPtr)\">\n            <summary>\t\n            <p> Computes the outline of a run of glyphs by calling back to the outline sink interface. </p>\t\n            </summary>\t\n            <param name=\"emSize\"><dd> <p>The logical size of the font in DIP units. A DIP (\"device-independent pixel\") equals 1/96 inch.</p> </dd></param>\t\n            <param name=\"glyphIndices\"><dd> <p>An array of glyph indices. The glyphs are in logical order and the advance direction depends on the <em>isRightToLeft</em> parameter. The array must be allocated and be able to contain the number of elements specified by <em>glyphCount</em>.</p> </dd></param>\t\n            <param name=\"glyphAdvances\"><dd> <p>An optional array of glyph advances in DIPs. The advance of a glyph is the amount to advance the position (in the direction of the baseline) after drawing the glyph. <em>glyphAdvances</em> contains the number of elements specified by <em>glyphCount</em>.</p> </dd></param>\t\n            <param name=\"glyphOffsets\"><dd> <p>An optional array of glyph offsets, each of which specifies the offset along the baseline and offset perpendicular to the baseline of a glyph relative to the current pen position.   <em>glyphOffsets</em> contains the number of elements specified by <em>glyphCount</em>.</p> </dd></param>\t\n            <param name=\"glyphCount\"><dd> <p>The number of glyphs in the run.</p> </dd></param>\t\n            <param name=\"isSideways\"><dd> <p>If <strong>TRUE</strong>, the ascender of the glyph runs alongside the baseline. If <strong><see cref=\"F:SharpDX.Result.False\"/></strong>, the glyph ascender runs perpendicular to the baseline. For example, an English alphabet on a vertical baseline would have <em>isSideways</em> set to <strong><see cref=\"F:SharpDX.Result.False\"/></strong>.</p> <p>A client can render a vertical run by setting <em>isSideways</em> to <strong>TRUE</strong> and rotating the resulting geometry 90 degrees to the right using a transform. The <em>isSideways</em> and <em>isRightToLeft</em> parameters cannot both be true.</p> </dd></param>\t\n            <param name=\"isRightToLeft\"><dd> <p>The visual order of the glyphs. If this parameter is <strong><see cref=\"F:SharpDX.Result.False\"/></strong>, then glyph advances are from left to right. If <strong>TRUE</strong>, the advance direction is right to left. By default, the advance direction is left to right.</p> </dd></param>\t\n            <param name=\"geometrySink\"><dd> <p>A reference to the interface that is called back to perform outline drawing operations.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFontFace::GetGlyphRunOutline']/*\"/>\t\n            <msdn-id>dd371003</msdn-id>\t\n            <unmanaged>HRESULT IDWriteFontFace::GetGlyphRunOutline([In] float emSize,[In, Buffer] const unsigned short* glyphIndices,[In, Buffer, Optional] const float* glyphAdvances,[In, Buffer, Optional] const DWRITE_GLYPH_OFFSET* glyphOffsets,[In] unsigned int glyphCount,[In] BOOL isSideways,[In] BOOL isRightToLeft,[In] ID2D1SimplifiedGeometrySink* geometrySink)</unmanaged>\t\n            <unmanaged-short>IDWriteFontFace::GetGlyphRunOutline</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.FontFace.GetRecommendedRenderingMode(System.Single,System.Single,SharpDX.Direct2D1.MeasuringMode,SharpDX.DirectWrite.RenderingParams)\">\n            <summary>\t\n            <p> Determines the recommended rendering mode for the font, using the specified size and rendering parameters. </p>\t\n            </summary>\t\n            <param name=\"emSize\"><dd> <p>The logical size of the font in DIP units. A DIP (\"device-independent pixel\") equals 1/96 inch.</p> </dd></param>\t\n            <param name=\"pixelsPerDip\"><dd> <p>The number of physical pixels per DIP. For example, if the DPI of the rendering surface is 96, this  value is 1.0f. If the DPI is 120, this value is 120.0f/96.</p> </dd></param>\t\n            <param name=\"measuringMode\"><dd> <p>The measuring method that will be used for glyphs in the font. Renderer implementations may choose different rendering modes for different measuring methods, for example: </p> <ul> <li><see cref=\"F:SharpDX.DirectWrite.RenderingMode.CleartypeNatural\"/> for <see cref=\"F:SharpDX.Direct2D1.MeasuringMode.Natural\"/></li> <li> <see cref=\"F:SharpDX.DirectWrite.RenderingMode.CleartypeGdiClassic\"/> for <see cref=\"F:SharpDX.Direct2D1.MeasuringMode.GdiClassic\"/></li> <li> <see cref=\"F:SharpDX.DirectWrite.RenderingMode.CleartypeGdiNatural\"/> for <see cref=\"F:SharpDX.Direct2D1.MeasuringMode.GdiNatural\"/></li> </ul> </dd></param>\t\n            <param name=\"renderingParams\"><dd> <p>A reference to an object that contains rendering settings such as gamma level, enhanced contrast, and ClearType level. This parameter is necessary in case the rendering parameters  object overrides the rendering mode.</p> </dd></param>\t\n            <returns><dd> <p>When this method returns, contains a value that indicates the recommended rendering mode to use.</p> </dd></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFontFace::GetRecommendedRenderingMode']/*\"/>\t\n            <msdn-id>dd371015</msdn-id>\t\n            <unmanaged>HRESULT IDWriteFontFace::GetRecommendedRenderingMode([In] float emSize,[In] float pixelsPerDip,[In] DWRITE_MEASURING_MODE measuringMode,[In] IDWriteRenderingParams* renderingParams,[Out] DWRITE_RENDERING_MODE* renderingMode)</unmanaged>\t\n            <unmanaged-short>IDWriteFontFace::GetRecommendedRenderingMode</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.FontFace.GetGdiCompatibleMetrics(System.Single,System.Single,System.Nullable{SharpDX.DirectWrite.Matrix})\">\n            <summary>\t\n            <p>Obtains design units and common metrics for the font face. These metrics are applicable to all the glyphs within a fontface and are used by applications for layout calculations.</p>\t\n            </summary>\t\n            <param name=\"emSize\"><dd> <p>The logical size of the font in DIP units.</p> </dd></param>\t\n            <param name=\"pixelsPerDip\"><dd> <p>The number of physical pixels per DIP.</p> </dd></param>\t\n            <param name=\"transform\"><dd> <p>An optional transform applied to the glyphs and their positions. This transform is applied after the scaling specified by the font size and <em>pixelsPerDip</em>.</p> </dd></param>\t\n            <returns><dd> <p>A reference to a <strong>DWRITE_FONT_METRIC</strong>S structure to fill in. The metrics returned by this function are in font design units.</p> </dd></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFontFace::GetGdiCompatibleMetrics']/*\"/>\t\n            <msdn-id>dd941789</msdn-id>\t\n            <unmanaged>HRESULT IDWriteFontFace::GetGdiCompatibleMetrics([In] float emSize,[In] float pixelsPerDip,[In, Optional] const DWRITE_MATRIX* transform,[Out] DWRITE_FONT_METRICS* fontFaceMetrics)</unmanaged>\t\n            <unmanaged-short>IDWriteFontFace::GetGdiCompatibleMetrics</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.FontFace.GetGdiCompatibleGlyphMetrics(System.Single,System.Single,System.Nullable{SharpDX.DirectWrite.Matrix},SharpDX.Bool,System.Int16[],System.Int32,SharpDX.DirectWrite.GlyphMetrics[],SharpDX.Bool)\">\n            <summary>\t\n            <p>Obtains glyph metrics in font design units with the return values compatible with what GDI would produce.</p>\t\n            </summary>\t\n            <param name=\"emSize\"><dd> <p>The ogical size of the font in DIP units.</p> </dd></param>\t\n            <param name=\"pixelsPerDip\"><dd> <p>The number of physical pixels per DIP.</p> </dd></param>\t\n            <param name=\"transform\"><dd> <p>An optional transform applied to the glyphs and their positions. This transform is applied after the scaling specified by the font size and <em>pixelsPerDip</em>.</p> </dd></param>\t\n            <param name=\"useGdiNatural\"><dd> <p>When set to <strong><see cref=\"F:SharpDX.Result.False\"/></strong>, the metrics are the same as the metrics of GDI aliased text.  When set to <strong>TRUE</strong>, the metrics are the same as the metrics of text measured by GDI using a font created with <strong>CLEARTYPE_NATURAL_QUALITY</strong>.</p> </dd></param>\t\n            <param name=\"glyphIndices\"><dd> <p>An array of glyph indices for which to compute the metrics.</p> </dd></param>\t\n            <param name=\"glyphCount\"><dd> <p>The number of elements in the <em>glyphIndices</em> array.</p> </dd></param>\t\n            <param name=\"glyphMetrics\"><dd> <p>An array of <strong><see cref=\"T:SharpDX.DirectWrite.GlyphMetrics\"/></strong> structures filled by this function. The metrics are in font design units.</p> </dd></param>\t\n            <param name=\"isSideways\"><dd> <p>A <see cref=\"T:SharpDX.Bool\"/> value that indicates whether the font is being used in a sideways run.  This can affect the glyph metrics if the font has oblique simulation because sideways oblique simulation differs from non-sideways oblique simulation.</p> </dd></param>\t\n            <returns><p>Standard <strong><see cref=\"T:SharpDX.Result\"/></strong> error code. If any of the input glyph indices are outside of the valid glyph index range for the current font face, <strong>E_INVALIDARG</strong> will be returned.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFontFace::GetGdiCompatibleGlyphMetrics']/*\"/>\t\n            <msdn-id>dd941788</msdn-id>\t\n            <unmanaged>HRESULT IDWriteFontFace::GetGdiCompatibleGlyphMetrics([In] float emSize,[In] float pixelsPerDip,[In, Optional] const DWRITE_MATRIX* transform,[In] BOOL useGdiNatural,[In, Buffer] const unsigned short* glyphIndices,[In] unsigned int glyphCount,[Out, Buffer] DWRITE_GLYPH_METRICS* glyphMetrics,[In] BOOL isSideways)</unmanaged>\t\n            <unmanaged-short>IDWriteFontFace::GetGdiCompatibleGlyphMetrics</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.DirectWrite.FontFace.FaceType\">\n            <summary>\t\n            <p> Obtains the file format type of a font face. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFontFace::GetType']/*\"/>\t\n            <msdn-id>dd371031</msdn-id>\t\n            <unmanaged>GetType</unmanaged>\t\n            <unmanaged-short>GetType</unmanaged-short>\t\n            <unmanaged>DWRITE_FONT_FACE_TYPE IDWriteFontFace::GetType()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectWrite.FontFace.Index\">\n            <summary>\t\n            <p> Obtains the index of a font face in the context of its font files. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFontFace::GetIndex']/*\"/>\t\n            <msdn-id>dd371007</msdn-id>\t\n            <unmanaged>GetIndex</unmanaged>\t\n            <unmanaged-short>GetIndex</unmanaged-short>\t\n            <unmanaged>unsigned int IDWriteFontFace::GetIndex()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectWrite.FontFace.Simulations\">\n            <summary>\t\n            <p> Obtains the algorithmic style simulation flags of a font face. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFontFace::GetSimulations']/*\"/>\t\n            <msdn-id>dd371018</msdn-id>\t\n            <unmanaged>GetSimulations</unmanaged>\t\n            <unmanaged-short>GetSimulations</unmanaged-short>\t\n            <unmanaged>DWRITE_FONT_SIMULATIONS IDWriteFontFace::GetSimulations()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectWrite.FontFace.IsSymbolFont\">\n            <summary>\t\n            <p> Determines whether the font is a symbol font. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFontFace::IsSymbolFont']/*\"/>\t\n            <msdn-id>dd371034</msdn-id>\t\n            <unmanaged>IsSymbolFont</unmanaged>\t\n            <unmanaged-short>IsSymbolFont</unmanaged-short>\t\n            <unmanaged>BOOL IDWriteFontFace::IsSymbolFont()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectWrite.FontFace.Metrics\">\n            <summary>\t\n            <p> Obtains design units and common metrics for the font face. These metrics are applicable to all the glyphs within a font face and are used by applications for layout calculations. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFontFace::GetMetrics']/*\"/>\t\n            <msdn-id>dd371011</msdn-id>\t\n            <unmanaged>GetMetrics</unmanaged>\t\n            <unmanaged-short>GetMetrics</unmanaged-short>\t\n            <unmanaged>void IDWriteFontFace::GetMetrics([Out] DWRITE_FONT_METRICS* fontFaceMetrics)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectWrite.FontFace.GlyphCount\">\n            <summary>\t\n            <p> Obtains the number of glyphs in the font face. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFontFace::GetGlyphCount']/*\"/>\t\n            <msdn-id>dd370993</msdn-id>\t\n            <unmanaged>GetGlyphCount</unmanaged>\t\n            <unmanaged-short>GetGlyphCount</unmanaged-short>\t\n            <unmanaged>unsigned short IDWriteFontFace::GetGlyphCount()</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.FontFeature\">\n            <summary>\t\n            <p>Specifies properties used to identify and execute typographic features in the current font face.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>A non-zero value generally enables the feature execution, while the zero value disables it. A feature requiring a selector uses this value to indicate the selector index.</p><p>The OpenType standard provides access to typographic features available in the font by means of a feature tag with the associated parameters. The OpenType feature tag is a 4-byte identifier of the registered name of a feature. For example, the 'kern' feature name tag is used to identify the 'Kerning' feature in OpenType font. Similarly, the OpenType feature tag for 'Standard Ligatures' and 'Fractions' is 'liga' and 'frac' respectively. Since a single run can be associated with more than one typographic features, the Text String API accepts typographic settings for a run as a list of features and are executed in the order they are specified.</p><p>The value of the tag member represents the OpenType name tag of the feature, while the param value represents additional parameter for the execution of the feature referred by the tag member. Both <strong>nameTag</strong> and <strong>parameter</strong> are stored as little endian, the same convention followed by GDI.  Most features treat the Param value as a binary value that indicates whether to turn the execution of the feature on or off, with it being off by default in the majority of cases. Some features, however, treat this value as an integral value representing the integer index to the list of alternate results it may produce during the execution; for instance, the feature 'Stylistic Alternates' or 'salt' uses the <strong>parameter</strong> value as an index to the list of alternate substituting glyphs it could produce for a specified glyph. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FEATURE']/*\"/>\t\n            <msdn-id>dd368066</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FEATURE</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FEATURE</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.FontFeature.#ctor(SharpDX.DirectWrite.FontFeatureTag,System.Int32)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectWrite.FontFeature\"/> struct.\n            </summary>\n            <param name=\"nameTag\">The name tag.</param>\n            <param name=\"parameter\">The parameter.</param>\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFeature.NameTag\">\n            <summary>\t\n            <dd> <p>The feature OpenType name identifier.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FEATURE::nameTag']/*\"/>\t\n            <msdn-id>dd368066</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FEATURE_TAG nameTag</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FEATURE_TAG nameTag</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFeature.Parameter\">\n            <summary>\t\n            <dd> <p>The execution parameter of the feature.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FEATURE::parameter']/*\"/>\t\n            <msdn-id>dd368066</msdn-id>\t\n            <unmanaged>unsigned int parameter</unmanaged>\t\n            <unmanaged-short>unsigned int parameter</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.FontFile\">\n            <summary>\t\n            <p> Represents a font file. Applications  such as font managers or font viewers can call <strong><see cref=\"M:SharpDX.DirectWrite.FontFile.Analyze(SharpDX.Bool@,SharpDX.DirectWrite.FontFileType@,SharpDX.DirectWrite.FontFaceType@,System.Int32@)\"/></strong> to find out if a particular file is a font file, and whether it is a font type that is supported by the font system.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFontFile']/*\"/>\t\n            <msdn-id>dd371060</msdn-id>\t\n            <unmanaged>IDWriteFontFile</unmanaged>\t\n            <unmanaged-short>IDWriteFontFile</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.FontFile.#ctor(SharpDX.DirectWrite.Factory,System.String)\">\n            <summary>\t\n            Creates a font file reference object from a local font file. \t\n            </summary>\t\n            <param name=\"factory\">A reference to a DirectWrite factory <see cref=\"T:SharpDX.DirectWrite.Factory\"/></param>\n            <param name=\"filePath\">An array of characters that contains the absolute file path for the font file. Subsequent operations on the constructed object may fail if the user provided filePath doesn't correspond to a valid file on the disk. </param>\n            <unmanaged>HRESULT IDWriteFactory::CreateFontFileReference([In] const wchar_t* filePath,[In, Optional] const __int64* lastWriteTime,[Out] IDWriteFontFile** fontFile)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.FontFile.#ctor(SharpDX.DirectWrite.Factory,System.String,System.Nullable{System.Int64})\">\n            <summary>\t\n            Creates a font file reference object from a local font file. \t\n            </summary>\t\n            <param name=\"factory\">A reference to a DirectWrite factory <see cref=\"T:SharpDX.DirectWrite.Factory\"/></param>\n            <param name=\"filePath\">An array of characters that contains the absolute file path for the font file. Subsequent operations on the constructed object may fail if the user provided filePath doesn't correspond to a valid file on the disk. </param>\n            <param name=\"lastWriteTime\">The last modified time of the input file path. If the parameter is omitted, the function will access the font file to obtain its last write time. You should specify this value to avoid extra disk access. Subsequent operations on the constructed object may fail if the user provided lastWriteTime doesn't match the file on the disk. </param>\n            <unmanaged>HRESULT IDWriteFactory::CreateFontFileReference([In] const wchar_t* filePath,[In, Optional] const __int64* lastWriteTime,[Out] IDWriteFontFile** fontFile)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.FontFile.#ctor(SharpDX.DirectWrite.Factory,System.IntPtr,System.Int32,SharpDX.DirectWrite.FontFileLoader)\">\n            <summary>\n            Creates a reference to an application-specific font file resource.\n            </summary>\n            <param name=\"factory\">A reference to a DirectWrite factory <see cref=\"T:SharpDX.DirectWrite.Factory\"/></param>\n            <param name=\"fontFileReferenceKey\">A font file reference key that uniquely identifies the font file resource during the lifetime of fontFileLoader.</param>\n            <param name=\"fontFileReferenceKeySize\">The size of the font file reference key in bytes.</param>\n            <param name=\"fontFileLoader\">The font file loader that will be used by the font system to load data from the file identified by fontFileReferenceKey.</param>\n            <remarks>\n            This function is provided for cases when an application or a document needs to use a private font without having to install it on the system. fontFileReferenceKey has to be unique only in the scope of the fontFileLoader used in this call.\n            </remarks>\n            <unmanaged>HRESULT IDWriteFactory::CreateCustomFontFileReference([In, Buffer] const void* fontFileReferenceKey,[None] int fontFileReferenceKeySize,[None] IDWriteFontFileLoader* fontFileLoader,[Out] IDWriteFontFile** fontFile)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.FontFile.GetReferenceKey\">\n            <summary>\t\n            Obtains the reference to the reference key of a font file. The returned reference is valid until the font file object is released.  \t\n            </summary>\t\n            <returns>the reference to the reference key of a font file. </returns>\n            <unmanaged>HRESULT IDWriteFontFile::GetReferenceKey([Out, Buffer] const void** fontFileReferenceKey,[Out] int* fontFileReferenceKeySize)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.FontFile.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectWrite.FontFile\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.FontFile.op_Explicit(System.IntPtr)~SharpDX.DirectWrite.FontFile\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.DirectWrite.FontFile\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.FontFile.GetReferenceKey(System.IntPtr,System.Int32@)\">\n            <summary>\t\n            <p> Obtains the reference to the reference key of a font file. The returned reference is valid until the font file object is released.  </p>\t\n            </summary>\t\n            <param name=\"fontFileReferenceKey\"><dd> <p>When this method returns, contains an address of  a reference to the font file reference key. Note that the reference value is only valid until the font file object it is obtained from is released. This parameter is passed uninitialized.</p> </dd></param>\t\n            <param name=\"fontFileReferenceKeySize\"><dd> <p>When this method returns, contains the size of the font file reference key in bytes. This parameter is passed uninitialized.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFontFile::GetReferenceKey']/*\"/>\t\n            <msdn-id>dd371108</msdn-id>\t\n            <unmanaged>HRESULT IDWriteFontFile::GetReferenceKey([Out, Buffer] const void** fontFileReferenceKey,[Out] unsigned int* fontFileReferenceKeySize)</unmanaged>\t\n            <unmanaged-short>IDWriteFontFile::GetReferenceKey</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.FontFile.GetLoader(SharpDX.DirectWrite.FontFileLoader@)\">\n            <summary>\t\n            <p> Obtains the file loader associated with a font file object. </p>\t\n            </summary>\t\n            <param name=\"fontFileLoader\"><dd> <p>When this method returns, contains the address of  a reference to the font file loader associated with the font file object.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFontFile::GetLoader']/*\"/>\t\n            <msdn-id>dd371104</msdn-id>\t\n            <unmanaged>HRESULT IDWriteFontFile::GetLoader([Out] IDWriteFontFileLoader** fontFileLoader)</unmanaged>\t\n            <unmanaged-short>IDWriteFontFile::GetLoader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.FontFile.Analyze(SharpDX.Bool@,SharpDX.DirectWrite.FontFileType@,SharpDX.DirectWrite.FontFaceType@,System.Int32@)\">\n            <summary>\t\n            <p> Analyzes a file and returns whether it represents a font, and whether the font type is supported by the font system. </p>\t\n            </summary>\t\n            <param name=\"isSupportedFontType\"><dd> <p><strong>TRUE</strong> if the font type is supported by the font system; otherwise, <strong><see cref=\"F:SharpDX.Result.False\"/></strong>.</p> </dd></param>\t\n            <param name=\"fontFileType\"><dd> <p>When this method returns, contains a value that indicates the type of the font file. Note that even if <em> isSupportedFontType</em> is <strong><see cref=\"F:SharpDX.Result.False\"/></strong>, the <em>fontFileType</em> value may be different from <strong><see cref=\"F:SharpDX.DirectWrite.FontFileType.Unknown\"/></strong>.</p> </dd></param>\t\n            <param name=\"fontFaceType\"><dd> <p>When this method returns, contains a value that indicates the type of the font face. If <em>fontFileType</em> is not equal to <strong><see cref=\"F:SharpDX.DirectWrite.FontFileType.Unknown\"/></strong>, then that can be constructed from the font file. </p> </dd></param>\t\n            <param name=\"numberOfFaces\"><dd> <p>When this method returns, contains the number of font faces contained in the font file.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p><strong>Important</strong>??Certain font file types are recognized, but not supported by the font system. For example, the font system will recognize a file as a Type 1 font file but will not be able to construct a font face object from it. In such situations, <strong>Analyze</strong> will set <em>isSupportedFontType</em> output parameter to <strong><see cref=\"F:SharpDX.Result.False\"/></strong>. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFontFile::Analyze']/*\"/>\t\n            <msdn-id>dd371099</msdn-id>\t\n            <unmanaged>HRESULT IDWriteFontFile::Analyze([Out] BOOL* isSupportedFontType,[Out] DWRITE_FONT_FILE_TYPE* fontFileType,[Out, Optional] DWRITE_FONT_FACE_TYPE* fontFaceType,[Out] unsigned int* numberOfFaces)</unmanaged>\t\n            <unmanaged-short>IDWriteFontFile::Analyze</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.DirectWrite.FontFile.Loader\">\n            <summary>\t\n            Obtains the file loader associated with a font file object. \t\n            </summary>\t\n            <unmanaged>HRESULT IDWriteFontFile::GetLoader([Out] IDWriteFontFileLoader** fontFileLoader)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.FontFileEnumerator\">\n            <summary>\t\n            <p> Encapsulates a collection of font files. The font system uses this interface to enumerate font files when building a font collection.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFontFileEnumerator']/*\"/>\t\n            <msdn-id>dd371063</msdn-id>\t\n            <unmanaged>IDWriteFontFileEnumerator</unmanaged>\t\n            <unmanaged-short>IDWriteFontFileEnumerator</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.FontFileEnumerator.MoveNext\">\n            <summary>\t\n            Advances to the next font file in the collection. When it is first created, the enumerator is positioned before the first element of the collection and the first call to MoveNext advances to the first file. \t\n            </summary>\t\n            <returns>the value TRUE if the enumerator advances to a file; otherwise, FALSE if the enumerator advances past the last file in the collection.</returns>\n            <unmanaged>HRESULT IDWriteFontFileEnumerator::MoveNext([Out] BOOL* hasCurrentFile)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectWrite.FontFileEnumerator.CurrentFontFile\">\n            <summary>\t\n            Gets a reference to the current font file. \t\n            </summary>\t\n            <returns>a reference to the newly created <see cref=\"T:SharpDX.DirectWrite.FontFile\"/> object.</returns>\n            <unmanaged>HRESULT IDWriteFontFileEnumerator::GetCurrentFontFile([Out] IDWriteFontFile** fontFile)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.FontFileEnumeratorShadow\">\n            <summary>\n            Internal FontFileEnumerator Callback\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.FontFileEnumeratorShadow.ToIntPtr(SharpDX.DirectWrite.FontFileEnumerator)\">\n            <summary>\n            Return a pointer to the unamanged version of this callback.\n            </summary>\n            <param name=\"callback\">The callback.</param>\n            <returns>A pointer to a shadow c++ callback</returns>\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.FontFileEnumeratorShadow.FontFileEnumeratorVtbl.MoveNextDelegate\">\n            <summary>\t\n            Advances to the next font file in the collection. When it is first created, the enumerator is positioned before the first element of the collection and the first call to MoveNext advances to the first file. \t\n            </summary>\t\n            <returns>the value TRUE if the enumerator advances to a file; otherwise, FALSE if the enumerator advances past the last file in the collection.</returns>\n            <unmanaged>HRESULT IDWriteFontFileEnumerator::MoveNext([Out] BOOL* hasCurrentFile)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.FontFileEnumeratorShadow.FontFileEnumeratorVtbl.GetCurrentFontFileDelegate\">\n            <summary>\t\n            Gets a reference to the current font file. \t\n            </summary>\t\n            <returns>a reference to the newly created <see cref=\"T:SharpDX.DirectWrite.FontFile\"/> object.</returns>\n            <unmanaged>HRESULT IDWriteFontFileEnumerator::GetCurrentFontFile([Out] IDWriteFontFile** fontFile)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.FontFileLoader\">\n            <summary>\t\n            <p> Handles loading font file resources of a particular type from a font file reference key into a font file stream object. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The font file loader interface is recommended to be implemented by a singleton object. Note that font file loader implementations must not register themselves with DirectWrite factory inside their constructors and must not unregister themselves in their destructors, because registration and unregistraton operations increment and decrement the object reference count respectively. Instead, registration and unregistration of font file loaders with DirectWrite factory should be performed outside of the font file loader implementation as a separate step.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFontFileLoader']/*\"/>\t\n            <msdn-id>dd371075</msdn-id>\t\n            <unmanaged>IDWriteFontFileLoader</unmanaged>\t\n            <unmanaged-short>IDWriteFontFileLoader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.FontFileLoader.CreateStreamFromKey(SharpDX.DataStream)\">\n            <summary>\t\n            Creates a font file stream object that encapsulates an open file resource. \t\n            </summary>\t\n            <remarks>\t\n            The resource is closed when the last reference to fontFileStream is released.  \t\n            </remarks>\t\n            <param name=\"fontFileReferenceKey\">A reference to a font file reference key that uniquely identifies the font file resource within the scope of the font loader being used. The buffer allocated for this key must at least be the size, in bytes, specified by  fontFileReferenceKeySize. </param>\n            <returns>a reference to the newly created <see cref=\"T:SharpDX.DirectWrite.FontFileStream\"/> object. </returns>\n            <unmanaged>HRESULT IDWriteFontFileLoader::CreateStreamFromKey([In, Buffer] const void* fontFileReferenceKey,[None] int fontFileReferenceKeySize,[Out] IDWriteFontFileStream** fontFileStream)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.FontFileLoaderShadow\">\n            <summary>\n            Internal FontFileLoader Callback\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.FontFileLoaderShadow.ToIntPtr(SharpDX.DirectWrite.FontFileLoader)\">\n            <summary>\n            Return a pointer to the unamanged version of this callback.\n            </summary>\n            <param name=\"callback\">The callback.</param>\n            <returns>A pointer to a shadow c++ callback</returns>\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.FontFileLoaderShadow.FontFileLoaderVtbl.CreateStreamFromKeyDelegate\">\n            <unmanaged>HRESULT IDWriteFontFileLoader::CreateStreamFromKey([In, Buffer] const void* fontFileReferenceKey,[None] int fontFileReferenceKeySize,[Out] IDWriteFontFileStream** fontFileStream)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.FontFileLoaderNative\">\n            <summary>\t\n            <p> Handles loading font file resources of a particular type from a font file reference key into a font file stream object. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The font file loader interface is recommended to be implemented by a singleton object. Note that font file loader implementations must not register themselves with DirectWrite factory inside their constructors and must not unregister themselves in their destructors, because registration and unregistraton operations increment and decrement the object reference count respectively. Instead, registration and unregistration of font file loaders with DirectWrite factory should be performed outside of the font file loader implementation as a separate step.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFontFileLoader']/*\"/>\t\n            <msdn-id>dd371075</msdn-id>\t\n            <unmanaged>IDWriteFontFileLoader</unmanaged>\t\n            <unmanaged-short>IDWriteFontFileLoader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.FontFileLoaderNative.CreateStreamFromKey(SharpDX.DataStream)\">\n            <summary>\t\n            Creates a font file stream object that encapsulates an open file resource. \t\n            </summary>\t\n            <remarks>\t\n            The resource is closed when the last reference to fontFileStream is released.  \t\n            </remarks>\t\n            <param name=\"fontFileReferenceKey\">A reference to a font file reference key that uniquely identifies the font file resource within the scope of the font loader being used. The buffer allocated for this key must at least be the size, in bytes, specified by  fontFileReferenceKeySize. </param>\n            <returns>a reference to the newly created <see cref=\"T:SharpDX.DirectWrite.FontFileStream\"/> object. </returns>\n            <unmanaged>HRESULT IDWriteFontFileLoader::CreateStreamFromKey([In, Buffer] const void* fontFileReferenceKey,[None] int fontFileReferenceKeySize,[Out] IDWriteFontFileStream** fontFileStream)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.FontFileLoaderNative.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectWrite.FontFileLoaderNative\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.FontFileLoaderNative.op_Explicit(System.IntPtr)~SharpDX.DirectWrite.FontFileLoaderNative\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.DirectWrite.FontFileLoaderNative\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.FontFileLoaderNative.CreateStreamFromKey_(System.IntPtr,System.Int32,SharpDX.DirectWrite.FontFileStream@)\">\n            <summary>\t\n            <p> Creates a font file stream object that encapsulates an open file resource. </p>\t\n            </summary>\t\n            <param name=\"fontFileReferenceKey\"><dd> <p>A reference to a font file reference key that uniquely identifies the font file resource within the scope of the font loader being used. The buffer allocated for this key must at least be the size, in bytes, specified by <em> fontFileReferenceKeySize</em>.</p> </dd></param>\t\n            <param name=\"fontFileReferenceKeySize\"><dd> <p>The size of font file reference key, in bytes.</p> </dd></param>\t\n            <param name=\"fontFileStream\"><dd> <p>When this method returns, contains the address of a reference to the newly created <strong><see cref=\"T:SharpDX.DirectWrite.FontFileStream\"/></strong> object.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>The resource is closed when the last reference to <em>fontFileStream</em> is released. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFontFileLoader::CreateStreamFromKey']/*\"/>\t\n            <msdn-id>dd371077</msdn-id>\t\n            <unmanaged>HRESULT IDWriteFontFileLoader::CreateStreamFromKey([In, Buffer] const void* fontFileReferenceKey,[In] unsigned int fontFileReferenceKeySize,[Out] IDWriteFontFileStream** fontFileStream)</unmanaged>\t\n            <unmanaged-short>IDWriteFontFileLoader::CreateStreamFromKey</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.FontFileStream\">\n            <summary>\t\n            <p> Loads font file data from a custom font file loader. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFontFileStream']/*\"/>\t\n            <msdn-id>dd371081</msdn-id>\t\n            <unmanaged>IDWriteFontFileStream</unmanaged>\t\n            <unmanaged-short>IDWriteFontFileStream</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.FontFileStream.ReadFileFragment(System.IntPtr@,System.Int64,System.Int64,System.IntPtr@)\">\n            <summary>\t\n            Reads a fragment from a font file. \t\n            </summary>\t\n            <remarks>\t\n            Note that ReadFileFragment implementations must check whether the requested font file fragment is within the file bounds. Otherwise, an error should be returned from ReadFileFragment.   {{DirectWrite}} may invoke <see cref=\"T:SharpDX.DirectWrite.FontFileStream\"/> methods on the same object from multiple threads simultaneously. Therefore, ReadFileFragment implementations that rely on internal mutable state must serialize access to such state across multiple threads. For example, an implementation that uses separate Seek and Read operations to read a file fragment must place the code block containing Seek and Read calls under a lock or a critical section. \t\n            </remarks>\t\n            <param name=\"fragmentStart\">When this method returns, contains an address of a  reference to the start of the font file fragment.  This parameter is passed uninitialized. </param>\n            <param name=\"fileOffset\">The offset of the fragment, in bytes, from the beginning of the font file. </param>\n            <param name=\"fragmentSize\">The size of the file fragment, in bytes. </param>\n            <param name=\"fragmentContext\">When this method returns, contains the address of  </param>\n            <returns>a reference to a reference to the client-defined context to be passed to {{ReleaseFileFragment}}. </returns>\n            <unmanaged>HRESULT IDWriteFontFileStream::ReadFileFragment([Out, Buffer] const void** fragmentStart,[None] __int64 fileOffset,[None] __int64 fragmentSize,[Out] void** fragmentContext)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.FontFileStream.ReleaseFileFragment(System.IntPtr)\">\n            <summary>\t\n            Releases a fragment from a file. \t\n            </summary>\t\n            <param name=\"fragmentContext\">A reference to the client-defined context of a font fragment returned from {{ReadFileFragment}}. </param>\n            <unmanaged>void IDWriteFontFileStream::ReleaseFileFragment([None] void* fragmentContext)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.FontFileStream.GetFileSize\">\n            <summary>\t\n            Obtains the total size of a file. \t\n            </summary>\t\n            <remarks>\t\n            Implementing GetFileSize() for asynchronously loaded font files may require downloading the complete file contents. Therefore, this method should be used only for operations that either require a complete font file to be loaded (for example, copying a font file) or that need to make decisions based on the value of the file size (for example, validation against a persisted file size).  \t\n            </remarks>\t\n            <returns>the total size of the file. </returns>\n            <unmanaged>HRESULT IDWriteFontFileStream::GetFileSize([Out] __int64* fileSize)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.FontFileStream.GetLastWriteTime\">\n            <summary>\t\n            Obtains the last modified time of the file.  \t\n            </summary>\t\n            <remarks>\t\n            The \"last modified time\" is used by DirectWrite font selection algorithms to determine whether one font resource is more up to date than another one. \t\n            </remarks>\t\n            <returns>the last modified time of the file in the format that represents the number of 100-nanosecond intervals since January 1, 1601 (UTC). </returns>\n            <unmanaged>HRESULT IDWriteFontFileStream::GetLastWriteTime([Out] __int64* lastWriteTime)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.FontFileStreamShadow\">\n            <summary>\n            Internal FontFileStream Callback\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.FontFileStreamShadow.ToIntPtr(SharpDX.DirectWrite.FontFileStream)\">\n            <summary>\n            Return a pointer to the unamanged version of this callback.\n            </summary>\n            <param name=\"callback\">The callback.</param>\n            <returns>A pointer to a shadow c++ callback</returns>\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.FontFileStreamShadow.FontFileStreamVtbl.ReadFileFragmentDelegate\">\n            <unmanaged>HRESULT IDWriteFontFileStream::ReadFileFragment([Out, Buffer] const void** fragmentStart,[None] __int64 fileOffset,[None] __int64 fragmentSize,[Out] void** fragmentContext)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.FontFileStreamShadow.FontFileStreamVtbl.ReleaseFileFragmentDelegate\">\n            <unmanaged>void IDWriteFontFileStream::ReleaseFileFragment([None] void* fragmentContext)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.FontFileStreamShadow.FontFileStreamVtbl.GetFileSizeDelegate\">\n            <unmanaged>HRESULT IDWriteFontFileStream::GetFileSize([Out] __int64* fileSize)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.FontFileStreamShadow.FontFileStreamVtbl.GetLastWriteTimeDelegate\">\n            <unmanaged>HRESULT IDWriteFontFileStream::GetLastWriteTime([Out] __int64* lastWriteTime)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.FontFileStreamNative\">\n            <summary>\t\n            <p> Loads font file data from a custom font file loader. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFontFileStream']/*\"/>\t\n            <msdn-id>dd371081</msdn-id>\t\n            <unmanaged>IDWriteFontFileStream</unmanaged>\t\n            <unmanaged-short>IDWriteFontFileStream</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.FontFileStreamNative.ReadFileFragment(System.IntPtr@,System.Int64,System.Int64,System.IntPtr@)\">\n            <summary>\t\n            Reads a fragment from a font file. \t\n            </summary>\t\n            <remarks>\t\n            Note that ReadFileFragment implementations must check whether the requested font file fragment is within the file bounds. Otherwise, an error should be returned from ReadFileFragment.   {{DirectWrite}} may invoke <see cref=\"T:SharpDX.DirectWrite.FontFileStream\"/> methods on the same object from multiple threads simultaneously. Therefore, ReadFileFragment implementations that rely on internal mutable state must serialize access to such state across multiple threads. For example, an implementation that uses separate Seek and Read operations to read a file fragment must place the code block containing Seek and Read calls under a lock or a critical section. \t\n            </remarks>\t\n            <param name=\"fragmentStart\">When this method returns, contains an address of a  reference to the start of the font file fragment.  This parameter is passed uninitialized. </param>\n            <param name=\"fileOffset\">The offset of the fragment, in bytes, from the beginning of the font file. </param>\n            <param name=\"fragmentSize\">The size of the file fragment, in bytes. </param>\n            <param name=\"fragmentContext\">When this method returns, contains the address of  </param>\n            <returns>a reference to a reference to the client-defined context to be passed to {{ReleaseFileFragment}}. </returns>\n            <unmanaged>HRESULT IDWriteFontFileStream::ReadFileFragment([Out, Buffer] const void** fragmentStart,[None] __int64 fileOffset,[None] __int64 fragmentSize,[Out] void** fragmentContext)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.FontFileStreamNative.ReleaseFileFragment(System.IntPtr)\">\n            <summary>\t\n            Releases a fragment from a file. \t\n            </summary>\t\n            <param name=\"fragmentContext\">A reference to the client-defined context of a font fragment returned from {{ReadFileFragment}}. </param>\n            <unmanaged>void IDWriteFontFileStream::ReleaseFileFragment([None] void* fragmentContext)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.FontFileStreamNative.GetFileSize\">\n            <summary>\t\n            Obtains the total size of a file. \t\n            </summary>\t\n            <remarks>\t\n            Implementing GetFileSize() for asynchronously loaded font files may require downloading the complete file contents. Therefore, this method should be used only for operations that either require a complete font file to be loaded (for example, copying a font file) or that need to make decisions based on the value of the file size (for example, validation against a persisted file size).  \t\n            </remarks>\t\n            <returns>the total size of the file. </returns>\n            <unmanaged>HRESULT IDWriteFontFileStream::GetFileSize([Out] __int64* fileSize)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.FontFileStreamNative.GetLastWriteTime\">\n            <summary>\t\n            Obtains the last modified time of the file.  \t\n            </summary>\t\n            <remarks>\t\n            The \"last modified time\" is used by DirectWrite font selection algorithms to determine whether one font resource is more up to date than another one. \t\n            </remarks>\t\n            <returns>the last modified time of the file in the format that represents the number of 100-nanosecond intervals since January 1, 1601 (UTC). </returns>\n            <unmanaged>HRESULT IDWriteFontFileStream::GetLastWriteTime([Out] __int64* lastWriteTime)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.FontFileStreamNative.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectWrite.FontFileStreamNative\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.FontFileStreamNative.op_Explicit(System.IntPtr)~SharpDX.DirectWrite.FontFileStreamNative\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.DirectWrite.FontFileStreamNative\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.FontFileStreamNative.ReadFileFragment_(System.IntPtr@,System.Int64,System.Int64,System.IntPtr@)\">\n            <summary>\t\n            <p> Reads a fragment from a font file. </p>\t\n            </summary>\t\n            <param name=\"fragmentStart\"><dd> <p>When this method returns, contains an address of a  reference to the start of the font file fragment.  This parameter is passed uninitialized.</p> </dd></param>\t\n            <param name=\"fileOffset\"><dd> <p>The offset of the fragment, in bytes, from the beginning of the font file.</p> </dd></param>\t\n            <param name=\"fragmentSize\"><dd> <p>The size of the file fragment, in bytes.</p> </dd></param>\t\n            <param name=\"fragmentContext\"><dd> <p>When this method returns, contains the address of a reference to a reference to the client-defined context to be passed to <strong>ReleaseFileFragment</strong>.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p> Note that <strong>ReadFileFragment</strong> implementations must check whether the requested font file fragment is within the file bounds. Otherwise, an error should be returned from <strong>ReadFileFragment</strong>. </p><p> DirectWrite may invoke <strong><see cref=\"T:SharpDX.DirectWrite.FontFileStream\"/></strong> methods on the same object from multiple threads simultaneously. Therefore, <strong>ReadFileFragment</strong> implementations that rely on internal mutable state must serialize access to such state across multiple threads. For example, an implementation that uses separate Seek and Read operations to read a file fragment must place the code block containing Seek and Read calls under a lock or a critical section.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFontFileStream::ReadFileFragment']/*\"/>\t\n            <msdn-id>dd371091</msdn-id>\t\n            <unmanaged>HRESULT IDWriteFontFileStream::ReadFileFragment([Out] const void** fragmentStart,[In] unsigned longlong fileOffset,[In] unsigned longlong fragmentSize,[Out] void** fragmentContext)</unmanaged>\t\n            <unmanaged-short>IDWriteFontFileStream::ReadFileFragment</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.FontFileStreamNative.ReleaseFileFragment_(System.IntPtr)\">\n            <summary>\t\n            <p> Releases a fragment from a file. </p>\t\n            </summary>\t\n            <param name=\"fragmentContext\"><dd> <p>A reference to the client-defined context of a font fragment returned from <strong>ReadFileFragment</strong>.</p> </dd></param>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFontFileStream::ReleaseFileFragment']/*\"/>\t\n            <msdn-id>dd371095</msdn-id>\t\n            <unmanaged>void IDWriteFontFileStream::ReleaseFileFragment([In] void* fragmentContext)</unmanaged>\t\n            <unmanaged-short>IDWriteFontFileStream::ReleaseFileFragment</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.FontFileStreamNative.GetFileSize_(System.Int64@)\">\n            <summary>\t\n            <p> Obtains the total size of a file. </p>\t\n            </summary>\t\n            <param name=\"fileSize\"><dd> <p>When this method returns, contains the total size of the file.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p> Implementing GetFileSize() for asynchronously loaded font files may require downloading the complete file contents. Therefore, this method should be used only for operations that either require a complete font file to be loaded (for example, copying a font file) or that need to make decisions based on the value of the file size (for example, validation against a persisted file size). </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFontFileStream::GetFileSize']/*\"/>\t\n            <msdn-id>dd371084</msdn-id>\t\n            <unmanaged>HRESULT IDWriteFontFileStream::GetFileSize([Out] unsigned longlong* fileSize)</unmanaged>\t\n            <unmanaged-short>IDWriteFontFileStream::GetFileSize</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.FontFileStreamNative.GetLastWriteTime_(System.Int64@)\">\n            <summary>\t\n            <p> Obtains the last modified time of the file.  </p>\t\n            </summary>\t\n            <param name=\"lastWriteTime\"><dd> <p>When this method returns, contains  the last modified time of the file in the format that represents the number of 100-nanosecond intervals since January 1, 1601 (UTC).</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>The \"last modified time\" is used by DirectWrite font selection algorithms to determine whether one font resource is more up to date than another one.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFontFileStream::GetLastWriteTime']/*\"/>\t\n            <msdn-id>dd371089</msdn-id>\t\n            <unmanaged>HRESULT IDWriteFontFileStream::GetLastWriteTime([Out] unsigned longlong* lastWriteTime)</unmanaged>\t\n            <unmanaged-short>IDWriteFontFileStream::GetLastWriteTime</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.GdiInterop\">\n            <summary>\t\n            <p>Provides interoperability with GDI, such as methods to convert a font face to a <see cref=\"T:SharpDX.Win32Native.LogFont\"/> structure, or to convert a GDI font description into a font face. It is also used to create bitmap render target objects.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteGdiInterop']/*\"/>\t\n            <msdn-id>dd371172</msdn-id>\t\n            <unmanaged>IDWriteGdiInterop</unmanaged>\t\n            <unmanaged-short>IDWriteGdiInterop</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.GdiInterop.FromLogFont(System.Object)\">\n            <summary>\t\n            Creates a font object that matches the properties specified by the LOGFONT structure. \t\n            </summary>\t\n            <param name=\"logFont\">A structure containing a GDI-compatible font description. </param>\n            <returns>a  reference to a newly created <see cref=\"T:SharpDX.DirectWrite.Font\"/>. </returns>\n            <unmanaged>HRESULT IDWriteGdiInterop::CreateFontFromLOGFONT([In] const LOGFONTW* logFont,[Out] IDWriteFont** font)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.GdiInterop.ToLogFont(SharpDX.DirectWrite.Font,System.Object)\">\n            <summary>\t\n            Initializes a LOGFONT structure based on the GDI-compatible properties of the specified font. \t\n            </summary>\t\n            <remarks>\t\n            The conversion to a  LOGFONT by using ConvertFontToLOGFONT operates at the logical font level and does not guarantee that it will map to a specific physical font. It is not guaranteed that GDI will select the same physical font for displaying  text formatted by a LOGFONT as the <see cref=\"T:SharpDX.DirectWrite.Font\"/> object that was converted. \t\n            </remarks>\t\n            <param name=\"font\">An <see cref=\"T:SharpDX.DirectWrite.Font\"/> object to be converted into a GDI-compatible LOGFONT structure. </param>\n            <param name=\"logFont\">When this method returns, contains a structure that receives a GDI-compatible font description. </param>\n            <returns> TRUE if the specified font object is part of the system font collection; otherwise, FALSE. </returns>\n            <unmanaged>HRESULT IDWriteGdiInterop::ConvertFontToLOGFONT([None] IDWriteFont* font,[In] LOGFONTW* logFont,[Out] BOOL* isSystemFont)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.GdiInterop.FromSystemDrawingFont(System.Drawing.Font)\">\n            <summary>\t\n            Creates a font object that matches the properties specified by the LOGFONT structure. \t\n            </summary>\t\n            <param name=\"font\">A <see cref=\"T:System.Drawing.Font\"/> description. </param>\n            <returns>a reference to a newly created <see cref=\"T:SharpDX.DirectWrite.Font\"/>. </returns>\n            <unmanaged>HRESULT IDWriteGdiInterop::CreateFontFromLOGFONT([In] const LOGFONTW* logFont,[Out] IDWriteFont** font)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.GdiInterop.ToSystemDrawingFont(SharpDX.DirectWrite.Font,System.Drawing.Font@)\">\n            <summary>\n            Convert a Direct2D <see cref=\"T:SharpDX.DirectWrite.Font\"/> to a <see cref=\"T:System.Drawing.Font\"/>.\n            </summary>\n            <param name=\"d2dFont\">a Direct2D Font</param>\n            <param name=\"font\">a <see cref=\"T:System.Drawing.Font\"/></param>\n            <returns>true if the specified font object is part of the system font collection; otherwise, false.</returns>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.GdiInterop.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectWrite.GdiInterop\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.GdiInterop.op_Explicit(System.IntPtr)~SharpDX.DirectWrite.GdiInterop\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.DirectWrite.GdiInterop\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.GdiInterop.CreateFontFromLOGFONT(System.IntPtr,SharpDX.DirectWrite.Font@)\">\n            <summary>\t\n            <p> Creates a font object that matches the properties specified by the <strong><see cref=\"T:SharpDX.Win32Native.LogFont\"/></strong> structure. </p>\t\n            </summary>\t\n            <param name=\"logFont\"><dd> <p>A structure containing a GDI-compatible font description.</p> </dd></param>\t\n            <param name=\"font\"><dd> <p>When this method returns, contains an address of a  reference to a newly created <strong><see cref=\"T:SharpDX.DirectWrite.Font\"/></strong> object if successful; otherwise, <strong><c>null</c></strong>.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteGdiInterop::CreateFontFromLOGFONT']/*\"/>\t\n            <msdn-id>dd371187</msdn-id>\t\n            <unmanaged>HRESULT IDWriteGdiInterop::CreateFontFromLOGFONT([In] const void* logFont,[Out] IDWriteFont** font)</unmanaged>\t\n            <unmanaged-short>IDWriteGdiInterop::CreateFontFromLOGFONT</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.GdiInterop.ConvertFontToLOGFONT(SharpDX.DirectWrite.Font,System.IntPtr,SharpDX.Bool@)\">\n            <summary>\t\n            <p> Initializes a <strong><see cref=\"T:SharpDX.Win32Native.LogFont\"/></strong> structure based on the GDI-compatible properties of the specified font. </p>\t\n            </summary>\t\n            <param name=\"font\"><dd> <p>An <strong><see cref=\"T:SharpDX.DirectWrite.Font\"/></strong> object to be converted into a GDI-compatible <strong><see cref=\"T:SharpDX.Win32Native.LogFont\"/></strong> structure.</p> </dd></param>\t\n            <param name=\"logFont\"><dd> <p>When this method returns, contains a structure that receives a GDI-compatible font description.</p> </dd></param>\t\n            <param name=\"isSystemFont\"><dd> <p>When this method returns, contains <strong>TRUE</strong> if the specified font object is part of the system font collection; otherwise, <strong><see cref=\"F:SharpDX.Result.False\"/></strong>.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>The conversion to a  <strong><see cref=\"T:SharpDX.Win32Native.LogFont\"/></strong> by using <strong>ConvertFontToLOGFONT</strong> operates at the logical font level and does not guarantee that it will map to a specific physical font. It is not guaranteed that GDI will select the same physical font for displaying  text formatted by a <strong><see cref=\"T:SharpDX.Win32Native.LogFont\"/></strong> as the <strong><see cref=\"T:SharpDX.DirectWrite.Font\"/></strong> object that was converted.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteGdiInterop::ConvertFontToLOGFONT']/*\"/>\t\n            <msdn-id>dd371177</msdn-id>\t\n            <unmanaged>HRESULT IDWriteGdiInterop::ConvertFontToLOGFONT([In] IDWriteFont* font,[In] void* logFont,[Out] BOOL* isSystemFont)</unmanaged>\t\n            <unmanaged-short>IDWriteGdiInterop::ConvertFontToLOGFONT</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.GdiInterop.ConvertFontFaceToLOGFONT(SharpDX.DirectWrite.FontFace,System.IntPtr)\">\n            <summary>\t\n            <p> Initializes a <see cref=\"T:SharpDX.Win32Native.LogFont\"/> structure based on the GDI-compatible properties of the specified font. </p>\t\n            </summary>\t\n            <param name=\"font\"><dd> <p>An <strong><see cref=\"T:SharpDX.DirectWrite.FontFace\"/></strong> object to be converted into a GDI-compatible <see cref=\"T:SharpDX.Win32Native.LogFont\"/> structure.</p> </dd></param>\t\n            <param name=\"logFont\"><dd> <p>When this method returns, contains a reference to a structure that receives a GDI-compatible font description.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>The conversion to a  <see cref=\"T:SharpDX.Win32Native.LogFont\"/> by using <strong>ConvertFontFaceToLOGFONT</strong> operates at the logical font level and does not guarantee that it will map to a specific physical font. It is not guaranteed that GDI will select the same physical font for displaying  text formatted by a <see cref=\"T:SharpDX.Win32Native.LogFont\"/> as the <strong><see cref=\"T:SharpDX.DirectWrite.Font\"/></strong> object that was converted.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteGdiInterop::ConvertFontFaceToLOGFONT']/*\"/>\t\n            <msdn-id>dd371175</msdn-id>\t\n            <unmanaged>HRESULT IDWriteGdiInterop::ConvertFontFaceToLOGFONT([In] IDWriteFontFace* font,[In] void* logFont)</unmanaged>\t\n            <unmanaged-short>IDWriteGdiInterop::ConvertFontFaceToLOGFONT</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.GdiInterop.CreateFontFaceFromHdc(System.IntPtr)\">\n            <summary>\t\n            <p> Creates an <strong><see cref=\"T:SharpDX.DirectWrite.FontFace\"/></strong> object that corresponds to the currently selected <strong>HFONT</strong> of the specified <strong><see cref=\"T:System.IntPtr\"/></strong>. </p>\t\n            </summary>\t\n            <param name=\"hdc\"><dd> <p>A handle to a device context into which a font has been selected. It is assumed that the client has already performed font mapping and that the font selected into the device context is the actual font to be used  for rendering glyphs.</p> </dd></param>\t\n            <returns><dd> <p>Contains an address of a reference to  the newly created font face object, or <strong><c>null</c></strong> in case of failure. The font face returned is guaranteed to reference the same physical typeface that would be used for drawing glyphs (but not necessarily characters) using ExtTextOut.</p> </dd></returns>\t\n            <remarks>\t\n            <p>This function is intended for scenarios in which an application wants to use GDI and Uniscribe 1.x for text layout and shaping, but  DirectWrite for final rendering. This function assumes the client is performing text output using glyph indexes.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteGdiInterop::CreateFontFaceFromHdc']/*\"/>\t\n            <msdn-id>dd371185</msdn-id>\t\n            <unmanaged>HRESULT IDWriteGdiInterop::CreateFontFaceFromHdc([In] HDC hdc,[Out] IDWriteFontFace** fontFace)</unmanaged>\t\n            <unmanaged-short>IDWriteGdiInterop::CreateFontFaceFromHdc</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.GdiInterop.CreateBitmapRenderTarget(System.IntPtr,System.Int32,System.Int32)\">\n            <summary>\t\n            <p> Creates an object that encapsulates a bitmap and memory DC (device context) which can be used for rendering glyphs. </p>\t\n            </summary>\t\n            <param name=\"hdc\"><dd> <p>A handle to the optional device context used to create a compatible memory DC (device context).</p> </dd></param>\t\n            <param name=\"width\"><dd> <p>The width of the bitmap render target.</p> </dd></param>\t\n            <param name=\"height\"><dd> <p>The height of the bitmap render target.</p> </dd></param>\t\n            <returns><dd> <p>When this method returns, contains an address of a reference to the newly created <strong><see cref=\"T:SharpDX.DirectWrite.BitmapRenderTarget\"/></strong> object.</p> </dd></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteGdiInterop::CreateBitmapRenderTarget']/*\"/>\t\n            <msdn-id>dd371182</msdn-id>\t\n            <unmanaged>HRESULT IDWriteGdiInterop::CreateBitmapRenderTarget([In, Optional] HDC hdc,[In] unsigned int width,[In] unsigned int height,[Out] IDWriteBitmapRenderTarget** renderTarget)</unmanaged>\t\n            <unmanaged-short>IDWriteGdiInterop::CreateBitmapRenderTarget</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.GlyphRun\">\n            <summary>\t\n            <p>Contains the information needed by renderers to draw glyph runs.  All coordinates are in device independent pixels (DIPs). </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_GLYPH_RUN']/*\"/>\t\n            <msdn-id>dd368089</msdn-id>\t\n            <unmanaged>DWRITE_GLYPH_RUN</unmanaged>\t\n            <unmanaged-short>DWRITE_GLYPH_RUN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.GlyphRun.FontFacePointer\">\n            <summary>\t\n            <dd> <p>The physical font face object to draw with.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_GLYPH_RUN::fontFace']/*\"/>\t\n            <msdn-id>dd368089</msdn-id>\t\n            <unmanaged>IDWriteFontFace* fontFace</unmanaged>\t\n            <unmanaged-short>IDWriteFontFace fontFace</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.GlyphRun.FontSize\">\n            <summary>\t\n            <dd> <p>The logical size of the font in DIPs (equals 1/96 inch), not points.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_GLYPH_RUN::fontEmSize']/*\"/>\t\n            <msdn-id>dd368089</msdn-id>\t\n            <unmanaged>float fontEmSize</unmanaged>\t\n            <unmanaged-short>float fontEmSize</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.GlyphRun.GlyphCount\">\n            <summary>\t\n            <dd> <p>The number of glyphs in the glyph run.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_GLYPH_RUN::glyphCount']/*\"/>\t\n            <msdn-id>dd368089</msdn-id>\t\n            <unmanaged>unsigned int glyphCount</unmanaged>\t\n            <unmanaged-short>unsigned int glyphCount</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.GlyphRun.GlyphIndicesPointer\">\n            <summary>\t\n            <dd> <p>A reference to an array of indices to render for the glyph run.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_GLYPH_RUN::glyphIndices']/*\"/>\t\n            <msdn-id>dd368089</msdn-id>\t\n            <unmanaged>const unsigned short* glyphIndices</unmanaged>\t\n            <unmanaged-short>unsigned short glyphIndices</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.GlyphRun.GlyphAdvancesPointer\">\n            <summary>\t\n            <dd> <p>A reference to an array containing glyph advance widths for the glyph run.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_GLYPH_RUN::glyphAdvances']/*\"/>\t\n            <msdn-id>dd368089</msdn-id>\t\n            <unmanaged>const float* glyphAdvances</unmanaged>\t\n            <unmanaged-short>float glyphAdvances</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.GlyphRun.GlyphOffsetsPointer\">\n            <summary>\t\n            <dd> <p>A reference to an array containing glyph offsets for the glyph run.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_GLYPH_RUN::glyphOffsets']/*\"/>\t\n            <msdn-id>dd368089</msdn-id>\t\n            <unmanaged>const DWRITE_GLYPH_OFFSET* glyphOffsets</unmanaged>\t\n            <unmanaged-short>DWRITE_GLYPH_OFFSET glyphOffsets</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.GlyphRun.IsSideways\">\n            <summary>\t\n            <dd> <p>If true, specifies that glyphs are rotated 90 degrees to the left and vertical metrics are used. Vertical writing is achieved by specifying <strong>isSideways</strong> = true and rotating the entire run 90 degrees to the right via a rotate transform.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_GLYPH_RUN::isSideways']/*\"/>\t\n            <msdn-id>dd368089</msdn-id>\t\n            <unmanaged>BOOL isSideways</unmanaged>\t\n            <unmanaged-short>BOOL isSideways</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.GlyphRun.BidiLevel\">\n            <summary>\t\n            <dd> <p>The implicit resolved bidi level of the run. Odd levels indicate right-to-left languages like Hebrew and Arabic, while even levels indicate left-to-right languages like English and Japanese (when written horizontally). For right-to-left languages, the text origin is on the right, and text should be drawn to the left.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_GLYPH_RUN::bidiLevel']/*\"/>\t\n            <msdn-id>dd368089</msdn-id>\t\n            <unmanaged>unsigned int bidiLevel</unmanaged>\t\n            <unmanaged-short>unsigned int bidiLevel</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.DirectWrite.GlyphRun.FontFace\">\n            <summary>\n            Gets or sets the <see cref=\"P:SharpDX.DirectWrite.GlyphRun.FontFace\"/> associated with this GlypRun.\n            </summary>\n            <value>The font face.</value>\n        </member>\n        <member name=\"P:SharpDX.DirectWrite.GlyphRun.Indices\">\n            <summary>\n            An array of glyph indices. This array contains <see cref=\"F:SharpDX.DirectWrite.GlyphRun.GlyphCount\"/> elements.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.DirectWrite.GlyphRun.Advances\">\n            <summary>\n            An optional array of glyph advances. This array could be null or contains <see cref=\"F:SharpDX.DirectWrite.GlyphRun.GlyphCount\"/> elements.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.DirectWrite.GlyphRun.Offsets\">\n            <summary>\n            An optional array of glyph offsets. This array could be null or contains <see cref=\"F:SharpDX.DirectWrite.GlyphRun.GlyphCount\"/> elements.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.GlyphRunAnalysis\">\n            <summary>\t\n            <p> Contains low-level information used to render a glyph run.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The alpha texture can be a   bi-level alpha  texture or a ClearType alpha texture.  </p><p>A bi-level alpha texture contains one byte per pixel, therefore the size of the buffer for a bi-level texture will be the area of the texture bounds, in bytes. Each byte in a bi-level alpha texture created by <strong>CreateAlphaTexture</strong> is either set to DWRITE_ALPHA_MAX (that is, 255) or zero.</p><p>A ClearType alpha texture contains three bytes per pixel, therefore the size of the buffer for a ClearType alpha texture is three times the area of the texture bounds, in bytes.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteGlyphRunAnalysis']/*\"/>\t\n            <msdn-id>dd371188</msdn-id>\t\n            <unmanaged>IDWriteGlyphRunAnalysis</unmanaged>\t\n            <unmanaged-short>IDWriteGlyphRunAnalysis</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.GlyphRunAnalysis.#ctor(SharpDX.DirectWrite.Factory,SharpDX.DirectWrite.GlyphRun,System.Single,SharpDX.DirectWrite.RenderingMode,SharpDX.Direct2D1.MeasuringMode,System.Single,System.Single)\">\n            <summary>\n            Creates a glyph run analysis object, which encapsulates information used to render a glyph run.\n            </summary>\n            <param name=\"factory\">The factory.</param>\n            <param name=\"glyphRun\">A structure that contains the properties of the glyph run (font face, advances, and so on).</param>\n            <param name=\"pixelsPerDip\">Number of physical pixels per DIP (device independent pixel). For example, if rendering onto a 96 DPI bitmap then pixelsPerDip is 1. If rendering onto a 120 DPI bitmap then pixelsPerDip is 1.25.</param>\n            <param name=\"renderingMode\">A value that specifies the rendering mode, which must be one of the raster rendering modes (that is, not default and not outline).</param>\n            <param name=\"measuringMode\">Specifies the measuring mode to use with glyphs.</param>\n            <param name=\"baselineOriginX\">The horizontal position (X-coordinate) of the baseline origin, in DIPs.</param>\n            <param name=\"baselineOriginY\">Vertical position (Y-coordinate) of the baseline origin, in DIPs.</param>\n            <remarks>\n            The glyph run analysis object contains the results of analyzing the glyph run, including the positions of all the glyphs and references to all of the rasterized glyphs in the font cache.\n            </remarks>\n            <unmanaged>HRESULT IDWriteFactory::CreateGlyphRunAnalysis([In] const DWRITE_GLYPH_RUN* glyphRun,[None] float pixelsPerDip,[In, Optional] const DWRITE_MATRIX* transform,[None] DWRITE_RENDERING_MODE renderingMode,[None] DWRITE_MEASURING_MODE measuringMode,[None] float baselineOriginX,[None] float baselineOriginY,[Out] IDWriteGlyphRunAnalysis** glyphRunAnalysis)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.GlyphRunAnalysis.#ctor(SharpDX.DirectWrite.Factory,SharpDX.DirectWrite.GlyphRun,System.Single,System.Nullable{SharpDX.DirectWrite.Matrix},SharpDX.DirectWrite.RenderingMode,SharpDX.Direct2D1.MeasuringMode,System.Single,System.Single)\">\n            <summary>\n            Creates a glyph run analysis object, which encapsulates information used to render a glyph run.\n            </summary>\n            <param name=\"factory\">The factory.</param>\n            <param name=\"glyphRun\">A structure that contains the properties of the glyph run (font face, advances, and so on).</param>\n            <param name=\"pixelsPerDip\">Number of physical pixels per DIP (device independent pixel). For example, if rendering onto a 96 DPI bitmap then pixelsPerDip is 1. If rendering onto a 120 DPI bitmap then pixelsPerDip is 1.25.</param>\n            <param name=\"transform\">Optional transform applied to the glyphs and their positions. This transform is applied after the scaling specified the emSize and pixelsPerDip.</param>\n            <param name=\"renderingMode\">A value that specifies the rendering mode, which must be one of the raster rendering modes (that is, not default and not outline).</param>\n            <param name=\"measuringMode\">Specifies the measuring mode to use with glyphs.</param>\n            <param name=\"baselineOriginX\">The horizontal position (X-coordinate) of the baseline origin, in DIPs.</param>\n            <param name=\"baselineOriginY\">Vertical position (Y-coordinate) of the baseline origin, in DIPs.</param>\n            <remarks>\n            The glyph run analysis object contains the results of analyzing the glyph run, including the positions of all the glyphs and references to all of the rasterized glyphs in the font cache.\n            </remarks>\n            <unmanaged>HRESULT IDWriteFactory::CreateGlyphRunAnalysis([In] const DWRITE_GLYPH_RUN* glyphRun,[None] float pixelsPerDip,[In, Optional] const DWRITE_MATRIX* transform,[None] DWRITE_RENDERING_MODE renderingMode,[None] DWRITE_MEASURING_MODE measuringMode,[None] float baselineOriginX,[None] float baselineOriginY,[Out] IDWriteGlyphRunAnalysis** glyphRunAnalysis)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.GlyphRunAnalysis.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectWrite.GlyphRunAnalysis\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.GlyphRunAnalysis.op_Explicit(System.IntPtr)~SharpDX.DirectWrite.GlyphRunAnalysis\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.DirectWrite.GlyphRunAnalysis\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.GlyphRunAnalysis.GetAlphaTextureBounds(SharpDX.DirectWrite.TextureType)\">\n            <summary>\t\n            <p> Gets the bounding rectangle of the physical pixels affected by the glyph run. </p>\t\n            </summary>\t\n            <param name=\"textureType\"><dd> <p>Specifies the type of texture requested. If a bi-level texture is requested, the bounding rectangle includes only bi-level glyphs. Otherwise, the bounding rectangle includes only antialiased glyphs.</p> </dd></param>\t\n            <returns><dd> <p>When this method returns, contains the bounding rectangle of the physical pixels affected by the glyph run, or an empty rectangle if there are no glyphs of the specified texture type.</p> </dd></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteGlyphRunAnalysis::GetAlphaTextureBounds']/*\"/>\t\n            <msdn-id>dd371215</msdn-id>\t\n            <unmanaged>HRESULT IDWriteGlyphRunAnalysis::GetAlphaTextureBounds([In] DWRITE_TEXTURE_TYPE textureType,[Out] RECT* textureBounds)</unmanaged>\t\n            <unmanaged-short>IDWriteGlyphRunAnalysis::GetAlphaTextureBounds</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.GlyphRunAnalysis.CreateAlphaTexture(SharpDX.DirectWrite.TextureType,SharpDX.Rectangle,System.Byte[],System.Int32)\">\n            <summary>\t\n            <p> Creates an alpha texture of the specified type for glyphs within a specified bounding rectangle. </p>\t\n            </summary>\t\n            <param name=\"textureType\"><dd> <p>A value that specifies the type of texture requested. This can be <strong>DWRITE_TEXTURE_BILEVEL_1x1</strong> or <strong><see cref=\"F:SharpDX.DirectWrite.TextureType.Cleartype3x1\"/></strong>. If a bi-level texture is requested, the texture contains only bi-level glyphs. Otherwise, the texture contains only antialiased glyphs.</p> </dd></param>\t\n            <param name=\"textureBounds\"><dd> <p>The bounding rectangle of the texture, which can be different than the bounding rectangle returned by <strong>GetAlphaTextureBounds</strong>.</p> </dd></param>\t\n            <param name=\"alphaValues\"><dd> <p>When this method returns, contains  the array of alpha values from the texture. The buffer allocated for this array must be at least the size of <em>bufferSize</em>.</p> </dd></param>\t\n            <param name=\"bufferSize\"><dd> <p>The size of the <em>alphaValues</em> array, in bytes. The minimum size depends on the dimensions of the rectangle and the type of texture requested.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteGlyphRunAnalysis::CreateAlphaTexture']/*\"/>\t\n            <msdn-id>dd371189</msdn-id>\t\n            <unmanaged>HRESULT IDWriteGlyphRunAnalysis::CreateAlphaTexture([In] DWRITE_TEXTURE_TYPE textureType,[In] const RECT* textureBounds,[Out, Buffer] unsigned char* alphaValues,[In] unsigned int bufferSize)</unmanaged>\t\n            <unmanaged-short>IDWriteGlyphRunAnalysis::CreateAlphaTexture</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.GlyphRunAnalysis.GetAlphaBlendParams(SharpDX.DirectWrite.RenderingParams,System.Single@,System.Single@,System.Single@)\">\n            <summary>\t\n            <p> Gets alpha blending properties required for ClearType blending. </p>\t\n            </summary>\t\n            <param name=\"renderingParams\"><dd> <p>An object that specifies the ClearType level and enhanced contrast, gamma, pixel geometry, and rendering mode. In most cases, the values returned by the output parameters of this method are based on the properties of this object, unless a GDI-compatible rendering mode was specified.</p> </dd></param>\t\n            <param name=\"blendGamma\"><dd> <p>When this method returns, contains  the gamma value to use for gamma correction.</p> </dd></param>\t\n            <param name=\"blendEnhancedContrast\"><dd> <p>When this method returns, contains the enhanced contrast value to be used for blending.</p> </dd></param>\t\n            <param name=\"blendClearTypeLevel\"><dd> <p>When this method returns, contains  the ClearType level used in the alpha blending.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteGlyphRunAnalysis::GetAlphaBlendParams']/*\"/>\t\n            <msdn-id>dd371190</msdn-id>\t\n            <unmanaged>HRESULT IDWriteGlyphRunAnalysis::GetAlphaBlendParams([In] IDWriteRenderingParams* renderingParams,[Out] float* blendGamma,[Out] float* blendEnhancedContrast,[Out] float* blendClearTypeLevel)</unmanaged>\t\n            <unmanaged-short>IDWriteGlyphRunAnalysis::GetAlphaBlendParams</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.GlyphRunDescription\">\n            <summary>\t\n            <p>Contains additional properties related to those in <see cref=\"T:SharpDX.DirectWrite.GlyphRun\"/>.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_GLYPH_RUN_DESCRIPTION']/*\"/>\t\n            <msdn-id>dd368091</msdn-id>\t\n            <unmanaged>DWRITE_GLYPH_RUN_DESCRIPTION</unmanaged>\t\n            <unmanaged-short>DWRITE_GLYPH_RUN_DESCRIPTION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.GlyphRunDescription.LocaleName\">\n            <summary>\t\n            <dd> <p>An array of characters containing the locale name associated with this run.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_GLYPH_RUN_DESCRIPTION::localeName']/*\"/>\t\n            <msdn-id>dd368091</msdn-id>\t\n            <unmanaged>const wchar_t* localeName</unmanaged>\t\n            <unmanaged-short>wchar_t localeName</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.GlyphRunDescription.Text\">\n            <summary>\t\n            <dd> <p>An array of characters containing the text associated with the glyphs.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_GLYPH_RUN_DESCRIPTION::string']/*\"/>\t\n            <msdn-id>dd368091</msdn-id>\t\n            <unmanaged>const wchar_t* string</unmanaged>\t\n            <unmanaged-short>wchar_t string</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.GlyphRunDescription.TextLength\">\n            <summary>\t\n            <dd> <p>The number of characters in UTF16 code-units. Note that this may be different than the number of glyphs.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_GLYPH_RUN_DESCRIPTION::stringLength']/*\"/>\t\n            <msdn-id>dd368091</msdn-id>\t\n            <unmanaged>unsigned int stringLength</unmanaged>\t\n            <unmanaged-short>unsigned int stringLength</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.GlyphRunDescription.ClusterMap\">\n            <summary>\t\n            <dd> <p>An array of indices to the glyph indices array, of the first glyphs of all the glyph clusters of the glyphs to render.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_GLYPH_RUN_DESCRIPTION::clusterMap']/*\"/>\t\n            <msdn-id>dd368091</msdn-id>\t\n            <unmanaged>const unsigned short* clusterMap</unmanaged>\t\n            <unmanaged-short>unsigned short clusterMap</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.GlyphRunDescription.TextPosition\">\n            <summary>\t\n            <dd> <p>Corresponding text position in the string this glyph run came from.  This is relative to the beginning of the string represented by the <see cref=\"T:SharpDX.DirectWrite.TextLayout\"/> object.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_GLYPH_RUN_DESCRIPTION::textPosition']/*\"/>\t\n            <msdn-id>dd368091</msdn-id>\t\n            <unmanaged>unsigned int textPosition</unmanaged>\t\n            <unmanaged-short>unsigned int textPosition</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.GlyphRunItem\">\n            <summary>\n            A <see cref=\"T:SharpDX.DirectWrite.GlyphRunItem\"/> Item.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.GlyphRunItem.Index\">\n            <summary>\n            A glyph index\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.GlyphRunItem.Advance\">\n            <summary>\n            A glyph advance\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.GlyphRunItem.Offset\">\n            <summary>\n            A glyph offset\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.InlineObjectShadow\">\n            <summary>\n            Internal InlineObject Callback\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.InlineObjectShadow.ToIntPtr(SharpDX.DirectWrite.InlineObject)\">\n            <summary>\n            Return a pointer to the unamanged version of this callback.\n            </summary>\n            <param name=\"callback\">The callback.</param>\n            <returns>A pointer to a shadow c++ callback</returns>\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.InlineObjectShadow.InlineObjectVtbl.DrawDelegate\">\n            <unmanaged>HRESULT IDWriteInlineObject::Draw([None] void* clientDrawingContext,[None] IDWriteTextRenderer* renderer,[None] float originX,[None] float originY,[None] BOOL isSideways,[None] BOOL isRightToLeft,[None] IUnknown* clientDrawingEffect)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.InlineObjectShadow.InlineObjectVtbl.GetMetricsDelegate\">\n            <unmanaged>HRESULT IDWriteInlineObject::GetMetrics([Out] DWRITE_INLINE_OBJECT_METRICS* metrics)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.InlineObjectShadow.InlineObjectVtbl.GetOverhangMetricsDelegate\">\n            <unmanaged>HRESULT IDWriteInlineObject::GetOverhangMetrics([Out] DWRITE_OVERHANG_METRICS* overhangs)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.InlineObjectShadow.InlineObjectVtbl.GetBreakConditionsDelegate\">\n            <unmanaged>HRESULT IDWriteInlineObject::GetBreakConditions([Out] DWRITE_BREAK_CONDITION* breakConditionBefore,[Out] DWRITE_BREAK_CONDITION* breakConditionAfter)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.LineBreakpoint\">\n            <summary>\t\n            <p>Line breakpoint characteristics of a character.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_LINE_BREAKPOINT']/*\"/>\t\n            <msdn-id>dd368098</msdn-id>\t\n            <unmanaged>DWRITE_LINE_BREAKPOINT</unmanaged>\t\n            <unmanaged-short>DWRITE_LINE_BREAKPOINT</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.DirectWrite.LineBreakpoint.BreakConditionBefore\">\n            <summary>\t\n            Indicates a breaking condition before the character. \t\n            </summary>\t\n            <unmanaged>byte breakConditionBefore</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectWrite.LineBreakpoint.BreakConditionAfter\">\n            <summary>\t\n            Indicates a breaking condition after the character. \t\n            </summary>\t\n            <unmanaged>byte breakConditionAfter</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectWrite.LineBreakpoint.BreakConditionBefore_\">\n            <summary>\t\n            <dd> <p>Indicates a breaking condition before the character.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_LINE_BREAKPOINT::breakConditionBefore']/*\"/>\t\n            <msdn-id>dd368098</msdn-id>\t\n            <unmanaged>unsigned char breakConditionBefore</unmanaged>\t\n            <unmanaged-short>unsigned char breakConditionBefore</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.DirectWrite.LineBreakpoint.BreakConditionAfter_\">\n            <summary>\t\n            <dd> <p>Indicates a breaking condition after the character.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_LINE_BREAKPOINT::breakConditionAfter']/*\"/>\t\n            <msdn-id>dd368098</msdn-id>\t\n            <unmanaged>unsigned char breakConditionAfter</unmanaged>\t\n            <unmanaged-short>unsigned char breakConditionAfter</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.DirectWrite.LineBreakpoint.IsWhitespace\">\n            <summary>\t\n            <dd> <p>Indicates that the character is some form of whitespace, which may be meaningful for justification.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_LINE_BREAKPOINT::isWhitespace']/*\"/>\t\n            <msdn-id>dd368098</msdn-id>\t\n            <unmanaged>unsigned char isWhitespace</unmanaged>\t\n            <unmanaged-short>unsigned char isWhitespace</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.DirectWrite.LineBreakpoint.IsSoftHyphen\">\n            <summary>\t\n            <dd> <p>Indicates that the character is a soft hyphen, often used to indicate hyphenation points inside words.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_LINE_BREAKPOINT::isSoftHyphen']/*\"/>\t\n            <msdn-id>dd368098</msdn-id>\t\n            <unmanaged>unsigned char isSoftHyphen</unmanaged>\t\n            <unmanaged-short>unsigned char isSoftHyphen</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.DirectWrite.LineBreakpoint.Padding\">\n            <summary>\t\n            <dd> <p>Reserved for future use.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_LINE_BREAKPOINT::padding']/*\"/>\t\n            <msdn-id>dd368098</msdn-id>\t\n            <unmanaged>unsigned char padding</unmanaged>\t\n            <unmanaged-short>unsigned char padding</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.LocalizedStrings\">\n            <summary>\t\n            <p> Represents a collection of strings indexed by locale name.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The set of strings represented by an <strong><see cref=\"T:SharpDX.DirectWrite.LocalizedStrings\"/></strong> are indexed by a zero based <em>UINT32</em> number that maps to a locale.  The numeric index for a specific locale is retreived by using the <strong>FindLocaleName</strong> method.</p><p>A common use for the <strong><see cref=\"T:SharpDX.DirectWrite.LocalizedStrings\"/></strong> interface is to hold a list of localized font family names created by using the <strong><see cref=\"M:SharpDX.DirectWrite.FontFamily.GetFamilyNames(SharpDX.DirectWrite.LocalizedStrings@)\"/></strong> method.  The following example shows how to get the family name for the \"en-us\" locale.</p><pre><code><see cref=\"T:SharpDX.DirectWrite.LocalizedStrings\"/>* pFamilyNames = <c>null</c>; // Get a list of localized strings for the family name.\t\n            if (SUCCEEDED(hr))\t\n            { hr = pFontFamily-&gt;GetFamilyNames(&amp;pFamilyNames);\t\n            } UINT32 index = 0;\t\n            <see cref=\"T:SharpDX.Bool\"/> exists = false; wchar_t localeName[LOCALE_NAME_MAX_LENGTH]; if (SUCCEEDED(hr))\t\n            { // Get the default locale for this user. int defaultLocaleSuccess = GetUserDefaultLocaleName(localeName, LOCALE_NAME_MAX_LENGTH); // If the default locale is returned, find that locale name, otherwise use \"en-us\". if (defaultLocaleSuccess) { hr = pFamilyNames-&gt;FindLocaleName(localeName, &amp;index, &amp;exists); } if (SUCCEEDED(hr) &amp;&amp; !exists) // if the above find did not find a match, retry with US English { hr = pFamilyNames-&gt;FindLocaleName(L\"en-us\", &amp;index, &amp;exists); }\t\n            } // If the specified locale doesn't exist, select the first on the list.\t\n            if (!exists) index = 0; UINT32 length = 0; // Get the string length.\t\n            if (SUCCEEDED(hr))\t\n            { hr = pFamilyNames-&gt;GetStringLength(index, &amp;length);\t\n            } // Allocate a string big enough to hold the name.\t\n            wchar_t* name = new (std::nothrow) wchar_t[length+1];\t\n            if (name == <c>null</c>)\t\n            { hr = E_OUTOFMEMORY;\t\n            } // Get the family name.\t\n            if (SUCCEEDED(hr))\t\n            { hr = pFamilyNames-&gt;GetString(index, name, length+1);\t\n            }\t\n            </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteLocalizedStrings']/*\"/>\t\n            <msdn-id>dd371250</msdn-id>\t\n            <unmanaged>IDWriteLocalizedStrings</unmanaged>\t\n            <unmanaged-short>IDWriteLocalizedStrings</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.LocalizedStrings.GetLocaleName(System.Int32)\">\n            <summary>\t\n            Get the locale name from the language.\t\n            </summary>\t\n            <param name=\"index\">Zero-based index of the locale name to be retrieved. </param>\n            <returns>The locale name from the language </returns>\n            <unmanaged>HRESULT IDWriteLocalizedStrings::GetLocaleName([None] int index,[Out, Buffer] wchar_t* localeName,[None] int size)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.LocalizedStrings.GetString(System.Int32)\">\n            <summary>\t\n            Get the string from the language/string pair.\n            </summary>\t\n            <param name=\"index\">Zero-based index of the string from the language/string pair to be retrieved. </param>\n            <returns>The locale name from the language </returns>\n            <unmanaged>HRESULT IDWriteLocalizedStrings::GetLocaleName([None] int index,[Out, Buffer] wchar_t* localeName,[None] int size)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.LocalizedStrings.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectWrite.LocalizedStrings\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.LocalizedStrings.op_Explicit(System.IntPtr)~SharpDX.DirectWrite.LocalizedStrings\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.DirectWrite.LocalizedStrings\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.LocalizedStrings.GetCount\">\n            <summary>\t\n            <p> Gets the number of language/string pairs. </p>\t\n            </summary>\t\n            <returns><p>The number of language/string pairs.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteLocalizedStrings::GetCount']/*\"/>\t\n            <msdn-id>dd371256</msdn-id>\t\n            <unmanaged>unsigned int IDWriteLocalizedStrings::GetCount()</unmanaged>\t\n            <unmanaged-short>IDWriteLocalizedStrings::GetCount</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.LocalizedStrings.FindLocaleName(System.String,System.Int32@)\">\n            <summary>\t\n            <p> Gets the zero-based index of the locale name/string pair with the specified locale name. </p>\t\n            </summary>\t\n            <param name=\"localeName\"><dd> <p>A null-terminated array of characters containing the locale name to look for.</p> </dd></param>\t\n            <param name=\"index\"><dd> <p>The zero-based index of the locale name/string pair. This method initializes <em>index</em> to <strong>UINT_MAX</strong>.</p> </dd></param>\t\n            <returns><dd> <p>When this method returns, contains <strong>TRUE</strong> if the locale name exists; otherwise, <strong><see cref=\"F:SharpDX.Result.False\"/></strong>. This method initializes <em>exists</em> to <strong><see cref=\"F:SharpDX.Result.False\"/></strong>.</p> </dd></returns>\t\n            <remarks>\t\n            <p>Note that if the locale name does not exist, the return value is a success and the <em>exists</em> parameter is <strong><see cref=\"F:SharpDX.Result.False\"/></strong>. If you are getting the font family name for a font and the specified locale name does not exist, one option is to set the index to 0 as shown below.  There is always at least one locale for a font family.</p><pre><code>UINT32 index = 0;\t\n            <see cref=\"T:SharpDX.Bool\"/> exists = false; wchar_t localeName[LOCALE_NAME_MAX_LENGTH]; if (SUCCEEDED(hr))\t\n            { // Get the default locale for this user. int defaultLocaleSuccess = GetUserDefaultLocaleName(localeName, LOCALE_NAME_MAX_LENGTH); // If the default locale is returned, find that locale name, otherwise use \"en-us\". if (defaultLocaleSuccess) { hr = pFamilyNames-&gt;FindLocaleName(localeName, &amp;index, &amp;exists); } if (SUCCEEDED(hr) &amp;&amp; !exists) // if the above find did not find a match, retry with US English { hr = pFamilyNames-&gt;FindLocaleName(L\"en-us\", &amp;index, &amp;exists); }\t\n            } // If the specified locale doesn't exist, select the first on the list.\t\n            if (!exists) index = 0;\t\n            </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteLocalizedStrings::FindLocaleName']/*\"/>\t\n            <msdn-id>dd371254</msdn-id>\t\n            <unmanaged>HRESULT IDWriteLocalizedStrings::FindLocaleName([In, Buffer] const wchar_t* localeName,[Out] unsigned int* index,[Out] BOOL* exists)</unmanaged>\t\n            <unmanaged-short>IDWriteLocalizedStrings::FindLocaleName</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.LocalizedStrings.GetLocaleNameLength(System.Int32,System.Int32@)\">\n            <summary>\t\n            <p> Gets the length in characters (not including the null terminator) of the locale name with the specified index. </p>\t\n            </summary>\t\n            <param name=\"index\"><dd> <p>Zero-based index of the locale name to be retrieved.</p> </dd></param>\t\n            <param name=\"length\"><dd> <p>When this method returns, contains the length in characters of the locale name, not including the null terminator.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteLocalizedStrings::GetLocaleNameLength']/*\"/>\t\n            <msdn-id>dd371262</msdn-id>\t\n            <unmanaged>HRESULT IDWriteLocalizedStrings::GetLocaleNameLength([In] unsigned int index,[Out] unsigned int* length)</unmanaged>\t\n            <unmanaged-short>IDWriteLocalizedStrings::GetLocaleNameLength</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.LocalizedStrings.GetLocaleName(System.Int32,System.IntPtr,System.Int32)\">\n            <summary>\t\n            <p> Copies the locale name with the specified index to the specified array. </p>\t\n            </summary>\t\n            <param name=\"index\"><dd> <p>Zero-based index of the locale name to be retrieved.</p> </dd></param>\t\n            <param name=\"localeName\"><dd> <p>When this method returns, contains a character array, which is null-terminated, that receives the locale name from the language/string pair.  The buffer allocated for this array must be at least the size of <em>size</em>, in element count.</p> </dd></param>\t\n            <param name=\"size\"><dd> <p>The size of the array in characters. The size must include space for the terminating null character.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteLocalizedStrings::GetLocaleName']/*\"/>\t\n            <msdn-id>dd371259</msdn-id>\t\n            <unmanaged>HRESULT IDWriteLocalizedStrings::GetLocaleName([In] unsigned int index,[Out, Buffer] wchar_t* localeName,[In] unsigned int size)</unmanaged>\t\n            <unmanaged-short>IDWriteLocalizedStrings::GetLocaleName</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.LocalizedStrings.GetStringLength(System.Int32,System.Int32@)\">\n            <summary>\t\n            <p> Gets the length in characters (not including the null terminator) of the string with the specified index. </p>\t\n            </summary>\t\n            <param name=\"index\"><dd> <p>A zero-based index of the language/string pair.</p> </dd></param>\t\n            <param name=\"length\"><dd> <p>The length in characters of the string, not including the null terminator, from the language/string pair.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>Use <strong>GetStringLength</strong> to get the string length before calling the <strong><see cref=\"M:SharpDX.DirectWrite.LocalizedStrings.GetString(System.Int32)\"/></strong> method, as shown in the following code.</p><pre><code>UINT32 length = 0; // Get the string length.\t\n            if (SUCCEEDED(hr))\t\n            { hr = pFamilyNames-&gt;GetStringLength(index, &amp;length);\t\n            } // Allocate a string big enough to hold the name.\t\n            wchar_t* name = new (std::nothrow) wchar_t[length+1];\t\n            if (name == <c>null</c>)\t\n            { hr = E_OUTOFMEMORY;\t\n            } // Get the family name.\t\n            if (SUCCEEDED(hr))\t\n            { hr = pFamilyNames-&gt;GetString(index, name, length+1);\t\n            }\t\n            </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteLocalizedStrings::GetStringLength']/*\"/>\t\n            <msdn-id>dd371269</msdn-id>\t\n            <unmanaged>HRESULT IDWriteLocalizedStrings::GetStringLength([In] unsigned int index,[Out] unsigned int* length)</unmanaged>\t\n            <unmanaged-short>IDWriteLocalizedStrings::GetStringLength</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.LocalizedStrings.GetString(System.Int32,System.IntPtr,System.Int32)\">\n            <summary>\t\n            <p> Copies the string with the specified index to the specified array. </p>\t\n            </summary>\t\n            <param name=\"index\"><dd> <p>The zero-based index of the language/string pair to be examined.</p> </dd></param>\t\n            <param name=\"stringBuffer\"><dd> <p>The null terminated array of characters that receives the string from the language/string pair.  The buffer allocated for this array should be at least the size of <em>size</em>. <strong>GetStringLength</strong> can be used to get the size of the array before using this method.</p> </dd></param>\t\n            <param name=\"size\"><dd> <p>The size of the array in characters. The size must include space for the terminating null character. <strong>GetStringLength</strong> can be used to get the size of the array before using this method.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>The string returned must be allocated by the caller.  You can get the size of the string by using the <strong>GetStringLength</strong> method prior to calling <strong>GetString</strong>, as shown in the following example.</p><pre><code>UINT32 length = 0; // Get the string length.\t\n            if (SUCCEEDED(hr))\t\n            { hr = pFamilyNames-&gt;GetStringLength(index, &amp;length);\t\n            } // Allocate a string big enough to hold the name.\t\n            wchar_t* name = new (std::nothrow) wchar_t[length+1];\t\n            if (name == <c>null</c>)\t\n            { hr = E_OUTOFMEMORY;\t\n            } // Get the family name.\t\n            if (SUCCEEDED(hr))\t\n            { hr = pFamilyNames-&gt;GetString(index, name, length+1);\t\n            }\t\n            </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteLocalizedStrings::GetString']/*\"/>\t\n            <msdn-id>dd371267</msdn-id>\t\n            <unmanaged>HRESULT IDWriteLocalizedStrings::GetString([In] unsigned int index,[Out, Buffer] wchar_t* stringBuffer,[In] unsigned int size)</unmanaged>\t\n            <unmanaged-short>IDWriteLocalizedStrings::GetString</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.DirectWrite.LocalizedStrings.Count\">\n            <summary>\t\n            <p> Gets the number of language/string pairs. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteLocalizedStrings::GetCount']/*\"/>\t\n            <msdn-id>dd371256</msdn-id>\t\n            <unmanaged>GetCount</unmanaged>\t\n            <unmanaged-short>GetCount</unmanaged-short>\t\n            <unmanaged>unsigned int IDWriteLocalizedStrings::GetCount()</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.NumberSubstitution\">\n            <summary>\t\n            <p>Holds the appropriate digits and numeric punctuation for a specified locale.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteNumberSubstitution']/*\"/>\t\n            <msdn-id>dd371271</msdn-id>\t\n            <unmanaged>IDWriteNumberSubstitution</unmanaged>\t\n            <unmanaged-short>IDWriteNumberSubstitution</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.NumberSubstitution.#ctor(SharpDX.DirectWrite.Factory,SharpDX.DirectWrite.NumberSubstitutionMethod,System.String,System.Boolean)\">\n            <summary>\t\n            Creates a number substitution object using a locale name, substitution method, and an indicator  whether to ignore user overrides (use NLS defaults for the given culture instead). \t\n            </summary>\t\n            <param name=\"factory\">A reference to a DirectWrite factory <see cref=\"T:SharpDX.DirectWrite.Factory\"/></param>\n            <param name=\"substitutionMethod\">A value that specifies how to apply number substitution on digits and related punctuation. </param>\n            <param name=\"localeName\">The name of the locale to be used in the numberSubstitution object. </param>\n            <param name=\"ignoreUserOverride\">A Boolean flag that indicates whether to ignore user overrides. </param>\n            <unmanaged>HRESULT IDWriteFactory::CreateNumberSubstitution([In] DWRITE_NUMBER_SUBSTITUTION_METHOD substitutionMethod,[In] const wchar_t* localeName,[In] BOOL ignoreUserOverride,[Out] IDWriteNumberSubstitution** numberSubstitution)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.NumberSubstitution.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectWrite.NumberSubstitution\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.NumberSubstitution.op_Explicit(System.IntPtr)~SharpDX.DirectWrite.NumberSubstitution\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.DirectWrite.NumberSubstitution\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.PixelSnapping\">\n            <summary>\t\n            <p>Defines the pixel snapping properties such as pixels per DIP(device-independent pixel) and the current transform matrix of a text renderer.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWritePixelSnapping']/*\"/>\t\n            <msdn-id>dd371274</msdn-id>\t\n            <unmanaged>IDWritePixelSnapping</unmanaged>\t\n            <unmanaged-short>IDWritePixelSnapping</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.PixelSnapping.IsPixelSnappingDisabled(System.Object)\">\n            <summary>\n            Determines whether pixel snapping is disabled. The recommended default is FALSE,\n            unless doing animation that requires subpixel vertical placement.\n            </summary>\n            <param name=\"clientDrawingContext\">The context passed to IDWriteTextLayout::Draw.</param>\n            <returns>Receives TRUE if pixel snapping is disabled or FALSE if it not. </returns>\n            <unmanaged>HRESULT IsPixelSnappingDisabled([None] void* clientDrawingContext,[Out] BOOL* isDisabled)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.PixelSnapping.GetCurrentTransform(System.Object)\">\n            <summary>\t\n             Gets a transform that maps abstract coordinates to DIPs. \t\n            </summary>\t\n            <param name=\"clientDrawingContext\">The drawing context passed to <see cref=\"M:SharpDX.DirectWrite.TextLayout.Draw_(System.IntPtr,System.IntPtr,System.Single,System.Single)\"/>.</param>\n            <returns>a structure which has transform information for  pixel snapping.</returns>\n            <unmanaged>HRESULT GetCurrentTransform([None] void* clientDrawingContext,[Out] DWRITE_MATRIX* transform)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.PixelSnapping.GetPixelsPerDip(System.Object)\">\n            <summary>\t\n             Gets the number of physical pixels per DIP. \t\n            </summary>\t\n            <remarks>\t\n             Because a DIP (device-independent pixel) is 1/96 inch,  the pixelsPerDip value is the number of logical pixels per inch divided by 96.\t\n            </remarks>\t\n            <param name=\"clientDrawingContext\">The drawing context passed to <see cref=\"M:SharpDX.DirectWrite.TextLayout.Draw_(System.IntPtr,System.IntPtr,System.Single,System.Single)\"/>.</param>\n            <returns>the number of physical pixels per DIP</returns>\n            <unmanaged>HRESULT GetPixelsPerDip([None] void* clientDrawingContext,[Out] FLOAT* pixelsPerDip)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.PixelSnappingShadow\">\n            <summary>\n            Internal TessellationSink Callback\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.PixelSnappingShadow.PixelSnappingVtbl.IsPixelSnappingDisabledDelegate\">\n            <summary>\n            Determines whether pixel snapping is disabled. The recommended default is FALSE,\n            unless doing animation that requires subpixel vertical placement.\n            </summary>\n            <param name=\"thisPtr\">This pointer</param>\n            <param name=\"clientDrawingContext\">The context passed to IDWriteTextLayout::Draw.</param>\n            <param name=\"isDisabled\">Output disabled</param>\n            <returns>Receives TRUE if pixel snapping is disabled or FALSE if it not. </returns>\n            <unmanaged>HRESULT IsPixelSnappingDisabled([None] void* clientDrawingContext,[Out] BOOL* isDisabled)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.PixelSnappingShadow.PixelSnappingVtbl.GetCurrentTransformDelegate\">\n            <summary>\t\n             Gets a transform that maps abstract coordinates to DIPs. \t\n            </summary>\n            <param name=\"thisPtr\">This pointer</param>\n            <param name=\"clientDrawingContext\">The drawing context passed to <see cref=\"M:SharpDX.DirectWrite.TextLayout.Draw_(System.IntPtr,System.IntPtr,System.Single,System.Single)\"/>.</param>\n            <param name=\"transform\">Matrix transform</param>\n            <returns>a structure which has transform information for  pixel snapping.</returns>\n            <unmanaged>HRESULT GetCurrentTransform([None] void* clientDrawingContext,[Out] DWRITE_MATRIX* transform)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.PixelSnappingShadow.PixelSnappingVtbl.GetPixelsPerDipDelegate\">\n            <summary>\t\n             Gets the number of physical pixels per DIP. \t\n            </summary>\t\n            <remarks>\t\n             Because a DIP (device-independent pixel) is 1/96 inch,  the pixelsPerDip value is the number of logical pixels per inch divided by 96.\t\n            </remarks>\n            <param name=\"thisPtr\">This pointer</param>\n            <param name=\"clientDrawingContext\">The drawing context passed to <see cref=\"M:SharpDX.DirectWrite.TextLayout.Draw_(System.IntPtr,System.IntPtr,System.Single,System.Single)\"/>.</param>\n            <param name=\"pixelPerDip\">Dip</param>\n            <returns>the number of physical pixels per DIP</returns>\n            <unmanaged>HRESULT GetPixelsPerDip([None] void* clientDrawingContext,[Out] FLOAT* pixelsPerDip)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.RenderingParams\">\n            <summary>\t\n            <p> Represents text rendering settings such as ClearType level, enhanced contrast, and gamma correction for glyph rasterization and filtering.</p><p>An application typically obtains a rendering parameters object by calling the <strong><see cref=\"M:SharpDX.DirectWrite.Factory.CreateMonitorRenderingParams(System.IntPtr,SharpDX.DirectWrite.RenderingParams)\"/></strong> method.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteRenderingParams']/*\"/>\t\n            <msdn-id>dd371285</msdn-id>\t\n            <unmanaged>IDWriteRenderingParams</unmanaged>\t\n            <unmanaged-short>IDWriteRenderingParams</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.RenderingParams.#ctor(SharpDX.DirectWrite.Factory)\">\n            <summary>\t\n            Creates a rendering parameters object with default settings for the primary monitor. Different monitors may have different rendering parameters, for more information see the {{How to Add Support for Multiple Monitors}} topic.\t\n            </summary>\t\n            <param name=\"factory\">A reference to a DirectWrite factory <see cref=\"T:SharpDX.DirectWrite.Factory\"/></param>\n            <unmanaged>HRESULT IDWriteFactory::CreateRenderingParams([Out] IDWriteRenderingParams** renderingParams)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.RenderingParams.#ctor(SharpDX.DirectWrite.Factory,System.IntPtr)\">\n            <summary>\t\n            Creates a rendering parameters object with default settings for the specified monitor. In most cases, this is the preferred way to create a rendering parameters object.\t\n            </summary>\t\n            <param name=\"factory\">A reference to a DirectWrite factory <see cref=\"T:SharpDX.DirectWrite.Factory\"/></param>\n            <param name=\"monitorHandle\">A handle for the specified monitor. </param>\n            <unmanaged>HRESULT IDWriteFactory::CreateMonitorRenderingParams([None] void* monitor,[Out] IDWriteRenderingParams** renderingParams)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.RenderingParams.#ctor(SharpDX.DirectWrite.Factory,System.Single,System.Single,System.Single,SharpDX.DirectWrite.PixelGeometry,SharpDX.DirectWrite.RenderingMode)\">\n            <summary>\t\n            Creates a rendering parameters object with the specified properties. \t\n            </summary>\t\n            <param name=\"factory\">A reference to a DirectWrite factory <see cref=\"T:SharpDX.DirectWrite.Factory\"/></param>\n            <param name=\"gamma\">The gamma level to be set for the new rendering parameters object. </param>\n            <param name=\"enhancedContrast\">The enhanced contrast level to be set for the new rendering parameters object. </param>\n            <param name=\"clearTypeLevel\">The ClearType level to be set for the new rendering parameters object. </param>\n            <param name=\"pixelGeometry\">Represents the internal structure of a device pixel (that is, the physical arrangement of red, green, and blue color components) that is assumed for purposes of rendering text. </param>\n            <param name=\"renderingMode\">A value that represents the method (for example, ClearType natural quality) for rendering glyphs. </param>\n            <unmanaged>HRESULT IDWriteFactory::CreateCustomRenderingParams([None] float gamma,[None] float enhancedContrast,[None] float clearTypeLevel,[None] DWRITE_PIXEL_GEOMETRY pixelGeometry,[None] DWRITE_RENDERING_MODE renderingMode,[Out] IDWriteRenderingParams** renderingParams)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.RenderingParams.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectWrite.RenderingParams\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.RenderingParams.op_Explicit(System.IntPtr)~SharpDX.DirectWrite.RenderingParams\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.DirectWrite.RenderingParams\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.RenderingParams.GetGamma\">\n            <summary>\t\n            <p>Gets the gamma value used for gamma correction. Valid values must be greater than zero and cannot exceed 256.</p>\t\n            </summary>\t\n            <returns><p>Returns the gamma value used for gamma correction. Valid values must be greater than zero and cannot exceed 256.</p></returns>\t\n            <remarks>\t\n            <p>The gamma value is used for gamma correction, which compensates for the non-linear luminosity response of most monitors.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteRenderingParams::GetGamma']/*\"/>\t\n            <msdn-id>dd371295</msdn-id>\t\n            <unmanaged>float IDWriteRenderingParams::GetGamma()</unmanaged>\t\n            <unmanaged-short>IDWriteRenderingParams::GetGamma</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.RenderingParams.GetEnhancedContrast\">\n            <summary>\t\n            <p>Gets the enhanced contrast property of the rendering parameters object. Valid values are greater than or equal to zero.</p>\t\n            </summary>\t\n            <returns><p>Returns the amount of contrast enhancement. Valid values are greater than or equal to zero.</p></returns>\t\n            <remarks>\t\n            <p>Enhanced contrast is the amount to increase the darkness of text, and typically ranges from 0 to 1. Zero means no contrast enhancement.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteRenderingParams::GetEnhancedContrast']/*\"/>\t\n            <msdn-id>dd371290</msdn-id>\t\n            <unmanaged>float IDWriteRenderingParams::GetEnhancedContrast()</unmanaged>\t\n            <unmanaged-short>IDWriteRenderingParams::GetEnhancedContrast</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.RenderingParams.GetClearTypeLevel\">\n            <summary>\t\n            <p>Gets the ClearType level of the rendering parameters object. </p>\t\n            </summary>\t\n            <returns><p>The ClearType level of the rendering parameters object.</p></returns>\t\n            <remarks>\t\n            <p>The ClearType level represents the amount of ClearType ? that is, the degree to which the red, green, and blue subpixels of each pixel are treated differently. Valid values range from zero (meaning no ClearType, which is equivalent to grayscale anti-aliasing) to one (meaning full ClearType)</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteRenderingParams::GetClearTypeLevel']/*\"/>\t\n            <msdn-id>dd371288</msdn-id>\t\n            <unmanaged>float IDWriteRenderingParams::GetClearTypeLevel()</unmanaged>\t\n            <unmanaged-short>IDWriteRenderingParams::GetClearTypeLevel</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.RenderingParams.GetPixelGeometry\">\n            <summary>\t\n            <p>Gets the pixel geometry of the rendering parameters object.</p>\t\n            </summary>\t\n            <returns><p> A value that indicates the type of  pixel geometry used in the rendering parameters object.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteRenderingParams::GetPixelGeometry']/*\"/>\t\n            <msdn-id>dd371297</msdn-id>\t\n            <unmanaged>DWRITE_PIXEL_GEOMETRY IDWriteRenderingParams::GetPixelGeometry()</unmanaged>\t\n            <unmanaged-short>IDWriteRenderingParams::GetPixelGeometry</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.RenderingParams.GetRenderingMode\">\n            <summary>\t\n            <p>Gets the rendering mode of the rendering parameters object.</p>\t\n            </summary>\t\n            <returns><p>A value that indicates the rendering mode of the rendering parameters object.</p></returns>\t\n            <remarks>\t\n            <p>By default, the rendering mode is initialized to <see cref=\"F:SharpDX.DirectWrite.RenderingMode.Default\"/>, which means the rendering mode is determined automatically based on the font and size. To determine the recommended rendering mode to use for a given font and size and rendering parameters object, use the <strong><see cref=\"M:SharpDX.DirectWrite.FontFace.GetRecommendedRenderingMode(System.Single,System.Single,SharpDX.Direct2D1.MeasuringMode,SharpDX.DirectWrite.RenderingParams)\"/></strong> method.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteRenderingParams::GetRenderingMode']/*\"/>\t\n            <msdn-id>dd371300</msdn-id>\t\n            <unmanaged>DWRITE_RENDERING_MODE IDWriteRenderingParams::GetRenderingMode()</unmanaged>\t\n            <unmanaged-short>IDWriteRenderingParams::GetRenderingMode</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.DirectWrite.RenderingParams.Gamma\">\n            <summary>\t\n            <p>Gets the gamma value used for gamma correction. Valid values must be greater than zero and cannot exceed 256.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The gamma value is used for gamma correction, which compensates for the non-linear luminosity response of most monitors.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteRenderingParams::GetGamma']/*\"/>\t\n            <msdn-id>dd371295</msdn-id>\t\n            <unmanaged>GetGamma</unmanaged>\t\n            <unmanaged-short>GetGamma</unmanaged-short>\t\n            <unmanaged>float IDWriteRenderingParams::GetGamma()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectWrite.RenderingParams.EnhancedContrast\">\n            <summary>\t\n            <p>Gets the enhanced contrast property of the rendering parameters object. Valid values are greater than or equal to zero.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Enhanced contrast is the amount to increase the darkness of text, and typically ranges from 0 to 1. Zero means no contrast enhancement.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteRenderingParams::GetEnhancedContrast']/*\"/>\t\n            <msdn-id>dd371290</msdn-id>\t\n            <unmanaged>GetEnhancedContrast</unmanaged>\t\n            <unmanaged-short>GetEnhancedContrast</unmanaged-short>\t\n            <unmanaged>float IDWriteRenderingParams::GetEnhancedContrast()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectWrite.RenderingParams.ClearTypeLevel\">\n            <summary>\t\n            <p>Gets the ClearType level of the rendering parameters object. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The ClearType level represents the amount of ClearType ? that is, the degree to which the red, green, and blue subpixels of each pixel are treated differently. Valid values range from zero (meaning no ClearType, which is equivalent to grayscale anti-aliasing) to one (meaning full ClearType)</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteRenderingParams::GetClearTypeLevel']/*\"/>\t\n            <msdn-id>dd371288</msdn-id>\t\n            <unmanaged>GetClearTypeLevel</unmanaged>\t\n            <unmanaged-short>GetClearTypeLevel</unmanaged-short>\t\n            <unmanaged>float IDWriteRenderingParams::GetClearTypeLevel()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectWrite.RenderingParams.PixelGeometry\">\n            <summary>\t\n            <p>Gets the pixel geometry of the rendering parameters object.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteRenderingParams::GetPixelGeometry']/*\"/>\t\n            <msdn-id>dd371297</msdn-id>\t\n            <unmanaged>GetPixelGeometry</unmanaged>\t\n            <unmanaged-short>GetPixelGeometry</unmanaged-short>\t\n            <unmanaged>DWRITE_PIXEL_GEOMETRY IDWriteRenderingParams::GetPixelGeometry()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectWrite.RenderingParams.RenderingMode\">\n            <summary>\t\n            <p>Gets the rendering mode of the rendering parameters object.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>By default, the rendering mode is initialized to <see cref=\"F:SharpDX.DirectWrite.RenderingMode.Default\"/>, which means the rendering mode is determined automatically based on the font and size. To determine the recommended rendering mode to use for a given font and size and rendering parameters object, use the <strong><see cref=\"M:SharpDX.DirectWrite.FontFace.GetRecommendedRenderingMode(System.Single,System.Single,SharpDX.Direct2D1.MeasuringMode,SharpDX.DirectWrite.RenderingParams)\"/></strong> method.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteRenderingParams::GetRenderingMode']/*\"/>\t\n            <msdn-id>dd371300</msdn-id>\t\n            <unmanaged>GetRenderingMode</unmanaged>\t\n            <unmanaged-short>GetRenderingMode</unmanaged-short>\t\n            <unmanaged>DWRITE_RENDERING_MODE IDWriteRenderingParams::GetRenderingMode()</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.ScriptJustify\">\n            <summary>\n            Defines glyph characteristic information that an application needs to implement justification.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.ScriptJustify.None\">\n            <summary>\n            Justification cannot be applied at the glyph.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.ScriptJustify.ArabicBlank\">\n            <summary>\n            The glyph represents a blank in an Arabic run.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.ScriptJustify.Character\">\n            <summary>\n            An inter-character justification point follows the glyph.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.ScriptJustify.Blank\">\n            <summary>\n            The glyph represents a blank outside an Arabic run.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.ScriptJustify.ArabicNormal\">\n            <summary>\n            Normal middle-of-word glyph that connects to the right (begin).\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.ScriptJustify.ArabicKashida\">\n            <summary>\n            Kashida (U+0640) in the middle of the word.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.ScriptJustify.ArabicAlef\">\n            <summary>\n            Final form of an alef-like (U+0627, U+0625, U+0623, U+0622).\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.ScriptJustify.ArabicHa\">\n            <summary>\n            Final form of Ha (U+0647).\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.ScriptJustify.ArabicRa\">\n            <summary>\n            Final form of Ra (U+0631).\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.ScriptJustify.ArabicBa\">\n            <summary>\n            Final form of Ba (U+0628).\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.ScriptJustify.ArabicBaRa\">\n            <summary>\n            Ligature of alike (U+0628,U+0631).\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.ScriptJustify.ArabicSeen\">\n            <summary>\n            Highest priority: initial shape of Seen class (U+0633).\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.ScriptJustify.ArabicSeenMedial\">\n            <summary>\n            Highest priority: medial shape of Seen class (U+0633).\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.ShapingGlyphProperties\">\n            <summary>\t\n            <p>Contains shaping output properties for an output glyph.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_SHAPING_GLYPH_PROPERTIES']/*\"/>\t\n            <msdn-id>dd368123</msdn-id>\t\n            <unmanaged>DWRITE_SHAPING_GLYPH_PROPERTIES</unmanaged>\t\n            <unmanaged-short>DWRITE_SHAPING_GLYPH_PROPERTIES</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.DirectWrite.ShapingGlyphProperties.Justification\">\n            <summary>\t\n            Indicates that the glyph has justification applied. \t\n            </summary>\t\n            <unmanaged>short justification</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectWrite.ShapingGlyphProperties.Justification_\">\n            <summary>\t\n            <dd> <p>Indicates that the glyph has justification applied.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_SHAPING_GLYPH_PROPERTIES::justification']/*\"/>\t\n            <msdn-id>dd368123</msdn-id>\t\n            <unmanaged>unsigned short justification</unmanaged>\t\n            <unmanaged-short>unsigned short justification</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.DirectWrite.ShapingGlyphProperties.IsClusterStart\">\n            <summary>\t\n            <dd> <p>Indicates that the glyph is the start of a cluster.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_SHAPING_GLYPH_PROPERTIES::isClusterStart']/*\"/>\t\n            <msdn-id>dd368123</msdn-id>\t\n            <unmanaged>unsigned short isClusterStart</unmanaged>\t\n            <unmanaged-short>unsigned short isClusterStart</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.DirectWrite.ShapingGlyphProperties.IsDiacritic\">\n            <summary>\t\n            <dd> <p>Indicates that the glyph is a diacritic mark.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_SHAPING_GLYPH_PROPERTIES::isDiacritic']/*\"/>\t\n            <msdn-id>dd368123</msdn-id>\t\n            <unmanaged>unsigned short isDiacritic</unmanaged>\t\n            <unmanaged-short>unsigned short isDiacritic</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.DirectWrite.ShapingGlyphProperties.IsZeroWidthSpace\">\n            <summary>\t\n            <dd> <p>Indicates that the glyph is a word boundary with no visible space.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_SHAPING_GLYPH_PROPERTIES::isZeroWidthSpace']/*\"/>\t\n            <msdn-id>dd368123</msdn-id>\t\n            <unmanaged>unsigned short isZeroWidthSpace</unmanaged>\t\n            <unmanaged-short>unsigned short isZeroWidthSpace</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.DirectWrite.ShapingGlyphProperties.Reserved\">\n            <summary>\t\n            <dd> <p>Reserved for future use.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_SHAPING_GLYPH_PROPERTIES::reserved']/*\"/>\t\n            <msdn-id>dd368123</msdn-id>\t\n            <unmanaged>unsigned short reserved</unmanaged>\t\n            <unmanaged-short>unsigned short reserved</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.TextAnalysisSink\">\n            <summary>\t\n            <p>This interface is implemented by the text analyzer's client to receive the output of a given text analysis. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The text analyzer disregards any current state of the analysis sink, therefore, a Set method call on a range overwrites the previously set analysis result of the same range.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextAnalysisSink']/*\"/>\t\n            <msdn-id>dd371303</msdn-id>\t\n            <unmanaged>IDWriteTextAnalysisSink</unmanaged>\t\n            <unmanaged-short>IDWriteTextAnalysisSink</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextAnalysisSink.SetScriptAnalysis(System.Int32,System.Int32,SharpDX.DirectWrite.ScriptAnalysis)\">\n            <summary>\t\n            Reports script analysis for the specified text range.\t\n            </summary>\t\n            <param name=\"textPosition\">The starting position from which to report. </param>\n            <param name=\"textLength\">The number of UTF16 units of the reported range. </param>\n            <param name=\"scriptAnalysis\">A reference to a structure that contains a zero-based index representation of a writing system script and a value indicating whether additional shaping of text is required. </param>\n            <returns>A successful code or error code to stop analysis. </returns>\n            <unmanaged>HRESULT IDWriteTextAnalysisSink::SetScriptAnalysis([None] int textPosition,[None] int textLength,[In] const DWRITE_SCRIPT_ANALYSIS* scriptAnalysis)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextAnalysisSink.SetLineBreakpoints(System.Int32,System.Int32,SharpDX.DirectWrite.LineBreakpoint[])\">\n            <summary>\t\n            Sets line-break opportunities for each character, starting from the specified position.\t\n            </summary>\t\n            <param name=\"textPosition\">The starting text position from which to report. </param>\n            <param name=\"textLength\">The number of UTF16 units of the reported range. </param>\n            <param name=\"lineBreakpoints\">A reference to a structure that contains breaking conditions set for each character from the starting position to the end of the specified range. </param>\n            <returns>A successful code or error code to stop analysis. </returns>\n            <unmanaged>HRESULT IDWriteTextAnalysisSink::SetLineBreakpoints([None] int textPosition,[None] int textLength,[In, Buffer] const DWRITE_LINE_BREAKPOINT* lineBreakpoints)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextAnalysisSink.SetBidiLevel(System.Int32,System.Int32,System.Byte,System.Byte)\">\n            <summary>\t\n            Sets a bidirectional level on the range, which is  called once per  run change (either explicit or resolved implicit).\t\n            </summary>\t\n            <param name=\"textPosition\">The starting position from which to report. </param>\n            <param name=\"textLength\">The number of UTF16 units of the reported range. </param>\n            <param name=\"explicitLevel\">The explicit level from the paragraph reading direction and any embedded control codes RLE/RLO/LRE/LRO/PDF, which is determined before any additional rules. </param>\n            <param name=\"resolvedLevel\">The final implicit level considering the explicit level and characters' natural directionality, after all Bidi rules have been applied. </param>\n            <returns>A successful code or error code to stop analysis. </returns>\n            <unmanaged>HRESULT IDWriteTextAnalysisSink::SetBidiLevel([None] int textPosition,[None] int textLength,[None] int explicitLevel,[None] int resolvedLevel)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextAnalysisSink.SetNumberSubstitution(System.Int32,System.Int32,SharpDX.DirectWrite.NumberSubstitution)\">\n            <summary>\t\n            Sets the number substitution on the text range affected by the text analysis.\t\n            </summary>\t\n            <param name=\"textPosition\">The starting position from which to report. </param>\n            <param name=\"textLength\">The number of UTF16 units of the reported range. </param>\n            <param name=\"numberSubstitution\">An object that holds the appropriate digits and numeric punctuation for a given locale. Use <see cref=\"M:SharpDX.DirectWrite.Factory.CreateNumberSubstitution(SharpDX.DirectWrite.NumberSubstitutionMethod,System.String,SharpDX.Bool,SharpDX.DirectWrite.NumberSubstitution)\"/> to create this object. </param>\n            <returns>If the method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code. </returns>\n            <unmanaged>HRESULT IDWriteTextAnalysisSink::SetNumberSubstitution([None] int textPosition,[None] int textLength,[None] IDWriteNumberSubstitution* numberSubstitution)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.TextAnalysisSinkShadow\">\n            <summary>\n            Internal TextAnalysisSink Callback\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextAnalysisSinkShadow.ToIntPtr(SharpDX.DirectWrite.TextAnalysisSink)\">\n            <summary>\n            Return a pointer to the unamanged version of this callback.\n            </summary>\n            <param name=\"callback\">The callback.</param>\n            <returns>A pointer to a shadow c++ callback</returns>\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.TextAnalysisSinkShadow.TextAnalysisSinkVtbl.SetScriptAnalysisDelegate\">\n            <unmanaged>HRESULT IDWriteTextAnalysisSink::SetScriptAnalysis([None] int textPosition,[None] int textLength,[In] const DWRITE_SCRIPT_ANALYSIS* scriptAnalysis)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.TextAnalysisSinkShadow.TextAnalysisSinkVtbl.SetLineBreakpointsDelegate\">\n            <unmanaged>HRESULT IDWriteTextAnalysisSink::SetLineBreakpoints([None] int textPosition,[None] int textLength,[In, Buffer] const DWRITE_LINE_BREAKPOINT* lineBreakpoints)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.TextAnalysisSinkShadow.TextAnalysisSinkVtbl.SetBidiLevelDelegate\">\n            <unmanaged>HRESULT IDWriteTextAnalysisSink::SetBidiLevel([None] int textPosition,[None] int textLength,[None] int explicitLevel,[None] int resolvedLevel)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.TextAnalysisSinkShadow.TextAnalysisSinkVtbl.SetNumberSubstitutionDelegate\">\n            <unmanaged>HRESULT IDWriteTextAnalysisSink::SetNumberSubstitution([None] int textPosition,[None] int textLength,[None] IDWriteNumberSubstitution* numberSubstitution)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.TextAnalysisSource\">\n            <summary>\t\n            <p>Implemented by the text analyzer's client to provide text to the analyzer. It allows the separation between the logical view of text as a continuous stream of characters identifiable by unique text positions, and the actual memory layout of potentially discrete blocks of text in the client's backing store. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>If any of these callbacks returns an error, then the analysis functions will stop prematurely and return a callback error. Note that rather than return E_NOTIMPL, an application should stub the method and return a constant/null and <see cref=\"F:SharpDX.Result.Ok\"/>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextAnalysisSource']/*\"/>\t\n            <msdn-id>dd371318</msdn-id>\t\n            <unmanaged>IDWriteTextAnalysisSource</unmanaged>\t\n            <unmanaged-short>IDWriteTextAnalysisSource</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextAnalysisSource.GetTextAtPosition(System.Int32)\">\n            <summary>\t\n            Gets a block of text starting at the specified text position. \t\n            </summary>\t\n            <remarks>\t\n            Returning NULL indicates the end of text, which is the position after the last character. This function is called iteratively for each consecutive block, tying together several fragmented blocks in the backing store into a virtual contiguous string. Although applications can implement sparse textual content that  maps only part of the backing store, the application must map any text that is in the range passed to any analysis functions. \t\n            </remarks>\t\n            <param name=\"textPosition\">The first position of the piece to obtain. All positions are in UTF16 code units, not whole characters, which matters when supplementary characters are used. </param>      \n            <returns>a block of text </returns>\n            <unmanaged>HRESULT IDWriteTextAnalysisSource::GetTextAtPosition([None] int textPosition,[Out] const wchar_t** textString,[Out] int* textLength)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextAnalysisSource.GetTextBeforePosition(System.Int32)\">\n            <summary>\t\n            Gets a block of text immediately preceding the specified position.\t\n            </summary>\t\n            <remarks>\t\n            NULL indicates no chunk available at the specified position, either because textPosition equals 0,  textPosition is greater than the entire text content length, or the queried position is not mapped into the application's backing store. Although applications can implement sparse textual content that  maps only part of the backing store, the application must map any text that is in the range passed to any analysis functions. \t\n            </remarks>\t\n            <param name=\"textPosition\">The position immediately after the last position of the block of text to obtain. </param>\n            <returns>text immediately preceding the specified position </returns>\n            <unmanaged>HRESULT IDWriteTextAnalysisSource::GetTextBeforePosition([None] int textPosition,[Out] const wchar_t** textString,[Out] int* textLength)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextAnalysisSource.GetLocaleName(System.Int32,System.Int32@)\">\n            <summary>\n            Gets the locale name on the range affected by the text analysis.\n            </summary>\n            <param name=\"textPosition\">The text position to examine.</param>\n            <param name=\"textLength\">Contains the length of the text being affected by the text analysis up to the next differing locale.</param>\n            <returns>\n            the locale name on the range affected by the text analysis\n            </returns>\n            <unmanaged>HRESULT IDWriteTextAnalysisSource::GetLocaleName([None] int textPosition,[Out] int* textLength,[Out] const wchar_t** localeName)</unmanaged>\n            <remarks>\n            The localeName reference must remain valid until the next call or until the analysis returns.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextAnalysisSource.GetNumberSubstitution(System.Int32,System.Int32@)\">\n            <summary>\t\n            Gets the number substitution from the text range affected by the text analysis.\t\n            </summary>\t\n            <remarks>\t\n            Any implementation should return the number substitution with an incremented reference count, and the analysis will release when finished with it (either before the next call or before it returns). However, the sink callback may hold onto it after that. \t\n            </remarks>\t\n            <param name=\"textPosition\">The starting position from which to report. </param>\n            <param name=\"textLength\">Contains  the length of the text, in characters, remaining in the text range up to the next differing number substitution. </param>\n            <returns>the number substitution from the text range affected by the text analysis.</returns>\n            <unmanaged>HRESULT IDWriteTextAnalysisSource::GetNumberSubstitution([None] int textPosition,[Out] int* textLength,[Out] IDWriteNumberSubstitution** numberSubstitution)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectWrite.TextAnalysisSource.ReadingDirection\">\n            <summary>\t\n            Gets the paragraph reading direction.\t\n            </summary>\t\n            <returns>The reading direction of the current paragraph. </returns>\n            <unmanaged>DWRITE_READING_DIRECTION IDWriteTextAnalysisSource::GetParagraphReadingDirection()</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.TextAnalysisSourceShadow\">\n            <summary>\n            Internal TextAnalysisSource Callback\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextAnalysisSourceShadow.ToIntPtr(SharpDX.DirectWrite.TextAnalysisSource)\">\n            <summary>\n            Return a pointer to the unamanged version of this callback.\n            </summary>\n            <param name=\"callback\">The callback.</param>\n            <returns>A pointer to a shadow c++ callback</returns>\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.TextAnalysisSourceShadow.TextAnalysisSourceVtbl.GetTextAtPositionDelegate\">\n            <unmanaged>HRESULT IDWriteTextAnalysisSource::GetTextAtPosition([None] int textPosition,[Out] const wchar_t** textString,[Out] int* textLength)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.TextAnalysisSourceShadow.TextAnalysisSourceVtbl.GetTextBeforePositionDelegate\">\n            <unmanaged>HRESULT IDWriteTextAnalysisSource::GetTextBeforePosition([None] int textPosition,[Out] const wchar_t** textString,[Out] int* textLength)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.TextAnalysisSourceShadow.TextAnalysisSourceVtbl.GetParagraphReadingDirectionDelegate\">\n            <unmanaged>DWRITE_READING_DIRECTION IDWriteTextAnalysisSource::GetParagraphReadingDirection()</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.TextAnalysisSourceShadow.TextAnalysisSourceVtbl.GetLocaleNameDelegate\">\n            <unmanaged>HRESULT IDWriteTextAnalysisSource::GetLocaleName([None] int textPosition,[Out] int* textLength,[Out] const wchar_t** localeName)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.TextAnalysisSourceShadow.TextAnalysisSourceVtbl.GetNumberSubstitutionDelegate\">\n            <unmanaged>HRESULT IDWriteTextAnalysisSource::GetNumberSubstitution([None] int textPosition,[Out] int* textLength,[Out] IDWriteNumberSubstitution** numberSubstitution)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.TextAnalyzer\">\n            <summary>\t\n            <p> Analyzes various text properties for complex script processing such as bidirectional (bidi) support for languages like Arabic, determination of line break opportunities, glyph placement, and number substitution.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextAnalyzer']/*\"/>\t\n            <msdn-id>dd316607</msdn-id>\t\n            <unmanaged>IDWriteTextAnalyzer</unmanaged>\t\n            <unmanaged-short>IDWriteTextAnalyzer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextAnalyzer.#ctor(SharpDX.DirectWrite.Factory)\">\n            <summary>\n            Returns an interface for performing text analysis.\n            </summary>\n            <param name=\"factory\">A reference to a DirectWrite factory <see cref=\"T:SharpDX.DirectWrite.Factory\"/></param>\n            <unmanaged>HRESULT IDWriteFactory::CreateTextAnalyzer([Out] IDWriteTextAnalyzer** textAnalyzer)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextAnalyzer.AnalyzeScript(SharpDX.DirectWrite.TextAnalysisSource,System.Int32,System.Int32,SharpDX.DirectWrite.TextAnalysisSink)\">\n            <summary>\n            Analyzes a text range for script boundaries, reading text attributes from the source and reporting the Unicode script ID to the sink  callback {{SetScript}}.\n            </summary>\n            <param name=\"analysisSource\">A reference to the source object to analyze.</param>\n            <param name=\"textPosition\">The starting text position within the source object.</param>\n            <param name=\"textLength\">The text length to analyze.</param>\n            <param name=\"analysisSink\">A reference to the sink callback object that receives the text analysis.</param>\n            <returns>\n            If the method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code.\n            </returns>\n            <unmanaged>HRESULT IDWriteTextAnalyzer::AnalyzeScript([None] IDWriteTextAnalysisSource* analysisSource,[None] int textPosition,[None] int textLength,[None] IDWriteTextAnalysisSink* analysisSink)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextAnalyzer.AnalyzeBidi(SharpDX.DirectWrite.TextAnalysisSource,System.Int32,System.Int32,SharpDX.DirectWrite.TextAnalysisSink)\">\n            <summary>\n            Analyzes a text range for script directionality, reading attributes from the source and reporting levels to the sink callback {{SetBidiLevel}}.\n            </summary>\n            <param name=\"analysisSource\">A reference to a source object to analyze.</param>\n            <param name=\"textPosition\">The starting text position within the source object.</param>\n            <param name=\"textLength\">The text length to analyze.</param>\n            <param name=\"analysisSink\">A reference to the sink callback object that receives the text analysis.</param>\n            <returns>\n            If the method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code.\n            </returns>\n            <unmanaged>HRESULT IDWriteTextAnalyzer::AnalyzeBidi([None] IDWriteTextAnalysisSource* analysisSource,[None] int textPosition,[None] int textLength,[None] IDWriteTextAnalysisSink* analysisSink)</unmanaged>\n            <remarks>\n            While the function can handle multiple paragraphs, the text range should not arbitrarily split the middle of paragraphs. Otherwise, the returned levels may be wrong, because the Bidi algorithm is meant to apply to the paragraph as a whole.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextAnalyzer.AnalyzeNumberSubstitution(SharpDX.DirectWrite.TextAnalysisSource,System.Int32,System.Int32,SharpDX.DirectWrite.TextAnalysisSink)\">\n            <summary>\n            Analyzes a text range for spans where number substitution is applicable, reading attributes from the source and reporting substitutable ranges to the sink callback {{SetNumberSubstitution}}.\n            </summary>\n            <param name=\"analysisSource\">The source object to analyze.</param>\n            <param name=\"textPosition\">The starting position within the source object.</param>\n            <param name=\"textLength\">The length to analyze.</param>\n            <param name=\"analysisSink\">A reference to the sink callback object that receives the text analysis.</param>\n            <returns>\n            If the method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code.\n            </returns>\n            <unmanaged>HRESULT IDWriteTextAnalyzer::AnalyzeNumberSubstitution([None] IDWriteTextAnalysisSource* analysisSource,[None] int textPosition,[None] int textLength,[None] IDWriteTextAnalysisSink* analysisSink)</unmanaged>\n            <remarks>\n            Although the function can handle multiple ranges of differing number substitutions, the text ranges should not arbitrarily split the middle of numbers. Otherwise, it will treat the numbers separately and will not translate any intervening punctuation.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextAnalyzer.AnalyzeLineBreakpoints(SharpDX.DirectWrite.TextAnalysisSource,System.Int32,System.Int32,SharpDX.DirectWrite.TextAnalysisSink)\">\n            <summary>\n            Analyzes a text range for potential breakpoint opportunities, reading attributes from the source and reporting breakpoint opportunities to the sink callback {{SetLineBreakpoints}}.\n            </summary>\n            <param name=\"analysisSource\">A reference to the source object to analyze.</param>\n            <param name=\"textPosition\">The starting text position within the source object.</param>\n            <param name=\"textLength\">The text length to analyze.</param>\n            <param name=\"analysisSink\">A reference to the  sink callback object that receives the text analysis.</param>\n            <returns>\n            If the method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code.\n            </returns>\n            <unmanaged>HRESULT IDWriteTextAnalyzer::AnalyzeLineBreakpoints([None] IDWriteTextAnalysisSource* analysisSource,[None] int textPosition,[None] int textLength,[None] IDWriteTextAnalysisSink* analysisSink)</unmanaged>\n            <remarks>\n            Although the function can handle multiple paragraphs, the text range should not arbitrarily split the middle of paragraphs, unless the specified text span is considered a whole unit. Otherwise, the returned properties for the first and last characters will inappropriately allow breaks.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextAnalyzer.GetGlyphs(System.String,System.Int32,SharpDX.DirectWrite.FontFace,System.Boolean,System.Boolean,SharpDX.DirectWrite.ScriptAnalysis,System.String,SharpDX.DirectWrite.NumberSubstitution,SharpDX.DirectWrite.FontFeature[][],System.Int32[],System.Int32,System.Int16[],SharpDX.DirectWrite.ShapingTextProperties[],System.Int16[],SharpDX.DirectWrite.ShapingGlyphProperties[],System.Int32@)\">\n            <summary>\n            Gets the glyphs (TODO doc)\n            </summary>\n            <param name=\"textString\">The text string.</param>\n            <param name=\"textLength\">Length of the text.</param>\n            <param name=\"fontFace\">The font face.</param>\n            <param name=\"isSideways\">if set to <c>true</c> [is sideways].</param>\n            <param name=\"isRightToLeft\">if set to <c>true</c> [is right to left].</param>\n            <param name=\"scriptAnalysis\">The script analysis.</param>\n            <param name=\"localeName\">Name of the locale.</param>\n            <param name=\"numberSubstitution\">The number substitution.</param>\n            <param name=\"features\">The features.</param>\n            <param name=\"featureRangeLengths\">The feature range lengths.</param>\n            <param name=\"maxGlyphCount\">The max glyph count.</param>\n            <param name=\"clusterMap\">The cluster map.</param>\n            <param name=\"textProps\">The text props.</param>\n            <param name=\"glyphIndices\">The glyph indices.</param>\n            <param name=\"glyphProps\">The glyph props.</param>\n            <param name=\"actualGlyphCount\">The actual glyph count.</param>\n            <returns>\n            If the method succeeds, it returns <see cref=\"F:SharpDX.Result.Ok\"/>.\n            </returns>\n            <unmanaged>HRESULT IDWriteTextAnalyzer::GetGlyphs([In, Buffer] const wchar_t* textString,[In] unsigned int textLength,[In] IDWriteFontFace* fontFace,[In] BOOL isSideways,[In] BOOL isRightToLeft,[In] const DWRITE_SCRIPT_ANALYSIS* scriptAnalysis,[In, Buffer, Optional] const wchar_t* localeName,[In, Optional] IDWriteNumberSubstitution* numberSubstitution,[In, Optional] const void** features,[In, Buffer, Optional] const unsigned int* featureRangeLengths,[In] unsigned int featureRanges,[In] unsigned int maxGlyphCount,[Out, Buffer] unsigned short* clusterMap,[Out, Buffer] DWRITE_SHAPING_TEXT_PROPERTIES* textProps,[Out, Buffer] unsigned short* glyphIndices,[Out, Buffer] DWRITE_SHAPING_GLYPH_PROPERTIES* glyphProps,[Out] unsigned int* actualGlyphCount)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextAnalyzer.GetGlyphPlacements(System.String,System.Int16[],SharpDX.DirectWrite.ShapingTextProperties[],System.Int32,System.Int16[],SharpDX.DirectWrite.ShapingGlyphProperties[],System.Int32,SharpDX.DirectWrite.FontFace,System.Single,System.Boolean,System.Boolean,SharpDX.DirectWrite.ScriptAnalysis,System.String,SharpDX.DirectWrite.FontFeature[][],System.Int32[],System.Single[],SharpDX.DirectWrite.GlyphOffset[])\">\n            <summary>\n            Gets the glyph placements.\n            </summary>\n            <param name=\"textString\">The text string.</param>\n            <param name=\"clusterMap\">The cluster map.</param>\n            <param name=\"textProps\">The text props.</param>\n            <param name=\"textLength\">Length of the text.</param>\n            <param name=\"glyphIndices\">The glyph indices.</param>\n            <param name=\"glyphProps\">The glyph props.</param>\n            <param name=\"glyphCount\">The glyph count.</param>\n            <param name=\"fontFace\">The font face.</param>\n            <param name=\"fontEmSize\">Size of the font em.</param>\n            <param name=\"isSideways\">if set to <c>true</c> [is sideways].</param>\n            <param name=\"isRightToLeft\">if set to <c>true</c> [is right to left].</param>\n            <param name=\"scriptAnalysis\">The script analysis.</param>\n            <param name=\"localeName\">Name of the locale.</param>\n            <param name=\"features\">The features.</param>\n            <param name=\"featureRangeLengths\">The feature range lengths.</param>\n            <param name=\"glyphAdvances\">The glyph advances.</param>\n            <param name=\"glyphOffsets\">The glyph offsets.</param>\n            <returns>\n            If the method succeeds, it returns <see cref=\"F:SharpDX.Result.Ok\"/>.\n            </returns>\n            <unmanaged>HRESULT IDWriteTextAnalyzer::GetGlyphPlacements([In, Buffer] const wchar_t* textString,[In, Buffer] const unsigned short* clusterMap,[In, Buffer] DWRITE_SHAPING_TEXT_PROPERTIES* textProps,[In] unsigned int textLength,[In, Buffer] const unsigned short* glyphIndices,[In, Buffer] const DWRITE_SHAPING_GLYPH_PROPERTIES* glyphProps,[In] unsigned int glyphCount,[In] IDWriteFontFace* fontFace,[In] float fontEmSize,[In] BOOL isSideways,[In] BOOL isRightToLeft,[In] const DWRITE_SCRIPT_ANALYSIS* scriptAnalysis,[In, Buffer, Optional] const wchar_t* localeName,[In, Optional] const void** features,[In, Buffer, Optional] const unsigned int* featureRangeLengths,[In] unsigned int featureRanges,[Out, Buffer] float* glyphAdvances,[Out, Buffer] DWRITE_GLYPH_OFFSET* glyphOffsets)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextAnalyzer.GetGdiCompatibleGlyphPlacements(System.String,System.Int16[],SharpDX.DirectWrite.ShapingTextProperties[],System.Int32,System.Int16[],SharpDX.DirectWrite.ShapingGlyphProperties[],System.Int32,SharpDX.DirectWrite.FontFace,System.Single,System.Single,System.Nullable{SharpDX.DirectWrite.Matrix},System.Boolean,System.Boolean,System.Boolean,SharpDX.DirectWrite.ScriptAnalysis,System.String,SharpDX.DirectWrite.FontFeature[][],System.Int32[],System.Single[],SharpDX.DirectWrite.GlyphOffset[])\">\n            <summary>\n            Gets the GDI compatible glyph placements.\n            </summary>\n            <param name=\"textString\">The text string.</param>\n            <param name=\"clusterMap\">The cluster map.</param>\n            <param name=\"textProps\">The text props.</param>\n            <param name=\"textLength\">Length of the text.</param>\n            <param name=\"glyphIndices\">The glyph indices.</param>\n            <param name=\"glyphProps\">The glyph props.</param>\n            <param name=\"glyphCount\">The glyph count.</param>\n            <param name=\"fontFace\">The font face.</param>\n            <param name=\"fontEmSize\">Size of the font em.</param>\n            <param name=\"pixelsPerDip\">The pixels per dip.</param>\n            <param name=\"transform\">The transform.</param>\n            <param name=\"useGdiNatural\">if set to <c>true</c> [use GDI natural].</param>\n            <param name=\"isSideways\">if set to <c>true</c> [is sideways].</param>\n            <param name=\"isRightToLeft\">if set to <c>true</c> [is right to left].</param>\n            <param name=\"scriptAnalysis\">The script analysis.</param>\n            <param name=\"localeName\">Name of the locale.</param>\n            <param name=\"features\">The features.</param>\n            <param name=\"featureRangeLengths\">The feature range lengths.</param>\n            <param name=\"glyphAdvances\">The glyph advances.</param>\n            <param name=\"glyphOffsets\">The glyph offsets.</param>\n            <returns>\n            If the method succeeds, it returns <see cref=\"F:SharpDX.Result.Ok\"/>.\n            </returns>\n            <unmanaged>HRESULT IDWriteTextAnalyzer::GetGdiCompatibleGlyphPlacements([In, Buffer] const wchar_t* textString,[In, Buffer] const unsigned short* clusterMap,[In, Buffer] DWRITE_SHAPING_TEXT_PROPERTIES* textProps,[In] unsigned int textLength,[In, Buffer] const unsigned short* glyphIndices,[In, Buffer] const DWRITE_SHAPING_GLYPH_PROPERTIES* glyphProps,[In] unsigned int glyphCount,[In] IDWriteFontFace* fontFace,[In] float fontEmSize,[In] float pixelsPerDip,[In, Optional] const DWRITE_MATRIX* transform,[In] BOOL useGdiNatural,[In] BOOL isSideways,[In] BOOL isRightToLeft,[In] const DWRITE_SCRIPT_ANALYSIS* scriptAnalysis,[In, Buffer, Optional] const wchar_t* localeName,[In, Optional] const void** features,[In, Buffer, Optional] const unsigned int* featureRangeLengths,[In] unsigned int featureRanges,[Out, Buffer] float* glyphAdvances,[Out, Buffer] DWRITE_GLYPH_OFFSET* glyphOffsets)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextAnalyzer.AllocateFeatures(SharpDX.DirectWrite.FontFeature[][])\">\n            <summary>\n            Allocates the features from the jagged array..\n            </summary>\n            <param name=\"features\">The features.</param>\n            <returns>A pointer to the allocated native features or 0 if features is null or empty.</returns>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextAnalyzer.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectWrite.TextAnalyzer\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextAnalyzer.op_Explicit(System.IntPtr)~SharpDX.DirectWrite.TextAnalyzer\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.DirectWrite.TextAnalyzer\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextAnalyzer.AnalyzeScript__(System.IntPtr,System.Int32,System.Int32,System.IntPtr)\">\n            <summary>\t\n            <p> Analyzes a text range for script boundaries, reading text attributes from the source and reporting the Unicode script ID to the sink  callback <strong>SetScript</strong>. </p>\t\n            </summary>\t\n            <param name=\"analysisSource\">No documentation.</param>\t\n            <param name=\"textPosition\">No documentation.</param>\t\n            <param name=\"textLength\">No documentation.</param>\t\n            <param name=\"analysisSink\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextAnalyzer::AnalyzeScript']/*\"/>\t\n            <msdn-id>dd316620</msdn-id>\t\n            <unmanaged>HRESULT IDWriteTextAnalyzer::AnalyzeScript([In] IDWriteTextAnalysisSource* analysisSource,[In] unsigned int textPosition,[In] unsigned int textLength,[In] IDWriteTextAnalysisSink* analysisSink)</unmanaged>\t\n            <unmanaged-short>IDWriteTextAnalyzer::AnalyzeScript</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextAnalyzer.AnalyzeBidi__(System.IntPtr,System.Int32,System.Int32,System.IntPtr)\">\n            <summary>\t\n            <p> Analyzes a text range for script directionality, reading attributes from the source and reporting levels to the sink callback <strong>SetBidiLevel</strong>. </p>\t\n            </summary>\t\n            <param name=\"analysisSource\">No documentation.</param>\t\n            <param name=\"textPosition\">No documentation.</param>\t\n            <param name=\"textLength\">No documentation.</param>\t\n            <param name=\"analysisSink\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p> While the function can handle multiple paragraphs, the text range should not arbitrarily split the middle of paragraphs. Otherwise, the returned levels may be wrong, because the Bidi algorithm is meant to apply to the paragraph as a whole. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextAnalyzer::AnalyzeBidi']/*\"/>\t\n            <msdn-id>dd316610</msdn-id>\t\n            <unmanaged>HRESULT IDWriteTextAnalyzer::AnalyzeBidi([In] IDWriteTextAnalysisSource* analysisSource,[In] unsigned int textPosition,[In] unsigned int textLength,[In] IDWriteTextAnalysisSink* analysisSink)</unmanaged>\t\n            <unmanaged-short>IDWriteTextAnalyzer::AnalyzeBidi</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextAnalyzer.AnalyzeNumberSubstitution__(System.IntPtr,System.Int32,System.Int32,System.IntPtr)\">\n            <summary>\t\n            <p> Analyzes a text range for spans where number substitution is applicable, reading attributes from the source and reporting substitutable ranges to the sink callback <strong>SetNumberSubstitution</strong>. </p>\t\n            </summary>\t\n            <param name=\"analysisSource\">No documentation.</param>\t\n            <param name=\"textPosition\">No documentation.</param>\t\n            <param name=\"textLength\">No documentation.</param>\t\n            <param name=\"analysisSink\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p> Although the function can handle multiple ranges of differing number substitutions, the text ranges should not arbitrarily split the middle of numbers. Otherwise, it will treat the numbers separately and will not translate any intervening punctuation. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextAnalyzer::AnalyzeNumberSubstitution']/*\"/>\t\n            <msdn-id>dd316616</msdn-id>\t\n            <unmanaged>HRESULT IDWriteTextAnalyzer::AnalyzeNumberSubstitution([In] IDWriteTextAnalysisSource* analysisSource,[In] unsigned int textPosition,[In] unsigned int textLength,[In] IDWriteTextAnalysisSink* analysisSink)</unmanaged>\t\n            <unmanaged-short>IDWriteTextAnalyzer::AnalyzeNumberSubstitution</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextAnalyzer.AnalyzeLineBreakpoints__(System.IntPtr,System.Int32,System.Int32,System.IntPtr)\">\n            <summary>\t\n            <p> Analyzes a text range for potential breakpoint opportunities, reading attributes from the source and reporting breakpoint opportunities to the sink callback <strong>SetLineBreakpoints</strong>. </p>\t\n            </summary>\t\n            <param name=\"analysisSource\">No documentation.</param>\t\n            <param name=\"textPosition\">No documentation.</param>\t\n            <param name=\"textLength\">No documentation.</param>\t\n            <param name=\"analysisSink\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p> Although the function can handle multiple paragraphs, the text range should not arbitrarily split the middle of paragraphs, unless the specified text span is considered a whole unit. Otherwise, the returned properties for the first and last characters will inappropriately allow breaks. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextAnalyzer::AnalyzeLineBreakpoints']/*\"/>\t\n            <msdn-id>dd316613</msdn-id>\t\n            <unmanaged>HRESULT IDWriteTextAnalyzer::AnalyzeLineBreakpoints([In] IDWriteTextAnalysisSource* analysisSource,[In] unsigned int textPosition,[In] unsigned int textLength,[In] IDWriteTextAnalysisSink* analysisSink)</unmanaged>\t\n            <unmanaged-short>IDWriteTextAnalyzer::AnalyzeLineBreakpoints</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextAnalyzer.GetGlyphs(System.String,System.Int32,SharpDX.DirectWrite.FontFace,SharpDX.Bool,SharpDX.Bool,SharpDX.DirectWrite.ScriptAnalysis,System.String,SharpDX.DirectWrite.NumberSubstitution,System.IntPtr,System.Int32[],System.Int32,System.Int32,System.Int16[],SharpDX.DirectWrite.ShapingTextProperties[],System.Int16[],SharpDX.DirectWrite.ShapingGlyphProperties[],System.Int32@)\">\n            <summary>\t\n            <p> Parses the input text string and maps it to the set of glyphs and associated glyph data according to the font and the writing system's rendering rules. </p>\t\n            </summary>\t\n            <param name=\"textString\"><dd> <p>An array of characters to convert to glyphs.</p> </dd></param>\t\n            <param name=\"textLength\"><dd> <p>The length of <em>textString</em>.</p> </dd></param>\t\n            <param name=\"fontFace\"><dd> <p>The font face that is the source of the output glyphs.</p> </dd></param>\t\n            <param name=\"isSideways\"><dd> <p>A Boolean flag set to <strong>TRUE</strong> if the text is intended to be drawn vertically.</p> </dd></param>\t\n            <param name=\"isRightToLeft\"><dd> <p>A Boolean flag set to <strong>TRUE</strong> for right-to-left text.</p> </dd></param>\t\n            <param name=\"scriptAnalysis\"><dd> <p>A reference to a Script analysis result from an <strong>AnalyzeScript</strong> call.</p> </dd></param>\t\n            <param name=\"localeName\"><dd> <p>The locale to use when selecting glyphs. For example the same character may map to different glyphs for ja-jp versus zh-chs. If this is <strong><c>null</c></strong>, then the default mapping based on the script is used.</p> </dd></param>\t\n            <param name=\"numberSubstitution\"><dd> <p>A reference to an optional number substitution which selects the appropriate glyphs for digits and related numeric characters, depending on the results obtained from <strong>AnalyzeNumberSubstitution</strong>. Passing <strong><c>null</c></strong> indicates that no substitution is needed and that the digits should receive nominal glyphs.</p> </dd></param>\t\n            <param name=\"features\"><dd> <p>An array of references to the sets of typographic  features to use in each feature range.</p> </dd></param>\t\n            <param name=\"featureRangeLengths\"><dd> <p>The length of each feature range, in characters.   The sum of all lengths should be equal to <em>textLength</em>.</p> </dd></param>\t\n            <param name=\"featureRanges\"><dd> <p>The number of feature ranges.</p> </dd></param>\t\n            <param name=\"maxGlyphCount\"><dd> <p>The maximum number of glyphs that can be returned.</p> </dd></param>\t\n            <param name=\"clusterMap\"><dd> <p>When this method returns, contains the mapping from character ranges to glyph  ranges.</p> </dd></param>\t\n            <param name=\"textProps\"><dd> <p>When this method returns, contains a reference to an array of structures that contains  shaping properties for each character.</p> </dd></param>\t\n            <param name=\"glyphIndices\"><dd> <p>The output glyph indices.</p> </dd></param>\t\n            <param name=\"glyphProps\"><dd> <p>When this method returns, contains a reference to an array of structures that contain  shaping properties for each output glyph.</p> </dd></param>\t\n            <param name=\"actualGlyphCount\"><dd> <p>When this method returns, contains the actual number of glyphs returned if the call succeeds.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p> Note that the mapping from characters to glyphs is, in general, many-to-many.  The recommended estimate for the per-glyph output buffers is (3 * <em>textLength</em> / 2 + 16).  This is not guaranteed to be sufficient. The value of the <em>actualGlyphCount</em> parameter is only valid if the call succeeds.  In the event that <em>maxGlyphCount</em> is not big enough, <strong>HRESULT_FROM_WIN32(<see cref=\"F:SharpDX.Win32.ErrorCode.InsufficientBuffer\"/>)</strong> will be returned.  The application should  allocate a larger buffer and try again. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextAnalyzer::GetGlyphs']/*\"/>\t\n            <msdn-id>dd316625</msdn-id>\t\n            <unmanaged>HRESULT IDWriteTextAnalyzer::GetGlyphs([In, Buffer] const wchar_t* textString,[In] unsigned int textLength,[In] IDWriteFontFace* fontFace,[In] BOOL isSideways,[In] BOOL isRightToLeft,[In] const DWRITE_SCRIPT_ANALYSIS* scriptAnalysis,[In, Buffer, Optional] const wchar_t* localeName,[In, Optional] IDWriteNumberSubstitution* numberSubstitution,[In, Optional] const void** features,[In, Buffer, Optional] const unsigned int* featureRangeLengths,[In] unsigned int featureRanges,[In] unsigned int maxGlyphCount,[Out, Buffer] unsigned short* clusterMap,[Out, Buffer] DWRITE_SHAPING_TEXT_PROPERTIES* textProps,[Out, Buffer] unsigned short* glyphIndices,[Out, Buffer] DWRITE_SHAPING_GLYPH_PROPERTIES* glyphProps,[Out] unsigned int* actualGlyphCount)</unmanaged>\t\n            <unmanaged-short>IDWriteTextAnalyzer::GetGlyphs</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextAnalyzer.GetGlyphPlacements(System.String,System.Int16[],SharpDX.DirectWrite.ShapingTextProperties[],System.Int32,System.Int16[],SharpDX.DirectWrite.ShapingGlyphProperties[],System.Int32,SharpDX.DirectWrite.FontFace,System.Single,SharpDX.Bool,SharpDX.Bool,SharpDX.DirectWrite.ScriptAnalysis,System.String,System.IntPtr,System.Int32[],System.Int32,System.Single[],SharpDX.DirectWrite.GlyphOffset[])\">\n            <summary>\t\n            <p> Places glyphs output from the <strong>GetGlyphs</strong> method according to the font  and the writing system's rendering rules. </p>\t\n            </summary>\t\n            <param name=\"textString\">No documentation.</param>\t\n            <param name=\"clusterMap\">No documentation.</param>\t\n            <param name=\"textProps\">No documentation.</param>\t\n            <param name=\"textLength\">No documentation.</param>\t\n            <param name=\"glyphIndices\">No documentation.</param>\t\n            <param name=\"glyphProps\">No documentation.</param>\t\n            <param name=\"glyphCount\">No documentation.</param>\t\n            <param name=\"fontFace\">No documentation.</param>\t\n            <param name=\"fontEmSize\">No documentation.</param>\t\n            <param name=\"isSideways\">No documentation.</param>\t\n            <param name=\"isRightToLeft\">No documentation.</param>\t\n            <param name=\"scriptAnalysis\">No documentation.</param>\t\n            <param name=\"localeName\">No documentation.</param>\t\n            <param name=\"features\">No documentation.</param>\t\n            <param name=\"featureRangeLengths\">No documentation.</param>\t\n            <param name=\"featureRanges\">No documentation.</param>\t\n            <param name=\"glyphAdvances\">No documentation.</param>\t\n            <param name=\"glyphOffsets\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextAnalyzer::GetGlyphPlacements']/*\"/>\t\n            <msdn-id>dd316622</msdn-id>\t\n            <unmanaged>HRESULT IDWriteTextAnalyzer::GetGlyphPlacements([In, Buffer] const wchar_t* textString,[In, Buffer] const unsigned short* clusterMap,[In, Buffer] DWRITE_SHAPING_TEXT_PROPERTIES* textProps,[In] unsigned int textLength,[In, Buffer] const unsigned short* glyphIndices,[In, Buffer] const DWRITE_SHAPING_GLYPH_PROPERTIES* glyphProps,[In] unsigned int glyphCount,[In] IDWriteFontFace* fontFace,[In] float fontEmSize,[In] BOOL isSideways,[In] BOOL isRightToLeft,[In] const DWRITE_SCRIPT_ANALYSIS* scriptAnalysis,[In, Buffer, Optional] const wchar_t* localeName,[In, Optional] const void** features,[In, Buffer, Optional] const unsigned int* featureRangeLengths,[In] unsigned int featureRanges,[Out, Buffer] float* glyphAdvances,[Out, Buffer] DWRITE_GLYPH_OFFSET* glyphOffsets)</unmanaged>\t\n            <unmanaged-short>IDWriteTextAnalyzer::GetGlyphPlacements</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextAnalyzer.GetGdiCompatibleGlyphPlacements(System.String,System.Int16[],SharpDX.DirectWrite.ShapingTextProperties[],System.Int32,System.Int16[],SharpDX.DirectWrite.ShapingGlyphProperties[],System.Int32,SharpDX.DirectWrite.FontFace,System.Single,System.Single,System.Nullable{SharpDX.DirectWrite.Matrix},SharpDX.Bool,SharpDX.Bool,SharpDX.Bool,SharpDX.DirectWrite.ScriptAnalysis,System.String,System.IntPtr,System.Int32[],System.Int32,System.Single[],SharpDX.DirectWrite.GlyphOffset[])\">\n            <summary>\t\n            <p>Place glyphs output from the <strong>GetGlyphs</strong> method according to the font  and the writing system's rendering rules.</p>\t\n            </summary>\t\n            <param name=\"textString\">No documentation.</param>\t\n            <param name=\"clusterMap\">No documentation.</param>\t\n            <param name=\"textProps\">No documentation.</param>\t\n            <param name=\"textLength\">No documentation.</param>\t\n            <param name=\"glyphIndices\">No documentation.</param>\t\n            <param name=\"glyphProps\">No documentation.</param>\t\n            <param name=\"glyphCount\">No documentation.</param>\t\n            <param name=\"fontFace\">No documentation.</param>\t\n            <param name=\"fontEmSize\">No documentation.</param>\t\n            <param name=\"pixelsPerDip\">No documentation.</param>\t\n            <param name=\"transform\">No documentation.</param>\t\n            <param name=\"useGdiNatural\">No documentation.</param>\t\n            <param name=\"isSideways\">No documentation.</param>\t\n            <param name=\"isRightToLeft\">No documentation.</param>\t\n            <param name=\"scriptAnalysis\">No documentation.</param>\t\n            <param name=\"localeName\">No documentation.</param>\t\n            <param name=\"features\">No documentation.</param>\t\n            <param name=\"featureRangeLengths\">No documentation.</param>\t\n            <param name=\"featureRanges\">No documentation.</param>\t\n            <param name=\"glyphAdvances\">No documentation.</param>\t\n            <param name=\"glyphOffsets\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextAnalyzer::GetGdiCompatibleGlyphPlacements']/*\"/>\t\n            <msdn-id>dd941790</msdn-id>\t\n            <unmanaged>HRESULT IDWriteTextAnalyzer::GetGdiCompatibleGlyphPlacements([In, Buffer] const wchar_t* textString,[In, Buffer] const unsigned short* clusterMap,[In, Buffer] DWRITE_SHAPING_TEXT_PROPERTIES* textProps,[In] unsigned int textLength,[In, Buffer] const unsigned short* glyphIndices,[In, Buffer] const DWRITE_SHAPING_GLYPH_PROPERTIES* glyphProps,[In] unsigned int glyphCount,[In] IDWriteFontFace* fontFace,[In] float fontEmSize,[In] float pixelsPerDip,[In, Optional] const DWRITE_MATRIX* transform,[In] BOOL useGdiNatural,[In] BOOL isSideways,[In] BOOL isRightToLeft,[In] const DWRITE_SCRIPT_ANALYSIS* scriptAnalysis,[In, Buffer, Optional] const wchar_t* localeName,[In, Optional] const void** features,[In, Buffer, Optional] const unsigned int* featureRangeLengths,[In] unsigned int featureRanges,[Out, Buffer] float* glyphAdvances,[Out, Buffer] DWRITE_GLYPH_OFFSET* glyphOffsets)</unmanaged>\t\n            <unmanaged-short>IDWriteTextAnalyzer::GetGdiCompatibleGlyphPlacements</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.TextFormat\">\n            <summary>\t\n            <p> The <strong><see cref=\"T:SharpDX.DirectWrite.TextFormat\"/></strong> interface describes the font and paragraph properties used to format text, and it describes locale information. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p> To get a reference to the <strong><see cref=\"T:SharpDX.DirectWrite.TextFormat\"/></strong> interface, the application must call the <strong><see cref=\"M:SharpDX.DirectWrite.Factory.CreateTextFormat(System.String,SharpDX.DirectWrite.FontCollection,SharpDX.DirectWrite.FontWeight,SharpDX.DirectWrite.FontStyle,SharpDX.DirectWrite.FontStretch,System.Single,System.String,SharpDX.DirectWrite.TextFormat)\"/></strong> method as shown in the following code.</p><pre><code> if (SUCCEEDED(hr))\t\n            { hr = pDWriteFactory_-&gt;CreateTextFormat( L\"Gabriola\", <c>null</c>, <see cref=\"F:SharpDX.DirectWrite.FontWeight.Regular\"/>, <see cref=\"F:SharpDX.DirectWrite.FontStyle.Normal\"/>, <see cref=\"F:SharpDX.DirectWrite.FontStretch.Normal\"/>, 72.0f, L\"en-us\", &amp;pTextFormat_ );\t\n            } </code></pre><p>When creating an <strong><see cref=\"T:SharpDX.DirectWrite.TextFormat\"/></strong> object using the <strong>CreateTextFormat</strong> function, the application specifies the  font family, font collection, font weight, font size, and locale name for the text format.</p><p>These properties cannot be changed after the <strong><see cref=\"T:SharpDX.DirectWrite.TextFormat\"/></strong> object is created.  To change these properties, a new <strong><see cref=\"T:SharpDX.DirectWrite.TextFormat\"/></strong> object must be created with the desired properties.</p><p> The <strong><see cref=\"T:SharpDX.DirectWrite.TextFormat\"/></strong> interface is used to draw text with a single format</p><p> To draw text with multiple formats, or to use a custom text renderer, use the <strong><see cref=\"T:SharpDX.DirectWrite.TextLayout\"/></strong> interface.  <strong><see cref=\"T:SharpDX.DirectWrite.TextLayout\"/></strong> enables the application to change the format for ranges of text within the string.  The <strong><see cref=\"M:SharpDX.DirectWrite.Factory.CreateTextLayout(System.String,System.Int32,SharpDX.DirectWrite.TextFormat,System.Single,System.Single,SharpDX.DirectWrite.TextLayout)\"/></strong> takes an <strong><see cref=\"T:SharpDX.DirectWrite.TextFormat\"/></strong> object as a parameter and initially applies the format information to the entire string. </p><p> This object may not be thread-safe, and it may carry the state of text format change. </p>DirectWrite and Direct2D<p> To draw simple text with a single format, Direct2D provides the  <strong><see cref=\"M:SharpDX.Direct2D1.RenderTarget.DrawText(System.String,System.Int32,SharpDX.DirectWrite.TextFormat,SharpDX.RectangleF,SharpDX.Direct2D1.Brush,SharpDX.Direct2D1.DrawTextOptions,SharpDX.Direct2D1.MeasuringMode)\"/></strong> method, which draws a string using the format information provided by an <strong><see cref=\"T:SharpDX.DirectWrite.TextFormat\"/></strong> object.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextFormat']/*\"/>\t\n            <msdn-id>dd316628</msdn-id>\t\n            <unmanaged>IDWriteTextFormat</unmanaged>\t\n            <unmanaged-short>IDWriteTextFormat</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextFormat.#ctor(SharpDX.DirectWrite.Factory,System.String,System.Single)\">\n            <summary>\t\n             Creates a text format object used for text layout with normal weight, style and stretch.\n            </summary>\t\n            <param name=\"factory\">an instance of <see cref=\"T:SharpDX.DirectWrite.Factory\"/></param>\n            <param name=\"fontFamilyName\">An array of characters that contains the name of the font family</param>\n            <param name=\"fontSize\">The logical size of the font in DIP (\"device-independent pixel\") units. A DIP equals 1/96 inch.</param>\n            <unmanaged>HRESULT CreateTextFormat([In] const wchar* fontFamilyName,[None] IDWriteFontCollection* fontCollection,[None] DWRITE_FONT_WEIGHT fontWeight,[None] DWRITE_FONT_STYLE fontStyle,[None] DWRITE_FONT_STRETCH fontStretch,[None] FLOAT fontSize,[In] const wchar* localeName,[Out] IDWriteTextFormat** textFormat)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextFormat.#ctor(SharpDX.DirectWrite.Factory,System.String,SharpDX.DirectWrite.FontWeight,SharpDX.DirectWrite.FontStyle,System.Single)\">\n            <summary>\t\n             Creates a text format object used for text layout with normal stretch.\n            </summary>\t\n            <param name=\"factory\">an instance of <see cref=\"T:SharpDX.DirectWrite.Factory\"/></param>\n            <param name=\"fontFamilyName\">An array of characters that contains the name of the font family</param>\n            <param name=\"fontWeight\">A value that indicates the font weight for the text object created by this method.</param>\n            <param name=\"fontStyle\">A value that indicates the font style for the text object created by this method.</param>\n            <param name=\"fontSize\">The logical size of the font in DIP (\"device-independent pixel\") units. A DIP equals 1/96 inch.</param>\n            <unmanaged>HRESULT CreateTextFormat([In] const wchar* fontFamilyName,[None] IDWriteFontCollection* fontCollection,[None] DWRITE_FONT_WEIGHT fontWeight,[None] DWRITE_FONT_STYLE fontStyle,[None] DWRITE_FONT_STRETCH fontStretch,[None] FLOAT fontSize,[In] const wchar* localeName,[Out] IDWriteTextFormat** textFormat)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextFormat.#ctor(SharpDX.DirectWrite.Factory,System.String,SharpDX.DirectWrite.FontWeight,SharpDX.DirectWrite.FontStyle,SharpDX.DirectWrite.FontStretch,System.Single)\">\n            <summary>\t\n             Creates a text format object used for text layout. \t\n            </summary>\t\n            <param name=\"factory\">an instance of <see cref=\"T:SharpDX.DirectWrite.Factory\"/></param>\n            <param name=\"fontFamilyName\">An array of characters that contains the name of the font family</param>\n            <param name=\"fontWeight\">A value that indicates the font weight for the text object created by this method.</param>\n            <param name=\"fontStyle\">A value that indicates the font style for the text object created by this method.</param>\n            <param name=\"fontStretch\">A value that indicates the font stretch for the text object created by this method.</param>\n            <param name=\"fontSize\">The logical size of the font in DIP (\"device-independent pixel\") units. A DIP equals 1/96 inch.</param>\n            <unmanaged>HRESULT CreateTextFormat([In] const wchar* fontFamilyName,[None] IDWriteFontCollection* fontCollection,[None] DWRITE_FONT_WEIGHT fontWeight,[None] DWRITE_FONT_STYLE fontStyle,[None] DWRITE_FONT_STRETCH fontStretch,[None] FLOAT fontSize,[In] const wchar* localeName,[Out] IDWriteTextFormat** textFormat)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextFormat.#ctor(SharpDX.DirectWrite.Factory,System.String,SharpDX.DirectWrite.FontCollection,SharpDX.DirectWrite.FontWeight,SharpDX.DirectWrite.FontStyle,SharpDX.DirectWrite.FontStretch,System.Single)\">\n            <summary>\t\n             Creates a text format object used for text layout. \t\n            </summary>\t\n            <param name=\"factory\">an instance of <see cref=\"T:SharpDX.DirectWrite.Factory\"/></param>\n            <param name=\"fontFamilyName\">An array of characters that contains the name of the font family</param>\n            <param name=\"fontCollection\">A pointer to a font collection object. When this is NULL, indicates the system font collection.</param>\n            <param name=\"fontWeight\">A value that indicates the font weight for the text object created by this method.</param>\n            <param name=\"fontStyle\">A value that indicates the font style for the text object created by this method.</param>\n            <param name=\"fontStretch\">A value that indicates the font stretch for the text object created by this method.</param>\n            <param name=\"fontSize\">The logical size of the font in DIP (\"device-independent pixel\") units. A DIP equals 1/96 inch.</param>\n            <unmanaged>HRESULT CreateTextFormat([In] const wchar* fontFamilyName,[None] IDWriteFontCollection* fontCollection,[None] DWRITE_FONT_WEIGHT fontWeight,[None] DWRITE_FONT_STYLE fontStyle,[None] DWRITE_FONT_STRETCH fontStretch,[None] FLOAT fontSize,[In] const wchar* localeName,[Out] IDWriteTextFormat** textFormat)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextFormat.#ctor(SharpDX.DirectWrite.Factory,System.String,SharpDX.DirectWrite.FontCollection,SharpDX.DirectWrite.FontWeight,SharpDX.DirectWrite.FontStyle,SharpDX.DirectWrite.FontStretch,System.Single,System.String)\">\n            <summary>\t\n             Creates a text format object used for text layout. \t\n            </summary>\t\n            <param name=\"factory\">an instance of <see cref=\"T:SharpDX.DirectWrite.Factory\"/></param>\n            <param name=\"fontFamilyName\">An array of characters that contains the name of the font family</param>\n            <param name=\"fontCollection\">A pointer to a font collection object. When this is NULL, indicates the system font collection.</param>\n            <param name=\"fontWeight\">A value that indicates the font weight for the text object created by this method.</param>\n            <param name=\"fontStyle\">A value that indicates the font style for the text object created by this method.</param>\n            <param name=\"fontStretch\">A value that indicates the font stretch for the text object created by this method.</param>\n            <param name=\"fontSize\">The logical size of the font in DIP (\"device-independent pixel\") units. A DIP equals 1/96 inch.</param>\n            <param name=\"localeName\">An array of characters that contains the locale name.</param>\n            <unmanaged>HRESULT CreateTextFormat([In] const wchar* fontFamilyName,[None] IDWriteFontCollection* fontCollection,[None] DWRITE_FONT_WEIGHT fontWeight,[None] DWRITE_FONT_STYLE fontStyle,[None] DWRITE_FONT_STRETCH fontStretch,[None] FLOAT fontSize,[In] const wchar* localeName,[Out] IDWriteTextFormat** textFormat)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextFormat.SetTrimming(SharpDX.DirectWrite.Trimming,SharpDX.DirectWrite.InlineObject)\">\n            <summary>\t\n            <p> Sets trimming options for text overflowing the layout width. </p>\t\n            </summary>\t\n            <param name=\"trimmingOptions\"><dd> <p>Text trimming options.</p> </dd></param>\t\n            <param name=\"trimmingSign\"><dd> <p>Application-defined omission sign. This parameter may be <strong><c>null</c></strong>. See <strong><see cref=\"T:SharpDX.DirectWrite.InlineObject\"/></strong> for more information.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <msdn-id>dd316712</msdn-id>\t\n            <unmanaged>HRESULT IDWriteTextFormat::SetTrimming([In] const DWRITE_TRIMMING* trimmingOptions,[In] IDWriteInlineObject* trimmingSign)</unmanaged>\t\n            <unmanaged-short>IDWriteTextFormat::SetTrimming</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextFormat.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectWrite.TextFormat\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextFormat.op_Explicit(System.IntPtr)~SharpDX.DirectWrite.TextFormat\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.DirectWrite.TextFormat\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextFormat.SetTextAlignment(SharpDX.DirectWrite.TextAlignment)\">\n            <summary>\t\n            <p>Sets the alignment of text in a paragraph, relative to the leading and trailing edge of a layout box for a <strong><see cref=\"T:SharpDX.DirectWrite.TextFormat\"/></strong> interface.</p>\t\n            </summary>\t\n            <param name=\"textAlignment\">No documentation.</param>\t\n            <returns><p>This method can return one of the following values.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong>E_INVALIDARG</strong></dt> </dl> </td><td> <p>The textAlignment argument is invalid.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> The text can be aligned to the leading or trailing edge of the layout box, or it can be centered.  The following illustration shows text with the alignment set to <see cref=\"F:SharpDX.DirectWrite.TextAlignment.Leading\"/>, <see cref=\"F:SharpDX.DirectWrite.TextAlignment.Center\"/>, and <see cref=\"F:SharpDX.DirectWrite.TextAlignment.Trailing\"/>, respectively.  </p><p></p><p><strong>Note</strong>??The alignment is dependent on reading direction, the above is for left-to-right reading direction.  For right-to-left reading direction it would be the opposite.</p><p>See <strong><see cref=\"T:SharpDX.DirectWrite.TextAlignment\"/></strong> for more information. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextFormat::SetTextAlignment']/*\"/>\t\n            <msdn-id>dd316709</msdn-id>\t\n            <unmanaged>HRESULT IDWriteTextFormat::SetTextAlignment([In] DWRITE_TEXT_ALIGNMENT textAlignment)</unmanaged>\t\n            <unmanaged-short>IDWriteTextFormat::SetTextAlignment</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextFormat.SetParagraphAlignment(SharpDX.DirectWrite.ParagraphAlignment)\">\n            <summary>\t\n            <p> Sets the alignment option of a paragraph relative to the layout box's top and bottom edge. </p>\t\n            </summary>\t\n            <param name=\"paragraphAlignment\"><dd> <p>The paragraph alignment option being set for a paragraph; see <see cref=\"T:SharpDX.DirectWrite.ParagraphAlignment\"/> for more information.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextFormat::SetParagraphAlignment']/*\"/>\t\n            <msdn-id>dd316702</msdn-id>\t\n            <unmanaged>HRESULT IDWriteTextFormat::SetParagraphAlignment([In] DWRITE_PARAGRAPH_ALIGNMENT paragraphAlignment)</unmanaged>\t\n            <unmanaged-short>IDWriteTextFormat::SetParagraphAlignment</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextFormat.SetWordWrapping(SharpDX.DirectWrite.WordWrapping)\">\n            <summary>\t\n            <p> Sets the word wrapping option. </p>\t\n            </summary>\t\n            <param name=\"wordWrapping\"><dd> <p>The word wrapping option being set for a paragraph; see <strong><see cref=\"T:SharpDX.DirectWrite.WordWrapping\"/></strong> for more information.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextFormat::SetWordWrapping']/*\"/>\t\n            <msdn-id>dd316715</msdn-id>\t\n            <unmanaged>HRESULT IDWriteTextFormat::SetWordWrapping([In] DWRITE_WORD_WRAPPING wordWrapping)</unmanaged>\t\n            <unmanaged-short>IDWriteTextFormat::SetWordWrapping</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextFormat.SetReadingDirection(SharpDX.DirectWrite.ReadingDirection)\">\n            <summary>\t\n            <p> Sets the paragraph reading direction. </p>\t\n            </summary>\t\n            <param name=\"readingDirection\"><dd> <p>The text reading direction (for example, <strong><see cref=\"F:SharpDX.DirectWrite.ReadingDirection.RightToLeft\"/></strong> for languages, such as  Arabic, that read from right to left) for a paragraph.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextFormat::SetReadingDirection']/*\"/>\t\n            <msdn-id>dd316705</msdn-id>\t\n            <unmanaged>HRESULT IDWriteTextFormat::SetReadingDirection([In] DWRITE_READING_DIRECTION readingDirection)</unmanaged>\t\n            <unmanaged-short>IDWriteTextFormat::SetReadingDirection</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextFormat.SetFlowDirection(SharpDX.DirectWrite.FlowDirection)\">\n            <summary>\t\n            <p> Sets the  paragraph flow direction. </p>\t\n            </summary>\t\n            <param name=\"flowDirection\"><dd> <p>The paragraph flow direction; see <strong><see cref=\"T:SharpDX.DirectWrite.FlowDirection\"/></strong> for more information.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextFormat::SetFlowDirection']/*\"/>\t\n            <msdn-id>dd316691</msdn-id>\t\n            <unmanaged>HRESULT IDWriteTextFormat::SetFlowDirection([In] DWRITE_FLOW_DIRECTION flowDirection)</unmanaged>\t\n            <unmanaged-short>IDWriteTextFormat::SetFlowDirection</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextFormat.SetIncrementalTabStop(System.Single)\">\n            <summary>\t\n            <p> Sets a fixed distance between two adjacent tab stops. </p>\t\n            </summary>\t\n            <param name=\"incrementalTabStop\"><dd> <p>The fixed distance between two adjacent tab stops.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextFormat::SetIncrementalTabStop']/*\"/>\t\n            <msdn-id>dd316695</msdn-id>\t\n            <unmanaged>HRESULT IDWriteTextFormat::SetIncrementalTabStop([In] float incrementalTabStop)</unmanaged>\t\n            <unmanaged-short>IDWriteTextFormat::SetIncrementalTabStop</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextFormat.SetTrimming_(SharpDX.DirectWrite.Trimming,System.IntPtr)\">\n            <summary>\t\n            <p> Sets trimming options for text overflowing the layout width. </p>\t\n            </summary>\t\n            <param name=\"trimmingOptions\"><dd> <p>Text trimming options.</p> </dd></param>\t\n            <param name=\"trimmingSign\"><dd> <p>Application-defined omission sign. This parameter may be <strong><c>null</c></strong>. See <strong><see cref=\"T:SharpDX.DirectWrite.InlineObject\"/></strong> for more information.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextFormat::SetTrimming']/*\"/>\t\n            <msdn-id>dd316712</msdn-id>\t\n            <unmanaged>HRESULT IDWriteTextFormat::SetTrimming([In] const DWRITE_TRIMMING* trimmingOptions,[In] IDWriteInlineObject* trimmingSign)</unmanaged>\t\n            <unmanaged-short>IDWriteTextFormat::SetTrimming</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextFormat.SetLineSpacing(SharpDX.DirectWrite.LineSpacingMethod,System.Single,System.Single)\">\n            <summary>\t\n            <p> Sets the  line spacing. </p>\t\n            </summary>\t\n            <param name=\"lineSpacingMethod\"><dd> <p>Specifies how line height is being determined; see <strong><see cref=\"T:SharpDX.DirectWrite.LineSpacingMethod\"/></strong> for more information.</p> </dd></param>\t\n            <param name=\"lineSpacing\"><dd> <p>The line height, or distance between one baseline to another.</p> </dd></param>\t\n            <param name=\"baseline\"><dd> <p>The distance from top of line to baseline. A reasonable ratio to <em>lineSpacing</em> is 80 percent.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p> For the default method, spacing depends solely on the content. For uniform spacing, the specified line height overrides the content. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextFormat::SetLineSpacing']/*\"/>\t\n            <msdn-id>dd316698</msdn-id>\t\n            <unmanaged>HRESULT IDWriteTextFormat::SetLineSpacing([In] DWRITE_LINE_SPACING_METHOD lineSpacingMethod,[In] float lineSpacing,[In] float baseline)</unmanaged>\t\n            <unmanaged-short>IDWriteTextFormat::SetLineSpacing</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextFormat.GetTextAlignment\">\n            <summary>\t\n            <p> Gets the alignment option of text relative to the layout box's leading and trailing edge. </p>\t\n            </summary>\t\n            <returns><p>Returns the text alignment option of the current paragraph.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextFormat::GetTextAlignment']/*\"/>\t\n            <msdn-id>dd316681</msdn-id>\t\n            <unmanaged>DWRITE_TEXT_ALIGNMENT IDWriteTextFormat::GetTextAlignment()</unmanaged>\t\n            <unmanaged-short>IDWriteTextFormat::GetTextAlignment</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextFormat.GetParagraphAlignment\">\n            <summary>\t\n            <p> Gets the alignment option of a paragraph which is  relative to the top and bottom edges of a layout box. </p>\t\n            </summary>\t\n            <returns><p>A value that indicates the current paragraph alignment option.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextFormat::GetParagraphAlignment']/*\"/>\t\n            <msdn-id>dd316675</msdn-id>\t\n            <unmanaged>DWRITE_PARAGRAPH_ALIGNMENT IDWriteTextFormat::GetParagraphAlignment()</unmanaged>\t\n            <unmanaged-short>IDWriteTextFormat::GetParagraphAlignment</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextFormat.GetWordWrapping\">\n            <summary>\t\n            <p> Gets the word wrapping option. </p>\t\n            </summary>\t\n            <returns><p>Returns the word wrapping option; see <strong><see cref=\"T:SharpDX.DirectWrite.WordWrapping\"/></strong> for more information.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextFormat::GetWordWrapping']/*\"/>\t\n            <msdn-id>dd316688</msdn-id>\t\n            <unmanaged>DWRITE_WORD_WRAPPING IDWriteTextFormat::GetWordWrapping()</unmanaged>\t\n            <unmanaged-short>IDWriteTextFormat::GetWordWrapping</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextFormat.GetReadingDirection\">\n            <summary>\t\n            <p> Gets the  current reading direction for text in a paragraph. </p>\t\n            </summary>\t\n            <returns><p>A value that indicates the current reading direction for text in a  paragraph.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextFormat::GetReadingDirection']/*\"/>\t\n            <msdn-id>dd316678</msdn-id>\t\n            <unmanaged>DWRITE_READING_DIRECTION IDWriteTextFormat::GetReadingDirection()</unmanaged>\t\n            <unmanaged-short>IDWriteTextFormat::GetReadingDirection</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextFormat.GetFlowDirection\">\n            <summary>\t\n            <p> Gets the direction that text lines flow. </p>\t\n            </summary>\t\n            <returns><p>The direction that text lines flow within their parent container.  For example, <see cref=\"F:SharpDX.DirectWrite.FlowDirection.TopToBottom\"/> indicates that text lines are placed from top to bottom.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextFormat::GetFlowDirection']/*\"/>\t\n            <msdn-id>dd316631</msdn-id>\t\n            <unmanaged>DWRITE_FLOW_DIRECTION IDWriteTextFormat::GetFlowDirection()</unmanaged>\t\n            <unmanaged-short>IDWriteTextFormat::GetFlowDirection</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextFormat.GetIncrementalTabStop\">\n            <summary>\t\n            <p> Gets the  incremental tab stop position. </p>\t\n            </summary>\t\n            <returns><p>The incremental tab stop value.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextFormat::GetIncrementalTabStop']/*\"/>\t\n            <msdn-id>dd316655</msdn-id>\t\n            <unmanaged>float IDWriteTextFormat::GetIncrementalTabStop()</unmanaged>\t\n            <unmanaged-short>IDWriteTextFormat::GetIncrementalTabStop</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextFormat.GetTrimming(SharpDX.DirectWrite.Trimming@,SharpDX.DirectWrite.InlineObject@)\">\n            <summary>\t\n            <p> Gets the trimming options for text that overflows the layout box. </p>\t\n            </summary>\t\n            <param name=\"trimmingOptions\"><dd> <p>When this method returns, it contains a reference to a <strong><see cref=\"T:SharpDX.DirectWrite.Trimming\"/></strong> structure that holds the text trimming options for the overflowing text.</p> </dd></param>\t\n            <param name=\"trimmingSign\"><dd> <p>When this method returns, contains an address of a reference to a trimming omission sign. This parameter may be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextFormat::GetTrimming']/*\"/>\t\n            <msdn-id>dd316684</msdn-id>\t\n            <unmanaged>HRESULT IDWriteTextFormat::GetTrimming([Out] DWRITE_TRIMMING* trimmingOptions,[Out] IDWriteInlineObject** trimmingSign)</unmanaged>\t\n            <unmanaged-short>IDWriteTextFormat::GetTrimming</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextFormat.GetLineSpacing(SharpDX.DirectWrite.LineSpacingMethod@,System.Single@,System.Single@)\">\n            <summary>\t\n            <p> Gets the line spacing adjustment set for a multiline text paragraph. </p>\t\n            </summary>\t\n            <param name=\"lineSpacingMethod\"><dd> <p>A value that indicates how line height is determined.</p> </dd></param>\t\n            <param name=\"lineSpacing\"><dd> <p>When this method returns, contains the line height, or  distance between one baseline to another.</p> </dd></param>\t\n            <param name=\"baseline\"><dd> <p>When this method returns, contains the distance from top of line to baseline. A reasonable ratio to <em>lineSpacing</em> is 80 percent.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextFormat::GetLineSpacing']/*\"/>\t\n            <msdn-id>dd316657</msdn-id>\t\n            <unmanaged>HRESULT IDWriteTextFormat::GetLineSpacing([Out] DWRITE_LINE_SPACING_METHOD* lineSpacingMethod,[Out] float* lineSpacing,[Out] float* baseline)</unmanaged>\t\n            <unmanaged-short>IDWriteTextFormat::GetLineSpacing</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextFormat.GetFontCollection(SharpDX.DirectWrite.FontCollection@)\">\n            <summary>\t\n            <p> Gets the current font collection. </p>\t\n            </summary>\t\n            <param name=\"fontCollection\"><dd> <p>When this method returns, contains an address of a reference to the font collection being used for the current text.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextFormat::GetFontCollection']/*\"/>\t\n            <msdn-id>dd316633</msdn-id>\t\n            <unmanaged>HRESULT IDWriteTextFormat::GetFontCollection([Out] IDWriteFontCollection** fontCollection)</unmanaged>\t\n            <unmanaged-short>IDWriteTextFormat::GetFontCollection</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextFormat.GetFontFamilyNameLength\">\n            <summary>\t\n            <p> Gets the length of the font family name. </p>\t\n            </summary>\t\n            <returns><p>The size of the character array, in character count, not including the terminated <strong><c>null</c></strong> character.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextFormat::GetFontFamilyNameLength']/*\"/>\t\n            <msdn-id>dd316640</msdn-id>\t\n            <unmanaged>unsigned int IDWriteTextFormat::GetFontFamilyNameLength()</unmanaged>\t\n            <unmanaged-short>IDWriteTextFormat::GetFontFamilyNameLength</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextFormat.GetFontFamilyName(System.IntPtr,System.Int32)\">\n            <summary>\t\n            <p> Gets a copy of the font family name. </p>\t\n            </summary>\t\n            <param name=\"fontFamilyName\"><dd> <p>When this method returns, contains a reference to a character array, which is null-terminated, that receives the current font family name. The buffer allocated for this array should be at least the size, in elements, of <em>nameSize</em>.</p> </dd></param>\t\n            <param name=\"nameSize\"><dd> <p>The size of the <em>fontFamilyName</em> character array, in character count, including the terminated <strong><c>null</c></strong> character.  To find the size of <em>fontFamilyName</em>, use <strong>GetFontFamilyNameLength</strong>.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextFormat::GetFontFamilyName']/*\"/>\t\n            <msdn-id>dd316636</msdn-id>\t\n            <unmanaged>HRESULT IDWriteTextFormat::GetFontFamilyName([Out, Buffer] wchar_t* fontFamilyName,[In] unsigned int nameSize)</unmanaged>\t\n            <unmanaged-short>IDWriteTextFormat::GetFontFamilyName</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextFormat.GetFontWeight\">\n            <summary>\t\n            <p> Gets the font weight of the text. </p>\t\n            </summary>\t\n            <returns><p>A value that indicates the type of weight (such as normal, bold, or black). </p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextFormat::GetFontWeight']/*\"/>\t\n            <msdn-id>dd316652</msdn-id>\t\n            <unmanaged>DWRITE_FONT_WEIGHT IDWriteTextFormat::GetFontWeight()</unmanaged>\t\n            <unmanaged-short>IDWriteTextFormat::GetFontWeight</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextFormat.GetFontStyle\">\n            <summary>\t\n            <p> Gets the font style of the text.</p>\t\n            </summary>\t\n            <returns><p>A value which indicates the type of font style (such as  slope or incline).</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextFormat::GetFontStyle']/*\"/>\t\n            <msdn-id>dd316649</msdn-id>\t\n            <unmanaged>DWRITE_FONT_STYLE IDWriteTextFormat::GetFontStyle()</unmanaged>\t\n            <unmanaged-short>IDWriteTextFormat::GetFontStyle</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextFormat.GetFontStretch\">\n            <summary>\t\n            <p> Gets the font stretch of the text. </p>\t\n            </summary>\t\n            <returns><p>A value which indicates the type of font stretch (such as  normal or condensed).</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextFormat::GetFontStretch']/*\"/>\t\n            <msdn-id>dd316646</msdn-id>\t\n            <unmanaged>DWRITE_FONT_STRETCH IDWriteTextFormat::GetFontStretch()</unmanaged>\t\n            <unmanaged-short>IDWriteTextFormat::GetFontStretch</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextFormat.GetFontSize\">\n            <summary>\t\n            <p> Gets the font  size in DIP unites. </p>\t\n            </summary>\t\n            <returns><p>The current font size in DIP units.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextFormat::GetFontSize']/*\"/>\t\n            <msdn-id>dd316643</msdn-id>\t\n            <unmanaged>float IDWriteTextFormat::GetFontSize()</unmanaged>\t\n            <unmanaged-short>IDWriteTextFormat::GetFontSize</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextFormat.GetLocaleNameLength\">\n            <summary>\t\n            <p> Gets the length of the locale name. </p>\t\n            </summary>\t\n            <returns><p>The size of the character array in character count, not including the terminated <strong><c>null</c></strong> character.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextFormat::GetLocaleNameLength']/*\"/>\t\n            <msdn-id>dd316674</msdn-id>\t\n            <unmanaged>unsigned int IDWriteTextFormat::GetLocaleNameLength()</unmanaged>\t\n            <unmanaged-short>IDWriteTextFormat::GetLocaleNameLength</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextFormat.GetLocaleName(System.IntPtr,System.Int32)\">\n            <summary>\t\n            <p> Gets a copy of the locale name. </p>\t\n            </summary>\t\n            <param name=\"localeName\"><dd> <p>Contains a character array that receives the current locale name.</p> </dd></param>\t\n            <param name=\"nameSize\"><dd> <p>The size of the character array, in character count, including the terminated <strong><c>null</c></strong> character. Use <strong>GetLocaleNameLength</strong> to get the size of the locale name character array.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextFormat::GetLocaleName']/*\"/>\t\n            <msdn-id>dd316659</msdn-id>\t\n            <unmanaged>HRESULT IDWriteTextFormat::GetLocaleName([Out, Buffer] wchar_t* localeName,[In] unsigned int nameSize)</unmanaged>\t\n            <unmanaged-short>IDWriteTextFormat::GetLocaleName</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.DirectWrite.TextFormat.FontFamilyName\">\n            <summary>\t\n            Gets a copy of the font family name. \t\n            </summary>\t\n            <returns>the current font family name. </returns>\n            <unmanaged>HRESULT IDWriteTextFormat::GetFontFamilyName([Out, Buffer] wchar_t* fontFamilyName,[None] int nameSize)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectWrite.TextFormat.LocaleName\">\n            <summary>\t\n            Gets a copy of the locale name. \t\n            </summary>\t\n            <returns>the current locale name.</returns>\n            <unmanaged>HRESULT IDWriteTextFormat::GetLocaleName([Out, Buffer] wchar_t* localeName,[None] int nameSize)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectWrite.TextFormat.TextAlignment\">\n            <summary>\t\n            <p>Gets or sets the alignment option of text relative to the layout box's leading and trailing edge. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextFormat::GetTextAlignment']/*\"/>\t\n            <msdn-id>dd316681</msdn-id>\t\n            <unmanaged>GetTextAlignment / SetTextAlignment</unmanaged>\t\n            <unmanaged-short>GetTextAlignment</unmanaged-short>\t\n            <unmanaged>DWRITE_TEXT_ALIGNMENT IDWriteTextFormat::GetTextAlignment()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectWrite.TextFormat.ParagraphAlignment\">\n            <summary>\t\n            <p>Gets or sets the alignment option of a paragraph which is  relative to the top and bottom edges of a layout box. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextFormat::GetParagraphAlignment']/*\"/>\t\n            <msdn-id>dd316675</msdn-id>\t\n            <unmanaged>GetParagraphAlignment / SetParagraphAlignment</unmanaged>\t\n            <unmanaged-short>GetParagraphAlignment</unmanaged-short>\t\n            <unmanaged>DWRITE_PARAGRAPH_ALIGNMENT IDWriteTextFormat::GetParagraphAlignment()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectWrite.TextFormat.WordWrapping\">\n            <summary>\t\n            <p>Gets or sets the word wrapping option. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextFormat::GetWordWrapping']/*\"/>\t\n            <msdn-id>dd316688</msdn-id>\t\n            <unmanaged>GetWordWrapping / SetWordWrapping</unmanaged>\t\n            <unmanaged-short>GetWordWrapping</unmanaged-short>\t\n            <unmanaged>DWRITE_WORD_WRAPPING IDWriteTextFormat::GetWordWrapping()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectWrite.TextFormat.ReadingDirection\">\n            <summary>\t\n            <p>Gets or sets the  current reading direction for text in a paragraph. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextFormat::GetReadingDirection']/*\"/>\t\n            <msdn-id>dd316678</msdn-id>\t\n            <unmanaged>GetReadingDirection / SetReadingDirection</unmanaged>\t\n            <unmanaged-short>GetReadingDirection</unmanaged-short>\t\n            <unmanaged>DWRITE_READING_DIRECTION IDWriteTextFormat::GetReadingDirection()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectWrite.TextFormat.FlowDirection\">\n            <summary>\t\n            <p>Gets or sets the direction that text lines flow. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextFormat::GetFlowDirection']/*\"/>\t\n            <msdn-id>dd316631</msdn-id>\t\n            <unmanaged>GetFlowDirection / SetFlowDirection</unmanaged>\t\n            <unmanaged-short>GetFlowDirection</unmanaged-short>\t\n            <unmanaged>DWRITE_FLOW_DIRECTION IDWriteTextFormat::GetFlowDirection()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectWrite.TextFormat.IncrementalTabStop\">\n            <summary>\t\n            <p>Gets or sets the  incremental tab stop position. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextFormat::GetIncrementalTabStop']/*\"/>\t\n            <msdn-id>dd316655</msdn-id>\t\n            <unmanaged>GetIncrementalTabStop / SetIncrementalTabStop</unmanaged>\t\n            <unmanaged-short>GetIncrementalTabStop</unmanaged-short>\t\n            <unmanaged>float IDWriteTextFormat::GetIncrementalTabStop()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectWrite.TextFormat.FontCollection\">\n            <summary>\t\n            <p> Gets the current font collection. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextFormat::GetFontCollection']/*\"/>\t\n            <msdn-id>dd316633</msdn-id>\t\n            <unmanaged>GetFontCollection</unmanaged>\t\n            <unmanaged-short>GetFontCollection</unmanaged-short>\t\n            <unmanaged>HRESULT IDWriteTextFormat::GetFontCollection([Out] IDWriteFontCollection** fontCollection)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectWrite.TextFormat.FontWeight\">\n            <summary>\t\n            <p> Gets the font weight of the text. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextFormat::GetFontWeight']/*\"/>\t\n            <msdn-id>dd316652</msdn-id>\t\n            <unmanaged>GetFontWeight</unmanaged>\t\n            <unmanaged-short>GetFontWeight</unmanaged-short>\t\n            <unmanaged>DWRITE_FONT_WEIGHT IDWriteTextFormat::GetFontWeight()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectWrite.TextFormat.FontStyle\">\n            <summary>\t\n            <p> Gets the font style of the text.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextFormat::GetFontStyle']/*\"/>\t\n            <msdn-id>dd316649</msdn-id>\t\n            <unmanaged>GetFontStyle</unmanaged>\t\n            <unmanaged-short>GetFontStyle</unmanaged-short>\t\n            <unmanaged>DWRITE_FONT_STYLE IDWriteTextFormat::GetFontStyle()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectWrite.TextFormat.FontStretch\">\n            <summary>\t\n            <p> Gets the font stretch of the text. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextFormat::GetFontStretch']/*\"/>\t\n            <msdn-id>dd316646</msdn-id>\t\n            <unmanaged>GetFontStretch</unmanaged>\t\n            <unmanaged-short>GetFontStretch</unmanaged-short>\t\n            <unmanaged>DWRITE_FONT_STRETCH IDWriteTextFormat::GetFontStretch()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectWrite.TextFormat.FontSize\">\n            <summary>\t\n            <p> Gets the font  size in DIP unites. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextFormat::GetFontSize']/*\"/>\t\n            <msdn-id>dd316643</msdn-id>\t\n            <unmanaged>GetFontSize</unmanaged>\t\n            <unmanaged-short>GetFontSize</unmanaged-short>\t\n            <unmanaged>float IDWriteTextFormat::GetFontSize()</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.TextLayout\">\n            <summary>\t\n            <p>The <strong><see cref=\"T:SharpDX.DirectWrite.TextLayout\"/></strong> interface represents a block of text after it has been fully analyzed and formatted.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>To get a reference to the <strong><see cref=\"T:SharpDX.DirectWrite.TextLayout\"/></strong> interface, the application must call the <strong><see cref=\"M:SharpDX.DirectWrite.Factory.CreateTextLayout(System.String,System.Int32,SharpDX.DirectWrite.TextFormat,System.Single,System.Single,SharpDX.DirectWrite.TextLayout)\"/></strong> method, as shown in the following code.  </p><pre><code> // Create a text layout using the text format.\t\n            if (SUCCEEDED(hr))\t\n            { <see cref=\"T:SharpDX.Rectangle\"/> rect; GetClientRect(hwnd_, &amp;rect);  float width  = rect.right  / dpiScaleX_; float height = rect.bottom / dpiScaleY_; hr = pDWriteFactory_-&gt;CreateTextLayout( wszText_,      // The string to be laid out and formatted. cTextLength_,  // The length of the string. pTextFormat_,  // The text format to apply to the string (contains font information, etc). width,         // The width of the layout box. height,        // The height of the layout box. &amp;pTextLayout_  // The <see cref=\"T:SharpDX.DirectWrite.TextLayout\"/> interface reference. );\t\n            } </code></pre><p>The <strong><see cref=\"T:SharpDX.DirectWrite.TextLayout\"/></strong> interface allows the application to change the format for ranges of the text it represents, specified by a <strong><see cref=\"T:SharpDX.DirectWrite.TextRange\"/></strong> structure.   The following example shows how to set the font weight for a text range.</p><pre><code> // Set the font weight to bold for the first 5 letters.\t\n            <see cref=\"T:SharpDX.DirectWrite.TextRange\"/> textRange = {0, 4}; if (SUCCEEDED(hr))\t\n            { hr = pTextLayout_-&gt;SetFontWeight(<see cref=\"F:SharpDX.DirectWrite.FontWeight.Bold\"/>, textRange);\t\n            } </code></pre><p><strong><see cref=\"T:SharpDX.DirectWrite.TextLayout\"/></strong> also provides methods for adding strikethrough,  underline, and inline objects to the text.</p><p>To draw the block of text represented by an <strong><see cref=\"T:SharpDX.DirectWrite.TextLayout\"/></strong> object, Direct2D provides the <strong><see cref=\"M:SharpDX.Direct2D1.RenderTarget.DrawTextLayout(SharpDX.DrawingPointF,SharpDX.DirectWrite.TextLayout,SharpDX.Direct2D1.Brush,SharpDX.Direct2D1.DrawTextOptions)\"/></strong> method. To draw using a custom renderer implement an <strong><see cref=\"T:SharpDX.DirectWrite.TextRenderer\"/></strong> interface and  call the  <strong><see cref=\"M:SharpDX.DirectWrite.TextLayout.Draw_(System.IntPtr,System.IntPtr,System.Single,System.Single)\"/></strong> method</p>DirectWrite and Direct2D<p>To draw a formatted string represented by an <strong><see cref=\"T:SharpDX.DirectWrite.TextLayout\"/></strong> object, Direct2D provides the  <strong><see cref=\"M:SharpDX.Direct2D1.RenderTarget.DrawTextLayout(SharpDX.DrawingPointF,SharpDX.DirectWrite.TextLayout,SharpDX.Direct2D1.Brush,SharpDX.Direct2D1.DrawTextOptions)\"/></strong> method.</p>Other Rendering Options<p>To render using a custom renderer, use the <strong><see cref=\"M:SharpDX.DirectWrite.TextLayout.Draw_(System.IntPtr,System.IntPtr,System.Single,System.Single)\"/></strong> method, which takes a callback interface derived from <strong><see cref=\"T:SharpDX.DirectWrite.TextRenderer\"/></strong> as an argument, as shown in the following code.</p><pre><code> // Draw the text layout using DirectWrite and the CustomTextRenderer class.\t\n            hr = pTextLayout_-&gt;Draw( <c>null</c>, pTextRenderer_,  // Custom text renderer. origin.x, origin.y ); </code></pre><p> <strong><see cref=\"T:SharpDX.DirectWrite.TextRenderer\"/></strong> declares methods for drawing a glyph run, underline, strikethrough and inline objects.  It is up to the application to implement these methods.  Creating a custom text renderer allows the application to apply additional effects when rendering text, such as a custom fill or outline.</p><p>Using a custom text renderer also enables you to render using another technology, such as GDI.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextLayout']/*\"/>\t\n            <msdn-id>dd316718</msdn-id>\t\n            <unmanaged>IDWriteTextLayout</unmanaged>\t\n            <unmanaged-short>IDWriteTextLayout</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextLayout.#ctor(SharpDX.DirectWrite.Factory,System.String,SharpDX.DirectWrite.TextFormat,System.Single,System.Single)\">\n            <summary>\t\n             Takes a string, text format, and associated constraints, and produces an object that represents the fully analyzed and formatted result. \t\n            </summary>\t\n            <param name=\"factory\">an instance of <see cref=\"T:SharpDX.DirectWrite.Factory\"/></param>\n            <param name=\"text\">An array of characters that contains the string to create a new <see cref=\"T:SharpDX.DirectWrite.TextLayout\"/> object from. This array must be of length stringLength and can contain embedded NULL characters.</param>\n            <param name=\"textFormat\">A pointer to an object that indicates the format to apply to the string.</param>\n            <param name=\"maxWidth\">The width of the layout box.</param>\n            <param name=\"maxHeight\">The height of the layout box.</param>\n            <unmanaged>HRESULT CreateTextLayout([In, Buffer] const wchar* string,[None] UINT32 stringLength,[None] IDWriteTextFormat* textFormat,[None] FLOAT maxWidth,[None] FLOAT maxHeight,[Out] IDWriteTextLayout** textLayout)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextLayout.#ctor(SharpDX.DirectWrite.Factory,System.String,SharpDX.DirectWrite.TextFormat,System.Single,System.Single,System.Single,System.Boolean)\">\n            <summary>\t\n            Create a Gdi Compatible TextLayout. Takes a string, format, and associated constraints, and produces an object representing the result, formatted for a particular display resolution and measuring mode.  \t\n            </summary>\t\n            <remarks>\t\n            The resulting text layout should only be used for the intended resolution, and for cases where text scalability is desired {{CreateTextLayout}} should be used instead. \t\n            </remarks>\t\n            <param name=\"factory\">an instance of <see cref=\"T:SharpDX.DirectWrite.Factory\"/></param>\n            <param name=\"text\">An array of characters that contains the string to create a new <see cref=\"T:SharpDX.DirectWrite.TextLayout\"/> object from. This array must be of length stringLength and can contain embedded NULL characters. </param>\n            <param name=\"textFormat\">The text formatting object to apply to the string. </param>\n            <param name=\"layoutWidth\">The width of the layout box. </param>\n            <param name=\"layoutHeight\">The height of the layout box. </param>\n            <param name=\"pixelsPerDip\">The number of physical pixels per DIP (device independent pixel). For example, if rendering onto a 96 DPI device pixelsPerDip is 1. If rendering onto a 120 DPI device pixelsPerDip is 1.25 (120/96). </param>\n            <param name=\"useGdiNatural\">Instructs the text layout to use the same metrics as GDI bi-level text when set to FALSE. When set to TRUE, instructs the text layout to use the same metrics as text measured by GDI using a font created with CLEARTYPE_NATURAL_QUALITY.  </param>\n            <unmanaged>HRESULT IDWriteFactory::CreateGdiCompatibleTextLayout([In, Buffer] const wchar_t* string,[None] int stringLength,[None] IDWriteTextFormat* textFormat,[None] float layoutWidth,[None] float layoutHeight,[None] float pixelsPerDip,[In, Optional] const DWRITE_MATRIX* transform,[None] BOOL useGdiNatural,[Out] IDWriteTextLayout** textLayout)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextLayout.#ctor(SharpDX.DirectWrite.Factory,System.String,SharpDX.DirectWrite.TextFormat,System.Single,System.Single,System.Single,System.Nullable{SharpDX.DirectWrite.Matrix},System.Boolean)\">\n            <summary>\t\n            Create a Gdi Compatible TextLayout. Takes a string, format, and associated constraints, and produces an object representing the result, formatted for a particular display resolution and measuring mode.  \t\n            </summary>\t\n            <remarks>\t\n            The resulting text layout should only be used for the intended resolution, and for cases where text scalability is desired {{CreateTextLayout}} should be used instead. \t\n            </remarks>\t\n            <param name=\"factory\">an instance of <see cref=\"T:SharpDX.DirectWrite.Factory\"/></param>\n            <param name=\"text\">An array of characters that contains the string to create a new <see cref=\"T:SharpDX.DirectWrite.TextLayout\"/> object from. This array must be of length stringLength and can contain embedded NULL characters. </param>\n            <param name=\"textFormat\">The text formatting object to apply to the string. </param>\n            <param name=\"layoutWidth\">The width of the layout box. </param>\n            <param name=\"layoutHeight\">The height of the layout box. </param>\n            <param name=\"pixelsPerDip\">The number of physical pixels per DIP (device independent pixel). For example, if rendering onto a 96 DPI device pixelsPerDip is 1. If rendering onto a 120 DPI device pixelsPerDip is 1.25 (120/96). </param>\n            <param name=\"transform\">An optional transform applied to the glyphs and their positions. This transform is applied after the scaling specifies the font size and pixels per DIP. </param>\n            <param name=\"useGdiNatural\">Instructs the text layout to use the same metrics as GDI bi-level text when set to FALSE. When set to TRUE, instructs the text layout to use the same metrics as text measured by GDI using a font created with CLEARTYPE_NATURAL_QUALITY.  </param>\n            <unmanaged>HRESULT IDWriteFactory::CreateGdiCompatibleTextLayout([In, Buffer] const wchar_t* string,[None] int stringLength,[None] IDWriteTextFormat* textFormat,[None] float layoutWidth,[None] float layoutHeight,[None] float pixelsPerDip,[In, Optional] const DWRITE_MATRIX* transform,[None] BOOL useGdiNatural,[Out] IDWriteTextLayout** textLayout)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextLayout.Draw(SharpDX.DirectWrite.TextRenderer,System.Single,System.Single)\">\n            <summary>\t\n             Draws text using the specified client drawing context.\t\n            </summary>\t\n            <remarks>\t\n            To draw text with this method, a textLayout object needs to be created by the application using <see cref=\"M:SharpDX.DirectWrite.Factory.CreateTextLayout(System.String,System.Int32,SharpDX.DirectWrite.TextFormat,System.Single,System.Single,SharpDX.DirectWrite.TextLayout)\"/>. After the textLayout object is obtained, the application calls the  IDWriteTextLayout::Draw method  to draw the text, decorations, and inline objects. The actual drawing is done through the callback interface passed in as the textRenderer argument; there, the corresponding DrawGlyphRun API is called. \t\n            </remarks>\t\n            <param name=\"renderer\">Pointer to the set of callback functions used to draw parts of a text string.</param>\n            <param name=\"originX\">The x-coordinate of the layout's left side.</param>\n            <param name=\"originY\">The y-coordinate of the layout's top side.</param>\n            <returns>If the method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code.</returns>\n            <unmanaged>HRESULT Draw([None] void* clientDrawingContext,[None] IDWriteTextRenderer* renderer,[None] FLOAT originX,[None] FLOAT originY)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextLayout.Draw(System.Object,SharpDX.DirectWrite.TextRenderer,System.Single,System.Single)\">\n            <summary>\t\n             Draws text using the specified client drawing context.\t\n            </summary>\t\n            <remarks>\t\n            To draw text with this method, a textLayout object needs to be created by the application using <see cref=\"M:SharpDX.DirectWrite.Factory.CreateTextLayout(System.String,System.Int32,SharpDX.DirectWrite.TextFormat,System.Single,System.Single,SharpDX.DirectWrite.TextLayout)\"/>. After the textLayout object is obtained, the application calls the  IDWriteTextLayout::Draw method  to draw the text, decorations, and inline objects. The actual drawing is done through the callback interface passed in as the textRenderer argument; there, the corresponding DrawGlyphRun API is called. \t\n            </remarks>\t\n            <param name=\"clientDrawingContext\">An application-defined drawing context. </param>\n            <param name=\"renderer\">Pointer to the set of callback functions used to draw parts of a text string.</param>\n            <param name=\"originX\">The x-coordinate of the layout's left side.</param>\n            <param name=\"originY\">The y-coordinate of the layout's top side.</param>\n            <returns>If the method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code.</returns>\n            <unmanaged>HRESULT Draw([None] void* clientDrawingContext,[None] IDWriteTextRenderer* renderer,[None] FLOAT originX,[None] FLOAT originY)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextLayout.GetClusterMetrics\">\n            <summary>\t\n            Retrieves logical properties and measurements of each glyph cluster. \t\n            </summary>\t\n            <remarks>\t\n            If maxClusterCount is not large enough, then E_NOT_SUFFICIENT_BUFFER, which is equivalent to HRESULT_FROM_WIN32(ERROR_INSUFFICIENT_BUFFER), is returned and actualClusterCount is set to the number of clusters needed.  \t\n            </remarks>\t\n            <returns>Returns metrics, such as line-break or total advance width, for a glyph cluster. </returns>\n            <unmanaged>HRESULT IDWriteTextLayout::GetClusterMetrics([Out, Buffer, Optional] DWRITE_CLUSTER_METRICS* clusterMetrics,[None] int maxClusterCount,[Out] int* actualClusterCount)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextLayout.SetDrawingEffect(SharpDX.ComObject,SharpDX.DirectWrite.TextRange)\">\n            <summary>\t\n            Sets the application-defined drawing effect. \t\n            </summary>\t\n            <remarks>\t\n            An <see cref=\"T:SharpDX.Direct2D1.Brush\"/>, such as a color or gradient brush, can be set as a drawing effect if you are using the <see cref=\"!:RenderTarget.DrawTextLayout(System.Drawing.PointF,SharpDX.DirectWrite.TextLayout,SharpDX.Direct2D1.Brush,SharpDX.Direct2D1.DrawTextOptions)\"/> to draw text and that brush will be used to draw the specified range of text.  This drawing effect is associated with the specified range and will be passed back to the application by way of the callback when the range is drawn at drawing time.  \t\n            </remarks>\t\n            <param name=\"drawingEffect\">Application-defined drawing effects that apply to the range. This data object will be passed back to the application's drawing callbacks for final rendering. </param>\n            <param name=\"textRange\">The text range to which this change applies. </param>\n            <returns>If the method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code. </returns>\n            <unmanaged>HRESULT IDWriteTextLayout::SetDrawingEffect([None] IUnknown* drawingEffect,[None] DWRITE_TEXT_RANGE textRange)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextLayout.GetDrawingEffect(System.Int32)\">\n            <summary>\t\n            Gets the application-defined drawing effect at the specified text position. \t\n            </summary>\t\n            <param name=\"currentPosition\">The position of the text whose drawing effect is to be retrieved. </param>\n            <returns>a reference to  the current application-defined drawing effect. Usually this effect is a foreground brush that  is used in glyph drawing. </returns>\n            <unmanaged>HRESULT IDWriteTextLayout::GetDrawingEffect([None] int currentPosition,[Out] IUnknown** drawingEffect,[Out, Optional] DWRITE_TEXT_RANGE* textRange)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextLayout.GetDrawingEffect(System.Int32,SharpDX.DirectWrite.TextRange@)\">\n            <summary>\t\n            Gets the application-defined drawing effect at the specified text position. \t\n            </summary>\t\n            <param name=\"currentPosition\">The position of the text whose drawing effect is to be retrieved. </param>\n            <param name=\"textRange\">Contains the range of text that has the same  formatting as the text at the position specified by currentPosition.  This means the run has the exact  formatting as the position specified, including but not limited to the drawing effect. </param>\n            <returns>a reference to  the current application-defined drawing effect. Usually this effect is a foreground brush that  is used in glyph drawing. </returns>\n            <unmanaged>HRESULT IDWriteTextLayout::GetDrawingEffect([None] int currentPosition,[Out] IUnknown** drawingEffect,[Out, Optional] DWRITE_TEXT_RANGE* textRange)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextLayout.GetFontCollection(System.Int32)\">\n            <summary>\t\n            Gets the font collection associated with the text at the specified position. \t\n            </summary>\t\n            <param name=\"currentPosition\">The position of the text to inspect. </param>\n            <returns>a  reference to the current font collection.</returns>\n            <unmanaged>HRESULT IDWriteTextLayout::GetFontCollection([None] int currentPosition,[Out] IDWriteFontCollection** fontCollection,[Out, Optional] DWRITE_TEXT_RANGE* textRange)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextLayout.GetFontFamilyName(System.Int32)\">\n            <summary>\t\n            Gets the font family name of the text at the specified position. \t\n            </summary>\t\n            <param name=\"currentPosition\">The position of the text to examine. </param>\n            <returns>the font family name </returns>\n            <unmanaged>HRESULT IDWriteTextLayout::GetFontFamilyName([None] int currentPosition,[Out, Buffer] wchar_t* fontFamilyName,[None] int nameSize,[Out, Optional] DWRITE_TEXT_RANGE* textRange)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextLayout.GetFontFamilyName(System.Int32,SharpDX.DirectWrite.TextRange@)\">\n            <summary>\t\n            Gets the font family name of the text at the specified position. \t\n            </summary>\t\n            <param name=\"currentPosition\">The position of the text to examine. </param>\n            <param name=\"textRange\">The range of text that has the same  formatting as the text at the position specified by currentPosition.  This means the run has the exact  formatting as the position specified, including but not limited to the font family name. </param>\n            <returns>the font family name </returns>\n            <unmanaged>HRESULT IDWriteTextLayout::GetFontFamilyName([None] int currentPosition,[Out, Buffer] wchar_t* fontFamilyName,[None] int nameSize,[Out, Optional] DWRITE_TEXT_RANGE* textRange)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextLayout.GetFontSize(System.Int32)\">\n            <summary>\t\n            Gets the font em height of the text at the specified position. \t\n            </summary>\t\n            <param name=\"currentPosition\">The position of the text to inspect. </param>\n            <returns>the size of the font in ems  of the text at the specified position. </returns>\n            <unmanaged>HRESULT IDWriteTextLayout::GetFontSize([None] int currentPosition,[Out] float* fontSize,[Out, Optional] DWRITE_TEXT_RANGE* textRange)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextLayout.GetFontStretch(System.Int32)\">\n            <summary>\t\n            Gets the font stretch of the text at the specified position. \t\n            </summary>\t\n            <param name=\"currentPosition\">The position of the text to inspect. </param>\n            <returns>a value which indicates the type of font stretch (also known as width) being applied at the specified position.</returns>\n            <unmanaged>HRESULT IDWriteTextLayout::GetFontStretch([None] int currentPosition,[Out] DWRITE_FONT_STRETCH* fontStretch,[Out, Optional] DWRITE_TEXT_RANGE* textRange)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextLayout.GetFontStyle(System.Int32)\">\n            <summary>\t\n            Gets the font style (also known as slope) of the text at the specified position. \t\n            </summary>\t\n            <param name=\"currentPosition\">The position of the text to inspect. </param>\n            <returns>a value which indicates the type of font style (also known as slope or incline) being applied at the specified position.</returns>\n            <unmanaged>HRESULT IDWriteTextLayout::GetFontStyle([None] int currentPosition,[Out] DWRITE_FONT_STYLE* fontStyle,[Out, Optional] DWRITE_TEXT_RANGE* textRange)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextLayout.GetFontWeight(System.Int32)\">\n            <summary>\t\n            Gets the font weight of the text at the specified position. \t\n            </summary>\t\n            <param name=\"currentPosition\">The position of the text to inspect. </param>\n            <returns>a value which indicates the type of font weight being applied at the specified position.</returns>\n            <unmanaged>HRESULT IDWriteTextLayout::GetFontWeight([None] int currentPosition,[Out] DWRITE_FONT_WEIGHT* fontWeight,[Out, Optional] DWRITE_TEXT_RANGE* textRange)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextLayout.GetInlineObject(System.Int32)\">\n            <summary>\t\n            Gets the inline object at the specified position. \t\n            </summary>\t\n            <param name=\"currentPosition\">The specified text position. </param>\n            <returns>an application-defined inline object. </returns>\n            <unmanaged>HRESULT IDWriteTextLayout::GetInlineObject([None] int currentPosition,[Out] IDWriteInlineObject** inlineObject,[Out, Optional] DWRITE_TEXT_RANGE* textRange)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextLayout.GetLineMetrics\">\n            <summary>\t\n            Retrieves the information about each individual text line of the  text string. \t\n            </summary>\t\n            <remarks>\t\n            If maxLineCount is not large enough E_NOT_SUFFICIENT_BUFFER, which is equivalent to HRESULT_FROM_WIN32(ERROR_INSUFFICIENT_BUFFER), is returned and *actualLineCount is set to the number of lines needed.  \t\n            </remarks>\t\n            <returns>If the method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code. </returns>\n            <unmanaged>HRESULT IDWriteTextLayout::GetLineMetrics([Out, Buffer, Optional] DWRITE_LINE_METRICS* lineMetrics,[None] int maxLineCount,[Out] int* actualLineCount)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextLayout.GetLocaleName(System.Int32)\">\n            <summary>\t\n            Gets the locale name of the text at the specified position. \t\n            </summary>\t\n            <param name=\"currentPosition\">The position of the text to inspect. </param>\n            <returns>the locale name of the text at the specified position. </returns>\n            <unmanaged>HRESULT IDWriteTextLayout::GetLocaleName([None] int currentPosition,[Out, Buffer] wchar_t* localeName,[None] int nameSize,[Out, Optional] DWRITE_TEXT_RANGE* textRange)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextLayout.GetLocaleName(System.Int32,SharpDX.DirectWrite.TextRange@)\">\n            <summary>\t\n            Gets the locale name of the text at the specified position. \t\n            </summary>\t\n            <param name=\"currentPosition\">The position of the text to inspect. </param>\n            <param name=\"textRange\">The range of text that has the same  formatting as the text at the position specified by currentPosition.  This means the run has the exact  formatting as the position specified, including but not limited to the locale name. </param>\n            <returns>the locale name of the text at the specified position. </returns>\n            <unmanaged>HRESULT IDWriteTextLayout::GetLocaleName([None] int currentPosition,[Out, Buffer] wchar_t* localeName,[None] int nameSize,[Out, Optional] DWRITE_TEXT_RANGE* textRange)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextLayout.HasStrikethrough(System.Int32)\">\n            <summary>\t\n            Get the strikethrough presence of the text at the specified position. \t\n            </summary>\t\n            <param name=\"currentPosition\">The position of the text to inspect. </param>\n            <returns>A Boolean  flag that indicates whether strikethrough is present at the position indicated by currentPosition. </returns>\n            <unmanaged>HRESULT IDWriteTextLayout::GetStrikethrough([None] int currentPosition,[Out] BOOL* hasStrikethrough,[Out, Optional] DWRITE_TEXT_RANGE* textRange)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextLayout.GetTypography(System.Int32)\">\n            <summary>\t\n            Gets the typography setting of the text at the specified position. \t\n            </summary>\t\n            <param name=\"currentPosition\">The position of the text to inspect. </param>\n            <returns>a  reference to the current typography setting. </returns>\n            <unmanaged>HRESULT IDWriteTextLayout::GetTypography([None] int currentPosition,[Out] IDWriteTypography** typography,[Out, Optional] DWRITE_TEXT_RANGE* textRange)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextLayout.HasUnderline(System.Int32)\">\n            <summary>\t\n            Gets the underline presence of the text at the specified position. \t\n            </summary>\t\n            <param name=\"currentPosition\">The current text position. </param>\n            <returns>A Boolean  flag that indicates whether underline is present at the position indicated by currentPosition. </returns>\n            <unmanaged>HRESULT IDWriteTextLayout::GetUnderline([None] int currentPosition,[Out] BOOL* hasUnderline,[Out, Optional] DWRITE_TEXT_RANGE* textRange)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextLayout.HitTestTextRange(System.Int32,System.Int32,System.Single,System.Single)\">\n            <summary>\t\n            The application calls this function to get a set of hit-test metrics corresponding to a range of text positions. \n            One of the main usages is to implement highlight selection of the text string. \n            The function returns E_NOT_SUFFICIENT_BUFFER, which is equivalent to HRESULT_FROM_WIN32(ERROR_INSUFFICIENT_BUFFER), \n            when the buffer size of hitTestMetrics is too small to hold all the regions calculated by the function. \n            In this situation, the function sets the output value *actualHitTestMetricsCount to the number of geometries calculated. \n            The application is responsible for allocating a new buffer of greater size and calling the function again. \n            A good value to use as an initial value for maxHitTestMetricsCount may be calculated from the following equation: \n            maxHitTestMetricsCount = lineCount * maxBidiReorderingDepth where lineCount is obtained from the value of the output argument *actualLineCount (from the function IDWriteTextLayout::GetLineLengths), and the maxBidiReorderingDepth value from the DWRITE_TEXT_METRICS structure of the output argument *textMetrics (from the function IDWriteFactory::CreateTextLayout). \t\n            </summary>\t\n            <param name=\"textPosition\">The first text position of the specified range. </param>\n            <param name=\"textLength\">The number of positions of the specified range. </param>\n            <param name=\"originX\">The origin pixel location X at the left of the layout box. This offset is added to the hit-test metrics returned. </param>\n            <param name=\"originY\">The origin pixel location Y at the top of the layout box. This offset is added to the hit-test metrics returned. </param>\n            <returns>a reference to a buffer of the output geometry fully enclosing the specified position range.  The buffer must be at least as large as maxHitTestMetricsCount. </returns>\n            <unmanaged>HRESULT IDWriteTextLayout::HitTestTextRange([None] int textPosition,[None] int textLength,[None] float originX,[None] float originY,[Out, Buffer, Optional] DWRITE_HIT_TEST_METRICS* hitTestMetrics,[None] int maxHitTestMetricsCount,[Out] int* actualHitTestMetricsCount)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextLayout.SetInlineObject(SharpDX.DirectWrite.InlineObject,SharpDX.DirectWrite.TextRange)\">\n            <summary>\t\n            Sets the inline object. \t\n            </summary>\t\n            <remarks>\t\n            The application may call this function to specify the set of properties describing an application-defined inline object for specific range.  This inline object applies to the specified range and will be passed back to the application by way of the DrawInlineObject callback when the range is drawn. Any text in that range will be suppressed.  \t\n            </remarks>\t\n            <param name=\"inlineObject\">An application-defined inline object.  </param>\n            <param name=\"textRange\">Text range to which this change applies. </param>\n            <returns>If the method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code. </returns>\n            <unmanaged>HRESULT IDWriteTextLayout::SetInlineObject([None] IDWriteInlineObject* inlineObject,[None] DWRITE_TEXT_RANGE textRange)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextLayout.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectWrite.TextLayout\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextLayout.op_Explicit(System.IntPtr)~SharpDX.DirectWrite.TextLayout\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.DirectWrite.TextLayout\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextLayout.SetMaxWidth(System.Single)\">\n            <summary>\t\n            <p> Sets the layout maximum width.</p>\t\n            </summary>\t\n            <param name=\"maxWidth\"><dd> <p>A value that indicates the maximum width of the layout box.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextLayout::SetMaxWidth']/*\"/>\t\n            <msdn-id>dd371511</msdn-id>\t\n            <unmanaged>HRESULT IDWriteTextLayout::SetMaxWidth([In] float maxWidth)</unmanaged>\t\n            <unmanaged-short>IDWriteTextLayout::SetMaxWidth</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextLayout.SetMaxHeight(System.Single)\">\n            <summary>\t\n            <p> Sets the layout maximum height. </p>\t\n            </summary>\t\n            <param name=\"maxHeight\"><dd> <p>A value that indicates the maximum height of the layout box. </p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextLayout::SetMaxHeight']/*\"/>\t\n            <msdn-id>dd371507</msdn-id>\t\n            <unmanaged>HRESULT IDWriteTextLayout::SetMaxHeight([In] float maxHeight)</unmanaged>\t\n            <unmanaged-short>IDWriteTextLayout::SetMaxHeight</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextLayout.SetFontCollection(SharpDX.DirectWrite.FontCollection,SharpDX.DirectWrite.TextRange)\">\n            <summary>\t\n            <p> Sets the font collection. </p>\t\n            </summary>\t\n            <param name=\"fontCollection\"><dd> <p>The font collection to set.</p> </dd></param>\t\n            <param name=\"textRange\"><dd> <p>Text range to which this change applies.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextLayout::SetFontCollection']/*\"/>\t\n            <msdn-id>dd371481</msdn-id>\t\n            <unmanaged>HRESULT IDWriteTextLayout::SetFontCollection([In] IDWriteFontCollection* fontCollection,[In] DWRITE_TEXT_RANGE textRange)</unmanaged>\t\n            <unmanaged-short>IDWriteTextLayout::SetFontCollection</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextLayout.SetFontFamilyName(System.String,SharpDX.DirectWrite.TextRange)\">\n            <summary>\t\n            <p> Sets null-terminated font family name for text within a specified  text range. </p>\t\n            </summary>\t\n            <param name=\"fontFamilyName\"><dd> <p>The font family name that applies to the entire text string within the range specified by <em>textRange</em>.</p> </dd></param>\t\n            <param name=\"textRange\"><dd> <p>Text range to which this change applies.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextLayout::SetFontFamilyName']/*\"/>\t\n            <msdn-id>dd371487</msdn-id>\t\n            <unmanaged>HRESULT IDWriteTextLayout::SetFontFamilyName([In, Buffer] const wchar_t* fontFamilyName,[In] DWRITE_TEXT_RANGE textRange)</unmanaged>\t\n            <unmanaged-short>IDWriteTextLayout::SetFontFamilyName</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextLayout.SetFontWeight(SharpDX.DirectWrite.FontWeight,SharpDX.DirectWrite.TextRange)\">\n            <summary>\t\n            <p> Sets the font weight for text within a text range specified by a <strong><see cref=\"T:SharpDX.DirectWrite.TextRange\"/></strong> structure. </p>\t\n            </summary>\t\n            <param name=\"fontWeight\">No documentation.</param>\t\n            <param name=\"textRange\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>The font weight can be set to one of the predefined font weight values provided in the <strong><see cref=\"T:SharpDX.DirectWrite.FontWeight\"/></strong> enumeration or an integer from 1 to 999.  Values outside this range will cause the method to fail with an <strong>E_INVALIDARG</strong> return value.</p><p>The following illustration shows an example of Normal and UltraBold weights for the Palatino Linotype typeface.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextLayout::SetFontWeight']/*\"/>\t\n            <msdn-id>dd371498</msdn-id>\t\n            <unmanaged>HRESULT IDWriteTextLayout::SetFontWeight([In] DWRITE_FONT_WEIGHT fontWeight,[In] DWRITE_TEXT_RANGE textRange)</unmanaged>\t\n            <unmanaged-short>IDWriteTextLayout::SetFontWeight</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextLayout.SetFontStyle(SharpDX.DirectWrite.FontStyle,SharpDX.DirectWrite.TextRange)\">\n            <summary>\t\n            <p> Sets the font style for  text within a text range specified by a <strong><see cref=\"T:SharpDX.DirectWrite.TextRange\"/></strong> structure.</p>\t\n            </summary>\t\n            <param name=\"fontStyle\">No documentation.</param>\t\n            <param name=\"textRange\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>The font style can be set to Normal, Italic or Oblique. The following illustration shows  three styles for the Palatino font.  For more information, see <strong><see cref=\"T:SharpDX.DirectWrite.FontStyle\"/></strong>.</p><p></p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextLayout::SetFontStyle']/*\"/>\t\n            <msdn-id>dd371495</msdn-id>\t\n            <unmanaged>HRESULT IDWriteTextLayout::SetFontStyle([In] DWRITE_FONT_STYLE fontStyle,[In] DWRITE_TEXT_RANGE textRange)</unmanaged>\t\n            <unmanaged-short>IDWriteTextLayout::SetFontStyle</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextLayout.SetFontStretch(SharpDX.DirectWrite.FontStretch,SharpDX.DirectWrite.TextRange)\">\n            <summary>\t\n            <p> Sets the  font stretch for text within a specified text range. </p>\t\n            </summary>\t\n            <param name=\"fontStretch\"><dd> <p>A value which indicates the type of font stretch for text within the range specified by <em>textRange</em>.</p> </dd></param>\t\n            <param name=\"textRange\"><dd> <p>Text range to which this change applies.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextLayout::SetFontStretch']/*\"/>\t\n            <msdn-id>dd371493</msdn-id>\t\n            <unmanaged>HRESULT IDWriteTextLayout::SetFontStretch([In] DWRITE_FONT_STRETCH fontStretch,[In] DWRITE_TEXT_RANGE textRange)</unmanaged>\t\n            <unmanaged-short>IDWriteTextLayout::SetFontStretch</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextLayout.SetFontSize(System.Single,SharpDX.DirectWrite.TextRange)\">\n            <summary>\t\n            <p>Sets the font size in DIP units for text within a specified text range. </p>\t\n            </summary>\t\n            <param name=\"fontSize\"><dd> <p>The  font size in DIP units to be set for   text in the range specified by <em>textRange</em>. </p> </dd></param>\t\n            <param name=\"textRange\"><dd> <p>Text range to which this change applies.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextLayout::SetFontSize']/*\"/>\t\n            <msdn-id>dd371490</msdn-id>\t\n            <unmanaged>HRESULT IDWriteTextLayout::SetFontSize([In] float fontSize,[In] DWRITE_TEXT_RANGE textRange)</unmanaged>\t\n            <unmanaged-short>IDWriteTextLayout::SetFontSize</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextLayout.SetUnderline(SharpDX.Bool,SharpDX.DirectWrite.TextRange)\">\n            <summary>\t\n            <p>Sets underlining for text within a specified text range. </p>\t\n            </summary>\t\n            <param name=\"hasUnderline\"><dd> <p>A Boolean flag that indicates whether underline takes place within a specified text range.</p> </dd></param>\t\n            <param name=\"textRange\"><dd> <p>Text range to which this change applies.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextLayout::SetUnderline']/*\"/>\t\n            <msdn-id>dd371518</msdn-id>\t\n            <unmanaged>HRESULT IDWriteTextLayout::SetUnderline([In] BOOL hasUnderline,[In] DWRITE_TEXT_RANGE textRange)</unmanaged>\t\n            <unmanaged-short>IDWriteTextLayout::SetUnderline</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextLayout.SetStrikethrough(SharpDX.Bool,SharpDX.DirectWrite.TextRange)\">\n            <summary>\t\n            <p>Sets strikethrough for text within a specified text range. </p>\t\n            </summary>\t\n            <param name=\"hasStrikethrough\"><dd> <p>A Boolean flag that indicates whether strikethrough takes place in the range specified by <em>textRange</em>.</p> </dd></param>\t\n            <param name=\"textRange\"><dd> <p>Text range to which this change applies.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextLayout::SetStrikethrough']/*\"/>\t\n            <msdn-id>dd371514</msdn-id>\t\n            <unmanaged>HRESULT IDWriteTextLayout::SetStrikethrough([In] BOOL hasStrikethrough,[In] DWRITE_TEXT_RANGE textRange)</unmanaged>\t\n            <unmanaged-short>IDWriteTextLayout::SetStrikethrough</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextLayout.SetDrawingEffect_(System.IntPtr,SharpDX.DirectWrite.TextRange)\">\n            <summary>\t\n            <p> Sets the application-defined drawing effect. </p>\t\n            </summary>\t\n            <param name=\"drawingEffect\"><dd> <p>Application-defined drawing effects that apply to the range. This data object will be passed back to the application's drawing callbacks for final rendering.</p> </dd></param>\t\n            <param name=\"textRange\"><dd> <p>The text range to which this change applies.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>An <strong><see cref=\"T:SharpDX.Direct2D1.Brush\"/></strong>, such as a color or gradient brush, can be set as a drawing effect if you are using the <strong><see cref=\"M:SharpDX.Direct2D1.RenderTarget.DrawTextLayout(SharpDX.DrawingPointF,SharpDX.DirectWrite.TextLayout,SharpDX.Direct2D1.Brush,SharpDX.Direct2D1.DrawTextOptions)\"/></strong> to draw text and that brush will be used to draw the specified range of text.</p><p> This drawing effect is associated with the specified range and will be passed back to the application by way of the callback when the range is drawn at drawing time. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextLayout::SetDrawingEffect']/*\"/>\t\n            <msdn-id>dd371477</msdn-id>\t\n            <unmanaged>HRESULT IDWriteTextLayout::SetDrawingEffect([In] void* drawingEffect,[In] DWRITE_TEXT_RANGE textRange)</unmanaged>\t\n            <unmanaged-short>IDWriteTextLayout::SetDrawingEffect</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextLayout.SetInlineObject_(System.IntPtr,SharpDX.DirectWrite.TextRange)\">\n            <summary>\t\n            <p> Sets the inline object. </p>\t\n            </summary>\t\n            <param name=\"inlineObject\"><dd> <p>An application-defined inline object. </p> </dd></param>\t\n            <param name=\"textRange\"><dd> <p>Text range to which this change applies.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>The application may call this function to specify the set of properties describing an application-defined inline object for specific range.</p><p> This inline object applies to the specified range and will be passed back to the application by way of the DrawInlineObject callback when the range is drawn. Any text in that range will be suppressed. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextLayout::SetInlineObject']/*\"/>\t\n            <msdn-id>dd371500</msdn-id>\t\n            <unmanaged>HRESULT IDWriteTextLayout::SetInlineObject([In] IDWriteInlineObject* inlineObject,[In] DWRITE_TEXT_RANGE textRange)</unmanaged>\t\n            <unmanaged-short>IDWriteTextLayout::SetInlineObject</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextLayout.SetTypography(SharpDX.DirectWrite.Typography,SharpDX.DirectWrite.TextRange)\">\n            <summary>\t\n            <p> Sets  font typography features for text within a specified text range. </p>\t\n            </summary>\t\n            <param name=\"typography\"><dd> <p>Pointer to font typography settings. </p> </dd></param>\t\n            <param name=\"textRange\"><dd> <p>Text range to which this change applies.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextLayout::SetTypography']/*\"/>\t\n            <msdn-id>dd371517</msdn-id>\t\n            <unmanaged>HRESULT IDWriteTextLayout::SetTypography([In] IDWriteTypography* typography,[In] DWRITE_TEXT_RANGE textRange)</unmanaged>\t\n            <unmanaged-short>IDWriteTextLayout::SetTypography</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextLayout.SetLocaleName(System.String,SharpDX.DirectWrite.TextRange)\">\n            <summary>\t\n            <p> Sets the locale name for text within a specified text range.</p>\t\n            </summary>\t\n            <param name=\"localeName\"><dd> <p>A null-terminated locale name string.</p> </dd></param>\t\n            <param name=\"textRange\"><dd> <p>Text range to which this change applies.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextLayout::SetLocaleName']/*\"/>\t\n            <msdn-id>dd371503</msdn-id>\t\n            <unmanaged>HRESULT IDWriteTextLayout::SetLocaleName([In, Buffer] const wchar_t* localeName,[In] DWRITE_TEXT_RANGE textRange)</unmanaged>\t\n            <unmanaged-short>IDWriteTextLayout::SetLocaleName</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextLayout.GetMaxWidth\">\n            <summary>\t\n            <p> Gets the layout maximum width. </p>\t\n            </summary>\t\n            <returns><p>Returns the layout maximum width.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextLayout::GetMaxWidth']/*\"/>\t\n            <msdn-id>dd316781</msdn-id>\t\n            <unmanaged>float IDWriteTextLayout::GetMaxWidth()</unmanaged>\t\n            <unmanaged-short>IDWriteTextLayout::GetMaxWidth</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextLayout.GetMaxHeight\">\n            <summary>\t\n            <p> Gets the layout maximum height. </p>\t\n            </summary>\t\n            <returns><p>The layout maximum height.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextLayout::GetMaxHeight']/*\"/>\t\n            <msdn-id>dd316776</msdn-id>\t\n            <unmanaged>float IDWriteTextLayout::GetMaxHeight()</unmanaged>\t\n            <unmanaged-short>IDWriteTextLayout::GetMaxHeight</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextLayout.GetFontCollection(System.Int32,SharpDX.DirectWrite.TextRange@)\">\n            <summary>\t\n            <p> Gets the font collection associated with the text at the specified position. </p>\t\n            </summary>\t\n            <param name=\"currentPosition\"><dd> <p>The position of the text to inspect.</p> </dd></param>\t\n            <param name=\"textRange\"><dd> <p>The range of text that has the same  formatting as the text at the position specified by <em>currentPosition</em>.  This means the run has the exact  formatting as the position specified, including but not limited to the underline.</p> </dd></param>\t\n            <returns><dd> <p>Contains an address of a  reference to the current font collection.</p> </dd></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextLayout::GetFontCollection']/*\"/>\t\n            <msdn-id>dd316735</msdn-id>\t\n            <unmanaged>HRESULT IDWriteTextLayout::GetFontCollection([In] unsigned int currentPosition,[Out] IDWriteFontCollection** fontCollection,[Out, Optional] DWRITE_TEXT_RANGE* textRange)</unmanaged>\t\n            <unmanaged-short>IDWriteTextLayout::GetFontCollection</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextLayout.GetFontFamilyNameLength(System.Int32,System.Int32@,SharpDX.DirectWrite.TextRange@)\">\n            <summary>\t\n            <p> Get the length of the font family name at the current position. </p>\t\n            </summary>\t\n            <param name=\"currentPosition\"><dd> <p>The current text position.</p> </dd></param>\t\n            <param name=\"nameLength\"><dd> <p>When this method returns, contains the size of the character array containing the font family name, in character count, not including the terminated <strong><c>null</c></strong> character.</p> </dd></param>\t\n            <param name=\"textRange\"><dd> <p>The range of text that has the same  formatting as the text at the position specified by <em>currentPosition</em>.  This means the run has the exact  formatting as the position specified, including but not limited to the font family.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextLayout::GetFontFamilyNameLength']/*\"/>\t\n            <msdn-id>dd316741</msdn-id>\t\n            <unmanaged>HRESULT IDWriteTextLayout::GetFontFamilyNameLength([In] unsigned int currentPosition,[Out] unsigned int* nameLength,[Out, Optional] DWRITE_TEXT_RANGE* textRange)</unmanaged>\t\n            <unmanaged-short>IDWriteTextLayout::GetFontFamilyNameLength</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextLayout.GetFontFamilyName(System.Int32,System.IntPtr,System.Int32,SharpDX.DirectWrite.TextRange@)\">\n            <summary>\t\n            <p> Copies the font family name of the text at the specified position. </p>\t\n            </summary>\t\n            <param name=\"currentPosition\"><dd> <p>The position of the text to examine.</p> </dd></param>\t\n            <param name=\"fontFamilyName\"><dd> <p>When this method returns, contains an array of characters that receives the current font family name. You must allocate storage for this parameter.</p> </dd></param>\t\n            <param name=\"nameSize\"><dd> <p>The size of the character array in character count including the terminated <strong><c>null</c></strong> character.</p> </dd></param>\t\n            <param name=\"textRange\"><dd> <p>The range of text that has the same  formatting as the text at the position specified by <em>currentPosition</em>.  This means the run has the exact  formatting as the position specified, including but not limited to the font family name.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextLayout::GetFontFamilyName']/*\"/>\t\n            <msdn-id>dd316738</msdn-id>\t\n            <unmanaged>HRESULT IDWriteTextLayout::GetFontFamilyName([In] unsigned int currentPosition,[Out, Buffer] wchar_t* fontFamilyName,[In] unsigned int nameSize,[Out, Optional] DWRITE_TEXT_RANGE* textRange)</unmanaged>\t\n            <unmanaged-short>IDWriteTextLayout::GetFontFamilyName</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextLayout.GetFontWeight(System.Int32,SharpDX.DirectWrite.TextRange@)\">\n            <summary>\t\n            <p> Gets the font weight of the text at the specified position. </p>\t\n            </summary>\t\n            <param name=\"currentPosition\"><dd> <p>The position of the text to inspect.</p> </dd></param>\t\n            <param name=\"textRange\"><dd> <p>The range of text that has the same  formatting as the text at the position specified by <em>currentPosition</em>.  This means the run has the exact  formatting as the position specified, including but not limited to the font weight.</p> </dd></param>\t\n            <returns><dd> <p>When this method returns, contains a value which indicates the type of font weight being applied at the specified position.</p> </dd></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextLayout::GetFontWeight']/*\"/>\t\n            <msdn-id>dd316753</msdn-id>\t\n            <unmanaged>HRESULT IDWriteTextLayout::GetFontWeight([In] unsigned int currentPosition,[Out] DWRITE_FONT_WEIGHT* fontWeight,[Out, Optional] DWRITE_TEXT_RANGE* textRange)</unmanaged>\t\n            <unmanaged-short>IDWriteTextLayout::GetFontWeight</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextLayout.GetFontStyle(System.Int32,SharpDX.DirectWrite.TextRange@)\">\n            <summary>\t\n            <p> Gets the font style (also known as slope) of the text at the specified position. </p>\t\n            </summary>\t\n            <param name=\"currentPosition\"><dd> <p>The position of the text to inspect.</p> </dd></param>\t\n            <param name=\"textRange\"><dd> <p>The range of text that has the same  formatting as the text at the position specified by <em>currentPosition</em>.  This means the run has the exact  formatting as the position specified, including but not limited to the font style.</p> </dd></param>\t\n            <returns><dd> <p>When this method returns, contains a value which indicates the type of font style (also known as slope or incline) being applied at the specified position.</p> </dd></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextLayout::GetFontStyle']/*\"/>\t\n            <msdn-id>dd316750</msdn-id>\t\n            <unmanaged>HRESULT IDWriteTextLayout::GetFontStyle([In] unsigned int currentPosition,[Out] DWRITE_FONT_STYLE* fontStyle,[Out, Optional] DWRITE_TEXT_RANGE* textRange)</unmanaged>\t\n            <unmanaged-short>IDWriteTextLayout::GetFontStyle</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextLayout.GetFontStretch(System.Int32,SharpDX.DirectWrite.TextRange@)\">\n            <summary>\t\n            <p> Gets the font stretch of the text at the specified position. </p>\t\n            </summary>\t\n            <param name=\"currentPosition\"><dd> <p>The position of the text to inspect.</p> </dd></param>\t\n            <param name=\"textRange\"><dd> <p>The range of text that has the same  formatting as the text at the position specified by <em>currentPosition</em>.  This means the run has the exact  formatting as the position specified, including but not limited to the font stretch.</p> </dd></param>\t\n            <returns><dd> <p>When this method returns, contains a value which indicates the type of font stretch (also known as width) being applied at the specified position.</p> </dd></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextLayout::GetFontStretch']/*\"/>\t\n            <msdn-id>dd316747</msdn-id>\t\n            <unmanaged>HRESULT IDWriteTextLayout::GetFontStretch([In] unsigned int currentPosition,[Out] DWRITE_FONT_STRETCH* fontStretch,[Out, Optional] DWRITE_TEXT_RANGE* textRange)</unmanaged>\t\n            <unmanaged-short>IDWriteTextLayout::GetFontStretch</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextLayout.GetFontSize(System.Int32,SharpDX.DirectWrite.TextRange@)\">\n            <summary>\t\n            <p> Gets the font em height of the text at the specified position. </p>\t\n            </summary>\t\n            <param name=\"currentPosition\"><dd> <p>The position of the text to inspect.</p> </dd></param>\t\n            <param name=\"textRange\"><dd> <p>The range of text that has the same  formatting as the text at the position specified by <em>currentPosition</em>.  This means the run has the exact  formatting as the position specified, including but not limited to the font size.</p> </dd></param>\t\n            <returns><dd> <p>When this method returns, contains the size of the font in ems  of the text at the specified position.</p> </dd></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextLayout::GetFontSize']/*\"/>\t\n            <msdn-id>dd316745</msdn-id>\t\n            <unmanaged>HRESULT IDWriteTextLayout::GetFontSize([In] unsigned int currentPosition,[Out] float* fontSize,[Out, Optional] DWRITE_TEXT_RANGE* textRange)</unmanaged>\t\n            <unmanaged-short>IDWriteTextLayout::GetFontSize</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextLayout.HasUnderline(System.Int32,SharpDX.DirectWrite.TextRange@)\">\n            <summary>\t\n            <p> Gets the underline presence of the text at the specified position. </p>\t\n            </summary>\t\n            <param name=\"currentPosition\"><dd> <p>The current text position.</p> </dd></param>\t\n            <param name=\"textRange\"><dd> <p>The range of text that has the same  formatting as the text at the position specified by <em>currentPosition</em>.  This means the run has the exact  formatting as the position specified, including but not limited to the underline.</p> </dd></param>\t\n            <returns><dd> <p>A Boolean  flag that indicates whether underline is present at the position indicated by <em>currentPosition</em>.</p> </dd></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextLayout::GetUnderline']/*\"/>\t\n            <msdn-id>dd371463</msdn-id>\t\n            <unmanaged>HRESULT IDWriteTextLayout::GetUnderline([In] unsigned int currentPosition,[Out] BOOL* hasUnderline,[Out, Optional] DWRITE_TEXT_RANGE* textRange)</unmanaged>\t\n            <unmanaged-short>IDWriteTextLayout::GetUnderline</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextLayout.HasStrikethrough(System.Int32,SharpDX.DirectWrite.TextRange@)\">\n            <summary>\t\n            <p> Get the strikethrough presence of the text at the specified position. </p>\t\n            </summary>\t\n            <param name=\"currentPosition\"><dd> <p>The position of the text to inspect.</p> </dd></param>\t\n            <param name=\"textRange\"><dd> <p>Contains the range of text that has the same  formatting as the text at the position specified by <em>currentPosition</em>.  This means the run has the exact  formatting as the position specified, including but not limited to strikethrough.</p> </dd></param>\t\n            <returns><dd> <p>A Boolean  flag that indicates whether strikethrough is present at the position indicated by <em>currentPosition</em>.</p> </dd></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextLayout::GetStrikethrough']/*\"/>\t\n            <msdn-id>dd316793</msdn-id>\t\n            <unmanaged>HRESULT IDWriteTextLayout::GetStrikethrough([In] unsigned int currentPosition,[Out] BOOL* hasStrikethrough,[Out, Optional] DWRITE_TEXT_RANGE* textRange)</unmanaged>\t\n            <unmanaged-short>IDWriteTextLayout::GetStrikethrough</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextLayout.GetDrawingEffect_(System.Int32,SharpDX.DirectWrite.TextRange@)\">\n            <summary>\t\n            <p> Gets the application-defined drawing effect at the specified text position. </p>\t\n            </summary>\t\n            <param name=\"currentPosition\"><dd> <p>The position of the text whose drawing effect is to be retrieved.</p> </dd></param>\t\n            <param name=\"textRange\"><dd> <p>Contains the range of text that has the same  formatting as the text at the position specified by <em>currentPosition</em>.  This means the run has the exact  formatting as the position specified, including but not limited to the drawing effect.</p> </dd></param>\t\n            <returns><dd> <p>When this method returns, contains an address of a reference to  the current application-defined drawing effect. Usually this effect is a foreground brush that  is used in glyph drawing.</p> </dd></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextLayout::GetDrawingEffect']/*\"/>\t\n            <msdn-id>dd316732</msdn-id>\t\n            <unmanaged>HRESULT IDWriteTextLayout::GetDrawingEffect([In] unsigned int currentPosition,[Out] void** drawingEffect,[Out, Optional] DWRITE_TEXT_RANGE* textRange)</unmanaged>\t\n            <unmanaged-short>IDWriteTextLayout::GetDrawingEffect</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextLayout.GetInlineObject(System.Int32,SharpDX.DirectWrite.TextRange@)\">\n            <summary>\t\n            <p> Gets the inline object at the specified position. </p>\t\n            </summary>\t\n            <param name=\"currentPosition\"><dd> <p>The specified text position.</p> </dd></param>\t\n            <param name=\"textRange\"><dd> <p>The range of text that has the same  formatting as the text at the position specified by <em>currentPosition</em>.  This means the run has the exact  formatting as the position specified, including but not limited to the inline object.</p> </dd></param>\t\n            <returns><dd> <p>Contains the application-defined inline object.</p> </dd></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextLayout::GetInlineObject']/*\"/>\t\n            <msdn-id>dd316758</msdn-id>\t\n            <unmanaged>HRESULT IDWriteTextLayout::GetInlineObject([In] unsigned int currentPosition,[Out] IDWriteInlineObject** inlineObject,[Out, Optional] DWRITE_TEXT_RANGE* textRange)</unmanaged>\t\n            <unmanaged-short>IDWriteTextLayout::GetInlineObject</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextLayout.GetTypography(System.Int32,SharpDX.DirectWrite.TextRange@)\">\n            <summary>\t\n            <p> Gets the typography setting of the text at the specified position. </p>\t\n            </summary>\t\n            <param name=\"currentPosition\"><dd> <p>The position of the text to inspect.</p> </dd></param>\t\n            <param name=\"textRange\"><dd> <p>The range of text that has the same  formatting as the text at the position specified by <em>currentPosition</em>.  This means the run has the exact  formatting as the position specified, including but not limited to the typography.</p> </dd></param>\t\n            <returns><dd> <p>When this method returns, contains an address of a  reference to the current typography setting.</p> </dd></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextLayout::GetTypography']/*\"/>\t\n            <msdn-id>dd371459</msdn-id>\t\n            <unmanaged>HRESULT IDWriteTextLayout::GetTypography([In] unsigned int currentPosition,[Out] IDWriteTypography** typography,[Out, Optional] DWRITE_TEXT_RANGE* textRange)</unmanaged>\t\n            <unmanaged-short>IDWriteTextLayout::GetTypography</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextLayout.GetLocaleNameLength(System.Int32,System.Int32@,SharpDX.DirectWrite.TextRange@)\">\n            <summary>\t\n            <p> Gets the length of the locale name of the text at the specified position. </p>\t\n            </summary>\t\n            <param name=\"currentPosition\"><dd> <p>The position of the text to inspect.</p> </dd></param>\t\n            <param name=\"nameLength\"><dd> <p>Size of the character array, in character count, not including the terminated <strong><c>null</c></strong> character.</p> </dd></param>\t\n            <param name=\"textRange\"><dd> <p>The range of text that has the same  formatting as the text at the position specified by <em>currentPosition</em>.  This means the run has the exact  formatting as the position specified, including but not limited to the locale name.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextLayout::GetLocaleNameLength']/*\"/>\t\n            <msdn-id>dd316771</msdn-id>\t\n            <unmanaged>HRESULT IDWriteTextLayout::GetLocaleNameLength([In] unsigned int currentPosition,[Out] unsigned int* nameLength,[Out, Optional] DWRITE_TEXT_RANGE* textRange)</unmanaged>\t\n            <unmanaged-short>IDWriteTextLayout::GetLocaleNameLength</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextLayout.GetLocaleName(System.Int32,System.IntPtr,System.Int32,SharpDX.DirectWrite.TextRange@)\">\n            <summary>\t\n            <p> Gets the locale name of the text at the specified position. </p>\t\n            </summary>\t\n            <param name=\"currentPosition\"><dd> <p>The position of the text to inspect.</p> </dd></param>\t\n            <param name=\"localeName\"><dd> <p>When this method returns, contains the character array receiving the current locale name.</p> </dd></param>\t\n            <param name=\"nameSize\"><dd> <p>Size of the character array, in character count, including the terminated <strong><c>null</c></strong> character.</p> </dd></param>\t\n            <param name=\"textRange\"><dd> <p>The range of text that has the same  formatting as the text at the position specified by <em>currentPosition</em>.  This means the run has the exact  formatting as the position specified, including but not limited to the locale name.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextLayout::GetLocaleName']/*\"/>\t\n            <msdn-id>dd316767</msdn-id>\t\n            <unmanaged>HRESULT IDWriteTextLayout::GetLocaleName([In] unsigned int currentPosition,[Out, Buffer] wchar_t* localeName,[In] unsigned int nameSize,[Out, Optional] DWRITE_TEXT_RANGE* textRange)</unmanaged>\t\n            <unmanaged-short>IDWriteTextLayout::GetLocaleName</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextLayout.Draw_(System.IntPtr,System.IntPtr,System.Single,System.Single)\">\n            <summary>\t\n            <p> Draws text using the specified client drawing context.</p>\t\n            </summary>\t\n            <param name=\"clientDrawingContext\"><dd> <p>An application-defined drawing context. </p> </dd></param>\t\n            <param name=\"renderer\"><dd> <p>Pointer to the set of callback functions used to draw parts of a text string.</p> </dd></param>\t\n            <param name=\"originX\"><dd> <p>The x-coordinate of the layout's left side.</p> </dd></param>\t\n            <param name=\"originY\"><dd> <p>The y-coordinate of the layout's top side.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>To draw text with this method, a <em>textLayout</em> object needs to be created by the application using <strong><see cref=\"M:SharpDX.DirectWrite.Factory.CreateTextLayout(System.String,System.Int32,SharpDX.DirectWrite.TextFormat,System.Single,System.Single,SharpDX.DirectWrite.TextLayout)\"/></strong>. </p><p>After the <em>textLayout</em> object is obtained, the application calls the  <strong><see cref=\"M:SharpDX.DirectWrite.TextLayout.Draw_(System.IntPtr,System.IntPtr,System.Single,System.Single)\"/></strong> method  to draw the text, decorations, and inline objects. The actual drawing is done through the callback interface passed in as the <em>textRenderer</em> argument; there, the corresponding DrawGlyphRun API is called. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextLayout::Draw']/*\"/>\t\n            <msdn-id>dd316726</msdn-id>\t\n            <unmanaged>HRESULT IDWriteTextLayout::Draw([In, Optional] void* clientDrawingContext,[In] IDWriteTextRenderer* renderer,[In] float originX,[In] float originY)</unmanaged>\t\n            <unmanaged-short>IDWriteTextLayout::Draw</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextLayout.GetLineMetrics(SharpDX.DirectWrite.LineMetrics[],System.Int32,System.Int32@)\">\n            <summary>\t\n            <p> Retrieves the information about each individual text line of the  text string. </p>\t\n            </summary>\t\n            <param name=\"lineMetrics\"><dd> <p>When this method returns, contains a reference to an array of structures containing various calculated length values of individual text lines.</p> </dd></param>\t\n            <param name=\"maxLineCount\"><dd> <p>The maximum size of the <em>lineMetrics</em> array.</p> </dd></param>\t\n            <param name=\"actualLineCount\"><dd> <p>When this method returns, contains the actual size of the <em>lineMetrics</em> array that is needed.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p> If <em>maxLineCount</em> is not large enough E_NOT_SUFFICIENT_BUFFER, which is equivalent to HRESULT_FROM_WIN32(<see cref=\"F:SharpDX.Win32.ErrorCode.InsufficientBuffer\"/>), is returned and <em>*actualLineCount</em> is set to the number of lines needed. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextLayout::GetLineMetrics']/*\"/>\t\n            <msdn-id>dd316763</msdn-id>\t\n            <unmanaged>HRESULT IDWriteTextLayout::GetLineMetrics([Out, Buffer, Optional] DWRITE_LINE_METRICS* lineMetrics,[In] unsigned int maxLineCount,[Out] unsigned int* actualLineCount)</unmanaged>\t\n            <unmanaged-short>IDWriteTextLayout::GetLineMetrics</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextLayout.GetMetrics(SharpDX.DirectWrite.TextMetrics@)\">\n            <summary>\t\n            <p> Retrieves overall metrics for the formatted string. </p>\t\n            </summary>\t\n            <param name=\"textMetrics\"><dd> <p>When this method returns, contains the measured distances of text and associated content after being formatted.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextLayout::GetMetrics']/*\"/>\t\n            <msdn-id>dd316785</msdn-id>\t\n            <unmanaged>HRESULT IDWriteTextLayout::GetMetrics([Out] DWRITE_TEXT_METRICS* textMetrics)</unmanaged>\t\n            <unmanaged-short>IDWriteTextLayout::GetMetrics</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextLayout.GetOverhangMetrics(SharpDX.DirectWrite.OverhangMetrics@)\">\n            <summary>\t\n            <p>Returns the overhangs (in DIPs) of the layout and all objects contained in it, including text glyphs and inline objects.</p>\t\n            </summary>\t\n            <param name=\"overhangs\"><dd> <p>Overshoots of visible extents (in DIPs) outside the layout.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>Underlines and strikethroughs do not contribute to the black box determination, since these are actually drawn by the renderer, which is allowed to draw them in any variety of styles.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextLayout::GetOverhangMetrics']/*\"/>\t\n            <msdn-id>dd316790</msdn-id>\t\n            <unmanaged>HRESULT IDWriteTextLayout::GetOverhangMetrics([Out] DWRITE_OVERHANG_METRICS* overhangs)</unmanaged>\t\n            <unmanaged-short>IDWriteTextLayout::GetOverhangMetrics</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextLayout.GetClusterMetrics(SharpDX.DirectWrite.ClusterMetrics[],System.Int32,System.Int32@)\">\n            <summary>\t\n            <p> Retrieves logical properties and measurements of each glyph cluster. </p>\t\n            </summary>\t\n            <param name=\"clusterMetrics\"><dd> <p>When this method returns, contains metrics, such as line-break or total advance width, for a glyph cluster.</p> </dd></param>\t\n            <param name=\"maxClusterCount\"><dd> <p>The maximum size of the <em>clusterMetrics</em> array.</p> </dd></param>\t\n            <param name=\"actualClusterCount\"><dd> <p>When this method returns, contains the actual size of the <em>clusterMetrics</em> array that is needed.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p> If <em>maxClusterCount</em> is not large enough, then E_NOT_SUFFICIENT_BUFFER, which is equivalent to HRESULT_FROM_WIN32(<see cref=\"F:SharpDX.Win32.ErrorCode.InsufficientBuffer\"/>), is returned and <em>actualClusterCount</em> is set to the number of clusters needed. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextLayout::GetClusterMetrics']/*\"/>\t\n            <msdn-id>dd316729</msdn-id>\t\n            <unmanaged>HRESULT IDWriteTextLayout::GetClusterMetrics([Out, Buffer, Optional] DWRITE_CLUSTER_METRICS* clusterMetrics,[In] unsigned int maxClusterCount,[Out] unsigned int* actualClusterCount)</unmanaged>\t\n            <unmanaged-short>IDWriteTextLayout::GetClusterMetrics</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextLayout.DetermineMinWidth\">\n            <summary>\t\n            <p>Determines the minimum possible width the layout can be set to without emergency breaking between the characters of whole words occurring.</p>\t\n            </summary>\t\n            <returns><dd> <p>Minimum width.</p> </dd></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextLayout::DetermineMinWidth']/*\"/>\t\n            <msdn-id>dd316723</msdn-id>\t\n            <unmanaged>HRESULT IDWriteTextLayout::DetermineMinWidth([Out] float* minWidth)</unmanaged>\t\n            <unmanaged-short>IDWriteTextLayout::DetermineMinWidth</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextLayout.HitTestPoint(System.Single,System.Single,SharpDX.Bool@,SharpDX.Bool@)\">\n            <summary>\t\n            <p> The application calls this function passing in a specific pixel location relative to the top-left location of the layout box and obtains the information about the correspondent hit-test metrics of the text string where the hit-test has occurred. When the specified pixel location is outside the text string, the function sets the output value <em>*isInside</em> to <strong><see cref=\"F:SharpDX.Result.False\"/></strong>. </p>\t\n            </summary>\t\n            <param name=\"pointX\"><dd> <p>The pixel location X to hit-test, relative to the top-left location of the layout box.</p> </dd></param>\t\n            <param name=\"pointY\"><dd> <p>The pixel location Y to hit-test, relative to the top-left location of the layout box.</p> </dd></param>\t\n            <param name=\"isTrailingHit\"><dd> <p>An output flag that indicates whether the hit-test location is at the leading or the trailing side of the character. When the output <em>*isInside</em> value is set to <strong><see cref=\"F:SharpDX.Result.False\"/></strong>, this value is set according to the output <em>hitTestMetrics-&gt;textPosition</em> value to represent the edge closest to the hit-test location.</p> </dd></param>\t\n            <param name=\"isInside\"><dd> <p>An output flag that indicates whether the hit-test location is inside the text string. When <strong><see cref=\"F:SharpDX.Result.False\"/></strong>, the position nearest the text's edge is returned.</p> </dd></param>\t\n            <returns><dd> <p>The output geometry fully enclosing the hit-test location. When the output <em>*isInside</em> value is set to <strong><see cref=\"F:SharpDX.Result.False\"/></strong>, this structure represents the geometry enclosing the edge closest to the hit-test location.</p> </dd></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextLayout::HitTestPoint']/*\"/>\t\n            <msdn-id>dd371464</msdn-id>\t\n            <unmanaged>HRESULT IDWriteTextLayout::HitTestPoint([In] float pointX,[In] float pointY,[Out] BOOL* isTrailingHit,[Out] BOOL* isInside,[Out] DWRITE_HIT_TEST_METRICS* hitTestMetrics)</unmanaged>\t\n            <unmanaged-short>IDWriteTextLayout::HitTestPoint</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextLayout.HitTestTextPosition(System.Int32,SharpDX.Bool,System.Single@,System.Single@)\">\n            <summary>\t\n            <p> The application calls this function to get the pixel location relative to the top-left of the layout box given the text position and the logical side of the position. This function is normally used as part of caret positioning of text where the caret is drawn at the location corresponding to the current text editing position. It may also be used as a way to programmatically obtain the geometry of a particular text position in UI automation. </p>\t\n            </summary>\t\n            <param name=\"textPosition\"><dd> <p>The text position used to get the pixel location.</p> </dd></param>\t\n            <param name=\"isTrailingHit\"><dd> <p>A Boolean flag that indicates whether the pixel location is of the leading or the trailing side of the specified text position.</p> </dd></param>\t\n            <param name=\"ointXRef\"><dd> <p>When this method returns, contains the output pixel location X, relative to the top-left location of the layout box.</p> </dd></param>\t\n            <param name=\"ointYRef\"><dd> <p>When this method returns, contains the output pixel location Y, relative to the top-left location of the layout box.</p> </dd></param>\t\n            <returns><dd> <p>When this method returns, contains the output geometry fully enclosing the specified text position.</p> </dd></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextLayout::HitTestTextPosition']/*\"/>\t\n            <msdn-id>dd371469</msdn-id>\t\n            <unmanaged>HRESULT IDWriteTextLayout::HitTestTextPosition([In] unsigned int textPosition,[In] BOOL isTrailingHit,[Out] float* pointX,[Out] float* pointY,[Out] DWRITE_HIT_TEST_METRICS* hitTestMetrics)</unmanaged>\t\n            <unmanaged-short>IDWriteTextLayout::HitTestTextPosition</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextLayout.HitTestTextRange(System.Int32,System.Int32,System.Single,System.Single,SharpDX.DirectWrite.HitTestMetrics[],System.Int32,System.Int32@)\">\n            <summary>\t\n            <p> The application calls this function to get a set of hit-test metrics corresponding to a range of text positions. One of the main usages is to implement highlight selection of the text string. The function returns E_NOT_SUFFICIENT_BUFFER, which is equivalent to HRESULT_FROM_WIN32(<see cref=\"F:SharpDX.Win32.ErrorCode.InsufficientBuffer\"/>), when the buffer size of hitTestMetrics is too small to hold all the regions calculated by the function. In this situation, the function sets the output value *actualHitTestMetricsCount to the number of geometries calculated. The application is responsible for allocating a new buffer of greater size and calling the function again. A good value to use as an initial value for maxHitTestMetricsCount may be calculated from the following equation: maxHitTestMetricsCount = lineCount * maxBidiReorderingDepth where lineCount is obtained from the value of the output argument *actualLineCount (from the function IDWriteTextLayout::GetLineLengths), and the maxBidiReorderingDepth value from the <see cref=\"T:SharpDX.DirectWrite.TextMetrics\"/> structure of the output argument *textMetrics (from the function <see cref=\"M:SharpDX.DirectWrite.Factory.CreateTextLayout(System.String,System.Int32,SharpDX.DirectWrite.TextFormat,System.Single,System.Single,SharpDX.DirectWrite.TextLayout)\"/>). </p>\t\n            </summary>\t\n            <param name=\"textPosition\"><dd> <p>The first text position of the specified range.</p> </dd></param>\t\n            <param name=\"textLength\"><dd> <p>The number of positions of the specified range.</p> </dd></param>\t\n            <param name=\"originX\"><dd> <p>The origin pixel location X at the left of the layout box. This offset is added to the hit-test metrics returned.</p> </dd></param>\t\n            <param name=\"originY\"><dd> <p>The origin pixel location Y at the top of the layout box. This offset is added to the hit-test metrics returned.</p> </dd></param>\t\n            <param name=\"hitTestMetrics\"><dd> <p>When this method returns, contains a reference to a buffer of the output geometry fully enclosing the specified position range.  The buffer must be at least as large as <em>maxHitTestMetricsCount</em>.</p> </dd></param>\t\n            <param name=\"maxHitTestMetricsCount\"><dd> <p>Maximum number of boxes <em>hitTestMetrics</em> could hold in its buffer memory.</p> </dd></param>\t\n            <param name=\"actualHitTestMetricsCount\"><dd> <p>Actual number of geometries <em>hitTestMetrics</em> holds in its buffer memory.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextLayout::HitTestTextRange']/*\"/>\t\n            <msdn-id>dd371473</msdn-id>\t\n            <unmanaged>HRESULT IDWriteTextLayout::HitTestTextRange([In] unsigned int textPosition,[In] unsigned int textLength,[In] float originX,[In] float originY,[Out, Buffer, Optional] DWRITE_HIT_TEST_METRICS* hitTestMetrics,[In] unsigned int maxHitTestMetricsCount,[Out] unsigned int* actualHitTestMetricsCount)</unmanaged>\t\n            <unmanaged-short>IDWriteTextLayout::HitTestTextRange</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.DirectWrite.TextLayout.MaxWidth\">\n            <summary>\t\n            <p>Gets or sets the layout maximum width. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextLayout::GetMaxWidth']/*\"/>\t\n            <msdn-id>dd316781</msdn-id>\t\n            <unmanaged>GetMaxWidth / SetMaxWidth</unmanaged>\t\n            <unmanaged-short>GetMaxWidth</unmanaged-short>\t\n            <unmanaged>float IDWriteTextLayout::GetMaxWidth()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectWrite.TextLayout.MaxHeight\">\n            <summary>\t\n            <p>Gets or sets the layout maximum height. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextLayout::GetMaxHeight']/*\"/>\t\n            <msdn-id>dd316776</msdn-id>\t\n            <unmanaged>GetMaxHeight / SetMaxHeight</unmanaged>\t\n            <unmanaged-short>GetMaxHeight</unmanaged-short>\t\n            <unmanaged>float IDWriteTextLayout::GetMaxHeight()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectWrite.TextLayout.Metrics\">\n            <summary>\t\n            <p> Retrieves overall metrics for the formatted string. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextLayout::GetMetrics']/*\"/>\t\n            <msdn-id>dd316785</msdn-id>\t\n            <unmanaged>GetMetrics</unmanaged>\t\n            <unmanaged-short>GetMetrics</unmanaged-short>\t\n            <unmanaged>HRESULT IDWriteTextLayout::GetMetrics([Out] DWRITE_TEXT_METRICS* textMetrics)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectWrite.TextLayout.OverhangMetrics\">\n            <summary>\t\n            <p>Returns the overhangs (in DIPs) of the layout and all objects contained in it, including text glyphs and inline objects.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Underlines and strikethroughs do not contribute to the black box determination, since these are actually drawn by the renderer, which is allowed to draw them in any variety of styles.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextLayout::GetOverhangMetrics']/*\"/>\t\n            <msdn-id>dd316790</msdn-id>\t\n            <unmanaged>GetOverhangMetrics</unmanaged>\t\n            <unmanaged-short>GetOverhangMetrics</unmanaged-short>\t\n            <unmanaged>HRESULT IDWriteTextLayout::GetOverhangMetrics([Out] DWRITE_OVERHANG_METRICS* overhangs)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.TextRange\">\n            <summary>\t\n            <p>Specifies a range of text positions where format is applied in the text represented by an <strong><see cref=\"T:SharpDX.DirectWrite.TextLayout\"/></strong> object.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_TEXT_RANGE']/*\"/>\t\n            <msdn-id>dd368137</msdn-id>\t\n            <unmanaged>DWRITE_TEXT_RANGE</unmanaged>\t\n            <unmanaged-short>DWRITE_TEXT_RANGE</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextRange.#ctor(System.Int32,System.Int32)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectWrite.TextRange\"/> struct.\n            </summary>\n            <param name=\"startPosition\">The start position.</param>\n            <param name=\"length\">The length.</param>\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.TextRange.StartPosition\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_TEXT_RANGE::startPosition']/*\"/>\t\n            <unmanaged>unsigned int startPosition</unmanaged>\t\n            <unmanaged-short>unsigned int startPosition</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.TextRange.Length\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_TEXT_RANGE::length']/*\"/>\t\n            <unmanaged>unsigned int length</unmanaged>\t\n            <unmanaged-short>unsigned int length</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.TextRenderer\">\n            <summary>\t\n            <p> Represents a set of application-defined callbacks that perform rendering of text, inline objects, and decorations such as underlines.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTextRenderer']/*\"/>\t\n            <msdn-id>dd371523</msdn-id>\t\n            <unmanaged>IDWriteTextRenderer</unmanaged>\t\n            <unmanaged-short>IDWriteTextRenderer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextRenderer.DrawGlyphRun(System.Object,System.Single,System.Single,SharpDX.Direct2D1.MeasuringMode,SharpDX.DirectWrite.GlyphRun,SharpDX.DirectWrite.GlyphRunDescription,SharpDX.ComObject)\">\n            <summary>\t\n             IDWriteTextLayout::Draw calls this function to instruct the client to render a run of glyphs. \t\n            </summary>\t\n            <remarks>\t\n            The <see cref=\"M:SharpDX.DirectWrite.TextLayout.Draw_(System.IntPtr,System.IntPtr,System.Single,System.Single)\"/> function calls this callback function with all the information about glyphs to render. The application implements this callback by mostly delegating the call to the underlying platform's graphics API such as {{Direct2D}} to draw glyphs on the drawing context. An application that uses GDI can implement this callback in terms of the <see cref=\"M:SharpDX.DirectWrite.BitmapRenderTarget.DrawGlyphRun(System.Single,System.Single,SharpDX.Direct2D1.MeasuringMode,SharpDX.DirectWrite.GlyphRun,SharpDX.DirectWrite.RenderingParams,SharpDX.Color4)\"/> method.\t\n            </remarks>\t\n            <param name=\"clientDrawingContext\">The application-defined drawing context passed to  <see cref=\"M:SharpDX.DirectWrite.TextLayout.Draw_(System.IntPtr,System.IntPtr,System.Single,System.Single)\"/>.</param>\n            <param name=\"baselineOriginX\">The pixel location (X-coordinate) at the baseline origin of the glyph run.</param>\n            <param name=\"baselineOriginY\">The pixel location (Y-coordinate) at the baseline origin of the glyph run.</param>\n            <param name=\"measuringMode\"> The measuring method for glyphs in the run, used with the other properties to determine the rendering mode.</param>\n            <param name=\"glyphRun\">Pointer to the glyph run instance to render. </param>\n            <param name=\"glyphRunDescription\">A pointer to the optional glyph run description instance which contains properties of the characters  associated with this run.</param>\n            <param name=\"clientDrawingEffect\">Application-defined drawing effects for the glyphs to render. Usually this argument represents effects such as the foreground brush filling the interior of text.</param>\n            <returns>If the method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code.</returns>\n            <unmanaged>HRESULT DrawGlyphRun([None] void* clientDrawingContext,[None] FLOAT baselineOriginX,[None] FLOAT baselineOriginY,[None] DWRITE_MEASURING_MODE measuringMode,[In] const DWRITE_GLYPH_RUN* glyphRun,[In] const DWRITE_GLYPH_RUN_DESCRIPTION* glyphRunDescription,[None] IUnknown* clientDrawingEffect)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextRenderer.DrawUnderline(System.Object,System.Single,System.Single,SharpDX.DirectWrite.Underline@,SharpDX.ComObject)\">\n            <summary>\t\n             IDWriteTextLayout::Draw calls this function to instruct the client to draw an underline. \t\n            </summary>\t\n            <remarks>\t\n             A single underline can be broken into multiple calls, depending on how the formatting changes attributes. If font sizes/styles change within an underline, the thickness and offset will be averaged weighted according to characters. To get an appropriate starting pixel position, add underline::offset to the baseline. Otherwise there will be no spacing between the text. The x coordinate will always be passed as the left side, regardless of text directionality. This simplifies drawing and reduces the problem of round-off that could potentially cause gaps or a double stamped alpha blend. To avoid alpha overlap, round the end points to the nearest device pixel. \t\n            </remarks>\t\n            <param name=\"clientDrawingContext\">The application-defined drawing context passed to  IDWriteTextLayout::Draw.</param>\n            <param name=\"baselineOriginX\">The pixel location (X-coordinate) at the baseline origin of the run where underline applies.</param>\n            <param name=\"baselineOriginY\">The pixel location (Y-coordinate) at the baseline origin of the run where underline applies.</param>\n            <param name=\"underline\">Pointer to  a structure containing underline logical information.</param>\n            <param name=\"clientDrawingEffect\"> Application-defined effect to apply to the underline. Usually this argument represents effects such as the foreground brush filling the interior of a line.</param>\n            <returns>If the method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code.</returns>\n            <unmanaged>HRESULT DrawUnderline([None] void* clientDrawingContext,[None] FLOAT baselineOriginX,[None] FLOAT baselineOriginY,[In] const DWRITE_UNDERLINE* underline,[None] IUnknown* clientDrawingEffect)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextRenderer.DrawStrikethrough(System.Object,System.Single,System.Single,SharpDX.DirectWrite.Strikethrough@,SharpDX.ComObject)\">\n            <summary>\t\n             IDWriteTextLayout::Draw calls this function to instruct the client to draw a strikethrough. \t\n            </summary>\t\n            <remarks>\t\n             A single strikethrough can be broken into multiple calls, depending on how the formatting changes attributes. Strikethrough is not averaged across font sizes/styles changes. To get an appropriate starting pixel position, add strikethrough::offset to the baseline. Like underlines, the x coordinate will always be passed as the left side, regardless of text directionality. \t\n            </remarks>\t\n            <param name=\"clientDrawingContext\">The application-defined drawing context passed to  IDWriteTextLayout::Draw.</param>\n            <param name=\"baselineOriginX\">The pixel location (X-coordinate) at the baseline origin of the run where strikethrough applies.</param>\n            <param name=\"baselineOriginY\">The pixel location (Y-coordinate) at the baseline origin of the run where strikethrough applies.</param>\n            <param name=\"strikethrough\">Pointer to  a structure containing strikethrough logical information.</param>\n            <param name=\"clientDrawingEffect\">Application-defined effect to apply to the strikethrough.  Usually this argument represents effects such as the foreground brush filling the interior of a line.</param>\n            <returns>If the method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code.</returns>\n            <unmanaged>HRESULT DrawStrikethrough([None] void* clientDrawingContext,[None] FLOAT baselineOriginX,[None] FLOAT baselineOriginY,[In] const DWRITE_STRIKETHROUGH* strikethrough,[None] IUnknown* clientDrawingEffect)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextRenderer.DrawInlineObject(System.Object,System.Single,System.Single,SharpDX.DirectWrite.InlineObject,System.Boolean,System.Boolean,SharpDX.ComObject)\">\n            <summary>\t\n             IDWriteTextLayout::Draw calls this application callback when it needs to draw an inline object. \t\n            </summary>\t\n            <param name=\"clientDrawingContext\">The application-defined drawing context passed to IDWriteTextLayout::Draw.</param>\n            <param name=\"originX\">X-coordinate at the top-left corner of the inline object.</param>\n            <param name=\"originY\">Y-coordinate at the top-left corner of the inline object.</param>\n            <param name=\"inlineObject\">The application-defined inline object set using IDWriteTextFormat::SetInlineObject.</param>\n            <param name=\"isSideways\">A Boolean flag that indicates whether the object's baseline runs alongside the baseline axis of the line.</param>\n            <param name=\"isRightToLeft\">A Boolean flag that indicates whether the object is in a right-to-left context, hinting that the drawing may want to mirror the normal image.</param>\n            <param name=\"clientDrawingEffect\">Application-defined drawing effects for the glyphs to render. Usually this argument represents effects such as the foreground brush filling the interior of a line.</param>\n            <returns>If the method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code.</returns>\n            <unmanaged>HRESULT DrawInlineObject([None] void* clientDrawingContext,[None] FLOAT originX,[None] FLOAT originY,[None] IDWriteInlineObject* inlineObject,[None] BOOL isSideways,[None] BOOL isRightToLeft,[None] IUnknown* clientDrawingEffect)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.Bitmap\">\n            <summary>\t\n            <p>Represents a bitmap that has been bound to an <strong><see cref=\"T:SharpDX.Direct2D1.RenderTarget\"/></strong>.</p>\t\n            </summary>\t\n            <remarks>\t\n            Creating <see cref=\"T:SharpDX.Direct2D1.Bitmap\"/> Objects<p>To create a bitmap, use one of the following methods of the render target on which the bitmap will be drawn: </p><ul> <li> <strong><see cref=\"M:SharpDX.Direct2D1.RenderTarget.CreateBitmap(SharpDX.DrawingSize,System.IntPtr,System.Int32,SharpDX.Direct2D1.BitmapProperties,SharpDX.Direct2D1.Bitmap)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.Direct2D1.RenderTarget.CreateBitmapFromWicBitmap(SharpDX.WIC.BitmapSource,System.Nullable{SharpDX.Direct2D1.BitmapProperties},SharpDX.Direct2D1.Bitmap@)\"/></strong> </li> </ul><p>For information about the pixel formats supported by Direct2D bitmaps, see Supported Pixel Formats and Alpha Modes.</p><p>An <strong><see cref=\"T:SharpDX.Direct2D1.Bitmap\"/></strong> is a device-dependent resource: your application should create bitmaps after it initializes the render target with which the bitmap will be used, and recreate the bitmap whenever the render target needs recreated. (For more information about resources, see Resources Overview.)</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1Bitmap']/*\"/>\t\n            <msdn-id>dd371109</msdn-id>\t\n            <unmanaged>ID2D1Bitmap</unmanaged>\t\n            <unmanaged-short>ID2D1Bitmap</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Bitmap.#ctor(SharpDX.Direct2D1.RenderTarget,SharpDX.DrawingSize)\">\n            <summary>\t\n            Creates a Direct2D bitmap from a pointer to in-memory source data.\t\n            </summary>\t\n            <param name=\"renderTarget\">an instance of <see cref=\"T:SharpDX.Direct2D1.RenderTarget\"/></param>\n            <param name=\"size\">The dimension of the bitmap to create in pixels.</param>\n            <msdn-id>dd371800</msdn-id>\t\n            <unmanaged>HRESULT ID2D1RenderTarget::CreateBitmap([In] D2D_SIZE_U size,[In, Optional] const void* srcData,[In] unsigned int pitch,[In] const D2D1_BITMAP_PROPERTIES* bitmapProperties,[Out, Fast] ID2D1Bitmap** bitmap)</unmanaged>\t\n            <unmanaged-short>ID2D1RenderTarget::CreateBitmap</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Bitmap.#ctor(SharpDX.Direct2D1.RenderTarget,SharpDX.DrawingSize,SharpDX.Direct2D1.BitmapProperties)\">\n            <summary>\t\n            Creates a Direct2D bitmap from a pointer to in-memory source data.\t\n            </summary>\t\n            <param name=\"renderTarget\">an instance of <see cref=\"T:SharpDX.Direct2D1.RenderTarget\"/></param>\n            <param name=\"size\">The dimension of the bitmap to create in pixels.</param>\n            <param name=\"bitmapProperties\">The pixel format and dots per inch (DPI) of the bitmap to create.</param>\n            <msdn-id>dd371800</msdn-id>\t\n            <unmanaged>HRESULT ID2D1RenderTarget::CreateBitmap([In] D2D_SIZE_U size,[In, Optional] const void* srcData,[In] unsigned int pitch,[In] const D2D1_BITMAP_PROPERTIES* bitmapProperties,[Out, Fast] ID2D1Bitmap** bitmap)</unmanaged>\t\n            <unmanaged-short>ID2D1RenderTarget::CreateBitmap</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Bitmap.#ctor(SharpDX.Direct2D1.RenderTarget,SharpDX.DrawingSize,SharpDX.DataPointer,System.Int32)\">\n            <summary>\t\n            Creates a Direct2D bitmap from a pointer to in-memory source data.\t\n            </summary>\t\n            <param name=\"renderTarget\">an instance of <see cref=\"T:SharpDX.Direct2D1.RenderTarget\"/></param>\n            <param name=\"size\">The dimension of the bitmap to create in pixels.</param>\n            <param name=\"dataPointer\">A pointer to the memory location of the image data, or NULL to create an uninitialized bitmap.</param>\n            <param name=\"pitch\">The byte count of each scanline, which is equal to (the image width in pixels * the number of bytes per pixel) + memory padding. If srcData is NULL, this value is ignored. (Note that pitch is also sometimes called stride.)</param>\n            <msdn-id>dd371800</msdn-id>\t\n            <unmanaged>HRESULT ID2D1RenderTarget::CreateBitmap([In] D2D_SIZE_U size,[In, Optional] const void* srcData,[In] unsigned int pitch,[In] const D2D1_BITMAP_PROPERTIES* bitmapProperties,[Out, Fast] ID2D1Bitmap** bitmap)</unmanaged>\t\n            <unmanaged-short>ID2D1RenderTarget::CreateBitmap</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Bitmap.#ctor(SharpDX.Direct2D1.RenderTarget,SharpDX.DrawingSize,SharpDX.DataPointer,System.Int32,SharpDX.Direct2D1.BitmapProperties)\">\n            <summary>\t\n            Creates a Direct2D bitmap from a pointer to in-memory source data.\t\n            </summary>\t\n            <param name=\"renderTarget\">an instance of <see cref=\"T:SharpDX.Direct2D1.RenderTarget\"/></param>\n            <param name=\"size\">The dimension of the bitmap to create in pixels.</param>\n            <param name=\"dataPointer\">A pointer to the memory location of the image data, or NULL to create an uninitialized bitmap.</param>\n            <param name=\"pitch\">The byte count of each scanline, which is equal to (the image width in pixels * the number of bytes per pixel) + memory padding. If srcData is NULL, this value is ignored. (Note that pitch is also sometimes called stride.)</param>\n            <param name=\"bitmapProperties\">The pixel format and dots per inch (DPI) of the bitmap to create.</param>\n            <msdn-id>dd371800</msdn-id>\t\n            <unmanaged>HRESULT ID2D1RenderTarget::CreateBitmap([In] D2D_SIZE_U size,[In, Optional] const void* srcData,[In] unsigned int pitch,[In] const D2D1_BITMAP_PROPERTIES* bitmapProperties,[Out, Fast] ID2D1Bitmap** bitmap)</unmanaged>\t\n            <unmanaged-short>ID2D1RenderTarget::CreateBitmap</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Bitmap.#ctor(SharpDX.Direct2D1.RenderTarget,SharpDX.Direct2D1.Bitmap)\">\n            <summary>\t\n            Creates an <see cref=\"T:SharpDX.Direct2D1.Bitmap\"/> whose data is shared with another resource.\t\n            </summary>\t\n            <param name=\"renderTarget\">an instance of <see cref=\"T:SharpDX.Direct2D1.RenderTarget\"/></param>\n            <param name=\"bitmap\">An <see cref=\"T:SharpDX.Direct2D1.Bitmap\"/> that contains the data to share with the new ID2D1Bitmap. For more information, see the Remarks section.</param>\n            <msdn-id>dd371865</msdn-id>\t\n            <unmanaged>HRESULT ID2D1RenderTarget::CreateSharedBitmap([In] const GUID&amp; riid,[In] void* data,[In, Optional] const D2D1_BITMAP_PROPERTIES* bitmapProperties,[Out, Fast] ID2D1Bitmap** bitmap)</unmanaged>\t\n            <unmanaged-short>ID2D1RenderTarget::CreateSharedBitmap</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Bitmap.#ctor(SharpDX.Direct2D1.RenderTarget,SharpDX.Direct2D1.Bitmap,System.Nullable{SharpDX.Direct2D1.BitmapProperties})\">\n            <summary>\t\n            Creates an <see cref=\"T:SharpDX.Direct2D1.Bitmap\"/> whose data is shared with another resource.\t\n            </summary>\t\n            <param name=\"renderTarget\">an instance of <see cref=\"T:SharpDX.Direct2D1.RenderTarget\"/></param>\n            <param name=\"bitmap\">An <see cref=\"T:SharpDX.Direct2D1.Bitmap\"/> that contains the data to share with the new ID2D1Bitmap. For more information, see the Remarks section.</param>\n            <param name=\"bitmapProperties\">The pixel format  and DPI of the bitmap to create . The <see cref=\"T:SharpDX.DXGI.Format\"/> portion of the pixel format  must match the <see cref=\"T:SharpDX.DXGI.Format\"/> of data or the method will fail, but the alpha modes don't have to match. To prevent a  mismatch, you can pass NULL or the value obtained from the {{D2D1::PixelFormat}} helper function. The DPI settings do not have to match those of data. If both dpiX and dpiY are  0.0f, the default DPI, 96, is used.</param>\n            <msdn-id>dd371865</msdn-id>\t\n            <unmanaged>HRESULT ID2D1RenderTarget::CreateSharedBitmap([In] const GUID&amp; riid,[In] void* data,[In, Optional] const D2D1_BITMAP_PROPERTIES* bitmapProperties,[Out, Fast] ID2D1Bitmap** bitmap)</unmanaged>\t\n            <unmanaged-short>ID2D1RenderTarget::CreateSharedBitmap</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Bitmap.#ctor(SharpDX.Direct2D1.RenderTarget,SharpDX.DXGI.Surface)\">\n            <summary>\t\n            Creates an <see cref=\"T:SharpDX.Direct2D1.Bitmap\"/> whose data is shared with another resource.\t\n            </summary>\t\n            <param name=\"renderTarget\">an instance of <see cref=\"T:SharpDX.Direct2D1.RenderTarget\"/></param>\n            <param name=\"surface\">An <see cref=\"T:SharpDX.DXGI.Surface\"/> that contains the data to share with the new ID2D1Bitmap. For more information, see the Remarks section.</param>\n            <msdn-id>dd371865</msdn-id>\t\n            <unmanaged>HRESULT ID2D1RenderTarget::CreateSharedBitmap([In] const GUID&amp; riid,[In] void* data,[In, Optional] const D2D1_BITMAP_PROPERTIES* bitmapProperties,[Out, Fast] ID2D1Bitmap** bitmap)</unmanaged>\t\n            <unmanaged-short>ID2D1RenderTarget::CreateSharedBitmap</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Bitmap.#ctor(SharpDX.Direct2D1.RenderTarget,SharpDX.DXGI.Surface,System.Nullable{SharpDX.Direct2D1.BitmapProperties})\">\n            <summary>\t\n            Creates an <see cref=\"T:SharpDX.Direct2D1.Bitmap\"/> whose data is shared with another resource.\t\n            </summary>\t\n            <param name=\"renderTarget\">an instance of <see cref=\"T:SharpDX.Direct2D1.RenderTarget\"/></param>\n            <param name=\"surface\">An <see cref=\"T:SharpDX.DXGI.Surface\"/> that contains the data to share with the new ID2D1Bitmap. For more information, see the Remarks section.</param>\n            <param name=\"bitmapProperties\">The pixel format  and DPI of the bitmap to create . The <see cref=\"T:SharpDX.DXGI.Format\"/> portion of the pixel format  must match the <see cref=\"T:SharpDX.DXGI.Format\"/> of data or the method will fail, but the alpha modes don't have to match. To prevent a  mismatch, you can pass NULL or the value obtained from the {{D2D1::PixelFormat}} helper function. The DPI settings do not have to match those of data. If both dpiX and dpiY are  0.0f, the default DPI, 96, is used.</param>\n            <msdn-id>dd371865</msdn-id>\t\n            <unmanaged>HRESULT ID2D1RenderTarget::CreateSharedBitmap([In] const GUID&amp; riid,[In] void* data,[In, Optional] const D2D1_BITMAP_PROPERTIES* bitmapProperties,[Out, Fast] ID2D1Bitmap** bitmap)</unmanaged>\t\n            <unmanaged-short>ID2D1RenderTarget::CreateSharedBitmap</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Bitmap.New``1(SharpDX.Direct2D1.RenderTarget,SharpDX.DrawingSize,``0[],SharpDX.Direct2D1.BitmapProperties)\">\n            <summary>\t\n            Creates a Direct2D bitmap from a pointer to in-memory source data.\t\n            </summary>\t\n            <param name=\"renderTarget\">an instance of <see cref=\"T:SharpDX.Direct2D1.RenderTarget\"/></param>\n            <param name=\"size\">The dimension of the bitmap to create in pixels.</param>\n            <param name=\"pixelDatas\">A pointer to an array of pixel data. The size of the array must be equal to sizeof(pixel) * Size.Width * Height.</param>\n            <param name=\"bitmapProperties\">The pixel format and dots per inch (DPI) of the bitmap to create.</param>\n            <msdn-id>dd371800</msdn-id>\t\n            <unmanaged>HRESULT ID2D1RenderTarget::CreateBitmap([In] D2D_SIZE_U size,[In, Optional] const void* srcData,[In] unsigned int pitch,[In] const D2D1_BITMAP_PROPERTIES* bitmapProperties,[Out, Fast] ID2D1Bitmap** bitmap)</unmanaged>\t\n            <unmanaged-short>ID2D1RenderTarget::CreateBitmap</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Bitmap.FromWicBitmap(SharpDX.Direct2D1.RenderTarget,SharpDX.WIC.BitmapSource)\">\n            <summary>\n            Creates a Bitmap from a wic bitmap.\n            </summary>\n            <param name=\"renderTarget\">The render target.</param>\n            <param name=\"wicBitmapSource\">A reference to a <see cref=\"T:SharpDX.WIC.BitmapSource\"/> wic bitmap.</param>\n            <returns></returns>\n            <msdn-id>dd371797</msdn-id>\t\n            <unmanaged>HRESULT ID2D1RenderTarget::CreateBitmapFromWicBitmap([In] IWICBitmapSource* wicBitmapSource,[In, Optional] const D2D1_BITMAP_PROPERTIES* bitmapProperties,[Out] ID2D1Bitmap** bitmap)</unmanaged>\t\n            <unmanaged-short>ID2D1RenderTarget::CreateBitmapFromWicBitmap</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Bitmap.FromWicBitmap(SharpDX.Direct2D1.RenderTarget,SharpDX.WIC.BitmapSource,SharpDX.Direct2D1.BitmapProperties)\">\n            <summary>\n            Creates a Bitmap from a wic bitmap.\n            </summary>\n            <param name=\"renderTarget\">The render target.</param>\n            <param name=\"wicBitmap\">The wic bitmap.</param>\n            <param name=\"bitmapProperties\">The bitmap properties.</param>\n            <returns></returns>\n            <msdn-id>dd371797</msdn-id>\t\n            <unmanaged>HRESULT ID2D1RenderTarget::CreateBitmapFromWicBitmap([In] IWICBitmapSource* wicBitmapSource,[In, Optional] const D2D1_BITMAP_PROPERTIES* bitmapProperties,[Out] ID2D1Bitmap** bitmap)</unmanaged>\t\n            <unmanaged-short>ID2D1RenderTarget::CreateBitmapFromWicBitmap</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Bitmap.CopyFromBitmap(SharpDX.Direct2D1.Bitmap)\">\n            <summary>\t\n            Copies the specified region from the specified bitmap into the current bitmap. \t\n            </summary>\t\n            <remarks>\t\n            This method does not update the size of the  current bitmap. If the contents of the source bitmap do not fit in the current bitmap, this method fails. Also, note that this method does not perform format conversion, and will fail if the bitmap formats do not match. Calling this method may cause the current batch to flush if the bitmap is active in the batch. If the batch that was flushed does not complete successfully, this method fails. However, this method does not clear the error state of the render target on which the batch was flushed. The failing <see cref=\"T:System.Int32\"/> and tag state will be returned at the next call to {{EndDraw}} or {{Flush}}.  \t\n            </remarks>\t\n            <param name=\"sourceBitmap\">The bitmap to copy from. </param>\n            <returns>If the method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code. </returns>\n            <msdn-id>dd371152</msdn-id>\t\n            <unmanaged>HRESULT ID2D1Bitmap::CopyFromBitmap([In, Optional] const D2D_POINT_2U* destPoint,[In] ID2D1Bitmap* bitmap,[In, Optional] const D2D_RECT_U* srcRect)</unmanaged>\t\n            <unmanaged-short>ID2D1Bitmap::CopyFromBitmap</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Bitmap.CopyFromBitmap(SharpDX.Direct2D1.Bitmap,SharpDX.DrawingPoint)\">\n            <summary>\t\n            Copies the specified region from the specified bitmap into the current bitmap. \t\n            </summary>\t\n            <remarks>\t\n            This method does not update the size of the  current bitmap. If the contents of the source bitmap do not fit in the current bitmap, this method fails. Also, note that this method does not perform format conversion, and will fail if the bitmap formats do not match. Calling this method may cause the current batch to flush if the bitmap is active in the batch. If the batch that was flushed does not complete successfully, this method fails. However, this method does not clear the error state of the render target on which the batch was flushed. The failing <see cref=\"T:System.Int32\"/> and tag state will be returned at the next call to {{EndDraw}} or {{Flush}}.  \t\n            </remarks>\t\n            <param name=\"sourceBitmap\">The bitmap to copy from. </param>\n            <param name=\"destinationPoint\">In the current bitmap, the upper-left corner of the area to which the region specified by srcRect is copied. </param>\n            <returns>If the method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code. </returns>\n            <msdn-id>dd371152</msdn-id>\t\n            <unmanaged>HRESULT ID2D1Bitmap::CopyFromBitmap([In, Optional] const D2D_POINT_2U* destPoint,[In] ID2D1Bitmap* bitmap,[In, Optional] const D2D_RECT_U* srcRect)</unmanaged>\t\n            <unmanaged-short>ID2D1Bitmap::CopyFromBitmap</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Bitmap.CopyFromBitmap(SharpDX.Direct2D1.Bitmap,SharpDX.DrawingPoint,SharpDX.Rectangle)\">\n            <summary>\t\n            Copies the specified region from the specified bitmap into the current bitmap. \t\n            </summary>\t\n            <remarks>\t\n            This method does not update the size of the  current bitmap. If the contents of the source bitmap do not fit in the current bitmap, this method fails. Also, note that this method does not perform format conversion, and will fail if the bitmap formats do not match. Calling this method may cause the current batch to flush if the bitmap is active in the batch. If the batch that was flushed does not complete successfully, this method fails. However, this method does not clear the error state of the render target on which the batch was flushed. The failing <see cref=\"T:System.Int32\"/> and tag state will be returned at the next call to {{EndDraw}} or {{Flush}}.  \t\n            </remarks>\t\n            <param name=\"sourceBitmap\">The bitmap to copy from. </param>\n            <param name=\"sourceArea\">The area of bitmap to copy. </param>\n            <param name=\"destinationPoint\">In the current bitmap, the upper-left corner of the area to which the region specified by srcRect is copied. </param>\n            <returns>If the method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code. </returns>\n            <msdn-id>dd371152</msdn-id>\t\n            <unmanaged>HRESULT ID2D1Bitmap::CopyFromBitmap([In, Optional] const D2D_POINT_2U* destPoint,[In] ID2D1Bitmap* bitmap,[In, Optional] const D2D_RECT_U* srcRect)</unmanaged>\t\n            <unmanaged-short>ID2D1Bitmap::CopyFromBitmap</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Bitmap.CopyFromMemory(System.IntPtr,System.Int32)\">\n            <summary>\t\n            Copies the specified region from memory into the current bitmap. \t\n            </summary>\t\n            <remarks>\t\n            This method does not update the size of the current bitmap. If the contents of the source bitmap do not fit in the current bitmap, this method fails. Also, note that this method does not perform format conversion; the two bitmap formats should match.  Passing this method invalid input, such as an invalid destination rectangle, can produce unpredictable results, such as a distorted image or device failure. Calling this method may cause the current batch to flush if the bitmap is active in the batch. If the batch that was flushed does not complete successfully, this method fails. However, this method does not clear the error state of the render target on which the batch was flushed. The failing <see cref=\"T:System.Int32\"/> and tag state will be returned at the next call to {{EndDraw}} or {{Flush}}.  \t\n            </remarks>\t\n            <param name=\"pointer\">The data to copy. </param>\n            <param name=\"pitch\">The stride, or pitch, of the source bitmap stored in srcData. The stride is the byte count of a scanline (one row of pixels in memory). The stride can be computed from the following formula: pixel width * bytes per pixel + memory padding. </param>\n            <returns>If the method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code. </returns>\n            <msdn-id>dd371155</msdn-id>\t\n            <unmanaged>HRESULT ID2D1Bitmap::CopyFromMemory([In, Optional] const D2D_RECT_U* dstRect,[In] const void* srcData,[In] unsigned int pitch)</unmanaged>\t\n            <unmanaged-short>ID2D1Bitmap::CopyFromMemory</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Bitmap.CopyFromMemory(System.Byte[],System.Int32)\">\n            <summary>\t\n            Copies the specified region from memory into the current bitmap. \t\n            </summary>\t\n            <remarks>\t\n            This method does not update the size of the current bitmap. If the contents of the source bitmap do not fit in the current bitmap, this method fails. Also, note that this method does not perform format conversion; the two bitmap formats should match.  Passing this method invalid input, such as an invalid destination rectangle, can produce unpredictable results, such as a distorted image or device failure. Calling this method may cause the current batch to flush if the bitmap is active in the batch. If the batch that was flushed does not complete successfully, this method fails. However, this method does not clear the error state of the render target on which the batch was flushed. The failing <see cref=\"T:System.Int32\"/> and tag state will be returned at the next call to {{EndDraw}} or {{Flush}}.  \t\n            </remarks>\t\n            <param name=\"memory\">The data to copy. </param>\n            <param name=\"pitch\">The stride, or pitch, of the source bitmap stored in srcData. The stride is the byte count of a scanline (one row of pixels in memory). The stride can be computed from the following formula: pixel width * bytes per pixel + memory padding. </param>\n            <returns>If the method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code. </returns>\n            <msdn-id>dd371155</msdn-id>\t\n            <unmanaged>HRESULT ID2D1Bitmap::CopyFromMemory([In, Optional] const D2D_RECT_U* dstRect,[In] const void* srcData,[In] unsigned int pitch)</unmanaged>\t\n            <unmanaged-short>ID2D1Bitmap::CopyFromMemory</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Bitmap.CopyFromMemory``1(``0[],System.Int32)\">\n            <summary>\t\n            Copies the specified region from memory into the current bitmap. \t\n            </summary>\t\n            <remarks>\t\n            This method does not update the size of the current bitmap. If the contents of the source bitmap do not fit in the current bitmap, this method fails. Also, note that this method does not perform format conversion; the two bitmap formats should match.  Passing this method invalid input, such as an invalid destination rectangle, can produce unpredictable results, such as a distorted image or device failure. Calling this method may cause the current batch to flush if the bitmap is active in the batch. If the batch that was flushed does not complete successfully, this method fails. However, this method does not clear the error state of the render target on which the batch was flushed. The failing <see cref=\"T:System.Int32\"/> and tag state will be returned at the next call to {{EndDraw}} or {{Flush}}.  \t\n            </remarks>\t\n            <param name=\"memory\">The data to copy. </param>\n            <param name=\"pitch\">The stride, or pitch, of the source bitmap stored in srcData. The stride is the byte count of a scanline (one row of pixels in memory). The stride can be computed from the following formula: pixel width * bytes per pixel + memory padding. </param>\n            <returns>If the method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code. </returns>\n            <msdn-id>dd371155</msdn-id>\t\n            <unmanaged>HRESULT ID2D1Bitmap::CopyFromMemory([In, Optional] const D2D_RECT_U* dstRect,[In] const void* srcData,[In] unsigned int pitch)</unmanaged>\t\n            <unmanaged-short>ID2D1Bitmap::CopyFromMemory</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Bitmap.CopyFromMemory(System.IntPtr,System.Int32,SharpDX.Rectangle)\">\n            <summary>\t\n            Copies the specified region from memory into the current bitmap. \t\n            </summary>\t\n            <remarks>\t\n            This method does not update the size of the current bitmap. If the contents of the source bitmap do not fit in the current bitmap, this method fails. Also, note that this method does not perform format conversion; the two bitmap formats should match.  Passing this method invalid input, such as an invalid destination rectangle, can produce unpredictable results, such as a distorted image or device failure. Calling this method may cause the current batch to flush if the bitmap is active in the batch. If the batch that was flushed does not complete successfully, this method fails. However, this method does not clear the error state of the render target on which the batch was flushed. The failing <see cref=\"T:System.Int32\"/> and tag state will be returned at the next call to {{EndDraw}} or {{Flush}}.  \t\n            </remarks>\t\n            <param name=\"pointer\">The data to copy. </param>\n            <param name=\"pitch\">The stride, or pitch, of the source bitmap stored in srcData. The stride is the byte count of a scanline (one row of pixels in memory). The stride can be computed from the following formula: pixel width * bytes per pixel + memory padding. </param>\n            <param name=\"destinationArea\">In the current bitmap, the upper-left corner of the area to which the region specified by srcRect is copied. </param>\n            <returns>If the method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code. </returns>\n            <msdn-id>dd371155</msdn-id>\t\n            <unmanaged>HRESULT ID2D1Bitmap::CopyFromMemory([In, Optional] const D2D_RECT_U* dstRect,[In] const void* srcData,[In] unsigned int pitch)</unmanaged>\t\n            <unmanaged-short>ID2D1Bitmap::CopyFromMemory</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Bitmap.CopyFromMemory(System.Byte[],System.Int32,SharpDX.Rectangle)\">\n            <summary>\t\n            Copies the specified region from memory into the current bitmap. \t\n            </summary>\t\n            <remarks>\t\n            This method does not update the size of the current bitmap. If the contents of the source bitmap do not fit in the current bitmap, this method fails. Also, note that this method does not perform format conversion; the two bitmap formats should match.  Passing this method invalid input, such as an invalid destination rectangle, can produce unpredictable results, such as a distorted image or device failure. Calling this method may cause the current batch to flush if the bitmap is active in the batch. If the batch that was flushed does not complete successfully, this method fails. However, this method does not clear the error state of the render target on which the batch was flushed. The failing <see cref=\"T:System.Int32\"/> and tag state will be returned at the next call to {{EndDraw}} or {{Flush}}.  \t\n            </remarks>\t\n            <param name=\"memory\">The data to copy. </param>\n            <param name=\"pitch\">The stride, or pitch, of the source bitmap stored in srcData. The stride is the byte count of a scanline (one row of pixels in memory). The stride can be computed from the following formula: pixel width * bytes per pixel + memory padding. </param>\n            <param name=\"destinationArea\">In the current bitmap, the upper-left corner of the area to which the region specified by srcRect is copied. </param>\n            <returns>If the method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code. </returns>\n            <msdn-id>dd371155</msdn-id>\t\n            <unmanaged>HRESULT ID2D1Bitmap::CopyFromMemory([In, Optional] const D2D_RECT_U* dstRect,[In] const void* srcData,[In] unsigned int pitch)</unmanaged>\t\n            <unmanaged-short>ID2D1Bitmap::CopyFromMemory</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Bitmap.CopyFromMemory``1(``0[],System.Int32,SharpDX.Rectangle)\">\n            <summary>\t\n            Copies the specified region from memory into the current bitmap. \t\n            </summary>\t\n            <remarks>\t\n            This method does not update the size of the current bitmap. If the contents of the source bitmap do not fit in the current bitmap, this method fails. Also, note that this method does not perform format conversion; the two bitmap formats should match.  Passing this method invalid input, such as an invalid destination rectangle, can produce unpredictable results, such as a distorted image or device failure. Calling this method may cause the current batch to flush if the bitmap is active in the batch. If the batch that was flushed does not complete successfully, this method fails. However, this method does not clear the error state of the render target on which the batch was flushed. The failing <see cref=\"T:System.Int32\"/> and tag state will be returned at the next call to {{EndDraw}} or {{Flush}}.  \t\n            </remarks>\t\n            <param name=\"memory\">The data to copy. </param>\n            <param name=\"pitch\">The stride, or pitch, of the source bitmap stored in srcData. The stride is the byte count of a scanline (one row of pixels in memory). The stride can be computed from the following formula: pixel width * bytes per pixel + memory padding. </param>\n            <param name=\"destinationArea\">In the current bitmap, the upper-left corner of the area to which the region specified by srcRect is copied. </param>\n            <returns>If the method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code. </returns>\n            <msdn-id>dd371155</msdn-id>\t\n            <unmanaged>HRESULT ID2D1Bitmap::CopyFromMemory([In, Optional] const D2D_RECT_U* dstRect,[In] const void* srcData,[In] unsigned int pitch)</unmanaged>\t\n            <unmanaged-short>ID2D1Bitmap::CopyFromMemory</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Bitmap.CopyFromRenderTarget(SharpDX.Direct2D1.RenderTarget)\">\n            <summary>\t\n            Copies the specified region from the specified render target into the current bitmap. \t\n            </summary>\t\n            <remarks>\t\n            This method does not update the size of the current bitmap. If the contents of the source bitmap do not fit in the current bitmap, this method fails. Also, note that this method does not perform format conversion, and will fail if the bitmap formats do not match. Calling this method may cause the current batch to flush if the bitmap is active in the batch. If the batch that was flushed does not complete successfully, this method fails. However, this method does not clear the error state of the render target on which the batch was flushed. The failing <see cref=\"T:System.Int32\"/> and tag state will be returned at the next call to {{EndDraw}} or {{Flush}}.  All clips and layers must be popped off of the render target before calling this method.  The method returns {{D2DERR_RENDER_TARGET_HAS_LAYER_OR_CLIPRECT}} if any clips or layers are currently applied to the render target. \t\n            </remarks>\t\n            <param name=\"renderTarget\">The render target that contains the region to copy. </param>\n            <returns>If the method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code. </returns>\n            <msdn-id>dd371158</msdn-id>\t\n            <unmanaged>HRESULT ID2D1Bitmap::CopyFromRenderTarget([In, Optional] const D2D_POINT_2U* destPoint,[In] ID2D1RenderTarget* renderTarget,[In, Optional] const D2D_RECT_U* srcRect)</unmanaged>\t\n            <unmanaged-short>ID2D1Bitmap::CopyFromRenderTarget</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Bitmap.CopyFromRenderTarget(SharpDX.Direct2D1.RenderTarget,SharpDX.DrawingPoint)\">\n            <summary>\t\n            Copies the specified region from the specified render target into the current bitmap. \t\n            </summary>\t\n            <remarks>\t\n            This method does not update the size of the current bitmap. If the contents of the source bitmap do not fit in the current bitmap, this method fails. Also, note that this method does not perform format conversion, and will fail if the bitmap formats do not match. Calling this method may cause the current batch to flush if the bitmap is active in the batch. If the batch that was flushed does not complete successfully, this method fails. However, this method does not clear the error state of the render target on which the batch was flushed. The failing <see cref=\"T:System.Int32\"/> and tag state will be returned at the next call to {{EndDraw}} or {{Flush}}.  All clips and layers must be popped off of the render target before calling this method.  The method returns {{D2DERR_RENDER_TARGET_HAS_LAYER_OR_CLIPRECT}} if any clips or layers are currently applied to the render target. \t\n            </remarks>\t\n            <param name=\"renderTarget\">The render target that contains the region to copy. </param>\n            <param name=\"destinationPoint\">In the current bitmap, the upper-left corner of the area to which the region specified by srcRect is copied. </param>\n            <returns>If the method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code. </returns>\n            <msdn-id>dd371158</msdn-id>\t\n            <unmanaged>HRESULT ID2D1Bitmap::CopyFromRenderTarget([In, Optional] const D2D_POINT_2U* destPoint,[In] ID2D1RenderTarget* renderTarget,[In, Optional] const D2D_RECT_U* srcRect)</unmanaged>\t\n            <unmanaged-short>ID2D1Bitmap::CopyFromRenderTarget</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Bitmap.CopyFromRenderTarget(SharpDX.Direct2D1.RenderTarget,SharpDX.DrawingPoint,SharpDX.Rectangle)\">\n            <summary>\t\n            Copies the specified region from the specified render target into the current bitmap. \t\n            </summary>\t\n            <remarks>\t\n            This method does not update the size of the current bitmap. If the contents of the source bitmap do not fit in the current bitmap, this method fails. Also, note that this method does not perform format conversion, and will fail if the bitmap formats do not match. Calling this method may cause the current batch to flush if the bitmap is active in the batch. If the batch that was flushed does not complete successfully, this method fails. However, this method does not clear the error state of the render target on which the batch was flushed. The failing <see cref=\"T:System.Int32\"/> and tag state will be returned at the next call to {{EndDraw}} or {{Flush}}.  All clips and layers must be popped off of the render target before calling this method.  The method returns {{D2DERR_RENDER_TARGET_HAS_LAYER_OR_CLIPRECT}} if any clips or layers are currently applied to the render target. \t\n            </remarks>\t\n            <param name=\"renderTarget\">The render target that contains the region to copy. </param>\n            <param name=\"destinationPoint\">In the current bitmap, the upper-left corner of the area to which the region specified by srcRect is copied. </param>\n            <param name=\"sourceArea\">The area of renderTarget to copy. </param>\n            <returns>If the method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code. </returns>\n            <msdn-id>dd371158</msdn-id>\t\n            <unmanaged>HRESULT ID2D1Bitmap::CopyFromRenderTarget([In, Optional] const D2D_POINT_2U* destPoint,[In] ID2D1RenderTarget* renderTarget,[In, Optional] const D2D_RECT_U* srcRect)</unmanaged>\t\n            <unmanaged-short>ID2D1Bitmap::CopyFromRenderTarget</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Bitmap.CopyFromStream(System.IO.Stream,System.Int32,System.Int32)\">\n            <summary>\t\n            Copies the specified region from a stream into the current bitmap. \t\n            </summary>\t\n            <remarks>\t\n            This method does not update the size of the current bitmap. If the contents of the source bitmap do not fit in the current bitmap, this method fails. Also, note that this method does not perform format conversion; the two bitmap formats should match.  Passing this method invalid input, such as an invalid destination rectangle, can produce unpredictable results, such as a distorted image or device failure. Calling this method may cause the current batch to flush if the bitmap is active in the batch. If the batch that was flushed does not complete successfully, this method fails. However, this method does not clear the error state of the render target on which the batch was flushed. The failing <see cref=\"T:System.Int32\"/> and tag state will be returned at the next call to {{EndDraw}} or {{Flush}}.  \t\n            </remarks>\t\n            <param name=\"stream\">The stream to copy the data from. </param>\n            <param name=\"length\">Length in bytes of the data to copy from the stream.</param>\n            <param name=\"pitch\">The stride, or pitch, of the source bitmap stored in srcData. The stride is the byte count of a scanline (one row of pixels in memory). The stride can be computed from the following formula: pixel width * bytes per pixel + memory padding. </param>\n            <returns>If the method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code. </returns>\n            <msdn-id>dd371155</msdn-id>\t\n            <unmanaged>HRESULT ID2D1Bitmap::CopyFromMemory([In, Optional] const D2D_RECT_U* dstRect,[In] const void* srcData,[In] unsigned int pitch)</unmanaged>\t\n            <unmanaged-short>ID2D1Bitmap::CopyFromMemory</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Bitmap.CopyFromStream(System.IO.Stream,System.Int32,System.Int32,SharpDX.Rectangle)\">\n            <summary>\t\n            Copies the specified region from a stream into the current bitmap. \t\n            </summary>\t\n            <remarks>\t\n            This method does not update the size of the current bitmap. If the contents of the source bitmap do not fit in the current bitmap, this method fails. Also, note that this method does not perform format conversion; the two bitmap formats should match.  Passing this method invalid input, such as an invalid destination rectangle, can produce unpredictable results, such as a distorted image or device failure. Calling this method may cause the current batch to flush if the bitmap is active in the batch. If the batch that was flushed does not complete successfully, this method fails. However, this method does not clear the error state of the render target on which the batch was flushed. The failing <see cref=\"T:System.Int32\"/> and tag state will be returned at the next call to {{EndDraw}} or {{Flush}}.  \t\n            </remarks>\t\n            <param name=\"stream\">The stream to copy the data from. </param>\n            <param name=\"length\">Length in bytes of the data to copy from the stream.</param>\n            <param name=\"pitch\">The stride, or pitch, of the source bitmap stored in srcData. The stride is the byte count of a scanline (one row of pixels in memory). The stride can be computed from the following formula: pixel width * bytes per pixel + memory padding. </param>\n            <param name=\"destinationArea\">In the current bitmap, the upper-left corner of the area to which the region specified by srcRect is copied. </param>\n            <returns>If the method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code. </returns>\n            <msdn-id>dd371155</msdn-id>\t\n            <unmanaged>HRESULT ID2D1Bitmap::CopyFromMemory([In, Optional] const D2D_RECT_U* dstRect,[In] const void* srcData,[In] unsigned int pitch)</unmanaged>\t\n            <unmanaged-short>ID2D1Bitmap::CopyFromMemory</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Bitmap.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct2D1.Bitmap\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Bitmap.op_Explicit(System.IntPtr)~SharpDX.Direct2D1.Bitmap\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct2D1.Bitmap\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Bitmap.GetSize\">\n            <summary>\t\n            <p>Returns the size, in device-independent pixels (DIPs), of the bitmap.</p>\t\n            </summary>\t\n            <returns><p>The size, in DIPs, of the bitmap.</p></returns>\t\n            <remarks>\t\n            <p>A DIP is 1/96?of an inch. To retrieve the size in device pixels, use the <strong><see cref=\"M:SharpDX.Direct2D1.Bitmap.GetPixelSize\"/></strong> method.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1Bitmap::GetSize']/*\"/>\t\n            <msdn-id>dd371170</msdn-id>\t\n            <unmanaged>D2D_SIZE_F ID2D1Bitmap::GetSize()</unmanaged>\t\n            <unmanaged-short>ID2D1Bitmap::GetSize</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Bitmap.GetPixelSize\">\n            <summary>\t\n            <p>Returns the size, in device-dependent units (pixels), of the bitmap.</p>\t\n            </summary>\t\n            <returns><p>The size, in pixels, of the bitmap.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1Bitmap::GetPixelSize']/*\"/>\t\n            <msdn-id>dd371167</msdn-id>\t\n            <unmanaged>D2D_SIZE_U ID2D1Bitmap::GetPixelSize()</unmanaged>\t\n            <unmanaged-short>ID2D1Bitmap::GetPixelSize</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Bitmap.GetPixelFormat\">\n            <summary>\t\n            <p>Retrieves the pixel format and alpha mode of the bitmap.</p>\t\n            </summary>\t\n            <returns><p>The pixel format and alpha mode of the bitmap.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1Bitmap::GetPixelFormat']/*\"/>\t\n            <msdn-id>dd371164</msdn-id>\t\n            <unmanaged>D2D1_PIXEL_FORMAT ID2D1Bitmap::GetPixelFormat()</unmanaged>\t\n            <unmanaged-short>ID2D1Bitmap::GetPixelFormat</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Bitmap.GetDpi(System.Single@,System.Single@)\">\n            <summary>\t\n            <p>Return the dots per inch (DPI) of the bitmap.</p>\t\n            </summary>\t\n            <param name=\"dpiX\"><dd>  <p>The horizontal DPI of the image. You must allocate storage for this parameter.</p> </dd></param>\t\n            <param name=\"dpiY\"><dd>  <p>The vertical DPI of the image.  You must allocate storage for this parameter.</p> </dd></param>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1Bitmap::GetDpi']/*\"/>\t\n            <msdn-id>dd371161</msdn-id>\t\n            <unmanaged>void ID2D1Bitmap::GetDpi([Out] float* dpiX,[Out] float* dpiY)</unmanaged>\t\n            <unmanaged-short>ID2D1Bitmap::GetDpi</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Bitmap.CopyFromBitmap(System.Nullable{SharpDX.DrawingPoint},SharpDX.Direct2D1.Bitmap,System.Nullable{SharpDX.Rectangle})\">\n            <summary>\t\n            <p>Copies the specified region from the specified bitmap into the current bitmap. </p>\t\n            </summary>\t\n            <param name=\"destPoint\"><dd>  <p>In the current bitmap, the upper-left corner of the area to which the region specified by <em>srcRect</em> is copied.</p> </dd></param>\t\n            <param name=\"bitmap\"><dd>  <p>The bitmap to copy from.</p> </dd></param>\t\n            <param name=\"srcRect\"><dd>  <p>The area of <em>bitmap</em> to copy.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>This method does not update the size of the  current bitmap. If the contents of the source bitmap do not fit in the current bitmap, this method fails. Also, note that this method does not perform format conversion, and will fail if the bitmap formats do not match.</p><p>Calling this method may cause the current batch to flush if the bitmap is active in the batch. If the batch that was flushed does not complete successfully, this method fails. However, this method does not clear the error state of the render target on which the batch was flushed. The failing <strong><see cref=\"T:SharpDX.Result\"/></strong> and tag state will be returned at the next call to <strong>EndDraw</strong> or <strong>Flush</strong>. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1Bitmap::CopyFromBitmap']/*\"/>\t\n            <msdn-id>dd371152</msdn-id>\t\n            <unmanaged>HRESULT ID2D1Bitmap::CopyFromBitmap([In, Optional] const D2D_POINT_2U* destPoint,[In] ID2D1Bitmap* bitmap,[In, Optional] const D2D_RECT_U* srcRect)</unmanaged>\t\n            <unmanaged-short>ID2D1Bitmap::CopyFromBitmap</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Bitmap.CopyFromRenderTarget(System.Nullable{SharpDX.DrawingPoint},SharpDX.Direct2D1.RenderTarget,System.Nullable{SharpDX.Rectangle})\">\n            <summary>\t\n            <p>Copies the specified region from the specified render target into the current bitmap. </p>\t\n            </summary>\t\n            <param name=\"destPoint\"><dd>  <p>In the current bitmap, the upper-left corner of the area to which the region specified by <em>srcRect</em> is copied.</p> </dd></param>\t\n            <param name=\"renderTarget\"><dd>  <p>The render target that contains the region to copy.</p> </dd></param>\t\n            <param name=\"srcRect\"><dd>  <p>The area of <em>renderTarget</em> to copy.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>This method does not update the size of the current bitmap. If the contents of the source bitmap do not fit in the current bitmap, this method fails. Also, note that this method does not perform format conversion, and will fail if the bitmap formats do not match.</p><p>Calling this method may cause the current batch to flush if the bitmap is active in the batch. If the batch that was flushed does not complete successfully, this method fails. However, this method does not clear the error state of the render target on which the batch was flushed. The failing <strong><see cref=\"T:SharpDX.Result\"/></strong> and tag state will be returned at the next call to <strong>EndDraw</strong> or <strong>Flush</strong>. </p><p>All clips and layers must be popped off of the render target before calling this method.  The method returns <strong><see cref=\"F:SharpDX.Direct2D1.ResultCode.RenderTargetHasLayerOrCliprect\"/></strong> if any clips or layers are currently applied to the render target.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1Bitmap::CopyFromRenderTarget']/*\"/>\t\n            <msdn-id>dd371158</msdn-id>\t\n            <unmanaged>HRESULT ID2D1Bitmap::CopyFromRenderTarget([In, Optional] const D2D_POINT_2U* destPoint,[In] ID2D1RenderTarget* renderTarget,[In, Optional] const D2D_RECT_U* srcRect)</unmanaged>\t\n            <unmanaged-short>ID2D1Bitmap::CopyFromRenderTarget</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Bitmap.CopyFromMemory(System.Nullable{SharpDX.Rectangle},System.IntPtr,System.Int32)\">\n            <summary>\t\n            <p>Copies the specified region from memory into the current bitmap. </p>\t\n            </summary>\t\n            <param name=\"dstRect\"><dd>  <p>In the current bitmap, the upper-left corner of the area to which the region specified by <em>srcRect</em> is copied.</p> </dd></param>\t\n            <param name=\"srcData\"><dd>  <p>The data to copy.</p> </dd></param>\t\n            <param name=\"pitch\"><dd>  <p>The stride, or pitch, of the source bitmap stored in <em>srcData</em>. The stride is the byte count of a scanline (one row of pixels in memory). The stride can be computed from the following formula: pixel width * bytes per pixel + memory padding.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>This method does not update the size of the current bitmap. If the contents of the source bitmap do not fit in the current bitmap, this method fails. Also, note that this method does not perform format conversion; the two bitmap formats should match. </p><p>If this method is passed invalid input (such as an invalid destination rectangle), can produce unpredictable results, such as a distorted image or device failure.</p><p>Calling this method may cause the current batch to flush if the bitmap is active in the batch. If the batch that was flushed does not complete successfully, this method fails. However, this method does not clear the error state of the render target on which the batch was flushed. The failing <strong><see cref=\"T:SharpDX.Result\"/></strong> and tag state will be returned at the next call to <strong>EndDraw</strong> or <strong>Flush</strong>. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1Bitmap::CopyFromMemory']/*\"/>\t\n            <msdn-id>dd371155</msdn-id>\t\n            <unmanaged>HRESULT ID2D1Bitmap::CopyFromMemory([In, Optional] const D2D_RECT_U* dstRect,[In] const void* srcData,[In] unsigned int pitch)</unmanaged>\t\n            <unmanaged-short>ID2D1Bitmap::CopyFromMemory</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct2D1.Bitmap.DotsPerInch\">\n            <summary>\t\n            Return the dots per inch (DPI) of the bitmap.\t\n            </summary>\t\n            <value>The dots per inch (DPI) of the bitma.</value>\n        </member>\n        <member name=\"P:SharpDX.Direct2D1.Bitmap.Size\">\n            <summary>\t\n            <p>Returns the size, in device-independent pixels (DIPs), of the bitmap.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>A DIP is 1/96?of an inch. To retrieve the size in device pixels, use the <strong><see cref=\"M:SharpDX.Direct2D1.Bitmap.GetPixelSize\"/></strong> method.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1Bitmap::GetSize']/*\"/>\t\n            <msdn-id>dd371170</msdn-id>\t\n            <unmanaged>GetSize</unmanaged>\t\n            <unmanaged-short>GetSize</unmanaged-short>\t\n            <unmanaged>D2D_SIZE_F ID2D1Bitmap::GetSize()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct2D1.Bitmap.PixelSize\">\n            <summary>\t\n            <p>Returns the size, in device-dependent units (pixels), of the bitmap.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1Bitmap::GetPixelSize']/*\"/>\t\n            <msdn-id>dd371167</msdn-id>\t\n            <unmanaged>GetPixelSize</unmanaged>\t\n            <unmanaged-short>GetPixelSize</unmanaged-short>\t\n            <unmanaged>D2D_SIZE_U ID2D1Bitmap::GetPixelSize()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct2D1.Bitmap.PixelFormat\">\n            <summary>\t\n            <p>Retrieves the pixel format and alpha mode of the bitmap.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1Bitmap::GetPixelFormat']/*\"/>\t\n            <msdn-id>dd371164</msdn-id>\t\n            <unmanaged>GetPixelFormat</unmanaged>\t\n            <unmanaged-short>GetPixelFormat</unmanaged-short>\t\n            <unmanaged>D2D1_PIXEL_FORMAT ID2D1Bitmap::GetPixelFormat()</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.BitmapBrush\">\n            <summary>\t\n            <p>Paints an area with a bitmap.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p> A bitmap brush is used to fill a geometry with a bitmap. Like all brushes, it defines an infinite plane of content. Because bitmaps are finite, the brush relies on an \"extend mode\" to determine how the plane is filled horizontally and vertically.</p>Creating <see cref=\"T:SharpDX.Direct2D1.BitmapBrush\"/> Objects<p>To create a bitmap brush, use the <strong><see cref=\"M:SharpDX.Direct2D1.RenderTarget.CreateBitmapBrush(SharpDX.Direct2D1.Bitmap,System.Nullable{SharpDX.Direct2D1.BitmapBrushProperties},System.Nullable{SharpDX.Direct2D1.BrushProperties},SharpDX.Direct2D1.BitmapBrush)\"/></strong> method.</p><p>An <strong><see cref=\"T:SharpDX.Direct2D1.BitmapBrush\"/></strong> is a device-dependent resource: your application should create bitmap brushes after it initializes the render target with which the bitmap brush will be used, and recreate the bitmap brush whenever the render target needs recreated. (For more information about resources, see Resources Overview.)</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1BitmapBrush']/*\"/>\t\n            <msdn-id>dd371122</msdn-id>\t\n            <unmanaged>ID2D1BitmapBrush</unmanaged>\t\n            <unmanaged-short>ID2D1BitmapBrush</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.Brush\">\n            <summary>\t\n            <p>Defines an object that paints an area. Interfaces that derive from <strong><see cref=\"T:SharpDX.Direct2D1.Brush\"/></strong> describe how the area is painted. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>An <strong><see cref=\"T:SharpDX.Direct2D1.BitmapBrush\"/></strong> is a device-dependent resource: your application should create bitmap brushes after it initializes the render target with which the bitmap brush will be used, and recreate the bitmap brush whenever the render target needs recreated. (For more information about resources, see Resources Overview.)</p><p>Brush space in Direct2D is specified differently than in XPS and Windows Presentation Foundation (WPF). In Direct2D, brush space is not relative to the object being drawn, but rather is the current coordinate system of the render target, transformed by the brush transform, if present. To paint an object as it would be painted by a WPF brush, you must translate the brush space origin to the upper-left corner of the object's bounding box, and then scale the brush space so that the base tile fills the bounding box of the object.</p><p>For more information about brushes, see the Brushes Overview. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1Brush']/*\"/>\t\n            <msdn-id>dd371173</msdn-id>\t\n            <unmanaged>ID2D1Brush</unmanaged>\t\n            <unmanaged-short>ID2D1Brush</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Brush.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct2D1.Brush\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Brush.op_Explicit(System.IntPtr)~SharpDX.Direct2D1.Brush\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct2D1.Brush\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Brush.SetOpacity(System.Single)\">\n            <summary>\t\n            <p>Sets the degree of opacity of this brush.</p>\t\n            </summary>\t\n            <param name=\"opacity\"><dd>  <p>A value between zero and 1 that indicates the opacity of the brush. This value is a constant multiplier that linearly scales the alpha value of all pixels filled by the brush. The opacity values are clamped in the range 0?1 before they are multipled together. </p> </dd></param>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1Brush::SetOpacity']/*\"/>\t\n            <msdn-id>dd371181</msdn-id>\t\n            <unmanaged>void ID2D1Brush::SetOpacity([In] float opacity)</unmanaged>\t\n            <unmanaged-short>ID2D1Brush::SetOpacity</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Brush.SetTransform(SharpDX.Matrix3x2@)\">\n            <summary>\t\n            <p> Sets the transformation applied to the brush.</p>\t\n            </summary>\t\n            <param name=\"transform\"><dd>  <p>The transformation to apply to this brush.</p> </dd></param>\t\n            <remarks>\t\n            <p>When you paint with a brush, it paints in the coordinate space of the render target. Brushes do not automatically position themselves to align with the object being painted; by default, they begin painting at the origin (0, 0) of the render target. </p><p>You can \"move\" the gradient defined by an <strong><see cref=\"T:SharpDX.Direct2D1.LinearGradientBrush\"/></strong> to a target area by setting its start point and end point. Likewise, you can move the gradient defined by an <strong><see cref=\"T:SharpDX.Direct2D1.RadialGradientBrush\"/></strong> by changing its center and radii. </p><p>To align the content of an <strong><see cref=\"T:SharpDX.Direct2D1.BitmapBrush\"/></strong> to the area being painted, you can use the <strong>SetTransform</strong> method to translate the bitmap to the desired location. This transform only affects the brush; it does not affect any other content drawn by the render target. </p><p>The following illustrations show the effect of using an <strong><see cref=\"T:SharpDX.Direct2D1.BitmapBrush\"/></strong> to fill a rectangle located at (100, 100). The illustration on the left illustration shows the result of filling the rectangle without transforming the brush: the bitmap is drawn at the render target's origin. As a result, only a portion of the bitmap appears in the rectangle.</p><p>The illustration on the right shows the result of transforming the <strong><see cref=\"T:SharpDX.Direct2D1.BitmapBrush\"/></strong> so that its content is shifted 50 pixels to the right and 50 pixels down. The bitmap now fills the rectangle.</p><p></p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1Brush::SetTransform']/*\"/>\t\n            <msdn-id>dd371186</msdn-id>\t\n            <unmanaged>void ID2D1Brush::SetTransform([In] const D2D_MATRIX_3X2_F* transform)</unmanaged>\t\n            <unmanaged-short>ID2D1Brush::SetTransform</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Brush.GetOpacity\">\n            <summary>\t\n            <p>Gets the degree of opacity of this brush.   </p>\t\n            </summary>\t\n            <returns><p>A value between zero and 1 that indicates the opacity of the brush. This value is a constant multiplier that linearly scales the alpha value of all pixels filled by the brush. The opacity values are clamped in the range 0?1 before they are multipled together. </p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1Brush::GetOpacity']/*\"/>\t\n            <msdn-id>dd371176</msdn-id>\t\n            <unmanaged>float ID2D1Brush::GetOpacity()</unmanaged>\t\n            <unmanaged-short>ID2D1Brush::GetOpacity</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Brush.GetTransform(SharpDX.Matrix3x2@)\">\n            <summary>\t\n            <p>Gets the transform applied to this brush. </p>\t\n            </summary>\t\n            <param name=\"transform\"><dd>  <p>The transform applied to this brush.</p> </dd></param>\t\n            <remarks>\t\n            <p>When the brush transform is the identity matrix, the brush appears in the same coordinate space as the render target in which it is drawn.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1Brush::GetTransform']/*\"/>\t\n            <msdn-id>dd371179</msdn-id>\t\n            <unmanaged>void ID2D1Brush::GetTransform([Out] D2D_MATRIX_3X2_F* transform)</unmanaged>\t\n            <unmanaged-short>ID2D1Brush::GetTransform</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct2D1.Brush.Opacity\">\n            <summary>\t\n            <p>Gets or sets the degree of opacity of this brush.   </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1Brush::GetOpacity']/*\"/>\t\n            <msdn-id>dd371176</msdn-id>\t\n            <unmanaged>GetOpacity / SetOpacity</unmanaged>\t\n            <unmanaged-short>GetOpacity</unmanaged-short>\t\n            <unmanaged>float ID2D1Brush::GetOpacity()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct2D1.Brush.Transform\">\n            <summary>\t\n            <p>Gets or sets the transform applied to this brush. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>When the brush transform is the identity matrix, the brush appears in the same coordinate space as the render target in which it is drawn.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1Brush::GetTransform']/*\"/>\t\n            <msdn-id>dd371179</msdn-id>\t\n            <unmanaged>GetTransform / SetTransform</unmanaged>\t\n            <unmanaged-short>GetTransform</unmanaged-short>\t\n            <unmanaged>void ID2D1Brush::GetTransform([Out] D2D_MATRIX_3X2_F* transform)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.BitmapBrush.#ctor(SharpDX.Direct2D1.RenderTarget,SharpDX.Direct2D1.Bitmap)\">\n            <summary>\t\n            Creates an <see cref=\"T:SharpDX.Direct2D1.BitmapBrush\"/> from the specified bitmap.\t\n            </summary>\t\n            <param name=\"renderTarget\">an instance of <see cref=\"T:SharpDX.Direct2D1.RenderTarget\"/></param>\n            <param name=\"bitmap\">The bitmap contents of the new brush.</param>\n            <unmanaged>HRESULT ID2D1RenderTarget::CreateBitmapBrush([In] ID2D1Bitmap* bitmap,[In, Optional] const D2D1_BITMAP_BRUSH_PROPERTIES* bitmapBrushProperties,[In, Optional] const D2D1_BRUSH_PROPERTIES* brushProperties,[Out, Fast] ID2D1BitmapBrush** bitmapBrush)</unmanaged>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.BitmapBrush.#ctor(SharpDX.Direct2D1.RenderTarget,SharpDX.Direct2D1.Bitmap,SharpDX.Direct2D1.BitmapBrushProperties)\">\n            <summary>\t\n            Creates an <see cref=\"T:SharpDX.Direct2D1.BitmapBrush\"/> from the specified bitmap.\t\n            </summary>\t\n            <param name=\"renderTarget\">an instance of <see cref=\"T:SharpDX.Direct2D1.RenderTarget\"/></param>\n            <param name=\"bitmap\">The bitmap contents of the new brush.</param>\n            <param name=\"bitmapBrushProperties\">The extend modes and interpolation mode of the new brush, or NULL. If this parameter is NULL, the brush defaults to the <see cref=\"F:SharpDX.Direct2D1.ExtendMode.Clamp\"/> horizontal and vertical extend modes and the <see cref=\"F:SharpDX.Direct2D1.BitmapInterpolationMode.Linear\"/> interpolation mode. </param>\n            <unmanaged>HRESULT ID2D1RenderTarget::CreateBitmapBrush([In] ID2D1Bitmap* bitmap,[In, Optional] const D2D1_BITMAP_BRUSH_PROPERTIES* bitmapBrushProperties,[In, Optional] const D2D1_BRUSH_PROPERTIES* brushProperties,[Out, Fast] ID2D1BitmapBrush** bitmapBrush)</unmanaged>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.BitmapBrush.#ctor(SharpDX.Direct2D1.RenderTarget,SharpDX.Direct2D1.Bitmap,SharpDX.Direct2D1.BrushProperties)\">\n            <summary>\t\n            Creates an <see cref=\"T:SharpDX.Direct2D1.BitmapBrush\"/> from the specified bitmap.\t\n            </summary>\t\n            <param name=\"renderTarget\">an instance of <see cref=\"T:SharpDX.Direct2D1.RenderTarget\"/></param>\n            <param name=\"bitmap\">The bitmap contents of the new brush.</param>\n            <param name=\"brushProperties\">The opacity and transform of the new brush, or NULL. If this parameter is NULL, the brush defaults to an opacity of 1.0f and its transform is the identity matrix.</param>\n            <unmanaged>HRESULT ID2D1RenderTarget::CreateBitmapBrush([In] ID2D1Bitmap* bitmap,[In, Optional] const D2D1_BITMAP_BRUSH_PROPERTIES* bitmapBrushProperties,[In, Optional] const D2D1_BRUSH_PROPERTIES* brushProperties,[Out, Fast] ID2D1BitmapBrush** bitmapBrush)</unmanaged>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.BitmapBrush.#ctor(SharpDX.Direct2D1.RenderTarget,SharpDX.Direct2D1.Bitmap,System.Nullable{SharpDX.Direct2D1.BitmapBrushProperties},System.Nullable{SharpDX.Direct2D1.BrushProperties})\">\n            <summary>\t\n            Creates an <see cref=\"T:SharpDX.Direct2D1.BitmapBrush\"/> from the specified bitmap.\t\n            </summary>\t\n            <param name=\"renderTarget\">an instance of <see cref=\"T:SharpDX.Direct2D1.RenderTarget\"/></param>\n            <param name=\"bitmap\">The bitmap contents of the new brush.</param>\n            <param name=\"bitmapBrushProperties\">The extend modes and interpolation mode of the new brush, or NULL. If this parameter is NULL, the brush defaults to the <see cref=\"F:SharpDX.Direct2D1.ExtendMode.Clamp\"/> horizontal and vertical extend modes and the <see cref=\"F:SharpDX.Direct2D1.BitmapInterpolationMode.Linear\"/> interpolation mode. </param>\n            <param name=\"brushProperties\">The opacity and transform of the new brush, or NULL. If this parameter is NULL, the brush defaults to an opacity of 1.0f and its transform is the identity matrix.</param>\n            <unmanaged>HRESULT ID2D1RenderTarget::CreateBitmapBrush([In] ID2D1Bitmap* bitmap,[In, Optional] const D2D1_BITMAP_BRUSH_PROPERTIES* bitmapBrushProperties,[In, Optional] const D2D1_BRUSH_PROPERTIES* brushProperties,[Out, Fast] ID2D1BitmapBrush** bitmapBrush)</unmanaged>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.BitmapBrush.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct2D1.BitmapBrush\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.BitmapBrush.op_Explicit(System.IntPtr)~SharpDX.Direct2D1.BitmapBrush\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct2D1.BitmapBrush\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.BitmapBrush.SetExtendModeX(SharpDX.Direct2D1.ExtendMode)\">\n            <summary>\t\n            <p>Specifies how the brush horizontally tiles those areas that extend past its bitmap. </p>\t\n            </summary>\t\n            <param name=\"extendModeX\"><dd>  <p>A value that specifies how the brush horizontally tiles those areas that extend past its bitmap. </p> </dd></param>\t\n            <remarks>\t\n            <p>Sometimes, the  bitmap for a bitmap brush doesn't completely fill the area being painted. When this happens, Direct2D uses the brush's horizontal (<strong>SetExtendModeX</strong>) and vertical (<strong>SetExtendModeY</strong>) extend mode settings to determine how to fill the remaining area.</p><p>The following illustration shows the results from  every  possible combination of the extend modes for an <strong><see cref=\"T:SharpDX.Direct2D1.BitmapBrush\"/></strong>: <strong><see cref=\"F:SharpDX.Direct2D1.ExtendMode.Clamp\"/></strong> (CLAMP), <strong><see cref=\"F:SharpDX.Direct2D1.ExtendMode.Wrap\"/></strong> (WRAP), and <strong>D2D1_EXTEND_MIRROR</strong> (MIRROR).</p><p></p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1BitmapBrush::SetExtendModeX']/*\"/>\t\n            <msdn-id>dd371139</msdn-id>\t\n            <unmanaged>void ID2D1BitmapBrush::SetExtendModeX([In] D2D1_EXTEND_MODE extendModeX)</unmanaged>\t\n            <unmanaged-short>ID2D1BitmapBrush::SetExtendModeX</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.BitmapBrush.SetExtendModeY(SharpDX.Direct2D1.ExtendMode)\">\n            <summary>\t\n            <p>Specifies how the brush vertically tiles those areas that extend past its bitmap.</p>\t\n            </summary>\t\n            <param name=\"extendModeY\"><dd>  <p>A value that specifies how the brush vertically tiles those areas that extend past its bitmap.</p> </dd></param>\t\n            <remarks>\t\n            <p>Sometimes, the  bitmap for a bitmap brush doesn't completely fill the area being painted. When this happens, Direct2D uses the brush's horizontal (<strong>SetExtendModeX</strong>) and vertical (<strong>SetExtendModeY</strong>) extend mode settings to determine how to fill the remaining area.</p><p>The following illustration shows the results from  every  possible combination of the extend modes for an <strong><see cref=\"T:SharpDX.Direct2D1.BitmapBrush\"/></strong>: <strong><see cref=\"F:SharpDX.Direct2D1.ExtendMode.Clamp\"/></strong> (CLAMP), <strong><see cref=\"F:SharpDX.Direct2D1.ExtendMode.Wrap\"/></strong> (WRAP), and <strong>D2D1_EXTEND_MIRROR</strong> (MIRROR).</p><p></p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1BitmapBrush::SetExtendModeY']/*\"/>\t\n            <msdn-id>dd371142</msdn-id>\t\n            <unmanaged>void ID2D1BitmapBrush::SetExtendModeY([In] D2D1_EXTEND_MODE extendModeY)</unmanaged>\t\n            <unmanaged-short>ID2D1BitmapBrush::SetExtendModeY</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.BitmapBrush.SetInterpolationMode(SharpDX.Direct2D1.BitmapInterpolationMode)\">\n            <summary>\t\n            <p>Specifies the interpolation mode used when the brush bitmap is scaled or rotated.</p>\t\n            </summary>\t\n            <param name=\"interpolationMode\"><dd>  <p>The interpolation mode used when the brush bitmap is scaled or rotated.</p> </dd></param>\t\n            <remarks>\t\n            <p>This method sets the interpolation mode for a bitmap, which is an enum value that is specified in the <strong><see cref=\"T:SharpDX.Direct2D1.BitmapInterpolationMode\"/></strong> enumeration type.   <see cref=\"F:SharpDX.Direct2D1.BitmapInterpolationMode.NearestNeighbor\"/> represents nearest neighbor filtering. It looks up the nearest bitmap pixel to the current rendering pixel and chooses its exact color. <see cref=\"F:SharpDX.Direct2D1.BitmapInterpolationMode.Linear\"/> represents linear filtering, and  interpolates a color from the four nearest bitmap pixels.</p><p>The interpolation mode of a bitmap also affects subpixel translations. In a subpixel translation, bilinear interpolation positions the bitmap more precisely to the application requests, but blurs the bitmap in the process. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1BitmapBrush::SetInterpolationMode']/*\"/>\t\n            <msdn-id>dd371145</msdn-id>\t\n            <unmanaged>void ID2D1BitmapBrush::SetInterpolationMode([In] D2D1_BITMAP_INTERPOLATION_MODE interpolationMode)</unmanaged>\t\n            <unmanaged-short>ID2D1BitmapBrush::SetInterpolationMode</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.BitmapBrush.SetBitmap(SharpDX.Direct2D1.Bitmap)\">\n            <summary>\t\n            <p>Specifies the bitmap source that this brush uses to paint. </p>\t\n            </summary>\t\n            <param name=\"bitmap\"><dd>  <p>The bitmap source used by the brush.</p> </dd></param>\t\n            <remarks>\t\n            <p>This method specifies the bitmap source that this brush uses to paint. The bitmap is not resized or rescaled automatically to fit the geometry that it fills. The bitmap stays at its native size. To resize or translate the bitmap, use the <strong>SetTransform</strong> method to apply  a transform to the brush. </p><p>The native size of a bitmap is the width and height in bitmap pixels, divided by the bitmap DPI. This native size forms the base tile of the brush. To tile a subregion of the bitmap, you must generate a new bitmap containing this subregion and use <strong>SetBitmap</strong> to apply it to the brush. \t\n            </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1BitmapBrush::SetBitmap']/*\"/>\t\n            <msdn-id>dd371136</msdn-id>\t\n            <unmanaged>void ID2D1BitmapBrush::SetBitmap([In] ID2D1Bitmap* bitmap)</unmanaged>\t\n            <unmanaged-short>ID2D1BitmapBrush::SetBitmap</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.BitmapBrush.GetExtendModeX\">\n            <summary>\t\n            <p> Gets the method by which the brush horizontally tiles those areas that extend past its bitmap. </p>\t\n            </summary>\t\n            <returns><p>A value that specifies how the brush horizontally tiles those areas that extend past its bitmap.</p></returns>\t\n            <remarks>\t\n            <p>Like all brushes, <strong><see cref=\"T:SharpDX.Direct2D1.BitmapBrush\"/></strong> defines an infinite plane of content. Because bitmaps are finite, it relies on an extend mode to determine how the plane is filled horizontally and vertically.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1BitmapBrush::GetExtendModeX']/*\"/>\t\n            <msdn-id>dd371128</msdn-id>\t\n            <unmanaged>D2D1_EXTEND_MODE ID2D1BitmapBrush::GetExtendModeX()</unmanaged>\t\n            <unmanaged-short>ID2D1BitmapBrush::GetExtendModeX</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.BitmapBrush.GetExtendModeY\">\n            <summary>\t\n            <p> Gets the method by which the brush vertically tiles those areas that extend past its bitmap. </p>\t\n            </summary>\t\n            <returns><p>A value that specifies how the brush vertically tiles those areas that extend past its bitmap.</p></returns>\t\n            <remarks>\t\n            <p>Like all brushes, <strong><see cref=\"T:SharpDX.Direct2D1.BitmapBrush\"/></strong> defines an infinite plane of content.  Because bitmaps are finite, it relies on an extend mode to determine how the plane is filled horizontally and vertically.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1BitmapBrush::GetExtendModeY']/*\"/>\t\n            <msdn-id>dd371132</msdn-id>\t\n            <unmanaged>D2D1_EXTEND_MODE ID2D1BitmapBrush::GetExtendModeY()</unmanaged>\t\n            <unmanaged-short>ID2D1BitmapBrush::GetExtendModeY</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.BitmapBrush.GetInterpolationMode\">\n            <summary>\t\n            <p>Gets the interpolation method used when the brush bitmap is scaled or rotated. </p>\t\n            </summary>\t\n            <returns><p>The interpolation method used when the brush bitmap is scaled or rotated.</p></returns>\t\n            <remarks>\t\n            <p>This method gets the interpolation mode of a bitmap, which is specified by the <strong><see cref=\"T:SharpDX.Direct2D1.BitmapInterpolationMode\"/></strong> enumeration type.   <strong><see cref=\"F:SharpDX.Direct2D1.BitmapInterpolationMode.NearestNeighbor\"/></strong> represents nearest neighbor filtering. It looks up the bitmap pixel nearest to the current rendering pixel and chooses its exact color. <strong><see cref=\"F:SharpDX.Direct2D1.BitmapInterpolationMode.Linear\"/></strong> represents linear filtering, and  interpolates a color from the four nearest bitmap pixels.</p><p>The interpolation mode of a bitmap also affects subpixel translations. In a subpixel translation, linear interpolation positions the bitmap more precisely to the application request, but blurs the bitmap in the process. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1BitmapBrush::GetInterpolationMode']/*\"/>\t\n            <msdn-id>dd371134</msdn-id>\t\n            <unmanaged>D2D1_BITMAP_INTERPOLATION_MODE ID2D1BitmapBrush::GetInterpolationMode()</unmanaged>\t\n            <unmanaged-short>ID2D1BitmapBrush::GetInterpolationMode</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.BitmapBrush.GetBitmap(SharpDX.Direct2D1.Bitmap@)\">\n            <summary>\t\n            <p> Gets the bitmap source that this brush uses to paint.</p>\t\n            </summary>\t\n            <param name=\"bitmap\"><dd>  <p>When this method returns, contains the address to a reference to the bitmap with which this brush paints.</p> </dd></param>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1BitmapBrush::GetBitmap']/*\"/>\t\n            <msdn-id>dd371124</msdn-id>\t\n            <unmanaged>void ID2D1BitmapBrush::GetBitmap([Out] ID2D1Bitmap** bitmap)</unmanaged>\t\n            <unmanaged-short>ID2D1BitmapBrush::GetBitmap</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct2D1.BitmapBrush.ExtendModeX\">\n            <summary>\t\n            <p>Gets or sets the method by which the brush horizontally tiles those areas that extend past its bitmap. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Like all brushes, <strong><see cref=\"T:SharpDX.Direct2D1.BitmapBrush\"/></strong> defines an infinite plane of content. Because bitmaps are finite, it relies on an extend mode to determine how the plane is filled horizontally and vertically.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1BitmapBrush::GetExtendModeX']/*\"/>\t\n            <msdn-id>dd371128</msdn-id>\t\n            <unmanaged>GetExtendModeX / SetExtendModeX</unmanaged>\t\n            <unmanaged-short>GetExtendModeX</unmanaged-short>\t\n            <unmanaged>D2D1_EXTEND_MODE ID2D1BitmapBrush::GetExtendModeX()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct2D1.BitmapBrush.ExtendModeY\">\n            <summary>\t\n            <p>Gets or sets the method by which the brush vertically tiles those areas that extend past its bitmap. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Like all brushes, <strong><see cref=\"T:SharpDX.Direct2D1.BitmapBrush\"/></strong> defines an infinite plane of content.  Because bitmaps are finite, it relies on an extend mode to determine how the plane is filled horizontally and vertically.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1BitmapBrush::GetExtendModeY']/*\"/>\t\n            <msdn-id>dd371132</msdn-id>\t\n            <unmanaged>GetExtendModeY / SetExtendModeY</unmanaged>\t\n            <unmanaged-short>GetExtendModeY</unmanaged-short>\t\n            <unmanaged>D2D1_EXTEND_MODE ID2D1BitmapBrush::GetExtendModeY()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct2D1.BitmapBrush.InterpolationMode\">\n            <summary>\t\n            <p>Gets or sets the interpolation method used when the brush bitmap is scaled or rotated. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This method gets the interpolation mode of a bitmap, which is specified by the <strong><see cref=\"T:SharpDX.Direct2D1.BitmapInterpolationMode\"/></strong> enumeration type.   <strong><see cref=\"F:SharpDX.Direct2D1.BitmapInterpolationMode.NearestNeighbor\"/></strong> represents nearest neighbor filtering. It looks up the bitmap pixel nearest to the current rendering pixel and chooses its exact color. <strong><see cref=\"F:SharpDX.Direct2D1.BitmapInterpolationMode.Linear\"/></strong> represents linear filtering, and  interpolates a color from the four nearest bitmap pixels.</p><p>The interpolation mode of a bitmap also affects subpixel translations. In a subpixel translation, linear interpolation positions the bitmap more precisely to the application request, but blurs the bitmap in the process. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1BitmapBrush::GetInterpolationMode']/*\"/>\t\n            <msdn-id>dd371134</msdn-id>\t\n            <unmanaged>GetInterpolationMode / SetInterpolationMode</unmanaged>\t\n            <unmanaged-short>GetInterpolationMode</unmanaged-short>\t\n            <unmanaged>D2D1_BITMAP_INTERPOLATION_MODE ID2D1BitmapBrush::GetInterpolationMode()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct2D1.BitmapBrush.Bitmap\">\n            <summary>\t\n            <p>Gets or sets the bitmap source that this brush uses to paint.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1BitmapBrush::GetBitmap']/*\"/>\t\n            <msdn-id>dd371124</msdn-id>\t\n            <unmanaged>GetBitmap / SetBitmap</unmanaged>\t\n            <unmanaged-short>GetBitmap</unmanaged-short>\t\n            <unmanaged>void ID2D1BitmapBrush::GetBitmap([Out] ID2D1Bitmap** bitmap)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.BitmapProperties\">\n            <summary>\t\n            <p>Describes the pixel format and dpi  of a bitmap.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_BITMAP_PROPERTIES']/*\"/>\t\n            <msdn-id>dd368075</msdn-id>\t\n            <unmanaged>D2D1_BITMAP_PROPERTIES</unmanaged>\t\n            <unmanaged-short>D2D1_BITMAP_PROPERTIES</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.BitmapProperties.#ctor(SharpDX.Direct2D1.PixelFormat)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct2D1.BitmapProperties\"/> struct.\n            </summary>\n            <param name=\"pixelFormat\">The pixel format.</param>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.BitmapProperties.#ctor(SharpDX.Direct2D1.PixelFormat,System.Single,System.Single)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct2D1.BitmapProperties\"/> struct.\n            </summary>\n            <param name=\"pixelFormat\">The pixel format.</param>\n            <param name=\"dpiX\">The dpi X.</param>\n            <param name=\"dpiY\">The dpi Y.</param>\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.BitmapProperties.PixelFormat\">\n            <summary>\t\n            <dd> <p>The bitmap's pixel format and alpha mode.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_BITMAP_PROPERTIES::pixelFormat']/*\"/>\t\n            <msdn-id>dd368075</msdn-id>\t\n            <unmanaged>D2D1_PIXEL_FORMAT pixelFormat</unmanaged>\t\n            <unmanaged-short>D2D1_PIXEL_FORMAT pixelFormat</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.BitmapProperties.DpiX\">\n            <summary>\t\n            <dd> <p>The horizontal dpi of the bitmap.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_BITMAP_PROPERTIES::dpiX']/*\"/>\t\n            <msdn-id>dd368075</msdn-id>\t\n            <unmanaged>float dpiX</unmanaged>\t\n            <unmanaged-short>float dpiX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.BitmapProperties.DpiY\">\n            <summary>\t\n            <dd> <p>The vertical dpi of the bitmap.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_BITMAP_PROPERTIES::dpiY']/*\"/>\t\n            <msdn-id>dd368075</msdn-id>\t\n            <unmanaged>float dpiY</unmanaged>\t\n            <unmanaged-short>float dpiY</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.BitmapRenderTarget\">\n            <summary>\t\n            <p>Renders to an intermediate texture created by the <strong>CreateCompatibleRenderTarget</strong> method.  </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>An <strong><see cref=\"T:SharpDX.Direct2D1.BitmapRenderTarget\"/></strong> writes to an intermediate texture. It's useful for creating patterns for use with an <strong><see cref=\"T:SharpDX.Direct2D1.BitmapBrush\"/></strong> or caching drawing data that will be used repeatedly. </p><p>To write directly to a WIC bitmap instead, use the <strong><see cref=\"M:SharpDX.Direct2D1.Factory.CreateWicBitmapRenderTarget(SharpDX.WIC.Bitmap,SharpDX.Direct2D1.RenderTargetProperties@,SharpDX.Direct2D1.RenderTarget)\"/></strong> method. This method returns an <strong><see cref=\"T:SharpDX.Direct2D1.RenderTarget\"/></strong> that writes to the specified WIC bitmap. For an example, see the Save as Image File Sample.</p>Creating <see cref=\"T:SharpDX.Direct2D1.BitmapRenderTarget\"/> Objects<p>To create a bitmap render target, call the <strong><see cref=\"M:SharpDX.Direct2D1.RenderTarget.CreateCompatibleRenderTarget(System.Nullable{SharpDX.DrawingSizeF},System.Nullable{SharpDX.DrawingSize},System.Nullable{SharpDX.Direct2D1.PixelFormat},SharpDX.Direct2D1.CompatibleRenderTargetOptions,SharpDX.Direct2D1.BitmapRenderTarget)\"/></strong> method.</p><p>Like other render targets, an <strong><see cref=\"T:SharpDX.Direct2D1.BitmapRenderTarget\"/></strong> is a device-dependent resource and must be recreated when the associated device becomes unavailable. For more information, see the Resources Overview.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1BitmapRenderTarget']/*\"/>\t\n            <msdn-id>dd371146</msdn-id>\t\n            <unmanaged>ID2D1BitmapRenderTarget</unmanaged>\t\n            <unmanaged-short>ID2D1BitmapRenderTarget</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.BitmapRenderTarget.#ctor(SharpDX.Direct2D1.RenderTarget,SharpDX.Direct2D1.CompatibleRenderTargetOptions)\">\n            <summary>\t\n             Creates a bitmap render target for use during intermediate offscreen drawing that is compatible with the current render targe with same size, pixel size and pixel format.\n            </summary>\t\n            <param name=\"renderTarget\">an instance of <see cref=\"T:SharpDX.Direct2D1.RenderTarget\"/></param>\n            <param name=\"options\">A value that specifies whether the new render target must be compatible with GDI.</param>\n            <unmanaged>HRESULT CreateCompatibleRenderTarget([In, Optional] const D2D1_SIZE_F* desiredSize,[In, Optional] const D2D1_SIZE_U* desiredPixelSize,[In, Optional] const D2D1_PIXEL_FORMAT* desiredFormat,[None] D2D1_COMPATIBLE_RENDER_TARGET_OPTIONS options,[Out] ID2D1BitmapRenderTarget** bitmapRenderTarget)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.BitmapRenderTarget.#ctor(SharpDX.Direct2D1.RenderTarget,SharpDX.Direct2D1.CompatibleRenderTargetOptions,SharpDX.DrawingSizeF)\">\n            <summary>\t\n             Creates a bitmap render target for use during intermediate offscreen drawing that is compatible with the current render target with same pixel size and pixel format.\n            </summary>\t\n            <param name=\"renderTarget\">an instance of <see cref=\"T:SharpDX.Direct2D1.RenderTarget\"/></param>\n            <param name=\"options\">A value that specifies whether the new render target must be compatible with GDI.</param>\n            <param name=\"desiredSize\">The desired size of the new render target in device-independent pixels if it should be different from the original render target. For more information, see the Remarks section.</param>\n            <unmanaged>HRESULT CreateCompatibleRenderTarget([In, Optional] const D2D1_SIZE_F* desiredSize,[In, Optional] const D2D1_SIZE_U* desiredPixelSize,[In, Optional] const D2D1_PIXEL_FORMAT* desiredFormat,[None] D2D1_COMPATIBLE_RENDER_TARGET_OPTIONS options,[Out] ID2D1BitmapRenderTarget** bitmapRenderTarget)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.BitmapRenderTarget.#ctor(SharpDX.Direct2D1.RenderTarget,SharpDX.Direct2D1.CompatibleRenderTargetOptions,System.Nullable{SharpDX.Direct2D1.PixelFormat})\">\n            <summary>\t\n             Creates a bitmap render target for use during intermediate offscreen drawing that is compatible with the current render target with same size and pixel size.\t\n            </summary>\t\n            <param name=\"renderTarget\">an instance of <see cref=\"T:SharpDX.Direct2D1.RenderTarget\"/></param>\n            <param name=\"desiredFormat\">The desired pixel format and alpha mode of the new render target. If the pixel format is set to DXGI_FORMAT_UNKNOWN, the new render target uses the same pixel format as the original render target. If the alpha mode is <see cref=\"F:SharpDX.Direct2D1.AlphaMode.Unknown\"/>, the alpha mode of the new render target defaults to D2D1_ALPHA_MODE_PREMULTIPLIED. For information about supported pixel formats, see  {{Supported Pixel  Formats and Alpha Modes}}.</param>\n            <param name=\"options\">A value that specifies whether the new render target must be compatible with GDI.</param>\n            <unmanaged>HRESULT CreateCompatibleRenderTarget([In, Optional] const D2D1_SIZE_F* desiredSize,[In, Optional] const D2D1_SIZE_U* desiredPixelSize,[In, Optional] const D2D1_PIXEL_FORMAT* desiredFormat,[None] D2D1_COMPATIBLE_RENDER_TARGET_OPTIONS options,[Out] ID2D1BitmapRenderTarget** bitmapRenderTarget)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.BitmapRenderTarget.#ctor(SharpDX.Direct2D1.RenderTarget,SharpDX.Direct2D1.CompatibleRenderTargetOptions,System.Nullable{SharpDX.DrawingSizeF},System.Nullable{SharpDX.DrawingSize},System.Nullable{SharpDX.Direct2D1.PixelFormat})\">\n            <summary>\t\n             Creates a bitmap render target for use during intermediate offscreen drawing that is compatible with the current render target.\t\n            </summary>\t\n            <remarks>\t\n            The pixel size and DPI of the new render target can be altered by specifying values for desiredSize or desiredPixelSize:  If desiredSize is specified but desiredPixelSize is not, the pixel size is computed from the desired size using the parent target DPI. If the desiredSize maps to a integer-pixel size, the DPI of the compatible render target is the same as the DPI of the parent target.  If desiredSize maps to a fractional-pixel size, the pixel size is rounded up to the nearest integer and the DPI for the compatible render target is slightly higher than the DPI of the parent render target. In all cases, the coordinate (desiredSize.width, desiredSize.height) maps to the lower-right corner of the compatible render target.If the desiredPixelSize is specified and desiredSize is not, the DPI of the new render target is the same as the original render target.If both desiredSize and desiredPixelSize are specified, the DPI of the new render target is computed to account for the difference in scale.If neither desiredSize nor desiredPixelSize is specified, the new render target size and DPI match the original render target. \t\n            </remarks>\t\n            <param name=\"renderTarget\">an instance of <see cref=\"T:SharpDX.Direct2D1.RenderTarget\"/></param>\n            <param name=\"desiredSize\">The desired size of the new render target in device-independent pixels if it should be different from the original render target. For more information, see the Remarks section.</param>\n            <param name=\"desiredPixelSize\">The desired size of the new render target in pixels if it should be different from the original render target. For more information, see the Remarks section.</param>\n            <param name=\"desiredFormat\">The desired pixel format and alpha mode of the new render target. If the pixel format is set to DXGI_FORMAT_UNKNOWN, the new render target uses the same pixel format as the original render target. If the alpha mode is <see cref=\"F:SharpDX.Direct2D1.AlphaMode.Unknown\"/>, the alpha mode of the new render target defaults to D2D1_ALPHA_MODE_PREMULTIPLIED. For information about supported pixel formats, see  {{Supported Pixel  Formats and Alpha Modes}}.</param>\n            <param name=\"options\">A value that specifies whether the new render target must be compatible with GDI.</param>\n            <unmanaged>HRESULT CreateCompatibleRenderTarget([In, Optional] const D2D1_SIZE_F* desiredSize,[In, Optional] const D2D1_SIZE_U* desiredPixelSize,[In, Optional] const D2D1_PIXEL_FORMAT* desiredFormat,[None] D2D1_COMPATIBLE_RENDER_TARGET_OPTIONS options,[Out] ID2D1BitmapRenderTarget** bitmapRenderTarget)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.BitmapRenderTarget.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct2D1.BitmapRenderTarget\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.BitmapRenderTarget.op_Explicit(System.IntPtr)~SharpDX.Direct2D1.BitmapRenderTarget\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct2D1.BitmapRenderTarget\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.BitmapRenderTarget.GetBitmap(SharpDX.Direct2D1.Bitmap@)\">\n            <summary>\t\n            <p>Retrieves the bitmap for this render target. The returned bitmap can be used for drawing operations. </p>\t\n            </summary>\t\n            <param name=\"bitmap\"><dd>  <p>When this method returns, contains the address of a reference to the bitmap for this render target. This bitmap can be used for drawing operations. </p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>The DPI for the <strong><see cref=\"T:SharpDX.Direct2D1.Bitmap\"/></strong> obtained from <strong>GetBitmap</strong> will be the DPI of the <strong><see cref=\"T:SharpDX.Direct2D1.BitmapRenderTarget\"/></strong> when the render target was created. Changing the DPI of the <strong><see cref=\"T:SharpDX.Direct2D1.BitmapRenderTarget\"/></strong> by calling  <strong>SetDpi</strong> doesn't affect the DPI of the bitmap, even if <strong>SetDpi</strong> is called before <strong>GetBitmap</strong>. Using <strong>SetDpi</strong> to change the DPI of the <strong><see cref=\"T:SharpDX.Direct2D1.BitmapRenderTarget\"/></strong> does affect how contents are rendered into the bitmap: it just doesn't affect the DPI of the bitmap retrieved by <strong>GetBitmap</strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1BitmapRenderTarget::GetBitmap']/*\"/>\t\n            <msdn-id>dd371150</msdn-id>\t\n            <unmanaged>HRESULT ID2D1BitmapRenderTarget::GetBitmap([Out] ID2D1Bitmap** bitmap)</unmanaged>\t\n            <unmanaged-short>ID2D1BitmapRenderTarget::GetBitmap</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct2D1.BitmapRenderTarget.Bitmap\">\n            <summary>\t\n            <p>Retrieves the bitmap for this render target. The returned bitmap can be used for drawing operations. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The DPI for the <strong><see cref=\"T:SharpDX.Direct2D1.Bitmap\"/></strong> obtained from <strong>GetBitmap</strong> will be the DPI of the <strong><see cref=\"T:SharpDX.Direct2D1.BitmapRenderTarget\"/></strong> when the render target was created. Changing the DPI of the <strong><see cref=\"T:SharpDX.Direct2D1.BitmapRenderTarget\"/></strong> by calling  <strong>SetDpi</strong> doesn't affect the DPI of the bitmap, even if <strong>SetDpi</strong> is called before <strong>GetBitmap</strong>. Using <strong>SetDpi</strong> to change the DPI of the <strong><see cref=\"T:SharpDX.Direct2D1.BitmapRenderTarget\"/></strong> does affect how contents are rendered into the bitmap: it just doesn't affect the DPI of the bitmap retrieved by <strong>GetBitmap</strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1BitmapRenderTarget::GetBitmap']/*\"/>\t\n            <msdn-id>dd371150</msdn-id>\t\n            <unmanaged>GetBitmap</unmanaged>\t\n            <unmanaged-short>GetBitmap</unmanaged-short>\t\n            <unmanaged>HRESULT ID2D1BitmapRenderTarget::GetBitmap([Out] ID2D1Bitmap** bitmap)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.TextRendererBase\">\n            <summary>\n            Default abstract implementation of TextRenderer. Need to implement a least a DrawXXX method to use it.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextRendererBase.IsPixelSnappingDisabled(System.Object)\">\n            <summary>\n            Determines whether pixel snapping is disabled. The recommended default is FALSE,\n            unless doing animation that requires subpixel vertical placement.\n            </summary>\n            <param name=\"clientDrawingContext\">The context passed to IDWriteTextLayout::Draw.</param>\n            <returns>Receives TRUE if pixel snapping is disabled or FALSE if it not. </returns>\n            <unmanaged>HRESULT IsPixelSnappingDisabled([None] void* clientDrawingContext,[Out] BOOL* isDisabled)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextRendererBase.GetCurrentTransform(System.Object)\">\n            <summary>\t\n             Gets a transform that maps abstract coordinates to DIPs. \t\n            </summary>\t\n            <param name=\"clientDrawingContext\">The drawing context passed to <see cref=\"M:SharpDX.DirectWrite.TextLayout.Draw_(System.IntPtr,System.IntPtr,System.Single,System.Single)\"/>.</param>\n            <returns>a structure which has transform information for  pixel snapping.</returns>\n            <unmanaged>HRESULT GetCurrentTransform([None] void* clientDrawingContext,[Out] DWRITE_MATRIX* transform)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextRendererBase.GetPixelsPerDip(System.Object)\">\n            <summary>\t\n             Gets the number of physical pixels per DIP. \t\n            </summary>\t\n            <remarks>\t\n             Because a DIP (device-independent pixel) is 1/96 inch,  the pixelsPerDip value is the number of logical pixels per inch divided by 96.\t\n            </remarks>\t\n            <param name=\"clientDrawingContext\">The drawing context passed to <see cref=\"M:SharpDX.DirectWrite.TextLayout.Draw_(System.IntPtr,System.IntPtr,System.Single,System.Single)\"/>.</param>\n            <returns>the number of physical pixels per DIP</returns>\n            <unmanaged>HRESULT GetPixelsPerDip([None] void* clientDrawingContext,[Out] FLOAT* pixelsPerDip)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextRendererBase.DrawGlyphRun(System.Object,System.Single,System.Single,SharpDX.Direct2D1.MeasuringMode,SharpDX.DirectWrite.GlyphRun,SharpDX.DirectWrite.GlyphRunDescription,SharpDX.ComObject)\">\n            <summary>\t\n             IDWriteTextLayout::Draw calls this function to instruct the client to render a run of glyphs. \t\n            </summary>\t\n            <remarks>\t\n            The <see cref=\"M:SharpDX.DirectWrite.TextLayout.Draw_(System.IntPtr,System.IntPtr,System.Single,System.Single)\"/> function calls this callback function with all the information about glyphs to render. The application implements this callback by mostly delegating the call to the underlying platform's graphics API such as {{Direct2D}} to draw glyphs on the drawing context. An application that uses GDI can implement this callback in terms of the <see cref=\"M:SharpDX.DirectWrite.BitmapRenderTarget.DrawGlyphRun(System.Single,System.Single,SharpDX.Direct2D1.MeasuringMode,SharpDX.DirectWrite.GlyphRun,SharpDX.DirectWrite.RenderingParams,SharpDX.Color4)\"/> method.\t\n            </remarks>\t\n            <param name=\"clientDrawingContext\">The application-defined drawing context passed to  <see cref=\"M:SharpDX.DirectWrite.TextLayout.Draw_(System.IntPtr,System.IntPtr,System.Single,System.Single)\"/>.</param>\n            <param name=\"baselineOriginX\">The pixel location (X-coordinate) at the baseline origin of the glyph run.</param>\n            <param name=\"baselineOriginY\">The pixel location (Y-coordinate) at the baseline origin of the glyph run.</param>\n            <param name=\"measuringMode\"> The measuring method for glyphs in the run, used with the other properties to determine the rendering mode.</param>\n            <param name=\"glyphRun\">Pointer to the glyph run instance to render. </param>\n            <param name=\"glyphRunDescription\">A pointer to the optional glyph run description instance which contains properties of the characters  associated with this run.</param>\n            <param name=\"clientDrawingEffect\">Application-defined drawing effects for the glyphs to render. Usually this argument represents effects such as the foreground brush filling the interior of text.</param>\n            <returns>If the method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code.</returns>\n            <unmanaged>HRESULT DrawGlyphRun([None] void* clientDrawingContext,[None] FLOAT baselineOriginX,[None] FLOAT baselineOriginY,[None] DWRITE_MEASURING_MODE measuringMode,[In] const DWRITE_GLYPH_RUN* glyphRun,[In] const DWRITE_GLYPH_RUN_DESCRIPTION* glyphRunDescription,[None] IUnknown* clientDrawingEffect)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextRendererBase.DrawUnderline(System.Object,System.Single,System.Single,SharpDX.DirectWrite.Underline@,SharpDX.ComObject)\">\n            <summary>\t\n             IDWriteTextLayout::Draw calls this function to instruct the client to draw an underline. \t\n            </summary>\t\n            <remarks>\t\n             A single underline can be broken into multiple calls, depending on how the formatting changes attributes. If font sizes/styles change within an underline, the thickness and offset will be averaged weighted according to characters. To get an appropriate starting pixel position, add underline::offset to the baseline. Otherwise there will be no spacing between the text. The x coordinate will always be passed as the left side, regardless of text directionality. This simplifies drawing and reduces the problem of round-off that could potentially cause gaps or a double stamped alpha blend. To avoid alpha overlap, round the end points to the nearest device pixel. \t\n            </remarks>\t\n            <param name=\"clientDrawingContext\">The application-defined drawing context passed to  IDWriteTextLayout::Draw.</param>\n            <param name=\"baselineOriginX\">The pixel location (X-coordinate) at the baseline origin of the run where underline applies.</param>\n            <param name=\"baselineOriginY\">The pixel location (Y-coordinate) at the baseline origin of the run where underline applies.</param>\n            <param name=\"underline\">Pointer to  a structure containing underline logical information.</param>\n            <param name=\"clientDrawingEffect\"> Application-defined effect to apply to the underline. Usually this argument represents effects such as the foreground brush filling the interior of a line.</param>\n            <returns>If the method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code.</returns>\n            <unmanaged>HRESULT DrawUnderline([None] void* clientDrawingContext,[None] FLOAT baselineOriginX,[None] FLOAT baselineOriginY,[In] const DWRITE_UNDERLINE* underline,[None] IUnknown* clientDrawingEffect)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextRendererBase.DrawStrikethrough(System.Object,System.Single,System.Single,SharpDX.DirectWrite.Strikethrough@,SharpDX.ComObject)\">\n            <summary>\t\n             IDWriteTextLayout::Draw calls this function to instruct the client to draw a strikethrough. \t\n            </summary>\t\n            <remarks>\t\n             A single strikethrough can be broken into multiple calls, depending on how the formatting changes attributes. Strikethrough is not averaged across font sizes/styles changes. To get an appropriate starting pixel position, add strikethrough::offset to the baseline. Like underlines, the x coordinate will always be passed as the left side, regardless of text directionality. \t\n            </remarks>\t\n            <param name=\"clientDrawingContext\">The application-defined drawing context passed to  IDWriteTextLayout::Draw.</param>\n            <param name=\"baselineOriginX\">The pixel location (X-coordinate) at the baseline origin of the run where strikethrough applies.</param>\n            <param name=\"baselineOriginY\">The pixel location (Y-coordinate) at the baseline origin of the run where strikethrough applies.</param>\n            <param name=\"strikethrough\">Pointer to  a structure containing strikethrough logical information.</param>\n            <param name=\"clientDrawingEffect\">Application-defined effect to apply to the strikethrough.  Usually this argument represents effects such as the foreground brush filling the interior of a line.</param>\n            <returns>If the method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code.</returns>\n            <unmanaged>HRESULT DrawStrikethrough([None] void* clientDrawingContext,[None] FLOAT baselineOriginX,[None] FLOAT baselineOriginY,[In] const DWRITE_STRIKETHROUGH* strikethrough,[None] IUnknown* clientDrawingEffect)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextRendererBase.DrawInlineObject(System.Object,System.Single,System.Single,SharpDX.DirectWrite.InlineObject,System.Boolean,System.Boolean,SharpDX.ComObject)\">\n            <summary>\t\n             IDWriteTextLayout::Draw calls this application callback when it needs to draw an inline object. \t\n            </summary>\t\n            <param name=\"clientDrawingContext\">The application-defined drawing context passed to IDWriteTextLayout::Draw.</param>\n            <param name=\"originX\">X-coordinate at the top-left corner of the inline object.</param>\n            <param name=\"originY\">Y-coordinate at the top-left corner of the inline object.</param>\n            <param name=\"inlineObject\">The application-defined inline object set using IDWriteTextFormat::SetInlineObject.</param>\n            <param name=\"isSideways\">A Boolean flag that indicates whether the object's baseline runs alongside the baseline axis of the line.</param>\n            <param name=\"isRightToLeft\">A Boolean flag that indicates whether the object is in a right-to-left context, hinting that the drawing may want to mirror the normal image.</param>\n            <param name=\"clientDrawingEffect\">Application-defined drawing effects for the glyphs to render. Usually this argument represents effects such as the foreground brush filling the interior of a line.</param>\n            <returns>If the method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code.</returns>\n            <unmanaged>HRESULT DrawInlineObject([None] void* clientDrawingContext,[None] FLOAT originX,[None] FLOAT originY,[None] IDWriteInlineObject* inlineObject,[None] BOOL isSideways,[None] BOOL isRightToLeft,[None] IUnknown* clientDrawingEffect)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.TextRendererShadow\">\n            <summary>\n            Internal TextRenderer Callback\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.TextRendererShadow.ToIntPtr(SharpDX.DirectWrite.TextRenderer)\">\n            <summary>\n            Return a pointer to the unamanged version of this callback.\n            </summary>\n            <param name=\"callback\">The callback.</param>\n            <returns>A pointer to a shadow c++ callback</returns>\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.TextRendererShadow.TextRendererVtbl.DrawGlyphRunDelegate\">\n            <unmanaged>HRESULT DrawGlyphRun([None] void* clientDrawingContext,[None] FLOAT baselineOriginX,[None] FLOAT baselineOriginY,[None] DWRITE_MEASURING_MODE measuringMode,[In] const DWRITE_GLYPH_RUN* glyphRun,[In] const DWRITE_GLYPH_RUN_DESCRIPTION* glyphRunDescription,[None] IUnknown* clientDrawingEffect)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.TextRendererShadow.TextRendererVtbl.DrawUnderlineDelegate\">\n            <unmanaged>HRESULT DrawUnderline([None] void* clientDrawingContext,[None] FLOAT baselineOriginX,[None] FLOAT baselineOriginY,[In] const DWRITE_UNDERLINE* underline,[None] IUnknown* clientDrawingEffect)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.TextRendererShadow.TextRendererVtbl.DrawStrikethroughDelegate\">\n            <unmanaged>HRESULT DrawStrikethrough([None] void* clientDrawingContext,[None] FLOAT baselineOriginX,[None] FLOAT baselineOriginY,[In] const DWRITE_STRIKETHROUGH* strikethrough,[None] IUnknown* clientDrawingEffect)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.TextRendererShadow.TextRendererVtbl.DrawInlineObjectDelegate\">\n            <unmanaged>HRESULT DrawInlineObject([None] void* clientDrawingContext,[None] FLOAT originX,[None] FLOAT originY,[None] IDWriteInlineObject* inlineObject,[None] BOOL isSideways,[None] BOOL isRightToLeft,[None] IUnknown* clientDrawingEffect)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.Typography\">\n            <summary>\t\n            <p> Gets the number of OpenType font features for the current font. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>A single run of text can be associated with more than one typographic feature. The <strong><see cref=\"T:SharpDX.DirectWrite.Typography\"/></strong> object holds a list of these font features.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTypography']/*\"/>\t\n            <msdn-id>dd371549</msdn-id>\t\n            <unmanaged>IDWriteTypography</unmanaged>\t\n            <unmanaged-short>IDWriteTypography</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.Typography.#ctor(SharpDX.DirectWrite.Factory)\">\n            <summary>\t\n            Creates a typography object for use in a text layout. \t\n            </summary>\t\n            <param name=\"factory\">an instance of <see cref=\"T:SharpDX.DirectWrite.Factory\"/></param>\n            <unmanaged>HRESULT IDWriteFactory::CreateTypography([Out] IDWriteTypography** typography)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.Typography.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectWrite.Typography\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.Typography.op_Explicit(System.IntPtr)~SharpDX.DirectWrite.Typography\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.DirectWrite.Typography\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.Typography.AddFontFeature(SharpDX.DirectWrite.FontFeature)\">\n            <summary>\t\n            <p> Adds an OpenType font feature. </p>\t\n            </summary>\t\n            <param name=\"fontFeature\"><dd> <p>A structure that contains the OpenType name identifier and the execution parameter for the font feature being added.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTypography::AddFontFeature']/*\"/>\t\n            <msdn-id>dd371545</msdn-id>\t\n            <unmanaged>HRESULT IDWriteTypography::AddFontFeature([In] DWRITE_FONT_FEATURE fontFeature)</unmanaged>\t\n            <unmanaged-short>IDWriteTypography::AddFontFeature</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.Typography.GetFontFeatureCount\">\n            <summary>\t\n            <p> Gets the number of OpenType font features for the current font. </p>\t\n            </summary>\t\n            <returns><p>The number of font features for the current text format.</p></returns>\t\n            <remarks>\t\n            <p>A single run of text can be associated with more than one typographic feature. The <strong><see cref=\"T:SharpDX.DirectWrite.Typography\"/></strong> object holds a list of these font features.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTypography::GetFontFeatureCount']/*\"/>\t\n            <msdn-id>dd371549</msdn-id>\t\n            <unmanaged>unsigned int IDWriteTypography::GetFontFeatureCount()</unmanaged>\t\n            <unmanaged-short>IDWriteTypography::GetFontFeatureCount</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.Typography.GetFontFeature(System.Int32)\">\n            <summary>\t\n            <p> Gets the font feature at the specified index. </p>\t\n            </summary>\t\n            <param name=\"fontFeatureIndex\"><dd> <p>The zero-based index of the font feature to retrieve.</p> </dd></param>\t\n            <returns><dd> <p>When this method returns, contains the font feature which is at the specified index.</p> </dd></returns>\t\n            <remarks>\t\n            <p>A single run of text can be associated with more than one typographic feature. The <strong><see cref=\"T:SharpDX.DirectWrite.Typography\"/></strong> object holds a list of these font features.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTypography::GetFontFeature']/*\"/>\t\n            <msdn-id>dd371546</msdn-id>\t\n            <unmanaged>HRESULT IDWriteTypography::GetFontFeature([In] unsigned int fontFeatureIndex,[Out] DWRITE_FONT_FEATURE* fontFeature)</unmanaged>\t\n            <unmanaged-short>IDWriteTypography::GetFontFeature</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.DirectWrite.Typography.FontFeatureCount\">\n            <summary>\t\n            <p> Gets the number of OpenType font features for the current font. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>A single run of text can be associated with more than one typographic feature. The <strong><see cref=\"T:SharpDX.DirectWrite.Typography\"/></strong> object holds a list of these font features.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteTypography::GetFontFeatureCount']/*\"/>\t\n            <msdn-id>dd371549</msdn-id>\t\n            <unmanaged>GetFontFeatureCount</unmanaged>\t\n            <unmanaged-short>GetFontFeatureCount</unmanaged-short>\t\n            <unmanaged>unsigned int IDWriteTypography::GetFontFeatureCount()</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.Ellipse\">\n            <summary>\t\n            <p> Contains the center point, x-radius, and y-radius of an ellipse.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_ELLIPSE']/*\"/>\t\n            <msdn-id>dd368097</msdn-id>\t\n            <unmanaged>D2D1_ELLIPSE</unmanaged>\t\n            <unmanaged-short>D2D1_ELLIPSE</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Ellipse.#ctor(SharpDX.DrawingPointF,System.Single,System.Single)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct2D1.Ellipse\"/> struct.\n            </summary>\n            <param name=\"center\">The center.</param>\n            <param name=\"radiusX\">The radius X.</param>\n            <param name=\"radiusY\">The radius Y.</param>\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.Ellipse.Point\">\n            <summary>\t\n            <dd> <p>The center point of the ellipse.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_ELLIPSE::point']/*\"/>\t\n            <msdn-id>dd368097</msdn-id>\t\n            <unmanaged>D2D_POINT_2F point</unmanaged>\t\n            <unmanaged-short>D2D_POINT_2F point</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.Ellipse.RadiusX\">\n            <summary>\t\n            <dd> <p>The X-radius of the ellipse.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_ELLIPSE::radiusX']/*\"/>\t\n            <msdn-id>dd368097</msdn-id>\t\n            <unmanaged>float radiusX</unmanaged>\t\n            <unmanaged-short>float radiusX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.Ellipse.RadiusY\">\n            <summary>\t\n            <dd> <p>The Y-radius of the ellipse.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_ELLIPSE::radiusY']/*\"/>\t\n            <msdn-id>dd368097</msdn-id>\t\n            <unmanaged>float radiusY</unmanaged>\t\n            <unmanaged-short>float radiusY</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.GdiInteropRenderTarget\">\n            <summary>\t\n            <p>Provides access to an device context that can accept GDI drawing commands. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>You don't create an <strong><see cref=\"T:SharpDX.Direct2D1.GdiInteropRenderTarget\"/></strong> object directly; instead, you use the <strong>QueryInterface</strong> method of an existing render target instance to provide an <strong><see cref=\"T:SharpDX.Direct2D1.GdiInteropRenderTarget\"/></strong> version of that render target. </p><p>Not all render targets support the <strong><see cref=\"T:SharpDX.Direct2D1.GdiInteropRenderTarget\"/></strong> interface. The render target must be GDI-compatible (the <strong><see cref=\"F:SharpDX.Direct2D1.RenderTargetUsage.GdiCompatible\"/></strong> flag was specified when creating the render target), use the <see cref=\"F:SharpDX.DXGI.Format.B8G8R8A8_UNorm\"/> pixel format, and use  the <strong><see cref=\"F:SharpDX.Direct2D1.AlphaMode.Premultiplied\"/></strong> or <strong><see cref=\"F:SharpDX.Direct2D1.AlphaMode.Ignore\"/></strong> alpha mode.</p><p>Note that the <strong>QueryInterface</strong> method always succeeds; if the render target doesn't support the <strong><see cref=\"T:SharpDX.Direct2D1.GdiInteropRenderTarget\"/></strong> interface, calling <strong>GetDC</strong> will fail. (For render targets created through the <strong>CreateCompatibleRenderTarget</strong> method, the render target that created it must have these settings.) </p><p>To test whether a given render target supports the <strong><see cref=\"T:SharpDX.Direct2D1.GdiInteropRenderTarget\"/></strong> interface, create a <strong><see cref=\"T:SharpDX.Direct2D1.RenderTargetProperties\"/> </strong>that specifies GDI compatibility and the appropriate pixel format, then call the render target's <strong>IsSupported</strong> method to see whether the render target is GDI-compatible. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1GdiInteropRenderTarget']/*\"/>\t\n            <msdn-id>dd371321</msdn-id>\t\n            <unmanaged>ID2D1GdiInteropRenderTarget</unmanaged>\t\n            <unmanaged-short>ID2D1GdiInteropRenderTarget</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.GdiInteropRenderTarget.ReleaseDC\">\n            <summary>\t\n            Indicates that drawing with the device context retrieved using the {{GetDC}} method is finished.  \t\n            </summary>\t\n            <remarks>\t\n            ReleaseDC must be called once for each call to {{GetDC}}. \t\n            </remarks>\t\n            <returns>If the method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code. </returns>\n            <unmanaged>HRESULT ID2D1GdiInteropRenderTarget::ReleaseDC([In, Optional] const RECT* update)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.GdiInteropRenderTarget.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct2D1.GdiInteropRenderTarget\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.GdiInteropRenderTarget.op_Explicit(System.IntPtr)~SharpDX.Direct2D1.GdiInteropRenderTarget\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct2D1.GdiInteropRenderTarget\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.GdiInteropRenderTarget.GetDC(SharpDX.Direct2D1.DeviceContextInitializeMode)\">\n            <summary>\t\n            <p>Retrieves the device context associated with this render target. </p>\t\n            </summary>\t\n            <param name=\"mode\"><dd>  <p>A value that specifies whether the device context should be cleared.</p> </dd></param>\t\n            <returns><dd>  <p>When this method returns, contains the device context associated with this render target. You must allocate storage for this parameter.  </p> </dd></returns>\t\n            <remarks>\t\n            <p>Calling this method flushes the render target.</p><p>This command can be called only after <strong>BeginDraw</strong> and before <strong>EndDraw</strong>. It should not be called between <strong>PushAxisAlignedClip</strong>/<strong>PopAxisAlignedClip</strong> commands or between <strong>PushLayer</strong>/<strong>PopLayer</strong>.</p><p> <strong>ReleaseDC</strong> must be called once for each call to <strong>GetDC</strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1GdiInteropRenderTarget::GetDC']/*\"/>\t\n            <msdn-id>dd371323</msdn-id>\t\n            <unmanaged>HRESULT ID2D1GdiInteropRenderTarget::GetDC([In] D2D1_DC_INITIALIZE_MODE mode,[Out] HDC* hdc)</unmanaged>\t\n            <unmanaged-short>ID2D1GdiInteropRenderTarget::GetDC</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.GdiInteropRenderTarget.ReleaseDC(System.Nullable{SharpDX.Rectangle})\">\n            <summary>\t\n            <p>Indicates that drawing with the device context retrieved using the <strong>GetDC</strong> method is finished.  </p>\t\n            </summary>\t\n            <param name=\"update\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p><strong>ReleaseDC</strong> must be called once for each call to <strong>GetDC</strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1GdiInteropRenderTarget::ReleaseDC']/*\"/>\t\n            <msdn-id>dd371327</msdn-id>\t\n            <unmanaged>HRESULT ID2D1GdiInteropRenderTarget::ReleaseDC([In, Optional] const RECT* update)</unmanaged>\t\n            <unmanaged-short>ID2D1GdiInteropRenderTarget::ReleaseDC</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.BreakCondition\">\n            <summary>\t\n            <p> Indicates the condition at the edges of inline object or text used to determine line-breaking behavior.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_BREAK_CONDITION']/*\"/>\t\n            <msdn-id>dd368051</msdn-id>\t\n            <unmanaged>DWRITE_BREAK_CONDITION</unmanaged>\t\n            <unmanaged-short>DWRITE_BREAK_CONDITION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.BreakCondition.Neutral\">\n            <summary>\t\n            <dd> <p> Indicates whether a break is allowed by determining  the condition of the neighboring text span or inline object.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_BREAK_CONDITION_NEUTRAL']/*\"/>\t\n            <msdn-id>dd368051</msdn-id>\t\n            <unmanaged>DWRITE_BREAK_CONDITION_NEUTRAL</unmanaged>\t\n            <unmanaged-short>DWRITE_BREAK_CONDITION_NEUTRAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.BreakCondition.CanBreak\">\n            <summary>\t\n            <dd> <p> Indicates that a line break is allowed, unless overruled by the condition of the neighboring text span or inline object, either prohibited by a \"may not break\" condition or forced by a \"must break\" condition.\t\t\t\t </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_BREAK_CONDITION_CAN_BREAK']/*\"/>\t\n            <msdn-id>dd368051</msdn-id>\t\n            <unmanaged>DWRITE_BREAK_CONDITION_CAN_BREAK</unmanaged>\t\n            <unmanaged-short>DWRITE_BREAK_CONDITION_CAN_BREAK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.BreakCondition.MayNotBreak\">\n            <summary>\t\n            <dd> <p> Indicates that there should be no line  break, unless overruled by a \"must break\" condition from the neighboring text span or inline object.\t\t </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_BREAK_CONDITION_MAY_NOT_BREAK']/*\"/>\t\n            <msdn-id>dd368051</msdn-id>\t\n            <unmanaged>DWRITE_BREAK_CONDITION_MAY_NOT_BREAK</unmanaged>\t\n            <unmanaged-short>DWRITE_BREAK_CONDITION_MAY_NOT_BREAK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.BreakCondition.MustBreak\">\n            <summary>\t\n            <dd> <p> Indicates that the line break must happen, regardless of the condition of the adjacent text span or inline object.\t\t\t </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_BREAK_CONDITION_MUST_BREAK']/*\"/>\t\n            <msdn-id>dd368051</msdn-id>\t\n            <unmanaged>DWRITE_BREAK_CONDITION_MUST_BREAK</unmanaged>\t\n            <unmanaged-short>DWRITE_BREAK_CONDITION_MUST_BREAK</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.FactoryType\">\n            <summary>\t\n            <p>Specifies the type of DirectWrite factory object.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>A DirectWrite factory object contains information about its internal state, such as font loader registration and cached font data. In most cases you should use the shared factory object, because it allows multiple components that use DirectWrite to share internal DirectWrite state information, thereby reducing memory usage. However, there are cases when it is desirable to reduce the impact of a component on the rest of the process, such as a plug-in from an untrusted source,  by sandboxing and isolating it from the rest of the process components. In such cases, you should use an isolated factory for the sandboxed component.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FACTORY_TYPE']/*\"/>\t\n            <msdn-id>dd368057</msdn-id>\t\n            <unmanaged>DWRITE_FACTORY_TYPE</unmanaged>\t\n            <unmanaged-short>DWRITE_FACTORY_TYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FactoryType.Shared\">\n            <summary>\t\n            <dd> <p>Indicates that the DirectWrite factory is a shared factory and that it allows for the reuse of cached font data across multiple in-process components. Such factories also take advantage of cross process font caching components for better performance.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FACTORY_TYPE_SHARED']/*\"/>\t\n            <msdn-id>dd368057</msdn-id>\t\n            <unmanaged>DWRITE_FACTORY_TYPE_SHARED</unmanaged>\t\n            <unmanaged-short>DWRITE_FACTORY_TYPE_SHARED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FactoryType.Isolated\">\n            <summary>\t\n            <dd> <p>Indicates that the DirectWrite factory object is isolated. Objects created from the isolated factory do not interact with internal DirectWrite state from other components.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FACTORY_TYPE_ISOLATED']/*\"/>\t\n            <msdn-id>dd368057</msdn-id>\t\n            <unmanaged>DWRITE_FACTORY_TYPE_ISOLATED</unmanaged>\t\n            <unmanaged-short>DWRITE_FACTORY_TYPE_ISOLATED</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.FlowDirection\">\n            <summary>\t\n            <p> Indicates the direction of flow for placing lines of text in a paragraph. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FLOW_DIRECTION']/*\"/>\t\n            <msdn-id>dd368060</msdn-id>\t\n            <unmanaged>DWRITE_FLOW_DIRECTION</unmanaged>\t\n            <unmanaged-short>DWRITE_FLOW_DIRECTION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FlowDirection.TopToBottom\">\n            <summary>\t\n            <dd> <p>Specifies that text lines are placed from top to bottom.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FLOW_DIRECTION_TOP_TO_BOTTOM']/*\"/>\t\n            <msdn-id>dd368060</msdn-id>\t\n            <unmanaged>DWRITE_FLOW_DIRECTION_TOP_TO_BOTTOM</unmanaged>\t\n            <unmanaged-short>DWRITE_FLOW_DIRECTION_TOP_TO_BOTTOM</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.FontFaceType\">\n            <summary>\t\n            <p>Indicates the file format of a complete font face.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Font formats that consist of multiple files, such as Type 1 .PFM and .PFB, have a single enum entry.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FACE_TYPE']/*\"/>\t\n            <msdn-id>dd368063</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FACE_TYPE</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FACE_TYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFaceType.Cff\">\n            <summary>\t\n            <dd> <p>OpenType font face with CFF outlines.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FACE_TYPE_CFF']/*\"/>\t\n            <msdn-id>dd368063</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FACE_TYPE_CFF</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FACE_TYPE_CFF</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFaceType.Truetype\">\n            <summary>\t\n            <dd> <p>OpenType font face with TrueType outlines.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FACE_TYPE_TRUETYPE']/*\"/>\t\n            <msdn-id>dd368063</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FACE_TYPE_TRUETYPE</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FACE_TYPE_TRUETYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFaceType.TruetypeCollection\">\n            <summary>\t\n            <dd> <p>OpenType font face that is a part of a TrueType collection.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FACE_TYPE_TRUETYPE_COLLECTION']/*\"/>\t\n            <msdn-id>dd368063</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FACE_TYPE_TRUETYPE_COLLECTION</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FACE_TYPE_TRUETYPE_COLLECTION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFaceType.Type1\">\n            <summary>\t\n            <dd> <p>A Type 1 font face.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FACE_TYPE_TYPE1']/*\"/>\t\n            <msdn-id>dd368063</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FACE_TYPE_TYPE1</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FACE_TYPE_TYPE1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFaceType.Vector\">\n            <summary>\t\n            <dd> <p>A vector .FON format font face.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FACE_TYPE_VECTOR']/*\"/>\t\n            <msdn-id>dd368063</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FACE_TYPE_VECTOR</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FACE_TYPE_VECTOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFaceType.Bitmap\">\n            <summary>\t\n            <dd> <p>A bitmap .FON format font face.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FACE_TYPE_BITMAP']/*\"/>\t\n            <msdn-id>dd368063</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FACE_TYPE_BITMAP</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FACE_TYPE_BITMAP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFaceType.Unknown\">\n            <summary>\t\n            <dd> <p>Font face type is not recognized by the DirectWrite font system.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FACE_TYPE_UNKNOWN']/*\"/>\t\n            <msdn-id>dd368063</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FACE_TYPE_UNKNOWN</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FACE_TYPE_UNKNOWN</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.FontFeatureTag\">\n            <summary>\t\n            <p>A value that indicates the typographic feature of text supplied by the font.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FEATURE_TAG']/*\"/>\t\n            <msdn-id>dd368069</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FEATURE_TAG</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FEATURE_TAG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFeatureTag.AlternativeFractions\">\n            <summary>\t\n            <dd> <p> Replaces figures separated by a slash with an alternative form.</p> <p><strong>Equivalent OpenType tag:</strong> 'afrc' </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FEATURE_TAG_ALTERNATIVE_FRACTIONS']/*\"/>\t\n            <msdn-id>dd368069</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FEATURE_TAG_ALTERNATIVE_FRACTIONS</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FEATURE_TAG_ALTERNATIVE_FRACTIONS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFeatureTag.PetiteCapitalsFromCapitals\">\n            <summary>\t\n            <dd> <p> Turns capital characters into petite capitals. It is generally used for words which would otherwise be set in all caps, such as acronyms, but which are desired in petite-cap form to avoid disrupting the flow of text. See the pcap feature description for notes on the relationship of caps, smallcaps and petite caps.</p> <p><strong>Equivalent OpenType tag:</strong> 'c2pc'</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FEATURE_TAG_PETITE_CAPITALS_FROM_CAPITALS']/*\"/>\t\n            <msdn-id>dd368069</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FEATURE_TAG_PETITE_CAPITALS_FROM_CAPITALS</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FEATURE_TAG_PETITE_CAPITALS_FROM_CAPITALS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFeatureTag.SmallCapitalsFromCapitals\">\n            <summary>\t\n            <dd> <p>Turns capital characters into small capitals. It is generally used for words which would otherwise be set in all caps, such as acronyms, but which are desired in small-cap form to avoid disrupting the flow of text. </p> <p><strong>Equivalent OpenType tag:</strong> 'c2sc'</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FEATURE_TAG_SMALL_CAPITALS_FROM_CAPITALS']/*\"/>\t\n            <msdn-id>dd368069</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FEATURE_TAG_SMALL_CAPITALS_FROM_CAPITALS</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FEATURE_TAG_SMALL_CAPITALS_FROM_CAPITALS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFeatureTag.ContextualAlternates\">\n            <summary>\t\n            <dd> <p> In specified situations, replaces default glyphs with alternate forms which provide better joining behavior. Used in script typefaces which are designed to have some or all of their glyphs join.</p> <p><strong>Equivalent OpenType tag:</strong> 'calt'</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FEATURE_TAG_CONTEXTUAL_ALTERNATES']/*\"/>\t\n            <msdn-id>dd368069</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FEATURE_TAG_CONTEXTUAL_ALTERNATES</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FEATURE_TAG_CONTEXTUAL_ALTERNATES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFeatureTag.CaseSensitiveForms\">\n            <summary>\t\n            <dd> <p> Shifts various punctuation marks up to a position that works better with all-capital sequences or sets of lining figures; also changes oldstyle figures to lining figures. By default, glyphs in a text face are designed to work with lowercase characters. Some characters should be shifted vertically to fit the higher visual center of all-capital or lining text. Also, lining figures are the same height (or close to it) as capitals, and fit much better with all-capital text.</p> <p><strong>Equivalent OpenType tag:</strong> 'case'</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FEATURE_TAG_CASE_SENSITIVE_FORMS']/*\"/>\t\n            <msdn-id>dd368069</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FEATURE_TAG_CASE_SENSITIVE_FORMS</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FEATURE_TAG_CASE_SENSITIVE_FORMS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFeatureTag.GlyphCompositionDecomposition\">\n            <summary>\t\n            <dd> <p> To minimize the number of glyph alternates, it is sometimes desired to decompose a character into two glyphs. Additionally, it may be preferable to compose two characters into a single glyph for better glyph processing. This feature permits such composition/decomposition. The feature should be processed as the first feature processed, and should be processed only when it is called.</p> <p><strong>Equivalent OpenType tag:</strong> 'ccmp'</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FEATURE_TAG_GLYPH_COMPOSITION_DECOMPOSITION']/*\"/>\t\n            <msdn-id>dd368069</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FEATURE_TAG_GLYPH_COMPOSITION_DECOMPOSITION</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FEATURE_TAG_GLYPH_COMPOSITION_DECOMPOSITION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFeatureTag.ContextualLigatures\">\n            <summary>\t\n            <dd> <p> Replaces a sequence of glyphs with a single glyph which is preferred for typographic purposes. Unlike other ligature features, clig specifies the context in which the ligature is recommended. This capability is important in some script designs and for swash ligatures.</p> <p><strong>Equivalent OpenType tag:</strong> 'clig'</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FEATURE_TAG_CONTEXTUAL_LIGATURES']/*\"/>\t\n            <msdn-id>dd368069</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FEATURE_TAG_CONTEXTUAL_LIGATURES</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FEATURE_TAG_CONTEXTUAL_LIGATURES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFeatureTag.CapitalSpacing\">\n            <summary>\t\n            <dd> <p> Globally adjusts inter-glyph spacing for all-capital text. Most typefaces contain capitals and lowercase characters, and the capitals are positioned to work with the lowercase. When capitals are used for words, they need more space between them for legibility and esthetics. This feature would not apply to monospaced designs. Of course the user may want to override this behavior in order to do more pronounced letterspacing for esthetic reasons. </p> <p><strong>Equivalent OpenType tag:</strong> 'cpsp'</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FEATURE_TAG_CAPITAL_SPACING']/*\"/>\t\n            <msdn-id>dd368069</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FEATURE_TAG_CAPITAL_SPACING</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FEATURE_TAG_CAPITAL_SPACING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFeatureTag.ContextualSwash\">\n            <summary>\t\n            <dd> <p>Replaces default character glyphs with corresponding swash glyphs in a specified context. Note that there may be more than one swash alternate for a given character. </p> <p><strong>Equivalent OpenType tag:</strong> 'cswh'</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FEATURE_TAG_CONTEXTUAL_SWASH']/*\"/>\t\n            <msdn-id>dd368069</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FEATURE_TAG_CONTEXTUAL_SWASH</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FEATURE_TAG_CONTEXTUAL_SWASH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFeatureTag.CursivePositioning\">\n            <summary>\t\n            <dd> <p> In cursive scripts like Arabic, this feature cursively positions adjacent glyphs.</p> <p><strong>Equivalent OpenType tag:</strong> 'curs'</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FEATURE_TAG_CURSIVE_POSITIONING']/*\"/>\t\n            <msdn-id>dd368069</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FEATURE_TAG_CURSIVE_POSITIONING</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FEATURE_TAG_CURSIVE_POSITIONING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFeatureTag.Default\">\n            <summary>\t\n            <dd> <p> Replaces a sequence of glyphs with a single glyph which is preferred for typographic purposes. This feature covers those ligatures which may be used for special effect, at the user's preference.</p> <p><strong>Equivalent OpenType tag:</strong> 'dlig'</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FEATURE_TAG_DEFAULT']/*\"/>\t\n            <msdn-id>dd368069</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FEATURE_TAG_DEFAULT</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FEATURE_TAG_DEFAULT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFeatureTag.DiscretionaryLigatures\">\n            <summary>\t\n            <dd> <p> Replaces standard forms in Japanese fonts with corresponding forms preferred by typographers.  For example, a user would invoke this feature to replace kanji character U+5516 with U+555E.\t\n            </p> <p><strong>Equivalent OpenType tag:</strong> 'expt'</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FEATURE_TAG_DISCRETIONARY_LIGATURES']/*\"/>\t\n            <msdn-id>dd368069</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FEATURE_TAG_DISCRETIONARY_LIGATURES</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FEATURE_TAG_DISCRETIONARY_LIGATURES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFeatureTag.ExpertForms\">\n            <summary>\t\n            <dd> <p> Replaces figures separated by a slash with 'common' (diagonal) fractions.</p> <p><strong>Equivalent OpenType tag:</strong> 'frac'</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FEATURE_TAG_EXPERT_FORMS']/*\"/>\t\n            <msdn-id>dd368069</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FEATURE_TAG_EXPERT_FORMS</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FEATURE_TAG_EXPERT_FORMS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFeatureTag.Fractions\">\n            <summary>\t\n            <dd> <p> Replaces glyphs set on other widths with glyphs set on full (usually em) widths. In a CJKV font, this may include \"lower ASCII\" Latin characters and various symbols. In a European font, this feature replaces proportionally-spaced glyphs with monospaced glyphs, which are generally set on widths of 0.6 em. For example, a user may invoke this feature in a Japanese font to get full monospaced Latin glyphs instead of the corresponding proportionally-spaced versions.</p> <p><strong>Equivalent OpenType tag:</strong> 'fwid'</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FEATURE_TAG_FRACTIONS']/*\"/>\t\n            <msdn-id>dd368069</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FEATURE_TAG_FRACTIONS</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FEATURE_TAG_FRACTIONS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFeatureTag.FullWidth\">\n            <summary>\t\n            <dd> <p> Produces the half forms of consonants in Indic scripts. For example, in Hindi (Devanagari script), the conjunct KKa, obtained by doubling the Ka, is denoted with a half form of Ka followed by the full form. </p> <p><strong>Equivalent OpenType tag:</strong> 'half'</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FEATURE_TAG_FULL_WIDTH']/*\"/>\t\n            <msdn-id>dd368069</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FEATURE_TAG_FULL_WIDTH</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FEATURE_TAG_FULL_WIDTH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFeatureTag.HalfForms\">\n            <summary>\t\n            <dd> <p> Produces the halant forms of consonants in Indic scripts. For example, in Sanskrit (Devanagari script), syllable final consonants are frequently required in their halant form.</p> <p><strong>Equivalent OpenType tag:</strong> 'haln'</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FEATURE_TAG_HALF_FORMS']/*\"/>\t\n            <msdn-id>dd368069</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FEATURE_TAG_HALF_FORMS</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FEATURE_TAG_HALF_FORMS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFeatureTag.HalantForms\">\n            <summary>\t\n            <dd> <p> Respaces glyphs designed to be set on full-em widths, fitting them onto half-em widths. This differs from hwid in that it does not substitute new glyphs.</p> <p><strong>Equivalent OpenType tag:</strong> 'halt'</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FEATURE_TAG_HALANT_FORMS']/*\"/>\t\n            <msdn-id>dd368069</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FEATURE_TAG_HALANT_FORMS</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FEATURE_TAG_HALANT_FORMS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFeatureTag.AlternateHalfWidth\">\n            <summary>\t\n            <dd> <p> Replaces the default (current) forms with the historical alternates. While some ligatures are also used for historical effect, this feature deals only with single characters. Some fonts include the historical forms as alternates, so they can be used for a 'period' effect.  </p> <p><strong>Equivalent OpenType tag:</strong> 'hist'</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FEATURE_TAG_ALTERNATE_HALF_WIDTH']/*\"/>\t\n            <msdn-id>dd368069</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FEATURE_TAG_ALTERNATE_HALF_WIDTH</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FEATURE_TAG_ALTERNATE_HALF_WIDTH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFeatureTag.HistoricalForms\">\n            <summary>\t\n            <dd> <p> Replaces standard kana with forms that have been specially designed for only horizontal writing. This is a typographic optimization for improved fit and more even color.</p> <p><strong>Equivalent OpenType tag:</strong> 'hkna'</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FEATURE_TAG_HISTORICAL_FORMS']/*\"/>\t\n            <msdn-id>dd368069</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FEATURE_TAG_HISTORICAL_FORMS</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FEATURE_TAG_HISTORICAL_FORMS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFeatureTag.HorizontalKanaAlternates\">\n            <summary>\t\n            <dd> <p> Replaces the default (current) forms with the historical alternates. Some ligatures were in common use in the past, but appear anachronistic today. Some fonts include the historical forms as alternates, so they can be used for a 'period' effect.</p> <p><strong>Equivalent OpenType tag:</strong> 'hlig'</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FEATURE_TAG_HORIZONTAL_KANA_ALTERNATES']/*\"/>\t\n            <msdn-id>dd368069</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FEATURE_TAG_HORIZONTAL_KANA_ALTERNATES</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FEATURE_TAG_HORIZONTAL_KANA_ALTERNATES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFeatureTag.HistoricalLigatures\">\n            <summary>\t\n            <dd> <p> Replaces glyphs on proportional widths, or fixed widths other than half an em, with glyphs on half-em (en) widths. Many CJKV fonts have glyphs which are set on multiple widths; this feature selects the half-em version. There are various contexts in which this is the preferred behavior, including compatibility with older desktop documents.</p> <p><strong>Equivalent OpenType tag:</strong> 'hwid'</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FEATURE_TAG_HISTORICAL_LIGATURES']/*\"/>\t\n            <msdn-id>dd368069</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FEATURE_TAG_HISTORICAL_LIGATURES</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FEATURE_TAG_HISTORICAL_LIGATURES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFeatureTag.HalfWidth\">\n            <summary>\t\n            <dd> <p> Used to access the JIS X 0212-1990 glyphs for the cases when the JIS X 0213:2004 form is encoded. The JIS X 0212-1990 (aka, \"Hojo Kanji\") and JIS X 0213:2004 character sets overlap significantly. In some cases their prototypical glyphs differ. When building fonts that support both JIS X 0212-1990 and JIS X 0213:2004 (such as those supporting the Adobe-Japan 1-6 character collection), it is recommended that JIS X 0213:2004 forms be the preferred encoded form.</p> <p><strong>Equivalent OpenType tag:</strong> 'hojo'</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FEATURE_TAG_HALF_WIDTH']/*\"/>\t\n            <msdn-id>dd368069</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FEATURE_TAG_HALF_WIDTH</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FEATURE_TAG_HALF_WIDTH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFeatureTag.HojoKanjiForms\">\n            <summary>\t\n            <dd> <p> The National Language Council (NLC) of Japan has defined new glyph shapes for a number of JIS characters, which were incorporated into JIS X 0213:2004 as new prototypical forms. The 'jp04' feature is A subset of the 'nlck' feature, and is used to access these prototypical glyphs in a manner that maintains the integrity of JIS X 0213:2004.</p> <p><strong>Equivalent OpenType tag:</strong> 'jp04'</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FEATURE_TAG_HOJO_KANJI_FORMS']/*\"/>\t\n            <msdn-id>dd368069</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FEATURE_TAG_HOJO_KANJI_FORMS</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FEATURE_TAG_HOJO_KANJI_FORMS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFeatureTag.Jis04Forms\">\n            <summary>\t\n            <dd> <p>Replaces default (JIS90) Japanese glyphs with the corresponding forms from the JIS C 6226-1978 (JIS78) specification.</p> <p><strong>Equivalent OpenType tag:</strong> 'jp78'</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FEATURE_TAG_JIS04_FORMS']/*\"/>\t\n            <msdn-id>dd368069</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FEATURE_TAG_JIS04_FORMS</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FEATURE_TAG_JIS04_FORMS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFeatureTag.Jis78Forms\">\n            <summary>\t\n            <dd> <p>Replaces default (JIS90) Japanese glyphs with the corresponding forms from the JIS X 0208-1983 (JIS83) specification.</p> <p><strong>Equivalent OpenType tag:</strong> 'jp83'</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FEATURE_TAG_JIS78_FORMS']/*\"/>\t\n            <msdn-id>dd368069</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FEATURE_TAG_JIS78_FORMS</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FEATURE_TAG_JIS78_FORMS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFeatureTag.Jis83Forms\">\n            <summary>\t\n            <dd> <p> Replaces Japanese glyphs from the JIS78 or JIS83 specifications with the corresponding forms from the JIS X 0208-1990 (JIS90) specification.</p> <p><strong>Equivalent OpenType tag:</strong> 'jp90'</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FEATURE_TAG_JIS83_FORMS']/*\"/>\t\n            <msdn-id>dd368069</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FEATURE_TAG_JIS83_FORMS</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FEATURE_TAG_JIS83_FORMS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFeatureTag.Jis90Forms\">\n            <summary>\t\n            <dd> <p> Adjusts amount of space between glyphs, generally to provide optically consistent spacing between glyphs. Although a well-designed typeface has consistent inter-glyph spacing overall, some glyph combinations require adjustment for improved legibility. Besides standard adjustment in the horizontal direction, this feature can supply size-dependent kerning data via device tables, \"cross-stream\" kerning in the Y text direction, and adjustment of glyph placement independent of the advance adjustment. Note that this feature may apply to runs of more than two glyphs, and would not be used in monospaced fonts. Also note that this feature does not apply to text set vertically.</p> <p><strong>Equivalent OpenType tag:</strong> 'kern'</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FEATURE_TAG_JIS90_FORMS']/*\"/>\t\n            <msdn-id>dd368069</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FEATURE_TAG_JIS90_FORMS</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FEATURE_TAG_JIS90_FORMS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFeatureTag.Kerning\">\n            <summary>\t\n            <dd> <p> Replaces a sequence of glyphs with a single glyph which is preferred for typographic purposes. This feature covers the ligatures which the designer/manufacturer judges should be used in normal conditions.</p> <p><strong>Equivalent OpenType tag:</strong> 'liga'</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FEATURE_TAG_KERNING']/*\"/>\t\n            <msdn-id>dd368069</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FEATURE_TAG_KERNING</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FEATURE_TAG_KERNING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFeatureTag.StandardLigatures\">\n            <summary>\t\n            <dd> <p>Changes selected figures from oldstyle to the default lining form. For example, a user may invoke this feature in order to get lining figures, which fit better with all-capital text. This feature overrides results of the Oldstyle Figures feature (onum).</p> <p><strong>Equivalent OpenType tag:</strong> 'lnum'</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FEATURE_TAG_STANDARD_LIGATURES']/*\"/>\t\n            <msdn-id>dd368069</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FEATURE_TAG_STANDARD_LIGATURES</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FEATURE_TAG_STANDARD_LIGATURES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFeatureTag.LiningFigures\">\n            <summary>\t\n            <dd> <p> Enables localized forms of glyphs to be substituted for default forms. Many scripts used to write multiple languages over wide geographical areas have developed localized variant forms of specific letters, which are used by individual literary communities. For example, a number of letters in the Bulgarian and Serbian alphabets have forms distinct from their Russian counterparts and from each other. In some cases the localized form differs only subtly from the script 'norm', in others the forms are radically distinct. </p> <p><strong>Equivalent OpenType tag:</strong> 'locl'</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FEATURE_TAG_LINING_FIGURES']/*\"/>\t\n            <msdn-id>dd368069</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FEATURE_TAG_LINING_FIGURES</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FEATURE_TAG_LINING_FIGURES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFeatureTag.LocalizedForms\">\n            <summary>\t\n            <dd> <p> Positions mark glyphs with respect to base glyphs. For example, in Arabic script positioning the Hamza above the Yeh.</p> <p><strong>Equivalent OpenType tag: </strong> 'mark'</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FEATURE_TAG_LOCALIZED_FORMS']/*\"/>\t\n            <msdn-id>dd368069</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FEATURE_TAG_LOCALIZED_FORMS</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FEATURE_TAG_LOCALIZED_FORMS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFeatureTag.MarkPositioning\">\n            <summary>\t\n            <dd> <p> Replaces standard typographic forms of Greek glyphs with corresponding forms commonly used in mathematical notation (which are a subset of the Greek alphabet).</p> <p><strong>Equivalent OpenType tag:</strong> 'mgrk'</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FEATURE_TAG_MARK_POSITIONING']/*\"/>\t\n            <msdn-id>dd368069</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FEATURE_TAG_MARK_POSITIONING</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FEATURE_TAG_MARK_POSITIONING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFeatureTag.MathematicalGreek\">\n            <summary>\t\n            <dd> <p> Positions marks with respect to other marks. Required in various non-Latin scripts like Arabic. For example, in Arabic, the ligaturised mark Ha with Hamza above it can also be obtained by positioning these marks relative to one another.</p> <p><strong>Equivalent OpenType tag:</strong> 'mkmk'</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FEATURE_TAG_MATHEMATICAL_GREEK']/*\"/>\t\n            <msdn-id>dd368069</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FEATURE_TAG_MATHEMATICAL_GREEK</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FEATURE_TAG_MATHEMATICAL_GREEK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFeatureTag.MarkToMarkPositioning\">\n            <summary>\t\n            <dd> <p> Replaces default glyphs with various notational forms (such as glyphs placed in open or solid circles, squares, parentheses, diamonds or rounded boxes). In some cases an annotation form may already be present, but the user may want a different one.</p> <p><strong>Equivalent OpenType tag:</strong> 'nalt'</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FEATURE_TAG_MARK_TO_MARK_POSITIONING']/*\"/>\t\n            <msdn-id>dd368069</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FEATURE_TAG_MARK_TO_MARK_POSITIONING</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FEATURE_TAG_MARK_TO_MARK_POSITIONING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFeatureTag.AlternateAnnotationForms\">\n            <summary>\t\n            <dd> <p> Used to access  glyphs made from glyph shapes defined by the National Language Council (NLC) of Japan for a number of JIS characters in 2000. </p> <p><strong>Equivalent OpenType tag:</strong> 'nlck'</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FEATURE_TAG_ALTERNATE_ANNOTATION_FORMS']/*\"/>\t\n            <msdn-id>dd368069</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FEATURE_TAG_ALTERNATE_ANNOTATION_FORMS</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FEATURE_TAG_ALTERNATE_ANNOTATION_FORMS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFeatureTag.NlcKanjiForms\">\n            <summary>\t\n            <dd> <p> Changes selected figures from the default lining style to oldstyle form. For example, a user may invoke this feature to get oldstyle figures, which fit better into the flow of normal upper- and lowercase text. This feature overrides results of the Lining Figures feature (lnum).</p> <p><strong>Equivalent OpenType tag:</strong> 'onum'</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FEATURE_TAG_NLC_KANJI_FORMS']/*\"/>\t\n            <msdn-id>dd368069</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FEATURE_TAG_NLC_KANJI_FORMS</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FEATURE_TAG_NLC_KANJI_FORMS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFeatureTag.OldStyleFigures\">\n            <summary>\t\n            <dd> <p> Replaces default alphabetic glyphs with the corresponding ordinal forms for use after figures. One exception to the follows-a-figure rule is the numero character (U+2116), which is actually a ligature substitution, but is best accessed through this feature.</p> <p><strong>Equivalent OpenType tag:</strong> 'ordn'</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FEATURE_TAG_OLD_STYLE_FIGURES']/*\"/>\t\n            <msdn-id>dd368069</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FEATURE_TAG_OLD_STYLE_FIGURES</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FEATURE_TAG_OLD_STYLE_FIGURES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFeatureTag.Ordinals\">\n            <summary>\t\n            <dd> <p> Respaces glyphs designed to be set on full-em widths, fitting them onto individual (more or less proportional) horizontal widths. This differs from pwid in that it does not substitute new glyphs (GPOS, not GSUB feature). The user may prefer the monospaced form, or may simply want to ensure that the glyph is well-fit and not rotated in vertical setting (Latin forms designed for proportional spacing would be rotated).</p> <p><strong>Equivalent OpenType tag:</strong> 'palt'</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FEATURE_TAG_ORDINALS']/*\"/>\t\n            <msdn-id>dd368069</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FEATURE_TAG_ORDINALS</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FEATURE_TAG_ORDINALS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFeatureTag.ProportionalAlternateWidth\">\n            <summary>\t\n            <dd> <p>Turns lowercase characters into petite capitals. Forms related to petite capitals, such as specially designed figures, may be included. Some fonts contain an additional size of capital letters, shorter than the regular smallcaps and it is referred to as petite caps. Such forms are most likely to be found in designs with a small lowercase x-height, where they better harmonise with lowercase text than the taller smallcaps (for examples of petite caps, see the Emigre type families Mrs Eaves and Filosofia). </p> <p><strong>Equivalent OpenType tag:</strong> 'pcap'</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FEATURE_TAG_PROPORTIONAL_ALTERNATE_WIDTH']/*\"/>\t\n            <msdn-id>dd368069</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FEATURE_TAG_PROPORTIONAL_ALTERNATE_WIDTH</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FEATURE_TAG_PROPORTIONAL_ALTERNATE_WIDTH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFeatureTag.PetiteCapitals\">\n            <summary>\t\n            <dd> <p> Replaces figure glyphs set on uniform (tabular) widths with corresponding glyphs set on glyph-specific (proportional) widths. Tabular widths will generally be the default, but this cannot be safely assumed. Of course this feature would not be present in monospaced designs.</p> <p><strong>Equivalent OpenType tag:</strong> 'pnum'</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FEATURE_TAG_PETITE_CAPITALS']/*\"/>\t\n            <msdn-id>dd368069</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FEATURE_TAG_PETITE_CAPITALS</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FEATURE_TAG_PETITE_CAPITALS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFeatureTag.ProportionalFigures\">\n            <summary>\t\n            <dd> <p> Replaces glyphs set on uniform widths (typically full or half-em) with proportionally spaced glyphs. The proportional variants are often used for the Latin characters in CJKV fonts, but may also be used for Kana in Japanese fonts.</p> <p><strong>Equivalent OpenType tag:</strong> 'pwid'</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FEATURE_TAG_PROPORTIONAL_FIGURES']/*\"/>\t\n            <msdn-id>dd368069</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FEATURE_TAG_PROPORTIONAL_FIGURES</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FEATURE_TAG_PROPORTIONAL_FIGURES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFeatureTag.ProportionalWidths\">\n            <summary>\t\n            <dd> <p> Replaces glyphs on other widths with glyphs set on widths of one quarter of an em (half an en). The characters involved are normally figures and some forms of punctuation.</p> <p><strong>Equivalent OpenType tag:</strong> 'qwid'</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FEATURE_TAG_PROPORTIONAL_WIDTHS']/*\"/>\t\n            <msdn-id>dd368069</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FEATURE_TAG_PROPORTIONAL_WIDTHS</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FEATURE_TAG_PROPORTIONAL_WIDTHS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFeatureTag.QuarterWidths\">\n            <summary>\t\n            <dd> <p> Replaces a sequence of glyphs with a single glyph which is preferred for typographic purposes. This feature covers those ligatures, which the script determines as required to be used in normal conditions. This feature is important for some scripts to ensure correct glyph formation. </p> <p><strong>Equivalent OpenType tag:</strong> 'rlig'</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FEATURE_TAG_QUARTER_WIDTHS']/*\"/>\t\n            <msdn-id>dd368069</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FEATURE_TAG_QUARTER_WIDTHS</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FEATURE_TAG_QUARTER_WIDTHS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFeatureTag.RequiredLigatures\">\n            <summary>\t\n            <dd> <p> Identifies glyphs in the font which have been designed for \"ruby\", from the old typesetting term for four-point-sized type. Japanese typesetting often uses smaller kana glyphs, generally in superscripted form, to clarify the meaning of kanji which may be unfamiliar to the reader. </p> <p><strong>Equivalent OpenType tag:</strong> 'ruby'</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FEATURE_TAG_REQUIRED_LIGATURES']/*\"/>\t\n            <msdn-id>dd368069</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FEATURE_TAG_REQUIRED_LIGATURES</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FEATURE_TAG_REQUIRED_LIGATURES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFeatureTag.RubyNotationForms\">\n            <summary>\t\n            <dd> <p> Replaces the default forms with the stylistic alternates. Many fonts contain alternate glyph designs for a purely esthetic effect; these don't always fit into a clear category like swash or historical. As in the case of swash glyphs, there may be more than one alternate form.  </p> <p><strong>Equivalent OpenType tag:</strong> 'salt'</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FEATURE_TAG_RUBY_NOTATION_FORMS']/*\"/>\t\n            <msdn-id>dd368069</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FEATURE_TAG_RUBY_NOTATION_FORMS</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FEATURE_TAG_RUBY_NOTATION_FORMS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFeatureTag.StylisticAlternates\">\n            <summary>\t\n            <dd> <p> Replaces lining or oldstyle figures with inferior figures (smaller glyphs which sit lower than the standard baseline, primarily for chemical or mathematical notation). May also replace lowercase characters with alphabetic inferiors.</p> <p><strong>Equivalent OpenType tag:</strong> 'sinf'</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FEATURE_TAG_STYLISTIC_ALTERNATES']/*\"/>\t\n            <msdn-id>dd368069</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FEATURE_TAG_STYLISTIC_ALTERNATES</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FEATURE_TAG_STYLISTIC_ALTERNATES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFeatureTag.ScientificInferiors\">\n            <summary>\t\n            <dd> <p> Turns lowercase characters into small capitals. This corresponds to the common SC font layout. It is generally used for display lines set in Large &amp; small caps, such as titles. Forms related to small capitals, such as oldstyle figures, may be included.</p> <p><strong>Equivalent OpenType tag:</strong> 'smcp'</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FEATURE_TAG_SCIENTIFIC_INFERIORS']/*\"/>\t\n            <msdn-id>dd368069</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FEATURE_TAG_SCIENTIFIC_INFERIORS</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FEATURE_TAG_SCIENTIFIC_INFERIORS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFeatureTag.SmallCapitals\">\n            <summary>\t\n            <dd> <p> Replaces 'traditional' Chinese or Japanese forms with the corresponding 'simplified' forms.</p> <p><strong>Equivalent OpenType tag:</strong> 'smpl'</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FEATURE_TAG_SMALL_CAPITALS']/*\"/>\t\n            <msdn-id>dd368069</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FEATURE_TAG_SMALL_CAPITALS</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FEATURE_TAG_SMALL_CAPITALS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFeatureTag.SimplifiedForms\">\n            <summary>\t\n            <dd> <p> In addition to, or instead of, stylistic alternatives of individual glyphs (see 'salt' feature), some fonts may contain sets of stylistic variant glyphs corresponding to portions of the character set, such as multiple variants for lowercase letters in a Latin font. Glyphs in stylistic sets may be designed to harmonise visually, interract in particular ways, or otherwise work together. Examples of fonts including stylistic sets are Zapfino Linotype and Adobe's Poetica. Individual features numbered sequentially with the tag name convention 'ss01' 'ss02' 'ss03' . 'ss20' provide a mechanism for glyphs in these sets to be associated via GSUB lookup indexes to default forms and to each other, and for users to select from available stylistic sets</p> <p><strong>Equivalent OpenType tag:</strong> 'ss01'</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FEATURE_TAG_SIMPLIFIED_FORMS']/*\"/>\t\n            <msdn-id>dd368069</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FEATURE_TAG_SIMPLIFIED_FORMS</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FEATURE_TAG_SIMPLIFIED_FORMS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFeatureTag.StylisticSet1\">\n            <summary>\t\n            <dd> <p>See the description for <see cref=\"F:SharpDX.DirectWrite.FontFeatureTag.StylisticSet1\"/>.</p> <p><strong>Equivalent OpenType tag:</strong> 'ss02'</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_1']/*\"/>\t\n            <msdn-id>dd368069</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_1</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFeatureTag.StylisticSet2\">\n            <summary>\t\n            <dd> <p>See the description for <see cref=\"F:SharpDX.DirectWrite.FontFeatureTag.StylisticSet1\"/>.</p> <p><strong>Equivalent OpenType tag:</strong> 'ss03'</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_2']/*\"/>\t\n            <msdn-id>dd368069</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_2</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFeatureTag.StylisticSet3\">\n            <summary>\t\n            <dd> <p>See the description for <see cref=\"F:SharpDX.DirectWrite.FontFeatureTag.StylisticSet1\"/>.</p> <p><strong>Equivalent OpenType tag:</strong> 'ss04'</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_3']/*\"/>\t\n            <msdn-id>dd368069</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_3</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_3</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFeatureTag.StylisticSet4\">\n            <summary>\t\n            <dd> <p>See the description for <see cref=\"F:SharpDX.DirectWrite.FontFeatureTag.StylisticSet1\"/>.</p> <p><strong>Equivalent OpenType tag:</strong> 'ss05'</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_4']/*\"/>\t\n            <msdn-id>dd368069</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_4</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_4</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFeatureTag.StylisticSet5\">\n            <summary>\t\n            <dd> <p>See the description for <see cref=\"F:SharpDX.DirectWrite.FontFeatureTag.StylisticSet1\"/>.</p> <p><strong>Equivalent OpenType tag:</strong> 'ss06'</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_5']/*\"/>\t\n            <msdn-id>dd368069</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_5</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_5</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFeatureTag.StylisticSet6\">\n            <summary>\t\n            <dd> <p>See the description for <see cref=\"F:SharpDX.DirectWrite.FontFeatureTag.StylisticSet1\"/>.</p> <p><strong>Equivalent OpenType tag:</strong> 'ss07'</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_6']/*\"/>\t\n            <msdn-id>dd368069</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_6</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_6</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFeatureTag.StylisticSet7\">\n            <summary>\t\n            <dd> <p>See the description for <see cref=\"F:SharpDX.DirectWrite.FontFeatureTag.StylisticSet1\"/>.</p> <p><strong>Equivalent OpenType tag:</strong> 'ss08'</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_7']/*\"/>\t\n            <msdn-id>dd368069</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_7</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_7</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFeatureTag.StylisticSet8\">\n            <summary>\t\n            <dd> <p>See the description for <see cref=\"F:SharpDX.DirectWrite.FontFeatureTag.StylisticSet1\"/>.</p> <p><strong>Equivalent OpenType tag:</strong> 'ss09'</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_8']/*\"/>\t\n            <msdn-id>dd368069</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_8</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_8</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFeatureTag.StylisticSet9\">\n            <summary>\t\n            <dd> <p>See the description for <see cref=\"F:SharpDX.DirectWrite.FontFeatureTag.StylisticSet1\"/>.</p> <p><strong>Equivalent OpenType tag:</strong> 'ss10'</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_9']/*\"/>\t\n            <msdn-id>dd368069</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_9</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_9</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFeatureTag.StylisticSet10\">\n            <summary>\t\n            <dd> <p>See the description for <see cref=\"F:SharpDX.DirectWrite.FontFeatureTag.StylisticSet1\"/>.</p> <p><strong>Equivalent OpenType tag:</strong> 'ss11'</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_10']/*\"/>\t\n            <msdn-id>dd368069</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_10</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_10</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFeatureTag.StylisticSet11\">\n            <summary>\t\n            <dd> <p>See the description for <see cref=\"F:SharpDX.DirectWrite.FontFeatureTag.StylisticSet1\"/>.</p> <p><strong>Equivalent OpenType tag:</strong> 'ss12'</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_11']/*\"/>\t\n            <msdn-id>dd368069</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_11</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_11</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFeatureTag.StylisticSet12\">\n            <summary>\t\n            <dd> <p>See the description for <see cref=\"F:SharpDX.DirectWrite.FontFeatureTag.StylisticSet1\"/>.</p> <p><strong>Equivalent OpenType tag:</strong> 'ss13'</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_12']/*\"/>\t\n            <msdn-id>dd368069</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_12</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_12</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFeatureTag.StylisticSet13\">\n            <summary>\t\n            <dd> <p>See the description for <see cref=\"F:SharpDX.DirectWrite.FontFeatureTag.StylisticSet1\"/>.</p> <p><strong>Equivalent OpenType tag:</strong> 'ss14'</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_13']/*\"/>\t\n            <msdn-id>dd368069</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_13</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_13</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFeatureTag.StylisticSet14\">\n            <summary>\t\n            <dd> <p>See the description for <see cref=\"F:SharpDX.DirectWrite.FontFeatureTag.StylisticSet1\"/>.</p> <p><strong>Equivalent OpenType tag:</strong> 'ss15'</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_14']/*\"/>\t\n            <msdn-id>dd368069</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_14</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_14</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFeatureTag.StylisticSet15\">\n            <summary>\t\n            <dd> <p>See the description for <see cref=\"F:SharpDX.DirectWrite.FontFeatureTag.StylisticSet1\"/>.</p> <p><strong>Equivalent OpenType tag:</strong> 'ss16'</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_15']/*\"/>\t\n            <msdn-id>dd368069</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_15</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_15</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFeatureTag.StylisticSet16\">\n            <summary>\t\n            <dd> <p>See the description for <see cref=\"F:SharpDX.DirectWrite.FontFeatureTag.StylisticSet1\"/>.</p> <p><strong>Equivalent OpenType tag:</strong> 'ss17'</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_16']/*\"/>\t\n            <msdn-id>dd368069</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_16</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_16</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFeatureTag.StylisticSet17\">\n            <summary>\t\n            <dd> <p>See the description for <see cref=\"F:SharpDX.DirectWrite.FontFeatureTag.StylisticSet1\"/>.</p> <p><strong>Equivalent OpenType tag:</strong> 'ss18'</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_17']/*\"/>\t\n            <msdn-id>dd368069</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_17</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_17</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFeatureTag.StylisticSet18\">\n            <summary>\t\n            <dd> <p>See the description for <see cref=\"F:SharpDX.DirectWrite.FontFeatureTag.StylisticSet1\"/>.</p> <p><strong>Equivalent OpenType tag:</strong> 'ss19'</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_18']/*\"/>\t\n            <msdn-id>dd368069</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_18</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_18</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFeatureTag.StylisticSet19\">\n            <summary>\t\n            <dd> <p>See the description for <see cref=\"F:SharpDX.DirectWrite.FontFeatureTag.StylisticSet1\"/>.</p> <p><strong>Equivalent OpenType tag:</strong> 'ss20'</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_19']/*\"/>\t\n            <msdn-id>dd368069</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_19</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_19</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFeatureTag.StylisticSet20\">\n            <summary>\t\n            <dd> <p> May replace a default glyph with a subscript glyph, or it may combine a glyph substitution with positioning adjustments for proper placement.</p> <p><strong>Equivalent OpenType tag:</strong> 'subs'</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_20']/*\"/>\t\n            <msdn-id>dd368069</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_20</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_20</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFeatureTag.Subscript\">\n            <summary>\t\n            <dd> <p> Replaces lining or oldstyle figures with superior figures (primarily for footnote indication), and replaces lowercase letters with superior letters (primarily for abbreviated French titles).</p> <p><strong>Equivalent OpenType tag:</strong> 'sups'</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FEATURE_TAG_SUBSCRIPT']/*\"/>\t\n            <msdn-id>dd368069</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FEATURE_TAG_SUBSCRIPT</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FEATURE_TAG_SUBSCRIPT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFeatureTag.Superscript\">\n            <summary>\t\n            <dd> <p> Replaces default character glyphs with corresponding swash glyphs. Note that there may be more than one swash alternate for a given character.</p> <p><strong>Equivalent OpenType tag:</strong> 'swsh'</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FEATURE_TAG_SUPERSCRIPT']/*\"/>\t\n            <msdn-id>dd368069</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FEATURE_TAG_SUPERSCRIPT</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FEATURE_TAG_SUPERSCRIPT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFeatureTag.Swash\">\n            <summary>\t\n            <dd> <p> Replaces the default glyphs with corresponding forms designed specifically for titling. These may be all-capital and/or larger on the body, and adjusted for viewing at larger sizes.</p> <p><strong>Equivalent OpenType tag:</strong> 'titl'</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FEATURE_TAG_SWASH']/*\"/>\t\n            <msdn-id>dd368069</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FEATURE_TAG_SWASH</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FEATURE_TAG_SWASH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFeatureTag.Titling\">\n            <summary>\t\n            <dd> <p> Replaces 'simplified' Japanese kanji forms with the corresponding 'traditional' forms. This is equivalent to the Traditional Forms feature, but explicitly limited to the traditional forms considered proper for use in personal names (as many as 205 glyphs in some fonts).</p> <p><strong>Equivalent OpenType tag:</strong> 'tnam'</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FEATURE_TAG_TITLING']/*\"/>\t\n            <msdn-id>dd368069</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FEATURE_TAG_TITLING</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FEATURE_TAG_TITLING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFeatureTag.TraditionalNameForms\">\n            <summary>\t\n            <dd> <p> Replaces figure glyphs set on proportional widths with corresponding glyphs set on uniform (tabular) widths. Tabular widths will generally be the default, but this cannot be safely assumed. Of course this feature would not be present in monospaced designs.</p> <p><strong>Equivalent OpenType tag:</strong> 'tnum'</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FEATURE_TAG_TRADITIONAL_NAME_FORMS']/*\"/>\t\n            <msdn-id>dd368069</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FEATURE_TAG_TRADITIONAL_NAME_FORMS</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FEATURE_TAG_TRADITIONAL_NAME_FORMS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFeatureTag.TabularFigures\">\n            <summary>\t\n            <dd> <p> Replaces 'simplified' Chinese hanzi or Japanese kanji forms with the corresponding 'traditional' forms.</p> <p><strong>Equivalent OpenType tag:</strong> 'trad'</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FEATURE_TAG_TABULAR_FIGURES']/*\"/>\t\n            <msdn-id>dd368069</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FEATURE_TAG_TABULAR_FIGURES</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FEATURE_TAG_TABULAR_FIGURES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFeatureTag.TraditionalForms\">\n            <summary>\t\n            <dd> <p> Replaces glyphs on other widths with glyphs set on widths of one third of an em. The characters involved are normally figures and some forms of punctuation.</p> <p><strong>Equivalent OpenType tag:</strong> 'twid'</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FEATURE_TAG_TRADITIONAL_FORMS']/*\"/>\t\n            <msdn-id>dd368069</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FEATURE_TAG_TRADITIONAL_FORMS</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FEATURE_TAG_TRADITIONAL_FORMS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFeatureTag.ThirdWidths\">\n            <summary>\t\n            <dd> <p> Maps upper- and lowercase letters to a mixed set of lowercase and small capital forms, resulting in a single case alphabet (for an example of unicase, see the Emigre type family Filosofia). The letters substituted may vary from font to font, as appropriate to the design. If aligning to the x-height, smallcap glyphs may be substituted, or specially designed unicase forms might be used. Substitutions might also include specially designed figures.\t\n            </p> <p><strong>Equivalent OpenType tag:</strong> 'unic'</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FEATURE_TAG_THIRD_WIDTHS']/*\"/>\t\n            <msdn-id>dd368069</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FEATURE_TAG_THIRD_WIDTHS</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FEATURE_TAG_THIRD_WIDTHS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFeatureTag.Unicase\">\n            <summary>\t\n            <dd> <p>Allows the user to change from the default 0 to a slashed form. Some fonts contain both a default form of zero, and an alternative form which uses a diagonal slash through the counter. Especially in condensed designs, it can be difficult to distinguish between 0 and O (zero and capital O) in any situation where capitals and lining figures may be arbitrarily mixed. </p> <p><strong>Equivalent OpenType tag:</strong> 'zero'</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FEATURE_TAG_UNICASE']/*\"/>\t\n            <msdn-id>dd368069</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FEATURE_TAG_UNICASE</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FEATURE_TAG_UNICASE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFeatureTag.SlashedZero\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FEATURE_TAG_SLASHED_ZERO']/*\"/>\t\n            <unmanaged>DWRITE_FONT_FEATURE_TAG_SLASHED_ZERO</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FEATURE_TAG_SLASHED_ZERO</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.FontFileType\">\n            <summary>\t\n            <p>The type of a font represented by a single font file. Font formats that consist of multiple files, for example Type 1 .PFM and .PFB, have separate enum values for each of the file types.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FILE_TYPE']/*\"/>\t\n            <msdn-id>dd368072</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FILE_TYPE</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FILE_TYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFileType.Unknown\">\n            <summary>\t\n            <dd> <p>Font type is not recognized by the DirectWrite font system.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FILE_TYPE_UNKNOWN']/*\"/>\t\n            <msdn-id>dd368072</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FILE_TYPE_UNKNOWN</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FILE_TYPE_UNKNOWN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFileType.Cff\">\n            <summary>\t\n            <dd> <p>OpenType font with CFF outlines.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FILE_TYPE_CFF']/*\"/>\t\n            <msdn-id>dd368072</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FILE_TYPE_CFF</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FILE_TYPE_CFF</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFileType.Truetype\">\n            <summary>\t\n            <dd> <p>OpenType font with TrueType outlines.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FILE_TYPE_TRUETYPE']/*\"/>\t\n            <msdn-id>dd368072</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FILE_TYPE_TRUETYPE</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FILE_TYPE_TRUETYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFileType.TruetypeCollection\">\n            <summary>\t\n            <dd> <p>OpenType font that contains a TrueType collection.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FILE_TYPE_TRUETYPE_COLLECTION']/*\"/>\t\n            <msdn-id>dd368072</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FILE_TYPE_TRUETYPE_COLLECTION</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FILE_TYPE_TRUETYPE_COLLECTION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFileType.Type1Pfm\">\n            <summary>\t\n            <dd> <p>Type 1 PFM font.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FILE_TYPE_TYPE1_PFM']/*\"/>\t\n            <msdn-id>dd368072</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FILE_TYPE_TYPE1_PFM</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FILE_TYPE_TYPE1_PFM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFileType.Type1Pfb\">\n            <summary>\t\n            <dd> <p>Type 1 PFB font.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FILE_TYPE_TYPE1_PFB']/*\"/>\t\n            <msdn-id>dd368072</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FILE_TYPE_TYPE1_PFB</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FILE_TYPE_TYPE1_PFB</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFileType.Vector\">\n            <summary>\t\n            <dd> <p>Vector .FON font.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FILE_TYPE_VECTOR']/*\"/>\t\n            <msdn-id>dd368072</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FILE_TYPE_VECTOR</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FILE_TYPE_VECTOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontFileType.Bitmap\">\n            <summary>\t\n            <dd> <p>Bitmap .FON font.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_FILE_TYPE_BITMAP']/*\"/>\t\n            <msdn-id>dd368072</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FILE_TYPE_BITMAP</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FILE_TYPE_BITMAP</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.FontSimulations\">\n            <summary>\t\n            <p>Specifies algorithmic style simulations to be applied to the font face. Bold and oblique simulations can be combined via bitwise OR operation.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p> Style simulations are not recommended for good typographic quality.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_SIMULATIONS']/*\"/>\t\n            <msdn-id>dd368076</msdn-id>\t\n            <unmanaged>DWRITE_FONT_SIMULATIONS</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_SIMULATIONS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontSimulations.None\">\n            <summary>\t\n            <dd> <p>Indicates that no simulations are applied to the font face.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_SIMULATIONS_NONE']/*\"/>\t\n            <msdn-id>dd368076</msdn-id>\t\n            <unmanaged>DWRITE_FONT_SIMULATIONS_NONE</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_SIMULATIONS_NONE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontSimulations.Bold\">\n            <summary>\t\n            <dd> <p>Indicates that algorithmic emboldening is applied to the font face.  <see cref=\"F:SharpDX.DirectWrite.FontSimulations.Bold\"/> increases weight by applying a widening algorithm to the glyph outline. This may  be used to simulate a bold weight where no designed bold weight is available.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_SIMULATIONS_BOLD']/*\"/>\t\n            <msdn-id>dd368076</msdn-id>\t\n            <unmanaged>DWRITE_FONT_SIMULATIONS_BOLD</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_SIMULATIONS_BOLD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontSimulations.Oblique\">\n            <summary>\t\n            <dd> <p>Indicates that algorithmic italicization is applied to the font face. <see cref=\"F:SharpDX.DirectWrite.FontSimulations.Oblique\"/> applies obliquing (shear) to the glyph outline. This may be used to simulate an oblique/italic style where no designed oblique/italic style is available.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_SIMULATIONS_OBLIQUE']/*\"/>\t\n            <msdn-id>dd368076</msdn-id>\t\n            <unmanaged>DWRITE_FONT_SIMULATIONS_OBLIQUE</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_SIMULATIONS_OBLIQUE</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.FontStretch\">\n            <summary>\t\n            <p>Represents the degree to which a font has been stretched compared to a font's normal aspect ratio. The enumerated values correspond to the <em>usWidthClass</em> definition in the OpenType specification. The usWidthClass represents an integer value between 1 and 9?lower values indicate narrower widths; higher values indicate wider widths.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>A font stretch describes the degree to which a font form is stretched from its normal aspect ratio, which is the original width to height ratio specified for the glyphs in the font. \t\n            The following illustration shows an example of Normal and Condensed stretches for the Rockwell Bold typeface.</p><p></p><p><strong>Note</strong>??Values other than the ones defined in the enumeration are considered to be invalid, and are rejected by font API functions.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_STRETCH']/*\"/>\t\n            <msdn-id>dd368078</msdn-id>\t\n            <unmanaged>DWRITE_FONT_STRETCH</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_STRETCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontStretch.Undefined\">\n            <summary>\t\n            <dd> <p>Predefined font stretch : Not known (0).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_STRETCH_UNDEFINED']/*\"/>\t\n            <msdn-id>dd368078</msdn-id>\t\n            <unmanaged>DWRITE_FONT_STRETCH_UNDEFINED</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_STRETCH_UNDEFINED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontStretch.UltraCondensed\">\n            <summary>\t\n            <dd> <p>Predefined font stretch : Ultra-condensed (1).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_STRETCH_ULTRA_CONDENSED']/*\"/>\t\n            <msdn-id>dd368078</msdn-id>\t\n            <unmanaged>DWRITE_FONT_STRETCH_ULTRA_CONDENSED</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_STRETCH_ULTRA_CONDENSED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontStretch.ExtraCondensed\">\n            <summary>\t\n            <dd> <p>Predefined font stretch : Extra-condensed (2).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_STRETCH_EXTRA_CONDENSED']/*\"/>\t\n            <msdn-id>dd368078</msdn-id>\t\n            <unmanaged>DWRITE_FONT_STRETCH_EXTRA_CONDENSED</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_STRETCH_EXTRA_CONDENSED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontStretch.Condensed\">\n            <summary>\t\n            <dd> <p>Predefined font stretch : Condensed (3).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_STRETCH_CONDENSED']/*\"/>\t\n            <msdn-id>dd368078</msdn-id>\t\n            <unmanaged>DWRITE_FONT_STRETCH_CONDENSED</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_STRETCH_CONDENSED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontStretch.SemiCondensed\">\n            <summary>\t\n            <dd> <p>Predefined font stretch : Semi-condensed (4).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_STRETCH_SEMI_CONDENSED']/*\"/>\t\n            <msdn-id>dd368078</msdn-id>\t\n            <unmanaged>DWRITE_FONT_STRETCH_SEMI_CONDENSED</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_STRETCH_SEMI_CONDENSED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontStretch.Normal\">\n            <summary>\t\n            <dd> <p>Predefined font stretch : Normal (5).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_STRETCH_NORMAL']/*\"/>\t\n            <msdn-id>dd368078</msdn-id>\t\n            <unmanaged>DWRITE_FONT_STRETCH_NORMAL</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_STRETCH_NORMAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontStretch.Medium\">\n            <summary>\t\n            <dd> <p>Predefined font stretch : Medium (5).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_STRETCH_MEDIUM']/*\"/>\t\n            <msdn-id>dd368078</msdn-id>\t\n            <unmanaged>DWRITE_FONT_STRETCH_MEDIUM</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_STRETCH_MEDIUM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontStretch.SemiExpanded\">\n            <summary>\t\n            <dd> <p>Predefined font stretch : Semi-expanded (6).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_STRETCH_SEMI_EXPANDED']/*\"/>\t\n            <msdn-id>dd368078</msdn-id>\t\n            <unmanaged>DWRITE_FONT_STRETCH_SEMI_EXPANDED</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_STRETCH_SEMI_EXPANDED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontStretch.Expanded\">\n            <summary>\t\n            <dd> <p>Predefined font stretch : Expanded (7).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_STRETCH_EXPANDED']/*\"/>\t\n            <msdn-id>dd368078</msdn-id>\t\n            <unmanaged>DWRITE_FONT_STRETCH_EXPANDED</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_STRETCH_EXPANDED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontStretch.ExtraExpanded\">\n            <summary>\t\n            <dd> <p>Predefined font stretch : Extra-expanded (8).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_STRETCH_EXTRA_EXPANDED']/*\"/>\t\n            <msdn-id>dd368078</msdn-id>\t\n            <unmanaged>DWRITE_FONT_STRETCH_EXTRA_EXPANDED</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_STRETCH_EXTRA_EXPANDED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontStretch.UltraExpanded\">\n            <summary>\t\n            <dd> <p>Predefined font stretch : Ultra-expanded (9).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_STRETCH_ULTRA_EXPANDED']/*\"/>\t\n            <msdn-id>dd368078</msdn-id>\t\n            <unmanaged>DWRITE_FONT_STRETCH_ULTRA_EXPANDED</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_STRETCH_ULTRA_EXPANDED</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.FontStyle\">\n            <summary>\t\n            <p>Represents the style of a font face as normal, italic, or oblique.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Three terms categorize the slant of a font: normal, italic, and oblique. </p><table> <tr><th>Font style</th><th>Description</th></tr> <tr><td>Normal</td><td>The characters in a normal, or roman, font are upright. \t\n            </td></tr> <tr><td>Italic \t\n            </td><td>The characters in an italic font are truly slanted and appear as they were designed. \t\n            </td></tr> <tr><td>Oblique</td><td>The characters in an oblique font are artificially slanted.</td></tr> </table><p>?</p><p>For Oblique, the slant is achieved by performing a shear transformation on the characters from a normal font. When a true italic font is not available on a computer or printer, an oblique style can be generated from the normal font and used to simulate an italic font.  The following illustration shows the normal, italic, and oblique font styles for the Palatino Linotype font. Notice how the italic font style has a more flowing and visually appealing appearance than the oblique font style, which is simply created by skewing the normal font style version of the text.</p><p></p><p><strong>Note</strong>?? Values other than the ones defined in the enumeration are considered to be invalid, and they are rejected by font API functions.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_STYLE']/*\"/>\t\n            <msdn-id>dd368080</msdn-id>\t\n            <unmanaged>DWRITE_FONT_STYLE</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_STYLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontStyle.Normal\">\n            <summary>\t\n            <dd> <p>Font style : Normal.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_STYLE_NORMAL']/*\"/>\t\n            <msdn-id>dd368080</msdn-id>\t\n            <unmanaged>DWRITE_FONT_STYLE_NORMAL</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_STYLE_NORMAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontStyle.Oblique\">\n            <summary>\t\n            <dd> <p>Font style : Oblique. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_STYLE_OBLIQUE']/*\"/>\t\n            <msdn-id>dd368080</msdn-id>\t\n            <unmanaged>DWRITE_FONT_STYLE_OBLIQUE</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_STYLE_OBLIQUE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontStyle.Italic\">\n            <summary>\t\n            <dd> <p>Font style : Italic.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_STYLE_ITALIC']/*\"/>\t\n            <msdn-id>dd368080</msdn-id>\t\n            <unmanaged>DWRITE_FONT_STYLE_ITALIC</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_STYLE_ITALIC</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.FontWeight\">\n            <summary>\t\n            <p>Represents the density of a typeface, in terms of the lightness or heaviness of the strokes. The enumerated values correspond to the usWeightClass definition in the OpenType specification. The <em>usWeightClass</em> represents an integer value between 1 and 999. Lower values indicate lighter weights; higher values indicate heavier weights.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Weight differences are generally differentiated by an increased stroke or thickness that is associated with a given character in a typeface, as compared to a \"normal\" character from that same typeface. \t\n            The following illustration shows an example of Normal and UltraBold weights for the Palatino Linotype typeface.</p><p></p><p><strong>Note</strong>??Not all weights are available for all typefaces. When a weight is not available for a typeface, the closest matching weight is returned.</p><p>Font weight values less than 1 or greater than 999 are considered invalid, and they are rejected by font API functions.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_WEIGHT']/*\"/>\t\n            <msdn-id>dd368082</msdn-id>\t\n            <unmanaged>DWRITE_FONT_WEIGHT</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_WEIGHT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontWeight.Thin\">\n            <summary>\t\n            <dd> <p>Predefined font weight : Thin (100).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_WEIGHT_THIN']/*\"/>\t\n            <msdn-id>dd368082</msdn-id>\t\n            <unmanaged>DWRITE_FONT_WEIGHT_THIN</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_WEIGHT_THIN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontWeight.ExtraLight\">\n            <summary>\t\n            <dd> <p>Predefined font weight : Extra-light (200).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_WEIGHT_EXTRA_LIGHT']/*\"/>\t\n            <msdn-id>dd368082</msdn-id>\t\n            <unmanaged>DWRITE_FONT_WEIGHT_EXTRA_LIGHT</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_WEIGHT_EXTRA_LIGHT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontWeight.UltraLight\">\n            <summary>\t\n            <dd> <p>Predefined font weight : Ultra-light (200).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_WEIGHT_ULTRA_LIGHT']/*\"/>\t\n            <msdn-id>dd368082</msdn-id>\t\n            <unmanaged>DWRITE_FONT_WEIGHT_ULTRA_LIGHT</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_WEIGHT_ULTRA_LIGHT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontWeight.Light\">\n            <summary>\t\n            <dd> <p>Predefined font weight : Light (300).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_WEIGHT_LIGHT']/*\"/>\t\n            <msdn-id>dd368082</msdn-id>\t\n            <unmanaged>DWRITE_FONT_WEIGHT_LIGHT</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_WEIGHT_LIGHT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontWeight.Normal\">\n            <summary>\t\n            <dd> <p>Predefined font weight : Normal (400).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_WEIGHT_NORMAL']/*\"/>\t\n            <msdn-id>dd368082</msdn-id>\t\n            <unmanaged>DWRITE_FONT_WEIGHT_NORMAL</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_WEIGHT_NORMAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontWeight.Regular\">\n            <summary>\t\n            <dd> <p>Predefined font weight : Regular (400).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_WEIGHT_REGULAR']/*\"/>\t\n            <msdn-id>dd368082</msdn-id>\t\n            <unmanaged>DWRITE_FONT_WEIGHT_REGULAR</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_WEIGHT_REGULAR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontWeight.Medium\">\n            <summary>\t\n            <dd> <p>Predefined font weight : Medium (500).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_WEIGHT_MEDIUM']/*\"/>\t\n            <msdn-id>dd368082</msdn-id>\t\n            <unmanaged>DWRITE_FONT_WEIGHT_MEDIUM</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_WEIGHT_MEDIUM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontWeight.DemiBold\">\n            <summary>\t\n            <dd> <p>Predefined font weight : Demi-bold (600).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_WEIGHT_DEMI_BOLD']/*\"/>\t\n            <msdn-id>dd368082</msdn-id>\t\n            <unmanaged>DWRITE_FONT_WEIGHT_DEMI_BOLD</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_WEIGHT_DEMI_BOLD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontWeight.SemiBold\">\n            <summary>\t\n            <dd> <p>Predefined font weight : Semi-bold (600).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_WEIGHT_SEMI_BOLD']/*\"/>\t\n            <msdn-id>dd368082</msdn-id>\t\n            <unmanaged>DWRITE_FONT_WEIGHT_SEMI_BOLD</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_WEIGHT_SEMI_BOLD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontWeight.Bold\">\n            <summary>\t\n            <dd> <p>Predefined font weight : Bold (700).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_WEIGHT_BOLD']/*\"/>\t\n            <msdn-id>dd368082</msdn-id>\t\n            <unmanaged>DWRITE_FONT_WEIGHT_BOLD</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_WEIGHT_BOLD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontWeight.ExtraBold\">\n            <summary>\t\n            <dd> <p>Predefined font weight : Extra-bold (800).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_WEIGHT_EXTRA_BOLD']/*\"/>\t\n            <msdn-id>dd368082</msdn-id>\t\n            <unmanaged>DWRITE_FONT_WEIGHT_EXTRA_BOLD</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_WEIGHT_EXTRA_BOLD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontWeight.UltraBold\">\n            <summary>\t\n            <dd> <p>Predefined font weight : Ultra-bold (800).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_WEIGHT_ULTRA_BOLD']/*\"/>\t\n            <msdn-id>dd368082</msdn-id>\t\n            <unmanaged>DWRITE_FONT_WEIGHT_ULTRA_BOLD</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_WEIGHT_ULTRA_BOLD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontWeight.Black\">\n            <summary>\t\n            <dd> <p>Predefined font weight : Black (900).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_WEIGHT_BLACK']/*\"/>\t\n            <msdn-id>dd368082</msdn-id>\t\n            <unmanaged>DWRITE_FONT_WEIGHT_BLACK</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_WEIGHT_BLACK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontWeight.Heavy\">\n            <summary>\t\n            <dd> <p>Predefined font weight : Heavy (900).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_WEIGHT_HEAVY']/*\"/>\t\n            <msdn-id>dd368082</msdn-id>\t\n            <unmanaged>DWRITE_FONT_WEIGHT_HEAVY</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_WEIGHT_HEAVY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontWeight.ExtraBlack\">\n            <summary>\t\n            <dd> <p>Predefined font weight : Extra-black (950).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_WEIGHT_EXTRA_BLACK']/*\"/>\t\n            <msdn-id>dd368082</msdn-id>\t\n            <unmanaged>DWRITE_FONT_WEIGHT_EXTRA_BLACK</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_WEIGHT_EXTRA_BLACK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontWeight.UltraBlack\">\n            <summary>\t\n            <dd> <p>Predefined font weight : Ultra-black (950).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_WEIGHT_ULTRA_BLACK']/*\"/>\t\n            <msdn-id>dd368082</msdn-id>\t\n            <unmanaged>DWRITE_FONT_WEIGHT_ULTRA_BLACK</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_WEIGHT_ULTRA_BLACK</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.InformationalStringId\">\n            <summary>\t\n            <p>The informational string enumeration which identifies a string embedded in a font file.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_INFORMATIONAL_STRING_ID']/*\"/>\t\n            <msdn-id>dd368094</msdn-id>\t\n            <unmanaged>DWRITE_INFORMATIONAL_STRING_ID</unmanaged>\t\n            <unmanaged-short>DWRITE_INFORMATIONAL_STRING_ID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.InformationalStringId.None\">\n            <summary>\t\n            <dd> <p>Indicates the string containing the unspecified name ID.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_INFORMATIONAL_STRING_NONE']/*\"/>\t\n            <msdn-id>dd368094</msdn-id>\t\n            <unmanaged>DWRITE_INFORMATIONAL_STRING_NONE</unmanaged>\t\n            <unmanaged-short>DWRITE_INFORMATIONAL_STRING_NONE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.InformationalStringId.CopyrightNotice\">\n            <summary>\t\n            <dd> <p>Indicates the string containing the copyright notice provided by the font.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_INFORMATIONAL_STRING_COPYRIGHT_NOTICE']/*\"/>\t\n            <msdn-id>dd368094</msdn-id>\t\n            <unmanaged>DWRITE_INFORMATIONAL_STRING_COPYRIGHT_NOTICE</unmanaged>\t\n            <unmanaged-short>DWRITE_INFORMATIONAL_STRING_COPYRIGHT_NOTICE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.InformationalStringId.VersionStrings\">\n            <summary>\t\n            <dd> <p>Indicates the string containing a version number.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_INFORMATIONAL_STRING_VERSION_STRINGS']/*\"/>\t\n            <msdn-id>dd368094</msdn-id>\t\n            <unmanaged>DWRITE_INFORMATIONAL_STRING_VERSION_STRINGS</unmanaged>\t\n            <unmanaged-short>DWRITE_INFORMATIONAL_STRING_VERSION_STRINGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.InformationalStringId.Trademark\">\n            <summary>\t\n            <dd> <p>Indicates the string containing the trademark information provided by the font.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_INFORMATIONAL_STRING_TRADEMARK']/*\"/>\t\n            <msdn-id>dd368094</msdn-id>\t\n            <unmanaged>DWRITE_INFORMATIONAL_STRING_TRADEMARK</unmanaged>\t\n            <unmanaged-short>DWRITE_INFORMATIONAL_STRING_TRADEMARK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.InformationalStringId.Manufacturer\">\n            <summary>\t\n            <dd> <p>Indicates the string containing the name of the font manufacturer.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_INFORMATIONAL_STRING_MANUFACTURER']/*\"/>\t\n            <msdn-id>dd368094</msdn-id>\t\n            <unmanaged>DWRITE_INFORMATIONAL_STRING_MANUFACTURER</unmanaged>\t\n            <unmanaged-short>DWRITE_INFORMATIONAL_STRING_MANUFACTURER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.InformationalStringId.Designer\">\n            <summary>\t\n            <dd> <p>Indicates the string containing the name of the font designer.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_INFORMATIONAL_STRING_DESIGNER']/*\"/>\t\n            <msdn-id>dd368094</msdn-id>\t\n            <unmanaged>DWRITE_INFORMATIONAL_STRING_DESIGNER</unmanaged>\t\n            <unmanaged-short>DWRITE_INFORMATIONAL_STRING_DESIGNER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.InformationalStringId.DesignerUrl\">\n            <summary>\t\n            <dd> <p>Indicates the string containing the URL of the font designer (with protocol, e.g., http://, ftp://).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_INFORMATIONAL_STRING_DESIGNER_URL']/*\"/>\t\n            <msdn-id>dd368094</msdn-id>\t\n            <unmanaged>DWRITE_INFORMATIONAL_STRING_DESIGNER_URL</unmanaged>\t\n            <unmanaged-short>DWRITE_INFORMATIONAL_STRING_DESIGNER_URL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.InformationalStringId.Description\">\n            <summary>\t\n            <dd> <p>Indicates the string containing the description of the font. This may also contain revision information, usage recommendations, history, features, etc.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_INFORMATIONAL_STRING_DESCRIPTION']/*\"/>\t\n            <msdn-id>dd368094</msdn-id>\t\n            <unmanaged>DWRITE_INFORMATIONAL_STRING_DESCRIPTION</unmanaged>\t\n            <unmanaged-short>DWRITE_INFORMATIONAL_STRING_DESCRIPTION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.InformationalStringId.FontVendorUrl\">\n            <summary>\t\n            <dd> <p>Indicates the string containing the URL of the font vendor (with protocol, e.g., http://, ftp://). If a unique serial number is embedded in the URL, it can be used to register the font.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_INFORMATIONAL_STRING_FONT_VENDOR_URL']/*\"/>\t\n            <msdn-id>dd368094</msdn-id>\t\n            <unmanaged>DWRITE_INFORMATIONAL_STRING_FONT_VENDOR_URL</unmanaged>\t\n            <unmanaged-short>DWRITE_INFORMATIONAL_STRING_FONT_VENDOR_URL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.InformationalStringId.LicenseDescription\">\n            <summary>\t\n            <dd> <p>Indicates the string containing the description of how the font may be legally used, or different example scenarios for licensed use. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_INFORMATIONAL_STRING_LICENSE_DESCRIPTION']/*\"/>\t\n            <msdn-id>dd368094</msdn-id>\t\n            <unmanaged>DWRITE_INFORMATIONAL_STRING_LICENSE_DESCRIPTION</unmanaged>\t\n            <unmanaged-short>DWRITE_INFORMATIONAL_STRING_LICENSE_DESCRIPTION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.InformationalStringId.LicenseInformationUrl\">\n            <summary>\t\n            <dd> <p>Indicates the string containing the URL where additional licensing information can be found.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_INFORMATIONAL_STRING_LICENSE_INFO_URL']/*\"/>\t\n            <msdn-id>dd368094</msdn-id>\t\n            <unmanaged>DWRITE_INFORMATIONAL_STRING_LICENSE_INFO_URL</unmanaged>\t\n            <unmanaged-short>DWRITE_INFORMATIONAL_STRING_LICENSE_INFO_URL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.InformationalStringId.Win32FamilyNames\">\n            <summary>\t\n            <dd> <p>Indicates the string containing the GDI-compatible family name. Since GDI allows a maximum of four fonts per family, fonts in the same family may have different GDI-compatible family names (e.g., \"Arial\", \"Arial Narrow\", \"Arial Black\").</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_INFORMATIONAL_STRING_WIN32_FAMILY_NAMES']/*\"/>\t\n            <msdn-id>dd368094</msdn-id>\t\n            <unmanaged>DWRITE_INFORMATIONAL_STRING_WIN32_FAMILY_NAMES</unmanaged>\t\n            <unmanaged-short>DWRITE_INFORMATIONAL_STRING_WIN32_FAMILY_NAMES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.InformationalStringId.Win32SubFamilyNames\">\n            <summary>\t\n            <dd> <p>Indicates the string containing a GDI-compatible subfamily name.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_INFORMATIONAL_STRING_WIN32_SUBFAMILY_NAMES']/*\"/>\t\n            <msdn-id>dd368094</msdn-id>\t\n            <unmanaged>DWRITE_INFORMATIONAL_STRING_WIN32_SUBFAMILY_NAMES</unmanaged>\t\n            <unmanaged-short>DWRITE_INFORMATIONAL_STRING_WIN32_SUBFAMILY_NAMES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.InformationalStringId.PreferRedFamilyNames\">\n            <summary>\t\n            <dd> <p>Indicates the string containing the family name preferred by the designer. This enables font designers to group more than four fonts in a single family without losing compatibility with GDI. This name is typically only present if it differs from the GDI-compatible family name.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_INFORMATIONAL_STRING_PREFERRED_FAMILY_NAMES']/*\"/>\t\n            <msdn-id>dd368094</msdn-id>\t\n            <unmanaged>DWRITE_INFORMATIONAL_STRING_PREFERRED_FAMILY_NAMES</unmanaged>\t\n            <unmanaged-short>DWRITE_INFORMATIONAL_STRING_PREFERRED_FAMILY_NAMES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.InformationalStringId.PreferRedSubFamilyNames\">\n            <summary>\t\n            <dd> <p>Indicates the string containing the subfamily name preferred by the designer. This name is typically only present if it differs from the GDI-compatible subfamily name.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_INFORMATIONAL_STRING_PREFERRED_SUBFAMILY_NAMES']/*\"/>\t\n            <msdn-id>dd368094</msdn-id>\t\n            <unmanaged>DWRITE_INFORMATIONAL_STRING_PREFERRED_SUBFAMILY_NAMES</unmanaged>\t\n            <unmanaged-short>DWRITE_INFORMATIONAL_STRING_PREFERRED_SUBFAMILY_NAMES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.InformationalStringId.SampleText\">\n            <summary>\t\n            <dd> <p>Contains sample text for display in font lists. This can be the font name or any other text that the designer thinks is the best  example to display the font in.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_INFORMATIONAL_STRING_SAMPLE_TEXT']/*\"/>\t\n            <msdn-id>dd368094</msdn-id>\t\n            <unmanaged>DWRITE_INFORMATIONAL_STRING_SAMPLE_TEXT</unmanaged>\t\n            <unmanaged-short>DWRITE_INFORMATIONAL_STRING_SAMPLE_TEXT</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.LineSpacingMethod\">\n            <summary>\t\n            <p>The method used for line spacing in a text layout.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The line spacing method is set by using the <strong>SetLineSpacing</strong> method of the <strong><see cref=\"T:SharpDX.DirectWrite.TextFormat\"/></strong> or <strong><see cref=\"T:SharpDX.DirectWrite.TextLayout\"/></strong> interfaces.  To get  the current line spacing method of a text format or text layou use the <strong>GetLineSpacing</strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_LINE_SPACING_METHOD']/*\"/>\t\n            <msdn-id>dd368101</msdn-id>\t\n            <unmanaged>DWRITE_LINE_SPACING_METHOD</unmanaged>\t\n            <unmanaged-short>DWRITE_LINE_SPACING_METHOD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.LineSpacingMethod.Default\">\n            <summary>\t\n            <dd> <p>Line spacing depends solely on the content, adjusting to accommodate the size of fonts and inline objects.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_LINE_SPACING_METHOD_DEFAULT']/*\"/>\t\n            <msdn-id>dd368101</msdn-id>\t\n            <unmanaged>DWRITE_LINE_SPACING_METHOD_DEFAULT</unmanaged>\t\n            <unmanaged-short>DWRITE_LINE_SPACING_METHOD_DEFAULT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.LineSpacingMethod.Uniform\">\n            <summary>\t\n            <dd> <p>Lines are explicitly set to uniform spacing, regardless of the size of fonts and inline objects. This can be useful to avoid the uneven appearance that can occur from font fallback.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_LINE_SPACING_METHOD_UNIFORM']/*\"/>\t\n            <msdn-id>dd368101</msdn-id>\t\n            <unmanaged>DWRITE_LINE_SPACING_METHOD_UNIFORM</unmanaged>\t\n            <unmanaged-short>DWRITE_LINE_SPACING_METHOD_UNIFORM</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.NumberSubstitutionMethod\">\n            <summary>\t\n            <p>Specifies how to apply number substitution on digits and related punctuation.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_NUMBER_SUBSTITUTION_METHOD']/*\"/>\t\n            <msdn-id>dd368107</msdn-id>\t\n            <unmanaged>DWRITE_NUMBER_SUBSTITUTION_METHOD</unmanaged>\t\n            <unmanaged-short>DWRITE_NUMBER_SUBSTITUTION_METHOD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.NumberSubstitutionMethod.FromCulture\">\n            <summary>\t\n            <dd> <p>Specifies that the substitution method should be determined based on the LOCALE_IDIGITSUBSTITUTION value of the specified text culture.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_NUMBER_SUBSTITUTION_METHOD_FROM_CULTURE']/*\"/>\t\n            <msdn-id>dd368107</msdn-id>\t\n            <unmanaged>DWRITE_NUMBER_SUBSTITUTION_METHOD_FROM_CULTURE</unmanaged>\t\n            <unmanaged-short>DWRITE_NUMBER_SUBSTITUTION_METHOD_FROM_CULTURE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.NumberSubstitutionMethod.Contextual\">\n            <summary>\t\n            <dd> <p>If the culture is Arabic or Persian, specifies that the number shapes depend on the context. Either traditional or nominal number shapes are used, depending on the nearest preceding strong character or (if there is none) the reading direction of the paragraph.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_NUMBER_SUBSTITUTION_METHOD_CONTEXTUAL']/*\"/>\t\n            <msdn-id>dd368107</msdn-id>\t\n            <unmanaged>DWRITE_NUMBER_SUBSTITUTION_METHOD_CONTEXTUAL</unmanaged>\t\n            <unmanaged-short>DWRITE_NUMBER_SUBSTITUTION_METHOD_CONTEXTUAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.NumberSubstitutionMethod.None\">\n            <summary>\t\n            <dd> <p>Specifies that code points 0x30-0x39 are always rendered as nominal numeral shapes (ones of the European number), that is, no substitution is performed.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_NUMBER_SUBSTITUTION_METHOD_NONE']/*\"/>\t\n            <msdn-id>dd368107</msdn-id>\t\n            <unmanaged>DWRITE_NUMBER_SUBSTITUTION_METHOD_NONE</unmanaged>\t\n            <unmanaged-short>DWRITE_NUMBER_SUBSTITUTION_METHOD_NONE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.NumberSubstitutionMethod.National\">\n            <summary>\t\n            <dd> <p>Specifies that numbers are rendered using the national number shapes as specified by the LOCALE_SNATIVEDIGITS value of the specified text culture.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_NUMBER_SUBSTITUTION_METHOD_NATIONAL']/*\"/>\t\n            <msdn-id>dd368107</msdn-id>\t\n            <unmanaged>DWRITE_NUMBER_SUBSTITUTION_METHOD_NATIONAL</unmanaged>\t\n            <unmanaged-short>DWRITE_NUMBER_SUBSTITUTION_METHOD_NATIONAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.NumberSubstitutionMethod.Traditional\">\n            <summary>\t\n            <dd> <p>Specifies that numbers are rendered using the traditional shapes for the specified culture. For most cultures, this is the same as NativeNational. However, NativeNational results in Latin numbers for some Arabic cultures, whereasDWRITE_NUMBER_SUBSTITUTION_METHOD_TRADITIONAL results in arabic numbers for all Arabic cultures.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_NUMBER_SUBSTITUTION_METHOD_TRADITIONAL']/*\"/>\t\n            <msdn-id>dd368107</msdn-id>\t\n            <unmanaged>DWRITE_NUMBER_SUBSTITUTION_METHOD_TRADITIONAL</unmanaged>\t\n            <unmanaged-short>DWRITE_NUMBER_SUBSTITUTION_METHOD_TRADITIONAL</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.ParagraphAlignment\">\n            <summary>\t\n            <p> Specifies the alignment of paragraph text along the flow direction axis, relative to the top and bottom of the flow's layout box. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_PARAGRAPH_ALIGNMENT']/*\"/>\t\n            <msdn-id>dd368112</msdn-id>\t\n            <unmanaged>DWRITE_PARAGRAPH_ALIGNMENT</unmanaged>\t\n            <unmanaged-short>DWRITE_PARAGRAPH_ALIGNMENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.ParagraphAlignment.Near\">\n            <summary>\t\n            <dd> <p>The top of the text flow is aligned to the top edge of the layout box.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_PARAGRAPH_ALIGNMENT_NEAR']/*\"/>\t\n            <msdn-id>dd368112</msdn-id>\t\n            <unmanaged>DWRITE_PARAGRAPH_ALIGNMENT_NEAR</unmanaged>\t\n            <unmanaged-short>DWRITE_PARAGRAPH_ALIGNMENT_NEAR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.ParagraphAlignment.Far\">\n            <summary>\t\n            <dd> <p>The bottom of the text flow is aligned to the bottom edge of the layout box.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_PARAGRAPH_ALIGNMENT_FAR']/*\"/>\t\n            <msdn-id>dd368112</msdn-id>\t\n            <unmanaged>DWRITE_PARAGRAPH_ALIGNMENT_FAR</unmanaged>\t\n            <unmanaged-short>DWRITE_PARAGRAPH_ALIGNMENT_FAR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.ParagraphAlignment.Center\">\n            <summary>\t\n            <dd> <p>The center of the flow is aligned to the center of the layout box.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_PARAGRAPH_ALIGNMENT_CENTER']/*\"/>\t\n            <msdn-id>dd368112</msdn-id>\t\n            <unmanaged>DWRITE_PARAGRAPH_ALIGNMENT_CENTER</unmanaged>\t\n            <unmanaged-short>DWRITE_PARAGRAPH_ALIGNMENT_CENTER</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.PixelGeometry\">\n            <summary>\t\n            <p> Represents the internal structure of a device pixel (that is, the physical arrangement of red, green, and blue color components) that is assumed for purposes of rendering text.\t\n            </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_PIXEL_GEOMETRY']/*\"/>\t\n            <msdn-id>dd368114</msdn-id>\t\n            <unmanaged>DWRITE_PIXEL_GEOMETRY</unmanaged>\t\n            <unmanaged-short>DWRITE_PIXEL_GEOMETRY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.PixelGeometry.Flat\">\n            <summary>\t\n            <dd> <p>The red, green, and blue color components of each pixel are assumed to occupy the same point.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_PIXEL_GEOMETRY_FLAT']/*\"/>\t\n            <msdn-id>dd368114</msdn-id>\t\n            <unmanaged>DWRITE_PIXEL_GEOMETRY_FLAT</unmanaged>\t\n            <unmanaged-short>DWRITE_PIXEL_GEOMETRY_FLAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.PixelGeometry.Rgb\">\n            <summary>\t\n            <dd> <p>Each pixel is composed of three vertical stripes, with red on the left, green in the center, and  blue on the right. This is the most common pixel geometry for LCD monitors.\t   </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_PIXEL_GEOMETRY_RGB']/*\"/>\t\n            <msdn-id>dd368114</msdn-id>\t\n            <unmanaged>DWRITE_PIXEL_GEOMETRY_RGB</unmanaged>\t\n            <unmanaged-short>DWRITE_PIXEL_GEOMETRY_RGB</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.PixelGeometry.Bgr\">\n            <summary>\t\n            <dd> <p>Each pixel is composed of three vertical stripes, with blue on the left, green in the center, and  red on the right.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_PIXEL_GEOMETRY_BGR']/*\"/>\t\n            <msdn-id>dd368114</msdn-id>\t\n            <unmanaged>DWRITE_PIXEL_GEOMETRY_BGR</unmanaged>\t\n            <unmanaged-short>DWRITE_PIXEL_GEOMETRY_BGR</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.ReadingDirection\">\n            <summary>\t\n            <p> Specifies the direction in which reading progresses. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_READING_DIRECTION']/*\"/>\t\n            <msdn-id>dd368116</msdn-id>\t\n            <unmanaged>DWRITE_READING_DIRECTION</unmanaged>\t\n            <unmanaged-short>DWRITE_READING_DIRECTION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.ReadingDirection.LeftToRight\">\n            <summary>\t\n            <dd> <p>Indicates that reading progresses from left to right.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_READING_DIRECTION_LEFT_TO_RIGHT']/*\"/>\t\n            <msdn-id>dd368116</msdn-id>\t\n            <unmanaged>DWRITE_READING_DIRECTION_LEFT_TO_RIGHT</unmanaged>\t\n            <unmanaged-short>DWRITE_READING_DIRECTION_LEFT_TO_RIGHT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.ReadingDirection.RightToLeft\">\n            <summary>\t\n            <dd> <p>Indicates that reading progresses from right to left.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_READING_DIRECTION_RIGHT_TO_LEFT']/*\"/>\t\n            <msdn-id>dd368116</msdn-id>\t\n            <unmanaged>DWRITE_READING_DIRECTION_RIGHT_TO_LEFT</unmanaged>\t\n            <unmanaged-short>DWRITE_READING_DIRECTION_RIGHT_TO_LEFT</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.RenderingMode\">\n            <summary>\t\n            <p> Represents a method of rendering glyphs. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_RENDERING_MODE']/*\"/>\t\n            <msdn-id>dd368118</msdn-id>\t\n            <unmanaged>DWRITE_RENDERING_MODE</unmanaged>\t\n            <unmanaged-short>DWRITE_RENDERING_MODE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.RenderingMode.Default\">\n            <summary>\t\n            <dd> <p>Specifies that the rendering mode is determined automatically, based on the font and size.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_RENDERING_MODE_DEFAULT']/*\"/>\t\n            <msdn-id>dd368118</msdn-id>\t\n            <unmanaged>DWRITE_RENDERING_MODE_DEFAULT</unmanaged>\t\n            <unmanaged-short>DWRITE_RENDERING_MODE_DEFAULT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.RenderingMode.Aliased\">\n            <summary>\t\n            <dd> <p>Specifies that no anti-aliasing is performed. Each pixel is either set to the foreground color of the text or retains the color of the background.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_RENDERING_MODE_ALIASED']/*\"/>\t\n            <msdn-id>dd368118</msdn-id>\t\n            <unmanaged>DWRITE_RENDERING_MODE_ALIASED</unmanaged>\t\n            <unmanaged-short>DWRITE_RENDERING_MODE_ALIASED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.RenderingMode.CleartypeGdiClassic\">\n            <summary>\t\n            <dd> <p>Specifies ClearType rendering with the same metrics as bi-level text. Glyphs can only be positioned on whole-pixel boundaries.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_RENDERING_MODE_CLEARTYPE_GDI_CLASSIC']/*\"/>\t\n            <msdn-id>dd368118</msdn-id>\t\n            <unmanaged>DWRITE_RENDERING_MODE_CLEARTYPE_GDI_CLASSIC</unmanaged>\t\n            <unmanaged-short>DWRITE_RENDERING_MODE_CLEARTYPE_GDI_CLASSIC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.RenderingMode.CleartypeGdiNatural\">\n            <summary>\t\n            <dd> <p>Specifies ClearType rendering with the same metrics as text rendering using GDI using a font created with CLEARTYPE_NATURAL_QUALITY. Glyph metrics are closer to their ideal values than with bi-level text, but glyphs are still positioned on whole-pixel boundaries.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_RENDERING_MODE_CLEARTYPE_GDI_NATURAL']/*\"/>\t\n            <msdn-id>dd368118</msdn-id>\t\n            <unmanaged>DWRITE_RENDERING_MODE_CLEARTYPE_GDI_NATURAL</unmanaged>\t\n            <unmanaged-short>DWRITE_RENDERING_MODE_CLEARTYPE_GDI_NATURAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.RenderingMode.CleartypeNatural\">\n            <summary>\t\n            <dd> <p>Specifies ClearType rendering with anti-aliasing in the horizontal dimension only. This is typically used with small to medium font sizes (up to 16 ppem).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_RENDERING_MODE_CLEARTYPE_NATURAL']/*\"/>\t\n            <msdn-id>dd368118</msdn-id>\t\n            <unmanaged>DWRITE_RENDERING_MODE_CLEARTYPE_NATURAL</unmanaged>\t\n            <unmanaged-short>DWRITE_RENDERING_MODE_CLEARTYPE_NATURAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.RenderingMode.CleartypeNaturalSymmetric\">\n            <summary>\t\n            <dd> <p>Specifies ClearType rendering with anti-aliasing in both horizontal and vertical dimensions. This is typically used at larger sizes to makes curves and diagonal lines look smoother, at the expense of some softness.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_RENDERING_MODE_CLEARTYPE_NATURAL_SYMMETRIC']/*\"/>\t\n            <msdn-id>dd368118</msdn-id>\t\n            <unmanaged>DWRITE_RENDERING_MODE_CLEARTYPE_NATURAL_SYMMETRIC</unmanaged>\t\n            <unmanaged-short>DWRITE_RENDERING_MODE_CLEARTYPE_NATURAL_SYMMETRIC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.RenderingMode.Outline\">\n            <summary>\t\n            <dd> <p>Specifies that rendering should bypass the rasterizer and use the outlines directly. This is typically used at very large sizes.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_RENDERING_MODE_OUTLINE']/*\"/>\t\n            <msdn-id>dd368118</msdn-id>\t\n            <unmanaged>DWRITE_RENDERING_MODE_OUTLINE</unmanaged>\t\n            <unmanaged-short>DWRITE_RENDERING_MODE_OUTLINE</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.ScriptShapes\">\n            <summary>\t\n            <p>Indicates additional shaping requirements for text.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_SCRIPT_SHAPES']/*\"/>\t\n            <msdn-id>dd368121</msdn-id>\t\n            <unmanaged>DWRITE_SCRIPT_SHAPES</unmanaged>\t\n            <unmanaged-short>DWRITE_SCRIPT_SHAPES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.ScriptShapes.Default\">\n            <summary>\t\n            <dd> <p>Indicates that there is no additional shaping requirements for text. Text is shaped with the writing system default behavior.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_SCRIPT_SHAPES_DEFAULT']/*\"/>\t\n            <msdn-id>dd368121</msdn-id>\t\n            <unmanaged>DWRITE_SCRIPT_SHAPES_DEFAULT</unmanaged>\t\n            <unmanaged-short>DWRITE_SCRIPT_SHAPES_DEFAULT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.ScriptShapes.NoVisual\">\n            <summary>\t\n            <dd> <p>Indicates that text should leave no visible control or format control characters.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_SCRIPT_SHAPES_NO_VISUAL']/*\"/>\t\n            <msdn-id>dd368121</msdn-id>\t\n            <unmanaged>DWRITE_SCRIPT_SHAPES_NO_VISUAL</unmanaged>\t\n            <unmanaged-short>DWRITE_SCRIPT_SHAPES_NO_VISUAL</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.TextAlignment\">\n            <summary>\t\n            <p>Specifies the alignment of paragraph text along the reading direction axis, relative to the leading and trailing edge of the layout box.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_TEXT_ALIGNMENT']/*\"/>\t\n            <msdn-id>dd368131</msdn-id>\t\n            <unmanaged>DWRITE_TEXT_ALIGNMENT</unmanaged>\t\n            <unmanaged-short>DWRITE_TEXT_ALIGNMENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.TextAlignment.Leading\">\n            <summary>\t\n            <dd> <p>The leading edge of the paragraph text is aligned to the leading edge of the layout box.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_TEXT_ALIGNMENT_LEADING']/*\"/>\t\n            <msdn-id>dd368131</msdn-id>\t\n            <unmanaged>DWRITE_TEXT_ALIGNMENT_LEADING</unmanaged>\t\n            <unmanaged-short>DWRITE_TEXT_ALIGNMENT_LEADING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.TextAlignment.Trailing\">\n            <summary>\t\n            <dd> <p>The trailing edge of the paragraph text is aligned to the  trailing edge of the layout box.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_TEXT_ALIGNMENT_TRAILING']/*\"/>\t\n            <msdn-id>dd368131</msdn-id>\t\n            <unmanaged>DWRITE_TEXT_ALIGNMENT_TRAILING</unmanaged>\t\n            <unmanaged-short>DWRITE_TEXT_ALIGNMENT_TRAILING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.TextAlignment.Center\">\n            <summary>\t\n            <dd> <p>The center of the paragraph text is aligned to the center of the layout box.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_TEXT_ALIGNMENT_CENTER']/*\"/>\t\n            <msdn-id>dd368131</msdn-id>\t\n            <unmanaged>DWRITE_TEXT_ALIGNMENT_CENTER</unmanaged>\t\n            <unmanaged-short>DWRITE_TEXT_ALIGNMENT_CENTER</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.TextureType\">\n            <summary>\t\n            <p>Identifies a type of alpha texture.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>An alpha texture is a bitmap of alpha values, each representing opacity of a pixel or subpixel.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_TEXTURE_TYPE']/*\"/>\t\n            <msdn-id>dd368129</msdn-id>\t\n            <unmanaged>DWRITE_TEXTURE_TYPE</unmanaged>\t\n            <unmanaged-short>DWRITE_TEXTURE_TYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.TextureType.Aliased1x1\">\n            <summary>\t\n            <dd> <p>Specifies an alpha texture for aliased text rendering (that is,  each pixel is either fully opaque or fully transparent), with one byte per pixel.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_TEXTURE_ALIASED_1x1']/*\"/>\t\n            <msdn-id>dd368129</msdn-id>\t\n            <unmanaged>DWRITE_TEXTURE_ALIASED_1x1</unmanaged>\t\n            <unmanaged-short>DWRITE_TEXTURE_ALIASED_1x1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.TextureType.Cleartype3x1\">\n            <summary>\t\n            <dd> <p>Specifies an alpha texture for ClearType text rendering, with three bytes per pixel in the horizontal dimension and one byte per pixel in the vertical dimension.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_TEXTURE_CLEARTYPE_3x1']/*\"/>\t\n            <msdn-id>dd368129</msdn-id>\t\n            <unmanaged>DWRITE_TEXTURE_CLEARTYPE_3x1</unmanaged>\t\n            <unmanaged-short>DWRITE_TEXTURE_CLEARTYPE_3x1</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.TrimmingGranularity\">\n            <summary>\t\n            <p>Specifies  the text granularity used to trim text overflowing the layout box.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_TRIMMING_GRANULARITY']/*\"/>\t\n            <msdn-id>dd368141</msdn-id>\t\n            <unmanaged>DWRITE_TRIMMING_GRANULARITY</unmanaged>\t\n            <unmanaged-short>DWRITE_TRIMMING_GRANULARITY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.TrimmingGranularity.None\">\n            <summary>\t\n            <dd> <p>No trimming occurs. Text flows beyond the layout width.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_TRIMMING_GRANULARITY_NONE']/*\"/>\t\n            <msdn-id>dd368141</msdn-id>\t\n            <unmanaged>DWRITE_TRIMMING_GRANULARITY_NONE</unmanaged>\t\n            <unmanaged-short>DWRITE_TRIMMING_GRANULARITY_NONE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.TrimmingGranularity.Character\">\n            <summary>\t\n            <dd> <p>Trimming occurs at a character cluster boundary.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_TRIMMING_GRANULARITY_CHARACTER']/*\"/>\t\n            <msdn-id>dd368141</msdn-id>\t\n            <unmanaged>DWRITE_TRIMMING_GRANULARITY_CHARACTER</unmanaged>\t\n            <unmanaged-short>DWRITE_TRIMMING_GRANULARITY_CHARACTER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.TrimmingGranularity.Word\">\n            <summary>\t\n            <dd> <p>Trimming occurs at a word boundary.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_TRIMMING_GRANULARITY_WORD']/*\"/>\t\n            <msdn-id>dd368141</msdn-id>\t\n            <unmanaged>DWRITE_TRIMMING_GRANULARITY_WORD</unmanaged>\t\n            <unmanaged-short>DWRITE_TRIMMING_GRANULARITY_WORD</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.WordWrapping\">\n            <summary>\t\n            <p> Specifies the word wrapping to be used in a particular multiline paragraph.  </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_WORD_WRAPPING']/*\"/>\t\n            <msdn-id>dd368146</msdn-id>\t\n            <unmanaged>DWRITE_WORD_WRAPPING</unmanaged>\t\n            <unmanaged-short>DWRITE_WORD_WRAPPING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.WordWrapping.Wrap\">\n            <summary>\t\n            <dd> <p>Indicates that words are broken across lines to avoid text overflowing the layout box.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_WORD_WRAPPING_WRAP']/*\"/>\t\n            <msdn-id>dd368146</msdn-id>\t\n            <unmanaged>DWRITE_WORD_WRAPPING_WRAP</unmanaged>\t\n            <unmanaged-short>DWRITE_WORD_WRAPPING_WRAP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.WordWrapping.NoWrap\">\n            <summary>\t\n            <dd> <p>Indicates that words are kept within the same line even when it overflows the layout box. This option is often used with scrolling to reveal overflow text.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_WORD_WRAPPING_NO_WRAP']/*\"/>\t\n            <msdn-id>dd368146</msdn-id>\t\n            <unmanaged>DWRITE_WORD_WRAPPING_NO_WRAP</unmanaged>\t\n            <unmanaged-short>DWRITE_WORD_WRAPPING_NO_WRAP</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.DWrite\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.DirectWrite.DWrite']/*\"/>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.DWrite.CreateFactory(SharpDX.DirectWrite.FactoryType,System.Guid,SharpDX.ComObject)\">\n            <summary>\t\n            <p>Creates a DirectWrite factory object that is used for subsequent creation of individual DirectWrite objects.</p>\t\n            </summary>\t\n            <param name=\"factoryType\"><dd> <p>A value that specifies whether the factory object will be shared or isolated.</p> </dd></param>\t\n            <param name=\"iid\"><dd> <p>A <see cref=\"T:System.Guid\"/> value that identifies the DirectWrite factory interface, such as __uuidof(<see cref=\"T:SharpDX.DirectWrite.Factory\"/>).</p> </dd></param>\t\n            <param name=\"factory\"><dd> <p>An address of a reference to the newly created DirectWrite factory object.</p> </dd></param>\t\n            <returns><p>If this function succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>This function creates a DirectWrite factory object that is used for subsequent creation of individual DirectWrite objects. DirectWrite factory contains internal state data such as font loader registration and cached font data. In most cases it is recommended you use the shared factory object, because it allows multiple components that use DirectWrite to share internal DirectWrite state data, and thereby reduce memory usage. However, there are cases when it is desirable to reduce the impact of a component, such as a plug-in from an untrusted source, on the rest of the process, by sandboxing and isolating it from the rest of the process components. In such cases, it is recommended you use an isolated factory for the sandboxed component.</p><p>The following example shows how to create a shared DirectWrite factory.</p><pre><code> if (SUCCEEDED(hr))\t\n            { hr = <see cref=\"M:SharpDX.DirectWrite.DWrite.CreateFactory(SharpDX.DirectWrite.FactoryType,System.Guid,SharpDX.ComObject)\"/>( <see cref=\"F:SharpDX.DirectWrite.FactoryType.Shared\"/>, __uuidof(<see cref=\"T:SharpDX.DirectWrite.Factory\"/>), reinterpret_cast&lt;<see cref=\"T:SharpDX.ComObject\"/>**&gt;(&amp;pDWriteFactory_) );\t\n            } </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWriteCreateFactory']/*\"/>\t\n            <msdn-id>dd368040</msdn-id>\t\n            <unmanaged>HRESULT DWriteCreateFactory([In] DWRITE_FACTORY_TYPE factoryType,[In] const GUID&amp; iid,[Out, Fast] IUnknown** factory)</unmanaged>\t\n            <unmanaged-short>DWriteCreateFactory</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.Font\">\n            <summary>\t\n            <p> Represents a physical font in a font collection. This interface is used to create font faces from  physical fonts, or  to retrieve information such as  font face metrics or face names from existing font faces.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFont']/*\"/>\t\n            <msdn-id>dd368213</msdn-id>\t\n            <unmanaged>IDWriteFont</unmanaged>\t\n            <unmanaged-short>IDWriteFont</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.Font.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectWrite.Font\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.Font.op_Explicit(System.IntPtr)~SharpDX.DirectWrite.Font\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.DirectWrite.Font\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.Font.GetFontFamily(SharpDX.DirectWrite.FontFamily@)\">\n            <summary>\t\n            <p> Gets the font family to which the specified font belongs. </p>\t\n            </summary>\t\n            <param name=\"fontFamily\"><dd> <p>When this method returns, contains an address of a reference to the font family object to which the specified font belongs.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFont::GetFontFamily']/*\"/>\t\n            <msdn-id>dd371143</msdn-id>\t\n            <unmanaged>HRESULT IDWriteFont::GetFontFamily([Out] IDWriteFontFamily** fontFamily)</unmanaged>\t\n            <unmanaged-short>IDWriteFont::GetFontFamily</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.Font.GetWeight\">\n            <summary>\t\n            <p> Gets the weight, or stroke thickness, of the specified font. </p>\t\n            </summary>\t\n            <returns><p>A value that indicates the weight for the specified font.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFont::GetWeight']/*\"/>\t\n            <msdn-id>dd371162</msdn-id>\t\n            <unmanaged>DWRITE_FONT_WEIGHT IDWriteFont::GetWeight()</unmanaged>\t\n            <unmanaged-short>IDWriteFont::GetWeight</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.Font.GetStretch\">\n            <summary>\t\n            <p> Gets the stretch, or width, of the specified font. </p>\t\n            </summary>\t\n            <returns><p>A value that indicates the type of stretch, or width, applied to the specified font.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFont::GetStretch']/*\"/>\t\n            <msdn-id>dd371156</msdn-id>\t\n            <unmanaged>DWRITE_FONT_STRETCH IDWriteFont::GetStretch()</unmanaged>\t\n            <unmanaged-short>IDWriteFont::GetStretch</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.Font.GetStyle\">\n            <summary>\t\n            <p> Gets the style, or slope, of the specified font. </p>\t\n            </summary>\t\n            <returns><p>A value that indicates the type of style, or slope, of the specified font.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFont::GetStyle']/*\"/>\t\n            <msdn-id>dd371159</msdn-id>\t\n            <unmanaged>DWRITE_FONT_STYLE IDWriteFont::GetStyle()</unmanaged>\t\n            <unmanaged-short>IDWriteFont::GetStyle</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.Font.IsSymbolFont_\">\n            <summary>\t\n            <p> Determines whether the font is a symbol font. </p>\t\n            </summary>\t\n            <returns><p><strong>TRUE</strong> if the font is a symbol font; otherwise, <strong><see cref=\"F:SharpDX.Result.False\"/></strong>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFont::IsSymbolFont']/*\"/>\t\n            <msdn-id>dd371168</msdn-id>\t\n            <unmanaged>BOOL IDWriteFont::IsSymbolFont()</unmanaged>\t\n            <unmanaged-short>IDWriteFont::IsSymbolFont</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.Font.GetFaceNames(SharpDX.DirectWrite.LocalizedStrings@)\">\n            <summary>\t\n            <p> Gets a localized strings collection containing the face names for the font (such as Regular or Bold), indexed by locale name. </p>\t\n            </summary>\t\n            <param name=\"names\"><dd> <p>When this method returns, contains an address to a  reference to the newly created localized strings object.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFont::GetFaceNames']/*\"/>\t\n            <msdn-id>dd371140</msdn-id>\t\n            <unmanaged>HRESULT IDWriteFont::GetFaceNames([Out] IDWriteLocalizedStrings** names)</unmanaged>\t\n            <unmanaged-short>IDWriteFont::GetFaceNames</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.Font.GetInformationalStrings(SharpDX.DirectWrite.InformationalStringId,SharpDX.DirectWrite.LocalizedStrings@)\">\n            <summary>\t\n            <p> Gets a localized strings collection containing the specified informational strings, indexed by locale name. </p>\t\n            </summary>\t\n            <param name=\"informationalStringID\"><dd> <p>A value that identifies the  informational string to get. For example, <strong><see cref=\"F:SharpDX.DirectWrite.InformationalStringId.Description\"/></strong> specifies a string that contains a description of the font. </p> </dd></param>\t\n            <param name=\"informationalStrings\"><dd> <p>When this method returns, contains an address of a reference to the newly created localized strings object.</p> </dd></param>\t\n            <returns><dd> <p>When this method returns, <strong>TRUE</strong> if the font contains the specified string ID; otherwise, <strong><see cref=\"F:SharpDX.Result.False\"/></strong>.</p> </dd></returns>\t\n            <remarks>\t\n            <p> If the font does not contain the string specified by <em>informationalStringID</em>, the return value is <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong> but  <em>informationalStrings</em> receives a <strong><c>null</c></strong> reference and <em>exists</em> receives the value <strong><see cref=\"F:SharpDX.Result.False\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFont::GetInformationalStrings']/*\"/>\t\n            <msdn-id>dd371147</msdn-id>\t\n            <unmanaged>HRESULT IDWriteFont::GetInformationalStrings([In] DWRITE_INFORMATIONAL_STRING_ID informationalStringID,[Out] IDWriteLocalizedStrings** informationalStrings,[Out] BOOL* exists)</unmanaged>\t\n            <unmanaged-short>IDWriteFont::GetInformationalStrings</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.Font.GetSimulations\">\n            <summary>\t\n            <p> Gets a value that indicates what simulations are applied to the specified font. </p>\t\n            </summary>\t\n            <returns><p> A value that indicates one or more of the  types of simulations (none, bold, or oblique)  applied to the specified font.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFont::GetSimulations']/*\"/>\t\n            <msdn-id>dd371153</msdn-id>\t\n            <unmanaged>DWRITE_FONT_SIMULATIONS IDWriteFont::GetSimulations()</unmanaged>\t\n            <unmanaged-short>IDWriteFont::GetSimulations</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.Font.GetMetrics(SharpDX.DirectWrite.FontMetrics@)\">\n            <summary>\t\n            <p> Obtains design units and common metrics for the font face. These metrics are applicable to all the glyphs within a font face and are used by applications for layout calculations. </p>\t\n            </summary>\t\n            <param name=\"fontMetrics\"><dd> <p>When this method returns, contains a structure that has font metrics for the current font face. The metrics returned by this function are in font design units.</p> </dd></param>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFont::GetMetrics']/*\"/>\t\n            <msdn-id>dd371149</msdn-id>\t\n            <unmanaged>void IDWriteFont::GetMetrics([Out] DWRITE_FONT_METRICS* fontMetrics)</unmanaged>\t\n            <unmanaged-short>IDWriteFont::GetMetrics</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.Font.HasCharacter(System.Int32)\">\n            <summary>\t\n            <p> Determines whether the font supports a specified character. </p>\t\n            </summary>\t\n            <param name=\"unicodeValue\"><dd> <p>A Unicode (UCS-4) character value for the method to inspect.</p> </dd></param>\t\n            <returns><dd> <p>When this method returns, <strong>TRUE</strong> if the font supports the specified character; otherwise, <strong><see cref=\"F:SharpDX.Result.False\"/></strong>.</p> </dd></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFont::HasCharacter']/*\"/>\t\n            <msdn-id>dd371165</msdn-id>\t\n            <unmanaged>HRESULT IDWriteFont::HasCharacter([In] unsigned int unicodeValue,[Out] BOOL* exists)</unmanaged>\t\n            <unmanaged-short>IDWriteFont::HasCharacter</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.Font.CreateFontFace(SharpDX.DirectWrite.FontFace)\">\n            <summary>\t\n            <p> Creates a font face object for the font. </p>\t\n            </summary>\t\n            <param name=\"fontFace\"><dd> <p>When this method returns, contains an address of a reference to the newly created font face object.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFont::CreateFontFace']/*\"/>\t\n            <msdn-id>dd371137</msdn-id>\t\n            <unmanaged>HRESULT IDWriteFont::CreateFontFace([Out, Fast] IDWriteFontFace** fontFace)</unmanaged>\t\n            <unmanaged-short>IDWriteFont::CreateFontFace</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.DirectWrite.Font.FontFamily\">\n            <summary>\t\n            <p> Gets the font family to which the specified font belongs. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFont::GetFontFamily']/*\"/>\t\n            <msdn-id>dd371143</msdn-id>\t\n            <unmanaged>GetFontFamily</unmanaged>\t\n            <unmanaged-short>GetFontFamily</unmanaged-short>\t\n            <unmanaged>HRESULT IDWriteFont::GetFontFamily([Out] IDWriteFontFamily** fontFamily)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectWrite.Font.Weight\">\n            <summary>\t\n            <p> Gets the weight, or stroke thickness, of the specified font. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFont::GetWeight']/*\"/>\t\n            <msdn-id>dd371162</msdn-id>\t\n            <unmanaged>GetWeight</unmanaged>\t\n            <unmanaged-short>GetWeight</unmanaged-short>\t\n            <unmanaged>DWRITE_FONT_WEIGHT IDWriteFont::GetWeight()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectWrite.Font.Stretch\">\n            <summary>\t\n            <p> Gets the stretch, or width, of the specified font. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFont::GetStretch']/*\"/>\t\n            <msdn-id>dd371156</msdn-id>\t\n            <unmanaged>GetStretch</unmanaged>\t\n            <unmanaged-short>GetStretch</unmanaged-short>\t\n            <unmanaged>DWRITE_FONT_STRETCH IDWriteFont::GetStretch()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectWrite.Font.Style\">\n            <summary>\t\n            <p> Gets the style, or slope, of the specified font. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFont::GetStyle']/*\"/>\t\n            <msdn-id>dd371159</msdn-id>\t\n            <unmanaged>GetStyle</unmanaged>\t\n            <unmanaged-short>GetStyle</unmanaged-short>\t\n            <unmanaged>DWRITE_FONT_STYLE IDWriteFont::GetStyle()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectWrite.Font.IsSymbolFont\">\n            <summary>\t\n            <p> Determines whether the font is a symbol font. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFont::IsSymbolFont']/*\"/>\t\n            <msdn-id>dd371168</msdn-id>\t\n            <unmanaged>IsSymbolFont</unmanaged>\t\n            <unmanaged-short>IsSymbolFont</unmanaged-short>\t\n            <unmanaged>BOOL IDWriteFont::IsSymbolFont()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectWrite.Font.FaceNames\">\n            <summary>\t\n            <p> Gets a localized strings collection containing the face names for the font (such as Regular or Bold), indexed by locale name. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFont::GetFaceNames']/*\"/>\t\n            <msdn-id>dd371140</msdn-id>\t\n            <unmanaged>GetFaceNames</unmanaged>\t\n            <unmanaged-short>GetFaceNames</unmanaged-short>\t\n            <unmanaged>HRESULT IDWriteFont::GetFaceNames([Out] IDWriteLocalizedStrings** names)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectWrite.Font.Simulations\">\n            <summary>\t\n            <p> Gets a value that indicates what simulations are applied to the specified font. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFont::GetSimulations']/*\"/>\t\n            <msdn-id>dd371153</msdn-id>\t\n            <unmanaged>GetSimulations</unmanaged>\t\n            <unmanaged-short>GetSimulations</unmanaged-short>\t\n            <unmanaged>DWRITE_FONT_SIMULATIONS IDWriteFont::GetSimulations()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectWrite.Font.Metrics\">\n            <summary>\t\n            <p> Obtains design units and common metrics for the font face. These metrics are applicable to all the glyphs within a font face and are used by applications for layout calculations. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFont::GetMetrics']/*\"/>\t\n            <msdn-id>dd371149</msdn-id>\t\n            <unmanaged>GetMetrics</unmanaged>\t\n            <unmanaged-short>GetMetrics</unmanaged-short>\t\n            <unmanaged>void IDWriteFont::GetMetrics([Out] DWRITE_FONT_METRICS* fontMetrics)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.FontFamily\">\n            <summary>\t\n            <p>Represents a family of related fonts.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>A font family is a set of fonts that share the same family name, such as \"Times New Roman\", but that differ in features. These feature differences include style, such as italic, and weight, such as bold.  The following illustration shows examples of fonts that are members of the \"Times New Roman\" font family.</p><p>An <strong><see cref=\"T:SharpDX.DirectWrite.FontFamily\"/></strong> object can be retrieved from a font collection using the  <strong><see cref=\"M:SharpDX.DirectWrite.FontCollection.GetFontFamily(System.Int32)\"/></strong> method shown in the following example.  <strong>GetFontFamily</strong> takes a <strong>UINT32</strong> index and returns the font family for the font at that index.</p><pre><code><see cref=\"T:SharpDX.DirectWrite.FontFamily\"/>* pFontFamily = <c>null</c>; // Get the font family.\t\n            if (SUCCEEDED(hr))\t\n            { hr = pFontCollection-&gt;GetFontFamily(i, &amp;pFontFamily);\t\n            }\t\n            </code></pre><p>The font family name is used to specify the font family for text layout and text format objects.  You can get a list of localized font family names from an <strong><see cref=\"T:SharpDX.DirectWrite.FontFamily\"/></strong> object in the form of an <strong><see cref=\"T:SharpDX.DirectWrite.LocalizedStrings\"/></strong> object by using the <strong><see cref=\"M:SharpDX.DirectWrite.FontFamily.GetFamilyNames(SharpDX.DirectWrite.LocalizedStrings@)\"/></strong> method, as shown in the following code.</p><pre><code><see cref=\"T:SharpDX.DirectWrite.LocalizedStrings\"/>* pFamilyNames = <c>null</c>; // Get a list of localized strings for the family name.\t\n            if (SUCCEEDED(hr))\t\n            { hr = pFontFamily-&gt;GetFamilyNames(&amp;pFamilyNames);\t\n            }\t\n            </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFontFamily']/*\"/>\t\n            <msdn-id>dd371042</msdn-id>\t\n            <unmanaged>IDWriteFontFamily</unmanaged>\t\n            <unmanaged-short>IDWriteFontFamily</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.FontList\">\n            <summary>\t\n            <p> Represents a list of fonts.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFontList']/*\"/>\t\n            <msdn-id>dd371120</msdn-id>\t\n            <unmanaged>IDWriteFontList</unmanaged>\t\n            <unmanaged-short>IDWriteFontList</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.FontList.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectWrite.FontList\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.FontList.op_Explicit(System.IntPtr)~SharpDX.DirectWrite.FontList\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.DirectWrite.FontList\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.FontList.GetFontCollection(SharpDX.DirectWrite.FontCollection@)\">\n            <summary>\t\n            <p> Gets the font collection that contains the fonts in the font list.</p>\t\n            </summary>\t\n            <param name=\"fontCollection\"><dd> <p>When this method returns, contains the address of a reference to the current <strong><see cref=\"T:SharpDX.DirectWrite.FontCollection\"/></strong> object.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFontList::GetFontCollection']/*\"/>\t\n            <msdn-id>dd371129</msdn-id>\t\n            <unmanaged>HRESULT IDWriteFontList::GetFontCollection([Out] IDWriteFontCollection** fontCollection)</unmanaged>\t\n            <unmanaged-short>IDWriteFontList::GetFontCollection</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.FontList.GetFontCount\">\n            <summary>\t\n            <p> Gets the number of fonts in the font list. </p>\t\n            </summary>\t\n            <returns><p>The number of fonts in the font list.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFontList::GetFontCount']/*\"/>\t\n            <msdn-id>dd371133</msdn-id>\t\n            <unmanaged>unsigned int IDWriteFontList::GetFontCount()</unmanaged>\t\n            <unmanaged-short>IDWriteFontList::GetFontCount</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.FontList.GetFont(System.Int32)\">\n            <summary>\t\n            <p> Gets a font given its zero-based index. </p>\t\n            </summary>\t\n            <param name=\"index\"><dd> <p>Zero-based index of the font in the font list.</p> </dd></param>\t\n            <returns><dd> <p>When this method returns, contains the address of a reference to the newly created <strong><see cref=\"T:SharpDX.DirectWrite.Font\"/></strong> object.</p> </dd></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFontList::GetFont']/*\"/>\t\n            <msdn-id>dd371125</msdn-id>\t\n            <unmanaged>HRESULT IDWriteFontList::GetFont([In] unsigned int index,[Out] IDWriteFont** font)</unmanaged>\t\n            <unmanaged-short>IDWriteFontList::GetFont</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.DirectWrite.FontList.FontCollection\">\n            <summary>\t\n            <p> Gets the font collection that contains the fonts in the font list.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFontList::GetFontCollection']/*\"/>\t\n            <msdn-id>dd371129</msdn-id>\t\n            <unmanaged>GetFontCollection</unmanaged>\t\n            <unmanaged-short>GetFontCollection</unmanaged-short>\t\n            <unmanaged>HRESULT IDWriteFontList::GetFontCollection([Out] IDWriteFontCollection** fontCollection)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectWrite.FontList.FontCount\">\n            <summary>\t\n            <p> Gets the number of fonts in the font list. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFontList::GetFontCount']/*\"/>\t\n            <msdn-id>dd371133</msdn-id>\t\n            <unmanaged>GetFontCount</unmanaged>\t\n            <unmanaged-short>GetFontCount</unmanaged-short>\t\n            <unmanaged>unsigned int IDWriteFontList::GetFontCount()</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.FontFamily.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectWrite.FontFamily\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.FontFamily.op_Explicit(System.IntPtr)~SharpDX.DirectWrite.FontFamily\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.DirectWrite.FontFamily\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.FontFamily.GetFamilyNames(SharpDX.DirectWrite.LocalizedStrings@)\">\n            <summary>\t\n            <p> Creates a localized strings object that contains the family names for the font family, indexed by locale name. </p>\t\n            </summary>\t\n            <param name=\"names\"><dd> <p>The address of a reference to the newly created <strong><see cref=\"T:SharpDX.DirectWrite.LocalizedStrings\"/></strong> object.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p> The following code example shows how to get the font family name from a <strong><see cref=\"T:SharpDX.DirectWrite.FontFamily\"/></strong> object.</p><pre><code><see cref=\"T:SharpDX.DirectWrite.LocalizedStrings\"/>* pFamilyNames = <c>null</c>; // Get a list of localized strings for the family name.\t\n            if (SUCCEEDED(hr))\t\n            { hr = pFontFamily-&gt;GetFamilyNames(&amp;pFamilyNames);\t\n            } UINT32 index = 0;\t\n            <see cref=\"T:SharpDX.Bool\"/> exists = false; wchar_t localeName[LOCALE_NAME_MAX_LENGTH]; if (SUCCEEDED(hr))\t\n            { // Get the default locale for this user. int defaultLocaleSuccess = GetUserDefaultLocaleName(localeName, LOCALE_NAME_MAX_LENGTH); // If the default locale is returned, find that locale name, otherwise use \"en-us\". if (defaultLocaleSuccess) { hr = pFamilyNames-&gt;FindLocaleName(localeName, &amp;index, &amp;exists); } if (SUCCEEDED(hr) &amp;&amp; !exists) // if the above find did not find a match, retry with US English { hr = pFamilyNames-&gt;FindLocaleName(L\"en-us\", &amp;index, &amp;exists); }\t\n            } // If the specified locale doesn't exist, select the first on the list.\t\n            if (!exists) index = 0; UINT32 length = 0; // Get the string length.\t\n            if (SUCCEEDED(hr))\t\n            { hr = pFamilyNames-&gt;GetStringLength(index, &amp;length);\t\n            } // Allocate a string big enough to hold the name.\t\n            wchar_t* name = new (std::nothrow) wchar_t[length+1];\t\n            if (name == <c>null</c>)\t\n            { hr = E_OUTOFMEMORY;\t\n            } // Get the family name.\t\n            if (SUCCEEDED(hr))\t\n            { hr = pFamilyNames-&gt;GetString(index, name, length+1);\t\n            }\t\n            </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFontFamily::GetFamilyNames']/*\"/>\t\n            <msdn-id>dd371047</msdn-id>\t\n            <unmanaged>HRESULT IDWriteFontFamily::GetFamilyNames([Out] IDWriteLocalizedStrings** names)</unmanaged>\t\n            <unmanaged-short>IDWriteFontFamily::GetFamilyNames</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.FontFamily.GetFirstMatchingFont(SharpDX.DirectWrite.FontWeight,SharpDX.DirectWrite.FontStretch,SharpDX.DirectWrite.FontStyle)\">\n            <summary>\t\n            <p> Gets the font that best matches the specified properties. </p>\t\n            </summary>\t\n            <param name=\"weight\"><dd> <p>A value that is used to match a requested font weight.</p> </dd></param>\t\n            <param name=\"stretch\"><dd> <p>A value that is used to match a requested font stretch.</p> </dd></param>\t\n            <param name=\"style\"><dd> <p>A value that is used to match a requested font style.</p> </dd></param>\t\n            <returns><dd> <p>When this method returns, contains the address of a reference to the newly created <strong><see cref=\"T:SharpDX.DirectWrite.Font\"/></strong> object.</p> </dd></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFontFamily::GetFirstMatchingFont']/*\"/>\t\n            <msdn-id>dd371051</msdn-id>\t\n            <unmanaged>HRESULT IDWriteFontFamily::GetFirstMatchingFont([In] DWRITE_FONT_WEIGHT weight,[In] DWRITE_FONT_STRETCH stretch,[In] DWRITE_FONT_STYLE style,[Out] IDWriteFont** matchingFont)</unmanaged>\t\n            <unmanaged-short>IDWriteFontFamily::GetFirstMatchingFont</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.FontFamily.GetMatchingFonts(SharpDX.DirectWrite.FontWeight,SharpDX.DirectWrite.FontStretch,SharpDX.DirectWrite.FontStyle)\">\n            <summary>\t\n            <p> Gets a list of fonts in the font family ranked in order of how well they match the specified properties. </p>\t\n            </summary>\t\n            <param name=\"weight\"><dd> <p>A value that is used to match a requested font weight.</p> </dd></param>\t\n            <param name=\"stretch\"><dd> <p>A value that is used to match a requested font stretch.</p> </dd></param>\t\n            <param name=\"style\"><dd> <p>A value that is used to match a requested font style.</p> </dd></param>\t\n            <returns><dd> <p>An address of a reference to the newly created <strong><see cref=\"T:SharpDX.DirectWrite.FontList\"/></strong> object.</p> </dd></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFontFamily::GetMatchingFonts']/*\"/>\t\n            <msdn-id>dd371056</msdn-id>\t\n            <unmanaged>HRESULT IDWriteFontFamily::GetMatchingFonts([In] DWRITE_FONT_WEIGHT weight,[In] DWRITE_FONT_STRETCH stretch,[In] DWRITE_FONT_STYLE style,[Out] IDWriteFontList** matchingFonts)</unmanaged>\t\n            <unmanaged-short>IDWriteFontFamily::GetMatchingFonts</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.DirectWrite.FontFamily.FamilyNames\">\n            <summary>\t\n            <p> Creates a localized strings object that contains the family names for the font family, indexed by locale name. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p> The following code example shows how to get the font family name from a <strong><see cref=\"T:SharpDX.DirectWrite.FontFamily\"/></strong> object.</p><pre><code><see cref=\"T:SharpDX.DirectWrite.LocalizedStrings\"/>* pFamilyNames = <c>null</c>; // Get a list of localized strings for the family name.\t\n            if (SUCCEEDED(hr))\t\n            { hr = pFontFamily-&gt;GetFamilyNames(&amp;pFamilyNames);\t\n            } UINT32 index = 0;\t\n            <see cref=\"T:SharpDX.Bool\"/> exists = false; wchar_t localeName[LOCALE_NAME_MAX_LENGTH]; if (SUCCEEDED(hr))\t\n            { // Get the default locale for this user. int defaultLocaleSuccess = GetUserDefaultLocaleName(localeName, LOCALE_NAME_MAX_LENGTH); // If the default locale is returned, find that locale name, otherwise use \"en-us\". if (defaultLocaleSuccess) { hr = pFamilyNames-&gt;FindLocaleName(localeName, &amp;index, &amp;exists); } if (SUCCEEDED(hr) &amp;&amp; !exists) // if the above find did not find a match, retry with US English { hr = pFamilyNames-&gt;FindLocaleName(L\"en-us\", &amp;index, &amp;exists); }\t\n            } // If the specified locale doesn't exist, select the first on the list.\t\n            if (!exists) index = 0; UINT32 length = 0; // Get the string length.\t\n            if (SUCCEEDED(hr))\t\n            { hr = pFamilyNames-&gt;GetStringLength(index, &amp;length);\t\n            } // Allocate a string big enough to hold the name.\t\n            wchar_t* name = new (std::nothrow) wchar_t[length+1];\t\n            if (name == <c>null</c>)\t\n            { hr = E_OUTOFMEMORY;\t\n            } // Get the family name.\t\n            if (SUCCEEDED(hr))\t\n            { hr = pFamilyNames-&gt;GetString(index, name, length+1);\t\n            }\t\n            </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteFontFamily::GetFamilyNames']/*\"/>\t\n            <msdn-id>dd371047</msdn-id>\t\n            <unmanaged>GetFamilyNames</unmanaged>\t\n            <unmanaged-short>GetFamilyNames</unmanaged-short>\t\n            <unmanaged>HRESULT IDWriteFontFamily::GetFamilyNames([Out] IDWriteLocalizedStrings** names)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.LocalFontFileLoader\">\n            <summary>\t\n            <p>A built-in implementation of the <strong><see cref=\"T:SharpDX.DirectWrite.FontFileLoader\"/></strong> interface, that operates on local font files\t\n            and exposes local font file information from the font file reference key. Font file references created using <strong>CreateFontFileReference</strong> use this font file loader.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteLocalFontFileLoader']/*\"/>\t\n            <msdn-id>dd371238</msdn-id>\t\n            <unmanaged>IDWriteLocalFontFileLoader</unmanaged>\t\n            <unmanaged-short>IDWriteLocalFontFileLoader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.LocalFontFileLoader.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectWrite.LocalFontFileLoader\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.LocalFontFileLoader.op_Explicit(System.IntPtr)~SharpDX.DirectWrite.LocalFontFileLoader\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.DirectWrite.LocalFontFileLoader\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.LocalFontFileLoader.GetFilePathLengthFromKey(System.IntPtr,System.Int32)\">\n            <summary>\t\n            <p>Obtains the length of the absolute file path from the font file reference key.</p>\t\n            </summary>\t\n            <param name=\"fontFileReferenceKey\"><dd> <p>Font file reference key that uniquely identifies the local font file within the scope of the font loader being used.</p> </dd></param>\t\n            <param name=\"fontFileReferenceKeySize\"><dd> <p>Size of font file reference key in bytes.</p> </dd></param>\t\n            <returns><dd> <p>Length of the file path string, not including the terminated <strong><c>null</c></strong> character.</p> </dd></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteLocalFontFileLoader::GetFilePathLengthFromKey']/*\"/>\t\n            <msdn-id>dd371244</msdn-id>\t\n            <unmanaged>HRESULT IDWriteLocalFontFileLoader::GetFilePathLengthFromKey([In, Buffer] const void* fontFileReferenceKey,[In] unsigned int fontFileReferenceKeySize,[Out] unsigned int* filePathLength)</unmanaged>\t\n            <unmanaged-short>IDWriteLocalFontFileLoader::GetFilePathLengthFromKey</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.LocalFontFileLoader.GetFilePathFromKey(System.IntPtr,System.Int32,System.IntPtr,System.Int32)\">\n            <summary>\t\n            <p>Obtains the absolute font file path from the font file reference key.</p>\t\n            </summary>\t\n            <param name=\"fontFileReferenceKey\"><dd> <p>The font file reference key that uniquely identifies the local font file within the scope of the font loader being used.</p> </dd></param>\t\n            <param name=\"fontFileReferenceKeySize\"><dd> <p>The size of font file reference key in bytes.</p> </dd></param>\t\n            <param name=\"filePath\"><dd> <p>The character array that receives the local file path.</p> </dd></param>\t\n            <param name=\"filePathSize\"><dd> <p>The length of the file path character array.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteLocalFontFileLoader::GetFilePathFromKey']/*\"/>\t\n            <msdn-id>dd371241</msdn-id>\t\n            <unmanaged>HRESULT IDWriteLocalFontFileLoader::GetFilePathFromKey([In, Buffer] const void* fontFileReferenceKey,[In] unsigned int fontFileReferenceKeySize,[Out, Buffer] wchar_t* filePath,[In] unsigned int filePathSize)</unmanaged>\t\n            <unmanaged-short>IDWriteLocalFontFileLoader::GetFilePathFromKey</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectWrite.LocalFontFileLoader.GetLastWriteTimeFromKey(System.IntPtr,System.Int32)\">\n            <summary>\t\n            <p>Obtains the last write time of the file from the font file reference key.</p>\t\n            </summary>\t\n            <param name=\"fontFileReferenceKey\"><dd> <p>The font file reference key that uniquely identifies the local font file within the scope of the font loader being used.</p> </dd></param>\t\n            <param name=\"fontFileReferenceKeySize\"><dd> <p>The size of font file reference key in bytes.</p> </dd></param>\t\n            <returns><dd> <p>The time of the last font file modification.</p> </dd></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDWriteLocalFontFileLoader::GetLastWriteTimeFromKey']/*\"/>\t\n            <msdn-id>dd371247</msdn-id>\t\n            <unmanaged>HRESULT IDWriteLocalFontFileLoader::GetLastWriteTimeFromKey([In, Buffer] const void* fontFileReferenceKey,[In] unsigned int fontFileReferenceKeySize,[Out] FILETIME* lastWriteTime)</unmanaged>\t\n            <unmanaged-short>IDWriteLocalFontFileLoader::GetLastWriteTimeFromKey</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.ClusterMetrics\">\n            <summary>\t\n            <p>Contains information about a glyph cluster.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_CLUSTER_METRICS']/*\"/>\t\n            <msdn-id>dd368054</msdn-id>\t\n            <unmanaged>DWRITE_CLUSTER_METRICS</unmanaged>\t\n            <unmanaged-short>DWRITE_CLUSTER_METRICS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.ClusterMetrics.Width\">\n            <summary>\t\n            <dd> <p>The total advance width of all glyphs in the cluster.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_CLUSTER_METRICS::width']/*\"/>\t\n            <msdn-id>dd368054</msdn-id>\t\n            <unmanaged>float width</unmanaged>\t\n            <unmanaged-short>float width</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.ClusterMetrics.Length\">\n            <summary>\t\n            <dd> <p>The number of text positions in the cluster.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_CLUSTER_METRICS::length']/*\"/>\t\n            <msdn-id>dd368054</msdn-id>\t\n            <unmanaged>unsigned short length</unmanaged>\t\n            <unmanaged-short>unsigned short length</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.DirectWrite.ClusterMetrics.CanWrapLineAfter\">\n            <summary>\t\n            <dd> <p>Indicates whether a line can be broken right after the cluster.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_CLUSTER_METRICS::canWrapLineAfter']/*\"/>\t\n            <msdn-id>dd368054</msdn-id>\t\n            <unmanaged>unsigned short canWrapLineAfter</unmanaged>\t\n            <unmanaged-short>unsigned short canWrapLineAfter</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.DirectWrite.ClusterMetrics.IsWhitespace\">\n            <summary>\t\n            <dd> <p>Indicates whether the cluster corresponds to a whitespace character.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_CLUSTER_METRICS::isWhitespace']/*\"/>\t\n            <msdn-id>dd368054</msdn-id>\t\n            <unmanaged>unsigned short isWhitespace</unmanaged>\t\n            <unmanaged-short>unsigned short isWhitespace</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.DirectWrite.ClusterMetrics.IsNewline\">\n            <summary>\t\n            <dd> <p>Indicates whether the cluster corresponds to a newline character.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_CLUSTER_METRICS::isNewline']/*\"/>\t\n            <msdn-id>dd368054</msdn-id>\t\n            <unmanaged>unsigned short isNewline</unmanaged>\t\n            <unmanaged-short>unsigned short isNewline</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.DirectWrite.ClusterMetrics.IsSoftHyphen\">\n            <summary>\t\n            <dd> <p>Indicates whether the cluster corresponds to a soft hyphen character.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_CLUSTER_METRICS::isSoftHyphen']/*\"/>\t\n            <msdn-id>dd368054</msdn-id>\t\n            <unmanaged>unsigned short isSoftHyphen</unmanaged>\t\n            <unmanaged-short>unsigned short isSoftHyphen</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.DirectWrite.ClusterMetrics.IsRightToLeft\">\n            <summary>\t\n            <dd> <p>Indicates whether the cluster is read from right to left.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_CLUSTER_METRICS::isRightToLeft']/*\"/>\t\n            <msdn-id>dd368054</msdn-id>\t\n            <unmanaged>unsigned short isRightToLeft</unmanaged>\t\n            <unmanaged-short>unsigned short isRightToLeft</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.DirectWrite.ClusterMetrics.Padding\">\n            <summary>\t\n            <dd> <p>Reserved for future use.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_CLUSTER_METRICS::padding']/*\"/>\t\n            <msdn-id>dd368054</msdn-id>\t\n            <unmanaged>unsigned short padding</unmanaged>\t\n            <unmanaged-short>unsigned short padding</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.FontMetrics\">\n            <summary>\t\n            <p>The <see cref=\"T:SharpDX.DirectWrite.FontMetrics\"/> structure specifies the metrics that are applicable to all glyphs within the font face.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_METRICS']/*\"/>\t\n            <msdn-id>dd368074</msdn-id>\t\n            <unmanaged>DWRITE_FONT_METRICS</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_METRICS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontMetrics.DesignUnitsPerEm\">\n            <summary>\t\n            <dd> <p>The number of font design units per em unit. Font files use their own coordinate system of font design units. A font design unit is the smallest measurable unit in the em square, an imaginary square that is used to size and align glyphs. The concept of em square is used as a reference scale factor when defining font size and device transformation semantics. The size of one em square is also commonly used to compute the paragraph identation value.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_METRICS::designUnitsPerEm']/*\"/>\t\n            <msdn-id>dd368074</msdn-id>\t\n            <unmanaged>unsigned short designUnitsPerEm</unmanaged>\t\n            <unmanaged-short>unsigned short designUnitsPerEm</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontMetrics.Ascent\">\n            <summary>\t\n            <dd> <p>The ascent value of the font face in font design units. Ascent is the distance from the top of font character alignment box to the English baseline.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_METRICS::ascent']/*\"/>\t\n            <msdn-id>dd368074</msdn-id>\t\n            <unmanaged>unsigned short ascent</unmanaged>\t\n            <unmanaged-short>unsigned short ascent</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontMetrics.Descent\">\n            <summary>\t\n            <dd> <p>The descent value of the font face in font design units. Descent is the distance from the bottom of font character alignment box to the English baseline.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_METRICS::descent']/*\"/>\t\n            <msdn-id>dd368074</msdn-id>\t\n            <unmanaged>unsigned short descent</unmanaged>\t\n            <unmanaged-short>unsigned short descent</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontMetrics.LineGap\">\n            <summary>\t\n            <dd> <p>The line gap in font design units. Recommended additional white space to add between lines to improve legibility. The recommended line spacing (baseline-to-baseline distance) is  the sum of <strong>ascent</strong>, <strong>descent</strong>, and <strong>lineGap</strong>. The line gap is usually positive or zero but can be negative, in which case the recommended line spacing is less than the height of the character alignment box.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_METRICS::lineGap']/*\"/>\t\n            <msdn-id>dd368074</msdn-id>\t\n            <unmanaged>short lineGap</unmanaged>\t\n            <unmanaged-short>short lineGap</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontMetrics.CapHeight\">\n            <summary>\t\n            <dd> <p>The cap height value of the font face in font design units. Cap height is the distance from the English baseline to the top of a typical English capital. Capital \"H\" is often used as a reference character for the purpose of calculating the cap height value.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_METRICS::capHeight']/*\"/>\t\n            <msdn-id>dd368074</msdn-id>\t\n            <unmanaged>unsigned short capHeight</unmanaged>\t\n            <unmanaged-short>unsigned short capHeight</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontMetrics.XHeight\">\n            <summary>\t\n            <dd> <p>The x-height value of the font face in font design units. x-height is the distance from the English baseline to the top of lowercase letter \"x\", or a similar lowercase character.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_METRICS::xHeight']/*\"/>\t\n            <msdn-id>dd368074</msdn-id>\t\n            <unmanaged>unsigned short xHeight</unmanaged>\t\n            <unmanaged-short>unsigned short xHeight</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontMetrics.UnderlinePosition\">\n            <summary>\t\n            <dd> <p>The underline position value of the font face in font design units. Underline position is the position of underline relative to the English baseline. The value is usually made negative in order to place the underline below the baseline.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_METRICS::underlinePosition']/*\"/>\t\n            <msdn-id>dd368074</msdn-id>\t\n            <unmanaged>short underlinePosition</unmanaged>\t\n            <unmanaged-short>short underlinePosition</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontMetrics.UnderlineThickness\">\n            <summary>\t\n            <dd> <p>The suggested underline thickness value of the font face in font design units.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_METRICS::underlineThickness']/*\"/>\t\n            <msdn-id>dd368074</msdn-id>\t\n            <unmanaged>unsigned short underlineThickness</unmanaged>\t\n            <unmanaged-short>unsigned short underlineThickness</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontMetrics.StrikethroughPosition\">\n            <summary>\t\n            <dd> <p>The strikethrough position value of the font face in font design units. Strikethrough position is the position of strikethrough relative to the English baseline. The value is usually made positive in order to place the strikethrough above the baseline.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_METRICS::strikethroughPosition']/*\"/>\t\n            <msdn-id>dd368074</msdn-id>\t\n            <unmanaged>short strikethroughPosition</unmanaged>\t\n            <unmanaged-short>short strikethroughPosition</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.FontMetrics.StrikethroughThickness\">\n            <summary>\t\n            <dd> <p>The suggested strikethrough thickness value of the font face in font design units.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_FONT_METRICS::strikethroughThickness']/*\"/>\t\n            <msdn-id>dd368074</msdn-id>\t\n            <unmanaged>unsigned short strikethroughThickness</unmanaged>\t\n            <unmanaged-short>unsigned short strikethroughThickness</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.GlyphMetrics\">\n            <summary>\t\n            <p>Specifies the metrics of an individual glyph. The units depend on how the metrics are obtained.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_GLYPH_METRICS']/*\"/>\t\n            <msdn-id>dd368084</msdn-id>\t\n            <unmanaged>DWRITE_GLYPH_METRICS</unmanaged>\t\n            <unmanaged-short>DWRITE_GLYPH_METRICS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.GlyphMetrics.LeftSideBearing\">\n            <summary>\t\n            <dd> <p>Specifies the X offset from the glyph origin to the left edge of the black box. The glyph origin is the current horizontal writing position. A negative value means the black box extends to the left of the origin (often true for lowercase italic 'f').</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_GLYPH_METRICS::leftSideBearing']/*\"/>\t\n            <msdn-id>dd368084</msdn-id>\t\n            <unmanaged>int leftSideBearing</unmanaged>\t\n            <unmanaged-short>int leftSideBearing</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.GlyphMetrics.AdvanceWidth\">\n            <summary>\t\n            <dd> <p>Specifies the X offset from the origin of the current glyph to the origin of the next glyph when writing horizontally.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_GLYPH_METRICS::advanceWidth']/*\"/>\t\n            <msdn-id>dd368084</msdn-id>\t\n            <unmanaged>unsigned int advanceWidth</unmanaged>\t\n            <unmanaged-short>unsigned int advanceWidth</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.GlyphMetrics.RightSideBearing\">\n            <summary>\t\n            <dd> <p>Specifies the X offset from the right edge of the black box to the origin of the next glyph when writing horizontally. The value is negative when the right edge of the black box overhangs the layout box.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_GLYPH_METRICS::rightSideBearing']/*\"/>\t\n            <msdn-id>dd368084</msdn-id>\t\n            <unmanaged>int rightSideBearing</unmanaged>\t\n            <unmanaged-short>int rightSideBearing</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.GlyphMetrics.TopSideBearing\">\n            <summary>\t\n            <dd> <p>Specifies the vertical offset from the vertical origin to the top of the black box. Thus, a positive value adds whitespace whereas a negative value means the glyph overhangs the top of the layout box.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_GLYPH_METRICS::topSideBearing']/*\"/>\t\n            <msdn-id>dd368084</msdn-id>\t\n            <unmanaged>int topSideBearing</unmanaged>\t\n            <unmanaged-short>int topSideBearing</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.GlyphMetrics.AdvanceHeight\">\n            <summary>\t\n            <dd> <p>Specifies the Y offset from the vertical origin of the current glyph to the vertical origin of the next glyph when writing vertically. Note that the term \"origin\" by itself denotes the horizontal origin. The vertical origin is different. Its Y coordinate is specified by <strong>verticalOriginY</strong> value, and its X coordinate is half the <strong>advanceWidth</strong> to the right of the horizontal origin.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_GLYPH_METRICS::advanceHeight']/*\"/>\t\n            <msdn-id>dd368084</msdn-id>\t\n            <unmanaged>unsigned int advanceHeight</unmanaged>\t\n            <unmanaged-short>unsigned int advanceHeight</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.GlyphMetrics.BottomSideBearing\">\n            <summary>\t\n            <dd> <p>Specifies the vertical distance from the bottom edge of the black box to the advance height. This is positive when the bottom edge of the black box is within the layout box, or negative when the bottom edge of black box overhangs the layout box.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_GLYPH_METRICS::bottomSideBearing']/*\"/>\t\n            <msdn-id>dd368084</msdn-id>\t\n            <unmanaged>int bottomSideBearing</unmanaged>\t\n            <unmanaged-short>int bottomSideBearing</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.GlyphMetrics.VerticalOriginY\">\n            <summary>\t\n            <dd> <p>Specifies the Y coordinate of a glyph's vertical origin, in the font's design coordinate system. The y coordinate of a glyph's vertical origin is the sum of the glyph's top side bearing and the top (that is, yMax) of the glyph's bounding box.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_GLYPH_METRICS::verticalOriginY']/*\"/>\t\n            <msdn-id>dd368084</msdn-id>\t\n            <unmanaged>int verticalOriginY</unmanaged>\t\n            <unmanaged-short>int verticalOriginY</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.GlyphOffset\">\n            <summary>\t\n            <p>The optional adjustment to a glyph's position.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>An glyph offset changes the position of a glyph without affecting the pen position. Offsets are in logical, pre-transform units.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_GLYPH_OFFSET']/*\"/>\t\n            <msdn-id>dd368086</msdn-id>\t\n            <unmanaged>DWRITE_GLYPH_OFFSET</unmanaged>\t\n            <unmanaged-short>DWRITE_GLYPH_OFFSET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.GlyphOffset.AdvanceOffset\">\n            <summary>\t\n            <dd> <p>The offset in the advance direction of the run. A positive advance offset moves the glyph to the right (in pre-transform coordinates) if the run is left-to-right or to the left if the run is right-to-left.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_GLYPH_OFFSET::advanceOffset']/*\"/>\t\n            <msdn-id>dd368086</msdn-id>\t\n            <unmanaged>float advanceOffset</unmanaged>\t\n            <unmanaged-short>float advanceOffset</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.GlyphOffset.AscenderOffset\">\n            <summary>\t\n            <dd> <p>The offset in the ascent direction, that is, the direction ascenders point. A positive ascender offset moves the glyph up (in pre-transform coordinates).  A negative ascender offset moves the glyph down.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_GLYPH_OFFSET::ascenderOffset']/*\"/>\t\n            <msdn-id>dd368086</msdn-id>\t\n            <unmanaged>float ascenderOffset</unmanaged>\t\n            <unmanaged-short>float ascenderOffset</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.HitTestMetrics\">\n            <summary>\t\n            <p>Describes the region obtained by a hit test.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_HIT_TEST_METRICS']/*\"/>\t\n            <msdn-id>dd368092</msdn-id>\t\n            <unmanaged>DWRITE_HIT_TEST_METRICS</unmanaged>\t\n            <unmanaged-short>DWRITE_HIT_TEST_METRICS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.HitTestMetrics.TextPosition\">\n            <summary>\t\n            <dd> <p>The first text position within the hit region. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_HIT_TEST_METRICS::textPosition']/*\"/>\t\n            <msdn-id>dd368092</msdn-id>\t\n            <unmanaged>unsigned int textPosition</unmanaged>\t\n            <unmanaged-short>unsigned int textPosition</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.HitTestMetrics.Length\">\n            <summary>\t\n            <dd> <p>The number of text positions within the hit region. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_HIT_TEST_METRICS::length']/*\"/>\t\n            <msdn-id>dd368092</msdn-id>\t\n            <unmanaged>unsigned int length</unmanaged>\t\n            <unmanaged-short>unsigned int length</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.HitTestMetrics.Left\">\n            <summary>\t\n            <dd> <p>The x-coordinate of the upper-left corner of the hit region.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_HIT_TEST_METRICS::left']/*\"/>\t\n            <msdn-id>dd368092</msdn-id>\t\n            <unmanaged>float left</unmanaged>\t\n            <unmanaged-short>float left</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.HitTestMetrics.Top\">\n            <summary>\t\n            <dd> <p>The y-coordinate of the upper-left corner of the hit region.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_HIT_TEST_METRICS::top']/*\"/>\t\n            <msdn-id>dd368092</msdn-id>\t\n            <unmanaged>float top</unmanaged>\t\n            <unmanaged-short>float top</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.HitTestMetrics.Width\">\n            <summary>\t\n            <dd> <p>The width of the hit region.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_HIT_TEST_METRICS::width']/*\"/>\t\n            <msdn-id>dd368092</msdn-id>\t\n            <unmanaged>float width</unmanaged>\t\n            <unmanaged-short>float width</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.HitTestMetrics.Height\">\n            <summary>\t\n            <dd> <p>The height of the hit region.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_HIT_TEST_METRICS::height']/*\"/>\t\n            <msdn-id>dd368092</msdn-id>\t\n            <unmanaged>float height</unmanaged>\t\n            <unmanaged-short>float height</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.HitTestMetrics.BidiLevel\">\n            <summary>\t\n            <dd> <p>The <strong>BIDI level</strong> of the text positions within the hit region.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_HIT_TEST_METRICS::bidiLevel']/*\"/>\t\n            <msdn-id>dd368092</msdn-id>\t\n            <unmanaged>unsigned int bidiLevel</unmanaged>\t\n            <unmanaged-short>unsigned int bidiLevel</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.HitTestMetrics.IsText\">\n            <summary>\t\n            <dd> <p>true if the hit region contains text; otherwise, false.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_HIT_TEST_METRICS::isText']/*\"/>\t\n            <msdn-id>dd368092</msdn-id>\t\n            <unmanaged>BOOL isText</unmanaged>\t\n            <unmanaged-short>BOOL isText</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.HitTestMetrics.IsTrimmed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_HIT_TEST_METRICS::isTrimmed']/*\"/>\t\n            <unmanaged>BOOL isTrimmed</unmanaged>\t\n            <unmanaged-short>BOOL isTrimmed</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.InlineObjectMetrics\">\n            <summary>\t\n            <p>Contains properties describing the geometric measurement of an\t\n            application-defined inline object.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_INLINE_OBJECT_METRICS']/*\"/>\t\n            <msdn-id>dd368096</msdn-id>\t\n            <unmanaged>DWRITE_INLINE_OBJECT_METRICS</unmanaged>\t\n            <unmanaged-short>DWRITE_INLINE_OBJECT_METRICS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.InlineObjectMetrics.Width\">\n            <summary>\t\n            <dd> <p>The width of the inline object.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_INLINE_OBJECT_METRICS::width']/*\"/>\t\n            <msdn-id>dd368096</msdn-id>\t\n            <unmanaged>float width</unmanaged>\t\n            <unmanaged-short>float width</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.InlineObjectMetrics.Height\">\n            <summary>\t\n            <dd> <p>The height of the inline object.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_INLINE_OBJECT_METRICS::height']/*\"/>\t\n            <msdn-id>dd368096</msdn-id>\t\n            <unmanaged>float height</unmanaged>\t\n            <unmanaged-short>float height</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.InlineObjectMetrics.Baseline\">\n            <summary>\t\n            <dd> <p>The distance from the top of the object to the point where it is lined up with the adjacent text.  If the baseline is at the bottom, then <strong>baseline</strong> simply equals <strong>height</strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_INLINE_OBJECT_METRICS::baseline']/*\"/>\t\n            <msdn-id>dd368096</msdn-id>\t\n            <unmanaged>float baseline</unmanaged>\t\n            <unmanaged-short>float baseline</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.InlineObjectMetrics.SupportsSideways\">\n            <summary>\t\n            <dd> <p>A Boolean flag that indicates whether the object is to be placed upright or alongside the text baseline for vertical text.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_INLINE_OBJECT_METRICS::supportsSideways']/*\"/>\t\n            <msdn-id>dd368096</msdn-id>\t\n            <unmanaged>BOOL supportsSideways</unmanaged>\t\n            <unmanaged-short>BOOL supportsSideways</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.LineMetrics\">\n            <summary>\t\n            <p>Contains information about a formatted line of text.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_LINE_METRICS']/*\"/>\t\n            <msdn-id>dd368099</msdn-id>\t\n            <unmanaged>DWRITE_LINE_METRICS</unmanaged>\t\n            <unmanaged-short>DWRITE_LINE_METRICS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.LineMetrics.Length\">\n            <summary>\t\n            <dd> <p>The number of text positions in the text line.  This includes any trailing whitespace and newline characters.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_LINE_METRICS::length']/*\"/>\t\n            <msdn-id>dd368099</msdn-id>\t\n            <unmanaged>unsigned int length</unmanaged>\t\n            <unmanaged-short>unsigned int length</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.LineMetrics.TrailingWhitespaceLength\">\n            <summary>\t\n            <dd> <p>The number of whitespace positions at the end of the text line.  Newline sequences are considered whitespace.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_LINE_METRICS::trailingWhitespaceLength']/*\"/>\t\n            <msdn-id>dd368099</msdn-id>\t\n            <unmanaged>unsigned int trailingWhitespaceLength</unmanaged>\t\n            <unmanaged-short>unsigned int trailingWhitespaceLength</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.LineMetrics.NewlineLength\">\n            <summary>\t\n            <dd> <p>The number of characters in the newline sequence at the end of the text line.  If the count is zero, then the text line was either wrapped or it is the end of the text.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_LINE_METRICS::newlineLength']/*\"/>\t\n            <msdn-id>dd368099</msdn-id>\t\n            <unmanaged>unsigned int newlineLength</unmanaged>\t\n            <unmanaged-short>unsigned int newlineLength</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.LineMetrics.Height\">\n            <summary>\t\n            <dd> <p>The height of the text line.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_LINE_METRICS::height']/*\"/>\t\n            <msdn-id>dd368099</msdn-id>\t\n            <unmanaged>float height</unmanaged>\t\n            <unmanaged-short>float height</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.LineMetrics.Baseline\">\n            <summary>\t\n            <dd> <p>The distance from the top of the text line to its baseline.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_LINE_METRICS::baseline']/*\"/>\t\n            <msdn-id>dd368099</msdn-id>\t\n            <unmanaged>float baseline</unmanaged>\t\n            <unmanaged-short>float baseline</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.LineMetrics.IsTrimmed\">\n            <summary>\t\n            <dd> <p>The line is trimmed.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_LINE_METRICS::isTrimmed']/*\"/>\t\n            <msdn-id>dd368099</msdn-id>\t\n            <unmanaged>BOOL isTrimmed</unmanaged>\t\n            <unmanaged-short>BOOL isTrimmed</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.Matrix\">\n            <summary>\t\n            <p>The <strong><see cref=\"T:SharpDX.DirectWrite.Matrix\"/></strong> structure specifies the graphics transform to be applied to rendered glyphs.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_MATRIX']/*\"/>\t\n            <msdn-id>dd368105</msdn-id>\t\n            <unmanaged>DWRITE_MATRIX</unmanaged>\t\n            <unmanaged-short>DWRITE_MATRIX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.Matrix.M11\">\n            <summary>\t\n            <dd> <p>A value indicating the horizontal scaling / cosine of rotation.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_MATRIX::m11']/*\"/>\t\n            <msdn-id>dd368105</msdn-id>\t\n            <unmanaged>float m11</unmanaged>\t\n            <unmanaged-short>float m11</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.Matrix.M12\">\n            <summary>\t\n            <dd> <p>A value indicating the vertical shear / sine of rotation.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_MATRIX::m12']/*\"/>\t\n            <msdn-id>dd368105</msdn-id>\t\n            <unmanaged>float m12</unmanaged>\t\n            <unmanaged-short>float m12</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.Matrix.M21\">\n            <summary>\t\n            <dd> <p>A value indicating the horizontal shear / negative sine of rotation.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_MATRIX::m21']/*\"/>\t\n            <msdn-id>dd368105</msdn-id>\t\n            <unmanaged>float m21</unmanaged>\t\n            <unmanaged-short>float m21</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.Matrix.M22\">\n            <summary>\t\n            <dd> <p>A value indicating the vertical scaling / cosine of rotation.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_MATRIX::m22']/*\"/>\t\n            <msdn-id>dd368105</msdn-id>\t\n            <unmanaged>float m22</unmanaged>\t\n            <unmanaged-short>float m22</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.Matrix.Dx\">\n            <summary>\t\n            <dd> <p>A value indicating the horizontal shift (always orthogonal regardless of rotation).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_MATRIX::dx']/*\"/>\t\n            <msdn-id>dd368105</msdn-id>\t\n            <unmanaged>float dx</unmanaged>\t\n            <unmanaged-short>float dx</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.Matrix.Dy\">\n            <summary>\t\n            <dd> <p>A value indicating the vertical shift (always orthogonal regardless of rotation.)</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_MATRIX::dy']/*\"/>\t\n            <msdn-id>dd368105</msdn-id>\t\n            <unmanaged>float dy</unmanaged>\t\n            <unmanaged-short>float dy</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.OverhangMetrics\">\n            <summary>\t\n            <p>Indicates how much any visible DIPs (device independent pixels) overshoot each side of the layout or inline objects.</p><p>Positive overhangs indicate that the visible area extends outside the layout box or inline object, while negative values mean there is whitespace inside. The returned values are unaffected by rendering transforms or pixel snapping.  Additionally, they may not exactly match the final target's pixel bounds after applying grid fitting and hinting.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_OVERHANG_METRICS']/*\"/>\t\n            <msdn-id>dd368109</msdn-id>\t\n            <unmanaged>DWRITE_OVERHANG_METRICS</unmanaged>\t\n            <unmanaged-short>DWRITE_OVERHANG_METRICS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.OverhangMetrics.Left\">\n            <summary>\t\n            <dd> <p>The distance from the left-most visible DIP to its  left-alignment edge.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_OVERHANG_METRICS::left']/*\"/>\t\n            <msdn-id>dd368109</msdn-id>\t\n            <unmanaged>float left</unmanaged>\t\n            <unmanaged-short>float left</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.OverhangMetrics.Top\">\n            <summary>\t\n            <dd> <p>The distance from the top-most visible DIP to its  top alignment edge.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_OVERHANG_METRICS::top']/*\"/>\t\n            <msdn-id>dd368109</msdn-id>\t\n            <unmanaged>float top</unmanaged>\t\n            <unmanaged-short>float top</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.OverhangMetrics.Right\">\n            <summary>\t\n            <dd> <p>The distance from the right-most visible DIP to its  right-alignment edge.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_OVERHANG_METRICS::right']/*\"/>\t\n            <msdn-id>dd368109</msdn-id>\t\n            <unmanaged>float right</unmanaged>\t\n            <unmanaged-short>float right</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.OverhangMetrics.Bottom\">\n            <summary>\t\n            <dd> <p>The distance from the bottom-most visible DIP to its lower-alignment edge.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_OVERHANG_METRICS::bottom']/*\"/>\t\n            <msdn-id>dd368109</msdn-id>\t\n            <unmanaged>float bottom</unmanaged>\t\n            <unmanaged-short>float bottom</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.ScriptAnalysis\">\n            <summary>\t\n            <p>Stores the association of text and its writing system script, as well as some display attributes.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_SCRIPT_ANALYSIS']/*\"/>\t\n            <msdn-id>dd368120</msdn-id>\t\n            <unmanaged>DWRITE_SCRIPT_ANALYSIS</unmanaged>\t\n            <unmanaged-short>DWRITE_SCRIPT_ANALYSIS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.ScriptAnalysis.Script\">\n            <summary>\t\n            <dd> <p>The zero-based index representation of writing system script.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_SCRIPT_ANALYSIS::script']/*\"/>\t\n            <msdn-id>dd368120</msdn-id>\t\n            <unmanaged>unsigned short script</unmanaged>\t\n            <unmanaged-short>unsigned short script</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.ScriptAnalysis.Shapes\">\n            <summary>\t\n            <dd> <p>A value that indicates additional shaping requirement of text.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_SCRIPT_ANALYSIS::shapes']/*\"/>\t\n            <msdn-id>dd368120</msdn-id>\t\n            <unmanaged>DWRITE_SCRIPT_SHAPES shapes</unmanaged>\t\n            <unmanaged-short>DWRITE_SCRIPT_SHAPES shapes</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.ShapingTextProperties\">\n            <summary>\t\n            <p>Shaping output properties for an output glyph.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_SHAPING_TEXT_PROPERTIES']/*\"/>\t\n            <msdn-id>dd368125</msdn-id>\t\n            <unmanaged>DWRITE_SHAPING_TEXT_PROPERTIES</unmanaged>\t\n            <unmanaged-short>DWRITE_SHAPING_TEXT_PROPERTIES</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.DirectWrite.ShapingTextProperties.IsShapedAlone\">\n            <summary>\t\n            <dd> <p>Indicates that the glyph is shaped alone.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_SHAPING_TEXT_PROPERTIES::isShapedAlone']/*\"/>\t\n            <msdn-id>dd368125</msdn-id>\t\n            <unmanaged>unsigned short isShapedAlone</unmanaged>\t\n            <unmanaged-short>unsigned short isShapedAlone</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.DirectWrite.ShapingTextProperties.Reserved\">\n            <summary>\t\n            <dd> <p>Reserved for future use.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_SHAPING_TEXT_PROPERTIES::reserved']/*\"/>\t\n            <msdn-id>dd368125</msdn-id>\t\n            <unmanaged>unsigned short reserved</unmanaged>\t\n            <unmanaged-short>unsigned short reserved</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.Strikethrough\">\n            <summary>\t\n            <p>Contains information regarding the size and placement of strikethroughs. All coordinates are in device independent pixels (DIPs).</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_STRIKETHROUGH']/*\"/>\t\n            <msdn-id>dd368126</msdn-id>\t\n            <unmanaged>DWRITE_STRIKETHROUGH</unmanaged>\t\n            <unmanaged-short>DWRITE_STRIKETHROUGH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.Strikethrough.Width\">\n            <summary>\t\n            <dd> <p>A value that indicates the width of the strikethrough, measured parallel to the baseline.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_STRIKETHROUGH::width']/*\"/>\t\n            <msdn-id>dd368126</msdn-id>\t\n            <unmanaged>float width</unmanaged>\t\n            <unmanaged-short>float width</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.Strikethrough.Thickness\">\n            <summary>\t\n            <dd> <p>A value that indicates the thickness of the strikethrough, measured perpendicular to the baseline.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_STRIKETHROUGH::thickness']/*\"/>\t\n            <msdn-id>dd368126</msdn-id>\t\n            <unmanaged>float thickness</unmanaged>\t\n            <unmanaged-short>float thickness</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.Strikethrough.Offset\">\n            <summary>\t\n            <dd> <p>A value that indicates the offset of the strikethrough from the baseline.  A positive offset represents a position below the baseline and  a negative offset is above.  Typically, the offset will be negative.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_STRIKETHROUGH::offset']/*\"/>\t\n            <msdn-id>dd368126</msdn-id>\t\n            <unmanaged>float offset</unmanaged>\t\n            <unmanaged-short>float offset</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.Strikethrough.ReadingDirection\">\n            <summary>\t\n            <dd> <p>Reading direction of the text associated with the strikethrough.  This value is used to interpret whether the width value runs horizontally  or vertically.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_STRIKETHROUGH::readingDirection']/*\"/>\t\n            <msdn-id>dd368126</msdn-id>\t\n            <unmanaged>DWRITE_READING_DIRECTION readingDirection</unmanaged>\t\n            <unmanaged-short>DWRITE_READING_DIRECTION readingDirection</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.Strikethrough.FlowDirection\">\n            <summary>\t\n            <dd> <p>Flow direction of the text associated with the strikethrough.  This value is used to interpret whether the thickness value advances top to  bottom, left to right, or right to left.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_STRIKETHROUGH::flowDirection']/*\"/>\t\n            <msdn-id>dd368126</msdn-id>\t\n            <unmanaged>DWRITE_FLOW_DIRECTION flowDirection</unmanaged>\t\n            <unmanaged-short>DWRITE_FLOW_DIRECTION flowDirection</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.Strikethrough.LocaleName\">\n            <summary>\t\n            <dd> <p>An array of characters containing the locale of the  text that is the strikethrough is being drawn over. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_STRIKETHROUGH::localeName']/*\"/>\t\n            <msdn-id>dd368126</msdn-id>\t\n            <unmanaged>const wchar_t* localeName</unmanaged>\t\n            <unmanaged-short>wchar_t localeName</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.Strikethrough.MeasuringMode\">\n            <summary>\t\n            <dd> <p>The measuring mode can be useful to the renderer to determine how underlines are rendered, such as rounding the thickness to a whole pixel in GDI-compatible modes.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_STRIKETHROUGH::measuringMode']/*\"/>\t\n            <msdn-id>dd368126</msdn-id>\t\n            <unmanaged>DWRITE_MEASURING_MODE measuringMode</unmanaged>\t\n            <unmanaged-short>DWRITE_MEASURING_MODE measuringMode</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.TextMetrics\">\n            <summary>\t\n            <p>Contains the metrics associated with text after layout.  All coordinates are in device independent pixels (DIPs).</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_TEXT_METRICS']/*\"/>\t\n            <msdn-id>dd368135</msdn-id>\t\n            <unmanaged>DWRITE_TEXT_METRICS</unmanaged>\t\n            <unmanaged-short>DWRITE_TEXT_METRICS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.TextMetrics.Left\">\n            <summary>\t\n            <dd> <p>A value that indicates the left-most point of formatted text relative to the layout box,  while excluding any glyph overhang.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_TEXT_METRICS::left']/*\"/>\t\n            <msdn-id>dd368135</msdn-id>\t\n            <unmanaged>float left</unmanaged>\t\n            <unmanaged-short>float left</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.TextMetrics.Top\">\n            <summary>\t\n            <dd> <p>A value that indicates the top-most point of formatted text relative to the layout box, while excluding any glyph overhang.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_TEXT_METRICS::top']/*\"/>\t\n            <msdn-id>dd368135</msdn-id>\t\n            <unmanaged>float top</unmanaged>\t\n            <unmanaged-short>float top</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.TextMetrics.Width\">\n            <summary>\t\n            <dd> <p>A value that indicates the width of the formatted text, while ignoring trailing whitespace  at the end of each line.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_TEXT_METRICS::width']/*\"/>\t\n            <msdn-id>dd368135</msdn-id>\t\n            <unmanaged>float width</unmanaged>\t\n            <unmanaged-short>float width</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.TextMetrics.WidthIncludingTrailingWhitespace\">\n            <summary>\t\n            <dd> <p>The width of the formatted text, taking into account the  trailing whitespace at the end of each line.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_TEXT_METRICS::widthIncludingTrailingWhitespace']/*\"/>\t\n            <msdn-id>dd368135</msdn-id>\t\n            <unmanaged>float widthIncludingTrailingWhitespace</unmanaged>\t\n            <unmanaged-short>float widthIncludingTrailingWhitespace</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.TextMetrics.Height\">\n            <summary>\t\n            <dd> <p>The height of the formatted text. The height of an empty string  is set to the same value as that of the default font.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_TEXT_METRICS::height']/*\"/>\t\n            <msdn-id>dd368135</msdn-id>\t\n            <unmanaged>float height</unmanaged>\t\n            <unmanaged-short>float height</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.TextMetrics.LayoutWidth\">\n            <summary>\t\n            <dd> <p>The initial width given to the layout. It can be either larger or smaller than the  text content width, depending on whether the text  was wrapped.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_TEXT_METRICS::layoutWidth']/*\"/>\t\n            <msdn-id>dd368135</msdn-id>\t\n            <unmanaged>float layoutWidth</unmanaged>\t\n            <unmanaged-short>float layoutWidth</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.TextMetrics.LayoutHeight\">\n            <summary>\t\n            <dd> <p>Initial height given to the layout. Depending on the length of the text, it may be larger or smaller than the text content height.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_TEXT_METRICS::layoutHeight']/*\"/>\t\n            <msdn-id>dd368135</msdn-id>\t\n            <unmanaged>float layoutHeight</unmanaged>\t\n            <unmanaged-short>float layoutHeight</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.TextMetrics.MaxBidiReorderingDepth\">\n            <summary>\t\n            <dd> <p>The maximum reordering count of any line of text, used  to calculate the most number of hit-testing boxes needed.  If the layout has no bidirectional text, or no text at all,  the minimum level is 1.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_TEXT_METRICS::maxBidiReorderingDepth']/*\"/>\t\n            <msdn-id>dd368135</msdn-id>\t\n            <unmanaged>unsigned int maxBidiReorderingDepth</unmanaged>\t\n            <unmanaged-short>unsigned int maxBidiReorderingDepth</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.TextMetrics.LineCount\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_TEXT_METRICS::lineCount']/*\"/>\t\n            <unmanaged>unsigned int lineCount</unmanaged>\t\n            <unmanaged-short>unsigned int lineCount</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.Trimming\">\n            <summary>\t\n            <p>Specifies the trimming option for text overflowing the layout box. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_TRIMMING']/*\"/>\t\n            <msdn-id>dd368139</msdn-id>\t\n            <unmanaged>DWRITE_TRIMMING</unmanaged>\t\n            <unmanaged-short>DWRITE_TRIMMING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.Trimming.Granularity\">\n            <summary>\t\n            <dd> <p>A value that specifies  the text granularity used to trim text overflowing the layout box.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_TRIMMING::granularity']/*\"/>\t\n            <msdn-id>dd368139</msdn-id>\t\n            <unmanaged>DWRITE_TRIMMING_GRANULARITY granularity</unmanaged>\t\n            <unmanaged-short>DWRITE_TRIMMING_GRANULARITY granularity</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.Trimming.Delimiter\">\n            <summary>\t\n            <dd> <p>A character code used as the delimiter that signals the beginning of the portion of text to be preserved. Most useful for path ellipsis, where the delimiter would be a slash.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_TRIMMING::delimiter']/*\"/>\t\n            <msdn-id>dd368139</msdn-id>\t\n            <unmanaged>unsigned int delimiter</unmanaged>\t\n            <unmanaged-short>unsigned int delimiter</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.Trimming.DelimiterCount\">\n            <summary>\t\n            <dd> <p>A value that indicates how many occurrences of the delimiter to step back.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_TRIMMING::delimiterCount']/*\"/>\t\n            <msdn-id>dd368139</msdn-id>\t\n            <unmanaged>unsigned int delimiterCount</unmanaged>\t\n            <unmanaged-short>unsigned int delimiterCount</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.TypographicFeatures\">\n            <summary>\t\n            <p>Contains a set of typographic features to be applied during text shaping.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_TYPOGRAPHIC_FEATURES']/*\"/>\t\n            <msdn-id>dd368143</msdn-id>\t\n            <unmanaged>DWRITE_TYPOGRAPHIC_FEATURES</unmanaged>\t\n            <unmanaged-short>DWRITE_TYPOGRAPHIC_FEATURES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.TypographicFeatures.Features\">\n            <summary>\t\n            <dd> <p>A reference to a structure that specifies properties used to identify and execute typographic features in the font.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_TYPOGRAPHIC_FEATURES::features']/*\"/>\t\n            <msdn-id>dd368143</msdn-id>\t\n            <unmanaged>DWRITE_FONT_FEATURE* features</unmanaged>\t\n            <unmanaged-short>DWRITE_FONT_FEATURE features</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.TypographicFeatures.FeatureCount\">\n            <summary>\t\n            <dd> <p>A value that indicates the number of features being applied to a font face.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_TYPOGRAPHIC_FEATURES::featureCount']/*\"/>\t\n            <msdn-id>dd368143</msdn-id>\t\n            <unmanaged>unsigned int featureCount</unmanaged>\t\n            <unmanaged-short>unsigned int featureCount</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectWrite.Underline\">\n            <summary>\t\n            <p>Contains information about the width, thickness, offset, run height, reading direction, and flow direction of an underline. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>All coordinates are in device independent pixels (DIPs).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_UNDERLINE']/*\"/>\t\n            <msdn-id>dd368145</msdn-id>\t\n            <unmanaged>DWRITE_UNDERLINE</unmanaged>\t\n            <unmanaged-short>DWRITE_UNDERLINE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.Underline.Width\">\n            <summary>\t\n            <dd> <p>A value that indicates the width of the underline, measured parallel to the baseline.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_UNDERLINE::width']/*\"/>\t\n            <msdn-id>dd368145</msdn-id>\t\n            <unmanaged>float width</unmanaged>\t\n            <unmanaged-short>float width</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.Underline.Thickness\">\n            <summary>\t\n            <dd> <p>A value that indicates the thickness of the underline, measured perpendicular to the baseline.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_UNDERLINE::thickness']/*\"/>\t\n            <msdn-id>dd368145</msdn-id>\t\n            <unmanaged>float thickness</unmanaged>\t\n            <unmanaged-short>float thickness</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.Underline.Offset\">\n            <summary>\t\n            <dd> <p>A value that indicates the offset of the underline from the baseline. A positive offset represents a position below the baseline (away from the text) and a negative offset is above (toward the text).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_UNDERLINE::offset']/*\"/>\t\n            <msdn-id>dd368145</msdn-id>\t\n            <unmanaged>float offset</unmanaged>\t\n            <unmanaged-short>float offset</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.Underline.RunHeight\">\n            <summary>\t\n            <dd> <p>A value that indicates the height of the tallest run where the underline is applied.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_UNDERLINE::runHeight']/*\"/>\t\n            <msdn-id>dd368145</msdn-id>\t\n            <unmanaged>float runHeight</unmanaged>\t\n            <unmanaged-short>float runHeight</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.Underline.ReadingDirection\">\n            <summary>\t\n            <dd> <p>A value that indicates the reading direction of the text associated with the underline. This value is used to interpret whether the width value runs horizontally or vertically.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_UNDERLINE::readingDirection']/*\"/>\t\n            <msdn-id>dd368145</msdn-id>\t\n            <unmanaged>DWRITE_READING_DIRECTION readingDirection</unmanaged>\t\n            <unmanaged-short>DWRITE_READING_DIRECTION readingDirection</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.Underline.FlowDirection\">\n            <summary>\t\n            <dd> <p>A value that indicates the flow direction of the text associated with the underline. This value is used to interpret whether the thickness value advances top to bottom, left to right, or right to left.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_UNDERLINE::flowDirection']/*\"/>\t\n            <msdn-id>dd368145</msdn-id>\t\n            <unmanaged>DWRITE_FLOW_DIRECTION flowDirection</unmanaged>\t\n            <unmanaged-short>DWRITE_FLOW_DIRECTION flowDirection</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.Underline.LocaleName\">\n            <summary>\t\n            <dd> <p>An array of characters which contains the locale of the text that the underline is being drawn under.  For example, in vertical text, the underline belongs on the left for Chinese but on the right for Japanese. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_UNDERLINE::localeName']/*\"/>\t\n            <msdn-id>dd368145</msdn-id>\t\n            <unmanaged>const wchar_t* localeName</unmanaged>\t\n            <unmanaged-short>wchar_t localeName</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectWrite.Underline.MeasuringMode\">\n            <summary>\t\n            <dd> <p>The measuring mode can be useful to the renderer to determine how underlines are rendered, such as rounding the thickness to a whole pixel in GDI-compatible modes.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_UNDERLINE::measuringMode']/*\"/>\t\n            <msdn-id>dd368145</msdn-id>\t\n            <unmanaged>DWRITE_MEASURING_MODE measuringMode</unmanaged>\t\n            <unmanaged-short>DWRITE_MEASURING_MODE measuringMode</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.AlphaMode\">\n            <summary>\t\n            <p>Specifies how the alpha value of a bitmap or render target should be treated.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The <strong><see cref=\"T:SharpDX.Direct2D1.AlphaMode\"/></strong> enumeration is used with the <strong><see cref=\"T:SharpDX.Direct2D1.PixelFormat\"/></strong> enumeration to specify the alpha mode of a render target or bitmap. Different render targets and bitmaps support different alpha modes. For a list, see Supported Pixel Formats and Alpha Modes.</p>The Differences Between Straight and Premultiplied Alpha<p>When describing an RGBA color using straight alpha, the alpha value of the color is stored in the alpha channel. For example, to describe a red color that is 60% opaque, you'd use the following values: (255, 0, 0, 255 * 0.6) = (255, 0, 0, 153). The 255 value indicates full red, and 153 (which is 60 percent of 255) indicates that the color should have an opacity of 60 percent.</p><p>When describing an RGBA color using premultiplied alpha, each color is multiplied by the alpha value: (255 * 0.6, 0 * 0.6, 0 * 0.6, 255 * 0.6) = (153, 0, 0, 153).  </p><p>Regardless of the alpha mode of the render target, <strong>D2D1_COLOR_F</strong> values are always interpreted as straight alpha.  For example, when specifying the color of an <strong><see cref=\"T:SharpDX.Direct2D1.SolidColorBrush\"/></strong> for use with a bitmap that uses the premultiplied alpha mode, you'd specify the color just as you would if the bitmap used straight alpha. When you paint with the brush, Direct2D translates the color to the destination format for you.</p>Alpha Mode for Render Targets<p>Regardless of the alpha mode setting, a render target's contents support transparency. For example, if you draw a partially transparent red rectangle with a render target with an alpha mode of <strong><see cref=\"F:SharpDX.Direct2D1.AlphaMode.Ignore\"/></strong>, the rectangle will appear pink (if the background is white), as you might expect.</p><p>If you draw a partially transparent red rectangle when the alpha mode is <strong><see cref=\"F:SharpDX.Direct2D1.AlphaMode.Premultiplied\"/></strong>, the rectangle will appear pink (assuming the background is white) and you can see through it to whatever is behind the render target. This is useful when using a <strong><see cref=\"T:SharpDX.Direct2D1.DeviceContextRenderTarget\"/></strong> to render to a transparent window or when using an compatible render target (a render targeted created by the <strong>CreateCompatibleRenderTarget</strong> method) to create a bitmap that supports transparency. </p>ClearType and Alpha Modes<p>If you specify an alpha mode other than <strong><see cref=\"F:SharpDX.Direct2D1.AlphaMode.Ignore\"/></strong> for a render target, the text antialiasing mode automatically changes from <strong><see cref=\"T:SharpDX.Direct2D1.TextAntialiasMode\"/> CLEARTYPE</strong> to <strong><see cref=\"T:SharpDX.Direct2D1.TextAntialiasMode\"/> GRAYSCALE</strong>. (When you specify an alpha mode of <strong><see cref=\"F:SharpDX.Direct2D1.AlphaMode.Unknown\"/></strong>, Direct2D sets the alpha for you depending on the type of render target. For a list of what the <strong><see cref=\"F:SharpDX.Direct2D1.AlphaMode.Unknown\"/></strong> setting resolves to for each render target, see the Supported Pixel Formats and Alpha Modes overview.) </p><p>You can use the <strong>SetTextAntialiasMode</strong> method to change the text antialias mode  back to <strong><see cref=\"T:SharpDX.Direct2D1.TextAntialiasMode\"/> CLEARTYPE</strong>, but rendering ClearType text to a transparent surface can create unpredictable results. If you want to render ClearType text to an transparent render target, we recommend that you use one of the following two techniques. </p><ul> <li>Use the <strong>PushAxisAlignedClip</strong> method to clip the render target to the area where the text will be rendered,    then call the <strong>Clear</strong> method and specify an opaque color, then render your text.</li> <li>Use <strong>DrawRectangle</strong> to draw an opaque rectangle behind the area where the text will be rendered.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_ALPHA_MODE']/*\"/>\t\n            <msdn-id>dd368058</msdn-id>\t\n            <unmanaged>D2D1_ALPHA_MODE</unmanaged>\t\n            <unmanaged-short>D2D1_ALPHA_MODE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.AlphaMode.Unknown\">\n            <summary>\t\n            <dd> <p>The alpha value might not be meaningful.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_ALPHA_MODE_UNKNOWN']/*\"/>\t\n            <msdn-id>dd368058</msdn-id>\t\n            <unmanaged>D2D1_ALPHA_MODE_UNKNOWN</unmanaged>\t\n            <unmanaged-short>D2D1_ALPHA_MODE_UNKNOWN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.AlphaMode.Premultiplied\">\n            <summary>\t\n            <dd> <p>The alpha value has been premultiplied. Each color is first scaled by the alpha value. The alpha value itself is the same in both straight and premultiplied alpha. Typically, no color channel value is greater than the alpha channel value.  If a color channel value in a premultiplied format is greater than the alpha channel, the standard source-over blending math results in an additive blend.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_ALPHA_MODE_PREMULTIPLIED']/*\"/>\t\n            <msdn-id>dd368058</msdn-id>\t\n            <unmanaged>D2D1_ALPHA_MODE_PREMULTIPLIED</unmanaged>\t\n            <unmanaged-short>D2D1_ALPHA_MODE_PREMULTIPLIED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.AlphaMode.Straight\">\n            <summary>\t\n            <dd> <p>The alpha value has not been premultiplied. The alpha channel indicates the transparency of the color. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_ALPHA_MODE_STRAIGHT']/*\"/>\t\n            <msdn-id>dd368058</msdn-id>\t\n            <unmanaged>D2D1_ALPHA_MODE_STRAIGHT</unmanaged>\t\n            <unmanaged-short>D2D1_ALPHA_MODE_STRAIGHT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.AlphaMode.Ignore\">\n            <summary>\t\n            <dd> <p>The alpha value is ignored.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_ALPHA_MODE_IGNORE']/*\"/>\t\n            <msdn-id>dd368058</msdn-id>\t\n            <unmanaged>D2D1_ALPHA_MODE_IGNORE</unmanaged>\t\n            <unmanaged-short>D2D1_ALPHA_MODE_IGNORE</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.AntialiasMode\">\n            <summary>\t\n            <p>Specifies how the edges of nontext primitives are rendered.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_ANTIALIAS_MODE']/*\"/>\t\n            <msdn-id>dd368061</msdn-id>\t\n            <unmanaged>D2D1_ANTIALIAS_MODE</unmanaged>\t\n            <unmanaged-short>D2D1_ANTIALIAS_MODE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.AntialiasMode.PerPrimitive\">\n            <summary>\t\n            <dd> <p>Edges are antialiased using the Direct2D per-primitive method of high-quality antialiasing.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_ANTIALIAS_MODE_PER_PRIMITIVE']/*\"/>\t\n            <msdn-id>dd368061</msdn-id>\t\n            <unmanaged>D2D1_ANTIALIAS_MODE_PER_PRIMITIVE</unmanaged>\t\n            <unmanaged-short>D2D1_ANTIALIAS_MODE_PER_PRIMITIVE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.AntialiasMode.Aliased\">\n            <summary>\t\n            <dd> <p>Objects are aliased in most cases. Objects are antialiased only when they are drawn to a render target created by the <strong>CreateDxgiSurfaceRenderTarget</strong> method and  Direct3D multisampling has been enabled on the backing DirectX Graphics Infrastructure (DXGI) surface. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_ANTIALIAS_MODE_ALIASED']/*\"/>\t\n            <msdn-id>dd368061</msdn-id>\t\n            <unmanaged>D2D1_ANTIALIAS_MODE_ALIASED</unmanaged>\t\n            <unmanaged-short>D2D1_ANTIALIAS_MODE_ALIASED</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.ArcSize\">\n            <summary>\t\n            <p>Specifies whether an arc should be greater than 180 degrees.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_ARC_SIZE']/*\"/>\t\n            <msdn-id>dd368068</msdn-id>\t\n            <unmanaged>D2D1_ARC_SIZE</unmanaged>\t\n            <unmanaged-short>D2D1_ARC_SIZE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.ArcSize.Small\">\n            <summary>\t\n            <dd> <p> An arc's sweep should be 180 degrees or less.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_ARC_SIZE_SMALL']/*\"/>\t\n            <msdn-id>dd368068</msdn-id>\t\n            <unmanaged>D2D1_ARC_SIZE_SMALL</unmanaged>\t\n            <unmanaged-short>D2D1_ARC_SIZE_SMALL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.ArcSize.Large\">\n            <summary>\t\n            <dd> <p> An arc's sweep should be 180 degrees or greater.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_ARC_SIZE_LARGE']/*\"/>\t\n            <msdn-id>dd368068</msdn-id>\t\n            <unmanaged>D2D1_ARC_SIZE_LARGE</unmanaged>\t\n            <unmanaged-short>D2D1_ARC_SIZE_LARGE</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.BitmapInterpolationMode\">\n            <summary>\t\n            <p> Specifies the algorithm that is used when images are scaled or rotated.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p> To stretch an image, each pixel in the original image must be mapped to a group of pixels in the larger image. To shrink an image, groups of pixels in the original image must be mapped to single pixels in the smaller image. The effectiveness of the algorithms that perform these mappings determines the quality of a scaled image. Algorithms that produce higher-quality scaled images tend to require more processing time. <strong><see cref=\"F:SharpDX.Direct2D1.BitmapInterpolationMode.NearestNeighbor\"/> </strong>provides faster but lower-quality interpolation, while <strong><see cref=\"F:SharpDX.Direct2D1.BitmapInterpolationMode.Linear\"/></strong> provides higher-quality interpolation. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_BITMAP_INTERPOLATION_MODE']/*\"/>\t\n            <msdn-id>dd368073</msdn-id>\t\n            <unmanaged>D2D1_BITMAP_INTERPOLATION_MODE</unmanaged>\t\n            <unmanaged-short>D2D1_BITMAP_INTERPOLATION_MODE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.BitmapInterpolationMode.NearestNeighbor\">\n            <summary>\t\n            <dd> <p>Use the exact color of the nearest bitmap pixel to the current rendering pixel.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_BITMAP_INTERPOLATION_MODE_NEAREST_NEIGHBOR']/*\"/>\t\n            <msdn-id>dd368073</msdn-id>\t\n            <unmanaged>D2D1_BITMAP_INTERPOLATION_MODE_NEAREST_NEIGHBOR</unmanaged>\t\n            <unmanaged-short>D2D1_BITMAP_INTERPOLATION_MODE_NEAREST_NEIGHBOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.BitmapInterpolationMode.Linear\">\n            <summary>\t\n            <dd> <p>Interpolate a color from the four bitmap pixels that are the nearest to the rendering pixel.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_BITMAP_INTERPOLATION_MODE_LINEAR']/*\"/>\t\n            <msdn-id>dd368073</msdn-id>\t\n            <unmanaged>D2D1_BITMAP_INTERPOLATION_MODE_LINEAR</unmanaged>\t\n            <unmanaged-short>D2D1_BITMAP_INTERPOLATION_MODE_LINEAR</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.CapStyle\">\n            <summary>\t\n            <p>Describes the shape at the end of a line or segment.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p> The following illustration shows the available cap styles for lines or segments. The red portion of the line shows the extra area added by the line cap setting. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_CAP_STYLE']/*\"/>\t\n            <msdn-id>dd368079</msdn-id>\t\n            <unmanaged>D2D1_CAP_STYLE</unmanaged>\t\n            <unmanaged-short>D2D1_CAP_STYLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.CapStyle.Flat\">\n            <summary>\t\n            <dd> <p>A cap that does not extend past the last point of the line. Comparable to cap used for objects other than lines. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_CAP_STYLE_FLAT']/*\"/>\t\n            <msdn-id>dd368079</msdn-id>\t\n            <unmanaged>D2D1_CAP_STYLE_FLAT</unmanaged>\t\n            <unmanaged-short>D2D1_CAP_STYLE_FLAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.CapStyle.Square\">\n            <summary>\t\n            <dd> <p>Half of a square that has a length equal to the line thickness.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_CAP_STYLE_SQUARE']/*\"/>\t\n            <msdn-id>dd368079</msdn-id>\t\n            <unmanaged>D2D1_CAP_STYLE_SQUARE</unmanaged>\t\n            <unmanaged-short>D2D1_CAP_STYLE_SQUARE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.CapStyle.Round\">\n            <summary>\t\n            <dd> <p>A semicircle that has a diameter equal to the line thickness.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_CAP_STYLE_ROUND']/*\"/>\t\n            <msdn-id>dd368079</msdn-id>\t\n            <unmanaged>D2D1_CAP_STYLE_ROUND</unmanaged>\t\n            <unmanaged-short>D2D1_CAP_STYLE_ROUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.CapStyle.Triangle\">\n            <summary>\t\n            <dd> <p>An isosceles right triangle whose hypotenuse is equal in length to the thickness of the line.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_CAP_STYLE_TRIANGLE']/*\"/>\t\n            <msdn-id>dd368079</msdn-id>\t\n            <unmanaged>D2D1_CAP_STYLE_TRIANGLE</unmanaged>\t\n            <unmanaged-short>D2D1_CAP_STYLE_TRIANGLE</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.CombineMode\">\n            <summary>\t\n            <p>Specifies the different methods by which two geometries can be combined.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The following illustration shows the different geometry combine modes.\t\n            </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_COMBINE_MODE']/*\"/>\t\n            <msdn-id>dd368083</msdn-id>\t\n            <unmanaged>D2D1_COMBINE_MODE</unmanaged>\t\n            <unmanaged-short>D2D1_COMBINE_MODE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.CombineMode.Union\">\n            <summary>\t\n            <dd> <p>The two regions are combined by taking the union of both. Given two geometries, <em>A</em> and <em>B</em>, the resulting geometry is geometry <em>A</em> + geometry <em>B</em>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_COMBINE_MODE_UNION']/*\"/>\t\n            <msdn-id>dd368083</msdn-id>\t\n            <unmanaged>D2D1_COMBINE_MODE_UNION</unmanaged>\t\n            <unmanaged-short>D2D1_COMBINE_MODE_UNION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.CombineMode.Intersect\">\n            <summary>\t\n            <dd> <p>The two regions are combined by taking their intersection. The new area consists of the overlapping region between the two geometries. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_COMBINE_MODE_INTERSECT']/*\"/>\t\n            <msdn-id>dd368083</msdn-id>\t\n            <unmanaged>D2D1_COMBINE_MODE_INTERSECT</unmanaged>\t\n            <unmanaged-short>D2D1_COMBINE_MODE_INTERSECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.CombineMode.Xor\">\n            <summary>\t\n            <dd> <p>The two regions are combined by taking the area that exists in the first region but not the second and the area that exists in the second region but not the first. Given two geometries, <em>A</em> and <em>B</em>, the new region consists of (<em>A</em>-<em>B</em>) + (<em>B</em>-<em>A</em>). </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_COMBINE_MODE_XOR']/*\"/>\t\n            <msdn-id>dd368083</msdn-id>\t\n            <unmanaged>D2D1_COMBINE_MODE_XOR</unmanaged>\t\n            <unmanaged-short>D2D1_COMBINE_MODE_XOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.CombineMode.Exclude\">\n            <summary>\t\n            <dd> <p>The second region is excluded from the first. Given two geometries, <em>A</em> and <em>B</em>, the area of geometry <em>B</em> is removed from the area of geometry <em>A</em>, producing a region that is <em>A</em>-<em>B</em>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_COMBINE_MODE_EXCLUDE']/*\"/>\t\n            <msdn-id>dd368083</msdn-id>\t\n            <unmanaged>D2D1_COMBINE_MODE_EXCLUDE</unmanaged>\t\n            <unmanaged-short>D2D1_COMBINE_MODE_EXCLUDE</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.CompatibleRenderTargetOptions\">\n            <summary>\t\n            <p>Specifies additional features supportable by a compatible render target when it is created.  This enumeration allows a bitwise combination of its member values.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Use this enumeration when creating a compatible render target with the <strong>CreateCompatibleRenderTarget</strong> method. For more information about compatible render targets, see the Render Targets Overview. </p><p>The <strong><see cref=\"F:SharpDX.Direct2D1.CompatibleRenderTargetOptions.GdiCompatible\"/></strong> option may only be requested if the parent render target was created with <strong><see cref=\"F:SharpDX.Direct2D1.RenderTargetUsage.GdiCompatible\"/></strong> (for most render targets) or <strong><see cref=\"F:SharpDX.Direct2D1.CompatibleRenderTargetOptions.GdiCompatible\"/></strong> (for render targets created by the <strong>CreateCompatibleRenderTarget</strong> method).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_COMPATIBLE_RENDER_TARGET_OPTIONS']/*\"/>\t\n            <msdn-id>dd368085</msdn-id>\t\n            <unmanaged>D2D1_COMPATIBLE_RENDER_TARGET_OPTIONS</unmanaged>\t\n            <unmanaged-short>D2D1_COMPATIBLE_RENDER_TARGET_OPTIONS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.CompatibleRenderTargetOptions.None\">\n            <summary>\t\n            <dd> <p>The render target supports no additional features.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_COMPATIBLE_RENDER_TARGET_OPTIONS_NONE']/*\"/>\t\n            <msdn-id>dd368085</msdn-id>\t\n            <unmanaged>D2D1_COMPATIBLE_RENDER_TARGET_OPTIONS_NONE</unmanaged>\t\n            <unmanaged-short>D2D1_COMPATIBLE_RENDER_TARGET_OPTIONS_NONE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.CompatibleRenderTargetOptions.GdiCompatible\">\n            <summary>\t\n            <dd> <p>The render target supports interoperability with the Windows Graphics Device Interface  (GDI). </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_COMPATIBLE_RENDER_TARGET_OPTIONS_GDI_COMPATIBLE']/*\"/>\t\n            <msdn-id>dd368085</msdn-id>\t\n            <unmanaged>D2D1_COMPATIBLE_RENDER_TARGET_OPTIONS_GDI_COMPATIBLE</unmanaged>\t\n            <unmanaged-short>D2D1_COMPATIBLE_RENDER_TARGET_OPTIONS_GDI_COMPATIBLE</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.DashStyle\">\n            <summary>\t\n            <p>Describes the sequence of dashes and gaps in a stroke. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The following illustration shows several available dash styles. For more information, see the Stroke Style Example.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_DASH_STYLE']/*\"/>\t\n            <msdn-id>dd368087</msdn-id>\t\n            <unmanaged>D2D1_DASH_STYLE</unmanaged>\t\n            <unmanaged-short>D2D1_DASH_STYLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.DashStyle.Solid\">\n            <summary>\t\n            <dd> <p>A solid line with no breaks.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_DASH_STYLE_SOLID']/*\"/>\t\n            <msdn-id>dd368087</msdn-id>\t\n            <unmanaged>D2D1_DASH_STYLE_SOLID</unmanaged>\t\n            <unmanaged-short>D2D1_DASH_STYLE_SOLID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.DashStyle.Dash\">\n            <summary>\t\n            <dd> <p>A dash followed by a gap of equal length. The dash and the gap are each twice as long as the stroke thickness.</p> <p>The equivalent dash  array for  <strong><see cref=\"F:SharpDX.Direct2D1.DashStyle.Dash\"/></strong> is {2, 2}.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_DASH_STYLE_DASH']/*\"/>\t\n            <msdn-id>dd368087</msdn-id>\t\n            <unmanaged>D2D1_DASH_STYLE_DASH</unmanaged>\t\n            <unmanaged-short>D2D1_DASH_STYLE_DASH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.DashStyle.Dot\">\n            <summary>\t\n            <dd> <p>A dot followed by a longer gap.</p> <p>The equivalent dash  array for  <strong><see cref=\"F:SharpDX.Direct2D1.DashStyle.Dot\"/></strong> is {0, 2}.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_DASH_STYLE_DOT']/*\"/>\t\n            <msdn-id>dd368087</msdn-id>\t\n            <unmanaged>D2D1_DASH_STYLE_DOT</unmanaged>\t\n            <unmanaged-short>D2D1_DASH_STYLE_DOT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.DashStyle.DashDot\">\n            <summary>\t\n            <dd> <p>A dash, followed by a gap, followed by a dot, followed by another gap.</p> <p>The equivalent dash array for  <strong><see cref=\"F:SharpDX.Direct2D1.DashStyle.DashDot\"/></strong> is {2, 2, 0, 2}.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_DASH_STYLE_DASH_DOT']/*\"/>\t\n            <msdn-id>dd368087</msdn-id>\t\n            <unmanaged>D2D1_DASH_STYLE_DASH_DOT</unmanaged>\t\n            <unmanaged-short>D2D1_DASH_STYLE_DASH_DOT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.DashStyle.DashDotDot\">\n            <summary>\t\n            <dd> <p>A dash, followed by a gap, followed by a dot, followed by another gap, followed by another dot, followed by another gap.</p> <p>The equivalent dash array for  <strong><see cref=\"F:SharpDX.Direct2D1.DashStyle.DashDotDot\"/></strong> is {2, 2, 0, 2, 0, 2}.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_DASH_STYLE_DASH_DOT_DOT']/*\"/>\t\n            <msdn-id>dd368087</msdn-id>\t\n            <unmanaged>D2D1_DASH_STYLE_DASH_DOT_DOT</unmanaged>\t\n            <unmanaged-short>D2D1_DASH_STYLE_DASH_DOT_DOT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.DashStyle.Custom\">\n            <summary>\t\n            <dd> <p>The dash pattern is specified by an array of floating-point values.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_DASH_STYLE_CUSTOM']/*\"/>\t\n            <msdn-id>dd368087</msdn-id>\t\n            <unmanaged>D2D1_DASH_STYLE_CUSTOM</unmanaged>\t\n            <unmanaged-short>D2D1_DASH_STYLE_CUSTOM</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.DebugLevel\">\n            <summary>\t\n            <p>Indicates the type of information provided by the Direct2D Debug Layer.  </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>To receive debugging messages, you must install the Direct2D Debug Layer.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_DEBUG_LEVEL']/*\"/>\t\n            <msdn-id>dd368090</msdn-id>\t\n            <unmanaged>D2D1_DEBUG_LEVEL</unmanaged>\t\n            <unmanaged-short>D2D1_DEBUG_LEVEL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.DebugLevel.None\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_DEBUG_LEVEL_NONE']/*\"/>\t\n            <unmanaged>D2D1_DEBUG_LEVEL_NONE</unmanaged>\t\n            <unmanaged-short>D2D1_DEBUG_LEVEL_NONE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.DebugLevel.Error\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_DEBUG_LEVEL_ERROR']/*\"/>\t\n            <unmanaged>D2D1_DEBUG_LEVEL_ERROR</unmanaged>\t\n            <unmanaged-short>D2D1_DEBUG_LEVEL_ERROR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.DebugLevel.Warning\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_DEBUG_LEVEL_WARNING']/*\"/>\t\n            <unmanaged>D2D1_DEBUG_LEVEL_WARNING</unmanaged>\t\n            <unmanaged-short>D2D1_DEBUG_LEVEL_WARNING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.DebugLevel.Information\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_DEBUG_LEVEL_INFORMATION']/*\"/>\t\n            <unmanaged>D2D1_DEBUG_LEVEL_INFORMATION</unmanaged>\t\n            <unmanaged-short>D2D1_DEBUG_LEVEL_INFORMATION</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.DeviceContextInitializeMode\">\n            <summary>\t\n            <p> Specifies how a device context is initialized for GDI rendering when it is retrieved from the render target.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Use this enumeration with the <strong><see cref=\"M:SharpDX.Direct2D1.GdiInteropRenderTarget.GetDC(SharpDX.Direct2D1.DeviceContextInitializeMode)\"/></strong> method to specify how the device context is  initialized for GDI rendering.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_DC_INITIALIZE_MODE']/*\"/>\t\n            <msdn-id>dd368088</msdn-id>\t\n            <unmanaged>D2D1_DC_INITIALIZE_MODE</unmanaged>\t\n            <unmanaged-short>D2D1_DC_INITIALIZE_MODE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.DeviceContextInitializeMode.Copy\">\n            <summary>\t\n            <dd> <p>The current contents of the render target are copied to the device context when it is initialized. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_DC_INITIALIZE_MODE_COPY']/*\"/>\t\n            <msdn-id>dd368088</msdn-id>\t\n            <unmanaged>D2D1_DC_INITIALIZE_MODE_COPY</unmanaged>\t\n            <unmanaged-short>D2D1_DC_INITIALIZE_MODE_COPY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.DeviceContextInitializeMode.Clear\">\n            <summary>\t\n            <dd> <p>The device context is cleared to transparent black when it is initialized.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_DC_INITIALIZE_MODE_CLEAR']/*\"/>\t\n            <msdn-id>dd368088</msdn-id>\t\n            <unmanaged>D2D1_DC_INITIALIZE_MODE_CLEAR</unmanaged>\t\n            <unmanaged-short>D2D1_DC_INITIALIZE_MODE_CLEAR</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.DrawTextOptions\">\n            <summary>\t\n            <p>Specifies whether text snapping is suppressed or clipping to the layout rectangle is enabled. This enumeration allows a bitwise combination of its member values.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_DRAW_TEXT_OPTIONS']/*\"/>\t\n            <msdn-id>dd368095</msdn-id>\t\n            <unmanaged>D2D1_DRAW_TEXT_OPTIONS</unmanaged>\t\n            <unmanaged-short>D2D1_DRAW_TEXT_OPTIONS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.DrawTextOptions.NoSnap\">\n            <summary>\t\n            <dd> <p>Text is not vertically snapped to pixel boundaries. This setting is recommended for text that is being animated. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_DRAW_TEXT_OPTIONS_NO_SNAP']/*\"/>\t\n            <msdn-id>dd368095</msdn-id>\t\n            <unmanaged>D2D1_DRAW_TEXT_OPTIONS_NO_SNAP</unmanaged>\t\n            <unmanaged-short>D2D1_DRAW_TEXT_OPTIONS_NO_SNAP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.DrawTextOptions.Clip\">\n            <summary>\t\n            <dd> <p>Text is clipped to the layout rectangle.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_DRAW_TEXT_OPTIONS_CLIP']/*\"/>\t\n            <msdn-id>dd368095</msdn-id>\t\n            <unmanaged>D2D1_DRAW_TEXT_OPTIONS_CLIP</unmanaged>\t\n            <unmanaged-short>D2D1_DRAW_TEXT_OPTIONS_CLIP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.DrawTextOptions.None\">\n            <summary>\t\n            <dd> <p>Text is vertically snapped to pixel boundaries and is not clipped to the layout rectangle. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_DRAW_TEXT_OPTIONS_NONE']/*\"/>\t\n            <msdn-id>dd368095</msdn-id>\t\n            <unmanaged>D2D1_DRAW_TEXT_OPTIONS_NONE</unmanaged>\t\n            <unmanaged-short>D2D1_DRAW_TEXT_OPTIONS_NONE</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.ExtendMode\">\n            <summary>\t\n            <p>Specifies how a brush paints areas outside of its normal content area.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>For an <strong><see cref=\"T:SharpDX.Direct2D1.BitmapBrush\"/></strong>, the brush's content is the brush's bitmap. For an <strong><see cref=\"T:SharpDX.Direct2D1.LinearGradientBrush\"/></strong>, the brush's content area is the gradient axis. For an <strong><see cref=\"T:SharpDX.Direct2D1.RadialGradientBrush\"/></strong>, the brush's content is the area within the gradient ellipse.  </p><p>For an example, see the Draw Extend Mode Example.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_EXTEND_MODE']/*\"/>\t\n            <msdn-id>dd368100</msdn-id>\t\n            <unmanaged>D2D1_EXTEND_MODE</unmanaged>\t\n            <unmanaged-short>D2D1_EXTEND_MODE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.ExtendMode.Clamp\">\n            <summary>\t\n            <dd> <p>Repeat the edge pixels of the brush's content for all regions outside the normal content area.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_EXTEND_MODE_CLAMP']/*\"/>\t\n            <msdn-id>dd368100</msdn-id>\t\n            <unmanaged>D2D1_EXTEND_MODE_CLAMP</unmanaged>\t\n            <unmanaged-short>D2D1_EXTEND_MODE_CLAMP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.ExtendMode.Wrap\">\n            <summary>\t\n            <dd> <p>Repeat the brush's content.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_EXTEND_MODE_WRAP']/*\"/>\t\n            <msdn-id>dd368100</msdn-id>\t\n            <unmanaged>D2D1_EXTEND_MODE_WRAP</unmanaged>\t\n            <unmanaged-short>D2D1_EXTEND_MODE_WRAP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.ExtendMode.Mirror\">\n            <summary>\t\n            <dd> <p> The same as <see cref=\"F:SharpDX.Direct2D1.ExtendMode.Wrap\"/>, except that alternate tiles of the brush's content are flipped. (The brush's normal content is drawn untransformed.)</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_EXTEND_MODE_MIRROR']/*\"/>\t\n            <msdn-id>dd368100</msdn-id>\t\n            <unmanaged>D2D1_EXTEND_MODE_MIRROR</unmanaged>\t\n            <unmanaged-short>D2D1_EXTEND_MODE_MIRROR</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.FactoryType\">\n            <summary>\t\n            <p>Specifies whether Direct2D provides synchronization for an <strong><see cref=\"T:SharpDX.Direct2D1.Factory\"/></strong> and the resources it creates, so that they may be safely accessed from multiple threads. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>When you create a factory, you can specify whether it is multithreaded or singlethreaded. A singlethreaded factory provides no serialization against any other single threaded instance within Direct2D, so this mechanism provides a very large degree of scaling on the CPU.</p><p>You can also create a multithreaded factory instance. In this case, the factory and all derived objects can be used from any thread, and each render target can be rendered to independently. Direct2D serializes calls to these objects, so a single multithreaded Direct2D instance won't scale as well on the CPU as many single threaded instances. However, the resources can be shared within the multithreaded instance.</p><p>Note the qualifier \"On the CPU\": GPUs generally take advantage of fine-grained parallelism more so than CPUs. For example, multithreaded calls from the CPU might still end up being serialized when being sent to the GPU; however, a whole bank of pixel and vertex shaders will run in parallel to perform the rendering. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_FACTORY_TYPE']/*\"/>\t\n            <msdn-id>dd368104</msdn-id>\t\n            <unmanaged>D2D1_FACTORY_TYPE</unmanaged>\t\n            <unmanaged-short>D2D1_FACTORY_TYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.FactoryType.SingleThreaded\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_FACTORY_TYPE_SINGLE_THREADED']/*\"/>\t\n            <unmanaged>D2D1_FACTORY_TYPE_SINGLE_THREADED</unmanaged>\t\n            <unmanaged-short>D2D1_FACTORY_TYPE_SINGLE_THREADED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.FactoryType.MultiThreaded\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_FACTORY_TYPE_MULTI_THREADED']/*\"/>\t\n            <unmanaged>D2D1_FACTORY_TYPE_MULTI_THREADED</unmanaged>\t\n            <unmanaged-short>D2D1_FACTORY_TYPE_MULTI_THREADED</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.FeatureLevel\">\n            <summary>\t\n            <p>Describes the minimum DirectX support required for hardware rendering by a render target.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_FEATURE_LEVEL']/*\"/>\t\n            <msdn-id>dd756628</msdn-id>\t\n            <unmanaged>D2D1_FEATURE_LEVEL</unmanaged>\t\n            <unmanaged-short>D2D1_FEATURE_LEVEL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.FeatureLevel.Level_DEFAULT\">\n            <summary>\t\n            <dd> <p>Direct2D determines whether the video card provides adequate hardware rendering support.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_FEATURE_LEVEL_DEFAULT']/*\"/>\t\n            <msdn-id>dd756628</msdn-id>\t\n            <unmanaged>D2D1_FEATURE_LEVEL_DEFAULT</unmanaged>\t\n            <unmanaged-short>D2D1_FEATURE_LEVEL_DEFAULT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.FeatureLevel.Level_9\">\n            <summary>\t\n            <dd> <p>The video card must support DirectX 9.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_FEATURE_LEVEL_9']/*\"/>\t\n            <msdn-id>dd756628</msdn-id>\t\n            <unmanaged>D2D1_FEATURE_LEVEL_9</unmanaged>\t\n            <unmanaged-short>D2D1_FEATURE_LEVEL_9</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.FeatureLevel.Level_10\">\n            <summary>\t\n            <dd> <p>The video card must support DirectX 10. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_FEATURE_LEVEL_10']/*\"/>\t\n            <msdn-id>dd756628</msdn-id>\t\n            <unmanaged>D2D1_FEATURE_LEVEL_10</unmanaged>\t\n            <unmanaged-short>D2D1_FEATURE_LEVEL_10</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.FigureBegin\">\n            <summary>\t\n            <p>Indicates whether a specific <strong><see cref=\"T:SharpDX.Direct2D1.SimplifiedGeometrySink\"/></strong> figure is filled or hollow. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_FIGURE_BEGIN']/*\"/>\t\n            <msdn-id>dd368106</msdn-id>\t\n            <unmanaged>D2D1_FIGURE_BEGIN</unmanaged>\t\n            <unmanaged-short>D2D1_FIGURE_BEGIN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.FigureBegin.Filled\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_FIGURE_BEGIN_FILLED']/*\"/>\t\n            <unmanaged>D2D1_FIGURE_BEGIN_FILLED</unmanaged>\t\n            <unmanaged-short>D2D1_FIGURE_BEGIN_FILLED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.FigureBegin.Hollow\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_FIGURE_BEGIN_HOLLOW']/*\"/>\t\n            <unmanaged>D2D1_FIGURE_BEGIN_HOLLOW</unmanaged>\t\n            <unmanaged-short>D2D1_FIGURE_BEGIN_HOLLOW</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.FigureEnd\">\n            <summary>\t\n            <p>Indicates whether a specific  <strong><see cref=\"T:SharpDX.Direct2D1.SimplifiedGeometrySink\"/></strong> figure is open or closed. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_FIGURE_END']/*\"/>\t\n            <msdn-id>dd368108</msdn-id>\t\n            <unmanaged>D2D1_FIGURE_END</unmanaged>\t\n            <unmanaged-short>D2D1_FIGURE_END</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.FigureEnd.Open\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_FIGURE_END_OPEN']/*\"/>\t\n            <unmanaged>D2D1_FIGURE_END_OPEN</unmanaged>\t\n            <unmanaged-short>D2D1_FIGURE_END_OPEN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.FigureEnd.Closed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_FIGURE_END_CLOSED']/*\"/>\t\n            <unmanaged>D2D1_FIGURE_END_CLOSED</unmanaged>\t\n            <unmanaged-short>D2D1_FIGURE_END_CLOSED</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.FillMode\">\n            <summary>\t\n            <p>Specifies how the intersecting areas of geometries or figures are combined to form the area of the composite geometry. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Use the <strong><see cref=\"T:SharpDX.Direct2D1.FillMode\"/></strong> enumeration when creating an <strong><see cref=\"T:SharpDX.Direct2D1.GeometryGroup\"/></strong> with the <strong>CreateGeometryGroup</strong> method, or when modifying the fill mode of an <strong><see cref=\"T:SharpDX.Direct2D1.SimplifiedGeometrySink\"/></strong> with the <strong><see cref=\"M:SharpDX.Direct2D1.SimplifiedGeometrySink.SetFillMode(SharpDX.Direct2D1.FillMode)\"/></strong> method.</p><p>Direct2D fills the interior of a path by using one of the two fill modes specified by this enumeration: <strong><see cref=\"F:SharpDX.Direct2D1.FillMode.Alternate\"/></strong> (alternate) or <strong><see cref=\"F:SharpDX.Direct2D1.FillMode.Winding\"/></strong> (winding). Because the modes determine how to fill the interior of a closed shape, all shapes are treated as closed when they are filled.  If there is a gap in a segment in a shape, draw an imaginary line to close it. </p><p> To see the difference between the winding and alternate fill modes, assume that you have four circles with the same center and a different radius, as shown in the following illustration. The first one has the radius of 25, the second 50, the third 75, and the fourth 100.</p><p>The following  illustration shows the shape filled by using the alternate fill mode. Notice that the center and third ring are not filled. This is because a ray drawn from any point in either of those two rings passes through an even number of segments. </p><p>The following illustration explains this process. </p><p>The following illustration shows how the same shape is filled when the winding fill mode is specified. </p><p>Notice that all the rings are filled. This is because all the segments run in the same direction, so a ray drawn from any point will cross one or more segments, and the sum of the crossings will not equal zero. </p><p>The following illustration explains this process. The red arrows represent the direction in which the segments are drawn and the black arrow represents an arbitrary ray that runs from a point in the innermost ring. Starting with a value of zero, for each segment that the ray crosses, a value of one is added for every clockwise intersection. All points lie in the fill region in this illustration, because the count does not equal zero. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_FILL_MODE']/*\"/>\t\n            <msdn-id>dd368110</msdn-id>\t\n            <unmanaged>D2D1_FILL_MODE</unmanaged>\t\n            <unmanaged-short>D2D1_FILL_MODE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.FillMode.Alternate\">\n            <summary>\t\n            <dd> <p>Determines whether a point is in the fill region by drawing a ray from that point to infinity in any direction, and then counting the number of path segments within the given shape that the ray crosses. If this number is odd, the point is in the fill region; if even, the point is outside the fill region.  </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_FILL_MODE_ALTERNATE']/*\"/>\t\n            <msdn-id>dd368110</msdn-id>\t\n            <unmanaged>D2D1_FILL_MODE_ALTERNATE</unmanaged>\t\n            <unmanaged-short>D2D1_FILL_MODE_ALTERNATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.FillMode.Winding\">\n            <summary>\t\n            <dd> <p>Determines whether a point is in the fill region of the path by drawing a ray from that point to infinity in any direction, and then examining the places where a segment of the shape crosses the ray. Starting with a count of zero, add one each time a segment crosses the ray from left to right and subtract one each time a path segment crosses the ray from right to left,  as long as left and right are seen from the perspective of the ray. After counting the crossings, if the result is zero, then the point is outside the path. Otherwise, it is inside the path.  </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_FILL_MODE_WINDING']/*\"/>\t\n            <msdn-id>dd368110</msdn-id>\t\n            <unmanaged>D2D1_FILL_MODE_WINDING</unmanaged>\t\n            <unmanaged-short>D2D1_FILL_MODE_WINDING</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.Gamma\">\n            <summary>\t\n            <p>Specifies which gamma is used for interpolation.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Interpolating in a linear gamma space (<strong><see cref=\"F:SharpDX.Direct2D1.Gamma.Linear\"/></strong>) can avoid changes in perceived brightness caused by the effect of gamma correction in spaces where the gamma is not 1.0, such as the default sRGB color space, where the gamma is 2.2. For an example of the differences between these two blending modes, consider the following illustration, which shows two gradients, each of which blends from red to blue to green:</p><p></p><p>The first gradient is interpolated linearly in the space of the render target (sRGB in this case), and one can see the dark bands between each color. The second gradient uses a gamma-correct linear interpolation, and thus does not exhibit the same variations in brightness.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_GAMMA']/*\"/>\t\n            <msdn-id>dd368113</msdn-id>\t\n            <unmanaged>D2D1_GAMMA</unmanaged>\t\n            <unmanaged-short>D2D1_GAMMA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.Gamma.StandardRgb\">\n            <summary>\t\n            <dd> <p>Interpolation is performed in the standard RGB (sRGB) gamma.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_GAMMA_2_2']/*\"/>\t\n            <msdn-id>dd368113</msdn-id>\t\n            <unmanaged>D2D1_GAMMA_2_2</unmanaged>\t\n            <unmanaged-short>D2D1_GAMMA_2_2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.Gamma.Linear\">\n            <summary>\t\n            <dd> <p>Interpolation is performed in the linear-gamma color space.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_GAMMA_1_0']/*\"/>\t\n            <msdn-id>dd368113</msdn-id>\t\n            <unmanaged>D2D1_GAMMA_1_0</unmanaged>\t\n            <unmanaged-short>D2D1_GAMMA_1_0</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.GeometryRelation\">\n            <summary>\t\n            <p>Describes how one geometry object is spatially related to another geometry object. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_GEOMETRY_RELATION']/*\"/>\t\n            <msdn-id>dd368115</msdn-id>\t\n            <unmanaged>D2D1_GEOMETRY_RELATION</unmanaged>\t\n            <unmanaged-short>D2D1_GEOMETRY_RELATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.GeometryRelation.Unknown\">\n            <summary>\t\n            <dd> <p>The relationship between the two geometries cannot be determined. This value is never returned by any D2D method.  </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_GEOMETRY_RELATION_UNKNOWN']/*\"/>\t\n            <msdn-id>dd368115</msdn-id>\t\n            <unmanaged>D2D1_GEOMETRY_RELATION_UNKNOWN</unmanaged>\t\n            <unmanaged-short>D2D1_GEOMETRY_RELATION_UNKNOWN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.GeometryRelation.Disjoint\">\n            <summary>\t\n            <dd> <p>The two geometries  do not intersect at all.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_GEOMETRY_RELATION_DISJOINT']/*\"/>\t\n            <msdn-id>dd368115</msdn-id>\t\n            <unmanaged>D2D1_GEOMETRY_RELATION_DISJOINT</unmanaged>\t\n            <unmanaged-short>D2D1_GEOMETRY_RELATION_DISJOINT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.GeometryRelation.IsContained\">\n            <summary>\t\n            <dd> <p>The instance geometry is entirely contained by  the passed-in geometry.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_GEOMETRY_RELATION_IS_CONTAINED']/*\"/>\t\n            <msdn-id>dd368115</msdn-id>\t\n            <unmanaged>D2D1_GEOMETRY_RELATION_IS_CONTAINED</unmanaged>\t\n            <unmanaged-short>D2D1_GEOMETRY_RELATION_IS_CONTAINED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.GeometryRelation.Contains\">\n            <summary>\t\n            <dd> <p>The instance geometry entirely contains the passed-in geometry.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_GEOMETRY_RELATION_CONTAINS']/*\"/>\t\n            <msdn-id>dd368115</msdn-id>\t\n            <unmanaged>D2D1_GEOMETRY_RELATION_CONTAINS</unmanaged>\t\n            <unmanaged-short>D2D1_GEOMETRY_RELATION_CONTAINS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.GeometryRelation.Overlap\">\n            <summary>\t\n            <dd> <p>The two geometries overlap but neither completely contains the other. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_GEOMETRY_RELATION_OVERLAP']/*\"/>\t\n            <msdn-id>dd368115</msdn-id>\t\n            <unmanaged>D2D1_GEOMETRY_RELATION_OVERLAP</unmanaged>\t\n            <unmanaged-short>D2D1_GEOMETRY_RELATION_OVERLAP</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.GeometrySimplificationOption\">\n            <summary>\t\n            <p>Specifies how a geometry is simplified to an <strong><see cref=\"T:SharpDX.Direct2D1.SimplifiedGeometrySink\"/></strong>.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_GEOMETRY_SIMPLIFICATION_OPTION']/*\"/>\t\n            <msdn-id>dd368117</msdn-id>\t\n            <unmanaged>D2D1_GEOMETRY_SIMPLIFICATION_OPTION</unmanaged>\t\n            <unmanaged-short>D2D1_GEOMETRY_SIMPLIFICATION_OPTION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.GeometrySimplificationOption.CubicsAndLines\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_GEOMETRY_SIMPLIFICATION_OPTION_CUBICS_AND_LINES']/*\"/>\t\n            <unmanaged>D2D1_GEOMETRY_SIMPLIFICATION_OPTION_CUBICS_AND_LINES</unmanaged>\t\n            <unmanaged-short>D2D1_GEOMETRY_SIMPLIFICATION_OPTION_CUBICS_AND_LINES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.GeometrySimplificationOption.Lines\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_GEOMETRY_SIMPLIFICATION_OPTION_LINES']/*\"/>\t\n            <unmanaged>D2D1_GEOMETRY_SIMPLIFICATION_OPTION_LINES</unmanaged>\t\n            <unmanaged-short>D2D1_GEOMETRY_SIMPLIFICATION_OPTION_LINES</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.LayerOptions\">\n            <summary>\t\n            <p>Specifies options that can be applied when a layer resource is applied to create a layer.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>ClearType antialiasing must use the current contents of the render target to blend properly. When a pushed layer requests initializing for ClearType, Direct 2D copies the current contents of the render target into the layer so that ClearType antialiasing can be performed. Rendering ClearType text into a transparent layer does not produce the desired results.</p><p>A small performance hit from re-copying content occurs when <strong><see cref=\"M:SharpDX.Direct2D1.RenderTarget.Clear(System.Nullable{SharpDX.Color4})\"/></strong> is called.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_LAYER_OPTIONS']/*\"/>\t\n            <msdn-id>dd368124</msdn-id>\t\n            <unmanaged>D2D1_LAYER_OPTIONS</unmanaged>\t\n            <unmanaged-short>D2D1_LAYER_OPTIONS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.LayerOptions.None\">\n            <summary>\t\n            <dd> <p> The text in this layer does not use ClearType antialiasing.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_LAYER_OPTIONS_NONE']/*\"/>\t\n            <msdn-id>dd368124</msdn-id>\t\n            <unmanaged>D2D1_LAYER_OPTIONS_NONE</unmanaged>\t\n            <unmanaged-short>D2D1_LAYER_OPTIONS_NONE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.LayerOptions.InitializeForCleartype\">\n            <summary>\t\n            <dd> <p>The layer renders correctly for ClearType text. If the render target is set to ClearType, the  layer continues to render ClearType. If the render target is set to ClearType and this option is not specified, the render target will be set to render gray-scale until the layer is popped. The caller can override this default by calling <strong>SetTextAntialiasMode</strong> while within the layer. This flag is slightly slower than the default. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_LAYER_OPTIONS_INITIALIZE_FOR_CLEARTYPE']/*\"/>\t\n            <msdn-id>dd368124</msdn-id>\t\n            <unmanaged>D2D1_LAYER_OPTIONS_INITIALIZE_FOR_CLEARTYPE</unmanaged>\t\n            <unmanaged-short>D2D1_LAYER_OPTIONS_INITIALIZE_FOR_CLEARTYPE</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.LineJoin\">\n            <summary>\t\n            <p>Describes the shape that joins two lines or segments.  </p>\t\n            </summary>\t\n            <remarks>\t\n            <p> A miter limit affects how sharp miter joins are allowed to be. If the line join style is <strong><see cref=\"F:SharpDX.Direct2D1.LineJoin.MiterOrBevel\"/></strong>, then the join will be mitered with regular angular vertices if it doesn't extend beyond the miter limit; otherwise, the line join will be beveled.</p><p>The following illustration shows  different line join settings for the same stroked path geometry.  For more information, see Stroke Style Example.</p><p></p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_LINE_JOIN']/*\"/>\t\n            <msdn-id>dd368130</msdn-id>\t\n            <unmanaged>D2D1_LINE_JOIN</unmanaged>\t\n            <unmanaged-short>D2D1_LINE_JOIN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.LineJoin.Miter\">\n            <summary>\t\n            <dd> <p>Regular angular vertices. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_LINE_JOIN_MITER']/*\"/>\t\n            <msdn-id>dd368130</msdn-id>\t\n            <unmanaged>D2D1_LINE_JOIN_MITER</unmanaged>\t\n            <unmanaged-short>D2D1_LINE_JOIN_MITER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.LineJoin.Bevel\">\n            <summary>\t\n            <dd> <p>Beveled vertices.   </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_LINE_JOIN_BEVEL']/*\"/>\t\n            <msdn-id>dd368130</msdn-id>\t\n            <unmanaged>D2D1_LINE_JOIN_BEVEL</unmanaged>\t\n            <unmanaged-short>D2D1_LINE_JOIN_BEVEL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.LineJoin.Round\">\n            <summary>\t\n            <dd> <p>Rounded vertices. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_LINE_JOIN_ROUND']/*\"/>\t\n            <msdn-id>dd368130</msdn-id>\t\n            <unmanaged>D2D1_LINE_JOIN_ROUND</unmanaged>\t\n            <unmanaged-short>D2D1_LINE_JOIN_ROUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.LineJoin.MiterOrBevel\">\n            <summary>\t\n            <dd> <p>Regular angular vertices unless the join would extend beyond the miter limit; otherwise, beveled vertices.  </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_LINE_JOIN_MITER_OR_BEVEL']/*\"/>\t\n            <msdn-id>dd368130</msdn-id>\t\n            <unmanaged>D2D1_LINE_JOIN_MITER_OR_BEVEL</unmanaged>\t\n            <unmanaged-short>D2D1_LINE_JOIN_MITER_OR_BEVEL</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.MeasuringMode\">\n            <summary>\t\n            <p> Indicates the measuring method used for text layout.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_MEASURING_MODE']/*\"/>\t\n            <msdn-id>dd368133</msdn-id>\t\n            <unmanaged>DWRITE_MEASURING_MODE</unmanaged>\t\n            <unmanaged-short>DWRITE_MEASURING_MODE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.MeasuringMode.Natural\">\n            <summary>\t\n            <dd> <p> Specifies that text is measured using glyph ideal metrics whose values are independent to the current display resolution.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_MEASURING_MODE_NATURAL']/*\"/>\t\n            <msdn-id>dd368133</msdn-id>\t\n            <unmanaged>DWRITE_MEASURING_MODE_NATURAL</unmanaged>\t\n            <unmanaged-short>DWRITE_MEASURING_MODE_NATURAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.MeasuringMode.GdiClassic\">\n            <summary>\t\n            <dd> <p> Specifies that text is measured using glyph display-compatible metrics whose values tuned for the current display resolution.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_MEASURING_MODE_GDI_CLASSIC']/*\"/>\t\n            <msdn-id>dd368133</msdn-id>\t\n            <unmanaged>DWRITE_MEASURING_MODE_GDI_CLASSIC</unmanaged>\t\n            <unmanaged-short>DWRITE_MEASURING_MODE_GDI_CLASSIC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.MeasuringMode.GdiNatural\">\n            <summary>\t\n            <dd> <p> Specifies that text is measured using the same glyph display metrics as text measured by GDI using a font created with CLEARTYPE_NATURAL_QUALITY.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DWRITE_MEASURING_MODE_GDI_NATURAL']/*\"/>\t\n            <msdn-id>dd368133</msdn-id>\t\n            <unmanaged>DWRITE_MEASURING_MODE_GDI_NATURAL</unmanaged>\t\n            <unmanaged-short>DWRITE_MEASURING_MODE_GDI_NATURAL</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.OpacityMaskContent\">\n            <summary>\t\n            <p>Describes whether an opacity mask contains graphics or text. Direct2D uses this information to determine which gamma space to use when blending the opacity mask.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_OPACITY_MASK_CONTENT']/*\"/>\t\n            <msdn-id>dd756629</msdn-id>\t\n            <unmanaged>D2D1_OPACITY_MASK_CONTENT</unmanaged>\t\n            <unmanaged-short>D2D1_OPACITY_MASK_CONTENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.OpacityMaskContent.Graphics\">\n            <summary>\t\n            <dd> <p>The opacity mask contains graphics. The opacity mask is blended in the gamma 2.2 color space.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_OPACITY_MASK_CONTENT_GRAPHICS']/*\"/>\t\n            <msdn-id>dd756629</msdn-id>\t\n            <unmanaged>D2D1_OPACITY_MASK_CONTENT_GRAPHICS</unmanaged>\t\n            <unmanaged-short>D2D1_OPACITY_MASK_CONTENT_GRAPHICS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.OpacityMaskContent.TextNatural\">\n            <summary>\t\n            <dd> <p>The opacity mask contains non-GDI text. The gamma space used for blending is obtained from the render target's text rendering parameters. (<strong><see cref=\"M:SharpDX.Direct2D1.RenderTarget.SetTextRenderingParams(SharpDX.DirectWrite.RenderingParams)\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_OPACITY_MASK_CONTENT_TEXT_NATURAL']/*\"/>\t\n            <msdn-id>dd756629</msdn-id>\t\n            <unmanaged>D2D1_OPACITY_MASK_CONTENT_TEXT_NATURAL</unmanaged>\t\n            <unmanaged-short>D2D1_OPACITY_MASK_CONTENT_TEXT_NATURAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.OpacityMaskContent.TextGdiCompatible\">\n            <summary>\t\n            <dd> <p>The opacity mask contains text rendered using the GDI-compatible rendering mode. The opacity mask is blended using the gamma for GDI rendering.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_OPACITY_MASK_CONTENT_TEXT_GDI_COMPATIBLE']/*\"/>\t\n            <msdn-id>dd756629</msdn-id>\t\n            <unmanaged>D2D1_OPACITY_MASK_CONTENT_TEXT_GDI_COMPATIBLE</unmanaged>\t\n            <unmanaged-short>D2D1_OPACITY_MASK_CONTENT_TEXT_GDI_COMPATIBLE</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.PathSegment\">\n            <summary>\t\n            <p>Indicates whether a segment should be stroked and whether the join between this segment and the previous one should be smooth. This enumeration allows a bitwise combination of its member values. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_PATH_SEGMENT']/*\"/>\t\n            <msdn-id>dd368136</msdn-id>\t\n            <unmanaged>D2D1_PATH_SEGMENT</unmanaged>\t\n            <unmanaged-short>D2D1_PATH_SEGMENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.PathSegment.None\">\n            <summary>\t\n            <dd> <p>The segment is joined  as specified by the <strong><see cref=\"T:SharpDX.Direct2D1.StrokeStyle\"/></strong> interface, and it is stroked. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_PATH_SEGMENT_NONE']/*\"/>\t\n            <msdn-id>dd368136</msdn-id>\t\n            <unmanaged>D2D1_PATH_SEGMENT_NONE</unmanaged>\t\n            <unmanaged-short>D2D1_PATH_SEGMENT_NONE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.PathSegment.ForceUnstroked\">\n            <summary>\t\n            <dd> <p>The segment is not stroked.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_PATH_SEGMENT_FORCE_UNSTROKED']/*\"/>\t\n            <msdn-id>dd368136</msdn-id>\t\n            <unmanaged>D2D1_PATH_SEGMENT_FORCE_UNSTROKED</unmanaged>\t\n            <unmanaged-short>D2D1_PATH_SEGMENT_FORCE_UNSTROKED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.PathSegment.ForceRoundLineJoin\">\n            <summary>\t\n            <dd> <p>The segment is always joined with the one preceding it using a round line join, regardless of which <strong><see cref=\"T:SharpDX.Direct2D1.LineJoin\"/></strong>enumeration is specified by the <strong><see cref=\"T:SharpDX.Direct2D1.StrokeStyle\"/></strong> interface. If this segment is the first segment and the figure is closed, a round line join is used to connect the closing segment with the first segment. If the figure is not closed, this setting has no effect on the first segment of the figure. If <strong><see cref=\"M:SharpDX.Direct2D1.SimplifiedGeometrySink.SetSegmentFlags(SharpDX.Direct2D1.PathSegment)\"/></strong> is called just before <strong><see cref=\"M:SharpDX.Direct2D1.SimplifiedGeometrySink.EndFigure(SharpDX.Direct2D1.FigureEnd)\"/></strong>, the join between the closing segment and the last explicitly specified segment is affected.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_PATH_SEGMENT_FORCE_ROUND_LINE_JOIN']/*\"/>\t\n            <msdn-id>dd368136</msdn-id>\t\n            <unmanaged>D2D1_PATH_SEGMENT_FORCE_ROUND_LINE_JOIN</unmanaged>\t\n            <unmanaged-short>D2D1_PATH_SEGMENT_FORCE_ROUND_LINE_JOIN</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.PresentOptions\">\n            <summary>\t\n            <p>Describes how a render target behaves when it presents its content. This enumeration allows a bitwise combination of its member values.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_PRESENT_OPTIONS']/*\"/>\t\n            <msdn-id>dd368144</msdn-id>\t\n            <unmanaged>D2D1_PRESENT_OPTIONS</unmanaged>\t\n            <unmanaged-short>D2D1_PRESENT_OPTIONS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.PresentOptions.None\">\n            <summary>\t\n            <dd> <p>The render target waits until the display refreshes to present and discards the frame upon presenting.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_PRESENT_OPTIONS_NONE']/*\"/>\t\n            <msdn-id>dd368144</msdn-id>\t\n            <unmanaged>D2D1_PRESENT_OPTIONS_NONE</unmanaged>\t\n            <unmanaged-short>D2D1_PRESENT_OPTIONS_NONE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.PresentOptions.RetainContents\">\n            <summary>\t\n            <dd> <p>The render target does not discard the frame upon presenting.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_PRESENT_OPTIONS_RETAIN_CONTENTS']/*\"/>\t\n            <msdn-id>dd368144</msdn-id>\t\n            <unmanaged>D2D1_PRESENT_OPTIONS_RETAIN_CONTENTS</unmanaged>\t\n            <unmanaged-short>D2D1_PRESENT_OPTIONS_RETAIN_CONTENTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.PresentOptions.Immediately\">\n            <summary>\t\n            <dd> <p>The render target does not wait until the display refreshes to present.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_PRESENT_OPTIONS_IMMEDIATELY']/*\"/>\t\n            <msdn-id>dd368144</msdn-id>\t\n            <unmanaged>D2D1_PRESENT_OPTIONS_IMMEDIATELY</unmanaged>\t\n            <unmanaged-short>D2D1_PRESENT_OPTIONS_IMMEDIATELY</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.RenderTargetType\">\n            <summary>\t\n            <p>Describes whether a render target uses hardware or software rendering, or if Direct2D should select the rendering mode.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Not every render target supports hardware rendering. For more information, see the Render Targets Overview. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_RENDER_TARGET_TYPE']/*\"/>\t\n            <msdn-id>dd756630</msdn-id>\t\n            <unmanaged>D2D1_RENDER_TARGET_TYPE</unmanaged>\t\n            <unmanaged-short>D2D1_RENDER_TARGET_TYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.RenderTargetType.Default\">\n            <summary>\t\n            <dd> <p>The render target uses hardware rendering, if available; otherwise, it uses software rendering.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_RENDER_TARGET_TYPE_DEFAULT']/*\"/>\t\n            <msdn-id>dd756630</msdn-id>\t\n            <unmanaged>D2D1_RENDER_TARGET_TYPE_DEFAULT</unmanaged>\t\n            <unmanaged-short>D2D1_RENDER_TARGET_TYPE_DEFAULT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.RenderTargetType.Software\">\n            <summary>\t\n            <dd> <p>The render target uses software rendering only.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_RENDER_TARGET_TYPE_SOFTWARE']/*\"/>\t\n            <msdn-id>dd756630</msdn-id>\t\n            <unmanaged>D2D1_RENDER_TARGET_TYPE_SOFTWARE</unmanaged>\t\n            <unmanaged-short>D2D1_RENDER_TARGET_TYPE_SOFTWARE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.RenderTargetType.Hardware\">\n            <summary>\t\n            <dd> <p>The render target uses hardware rendering only. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_RENDER_TARGET_TYPE_HARDWARE']/*\"/>\t\n            <msdn-id>dd756630</msdn-id>\t\n            <unmanaged>D2D1_RENDER_TARGET_TYPE_HARDWARE</unmanaged>\t\n            <unmanaged-short>D2D1_RENDER_TARGET_TYPE_HARDWARE</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.RenderTargetUsage\">\n            <summary>\t\n            <p> Describes how a render target is remoted and whether it should be GDI-compatible. This enumeration allows a bitwise combination of its member values.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_RENDER_TARGET_USAGE']/*\"/>\t\n            <msdn-id>dd368157</msdn-id>\t\n            <unmanaged>D2D1_RENDER_TARGET_USAGE</unmanaged>\t\n            <unmanaged-short>D2D1_RENDER_TARGET_USAGE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.RenderTargetUsage.None\">\n            <summary>\t\n            <dd> <p>The render target attempts to use Direct3D command-stream remoting and uses bitmap remoting if stream remoting fails. The render target is not GDI-compatible.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_RENDER_TARGET_USAGE_NONE']/*\"/>\t\n            <msdn-id>dd368157</msdn-id>\t\n            <unmanaged>D2D1_RENDER_TARGET_USAGE_NONE</unmanaged>\t\n            <unmanaged-short>D2D1_RENDER_TARGET_USAGE_NONE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.RenderTargetUsage.ForceBitmapRemoting\">\n            <summary>\t\n            <dd> <p>The render target renders content locally and sends it to the terminal services client as a bitmap. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_RENDER_TARGET_USAGE_FORCE_BITMAP_REMOTING']/*\"/>\t\n            <msdn-id>dd368157</msdn-id>\t\n            <unmanaged>D2D1_RENDER_TARGET_USAGE_FORCE_BITMAP_REMOTING</unmanaged>\t\n            <unmanaged-short>D2D1_RENDER_TARGET_USAGE_FORCE_BITMAP_REMOTING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.RenderTargetUsage.GdiCompatible\">\n            <summary>\t\n            <dd> <p>The render target can be used efficiently with GDI.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_RENDER_TARGET_USAGE_GDI_COMPATIBLE']/*\"/>\t\n            <msdn-id>dd368157</msdn-id>\t\n            <unmanaged>D2D1_RENDER_TARGET_USAGE_GDI_COMPATIBLE</unmanaged>\t\n            <unmanaged-short>D2D1_RENDER_TARGET_USAGE_GDI_COMPATIBLE</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.SweepDirection\">\n            <summary>\t\n            <p>Defines the direction that an elliptical arc is drawn.  </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_SWEEP_DIRECTION']/*\"/>\t\n            <msdn-id>dd368166</msdn-id>\t\n            <unmanaged>D2D1_SWEEP_DIRECTION</unmanaged>\t\n            <unmanaged-short>D2D1_SWEEP_DIRECTION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.SweepDirection.CounterClockwise\">\n            <summary>\t\n            <dd> <p> Arcs are drawn in a counterclockwise (negative-angle) direction. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_SWEEP_DIRECTION_COUNTER_CLOCKWISE']/*\"/>\t\n            <msdn-id>dd368166</msdn-id>\t\n            <unmanaged>D2D1_SWEEP_DIRECTION_COUNTER_CLOCKWISE</unmanaged>\t\n            <unmanaged-short>D2D1_SWEEP_DIRECTION_COUNTER_CLOCKWISE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.SweepDirection.Clockwise\">\n            <summary>\t\n            <dd> <p> Arcs are drawn in a clockwise (positive-angle) direction. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_SWEEP_DIRECTION_CLOCKWISE']/*\"/>\t\n            <msdn-id>dd368166</msdn-id>\t\n            <unmanaged>D2D1_SWEEP_DIRECTION_CLOCKWISE</unmanaged>\t\n            <unmanaged-short>D2D1_SWEEP_DIRECTION_CLOCKWISE</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.TextAntialiasMode\">\n            <summary>\t\n            <p>Describes the antialiasing mode used for drawing text. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This enumeration is used with the <strong>SetTextAntialiasMode</strong> of an <strong><see cref=\"T:SharpDX.Direct2D1.RenderTarget\"/></strong> to specify how text and glyphs are antialiased.</p><p> By default, Direct2D renders text in ClearType mode. Factors that  can downgrade the default quality to grayscale or aliased:</p><ul> <li>If the <strong><see cref=\"T:SharpDX.DirectWrite.RenderingMode\"/></strong> value  is <strong><see cref=\"F:SharpDX.DirectWrite.RenderingMode.Aliased\"/> </strong>, then the  default text antialiasing mode is aliased.  To change the DirectWrite rendering mode of an <strong><see cref=\"T:SharpDX.Direct2D1.RenderTarget\"/></strong>, use the  <strong><see cref=\"M:SharpDX.Direct2D1.RenderTarget.SetTextRenderingParams(SharpDX.DirectWrite.RenderingParams)\"/></strong> method. </li> <li>If the <strong><see cref=\"T:SharpDX.DirectWrite.RenderingMode\"/></strong> value is <strong><see cref=\"F:SharpDX.DirectWrite.RenderingMode.Outline\"/></strong>, then the default text  antialiasing mode is grayscale.</li> <li>If the render target has an alpha channel and is not set to <strong><see cref=\"F:SharpDX.Direct2D1.AlphaMode.Ignore\"/></strong>, then  the default text antialiasing mode is grayscale.</li> <li>If <strong><see cref=\"M:SharpDX.Direct2D1.RenderTarget.PushLayer(SharpDX.Direct2D1.LayerParameters@,SharpDX.Direct2D1.Layer)\"/></strong> is called without <strong><see cref=\"F:SharpDX.Direct2D1.LayerOptions.InitializeForCleartype\"/></strong> (and the corresponding <strong>PopLayer</strong> has not  been called yet), then the default text  antialiasing mode is grayscale.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_TEXT_ANTIALIAS_MODE']/*\"/>\t\n            <msdn-id>dd368170</msdn-id>\t\n            <unmanaged>D2D1_TEXT_ANTIALIAS_MODE</unmanaged>\t\n            <unmanaged-short>D2D1_TEXT_ANTIALIAS_MODE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.TextAntialiasMode.Default\">\n            <summary>\t\n            <dd> <p>Use the system default. See Remarks.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_TEXT_ANTIALIAS_MODE_DEFAULT']/*\"/>\t\n            <msdn-id>dd368170</msdn-id>\t\n            <unmanaged>D2D1_TEXT_ANTIALIAS_MODE_DEFAULT</unmanaged>\t\n            <unmanaged-short>D2D1_TEXT_ANTIALIAS_MODE_DEFAULT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.TextAntialiasMode.Cleartype\">\n            <summary>\t\n            <dd> <p>Use ClearType antialiasing.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_TEXT_ANTIALIAS_MODE_CLEARTYPE']/*\"/>\t\n            <msdn-id>dd368170</msdn-id>\t\n            <unmanaged>D2D1_TEXT_ANTIALIAS_MODE_CLEARTYPE</unmanaged>\t\n            <unmanaged-short>D2D1_TEXT_ANTIALIAS_MODE_CLEARTYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.TextAntialiasMode.Grayscale\">\n            <summary>\t\n            <dd> <p>Use grayscale antialiasing.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_TEXT_ANTIALIAS_MODE_GRAYSCALE']/*\"/>\t\n            <msdn-id>dd368170</msdn-id>\t\n            <unmanaged>D2D1_TEXT_ANTIALIAS_MODE_GRAYSCALE</unmanaged>\t\n            <unmanaged-short>D2D1_TEXT_ANTIALIAS_MODE_GRAYSCALE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.TextAntialiasMode.Aliased\">\n            <summary>\t\n            <dd> <p>Do not use antialiasing.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_TEXT_ANTIALIAS_MODE_ALIASED']/*\"/>\t\n            <msdn-id>dd368170</msdn-id>\t\n            <unmanaged>D2D1_TEXT_ANTIALIAS_MODE_ALIASED</unmanaged>\t\n            <unmanaged-short>D2D1_TEXT_ANTIALIAS_MODE_ALIASED</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.WindowState\">\n            <summary>\t\n            <p>Describes whether a window is occluded. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>If the window was occluded the last time  <strong>EndDraw</strong> was called, the next time the render target calls <strong>CheckWindowState</strong>, it  returns <strong><see cref=\"F:SharpDX.Direct2D1.WindowState.Occluded\"/></strong> regardless of the current window state. If you want to use <strong>CheckWindowState</strong> to check the current window state, call <strong>CheckWindowState</strong> after every <strong>EndDraw</strong> call and ignore its return value. This will ensure that your next call to <strong>CheckWindowState</strong> state  returns the actual window state.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_WINDOW_STATE']/*\"/>\t\n            <msdn-id>dd368174</msdn-id>\t\n            <unmanaged>D2D1_WINDOW_STATE</unmanaged>\t\n            <unmanaged-short>D2D1_WINDOW_STATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.WindowState.None\">\n            <summary>\t\n            <dd> <p>The window is not occluded.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_WINDOW_STATE_NONE']/*\"/>\t\n            <msdn-id>dd368174</msdn-id>\t\n            <unmanaged>D2D1_WINDOW_STATE_NONE</unmanaged>\t\n            <unmanaged-short>D2D1_WINDOW_STATE_NONE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.WindowState.Occluded\">\n            <summary>\t\n            <dd> <p>The window is occluded.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_WINDOW_STATE_OCCLUDED']/*\"/>\t\n            <msdn-id>dd368174</msdn-id>\t\n            <unmanaged>D2D1_WINDOW_STATE_OCCLUDED</unmanaged>\t\n            <unmanaged-short>D2D1_WINDOW_STATE_OCCLUDED</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.D2D1\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.Direct2D1.D2D1']/*\"/>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.D2D1.IsMatrixInvertible(SharpDX.Matrix3x2@)\">\n            <summary>\t\n            <p>Indicates whether the specified matrix is invertible.</p>\t\n            </summary>\t\n            <param name=\"matrix\"><dd>  <p>The matrix to test.</p> </dd></param>\t\n            <returns><p><strong>true</strong> if the matrix was inverted; otherwise, <strong>false</strong>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1IsMatrixInvertible']/*\"/>\t\n            <msdn-id>dd368045</msdn-id>\t\n            <unmanaged>BOOL D2D1IsMatrixInvertible([In] const D2D_MATRIX_3X2_F* matrix)</unmanaged>\t\n            <unmanaged-short>D2D1IsMatrixInvertible</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.D2D1.InvertMatrix(SharpDX.Matrix3x2@)\">\n            <summary>\t\n            <p>Tries to invert the specified matrix.</p>\t\n            </summary>\t\n            <param name=\"matrix\"><dd>  <p>The matrix to invert.</p> </dd></param>\t\n            <returns><p><strong>true</strong> if the matrix was inverted; otherwise, <strong>false</strong>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1InvertMatrix']/*\"/>\t\n            <msdn-id>dd368044</msdn-id>\t\n            <unmanaged>BOOL D2D1InvertMatrix([InOut] D2D_MATRIX_3X2_F* matrix)</unmanaged>\t\n            <unmanaged-short>D2D1InvertMatrix</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.D2D1.MakeSkewMatrix(System.Single,System.Single,SharpDX.DrawingPointF,SharpDX.Matrix3x2@)\">\n            <summary>\t\n            <p>Creates a skew transformation that has the specified x-axis angle, y-axis angle, and center point. </p>\t\n            </summary>\t\n            <param name=\"angleX\"><dd>  <p>The x-axis skew angle, which is measured in degrees counterclockwise from the y-axis.</p> </dd></param>\t\n            <param name=\"angleY\"><dd>  <p>The y-axis skew angle, which is measured in degrees counterclockwise from the x-axis.</p> </dd></param>\t\n            <param name=\"center\"><dd>  <p>The center point of the skew operation.</p> </dd></param>\t\n            <param name=\"matrix\"><dd>  <p>When this method returns, contains the rotation transformation. You must allocate storate for this parameter.</p> </dd></param>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1MakeSkewMatrix']/*\"/>\t\n            <msdn-id>dd368052</msdn-id>\t\n            <unmanaged>void D2D1MakeSkewMatrix([In] float angleX,[In] float angleY,[In] D2D_POINT_2F center,[Out] D2D_MATRIX_3X2_F* matrix)</unmanaged>\t\n            <unmanaged-short>D2D1MakeSkewMatrix</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.D2D1.CreateFactory(SharpDX.Direct2D1.FactoryType,System.Guid,System.Nullable{SharpDX.Direct2D1.FactoryOptions},System.IntPtr@)\">\n            <summary>\t\n            <p>Creates a factory object  that can be used to create Direct2D resources.</p>\t\n            </summary>\t\n            <param name=\"factoryType\"><dd>  <p>The threading model of the factory and the resources it creates.</p> </dd></param>\t\n            <param name=\"riid\"><dd>  <p>A reference to the IID of <strong><see cref=\"T:SharpDX.Direct2D1.Factory\"/></strong> that is obtained by using __uuidof(<see cref=\"T:SharpDX.Direct2D1.Factory\"/>).</p> </dd></param>\t\n            <param name=\"factoryOptionsRef\"><dd>  <p>The level of detail provided to the debugging layer.</p> </dd></param>\t\n            <param name=\"iFactoryOut\"><dd>  <p>When this method returns, contains the address to a reference to the new factory.</p> </dd></param>\t\n            <returns><p>If this function succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>The <strong><see cref=\"T:SharpDX.Direct2D1.Factory\"/></strong> interface provides the starting point for  Direct2D. In general, objects created from a single instance of a factory object can be used with other resources created from that instance, but not with resources created by other factory instances.   </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1CreateFactory']/*\"/>\t\n            <msdn-id>dd368034</msdn-id>\t\n            <unmanaged>HRESULT D2D1CreateFactory([In] D2D1_FACTORY_TYPE factoryType,[In] const GUID&amp; riid,[In, Optional] const D2D1_FACTORY_OPTIONS* pFactoryOptions,[Out] void** ppIFactory)</unmanaged>\t\n            <unmanaged-short>D2D1CreateFactory</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.D2D1.MakeRotateMatrix(System.Single,SharpDX.DrawingPointF,SharpDX.Matrix3x2@)\">\n            <summary>\t\n            <p>Creates a rotation transformation that rotates by the specified angle about the specified point.</p>\t\n            </summary>\t\n            <param name=\"angle\"><dd>  <p>The clockwise rotation angle, in degrees. </p> </dd></param>\t\n            <param name=\"center\"><dd>  <p>The point about which to rotate.</p> </dd></param>\t\n            <param name=\"matrix\"><dd>  <p>When this method returns, contains the new rotation transformation. You must allocate storage for this parameter.  </p> </dd></param>\t\n            <remarks>\t\n            <p>Rotation occurs in the plane of the 2-D surface.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1MakeRotateMatrix']/*\"/>\t\n            <msdn-id>dd368049</msdn-id>\t\n            <unmanaged>void D2D1MakeRotateMatrix([In] float angle,[In] D2D_POINT_2F center,[Out] D2D_MATRIX_3X2_F* matrix)</unmanaged>\t\n            <unmanaged-short>D2D1MakeRotateMatrix</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.ResultCode\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.Direct2D1.ResultCode']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.ResultCode.WrongFactory\">\n            <summary>Constant WrongFactory.</summary>\n            <unmanaged>D2DERR_WRONG_FACTORY</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.ResultCode.BadNumber\">\n            <summary>Constant BadNumber.</summary>\n            <unmanaged>D2DERR_BAD_NUMBER</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.ResultCode.MaximumTextureSizeExceeded\">\n            <summary>Constant MaximumTextureSizeExceeded.</summary>\n            <unmanaged>D2DERR_MAX_TEXTURE_SIZE_EXCEEDED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.ResultCode.NoHardwareDevice\">\n            <summary>Constant NoHardwareDevice.</summary>\n            <unmanaged>D2DERR_NO_HARDWARE_DEVICE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.ResultCode.WrongResourceDomain\">\n            <summary>Constant WrongResourceDomain.</summary>\n            <unmanaged>D2DERR_WRONG_RESOURCE_DOMAIN</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.ResultCode.InvalidCall\">\n            <summary>Constant InvalidCall.</summary>\n            <unmanaged>D2DERR_INVALID_CALL</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.ResultCode.Win32Error\">\n            <summary>Constant Win32Error.</summary>\n            <unmanaged>D2DERR_WIN32_ERROR</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.ResultCode.PopCallDidNotMatchPush\">\n            <summary>Constant PopCallDidNotMatchPush.</summary>\n            <unmanaged>D2DERR_POP_CALL_DID_NOT_MATCH_PUSH</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.ResultCode.UnsupportedVersion\">\n            <summary>Constant UnsupportedVersion.</summary>\n            <unmanaged>D2DERR_UNSUPPORTED_VERSION</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.ResultCode.RecreateTarget\">\n            <summary>Constant RecreateTarget.</summary>\n            <unmanaged>D2DERR_RECREATE_TARGET</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.ResultCode.ZeroVector\">\n            <summary>Constant ZeroVector.</summary>\n            <unmanaged>D2DERR_ZERO_VECTOR</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.ResultCode.UnsupportedPixelFormat\">\n            <summary>Constant UnsupportedPixelFormat.</summary>\n            <unmanaged>D2DERR_UNSUPPORTED_PIXEL_FORMAT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.ResultCode.ShaderCompileFailed\">\n            <summary>Constant ShaderCompileFailed.</summary>\n            <unmanaged>D2DERR_SHADER_COMPILE_FAILED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.ResultCode.ScannerFailed\">\n            <summary>Constant ScannerFailed.</summary>\n            <unmanaged>D2DERR_SCANNER_FAILED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.ResultCode.TooManyShaderElements\">\n            <summary>Constant TooManyShaderElements.</summary>\n            <unmanaged>D2DERR_TOO_MANY_SHADER_ELEMENTS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.ResultCode.TextRendererNotReleased\">\n            <summary>Constant TextRendererNotReleased.</summary>\n            <unmanaged>D2DERR_TEXT_RENDERER_NOT_RELEASED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.ResultCode.IncompatibleBrushTypes\">\n            <summary>Constant IncompatibleBrushTypes.</summary>\n            <unmanaged>D2DERR_INCOMPATIBLE_BRUSH_TYPES</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.ResultCode.ScreenAccessDenied\">\n            <summary>Constant ScreenAccessDenied.</summary>\n            <unmanaged>D2DERR_SCREEN_ACCESS_DENIED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.ResultCode.LayerAlreadyInUse\">\n            <summary>Constant LayerAlreadyInUse.</summary>\n            <unmanaged>D2DERR_LAYER_ALREADY_IN_USE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.ResultCode.InternalError\">\n            <summary>Constant InternalError.</summary>\n            <unmanaged>D2DERR_INTERNAL_ERROR</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.ResultCode.RenderTargetHasLayerOrCliprect\">\n            <summary>Constant RenderTargetHasLayerOrCliprect.</summary>\n            <unmanaged>D2DERR_RENDER_TARGET_HAS_LAYER_OR_CLIPRECT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.ResultCode.WrongState\">\n            <summary>Constant WrongState.</summary>\n            <unmanaged>D2DERR_WRONG_STATE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.ResultCode.DisplayStateInvalid\">\n            <summary>Constant DisplayStateInvalid.</summary>\n            <unmanaged>D2DERR_DISPLAY_STATE_INVALID</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.ResultCode.TextEffectIsWrongType\">\n            <summary>Constant TextEffectIsWrongType.</summary>\n            <unmanaged>D2DERR_TEXT_EFFECT_IS_WRONG_TYPE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.ResultCode.UnsupportedOperation\">\n            <summary>Constant UnsupportedOperation.</summary>\n            <unmanaged>D2DERR_UNSUPPORTED_OPERATION</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.ResultCode.PushPopUnbalanced\">\n            <summary>Constant PushPopUnbalanced.</summary>\n            <unmanaged>D2DERR_PUSH_POP_UNBALANCED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.ResultCode.DisplayFormatNotSupported\">\n            <summary>Constant DisplayFormatNotSupported.</summary>\n            <unmanaged>D2DERR_DISPLAY_FORMAT_NOT_SUPPORTED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.ResultCode.NotInitializeD\">\n            <summary>Constant NotInitializeD.</summary>\n            <unmanaged>D2DERR_NOT_INITIALIZED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.ResultCode.TargetNotGdiCompatible\">\n            <summary>Constant TargetNotGdiCompatible.</summary>\n            <unmanaged>D2DERR_TARGET_NOT_GDI_COMPATIBLE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.ResultCode.ExceedsMaximumBitmapSize\">\n            <summary>Constant ExceedsMaximumBitmapSize.</summary>\n            <unmanaged>D2DERR_EXCEEDS_MAX_BITMAP_SIZE</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.DeviceContextRenderTarget\">\n            <summary>\t\n            <p>Issues drawing commands to a GDI device context. </p>\t\n            </summary>\t\n            <remarks>\t\n            Creating <see cref=\"T:SharpDX.Direct2D1.DeviceContextRenderTarget\"/> Objects<p>To create an <strong><see cref=\"T:SharpDX.Direct2D1.DeviceContextRenderTarget\"/></strong>, use the <strong><see cref=\"M:SharpDX.Direct2D1.Factory.CreateDCRenderTarget(SharpDX.Direct2D1.RenderTargetProperties@,SharpDX.Direct2D1.DeviceContextRenderTarget)\"/></strong> method.</p><p>Before you can render with the DC render target, you must use its <strong>BindDC</strong> method to associate it with a GDI DC.  You do this each time you  use a different DC, or the size of the area you want to draw to changes.</p><p>To enable the DC render target to work with GDI, set its pixel format to <see cref=\"F:SharpDX.DXGI.Format.B8G8R8A8_UNorm\"/> and its alpha mode to <strong><see cref=\"F:SharpDX.Direct2D1.AlphaMode.Premultiplied\"/></strong> or <strong><see cref=\"F:SharpDX.Direct2D1.AlphaMode.Ignore\"/></strong>.</p><p>Your application should create render targets once and hold onto them for the life of the application or until the render target's  <strong>EndDraw</strong> method returns the <strong><see cref=\"F:SharpDX.Direct2D1.ResultCode.RecreateTarget\"/></strong> error. When you receive this error, you need to recreate the render target (and any resources it created).</p>ID2D1DCRenderTargets, GDI Transforms, and Right-to-Left Language Builds of Windows<p>When you use an <strong><see cref=\"T:SharpDX.Direct2D1.DeviceContextRenderTarget\"/></strong>, it renders Direct2D content to an internal bitmap, and then renders the bitmap to the DC with GDI. </p><p>It's possible for GDI to apply a GDI transform  (through the <strong>SetWorldTransform</strong> method) or other effect to the same DC used by the render target, in which case GDI transforms the bitmap produced by Direct2D. Using a GDI transform to transform the Direct2D content has the potential to degrade the visual quality of the output, because you're transforming a bitmap for which antialiasing and subpixel positioning have already been calculated.</p><p>For example, suppose you use the render target to draw a scene that contains antialiased geometries and text. If you use a GDI transform to apply a scale transform to the DC and scale the scene so that it's 10 times larger, you'll see pixelization and jagged edges. (If, however, you applied a similar transform using Direct2D, the visual quality of the scene would not be degraded.)</p><p>In some cases, it might not be obvious that GDI is performing additional processing that might degrade the quality of the Direct2D content. For example, on a right-to-left (RTL) build of Windows, content rendered by an <strong><see cref=\"T:SharpDX.Direct2D1.DeviceContextRenderTarget\"/></strong> might be horizontally inverted when GDI copies it to its destination.   Whether the content is actually inverted depends on the current settings of the DC.</p><p>Depending on the type of content being rendered, you might want to prevent the inversion. If the Direct2D content includes ClearType text, this inversion will degrade the quality of the text.</p><p>You can control RTL rendering behavior by using the <strong>SetLayout</strong> GDI function.  To  prevent the mirroring, call the <strong>SetLayout</strong> GDI function and specify <strong>LAYOUT_BITMAPORIENTATIONPRESERVED</strong> as the only value for the second parameter (do not combine it with <strong>LAYOUT_RTL</strong>), as shown in the following example:</p><pre><code>SetLayout(m_hwnd, LAYOUT_BITMAPORIENTATIONPRESERVED);</code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1DCRenderTarget']/*\"/>\t\n            <msdn-id>dd371213</msdn-id>\t\n            <unmanaged>ID2D1DCRenderTarget</unmanaged>\t\n            <unmanaged-short>ID2D1DCRenderTarget</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.DeviceContextRenderTarget.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct2D1.DeviceContextRenderTarget\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.DeviceContextRenderTarget.op_Explicit(System.IntPtr)~SharpDX.Direct2D1.DeviceContextRenderTarget\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct2D1.DeviceContextRenderTarget\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.DeviceContextRenderTarget.BindDeviceContext(System.IntPtr,SharpDX.Rectangle)\">\n            <summary>\t\n            <p> Binds the render target to the device context to which it issues drawing commands.</p>\t\n            </summary>\t\n            <param name=\"hDC\"><dd>  <p>The device context to which the render target issues drawing commands.</p> </dd></param>\t\n            <param name=\"subRectRef\"><dd>  <p>The dimensions of the handle to a device context (<see cref=\"T:System.IntPtr\"/>) to which the render target is bound. </p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>Before you can render with the DC render target, you must use its <strong>BindDC</strong> method to associate it with a GDI DC.  You do this each time you  use a different DC, or the size of the area you want to draw to changes.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1DCRenderTarget::BindDC']/*\"/>\t\n            <msdn-id>dd371214</msdn-id>\t\n            <unmanaged>HRESULT ID2D1DCRenderTarget::BindDC([In] const HDC hDC,[In] const RECT* pSubRect)</unmanaged>\t\n            <unmanaged-short>ID2D1DCRenderTarget::BindDC</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.DeviceContextRenderTarget.#ctor(SharpDX.Direct2D1.Factory,SharpDX.Direct2D1.RenderTargetProperties)\">\n            <summary>\t\n            Creates a render target that draws to a Windows Graphics Device Interface (GDI) device context.\t\n            </summary>\t\n            <remarks>\t\n            Before you can render with a DC render target, you must use the render target's {{BindDC}} method to associate it with a GDI DC.  Do this for each different DC and whenever there is a change in the size of the area you want to draw to.To enable the DC render target to work with GDI, set the render target's DXGI format to <see cref=\"F:SharpDX.DXGI.Format.B8G8R8A8_UNorm\"/> and alpha mode to <see cref=\"F:SharpDX.Direct2D1.AlphaMode.Premultiplied\"/> or D2D1_ALPHA_MODE_IGNORE.Your application should create render targets once and hold on to them for the life of the application or until the render target's  {{EndDraw}} method returns the {{D2DERR_RECREATE_TARGET}} error. When you receive this error, recreate the render target (and any resources it created).\t\n            </remarks>\t\n            <param name=\"factory\">an instance of <see cref=\"T:SharpDX.Direct2D1.Factory\"/></param>\n            <param name=\"properties\">The rendering mode, pixel format, remoting options, DPI information, and the minimum DirectX support required for hardware rendering.  To enable the device context (DC) render target to work with GDI, set the DXGI format to <see cref=\"F:SharpDX.DXGI.Format.B8G8R8A8_UNorm\"/> and the alpha mode to <see cref=\"F:SharpDX.Direct2D1.AlphaMode.Premultiplied\"/> or D2D1_ALPHA_MODE_IGNORE. For more information about pixel formats, see  {{Supported Pixel  Formats and Alpha Modes}}.</param>\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.DrawingStateBlock\">\n            <summary>\t\n            <p>Represents the drawing state of a render target: the antialiasing mode, transform, tags, and text-rendering options. </p>\t\n            </summary>\t\n            <remarks>\t\n            Creating <see cref=\"T:SharpDX.Direct2D1.DrawingStateBlock\"/> Objects<p>To create an <strong><see cref=\"T:SharpDX.Direct2D1.DrawingStateBlock\"/></strong>, use the <strong><see cref=\"M:SharpDX.Direct2D1.Factory.CreateDrawingStateBlock(System.Nullable{SharpDX.Direct2D1.DrawingStateDescription},SharpDX.DirectWrite.RenderingParams,SharpDX.Direct2D1.DrawingStateBlock)\"/></strong> method.</p><p>A drawing state block is a device-independent resource; you can create it once and retain it for the life of your application. For more information about resources, see the Resources Overview.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1DrawingStateBlock']/*\"/>\t\n            <msdn-id>dd371218</msdn-id>\t\n            <unmanaged>ID2D1DrawingStateBlock</unmanaged>\t\n            <unmanaged-short>ID2D1DrawingStateBlock</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.DrawingStateBlock.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct2D1.DrawingStateBlock\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.DrawingStateBlock.op_Explicit(System.IntPtr)~SharpDX.Direct2D1.DrawingStateBlock\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct2D1.DrawingStateBlock\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.DrawingStateBlock.GetDescription(SharpDX.Direct2D1.DrawingStateDescription@)\">\n            <summary>\t\n            <p>Retrieves the antialiasing mode, transform, and tags portion of the drawing state.</p>\t\n            </summary>\t\n            <param name=\"stateDescription\"><dd>  <p>When this method returns, contains the antialiasing mode, transform, and tags portion of the drawing state. You must allocate storage for this parameter.</p> </dd></param>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1DrawingStateBlock::GetDescription']/*\"/>\t\n            <msdn-id>dd371223</msdn-id>\t\n            <unmanaged>void ID2D1DrawingStateBlock::GetDescription([Out] D2D1_DRAWING_STATE_DESCRIPTION* stateDescription)</unmanaged>\t\n            <unmanaged-short>ID2D1DrawingStateBlock::GetDescription</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.DrawingStateBlock.SetDescription(SharpDX.Direct2D1.DrawingStateDescription@)\">\n            <summary>\t\n            <p>Specifies the antialiasing mode, transform, and tags portion of the drawing state.</p>\t\n            </summary>\t\n            <param name=\"stateDescription\"><dd>  <p>The antialiasing mode, transform, and tags portion of the drawing state.</p> </dd></param>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1DrawingStateBlock::SetDescription']/*\"/>\t\n            <msdn-id>dd371231</msdn-id>\t\n            <unmanaged>void ID2D1DrawingStateBlock::SetDescription([In] const D2D1_DRAWING_STATE_DESCRIPTION* stateDescription)</unmanaged>\t\n            <unmanaged-short>ID2D1DrawingStateBlock::SetDescription</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.DrawingStateBlock.SetTextRenderingParams(SharpDX.DirectWrite.RenderingParams)\">\n            <summary>\t\n            <p>Specifies the text-rendering configuration of the drawing state.</p>\t\n            </summary>\t\n            <param name=\"textRenderingParams\"><dd>  <p>The text-rendering configuration of the drawing state, or <c>null</c> to use default settings.</p> </dd></param>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1DrawingStateBlock::SetTextRenderingParams']/*\"/>\t\n            <msdn-id>dd371237</msdn-id>\t\n            <unmanaged>void ID2D1DrawingStateBlock::SetTextRenderingParams([In, Optional] IDWriteRenderingParams* textRenderingParams)</unmanaged>\t\n            <unmanaged-short>ID2D1DrawingStateBlock::SetTextRenderingParams</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.DrawingStateBlock.GetTextRenderingParams(SharpDX.DirectWrite.RenderingParams@)\">\n            <summary>\t\n            <p>Retrieves the text-rendering configuration of the drawing state.</p>\t\n            </summary>\t\n            <param name=\"textRenderingParams\"><dd>  <p>When this method returns, contains the address of a reference to an <strong><see cref=\"T:SharpDX.DirectWrite.RenderingParams\"/></strong> object that describes the text-rendering configuration of the drawing state.</p> </dd></param>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1DrawingStateBlock::GetTextRenderingParams']/*\"/>\t\n            <msdn-id>dd371227</msdn-id>\t\n            <unmanaged>void ID2D1DrawingStateBlock::GetTextRenderingParams([Out, Optional] IDWriteRenderingParams** textRenderingParams)</unmanaged>\t\n            <unmanaged-short>ID2D1DrawingStateBlock::GetTextRenderingParams</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.DrawingStateBlock.#ctor(SharpDX.Direct2D1.Factory)\">\n            <summary>\t\n            Creates an <see cref=\"T:SharpDX.Direct2D1.DrawingStateBlock\"/> that can be used with the {{SaveDrawingState}} and {{RestoreDrawingState}} methods of a render target.\t\n            </summary>\t\n            <param name=\"factory\">an instance of <see cref=\"T:SharpDX.Direct2D1.Factory\"/></param>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.DrawingStateBlock.#ctor(SharpDX.Direct2D1.Factory,SharpDX.Direct2D1.DrawingStateDescription)\">\n            <summary>\t\n            Creates an <see cref=\"T:SharpDX.Direct2D1.DrawingStateBlock\"/> that can be used with the {{SaveDrawingState}} and {{RestoreDrawingState}} methods of a render target.\t\n            </summary>\t\n            <param name=\"factory\">an instance of <see cref=\"T:SharpDX.Direct2D1.Factory\"/></param>\n            <param name=\"drawingStateDescription\">A structure that contains antialiasing, transform, and tags  information.</param>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.DrawingStateBlock.#ctor(SharpDX.Direct2D1.Factory,SharpDX.DirectWrite.RenderingParams)\">\n            <summary>\t\n            Creates an <see cref=\"T:SharpDX.Direct2D1.DrawingStateBlock\"/> that can be used with the {{SaveDrawingState}} and {{RestoreDrawingState}} methods of a render target.\t\n            </summary>\t\n            <param name=\"factory\">an instance of <see cref=\"T:SharpDX.Direct2D1.Factory\"/></param>\n            <param name=\"textRenderingParams\">Optional text parameters that indicate how text should be rendered.  </param>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.DrawingStateBlock.#ctor(SharpDX.Direct2D1.Factory,System.Nullable{SharpDX.Direct2D1.DrawingStateDescription},SharpDX.DirectWrite.RenderingParams)\">\n            <summary>\t\n            Creates an <see cref=\"T:SharpDX.Direct2D1.DrawingStateBlock\"/> that can be used with the {{SaveDrawingState}} and {{RestoreDrawingState}} methods of a render target.\t\n            </summary>\t\n            <param name=\"factory\">an instance of <see cref=\"T:SharpDX.Direct2D1.Factory\"/></param>\n            <param name=\"drawingStateDescription\">A structure that contains antialiasing, transform, and tags  information.</param>\n            <param name=\"textRenderingParams\">Optional text parameters that indicate how text should be rendered.  </param>\n        </member>\n        <member name=\"P:SharpDX.Direct2D1.DrawingStateBlock.Description\">\n            <summary>\t\n            <p>Retrieves or sets the antialiasing mode, transform, and tags portion of the drawing state.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1DrawingStateBlock::GetDescription']/*\"/>\t\n            <msdn-id>dd371223</msdn-id>\t\n            <unmanaged>GetDescription / SetDescription</unmanaged>\t\n            <unmanaged-short>GetDescription</unmanaged-short>\t\n            <unmanaged>void ID2D1DrawingStateBlock::GetDescription([Out] D2D1_DRAWING_STATE_DESCRIPTION* stateDescription)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct2D1.DrawingStateBlock.TextRenderingParams\">\n            <summary>\t\n            <p>Retrieves or sets the text-rendering configuration of the drawing state.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1DrawingStateBlock::GetTextRenderingParams']/*\"/>\t\n            <msdn-id>dd371227</msdn-id>\t\n            <unmanaged>GetTextRenderingParams / SetTextRenderingParams</unmanaged>\t\n            <unmanaged-short>GetTextRenderingParams</unmanaged-short>\t\n            <unmanaged>void ID2D1DrawingStateBlock::GetTextRenderingParams([Out, Optional] IDWriteRenderingParams** textRenderingParams)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.EllipseGeometry\">\n            <summary>\t\n            <p>Represents an ellipse. </p>\t\n            </summary>\t\n            <remarks>\t\n            Creating <see cref=\"T:SharpDX.Direct2D1.EllipseGeometry\"/> Objects<p>To create an elipse geometry, use the <strong><see cref=\"M:SharpDX.Direct2D1.Factory.CreateEllipseGeometry(SharpDX.Direct2D1.Ellipse,SharpDX.Direct2D1.EllipseGeometry)\"/></strong> method.</p><p>Direct2D geometries are immutable and device-independent resources created by <strong><see cref=\"T:SharpDX.Direct2D1.Factory\"/></strong>.  In general, you should create geometries once and retain them for the life of the application, or until they need to be modified. For more information about device-independent and device-dependent resources, see  the Resources Overview.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1EllipseGeometry']/*\"/>\t\n            <msdn-id>dd371239</msdn-id>\t\n            <unmanaged>ID2D1EllipseGeometry</unmanaged>\t\n            <unmanaged-short>ID2D1EllipseGeometry</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.Geometry\">\n            <summary>\t\n            <p>Represents a geometry resource and defines a set of helper methods for manipulating and measuring geometric shapes.  Interfaces that inherit from <strong><see cref=\"T:SharpDX.Direct2D1.Geometry\"/></strong> define specific shapes.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>There are several types of Direct2D geometry objects:  a  simple geometry (<strong><see cref=\"T:SharpDX.Direct2D1.RectangleGeometry\"/></strong>, <strong><see cref=\"T:SharpDX.Direct2D1.RoundedRectangleGeometry\"/></strong>, or <strong><see cref=\"T:SharpDX.Direct2D1.EllipseGeometry\"/></strong>), a path geometry (<strong><see cref=\"T:SharpDX.Direct2D1.PathGeometry\"/></strong>), or a composite geometry (<strong><see cref=\"T:SharpDX.Direct2D1.GeometryGroup\"/></strong> and <strong><see cref=\"T:SharpDX.Direct2D1.TransformedGeometry\"/></strong>).</p><p> Direct2D geometries enable you to  describe two-dimensional figures and also offer  many uses, such as defining  hit-test regions,  clip regions, and even   animation paths.</p><p>Direct2D geometries are immutable and device-independent resources created by <strong><see cref=\"T:SharpDX.Direct2D1.Factory\"/></strong>.  In general, you should create geometries once and retain them for the life of the application, or until they need to be modified. For more information about device-independent and device-dependent resources, see  the Resources Overview.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1Geometry']/*\"/>\t\n            <msdn-id>dd316578</msdn-id>\t\n            <unmanaged>ID2D1Geometry</unmanaged>\t\n            <unmanaged-short>ID2D1Geometry</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.Geometry.DefaultFlatteningTolerance\">\n            <summary>\n            Default flattening tolerance used for all methods that are not explicitly using it. Default is set to 0.25f.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Geometry.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct2D1.Geometry\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Geometry.op_Explicit(System.IntPtr)~SharpDX.Direct2D1.Geometry\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct2D1.Geometry\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Geometry.GetBounds(System.Nullable{SharpDX.Matrix3x2})\">\n            <summary>\t\n            Retrieves the bounds of the geometry.Overload list\t\n            </summary>\t\n            <param name=\"worldTransform\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1Geometry::GetBounds']/*\"/>\t\n            <msdn-id>dd742751</msdn-id>\t\n            <unmanaged>HRESULT ID2D1Geometry::GetBounds([In, Optional] const D2D_MATRIX_3X2_F* worldTransform,[Out] D2D_RECT_F* bounds)</unmanaged>\t\n            <unmanaged-short>ID2D1Geometry::GetBounds</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Geometry.GetWidenedBounds(System.Single,SharpDX.Direct2D1.StrokeStyle,System.Nullable{SharpDX.Matrix3x2},System.Single)\">\n            <summary>\t\n            <p>Gets the bounds of the geometry after it has been widened by the specified stroke width and style and transformed by the specified matrix.</p>\t\n            </summary>\t\n            <param name=\"strokeWidth\"><dd>  <p>The amount by which to widen the geometry by stroking its outline.</p> </dd></param>\t\n            <param name=\"strokeStyle\"><dd>  <p>The style of the stroke that widens the geometry.</p> </dd></param>\t\n            <param name=\"worldTransform\"><dd>  <p>A transform to apply to the geometry after the geometry is transformed and after the geometry has been stroked.</p> </dd></param>\t\n            <param name=\"flatteningTolerance\"><dd>  <p>When this method returns, contains the bounds of the widened geometry. You must allocate storage for this parameter.</p> </dd></param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1Geometry::GetWidenedBounds']/*\"/>\t\n            <msdn-id>dd316714</msdn-id>\t\n            <unmanaged>HRESULT ID2D1Geometry::GetWidenedBounds([In] float strokeWidth,[In, Optional] ID2D1StrokeStyle* strokeStyle,[In, Optional] const D2D_MATRIX_3X2_F* worldTransform,[In] float flatteningTolerance,[Out] D2D_RECT_F* bounds)</unmanaged>\t\n            <unmanaged-short>ID2D1Geometry::GetWidenedBounds</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Geometry.StrokeContainsPoint(SharpDX.DrawingPointF,System.Single,SharpDX.Direct2D1.StrokeStyle,System.Nullable{SharpDX.Matrix3x2},System.Single)\">\n            <summary>\t\n            <p>Determines whether the geometry's stroke contains the specified point given the specified stroke thickness, style, and transform. </p>\t\n            </summary>\t\n            <param name=\"point\"><dd>  <p>The point to test for containment.</p> </dd></param>\t\n            <param name=\"strokeWidth\"><dd>  <p>The thickness of the stroke to apply.</p> </dd></param>\t\n            <param name=\"strokeStyle\"><dd>  <p>The style of stroke to apply.</p> </dd></param>\t\n            <param name=\"worldTransform\"><dd>  <p>The transform to apply to the stroked geometry. </p> </dd></param>\t\n            <param name=\"flatteningTolerance\"><dd>  <p>When this method returns, contains a boolean value set to true if the geometry's stroke contains the specified point; otherwise, false. You must allocate storage for this parameter.</p> </dd></param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1Geometry::StrokeContainsPoint']/*\"/>\t\n            <msdn-id>dd316742</msdn-id>\t\n            <unmanaged>HRESULT ID2D1Geometry::StrokeContainsPoint([In] D2D_POINT_2F point,[In] float strokeWidth,[In, Optional] ID2D1StrokeStyle* strokeStyle,[In, Optional] const D2D_MATRIX_3X2_F* worldTransform,[In] float flatteningTolerance,[Out] BOOL* contains)</unmanaged>\t\n            <unmanaged-short>ID2D1Geometry::StrokeContainsPoint</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Geometry.FillContainsPoint(SharpDX.DrawingPointF,System.Nullable{SharpDX.Matrix3x2},System.Single)\">\n            <summary>\t\n            <p>Indicates whether the area filled by the geometry would contain the specified point given the specified flattening tolerance. </p>\t\n            </summary>\t\n            <param name=\"point\"><dd>  <p>The point to test.</p> </dd></param>\t\n            <param name=\"worldTransform\"><dd>  <p>The transform to apply to the geometry prior to testing for containment, or <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"flatteningTolerance\"><dd>  <p>The numeric accuracy with which the precise geometric path and path intersection is calculated. Points missing the fill by less than the tolerance are still considered inside.  Smaller values produce more accurate results but cause slower execution. </p> </dd></param>\t\n            <returns><dd>  <p>When this method returns, contains a <strong><see cref=\"T:SharpDX.Bool\"/></strong> value that is <strong>TRUE</strong> if the area filled by the geometry contains <em>point</em>; otherwise, <strong><see cref=\"F:SharpDX.Result.False\"/></strong>.You must allocate storage for this parameter.</p> </dd></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1Geometry::FillContainsPoint']/*\"/>\t\n            <msdn-id>dd316687</msdn-id>\t\n            <unmanaged>HRESULT ID2D1Geometry::FillContainsPoint([In] D2D_POINT_2F point,[In, Optional] const D2D_MATRIX_3X2_F* worldTransform,[In] float flatteningTolerance,[Out] BOOL* contains)</unmanaged>\t\n            <unmanaged-short>ID2D1Geometry::FillContainsPoint</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Geometry.Compare(SharpDX.Direct2D1.Geometry,System.Nullable{SharpDX.Matrix3x2},System.Single)\">\n            <summary>\t\n            <p>Describes the intersection between this geometry and the specified geometry. The comparison is performed by using the specified flattening tolerance.</p>\t\n            </summary>\t\n            <param name=\"inputGeometry\"><dd>  <p>The geometry to test. </p> </dd></param>\t\n            <param name=\"inputGeometryTransform\"><dd>  <p>The transform to apply to <em>inputGeometry</em>, or <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"flatteningTolerance\"><dd>  <p>The maximum bounds on the distance between points in the polygonal approximation of the geometries. Smaller values produce more accurate results but cause slower execution. </p> </dd></param>\t\n            <returns><dd>  <p>When this method returns, contains a reference to a value that describes how this geometry is related to <em>inputGeometry</em>. You must allocate storage for this parameter.  </p> </dd></returns>\t\n            <remarks>\t\n            <p>When interpreting the returned <em>relation</em> value, it is important to remember that the member <strong><see cref=\"F:SharpDX.Direct2D1.GeometryRelation.IsContained\"/></strong> of the  <strong><see cref=\"T:SharpDX.Direct2D1.GeometryRelation\"/></strong> enumeration type means that this geometry is contained  inside <em>inputGeometry</em>, not that this geometry contains <em>inputGeometry</em>. </p><p>For  more information about how to interpret other possible return values, see <strong><see cref=\"T:SharpDX.Direct2D1.GeometryRelation\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1Geometry::CompareWithGeometry']/*\"/>\t\n            <msdn-id>dd316630</msdn-id>\t\n            <unmanaged>HRESULT ID2D1Geometry::CompareWithGeometry([In] ID2D1Geometry* inputGeometry,[In, Optional] const D2D_MATRIX_3X2_F* inputGeometryTransform,[In] float flatteningTolerance,[Out] D2D1_GEOMETRY_RELATION* relation)</unmanaged>\t\n            <unmanaged-short>ID2D1Geometry::CompareWithGeometry</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Geometry.Simplify_(SharpDX.Direct2D1.GeometrySimplificationOption,System.Nullable{SharpDX.Matrix3x2},System.Single,System.IntPtr)\">\n            <summary>\t\n            Creates a simplified version of the geometry that contains only lines and (optionally) cubic Bezier curves and writes the result to an <strong><see cref=\"T:SharpDX.Direct2D1.SimplifiedGeometrySink\"/></strong>.Overload list\t\n            </summary>\t\n            <param name=\"simplificationOption\">No documentation.</param>\t\n            <param name=\"worldTransform\">No documentation.</param>\t\n            <param name=\"flatteningTolerance\">No documentation.</param>\t\n            <param name=\"geometrySink\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1Geometry::Simplify']/*\"/>\t\n            <msdn-id>dd742770</msdn-id>\t\n            <unmanaged>HRESULT ID2D1Geometry::Simplify([In] D2D1_GEOMETRY_SIMPLIFICATION_OPTION simplificationOption,[In, Optional] const D2D_MATRIX_3X2_F* worldTransform,[In] float flatteningTolerance,[In] ID2D1SimplifiedGeometrySink* geometrySink)</unmanaged>\t\n            <unmanaged-short>ID2D1Geometry::Simplify</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Geometry.Tessellate_(System.Nullable{SharpDX.Matrix3x2},System.Single,System.IntPtr)\">\n            <summary>\t\n            Creates a set of clockwise-wound triangles that cover the geometry after it has been transformed using the specified matrix and flattened using the specified tolerance.Overload list\t\n            </summary>\t\n            <param name=\"worldTransform\">No documentation.</param>\t\n            <param name=\"flatteningTolerance\">No documentation.</param>\t\n            <param name=\"tessellationSink\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1Geometry::Tessellate']/*\"/>\t\n            <msdn-id>dd742772</msdn-id>\t\n            <unmanaged>HRESULT ID2D1Geometry::Tessellate([In, Optional] const D2D_MATRIX_3X2_F* worldTransform,[In] float flatteningTolerance,[In] ID2D1TessellationSink* tessellationSink)</unmanaged>\t\n            <unmanaged-short>ID2D1Geometry::Tessellate</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Geometry.Combine_(SharpDX.Direct2D1.Geometry,SharpDX.Direct2D1.CombineMode,System.Nullable{SharpDX.Matrix3x2},System.Single,System.IntPtr)\">\n            <summary>\t\n            Combines this geometry with the specified geometry and stores the result in an <strong><see cref=\"T:SharpDX.Direct2D1.SimplifiedGeometrySink\"/></strong>.Overload list\t\n            </summary>\t\n            <param name=\"inputGeometry\">No documentation.</param>\t\n            <param name=\"combineMode\">No documentation.</param>\t\n            <param name=\"inputGeometryTransform\">No documentation.</param>\t\n            <param name=\"flatteningTolerance\">No documentation.</param>\t\n            <param name=\"geometrySink\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1Geometry::CombineWithGeometry']/*\"/>\t\n            <msdn-id>dd742739</msdn-id>\t\n            <unmanaged>HRESULT ID2D1Geometry::CombineWithGeometry([In] ID2D1Geometry* inputGeometry,[In] D2D1_COMBINE_MODE combineMode,[In, Optional] const D2D_MATRIX_3X2_F* inputGeometryTransform,[In] float flatteningTolerance,[In] ID2D1SimplifiedGeometrySink* geometrySink)</unmanaged>\t\n            <unmanaged-short>ID2D1Geometry::CombineWithGeometry</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Geometry.Outline_(System.Nullable{SharpDX.Matrix3x2},System.Single,System.IntPtr)\">\n            <summary>\t\n            <p>Computes the outline of the geometry and writes the result to an <strong><see cref=\"T:SharpDX.Direct2D1.SimplifiedGeometrySink\"/></strong>.</p>\t\n            </summary>\t\n            <param name=\"worldTransform\">No documentation.</param>\t\n            <param name=\"flatteningTolerance\">No documentation.</param>\t\n            <param name=\"geometrySink\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>The <strong>Outline</strong> method allows the caller to produce a geometry with an equivalent fill to the input geometry, with the following additional properties: </p><ul> <li>The output geometry contains no transverse intersections; that is, segments may touch, but they never cross.</li> <li>The outermost figures in the output geometry are all oriented counterclockwise. </li> <li>The output geometry is fill-mode invariant; that is, the fill of the geometry does not depend on the choice of the fill mode. For more information about the fill mode, see <strong><see cref=\"T:SharpDX.Direct2D1.FillMode\"/></strong>.</li> </ul><p>Additionally, the  <strong>Outline</strong> method can be useful in removing redundant portions of said geometries to simplify complex geometries. It can also be useful in combination with <strong><see cref=\"T:SharpDX.Direct2D1.GeometryGroup\"/></strong> to create unions among several geometries simultaneously.\t\n            </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1Geometry::Outline']/*\"/>\t\n            <msdn-id>dd316717</msdn-id>\t\n            <unmanaged>HRESULT ID2D1Geometry::Outline([In, Optional] const D2D_MATRIX_3X2_F* worldTransform,[In] float flatteningTolerance,[In] ID2D1SimplifiedGeometrySink* geometrySink)</unmanaged>\t\n            <unmanaged-short>ID2D1Geometry::Outline</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Geometry.ComputeArea(System.Nullable{SharpDX.Matrix3x2},System.Single)\">\n            <summary>\t\n            <p>Computes the area of the geometry after it has been transformed by the specified matrix and flattened using the specified tolerance.</p>\t\n            </summary>\t\n            <param name=\"worldTransform\"><dd>  <p>The transform to apply to this geometry before computing its area, or <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"flatteningTolerance\"><dd>  <p>The maximum bounds on the distance between points in the polygonal approximation of the geometry. Smaller values produce more accurate results but cause slower execution. </p> </dd></param>\t\n            <returns><dd>  <p>When this this method returns, contains a reference to the area of the transformed, flattened version of this geometry. You must allocate storage for this parameter.</p> </dd></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1Geometry::ComputeArea']/*\"/>\t\n            <msdn-id>dd316641</msdn-id>\t\n            <unmanaged>HRESULT ID2D1Geometry::ComputeArea([In, Optional] const D2D_MATRIX_3X2_F* worldTransform,[In] float flatteningTolerance,[Out] float* area)</unmanaged>\t\n            <unmanaged-short>ID2D1Geometry::ComputeArea</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Geometry.ComputeLength(System.Nullable{SharpDX.Matrix3x2},System.Single)\">\n            <summary>\t\n            Calculates the length of the geometry as though each segment were unrolled into a line.Overload list\t\n            </summary>\t\n            <param name=\"worldTransform\">No documentation.</param>\t\n            <param name=\"flatteningTolerance\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1Geometry::ComputeLength']/*\"/>\t\n            <msdn-id>dd742744</msdn-id>\t\n            <unmanaged>HRESULT ID2D1Geometry::ComputeLength([In, Optional] const D2D_MATRIX_3X2_F* worldTransform,[In] float flatteningTolerance,[Out] float* length)</unmanaged>\t\n            <unmanaged-short>ID2D1Geometry::ComputeLength</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Geometry.ComputePointAtLength(System.Single,System.Nullable{SharpDX.Matrix3x2},System.Single,SharpDX.DrawingPointF@)\">\n            <summary>\t\n            <p>Calculates the point and tangent vector at the specified distance along the geometry after it has been transformed by the specified matrix and flattened using the specified tolerance.</p>\t\n            </summary>\t\n            <param name=\"length\"><dd>  <p>The distance along the geometry of the point and tangent to find. If this distance is less then 0, this method calculates the first point in the geometry. If this distance is greater than the length of the geometry, this method calculates the last point in the geometry.</p> </dd></param>\t\n            <param name=\"worldTransform\"><dd>  <p>The transform to apply to the geometry before calculating the specified point and tangent, or <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"flatteningTolerance\"><dd>  <p>The maximum bounds on the distance between points in the polygonal approximation of the geometry. Smaller values produce more accurate results but cause slower execution.</p> </dd></param>\t\n            <param name=\"unitTangentVector\"><dd>  <p>When this method returns, contains a reference to the tangent vector at the specified distance along the geometry. If the geometry is empty,  this vector contains NaN as its x and y values. You must allocate storage for this parameter.</p> </dd></param>\t\n            <returns><dd>  <p>The location at the specified distance along the geometry. If the geometry is empty,  this point contains NaN as its x and y values.</p> </dd></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1Geometry::ComputePointAtLength']/*\"/>\t\n            <msdn-id>dd316676</msdn-id>\t\n            <unmanaged>HRESULT ID2D1Geometry::ComputePointAtLength([In] float length,[In, Optional] const D2D_MATRIX_3X2_F* worldTransform,[In] float flatteningTolerance,[Out, Optional] D2D_POINT_2F* point,[Out, Optional] D2D_POINT_2F* unitTangentVector)</unmanaged>\t\n            <unmanaged-short>ID2D1Geometry::ComputePointAtLength</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Geometry.Widen_(System.Single,SharpDX.Direct2D1.StrokeStyle,System.Nullable{SharpDX.Matrix3x2},System.Single,System.IntPtr)\">\n            <summary>\t\n            <p>Widens the geometry by the specified stroke and writes the result to an <strong><see cref=\"T:SharpDX.Direct2D1.SimplifiedGeometrySink\"/></strong> after it has been transformed by the specified matrix and flattened using the default tolerance.</p>\t\n            </summary>\t\n            <param name=\"strokeWidth\">No documentation.</param>\t\n            <param name=\"strokeStyle\">No documentation.</param>\t\n            <param name=\"worldTransform\">No documentation.</param>\t\n            <param name=\"flatteningTolerance\">No documentation.</param>\t\n            <param name=\"geometrySink\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1Geometry::Widen']/*\"/>\t\n            <msdn-id>dd316770</msdn-id>\t\n            <unmanaged>HRESULT ID2D1Geometry::Widen([In] float strokeWidth,[In, Optional] ID2D1StrokeStyle* strokeStyle,[In, Optional] const D2D_MATRIX_3X2_F* worldTransform,[In] float flatteningTolerance,[In] ID2D1SimplifiedGeometrySink* geometrySink)</unmanaged>\t\n            <unmanaged-short>ID2D1Geometry::Widen</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Geometry.Combine(SharpDX.Direct2D1.Geometry,SharpDX.Direct2D1.CombineMode,SharpDX.Direct2D1.GeometrySink)\">\n            <summary>\t\n            Combines this geometry with the specified geometry and stores the result in an <see cref=\"T:SharpDX.Direct2D1.SimplifiedGeometrySink\"/>.  \t\n            </summary>\t\n            <param name=\"inputGeometry\">The geometry to combine with this instance.</param>\n            <param name=\"combineMode\">The type of combine operation to perform.</param>\n            <param name=\"geometrySink\">The result of the combine operation.</param>\n            <returns>If the method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code.</returns>\n            <unmanaged>HRESULT CombineWithGeometry([In] ID2D1Geometry* inputGeometry,[None] D2D1_COMBINE_MODE combineMode,[In, Optional] const D2D1_MATRIX_3X2_F* inputGeometryTransform,[None] FLOAT flatteningTolerance,[In] ID2D1SimplifiedGeometrySink* geometrySink)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Geometry.Combine(SharpDX.Direct2D1.Geometry,SharpDX.Direct2D1.CombineMode,System.Single,SharpDX.Direct2D1.GeometrySink)\">\n            <summary>\t\n            Combines this geometry with the specified geometry and stores the result in an <see cref=\"T:SharpDX.Direct2D1.SimplifiedGeometrySink\"/>.  \t\n            </summary>\t\n            <param name=\"inputGeometry\">The geometry to combine with this instance.</param>\n            <param name=\"combineMode\">The type of combine operation to perform.</param>\n            <param name=\"flatteningTolerance\">The maximum bounds on the distance between points in the polygonal approximation of the geometries. Smaller values produce more accurate results but cause slower execution. </param>\n            <param name=\"geometrySink\">The result of the combine operation.</param>\n            <returns>If the method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code.</returns>\n            <unmanaged>HRESULT CombineWithGeometry([In] ID2D1Geometry* inputGeometry,[None] D2D1_COMBINE_MODE combineMode,[In, Optional] const D2D1_MATRIX_3X2_F* inputGeometryTransform,[None] FLOAT flatteningTolerance,[In] ID2D1SimplifiedGeometrySink* geometrySink)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Geometry.Combine(SharpDX.Direct2D1.Geometry,SharpDX.Direct2D1.CombineMode,System.Nullable{SharpDX.Matrix3x2},System.Single,SharpDX.Direct2D1.GeometrySink)\">\n            <summary>\t\n            Combines this geometry with the specified geometry and stores the result in an <see cref=\"T:SharpDX.Direct2D1.SimplifiedGeometrySink\"/>.  \t\n            </summary>\t\n            <param name=\"inputGeometry\">The geometry to combine with this instance.</param>\n            <param name=\"combineMode\">The type of combine operation to perform.</param>\n            <param name=\"inputGeometryTransform\">The transform to apply to inputGeometry before combining, or NULL.</param>\n            <param name=\"flatteningTolerance\">The maximum bounds on the distance between points in the polygonal approximation of the geometries. Smaller values produce more accurate results but cause slower execution. </param>\n            <param name=\"geometrySink\">The result of the combine operation.</param>\n            <returns>If the method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code.</returns>\n            <unmanaged>HRESULT CombineWithGeometry([In] ID2D1Geometry* inputGeometry,[None] D2D1_COMBINE_MODE combineMode,[In, Optional] const D2D1_MATRIX_3X2_F* inputGeometryTransform,[None] FLOAT flatteningTolerance,[In] ID2D1SimplifiedGeometrySink* geometrySink)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Geometry.Compare(SharpDX.Direct2D1.Geometry)\">\n            <summary>\t\n            Describes the intersection between this geometry and the specified geometry. The comparison is performed by using the specified flattening tolerance.\t\n            </summary>\t\n            <remarks>\t\n            When interpreting the returned relation value, it is important to remember that the member <see cref=\"F:SharpDX.Direct2D1.GeometryRelation.IsContained\" /> of the  D2D1_GEOMETRY_RELATION enumeration type means that this geometry is contained  inside inputGeometry, not that this geometry contains inputGeometry.  For  more information about how to interpret other possible return values, see <see cref=\"T:SharpDX.Direct2D1.GeometryRelation\" />. \t\n            </remarks>\t\n            <param name=\"inputGeometry\">The geometry to test.  </param>\n            <returns>When this method returns, contains a reference to a value that describes how this geometry is related to inputGeometry. You must allocate storage for this parameter.   </returns>\n            <unmanaged>HRESULT ID2D1Geometry::CompareWithGeometry([In] ID2D1Geometry* inputGeometry,[In, Optional] const D2D1_MATRIX_3X2_F* inputGeometryTransform,[None] float flatteningTolerance,[Out] D2D1_GEOMETRY_RELATION* relation)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Geometry.Compare(SharpDX.Direct2D1.Geometry,System.Single)\">\n            <summary>\t\n            Describes the intersection between this geometry and the specified geometry. The comparison is performed by using the specified flattening tolerance.\t\n            </summary>\t\n            <remarks>\t\n            When interpreting the returned relation value, it is important to remember that the member <see cref=\"F:SharpDX.Direct2D1.GeometryRelation.IsContained\" /> of the  D2D1_GEOMETRY_RELATION enumeration type means that this geometry is contained  inside inputGeometry, not that this geometry contains inputGeometry.  For  more information about how to interpret other possible return values, see <see cref=\"T:SharpDX.Direct2D1.GeometryRelation\" />. \t\n            </remarks>\t\n            <param name=\"inputGeometry\">The geometry to test.  </param>\n            <param name=\"flatteningTolerance\">The maximum bounds on the distance between points in the polygonal approximation of the geometries. Smaller values produce more accurate results but cause slower execution.  </param>\n            <returns>When this method returns, contains a reference to a value that describes how this geometry is related to inputGeometry. You must allocate storage for this parameter.   </returns>\n            <unmanaged>HRESULT ID2D1Geometry::CompareWithGeometry([In] ID2D1Geometry* inputGeometry,[In, Optional] const D2D1_MATRIX_3X2_F* inputGeometryTransform,[None] float flatteningTolerance,[Out] D2D1_GEOMETRY_RELATION* relation)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Geometry.ComputeArea\">\n            <summary>\t\n            Computes the area of the geometry after it has been transformed by the specified matrix and flattened using the specified tolerance.\t\n            </summary>\t\n            <returns>When this this method returns, contains a reference to the area of the transformed, flattened version of this geometry. You must allocate storage for this parameter. </returns>\n            <unmanaged>HRESULT ID2D1Geometry::ComputeArea([In, Optional] const D2D1_MATRIX_3X2_F* worldTransform,[None] float flatteningTolerance,[Out] float* area)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Geometry.ComputeArea(System.Single)\">\n            <summary>\t\n            Computes the area of the geometry after it has been transformed by the specified matrix and flattened using the specified tolerance.\t\n            </summary>\t\n            <param name=\"flatteningTolerance\">The maximum bounds on the distance between points in the polygonal approximation of the geometry. Smaller values produce more accurate results but cause slower execution.  </param>\n            <returns>When this this method returns, contains a reference to the area of the transformed, flattened version of this geometry. You must allocate storage for this parameter. </returns>\n            <unmanaged>HRESULT ID2D1Geometry::ComputeArea([In, Optional] const D2D1_MATRIX_3X2_F* worldTransform,[None] float flatteningTolerance,[Out] float* area)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Geometry.ComputeLength\">\n            <summary>\t\n            Calculates the length of the geometry as though each segment were unrolled into a line. \t\n            </summary>\t\n            <returns>When this method returns, contains a reference to the length of the geometry. For closed geometries, the length includes an implicit closing segment. You must allocate storage for this parameter. </returns>\n            <unmanaged>HRESULT ID2D1Geometry::ComputeLength([In, Optional] const D2D1_MATRIX_3X2_F* worldTransform,[None] float flatteningTolerance,[Out] float* length)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Geometry.ComputeLength(System.Single)\">\n            <summary>\t\n            Calculates the length of the geometry as though each segment were unrolled into a line. \t\n            </summary>\t\n            <param name=\"flatteningTolerance\">The maximum bounds on the distance between points in the polygonal approximation of the geometry. Smaller values produce more accurate results but cause slower execution.  </param>\n            <returns>When this method returns, contains a reference to the length of the geometry. For closed geometries, the length includes an implicit closing segment. You must allocate storage for this parameter. </returns>\n            <unmanaged>HRESULT ID2D1Geometry::ComputeLength([In, Optional] const D2D1_MATRIX_3X2_F* worldTransform,[None] float flatteningTolerance,[Out] float* length)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Geometry.ComputePointAtLength(System.Single,SharpDX.DrawingPointF@)\">\n            <summary>\t\n            Calculates the point and tangent vector at the specified distance along the geometry after it has been transformed by the specified matrix and flattened using the specified tolerance.\t\n            </summary>\t\n            <param name=\"length\">The distance along the geometry of the point and tangent to find. If this distance is less then 0, this method calculates the first point in the geometry. If this distance is greater than the length of the geometry, this method calculates the last point in the geometry. </param>\n            <param name=\"unitTangentVector\">Whenthis method returns, contains a reference to the tangent vector at the specified distance along the geometry. If the geometry is empty,  this vector contains NaN as its x and y values. You must allocate storage for this parameter. </param>\n            <returns>The location at the specified distance along the geometry. If the geometry is empty,  this point contains NaN as its x and y values. </returns>\n            <unmanaged>HRESULT ID2D1Geometry::ComputePointAtLength([None] float length,[In, Optional] const D2D1_MATRIX_3X2_F* worldTransform,[None] float flatteningTolerance,[Out, Optional] D2D1_POINT_2F* point,[Out, Optional] D2D1_POINT_2F* unitTangentVector)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Geometry.ComputePointAtLength(System.Single,System.Single,SharpDX.DrawingPointF@)\">\n            <summary>\t\n            Calculates the point and tangent vector at the specified distance along the geometry after it has been transformed by the specified matrix and flattened using the specified tolerance.\t\n            </summary>\t\n            <param name=\"length\">The distance along the geometry of the point and tangent to find. If this distance is less then 0, this method calculates the first point in the geometry. If this distance is greater than the length of the geometry, this method calculates the last point in the geometry. </param>\n            <param name=\"flatteningTolerance\">The maximum bounds on the distance between points in the polygonal approximation of the geometry. Smaller values produce more accurate results but cause slower execution. </param>\n            <param name=\"unitTangentVector\">Whenthis method returns, contains a reference to the tangent vector at the specified distance along the geometry. If the geometry is empty,  this vector contains NaN as its x and y values. You must allocate storage for this parameter. </param>\n            <returns>The location at the specified distance along the geometry. If the geometry is empty,  this point contains NaN as its x and y values. </returns>\n            <unmanaged>HRESULT ID2D1Geometry::ComputePointAtLength([None] float length,[In, Optional] const D2D1_MATRIX_3X2_F* worldTransform,[None] float flatteningTolerance,[Out, Optional] D2D1_POINT_2F* point,[Out, Optional] D2D1_POINT_2F* unitTangentVector)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Geometry.FillContainsPoint(SharpDX.DrawingPoint)\">\n            <summary>\t\n            Indicates whether the area filled by the geometry would contain the specified point given the specified flattening tolerance. \t\n            </summary>\t\n            <param name=\"point\">The point to test. </param>\n            <returns>When this method returns, contains a bool value that is true if the area filled by the geometry contains point; otherwise, false.You must allocate storage for this parameter. </returns>\n            <unmanaged>HRESULT ID2D1Geometry::FillContainsPoint([None] D2D1_POINT_2F point,[In, Optional] const D2D1_MATRIX_3X2_F* worldTransform,[None] float flatteningTolerance,[Out] BOOL* contains)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Geometry.FillContainsPoint(SharpDX.DrawingPointF)\">\n            <summary>\t\n            Indicates whether the area filled by the geometry would contain the specified point given the specified flattening tolerance. \t\n            </summary>\t\n            <param name=\"point\">The point to test. </param>\n            <returns>When this method returns, contains a bool value that is true if the area filled by the geometry contains point; otherwise, false.You must allocate storage for this parameter. </returns>\n            <unmanaged>HRESULT ID2D1Geometry::FillContainsPoint([None] D2D1_POINT_2F point,[In, Optional] const D2D1_MATRIX_3X2_F* worldTransform,[None] float flatteningTolerance,[Out] BOOL* contains)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Geometry.FillContainsPoint(SharpDX.DrawingPoint,System.Single)\">\n            <summary>\t\n            Indicates whether the area filled by the geometry would contain the specified point given the specified flattening tolerance. \t\n            </summary>\t\n            <param name=\"point\">The point to test. </param>\n            <param name=\"flatteningTolerance\">The numeric accuracy with which the precise geometric path and path intersection is calculated. Points missing the fill by less than the tolerance are still considered inside.  Smaller values produce more accurate results but cause slower execution.  </param>\n            <returns>When this method returns, contains a bool value that is true if the area filled by the geometry contains point; otherwise, false.You must allocate storage for this parameter. </returns>\n            <unmanaged>HRESULT ID2D1Geometry::FillContainsPoint([None] D2D1_POINT_2F point,[In, Optional] const D2D1_MATRIX_3X2_F* worldTransform,[None] float flatteningTolerance,[Out] BOOL* contains)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Geometry.FillContainsPoint(SharpDX.DrawingPointF,System.Single)\">\n            <summary>\t\n            Indicates whether the area filled by the geometry would contain the specified point given the specified flattening tolerance. \t\n            </summary>\t\n            <param name=\"point\">The point to test. </param>\n            <param name=\"flatteningTolerance\">The numeric accuracy with which the precise geometric path and path intersection is calculated. Points missing the fill by less than the tolerance are still considered inside.  Smaller values produce more accurate results but cause slower execution.  </param>\n            <returns>When this method returns, contains a bool value that is true if the area filled by the geometry contains point; otherwise, false.You must allocate storage for this parameter. </returns>\n            <unmanaged>HRESULT ID2D1Geometry::FillContainsPoint([None] D2D1_POINT_2F point,[In, Optional] const D2D1_MATRIX_3X2_F* worldTransform,[None] float flatteningTolerance,[Out] BOOL* contains)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Geometry.FillContainsPoint(SharpDX.DrawingPoint,SharpDX.Matrix3x2,System.Single)\">\n            <summary>\t\n            Indicates whether the area filled by the geometry would contain the specified point given the specified flattening tolerance. \t\n            </summary>\t\n            <param name=\"point\">The point to test. </param>\n            <param name=\"worldTransform\">The transform to apply to the geometry prior to testing for containment, or NULL. </param>\n            <param name=\"flatteningTolerance\">The numeric accuracy with which the precise geometric path and path intersection is calculated. Points missing the fill by less than the tolerance are still considered inside.  Smaller values produce more accurate results but cause slower execution.  </param>\n            <returns>When this method returns, contains a bool value that is true if the area filled by the geometry contains point; otherwise, false.You must allocate storage for this parameter. </returns>\n            <unmanaged>HRESULT ID2D1Geometry::FillContainsPoint([None] D2D1_POINT_2F point,[In, Optional] const D2D1_MATRIX_3X2_F* worldTransform,[None] float flatteningTolerance,[Out] BOOL* contains)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Geometry.GetBounds\">\n            <summary>\t\n            Retrieves the bounds of the geometry.\t\n            </summary>\t\n            <returns>When this method returns, contains the bounds of this geometry. If the bounds are empty, this will be a rect where bounds.left &gt; bounds.right. You must allocate storage for this parameter. </returns>\n            <unmanaged>HRESULT ID2D1Geometry::GetBounds([In, Optional] const D2D1_MATRIX_3X2_F* worldTransform,[Out] D2D1_RECT_F* bounds)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Geometry.GetWidenedBounds(System.Single)\">\n            <summary>\t\n            Gets the bounds of the geometry after it has been widened by the specified stroke width and style and transformed by the specified matrix.\t\n            </summary>\t\n            <param name=\"strokeWidth\">The amount by which to widen the geometry by stroking its outline. </param>\n            <returns>When this method returns, contains the bounds of the widened geometry. You must allocate storage for this parameter. </returns>\n            <unmanaged>HRESULT ID2D1Geometry::GetWidenedBounds([None] float strokeWidth,[In, Optional] ID2D1StrokeStyle* strokeStyle,[In, Optional] const D2D1_MATRIX_3X2_F* worldTransform,[None] float flatteningTolerance,[Out] D2D1_RECT_F* bounds)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Geometry.GetWidenedBounds(System.Single,System.Single)\">\n            <summary>\t\n            Gets the bounds of the geometry after it has been widened by the specified stroke width and style and transformed by the specified matrix.\t\n            </summary>\t\n            <param name=\"strokeWidth\">The amount by which to widen the geometry by stroking its outline. </param>\n            <param name=\"flatteningTolerance\">The maximum bounds on the distance between points in the polygonal approximation of the geometry. Smaller values produce more accurate results but cause slower execution.  </param>\n            <returns>When this method returns, contains the bounds of the widened geometry. You must allocate storage for this parameter. </returns>\n            <unmanaged>HRESULT ID2D1Geometry::GetWidenedBounds([None] float strokeWidth,[In, Optional] ID2D1StrokeStyle* strokeStyle,[In, Optional] const D2D1_MATRIX_3X2_F* worldTransform,[None] float flatteningTolerance,[Out] D2D1_RECT_F* bounds)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Geometry.GetWidenedBounds(System.Single,SharpDX.Direct2D1.StrokeStyle,System.Single)\">\n            <summary>\t\n            Gets the bounds of the geometry after it has been widened by the specified stroke width and style and transformed by the specified matrix.\t\n            </summary>\t\n            <param name=\"strokeWidth\">The amount by which to widen the geometry by stroking its outline. </param>\n            <param name=\"strokeStyle\">The style of the stroke that widens the geometry. </param>\n            <param name=\"flatteningTolerance\">The maximum bounds on the distance between points in the polygonal approximation of the geometry. Smaller values produce more accurate results but cause slower execution.  </param>\n            <returns>When this method returns, contains the bounds of the widened geometry. You must allocate storage for this parameter. </returns>\n            <unmanaged>HRESULT ID2D1Geometry::GetWidenedBounds([None] float strokeWidth,[In, Optional] ID2D1StrokeStyle* strokeStyle,[In, Optional] const D2D1_MATRIX_3X2_F* worldTransform,[None] float flatteningTolerance,[Out] D2D1_RECT_F* bounds)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Geometry.Outline(SharpDX.Direct2D1.GeometrySink)\">\n            <summary>\t\n            Computes the outline of the geometry and writes the result to an <see cref=\"T:SharpDX.Direct2D1.SimplifiedGeometrySink\"/>.\t\n            </summary>\t\n            <remarks>\t\n            The {{Outline}} method allows the caller to produce a geometry with an equivalent fill to the input geometry, with the following additional properties: The output geometry contains no transverse intersections; that is, segments may touch, but they never cross.The outermost figures in the output geometry are all oriented counterclockwise. The output geometry is fill-mode invariant; that is, the fill of the geometry does not depend on the choice of the fill mode. For more information about the fill mode, see <see cref=\"T:SharpDX.Direct2D1.FillMode\"/>.Additionally, the  {{Outline}} method can be useful in removing redundant portions of said geometries to simplify complex geometries. It can also be useful in combination with <see cref=\"T:SharpDX.Direct2D1.GeometryGroup\"/> to create unions among several geometries simultaneously.\t\n            </remarks>\t\n            <param name=\"geometrySink\">The <see cref=\"T:SharpDX.Direct2D1.SimplifiedGeometrySink\"/> to which the geometry's transformed outline is appended. </param>\n            <returns>If the method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code.</returns>\n            <unmanaged>HRESULT Outline([In, Optional] const D2D1_MATRIX_3X2_F* worldTransform,[None] FLOAT flatteningTolerance,[In] ID2D1SimplifiedGeometrySink* geometrySink)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Geometry.Outline(System.Single,SharpDX.Direct2D1.GeometrySink)\">\n            <summary>\t\n            Computes the outline of the geometry and writes the result to an <see cref=\"T:SharpDX.Direct2D1.SimplifiedGeometrySink\"/>.\t\n            </summary>\t\n            <remarks>\t\n            The {{Outline}} method allows the caller to produce a geometry with an equivalent fill to the input geometry, with the following additional properties: The output geometry contains no transverse intersections; that is, segments may touch, but they never cross.The outermost figures in the output geometry are all oriented counterclockwise. The output geometry is fill-mode invariant; that is, the fill of the geometry does not depend on the choice of the fill mode. For more information about the fill mode, see <see cref=\"T:SharpDX.Direct2D1.FillMode\"/>.Additionally, the  {{Outline}} method can be useful in removing redundant portions of said geometries to simplify complex geometries. It can also be useful in combination with <see cref=\"T:SharpDX.Direct2D1.GeometryGroup\"/> to create unions among several geometries simultaneously.\t\n            </remarks>\t\n            <param name=\"flatteningTolerance\">The maximum bounds on the distance between points in the polygonal approximation of the geometry. Smaller values produce more accurate results but cause slower execution. </param>\n            <param name=\"geometrySink\">The <see cref=\"T:SharpDX.Direct2D1.SimplifiedGeometrySink\"/> to which the geometry's transformed outline is appended. </param>\n            <returns>If the method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code.</returns>\n            <unmanaged>HRESULT Outline([In, Optional] const D2D1_MATRIX_3X2_F* worldTransform,[None] FLOAT flatteningTolerance,[In] ID2D1SimplifiedGeometrySink* geometrySink)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Geometry.Outline(System.Nullable{SharpDX.Matrix3x2},System.Single,SharpDX.Direct2D1.GeometrySink)\">\n            <summary>\t\n            Computes the outline of the geometry and writes the result to an <see cref=\"T:SharpDX.Direct2D1.SimplifiedGeometrySink\"/>.\t\n            </summary>\t\n            <remarks>\t\n            The {{Outline}} method allows the caller to produce a geometry with an equivalent fill to the input geometry, with the following additional properties: The output geometry contains no transverse intersections; that is, segments may touch, but they never cross.The outermost figures in the output geometry are all oriented counterclockwise. The output geometry is fill-mode invariant; that is, the fill of the geometry does not depend on the choice of the fill mode. For more information about the fill mode, see <see cref=\"T:SharpDX.Direct2D1.FillMode\"/>.Additionally, the  {{Outline}} method can be useful in removing redundant portions of said geometries to simplify complex geometries. It can also be useful in combination with <see cref=\"T:SharpDX.Direct2D1.GeometryGroup\"/> to create unions among several geometries simultaneously.\t\n            </remarks>\t\n            <param name=\"worldTransform\">The transform to apply to the geometry outline, or NULL.</param>\n            <param name=\"flatteningTolerance\">The maximum bounds on the distance between points in the polygonal approximation of the geometry. Smaller values produce more accurate results but cause slower execution. </param>\n            <param name=\"geometrySink\">The <see cref=\"T:SharpDX.Direct2D1.SimplifiedGeometrySink\"/> to which the geometry's transformed outline is appended. </param>\n            <returns>If the method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code.</returns>\n            <unmanaged>HRESULT Outline([In, Optional] const D2D1_MATRIX_3X2_F* worldTransform,[None] FLOAT flatteningTolerance,[In] ID2D1SimplifiedGeometrySink* geometrySink)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Geometry.Simplify(SharpDX.Direct2D1.GeometrySimplificationOption,SharpDX.Direct2D1.GeometrySink)\">\n            <summary>\t\n            Creates a simplified version of the geometry that contains only lines and (optionally) cubic Bezier curves and writes the result to an <see cref=\"T:SharpDX.Direct2D1.SimplifiedGeometrySink\"/>.\t\n            </summary>\t\n            <param name=\"simplificationOption\">A value that specifies whether the simplified geometry should contain curves.</param>\n            <param name=\"geometrySink\"> The <see cref=\"T:SharpDX.Direct2D1.SimplifiedGeometrySink\"/> to which the simplified geometry is appended. </param>\n            <returns>If the method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code.</returns>\n            <unmanaged>HRESULT Simplify([None] D2D1_GEOMETRY_SIMPLIFICATION_OPTION simplificationOption,[In, Optional] const D2D1_MATRIX_3X2_F* worldTransform,[None] FLOAT flatteningTolerance,[In] ID2D1SimplifiedGeometrySink* geometrySink)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Geometry.Simplify(SharpDX.Direct2D1.GeometrySimplificationOption,System.Single,SharpDX.Direct2D1.GeometrySink)\">\n            <summary>\t\n            Creates a simplified version of the geometry that contains only lines and (optionally) cubic Bezier curves and writes the result to an <see cref=\"T:SharpDX.Direct2D1.SimplifiedGeometrySink\"/>.\t\n            </summary>\t\n            <param name=\"simplificationOption\">A value that specifies whether the simplified geometry should contain curves.</param>\n            <param name=\"flatteningTolerance\">The maximum bounds on the distance between points in the polygonal approximation of the geometry. Smaller values produce more accurate results but cause slower execution. </param>\n            <param name=\"geometrySink\"> The <see cref=\"T:SharpDX.Direct2D1.SimplifiedGeometrySink\"/> to which the simplified geometry is appended. </param>\n            <returns>If the method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code.</returns>\n            <unmanaged>HRESULT Simplify([None] D2D1_GEOMETRY_SIMPLIFICATION_OPTION simplificationOption,[In, Optional] const D2D1_MATRIX_3X2_F* worldTransform,[None] FLOAT flatteningTolerance,[In] ID2D1SimplifiedGeometrySink* geometrySink)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Geometry.Simplify(SharpDX.Direct2D1.GeometrySimplificationOption,System.Nullable{SharpDX.Matrix3x2},System.Single,SharpDX.Direct2D1.GeometrySink)\">\n            <summary>\t\n            Creates a simplified version of the geometry that contains only lines and (optionally) cubic Bezier curves and writes the result to an <see cref=\"T:SharpDX.Direct2D1.SimplifiedGeometrySink\"/>.\t\n            </summary>\t\n            <param name=\"simplificationOption\">A value that specifies whether the simplified geometry should contain curves.</param>\n            <param name=\"worldTransform\">The transform to apply to the simplified geometry, or NULL.</param>\n            <param name=\"flatteningTolerance\">The maximum bounds on the distance between points in the polygonal approximation of the geometry. Smaller values produce more accurate results but cause slower execution. </param>\n            <param name=\"geometrySink\"> The <see cref=\"T:SharpDX.Direct2D1.SimplifiedGeometrySink\"/> to which the simplified geometry is appended. </param>\n            <returns>If the method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code.</returns>\n            <unmanaged>HRESULT Simplify([None] D2D1_GEOMETRY_SIMPLIFICATION_OPTION simplificationOption,[In, Optional] const D2D1_MATRIX_3X2_F* worldTransform,[None] FLOAT flatteningTolerance,[In] ID2D1SimplifiedGeometrySink* geometrySink)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Geometry.StrokeContainsPoint(SharpDX.DrawingPoint,System.Single)\">\n            <summary>\t\n            Determines whether the geometry's stroke contains the specified point given the specified stroke thickness, style, and transform. \t\n            </summary>\t\n            <param name=\"point\">The point to test for containment. </param>\n            <param name=\"strokeWidth\">The thickness of the stroke to apply. </param>\n            <returns>When this method returns, contains a boolean value set to true if the geometry's stroke contains the specified point; otherwise, false. You must allocate storage for this parameter. </returns>\n            <unmanaged>HRESULT ID2D1Geometry::StrokeContainsPoint([None] D2D1_POINT_2F point,[None] float strokeWidth,[In, Optional] ID2D1StrokeStyle* strokeStyle,[In, Optional] const D2D1_MATRIX_3X2_F* worldTransform,[None] float flatteningTolerance,[Out] BOOL* contains)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Geometry.StrokeContainsPoint(SharpDX.DrawingPointF,System.Single)\">\n            <summary>\t\n            Determines whether the geometry's stroke contains the specified point given the specified stroke thickness, style, and transform. \t\n            </summary>\t\n            <param name=\"point\">The point to test for containment. </param>\n            <param name=\"strokeWidth\">The thickness of the stroke to apply. </param>\n            <returns>When this method returns, contains a boolean value set to true if the geometry's stroke contains the specified point; otherwise, false. You must allocate storage for this parameter. </returns>\n            <unmanaged>HRESULT ID2D1Geometry::StrokeContainsPoint([None] D2D1_POINT_2F point,[None] float strokeWidth,[In, Optional] ID2D1StrokeStyle* strokeStyle,[In, Optional] const D2D1_MATRIX_3X2_F* worldTransform,[None] float flatteningTolerance,[Out] BOOL* contains)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Geometry.StrokeContainsPoint(SharpDX.DrawingPoint,System.Single,SharpDX.Direct2D1.StrokeStyle)\">\n            <summary>\t\n            Determines whether the geometry's stroke contains the specified point given the specified stroke thickness, style, and transform. \t\n            </summary>\t\n            <param name=\"point\">The point to test for containment. </param>\n            <param name=\"strokeWidth\">The thickness of the stroke to apply. </param>\n            <param name=\"strokeStyle\">The style of stroke to apply. </param>\n            <returns>When this method returns, contains a boolean value set to true if the geometry's stroke contains the specified point; otherwise, false. You must allocate storage for this parameter. </returns>\n            <unmanaged>HRESULT ID2D1Geometry::StrokeContainsPoint([None] D2D1_POINT_2F point,[None] float strokeWidth,[In, Optional] ID2D1StrokeStyle* strokeStyle,[In, Optional] const D2D1_MATRIX_3X2_F* worldTransform,[None] float flatteningTolerance,[Out] BOOL* contains)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Geometry.StrokeContainsPoint(SharpDX.DrawingPointF,System.Single,SharpDX.Direct2D1.StrokeStyle)\">\n            <summary>\t\n            Determines whether the geometry's stroke contains the specified point given the specified stroke thickness, style, and transform. \t\n            </summary>\t\n            <param name=\"point\">The point to test for containment. </param>\n            <param name=\"strokeWidth\">The thickness of the stroke to apply. </param>\n            <param name=\"strokeStyle\">The style of stroke to apply. </param>\n            <returns>When this method returns, contains a boolean value set to true if the geometry's stroke contains the specified point; otherwise, false. You must allocate storage for this parameter. </returns>\n            <unmanaged>HRESULT ID2D1Geometry::StrokeContainsPoint([None] D2D1_POINT_2F point,[None] float strokeWidth,[In, Optional] ID2D1StrokeStyle* strokeStyle,[In, Optional] const D2D1_MATRIX_3X2_F* worldTransform,[None] float flatteningTolerance,[Out] BOOL* contains)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Geometry.StrokeContainsPoint(SharpDX.DrawingPoint,System.Single,SharpDX.Direct2D1.StrokeStyle,SharpDX.Matrix3x2)\">\n            <summary>\t\n            Determines whether the geometry's stroke contains the specified point given the specified stroke thickness, style, and transform. \t\n            </summary>\t\n            <param name=\"point\">The point to test for containment. </param>\n            <param name=\"strokeWidth\">The thickness of the stroke to apply. </param>\n            <param name=\"strokeStyle\">The style of stroke to apply. </param>\n            <param name=\"transform\">The transform to apply to the stroked geometry.  </param>\n            <returns>When this method returns, contains a boolean value set to true if the geometry's stroke contains the specified point; otherwise, false. You must allocate storage for this parameter. </returns>\n            <unmanaged>HRESULT ID2D1Geometry::StrokeContainsPoint([None] D2D1_POINT_2F point,[None] float strokeWidth,[In, Optional] ID2D1StrokeStyle* strokeStyle,[In, Optional] const D2D1_MATRIX_3X2_F* worldTransform,[None] float flatteningTolerance,[Out] BOOL* contains)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Geometry.StrokeContainsPoint(SharpDX.DrawingPointF,System.Single,SharpDX.Direct2D1.StrokeStyle,SharpDX.Matrix3x2)\">\n            <summary>\t\n            Determines whether the geometry's stroke contains the specified point given the specified stroke thickness, style, and transform. \t\n            </summary>\t\n            <param name=\"point\">The point to test for containment. </param>\n            <param name=\"strokeWidth\">The thickness of the stroke to apply. </param>\n            <param name=\"strokeStyle\">The style of stroke to apply. </param>\n            <param name=\"transform\">The transform to apply to the stroked geometry.  </param>\n            <returns>When this method returns, contains a boolean value set to true if the geometry's stroke contains the specified point; otherwise, false. You must allocate storage for this parameter. </returns>\n            <unmanaged>HRESULT ID2D1Geometry::StrokeContainsPoint([None] D2D1_POINT_2F point,[None] float strokeWidth,[In, Optional] ID2D1StrokeStyle* strokeStyle,[In, Optional] const D2D1_MATRIX_3X2_F* worldTransform,[None] float flatteningTolerance,[Out] BOOL* contains)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Geometry.StrokeContainsPoint(SharpDX.DrawingPoint,System.Single,SharpDX.Direct2D1.StrokeStyle,SharpDX.Matrix3x2,System.Single)\">\n            <summary>\t\n            Determines whether the geometry's stroke contains the specified point given the specified stroke thickness, style, and transform. \t\n            </summary>\t\n            <param name=\"point\">The point to test for containment. </param>\n            <param name=\"strokeWidth\">The thickness of the stroke to apply. </param>\n            <param name=\"strokeStyle\">The style of stroke to apply. </param>\n            <param name=\"transform\">The transform to apply to the stroked geometry.  </param>\n            <param name=\"flatteningTolerance\">The numeric accuracy with which the precise geometric path and path intersection is calculated. Points missing the stroke by less than the tolerance are still considered inside.  Smaller values produce more accurate results but cause slower execution. </param>\n            <returns>When this method returns, contains a boolean value set to true if the geometry's stroke contains the specified point; otherwise, false. You must allocate storage for this parameter. </returns>\n            <unmanaged>HRESULT ID2D1Geometry::StrokeContainsPoint([None] D2D1_POINT_2F point,[None] float strokeWidth,[In, Optional] ID2D1StrokeStyle* strokeStyle,[In, Optional] const D2D1_MATRIX_3X2_F* worldTransform,[None] float flatteningTolerance,[Out] BOOL* contains)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Geometry.Tessellate(SharpDX.Direct2D1.TessellationSink)\">\n            <summary>\t\n            Creates a set of clockwise-wound triangles that cover the geometry after it has been transformed using the specified matrix and flattened using the specified tolerance\t\n            </summary>\t\n            <param name=\"tessellationSink\">The <see cref=\"T:SharpDX.Direct2D1.TessellationSink\" /> to which the tessellated is appended.</param>\n            <returns>If the method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code.</returns>\n            <unmanaged>HRESULT Tessellate([In, Optional] const D2D1_MATRIX_3X2_F* worldTransform,[None] FLOAT flatteningTolerance,[In] ID2D1TessellationSink* tessellationSink)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Geometry.Tessellate(System.Single,SharpDX.Direct2D1.TessellationSink)\">\n            <summary>\t\n            Creates a set of clockwise-wound triangles that cover the geometry after it has been transformed using the specified matrix and flattened using the specified tolerance\t\n            </summary>\t\n            <param name=\"flatteningTolerance\">The maximum bounds on the distance between points in the polygonal approximation of the geometry. Smaller values produce more accurate results but cause slower execution. </param>\n            <param name=\"tessellationSink\">The <see cref=\"T:SharpDX.Direct2D1.TessellationSink\"/> to which the tessellated is appended.</param>\n            <returns>If the method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code.</returns>\n            <unmanaged>HRESULT Tessellate([In, Optional] const D2D1_MATRIX_3X2_F* worldTransform,[None] FLOAT flatteningTolerance,[In] ID2D1TessellationSink* tessellationSink)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Geometry.Tessellate(System.Nullable{SharpDX.Matrix3x2},System.Single,SharpDX.Direct2D1.TessellationSink)\">\n            <summary>\t\n            Creates a set of clockwise-wound triangles that cover the geometry after it has been transformed using the specified matrix and flattened using the specified tolerance\t\n            </summary>\t\n            <param name=\"worldTransform\">The transform to apply to this geometry, or NULL.</param>\n            <param name=\"flatteningTolerance\">The maximum bounds on the distance between points in the polygonal approximation of the geometry. Smaller values produce more accurate results but cause slower execution. </param>\n            <param name=\"tessellationSink\">The <see cref=\"T:SharpDX.Direct2D1.TessellationSink\"/> to which the tessellated is appended.</param>\n            <returns>If the method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code.</returns>\n            <unmanaged>HRESULT Tessellate([In, Optional] const D2D1_MATRIX_3X2_F* worldTransform,[None] FLOAT flatteningTolerance,[In] ID2D1TessellationSink* tessellationSink)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Geometry.Widen(System.Single,SharpDX.Direct2D1.GeometrySink)\">\n            <summary>\t\n            Widens the geometry by the specified stroke and writes the result to an <see cref=\"T:SharpDX.Direct2D1.SimplifiedGeometrySink\"/> after it has been transformed by the specified matrix and flattened using the specified tolerance.\t\n            </summary>\t\n            <param name=\"strokeWidth\">The amount by which to widen the geometry.</param>\n            <param name=\"geometrySink\">The <see cref=\"T:SharpDX.Direct2D1.SimplifiedGeometrySink\"/> to which the widened geometry is appended.</param>\n            <returns>If the method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code.</returns>\n            <unmanaged>HRESULT Widen([None] FLOAT strokeWidth,[In, Optional] ID2D1StrokeStyle* strokeStyle,[In, Optional] const D2D1_MATRIX_3X2_F* worldTransform,[None] FLOAT flatteningTolerance,[In] ID2D1SimplifiedGeometrySink* geometrySink)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Geometry.Widen(System.Single,System.Single,SharpDX.Direct2D1.GeometrySink)\">\n            <summary>\t\n            Widens the geometry by the specified stroke and writes the result to an <see cref=\"T:SharpDX.Direct2D1.SimplifiedGeometrySink\"/> after it has been transformed by the specified matrix and flattened using the specified tolerance.\t\n            </summary>\t\n            <param name=\"strokeWidth\">The amount by which to widen the geometry.</param>\n            <param name=\"flatteningTolerance\">The maximum bounds on the distance between points in the polygonal approximation of the geometry. Smaller values produce more accurate results but cause slower execution.</param>\n            <param name=\"geometrySink\">The <see cref=\"T:SharpDX.Direct2D1.SimplifiedGeometrySink\"/> to which the widened geometry is appended.</param>\n            <returns>If the method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code.</returns>\n            <unmanaged>HRESULT Widen([None] FLOAT strokeWidth,[In, Optional] ID2D1StrokeStyle* strokeStyle,[In, Optional] const D2D1_MATRIX_3X2_F* worldTransform,[None] FLOAT flatteningTolerance,[In] ID2D1SimplifiedGeometrySink* geometrySink)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Geometry.Widen(System.Single,SharpDX.Direct2D1.StrokeStyle,System.Single,SharpDX.Direct2D1.GeometrySink)\">\n            <summary>\t\n            Widens the geometry by the specified stroke and writes the result to an <see cref=\"T:SharpDX.Direct2D1.SimplifiedGeometrySink\"/> after it has been transformed by the specified matrix and flattened using the specified tolerance.\t\n            </summary>\t\n            <param name=\"strokeWidth\">The amount by which to widen the geometry.</param>\n            <param name=\"strokeStyle\">The style of stroke to apply to the geometry, or NULL.</param>\n            <param name=\"flatteningTolerance\">The maximum bounds on the distance between points in the polygonal approximation of the geometry. Smaller values produce more accurate results but cause slower execution.</param>\n            <param name=\"geometrySink\">The <see cref=\"T:SharpDX.Direct2D1.SimplifiedGeometrySink\"/> to which the widened geometry is appended.</param>\n            <returns>If the method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code.</returns>\n            <unmanaged>HRESULT Widen([None] FLOAT strokeWidth,[In, Optional] ID2D1StrokeStyle* strokeStyle,[In, Optional] const D2D1_MATRIX_3X2_F* worldTransform,[None] FLOAT flatteningTolerance,[In] ID2D1SimplifiedGeometrySink* geometrySink)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Geometry.Widen(System.Single,SharpDX.Direct2D1.StrokeStyle,System.Nullable{SharpDX.Matrix3x2},System.Single,SharpDX.Direct2D1.GeometrySink)\">\n            <summary>\t\n            Widens the geometry by the specified stroke and writes the result to an <see cref=\"T:SharpDX.Direct2D1.SimplifiedGeometrySink\"/> after it has been transformed by the specified matrix and flattened using the specified tolerance.\t\n            </summary>\t\n            <param name=\"strokeWidth\">The amount by which to widen the geometry.</param>\n            <param name=\"strokeStyle\">The style of stroke to apply to the geometry, or NULL.</param>\n            <param name=\"worldTransform\">The transform to apply to the geometry after widening it, or NULL.</param>\n            <param name=\"flatteningTolerance\">The maximum bounds on the distance between points in the polygonal approximation of the geometry. Smaller values produce more accurate results but cause slower execution.</param>\n            <param name=\"geometrySink\">The <see cref=\"T:SharpDX.Direct2D1.SimplifiedGeometrySink\"/> to which the widened geometry is appended.</param>\n            <returns>If the method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code.</returns>\n            <unmanaged>HRESULT Widen([None] FLOAT strokeWidth,[In, Optional] ID2D1StrokeStyle* strokeStyle,[In, Optional] const D2D1_MATRIX_3X2_F* worldTransform,[None] FLOAT flatteningTolerance,[In] ID2D1SimplifiedGeometrySink* geometrySink)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct2D1.Geometry.FlatteningTolerance\">\n            <summary>\n            Get or set the default flattening tolerance used for all methods that are not explicitly using it. Default is set to 0.25f.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.EllipseGeometry.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct2D1.EllipseGeometry\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.EllipseGeometry.op_Explicit(System.IntPtr)~SharpDX.Direct2D1.EllipseGeometry\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct2D1.EllipseGeometry\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.EllipseGeometry.GetEllipse(SharpDX.Direct2D1.Ellipse@)\">\n            <summary>\t\n            <p>Gets the <strong><see cref=\"T:SharpDX.Direct2D1.Ellipse\"/></strong> structure that describes this ellipse geometry. </p>\t\n            </summary>\t\n            <param name=\"ellipse\">No documentation.</param>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1EllipseGeometry::GetEllipse']/*\"/>\t\n            <msdn-id>dd371243</msdn-id>\t\n            <unmanaged>void ID2D1EllipseGeometry::GetEllipse([Out] D2D1_ELLIPSE* ellipse)</unmanaged>\t\n            <unmanaged-short>ID2D1EllipseGeometry::GetEllipse</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.EllipseGeometry.#ctor(SharpDX.Direct2D1.Factory,SharpDX.Direct2D1.Ellipse)\">\n            <summary>\t\n            Creates an <see cref=\"T:SharpDX.Direct2D1.EllipseGeometry\"/>. \t\n            </summary>\t\n            <param name=\"factory\">an instance of <see cref=\"T:SharpDX.Direct2D1.Factory\"/></param>\n            <param name=\"ellipse\">A value that describes the center point, x-radius, and y-radius of the ellipse geometry.</param>\n        </member>\n        <member name=\"P:SharpDX.Direct2D1.EllipseGeometry.Ellipse\">\n            <summary>\t\n            <p>Gets the <strong><see cref=\"T:SharpDX.Direct2D1.Ellipse\"/></strong> structure that describes this ellipse geometry. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1EllipseGeometry::GetEllipse']/*\"/>\t\n            <msdn-id>dd371243</msdn-id>\t\n            <unmanaged>GetEllipse</unmanaged>\t\n            <unmanaged-short>GetEllipse</unmanaged-short>\t\n            <unmanaged>void ID2D1EllipseGeometry::GetEllipse([Out] D2D1_ELLIPSE* ellipse)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.Factory\">\n            <summary>\t\n            <p>Creates Direct2D resources.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The <strong><see cref=\"T:SharpDX.Direct2D1.Factory\"/></strong> interface is the starting point for using Direct2D; it's what you use to create other Direct2D resources that you can use to draw or describe shapes.   </p><p>A factory defines a set of Create<em>Resource</em> methods that can produce the following drawing resources:</p><p> </p><ul> <li>Render targets: objects that render drawing commands.</li> <li>Drawing state blocks: objects that store drawing state information, such as the current transformation and antialiasing mode.</li> <li>Geometries: objects that represent simple and potentially complex shapes.</li> </ul><p>To create an <strong><see cref=\"T:SharpDX.Direct2D1.Factory\"/></strong>, you use one of the <strong>CreateFactory</strong> methods. You should retain the <strong><see cref=\"T:SharpDX.Direct2D1.Factory\"/></strong> instance for as long as you use Direct2D resources; in general, you shouldn't need to recreate it when the application is running. For more information about Direct2D resources, see the Resources Overview.</p>Singlethreaded and Multithreaded Factories<p>When you create a factory, you can specify whether it is multithreaded or singlethreaded. A singlethreaded factory provides no serialization against any other single threaded instance within Direct2D, so, this mechanism provides a very large degree of scaling on the CPU.</p><p>You can also create a multithreaded factory instance. In this case, the factory and all derived objects can be used from any thread and each render target can be rendered to independently. Direct2D serializes calls to these objects, so a single multithreaded Direct2D instance won't scale as well on the CPU as many single threaded instances. However, the resources can be shared within the multithreaded instance.</p><p>Note that the qualifier \"On the CPU\": GPUs generally take advantage of fine-grained parallelism more so than CPUs. For example, multithreaded calls from the CPU might still end up being serialized when being sent to the GPU, however, a whole bank of pixel and vertex shaders will run in parallel to perform the rendering. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1Factory']/*\"/>\t\n            <msdn-id>dd371246</msdn-id>\t\n            <unmanaged>ID2D1Factory</unmanaged>\t\n            <unmanaged-short>ID2D1Factory</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Factory.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct2D1.Factory\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Factory.op_Explicit(System.IntPtr)~SharpDX.Direct2D1.Factory\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct2D1.Factory\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Factory.ReloadSystemMetrics\">\n            <summary>\t\n            <p>Forces the factory to refresh any system defaults that it might have changed since factory creation.</p>\t\n            </summary>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>You should call this method before calling the <strong>GetDesktopDpi</strong> method, to ensure that the system DPI is current.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1Factory::ReloadSystemMetrics']/*\"/>\t\n            <msdn-id>dd371319</msdn-id>\t\n            <unmanaged>HRESULT ID2D1Factory::ReloadSystemMetrics()</unmanaged>\t\n            <unmanaged-short>ID2D1Factory::ReloadSystemMetrics</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Factory.GetDesktopDpi(System.Single@,System.Single@)\">\n            <summary>\t\n            <p>Retrieves the current desktop dots per inch (DPI). To refresh this value, call <strong>ReloadSystemMetrics</strong>.</p>\t\n            </summary>\t\n            <param name=\"dpiX\">No documentation.</param>\t\n            <param name=\"dpiY\">No documentation.</param>\t\n            <remarks>\t\n            <p>Use this method to obtain the system DPI when setting physical pixel values, such as when you specify the size of a window.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1Factory::GetDesktopDpi']/*\"/>\t\n            <msdn-id>dd371316</msdn-id>\t\n            <unmanaged>void ID2D1Factory::GetDesktopDpi([Out] float* dpiX,[Out] float* dpiY)</unmanaged>\t\n            <unmanaged-short>ID2D1Factory::GetDesktopDpi</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Factory.CreateRectangleGeometry(SharpDX.RectangleF,SharpDX.Direct2D1.RectangleGeometry)\">\n            <summary>\t\n            <p> Creates an <strong><see cref=\"T:SharpDX.Direct2D1.RectangleGeometry\"/></strong>. </p>\t\n            </summary>\t\n            <param name=\"rectangle\">No documentation.</param>\t\n            <param name=\"rectangleGeometry\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1Factory::CreateRectangleGeometry']/*\"/>\t\n            <msdn-id>dd371286</msdn-id>\t\n            <unmanaged>HRESULT ID2D1Factory::CreateRectangleGeometry([In] const D2D_RECT_F* rectangle,[Out, Fast] ID2D1RectangleGeometry** rectangleGeometry)</unmanaged>\t\n            <unmanaged-short>ID2D1Factory::CreateRectangleGeometry</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Factory.CreateRoundedRectangleGeometry(SharpDX.Direct2D1.RoundedRectangle@,SharpDX.Direct2D1.RoundedRectangleGeometry)\">\n            <summary>\t\n            <p> Creates an <strong><see cref=\"T:SharpDX.Direct2D1.RoundedRectangleGeometry\"/></strong>. </p>\t\n            </summary>\t\n            <param name=\"roundedRectangle\">No documentation.</param>\t\n            <param name=\"roundedRectangleGeometry\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1Factory::CreateRoundedRectangleGeometry']/*\"/>\t\n            <msdn-id>dd371292</msdn-id>\t\n            <unmanaged>HRESULT ID2D1Factory::CreateRoundedRectangleGeometry([In] const D2D1_ROUNDED_RECT* roundedRectangle,[Out, Fast] ID2D1RoundedRectangleGeometry** roundedRectangleGeometry)</unmanaged>\t\n            <unmanaged-short>ID2D1Factory::CreateRoundedRectangleGeometry</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Factory.CreateEllipseGeometry(SharpDX.Direct2D1.Ellipse,SharpDX.Direct2D1.EllipseGeometry)\">\n            <summary>\t\n            <p>Creates an <strong><see cref=\"T:SharpDX.Direct2D1.EllipseGeometry\"/></strong>. </p>\t\n            </summary>\t\n            <param name=\"ellipse\">No documentation.</param>\t\n            <param name=\"ellipseGeometry\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1Factory::CreateEllipseGeometry']/*\"/>\t\n            <msdn-id>dd371265</msdn-id>\t\n            <unmanaged>HRESULT ID2D1Factory::CreateEllipseGeometry([In] const D2D1_ELLIPSE* ellipse,[Out, Fast] ID2D1EllipseGeometry** ellipseGeometry)</unmanaged>\t\n            <unmanaged-short>ID2D1Factory::CreateEllipseGeometry</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Factory.CreateGeometryGroup(SharpDX.Direct2D1.FillMode,SharpDX.Direct2D1.Geometry[],System.Int32,SharpDX.Direct2D1.GeometryGroup)\">\n            <summary>\t\n            <p>Creates an <strong><see cref=\"T:SharpDX.Direct2D1.GeometryGroup\"/></strong>, which is an object that holds other geometries.</p>\t\n            </summary>\t\n            <param name=\"fillMode\">No documentation.</param>\t\n            <param name=\"geometries\">No documentation.</param>\t\n            <param name=\"geometriesCount\">No documentation.</param>\t\n            <param name=\"geometryGroup\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>Geometry groups are a convenient way to group several geometries simultaneously so all figures of several distinct geometries are concatenated into one. To create a  <strong><see cref=\"T:SharpDX.Direct2D1.GeometryGroup\"/></strong> object, call  the <strong>CreateGeometryGroup</strong> method on the <strong><see cref=\"T:SharpDX.Direct2D1.Factory\"/></strong> object, passing in the <em>fillMode</em> with possible values of   <strong><see cref=\"F:SharpDX.Direct2D1.FillMode.Alternate\"/></strong> (alternate) and <strong><see cref=\"F:SharpDX.Direct2D1.FillMode.Winding\"/></strong>, an array of geometry objects to add to the geometry group, and the number of elements in this array. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1Factory::CreateGeometryGroup']/*\"/>\t\n            <msdn-id>dd371273</msdn-id>\t\n            <unmanaged>HRESULT ID2D1Factory::CreateGeometryGroup([In] D2D1_FILL_MODE fillMode,[In, Buffer] ID2D1Geometry** geometries,[In] unsigned int geometriesCount,[Out, Fast] ID2D1GeometryGroup** geometryGroup)</unmanaged>\t\n            <unmanaged-short>ID2D1Factory::CreateGeometryGroup</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Factory.CreateGeometryGroup(SharpDX.Direct2D1.FillMode,SharpDX.ComArray{SharpDX.Direct2D1.Geometry},System.Int32,SharpDX.Direct2D1.GeometryGroup)\">\n            <summary>\t\n            <p>Creates an <strong><see cref=\"T:SharpDX.Direct2D1.GeometryGroup\"/></strong>, which is an object that holds other geometries.</p>\t\n            </summary>\t\n            <param name=\"fillMode\">No documentation.</param>\t\n            <param name=\"geometries\">No documentation.</param>\t\n            <param name=\"geometriesCount\">No documentation.</param>\t\n            <param name=\"geometryGroup\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>Geometry groups are a convenient way to group several geometries simultaneously so all figures of several distinct geometries are concatenated into one. To create a  <strong><see cref=\"T:SharpDX.Direct2D1.GeometryGroup\"/></strong> object, call  the <strong>CreateGeometryGroup</strong> method on the <strong><see cref=\"T:SharpDX.Direct2D1.Factory\"/></strong> object, passing in the <em>fillMode</em> with possible values of   <strong><see cref=\"F:SharpDX.Direct2D1.FillMode.Alternate\"/></strong> (alternate) and <strong><see cref=\"F:SharpDX.Direct2D1.FillMode.Winding\"/></strong>, an array of geometry objects to add to the geometry group, and the number of elements in this array. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1Factory::CreateGeometryGroup']/*\"/>\t\n            <msdn-id>dd371273</msdn-id>\t\n            <unmanaged>HRESULT ID2D1Factory::CreateGeometryGroup([In] D2D1_FILL_MODE fillMode,[In, Buffer] ID2D1Geometry** geometries,[In] unsigned int geometriesCount,[Out, Fast] ID2D1GeometryGroup** geometryGroup)</unmanaged>\t\n            <unmanaged-short>ID2D1Factory::CreateGeometryGroup</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Factory.CreateTransformedGeometry(SharpDX.Direct2D1.Geometry,SharpDX.Matrix3x2@,SharpDX.Direct2D1.TransformedGeometry)\">\n            <summary>\t\n            <p>Transforms the specified geometry and stores the result as an <strong><see cref=\"T:SharpDX.Direct2D1.TransformedGeometry\"/></strong> object.  </p>\t\n            </summary>\t\n            <param name=\"sourceGeometry\">No documentation.</param>\t\n            <param name=\"transform\">No documentation.</param>\t\n            <param name=\"transformedGeometry\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>Like other resources, a transformed geometry the inherits the resource space and threading policy of the factory that created it. This object is immutable.</p><p>When stroking a transformed geometry with the <strong>DrawGeometry</strong> method, the stroke width is not affected by the transform applied to the geometry.  The stroke width is only affected by the world transform.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1Factory::CreateTransformedGeometry']/*\"/>\t\n            <msdn-id>dd371304</msdn-id>\t\n            <unmanaged>HRESULT ID2D1Factory::CreateTransformedGeometry([In] ID2D1Geometry* sourceGeometry,[In] const D2D_MATRIX_3X2_F* transform,[Out, Fast] ID2D1TransformedGeometry** transformedGeometry)</unmanaged>\t\n            <unmanaged-short>ID2D1Factory::CreateTransformedGeometry</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Factory.CreatePathGeometry(SharpDX.Direct2D1.PathGeometry)\">\n            <summary>\t\n            <p>Creates an empty <strong><see cref=\"T:SharpDX.Direct2D1.PathGeometry\"/></strong>.</p>\t\n            </summary>\t\n            <param name=\"athGeometryRef\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1Factory::CreatePathGeometry']/*\"/>\t\n            <msdn-id>dd371282</msdn-id>\t\n            <unmanaged>HRESULT ID2D1Factory::CreatePathGeometry([Out, Fast] ID2D1PathGeometry** pathGeometry)</unmanaged>\t\n            <unmanaged-short>ID2D1Factory::CreatePathGeometry</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Factory.CreateStrokeStyle(SharpDX.Direct2D1.StrokeStyleProperties@,System.Single[],System.Int32,SharpDX.Direct2D1.StrokeStyle)\">\n            <summary>\t\n            Creates an <strong><see cref=\"T:SharpDX.Direct2D1.StrokeStyle\"/></strong> that describes start cap, dash pattern, and other features of a stroke.Overload list\t\n            </summary>\t\n            <param name=\"strokeStyleProperties\">No documentation.</param>\t\n            <param name=\"dashes\">No documentation.</param>\t\n            <param name=\"dashesCount\">No documentation.</param>\t\n            <param name=\"strokeStyle\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1Factory::CreateStrokeStyle']/*\"/>\t\n            <msdn-id>dd742729</msdn-id>\t\n            <unmanaged>HRESULT ID2D1Factory::CreateStrokeStyle([In] const D2D1_STROKE_STYLE_PROPERTIES* strokeStyleProperties,[In, Buffer, Optional] const float* dashes,[In] unsigned int dashesCount,[Out, Fast] ID2D1StrokeStyle** strokeStyle)</unmanaged>\t\n            <unmanaged-short>ID2D1Factory::CreateStrokeStyle</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Factory.CreateDrawingStateBlock(System.Nullable{SharpDX.Direct2D1.DrawingStateDescription},SharpDX.DirectWrite.RenderingParams,SharpDX.Direct2D1.DrawingStateBlock)\">\n            <summary>\t\n            <p>Creates an <strong><see cref=\"T:SharpDX.Direct2D1.DrawingStateBlock\"/></strong> that can be used with the <strong>SaveDrawingState</strong> and <strong>RestoreDrawingState</strong> methods of a render target.</p>\t\n            </summary>\t\n            <param name=\"drawingStateDescription\">No documentation.</param>\t\n            <param name=\"textRenderingParams\">No documentation.</param>\t\n            <param name=\"drawingStateBlock\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1Factory::CreateDrawingStateBlock']/*\"/>\t\n            <msdn-id>dd371257</msdn-id>\t\n            <unmanaged>HRESULT ID2D1Factory::CreateDrawingStateBlock([In, Optional] const D2D1_DRAWING_STATE_DESCRIPTION* drawingStateDescription,[In, Optional] IDWriteRenderingParams* textRenderingParams,[Out, Fast] ID2D1DrawingStateBlock** drawingStateBlock)</unmanaged>\t\n            <unmanaged-short>ID2D1Factory::CreateDrawingStateBlock</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Factory.CreateWicBitmapRenderTarget(SharpDX.WIC.Bitmap,SharpDX.Direct2D1.RenderTargetProperties@,SharpDX.Direct2D1.RenderTarget)\">\n            <summary>\t\n            <p>Creates a render target that renders to a Microsoft Windows Imaging Component (WIC)  bitmap.</p>\t\n            </summary>\t\n            <param name=\"target\"><dd>  <p>The bitmap that receives the rendering output of the render target.</p> </dd></param>\t\n            <param name=\"renderTargetProperties\"><dd>  <p>The rendering mode, pixel format, remoting options, DPI information, and the minimum DirectX support required for hardware rendering. For information about supported pixel formats, see  Supported Pixel  Formats and Alpha Modes.</p> </dd></param>\t\n            <param name=\"renderTarget\"><dd>  <p>When this method returns, contains the address of the reference to the  <strong><see cref=\"T:SharpDX.Direct2D1.RenderTarget\"/></strong> object created by this method. </p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>Your application should create render targets once and hold onto them for the life of the application or until the <strong><see cref=\"F:SharpDX.Direct2D1.ResultCode.RecreateTarget\"/></strong> error is received. When you receive this error, you need to recreate the render target (and any resources it created).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1Factory::CreateWicBitmapRenderTarget']/*\"/>\t\n            <msdn-id>dd371313</msdn-id>\t\n            <unmanaged>HRESULT ID2D1Factory::CreateWicBitmapRenderTarget([In] IWICBitmap* target,[In] const D2D1_RENDER_TARGET_PROPERTIES* renderTargetProperties,[Out, Fast] ID2D1RenderTarget** renderTarget)</unmanaged>\t\n            <unmanaged-short>ID2D1Factory::CreateWicBitmapRenderTarget</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Factory.CreateHwndRenderTarget(SharpDX.Direct2D1.RenderTargetProperties@,SharpDX.Direct2D1.HwndRenderTargetProperties,SharpDX.Direct2D1.WindowRenderTarget)\">\n            <summary>\t\n            <p>Creates an <strong><see cref=\"T:SharpDX.Direct2D1.WindowRenderTarget\"/></strong>, a render target that renders to a window.</p>\t\n            </summary>\t\n            <param name=\"renderTargetProperties\">No documentation.</param>\t\n            <param name=\"hwndRenderTargetProperties\">No documentation.</param>\t\n            <param name=\"hwndRenderTarget\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>When you create a render target and hardware acceleration is available, you allocate resources on the computer's GPU. By creating a render target once and retaining it as long as possible, you gain performance benefits. Your application should create render targets once and hold onto them for the life of the application or until the <strong><see cref=\"F:SharpDX.Direct2D1.ResultCode.RecreateTarget\"/></strong> error is received. When you receive this error, you need to recreate the render target (and any resources it created).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1Factory::CreateHwndRenderTarget']/*\"/>\t\n            <msdn-id>dd371275</msdn-id>\t\n            <unmanaged>HRESULT ID2D1Factory::CreateHwndRenderTarget([In] const D2D1_RENDER_TARGET_PROPERTIES* renderTargetProperties,[In] const D2D1_HWND_RENDER_TARGET_PROPERTIES* hwndRenderTargetProperties,[Out, Fast] ID2D1HwndRenderTarget** hwndRenderTarget)</unmanaged>\t\n            <unmanaged-short>ID2D1Factory::CreateHwndRenderTarget</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Factory.CreateDxgiSurfaceRenderTarget(SharpDX.DXGI.Surface,SharpDX.Direct2D1.RenderTargetProperties@,SharpDX.Direct2D1.RenderTarget)\">\n            <summary>\t\n            <p>Creates a render target that draws to a DirectX Graphics Infrastructure (DXGI) surface.  </p>\t\n            </summary>\t\n            <param name=\"dxgiSurface\"><dd>  <p>The <see cref=\"T:SharpDX.DXGI.Surface\"/> to which the render target will draw.</p> </dd></param>\t\n            <param name=\"renderTargetProperties\"><dd>  <p>The rendering mode, pixel format, remoting options, DPI information, and the minimum DirectX support required for hardware rendering. For information about supported pixel formats, see  Supported Pixel  Formats and Alpha Modes.</p> </dd></param>\t\n            <param name=\"renderTarget\"><dd>  <p>When this method returns, contains the address of the reference to the <strong><see cref=\"T:SharpDX.Direct2D1.RenderTarget\"/></strong> object created by this method.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>To write to a Direct3D surface, you obtain an <see cref=\"T:SharpDX.DXGI.Surface\"/> and pass it to the <strong>CreateDxgiSurfaceRenderTarget</strong> method to create a DXGI surface render target; you can then use the DXGI surface render target to draw 2-D content to the DXGI surface.  </p><p>A DXGI surface render target is a type of <strong><see cref=\"T:SharpDX.Direct2D1.RenderTarget\"/></strong>. Like other Direct2D render targets, you can use it to create resources and issue drawing commands. </p><p>The DXGI surface render target and the DXGI surface must use the same DXGI format. If you specify the DXGI_FORMAT_UNKOWN format when you create the render target, it will automatically use the surface's format.</p><p>The DXGI surface render target does not perform DXGI surface synchronization. </p><p>For more information about creating and using DXGI surface render targets, see the Direct2D and Direct3D Interoperability Overview.</p><p>To work with Direct2D, the Direct3D device that provides the <see cref=\"T:SharpDX.DXGI.Surface\"/> must be created with the <strong><see cref=\"!:SharpDX.Direct3D10.DeviceCreationFlags.BgraSupport\"/></strong> flag.</p><p>When you create a render target and hardware acceleration is available, you allocate resources on the computer's GPU. By creating a render target once and retaining it as long as possible, you gain performance benefits. Your application should create render targets once and hold onto them for the life of the application or until the render target's <strong>EndDraw</strong> method returns the <strong><see cref=\"F:SharpDX.Direct2D1.ResultCode.RecreateTarget\"/></strong> error. When you receive this error, you need to recreate the render target (and any resources it created). </p><p></p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1Factory::CreateDxgiSurfaceRenderTarget']/*\"/>\t\n            <msdn-id>dd371264</msdn-id>\t\n            <unmanaged>HRESULT ID2D1Factory::CreateDxgiSurfaceRenderTarget([In] IDXGISurface* dxgiSurface,[In] const D2D1_RENDER_TARGET_PROPERTIES* renderTargetProperties,[Out, Fast] ID2D1RenderTarget** renderTarget)</unmanaged>\t\n            <unmanaged-short>ID2D1Factory::CreateDxgiSurfaceRenderTarget</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Factory.CreateDCRenderTarget(SharpDX.Direct2D1.RenderTargetProperties@,SharpDX.Direct2D1.DeviceContextRenderTarget)\">\n            <summary>\t\n            <p>Creates a render target that draws to a Windows Graphics Device Interface (GDI) device context.</p>\t\n            </summary>\t\n            <param name=\"renderTargetProperties\"><dd>  <p>The rendering mode, pixel format, remoting options, DPI information, and the minimum DirectX support required for hardware rendering.  To enable the device context (DC) render target to work with GDI, set the DXGI format to <see cref=\"F:SharpDX.DXGI.Format.B8G8R8A8_UNorm\"/> and the alpha mode to <strong><see cref=\"F:SharpDX.Direct2D1.AlphaMode.Premultiplied\"/></strong> or <strong><see cref=\"F:SharpDX.Direct2D1.AlphaMode.Ignore\"/></strong>. For more information about pixel formats, see  Supported Pixel  Formats and Alpha Modes.</p> </dd></param>\t\n            <param name=\"dcRenderTarget\"><dd>  <p>When this method returns, <em>dcRenderTarget</em> contains the address of the reference to the  <strong><see cref=\"T:SharpDX.Direct2D1.DeviceContextRenderTarget\"/></strong> created by the method.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>Before you can render with a DC render target, you must use the render target's <strong>BindDC</strong> method to associate it with a GDI DC.  Do this for each different DC and whenever there is a change in the size of the area you want to draw to.</p><p>To enable the DC render target to work with GDI, set the render target's DXGI format to <see cref=\"F:SharpDX.DXGI.Format.B8G8R8A8_UNorm\"/> and alpha mode to <strong><see cref=\"F:SharpDX.Direct2D1.AlphaMode.Premultiplied\"/></strong> or <strong><see cref=\"F:SharpDX.Direct2D1.AlphaMode.Ignore\"/></strong>.</p><p>Your application should create render targets once and hold on to them for the life of the application or until the render target's  <strong>EndDraw</strong> method returns the <strong><see cref=\"F:SharpDX.Direct2D1.ResultCode.RecreateTarget\"/></strong> error. When you receive this error, recreate the render target (and any resources it created).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1Factory::CreateDCRenderTarget']/*\"/>\t\n            <msdn-id>dd371248</msdn-id>\t\n            <unmanaged>HRESULT ID2D1Factory::CreateDCRenderTarget([In] const D2D1_RENDER_TARGET_PROPERTIES* renderTargetProperties,[Out, Fast] ID2D1DCRenderTarget** dcRenderTarget)</unmanaged>\t\n            <unmanaged-short>ID2D1Factory::CreateDCRenderTarget</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Factory.#ctor\">\n            <summary>\n            Default Constructor for a <see cref=\"T:SharpDX.Direct2D1.Factory\"/>.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Factory.#ctor(SharpDX.Direct2D1.FactoryType)\">\n            <summary>\n            Default Constructor for a <see cref=\"T:SharpDX.Direct2D1.Factory\"/>.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Factory.#ctor(SharpDX.Direct2D1.FactoryType,SharpDX.Direct2D1.DebugLevel)\">\n            <summary>\n            Default Constructor for a <see cref=\"T:SharpDX.Direct2D1.Factory\"/>.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Direct2D1.Factory.DesktopDpi\">\n            <summary>\t\n            Retrieves the current desktop dots per inch (DPI). To refresh this value, call {{ReloadSystemMetrics}}.\t\n            </summary>\t\n            <remarks>\t\n            Use this method to obtain the system DPI when setting physical pixel values, such as when you specify the size of a window. \t\n            </remarks>\t\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.GeometryGroup\">\n            <summary>\t\n            <p>Represents a composite geometry, composed of other <strong><see cref=\"T:SharpDX.Direct2D1.Geometry\"/></strong> objects. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Geometry groups are a convenient way to group several geometries simultaneously so all figures of several distinct geometries are concatenated into one. </p>Creating <see cref=\"T:SharpDX.Direct2D1.GeometryGroup\"/> Objects<p>To create a  <strong><see cref=\"T:SharpDX.Direct2D1.GeometryGroup\"/></strong> object, call  the <strong><see cref=\"M:SharpDX.Direct2D1.Factory.CreateGeometryGroup(SharpDX.Direct2D1.FillMode,SharpDX.Direct2D1.Geometry[],System.Int32,SharpDX.Direct2D1.GeometryGroup)\"/></strong> method, passing in the <em>fillMode</em> with possible values of   <strong><see cref=\"F:SharpDX.Direct2D1.FillMode.Alternate\"/></strong> (alternate) and <strong><see cref=\"F:SharpDX.Direct2D1.FillMode.Winding\"/></strong>, an array of geometry objects to add to the geometry group, and the number of elements in this array. </p><p>Direct2D geometries are immutable and device-independent resources created by <strong><see cref=\"T:SharpDX.Direct2D1.Factory\"/></strong>.  In general, you should create geometries once and retain them for the life of the application, or until they need to be modified. For more information about device-independent and device-dependent resources, see  the Resources Overview.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1GeometryGroup']/*\"/>\t\n            <msdn-id>dd316581</msdn-id>\t\n            <unmanaged>ID2D1GeometryGroup</unmanaged>\t\n            <unmanaged-short>ID2D1GeometryGroup</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.GeometryGroup.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct2D1.GeometryGroup\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.GeometryGroup.op_Explicit(System.IntPtr)~SharpDX.Direct2D1.GeometryGroup\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct2D1.GeometryGroup\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.GeometryGroup.GetFillMode\">\n            <summary>\t\n            <p>Indicates how the intersecting areas of the geometries contained in this geometry group are combined.</p>\t\n            </summary>\t\n            <returns><p> A value that indicates how the intersecting areas of the geometries contained in this geometry group are combined.  </p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1GeometryGroup::GetFillMode']/*\"/>\t\n            <msdn-id>dd316583</msdn-id>\t\n            <unmanaged>D2D1_FILL_MODE ID2D1GeometryGroup::GetFillMode()</unmanaged>\t\n            <unmanaged-short>ID2D1GeometryGroup::GetFillMode</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.GeometryGroup.GetSourceGeometryCount\">\n            <summary>\t\n            <p>Indicates the number of geometry objects in the geometry group. </p>\t\n            </summary>\t\n            <returns><p>The number of geometries in the <strong><see cref=\"T:SharpDX.Direct2D1.GeometryGroup\"/></strong>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1GeometryGroup::GetSourceGeometryCount']/*\"/>\t\n            <msdn-id>dd316589</msdn-id>\t\n            <unmanaged>unsigned int ID2D1GeometryGroup::GetSourceGeometryCount()</unmanaged>\t\n            <unmanaged-short>ID2D1GeometryGroup::GetSourceGeometryCount</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.GeometryGroup.GetSourceGeometries(SharpDX.Direct2D1.Geometry[],System.Int32)\">\n            <summary>\t\n            <p>Retrieves the geometries in the geometry group. </p>\t\n            </summary>\t\n            <param name=\"geometries\"><dd>  <p>When this method returns, contains the address of a reference to an array of geometries to be filled by this method. The length of the array is specified by the <em>geometryCount</em> parameter. If the array is <strong><c>null</c></strong>, then this method performs no operation. You must allocate the memory for this array.</p> </dd></param>\t\n            <param name=\"geometriesCount\"><dd>  <p>A value indicating the number of geometries to return in the <em>geometries</em> array. If this value is less than the number of geometries in the geometry group, the remaining geometries are omitted. If this value is larger than the number of geometries in the geometry group, the extra geometries are set to <strong><c>null</c></strong>. To obtain the number of geometries currently in the geometry group, use the <strong>GetSourceGeometryCount</strong> method.</p> </dd></param>\t\n            <remarks>\t\n            <p>The returned geometries are referenced and  counted, and the caller must release them.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1GeometryGroup::GetSourceGeometries']/*\"/>\t\n            <msdn-id>dd316586</msdn-id>\t\n            <unmanaged>void ID2D1GeometryGroup::GetSourceGeometries([Out, Buffer] ID2D1Geometry** geometries,[In] unsigned int geometriesCount)</unmanaged>\t\n            <unmanaged-short>ID2D1GeometryGroup::GetSourceGeometries</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.GeometryGroup.#ctor(SharpDX.Direct2D1.Factory,SharpDX.Direct2D1.FillMode,SharpDX.Direct2D1.Geometry[])\">\n            <summary>\t\n            Creates an <see cref=\"T:SharpDX.Direct2D1.GeometryGroup\"/>, which is an object that holds other geometries.\t\n            </summary>\t\n            <remarks>\t\n            Geometry groups are a convenient way to group several geometries simultaneously so all figures of several distinct geometries are concatenated into one. To create a  <see cref=\"T:SharpDX.Direct2D1.GeometryGroup\"/> object, call  the CreateGeometryGroup method on the <see cref=\"T:SharpDX.Direct2D1.Factory\"/> object, passing in the fillMode with possible values of   <see cref=\"F:SharpDX.Direct2D1.FillMode.Alternate\"/> (alternate) and D2D1_FILL_MODE_WINDING, an array of geometry objects to add to the geometry group, and the number of elements in this array. \t\n            </remarks>\t\n            <param name=\"factory\">an instance of <see cref=\"T:SharpDX.Direct2D1.Factory\"/></param>\n            <param name=\"fillMode\">A value that specifies the rule that a composite shape uses to determine whether a given point is part of the geometry. </param>\n            <param name=\"geometries\">An array containing the geometry objects to add to the geometry group. The number of elements in this array is indicated by the geometriesCount parameter.</param>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.GeometryGroup.GetSourceGeometry\">\n            <summary>\t\n            Retrieves the geometries in the geometry group. \t\n            </summary>\t\n            <remarks>\t\n            The returned geometries are referenced and  counted, and the caller must release them. \t\n            </remarks>\t\n            <returns>an array of geometries to be filled by this method. The length of the array is specified by the geometryCount parameter.</returns>\n            <unmanaged>void ID2D1GeometryGroup::GetSourceGeometries([Out, Buffer] ID2D1Geometry** geometries,[None] int geometriesCount)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.GeometryGroup.GetSourceGeometry(System.Int32)\">\n            <summary>\t\n            Retrieves the geometries in the geometry group. \t\n            </summary>\t\n            <remarks>\t\n            The returned geometries are referenced and  counted, and the caller must release them. \t\n            </remarks>\t\n            <param name=\"geometriesCount\">A value indicating the number of geometries to return in the geometries array. If this value is less than the number of geometries in the geometry group, the remaining geometries are omitted. If this value is larger than the number of geometries in the geometry group, the extra geometries are set to NULL. To obtain the number of geometries currently in the geometry group, use the {{GetSourceGeometryCount}} method. </param>\n            <returns>an array of geometries to be filled by this method. The length of the array is specified by the geometryCount parameter.</returns>\n            <unmanaged>void ID2D1GeometryGroup::GetSourceGeometries([Out, Buffer] ID2D1Geometry** geometries,[None] int geometriesCount)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct2D1.GeometryGroup.FillMode\">\n            <summary>\t\n            <p>Indicates how the intersecting areas of the geometries contained in this geometry group are combined.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1GeometryGroup::GetFillMode']/*\"/>\t\n            <msdn-id>dd316583</msdn-id>\t\n            <unmanaged>GetFillMode</unmanaged>\t\n            <unmanaged-short>GetFillMode</unmanaged-short>\t\n            <unmanaged>D2D1_FILL_MODE ID2D1GeometryGroup::GetFillMode()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct2D1.GeometryGroup.SourceGeometryCount\">\n            <summary>\t\n            <p>Indicates the number of geometry objects in the geometry group. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1GeometryGroup::GetSourceGeometryCount']/*\"/>\t\n            <msdn-id>dd316589</msdn-id>\t\n            <unmanaged>GetSourceGeometryCount</unmanaged>\t\n            <unmanaged-short>GetSourceGeometryCount</unmanaged-short>\t\n            <unmanaged>unsigned int ID2D1GeometryGroup::GetSourceGeometryCount()</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.GeometrySink\">\n            <summary>\t\n            <p>Describes a geometric path that can contain lines, arcs, cubic Bezier curves, and quadratic Bezier curves. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The <strong><see cref=\"T:SharpDX.Direct2D1.GeometrySink\"/></strong> interface extends the <strong><see cref=\"T:SharpDX.Direct2D1.SimplifiedGeometrySink\"/></strong> interface to add support for arcs and quadratic beziers, as well as functions for adding single lines and cubic beziers.</p><p>A geometry sink consists of one or more figures. Each figure is made up of one or more line, curve, or arc segments. To create a figure, call the <strong>BeginFigure</strong> method, specify the figure's start point, and then use its Add methods (such as AddLine and AddBezier) to add segments. When you are finished adding segments, call the <strong>EndFigure</strong> method. You can repeat this sequence to create additional figures. When you are finished creating figures, call the <strong>Close</strong> method.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1GeometrySink']/*\"/>\t\n            <msdn-id>dd316592</msdn-id>\t\n            <unmanaged>ID2D1GeometrySink</unmanaged>\t\n            <unmanaged-short>ID2D1GeometrySink</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.SimplifiedGeometrySink\">\n            <summary>\t\n            <p> Describes a geometric path that does not contain quadratic bezier curves or arcs. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>A geometry sink consists of one or more figures. Each figure is made up of one or more line or Bezier curve segments. To create a figure, call the <strong>BeginFigure</strong> method and specify the figure's start point, then use <strong>AddLines</strong> and <strong>AddBeziers</strong> to add line and Bezier segments. When you are finished adding segments, call the <strong>EndFigure</strong> method. You can repeat this sequence to create additional figures. When you are finished creating figures, call the <strong>Close</strong> method.</p><p>To create geometry paths that can contain arcs and quadratic Bezier curves, use an <strong><see cref=\"T:SharpDX.Direct2D1.GeometrySink\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1SimplifiedGeometrySink']/*\"/>\t\n            <msdn-id>dd316919</msdn-id>\t\n            <unmanaged>ID2D1SimplifiedGeometrySink</unmanaged>\t\n            <unmanaged-short>ID2D1SimplifiedGeometrySink</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.SimplifiedGeometrySink.SetFillMode(SharpDX.Direct2D1.FillMode)\">\n            <summary>\t\n            Specifies the method used to determine which points are inside the geometry described by this geometry sink  and which points are outside.  \t\n            </summary>\t\n            <remarks>\t\n            The fill mode defaults to D2D1_FILL_MODE_ALTERNATE. To set the fill mode, call SetFillMode before the first call to {{BeginFigure}}. Not doing will put the geometry sink in an error state. \t\n            </remarks>\t\n            <param name=\"fillMode\">The method used to determine whether a given point is part of the geometry.</param>\n            <unmanaged>void SetFillMode([None] D2D1_FILL_MODE fillMode)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.SimplifiedGeometrySink.SetSegmentFlags(SharpDX.Direct2D1.PathSegment)\">\n            <summary>\t\n            Specifies stroke and join options to be applied to new segments added to the geometry sink. \t\n            </summary>\t\n            <remarks>\t\n            After this method is called, the specified segment flags are applied to each segment subsequently added to the sink. The segment flags are applied to every additional segment until this method is called again and a different set of segment flags is specified.     \t\n            </remarks>\t\n            <param name=\"vertexFlags\">Stroke and join options to be applied to new segments added to the geometry sink.</param>\n            <unmanaged>void SetSegmentFlags([None] D2D1_PATH_SEGMENT vertexFlags)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.SimplifiedGeometrySink.BeginFigure(SharpDX.DrawingPointF,SharpDX.Direct2D1.FigureBegin)\">\n            <summary>\t\n            Starts a new figure at the specified point. \t\n            </summary>\t\n            <remarks>\t\n            If this method is called while a figure is currently in progress, the interface is invalidated and all future methods will fail.\t\n            </remarks>\t\n            <param name=\"startPoint\">The point at which to begin the new figure.</param>\n            <param name=\"figureBegin\">Whether the new figure should be hollow or filled.</param>\n            <unmanaged>void BeginFigure([None] D2D1_POINT_2F startPoint,[None] D2D1_FIGURE_BEGIN figureBegin)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.SimplifiedGeometrySink.AddLines(SharpDX.DrawingPointF[])\">\n            <summary>\t\n             Creates a sequence of lines using the specified points and adds them to the geometry sink.\t\n            </summary>\t\n            <param name=\"ointsRef\">A pointer to an array of one or more points that describe the lines to draw. A line is drawn from the geometry sink's current point (the end point of the last segment drawn or the location specified by {{BeginFigure}}) to the first point in the array. if the array contains additional points, a line is drawn from the first point to the second point in the array, from the second point to the third point, and so on.   </param>\n            <unmanaged>void AddLines([In, Buffer] const D2D1_POINT_2F* points,[None] UINT pointsCount)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.SimplifiedGeometrySink.AddBeziers(SharpDX.Direct2D1.BezierSegment[])\">\n            <summary>\t\n            Creates a sequence of cubic Bezier curves and adds them to the geometry sink. \t\n            </summary>\t\n            <param name=\"beziers\">A pointer to an array of Bezier segments that describes the Bezier curves to create. A curve is drawn from the geometry sink's current point (the end point of the last segment drawn or the location specified by {{BeginFigure}}) to the end point of the first Bezier segment in the array. if the array contains additional Bezier segments, each subsequent Bezier segment uses the end point of the preceding Bezier segment as its start point.</param>\n            <unmanaged>void AddBeziers([In, Buffer] const D2D1_BEZIER_SEGMENT* beziers,[None] UINT beziersCount)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.SimplifiedGeometrySink.EndFigure(SharpDX.Direct2D1.FigureEnd)\">\n            <summary>\t\n             Ends the current figure; optionally, closes it.\t\n            </summary>\t\n            <remarks>\t\n            Calling this method without a matching call to {{BeginFigure}} places the geometry sink in an error state; subsequent calls are ignored, and the overall failure will be returned when the {{Close}} method is called.\t\n            </remarks>\t\n            <param name=\"figureEnd\">A value that indicates whether the current figure is closed. If the figure is closed, a line is drawn between the current point and the start point specified by {{BeginFigure}}.</param>\n            <unmanaged>void EndFigure([None] D2D1_FIGURE_END figureEnd)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.SimplifiedGeometrySink.Close\">\n            <summary>\t\n            Closes the geometry sink, indicates whether it is in an error state, and resets the sink's error state. \t\n            </summary>\t\n            <remarks>\t\n            Do not close the geometry sink while a figure is still in progress; doing so puts the geometry sink in an error state. For the close operation to be successful, there must be one {{EndFigure}} call for each call to {{BeginFigure}}.After calling this method, the geometry sink might not be usable. Direct2D implementations of this interface do not allow the geometry sink to be modified after it is closed, but other implementations might not impose this restriction.\t\n            </remarks>\t\n            <unmanaged>HRESULT Close()</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.GeometrySink.AddLine(SharpDX.DrawingPointF)\">\n            <summary>\t\n            Creates a line segment between the current point and the specified end point and adds it to the geometry sink. \t\n            </summary>\t\n            <param name=\"point\">The end point of the line to draw.</param>\n            <unmanaged>void AddLine([None] D2D1_POINT_2F point)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.GeometrySink.AddBezier(SharpDX.Direct2D1.BezierSegment)\">\n            <summary>\t\n             Creates  a cubic Bezier curve between the current point and the specified endpoint.\t\n            </summary>\t\n            <param name=\"bezier\">A structure that describes the control points and endpoint of the Bezier curve to add. </param>\n            <unmanaged>void AddBezier([In] const D2D1_BEZIER_SEGMENT* bezier)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.GeometrySink.AddQuadraticBezier(SharpDX.Direct2D1.QuadraticBezierSegment)\">\n            <summary>\t\n            Creates  a quadratic Bezier curve between the current point and the specified endpoint.\t\n            </summary>\t\n            <param name=\"bezier\">A structure that describes the control point and the endpoint of the quadratic Bezier curve to add.</param>\n            <unmanaged>void AddQuadraticBezier([In] const D2D1_QUADRATIC_BEZIER_SEGMENT* bezier)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.GeometrySink.AddQuadraticBeziers(SharpDX.Direct2D1.QuadraticBezierSegment[])\">\n            <summary>\t\n            Adds a sequence of quadratic Bezier segments as an array in a single call.\t\n            </summary>\t\n            <param name=\"beziers\">An array of a sequence of quadratic Bezier segments.</param>\n            <unmanaged>void AddQuadraticBeziers([In, Buffer] const D2D1_QUADRATIC_BEZIER_SEGMENT* beziers,[None] UINT beziersCount)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.GeometrySink.AddArc(SharpDX.Direct2D1.ArcSegment)\">\n            <summary>\t\n            Adds a single arc to the path geometry.\t\n            </summary>\t\n            <param name=\"arc\">The arc segment to add to the figure.</param>\n            <unmanaged>void AddArc([In] const D2D1_ARC_SEGMENT* arc)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.GeometrySinkNative\">\n            <summary>\t\n            <p>Describes a geometric path that can contain lines, arcs, cubic Bezier curves, and quadratic Bezier curves. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The <strong><see cref=\"T:SharpDX.Direct2D1.GeometrySink\"/></strong> interface extends the <strong><see cref=\"T:SharpDX.Direct2D1.SimplifiedGeometrySink\"/></strong> interface to add support for arcs and quadratic beziers, as well as functions for adding single lines and cubic beziers.</p><p>A geometry sink consists of one or more figures. Each figure is made up of one or more line, curve, or arc segments. To create a figure, call the <strong>BeginFigure</strong> method, specify the figure's start point, and then use its Add methods (such as AddLine and AddBezier) to add segments. When you are finished adding segments, call the <strong>EndFigure</strong> method. You can repeat this sequence to create additional figures. When you are finished creating figures, call the <strong>Close</strong> method.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1GeometrySink']/*\"/>\t\n            <msdn-id>dd316592</msdn-id>\t\n            <unmanaged>ID2D1GeometrySink</unmanaged>\t\n            <unmanaged-short>ID2D1GeometrySink</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.SimplifiedGeometrySinkNative\">\n            <summary>\t\n            <p> Describes a geometric path that does not contain quadratic bezier curves or arcs. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>A geometry sink consists of one or more figures. Each figure is made up of one or more line or Bezier curve segments. To create a figure, call the <strong>BeginFigure</strong> method and specify the figure's start point, then use <strong>AddLines</strong> and <strong>AddBeziers</strong> to add line and Bezier segments. When you are finished adding segments, call the <strong>EndFigure</strong> method. You can repeat this sequence to create additional figures. When you are finished creating figures, call the <strong>Close</strong> method.</p><p>To create geometry paths that can contain arcs and quadratic Bezier curves, use an <strong><see cref=\"T:SharpDX.Direct2D1.GeometrySink\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1SimplifiedGeometrySink']/*\"/>\t\n            <msdn-id>dd316919</msdn-id>\t\n            <unmanaged>ID2D1SimplifiedGeometrySink</unmanaged>\t\n            <unmanaged-short>ID2D1SimplifiedGeometrySink</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.SimplifiedGeometrySinkNative.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct2D1.SimplifiedGeometrySinkNative\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.SimplifiedGeometrySinkNative.op_Explicit(System.IntPtr)~SharpDX.Direct2D1.SimplifiedGeometrySinkNative\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct2D1.SimplifiedGeometrySinkNative\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.SimplifiedGeometrySinkNative.SetFillMode_(SharpDX.Direct2D1.FillMode)\">\n            <summary>\t\n            <p>Specifies the method used to determine which points are inside the geometry described by this geometry sink  and which points are outside.  </p>\t\n            </summary>\t\n            <param name=\"fillMode\"><dd>  <p>The method used to determine whether a given point is part of the geometry.</p> </dd></param>\t\n            <remarks>\t\n            <p>The fill mode defaults to <see cref=\"F:SharpDX.Direct2D1.FillMode.Alternate\"/>. To set the fill mode, call <strong>SetFillMode</strong> before the first call to <strong>BeginFigure</strong>. Not doing will put the geometry sink in an error state. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1SimplifiedGeometrySink::SetFillMode']/*\"/>\t\n            <msdn-id>dd316937</msdn-id>\t\n            <unmanaged>void ID2D1SimplifiedGeometrySink::SetFillMode([In] D2D1_FILL_MODE fillMode)</unmanaged>\t\n            <unmanaged-short>ID2D1SimplifiedGeometrySink::SetFillMode</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.SimplifiedGeometrySinkNative.SetSegmentFlags_(SharpDX.Direct2D1.PathSegment)\">\n            <summary>\t\n            <p>Specifies stroke and join options to be applied to new segments added to the geometry sink. </p>\t\n            </summary>\t\n            <param name=\"vertexFlags\"><dd>  <p>Stroke and join options to be applied to new segments added to the geometry sink.</p> </dd></param>\t\n            <remarks>\t\n            <p>After this method is called, the specified segment flags are applied to each segment subsequently added to the sink. The segment flags are applied to every additional segment until this method is called again and a different set of segment flags is specified.     </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1SimplifiedGeometrySink::SetSegmentFlags']/*\"/>\t\n            <msdn-id>dd316939</msdn-id>\t\n            <unmanaged>void ID2D1SimplifiedGeometrySink::SetSegmentFlags([In] D2D1_PATH_SEGMENT vertexFlags)</unmanaged>\t\n            <unmanaged-short>ID2D1SimplifiedGeometrySink::SetSegmentFlags</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.SimplifiedGeometrySinkNative.BeginFigure_(SharpDX.DrawingPointF,SharpDX.Direct2D1.FigureBegin)\">\n            <summary>\t\n            <p>Starts a new figure at the specified point. </p>\t\n            </summary>\t\n            <param name=\"startPoint\"><dd>  <p>The point at which to begin the new figure.</p> </dd></param>\t\n            <param name=\"figureBegin\"><dd>  <p>Whether the new figure should be hollow or filled.</p> </dd></param>\t\n            <remarks>\t\n            <p>If this method is called while a figure is currently in progress, the interface is invalidated and all future methods will fail.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1SimplifiedGeometrySink::BeginFigure']/*\"/>\t\n            <msdn-id>dd316929</msdn-id>\t\n            <unmanaged>void ID2D1SimplifiedGeometrySink::BeginFigure([In] D2D_POINT_2F startPoint,[In] D2D1_FIGURE_BEGIN figureBegin)</unmanaged>\t\n            <unmanaged-short>ID2D1SimplifiedGeometrySink::BeginFigure</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.SimplifiedGeometrySinkNative.AddLines_(SharpDX.DrawingPointF[],System.Int32)\">\n            <summary>\t\n            <p> Creates a sequence of lines using the specified points and adds them to the geometry sink.</p>\t\n            </summary>\t\n            <param name=\"ointsRef\"><dd>  <p>A reference to an array of one or more points that describe the lines to draw. A line is drawn from the geometry sink's current point (the end point of the last segment drawn or the location specified by <strong>BeginFigure</strong>) to the first point in the array. if the array contains additional points, a line is drawn from the first point to the second point in the array, from the second point to the third point, and so on.   </p> </dd></param>\t\n            <param name=\"pointsCount\"><dd>  <p>The number of points in the <em>points</em> array.</p> </dd></param>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1SimplifiedGeometrySink::AddLines']/*\"/>\t\n            <msdn-id>dd316925</msdn-id>\t\n            <unmanaged>void ID2D1SimplifiedGeometrySink::AddLines([In, Buffer] const D2D_POINT_2F* points,[In] unsigned int pointsCount)</unmanaged>\t\n            <unmanaged-short>ID2D1SimplifiedGeometrySink::AddLines</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.SimplifiedGeometrySinkNative.AddBeziers_(SharpDX.Direct2D1.BezierSegment[],System.Int32)\">\n            <summary>\t\n            <p>Creates a sequence of cubic Bezier curves and adds them to the geometry sink. </p>\t\n            </summary>\t\n            <param name=\"beziers\"><dd>  <p>A reference to an array of Bezier segments that describes the Bezier curves to create. A curve is drawn from the geometry sink's current point (the end point of the last segment drawn or the location specified by <strong>BeginFigure</strong>) to the end point of the first Bezier segment in the array. if the array contains additional Bezier segments, each subsequent Bezier segment uses the end point of the preceding Bezier segment as its start point.</p> </dd></param>\t\n            <param name=\"beziersCount\"><dd>  <p>The number of Bezier segments in the <em>beziers</em> array.</p> </dd></param>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1SimplifiedGeometrySink::AddBeziers']/*\"/>\t\n            <msdn-id>dd316922</msdn-id>\t\n            <unmanaged>void ID2D1SimplifiedGeometrySink::AddBeziers([In, Buffer] const D2D1_BEZIER_SEGMENT* beziers,[In] unsigned int beziersCount)</unmanaged>\t\n            <unmanaged-short>ID2D1SimplifiedGeometrySink::AddBeziers</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.SimplifiedGeometrySinkNative.EndFigure_(SharpDX.Direct2D1.FigureEnd)\">\n            <summary>\t\n            <p> Ends the current figure; optionally, closes it.</p>\t\n            </summary>\t\n            <param name=\"figureEnd\"><dd>  <p>A value that indicates whether the current figure is closed. If the figure is closed, a line is drawn between the current point and the start point specified by <strong>BeginFigure</strong>.</p> </dd></param>\t\n            <remarks>\t\n            <p>Calling this method without a matching call to <strong>BeginFigure</strong> places the geometry sink in an error state; subsequent calls are ignored, and the overall failure will be returned when the <strong>Close</strong> method is called.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1SimplifiedGeometrySink::EndFigure']/*\"/>\t\n            <msdn-id>dd316934</msdn-id>\t\n            <unmanaged>void ID2D1SimplifiedGeometrySink::EndFigure([In] D2D1_FIGURE_END figureEnd)</unmanaged>\t\n            <unmanaged-short>ID2D1SimplifiedGeometrySink::EndFigure</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.SimplifiedGeometrySinkNative.Close_\">\n            <summary>\t\n            <p>Closes the geometry sink, indicates whether it is in an error state, and resets the sink's error state. </p>\t\n            </summary>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>Do not close the geometry sink while a figure is still in progress; doing so puts the geometry sink in an error state. For the close operation to be successful, there must be one <strong>EndFigure</strong> call for each call to <strong>BeginFigure</strong>.</p><p>After calling this method, the geometry sink might not be usable. Direct2D implementations of this interface do not allow the geometry sink to be modified after it is closed, but other implementations might not impose this restriction.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1SimplifiedGeometrySink::Close']/*\"/>\t\n            <msdn-id>dd316932</msdn-id>\t\n            <unmanaged>HRESULT ID2D1SimplifiedGeometrySink::Close()</unmanaged>\t\n            <unmanaged-short>ID2D1SimplifiedGeometrySink::Close</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.GeometrySinkNative.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct2D1.GeometrySinkNative\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.GeometrySinkNative.op_Explicit(System.IntPtr)~SharpDX.Direct2D1.GeometrySinkNative\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct2D1.GeometrySinkNative\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.GeometrySinkNative.AddLine_(SharpDX.DrawingPointF)\">\n            <summary>\t\n            <p>Creates a line segment between the current point and the specified end point and adds it to the geometry sink. </p>\t\n            </summary>\t\n            <param name=\"point\"><dd>  <p>The end point of the line to draw.</p> </dd></param>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1GeometrySink::AddLine']/*\"/>\t\n            <msdn-id>dd316604</msdn-id>\t\n            <unmanaged>void ID2D1GeometrySink::AddLine([In] D2D_POINT_2F point)</unmanaged>\t\n            <unmanaged-short>ID2D1GeometrySink::AddLine</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.GeometrySinkNative.AddBezier_(SharpDX.Direct2D1.BezierSegment@)\">\n            <summary>\t\n            <p> Creates  a cubic Bezier curve between the current point and the specified end point.</p>\t\n            </summary>\t\n            <param name=\"bezier\"><dd>  <p>A structure that describes the control points and end point of the Bezier curve to add.</p> </dd></param>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1GeometrySink::AddBezier']/*\"/>\t\n            <msdn-id>dd316601</msdn-id>\t\n            <unmanaged>void ID2D1GeometrySink::AddBezier([In] const D2D1_BEZIER_SEGMENT* bezier)</unmanaged>\t\n            <unmanaged-short>ID2D1GeometrySink::AddBezier</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.GeometrySinkNative.AddQuadraticBezier_(SharpDX.Direct2D1.QuadraticBezierSegment)\">\n            <summary>\t\n            <p>Creates  a quadratic Bezier curve between the current point and the specified endpoint.</p>\t\n            </summary>\t\n            <param name=\"bezier\"><dd>  <p>A structure that describes the control point and the endpoint of the quadratic Bezier curve to add.</p> </dd></param>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1GeometrySink::AddQuadraticBezier']/*\"/>\t\n            <msdn-id>dd316611</msdn-id>\t\n            <unmanaged>void ID2D1GeometrySink::AddQuadraticBezier([In] const D2D1_QUADRATIC_BEZIER_SEGMENT* bezier)</unmanaged>\t\n            <unmanaged-short>ID2D1GeometrySink::AddQuadraticBezier</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.GeometrySinkNative.AddQuadraticBeziers_(SharpDX.Direct2D1.QuadraticBezierSegment[],System.Int32)\">\n            <summary>\t\n            <p>Adds a sequence of quadratic Bezier segments as an array in a single call.</p>\t\n            </summary>\t\n            <param name=\"beziers\"><dd>  <p>An array of a sequence of quadratic Bezier segments.</p> </dd></param>\t\n            <param name=\"beziersCount\"><dd>  <p>A value indicating the number of quadratic Bezier segments in <em>beziers</em>. </p> </dd></param>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1GeometrySink::AddQuadraticBeziers']/*\"/>\t\n            <msdn-id>dd316608</msdn-id>\t\n            <unmanaged>void ID2D1GeometrySink::AddQuadraticBeziers([In, Buffer] const D2D1_QUADRATIC_BEZIER_SEGMENT* beziers,[In] unsigned int beziersCount)</unmanaged>\t\n            <unmanaged-short>ID2D1GeometrySink::AddQuadraticBeziers</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.GeometrySinkNative.AddArc_(SharpDX.Direct2D1.ArcSegment@)\">\n            <summary>\t\n            <p>Adds a single arc to the path geometry.</p>\t\n            </summary>\t\n            <param name=\"arc\"><dd>  <p>The arc segment to add to the figure.</p> </dd></param>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1GeometrySink::AddArc']/*\"/>\t\n            <msdn-id>dd316595</msdn-id>\t\n            <unmanaged>void ID2D1GeometrySink::AddArc([In] const D2D1_ARC_SEGMENT* arc)</unmanaged>\t\n            <unmanaged-short>ID2D1GeometrySink::AddArc</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.GradientStopCollection\">\n            <summary>\t\n            <p>Represents an collection of <strong><see cref=\"T:SharpDX.Direct2D1.GradientStop\"/></strong> objects for linear and radial gradient brushes.</p>\t\n            </summary>\t\n            <remarks>\t\n            Creating <see cref=\"T:SharpDX.Direct2D1.GradientStopCollection\"/> Objects<p>To create an <strong><see cref=\"T:SharpDX.Direct2D1.GradientStopCollection\"/></strong>, use the  <strong><see cref=\"M:SharpDX.Direct2D1.RenderTarget.CreateGradientStopCollection(SharpDX.Direct2D1.GradientStop[],System.Int32,SharpDX.Direct2D1.Gamma,SharpDX.Direct2D1.ExtendMode,SharpDX.Direct2D1.GradientStopCollection)\"/></strong> method.  </p><p>A gradient stop collection is a device-dependent resource: your application should create gradient stop collections after it initializes the render target with which the gradient stop collection will be used, and recreate the gradient stop collection whenever the render target needs recreated. (For more information about resources, see Resources Overview.)</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1GradientStopCollection']/*\"/>\t\n            <msdn-id>dd316783</msdn-id>\t\n            <unmanaged>ID2D1GradientStopCollection</unmanaged>\t\n            <unmanaged-short>ID2D1GradientStopCollection</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.GradientStopCollection.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct2D1.GradientStopCollection\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.GradientStopCollection.op_Explicit(System.IntPtr)~SharpDX.Direct2D1.GradientStopCollection\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct2D1.GradientStopCollection\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.GradientStopCollection.GetGradientStopCount\">\n            <summary>\t\n            <p>Retrieves the number of gradient stops in the collection.</p>\t\n            </summary>\t\n            <returns><p>The number of gradient stops in the collection.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1GradientStopCollection::GetGradientStopCount']/*\"/>\t\n            <msdn-id>dd371454</msdn-id>\t\n            <unmanaged>unsigned int ID2D1GradientStopCollection::GetGradientStopCount()</unmanaged>\t\n            <unmanaged-short>ID2D1GradientStopCollection::GetGradientStopCount</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.GradientStopCollection.GetGradientStops(SharpDX.Direct2D1.GradientStop[],System.Int32)\">\n            <summary>\t\n            <p>Copies the gradient stops from the collection into an array of <strong><see cref=\"T:SharpDX.Direct2D1.GradientStop\"/></strong> structures.</p>\t\n            </summary>\t\n            <param name=\"gradientStops\">No documentation.</param>\t\n            <param name=\"gradientStopsCount\">No documentation.</param>\t\n            <remarks>\t\n            <p>Gradient stops are copied in order of position, starting with the gradient stop with the smallest position value and progressing to the gradient stop with the largest position value.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1GradientStopCollection::GetGradientStops']/*\"/>\t\n            <msdn-id>dd371457</msdn-id>\t\n            <unmanaged>void ID2D1GradientStopCollection::GetGradientStops([Out, Buffer] D2D1_GRADIENT_STOP* gradientStops,[In] unsigned int gradientStopsCount)</unmanaged>\t\n            <unmanaged-short>ID2D1GradientStopCollection::GetGradientStops</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.GradientStopCollection.GetColorInterpolationGamma\">\n            <summary>\t\n            <p>Indicates the gamma space in which the gradient stops are interpolated. </p>\t\n            </summary>\t\n            <returns><p>The gamma space in which the gradient stops are interpolated. </p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1GradientStopCollection::GetColorInterpolationGamma']/*\"/>\t\n            <msdn-id>dd316786</msdn-id>\t\n            <unmanaged>D2D1_GAMMA ID2D1GradientStopCollection::GetColorInterpolationGamma()</unmanaged>\t\n            <unmanaged-short>ID2D1GradientStopCollection::GetColorInterpolationGamma</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.GradientStopCollection.GetExtendMode\">\n            <summary>\t\n            <p>Indicates the behavior of the gradient outside the normalized gradient range. </p>\t\n            </summary>\t\n            <returns><p>The behavior of the gradient outside the [0,1] normalized gradient range.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1GradientStopCollection::GetExtendMode']/*\"/>\t\n            <msdn-id>dd316789</msdn-id>\t\n            <unmanaged>D2D1_EXTEND_MODE ID2D1GradientStopCollection::GetExtendMode()</unmanaged>\t\n            <unmanaged-short>ID2D1GradientStopCollection::GetExtendMode</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.GradientStopCollection.#ctor(SharpDX.Direct2D1.RenderTarget,SharpDX.Direct2D1.GradientStop[])\">\n            <summary>\t\n            Creates an <see cref=\"T:SharpDX.Direct2D1.GradientStopCollection\"/> from the specified gradient stops, a Gamma StandardRgb, and ExtendMode.Clamp.  \t\n            </summary>\t\n            <param name=\"renderTarget\">an instance of <see cref=\"T:SharpDX.Direct2D1.RenderTarget\"/></param>\n            <param name=\"gradientStops\">A pointer to an array of D2D1_GRADIENT_STOP structures.</param>\n            <unmanaged>HRESULT CreateGradientStopCollection([In, Buffer] const D2D1_GRADIENT_STOP* gradientStops,[None] UINT gradientStopsCount,[None] D2D1_GAMMA colorInterpolationGamma,[None] D2D1_EXTEND_MODE extendMode,[Out] ID2D1GradientStopCollection** gradientStopCollection)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.GradientStopCollection.#ctor(SharpDX.Direct2D1.RenderTarget,SharpDX.Direct2D1.GradientStop[],SharpDX.Direct2D1.ExtendMode)\">\n            <summary>\t\n            Creates an <see cref=\"T:SharpDX.Direct2D1.GradientStopCollection\"/> from the specified gradient stops, color Gamma.StandardRgb, and extend mode.  \t\n            </summary>\t\n            <param name=\"renderTarget\">an instance of <see cref=\"T:SharpDX.Direct2D1.RenderTarget\"/></param>\n            <param name=\"gradientStops\">A pointer to an array of D2D1_GRADIENT_STOP structures.</param>\n            <param name=\"extendMode\">The behavior of the gradient outside the [0,1] normalized range.</param>\n            <unmanaged>HRESULT CreateGradientStopCollection([In, Buffer] const D2D1_GRADIENT_STOP* gradientStops,[None] UINT gradientStopsCount,[None] D2D1_GAMMA colorInterpolationGamma,[None] D2D1_EXTEND_MODE extendMode,[Out] ID2D1GradientStopCollection** gradientStopCollection)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.GradientStopCollection.#ctor(SharpDX.Direct2D1.RenderTarget,SharpDX.Direct2D1.GradientStop[],SharpDX.Direct2D1.Gamma)\">\n            <summary>\t\n            Creates an <see cref=\"T:SharpDX.Direct2D1.GradientStopCollection\"/> from the specified gradient stops, color interpolation gamma, and ExtendMode.Clamp.  \t\n            </summary>\t\n            <param name=\"renderTarget\">an instance of <see cref=\"T:SharpDX.Direct2D1.RenderTarget\"/></param>\n            <param name=\"gradientStops\">A pointer to an array of D2D1_GRADIENT_STOP structures.</param>\n            <param name=\"colorInterpolationGamma\">The space in which color interpolation between the gradient stops is performed.</param>\n            <unmanaged>HRESULT CreateGradientStopCollection([In, Buffer] const D2D1_GRADIENT_STOP* gradientStops,[None] UINT gradientStopsCount,[None] D2D1_GAMMA colorInterpolationGamma,[None] D2D1_EXTEND_MODE extendMode,[Out] ID2D1GradientStopCollection** gradientStopCollection)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.GradientStopCollection.#ctor(SharpDX.Direct2D1.RenderTarget,SharpDX.Direct2D1.GradientStop[],SharpDX.Direct2D1.Gamma,SharpDX.Direct2D1.ExtendMode)\">\n            <summary>\t\n            Creates an <see cref=\"T:SharpDX.Direct2D1.GradientStopCollection\"/> from the specified gradient stops, color interpolation gamma, and extend mode.  \t\n            </summary>\t\n            <param name=\"renderTarget\">an instance of <see cref=\"T:SharpDX.Direct2D1.RenderTarget\"/></param>\n            <param name=\"gradientStops\">A pointer to an array of D2D1_GRADIENT_STOP structures.</param>\n            <param name=\"colorInterpolationGamma\">The space in which color interpolation between the gradient stops is performed.</param>\n            <param name=\"extendMode\">The behavior of the gradient outside the [0,1] normalized range.</param>\n            <unmanaged>HRESULT CreateGradientStopCollection([In, Buffer] const D2D1_GRADIENT_STOP* gradientStops,[None] UINT gradientStopsCount,[None] D2D1_GAMMA colorInterpolationGamma,[None] D2D1_EXTEND_MODE extendMode,[Out] ID2D1GradientStopCollection** gradientStopCollection)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct2D1.GradientStopCollection.GradientStopCount\">\n            <summary>\t\n            <p>Retrieves the number of gradient stops in the collection.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1GradientStopCollection::GetGradientStopCount']/*\"/>\t\n            <msdn-id>dd371454</msdn-id>\t\n            <unmanaged>GetGradientStopCount</unmanaged>\t\n            <unmanaged-short>GetGradientStopCount</unmanaged-short>\t\n            <unmanaged>unsigned int ID2D1GradientStopCollection::GetGradientStopCount()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct2D1.GradientStopCollection.ColorInterpolationGamma\">\n            <summary>\t\n            <p>Indicates the gamma space in which the gradient stops are interpolated. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1GradientStopCollection::GetColorInterpolationGamma']/*\"/>\t\n            <msdn-id>dd316786</msdn-id>\t\n            <unmanaged>GetColorInterpolationGamma</unmanaged>\t\n            <unmanaged-short>GetColorInterpolationGamma</unmanaged-short>\t\n            <unmanaged>D2D1_GAMMA ID2D1GradientStopCollection::GetColorInterpolationGamma()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct2D1.GradientStopCollection.ExtendMode\">\n            <summary>\t\n            <p>Indicates the behavior of the gradient outside the normalized gradient range. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1GradientStopCollection::GetExtendMode']/*\"/>\t\n            <msdn-id>dd316789</msdn-id>\t\n            <unmanaged>GetExtendMode</unmanaged>\t\n            <unmanaged-short>GetExtendMode</unmanaged-short>\t\n            <unmanaged>D2D1_EXTEND_MODE ID2D1GradientStopCollection::GetExtendMode()</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.Layer\">\n            <summary>\t\n            <p>Represents the backing store required to render a layer. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>To create a layer, call the <strong>CreateLayer</strong> method of the render target where the layer will be used. To draw to a layer, push the layer to the render target stack by calling the <strong>PushLayer</strong> method. After you have finished drawing to the layer, call the <strong>PopLayer</strong> method.</p><p>Between  <strong>PushLayer</strong> and <strong>PopLayer</strong> calls, the layer is in use and cannot be used by another render target. </p><p>If the size of the layer is not specified, the corresponding <strong>PushLayer</strong> call determines the minimum layer size, based on the layer content bounds and the geometric mask. The layer resource can be larger than the size required by <strong>PushLayer</strong> without any rendering artifacts.</p><p>If the size of a layer is specified, or if the layer has been used and the required backing store size as calculated during <strong>PushLayer</strong> is larger than the layer, then the layer resource is expanded on each axis monotonically to ensure that it is large enough. The layer resource never shrinks in size.</p>Creating <see cref=\"T:SharpDX.Direct2D1.Layer\"/> Objects<p>To create a layer, call the <strong>CreateLayer</strong> method of the render target where the layer will be used.</p><p>A layer is a device-dependent resource: your application should create layers after it initializes the render target with which the layers will be used, and recreate the layers whenever the render target needs recreated. (For more information about resources, see Resources Overview.)</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1Layer']/*\"/>\t\n            <msdn-id>dd371483</msdn-id>\t\n            <unmanaged>ID2D1Layer</unmanaged>\t\n            <unmanaged-short>ID2D1Layer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Layer.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct2D1.Layer\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Layer.op_Explicit(System.IntPtr)~SharpDX.Direct2D1.Layer\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct2D1.Layer\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Layer.GetSize\">\n            <summary>\t\n            <p>Gets the size of the layer in device-independent pixels. </p>\t\n            </summary>\t\n            <returns><p>The size of the layer in device-independent pixels.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1Layer::GetSize']/*\"/>\t\n            <msdn-id>dd371485</msdn-id>\t\n            <unmanaged>D2D_SIZE_F ID2D1Layer::GetSize()</unmanaged>\t\n            <unmanaged-short>ID2D1Layer::GetSize</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Layer.#ctor(SharpDX.Direct2D1.RenderTarget)\">\n            <summary>\t\n            Creates a layer resource that can be used with this render target and its compatible render targets. The new layer has the specified initial size. The layer resource is allocated to the minimum size when {{PushLayer}} is called.\n            </summary>\t\n            <remarks>\t\n            Regardless of whether a size is initially specified, the layer automatically resizes as needed.\t\n            </remarks>\t\n            <param name=\"renderTarget\">an instance of <see cref=\"T:SharpDX.Direct2D1.RenderTarget\"/></param>\n            <unmanaged>HRESULT CreateLayer([In, Optional] const D2D1_SIZE_F* size,[Out] ID2D1Layer** layer)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Layer.#ctor(SharpDX.Direct2D1.RenderTarget,System.Nullable{SharpDX.DrawingSizeF})\">\n            <summary>\t\n            Creates a layer resource that can be used with this render target and its compatible render targets. The new layer has the specified initial size.  \t\n            </summary>\t\n            <remarks>\t\n            Regardless of whether a size is initially specified, the layer automatically resizes as needed.\t\n            </remarks>\t\n            <param name=\"renderTarget\">an instance of <see cref=\"T:SharpDX.Direct2D1.RenderTarget\"/></param>\n            <param name=\"size\">If (0, 0) is specified, no backing store is created behind the layer resource. The layer resource is allocated to the minimum size when {{PushLayer}} is called.</param>\n            <unmanaged>HRESULT CreateLayer([In, Optional] const D2D1_SIZE_F* size,[Out] ID2D1Layer** layer)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct2D1.Layer.Size\">\n            <summary>\t\n            <p>Gets the size of the layer in device-independent pixels. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1Layer::GetSize']/*\"/>\t\n            <msdn-id>dd371485</msdn-id>\t\n            <unmanaged>GetSize</unmanaged>\t\n            <unmanaged-short>GetSize</unmanaged-short>\t\n            <unmanaged>D2D_SIZE_F ID2D1Layer::GetSize()</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.LinearGradientBrush\">\n            <summary>\t\n            <p>Paints an area with a linear gradient.  </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>An <strong><see cref=\"T:SharpDX.Direct2D1.LinearGradientBrush\"/></strong> paints an area with a linear gradient along a line between the brush start point and end   point. The gradient, defined by the brush <strong><see cref=\"T:SharpDX.Direct2D1.GradientStopCollection\"/></strong>, is extruded perpendicular to this line, and then transformed by a brush transform (if specified).  </p><p>The start point and end   point are described in the brush space and are mappped to the render target when the brush is used. Note the starting and ending coordinates are absolute, not relative to the render target size. A value of (0, 0) maps to the upper-left corner of the render target, while a value of (1, 1) maps one pixel diagonally away from (0, 0). If there is a nonidentity brush transform or render target transform, the brush start point and end point are also transformed.  </p><p>It is possible to specify a gradient axis that does not completely fill the area that is being painted. When this occurs, the <strong><see cref=\"T:SharpDX.Direct2D1.ExtendMode\"/></strong>, specified by the   <strong><see cref=\"T:SharpDX.Direct2D1.GradientStopCollection\"/></strong>, determines how the remaining area is painted. \t\n            </p>Creating <see cref=\"T:SharpDX.Direct2D1.LinearGradientBrush\"/> Objects<p>To create a linear gradient brush, use the <strong><see cref=\"M:SharpDX.Direct2D1.RenderTarget.CreateLinearGradientBrush(SharpDX.Direct2D1.LinearGradientBrushProperties,System.Nullable{SharpDX.Direct2D1.BrushProperties},SharpDX.Direct2D1.GradientStopCollection,SharpDX.Direct2D1.LinearGradientBrush)\"/></strong> method of the render target on which the brush will be used. The brush can only be used with the render target that created it or with  the compatible targets for that render target.</p><p>A linear gradient brush is a device-dependent resource: your application should create linear gradient brushes after it initializes the render target with which the brushes will be used, and recreate the brushes whenever the render target needs recreated. (For more information about resources, see Resources Overview.)</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1LinearGradientBrush']/*\"/>\t\n            <msdn-id>dd371488</msdn-id>\t\n            <unmanaged>ID2D1LinearGradientBrush</unmanaged>\t\n            <unmanaged-short>ID2D1LinearGradientBrush</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.LinearGradientBrush.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct2D1.LinearGradientBrush\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.LinearGradientBrush.op_Explicit(System.IntPtr)~SharpDX.Direct2D1.LinearGradientBrush\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct2D1.LinearGradientBrush\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.LinearGradientBrush.SetStartPoint(SharpDX.DrawingPointF)\">\n            <summary>\t\n            <p>Sets the starting coordinates of the linear gradient in the brush's coordinate space.  </p>\t\n            </summary>\t\n            <param name=\"startPoint\"><dd>  <p>The starting two-dimensional coordinates of the linear gradient, in the brush's coordinate space.</p> </dd></param>\t\n            <remarks>\t\n            <p>The start point and end point are described in the brush's space and are mapped to the render target when the brush is used.  If there is a non-identity brush transform or render target transform, the brush's start point and end point are also transformed.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1LinearGradientBrush::SetStartPoint']/*\"/>\t\n            <msdn-id>dd371505</msdn-id>\t\n            <unmanaged>void ID2D1LinearGradientBrush::SetStartPoint([In] D2D_POINT_2F startPoint)</unmanaged>\t\n            <unmanaged-short>ID2D1LinearGradientBrush::SetStartPoint</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.LinearGradientBrush.SetEndPoint(SharpDX.DrawingPointF)\">\n            <summary>\t\n            <p>Sets the ending coordinates of the linear gradient in the brush's coordinate space.</p>\t\n            </summary>\t\n            <param name=\"endPoint\"><dd>  <p>The ending two-dimensional coordinates of the linear gradient, in the brush's coordinate space.</p> </dd></param>\t\n            <remarks>\t\n            <p>The start point and end point are described in the brush's space and are mapped to the render target when the brush is used.  If there is a non-identity brush transform or render target transform, the brush's start point and end point are also transformed.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1LinearGradientBrush::SetEndPoint']/*\"/>\t\n            <msdn-id>dd371501</msdn-id>\t\n            <unmanaged>void ID2D1LinearGradientBrush::SetEndPoint([In] D2D_POINT_2F endPoint)</unmanaged>\t\n            <unmanaged-short>ID2D1LinearGradientBrush::SetEndPoint</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.LinearGradientBrush.GetStartPoint\">\n            <summary>\t\n            <p>Retrieves the starting coordinates of the linear gradient. </p>\t\n            </summary>\t\n            <returns><p>The starting two-dimensional coordinates of the linear gradient, in the brush's coordinate space.</p></returns>\t\n            <remarks>\t\n            <p>The start point and end point are described in the brush's space and are mapped to the render target when the brush is used.  If there is a non-identity brush transform or render target transform, the brush's start point and end point are also transformed.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1LinearGradientBrush::GetStartPoint']/*\"/>\t\n            <msdn-id>dd371497</msdn-id>\t\n            <unmanaged>D2D_POINT_2F ID2D1LinearGradientBrush::GetStartPoint()</unmanaged>\t\n            <unmanaged-short>ID2D1LinearGradientBrush::GetStartPoint</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.LinearGradientBrush.GetEndPoint\">\n            <summary>\t\n            <p>Retrieves the ending coordinates of the linear gradient. </p>\t\n            </summary>\t\n            <returns><p>The ending two-dimensional coordinates of the linear gradient, in the brush's coordinate space.</p></returns>\t\n            <remarks>\t\n            <p>The start point and end point are described in the brush's space and are mapped to the render target when the brush is used.  If there is a non-identity brush transform or render target transform, the brush's start point and end point are also transformed.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1LinearGradientBrush::GetEndPoint']/*\"/>\t\n            <msdn-id>dd371492</msdn-id>\t\n            <unmanaged>D2D_POINT_2F ID2D1LinearGradientBrush::GetEndPoint()</unmanaged>\t\n            <unmanaged-short>ID2D1LinearGradientBrush::GetEndPoint</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.LinearGradientBrush.GetGradientStopCollection(SharpDX.Direct2D1.GradientStopCollection@)\">\n            <summary>\t\n            <p> Retrieves the <strong><see cref=\"T:SharpDX.Direct2D1.GradientStopCollection\"/></strong> associated with this linear gradient brush.</p>\t\n            </summary>\t\n            <param name=\"gradientStopCollection\">No documentation.</param>\t\n            <remarks>\t\n            <p> <strong><see cref=\"T:SharpDX.Direct2D1.GradientStopCollection\"/></strong> contains an array of <strong><see cref=\"T:SharpDX.Direct2D1.GradientStop\"/></strong> structures and information, such as the extend mode and the color interpolation mode.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1LinearGradientBrush::GetGradientStopCollection']/*\"/>\t\n            <msdn-id>dd371496</msdn-id>\t\n            <unmanaged>void ID2D1LinearGradientBrush::GetGradientStopCollection([Out] ID2D1GradientStopCollection** gradientStopCollection)</unmanaged>\t\n            <unmanaged-short>ID2D1LinearGradientBrush::GetGradientStopCollection</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.LinearGradientBrush.#ctor(SharpDX.Direct2D1.RenderTarget,SharpDX.Direct2D1.LinearGradientBrushProperties,SharpDX.Direct2D1.GradientStopCollection)\">\n            <summary>\t\n            Creates an <see cref=\"T:SharpDX.Direct2D1.LinearGradientBrush\"/> that contains the specified gradient stops and has the specified transform and base opacity. \t\n            </summary>\t\n            <param name=\"renderTarget\">an instance of <see cref=\"T:SharpDX.Direct2D1.RenderTarget\"/></param>\n            <param name=\"linearGradientBrushProperties\">The start and end points of the gradient.</param>\n            <param name=\"gradientStopCollection\">A collection of <see cref=\"T:SharpDX.Direct2D1.GradientStop\"/> structures that describe the colors in the brush's gradient and their locations along the gradient line.</param>\n            <unmanaged>HRESULT CreateLinearGradientBrush([In] const D2D1_LINEAR_GRADIENT_BRUSH_PROPERTIES* linearGradientBrushProperties,[In, Optional] const D2D1_BRUSH_PROPERTIES* brushProperties,[In] ID2D1GradientStopCollection* gradientStopCollection,[Out] ID2D1LinearGradientBrush** linearGradientBrush)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.LinearGradientBrush.#ctor(SharpDX.Direct2D1.RenderTarget,SharpDX.Direct2D1.LinearGradientBrushProperties,System.Nullable{SharpDX.Direct2D1.BrushProperties},SharpDX.Direct2D1.GradientStopCollection)\">\n            <summary>\t\n            Creates an <see cref=\"T:SharpDX.Direct2D1.LinearGradientBrush\"/> that contains the specified gradient stops and has the specified transform and base opacity. \t\n            </summary>\t\n            <param name=\"renderTarget\">an instance of <see cref=\"T:SharpDX.Direct2D1.RenderTarget\"/></param>\n            <param name=\"linearGradientBrushProperties\">The start and end points of the gradient.</param>\n            <param name=\"brushProperties\">The transform and base opacity of the new brush, or NULL. If this value is NULL, the brush defaults to a base opacity of 1.0f and the identity matrix as its transformation.</param>\n            <param name=\"gradientStopCollection\">A collection of <see cref=\"T:SharpDX.Direct2D1.GradientStop\"/> structures that describe the colors in the brush's gradient and their locations along the gradient line.</param>\n            <unmanaged>HRESULT CreateLinearGradientBrush([In] const D2D1_LINEAR_GRADIENT_BRUSH_PROPERTIES* linearGradientBrushProperties,[In, Optional] const D2D1_BRUSH_PROPERTIES* brushProperties,[In] ID2D1GradientStopCollection* gradientStopCollection,[Out] ID2D1LinearGradientBrush** linearGradientBrush)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct2D1.LinearGradientBrush.StartPoint\">\n            <summary>\t\n            <p>Retrieves or sets the starting coordinates of the linear gradient. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The start point and end point are described in the brush's space and are mapped to the render target when the brush is used.  If there is a non-identity brush transform or render target transform, the brush's start point and end point are also transformed.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1LinearGradientBrush::GetStartPoint']/*\"/>\t\n            <msdn-id>dd371497</msdn-id>\t\n            <unmanaged>GetStartPoint / SetStartPoint</unmanaged>\t\n            <unmanaged-short>GetStartPoint</unmanaged-short>\t\n            <unmanaged>D2D_POINT_2F ID2D1LinearGradientBrush::GetStartPoint()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct2D1.LinearGradientBrush.EndPoint\">\n            <summary>\t\n            <p>Retrieves or sets the ending coordinates of the linear gradient. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The start point and end point are described in the brush's space and are mapped to the render target when the brush is used.  If there is a non-identity brush transform or render target transform, the brush's start point and end point are also transformed.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1LinearGradientBrush::GetEndPoint']/*\"/>\t\n            <msdn-id>dd371492</msdn-id>\t\n            <unmanaged>GetEndPoint / SetEndPoint</unmanaged>\t\n            <unmanaged-short>GetEndPoint</unmanaged-short>\t\n            <unmanaged>D2D_POINT_2F ID2D1LinearGradientBrush::GetEndPoint()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct2D1.LinearGradientBrush.GradientStopCollection\">\n            <summary>\t\n            <p> Retrieves the <strong><see cref=\"T:SharpDX.Direct2D1.GradientStopCollection\"/></strong> associated with this linear gradient brush.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p> <strong><see cref=\"T:SharpDX.Direct2D1.GradientStopCollection\"/></strong> contains an array of <strong><see cref=\"T:SharpDX.Direct2D1.GradientStop\"/></strong> structures and information, such as the extend mode and the color interpolation mode.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1LinearGradientBrush::GetGradientStopCollection']/*\"/>\t\n            <msdn-id>dd371496</msdn-id>\t\n            <unmanaged>GetGradientStopCollection</unmanaged>\t\n            <unmanaged-short>GetGradientStopCollection</unmanaged-short>\t\n            <unmanaged>void ID2D1LinearGradientBrush::GetGradientStopCollection([Out] ID2D1GradientStopCollection** gradientStopCollection)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.Mesh\">\n            <summary>\t\n            <p>Represents a set of vertices that form a list of triangles.  </p>\t\n            </summary>\t\n            <remarks>\t\n            Creating <see cref=\"T:SharpDX.Direct2D1.Mesh\"/> Objects<p>To create a mesh, call the <strong><see cref=\"M:SharpDX.Direct2D1.RenderTarget.CreateMesh(SharpDX.Direct2D1.Mesh)\"/></strong> method on the render target with which the mesh will be used. A mesh can only be used with the render target that created it and the render target's compatible targets.</p><p>A mesh is a device-dependent resource: your application should create meshes after it initializes the render target with which the meshes will be used, and recreate the meshes whenever the render target needs recreated. (For more information about resources, see Resources Overview.)</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1Mesh']/*\"/>\t\n            <msdn-id>dd371508</msdn-id>\t\n            <unmanaged>ID2D1Mesh</unmanaged>\t\n            <unmanaged-short>ID2D1Mesh</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Mesh.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct2D1.Mesh\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Mesh.op_Explicit(System.IntPtr)~SharpDX.Direct2D1.Mesh\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct2D1.Mesh\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Mesh.Open_(SharpDX.Direct2D1.TessellationSink@)\">\n            <summary>\t\n            <p>Opens the mesh for population.</p>\t\n            </summary>\t\n            <param name=\"tessellationSink\"><dd>  <p>When this method returns, contains a reference to a reference to an <strong><see cref=\"T:SharpDX.Direct2D1.TessellationSink\"/></strong> that is used to populate the mesh. This parameter is passed uninitialized.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1Mesh::Open']/*\"/>\t\n            <msdn-id>dd371510</msdn-id>\t\n            <unmanaged>HRESULT ID2D1Mesh::Open([Out] ID2D1TessellationSink** tessellationSink)</unmanaged>\t\n            <unmanaged-short>ID2D1Mesh::Open</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Mesh.#ctor(SharpDX.Direct2D1.RenderTarget)\">\n            <summary>\t\n            Create a mesh that uses triangles to describe a shape.\t\n            </summary>\t\n            <remarks>\t\n            To populate a mesh, use its {{Open}} method to obtain an <see cref=\"T:SharpDX.Direct2D1.TessellationSink\"/>. To draw the mesh, use the render target's {{FillMesh}} method.\t\n            </remarks>\t\n            <param name=\"renderTarget\">an instance of <see cref=\"T:SharpDX.Direct2D1.RenderTarget\"/></param>\n            <unmanaged>HRESULT CreateMesh([Out] ID2D1Mesh** mesh)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Mesh.#ctor(SharpDX.Direct2D1.RenderTarget,SharpDX.Direct2D1.Triangle[])\">\n            <summary>\t\n            Create a mesh that uses triangles to describe a shape and populates it with triangles.\n            </summary>\t\n            <param name=\"renderTarget\">an instance of <see cref=\"T:SharpDX.Direct2D1.RenderTarget\"/></param>\n            <param name=\"triangles\">An array of <see cref=\"T:SharpDX.Direct2D1.Triangle\"/> structures that describe the triangles to add to this mesh.</param>\n            <unmanaged>HRESULT CreateMesh([Out] ID2D1Mesh** mesh)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.Mesh.Open\">\n            <summary>\t\n            Opens the mesh for population.\t\n            </summary>\t\n            <returns>When this method returns, contains a pointer to a pointer to an <see cref=\"T:SharpDX.Direct2D1.TessellationSink\"/> that is used to populate the mesh. This parameter is passed uninitialized.</returns>\n            <unmanaged>HRESULT Open([Out] ID2D1TessellationSink** tessellationSink)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.PathGeometry\">\n            <summary>\t\n            <p>Represents a complex shape that may be composed of arcs, curves, and lines.  </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>An <strong><see cref=\"T:SharpDX.Direct2D1.PathGeometry\"/></strong> object enables you to describe a geometric path. To describe an <strong><see cref=\"T:SharpDX.Direct2D1.PathGeometry\"/></strong> object's path, use the object's  <strong>Open</strong> method to retrieve an <strong><see cref=\"T:SharpDX.Direct2D1.GeometrySink\"/></strong>. Use the sink to populate the path geometry with figures and segments. </p>Creating <see cref=\"T:SharpDX.Direct2D1.PathGeometry\"/> Objects<p>To create a path geometry, use the <strong><see cref=\"M:SharpDX.Direct2D1.Factory.CreatePathGeometry(SharpDX.Direct2D1.PathGeometry)\"/></strong> method.   </p><p><strong><see cref=\"T:SharpDX.Direct2D1.PathGeometry\"/></strong> objects are device-independent resources created by <strong><see cref=\"T:SharpDX.Direct2D1.Factory\"/></strong>.  In general, you should create geometries once and retain them for the life of the application, or until they need to be modified. For more information about device-independent and device-dependent resources, see  the Resources Overview. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1PathGeometry']/*\"/>\t\n            <msdn-id>dd371512</msdn-id>\t\n            <unmanaged>ID2D1PathGeometry</unmanaged>\t\n            <unmanaged-short>ID2D1PathGeometry</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.PathGeometry.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct2D1.PathGeometry\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.PathGeometry.op_Explicit(System.IntPtr)~SharpDX.Direct2D1.PathGeometry\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct2D1.PathGeometry\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.PathGeometry.Open\">\n            <summary>\t\n            <p>Retrieves the geometry sink that is used to populate the path geometry with figures and segments. </p>\t\n            </summary>\t\n            <returns><dd>  <p>When this method returns, <em>geometrySink</em> contains the address of a reference to the geometry sink that is used to populate the path geometry with figures and segments. This parameter is passed uninitialized.</p> </dd></returns>\t\n            <remarks>\t\n            <p>Because path geometries are immutable and can only be populated once, it is an error to call <strong>Open</strong> on a path geometry more than once.</p><p>Note that the fill mode defaults to <strong><see cref=\"F:SharpDX.Direct2D1.FillMode.Alternate\"/></strong>. To set the fill mode, call <strong>SetFillMode</strong> before the first call to <strong>BeginFigure</strong>. Failure to do so will put the geometry sink in an error state. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1PathGeometry::Open']/*\"/>\t\n            <msdn-id>dd371522</msdn-id>\t\n            <unmanaged>HRESULT ID2D1PathGeometry::Open([Out] ID2D1GeometrySink** geometrySink)</unmanaged>\t\n            <unmanaged-short>ID2D1PathGeometry::Open</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.PathGeometry.Stream_(System.IntPtr)\">\n            <summary>\t\n            <p>Copies the contents of the path geometry to the specified <strong><see cref=\"T:SharpDX.Direct2D1.GeometrySink\"/></strong>.</p>\t\n            </summary>\t\n            <param name=\"geometrySink\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1PathGeometry::Stream']/*\"/>\t\n            <msdn-id>dd371525</msdn-id>\t\n            <unmanaged>HRESULT ID2D1PathGeometry::Stream([In] ID2D1GeometrySink* geometrySink)</unmanaged>\t\n            <unmanaged-short>ID2D1PathGeometry::Stream</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.PathGeometry.GetSegmentCount(System.Int32@)\">\n            <summary>\t\n            <p>Retrieves the number of segments in the path geometry. </p>\t\n            </summary>\t\n            <param name=\"count\"><dd>  <p>A reference that receives the number of segments in the path geometry when this method returns. You must allocate storage for this parameter.   </p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1PathGeometry::GetSegmentCount']/*\"/>\t\n            <msdn-id>dd371520</msdn-id>\t\n            <unmanaged>HRESULT ID2D1PathGeometry::GetSegmentCount([Out] unsigned int* count)</unmanaged>\t\n            <unmanaged-short>ID2D1PathGeometry::GetSegmentCount</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.PathGeometry.GetFigureCount(System.Int32@)\">\n            <summary>\t\n            <p>Retrieves the number of figures in the path geometry. </p>\t\n            </summary>\t\n            <param name=\"count\"><dd>  <p>A reference that receives the number of figures in the path geometry when this method returns. You must allocate storage for this parameter.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1PathGeometry::GetFigureCount']/*\"/>\t\n            <msdn-id>dd371515</msdn-id>\t\n            <unmanaged>HRESULT ID2D1PathGeometry::GetFigureCount([Out] unsigned int* count)</unmanaged>\t\n            <unmanaged-short>ID2D1PathGeometry::GetFigureCount</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.PathGeometry.#ctor(SharpDX.Direct2D1.Factory)\">\n            <summary>\t\n            Creates an empty <see cref=\"T:SharpDX.Direct2D1.PathGeometry\"/>.\t\n            </summary>\t\n            <param name=\"factory\">an instance of <see cref=\"T:SharpDX.Direct2D1.Factory\"/></param>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.PathGeometry.Stream(SharpDX.Direct2D1.GeometrySink)\">\n            <summary>\t\n            Copies the contents of the path geometry to the specified <see cref=\"T:SharpDX.Direct2D1.GeometrySink\"/>.\t\n            </summary>\t\n            <param name=\"geometrySink\">The sink to which the path geometry's contents are copied. Modifying this sink does not change the contents of this path geometry.</param>\n            <returns>If the method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code.</returns>\n            <unmanaged>HRESULT Stream([In] ID2D1GeometrySink* geometrySink)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct2D1.PathGeometry.SegmentCount\">\n            <summary>\t\n            <p>Retrieves the number of segments in the path geometry. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1PathGeometry::GetSegmentCount']/*\"/>\t\n            <msdn-id>dd371520</msdn-id>\t\n            <unmanaged>GetSegmentCount</unmanaged>\t\n            <unmanaged-short>GetSegmentCount</unmanaged-short>\t\n            <unmanaged>HRESULT ID2D1PathGeometry::GetSegmentCount([Out] unsigned int* count)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct2D1.PathGeometry.FigureCount\">\n            <summary>\t\n            <p>Retrieves the number of figures in the path geometry. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1PathGeometry::GetFigureCount']/*\"/>\t\n            <msdn-id>dd371515</msdn-id>\t\n            <unmanaged>GetFigureCount</unmanaged>\t\n            <unmanaged-short>GetFigureCount</unmanaged-short>\t\n            <unmanaged>HRESULT ID2D1PathGeometry::GetFigureCount([Out] unsigned int* count)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.RadialGradientBrush\">\n            <summary>\t\n            <p> Paints an area with a radial gradient.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The <strong><see cref=\"T:SharpDX.Direct2D1.RadialGradientBrush\"/></strong> is similar to the <strong><see cref=\"T:SharpDX.Direct2D1.LinearGradientBrush\"/></strong> in that they both map a collection of gradient stops to a gradient. However, the linear gradient has a start and an end point to define the gradient vector, while the radial gradient uses an ellipse and a gradient origin to define its gradient behavior. To define the position and size of the ellipse, use the <strong>SetCenter</strong>, <strong>SetRadiusX</strong>, and <strong>SetRadiusY</strong> methods to specify the center, x-radius, and y-radius of the ellipse. The gradient origin is the center of the ellipse, unless a gradient offset is specified by using the <strong>SetGradientOriginOffset</strong> method.</p><p>The brush maps the gradient stop position 0.0f of the gradient origin, and the position 1.0f is mapped to the ellipse boundary. When the gradient origin is within the ellipse, the contents of the ellipse enclose the entire [0, 1] range of the brush gradient stops. If the gradient origin is outside the bounds of the ellipse, the brush still works, but its gradient is not well-defined.</p><p>The start point and end point are described in the brush space and are mappped to the render target when the brush is used. Note the starting and ending coordinates are absolute, not relative to the render target size. A value of (0, 0) maps to the upper-left corner of the render target, while a value of (1, 1) maps just one pixel diagonally away from (0, 0). If there is a nonidentity brush transform or render target transform, the brush ellipse and gradient origin are also transformed.</p><p>It is possible to specify an ellipse that does not completely fill area being painted. When this occurs,       the            <strong><see cref=\"T:SharpDX.Direct2D1.ExtendMode\"/></strong> and  setting (specified by the  brush     <strong><see cref=\"T:SharpDX.Direct2D1.GradientStopCollection\"/></strong>) determines how the remaining area is painted. \t\n            </p>Creating <see cref=\"T:SharpDX.Direct2D1.RadialGradientBrush\"/> Objects<p>To create a radial gradient brush, use the <strong><see cref=\"M:SharpDX.Direct2D1.RenderTarget.CreateRadialGradientBrush(SharpDX.Direct2D1.RadialGradientBrushProperties@,System.Nullable{SharpDX.Direct2D1.BrushProperties},SharpDX.Direct2D1.GradientStopCollection,SharpDX.Direct2D1.RadialGradientBrush)\"/></strong> method of the render target on which the brush will be used. The brush may be used only with the render target that created it or with the compatible targets for that render target.</p><p>A radial gradient brush is a device-dependent resource: your application should create radial gradient brushes after it initializes the render target with which the brushes will be used, and recreate the brushes whenever the render target needs recreated. (For more information about resources, see Resources Overview.)</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1RadialGradientBrush']/*\"/>\t\n            <msdn-id>dd371529</msdn-id>\t\n            <unmanaged>ID2D1RadialGradientBrush</unmanaged>\t\n            <unmanaged-short>ID2D1RadialGradientBrush</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RadialGradientBrush.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct2D1.RadialGradientBrush\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RadialGradientBrush.op_Explicit(System.IntPtr)~SharpDX.Direct2D1.RadialGradientBrush\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct2D1.RadialGradientBrush\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RadialGradientBrush.SetCenter(SharpDX.DrawingPointF)\">\n            <summary>\t\n            <p>Specifies the center of the gradient ellipse in the brush's coordinate space. </p>\t\n            </summary>\t\n            <param name=\"center\"><dd>  <p>The center of the gradient ellipse, in the brush's coordinate space.</p> </dd></param>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1RadialGradientBrush::SetCenter']/*\"/>\t\n            <msdn-id>dd371547</msdn-id>\t\n            <unmanaged>void ID2D1RadialGradientBrush::SetCenter([In] D2D_POINT_2F center)</unmanaged>\t\n            <unmanaged-short>ID2D1RadialGradientBrush::SetCenter</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RadialGradientBrush.SetGradientOriginOffset(SharpDX.DrawingPointF)\">\n            <summary>\t\n            <p>Specifies the offset of the gradient origin relative to the gradient ellipse's center.</p>\t\n            </summary>\t\n            <param name=\"gradientOriginOffset\"><dd>  <p>The offset of the gradient origin from the center of the gradient ellipse.</p> </dd></param>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1RadialGradientBrush::SetGradientOriginOffset']/*\"/>\t\n            <msdn-id>dd371550</msdn-id>\t\n            <unmanaged>void ID2D1RadialGradientBrush::SetGradientOriginOffset([In] D2D_POINT_2F gradientOriginOffset)</unmanaged>\t\n            <unmanaged-short>ID2D1RadialGradientBrush::SetGradientOriginOffset</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RadialGradientBrush.SetRadiusX(System.Single)\">\n            <summary>\t\n            <p> Specifies the x-radius of the gradient ellipse, in the brush's coordinate space.</p>\t\n            </summary>\t\n            <param name=\"radiusX\"><dd>  <p>The x-radius of the gradient ellipse. This value is in the brush's coordinate space.</p> </dd></param>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1RadialGradientBrush::SetRadiusX']/*\"/>\t\n            <msdn-id>dd371553</msdn-id>\t\n            <unmanaged>void ID2D1RadialGradientBrush::SetRadiusX([In] float radiusX)</unmanaged>\t\n            <unmanaged-short>ID2D1RadialGradientBrush::SetRadiusX</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RadialGradientBrush.SetRadiusY(System.Single)\">\n            <summary>\t\n            <p>Specifies the y-radius of the gradient ellipse, in the brush's coordinate space. </p>\t\n            </summary>\t\n            <param name=\"radiusY\"><dd>  <p>The y-radius of the gradient ellipse. This value is in the brush's coordinate space.</p> </dd></param>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1RadialGradientBrush::SetRadiusY']/*\"/>\t\n            <msdn-id>dd371557</msdn-id>\t\n            <unmanaged>void ID2D1RadialGradientBrush::SetRadiusY([In] float radiusY)</unmanaged>\t\n            <unmanaged-short>ID2D1RadialGradientBrush::SetRadiusY</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RadialGradientBrush.GetCenter\">\n            <summary>\t\n            <p>Retrieves the center of the gradient ellipse.  </p>\t\n            </summary>\t\n            <returns><p>The center of the gradient ellipse. This value is expressed in the brush's coordinate space.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1RadialGradientBrush::GetCenter']/*\"/>\t\n            <msdn-id>dd371532</msdn-id>\t\n            <unmanaged>D2D_POINT_2F ID2D1RadialGradientBrush::GetCenter()</unmanaged>\t\n            <unmanaged-short>ID2D1RadialGradientBrush::GetCenter</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RadialGradientBrush.GetGradientOriginOffset\">\n            <summary>\t\n            <p>Retrieves the offset of the gradient origin relative to the gradient ellipse's center. </p>\t\n            </summary>\t\n            <returns><p>The offset of the gradient origin from the center of the gradient ellipse. This value is expressed in the brush's coordinate space.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1RadialGradientBrush::GetGradientOriginOffset']/*\"/>\t\n            <msdn-id>dd371535</msdn-id>\t\n            <unmanaged>D2D_POINT_2F ID2D1RadialGradientBrush::GetGradientOriginOffset()</unmanaged>\t\n            <unmanaged-short>ID2D1RadialGradientBrush::GetGradientOriginOffset</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RadialGradientBrush.GetRadiusX\">\n            <summary>\t\n            <p>Retrieves the x-radius of the gradient ellipse. </p>\t\n            </summary>\t\n            <returns><p>The x-radius of the gradient ellipse. This value is expressed in the brush's coordinate space.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1RadialGradientBrush::GetRadiusX']/*\"/>\t\n            <msdn-id>dd371542</msdn-id>\t\n            <unmanaged>float ID2D1RadialGradientBrush::GetRadiusX()</unmanaged>\t\n            <unmanaged-short>ID2D1RadialGradientBrush::GetRadiusX</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RadialGradientBrush.GetRadiusY\">\n            <summary>\t\n            <p>Retrieves the y-radius of the gradient ellipse. </p>\t\n            </summary>\t\n            <returns><p>The y-radius of the gradient ellipse. This value is expressed in the brush's coordinate space.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1RadialGradientBrush::GetRadiusY']/*\"/>\t\n            <msdn-id>dd371544</msdn-id>\t\n            <unmanaged>float ID2D1RadialGradientBrush::GetRadiusY()</unmanaged>\t\n            <unmanaged-short>ID2D1RadialGradientBrush::GetRadiusY</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RadialGradientBrush.GetGradientStopCollection(SharpDX.Direct2D1.GradientStopCollection@)\">\n            <summary>\t\n            <p>Retrieves the <strong><see cref=\"T:SharpDX.Direct2D1.GradientStopCollection\"/></strong> associated with this radial gradient brush object.</p>\t\n            </summary>\t\n            <param name=\"gradientStopCollection\">No documentation.</param>\t\n            <remarks>\t\n            <p> <strong><see cref=\"T:SharpDX.Direct2D1.GradientStopCollection\"/></strong> contains an array of <strong><see cref=\"T:SharpDX.Direct2D1.GradientStop\"/></strong> structures and additional information, such as the extend mode and the color interpolation mode.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1RadialGradientBrush::GetGradientStopCollection']/*\"/>\t\n            <msdn-id>dd371539</msdn-id>\t\n            <unmanaged>void ID2D1RadialGradientBrush::GetGradientStopCollection([Out] ID2D1GradientStopCollection** gradientStopCollection)</unmanaged>\t\n            <unmanaged-short>ID2D1RadialGradientBrush::GetGradientStopCollection</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RadialGradientBrush.#ctor(SharpDX.Direct2D1.RenderTarget,SharpDX.Direct2D1.RadialGradientBrushProperties@,SharpDX.Direct2D1.GradientStopCollection)\">\n            <summary>\t\n            Creates an <see cref=\"T:SharpDX.Direct2D1.RadialGradientBrush\"/> that contains the specified gradient stops and has the specified transform and base opacity. \t\n            </summary>\t\n            <param name=\"renderTarget\">an instance of <see cref=\"T:SharpDX.Direct2D1.RenderTarget\"/></param>\n            <param name=\"radialGradientBrushProperties\">The center, gradient origin offset, and x-radius and y-radius of the brush's gradient.</param>\n            <param name=\"gradientStopCollection\">A collection of <see cref=\"T:SharpDX.Direct2D1.GradientStop\"/> structures that describe the colors in the brush's gradient and their locations along the gradient.</param>\n            <unmanaged>HRESULT CreateRadialGradientBrush([In] const D2D1_RADIAL_GRADIENT_BRUSH_PROPERTIES* radialGradientBrushProperties,[In, Optional] const D2D1_BRUSH_PROPERTIES* brushProperties,[In] ID2D1GradientStopCollection* gradientStopCollection,[Out] ID2D1RadialGradientBrush** radialGradientBrush)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RadialGradientBrush.#ctor(SharpDX.Direct2D1.RenderTarget,SharpDX.Direct2D1.RadialGradientBrushProperties,SharpDX.Direct2D1.GradientStopCollection)\">\n            <summary>\t\n            Creates an <see cref=\"T:SharpDX.Direct2D1.RadialGradientBrush\"/> that contains the specified gradient stops and has the specified transform and base opacity. \t\n            </summary>\t\n            <param name=\"renderTarget\">an instance of <see cref=\"T:SharpDX.Direct2D1.RenderTarget\"/></param>\n            <param name=\"radialGradientBrushProperties\">The center, gradient origin offset, and x-radius and y-radius of the brush's gradient.</param>\n            <param name=\"gradientStopCollection\">A collection of <see cref=\"T:SharpDX.Direct2D1.GradientStop\"/> structures that describe the colors in the brush's gradient and their locations along the gradient.</param>\n            <unmanaged>HRESULT CreateRadialGradientBrush([In] const D2D1_RADIAL_GRADIENT_BRUSH_PROPERTIES* radialGradientBrushProperties,[In, Optional] const D2D1_BRUSH_PROPERTIES* brushProperties,[In] ID2D1GradientStopCollection* gradientStopCollection,[Out] ID2D1RadialGradientBrush** radialGradientBrush)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RadialGradientBrush.#ctor(SharpDX.Direct2D1.RenderTarget,SharpDX.Direct2D1.RadialGradientBrushProperties,SharpDX.Direct2D1.BrushProperties,SharpDX.Direct2D1.GradientStopCollection)\">\n            <summary>\t\n            Creates an <see cref=\"T:SharpDX.Direct2D1.RadialGradientBrush\"/> that contains the specified gradient stops and has the specified transform and base opacity. \t\n            </summary>\t\n            <param name=\"renderTarget\">an instance of <see cref=\"T:SharpDX.Direct2D1.RenderTarget\"/></param>\n            <param name=\"radialGradientBrushProperties\">The center, gradient origin offset, and x-radius and y-radius of the brush's gradient.</param>\n            <param name=\"brushProperties\">The transform and base opacity of the new brush, or NULL. If this value is NULL, the brush defaults to a base opacity of 1.0f and the identity matrix as its transformation.</param>\n            <param name=\"gradientStopCollection\">A collection of <see cref=\"T:SharpDX.Direct2D1.GradientStop\"/> structures that describe the colors in the brush's gradient and their locations along the gradient.</param>\n            <unmanaged>HRESULT CreateRadialGradientBrush([In] const D2D1_RADIAL_GRADIENT_BRUSH_PROPERTIES* radialGradientBrushProperties,[In, Optional] const D2D1_BRUSH_PROPERTIES* brushProperties,[In] ID2D1GradientStopCollection* gradientStopCollection,[Out] ID2D1RadialGradientBrush** radialGradientBrush)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RadialGradientBrush.#ctor(SharpDX.Direct2D1.RenderTarget,SharpDX.Direct2D1.RadialGradientBrushProperties@,System.Nullable{SharpDX.Direct2D1.BrushProperties},SharpDX.Direct2D1.GradientStopCollection)\">\n            <summary>\t\n            Creates an <see cref=\"T:SharpDX.Direct2D1.RadialGradientBrush\"/> that contains the specified gradient stops and has the specified transform and base opacity. \t\n            </summary>\n            <param name=\"renderTarget\">an instance of <see cref=\"T:SharpDX.Direct2D1.RenderTarget\"/></param>\n            <param name=\"radialGradientBrushProperties\">The center, gradient origin offset, and x-radius and y-radius of the brush's gradient.</param>\n            <param name=\"brushProperties\">The transform and base opacity of the new brush, or NULL. If this value is NULL, the brush defaults to a base opacity of 1.0f and the identity matrix as its transformation.</param>\n            <param name=\"gradientStopCollection\">A collection of <see cref=\"T:SharpDX.Direct2D1.GradientStop\"/> structures that describe the colors in the brush's gradient and their locations along the gradient.</param>\n            <unmanaged>HRESULT CreateRadialGradientBrush([In] const D2D1_RADIAL_GRADIENT_BRUSH_PROPERTIES* radialGradientBrushProperties,[In, Optional] const D2D1_BRUSH_PROPERTIES* brushProperties,[In] ID2D1GradientStopCollection* gradientStopCollection,[Out] ID2D1RadialGradientBrush** radialGradientBrush)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct2D1.RadialGradientBrush.Center\">\n            <summary>\t\n            <p>Retrieves or sets the center of the gradient ellipse.  </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1RadialGradientBrush::GetCenter']/*\"/>\t\n            <msdn-id>dd371532</msdn-id>\t\n            <unmanaged>GetCenter / SetCenter</unmanaged>\t\n            <unmanaged-short>GetCenter</unmanaged-short>\t\n            <unmanaged>D2D_POINT_2F ID2D1RadialGradientBrush::GetCenter()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct2D1.RadialGradientBrush.GradientOriginOffset\">\n            <summary>\t\n            <p>Retrieves or sets the offset of the gradient origin relative to the gradient ellipse's center. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1RadialGradientBrush::GetGradientOriginOffset']/*\"/>\t\n            <msdn-id>dd371535</msdn-id>\t\n            <unmanaged>GetGradientOriginOffset / SetGradientOriginOffset</unmanaged>\t\n            <unmanaged-short>GetGradientOriginOffset</unmanaged-short>\t\n            <unmanaged>D2D_POINT_2F ID2D1RadialGradientBrush::GetGradientOriginOffset()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct2D1.RadialGradientBrush.RadiusX\">\n            <summary>\t\n            <p>Retrieves or sets the x-radius of the gradient ellipse. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1RadialGradientBrush::GetRadiusX']/*\"/>\t\n            <msdn-id>dd371542</msdn-id>\t\n            <unmanaged>GetRadiusX / SetRadiusX</unmanaged>\t\n            <unmanaged-short>GetRadiusX</unmanaged-short>\t\n            <unmanaged>float ID2D1RadialGradientBrush::GetRadiusX()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct2D1.RadialGradientBrush.RadiusY\">\n            <summary>\t\n            <p>Retrieves or sets the y-radius of the gradient ellipse. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1RadialGradientBrush::GetRadiusY']/*\"/>\t\n            <msdn-id>dd371544</msdn-id>\t\n            <unmanaged>GetRadiusY / SetRadiusY</unmanaged>\t\n            <unmanaged-short>GetRadiusY</unmanaged-short>\t\n            <unmanaged>float ID2D1RadialGradientBrush::GetRadiusY()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct2D1.RadialGradientBrush.GradientStopCollection\">\n            <summary>\t\n            <p>Retrieves the <strong><see cref=\"T:SharpDX.Direct2D1.GradientStopCollection\"/></strong> associated with this radial gradient brush object.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p> <strong><see cref=\"T:SharpDX.Direct2D1.GradientStopCollection\"/></strong> contains an array of <strong><see cref=\"T:SharpDX.Direct2D1.GradientStop\"/></strong> structures and additional information, such as the extend mode and the color interpolation mode.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1RadialGradientBrush::GetGradientStopCollection']/*\"/>\t\n            <msdn-id>dd371539</msdn-id>\t\n            <unmanaged>GetGradientStopCollection</unmanaged>\t\n            <unmanaged-short>GetGradientStopCollection</unmanaged-short>\t\n            <unmanaged>void ID2D1RadialGradientBrush::GetGradientStopCollection([Out] ID2D1GradientStopCollection** gradientStopCollection)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.RectangleGeometry\">\n            <summary>\t\n            <p>Describes a two-dimensional rectangle.  </p>\t\n            </summary>\t\n            <remarks>\t\n            Creating <see cref=\"T:SharpDX.Direct2D1.RectangleGeometry\"/> Objects<p>To create a rectangle geometry, use the <strong><see cref=\"M:SharpDX.Direct2D1.Factory.CreateRectangleGeometry(SharpDX.RectangleF,SharpDX.Direct2D1.RectangleGeometry)\"/></strong> method.</p><p>Direct2D geometries are immutable and device-independent resources created by <strong><see cref=\"T:SharpDX.Direct2D1.Factory\"/></strong>.  In general, you should create geometries once and retain them for the life of the application, or until they need to be modified. For more information about device-independent and device-dependent resources, see  the Resources Overview. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1RectangleGeometry']/*\"/>\t\n            <msdn-id>dd371561</msdn-id>\t\n            <unmanaged>ID2D1RectangleGeometry</unmanaged>\t\n            <unmanaged-short>ID2D1RectangleGeometry</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RectangleGeometry.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct2D1.RectangleGeometry\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RectangleGeometry.op_Explicit(System.IntPtr)~SharpDX.Direct2D1.RectangleGeometry\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct2D1.RectangleGeometry\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RectangleGeometry.GetRectangle(SharpDX.RectangleF@)\">\n            <summary>\t\n            <p> Retrieves the rectangle that describes the rectangle geometry's dimensions.</p>\t\n            </summary>\t\n            <param name=\"rect\"><dd>  <p>Contains a reference to a rectangle that describes the rectangle geometry's dimensions when this method returns. You must allocate storage for this parameter. </p> </dd></param>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1RectangleGeometry::GetRect']/*\"/>\t\n            <msdn-id>dd371762</msdn-id>\t\n            <unmanaged>void ID2D1RectangleGeometry::GetRect([Out] D2D_RECT_F* rect)</unmanaged>\t\n            <unmanaged-short>ID2D1RectangleGeometry::GetRect</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RectangleGeometry.#ctor(SharpDX.Direct2D1.Factory,SharpDX.RectangleF)\">\n            <summary>\t\n             Creates an <see cref=\"T:SharpDX.Direct2D1.RectangleGeometry\"/>. \t\n            </summary>\t\n            <param name=\"factory\">an instance of <see cref=\"T:SharpDX.Direct2D1.Factory\"/></param>\n            <param name=\"rectangle\">The coordinates of the rectangle geometry. </param>\n        </member>\n        <member name=\"P:SharpDX.Direct2D1.RectangleGeometry.Rectangle\">\n            <summary>\t\n            <p> Retrieves the rectangle that describes the rectangle geometry's dimensions.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1RectangleGeometry::GetRect']/*\"/>\t\n            <msdn-id>dd371762</msdn-id>\t\n            <unmanaged>GetRect</unmanaged>\t\n            <unmanaged-short>GetRect</unmanaged-short>\t\n            <unmanaged>void ID2D1RectangleGeometry::GetRect([Out] D2D_RECT_F* rect)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.RoundedRectangleGeometry\">\n            <summary>\t\n            <p>Retrieves a rounded rectangle that describes this rounded rectangle geometry. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1RoundedRectangleGeometry']/*\"/>\t\n            <msdn-id>dd316917</msdn-id>\t\n            <unmanaged>ID2D1RoundedRectangleGeometry</unmanaged>\t\n            <unmanaged-short>ID2D1RoundedRectangleGeometry</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RoundedRectangleGeometry.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct2D1.RoundedRectangleGeometry\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RoundedRectangleGeometry.op_Explicit(System.IntPtr)~SharpDX.Direct2D1.RoundedRectangleGeometry\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct2D1.RoundedRectangleGeometry\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RoundedRectangleGeometry.GetRoundedRect(SharpDX.Direct2D1.RoundedRectangle@)\">\n            <summary>\t\n            <p>Retrieves a rounded rectangle that describes this rounded rectangle geometry. </p>\t\n            </summary>\t\n            <param name=\"roundedRect\"><dd>  <p>A reference that receives a rounded rectangle that describes this rounded rectangle geometry. You must allocate storage for this parameter. </p> </dd></param>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1RoundedRectangleGeometry::GetRoundedRect']/*\"/>\t\n            <msdn-id>dd316917</msdn-id>\t\n            <unmanaged>void ID2D1RoundedRectangleGeometry::GetRoundedRect([Out] D2D1_ROUNDED_RECT* roundedRect)</unmanaged>\t\n            <unmanaged-short>ID2D1RoundedRectangleGeometry::GetRoundedRect</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RoundedRectangleGeometry.#ctor(SharpDX.Direct2D1.Factory,SharpDX.Direct2D1.RoundedRectangle)\">\n            <summary>\t\n             Creates an <see cref=\"T:SharpDX.Direct2D1.RoundedRectangleGeometry\"/>. \t\n            </summary>\t\n            <param name=\"factory\">an instance of <see cref=\"T:SharpDX.Direct2D1.Factory\"/></param>\n            <param name=\"roundedRectangle\">The coordinates and corner radii of the rounded rectangle geometry.</param>\n        </member>\n        <member name=\"P:SharpDX.Direct2D1.RoundedRectangleGeometry.RoundedRect\">\n            <summary>\t\n            <p>Retrieves a rounded rectangle that describes this rounded rectangle geometry. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1RoundedRectangleGeometry::GetRoundedRect']/*\"/>\t\n            <msdn-id>dd316917</msdn-id>\t\n            <unmanaged>GetRoundedRect</unmanaged>\t\n            <unmanaged-short>GetRoundedRect</unmanaged-short>\t\n            <unmanaged>void ID2D1RoundedRectangleGeometry::GetRoundedRect([Out] D2D1_ROUNDED_RECT* roundedRect)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.SolidColorBrush\">\n            <summary>\t\n            <p>Paints an area with a solid color. </p>\t\n            </summary>\t\n            <remarks>\t\n            Creating <see cref=\"T:SharpDX.Direct2D1.SolidColorBrush\"/> Objects<p>To create a solid color brush, use the <strong><see cref=\"M:SharpDX.Direct2D1.RenderTarget.CreateSolidColorBrush(SharpDX.Color4,System.Nullable{SharpDX.Direct2D1.BrushProperties},SharpDX.Direct2D1.SolidColorBrush)\"/></strong> method of the render target  on which the brush will be used. The brush can only be used with the render target that created it or with  the compatible targets for that render target.</p><p>A solid color brush is a device-dependent resource. (For more information about resources, see Resources Overview.)</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1SolidColorBrush']/*\"/>\t\n            <msdn-id>dd372207</msdn-id>\t\n            <unmanaged>ID2D1SolidColorBrush</unmanaged>\t\n            <unmanaged-short>ID2D1SolidColorBrush</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.SolidColorBrush.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct2D1.SolidColorBrush\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.SolidColorBrush.op_Explicit(System.IntPtr)~SharpDX.Direct2D1.SolidColorBrush\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct2D1.SolidColorBrush\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.SolidColorBrush.SetColor(SharpDX.Color4)\">\n            <summary>\t\n            <p> Specifies the color of this solid-color brush. </p>\t\n            </summary>\t\n            <param name=\"color\"><dd>  <p>The color of this solid-color brush.</p> </dd></param>\t\n            <remarks>\t\n            <p>To help create colors, Direct2D provides the <strong>ColorF</strong> class. It offers several helper methods for creating colors and provides a set or predefined colors. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1SolidColorBrush::SetColor']/*\"/>\t\n            <msdn-id>dd372215</msdn-id>\t\n            <unmanaged>void ID2D1SolidColorBrush::SetColor([In] const D2D_COLOR_F* color)</unmanaged>\t\n            <unmanaged-short>ID2D1SolidColorBrush::SetColor</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.SolidColorBrush.GetColor\">\n            <summary>\t\n            <p> Retrieves the color of the solid color brush.</p>\t\n            </summary>\t\n            <returns><p>The color of this solid color brush.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1SolidColorBrush::GetColor']/*\"/>\t\n            <msdn-id>dd372209</msdn-id>\t\n            <unmanaged>D2D_COLOR_F ID2D1SolidColorBrush::GetColor()</unmanaged>\t\n            <unmanaged-short>ID2D1SolidColorBrush::GetColor</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.SolidColorBrush.#ctor(SharpDX.Direct2D1.RenderTarget,SharpDX.Color4)\">\n            <summary>\t\n            Creates a new <see cref=\"T:SharpDX.Direct2D1.SolidColorBrush\"/> that has the specified color and opacity. \t\n            </summary>\t\n            <param name=\"renderTarget\">an instance of <see cref=\"T:SharpDX.Direct2D1.RenderTarget\"/></param>\n            <param name=\"color\">The red, green, blue, and alpha values of the brush's color.</param>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.SolidColorBrush.#ctor(SharpDX.Direct2D1.RenderTarget,SharpDX.Color4,System.Nullable{SharpDX.Direct2D1.BrushProperties})\">\n            <summary>\t\n            Creates a new <see cref=\"T:SharpDX.Direct2D1.SolidColorBrush\"/> that has the specified color and opacity. \t\n            </summary>\t\n            <param name=\"renderTarget\">an instance of <see cref=\"T:SharpDX.Direct2D1.RenderTarget\"/></param>\n            <param name=\"color\">The red, green, blue, and alpha values of the brush's color.</param>\n            <param name=\"brushProperties\">The base opacity of the brush.</param>\n        </member>\n        <member name=\"P:SharpDX.Direct2D1.SolidColorBrush.Color\">\n            <summary>\t\n            <p>Retrieves or sets the color of the solid color brush.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1SolidColorBrush::GetColor']/*\"/>\t\n            <msdn-id>dd372209</msdn-id>\t\n            <unmanaged>GetColor / SetColor</unmanaged>\t\n            <unmanaged-short>GetColor</unmanaged-short>\t\n            <unmanaged>D2D_COLOR_F ID2D1SolidColorBrush::GetColor()</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.StrokeStyle\">\n            <summary>\t\n            <p>Describes the caps, miter limit, line join, and dash information for a stroke.</p>\t\n            </summary>\t\n            <remarks>\t\n            Creating <see cref=\"T:SharpDX.Direct2D1.StrokeStyle\"/> Objects<p>To create a stroke style, use the <strong><see cref=\"M:SharpDX.Direct2D1.Factory.CreateStrokeStyle(SharpDX.Direct2D1.StrokeStyleProperties@,System.Single[],System.Int32,SharpDX.Direct2D1.StrokeStyle)\"/></strong> method.</p><p>A stroke style is a device-indenpendent resource; you can create it once then retain it for the life of your application. For more information about resources, see the Resources Overview.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1StrokeStyle']/*\"/>\t\n            <msdn-id>dd372217</msdn-id>\t\n            <unmanaged>ID2D1StrokeStyle</unmanaged>\t\n            <unmanaged-short>ID2D1StrokeStyle</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.StrokeStyle.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct2D1.StrokeStyle\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.StrokeStyle.op_Explicit(System.IntPtr)~SharpDX.Direct2D1.StrokeStyle\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct2D1.StrokeStyle\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.StrokeStyle.GetStartCap\">\n            <summary>\t\n            <p> Retrieves the type of shape used at the beginning of a stroke.  </p>\t\n            </summary>\t\n            <returns><p>The type of shape used at the beginning of a stroke.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1StrokeStyle::GetStartCap']/*\"/>\t\n            <msdn-id>dd372244</msdn-id>\t\n            <unmanaged>D2D1_CAP_STYLE ID2D1StrokeStyle::GetStartCap()</unmanaged>\t\n            <unmanaged-short>ID2D1StrokeStyle::GetStartCap</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.StrokeStyle.GetEndCap\">\n            <summary>\t\n            <p>Retrieves the type of shape used at the end of a stroke. </p>\t\n            </summary>\t\n            <returns><p>The type of shape used at the end of a stroke.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1StrokeStyle::GetEndCap']/*\"/>\t\n            <msdn-id>dd372238</msdn-id>\t\n            <unmanaged>D2D1_CAP_STYLE ID2D1StrokeStyle::GetEndCap()</unmanaged>\t\n            <unmanaged-short>ID2D1StrokeStyle::GetEndCap</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.StrokeStyle.GetDashCap\">\n            <summary>\t\n            <p>Gets a value that specifies how the ends of each dash are drawn. </p>\t\n            </summary>\t\n            <returns><p>A value that specifies how the ends of each dash are drawn.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1StrokeStyle::GetDashCap']/*\"/>\t\n            <msdn-id>dd372218</msdn-id>\t\n            <unmanaged>D2D1_CAP_STYLE ID2D1StrokeStyle::GetDashCap()</unmanaged>\t\n            <unmanaged-short>ID2D1StrokeStyle::GetDashCap</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.StrokeStyle.GetMiterLimit\">\n            <summary>\t\n            <p>Retrieves the limit on the ratio of the miter length to half the stroke's thickness. </p>\t\n            </summary>\t\n            <returns><p>A positive number greater than or equal to 1.0f that describes the limit on the ratio of the miter length to half the stroke's thickness.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1StrokeStyle::GetMiterLimit']/*\"/>\t\n            <msdn-id>dd372242</msdn-id>\t\n            <unmanaged>float ID2D1StrokeStyle::GetMiterLimit()</unmanaged>\t\n            <unmanaged-short>ID2D1StrokeStyle::GetMiterLimit</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.StrokeStyle.GetLineJoin\">\n            <summary>\t\n            <p>Retrieves the type of joint used at the vertices of a shape's outline.  </p>\t\n            </summary>\t\n            <returns><p>A value that specifies the type of joint used at the vertices of a shape's outline.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1StrokeStyle::GetLineJoin']/*\"/>\t\n            <msdn-id>dd372240</msdn-id>\t\n            <unmanaged>D2D1_LINE_JOIN ID2D1StrokeStyle::GetLineJoin()</unmanaged>\t\n            <unmanaged-short>ID2D1StrokeStyle::GetLineJoin</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.StrokeStyle.GetDashOffset\">\n            <summary>\t\n            <p>Retrieves a value that specifies how far in the dash sequence the stroke will start.  </p>\t\n            </summary>\t\n            <returns><p>A value that specifies how far in the dash sequence the stroke will start. </p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1StrokeStyle::GetDashOffset']/*\"/>\t\n            <msdn-id>dd372234</msdn-id>\t\n            <unmanaged>float ID2D1StrokeStyle::GetDashOffset()</unmanaged>\t\n            <unmanaged-short>ID2D1StrokeStyle::GetDashOffset</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.StrokeStyle.GetDashStyle\">\n            <summary>\t\n            <p>Gets a value that describes the stroke's dash pattern. </p>\t\n            </summary>\t\n            <returns><p>A value that describes the predefined dash pattern used, or <strong><see cref=\"F:SharpDX.Direct2D1.DashStyle.Custom\"/></strong> if a custom dash style is used.</p></returns>\t\n            <remarks>\t\n            <p>If a custom dash style is specified, the dash pattern is described by the dashes array, which can be retrieved by calling the <strong>GetDashes</strong> method.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1StrokeStyle::GetDashStyle']/*\"/>\t\n            <msdn-id>dd372236</msdn-id>\t\n            <unmanaged>D2D1_DASH_STYLE ID2D1StrokeStyle::GetDashStyle()</unmanaged>\t\n            <unmanaged-short>ID2D1StrokeStyle::GetDashStyle</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.StrokeStyle.GetDashesCount\">\n            <summary>\t\n            <p>Retrieves the number of entries in the dashes array. </p>\t\n            </summary>\t\n            <returns><p>The number of entries in the dashes array if the stroke is dashed; otherwise, 0.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1StrokeStyle::GetDashesCount']/*\"/>\t\n            <msdn-id>dd372232</msdn-id>\t\n            <unmanaged>unsigned int ID2D1StrokeStyle::GetDashesCount()</unmanaged>\t\n            <unmanaged-short>ID2D1StrokeStyle::GetDashesCount</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.StrokeStyle.GetDashes(System.Single[],System.Int32)\">\n            <summary>\t\n            <p>Copies the dash pattern to the specified array. </p>\t\n            </summary>\t\n            <param name=\"dashes\"><dd>  <p>A reference to an array that will receive the dash pattern. The array must be able to contain at least as many elements as specified by <em>dashesCount</em>. You must allocate storage for this array.</p> </dd></param>\t\n            <param name=\"dashesCount\"><dd>  <p>The number of dashes to copy. If this value is less than the number of dashes in the stroke style's dashes array, the returned dashes are truncated to <em>dashesCount</em>. If this value is greater than the number of dashes in the stroke style's dashes array, the extra dashes are set to 0.0f. To obtain the actual number of dashes in the stroke style's dashes array, use the <strong>GetDashesCount</strong> method. </p> </dd></param>\t\n            <remarks>\t\n            <p>The dashes are specified in units that are a multiple of the stroke width, with subsequent members of the array indicating the dashes and gaps between dashes: the first entry indicates a filled dash, the second a gap, and so on. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1StrokeStyle::GetDashes']/*\"/>\t\n            <msdn-id>dd372230</msdn-id>\t\n            <unmanaged>void ID2D1StrokeStyle::GetDashes([Out, Buffer] float* dashes,[In] unsigned int dashesCount)</unmanaged>\t\n            <unmanaged-short>ID2D1StrokeStyle::GetDashes</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.StrokeStyle.#ctor(SharpDX.Direct2D1.Factory,SharpDX.Direct2D1.StrokeStyleProperties)\">\n            <summary>\n            Creates an <see cref=\"T:SharpDX.Direct2D1.StrokeStyle\"/> that describes start cap, dash pattern, and other features of a stroke.\t\n            </summary>\t\n            <param name=\"factory\">an instance of <see cref=\"T:SharpDX.Direct2D1.Factory\"/></param>\n            <param name=\"properties\">a definition for this render target</param>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.StrokeStyle.#ctor(SharpDX.Direct2D1.Factory,SharpDX.Direct2D1.StrokeStyleProperties,System.Single[])\">\n            <summary>\n            Creates an <see cref=\"T:SharpDX.Direct2D1.StrokeStyle\"/> that describes start cap, dash pattern, and other features of a stroke.\t\n            </summary>\t\n            <param name=\"factory\">an instance of <see cref=\"T:SharpDX.Direct2D1.Factory\"/></param>\n            <param name=\"properties\">A structure that describes the stroke's line cap, dash offset, and other details of a stroke.</param>\n            <param name=\"dashes\">An array whose elements are set to the length of each dash and space in the dash pattern. The first element sets the length of a dash, the second element sets the length of a space, the third element sets the length of a dash, and so on. The length of each dash and space in the dash pattern is the product of the element value in the array and the stroke width. </param>\n        </member>\n        <member name=\"P:SharpDX.Direct2D1.StrokeStyle.StartCap\">\n            <summary>\t\n            <p> Retrieves the type of shape used at the beginning of a stroke.  </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1StrokeStyle::GetStartCap']/*\"/>\t\n            <msdn-id>dd372244</msdn-id>\t\n            <unmanaged>GetStartCap</unmanaged>\t\n            <unmanaged-short>GetStartCap</unmanaged-short>\t\n            <unmanaged>D2D1_CAP_STYLE ID2D1StrokeStyle::GetStartCap()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct2D1.StrokeStyle.EndCap\">\n            <summary>\t\n            <p>Retrieves the type of shape used at the end of a stroke. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1StrokeStyle::GetEndCap']/*\"/>\t\n            <msdn-id>dd372238</msdn-id>\t\n            <unmanaged>GetEndCap</unmanaged>\t\n            <unmanaged-short>GetEndCap</unmanaged-short>\t\n            <unmanaged>D2D1_CAP_STYLE ID2D1StrokeStyle::GetEndCap()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct2D1.StrokeStyle.DashCap\">\n            <summary>\t\n            <p>Gets a value that specifies how the ends of each dash are drawn. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1StrokeStyle::GetDashCap']/*\"/>\t\n            <msdn-id>dd372218</msdn-id>\t\n            <unmanaged>GetDashCap</unmanaged>\t\n            <unmanaged-short>GetDashCap</unmanaged-short>\t\n            <unmanaged>D2D1_CAP_STYLE ID2D1StrokeStyle::GetDashCap()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct2D1.StrokeStyle.MiterLimit\">\n            <summary>\t\n            <p>Retrieves the limit on the ratio of the miter length to half the stroke's thickness. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1StrokeStyle::GetMiterLimit']/*\"/>\t\n            <msdn-id>dd372242</msdn-id>\t\n            <unmanaged>GetMiterLimit</unmanaged>\t\n            <unmanaged-short>GetMiterLimit</unmanaged-short>\t\n            <unmanaged>float ID2D1StrokeStyle::GetMiterLimit()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct2D1.StrokeStyle.LineJoin\">\n            <summary>\t\n            <p>Retrieves the type of joint used at the vertices of a shape's outline.  </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1StrokeStyle::GetLineJoin']/*\"/>\t\n            <msdn-id>dd372240</msdn-id>\t\n            <unmanaged>GetLineJoin</unmanaged>\t\n            <unmanaged-short>GetLineJoin</unmanaged-short>\t\n            <unmanaged>D2D1_LINE_JOIN ID2D1StrokeStyle::GetLineJoin()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct2D1.StrokeStyle.DashOffset\">\n            <summary>\t\n            <p>Retrieves a value that specifies how far in the dash sequence the stroke will start.  </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1StrokeStyle::GetDashOffset']/*\"/>\t\n            <msdn-id>dd372234</msdn-id>\t\n            <unmanaged>GetDashOffset</unmanaged>\t\n            <unmanaged-short>GetDashOffset</unmanaged-short>\t\n            <unmanaged>float ID2D1StrokeStyle::GetDashOffset()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct2D1.StrokeStyle.DashStyle\">\n            <summary>\t\n            <p>Gets a value that describes the stroke's dash pattern. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>If a custom dash style is specified, the dash pattern is described by the dashes array, which can be retrieved by calling the <strong>GetDashes</strong> method.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1StrokeStyle::GetDashStyle']/*\"/>\t\n            <msdn-id>dd372236</msdn-id>\t\n            <unmanaged>GetDashStyle</unmanaged>\t\n            <unmanaged-short>GetDashStyle</unmanaged-short>\t\n            <unmanaged>D2D1_DASH_STYLE ID2D1StrokeStyle::GetDashStyle()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct2D1.StrokeStyle.DashesCount\">\n            <summary>\t\n            <p>Retrieves the number of entries in the dashes array. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1StrokeStyle::GetDashesCount']/*\"/>\t\n            <msdn-id>dd372232</msdn-id>\t\n            <unmanaged>GetDashesCount</unmanaged>\t\n            <unmanaged-short>GetDashesCount</unmanaged-short>\t\n            <unmanaged>unsigned int ID2D1StrokeStyle::GetDashesCount()</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.TessellationSink\">\n            <summary>\t\n            <p>Populates an <strong><see cref=\"T:SharpDX.Direct2D1.Mesh\"/></strong> object with triangles. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1TessellationSink']/*\"/>\t\n            <msdn-id>dd372245</msdn-id>\t\n            <unmanaged>ID2D1TessellationSink</unmanaged>\t\n            <unmanaged-short>ID2D1TessellationSink</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.TessellationSink.AddTriangles(SharpDX.Direct2D1.Triangle[])\">\n            <summary>\t\n            Copies the specified triangles to the sink.  \t\n            </summary>\t\n            <param name=\"triangles\">An array of <see cref=\"T:SharpDX.Direct2D1.Triangle\"/> structures that describe the triangles to add to the sink.</param>\n            <unmanaged>void AddTriangles([In, Buffer] const D2D1_TRIANGLE* triangles,[None] UINT trianglesCount)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.TessellationSink.Close\">\n            <summary>\t\n             Closes the sink.\t\n            </summary>\t\n            <unmanaged>HRESULT Close()</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.TessellationSinkNative\">\n            <summary>\t\n            <p>Populates an <strong><see cref=\"T:SharpDX.Direct2D1.Mesh\"/></strong> object with triangles. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1TessellationSink']/*\"/>\t\n            <msdn-id>dd372245</msdn-id>\t\n            <unmanaged>ID2D1TessellationSink</unmanaged>\t\n            <unmanaged-short>ID2D1TessellationSink</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.TessellationSinkNative.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct2D1.TessellationSinkNative\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.TessellationSinkNative.op_Explicit(System.IntPtr)~SharpDX.Direct2D1.TessellationSinkNative\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct2D1.TessellationSinkNative\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.TessellationSinkNative.AddTriangles_(SharpDX.Direct2D1.Triangle[],System.Int32)\">\n            <summary>\t\n            <p>Copies the specified triangles to the sink.  </p>\t\n            </summary>\t\n            <param name=\"triangles\"><dd>  <p>An array of <strong><see cref=\"T:SharpDX.Direct2D1.Triangle\"/></strong> structures that describe the triangles to add to the sink.</p> </dd></param>\t\n            <param name=\"trianglesCount\"><dd>  <p>The number of triangles to copy from the <em>triangles</em> array.</p> </dd></param>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1TessellationSink::AddTriangles']/*\"/>\t\n            <msdn-id>dd372248</msdn-id>\t\n            <unmanaged>void ID2D1TessellationSink::AddTriangles([In, Buffer] const D2D1_TRIANGLE* triangles,[In] unsigned int trianglesCount)</unmanaged>\t\n            <unmanaged-short>ID2D1TessellationSink::AddTriangles</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.TessellationSinkNative.Close_\">\n            <summary>\t\n            <p> Closes the sink and returns its error status.</p>\t\n            </summary>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1TessellationSink::Close']/*\"/>\t\n            <msdn-id>dd372250</msdn-id>\t\n            <unmanaged>HRESULT ID2D1TessellationSink::Close()</unmanaged>\t\n            <unmanaged-short>ID2D1TessellationSink::Close</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.TransformedGeometry\">\n            <summary>\t\n            <p>Represents a geometry that has been transformed. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Using an <strong><see cref=\"T:SharpDX.Direct2D1.TransformedGeometry\"/></strong> rather than transforming a geometry by using a render target's transform enables you to transform a geometry without transforming its stroke.</p>Creating <see cref=\"T:SharpDX.Direct2D1.TransformedGeometry\"/> Objects<p>To create an <strong><see cref=\"T:SharpDX.Direct2D1.TransformedGeometry\"/></strong>, call the <strong><see cref=\"M:SharpDX.Direct2D1.Factory.CreateTransformedGeometry(SharpDX.Direct2D1.Geometry,SharpDX.Matrix3x2@,SharpDX.Direct2D1.TransformedGeometry)\"/></strong> method.</p><p>Direct2D geometries are immutable and device-independent resources created by <strong><see cref=\"T:SharpDX.Direct2D1.Factory\"/></strong>.  In general, you should create geometries once and retain them for the life of the application, or until they need to be modified. For more information about device-independent and device-dependent resources, see  the Resources Overview.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1TransformedGeometry']/*\"/>\t\n            <msdn-id>dd372252</msdn-id>\t\n            <unmanaged>ID2D1TransformedGeometry</unmanaged>\t\n            <unmanaged-short>ID2D1TransformedGeometry</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.TransformedGeometry.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct2D1.TransformedGeometry\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.TransformedGeometry.op_Explicit(System.IntPtr)~SharpDX.Direct2D1.TransformedGeometry\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct2D1.TransformedGeometry\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.TransformedGeometry.GetSourceGeometry(SharpDX.Direct2D1.Geometry@)\">\n            <summary>\t\n            <p>Retrieves the source geometry of this transformed geometry object. </p>\t\n            </summary>\t\n            <param name=\"sourceGeometry\"><dd>  <p>When this method returns, contains a reference to a reference to the source geometry for this transformed geometry object. This parameter is passed uninitialized.</p> </dd></param>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1TransformedGeometry::GetSourceGeometry']/*\"/>\t\n            <msdn-id>dd372255</msdn-id>\t\n            <unmanaged>void ID2D1TransformedGeometry::GetSourceGeometry([Out] ID2D1Geometry** sourceGeometry)</unmanaged>\t\n            <unmanaged-short>ID2D1TransformedGeometry::GetSourceGeometry</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.TransformedGeometry.GetTransform(SharpDX.Matrix3x2@)\">\n            <summary>\t\n            <p>Retrieves the matrix used to transform the <strong><see cref=\"T:SharpDX.Direct2D1.TransformedGeometry\"/></strong> object's source geometry. </p>\t\n            </summary>\t\n            <param name=\"transform\">No documentation.</param>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1TransformedGeometry::GetTransform']/*\"/>\t\n            <msdn-id>dd372256</msdn-id>\t\n            <unmanaged>void ID2D1TransformedGeometry::GetTransform([Out] D2D_MATRIX_3X2_F* transform)</unmanaged>\t\n            <unmanaged-short>ID2D1TransformedGeometry::GetTransform</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.TransformedGeometry.#ctor(SharpDX.Direct2D1.Factory,SharpDX.Direct2D1.Geometry,SharpDX.Matrix3x2)\">\n            <summary>\n            Default Constructor for a <see cref=\"T:SharpDX.Direct2D1.TransformedGeometry\"/>.\n            </summary>\n            <param name=\"factory\">an instance of <see cref=\"T:SharpDX.Direct2D1.Factory\"/></param>\n            <param name=\"geometrySource\"></param>\n            <param name=\"matrix3X2\"></param>\n        </member>\n        <member name=\"P:SharpDX.Direct2D1.TransformedGeometry.SourceGeometry\">\n            <summary>\t\n            <p>Retrieves the source geometry of this transformed geometry object. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1TransformedGeometry::GetSourceGeometry']/*\"/>\t\n            <msdn-id>dd372255</msdn-id>\t\n            <unmanaged>GetSourceGeometry</unmanaged>\t\n            <unmanaged-short>GetSourceGeometry</unmanaged-short>\t\n            <unmanaged>void ID2D1TransformedGeometry::GetSourceGeometry([Out] ID2D1Geometry** sourceGeometry)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct2D1.TransformedGeometry.Transform\">\n            <summary>\t\n            <p>Retrieves the matrix used to transform the <strong><see cref=\"T:SharpDX.Direct2D1.TransformedGeometry\"/></strong> object's source geometry. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1TransformedGeometry::GetTransform']/*\"/>\t\n            <msdn-id>dd372256</msdn-id>\t\n            <unmanaged>GetTransform</unmanaged>\t\n            <unmanaged-short>GetTransform</unmanaged-short>\t\n            <unmanaged>void ID2D1TransformedGeometry::GetTransform([Out] D2D_MATRIX_3X2_F* transform)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.WindowRenderTarget\">\n            <summary>\t\n            <p>Renders drawing instructions to a window.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>As is the case with other render targets, you must call <strong>BeginDraw</strong> before issuing drawing commands. After you've finished drawing, call <strong>EndDraw</strong> to indicate that drawing is finished and to release access to the buffer backing the render target. For <strong><see cref=\"T:SharpDX.Direct2D1.WindowRenderTarget\"/></strong>, the only side effect of <strong>BeginDraw</strong> is changing the state of the render target to allow drawing commands to be issued. <strong>EndDraw</strong> flushes any batched drawing commands. If no errors have occurred, then it also presents the buffer, causing it to appear on the associated window. Finally, <strong>EndDraw</strong> returns the <see cref=\"T:SharpDX.Result\"/> of the first error that occurred in drawing or presenting, as well as the tag state at the time the error occurred.</p><p><strong><see cref=\"T:SharpDX.Direct2D1.WindowRenderTarget\"/></strong> objects are double buffered, so drawing commands issued do not appear immediately, but rather are performed on an offscreen surface. When <strong>EndDraw</strong> is called, if there have been no rendering errors, the offscreen buffer is presented. If there have been rendering errors in the batch flushed by <strong>EndDraw</strong>, then the buffer is not presented, and the application must call <strong>BeginDraw</strong> and re-draw the frame. <strong>Flush</strong> can be used to check for errors before calling <strong>EndDraw</strong> if an application wants the frame to be presented regardless of errors. </p><p>A hardware render target's back-buffer is the size specified by <strong>GetPixelSize</strong>. If <strong>EndDraw</strong> presents the buffer, this bitmap is stretched to cover the surface where it is presented: the entire client area of the window. This stretch is performed using bilinear filtering if the render target is rendering in hardware and using nearest-neighbor filtering if the rendering target is using software. (Typically, an application will call <strong>Resize</strong> to ensure the pixel size of the render target and the pixel size of the destination match, and no scaling is necessary, though this is not a requirement.) </p><p>In the case where a window straddles adapters, Direct2D ensures that the portion of the off-screen render target is copied from the adapter where rendering is occurring to the adapter that needs to display the contents. If the adapter a render target is on has been removed or the driver upgraded while the application is running, this is returned as an error in the <strong>EndDraw</strong> call. In this case, the application should create a new render target and resources as necessary.\t\n            </p>Creating <see cref=\"T:SharpDX.Direct2D1.WindowRenderTarget\"/> Objects<p>To create an <strong><see cref=\"T:SharpDX.Direct2D1.WindowRenderTarget\"/></strong>, use the <strong><see cref=\"M:SharpDX.Direct2D1.Factory.CreateHwndRenderTarget(SharpDX.Direct2D1.RenderTargetProperties@,SharpDX.Direct2D1.HwndRenderTargetProperties,SharpDX.Direct2D1.WindowRenderTarget)\"/></strong> method.</p><p>Your application should create render targets once and hold onto them for the life of the application or until the render target's  <strong>EndDraw</strong> method returns the <strong><see cref=\"F:SharpDX.Direct2D1.ResultCode.RecreateTarget\"/></strong> error. When you receive this error, you need to recreate the render target (and any resources it created).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1HwndRenderTarget']/*\"/>\t\n            <msdn-id>dd371461</msdn-id>\t\n            <unmanaged>ID2D1HwndRenderTarget</unmanaged>\t\n            <unmanaged-short>ID2D1HwndRenderTarget</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.WindowRenderTarget.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct2D1.WindowRenderTarget\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.WindowRenderTarget.op_Explicit(System.IntPtr)~SharpDX.Direct2D1.WindowRenderTarget\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct2D1.WindowRenderTarget\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.WindowRenderTarget.CheckWindowState\">\n            <summary>\t\n            <p>Indicates whether the <see cref=\"T:System.IntPtr\"/> associated with this render target is occluded. </p>\t\n            </summary>\t\n            <returns><p>A value that indicates whether the <see cref=\"T:System.IntPtr\"/> associated with this render target is occluded.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??If the window was occluded the last time  that <strong>EndDraw</strong> was called, the next time that the render target calls <strong>CheckWindowState</strong>, it will return <strong><see cref=\"F:SharpDX.Direct2D1.WindowState.Occluded\"/></strong> regardless of the current window state. If you want to use <strong>CheckWindowState</strong> to determine the current window state, you should call <strong>CheckWindowState</strong> after every <strong>EndDraw</strong> call and ignore its return value. This call will ensure that your next call to <strong>CheckWindowState</strong> state will return the actual window state.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1HwndRenderTarget::CheckWindowState']/*\"/>\t\n            <msdn-id>dd371466</msdn-id>\t\n            <unmanaged>D2D1_WINDOW_STATE ID2D1HwndRenderTarget::CheckWindowState()</unmanaged>\t\n            <unmanaged-short>ID2D1HwndRenderTarget::CheckWindowState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.WindowRenderTarget.Resize(SharpDX.DrawingSize)\">\n            <summary>\t\n            Changes the size of the render target to the specified pixel size.Overload list\t\n            </summary>\t\n            <param name=\"ixelSizeRef\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <remarks>\t\n            <p>After this method is called, the contents of the render target's back-buffer are not defined, even if the <strong><see cref=\"F:SharpDX.Direct2D1.PresentOptions.RetainContents\"/></strong> option was specified when the render target was created.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1HwndRenderTarget::Resize']/*\"/>\t\n            <msdn-id>dd742774</msdn-id>\t\n            <unmanaged>HRESULT ID2D1HwndRenderTarget::Resize([In] const D2D_SIZE_U* pixelSize)</unmanaged>\t\n            <unmanaged-short>ID2D1HwndRenderTarget::Resize</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.WindowRenderTarget.GetHwnd\">\n            <summary>\t\n            <p> Returns the <see cref=\"T:System.IntPtr\"/> associated with this render target.</p>\t\n            </summary>\t\n            <returns><p>The <see cref=\"T:System.IntPtr\"/> associated with this render target.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1HwndRenderTarget::GetHwnd']/*\"/>\t\n            <msdn-id>dd371470</msdn-id>\t\n            <unmanaged>HWND ID2D1HwndRenderTarget::GetHwnd()</unmanaged>\t\n            <unmanaged-short>ID2D1HwndRenderTarget::GetHwnd</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.WindowRenderTarget.#ctor(SharpDX.Direct2D1.Factory,SharpDX.Direct2D1.RenderTargetProperties,SharpDX.Direct2D1.HwndRenderTargetProperties)\">\n            <summary>\t\n            Creates an <see cref=\"T:SharpDX.Direct2D1.WindowRenderTarget\"/>, a render target that renders to a window.\t\n            </summary>\t\n            <remarks>\t\n            When you create a render target and hardware acceleration is available, you allocate resources on the computer's GPU. By creating a render target once and retaining it as long as possible, you gain performance benefits. Your application should create render targets once and hold onto them for the life of the application or until the {{D2DERR_RECREATE_TARGET}} error is received. When you receive this error, you need to recreate the render target (and any resources it created).\t\n            </remarks>\n            <param name=\"factory\">an instance of <see cref=\"T:SharpDX.Direct2D1.Factory\"/></param>\n            <param name=\"renderTargetProperties\">The rendering mode, pixel format, remoting options, DPI information, and the minimum DirectX support required for hardware rendering. For information about supported pixel formats, see  {{Supported Pixel  Formats and Alpha Modes}}.</param>\n            <param name=\"hwndProperties\">The window handle, initial size (in pixels), and present options.</param>\n        </member>\n        <member name=\"P:SharpDX.Direct2D1.WindowRenderTarget.Hwnd\">\n            <summary>\t\n            <p> Returns the <see cref=\"T:System.IntPtr\"/> associated with this render target.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID2D1HwndRenderTarget::GetHwnd']/*\"/>\t\n            <msdn-id>dd371470</msdn-id>\t\n            <unmanaged>GetHwnd</unmanaged>\t\n            <unmanaged-short>GetHwnd</unmanaged-short>\t\n            <unmanaged>HWND ID2D1HwndRenderTarget::GetHwnd()</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.ArcSegment\">\n            <summary>\t\n            <p>Describes an elliptical arc between two points.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_ARC_SEGMENT']/*\"/>\t\n            <msdn-id>dd368065</msdn-id>\t\n            <unmanaged>D2D1_ARC_SEGMENT</unmanaged>\t\n            <unmanaged-short>D2D1_ARC_SEGMENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.ArcSegment.Point\">\n            <summary>\t\n            <dd> <p>The end point of the arc.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_ARC_SEGMENT::point']/*\"/>\t\n            <msdn-id>dd368065</msdn-id>\t\n            <unmanaged>D2D_POINT_2F point</unmanaged>\t\n            <unmanaged-short>D2D_POINT_2F point</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.ArcSegment.Size\">\n            <summary>\t\n            <dd> <p>The x-radius and y-radius of the arc.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_ARC_SEGMENT::size']/*\"/>\t\n            <msdn-id>dd368065</msdn-id>\t\n            <unmanaged>D2D_SIZE_F size</unmanaged>\t\n            <unmanaged-short>D2D_SIZE_F size</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.ArcSegment.RotationAngle\">\n            <summary>\t\n            <dd> <p>A value that specifies how many degrees in the clockwise direction the ellipse is rotated relative to the current coordinate system.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_ARC_SEGMENT::rotationAngle']/*\"/>\t\n            <msdn-id>dd368065</msdn-id>\t\n            <unmanaged>float rotationAngle</unmanaged>\t\n            <unmanaged-short>float rotationAngle</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.ArcSegment.SweepDirection\">\n            <summary>\t\n            <dd> <p>A value that specifies whether the arc sweep is clockwise or counterclockwise.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_ARC_SEGMENT::sweepDirection']/*\"/>\t\n            <msdn-id>dd368065</msdn-id>\t\n            <unmanaged>D2D1_SWEEP_DIRECTION sweepDirection</unmanaged>\t\n            <unmanaged-short>D2D1_SWEEP_DIRECTION sweepDirection</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.ArcSegment.ArcSize\">\n            <summary>\t\n            <dd> <p>A value that specifies whether the given arc is larger than 180 degrees.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_ARC_SEGMENT::arcSize']/*\"/>\t\n            <msdn-id>dd368065</msdn-id>\t\n            <unmanaged>D2D1_ARC_SIZE arcSize</unmanaged>\t\n            <unmanaged-short>D2D1_ARC_SIZE arcSize</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.BezierSegment\">\n            <summary>\t\n            <p>Represents a cubic bezier segment drawn  between two points.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p> A cubic Bezier curve is defined by four points: a start point, an end point (<em>point3</em>), and two control points (<em>point1</em> and <em>point2</em>). A Bezier segment does not contain a property for the starting point of the curve; it defines only the end point. The beginning point of the curve is the current point of the path to which the Bezier curve is added.</p><p> The two control points of a cubic Bezier curve behave like magnets, attracting portions of what would otherwise be a straight line toward themselves and producing a curve. The first control point, <em>point1</em>, affects the beginning portion of the curve; the second control point, <em>point2</em>, affects the ending portion of the curve. </p><p><strong>Note</strong>??The curve doesn't necessarily pass through either of the control points; each control point moves its portion of the line toward itself, but not through itself.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_BEZIER_SEGMENT']/*\"/>\t\n            <msdn-id>dd368070</msdn-id>\t\n            <unmanaged>D2D1_BEZIER_SEGMENT</unmanaged>\t\n            <unmanaged-short>D2D1_BEZIER_SEGMENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.BezierSegment.Point1\">\n            <summary>\t\n            <dd> <p>The first control point for the Bezier segment.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_BEZIER_SEGMENT::point1']/*\"/>\t\n            <msdn-id>dd368070</msdn-id>\t\n            <unmanaged>D2D_POINT_2F point1</unmanaged>\t\n            <unmanaged-short>D2D_POINT_2F point1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.BezierSegment.Point2\">\n            <summary>\t\n            <dd> <p>The second control point for the Bezier segment.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_BEZIER_SEGMENT::point2']/*\"/>\t\n            <msdn-id>dd368070</msdn-id>\t\n            <unmanaged>D2D_POINT_2F point2</unmanaged>\t\n            <unmanaged-short>D2D_POINT_2F point2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.BezierSegment.Point3\">\n            <summary>\t\n            <dd> <p>The end point for the Bezier segment.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_BEZIER_SEGMENT::point3']/*\"/>\t\n            <msdn-id>dd368070</msdn-id>\t\n            <unmanaged>D2D_POINT_2F point3</unmanaged>\t\n            <unmanaged-short>D2D_POINT_2F point3</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.BitmapBrushProperties\">\n            <summary>\t\n            <p> Describes the extend modes and the interpolation mode of an <strong><see cref=\"T:SharpDX.Direct2D1.BitmapBrush\"/></strong>.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_BITMAP_BRUSH_PROPERTIES']/*\"/>\t\n            <msdn-id>dd368071</msdn-id>\t\n            <unmanaged>D2D1_BITMAP_BRUSH_PROPERTIES</unmanaged>\t\n            <unmanaged-short>D2D1_BITMAP_BRUSH_PROPERTIES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.BitmapBrushProperties.ExtendModeX\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_BITMAP_BRUSH_PROPERTIES::extendModeX']/*\"/>\t\n            <unmanaged>D2D1_EXTEND_MODE extendModeX</unmanaged>\t\n            <unmanaged-short>D2D1_EXTEND_MODE extendModeX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.BitmapBrushProperties.ExtendModeY\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_BITMAP_BRUSH_PROPERTIES::extendModeY']/*\"/>\t\n            <unmanaged>D2D1_EXTEND_MODE extendModeY</unmanaged>\t\n            <unmanaged-short>D2D1_EXTEND_MODE extendModeY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.BitmapBrushProperties.InterpolationMode\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_BITMAP_BRUSH_PROPERTIES::interpolationMode']/*\"/>\t\n            <unmanaged>D2D1_BITMAP_INTERPOLATION_MODE interpolationMode</unmanaged>\t\n            <unmanaged-short>D2D1_BITMAP_INTERPOLATION_MODE interpolationMode</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.BrushProperties\">\n            <summary>\t\n            <p> Describes the opacity and transformation of a brush.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure is used when creating a brush. For convenience, Direct2D provides the <strong>D2D1::BrushProperties</strong> function for creating <strong><see cref=\"T:SharpDX.Direct2D1.BrushProperties\"/></strong> structures.</p><p>After creating a brush, you can change its opacity or transform by calling the <strong>SetOpacity</strong> or <strong>SetTransform</strong> methods.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_BRUSH_PROPERTIES']/*\"/>\t\n            <msdn-id>dd368077</msdn-id>\t\n            <unmanaged>D2D1_BRUSH_PROPERTIES</unmanaged>\t\n            <unmanaged-short>D2D1_BRUSH_PROPERTIES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.BrushProperties.Opacity\">\n            <summary>\t\n            <dd> <p>A value between 0.0f and 1.0f, inclusive, that specifies the degree of opacity of the brush.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_BRUSH_PROPERTIES::opacity']/*\"/>\t\n            <msdn-id>dd368077</msdn-id>\t\n            <unmanaged>float opacity</unmanaged>\t\n            <unmanaged-short>float opacity</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.BrushProperties.Transform\">\n            <summary>\t\n            <dd> <p>The transformation that is applied to the brush.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_BRUSH_PROPERTIES::transform']/*\"/>\t\n            <msdn-id>dd368077</msdn-id>\t\n            <unmanaged>D2D_MATRIX_3X2_F transform</unmanaged>\t\n            <unmanaged-short>D2D_MATRIX_3X2_F transform</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.DrawingStateDescription\">\n            <summary>\t\n            <p>Describes the drawing state of a render target.  </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_DRAWING_STATE_DESCRIPTION']/*\"/>\t\n            <msdn-id>dd368093</msdn-id>\t\n            <unmanaged>D2D1_DRAWING_STATE_DESCRIPTION</unmanaged>\t\n            <unmanaged-short>D2D1_DRAWING_STATE_DESCRIPTION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.DrawingStateDescription.AntialiasMode\">\n            <summary>\t\n            <dd> <p>The antialiasing mode for subsequent nontext drawing operations. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_DRAWING_STATE_DESCRIPTION::antialiasMode']/*\"/>\t\n            <msdn-id>dd368093</msdn-id>\t\n            <unmanaged>D2D1_ANTIALIAS_MODE antialiasMode</unmanaged>\t\n            <unmanaged-short>D2D1_ANTIALIAS_MODE antialiasMode</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.DrawingStateDescription.TextAntialiasMode\">\n            <summary>\t\n            <dd> <p>The antialiasing mode for subsequent text and glyph drawing operations.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_DRAWING_STATE_DESCRIPTION::textAntialiasMode']/*\"/>\t\n            <msdn-id>dd368093</msdn-id>\t\n            <unmanaged>D2D1_TEXT_ANTIALIAS_MODE textAntialiasMode</unmanaged>\t\n            <unmanaged-short>D2D1_TEXT_ANTIALIAS_MODE textAntialiasMode</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.DrawingStateDescription.Tag1\">\n            <summary>\t\n            <dd> <p>A label for subsequent drawing operations.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_DRAWING_STATE_DESCRIPTION::tag1']/*\"/>\t\n            <msdn-id>dd368093</msdn-id>\t\n            <unmanaged>unsigned longlong tag1</unmanaged>\t\n            <unmanaged-short>unsigned longlong tag1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.DrawingStateDescription.Tag2\">\n            <summary>\t\n            <dd> <p>A label for subsequent drawing operations.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_DRAWING_STATE_DESCRIPTION::tag2']/*\"/>\t\n            <msdn-id>dd368093</msdn-id>\t\n            <unmanaged>unsigned longlong tag2</unmanaged>\t\n            <unmanaged-short>unsigned longlong tag2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.DrawingStateDescription.Transform\">\n            <summary>\t\n            <dd> <p>The transformation to apply to subsequent drawing operations.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_DRAWING_STATE_DESCRIPTION::transform']/*\"/>\t\n            <msdn-id>dd368093</msdn-id>\t\n            <unmanaged>D2D_MATRIX_3X2_F transform</unmanaged>\t\n            <unmanaged-short>D2D_MATRIX_3X2_F transform</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.FactoryOptions\">\n            <summary>\t\n            <p>Contains the debugging level of an <strong><see cref=\"T:SharpDX.Direct2D1.Factory\"/></strong> object. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>To enable debugging, you must install the Direct2D Debug Layer.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_FACTORY_OPTIONS']/*\"/>\t\n            <msdn-id>dd368102</msdn-id>\t\n            <unmanaged>D2D1_FACTORY_OPTIONS</unmanaged>\t\n            <unmanaged-short>D2D1_FACTORY_OPTIONS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.FactoryOptions.DebugLevel\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_FACTORY_OPTIONS::debugLevel']/*\"/>\t\n            <unmanaged>D2D1_DEBUG_LEVEL debugLevel</unmanaged>\t\n            <unmanaged-short>D2D1_DEBUG_LEVEL debugLevel</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.GradientStop\">\n            <summary>\t\n            <p> Contains the position and color of a gradient stop. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Gradient stops can be specified in any order if they are at different positions. Two stops may share a position. In this case, the first stop specified is treated as the \"low\" stop (nearer 0.0f) and subsequent stops are treated as \"higher\" (nearer 1.0f). This behavior is useful if a caller wants an instant transition in the middle of a stop.</p><p>Typically, there are at least two points in a collection, although creation with only one stop is permitted. For example, one point is at position 0.0f, another point is at position 1.0f, and additional points are distributed in the [0, 1] range. Where the gradient progression is beyond the range of [0, 1], the stops are stored, but may affect the gradient. </p><p>When drawn, the [0, 1] range of positions is mapped to the brush, in a brush-dependent way. For details, see <strong><see cref=\"T:SharpDX.Direct2D1.LinearGradientBrush\"/></strong> and <strong><see cref=\"T:SharpDX.Direct2D1.RadialGradientBrush\"/></strong>. </p><p>Gradient stops with a position outside the [0, 1] range cannot be seen explicitly, but they can still affect the colors produced in the [0, 1] range. For example, a two-stop gradient 0.0f, Black}, {2.0f, White is indistinguishable visually from 0.0f, Black}, {1.0f, Mid-level gray. Also, the colors are clamped before interpolation.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_GRADIENT_STOP']/*\"/>\t\n            <msdn-id>dd368119</msdn-id>\t\n            <unmanaged>D2D1_GRADIENT_STOP</unmanaged>\t\n            <unmanaged-short>D2D1_GRADIENT_STOP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.GradientStop.Position\">\n            <summary>\t\n            <dd> <p>A value that indicates the relative position of the gradient stop in the brush. This value must be in the [0.0f, 1.0f] range if the gradient stop is to be seen explicitly. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_GRADIENT_STOP::position']/*\"/>\t\n            <msdn-id>dd368119</msdn-id>\t\n            <unmanaged>float position</unmanaged>\t\n            <unmanaged-short>float position</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.GradientStop.Color\">\n            <summary>\t\n            <dd> <p>The color of the gradient stop.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_GRADIENT_STOP::color']/*\"/>\t\n            <msdn-id>dd368119</msdn-id>\t\n            <unmanaged>D2D_COLOR_F color</unmanaged>\t\n            <unmanaged-short>D2D_COLOR_F color</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.HwndRenderTargetProperties\">\n            <summary>\t\n            <p> Contains the <see cref=\"T:System.IntPtr\"/>, pixel size, and presentation options for an <strong><see cref=\"T:SharpDX.Direct2D1.WindowRenderTarget\"/></strong>.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Use this structure when you call the <strong>CreateHwndRenderTarget</strong> method to create a new <strong><see cref=\"T:SharpDX.Direct2D1.WindowRenderTarget\"/></strong>.</p><p>For convenience, Direct2D provides the <strong>D2D1::HwndRenderTargetProperties</strong> function for creating new <strong><see cref=\"T:SharpDX.Direct2D1.HwndRenderTargetProperties\"/></strong> structures.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_HWND_RENDER_TARGET_PROPERTIES']/*\"/>\t\n            <msdn-id>dd368122</msdn-id>\t\n            <unmanaged>D2D1_HWND_RENDER_TARGET_PROPERTIES</unmanaged>\t\n            <unmanaged-short>D2D1_HWND_RENDER_TARGET_PROPERTIES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.HwndRenderTargetProperties.Hwnd\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_HWND_RENDER_TARGET_PROPERTIES::hwnd']/*\"/>\t\n            <unmanaged>HWND hwnd</unmanaged>\t\n            <unmanaged-short>HWND hwnd</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.HwndRenderTargetProperties.PixelSize\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_HWND_RENDER_TARGET_PROPERTIES::pixelSize']/*\"/>\t\n            <unmanaged>D2D_SIZE_U pixelSize</unmanaged>\t\n            <unmanaged-short>D2D_SIZE_U pixelSize</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.HwndRenderTargetProperties.PresentOptions\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_HWND_RENDER_TARGET_PROPERTIES::presentOptions']/*\"/>\t\n            <unmanaged>D2D1_PRESENT_OPTIONS presentOptions</unmanaged>\t\n            <unmanaged-short>D2D1_PRESENT_OPTIONS presentOptions</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.LinearGradientBrushProperties\">\n            <summary>\t\n            <p> Contains the starting point and endpoint of the gradient axis for an <strong><see cref=\"T:SharpDX.Direct2D1.LinearGradientBrush\"/></strong>. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Use this method when creating new <strong><see cref=\"T:SharpDX.Direct2D1.LinearGradientBrush\"/></strong> objects with the <strong>CreateLinearGradientBrush</strong> method. For convenience, Direct2D provides the <strong>D2D1::LinearGradientBrushProperties</strong> helper function for creating new <strong><see cref=\"T:SharpDX.Direct2D1.LinearGradientBrushProperties\"/></strong> structures.</p><p>The following illustration shows how a linear gradient changes as you change its start and end points.  For the first gradient, the start point is set to (0,0) and the end point to (150, 50); this creates a diagonal gradient that starts at the upper-left corner and extends to the lower-right corner of the area being painted. When you set the start point to (0, 25) and the end point to (150, 25), a horizontal gradient is created. Similarly, setting the start point  to (75, 0) and the end point to (75, 50) creates a vertical gradient. Setting the start point to  (0, 50) and the end point to (150, 0)  creates a diagonal gradient that starts at the lower-left corner and extends to the upper-right corner of the area being painted.</p><p></p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_LINEAR_GRADIENT_BRUSH_PROPERTIES']/*\"/>\t\n            <msdn-id>dd368128</msdn-id>\t\n            <unmanaged>D2D1_LINEAR_GRADIENT_BRUSH_PROPERTIES</unmanaged>\t\n            <unmanaged-short>D2D1_LINEAR_GRADIENT_BRUSH_PROPERTIES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.LinearGradientBrushProperties.StartPoint\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_LINEAR_GRADIENT_BRUSH_PROPERTIES::startPoint']/*\"/>\t\n            <unmanaged>D2D_POINT_2F startPoint</unmanaged>\t\n            <unmanaged-short>D2D_POINT_2F startPoint</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.LinearGradientBrushProperties.EndPoint\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_LINEAR_GRADIENT_BRUSH_PROPERTIES::endPoint']/*\"/>\t\n            <unmanaged>D2D_POINT_2F endPoint</unmanaged>\t\n            <unmanaged-short>D2D_POINT_2F endPoint</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.PixelFormat\">\n            <summary>\t\n            <p> Contains the data format and alpha mode for a bitmap or render target. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>For more information about the pixel formats and alpha modes supported by each render target, see Supported Pixel Formats and Alpha Modes.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_PIXEL_FORMAT']/*\"/>\t\n            <msdn-id>dd368138</msdn-id>\t\n            <unmanaged>D2D1_PIXEL_FORMAT</unmanaged>\t\n            <unmanaged-short>D2D1_PIXEL_FORMAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.PixelFormat.Format\">\n            <summary>\t\n            <dd> <p>A value that specifies the size and arrangement of channels in each pixel.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_PIXEL_FORMAT::format']/*\"/>\t\n            <msdn-id>dd368138</msdn-id>\t\n            <unmanaged>DXGI_FORMAT format</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT format</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.PixelFormat.AlphaMode\">\n            <summary>\t\n            <dd> <p>A value that specifies whether the alpha channel is using pre-multiplied alpha, straight alpha, whether it should be ignored and considered opaque, or whether it is unkown.  </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_PIXEL_FORMAT::alphaMode']/*\"/>\t\n            <msdn-id>dd368138</msdn-id>\t\n            <unmanaged>D2D1_ALPHA_MODE alphaMode</unmanaged>\t\n            <unmanaged-short>D2D1_ALPHA_MODE alphaMode</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.PixelFormat.#ctor(SharpDX.DXGI.Format,SharpDX.Direct2D1.AlphaMode)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct2D1.PixelFormat\"/> struct.\n            </summary>\n            <param name=\"format\">A value that specifies the size and arrangement of channels in each pixel.</param>\n            <param name=\"alphaMode\">A value that specifies whether the alpha channel is using pre-multiplied alpha, straight alpha, whether it should be ignored and considered opaque, or whether it is unkown.</param>\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.QuadraticBezierSegment\">\n            <summary>\t\n            <p> Contains the control point and end point for a quadratic Bezier segment.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_QUADRATIC_BEZIER_SEGMENT']/*\"/>\t\n            <msdn-id>dd368147</msdn-id>\t\n            <unmanaged>D2D1_QUADRATIC_BEZIER_SEGMENT</unmanaged>\t\n            <unmanaged-short>D2D1_QUADRATIC_BEZIER_SEGMENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.QuadraticBezierSegment.Point1\">\n            <summary>\t\n            <dd> <p>The control point of the quadratic Bezier segment.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_QUADRATIC_BEZIER_SEGMENT::point1']/*\"/>\t\n            <msdn-id>dd368147</msdn-id>\t\n            <unmanaged>D2D_POINT_2F point1</unmanaged>\t\n            <unmanaged-short>D2D_POINT_2F point1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.QuadraticBezierSegment.Point2\">\n            <summary>\t\n            <dd> <p>The end point of the quadratic Bezier segment.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_QUADRATIC_BEZIER_SEGMENT::point2']/*\"/>\t\n            <msdn-id>dd368147</msdn-id>\t\n            <unmanaged>D2D_POINT_2F point2</unmanaged>\t\n            <unmanaged-short>D2D_POINT_2F point2</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.RadialGradientBrushProperties\">\n            <summary>\t\n            <p> Contains the gradient origin offset and the size and position of the gradient ellipse for an <strong><see cref=\"T:SharpDX.Direct2D1.RadialGradientBrush\"/></strong>. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Different values for <em>center</em>,  <em>gradientOriginOffset</em>,  <em>radiusX</em> and/or <em>radiusY</em> produce different gradients.   The following illustration shows several radial gradients that have different gradient origin offsets, creating the appearance of the light illuminating the circles from different angles.</p><p></p><p>For convenience, Direct2D provides the <strong>D2D1::RadialGradientBrushProperties</strong> function for creating new <strong>D2D1_RADIAL_GRADIENT_BRUSH</strong> structures.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_RADIAL_GRADIENT_BRUSH_PROPERTIES']/*\"/>\t\n            <msdn-id>dd368149</msdn-id>\t\n            <unmanaged>D2D1_RADIAL_GRADIENT_BRUSH_PROPERTIES</unmanaged>\t\n            <unmanaged-short>D2D1_RADIAL_GRADIENT_BRUSH_PROPERTIES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.RadialGradientBrushProperties.Center\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_RADIAL_GRADIENT_BRUSH_PROPERTIES::center']/*\"/>\t\n            <unmanaged>D2D_POINT_2F center</unmanaged>\t\n            <unmanaged-short>D2D_POINT_2F center</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.RadialGradientBrushProperties.GradientOriginOffset\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_RADIAL_GRADIENT_BRUSH_PROPERTIES::gradientOriginOffset']/*\"/>\t\n            <unmanaged>D2D_POINT_2F gradientOriginOffset</unmanaged>\t\n            <unmanaged-short>D2D_POINT_2F gradientOriginOffset</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.RadialGradientBrushProperties.RadiusX\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_RADIAL_GRADIENT_BRUSH_PROPERTIES::radiusX']/*\"/>\t\n            <unmanaged>float radiusX</unmanaged>\t\n            <unmanaged-short>float radiusX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.RadialGradientBrushProperties.RadiusY\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_RADIAL_GRADIENT_BRUSH_PROPERTIES::radiusY']/*\"/>\t\n            <unmanaged>float radiusY</unmanaged>\t\n            <unmanaged-short>float radiusY</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.RenderTargetProperties\">\n            <summary>\t\n            <p> Contains rendering options (hardware or software), pixel format, DPI information, remoting options, and Direct3D support requirements for a render target. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Use this structure when creating a render target, or use it with the <strong><see cref=\"M:SharpDX.Direct2D1.RenderTarget.IsSupported(SharpDX.Direct2D1.RenderTargetProperties@)\"/></strong> method to check the properties supported by an existing render target.</p><p>As a convenience, Direct2D provides the <strong>D2D1::RenderTargetProperties</strong> helper function for creating <strong><see cref=\"T:SharpDX.Direct2D1.RenderTargetProperties\"/></strong> structures. An easy way to create a <strong><see cref=\"T:SharpDX.Direct2D1.RenderTargetProperties\"/></strong> structure that works for most render targets is to call the function without specifying any parameters. Doing so creates a <strong><see cref=\"T:SharpDX.Direct2D1.RenderTargetProperties\"/></strong> structure that has its fields set to default values. For more information, see   <strong>D2D1::RenderTargetProperties</strong>.</p><p>Not all render targets support hardware rendering. For a list, see the Render Targets Overview.</p>Using Default DPI Settings<p>To use the default DPI, set <em>dpiX</em> and <em>dpiY</em> to 0. The default DPI varies depending on the render target:</p><ul> <li>For a compatible render target, the default DPI is the DPI of the parent render target.</li> <li>For a <strong><see cref=\"T:SharpDX.Direct2D1.WindowRenderTarget\"/></strong>, the default DPI is the system DPI obtained from the render target's <strong><see cref=\"T:SharpDX.Direct2D1.Factory\"/></strong>.</li> <li>For other render targets, the default DPI is 96.</li> </ul><p>To use the default DPI setting, both <em>dpiX</em> and <em>dpiY</em> must be set to 0. Setting only one value to 0 causes an  <strong>E_INVALIDARG</strong> error when attempting to create a render target.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_RENDER_TARGET_PROPERTIES']/*\"/>\t\n            <msdn-id>dd368155</msdn-id>\t\n            <unmanaged>D2D1_RENDER_TARGET_PROPERTIES</unmanaged>\t\n            <unmanaged-short>D2D1_RENDER_TARGET_PROPERTIES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.RenderTargetProperties.Type\">\n            <summary>\t\n            <dd> <p>A value that specifies whether the render target should force hardware or software rendering. A value of <strong><see cref=\"F:SharpDX.Direct2D1.RenderTargetType.Default\"/></strong> specifies that the render target should use hardware rendering if it is available; otherwise, it uses software rendering. Note that WIC bitmap render targets do not support hardware rendering.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_RENDER_TARGET_PROPERTIES::type']/*\"/>\t\n            <msdn-id>dd368155</msdn-id>\t\n            <unmanaged>D2D1_RENDER_TARGET_TYPE type</unmanaged>\t\n            <unmanaged-short>D2D1_RENDER_TARGET_TYPE type</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.RenderTargetProperties.PixelFormat\">\n            <summary>\t\n            <dd> <p>The pixel format and alpha mode of the render target. You can use the <strong>D2D1::PixelFormat</strong> function to create a pixel format that specifies that Direct2D should select the pixel format and alpha mode for you. For a list of pixel formats and alpha modes supported by each render target, see Supported Pixel Formats and Alpha Modes.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_RENDER_TARGET_PROPERTIES::pixelFormat']/*\"/>\t\n            <msdn-id>dd368155</msdn-id>\t\n            <unmanaged>D2D1_PIXEL_FORMAT pixelFormat</unmanaged>\t\n            <unmanaged-short>D2D1_PIXEL_FORMAT pixelFormat</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.RenderTargetProperties.DpiX\">\n            <summary>\t\n            <dd> <p>The horizontal DPI of the render target.  To use the default DPI, set <em>dpiX</em> and <em>dpiY</em> to 0. For more information, see the Remarks section. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_RENDER_TARGET_PROPERTIES::dpiX']/*\"/>\t\n            <msdn-id>dd368155</msdn-id>\t\n            <unmanaged>float dpiX</unmanaged>\t\n            <unmanaged-short>float dpiX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.RenderTargetProperties.DpiY\">\n            <summary>\t\n            <dd> <p>The vertical DPI of the render target. To use the default DPI, set <em>dpiX</em> and <em>dpiY</em> to 0.  For more information, see the Remarks section. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_RENDER_TARGET_PROPERTIES::dpiY']/*\"/>\t\n            <msdn-id>dd368155</msdn-id>\t\n            <unmanaged>float dpiY</unmanaged>\t\n            <unmanaged-short>float dpiY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.RenderTargetProperties.Usage\">\n            <summary>\t\n            <dd> <p>A value that specifies how the render target is remoted and whether it should be GDI-compatible.  Set to <strong><see cref=\"F:SharpDX.Direct2D1.RenderTargetUsage.None\"/></strong> to create a render target that is not compatible with GDI and uses Direct3D command-stream remoting if it  is available. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_RENDER_TARGET_PROPERTIES::usage']/*\"/>\t\n            <msdn-id>dd368155</msdn-id>\t\n            <unmanaged>D2D1_RENDER_TARGET_USAGE usage</unmanaged>\t\n            <unmanaged-short>D2D1_RENDER_TARGET_USAGE usage</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.RenderTargetProperties.MinLevel\">\n            <summary>\t\n            <dd> <p>A value that specifies the minimum Direct3D feature level required for hardware rendering. If the specified minimum level is not available, the render target uses software rendering if the <strong>type </strong> member is set to <strong><see cref=\"F:SharpDX.Direct2D1.RenderTargetType.Default\"/></strong>; if  <strong>type </strong> is set to to <strong><see cref=\"F:SharpDX.Direct2D1.RenderTargetType.Hardware\"/></strong>, render target creation fails. A value of <strong><see cref=\"F:SharpDX.Direct2D1.FeatureLevel.Level_DEFAULT\"/></strong> indicates that Direct2D should determine whether the Direct3D feature level of the device is adequate. This field is used only when creating <strong><see cref=\"T:SharpDX.Direct2D1.WindowRenderTarget\"/></strong> and <strong><see cref=\"T:SharpDX.Direct2D1.DeviceContextRenderTarget\"/></strong> objects.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_RENDER_TARGET_PROPERTIES::minLevel']/*\"/>\t\n            <msdn-id>dd368155</msdn-id>\t\n            <unmanaged>D2D1_FEATURE_LEVEL minLevel</unmanaged>\t\n            <unmanaged-short>D2D1_FEATURE_LEVEL minLevel</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RenderTargetProperties.#ctor(SharpDX.Direct2D1.PixelFormat)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct2D1.RenderTargetProperties\"/> struct.\n            </summary>\n            <param name=\"pixelFormat\">The pixel format and alpha mode of the render target. You can use the {{D2D1::PixelFormat}} function to create a pixel format that specifies that Direct2D should select the pixel format and alpha mode for you. For a list of pixel formats and alpha modes supported by each render target, see {{Supported Pixel Formats and Alpha Modes}}.</param>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.RenderTargetProperties.#ctor(SharpDX.Direct2D1.RenderTargetType,SharpDX.Direct2D1.PixelFormat,System.Single,System.Single,SharpDX.Direct2D1.RenderTargetUsage,SharpDX.Direct2D1.FeatureLevel)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct2D1.RenderTargetProperties\"/> struct.\n            </summary>\n            <param name=\"type\">A value that specifies whether the render target should force hardware or software rendering. A value of <see cref=\"F:SharpDX.Direct2D1.RenderTargetType.Default\"/> specifies that the render target should use hardware rendering if it is available; otherwise, it uses software rendering. Note that WIC bitmap render targets do not support hardware rendering.</param>\n            <param name=\"pixelFormat\">The pixel format and alpha mode of the render target. You can use the {{D2D1::PixelFormat}} function to create a pixel format that specifies that Direct2D should select the pixel format and alpha mode for you. For a list of pixel formats and alpha modes supported by each render target, see {{Supported Pixel Formats and Alpha Modes}}.</param>\n            <param name=\"dpiX\">The horizontal DPI of the render target.  To use the default DPI, set dpiX and dpiY to 0. For more information, see the Remarks section. \t</param>\n            <param name=\"dpiY\">The vertical DPI of the render target. To use the default DPI, set dpiX and dpiY to 0.  For more information, see the Remarks section. \t</param>\n            <param name=\"usage\">A value that specifies how the render target is remoted and whether it should be GDI-compatible.  Set to <see cref=\"F:SharpDX.Direct2D1.RenderTargetUsage.None\"/> to create a render target that is not compatible with GDI and uses Direct3D command-stream remoting if it  is available.</param>\n            <param name=\"minLevel\">A value that specifies the minimum Direct3D feature level required for hardware rendering. If the specified minimum level is not available, the render target uses software rendering if the type  member is set to <see cref=\"F:SharpDX.Direct2D1.RenderTargetType.Default\"/>; if  type  is set to to D2D1_RENDER_TARGET_TYPE_HARDWARE, render target creation fails. A value of <see cref=\"F:SharpDX.Direct2D1.FeatureLevel.Level_DEFAULT\"/> indicates that Direct2D should determine whether the Direct3D feature level of the device is adequate. This field is used only when creating <see cref=\"T:SharpDX.Direct2D1.WindowRenderTarget\"/> and <see cref=\"T:SharpDX.Direct2D1.DeviceContextRenderTarget\"/> objects.\t</param>  \n        </member>\n        <member name=\"T:SharpDX.Direct2D1.RoundedRectangle\">\n            <summary>\t\n            <p> Contains the dimensions and corner radii of a rounded rectangle.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Each corner of the rectangle specified by the <em>rect</em> is replaced with a quarter ellipse, with a radius in each direction specified by <em>radiusX</em> and <em>radiusY</em>.</p><p> If the <em>radiusX</em> is greater than or equal to half the width of the rectangle, and the <em>radiusY</em> is greater than or equal to one-half the height, the rounded rectangle is an ellipse with the same width and height of the <em>rect</em>. </p><p>Even when both <em>radiuX</em> and <em>radiusY</em> are zero, the rounded rectangle is different from a rectangle., When stroked, the corners of the rounded rectangle are roundly joined, not mitered (square). </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_ROUNDED_RECT']/*\"/>\t\n            <msdn-id>dd368158</msdn-id>\t\n            <unmanaged>D2D1_ROUNDED_RECT</unmanaged>\t\n            <unmanaged-short>D2D1_ROUNDED_RECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.RoundedRectangle.Rect\">\n            <summary>\t\n            <dd> <p>The coordinates of the rectangle.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_ROUNDED_RECT::rect']/*\"/>\t\n            <msdn-id>dd368158</msdn-id>\t\n            <unmanaged>D2D_RECT_F rect</unmanaged>\t\n            <unmanaged-short>D2D_RECT_F rect</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.RoundedRectangle.RadiusX\">\n            <summary>\t\n            <dd> <p>The x-radius for the quarter ellipse that is drawn to replace every corner of the rectangle.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_ROUNDED_RECT::radiusX']/*\"/>\t\n            <msdn-id>dd368158</msdn-id>\t\n            <unmanaged>float radiusX</unmanaged>\t\n            <unmanaged-short>float radiusX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.RoundedRectangle.RadiusY\">\n            <summary>\t\n            <dd> <p>The y-radius for the quarter ellipse that is drawn to replace every corner of the rectangle.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_ROUNDED_RECT::radiusY']/*\"/>\t\n            <msdn-id>dd368158</msdn-id>\t\n            <unmanaged>float radiusY</unmanaged>\t\n            <unmanaged-short>float radiusY</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.StrokeStyleProperties\">\n            <summary>\t\n            <p> Describes the stroke that outlines a shape. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The following illustration shows different <em>dashOffset</em> values for the same custom dash style.</p><p></p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_STROKE_STYLE_PROPERTIES']/*\"/>\t\n            <msdn-id>dd368164</msdn-id>\t\n            <unmanaged>D2D1_STROKE_STYLE_PROPERTIES</unmanaged>\t\n            <unmanaged-short>D2D1_STROKE_STYLE_PROPERTIES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.StrokeStyleProperties.StartCap\">\n            <summary>\t\n            <dd> <p>The cap applied to the start of all the open figures in a stroked geometry.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_STROKE_STYLE_PROPERTIES::startCap']/*\"/>\t\n            <msdn-id>dd368164</msdn-id>\t\n            <unmanaged>D2D1_CAP_STYLE startCap</unmanaged>\t\n            <unmanaged-short>D2D1_CAP_STYLE startCap</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.StrokeStyleProperties.EndCap\">\n            <summary>\t\n            <dd> <p>The cap applied to the end of all the open figures in a stroked geometry.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_STROKE_STYLE_PROPERTIES::endCap']/*\"/>\t\n            <msdn-id>dd368164</msdn-id>\t\n            <unmanaged>D2D1_CAP_STYLE endCap</unmanaged>\t\n            <unmanaged-short>D2D1_CAP_STYLE endCap</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.StrokeStyleProperties.DashCap\">\n            <summary>\t\n            <dd> <p>The shape  at either end of each dash segment.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_STROKE_STYLE_PROPERTIES::dashCap']/*\"/>\t\n            <msdn-id>dd368164</msdn-id>\t\n            <unmanaged>D2D1_CAP_STYLE dashCap</unmanaged>\t\n            <unmanaged-short>D2D1_CAP_STYLE dashCap</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.StrokeStyleProperties.LineJoin\">\n            <summary>\t\n            <dd> <p>A value that describes how segments are joined. This value is ignored for a vertex if the segment flags specify that the segment should have a smooth join. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_STROKE_STYLE_PROPERTIES::lineJoin']/*\"/>\t\n            <msdn-id>dd368164</msdn-id>\t\n            <unmanaged>D2D1_LINE_JOIN lineJoin</unmanaged>\t\n            <unmanaged-short>D2D1_LINE_JOIN lineJoin</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.StrokeStyleProperties.MiterLimit\">\n            <summary>\t\n            <dd> <p>The limit of the thickness of the join on a mitered corner. This value is always treated as though it is greater than or equal to 1.0f. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_STROKE_STYLE_PROPERTIES::miterLimit']/*\"/>\t\n            <msdn-id>dd368164</msdn-id>\t\n            <unmanaged>float miterLimit</unmanaged>\t\n            <unmanaged-short>float miterLimit</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.StrokeStyleProperties.DashStyle\">\n            <summary>\t\n            <dd> <p>A value that specifies whether the stroke has a dash pattern and, if so, the dash style. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_STROKE_STYLE_PROPERTIES::dashStyle']/*\"/>\t\n            <msdn-id>dd368164</msdn-id>\t\n            <unmanaged>D2D1_DASH_STYLE dashStyle</unmanaged>\t\n            <unmanaged-short>D2D1_DASH_STYLE dashStyle</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.StrokeStyleProperties.DashOffset\">\n            <summary>\t\n            <dd> <p>A value that specifies an offset in the dash sequence.   A positive dash offset value  shifts the dash pattern, in units of  stroke width, toward the start of the stroked geometry.  A negative dash offset value  shifts the dash pattern, in units of  stroke width, toward the end of the stroked geometry.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_STROKE_STYLE_PROPERTIES::dashOffset']/*\"/>\t\n            <msdn-id>dd368164</msdn-id>\t\n            <unmanaged>float dashOffset</unmanaged>\t\n            <unmanaged-short>float dashOffset</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.Triangle\">\n            <summary>\t\n            <p>Contains the three vertices that describe a triangle.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_TRIANGLE']/*\"/>\t\n            <msdn-id>dd368172</msdn-id>\t\n            <unmanaged>D2D1_TRIANGLE</unmanaged>\t\n            <unmanaged-short>D2D1_TRIANGLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.Triangle.Point1\">\n            <summary>\t\n            <dd> <p>The first vertex of a triangle.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_TRIANGLE::point1']/*\"/>\t\n            <msdn-id>dd368172</msdn-id>\t\n            <unmanaged>D2D_POINT_2F point1</unmanaged>\t\n            <unmanaged-short>D2D_POINT_2F point1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.Triangle.Point2\">\n            <summary>\t\n            <dd> <p>The second vertex of a triangle.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_TRIANGLE::point2']/*\"/>\t\n            <msdn-id>dd368172</msdn-id>\t\n            <unmanaged>D2D_POINT_2F point2</unmanaged>\t\n            <unmanaged-short>D2D_POINT_2F point2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct2D1.Triangle.Point3\">\n            <summary>\t\n            <dd> <p>The third vertex of a triangle.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D2D1_TRIANGLE::point3']/*\"/>\t\n            <msdn-id>dd368172</msdn-id>\t\n            <unmanaged>D2D_POINT_2F point3</unmanaged>\t\n            <unmanaged-short>D2D_POINT_2F point3</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.GeometrySinkShadow\">\n            <summary>\n            Internal GeometrySink Callback\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.SimplifiedGeometrySinkShadow\">\n            <summary>\n            Internal SimplifiedGeometrySink Callback\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.SimplifiedGeometrySinkShadow.ToIntPtr(SharpDX.Direct2D1.SimplifiedGeometrySink)\">\n            <summary>\n            Return a pointer to the unamanged version of this callback.\n            </summary>\n            <param name=\"callback\">The callback.</param>\n            <returns>A pointer to a shadow c++ callback</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.GeometrySinkShadow.ToIntPtr(SharpDX.Direct2D1.GeometrySink)\">\n            <summary>\n            Get a native callback pointer from a managed callback.\n            </summary>\n            <param name=\"geometrySink\">The geometry sink.</param>\n            <returns>A pointer to the unmanaged geomerty sink counterpart</returns>\n        </member>\n        <member name=\"T:SharpDX.Direct2D1.TessellationSinkShadow\">\n            <summary>\n            Internal TessellationSink Callback\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Direct2D1.TessellationSinkShadow.ToIntPtr(SharpDX.Direct2D1.TessellationSink)\">\n            <summary>\n            Get a native callback pointer from a managed callback.\n            </summary>\n            <param name=\"tessellationSink\">The geometry sink.</param>\n            <returns>A pointer to the unmanaged geomerty sink counterpart</returns>\n        </member>\n        <member name=\"T:SharpDX.WIC.BitmapEncoderOptions\">\n            <summary>\n            BitmapEncoderOptions used for encoding.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.WIC.BitmapEncoderOptions.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.BitmapEncoderOptions\"/> class.\n            </summary>\n            <param name=\"propertyBagPointer\">The property bag pointer.</param>\n        </member>\n        <member name=\"P:SharpDX.WIC.BitmapEncoderOptions.ImageQuality\">\n            <summary>\n            Gets or sets the image quality.\n            </summary>\n            <value>\n            The image quality.\n            </value>\n            <remarks>\n            Range value: 0-1.0f\n            Applicable Codecs: JPEG, HDPhoto\n            </remarks>\n        </member>\n        <member name=\"P:SharpDX.WIC.BitmapEncoderOptions.CompressionQuality\">\n            <summary>\n            Gets or sets the compression quality.\n            </summary>\n            <value>\n            The compression quality.\n            </value>\n            <remarks>\n            Range value: 0-1.0f \n            Applicable Codecs: TIFF\n            </remarks>\n        </member>\n        <member name=\"P:SharpDX.WIC.BitmapEncoderOptions.LossLess\">\n            <summary>\n            Gets or sets a value indicating whether loss less compression is enabled.\n            </summary>\n            <value>\n              <c>true</c> if [loss less]; otherwise, <c>false</c>.\n            </value>\n            <remarks>\n            Range value: true-false\n            Applicable Codecs: HDPhoto\n            </remarks>\n        </member>\n        <member name=\"P:SharpDX.WIC.BitmapEncoderOptions.BitmapTransform\">\n            <summary>\n            Gets or sets the bitmap transform.\n            </summary>\n            <value>\n            The bitmap transform.\n            </value>\n            <remarks>\n            Range value: <see cref=\"T:SharpDX.WIC.BitmapTransformOptions\"/>\n            Applicable Codecs: JPEG\n            </remarks>\n        </member>\n        <member name=\"P:SharpDX.WIC.BitmapEncoderOptions.InterlaceOption\">\n            <summary>\n            Gets or sets a value indicating whether [interlace option].\n            </summary>\n            <value>\n              <c>true</c> if [interlace option]; otherwise, <c>false</c>.\n            </value>\n            <remarks>\n            Range value: true-false\n            Applicable Codecs: PNG\n            </remarks>\n        </member>\n        <member name=\"P:SharpDX.WIC.BitmapEncoderOptions.FilterOption\">\n            <summary>\n            Gets or sets the filter option.\n            </summary>\n            <value>\n            The filter option.\n            </value>\n            <remarks>\n            Range value: <see cref=\"T:SharpDX.WIC.PngFilterOption\"/>\n            Applicable Codecs: PNG\n            </remarks>\n        </member>\n        <member name=\"P:SharpDX.WIC.BitmapEncoderOptions.TiffCompressionMethod\">\n            <summary>\n            Gets or sets the TIFF compression method.\n            </summary>\n            <value>\n            The TIFF compression method.\n            </value>\n            <remarks>\n            Range value: <see cref=\"T:SharpDX.WIC.TiffCompressionOption\"/>\n            Applicable Codecs: TIFF\n            </remarks>\n        </member>\n        <member name=\"P:SharpDX.WIC.BitmapEncoderOptions.Luminance\">\n            <summary>\n            Gets or sets the luminance.\n            </summary>\n            <value>\n            The luminance.\n            </value>\n            <remarks>\n            Range value: 64 Entries (DCT)\n            Applicable Codecs: JPEG\n            </remarks>\n        </member>\n        <member name=\"P:SharpDX.WIC.BitmapEncoderOptions.Chrominance\">\n            <summary>\n            Gets or sets the chrominance.\n            </summary>\n            <value>\n            The chrominance.\n            </value>\n            <remarks>\n            Range value: 64 Entries (DCT)\n            Applicable Codecs: JPEG\n            </remarks>\n        </member>\n        <member name=\"P:SharpDX.WIC.BitmapEncoderOptions.JpegYCrCbSubsampling\">\n            <summary>\n            Gets or sets the JPEG Y cr cb subsampling.\n            </summary>\n            <value>\n            The JPEG Y cr cb subsampling.\n            </value>\n            <remarks>\n            Range value: <see cref=\"T:SharpDX.WIC.JpegYCrCbSubsamplingOption\"/>\n            Applicable Codecs: JPEG\n            </remarks>\n        </member>\n        <member name=\"P:SharpDX.WIC.BitmapEncoderOptions.SuppressApp0\">\n            <summary>\n            Gets or sets a value indicating whether [suppress app0].\n            </summary>\n            <value>\n              <c>true</c> if [suppress app0]; otherwise, <c>false</c>.\n            </value>\n            <remarks>\n            Range value: true-false\n            Applicable Codecs: JPEG\n            </remarks>\n        </member>\n        <member name=\"T:SharpDX.WIC.BmpBitmapDecoder\">\n            <summary>\n            Bmp bitmap encoder using <see cref=\"T:SharpDX.WIC.BitmapDecoder\"/> initialized with default guid <see cref=\"F:SharpDX.WIC.ContainerFormatGuids.Bmp\"/>.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.WIC.BmpBitmapDecoder.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.BmpBitmapDecoder\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native PTR.</param>\n        </member>\n        <member name=\"M:SharpDX.WIC.BmpBitmapDecoder.#ctor(SharpDX.WIC.ImagingFactory)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.BmpBitmapDecoder\"/> class.\n            </summary>\n            <param name=\"factory\">The factory.</param>\n        </member>\n        <member name=\"M:SharpDX.WIC.BmpBitmapDecoder.#ctor(SharpDX.WIC.ImagingFactory,System.Guid)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.BmpBitmapDecoder\"/> class.\n            </summary>\n            <param name=\"factory\">The factory.</param>\n            <param name=\"guidVendorRef\">The GUID vendor ref.</param>\n        </member>\n        <member name=\"T:SharpDX.WIC.BmpBitmapEncoder\">\n            <summary>\n            Bmp bitmap encoder using <see cref=\"T:SharpDX.WIC.BitmapEncoder\"/> initialized with default guid <see cref=\"F:SharpDX.WIC.ContainerFormatGuids.Bmp\"/>.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.WIC.BmpBitmapEncoder.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.BmpBitmapEncoder\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native PTR.</param>\n        </member>\n        <member name=\"M:SharpDX.WIC.BmpBitmapEncoder.#ctor(SharpDX.WIC.ImagingFactory)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.BmpBitmapEncoder\"/> class.\n            </summary>\n            <param name=\"factory\">The factory.</param>\n        </member>\n        <member name=\"M:SharpDX.WIC.BmpBitmapEncoder.#ctor(SharpDX.WIC.ImagingFactory,System.IO.Stream)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.BmpBitmapEncoder\"/> class.\n            </summary>\n            <param name=\"factory\">The factory.</param>\n            <param name=\"stream\">The output stream.</param>\n        </member>\n        <member name=\"M:SharpDX.WIC.BmpBitmapEncoder.#ctor(SharpDX.WIC.ImagingFactory,System.Guid,System.IO.Stream)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.BmpBitmapEncoder\"/> class.\n            </summary>\n            <param name=\"factory\">The factory.</param>\n            <param name=\"guidVendorRef\">The GUID vendor ref.</param>\n            <param name=\"stream\">The output stream.</param>\n        </member>\n        <member name=\"M:SharpDX.WIC.BmpBitmapEncoder.#ctor(SharpDX.WIC.ImagingFactory,SharpDX.WIC.WICStream)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.BmpBitmapEncoder\"/> class.\n            </summary>\n            <param name=\"factory\">The factory.</param>\n            <param name=\"stream\">The output stream.</param>\n        </member>\n        <member name=\"M:SharpDX.WIC.BmpBitmapEncoder.#ctor(SharpDX.WIC.ImagingFactory,System.Guid,SharpDX.WIC.WICStream)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.BmpBitmapEncoder\"/> class.\n            </summary>\n            <param name=\"factory\">The factory.</param>\n            <param name=\"guidVendorRef\">The GUID vendor ref.</param>\n            <param name=\"stream\">The output stream.</param>\n        </member>\n        <member name=\"T:SharpDX.WIC.GifBitmapDecoder\">\n            <summary>\n            Gif bitmap encoder using <see cref=\"T:SharpDX.WIC.BitmapDecoder\"/> initialized with default guid <see cref=\"F:SharpDX.WIC.ContainerFormatGuids.Gif\"/>.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.WIC.GifBitmapDecoder.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.GifBitmapDecoder\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native PTR.</param>\n        </member>\n        <member name=\"M:SharpDX.WIC.GifBitmapDecoder.#ctor(SharpDX.WIC.ImagingFactory)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.GifBitmapDecoder\"/> class.\n            </summary>\n            <param name=\"factory\">The factory.</param>\n        </member>\n        <member name=\"M:SharpDX.WIC.GifBitmapDecoder.#ctor(SharpDX.WIC.ImagingFactory,System.Guid)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.GifBitmapDecoder\"/> class.\n            </summary>\n            <param name=\"factory\">The factory.</param>\n            <param name=\"guidVendorRef\">The GUID vendor ref.</param>\n        </member>\n        <member name=\"T:SharpDX.WIC.GifBitmapEncoder\">\n            <summary>\n            Gif bitmap encoder using <see cref=\"T:SharpDX.WIC.BitmapEncoder\"/> initialized with default guid <see cref=\"F:SharpDX.WIC.ContainerFormatGuids.Gif\"/>.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.WIC.GifBitmapEncoder.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.GifBitmapEncoder\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native PTR.</param>\n        </member>\n        <member name=\"M:SharpDX.WIC.GifBitmapEncoder.#ctor(SharpDX.WIC.ImagingFactory)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.GifBitmapEncoder\"/> class.\n            </summary>\n            <param name=\"factory\">The factory.</param>\n        </member>\n        <member name=\"M:SharpDX.WIC.GifBitmapEncoder.#ctor(SharpDX.WIC.ImagingFactory,System.IO.Stream)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.GifBitmapEncoder\"/> class.\n            </summary>\n            <param name=\"factory\">The factory.</param>\n            <param name=\"stream\">The output stream.</param>\n        </member>\n        <member name=\"M:SharpDX.WIC.GifBitmapEncoder.#ctor(SharpDX.WIC.ImagingFactory,System.Guid,System.IO.Stream)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.GifBitmapEncoder\"/> class.\n            </summary>\n            <param name=\"factory\">The factory.</param>\n            <param name=\"guidVendorRef\">The GUID vendor ref.</param>\n            <param name=\"stream\">The output stream.</param>\n        </member>\n        <member name=\"M:SharpDX.WIC.GifBitmapEncoder.#ctor(SharpDX.WIC.ImagingFactory,SharpDX.WIC.WICStream)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.GifBitmapEncoder\"/> class.\n            </summary>\n            <param name=\"factory\">The factory.</param>\n            <param name=\"stream\">The output stream.</param>\n        </member>\n        <member name=\"M:SharpDX.WIC.GifBitmapEncoder.#ctor(SharpDX.WIC.ImagingFactory,System.Guid,SharpDX.WIC.WICStream)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.GifBitmapEncoder\"/> class.\n            </summary>\n            <param name=\"factory\">The factory.</param>\n            <param name=\"guidVendorRef\">The GUID vendor ref.</param>\n            <param name=\"stream\">The output stream.</param>\n        </member>\n        <member name=\"T:SharpDX.WIC.JpegBitmapDecoder\">\n            <summary>\n            Tiff bitmap encoder using <see cref=\"T:SharpDX.WIC.BitmapDecoder\"/> initialized with default guid <see cref=\"F:SharpDX.WIC.ContainerFormatGuids.Jpeg\"/>.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.WIC.JpegBitmapDecoder.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.JpegBitmapDecoder\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native PTR.</param>\n        </member>\n        <member name=\"M:SharpDX.WIC.JpegBitmapDecoder.#ctor(SharpDX.WIC.ImagingFactory)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.JpegBitmapDecoder\"/> class.\n            </summary>\n            <param name=\"factory\">The factory.</param>\n        </member>\n        <member name=\"M:SharpDX.WIC.JpegBitmapDecoder.#ctor(SharpDX.WIC.ImagingFactory,System.Guid)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.JpegBitmapDecoder\"/> class.\n            </summary>\n            <param name=\"factory\">The factory.</param>\n            <param name=\"guidVendorRef\">The GUID vendor ref.</param>\n        </member>\n        <member name=\"T:SharpDX.WIC.JpegBitmapEncoder\">\n            <summary>\n            Tiff bitmap encoder using <see cref=\"T:SharpDX.WIC.BitmapEncoder\"/> initialized with default guid <see cref=\"F:SharpDX.WIC.ContainerFormatGuids.Jpeg\"/>.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.WIC.JpegBitmapEncoder.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.JpegBitmapEncoder\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native PTR.</param>\n        </member>\n        <member name=\"M:SharpDX.WIC.JpegBitmapEncoder.#ctor(SharpDX.WIC.ImagingFactory)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.JpegBitmapEncoder\"/> class.\n            </summary>\n            <param name=\"factory\">The factory.</param>\n        </member>\n        <member name=\"M:SharpDX.WIC.JpegBitmapEncoder.#ctor(SharpDX.WIC.ImagingFactory,System.IO.Stream)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.JpegBitmapEncoder\"/> class.\n            </summary>\n            <param name=\"factory\">The factory.</param>\n            <param name=\"stream\">The output stream.</param>\n        </member>\n        <member name=\"M:SharpDX.WIC.JpegBitmapEncoder.#ctor(SharpDX.WIC.ImagingFactory,System.Guid,System.IO.Stream)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.JpegBitmapEncoder\"/> class.\n            </summary>\n            <param name=\"factory\">The factory.</param>\n            <param name=\"guidVendorRef\">The GUID vendor ref.</param>\n            <param name=\"stream\">The output stream.</param>\n        </member>\n        <member name=\"M:SharpDX.WIC.JpegBitmapEncoder.#ctor(SharpDX.WIC.ImagingFactory,SharpDX.WIC.WICStream)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.JpegBitmapEncoder\"/> class.\n            </summary>\n            <param name=\"factory\">The factory.</param>\n            <param name=\"stream\">The output stream.</param>\n        </member>\n        <member name=\"M:SharpDX.WIC.JpegBitmapEncoder.#ctor(SharpDX.WIC.ImagingFactory,System.Guid,SharpDX.WIC.WICStream)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.JpegBitmapEncoder\"/> class.\n            </summary>\n            <param name=\"factory\">The factory.</param>\n            <param name=\"guidVendorRef\">The GUID vendor ref.</param>\n            <param name=\"stream\">The output stream.</param>\n        </member>\n        <member name=\"T:SharpDX.WIC.NamespaceDoc\">\n            <summary>\n            The <see cref=\"N:SharpDX.WIC\"/> namespace provides a managed WIC API.\n            </summary>\n            <msdn-id>ee719902</msdn-id>\n            <unmanaged>WIC</unmanaged>\t\n            <unmanaged-short>WIC</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.WIC.PngBitmapDecoder\">\n            <summary>\n            Png bitmap encoder using <see cref=\"T:SharpDX.WIC.BitmapDecoder\"/> initialized with default guid <see cref=\"F:SharpDX.WIC.ContainerFormatGuids.Png\"/>.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.WIC.PngBitmapDecoder.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.PngBitmapDecoder\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native PTR.</param>\n        </member>\n        <member name=\"M:SharpDX.WIC.PngBitmapDecoder.#ctor(SharpDX.WIC.ImagingFactory)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.PngBitmapDecoder\"/> class.\n            </summary>\n            <param name=\"factory\">The factory.</param>\n        </member>\n        <member name=\"M:SharpDX.WIC.PngBitmapDecoder.#ctor(SharpDX.WIC.ImagingFactory,System.Guid)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.PngBitmapDecoder\"/> class.\n            </summary>\n            <param name=\"factory\">The factory.</param>\n            <param name=\"guidVendorRef\">The GUID vendor ref.</param>\n        </member>\n        <member name=\"T:SharpDX.WIC.PngBitmapEncoder\">\n            <summary>\n            Png bitmap encoder using <see cref=\"T:SharpDX.WIC.BitmapEncoder\"/> initialized with default guid <see cref=\"F:SharpDX.WIC.ContainerFormatGuids.Png\"/>.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.WIC.PngBitmapEncoder.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.PngBitmapEncoder\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native PTR.</param>\n        </member>\n        <member name=\"M:SharpDX.WIC.PngBitmapEncoder.#ctor(SharpDX.WIC.ImagingFactory)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.PngBitmapEncoder\"/> class.\n            </summary>\n            <param name=\"factory\">The factory.</param>\n        </member>\n        <member name=\"M:SharpDX.WIC.PngBitmapEncoder.#ctor(SharpDX.WIC.ImagingFactory,System.IO.Stream)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.PngBitmapEncoder\"/> class.\n            </summary>\n            <param name=\"factory\">The factory.</param>\n            <param name=\"stream\">The output stream.</param>\n        </member>\n        <member name=\"M:SharpDX.WIC.PngBitmapEncoder.#ctor(SharpDX.WIC.ImagingFactory,System.Guid,System.IO.Stream)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.PngBitmapEncoder\"/> class.\n            </summary>\n            <param name=\"factory\">The factory.</param>\n            <param name=\"guidVendorRef\">The GUID vendor ref.</param>\n            <param name=\"stream\">The output stream.</param>\n        </member>\n        <member name=\"M:SharpDX.WIC.PngBitmapEncoder.#ctor(SharpDX.WIC.ImagingFactory,SharpDX.WIC.WICStream)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.PngBitmapEncoder\"/> class.\n            </summary>\n            <param name=\"factory\">The factory.</param>\n            <param name=\"stream\">The output stream.</param>\n        </member>\n        <member name=\"M:SharpDX.WIC.PngBitmapEncoder.#ctor(SharpDX.WIC.ImagingFactory,System.Guid,SharpDX.WIC.WICStream)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.PngBitmapEncoder\"/> class.\n            </summary>\n            <param name=\"factory\">The factory.</param>\n            <param name=\"guidVendorRef\">The GUID vendor ref.</param>\n            <param name=\"stream\">The output stream.</param>\n        </member>\n        <member name=\"T:SharpDX.WIC.TiffBitmapDecoder\">\n            <summary>\n            Tiff bitmap encoder using <see cref=\"T:SharpDX.WIC.BitmapDecoder\"/> initialized with default guid <see cref=\"F:SharpDX.WIC.ContainerFormatGuids.Tiff\"/>.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.WIC.TiffBitmapDecoder.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.TiffBitmapDecoder\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native PTR.</param>\n        </member>\n        <member name=\"M:SharpDX.WIC.TiffBitmapDecoder.#ctor(SharpDX.WIC.ImagingFactory)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.TiffBitmapDecoder\"/> class.\n            </summary>\n            <param name=\"factory\">The factory.</param>\n        </member>\n        <member name=\"M:SharpDX.WIC.TiffBitmapDecoder.#ctor(SharpDX.WIC.ImagingFactory,System.Guid)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.TiffBitmapDecoder\"/> class.\n            </summary>\n            <param name=\"factory\">The factory.</param>\n            <param name=\"guidVendorRef\">The GUID vendor ref.</param>\n        </member>\n        <member name=\"T:SharpDX.WIC.TiffBitmapEncoder\">\n            <summary>\n            Tiff bitmap encoder using <see cref=\"T:SharpDX.WIC.BitmapEncoder\"/> initialized with default guid <see cref=\"F:SharpDX.WIC.ContainerFormatGuids.Tiff\"/>.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.WIC.TiffBitmapEncoder.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.TiffBitmapEncoder\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native PTR.</param>\n        </member>\n        <member name=\"M:SharpDX.WIC.TiffBitmapEncoder.#ctor(SharpDX.WIC.ImagingFactory)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.TiffBitmapEncoder\"/> class.\n            </summary>\n            <param name=\"factory\">The factory.</param>\n        </member>\n        <member name=\"M:SharpDX.WIC.TiffBitmapEncoder.#ctor(SharpDX.WIC.ImagingFactory,System.IO.Stream)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.TiffBitmapEncoder\"/> class.\n            </summary>\n            <param name=\"factory\">The factory.</param>\n            <param name=\"stream\">The output stream.</param>\n        </member>\n        <member name=\"M:SharpDX.WIC.TiffBitmapEncoder.#ctor(SharpDX.WIC.ImagingFactory,System.Guid,System.IO.Stream)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.TiffBitmapEncoder\"/> class.\n            </summary>\n            <param name=\"factory\">The factory.</param>\n            <param name=\"guidVendorRef\">The GUID vendor ref.</param>\n            <param name=\"stream\">The output stream.</param>\n        </member>\n        <member name=\"M:SharpDX.WIC.TiffBitmapEncoder.#ctor(SharpDX.WIC.ImagingFactory,SharpDX.WIC.WICStream)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.TiffBitmapEncoder\"/> class.\n            </summary>\n            <param name=\"factory\">The factory.</param>\n            <param name=\"stream\">The output stream.</param>\n        </member>\n        <member name=\"M:SharpDX.WIC.TiffBitmapEncoder.#ctor(SharpDX.WIC.ImagingFactory,System.Guid,SharpDX.WIC.WICStream)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.TiffBitmapEncoder\"/> class.\n            </summary>\n            <param name=\"factory\">The factory.</param>\n            <param name=\"guidVendorRef\">The GUID vendor ref.</param>\n            <param name=\"stream\">The output stream.</param>\n        </member>\n        <member name=\"T:SharpDX.WIC.WmpBitmapDecoder\">\n            <summary>\n            Wmp bitmap encoder using <see cref=\"T:SharpDX.WIC.BitmapDecoder\"/> initialized with default guid <see cref=\"F:SharpDX.WIC.ContainerFormatGuids.Wmp\"/>.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.WIC.WmpBitmapDecoder.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.WmpBitmapDecoder\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native PTR.</param>\n        </member>\n        <member name=\"M:SharpDX.WIC.WmpBitmapDecoder.#ctor(SharpDX.WIC.ImagingFactory)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.WmpBitmapDecoder\"/> class.\n            </summary>\n            <param name=\"factory\">The factory.</param>\n        </member>\n        <member name=\"M:SharpDX.WIC.WmpBitmapDecoder.#ctor(SharpDX.WIC.ImagingFactory,System.Guid)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.WmpBitmapDecoder\"/> class.\n            </summary>\n            <param name=\"factory\">The factory.</param>\n            <param name=\"guidVendorRef\">The GUID vendor ref.</param>\n        </member>\n        <member name=\"T:SharpDX.WIC.WmpBitmapEncoder\">\n            <summary>\n            Wmp bitmap encoder using <see cref=\"T:SharpDX.WIC.BitmapEncoder\"/> initialized with default guid <see cref=\"F:SharpDX.WIC.ContainerFormatGuids.Wmp\"/>.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.WIC.WmpBitmapEncoder.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.WmpBitmapEncoder\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native PTR.</param>\n        </member>\n        <member name=\"M:SharpDX.WIC.WmpBitmapEncoder.#ctor(SharpDX.WIC.ImagingFactory)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.WmpBitmapEncoder\"/> class.\n            </summary>\n            <param name=\"factory\">The factory.</param>\n        </member>\n        <member name=\"M:SharpDX.WIC.WmpBitmapEncoder.#ctor(SharpDX.WIC.ImagingFactory,System.IO.Stream)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.WmpBitmapEncoder\"/> class.\n            </summary>\n            <param name=\"factory\">The factory.</param>\n            <param name=\"stream\">The output stream.</param>\n        </member>\n        <member name=\"M:SharpDX.WIC.WmpBitmapEncoder.#ctor(SharpDX.WIC.ImagingFactory,System.Guid,System.IO.Stream)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.WmpBitmapEncoder\"/> class.\n            </summary>\n            <param name=\"factory\">The factory.</param>\n            <param name=\"guidVendorRef\">The GUID vendor ref.</param>\n            <param name=\"stream\">The output stream.</param>\n        </member>\n        <member name=\"M:SharpDX.WIC.WmpBitmapEncoder.#ctor(SharpDX.WIC.ImagingFactory,SharpDX.WIC.WICStream)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.WmpBitmapEncoder\"/> class.\n            </summary>\n            <param name=\"factory\">The factory.</param>\n            <param name=\"stream\">The output stream.</param>\n        </member>\n        <member name=\"M:SharpDX.WIC.WmpBitmapEncoder.#ctor(SharpDX.WIC.ImagingFactory,System.Guid,SharpDX.WIC.WICStream)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.WIC.WmpBitmapEncoder\"/> class.\n            </summary>\n            <param name=\"factory\">The factory.</param>\n            <param name=\"guidVendorRef\">The GUID vendor ref.</param>\n            <param name=\"stream\">The output stream.</param>\n        </member>\n    </members>\n</doc>\n"
  },
  {
    "path": "3rd/SharpDX/SharpDX.Direct3D10.xml",
    "content": "<?xml version=\"1.0\"?>\n<doc>\n    <assembly>\n        <name>SharpDX.Direct3D10</name>\n    </assembly>\n    <members>\n        <member name=\"T:SharpDX.Direct3D10.AssemblyDoc\">\n            <summary>\n            The <see cref=\"A:SharpDX.Direct3D10\"/> assembly provides managed Direct3D10 API.\n            </summary>\n            <msdn-id>bb205066</msdn-id>\n            <unmanaged>Direct3D10</unmanaged>\t\n            <unmanaged-short>Direct3D10</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.Asynchronous\">\n            <summary>\t\n            <p>Get data from the GPU asynchronously.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p><strong>GetData</strong> retrieves the data collected between calls to <strong><see cref=\"M:SharpDX.Direct3D10.Asynchronous.Begin\"/></strong> and <strong><see cref=\"M:SharpDX.Direct3D10.Asynchronous.End\"/></strong>.  Certain queries only require a call to <strong><see cref=\"M:SharpDX.Direct3D10.Asynchronous.End\"/></strong> in which case the data returned by <strong>GetData</strong> is accurate up to the last call to <strong><see cref=\"M:SharpDX.Direct3D10.Asynchronous.End\"/></strong> (See <strong><see cref=\"T:SharpDX.Direct3D10.Query\"/> Interface</strong>).</p><p>If <em>DataSize</em> is 0, <strong>GetData</strong> is only used to check status where a return value of <see cref=\"F:SharpDX.Result.Ok\"/> indicates that data is available to give to an application, and a return value of S_FALSE indicates data is not yet available.</p><p>It is invalid to invoke this function on a predicate created with the flag D3D10_QUERY_MISCFLAG_PREDICATEHINT.</p><p>If the asynchronous interface that calls this function is <strong><see cref=\"T:SharpDX.Direct3D10.Query\"/> Interface</strong>, then the following table applies.</p><table> <tr><th>Query Type</th><th>Output Data Type</th><th>Supports Begin Method</th></tr> <tr><td><see cref=\"F:SharpDX.Direct3D10.QueryType.Event\"/></td><td><see cref=\"T:SharpDX.Bool\"/></td><td>NO</td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D10.QueryType.Occlusion\"/></td><td>UINT64</td><td>YES</td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D10.QueryType.Timestamp\"/></td><td>UINT64</td><td>NO</td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D10.QueryType.TimestampDisjoint\"/></td><td><see cref=\"T:SharpDX.Direct3D10.QueryDataTimestampDisjoint\"/></td><td>YES</td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D10.QueryType.PipelineStatistics\"/></td><td><see cref=\"T:SharpDX.Direct3D10.QueryDataPipelineStatistics\"/></td><td>YES</td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D10.QueryType.OcclusionPredicate\"/></td><td><see cref=\"T:SharpDX.Bool\"/></td><td>YES</td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D10.QueryType.StreamOutputStatistics\"/></td><td><see cref=\"T:SharpDX.Direct3D10.StreamOutputStatistics\"/></td><td>YES</td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D10.QueryType.StreamOutputOverflowPredicate\"/></td><td><see cref=\"T:SharpDX.Bool\"/></td><td>YES</td></tr> </table><p>?</p><p>If the asynchronous interface that calls this API is <strong><see cref=\"T:SharpDX.Direct3D10.Counter\"/> Interface</strong>, then the following applies.</p><table> <tr><th>Counter Type</th><th>Output Data Type</th><th>Units</th></tr> <tr><td><see cref=\"F:SharpDX.Direct3D10.CounterKind.GpuIdle\"/></td><td>FLOAT32</td><td>fraction of time</td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D10.CounterKind.VertexProcessing\"/></td><td>FLOAT32</td><td>fraction of time</td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D10.CounterKind.GeometryProcessing\"/></td><td>FLOAT32</td><td>fraction of time</td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D10.CounterKind.PixelProcessing\"/></td><td>FLOAT32</td><td>fraction of time</td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D10.CounterKind.OtherGpuProcessing\"/></td><td>FLOAT32</td><td>fraction of time</td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D10.CounterKind.HostAdapterBandwidthUtilization\"/></td><td>FLOAT32</td><td>fraction of theoretical maximum</td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D10.CounterKind.LocalVidmemBandwidthUtilization\"/></td><td>FLOAT32</td><td>fraction of theoretical maximum</td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D10.CounterKind.VertexThroughputUtilization\"/></td><td>FLOAT32</td><td>fraction of theoretical maximum</td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D10.CounterKind.TriangleSetupThroughputUtilization\"/></td><td>FLOAT32</td><td>fraction of theoretical maximum</td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D10.CounterKind.FillrateThroughputUtilization\"/></td><td>FLOAT32</td><td>fraction of theoretical maximum</td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D10.CounterKind.VertexShaderMemoryLimited\"/></td><td>FLOAT32</td><td>fraction of time</td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D10.CounterKind.VertexShaderComputationLimited\"/></td><td>FLOAT32</td><td>fraction of time</td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D10.CounterKind.GeometryShaderMemoryLimited\"/></td><td>FLOAT32</td><td>fraction of time</td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D10.CounterKind.GeometryShaderComputationLimited\"/></td><td>FLOAT32</td><td>fraction of time</td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D10.CounterKind.PixelShaderMemoryLimited\"/></td><td>FLOAT32</td><td>fraction of time</td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D10.CounterKind.PixelShaderComputationLimited\"/></td><td>FLOAT32</td><td>fraction of time</td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D10.CounterKind.PostTransformCacheHitRate\"/></td><td>FLOAT32</td><td>fraction</td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D10.CounterKind.TextureCacheHitRate\"/></td><td>FLOAT32</td><td>fraction</td></tr> </table><p>?</p><p>The value returned by a <see cref=\"F:SharpDX.Direct3D10.CounterKind.GpuIdle\"/>, <see cref=\"F:SharpDX.Direct3D10.CounterKind.VertexProcessing\"/>, <see cref=\"F:SharpDX.Direct3D10.CounterKind.GeometryProcessing\"/>, <see cref=\"F:SharpDX.Direct3D10.CounterKind.PixelProcessing\"/>, or <see cref=\"F:SharpDX.Direct3D10.CounterKind.OtherGpuProcessing\"/> counter may be different depending on the number of parallel counters that exist on a video card, and those values can be interpreted with the following equation:</p><p></p><p>The number of parallel counters that a video card has is available from <strong>NumDetectableParallelUnits</strong> in <strong><see cref=\"T:SharpDX.Direct3D10.CounterCapabilities\"/></strong>, and it can be retrieved by calling <strong><see cref=\"M:SharpDX.Direct3D10.Device.GetCounterCapabilities\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Asynchronous']/*\"/>\t\n            <msdn-id>Bb173503</msdn-id>\t\n            <unmanaged>ID3D10Asynchronous</unmanaged>\t\n            <unmanaged-short>ID3D10Asynchronous</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.DeviceChild\">\n            <summary>\t\n            <p>A device-child interface accesses data used by a device.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>There are several types of device child interfaces, all of which inherit this interface. They include shaders, state objects, and input layouts.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10DeviceChild']/*\"/>\t\n            <msdn-id>bb173529</msdn-id>\t\n            <unmanaged>ID3D10DeviceChild</unmanaged>\t\n            <unmanaged-short>ID3D10DeviceChild</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.DeviceChild.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D10.DeviceChild\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.DeviceChild.op_Explicit(System.IntPtr)~SharpDX.Direct3D10.DeviceChild\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D10.DeviceChild\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.DeviceChild.GetDevice(SharpDX.Direct3D10.Device@)\">\n            <summary>\t\n            <p>Get a reference to the device that created this interface.</p>\t\n            </summary>\t\n            <param name=\"deviceOut\"><dd>  <p>Address of a reference to a device (see <strong><see cref=\"T:SharpDX.Direct3D10.Device\"/> Interface</strong>).</p> </dd></param>\t\n            <remarks>\t\n            <p>Any returned interfaces will have their reference count incremented by one, so be sure to call ::release() on the returned reference(s) before they are freed or else you will have a memory leak.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10DeviceChild::GetDevice']/*\"/>\t\n            <msdn-id>bb173530</msdn-id>\t\n            <unmanaged>void ID3D10DeviceChild::GetDevice([Out] ID3D10Device** ppDevice)</unmanaged>\t\n            <unmanaged-short>ID3D10DeviceChild::GetDevice</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.DeviceChild.GetPrivateData(System.Guid,System.Int32@,System.IntPtr)\">\n            <summary>\t\n            <p>Get data from a device that is associated with a guid.</p>\t\n            </summary>\t\n            <param name=\"guid\"><dd>  <p>Guid associated with the data.</p> </dd></param>\t\n            <param name=\"dataSizeRef\"><dd>  <p>Size of the data.</p> </dd></param>\t\n            <param name=\"dataRef\"><dd>  <p>Pointer to the data stored with the device. If pData is <strong><c>null</c></strong>, DataSize must also be 0, and any data previously associated with the guid will be destroyed.</p> </dd></param>\t\n            <returns><p>This method returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>The data stored in the device is set with <strong><see cref=\"M:SharpDX.Direct3D10.DeviceChild.SetPrivateData(System.Guid,System.Int32,System.IntPtr)\"/></strong>.</p><p>The data retrieved and the guid will typically be application-defined.</p><p>This method can be used to get the device type by specifying GUID_DeviceType as the guid. In this case pData will point to a driver-type-enumeration value (see <strong><see cref=\"T:SharpDX.Direct3D10.DriverType\"/></strong>).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10DeviceChild::GetPrivateData']/*\"/>\t\n            <msdn-id>bb173574</msdn-id>\t\n            <unmanaged>HRESULT ID3D10DeviceChild::GetPrivateData([In] const GUID&amp; guid,[InOut] unsigned int* pDataSize,[Out, Buffer, Optional] void* pData)</unmanaged>\t\n            <unmanaged-short>ID3D10DeviceChild::GetPrivateData</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.DeviceChild.SetPrivateData(System.Guid,System.Int32,System.IntPtr)\">\n            <summary>\t\n            <p>Set application-defined data to a device child and associate that data with an application-defined guid.</p>\t\n            </summary>\t\n            <param name=\"guid\"><dd>  <p>Guid associated with the data.</p> </dd></param>\t\n            <param name=\"dataSize\"><dd>  <p>Size of the data.</p> </dd></param>\t\n            <param name=\"dataRef\"><dd>  <p>Pointer to the data to be stored with this device child. If pData is <strong><c>null</c></strong>, DataSize must also be 0, and any data previously associated with the specified guid will be destroyed.</p> </dd></param>\t\n            <returns><p>This method returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>The data stored in the device child with this method can be retrieved with <strong><see cref=\"M:SharpDX.Direct3D10.DeviceChild.GetPrivateData(System.Guid,System.Int32@,System.IntPtr)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10DeviceChild::SetPrivateData']/*\"/>\t\n            <msdn-id>bb173532</msdn-id>\t\n            <unmanaged>HRESULT ID3D10DeviceChild::SetPrivateData([In] const GUID&amp; guid,[In] unsigned int DataSize,[In, Buffer, Optional] const void* pData)</unmanaged>\t\n            <unmanaged-short>ID3D10DeviceChild::SetPrivateData</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.DeviceChild.SetPrivateDataInterface(System.Guid,SharpDX.ComObject)\">\n            <summary>\t\n            <p>Associate an <see cref=\"T:SharpDX.ComObject\"/>-derived interface with this device child and associate that interface with an application-defined guid.</p>\t\n            </summary>\t\n            <param name=\"guid\">No documentation.</param>\t\n            <param name=\"dataRef\">No documentation.</param>\t\n            <returns><p>This method returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>When this method is called ::addref() will be called on the <see cref=\"T:SharpDX.ComObject\"/>-derived interface, and when the device child is detroyed ::release() will be called on the <see cref=\"T:SharpDX.ComObject\"/>-derived interface.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10DeviceChild::SetPrivateDataInterface']/*\"/>\t\n            <msdn-id>bb173533</msdn-id>\t\n            <unmanaged>HRESULT ID3D10DeviceChild::SetPrivateDataInterface([In] const GUID&amp; guid,[In, Optional] const IUnknown* pData)</unmanaged>\t\n            <unmanaged-short>ID3D10DeviceChild::SetPrivateDataInterface</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.DeviceChild.DebugName\">\n            <summary>\n            Gets or sets the debug-name for this object.\n            </summary>\n            <value>\n            The debug name.\n            </value>\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.DeviceChild.Device\">\n            <summary>\t\n            <p>Get a reference to the device that created this interface.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Any returned interfaces will have their reference count incremented by one, so be sure to call ::release() on the returned reference(s) before they are freed or else you will have a memory leak.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10DeviceChild::GetDevice']/*\"/>\t\n            <msdn-id>bb173530</msdn-id>\t\n            <unmanaged>GetDevice</unmanaged>\t\n            <unmanaged-short>GetDevice</unmanaged-short>\t\n            <unmanaged>void ID3D10DeviceChild::GetDevice([Out] ID3D10Device** ppDevice)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Asynchronous.GetData\">\n            <summary>\t\n            Get data from the GPU asynchronously.\t\n            </summary>\t\n            <remarks>\t\n            GetData retrieves the data collected between calls to <see cref=\"M:SharpDX.Direct3D10.Asynchronous.Begin\"/> and <see cref=\"M:SharpDX.Direct3D10.Asynchronous.End\"/>.  Certain queries only require a call to ID3D10Asynchronous::End in which case the data returned by GetData is accurate up to the last call to ID3D10Asynchronous::End (See <see cref=\"T:SharpDX.Direct3D10.Query\"/>). If DataSize is 0, GetData is only used to check status where a return value of S_OK indicates that data is available to give to an application, and a return value of S_FALSE indicates data is not yet available. It is invalid to invoke this function on a predicate created with the flag D3D10_QUERY_MISCFLAG_PREDICATEHINT. If the asynchronous interface that calls this function is <see cref=\"T:SharpDX.Direct3D10.Query\"/>, then the following table applies.  Query TypeOutput Data TypeSupports Begin Method EVENTBOOLNO OCCLUSIONUINT64YES TIMESTAMPUINT64NO TIMESTAMP_DISJOINTQUERYDATA_TIMESTAMP_DISJOINTYES PIPELINE_STATISTICSQUERYDATA_PIPELINE_STATISTICSYES OCCLUSION_PREDICATEBOOLYES SO_STATISTICSQUERYDATA_SO_STATISTICSYES SO_OVERFLOW_PREDICATEBOOLYES  ? If the asynchronous interface that calls this API is <see cref=\"T:SharpDX.Direct3D10.Counter\"/>, then the following applies.  Counter TypeOutput Data TypeUnits GPU_IDLEFLOAT32fraction of time VERTEX_PROCESSINGFLOAT32fraction of time GEOMETRY_PROCESSINGFLOAT32fraction of time PIXEL_PROCESSINGFLOAT32fraction of time OTHER_GPU_PROCESSINGFLOAT32fraction of time HOST_ADAPTER_BANDWIDTH_UTILIZATIONFLOAT32fraction of theoretical maximum LOCAL_VIDMEM_BANDWIDTH_UTILIZATIONFLOAT32fraction of theoretical maximum VERTEX_THROUGHPUT_UTILIZATIONFLOAT32fraction of theoretical maximum TRISETUP_THROUGHPUT_UTILIZATIONFLOAT32fraction of theoretical maximum FILLRATE_THROUGHPUT_UTILIZATIONFLOAT32fraction of theoretical maximum VERTEXSHADER_MEMORY_LIMITEDFLOAT32fraction of time VERTEXSHADER_COMPUTATION_LIMITEDFLOAT32fraction of time GEOMETRYSHADER_MEMORY_LIMITEDFLOAT32fraction of time GEOMETRYSHADER_COMPUTATION_LIMITEDFLOAT32fraction of time PIXELSHADER_MEMORY_LIMITEDFLOAT32fraction of time PIXELSHADER_COMPUTATION_LIMITEDFLOAT32fraction of time POST_TRANSFORM_CACHE_HIT_RATEFLOAT32fraction TEXTURE_CACHE_HIT_RATEFLOAT32fraction  ? The value returned by a GPU_IDLE, VERTEX_PROCESSING, GEOMETRY_PROCESSING, PIXEL_PROCESSING, or OTHER_GPU_PROCESSING counter may be different depending on the number of parallel counters that exist on a video card, and those values can be interpreted with the following equation:  ?  Equation to interpret the number of parallel counters ? The number of parallel counters that a video card has is available from NumDetectableParallelUnits in <see cref=\"T:SharpDX.Direct3D10.CounterMetadata\"/>, and it can be retrieved by calling <see cref=\"M:SharpDX.Direct3D10.Device.CheckCounter(SharpDX.Direct3D10.CounterDescription,SharpDX.Direct3D10.CounterType@,System.Int32@,System.IntPtr,System.IntPtr,System.IntPtr,System.IntPtr,System.IntPtr,System.IntPtr)\"/>. \t\n            </remarks>\t\n            <returns>If this function succeeds, returns a <see cref=\"T:SharpDX.DataStream\"/> containing the asynchronous data sent from the GPU. </returns>\n            <unmanaged>HRESULT ID3D10Asynchronous::GetData([Out, Buffer, Optional] void* pData,[In] int DataSize,[In] int GetDataFlags)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Asynchronous.GetData(SharpDX.Direct3D10.AsynchronousFlags)\">\n            <summary>\t\n            Get data from the GPU asynchronously.\t\n            </summary>\t\n            <remarks>\t\n            GetData retrieves the data collected between calls to <see cref=\"M:SharpDX.Direct3D10.Asynchronous.Begin\"/> and <see cref=\"M:SharpDX.Direct3D10.Asynchronous.End\"/>.  Certain queries only require a call to ID3D10Asynchronous::End in which case the data returned by GetData is accurate up to the last call to ID3D10Asynchronous::End (See <see cref=\"T:SharpDX.Direct3D10.Query\"/>). If DataSize is 0, GetData is only used to check status where a return value of S_OK indicates that data is available to give to an application, and a return value of S_FALSE indicates data is not yet available. It is invalid to invoke this function on a predicate created with the flag D3D10_QUERY_MISCFLAG_PREDICATEHINT. If the asynchronous interface that calls this function is <see cref=\"T:SharpDX.Direct3D10.Query\"/>, then the following table applies.  Query TypeOutput Data TypeSupports Begin Method EVENTBOOLNO OCCLUSIONUINT64YES TIMESTAMPUINT64NO TIMESTAMP_DISJOINTQUERYDATA_TIMESTAMP_DISJOINTYES PIPELINE_STATISTICSQUERYDATA_PIPELINE_STATISTICSYES OCCLUSION_PREDICATEBOOLYES SO_STATISTICSQUERYDATA_SO_STATISTICSYES SO_OVERFLOW_PREDICATEBOOLYES  ? If the asynchronous interface that calls this API is <see cref=\"T:SharpDX.Direct3D10.Counter\"/>, then the following applies.  Counter TypeOutput Data TypeUnits GPU_IDLEFLOAT32fraction of time VERTEX_PROCESSINGFLOAT32fraction of time GEOMETRY_PROCESSINGFLOAT32fraction of time PIXEL_PROCESSINGFLOAT32fraction of time OTHER_GPU_PROCESSINGFLOAT32fraction of time HOST_ADAPTER_BANDWIDTH_UTILIZATIONFLOAT32fraction of theoretical maximum LOCAL_VIDMEM_BANDWIDTH_UTILIZATIONFLOAT32fraction of theoretical maximum VERTEX_THROUGHPUT_UTILIZATIONFLOAT32fraction of theoretical maximum TRISETUP_THROUGHPUT_UTILIZATIONFLOAT32fraction of theoretical maximum FILLRATE_THROUGHPUT_UTILIZATIONFLOAT32fraction of theoretical maximum VERTEXSHADER_MEMORY_LIMITEDFLOAT32fraction of time VERTEXSHADER_COMPUTATION_LIMITEDFLOAT32fraction of time GEOMETRYSHADER_MEMORY_LIMITEDFLOAT32fraction of time GEOMETRYSHADER_COMPUTATION_LIMITEDFLOAT32fraction of time PIXELSHADER_MEMORY_LIMITEDFLOAT32fraction of time PIXELSHADER_COMPUTATION_LIMITEDFLOAT32fraction of time POST_TRANSFORM_CACHE_HIT_RATEFLOAT32fraction TEXTURE_CACHE_HIT_RATEFLOAT32fraction  ? The value returned by a GPU_IDLE, VERTEX_PROCESSING, GEOMETRY_PROCESSING, PIXEL_PROCESSING, or OTHER_GPU_PROCESSING counter may be different depending on the number of parallel counters that exist on a video card, and those values can be interpreted with the following equation:  ?  Equation to interpret the number of parallel counters ? The number of parallel counters that a video card has is available from NumDetectableParallelUnits in <see cref=\"T:SharpDX.Direct3D10.CounterMetadata\"/>, and it can be retrieved by calling <see cref=\"M:SharpDX.Direct3D10.Device.CheckCounter(SharpDX.Direct3D10.CounterDescription,SharpDX.Direct3D10.CounterType@,System.Int32@,System.IntPtr,System.IntPtr,System.IntPtr,System.IntPtr,System.IntPtr,System.IntPtr)\"/>. \t\n            </remarks>\t\n            <param name=\"flags\">Optional flags. Can be 0 or any combination of the flags enumerated by <see cref=\"T:SharpDX.Direct3D10.AsynchronousFlags\"/>. </param>\n            <returns>If this function succeeds, returns a <see cref=\"T:SharpDX.DataStream\"/> containing the asynchronous data sent from the GPU. </returns>\n            <unmanaged>HRESULT ID3D10Asynchronous::GetData([Out, Buffer, Optional] void* pData,[In] int DataSize,[In] int GetDataFlags)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Asynchronous.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D10.Asynchronous\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Asynchronous.op_Explicit(System.IntPtr)~SharpDX.Direct3D10.Asynchronous\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D10.Asynchronous\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Asynchronous.Begin\">\n            <summary>\t\n            <p>Starts the collection of GPU data.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Calling Begin starts the asynchronous collection of GPU data. Calling <strong><see cref=\"M:SharpDX.Direct3D10.Asynchronous.End\"/></strong> causes data collection to stop.   See <strong><see cref=\"T:SharpDX.Direct3D10.Asynchronous\"/> Interface</strong> for additional information.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Asynchronous::Begin']/*\"/>\t\n            <msdn-id>bb173501</msdn-id>\t\n            <unmanaged>void ID3D10Asynchronous::Begin()</unmanaged>\t\n            <unmanaged-short>ID3D10Asynchronous::Begin</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Asynchronous.End\">\n            <summary>\t\n            <p>Ends the collection of GPU data.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Calling <strong><see cref=\"M:SharpDX.Direct3D10.Asynchronous.Begin\"/></strong> starts the asynchronous collection of GPU data. Calling <strong><see cref=\"M:SharpDX.Direct3D10.Asynchronous.End\"/></strong> causes data  collection to stop. See <strong><see cref=\"T:SharpDX.Direct3D10.Asynchronous\"/> Interface</strong> for additional information.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Asynchronous::End']/*\"/>\t\n            <msdn-id>bb173502</msdn-id>\t\n            <unmanaged>void ID3D10Asynchronous::End()</unmanaged>\t\n            <unmanaged-short>ID3D10Asynchronous::End</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Asynchronous.GetData(System.IntPtr,System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Get data from the GPU asynchronously.</p>\t\n            </summary>\t\n            <param name=\"dataRef\"><dd>  <p>Address of memory that will receive the data. If <strong><c>null</c></strong>, <strong>GetData</strong> will be used only to check status. The type of data output depends on the type of asynchronous interface. See Remarks.</p> </dd></param>\t\n            <param name=\"dataSize\"><dd>  <p>Size of the data to retrieve or 0. This value can be obtained with <strong><see cref=\"M:SharpDX.Direct3D10.Asynchronous.GetDataSize\"/></strong>. Must be 0 when <em>pData</em> is <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"getDataFlags\"><dd>  <p>Optional flags. Can be 0 or any combination of the flags enumerated by <strong><see cref=\"T:SharpDX.Direct3D10.AsynchronousFlags\"/></strong>.</p> </dd></param>\t\n            <returns><p>If this function succeeds, it returns <see cref=\"F:SharpDX.Result.Ok\"/>. Otherwise, possible  return values are the following:</p><ul> <li>S_FALSE</li> <li><see cref=\"F:SharpDX.DXGI.ResultCode.DeviceRemoved\"/></li> <li><see cref=\"F:SharpDX.DXGI.ResultCode.InvalidCall\"/></li> </ul></returns>\t\n            <remarks>\t\n            <p><strong>GetData</strong> retrieves the data collected between calls to <strong><see cref=\"M:SharpDX.Direct3D10.Asynchronous.Begin\"/></strong> and <strong><see cref=\"M:SharpDX.Direct3D10.Asynchronous.End\"/></strong>.  Certain queries only require a call to <strong><see cref=\"M:SharpDX.Direct3D10.Asynchronous.End\"/></strong> in which case the data returned by <strong>GetData</strong> is accurate up to the last call to <strong><see cref=\"M:SharpDX.Direct3D10.Asynchronous.End\"/></strong> (See <strong><see cref=\"T:SharpDX.Direct3D10.Query\"/> Interface</strong>).</p><p>If <em>DataSize</em> is 0, <strong>GetData</strong> is only used to check status where a return value of <see cref=\"F:SharpDX.Result.Ok\"/> indicates that data is available to give to an application, and a return value of S_FALSE indicates data is not yet available.</p><p>It is invalid to invoke this function on a predicate created with the flag D3D10_QUERY_MISCFLAG_PREDICATEHINT.</p><p>If the asynchronous interface that calls this function is <strong><see cref=\"T:SharpDX.Direct3D10.Query\"/> Interface</strong>, then the following table applies.</p><table> <tr><th>Query Type</th><th>Output Data Type</th><th>Supports Begin Method</th></tr> <tr><td><see cref=\"F:SharpDX.Direct3D10.QueryType.Event\"/></td><td><see cref=\"T:SharpDX.Bool\"/></td><td>NO</td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D10.QueryType.Occlusion\"/></td><td>UINT64</td><td>YES</td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D10.QueryType.Timestamp\"/></td><td>UINT64</td><td>NO</td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D10.QueryType.TimestampDisjoint\"/></td><td><see cref=\"T:SharpDX.Direct3D10.QueryDataTimestampDisjoint\"/></td><td>YES</td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D10.QueryType.PipelineStatistics\"/></td><td><see cref=\"T:SharpDX.Direct3D10.QueryDataPipelineStatistics\"/></td><td>YES</td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D10.QueryType.OcclusionPredicate\"/></td><td><see cref=\"T:SharpDX.Bool\"/></td><td>YES</td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D10.QueryType.StreamOutputStatistics\"/></td><td><see cref=\"T:SharpDX.Direct3D10.StreamOutputStatistics\"/></td><td>YES</td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D10.QueryType.StreamOutputOverflowPredicate\"/></td><td><see cref=\"T:SharpDX.Bool\"/></td><td>YES</td></tr> </table><p>?</p><p>If the asynchronous interface that calls this API is <strong><see cref=\"T:SharpDX.Direct3D10.Counter\"/> Interface</strong>, then the following applies.</p><table> <tr><th>Counter Type</th><th>Output Data Type</th><th>Units</th></tr> <tr><td><see cref=\"F:SharpDX.Direct3D10.CounterKind.GpuIdle\"/></td><td>FLOAT32</td><td>fraction of time</td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D10.CounterKind.VertexProcessing\"/></td><td>FLOAT32</td><td>fraction of time</td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D10.CounterKind.GeometryProcessing\"/></td><td>FLOAT32</td><td>fraction of time</td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D10.CounterKind.PixelProcessing\"/></td><td>FLOAT32</td><td>fraction of time</td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D10.CounterKind.OtherGpuProcessing\"/></td><td>FLOAT32</td><td>fraction of time</td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D10.CounterKind.HostAdapterBandwidthUtilization\"/></td><td>FLOAT32</td><td>fraction of theoretical maximum</td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D10.CounterKind.LocalVidmemBandwidthUtilization\"/></td><td>FLOAT32</td><td>fraction of theoretical maximum</td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D10.CounterKind.VertexThroughputUtilization\"/></td><td>FLOAT32</td><td>fraction of theoretical maximum</td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D10.CounterKind.TriangleSetupThroughputUtilization\"/></td><td>FLOAT32</td><td>fraction of theoretical maximum</td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D10.CounterKind.FillrateThroughputUtilization\"/></td><td>FLOAT32</td><td>fraction of theoretical maximum</td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D10.CounterKind.VertexShaderMemoryLimited\"/></td><td>FLOAT32</td><td>fraction of time</td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D10.CounterKind.VertexShaderComputationLimited\"/></td><td>FLOAT32</td><td>fraction of time</td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D10.CounterKind.GeometryShaderMemoryLimited\"/></td><td>FLOAT32</td><td>fraction of time</td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D10.CounterKind.GeometryShaderComputationLimited\"/></td><td>FLOAT32</td><td>fraction of time</td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D10.CounterKind.PixelShaderMemoryLimited\"/></td><td>FLOAT32</td><td>fraction of time</td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D10.CounterKind.PixelShaderComputationLimited\"/></td><td>FLOAT32</td><td>fraction of time</td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D10.CounterKind.PostTransformCacheHitRate\"/></td><td>FLOAT32</td><td>fraction</td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D10.CounterKind.TextureCacheHitRate\"/></td><td>FLOAT32</td><td>fraction</td></tr> </table><p>?</p><p>The value returned by a <see cref=\"F:SharpDX.Direct3D10.CounterKind.GpuIdle\"/>, <see cref=\"F:SharpDX.Direct3D10.CounterKind.VertexProcessing\"/>, <see cref=\"F:SharpDX.Direct3D10.CounterKind.GeometryProcessing\"/>, <see cref=\"F:SharpDX.Direct3D10.CounterKind.PixelProcessing\"/>, or <see cref=\"F:SharpDX.Direct3D10.CounterKind.OtherGpuProcessing\"/> counter may be different depending on the number of parallel counters that exist on a video card, and those values can be interpreted with the following equation:</p><p></p><p>The number of parallel counters that a video card has is available from <strong>NumDetectableParallelUnits</strong> in <strong><see cref=\"T:SharpDX.Direct3D10.CounterCapabilities\"/></strong>, and it can be retrieved by calling <strong><see cref=\"M:SharpDX.Direct3D10.Device.GetCounterCapabilities\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Asynchronous::GetData']/*\"/>\t\n            <msdn-id>bb173503</msdn-id>\t\n            <unmanaged>HRESULT ID3D10Asynchronous::GetData([Out, Buffer, Optional] void* pData,[In] unsigned int DataSize,[In] unsigned int GetDataFlags)</unmanaged>\t\n            <unmanaged-short>ID3D10Asynchronous::GetData</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Asynchronous.GetDataSize\">\n            <summary>\t\n            <p>Get the size of the data (in bytes) that is output when calling <strong><see cref=\"M:SharpDX.Direct3D10.Asynchronous.GetData\"/></strong>.</p>\t\n            </summary>\t\n            <returns><p>Size of the data (in bytes) that is output when calling GetData.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Asynchronous::GetDataSize']/*\"/>\t\n            <msdn-id>bb173504</msdn-id>\t\n            <unmanaged>unsigned int ID3D10Asynchronous::GetDataSize()</unmanaged>\t\n            <unmanaged-short>ID3D10Asynchronous::GetDataSize</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.Asynchronous.IsDataAvailable\">\n            <summary>\n            Gets a value indicating whether or not data is available for consumption.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.BlendState\">\n            <summary>\t\n            <p>This blend-state interface accesses blending state for a Direct3D 10.0 device for the output-merger stage.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Blending combines two pixel values. You have control over how the pixels are blended by using a predefined set of blending operations, as well as preblending operations. The Blending Block Diagram shows conceptually how blending works.</p><p>To create a blend-state interface, call <strong><see cref=\"M:SharpDX.Direct3D10.Device.CreateBlendState(SharpDX.Direct3D10.BlendStateDescription@,SharpDX.Direct3D10.BlendState)\"/></strong>. To initialize the blend state, call <strong><see cref=\"M:SharpDX.Direct3D10.OutputMergerStage.SetBlendState(SharpDX.Direct3D10.BlendState,SharpDX.Color4,System.Int32)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10BlendState']/*\"/>\t\n            <msdn-id>bb173505</msdn-id>\t\n            <unmanaged>ID3D10BlendState</unmanaged>\t\n            <unmanaged-short>ID3D10BlendState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.BlendState.#ctor(SharpDX.Direct3D10.Device,SharpDX.Direct3D10.BlendStateDescription)\">\n            <summary>\n              Constructs a new <see cref = \"T:SharpDX.Direct3D10.BlendState\" /> based on the specified description.\n            </summary>\n            <param name = \"device\">The device with which to associate the state object.</param>\n            <param name = \"description\">The state description.</param>\n            <returns>The newly created object.</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.BlendState.#ctor(SharpDX.Direct3D10.Device,SharpDX.Direct3D10.BlendStateDescription@)\">\n            <summary>\n              Constructs a new <see cref = \"T:SharpDX.Direct3D10.BlendState\" /> based on the specified description.\n            </summary>\n            <param name = \"device\">The device with which to associate the state object.</param>\n            <param name = \"description\">The state description.</param>\n            <returns>The newly created object.</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.BlendState.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D10.BlendState\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.BlendState.op_Explicit(System.IntPtr)~SharpDX.Direct3D10.BlendState\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D10.BlendState\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.BlendState.GetDescription(SharpDX.Direct3D10.BlendStateDescription@)\">\n            <summary>\t\n            <p>Get the blend state.</p>\t\n            </summary>\t\n            <param name=\"descRef\"><dd>  <p>A reference to the blend state (see <strong><see cref=\"T:SharpDX.Direct3D10.BlendStateDescription\"/></strong>).</p> </dd></param>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10BlendState::GetDesc']/*\"/>\t\n            <msdn-id>bb173506</msdn-id>\t\n            <unmanaged>void ID3D10BlendState::GetDesc([Out] D3D10_BLEND_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>ID3D10BlendState::GetDesc</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.BlendState.Description\">\n            <summary>\t\n            <p>Get the blend state.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10BlendState::GetDesc']/*\"/>\t\n            <msdn-id>bb173506</msdn-id>\t\n            <unmanaged>GetDesc</unmanaged>\t\n            <unmanaged-short>GetDesc</unmanaged-short>\t\n            <unmanaged>void ID3D10BlendState::GetDesc([Out] D3D10_BLEND_DESC* pDesc)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.BlendState1\">\n            <summary>\t\n            <p>This blend-state interface accesses blending state for a Direct3D 10.1 device for the output-merger stage.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Blending combines two pixel values. You have control over how the pixels are blended by using a predefined set of blending operations, as well as preblending operations. The Blending Block Diagram shows conceptually how blending works.</p><p>To create a blend-state interface, call <strong><see cref=\"M:SharpDX.Direct3D10.Device1.CreateBlendState1(SharpDX.Direct3D10.BlendStateDescription1@,SharpDX.Direct3D10.BlendState1)\"/></strong>. To initialize the blend state, call <strong><see cref=\"M:SharpDX.Direct3D10.OutputMergerStage.SetBlendState(SharpDX.Direct3D10.BlendState,SharpDX.Color4,System.Int32)\"/></strong>.</p><p>This method requires Windows Vista Service Pack 1.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10BlendState1']/*\"/>\t\n            <msdn-id>bb694544</msdn-id>\t\n            <unmanaged>ID3D10BlendState1</unmanaged>\t\n            <unmanaged-short>ID3D10BlendState1</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.BlendState1.#ctor(SharpDX.Direct3D10.Device1,SharpDX.Direct3D10.BlendStateDescription1)\">\n            <summary>\n              Constructs a new <see cref = \"T:SharpDX.Direct3D10.BlendState1\" /> based on the specified description.\n            </summary>\n            <param name = \"device\">The device with which to associate the state object.</param>\n            <param name = \"description\">The state description.</param>\n            <returns>The newly created object.</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.BlendState1.#ctor(SharpDX.Direct3D10.Device1,SharpDX.Direct3D10.BlendStateDescription1@)\">\n            <summary>\n              Constructs a new <see cref = \"T:SharpDX.Direct3D10.BlendState1\" /> based on the specified description.\n            </summary>\n            <param name = \"device\">The device with which to associate the state object.</param>\n            <param name = \"description\">The state description.</param>\n            <returns>The newly created object.</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.BlendState1.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D10.BlendState1\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.BlendState1.op_Explicit(System.IntPtr)~SharpDX.Direct3D10.BlendState1\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D10.BlendState1\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.BlendState1.GetDescription1(SharpDX.Direct3D10.BlendStateDescription1@)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"descRef\">No documentation.</param>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10BlendState1::GetDesc1']/*\"/>\t\n            <unmanaged>void ID3D10BlendState1::GetDesc1([Out] D3D10_BLEND_DESC1* pDesc)</unmanaged>\t\n            <unmanaged-short>ID3D10BlendState1::GetDesc1</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.BlendState1.Description1\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10BlendState1::GetDesc1']/*\"/>\t\n            <unmanaged>GetDesc1</unmanaged>\t\n            <unmanaged-short>GetDesc1</unmanaged-short>\t\n            <unmanaged>void ID3D10BlendState1::GetDesc1([Out] D3D10_BLEND_DESC1* pDesc)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.Buffer\">\n            <summary>\t\n            <p>A buffer interface accesses a buffer resource, which is unstructured memory. Buffers typically store vertex or index data.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Three types of buffers can be created; vertex, index, and shader-constant buffers. To create a buffer resource, call <strong><see cref=\"M:SharpDX.Direct3D10.Device.CreateBuffer(SharpDX.Direct3D10.BufferDescription@,System.Nullable{SharpDX.DataBox},SharpDX.Direct3D10.Buffer)\"/></strong>.</p><p>A buffer must be bound to the pipeline before it can be accessed. Buffers can be bound to the input-assembler stage by calls to <strong><see cref=\"M:SharpDX.Direct3D10.InputAssemblerStage.SetVertexBuffers(System.Int32,SharpDX.Direct3D10.VertexBufferBinding)\"/></strong> and <strong><see cref=\"M:SharpDX.Direct3D10.InputAssemblerStage.SetIndexBuffer(SharpDX.Direct3D10.Buffer,SharpDX.DXGI.Format,System.Int32)\"/></strong>, and to the stream-output stage by a call to <strong><see cref=\"M:SharpDX.Direct3D10.StreamOutputStage.SetTargets(SharpDX.Direct3D10.StreamOutputBufferBinding[])\"/></strong>.</p><p>Buffers can be bound to multiple pipeline stages simultaneously for reading. A buffer can also be bound to a single pipeline stage for writing; however, the same buffer cannot be bound for reading and writing simultaneously. For more information, see binding resources.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Buffer']/*\"/>\t\n            <msdn-id>bb173510</msdn-id>\t\n            <unmanaged>ID3D10Buffer</unmanaged>\t\n            <unmanaged-short>ID3D10Buffer</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.Resource\">\n            <summary>\t\n            <p>A resource interface provides common actions on all resources.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>A resource interface cannot be created directly; instead, buffers and textures are created that inherit from a resource interface (see Creating Buffer Resources or Creating Texture Resources).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Resource']/*\"/>\t\n            <msdn-id>bb173829</msdn-id>\t\n            <unmanaged>ID3D10Resource</unmanaged>\t\n            <unmanaged-short>ID3D10Resource</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.Resource.MaximumMipLevels\">\n            <summary>Constant MaximumMipLevels.</summary>\n            <unmanaged>D3D10_REQ_MIP_LEVELS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.Resource.ResourceSizeInMegabytes\">\n            <summary>Constant ResourceSizeInMegabytes.</summary>\n            <unmanaged>D3D10_REQ_RESOURCE_SIZE_IN_MEGABYTES</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.Resource.MaximumTexture1DArraySize\">\n            <summary>Constant MaximumTexture1DArraySize.</summary>\n            <unmanaged>D3D10_REQ_TEXTURE1D_ARRAY_AXIS_DIMENSION</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.Resource.MaximumTexture2DArraySize\">\n            <summary>Constant MaximumTexture2DArraySize.</summary>\n            <unmanaged>D3D10_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.Resource.MaximumTexture1DSize\">\n            <summary>Constant MaximumTexture1DSize.</summary>\n            <unmanaged>D3D10_REQ_TEXTURE1D_U_DIMENSION</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.Resource.MaximumTexture2DSize\">\n            <summary>Constant MaximumTexture2DSize.</summary>\n            <unmanaged>D3D10_REQ_TEXTURE2D_U_OR_V_DIMENSION</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.Resource.MaximumTexture3DSize\">\n            <summary>Constant MaximumTexture3DSize.</summary>\n            <unmanaged>D3D10_REQ_TEXTURE3D_U_V_OR_W_DIMENSION</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.Resource.MaximumTextureCubeSize\">\n            <summary>Constant MaximumTextureCubeSize.</summary>\n            <unmanaged>D3D10_REQ_TEXTURECUBE_DIMENSION</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Resource.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D10.Resource\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Resource.op_Explicit(System.IntPtr)~SharpDX.Direct3D10.Resource\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D10.Resource\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Resource.GetTypeInfo(SharpDX.Direct3D10.ResourceDimension@)\">\n            <summary>\t\n            <p>Get the type of the resource.</p>\t\n            </summary>\t\n            <param name=\"rType\"><dd>  <p>Pointer to the resource type (see <strong><see cref=\"T:SharpDX.Direct3D10.ResourceDimension\"/></strong>).</p> </dd></param>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Resource::GetType']/*\"/>\t\n            <msdn-id>bb173831</msdn-id>\t\n            <unmanaged>void ID3D10Resource::GetType([Out] D3D10_RESOURCE_DIMENSION* rType)</unmanaged>\t\n            <unmanaged-short>ID3D10Resource::GetType</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Resource.SetEvictionPriority(System.Int32)\">\n            <summary>\t\n            <p>Set the eviction priority of a resource.</p>\t\n            </summary>\t\n            <param name=\"evictionPriority\"><dd>  <p>Eviction priority for the resource, which is one of the following values:</p> <ul> <li><see cref=\"F:SharpDX.DXGI.ResourcePriority.Minimum\"/></li> <li><see cref=\"F:SharpDX.DXGI.ResourcePriority.Low\"/></li> <li><see cref=\"F:SharpDX.DXGI.ResourcePriority.Normal\"/></li> <li><see cref=\"F:SharpDX.DXGI.ResourcePriority.High\"/></li> <li><see cref=\"F:SharpDX.DXGI.ResourcePriority.Maximum\"/></li> </ul> </dd></param>\t\n            <remarks>\t\n            <p>Resource priorities determine which resource to evict from video memory when the system has run out of video memory. The resource will not be lost; it will be removed from video memory and placed into system memory, or possibly placed onto the hard drive. The resource will be loaded back into video memory when it is required.</p><p>A resource that is set to the maximum priority, <see cref=\"F:SharpDX.DXGI.ResourcePriority.Maximum\"/>, is only evicted if there is no other way of resolving the incoming memory request. The Windows Display Driver Model (WDDM) tries to split an incoming memory request to its minimum size and evict lower-priority resources before evicting a resource with maximum priority.</p><p>Changing the priorities of resources should be done carefully. The wrong eviction priorities could be a detriment to performance rather than an improvement. See <strong>QueryResourceResidency</strong> for additional information.</p><p>This method is a wrapper for <strong>SetEvictionPriority</strong> and is provided in the <strong><see cref=\"T:SharpDX.Direct3D10.Resource\"/> Interface</strong> interface for convenience.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Resource::SetEvictionPriority']/*\"/>\t\n            <msdn-id>bb173832</msdn-id>\t\n            <unmanaged>void ID3D10Resource::SetEvictionPriority([In] unsigned int EvictionPriority)</unmanaged>\t\n            <unmanaged-short>ID3D10Resource::SetEvictionPriority</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Resource.GetEvictionPriority\">\n            <summary>\t\n            <p>Get the eviction priority of a resource.</p>\t\n            </summary>\t\n            <returns><p>One of the following values, which specifies the eviction priority for the resource:</p><ul> <li><see cref=\"F:SharpDX.DXGI.ResourcePriority.Minimum\"/></li> <li><see cref=\"F:SharpDX.DXGI.ResourcePriority.Low\"/></li> <li><see cref=\"F:SharpDX.DXGI.ResourcePriority.Normal\"/></li> <li><see cref=\"F:SharpDX.DXGI.ResourcePriority.High\"/></li> <li><see cref=\"F:SharpDX.DXGI.ResourcePriority.Maximum\"/></li> </ul></returns>\t\n            <remarks>\t\n            <p>This method is a wrapper for <strong>GetEvictionPriority</strong> and is provided in the <strong><see cref=\"T:SharpDX.Direct3D10.Resource\"/> Interface</strong> interface for convenience.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Resource::GetEvictionPriority']/*\"/>\t\n            <msdn-id>bb173830</msdn-id>\t\n            <unmanaged>unsigned int ID3D10Resource::GetEvictionPriority()</unmanaged>\t\n            <unmanaged-short>ID3D10Resource::GetEvictionPriority</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Resource.FromSwapChain``1(SharpDX.DXGI.SwapChain,System.Int32)\">\n            <summary>\n              Gets a swap chain back buffer.\n            </summary>\n            <typeparam name = \"T\">The type of the buffer.</typeparam>\n            <param name = \"swapChain\">The swap chain to get the buffer from.</param>\n            <param name = \"index\">The index of the desired buffer.</param>\n            <returns>The buffer interface, or <c>null</c> on failure.</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Resource.FromFile``1(SharpDX.Direct3D10.Device,System.String)\">\n            <summary>\n              Loads a texture from an image file.\n            </summary>\n            <param name = \"device\">The device used to load the texture.</param>\n            <param name = \"fileName\">Path to the file on disk.</param>\n            <returns>The loaded texture object.</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Resource.FromFile``1(SharpDX.Direct3D10.Device,System.String,SharpDX.Direct3D10.ImageLoadInformation)\">\n            <summary>\n              Loads a texture from an image file.\n            </summary>\n            <param name = \"device\">The device used to load the texture.</param>\n            <param name = \"fileName\">Path to the file on disk.</param>\n            <param name = \"loadInfo\">Specifies information used to load the texture.</param>\n            <returns>The loaded texture object.</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Resource.FromMemory``1(SharpDX.Direct3D10.Device,System.Byte[])\">\n            <summary>\n              Loads a texture from an image in memory.\n            </summary>\n            <param name = \"device\">The device used to load the texture.</param>\n            <param name = \"memory\">Array of memory containing the image data to load.</param>\n            <returns>The loaded texture object.</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Resource.FromMemory``1(SharpDX.Direct3D10.Device,System.Byte[],SharpDX.Direct3D10.ImageLoadInformation)\">\n            <summary>\n              Loads a texture from an image in memory.\n            </summary>\n            <param name = \"device\">The device used to load the texture.</param>\n            <param name = \"memory\">Array of memory containing the image data to load.</param>\n            <param name = \"loadInfo\">Specifies information used to load the texture.</param>\n            <returns>The loaded texture object.</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Resource.FromStream``1(SharpDX.Direct3D10.Device,System.IO.Stream,System.Int32)\">\n            <summary>\n              Loads a texture from a stream of data.\n            </summary>\n            <param name = \"device\">The device used to load the texture.</param>\n            <param name = \"stream\">A stream containing the image data to load.</param>\n            <param name = \"sizeInBytes\">Size of the image to load.</param>\n            <returns>The loaded texture object.</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Resource.FromStream``1(SharpDX.Direct3D10.Device,System.IO.Stream,System.Int32,SharpDX.Direct3D10.ImageLoadInformation)\">\n            <summary>\n              Loads a texture from a stream of data.\n            </summary>\n            <param name = \"device\">The device used to load the texture.</param>\n            <param name = \"stream\">A stream containing the image data to load.</param>\n            <param name = \"sizeInBytes\">Size of the image to load.</param>\n            <param name = \"loadInfo\">Specifies information used to load the texture.</param>\n            <returns>The loaded texture object.</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Resource.ToFile``1(``0,SharpDX.Direct3D10.ImageFileFormat,System.String)\">\n            <summary>\n              Saves a texture to file.\n            </summary>\n            <param name = \"texture\">The texture to save.</param>\n            <param name = \"format\">The format the texture will be saved as.</param>\n            <param name = \"fileName\">Name of the destination output file where the texture will be saved.</param>\n            <returns>A <see cref = \"T:SharpDX.Result\" /> object describing the result of the operation.</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Resource.ToStream``1(``0,SharpDX.Direct3D10.ImageFileFormat,System.IO.Stream)\">\n            <summary>\n              Saves a texture to a stream.\n            </summary>\n            <param name = \"texture\">The texture to save.</param>\n            <param name = \"format\">The format the texture will be saved as.</param>\n            <param name = \"stream\">Destination memory stream where the image will be saved.</param>\n            <returns>A <see cref = \"T:SharpDX.Result\" /> object describing the result of the operation.</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Resource.LoadTextureFromTexture(SharpDX.Direct3D10.Resource,SharpDX.Direct3D10.Resource,SharpDX.Direct3D10.TextureLoadInformation)\">\n            <summary>\t\n            Load a texture from a texture.\t\n            </summary>\t\n            <param name=\"source\">Pointer to the source texture. See <see cref=\"T:SharpDX.Direct3D10.Resource\"/>. </param>\n            <param name=\"destination\">Pointer to the destination texture. See <see cref=\"T:SharpDX.Direct3D10.Resource\"/>. </param>\n            <param name=\"loadInformation\">Pointer to texture loading parameters. See <see cref=\"T:SharpDX.Direct3D10.TextureLoadInformation\"/>. </param>\n            <returns>The return value is one of the values listed in {{Direct3D 10 Return Codes}}. </returns>\n            <unmanaged>HRESULT D3DX10LoadTextureFromTexture([None] ID3D10Resource* pSrcTexture,[None] D3DX10_TEXTURE_LOAD_INFO* pLoadInfo,[None] ID3D10Resource* pDstTexture)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Resource.FilterTexture(System.Int32,SharpDX.Direct3D10.FilterFlags)\">\n            <summary>\t\n            Generates mipmap chain using a particular texture filter.\t\n            </summary>\t\n            <param name=\"sourceLevel\">The mipmap level whose data is used to generate the rest of the mipmap chain. </param>\n            <param name=\"mipFilter\">Flags controlling how each miplevel is filtered (or D3DX10_DEFAULT for D3DX10_FILTER_BOX). See <see cref=\"T:SharpDX.Direct3D10.FilterFlags\"/>. </param>\n            <returns>The return value is one of the values listed in {{Direct3D 10 Return Codes}}. </returns>\n            <unmanaged>HRESULT D3DX10FilterTexture([None] ID3D10Resource* pTexture,[None] int SrcLevel,[None] int MipFilter)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Resource.AsSurface\">\n            <summary>\n            Returns a DXGI Surface for this resource.\n            </summary>\n            <returns>The buffer interface, or <c>null</c> on failure.</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Resource.CalculateSubResourceIndex(System.Int32,System.Int32,System.Int32)\">\n            <summary>\n            Calculates a subresource index.\n            </summary>\n            <param name=\"mipSlice\">The index of the desired mip slice.</param>\n            <param name=\"arraySlice\">The index of the desired array slice.</param>\n            <param name=\"mipLevels\">The total number of mip levels.</param>\n            <returns>The subresource index (equivalent to mipSlice + (arraySlice * mipLevels)).</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Resource.GetMipSize(System.Int32,System.Int32)\">\n            <summary>\n            Calculate the MipSize\n            </summary>\n            <param name=\"mipSlice\"></param>\n            <param name=\"baseSliceSize\"></param>\n            <returns></returns>\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.Resource.TypeInfo\">\n            <summary>\t\n            <p>Get the type of the resource.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Resource::GetType']/*\"/>\t\n            <msdn-id>bb173831</msdn-id>\t\n            <unmanaged>GetType</unmanaged>\t\n            <unmanaged-short>GetType</unmanaged-short>\t\n            <unmanaged>void ID3D10Resource::GetType([Out] D3D10_RESOURCE_DIMENSION* rType)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.Resource.EvictionPriority\">\n            <summary>\t\n            <p>Get or sets the eviction priority of a resource.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This method is a wrapper for <strong>GetEvictionPriority</strong> and is provided in the <strong><see cref=\"T:SharpDX.Direct3D10.Resource\"/> Interface</strong> interface for convenience.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Resource::GetEvictionPriority']/*\"/>\t\n            <msdn-id>bb173830</msdn-id>\t\n            <unmanaged>GetEvictionPriority / SetEvictionPriority</unmanaged>\t\n            <unmanaged-short>GetEvictionPriority</unmanaged-short>\t\n            <unmanaged>unsigned int ID3D10Resource::GetEvictionPriority()</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Buffer.#ctor(SharpDX.Direct3D10.Device,SharpDX.Direct3D10.BufferDescription)\">\n            <summary>\n              Initializes a new instance of the <see cref = \"T:SharpDX.Direct3D10.Buffer\" /> class.\n            </summary>\n            <param name = \"device\">The device with which to associate the buffer.</param>\n            <param name = \"description\">The description of the buffer.</param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Buffer.#ctor(SharpDX.Direct3D10.Device,SharpDX.DataStream,SharpDX.Direct3D10.BufferDescription)\">\n            <summary>\n              Initializes a new instance of the <see cref = \"T:SharpDX.Direct3D10.Buffer\" /> class.\n            </summary>\n            <param name = \"device\">The device with which to associate the buffer.</param>\n            <param name = \"data\">Initial data used to initialize the buffer.</param>\n            <param name = \"description\">The description of the buffer.</param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Buffer.#ctor(SharpDX.Direct3D10.Device,System.Int32,SharpDX.Direct3D10.ResourceUsage,SharpDX.Direct3D10.BindFlags,SharpDX.Direct3D10.CpuAccessFlags,SharpDX.Direct3D10.ResourceOptionFlags)\">\n            <summary>\n              Initializes a new instance of the <see cref = \"T:SharpDX.Direct3D10.Buffer\" /> class.\n            </summary>\n            <param name = \"device\">The device with which to associate the buffer.</param>\n            <param name = \"sizeInBytes\">The size, in bytes, of the buffer.</param>\n            <param name = \"usage\">The usage pattern for the buffer.</param>\n            <param name = \"bindFlags\">Flags specifying how the buffer will be bound to the pipeline.</param>\n            <param name = \"accessFlags\">Flags specifying how the buffer will be accessible from the CPU.</param>\n            <param name = \"optionFlags\">Miscellaneous resource options.</param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Buffer.#ctor(SharpDX.Direct3D10.Device,SharpDX.DataStream,System.Int32,SharpDX.Direct3D10.ResourceUsage,SharpDX.Direct3D10.BindFlags,SharpDX.Direct3D10.CpuAccessFlags,SharpDX.Direct3D10.ResourceOptionFlags)\">\n            <summary>\n              Initializes a new instance of the <see cref = \"T:SharpDX.Direct3D10.Buffer\" /> class.\n            </summary>\n            <param name = \"device\">The device with which to associate the buffer.</param>\n            <param name = \"data\">Initial data used to initialize the buffer.</param>\n            <param name = \"sizeInBytes\">The size, in bytes, of the buffer.</param>\n            <param name = \"usage\">The usage pattern for the buffer.</param>\n            <param name = \"bindFlags\">Flags specifying how the buffer will be bound to the pipeline.</param>\n            <param name = \"accessFlags\">Flags specifying how the buffer will be accessible from the CPU.</param>\n            <param name = \"optionFlags\">Miscellaneous resource options.</param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Buffer.Map(SharpDX.Direct3D10.MapMode)\">\n            <summary>\t\n            Get a reference to the data contained in the resource and deny GPU access to the resource.\t\n            </summary>\t\n            <remarks>\t\n            For the CPU to write the contents of a resource, the resource must be created with the dynamic usage flag, D3D10_USAGE_DYNAMIC.  To both read and write those contents, the resource must be created with the staging usage flag, D3D10_USAGE_STAGING. (For more information about  these flags, see <see cref=\"T:SharpDX.Direct3D10.ResourceUsage\"/>.) ID3D10Buffer::Map will retrieve a reference to the resource data.  For a discussion on how to access resources efficiently, see {{Copying and Accessing Resource Data (Direct3D 10)}}. Call <see cref=\"M:SharpDX.Direct3D10.Buffer.Unmap\"/> to signify that the application has finished accessing the resource. ID3D10Buffer::Map has a few other restrictions. For example:  The same buffer cannot be mapped multiple times; in other words, do not call ID3D10Buffer::Map on a buffer that is already mapped. Any buffer that is bound to the pipeline must be unmapped before any rendering operation (that is, <see cref=\"M:SharpDX.Direct3D10.Device.Draw(System.Int32,System.Int32)\"/>)  can be executed.    Differences between Direct3D 9 and Direct3D 10: ID3D10Buffer::Map in Direct3D 10 is analogous to resource {{Lock}} in Direct3D 9.   ? \t\n            </remarks>\t\n            <param name=\"mapType\">Flag that specifies the CPU's permissions for the reading and writing of a resource. For possible values, see <see cref=\"T:SharpDX.Direct3D10.MapMode\"/>. </param>\n            <returns>If this function succeeds returns a <see cref=\"T:SharpDX.DataStream\"/> with the size this buffer.</returns>\n            <unmanaged>HRESULT ID3D10Buffer::Map([In] D3D10_MAP MapType,[In] int MapFlags,[Out] void** ppData)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Buffer.Map(SharpDX.Direct3D10.MapMode,SharpDX.Direct3D10.MapFlags)\">\n            <summary>\t\n            Get a reference to the data contained in the resource and deny GPU access to the resource.\t\n            </summary>\t\n            <remarks>\t\n            For the CPU to write the contents of a resource, the resource must be created with the dynamic usage flag, D3D10_USAGE_DYNAMIC.  To both read and write those contents, the resource must be created with the staging usage flag, D3D10_USAGE_STAGING. (For more information about  these flags, see <see cref=\"T:SharpDX.Direct3D10.ResourceUsage\"/>.) ID3D10Buffer::Map will retrieve a reference to the resource data.  For a discussion on how to access resources efficiently, see {{Copying and Accessing Resource Data (Direct3D 10)}}. Call <see cref=\"M:SharpDX.Direct3D10.Buffer.Unmap\"/> to signify that the application has finished accessing the resource. ID3D10Buffer::Map has a few other restrictions. For example:  The same buffer cannot be mapped multiple times; in other words, do not call ID3D10Buffer::Map on a buffer that is already mapped. Any buffer that is bound to the pipeline must be unmapped before any rendering operation (that is, <see cref=\"M:SharpDX.Direct3D10.Device.Draw(System.Int32,System.Int32)\"/>)  can be executed.    Differences between Direct3D 9 and Direct3D 10: ID3D10Buffer::Map in Direct3D 10 is analogous to resource {{Lock}} in Direct3D 9.   ? \t\n            </remarks>\t\n            <param name=\"mode\">Flag that specifies the CPU's permissions for the reading and writing of a resource. For possible values, see <see cref=\"T:SharpDX.Direct3D10.MapMode\"/>. </param>\n            <param name=\"mapFlags\">Flag that specifies what the CPU should do when the GPU is busy (see <see cref=\"T:SharpDX.Direct3D10.MapFlags\"/>). This flag is optional. </param>\n            <returns>If this function succeeds returns a <see cref=\"T:SharpDX.DataStream\"/> with the size this buffer.</returns>\n            <unmanaged>HRESULT ID3D10Buffer::Map([In] D3D10_MAP MapType,[In] int MapFlags,[Out] void** ppData)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Buffer.Create``1(SharpDX.Direct3D10.Device,SharpDX.Direct3D10.BindFlags,``0@,System.Int32,SharpDX.Direct3D10.ResourceUsage,SharpDX.Direct3D10.CpuAccessFlags,SharpDX.Direct3D10.ResourceOptionFlags,System.Int32)\">\n            <summary>\n            Creates a new instance of the <see cref=\"T:SharpDX.Direct3D10.Buffer\"/> class.\n            </summary>\n            <typeparam name=\"T\">Type of the data to upload</typeparam>\n            <param name=\"device\">The device with which to associate the buffer.</param>\n            <param name=\"bindFlags\">Flags specifying how the buffer will be bound to the pipeline.</param>\n            <param name=\"data\">Initial data used to initialize the buffer.</param>\n            <param name=\"sizeInBytes\">The size, in bytes, of the buffer. If 0 is specified, sizeof(T) is used. </param>\n            <param name=\"usage\">The usage pattern for the buffer.</param>\n            <param name=\"accessFlags\">Flags specifying how the buffer will be accessible from the CPU.</param>\n            <param name=\"optionFlags\">Miscellaneous resource options.</param>\n            <param name=\"structureByteStride\">The size (in bytes) of the structure element for structured buffers.</param>\n            <returns>An initialized buffer</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Buffer.Create``1(SharpDX.Direct3D10.Device,SharpDX.Direct3D10.BindFlags,``0[],System.Int32,SharpDX.Direct3D10.ResourceUsage,SharpDX.Direct3D10.CpuAccessFlags,SharpDX.Direct3D10.ResourceOptionFlags,System.Int32)\">\n            <summary>\n            Creates a new instance of the <see cref=\"T:SharpDX.Direct3D10.Buffer\"/> class.\n            </summary>\n            <typeparam name=\"T\">Type of the data to upload</typeparam>\n            <param name=\"device\">The device with which to associate the buffer.</param>\n            <param name=\"bindFlags\">Flags specifying how the buffer will be bound to the pipeline.</param>\n            <param name=\"data\">Initial data used to initialize the buffer.</param>\n            <param name=\"sizeInBytes\">The size, in bytes, of the buffer. If 0 is specified, sizeof(T) is used.</param>\n            <param name=\"usage\">The usage pattern for the buffer.</param>\n            <param name=\"accessFlags\">Flags specifying how the buffer will be accessible from the CPU.</param>\n            <param name=\"optionFlags\">Miscellaneous resource options.</param>\n            <param name=\"structureByteStride\">The size (in bytes) of the structure element for structured buffers.</param>\n            <returns>An initialized buffer</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Buffer.Create``1(SharpDX.Direct3D10.Device,``0@,SharpDX.Direct3D10.BufferDescription)\">\n            <summary>\n            Creates a new instance of the <see cref=\"T:SharpDX.Direct3D10.Buffer\"/> class.\n            </summary>\n            <typeparam name=\"T\">Type of the data to upload</typeparam>\n            <param name=\"device\">The device with which to associate the buffer.</param>\n            <param name=\"data\">Initial data used to initialize the buffer.</param>\n            <param name=\"description\">The description.</param>\n            <returns>\n            An initialized buffer\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Buffer.Create``1(SharpDX.Direct3D10.Device,``0[],SharpDX.Direct3D10.BufferDescription)\">\n            <summary>\n            Creates a new instance of the <see cref=\"T:SharpDX.Direct3D10.Buffer\"/> class.\n            </summary>\n            <typeparam name=\"T\">Type of the data to upload</typeparam>\n            <param name=\"device\">The device with which to associate the buffer.</param>\n            <param name=\"data\">Initial data used to initialize the buffer.</param>\n            <param name=\"description\">The description.</param>\n            <returns>\n            An initialized buffer\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Buffer.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D10.Buffer\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Buffer.op_Explicit(System.IntPtr)~SharpDX.Direct3D10.Buffer\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D10.Buffer\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Buffer.Map(SharpDX.Direct3D10.MapMode,SharpDX.Direct3D10.MapFlags,System.IntPtr@)\">\n            <summary>\t\n            <p>Get a reference to the data contained in the resource and deny GPU access to the resource.</p>\t\n            </summary>\t\n            <param name=\"mapType\"><dd>  <p>Flag that specifies the CPU's permissions for the reading and writing of a resource. For possible values, see <strong><see cref=\"T:SharpDX.Direct3D10.MapMode\"/></strong>.</p> </dd></param>\t\n            <param name=\"mapFlags\"><dd>  <p>Flag that specifies what the CPU should do when the GPU is busy (see <strong><see cref=\"T:SharpDX.Direct3D10.MapFlags\"/></strong>). This flag is optional.</p> </dd></param>\t\n            <param name=\"dataOut\"><dd>  <p>Pointer to the buffer resource data.</p> </dd></param>\t\n            <returns><p>If this function succeeds, it returns <see cref=\"F:SharpDX.Result.Ok\"/>. The following list contains some of the reasons that <strong>Map</strong> can fail: </p><ul> <li>If <em>MapFlags</em> specifies <see cref=\"F:SharpDX.Direct3D10.MapFlags.DoNotWait\"/> and the GPU is not yet finished with the resource, <strong><see cref=\"M:SharpDX.Direct3D10.Buffer.Map(SharpDX.Direct3D10.MapMode)\"/></strong> returns <see cref=\"F:SharpDX.DXGI.ResultCode.WasStillDrawing\"/>.</li> <li><strong><see cref=\"M:SharpDX.Direct3D10.Buffer.Map(SharpDX.Direct3D10.MapMode)\"/></strong> returns <see cref=\"F:SharpDX.DXGI.ResultCode.DeviceRemoved\"/> if <em>MapType</em> includes any flags that permit reading and the hardware  device (that is, the video card) has been removed.</li> </ul><p>For more information about the preceding return values, see DXGI_ERROR.</p></returns>\t\n            <remarks>\t\n            <p>For the CPU to write the contents of a resource, the resource must be created with the dynamic usage flag, <see cref=\"F:SharpDX.Direct3D10.ResourceUsage.Dynamic\"/>.  To both read and write those contents, the resource must be created with the staging usage flag, <see cref=\"F:SharpDX.Direct3D10.ResourceUsage.Staging\"/>. (For more information about  these flags, see <strong><see cref=\"T:SharpDX.Direct3D10.ResourceUsage\"/></strong>.) <strong><see cref=\"M:SharpDX.Direct3D10.Buffer.Map(SharpDX.Direct3D10.MapMode)\"/></strong> will retrieve a reference to the resource data.  For a discussion on how to access resources efficiently, see Copying and Accessing Resource Data (Direct3D 10).</p><p>Call <strong><see cref=\"M:SharpDX.Direct3D10.Buffer.Unmap\"/></strong> to signify that the application has finished accessing the resource.</p><p><strong><see cref=\"M:SharpDX.Direct3D10.Buffer.Map(SharpDX.Direct3D10.MapMode)\"/></strong> has a few other restrictions. For example:</p><ul> <li>The same buffer cannot be mapped multiple times; in other words, do not call <strong><see cref=\"M:SharpDX.Direct3D10.Buffer.Map(SharpDX.Direct3D10.MapMode)\"/></strong> on a buffer that is already mapped.</li> <li>Any buffer that is bound to the pipeline must be unmapped before any rendering operation (that is, <strong><see cref=\"M:SharpDX.Direct3D10.Device.Draw(System.Int32,System.Int32)\"/></strong>)  can be executed.</li> </ul><table> <tr><td> <p>Differences between Direct3D 9 and Direct3D 10:</p> <p><strong><see cref=\"M:SharpDX.Direct3D10.Buffer.Map(SharpDX.Direct3D10.MapMode)\"/></strong> in Direct3D 10 is analogous to resource Lock in Direct3D 9.</p> </td></tr> </table><p>?</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Buffer::Map']/*\"/>\t\n            <msdn-id>bb173512</msdn-id>\t\n            <unmanaged>HRESULT ID3D10Buffer::Map([In] D3D10_MAP MapType,[In] D3D10_MAP_FLAG MapFlags,[Out] void** ppData)</unmanaged>\t\n            <unmanaged-short>ID3D10Buffer::Map</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Buffer.Unmap\">\n            <summary>\t\n            <p>Invalidate the reference to the resource retrieved by <strong><see cref=\"M:SharpDX.Direct3D10.Buffer.Map(SharpDX.Direct3D10.MapMode)\"/></strong> and reenable GPU access to the resource.</p>\t\n            </summary>\t\n            <remarks>\t\n            <table> <tr><td> <p>Differences between Direct3D 9 and Direct3D 10:</p> <p>Unmap() in Direct3D 10 is analogous to resource Unlock() in Direct3D 9.</p> </td></tr> </table><p>?</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Buffer::Unmap']/*\"/>\t\n            <msdn-id>bb173513</msdn-id>\t\n            <unmanaged>void ID3D10Buffer::Unmap()</unmanaged>\t\n            <unmanaged-short>ID3D10Buffer::Unmap</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Buffer.GetDescription(SharpDX.Direct3D10.BufferDescription@)\">\n            <summary>\t\n            <p>Get the properties of a buffer resource.</p>\t\n            </summary>\t\n            <param name=\"descRef\"><dd>  <p>Pointer to a resource description (see <strong><see cref=\"T:SharpDX.Direct3D10.BufferDescription\"/></strong>) filled in by the method. This reference cannot be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Buffer::GetDesc']/*\"/>\t\n            <msdn-id>bb173511</msdn-id>\t\n            <unmanaged>void ID3D10Buffer::GetDesc([Out] D3D10_BUFFER_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>ID3D10Buffer::GetDesc</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.Buffer.Description\">\n            <summary>\t\n            <p>Get the properties of a buffer resource.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Buffer::GetDesc']/*\"/>\t\n            <msdn-id>bb173511</msdn-id>\t\n            <unmanaged>GetDesc</unmanaged>\t\n            <unmanaged-short>GetDesc</unmanaged-short>\t\n            <unmanaged>void ID3D10Buffer::GetDesc([Out] D3D10_BUFFER_DESC* pDesc)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.BufferDescription\">\n            <summary>\t\n            <p>Describes a buffer resource.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure is used by <strong><see cref=\"M:SharpDX.Direct3D10.Device.CreateBuffer(SharpDX.Direct3D10.BufferDescription@,System.Nullable{SharpDX.DataBox},SharpDX.Direct3D10.Buffer)\"/></strong> to create buffer resources.</p><p>In addition to this structure, there is also a derived structure in D3D10.h (CD3D10_BUFFER_DESC) which behaves like an inherited class to help create a buffer description.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_BUFFER_DESC']/*\"/>\t\n            <msdn-id>bb204896</msdn-id>\t\n            <unmanaged>D3D10_BUFFER_DESC</unmanaged>\t\n            <unmanaged-short>D3D10_BUFFER_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.BufferDescription.#ctor(System.Int32,SharpDX.Direct3D10.ResourceUsage,SharpDX.Direct3D10.BindFlags,SharpDX.Direct3D10.CpuAccessFlags,SharpDX.Direct3D10.ResourceOptionFlags)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D10.BufferDescription\"/> struct.\n            </summary>\n            <param name=\"sizeInBytes\">The size in bytes.</param>\n            <param name=\"usage\">The usage.</param>\n            <param name=\"bindFlags\">The bind flags.</param>\n            <param name=\"cpuAccessFlags\">The cpu access flags.</param>\n            <param name=\"optionFlags\">The option flags.</param>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.BufferDescription.SizeInBytes\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_BUFFER_DESC::ByteWidth']/*\"/>\t\n            <unmanaged>unsigned int ByteWidth</unmanaged>\t\n            <unmanaged-short>unsigned int ByteWidth</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.BufferDescription.Usage\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_BUFFER_DESC::Usage']/*\"/>\t\n            <unmanaged>D3D10_USAGE Usage</unmanaged>\t\n            <unmanaged-short>D3D10_USAGE Usage</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.BufferDescription.BindFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_BUFFER_DESC::BindFlags']/*\"/>\t\n            <unmanaged>D3D10_BIND_FLAG BindFlags</unmanaged>\t\n            <unmanaged-short>D3D10_BIND_FLAG BindFlags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.BufferDescription.CpuAccessFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_BUFFER_DESC::CPUAccessFlags']/*\"/>\t\n            <unmanaged>D3D10_CPU_ACCESS_FLAG CPUAccessFlags</unmanaged>\t\n            <unmanaged-short>D3D10_CPU_ACCESS_FLAG CPUAccessFlags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.BufferDescription.OptionFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_BUFFER_DESC::MiscFlags']/*\"/>\t\n            <unmanaged>D3D10_RESOURCE_MISC_FLAG MiscFlags</unmanaged>\t\n            <unmanaged-short>D3D10_RESOURCE_MISC_FLAG MiscFlags</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.InputAssemblerStage\">\n            <summary>\t\n            <p>The device interface represents a virtual adapter for Direct3D 10.0; it is used to perform rendering and create Direct3D resources.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>A device is created using <strong><see cref=\"M:SharpDX.Direct3D10.D3D10.CreateDevice(SharpDX.DXGI.Adapter,SharpDX.Direct3D10.DriverType,System.IntPtr,SharpDX.Direct3D10.DeviceCreationFlags,System.Int32,SharpDX.Direct3D10.Device)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device']/*\"/>\t\n            <msdn-id>bb173528</msdn-id>\t\n            <unmanaged>ID3D10Device</unmanaged>\t\n            <unmanaged-short>ID3D10Device</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.InputAssemblerStage.SetVertexBuffers(System.Int32,SharpDX.Direct3D10.VertexBufferBinding)\">\n            <summary>\n              Binds a single vertex buffer to the input assembler.\n            </summary>\n            <param name = \"slot\">Index of the slot to which to bind the vertex buffer.</param>\n            <param name = \"vertexBufferBinding\">A binding for the input vertex buffer.</param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.InputAssemblerStage.SetVertexBuffers(System.Int32,SharpDX.Direct3D10.VertexBufferBinding[])\">\n            <summary>\n              Binds an array of vertex buffers to the input assembler.\n            </summary>\n            <param name = \"firstSlot\">Index of the first input slot to use for binding. The first vertex buffer is explicitly bound to the start slot; this causes each additional vertex buffer in the array to be implicitly bound to each subsequent input slot. There are 16 input slots.</param>\n            <param name = \"vertexBufferBindings\">An array of bindings for input vertex buffers.</param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.InputAssemblerStage.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D10.InputAssemblerStage\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.InputAssemblerStage.op_Explicit(System.IntPtr)~SharpDX.Direct3D10.InputAssemblerStage\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D10.InputAssemblerStage\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.InputAssemblerStage.SetInputLayout(SharpDX.Direct3D10.InputLayout)\">\n            <summary>\t\n            <p>Bind an input-layout object to the input-assembler stage.</p>\t\n            </summary>\t\n            <param name=\"inputLayoutRef\">No documentation.</param>\t\n            <remarks>\t\n            <p>Input-layout objects describe how vertex buffer data is streamed into the IA pipeline stage. To create an input-layout object, call <strong><see cref=\"M:SharpDX.Direct3D10.Device.CreateInputLayout(SharpDX.Direct3D10.InputElement[],System.Int32,System.IntPtr,SharpDX.PointerSize,SharpDX.Direct3D10.InputLayout)\"/></strong>.</p><p>The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::IASetInputLayout']/*\"/>\t\n            <msdn-id>bb173589</msdn-id>\t\n            <unmanaged>void ID3D10Device::IASetInputLayout([In, Optional] ID3D10InputLayout* pInputLayout)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::IASetInputLayout</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.InputAssemblerStage.SetVertexBuffers(System.Int32,System.Int32,SharpDX.Direct3D10.Buffer[],System.Int32[],System.Int32[])\">\n            <summary>\t\n            <p>Bind an array of vertex buffers to the input-assembler stage.</p>\t\n            </summary>\t\n            <param name=\"startSlot\">No documentation.</param>\t\n            <param name=\"numBuffers\">No documentation.</param>\t\n            <param name=\"vertexBuffersOut\">No documentation.</param>\t\n            <param name=\"stridesRef\">No documentation.</param>\t\n            <param name=\"offsetsRef\">No documentation.</param>\t\n            <remarks>\t\n            <p>For information about creating vertex buffers, see Create a Vertex Buffer.</p><p>Calling this method using a buffer that is currently bound for writing (i.e. bound to the stream output pipeline stage) will effectively bind <strong><c>null</c></strong> instead because a buffer cannot be bound as both an input and an output at the same time.</p><p>The Debug Layer will generate a warning whenever a resource is prevented from being bound simultaneously as an input and an output, but this will not prevent invalid data from being used by the runtime.</p><p>The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::IASetVertexBuffers']/*\"/>\t\n            <msdn-id>bb173591</msdn-id>\t\n            <unmanaged>void ID3D10Device::IASetVertexBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[In, Buffer] const ID3D10Buffer** ppVertexBuffers,[In, Buffer] const unsigned int* pStrides,[In, Buffer] const unsigned int* pOffsets)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::IASetVertexBuffers</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.InputAssemblerStage.SetVertexBuffers(System.Int32,System.Int32,SharpDX.ComArray{SharpDX.Direct3D10.Buffer},System.Int32[],System.Int32[])\">\n            <summary>\t\n            <p>Bind an array of vertex buffers to the input-assembler stage.</p>\t\n            </summary>\t\n            <param name=\"startSlot\">No documentation.</param>\t\n            <param name=\"numBuffers\">No documentation.</param>\t\n            <param name=\"vertexBuffersOut\">No documentation.</param>\t\n            <param name=\"stridesRef\">No documentation.</param>\t\n            <param name=\"offsetsRef\">No documentation.</param>\t\n            <remarks>\t\n            <p>For information about creating vertex buffers, see Create a Vertex Buffer.</p><p>Calling this method using a buffer that is currently bound for writing (i.e. bound to the stream output pipeline stage) will effectively bind <strong><c>null</c></strong> instead because a buffer cannot be bound as both an input and an output at the same time.</p><p>The Debug Layer will generate a warning whenever a resource is prevented from being bound simultaneously as an input and an output, but this will not prevent invalid data from being used by the runtime.</p><p>The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::IASetVertexBuffers']/*\"/>\t\n            <msdn-id>bb173591</msdn-id>\t\n            <unmanaged>void ID3D10Device::IASetVertexBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[In, Buffer] const ID3D10Buffer** ppVertexBuffers,[In, Buffer] const unsigned int* pStrides,[In, Buffer] const unsigned int* pOffsets)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::IASetVertexBuffers</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.InputAssemblerStage.SetIndexBuffer(SharpDX.Direct3D10.Buffer,SharpDX.DXGI.Format,System.Int32)\">\n            <summary>\t\n            <p>Bind an index buffer to the input-assembler stage.</p>\t\n            </summary>\t\n            <param name=\"indexBufferRef\">No documentation.</param>\t\n            <param name=\"format\">No documentation.</param>\t\n            <param name=\"offset\">No documentation.</param>\t\n            <remarks>\t\n            <p>For information about creating index buffers, see Create an Index Buffer.</p><p>Calling this method using a buffer that is currently bound for writing (i.e. bound to the stream output pipeline stage) will effectively bind <strong><c>null</c></strong> instead because a buffer cannot be bound as both an input and an output at the same time.</p><p>The Debug Layer will generate a warning whenever a resource is prevented from being bound simultaneously as an input and an output, but this will not prevent invalid data from being used by the runtime.</p><p>The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::IASetIndexBuffer']/*\"/>\t\n            <msdn-id>bb173588</msdn-id>\t\n            <unmanaged>void ID3D10Device::IASetIndexBuffer([In, Optional] ID3D10Buffer* pIndexBuffer,[In] DXGI_FORMAT Format,[In] unsigned int Offset)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::IASetIndexBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.InputAssemblerStage.SetPrimitiveTopology(SharpDX.Direct3D.PrimitiveTopology)\">\n            <summary>\t\n            <p>Bind information about the primitive type, and data order that describes input data for the input assembler stage.</p>\t\n            </summary>\t\n            <param name=\"topology\">No documentation.</param>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::IASetPrimitiveTopology']/*\"/>\t\n            <msdn-id>Bb173590</msdn-id>\t\n            <unmanaged>void ID3D10Device::IASetPrimitiveTopology([In] D3D_PRIMITIVE_TOPOLOGY Topology)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::IASetPrimitiveTopology</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.InputAssemblerStage.GetInputLayout(SharpDX.Direct3D10.InputLayout@)\">\n            <summary>\t\n            <p>Get a reference to the input-layout object that is bound to the input-assembler stage.</p>\t\n            </summary>\t\n            <param name=\"inputLayoutOut\">No documentation.</param>\t\n            <remarks>\t\n            <p>For information about creating an input-layout object, see Creating the Input-Layout Object.</p><p>Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::IAGetInputLayout']/*\"/>\t\n            <msdn-id>bb173585</msdn-id>\t\n            <unmanaged>void ID3D10Device::IAGetInputLayout([Out] ID3D10InputLayout** ppInputLayout)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::IAGetInputLayout</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.InputAssemblerStage.GetVertexBuffers(System.Int32,System.Int32,SharpDX.Direct3D10.Buffer[],System.Int32[],System.Int32[])\">\n            <summary>\t\n            <p>Get the vertex buffers bound to the input-assembler stage.</p>\t\n            </summary>\t\n            <param name=\"startSlot\">No documentation.</param>\t\n            <param name=\"numBuffers\">No documentation.</param>\t\n            <param name=\"vertexBuffersOut\">No documentation.</param>\t\n            <param name=\"stridesRef\">No documentation.</param>\t\n            <param name=\"offsetsRef\">No documentation.</param>\t\n            <remarks>\t\n            <p>Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::IAGetVertexBuffers']/*\"/>\t\n            <msdn-id>bb173587</msdn-id>\t\n            <unmanaged>void ID3D10Device::IAGetVertexBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[Out, Buffer, Optional] ID3D10Buffer** ppVertexBuffers,[Out, Buffer, Optional] unsigned int* pStrides,[Out, Buffer, Optional] unsigned int* pOffsets)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::IAGetVertexBuffers</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.InputAssemblerStage.GetIndexBuffer(SharpDX.Direct3D10.Buffer@,SharpDX.DXGI.Format@,System.Int32@)\">\n            <summary>\t\n            <p>Get a reference to the index buffer that is bound to the input-assembler stage.</p>\t\n            </summary>\t\n            <param name=\"indexBufferRef\">No documentation.</param>\t\n            <param name=\"format\">No documentation.</param>\t\n            <param name=\"offset\">No documentation.</param>\t\n            <remarks>\t\n            <p>Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::IAGetIndexBuffer']/*\"/>\t\n            <msdn-id>bb173584</msdn-id>\t\n            <unmanaged>void ID3D10Device::IAGetIndexBuffer([Out, Optional] ID3D10Buffer** pIndexBuffer,[Out, Optional] DXGI_FORMAT* Format,[Out, Optional] unsigned int* Offset)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::IAGetIndexBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.InputAssemblerStage.GetPrimitiveTopology(SharpDX.Direct3D.PrimitiveTopology@)\">\n            <summary>\t\n            <p>Get information about the primitive type, and data order that describes input data for the input assembler stage.</p>\t\n            </summary>\t\n            <param name=\"topologyRef\">No documentation.</param>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::IAGetPrimitiveTopology']/*\"/>\t\n            <msdn-id>bb173586</msdn-id>\t\n            <unmanaged>void ID3D10Device::IAGetPrimitiveTopology([Out] D3D_PRIMITIVE_TOPOLOGY* pTopology)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::IAGetPrimitiveTopology</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.InputAssemblerStage.InputLayout\">\n            <summary>\t\n            <p>Get or sets a reference to the input-layout object that is bound to the input-assembler stage.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>For information about creating an input-layout object, see Creating the Input-Layout Object.</p><p>Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::IAGetInputLayout']/*\"/>\t\n            <msdn-id>bb173585</msdn-id>\t\n            <unmanaged>IAGetInputLayout / IASetInputLayout</unmanaged>\t\n            <unmanaged-short>IAGetInputLayout</unmanaged-short>\t\n            <unmanaged>void ID3D10Device::IAGetInputLayout([Out] ID3D10InputLayout** ppInputLayout)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.InputAssemblerStage.PrimitiveTopology\">\n            <summary>\t\n            <p>Get or sets information about the primitive type, and data order that describes input data for the input assembler stage.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::IAGetPrimitiveTopology']/*\"/>\t\n            <msdn-id>bb173586</msdn-id>\t\n            <unmanaged>IAGetPrimitiveTopology / IASetPrimitiveTopology</unmanaged>\t\n            <unmanaged-short>IAGetPrimitiveTopology</unmanaged-short>\t\n            <unmanaged>void ID3D10Device::IAGetPrimitiveTopology([Out] D3D_PRIMITIVE_TOPOLOGY* pTopology)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.Counter\">\n            <summary>\t\n            <p>This interface encapsulates methods for measuring GPU performance.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>A counter can be created with <strong><see cref=\"M:SharpDX.Direct3D10.Device.CreateCounter(SharpDX.Direct3D10.CounterDescription,SharpDX.Direct3D10.Counter)\"/></strong>.</p><p>This is a derived class of <strong><see cref=\"T:SharpDX.Direct3D10.Asynchronous\"/> Interface</strong>.</p><p>Counter data is gathered by issuing an <strong><see cref=\"M:SharpDX.Direct3D10.Asynchronous.Begin\"/></strong> command, issuing some graphics commands, issuing an <strong><see cref=\"M:SharpDX.Direct3D10.Asynchronous.End\"/></strong> command, and then calling <strong><see cref=\"M:SharpDX.Direct3D10.Asynchronous.GetData\"/></strong> to get data about what happened in between the Begin and End calls. The data returned by GetData will be different depending on the type of counter. The call to End causes the data returned by GetData to be accurate up until the last call to End.</p><p>Counters are best suited for profiling.</p><p>For a list of the types of performance counters, see <strong><see cref=\"T:SharpDX.Direct3D10.CounterKind\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Counter']/*\"/>\t\n            <msdn-id>bb173514</msdn-id>\t\n            <unmanaged>ID3D10Counter</unmanaged>\t\n            <unmanaged-short>ID3D10Counter</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Counter.#ctor(SharpDX.Direct3D10.Device,SharpDX.Direct3D10.CounterDescription)\">\n            <summary>\n              Constructs a new <see cref = \"T:SharpDX.Direct3D10.Counter\" /> based on the specified description.\n            </summary>\n            <param name = \"device\">The device with which to associate the state object.</param>\n            <param name = \"description\">The counter description.</param>\n            <returns>The newly created object.</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Counter.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D10.Counter\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Counter.op_Explicit(System.IntPtr)~SharpDX.Direct3D10.Counter\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D10.Counter\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Counter.GetDescription(SharpDX.Direct3D10.CounterDescription@)\">\n            <summary>\t\n            <p>Get a counter description.</p>\t\n            </summary>\t\n            <param name=\"descRef\"><dd>  <p>Pointer to a counter description (see <strong><see cref=\"T:SharpDX.Direct3D10.CounterDescription\"/></strong>).</p> </dd></param>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Counter::GetDesc']/*\"/>\t\n            <msdn-id>bb173515</msdn-id>\t\n            <unmanaged>void ID3D10Counter::GetDesc([Out] D3D10_COUNTER_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>ID3D10Counter::GetDesc</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.Counter.Description\">\n            <summary>\t\n            <p>Get a counter description.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Counter::GetDesc']/*\"/>\t\n            <msdn-id>bb173515</msdn-id>\t\n            <unmanaged>GetDesc</unmanaged>\t\n            <unmanaged-short>GetDesc</unmanaged-short>\t\n            <unmanaged>void ID3D10Counter::GetDesc([Out] D3D10_COUNTER_DESC* pDesc)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.CounterMetadata\">\n            <summary>\n            Counter metadata that contains the type, name, units of measure, and a description of an existing counter.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.CounterMetadata.Type\">\n            <summary>\n            Gets the data type of a counter (see <see cref=\"T:SharpDX.Direct3D10.CounterType\"/>).\n            </summary>\n            <value>The type.</value>\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.CounterMetadata.HardwareCounterCount\">\n            <summary>\n            Gets the number of hardware counters that are needed for this counter type to be created. All instances of the same counter type use the same hardware counters.\n            </summary>\n            <value>The hardware counter count.</value>\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.CounterMetadata.Name\">\n            <summary>\n            Gets a brief name for the counter.\n            </summary>\n            <value>The name.</value>\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.CounterMetadata.Units\">\n            <summary>\n            Gets the units a counter measures.\n            </summary>\n            <value>The units.</value>\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.CounterMetadata.Description\">\n            <summary>\n            Gets a description of the counter.\n            </summary>\n            <value>The description.</value>\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.DeviceDebug\">\n            <summary>\t\n            <p>A debug interface controls debug settings, validates pipeline state and can only be used if the debug layer is turned on.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This interface is obtained by querying it from the <strong><see cref=\"T:SharpDX.Direct3D10.Device\"/> Interface</strong> using IUnknown::QueryInterface.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Debug']/*\"/>\t\n            <msdn-id>bb173516</msdn-id>\t\n            <unmanaged>ID3D10Debug</unmanaged>\t\n            <unmanaged-short>ID3D10Debug</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.DeviceDebug.#ctor(SharpDX.Direct3D10.Device)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D10.DeviceDebug\"/> class.\n            </summary>\n            <param name=\"device\">The device.</param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.DeviceDebug.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D10.DeviceDebug\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.DeviceDebug.op_Explicit(System.IntPtr)~SharpDX.Direct3D10.DeviceDebug\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D10.DeviceDebug\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.DeviceDebug.SetFeatureFlags(System.Int32)\">\n            <summary>\t\n            <p>Set a bitfield of flags that will turn debug features on and off.</p>\t\n            </summary>\t\n            <param name=\"mask\"><dd>  <p>Feature-mask flags bitwise ORed together. If a flag is present, then that feature will be set to on, otherwise the feature will be set to off. See remarks for a list of flags.</p> </dd></param>\t\n            <returns><p>This method returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>Setting a feature-mask flag will cause a rendering-operation method (listed below) to do some extra task when called. The possible feature flags are:</p><table> <tr><td><see cref=\"F:SharpDX.Direct3D10.DebugFeatureFlags.FinishPerRender\"/></td><td>Application will wait for the GPU to finish processing the rendering operation before continuing.</td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D10.DebugFeatureFlags.FlushPerRender\"/></td><td>Runtime will additionally call <strong><see cref=\"M:SharpDX.Direct3D10.Device.Flush\"/></strong>.</td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D10.DebugFeatureFlags.PresentPerRender\"/></td><td>Runtime will call <strong>Present</strong>. Presentation of render buffers will occur according to the settings established by prior calls to <strong><see cref=\"M:SharpDX.Direct3D10.DeviceDebug.SetSwapChain(SharpDX.DXGI.SwapChain)\"/></strong> and <strong><see cref=\"M:SharpDX.Direct3D10.DeviceDebug.SetPresentPerRenderOpDelay(System.Int32)\"/></strong>.</td></tr> </table><p>?</p><p>These feature-mask flags apply to the following rendering-operation methods:</p><ul> <li> <strong><see cref=\"M:SharpDX.Direct3D10.Device.Draw(System.Int32,System.Int32)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.Direct3D10.Device.DrawIndexed(System.Int32,System.Int32,System.Int32)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.Direct3D10.Device.DrawInstanced(System.Int32,System.Int32,System.Int32,System.Int32)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.Direct3D10.Device.DrawIndexedInstanced(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.Direct3D10.Device.DrawAuto\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.Direct3D10.Device.ClearRenderTargetView(SharpDX.Direct3D10.RenderTargetView,SharpDX.Color4)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.Direct3D10.Device.ClearDepthStencilView(SharpDX.Direct3D10.DepthStencilView,SharpDX.Direct3D10.DepthStencilClearFlags,System.Single,System.Byte)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.Direct3D10.Device.CopySubresourceRegion_(SharpDX.Direct3D10.Resource,System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D10.Resource,System.Int32,System.Nullable{SharpDX.Direct3D10.ResourceRegion})\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.Direct3D10.Device.CopyResource_(SharpDX.Direct3D10.Resource,SharpDX.Direct3D10.Resource)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.Direct3D10.Device.UpdateSubresource(SharpDX.DataBox,SharpDX.Direct3D10.Resource,System.Int32)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.Direct3D10.Device.GenerateMips(SharpDX.Direct3D10.ShaderResourceView)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.Direct3D10.Device.ResolveSubresource_(SharpDX.Direct3D10.Resource,System.Int32,SharpDX.Direct3D10.Resource,System.Int32,SharpDX.DXGI.Format)\"/></strong> </li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Debug::SetFeatureMask']/*\"/>\t\n            <msdn-id>bb173520</msdn-id>\t\n            <unmanaged>HRESULT ID3D10Debug::SetFeatureMask([In] unsigned int Mask)</unmanaged>\t\n            <unmanaged-short>ID3D10Debug::SetFeatureMask</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.DeviceDebug.GetFeatureFlags\">\n            <summary>\t\n            <p>Get a bitfield of flags that indicates which debug features are on or off.</p>\t\n            </summary>\t\n            <returns><p>Mask of feature-mask flags bitwise ORed together. If a flag is present, then that feature will be set to on, otherwise the feature will be set to off. See <strong><see cref=\"M:SharpDX.Direct3D10.DeviceDebug.SetFeatureFlags(System.Int32)\"/></strong> for a list of possible feature-mask flags.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Debug::GetFeatureMask']/*\"/>\t\n            <msdn-id>bb173517</msdn-id>\t\n            <unmanaged>unsigned int ID3D10Debug::GetFeatureMask()</unmanaged>\t\n            <unmanaged-short>ID3D10Debug::GetFeatureMask</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.DeviceDebug.SetPresentPerRenderOpDelay(System.Int32)\">\n            <summary>\t\n            <p>Set the number of milliseconds to sleep after <strong>Present</strong> is called.</p>\t\n            </summary>\t\n            <param name=\"milliseconds\">No documentation.</param>\t\n            <returns><p>This method returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>The application will only sleep if <see cref=\"F:SharpDX.Direct3D10.DebugFeatureFlags.PresentPerRender\"/> is a set in the <strong>feature mask</strong>. If that flag is not set the number of milliseconds is set but ignored and the application does not sleep. 10ms is used as a default value if this method is never called.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Debug::SetPresentPerRenderOpDelay']/*\"/>\t\n            <msdn-id>bb173521</msdn-id>\t\n            <unmanaged>HRESULT ID3D10Debug::SetPresentPerRenderOpDelay([In] unsigned int Milliseconds)</unmanaged>\t\n            <unmanaged-short>ID3D10Debug::SetPresentPerRenderOpDelay</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.DeviceDebug.GetPresentPerRenderOpDelay\">\n            <summary>\t\n            <p>Get the number of milliseconds to sleep after <strong>Present</strong> is called.</p>\t\n            </summary>\t\n            <returns><p>Number of milliseconds to sleep after Present is called.</p></returns>\t\n            <remarks>\t\n            <p>Value is set with <strong><see cref=\"M:SharpDX.Direct3D10.DeviceDebug.SetPresentPerRenderOpDelay(System.Int32)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Debug::GetPresentPerRenderOpDelay']/*\"/>\t\n            <msdn-id>bb173518</msdn-id>\t\n            <unmanaged>unsigned int ID3D10Debug::GetPresentPerRenderOpDelay()</unmanaged>\t\n            <unmanaged-short>ID3D10Debug::GetPresentPerRenderOpDelay</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.DeviceDebug.SetSwapChain(SharpDX.DXGI.SwapChain)\">\n            <summary>\t\n            <p>Set a swap chain that the runtime will use for automatically calling <strong>Present</strong>.</p>\t\n            </summary>\t\n            <param name=\"swapChainRef\">No documentation.</param>\t\n            <returns><p>This method returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>The swap chain set by this method will only be used if <see cref=\"F:SharpDX.Direct3D10.DebugFeatureFlags.PresentPerRender\"/> is set in the <strong>feature mask</strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Debug::SetSwapChain']/*\"/>\t\n            <msdn-id>bb173522</msdn-id>\t\n            <unmanaged>HRESULT ID3D10Debug::SetSwapChain([In, Optional] IDXGISwapChain* pSwapChain)</unmanaged>\t\n            <unmanaged-short>ID3D10Debug::SetSwapChain</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.DeviceDebug.GetSwapChain(SharpDX.DXGI.SwapChain@)\">\n            <summary>\t\n            <p>Get the swap chain that the runtime will use for automatically calling <strong>Present</strong>.</p>\t\n            </summary>\t\n            <param name=\"swapChainOut\">No documentation.</param>\t\n            <returns><p>This method returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>The swap chain retrieved by this method will only be used if <see cref=\"F:SharpDX.Direct3D10.DebugFeatureFlags.PresentPerRender\"/> is set in the <strong>feature mask</strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Debug::GetSwapChain']/*\"/>\t\n            <msdn-id>bb173519</msdn-id>\t\n            <unmanaged>HRESULT ID3D10Debug::GetSwapChain([Out] IDXGISwapChain** ppSwapChain)</unmanaged>\t\n            <unmanaged-short>ID3D10Debug::GetSwapChain</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.DeviceDebug.Validate\">\n            <summary>\t\n            <p>Check the validity of pipeline state.</p>\t\n            </summary>\t\n            <returns><p>This method returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>When the debug layer is turned on all draw functions will do this operation.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Debug::Validate']/*\"/>\t\n            <msdn-id>bb173523</msdn-id>\t\n            <unmanaged>HRESULT ID3D10Debug::Validate()</unmanaged>\t\n            <unmanaged-short>ID3D10Debug::Validate</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.DeviceDebug.FeatureFlags\">\n            <summary>\n            Gets or sets the feature flags that indicates which debug features are on or off.\t\n            </summary>\n            <value>The feature flags.</value>\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.DeviceDebug.PresentPerRenderOpDelay\">\n            <summary>\t\n            <p>Get or sets the number of milliseconds to sleep after <strong>Present</strong> is called.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Value is set with <strong><see cref=\"M:SharpDX.Direct3D10.DeviceDebug.SetPresentPerRenderOpDelay(System.Int32)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Debug::GetPresentPerRenderOpDelay']/*\"/>\t\n            <msdn-id>bb173518</msdn-id>\t\n            <unmanaged>GetPresentPerRenderOpDelay / SetPresentPerRenderOpDelay</unmanaged>\t\n            <unmanaged-short>GetPresentPerRenderOpDelay</unmanaged-short>\t\n            <unmanaged>unsigned int ID3D10Debug::GetPresentPerRenderOpDelay()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.DeviceDebug.SwapChain\">\n            <summary>\t\n            <p>Get or sets the swap chain that the runtime will use for automatically calling <strong>Present</strong>.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The swap chain retrieved by this method will only be used if <see cref=\"F:SharpDX.Direct3D10.DebugFeatureFlags.PresentPerRender\"/> is set in the <strong>feature mask</strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Debug::GetSwapChain']/*\"/>\t\n            <msdn-id>bb173519</msdn-id>\t\n            <unmanaged>GetSwapChain / SetSwapChain</unmanaged>\t\n            <unmanaged-short>GetSwapChain</unmanaged-short>\t\n            <unmanaged>HRESULT ID3D10Debug::GetSwapChain([Out] IDXGISwapChain** ppSwapChain)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.DepthStencilState\">\n            <summary>\t\n            <p>A depth-stencil-state interface accesses depth-stencil state which sets up the depth-stencil test for the output-merger stage.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Create a depth-stencil state object by calling <strong><see cref=\"M:SharpDX.Direct3D10.Device.CreateDepthStencilState(SharpDX.Direct3D10.DepthStencilStateDescription@,SharpDX.Direct3D10.DepthStencilState)\"/></strong>.</p><p>To initialize depth-stencil state, bind the depth-stencil-state object to the pipeline by calling <strong><see cref=\"M:SharpDX.Direct3D10.OutputMergerStage.SetDepthStencilState(SharpDX.Direct3D10.DepthStencilState,System.Int32)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10DepthStencilState']/*\"/>\t\n            <msdn-id>bb173524</msdn-id>\t\n            <unmanaged>ID3D10DepthStencilState</unmanaged>\t\n            <unmanaged-short>ID3D10DepthStencilState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.DepthStencilState.#ctor(SharpDX.Direct3D10.Device,SharpDX.Direct3D10.DepthStencilStateDescription)\">\n            <summary>\n              Constructs a new <see cref = \"T:SharpDX.Direct3D10.DepthStencilState\" /> based on the specified description.\n            </summary>\n            <param name = \"device\">The device with which to associate the state object.</param>\n            <param name = \"description\">The state description.</param>\n            <returns>The newly created object.</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.DepthStencilState.#ctor(SharpDX.Direct3D10.Device,SharpDX.Direct3D10.DepthStencilStateDescription@)\">\n            <summary>\n              Constructs a new <see cref = \"T:SharpDX.Direct3D10.DepthStencilState\" /> based on the specified description.\n            </summary>\n            <param name = \"device\">The device with which to associate the state object.</param>\n            <param name = \"description\">The state description.</param>\n            <returns>The newly created object.</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.DepthStencilState.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D10.DepthStencilState\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.DepthStencilState.op_Explicit(System.IntPtr)~SharpDX.Direct3D10.DepthStencilState\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D10.DepthStencilState\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.DepthStencilState.GetDescription(SharpDX.Direct3D10.DepthStencilStateDescription@)\">\n            <summary>\t\n            <p>Get the depth-stencil state.</p>\t\n            </summary>\t\n            <param name=\"descRef\"><dd>  <p>A reference to the depth-stencil state (see <strong><see cref=\"T:SharpDX.Direct3D10.DepthStencilStateDescription\"/></strong>).</p> </dd></param>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10DepthStencilState::GetDesc']/*\"/>\t\n            <msdn-id>bb173525</msdn-id>\t\n            <unmanaged>void ID3D10DepthStencilState::GetDesc([Out] D3D10_DEPTH_STENCIL_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>ID3D10DepthStencilState::GetDesc</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.DepthStencilState.Description\">\n            <summary>\t\n            <p>Get the depth-stencil state.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10DepthStencilState::GetDesc']/*\"/>\t\n            <msdn-id>bb173525</msdn-id>\t\n            <unmanaged>GetDesc</unmanaged>\t\n            <unmanaged-short>GetDesc</unmanaged-short>\t\n            <unmanaged>void ID3D10DepthStencilState::GetDesc([Out] D3D10_DEPTH_STENCIL_DESC* pDesc)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.DepthStencilView\">\n            <summary>\t\n            <p>A depth-stencil-view interface accesses a texture resource during  depth-stencil testing.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>To create a depth-stencil view, call <strong><see cref=\"M:SharpDX.Direct3D10.Device.CreateDepthStencilView(SharpDX.Direct3D10.Resource,System.Nullable{SharpDX.Direct3D10.DepthStencilViewDescription},SharpDX.Direct3D10.DepthStencilView)\"/></strong>.</p><p>To bind a depth-stencil view to the pipeline, call <strong><see cref=\"M:SharpDX.Direct3D10.OutputMergerStage.SetRenderTargets(System.Int32,SharpDX.Direct3D10.RenderTargetView[],SharpDX.Direct3D10.DepthStencilView)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10DepthStencilView']/*\"/>\t\n            <msdn-id>bb173526</msdn-id>\t\n            <unmanaged>ID3D10DepthStencilView</unmanaged>\t\n            <unmanaged-short>ID3D10DepthStencilView</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.ResourceView\">\n            <summary>\t\n            <p>A view interface specifies the parts of a resource the pipeline can access during rendering (see view).</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>A view interface is the base interface for all views. There are three types of views; a depth-stencil view, a render-target view, and a shader-resource view.</p><ul> <li>To create a render-target view, call <strong><see cref=\"M:SharpDX.Direct3D10.Device.CreateRenderTargetView(SharpDX.Direct3D10.Resource,System.Nullable{SharpDX.Direct3D10.RenderTargetViewDescription},SharpDX.Direct3D10.RenderTargetView)\"/></strong>.</li> <li>To create a depth-stencil view, call <strong><see cref=\"M:SharpDX.Direct3D10.Device.CreateDepthStencilView(SharpDX.Direct3D10.Resource,System.Nullable{SharpDX.Direct3D10.DepthStencilViewDescription},SharpDX.Direct3D10.DepthStencilView)\"/></strong>.</li> <li>To create a shader-resource view, call <strong><see cref=\"M:SharpDX.Direct3D10.Device.CreateShaderResourceView(SharpDX.Direct3D10.Resource,System.Nullable{SharpDX.Direct3D10.ShaderResourceViewDescription},SharpDX.Direct3D10.ShaderResourceView)\"/></strong>.</li> </ul><p>All resources must be bound to the pipeline before they can be accessed.</p><ul> <li>To bind a render-target view or a depth-stencil view, call <strong><see cref=\"M:SharpDX.Direct3D10.OutputMergerStage.SetRenderTargets(System.Int32,SharpDX.Direct3D10.RenderTargetView[],SharpDX.Direct3D10.DepthStencilView)\"/></strong>.</li> <li>To bind a shader-resource view, call <strong><see cref=\"M:SharpDX.Direct3D10.VertexShaderStage.SetShaderResources(System.Int32,System.Int32,SharpDX.Direct3D10.ShaderResourceView[])\"/></strong>.</li> </ul><p>A view can also be used to access a typeless resource.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10View']/*\"/>\t\n            <msdn-id>bb173876</msdn-id>\t\n            <unmanaged>ID3D10View</unmanaged>\t\n            <unmanaged-short>ID3D10View</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.ResourceView.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D10.ResourceView\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.ResourceView.op_Explicit(System.IntPtr)~SharpDX.Direct3D10.ResourceView\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D10.ResourceView\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.ResourceView.GetResource(SharpDX.Direct3D10.Resource@)\">\n            <summary>\t\n            <p>Get the resource that is accessed through this view.</p>\t\n            </summary>\t\n            <param name=\"resourceOut\"><dd>  <p>Address of a reference to the resource that is accessed through this view. (See <strong><see cref=\"T:SharpDX.Direct3D10.Resource\"/></strong>.)</p> </dd></param>\t\n            <remarks>\t\n            <p>This function increments the reference count of the resource by one, so it is necessary to call Release on the returned reference when the application is done with it. Destroying (or losing) the returned reference before Release is called will result in a memory leak.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10View::GetResource']/*\"/>\t\n            <msdn-id>bb173877</msdn-id>\t\n            <unmanaged>void ID3D10View::GetResource([Out] ID3D10Resource** ppResource)</unmanaged>\t\n            <unmanaged-short>ID3D10View::GetResource</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.ResourceView.Resource\">\n            <summary>\t\n            <p>Get the resource that is accessed through this view.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This function increments the reference count of the resource by one, so it is necessary to call Release on the returned reference when the application is done with it. Destroying (or losing) the returned reference before Release is called will result in a memory leak.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10View::GetResource']/*\"/>\t\n            <msdn-id>bb173877</msdn-id>\t\n            <unmanaged>GetResource</unmanaged>\t\n            <unmanaged-short>GetResource</unmanaged-short>\t\n            <unmanaged>void ID3D10View::GetResource([Out] ID3D10Resource** ppResource)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.DepthStencilView.#ctor(SharpDX.Direct3D10.Device,SharpDX.Direct3D10.Resource)\">\n            <summary>\n              Creates a <see cref = \"T:SharpDX.Direct3D10.DepthStencilView\" /> for accessing resource data.\n            </summary>\n            <param name = \"device\">The device to use when creating this <see cref = \"T:SharpDX.Direct3D10.DepthStencilView\" />.</param>\n            <param name = \"resource\">The resource that represents the render-target surface. This surface must have been created with the <see cref = \"T:SharpDX.Direct3D10.BindFlags\">DepthStencil</see> flag.</param>\n            <unmanaged>ID3D10Device::CreateDepthStencilView</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.DepthStencilView.#ctor(SharpDX.Direct3D10.Device,SharpDX.Direct3D10.Resource,SharpDX.Direct3D10.DepthStencilViewDescription)\">\n            <summary>\n              Creates a <see cref = \"T:SharpDX.Direct3D10.DepthStencilView\" /> for accessing resource data.\n            </summary>\n            <param name = \"device\">The device to use when creating this <see cref = \"T:SharpDX.Direct3D10.DepthStencilView\" />.</param>\n            <param name = \"resource\">The resource that represents the render-target surface. This surface must have been created with the <see cref = \"T:SharpDX.Direct3D10.BindFlags\">DepthStencil</see> flag.</param>\n            <param name = \"description\">A structure describing the <see cref = \"T:SharpDX.Direct3D10.DepthStencilView\" /> to be created.</param>\n            <unmanaged>ID3D10Device::CreateDepthStencilView</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.DepthStencilView.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D10.DepthStencilView\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.DepthStencilView.op_Explicit(System.IntPtr)~SharpDX.Direct3D10.DepthStencilView\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D10.DepthStencilView\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.DepthStencilView.GetDescription(SharpDX.Direct3D10.DepthStencilViewDescription@)\">\n            <summary>\t\n            <p>Get the depth-stencil view.</p>\t\n            </summary>\t\n            <param name=\"descRef\">No documentation.</param>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10DepthStencilView::GetDesc']/*\"/>\t\n            <msdn-id>bb173527</msdn-id>\t\n            <unmanaged>void ID3D10DepthStencilView::GetDesc([Out] D3D10_DEPTH_STENCIL_VIEW_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>ID3D10DepthStencilView::GetDesc</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.DepthStencilView.Description\">\n            <summary>\t\n            <p>Get the depth-stencil view.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10DepthStencilView::GetDesc']/*\"/>\t\n            <msdn-id>bb173527</msdn-id>\t\n            <unmanaged>GetDesc</unmanaged>\t\n            <unmanaged-short>GetDesc</unmanaged-short>\t\n            <unmanaged>void ID3D10DepthStencilView::GetDesc([Out] D3D10_DEPTH_STENCIL_VIEW_DESC* pDesc)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.CommonShaderStage`1\">\n            <summary>\n            Common Shader class. Provides a common set of methods for a Shader Stage.\n            TODO: check if usage of abstract is not introducing an unacceptable overhead...\n            </summary>\n            <typeparam name = \"T\">Type of the shader</typeparam>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.CommonShaderStage`1.MaximumConstantBufferSlotCount\">\n            <summary>\n            Maximum number of bindable constant buffers to a pipeline stage.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.CommonShaderStage`1.MaximumResourceSlotCount\">\n            <summary>\n            Maximum number of bindable resources to a pipeline stage.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.CommonShaderStage`1.MaximumSamplerSlotCount\">\n            <summary>\n            Maximum number of bindable samplers to a pipeline stage.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.CommonShaderStage`1.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D10.CommonShaderStage`1\"/> class.\n            </summary>\n            <param name=\"pointer\">The pointer.</param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.CommonShaderStage`1.GetConstantBuffers(System.Int32,System.Int32)\">\n            <summary>\n              Gets the constant buffers used by the shader stage.\n            </summary>\n            <param name = \"startSlot\">Index into the device's zero-based array from which to begin retrieving constant buffers.</param>\n            <param name = \"count\">Number of buffers to retrieve.</param>\n            <returns>An array of constant buffers.</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.CommonShaderStage`1.GetSamplers(System.Int32,System.Int32)\">\n            <summary>\n              Gets the sampler states used by the shader stage.\n            </summary>\n            <param name = \"startSlot\">Index into the device's zero-based array from which to begin retrieving samplers.</param>\n            <param name = \"count\">Number of samplers to retrieve.</param>\n            <returns>An array of sampler states.</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.CommonShaderStage`1.GetShaderResources(System.Int32,System.Int32)\">\n            <summary>\n              Gets the shader resources used by the shader stage.\n            </summary>\n            <param name = \"startSlot\">Index into the device's zero-based array from which to begin retrieving shader resources.</param>\n            <param name = \"count\">Number of resources to retrieve.</param>\n            <returns>An array of shader resources.</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.CommonShaderStage`1.SetConstantBuffer(System.Int32,SharpDX.Direct3D10.Buffer)\">\n            <summary>\n              Sets a single constant buffer to be used by the shader stage.\n            </summary>\n            <param name = \"slot\">Index into the device's zero-based array to which to set the constant buffer.</param>\n            <param name = \"constantBuffer\">constant buffer to set</param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.CommonShaderStage`1.SetSampler(System.Int32,SharpDX.Direct3D10.SamplerState)\">\n            <summary>\n              Sets a single sampler to be used by the shader stage.\n            </summary>\n            <param name = \"slot\">Index into the device's zero-based array to which to set the sampler.</param>\n            <param name = \"sampler\">sampler state to set</param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.CommonShaderStage`1.SetShaderResource(System.Int32,SharpDX.Direct3D10.ShaderResourceView)\">\n            <summary>\n              Sets a single shader resource to be used by the shader stage.\n            </summary>\n            <param name = \"slot\">Index into the device's zero-based array to which to set the resource.</param>\n            <param name = \"resourceView\">Resource view to attach</param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.CommonShaderStage`1.GetShaderResources(System.Int32,System.Int32,SharpDX.Direct3D10.ShaderResourceView[])\">\n            <summary>\n              Get the shader resources.\n            </summary>\n            <remarks>\n              Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.\n            </remarks>\n            <param name = \"startSlot\">Index into the device's zero-based array to begin getting shader resources from (ranges from 0 to D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - 1).</param>\n            <param name = \"numViews\">The number of resources to get from the device. Up to a maximum of 128 slots are available for shader resources (ranges from 0 to D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - StartSlot).</param>\n            <param name = \"shaderResourceViewsRef\">Array of {{shader resource view}} interfaces to be returned by the device.</param>\n            <unmanaged>void PSGetShaderResources([In] UINT StartSlot,[In] UINT NumViews,[Out, Buffer] ID3D10ShaderResourceView** ppShaderResourceViews)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.CommonShaderStage`1.GetSamplers(System.Int32,System.Int32,SharpDX.Direct3D10.SamplerState[])\">\n            <summary>\n              Get an array of sampler states from the shader pipeline stage.\n            </summary>\n            <remarks>\n              Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.\n            </remarks>\n            <param name=\"startSlot\">Index into a zero-based array to begin getting samplers from (ranges from 0 to D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT - 1).</param>\n            <param name=\"numSamplers\">Number of samplers to get from a device context. Each pipeline stage has a total of 16 sampler slots available (ranges from 0 to D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT - StartSlot).</param>\n            <param name=\"samplersRef\">Arry of sampler-state interface pointers (see <see cref=\"T:SharpDX.Direct3D10.SamplerState\"/>) to be returned by the device.</param>\n            <unmanaged>void PSGetSamplers([In] UINT StartSlot,[In] UINT NumSamplers,[Out, Buffer] ID3D10SamplerState** ppSamplers)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.CommonShaderStage`1.GetConstantBuffers(System.Int32,System.Int32,SharpDX.Direct3D10.Buffer[])\">\n            <summary>\n              Get the constant buffers used by the shader pipeline stage.\n            </summary>\n            <remarks>\n              Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.\n            </remarks>\n            <param name=\"startSlot\">Index into the device's zero-based array to begin retrieving constant buffers from (ranges from 0 to D3D10_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - 1).</param>\n            <param name=\"numBuffers\">Number of buffers to retrieve (ranges from 0 to D3D10_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - StartSlot).</param>\n            <param name=\"constantBuffersRef\">Array of constant buffer interface pointers (see <see cref=\"T:SharpDX.Direct3D10.Buffer\"/>) to be returned by the method.</param>\n            <unmanaged>void PSGetConstantBuffers([In] UINT StartSlot,[In] UINT NumBuffers,[Out, Buffer] ID3D10Buffer** ppConstantBuffers)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.CommonShaderStage`1.SetShaderResources(System.Int32,System.Int32,SharpDX.Direct3D10.ShaderResourceView[])\">\n            <summary>\n              Bind an array of shader resources to the shader stage.\n            </summary>\n            <remarks>\n              If an overlapping resource view is already bound to an output slot, such as a rendertarget, then this API will fill the destination shader resource slot with NULL.For information about creating shader-resource views, see <see cref=\"M:SharpDX.Direct3D10.Device.CreateShaderResourceView(SharpDX.Direct3D10.Resource,System.Nullable{SharpDX.Direct3D10.ShaderResourceViewDescription},SharpDX.Direct3D10.ShaderResourceView)\"/>. The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.\n            </remarks>\n            <param name=\"startSlot\">Index into the device's zero-based array to begin setting shader resources to (ranges from 0 to D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - 1).</param>\n            <param name=\"numViews\">Number of shader resources to set. Up to a maximum of 128 slots are available for shader resources (ranges from 0 to D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - StartSlot).</param>\n            <param name=\"shaderResourceViewsRef\">Array of {{shader resource view}} interfaces to set to the device.</param>\n            <unmanaged>void PSSetShaderResources([In] UINT StartSlot,[In] UINT NumViews,[In, Buffer] const ID3D10ShaderResourceView** ppShaderResourceViews)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.CommonShaderStage`1.SetShaderResources(System.Int32,System.Int32,SharpDX.ComArray{SharpDX.Direct3D10.ShaderResourceView})\">\n            <summary>\n              Bind an array of shader resources to the shader stage.\n            </summary>\n            <remarks>\n              If an overlapping resource view is already bound to an output slot, such as a rendertarget, then this API will fill the destination shader resource slot with NULL.For information about creating shader-resource views, see <see cref=\"M:SharpDX.Direct3D10.Device.CreateShaderResourceView(SharpDX.Direct3D10.Resource,System.Nullable{SharpDX.Direct3D10.ShaderResourceViewDescription},SharpDX.Direct3D10.ShaderResourceView)\"/>. The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.\n            </remarks>\n            <param name=\"startSlot\">Index into the device's zero-based array to begin setting shader resources to (ranges from 0 to D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - 1).</param>\n            <param name=\"numViews\">Number of shader resources to set. Up to a maximum of 128 slots are available for shader resources (ranges from 0 to D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - StartSlot).</param>\n            <param name=\"shaderResourceViewsRef\">Array of {{shader resource view}} interfaces to set to the device.</param>\n            <unmanaged>void PSSetShaderResources([In] UINT StartSlot,[In] UINT NumViews,[In, Buffer] const ID3D10ShaderResourceView** ppShaderResourceViews)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.CommonShaderStage`1.SetSamplers(System.Int32,System.Int32,SharpDX.Direct3D10.SamplerState[])\">\n            <summary>\n              Set an array of sampler states to the shader pipeline stage.\n            </summary>\n            <remarks>\n              Any sampler may be set to NULL; this invokes the default state, which is defined to be the following.StateDefault ValueFilterD3D10_FILTER_MIN_MAG_MIP_LINEARAddressUD3D10_TEXTURE_ADDRESS_CLAMPAddressVD3D10_TEXTURE_ADDRESS_CLAMPAddressWD3D10_TEXTURE_ADDRESS_CLAMPMipLODBias0MaxAnisotropy1ComparisonFuncD3D10_COMPARISON_NEVERBorderColor[0]1.0fBorderColor[1]1.0fBorderColor[2]1.0fBorderColor[3]1.0fMinLOD-FLT_MAXMaxLODFLT_MAX  The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.\n            </remarks>\n            <param name=\"startSlot\">Index into the device's zero-based array to begin setting samplers to (ranges from 0 to D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT - 1).</param>\n            <param name=\"numSamplers\">Number of samplers in the array. Each pipeline stage has a total of 16 sampler slots available (ranges from 0 to D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT - StartSlot).</param>\n            <param name=\"samplersRef\">Pointer to an array of sampler-state interfaces (see <see cref=\"T:SharpDX.Direct3D10.SamplerState\"/>). See Remarks.</param>\n            <unmanaged>void PSSetSamplers([In] UINT StartSlot,[In] UINT NumSamplers,[In, Buffer] const ID3D10SamplerState** ppSamplers)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.CommonShaderStage`1.SetSamplers(System.Int32,System.Int32,SharpDX.ComArray{SharpDX.Direct3D10.SamplerState})\">\n            <summary>\n              Set an array of sampler states to the shader pipeline stage.\n            </summary>\n            <remarks>\n              Any sampler may be set to NULL; this invokes the default state, which is defined to be the following.StateDefault ValueFilterD3D10_FILTER_MIN_MAG_MIP_LINEARAddressUD3D10_TEXTURE_ADDRESS_CLAMPAddressVD3D10_TEXTURE_ADDRESS_CLAMPAddressWD3D10_TEXTURE_ADDRESS_CLAMPMipLODBias0MaxAnisotropy1ComparisonFuncD3D10_COMPARISON_NEVERBorderColor[0]1.0fBorderColor[1]1.0fBorderColor[2]1.0fBorderColor[3]1.0fMinLOD-FLT_MAXMaxLODFLT_MAX  The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.\n            </remarks>\n            <param name=\"startSlot\">Index into the device's zero-based array to begin setting samplers to (ranges from 0 to D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT - 1).</param>\n            <param name=\"numSamplers\">Number of samplers in the array. Each pipeline stage has a total of 16 sampler slots available (ranges from 0 to D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT - StartSlot).</param>\n            <param name=\"samplersRef\">Pointer to an array of sampler-state interfaces (see <see cref=\"T:SharpDX.Direct3D10.SamplerState\"/>). See Remarks.</param>\n            <unmanaged>void PSSetSamplers([In] UINT StartSlot,[In] UINT NumSamplers,[In, Buffer] const ID3D10SamplerState** ppSamplers)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.CommonShaderStage`1.SetConstantBuffers(System.Int32,System.Int32,SharpDX.Direct3D10.Buffer[])\">\n            <summary>\n              Set the constant buffers used by the shader pipeline stage.\n            </summary>\n            <remarks>\n              The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.\n            </remarks>\n            <param name=\"startSlot\">Index into the device's zero-based array to begin setting constant buffers to (ranges from 0 to D3D10_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - 1).</param>\n            <param name=\"numBuffers\">Number of buffers to set (ranges from 0 to D3D10_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - StartSlot).</param>\n            <param name=\"constantBuffersRef\">Array of constant buffers (see <see cref=\"T:SharpDX.Direct3D10.Buffer\"/>) being given to the device.</param>\n            <unmanaged>void PSSetConstantBuffers([In] UINT StartSlot,[In] UINT NumBuffers,[In, Buffer] const ID3D10Buffer** ppConstantBuffers)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.CommonShaderStage`1.SetConstantBuffers(System.Int32,System.Int32,SharpDX.ComArray{SharpDX.Direct3D10.Buffer})\">\n            <summary>\n              Set the constant buffers used by the shader pipeline stage.\n            </summary>\n            <remarks>\n              The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.\n            </remarks>\n            <param name=\"startSlot\">Index into the device's zero-based array to begin setting constant buffers to (ranges from 0 to D3D10_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - 1).</param>\n            <param name=\"numBuffers\">Number of buffers to set (ranges from 0 to D3D10_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - StartSlot).</param>\n            <param name=\"constantBuffersRef\">Array of constant buffers (see <see cref=\"T:SharpDX.Direct3D10.Buffer\"/>) being given to the device.</param>\n            <unmanaged>void PSSetConstantBuffers([In] UINT StartSlot,[In] UINT NumBuffers,[In, Buffer] const ID3D10Buffer** ppConstantBuffers)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.Device\">\n            <summary>\t\n            <p>The device interface represents a virtual adapter for Direct3D 10.0; it is used to perform rendering and create Direct3D resources.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>A device is created using <strong><see cref=\"M:SharpDX.Direct3D10.D3D10.CreateDevice(SharpDX.DXGI.Adapter,SharpDX.Direct3D10.DriverType,System.IntPtr,SharpDX.Direct3D10.DeviceCreationFlags,System.Int32,SharpDX.Direct3D10.Device)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device']/*\"/>\t\n            <msdn-id>bb173528</msdn-id>\t\n            <unmanaged>ID3D10Device</unmanaged>\t\n            <unmanaged-short>ID3D10Device</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Device.#ctor(SharpDX.Direct3D10.DriverType)\">\n            <summary>\n              Constructor for a D3D10 Device. See <see cref=\"M:SharpDX.Direct3D10.D3D10.CreateDevice(SharpDX.DXGI.Adapter,SharpDX.Direct3D10.DriverType,System.IntPtr,SharpDX.Direct3D10.DeviceCreationFlags,System.Int32,SharpDX.Direct3D10.Device)\"/> for more information.\n            </summary>\n            <param name=\"driverType\"></param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Device.#ctor(SharpDX.DXGI.Adapter)\">\n            <summary>\n              Constructor for a D3D10 Device. See <see cref=\"M:SharpDX.Direct3D10.D3D10.CreateDevice(SharpDX.DXGI.Adapter,SharpDX.Direct3D10.DriverType,System.IntPtr,SharpDX.Direct3D10.DeviceCreationFlags,System.Int32,SharpDX.Direct3D10.Device)\"/> for more information.\n            </summary>\n            <param name=\"adapter\"></param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Device.#ctor(SharpDX.Direct3D10.DriverType,SharpDX.Direct3D10.DeviceCreationFlags)\">\n            <summary>\n              Constructor for a D3D10 Device. See <see cref=\"M:SharpDX.Direct3D10.D3D10.CreateDevice(SharpDX.DXGI.Adapter,SharpDX.Direct3D10.DriverType,System.IntPtr,SharpDX.Direct3D10.DeviceCreationFlags,System.Int32,SharpDX.Direct3D10.Device)\"/> for more information.\n            </summary>\n            <param name=\"driverType\"></param>\n            <param name=\"flags\"></param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Device.#ctor(SharpDX.DXGI.Adapter,SharpDX.Direct3D10.DeviceCreationFlags)\">\n            <summary>\n              Constructor for a D3D10 Device. See <see cref=\"M:SharpDX.Direct3D10.D3D10.CreateDevice(SharpDX.DXGI.Adapter,SharpDX.Direct3D10.DriverType,System.IntPtr,SharpDX.Direct3D10.DeviceCreationFlags,System.Int32,SharpDX.Direct3D10.Device)\"/> for more information.\n            </summary>\n            <param name=\"adapter\"></param>\n            <param name=\"flags\"></param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Device.CreateWithSwapChain(SharpDX.Direct3D10.DriverType,SharpDX.Direct3D10.DeviceCreationFlags,SharpDX.DXGI.SwapChainDescription,SharpDX.Direct3D10.Device@,SharpDX.DXGI.SwapChain@)\">\n            <summary>\n              Initializes a new instance of the <see cref = \"T:SharpDX.Direct3D10.Device\" /> class along with a new <see cref = \"T:SharpDX.DXGI.SwapChain\" /> used for rendering.\n            </summary>\n            <param name = \"driverType\">The type of device to create.</param>\n            <param name = \"flags\">A list of runtime layers to enable.</param>\n            <param name = \"swapChainDescription\">Details used to create the swap chain.</param>\n            <param name = \"device\">When the method completes, contains the created device instance.</param>\n            <param name = \"swapChain\">When the method completes, contains the created swap chain instance.</param>\n            <returns>A <see cref = \"T:SharpDX.Result\" /> object describing the result of the operation.</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Device.CreateWithSwapChain(SharpDX.DXGI.Adapter,SharpDX.Direct3D10.DeviceCreationFlags,SharpDX.DXGI.SwapChainDescription,SharpDX.Direct3D10.Device@,SharpDX.DXGI.SwapChain@)\">\n            <summary>\n              Initializes a new instance of the <see cref = \"T:SharpDX.Direct3D10.Device\" /> class along with a new <see cref = \"T:SharpDX.DXGI.SwapChain\" /> used for rendering.\n            </summary>\n            <param name = \"adapter\">The video adapter on which the device should be created.</param>\n            <param name = \"flags\">A list of runtime layers to enable.</param>\n            <param name = \"swapChainDescription\">Details used to create the swap chain.</param>\n            <param name = \"device\">When the method completes, contains the created device instance.</param>\n            <param name = \"swapChain\">When the method completes, contains the created swap chain instance.</param>\n            <returns>A <see cref = \"T:SharpDX.Result\" /> object describing the result of the operation.</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Device.CreateWithSwapChain(SharpDX.DXGI.Adapter,SharpDX.Direct3D10.DriverType,SharpDX.Direct3D10.DeviceCreationFlags,SharpDX.DXGI.SwapChainDescription,SharpDX.Direct3D10.Device@,SharpDX.DXGI.SwapChain@)\">\n            <summary>\n              This overload has been deprecated. Use one of the alternatives that does not take both an adapter and a driver type.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Device.GetCounterMetadata(SharpDX.Direct3D10.CounterDescription)\">\n            <summary>\n            Get the type, name, units of measure, and a description of an existing counter.\t\n            </summary>\n            <param name=\"counterDescription\">The counter description.</param>\n            <returns>Description of the counter</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Device.GetPredication(System.Boolean@)\">\n            <summary>\t\n            Get the rendering predicate state.\t\n            </summary>\t\n            <remarks>\t\n            Any returned interfaces will have their reference count incremented by one. Applications should call {{IUnknown::Release}} on the returned interfaces when they are no longer needed to avoid memory leaks. \t\n            </remarks>\t\n            <param name=\"predicateValue\">a boolean to fill with the predicate comparison value. FALSE upon device creation. </param>\n            <returns>a reference to a predicate (see <see cref=\"T:SharpDX.Direct3D10.Predicate\"/>).</returns>\n            <unmanaged>void ID3D10Device::GetPredication([Out, Optional] ID3D10Predicate** ppPredicate,[Out, Optional] BOOL* pPredicateValue)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Device.OpenSharedResource``1(System.IntPtr)\">\n            <summary>\n            Give a device access to a shared resource created on a different Direct3d device.\n            </summary>\n            <typeparam name=\"T\">The type of the resource we are gaining access to.</typeparam>\n            <param name=\"resourceHandle\">A resource handle. See remarks.</param>\n            <returns>\n            This method returns a reference to the resource we are gaining access to.\n            </returns>\n            <remarks>\n            To share a resource between two Direct3D 10 devices the resource must have been created with the  <see cref=\"F:SharpDX.Direct3D10.ResourceOptionFlags.Shared\"/> flag, if it was created using the ID3D10Device interface.  If it was created using the IDXGIDevice interface, then the resource is always shared. The REFIID, or GUID, of the interface to the resource can be obtained by using the __uuidof() macro.  For example, __uuidof(ID3D10Buffer) will get the GUID of the interface to a buffer resource. When sharing a resource between two Direct3D 10 devices the unique handle of the resource can be obtained by querying the resource for the <see cref=\"T:SharpDX.DXGI.Resource\"/> interface and then calling {{GetSharedHandle}}.\n            <code> IDXGIResource* pOtherResource(NULL);\n            hr = pOtherDeviceResource-&gt;QueryInterface( __uuidof(IDXGIResource), (void**)&amp;pOtherResource );\n            HANDLE sharedHandle;\n            pOtherResource-&gt;GetSharedHandle(&amp;sharedHandle); </code>\n            The only resources that can be shared are 2D non-mipmapped textures. To share a resource between a Direct3D 9 device and a Direct3D 10 device the texture must have been created using  the pSharedHandle argument of {{CreateTexture}}.   The shared Direct3D 9 handle is then passed to OpenSharedResource in the hResource argument. The following code illustrates the method calls involved.\n            <code> sharedHandle = NULL; // must be set to NULL to create, can use a valid handle here to open in D3D9\n            pDevice9-&gt;CreateTexture(..., pTex2D_9, &amp;sharedHandle);\n            ...\n            pDevice10-&gt;OpenSharedResource(sharedHandle, __uuidof(ID3D10Resource), (void**)(&amp;tempResource10));\n            tempResource10-&gt;QueryInterface(__uuidof(ID3D10Texture2D), (void**)(&amp;pTex2D_10));\n            tempResource10-&gt;Release();\n            // now use pTex2D_10 with pDevice10    </code>\n            Textures being shared from D3D9 to D3D10 have the following restrictions.  Textures must be 2D Only 1 mip level is allowed Texture must have default usage Texture must be write only MSAA textures are not allowed Bind flags must have SHADER_RESOURCE and RENDER_TARGET set Only R10G10B10A2_UNORM, R16G16B16A16_FLOAT and R8G8B8A8_UNORM formats are allowed  If a shared texture is updated on one device <see cref=\"M:SharpDX.Direct3D10.Device.Flush\"/> must be called on that device.\n            </remarks>\n            <unmanaged>HRESULT ID3D10Device::OpenSharedResource([In] void* hResource,[In] GUID* ReturnedInterface,[Out, Optional] void** ppResource)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Device.CopyResource(SharpDX.Direct3D10.Resource,SharpDX.Direct3D10.Resource)\">\n            <summary>\t\n            Copy the entire contents of the source resource to the destination resource using the GPU. \t\n            </summary>\t\n            <remarks>\t\n            This method is unusual in that it causes the GPU to perform the copy operation (similar to a memcpy by the CPU). As a result, it has a few restrictions designed for improving performance. For instance, the source and destination resources:  Must be different resources. Must be the same {{type}}. Must have identical dimensions (including width, height, depth, and size as appropriate). Will only be copied. CopyResource does not support any stretch, color key, blend, or format conversions. Must have compatible {{formats}}, which means the formats must be identical or at least from the same type group. For example, a DXGI_FORMAT_R32G32B32_FLOAT texture can be copied to an DXGI_FORMAT_R32G32B32_UINT texture since both of these formats are in the DXGI_FORMAT_R32G32B32_TYPELESS group. May not be currently {{mapped}}.   {{Immutable}}, and {{depth-stencil}} resources cannot be used as a destination.  Resources created with {{multisampling capability}} cannot be used as either a source or destination. The method is an asynchronous call which may be added to the command-buffer queue. This attempts to remove pipeline stalls that may occur when copying data. See {{performance considerations}} for more details. An application that only needs to copy a portion of the data in a resource should use <see cref=\"M:SharpDX.Direct3D10.Device.CopySubresourceRegion_(SharpDX.Direct3D10.Resource,System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D10.Resource,System.Int32,System.Nullable{SharpDX.Direct3D10.ResourceRegion})\"/> instead.   Differences between Direct3D 10 and Direct3D 10.1: Direct3D 10.1 enables depth-stencil resources to be used as either a source or destination. Direct3D 10.1 enables multisampled resources to be used as source and destination only if both source and destination have identical multisampled count and quality. If source and destination differ in multisampled count and quality or if the source is multisampled and the destination is not multisampled (or vice versa), the call to ID3D10Device::CopyResource fails. It is possible to copy between prestructured+typed resources and block-compressed textures. See {{Format Conversion using Direct3D 10.1}}.   ? \t\n            </remarks>\t\n            <param name=\"source\">A reference to the source resource (see <see cref=\"T:SharpDX.Direct3D10.Resource\"/>). </param>\n            <param name=\"destination\">A reference to the destination resource (see <see cref=\"T:SharpDX.Direct3D10.Resource\"/>). </param>\n            <unmanaged>void ID3D10Device::CopyResource([In] ID3D10Resource* pDstResource,[In] ID3D10Resource* pSrcResource)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Device.CopySubresourceRegion(SharpDX.Direct3D10.Resource,System.Int32,System.Nullable{SharpDX.Direct3D10.ResourceRegion},SharpDX.Direct3D10.Resource,System.Int32,System.Int32,System.Int32,System.Int32)\">\n            <summary>\t\n            Copy a region from a source resource to a destination resource.\t\n            </summary>\t\n            <remarks>\t\n            The source box must be within the size of the source resource. The destination location is an absolute value (not a relative value). The destination location can be offset from the source location; however, the size of the region to copy (including the destination location) must fit in the destination resource. If the resources are buffers, all coordinates are in bytes; if the resources are textures, all coordinates are in texels.   {{D3D10CalcSubresource}} is a helper function for calculating subresource indexes. CopySubresourceRegion performs the copy on the GPU (similar to a memcpy by the CPU). As a consequence, the source and destination resources must meet the following criteria:  Must be different subresources (although they can be from the same resource). Must be the same {{type}}. Must have compatible {{formats}} (the formats must either be identical or be from the same type group). For example, a DXGI_FORMAT_R32G32B32_FLOAT texture can be copied to an DXGI_FORMAT_R32G32B32_UINT texture because both of these formats are in the DXGI_FORMAT_R32G32B32_TYPELESS group. May not be currently {{mapped}}.  CopySubresourceRegion supports only copy; it does not support any stretch, color key, blend, or format conversions. An application that needs to copy an entire resource should use <see cref=\"M:SharpDX.Direct3D10.Device.CopyResource_(SharpDX.Direct3D10.Resource,SharpDX.Direct3D10.Resource)\"/> instead. CopySubresourceRegion is an asynchronous call that the runtime can add  to the command-buffer queue. This asynchronous behaviorattempts to remove pipeline stalls that may occur when copying data. See {{performance considerations}} for more details.   Differences between Direct3D 10 and Direct3D 10.1: Direct3D 10 has the following limitations:  You cannot use a depth-stencil resource as a destination. You cannot use an immutable resource as a destination. You cannot use a multisampled texture as either a source or a destination  Direct3D 10.1 has added support for the following features:  You can use a depth-stencil buffer as a source or a destination. You can use multisampled resources as  source and destination only if both source and destination have identical multisampled count and quality. If source and destination differ in multisampled count and quality or if the source is multisampled and the destination is not multisampled (or vice versa), the call to ID3D10Device::CopySubresourceRegion fails. You can copy between uncompressed and compressed resources. During copy, the format conversions that are specified in  {{Format Conversion using Direct3D 10.1}} are supported automatically. The uncompressed resource must be at least prestructured, and typed. You must also account for the difference between the virtual and the physical size of the mipmaps levels.    ? Note??If you use CopySubresourceRegion with a depth-stencil buffer or a multisampled resource, you must copy the whole subresource. You must also pass 0 to the DstX, DstY, and DstZ parameters and NULL to the pSrcBox parameter. In addition, source and destination resources, which are represented by the pSrcResource and pDstResource parameters respectively, must have identical sample count values. Example The following code snippet copies a box (located at (120,100),(200,220)) from a source texture into a reqion (130,120),(210,240) in a destination texture. \t\n            <code> D3D10_BOX sourceRegion;\t\n            sourceRegion.left = 120;\t\n            sourceRegion.right = 200;\t\n            sourceRegion.top = 100;\t\n            sourceRegion.bottom = 220;\t\n            sourceRegion.front = 0;\t\n            sourceRegion.back = 1; pd3dDevice-&gt;CopySubresourceRegion( pDestTexture, 0, 130, 120, 0, pSourceTexture, 0, &amp;sourceRegion ); </code>\t\n            \t\n             Notice that, for a 2D texture, front and back are always set to 0 and 1 respectively. \t\n            </remarks>\t\n            <param name=\"source\">A reference to the source resource (see <see cref=\"T:SharpDX.Direct3D10.Resource\"/>). </param>\n            <param name=\"sourceSubresource\">index of the source. </param>\n            <param name=\"sourceRegion\">A 3D box (see <see cref=\"T:SharpDX.Direct3D10.ResourceRegion\"/>) that defines the source subresources that can be copied. If NULL, the entire source subresource is copied. The box must fit within the source resource. </param>\n            <param name=\"destination\">A reference to the destination resource (see <see cref=\"T:SharpDX.Direct3D10.Resource\"/>). </param>\n            <param name=\"destinationSubResource\">index of the destination. </param>\n            <param name=\"dstX\">The x coordinate of the upper left corner of the destination region. </param>\n            <param name=\"dstY\">The y coordinate of the upper left corner of the destination region. </param>\n            <param name=\"dstZ\">The z coordinate of the upper left corner of the destination region. For a 1D or 2D subresource, this must be zero. </param>\n            <unmanaged>void ID3D10Device::CopySubresourceRegion([In] ID3D10Resource* pDstResource,[In] int DstSubresource,[In] int DstX,[In] int DstY,[In] int DstZ,[In] ID3D10Resource* pSrcResource,[In] int SrcSubresource,[In, Optional] const D3D10_BOX* pSrcBox)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Device.ResolveSubresource(SharpDX.Direct3D10.Resource,System.Int32,SharpDX.Direct3D10.Resource,System.Int32,SharpDX.DXGI.Format)\">\n            <summary>\t\n            Copy a multisampled resource into a non-multisampled resource. This API is most useful when re-using the resulting rendertarget of one render pass as an input to a second render pass.\t\n            </summary>\t\n            <remarks>\t\n            Both the source and destination resources must be the same {{resource type}} and have the same dimensions. The source and destination must have compatible formats. There are three scenarios for this:  ScenarioRequirements Source and destination are prestructured and typedBoth the source and destination must have identical formats and that format must be specified in the Format parameter. One resource is prestructured and typed and the other is prestructured and typelessThe typed resource must have a format that is compatible with the typeless resource (i.e. the typed resource is DXGI_FORMAT_R32_FLOAT and the typeless resource is DXGI_FORMAT_R32_TYPELESS). The format of the typed resource must be specified in the Format parameter. Source and destination are prestructured and typelessBoth the source and desintation must have the same typeless format (i.e. both must have DXGI_FORMAT_R32_TYPELESS), and the Format parameter must specify a format that is compatible with the source and destination (i.e. if both are DXGI_FORMAT_R32_TYPELESS then DXGI_FORMAT_R32_FLOAT or DXGI_FORMAT_R32_UINT could be specified in the Format parameter).  ? \t\n            </remarks>\t\n            <param name=\"source\">Source resource. Must be multisampled. </param>\n            <param name=\"sourceSubresource\">The source subresource of the source resource. </param>\n            <param name=\"destination\">Destination resource. Must be a created with the <see cref=\"F:SharpDX.Direct3D10.ResourceUsage.Default\"/> flag and be single-sampled. See <see cref=\"T:SharpDX.Direct3D10.Resource\"/>. </param>\n            <param name=\"destinationSubresource\">A zero-based index, that identifies the destination subresource. See {{D3D10CalcSubresource}} for more details. </param>\n            <param name=\"format\">that indicates how the multisampled resource will be resolved to a single-sampled resource. See remarks. </param>\n            <unmanaged>void ID3D10Device::ResolveSubresource([In] ID3D10Resource* pDstResource,[In] int DstSubresource,[In] ID3D10Resource* pSrcResource,[In] int SrcSubresource,[In] DXGI_FORMAT Format)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Device.UpdateSubresource``1(``0@,SharpDX.Direct3D10.Resource,System.Int32,System.Int32,System.Int32)\">\n            <summary>\n            Copies data from the CPU to to a non-mappable subresource region.\n            </summary>\n            <typeparam name=\"T\">Type of the data to upload</typeparam>\n            <param name=\"data\">A reference to the data to upload.</param>\n            <param name=\"resource\">The destination resource.</param>\n            <param name=\"subresource\">The destination subresource.</param>\n            <param name=\"rowPitch\">The row pitch.</param>\n            <param name=\"depthPitch\">The depth pitch.</param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Device.UpdateSubresource``1(``0[],SharpDX.Direct3D10.Resource,System.Int32,System.Int32,System.Int32)\">\n            <summary>\n            Copies data from the CPU to to a non-mappable subresource region.\n            </summary>\n            <typeparam name=\"T\">Type of the data to upload</typeparam>\n            <param name=\"data\">A reference to the data to upload.</param>\n            <param name=\"resource\">The destination resource.</param>\n            <param name=\"subresource\">The destination subresource.</param>\n            <param name=\"rowPitch\">The row pitch.</param>\n            <param name=\"depthPitch\">The depth pitch.</param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Device.UpdateSubresource(SharpDX.DataBox,SharpDX.Direct3D10.Resource,System.Int32)\">\n            <summary>\n            Copies data from the CPU to to a non-mappable subresource region.\n            </summary>\n            <param name=\"source\">The source data.</param>\n            <param name=\"resource\">The destination resource.</param>\n            <param name=\"subresource\">The destination subresource.</param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Device.UpdateSubresource(SharpDX.DataBox,SharpDX.Direct3D10.Resource,System.Int32,SharpDX.Direct3D10.ResourceRegion)\">\n            <summary>\n            Copies data from the CPU to to a non-mappable subresource region.\n            </summary>\n            <param name=\"source\">The source data.</param>\n            <param name=\"resource\">The destination resource.</param>\n            <param name=\"subresource\">The destination subresource.</param>\n            <param name=\"region\">The destination region within the resource.</param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Device.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D10.Device\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Device.op_Explicit(System.IntPtr)~SharpDX.Direct3D10.Device\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D10.Device\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Device.NativePointerUpdated(System.IntPtr)\">\n            <summary>Update nested inner interfaces pointer</summary>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Device.DrawIndexed(System.Int32,System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Draw indexed, non-instanced primitives.</p>\t\n            </summary>\t\n            <param name=\"indexCount\"><dd>  <p>Number of indices to draw.</p> </dd></param>\t\n            <param name=\"startIndexLocation\"><dd>  <p>Index of the first index to use when accesssing the vertex buffer; begin at <em>StartIndexLocation</em> to index vertices from the vertex buffer.</p> </dd></param>\t\n            <param name=\"baseVertexLocation\"><dd>  <p>Offset from the start of the vertex buffer to the first vertex.</p> </dd></param>\t\n            <remarks>\t\n            <p>A draw API submits work to the rendering pipeline.</p><p>If the sum of both indices is negative, the result of the function call is undefined.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::DrawIndexed']/*\"/>\t\n            <msdn-id>bb173565</msdn-id>\t\n            <unmanaged>void ID3D10Device::DrawIndexed([In] unsigned int IndexCount,[In] unsigned int StartIndexLocation,[In] int BaseVertexLocation)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::DrawIndexed</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Device.Draw(System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Draw non-indexed, non-instanced primitives.</p>\t\n            </summary>\t\n            <param name=\"vertexCount\"><dd>  <p>Number of vertices to draw.</p> </dd></param>\t\n            <param name=\"startVertexLocation\"><dd>  <p>Index of the first vertex, which is usually an offset in a vertex buffer; it could also be used as the first vertex id generated for a shader parameter marked with the <strong>SV_TargetId</strong>?system-value semantic.</p> </dd></param>\t\n            <remarks>\t\n            <p>A draw API submits work to the rendering pipeline.</p><p>The vertex data for a draw call normally comes from a vertex buffer that is bound to the pipeline. However, you could also provide the vertex data from a shader that has vertex data marked with the <strong>SV_VertexId</strong>?system-value semantic.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::Draw']/*\"/>\t\n            <msdn-id>bb173563</msdn-id>\t\n            <unmanaged>void ID3D10Device::Draw([In] unsigned int VertexCount,[In] unsigned int StartVertexLocation)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::Draw</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Device.DrawIndexedInstanced(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Draw indexed, instanced primitives.</p>\t\n            </summary>\t\n            <param name=\"indexCountPerInstance\"><dd>  <p>Size of the index buffer used in each instance.</p> </dd></param>\t\n            <param name=\"instanceCount\"><dd>  <p>Number of instances to draw.</p> </dd></param>\t\n            <param name=\"startIndexLocation\"><dd>  <p>Index of the first index.</p> </dd></param>\t\n            <param name=\"baseVertexLocation\"><dd>  <p>Index of the first vertex. The index is signed, which allows a negative index. If the negative index plus the index value from the index buffer are less than 0, the result is undefined.</p> </dd></param>\t\n            <param name=\"startInstanceLocation\"><dd>  <p>Index of the first instance.</p> </dd></param>\t\n            <remarks>\t\n            <p>A draw API submits work to the rendering pipeline.</p><p>Instancing may extend performance by reusing the same geometry to draw multiple objects in a scene. One example of instancing could be to draw the same object with different positions and colors. Indexing requires multiple vertex buffers: at least one for per-vertex data and a second buffer for per-instance data. For an example of instancing, see the Instancing10 Sample.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::DrawIndexedInstanced']/*\"/>\t\n            <msdn-id>bb173566</msdn-id>\t\n            <unmanaged>void ID3D10Device::DrawIndexedInstanced([In] unsigned int IndexCountPerInstance,[In] unsigned int InstanceCount,[In] unsigned int StartIndexLocation,[In] int BaseVertexLocation,[In] unsigned int StartInstanceLocation)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::DrawIndexedInstanced</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Device.DrawInstanced(System.Int32,System.Int32,System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Draw non-indexed, instanced primitives.</p>\t\n            </summary>\t\n            <param name=\"vertexCountPerInstance\"><dd>  <p>Number of vertices to draw.</p> </dd></param>\t\n            <param name=\"instanceCount\"><dd>  <p>Number of instances to draw.</p> </dd></param>\t\n            <param name=\"startVertexLocation\"><dd>  <p>Index of the first vertex.</p> </dd></param>\t\n            <param name=\"startInstanceLocation\"><dd>  <p>Index of the first instance.</p> </dd></param>\t\n            <remarks>\t\n            <p>A draw API submits work to the rendering pipeline.</p><p>Instancing may extend performance by reusing the same geometry to draw multiple objects in a scene. One example of instancing could be to draw the same object with different positions and colors. For an example of instancing, see the Instancing10 Sample.</p><p>The vertex data for an instanced draw call normally comes from a vertex buffer that is bound to the pipeline. However, you could also provide the vertex data from a shader that has instanced data identified with a system-value semantic (SV_InstanceID).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::DrawInstanced']/*\"/>\t\n            <msdn-id>bb173567</msdn-id>\t\n            <unmanaged>void ID3D10Device::DrawInstanced([In] unsigned int VertexCountPerInstance,[In] unsigned int InstanceCount,[In] unsigned int StartVertexLocation,[In] unsigned int StartInstanceLocation)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::DrawInstanced</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Device.SetPredication(SharpDX.Direct3D10.Predicate,SharpDX.Bool)\">\n            <summary>\t\n            <p>Set a rendering predicate.</p>\t\n            </summary>\t\n            <param name=\"predicateRef\"><dd>  <p>Pointer to a predicate (see <strong><see cref=\"T:SharpDX.Direct3D10.Predicate\"/></strong>). A <strong><c>null</c></strong> value indicates \"no\" predication; in this case, the value of PredicateValue is irrelevent but will be preserved for <strong><see cref=\"M:SharpDX.Direct3D10.Device.GetPredication(System.Boolean@)\"/></strong>.</p> </dd></param>\t\n            <param name=\"predicateValue\"><dd>  <p>If <strong>TRUE</strong>, rendering will be affected by when the predicate's conditions are met. If <strong><see cref=\"F:SharpDX.Result.False\"/></strong>, rendering will be affected when the conditions are not met.</p> </dd></param>\t\n            <remarks>\t\n            <p>The predicate must be in the \"issued\" or \"signaled\" state to be used for predication. While the predicate is set for predication, calls to <strong><see cref=\"M:SharpDX.Direct3D10.Asynchronous.Begin\"/></strong> and <strong><see cref=\"M:SharpDX.Direct3D10.Asynchronous.End\"/></strong> are invalid.</p><p>This method is used to denote that subsequent rendering and resource manipulation commands are not actually performed if the resulting Predicate data of the Predicate is equal to the PredicateValue. However, some Predicates are only hints, so they may not actually prevent operations from being performed. </p><p>The primary usefulness of Predication is to allow an application to issue graphics commands without taking the performance hit of spinning, waiting for <strong><see cref=\"M:SharpDX.Direct3D10.Asynchronous.GetData\"/></strong> to return. So, Predication can occur while <strong><see cref=\"M:SharpDX.Direct3D10.Asynchronous.GetData\"/></strong> returns S_FALSE. Another way to think of it: an application can also use Predication as a fallback, if it is possible that <strong><see cref=\"M:SharpDX.Direct3D10.Asynchronous.GetData\"/></strong> returns S_FALSE. If <strong><see cref=\"M:SharpDX.Direct3D10.Asynchronous.GetData\"/></strong> returns <see cref=\"F:SharpDX.Result.Ok\"/>, the application can skip calling the graphics commands manually with it's own application logic.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::SetPredication']/*\"/>\t\n            <msdn-id>bb173615</msdn-id>\t\n            <unmanaged>void ID3D10Device::SetPredication([In, Optional] ID3D10Predicate* pPredicate,[In] BOOL PredicateValue)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::SetPredication</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Device.DrawAuto\">\n            <summary>\t\n            <p>Draw geometry of an unknown size that was created by the geometry shader stage. See remarks.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>A draw API submits work to the rendering pipeline.</p><p>After data has been streamed out to SO stage buffers, those buffers can be again bound to the Input Assembler stage at input slot 0 and DrawAuto will draw them without the application needing to know the amount of data that was written to the buffers. A measurement of the amount of data written to the SO stage buffers is maintained internally when the data is streamed out. This means that the CPU does not need to fetch the measurement before re-binding the data that was streamed as input data. Although this amount is tracked internally, it is still the responsibility of applications to use input layouts to describe the format of the data in the SO stage buffers so that the layouts are available when the buffers are again bound to the input assembler.</p><p>The following diagram shows the DrawAuto process.</p><p></p><p>Calling DrawAuto does not change the state of the streaming-output buffers that were bound again as inputs.</p><p>DrawAuto only works when drawing with one input buffer bound as an input to the IA stage at slot 0. Applications must create the SO buffer resource with both binding flags, <strong><see cref=\"F:SharpDX.Direct3D10.BindFlags.VertexBuffer\"/></strong> and <strong><see cref=\"F:SharpDX.Direct3D10.BindFlags.StreamOutput\"/></strong>.</p><p>This API does not support indexing or instancing.</p><p>If an application needs to retrieve the size of the streaming-output buffer, it can query for statistics on streaming output by using <strong><see cref=\"F:SharpDX.Direct3D10.QueryType.StreamOutputStatistics\"/></strong>.</p><p>Example of using DrawAuto can be found in the ParticlesGS Sample and PipesGS Sample.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::DrawAuto']/*\"/>\t\n            <msdn-id>bb173564</msdn-id>\t\n            <unmanaged>void ID3D10Device::DrawAuto()</unmanaged>\t\n            <unmanaged-short>ID3D10Device::DrawAuto</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Device.CopySubresourceRegion_(SharpDX.Direct3D10.Resource,System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D10.Resource,System.Int32,System.Nullable{SharpDX.Direct3D10.ResourceRegion})\">\n            <summary>\t\n            <p>Copy a region from a source resource to a destination resource.</p>\t\n            </summary>\t\n            <param name=\"dstResourceRef\"><dd>  <p>A reference to the destination resource (see <strong><see cref=\"T:SharpDX.Direct3D10.Resource\"/></strong>).</p> </dd></param>\t\n            <param name=\"dstSubresource\"><dd>  <p> Subresource index of the destination.</p> </dd></param>\t\n            <param name=\"dstX\"><dd>  <p>The x coordinate of the upper left corner of the destination region.</p> </dd></param>\t\n            <param name=\"dstY\"><dd>  <p>The y coordinate of the upper left corner of the destination region.</p> </dd></param>\t\n            <param name=\"dstZ\"><dd>  <p>The z coordinate of the upper left corner of the destination region. For a 1D or 2D subresource, this must be zero.</p> </dd></param>\t\n            <param name=\"srcResourceRef\"><dd>  <p>A reference to the source resource (see <strong><see cref=\"T:SharpDX.Direct3D10.Resource\"/></strong>).</p> </dd></param>\t\n            <param name=\"srcSubresource\"><dd>  <p> Subresource index of the source.</p> </dd></param>\t\n            <param name=\"srcBoxRef\"><dd>  <p>A 3D box (see <strong><see cref=\"T:SharpDX.Direct3D10.ResourceRegion\"/></strong>) that defines the source subresources that can be copied. If <strong><c>null</c></strong>, the entire source subresource is copied. The box must fit within the source resource.</p> </dd></param>\t\n            <remarks>\t\n            <p>The source box must be within the size of the source resource. The destination location is an absolute value (not a relative value). The destination location can be offset from the source location; however, the size of the region to copy (including the destination location) must fit in the destination resource.</p><p>If the resources are buffers, all coordinates are in bytes; if the resources are textures, all coordinates are in texels. </p><p> <strong>D3D10CalcSubresource</strong> is a helper function for calculating subresource indexes.</p><p><strong>CopySubresourceRegion</strong> performs the copy on the GPU (similar to a memcpy by the CPU). As a consequence, the source and destination resources must meet the following criteria:</p><ul> <li>Must be different subresources (although they can be from the same resource).</li> <li>Must be the same type.</li> <li>Must have compatible <strong>formats</strong> (the formats must either be identical or be from the same type group). For example, a <see cref=\"F:SharpDX.DXGI.Format.R32G32B32_Float\"/> texture can be copied to an <see cref=\"F:SharpDX.DXGI.Format.R32G32B32_UInt\"/> texture because both of these formats are in the <see cref=\"F:SharpDX.DXGI.Format.R32G32B32_Typeless\"/> group.</li> <li>May not be currently mapped.</li> </ul><p><strong>CopySubresourceRegion</strong> supports only copy; it does not support any stretch, color key, blend, or format conversions. An application that needs to copy an entire resource should use <strong><see cref=\"M:SharpDX.Direct3D10.Device.CopyResource_(SharpDX.Direct3D10.Resource,SharpDX.Direct3D10.Resource)\"/></strong> instead.</p><p><strong>CopySubresourceRegion</strong> is an asynchronous call that the runtime can add  to the command-buffer queue. This asynchronous behaviorattempts to remove pipeline stalls that may occur when copying data. See performance considerations for more details.</p><table> <tr><td> <p>Differences between Direct3D 10 and Direct3D 10.1:</p> <p>Direct3D 10 has the following limitations:</p> <ul> <li>You cannot use a depth-stencil resource as a destination.</li> <li>You cannot use an immutable resource as a destination.</li> <li>You cannot use a multisampled texture as either a source or a destination</li> </ul> <p>Direct3D 10.1 has added support for the following features:</p> <ul> <li>You can use a depth-stencil buffer as a source or a destination.</li> <li>You can use multisampled resources as  source and destination only if both source and destination have identical multisampled count and quality. If source and destination differ in multisampled count and quality or if the source is multisampled and the destination is not multisampled (or vice versa), the call to <strong><see cref=\"M:SharpDX.Direct3D10.Device.CopySubresourceRegion_(SharpDX.Direct3D10.Resource,System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D10.Resource,System.Int32,System.Nullable{SharpDX.Direct3D10.ResourceRegion})\"/></strong> fails.</li> <li>You can copy between uncompressed and compressed resources. During copy, the format conversions that are specified in  Format Conversion using Direct3D 10.1 are supported automatically. The uncompressed resource must be at least prestructured, and typed. You must also account for the difference between the virtual and the physical size of the mipmaps levels.</li> </ul> </td></tr> </table><p>?</p><p><strong>Note</strong>??If you use <strong>CopySubresourceRegion</strong> with a depth-stencil buffer or a multisampled resource, you must copy the whole subresource. You must also pass 0 to the <em>DstX</em>, <em>DstY</em>, and <em>DstZ</em> parameters and <strong><c>null</c></strong> to the <em>pSrcBox</em> parameter. In addition, source and destination resources, which are represented by the <em>pSrcResource</em> and <em>pDstResource</em> parameters respectively, must have identical sample count values.</p>Example<p>The following code snippet copies a box (located at (120,100),(200,220)) from a source texture into a reqion (130,120),(210,240) in a destination texture.</p><pre><code> <see cref=\"T:SharpDX.Direct3D10.ResourceRegion\"/> sourceRegion;\t\n            sourceRegion.left = 120;\t\n            sourceRegion.right = 200;\t\n            sourceRegion.top = 100;\t\n            sourceRegion.bottom = 220;\t\n            sourceRegion.front = 0;\t\n            sourceRegion.back = 1; pd3dDevice-&gt;CopySubresourceRegion( pDestTexture, 0, 130, 120, 0, pSourceTexture, 0, &amp;sourceRegion );\t\n            </code></pre><p>Notice that, for a 2D texture, front and back are always set to 0 and 1 respectively.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::CopySubresourceRegion']/*\"/>\t\n            <msdn-id>Bb173542</msdn-id>\t\n            <unmanaged>void ID3D10Device::CopySubresourceRegion([In] ID3D10Resource* pDstResource,[In] unsigned int DstSubresource,[In] unsigned int DstX,[In] unsigned int DstY,[In] unsigned int DstZ,[In] ID3D10Resource* pSrcResource,[In] unsigned int SrcSubresource,[In, Optional] const D3D10_BOX* pSrcBox)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::CopySubresourceRegion</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Device.CopyResource_(SharpDX.Direct3D10.Resource,SharpDX.Direct3D10.Resource)\">\n            <summary>\t\n            <p>Copy the entire contents of the source resource to the destination resource using the GPU. </p>\t\n            </summary>\t\n            <param name=\"dstResourceRef\"><dd>  <p>A reference to the destination resource (see <strong><see cref=\"T:SharpDX.Direct3D10.Resource\"/></strong>).</p> </dd></param>\t\n            <param name=\"srcResourceRef\"><dd>  <p>A reference to the source resource (see <strong><see cref=\"T:SharpDX.Direct3D10.Resource\"/></strong>).</p> </dd></param>\t\n            <remarks>\t\n            <p>This method is unusual in that it causes the GPU to perform the copy operation (similar to a memcpy by the CPU). As a result, it has a few restrictions designed for improving performance. For instance, the source and destination resources:</p><ul> <li>Must be different resources.</li> <li>Must be the same type.</li> <li>Must have identical dimensions (including width, height, depth, and size as appropriate).</li> <li>Will only be copied. CopyResource does not support any stretch, color key, blend, or format conversions.</li> <li>Must have compatible <strong>formats</strong>, which means the formats must be identical or at least from the same type group. For example, a <see cref=\"F:SharpDX.DXGI.Format.R32G32B32_Float\"/> texture can be copied to an <see cref=\"F:SharpDX.DXGI.Format.R32G32B32_UInt\"/> texture since both of these formats are in the <see cref=\"F:SharpDX.DXGI.Format.R32G32B32_Typeless\"/> group.</li> <li>May not be currently mapped.</li> </ul><p> <strong>Immutable</strong>, and <strong>depth-stencil</strong> resources cannot be used as a destination.  Resources created with <strong>multisampling capability</strong> cannot be used as either a source or destination.</p><p>The method is an asynchronous call which may be added to the command-buffer queue. This attempts to remove pipeline stalls that may occur when copying data. See performance considerations for more details.</p><p>An application that only needs to copy a portion of the data in a resource should use <strong><see cref=\"M:SharpDX.Direct3D10.Device.CopySubresourceRegion_(SharpDX.Direct3D10.Resource,System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D10.Resource,System.Int32,System.Nullable{SharpDX.Direct3D10.ResourceRegion})\"/></strong> instead.</p><table> <tr><td> <p>Differences between Direct3D 10 and Direct3D 10.1:</p> <p>Direct3D 10.1 enables depth-stencil resources to be used as either a source or destination. Direct3D 10.1 enables multisampled resources to be used as source and destination only if both source and destination have identical multisampled count and quality. If source and destination differ in multisampled count and quality or one of them is multisampled and the other is not multisampled, the call to <strong><see cref=\"M:SharpDX.Direct3D10.Device.CopyResource_(SharpDX.Direct3D10.Resource,SharpDX.Direct3D10.Resource)\"/></strong> fails.</p> <p>It is possible to copy between prestructured+typed resources and block-compressed textures. See Format Conversion using Direct3D 10.1.</p> </td></tr> </table><p>?</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::CopyResource']/*\"/>\t\n            <msdn-id>bb173541</msdn-id>\t\n            <unmanaged>void ID3D10Device::CopyResource([In] ID3D10Resource* pDstResource,[In] ID3D10Resource* pSrcResource)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::CopyResource</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Device.UpdateSubresource(SharpDX.Direct3D10.Resource,System.Int32,System.Nullable{SharpDX.Direct3D10.ResourceRegion},System.IntPtr,System.Int32,System.Int32)\">\n            <summary>\t\n            <p>The CPU copies data from memory to a subresource created in non-mappable memory. See remarks.</p>\t\n            </summary>\t\n            <param name=\"dstResourceRef\">No documentation.</param>\t\n            <param name=\"dstSubresource\">No documentation.</param>\t\n            <param name=\"dstBoxRef\">No documentation.</param>\t\n            <param name=\"srcDataRef\">No documentation.</param>\t\n            <param name=\"srcRowPitch\">No documentation.</param>\t\n            <param name=\"srcDepthPitch\">No documentation.</param>\t\n            <remarks>\t\n            <p>For a shader-constant buffer; set pDstBox to <strong><c>null</c></strong>. It is not possible to use this method to partially update a shader-constant buffer.</p><p>A resource cannot be used as a destination if:</p><ul> <li>the resource is created with <strong>immutable</strong> or <strong>dynamic</strong> usage.</li> <li>the resource is created as a depth-stencil resource.</li> <li>the resource is created with multisampling capability (see <strong><see cref=\"T:SharpDX.DXGI.SampleDescription\"/></strong>).</li> </ul><p>When UpdateSubresource returns, the application is free to change or even free the data pointed to by pSrcData because the method has already copied/snapped away the original contents.</p><p>The performance of UpdateSubresource depends on whether or not there is contention for the destination resource. For example, contention for a vertex buffer resource occurs when the application executes a Draw call and later calls UpdateSubresource on the same vertex buffer before the Draw call is actually executed by the GPU.</p><ul> <li>When there is contention for the resource, UpdateSubresource will perform 2 copies of the source data. First, the data is copied by the CPU to a temporary storage space accessible by the command buffer. This copy happens before the method returns.  A second copy is then performed by the GPU to copy the source data into non-mappable memory. This second copy happens asynchronously because it is executed by GPU when the command buffer is flushed.</li> <li>When there is no resource contention, the behavior of UpdateSubresource is dependent on which is faster (from the CPU's perspective): copying the data to the command buffer and then having a second copy execute when the command buffer is flushed, or having the CPU copy the data to the final resource location. This is dependent on the architecture of the underlying system.</li> </ul><p>To better understand the source row pitch and source depth pitch parameters, consider the following illustration of a 3D volume texture.</p><p></p><p>Each block in this visual represents an element of data, and the size of each element is dependent on the resource's format. For example, if the resource format is <see cref=\"F:SharpDX.DXGI.Format.R32G32B32A32_Float\"/>, then the size of each element would be 128 bits, or 16 bytes. This 3D volume texture has a width of two, a height of three, and a depth of four.</p><p>To calculate the source row pitch and source depth pitch for a given resource, use the following formulas:</p><ul> <li>Source Row Pitch = [size of one element in bytes] * [number of elements in one row]</li> <li>Source Depth Pitch = [Source Row Pitch] * [number of rows (height)]</li> </ul><p>In the case of this example 3D volume texture where the size of each element is 16 bytes, the formulas are as follows:</p><ul> <li>Source Row Pitch = 16 * 2 = 32</li> <li>Source Depth Pitch = 16 * 2 * 3 = 96</li> </ul><p>The following illustration shows the resource as it is laid out in memory.</p><p></p><p>For example, the following code snippet shows how to specify a destination region in a 2D texture. Assume the destination texture is 512x512 and the operation will copy the data pointed to by pData to  [(120,100)..(200,220)] in the destination texture. Also assume that rowPitch has been initialized with the proper value (as explained above). Front and back are set to 0 and 1 respectively, because by having front equal to back, the box is technically empty.</p><pre><code> <see cref=\"T:SharpDX.Direct3D10.ResourceRegion\"/> destRegion;\t\n            destRegion.left = 120;\t\n            destRegion.right = 200;\t\n            destRegion.top = 100;\t\n            destRegion.bottom = 220;\t\n            destRegion.front = 0;\t\n            destRegion.back = 1; pd3dDevice-&gt;UpdateSubresource( pDestTexture, 0, &amp;destRegion, pData, rowPitch, 0 );\t\n            </code></pre><p>The 1D case is similar. The following snippet shows how to specify a destination region in a 1D texture. Use the same assumptions as above, except that the texture is 512 in length.</p><pre><code> <see cref=\"T:SharpDX.Direct3D10.ResourceRegion\"/> destRegion;\t\n            destRegion.left = 120\t\n            destRegion.right = 200;\t\n            destRegion.top = 0;\t\n            destRegion.bottom = 1;\t\n            destRegion.front = 0;\t\n            destRegion.back = 1; pd3dDevice-&gt;UpdateSubresource( pDestTexture, 0, &amp;destRegion, pData, rowPitch, 0 );\t\n            </code></pre><table> <tr><td> <p>Differences between Direct3D 10 and Direct3D 10.1:</p> <p>Direct3D 10.1 enables depth-stencil resources to be used as either a source or destination.</p> </td></tr> </table><p>?</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::UpdateSubresource']/*\"/>\t\n            <msdn-id>bb173621</msdn-id>\t\n            <unmanaged>void ID3D10Device::UpdateSubresource([In] ID3D10Resource* pDstResource,[In] unsigned int DstSubresource,[In, Optional] const D3D10_BOX* pDstBox,[In] const void* pSrcData,[In] unsigned int SrcRowPitch,[In] unsigned int SrcDepthPitch)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::UpdateSubresource</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Device.ClearRenderTargetView(SharpDX.Direct3D10.RenderTargetView,SharpDX.Color4)\">\n            <summary>\t\n            <p>Set all the elements in a render target to one value.</p>\t\n            </summary>\t\n            <param name=\"renderTargetViewRef\"><dd>  <p>Pointer to the rendertarget.</p> </dd></param>\t\n            <param name=\"colorRGBA\"><dd>  <p>A 4-component array that represents the color to fill the render target with.</p> </dd></param>\t\n            <remarks>\t\n            <p>Applications that wish to clear a render target to a specific integer value bit pattern should render a screen-aligned quad instead of using this method.  The reason for this is because this method accepts as input a floating point value, which may not have the same bit pattern as the original integer.</p><table> <tr><td> <p>Differences between Direct3D 9 and Direct3D 10:</p> <p>Unlike Direct3D 9, the full extent of the resource view is always cleared. Viewport and scissor settings are not applied.</p> </td></tr> </table><p>?</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::ClearRenderTargetView']/*\"/>\t\n            <msdn-id>bb173539</msdn-id>\t\n            <unmanaged>void ID3D10Device::ClearRenderTargetView([In] ID3D10RenderTargetView* pRenderTargetView,[In] const SHARPDX_COLOR4* ColorRGBA)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::ClearRenderTargetView</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Device.ClearDepthStencilView(SharpDX.Direct3D10.DepthStencilView,SharpDX.Direct3D10.DepthStencilClearFlags,System.Single,System.Byte)\">\n            <summary>\t\n            <p>Clears the depth-stencil resource.</p>\t\n            </summary>\t\n            <param name=\"depthStencilViewRef\"><dd>  <p>Pointer to the depth stencil to be cleared.</p> </dd></param>\t\n            <param name=\"clearFlags\"><dd>  <p>Which parts of the buffer to clear. See <strong><see cref=\"T:SharpDX.Direct3D10.DepthStencilClearFlags\"/></strong>.</p> </dd></param>\t\n            <param name=\"depth\"><dd>  <p>Clear the depth buffer with this value. This value will be clamped between 0 and 1.</p> </dd></param>\t\n            <param name=\"stencil\"><dd>  <p>Clear the stencil buffer with this value.</p> </dd></param>\t\n            <remarks>\t\n            <table> <tr><td> <p>Differences between Direct3D 9 and Direct3D 10:</p> <p>Unlike Direct3D 9, the full extent of the resource view is always cleared. Viewport and scissor settings are not applied.</p> </td></tr> </table><p>?</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::ClearDepthStencilView']/*\"/>\t\n            <msdn-id>Bb173538</msdn-id>\t\n            <unmanaged>void ID3D10Device::ClearDepthStencilView([In] ID3D10DepthStencilView* pDepthStencilView,[In] D3D10_CLEAR_FLAG ClearFlags,[In] float Depth,[In] unsigned char Stencil)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::ClearDepthStencilView</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Device.GenerateMips(SharpDX.Direct3D10.ShaderResourceView)\">\n            <summary>\t\n            <p>Generate mipmaps for the given shader resource.</p>\t\n            </summary>\t\n            <param name=\"shaderResourceViewRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D10.ShaderResourceView\"/> Interface</strong>. The mipmaps will be generated for this shader resource.</p> </dd></param>\t\n            <remarks>\t\n            <p>GenerateMips may be called on any <see cref=\"T:SharpDX.Direct3D10.ShaderResourceView\"/> in order to generate the lower mipmap levels. GenerateMips uses the largest mipmap level of the view to recursively generate the lower levels of the mip, stopping with the smallest level specified by the view. If the base resource was not created with <strong><see cref=\"F:SharpDX.Direct3D10.BindFlags.RenderTarget\"/></strong> and <strong><see cref=\"F:SharpDX.Direct3D10.ResourceOptionFlags.GenerateMipMaps\"/></strong>, this call has no effect.</p><p>All video adapters will automatically generate mipmaps if you are using one of the following formats:</p><pre><code> <see cref=\"F:SharpDX.DXGI.Format.A8_UNorm\"/>\t\n            <see cref=\"F:SharpDX.DXGI.Format.R10G10B10A2_UNorm\"/>\t\n            <see cref=\"F:SharpDX.DXGI.Format.R11G11B10_Float\"/>\t\n            <see cref=\"F:SharpDX.DXGI.Format.R16_Float\"/>\t\n            <see cref=\"F:SharpDX.DXGI.Format.R16_SNorm\"/>\t\n            <see cref=\"F:SharpDX.DXGI.Format.R16_UNorm\"/>\t\n            <see cref=\"F:SharpDX.DXGI.Format.R16G16_Float\"/>\t\n            <see cref=\"F:SharpDX.DXGI.Format.R16G16_SNorm\"/>\t\n            <see cref=\"F:SharpDX.DXGI.Format.R16G16_UNorm\"/>\t\n            <see cref=\"F:SharpDX.DXGI.Format.R16G16B16A16_Float\"/>\t\n            <see cref=\"F:SharpDX.DXGI.Format.R16G16B16A16_SNorm\"/>\t\n            <see cref=\"F:SharpDX.DXGI.Format.R16G16B16A16_UNorm\"/>\t\n            <see cref=\"F:SharpDX.DXGI.Format.R32_Float\"/>\t\n            <see cref=\"F:SharpDX.DXGI.Format.R32G32_Float\"/>\t\n            <see cref=\"F:SharpDX.DXGI.Format.R32G32B32A32_Float\"/>\t\n            <see cref=\"F:SharpDX.DXGI.Format.R8_SNorm\"/>\t\n            <see cref=\"F:SharpDX.DXGI.Format.R8_UNorm\"/>\t\n            <see cref=\"F:SharpDX.DXGI.Format.R8G8_SNorm\"/>\t\n            <see cref=\"F:SharpDX.DXGI.Format.R8G8_UNorm\"/>\t\n            <see cref=\"F:SharpDX.DXGI.Format.R8G8B8A8_SNorm\"/>\t\n            <see cref=\"F:SharpDX.DXGI.Format.R8G8B8A8_UNorm\"/>\t\n            <see cref=\"F:SharpDX.DXGI.Format.R8G8B8A8_UNorm_SRgb\"/>\t\n            </code></pre><p>Some video adapters will automatically generate mipmaps for this format.</p><pre><code> <see cref=\"F:SharpDX.DXGI.Format.R32G32B32_Float\"/>\t\n            </code></pre><p>For all other unsupported formats, this method will silently fail.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::GenerateMips']/*\"/>\t\n            <msdn-id>bb173569</msdn-id>\t\n            <unmanaged>void ID3D10Device::GenerateMips([In] ID3D10ShaderResourceView* pShaderResourceView)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::GenerateMips</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Device.ResolveSubresource_(SharpDX.Direct3D10.Resource,System.Int32,SharpDX.Direct3D10.Resource,System.Int32,SharpDX.DXGI.Format)\">\n            <summary>\t\n            <p>Copy a multisampled resource into a non-multisampled resource. This API is most useful when re-using the resulting rendertarget of one render pass as an input to a second render pass.</p>\t\n            </summary>\t\n            <param name=\"dstResourceRef\"><dd>  <p>Destination resource. Must be a created with the <strong><see cref=\"F:SharpDX.Direct3D10.ResourceUsage.Default\"/></strong> flag and be single-sampled. See <strong><see cref=\"T:SharpDX.Direct3D10.Resource\"/></strong>.</p> </dd></param>\t\n            <param name=\"dstSubresource\"><dd>  <p>A zero-based index, that identifies the destination subresource. See <strong>D3D10CalcSubresource</strong> for more details.</p> </dd></param>\t\n            <param name=\"srcResourceRef\"><dd>  <p>Source resource. Must be multisampled.</p> </dd></param>\t\n            <param name=\"srcSubresource\"><dd>  <p>The source subresource of the source resource.</p> </dd></param>\t\n            <param name=\"format\"><dd>  <p> <strong><see cref=\"T:SharpDX.DXGI.Format\"/></strong> that indicates how the multisampled resource will be resolved to a single-sampled resource. See remarks.</p> </dd></param>\t\n            <remarks>\t\n            <p>Both the source and destination resources must be the same resource type and have the same dimensions.</p><p>The source and destination must have compatible formats. There are three scenarios for this:</p><table> <tr><th>Scenario</th><th>Requirements</th></tr> <tr><td>Source and destination are prestructured and typed</td><td>Both the source and destination must have identical formats and that format must be specified in the Format parameter.</td></tr> <tr><td>One resource is prestructured and typed and the other is prestructured and typeless</td><td>The typed resource must have a format that is compatible with the typeless resource (i.e. the typed resource is <see cref=\"F:SharpDX.DXGI.Format.R32_Float\"/> and the typeless resource is <see cref=\"F:SharpDX.DXGI.Format.R32_Typeless\"/>). The format of the typed resource must be specified in the Format parameter.</td></tr> <tr><td>Source and destination are prestructured and typeless</td><td>Both the source and desintation must have the same typeless format (i.e. both must have <see cref=\"F:SharpDX.DXGI.Format.R32_Typeless\"/>), and the Format parameter must specify a format that is compatible with the source and destination (i.e. if both are <see cref=\"F:SharpDX.DXGI.Format.R32_Typeless\"/> then <see cref=\"F:SharpDX.DXGI.Format.R32_Float\"/> or <see cref=\"F:SharpDX.DXGI.Format.R32_UInt\"/> could be specified in the Format parameter).</td></tr> </table><p>?</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::ResolveSubresource']/*\"/>\t\n            <msdn-id>bb173607</msdn-id>\t\n            <unmanaged>void ID3D10Device::ResolveSubresource([In] ID3D10Resource* pDstResource,[In] unsigned int DstSubresource,[In] ID3D10Resource* pSrcResource,[In] unsigned int SrcSubresource,[In] DXGI_FORMAT Format)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::ResolveSubresource</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Device.GetPredication(SharpDX.Direct3D10.Predicate@,SharpDX.Bool@)\">\n            <summary>\t\n            <p>Get the rendering predicate state.</p>\t\n            </summary>\t\n            <param name=\"predicateOut\"><dd>  <p>Address of a reference to a predicate (see <strong><see cref=\"T:SharpDX.Direct3D10.Predicate\"/></strong>). Value stored here will be <strong><c>null</c></strong> upon device creation.</p> </dd></param>\t\n            <param name=\"predicateValueRef\"><dd>  <p>Address of a boolean to fill with the predicate comparison value. <strong><see cref=\"F:SharpDX.Result.False\"/></strong> upon device creation.</p> </dd></param>\t\n            <remarks>\t\n            <p>Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::GetPredication']/*\"/>\t\n            <msdn-id>bb173573</msdn-id>\t\n            <unmanaged>void ID3D10Device::GetPredication([Out, Optional] ID3D10Predicate** ppPredicate,[Out, Optional] BOOL* pPredicateValue)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::GetPredication</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Device.GetDeviceRemovedReason\">\n            <summary>\t\n            <p>Get the reason why the device was removed.</p>\t\n            </summary>\t\n            <returns><p>Possible return values include:  </p><ul> <li><see cref=\"F:SharpDX.DXGI.ResultCode.DeviceHung\"/></li> <li><see cref=\"F:SharpDX.DXGI.ResultCode.DeviceRemoved\"/></li> <li><see cref=\"F:SharpDX.DXGI.ResultCode.DeviceReset\"/></li> <li><see cref=\"F:SharpDX.DXGI.ResultCode.DriverInternalError\"/></li> <li><see cref=\"F:SharpDX.DXGI.ResultCode.InvalidCall\"/></li> <li><see cref=\"F:SharpDX.Result.Ok\"/></li> </ul><p>For more detail on these return codes, see DXGI_ERROR.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::GetDeviceRemovedReason']/*\"/>\t\n            <msdn-id>bb173571</msdn-id>\t\n            <unmanaged>HRESULT ID3D10Device::GetDeviceRemovedReason()</unmanaged>\t\n            <unmanaged-short>ID3D10Device::GetDeviceRemovedReason</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Device.SetExceptionMode(System.Int32)\">\n            <summary>\t\n            <p>Get the exception-mode flags.</p>\t\n            </summary>\t\n            <param name=\"raiseFlags\"><dd>  <p>A value that contains one or more exception flags; each flag specifies a condition which will cause an exception to be raised. The flags are listed in <strong>D3D10_RAISE_FLAG</strong>. A default value of 0 means there are no flags.</p> </dd></param>\t\n            <returns><p>This method returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>Set an exception-mode flag to elevate an error condition to a non-continuable exception. </p><p>Whenever an error occurs, a Direct3D device enters the DEVICEREMOVED state and if the appropriate exception flag has been set, an exception is raised. A raised exception is designed to terminate an application. Before termination, the last chance an application has to persist data is by using an UnhandledExceptionFilter (see Structured Exception Handling). In general, UnhandledExceptionFilters are leveraged to try to persist data when an application is crashing (to disk, for example). Any code that executes during an UnhandledExceptionFilter is not guaranteed to reliably execute (due to possible process corruption). Any data that the UnhandledExceptionFilter manages to persist, before the UnhandledExceptionFilter crashes again, should be treated as suspect, and therefore inspected by a new, non-corrupted process to see if it is usable.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::SetExceptionMode']/*\"/>\t\n            <msdn-id>bb173614</msdn-id>\t\n            <unmanaged>HRESULT ID3D10Device::SetExceptionMode([In] unsigned int RaiseFlags)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::SetExceptionMode</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Device.GetExceptionMode\">\n            <summary>\t\n            <p>Get the exception-mode flags.</p>\t\n            </summary>\t\n            <returns><p>A value that contains one or more exception flags; each flag specifies a condition which will cause an exception to be raised. The flags are listed in <strong>D3D10_RAISE_FLAG</strong>. A default value of 0 means there are no flags.</p></returns>\t\n            <remarks>\t\n            <p>An exception-mode flag is used to elevate an error condition to a non-continuable exception. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::GetExceptionMode']/*\"/>\t\n            <msdn-id>bb173572</msdn-id>\t\n            <unmanaged>unsigned int ID3D10Device::GetExceptionMode()</unmanaged>\t\n            <unmanaged-short>ID3D10Device::GetExceptionMode</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Device.GetPrivateData(System.Guid,System.Int32@,System.IntPtr)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"guid\">No documentation.</param>\t\n            <param name=\"dataSizeRef\">No documentation.</param>\t\n            <param name=\"dataRef\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::GetPrivateData']/*\"/>\t\n            <unmanaged>HRESULT ID3D10Device::GetPrivateData([In] const GUID&amp; guid,[InOut] unsigned int* pDataSize,[Out, Buffer, Optional] void* pData)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::GetPrivateData</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Device.SetPrivateData(System.Guid,System.Int32,System.IntPtr)\">\n            <summary>\t\n            <p>Set data to a device and associate that data with a guid.</p>\t\n            </summary>\t\n            <param name=\"guid\"><dd>  <p>Guid associated with the data.</p> </dd></param>\t\n            <param name=\"dataSize\"><dd>  <p>Size of the data.</p> </dd></param>\t\n            <param name=\"dataRef\"><dd>  <p>Pointer to the data to be stored with this device. If pData is <strong><c>null</c></strong>, DataSize must also be 0, and any data previously associated with the guid will be destroyed.</p> </dd></param>\t\n            <returns><p>This method returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>The data stored in the device with this method can be retrieved with <strong><see cref=\"M:SharpDX.Direct3D10.DeviceChild.GetPrivateData(System.Guid,System.Int32@,System.IntPtr)\"/></strong>.</p><p>The data and guid set with this method will typically be application-defined.</p><p>If an application uses this method to change the device type using GUID_DeviceType, results are undefined. However, GUID_DeviceType can be used to retrieve the device type using <strong><see cref=\"M:SharpDX.Direct3D10.DeviceChild.GetPrivateData(System.Guid,System.Int32@,System.IntPtr)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::SetPrivateData']/*\"/>\t\n            <msdn-id>bb173616</msdn-id>\t\n            <unmanaged>HRESULT ID3D10Device::SetPrivateData([In] const GUID&amp; guid,[In] unsigned int DataSize,[In, Buffer, Optional] const void* pData)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::SetPrivateData</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Device.SetPrivateDataInterface(System.Guid,SharpDX.ComObject)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"guid\">No documentation.</param>\t\n            <param name=\"dataRef\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::SetPrivateDataInterface']/*\"/>\t\n            <unmanaged>HRESULT ID3D10Device::SetPrivateDataInterface([In] const GUID&amp; guid,[In, Optional] const IUnknown* pData)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::SetPrivateDataInterface</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Device.ClearState\">\n            <summary>\t\n            <p>Restore all default device settings; return the device to the state it was in when it was created. This will set all set all input/output resource slots, shaders, input layouts, predications, scissor rectangles, depth-stencil state, rasterizer state, blend state, sampler state, and viewports to <strong><c>null</c></strong>. The primitive topology will be set to UNDEFINED.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::ClearState']/*\"/>\t\n            <msdn-id>bb173540</msdn-id>\t\n            <unmanaged>void ID3D10Device::ClearState()</unmanaged>\t\n            <unmanaged-short>ID3D10Device::ClearState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Device.Flush\">\n            <summary>\t\n            <p>Send queued-up commands in the command buffer to the GPU.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Most applications will not need to call this method. Calling this method when not necessary will incur a performance penalty. Each call to <strong>Flush</strong> incurs a significant amount of overhead.</p><p>When Direct3D state-setting, present, or draw commands are called by an application, those commands are queued into an internal command buffer. <strong>Flush</strong> sends those commands to the GPU for processing. Normally, these commands are sent to the GPU automatically whenever Direct3D determines that they need to be, such as when the command buffer is full or when mapping a resource. <strong>Flush</strong> will send the commands manually.</p><p><strong>Flush</strong> should be used when the CPU waits for an arbitrary amount of time (such as when calling Sleep, <strong>ID3DX10ThreadPump::WaitForAllItems</strong>, or <strong>WaitForVBlank</strong>.</p><p>For more information about how flushing works, see Accurately Profiling Direct3D API Calls (Direct3D 9).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::Flush']/*\"/>\t\n            <msdn-id>bb173568</msdn-id>\t\n            <unmanaged>void ID3D10Device::Flush()</unmanaged>\t\n            <unmanaged-short>ID3D10Device::Flush</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Device.CreateBuffer(SharpDX.Direct3D10.BufferDescription@,System.Nullable{SharpDX.DataBox},SharpDX.Direct3D10.Buffer)\">\n            <summary>\t\n            <p>Create a buffer (vertex buffer, index buffer, or shader-constant buffer).</p>\t\n            </summary>\t\n            <param name=\"descRef\">No documentation.</param>\t\n            <param name=\"initialDataRef\">No documentation.</param>\t\n            <param name=\"bufferOut\">No documentation.</param>\t\n            <returns><p>This method returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>For example code, see:</p><ul> <li> Create a Vertex Buffer </li> <li> Create an Index Buffer </li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::CreateBuffer']/*\"/>\t\n            <msdn-id>bb173544</msdn-id>\t\n            <unmanaged>HRESULT ID3D10Device::CreateBuffer([In] const D3D10_BUFFER_DESC* pDesc,[In, Optional] const D3D10_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D10Buffer** ppBuffer)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::CreateBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Device.CreateTexture1D(SharpDX.Direct3D10.Texture1DDescription@,SharpDX.DataBox[],SharpDX.Direct3D10.Texture1D)\">\n            <summary>\t\n            <p>Create an array of 1D textures (see Texture1D).</p>\t\n            </summary>\t\n            <param name=\"descRef\">No documentation.</param>\t\n            <param name=\"initialDataRef\">No documentation.</param>\t\n            <param name=\"texture1DOut\">No documentation.</param>\t\n            <returns><p>If the method succeeds, the return code is <see cref=\"F:SharpDX.Result.Ok\"/>. See Direct3D 10 Return Codes for failing error codes.</p></returns>\t\n            <remarks>\t\n            <p>CreateTexture1D creates a 1D texture resource, which contains an array of 1D textures. The number of textures is specified in the texture description. All textures in a resource must have the same format, size, and number of mipmap levels.</p><p>All resources are made up of one or more subresources. To load data into the texture, applications may supply the data initially as part of <strong><see cref=\"T:SharpDX.DataBox\"/></strong> structure pointed to by pInitialData, or it may use one of the Texturing Functions supplied by the SDK.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::CreateTexture1D']/*\"/>\t\n            <msdn-id>bb173559</msdn-id>\t\n            <unmanaged>HRESULT ID3D10Device::CreateTexture1D([In] const D3D10_TEXTURE1D_DESC* pDesc,[In, Buffer, Optional] const D3D10_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D10Texture1D** ppTexture1D)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::CreateTexture1D</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Device.CreateTexture2D(SharpDX.Direct3D10.Texture2DDescription@,SharpDX.DataBox[],SharpDX.Direct3D10.Texture2D)\">\n            <summary>\t\n            <p>Create an array of 2D textures (see Texture2D).</p>\t\n            </summary>\t\n            <param name=\"descRef\">No documentation.</param>\t\n            <param name=\"initialDataRef\">No documentation.</param>\t\n            <param name=\"texture2DOut\">No documentation.</param>\t\n            <returns><p>If the method succeeds, the return code is <see cref=\"F:SharpDX.Result.Ok\"/>. See Direct3D 10 Return Codes for failing error codes.</p></returns>\t\n            <remarks>\t\n            <p>CreateTexture2D creates a 2D texture resource, which contains an array of 1D textures. The number of textures is specified in the texture description. All textures in a resource must have the same format, size, and number of mipmap levels.</p><p>All resources are made up of one or more subresources. To load data into the texture, applications may supply the data initially as part of <strong><see cref=\"T:SharpDX.DataBox\"/></strong> structure pointed to by pInitialData, or it may use one of the Texturing Functions supplied by the SDK.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::CreateTexture2D']/*\"/>\t\n            <msdn-id>bb173560</msdn-id>\t\n            <unmanaged>HRESULT ID3D10Device::CreateTexture2D([In] const D3D10_TEXTURE2D_DESC* pDesc,[In, Buffer, Optional] const D3D10_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D10Texture2D** ppTexture2D)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::CreateTexture2D</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Device.CreateTexture3D(SharpDX.Direct3D10.Texture3DDescription@,SharpDX.DataBox[],SharpDX.Direct3D10.Texture3D)\">\n            <summary>\t\n            <p>Create a single 3D texture (see Texture3D).</p>\t\n            </summary>\t\n            <param name=\"descRef\">No documentation.</param>\t\n            <param name=\"initialDataRef\">No documentation.</param>\t\n            <param name=\"texture3DOut\">No documentation.</param>\t\n            <returns><p>If the method succeeds, the return code is <see cref=\"F:SharpDX.Result.Ok\"/>. See Direct3D 10 Return Codes for failing error codes.</p></returns>\t\n            <remarks>\t\n            <p>CreateTexture3D creates a 3D texture resource, which contains an array of 1D textures. The number of textures is specified in the texture description. All textures in a resource must have the same format, size, and number of mipmap levels.</p><p>All resources are made up of one or more subresources. To load data into the texture, applications may supply the data initially as part of <strong><see cref=\"T:SharpDX.DataBox\"/></strong> structure pointed to by pInitialData, or it may use one of the Texturing Functions supplied by the SDK.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::CreateTexture3D']/*\"/>\t\n            <msdn-id>bb173561</msdn-id>\t\n            <unmanaged>HRESULT ID3D10Device::CreateTexture3D([In] const D3D10_TEXTURE3D_DESC* pDesc,[In, Buffer, Optional] const D3D10_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D10Texture3D** ppTexture3D)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::CreateTexture3D</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Device.CreateShaderResourceView(SharpDX.Direct3D10.Resource,System.Nullable{SharpDX.Direct3D10.ShaderResourceViewDescription},SharpDX.Direct3D10.ShaderResourceView)\">\n            <summary>\t\n            <p>Create a shader-resource view for accessing data in a resource.</p>\t\n            </summary>\t\n            <param name=\"resourceRef\">No documentation.</param>\t\n            <param name=\"descRef\">No documentation.</param>\t\n            <param name=\"sRViewOut\">No documentation.</param>\t\n            <returns><p>This method returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>A resource is made up of one or more subresources, a view identifies which subresources to allow the pipeline to access. In addition, each resource is bound to the pipeline using a view. A shader-resource view is designed to bind any buffer or texture resource to the shader stages using the following API methods: <strong>VSSetShaderResources</strong>, <strong>GSSetShaderResources</strong> and <strong>PSSetShaderResources</strong>.</p><p>Since a view is fully typed, this means that typeless resources become fully typed when bound to the pipeline.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::CreateShaderResourceView']/*\"/>\t\n            <msdn-id>bb173558</msdn-id>\t\n            <unmanaged>HRESULT ID3D10Device::CreateShaderResourceView([In] ID3D10Resource* pResource,[In, Optional] const D3D10_SHADER_RESOURCE_VIEW_DESC* pDesc,[Out, Fast] ID3D10ShaderResourceView** ppSRView)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::CreateShaderResourceView</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Device.CreateRenderTargetView(SharpDX.Direct3D10.Resource,System.Nullable{SharpDX.Direct3D10.RenderTargetViewDescription},SharpDX.Direct3D10.RenderTargetView)\">\n            <summary>\t\n            <p>Create a render-target view for accessing resource data.</p>\t\n            </summary>\t\n            <param name=\"resourceRef\">No documentation.</param>\t\n            <param name=\"descRef\">No documentation.</param>\t\n            <param name=\"rTViewOut\">No documentation.</param>\t\n            <returns><p>This method returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>A rendertarget view can be bound to the output merger stage by calling <strong><see cref=\"M:SharpDX.Direct3D10.OutputMergerStage.SetRenderTargets(System.Int32,SharpDX.Direct3D10.RenderTargetView[],SharpDX.Direct3D10.DepthStencilView)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::CreateRenderTargetView']/*\"/>\t\n            <msdn-id>bb173556</msdn-id>\t\n            <unmanaged>HRESULT ID3D10Device::CreateRenderTargetView([In] ID3D10Resource* pResource,[In, Optional] const D3D10_RENDER_TARGET_VIEW_DESC* pDesc,[Out, Fast] ID3D10RenderTargetView** ppRTView)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::CreateRenderTargetView</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Device.CreateDepthStencilView(SharpDX.Direct3D10.Resource,System.Nullable{SharpDX.Direct3D10.DepthStencilViewDescription},SharpDX.Direct3D10.DepthStencilView)\">\n            <summary>\t\n            <p>Create a depth-stencil view for accessing resource data.</p>\t\n            </summary>\t\n            <param name=\"resourceRef\">No documentation.</param>\t\n            <param name=\"descRef\">No documentation.</param>\t\n            <param name=\"depthStencilViewOut\">No documentation.</param>\t\n            <returns><p>This method returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>A depth-stencil view can be bound to the output-merger stage by calling <strong><see cref=\"M:SharpDX.Direct3D10.OutputMergerStage.SetRenderTargets(System.Int32,SharpDX.Direct3D10.RenderTargetView[],SharpDX.Direct3D10.DepthStencilView)\"/></strong>.</p><p>For more background information, see the programming guide page about depth stencils.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::CreateDepthStencilView']/*\"/>\t\n            <msdn-id>bb173547</msdn-id>\t\n            <unmanaged>HRESULT ID3D10Device::CreateDepthStencilView([In] ID3D10Resource* pResource,[In, Optional] const D3D10_DEPTH_STENCIL_VIEW_DESC* pDesc,[Out, Fast] ID3D10DepthStencilView** ppDepthStencilView)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::CreateDepthStencilView</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Device.CreateInputLayout(SharpDX.Direct3D10.InputElement[],System.Int32,System.IntPtr,SharpDX.PointerSize,SharpDX.Direct3D10.InputLayout)\">\n            <summary>\t\n            <p>Create an input-layout object to describe the input-buffer data for the input-assembler stage.</p>\t\n            </summary>\t\n            <param name=\"inputElementDescsRef\">No documentation.</param>\t\n            <param name=\"numElements\">No documentation.</param>\t\n            <param name=\"shaderBytecodeWithInputSignatureRef\">No documentation.</param>\t\n            <param name=\"bytecodeLength\">No documentation.</param>\t\n            <param name=\"inputLayoutOut\">No documentation.</param>\t\n            <returns><p>If the method succeeds, the return code is <see cref=\"F:SharpDX.Result.Ok\"/>. See Direct3D 10 Return Codes for failing error codes.</p></returns>\t\n            <remarks>\t\n            <p>After creating an input layout object, it must be bound to the input-assembler stage before calling a draw API. See Getting Started with the Input-Assembler Stage (Direct3D 10) for example code.</p><p>Once an input-layout object is created from a shader signature, the input-layout object can be reused with any other shader that has an identical input signature (semantics included). This can simplify the creation of input-layout objects when you are working with many shaders with identical inputs.</p><p>If a data type in the input-layout declaration does not match the data type in a shader-input signature, CreateInputLayout will generate a warning during compilation. The warning is simply to call attention to the fact that the data may be reinterpreted when read from a register. You may either disregard this warning (if reinterpretation is intentional) or make the data types match in both declarations to eliminate the warning.  The Data Conversion Rules overview describes the rules applied for data type conversion.</p><table> <tr><td> <p>Differences between Direct3D 9 and Direct3D 10:</p> <p>Mapping the vertex data to the shader inputs with an input layout is a new way of doing things in Direct3D 10 that improves performance.</p> <p>In Direct3D 10 the vertex data is mapped to the shader inputs when the input layout object is created, whereas in Direct3D 9 this mapping was done at Draw time based on the currently bound vertex declarations, vertex buffers, and vertex shaders. Doing this mapping when the input layout object is created reduces or eliminates extra linkage work for drivers at Draw time because this re-mapping is no longer necessary.</p> </td></tr> </table><p>?</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::CreateInputLayout']/*\"/>\t\n            <msdn-id>bb173550</msdn-id>\t\n            <unmanaged>HRESULT ID3D10Device::CreateInputLayout([In, Buffer] const D3D10_INPUT_ELEMENT_DESC* pInputElementDescs,[In] unsigned int NumElements,[In] const void* pShaderBytecodeWithInputSignature,[In] SIZE_T BytecodeLength,[Out, Fast] ID3D10InputLayout** ppInputLayout)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::CreateInputLayout</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Device.CreateVertexShader(System.IntPtr,SharpDX.PointerSize,SharpDX.Direct3D10.VertexShader)\">\n            <summary>\t\n            <p>Create a vertex-shader object from a compiled shader.</p>\t\n            </summary>\t\n            <param name=\"shaderBytecodeRef\"><dd>  <p>A reference to the compiled shader. To get this reference see Getting a Pointer to a Compiled Shader.</p> </dd></param>\t\n            <param name=\"bytecodeLength\"><dd>  <p>Size of the compiled vertex shader.</p> </dd></param>\t\n            <param name=\"vertexShaderOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D10.VertexShader\"/> Interface</strong>. If this is <strong><c>null</c></strong>, all other parameters will be validated, and if all parameters pass validation this API will return S_FALSE instead of <see cref=\"F:SharpDX.Result.Ok\"/>.</p> </dd></param>\t\n            <returns><p>This method returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::CreateVertexShader']/*\"/>\t\n            <msdn-id>bb173562</msdn-id>\t\n            <unmanaged>HRESULT ID3D10Device::CreateVertexShader([In] const void* pShaderBytecode,[In] SIZE_T BytecodeLength,[Out, Fast] ID3D10VertexShader** ppVertexShader)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::CreateVertexShader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Device.CreateGeometryShader(System.IntPtr,SharpDX.PointerSize,SharpDX.Direct3D10.GeometryShader)\">\n            <summary>\t\n            <p>Create a geometry shader.</p>\t\n            </summary>\t\n            <param name=\"shaderBytecodeRef\"><dd>  <p>A reference to the compiled shader. To get this reference see Getting a Pointer to a Compiled Shader.</p> </dd></param>\t\n            <param name=\"bytecodeLength\"><dd>  <p>Size of the compiled geometry shader.</p> </dd></param>\t\n            <param name=\"geometryShaderOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D10.GeometryShader\"/> Interface</strong>.  If this is <strong><c>null</c></strong>, all other parameters will be validated, and if all parameters pass validation this API will return S_FALSE instead of <see cref=\"F:SharpDX.Result.Ok\"/>.</p> </dd></param>\t\n            <returns><p>This method returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>Once created, the shader can be set to the device by calling <strong><see cref=\"M:SharpDX.Direct3D10.GeometryShaderStage.Set(SharpDX.Direct3D10.GeometryShader)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::CreateGeometryShader']/*\"/>\t\n            <msdn-id>bb173548</msdn-id>\t\n            <unmanaged>HRESULT ID3D10Device::CreateGeometryShader([In] const void* pShaderBytecode,[In] SIZE_T BytecodeLength,[Out, Fast] ID3D10GeometryShader** ppGeometryShader)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::CreateGeometryShader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Device.CreateGeometryShaderWithStreamOutput(System.IntPtr,SharpDX.PointerSize,SharpDX.Direct3D10.StreamOutputElement[],System.Int32,System.Int32,SharpDX.Direct3D10.GeometryShader)\">\n            <summary>\t\n            <p>Creates a geometry shader that can write to streaming output buffers.</p>\t\n            </summary>\t\n            <param name=\"shaderBytecodeRef\"><dd>  <p>A reference to the compiled geometry shader for a standard geometry shader plus stream output. For info on how to get this reference, see Getting a Pointer to a Compiled Shader.</p> <p>To create the stream output without using a geometry shader, pass a reference to the output signature for the prior stage. To obtain this output signature, call the <strong><see cref=\"!:SharpDX.D3DCompiler.D3D.GetOutputSignatureBlob\"/></strong> compiler function. You can also pass a reference to the compiled vertex shader that is used in the prior stage. This compiled shader provides the output signature for the data.</p> </dd></param>\t\n            <param name=\"bytecodeLength\"><dd>  <p>Size of the compiled geometry shader.</p> </dd></param>\t\n            <param name=\"sODeclarationRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D10.StreamOutputElement\"/></strong> array. Cannot be <strong><c>null</c></strong> if <em>NumEntries</em>&gt; 0.</p> </dd></param>\t\n            <param name=\"numEntries\"><dd>  <p>The number of entries in the array pointed to by <em>pSODeclaration</em>. Minimum 0, maximum 64.</p> </dd></param>\t\n            <param name=\"outputStreamStride\"><dd>  <p>The size, in bytes, of each element in the array pointed to by <em>pSODeclaration</em>. This parameter is only used when the output slot is 0 for all entries in <em>pSODeclaration</em>.</p> </dd></param>\t\n            <param name=\"geometryShaderOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D10.GeometryShader\"/> Interface</strong>. If this is <strong><c>null</c></strong>, all other parameters will be validated, and if all parameters pass validation this API will return S_FALSE instead of <see cref=\"F:SharpDX.Result.Ok\"/>.</p> </dd></param>\t\n            <returns><p>This method returns one of the Direct3D 10 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>For more info about using <strong>CreateGeometryShaderWithStreamOutput</strong>, see Create a Geometry-Shader Object with Stream Output.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::CreateGeometryShaderWithStreamOutput']/*\"/>\t\n            <msdn-id>bb173549</msdn-id>\t\n            <unmanaged>HRESULT ID3D10Device::CreateGeometryShaderWithStreamOutput([In] const void* pShaderBytecode,[In] SIZE_T BytecodeLength,[In, Buffer, Optional] const D3D10_SO_DECLARATION_ENTRY* pSODeclaration,[In] unsigned int NumEntries,[In] unsigned int OutputStreamStride,[Out, Fast] ID3D10GeometryShader** ppGeometryShader)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::CreateGeometryShaderWithStreamOutput</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Device.CreatePixelShader(System.IntPtr,SharpDX.PointerSize,SharpDX.Direct3D10.PixelShader)\">\n            <summary>\t\n            <p>Create a pixel shader.</p>\t\n            </summary>\t\n            <param name=\"shaderBytecodeRef\"><dd>  <p>A reference to the compiled shader. To get this reference see Getting a Pointer to a Compiled Shader.</p> </dd></param>\t\n            <param name=\"bytecodeLength\"><dd>  <p>Size of the compiled pixel shader.</p> </dd></param>\t\n            <param name=\"pixelShaderOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D10.PixelShader\"/> Interface</strong>. If this is <strong><c>null</c></strong>, all other parameters will be validated, and if all parameters pass validation this API will return S_FALSE instead of <see cref=\"F:SharpDX.Result.Ok\"/>.</p> </dd></param>\t\n            <returns><p>This method returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>After creating the pixel shader, you can set it to the device using <strong><see cref=\"M:SharpDX.Direct3D10.PixelShaderStage.Set(SharpDX.Direct3D10.PixelShader)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::CreatePixelShader']/*\"/>\t\n            <msdn-id>Bb173551</msdn-id>\t\n            <unmanaged>HRESULT ID3D10Device::CreatePixelShader([In] const void* pShaderBytecode,[In] SIZE_T BytecodeLength,[Out, Fast] ID3D10PixelShader** ppPixelShader)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::CreatePixelShader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Device.CreateBlendState(SharpDX.Direct3D10.BlendStateDescription@,SharpDX.Direct3D10.BlendState)\">\n            <summary>\t\n            <p>Create a blend-state object that encapsules blend state for the output-merger stage.</p>\t\n            </summary>\t\n            <param name=\"blendStateDescRef\"><dd>  <p>Pointer to a blend-state description (see <strong><see cref=\"T:SharpDX.Direct3D10.BlendStateDescription\"/></strong>).</p> </dd></param>\t\n            <param name=\"blendStateOut\"><dd>  <p>Address of a reference to the blend-state object created (see <strong><see cref=\"T:SharpDX.Direct3D10.BlendState\"/> Interface</strong>).</p> </dd></param>\t\n            <returns><p>This method returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>An application can create up to 4096 unique blend-state objects. For each object created, the runtime checks to see if a previous object has the same state. If such a previous object exists, the runtime will return a reference to previous instance instead of creating a duplicate object.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::CreateBlendState']/*\"/>\t\n            <msdn-id>bb173543</msdn-id>\t\n            <unmanaged>HRESULT ID3D10Device::CreateBlendState([In] const D3D10_BLEND_DESC* pBlendStateDesc,[Out, Fast] ID3D10BlendState** ppBlendState)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::CreateBlendState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Device.CreateDepthStencilState(SharpDX.Direct3D10.DepthStencilStateDescription@,SharpDX.Direct3D10.DepthStencilState)\">\n            <summary>\t\n            <p>Create a depth-stencil state object that encapsulates depth-stencil test information for the output-merger stage.</p>\t\n            </summary>\t\n            <param name=\"depthStencilDescRef\">No documentation.</param>\t\n            <param name=\"depthStencilStateOut\">No documentation.</param>\t\n            <returns><p>This method returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>4096 unique depth-stencil state objects can be created on a device at a time.</p><p>If an application attempts to create a depth-stencil state with the same description as an already existing depth-stencil state, then the same interface with an incremented reference count will be returned and the total number of unique depth-stencil state objects will stay the same.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::CreateDepthStencilState']/*\"/>\t\n            <msdn-id>bb173546</msdn-id>\t\n            <unmanaged>HRESULT ID3D10Device::CreateDepthStencilState([In] const D3D10_DEPTH_STENCIL_DESC* pDepthStencilDesc,[Out, Fast] ID3D10DepthStencilState** ppDepthStencilState)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::CreateDepthStencilState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Device.CreateRasterizerState(SharpDX.Direct3D10.RasterizerStateDescription@,SharpDX.Direct3D10.RasterizerState)\">\n            <summary>\t\n            <p>Create a rasterizer state object that tells the rasterizer stage how to behave.</p>\t\n            </summary>\t\n            <param name=\"rasterizerDescRef\">No documentation.</param>\t\n            <param name=\"rasterizerStateOut\">No documentation.</param>\t\n            <returns><p>This method returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>4096 unique rasterizer state objects can be created on a device at a time.</p><p>If an application attempts to create a rasterizer state with the same description as an already existing rasterizer state, then the same interface with an incremented reference count will be returned and the total number of unique rasterizer state objects will stay the same.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::CreateRasterizerState']/*\"/>\t\n            <msdn-id>bb173554</msdn-id>\t\n            <unmanaged>HRESULT ID3D10Device::CreateRasterizerState([In] const D3D10_RASTERIZER_DESC* pRasterizerDesc,[Out, Fast] ID3D10RasterizerState** ppRasterizerState)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::CreateRasterizerState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Device.CreateSamplerState(SharpDX.Direct3D10.SamplerStateDescription@,SharpDX.Direct3D10.SamplerState)\">\n            <summary>\t\n            <p>Create a sampler-state object that encapsulates sampling information for a texture.</p>\t\n            </summary>\t\n            <param name=\"samplerDescRef\">No documentation.</param>\t\n            <param name=\"samplerStateOut\">No documentation.</param>\t\n            <returns><p>This method returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>4096 unique sampler state objects can be created on a device at a time.</p><p>If an application attempts to create a sampler state with the same description as an already existing sampler state, then the same interface with an incremented reference count will be returned and the total number of unique sampler state objects will stay the same.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::CreateSamplerState']/*\"/>\t\n            <msdn-id>bb173557</msdn-id>\t\n            <unmanaged>HRESULT ID3D10Device::CreateSamplerState([In] const D3D10_SAMPLER_DESC* pSamplerDesc,[Out, Fast] ID3D10SamplerState** ppSamplerState)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::CreateSamplerState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Device.CreateQuery(SharpDX.Direct3D10.QueryDescription,SharpDX.Direct3D10.Query)\">\n            <summary>\t\n            <p>This interface encapsulates methods for querying information from the GPU.</p>\t\n            </summary>\t\n            <param name=\"queryDescRef\"><dd>  <p>Pointer to a query description (see <strong><see cref=\"T:SharpDX.Direct3D10.QueryDescription\"/></strong>).</p> </dd></param>\t\n            <param name=\"queryOut\"><dd>  <p>Address of a reference to the query object created (see <strong><see cref=\"T:SharpDX.Direct3D10.Query\"/> Interface</strong>).</p> </dd></param>\t\n            <returns><p>This method returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::CreateQuery']/*\"/>\t\n            <msdn-id>bb173553</msdn-id>\t\n            <unmanaged>HRESULT ID3D10Device::CreateQuery([In] const D3D10_QUERY_DESC* pQueryDesc,[Out, Fast] ID3D10Query** ppQuery)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::CreateQuery</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Device.CreatePredicate(SharpDX.Direct3D10.QueryDescription,SharpDX.Direct3D10.Predicate)\">\n            <summary>\t\n            <p>Creates a predicate.</p>\t\n            </summary>\t\n            <param name=\"predicateDescRef\"><dd>  <p>Pointer to a query description where the type of query must be a <see cref=\"F:SharpDX.Direct3D10.QueryType.StreamOutputOverflowPredicate\"/> or <see cref=\"F:SharpDX.Direct3D10.QueryType.OcclusionPredicate\"/> (see <strong><see cref=\"T:SharpDX.Direct3D10.QueryDescription\"/></strong>).</p> </dd></param>\t\n            <param name=\"predicateOut\"><dd>  <p>Address of a reference to a predicate (see <strong><see cref=\"T:SharpDX.Direct3D10.Predicate\"/> Interface</strong>).</p> </dd></param>\t\n            <returns><p>This method returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::CreatePredicate']/*\"/>\t\n            <msdn-id>bb173552</msdn-id>\t\n            <unmanaged>HRESULT ID3D10Device::CreatePredicate([In] const D3D10_QUERY_DESC* pPredicateDesc,[Out, Fast] ID3D10Predicate** ppPredicate)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::CreatePredicate</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Device.CreateCounter(SharpDX.Direct3D10.CounterDescription,SharpDX.Direct3D10.Counter)\">\n            <summary>\t\n            <p>Create a counter object for measuring GPU performance.</p>\t\n            </summary>\t\n            <param name=\"counterDescRef\"><dd>  <p>Pointer to a counter description (see <strong><see cref=\"T:SharpDX.Direct3D10.CounterDescription\"/></strong>).</p> </dd></param>\t\n            <param name=\"counterOut\"><dd>  <p>Address of a reference to a counter (see <strong><see cref=\"T:SharpDX.Direct3D10.Counter\"/> Interface</strong>).</p> </dd></param>\t\n            <returns><p>If this function succeeds, it will return <see cref=\"F:SharpDX.Result.Ok\"/>. If it fails, possible return values are: S_FALSE, E_OUTOFMEMORY, <see cref=\"F:SharpDX.DXGI.ResultCode.Unsupported\"/>, <see cref=\"F:SharpDX.DXGI.ResultCode.Nonexclusive\"/>, or E_INVALIDARG.</p><p><see cref=\"F:SharpDX.DXGI.ResultCode.Unsupported\"/> is returned whenever the application requests to create a well-known counter, but the current device does not support it.</p><p><see cref=\"F:SharpDX.DXGI.ResultCode.Nonexclusive\"/> indicates that another device object is currently using the counters, so they cannot be used by this device at the moment.</p><p>E_INVALIDARG is returned whenever an out-of-range well-known or device-dependent counter is requested, or when the simulataneously active counters have been exhausted.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::CreateCounter']/*\"/>\t\n            <msdn-id>bb173545</msdn-id>\t\n            <unmanaged>HRESULT ID3D10Device::CreateCounter([In] const D3D10_COUNTER_DESC* pCounterDesc,[Out, Fast] ID3D10Counter** ppCounter)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::CreateCounter</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Device.CheckFormatSupport(SharpDX.DXGI.Format)\">\n            <summary>\t\n            <p>Get the support of a given format on the installed video device.</p>\t\n            </summary>\t\n            <param name=\"format\"><dd>  <p>A <strong><see cref=\"T:SharpDX.DXGI.Format\"/></strong> enumeration that describes a format for which to check for support.</p> </dd></param>\t\n            <returns><dd>  <p>A bitfield of <strong><see cref=\"T:SharpDX.Direct3D10.FormatSupport\"/></strong> enumeration values describing how the specified format is supported on the installed device.  The values are ORed together.</p> </dd></returns>\t\n            <remarks>\t\n            <p>Most format support is based on the Direct3D feature level. Only a few specific use cases require checking for support.  See Hardware Support for Direct3D 10 Formats and Hardware Support for Direct3D 10.1 Formats for additional information.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::CheckFormatSupport']/*\"/>\t\n            <msdn-id>bb173536</msdn-id>\t\n            <unmanaged>HRESULT ID3D10Device::CheckFormatSupport([In] DXGI_FORMAT Format,[Out] D3D10_FORMAT_SUPPORT* pFormatSupport)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::CheckFormatSupport</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Device.CheckMultisampleQualityLevels(SharpDX.DXGI.Format,System.Int32)\">\n            <summary>\t\n            <p>Get the number of quality levels available during multisampling.</p>\t\n            </summary>\t\n            <param name=\"format\"><dd>  <p>The texture format. See <strong><see cref=\"T:SharpDX.DXGI.Format\"/></strong>.</p> </dd></param>\t\n            <param name=\"sampleCount\"><dd>  <p>The number of samples during multisampling.</p> </dd></param>\t\n            <returns><dd>  <p>Number of quality levels supported by the adapter. See remarks.</p> </dd></returns>\t\n            <remarks>\t\n            <p>When multisampling a texture, the number of quality levels available for an adapter is dependent on the texture format used and the number of samples requested. The maximum sample count defined by D3D10_MAX_MULTISAMPLE_SAMPLE_COUNT in d3d10.h is 32. If the returned value of <em>pNumQualityLevels</em> is 0, the format and sample count combination is not supported for the installed adapter.</p><p>Furthermore, the definition of a quality level is up to each hardware vendor to define, however no facility is provided by Direct3D to help discover  this information.</p><p>Direct3D 10.1 devices are required to support 4x MSAA for all formats except R32G32B32A32 and R32G32B32 formats.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::CheckMultisampleQualityLevels']/*\"/>\t\n            <msdn-id>bb173537</msdn-id>\t\n            <unmanaged>HRESULT ID3D10Device::CheckMultisampleQualityLevels([In] DXGI_FORMAT Format,[In] unsigned int SampleCount,[Out] unsigned int* pNumQualityLevels)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::CheckMultisampleQualityLevels</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Device.GetCounterCapabilities\">\n            <summary>\t\n            <p>Get a counter's information.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::CheckCounterInfo']/*\"/>\t\n            <msdn-id>bb173535</msdn-id>\t\n            <unmanaged>void ID3D10Device::CheckCounterInfo([Out] D3D10_COUNTER_INFO* pCounterInfo)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::CheckCounterInfo</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Device.CheckCounter(SharpDX.Direct3D10.CounterDescription,SharpDX.Direct3D10.CounterType@,System.Int32@,System.IntPtr,System.IntPtr,System.IntPtr,System.IntPtr,System.IntPtr,System.IntPtr)\">\n            <summary>\t\n            <p>Get the type, name, units of measure, and a description of an existing counter.</p>\t\n            </summary>\t\n            <param name=\"descRef\"><dd>  <p>Pointer to a counter description (see <strong><see cref=\"T:SharpDX.Direct3D10.CounterDescription\"/></strong>). Specifies which counter information is to be retrieved about.</p> </dd></param>\t\n            <param name=\"typeRef\"><dd>  <p>Pointer to the data type of a counter (see <strong><see cref=\"T:SharpDX.Direct3D10.CounterType\"/></strong>). Specifies the data type of the counter being retrieved.</p> </dd></param>\t\n            <param name=\"activeCountersRef\"><dd>  <p>Pointer to the number of hardware counters that are needed for this counter type to be created. All instances of the same counter type use the same hardware counters.</p> </dd></param>\t\n            <param name=\"szName\"><dd>  <p>String to be filled with a brief name for the counter. May be <strong><c>null</c></strong> if the application is not interested in the name of the counter.</p> </dd></param>\t\n            <param name=\"nameLengthRef\"><dd>  <p>Length of the string returned to szName. Can be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"szUnits\"><dd>  <p>Name of the units a counter measures, provided the memory the reference points to has enough room to hold the string. Can be <strong><c>null</c></strong>. The returned string will always be in English.</p> </dd></param>\t\n            <param name=\"unitsLengthRef\"><dd>  <p>Length of the string returned to szUnits. Can be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"szDescription\"><dd>  <p>A description of the counter, provided the memory the reference points to has enough room to hold the string. Can be <strong><c>null</c></strong>. The returned string will always be in English.</p> </dd></param>\t\n            <param name=\"descriptionLengthRef\"><dd>  <p>Length of the string returned to szDescription. Can be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <returns><p>This method returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>Length parameters can be <strong><c>null</c></strong>, which indicates the application is not interested in the length nor the corresponding string value. When a length parameter is non-<strong><c>null</c></strong> and the corresponding string is <strong><c>null</c></strong>, the input value of the length parameter is ignored, and the length of the corresponding string (including terminating <strong><c>null</c></strong>) will be returned through the length parameter. When length and the corresponding parameter are both non-<strong><c>null</c></strong>, the input value of length is checked to ensure there is enough room, and then the length of the string (including terminating <strong><c>null</c></strong> character) is passed out through the length parameter.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::CheckCounter']/*\"/>\t\n            <msdn-id>bb173534</msdn-id>\t\n            <unmanaged>HRESULT ID3D10Device::CheckCounter([In] const D3D10_COUNTER_DESC* pDesc,[Out] D3D10_COUNTER_TYPE* pType,[Out] unsigned int* pActiveCounters,[Out, Buffer, Optional] char* szName,[InOut, Optional] unsigned int* pNameLength,[Out, Buffer, Optional] char* szUnits,[InOut, Optional] unsigned int* pUnitsLength,[Out, Buffer, Optional] char* szDescription,[InOut, Optional] unsigned int* pDescriptionLength)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::CheckCounter</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Device.GetCreationFlags\">\n            <summary>\t\n            <p>Get the flags used during the call to create the device with <strong><see cref=\"M:SharpDX.Direct3D10.D3D10.CreateDevice(SharpDX.DXGI.Adapter,SharpDX.Direct3D10.DriverType,System.IntPtr,SharpDX.Direct3D10.DeviceCreationFlags,System.Int32,SharpDX.Direct3D10.Device)\"/></strong>.</p>\t\n            </summary>\t\n            <returns><p>A bitfield containing the flags used to create the device. See <strong><see cref=\"T:SharpDX.Direct3D10.DeviceCreationFlags\"/></strong>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::GetCreationFlags']/*\"/>\t\n            <msdn-id>bb173570</msdn-id>\t\n            <unmanaged>unsigned int ID3D10Device::GetCreationFlags()</unmanaged>\t\n            <unmanaged-short>ID3D10Device::GetCreationFlags</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Device.OpenSharedResource(System.IntPtr,System.Guid,System.IntPtr@)\">\n            <summary>\t\n            <p>Give a device access to a shared resource created on a different Direct3d device. </p>\t\n            </summary>\t\n            <param name=\"hResource\"><dd>  <p>A resource handle. See remarks.</p> </dd></param>\t\n            <param name=\"returnedInterface\"><dd>  <p>The globally unique identifier (<see cref=\"T:System.Guid\"/>) for the resource interface. See remarks.</p> </dd></param>\t\n            <param name=\"resourceOut\"><dd>  <p>Address of a reference to the resource we are gaining access to.</p> </dd></param>\t\n            <returns><p>This method returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>To share a resource between two Direct3D 10 devices the resource must have been created with the  <strong><see cref=\"F:SharpDX.Direct3D10.ResourceOptionFlags.Shared\"/></strong> flag, if it was created using the <see cref=\"T:SharpDX.Direct3D10.Device\"/> interface.  If it was created using the <see cref=\"T:SharpDX.DXGI.Device\"/> interface, then the resource is always shared.</p><p>The REFIID, or <see cref=\"T:System.Guid\"/>, of the interface to the resource can be obtained by using the __uuidof() macro.  For example, __uuidof(<see cref=\"T:SharpDX.Direct3D10.Buffer\"/>) will get the <see cref=\"T:System.Guid\"/> of the interface to a buffer resource.</p><p>When sharing a resource between two Direct3D 10 devices the unique handle of the resource can be obtained by querying the resource for the <strong><see cref=\"T:SharpDX.DXGI.Resource\"/></strong> interface and then calling <strong>GetSharedHandle</strong>.</p><pre><code> <see cref=\"T:SharpDX.DXGI.Resource\"/>* pOtherResource(<c>null</c>);\t\n            hr = pOtherDeviceResource-&gt;QueryInterface( __uuidof(<see cref=\"T:SharpDX.DXGI.Resource\"/>), (void**)&amp;pOtherResource );\t\n            HANDLE sharedHandle;\t\n            pOtherResource-&gt;GetSharedHandle(&amp;sharedHandle); </code></pre><p>The only resources that can be shared are 2D non-mipmapped textures.</p><p>To share a resource between a Direct3D 9 device and a Direct3D 10 device the texture must have been created using  the <em>pSharedHandle</em> argument of <strong>CreateTexture</strong>.   The shared Direct3D 9 handle is then passed to OpenSharedResource in the <em>hResource</em> argument.</p><p>The following code illustrates the method calls involved.</p><pre><code> sharedHandle = <c>null</c>; // must be set to <c>null</c> to create, can use a valid handle here to open in D3D9 \t\n            pDevice9-&gt;CreateTexture(..., pTex2D_9, &amp;sharedHandle); \t\n            ... \t\n            pDevice10-&gt;OpenSharedResource(sharedHandle, __uuidof(<see cref=\"T:SharpDX.Direct3D10.Resource\"/>), (void**)(&amp;tempResource10)); \t\n            tempResource10-&gt;QueryInterface(__uuidof(<see cref=\"T:SharpDX.Direct3D10.Texture2D\"/>), (void**)(&amp;pTex2D_10)); \t\n            tempResource10-&gt;Release(); \t\n            // now use pTex2D_10 with pDevice10    </code></pre><p>Textures being shared from D3D9 to D3D10 have the following restrictions.</p><ul> <li>Textures must be 2D</li> <li>Only 1 mip level is allowed</li> <li>Texture must have default usage</li> <li>Texture must be write only</li> <li>MSAA textures are not allowed</li> <li>Bind flags must have SHADER_RESOURCE and RENDER_TARGET set</li> <li>Only R10G10B10A2_UNORM, R16G16B16A16_FLOAT and R8G8B8A8_UNORM formats are allowed</li> </ul><p>If a shared texture is updated on one device <strong><see cref=\"M:SharpDX.Direct3D10.Device.Flush\"/></strong> must be called on that device.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::OpenSharedResource']/*\"/>\t\n            <msdn-id>bb173598</msdn-id>\t\n            <unmanaged>HRESULT ID3D10Device::OpenSharedResource([In] void* hResource,[In] const GUID&amp; ReturnedInterface,[Out, Optional] void** ppResource)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::OpenSharedResource</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.Device.CreationFlags\">\n            <summary>\t\n            Get the flags used during the call to create the device with <see cref=\"M:SharpDX.Direct3D10.D3D10.CreateDevice(SharpDX.DXGI.Adapter,SharpDX.Direct3D10.DriverType,System.IntPtr,SharpDX.Direct3D10.DeviceCreationFlags,System.Int32,SharpDX.Direct3D10.Device)\"/>.\t\n            </summary>\t\n            <returns>A bitfield containing the flags used to create the device. See <see cref=\"T:SharpDX.Direct3D10.DeviceCreationFlags\"/>. </returns>\n            <unmanaged>int ID3D10Device::GetCreationFlags()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.Device.DebugName\">\n            <summary>\n            Gets or sets the debug-name for this object.\n            </summary>\n            <value>\n            The debug name.\n            </value>\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.Device.VertexShader\">\n            <summary>Inner interface giving access to VertexShaderStage methods. </summary>\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.Device.PixelShader\">\n            <summary>Inner interface giving access to PixelShaderStage methods. </summary>\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.Device.InputAssembler\">\n            <summary>Inner interface giving access to InputAssemblerStage methods. </summary>\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.Device.GeometryShader\">\n            <summary>Inner interface giving access to GeometryShaderStage methods. </summary>\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.Device.OutputMerger\">\n            <summary>Inner interface giving access to OutputMergerStage methods. </summary>\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.Device.StreamOutput\">\n            <summary>Inner interface giving access to StreamOutputStage methods. </summary>\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.Device.Rasterizer\">\n            <summary>Inner interface giving access to RasterizerStage methods. </summary>\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.Device.DeviceRemovedReason\">\n            <summary>\t\n            <p>Get the reason why the device was removed.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::GetDeviceRemovedReason']/*\"/>\t\n            <msdn-id>bb173571</msdn-id>\t\n            <unmanaged>GetDeviceRemovedReason</unmanaged>\t\n            <unmanaged-short>GetDeviceRemovedReason</unmanaged-short>\t\n            <unmanaged>HRESULT ID3D10Device::GetDeviceRemovedReason()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.Device.ExceptionMode\">\n            <summary>\t\n            <p>Get or sets the exception-mode flags.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>An exception-mode flag is used to elevate an error condition to a non-continuable exception. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::GetExceptionMode']/*\"/>\t\n            <msdn-id>bb173572</msdn-id>\t\n            <unmanaged>GetExceptionMode / SetExceptionMode</unmanaged>\t\n            <unmanaged-short>GetExceptionMode</unmanaged-short>\t\n            <unmanaged>unsigned int ID3D10Device::GetExceptionMode()</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.StreamOutputStage\">\n            <summary>\t\n            <p>The device interface represents a virtual adapter for Direct3D 10.0; it is used to perform rendering and create Direct3D resources.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>A device is created using <strong><see cref=\"M:SharpDX.Direct3D10.D3D10.CreateDevice(SharpDX.DXGI.Adapter,SharpDX.Direct3D10.DriverType,System.IntPtr,SharpDX.Direct3D10.DeviceCreationFlags,System.Int32,SharpDX.Direct3D10.Device)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device']/*\"/>\t\n            <msdn-id>bb173528</msdn-id>\t\n            <unmanaged>ID3D10Device</unmanaged>\t\n            <unmanaged-short>ID3D10Device</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.StreamOutputStage.SetTargets(SharpDX.Direct3D10.StreamOutputBufferBinding[])\">\n            <summary>\t\n            Set the target output {{buffers}} for the {{StreamOutput}} stage, which enables/disables the pipeline to stream-out data.\t\n            </summary>\t\n            <remarks>\t\n            Call ID3D10Device::SOSetTargets (before any draw calls) to stream data out; call SOSetTargets with NULL to stop streaming data out. For an example, see Exercise 01 from the GDC 2007 workshop, which sets the stream output rendertargets before calling draw methods in the RenderInstanceToStream function. An offset of -1 will cause the stream output buffer to be appended, continuing after the last location written to the buffer in a previous stream output pass. Calling this method using a buffer that is currently bound for writing will effectively bind NULL instead because a buffer cannot be bound as both an input and an output at the same time. The {{DeviceDebug Layer}} will generate a warning whenever a resource is prevented from being bound simultaneously as an input and an output, but this will not prevent invalid data from being used by the runtime. The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device. \t\n            </remarks>\t\n            <param name=\"bufferBindings\">an array of output buffers (see <see cref=\"T:SharpDX.Direct3D10.StreamOutputBufferBinding\"/>) to bind to the device. The buffers must have been created with the <see cref=\"F:SharpDX.Direct3D10.BindFlags.StreamOutput\"/> flag. </param>\n            <unmanaged>void SOSetTargets([In] int NumBuffers,[In, Buffer, Optional] const ID3D10Buffer** ppSOTargets,[In, Buffer, Optional] const int* pOffsets)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.StreamOutputStage.GetTargets(System.Int32)\">\n            <summary>\t\n            Get the target output {{buffers}} for the {{StreamOutput}} stage of the pipeline.\t\n            </summary>\t\n            <remarks>\t\n            Any returned interfaces will have their reference count incremented by one. Applications should call {{IUnknown::Release}} on the returned interfaces when they are no longer needed to avoid memory leaks. \t\n            </remarks>\t\n            <param name=\"numBuffers\">Number of buffers to get. A maximum of four output buffers can be retrieved. </param>\n            <returns>an array of output buffers (see <see cref=\"T:SharpDX.Direct3D10.StreamOutputBufferBinding\"/>) to bind to the device.</returns>\n            <unmanaged>void SOGetTargets([In] int NumBuffers,[Out, Buffer, Optional] ID3D10Buffer** ppSOTargets,[Out, Buffer, Optional] int* pOffsets)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.StreamOutputStage.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D10.StreamOutputStage\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.StreamOutputStage.op_Explicit(System.IntPtr)~SharpDX.Direct3D10.StreamOutputStage\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D10.StreamOutputStage\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.StreamOutputStage.SetTargets(System.Int32,SharpDX.Direct3D10.Buffer[],System.Int32[])\">\n            <summary>\t\n            <p>Set the target output buffers for the StreamOutput stage, which enables/disables the pipeline to stream-out data.</p>\t\n            </summary>\t\n            <param name=\"numBuffers\">No documentation.</param>\t\n            <param name=\"sOTargetsOut\">No documentation.</param>\t\n            <param name=\"offsetsRef\">No documentation.</param>\t\n            <remarks>\t\n            <p>Call <strong><see cref=\"M:SharpDX.Direct3D10.StreamOutputStage.SetTargets(SharpDX.Direct3D10.StreamOutputBufferBinding[])\"/></strong> (before any draw calls) to stream data out; call SOSetTargets with <strong><c>null</c></strong> to stop streaming data out. For an example, see Exercise 01 from the GDC 2007 workshop, which sets the stream output rendertargets before calling draw methods in the RenderInstanceToStream function.</p><p>An offset of -1 will cause the stream output buffer to be appended, continuing after the last location written to the buffer in a previous stream output pass.</p><p>Calling this method using a buffer that is currently bound for writing will effectively bind <strong><c>null</c></strong> instead because a buffer cannot be bound as both an input and an output at the same time.</p><p>The Debug Layer will generate a warning whenever a resource is prevented from being bound simultaneously as an input and an output, but this will not prevent invalid data from being used by the runtime.</p><p>The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::SOSetTargets']/*\"/>\t\n            <msdn-id>bb173620</msdn-id>\t\n            <unmanaged>void ID3D10Device::SOSetTargets([In] unsigned int NumBuffers,[In, Buffer, Optional] const ID3D10Buffer** ppSOTargets,[In, Buffer, Optional] const unsigned int* pOffsets)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::SOSetTargets</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.StreamOutputStage.SetTargets(System.Int32,SharpDX.ComArray{SharpDX.Direct3D10.Buffer},System.Int32[])\">\n            <summary>\t\n            <p>Set the target output buffers for the StreamOutput stage, which enables/disables the pipeline to stream-out data.</p>\t\n            </summary>\t\n            <param name=\"numBuffers\">No documentation.</param>\t\n            <param name=\"sOTargetsOut\">No documentation.</param>\t\n            <param name=\"offsetsRef\">No documentation.</param>\t\n            <remarks>\t\n            <p>Call <strong><see cref=\"M:SharpDX.Direct3D10.StreamOutputStage.SetTargets(SharpDX.Direct3D10.StreamOutputBufferBinding[])\"/></strong> (before any draw calls) to stream data out; call SOSetTargets with <strong><c>null</c></strong> to stop streaming data out. For an example, see Exercise 01 from the GDC 2007 workshop, which sets the stream output rendertargets before calling draw methods in the RenderInstanceToStream function.</p><p>An offset of -1 will cause the stream output buffer to be appended, continuing after the last location written to the buffer in a previous stream output pass.</p><p>Calling this method using a buffer that is currently bound for writing will effectively bind <strong><c>null</c></strong> instead because a buffer cannot be bound as both an input and an output at the same time.</p><p>The Debug Layer will generate a warning whenever a resource is prevented from being bound simultaneously as an input and an output, but this will not prevent invalid data from being used by the runtime.</p><p>The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::SOSetTargets']/*\"/>\t\n            <msdn-id>bb173620</msdn-id>\t\n            <unmanaged>void ID3D10Device::SOSetTargets([In] unsigned int NumBuffers,[In, Buffer, Optional] const ID3D10Buffer** ppSOTargets,[In, Buffer, Optional] const unsigned int* pOffsets)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::SOSetTargets</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.StreamOutputStage.GetTargets(System.Int32,SharpDX.Direct3D10.Buffer[],System.Int32[])\">\n            <summary>\t\n            <p>Get the target output buffers for the StreamOutput stage of the pipeline.</p>\t\n            </summary>\t\n            <param name=\"numBuffers\">No documentation.</param>\t\n            <param name=\"sOTargetsOut\">No documentation.</param>\t\n            <param name=\"offsetsRef\">No documentation.</param>\t\n            <remarks>\t\n            <p>Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::SOGetTargets']/*\"/>\t\n            <msdn-id>bb173619</msdn-id>\t\n            <unmanaged>void ID3D10Device::SOGetTargets([In] unsigned int NumBuffers,[Out, Buffer, Optional] ID3D10Buffer** ppSOTargets,[Out, Buffer, Optional] unsigned int* pOffsets)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::SOGetTargets</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.OutputMergerStage\">\n            <summary>\t\n            <p>The device interface represents a virtual adapter for Direct3D 10.0; it is used to perform rendering and create Direct3D resources.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>A device is created using <strong><see cref=\"M:SharpDX.Direct3D10.D3D10.CreateDevice(SharpDX.DXGI.Adapter,SharpDX.Direct3D10.DriverType,System.IntPtr,SharpDX.Direct3D10.DeviceCreationFlags,System.Int32,SharpDX.Direct3D10.Device)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device']/*\"/>\t\n            <msdn-id>bb173528</msdn-id>\t\n            <unmanaged>ID3D10Device</unmanaged>\t\n            <unmanaged-short>ID3D10Device</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.OutputMergerStage.GetRenderTargets(SharpDX.Direct3D10.DepthStencilView@)\">\n            <summary>\t\n            Get references to the render targets that are available to the {{output-merger stage}}.\t\n            </summary>\t\n            <remarks>\t\n            Any returned interfaces will have their reference count incremented by one. Applications should call {{IUnknown::Release}} on the returned interfaces when they are no longer needed to avoid memory leaks. \t\n            </remarks>\t\n            <returns>a depth-stencil view (see <see cref=\"T:SharpDX.Direct3D10.DepthStencilView\"/>) to be filled with the depth-stencil information from the device.</returns>\n            <unmanaged>void OMGetRenderTargets([In] int NumViews,[Out, Buffer, Optional] ID3D10RenderTargetView** ppRenderTargetViews,[Out, Optional] ID3D10DepthStencilView** ppDepthStencilView)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.OutputMergerStage.GetRenderTargets(System.Int32)\">\n            <summary>\t\n            Get references to the render targets that are available to the {{output-merger stage}}.\t\n            </summary>\t\n            <remarks>\t\n            Any returned interfaces will have their reference count incremented by one. Applications should call {{IUnknown::Release}} on the returned interfaces when they are no longer needed to avoid memory leaks. \t\n            </remarks>\t\n            <param name=\"numViews\">Number of render targets to retrieve. </param>\n            <returns>an array of render targets views (see <see cref=\"T:SharpDX.Direct3D10.RenderTargetView\"/>) to be filled with the render targets from the device.</returns>\n            <unmanaged>void OMGetRenderTargets([In] int NumViews,[Out, Buffer, Optional] ID3D10RenderTargetView** ppRenderTargetViews,[Out, Optional] ID3D10DepthStencilView** ppDepthStencilView)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.OutputMergerStage.GetRenderTargets(System.Int32,SharpDX.Direct3D10.DepthStencilView@)\">\n            <summary>\t\n            Get references to the render targets and the depth-stencil buffer that are available to the {{output-merger stage}}.\t\n            </summary>\t\n            <remarks>\t\n            Any returned interfaces will have their reference count incremented by one. Applications should call {{IUnknown::Release}} on the returned interfaces when they are no longer needed to avoid memory leaks. \t\n            </remarks>\t\n            <param name=\"numViews\">Number of render targets to retrieve. </param>\n            <param name=\"depthStencilViewRef\">Pointer to a depth-stencil view (see <see cref=\"T:SharpDX.Direct3D10.DepthStencilView\"/>) to be filled with the depth-stencil information from the device.</param>\n            <returns>an array of render targets views (see <see cref=\"T:SharpDX.Direct3D10.RenderTargetView\"/>) to be filled with the render targets from the device.</returns>\n            <unmanaged>void OMGetRenderTargets([In] int NumViews,[Out, Buffer, Optional] ID3D10RenderTargetView** ppRenderTargetViews,[Out, Optional] ID3D10DepthStencilView** ppDepthStencilView)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.OutputMergerStage.GetBlendState(SharpDX.Color4@,System.Int32@)\">\n            <summary>\t\n            Get the {{blend state}} of the output-merger stage.\t\n            </summary>\t\n            <remarks>\t\n            The reference count of the returned interface will be incremented by one when the blend state is retrieved. Applications must release returned reference(s) when they are no longer needed, or else there will be a memory leak. \t\n            </remarks>\t\n            <param name=\"blendFactor\">Array of blend factors, one for each RGBA component. </param>\n            <param name=\"sampleMaskRef\">Pointer to a {{sample mask}}. </param>\n            <returns>a reference to a blend-state interface (see <see cref=\"T:SharpDX.Direct3D10.BlendState\"/>).</returns>\n            <unmanaged>void OMGetBlendState([Out, Optional] ID3D10BlendState** ppBlendState,[Out, Optional] float BlendFactor[4],[Out, Optional] int* pSampleMask)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.OutputMergerStage.GetDepthStencilState(System.Int32@)\">\n            <summary>\t\n            Gets the {{depth-stencil}} state of the output-merger stage.\t\n            </summary>\t\n            <remarks>\t\n            Any returned interfaces will have their reference count incremented by one. Applications should call {{IUnknown::Release}} on the returned interfaces when they are no longer needed to avoid memory leaks. \t\n            </remarks>\t\n            <param name=\"stencilRefRef\">Pointer to the stencil reference value used in the {{depth-stencil}} test. </param>\n            <returns>a reference to a depth-stencil state interface (see <see cref=\"T:SharpDX.Direct3D10.DepthStencilState\"/>) to be filled with information from the device.</returns>\n            <unmanaged>void OMGetDepthStencilState([Out, Optional] ID3D10DepthStencilState** ppDepthStencilState,[Out, Optional] int* pStencilRef)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.OutputMergerStage.SetTargets(SharpDX.Direct3D10.RenderTargetView[])\">\n            <summary>\n              Binds a set of render targets to the output-merger stage.\n            </summary>\n            <param name = \"renderTargetViews\">A set of render target views to bind.</param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.OutputMergerStage.SetTargets(SharpDX.Direct3D10.RenderTargetView)\">\n            <summary>\n              Binds a single render target to the output-merger stage.\n            </summary>\n            <param name = \"renderTargetView\">A view of the render target to bind.</param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.OutputMergerStage.SetTargets(SharpDX.Direct3D10.DepthStencilView,SharpDX.Direct3D10.RenderTargetView[])\">\n            <summary>\n              Binds a depth-stencil buffer and a set of render targets to the output-merger stage.\n            </summary>\n            <param name = \"depthStencilView\">A view of the depth-stencil buffer to bind.</param>\n            <param name = \"renderTargetViews\">A set of render target views to bind.</param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.OutputMergerStage.SetTargets(SharpDX.Direct3D10.DepthStencilView,SharpDX.Direct3D10.RenderTargetView)\">\n            <summary>\n              Binds a depth-stencil buffer and a single render target to the output-merger stage.\n            </summary>\n            <param name = \"depthStencilView\">A view of the depth-stencil buffer to bind.</param>\n            <param name = \"renderTargetView\">A view of the render target to bind.</param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.OutputMergerStage.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D10.OutputMergerStage\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.OutputMergerStage.op_Explicit(System.IntPtr)~SharpDX.Direct3D10.OutputMergerStage\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D10.OutputMergerStage\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.OutputMergerStage.SetRenderTargets(System.Int32,SharpDX.Direct3D10.RenderTargetView[],SharpDX.Direct3D10.DepthStencilView)\">\n            <summary>\t\n            <p>Bind one or more render targets and the depth-stencil buffer to the output-merger stage.</p>\t\n            </summary>\t\n            <param name=\"numViews\">No documentation.</param>\t\n            <param name=\"renderTargetViewsOut\">No documentation.</param>\t\n            <param name=\"depthStencilViewRef\">No documentation.</param>\t\n            <remarks>\t\n            <p>A call to <strong>OMSetRenderTargets</strong> overrides all bounded render targets and the depth stencil target regardless of the number of render targets in <em>ppRenderTargetViews</em>.</p><p>The maximum number of render targets a device can have active at any given time is set by a #define in D3D10.h called D3D10_SIMULTANEOUS_RENDER_TARGET_COUNT. It is invalid to try to set the same subresource to multiple render target slots.</p><p>If any subresources are also currently bound for reading or writing (perhaps in a different part of the pipeline), those bind points will be <strong><c>null</c></strong>'ed out to prevent the same subresource from being read and written simultaneously in a single rendering operation.</p><p>The method will not hold references to the interfaces passed in. For that reason, applications should be careful not to release interfaces currently in use by the device.</p><p>See Binding Resources and Pipeline stages for more information on binding resources.</p><p>The pixel shader must be able to simultaneously render to at least eight separate render targets. All of these render targets must access the same type of resource: Buffer, Texture1D, Texture1DArray, Texture2D, Texture2DArray, Texture3D, or TextureCube. All render targets must have the same size in all dimensions (width and height, and depth for 3D or array size for *Array types). If render targets use multisample anti-aliasing, all bound render targets and depth buffer must be the same form of multisample resource (that is, the sample counts must be the same). Each render target can have a different data format. These render target formats are not required to have identical bit-per-element counts.</p><p>Any combination of the eight slots for render targets can have a render target set or not set.</p><p>The same resource view cannot be bound to multiple render target slots simultaneously. However, you can set multiple non-overlapping resource views of a single resource as simultaneous multiple render targets.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::OMSetRenderTargets']/*\"/>\t\n            <msdn-id>bb173597</msdn-id>\t\n            <unmanaged>void ID3D10Device::OMSetRenderTargets([In] unsigned int NumViews,[In, Buffer, Optional] const ID3D10RenderTargetView** ppRenderTargetViews,[In, Optional] ID3D10DepthStencilView* pDepthStencilView)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::OMSetRenderTargets</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.OutputMergerStage.SetRenderTargets(System.Int32,SharpDX.ComArray{SharpDX.Direct3D10.RenderTargetView},SharpDX.Direct3D10.DepthStencilView)\">\n            <summary>\t\n            <p>Bind one or more render targets and the depth-stencil buffer to the output-merger stage.</p>\t\n            </summary>\t\n            <param name=\"numViews\">No documentation.</param>\t\n            <param name=\"renderTargetViewsOut\">No documentation.</param>\t\n            <param name=\"depthStencilViewRef\">No documentation.</param>\t\n            <remarks>\t\n            <p>A call to <strong>OMSetRenderTargets</strong> overrides all bounded render targets and the depth stencil target regardless of the number of render targets in <em>ppRenderTargetViews</em>.</p><p>The maximum number of render targets a device can have active at any given time is set by a #define in D3D10.h called D3D10_SIMULTANEOUS_RENDER_TARGET_COUNT. It is invalid to try to set the same subresource to multiple render target slots.</p><p>If any subresources are also currently bound for reading or writing (perhaps in a different part of the pipeline), those bind points will be <strong><c>null</c></strong>'ed out to prevent the same subresource from being read and written simultaneously in a single rendering operation.</p><p>The method will not hold references to the interfaces passed in. For that reason, applications should be careful not to release interfaces currently in use by the device.</p><p>See Binding Resources and Pipeline stages for more information on binding resources.</p><p>The pixel shader must be able to simultaneously render to at least eight separate render targets. All of these render targets must access the same type of resource: Buffer, Texture1D, Texture1DArray, Texture2D, Texture2DArray, Texture3D, or TextureCube. All render targets must have the same size in all dimensions (width and height, and depth for 3D or array size for *Array types). If render targets use multisample anti-aliasing, all bound render targets and depth buffer must be the same form of multisample resource (that is, the sample counts must be the same). Each render target can have a different data format. These render target formats are not required to have identical bit-per-element counts.</p><p>Any combination of the eight slots for render targets can have a render target set or not set.</p><p>The same resource view cannot be bound to multiple render target slots simultaneously. However, you can set multiple non-overlapping resource views of a single resource as simultaneous multiple render targets.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::OMSetRenderTargets']/*\"/>\t\n            <msdn-id>bb173597</msdn-id>\t\n            <unmanaged>void ID3D10Device::OMSetRenderTargets([In] unsigned int NumViews,[In, Buffer, Optional] const ID3D10RenderTargetView** ppRenderTargetViews,[In, Optional] ID3D10DepthStencilView* pDepthStencilView)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::OMSetRenderTargets</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.OutputMergerStage.SetBlendState(SharpDX.Direct3D10.BlendState,SharpDX.Color4,System.Int32)\">\n            <summary>\t\n            <p>Set the blend state of the output-merger stage.</p>\t\n            </summary>\t\n            <param name=\"blendStateRef\">No documentation.</param>\t\n            <param name=\"blendFactor\">No documentation.</param>\t\n            <param name=\"sampleMask\">No documentation.</param>\t\n            <remarks>\t\n            <p>Blend state is used by the output-merger stage to determine how to blend together two pixel values. The two values are commonly the current pixel value and the pixel value already in the output render target. Use the <strong>blend operation</strong> to control where the two pixel values come from and how they are mathematically combined.</p><p>To create a blend-state interface, call <strong><see cref=\"M:SharpDX.Direct3D10.Device.CreateBlendState(SharpDX.Direct3D10.BlendStateDescription@,SharpDX.Direct3D10.BlendState)\"/></strong>.</p><p>Passing in <strong><c>null</c></strong> for the blend-state interface indicates to the runtime to set a default blending state.  The following table indicates the default blending parameters.</p><table> <tr><th>State</th><th>Default Value</th></tr> <tr><td>AlphaToCoverageEnable</td><td><strong><see cref=\"F:SharpDX.Result.False\"/></strong></td></tr> <tr><td>BlendEnable</td><td><strong><see cref=\"F:SharpDX.Result.False\"/></strong>[8]</td></tr> <tr><td>SrcBlend</td><td><see cref=\"F:SharpDX.Direct3D10.BlendOption.One\"/></td></tr> <tr><td>DstBlend</td><td><see cref=\"F:SharpDX.Direct3D10.BlendOption.Zero\"/></td></tr> <tr><td>BlendOp</td><td><see cref=\"F:SharpDX.Direct3D10.BlendOperation.Add\"/></td></tr> <tr><td>SrcBlendAlpha</td><td><see cref=\"F:SharpDX.Direct3D10.BlendOption.One\"/></td></tr> <tr><td>DstBlendAlpha</td><td><see cref=\"F:SharpDX.Direct3D10.BlendOption.Zero\"/></td></tr> <tr><td>BlendOpAlpha</td><td><see cref=\"F:SharpDX.Direct3D10.BlendOperation.Add\"/></td></tr> <tr><td>RenderTargetWriteMask[8]</td><td><see cref=\"F:SharpDX.Direct3D10.ColorWriteMaskFlags.All\"/>[8]</td></tr> </table><p>?</p><p>A sample mask determines which samples get updated in all the active render targets. The mapping of bits in a sample mask to samples in a multisample render target is the responsibility of an individual application. A sample mask is always applied; it is independent of whether multisampling is enabled, and does not depend on whether an application uses multisample render targets.</p><p>The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::OMSetBlendState']/*\"/>\t\n            <msdn-id>bb173595</msdn-id>\t\n            <unmanaged>void ID3D10Device::OMSetBlendState([In, Optional] ID3D10BlendState* pBlendState,[In] const SHARPDX_COLOR4* BlendFactor,[In] unsigned int SampleMask)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::OMSetBlendState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.OutputMergerStage.SetDepthStencilState(SharpDX.Direct3D10.DepthStencilState,System.Int32)\">\n            <summary>\t\n            <p>Sets the depth-stencil state of  the output-merger stage.</p>\t\n            </summary>\t\n            <param name=\"depthStencilStateRef\">No documentation.</param>\t\n            <param name=\"stencilRef\">No documentation.</param>\t\n            <remarks>\t\n            <p>To create a depth-stencil state interface, call <strong><see cref=\"M:SharpDX.Direct3D10.Device.CreateDepthStencilState(SharpDX.Direct3D10.DepthStencilStateDescription@,SharpDX.Direct3D10.DepthStencilState)\"/></strong>.</p><p>Depth-stencil state is used by the output-merger stage to  setup depth-stencil testing.  The stencil reference value is the control value used in the depth-stencil test.</p><p>The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an  interface currently in use by the device.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::OMSetDepthStencilState']/*\"/>\t\n            <msdn-id>bb173596</msdn-id>\t\n            <unmanaged>void ID3D10Device::OMSetDepthStencilState([In, Optional] ID3D10DepthStencilState* pDepthStencilState,[In] unsigned int StencilRef)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::OMSetDepthStencilState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.OutputMergerStage.GetRenderTargets(System.Int32,SharpDX.Direct3D10.RenderTargetView[],SharpDX.Direct3D10.DepthStencilView@)\">\n            <summary>\t\n            <p>Get references to the render targets and the depth-stencil buffer that are available to the output-merger stage.</p>\t\n            </summary>\t\n            <param name=\"numViews\">No documentation.</param>\t\n            <param name=\"renderTargetViewsOut\">No documentation.</param>\t\n            <param name=\"depthStencilViewOut\">No documentation.</param>\t\n            <remarks>\t\n            <p>Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::OMGetRenderTargets']/*\"/>\t\n            <msdn-id>bb173594</msdn-id>\t\n            <unmanaged>void ID3D10Device::OMGetRenderTargets([In] unsigned int NumViews,[Out, Buffer, Optional] ID3D10RenderTargetView** ppRenderTargetViews,[Out, Optional] ID3D10DepthStencilView** ppDepthStencilView)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::OMGetRenderTargets</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.OutputMergerStage.GetBlendState(SharpDX.Direct3D10.BlendState@,SharpDX.Color4@,System.Int32@)\">\n            <summary>\t\n            <p>Get the blend state of the output-merger stage.</p>\t\n            </summary>\t\n            <param name=\"blendStateOut\">No documentation.</param>\t\n            <param name=\"blendFactor\">No documentation.</param>\t\n            <param name=\"sampleMaskRef\">No documentation.</param>\t\n            <remarks>\t\n            <p>The reference count of the returned interface will be incremented by one when the blend state is retrieved. Applications must release returned reference(s) when they are no longer needed, or else there will be a memory leak.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::OMGetBlendState']/*\"/>\t\n            <msdn-id>bb173592</msdn-id>\t\n            <unmanaged>void ID3D10Device::OMGetBlendState([Out, Optional] ID3D10BlendState** ppBlendState,[Out, Optional] SHARPDX_COLOR4* BlendFactor,[Out, Optional] unsigned int* pSampleMask)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::OMGetBlendState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.OutputMergerStage.GetDepthStencilState(SharpDX.Direct3D10.DepthStencilState@,System.Int32@)\">\n            <summary>\t\n            <p>Gets the depth-stencil state of the output-merger stage.</p>\t\n            </summary>\t\n            <param name=\"depthStencilStateOut\">No documentation.</param>\t\n            <param name=\"stencilRefRef\">No documentation.</param>\t\n            <remarks>\t\n            <p>Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::OMGetDepthStencilState']/*\"/>\t\n            <msdn-id>bb173593</msdn-id>\t\n            <unmanaged>void ID3D10Device::OMGetDepthStencilState([Out, Optional] ID3D10DepthStencilState** ppDepthStencilState,[Out, Optional] unsigned int* pStencilRef)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::OMGetDepthStencilState</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.OutputMergerStage.BlendFactor\">\n            <summary>\n            Gets or sets the blend factor.\n            </summary>\n            <value>The blend factor.</value>\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.OutputMergerStage.BlendSampleMask\">\n            <summary>\n            Gets or sets the blend sample mask.\n            </summary>\n            <value>The blend sample mask.</value>\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.OutputMergerStage.BlendState\">\n            <summary>\n            Gets or sets the state of the blend.\n            </summary>\n            <value>The state of the blend.</value>\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.OutputMergerStage.DepthStencilReference\">\n            <summary>\n            Gets or sets the depth stencil reference.\n            </summary>\n            <value>The depth stencil reference.</value>\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.OutputMergerStage.DepthStencilState\">\n            <summary>\n            Gets or sets the state of the depth stencil.\n            </summary>\n            <value>The state of the depth stencil.</value>\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.RasterizerStage\">\n            <summary>\t\n            <p>The device interface represents a virtual adapter for Direct3D 10.0; it is used to perform rendering and create Direct3D resources.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>A device is created using <strong><see cref=\"M:SharpDX.Direct3D10.D3D10.CreateDevice(SharpDX.DXGI.Adapter,SharpDX.Direct3D10.DriverType,System.IntPtr,SharpDX.Direct3D10.DeviceCreationFlags,System.Int32,SharpDX.Direct3D10.Device)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device']/*\"/>\t\n            <msdn-id>bb173528</msdn-id>\t\n            <unmanaged>ID3D10Device</unmanaged>\t\n            <unmanaged-short>ID3D10Device</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.RasterizerStage.GetViewports\">\n            <summary>\t\n            Get the array of {{viewports}} bound  to the {{rasterizer stage}} \t\n            </summary>\t\n            <returns>An array of viewports (see <see cref=\"T:SharpDX.Viewport\"/>).</returns>\n            <unmanaged>void RSGetViewports([InOut] int* NumViewports,[Out, Buffer, Optional] D3D10_VIEWPORT* pViewports)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.RasterizerStage.GetViewports(SharpDX.Viewport[])\">\n            <summary>\t\n            Get the array of {{viewports}} bound  to the {{rasterizer stage}} \t\n            </summary>\t\n            <returns>An array of viewports (see <see cref=\"T:SharpDX.Viewport\"/>).</returns>\n            <unmanaged>void RSGetViewports([InOut] int* NumViewports,[Out, Buffer, Optional] D3D10_VIEWPORT* pViewports)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.RasterizerStage.GetScissorRectangles\">\n            <summary>\t\n            Get the array of {{scissor rectangles}} bound to the {{rasterizer stage}}.\t\n            </summary>\t\n            <returns>An array of scissor rectangles (see <see cref=\"T:SharpDX.Rectangle\"/>).</returns>\n            <unmanaged>void RSGetScissorRects([InOut] int* NumRects,[Out, Buffer, Optional] D3D10_RECT* pRects)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.RasterizerStage.GetScissorRectangles(SharpDX.Rectangle[])\">\n            <summary>\t\n            Get the array of {{scissor rectangles}} bound to the {{rasterizer stage}}.\t\n            </summary>\t\n            <returns>An array of scissor rectangles (see <see cref=\"T:SharpDX.Rectangle\"/>).</returns>\n            <unmanaged>void RSGetScissorRects([InOut] int* NumRects,[Out, Buffer, Optional] D3D10_RECT* pRects)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.RasterizerStage.SetScissorRectangles(SharpDX.Rectangle)\">\n            <summary>\n              Binds a single scissor rectangle to the rasterizer stage.\n            </summary>\n            <param name = \"scissorRectangle\">The scissor rectangle to bind.</param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.RasterizerStage.SetScissorRectangles(SharpDX.Rectangle[])\">\n            <summary>\n              Binds a set of scissor rectangles to the rasterizer stage.\n            </summary>\n            <param name = \"scissorRectangles\">The set of scissor rectangles to bind.</param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.RasterizerStage.SetViewports(SharpDX.Viewport[])\">\n            <summary>\n              Binds a set of viewports to the rasterizer stage.\n            </summary>\n            <param name = \"viewports\">The set of viewports to bind.</param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.RasterizerStage.SetViewports(SharpDX.Viewport)\">\n            <summary>\n              Binds a single viewport to the rasterizer stage.\n            </summary>\n            <param name = \"viewport\">The viewport to bind.</param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.RasterizerStage.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D10.RasterizerStage\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.RasterizerStage.op_Explicit(System.IntPtr)~SharpDX.Direct3D10.RasterizerStage\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D10.RasterizerStage\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.RasterizerStage.SetState(SharpDX.Direct3D10.RasterizerState)\">\n            <summary>\t\n            <p>Set the <strong>rasterizer state</strong> for the rasterizer stage of the pipeline.</p>\t\n            </summary>\t\n            <param name=\"rasterizerStateRef\">No documentation.</param>\t\n            <remarks>\t\n            <p>To create a rasterizer state interface, call <strong><see cref=\"M:SharpDX.Direct3D10.Device.CreateRasterizerState(SharpDX.Direct3D10.RasterizerStateDescription@,SharpDX.Direct3D10.RasterizerState)\"/></strong>. For more details on setting up the rasterizer state, see Set Rasterizer State.</p><p>The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::RSSetState']/*\"/>\t\n            <msdn-id>bb173612</msdn-id>\t\n            <unmanaged>void ID3D10Device::RSSetState([In, Optional] ID3D10RasterizerState* pRasterizerState)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::RSSetState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.RasterizerStage.SetViewports(System.Int32,SharpDX.Viewport[])\">\n            <summary>\t\n            <p>Bind an array of viewports to the rasterizer stage of the pipeline.</p>\t\n            </summary>\t\n            <param name=\"numViewports\">No documentation.</param>\t\n            <param name=\"viewportsRef\">No documentation.</param>\t\n            <remarks>\t\n            <p>All viewports must be set atomically as one operation. Any viewports not defined by the call are disabled.</p><p>Which viewport to use is determined by the SV_ViewportArrayIndex semantic output by a geometry shader (see shader semantic syntax). If a geometry shader does not make use of the SV_ViewportArrayIndex semantic then Direct3D will use the first viewport in the array.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::RSSetViewports']/*\"/>\t\n            <msdn-id>bb173613</msdn-id>\t\n            <unmanaged>void ID3D10Device::RSSetViewports([In] unsigned int NumViewports,[In, Buffer, Optional] const D3D10_VIEWPORT* pViewports)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::RSSetViewports</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.RasterizerStage.SetScissorRects(System.Int32,SharpDX.Rectangle[])\">\n            <summary>\t\n            <p>Bind an array of scissor rectangles to the rasterizer stage.</p>\t\n            </summary>\t\n            <param name=\"numRects\">No documentation.</param>\t\n            <param name=\"rectsRef\">No documentation.</param>\t\n            <remarks>\t\n            <p>The scissor rectangles will only be used if ScissorEnable is set to true in the rasterizer state (see <strong><see cref=\"T:SharpDX.Direct3D10.RasterizerStateDescription\"/></strong>).</p><p>Which scissor rectangle to use is determined by the SV_ViewportArrayIndex semantic output by a geometry shader (see shader semantic syntax). If a geometry shader does not make use of the SV_ViewportArrayIndex semantic then Direct3D will use the first scissor rectangle in the array.</p><p>Each scissor rectangle in the array corresponds to a viewport in an array of viewports (see <strong><see cref=\"M:SharpDX.Direct3D10.RasterizerStage.SetViewports(SharpDX.Viewport[])\"/></strong>).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::RSSetScissorRects']/*\"/>\t\n            <msdn-id>bb173611</msdn-id>\t\n            <unmanaged>void ID3D10Device::RSSetScissorRects([In] unsigned int NumRects,[In, Buffer, Optional] const RECT* pRects)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::RSSetScissorRects</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.RasterizerStage.GetState(SharpDX.Direct3D10.RasterizerState@)\">\n            <summary>\t\n            <p>Get the <strong>rasterizer state</strong> from the rasterizer stage of the pipeline.</p>\t\n            </summary>\t\n            <param name=\"rasterizerStateOut\">No documentation.</param>\t\n            <remarks>\t\n            <p>Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::RSGetState']/*\"/>\t\n            <msdn-id>bb173609</msdn-id>\t\n            <unmanaged>void ID3D10Device::RSGetState([Out] ID3D10RasterizerState** ppRasterizerState)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::RSGetState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.RasterizerStage.GetViewports(System.Int32@,SharpDX.Viewport[])\">\n            <summary>\t\n            <p>Get the array of viewports bound  to the rasterizer stage </p>\t\n            </summary>\t\n            <param name=\"numViewports\">No documentation.</param>\t\n            <param name=\"viewportsRef\">No documentation.</param>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::RSGetViewports']/*\"/>\t\n            <msdn-id>bb173610</msdn-id>\t\n            <unmanaged>void ID3D10Device::RSGetViewports([InOut] unsigned int* NumViewports,[Out, Buffer, Optional] D3D10_VIEWPORT* pViewports)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::RSGetViewports</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.RasterizerStage.GetScissorRects(System.Int32@,SharpDX.Rectangle[])\">\n            <summary>\t\n            <p>Get the array of scissor rectangles bound to the rasterizer stage.</p>\t\n            </summary>\t\n            <param name=\"numRects\">No documentation.</param>\t\n            <param name=\"rectsRef\">No documentation.</param>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::RSGetScissorRects']/*\"/>\t\n            <msdn-id>bb173608</msdn-id>\t\n            <unmanaged>void ID3D10Device::RSGetScissorRects([InOut] unsigned int* NumRects,[Out, Buffer, Optional] RECT* pRects)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::RSGetScissorRects</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.RasterizerStage.State\">\n            <summary>\t\n            <p>Get or sets the <strong>rasterizer state</strong> from the rasterizer stage of the pipeline.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::RSGetState']/*\"/>\t\n            <msdn-id>bb173609</msdn-id>\t\n            <unmanaged>RSGetState / RSSetState</unmanaged>\t\n            <unmanaged-short>RSGetState</unmanaged-short>\t\n            <unmanaged>void ID3D10Device::RSGetState([Out] ID3D10RasterizerState** ppRasterizerState)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.Device1\">\n            <summary>\t\n            <p>The device interface represents a virtual adapter for Direct3D 10.1; it is used to perform rendering and create Direct3D resources.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>A device is created using <strong><see cref=\"M:SharpDX.Direct3D10.D3D10.CreateDevice1(SharpDX.DXGI.Adapter,SharpDX.Direct3D10.DriverType,System.IntPtr,SharpDX.Direct3D10.DeviceCreationFlags,SharpDX.Direct3D10.FeatureLevel,System.Int32,SharpDX.Direct3D10.Device1)\"/></strong>.</p><p>This method requires Windows Vista Service Pack 1.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device1']/*\"/>\t\n            <msdn-id>bb694546</msdn-id>\t\n            <unmanaged>ID3D10Device1</unmanaged>\t\n            <unmanaged-short>ID3D10Device1</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Device1.#ctor(SharpDX.Direct3D10.DriverType)\">\n            <summary>\n              Constructor for a D3D10.1 Device. See <see cref=\"M:SharpDX.Direct3D10.D3D10.CreateDevice1(SharpDX.DXGI.Adapter,SharpDX.Direct3D10.DriverType,System.IntPtr,SharpDX.Direct3D10.DeviceCreationFlags,SharpDX.Direct3D10.FeatureLevel,System.Int32,SharpDX.Direct3D10.Device1)\"/> for more information.\n            </summary>\n            <param name=\"driverType\"></param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Device1.#ctor(SharpDX.DXGI.Adapter)\">\n            <summary>\n              Constructor for a D3D10.1 Device. See <see cref=\"M:SharpDX.Direct3D10.D3D10.CreateDevice1(SharpDX.DXGI.Adapter,SharpDX.Direct3D10.DriverType,System.IntPtr,SharpDX.Direct3D10.DeviceCreationFlags,SharpDX.Direct3D10.FeatureLevel,System.Int32,SharpDX.Direct3D10.Device1)\"/> for more information.\n            </summary>\n            <param name=\"adapter\"></param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Device1.#ctor(SharpDX.Direct3D10.DriverType,SharpDX.Direct3D10.DeviceCreationFlags)\">\n            <summary>\n              Constructor for a D3D10.1 Device. See <see cref=\"M:SharpDX.Direct3D10.D3D10.CreateDevice1(SharpDX.DXGI.Adapter,SharpDX.Direct3D10.DriverType,System.IntPtr,SharpDX.Direct3D10.DeviceCreationFlags,SharpDX.Direct3D10.FeatureLevel,System.Int32,SharpDX.Direct3D10.Device1)\"/> for more information.\n            </summary>\n            <param name=\"driverType\"></param>\n            <param name=\"flags\"></param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Device1.#ctor(SharpDX.DXGI.Adapter,SharpDX.Direct3D10.DeviceCreationFlags)\">\n            <summary>\n              Constructor for a D3D10.1 Device. See <see cref=\"M:SharpDX.Direct3D10.D3D10.CreateDevice1(SharpDX.DXGI.Adapter,SharpDX.Direct3D10.DriverType,System.IntPtr,SharpDX.Direct3D10.DeviceCreationFlags,SharpDX.Direct3D10.FeatureLevel,System.Int32,SharpDX.Direct3D10.Device1)\"/> for more information.\n            </summary>\n            <param name=\"adapter\"></param>\n            <param name=\"flags\"></param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Device1.#ctor(SharpDX.Direct3D10.DriverType,SharpDX.Direct3D10.DeviceCreationFlags,SharpDX.Direct3D10.FeatureLevel)\">\n            <summary>\n              Constructor for a D3D10.1 Device. See <see cref=\"M:SharpDX.Direct3D10.D3D10.CreateDevice1(SharpDX.DXGI.Adapter,SharpDX.Direct3D10.DriverType,System.IntPtr,SharpDX.Direct3D10.DeviceCreationFlags,SharpDX.Direct3D10.FeatureLevel,System.Int32,SharpDX.Direct3D10.Device1)\"/> for more information.\n            </summary>\n            <param name=\"driverType\"></param>\n            <param name=\"flags\"></param>\n            <param name=\"featureLevel\"></param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Device1.#ctor(SharpDX.DXGI.Adapter,SharpDX.Direct3D10.DeviceCreationFlags,SharpDX.Direct3D10.FeatureLevel)\">\n            <summary>\n              Constructor for a D3D10.1 Device. See <see cref=\"M:SharpDX.Direct3D10.D3D10.CreateDevice1(SharpDX.DXGI.Adapter,SharpDX.Direct3D10.DriverType,System.IntPtr,SharpDX.Direct3D10.DeviceCreationFlags,SharpDX.Direct3D10.FeatureLevel,System.Int32,SharpDX.Direct3D10.Device1)\"/> for more information.\n            </summary>\n            <param name=\"adapter\"></param>\n            <param name=\"flags\"></param>\n            <param name=\"featureLevel\"></param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Device1.CreateWithSwapChain(SharpDX.Direct3D10.DriverType,SharpDX.Direct3D10.DeviceCreationFlags,SharpDX.DXGI.SwapChainDescription,SharpDX.Direct3D10.Device1@,SharpDX.DXGI.SwapChain@)\">\n            <summary>\n              Initializes a new instance of the <see cref = \"T:SharpDX.Direct3D10.Device1\" /> class along with a new <see cref = \"T:SharpDX.DXGI.SwapChain\" /> used for rendering.\n            </summary>\n            <param name = \"driverType\">The type of device to create.</param>\n            <param name = \"flags\">A list of runtime layers to enable.</param>\n            <param name = \"swapChainDescription\">Details used to create the swap chain.</param>\n            <param name = \"device\">When the method completes, contains the created device instance.</param>\n            <param name = \"swapChain\">When the method completes, contains the created swap chain instance.</param>\n            <returns>A <see cref = \"T:SharpDX.Result\" /> object describing the result of the operation.</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Device1.CreateWithSwapChain(SharpDX.DXGI.Adapter,SharpDX.Direct3D10.DeviceCreationFlags,SharpDX.DXGI.SwapChainDescription,SharpDX.Direct3D10.Device1@,SharpDX.DXGI.SwapChain@)\">\n            <summary>\n              Initializes a new instance of the <see cref = \"T:SharpDX.Direct3D10.Device1\" /> class along with a new <see cref = \"T:SharpDX.DXGI.SwapChain\" /> used for rendering.\n            </summary>\n            <param name = \"adapter\">The video adapter on which the device should be created.</param>\n            <param name = \"flags\">A list of runtime layers to enable.</param>\n            <param name = \"swapChainDescription\">Details used to create the swap chain.</param>\n            <param name = \"device\">When the method completes, contains the created device instance.</param>\n            <param name = \"swapChain\">When the method completes, contains the created swap chain instance.</param>\n            <returns>A <see cref = \"T:SharpDX.Result\" /> object describing the result of the operation.</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Device1.CreateWithSwapChain(SharpDX.Direct3D10.DriverType,SharpDX.Direct3D10.DeviceCreationFlags,SharpDX.DXGI.SwapChainDescription,SharpDX.Direct3D10.FeatureLevel,SharpDX.Direct3D10.Device1@,SharpDX.DXGI.SwapChain@)\">\n            <summary>\n              Initializes a new instance of the <see cref = \"T:SharpDX.Direct3D10.Device1\" /> class along with a new <see cref = \"T:SharpDX.DXGI.SwapChain\" /> used for rendering.\n            </summary>\n            <param name = \"driverType\">The type of device to create.</param>\n            <param name = \"flags\">A list of runtime layers to enable.</param>\n            <param name = \"swapChainDescription\">Details used to create the swap chain.</param>\n            <param name=\"featureLevel\">Desired feature level</param>\n            <param name = \"device\">When the method completes, contains the created device instance.</param>\n            <param name = \"swapChain\">When the method completes, contains the created swap chain instance.</param>\n            <returns>A <see cref = \"T:SharpDX.Result\" /> object describing the result of the operation.</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Device1.CreateWithSwapChain(SharpDX.DXGI.Adapter,SharpDX.Direct3D10.DeviceCreationFlags,SharpDX.DXGI.SwapChainDescription,SharpDX.Direct3D10.FeatureLevel,SharpDX.Direct3D10.Device1@,SharpDX.DXGI.SwapChain@)\">\n            <summary>\n              Initializes a new instance of the <see cref = \"T:SharpDX.Direct3D10.Device1\" /> class along with a new <see cref = \"T:SharpDX.DXGI.SwapChain\" /> used for rendering.\n            </summary>\n            <param name = \"adapter\">The video adapter on which the device should be created.</param>\n            <param name = \"flags\">A list of runtime layers to enable.</param>\n            <param name = \"swapChainDescription\">Details used to create the swap chain.</param>\n            <param name=\"featureLevel\">Desired feature level</param>\n            <param name = \"device\">When the method completes, contains the created device instance.</param>\n            <param name = \"swapChain\">When the method completes, contains the created swap chain instance.</param>\n            <returns>A <see cref = \"T:SharpDX.Result\" /> object describing the result of the operation.</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Device1.CreateWithSwapChain(SharpDX.DXGI.Adapter,SharpDX.Direct3D10.DriverType,SharpDX.Direct3D10.DeviceCreationFlags,SharpDX.DXGI.SwapChainDescription,SharpDX.Direct3D10.FeatureLevel,SharpDX.Direct3D10.Device1@,SharpDX.DXGI.SwapChain@)\">\n            <summary>\n              This overload has been deprecated. Use one of the alternatives that does not take both an adapter and a driver type.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Device1.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D10.Device1\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Device1.op_Explicit(System.IntPtr)~SharpDX.Direct3D10.Device1\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D10.Device1\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Device1.CreateShaderResourceView1(SharpDX.Direct3D10.Resource,System.Nullable{SharpDX.Direct3D10.ShaderResourceViewDescription1},SharpDX.Direct3D10.ShaderResourceView1)\">\n            <summary>\t\n            <p>Create a shader-resource view for accessing data in a resource.</p>\t\n            </summary>\t\n            <param name=\"resourceRef\">No documentation.</param>\t\n            <param name=\"descRef\">No documentation.</param>\t\n            <param name=\"sRViewOut\">No documentation.</param>\t\n            <returns><p>This method returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>A resource is made up of one or more subresources, a view identifies which subresources to allow the pipeline to access. In addition, each resource is bound to the pipeline using a view. A shader-resource view is designed to bind any buffer or texture resource to the shader stages using the following API methods: <strong>VSSetShaderResources</strong>, <strong>GSSetShaderResources</strong> and <strong>PSSetShaderResources</strong>.</p><p>Since a view is fully typed, this means that typeless resources become fully typed when bound to the pipeline.</p><p>This method requires Windows Vista Service Pack 1.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device1::CreateShaderResourceView1']/*\"/>\t\n            <msdn-id>bb694548</msdn-id>\t\n            <unmanaged>HRESULT ID3D10Device1::CreateShaderResourceView1([In] ID3D10Resource* pResource,[In, Optional] const D3D10_SHADER_RESOURCE_VIEW_DESC1* pDesc,[Out, Fast] ID3D10ShaderResourceView1** ppSRView)</unmanaged>\t\n            <unmanaged-short>ID3D10Device1::CreateShaderResourceView1</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Device1.CreateBlendState1(SharpDX.Direct3D10.BlendStateDescription1@,SharpDX.Direct3D10.BlendState1)\">\n            <summary>\t\n            <p>Create a blend-state object that encapsules blend state for the output-merger stage.</p>\t\n            </summary>\t\n            <param name=\"blendStateDescRef\"><dd>  <p>Pointer to a blend-state description (see <strong><see cref=\"T:SharpDX.Direct3D10.BlendStateDescription1\"/></strong>).</p> </dd></param>\t\n            <param name=\"blendStateOut\"><dd>  <p>Address of a reference to the blend-state object created (see <strong><see cref=\"T:SharpDX.Direct3D10.BlendState1\"/> Interface</strong>).</p> </dd></param>\t\n            <returns><p>This method returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>An application can create up to 4096 unique blend-state objects. For each object created, the runtime checks to see if a previous object has the same state. If such a previous object exists, the runtime will return a reference to previous instance instead of creating a duplicate object.</p><p>This method requires Windows Vista Service Pack 1.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device1::CreateBlendState1']/*\"/>\t\n            <msdn-id>bb694547</msdn-id>\t\n            <unmanaged>HRESULT ID3D10Device1::CreateBlendState1([In] const D3D10_BLEND_DESC1* pBlendStateDesc,[Out, Fast] ID3D10BlendState1** ppBlendState)</unmanaged>\t\n            <unmanaged-short>ID3D10Device1::CreateBlendState1</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Device1.GetFeatureLevel\">\n            <summary>\t\n            <p>Gets the feature level of the hardware device.</p>\t\n            </summary>\t\n            <returns><p>The feature level (see <strong><see cref=\"T:SharpDX.Direct3D10.FeatureLevel\"/></strong>).</p></returns>\t\n            <remarks>\t\n            <p>This method requires Windows Vista Service Pack 1.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device1::GetFeatureLevel']/*\"/>\t\n            <msdn-id>bb694549</msdn-id>\t\n            <unmanaged>D3D10_FEATURE_LEVEL1 ID3D10Device1::GetFeatureLevel()</unmanaged>\t\n            <unmanaged-short>ID3D10Device1::GetFeatureLevel</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.Device1.FeatureLevel\">\n            <summary>\t\n            <p>Gets the feature level of the hardware device.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This method requires Windows Vista Service Pack 1.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device1::GetFeatureLevel']/*\"/>\t\n            <msdn-id>bb694549</msdn-id>\t\n            <unmanaged>GetFeatureLevel</unmanaged>\t\n            <unmanaged-short>GetFeatureLevel</unmanaged-short>\t\n            <unmanaged>D3D10_FEATURE_LEVEL1 ID3D10Device1::GetFeatureLevel()</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.Effect\">\n            <summary>\t\n            <p>An <strong><see cref=\"T:SharpDX.Direct3D10.Effect\"/></strong> interface manages a set of state objects, resources, and shaders for implementing a rendering effect.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>An effect is created by calling <strong><see cref=\"M:SharpDX.Direct3D10.D3D10.CreateEffectFromMemory(System.IntPtr,SharpDX.PointerSize,System.Int32,SharpDX.Direct3D10.Device,SharpDX.Direct3D10.EffectPool,SharpDX.Direct3D10.Effect)\"/></strong>.</p><p>The effect system groups the information required for rendering into an effect which contains: state objects for assigning state changes in groups, resources for supplying input data and storing output data, and programs that control how the rendering is done called shaders. For more information, see Effects (Direct3D 10).</p><p><strong>Note</strong>??</p><p>If you call <strong>QueryInterface</strong> on an <strong><see cref=\"T:SharpDX.Direct3D10.Effect\"/></strong> object to retrieve the <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interface, <strong>QueryInterface</strong> returns E_NOINTERFACE. To work around this issue, use the following code:</p><pre><code> <see cref=\"T:SharpDX.ComObject\"/>* pIUnknown = (<see cref=\"T:SharpDX.ComObject\"/>*)pEffect; pIUnknown-&gt;AddRef();\t\n            </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Effect']/*\"/>\t\n            <msdn-id>bb173630</msdn-id>\t\n            <unmanaged>ID3D10Effect</unmanaged>\t\n            <unmanaged-short>ID3D10Effect</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Effect.#ctor(SharpDX.Direct3D10.Device,System.Byte[],SharpDX.D3DCompiler.EffectFlags,SharpDX.Direct3D10.EffectPool)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D10.Effect\"/> class.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"effectByteCode\">The effect byte code.</param>\n            <param name=\"fxFlags\">Effect compile options</param>\n            <param name=\"effectPool\">Optional. A reference to an memory space for effect variables that are shared across effects (see <see cref=\"T:SharpDX.Direct3D10.EffectPool\"/>).</param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Effect.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D10.Effect\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Effect.op_Explicit(System.IntPtr)~SharpDX.Direct3D10.Effect\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D10.Effect\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Effect.IsValid_\">\n            <summary>\t\n            <p>Test an effect to see if it contains valid syntax.</p>\t\n            </summary>\t\n            <returns><p><strong>TRUE</strong> if the code syntax is valid; otherwise <strong><see cref=\"F:SharpDX.Result.False\"/></strong>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Effect::IsValid']/*\"/>\t\n            <msdn-id>bb173772</msdn-id>\t\n            <unmanaged>BOOL ID3D10Effect::IsValid()</unmanaged>\t\n            <unmanaged-short>ID3D10Effect::IsValid</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Effect.IsPool_\">\n            <summary>\t\n            <p>Test an effect to see if it is part of a memory pool.</p>\t\n            </summary>\t\n            <returns><p><strong>TRUE</strong> if the effect is pooled; otherwise <strong><see cref=\"F:SharpDX.Result.False\"/></strong>. See <strong><see cref=\"T:SharpDX.Direct3D10.EffectPool\"/> Interface</strong>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Effect::IsPool']/*\"/>\t\n            <msdn-id>bb173771</msdn-id>\t\n            <unmanaged>BOOL ID3D10Effect::IsPool()</unmanaged>\t\n            <unmanaged-short>ID3D10Effect::IsPool</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Effect.GetDevice(SharpDX.Direct3D10.Device@)\">\n            <summary>\t\n            <p>Get the device that created the effect.</p>\t\n            </summary>\t\n            <param name=\"deviceOut\"><dd>  <p>A reference to an <strong><see cref=\"T:SharpDX.Direct3D10.Device\"/> Interface</strong>.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>An effect is created for a specific device, by calling a function such as <strong><see cref=\"M:SharpDX.Direct3D10.D3DX10.CreateEffectFromFile(System.String,SharpDX.Direct3D.ShaderMacro[],System.IntPtr,System.String,System.Int32,System.Int32,SharpDX.Direct3D10.Device,SharpDX.Direct3D10.EffectPool,System.IntPtr,SharpDX.Direct3D10.Effect@,SharpDX.Direct3D.Blob@,SharpDX.Result@)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Effect::GetDevice']/*\"/>\t\n            <msdn-id>bb173764</msdn-id>\t\n            <unmanaged>HRESULT ID3D10Effect::GetDevice([Out] ID3D10Device** ppDevice)</unmanaged>\t\n            <unmanaged-short>ID3D10Effect::GetDevice</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Effect.GetDescription(SharpDX.Direct3D10.EffectDescription@)\">\n            <summary>\t\n            <p>Get an effect description.</p>\t\n            </summary>\t\n            <param name=\"descRef\"><dd>  <p>A reference to an effect description (see <strong><see cref=\"T:SharpDX.Direct3D10.EffectDescription\"/></strong>).</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>An effect description contains basic information about an effect such as the techniques it contains and the constant buffer resources it requires.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Effect::GetDesc']/*\"/>\t\n            <msdn-id>bb173763</msdn-id>\t\n            <unmanaged>HRESULT ID3D10Effect::GetDesc([Out] D3D10_EFFECT_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>ID3D10Effect::GetDesc</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Effect.GetConstantBufferByIndex(System.Int32)\">\n            <summary>\t\n            <p>Get a constant buffer by index.</p>\t\n            </summary>\t\n            <param name=\"index\"><dd>  <p>A zero-based index.</p> </dd></param>\t\n            <returns><p>A reference to a <strong><see cref=\"T:SharpDX.Direct3D10.EffectConstantBuffer\"/> Interface</strong>.</p></returns>\t\n            <remarks>\t\n            <p>An effect that contains a variable that will be read/written by an application requires at least one constant buffer. For best performance, an effect should organize variables into one or more constant buffers based on their frequency of update.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Effect::GetConstantBufferByIndex']/*\"/>\t\n            <msdn-id>bb173761</msdn-id>\t\n            <unmanaged>ID3D10EffectConstantBuffer* ID3D10Effect::GetConstantBufferByIndex([In] unsigned int Index)</unmanaged>\t\n            <unmanaged-short>ID3D10Effect::GetConstantBufferByIndex</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Effect.GetConstantBufferByName(System.String)\">\n            <summary>\t\n            <p>Get a constant buffer by name.</p>\t\n            </summary>\t\n            <param name=\"name\"><dd>  <p>The constant-buffer name.</p> </dd></param>\t\n            <returns><p>A reference to the constant buffer indicated by the Name. See <strong><see cref=\"T:SharpDX.Direct3D10.EffectConstantBuffer\"/></strong>.</p></returns>\t\n            <remarks>\t\n            <p>An effect that contains a variable that will be read/written by an application requires at least one constant buffer. For best performance, an effect should organize variables into one or more constant buffers based on their frequency of update.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Effect::GetConstantBufferByName']/*\"/>\t\n            <msdn-id>bb173762</msdn-id>\t\n            <unmanaged>ID3D10EffectConstantBuffer* ID3D10Effect::GetConstantBufferByName([In] const char* Name)</unmanaged>\t\n            <unmanaged-short>ID3D10Effect::GetConstantBufferByName</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Effect.GetVariableByIndex(System.Int32)\">\n            <summary>\t\n            <p>Get a variable by index.</p>\t\n            </summary>\t\n            <param name=\"index\"><dd>  <p>A zero-based index.</p> </dd></param>\t\n            <returns><p>A reference to a <strong><see cref=\"T:SharpDX.Direct3D10.EffectVariable\"/> Interface</strong>.</p></returns>\t\n            <remarks>\t\n            <p>An effect may contain one or more variables. Variables outside of a technique are considered global to all effects, those located inside of a technique are local to that technique. You can access any local non-static effect variable using its name or with an index.</p><p>The method returns a reference to an <strong>effect-variable interface</strong> if a variable is not found; you can call <strong><see cref=\"M:SharpDX.Direct3D10.Effect.IsValid_\"/></strong> to verify whether or not the index exists.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Effect::GetVariableByIndex']/*\"/>\t\n            <msdn-id>bb173767</msdn-id>\t\n            <unmanaged>ID3D10EffectVariable* ID3D10Effect::GetVariableByIndex([In] unsigned int Index)</unmanaged>\t\n            <unmanaged-short>ID3D10Effect::GetVariableByIndex</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Effect.GetVariableByName(System.String)\">\n            <summary>\t\n            <p>Get a variable by name.</p>\t\n            </summary>\t\n            <param name=\"name\"><dd>  <p>The variable name.</p> </dd></param>\t\n            <returns><p>A reference to an <strong><see cref=\"T:SharpDX.Direct3D10.EffectVariable\"/> Interface</strong>.</p></returns>\t\n            <remarks>\t\n            <p>An effect may contain one or more variables. Variables outside of a technique are considered global to all effects, those located inside of a technique are local to that technique. You can access an effect variable using its name or with an index.</p><p>The method returns a reference to an <strong>effect-variable interface</strong> if a variable is not found; you can call <strong><see cref=\"M:SharpDX.Direct3D10.Effect.IsValid_\"/></strong> to verify whether or not the name exists.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Effect::GetVariableByName']/*\"/>\t\n            <msdn-id>Bb173768</msdn-id>\t\n            <unmanaged>ID3D10EffectVariable* ID3D10Effect::GetVariableByName([In] const char* Name)</unmanaged>\t\n            <unmanaged-short>ID3D10Effect::GetVariableByName</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Effect.GetVariableBySemantic(System.String)\">\n            <summary>\t\n            <p>Get a variable by semantic.</p>\t\n            </summary>\t\n            <param name=\"semantic\"><dd>  <p>The semantic name.</p> </dd></param>\t\n            <returns><p>A reference to the effect variable indicated by the Semantic. See <strong><see cref=\"T:SharpDX.Direct3D10.EffectVariable\"/> Interface</strong>.</p></returns>\t\n            <remarks>\t\n            <p>Each effect variable can have a semantic attached, which is a user defined metadata string. Some system-value semantics are reserved words that trigger built in functionality by pipeline stages.</p><p>The method returns a reference to an <strong>effect-variable interface</strong> if a variable is not found; you can call <strong><see cref=\"M:SharpDX.Direct3D10.Effect.IsValid_\"/></strong> to verify whether or not the semantic exists.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Effect::GetVariableBySemantic']/*\"/>\t\n            <msdn-id>bb173769</msdn-id>\t\n            <unmanaged>ID3D10EffectVariable* ID3D10Effect::GetVariableBySemantic([In] const char* Semantic)</unmanaged>\t\n            <unmanaged-short>ID3D10Effect::GetVariableBySemantic</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Effect.GetTechniqueByIndex(System.Int32)\">\n            <summary>\t\n            <p>Get a technique by index.</p>\t\n            </summary>\t\n            <param name=\"index\"><dd>  <p>A zero-based index.</p> </dd></param>\t\n            <returns><p>A reference to an <strong><see cref=\"T:SharpDX.Direct3D10.EffectTechnique\"/> Interface</strong>.</p></returns>\t\n            <remarks>\t\n            <p>An effect contains one or more techniques; each technique contains one or more passes. You can access a technique using its name or with an index.  For more about techniques, see techniques and passes.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Effect::GetTechniqueByIndex']/*\"/>\t\n            <msdn-id>bb173765</msdn-id>\t\n            <unmanaged>ID3D10EffectTechnique* ID3D10Effect::GetTechniqueByIndex([In] unsigned int Index)</unmanaged>\t\n            <unmanaged-short>ID3D10Effect::GetTechniqueByIndex</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Effect.GetTechniqueByName(System.String)\">\n            <summary>\t\n            <p>Get a technique by name.</p>\t\n            </summary>\t\n            <param name=\"name\"><dd>  <p>The name of the technique.</p> </dd></param>\t\n            <returns><p>A reference to an <strong><see cref=\"T:SharpDX.Direct3D10.EffectTechnique\"/> Interface</strong>, or <strong><c>null</c></strong> if the technique is not found.</p></returns>\t\n            <remarks>\t\n            <p>An effect contains one or more techniques; each technique contains one or more passes. You can access a technique using its name or with an index. For more about techniques, see techniques and passes.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Effect::GetTechniqueByName']/*\"/>\t\n            <msdn-id>bb173766</msdn-id>\t\n            <unmanaged>ID3D10EffectTechnique* ID3D10Effect::GetTechniqueByName([In] const char* Name)</unmanaged>\t\n            <unmanaged-short>ID3D10Effect::GetTechniqueByName</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Effect.Optimize\">\n            <summary>\t\n            <p>Minimize the amount of memory required for an effect.</p>\t\n            </summary>\t\n            <returns><p>Returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>An effect uses memory space two different ways: to store the information required by the runtime to execute an effect, and to store the metadata  required to reflect information back to an application using the API. You can minimize the amount of memory required by an effect by  calling <strong><see cref=\"M:SharpDX.Direct3D10.Effect.Optimize\"/></strong> which removes the reflection metadata from memory. API methods to read variables will no  longer work once reflection data has been removed.</p><p>The following methods will fail after Optimize has been called on an effect.</p><ul> <li> <strong><see cref=\"M:SharpDX.Direct3D10.Effect.GetConstantBufferByIndex(System.Int32)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.Direct3D10.Effect.GetConstantBufferByName(System.String)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.Direct3D10.Effect.GetDescription(SharpDX.Direct3D10.EffectDescription@)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.Direct3D10.Effect.GetDevice(SharpDX.Direct3D10.Device@)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.Direct3D10.Effect.GetTechniqueByIndex(System.Int32)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.Direct3D10.Effect.GetTechniqueByName(System.String)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.Direct3D10.Effect.GetVariableByIndex(System.Int32)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.Direct3D10.Effect.GetVariableByName(System.String)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.Direct3D10.Effect.GetVariableBySemantic(System.String)\"/></strong> </li> </ul><p>Note that references retrieved with these methods before calling <strong><see cref=\"M:SharpDX.Direct3D10.Effect.Optimize\"/></strong> are still valid  after <strong><see cref=\"M:SharpDX.Direct3D10.Effect.Optimize\"/></strong> is called.  This allows the application to get all the variables, techniques, and passes it will use,  call Optimize, and then use the effect.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Effect::Optimize']/*\"/>\t\n            <msdn-id>bb173773</msdn-id>\t\n            <unmanaged>HRESULT ID3D10Effect::Optimize()</unmanaged>\t\n            <unmanaged-short>ID3D10Effect::Optimize</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Effect.IsOptimized_\">\n            <summary>\t\n            <p>Test an effect to see if the reflection metadata has been removed from memory.</p>\t\n            </summary>\t\n            <returns><p><strong>TRUE</strong> if the effect is optimized; otherwise <strong><see cref=\"F:SharpDX.Result.False\"/></strong>.</p></returns>\t\n            <remarks>\t\n            <p>An effect uses memory space two different ways: to store the information required by the runtime to execute an effect, and to store the metadata required to reflect information back to an application using the API. You can minimize the amount of memory required by an effect by calling <strong><see cref=\"M:SharpDX.Direct3D10.Effect.Optimize\"/></strong> which removes the reflection metadata from memory. Of course, API methods to read variables will no longer work once reflection data has been removed.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Effect::IsOptimized']/*\"/>\t\n            <msdn-id>bb173770</msdn-id>\t\n            <unmanaged>BOOL ID3D10Effect::IsOptimized()</unmanaged>\t\n            <unmanaged-short>ID3D10Effect::IsOptimized</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.Effect.IsValid\">\n            <summary>\t\n            <p>Test an effect to see if it contains valid syntax.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Effect::IsValid']/*\"/>\t\n            <msdn-id>bb173772</msdn-id>\t\n            <unmanaged>IsValid</unmanaged>\t\n            <unmanaged-short>IsValid</unmanaged-short>\t\n            <unmanaged>BOOL ID3D10Effect::IsValid()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.Effect.IsPool\">\n            <summary>\t\n            <p>Test an effect to see if it is part of a memory pool.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Effect::IsPool']/*\"/>\t\n            <msdn-id>bb173771</msdn-id>\t\n            <unmanaged>IsPool</unmanaged>\t\n            <unmanaged-short>IsPool</unmanaged-short>\t\n            <unmanaged>BOOL ID3D10Effect::IsPool()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.Effect.Device\">\n            <summary>\t\n            <p>Get the device that created the effect.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>An effect is created for a specific device, by calling a function such as <strong><see cref=\"M:SharpDX.Direct3D10.D3DX10.CreateEffectFromFile(System.String,SharpDX.Direct3D.ShaderMacro[],System.IntPtr,System.String,System.Int32,System.Int32,SharpDX.Direct3D10.Device,SharpDX.Direct3D10.EffectPool,System.IntPtr,SharpDX.Direct3D10.Effect@,SharpDX.Direct3D.Blob@,SharpDX.Result@)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Effect::GetDevice']/*\"/>\t\n            <msdn-id>bb173764</msdn-id>\t\n            <unmanaged>GetDevice</unmanaged>\t\n            <unmanaged-short>GetDevice</unmanaged-short>\t\n            <unmanaged>HRESULT ID3D10Effect::GetDevice([Out] ID3D10Device** ppDevice)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.Effect.Description\">\n            <summary>\t\n            <p>Get an effect description.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>An effect description contains basic information about an effect such as the techniques it contains and the constant buffer resources it requires.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Effect::GetDesc']/*\"/>\t\n            <msdn-id>bb173763</msdn-id>\t\n            <unmanaged>GetDesc</unmanaged>\t\n            <unmanaged-short>GetDesc</unmanaged-short>\t\n            <unmanaged>HRESULT ID3D10Effect::GetDesc([Out] D3D10_EFFECT_DESC* pDesc)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.Effect.IsOptimized\">\n            <summary>\t\n            <p>Test an effect to see if the reflection metadata has been removed from memory.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>An effect uses memory space two different ways: to store the information required by the runtime to execute an effect, and to store the metadata required to reflect information back to an application using the API. You can minimize the amount of memory required by an effect by calling <strong><see cref=\"M:SharpDX.Direct3D10.Effect.Optimize\"/></strong> which removes the reflection metadata from memory. Of course, API methods to read variables will no longer work once reflection data has been removed.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Effect::IsOptimized']/*\"/>\t\n            <msdn-id>bb173770</msdn-id>\t\n            <unmanaged>IsOptimized</unmanaged>\t\n            <unmanaged-short>IsOptimized</unmanaged-short>\t\n            <unmanaged>BOOL ID3D10Effect::IsOptimized()</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.EffectBlendVariable\">\n            <summary>\t\n            <p>The blend-variable interface accesses blend state.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>An <strong><see cref=\"T:SharpDX.Direct3D10.EffectBlendVariable\"/> Interface</strong> is created when an effect is read into memory.</p><p>Effect variables are saved in memory in the backing store; when a technique is applied, the values in the backing store are copied to the device. You can use either of these methods to return state. For examples, see Two Ways to Get the State in an Effect Variable.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectBlendVariable']/*\"/>\t\n            <msdn-id>bb173631</msdn-id>\t\n            <unmanaged>ID3D10EffectBlendVariable</unmanaged>\t\n            <unmanaged-short>ID3D10EffectBlendVariable</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.EffectVariable\">\n            <summary>\t\n            <p>The <strong><see cref=\"T:SharpDX.Direct3D10.EffectVariable\"/></strong> interface is the base class for all effect variables.</p><p>The lifetime of an <strong><see cref=\"T:SharpDX.Direct3D10.EffectVariable\"/></strong> object is equal to the lifetime of its parent <strong><see cref=\"T:SharpDX.Direct3D10.Effect\"/></strong> object.</p><ul> <li>Methods</li> </ul>Methods<p>The <strong><see cref=\"T:SharpDX.Direct3D10.EffectVariable\"/></strong> interface has the following methods.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectVariable']/*\"/>\t\n            <msdn-id>bb173724</msdn-id>\t\n            <unmanaged>ID3D10EffectVariable</unmanaged>\t\n            <unmanaged-short>ID3D10EffectVariable</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectVariable.SetRawValue(SharpDX.DataStream,System.Int32)\">\n            <summary>\n            Set data.\n            </summary>\n            <param name=\"data\">A reference to the variable.</param>\n            <param name=\"count\">size in bytes of data to write.</param>\n            <returns>\n            Returns one of the following {{Direct3D 10 Return Codes}}.\n            </returns>\n            <remarks>\n            This method does no conversion or type checking; it is therefore a very quick way to access array items.\n            </remarks>\n            <unmanaged>HRESULT ID3D10EffectVariable::SetRawValue([None] void* pData,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectVariable.GetRawValue(System.Int32)\">\n            <summary>\t\n            Get data.\t\n            </summary>\t\n            <remarks>\t\n            This method does no conversion or type checking; it is therefore a very quick way to access array items. \t\n            </remarks>\t\n            <param name=\"count\">The number of bytes to get. </param>\n            <returns>Returns a <see cref=\"T:SharpDX.DataStream\"/> filled with the value. </returns>\n            <unmanaged>HRESULT ID3D10EffectVariable::GetRawValue([None] void* pData,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectVariable.AsScalar\">\n            <summary>\t\n            Get a scalar variable.\t\n            </summary>\t\n            <remarks>\t\n            AsScalar returns a version of the effect variable that has been specialized to a scalar variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain scalar data. Applications can test the returned object for validity by calling {{IsValid}}. \t\n            </remarks>\t\n            <returns>A reference to a scalar variable. See <see cref=\"T:SharpDX.Direct3D10.EffectScalarVariable\"/>. </returns>\n            <unmanaged>ID3D10EffectScalarVariable* ID3D10EffectVariable::AsScalar()</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectVariable.AsVector\">\n            <summary>\t\n            Get a vector variable.\t\n            </summary>\t\n            <remarks>\t\n            AsVector returns a version of the effect variable that has been specialized to a vector variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain vector data. Applications can test the returned object for validity by calling {{IsValid}}. \t\n            </remarks>\t\n            <returns>A reference to a vector variable. See <see cref=\"T:SharpDX.Direct3D10.EffectVectorVariable\"/>. </returns>\n            <unmanaged>ID3D10EffectVectorVariable* ID3D10EffectVariable::AsVector()</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectVariable.AsMatrix\">\n            <summary>\t\n            Get a matrix variable.\t\n            </summary>\t\n            <remarks>\t\n            AsMatrix returns a version of the effect variable that has been specialized to a matrix variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain matrix data. Applications can test the returned object for validity by calling {{IsValid}}. \t\n            </remarks>\t\n            <returns>A reference to a matrix variable. See <see cref=\"T:SharpDX.Direct3D10.EffectMatrixVariable\"/>. </returns>\n            <unmanaged>ID3D10EffectMatrixVariable* ID3D10EffectVariable::AsMatrix()</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectVariable.AsString\">\n            <summary>\t\n            Get a string variable.\t\n            </summary>\t\n            <remarks>\t\n            AsString returns a version of the effect variable that has been specialized to a string variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain string data. Applications can test the returned object for validity by calling {{IsValid}}. \t\n            </remarks>\t\n            <returns>A reference to a string variable. See <see cref=\"T:SharpDX.Direct3D10.EffectStringVariable\"/>. </returns>\n            <unmanaged>ID3D10EffectStringVariable* ID3D10EffectVariable::AsString()</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectVariable.AsShaderResource\">\n            <summary>\t\n            Get a shader-resource variable.\t\n            </summary>\t\n            <remarks>\t\n            AsShaderResource returns a version of the effect variable that has been specialized to a shader-resource variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain shader-resource data. Applications can test the returned object for validity by calling {{IsValid}}. \t\n            </remarks>\t\n            <returns>A reference to a shader-resource variable. See <see cref=\"T:SharpDX.Direct3D10.EffectShaderResourceVariable\"/>. </returns>\n            <unmanaged>ID3D10EffectShaderResourceVariable* ID3D10EffectVariable::AsShaderResource()</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectVariable.AsRenderTargetView\">\n            <summary>\t\n            Get a render-target-view variable.\t\n            </summary>\t\n            <remarks>\t\n            This method returns a version of the effect variable that has been specialized to a render-target-view variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain render-target-view data. Applications can test the returned object for validity by calling {{IsValid}}. \t\n            </remarks>\t\n            <returns>A reference to a render-target-view variable. See <see cref=\"T:SharpDX.Direct3D10.EffectRenderTargetViewVariable\"/>. </returns>\n            <unmanaged>ID3D10EffectRenderTargetViewVariable* ID3D10EffectVariable::AsRenderTargetView()</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectVariable.AsDepthStencilView\">\n            <summary>\t\n            Get a depth-stencil-view variable.\t\n            </summary>\t\n            <remarks>\t\n            This method returns a version of the effect variable that has been specialized to a depth-stencil-view variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain depth-stencil-view data. Applications can test the returned object for validity by calling {{IsValid}}. \t\n            </remarks>\t\n            <returns>A reference to a depth-stencil-view variable. See <see cref=\"T:SharpDX.Direct3D10.EffectDepthStencilViewVariable\"/>. </returns>\n            <unmanaged>ID3D10EffectDepthStencilViewVariable* ID3D10EffectVariable::AsDepthStencilView()</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectVariable.AsConstantBuffer\">\n            <summary>\t\n            Get a constant buffer.\t\n            </summary>\t\n            <remarks>\t\n            AsConstantBuffer returns a version of the effect variable that has been specialized to a constant buffer. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain constant buffer data. Applications can test the returned object for validity by calling {{IsValid}}. \t\n            </remarks>\t\n            <returns>A reference to a constant buffer. See <see cref=\"T:SharpDX.Direct3D10.EffectConstantBuffer\"/>. </returns>\n            <unmanaged>ID3D10EffectConstantBuffer* ID3D10EffectVariable::AsConstantBuffer()</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectVariable.AsShader\">\n            <summary>\t\n            Get a shader variable.\t\n            </summary>\t\n            <remarks>\t\n            AsShader returns a version of the effect variable that has been specialized to a shader variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain shader data. Applications can test the returned object for validity by calling {{IsValid}}. \t\n            </remarks>\t\n            <returns>A reference to a shader variable. See <see cref=\"T:SharpDX.Direct3D10.EffectShaderVariable\"/>. </returns>\n            <unmanaged>ID3D10EffectShaderVariable* ID3D10EffectVariable::AsShader()</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectVariable.AsBlend\">\n            <summary>\t\n            Get a effect-blend variable.\t\n            </summary>\t\n            <remarks>\t\n            AsBlend returns a version of the effect variable that has been specialized to an effect-blend variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain effect-blend data. Applications can test the returned object for validity by calling {{IsValid}}. \t\n            </remarks>\t\n            <returns>A reference to an effect blend variable. See <see cref=\"T:SharpDX.Direct3D10.EffectBlendVariable\"/>. </returns>\n            <unmanaged>ID3D10EffectBlendVariable* ID3D10EffectVariable::AsBlend()</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectVariable.AsDepthStencil\">\n            <summary>\t\n            Get a depth-stencil variable.\t\n            </summary>\t\n            <remarks>\t\n            AsDepthStencil returns a version of the effect variable that has been specialized to a depth-stencil variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain depth-stencil data. Applications can test the returned object for validity by calling {{IsValid}}. \t\n            </remarks>\t\n            <returns>A reference to a depth-stencil variable. See <see cref=\"T:SharpDX.Direct3D10.EffectDepthStencilVariable\"/>. </returns>\n            <unmanaged>ID3D10EffectDepthStencilVariable* ID3D10EffectVariable::AsDepthStencil()</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectVariable.AsRasterizer\">\n            <summary>\t\n            Get a rasterizer variable.\t\n            </summary>\t\n            <remarks>\t\n            AsRasterizer returns a version of the effect variable that has been specialized to a rasterizer variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain rasterizer data. Applications can test the returned object for validity by calling {{IsValid}}. \t\n            </remarks>\t\n            <returns>A reference to a rasterizer variable. See <see cref=\"T:SharpDX.Direct3D10.EffectRasterizerVariable\"/>. </returns>\n            <unmanaged>ID3D10EffectRasterizerVariable* ID3D10EffectVariable::AsRasterizer()</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectVariable.AsSampler\">\n            <summary>\t\n            Get a sampler variable.\t\n            </summary>\t\n            <remarks>\t\n            AsSampler returns a version of the effect variable that has been specialized to a sampler variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain sampler data. Applications can test the returned object for validity by calling {{IsValid}}. \t\n            </remarks>\t\n            <returns>A reference to a sampler variable. See <see cref=\"T:SharpDX.Direct3D10.EffectSamplerVariable\"/>. </returns>\n            <unmanaged>ID3D10EffectSamplerVariable* ID3D10EffectVariable::AsSampler()</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectVariable.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D10.EffectVariable\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectVariable.op_Explicit(System.IntPtr)~SharpDX.Direct3D10.EffectVariable\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D10.EffectVariable\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectVariable.IsValid_\">\n            <summary>\t\n            <p>Compare the data type with the data stored.</p>\t\n            </summary>\t\n            <returns><p><strong>TRUE</strong> if the syntax is valid; otherwise <strong><see cref=\"F:SharpDX.Result.False\"/></strong>.</p></returns>\t\n            <remarks>\t\n            <p>This method checks that the data type matches the data stored after casting one interface to another (using any of the As methods).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectVariable::IsValid']/*\"/>\t\n            <msdn-id>bb173746</msdn-id>\t\n            <unmanaged>BOOL ID3D10EffectVariable::IsValid()</unmanaged>\t\n            <unmanaged-short>ID3D10EffectVariable::IsValid</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectVariable.GetTypeInfo\">\n            <summary>\t\n            <p>Get type information.</p>\t\n            </summary>\t\n            <returns><p>A reference to an <strong><see cref=\"T:SharpDX.Direct3D10.EffectType\"/> Interface</strong>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectVariable::GetType']/*\"/>\t\n            <msdn-id>bb173745</msdn-id>\t\n            <unmanaged>ID3D10EffectType* ID3D10EffectVariable::GetType()</unmanaged>\t\n            <unmanaged-short>ID3D10EffectVariable::GetType</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectVariable.GetDescription(SharpDX.Direct3D10.EffectVariableDescription@)\">\n            <summary>\t\n            <p>Get a description.</p>\t\n            </summary>\t\n            <param name=\"descRef\"><dd>  <p>A reference to an effect-variable description (see <strong><see cref=\"T:SharpDX.Direct3D10.EffectVariableDescription\"/></strong>).</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectVariable::GetDesc']/*\"/>\t\n            <msdn-id>bb173738</msdn-id>\t\n            <unmanaged>HRESULT ID3D10EffectVariable::GetDesc([Out] D3D10_EFFECT_VARIABLE_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectVariable::GetDesc</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectVariable.GetAnnotationByIndex(System.Int32)\">\n            <summary>\t\n            <p>Get an annotation by index.</p>\t\n            </summary>\t\n            <param name=\"index\"><dd>  <p>A zero-based index.</p> </dd></param>\t\n            <returns><p>A reference to an <strong><see cref=\"T:SharpDX.Direct3D10.EffectVariable\"/> Interface</strong>.</p></returns>\t\n            <remarks>\t\n            <p>Annonations can be attached to a technique, a pass or a gloval variable. For the syntax, see Annotation Syntax (Direct3D 10).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectVariable::GetAnnotationByIndex']/*\"/>\t\n            <msdn-id>bb173736</msdn-id>\t\n            <unmanaged>ID3D10EffectVariable* ID3D10EffectVariable::GetAnnotationByIndex([In] unsigned int Index)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectVariable::GetAnnotationByIndex</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectVariable.GetAnnotationByName(System.String)\">\n            <summary>\t\n            <p>Get an annotation by name.</p>\t\n            </summary>\t\n            <param name=\"name\"><dd>  <p>The annotation name.</p> </dd></param>\t\n            <returns><p>A reference to an <strong><see cref=\"T:SharpDX.Direct3D10.EffectVariable\"/> Interface</strong>.  Note that if the annotation is not found the <strong><see cref=\"T:SharpDX.Direct3D10.EffectVariable\"/> Interface</strong> returned will be empty. The <strong><see cref=\"M:SharpDX.Direct3D10.EffectVariable.IsValid_\"/></strong> method should be called to determine whether the annotation was found.</p></returns>\t\n            <remarks>\t\n            <p>Annonations can be attached to a technique, a pass or a gloval variable. For the syntax, see Annotation Syntax (Direct3D 10).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectVariable::GetAnnotationByName']/*\"/>\t\n            <msdn-id>bb173737</msdn-id>\t\n            <unmanaged>ID3D10EffectVariable* ID3D10EffectVariable::GetAnnotationByName([In] const char* Name)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectVariable::GetAnnotationByName</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectVariable.GetMemberByIndex(System.Int32)\">\n            <summary>\t\n            <p>Get a structure member by index.</p>\t\n            </summary>\t\n            <param name=\"index\"><dd>  <p>A zero-based index.</p> </dd></param>\t\n            <returns><p>A reference to an <strong><see cref=\"T:SharpDX.Direct3D10.EffectVariable\"/> Interface</strong>.</p></returns>\t\n            <remarks>\t\n            <p>If the effect variable is an structure, use this method to look up a member by index.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectVariable::GetMemberByIndex']/*\"/>\t\n            <msdn-id>bb173740</msdn-id>\t\n            <unmanaged>ID3D10EffectVariable* ID3D10EffectVariable::GetMemberByIndex([In] unsigned int Index)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectVariable::GetMemberByIndex</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectVariable.GetMemberByName(System.String)\">\n            <summary>\t\n            <p>Get a structure member by name.</p>\t\n            </summary>\t\n            <param name=\"name\"><dd>  <p>Member name.</p> </dd></param>\t\n            <returns><p>A reference to an <strong><see cref=\"T:SharpDX.Direct3D10.EffectVariable\"/> Interface</strong>.</p></returns>\t\n            <remarks>\t\n            <p>If the effect variable is an structure, use this method to look up a member by name.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectVariable::GetMemberByName']/*\"/>\t\n            <msdn-id>bb173741</msdn-id>\t\n            <unmanaged>ID3D10EffectVariable* ID3D10EffectVariable::GetMemberByName([In] const char* Name)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectVariable::GetMemberByName</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectVariable.GetMemberBySemantic(System.String)\">\n            <summary>\t\n            <p>Get a structure member by semantic.</p>\t\n            </summary>\t\n            <param name=\"semantic\"><dd>  <p>The semantic.</p> </dd></param>\t\n            <returns><p>A reference to an <strong><see cref=\"T:SharpDX.Direct3D10.EffectVariable\"/> Interface</strong>.</p></returns>\t\n            <remarks>\t\n            <p>If the effect variable is an structure, use this method to look up a member by attached semantic.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectVariable::GetMemberBySemantic']/*\"/>\t\n            <msdn-id>bb173742</msdn-id>\t\n            <unmanaged>ID3D10EffectVariable* ID3D10EffectVariable::GetMemberBySemantic([In] const char* Semantic)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectVariable::GetMemberBySemantic</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectVariable.GetElement(System.Int32)\">\n            <summary>\t\n            <p>Get an array element.</p>\t\n            </summary>\t\n            <param name=\"index\"><dd>  <p>A zero-based index; otherwise 0.</p> </dd></param>\t\n            <returns><p>A reference to an <strong><see cref=\"T:SharpDX.Direct3D10.EffectVariable\"/> Interface</strong>.</p></returns>\t\n            <remarks>\t\n            <p>If the effect variable is an array, use this method to return one of the elements.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectVariable::GetElement']/*\"/>\t\n            <msdn-id>bb173739</msdn-id>\t\n            <unmanaged>ID3D10EffectVariable* ID3D10EffectVariable::GetElement([In] unsigned int Index)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectVariable::GetElement</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectVariable.GetParentConstantBuffer\">\n            <summary>\t\n            <p>Get a constant buffer.</p>\t\n            </summary>\t\n            <returns><p>A reference to a <strong><see cref=\"T:SharpDX.Direct3D10.EffectConstantBuffer\"/> Interface</strong>.</p></returns>\t\n            <remarks>\t\n            <p>Effect variables are read-from or written-to a constant buffer.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectVariable::GetParentConstantBuffer']/*\"/>\t\n            <msdn-id>bb173743</msdn-id>\t\n            <unmanaged>ID3D10EffectConstantBuffer* ID3D10EffectVariable::GetParentConstantBuffer()</unmanaged>\t\n            <unmanaged-short>ID3D10EffectVariable::GetParentConstantBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectVariable.AsScalar_\">\n            <summary>\t\n            <p>Get a scalar variable.</p>\t\n            </summary>\t\n            <returns><p>A reference to a scalar variable. See <strong><see cref=\"T:SharpDX.Direct3D10.EffectScalarVariable\"/></strong>.</p></returns>\t\n            <remarks>\t\n            <p>AsScalar returns a version of the effect variable that has been specialized to a scalar variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain scalar data.</p><p>Applications can test the returned object for validity by calling <strong>IsValid</strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectVariable::AsScalar']/*\"/>\t\n            <msdn-id>bb173731</msdn-id>\t\n            <unmanaged>ID3D10EffectScalarVariable* ID3D10EffectVariable::AsScalar()</unmanaged>\t\n            <unmanaged-short>ID3D10EffectVariable::AsScalar</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectVariable.AsVector_\">\n            <summary>\t\n            <p>Get a vector variable.</p>\t\n            </summary>\t\n            <returns><p>A reference to a vector variable. See <strong><see cref=\"T:SharpDX.Direct3D10.EffectVectorVariable\"/></strong>.</p></returns>\t\n            <remarks>\t\n            <p>AsVector returns a version of the effect variable that has been specialized to a vector variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain vector data.</p><p>Applications can test the returned object for validity by calling <strong>IsValid</strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectVariable::AsVector']/*\"/>\t\n            <msdn-id>bb173735</msdn-id>\t\n            <unmanaged>ID3D10EffectVectorVariable* ID3D10EffectVariable::AsVector()</unmanaged>\t\n            <unmanaged-short>ID3D10EffectVariable::AsVector</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectVariable.AsMatrix_\">\n            <summary>\t\n            <p>Get a matrix variable.</p>\t\n            </summary>\t\n            <returns><p>A reference to a matrix variable. See <strong><see cref=\"T:SharpDX.Direct3D10.EffectMatrixVariable\"/></strong>.</p></returns>\t\n            <remarks>\t\n            <p>AsMatrix returns a version of the effect variable that has been specialized to a matrix variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain matrix data.</p><p>Applications can test the returned object for validity by calling <strong>IsValid</strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectVariable::AsMatrix']/*\"/>\t\n            <msdn-id>bb173728</msdn-id>\t\n            <unmanaged>ID3D10EffectMatrixVariable* ID3D10EffectVariable::AsMatrix()</unmanaged>\t\n            <unmanaged-short>ID3D10EffectVariable::AsMatrix</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectVariable.AsString_\">\n            <summary>\t\n            <p>Get a string variable.</p>\t\n            </summary>\t\n            <returns><p>A reference to a string variable. See <strong><see cref=\"T:SharpDX.Direct3D10.EffectStringVariable\"/></strong>.</p></returns>\t\n            <remarks>\t\n            <p>AsString returns a version of the effect variable that has been specialized to a string variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain string data.</p><p>Applications can test the returned object for validity by calling <strong>IsValid</strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectVariable::AsString']/*\"/>\t\n            <msdn-id>bb173734</msdn-id>\t\n            <unmanaged>ID3D10EffectStringVariable* ID3D10EffectVariable::AsString()</unmanaged>\t\n            <unmanaged-short>ID3D10EffectVariable::AsString</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectVariable.AsShaderResource_\">\n            <summary>\t\n            <p>Get a shader-resource variable.</p>\t\n            </summary>\t\n            <returns><p>A reference to a shader-resource variable. See <strong><see cref=\"T:SharpDX.Direct3D10.EffectShaderResourceVariable\"/></strong>.</p></returns>\t\n            <remarks>\t\n            <p>AsShaderResource returns a version of the effect variable that has been specialized to a shader-resource variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain shader-resource data.</p><p>Applications can test the returned object for validity by calling <strong>IsValid</strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectVariable::AsShaderResource']/*\"/>\t\n            <msdn-id>Bb173733</msdn-id>\t\n            <unmanaged>ID3D10EffectShaderResourceVariable* ID3D10EffectVariable::AsShaderResource()</unmanaged>\t\n            <unmanaged-short>ID3D10EffectVariable::AsShaderResource</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectVariable.AsRenderTargetView_\">\n            <summary>\t\n            <p>Get a render-target-view variable.</p>\t\n            </summary>\t\n            <returns><p>A reference to a render-target-view variable. See <strong><see cref=\"T:SharpDX.Direct3D10.EffectRenderTargetViewVariable\"/> Interface</strong>.</p></returns>\t\n            <remarks>\t\n            <p>This method returns a version of the effect variable that has been specialized to a render-target-view variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain render-target-view data.</p><p>Applications can test the returned object for validity by calling <strong>IsValid</strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectVariable::AsRenderTargetView']/*\"/>\t\n            <msdn-id>bb944008</msdn-id>\t\n            <unmanaged>ID3D10EffectRenderTargetViewVariable* ID3D10EffectVariable::AsRenderTargetView()</unmanaged>\t\n            <unmanaged-short>ID3D10EffectVariable::AsRenderTargetView</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectVariable.AsDepthStencilView_\">\n            <summary>\t\n            <p>Get a depth-stencil-view variable.</p>\t\n            </summary>\t\n            <returns><p>A reference to a depth-stencil-view variable. See <strong><see cref=\"T:SharpDX.Direct3D10.EffectDepthStencilViewVariable\"/> Interface</strong>.</p></returns>\t\n            <remarks>\t\n            <p>This method returns a version of the effect variable that has been specialized to a depth-stencil-view variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain depth-stencil-view data.</p><p>Applications can test the returned object for validity by calling <strong>IsValid</strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectVariable::AsDepthStencilView']/*\"/>\t\n            <msdn-id>bb944007</msdn-id>\t\n            <unmanaged>ID3D10EffectDepthStencilViewVariable* ID3D10EffectVariable::AsDepthStencilView()</unmanaged>\t\n            <unmanaged-short>ID3D10EffectVariable::AsDepthStencilView</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectVariable.AsConstantBuffer_\">\n            <summary>\t\n            <p>Get a constant buffer.</p>\t\n            </summary>\t\n            <returns><p>A reference to a constant buffer. See <strong><see cref=\"T:SharpDX.Direct3D10.EffectConstantBuffer\"/></strong>.</p></returns>\t\n            <remarks>\t\n            <p>AsConstantBuffer returns a version of the effect variable that has been specialized to a constant buffer. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain constant buffer data.</p><p>Applications can test the returned object for validity by calling <strong>IsValid</strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectVariable::AsConstantBuffer']/*\"/>\t\n            <msdn-id>bb173726</msdn-id>\t\n            <unmanaged>ID3D10EffectConstantBuffer* ID3D10EffectVariable::AsConstantBuffer()</unmanaged>\t\n            <unmanaged-short>ID3D10EffectVariable::AsConstantBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectVariable.AsShader_\">\n            <summary>\t\n            <p>Get a shader variable.</p>\t\n            </summary>\t\n            <returns><p>A reference to a shader variable. See <strong><see cref=\"T:SharpDX.Direct3D10.EffectShaderVariable\"/></strong>.</p></returns>\t\n            <remarks>\t\n            <p>AsShader returns a version of the effect variable that has been specialized to a shader variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain shader data.</p><p>Applications can test the returned object for validity by calling <strong>IsValid</strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectVariable::AsShader']/*\"/>\t\n            <msdn-id>bb173732</msdn-id>\t\n            <unmanaged>ID3D10EffectShaderVariable* ID3D10EffectVariable::AsShader()</unmanaged>\t\n            <unmanaged-short>ID3D10EffectVariable::AsShader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectVariable.AsBlend_\">\n            <summary>\t\n            <p>Get a effect-blend variable.</p>\t\n            </summary>\t\n            <returns><p>A reference to an effect blend variable. See <strong><see cref=\"T:SharpDX.Direct3D10.EffectBlendVariable\"/></strong>.</p></returns>\t\n            <remarks>\t\n            <p>AsBlend returns a version of the effect variable that has been specialized to an effect-blend variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain effect-blend data.</p><p>Applications can test the returned object for validity by calling <strong>IsValid</strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectVariable::AsBlend']/*\"/>\t\n            <msdn-id>bb173725</msdn-id>\t\n            <unmanaged>ID3D10EffectBlendVariable* ID3D10EffectVariable::AsBlend()</unmanaged>\t\n            <unmanaged-short>ID3D10EffectVariable::AsBlend</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectVariable.AsDepthStencil_\">\n            <summary>\t\n            <p>Get a depth-stencil variable.</p>\t\n            </summary>\t\n            <returns><p>A reference to a depth-stencil variable. See <strong><see cref=\"T:SharpDX.Direct3D10.EffectDepthStencilVariable\"/></strong>.</p></returns>\t\n            <remarks>\t\n            <p>AsDepthStencil returns a version of the effect variable that has been specialized to a depth-stencil variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain depth-stencil data.</p><p>Applications can test the returned object for validity by calling <strong>IsValid</strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectVariable::AsDepthStencil']/*\"/>\t\n            <msdn-id>bb173727</msdn-id>\t\n            <unmanaged>ID3D10EffectDepthStencilVariable* ID3D10EffectVariable::AsDepthStencil()</unmanaged>\t\n            <unmanaged-short>ID3D10EffectVariable::AsDepthStencil</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectVariable.AsRasterizer_\">\n            <summary>\t\n            <p>Get a rasterizer variable.</p>\t\n            </summary>\t\n            <returns><p>A reference to a rasterizer variable. See <strong><see cref=\"T:SharpDX.Direct3D10.EffectRasterizerVariable\"/></strong>.</p></returns>\t\n            <remarks>\t\n            <p>AsRasterizer returns a version of the effect variable that has been specialized to a rasterizer variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain rasterizer data.</p><p>Applications can test the returned object for validity by calling <strong>IsValid</strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectVariable::AsRasterizer']/*\"/>\t\n            <msdn-id>bb173729</msdn-id>\t\n            <unmanaged>ID3D10EffectRasterizerVariable* ID3D10EffectVariable::AsRasterizer()</unmanaged>\t\n            <unmanaged-short>ID3D10EffectVariable::AsRasterizer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectVariable.AsSampler_\">\n            <summary>\t\n            <p>Get a sampler variable.</p>\t\n            </summary>\t\n            <returns><p>A reference to a sampler variable. See <strong><see cref=\"T:SharpDX.Direct3D10.EffectSamplerVariable\"/></strong>.</p></returns>\t\n            <remarks>\t\n            <p>AsSampler returns a version of the effect variable that has been specialized to a sampler variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain sampler data.</p><p>Applications can test the returned object for validity by calling <strong>IsValid</strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectVariable::AsSampler']/*\"/>\t\n            <msdn-id>bb173730</msdn-id>\t\n            <unmanaged>ID3D10EffectSamplerVariable* ID3D10EffectVariable::AsSampler()</unmanaged>\t\n            <unmanaged-short>ID3D10EffectVariable::AsSampler</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectVariable.SetRawValue(System.IntPtr,System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Set data.</p>\t\n            </summary>\t\n            <param name=\"dataRef\"><dd>  <p>A reference to the variable.</p> </dd></param>\t\n            <param name=\"offset\"><dd>  <p>The offset (in bytes) from the beginning of the reference to the data.</p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>The number of bytes to set.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>This method does no conversion or type checking; it is therefore a very quick way to access array items.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectVariable::SetRawValue']/*\"/>\t\n            <msdn-id>bb173747</msdn-id>\t\n            <unmanaged>HRESULT ID3D10EffectVariable::SetRawValue([In] void* pData,[In] unsigned int Offset,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectVariable::SetRawValue</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectVariable.GetRawValue(System.IntPtr,System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Get data.</p>\t\n            </summary>\t\n            <param name=\"dataRef\"><dd>  <p>A reference to the variable.</p> </dd></param>\t\n            <param name=\"offset\"><dd>  <p>The offset (in bytes) from the beginning of the reference to the data.</p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>The number of bytes to get.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>This method does no conversion or type checking; it is therefore a very quick way to access array items.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectVariable::GetRawValue']/*\"/>\t\n            <msdn-id>bb173744</msdn-id>\t\n            <unmanaged>HRESULT ID3D10EffectVariable::GetRawValue([In] void* pData,[In] unsigned int Offset,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectVariable::GetRawValue</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.EffectVariable.IsValid\">\n            <summary>\t\n            <p>Compare the data type with the data stored.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This method checks that the data type matches the data stored after casting one interface to another (using any of the As methods).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectVariable::IsValid']/*\"/>\t\n            <msdn-id>bb173746</msdn-id>\t\n            <unmanaged>IsValid</unmanaged>\t\n            <unmanaged-short>IsValid</unmanaged-short>\t\n            <unmanaged>BOOL ID3D10EffectVariable::IsValid()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.EffectVariable.TypeInfo\">\n            <summary>\t\n            <p>Get type information.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectVariable::GetType']/*\"/>\t\n            <msdn-id>bb173745</msdn-id>\t\n            <unmanaged>GetType</unmanaged>\t\n            <unmanaged-short>GetType</unmanaged-short>\t\n            <unmanaged>ID3D10EffectType* ID3D10EffectVariable::GetType()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.EffectVariable.Description\">\n            <summary>\t\n            <p>Get a description.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectVariable::GetDesc']/*\"/>\t\n            <msdn-id>bb173738</msdn-id>\t\n            <unmanaged>GetDesc</unmanaged>\t\n            <unmanaged-short>GetDesc</unmanaged-short>\t\n            <unmanaged>HRESULT ID3D10EffectVariable::GetDesc([Out] D3D10_EFFECT_VARIABLE_DESC* pDesc)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.EffectVariable.ParentConstantBuffer\">\n            <summary>\t\n            <p>Get a constant buffer.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Effect variables are read-from or written-to a constant buffer.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectVariable::GetParentConstantBuffer']/*\"/>\t\n            <msdn-id>bb173743</msdn-id>\t\n            <unmanaged>GetParentConstantBuffer</unmanaged>\t\n            <unmanaged-short>GetParentConstantBuffer</unmanaged-short>\t\n            <unmanaged>ID3D10EffectConstantBuffer* ID3D10EffectVariable::GetParentConstantBuffer()</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectBlendVariable.GetBlendState\">\n            <summary>\t\n            Get a pointer to a blend-state interface.\n            </summary>\t\n            <returns>Returns <see cref=\"T:SharpDX.Direct3D10.BlendState\"/>.</returns>\n            <unmanaged>HRESULT ID3D10EffectBlendVariable::GetBlendState([None] int Index,[Out] ID3D10BlendState** ppBlendState)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectBlendVariable.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D10.EffectBlendVariable\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectBlendVariable.op_Explicit(System.IntPtr)~SharpDX.Direct3D10.EffectBlendVariable\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D10.EffectBlendVariable\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectBlendVariable.GetBlendState(System.Int32)\">\n            <summary>\t\n            <p>Get a reference to a blend-state interface.</p>\t\n            </summary>\t\n            <param name=\"index\"><dd>  <p>Index into an array of blend-state interfaces. If there is only one blend-state interface, use 0.</p> </dd></param>\t\n            <returns><dd>  <p>The address of a reference to a blend-state interface (see <strong><see cref=\"T:SharpDX.Direct3D10.BlendState\"/> Interface</strong>).</p> </dd></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectBlendVariable::GetBlendState']/*\"/>\t\n            <msdn-id>bb173633</msdn-id>\t\n            <unmanaged>HRESULT ID3D10EffectBlendVariable::GetBlendState([In] unsigned int Index,[Out] ID3D10BlendState** ppBlendState)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectBlendVariable::GetBlendState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectBlendVariable.GetBackingStore(System.Int32,SharpDX.Direct3D10.BlendStateDescription@)\">\n            <summary>\t\n            <p>Get a reference to a blend-state variable.</p>\t\n            </summary>\t\n            <param name=\"index\"><dd>  <p>Index into an array of blend-state descriptions. If there is only one blend-state variable in the effect, use 0.</p> </dd></param>\t\n            <param name=\"blendDescRef\"><dd>  <p>A reference to a blend-state description (see <strong><see cref=\"T:SharpDX.Direct3D10.BlendStateDescription\"/></strong>).</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>Effect variables are saved in memory in the backing store; when a technique is applied, the values in the backing store are copied to the device. Backing store data can used to recreate the variable when necessary.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectBlendVariable::GetBackingStore']/*\"/>\t\n            <msdn-id>bb173632</msdn-id>\t\n            <unmanaged>HRESULT ID3D10EffectBlendVariable::GetBackingStore([In] unsigned int Index,[Out] D3D10_BLEND_DESC* pBlendDesc)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectBlendVariable::GetBackingStore</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.EffectDepthStencilVariable\">\n            <summary>\t\n            <p>A depth-stencil-variable interface accesses depth-stencil state.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>An <strong><see cref=\"T:SharpDX.Direct3D10.EffectDepthStencilVariable\"/> Interface</strong> is created when an effect is read into memory.</p><p>Effect variables are saved in memory in the backing store; when a technique is applied, the values in the backing store are copied to the device. You can use either of these methods to return state. For examples, see Two Ways to Get the State in an Effect Variable.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectDepthStencilVariable']/*\"/>\t\n            <msdn-id>bb173639</msdn-id>\t\n            <unmanaged>ID3D10EffectDepthStencilVariable</unmanaged>\t\n            <unmanaged-short>ID3D10EffectDepthStencilVariable</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectDepthStencilVariable.GetDepthStencilState\">\n            <summary>\t\n            Get a pointer to a depth-stencil interface.\t\n            </summary>\t\n            <returns>Returns a pointer to a blend-state interface (see <see cref=\"T:SharpDX.Direct3D10.DepthStencilState\"/>). </returns>\n            <unmanaged>HRESULT ID3D10EffectDepthStencilVariable::GetDepthStencilState([None] int Index,[Out] ID3D10DepthStencilState** ppDepthStencilState)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectDepthStencilVariable.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D10.EffectDepthStencilVariable\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectDepthStencilVariable.op_Explicit(System.IntPtr)~SharpDX.Direct3D10.EffectDepthStencilVariable\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D10.EffectDepthStencilVariable\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectDepthStencilVariable.GetDepthStencilState(System.Int32)\">\n            <summary>\t\n            <p>Get a reference to a depth-stencil interface.</p>\t\n            </summary>\t\n            <param name=\"index\"><dd>  <p>Index into an array of depth-stencil interfaces. If there is only one depth-stencil interface, use 0.</p> </dd></param>\t\n            <returns><dd>  <p>The address of a reference to a blend-state interface (see <strong><see cref=\"T:SharpDX.Direct3D10.DepthStencilState\"/> Interface</strong>).</p> </dd></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectDepthStencilVariable::GetDepthStencilState']/*\"/>\t\n            <msdn-id>bb173641</msdn-id>\t\n            <unmanaged>HRESULT ID3D10EffectDepthStencilVariable::GetDepthStencilState([In] unsigned int Index,[Out] ID3D10DepthStencilState** ppDepthStencilState)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectDepthStencilVariable::GetDepthStencilState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectDepthStencilVariable.GetBackingStore(System.Int32)\">\n            <summary>\t\n            <p>Get a reference to a variable that contains depth-stencil state.</p>\t\n            </summary>\t\n            <param name=\"index\"><dd>  <p>Index into an array of depth-stencil-state descriptions. If there is only one depth-stencil variable in the effect, use 0.</p> </dd></param>\t\n            <returns><dd>  <p>A reference to a depth-stencil-state description (see <strong><see cref=\"T:SharpDX.Direct3D10.DepthStencilStateDescription\"/></strong>).</p> </dd></returns>\t\n            <remarks>\t\n            <p>Effect variables are saved in memory in the backing store; when a technique is applied, the values in the backing store are copied to the device. Backing store data can used to recreate the variable when necessary.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectDepthStencilVariable::GetBackingStore']/*\"/>\t\n            <msdn-id>bb173640</msdn-id>\t\n            <unmanaged>HRESULT ID3D10EffectDepthStencilVariable::GetBackingStore([In] unsigned int Index,[Out] D3D10_DEPTH_STENCIL_DESC* pDepthStencilDesc)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectDepthStencilVariable::GetBackingStore</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.EffectDepthStencilViewVariable\">\n            <summary>\t\n            <p>A depth-stencil-view-variable interface accesses a depth-stencil view.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectDepthStencilViewVariable']/*\"/>\t\n            <msdn-id>bb173642</msdn-id>\t\n            <unmanaged>ID3D10EffectDepthStencilViewVariable</unmanaged>\t\n            <unmanaged-short>ID3D10EffectDepthStencilViewVariable</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectDepthStencilViewVariable.SetDepthStencilArray(SharpDX.Direct3D10.DepthStencilView[])\">\n            <summary>\t\n            Set an array of depth-stencil-view resources.\t\n            </summary>\t\n            <param name=\"resourcesRef\"> A pointer to an array of depth-stencil-view interfaces. See <see cref=\"T:SharpDX.Direct3D10.DepthStencilView\"/>. </param>\n            <returns>Returns one of the following {{Direct3D 10 Return Codes}}. </returns>\n            <unmanaged>HRESULT ID3D10EffectDepthStencilViewVariable::SetDepthStencilArray([In, Buffer] ID3D10DepthStencilView** ppResources,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectDepthStencilViewVariable.SetDepthStencilArray(SharpDX.Direct3D10.DepthStencilView[],System.Int32)\">\n            <summary>\t\n            Set an array of depth-stencil-view resources.\t\n            </summary>\t\n            <param name=\"resourcesRef\"> A pointer to an array of depth-stencil-view interfaces. See <see cref=\"T:SharpDX.Direct3D10.DepthStencilView\"/>. </param>\n            <param name=\"offset\"> The zero-based array index to set the first interface. </param>\n            <returns>Returns one of the following {{Direct3D 10 Return Codes}}. </returns>\n            <unmanaged>HRESULT ID3D10EffectDepthStencilViewVariable::SetDepthStencilArray([In, Buffer] ID3D10DepthStencilView** ppResources,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectDepthStencilViewVariable.GetDepthStencilArray(System.Int32)\">\n            <summary>\t\n            Get an array of depth-stencil-view resources.\t\n            </summary>\t\n            <param name=\"count\"> The number of elements in the array. </param>\n            <returns>Returns an array of depth-stencil-view interfaces. See <see cref=\"T:SharpDX.Direct3D10.DepthStencilView\"/>. </returns>\n            <unmanaged>HRESULT ID3D10EffectDepthStencilViewVariable::GetDepthStencilArray([Out, Buffer] ID3D10DepthStencilView** ppResources,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectDepthStencilViewVariable.GetDepthStencilArray(System.Int32,System.Int32)\">\n            <summary>\t\n            Get an array of depth-stencil-view resources.\t\n            </summary>\t\n            <param name=\"offset\"> The zero-based array index to get the first interface. </param>\n            <param name=\"count\"> The number of elements in the array. </param>\n            <returns>Returns an array of depth-stencil-view interfaces. See <see cref=\"T:SharpDX.Direct3D10.DepthStencilView\"/>. </returns>\n            <unmanaged>HRESULT ID3D10EffectDepthStencilViewVariable::GetDepthStencilArray([Out, Buffer] ID3D10DepthStencilView** ppResources,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectDepthStencilViewVariable.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D10.EffectDepthStencilViewVariable\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectDepthStencilViewVariable.op_Explicit(System.IntPtr)~SharpDX.Direct3D10.EffectDepthStencilViewVariable\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D10.EffectDepthStencilViewVariable\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectDepthStencilViewVariable.SetDepthStencil(SharpDX.Direct3D10.DepthStencilView)\">\n            <summary>\t\n            <p>Set a depth-stencil-view resource.</p>\t\n            </summary>\t\n            <param name=\"resourceRef\"><dd>  <p>A reference to a depth-stencil-view interface. See <strong><see cref=\"T:SharpDX.Direct3D10.DepthStencilView\"/> Interface</strong>.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectDepthStencilViewVariable::SetDepthStencil']/*\"/>\t\n            <msdn-id>bb173645</msdn-id>\t\n            <unmanaged>HRESULT ID3D10EffectDepthStencilViewVariable::SetDepthStencil([In] ID3D10DepthStencilView* pResource)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectDepthStencilViewVariable::SetDepthStencil</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectDepthStencilViewVariable.GetDepthStencil\">\n            <summary>\t\n            <p>Get a depth-stencil-view resource.</p>\t\n            </summary>\t\n            <returns><dd>  <p>The address of a reference to a depth-stencil-view interface. See <strong><see cref=\"T:SharpDX.Direct3D10.DepthStencilView\"/> Interface</strong>.</p> </dd></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectDepthStencilViewVariable::GetDepthStencil']/*\"/>\t\n            <msdn-id>bb173643</msdn-id>\t\n            <unmanaged>HRESULT ID3D10EffectDepthStencilViewVariable::GetDepthStencil([In] ID3D10DepthStencilView** ppResource)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectDepthStencilViewVariable::GetDepthStencil</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectDepthStencilViewVariable.SetDepthStencilArray(SharpDX.Direct3D10.DepthStencilView[],System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Set an array of depth-stencil-view resources.</p>\t\n            </summary>\t\n            <param name=\"resourcesOut\"><dd>  <p>A reference to an array of depth-stencil-view interfaces. See <strong><see cref=\"T:SharpDX.Direct3D10.DepthStencilView\"/> Interface</strong>.</p> </dd></param>\t\n            <param name=\"offset\"><dd>  <p>The zero-based array index to set the first interface.</p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>The number of elements in the array.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectDepthStencilViewVariable::SetDepthStencilArray']/*\"/>\t\n            <msdn-id>bb173646</msdn-id>\t\n            <unmanaged>HRESULT ID3D10EffectDepthStencilViewVariable::SetDepthStencilArray([In, Buffer] ID3D10DepthStencilView** ppResources,[In] unsigned int Offset,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectDepthStencilViewVariable::SetDepthStencilArray</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectDepthStencilViewVariable.SetDepthStencilArray(SharpDX.ComArray{SharpDX.Direct3D10.DepthStencilView},System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Set an array of depth-stencil-view resources.</p>\t\n            </summary>\t\n            <param name=\"resourcesOut\"><dd>  <p>A reference to an array of depth-stencil-view interfaces. See <strong><see cref=\"T:SharpDX.Direct3D10.DepthStencilView\"/> Interface</strong>.</p> </dd></param>\t\n            <param name=\"offset\"><dd>  <p>The zero-based array index to set the first interface.</p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>The number of elements in the array.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectDepthStencilViewVariable::SetDepthStencilArray']/*\"/>\t\n            <msdn-id>bb173646</msdn-id>\t\n            <unmanaged>HRESULT ID3D10EffectDepthStencilViewVariable::SetDepthStencilArray([In, Buffer] ID3D10DepthStencilView** ppResources,[In] unsigned int Offset,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectDepthStencilViewVariable::SetDepthStencilArray</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectDepthStencilViewVariable.GetDepthStencilArray(SharpDX.Direct3D10.DepthStencilView[],System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Get an array of depth-stencil-view resources.</p>\t\n            </summary>\t\n            <param name=\"resourcesOut\"><dd>  <p>A reference to an array of depth-stencil-view interfaces. See <strong><see cref=\"T:SharpDX.Direct3D10.DepthStencilView\"/> Interface</strong>.</p> </dd></param>\t\n            <param name=\"offset\"><dd>  <p>The zero-based array index to get the first interface.</p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>The number of elements in the array.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectDepthStencilViewVariable::GetDepthStencilArray']/*\"/>\t\n            <msdn-id>bb173644</msdn-id>\t\n            <unmanaged>HRESULT ID3D10EffectDepthStencilViewVariable::GetDepthStencilArray([Out, Buffer] ID3D10DepthStencilView** ppResources,[In] unsigned int Offset,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectDepthStencilViewVariable::GetDepthStencilArray</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.EffectMatrixVariable\">\n            <summary>\t\n            <p>A matrix-variable interface accesses a matrix.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectMatrixVariable']/*\"/>\t\n            <msdn-id>bb173647</msdn-id>\t\n            <unmanaged>ID3D10EffectMatrixVariable</unmanaged>\t\n            <unmanaged-short>ID3D10EffectMatrixVariable</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectMatrixVariable.SetMatrix``1(``0)\">\n            <summary>\t\n            Set a floating-point matrix.\t\n            </summary>\t\n            <param name=\"matrix\"> A pointer to the first element in the matrix. </param>\n            <returns>Returns one of the following {{Direct3D 10 Return Codes}}. </returns>\n            <unmanaged>HRESULT ID3D10EffectMatrixVariable::SetMatrix([In] float* pData)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectMatrixVariable.GetMatrix``1\">\n            <summary>\t\n            Get a matrix.\t\n            </summary>\t\n            <returns><para>A reference to the first element in a matrix.</para></returns>\t\n            <remarks>\t\n            Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.\t\n            </remarks>\t\n            <unmanaged>HRESULT ID3DX11EffectMatrixVariable::GetMatrix([Out] SHARPDX_MATRIX* pData)</unmanaged>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectMatrixVariable.GetMatrix\">\n            <summary>\t\n            Get a matrix.\t\n            </summary>\t\n            <returns><para>A reference to the first element in a matrix.</para></returns>\t\n            <remarks>\t\n            Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.\t\n            </remarks>\t\n            <unmanaged>HRESULT ID3DX11EffectMatrixVariable::GetMatrix([Out] SHARPDX_MATRIX* pData)</unmanaged>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectMatrixVariable.SetMatrix``1(``0@)\">\n            <summary>\t\n            Set a floating-point matrix.\t\n            </summary>\t\n            <param name=\"matrix\"> A pointer to the first element in the matrix. </param>\n            <returns>Returns one of the following {{Direct3D 10 Return Codes}}. </returns>\n            <unmanaged>HRESULT ID3D10EffectMatrixVariable::SetMatrix([In] float* pData)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectMatrixVariable.SetMatrix``1(``0[])\">\n            <summary>\t\n            Set an array of floating-point matrices.\t\n            </summary>\t\n            <param name=\"matrixArray\"> A pointer to the first matrix. </param>\n            <returns>Returns one of the following {{Direct3D 10 Return Codes}}. </returns>\n            <unmanaged>HRESULT ID3D10EffectMatrixVariable::SetMatrixArray([In, Buffer] float* pData,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectMatrixVariable.SetMatrix``1(``0[],System.Int32)\">\n            <summary>\t\n            Set an array of floating-point matrices.\t\n            </summary>\t\n            <param name=\"matrixArray\"> A pointer to the first matrix. </param>\n            <param name=\"offset\"> The number of matrix elements to skip from the start of the array. </param>\n            <returns>Returns one of the following {{Direct3D 10 Return Codes}}. </returns>\n            <unmanaged>HRESULT ID3D10EffectMatrixVariable::SetMatrixArray([In, Buffer] float* pData,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectMatrixVariable.GetMatrixArray``1(System.Int32)\">\n            <summary>\t\n            Get an array of matrices.\t\n            </summary>\t\n            <param name=\"count\"> The number of matrices in the returned array. </param>\n            <returns>Returns an array of matrix. </returns>\n            <unmanaged>HRESULT ID3D10EffectMatrixVariable::GetMatrixArray([Out, Buffer] float* pData,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectMatrixVariable.GetMatrixArray``1(System.Int32,System.Int32)\">\n            <summary>\t\n            Get an array of matrices.\t\n            </summary>\t\n            <param name=\"offset\"> The offset (in number of matrices) between the start of the array and the first matrix returned. </param>\n            <param name=\"count\"> The number of matrices in the returned array. </param>\n            <returns>Returns an array of matrix. </returns>\n            <unmanaged>HRESULT ID3D10EffectMatrixVariable::GetMatrixArray([Out, Buffer] float* pData,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectMatrixVariable.SetMatrixTranspose``1(``0)\">\n            <summary>\t\n            Transpose and set a floating-point matrix.\t\n            </summary>\t\n            <remarks>\t\n             Transposing a matrix will rearrange the data order from row-column order to column-row order (or vice versa). \t\n            </remarks>\t\n            <param name=\"matrix\"> A pointer to the first element of a matrix. </param>\n            <returns>Returns one of the following {{Direct3D 10 Return Codes}}. </returns>\n            <unmanaged>HRESULT ID3D10EffectMatrixVariable::SetMatrixTranspose([In] float* pData)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectMatrixVariable.SetMatrixTranspose``1(``0@)\">\n            <summary>\t\n            Transpose and set a floating-point matrix.\t\n            </summary>\t\n            <remarks>\t\n             Transposing a matrix will rearrange the data order from row-column order to column-row order (or vice versa). \t\n            </remarks>\t\n            <param name=\"matrix\"> A pointer to the first element of a matrix. </param>\n            <returns>Returns one of the following {{Direct3D 10 Return Codes}}. </returns>\n            <unmanaged>HRESULT ID3D10EffectMatrixVariable::SetMatrixTranspose([In] float* pData)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectMatrixVariable.SetMatrixTranspose``1(``0[])\">\n            <summary>\t\n            Transpose and set an array of floating-point matrices.\t\n            </summary>\t\n            <remarks>\t\n             Transposing a matrix will rearrange the data order from row-column order to column-row order (or vice versa). \t\n            </remarks>\t\n            <param name=\"matrixArray\"> A pointer to an array of matrices. </param>\n            <returns>Returns one of the following {{Direct3D 10 Return Codes}}. </returns>\n            <unmanaged>HRESULT ID3D10EffectMatrixVariable::SetMatrixTransposeArray([In] float* pData,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectMatrixVariable.SetMatrixTranspose``1(``0[],System.Int32)\">\n            <summary>\t\n            Transpose and set an array of floating-point matrices.\t\n            </summary>\t\n            <remarks>\t\n             Transposing a matrix will rearrange the data order from row-column order to column-row order (or vice versa). \t\n            </remarks>\t\n            <param name=\"matrixArray\"> A pointer to an array of matrices. </param>\n            <param name=\"offset\"> The offset (in number of matrices) between the start of the array and the first matrix to set. </param>\n            <returns>Returns one of the following {{Direct3D 10 Return Codes}}. </returns>\n            <unmanaged>HRESULT ID3D10EffectMatrixVariable::SetMatrixTransposeArray([In] float* pData,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectMatrixVariable.GetMatrixTranspose``1\">\n            <summary>\t\n            Transpose and get a floating-point matrix.\t\n            </summary>\t\n            <returns>The transposed matrix.</returns>\t\n            <remarks>\t\n            Transposing a matrix will rearrange the data order from row-column order to column-row order (or vice versa).Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.\t\n            </remarks>\t\n            <unmanaged>HRESULT ID3DX11EffectMatrixVariable::GetMatrixTranspose([Out] SHARPDX_MATRIX* pData)</unmanaged>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectMatrixVariable.GetMatrixTranspose\">\n            <summary>\t\n            Transpose and get a floating-point matrix.\t\n            </summary>\t\n            <returns>The transposed matrix.</returns>\t\n            <remarks>\t\n            Transposing a matrix will rearrange the data order from row-column order to column-row order (or vice versa).Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.\t\n            </remarks>\t\n            <unmanaged>HRESULT ID3DX11EffectMatrixVariable::GetMatrixTranspose([Out] SHARPDX_MATRIX* pData)</unmanaged>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectMatrixVariable.GetMatrixTransposeArray``1(System.Int32)\">\n            <summary>\t\n            Transpose and get an array of floating-point matrices.\t\n            </summary>\t\n            <remarks>\t\n             Transposing a matrix will rearrange the data order from row-column order to column-row order (or vice versa). \t\n            </remarks>\t\n            <param name=\"count\"> The number of matrices in the array to get. </param>\n            <returns>Returns an array of transposed <see cref=\"T:SharpDX.Matrix\"/>. </returns>\n            <unmanaged>HRESULT ID3D10EffectMatrixVariable::GetMatrixTransposeArray([Out, Buffer] float* pData,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectMatrixVariable.GetMatrixTransposeArray``1(System.Int32,System.Int32)\">\n            <summary>\t\n            Transpose and get an array of floating-point matrices.\t\n            </summary>\t\n            <remarks>\t\n             Transposing a matrix will rearrange the data order from row-column order to column-row order (or vice versa). \t\n            </remarks>\t\n            <param name=\"offset\"> The offset (in number of matrices) between the start of the array and the first matrix to get. </param>\n            <param name=\"count\"> The number of matrices in the array to get. </param>\n            <returns>Returns an array of transposed <see cref=\"T:SharpDX.Matrix\"/>. </returns>\n            <unmanaged>HRESULT ID3D10EffectMatrixVariable::GetMatrixTransposeArray([Out, Buffer] float* pData,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectMatrixVariable.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D10.EffectMatrixVariable\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectMatrixVariable.op_Explicit(System.IntPtr)~SharpDX.Direct3D10.EffectMatrixVariable\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D10.EffectMatrixVariable\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectMatrixVariable.SetMatrix(SharpDX.Matrix@)\">\n            <summary>\t\n            <p>Set a floating-point matrix.</p>\t\n            </summary>\t\n            <param name=\"dataRef\"><dd>  <p>A reference to the first element in the matrix.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectMatrixVariable::SetMatrix']/*\"/>\t\n            <msdn-id>bb173652</msdn-id>\t\n            <unmanaged>HRESULT ID3D10EffectMatrixVariable::SetMatrix([In] SHARPDX_MATRIX* pData)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectMatrixVariable::SetMatrix</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectMatrixVariable.GetMatrix(SharpDX.Matrix@)\">\n            <summary>\t\n            <p>Get a matrix.</p>\t\n            </summary>\t\n            <param name=\"dataRef\"><dd>  <p>A reference to the first element in a matrix.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectMatrixVariable::GetMatrix']/*\"/>\t\n            <msdn-id>bb173648</msdn-id>\t\n            <unmanaged>HRESULT ID3D10EffectMatrixVariable::GetMatrix([Out] SHARPDX_MATRIX* pData)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectMatrixVariable::GetMatrix</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectMatrixVariable.SetMatrixArray(SharpDX.Matrix[],System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Set an array of floating-point matrices.</p>\t\n            </summary>\t\n            <param name=\"dataRef\"><dd>  <p>A reference to the first matrix.</p> </dd></param>\t\n            <param name=\"offset\"><dd>  <p>The number of matrix elements to skip from the start of the array.</p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>The number of elements to set.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectMatrixVariable::SetMatrixArray']/*\"/>\t\n            <msdn-id>bb173653</msdn-id>\t\n            <unmanaged>HRESULT ID3D10EffectMatrixVariable::SetMatrixArray([In, Buffer] SHARPDX_MATRIX* pData,[In] unsigned int Offset,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectMatrixVariable::SetMatrixArray</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectMatrixVariable.GetMatrixArray(SharpDX.Matrix[],System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Get an array of matrices.</p>\t\n            </summary>\t\n            <param name=\"dataRef\"><dd>  <p>A reference to the first element of the first matrix in an array of matrices.</p> </dd></param>\t\n            <param name=\"offset\"><dd>  <p>The offset (in number of matrices) between the start of the array and the first matrix returned.</p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>The number of matrices in the returned array.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectMatrixVariable::GetMatrixArray']/*\"/>\t\n            <msdn-id>bb173649</msdn-id>\t\n            <unmanaged>HRESULT ID3D10EffectMatrixVariable::GetMatrixArray([Out, Buffer] SHARPDX_MATRIX* pData,[In] unsigned int Offset,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectMatrixVariable::GetMatrixArray</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectMatrixVariable.SetMatrixTranspose(SharpDX.Matrix@)\">\n            <summary>\t\n            <p>Transpose and set a floating-point matrix.</p>\t\n            </summary>\t\n            <param name=\"dataRef\"><dd>  <p>A reference to the first element of a matrix.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>Transposing a matrix will rearrange the data order from row-column order to column-row order (or vice versa).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectMatrixVariable::SetMatrixTranspose']/*\"/>\t\n            <msdn-id>bb173654</msdn-id>\t\n            <unmanaged>HRESULT ID3D10EffectMatrixVariable::SetMatrixTranspose([In] SHARPDX_MATRIX* pData)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectMatrixVariable::SetMatrixTranspose</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectMatrixVariable.GetMatrixTranspose(SharpDX.Matrix@)\">\n            <summary>\t\n            <p>Transpose and get a floating-point matrix.</p>\t\n            </summary>\t\n            <param name=\"dataRef\"><dd>  <p>A reference to the first element of a transposed matrix.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>Transposing a matrix will rearrange the data order from row-column order to column-row order (or vice versa).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectMatrixVariable::GetMatrixTranspose']/*\"/>\t\n            <msdn-id>bb173650</msdn-id>\t\n            <unmanaged>HRESULT ID3D10EffectMatrixVariable::GetMatrixTranspose([Out] SHARPDX_MATRIX* pData)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectMatrixVariable::GetMatrixTranspose</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectMatrixVariable.SetMatrixTransposeArray(SharpDX.Matrix[],System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Transpose and set an array of floating-point matrices.</p>\t\n            </summary>\t\n            <param name=\"dataRef\"><dd>  <p>A reference to an array of matrices.</p> </dd></param>\t\n            <param name=\"offset\"><dd>  <p>The offset (in number of matrices) between the start of the array and the first matrix to set.</p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>The number of matrices in the array to set.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>Transposing a matrix will rearrange the data order from row-column order to column-row order (or vice versa).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectMatrixVariable::SetMatrixTransposeArray']/*\"/>\t\n            <msdn-id>bb173655</msdn-id>\t\n            <unmanaged>HRESULT ID3D10EffectMatrixVariable::SetMatrixTransposeArray([In, Buffer] SHARPDX_MATRIX* pData,[In] unsigned int Offset,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectMatrixVariable::SetMatrixTransposeArray</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectMatrixVariable.GetMatrixTransposeArray(SharpDX.Matrix[],System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Transpose and get an array of floating-point matrices.</p>\t\n            </summary>\t\n            <param name=\"dataRef\"><dd>  <p>A reference to the first element of an array of tranposed matrices.</p> </dd></param>\t\n            <param name=\"offset\"><dd>  <p>The offset (in number of matrices) between the start of the array and the first matrix to get.</p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>The number of matrices in the array to get.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>Transposing a matrix will rearrange the data order from row-column order to column-row order (or vice versa).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectMatrixVariable::GetMatrixTransposeArray']/*\"/>\t\n            <msdn-id>bb173651</msdn-id>\t\n            <unmanaged>HRESULT ID3D10EffectMatrixVariable::GetMatrixTransposeArray([Out, Buffer] SHARPDX_MATRIX* pData,[In] unsigned int Offset,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectMatrixVariable::GetMatrixTransposeArray</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.EffectPass\">\n            <summary>\t\n            <p>A pass interface encapsulates state assignments within a technique.</p><p>The lifetime of an <strong><see cref=\"T:SharpDX.Direct3D10.EffectPass\"/></strong> object is equal to the lifetime of its parent <strong><see cref=\"T:SharpDX.Direct3D10.Effect\"/></strong> object.</p><ul> <li>Methods</li> </ul>Methods<p>The <strong><see cref=\"T:SharpDX.Direct3D10.EffectPass\"/></strong> interface has the following methods.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>A pass is a block of code that sets render-state objects and shaders. A pass is declared within a technique; the syntax for a technique is shown in Effect Technique Syntax (Direct3D 10).</p><p>To get an effect-pass interface, call a method like <strong><see cref=\"M:SharpDX.Direct3D10.EffectTechnique.GetPassByName(System.String)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectPass']/*\"/>\t\n            <msdn-id>bb173656</msdn-id>\t\n            <unmanaged>ID3D10EffectPass</unmanaged>\t\n            <unmanaged-short>ID3D10EffectPass</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectPass.Apply\">\n            <summary>\t\n            Set the state contained in a pass to the device.\t\n            </summary>\t\n            <returns>Returns one of the following {{Direct3D 10 Return Codes}}.</returns>\n            <unmanaged>HRESULT Apply([None] UINT Flags)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectPass.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D10.EffectPass\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectPass.op_Explicit(System.IntPtr)~SharpDX.Direct3D10.EffectPass\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D10.EffectPass\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectPass.IsValid_\">\n            <summary>\t\n            <p>Test a pass to see if it contains valid syntax.</p>\t\n            </summary>\t\n            <returns><p><strong>TRUE</strong> if the code syntax is valid; otherwise <strong><see cref=\"F:SharpDX.Result.False\"/></strong>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectPass::IsValid']/*\"/>\t\n            <msdn-id>bb173665</msdn-id>\t\n            <unmanaged>BOOL ID3D10EffectPass::IsValid()</unmanaged>\t\n            <unmanaged-short>ID3D10EffectPass::IsValid</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectPass.GetDescription(SharpDX.Direct3D10.EffectPassDescription@)\">\n            <summary>\t\n            <p>Get a pass description.</p>\t\n            </summary>\t\n            <param name=\"descRef\"><dd>  <p>A reference to a pass description (see <strong><see cref=\"T:SharpDX.Direct3D10.EffectPassDescription\"/></strong>).</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>A pass is a block of code that sets render state and shaders (which in turn sets constant buffers, samplers and textures). An effect technique contains one or more passes. See techniques and passes.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectPass::GetDesc']/*\"/>\t\n            <msdn-id>bb173661</msdn-id>\t\n            <unmanaged>HRESULT ID3D10EffectPass::GetDesc([Out] D3D10_PASS_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectPass::GetDesc</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectPass.GetVertexShaderDescription(SharpDX.Direct3D10.EffectPassShaderDescription@)\">\n            <summary>\t\n            <p>Get a vertex-shader description.</p>\t\n            </summary>\t\n            <param name=\"descRef\"><dd>  <p>A reference to a vertex-shader description (see <strong><see cref=\"T:SharpDX.Direct3D10.EffectPassShaderDescription\"/></strong>).</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>An effect pass can contain render state assignments and shader object assignments.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectPass::GetVertexShaderDesc']/*\"/>\t\n            <msdn-id>Bb173664</msdn-id>\t\n            <unmanaged>HRESULT ID3D10EffectPass::GetVertexShaderDesc([Out] D3D10_PASS_SHADER_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectPass::GetVertexShaderDesc</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectPass.GetGeometryShaderDescription(SharpDX.Direct3D10.EffectPassShaderDescription@)\">\n            <summary>\t\n            <p>Get a geometry-shader description.</p>\t\n            </summary>\t\n            <param name=\"descRef\"><dd>  <p>A reference to a geometry-shader description (see <strong><see cref=\"T:SharpDX.Direct3D10.EffectPassShaderDescription\"/></strong>).</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>An effect pass can contain render state assignments and shader object assignments.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectPass::GetGeometryShaderDesc']/*\"/>\t\n            <msdn-id>bb173662</msdn-id>\t\n            <unmanaged>HRESULT ID3D10EffectPass::GetGeometryShaderDesc([Out] D3D10_PASS_SHADER_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectPass::GetGeometryShaderDesc</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectPass.GetPixelShaderDescription(SharpDX.Direct3D10.EffectPassShaderDescription@)\">\n            <summary>\t\n            <p>Get a pixel-shader description.</p>\t\n            </summary>\t\n            <param name=\"descRef\"><dd>  <p>A reference to a pixel-shader description (see <strong><see cref=\"T:SharpDX.Direct3D10.EffectPassShaderDescription\"/></strong>).</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>An effect pass can contain render state assignments and shader object assignments.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectPass::GetPixelShaderDesc']/*\"/>\t\n            <msdn-id>bb173663</msdn-id>\t\n            <unmanaged>HRESULT ID3D10EffectPass::GetPixelShaderDesc([Out] D3D10_PASS_SHADER_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectPass::GetPixelShaderDesc</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectPass.GetAnnotationByIndex(System.Int32)\">\n            <summary>\t\n            <p>Get an annotation by index.</p>\t\n            </summary>\t\n            <param name=\"index\"><dd>  <p>A zero-based index.</p> </dd></param>\t\n            <returns><p>A reference to an <strong><see cref=\"T:SharpDX.Direct3D10.EffectVariable\"/> Interface</strong>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectPass::GetAnnotationByIndex']/*\"/>\t\n            <msdn-id>bb173659</msdn-id>\t\n            <unmanaged>ID3D10EffectVariable* ID3D10EffectPass::GetAnnotationByIndex([In] unsigned int Index)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectPass::GetAnnotationByIndex</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectPass.GetAnnotationByName(System.String)\">\n            <summary>\t\n            <p>Get an annotation by name.</p>\t\n            </summary>\t\n            <param name=\"name\"><dd>  <p>The name of the annotation.</p> </dd></param>\t\n            <returns><p>A reference to an <strong><see cref=\"T:SharpDX.Direct3D10.EffectVariable\"/> Interface</strong>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectPass::GetAnnotationByName']/*\"/>\t\n            <msdn-id>bb173660</msdn-id>\t\n            <unmanaged>ID3D10EffectVariable* ID3D10EffectPass::GetAnnotationByName([In] const char* Name)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectPass::GetAnnotationByName</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectPass.Apply(System.Int32)\">\n            <summary>\t\n            <p>Set the state contained in a pass to the device.</p>\t\n            </summary>\t\n            <param name=\"flags\"><dd>  <p>Unused.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectPass::Apply']/*\"/>\t\n            <msdn-id>bb173657</msdn-id>\t\n            <unmanaged>HRESULT ID3D10EffectPass::Apply([In] unsigned int Flags)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectPass::Apply</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectPass.ComputeStateBlockMask(SharpDX.Direct3D10.StateBlockMask@)\">\n            <summary>\t\n            <p>Generate a mask for allowing/preventing state changes.</p>\t\n            </summary>\t\n            <param name=\"stateBlockMaskRef\"><dd>  <p>A reference to a state-block mask (see <strong><see cref=\"T:SharpDX.Direct3D10.StateBlockMask\"/></strong>).</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectPass::ComputeStateBlockMask']/*\"/>\t\n            <msdn-id>bb173658</msdn-id>\t\n            <unmanaged>HRESULT ID3D10EffectPass::ComputeStateBlockMask([In] D3D10_STATE_BLOCK_MASK* pStateBlockMask)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectPass::ComputeStateBlockMask</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.EffectPass.IsValid\">\n            <summary>\t\n            <p>Test a pass to see if it contains valid syntax.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectPass::IsValid']/*\"/>\t\n            <msdn-id>bb173665</msdn-id>\t\n            <unmanaged>IsValid</unmanaged>\t\n            <unmanaged-short>IsValid</unmanaged-short>\t\n            <unmanaged>BOOL ID3D10EffectPass::IsValid()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.EffectPass.Description\">\n            <summary>\t\n            <p>Get a pass description.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>A pass is a block of code that sets render state and shaders (which in turn sets constant buffers, samplers and textures). An effect technique contains one or more passes. See techniques and passes.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectPass::GetDesc']/*\"/>\t\n            <msdn-id>bb173661</msdn-id>\t\n            <unmanaged>GetDesc</unmanaged>\t\n            <unmanaged-short>GetDesc</unmanaged-short>\t\n            <unmanaged>HRESULT ID3D10EffectPass::GetDesc([Out] D3D10_PASS_DESC* pDesc)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.EffectPass.VertexShaderDescription\">\n            <summary>\t\n            <p>Get a vertex-shader description.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>An effect pass can contain render state assignments and shader object assignments.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectPass::GetVertexShaderDesc']/*\"/>\t\n            <msdn-id>Bb173664</msdn-id>\t\n            <unmanaged>GetVertexShaderDesc</unmanaged>\t\n            <unmanaged-short>GetVertexShaderDesc</unmanaged-short>\t\n            <unmanaged>HRESULT ID3D10EffectPass::GetVertexShaderDesc([Out] D3D10_PASS_SHADER_DESC* pDesc)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.EffectPass.GeometryShaderDescription\">\n            <summary>\t\n            <p>Get a geometry-shader description.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>An effect pass can contain render state assignments and shader object assignments.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectPass::GetGeometryShaderDesc']/*\"/>\t\n            <msdn-id>bb173662</msdn-id>\t\n            <unmanaged>GetGeometryShaderDesc</unmanaged>\t\n            <unmanaged-short>GetGeometryShaderDesc</unmanaged-short>\t\n            <unmanaged>HRESULT ID3D10EffectPass::GetGeometryShaderDesc([Out] D3D10_PASS_SHADER_DESC* pDesc)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.EffectPass.PixelShaderDescription\">\n            <summary>\t\n            <p>Get a pixel-shader description.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>An effect pass can contain render state assignments and shader object assignments.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectPass::GetPixelShaderDesc']/*\"/>\t\n            <msdn-id>bb173663</msdn-id>\t\n            <unmanaged>GetPixelShaderDesc</unmanaged>\t\n            <unmanaged-short>GetPixelShaderDesc</unmanaged-short>\t\n            <unmanaged>HRESULT ID3D10EffectPass::GetPixelShaderDesc([Out] D3D10_PASS_SHADER_DESC* pDesc)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.EffectPassDescription\">\n            <summary>\t\n            <p>Describes an effect pass, which contains pipeline state.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Get a pass description by calling <strong><see cref=\"M:SharpDX.Direct3D10.EffectPass.GetDescription(SharpDX.Direct3D10.EffectPassDescription@)\"/></strong>; an effect technique contains one or more passes.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_PASS_DESC']/*\"/>\t\n            <msdn-id>bb205330</msdn-id>\t\n            <unmanaged>D3D10_PASS_DESC</unmanaged>\t\n            <unmanaged-short>D3D10_PASS_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.EffectPassDescription.Name\">\n            <summary>\t\n            <dd> <p>A string that contains the name of the pass; otherwise <strong><c>null</c></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_PASS_DESC::Name']/*\"/>\t\n            <msdn-id>bb205330</msdn-id>\t\n            <unmanaged>const char* Name</unmanaged>\t\n            <unmanaged-short>char Name</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.EffectPassDescription.AnnotationCount\">\n            <summary>\t\n            <dd> <p>The number of annotations.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_PASS_DESC::Annotations']/*\"/>\t\n            <msdn-id>bb205330</msdn-id>\t\n            <unmanaged>unsigned int Annotations</unmanaged>\t\n            <unmanaged-short>unsigned int Annotations</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.EffectPassDescription.PIAInputSignature\">\n            <summary>\t\n            <dd> <p>A reference to the input signature or the vertex shader; otherwise <strong><c>null</c></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_PASS_DESC::pIAInputSignature']/*\"/>\t\n            <msdn-id>bb205330</msdn-id>\t\n            <unmanaged>unsigned char* pIAInputSignature</unmanaged>\t\n            <unmanaged-short>unsigned char pIAInputSignature</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.EffectPassDescription.IAInputSignatureSize\">\n            <summary>\t\n            <dd> <p>The size of the input signature (in bytes).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_PASS_DESC::IAInputSignatureSize']/*\"/>\t\n            <msdn-id>bb205330</msdn-id>\t\n            <unmanaged>SIZE_T IAInputSignatureSize</unmanaged>\t\n            <unmanaged-short>SIZE_T IAInputSignatureSize</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.EffectPassDescription.StencilReference\">\n            <summary>\t\n            <dd> <p>The stencil-reference value used in the depth-stencil state (see Configuring Depth-Stencil Functionality (Direct3D 10)).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_PASS_DESC::StencilRef']/*\"/>\t\n            <msdn-id>bb205330</msdn-id>\t\n            <unmanaged>unsigned int StencilRef</unmanaged>\t\n            <unmanaged-short>unsigned int StencilRef</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.EffectPassDescription.SampleMask\">\n            <summary>\t\n            <dd> <p>The sample mask for the blend state (see Configuring Blending Functionality (Direct3D 10)).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_PASS_DESC::SampleMask']/*\"/>\t\n            <msdn-id>bb205330</msdn-id>\t\n            <unmanaged>unsigned int SampleMask</unmanaged>\t\n            <unmanaged-short>unsigned int SampleMask</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.EffectPassDescription.BlendFactor\">\n            <summary>\t\n            <dd> <p>The per-component blend factors (RGBA) for the blend state (see Configuring Blending Functionality (Direct3D 10)).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_PASS_DESC::BlendFactor']/*\"/>\t\n            <msdn-id>bb205330</msdn-id>\t\n            <unmanaged>SHARPDX_COLOR4 BlendFactor</unmanaged>\t\n            <unmanaged-short>SHARPDX_COLOR4 BlendFactor</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.EffectPassDescription.Signature\">\n            <summary>\n            Returns the signature of this Effect pass.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.EffectPassShaderDescription\">\n            <summary>\t\n            <p>Describes an effect variable that contains a shader.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>To get a shader description, call a method like <strong><see cref=\"M:SharpDX.Direct3D10.EffectPass.GetVertexShaderDescription(SharpDX.Direct3D10.EffectPassShaderDescription@)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_PASS_SHADER_DESC']/*\"/>\t\n            <msdn-id>bb205331</msdn-id>\t\n            <unmanaged>D3D10_PASS_SHADER_DESC</unmanaged>\t\n            <unmanaged-short>D3D10_PASS_SHADER_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.EffectPassShaderDescription.VariablePointer\">\n            <summary>\t\n            <dd> <p>A reference to the variable that the shader came from. If it is an inline shader assignment, the returned interface will be an anonymous shader variable, which is not retrievable any other way.  Its name in the variable description will be \"$Anonymous\". If there is no assignment of this type in the pass block, this will point to a shader variable that returns false when IsValid is called.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_PASS_SHADER_DESC::pShaderVariable']/*\"/>\t\n            <msdn-id>bb205331</msdn-id>\t\n            <unmanaged>ID3D10EffectShaderVariable* pShaderVariable</unmanaged>\t\n            <unmanaged-short>ID3D10EffectShaderVariable pShaderVariable</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.EffectPassShaderDescription.Index\">\n            <summary>\t\n            <dd> <p>A zero-based array index; otherwise 0.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_PASS_SHADER_DESC::ShaderIndex']/*\"/>\t\n            <msdn-id>bb205331</msdn-id>\t\n            <unmanaged>unsigned int ShaderIndex</unmanaged>\t\n            <unmanaged-short>unsigned int ShaderIndex</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.EffectPassShaderDescription.Variable\">\n            <summary>\t\n            A reference to the variable that the shader came from. If it is an inline shader assignment, the returned interface will be an anonymous shader variable, which is not retrievable any other way.  Its name in the variable description will be \"$Anonymous\". If there is no assignment of this type in the pass block, this will point to a shader variable that returns false when IsValid is called. \t\n            </summary>\t\n            <unmanaged>ID3D10EffectShaderVariable* pShaderVariable</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.EffectPool\">\n            <summary>\t\n            <p>A pool interface represents a common memory space (or pool) for sharing variables between effects.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>To create an effect pool, call a function like <strong><see cref=\"M:SharpDX.Direct3D10.D3DX10.CreateEffectPoolFromFile(System.String,SharpDX.Direct3D.ShaderMacro[],System.IntPtr,System.String,System.Int32,System.Int32,SharpDX.Direct3D10.Device,System.IntPtr,SharpDX.Direct3D10.EffectPool@,SharpDX.Direct3D.Blob@,SharpDX.Result@)\"/></strong>. Effect pools can improve performance by reducing the number of API calls required to make state changes (see Using Effect Pools).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectPool']/*\"/>\t\n            <msdn-id>bb173667</msdn-id>\t\n            <unmanaged>ID3D10EffectPool</unmanaged>\t\n            <unmanaged-short>ID3D10EffectPool</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectPool.#ctor(SharpDX.Direct3D10.Device,System.Byte[],SharpDX.D3DCompiler.EffectFlags)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D10.EffectPool\"/> class.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"effectByteCode\">The effect byte code.</param>\n            <param name=\"fxFlags\">Effect compile options</param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectPool.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D10.EffectPool\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectPool.op_Explicit(System.IntPtr)~SharpDX.Direct3D10.EffectPool\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D10.EffectPool\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectPool.AsEffect\">\n            <summary>\t\n            <p>Get the effect that created the effect pool.</p>\t\n            </summary>\t\n            <returns><p>A reference to an <strong><see cref=\"T:SharpDX.Direct3D10.Effect\"/> Interface</strong> interface.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectPool::AsEffect']/*\"/>\t\n            <msdn-id>bb173668</msdn-id>\t\n            <unmanaged>ID3D10Effect* ID3D10EffectPool::AsEffect()</unmanaged>\t\n            <unmanaged-short>ID3D10EffectPool::AsEffect</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.EffectRasterizerVariable\">\n            <summary>\t\n            <p>A rasterizer-variable interface accesses rasterizer state.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>An <strong><see cref=\"T:SharpDX.Direct3D10.EffectRasterizerVariable\"/> Interface</strong> is created when an effect is read into memory.</p><p>Effect variables are saved in memory in the backing store; when a technique is applied, the values in the backing store are copied to the device. You can use either of these methods to return state. For examples, see Two Ways to Get the State in an Effect Variable.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectRasterizerVariable']/*\"/>\t\n            <msdn-id>bb173669</msdn-id>\t\n            <unmanaged>ID3D10EffectRasterizerVariable</unmanaged>\t\n            <unmanaged-short>ID3D10EffectRasterizerVariable</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectRasterizerVariable.GetRasterizerState\">\n            <summary>\t\n            Get a pointer to a rasterizer interface.\t\n            </summary>\t\n            <returns>Returns a pointer to a rasterizer interface (see <see cref=\"T:SharpDX.Direct3D10.RasterizerState\"/>). </returns>\n            <unmanaged>HRESULT ID3D10EffectRasterizerVariable::GetRasterizerState([None] int Index,[Out] ID3D10RasterizerState** ppRasterizerState)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectRasterizerVariable.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D10.EffectRasterizerVariable\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectRasterizerVariable.op_Explicit(System.IntPtr)~SharpDX.Direct3D10.EffectRasterizerVariable\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D10.EffectRasterizerVariable\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectRasterizerVariable.GetRasterizerState(System.Int32)\">\n            <summary>\t\n            <p>Get a reference to a rasterizer interface.</p>\t\n            </summary>\t\n            <param name=\"index\"><dd>  <p>Index into an array of rasterizer interfaces. If there is only one rasterizer interface, use 0.</p> </dd></param>\t\n            <returns><dd>  <p>The address of a reference to a rasterizer interface (see <strong><see cref=\"T:SharpDX.Direct3D10.RasterizerState\"/> Interface</strong>).</p> </dd></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectRasterizerVariable::GetRasterizerState']/*\"/>\t\n            <msdn-id>bb173671</msdn-id>\t\n            <unmanaged>HRESULT ID3D10EffectRasterizerVariable::GetRasterizerState([In] unsigned int Index,[Out] ID3D10RasterizerState** ppRasterizerState)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectRasterizerVariable::GetRasterizerState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectRasterizerVariable.GetBackingStore(System.Int32,SharpDX.Direct3D10.RasterizerStateDescription@)\">\n            <summary>\t\n            <p>Get a reference to a variable that contains rasteriser state.</p>\t\n            </summary>\t\n            <param name=\"index\"><dd>  <p>Index into an array of rasteriser-state descriptions. If there is only one rasteriser variable in the effect, use 0.</p> </dd></param>\t\n            <param name=\"rasterizerDescRef\"><dd>  <p>A reference to a rasteriser-state description (see <strong><see cref=\"T:SharpDX.Direct3D10.RasterizerStateDescription\"/></strong>).</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>Effect variables are saved in memory in the backing store; when a technique is applied, the values in the backing store are copied to the device. Backing store data can used to recreate the variable when necessary.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectRasterizerVariable::GetBackingStore']/*\"/>\t\n            <msdn-id>bb173670</msdn-id>\t\n            <unmanaged>HRESULT ID3D10EffectRasterizerVariable::GetBackingStore([In] unsigned int Index,[Out] D3D10_RASTERIZER_DESC* pRasterizerDesc)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectRasterizerVariable::GetBackingStore</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.EffectRenderTargetViewVariable\">\n            <summary>\t\n            <p>Get an array of render-targets.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectRenderTargetViewVariable']/*\"/>\t\n            <msdn-id>bb173674</msdn-id>\t\n            <unmanaged>ID3D10EffectRenderTargetViewVariable</unmanaged>\t\n            <unmanaged-short>ID3D10EffectRenderTargetViewVariable</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectRenderTargetViewVariable.SetRenderTargetArray(SharpDX.Direct3D10.RenderTargetView[])\">\n            <summary>\t\n            Set an array of render-targets.\t\n            </summary>\t\n            <param name=\"resourcesRef\">Set an array of render-target-view interfaces. See <see cref=\"T:SharpDX.Direct3D10.RenderTargetView\"/>. </param>\n            <returns>Returns one of the following {{Direct3D 10 Return Codes}}. </returns>\n            <unmanaged>HRESULT ID3D10EffectRenderTargetViewVariable::SetRenderTargetArray([In, Buffer] ID3D10RenderTargetView** ppResources,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectRenderTargetViewVariable.SetRenderTargetArray(SharpDX.Direct3D10.RenderTargetView[],System.Int32)\">\n            <summary>\t\n            Set an array of render-targets.\t\n            </summary>\t\n            <param name=\"resourcesRef\">Set an array of render-target-view interfaces. See <see cref=\"T:SharpDX.Direct3D10.RenderTargetView\"/>. </param>\n            <param name=\"offset\">The zero-based array index to store the first interface. </param>\n            <returns>Returns one of the following {{Direct3D 10 Return Codes}}. </returns>\n            <unmanaged>HRESULT ID3D10EffectRenderTargetViewVariable::SetRenderTargetArray([In, Buffer] ID3D10RenderTargetView** ppResources,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectRenderTargetViewVariable.GetRenderTargetArray(System.Int32)\">\n            <summary>\t\n            Get an array of render-targets.\t\n            </summary>\t\n            <param name=\"count\">The number of elements in the array. </param>\n            <returns>Returns an array of <see cref=\"T:SharpDX.Direct3D10.RenderTargetView\"/>. </returns>\n            <unmanaged>HRESULT ID3D10EffectRenderTargetViewVariable::GetRenderTargetArray([Out, Buffer] ID3D10RenderTargetView** ppResources,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectRenderTargetViewVariable.GetRenderTargetArray(System.Int32,System.Int32)\">\n            <summary>\t\n            Get an array of render-targets.\t\n            </summary>\t\n            <param name=\"offset\">The zero-based array index to get the first interface. </param>\n            <param name=\"count\">The number of elements in the array. </param>\n            <returns>Returns an array of <see cref=\"T:SharpDX.Direct3D10.RenderTargetView\"/>. </returns>\n            <unmanaged>HRESULT ID3D10EffectRenderTargetViewVariable::GetRenderTargetArray([Out, Buffer] ID3D10RenderTargetView** ppResources,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectRenderTargetViewVariable.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D10.EffectRenderTargetViewVariable\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectRenderTargetViewVariable.op_Explicit(System.IntPtr)~SharpDX.Direct3D10.EffectRenderTargetViewVariable\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D10.EffectRenderTargetViewVariable\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectRenderTargetViewVariable.SetRenderTarget(SharpDX.Direct3D10.RenderTargetView)\">\n            <summary>\t\n            <p>Set a render-target.</p>\t\n            </summary>\t\n            <param name=\"resourceRef\"><dd>  <p>A reference to a render-target-view interface. See <strong><see cref=\"T:SharpDX.Direct3D10.RenderTargetView\"/> Interface</strong>.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectRenderTargetViewVariable::SetRenderTarget']/*\"/>\t\n            <msdn-id>bb173675</msdn-id>\t\n            <unmanaged>HRESULT ID3D10EffectRenderTargetViewVariable::SetRenderTarget([In] ID3D10RenderTargetView* pResource)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectRenderTargetViewVariable::SetRenderTarget</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectRenderTargetViewVariable.GetRenderTarget\">\n            <summary>\t\n            <p>Get a render-target.</p>\t\n            </summary>\t\n            <returns><dd>  <p>The address of a reference to a render-target-view interface. See <strong><see cref=\"T:SharpDX.Direct3D10.RenderTargetView\"/> Interface</strong>.</p> </dd></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectRenderTargetViewVariable::GetRenderTarget']/*\"/>\t\n            <msdn-id>bb173673</msdn-id>\t\n            <unmanaged>HRESULT ID3D10EffectRenderTargetViewVariable::GetRenderTarget([Out] ID3D10RenderTargetView** ppResource)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectRenderTargetViewVariable::GetRenderTarget</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectRenderTargetViewVariable.SetRenderTargetArray(SharpDX.Direct3D10.RenderTargetView[],System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Set an array of render-targets.</p>\t\n            </summary>\t\n            <param name=\"resourcesOut\"><dd>  <p>Set an array of render-target-view interfaces. See <strong><see cref=\"T:SharpDX.Direct3D10.RenderTargetView\"/> Interface</strong>.</p> </dd></param>\t\n            <param name=\"offset\"><dd>  <p>The zero-based array index to store the first interface.</p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>The number of elements in the array.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectRenderTargetViewVariable::SetRenderTargetArray']/*\"/>\t\n            <msdn-id>bb173676</msdn-id>\t\n            <unmanaged>HRESULT ID3D10EffectRenderTargetViewVariable::SetRenderTargetArray([In, Buffer] ID3D10RenderTargetView** ppResources,[In] unsigned int Offset,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectRenderTargetViewVariable::SetRenderTargetArray</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectRenderTargetViewVariable.SetRenderTargetArray(SharpDX.ComArray{SharpDX.Direct3D10.RenderTargetView},System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Set an array of render-targets.</p>\t\n            </summary>\t\n            <param name=\"resourcesOut\"><dd>  <p>Set an array of render-target-view interfaces. See <strong><see cref=\"T:SharpDX.Direct3D10.RenderTargetView\"/> Interface</strong>.</p> </dd></param>\t\n            <param name=\"offset\"><dd>  <p>The zero-based array index to store the first interface.</p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>The number of elements in the array.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectRenderTargetViewVariable::SetRenderTargetArray']/*\"/>\t\n            <msdn-id>bb173676</msdn-id>\t\n            <unmanaged>HRESULT ID3D10EffectRenderTargetViewVariable::SetRenderTargetArray([In, Buffer] ID3D10RenderTargetView** ppResources,[In] unsigned int Offset,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectRenderTargetViewVariable::SetRenderTargetArray</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectRenderTargetViewVariable.GetRenderTargetArray(SharpDX.Direct3D10.RenderTargetView[],System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Get an array of render-targets.</p>\t\n            </summary>\t\n            <param name=\"resourcesOut\"><dd>  <p>A reference to an array of render-target-view interfaces. See <strong><see cref=\"T:SharpDX.Direct3D10.RenderTargetView\"/> Interface</strong>.</p> </dd></param>\t\n            <param name=\"offset\"><dd>  <p>The zero-based array index to get the first interface.</p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>The number of elements in the array.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectRenderTargetViewVariable::GetRenderTargetArray']/*\"/>\t\n            <msdn-id>bb173674</msdn-id>\t\n            <unmanaged>HRESULT ID3D10EffectRenderTargetViewVariable::GetRenderTargetArray([Out, Buffer] ID3D10RenderTargetView** ppResources,[In] unsigned int Offset,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectRenderTargetViewVariable::GetRenderTargetArray</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.EffectSamplerVariable\">\n            <summary>\t\n            <p>A sampler interface accesses sampler state.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>An <strong><see cref=\"T:SharpDX.Direct3D10.EffectSamplerVariable\"/> Interface</strong> is created when an effect is read into memory.</p><p>Effect variables are saved in memory in the backing store; when a technique is applied, the values in the backing store are copied to the device. You can use either of these methods to return state. For examples, see Two Ways to Get the State in an Effect Variable.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectSamplerVariable']/*\"/>\t\n            <msdn-id>bb173677</msdn-id>\t\n            <unmanaged>ID3D10EffectSamplerVariable</unmanaged>\t\n            <unmanaged-short>ID3D10EffectSamplerVariable</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectSamplerVariable.GetSampler\">\n            <summary>\t\n            Get a reference to a sampler interface.\t\n            </summary>\t\n            <returns>Returns a reference to a sampler interface (see <see cref=\"T:SharpDX.Direct3D10.SamplerState\"/>).  </returns>\n            <unmanaged>HRESULT ID3D10EffectSamplerVariable::GetSampler([None] int Index,[Out] ID3D10SamplerState** ppSampler)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectSamplerVariable.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D10.EffectSamplerVariable\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectSamplerVariable.op_Explicit(System.IntPtr)~SharpDX.Direct3D10.EffectSamplerVariable\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D10.EffectSamplerVariable\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectSamplerVariable.GetSampler(System.Int32)\">\n            <summary>\t\n            <p>Get a reference to a sampler interface.</p>\t\n            </summary>\t\n            <param name=\"index\"><dd>  <p>Index into an array of sampler interfaces. If there is only one sampler interface, use 0.</p> </dd></param>\t\n            <returns><dd>  <p>The address of a reference to a sampler interface (see <strong><see cref=\"T:SharpDX.Direct3D10.SamplerState\"/> Interface</strong>).</p> </dd></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectSamplerVariable::GetSampler']/*\"/>\t\n            <msdn-id>bb173679</msdn-id>\t\n            <unmanaged>HRESULT ID3D10EffectSamplerVariable::GetSampler([In] unsigned int Index,[Out] ID3D10SamplerState** ppSampler)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectSamplerVariable::GetSampler</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectSamplerVariable.GetBackingStore(System.Int32,SharpDX.Direct3D10.SamplerStateDescription@)\">\n            <summary>\t\n            <p>Get a reference to a variable that contains sampler state.</p>\t\n            </summary>\t\n            <param name=\"index\"><dd>  <p>Index into an array of sampler descriptions. If there is only one sampler variable in the effect, use 0.</p> </dd></param>\t\n            <param name=\"samplerDescRef\"><dd>  <p>A reference to a sampler description (see <strong><see cref=\"T:SharpDX.Direct3D10.SamplerStateDescription\"/></strong>).</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectSamplerVariable::GetBackingStore']/*\"/>\t\n            <msdn-id>bb173678</msdn-id>\t\n            <unmanaged>HRESULT ID3D10EffectSamplerVariable::GetBackingStore([In] unsigned int Index,[Out] D3D10_SAMPLER_DESC* pSamplerDesc)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectSamplerVariable::GetBackingStore</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.EffectShaderDescription\">\n            <summary>\t\n            <p>Describes an effect shader.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>To get an effect-shader description, call <strong><see cref=\"M:SharpDX.Direct3D10.EffectShaderVariable.GetShaderDescription(System.Int32)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_EFFECT_SHADER_DESC']/*\"/>\t\n            <msdn-id>bb205051</msdn-id>\t\n            <unmanaged>D3D10_EFFECT_SHADER_DESC</unmanaged>\t\n            <unmanaged-short>D3D10_EFFECT_SHADER_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.EffectShaderDescription.InputSignaturePointer\">\n            <summary>\t\n            <dd> <p>Passed into CreateInputLayout. Only valid on a vertex shader or geometry shader. See <strong>ID3D10Device_CreateInputLayout</strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_EFFECT_SHADER_DESC::pInputSignature']/*\"/>\t\n            <msdn-id>bb205051</msdn-id>\t\n            <unmanaged>const unsigned char* pInputSignature</unmanaged>\t\n            <unmanaged-short>unsigned char pInputSignature</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.EffectShaderDescription.IsInline\">\n            <summary>\t\n            <dd> <p><strong>TRUE</strong> is the shader is defined inline; otherwise <strong><see cref=\"F:SharpDX.Result.False\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_EFFECT_SHADER_DESC::IsInline']/*\"/>\t\n            <msdn-id>bb205051</msdn-id>\t\n            <unmanaged>BOOL IsInline</unmanaged>\t\n            <unmanaged-short>BOOL IsInline</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.EffectShaderDescription.BytecodePointer\">\n            <summary>\t\n            <dd> <p>A reference to the compiled shader.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_EFFECT_SHADER_DESC::pBytecode']/*\"/>\t\n            <msdn-id>bb205051</msdn-id>\t\n            <unmanaged>const unsigned char* pBytecode</unmanaged>\t\n            <unmanaged-short>unsigned char pBytecode</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.EffectShaderDescription.BytecodeLength\">\n            <summary>\t\n            <dd> <p>The length of pBytecode.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_EFFECT_SHADER_DESC::BytecodeLength']/*\"/>\t\n            <msdn-id>bb205051</msdn-id>\t\n            <unmanaged>unsigned int BytecodeLength</unmanaged>\t\n            <unmanaged-short>unsigned int BytecodeLength</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.EffectShaderDescription.StreamOutputDeclaration\">\n            <summary>\t\n            <dd> <p>A string that constains a declaration of the stream output  from a geometry shader.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_EFFECT_SHADER_DESC::SODecl']/*\"/>\t\n            <msdn-id>bb205051</msdn-id>\t\n            <unmanaged>const char* SODecl</unmanaged>\t\n            <unmanaged-short>char SODecl</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.EffectShaderDescription.InputParameterCount\">\n            <summary>\t\n            <dd> <p>The number of entries in the input signature.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_EFFECT_SHADER_DESC::NumInputSignatureEntries']/*\"/>\t\n            <msdn-id>bb205051</msdn-id>\t\n            <unmanaged>unsigned int NumInputSignatureEntries</unmanaged>\t\n            <unmanaged-short>unsigned int NumInputSignatureEntries</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.EffectShaderDescription.OutputParameterCount\">\n            <summary>\t\n            <dd> <p>The number of entries in the output signature.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_EFFECT_SHADER_DESC::NumOutputSignatureEntries']/*\"/>\t\n            <msdn-id>bb205051</msdn-id>\t\n            <unmanaged>unsigned int NumOutputSignatureEntries</unmanaged>\t\n            <unmanaged-short>unsigned int NumOutputSignatureEntries</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.EffectShaderDescription.Signature\">\n            <summary>\n            Gets the signature passed into InputLayout. Only valid on a vertex shader or geometry shader.\n            </summary>\n            <value>The signature.</value>\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.EffectShaderDescription.Bytecode\">\n            <summary>\n            Gets the bytecode from the compiled shader.\n            </summary>\n            <value>The bytecode.</value>\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.EffectShaderResourceVariable\">\n            <summary>\t\n            <p>A shader-resource interface accesses a shader resource.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectShaderResourceVariable']/*\"/>\t\n            <msdn-id>bb173693</msdn-id>\t\n            <unmanaged>ID3D10EffectShaderResourceVariable</unmanaged>\t\n            <unmanaged-short>ID3D10EffectShaderResourceVariable</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectShaderResourceVariable.SetResourceArray(SharpDX.Direct3D10.ShaderResourceView[])\">\n            <summary>\t\n            Set an array of shader resources.\t\n            </summary>\t\n            <param name=\"resourcesRef\">The address of an array of shader-resource-view interfaces. See <see cref=\"T:SharpDX.Direct3D10.ShaderResourceView\"/>. </param>\n            <returns>Returns one of the following {{Direct3D 10 Return Codes}}. </returns>\n            <unmanaged>HRESULT ID3D10EffectShaderResourceVariable::SetResourceArray([None] ID3D10ShaderResourceView** ppResources,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectShaderResourceVariable.SetResourceArray(SharpDX.Direct3D10.ShaderResourceView[],System.Int32)\">\n            <summary>\t\n            Set an array of shader resources.\t\n            </summary>\t\n            <param name=\"resourcesRef\">The address of an array of shader-resource-view interfaces. See <see cref=\"T:SharpDX.Direct3D10.ShaderResourceView\"/>. </param>\n            <param name=\"offset\">The zero-based array index to get the first interface. </param>\n            <returns>Returns one of the following {{Direct3D 10 Return Codes}}. </returns>\n            <unmanaged>HRESULT ID3D10EffectShaderResourceVariable::SetResourceArray([None] ID3D10ShaderResourceView** ppResources,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectShaderResourceVariable.GetResourceArray(System.Int32)\">\n            <summary>\t\n            Get an array of shader resources.\t\n            </summary>\t\n            <param name=\"count\">The number of elements in the array. </param>\n            <returns>Returns an array of shader-resource-view interfaces. See <see cref=\"T:SharpDX.Direct3D10.ShaderResourceView\"/>. </returns>\n            <unmanaged>HRESULT ID3D10EffectShaderResourceVariable::GetResourceArray([Out] ID3D10ShaderResourceView** ppResources,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectShaderResourceVariable.GetResourceArray(System.Int32,System.Int32)\">\n            <summary>\t\n            Get an array of shader resources.\t\n            </summary>\t\n            <param name=\"offset\">The zero-based array index to get the first interface. </param>\n            <param name=\"count\">The number of elements in the array. </param>\n            <returns>Returns an array of shader-resource-view interfaces. See <see cref=\"T:SharpDX.Direct3D10.ShaderResourceView\"/>. </returns>\n            <unmanaged>HRESULT ID3D10EffectShaderResourceVariable::GetResourceArray([Out] ID3D10ShaderResourceView** ppResources,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectShaderResourceVariable.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D10.EffectShaderResourceVariable\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectShaderResourceVariable.op_Explicit(System.IntPtr)~SharpDX.Direct3D10.EffectShaderResourceVariable\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D10.EffectShaderResourceVariable\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectShaderResourceVariable.SetResource(SharpDX.Direct3D10.ShaderResourceView)\">\n            <summary>\t\n            <p>Set a shader resource.</p>\t\n            </summary>\t\n            <param name=\"resourceRef\"><dd>  <p>The address of a reference to a shader-resource-view interface. See <strong><see cref=\"T:SharpDX.Direct3D10.ShaderResourceView\"/> Interface</strong>.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectShaderResourceVariable::SetResource']/*\"/>\t\n            <msdn-id>bb173696</msdn-id>\t\n            <unmanaged>HRESULT ID3D10EffectShaderResourceVariable::SetResource([In] ID3D10ShaderResourceView* pResource)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectShaderResourceVariable::SetResource</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectShaderResourceVariable.GetResource\">\n            <summary>\t\n            <p>Get a shader resource.</p>\t\n            </summary>\t\n            <returns><dd>  <p>The address of a reference to a shader-resource-view interface. See <strong><see cref=\"T:SharpDX.Direct3D10.ShaderResourceView\"/> Interface</strong>.</p> </dd></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectShaderResourceVariable::GetResource']/*\"/>\t\n            <msdn-id>bb173694</msdn-id>\t\n            <unmanaged>HRESULT ID3D10EffectShaderResourceVariable::GetResource([Out] ID3D10ShaderResourceView** ppResource)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectShaderResourceVariable::GetResource</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectShaderResourceVariable.SetResourceArray(SharpDX.Direct3D10.ShaderResourceView[],System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Set an array of shader resources.</p>\t\n            </summary>\t\n            <param name=\"resourcesOut\"><dd>  <p>The address of an array of shader-resource-view interfaces. See <strong><see cref=\"T:SharpDX.Direct3D10.ShaderResourceView\"/> Interface</strong>.</p> </dd></param>\t\n            <param name=\"offset\"><dd>  <p>The zero-based array index to get the first interface.</p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>The number of elements in the array.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectShaderResourceVariable::SetResourceArray']/*\"/>\t\n            <msdn-id>bb173697</msdn-id>\t\n            <unmanaged>HRESULT ID3D10EffectShaderResourceVariable::SetResourceArray([In, Buffer] ID3D10ShaderResourceView** ppResources,[In] unsigned int Offset,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectShaderResourceVariable::SetResourceArray</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectShaderResourceVariable.SetResourceArray(SharpDX.ComArray{SharpDX.Direct3D10.ShaderResourceView},System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Set an array of shader resources.</p>\t\n            </summary>\t\n            <param name=\"resourcesOut\"><dd>  <p>The address of an array of shader-resource-view interfaces. See <strong><see cref=\"T:SharpDX.Direct3D10.ShaderResourceView\"/> Interface</strong>.</p> </dd></param>\t\n            <param name=\"offset\"><dd>  <p>The zero-based array index to get the first interface.</p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>The number of elements in the array.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectShaderResourceVariable::SetResourceArray']/*\"/>\t\n            <msdn-id>bb173697</msdn-id>\t\n            <unmanaged>HRESULT ID3D10EffectShaderResourceVariable::SetResourceArray([In, Buffer] ID3D10ShaderResourceView** ppResources,[In] unsigned int Offset,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectShaderResourceVariable::SetResourceArray</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectShaderResourceVariable.GetResourceArray(SharpDX.Direct3D10.ShaderResourceView[],System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Get an array of shader resources.</p>\t\n            </summary>\t\n            <param name=\"resourcesOut\"><dd>  <p>The address of an array of shader-resource-view interfaces. See <strong><see cref=\"T:SharpDX.Direct3D10.ShaderResourceView\"/> Interface</strong>.</p> </dd></param>\t\n            <param name=\"offset\"><dd>  <p>The zero-based array index to get the first interface.</p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>The number of elements in the array.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectShaderResourceVariable::GetResourceArray']/*\"/>\t\n            <msdn-id>bb173695</msdn-id>\t\n            <unmanaged>HRESULT ID3D10EffectShaderResourceVariable::GetResourceArray([Out, Buffer] ID3D10ShaderResourceView** ppResources,[In] unsigned int Offset,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectShaderResourceVariable::GetResourceArray</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.EffectScalarVariable\">\n            <summary>\t\n            <p>Get an array of floating-point variables.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectScalarVariable']/*\"/>\t\n            <msdn-id>bb173684</msdn-id>\t\n            <unmanaged>ID3D10EffectScalarVariable</unmanaged>\t\n            <unmanaged-short>ID3D10EffectScalarVariable</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectScalarVariable.Set(System.Single)\">\n            <summary>\t\n            Set a floating-point variable.\t\n            </summary>\t\n            <param name=\"value\">A reference to the variable. </param>\n            <returns>Returns one of the following {{Direct3D 10 Return Codes}}. </returns>\n            <unmanaged>HRESULT ID3D10EffectScalarVariable::SetFloat([None] float Value)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectScalarVariable.Set(System.Single[])\">\n            <summary>\t\n            Set an array of floating-point variables.\t\n            </summary>\t\n            <param name=\"dataRef\">A reference to the start of the data to set. </param>\n            <returns>Returns one of the following {{Direct3D 10 Return Codes}}. </returns>\n            <unmanaged>HRESULT ID3D10EffectScalarVariable::SetFloatArray([In, Buffer] float* pData,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectScalarVariable.Set(System.Single[],System.Int32)\">\n            <summary>\t\n            Set an array of floating-point variables.\t\n            </summary>\t\n            <param name=\"dataRef\">A reference to the start of the data to set. </param>\n            <param name=\"offset\">Must be set to 0; this is reserved for future use.  </param>\n            <returns>Returns one of the following {{Direct3D 10 Return Codes}}. </returns>\n            <unmanaged>HRESULT ID3D10EffectScalarVariable::SetFloatArray([In, Buffer] float* pData,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectScalarVariable.GetFloatArray(System.Int32)\">\n            <summary>\t\n            Get an array of floating-point variables.\t\n            </summary>\t\n            <param name=\"count\">The number of array elements to set. </param>\n            <returns>Returns an array of floats. </returns>\n            <unmanaged>HRESULT ID3D10EffectScalarVariable::GetFloatArray([Out, Buffer] float* pData,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectScalarVariable.GetFloatArray(System.Int32,System.Int32)\">\n            <summary>\t\n            Get an array of floating-point variables.\t\n            </summary>\t\n            <param name=\"offset\">Must be set to 0; this is reserved for future use.  </param>\n            <param name=\"count\">The number of array elements to set. </param>\n            <returns>Returns an array of floats. </returns>\n            <unmanaged>HRESULT ID3D10EffectScalarVariable::GetFloatArray([Out, Buffer] float* pData,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectScalarVariable.Set(System.Int32)\">\n            <summary>\t\n            Set an integer variable.\t\n            </summary>\t\n            <param name=\"value\">A reference to the variable. </param>\n            <returns>Returns one of the following {{Direct3D 10 Return Codes}}. </returns>\n            <unmanaged>HRESULT ID3D10EffectScalarVariable::SetInt([None] int Value)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectScalarVariable.Set(System.Int32[])\">\n            <summary>\t\n            Set an array of integer variables.\t\n            </summary>\t\n            <param name=\"dataRef\">A reference to the start of the data to set. </param>\n            <returns>Returns one of the following {{Direct3D 10 Return Codes}}. </returns>\n            <unmanaged>HRESULT ID3D10EffectScalarVariable::SetIntArray([In, Buffer] int* pData,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectScalarVariable.Set(System.Int32[],System.Int32)\">\n            <summary>\t\n            Set an array of integer variables.\t\n            </summary>\t\n            <param name=\"dataRef\">A reference to the start of the data to set. </param>\n            <param name=\"offset\">Must be set to 0; this is reserved for future use.  </param>\n            <returns>Returns one of the following {{Direct3D 10 Return Codes}}. </returns>\n            <unmanaged>HRESULT ID3D10EffectScalarVariable::SetIntArray([In, Buffer] int* pData,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectScalarVariable.GetIntArray(System.Int32)\">\n            <summary>\t\n            Get an array of integer variables.\t\n            </summary>\t\n            <param name=\"count\">The number of array elements to set. </param>\n            <returns>Returns an array of integer variables. </returns>\n            <unmanaged>HRESULT ID3D10EffectScalarVariable::GetIntArray([Out, Buffer] int* pData,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectScalarVariable.GetIntArray(System.Int32,System.Int32)\">\n            <summary>\t\n            Get an array of integer variables.\t\n            </summary>\t\n            <param name=\"offset\">Must be set to 0; this is reserved for future use.  </param>\n            <param name=\"count\">The number of array elements to set. </param>\n            <returns>Returns an array of integer variables. </returns>\n            <unmanaged>HRESULT ID3D10EffectScalarVariable::GetIntArray([Out, Buffer] int* pData,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectScalarVariable.Set(System.Boolean)\">\n            <summary>\t\n            Set a boolean variable.\t\n            </summary>\t\n            <param name=\"value\">A reference to the variable. </param>\n            <returns>Returns one of the following {{Direct3D 10 Return Codes}}. </returns>\n            <unmanaged>HRESULT ID3D10EffectScalarVariable::SetBool([None] BOOL Value)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectScalarVariable.GetBool\">\n            <summary>\t\n            Get a boolean variable.\t\n            </summary>\t\n            <returns>Returns a boolean. </returns>\n            <unmanaged>HRESULT ID3D10EffectScalarVariable::GetBool([Out] BOOL* pValue)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectScalarVariable.Set(System.Boolean[])\">\n            <summary>\t\n            Set an array of boolean variables.\t\n            </summary>\t\n            <param name=\"dataRef\">A reference to the start of the data to set. </param>\n            <returns>Returns one of the following {{Direct3D 10 Return Codes}}. </returns>\n            <unmanaged>HRESULT ID3D10EffectScalarVariable::SetBoolArray([In, Buffer] BOOL* pData,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectScalarVariable.Set(System.Boolean[],System.Int32)\">\n            <summary>\t\n            Set an array of boolean variables.\t\n            </summary>\t\n            <param name=\"dataRef\">A reference to the start of the data to set. </param>\n            <param name=\"offset\">Must be set to 0; this is reserved for future use.  </param>\n            <returns>Returns one of the following {{Direct3D 10 Return Codes}}. </returns>\n            <unmanaged>HRESULT ID3D10EffectScalarVariable::SetBoolArray([In, Buffer] BOOL* pData,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectScalarVariable.GetBoolArray(System.Int32,System.Int32)\">\n            <summary>\t\n            Get an array of boolean variables.\t\n            </summary>\t\n            <param name=\"offset\">Must be set to 0; this is reserved for future use.  </param>\n            <param name=\"count\">The number of array elements to set. </param>\n            <returns>Returns one of the following {{Direct3D 10 Return Codes}}. </returns>\n            <unmanaged>HRESULT ID3D10EffectScalarVariable::GetBoolArray([Out, Buffer] BOOL* pData,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectScalarVariable.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D10.EffectScalarVariable\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectScalarVariable.op_Explicit(System.IntPtr)~SharpDX.Direct3D10.EffectScalarVariable\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D10.EffectScalarVariable\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectScalarVariable.SetFloat(System.Single)\">\n            <summary>\t\n            <p>Set a floating-point variable.</p>\t\n            </summary>\t\n            <param name=\"value\"><dd>  <p>A reference to the variable.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectScalarVariable::SetFloat']/*\"/>\t\n            <msdn-id>bb173689</msdn-id>\t\n            <unmanaged>HRESULT ID3D10EffectScalarVariable::SetFloat([In] float Value)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectScalarVariable::SetFloat</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectScalarVariable.GetFloat\">\n            <summary>\t\n            <p>Get a floating-point variable.</p>\t\n            </summary>\t\n            <returns><dd>  <p>A reference to the variable.</p> </dd></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectScalarVariable::GetFloat']/*\"/>\t\n            <msdn-id>bb173683</msdn-id>\t\n            <unmanaged>HRESULT ID3D10EffectScalarVariable::GetFloat([Out] float* pValue)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectScalarVariable::GetFloat</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectScalarVariable.SetFloatArray(System.Single[],System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Set an array of floating-point variables.</p>\t\n            </summary>\t\n            <param name=\"dataRef\"><dd>  <p>A reference to the start of the data to set.</p> </dd></param>\t\n            <param name=\"offset\"><dd>  <p>Must be set to 0; this is reserved for future use. </p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>The number of array elements to set.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectScalarVariable::SetFloatArray']/*\"/>\t\n            <msdn-id>bb173690</msdn-id>\t\n            <unmanaged>HRESULT ID3D10EffectScalarVariable::SetFloatArray([In, Buffer] float* pData,[In] unsigned int Offset,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectScalarVariable::SetFloatArray</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectScalarVariable.GetFloatArray(System.Single[],System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Get an array of floating-point variables.</p>\t\n            </summary>\t\n            <param name=\"dataRef\"><dd>  <p>A reference to the start of the data to set.</p> </dd></param>\t\n            <param name=\"offset\"><dd>  <p>Must be set to 0; this is reserved for future use. </p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>The number of array elements to set.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectScalarVariable::GetFloatArray']/*\"/>\t\n            <msdn-id>bb173684</msdn-id>\t\n            <unmanaged>HRESULT ID3D10EffectScalarVariable::GetFloatArray([Out, Buffer] float* pData,[In] unsigned int Offset,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectScalarVariable::GetFloatArray</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectScalarVariable.SetInt(System.Int32)\">\n            <summary>\t\n            <p>Set an integer variable.</p>\t\n            </summary>\t\n            <param name=\"value\"><dd>  <p>A reference to the variable.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectScalarVariable::SetInt']/*\"/>\t\n            <msdn-id>bb173691</msdn-id>\t\n            <unmanaged>HRESULT ID3D10EffectScalarVariable::SetInt([In] int Value)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectScalarVariable::SetInt</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectScalarVariable.GetInt\">\n            <summary>\t\n            <p>Get an integer variable.</p>\t\n            </summary>\t\n            <returns><dd>  <p>A reference to the variable.</p> </dd></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectScalarVariable::GetInt']/*\"/>\t\n            <msdn-id>bb173685</msdn-id>\t\n            <unmanaged>HRESULT ID3D10EffectScalarVariable::GetInt([Out] int* pValue)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectScalarVariable::GetInt</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectScalarVariable.SetIntArray(System.Int32[],System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Set an array of integer variables.</p>\t\n            </summary>\t\n            <param name=\"dataRef\"><dd>  <p>A reference to the start of the data to set.</p> </dd></param>\t\n            <param name=\"offset\"><dd>  <p>Must be set to 0; this is reserved for future use. </p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>The number of array elements to set.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectScalarVariable::SetIntArray']/*\"/>\t\n            <msdn-id>Bb173692</msdn-id>\t\n            <unmanaged>HRESULT ID3D10EffectScalarVariable::SetIntArray([In, Buffer] int* pData,[In] unsigned int Offset,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectScalarVariable::SetIntArray</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectScalarVariable.GetIntArray(System.Int32[],System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Get an array of integer variables.</p>\t\n            </summary>\t\n            <param name=\"dataRef\"><dd>  <p>A reference to the start of the data to set.</p> </dd></param>\t\n            <param name=\"offset\"><dd>  <p>Must be set to 0; this is reserved for future use. </p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>The number of array elements to set.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectScalarVariable::GetIntArray']/*\"/>\t\n            <msdn-id>bb173686</msdn-id>\t\n            <unmanaged>HRESULT ID3D10EffectScalarVariable::GetIntArray([Out, Buffer] int* pData,[In] unsigned int Offset,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectScalarVariable::GetIntArray</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectScalarVariable.SetBool(SharpDX.Bool)\">\n            <summary>\t\n            <p>Set a boolean variable.</p>\t\n            </summary>\t\n            <param name=\"value\"><dd>  <p>A reference to the variable.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectScalarVariable::SetBool']/*\"/>\t\n            <msdn-id>bb173687</msdn-id>\t\n            <unmanaged>HRESULT ID3D10EffectScalarVariable::SetBool([In] BOOL Value)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectScalarVariable::SetBool</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectScalarVariable.GetBool(SharpDX.Bool@)\">\n            <summary>\t\n            <p>Get a boolean variable.</p>\t\n            </summary>\t\n            <param name=\"valueRef\"><dd>  <p>A reference to the variable.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectScalarVariable::GetBool']/*\"/>\t\n            <msdn-id>bb173681</msdn-id>\t\n            <unmanaged>HRESULT ID3D10EffectScalarVariable::GetBool([Out] BOOL* pValue)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectScalarVariable::GetBool</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectScalarVariable.SetBoolArray(SharpDX.Bool[],System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Set an array of boolean variables.</p>\t\n            </summary>\t\n            <param name=\"dataRef\"><dd>  <p>A reference to the start of the data to set.</p> </dd></param>\t\n            <param name=\"offset\"><dd>  <p>Must be set to 0; this is reserved for future use. </p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>The number of array elements to set.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectScalarVariable::SetBoolArray']/*\"/>\t\n            <msdn-id>bb173688</msdn-id>\t\n            <unmanaged>HRESULT ID3D10EffectScalarVariable::SetBoolArray([In, Buffer] BOOL* pData,[In] unsigned int Offset,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectScalarVariable::SetBoolArray</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectScalarVariable.GetBoolArray(SharpDX.Bool[],System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Get an array of boolean variables.</p>\t\n            </summary>\t\n            <param name=\"dataRef\"><dd>  <p>A reference to the start of the data to set.</p> </dd></param>\t\n            <param name=\"offset\"><dd>  <p>Must be set to 0; this is reserved for future use. </p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>The number of array elements to set.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectScalarVariable::GetBoolArray']/*\"/>\t\n            <msdn-id>bb173682</msdn-id>\t\n            <unmanaged>HRESULT ID3D10EffectScalarVariable::GetBoolArray([Out, Buffer] BOOL* pData,[In] unsigned int Offset,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectScalarVariable::GetBoolArray</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.EffectStringVariable\">\n            <summary>\t\n            <p>A string-variable interface accesses a string variable.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectStringVariable']/*\"/>\t\n            <msdn-id>bb173705</msdn-id>\t\n            <unmanaged>ID3D10EffectStringVariable</unmanaged>\t\n            <unmanaged-short>ID3D10EffectStringVariable</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectStringVariable.GetString\">\n            <summary>\t\n            Get the string.\t\n            </summary>\t\n            <returns>Returns a reference to the string.</returns>\n            <unmanaged>HRESULT ID3D10EffectStringVariable::GetString([Out] const char** ppString)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectStringVariable.GetStringArray(System.Int32)\">\n            <summary>\t\n            Get an array of strings.\t\n            </summary>\t\n            <param name=\"count\">The number of strings in the returned array. </param>\n            <returns>Returns a reference to the first string in the array.</returns>\n            <unmanaged>HRESULT ID3D10EffectStringVariable::GetStringArray([Out, Buffer] const char** ppStrings,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectStringVariable.GetStringArray(System.Int32,System.Int32)\">\n            <summary>\t\n            Get an array of strings.\t\n            </summary>\t\n            <param name=\"offset\">The offset (in number of strings) between the start of the array and the first string to get. </param>\n            <param name=\"count\">The number of strings in the returned array. </param>\n            <returns>Returns a reference to the first string in the array.</returns>\n            <unmanaged>HRESULT ID3D10EffectStringVariable::GetStringArray([Out, Buffer] const char** ppStrings,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectStringVariable.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D10.EffectStringVariable\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectStringVariable.op_Explicit(System.IntPtr)~SharpDX.Direct3D10.EffectStringVariable\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D10.EffectStringVariable\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectStringVariable.GetString(System.IntPtr@)\">\n            <summary>\t\n            <p>Get the string.</p>\t\n            </summary>\t\n            <param name=\"stringOut\"><dd>  <p>A reference to the string.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectStringVariable::GetString']/*\"/>\t\n            <msdn-id>bb173706</msdn-id>\t\n            <unmanaged>HRESULT ID3D10EffectStringVariable::GetString([Out] const void** ppString)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectStringVariable::GetString</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectStringVariable.GetStringArray(System.IntPtr,System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Get an array of strings.</p>\t\n            </summary>\t\n            <param name=\"stringsOut\"><dd>  <p>A reference to the first string in the array.</p> </dd></param>\t\n            <param name=\"offset\"><dd>  <p>The offset (in number of strings) between the start of the array and the first string to get.</p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>The number of strings in the returned array.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectStringVariable::GetStringArray']/*\"/>\t\n            <msdn-id>bb173707</msdn-id>\t\n            <unmanaged>HRESULT ID3D10EffectStringVariable::GetStringArray([Out, Buffer] const void** ppStrings,[In] unsigned int Offset,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectStringVariable::GetStringArray</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.EffectVectorVariable\">\n            <summary>\t\n            <p>A vector-variable interface accesses a four-component vector.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectVectorVariable']/*\"/>\t\n            <msdn-id>bb173748</msdn-id>\t\n            <unmanaged>ID3D10EffectVectorVariable</unmanaged>\t\n            <unmanaged-short>ID3D10EffectVectorVariable</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectVectorVariable.GetIntVector\">\n            <summary>\t\n            Get a four-component vector that contains integer data.\t\n            </summary>\t\n            <returns>Returns a four-component vector that contains integer data </returns>\n            <unmanaged>HRESULT ID3D10EffectVectorVariable::GetIntVector([Out] int* pData)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectVectorVariable.GetFloatVector\">\n            <summary>\t\n            Get a four-component vector that contains floating-point data.\t\n            </summary>\t\n            <returns>Returns a four-component vector that contains floating-point data.</returns>\n            <unmanaged>HRESULT ID3D10EffectVectorVariable::GetFloatVector([Out] float* pData)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectVectorVariable.GetBoolVector\">\n            <summary>\t\n            Get a four-component vector that contains boolean data.\t\n            </summary>\t\n            <returns>a four-component vector that contains boolean data. </returns>\n            <unmanaged>HRESULT ID3D10EffectVectorVariable::GetBoolVector([Out, Buffer] BOOL* pData)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectVectorVariable.GetVector``1\">\n            <summary>\t\n            Get a four-component vector.\t\n            </summary>\t\n            <typeparam name=\"T\">Type of the four-component vector</typeparam>\n            <returns>a four-component vector. </returns>\n            <unmanaged>HRESULT ID3D10EffectVectorVariable::GetFloatVector([Out, Buffer] BOOL* pData)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectVectorVariable.Set(SharpDX.Int4[])\">\n            <summary>\t\n            Set an array of four-component vectors that contain integer data.\t\n            </summary>\t\n            <param name=\"array\">A reference to the start of the data to set. </param>\n            <returns>Returns one of the following {{Direct3D 10 Return Codes}}. </returns>\n            <unmanaged>HRESULT ID3D10EffectVectorVariable::SetIntVectorArray([In, Buffer] int* pData,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectVectorVariable.Set(SharpDX.Vector4[])\">\n            <summary>\t\n            Set an array of four-component vectors that contain floating-point data.\t\n            </summary>\t\n            <param name=\"array\">A reference to the start of the data to set. </param>\n            <returns>Returns one of the following {{Direct3D 10 Return Codes}}. </returns>\n            <unmanaged>HRESULT ID3D10EffectVectorVariable::SetFloatVectorArray([In, Buffer] float* pData,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectVectorVariable.Set``1(``0[])\">\n            <summary>\n            Set an array of four-component vectors that contain floating-point data.\n            </summary>\n            <typeparam name=\"T\">Type of the four-component vector</typeparam>\n            <param name=\"array\">A reference to the start of the data to set.</param>\n            <returns>\n            Returns one of the following {{Direct3D 10 Return Codes}}.\n            </returns>\n            <unmanaged>HRESULT ID3D10EffectVectorVariable::SetFloatVectorArray([In, Buffer] float* pData,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectVectorVariable.Set``1(``0)\">\n            <summary>\t\n            Set a x-component vector.\t\n            </summary>\t\n            <param name=\"value\">A reference to the first component. </param>\n            <returns>Returns one of the following {{Direct3D 10 Return Codes}}. </returns>\n            <unmanaged>HRESULT ID3D10EffectVectorVariable::SetFloatVector([In] float* pData)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectVectorVariable.Set``1(``0@)\">\n            <summary>\t\n            Set a x-component vector.\t\n            </summary>\t\n            <param name=\"value\">A reference to the first component. </param>\n            <returns>Returns one of the following {{Direct3D 10 Return Codes}}. </returns>\n            <unmanaged>HRESULT ID3D10EffectVectorVariable::SetFloatVector([In] float* pData)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectVectorVariable.Set(SharpDX.Vector2)\">\n            <summary>\t\n            Set a two-component vector that contains floating-point data.\t\n            </summary>\t\n            <param name=\"value\">A reference to the first component. </param>\n            <returns>Returns one of the following {{Direct3D 10 Return Codes}}. </returns>\n            <unmanaged>HRESULT ID3D10EffectVectorVariable::SetFloatVector([In] float* pData)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectVectorVariable.Set(SharpDX.Vector3)\">\n            <summary>\t\n            Set a three-component vector that contains floating-point data.\t\n            </summary>\t\n            <param name=\"value\">A reference to the first component. </param>\n            <returns>Returns one of the following {{Direct3D 10 Return Codes}}. </returns>\n            <unmanaged>HRESULT ID3D10EffectVectorVariable::SetFloatVector([In] float* pData)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectVectorVariable.Set(SharpDX.Color4)\">\n            <summary>\t\n            Set a four-component color that contains floating-point data.\t\n            </summary>\t\n            <param name=\"value\">A reference to the first component. </param>\n            <returns>Returns one of the following {{Direct3D 10 Return Codes}}. </returns>\n            <unmanaged>HRESULT ID3D10EffectVectorVariable::SetFloatVector([In] float* pData)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectVectorVariable.Set(SharpDX.Color4[])\">\n            <summary>\t\n            Set an array of four-component color that contain floating-point data.\t\n            </summary>\t\n            <param name=\"array\">A reference to the start of the data to set. </param>\n            <returns>Returns one of the following {{Direct3D 10 Return Codes}}. </returns>\n            <unmanaged>HRESULT ID3D10EffectVectorVariable::SetFloatVectorArray([In, Buffer] float* pData,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectVectorVariable.GetIntVectorArray(System.Int32)\">\n            <summary>\t\n            Get an array of four-component vectors that contain integer data.\t\n            </summary>\t\n            <param name=\"count\">The number of array elements to set. </param>\n            <returns>Returns an array of four-component vectors that contain integer data. </returns>\n            <unmanaged>HRESULT ID3D10EffectVectorVariable::GetIntVectorArray([Out, Buffer] int* pData,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectVectorVariable.GetFloatVectorArray(System.Int32)\">\n            <summary>\t\n            Get an array of four-component vectors that contain floating-point data.\t\n            </summary>\t\n            <param name=\"count\">The number of array elements to set. </param>\n            <returns>Returns an array of four-component vectors that contain floating-point data. </returns>\n            <unmanaged>HRESULT ID3D10EffectVectorVariable::GetFloatVectorArray([None] float* pData,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectVectorVariable.GetBoolVectorArray(System.Int32)\">\n            <summary>\t\n            Get an array of four-component vectors that contain boolean data.\t\n            </summary>\t\n            <param name=\"count\">The number of array elements to set. </param>\n            <returns>an array of four-component vectors that contain boolean data.\t </returns>\n            <unmanaged>HRESULT ID3D10EffectVectorVariable::GetBoolVectorArray([Out, Buffer] BOOL* pData,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectVectorVariable.GetVectorArray``1(System.Int32)\">\n            <summary>\t\n            Get an array of four-component vectors that contain boolean data.\t\n            </summary>\t\n            <param name=\"count\">The number of array elements to set. </param>\n            <returns>an array of four-component vectors that contain boolean data.\t </returns>\n            <unmanaged>HRESULT ID3D10EffectVectorVariable::GetBoolVectorArray([Out, Buffer] BOOL* pData,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectVectorVariable.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D10.EffectVectorVariable\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectVectorVariable.op_Explicit(System.IntPtr)~SharpDX.Direct3D10.EffectVectorVariable\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D10.EffectVectorVariable\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectVectorVariable.Set(SharpDX.Bool4)\">\n            <summary>\t\n            <p>Set a four-component vector that contains boolean data.</p>\t\n            </summary>\t\n            <param name=\"dataRef\"><dd>  <p>A reference to the first component.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectVectorVariable::SetBoolVector']/*\"/>\t\n            <msdn-id>bb173755</msdn-id>\t\n            <unmanaged>HRESULT ID3D10EffectVectorVariable::SetBoolVector([In] SHARPDX_BOOL4* pData)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectVectorVariable::SetBoolVector</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectVectorVariable.Set(SharpDX.Int4)\">\n            <summary>\t\n            <p>Set a four-component vector that contains integer data.</p>\t\n            </summary>\t\n            <param name=\"dataRef\"><dd>  <p>A reference to the first component.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectVectorVariable::SetIntVector']/*\"/>\t\n            <msdn-id>bb173759</msdn-id>\t\n            <unmanaged>HRESULT ID3D10EffectVectorVariable::SetIntVector([In] SHARPDX_INT4* pData)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectVectorVariable::SetIntVector</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectVectorVariable.Set(System.Single)\">\n            <summary>\t\n            <p>Set a four-component vector that contains floating-point data.</p>\t\n            </summary>\t\n            <param name=\"dataRef\"><dd>  <p>A reference to the first component.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectVectorVariable::SetFloatVector']/*\"/>\t\n            <msdn-id>bb173757</msdn-id>\t\n            <unmanaged>HRESULT ID3D10EffectVectorVariable::SetFloatVector([In] float* pData)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectVectorVariable::SetFloatVector</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectVectorVariable.GetBoolVector(SharpDX.Bool4@)\">\n            <summary>\t\n            <p>Get a four-component vector that contains boolean data.</p>\t\n            </summary>\t\n            <param name=\"dataRef\"><dd>  <p>A reference to the first component.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectVectorVariable::GetBoolVector']/*\"/>\t\n            <msdn-id>bb173749</msdn-id>\t\n            <unmanaged>HRESULT ID3D10EffectVectorVariable::GetBoolVector([Out] SHARPDX_BOOL4* pData)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectVectorVariable::GetBoolVector</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectVectorVariable.GetIntVector(SharpDX.Int4@)\">\n            <summary>\t\n            <p>Get a four-component vector that contains integer data.</p>\t\n            </summary>\t\n            <param name=\"dataRef\"><dd>  <p>A reference to the first component.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectVectorVariable::GetIntVector']/*\"/>\t\n            <msdn-id>bb173753</msdn-id>\t\n            <unmanaged>HRESULT ID3D10EffectVectorVariable::GetIntVector([Out] SHARPDX_INT4* pData)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectVectorVariable::GetIntVector</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectVectorVariable.GetFloatVector(SharpDX.Vector4@)\">\n            <summary>\t\n            <p>Get a four-component vector that contains floating-point data.</p>\t\n            </summary>\t\n            <param name=\"dataRef\"><dd>  <p>A reference to the first component.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectVectorVariable::GetFloatVector']/*\"/>\t\n            <msdn-id>bb173751</msdn-id>\t\n            <unmanaged>HRESULT ID3D10EffectVectorVariable::GetFloatVector([Out] SHARPDX_VECTOR4* pData)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectVectorVariable::GetFloatVector</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectVectorVariable.Set(SharpDX.Bool4[],System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Set an array of four-component vectors that contain boolean data.</p>\t\n            </summary>\t\n            <param name=\"dataRef\"><dd>  <p>A reference to the start of the data to set.</p> </dd></param>\t\n            <param name=\"offset\"><dd>  <p>Must be set to 0; this is reserved for future use. </p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>The number of array elements to set.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectVectorVariable::SetBoolVectorArray']/*\"/>\t\n            <msdn-id>bb173756</msdn-id>\t\n            <unmanaged>HRESULT ID3D10EffectVectorVariable::SetBoolVectorArray([In, Buffer] SHARPDX_BOOL4* pData,[In] unsigned int Offset,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectVectorVariable::SetBoolVectorArray</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectVectorVariable.Set(SharpDX.Int4[],System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Set an array of four-component vectors that contain integer data.</p>\t\n            </summary>\t\n            <param name=\"dataRef\"><dd>  <p>A reference to the start of the data to set.</p> </dd></param>\t\n            <param name=\"offset\"><dd>  <p>Must be set to 0; this is reserved for future use. </p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>The number of array elements to set.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectVectorVariable::SetIntVectorArray']/*\"/>\t\n            <msdn-id>Bb173760</msdn-id>\t\n            <unmanaged>HRESULT ID3D10EffectVectorVariable::SetIntVectorArray([In, Buffer] SHARPDX_INT4* pData,[In] unsigned int Offset,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectVectorVariable::SetIntVectorArray</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectVectorVariable.Set(SharpDX.Vector4[],System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Set an array of four-component vectors that contain floating-point data.</p>\t\n            </summary>\t\n            <param name=\"dataRef\"><dd>  <p>A reference to the start of the data to set.</p> </dd></param>\t\n            <param name=\"offset\"><dd>  <p>Must be set to 0; this is reserved for future use. </p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>The number of array elements to set.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectVectorVariable::SetFloatVectorArray']/*\"/>\t\n            <msdn-id>bb173758</msdn-id>\t\n            <unmanaged>HRESULT ID3D10EffectVectorVariable::SetFloatVectorArray([In, Buffer] SHARPDX_VECTOR4* pData,[In] unsigned int Offset,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectVectorVariable::SetFloatVectorArray</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectVectorVariable.GetBoolVectorArray(SharpDX.Bool4[],System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Get an array of four-component vectors that contain boolean data.</p>\t\n            </summary>\t\n            <param name=\"dataRef\"><dd>  <p>A reference to the start of the data to set.</p> </dd></param>\t\n            <param name=\"offset\"><dd>  <p>Must be set to 0; this is reserved for future use. </p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>The number of array elements to set.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectVectorVariable::GetBoolVectorArray']/*\"/>\t\n            <msdn-id>bb173750</msdn-id>\t\n            <unmanaged>HRESULT ID3D10EffectVectorVariable::GetBoolVectorArray([Out, Buffer] SHARPDX_BOOL4* pData,[In] unsigned int Offset,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectVectorVariable::GetBoolVectorArray</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectVectorVariable.GetIntVectorArray(SharpDX.Int4[],System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Get an array of four-component vectors that contain integer data.</p>\t\n            </summary>\t\n            <param name=\"dataRef\"><dd>  <p>A reference to the start of the data to set.</p> </dd></param>\t\n            <param name=\"offset\"><dd>  <p>Must be set to 0; this is reserved for future use. </p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>The number of array elements to set.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectVectorVariable::GetIntVectorArray']/*\"/>\t\n            <msdn-id>bb173754</msdn-id>\t\n            <unmanaged>HRESULT ID3D10EffectVectorVariable::GetIntVectorArray([Out, Buffer] SHARPDX_INT4* pData,[In] unsigned int Offset,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectVectorVariable::GetIntVectorArray</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectVectorVariable.GetFloatVectorArray(SharpDX.Vector4[],System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Get an array of four-component vectors that contain floating-point data.</p>\t\n            </summary>\t\n            <param name=\"dataRef\"><dd>  <p>A reference to the start of the data to set.</p> </dd></param>\t\n            <param name=\"offset\"><dd>  <p>Must be set to 0; this is reserved for future use. </p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>The number of array elements to set.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectVectorVariable::GetFloatVectorArray']/*\"/>\t\n            <msdn-id>bb173752</msdn-id>\t\n            <unmanaged>HRESULT ID3D10EffectVectorVariable::GetFloatVectorArray([Out, Buffer] SHARPDX_VECTOR4* pData,[In] unsigned int Offset,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectVectorVariable::GetFloatVectorArray</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.Font\">\n            <summary>\t\n            <p>The <see cref=\"T:SharpDX.Direct3D10.Font\"/> interface encapsulates the textures and resources needed to render a specific font on a specific device.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The <see cref=\"T:SharpDX.Direct3D10.Font\"/> interface is obtained by calling <strong><see cref=\"M:SharpDX.Direct3D10.D3DX10.CreateFont(SharpDX.Direct3D10.Device,System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Bool,System.Int32,System.Int32,System.Int32,System.Int32,System.String,SharpDX.Direct3D10.Font)\"/></strong> or <strong><see cref=\"M:SharpDX.Direct3D10.D3DX10.CreateFontIndirect(SharpDX.Direct3D10.Device,SharpDX.Direct3D10.FontDescription@,SharpDX.Direct3D10.Font)\"/></strong>.</p><p>The LPD3DX10FONT type is defined as a reference to the <see cref=\"T:SharpDX.Direct3D10.Font\"/> interface.</p><pre><code> typedef interface <see cref=\"T:SharpDX.Direct3D10.Font\"/> <see cref=\"T:SharpDX.Direct3D10.Font\"/>;\t\n            typedef interface <see cref=\"T:SharpDX.Direct3D10.Font\"/> *LPD3DX10FONT;\t\n            </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10Font']/*\"/>\t\n            <msdn-id>bb173886</msdn-id>\t\n            <unmanaged>ID3DX10Font</unmanaged>\t\n            <unmanaged-short>ID3DX10Font</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Font.#ctor(SharpDX.Direct3D10.Device,SharpDX.Direct3D10.FontDescription)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D10.Font\"/> class.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"fontDescription\">The font description.</param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Font.#ctor(SharpDX.Direct3D10.Device,System.Drawing.Font)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D10.Font\"/> class from a <see cref=\"T:System.Drawing.Font\"/>\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"font\">The font.</param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Font.#ctor(SharpDX.Direct3D10.Device,System.Int32,System.Int32,SharpDX.Direct3D10.FontWeight,System.Int32,System.Boolean,SharpDX.Direct3D10.FontCharacterSet,SharpDX.Direct3D10.FontPrecision,SharpDX.Direct3D10.FontQuality,SharpDX.Direct3D10.FontPitchAndFamily,System.String)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D10.Font\"/> class.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"height\">The height.</param>\n            <param name=\"width\">The width.</param>\n            <param name=\"weight\">The weight.</param>\n            <param name=\"mipLevels\">The mip levels.</param>\n            <param name=\"isItalic\">if set to <c>true</c> [is italic].</param>\n            <param name=\"characterSet\">The character set.</param>\n            <param name=\"precision\">The precision.</param>\n            <param name=\"quality\">The quality.</param>\n            <param name=\"pitchAndFamily\">The pitch and family.</param>\n            <param name=\"faceName\">Name of the face.</param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Font.PreloadText(System.String)\">\n            <summary>\t\n            Load formatted text into video memory to improve the efficiency of rendering to the device. This method supports ANSI and Unicode strings.\t\n            </summary>\t\n            <remarks>\t\n            The compiler setting also determines the function version. If Unicode is defined, the function call resolves to PreloadTextW. Otherwise, the function call resolves to PreloadTextA because ANSI strings are being used. This method generates textures that contain glyphs that represent the input text. The glyphs are drawn as a series of triangles. Text will not be rendered to the device; ID3DX10Font::DrawText must still be called to render the text. However, by preloading text into video memory, ID3DX10Font::DrawText will use substantially fewer CPU resources. This method internally converts characters to glyphs using the GDI function {{GetCharacterPlacement}}. \t\n            </remarks>\t\n            <param name=\"stringRef\">Pointer to a string of characters to be loaded into video memory. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR; otherwise, the data type resolves to LPCSTR. See Remarks. </param>\n            <returns>If the method succeeds, the return value is S_OK. If the method fails, the return value can be one of the following: D3DERR_INVALIDCALL, D3DXERR_INVALIDDATA. </returns>\n            <unmanaged>HRESULT ID3DX10Font::PreloadTextW([None] const wchar_t* pString,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Font.DrawText(SharpDX.Direct3D10.Sprite,System.String,SharpDX.Rectangle,SharpDX.Direct3D10.FontDrawFlags,SharpDX.Color4)\">\n            <summary>\t\n            Draw formatted text.\n            </summary>\t\n            <remarks>\t\n            The parameters of this method are very similar to those of the {{GDI DrawText}} function. This method supports both ANSI and Unicode strings. Unless the DT_NOCLIP format is used, this method clips the text so that it does not appear outside the specified rectangle. All formatting is assumed to have multiple lines unless the DT_SINGLELINE format is specified. If the selected font is too large for the rectangle, this method does not attempt to substitute a smaller font. This method supports only fonts whose escapement and orientation are both zero. \t\n            </remarks>\t\n            <param name=\"sprite\">Reference to an ID3DX10Sprite object that contains the string you wish to draw. Can be NULL, in which case Direct3D will render the string with its own sprite object. To improve efficiency, a sprite object should be specified if ID3DX10Font::DrawText is to be called more than once in a row. </param>\n            <param name=\"text\">Pointer to a string to draw. If UNICODE is defined, this parameter type resolves to an LPCWSTR, otherwise, the type resolves to an LPCSTR. If the Count parameter is -1, the string must be NULL terminated. </param>\n            <param name=\"rect\">Pointer to a <see cref=\"T:SharpDX.Rectangle\"/> structure that contains the rectangle, in logical coordinates, in which the text is to be formatted. As with any RECT object, the coordinate value of the rectangle's right side must be greater than that of its left side. Likewise, the coordinate value of the bottom must be greater than that of the top. </param>\n            <param name=\"drawFlags\">Specify the method of formatting the text. It can be any combination of the following values:    ItemDescription  DT_BOTTOM  Justify the text to the bottom of the rectangle. This value must be combined with DT_SINGLELINE.   DT_CALCRECT  Tell DrawText to automatically calculate the width and height of the rectangle based on the length of the string you tell it to draw. If there are multiple lines of text, ID3DX10Font::DrawText uses the width of the rectangle pointed to by the pRect parameter and extends the base of the rectangle to bound the last line of text. If there is only one line of text, ID3DX10Font::DrawText modifies the right side of the rectangle so that it bounds the last character in the line. In either case, ID3DX10Font::DrawText returns the height of the formatted text but does not draw the text.   DT_CENTER  Center text horizontally in the rectangle.   DT_EXPANDTABS  Expand tab characters. The default number of characters per tab is eight.   DT_LEFT  Align text to the left.   DT_NOCLIP  Draw without clipping. ID3DX10Font::DrawText is somewhat faster when DT_NOCLIP is used.   DT_RIGHT  Align text to the right.   DT_RTLREADING  Display text in right-to-left reading order for bidirectional text when a Hebrew or Arabic font is selected. The default reading order for all text is left-to-right.   DT_SINGLELINE  Display text on a single line only. Carriage returns and line feeds do not break the line.   DT_TOP  Top-justify text.   DT_VCENTER  Center text vertically (single line only).   DT_WORDBREAK  Break words. Lines are automatically broken between words if a word would extend past the edge of the rectangle specified by the pRect parameter. A carriage return/line feed sequence also breaks the line.   ? </param>\n            <param name=\"color\">Color of the text. See <see cref=\"T:SharpDX.Color4\"/>. </param>\n            <returns>If the function succeeds, the return value is the height of the text in logical units. If DT_VCENTER or DT_BOTTOM is specified, the return value is the offset from pRect (top to the bottom) of the drawn text. If the function fails, the return value is zero. </returns>\n            <unmanaged>int ID3DX10Font::DrawTextW([None] LPD3DX10SPRITE pSprite,[None] const wchar_t* pString,[None] int Count,[None] RECT* pRect,[None] int Format,[None] D3DXCOLOR Color)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Font.DrawText(SharpDX.Direct3D10.Sprite,System.String,System.Int32,System.Int32,SharpDX.Color4)\">\n            <summary>\n            Draw formatted text at the specified position.\n            </summary>\n            <param name=\"sprite\">Reference to an ID3DX10Sprite object that contains the string you wish to draw. Can be NULL, in which case Direct3D will render the string with its own sprite object. To improve efficiency, a sprite object should be specified if ID3DX10Font::DrawText is to be called more than once in a row.</param>\n            <param name=\"text\">Pointer to a string to draw. If UNICODE is defined, this parameter type resolves to an LPCWSTR, otherwise, the type resolves to an LPCSTR. If the Count parameter is -1, the string must be NULL terminated.</param>\n            <param name=\"x\">The x.</param>\n            <param name=\"y\">The y.</param>\n            <param name=\"color\">Color of the text. See <see cref=\"T:SharpDX.Color4\"/>.</param>\n            <returns>\n            If the function succeeds, the return value is the height of the text in logical units. If DT_VCENTER or DT_BOTTOM is specified, the return value is the offset from pRect (top to the bottom) of the drawn text. If the function fails, the return value is zero.\n            </returns>\n            <unmanaged>int ID3DX10Font::DrawTextW([None] LPD3DX10SPRITE pSprite,[None] const wchar_t* pString,[None] int Count,[None] RECT* pRect,[None] int Format,[None] D3DXCOLOR Color)</unmanaged>\n            <remarks>\n            The parameters of this method are very similar to those of the {{GDI DrawText}} function. This method supports both ANSI and Unicode strings. Unless the DT_NOCLIP format is used, this method clips the text so that it does not appear outside the specified rectangle. All formatting is assumed to have multiple lines unless the DT_SINGLELINE format is specified. If the selected font is too large for the rectangle, this method does not attempt to substitute a smaller font. This method supports only fonts whose escapement and orientation are both zero.\n            </remarks>\n            <unmanaged>int ID3DX10Font::DrawTextW([In] ID3DX10Sprite* pSprite,[In] const wchar_t* pString,[In] int Count,[In] RECT* pRect,[In] unsigned int Format,[In] D3DXCOLOR Color)</unmanaged>\t\n        </member>\n        <!-- Badly formed XML comment ignored for member \"M:SharpDX.Direct3D10.Font.MeasureText(SharpDX.Direct3D10.Sprite,System.String,SharpDX.Rectangle,SharpDX.Direct3D10.FontDrawFlags)\" -->\n        <!-- Badly formed XML comment ignored for member \"M:SharpDX.Direct3D10.Font.MeasureText(SharpDX.Direct3D10.Sprite,System.String,SharpDX.Rectangle,SharpDX.Direct3D10.FontDrawFlags,System.Int32@)\" -->\n        <member name=\"M:SharpDX.Direct3D10.Font.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D10.Font\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Font.op_Explicit(System.IntPtr)~SharpDX.Direct3D10.Font\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D10.Font\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Font.GetDevice(SharpDX.Direct3D10.Device@)\">\n            <summary>\t\n            <p>Retrieve the Direct3D device associated with the font object.</p>\t\n            </summary>\t\n            <param name=\"deviceOut\"><dd>  <p>Address of a reference to an <see cref=\"T:SharpDX.Direct3D10.Device\"/> interface, representing the Direct3D device object associated with the font object.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the return value can be one of the following: <see cref=\"!:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??Calling this method will increase the internal reference count on the <see cref=\"T:SharpDX.Direct3D10.Device\"/> interface. Be sure to call <see cref=\"T:SharpDX.ComObject\"/> when you are done using this <see cref=\"T:SharpDX.Direct3D10.Device\"/> interface or you will have a memory leak.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10Font::GetDevice']/*\"/>\t\n            <msdn-id>bb173891</msdn-id>\t\n            <unmanaged>HRESULT ID3DX10Font::GetDevice([Out] ID3D10Device** ppDevice)</unmanaged>\t\n            <unmanaged-short>ID3DX10Font::GetDevice</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Font.GetDescription(SharpDX.Direct3D10.FontDescription@)\">\n            <summary>\t\n            <p>Get a description of the current font object.</p>\t\n            </summary>\t\n            <param name=\"descRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D10.FontDescription\"/></strong> structure that describes the font object. If UNICODE is defined, a reference to a D3DX10FONT_DESCW is returned; otherwise a reference to a D3DX10FONT_DESCA is returned.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the following value will be returned: <see cref=\"!:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>This method describes Unicode font objects if UNICODE is defined. Otherwise GetDescA is called, which returns a reference to the D3DX10FONT_DESCA structure.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10Font::GetDescW']/*\"/>\t\n            <msdn-id>bb173890</msdn-id>\t\n            <unmanaged>HRESULT ID3DX10Font::GetDescW([Out] D3DX10_FONT_DESCW* pDesc)</unmanaged>\t\n            <unmanaged-short>ID3DX10Font::GetDescW</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Font.GetTextMetrics(System.IntPtr)\">\n            <summary>\t\n            <p>Retrieve font characteristics.</p>\t\n            </summary>\t\n            <param name=\"textMetricsRef\"><dd>  <p>Pointer to a <see cref=\"T:SharpDX.Win32Native.TextMetric\"/> structure, which contains font properties. If Unicode is defined, the function returns a <see cref=\"T:SharpDX.Win32Native.TextMetric\"/> structure. Otherwise, the function returns a <see cref=\"T:SharpDX.Win32Native.TextMetricA\"/> structure.</p> </dd></param>\t\n            <returns><p>Nonzero if the function is successful; otherwise 0.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10Font::GetTextMetricsW']/*\"/>\t\n            <msdn-id>bb173893</msdn-id>\t\n            <unmanaged>BOOL ID3DX10Font::GetTextMetricsW([In] void* pTextMetrics)</unmanaged>\t\n            <unmanaged-short>ID3DX10Font::GetTextMetricsW</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Font.GetDeviceContext\">\n            <summary>\t\n            <p>Return a handle to a display device context (DC) that has the font set onto it.</p>\t\n            </summary>\t\n            <returns><p>Handle to a display DC.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10Font::GetDC']/*\"/>\t\n            <msdn-id>bb173889</msdn-id>\t\n            <unmanaged>HDC ID3DX10Font::GetDC()</unmanaged>\t\n            <unmanaged-short>ID3DX10Font::GetDC</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Font.GetGlyphData(System.Int32,SharpDX.Direct3D10.ShaderResourceView@,SharpDX.Rectangle@,SharpDX.DrawingPoint@)\">\n            <summary>\t\n            <p>Return information about the placement and orientation of a glyph in a character cell.</p>\t\n            </summary>\t\n            <param name=\"glyph\"><dd>  <p>Glyph identifier.</p> </dd></param>\t\n            <param name=\"textureOut\"><dd>  <p>Address of a reference to a ID3D10Texture object that contains the glyph.</p> </dd></param>\t\n            <param name=\"blackBoxRef\"><dd>  <p>Pointer to the smallest rectangle object that completely encloses the glyph. See <see cref=\"T:SharpDX.Rectangle\"/>.</p> </dd></param>\t\n            <param name=\"cellIncRef\"><dd>  <p>Pointer to the two-dimensional vector that connects the origin of the current character cell to the origin of the next character cell. See <see cref=\"T:SharpDX.DrawingPoint\"/>.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the return value can be one of the following: <see cref=\"!:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10Font::GetGlyphData']/*\"/>\t\n            <msdn-id>bb173892</msdn-id>\t\n            <unmanaged>HRESULT ID3DX10Font::GetGlyphData([In] unsigned int Glyph,[Out] ID3D10ShaderResourceView** ppTexture,[Out] RECT* pBlackBox,[Out] POINT* pCellInc)</unmanaged>\t\n            <unmanaged-short>ID3DX10Font::GetGlyphData</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Font.PreloadCharacters(System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Load a series of characters into video memory to improve the efficiency of rendering to the device.</p>\t\n            </summary>\t\n            <param name=\"first\"><dd>  <p>ID of the first character to be loaded into video memory.</p> </dd></param>\t\n            <param name=\"last\"><dd>  <p>ID of the last character to be loaded into video memory.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the return value can be one of the following: <see cref=\"!:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA.</p></returns>\t\n            <remarks>\t\n            <p>This method generates textures containing glyphs that represent the input characters. The glyphs are drawn as a series of triangles.</p><p>Characters will not be rendered to the device; <see cref=\"M:SharpDX.Direct3D10.Font.DrawText(SharpDX.Direct3D10.Sprite,System.String,SharpDX.Rectangle,SharpDX.Direct3D10.FontDrawFlags,SharpDX.Color4)\"/> must still be called to render the characters. However, by pre-loading characters into video memory, <see cref=\"M:SharpDX.Direct3D10.Font.DrawText(SharpDX.Direct3D10.Sprite,System.String,SharpDX.Rectangle,SharpDX.Direct3D10.FontDrawFlags,SharpDX.Color4)\"/> will use substantially fewer CPU resources.</p><p>This method internally converts characters to glyphs using the GDI function GetCharacterPlacement.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10Font::PreloadCharacters']/*\"/>\t\n            <msdn-id>bb173894</msdn-id>\t\n            <unmanaged>HRESULT ID3DX10Font::PreloadCharacters([In] unsigned int First,[In] unsigned int Last)</unmanaged>\t\n            <unmanaged-short>ID3DX10Font::PreloadCharacters</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Font.PreloadGlyphs(System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Load a series of glyphs into video memory to improve the efficiency of rendering to the device.</p>\t\n            </summary>\t\n            <param name=\"first\"><dd>  <p>ID of the first glyph to be loaded into video memory.</p> </dd></param>\t\n            <param name=\"last\"><dd>  <p>ID of the last glyph to be loaded into video memory.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the return value can be one of the following: <see cref=\"!:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA.</p></returns>\t\n            <remarks>\t\n            <p>This method generates textures that contain the input glyphs. The glyphs are drawn as a series of triangles.</p><p>Glyphs will not be rendered to the device; <see cref=\"M:SharpDX.Direct3D10.Font.DrawText(SharpDX.Direct3D10.Sprite,System.String,SharpDX.Rectangle,SharpDX.Direct3D10.FontDrawFlags,SharpDX.Color4)\"/> must still be called to render the glyphs. However, by pre-loading glyphs into video memory, <see cref=\"M:SharpDX.Direct3D10.Font.DrawText(SharpDX.Direct3D10.Sprite,System.String,SharpDX.Rectangle,SharpDX.Direct3D10.FontDrawFlags,SharpDX.Color4)\"/> will use substantially fewer CPU resources.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10Font::PreloadGlyphs']/*\"/>\t\n            <msdn-id>bb173895</msdn-id>\t\n            <unmanaged>HRESULT ID3DX10Font::PreloadGlyphs([In] unsigned int First,[In] unsigned int Last)</unmanaged>\t\n            <unmanaged-short>ID3DX10Font::PreloadGlyphs</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Font.PreloadText(System.String,System.Int32)\">\n            <summary>\t\n            <p>Load formatted text into video memory to improve the efficiency of rendering to the device. This method supports ANSI and Unicode strings.</p>\t\n            </summary>\t\n            <param name=\"stringRef\"><dd>  <p>Pointer to a string of characters to be loaded into video memory. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR; otherwise, the data type resolves to LPCSTR. See Remarks.</p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>Number of characters in the text string.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the return value can be one of the following: <see cref=\"!:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA.</p></returns>\t\n            <remarks>\t\n            <p>The compiler setting also determines the function version. If Unicode is defined, the function call resolves to PreloadTextW. Otherwise, the function call resolves to PreloadTextA because ANSI strings are being used.</p><p>This method generates textures that contain glyphs that represent the input text. The glyphs are drawn as a series of triangles.</p><p>Text will not be rendered to the device; <see cref=\"M:SharpDX.Direct3D10.Font.DrawText(SharpDX.Direct3D10.Sprite,System.String,SharpDX.Rectangle,SharpDX.Direct3D10.FontDrawFlags,SharpDX.Color4)\"/> must still be called to render the text. However, by preloading text into video memory, <see cref=\"M:SharpDX.Direct3D10.Font.DrawText(SharpDX.Direct3D10.Sprite,System.String,SharpDX.Rectangle,SharpDX.Direct3D10.FontDrawFlags,SharpDX.Color4)\"/> will use substantially fewer CPU resources.</p><p>This method internally converts characters to glyphs using the GDI function GetCharacterPlacement.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10Font::PreloadTextW']/*\"/>\t\n            <msdn-id>bb173896</msdn-id>\t\n            <unmanaged>HRESULT ID3DX10Font::PreloadTextW([In] const wchar_t* pString,[In] int Count)</unmanaged>\t\n            <unmanaged-short>ID3DX10Font::PreloadTextW</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Font.DrawText(SharpDX.Direct3D10.Sprite,System.String,System.Int32,System.IntPtr,System.Int32,SharpDX.Color4)\">\n            <summary>\t\n            <p>Draw formatted text. This method supports ANSI and Unicode strings.</p>\t\n            </summary>\t\n            <param name=\"spriteRef\"><dd>  <p>Pointer to an <see cref=\"T:SharpDX.Direct3D10.Sprite\"/> object that contains the string you wish to draw. Can be <strong><c>null</c></strong>, in which case Direct3D will render the string with its own sprite object. To improve efficiency, a sprite object should be specified if <see cref=\"M:SharpDX.Direct3D10.Font.DrawText(SharpDX.Direct3D10.Sprite,System.String,SharpDX.Rectangle,SharpDX.Direct3D10.FontDrawFlags,SharpDX.Color4)\"/> is to be called more than once in a row.</p> </dd></param>\t\n            <param name=\"stringRef\"><dd>  <p>Pointer to a string to draw. If UNICODE is defined, this parameter type resolves to an LPCWSTR, otherwise, the type resolves to an LPCSTR. If the Count parameter is -1, the string must be <strong><c>null</c></strong> terminated.</p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>The number of characters in the string. If Count is -1, then the pString parameter is assumed to be a reference to a sprite containing a <c>null</c>-terminated string and <see cref=\"M:SharpDX.Direct3D10.Font.DrawText(SharpDX.Direct3D10.Sprite,System.String,SharpDX.Rectangle,SharpDX.Direct3D10.FontDrawFlags,SharpDX.Color4)\"/> computes the character count automatically.</p> </dd></param>\t\n            <param name=\"rectRef\"><dd>  <p>Pointer to a <see cref=\"T:SharpDX.Rectangle\"/> structure that contains the rectangle, in logical coordinates, in which the text is to be formatted. As with any <see cref=\"T:SharpDX.Rectangle\"/> object, the coordinate value of the rectangle's right side must be greater than that of its left side. Likewise, the coordinate value of the bottom must be greater than that of the top.</p> </dd></param>\t\n            <param name=\"format\"><dd>  <p>Specify the method of formatting the text. It can be any combination of the following values: </p> <p></p> <table> <tr><th>Item</th><th>Description</th></tr> <tr><td> <p>DT_BOTTOM</p> </td><td> <p>Justify the text to the bottom of the rectangle. This value must be combined with DT_SINGLELINE.</p> </td></tr> <tr><td> <p>DT_CALCRECT</p> </td><td> <p>Tell DrawText to automatically calculate the width and height of the rectangle based on the length of the string you tell it to draw. If there are multiple lines of text, <see cref=\"M:SharpDX.Direct3D10.Font.DrawText(SharpDX.Direct3D10.Sprite,System.String,SharpDX.Rectangle,SharpDX.Direct3D10.FontDrawFlags,SharpDX.Color4)\"/> uses the width of the rectangle pointed to by the pRect parameter and extends the base of the rectangle to bound the last line of text. If there is only one line of text, <see cref=\"M:SharpDX.Direct3D10.Font.DrawText(SharpDX.Direct3D10.Sprite,System.String,SharpDX.Rectangle,SharpDX.Direct3D10.FontDrawFlags,SharpDX.Color4)\"/> modifies the right side of the rectangle so that it bounds the last character in the line. In either case, <see cref=\"M:SharpDX.Direct3D10.Font.DrawText(SharpDX.Direct3D10.Sprite,System.String,SharpDX.Rectangle,SharpDX.Direct3D10.FontDrawFlags,SharpDX.Color4)\"/> returns the height of the formatted text but does not draw the text.</p> </td></tr> <tr><td> <p>DT_CENTER</p> </td><td> <p>Center text horizontally in the rectangle.</p> </td></tr> <tr><td> <p>DT_EXPANDTABS</p> </td><td> <p>Expand tab characters. The default number of characters per tab is eight.</p> </td></tr> <tr><td> <p>DT_LEFT</p> </td><td> <p>Align text to the left.</p> </td></tr> <tr><td> <p>DT_NOCLIP</p> </td><td> <p>Draw without clipping. <see cref=\"M:SharpDX.Direct3D10.Font.DrawText(SharpDX.Direct3D10.Sprite,System.String,SharpDX.Rectangle,SharpDX.Direct3D10.FontDrawFlags,SharpDX.Color4)\"/> is somewhat faster when DT_NOCLIP is used.</p> </td></tr> <tr><td> <p>DT_RIGHT</p> </td><td> <p>Align text to the right.</p> </td></tr> <tr><td> <p>DT_RTLREADING</p> </td><td> <p>Display text in right-to-left reading order for bidirectional text when a Hebrew or Arabic font is selected. The default reading order for all text is left-to-right.</p> </td></tr> <tr><td> <p>DT_SINGLELINE</p> </td><td> <p>Display text on a single line only. Carriage returns and line feeds do not break the line.</p> </td></tr> <tr><td> <p>DT_TOP</p> </td><td> <p>Top-justify text.</p> </td></tr> <tr><td> <p>DT_VCENTER</p> </td><td> <p>Center text vertically (single line only).</p> </td></tr> <tr><td> <p>DT_WORDBREAK</p> </td><td> <p>Break words. Lines are automatically broken between words if a word would extend past the edge of the rectangle specified by the pRect parameter. A carriage return/line feed sequence also breaks the line.</p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <param name=\"color\"><dd>  <p>Color of the text. See <strong><see cref=\"T:SharpDX.Color4\"/></strong>.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is the height of the text in logical units. If DT_VCENTER or DT_BOTTOM is specified, the return value is the offset from pRect (top to the bottom) of the drawn text. If the function fails, the return value is zero.</p></returns>\t\n            <remarks>\t\n            <p>The parameters of this method are very similar to those of the GDI DrawText function.</p><p>This method supports both ANSI and Unicode strings.</p><p>Unless the DT_NOCLIP format is used, this method clips the text so that it does not appear outside the specified rectangle. All formatting is assumed to have multiple lines unless the DT_SINGLELINE format is specified.</p><p>If the selected font is too large for the rectangle, this method does not attempt to substitute a smaller font.</p><p>This method supports only fonts whose escapement and orientation are both zero.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10Font::DrawTextW']/*\"/>\t\n            <msdn-id>bb173887</msdn-id>\t\n            <unmanaged>int ID3DX10Font::DrawTextW([In] ID3DX10Sprite* pSprite,[In] const wchar_t* pString,[In] int Count,[In] void* pRect,[In] unsigned int Format,[In] D3DXCOLOR Color)</unmanaged>\t\n            <unmanaged-short>ID3DX10Font::DrawTextW</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.Font.Device\">\n            <summary>\t\n            <p>Retrieve the Direct3D device associated with the font object.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p><strong>Note</strong>??Calling this method will increase the internal reference count on the <see cref=\"T:SharpDX.Direct3D10.Device\"/> interface. Be sure to call <see cref=\"T:SharpDX.ComObject\"/> when you are done using this <see cref=\"T:SharpDX.Direct3D10.Device\"/> interface or you will have a memory leak.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10Font::GetDevice']/*\"/>\t\n            <msdn-id>bb173891</msdn-id>\t\n            <unmanaged>GetDevice</unmanaged>\t\n            <unmanaged-short>GetDevice</unmanaged-short>\t\n            <unmanaged>HRESULT ID3DX10Font::GetDevice([Out] ID3D10Device** ppDevice)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.Font.Description\">\n            <summary>\t\n            <p>Get a description of the current font object.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This method describes Unicode font objects if UNICODE is defined. Otherwise GetDescA is called, which returns a reference to the D3DX10FONT_DESCA structure.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10Font::GetDescW']/*\"/>\t\n            <msdn-id>bb173890</msdn-id>\t\n            <unmanaged>GetDescW</unmanaged>\t\n            <unmanaged-short>GetDescW</unmanaged-short>\t\n            <unmanaged>HRESULT ID3DX10Font::GetDescW([Out] D3DX10_FONT_DESCW* pDesc)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.Font.DeviceContext\">\n            <summary>\t\n            <p>Return a handle to a display device context (DC) that has the font set onto it.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10Font::GetDC']/*\"/>\t\n            <msdn-id>bb173889</msdn-id>\t\n            <unmanaged>GetDC</unmanaged>\t\n            <unmanaged-short>GetDC</unmanaged-short>\t\n            <unmanaged>HDC ID3DX10Font::GetDC()</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.FontCharacterSet\">\n            <summary>\n            Defines possible character sets for fonts.\n            </summary>\n            <unmanaged>CHARSET</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FontCharacterSet.Ansi\">\n            <summary>\n            The ANSI character set.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FontCharacterSet.Arabic\">\n            <summary>\n            The Arabic character set.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FontCharacterSet.Baltic\">\n            <summary>\n            The Baltic character set.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FontCharacterSet.ChineseBig5\">\n            <summary>\n            The Chinese character set.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FontCharacterSet.Default\">\n            <summary>\n            The default system character set.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FontCharacterSet.EastEurope\">\n            <summary>\n            The East Europe character set.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FontCharacterSet.GB2312\">\n            <summary>\n            The GB2312 character set.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FontCharacterSet.Greek\">\n            <summary>\n            The Greek character set.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FontCharacterSet.Hangul\">\n            <summary>\n            The Hangul character set.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FontCharacterSet.Hebrew\">\n            <summary>\n            The Hebrew character set.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FontCharacterSet.Johab\">\n            <summary>\n            The Johab character set.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FontCharacterSet.Mac\">\n            <summary>\n            The Mac character set.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FontCharacterSet.Oem\">\n            <summary>\n            The OEM character set.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FontCharacterSet.Russian\">\n            <summary>\n            The Russian character set.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FontCharacterSet.ShiftJIS\">\n            <summary>\n            The ShiftJIS character set.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FontCharacterSet.Symbol\">\n            <summary>\n            The symbol character set.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FontCharacterSet.Thai\">\n            <summary>\n            The Thai character set.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FontCharacterSet.Turkish\">\n            <summary>\n            The Turkish character set.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FontCharacterSet.Vietnamese\">\n            <summary>\n            The Vietnamese character set.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.FontDrawFlags\">\n            <summary>\n            Specifies formatting options for text rendering.\n            </summary>\n            <unmanaged>DT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FontDrawFlags.Bottom\">\n            <summary>\n            Align the text to the bottom.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FontDrawFlags.Center\">\n            <summary>\n            Align the text to the center.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FontDrawFlags.ExpandTabs\">\n            <summary>\n            Expand tab characters.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FontDrawFlags.Left\">\n            <summary>\n            Align the text to the left.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FontDrawFlags.NoClip\">\n            <summary>\n            Don't clip the text.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FontDrawFlags.Right\">\n            <summary>\n            Align the text to the right.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FontDrawFlags.RtlReading\">\n            <summary>\n            Rendering the text in right-to-left reading order.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FontDrawFlags.SingleLine\">\n            <summary>\n            Force all text to a single line.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FontDrawFlags.Top\">\n            <summary>\n            Align the text to the top.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FontDrawFlags.VerticalCenter\">\n            <summary>\n            Vertically align the text to the center.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FontDrawFlags.WordBreak\">\n            <summary>\n            Allow word breaks.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.FontPitchAndFamily\">\n            <summary>\n            Defines pitch and family settings for fonts.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FontPitchAndFamily.Decorative\">\n            <summary>\n            Use the Decorative family.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FontPitchAndFamily.Default\">\n            <summary>\n            Default pitch.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FontPitchAndFamily.DontCare\">\n            <summary>\n            The font family doesn't matter.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FontPitchAndFamily.Fixed\">\n            <summary>\n            Fixed pitch.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FontPitchAndFamily.Modern\">\n            <summary>\n            Use the Modern family.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FontPitchAndFamily.Mono\">\n            <summary>\n            Mono pitch.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FontPitchAndFamily.Roman\">\n            <summary>\n            Use the Roman family.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FontPitchAndFamily.Script\">\n            <summary>\n            Use the Script family.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FontPitchAndFamily.Swiss\">\n            <summary>\n            Use the Swiss family.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FontPitchAndFamily.Variable\">\n            <summary>\n            Variable pitch.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.FontPrecision\">\n            <summary>\n            Defines precision levels for font rendering.\n            </summary>\n            <unmanaged>OutPrecision</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FontPrecision.Default\">\n            <summary>\n            Default\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FontPrecision.String\">\n            <summary>\n            String\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FontPrecision.Character\">\n            <summary>\n            Character\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FontPrecision.Stroke\">\n            <summary>\n            Stroke\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FontPrecision.TrueType\">\n            <summary>\n            TrueType\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FontPrecision.Device\">\n            <summary>\n            Device\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FontPrecision.Raster\">\n            <summary>\n            Raster\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FontPrecision.TrueTypeOnly\">\n            <summary>\n            TrueTypeOnly\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FontPrecision.Outline\">\n            <summary>\n            Outline\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FontPrecision.ScreenOutline\">\n            <summary>\n            ScreenOutline\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FontPrecision.PostScriptOnly\">\n            <summary>\n            PostScriptOnly\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.FontQuality\">\n            <summary>\n            Specifies quality options for font rendering.\n            </summary>\n            <unmanaged>QUALITY</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FontQuality.Default\">\n            <summary>\n            Default\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FontQuality.Draft\">\n            <summary>\n            Draft\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FontQuality.Proof\">\n            <summary>\n            Proof\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FontQuality.NonAntialiased\">\n            <summary>\n            Non antialiased\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FontQuality.Antialiased\">\n            <summary>\n            Antialiased\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FontQuality.ClearType\">\n            <summary>\n            ClearType\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FontQuality.ClearTypeNatural\">\n            <summary>\n            ClearTypeNatural\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.FontWeight\">\n            <summary>\n            Specifies weights for font rendering.\n            </summary>\n            <unmanaged>FW</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FontWeight.Black\">\n            <summary>\n            Use a black weight.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FontWeight.Bold\">\n            <summary>\n            Use a bold weight.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FontWeight.DemiBold\">\n            <summary>\n            Use a demi-bold weight.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FontWeight.DoNotCare\">\n            <summary>\n            The font weight doesn't matter.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FontWeight.ExtraBold\">\n            <summary>\n            Use an extra bold weight.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FontWeight.ExtraLight\">\n            <summary>\n            Make the font extra light.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FontWeight.Heavy\">\n            <summary>\n            Use a heavy weight.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FontWeight.Light\">\n            <summary>\n            Make the font light.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FontWeight.Medium\">\n            <summary>\n            Use a medium weight.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FontWeight.Normal\">\n            <summary>\n            Use a normal weight.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FontWeight.Regular\">\n            <summary>\n            Use a regular weight.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FontWeight.SemiBold\">\n            <summary>\n            Use a semi-bold weight.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FontWeight.Thin\">\n            <summary>\n            Make the font thin.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FontWeight.UltraBold\">\n            <summary>\n            Use an ultra bold weight.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FontWeight.UltraLight\">\n            <summary>\n            Make the font ultra light.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.AsynchronousFlags\">\n            <summary>\t\nFlags that defines the behavior of method <see cref=\"M:SharpDX.Direct3D10.Asynchronous.GetData\"/>.\t\n</summary>\t\n            <msdn-id>bb204887</msdn-id>\t\n            <unmanaged>D3D10_ASYNC_GETDATA_FLAG</unmanaged>\t\n            <unmanaged-short>D3D10_ASYNC_GETDATA_FLAG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.AsynchronousFlags.DoNotFlush\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_ASYNC_GETDATA_DONOTFLUSH']/*\"/>\t\n            <unmanaged>D3D10_ASYNC_GETDATA_DONOTFLUSH</unmanaged>\t\n            <unmanaged-short>D3D10_ASYNC_GETDATA_DONOTFLUSH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.AsynchronousFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.BindFlags\">\n            <summary>\t\n            <p>Identifies how to bind a resource to the pipeline.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>In general, binding flags can be combined using a logical OR (except the constant-buffer flag); however, you should use a single flag to allow the device to optimize the resource usage.</p><p>This enumeration is used by a:</p><ul> <li> <strong>Buffer description</strong> when creating a buffer.</li> <li>Texture description when creating a texture (see <strong><see cref=\"T:SharpDX.Direct3D10.Texture1DDescription\"/></strong> or <strong><see cref=\"T:SharpDX.Direct3D10.Texture2DDescription\"/></strong> or <strong><see cref=\"T:SharpDX.Direct3D10.Texture3DDescription\"/></strong>).</li> </ul><p>A shader-resource buffer is NOT a constant buffer; rather, it is a texture or buffer resource that is bound to a shader, that contains texture or buffer data (it is not limited to a single element type in the buffer). A shader-resource buffer is created with the <see cref=\"F:SharpDX.Direct3D10.BindFlags.ShaderResource\"/> flag and is bound to the pipeline using one of these APIs: <strong><see cref=\"M:SharpDX.Direct3D10.GeometryShaderStage.SetShaderResources(System.Int32,System.Int32,SharpDX.Direct3D10.ShaderResourceView[])\"/></strong>, <strong><see cref=\"M:SharpDX.Direct3D10.PixelShaderStage.SetShaderResources(System.Int32,System.Int32,SharpDX.Direct3D10.ShaderResourceView[])\"/></strong>, or <strong><see cref=\"M:SharpDX.Direct3D10.VertexShaderStage.SetShaderResources(System.Int32,System.Int32,SharpDX.Direct3D10.ShaderResourceView[])\"/></strong>. Furthermore, a shader-resource buffer cannot use the <strong><see cref=\"F:SharpDX.Direct3D10.MapMode.WriteNoOverwrite\"/></strong> flag.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_BIND_FLAG']/*\"/>\t\n            <msdn-id>bb204891</msdn-id>\t\n            <unmanaged>D3D10_BIND_FLAG</unmanaged>\t\n            <unmanaged-short>D3D10_BIND_FLAG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.BindFlags.VertexBuffer\">\n            <summary>\t\n            <dd> <p>Bind a buffer as a vertex buffer to the input-assembler stage.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_BIND_VERTEX_BUFFER']/*\"/>\t\n            <msdn-id>bb204891</msdn-id>\t\n            <unmanaged>D3D10_BIND_VERTEX_BUFFER</unmanaged>\t\n            <unmanaged-short>D3D10_BIND_VERTEX_BUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.BindFlags.IndexBuffer\">\n            <summary>\t\n            <dd> <p>Bind a buffer as an index buffer to the input-assembler stage.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_BIND_INDEX_BUFFER']/*\"/>\t\n            <msdn-id>bb204891</msdn-id>\t\n            <unmanaged>D3D10_BIND_INDEX_BUFFER</unmanaged>\t\n            <unmanaged-short>D3D10_BIND_INDEX_BUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.BindFlags.ConstantBuffer\">\n            <summary>\t\n            <dd> <p>Bind a buffer as a constant buffer to a shader stage; this flag may NOT be combined with any other bind flag.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_BIND_CONSTANT_BUFFER']/*\"/>\t\n            <msdn-id>bb204891</msdn-id>\t\n            <unmanaged>D3D10_BIND_CONSTANT_BUFFER</unmanaged>\t\n            <unmanaged-short>D3D10_BIND_CONSTANT_BUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.BindFlags.ShaderResource\">\n            <summary>\t\n            <dd> <p>Bind a buffer or texture to a shader stage; this flag cannot be used with the <strong><see cref=\"F:SharpDX.Direct3D10.MapMode.WriteNoOverwrite\"/></strong> flag.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_BIND_SHADER_RESOURCE']/*\"/>\t\n            <msdn-id>bb204891</msdn-id>\t\n            <unmanaged>D3D10_BIND_SHADER_RESOURCE</unmanaged>\t\n            <unmanaged-short>D3D10_BIND_SHADER_RESOURCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.BindFlags.StreamOutput\">\n            <summary>\t\n            <dd> <p>Bind an output buffer for the stream-output stage.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_BIND_STREAM_OUTPUT']/*\"/>\t\n            <msdn-id>bb204891</msdn-id>\t\n            <unmanaged>D3D10_BIND_STREAM_OUTPUT</unmanaged>\t\n            <unmanaged-short>D3D10_BIND_STREAM_OUTPUT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.BindFlags.RenderTarget\">\n            <summary>\t\n            <dd> <p>Bind a texture as a render target for the output-merger stage.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_BIND_RENDER_TARGET']/*\"/>\t\n            <msdn-id>bb204891</msdn-id>\t\n            <unmanaged>D3D10_BIND_RENDER_TARGET</unmanaged>\t\n            <unmanaged-short>D3D10_BIND_RENDER_TARGET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.BindFlags.DepthStencil\">\n            <summary>\t\n            <dd> <p>Bind a texture as a depth-stencil target for the output-merger stage.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_BIND_DEPTH_STENCIL']/*\"/>\t\n            <msdn-id>bb204891</msdn-id>\t\n            <unmanaged>D3D10_BIND_DEPTH_STENCIL</unmanaged>\t\n            <unmanaged-short>D3D10_BIND_DEPTH_STENCIL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.BindFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.BlendOperation\">\n            <summary>\t\n            <p>RGB or alpha blending operation.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The runtime implements RGB blending and alpha blending separately. Therefore, blend state requires separate blend operations for RGB data and alpha data. These blend operations are specified in a <strong>blend description</strong>. The two sources ? Source 1, called SrcBlend and SrcBlendAlpha, and Source 2, called DestBlend and DestBlendAlpha ? are shown in the blending block diagram.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_BLEND_OP']/*\"/>\t\n            <msdn-id>bb204894</msdn-id>\t\n            <unmanaged>D3D10_BLEND_OP</unmanaged>\t\n            <unmanaged-short>D3D10_BLEND_OP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.BlendOperation.Add\">\n            <summary>\t\n            <dd> <p>Add source 1 and source 2.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_BLEND_OP_ADD']/*\"/>\t\n            <msdn-id>bb204894</msdn-id>\t\n            <unmanaged>D3D10_BLEND_OP_ADD</unmanaged>\t\n            <unmanaged-short>D3D10_BLEND_OP_ADD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.BlendOperation.Subtract\">\n            <summary>\t\n            <dd> <p>Subtract source 1 from source 2.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_BLEND_OP_SUBTRACT']/*\"/>\t\n            <msdn-id>bb204894</msdn-id>\t\n            <unmanaged>D3D10_BLEND_OP_SUBTRACT</unmanaged>\t\n            <unmanaged-short>D3D10_BLEND_OP_SUBTRACT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.BlendOperation.ReverseSubtract\">\n            <summary>\t\n            <dd> <p>Subtract source 2 from source 1.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_BLEND_OP_REV_SUBTRACT']/*\"/>\t\n            <msdn-id>bb204894</msdn-id>\t\n            <unmanaged>D3D10_BLEND_OP_REV_SUBTRACT</unmanaged>\t\n            <unmanaged-short>D3D10_BLEND_OP_REV_SUBTRACT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.BlendOperation.Minimum\">\n            <summary>\t\n            <dd> <p>Find the minimum of source 1 and source 2.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_BLEND_OP_MIN']/*\"/>\t\n            <msdn-id>bb204894</msdn-id>\t\n            <unmanaged>D3D10_BLEND_OP_MIN</unmanaged>\t\n            <unmanaged-short>D3D10_BLEND_OP_MIN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.BlendOperation.Maximum\">\n            <summary>\t\n            <dd> <p>Find the maximum of source 1 and source 2.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_BLEND_OP_MAX']/*\"/>\t\n            <msdn-id>bb204894</msdn-id>\t\n            <unmanaged>D3D10_BLEND_OP_MAX</unmanaged>\t\n            <unmanaged-short>D3D10_BLEND_OP_MAX</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.BlendOption\">\n            <summary>\t\n            <p>Blend options. A blend option identifies the data source and an optional pre-blend operation.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Blend operations are specified in a <strong>blend description</strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_BLEND']/*\"/>\t\n            <msdn-id>bb204892</msdn-id>\t\n            <unmanaged>D3D10_BLEND</unmanaged>\t\n            <unmanaged-short>D3D10_BLEND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.BlendOption.Zero\">\n            <summary>\t\n            <dd> <p>The data source is the color black (0, 0, 0, 0). No pre-blend operation.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_BLEND_ZERO']/*\"/>\t\n            <msdn-id>bb204892</msdn-id>\t\n            <unmanaged>D3D10_BLEND_ZERO</unmanaged>\t\n            <unmanaged-short>D3D10_BLEND_ZERO</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.BlendOption.One\">\n            <summary>\t\n            <dd> <p>The data source is the color white (1, 1, 1, 1). No pre-blend operation.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_BLEND_ONE']/*\"/>\t\n            <msdn-id>bb204892</msdn-id>\t\n            <unmanaged>D3D10_BLEND_ONE</unmanaged>\t\n            <unmanaged-short>D3D10_BLEND_ONE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.BlendOption.SourceColor\">\n            <summary>\t\n            <dd> <p>The data source is color data (RGB) from a pixel shader. No pre-blend operation.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_BLEND_SRC_COLOR']/*\"/>\t\n            <msdn-id>bb204892</msdn-id>\t\n            <unmanaged>D3D10_BLEND_SRC_COLOR</unmanaged>\t\n            <unmanaged-short>D3D10_BLEND_SRC_COLOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.BlendOption.InverseSourceColor\">\n            <summary>\t\n            <dd> <p>The data source is color data (RGB) from a pixel shader. The pre-blend operation inverts the data, generating 1 - RGB.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_BLEND_INV_SRC_COLOR']/*\"/>\t\n            <msdn-id>bb204892</msdn-id>\t\n            <unmanaged>D3D10_BLEND_INV_SRC_COLOR</unmanaged>\t\n            <unmanaged-short>D3D10_BLEND_INV_SRC_COLOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.BlendOption.SourceAlpha\">\n            <summary>\t\n            <dd> <p>The data source is alpha data (A) from a pixel shader. No pre-blend operation.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_BLEND_SRC_ALPHA']/*\"/>\t\n            <msdn-id>bb204892</msdn-id>\t\n            <unmanaged>D3D10_BLEND_SRC_ALPHA</unmanaged>\t\n            <unmanaged-short>D3D10_BLEND_SRC_ALPHA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.BlendOption.InverseSourceAlpha\">\n            <summary>\t\n            <dd> <p>The data source is alpha data (A) from a pixel shader. The pre-blend operation inverts the data, generating 1 - A.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_BLEND_INV_SRC_ALPHA']/*\"/>\t\n            <msdn-id>bb204892</msdn-id>\t\n            <unmanaged>D3D10_BLEND_INV_SRC_ALPHA</unmanaged>\t\n            <unmanaged-short>D3D10_BLEND_INV_SRC_ALPHA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.BlendOption.DestinationAlpha\">\n            <summary>\t\n            <dd> <p>The data source is alpha data from a rendertarget. No pre-blend operation.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_BLEND_DEST_ALPHA']/*\"/>\t\n            <msdn-id>bb204892</msdn-id>\t\n            <unmanaged>D3D10_BLEND_DEST_ALPHA</unmanaged>\t\n            <unmanaged-short>D3D10_BLEND_DEST_ALPHA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.BlendOption.InverseDestinationAlpha\">\n            <summary>\t\n            <dd> <p>The data source is alpha data from a rendertarget. The pre-blend operation inverts the data, generating 1 - A.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_BLEND_INV_DEST_ALPHA']/*\"/>\t\n            <msdn-id>bb204892</msdn-id>\t\n            <unmanaged>D3D10_BLEND_INV_DEST_ALPHA</unmanaged>\t\n            <unmanaged-short>D3D10_BLEND_INV_DEST_ALPHA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.BlendOption.DestinationColor\">\n            <summary>\t\n            <dd> <p>The data source is color data from a rendertarget. No pre-blend operation.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_BLEND_DEST_COLOR']/*\"/>\t\n            <msdn-id>bb204892</msdn-id>\t\n            <unmanaged>D3D10_BLEND_DEST_COLOR</unmanaged>\t\n            <unmanaged-short>D3D10_BLEND_DEST_COLOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.BlendOption.InverseDestinationColor\">\n            <summary>\t\n            <dd> <p>The data source is color data from a rendertarget. The pre-blend operation inverts the data, generating 1 - RGB.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_BLEND_INV_DEST_COLOR']/*\"/>\t\n            <msdn-id>bb204892</msdn-id>\t\n            <unmanaged>D3D10_BLEND_INV_DEST_COLOR</unmanaged>\t\n            <unmanaged-short>D3D10_BLEND_INV_DEST_COLOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.BlendOption.SourceAlphaSaturate\">\n            <summary>\t\n            <dd> <p>The data source is alpha data from a pixel shader. The pre-blend operation clamps the data to 1 or less. \t\n            </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_BLEND_SRC_ALPHA_SAT']/*\"/>\t\n            <msdn-id>bb204892</msdn-id>\t\n            <unmanaged>D3D10_BLEND_SRC_ALPHA_SAT</unmanaged>\t\n            <unmanaged-short>D3D10_BLEND_SRC_ALPHA_SAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.BlendOption.BlendFactor\">\n            <summary>\t\n            <dd> <p>The data source is the blend factor set with <strong><see cref=\"M:SharpDX.Direct3D10.OutputMergerStage.SetBlendState(SharpDX.Direct3D10.BlendState,SharpDX.Color4,System.Int32)\"/></strong>. No pre-blend operation.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_BLEND_BLEND_FACTOR']/*\"/>\t\n            <msdn-id>bb204892</msdn-id>\t\n            <unmanaged>D3D10_BLEND_BLEND_FACTOR</unmanaged>\t\n            <unmanaged-short>D3D10_BLEND_BLEND_FACTOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.BlendOption.InverseBlendFactor\">\n            <summary>\t\n            <dd> <p>The data source is the blend factor set with <strong><see cref=\"M:SharpDX.Direct3D10.OutputMergerStage.SetBlendState(SharpDX.Direct3D10.BlendState,SharpDX.Color4,System.Int32)\"/></strong>. The pre-blend operation inverts the blend factor, generating 1 - blend_factor.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_BLEND_INV_BLEND_FACTOR']/*\"/>\t\n            <msdn-id>bb204892</msdn-id>\t\n            <unmanaged>D3D10_BLEND_INV_BLEND_FACTOR</unmanaged>\t\n            <unmanaged-short>D3D10_BLEND_INV_BLEND_FACTOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.BlendOption.SecondarySourceColor\">\n            <summary>\t\n            <dd> <p>The data sources are both color data output by a pixel shader. There is no pre-blend operation. This options supports dual-source color blending.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_BLEND_SRC1_COLOR']/*\"/>\t\n            <msdn-id>bb204892</msdn-id>\t\n            <unmanaged>D3D10_BLEND_SRC1_COLOR</unmanaged>\t\n            <unmanaged-short>D3D10_BLEND_SRC1_COLOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.BlendOption.InverseSecondarySourceColor\">\n            <summary>\t\n            <dd> <p>The data sources are both color data output by a pixel shader. The pre-blend operation inverts the data, generating 1 - RGB. This options supports dual-source color blending.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_BLEND_INV_SRC1_COLOR']/*\"/>\t\n            <msdn-id>bb204892</msdn-id>\t\n            <unmanaged>D3D10_BLEND_INV_SRC1_COLOR</unmanaged>\t\n            <unmanaged-short>D3D10_BLEND_INV_SRC1_COLOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.BlendOption.SecondarySourceAlpha\">\n            <summary>\t\n            <dd> <p>The data sources are alpha data output by a pixel shader. There is no pre-blend operation. This options supports dual-source color blending.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_BLEND_SRC1_ALPHA']/*\"/>\t\n            <msdn-id>bb204892</msdn-id>\t\n            <unmanaged>D3D10_BLEND_SRC1_ALPHA</unmanaged>\t\n            <unmanaged-short>D3D10_BLEND_SRC1_ALPHA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.BlendOption.InverseSecondarySourceAlpha\">\n            <summary>\t\n            <dd> <p>The data sources are alpha data output by a pixel shader. The pre-blend operation inverts the data, generating 1 - A. This options supports dual-source color blending.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_BLEND_INV_SRC1_ALPHA']/*\"/>\t\n            <msdn-id>bb204892</msdn-id>\t\n            <unmanaged>D3D10_BLEND_INV_SRC1_ALPHA</unmanaged>\t\n            <unmanaged-short>D3D10_BLEND_INV_SRC1_ALPHA</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.ColorWriteMaskFlags\">\n            <summary>\t\n            <p>Identify which components of each pixel of a render target are writable during blending.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>These flags can be combined with a bitwise OR.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_COLOR_WRITE_ENABLE']/*\"/>\t\n            <msdn-id>bb204901</msdn-id>\t\n            <unmanaged>D3D10_COLOR_WRITE_ENABLE</unmanaged>\t\n            <unmanaged-short>D3D10_COLOR_WRITE_ENABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ColorWriteMaskFlags.Red\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_COLOR_WRITE_ENABLE_RED']/*\"/>\t\n            <unmanaged>D3D10_COLOR_WRITE_ENABLE_RED</unmanaged>\t\n            <unmanaged-short>D3D10_COLOR_WRITE_ENABLE_RED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ColorWriteMaskFlags.Green\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_COLOR_WRITE_ENABLE_GREEN']/*\"/>\t\n            <unmanaged>D3D10_COLOR_WRITE_ENABLE_GREEN</unmanaged>\t\n            <unmanaged-short>D3D10_COLOR_WRITE_ENABLE_GREEN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ColorWriteMaskFlags.Blue\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_COLOR_WRITE_ENABLE_BLUE']/*\"/>\t\n            <unmanaged>D3D10_COLOR_WRITE_ENABLE_BLUE</unmanaged>\t\n            <unmanaged-short>D3D10_COLOR_WRITE_ENABLE_BLUE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ColorWriteMaskFlags.Alpha\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_COLOR_WRITE_ENABLE_ALPHA']/*\"/>\t\n            <unmanaged>D3D10_COLOR_WRITE_ENABLE_ALPHA</unmanaged>\t\n            <unmanaged-short>D3D10_COLOR_WRITE_ENABLE_ALPHA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ColorWriteMaskFlags.All\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_COLOR_WRITE_ENABLE_ALL']/*\"/>\t\n            <unmanaged>D3D10_COLOR_WRITE_ENABLE_ALL</unmanaged>\t\n            <unmanaged-short>D3D10_COLOR_WRITE_ENABLE_ALL</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.Comparison\">\n            <summary>\t\n            <p>Comparison options.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>A comparison option determines whether how the runtime compares source (new) data against destination (existing) data before storing the new data. The comparison option is declared in a description before an object is created. The API allows you to set a comparison option for a depth-stencil buffer (see <strong><see cref=\"T:SharpDX.Direct3D10.DepthStencilStateDescription\"/></strong>), depth-stencil operations (see <strong><see cref=\"T:SharpDX.Direct3D10.DepthStencilOperationDescription\"/></strong>), or sampler state (see <strong><see cref=\"T:SharpDX.Direct3D10.SamplerStateDescription\"/></strong>).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_COMPARISON_FUNC']/*\"/>\t\n            <msdn-id>bb204902</msdn-id>\t\n            <unmanaged>D3D10_COMPARISON_FUNC</unmanaged>\t\n            <unmanaged-short>D3D10_COMPARISON_FUNC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.Comparison.Never\">\n            <summary>\t\n            <dd> <p>Never pass the comparison.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_COMPARISON_NEVER']/*\"/>\t\n            <msdn-id>bb204902</msdn-id>\t\n            <unmanaged>D3D10_COMPARISON_NEVER</unmanaged>\t\n            <unmanaged-short>D3D10_COMPARISON_NEVER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.Comparison.Less\">\n            <summary>\t\n            <dd> <p>If the source data is less than the destination data, the comparison passes.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_COMPARISON_LESS']/*\"/>\t\n            <msdn-id>bb204902</msdn-id>\t\n            <unmanaged>D3D10_COMPARISON_LESS</unmanaged>\t\n            <unmanaged-short>D3D10_COMPARISON_LESS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.Comparison.Equal\">\n            <summary>\t\n            <dd> <p>If the source data is equal to the destination data, the comparison passes.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_COMPARISON_EQUAL']/*\"/>\t\n            <msdn-id>bb204902</msdn-id>\t\n            <unmanaged>D3D10_COMPARISON_EQUAL</unmanaged>\t\n            <unmanaged-short>D3D10_COMPARISON_EQUAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.Comparison.LessEqual\">\n            <summary>\t\n            <dd> <p>If the source data is less than or equal to the destination data, the comparison passes.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_COMPARISON_LESS_EQUAL']/*\"/>\t\n            <msdn-id>bb204902</msdn-id>\t\n            <unmanaged>D3D10_COMPARISON_LESS_EQUAL</unmanaged>\t\n            <unmanaged-short>D3D10_COMPARISON_LESS_EQUAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.Comparison.Greater\">\n            <summary>\t\n            <dd> <p>If the source data is greater than the destination data, the comparison passes.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_COMPARISON_GREATER']/*\"/>\t\n            <msdn-id>bb204902</msdn-id>\t\n            <unmanaged>D3D10_COMPARISON_GREATER</unmanaged>\t\n            <unmanaged-short>D3D10_COMPARISON_GREATER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.Comparison.NotEqual\">\n            <summary>\t\n            <dd> <p>If the source data is not equal to the destination data, the comparison passes.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_COMPARISON_NOT_EQUAL']/*\"/>\t\n            <msdn-id>bb204902</msdn-id>\t\n            <unmanaged>D3D10_COMPARISON_NOT_EQUAL</unmanaged>\t\n            <unmanaged-short>D3D10_COMPARISON_NOT_EQUAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.Comparison.GreaterEqual\">\n            <summary>\t\n            <dd> <p>If the source data is greater than or equal to the destination data, the comparison passes.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_COMPARISON_GREATER_EQUAL']/*\"/>\t\n            <msdn-id>bb204902</msdn-id>\t\n            <unmanaged>D3D10_COMPARISON_GREATER_EQUAL</unmanaged>\t\n            <unmanaged-short>D3D10_COMPARISON_GREATER_EQUAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.Comparison.Always\">\n            <summary>\t\n            <dd> <p>Always pass the comparison.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_COMPARISON_ALWAYS']/*\"/>\t\n            <msdn-id>bb204902</msdn-id>\t\n            <unmanaged>D3D10_COMPARISON_ALWAYS</unmanaged>\t\n            <unmanaged-short>D3D10_COMPARISON_ALWAYS</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.CounterKind\">\n            <summary>\t\n            <p>Performance counter types.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>In addition to these performance counters, independent hardware vendors may define their own set of performance counters for their devices. The enum values for these counters would start after <see cref=\"F:SharpDX.Direct3D10.CounterKind.DeviceDependent0\"/> and would be defined by those hardware vendors.</p><p>A device can support one or more of these performance counters, but it is not required to support any of them.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_COUNTER']/*\"/>\t\n            <msdn-id>bb204904</msdn-id>\t\n            <unmanaged>D3D10_COUNTER</unmanaged>\t\n            <unmanaged-short>D3D10_COUNTER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.CounterKind.GpuIdle\">\n            <summary>\t\n            <dd> <p>Percentage of the time that the GPU is idle.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_COUNTER_GPU_IDLE']/*\"/>\t\n            <msdn-id>bb204904</msdn-id>\t\n            <unmanaged>D3D10_COUNTER_GPU_IDLE</unmanaged>\t\n            <unmanaged-short>D3D10_COUNTER_GPU_IDLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.CounterKind.VertexProcessing\">\n            <summary>\t\n            <dd> <p>Percentage of the time that the GPU does vertex processing.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_COUNTER_VERTEX_PROCESSING']/*\"/>\t\n            <msdn-id>bb204904</msdn-id>\t\n            <unmanaged>D3D10_COUNTER_VERTEX_PROCESSING</unmanaged>\t\n            <unmanaged-short>D3D10_COUNTER_VERTEX_PROCESSING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.CounterKind.GeometryProcessing\">\n            <summary>\t\n            <dd> <p>Percentage of the time that the GPU does geometry processing.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_COUNTER_GEOMETRY_PROCESSING']/*\"/>\t\n            <msdn-id>bb204904</msdn-id>\t\n            <unmanaged>D3D10_COUNTER_GEOMETRY_PROCESSING</unmanaged>\t\n            <unmanaged-short>D3D10_COUNTER_GEOMETRY_PROCESSING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.CounterKind.PixelProcessing\">\n            <summary>\t\n            <dd> <p>Percentage of the time that the GPU does pixel processing.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_COUNTER_PIXEL_PROCESSING']/*\"/>\t\n            <msdn-id>bb204904</msdn-id>\t\n            <unmanaged>D3D10_COUNTER_PIXEL_PROCESSING</unmanaged>\t\n            <unmanaged-short>D3D10_COUNTER_PIXEL_PROCESSING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.CounterKind.OtherGpuProcessing\">\n            <summary>\t\n            <dd> <p>Percentage of the time that the GPU does other processing (not vertex, geometry, or pixel processing).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_COUNTER_OTHER_GPU_PROCESSING']/*\"/>\t\n            <msdn-id>bb204904</msdn-id>\t\n            <unmanaged>D3D10_COUNTER_OTHER_GPU_PROCESSING</unmanaged>\t\n            <unmanaged-short>D3D10_COUNTER_OTHER_GPU_PROCESSING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.CounterKind.HostAdapterBandwidthUtilization\">\n            <summary>\t\n            <dd> <p>Percentage of bandwidth used on a host adapter. Value returned by <strong><see cref=\"M:SharpDX.Direct3D10.Asynchronous.GetData\"/></strong> between 0.0 and 1.0 when using this counter.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_COUNTER_HOST_ADAPTER_BANDWIDTH_UTILIZATION']/*\"/>\t\n            <msdn-id>bb204904</msdn-id>\t\n            <unmanaged>D3D10_COUNTER_HOST_ADAPTER_BANDWIDTH_UTILIZATION</unmanaged>\t\n            <unmanaged-short>D3D10_COUNTER_HOST_ADAPTER_BANDWIDTH_UTILIZATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.CounterKind.LocalVidmemBandwidthUtilization\">\n            <summary>\t\n            <dd> <p>Percentage of bandwidth used by the local video memory. Value returned by <strong><see cref=\"M:SharpDX.Direct3D10.Asynchronous.GetData\"/></strong> between 0.0 and 1.0 when using this counter</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_COUNTER_LOCAL_VIDMEM_BANDWIDTH_UTILIZATION']/*\"/>\t\n            <msdn-id>bb204904</msdn-id>\t\n            <unmanaged>D3D10_COUNTER_LOCAL_VIDMEM_BANDWIDTH_UTILIZATION</unmanaged>\t\n            <unmanaged-short>D3D10_COUNTER_LOCAL_VIDMEM_BANDWIDTH_UTILIZATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.CounterKind.VertexThroughputUtilization\">\n            <summary>\t\n            <dd> <p>Percentage of throughput used for vertices. Value returned by <strong><see cref=\"M:SharpDX.Direct3D10.Asynchronous.GetData\"/></strong> between 0.0 and 1.0 when using this counter</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_COUNTER_VERTEX_THROUGHPUT_UTILIZATION']/*\"/>\t\n            <msdn-id>bb204904</msdn-id>\t\n            <unmanaged>D3D10_COUNTER_VERTEX_THROUGHPUT_UTILIZATION</unmanaged>\t\n            <unmanaged-short>D3D10_COUNTER_VERTEX_THROUGHPUT_UTILIZATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.CounterKind.TriangleSetupThroughputUtilization\">\n            <summary>\t\n            <dd> <p>Percentage of throughput used for triangle setup. Value returned by <strong><see cref=\"M:SharpDX.Direct3D10.Asynchronous.GetData\"/></strong> between 0.0 and 1.0 when using this counter</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_COUNTER_TRIANGLE_SETUP_THROUGHPUT_UTILIZATION']/*\"/>\t\n            <msdn-id>bb204904</msdn-id>\t\n            <unmanaged>D3D10_COUNTER_TRIANGLE_SETUP_THROUGHPUT_UTILIZATION</unmanaged>\t\n            <unmanaged-short>D3D10_COUNTER_TRIANGLE_SETUP_THROUGHPUT_UTILIZATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.CounterKind.FillrateThroughputUtilization\">\n            <summary>\t\n            <dd> <p>Percentage of throughput used for the fillrate. Value returned by <strong><see cref=\"M:SharpDX.Direct3D10.Asynchronous.GetData\"/></strong> between 0.0 and 1.0 when using this counter.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_COUNTER_FILLRATE_THROUGHPUT_UTILIZATION']/*\"/>\t\n            <msdn-id>bb204904</msdn-id>\t\n            <unmanaged>D3D10_COUNTER_FILLRATE_THROUGHPUT_UTILIZATION</unmanaged>\t\n            <unmanaged-short>D3D10_COUNTER_FILLRATE_THROUGHPUT_UTILIZATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.CounterKind.VertexShaderMemoryLimited\">\n            <summary>\t\n            <dd> <p>Percentage of time that a vertex shader spends sampling resources.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_COUNTER_VS_MEMORY_LIMITED']/*\"/>\t\n            <msdn-id>bb204904</msdn-id>\t\n            <unmanaged>D3D10_COUNTER_VS_MEMORY_LIMITED</unmanaged>\t\n            <unmanaged-short>D3D10_COUNTER_VS_MEMORY_LIMITED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.CounterKind.VertexShaderComputationLimited\">\n            <summary>\t\n            <dd> <p>Percentage of time that a vertex shader spends doing computations.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_COUNTER_VS_COMPUTATION_LIMITED']/*\"/>\t\n            <msdn-id>bb204904</msdn-id>\t\n            <unmanaged>D3D10_COUNTER_VS_COMPUTATION_LIMITED</unmanaged>\t\n            <unmanaged-short>D3D10_COUNTER_VS_COMPUTATION_LIMITED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.CounterKind.GeometryShaderMemoryLimited\">\n            <summary>\t\n            <dd> <p>Percentage of time that a geometry shader spends sampling resources.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_COUNTER_GS_MEMORY_LIMITED']/*\"/>\t\n            <msdn-id>bb204904</msdn-id>\t\n            <unmanaged>D3D10_COUNTER_GS_MEMORY_LIMITED</unmanaged>\t\n            <unmanaged-short>D3D10_COUNTER_GS_MEMORY_LIMITED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.CounterKind.GeometryShaderComputationLimited\">\n            <summary>\t\n            <dd> <p>Percentage of time that a geometry shader spends doing computations.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_COUNTER_GS_COMPUTATION_LIMITED']/*\"/>\t\n            <msdn-id>bb204904</msdn-id>\t\n            <unmanaged>D3D10_COUNTER_GS_COMPUTATION_LIMITED</unmanaged>\t\n            <unmanaged-short>D3D10_COUNTER_GS_COMPUTATION_LIMITED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.CounterKind.PixelShaderMemoryLimited\">\n            <summary>\t\n            <dd> <p>Percentage of time that a pixel shader spends sampling resources.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_COUNTER_PS_MEMORY_LIMITED']/*\"/>\t\n            <msdn-id>bb204904</msdn-id>\t\n            <unmanaged>D3D10_COUNTER_PS_MEMORY_LIMITED</unmanaged>\t\n            <unmanaged-short>D3D10_COUNTER_PS_MEMORY_LIMITED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.CounterKind.PixelShaderComputationLimited\">\n            <summary>\t\n            <dd> <p>Percentage of time that a pixel shader spends doing computations.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_COUNTER_PS_COMPUTATION_LIMITED']/*\"/>\t\n            <msdn-id>bb204904</msdn-id>\t\n            <unmanaged>D3D10_COUNTER_PS_COMPUTATION_LIMITED</unmanaged>\t\n            <unmanaged-short>D3D10_COUNTER_PS_COMPUTATION_LIMITED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.CounterKind.PostTransformCacheHitRate\">\n            <summary>\t\n            <dd> <p>Percentage of vertex data that was read from the vertex cache. For example, if 6 vertices were added to the cache and 3 of them were read from the cache, then the hit rate would be 0.5.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_COUNTER_POST_TRANSFORM_CACHE_HIT_RATE']/*\"/>\t\n            <msdn-id>bb204904</msdn-id>\t\n            <unmanaged>D3D10_COUNTER_POST_TRANSFORM_CACHE_HIT_RATE</unmanaged>\t\n            <unmanaged-short>D3D10_COUNTER_POST_TRANSFORM_CACHE_HIT_RATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.CounterKind.TextureCacheHitRate\">\n            <summary>\t\n            <dd> <p>Percentage of texel data that was read from the vertex cache. For example, if 6 texels were added to the cache and 3 of them were read from the cache, then the hit rate would be 0.5.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_COUNTER_TEXTURE_CACHE_HIT_RATE']/*\"/>\t\n            <msdn-id>bb204904</msdn-id>\t\n            <unmanaged>D3D10_COUNTER_TEXTURE_CACHE_HIT_RATE</unmanaged>\t\n            <unmanaged-short>D3D10_COUNTER_TEXTURE_CACHE_HIT_RATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.CounterKind.DeviceDependent0\">\n            <summary>\t\n            <dd> <p>Start of the device-dependent counters. See remarks.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_COUNTER_DEVICE_DEPENDENT_0']/*\"/>\t\n            <msdn-id>bb204904</msdn-id>\t\n            <unmanaged>D3D10_COUNTER_DEVICE_DEPENDENT_0</unmanaged>\t\n            <unmanaged-short>D3D10_COUNTER_DEVICE_DEPENDENT_0</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.CounterType\">\n            <summary>\t\n            <p>Data type of a performance counter.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>These flags are an output parameter in <strong><see cref=\"M:SharpDX.Direct3D10.Device.CheckCounter(SharpDX.Direct3D10.CounterDescription,SharpDX.Direct3D10.CounterType@,System.Int32@,System.IntPtr,System.IntPtr,System.IntPtr,System.IntPtr,System.IntPtr,System.IntPtr)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_COUNTER_TYPE']/*\"/>\t\n            <msdn-id>bb204907</msdn-id>\t\n            <unmanaged>D3D10_COUNTER_TYPE</unmanaged>\t\n            <unmanaged-short>D3D10_COUNTER_TYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.CounterType.Float32\">\n            <summary>\t\n            <dd> <p>32-bit floating point.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_COUNTER_TYPE_FLOAT32']/*\"/>\t\n            <msdn-id>bb204907</msdn-id>\t\n            <unmanaged>D3D10_COUNTER_TYPE_FLOAT32</unmanaged>\t\n            <unmanaged-short>D3D10_COUNTER_TYPE_FLOAT32</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.CounterType.UInt16\">\n            <summary>\t\n            <dd> <p>16-bit unsigned integer.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_COUNTER_TYPE_UINT16']/*\"/>\t\n            <msdn-id>bb204907</msdn-id>\t\n            <unmanaged>D3D10_COUNTER_TYPE_UINT16</unmanaged>\t\n            <unmanaged-short>D3D10_COUNTER_TYPE_UINT16</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.CounterType.UInt32\">\n            <summary>\t\n            <dd> <p>32-bit unsigned integer.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_COUNTER_TYPE_UINT32']/*\"/>\t\n            <msdn-id>bb204907</msdn-id>\t\n            <unmanaged>D3D10_COUNTER_TYPE_UINT32</unmanaged>\t\n            <unmanaged-short>D3D10_COUNTER_TYPE_UINT32</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.CounterType.UInt64\">\n            <summary>\t\n            <dd> <p>64-bit unsigned integer.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_COUNTER_TYPE_UINT64']/*\"/>\t\n            <msdn-id>bb204907</msdn-id>\t\n            <unmanaged>D3D10_COUNTER_TYPE_UINT64</unmanaged>\t\n            <unmanaged-short>D3D10_COUNTER_TYPE_UINT64</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.CpuAccessFlags\">\n            <summary>\t\n            <p>Specifies the types of CPU access allowed for a resource.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This enumeration is used in <strong><see cref=\"T:SharpDX.Direct3D10.BufferDescription\"/></strong>, <strong><see cref=\"T:SharpDX.Direct3D10.Texture1DDescription\"/></strong>, <strong><see cref=\"T:SharpDX.Direct3D10.Texture2DDescription\"/></strong>, <strong><see cref=\"T:SharpDX.Direct3D10.Texture3DDescription\"/></strong>, and <strong><see cref=\"T:SharpDX.Direct3D10.ImageLoadInformation\"/></strong>. See Creating Buffer Resources (Direct3D 10) for more details.</p><p>Applications can combine one or more of these flags with a bitwise OR. When possible, create resources with no CPU access flags, as this enables better resource optimization.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_CPU_ACCESS_FLAG']/*\"/>\t\n            <msdn-id>bb204908</msdn-id>\t\n            <unmanaged>D3D10_CPU_ACCESS_FLAG</unmanaged>\t\n            <unmanaged-short>D3D10_CPU_ACCESS_FLAG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.CpuAccessFlags.Write\">\n            <summary>\t\n            <dd> <p>The resource is to be mappable so that the CPU can change its contents. Resources created with this flag cannot be set as outputs of the pipeline and must be created with either dynamic or staging usage (see <strong><see cref=\"T:SharpDX.Direct3D10.ResourceUsage\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_CPU_ACCESS_WRITE']/*\"/>\t\n            <msdn-id>bb204908</msdn-id>\t\n            <unmanaged>D3D10_CPU_ACCESS_WRITE</unmanaged>\t\n            <unmanaged-short>D3D10_CPU_ACCESS_WRITE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.CpuAccessFlags.Read\">\n            <summary>\t\n            <dd> <p>The resource is to be mappable so that the CPU can read its contents. Resources created with this flag cannot be set as either inputs or outputs to the pipeline and must be created with staging usage (see <strong><see cref=\"T:SharpDX.Direct3D10.ResourceUsage\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_CPU_ACCESS_READ']/*\"/>\t\n            <msdn-id>bb204908</msdn-id>\t\n            <unmanaged>D3D10_CPU_ACCESS_READ</unmanaged>\t\n            <unmanaged-short>D3D10_CPU_ACCESS_READ</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.CpuAccessFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.CullMode\">\n            <summary>\t\n            <p>Indicates triangles facing a particular direction are not drawn.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This enumeration is part of a rasterizer-state object description (see <strong><see cref=\"T:SharpDX.Direct3D10.RasterizerStateDescription\"/></strong>).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_CULL_MODE']/*\"/>\t\n            <msdn-id>bb204911</msdn-id>\t\n            <unmanaged>D3D10_CULL_MODE</unmanaged>\t\n            <unmanaged-short>D3D10_CULL_MODE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.CullMode.None\">\n            <summary>\t\n            <dd> <p>Always draw all triangles.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_CULL_NONE']/*\"/>\t\n            <msdn-id>bb204911</msdn-id>\t\n            <unmanaged>D3D10_CULL_NONE</unmanaged>\t\n            <unmanaged-short>D3D10_CULL_NONE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.CullMode.Front\">\n            <summary>\t\n            <dd> <p>Do not draw triangles that are front-facing.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_CULL_FRONT']/*\"/>\t\n            <msdn-id>bb204911</msdn-id>\t\n            <unmanaged>D3D10_CULL_FRONT</unmanaged>\t\n            <unmanaged-short>D3D10_CULL_FRONT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.CullMode.Back\">\n            <summary>\t\n            <dd> <p>Do not draw triangles that are back-facing.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_CULL_BACK']/*\"/>\t\n            <msdn-id>bb204911</msdn-id>\t\n            <unmanaged>D3D10_CULL_BACK</unmanaged>\t\n            <unmanaged-short>D3D10_CULL_BACK</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.DebugFeatureFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_DEBUG_FEATURE_FLAGS']/*\"/>\t\n            <unmanaged>D3D10_DEBUG_FEATURE_FLAGS</unmanaged>\t\n            <unmanaged-short>D3D10_DEBUG_FEATURE_FLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.DebugFeatureFlags.FlushPerRender\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_DEBUG_FEATURE_FLUSH_PER_RENDER_OP']/*\"/>\t\n            <unmanaged>D3D10_DEBUG_FEATURE_FLUSH_PER_RENDER_OP</unmanaged>\t\n            <unmanaged-short>D3D10_DEBUG_FEATURE_FLUSH_PER_RENDER_OP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.DebugFeatureFlags.FinishPerRender\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_DEBUG_FEATURE_FINISH_PER_RENDER_OP']/*\"/>\t\n            <unmanaged>D3D10_DEBUG_FEATURE_FINISH_PER_RENDER_OP</unmanaged>\t\n            <unmanaged-short>D3D10_DEBUG_FEATURE_FINISH_PER_RENDER_OP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.DebugFeatureFlags.PresentPerRender\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_DEBUG_FEATURE_PRESENT_PER_RENDER_OP']/*\"/>\t\n            <unmanaged>D3D10_DEBUG_FEATURE_PRESENT_PER_RENDER_OP</unmanaged>\t\n            <unmanaged-short>D3D10_DEBUG_FEATURE_PRESENT_PER_RENDER_OP</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.DepthStencilClearFlags\">\n            <summary>\t\n            <p>Specifies the parts of the depth stencil to clear. Usually used with <strong><see cref=\"M:SharpDX.Direct3D10.Device.ClearDepthStencilView(SharpDX.Direct3D10.DepthStencilView,SharpDX.Direct3D10.DepthStencilClearFlags,System.Single,System.Byte)\"/></strong>.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>These flags can be bitwise ORed together.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_CLEAR_FLAG']/*\"/>\t\n            <msdn-id>bb204900</msdn-id>\t\n            <unmanaged>D3D10_CLEAR_FLAG</unmanaged>\t\n            <unmanaged-short>D3D10_CLEAR_FLAG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.DepthStencilClearFlags.Depth\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_CLEAR_DEPTH']/*\"/>\t\n            <unmanaged>D3D10_CLEAR_DEPTH</unmanaged>\t\n            <unmanaged-short>D3D10_CLEAR_DEPTH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.DepthStencilClearFlags.Stencil\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_CLEAR_STENCIL']/*\"/>\t\n            <unmanaged>D3D10_CLEAR_STENCIL</unmanaged>\t\n            <unmanaged-short>D3D10_CLEAR_STENCIL</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.DepthStencilViewDimension\">\n            <summary>\t\n            <p>Specifies how to access a resource used in a depth-stencil view.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This enumeration is used in <strong><see cref=\"T:SharpDX.Direct3D10.DepthStencilViewDescription\"/></strong> to create a depth-stencil view.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_DSV_DIMENSION']/*\"/>\t\n            <msdn-id>bb205043</msdn-id>\t\n            <unmanaged>D3D10_DSV_DIMENSION</unmanaged>\t\n            <unmanaged-short>D3D10_DSV_DIMENSION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.DepthStencilViewDimension.Unknown\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_DSV_DIMENSION_UNKNOWN']/*\"/>\t\n            <unmanaged>D3D10_DSV_DIMENSION_UNKNOWN</unmanaged>\t\n            <unmanaged-short>D3D10_DSV_DIMENSION_UNKNOWN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.DepthStencilViewDimension.Texture1D\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_DSV_DIMENSION_TEXTURE1D']/*\"/>\t\n            <unmanaged>D3D10_DSV_DIMENSION_TEXTURE1D</unmanaged>\t\n            <unmanaged-short>D3D10_DSV_DIMENSION_TEXTURE1D</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.DepthStencilViewDimension.Texture1DArray\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_DSV_DIMENSION_TEXTURE1DARRAY']/*\"/>\t\n            <unmanaged>D3D10_DSV_DIMENSION_TEXTURE1DARRAY</unmanaged>\t\n            <unmanaged-short>D3D10_DSV_DIMENSION_TEXTURE1DARRAY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.DepthStencilViewDimension.Texture2D\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_DSV_DIMENSION_TEXTURE2D']/*\"/>\t\n            <unmanaged>D3D10_DSV_DIMENSION_TEXTURE2D</unmanaged>\t\n            <unmanaged-short>D3D10_DSV_DIMENSION_TEXTURE2D</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.DepthStencilViewDimension.Texture2DArray\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_DSV_DIMENSION_TEXTURE2DARRAY']/*\"/>\t\n            <unmanaged>D3D10_DSV_DIMENSION_TEXTURE2DARRAY</unmanaged>\t\n            <unmanaged-short>D3D10_DSV_DIMENSION_TEXTURE2DARRAY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.DepthStencilViewDimension.Texture2DMultisampled\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_DSV_DIMENSION_TEXTURE2DMS']/*\"/>\t\n            <unmanaged>D3D10_DSV_DIMENSION_TEXTURE2DMS</unmanaged>\t\n            <unmanaged-short>D3D10_DSV_DIMENSION_TEXTURE2DMS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.DepthStencilViewDimension.Texture2DMultisampledArray\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_DSV_DIMENSION_TEXTURE2DMSARRAY']/*\"/>\t\n            <unmanaged>D3D10_DSV_DIMENSION_TEXTURE2DMSARRAY</unmanaged>\t\n            <unmanaged-short>D3D10_DSV_DIMENSION_TEXTURE2DMSARRAY</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.DepthWriteMask\">\n            <summary>\t\n            <p>Identify the portion of a depth-stencil buffer for writing depth data.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_DEPTH_WRITE_MASK']/*\"/>\t\n            <msdn-id>bb205038</msdn-id>\t\n            <unmanaged>D3D10_DEPTH_WRITE_MASK</unmanaged>\t\n            <unmanaged-short>D3D10_DEPTH_WRITE_MASK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.DepthWriteMask.Zero\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_DEPTH_WRITE_MASK_ZERO']/*\"/>\t\n            <unmanaged>D3D10_DEPTH_WRITE_MASK_ZERO</unmanaged>\t\n            <unmanaged-short>D3D10_DEPTH_WRITE_MASK_ZERO</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.DepthWriteMask.All\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_DEPTH_WRITE_MASK_ALL']/*\"/>\t\n            <unmanaged>D3D10_DEPTH_WRITE_MASK_ALL</unmanaged>\t\n            <unmanaged-short>D3D10_DEPTH_WRITE_MASK_ALL</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.DeviceCreationFlags\">\n            <summary>\t\n            <p>Device creation flags.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Device creation flags are used by <strong><see cref=\"M:SharpDX.Direct3D10.D3D10.CreateDevice(SharpDX.DXGI.Adapter,SharpDX.Direct3D10.DriverType,System.IntPtr,SharpDX.Direct3D10.DeviceCreationFlags,System.Int32,SharpDX.Direct3D10.Device)\"/></strong> and <strong><see cref=\"M:SharpDX.Direct3D10.D3D10.CreateDeviceAndSwapChain(SharpDX.DXGI.Adapter,SharpDX.Direct3D10.DriverType,System.IntPtr,SharpDX.Direct3D10.DeviceCreationFlags,System.Int32,SharpDX.DXGI.SwapChainDescription@,SharpDX.DXGI.SwapChain@,SharpDX.Direct3D10.Device@)\"/></strong>.</p><p>An application might dynamically create (and destroy) threads to improve performance especially on a machine with multiple CPU cores.  There may be cases, however, when an application needs to prevent extra threads from being created. This can happen when you want to simplify  debugging, profile code or develop a tool for instance. For these cases, use <see cref=\"F:SharpDX.Direct3D10.DeviceCreationFlags.PreventInternalThreadingOptimizations\"/> to request  that the runtime and video driver not create any additional threads that might interfere with the application.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_CREATE_DEVICE_FLAG']/*\"/>\t\n            <msdn-id>bb204909</msdn-id>\t\n            <unmanaged>D3D10_CREATE_DEVICE_FLAG</unmanaged>\t\n            <unmanaged-short>D3D10_CREATE_DEVICE_FLAG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.DeviceCreationFlags.SingleThreaded\">\n            <summary>\t\n            <dd> <p>Use this flag if an application will only be calling D3D10 from a single thread. If this flag is not specified, the default behavior of D3D10  is to enter a lock during each API call to prevent multiple threads altering internal state. By using this flag no locks will be taken which can  slightly increase performance, but could result in undefine behavior if D3D10 is called from multiple threads.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_CREATE_DEVICE_SINGLETHREADED']/*\"/>\t\n            <msdn-id>bb204909</msdn-id>\t\n            <unmanaged>D3D10_CREATE_DEVICE_SINGLETHREADED</unmanaged>\t\n            <unmanaged-short>D3D10_CREATE_DEVICE_SINGLETHREADED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.DeviceCreationFlags.Debug\">\n            <summary>\t\n            <dd> <p>Create a device that supports the debug layer.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_CREATE_DEVICE_DEBUG']/*\"/>\t\n            <msdn-id>bb204909</msdn-id>\t\n            <unmanaged>D3D10_CREATE_DEVICE_DEBUG</unmanaged>\t\n            <unmanaged-short>D3D10_CREATE_DEVICE_DEBUG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.DeviceCreationFlags.SwitchToRef\">\n            <summary>\t\n            <dd> <p>Create both a software (REF) and hardware (HAL) version of the device simultaneously, which allows an application to switch to a  reference device to enable debugging. See <strong><see cref=\"T:SharpDX.Direct3D10.SwitchToRef\"/> Interface</strong> for more information.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_CREATE_DEVICE_SWITCH_TO_REF']/*\"/>\t\n            <msdn-id>bb204909</msdn-id>\t\n            <unmanaged>D3D10_CREATE_DEVICE_SWITCH_TO_REF</unmanaged>\t\n            <unmanaged-short>D3D10_CREATE_DEVICE_SWITCH_TO_REF</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.DeviceCreationFlags.PreventInternalThreadingOptimizations\">\n            <summary>\t\n            <dd> <p>Prevents multiple threads from being created. When this flag is used with a WARP device, no additional threads will be created by WARP and all rasterization will occur on the calling thread. This flag is not recommended for general use. See remarks. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_CREATE_DEVICE_PREVENT_INTERNAL_THREADING_OPTIMIZATIONS']/*\"/>\t\n            <msdn-id>bb204909</msdn-id>\t\n            <unmanaged>D3D10_CREATE_DEVICE_PREVENT_INTERNAL_THREADING_OPTIMIZATIONS</unmanaged>\t\n            <unmanaged-short>D3D10_CREATE_DEVICE_PREVENT_INTERNAL_THREADING_OPTIMIZATIONS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.DeviceCreationFlags.AllowNullFromMap\">\n            <summary>\t\n            <dd> <p>Return a <strong><c>null</c></strong> reference instead of triggering an exception on memory exhaustion during invocations to Map.   Without this flag an exception will be raised on memory exhaustion.  Only valid on Winodws 7.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_CREATE_DEVICE_ALLOW_NULL_FROM_MAP']/*\"/>\t\n            <msdn-id>bb204909</msdn-id>\t\n            <unmanaged>D3D10_CREATE_DEVICE_ALLOW_NULL_FROM_MAP</unmanaged>\t\n            <unmanaged-short>D3D10_CREATE_DEVICE_ALLOW_NULL_FROM_MAP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.DeviceCreationFlags.BgraSupport\">\n            <summary>\t\n            <dd> <p>Causes device creation to fail if BGRA support is not available.</p> <p>BGRA support enables the following formats.</p> <ul> <li><see cref=\"F:SharpDX.DXGI.Format.B8G8R8A8_Typeless\"/></li> <li><see cref=\"F:SharpDX.DXGI.Format.B8G8R8A8_UNorm\"/></li> <li><see cref=\"F:SharpDX.DXGI.Format.B8G8R8A8_UNorm_SRgb\"/></li> <li><see cref=\"F:SharpDX.DXGI.Format.B8G8R8X8_Typeless\"/></li> <li><see cref=\"F:SharpDX.DXGI.Format.B8G8R8X8_UNorm\"/></li> <li><see cref=\"F:SharpDX.DXGI.Format.B8G8R8X8_UNorm_SRgb\"/></li> </ul> <p><see cref=\"F:SharpDX.Direct3D10.DeviceCreationFlags.BgraSupport\"/> is only relevant when a device is created with <strong><see cref=\"M:SharpDX.Direct3D10.D3D10.CreateDevice1(SharpDX.DXGI.Adapter,SharpDX.Direct3D10.DriverType,System.IntPtr,SharpDX.Direct3D10.DeviceCreationFlags,SharpDX.Direct3D10.FeatureLevel,System.Int32,SharpDX.Direct3D10.Device1)\"/></strong> or <strong><see cref=\"M:SharpDX.Direct3D10.D3D10.CreateDeviceAndSwapChain1(SharpDX.DXGI.Adapter,SharpDX.Direct3D10.DriverType,System.IntPtr,SharpDX.Direct3D10.DeviceCreationFlags,SharpDX.Direct3D10.FeatureLevel,System.Int32,SharpDX.DXGI.SwapChainDescription@,SharpDX.DXGI.SwapChain@,SharpDX.Direct3D10.Device1@)\"/></strong> using the <strong><see cref=\"F:SharpDX.Direct3D10.FeatureLevel.Level_10_0\"/></strong> or <strong><see cref=\"F:SharpDX.Direct3D10.FeatureLevel.Level_10_1\"/></strong> feature levels, the flag will be ignored when a device is created with other feature levels.</p> <p>Note that BGRA support may be present even if the application didn't specify <see cref=\"F:SharpDX.Direct3D10.DeviceCreationFlags.BgraSupport\"/>.  The flag merely causes device creation to fail if BGRA support isn't available.</p> <p><see cref=\"F:SharpDX.Direct3D10.DeviceCreationFlags.BgraSupport\"/> is only valid on Windows 7, Windows Server 2008 R2, and updated Windows Vista (KB971644) systems.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_CREATE_DEVICE_BGRA_SUPPORT']/*\"/>\t\n            <msdn-id>bb204909</msdn-id>\t\n            <unmanaged>D3D10_CREATE_DEVICE_BGRA_SUPPORT</unmanaged>\t\n            <unmanaged-short>D3D10_CREATE_DEVICE_BGRA_SUPPORT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.DeviceCreationFlags.StrictValidation\">\n            <summary>\t\n            <dd> <p>Reserved. This flag is currently not supported. Do not use.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_CREATE_DEVICE_STRICT_VALIDATION']/*\"/>\t\n            <msdn-id>bb204909</msdn-id>\t\n            <unmanaged>D3D10_CREATE_DEVICE_STRICT_VALIDATION</unmanaged>\t\n            <unmanaged-short>D3D10_CREATE_DEVICE_STRICT_VALIDATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.DeviceCreationFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.DriverType\">\n            <summary>\t\n            <p>The device-driver type.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The device-driver type needs to be specified when the device is created (using <strong><see cref=\"M:SharpDX.Direct3D10.D3D10.CreateDevice(SharpDX.DXGI.Adapter,SharpDX.Direct3D10.DriverType,System.IntPtr,SharpDX.Direct3D10.DeviceCreationFlags,System.Int32,SharpDX.Direct3D10.Device)\"/></strong> or <strong><see cref=\"M:SharpDX.Direct3D10.D3D10.CreateDeviceAndSwapChain(SharpDX.DXGI.Adapter,SharpDX.Direct3D10.DriverType,System.IntPtr,SharpDX.Direct3D10.DeviceCreationFlags,System.Int32,SharpDX.DXGI.SwapChainDescription@,SharpDX.DXGI.SwapChain@,SharpDX.Direct3D10.Device@)\"/></strong>). </p><p>For information about limitations creating nonhardware-type devices on certain feature levels, see Limitations Creating WARP and Reference Devices.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_DRIVER_TYPE']/*\"/>\t\n            <msdn-id>bb205042</msdn-id>\t\n            <unmanaged>D3D10_DRIVER_TYPE</unmanaged>\t\n            <unmanaged-short>D3D10_DRIVER_TYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.DriverType.Hardware\">\n            <summary>\t\n            <dd> <p>A hardware device; commonly called a HAL device.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_DRIVER_TYPE_HARDWARE']/*\"/>\t\n            <msdn-id>bb205042</msdn-id>\t\n            <unmanaged>D3D10_DRIVER_TYPE_HARDWARE</unmanaged>\t\n            <unmanaged-short>D3D10_DRIVER_TYPE_HARDWARE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.DriverType.Reference\">\n            <summary>\t\n            <dd> <p>A reference device; commonly called a REF device.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_DRIVER_TYPE_REFERENCE']/*\"/>\t\n            <msdn-id>bb205042</msdn-id>\t\n            <unmanaged>D3D10_DRIVER_TYPE_REFERENCE</unmanaged>\t\n            <unmanaged-short>D3D10_DRIVER_TYPE_REFERENCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.DriverType.Null\">\n            <summary>\t\n            <dd> <p>A <c>null</c> device; which is a reference device without render capability.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_DRIVER_TYPE_NULL']/*\"/>\t\n            <msdn-id>bb205042</msdn-id>\t\n            <unmanaged>D3D10_DRIVER_TYPE_NULL</unmanaged>\t\n            <unmanaged-short>D3D10_DRIVER_TYPE_NULL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.DriverType.Software\">\n            <summary>\t\n            <dd> <p>Reserved for later use.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_DRIVER_TYPE_SOFTWARE']/*\"/>\t\n            <msdn-id>bb205042</msdn-id>\t\n            <unmanaged>D3D10_DRIVER_TYPE_SOFTWARE</unmanaged>\t\n            <unmanaged-short>D3D10_DRIVER_TYPE_SOFTWARE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.DriverType.Warp\">\n            <summary>\t\n            <dd> <p>A WARP driver, which is a high-performance software rasterizer. The rasterizer supports feature level 9_1 through level 10.1 with a  high performance software implementation when hardware is not available. For more information about using a WARP driver, see Windows Advanced Rasterization Platform (WARP) In-Depth Guide. Note that WARP is only available with the DirectX 11 Runtime (Windows 7, Windows Server 2008 R2, updated Windows Vista [KB971644]).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_DRIVER_TYPE_WARP']/*\"/>\t\n            <msdn-id>bb205042</msdn-id>\t\n            <unmanaged>D3D10_DRIVER_TYPE_WARP</unmanaged>\t\n            <unmanaged-short>D3D10_DRIVER_TYPE_WARP</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.EffectVariableFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_EFFECT_VARIABLE_FLAGS']/*\"/>\t\n            <unmanaged>D3D10_EFFECT_VARIABLE_FLAGS</unmanaged>\t\n            <unmanaged-short>D3D10_EFFECT_VARIABLE_FLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.EffectVariableFlags.Pooled\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_EFFECT_VARIABLE_POOLED']/*\"/>\t\n            <unmanaged>D3D10_EFFECT_VARIABLE_POOLED</unmanaged>\t\n            <unmanaged-short>D3D10_EFFECT_VARIABLE_POOLED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.EffectVariableFlags.Annotation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_EFFECT_VARIABLE_ANNOTATION']/*\"/>\t\n            <unmanaged>D3D10_EFFECT_VARIABLE_ANNOTATION</unmanaged>\t\n            <unmanaged-short>D3D10_EFFECT_VARIABLE_ANNOTATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.EffectVariableFlags.ExplicitBindPoint\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_EFFECT_VARIABLE_EXPLICIT_BIND_POINT']/*\"/>\t\n            <unmanaged>D3D10_EFFECT_VARIABLE_EXPLICIT_BIND_POINT</unmanaged>\t\n            <unmanaged-short>D3D10_EFFECT_VARIABLE_EXPLICIT_BIND_POINT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.EffectVariableFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.FeatureLevel\">\n            <summary>\t\n            <p>The version of hardware acceleration requested.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Use this enumeration when creating a device with <strong><see cref=\"M:SharpDX.Direct3D10.D3D10.CreateDevice1(SharpDX.DXGI.Adapter,SharpDX.Direct3D10.DriverType,System.IntPtr,SharpDX.Direct3D10.DeviceCreationFlags,SharpDX.Direct3D10.FeatureLevel,System.Int32,SharpDX.Direct3D10.Device1)\"/></strong> or <strong><see cref=\"M:SharpDX.Direct3D10.D3D10.CreateDeviceAndSwapChain1(SharpDX.DXGI.Adapter,SharpDX.Direct3D10.DriverType,System.IntPtr,SharpDX.Direct3D10.DeviceCreationFlags,SharpDX.Direct3D10.FeatureLevel,System.Int32,SharpDX.DXGI.SwapChainDescription@,SharpDX.DXGI.SwapChain@,SharpDX.Direct3D10.Device1@)\"/></strong>.</p><p>Note that 10level9 feature levels 9_1, 9_2, and 9_3 are only available with the Direct3D 11 runtime (Windows?7, Windows Server?2008?R2, updated  Windows?Vista with Service Pack?2 (SP2) [KB 971644], and updated Windows Server?2008 [KB 971512]).</p><p>For information about limitations creating nonhardware-type devices on certain feature levels, see Limitations Creating WARP and Reference Devices.</p><p>For an overview of  the capabilities of each feature level, see Overview For Each Feature Level.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_FEATURE_LEVEL1']/*\"/>\t\n            <msdn-id>bb694529</msdn-id>\t\n            <unmanaged>D3D10_FEATURE_LEVEL1</unmanaged>\t\n            <unmanaged-short>D3D10_FEATURE_LEVEL1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FeatureLevel.Level_10_0\">\n            <summary>\t\n            <dd> <p>The hardware supports Direct3D 10.0 features.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_FEATURE_LEVEL_10_0']/*\"/>\t\n            <msdn-id>bb694529</msdn-id>\t\n            <unmanaged>D3D10_FEATURE_LEVEL_10_0</unmanaged>\t\n            <unmanaged-short>D3D10_FEATURE_LEVEL_10_0</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FeatureLevel.Level_10_1\">\n            <summary>\t\n            <dd> <p>The hardware supports Direct3D 10.1 features.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_FEATURE_LEVEL_10_1']/*\"/>\t\n            <msdn-id>bb694529</msdn-id>\t\n            <unmanaged>D3D10_FEATURE_LEVEL_10_1</unmanaged>\t\n            <unmanaged-short>D3D10_FEATURE_LEVEL_10_1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FeatureLevel.Level_9_1\">\n            <summary>\t\n            <dd> <p>The hardware supports 9.1 feature level.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_FEATURE_LEVEL_9_1']/*\"/>\t\n            <msdn-id>bb694529</msdn-id>\t\n            <unmanaged>D3D10_FEATURE_LEVEL_9_1</unmanaged>\t\n            <unmanaged-short>D3D10_FEATURE_LEVEL_9_1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FeatureLevel.Level_9_2\">\n            <summary>\t\n            <dd> <p>The hardware supports 9.2 feature level.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_FEATURE_LEVEL_9_2']/*\"/>\t\n            <msdn-id>bb694529</msdn-id>\t\n            <unmanaged>D3D10_FEATURE_LEVEL_9_2</unmanaged>\t\n            <unmanaged-short>D3D10_FEATURE_LEVEL_9_2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FeatureLevel.Level_9_3\">\n            <summary>\t\n            <dd> <p>The hardware supports 9.3 feature level.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_FEATURE_LEVEL_9_3']/*\"/>\t\n            <msdn-id>bb694529</msdn-id>\t\n            <unmanaged>D3D10_FEATURE_LEVEL_9_3</unmanaged>\t\n            <unmanaged-short>D3D10_FEATURE_LEVEL_9_3</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.FillMode\">\n            <summary>\t\n            <p>Determines the fill mode to use when rendering triangles.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This enumeration is part of a rasterizer-state object description (see <strong><see cref=\"T:SharpDX.Direct3D10.RasterizerStateDescription\"/></strong>).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_FILL_MODE']/*\"/>\t\n            <msdn-id>bb205059</msdn-id>\t\n            <unmanaged>D3D10_FILL_MODE</unmanaged>\t\n            <unmanaged-short>D3D10_FILL_MODE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FillMode.Wireframe\">\n            <summary>\t\n            <dd> <p>Draw lines connecting the vertices. Adjacent vertices are not drawn.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_FILL_WIREFRAME']/*\"/>\t\n            <msdn-id>bb205059</msdn-id>\t\n            <unmanaged>D3D10_FILL_WIREFRAME</unmanaged>\t\n            <unmanaged-short>D3D10_FILL_WIREFRAME</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FillMode.Solid\">\n            <summary>\t\n            <dd> <p>Fill the triangles formed by the vertices. Adjacent vertices are not drawn.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_FILL_SOLID']/*\"/>\t\n            <msdn-id>bb205059</msdn-id>\t\n            <unmanaged>D3D10_FILL_SOLID</unmanaged>\t\n            <unmanaged-short>D3D10_FILL_SOLID</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.Filter\">\n            <summary>\t\n            <p>Filtering options during texture sampling.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>During texture sampling, one or more texels are read and combined (this is calling filtering) to produce a single value. Point sampling reads a single texel while linear sampling reads two texels (endpoints) and linearly interpolates a third value between the endpoints.</p><p>HLSL texture-sampling functions also support comparison filtering during texture sampling. Comparison filtering compares each sampled texel against a comparison value. The boolean result is blended the same way that normal texture filtering is blended.</p><p>You can use HLSL intrinsic texture-sampling functions that implement texture filtering only or companion functions that use texture filtering with comparison filtering.</p><table> <tr><th>Texture Sampling Function</th><th>Texture Sampling Function with Comparison Filtering</th></tr> <tr><td> sample </td><td> samplecmp or samplecmplevelzero </td></tr> </table><p>?</p><p>Comparison filters only work with textures that have the following <strong>formats</strong>: R32_FLOAT_X8X24_TYPELESS, R32_FLOAT, R24_UNORM_X8_TYPELESS, R16_UNORM.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_FILTER']/*\"/>\t\n            <msdn-id>bb205060</msdn-id>\t\n            <unmanaged>D3D10_FILTER</unmanaged>\t\n            <unmanaged-short>D3D10_FILTER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.Filter.MinMagMipPoint\">\n            <summary>\t\n            <dd> <p>Use point sampling for minification, magnification, and mip-level sampling.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_FILTER_MIN_MAG_MIP_POINT']/*\"/>\t\n            <msdn-id>bb205060</msdn-id>\t\n            <unmanaged>D3D10_FILTER_MIN_MAG_MIP_POINT</unmanaged>\t\n            <unmanaged-short>D3D10_FILTER_MIN_MAG_MIP_POINT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.Filter.MinMagPointMipLinear\">\n            <summary>\t\n            <dd> <p>Use point sampling for minification and magnification; use linear interpolation for mip-level sampling.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_FILTER_MIN_MAG_POINT_MIP_LINEAR']/*\"/>\t\n            <msdn-id>bb205060</msdn-id>\t\n            <unmanaged>D3D10_FILTER_MIN_MAG_POINT_MIP_LINEAR</unmanaged>\t\n            <unmanaged-short>D3D10_FILTER_MIN_MAG_POINT_MIP_LINEAR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.Filter.MinPointMagLinearMipPoint\">\n            <summary>\t\n            <dd> <p>Use point sampling for minification; use linear interpolation for magnification; use point sampling for mip-level sampling.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT']/*\"/>\t\n            <msdn-id>bb205060</msdn-id>\t\n            <unmanaged>D3D10_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT</unmanaged>\t\n            <unmanaged-short>D3D10_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.Filter.MinPointMagMipLinear\">\n            <summary>\t\n            <dd> <p>Use point sampling for minification; use linear interpolation for magnification and mip-level sampling.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_FILTER_MIN_POINT_MAG_MIP_LINEAR']/*\"/>\t\n            <msdn-id>bb205060</msdn-id>\t\n            <unmanaged>D3D10_FILTER_MIN_POINT_MAG_MIP_LINEAR</unmanaged>\t\n            <unmanaged-short>D3D10_FILTER_MIN_POINT_MAG_MIP_LINEAR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.Filter.MinLinearMagMipPoint\">\n            <summary>\t\n            <dd> <p>Use linear interpolation for minification; use point sampling for magnification and mip-level sampling.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_FILTER_MIN_LINEAR_MAG_MIP_POINT']/*\"/>\t\n            <msdn-id>bb205060</msdn-id>\t\n            <unmanaged>D3D10_FILTER_MIN_LINEAR_MAG_MIP_POINT</unmanaged>\t\n            <unmanaged-short>D3D10_FILTER_MIN_LINEAR_MAG_MIP_POINT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.Filter.MinLinearMagPointMipLinear\">\n            <summary>\t\n            <dd> <p>Use linear interpolation for minification; use point sampling for magnification; use linear interpolation for mip-level sampling.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR']/*\"/>\t\n            <msdn-id>bb205060</msdn-id>\t\n            <unmanaged>D3D10_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR</unmanaged>\t\n            <unmanaged-short>D3D10_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.Filter.MinMagLinearMipPoint\">\n            <summary>\t\n            <dd> <p>Use linear interpolation for minification and magnification; use point sampling for mip-level sampling.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_FILTER_MIN_MAG_LINEAR_MIP_POINT']/*\"/>\t\n            <msdn-id>bb205060</msdn-id>\t\n            <unmanaged>D3D10_FILTER_MIN_MAG_LINEAR_MIP_POINT</unmanaged>\t\n            <unmanaged-short>D3D10_FILTER_MIN_MAG_LINEAR_MIP_POINT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.Filter.MinMagMipLinear\">\n            <summary>\t\n            <dd> <p>Use linear interpolation for minification, magnification, and mip-level sampling.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_FILTER_MIN_MAG_MIP_LINEAR']/*\"/>\t\n            <msdn-id>bb205060</msdn-id>\t\n            <unmanaged>D3D10_FILTER_MIN_MAG_MIP_LINEAR</unmanaged>\t\n            <unmanaged-short>D3D10_FILTER_MIN_MAG_MIP_LINEAR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.Filter.Anisotropic\">\n            <summary>\t\n            <dd> <p>Use anisotropic interpolation for minification, magnification, and mip-level sampling.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_FILTER_ANISOTROPIC']/*\"/>\t\n            <msdn-id>bb205060</msdn-id>\t\n            <unmanaged>D3D10_FILTER_ANISOTROPIC</unmanaged>\t\n            <unmanaged-short>D3D10_FILTER_ANISOTROPIC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.Filter.ComparisonMinMagMipPoint\">\n            <summary>\t\n            <dd> <p>Use point sampling for minification, magnification, and mip-level sampling. Compare the result to the comparison value.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_FILTER_COMPARISON_MIN_MAG_MIP_POINT']/*\"/>\t\n            <msdn-id>bb205060</msdn-id>\t\n            <unmanaged>D3D10_FILTER_COMPARISON_MIN_MAG_MIP_POINT</unmanaged>\t\n            <unmanaged-short>D3D10_FILTER_COMPARISON_MIN_MAG_MIP_POINT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.Filter.ComparisonMinMagPointMipLinear\">\n            <summary>\t\n            <dd> <p>Use point sampling for minification and magnification; use linear interpolation for mip-level sampling. Compare the result to the comparison value.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR']/*\"/>\t\n            <msdn-id>bb205060</msdn-id>\t\n            <unmanaged>D3D10_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR</unmanaged>\t\n            <unmanaged-short>D3D10_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.Filter.ComparisonMinPointMagLinearMipPoint\">\n            <summary>\t\n            <dd> <p>Use point sampling for minification; use linear interpolation for magnification; use point sampling for mip-level sampling. Compare the result to the comparison value.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT']/*\"/>\t\n            <msdn-id>bb205060</msdn-id>\t\n            <unmanaged>D3D10_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT</unmanaged>\t\n            <unmanaged-short>D3D10_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.Filter.ComparisonMinPointMagMipLinear\">\n            <summary>\t\n            <dd> <p>Use point sampling for minification; use linear interpolation for magnification and mip-level sampling. Compare the result to the comparison value.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR']/*\"/>\t\n            <msdn-id>bb205060</msdn-id>\t\n            <unmanaged>D3D10_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR</unmanaged>\t\n            <unmanaged-short>D3D10_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.Filter.ComparisonMinLinearMagMipPoint\">\n            <summary>\t\n            <dd> <p>Use linear interpolation for minification; use point sampling for magnification and mip-level sampling. Compare the result to the comparison value.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT']/*\"/>\t\n            <msdn-id>bb205060</msdn-id>\t\n            <unmanaged>D3D10_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT</unmanaged>\t\n            <unmanaged-short>D3D10_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.Filter.ComparisonMinLinearMagPointMipLinear\">\n            <summary>\t\n            <dd> <p>Use linear interpolation for minification; use point sampling for magnification; use linear interpolation for mip-level sampling. Compare the result to the comparison value.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR']/*\"/>\t\n            <msdn-id>bb205060</msdn-id>\t\n            <unmanaged>D3D10_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR</unmanaged>\t\n            <unmanaged-short>D3D10_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.Filter.ComparisonMinMagLinearMipPoint\">\n            <summary>\t\n            <dd> <p>Use linear interpolation for minification and magnification; use point sampling for mip-level sampling. Compare the result to the comparison value.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT']/*\"/>\t\n            <msdn-id>bb205060</msdn-id>\t\n            <unmanaged>D3D10_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT</unmanaged>\t\n            <unmanaged-short>D3D10_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.Filter.ComparisonMinMagMipLinear\">\n            <summary>\t\n            <dd> <p>Use linear interpolation for minification, magnification, and mip-level sampling. Compare the result to the comparison value.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR']/*\"/>\t\n            <msdn-id>bb205060</msdn-id>\t\n            <unmanaged>D3D10_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR</unmanaged>\t\n            <unmanaged-short>D3D10_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.Filter.ComparisonAnisotropic\">\n            <summary>\t\n            <dd> <p>Use anisotropic interpolation for minification, magnification, and mip-level sampling. Compare the result to the comparison value.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_FILTER_COMPARISON_ANISOTROPIC']/*\"/>\t\n            <msdn-id>bb205060</msdn-id>\t\n            <unmanaged>D3D10_FILTER_COMPARISON_ANISOTROPIC</unmanaged>\t\n            <unmanaged-short>D3D10_FILTER_COMPARISON_ANISOTROPIC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.Filter.Texture1Bit\">\n            <summary>\t\n            <dd> <p>For use in pixel shaders with textures that have the R1_UNORM format.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_FILTER_TEXT_1BIT']/*\"/>\t\n            <msdn-id>bb205060</msdn-id>\t\n            <unmanaged>D3D10_FILTER_TEXT_1BIT</unmanaged>\t\n            <unmanaged-short>D3D10_FILTER_TEXT_1BIT</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.FilterFlags\">\n            <summary>\t\n            <p>Texture filtering flags.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>D3DX10 automatically performs gamma correction (to convert color data from RGB space to standard RGB space) when loading texture data. This is automatically done for instance when RGB data is loaded from a .png file into an sRGB texture. Use the SRGB filter flags to indicate if the data does not need to be converted into sRGB space.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_FILTER_FLAG']/*\"/>\t\n            <msdn-id>bb172692</msdn-id>\t\n            <unmanaged>D3DX10_FILTER_FLAG</unmanaged>\t\n            <unmanaged-short>D3DX10_FILTER_FLAG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FilterFlags.None\">\n            <summary>\t\n            <dd> <p>No scaling or filtering will take place. Pixels outside the bounds of the source image are assumed to be transparent black.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_FILTER_NONE']/*\"/>\t\n            <msdn-id>bb172692</msdn-id>\t\n            <unmanaged>D3DX10_FILTER_NONE</unmanaged>\t\n            <unmanaged-short>D3DX10_FILTER_NONE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FilterFlags.Point\">\n            <summary>\t\n            <dd> <p>Each destination pixel is computed by sampling the nearest pixel from the source image.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_FILTER_POINT']/*\"/>\t\n            <msdn-id>bb172692</msdn-id>\t\n            <unmanaged>D3DX10_FILTER_POINT</unmanaged>\t\n            <unmanaged-short>D3DX10_FILTER_POINT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FilterFlags.Linear\">\n            <summary>\t\n            <dd> <p>Each destination pixel is computed by sampling the four nearest pixels from the source image. This filter works best when the scale on both axes is less than two.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_FILTER_LINEAR']/*\"/>\t\n            <msdn-id>bb172692</msdn-id>\t\n            <unmanaged>D3DX10_FILTER_LINEAR</unmanaged>\t\n            <unmanaged-short>D3DX10_FILTER_LINEAR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FilterFlags.Triangle\">\n            <summary>\t\n            <dd> <p>Every pixel in the source image contributes equally to the destination image. This is the slowest of the filters.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_FILTER_TRIANGLE']/*\"/>\t\n            <msdn-id>bb172692</msdn-id>\t\n            <unmanaged>D3DX10_FILTER_TRIANGLE</unmanaged>\t\n            <unmanaged-short>D3DX10_FILTER_TRIANGLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FilterFlags.Box\">\n            <summary>\t\n            <dd> <p>Each pixel is computed by averaging a 2x2(x2) box of pixels from the source image. This filter works only when the dimensions of the destination are half those of the source, as is the case with mipmaps.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_FILTER_BOX']/*\"/>\t\n            <msdn-id>bb172692</msdn-id>\t\n            <unmanaged>D3DX10_FILTER_BOX</unmanaged>\t\n            <unmanaged-short>D3DX10_FILTER_BOX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FilterFlags.MirrorU\">\n            <summary>\t\n            <dd> <p>Pixels off the edge of the texture on the u-axis should be mirrored, not wrapped.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_FILTER_MIRROR_U']/*\"/>\t\n            <msdn-id>bb172692</msdn-id>\t\n            <unmanaged>D3DX10_FILTER_MIRROR_U</unmanaged>\t\n            <unmanaged-short>D3DX10_FILTER_MIRROR_U</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FilterFlags.MirrorV\">\n            <summary>\t\n            <dd> <p>Pixels off the edge of the texture on the v-axis should be mirrored, not wrapped.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_FILTER_MIRROR_V']/*\"/>\t\n            <msdn-id>bb172692</msdn-id>\t\n            <unmanaged>D3DX10_FILTER_MIRROR_V</unmanaged>\t\n            <unmanaged-short>D3DX10_FILTER_MIRROR_V</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FilterFlags.MirrorW\">\n            <summary>\t\n            <dd> <p>Pixels off the edge of the texture on the w-axis should be mirrored, not wrapped.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_FILTER_MIRROR_W']/*\"/>\t\n            <msdn-id>bb172692</msdn-id>\t\n            <unmanaged>D3DX10_FILTER_MIRROR_W</unmanaged>\t\n            <unmanaged-short>D3DX10_FILTER_MIRROR_W</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FilterFlags.Mirror\">\n            <summary>\t\n            <dd> <p>Specifying this flag is the same as specifying the <see cref=\"!:SharpDX.Direct3D9.Filter.MirrorU\"/>, <see cref=\"!:SharpDX.Direct3D9.Filter.MirrorV\"/>, and <see cref=\"!:SharpDX.Direct3D9.Filter.MirrorW\"/> flags.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_FILTER_MIRROR']/*\"/>\t\n            <msdn-id>bb172692</msdn-id>\t\n            <unmanaged>D3DX10_FILTER_MIRROR</unmanaged>\t\n            <unmanaged-short>D3DX10_FILTER_MIRROR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FilterFlags.Dither\">\n            <summary>\t\n            <dd> <p>The resulting image must be dithered using a 4x4 ordered dither algorithm. This happens when converting from one format to another.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_FILTER_DITHER']/*\"/>\t\n            <msdn-id>bb172692</msdn-id>\t\n            <unmanaged>D3DX10_FILTER_DITHER</unmanaged>\t\n            <unmanaged-short>D3DX10_FILTER_DITHER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FilterFlags.DitherDiffusion\">\n            <summary>\t\n            <dd> <p>Do diffuse dithering on the image when changing from one format to another.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_FILTER_DITHER_DIFFUSION']/*\"/>\t\n            <msdn-id>bb172692</msdn-id>\t\n            <unmanaged>D3DX10_FILTER_DITHER_DIFFUSION</unmanaged>\t\n            <unmanaged-short>D3DX10_FILTER_DITHER_DIFFUSION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FilterFlags.SRgbIn\">\n            <summary>\t\n            <dd> <p>Input data is in standard RGB (sRGB) color space. See remarks.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_FILTER_SRGB_IN']/*\"/>\t\n            <msdn-id>bb172692</msdn-id>\t\n            <unmanaged>D3DX10_FILTER_SRGB_IN</unmanaged>\t\n            <unmanaged-short>D3DX10_FILTER_SRGB_IN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FilterFlags.SRgbOut\">\n            <summary>\t\n            <dd> <p>Output data is in standard RGB (sRGB) color space. See remarks.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_FILTER_SRGB_OUT']/*\"/>\t\n            <msdn-id>bb172692</msdn-id>\t\n            <unmanaged>D3DX10_FILTER_SRGB_OUT</unmanaged>\t\n            <unmanaged-short>D3DX10_FILTER_SRGB_OUT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FilterFlags.SRgb\">\n            <summary>\t\n            <dd> <p>Same as specifying <see cref=\"!:SharpDX.Direct3D9.Filter.SrgbIn\"/> | <see cref=\"!:SharpDX.Direct3D9.Filter.SrgbOut\"/>. See remarks.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_FILTER_SRGB']/*\"/>\t\n            <msdn-id>bb172692</msdn-id>\t\n            <unmanaged>D3DX10_FILTER_SRGB</unmanaged>\t\n            <unmanaged-short>D3DX10_FILTER_SRGB</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.FilterType\">\n            <summary>\t\n            <p>Types of magnification or minification sampler filters.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_FILTER_TYPE']/*\"/>\t\n            <msdn-id>bb205061</msdn-id>\t\n            <unmanaged>D3D10_FILTER_TYPE</unmanaged>\t\n            <unmanaged-short>D3D10_FILTER_TYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FilterType.Point\">\n            <summary>\t\n            <dd> <p>Point filtering used as a texture magnification or minification filter. The texel with coordinates nearest to the desired pixel value is used. The texture filter to be used between mipmap levels is nearest-point mipmap filtering. The rasterizer uses the color from the texel of the nearest mipmap texture. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_FILTER_TYPE_POINT']/*\"/>\t\n            <msdn-id>bb205061</msdn-id>\t\n            <unmanaged>D3D10_FILTER_TYPE_POINT</unmanaged>\t\n            <unmanaged-short>D3D10_FILTER_TYPE_POINT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FilterType.Linear\">\n            <summary>\t\n            <dd> <p>Bilinear interpolation filtering used as a texture magnification or minification filter. A weighted average of a 2 x 2 area of texels surrounding the desired pixel is used. The texture filter to use between mipmap levels is trilinear mipmap interpolation. The rasterizer linearly interpolates pixel color, using the texels of the two nearest mipmap textures. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_FILTER_TYPE_LINEAR']/*\"/>\t\n            <msdn-id>bb205061</msdn-id>\t\n            <unmanaged>D3D10_FILTER_TYPE_LINEAR</unmanaged>\t\n            <unmanaged-short>D3D10_FILTER_TYPE_LINEAR</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.FormatSupport\">\n            <summary>\t\n            <p>Which resources are supported for a given format and given device (see <strong><see cref=\"M:SharpDX.Direct3D10.Device.CheckFormatSupport(SharpDX.DXGI.Format)\"/></strong>).</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_FORMAT_SUPPORT']/*\"/>\t\n            <msdn-id>bb205063</msdn-id>\t\n            <unmanaged>D3D10_FORMAT_SUPPORT</unmanaged>\t\n            <unmanaged-short>D3D10_FORMAT_SUPPORT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FormatSupport.Buffer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_FORMAT_SUPPORT_BUFFER']/*\"/>\t\n            <unmanaged>D3D10_FORMAT_SUPPORT_BUFFER</unmanaged>\t\n            <unmanaged-short>D3D10_FORMAT_SUPPORT_BUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FormatSupport.InputAssemblyVertexBuffer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_FORMAT_SUPPORT_IA_VERTEX_BUFFER']/*\"/>\t\n            <unmanaged>D3D10_FORMAT_SUPPORT_IA_VERTEX_BUFFER</unmanaged>\t\n            <unmanaged-short>D3D10_FORMAT_SUPPORT_IA_VERTEX_BUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FormatSupport.InputAssemblyIndexBuffer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_FORMAT_SUPPORT_IA_INDEX_BUFFER']/*\"/>\t\n            <unmanaged>D3D10_FORMAT_SUPPORT_IA_INDEX_BUFFER</unmanaged>\t\n            <unmanaged-short>D3D10_FORMAT_SUPPORT_IA_INDEX_BUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FormatSupport.StreamOutputBuffer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_FORMAT_SUPPORT_SO_BUFFER']/*\"/>\t\n            <unmanaged>D3D10_FORMAT_SUPPORT_SO_BUFFER</unmanaged>\t\n            <unmanaged-short>D3D10_FORMAT_SUPPORT_SO_BUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FormatSupport.Texture1D\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_FORMAT_SUPPORT_TEXTURE1D']/*\"/>\t\n            <unmanaged>D3D10_FORMAT_SUPPORT_TEXTURE1D</unmanaged>\t\n            <unmanaged-short>D3D10_FORMAT_SUPPORT_TEXTURE1D</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FormatSupport.Texture2D\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_FORMAT_SUPPORT_TEXTURE2D']/*\"/>\t\n            <unmanaged>D3D10_FORMAT_SUPPORT_TEXTURE2D</unmanaged>\t\n            <unmanaged-short>D3D10_FORMAT_SUPPORT_TEXTURE2D</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FormatSupport.Texture3D\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_FORMAT_SUPPORT_TEXTURE3D']/*\"/>\t\n            <unmanaged>D3D10_FORMAT_SUPPORT_TEXTURE3D</unmanaged>\t\n            <unmanaged-short>D3D10_FORMAT_SUPPORT_TEXTURE3D</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FormatSupport.TextureCube\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_FORMAT_SUPPORT_TEXTURECUBE']/*\"/>\t\n            <unmanaged>D3D10_FORMAT_SUPPORT_TEXTURECUBE</unmanaged>\t\n            <unmanaged-short>D3D10_FORMAT_SUPPORT_TEXTURECUBE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FormatSupport.ShaderLoad\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_FORMAT_SUPPORT_SHADER_LOAD']/*\"/>\t\n            <unmanaged>D3D10_FORMAT_SUPPORT_SHADER_LOAD</unmanaged>\t\n            <unmanaged-short>D3D10_FORMAT_SUPPORT_SHADER_LOAD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FormatSupport.ShaderSample\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_FORMAT_SUPPORT_SHADER_SAMPLE']/*\"/>\t\n            <unmanaged>D3D10_FORMAT_SUPPORT_SHADER_SAMPLE</unmanaged>\t\n            <unmanaged-short>D3D10_FORMAT_SUPPORT_SHADER_SAMPLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FormatSupport.ShaderSampleComparison\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_FORMAT_SUPPORT_SHADER_SAMPLE_COMPARISON']/*\"/>\t\n            <unmanaged>D3D10_FORMAT_SUPPORT_SHADER_SAMPLE_COMPARISON</unmanaged>\t\n            <unmanaged-short>D3D10_FORMAT_SUPPORT_SHADER_SAMPLE_COMPARISON</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FormatSupport.ShaderSampleMonoText\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_FORMAT_SUPPORT_SHADER_SAMPLE_MONO_TEXT']/*\"/>\t\n            <unmanaged>D3D10_FORMAT_SUPPORT_SHADER_SAMPLE_MONO_TEXT</unmanaged>\t\n            <unmanaged-short>D3D10_FORMAT_SUPPORT_SHADER_SAMPLE_MONO_TEXT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FormatSupport.Mip\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_FORMAT_SUPPORT_MIP']/*\"/>\t\n            <unmanaged>D3D10_FORMAT_SUPPORT_MIP</unmanaged>\t\n            <unmanaged-short>D3D10_FORMAT_SUPPORT_MIP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FormatSupport.MipAutogen\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_FORMAT_SUPPORT_MIP_AUTOGEN']/*\"/>\t\n            <unmanaged>D3D10_FORMAT_SUPPORT_MIP_AUTOGEN</unmanaged>\t\n            <unmanaged-short>D3D10_FORMAT_SUPPORT_MIP_AUTOGEN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FormatSupport.RenderTarget\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_FORMAT_SUPPORT_RENDER_TARGET']/*\"/>\t\n            <unmanaged>D3D10_FORMAT_SUPPORT_RENDER_TARGET</unmanaged>\t\n            <unmanaged-short>D3D10_FORMAT_SUPPORT_RENDER_TARGET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FormatSupport.Blendable\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_FORMAT_SUPPORT_BLENDABLE']/*\"/>\t\n            <unmanaged>D3D10_FORMAT_SUPPORT_BLENDABLE</unmanaged>\t\n            <unmanaged-short>D3D10_FORMAT_SUPPORT_BLENDABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FormatSupport.DepthStencil\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_FORMAT_SUPPORT_DEPTH_STENCIL']/*\"/>\t\n            <unmanaged>D3D10_FORMAT_SUPPORT_DEPTH_STENCIL</unmanaged>\t\n            <unmanaged-short>D3D10_FORMAT_SUPPORT_DEPTH_STENCIL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FormatSupport.CpuLockable\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_FORMAT_SUPPORT_CPU_LOCKABLE']/*\"/>\t\n            <unmanaged>D3D10_FORMAT_SUPPORT_CPU_LOCKABLE</unmanaged>\t\n            <unmanaged-short>D3D10_FORMAT_SUPPORT_CPU_LOCKABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FormatSupport.MultisampleResolve\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_FORMAT_SUPPORT_MULTISAMPLE_RESOLVE']/*\"/>\t\n            <unmanaged>D3D10_FORMAT_SUPPORT_MULTISAMPLE_RESOLVE</unmanaged>\t\n            <unmanaged-short>D3D10_FORMAT_SUPPORT_MULTISAMPLE_RESOLVE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FormatSupport.Display\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_FORMAT_SUPPORT_DISPLAY']/*\"/>\t\n            <unmanaged>D3D10_FORMAT_SUPPORT_DISPLAY</unmanaged>\t\n            <unmanaged-short>D3D10_FORMAT_SUPPORT_DISPLAY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FormatSupport.CastWithinBitLayout\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_FORMAT_SUPPORT_CAST_WITHIN_BIT_LAYOUT']/*\"/>\t\n            <unmanaged>D3D10_FORMAT_SUPPORT_CAST_WITHIN_BIT_LAYOUT</unmanaged>\t\n            <unmanaged-short>D3D10_FORMAT_SUPPORT_CAST_WITHIN_BIT_LAYOUT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FormatSupport.MultisampleRenderTarget\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_FORMAT_SUPPORT_MULTISAMPLE_RENDERTARGET']/*\"/>\t\n            <unmanaged>D3D10_FORMAT_SUPPORT_MULTISAMPLE_RENDERTARGET</unmanaged>\t\n            <unmanaged-short>D3D10_FORMAT_SUPPORT_MULTISAMPLE_RENDERTARGET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FormatSupport.MultisampleLoad\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_FORMAT_SUPPORT_MULTISAMPLE_LOAD']/*\"/>\t\n            <unmanaged>D3D10_FORMAT_SUPPORT_MULTISAMPLE_LOAD</unmanaged>\t\n            <unmanaged-short>D3D10_FORMAT_SUPPORT_MULTISAMPLE_LOAD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FormatSupport.ShaderGather\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_FORMAT_SUPPORT_SHADER_GATHER']/*\"/>\t\n            <unmanaged>D3D10_FORMAT_SUPPORT_SHADER_GATHER</unmanaged>\t\n            <unmanaged-short>D3D10_FORMAT_SUPPORT_SHADER_GATHER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FormatSupport.BackBufferCast\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_FORMAT_SUPPORT_BACK_BUFFER_CAST']/*\"/>\t\n            <unmanaged>D3D10_FORMAT_SUPPORT_BACK_BUFFER_CAST</unmanaged>\t\n            <unmanaged-short>D3D10_FORMAT_SUPPORT_BACK_BUFFER_CAST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FormatSupport.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.Channel\">\n            <summary>\t\n            <p>These flags are used by functions which operate on one or more channels in a texture.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_CHANNEL_FLAG']/*\"/>\t\n            <msdn-id>bb172690</msdn-id>\t\n            <unmanaged>D3DX10_CHANNEL_FLAG</unmanaged>\t\n            <unmanaged-short>D3DX10_CHANNEL_FLAG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.Channel.Red\">\n            <summary>\t\n            <dd> <p>Indicates the red channel should be used.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_CHANNEL_RED']/*\"/>\t\n            <msdn-id>bb172690</msdn-id>\t\n            <unmanaged>D3DX10_CHANNEL_RED</unmanaged>\t\n            <unmanaged-short>D3DX10_CHANNEL_RED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.Channel.Blue\">\n            <summary>\t\n            <dd> <p>Indicates the blue channel should be used.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_CHANNEL_BLUE']/*\"/>\t\n            <msdn-id>bb172690</msdn-id>\t\n            <unmanaged>D3DX10_CHANNEL_BLUE</unmanaged>\t\n            <unmanaged-short>D3DX10_CHANNEL_BLUE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.Channel.Green\">\n            <summary>\t\n            <dd> <p>Indicates the green channel should be used.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_CHANNEL_GREEN']/*\"/>\t\n            <msdn-id>bb172690</msdn-id>\t\n            <unmanaged>D3DX10_CHANNEL_GREEN</unmanaged>\t\n            <unmanaged-short>D3DX10_CHANNEL_GREEN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.Channel.Alpha\">\n            <summary>\t\n            <dd> <p>Indicates the alpha channel should be used.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_CHANNEL_ALPHA']/*\"/>\t\n            <msdn-id>bb172690</msdn-id>\t\n            <unmanaged>D3DX10_CHANNEL_ALPHA</unmanaged>\t\n            <unmanaged-short>D3DX10_CHANNEL_ALPHA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.Channel.Luminance\">\n            <summary>\t\n            <dd> <p>Indicates the luminaces of the red, green, and blue channels should be used.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_CHANNEL_LUMINANCE']/*\"/>\t\n            <msdn-id>bb172690</msdn-id>\t\n            <unmanaged>D3DX10_CHANNEL_LUMINANCE</unmanaged>\t\n            <unmanaged-short>D3DX10_CHANNEL_LUMINANCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.Channel.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.ImageFileFormat\">\n            <summary>\t\n            <p>Image file formats supported by D3DXCreatexxx and D3DX10Savexxx functions.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>See Types of Bitmaps (GDI+) for more information on some of these formats.</p><p>D3DX10 makes use of the Windows Imaging Component to implement the majority of the supported bitmap file types. See Windows Imaging Component Overview for additional information.\t\n            </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_IMAGE_FILE_FORMAT']/*\"/>\t\n            <msdn-id>bb172694</msdn-id>\t\n            <unmanaged>D3DX10_IMAGE_FILE_FORMAT</unmanaged>\t\n            <unmanaged-short>D3DX10_IMAGE_FILE_FORMAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ImageFileFormat.Bmp\">\n            <summary>\t\n            <dd> <p>Windows bitmap (BMP) file format. Contains a header that describes the resolution of the device on which the rectangle of pixels was created, the dimensions of the rectangle, the size of the array of bits, a logical palette, and an array of bits that defines the relationship between pixels in the bitmapped image and entries in the logical palette. The file extension for this format is .bmp.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_IFF_BMP']/*\"/>\t\n            <msdn-id>bb172694</msdn-id>\t\n            <unmanaged>D3DX10_IFF_BMP</unmanaged>\t\n            <unmanaged-short>D3DX10_IFF_BMP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ImageFileFormat.Jpg\">\n            <summary>\t\n            <dd> <p>Joint Photographic Experts Group (JPEG) compressed file format. Specifies variable compression of 24-bit RGB color and 8-bit gray-scale Tagged Image File Format (TIFF) image document files. The file extension for this format is .jpg.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_IFF_JPG']/*\"/>\t\n            <msdn-id>bb172694</msdn-id>\t\n            <unmanaged>D3DX10_IFF_JPG</unmanaged>\t\n            <unmanaged-short>D3DX10_IFF_JPG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ImageFileFormat.Png\">\n            <summary>\t\n            <dd> <p>Portable Network Graphics (PNG) file format. A non-proprietary bitmap format using lossless compression. The file extension for this format is .png.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_IFF_PNG']/*\"/>\t\n            <msdn-id>bb172694</msdn-id>\t\n            <unmanaged>D3DX10_IFF_PNG</unmanaged>\t\n            <unmanaged-short>D3DX10_IFF_PNG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ImageFileFormat.Dds\">\n            <summary>\t\n            <dd> <p>DirectDraw surface (DDS) file format. Stores textures, volume textures, and cubic environment maps, with or without mipmap levels, and with or without pixel compression. The file extension for this format is .dds.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_IFF_DDS']/*\"/>\t\n            <msdn-id>bb172694</msdn-id>\t\n            <unmanaged>D3DX10_IFF_DDS</unmanaged>\t\n            <unmanaged-short>D3DX10_IFF_DDS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ImageFileFormat.Tiff\">\n            <summary>\t\n            <dd> <p>Tagged Image File Format (TIFF). The file extensions for this format are .tif and .tiff.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_IFF_TIFF']/*\"/>\t\n            <msdn-id>bb172694</msdn-id>\t\n            <unmanaged>D3DX10_IFF_TIFF</unmanaged>\t\n            <unmanaged-short>D3DX10_IFF_TIFF</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ImageFileFormat.Gif\">\n            <summary>\t\n            <dd> <p>Graphics Interchange Format (GIF).The file extension for this format is .gif.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_IFF_GIF']/*\"/>\t\n            <msdn-id>bb172694</msdn-id>\t\n            <unmanaged>D3DX10_IFF_GIF</unmanaged>\t\n            <unmanaged-short>D3DX10_IFF_GIF</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ImageFileFormat.Wmp\">\n            <summary>\t\n            <dd> <p>Windows Media Photo format (WMP). This format is also known as HD Photo and JPEG XR. The file extensions for this format are .hdp, .jxr, and .wdp.</p> <p>To work properly, <strong><see cref=\"F:SharpDX.Direct3D10.ImageFileFormat.Wmp\"/></strong> requires that you initialize COM. Therefore, call <strong>CoInitialize</strong> or <strong>CoInitializeEx</strong> in your application before you call D3DX.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_IFF_WMP']/*\"/>\t\n            <msdn-id>bb172694</msdn-id>\t\n            <unmanaged>D3DX10_IFF_WMP</unmanaged>\t\n            <unmanaged-short>D3DX10_IFF_WMP</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.InputClassification\">\n            <summary>\t\n            <p>Type of data contained in an input slot.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Use these values to specify the type of data for a particular input element (see <strong><see cref=\"T:SharpDX.Direct3D10.InputElement\"/></strong>) of an input-layout object.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_INPUT_CLASSIFICATION']/*\"/>\t\n            <msdn-id>bb205315</msdn-id>\t\n            <unmanaged>D3D10_INPUT_CLASSIFICATION</unmanaged>\t\n            <unmanaged-short>D3D10_INPUT_CLASSIFICATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.InputClassification.PerVertexData\">\n            <summary>\t\n            <dd> <p>Input data is per-vertex data.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_INPUT_PER_VERTEX_DATA']/*\"/>\t\n            <msdn-id>bb205315</msdn-id>\t\n            <unmanaged>D3D10_INPUT_PER_VERTEX_DATA</unmanaged>\t\n            <unmanaged-short>D3D10_INPUT_PER_VERTEX_DATA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.InputClassification.PerInstanceData\">\n            <summary>\t\n            <dd> <p>Input data is per-instance data.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_INPUT_PER_INSTANCE_DATA']/*\"/>\t\n            <msdn-id>bb205315</msdn-id>\t\n            <unmanaged>D3D10_INPUT_PER_INSTANCE_DATA</unmanaged>\t\n            <unmanaged-short>D3D10_INPUT_PER_INSTANCE_DATA</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.MapFlags\">\n            <summary>\t\n            <p>Specifies how the CPU should respond when Map is called on a resource being used by the GPU.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This enumeration is used by <strong><see cref=\"M:SharpDX.Direct3D10.Buffer.Map(SharpDX.Direct3D10.MapMode)\"/></strong>, <strong><see cref=\"M:SharpDX.Direct3D10.Texture1D.Map(System.Int32,SharpDX.Direct3D10.MapMode,SharpDX.Direct3D10.MapFlags,System.IntPtr@)\"/></strong>, <strong><see cref=\"M:SharpDX.Direct3D10.Texture2D.Map(System.Int32,SharpDX.Direct3D10.MapMode,SharpDX.Direct3D10.MapFlags,SharpDX.DataRectangle@)\"/></strong>, and <strong><see cref=\"M:SharpDX.Direct3D10.Texture3D.Map(System.Int32,SharpDX.Direct3D10.MapMode,SharpDX.Direct3D10.MapFlags,SharpDX.DataBox@)\"/></strong>.</p><p><see cref=\"F:SharpDX.Direct3D10.MapFlags.DoNotWait\"/> cannot be used with <strong><see cref=\"F:SharpDX.Direct3D10.MapMode.WriteDiscard\"/></strong> or <strong>D3D10_MAP_WRITE_NOOVERWRITE</strong>.</p><p>For more information about potential conflicts between the GPU and CPU during resource mapping, see Copying and Accessing Resource Data (Direct3D 10).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MAP_FLAG']/*\"/>\t\n            <msdn-id>bb205321</msdn-id>\t\n            <unmanaged>D3D10_MAP_FLAG</unmanaged>\t\n            <unmanaged-short>D3D10_MAP_FLAG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MapFlags.DoNotWait\">\n            <summary>\t\n            <dd> <p>Specifies that Map should return <strong><see cref=\"F:SharpDX.DXGI.ResultCode.WasStillDrawing\"/></strong> when the GPU blocks the CPU from accessing a resource.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MAP_FLAG_DO_NOT_WAIT']/*\"/>\t\n            <msdn-id>bb205321</msdn-id>\t\n            <unmanaged>D3D10_MAP_FLAG_DO_NOT_WAIT</unmanaged>\t\n            <unmanaged-short>D3D10_MAP_FLAG_DO_NOT_WAIT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MapFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.MapMode\">\n            <summary>\t\n            <p>Identifies a resource to be accessed for reading and writing by the CPU. Applications may combine one or more of these flags.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This enumeration is used in <strong><see cref=\"M:SharpDX.Direct3D10.Buffer.Map(SharpDX.Direct3D10.MapMode)\"/></strong>, <strong><see cref=\"M:SharpDX.Direct3D10.Texture1D.Map(System.Int32,SharpDX.Direct3D10.MapMode,SharpDX.Direct3D10.MapFlags,System.IntPtr@)\"/></strong>, <strong><see cref=\"M:SharpDX.Direct3D10.Texture2D.Map(System.Int32,SharpDX.Direct3D10.MapMode,SharpDX.Direct3D10.MapFlags,SharpDX.DataRectangle@)\"/></strong>, and <strong><see cref=\"M:SharpDX.Direct3D10.Texture3D.Map(System.Int32,SharpDX.Direct3D10.MapMode,SharpDX.Direct3D10.MapFlags,SharpDX.DataBox@)\"/></strong>.</p><p>These remarks are divided into the following topics:</p><p> </p><ul> <li>Meaning</li> <li>Common</li> </ul>Meaning of <see cref=\"F:SharpDX.Direct3D10.MapMode.WriteNoOverwrite\"/><p><see cref=\"F:SharpDX.Direct3D10.MapMode.WriteNoOverwrite\"/> signifies that the application promises not to write to data that the Input Assembler (IA) stage is using. In exchange, the GPU allows the application to write to other parts of the same buffer.  The application must ensure that it does not write over any data in use by the IA stage.</p><p>For example, consider the buffer illustrated in the following diagram. If a Draw call has been issued that uses vertices 4-6, an application that calls Map on this buffer must ensure that it does not write to the vertices that the Draw call will access during rendering.</p><p>However, ensuring this can be difficult, because the GPU is often many frames behind the CPU in terms of which frame it is currently processing. Keeping track of which sections of a resource are being used because of calls made 2 to 5 frames ago is difficult and error-prone. Because of this, it is recommended that applications only write to the uninitialized portions of a resource when using <see cref=\"F:SharpDX.Direct3D10.MapMode.WriteNoOverwrite\"/>.</p>Common Usage of <see cref=\"F:SharpDX.Direct3D10.MapMode.WriteDiscard\"/> with <see cref=\"F:SharpDX.Direct3D10.MapMode.WriteNoOverwrite\"/><p><see cref=\"F:SharpDX.Direct3D10.MapMode.WriteDiscard\"/> and <see cref=\"F:SharpDX.Direct3D10.MapMode.WriteNoOverwrite\"/> are normally used in conjunction with dynamic index/vertex buffers, although they can also be used with dynamic textures.</p><p>A common use of these two flags involves filling dynamic index/vertex buffers with geometry that can be seen from the camera's current position. The first time that data is entered into the buffer on a given frame, Map is called with <see cref=\"F:SharpDX.Direct3D10.MapMode.WriteDiscard\"/>; doing so invalidates the previous contents of the buffer. The buffer is then filled with all available data.</p><p>Subsequent writes to the buffer within the same frame should use <see cref=\"F:SharpDX.Direct3D10.MapMode.WriteNoOverwrite\"/>. This will enable the CPU to access a resource that is potentially being used by the GPU as long as the restrictions described previously are respected.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MAP']/*\"/>\t\n            <msdn-id>bb205318</msdn-id>\t\n            <unmanaged>D3D10_MAP</unmanaged>\t\n            <unmanaged-short>D3D10_MAP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MapMode.Read\">\n            <summary>\t\n            <dd> <p>Resource is mapped for reading. The resource must have been created with read access (see <strong><see cref=\"F:SharpDX.Direct3D10.CpuAccessFlags.Read\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MAP_READ']/*\"/>\t\n            <msdn-id>bb205318</msdn-id>\t\n            <unmanaged>D3D10_MAP_READ</unmanaged>\t\n            <unmanaged-short>D3D10_MAP_READ</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MapMode.Write\">\n            <summary>\t\n            <dd> <p>Resource is mapped for writing. The resource must have been created with write access (see <strong><see cref=\"F:SharpDX.Direct3D10.CpuAccessFlags.Write\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MAP_WRITE']/*\"/>\t\n            <msdn-id>bb205318</msdn-id>\t\n            <unmanaged>D3D10_MAP_WRITE</unmanaged>\t\n            <unmanaged-short>D3D10_MAP_WRITE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MapMode.ReadWrite\">\n            <summary>\t\n            <dd> <p>Resource is mapped for reading and writing. The resource must have been created with read and write access (see <strong><see cref=\"F:SharpDX.Direct3D10.CpuAccessFlags.Read\"/> and <see cref=\"F:SharpDX.Direct3D10.CpuAccessFlags.Write\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MAP_READ_WRITE']/*\"/>\t\n            <msdn-id>bb205318</msdn-id>\t\n            <unmanaged>D3D10_MAP_READ_WRITE</unmanaged>\t\n            <unmanaged-short>D3D10_MAP_READ_WRITE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MapMode.WriteDiscard\">\n            <summary>\t\n            <dd> <p>Resource is mapped for writing; the previous contents of the resource will be undefined. The resource must have been created with write access (see <strong><see cref=\"F:SharpDX.Direct3D10.CpuAccessFlags.Write\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MAP_WRITE_DISCARD']/*\"/>\t\n            <msdn-id>bb205318</msdn-id>\t\n            <unmanaged>D3D10_MAP_WRITE_DISCARD</unmanaged>\t\n            <unmanaged-short>D3D10_MAP_WRITE_DISCARD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MapMode.WriteNoOverwrite\">\n            <summary>\t\n            <dd> <p>Resource is mapped for writing; the existing contents of the resource cannot be overwritten (see Remarks). This flag is only valid on vertex and index buffers. The resource must have been created with write access (see <strong><see cref=\"F:SharpDX.Direct3D10.CpuAccessFlags.Write\"/></strong>). Cannot be used on a resource created with the <strong><see cref=\"F:SharpDX.Direct3D10.BindFlags.ConstantBuffer\"/></strong> flag.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MAP_WRITE_NO_OVERWRITE']/*\"/>\t\n            <msdn-id>bb205318</msdn-id>\t\n            <unmanaged>D3D10_MAP_WRITE_NO_OVERWRITE</unmanaged>\t\n            <unmanaged-short>D3D10_MAP_WRITE_NO_OVERWRITE</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.MeshDiscardFlags\">\n            <summary>\t\n            <p>Specifies which pieces of mesh data to discard from the device. Used with <strong><see cref=\"M:SharpDX.Direct3D10.Mesh.Discard(SharpDX.Direct3D10.MeshDiscardFlags)\"/></strong>.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_MESH_DISCARD_FLAGS']/*\"/>\t\n            <msdn-id>bb172700</msdn-id>\t\n            <unmanaged>D3DX10_MESH_DISCARD_FLAGS</unmanaged>\t\n            <unmanaged-short>D3DX10_MESH_DISCARD_FLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MeshDiscardFlags.AttributeBuffer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_MESH_DISCARD_ATTRIBUTE_BUFFER']/*\"/>\t\n            <unmanaged>D3DX10_MESH_DISCARD_ATTRIBUTE_BUFFER</unmanaged>\t\n            <unmanaged-short>D3DX10_MESH_DISCARD_ATTRIBUTE_BUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MeshDiscardFlags.AttributeTable\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_MESH_DISCARD_ATTRIBUTE_TABLE']/*\"/>\t\n            <unmanaged>D3DX10_MESH_DISCARD_ATTRIBUTE_TABLE</unmanaged>\t\n            <unmanaged-short>D3DX10_MESH_DISCARD_ATTRIBUTE_TABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MeshDiscardFlags.PointRepresentation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_MESH_DISCARD_POINTREPS']/*\"/>\t\n            <unmanaged>D3DX10_MESH_DISCARD_POINTREPS</unmanaged>\t\n            <unmanaged-short>D3DX10_MESH_DISCARD_POINTREPS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MeshDiscardFlags.WithAdjacency\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_MESH_DISCARD_ADJACENCY']/*\"/>\t\n            <unmanaged>D3DX10_MESH_DISCARD_ADJACENCY</unmanaged>\t\n            <unmanaged-short>D3DX10_MESH_DISCARD_ADJACENCY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MeshDiscardFlags.DeviceBuffers\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_MESH_DISCARD_DEVICE_BUFFERS']/*\"/>\t\n            <unmanaged>D3DX10_MESH_DISCARD_DEVICE_BUFFERS</unmanaged>\t\n            <unmanaged-short>D3DX10_MESH_DISCARD_DEVICE_BUFFERS</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.MeshFlags\">\n            <summary>\t\n            <p>Flags used to specify creation options for a mesh.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>A 32-bit mesh (<see cref=\"!:SharpDX.Direct3D9.MeshFlags.Use32Bit\"/>) can theoretically support (232)-1 faces and vertices. However, allocating memory for a mesh that large on a 32-bit operating system is not practical.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='_D3DX10_MESH']/*\"/>\t\n            <msdn-id>bb172698</msdn-id>\t\n            <unmanaged>_D3DX10_MESH</unmanaged>\t\n            <unmanaged-short>_D3DX10_MESH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MeshFlags.Has32BitIndices\">\n            <summary>\t\n            <dd> <p>The mesh has 32-bit indices instead of 16-bit indices. See Remarks.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_MESH_32_BIT']/*\"/>\t\n            <msdn-id>bb172698</msdn-id>\t\n            <unmanaged>D3DX10_MESH_32_BIT</unmanaged>\t\n            <unmanaged-short>D3DX10_MESH_32_BIT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MeshFlags.HasAdjacency\">\n            <summary>\t\n            <dd> <p>Signals that the mesh contains geometry shader adjacency data.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_MESH_GS_ADJACENCY']/*\"/>\t\n            <msdn-id>bb172698</msdn-id>\t\n            <unmanaged>D3DX10_MESH_GS_ADJACENCY</unmanaged>\t\n            <unmanaged-short>D3DX10_MESH_GS_ADJACENCY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MeshFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.MeshOptimizeFlags\">\n            <summary>\t\n            <p>Specifies the type of mesh optimization to be performed.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The <see cref=\"!:SharpDX.Direct3D9.MeshOptimizeFlags.StripReorder\"/> and <see cref=\"!:SharpDX.Direct3D9.MeshOptimizeFlags.VertexCache\"/> optimization flags are mutually exclusive.</p><p>The D3DXMESHOPT_SHAREVB flag has been removed from this enumeration. Use <see cref=\"!:SharpDX.Direct3D9.MeshFlags.VertexBufferShare\"/> instead, in D3DXMESH.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='_D3DX10_MESHOPT']/*\"/>\t\n            <msdn-id>bb172699</msdn-id>\t\n            <unmanaged>_D3DX10_MESHOPT</unmanaged>\t\n            <unmanaged-short>_D3DX10_MESHOPT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MeshOptimizeFlags.Compact\">\n            <summary>\t\n            <dd> <p>Reorders faces to remove unused vertices and faces.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_MESHOPT_COMPACT']/*\"/>\t\n            <msdn-id>bb172699</msdn-id>\t\n            <unmanaged>D3DX10_MESHOPT_COMPACT</unmanaged>\t\n            <unmanaged-short>D3DX10_MESHOPT_COMPACT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MeshOptimizeFlags.AttributeSort\">\n            <summary>\t\n            <dd> <p>Reorders faces to optimize for fewer attribute bundle state changes and enhanced DrawSubset performance.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_MESHOPT_ATTR_SORT']/*\"/>\t\n            <msdn-id>bb172699</msdn-id>\t\n            <unmanaged>D3DX10_MESHOPT_ATTR_SORT</unmanaged>\t\n            <unmanaged-short>D3DX10_MESHOPT_ATTR_SORT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MeshOptimizeFlags.VertexCache\">\n            <summary>\t\n            <dd> <p>Reorders faces to increase the cache hit rate of vertex caches.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_MESHOPT_VERTEX_CACHE']/*\"/>\t\n            <msdn-id>bb172699</msdn-id>\t\n            <unmanaged>D3DX10_MESHOPT_VERTEX_CACHE</unmanaged>\t\n            <unmanaged-short>D3DX10_MESHOPT_VERTEX_CACHE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MeshOptimizeFlags.StripReorder\">\n            <summary>\t\n            <dd> <p>Reorders faces to maximize length of adjacent triangles.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_MESHOPT_STRIP_REORDER']/*\"/>\t\n            <msdn-id>bb172699</msdn-id>\t\n            <unmanaged>D3DX10_MESHOPT_STRIP_REORDER</unmanaged>\t\n            <unmanaged-short>D3DX10_MESHOPT_STRIP_REORDER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MeshOptimizeFlags.IgnoreVertices\">\n            <summary>\t\n            <dd> <p>Optimize the faces only; do not optimize the vertices.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_MESHOPT_IGNORE_VERTS']/*\"/>\t\n            <msdn-id>bb172699</msdn-id>\t\n            <unmanaged>D3DX10_MESHOPT_IGNORE_VERTS</unmanaged>\t\n            <unmanaged-short>D3DX10_MESHOPT_IGNORE_VERTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MeshOptimizeFlags.DoNotSplit\">\n            <summary>\t\n            <dd> <p>While attribute sorting, do not split vertices that are shared between attribute groups.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_MESHOPT_DO_NOT_SPLIT']/*\"/>\t\n            <msdn-id>bb172699</msdn-id>\t\n            <unmanaged>D3DX10_MESHOPT_DO_NOT_SPLIT</unmanaged>\t\n            <unmanaged-short>D3DX10_MESHOPT_DO_NOT_SPLIT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MeshOptimizeFlags.DeviceIndependent\">\n            <summary>\t\n            <dd> <p>Affects the vertex cache size. Using this flag specifies a default vertex cache size that works well on legacy hardware.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_MESHOPT_DEVICE_INDEPENDENT']/*\"/>\t\n            <msdn-id>bb172699</msdn-id>\t\n            <unmanaged>D3DX10_MESHOPT_DEVICE_INDEPENDENT</unmanaged>\t\n            <unmanaged-short>D3DX10_MESHOPT_DEVICE_INDEPENDENT</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.MessageCategory\">\n            <summary>\t\n            <p>Categories of debug messages. This will identify the category of a message when retrieving a message with <strong><see cref=\"M:SharpDX.Direct3D10.InfoQueue.GetMessage(System.Int64,System.IntPtr,SharpDX.PointerSize@)\"/></strong> and when adding a message with <strong><see cref=\"M:SharpDX.Direct3D10.InfoQueue.AddMessage(SharpDX.Direct3D10.MessageCategory,SharpDX.Direct3D10.MessageSeverity,SharpDX.Direct3D10.MessageId,System.String)\"/></strong>. When creating an <strong>info queue filter</strong>, these values can be used to allow or deny any categories of messages to pass through the storage and retrieval filters.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This is part of the Information Queue feature. See <strong><see cref=\"T:SharpDX.Direct3D10.InfoQueue\"/> Interface</strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_CATEGORY']/*\"/>\t\n            <msdn-id>bb205323</msdn-id>\t\n            <unmanaged>D3D10_MESSAGE_CATEGORY</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_CATEGORY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageCategory.ApplicationDefined\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_CATEGORY_APPLICATION_DEFINED']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_CATEGORY_APPLICATION_DEFINED</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_CATEGORY_APPLICATION_DEFINED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageCategory.Miscellaneous\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_CATEGORY_MISCELLANEOUS']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_CATEGORY_MISCELLANEOUS</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_CATEGORY_MISCELLANEOUS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageCategory.Initialization\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_CATEGORY_INITIALIZATION']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_CATEGORY_INITIALIZATION</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_CATEGORY_INITIALIZATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageCategory.Cleanup\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_CATEGORY_CLEANUP']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_CATEGORY_CLEANUP</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_CATEGORY_CLEANUP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageCategory.Compilation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_CATEGORY_COMPILATION']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_CATEGORY_COMPILATION</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_CATEGORY_COMPILATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageCategory.StateCreation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_CATEGORY_STATE_CREATION']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_CATEGORY_STATE_CREATION</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_CATEGORY_STATE_CREATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageCategory.StateSetting\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_CATEGORY_STATE_SETTING']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_CATEGORY_STATE_SETTING</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_CATEGORY_STATE_SETTING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageCategory.StateGetting\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_CATEGORY_STATE_GETTING']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_CATEGORY_STATE_GETTING</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_CATEGORY_STATE_GETTING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageCategory.ResourceManipulation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_CATEGORY_RESOURCE_MANIPULATION']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_CATEGORY_RESOURCE_MANIPULATION</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_CATEGORY_RESOURCE_MANIPULATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageCategory.Execution\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_CATEGORY_EXECUTION']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_CATEGORY_EXECUTION</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_CATEGORY_EXECUTION</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.MessageId\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.Unknown\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_UNKNOWN']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_UNKNOWN</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_UNKNOWN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceInputAssemblySetVertexBuffersHazard\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_HAZARD']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_HAZARD</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_HAZARD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceInputAssemblySetIndexBufferHazard\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_IASETINDEXBUFFER_HAZARD']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_IASETINDEXBUFFER_HAZARD</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_IASETINDEXBUFFER_HAZARD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceVertexShaderSetShaderResourcesHazard\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_VSSETSHADERRESOURCES_HAZARD']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_VSSETSHADERRESOURCES_HAZARD</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_VSSETSHADERRESOURCES_HAZARD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceVertexShaderSetConstantBuffersHazard\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_VSSETCONSTANTBUFFERS_HAZARD']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_VSSETCONSTANTBUFFERS_HAZARD</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_VSSETCONSTANTBUFFERS_HAZARD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceGeometryShaderSetShaderResourcesHazard\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_GSSETSHADERRESOURCES_HAZARD']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_GSSETSHADERRESOURCES_HAZARD</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_GSSETSHADERRESOURCES_HAZARD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceGeometryShaderSetConstantBuffersHazard\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_GSSETCONSTANTBUFFERS_HAZARD']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_GSSETCONSTANTBUFFERS_HAZARD</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_GSSETCONSTANTBUFFERS_HAZARD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DevicePixelShaderSetShaderResourcesHazard\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_PSSETSHADERRESOURCES_HAZARD']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_PSSETSHADERRESOURCES_HAZARD</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_PSSETSHADERRESOURCES_HAZARD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DevicePixelShaderSetConstantBuffersHazard\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_PSSETCONSTANTBUFFERS_HAZARD']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_PSSETCONSTANTBUFFERS_HAZARD</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_PSSETCONSTANTBUFFERS_HAZARD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceOutputMergerSetRenderTargetsHazard\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_OMSETRENDERTARGETS_HAZARD']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_OMSETRENDERTARGETS_HAZARD</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_OMSETRENDERTARGETS_HAZARD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceStreamOutputSetTargetsHazard\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_SOSETTARGETS_HAZARD']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_SOSETTARGETS_HAZARD</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_SOSETTARGETS_HAZARD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.StringFromApplication\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_STRING_FROM_APPLICATION']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_STRING_FROM_APPLICATION</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_STRING_FROM_APPLICATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CorruptedThis\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CORRUPTED_THIS']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CORRUPTED_THIS</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CORRUPTED_THIS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CorruptedParameter1\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CORRUPTED_PARAMETER1']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CORRUPTED_PARAMETER1</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CORRUPTED_PARAMETER1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CorruptedParameter2\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CORRUPTED_PARAMETER2']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CORRUPTED_PARAMETER2</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CORRUPTED_PARAMETER2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CorruptedParameter3\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CORRUPTED_PARAMETER3']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CORRUPTED_PARAMETER3</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CORRUPTED_PARAMETER3</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CorruptedParameter4\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CORRUPTED_PARAMETER4']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CORRUPTED_PARAMETER4</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CORRUPTED_PARAMETER4</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CorruptedParameter5\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CORRUPTED_PARAMETER5']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CORRUPTED_PARAMETER5</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CORRUPTED_PARAMETER5</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CorruptedParameter6\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CORRUPTED_PARAMETER6']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CORRUPTED_PARAMETER6</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CORRUPTED_PARAMETER6</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CorruptedParameter7\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CORRUPTED_PARAMETER7']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CORRUPTED_PARAMETER7</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CORRUPTED_PARAMETER7</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CorruptedParameter8\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CORRUPTED_PARAMETER8']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CORRUPTED_PARAMETER8</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CORRUPTED_PARAMETER8</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CorruptedParameter9\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CORRUPTED_PARAMETER9']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CORRUPTED_PARAMETER9</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CORRUPTED_PARAMETER9</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CorruptedParameter10\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CORRUPTED_PARAMETER10']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CORRUPTED_PARAMETER10</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CORRUPTED_PARAMETER10</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CorruptedParameter11\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CORRUPTED_PARAMETER11']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CORRUPTED_PARAMETER11</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CORRUPTED_PARAMETER11</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CorruptedParameter12\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CORRUPTED_PARAMETER12']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CORRUPTED_PARAMETER12</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CORRUPTED_PARAMETER12</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CorruptedParameter13\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CORRUPTED_PARAMETER13']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CORRUPTED_PARAMETER13</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CORRUPTED_PARAMETER13</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CorruptedParameter14\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CORRUPTED_PARAMETER14']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CORRUPTED_PARAMETER14</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CORRUPTED_PARAMETER14</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CorruptedParameter15\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CORRUPTED_PARAMETER15']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CORRUPTED_PARAMETER15</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CORRUPTED_PARAMETER15</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CorruptedMultithreading\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CORRUPTED_MULTITHREADING']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CORRUPTED_MULTITHREADING</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CORRUPTED_MULTITHREADING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.MessageReportingOufOfMemory\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_MESSAGE_REPORTING_OUTOFMEMORY']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_MESSAGE_REPORTING_OUTOFMEMORY</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_MESSAGE_REPORTING_OUTOFMEMORY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.InputAssemblySetInputLayoutUnbindDeletingObject\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_IASETINPUTLAYOUT_UNBINDDELETINGOBJECT']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_IASETINPUTLAYOUT_UNBINDDELETINGOBJECT</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_IASETINPUTLAYOUT_UNBINDDELETINGOBJECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.InputAssemblySetVertexBuffersUnbindDeletingObject\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_IASETVERTEXBUFFERS_UNBINDDELETINGOBJECT']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_IASETVERTEXBUFFERS_UNBINDDELETINGOBJECT</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_IASETVERTEXBUFFERS_UNBINDDELETINGOBJECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.InputAssemblySetIndexBufferUnbindDeletingObject\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_IASETINDEXBUFFER_UNBINDDELETINGOBJECT']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_IASETINDEXBUFFER_UNBINDDELETINGOBJECT</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_IASETINDEXBUFFER_UNBINDDELETINGOBJECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.VertexShaderSetShaderUnbindDeletingObject\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_VSSETSHADER_UNBINDDELETINGOBJECT']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_VSSETSHADER_UNBINDDELETINGOBJECT</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_VSSETSHADER_UNBINDDELETINGOBJECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.VertexShaderSetShaderResourcesUnbindDeletingObject\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_VSSETSHADERRESOURCES_UNBINDDELETINGOBJECT']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_VSSETSHADERRESOURCES_UNBINDDELETINGOBJECT</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_VSSETSHADERRESOURCES_UNBINDDELETINGOBJECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.VertexShaderSetConstantBuffersUnbindDeletingObject\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_VSSETCONSTANTBUFFERS_UNBINDDELETINGOBJECT']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_VSSETCONSTANTBUFFERS_UNBINDDELETINGOBJECT</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_VSSETCONSTANTBUFFERS_UNBINDDELETINGOBJECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.VertexShaderSetSamplersUnbindDeletingObject\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_VSSETSAMPLERS_UNBINDDELETINGOBJECT']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_VSSETSAMPLERS_UNBINDDELETINGOBJECT</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_VSSETSAMPLERS_UNBINDDELETINGOBJECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.GeometryShaderSetShaderUnbindDeletingObject\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_GSSETSHADER_UNBINDDELETINGOBJECT']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_GSSETSHADER_UNBINDDELETINGOBJECT</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_GSSETSHADER_UNBINDDELETINGOBJECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.GeometryShaderSetShaderResourcesUnbindDeletingObject\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_GSSETSHADERRESOURCES_UNBINDDELETINGOBJECT']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_GSSETSHADERRESOURCES_UNBINDDELETINGOBJECT</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_GSSETSHADERRESOURCES_UNBINDDELETINGOBJECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.GeometryShaderSetConstantBuffersUnbindDeletingObject\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_GSSETCONSTANTBUFFERS_UNBINDDELETINGOBJECT']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_GSSETCONSTANTBUFFERS_UNBINDDELETINGOBJECT</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_GSSETCONSTANTBUFFERS_UNBINDDELETINGOBJECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.GeometryShaderSetSamplersUnbindDeletingObject\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_GSSETSAMPLERS_UNBINDDELETINGOBJECT']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_GSSETSAMPLERS_UNBINDDELETINGOBJECT</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_GSSETSAMPLERS_UNBINDDELETINGOBJECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.StreamOutputSetTargetsUnbindDeletingObject\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_SOSETTARGETS_UNBINDDELETINGOBJECT']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_SOSETTARGETS_UNBINDDELETINGOBJECT</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_SOSETTARGETS_UNBINDDELETINGOBJECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.PixelShaderSetShaderUnbindDeletingObject\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_PSSETSHADER_UNBINDDELETINGOBJECT']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_PSSETSHADER_UNBINDDELETINGOBJECT</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_PSSETSHADER_UNBINDDELETINGOBJECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.PixelShaderSetShaderResourcesUnbindDeletingObject\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_PSSETSHADERRESOURCES_UNBINDDELETINGOBJECT']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_PSSETSHADERRESOURCES_UNBINDDELETINGOBJECT</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_PSSETSHADERRESOURCES_UNBINDDELETINGOBJECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.PixelShaderSetConstantBuffersUnbindDeletingObject\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_PSSETCONSTANTBUFFERS_UNBINDDELETINGOBJECT']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_PSSETCONSTANTBUFFERS_UNBINDDELETINGOBJECT</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_PSSETCONSTANTBUFFERS_UNBINDDELETINGOBJECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.PixelShaderSetSamplersUnbindDeletingObject\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_PSSETSAMPLERS_UNBINDDELETINGOBJECT']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_PSSETSAMPLERS_UNBINDDELETINGOBJECT</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_PSSETSAMPLERS_UNBINDDELETINGOBJECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.RasterizerSetStateUnbindDeletingObject\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_RSSETSTATE_UNBINDDELETINGOBJECT']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_RSSETSTATE_UNBINDDELETINGOBJECT</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_RSSETSTATE_UNBINDDELETINGOBJECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.OutputMergerSetBlendStateUnbindDeletingObject\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_OMSETBLENDSTATE_UNBINDDELETINGOBJECT']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_OMSETBLENDSTATE_UNBINDDELETINGOBJECT</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_OMSETBLENDSTATE_UNBINDDELETINGOBJECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.OutputMergerSetDepthStencilStateUnbindDeletingObject\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_OMSETDEPTHSTENCILSTATE_UNBINDDELETINGOBJECT']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_OMSETDEPTHSTENCILSTATE_UNBINDDELETINGOBJECT</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_OMSETDEPTHSTENCILSTATE_UNBINDDELETINGOBJECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.OutputMergerSetRenderTargetsUnbindDeletingObject\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_OMSETRENDERTARGETS_UNBINDDELETINGOBJECT']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_OMSETRENDERTARGETS_UNBINDDELETINGOBJECT</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_OMSETRENDERTARGETS_UNBINDDELETINGOBJECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.SetPredicationUnbindDeletingObject\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_SETPREDICATION_UNBINDDELETINGOBJECT']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_SETPREDICATION_UNBINDDELETINGOBJECT</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_SETPREDICATION_UNBINDDELETINGOBJECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.GetPrivateDataMoreData\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_GETPRIVATEDATA_MOREDATA']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_GETPRIVATEDATA_MOREDATA</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_GETPRIVATEDATA_MOREDATA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.SetPrivateDataInvalidFreeData\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_SETPRIVATEDATA_INVALIDFREEDATA']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_SETPRIVATEDATA_INVALIDFREEDATA</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_SETPRIVATEDATA_INVALIDFREEDATA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.SetPrivateDataInvalidIUnknown\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_SETPRIVATEDATA_INVALIDIUNKNOWN']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_SETPRIVATEDATA_INVALIDIUNKNOWN</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_SETPRIVATEDATA_INVALIDIUNKNOWN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.SetPrivateDataInvalidFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_SETPRIVATEDATA_INVALIDFLAGS']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_SETPRIVATEDATA_INVALIDFLAGS</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_SETPRIVATEDATA_INVALIDFLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.SetPrivateDataChangingparams\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_SETPRIVATEDATA_CHANGINGPARAMS']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_SETPRIVATEDATA_CHANGINGPARAMS</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_SETPRIVATEDATA_CHANGINGPARAMS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.SetPrivateDataOufOfMemory\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_SETPRIVATEDATA_OUTOFMEMORY']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_SETPRIVATEDATA_OUTOFMEMORY</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_SETPRIVATEDATA_OUTOFMEMORY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateBufferUnrecognizedFormat\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEBUFFER_UNRECOGNIZEDFORMAT']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEBUFFER_UNRECOGNIZEDFORMAT</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEBUFFER_UNRECOGNIZEDFORMAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateBufferInvalidSamples\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEBUFFER_INVALIDSAMPLES']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEBUFFER_INVALIDSAMPLES</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEBUFFER_INVALIDSAMPLES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateBufferUnrecognizedUsage\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEBUFFER_UNRECOGNIZEDUSAGE']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEBUFFER_UNRECOGNIZEDUSAGE</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEBUFFER_UNRECOGNIZEDUSAGE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateBufferUnrecognizedBindFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEBUFFER_UNRECOGNIZEDBINDFLAGS']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEBUFFER_UNRECOGNIZEDBINDFLAGS</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEBUFFER_UNRECOGNIZEDBINDFLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateBufferUnrecognizedCpuAccessFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEBUFFER_UNRECOGNIZEDCPUACCESSFLAGS']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEBUFFER_UNRECOGNIZEDCPUACCESSFLAGS</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEBUFFER_UNRECOGNIZEDCPUACCESSFLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateBufferUnrecognizedMiscFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEBUFFER_UNRECOGNIZEDMISCFLAGS']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEBUFFER_UNRECOGNIZEDMISCFLAGS</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEBUFFER_UNRECOGNIZEDMISCFLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateBufferInvalidCpuAccessFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEBUFFER_INVALIDCPUACCESSFLAGS']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEBUFFER_INVALIDCPUACCESSFLAGS</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEBUFFER_INVALIDCPUACCESSFLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateBufferInvalidBindFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEBUFFER_INVALIDBINDFLAGS']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEBUFFER_INVALIDBINDFLAGS</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEBUFFER_INVALIDBINDFLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateBufferInvalidInitialData\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEBUFFER_INVALIDINITIALDATA']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEBUFFER_INVALIDINITIALDATA</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEBUFFER_INVALIDINITIALDATA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateBufferInvalidDimensions\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEBUFFER_INVALIDDIMENSIONS']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEBUFFER_INVALIDDIMENSIONS</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEBUFFER_INVALIDDIMENSIONS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateBufferInvalidMipLevels\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEBUFFER_INVALIDMIPLEVELS']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEBUFFER_INVALIDMIPLEVELS</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEBUFFER_INVALIDMIPLEVELS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateBufferInvalidMiscFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEBUFFER_INVALIDMISCFLAGS']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEBUFFER_INVALIDMISCFLAGS</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEBUFFER_INVALIDMISCFLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateBufferInvalidArgumentReturn\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEBUFFER_INVALIDARG_RETURN']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEBUFFER_INVALIDARG_RETURN</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEBUFFER_INVALIDARG_RETURN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateBufferOufOfMemoryReturn\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEBUFFER_OUTOFMEMORY_RETURN']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEBUFFER_OUTOFMEMORY_RETURN</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEBUFFER_OUTOFMEMORY_RETURN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateBufferNullDescription\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEBUFFER_NULLDESC']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEBUFFER_NULLDESC</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEBUFFER_NULLDESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateBufferInvalidConstantBufferBindingS\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEBUFFER_INVALIDCONSTANTBUFFERBINDINGS']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEBUFFER_INVALIDCONSTANTBUFFERBINDINGS</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEBUFFER_INVALIDCONSTANTBUFFERBINDINGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateBufferLargeAllOcation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEBUFFER_LARGEALLOCATION']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEBUFFER_LARGEALLOCATION</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEBUFFER_LARGEALLOCATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateTexture1DUnrecognizedFormat\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATETEXTURE1D_UNRECOGNIZEDFORMAT']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATETEXTURE1D_UNRECOGNIZEDFORMAT</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATETEXTURE1D_UNRECOGNIZEDFORMAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateTexture1DUnsupportedFormat\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATETEXTURE1D_UNSUPPORTEDFORMAT']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATETEXTURE1D_UNSUPPORTEDFORMAT</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATETEXTURE1D_UNSUPPORTEDFORMAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateTexture1DInvalidSamples\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATETEXTURE1D_INVALIDSAMPLES']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATETEXTURE1D_INVALIDSAMPLES</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATETEXTURE1D_INVALIDSAMPLES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateTexture1DUnrecognizedUsage\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATETEXTURE1D_UNRECOGNIZEDUSAGE']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATETEXTURE1D_UNRECOGNIZEDUSAGE</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATETEXTURE1D_UNRECOGNIZEDUSAGE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateTexture1DUnrecognizedBindFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATETEXTURE1D_UNRECOGNIZEDBINDFLAGS']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATETEXTURE1D_UNRECOGNIZEDBINDFLAGS</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATETEXTURE1D_UNRECOGNIZEDBINDFLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateTexture1DUnrecognizedCpuAccessFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATETEXTURE1D_UNRECOGNIZEDCPUACCESSFLAGS']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATETEXTURE1D_UNRECOGNIZEDCPUACCESSFLAGS</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATETEXTURE1D_UNRECOGNIZEDCPUACCESSFLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateTexture1DUnrecognizedMiscFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATETEXTURE1D_UNRECOGNIZEDMISCFLAGS']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATETEXTURE1D_UNRECOGNIZEDMISCFLAGS</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATETEXTURE1D_UNRECOGNIZEDMISCFLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateTexture1DInvalidCpuAccessFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATETEXTURE1D_INVALIDCPUACCESSFLAGS']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATETEXTURE1D_INVALIDCPUACCESSFLAGS</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATETEXTURE1D_INVALIDCPUACCESSFLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateTexture1DInvalidBindFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATETEXTURE1D_INVALIDBINDFLAGS']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATETEXTURE1D_INVALIDBINDFLAGS</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATETEXTURE1D_INVALIDBINDFLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateTexture1DInvalidInitialData\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATETEXTURE1D_INVALIDINITIALDATA']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATETEXTURE1D_INVALIDINITIALDATA</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATETEXTURE1D_INVALIDINITIALDATA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateTexture1DInvalidDimensions\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATETEXTURE1D_INVALIDDIMENSIONS']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATETEXTURE1D_INVALIDDIMENSIONS</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATETEXTURE1D_INVALIDDIMENSIONS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateTexture1DInvalidMipLevels\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATETEXTURE1D_INVALIDMIPLEVELS']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATETEXTURE1D_INVALIDMIPLEVELS</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATETEXTURE1D_INVALIDMIPLEVELS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateTexture1DInvalidMiscFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATETEXTURE1D_INVALIDMISCFLAGS']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATETEXTURE1D_INVALIDMISCFLAGS</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATETEXTURE1D_INVALIDMISCFLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateTexture1DInvalidArgumentReturn\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATETEXTURE1D_INVALIDARG_RETURN']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATETEXTURE1D_INVALIDARG_RETURN</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATETEXTURE1D_INVALIDARG_RETURN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateTexture1DOufOfMemoryReturn\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATETEXTURE1D_OUTOFMEMORY_RETURN']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATETEXTURE1D_OUTOFMEMORY_RETURN</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATETEXTURE1D_OUTOFMEMORY_RETURN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateTexture1DNullDescription\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATETEXTURE1D_NULLDESC']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATETEXTURE1D_NULLDESC</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATETEXTURE1D_NULLDESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateTexture1DLargeAllOcation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATETEXTURE1D_LARGEALLOCATION']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATETEXTURE1D_LARGEALLOCATION</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATETEXTURE1D_LARGEALLOCATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateTexture2DUnrecognizedFormat\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATETEXTURE2D_UNRECOGNIZEDFORMAT']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATETEXTURE2D_UNRECOGNIZEDFORMAT</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATETEXTURE2D_UNRECOGNIZEDFORMAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateTexture2DUnsupportedFormat\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATETEXTURE2D_UNSUPPORTEDFORMAT']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATETEXTURE2D_UNSUPPORTEDFORMAT</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATETEXTURE2D_UNSUPPORTEDFORMAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateTexture2DInvalidSamples\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATETEXTURE2D_INVALIDSAMPLES']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATETEXTURE2D_INVALIDSAMPLES</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATETEXTURE2D_INVALIDSAMPLES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateTexture2DUnrecognizedUsage\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATETEXTURE2D_UNRECOGNIZEDUSAGE']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATETEXTURE2D_UNRECOGNIZEDUSAGE</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATETEXTURE2D_UNRECOGNIZEDUSAGE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateTexture2DUnrecognizedBindFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATETEXTURE2D_UNRECOGNIZEDBINDFLAGS']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATETEXTURE2D_UNRECOGNIZEDBINDFLAGS</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATETEXTURE2D_UNRECOGNIZEDBINDFLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateTexture2DUnrecognizedCpuAccessFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATETEXTURE2D_UNRECOGNIZEDCPUACCESSFLAGS']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATETEXTURE2D_UNRECOGNIZEDCPUACCESSFLAGS</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATETEXTURE2D_UNRECOGNIZEDCPUACCESSFLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateTexture2DUnrecognizedMiscFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATETEXTURE2D_UNRECOGNIZEDMISCFLAGS']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATETEXTURE2D_UNRECOGNIZEDMISCFLAGS</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATETEXTURE2D_UNRECOGNIZEDMISCFLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateTexture2DInvalidCpuAccessFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATETEXTURE2D_INVALIDCPUACCESSFLAGS']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATETEXTURE2D_INVALIDCPUACCESSFLAGS</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATETEXTURE2D_INVALIDCPUACCESSFLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateTexture2DInvalidBindFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATETEXTURE2D_INVALIDBINDFLAGS']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATETEXTURE2D_INVALIDBINDFLAGS</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATETEXTURE2D_INVALIDBINDFLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateTexture2DInvalidInitialData\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATETEXTURE2D_INVALIDINITIALDATA']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATETEXTURE2D_INVALIDINITIALDATA</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATETEXTURE2D_INVALIDINITIALDATA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateTexture2DInvalidDimensions\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATETEXTURE2D_INVALIDDIMENSIONS']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATETEXTURE2D_INVALIDDIMENSIONS</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATETEXTURE2D_INVALIDDIMENSIONS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateTexture2DInvalidMipLevels\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATETEXTURE2D_INVALIDMIPLEVELS']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATETEXTURE2D_INVALIDMIPLEVELS</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATETEXTURE2D_INVALIDMIPLEVELS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateTexture2DInvalidMiscFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATETEXTURE2D_INVALIDMISCFLAGS']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATETEXTURE2D_INVALIDMISCFLAGS</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATETEXTURE2D_INVALIDMISCFLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateTexture2DInvalidArgumentReturn\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATETEXTURE2D_INVALIDARG_RETURN']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATETEXTURE2D_INVALIDARG_RETURN</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATETEXTURE2D_INVALIDARG_RETURN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateTexture2DOufOfMemoryReturn\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATETEXTURE2D_OUTOFMEMORY_RETURN']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATETEXTURE2D_OUTOFMEMORY_RETURN</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATETEXTURE2D_OUTOFMEMORY_RETURN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateTexture2DNullDescription\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATETEXTURE2D_NULLDESC']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATETEXTURE2D_NULLDESC</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATETEXTURE2D_NULLDESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateTexture2DLargeAllOcation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATETEXTURE2D_LARGEALLOCATION']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATETEXTURE2D_LARGEALLOCATION</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATETEXTURE2D_LARGEALLOCATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateTexture3DUnrecognizedFormat\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATETEXTURE3D_UNRECOGNIZEDFORMAT']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATETEXTURE3D_UNRECOGNIZEDFORMAT</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATETEXTURE3D_UNRECOGNIZEDFORMAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateTexture3DUnsupportedFormat\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATETEXTURE3D_UNSUPPORTEDFORMAT']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATETEXTURE3D_UNSUPPORTEDFORMAT</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATETEXTURE3D_UNSUPPORTEDFORMAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateTexture3DInvalidSamples\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATETEXTURE3D_INVALIDSAMPLES']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATETEXTURE3D_INVALIDSAMPLES</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATETEXTURE3D_INVALIDSAMPLES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateTexture3DUnrecognizedUsage\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATETEXTURE3D_UNRECOGNIZEDUSAGE']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATETEXTURE3D_UNRECOGNIZEDUSAGE</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATETEXTURE3D_UNRECOGNIZEDUSAGE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateTexture3DUnrecognizedBindFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATETEXTURE3D_UNRECOGNIZEDBINDFLAGS']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATETEXTURE3D_UNRECOGNIZEDBINDFLAGS</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATETEXTURE3D_UNRECOGNIZEDBINDFLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateTexture3DUnrecognizedCpuAccessFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATETEXTURE3D_UNRECOGNIZEDCPUACCESSFLAGS']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATETEXTURE3D_UNRECOGNIZEDCPUACCESSFLAGS</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATETEXTURE3D_UNRECOGNIZEDCPUACCESSFLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateTexture3DUnrecognizedMiscFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATETEXTURE3D_UNRECOGNIZEDMISCFLAGS']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATETEXTURE3D_UNRECOGNIZEDMISCFLAGS</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATETEXTURE3D_UNRECOGNIZEDMISCFLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateTexture3DInvalidCpuAccessFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATETEXTURE3D_INVALIDCPUACCESSFLAGS']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATETEXTURE3D_INVALIDCPUACCESSFLAGS</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATETEXTURE3D_INVALIDCPUACCESSFLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateTexture3DInvalidBindFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATETEXTURE3D_INVALIDBINDFLAGS']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATETEXTURE3D_INVALIDBINDFLAGS</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATETEXTURE3D_INVALIDBINDFLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateTexture3DInvalidInitialData\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATETEXTURE3D_INVALIDINITIALDATA']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATETEXTURE3D_INVALIDINITIALDATA</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATETEXTURE3D_INVALIDINITIALDATA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateTexture3DInvalidDimensions\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATETEXTURE3D_INVALIDDIMENSIONS']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATETEXTURE3D_INVALIDDIMENSIONS</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATETEXTURE3D_INVALIDDIMENSIONS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateTexture3DInvalidMipLevels\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATETEXTURE3D_INVALIDMIPLEVELS']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATETEXTURE3D_INVALIDMIPLEVELS</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATETEXTURE3D_INVALIDMIPLEVELS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateTexture3DInvalidMiscFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATETEXTURE3D_INVALIDMISCFLAGS']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATETEXTURE3D_INVALIDMISCFLAGS</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATETEXTURE3D_INVALIDMISCFLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateTexture3DInvalidArgumentReturn\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATETEXTURE3D_INVALIDARG_RETURN']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATETEXTURE3D_INVALIDARG_RETURN</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATETEXTURE3D_INVALIDARG_RETURN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateTexture3DOufOfMemoryReturn\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATETEXTURE3D_OUTOFMEMORY_RETURN']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATETEXTURE3D_OUTOFMEMORY_RETURN</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATETEXTURE3D_OUTOFMEMORY_RETURN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateTexture3DNullDescription\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATETEXTURE3D_NULLDESC']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATETEXTURE3D_NULLDESC</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATETEXTURE3D_NULLDESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateTexture3DLargeAllOcation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATETEXTURE3D_LARGEALLOCATION']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATETEXTURE3D_LARGEALLOCATION</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATETEXTURE3D_LARGEALLOCATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateShaderResourceViewUnrecognizedFormat\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_UNRECOGNIZEDFORMAT']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_UNRECOGNIZEDFORMAT</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_UNRECOGNIZEDFORMAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateShaderResourceViewInvalidDescription\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDDESC']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDDESC</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDDESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateShaderResourceViewInvalidFormat\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDFORMAT']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDFORMAT</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDFORMAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateShaderResourceViewInvalidDimensions\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDDIMENSIONS']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDDIMENSIONS</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDDIMENSIONS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateShaderResourceViewInvalidResource\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDRESOURCE']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDRESOURCE</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDRESOURCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateShaderResourceViewTooManyObjects\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_TOOMANYOBJECTS']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_TOOMANYOBJECTS</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_TOOMANYOBJECTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateShaderResourceViewInvalidArgumentReturn\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDARG_RETURN']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDARG_RETURN</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDARG_RETURN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateShaderResourceViewOufOfMemoryReturn\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_OUTOFMEMORY_RETURN']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_OUTOFMEMORY_RETURN</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_OUTOFMEMORY_RETURN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateRenderTargetViewUnrecognizedFormat\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATERENDERTARGETVIEW_UNRECOGNIZEDFORMAT']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATERENDERTARGETVIEW_UNRECOGNIZEDFORMAT</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATERENDERTARGETVIEW_UNRECOGNIZEDFORMAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateRenderTargetViewUnsupportedFormat\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATERENDERTARGETVIEW_UNSUPPORTEDFORMAT']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATERENDERTARGETVIEW_UNSUPPORTEDFORMAT</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATERENDERTARGETVIEW_UNSUPPORTEDFORMAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateRenderTargetViewInvalidDescription\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDDESC']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDDESC</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDDESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateRenderTargetViewInvalidFormat\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDFORMAT']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDFORMAT</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDFORMAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateRenderTargetViewInvalidDimensions\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDDIMENSIONS']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDDIMENSIONS</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDDIMENSIONS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateRenderTargetViewInvalidResource\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDRESOURCE']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDRESOURCE</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDRESOURCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateRenderTargetViewTooManyObjects\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATERENDERTARGETVIEW_TOOMANYOBJECTS']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATERENDERTARGETVIEW_TOOMANYOBJECTS</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATERENDERTARGETVIEW_TOOMANYOBJECTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateRenderTargetViewInvalidArgumentReturn\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDARG_RETURN']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDARG_RETURN</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDARG_RETURN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateRenderTargetViewOufOfMemoryReturn\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATERENDERTARGETVIEW_OUTOFMEMORY_RETURN']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATERENDERTARGETVIEW_OUTOFMEMORY_RETURN</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATERENDERTARGETVIEW_OUTOFMEMORY_RETURN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateDepthStencilViewUnrecognizedFormat\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_UNRECOGNIZEDFORMAT']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_UNRECOGNIZEDFORMAT</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_UNRECOGNIZEDFORMAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateDepthStencilViewInvalidDescription\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDDESC']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDDESC</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDDESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateDepthStencilViewInvalidFormat\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDFORMAT']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDFORMAT</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDFORMAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateDepthStencilViewInvalidDimensions\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDDIMENSIONS']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDDIMENSIONS</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDDIMENSIONS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateDepthStencilViewInvalidResource\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDRESOURCE']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDRESOURCE</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDRESOURCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateDepthStencilViewTooManyObjects\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_TOOMANYOBJECTS']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_TOOMANYOBJECTS</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_TOOMANYOBJECTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateDepthStencilViewInvalidArgumentReturn\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDARG_RETURN']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDARG_RETURN</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDARG_RETURN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateDepthStencilViewOufOfMemoryReturn\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_OUTOFMEMORY_RETURN']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_OUTOFMEMORY_RETURN</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_OUTOFMEMORY_RETURN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateInputLayoutOufOfMemory\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_OUTOFMEMORY']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_OUTOFMEMORY</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_OUTOFMEMORY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateInputLayoutTooManyElements\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_TOOMANYELEMENTS']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_TOOMANYELEMENTS</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_TOOMANYELEMENTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateInputLayoutInvalidFormat\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDFORMAT']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDFORMAT</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDFORMAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateInputLayoutIncompatibleformat\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_INCOMPATIBLEFORMAT']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_INCOMPATIBLEFORMAT</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_INCOMPATIBLEFORMAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateInputLayoutInvalidSlot\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSLOT']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSLOT</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSLOT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateInputLayoutInvalidInputsLotclass\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDINPUTSLOTCLASS']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDINPUTSLOTCLASS</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDINPUTSLOTCLASS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateInputLayoutSteprateslotclassmismatch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_STEPRATESLOTCLASSMISMATCH']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_STEPRATESLOTCLASSMISMATCH</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_STEPRATESLOTCLASSMISMATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateInputLayoutInvalidSlotClassChange\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSLOTCLASSCHANGE']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSLOTCLASSCHANGE</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSLOTCLASSCHANGE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateInputLayoutInvalidStepratechange\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSTEPRATECHANGE']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSTEPRATECHANGE</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSTEPRATECHANGE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateInputLayoutInvalidAlignment\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDALIGNMENT']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDALIGNMENT</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDALIGNMENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateInputLayoutDuplicatesemantic\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_DUPLICATESEMANTIC']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_DUPLICATESEMANTIC</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_DUPLICATESEMANTIC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateInputLayoutUnparseableinputsignature\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_UNPARSEABLEINPUTSIGNATURE']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_UNPARSEABLEINPUTSIGNATURE</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_UNPARSEABLEINPUTSIGNATURE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateInputLayoutNullSemantic\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_NULLSEMANTIC']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_NULLSEMANTIC</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_NULLSEMANTIC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateInputLayoutMissingElement\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_MISSINGELEMENT']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_MISSINGELEMENT</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_MISSINGELEMENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateInputLayoutNullDescription\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_NULLDESC']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_NULLDESC</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_NULLDESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateVertexShaderOufOfMemory\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEVERTEXSHADER_OUTOFMEMORY']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEVERTEXSHADER_OUTOFMEMORY</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEVERTEXSHADER_OUTOFMEMORY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateVertexShaderInvalidShaderByteCode\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDSHADERBYTECODE']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDSHADERBYTECODE</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDSHADERBYTECODE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateVertexShaderInvalidShaderType\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDSHADERTYPE']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDSHADERTYPE</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDSHADERTYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateGeometryShaderOufOfMemory\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEGEOMETRYSHADER_OUTOFMEMORY']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEGEOMETRYSHADER_OUTOFMEMORY</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEGEOMETRYSHADER_OUTOFMEMORY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateGeometryShaderInvalidShaderByteCode\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDSHADERBYTECODE']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDSHADERBYTECODE</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDSHADERBYTECODE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateGeometryShaderInvalidShaderType\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDSHADERTYPE']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDSHADERTYPE</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDSHADERTYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateGeometryShaderWithStreamOutputOufOfMemory\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTOFMEMORY']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTOFMEMORY</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTOFMEMORY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateGeometryShaderWithStreamOutputInvalidShaderByteCode\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSHADERBYTECODE']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSHADERBYTECODE</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSHADERBYTECODE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateGeometryShaderWithStreamOutputInvalidShaderType\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSHADERTYPE']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSHADERTYPE</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSHADERTYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateGeometryShaderWithStreamOutputInvalidNumentries\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDNUMENTRIES']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDNUMENTRIES</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDNUMENTRIES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateGeometryShaderWithStreamOutputOutputStreamsTrideunused\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTPUTSTREAMSTRIDEUNUSED']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTPUTSTREAMSTRIDEUNUSED</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTPUTSTREAMSTRIDEUNUSED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateGeometryShaderWithStreamOutputUnexpectedDeclaration\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDDECL']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDDECL</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDDECL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateGeometryShaderWithStreamOutputExpectedDeclaration\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_EXPECTEDDECL']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_EXPECTEDDECL</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_EXPECTEDDECL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateGeometryShaderWithStreamOutputOutputSlot0expected\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTPUTSLOT0EXPECTED']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTPUTSLOT0EXPECTED</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTPUTSLOT0EXPECTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateGeometryShaderWithStreamOutputInvalidOutputSlot\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDOUTPUTSLOT']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDOUTPUTSLOT</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDOUTPUTSLOT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateGeometryShaderWithStreamOutputOnlyoneelementperslot\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_ONLYONEELEMENTPERSLOT']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_ONLYONEELEMENTPERSLOT</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_ONLYONEELEMENTPERSLOT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateGeometryShaderWithStreamOutputInvalidComponentcount\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDCOMPONENTCOUNT']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDCOMPONENTCOUNT</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDCOMPONENTCOUNT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateGeometryShaderWithStreamOutputInvalidStartcomponentandcomponentcount\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTARTCOMPONENTANDCOMPONENTCOUNT']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTARTCOMPONENTANDCOMPONENTCOUNT</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTARTCOMPONENTANDCOMPONENTCOUNT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateGeometryShaderWithStreamOutputInvalidGapdefinition\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDGAPDEFINITION']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDGAPDEFINITION</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDGAPDEFINITION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateGeometryShaderWithStreamOutputRepeatedoutput\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_REPEATEDOUTPUT']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_REPEATEDOUTPUT</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_REPEATEDOUTPUT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateGeometryShaderWithStreamOutputInvalidOutputStreamsTride\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDOUTPUTSTREAMSTRIDE']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDOUTPUTSTREAMSTRIDE</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDOUTPUTSTREAMSTRIDE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateGeometryShaderWithStreamOutputMissingSemantic\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MISSINGSEMANTIC']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MISSINGSEMANTIC</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MISSINGSEMANTIC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateGeometryShaderWithStreamOutputMaskmismatch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MASKMISMATCH']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MASKMISMATCH</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MASKMISMATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateGeometryShaderWithStreamOutputCanthaveonlygaps\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_CANTHAVEONLYGAPS']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_CANTHAVEONLYGAPS</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_CANTHAVEONLYGAPS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateGeometryShaderWithStreamOutputDeclarationTooComplex\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DECLTOOCOMPLEX']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DECLTOOCOMPLEX</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DECLTOOCOMPLEX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateGeometryShaderWithStreamOutputMissingOutputSignature\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MISSINGOUTPUTSIGNATURE']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MISSINGOUTPUTSIGNATURE</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MISSINGOUTPUTSIGNATURE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreatePixelShaderOufOfMemory\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEPIXELSHADER_OUTOFMEMORY']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEPIXELSHADER_OUTOFMEMORY</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEPIXELSHADER_OUTOFMEMORY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreatePixelShaderInvalidShaderByteCode\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEPIXELSHADER_INVALIDSHADERBYTECODE']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEPIXELSHADER_INVALIDSHADERBYTECODE</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEPIXELSHADER_INVALIDSHADERBYTECODE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreatePixelShaderInvalidShaderType\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEPIXELSHADER_INVALIDSHADERTYPE']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEPIXELSHADER_INVALIDSHADERTYPE</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEPIXELSHADER_INVALIDSHADERTYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateRasterizerstateInvalidFillmode\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDFILLMODE']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDFILLMODE</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDFILLMODE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateRasterizerstateInvalidCullmode\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDCULLMODE']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDCULLMODE</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDCULLMODE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateRasterizerstateInvalidDepthBiasclamp\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDDEPTHBIASCLAMP']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDDEPTHBIASCLAMP</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDDEPTHBIASCLAMP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateRasterizerstateInvalidSlopescaleddepthbias\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDSLOPESCALEDDEPTHBIAS']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDSLOPESCALEDDEPTHBIAS</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDSLOPESCALEDDEPTHBIAS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateRasterizerstateTooManyObjects\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATERASTERIZERSTATE_TOOMANYOBJECTS']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATERASTERIZERSTATE_TOOMANYOBJECTS</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATERASTERIZERSTATE_TOOMANYOBJECTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateRasterizerstateNullDescription\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATERASTERIZERSTATE_NULLDESC']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATERASTERIZERSTATE_NULLDESC</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATERASTERIZERSTATE_NULLDESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateDepthStencilStateInvalidDepthWriteMask\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDDEPTHWRITEMASK']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDDEPTHWRITEMASK</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDDEPTHWRITEMASK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateDepthStencilStateInvalidDepthFunction\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDDEPTHFUNC']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDDEPTHFUNC</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDDEPTHFUNC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateDepthStencilStateInvalidFrontfacestencilfailop\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILFAILOP']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILFAILOP</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILFAILOP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateDepthStencilStateInvalidFrontfacestencilzfailop\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILZFAILOP']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILZFAILOP</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILZFAILOP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateDepthStencilStateInvalidFrontfacestencilpassop\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILPASSOP']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILPASSOP</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILPASSOP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateDepthStencilStateInvalidFrontfacestencilfunc\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILFUNC']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILFUNC</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILFUNC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateDepthStencilStateInvalidBackfaceStencilFailop\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILFAILOP']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILFAILOP</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILFAILOP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateDepthStencilStateInvalidBackfaceStencilZfailop\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILZFAILOP']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILZFAILOP</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILZFAILOP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateDepthStencilStateInvalidBackfaceStencilPassop\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILPASSOP']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILPASSOP</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILPASSOP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateDepthStencilStateInvalidBackfaceStencilFunction\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILFUNC']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILFUNC</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILFUNC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateDepthStencilStateTooManyObjects\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_TOOMANYOBJECTS']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_TOOMANYOBJECTS</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_TOOMANYOBJECTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateDepthStencilStateNullDescription\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_NULLDESC']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_NULLDESC</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_NULLDESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateBlendStateInvalidSourceBlend\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEBLENDSTATE_INVALIDSRCBLEND']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEBLENDSTATE_INVALIDSRCBLEND</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEBLENDSTATE_INVALIDSRCBLEND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateBlendStateInvalidDestinationBlend\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEBLENDSTATE_INVALIDDESTBLEND']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEBLENDSTATE_INVALIDDESTBLEND</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEBLENDSTATE_INVALIDDESTBLEND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateBlendStateInvalidBlendOperation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEBLENDSTATE_INVALIDBLENDOP']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEBLENDSTATE_INVALIDBLENDOP</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEBLENDSTATE_INVALIDBLENDOP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateBlendStateInvalidSourceBlendAlpha\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEBLENDSTATE_INVALIDSRCBLENDALPHA']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEBLENDSTATE_INVALIDSRCBLENDALPHA</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEBLENDSTATE_INVALIDSRCBLENDALPHA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateBlendStateInvalidDestinationBlendAlpha\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEBLENDSTATE_INVALIDDESTBLENDALPHA']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEBLENDSTATE_INVALIDDESTBLENDALPHA</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEBLENDSTATE_INVALIDDESTBLENDALPHA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateBlendStateInvalidBlendOperationAlpha\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEBLENDSTATE_INVALIDBLENDOPALPHA']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEBLENDSTATE_INVALIDBLENDOPALPHA</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEBLENDSTATE_INVALIDBLENDOPALPHA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateBlendStateInvalidRenderTargetWriteMask\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEBLENDSTATE_INVALIDRENDERTARGETWRITEMASK']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEBLENDSTATE_INVALIDRENDERTARGETWRITEMASK</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEBLENDSTATE_INVALIDRENDERTARGETWRITEMASK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateBlendStateTooManyObjects\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEBLENDSTATE_TOOMANYOBJECTS']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEBLENDSTATE_TOOMANYOBJECTS</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEBLENDSTATE_TOOMANYOBJECTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateBlendStateNullDescription\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEBLENDSTATE_NULLDESC']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEBLENDSTATE_NULLDESC</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEBLENDSTATE_NULLDESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateSamplerStateInvalidFilter\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDFILTER']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDFILTER</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDFILTER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateSamplerStateInvalidAddressU\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDADDRESSU']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDADDRESSU</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDADDRESSU</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateSamplerStateInvalidAddressV\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDADDRESSV']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDADDRESSV</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDADDRESSV</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateSamplerStateInvalidAddressW\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDADDRESSW']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDADDRESSW</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDADDRESSW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateSamplerStateInvalidMiplodbias\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDMIPLODBIAS']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDMIPLODBIAS</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDMIPLODBIAS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateSamplerStateInvalidMaximumAnisotropy\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDMAXANISOTROPY']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDMAXANISOTROPY</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDMAXANISOTROPY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateSamplerStateInvalidComparisonfunc\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDCOMPARISONFUNC']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDCOMPARISONFUNC</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDCOMPARISONFUNC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateSamplerStateInvalidMinimumLod\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDMINLOD']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDMINLOD</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDMINLOD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateSamplerStateInvalidMaximumLod\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDMAXLOD']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDMAXLOD</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDMAXLOD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateSamplerStateTooManyObjects\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATESAMPLERSTATE_TOOMANYOBJECTS']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATESAMPLERSTATE_TOOMANYOBJECTS</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATESAMPLERSTATE_TOOMANYOBJECTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateSamplerStateNullDescription\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATESAMPLERSTATE_NULLDESC']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATESAMPLERSTATE_NULLDESC</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATESAMPLERSTATE_NULLDESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateQueryOrpredicateInvalidQuery\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEQUERYORPREDICATE_INVALIDQUERY']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEQUERYORPREDICATE_INVALIDQUERY</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEQUERYORPREDICATE_INVALIDQUERY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateQueryOrpredicateInvalidMiscFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEQUERYORPREDICATE_INVALIDMISCFLAGS']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEQUERYORPREDICATE_INVALIDMISCFLAGS</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEQUERYORPREDICATE_INVALIDMISCFLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateQueryOrpredicateUnexpectedMiscFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEQUERYORPREDICATE_UNEXPECTEDMISCFLAG']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEQUERYORPREDICATE_UNEXPECTEDMISCFLAG</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEQUERYORPREDICATE_UNEXPECTEDMISCFLAG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateQueryOrpredicateNullDescription\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEQUERYORPREDICATE_NULLDESC']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEQUERYORPREDICATE_NULLDESC</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEQUERYORPREDICATE_NULLDESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceInputAssemblySetPrimitivetopologyTopologyUnrecognized\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_IASETPRIMITIVETOPOLOGY_TOPOLOGY_UNRECOGNIZED']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_IASETPRIMITIVETOPOLOGY_TOPOLOGY_UNRECOGNIZED</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_IASETPRIMITIVETOPOLOGY_TOPOLOGY_UNRECOGNIZED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceInputAssemblySetPrimitivetopologyTopologyUndefined\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_IASETPRIMITIVETOPOLOGY_TOPOLOGY_UNDEFINED']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_IASETPRIMITIVETOPOLOGY_TOPOLOGY_UNDEFINED</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_IASETPRIMITIVETOPOLOGY_TOPOLOGY_UNDEFINED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.InputAssemblySetVertexBuffersInvalidBuffer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_IASETVERTEXBUFFERS_INVALIDBUFFER']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_IASETVERTEXBUFFERS_INVALIDBUFFER</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_IASETVERTEXBUFFERS_INVALIDBUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceInputAssemblySetVertexBuffersOffsetTooLarge\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_OFFSET_TOO_LARGE']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_OFFSET_TOO_LARGE</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_OFFSET_TOO_LARGE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceInputAssemblySetVertexBuffersBuffersEmpty\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_BUFFERS_EMPTY']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_BUFFERS_EMPTY</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_BUFFERS_EMPTY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.InputAssemblySetIndexBufferInvalidBuffer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_IASETINDEXBUFFER_INVALIDBUFFER']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_IASETINDEXBUFFER_INVALIDBUFFER</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_IASETINDEXBUFFER_INVALIDBUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceInputAssemblySetIndexBufferFormatInvalid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_IASETINDEXBUFFER_FORMAT_INVALID']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_IASETINDEXBUFFER_FORMAT_INVALID</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_IASETINDEXBUFFER_FORMAT_INVALID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceInputAssemblySetIndexBufferOffsetTooLarge\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_IASETINDEXBUFFER_OFFSET_TOO_LARGE']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_IASETINDEXBUFFER_OFFSET_TOO_LARGE</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_IASETINDEXBUFFER_OFFSET_TOO_LARGE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceInputAssemblySetIndexBufferOffsetUnaligned\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_IASETINDEXBUFFER_OFFSET_UNALIGNED']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_IASETINDEXBUFFER_OFFSET_UNALIGNED</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_IASETINDEXBUFFER_OFFSET_UNALIGNED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceVertexShaderSetShaderResourcesViewsEmpty\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_VSSETSHADERRESOURCES_VIEWS_EMPTY']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_VSSETSHADERRESOURCES_VIEWS_EMPTY</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_VSSETSHADERRESOURCES_VIEWS_EMPTY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.VertexShaderSetConstantBuffersInvalidBuffer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_VSSETCONSTANTBUFFERS_INVALIDBUFFER']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_VSSETCONSTANTBUFFERS_INVALIDBUFFER</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_VSSETCONSTANTBUFFERS_INVALIDBUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceVertexShaderSetConstantBuffersBuffersEmpty\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_VSSETCONSTANTBUFFERS_BUFFERS_EMPTY']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_VSSETCONSTANTBUFFERS_BUFFERS_EMPTY</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_VSSETCONSTANTBUFFERS_BUFFERS_EMPTY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceVertexShaderSetSamplersSamplersEmpty\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_VSSETSAMPLERS_SAMPLERS_EMPTY']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_VSSETSAMPLERS_SAMPLERS_EMPTY</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_VSSETSAMPLERS_SAMPLERS_EMPTY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceGeometryShaderSetShaderResourcesViewsEmpty\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_GSSETSHADERRESOURCES_VIEWS_EMPTY']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_GSSETSHADERRESOURCES_VIEWS_EMPTY</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_GSSETSHADERRESOURCES_VIEWS_EMPTY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.GeometryShaderSetConstantBuffersInvalidBuffer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_GSSETCONSTANTBUFFERS_INVALIDBUFFER']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_GSSETCONSTANTBUFFERS_INVALIDBUFFER</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_GSSETCONSTANTBUFFERS_INVALIDBUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceGeometryShaderSetConstantBuffersBuffersEmpty\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_GSSETCONSTANTBUFFERS_BUFFERS_EMPTY']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_GSSETCONSTANTBUFFERS_BUFFERS_EMPTY</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_GSSETCONSTANTBUFFERS_BUFFERS_EMPTY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceGeometryShaderSetSamplersSamplersEmpty\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_GSSETSAMPLERS_SAMPLERS_EMPTY']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_GSSETSAMPLERS_SAMPLERS_EMPTY</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_GSSETSAMPLERS_SAMPLERS_EMPTY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.StreamOutputSetTargetsInvalidBuffer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_SOSETTARGETS_INVALIDBUFFER']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_SOSETTARGETS_INVALIDBUFFER</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_SOSETTARGETS_INVALIDBUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceStreamOutputSetTargetsOffsetUnaligned\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_SOSETTARGETS_OFFSET_UNALIGNED']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_SOSETTARGETS_OFFSET_UNALIGNED</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_SOSETTARGETS_OFFSET_UNALIGNED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DevicePixelShaderSetShaderResourcesViewsEmpty\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_PSSETSHADERRESOURCES_VIEWS_EMPTY']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_PSSETSHADERRESOURCES_VIEWS_EMPTY</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_PSSETSHADERRESOURCES_VIEWS_EMPTY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.PixelShaderSetConstantBuffersInvalidBuffer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_PSSETCONSTANTBUFFERS_INVALIDBUFFER']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_PSSETCONSTANTBUFFERS_INVALIDBUFFER</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_PSSETCONSTANTBUFFERS_INVALIDBUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DevicePixelShaderSetConstantBuffersBuffersEmpty\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_PSSETCONSTANTBUFFERS_BUFFERS_EMPTY']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_PSSETCONSTANTBUFFERS_BUFFERS_EMPTY</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_PSSETCONSTANTBUFFERS_BUFFERS_EMPTY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DevicePixelShaderSetSamplersSamplersEmpty\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_PSSETSAMPLERS_SAMPLERS_EMPTY']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_PSSETSAMPLERS_SAMPLERS_EMPTY</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_PSSETSAMPLERS_SAMPLERS_EMPTY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceRasterizerSetViewportsInvalidViewport\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_RSSETVIEWPORTS_INVALIDVIEWPORT']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_RSSETVIEWPORTS_INVALIDVIEWPORT</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_RSSETVIEWPORTS_INVALIDVIEWPORT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceRasterizerSetScissorRectanglesInvalidScissor\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_RSSETSCISSORRECTS_INVALIDSCISSOR']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_RSSETSCISSORRECTS_INVALIDSCISSOR</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_RSSETSCISSORRECTS_INVALIDSCISSOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.ClearrendertargetviewDenormflush\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CLEARRENDERTARGETVIEW_DENORMFLUSH']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CLEARRENDERTARGETVIEW_DENORMFLUSH</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CLEARRENDERTARGETVIEW_DENORMFLUSH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CleardepthstencilviewDenormflush\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_DENORMFLUSH']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_DENORMFLUSH</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_DENORMFLUSH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CleardepthstencilviewInvalid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_INVALID']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_INVALID</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_INVALID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceInputAssemblyGetVertexBuffersBuffersEmpty\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_IAGETVERTEXBUFFERS_BUFFERS_EMPTY']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_IAGETVERTEXBUFFERS_BUFFERS_EMPTY</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_IAGETVERTEXBUFFERS_BUFFERS_EMPTY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceVertexShaderGetShaderResourcesViewsEmpty\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_VSGETSHADERRESOURCES_VIEWS_EMPTY']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_VSGETSHADERRESOURCES_VIEWS_EMPTY</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_VSGETSHADERRESOURCES_VIEWS_EMPTY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceVertexShaderGetConstantBuffersBuffersEmpty\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_VSGETCONSTANTBUFFERS_BUFFERS_EMPTY']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_VSGETCONSTANTBUFFERS_BUFFERS_EMPTY</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_VSGETCONSTANTBUFFERS_BUFFERS_EMPTY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceVertexShaderGetSamplersSamplersEmpty\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_VSGETSAMPLERS_SAMPLERS_EMPTY']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_VSGETSAMPLERS_SAMPLERS_EMPTY</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_VSGETSAMPLERS_SAMPLERS_EMPTY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceGeometryShaderGetShaderResourcesViewsEmpty\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_GSGETSHADERRESOURCES_VIEWS_EMPTY']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_GSGETSHADERRESOURCES_VIEWS_EMPTY</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_GSGETSHADERRESOURCES_VIEWS_EMPTY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceGeometryShaderGetConstantBuffersBuffersEmpty\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_GSGETCONSTANTBUFFERS_BUFFERS_EMPTY']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_GSGETCONSTANTBUFFERS_BUFFERS_EMPTY</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_GSGETCONSTANTBUFFERS_BUFFERS_EMPTY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceGeometryShaderGetSamplersSamplersEmpty\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_GSGETSAMPLERS_SAMPLERS_EMPTY']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_GSGETSAMPLERS_SAMPLERS_EMPTY</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_GSGETSAMPLERS_SAMPLERS_EMPTY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceStreamOutputGetTargetsBuffersEmpty\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_SOGETTARGETS_BUFFERS_EMPTY']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_SOGETTARGETS_BUFFERS_EMPTY</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_SOGETTARGETS_BUFFERS_EMPTY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DevicePixelShaderGetShaderResourcesViewsEmpty\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_PSGETSHADERRESOURCES_VIEWS_EMPTY']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_PSGETSHADERRESOURCES_VIEWS_EMPTY</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_PSGETSHADERRESOURCES_VIEWS_EMPTY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DevicePixelShaderGetConstantBuffersBuffersEmpty\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_PSGETCONSTANTBUFFERS_BUFFERS_EMPTY']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_PSGETCONSTANTBUFFERS_BUFFERS_EMPTY</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_PSGETCONSTANTBUFFERS_BUFFERS_EMPTY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DevicePixelShaderGetSamplersSamplersEmpty\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_PSGETSAMPLERS_SAMPLERS_EMPTY']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_PSGETSAMPLERS_SAMPLERS_EMPTY</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_PSGETSAMPLERS_SAMPLERS_EMPTY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceRasterizerGetViewportsViewportsEmpty\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_RSGETVIEWPORTS_VIEWPORTS_EMPTY']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_RSGETVIEWPORTS_VIEWPORTS_EMPTY</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_RSGETVIEWPORTS_VIEWPORTS_EMPTY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceRasterizerGetScissorRectanglesRectanglesEmpty\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_RSGETSCISSORRECTS_RECTS_EMPTY']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_RSGETSCISSORRECTS_RECTS_EMPTY</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_RSGETSCISSORRECTS_RECTS_EMPTY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceGeneratemipsResourceInvalid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_GENERATEMIPS_RESOURCE_INVALID']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_GENERATEMIPS_RESOURCE_INVALID</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_GENERATEMIPS_RESOURCE_INVALID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CopySubResourceRegionInvalidDestinationSubResource\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDDESTINATIONSUBRESOURCE']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDDESTINATIONSUBRESOURCE</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDDESTINATIONSUBRESOURCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CopySubResourceRegionInvalidSourceSubResource\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDSOURCESUBRESOURCE']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDSOURCESUBRESOURCE</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDSOURCESUBRESOURCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CopySubResourceRegionInvalidSourceBox\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDSOURCEBOX']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDSOURCEBOX</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDSOURCEBOX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CopySubResourceRegionInvalidSource\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDSOURCE']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDSOURCE</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDSOURCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CopySubResourceRegionInvalidDestinationState\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDDESTINATIONSTATE']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDDESTINATIONSTATE</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDDESTINATIONSTATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CopySubResourceRegionInvalidSourceState\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDSOURCESTATE']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDSOURCESTATE</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDSOURCESTATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CopyResourceInvalidSource\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_COPYRESOURCE_INVALIDSOURCE']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_COPYRESOURCE_INVALIDSOURCE</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_COPYRESOURCE_INVALIDSOURCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CopyResourceInvalidDestinationState\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_COPYRESOURCE_INVALIDDESTINATIONSTATE']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_COPYRESOURCE_INVALIDDESTINATIONSTATE</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_COPYRESOURCE_INVALIDDESTINATIONSTATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CopyResourceInvalidSourceState\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_COPYRESOURCE_INVALIDSOURCESTATE']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_COPYRESOURCE_INVALIDSOURCESTATE</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_COPYRESOURCE_INVALIDSOURCESTATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.UpdatesUbresourceInvalidDestinationSubResource\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_UPDATESUBRESOURCE_INVALIDDESTINATIONSUBRESOURCE']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_UPDATESUBRESOURCE_INVALIDDESTINATIONSUBRESOURCE</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_UPDATESUBRESOURCE_INVALIDDESTINATIONSUBRESOURCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.UpdatesUbresourceInvalidDestinationBox\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_UPDATESUBRESOURCE_INVALIDDESTINATIONBOX']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_UPDATESUBRESOURCE_INVALIDDESTINATIONBOX</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_UPDATESUBRESOURCE_INVALIDDESTINATIONBOX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.UpdatesUbresourceInvalidDestinationState\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_UPDATESUBRESOURCE_INVALIDDESTINATIONSTATE']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_UPDATESUBRESOURCE_INVALIDDESTINATIONSTATE</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_UPDATESUBRESOURCE_INVALIDDESTINATIONSTATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceResolvesubresourceDestinationInvalid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_DESTINATION_INVALID']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_DESTINATION_INVALID</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_DESTINATION_INVALID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceResolvesubresourceDestinationSubResourceInvalid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_DESTINATION_SUBRESOURCE_INVALID']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_DESTINATION_SUBRESOURCE_INVALID</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_DESTINATION_SUBRESOURCE_INVALID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceResolvesubresourceSourceInvalid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_SOURCE_INVALID']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_SOURCE_INVALID</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_SOURCE_INVALID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceResolvesubresourceSourceSubResourceInvalid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_SOURCE_SUBRESOURCE_INVALID']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_SOURCE_SUBRESOURCE_INVALID</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_SOURCE_SUBRESOURCE_INVALID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceResolvesubresourceFormatInvalid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_FORMAT_INVALID']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_FORMAT_INVALID</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_FORMAT_INVALID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.BufferMapInvalidMaptype\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_BUFFER_MAP_INVALIDMAPTYPE']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_BUFFER_MAP_INVALIDMAPTYPE</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_BUFFER_MAP_INVALIDMAPTYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.BufferMapInvalidFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_BUFFER_MAP_INVALIDFLAGS']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_BUFFER_MAP_INVALIDFLAGS</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_BUFFER_MAP_INVALIDFLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.BufferMapAlreadymapped\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_BUFFER_MAP_ALREADYMAPPED']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_BUFFER_MAP_ALREADYMAPPED</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_BUFFER_MAP_ALREADYMAPPED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.BufferMapDeviceremovedReturn\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_BUFFER_MAP_DEVICEREMOVED_RETURN']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_BUFFER_MAP_DEVICEREMOVED_RETURN</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_BUFFER_MAP_DEVICEREMOVED_RETURN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.BufferUnmapNotMapped\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_BUFFER_UNMAP_NOTMAPPED']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_BUFFER_UNMAP_NOTMAPPED</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_BUFFER_UNMAP_NOTMAPPED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.Texture1DMapInvalidMaptype\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_TEXTURE1D_MAP_INVALIDMAPTYPE']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_TEXTURE1D_MAP_INVALIDMAPTYPE</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_TEXTURE1D_MAP_INVALIDMAPTYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.Texture1DMapInvalidSubResource\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_TEXTURE1D_MAP_INVALIDSUBRESOURCE']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_TEXTURE1D_MAP_INVALIDSUBRESOURCE</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_TEXTURE1D_MAP_INVALIDSUBRESOURCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.Texture1DMapInvalidFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_TEXTURE1D_MAP_INVALIDFLAGS']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_TEXTURE1D_MAP_INVALIDFLAGS</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_TEXTURE1D_MAP_INVALIDFLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.Texture1DMapAlreadymapped\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_TEXTURE1D_MAP_ALREADYMAPPED']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_TEXTURE1D_MAP_ALREADYMAPPED</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_TEXTURE1D_MAP_ALREADYMAPPED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.Texture1DMapDeviceremovedReturn\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_TEXTURE1D_MAP_DEVICEREMOVED_RETURN']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_TEXTURE1D_MAP_DEVICEREMOVED_RETURN</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_TEXTURE1D_MAP_DEVICEREMOVED_RETURN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.Texture1DUnmapInvalidSubResource\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_TEXTURE1D_UNMAP_INVALIDSUBRESOURCE']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_TEXTURE1D_UNMAP_INVALIDSUBRESOURCE</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_TEXTURE1D_UNMAP_INVALIDSUBRESOURCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.Texture1DUnmapNotMapped\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_TEXTURE1D_UNMAP_NOTMAPPED']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_TEXTURE1D_UNMAP_NOTMAPPED</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_TEXTURE1D_UNMAP_NOTMAPPED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.Texture2DMapInvalidMaptype\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_TEXTURE2D_MAP_INVALIDMAPTYPE']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_TEXTURE2D_MAP_INVALIDMAPTYPE</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_TEXTURE2D_MAP_INVALIDMAPTYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.Texture2DMapInvalidSubResource\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_TEXTURE2D_MAP_INVALIDSUBRESOURCE']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_TEXTURE2D_MAP_INVALIDSUBRESOURCE</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_TEXTURE2D_MAP_INVALIDSUBRESOURCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.Texture2DMapInvalidFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_TEXTURE2D_MAP_INVALIDFLAGS']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_TEXTURE2D_MAP_INVALIDFLAGS</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_TEXTURE2D_MAP_INVALIDFLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.Texture2DMapAlreadymapped\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_TEXTURE2D_MAP_ALREADYMAPPED']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_TEXTURE2D_MAP_ALREADYMAPPED</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_TEXTURE2D_MAP_ALREADYMAPPED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.Texture2DMapDeviceremovedReturn\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_TEXTURE2D_MAP_DEVICEREMOVED_RETURN']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_TEXTURE2D_MAP_DEVICEREMOVED_RETURN</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_TEXTURE2D_MAP_DEVICEREMOVED_RETURN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.Texture2DUnmapInvalidSubResource\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_TEXTURE2D_UNMAP_INVALIDSUBRESOURCE']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_TEXTURE2D_UNMAP_INVALIDSUBRESOURCE</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_TEXTURE2D_UNMAP_INVALIDSUBRESOURCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.Texture2DUnmapNotMapped\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_TEXTURE2D_UNMAP_NOTMAPPED']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_TEXTURE2D_UNMAP_NOTMAPPED</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_TEXTURE2D_UNMAP_NOTMAPPED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.Texture3DMapInvalidMaptype\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_TEXTURE3D_MAP_INVALIDMAPTYPE']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_TEXTURE3D_MAP_INVALIDMAPTYPE</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_TEXTURE3D_MAP_INVALIDMAPTYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.Texture3DMapInvalidSubResource\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_TEXTURE3D_MAP_INVALIDSUBRESOURCE']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_TEXTURE3D_MAP_INVALIDSUBRESOURCE</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_TEXTURE3D_MAP_INVALIDSUBRESOURCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.Texture3DMapInvalidFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_TEXTURE3D_MAP_INVALIDFLAGS']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_TEXTURE3D_MAP_INVALIDFLAGS</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_TEXTURE3D_MAP_INVALIDFLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.Texture3DMapAlreadymapped\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_TEXTURE3D_MAP_ALREADYMAPPED']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_TEXTURE3D_MAP_ALREADYMAPPED</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_TEXTURE3D_MAP_ALREADYMAPPED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.Texture3DMapDeviceremovedReturn\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_TEXTURE3D_MAP_DEVICEREMOVED_RETURN']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_TEXTURE3D_MAP_DEVICEREMOVED_RETURN</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_TEXTURE3D_MAP_DEVICEREMOVED_RETURN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.Texture3DUnmapInvalidSubResource\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_TEXTURE3D_UNMAP_INVALIDSUBRESOURCE']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_TEXTURE3D_UNMAP_INVALIDSUBRESOURCE</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_TEXTURE3D_UNMAP_INVALIDSUBRESOURCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.Texture3DUnmapNotMapped\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_TEXTURE3D_UNMAP_NOTMAPPED']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_TEXTURE3D_UNMAP_NOTMAPPED</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_TEXTURE3D_UNMAP_NOTMAPPED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CheckFormatSupportFormatDeprecated\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CHECKFORMATSUPPORT_FORMAT_DEPRECATED']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CHECKFORMATSUPPORT_FORMAT_DEPRECATED</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CHECKFORMATSUPPORT_FORMAT_DEPRECATED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CheckMultisamplequalitylevelsFormatDeprecated\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CHECKMULTISAMPLEQUALITYLEVELS_FORMAT_DEPRECATED']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CHECKMULTISAMPLEQUALITYLEVELS_FORMAT_DEPRECATED</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CHECKMULTISAMPLEQUALITYLEVELS_FORMAT_DEPRECATED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.SetExceptionmodeUnrecognizedFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_SETEXCEPTIONMODE_UNRECOGNIZEDFLAGS']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_SETEXCEPTIONMODE_UNRECOGNIZEDFLAGS</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_SETEXCEPTIONMODE_UNRECOGNIZEDFLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.SetExceptionmodeInvalidArgumentReturn\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_SETEXCEPTIONMODE_INVALIDARG_RETURN']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_SETEXCEPTIONMODE_INVALIDARG_RETURN</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_SETEXCEPTIONMODE_INVALIDARG_RETURN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.SetExceptionmodeDeviceremovedReturn\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_SETEXCEPTIONMODE_DEVICEREMOVED_RETURN']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_SETEXCEPTIONMODE_DEVICEREMOVED_RETURN</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_SETEXCEPTIONMODE_DEVICEREMOVED_RETURN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.RefSimulatingInfinitelyFastHardware\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_REF_SIMULATING_INFINITELY_FAST_HARDWARE']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_REF_SIMULATING_INFINITELY_FAST_HARDWARE</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_REF_SIMULATING_INFINITELY_FAST_HARDWARE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.RefThreadingMode\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_REF_THREADING_MODE']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_REF_THREADING_MODE</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_REF_THREADING_MODE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.RefUmdriverException\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_REF_UMDRIVER_EXCEPTION']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_REF_UMDRIVER_EXCEPTION</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_REF_UMDRIVER_EXCEPTION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.RefKmdriverException\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_REF_KMDRIVER_EXCEPTION']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_REF_KMDRIVER_EXCEPTION</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_REF_KMDRIVER_EXCEPTION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.RefHardwareException\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_REF_HARDWARE_EXCEPTION']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_REF_HARDWARE_EXCEPTION</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_REF_HARDWARE_EXCEPTION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.RefAccessIngIndexAbleTempOutOfRange\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_REF_ACCESSING_INDEXABLE_TEMP_OUT_OF_RANGE']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_REF_ACCESSING_INDEXABLE_TEMP_OUT_OF_RANGE</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_REF_ACCESSING_INDEXABLE_TEMP_OUT_OF_RANGE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.RefProblemParsingShader\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_REF_PROBLEM_PARSING_SHADER']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_REF_PROBLEM_PARSING_SHADER</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_REF_PROBLEM_PARSING_SHADER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.RefOutOfMemory\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_REF_OUT_OF_MEMORY']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_REF_OUT_OF_MEMORY</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_REF_OUT_OF_MEMORY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.RefInformation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_REF_INFO']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_REF_INFO</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_REF_INFO</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceDrawVertexPosOverflow\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_DRAW_VERTEXPOS_OVERFLOW']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_DRAW_VERTEXPOS_OVERFLOW</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_DRAW_VERTEXPOS_OVERFLOW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceDrawIndexedIndexPosOverflow\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_DRAWINDEXED_INDEXPOS_OVERFLOW']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_DRAWINDEXED_INDEXPOS_OVERFLOW</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_DRAWINDEXED_INDEXPOS_OVERFLOW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceDrawInstancedVertexPosOverflow\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_DRAWINSTANCED_VERTEXPOS_OVERFLOW']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_DRAWINSTANCED_VERTEXPOS_OVERFLOW</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_DRAWINSTANCED_VERTEXPOS_OVERFLOW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceDrawInstancedInstancePosOverflow\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_DRAWINSTANCED_INSTANCEPOS_OVERFLOW']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_DRAWINSTANCED_INSTANCEPOS_OVERFLOW</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_DRAWINSTANCED_INSTANCEPOS_OVERFLOW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceDrawIndexedInstancedInstancePosOverflow\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_DRAWINDEXEDINSTANCED_INSTANCEPOS_OVERFLOW']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_DRAWINDEXEDINSTANCED_INSTANCEPOS_OVERFLOW</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_DRAWINDEXEDINSTANCED_INSTANCEPOS_OVERFLOW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceDrawIndexedInstancedIndexPosOverflow\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_DRAWINDEXEDINSTANCED_INDEXPOS_OVERFLOW']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_DRAWINDEXEDINSTANCED_INDEXPOS_OVERFLOW</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_DRAWINDEXEDINSTANCED_INDEXPOS_OVERFLOW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceDrawVertexShaderNotSet\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_DRAW_VERTEX_SHADER_NOT_SET']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_DRAW_VERTEX_SHADER_NOT_SET</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_DRAW_VERTEX_SHADER_NOT_SET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceShaderLinkageSemanticnameNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_SHADER_LINKAGE_SEMANTICNAME_NOT_FOUND']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_SHADER_LINKAGE_SEMANTICNAME_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_SHADER_LINKAGE_SEMANTICNAME_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceShaderLinkageRegisterindex\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_SHADER_LINKAGE_REGISTERINDEX']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_SHADER_LINKAGE_REGISTERINDEX</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_SHADER_LINKAGE_REGISTERINDEX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceShaderLinkageComponenttype\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_SHADER_LINKAGE_COMPONENTTYPE']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_SHADER_LINKAGE_COMPONENTTYPE</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_SHADER_LINKAGE_COMPONENTTYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceShaderLinkageRegistermask\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_SHADER_LINKAGE_REGISTERMASK']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_SHADER_LINKAGE_REGISTERMASK</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_SHADER_LINKAGE_REGISTERMASK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceShaderLinkageSystemvalue\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_SHADER_LINKAGE_SYSTEMVALUE']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_SHADER_LINKAGE_SYSTEMVALUE</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_SHADER_LINKAGE_SYSTEMVALUE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceShaderLinkageNeverwrittenAlwaysreads\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_SHADER_LINKAGE_NEVERWRITTEN_ALWAYSREADS']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_SHADER_LINKAGE_NEVERWRITTEN_ALWAYSREADS</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_SHADER_LINKAGE_NEVERWRITTEN_ALWAYSREADS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceDrawVertexBufferNotSet\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_DRAW_VERTEX_BUFFER_NOT_SET']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_DRAW_VERTEX_BUFFER_NOT_SET</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_DRAW_VERTEX_BUFFER_NOT_SET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceDrawInputLayoutNotSet\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_DRAW_INPUTLAYOUT_NOT_SET']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_DRAW_INPUTLAYOUT_NOT_SET</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_DRAW_INPUTLAYOUT_NOT_SET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceDrawConstantBufferNotSet\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_DRAW_CONSTANT_BUFFER_NOT_SET']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_DRAW_CONSTANT_BUFFER_NOT_SET</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_DRAW_CONSTANT_BUFFER_NOT_SET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceDrawConstantBufferTooSmall\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_DRAW_CONSTANT_BUFFER_TOO_SMALL']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_DRAW_CONSTANT_BUFFER_TOO_SMALL</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_DRAW_CONSTANT_BUFFER_TOO_SMALL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceDrawSamplerNotSet\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_DRAW_SAMPLER_NOT_SET']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_DRAW_SAMPLER_NOT_SET</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_DRAW_SAMPLER_NOT_SET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceDrawShaderResourceViewNotSet\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_DRAW_SHADERRESOURCEVIEW_NOT_SET']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_DRAW_SHADERRESOURCEVIEW_NOT_SET</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_DRAW_SHADERRESOURCEVIEW_NOT_SET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceDrawViewDimensionMismatch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_DRAW_VIEW_DIMENSION_MISMATCH']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_DRAW_VIEW_DIMENSION_MISMATCH</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_DRAW_VIEW_DIMENSION_MISMATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceDrawVertexBufferStrideTooSmall\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_DRAW_VERTEX_BUFFER_STRIDE_TOO_SMALL']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_DRAW_VERTEX_BUFFER_STRIDE_TOO_SMALL</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_DRAW_VERTEX_BUFFER_STRIDE_TOO_SMALL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceDrawVertexBufferTooSmall\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_DRAW_VERTEX_BUFFER_TOO_SMALL']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_DRAW_VERTEX_BUFFER_TOO_SMALL</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_DRAW_VERTEX_BUFFER_TOO_SMALL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceDrawIndexBufferNotSet\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_DRAW_INDEX_BUFFER_NOT_SET']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_DRAW_INDEX_BUFFER_NOT_SET</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_DRAW_INDEX_BUFFER_NOT_SET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceDrawIndexBufferFormatInvalid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_DRAW_INDEX_BUFFER_FORMAT_INVALID']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_DRAW_INDEX_BUFFER_FORMAT_INVALID</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_DRAW_INDEX_BUFFER_FORMAT_INVALID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceDrawIndexBufferTooSmall\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_DRAW_INDEX_BUFFER_TOO_SMALL']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_DRAW_INDEX_BUFFER_TOO_SMALL</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_DRAW_INDEX_BUFFER_TOO_SMALL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceDrawGeometryShaderInputPrimitiveMismatch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_DRAW_GS_INPUT_PRIMITIVE_MISMATCH']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_DRAW_GS_INPUT_PRIMITIVE_MISMATCH</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_DRAW_GS_INPUT_PRIMITIVE_MISMATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceDrawResourceReturnTypeMismatch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_DRAW_RESOURCE_RETURN_TYPE_MISMATCH']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_DRAW_RESOURCE_RETURN_TYPE_MISMATCH</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_DRAW_RESOURCE_RETURN_TYPE_MISMATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceDrawPositionNotPresent\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_DRAW_POSITION_NOT_PRESENT']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_DRAW_POSITION_NOT_PRESENT</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_DRAW_POSITION_NOT_PRESENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceDrawOutputStreamNotSet\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_DRAW_OUTPUT_STREAM_NOT_SET']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_DRAW_OUTPUT_STREAM_NOT_SET</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_DRAW_OUTPUT_STREAM_NOT_SET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceDrawBoundResourceMapped\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_DRAW_BOUND_RESOURCE_MAPPED']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_DRAW_BOUND_RESOURCE_MAPPED</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_DRAW_BOUND_RESOURCE_MAPPED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceDrawInvalidPrimitivetopology\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_DRAW_INVALID_PRIMITIVETOPOLOGY']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_DRAW_INVALID_PRIMITIVETOPOLOGY</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_DRAW_INVALID_PRIMITIVETOPOLOGY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceDrawVertexOffsetUnaligned\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_DRAW_VERTEX_OFFSET_UNALIGNED']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_DRAW_VERTEX_OFFSET_UNALIGNED</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_DRAW_VERTEX_OFFSET_UNALIGNED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceDrawVertexStrideUnaligned\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_DRAW_VERTEX_STRIDE_UNALIGNED']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_DRAW_VERTEX_STRIDE_UNALIGNED</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_DRAW_VERTEX_STRIDE_UNALIGNED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceDrawIndexOffsetUnaligned\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_DRAW_INDEX_OFFSET_UNALIGNED']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_DRAW_INDEX_OFFSET_UNALIGNED</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_DRAW_INDEX_OFFSET_UNALIGNED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceDrawOutputStreamOffsetUnaligned\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_DRAW_OUTPUT_STREAM_OFFSET_UNALIGNED']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_DRAW_OUTPUT_STREAM_OFFSET_UNALIGNED</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_DRAW_OUTPUT_STREAM_OFFSET_UNALIGNED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceDrawResourceFormatLdUnsupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_DRAW_RESOURCE_FORMAT_LD_UNSUPPORTED']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_DRAW_RESOURCE_FORMAT_LD_UNSUPPORTED</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_DRAW_RESOURCE_FORMAT_LD_UNSUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceDrawResourceFormatSampleUnsupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_DRAW_RESOURCE_FORMAT_SAMPLE_UNSUPPORTED']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_DRAW_RESOURCE_FORMAT_SAMPLE_UNSUPPORTED</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_DRAW_RESOURCE_FORMAT_SAMPLE_UNSUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceDrawResourceFormatSampleCUnsupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_DRAW_RESOURCE_FORMAT_SAMPLE_C_UNSUPPORTED']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_DRAW_RESOURCE_FORMAT_SAMPLE_C_UNSUPPORTED</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_DRAW_RESOURCE_FORMAT_SAMPLE_C_UNSUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceDrawResourceMultisampleUnsupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_DRAW_RESOURCE_MULTISAMPLE_UNSUPPORTED']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_DRAW_RESOURCE_MULTISAMPLE_UNSUPPORTED</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_DRAW_RESOURCE_MULTISAMPLE_UNSUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceDrawStreamOutputTargetsBoundWithoutSource\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_DRAW_SO_TARGETS_BOUND_WITHOUT_SOURCE']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_DRAW_SO_TARGETS_BOUND_WITHOUT_SOURCE</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_DRAW_SO_TARGETS_BOUND_WITHOUT_SOURCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceDrawStreamOutputStrideLargeRThanBuffer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_DRAW_SO_STRIDE_LARGER_THAN_BUFFER']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_DRAW_SO_STRIDE_LARGER_THAN_BUFFER</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_DRAW_SO_STRIDE_LARGER_THAN_BUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceDrawOutputMergerRenderTargetDoesNotSupportBlending\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_DRAW_OM_RENDER_TARGET_DOES_NOT_SUPPORT_BLENDING']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_DRAW_OM_RENDER_TARGET_DOES_NOT_SUPPORT_BLENDING</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_DRAW_OM_RENDER_TARGET_DOES_NOT_SUPPORT_BLENDING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceDrawOutputMergerDualSourceBlendingCanOnlyHaveRenderTarget0\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_DRAW_OM_DUAL_SOURCE_BLENDING_CAN_ONLY_HAVE_RENDER_TARGET_0']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_DRAW_OM_DUAL_SOURCE_BLENDING_CAN_ONLY_HAVE_RENDER_TARGET_0</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_DRAW_OM_DUAL_SOURCE_BLENDING_CAN_ONLY_HAVE_RENDER_TARGET_0</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceRemovalProcessAtFault\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_AT_FAULT']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_AT_FAULT</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_AT_FAULT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceRemovalProcessPossiblyAtFault\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_POSSIBLY_AT_FAULT']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_POSSIBLY_AT_FAULT</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_POSSIBLY_AT_FAULT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceRemovalProcessNotAtFault\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_NOT_AT_FAULT']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_NOT_AT_FAULT</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_NOT_AT_FAULT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceOpenSharedResourceInvalidArgumentReturn\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_OPEN_SHARED_RESOURCE_INVALIDARG_RETURN']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_OPEN_SHARED_RESOURCE_INVALIDARG_RETURN</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_OPEN_SHARED_RESOURCE_INVALIDARG_RETURN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceOpenSharedResourceOufOfMemoryReturn\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_OPEN_SHARED_RESOURCE_OUTOFMEMORY_RETURN']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_OPEN_SHARED_RESOURCE_OUTOFMEMORY_RETURN</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_OPEN_SHARED_RESOURCE_OUTOFMEMORY_RETURN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceOpenSharedResourceBadinterfaceReturn\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_OPEN_SHARED_RESOURCE_BADINTERFACE_RETURN']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_OPEN_SHARED_RESOURCE_BADINTERFACE_RETURN</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_OPEN_SHARED_RESOURCE_BADINTERFACE_RETURN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceDrawViewportNotSet\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_DRAW_VIEWPORT_NOT_SET']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_DRAW_VIEWPORT_NOT_SET</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_DRAW_VIEWPORT_NOT_SET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateInputLayoutTrailingDigitInSemantic\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_TRAILING_DIGIT_IN_SEMANTIC']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_TRAILING_DIGIT_IN_SEMANTIC</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_TRAILING_DIGIT_IN_SEMANTIC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateGeometryShaderWithStreamOutputTrailingDigitInSemantic\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_TRAILING_DIGIT_IN_SEMANTIC']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_TRAILING_DIGIT_IN_SEMANTIC</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_TRAILING_DIGIT_IN_SEMANTIC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceRasterizerSetViewportsDenormflush\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_RSSETVIEWPORTS_DENORMFLUSH']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_RSSETVIEWPORTS_DENORMFLUSH</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_RSSETVIEWPORTS_DENORMFLUSH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.OutputMergerSetRenderTargetsInvalidView\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_OMSETRENDERTARGETS_INVALIDVIEW']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_OMSETRENDERTARGETS_INVALIDVIEW</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_OMSETRENDERTARGETS_INVALIDVIEW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceSetTextFiltersizeInvalidDimensions\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_SETTEXTFILTERSIZE_INVALIDDIMENSIONS']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_SETTEXTFILTERSIZE_INVALIDDIMENSIONS</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_SETTEXTFILTERSIZE_INVALIDDIMENSIONS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceDrawSamplerMismatch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_DRAW_SAMPLER_MISMATCH']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_DRAW_SAMPLER_MISMATCH</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_DRAW_SAMPLER_MISMATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateInputLayoutTypeMismatch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_TYPE_MISMATCH']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_TYPE_MISMATCH</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_TYPE_MISMATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.BlendStateGetDescriptionLegacy\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_BLENDSTATE_GETDESC_LEGACY']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_BLENDSTATE_GETDESC_LEGACY</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_BLENDSTATE_GETDESC_LEGACY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.ShaderResourceViewGetDescriptionLegacy\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_SHADERRESOURCEVIEW_GETDESC_LEGACY']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_SHADERRESOURCEVIEW_GETDESC_LEGACY</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_SHADERRESOURCEVIEW_GETDESC_LEGACY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateQueryOufOfMemoryReturn\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEQUERY_OUTOFMEMORY_RETURN']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEQUERY_OUTOFMEMORY_RETURN</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEQUERY_OUTOFMEMORY_RETURN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreatePredicateOufOfMemoryReturn\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEPREDICATE_OUTOFMEMORY_RETURN']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEPREDICATE_OUTOFMEMORY_RETURN</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEPREDICATE_OUTOFMEMORY_RETURN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateCounterOufOfRangeCounter\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATECOUNTER_OUTOFRANGE_COUNTER']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATECOUNTER_OUTOFRANGE_COUNTER</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATECOUNTER_OUTOFRANGE_COUNTER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateCounterSimultaneousActiveCountersExhausted\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATECOUNTER_SIMULTANEOUS_ACTIVE_COUNTERS_EXHAUSTED']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATECOUNTER_SIMULTANEOUS_ACTIVE_COUNTERS_EXHAUSTED</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATECOUNTER_SIMULTANEOUS_ACTIVE_COUNTERS_EXHAUSTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateCounterUnsupportedWellknownCounter\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATECOUNTER_UNSUPPORTED_WELLKNOWN_COUNTER']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATECOUNTER_UNSUPPORTED_WELLKNOWN_COUNTER</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATECOUNTER_UNSUPPORTED_WELLKNOWN_COUNTER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateCounterOufOfMemoryReturn\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATECOUNTER_OUTOFMEMORY_RETURN']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATECOUNTER_OUTOFMEMORY_RETURN</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATECOUNTER_OUTOFMEMORY_RETURN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateCounterNonexclusiveReturn\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATECOUNTER_NONEXCLUSIVE_RETURN']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATECOUNTER_NONEXCLUSIVE_RETURN</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATECOUNTER_NONEXCLUSIVE_RETURN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateCounterNullDescription\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATECOUNTER_NULLDESC']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATECOUNTER_NULLDESC</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATECOUNTER_NULLDESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CheckCounterOufOfRangeCounter\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CHECKCOUNTER_OUTOFRANGE_COUNTER']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CHECKCOUNTER_OUTOFRANGE_COUNTER</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CHECKCOUNTER_OUTOFRANGE_COUNTER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CheckCounterUnsupportedWellknownCounter\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CHECKCOUNTER_UNSUPPORTED_WELLKNOWN_COUNTER']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CHECKCOUNTER_UNSUPPORTED_WELLKNOWN_COUNTER</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CHECKCOUNTER_UNSUPPORTED_WELLKNOWN_COUNTER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.SetPredicationInvalidPredicateState\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_SETPREDICATION_INVALID_PREDICATE_STATE']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_SETPREDICATION_INVALID_PREDICATE_STATE</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_SETPREDICATION_INVALID_PREDICATE_STATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.QueryBeginUnsupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_QUERY_BEGIN_UNSUPPORTED']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_QUERY_BEGIN_UNSUPPORTED</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_QUERY_BEGIN_UNSUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.PredicateBeginDuringPredication\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_PREDICATE_BEGIN_DURING_PREDICATION']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_PREDICATE_BEGIN_DURING_PREDICATION</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_PREDICATE_BEGIN_DURING_PREDICATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.QueryBeginDuplicate\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_QUERY_BEGIN_DUPLICATE']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_QUERY_BEGIN_DUPLICATE</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_QUERY_BEGIN_DUPLICATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.QueryBeginAbandoningPreviousResults\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_QUERY_BEGIN_ABANDONING_PREVIOUS_RESULTS']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_QUERY_BEGIN_ABANDONING_PREVIOUS_RESULTS</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_QUERY_BEGIN_ABANDONING_PREVIOUS_RESULTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.PredicateEndDuringPredication\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_PREDICATE_END_DURING_PREDICATION']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_PREDICATE_END_DURING_PREDICATION</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_PREDICATE_END_DURING_PREDICATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.QueryEndAbandoningPreviousResults\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_QUERY_END_ABANDONING_PREVIOUS_RESULTS']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_QUERY_END_ABANDONING_PREVIOUS_RESULTS</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_QUERY_END_ABANDONING_PREVIOUS_RESULTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.QueryEndWithoutBegin\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_QUERY_END_WITHOUT_BEGIN']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_QUERY_END_WITHOUT_BEGIN</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_QUERY_END_WITHOUT_BEGIN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.QueryGetDataInvalidDataSize\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_QUERY_GETDATA_INVALID_DATASIZE']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_QUERY_GETDATA_INVALID_DATASIZE</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_QUERY_GETDATA_INVALID_DATASIZE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.QueryGetDataInvalidFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_QUERY_GETDATA_INVALID_FLAGS']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_QUERY_GETDATA_INVALID_FLAGS</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_QUERY_GETDATA_INVALID_FLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.QueryGetDataInvalidCall\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_QUERY_GETDATA_INVALID_CALL']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_QUERY_GETDATA_INVALID_CALL</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_QUERY_GETDATA_INVALID_CALL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceDrawPixelShaderOutputTypeMismatch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_DRAW_PS_OUTPUT_TYPE_MISMATCH']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_DRAW_PS_OUTPUT_TYPE_MISMATCH</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_DRAW_PS_OUTPUT_TYPE_MISMATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceDrawResourceFormatGatherUnsupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_DRAW_RESOURCE_FORMAT_GATHER_UNSUPPORTED']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_DRAW_RESOURCE_FORMAT_GATHER_UNSUPPORTED</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_DRAW_RESOURCE_FORMAT_GATHER_UNSUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceDrawInvalidUseOfCenterMultisamplePattern\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_DRAW_INVALID_USE_OF_CENTER_MULTISAMPLE_PATTERN']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_DRAW_INVALID_USE_OF_CENTER_MULTISAMPLE_PATTERN</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_DRAW_INVALID_USE_OF_CENTER_MULTISAMPLE_PATTERN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceInputAssemblySetVertexBuffersStrideTooLarge\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_STRIDE_TOO_LARGE']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_STRIDE_TOO_LARGE</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_STRIDE_TOO_LARGE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceInputAssemblySetVertexBuffersInvalidRange\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_INVALIDRANGE']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_INVALIDRANGE</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_INVALIDRANGE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateInputLayoutEmptyLayout\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_EMPTY_LAYOUT']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_EMPTY_LAYOUT</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_EMPTY_LAYOUT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceDrawResourceSampleCountMismatch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_DRAW_RESOURCE_SAMPLE_COUNT_MISMATCH']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_DRAW_RESOURCE_SAMPLE_COUNT_MISMATCH</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_DRAW_RESOURCE_SAMPLE_COUNT_MISMATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.D3D10MessagesEnd\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_D3D10_MESSAGES_END']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_D3D10_MESSAGES_END</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_D3D10_MESSAGES_END</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.D3D10L9MessagesStart\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_D3D10L9_MESSAGES_START']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_D3D10L9_MESSAGES_START</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_D3D10L9_MESSAGES_START</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateDepthStencilStateStencilNoTwoSided\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_STENCIL_NO_TWO_SIDED']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_STENCIL_NO_TWO_SIDED</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_STENCIL_NO_TWO_SIDED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateRasterizerstateDepthBiasClampNotSupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATERASTERIZERSTATE_DepthBiasClamp_NOT_SUPPORTED']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATERASTERIZERSTATE_DepthBiasClamp_NOT_SUPPORTED</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATERASTERIZERSTATE_DepthBiasClamp_NOT_SUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateSamplerStateNoComparisonSupport\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATESAMPLERSTATE_NO_COMPARISON_SUPPORT']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATESAMPLERSTATE_NO_COMPARISON_SUPPORT</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATESAMPLERSTATE_NO_COMPARISON_SUPPORT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateSamplerStateExcessiveAnisotropy\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATESAMPLERSTATE_EXCESSIVE_ANISOTROPY']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATESAMPLERSTATE_EXCESSIVE_ANISOTROPY</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATESAMPLERSTATE_EXCESSIVE_ANISOTROPY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateSamplerStateBorderOutOfRange\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATESAMPLERSTATE_BORDER_OUT_OF_RANGE']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATESAMPLERSTATE_BORDER_OUT_OF_RANGE</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATESAMPLERSTATE_BORDER_OUT_OF_RANGE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.VertexShaderSetSamplersNotSupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_VSSETSAMPLERS_NOT_SUPPORTED']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_VSSETSAMPLERS_NOT_SUPPORTED</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_VSSETSAMPLERS_NOT_SUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.VertexShaderSetSamplersTooManySamplers\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_VSSETSAMPLERS_TOO_MANY_SAMPLERS']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_VSSETSAMPLERS_TOO_MANY_SAMPLERS</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_VSSETSAMPLERS_TOO_MANY_SAMPLERS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.PixelShaderSetSamplersTooManySamplers\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_PSSETSAMPLERS_TOO_MANY_SAMPLERS']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_PSSETSAMPLERS_TOO_MANY_SAMPLERS</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_PSSETSAMPLERS_TOO_MANY_SAMPLERS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateResourceNoArrays\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATERESOURCE_NO_ARRAYS']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATERESOURCE_NO_ARRAYS</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATERESOURCE_NO_ARRAYS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateResourceNoVertexBufferAndIndexBufferBind\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATERESOURCE_NO_VB_AND_IB_BIND']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATERESOURCE_NO_VB_AND_IB_BIND</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATERESOURCE_NO_VB_AND_IB_BIND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateResourceNoTexture1D\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATERESOURCE_NO_TEXTURE_1D']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATERESOURCE_NO_TEXTURE_1D</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATERESOURCE_NO_TEXTURE_1D</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateResourceDimensionOutOfRange\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATERESOURCE_DIMENSION_OUT_OF_RANGE']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATERESOURCE_DIMENSION_OUT_OF_RANGE</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATERESOURCE_DIMENSION_OUT_OF_RANGE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateResourceNotBindableAsShaderResource\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATERESOURCE_NOT_BINDABLE_AS_SHADER_RESOURCE']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATERESOURCE_NOT_BINDABLE_AS_SHADER_RESOURCE</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATERESOURCE_NOT_BINDABLE_AS_SHADER_RESOURCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.OutputMergerSetRenderTargetsTooManyRenderTargets\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_OMSETRENDERTARGETS_TOO_MANY_RENDER_TARGETS']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_OMSETRENDERTARGETS_TOO_MANY_RENDER_TARGETS</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_OMSETRENDERTARGETS_TOO_MANY_RENDER_TARGETS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.OutputMergerSetRenderTargetsNoDifferingBitDepthS\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_OMSETRENDERTARGETS_NO_DIFFERING_BIT_DEPTHS']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_OMSETRENDERTARGETS_NO_DIFFERING_BIT_DEPTHS</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_OMSETRENDERTARGETS_NO_DIFFERING_BIT_DEPTHS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.InputAssemblySetVertexBuffersBadBufferIndex\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_IASETVERTEXBUFFERS_BAD_BUFFER_INDEX']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_IASETVERTEXBUFFERS_BAD_BUFFER_INDEX</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_IASETVERTEXBUFFERS_BAD_BUFFER_INDEX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceRasterizerSetViewportsTooManyViewports\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_RSSETVIEWPORTS_TOO_MANY_VIEWPORTS']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_RSSETVIEWPORTS_TOO_MANY_VIEWPORTS</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_RSSETVIEWPORTS_TOO_MANY_VIEWPORTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceInputAssemblySetPrimitivetopologyWithAdjacencyUnsupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_IASETPRIMITIVETOPOLOGY_ADJACENCY_UNSUPPORTED']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_IASETPRIMITIVETOPOLOGY_ADJACENCY_UNSUPPORTED</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_IASETPRIMITIVETOPOLOGY_ADJACENCY_UNSUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceRasterizerSetScissorRectanglesTooManyScissors\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_RSSETSCISSORRECTS_TOO_MANY_SCISSORS']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_RSSETSCISSORRECTS_TOO_MANY_SCISSORS</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_RSSETSCISSORRECTS_TOO_MANY_SCISSORS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CopyResourceOnlyTexture2DWithinGpuMemory\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_COPYRESOURCE_ONLY_TEXTURE_2D_WITHIN_GPU_MEMORY']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_COPYRESOURCE_ONLY_TEXTURE_2D_WITHIN_GPU_MEMORY</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_COPYRESOURCE_ONLY_TEXTURE_2D_WITHIN_GPU_MEMORY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CopyResourceNoTexture3DReadback\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_COPYRESOURCE_NO_TEXTURE_3D_READBACK']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_COPYRESOURCE_NO_TEXTURE_3D_READBACK</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_COPYRESOURCE_NO_TEXTURE_3D_READBACK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CopyResourceNoTextureOnlyReadback\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_COPYRESOURCE_NO_TEXTURE_ONLY_READBACK']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_COPYRESOURCE_NO_TEXTURE_ONLY_READBACK</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_COPYRESOURCE_NO_TEXTURE_ONLY_READBACK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateInputLayoutUnsupportedFormat\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_UNSUPPORTED_FORMAT']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_UNSUPPORTED_FORMAT</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_UNSUPPORTED_FORMAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateBlendStateNoAlphaToCoverage\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEBLENDSTATE_NO_ALPHA_TO_COVERAGE']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEBLENDSTATE_NO_ALPHA_TO_COVERAGE</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEBLENDSTATE_NO_ALPHA_TO_COVERAGE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateRasterizerstateDepthClipEnableMustBeTrue\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATERASTERIZERSTATE_DepthClipEnable_MUST_BE_TRUE']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATERASTERIZERSTATE_DepthClipEnable_MUST_BE_TRUE</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATERASTERIZERSTATE_DepthClipEnable_MUST_BE_TRUE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DrawIndexedStartindexlocationMustBePositive\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DRAWINDEXED_STARTINDEXLOCATION_MUST_BE_POSITIVE']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DRAWINDEXED_STARTINDEXLOCATION_MUST_BE_POSITIVE</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DRAWINDEXED_STARTINDEXLOCATION_MUST_BE_POSITIVE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateShaderResourceViewMustUseLowestLod\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_MUST_USE_LOWEST_LOD']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_MUST_USE_LOWEST_LOD</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_MUST_USE_LOWEST_LOD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateSamplerStateMinimumLodMustNotBeFractional\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATESAMPLERSTATE_MINLOD_MUST_NOT_BE_FRACTIONAL']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATESAMPLERSTATE_MINLOD_MUST_NOT_BE_FRACTIONAL</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATESAMPLERSTATE_MINLOD_MUST_NOT_BE_FRACTIONAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateSamplerStateMaximumLodMustBeFltMaximum\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATESAMPLERSTATE_MAXLOD_MUST_BE_FLT_MAX']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATESAMPLERSTATE_MAXLOD_MUST_BE_FLT_MAX</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATESAMPLERSTATE_MAXLOD_MUST_BE_FLT_MAX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateShaderResourceViewFirstArraySliceMustBeZero\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_FIRSTARRAYSLICE_MUST_BE_ZERO']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_FIRSTARRAYSLICE_MUST_BE_ZERO</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_FIRSTARRAYSLICE_MUST_BE_ZERO</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateShaderResourceViewCubeSMustHave6Sides\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_CUBES_MUST_HAVE_6_SIDES']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_CUBES_MUST_HAVE_6_SIDES</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_CUBES_MUST_HAVE_6_SIDES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateResourceNotBindableAsRenderTarget\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATERESOURCE_NOT_BINDABLE_AS_RENDER_TARGET']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATERESOURCE_NOT_BINDABLE_AS_RENDER_TARGET</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATERESOURCE_NOT_BINDABLE_AS_RENDER_TARGET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateResourceNoDwordIndexBuffer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATERESOURCE_NO_DWORD_INDEX_BUFFER']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATERESOURCE_NO_DWORD_INDEX_BUFFER</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATERESOURCE_NO_DWORD_INDEX_BUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateResourceMSAAPrecludesShaderResource\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATERESOURCE_MSAA_PRECLUDES_SHADER_RESOURCE']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATERESOURCE_MSAA_PRECLUDES_SHADER_RESOURCE</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATERESOURCE_MSAA_PRECLUDES_SHADER_RESOURCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateResourcePresentationPrecludesShaderResource\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATERESOURCE_PRESENTATION_PRECLUDES_SHADER_RESOURCE']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATERESOURCE_PRESENTATION_PRECLUDES_SHADER_RESOURCE</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATERESOURCE_PRESENTATION_PRECLUDES_SHADER_RESOURCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateBlendStateNoIndependentBlendEnable\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEBLENDSTATE_NO_INDEPENDENT_BLEND_ENABLE']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEBLENDSTATE_NO_INDEPENDENT_BLEND_ENABLE</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEBLENDSTATE_NO_INDEPENDENT_BLEND_ENABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateBlendStateNoIndependentWriteMasks\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEBLENDSTATE_NO_INDEPENDENT_WRITE_MASKS']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEBLENDSTATE_NO_INDEPENDENT_WRITE_MASKS</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEBLENDSTATE_NO_INDEPENDENT_WRITE_MASKS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateResourceNoStreamOut\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATERESOURCE_NO_STREAM_OUT']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATERESOURCE_NO_STREAM_OUT</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATERESOURCE_NO_STREAM_OUT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateResourceOnlyVertexBufferIndexBufferForBuffers\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATERESOURCE_ONLY_VB_IB_FOR_BUFFERS']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATERESOURCE_ONLY_VB_IB_FOR_BUFFERS</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATERESOURCE_ONLY_VB_IB_FOR_BUFFERS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateResourceNoAutogenForVolumes\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATERESOURCE_NO_AUTOGEN_FOR_VOLUMES']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATERESOURCE_NO_AUTOGEN_FOR_VOLUMES</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATERESOURCE_NO_AUTOGEN_FOR_VOLUMES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateResourceDxgiFormatR8G8B8A8CannotBeShared\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATERESOURCE_DXGI_FORMAT_R8G8B8A8_CANNOT_BE_SHARED']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATERESOURCE_DXGI_FORMAT_R8G8B8A8_CANNOT_BE_SHARED</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATERESOURCE_DXGI_FORMAT_R8G8B8A8_CANNOT_BE_SHARED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.VertexShaderShaderResourcesNotSupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_VSSHADERRESOURCES_NOT_SUPPORTED']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_VSSHADERRESOURCES_NOT_SUPPORTED</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_VSSHADERRESOURCES_NOT_SUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.GeometryShaderNotSupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_GEOMETRY_SHADER_NOT_SUPPORTED']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_GEOMETRY_SHADER_NOT_SUPPORTED</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_GEOMETRY_SHADER_NOT_SUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.StreamOutNotSupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_STREAM_OUT_NOT_SUPPORTED']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_STREAM_OUT_NOT_SUPPORTED</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_STREAM_OUT_NOT_SUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.TextFilterNotSupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_TEXT_FILTER_NOT_SUPPORTED']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_TEXT_FILTER_NOT_SUPPORTED</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_TEXT_FILTER_NOT_SUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateBlendStateNoSeparateAlphaBlend\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEBLENDSTATE_NO_SEPARATE_ALPHA_BLEND']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEBLENDSTATE_NO_SEPARATE_ALPHA_BLEND</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEBLENDSTATE_NO_SEPARATE_ALPHA_BLEND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateBlendStateNoMrtBlend\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEBLENDSTATE_NO_MRT_BLEND']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEBLENDSTATE_NO_MRT_BLEND</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEBLENDSTATE_NO_MRT_BLEND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateBlendStateOperationNotSupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATEBLENDSTATE_OPERATION_NOT_SUPPORTED']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATEBLENDSTATE_OPERATION_NOT_SUPPORTED</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATEBLENDSTATE_OPERATION_NOT_SUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateSamplerStateNoMirrorOnce\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATESAMPLERSTATE_NO_MIRRORONCE']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATESAMPLERSTATE_NO_MIRRORONCE</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATESAMPLERSTATE_NO_MIRRORONCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DrawInstancedNotSupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DRAWINSTANCED_NOT_SUPPORTED']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DRAWINSTANCED_NOT_SUPPORTED</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DRAWINSTANCED_NOT_SUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DrawIndexedInstancedNotSupportedBelow93\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DRAWINDEXEDINSTANCED_NOT_SUPPORTED_BELOW_9_3']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DRAWINDEXEDINSTANCED_NOT_SUPPORTED_BELOW_9_3</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DRAWINDEXEDINSTANCED_NOT_SUPPORTED_BELOW_9_3</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DrawIndexedPointListUnsupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DRAWINDEXED_POINTLIST_UNSUPPORTED']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DRAWINDEXED_POINTLIST_UNSUPPORTED</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DRAWINDEXED_POINTLIST_UNSUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.SetBlendStateSampleMaskCannotBeZero\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_SETBLENDSTATE_SAMPLE_MASK_CANNOT_BE_ZERO']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_SETBLENDSTATE_SAMPLE_MASK_CANNOT_BE_ZERO</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_SETBLENDSTATE_SAMPLE_MASK_CANNOT_BE_ZERO</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateResourceDimensionExceedsFeatureLevelDefinition\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATERESOURCE_DIMENSION_EXCEEDS_FEATURE_LEVEL_DEFINITION']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATERESOURCE_DIMENSION_EXCEEDS_FEATURE_LEVEL_DEFINITION</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATERESOURCE_DIMENSION_EXCEEDS_FEATURE_LEVEL_DEFINITION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateResourceOnlySingleMipLevelDepthStencilSupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATERESOURCE_ONLY_SINGLE_MIP_LEVEL_DEPTH_STENCIL_SUPPORTED']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATERESOURCE_ONLY_SINGLE_MIP_LEVEL_DEPTH_STENCIL_SUPPORTED</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATERESOURCE_ONLY_SINGLE_MIP_LEVEL_DEPTH_STENCIL_SUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.DeviceRasterizerSetScissorRectanglesNegativeScissor\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_DEVICE_RSSETSCISSORRECTS_NEGATIVESCISSOR']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_DEVICE_RSSETSCISSORRECTS_NEGATIVESCISSOR</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_DEVICE_RSSETSCISSORRECTS_NEGATIVESCISSOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.SlotZeroMustBeD3D10InputPerVertexData\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_SLOT_ZERO_MUST_BE_D3D10_INPUT_PER_VERTEX_DATA']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_SLOT_ZERO_MUST_BE_D3D10_INPUT_PER_VERTEX_DATA</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_SLOT_ZERO_MUST_BE_D3D10_INPUT_PER_VERTEX_DATA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateResourceNonPow2Mipmap\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATERESOURCE_NON_POW_2_MIPMAP']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATERESOURCE_NON_POW_2_MIPMAP</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATERESOURCE_NON_POW_2_MIPMAP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.CreateSamplerStateBorderNotSupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_CREATESAMPLERSTATE_BORDER_NOT_SUPPORTED']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_CREATESAMPLERSTATE_BORDER_NOT_SUPPORTED</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_CREATESAMPLERSTATE_BORDER_NOT_SUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.OutputMergerSetRenderTargetsNoSRgbMrt\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_OMSETRENDERTARGETS_NO_SRGB_MRT']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_OMSETRENDERTARGETS_NO_SRGB_MRT</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_OMSETRENDERTARGETS_NO_SRGB_MRT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageId.D3D10L9MessagesEnd\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_ID_D3D10L9_MESSAGES_END']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID_D3D10L9_MESSAGES_END</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID_D3D10L9_MESSAGES_END</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.MessageSeverity\">\n            <summary>\t\n            <p>Debug message severity levels for an information queue.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Use these values to allow or deny message categories to pass through the storage and retrieval filters for an information queue (see <strong><see cref=\"T:SharpDX.Direct3D10.InfoQueueFilter\"/></strong>). This API is used by <strong><see cref=\"M:SharpDX.Direct3D10.InfoQueue.AddApplicationMessage(SharpDX.Direct3D10.MessageSeverity,System.String)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_SEVERITY']/*\"/>\t\n            <msdn-id>bb205325</msdn-id>\t\n            <unmanaged>D3D10_MESSAGE_SEVERITY</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_SEVERITY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageSeverity.Corruption\">\n            <summary>\t\n            <dd> <p>Defines some type of corruption which has occurred.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_SEVERITY_CORRUPTION']/*\"/>\t\n            <msdn-id>bb205325</msdn-id>\t\n            <unmanaged>D3D10_MESSAGE_SEVERITY_CORRUPTION</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_SEVERITY_CORRUPTION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageSeverity.Error\">\n            <summary>\t\n            <dd> <p>Defines an error message.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_SEVERITY_ERROR']/*\"/>\t\n            <msdn-id>bb205325</msdn-id>\t\n            <unmanaged>D3D10_MESSAGE_SEVERITY_ERROR</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_SEVERITY_ERROR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageSeverity.Warning\">\n            <summary>\t\n            <dd> <p>Defines a warning message.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_SEVERITY_WARNING']/*\"/>\t\n            <msdn-id>bb205325</msdn-id>\t\n            <unmanaged>D3D10_MESSAGE_SEVERITY_WARNING</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_SEVERITY_WARNING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MessageSeverity.Information\">\n            <summary>\t\n            <dd> <p>Defines an information message.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE_SEVERITY_INFO']/*\"/>\t\n            <msdn-id>bb205325</msdn-id>\t\n            <unmanaged>D3D10_MESSAGE_SEVERITY_INFO</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_SEVERITY_INFO</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.NormalMapFlags\">\n            <summary>\t\n            <p>These flags are used to control how <strong><see cref=\"M:SharpDX.Direct3D10.D3DX10.ComputeNormalMap(SharpDX.Direct3D10.Texture2D,SharpDX.Direct3D10.NormalMapFlags,SharpDX.Direct3D10.Channel,System.Single,SharpDX.Direct3D10.Texture2D)\"/></strong> generates normal maps.  Any number of these flags may be OR'd together in any combination.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_NORMALMAP_FLAG']/*\"/>\t\n            <msdn-id>bb172701</msdn-id>\t\n            <unmanaged>D3DX10_NORMALMAP_FLAG</unmanaged>\t\n            <unmanaged-short>D3DX10_NORMALMAP_FLAG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.NormalMapFlags.MirrorU\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_NORMALMAP_MIRROR_U']/*\"/>\t\n            <unmanaged>D3DX10_NORMALMAP_MIRROR_U</unmanaged>\t\n            <unmanaged-short>D3DX10_NORMALMAP_MIRROR_U</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.NormalMapFlags.MirrorV\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_NORMALMAP_MIRROR_V']/*\"/>\t\n            <unmanaged>D3DX10_NORMALMAP_MIRROR_V</unmanaged>\t\n            <unmanaged-short>D3DX10_NORMALMAP_MIRROR_V</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.NormalMapFlags.Mirror\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_NORMALMAP_MIRROR']/*\"/>\t\n            <unmanaged>D3DX10_NORMALMAP_MIRROR</unmanaged>\t\n            <unmanaged-short>D3DX10_NORMALMAP_MIRROR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.NormalMapFlags.InvertSign\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_NORMALMAP_INVERTSIGN']/*\"/>\t\n            <unmanaged>D3DX10_NORMALMAP_INVERTSIGN</unmanaged>\t\n            <unmanaged-short>D3DX10_NORMALMAP_INVERTSIGN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.NormalMapFlags.ComputeOcclusion\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_NORMALMAP_COMPUTE_OCCLUSION']/*\"/>\t\n            <unmanaged>D3DX10_NORMALMAP_COMPUTE_OCCLUSION</unmanaged>\t\n            <unmanaged-short>D3DX10_NORMALMAP_COMPUTE_OCCLUSION</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.QueryFlags\">\n            <summary>\t\n            <p>Flags that describe miscellaneous query behavior.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This flag is part of a query description (see <strong><see cref=\"T:SharpDX.Direct3D10.QueryDescription\"/></strong>).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_QUERY_MISC_FLAG']/*\"/>\t\n            <msdn-id>bb172406</msdn-id>\t\n            <unmanaged>D3D10_QUERY_MISC_FLAG</unmanaged>\t\n            <unmanaged-short>D3D10_QUERY_MISC_FLAG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.QueryFlags.Predicatehint\">\n            <summary>\t\n            <dd> <p>Tell the hardware that if it is not yet sure if something is hidden or not to draw it anyway. This is only used with an occlusion predicate. Predication data cannot be returned to your application via <strong><see cref=\"M:SharpDX.Direct3D10.Asynchronous.GetData\"/></strong> when using this flag.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_QUERY_MISC_PREDICATEHINT']/*\"/>\t\n            <msdn-id>bb172406</msdn-id>\t\n            <unmanaged>D3D10_QUERY_MISC_PREDICATEHINT</unmanaged>\t\n            <unmanaged-short>D3D10_QUERY_MISC_PREDICATEHINT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.QueryFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.QueryType\">\n            <summary>\t\n            <p>Query types.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_QUERY']/*\"/>\t\n            <msdn-id>bb205335</msdn-id>\t\n            <unmanaged>D3D10_QUERY</unmanaged>\t\n            <unmanaged-short>D3D10_QUERY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.QueryType.Event\">\n            <summary>\t\n            <dd> <p>Determines whether or not the GPU is finished processing commands. When the GPU is finished processing commands <strong>GetData</strong> will return <see cref=\"F:SharpDX.Result.Ok\"/>, and pData will point to a <see cref=\"T:SharpDX.Bool\"/> with a value of <strong>TRUE</strong>. When using this type of query, <strong>Begin</strong> is disabled.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_QUERY_EVENT']/*\"/>\t\n            <msdn-id>bb205335</msdn-id>\t\n            <unmanaged>D3D10_QUERY_EVENT</unmanaged>\t\n            <unmanaged-short>D3D10_QUERY_EVENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.QueryType.Occlusion\">\n            <summary>\t\n            <dd> <p>Get the number of samples that passed the depth and stencil tests in between <strong>Begin</strong> and <strong>End</strong>. <strong>GetData</strong> returns a UINT64. If a depth or stencil test is disabled, then each of those tests will be counted as a pass.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_QUERY_OCCLUSION']/*\"/>\t\n            <msdn-id>bb205335</msdn-id>\t\n            <unmanaged>D3D10_QUERY_OCCLUSION</unmanaged>\t\n            <unmanaged-short>D3D10_QUERY_OCCLUSION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.QueryType.Timestamp\">\n            <summary>\t\n            <dd> <p>Get a timestamp value where <strong>GetData</strong> returns a UINT64. This kind of query is only useful if two timestamp queries are done in the middle of a <see cref=\"F:SharpDX.Direct3D10.QueryType.TimestampDisjoint\"/> query. The difference of two timestamps can be used to determine how many ticks have elapsed, and the <see cref=\"F:SharpDX.Direct3D10.QueryType.TimestampDisjoint\"/> query will determine if that difference is a reliable value and also has a value that shows how to convert the number of ticks into seconds. See <strong><see cref=\"T:SharpDX.Direct3D10.QueryDataTimestampDisjoint\"/></strong>. When using this type of query, <strong>Begin</strong> is disabled.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_QUERY_TIMESTAMP']/*\"/>\t\n            <msdn-id>bb205335</msdn-id>\t\n            <unmanaged>D3D10_QUERY_TIMESTAMP</unmanaged>\t\n            <unmanaged-short>D3D10_QUERY_TIMESTAMP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.QueryType.TimestampDisjoint\">\n            <summary>\t\n            <dd> <p>Determines whether or not a <see cref=\"F:SharpDX.Direct3D10.QueryType.Timestamp\"/> is returning reliable values, and also gives the frequency of the processor enabling you to convert the number of elapsed ticks into seconds. <strong>GetData</strong> will return a <strong><see cref=\"T:SharpDX.Direct3D10.QueryDataTimestampDisjoint\"/></strong>. This type of query should only be invoked once per frame or less.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_QUERY_TIMESTAMP_DISJOINT']/*\"/>\t\n            <msdn-id>bb205335</msdn-id>\t\n            <unmanaged>D3D10_QUERY_TIMESTAMP_DISJOINT</unmanaged>\t\n            <unmanaged-short>D3D10_QUERY_TIMESTAMP_DISJOINT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.QueryType.PipelineStatistics\">\n            <summary>\t\n            <dd> <p>Get pipeline statistics, such as the number of pixel shader invocations in between <strong>Begin</strong> and <strong>End</strong>. <strong>GetData</strong> will return a <strong><see cref=\"T:SharpDX.Direct3D10.QueryDataPipelineStatistics\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_QUERY_PIPELINE_STATISTICS']/*\"/>\t\n            <msdn-id>bb205335</msdn-id>\t\n            <unmanaged>D3D10_QUERY_PIPELINE_STATISTICS</unmanaged>\t\n            <unmanaged-short>D3D10_QUERY_PIPELINE_STATISTICS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.QueryType.OcclusionPredicate\">\n            <summary>\t\n            <dd> <p>Similar to <see cref=\"F:SharpDX.Direct3D10.QueryType.Occlusion\"/>, except <strong>GetData</strong> returns a <see cref=\"T:SharpDX.Bool\"/> indicating whether or not any samples passed the depth and stencil tests - <strong>TRUE</strong> meaning at least one passed, <strong><see cref=\"F:SharpDX.Result.False\"/></strong> meaning none passed.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_QUERY_OCCLUSION_PREDICATE']/*\"/>\t\n            <msdn-id>bb205335</msdn-id>\t\n            <unmanaged>D3D10_QUERY_OCCLUSION_PREDICATE</unmanaged>\t\n            <unmanaged-short>D3D10_QUERY_OCCLUSION_PREDICATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.QueryType.StreamOutputStatistics\">\n            <summary>\t\n            <dd> <p>Get streaming output statistics, such as the number of primitives streamed out in between <strong>Begin</strong> and <strong>End</strong>. <strong>GetData</strong> will return a <strong><see cref=\"T:SharpDX.Direct3D10.StreamOutputStatistics\"/></strong> structure.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_QUERY_SO_STATISTICS']/*\"/>\t\n            <msdn-id>bb205335</msdn-id>\t\n            <unmanaged>D3D10_QUERY_SO_STATISTICS</unmanaged>\t\n            <unmanaged-short>D3D10_QUERY_SO_STATISTICS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.QueryType.StreamOutputOverflowPredicate\">\n            <summary>\t\n            <dd> <p>Determines whether or not any of the streaming output buffers overflowed in between <strong>Begin</strong> and <strong>End</strong>. <strong>GetData</strong> returns a <see cref=\"T:SharpDX.Bool\"/> - <strong>TRUE</strong> meaning there was an overflow, <strong><see cref=\"F:SharpDX.Result.False\"/></strong> meaning there was not an overflow. If streaming output writes to multiple buffers, and one of the buffers overflows, then it will stop writing to all the output buffers. When an overflow is detected by Direct3D it is prevented from happening - no memory is corrupted. This predication may be used in conjunction with an SO_STATISTICS query so that when an overflow occurs the SO_STATISTIC query will let the application know how much memory was needed to prevent an overflow.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_QUERY_SO_OVERFLOW_PREDICATE']/*\"/>\t\n            <msdn-id>bb205335</msdn-id>\t\n            <unmanaged>D3D10_QUERY_SO_OVERFLOW_PREDICATE</unmanaged>\t\n            <unmanaged-short>D3D10_QUERY_SO_OVERFLOW_PREDICATE</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.RenderTargetViewDimension\">\n            <summary>\t\n            <p>Specifies how to access a resource used in a render-target view.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This enumeration is used in <strong><see cref=\"T:SharpDX.Direct3D10.RenderTargetViewDescription\"/></strong> to create a render-target view.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_RTV_DIMENSION']/*\"/>\t\n            <msdn-id>bb172414</msdn-id>\t\n            <unmanaged>D3D10_RTV_DIMENSION</unmanaged>\t\n            <unmanaged-short>D3D10_RTV_DIMENSION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.RenderTargetViewDimension.Unknown\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_RTV_DIMENSION_UNKNOWN']/*\"/>\t\n            <unmanaged>D3D10_RTV_DIMENSION_UNKNOWN</unmanaged>\t\n            <unmanaged-short>D3D10_RTV_DIMENSION_UNKNOWN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.RenderTargetViewDimension.Buffer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_RTV_DIMENSION_BUFFER']/*\"/>\t\n            <unmanaged>D3D10_RTV_DIMENSION_BUFFER</unmanaged>\t\n            <unmanaged-short>D3D10_RTV_DIMENSION_BUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.RenderTargetViewDimension.Texture1D\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_RTV_DIMENSION_TEXTURE1D']/*\"/>\t\n            <unmanaged>D3D10_RTV_DIMENSION_TEXTURE1D</unmanaged>\t\n            <unmanaged-short>D3D10_RTV_DIMENSION_TEXTURE1D</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.RenderTargetViewDimension.Texture1DArray\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_RTV_DIMENSION_TEXTURE1DARRAY']/*\"/>\t\n            <unmanaged>D3D10_RTV_DIMENSION_TEXTURE1DARRAY</unmanaged>\t\n            <unmanaged-short>D3D10_RTV_DIMENSION_TEXTURE1DARRAY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.RenderTargetViewDimension.Texture2D\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_RTV_DIMENSION_TEXTURE2D']/*\"/>\t\n            <unmanaged>D3D10_RTV_DIMENSION_TEXTURE2D</unmanaged>\t\n            <unmanaged-short>D3D10_RTV_DIMENSION_TEXTURE2D</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.RenderTargetViewDimension.Texture2DArray\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_RTV_DIMENSION_TEXTURE2DARRAY']/*\"/>\t\n            <unmanaged>D3D10_RTV_DIMENSION_TEXTURE2DARRAY</unmanaged>\t\n            <unmanaged-short>D3D10_RTV_DIMENSION_TEXTURE2DARRAY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.RenderTargetViewDimension.Texture2DMultisampled\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_RTV_DIMENSION_TEXTURE2DMS']/*\"/>\t\n            <unmanaged>D3D10_RTV_DIMENSION_TEXTURE2DMS</unmanaged>\t\n            <unmanaged-short>D3D10_RTV_DIMENSION_TEXTURE2DMS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.RenderTargetViewDimension.Texture2DMultisampledArray\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_RTV_DIMENSION_TEXTURE2DMSARRAY']/*\"/>\t\n            <unmanaged>D3D10_RTV_DIMENSION_TEXTURE2DMSARRAY</unmanaged>\t\n            <unmanaged-short>D3D10_RTV_DIMENSION_TEXTURE2DMSARRAY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.RenderTargetViewDimension.Texture3D\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_RTV_DIMENSION_TEXTURE3D']/*\"/>\t\n            <unmanaged>D3D10_RTV_DIMENSION_TEXTURE3D</unmanaged>\t\n            <unmanaged-short>D3D10_RTV_DIMENSION_TEXTURE3D</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.ResourceDimension\">\n            <summary>\t\n            <p>Identifies the type of resource being used.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This enumeration is used in <strong><see cref=\"M:SharpDX.Direct3D10.Resource.GetTypeInfo(SharpDX.Direct3D10.ResourceDimension@)\"/></strong>, and <strong><see cref=\"T:SharpDX.Direct3D10.ImageInformation\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_RESOURCE_DIMENSION']/*\"/>\t\n            <msdn-id>bb172411</msdn-id>\t\n            <unmanaged>D3D10_RESOURCE_DIMENSION</unmanaged>\t\n            <unmanaged-short>D3D10_RESOURCE_DIMENSION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ResourceDimension.Unknown\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_RESOURCE_DIMENSION_UNKNOWN']/*\"/>\t\n            <unmanaged>D3D10_RESOURCE_DIMENSION_UNKNOWN</unmanaged>\t\n            <unmanaged-short>D3D10_RESOURCE_DIMENSION_UNKNOWN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ResourceDimension.Buffer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_RESOURCE_DIMENSION_BUFFER']/*\"/>\t\n            <unmanaged>D3D10_RESOURCE_DIMENSION_BUFFER</unmanaged>\t\n            <unmanaged-short>D3D10_RESOURCE_DIMENSION_BUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ResourceDimension.Texture1D\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_RESOURCE_DIMENSION_TEXTURE1D']/*\"/>\t\n            <unmanaged>D3D10_RESOURCE_DIMENSION_TEXTURE1D</unmanaged>\t\n            <unmanaged-short>D3D10_RESOURCE_DIMENSION_TEXTURE1D</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ResourceDimension.Texture2D\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_RESOURCE_DIMENSION_TEXTURE2D']/*\"/>\t\n            <unmanaged>D3D10_RESOURCE_DIMENSION_TEXTURE2D</unmanaged>\t\n            <unmanaged-short>D3D10_RESOURCE_DIMENSION_TEXTURE2D</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ResourceDimension.Texture3D\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_RESOURCE_DIMENSION_TEXTURE3D']/*\"/>\t\n            <unmanaged>D3D10_RESOURCE_DIMENSION_TEXTURE3D</unmanaged>\t\n            <unmanaged-short>D3D10_RESOURCE_DIMENSION_TEXTURE3D</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.ResourceOptionFlags\">\n            <summary>\t\n            <p>Identifies other, less common options for resources.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This enumeration is used in <strong><see cref=\"T:SharpDX.Direct3D10.BufferDescription\"/></strong>, <strong><see cref=\"T:SharpDX.Direct3D10.Texture1DDescription\"/></strong>, <strong><see cref=\"T:SharpDX.Direct3D10.Texture2DDescription\"/></strong>,  <strong><see cref=\"T:SharpDX.Direct3D10.Texture3DDescription\"/></strong>, <strong><see cref=\"T:SharpDX.Direct3D10.ImageInformation\"/></strong>, and <strong><see cref=\"T:SharpDX.Direct3D10.ImageLoadInformation\"/></strong>.</p><p>These flags can be combined by bitwise OR.</p><p><see cref=\"F:SharpDX.Direct3D10.ResourceOptionFlags.Shared\"/> and <see cref=\"F:SharpDX.Direct3D10.ResourceOptionFlags.SharedKeyedmutex\"/> are mutually exclusive flags:  either one may be set in the resource creation calls but not both simultaneously.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_RESOURCE_MISC_FLAG']/*\"/>\t\n            <msdn-id>bb172412</msdn-id>\t\n            <unmanaged>D3D10_RESOURCE_MISC_FLAG</unmanaged>\t\n            <unmanaged-short>D3D10_RESOURCE_MISC_FLAG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ResourceOptionFlags.GenerateMipMaps\">\n            <summary>\t\n            <dd> <p>Enables an application to call <strong><see cref=\"M:SharpDX.Direct3D10.Device.GenerateMips(SharpDX.Direct3D10.ShaderResourceView)\"/></strong> on  a texture resource. The resource must be created  with the <strong>bind flags</strong> that specify that the resource is a render target and a shader resource.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_RESOURCE_MISC_GENERATE_MIPS']/*\"/>\t\n            <msdn-id>bb172412</msdn-id>\t\n            <unmanaged>D3D10_RESOURCE_MISC_GENERATE_MIPS</unmanaged>\t\n            <unmanaged-short>D3D10_RESOURCE_MISC_GENERATE_MIPS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ResourceOptionFlags.Shared\">\n            <summary>\t\n            <dd> <p>Enables the sharing of resource data between two or more Direct3D devices. The only resources that can be shared are 2D non-mipmapped textures.</p> <p>WARP and REF devices do not support shared resources. Attempting to create a resource with this flag on either a WARP or REF device will cause the create method to return an E_OUTOFMEMORY error code.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_RESOURCE_MISC_SHARED']/*\"/>\t\n            <msdn-id>bb172412</msdn-id>\t\n            <unmanaged>D3D10_RESOURCE_MISC_SHARED</unmanaged>\t\n            <unmanaged-short>D3D10_RESOURCE_MISC_SHARED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ResourceOptionFlags.TextureCube\">\n            <summary>\t\n            <dd> <p>Enables an application to create a cube texture from a  Texture2DArray that contains 6 textures.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_RESOURCE_MISC_TEXTURECUBE']/*\"/>\t\n            <msdn-id>bb172412</msdn-id>\t\n            <unmanaged>D3D10_RESOURCE_MISC_TEXTURECUBE</unmanaged>\t\n            <unmanaged-short>D3D10_RESOURCE_MISC_TEXTURECUBE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ResourceOptionFlags.SharedKeyedmutex\">\n            <summary>\t\n            <dd> <p>Enables the resource created to be synchronized using the <see cref=\"M:SharpDX.DXGI.KeyedMutex.Acquire(System.Int64,System.Int32)\"/> and ReleaseSync APIs.  The following resource creation D3D10 APIs, that all take a <see cref=\"T:SharpDX.Direct3D10.ResourceOptionFlags\"/> parameter, have been extended to support the new flag.</p> <ul> <li>ID3D10Device1::CreateTexture1D</li> <li>ID3D10Device1::CreateTexture2D</li> <li>ID3D10Device1::CreateTexture3D</li> <li>ID3D10Device1::CreateBuffer</li> </ul> <p>If any of the listed functions are called with the <see cref=\"F:SharpDX.Direct3D10.ResourceOptionFlags.SharedKeyedmutex\"/> flag set, the interface returned can be  queried for an <see cref=\"T:SharpDX.DXGI.KeyedMutex\"/> interface, which implements AcquireSync and ReleaseSync APIs to synchronize access to the surface.  The device creating the surface, and any other device opening the surface (using OpenSharedResource) is required to  call <see cref=\"M:SharpDX.DXGI.KeyedMutex.Acquire(System.Int64,System.Int32)\"/> before any rendering commands to the surface, and <see cref=\"M:SharpDX.DXGI.KeyedMutex.Release(System.Int64)\"/> when it is done rendering.</p> <p>WARP and REF devices do not support shared resources. Attempting to create a resource with this flag on either a WARP or REF device will cause the create method to return an E_OUTOFMEMORY error code.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_RESOURCE_MISC_SHARED_KEYEDMUTEX']/*\"/>\t\n            <msdn-id>bb172412</msdn-id>\t\n            <unmanaged>D3D10_RESOURCE_MISC_SHARED_KEYEDMUTEX</unmanaged>\t\n            <unmanaged-short>D3D10_RESOURCE_MISC_SHARED_KEYEDMUTEX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ResourceOptionFlags.GdiCompatible\">\n            <summary>\t\n            <dd> <p>Enables a surface to be used for GDI interoperability.  Setting this flag enables rendering on the surface  via <see cref=\"M:SharpDX.DXGI.Surface1.GetDC(SharpDX.Bool)\"/>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_RESOURCE_MISC_GDI_COMPATIBLE']/*\"/>\t\n            <msdn-id>bb172412</msdn-id>\t\n            <unmanaged>D3D10_RESOURCE_MISC_GDI_COMPATIBLE</unmanaged>\t\n            <unmanaged-short>D3D10_RESOURCE_MISC_GDI_COMPATIBLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ResourceOptionFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.ResourceUsage\">\n            <summary>\t\n            <p>Identifies expected resource use during rendering. The usage directly reflects whether a resource is accessible by the CPU and/or the GPU.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>An application identifies the way a resource is intended to be used (its usage) in a resource description. There are several structures for creating resources including: <strong><see cref=\"T:SharpDX.Direct3D10.Texture1DDescription\"/></strong>, <strong><see cref=\"T:SharpDX.Direct3D10.Texture2DDescription\"/></strong>, <strong><see cref=\"T:SharpDX.Direct3D10.Texture3DDescription\"/></strong>, <strong><see cref=\"T:SharpDX.Direct3D10.BufferDescription\"/></strong>, and <strong><see cref=\"T:SharpDX.Direct3D10.ImageLoadInformation\"/></strong>.</p><table> <tr><td> <p>Differences between Direct3D 9 and Direct3D 10:</p> <p>In Direct3D 9, you specify the type of memory a resource should be created in at resource creation time (using <see cref=\"!:SharpDX.Direct3D9.Pool\"/>). It was an application's job to decide what memory pool would provide the best combination of functionality and performance.</p> <p>In Direct3D 10, an application no longer specifies what type of memory (the pool) to create a resource in. Instead, you specify the intended usage of the resource, and let the runtime (in concert with the driver and a memory manager) choose the type of memory that will achieve the best performance.</p> </td></tr> </table><p>?</p>Resource Usage Restrictions<p>Each usage dictates a tradeoff between functionality and performance. In general, resource accessing is accomplished with the following APIs.</p><ul> <li>CPU access is done with <strong><see cref=\"M:SharpDX.Direct3D10.Buffer.Map(SharpDX.Direct3D10.MapMode)\"/></strong>, <strong><see cref=\"M:SharpDX.Direct3D10.Texture1D.Map(System.Int32,SharpDX.Direct3D10.MapMode,SharpDX.Direct3D10.MapFlags,System.IntPtr@)\"/></strong>, <strong><see cref=\"M:SharpDX.Direct3D10.Texture2D.Map(System.Int32,SharpDX.Direct3D10.MapMode,SharpDX.Direct3D10.MapFlags,SharpDX.DataRectangle@)\"/></strong>, or <strong><see cref=\"M:SharpDX.Direct3D10.Texture3D.Map(System.Int32,SharpDX.Direct3D10.MapMode,SharpDX.Direct3D10.MapFlags,SharpDX.DataBox@)\"/></strong> </li> <li>GPU access is done with <strong>CopySubresourceRegion</strong>, <strong>CopyResource</strong>, or <strong>UpdateSubresource</strong>.</li> </ul><p>Use the following table to choose the usage that best describes how the resource will need to be accessed by the CPU and/or the GPU. Of course, there will be performance tradeoffs.</p><table> <tr><th>Resource Usage</th><th>Default</th><th>Dynamic</th><th>Immutable</th><th>Staging</th></tr> <tr><td>GPU-Read</td><td>yes</td><td>yes1</td><td>yes</td><td>yes1, 2</td></tr> <tr><td>GPU-Write</td><td>yes1</td><td></td><td></td><td>yes1, 2</td></tr> <tr><td>CPU-Read</td><td></td><td></td><td></td><td>yes1, 2</td></tr> <tr><td>CPU-Write</td><td></td><td>yes</td><td></td><td>yes1, 2</td></tr> </table><p>?</p><ul> <li>1 - This is restricted to <strong>CopySubresourceRegion</strong>, <strong>CopyResource</strong>, and <strong>UpdateSubresource</strong>.</li> <li>2 - Cannot be a depth-stencil buffer or a multisampled render target.</li> </ul>Resource Bind Options<p>To maximize performance, not all resource usage options can be used as input or output resources to the pipeline. This table identifies these limitations.</p><table> <tr><th>Resource Can Be Bound As</th><th>Default</th><th>Dynamic</th><th>Immutable</th><th>Staging</th></tr> <tr><td>Input to a Stage</td><td>yes3</td><td>yes4</td><td>yes</td><td></td></tr> <tr><td>Output from a Stage</td><td>yes3</td><td></td><td></td><td></td></tr> </table><p>?</p><ul> <li>3 - If bound as an input and an output using different views, each view must use different subresources.</li> <li>4 - The resource can only be created with a single subresource. The resource cannot be a texture array. The resource cannot be a mipmap chain.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_USAGE']/*\"/>\t\n            <msdn-id>bb172499</msdn-id>\t\n            <unmanaged>D3D10_USAGE</unmanaged>\t\n            <unmanaged-short>D3D10_USAGE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ResourceUsage.Default\">\n            <summary>\t\n            <dd> <p>A resource that requires read and write access by the GPU. This is likely to be the most common usage choice.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_USAGE_DEFAULT']/*\"/>\t\n            <msdn-id>bb172499</msdn-id>\t\n            <unmanaged>D3D10_USAGE_DEFAULT</unmanaged>\t\n            <unmanaged-short>D3D10_USAGE_DEFAULT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ResourceUsage.Immutable\">\n            <summary>\t\n            <dd> <p>A resource that can only be read by the GPU. It cannot be written by the GPU, and cannot be accessed at all by the CPU. This type of resource must be initialized when it is created, since it cannot be changed after creation.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_USAGE_IMMUTABLE']/*\"/>\t\n            <msdn-id>bb172499</msdn-id>\t\n            <unmanaged>D3D10_USAGE_IMMUTABLE</unmanaged>\t\n            <unmanaged-short>D3D10_USAGE_IMMUTABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ResourceUsage.Dynamic\">\n            <summary>\t\n            <dd> <p>A resource that is accessible by both the GPU and the CPU (write only). A dynamic resource is a good choice for a resource that will be updated by the CPU at least once per frame. To write to a dynamic resource on the CPU, use a <strong>Map</strong> method. You can write to a dynamic resource on the GPU using <strong>CopyResource</strong> or <strong>CopySubresourceRegion</strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_USAGE_DYNAMIC']/*\"/>\t\n            <msdn-id>bb172499</msdn-id>\t\n            <unmanaged>D3D10_USAGE_DYNAMIC</unmanaged>\t\n            <unmanaged-short>D3D10_USAGE_DYNAMIC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ResourceUsage.Staging\">\n            <summary>\t\n            <dd> <p>A resource that supports data transfer (copy) from the GPU to the CPU.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_USAGE_STAGING']/*\"/>\t\n            <msdn-id>bb172499</msdn-id>\t\n            <unmanaged>D3D10_USAGE_STAGING</unmanaged>\t\n            <unmanaged-short>D3D10_USAGE_STAGING</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.SpriteFlags\">\n            <summary>\t\n            <p>Sprite flags that tell the sprite drawing API how to behave. These are passed into <strong><see cref=\"M:SharpDX.Direct3D10.Sprite.Begin(SharpDX.Direct3D10.SpriteFlags)\"/></strong>.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>After a front-to-back or back-to-front sort is done, it will automatically do a secondary sort by texture. This is helpful for when there are many sprites with the same texture all on the same plane, such as when drawing the user interface in a game.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_SPRITE_FLAG']/*\"/>\t\n            <msdn-id>bb172704</msdn-id>\t\n            <unmanaged>D3DX10_SPRITE_FLAG</unmanaged>\t\n            <unmanaged-short>D3DX10_SPRITE_FLAG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.SpriteFlags.GroupByTexture\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_SPRITE_SORT_TEXTURE']/*\"/>\t\n            <unmanaged>D3DX10_SPRITE_SORT_TEXTURE</unmanaged>\t\n            <unmanaged-short>D3DX10_SPRITE_SORT_TEXTURE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.SpriteFlags.SortBackToFront\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_SPRITE_SORT_DEPTH_BACK_TO_FRONT']/*\"/>\t\n            <unmanaged>D3DX10_SPRITE_SORT_DEPTH_BACK_TO_FRONT</unmanaged>\t\n            <unmanaged-short>D3DX10_SPRITE_SORT_DEPTH_BACK_TO_FRONT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.SpriteFlags.SortFrontToBack\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_SPRITE_SORT_DEPTH_FRONT_TO_BACK']/*\"/>\t\n            <unmanaged>D3DX10_SPRITE_SORT_DEPTH_FRONT_TO_BACK</unmanaged>\t\n            <unmanaged-short>D3DX10_SPRITE_SORT_DEPTH_FRONT_TO_BACK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.SpriteFlags.SaveState\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_SPRITE_SAVE_STATE']/*\"/>\t\n            <unmanaged>D3DX10_SPRITE_SAVE_STATE</unmanaged>\t\n            <unmanaged-short>D3DX10_SPRITE_SAVE_STATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.SpriteFlags.IncreaseTextureReferenceCount\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_SPRITE_ADDREF_TEXTURES']/*\"/>\t\n            <unmanaged>D3DX10_SPRITE_ADDREF_TEXTURES</unmanaged>\t\n            <unmanaged-short>D3DX10_SPRITE_ADDREF_TEXTURES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.SpriteFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.StandardMultisampleQualityLevels\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_STANDARD_MULTISAMPLE_QUALITY_LEVELS']/*\"/>\t\n            <unmanaged>D3D10_STANDARD_MULTISAMPLE_QUALITY_LEVELS</unmanaged>\t\n            <unmanaged-short>D3D10_STANDARD_MULTISAMPLE_QUALITY_LEVELS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.StandardMultisampleQualityLevels.StandardMultisamplePattern\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_STANDARD_MULTISAMPLE_PATTERN']/*\"/>\t\n            <unmanaged>D3D10_STANDARD_MULTISAMPLE_PATTERN</unmanaged>\t\n            <unmanaged-short>D3D10_STANDARD_MULTISAMPLE_PATTERN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.StandardMultisampleQualityLevels.CenterMultisamplePattern\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_CENTER_MULTISAMPLE_PATTERN']/*\"/>\t\n            <unmanaged>D3D10_CENTER_MULTISAMPLE_PATTERN</unmanaged>\t\n            <unmanaged-short>D3D10_CENTER_MULTISAMPLE_PATTERN</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.StencilOperation\">\n            <summary>\t\n            <p>The stencil operations that can be performed during depth-stencil testing.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_STENCIL_OP']/*\"/>\t\n            <msdn-id>bb172455</msdn-id>\t\n            <unmanaged>D3D10_STENCIL_OP</unmanaged>\t\n            <unmanaged-short>D3D10_STENCIL_OP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.StencilOperation.Keep\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_STENCIL_OP_KEEP']/*\"/>\t\n            <unmanaged>D3D10_STENCIL_OP_KEEP</unmanaged>\t\n            <unmanaged-short>D3D10_STENCIL_OP_KEEP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.StencilOperation.Zero\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_STENCIL_OP_ZERO']/*\"/>\t\n            <unmanaged>D3D10_STENCIL_OP_ZERO</unmanaged>\t\n            <unmanaged-short>D3D10_STENCIL_OP_ZERO</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.StencilOperation.Replace\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_STENCIL_OP_REPLACE']/*\"/>\t\n            <unmanaged>D3D10_STENCIL_OP_REPLACE</unmanaged>\t\n            <unmanaged-short>D3D10_STENCIL_OP_REPLACE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.StencilOperation.IncrementAndClamp\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_STENCIL_OP_INCR_SAT']/*\"/>\t\n            <unmanaged>D3D10_STENCIL_OP_INCR_SAT</unmanaged>\t\n            <unmanaged-short>D3D10_STENCIL_OP_INCR_SAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.StencilOperation.DecrementAndClamp\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_STENCIL_OP_DECR_SAT']/*\"/>\t\n            <unmanaged>D3D10_STENCIL_OP_DECR_SAT</unmanaged>\t\n            <unmanaged-short>D3D10_STENCIL_OP_DECR_SAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.StencilOperation.Invert\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_STENCIL_OP_INVERT']/*\"/>\t\n            <unmanaged>D3D10_STENCIL_OP_INVERT</unmanaged>\t\n            <unmanaged-short>D3D10_STENCIL_OP_INVERT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.StencilOperation.Increment\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_STENCIL_OP_INCR']/*\"/>\t\n            <unmanaged>D3D10_STENCIL_OP_INCR</unmanaged>\t\n            <unmanaged-short>D3D10_STENCIL_OP_INCR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.StencilOperation.Decrement\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_STENCIL_OP_DECR']/*\"/>\t\n            <unmanaged>D3D10_STENCIL_OP_DECR</unmanaged>\t\n            <unmanaged-short>D3D10_STENCIL_OP_DECR</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.TextureAddressMode\">\n            <summary>\t\n            <p>Identify a technique for resolving texture coordinates that are outside of the boundaries of a texture.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEXTURE_ADDRESS_MODE']/*\"/>\t\n            <msdn-id>bb172483</msdn-id>\t\n            <unmanaged>D3D10_TEXTURE_ADDRESS_MODE</unmanaged>\t\n            <unmanaged-short>D3D10_TEXTURE_ADDRESS_MODE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.TextureAddressMode.Wrap\">\n            <summary>\t\n            <dd> <p>Tile the texture at every integer junction. For example, for u values between 0 and 3, the texture is repeated three times.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEXTURE_ADDRESS_WRAP']/*\"/>\t\n            <msdn-id>bb172483</msdn-id>\t\n            <unmanaged>D3D10_TEXTURE_ADDRESS_WRAP</unmanaged>\t\n            <unmanaged-short>D3D10_TEXTURE_ADDRESS_WRAP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.TextureAddressMode.Mirror\">\n            <summary>\t\n            <dd> <p>Flip the texture at every integer junction. For u values between 0 and 1, for example, the texture is addressed normally; between 1 and 2, the texture is flipped (mirrored); between 2 and 3, the texture is normal again; and so on. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEXTURE_ADDRESS_MIRROR']/*\"/>\t\n            <msdn-id>bb172483</msdn-id>\t\n            <unmanaged>D3D10_TEXTURE_ADDRESS_MIRROR</unmanaged>\t\n            <unmanaged-short>D3D10_TEXTURE_ADDRESS_MIRROR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.TextureAddressMode.Clamp\">\n            <summary>\t\n            <dd> <p>Texture coordinates outside the range [0.0, 1.0] are set to the texture color at 0.0 or 1.0, respectively.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEXTURE_ADDRESS_CLAMP']/*\"/>\t\n            <msdn-id>bb172483</msdn-id>\t\n            <unmanaged>D3D10_TEXTURE_ADDRESS_CLAMP</unmanaged>\t\n            <unmanaged-short>D3D10_TEXTURE_ADDRESS_CLAMP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.TextureAddressMode.Border\">\n            <summary>\t\n            <dd> <p>Texture coordinates outside the range [0.0, 1.0] are set to the border color specified in <strong><see cref=\"T:SharpDX.Direct3D10.SamplerStateDescription\"/></strong> or HLSL code.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEXTURE_ADDRESS_BORDER']/*\"/>\t\n            <msdn-id>bb172483</msdn-id>\t\n            <unmanaged>D3D10_TEXTURE_ADDRESS_BORDER</unmanaged>\t\n            <unmanaged-short>D3D10_TEXTURE_ADDRESS_BORDER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.TextureAddressMode.MirrorOnce\">\n            <summary>\t\n            <dd> <p>Similar to <see cref=\"F:SharpDX.Direct3D10.TextureAddressMode.Mirror\"/> and <see cref=\"F:SharpDX.Direct3D10.TextureAddressMode.Clamp\"/>. Takes the absolute value of the texture coordinate (thus, mirroring around 0), and then clamps to the maximum value.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEXTURE_ADDRESS_MIRROR_ONCE']/*\"/>\t\n            <msdn-id>bb172483</msdn-id>\t\n            <unmanaged>D3D10_TEXTURE_ADDRESS_MIRROR_ONCE</unmanaged>\t\n            <unmanaged-short>D3D10_TEXTURE_ADDRESS_MIRROR_ONCE</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.TextureCubeFace\">\n            <summary>\t\n            <p>The different faces of a cube texture.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEXTURECUBE_FACE']/*\"/>\t\n            <msdn-id>bb172482</msdn-id>\t\n            <unmanaged>D3D10_TEXTURECUBE_FACE</unmanaged>\t\n            <unmanaged-short>D3D10_TEXTURECUBE_FACE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.TextureCubeFace.PositiveX\">\n            <summary>\t\n            <dd> <p>Positive X face.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEXTURECUBE_FACE_POSITIVE_X']/*\"/>\t\n            <msdn-id>bb172482</msdn-id>\t\n            <unmanaged>D3D10_TEXTURECUBE_FACE_POSITIVE_X</unmanaged>\t\n            <unmanaged-short>D3D10_TEXTURECUBE_FACE_POSITIVE_X</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.TextureCubeFace.NegativeX\">\n            <summary>\t\n            <dd> <p>Negative X face.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEXTURECUBE_FACE_NEGATIVE_X']/*\"/>\t\n            <msdn-id>bb172482</msdn-id>\t\n            <unmanaged>D3D10_TEXTURECUBE_FACE_NEGATIVE_X</unmanaged>\t\n            <unmanaged-short>D3D10_TEXTURECUBE_FACE_NEGATIVE_X</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.TextureCubeFace.PositiveY\">\n            <summary>\t\n            <dd> <p>Positive Y face.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEXTURECUBE_FACE_POSITIVE_Y']/*\"/>\t\n            <msdn-id>bb172482</msdn-id>\t\n            <unmanaged>D3D10_TEXTURECUBE_FACE_POSITIVE_Y</unmanaged>\t\n            <unmanaged-short>D3D10_TEXTURECUBE_FACE_POSITIVE_Y</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.TextureCubeFace.NegativeY\">\n            <summary>\t\n            <dd> <p>Negative Y face.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEXTURECUBE_FACE_NEGATIVE_Y']/*\"/>\t\n            <msdn-id>bb172482</msdn-id>\t\n            <unmanaged>D3D10_TEXTURECUBE_FACE_NEGATIVE_Y</unmanaged>\t\n            <unmanaged-short>D3D10_TEXTURECUBE_FACE_NEGATIVE_Y</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.TextureCubeFace.PositiveZ\">\n            <summary>\t\n            <dd> <p>Positive Z face.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEXTURECUBE_FACE_POSITIVE_Z']/*\"/>\t\n            <msdn-id>bb172482</msdn-id>\t\n            <unmanaged>D3D10_TEXTURECUBE_FACE_POSITIVE_Z</unmanaged>\t\n            <unmanaged-short>D3D10_TEXTURECUBE_FACE_POSITIVE_Z</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.TextureCubeFace.NegativeZ\">\n            <summary>\t\n            <dd> <p>Negative Z face.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEXTURECUBE_FACE_NEGATIVE_Z']/*\"/>\t\n            <msdn-id>bb172482</msdn-id>\t\n            <unmanaged>D3D10_TEXTURECUBE_FACE_NEGATIVE_Z</unmanaged>\t\n            <unmanaged-short>D3D10_TEXTURECUBE_FACE_NEGATIVE_Z</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.D3D10\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.Direct3D10.D3D10']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.D3D10.SdkVersion\">\n            <summary>Constant SdkVersion.</summary>\n            <unmanaged>D3D10_SDK_VERSION</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.D3D10.SdkVersion1\">\n            <summary>Constant SdkVersion1.</summary>\n            <unmanaged>D3D10_1_SDK_VERSION</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.D3D10.CreateDeviceAndSwapChain1(SharpDX.DXGI.Adapter,SharpDX.Direct3D10.DriverType,System.IntPtr,SharpDX.Direct3D10.DeviceCreationFlags,SharpDX.Direct3D10.FeatureLevel,System.Int32,SharpDX.DXGI.SwapChainDescription@,SharpDX.DXGI.SwapChain@,SharpDX.Direct3D10.Device1@)\">\n            <summary>\t\n            <p>Create a Direct3D 10.1 device and a swap chain.</p>\t\n            </summary>\t\n            <param name=\"adapterRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.DXGI.Adapter\"/></strong>.</p> </dd></param>\t\n            <param name=\"driverType\"><dd>  <p>The type of driver for the device. See <strong><see cref=\"T:SharpDX.Direct3D10.DriverType\"/></strong>.</p> </dd></param>\t\n            <param name=\"software\"><dd>  <p>A handle to the DLL that implements a software rasterizer. Must be <strong><c>null</c></strong> if DriverType is non-software.  The HMODULE of a DLL can be obtained with LoadLibrary,  LoadLibraryEx,  or GetModuleHandle.</p> </dd></param>\t\n            <param name=\"flags\"><dd>  <p>Optional. Device creation flags (see <strong><see cref=\"T:SharpDX.Direct3D10.DeviceCreationFlags\"/></strong>) that  enable API layers. These flags can be bitwise OR'd together.</p> </dd></param>\t\n            <param name=\"hardwareLevel\"><dd>  <p>The version of hardware that is available for acceleration (see <strong><see cref=\"T:SharpDX.Direct3D10.FeatureLevel\"/></strong>).</p> </dd></param>\t\n            <param name=\"sDKVersion\"><dd>  <p>Bit flag that indicates the version of the SDK. Should be <see cref=\"F:SharpDX.Direct3D10.D3D10.SdkVersion1\"/>, defined in D3D10.h.</p> </dd></param>\t\n            <param name=\"swapChainDescRef\"><dd>  <p>Description of the swap chain. See <strong><see cref=\"T:SharpDX.DXGI.SwapChainDescription\"/></strong>.</p> </dd></param>\t\n            <param name=\"swapChainOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.DXGI.SwapChain\"/></strong>.</p> </dd></param>\t\n            <param name=\"deviceOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D10.Device1\"/> Interface</strong> that will receive the newly created device.</p> </dd></param>\t\n            <returns><p>This method returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>To create a device without creating a swap chain, see <strong><see cref=\"M:SharpDX.Direct3D10.D3D10.CreateDevice1(SharpDX.DXGI.Adapter,SharpDX.Direct3D10.DriverType,System.IntPtr,SharpDX.Direct3D10.DeviceCreationFlags,SharpDX.Direct3D10.FeatureLevel,System.Int32,SharpDX.Direct3D10.Device1)\"/></strong>.</p><p>This method requires Windows Vista Service Pack 1, Windows Server 2008, or later release of Windows.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10CreateDeviceAndSwapChain1']/*\"/>\t\n            <msdn-id>bb694527</msdn-id>\t\n            <unmanaged>HRESULT D3D10CreateDeviceAndSwapChain1([In] IDXGIAdapter* pAdapter,[In] D3D10_DRIVER_TYPE DriverType,[In] HINSTANCE Software,[In] D3D10_CREATE_DEVICE_FLAG Flags,[In] D3D10_FEATURE_LEVEL1 HardwareLevel,[In] unsigned int SDKVersion,[In] DXGI_SWAP_CHAIN_DESC* pSwapChainDesc,[Out] IDXGISwapChain** ppSwapChain,[Out] ID3D10Device1** ppDevice)</unmanaged>\t\n            <unmanaged-short>D3D10CreateDeviceAndSwapChain1</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.D3D10.CreateDevice1(SharpDX.DXGI.Adapter,SharpDX.Direct3D10.DriverType,System.IntPtr,SharpDX.Direct3D10.DeviceCreationFlags,SharpDX.Direct3D10.FeatureLevel,System.Int32,SharpDX.Direct3D10.Device1)\">\n            <summary>\t\n            <p>Create a Direct3D 10.1 device that represents the display adapter.</p>\t\n            </summary>\t\n            <param name=\"adapterRef\"><dd>  <p>Pointer to the display adapter (see <strong><see cref=\"T:SharpDX.DXGI.Adapter\"/></strong>) when creating a hardware device; otherwise set this parameter to  <strong><c>null</c></strong>. If <strong><c>null</c></strong> is specified when creating a hardware device, Direct3D will use the first adapter enumerated  by <strong>EnumAdapters</strong>.</p> </dd></param>\t\n            <param name=\"driverType\"><dd>  <p>The device-driver type (see <strong><see cref=\"T:SharpDX.Direct3D10.DriverType\"/></strong>). The driver type determines the type of device you will create.</p> </dd></param>\t\n            <param name=\"software\"><dd>  <p>This is set to <strong><c>null</c></strong> except for <see cref=\"F:SharpDX.Direct3D10.DriverType.Software\"/> driver types.</p> </dd></param>\t\n            <param name=\"flags\"><dd>  <p>Optional. Device creation flags (see <strong><see cref=\"T:SharpDX.Direct3D10.DeviceCreationFlags\"/></strong>) that  enable API layers. These flags can be bitwise OR'd together.</p> </dd></param>\t\n            <param name=\"hardwareLevel\"><dd>  <p>The version of hardware that is available for acceleration (see <strong><see cref=\"T:SharpDX.Direct3D10.FeatureLevel\"/></strong>).</p> </dd></param>\t\n            <param name=\"sDKVersion\"><dd>  <p>Bit flag that indicates the version of the SDK. Should be <see cref=\"F:SharpDX.Direct3D10.D3D10.SdkVersion1\"/>, defined in D3D10.h.</p> </dd></param>\t\n            <param name=\"deviceOut\"><dd>  <p>Address of a reference to the device created (see <strong><see cref=\"T:SharpDX.Direct3D10.Device1\"/> Interface</strong>).</p> </dd></param>\t\n            <returns><p>This method returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>To create a device and a swap chain at the same time, see <strong><see cref=\"M:SharpDX.Direct3D10.D3D10.CreateDeviceAndSwapChain1(SharpDX.DXGI.Adapter,SharpDX.Direct3D10.DriverType,System.IntPtr,SharpDX.Direct3D10.DeviceCreationFlags,SharpDX.Direct3D10.FeatureLevel,System.Int32,SharpDX.DXGI.SwapChainDescription@,SharpDX.DXGI.SwapChain@,SharpDX.Direct3D10.Device1@)\"/></strong>.</p><p>This method requires Windows Vista Service Pack 1, Windows Server 2008, or later release of Windows.</p><p>The object returned by <see cref=\"M:SharpDX.Direct3D10.D3D10.CreateDevice1(SharpDX.DXGI.Adapter,SharpDX.Direct3D10.DriverType,System.IntPtr,SharpDX.Direct3D10.DeviceCreationFlags,SharpDX.Direct3D10.FeatureLevel,System.Int32,SharpDX.Direct3D10.Device1)\"/> implements the <see cref=\"T:SharpDX.ComObject\"/> interface  and can be queried for other  interfaces the object supports. To retrieve the <strong><see cref=\"T:SharpDX.DXGI.Device\"/></strong> interface of the object the following code could be used.</p><pre><code> <see cref=\"T:SharpDX.DXGI.Device\"/> * pDXGIDevice;\t\n            hr = g_pd3dDevice-&gt;QueryInterface(__uuidof(<see cref=\"T:SharpDX.DXGI.Device\"/>), (void **)&amp;pDXGIDevice); </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10CreateDevice1']/*\"/>\t\n            <msdn-id>bb694526</msdn-id>\t\n            <unmanaged>HRESULT D3D10CreateDevice1([In] IDXGIAdapter* pAdapter,[In] D3D10_DRIVER_TYPE DriverType,[In] HINSTANCE Software,[In] D3D10_CREATE_DEVICE_FLAG Flags,[In] D3D10_FEATURE_LEVEL1 HardwareLevel,[In] unsigned int SDKVersion,[Out, Fast] ID3D10Device1** ppDevice)</unmanaged>\t\n            <unmanaged-short>D3D10CreateDevice1</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.D3D10.CreateEffectPoolFromMemory(System.IntPtr,SharpDX.PointerSize,System.Int32,SharpDX.Direct3D10.Device,SharpDX.Direct3D10.EffectPool)\">\n            <summary>\t\n            <p>Create an effect pool (or shared memory location), to enable sharing variables between effects.</p>\t\n            </summary>\t\n            <param name=\"dataRef\"><dd>  <p>A reference to a compiled effect.</p> </dd></param>\t\n            <param name=\"dataLength\"><dd>  <p>Length of <em>pData</em>.</p> </dd></param>\t\n            <param name=\"fXFlags\"><dd>  <p>Effect compile options.</p> </dd></param>\t\n            <param name=\"deviceRef\"><dd>  <p>A reference to the device (see <strong><see cref=\"T:SharpDX.Direct3D10.Device\"/> Interface</strong>).</p> </dd></param>\t\n            <param name=\"effectPoolOut\"><dd>  <p>A reference to the <strong><see cref=\"T:SharpDX.Direct3D10.EffectPool\"/> Interface</strong> that contains the effect pool.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>A pool is a shared location in memory. Effect variables that are located in a pool can be updated once, and the effect system will take care of updating each effect that uses that variable. To pool an effect variable, tell the effect to locate the variable in a pool when the effect is created, using a helper function such as <strong><see cref=\"M:SharpDX.Direct3D10.D3DX10.CreateEffectFromFile(System.String,SharpDX.Direct3D.ShaderMacro[],System.IntPtr,System.String,System.Int32,System.Int32,SharpDX.Direct3D10.Device,SharpDX.Direct3D10.EffectPool,System.IntPtr,SharpDX.Direct3D10.Effect@,SharpDX.Direct3D.Blob@,SharpDX.Result@)\"/></strong>.</p><p>For help compiling an effect, see Compile an Effect (Direct3D 10).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10CreateEffectPoolFromMemory']/*\"/>\t\n            <msdn-id>bb205089</msdn-id>\t\n            <unmanaged>HRESULT D3D10CreateEffectPoolFromMemory([In] void* pData,[In] SIZE_T DataLength,[In] unsigned int FXFlags,[In] ID3D10Device* pDevice,[Out, Fast] ID3D10EffectPool** ppEffectPool)</unmanaged>\t\n            <unmanaged-short>D3D10CreateEffectPoolFromMemory</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.D3D10.CreateStateBlock(SharpDX.Direct3D10.Device,SharpDX.Direct3D10.StateBlockMask@,SharpDX.Direct3D10.StateBlock)\">\n            <summary>\t\n            <p>Create a state block.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\"><dd>  <p>The device for which the state block will be created.</p> </dd></param>\t\n            <param name=\"stateBlockMaskRef\"><dd>  <p>Indicates which parts of the device state will be captured when calling <strong><see cref=\"M:SharpDX.Direct3D10.StateBlock.Capture\"/></strong> and reapplied when calling <strong><see cref=\"M:SharpDX.Direct3D10.StateBlock.Apply\"/></strong>. See remarks.</p> </dd></param>\t\n            <param name=\"stateBlockOut\"><dd>  <p>Address of a reference to the buffer created (see <strong><see cref=\"T:SharpDX.Direct3D10.StateBlock\"/> Interface</strong>).</p> </dd></param>\t\n            <returns><p>This method returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>A state block is a collection of device state, and is used for saving and restoring device state. Use a state-block mask to enable subsets of state for saving and restoring.</p><p>The <strong><see cref=\"T:SharpDX.Direct3D10.StateBlockMask\"/></strong> structure can be filled manually or by using any of the D3D10StateBlockMaskXXX APIs. A state block mask can also be obtained by calling <strong><see cref=\"M:SharpDX.Direct3D10.EffectTechnique.ComputeStateBlockMask(SharpDX.Direct3D10.StateBlockMask@)\"/></strong> or <strong><see cref=\"M:SharpDX.Direct3D10.EffectPass.ComputeStateBlockMask(SharpDX.Direct3D10.StateBlockMask@)\"/></strong>.</p><table> <tr><td> <p>Differences between Direct3D 9 and Direct3D 10:</p> <p>In Direct3D 10, a state block object does not contain any valid information about the state of the device until <strong><see cref=\"M:SharpDX.Direct3D10.StateBlock.Capture\"/></strong> is called. In Direct3D 9, state is saved in a state block object, when it is created.</p> </td></tr> </table><p>?</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10CreateStateBlock']/*\"/>\t\n            <msdn-id>bb205090</msdn-id>\t\n            <unmanaged>HRESULT D3D10CreateStateBlock([In] ID3D10Device* pDevice,[In] D3D10_STATE_BLOCK_MASK* pStateBlockMask,[Out, Fast] ID3D10StateBlock** ppStateBlock)</unmanaged>\t\n            <unmanaged-short>D3D10CreateStateBlock</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.D3D10.CompileEffect10FromMemory(System.IntPtr,SharpDX.PointerSize,System.String,SharpDX.Direct3D.ShaderMacro[],System.IntPtr,SharpDX.D3DCompiler.ShaderFlags,SharpDX.D3DCompiler.EffectFlags,SharpDX.Direct3D.Blob@,SharpDX.Direct3D.Blob@)\">\n            <summary>\t\n            <p>Compile an effect.\t\n            </p><p><strong>Note</strong>??Use <strong>D3DX10CompileFromMemory</strong> instead of this function.</p>\t\n            </summary>\t\n            <param name=\"dataRef\">No documentation.</param>\t\n            <param name=\"dataLength\">No documentation.</param>\t\n            <param name=\"srcFileNameRef\">No documentation.</param>\t\n            <param name=\"definesRef\">No documentation.</param>\t\n            <param name=\"includeRef\">No documentation.</param>\t\n            <param name=\"hLSLFlags\">No documentation.</param>\t\n            <param name=\"fXFlags\">No documentation.</param>\t\n            <param name=\"compiledEffectOut\">No documentation.</param>\t\n            <param name=\"errorsOut\">No documentation.</param>\t\n            <returns><p>Returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>This function uses the version of the HLSL compiler released in the November 2006 DirectX SDK.</p><p>For an example, see Compile an Effect (Direct3D 10).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10CompileEffectFromMemory']/*\"/>\t\n            <msdn-id>bb205083</msdn-id>\t\n            <unmanaged>HRESULT D3D10CompileEffectFromMemory([In] void* pData,[In] SIZE_T DataLength,[In] const char* pSrcFileName,[In, Buffer, Optional] const D3D_SHADER_MACRO* pDefines,[In] ID3DInclude* pInclude,[In] D3DCOMPILE_SHADER_FLAGS HLSLFlags,[In] D3DCOMPILE_EFFECT_FLAGS FXFlags,[In] ID3D10Blob** ppCompiledEffect,[In] ID3D10Blob** ppErrors)</unmanaged>\t\n            <unmanaged-short>D3D10CompileEffectFromMemory</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.D3D10.CreateEffectFromMemory(System.IntPtr,SharpDX.PointerSize,System.Int32,SharpDX.Direct3D10.Device,SharpDX.Direct3D10.EffectPool,SharpDX.Direct3D10.Effect)\">\n            <summary>\t\n            <p>Creates an <see cref=\"T:SharpDX.Direct3D10.Effect\"/> from a buffer containing a compiled effect.</p>\t\n            </summary>\t\n            <param name=\"dataRef\"><dd>  <p>A reference to a compiled effect.</p> </dd></param>\t\n            <param name=\"dataLength\"><dd>  <p>Length of <em>pData</em>.</p> </dd></param>\t\n            <param name=\"fXFlags\"><dd>  <p>Effect compile options.</p> </dd></param>\t\n            <param name=\"deviceRef\"><dd>  <p>A reference to the device (see <strong><see cref=\"T:SharpDX.Direct3D10.Device\"/> Interface</strong>).</p> </dd></param>\t\n            <param name=\"effectPoolRef\"><dd>  <p>Optional. A reference to an memory space for effect variables that are shared across effects (see <strong><see cref=\"T:SharpDX.Direct3D10.EffectPool\"/> Interface</strong>).</p> </dd></param>\t\n            <param name=\"effectOut\"><dd>  <p>A reference to an <strong><see cref=\"T:SharpDX.Direct3D10.Effect\"/> Interface</strong> which contains the created effect.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>This method is used to create an <strong><see cref=\"T:SharpDX.Direct3D10.Effect\"/> Interface</strong> object from an effect that has been compiled before runtime and loaded into memory.   For help precompiling an effect, see Offline Compiling.   To load and compile an ASCII .fx file see Compile an Effect (Direct3D 10).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10CreateEffectFromMemory']/*\"/>\t\n            <msdn-id>bb205088</msdn-id>\t\n            <unmanaged>HRESULT D3D10CreateEffectFromMemory([In] void* pData,[In] SIZE_T DataLength,[In] unsigned int FXFlags,[In] ID3D10Device* pDevice,[In] ID3D10EffectPool* pEffectPool,[Out, Fast] ID3D10Effect** ppEffect)</unmanaged>\t\n            <unmanaged-short>D3D10CreateEffectFromMemory</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.D3D10.CreateDeviceAndSwapChain(SharpDX.DXGI.Adapter,SharpDX.Direct3D10.DriverType,System.IntPtr,SharpDX.Direct3D10.DeviceCreationFlags,System.Int32,SharpDX.DXGI.SwapChainDescription@,SharpDX.DXGI.SwapChain@,SharpDX.Direct3D10.Device@)\">\n            <summary>\t\n            <p>Create a Direct3D 10.0 device and a swap chain.</p>\t\n            </summary>\t\n            <param name=\"adapterRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.DXGI.Adapter\"/></strong>.</p> </dd></param>\t\n            <param name=\"driverType\"><dd>  <p>The type of driver for the device. See <strong><see cref=\"T:SharpDX.Direct3D10.DriverType\"/></strong>.</p> </dd></param>\t\n            <param name=\"software\"><dd>  <p>A handle to the DLL that implements a software rasterizer. Must be <strong><c>null</c></strong> if DriverType is non-software. The HMODULE of a DLL can be obtained with LoadLibrary, LoadLibraryEx, or GetModuleHandle.</p> </dd></param>\t\n            <param name=\"flags\"><dd>  <p>Optional. Device creation flags (see <strong><see cref=\"T:SharpDX.Direct3D10.DeviceCreationFlags\"/></strong>) that enable API layers. These flags can be bitwise OR'd together.</p> </dd></param>\t\n            <param name=\"sDKVersion\"><dd>  <p>Bit flag that indicates the version of the SDK. Should be <see cref=\"F:SharpDX.Direct3D10.D3D10.SdkVersion\"/>, defined in d3d10.h.</p> </dd></param>\t\n            <param name=\"swapChainDescRef\"><dd>  <p>Description of the swap chain. See <strong><see cref=\"T:SharpDX.DXGI.SwapChainDescription\"/></strong>.</p> </dd></param>\t\n            <param name=\"swapChainOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.DXGI.SwapChain\"/></strong>.</p> </dd></param>\t\n            <param name=\"deviceOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D10.Device\"/> Interface</strong> that will receive the newly created device.</p> </dd></param>\t\n            <returns><p>This method returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>To create a device without creating a swap chain, see <strong><see cref=\"M:SharpDX.Direct3D10.D3D10.CreateDevice(SharpDX.DXGI.Adapter,SharpDX.Direct3D10.DriverType,System.IntPtr,SharpDX.Direct3D10.DeviceCreationFlags,System.Int32,SharpDX.Direct3D10.Device)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10CreateDeviceAndSwapChain']/*\"/>\t\n            <msdn-id>bb205087</msdn-id>\t\n            <unmanaged>HRESULT D3D10CreateDeviceAndSwapChain([In] IDXGIAdapter* pAdapter,[In] D3D10_DRIVER_TYPE DriverType,[In] HINSTANCE Software,[In] D3D10_CREATE_DEVICE_FLAG Flags,[In] unsigned int SDKVersion,[In] DXGI_SWAP_CHAIN_DESC* pSwapChainDesc,[Out] IDXGISwapChain** ppSwapChain,[Out] ID3D10Device** ppDevice)</unmanaged>\t\n            <unmanaged-short>D3D10CreateDeviceAndSwapChain</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.D3D10.CreateDevice(SharpDX.DXGI.Adapter,SharpDX.Direct3D10.DriverType,System.IntPtr,SharpDX.Direct3D10.DeviceCreationFlags,System.Int32,SharpDX.Direct3D10.Device)\">\n            <summary>\t\n            <p>Create a Direct3D 10.0 device that represents the display adapter.</p>\t\n            </summary>\t\n            <param name=\"adapterRef\"><dd>  <p>Pointer to the display adapter (see <strong><see cref=\"T:SharpDX.DXGI.Adapter\"/></strong>) when creating a hardware device; otherwise set this parameter to <strong><c>null</c></strong>.  If <strong><c>null</c></strong> is specified when creating a hardware device, Direct3D will use the first adapter enumerated by <strong>EnumAdapters</strong>.</p> </dd></param>\t\n            <param name=\"driverType\"><dd>  <p>The device-driver type (see <strong><see cref=\"T:SharpDX.Direct3D10.DriverType\"/></strong>). The driver type determines the type of device you will create.</p> </dd></param>\t\n            <param name=\"software\"><dd>  <p>Reserved. Set to <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"flags\"><dd>  <p>Optional. Device creation flags (see <strong><see cref=\"T:SharpDX.Direct3D10.DeviceCreationFlags\"/></strong>) that  enable API layers. These flags can be bitwise OR'd together.</p> </dd></param>\t\n            <param name=\"sDKVersion\"><dd>  <p>Bit flag that indicates the version of the SDK. Should always be <see cref=\"F:SharpDX.Direct3D10.D3D10.SdkVersion\"/>.</p> </dd></param>\t\n            <param name=\"deviceOut\"><dd>  <p>Address of a reference to the device created (see <strong><see cref=\"T:SharpDX.Direct3D10.Device\"/> Interface</strong>).</p> </dd></param>\t\n            <returns><p>This method returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>This example creates a reference device.</p><pre><code> <see cref=\"T:SharpDX.Direct3D10.Device\"/>* g_pd3dDevice = <c>null</c>;\t\n            <see cref=\"M:SharpDX.Direct3D10.D3D10.CreateDevice(SharpDX.DXGI.Adapter,SharpDX.Direct3D10.DriverType,System.IntPtr,SharpDX.Direct3D10.DeviceCreationFlags,System.Int32,SharpDX.Direct3D10.Device)\"/>( <c>null</c>, <see cref=\"F:SharpDX.Direct3D10.DriverType.Reference\"/>, <c>null</c>, 0,  <see cref=\"F:SharpDX.Direct3D10.D3D10.SdkVersion\"/>, &amp;g_pd3dDevice );              </code></pre><p>To create a device and a swap chain at the same time, see <strong><see cref=\"M:SharpDX.Direct3D10.D3D10.CreateDeviceAndSwapChain(SharpDX.DXGI.Adapter,SharpDX.Direct3D10.DriverType,System.IntPtr,SharpDX.Direct3D10.DeviceCreationFlags,System.Int32,SharpDX.DXGI.SwapChainDescription@,SharpDX.DXGI.SwapChain@,SharpDX.Direct3D10.Device@)\"/></strong>.</p><p>The object returned by <see cref=\"M:SharpDX.Direct3D10.D3D10.CreateDevice(SharpDX.DXGI.Adapter,SharpDX.Direct3D10.DriverType,System.IntPtr,SharpDX.Direct3D10.DeviceCreationFlags,System.Int32,SharpDX.Direct3D10.Device)\"/> implements the <see cref=\"T:SharpDX.ComObject\"/> interface and can be queried for other  interfaces the object supports. To retrieve the <strong><see cref=\"T:SharpDX.DXGI.Device\"/></strong> interface of the object the following code could be used.</p><pre><code> <see cref=\"T:SharpDX.DXGI.Device\"/> * pDXGIDevice;\t\n            hr = g_pd3dDevice-&gt;QueryInterface(__uuidof(<see cref=\"T:SharpDX.DXGI.Device\"/>), (void **)&amp;pDXGIDevice); </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10CreateDevice']/*\"/>\t\n            <msdn-id>bb205086</msdn-id>\t\n            <unmanaged>HRESULT D3D10CreateDevice([In] IDXGIAdapter* pAdapter,[In] D3D10_DRIVER_TYPE DriverType,[In] HINSTANCE Software,[In] D3D10_CREATE_DEVICE_FLAG Flags,[In] unsigned int SDKVersion,[Out, Fast] ID3D10Device** ppDevice)</unmanaged>\t\n            <unmanaged-short>D3D10CreateDevice</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.D3D10.GetVertexShaderProfile(SharpDX.Direct3D10.Device)\">\n            <summary>\t\n            <p>Get the vertex shader profile best suited to a given device.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\">No documentation.</param>\t\n            <returns><p>The shader profile.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10GetVertexShaderProfile']/*\"/>\t\n            <msdn-id>bb205099</msdn-id>\t\n            <unmanaged>const char* D3D10GetVertexShaderProfile([In] ID3D10Device* pDevice)</unmanaged>\t\n            <unmanaged-short>D3D10GetVertexShaderProfile</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.D3D10.GetGeometryShaderProfile(SharpDX.Direct3D10.Device)\">\n            <summary>\t\n            <p>Get the geometry shader profile best suited to a given device.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\">No documentation.</param>\t\n            <returns><p>The shader profile.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10GetGeometryShaderProfile']/*\"/>\t\n            <msdn-id>bb205093</msdn-id>\t\n            <unmanaged>const char* D3D10GetGeometryShaderProfile([In] ID3D10Device* pDevice)</unmanaged>\t\n            <unmanaged-short>D3D10GetGeometryShaderProfile</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.D3D10.GetPixelShaderProfile(SharpDX.Direct3D10.Device)\">\n            <summary>\t\n            <p>Get the pixel shader profile best suited to a given device.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\">No documentation.</param>\t\n            <returns><p>The shader profile.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10GetPixelShaderProfile']/*\"/>\t\n            <msdn-id>bb205097</msdn-id>\t\n            <unmanaged>const char* D3D10GetPixelShaderProfile([In] ID3D10Device* pDevice)</unmanaged>\t\n            <unmanaged-short>D3D10GetPixelShaderProfile</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.D3DX10\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.Direct3D10.D3DX10']/*\"/>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.D3DX10.GetFeatureLevel1(SharpDX.Direct3D10.Device,SharpDX.Direct3D10.Device1@)\">\n            <summary>\t\n            <p>Get a Direct3D 10.1 device interface reference from a Direct3D 10.0 interface reference.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\"><dd>  <p>Pointer to the Direct3D 10.0 device (see the <strong><see cref=\"T:SharpDX.Direct3D10.Device\"/></strong> interface).</p> </dd></param>\t\n            <param name=\"device1Out\"><dd>  <p>Pointer to the Direct3D 10.1 device (see the <strong><see cref=\"T:SharpDX.Direct3D10.Device1\"/></strong> interface).</p> </dd></param>\t\n            <returns><p>This function returns one of the following Direct3D 10 Return Codes.  If a Direct3D 10.1 device interface can be acquired, this function succeeds and passes a reference to the 10.1 interface using the <em>ppDevice</em> parameter. If a Direct3D 10.1 device interface cannot be acquired, this function returns E_FAIL, and will not return anything for the <em>ppDevice</em> parameter.</p></returns>\t\n            <remarks>\t\n            <p>For this function to succeed, you must have acquired the supplied <strong><see cref=\"T:SharpDX.Direct3D10.Device\"/></strong> reference using a call to the <strong><see cref=\"M:SharpDX.Direct3D10.D3DX10.CreateDevice(SharpDX.DXGI.Adapter,SharpDX.Direct3D10.DriverType,System.IntPtr,System.Int32,SharpDX.Direct3D10.Device@)\"/></strong> function, the <strong><see cref=\"M:SharpDX.Direct3D10.D3DX10.CreateDeviceAndSwapChain(SharpDX.DXGI.Adapter,SharpDX.Direct3D10.DriverType,System.IntPtr,System.Int32,SharpDX.DXGI.SwapChainDescription@,SharpDX.DXGI.SwapChain@,SharpDX.Direct3D10.Device@)\"/></strong> function, the <strong><see cref=\"M:SharpDX.Direct3D10.D3D10.CreateDevice1(SharpDX.DXGI.Adapter,SharpDX.Direct3D10.DriverType,System.IntPtr,SharpDX.Direct3D10.DeviceCreationFlags,SharpDX.Direct3D10.FeatureLevel,System.Int32,SharpDX.Direct3D10.Device1)\"/></strong> function, or the <strong><see cref=\"M:SharpDX.Direct3D10.D3D10.CreateDeviceAndSwapChain1(SharpDX.DXGI.Adapter,SharpDX.Direct3D10.DriverType,System.IntPtr,SharpDX.Direct3D10.DeviceCreationFlags,SharpDX.Direct3D10.FeatureLevel,System.Int32,SharpDX.DXGI.SwapChainDescription@,SharpDX.DXGI.SwapChain@,SharpDX.Direct3D10.Device1@)\"/></strong> function.</p><p>You can only create a Direct3D 10.1 device on computers running Windows Vista Service Pack 1 or later, and with Direct3D 10.1-compatible hardware installed. This function will return E_FAIL on any computer not meeting these requirements.\t\n            However, you can call this function on any version of Windows that has the D3DX10 DLL installed.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10GetFeatureLevel1']/*\"/>\t\n            <msdn-id>bb694539</msdn-id>\t\n            <unmanaged>HRESULT D3DX10GetFeatureLevel1([In] ID3D10Device* pDevice,[In] ID3D10Device1** ppDevice1)</unmanaged>\t\n            <unmanaged-short>D3DX10GetFeatureLevel1</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.D3DX10.CreateFont(SharpDX.Direct3D10.Device,System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Bool,System.Int32,System.Int32,System.Int32,System.Int32,System.String,SharpDX.Direct3D10.Font)\">\n            <summary>\t\n            <p>Creates a font object for a device and font.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\"><dd>  <p>Pointer to an <see cref=\"T:SharpDX.Direct3D10.Device\"/> interface, the device to be associated with the font object.</p> </dd></param>\t\n            <param name=\"height\"><dd>  <p>The height of the characters in logical units.</p> </dd></param>\t\n            <param name=\"width\"><dd>  <p>The width of the characters in logical units.</p> </dd></param>\t\n            <param name=\"weight\"><dd>  <p>Typeface weight. One example is bold.</p> </dd></param>\t\n            <param name=\"mipLevels\"><dd>  <p>The number of mipmap levels.</p> </dd></param>\t\n            <param name=\"italic\"><dd>  <p>True for italic font, false otherwise.</p> </dd></param>\t\n            <param name=\"charSet\"><dd>  <p>The character set of the font.</p> </dd></param>\t\n            <param name=\"outputPrecision\"><dd>  <p>Specifies how Windows should attempt to match the desired font sizes and characteristics with actual fonts. Use OUT_TT_ONLY_PRECIS for instance, to ensure that you always get a TrueType font.</p> </dd></param>\t\n            <param name=\"quality\"><dd>  <p>Specifies how Windows should match the desired font with a real font. It applies to raster fonts only and should not affect TrueType fonts.</p> </dd></param>\t\n            <param name=\"pitchAndFamily\"><dd>  <p>Pitch and family index.</p> </dd></param>\t\n            <param name=\"faceNameRef\"><dd>  <p>String containing the typeface name. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the data type resolves to LPCSTR. See Remarks. </p> </dd></param>\t\n            <param name=\"fontOut\"><dd>  <p>Returns a reference to an <see cref=\"T:SharpDX.Direct3D10.Font\"/> interface, representing the created font object.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the function fails, the return value can be one of the following: <see cref=\"!:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>The compiler setting also determines the function version. If Unicode is defined, the function call resolves to <see cref=\"!:SharpDX.Direct3D9.D3DX9.CreateFont\"/>. Otherwise, the function call resolves to D3DXCreateFontA because ANSI strings are being used.</p><p>If you want more information about font parameters, see The Logical Font.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10CreateFontW']/*\"/>\t\n            <msdn-id>bb172664</msdn-id>\t\n            <unmanaged>HRESULT D3DX10CreateFontW([In] ID3D10Device* pDevice,[In] int Height,[In] unsigned int Width,[In] unsigned int Weight,[In] unsigned int MipLevels,[In] BOOL Italic,[In] unsigned int CharSet,[In] unsigned int OutputPrecision,[In] unsigned int Quality,[In] unsigned int PitchAndFamily,[In] const wchar_t* pFaceName,[Out, Fast] ID3DX10Font** ppFont)</unmanaged>\t\n            <unmanaged-short>D3DX10CreateFontW</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.D3DX10.CreateFontIndirect(SharpDX.Direct3D10.Device,SharpDX.Direct3D10.FontDescription@,SharpDX.Direct3D10.Font)\">\n            <summary>\t\n            <p>Creates a font object.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D10.Device\"/> Interface</strong> interface.</p> </dd></param>\t\n            <param name=\"descRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D10.FontDescription\"/></strong> structure, describing the attributes of the font object to create. If Unicode is defined, the function call resolves to <see cref=\"!:SharpDX.Direct3D9.D3DX9.CreateFontIndirect\"/>. Otherwise, the function call resolves to D3DXCreateFontIndirectA because ANSI strings are being used.</p> </dd></param>\t\n            <param name=\"fontOut\"><dd>  <p>Returns a reference to an <strong><see cref=\"T:SharpDX.Direct3D10.Font\"/> Interface</strong>.</p> </dd></param>\t\n            <returns><p>The return value is one of the values listed in Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10CreateFontIndirectW']/*\"/>\t\n            <msdn-id>bb172665</msdn-id>\t\n            <unmanaged>HRESULT D3DX10CreateFontIndirectW([In] ID3D10Device* pDevice,[In] const D3DX10_FONT_DESCW* pDesc,[Out, Fast] ID3DX10Font** ppFont)</unmanaged>\t\n            <unmanaged-short>D3DX10CreateFontIndirectW</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.D3DX10.CreateDeviceAndSwapChain(SharpDX.DXGI.Adapter,SharpDX.Direct3D10.DriverType,System.IntPtr,System.Int32,SharpDX.DXGI.SwapChainDescription@,SharpDX.DXGI.SwapChain@,SharpDX.Direct3D10.Device@)\">\n            <summary>\t\n            <p>Create the best Direct3D device and a swap chain.</p>\t\n            </summary>\t\n            <param name=\"adapterRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.DXGI.Adapter\"/></strong>.</p> </dd></param>\t\n            <param name=\"driverType\"><dd>  <p>The type of driver for the device. See <strong><see cref=\"T:SharpDX.Direct3D10.DriverType\"/></strong>.</p> </dd></param>\t\n            <param name=\"software\"><dd>  <p>A handle to the DLL that implements a software rasterizer. Must be <strong><c>null</c></strong> if DriverType is non-software. The HMODULE of a DLL can be obtained with LoadLibrary, LoadLibraryEx, or GetModuleHandle.</p> </dd></param>\t\n            <param name=\"flags\"><dd>  <p>Optional. Device creation flags (see <strong><see cref=\"T:SharpDX.Direct3D10.DeviceCreationFlags\"/></strong>) that enable API layers. These flags can be bitwise OR'd together.</p> </dd></param>\t\n            <param name=\"swapChainDescRef\"><dd>  <p>Description of the swap chain. See <strong><see cref=\"T:SharpDX.DXGI.SwapChainDescription\"/></strong>.</p> </dd></param>\t\n            <param name=\"swapChainOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.DXGI.SwapChain\"/></strong>.</p> </dd></param>\t\n            <param name=\"deviceOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D10.Device\"/> Interface</strong> that will receive the newly created device.</p> </dd></param>\t\n            <returns><p>This method returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>To create the best device, this method implements more than one device creation option. First, the method attempts to create a 10.1 device (and swap chain). If that fails, the method attempts to create a 10.0 device. If that fails, the method will fail. If your application needs to create only a 10.1 device, or a 10.0 device only, use these APIs instead:</p><ul> <li>Use <strong><see cref=\"M:SharpDX.Direct3D10.D3D10.CreateDeviceAndSwapChain(SharpDX.DXGI.Adapter,SharpDX.Direct3D10.DriverType,System.IntPtr,SharpDX.Direct3D10.DeviceCreationFlags,System.Int32,SharpDX.DXGI.SwapChainDescription@,SharpDX.DXGI.SwapChain@,SharpDX.Direct3D10.Device@)\"/></strong> to create a Direct3D 10.0 (only) device and swap chain.</li> <li>Use <strong><see cref=\"M:SharpDX.Direct3D10.D3D10.CreateDeviceAndSwapChain1(SharpDX.DXGI.Adapter,SharpDX.Direct3D10.DriverType,System.IntPtr,SharpDX.Direct3D10.DeviceCreationFlags,SharpDX.Direct3D10.FeatureLevel,System.Int32,SharpDX.DXGI.SwapChainDescription@,SharpDX.DXGI.SwapChain@,SharpDX.Direct3D10.Device1@)\"/></strong> to create a Direct3D 10.1 (only) device and swap chain.</li> </ul><p>This method requires Windows Vista Service Pack 1.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10CreateDeviceAndSwapChain']/*\"/>\t\n            <msdn-id>bb694538</msdn-id>\t\n            <unmanaged>HRESULT D3DX10CreateDeviceAndSwapChain([In] IDXGIAdapter* pAdapter,[In] D3D10_DRIVER_TYPE DriverType,[In] HINSTANCE Software,[In] unsigned int Flags,[In] DXGI_SWAP_CHAIN_DESC* pSwapChainDesc,[In] IDXGISwapChain** ppSwapChain,[In] ID3D10Device** ppDevice)</unmanaged>\t\n            <unmanaged-short>D3DX10CreateDeviceAndSwapChain</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.D3DX10.CreateSprite(SharpDX.Direct3D10.Device,System.Int32,SharpDX.Direct3D10.Sprite)\">\n            <summary>\t\n            <p>Create a sprite for drawing a 2D texture.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\"><dd>  <p>A reference to the device (see <strong><see cref=\"T:SharpDX.Direct3D10.Device\"/> Interface</strong>) that will draw the sprite.</p> </dd></param>\t\n            <param name=\"cDeviceBufferSize\"><dd>  <p>The size of the vertex buffer, in number of sprites, that will be sent to the device when <strong><see cref=\"M:SharpDX.Direct3D10.Sprite.Flush\"/></strong> or <strong><see cref=\"M:SharpDX.Direct3D10.Sprite.DrawSpritesImmediate(SharpDX.Direct3D10.SpriteInstance[],System.Int32,System.Int32,System.Int32)\"/></strong> is called. This should be a small number if you know you will be rendering a small number of sprites at a time (to save memory) and a large number if you know you will be rendering a large number of sprites at a time. The maximum value is 4096. If 0 is specified, the vertex buffer size will automatically be set to 4096.</p> </dd></param>\t\n            <param name=\"spriteOut\"><dd>  <p>The address of a reference to a sprite interface (see <strong><see cref=\"T:SharpDX.Direct3D10.Sprite\"/> Interface</strong>).</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the function fails, the return value can be one of the following: <see cref=\"!:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10CreateSprite']/*\"/>\t\n            <msdn-id>bb172670</msdn-id>\t\n            <unmanaged>HRESULT D3DX10CreateSprite([In] ID3D10Device* pDevice,[In] unsigned int cDeviceBufferSize,[Out, Fast] ID3DX10Sprite** ppSprite)</unmanaged>\t\n            <unmanaged-short>D3DX10CreateSprite</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.D3DX10.CheckVersion(System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Verify that the version of D3DX you compiled with is the version that you are running.</p>\t\n            </summary>\t\n            <param name=\"d3DSdkVersion\"><dd>  <p>Use <see cref=\"F:SharpDX.Direct3D10.D3D10.SdkVersion\"/>. See remarks.</p> </dd></param>\t\n            <param name=\"d3DX10SdkVersion\"><dd>  <p>Use D3DX10_SDK_VERSION. See remarks.</p> </dd></param>\t\n            <returns><p>If the version doesn't match, the function will return <see cref=\"F:SharpDX.Result.False\"/> (a number less than or equal to 0, the number itself has no meaning).</p></returns>\t\n            <remarks>\t\n            <p>Use this function during the initialization of your application.</p><pre><code> <see cref=\"T:SharpDX.Result\"/> hr; if( FAILED( <see cref=\"M:SharpDX.Direct3D10.D3DX10.CheckVersion(System.Int32,System.Int32)\"/>(<see cref=\"F:SharpDX.Direct3D10.D3D10.SdkVersion\"/>, D3DX10_SDK_VERSION) ) ) return E_FAIL;\t\n            </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10CheckVersion']/*\"/>\t\n            <msdn-id>bb172639</msdn-id>\t\n            <unmanaged>HRESULT D3DX10CheckVersion([In] unsigned int D3DSdkVersion,[In] unsigned int D3DX10SdkVersion)</unmanaged>\t\n            <unmanaged-short>D3DX10CheckVersion</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.D3DX10.CreateDevice(SharpDX.DXGI.Adapter,SharpDX.Direct3D10.DriverType,System.IntPtr,System.Int32,SharpDX.Direct3D10.Device@)\">\n            <summary>\t\n            <p>Create the best Direct3D 10 device that represents the display adapter.  If a Direct3D 10.1-compatible device can be created, it will be possible to acquire an <strong><see cref=\"T:SharpDX.Direct3D10.Device1\"/> Interface</strong> reference from the returned device interface reference.</p>\t\n            </summary>\t\n            <param name=\"adapterRef\">No documentation.</param>\t\n            <param name=\"driverType\">No documentation.</param>\t\n            <param name=\"software\">No documentation.</param>\t\n            <param name=\"flags\">No documentation.</param>\t\n            <param name=\"deviceOut\">No documentation.</param>\t\n            <returns><p>This function returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>This function attempts to create the best device for the hardware. First, the function attempts to create a 10.1 device. If a 10.1 device cannot be created, the function attempts to create a 10.0 device. If neither device is successfully created, the function returns E_FAIL.</p><p>If your application needs to create only a 10.1 device, or a 10.0 device only, use the following functions instead:</p><ul> <li>Use the <strong><see cref=\"M:SharpDX.Direct3D10.D3D10.CreateDevice(SharpDX.DXGI.Adapter,SharpDX.Direct3D10.DriverType,System.IntPtr,SharpDX.Direct3D10.DeviceCreationFlags,System.Int32,SharpDX.Direct3D10.Device)\"/></strong> function to create a Direct3D 10.0 device only.</li> <li>Use the <strong><see cref=\"M:SharpDX.Direct3D10.D3D10.CreateDevice1(SharpDX.DXGI.Adapter,SharpDX.Direct3D10.DriverType,System.IntPtr,SharpDX.Direct3D10.DeviceCreationFlags,SharpDX.Direct3D10.FeatureLevel,System.Int32,SharpDX.Direct3D10.Device1)\"/></strong> function to create a Direct3D 10.1 device only.</li> <li>Use the <strong><see cref=\"M:SharpDX.Direct3D10.D3DX10.GetFeatureLevel1(SharpDX.Direct3D10.Device,SharpDX.Direct3D10.Device1@)\"/></strong> function to get an <strong><see cref=\"T:SharpDX.Direct3D10.Device1\"/></strong> interface reference from an <strong><see cref=\"T:SharpDX.Direct3D10.Device\"/></strong> interface reference.</li> </ul><p>A Direct3D 10.1 device can only be created on computers running Windows Vista Service Pack 1 or later, and with Direct3D 10.1-compatible hardware installed. However, it is legal to call this function on computers running any version of Windows that has the D3DX10 DLL installed.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10CreateDevice']/*\"/>\t\n            <msdn-id>bb694537</msdn-id>\t\n            <unmanaged>HRESULT D3DX10CreateDevice([In] IDXGIAdapter* pAdapter,[In] D3D10_DRIVER_TYPE DriverType,[In] HINSTANCE Software,[In] unsigned int Flags,[In] ID3D10Device** ppDevice)</unmanaged>\t\n            <unmanaged-short>D3DX10CreateDevice</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.D3DX10.CreateShaderResourceViewFromFile(SharpDX.Direct3D10.Device,System.String,System.Nullable{SharpDX.Direct3D10.ImageLoadInformation},System.IntPtr,SharpDX.Direct3D10.ShaderResourceView@,SharpDX.Result@)\">\n            <summary>\t\n            <p>Create a shader-resource view from a file.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\"><dd>  <p>A reference to the device (see <strong><see cref=\"T:SharpDX.Direct3D10.Device\"/> Interface</strong>) that will use the resource.</p> </dd></param>\t\n            <param name=\"srcFileRef\"><dd>  <p>Name of the file that contains the shader-resource view. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the data type resolves to LPCSTR.</p> </dd></param>\t\n            <param name=\"loadInfoRef\"><dd>  <p>Optional. Identifies the characteristics of a texture (see <strong><see cref=\"T:SharpDX.Direct3D10.ImageLoadInformation\"/></strong>) when the data processor is created; set this to <strong><c>null</c></strong> to read the characteristics of a texture when the texture is loaded.</p> </dd></param>\t\n            <param name=\"pumpRef\"><dd>  <p>Pointer to a thread-pump interface (see <strong><see cref=\"T:System.IntPtr\"/> Interface</strong>). If <strong><c>null</c></strong> is specified, this function will behave synchronously and will not return until it is finished.</p> </dd></param>\t\n            <param name=\"shaderResourceViewOut\"><dd>  <p>Address of a reference to the shader-resource view (see <strong><see cref=\"T:SharpDX.Direct3D10.ShaderResourceView\"/> Interface</strong>).</p> </dd></param>\t\n            <param name=\"hResultRef\"><dd>  <p>A reference to the return value. May be <strong><c>null</c></strong>. If <em>pPump</em> is not <strong><c>null</c></strong>, then <em>pHResult</em> must be a valid memory location until the asynchronous execution completes.</p> </dd></param>\t\n            <returns><p>The return value is one of the values listed in Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10CreateShaderResourceViewFromFileW']/*\"/>\t\n            <msdn-id>bb172667</msdn-id>\t\n            <unmanaged>HRESULT D3DX10CreateShaderResourceViewFromFileW([In] ID3D10Device* pDevice,[In] const wchar_t* pSrcFile,[In, Optional] D3DX10_IMAGE_LOAD_INFO* pLoadInfo,[In] ID3DX10ThreadPump* pPump,[In] ID3D10ShaderResourceView** ppShaderResourceView,[Out] HRESULT* pHResult)</unmanaged>\t\n            <unmanaged-short>D3DX10CreateShaderResourceViewFromFileW</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.D3DX10.SaveTextureToFile(SharpDX.Direct3D10.Resource,SharpDX.Direct3D10.ImageFileFormat,System.String)\">\n            <summary>\t\n            <p>Save a texture to a file.</p>\t\n            </summary>\t\n            <param name=\"srcTextureRef\"><dd>  <p>Pointer to the texture to be saved. See <strong><see cref=\"T:SharpDX.Direct3D10.Resource\"/> Interface</strong>.</p> </dd></param>\t\n            <param name=\"destFormat\"><dd>  <p>The format the texture will be saved as (see <strong><see cref=\"T:SharpDX.Direct3D10.ImageFileFormat\"/></strong>). <see cref=\"F:SharpDX.Direct3D10.ImageFileFormat.Dds\"/> is the preferred format since it is the only option that supports all the formats in <strong><see cref=\"T:SharpDX.DXGI.Format\"/></strong>.</p> </dd></param>\t\n            <param name=\"destFileRef\"><dd>  <p>Name of the destination output file where the texture will be saved.  If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the data type resolves to LPCSTR.</p> </dd></param>\t\n            <returns><p>The return value is one of the values listed in Direct3D 10 Return Codes; use the return value to see if the <em>DestFormat</em> is supported.</p></returns>\t\n            <remarks>\t\n            <p><strong><see cref=\"M:SharpDX.Direct3D10.D3DX10.SaveTextureToFile(SharpDX.Direct3D10.Resource,SharpDX.Direct3D10.ImageFileFormat,System.String)\"/></strong> writes out the extra <strong>DDS_HEADER_DXT10</strong> structure for the input texture only if necessary (for example, because the input texture is in standard RGB (sRGB) format). If <strong><see cref=\"M:SharpDX.Direct3D10.D3DX10.SaveTextureToFile(SharpDX.Direct3D10.Resource,SharpDX.Direct3D10.ImageFileFormat,System.String)\"/></strong> writes out the <strong>DDS_HEADER_DXT10</strong> structure, it sets the <strong>dwFourCC</strong> member of the <strong>DDS_PIXELFORMAT</strong> structure for the texture to <strong>DX10</strong> to indicate the prescense of the <strong>DDS_HEADER_DXT10</strong> extended header.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10SaveTextureToFileW']/*\"/>\t\n            <msdn-id>bb172684</msdn-id>\t\n            <unmanaged>HRESULT D3DX10SaveTextureToFileW([In] ID3D10Resource* pSrcTexture,[In] D3DX10_IMAGE_FILE_FORMAT DestFormat,[In] const wchar_t* pDestFile)</unmanaged>\t\n            <unmanaged-short>D3DX10SaveTextureToFileW</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.D3DX10.ComputeNormalMap(SharpDX.Direct3D10.Texture2D,SharpDX.Direct3D10.NormalMapFlags,SharpDX.Direct3D10.Channel,System.Single,SharpDX.Direct3D10.Texture2D)\">\n            <summary>\t\n            <p>Converts a height map into a normal map. The (x,y,z) components of each normal are mapped to the (r,g,b) channels of the output texture.</p>\t\n            </summary>\t\n            <param name=\"srcTextureRef\"><dd>  <p>Pointer to an <see cref=\"T:SharpDX.Direct3D10.Texture2D\"/> interface, representing the source height-map texture.</p> </dd></param>\t\n            <param name=\"flags\"><dd>  <p>One or more <see cref=\"!:SharpDX.Direct3D9.NormalMapFlags\"/> flags that control generation of normal maps.</p> </dd></param>\t\n            <param name=\"channel\"><dd>  <p>One <see cref=\"!:SharpDX.Direct3D9.Channel\"/> flag specifying the source of height information.</p> </dd></param>\t\n            <param name=\"amplitude\"><dd>  <p>Constant value multiplier that increases (or decreases) the values in the normal map. Higher values usually make bumps more visible, lower values usually make bumps less visible.</p> </dd></param>\t\n            <param name=\"destTextureRef\"><dd>  <p>Pointer to an <see cref=\"T:SharpDX.Direct3D10.Texture2D\"/> interface, representing the destination texture.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"!:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be the following value: <see cref=\"!:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>This method computes the normal by using the central difference with a kernel size of 3x3. RGB channels in the destination contain biased (x,y,z) components of the normal. The central differencing denominator is hardcoded to 2.0.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10ComputeNormalMap']/*\"/>\t\n            <msdn-id>bb172646</msdn-id>\t\n            <unmanaged>HRESULT D3DX10ComputeNormalMap([In] ID3D10Texture2D* pSrcTexture,[In] D3DX10_NORMALMAP_FLAG Flags,[In] D3DX10_CHANNEL_FLAG Channel,[In] float Amplitude,[In] ID3D10Texture2D* pDestTexture)</unmanaged>\t\n            <unmanaged-short>D3DX10ComputeNormalMap</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.D3DX10.GetImageInfoFromMemory(System.IntPtr,SharpDX.PointerSize,System.IntPtr,SharpDX.Direct3D10.ImageInformation@,SharpDX.Result@)\">\n            <summary>\t\n            <p>Get information about an image already loaded into memory.</p>\t\n            </summary>\t\n            <param name=\"srcDataRef\"><dd>  <p>Pointer to the image in memory.</p> </dd></param>\t\n            <param name=\"srcDataSize\"><dd>  <p>Size of the image in memory, in bytes.</p> </dd></param>\t\n            <param name=\"pumpRef\"><dd>  <p>Optional thread pump that can be used to load the info asynchronously. Can be <strong><c>null</c></strong>. See <strong><see cref=\"T:System.IntPtr\"/></strong>.</p> </dd></param>\t\n            <param name=\"srcInfoRef\"><dd>  <p>Information about the image in memory.</p> </dd></param>\t\n            <param name=\"hResultRef\"><dd>  <p>A reference to the return value. May be <strong><c>null</c></strong>. If <em>pPump</em> is not <strong><c>null</c></strong>, then <em>pHResult</em> must be a valid memory location until the asynchronous execution completes.</p> </dd></param>\t\n            <returns><p>The return value is one of the values listed in Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10GetImageInfoFromMemory']/*\"/>\t\n            <msdn-id>bb172678</msdn-id>\t\n            <unmanaged>HRESULT D3DX10GetImageInfoFromMemory([In] const void* pSrcData,[In] SIZE_T SrcDataSize,[In] ID3DX10ThreadPump* pPump,[In] D3DX10_IMAGE_INFO* pSrcInfo,[Out] HRESULT* pHResult)</unmanaged>\t\n            <unmanaged-short>D3DX10GetImageInfoFromMemory</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.D3DX10.GetImageInfoFromResource(System.IntPtr,System.String,System.IntPtr,SharpDX.Direct3D10.ImageInformation@,SharpDX.Result@)\">\n            <summary>\t\n            <p>Retrieves information about a given image in a resource.</p>\t\n            </summary>\t\n            <param name=\"hSrcModule\"><dd>  <p>Module where the resource is loaded. Set this parameter to <strong><c>null</c></strong> to specify the module associated with the image that the operating system used to create the current process.</p> </dd></param>\t\n            <param name=\"srcResourceRef\"><dd>  <p>Pointer to a string that specifies the filename. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the data type resolves to LPCSTR. See Remarks.</p> </dd></param>\t\n            <param name=\"pumpRef\"><dd>  <p>Optional thread pump that can be used to load the info asynchronously. Can be <strong><c>null</c></strong>. See <strong><see cref=\"T:System.IntPtr\"/></strong>.</p> </dd></param>\t\n            <param name=\"srcInfoRef\"><dd>  <p>Pointer to a <see cref=\"T:SharpDX.Direct3D10.ImageInformation\"/> structure to be filled with the description of the data in the source file.</p> </dd></param>\t\n            <param name=\"hResultRef\"><dd>  <p>A reference to the return value. May be <strong><c>null</c></strong>. If <em>pPump</em> is not <strong><c>null</c></strong>, then <em>pHResult</em> must be a valid memory location until the asynchronous execution completes.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"!:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be the following: <see cref=\"!:SharpDX.Direct3D9.ResultCode.InvalidCall\"/></p></returns>\t\n            <remarks>\t\n            <p>The compiler setting also determines the function version. If Unicode is defined, the function call resolves to <see cref=\"M:SharpDX.Direct3D10.D3DX10.GetImageInfoFromResource(System.IntPtr,System.String,System.IntPtr,SharpDX.Direct3D10.ImageInformation@,SharpDX.Result@)\"/>. Otherwise, the function call resolves to D3DX10GetImageInfoFromResourceA because ANSI strings are being used.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10GetImageInfoFromResourceW']/*\"/>\t\n            <msdn-id>bb172679</msdn-id>\t\n            <unmanaged>HRESULT D3DX10GetImageInfoFromResourceW([In] HINSTANCE hSrcModule,[In] const wchar_t* pSrcResource,[In] ID3DX10ThreadPump* pPump,[In] D3DX10_IMAGE_INFO* pSrcInfo,[Out] HRESULT* pHResult)</unmanaged>\t\n            <unmanaged-short>D3DX10GetImageInfoFromResourceW</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.D3DX10.CreateTextureFromFile(SharpDX.Direct3D10.Device,System.String,System.Nullable{SharpDX.Direct3D10.ImageLoadInformation},System.IntPtr,System.IntPtr@,SharpDX.Result@)\">\n            <summary>\t\n            <p>Create a texture resource from a file.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\"><dd>  <p>A reference to the device (see <strong><see cref=\"T:SharpDX.Direct3D10.Device\"/> Interface</strong>) that will use the resource.</p> </dd></param>\t\n            <param name=\"srcFileRef\"><dd>  <p>The name of the file containing the resource. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise,  the data type resolves to LPCSTR. See <strong><see cref=\"T:SharpDX.Direct3D10.ImageFileFormat\"/></strong> enumeration for a list of the supported image file formats.</p> </dd></param>\t\n            <param name=\"loadInfoRef\"><dd>  <p>Optional. Identifies the characteristics of a texture (see <strong><see cref=\"T:SharpDX.Direct3D10.ImageLoadInformation\"/></strong>) when the data processor is created;  set this to <strong><c>null</c></strong> to read the characteristics of a texture when the texture is loaded.</p> </dd></param>\t\n            <param name=\"pumpRef\"><dd>  <p>A reference to a thread pump interface (see <strong><see cref=\"T:System.IntPtr\"/> Interface</strong>). If <strong><c>null</c></strong> is specified, this function will behave synchronously  and will not return until it is finished.</p> </dd></param>\t\n            <param name=\"textureOut\"><dd>  <p>The address of a reference to the texture resource (see <strong><see cref=\"T:SharpDX.Direct3D10.Resource\"/> Interface</strong>).</p> </dd></param>\t\n            <param name=\"hResultRef\"><dd>  <p>A reference to the return value. May be <strong><c>null</c></strong>. If <em>pPump</em> is not <strong><c>null</c></strong>, then <em>pHResult</em> must be a valid  memory location until the asynchronous execution completes.</p> </dd></param>\t\n            <returns><p>The return value is one of the values listed in Direct3D 10 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>For a list of supported image formats see <strong><see cref=\"T:SharpDX.Direct3D10.ImageFileFormat\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10CreateTextureFromFileW']/*\"/>\t\n            <msdn-id>bb172671</msdn-id>\t\n            <unmanaged>HRESULT D3DX10CreateTextureFromFileW([In] ID3D10Device* pDevice,[In] const wchar_t* pSrcFile,[In, Optional] D3DX10_IMAGE_LOAD_INFO* pLoadInfo,[In] ID3DX10ThreadPump* pPump,[Out] void** ppTexture,[Out] HRESULT* pHResult)</unmanaged>\t\n            <unmanaged-short>D3DX10CreateTextureFromFileW</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.D3DX10.SaveTextureToMemory(SharpDX.Direct3D10.Resource,SharpDX.Direct3D10.ImageFileFormat,SharpDX.Direct3D.Blob@,System.Int32)\">\n            <summary>\t\n            <p>Save a texture to memory.</p>\t\n            </summary>\t\n            <param name=\"srcTextureRef\"><dd>  <p>Pointer to the texture to be saved. See <strong><see cref=\"T:SharpDX.Direct3D10.Resource\"/> Interface</strong>.</p> </dd></param>\t\n            <param name=\"destFormat\"><dd>  <p>The format the texture will be saved as. See <strong><see cref=\"T:SharpDX.Direct3D10.ImageFileFormat\"/></strong>.</p> </dd></param>\t\n            <param name=\"destBufOut\"><dd>  <p>Address of a reference to the memory containing the saved texture. See <strong><see cref=\"T:SharpDX.Direct3D.Blob\"/> Interface</strong>.</p> </dd></param>\t\n            <param name=\"flags\"><dd>  <p>Optional.</p> </dd></param>\t\n            <returns><p>The return value is one of the values listed in Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10SaveTextureToMemory']/*\"/>\t\n            <msdn-id>bb172685</msdn-id>\t\n            <unmanaged>HRESULT D3DX10SaveTextureToMemory([In] ID3D10Resource* pSrcTexture,[In] D3DX10_IMAGE_FILE_FORMAT DestFormat,[Out] ID3D10Blob** ppDestBuf,[In] unsigned int Flags)</unmanaged>\t\n            <unmanaged-short>D3DX10SaveTextureToMemory</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.D3DX10.CreateShaderResourceViewFromResource(SharpDX.Direct3D10.Device,System.IntPtr,System.String,System.Nullable{SharpDX.Direct3D10.ImageLoadInformation},System.IntPtr,SharpDX.Direct3D10.ShaderResourceView@,SharpDX.Result@)\">\n            <summary>\t\n            <p>Create a shader-resource view from a resource.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\"><dd>  <p>A reference to the device (see <strong><see cref=\"T:SharpDX.Direct3D10.Device\"/> Interface</strong>) that will use the resource.</p> </dd></param>\t\n            <param name=\"hSrcModule\"><dd>  <p>Handle to the resource module containing the shader-resource view. HMODULE can be obtained with GetModuleHandle Function.</p> </dd></param>\t\n            <param name=\"srcResourceRef\"><dd>  <p>Name of the shader resource view in hSrcModule. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the data type resolves to LPCSTR.</p> </dd></param>\t\n            <param name=\"loadInfoRef\"><dd>  <p>Optional. Identifies the characteristics of a texture (see <strong><see cref=\"T:SharpDX.Direct3D10.ImageLoadInformation\"/></strong>) when the data processor is created; set this to <strong><c>null</c></strong> to read the characteristics of a texture when the texture is loaded.</p> </dd></param>\t\n            <param name=\"pumpRef\"><dd>  <p>A reference to a thread pump interface (see <strong><see cref=\"T:System.IntPtr\"/> Interface</strong>). If <strong><c>null</c></strong> is specified, this function will behave synchronously and will not return until it is finished.</p> </dd></param>\t\n            <param name=\"shaderResourceViewOut\"><dd>  <p>Address of a reference to the shader-resource view (see <strong><see cref=\"T:SharpDX.Direct3D10.ShaderResourceView\"/> Interface</strong>).</p> </dd></param>\t\n            <param name=\"hResultRef\"><dd>  <p>A reference to the return value. May be <strong><c>null</c></strong>. If <em>pPump</em> is not <strong><c>null</c></strong>, then <em>pHResult</em> must be a valid memory location until the asynchronous execution completes.</p> </dd></param>\t\n            <returns><p>The return value is one of the values listed in Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10CreateShaderResourceViewFromResourceW']/*\"/>\t\n            <msdn-id>bb172669</msdn-id>\t\n            <unmanaged>HRESULT D3DX10CreateShaderResourceViewFromResourceW([In] ID3D10Device* pDevice,[In] HINSTANCE hSrcModule,[In] const wchar_t* pSrcResource,[In, Optional] D3DX10_IMAGE_LOAD_INFO* pLoadInfo,[In] ID3DX10ThreadPump* pPump,[In] ID3D10ShaderResourceView** ppShaderResourceView,[Out] HRESULT* pHResult)</unmanaged>\t\n            <unmanaged-short>D3DX10CreateShaderResourceViewFromResourceW</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.D3DX10.SHProjectCubeMap(System.Int32,SharpDX.Direct3D10.Texture2D,System.Single[],System.Single[],System.Single[])\">\n            <summary>\t\n            <p>Projects a function represented in a cube map into spherical harmonics.</p>\t\n            </summary>\t\n            <param name=\"order\"><dd>  <p>Order of the SH evaluation, generates Order^2 coefs, degree is Order-1.</p> </dd></param>\t\n            <param name=\"cubeMapRef\"><dd>  <p>Cubemap that is going to be projected into spherical harmonics. See <strong><see cref=\"T:SharpDX.Direct3D10.Texture2D\"/></strong>.</p> </dd></param>\t\n            <param name=\"rOutRef\"><dd>  <p>Output SH vector for red.</p> </dd></param>\t\n            <param name=\"gOutRef\"><dd>  <p>Output SH vector for green.</p> </dd></param>\t\n            <param name=\"bOutRef\"><dd>  <p>Output SH vector for blue.</p> </dd></param>\t\n            <returns><p>The return value is one of the values listed in Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10SHProjectCubeMap']/*\"/>\t\n            <msdn-id>bb172686</msdn-id>\t\n            <unmanaged>HRESULT D3DX10SHProjectCubeMap([In] unsigned int Order,[In] ID3D10Texture2D* pCubeMap,[Out, Buffer] float* pROut,[Out, Buffer, Optional] float* pGOut,[Out, Buffer, Optional] float* pBOut)</unmanaged>\t\n            <unmanaged-short>D3DX10SHProjectCubeMap</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.D3DX10.CreateTextureFromResource(SharpDX.Direct3D10.Device,System.IntPtr,System.String,System.Nullable{SharpDX.Direct3D10.ImageLoadInformation},System.IntPtr,System.IntPtr@,SharpDX.Result@)\">\n            <summary>\t\n            <p>Create a texture from another resource.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\"><dd>  <p>A reference to the device (see <strong><see cref=\"T:SharpDX.Direct3D10.Device\"/> Interface</strong>) that will use the resource.</p> </dd></param>\t\n            <param name=\"hSrcModule\"><dd>  <p>A handle to the source resource. HMODULE can be obtained with  GetModuleHandle Function.</p> </dd></param>\t\n            <param name=\"srcResourceRef\"><dd>  <p>A string that contains the name of the source resource.  If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the data type resolves to LPCSTR. </p> </dd></param>\t\n            <param name=\"loadInfoRef\"><dd>  <p>Optional. Identifies the characteristics of a texture (see <strong><see cref=\"T:SharpDX.Direct3D10.ImageLoadInformation\"/></strong>) when the data processor is created;  set this to <strong><c>null</c></strong> to read the characteristics of a texture when the texture is loaded.</p> </dd></param>\t\n            <param name=\"pumpRef\"><dd>  <p>A reference to a thread pump interface (see <strong><see cref=\"T:System.IntPtr\"/> Interface</strong>). If <strong><c>null</c></strong> is specified, this function will behave synchronously  and will not return until it is finished.</p> </dd></param>\t\n            <param name=\"textureOut\"><dd>  <p>The address of a reference to the texture resource (see <strong><see cref=\"T:SharpDX.Direct3D10.Resource\"/> Interface</strong>).</p> </dd></param>\t\n            <param name=\"hResultRef\"><dd>  <p>A reference to the return value. May be <strong><c>null</c></strong>. If <em>pPump</em> is not <strong><c>null</c></strong>, then <em>pHResult</em> must be a  valid memory location until the asynchronous execution completes.</p> </dd></param>\t\n            <returns><p>The return value is one of the values listed in Direct3D 10 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>For a list of supported image formats see <strong><see cref=\"T:SharpDX.Direct3D10.ImageFileFormat\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10CreateTextureFromResourceW']/*\"/>\t\n            <msdn-id>bb172673</msdn-id>\t\n            <unmanaged>HRESULT D3DX10CreateTextureFromResourceW([In] ID3D10Device* pDevice,[In] HINSTANCE hSrcModule,[In] const wchar_t* pSrcResource,[In, Optional] D3DX10_IMAGE_LOAD_INFO* pLoadInfo,[In] ID3DX10ThreadPump* pPump,[Out] void** ppTexture,[Out] HRESULT* pHResult)</unmanaged>\t\n            <unmanaged-short>D3DX10CreateTextureFromResourceW</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.D3DX10.LoadTextureFromTexture(SharpDX.Direct3D10.Resource,SharpDX.Direct3D10.TextureLoadInformation,SharpDX.Direct3D10.Resource)\">\n            <summary>\t\n            <p>Load a texture from a texture.</p>\t\n            </summary>\t\n            <param name=\"srcTextureRef\"><dd>  <p>Pointer to the source texture. See <strong><see cref=\"T:SharpDX.Direct3D10.Resource\"/></strong>.</p> </dd></param>\t\n            <param name=\"loadInfoRef\"><dd>  <p>Pointer to texture loading parameters. See <strong><see cref=\"T:SharpDX.Direct3D10.TextureLoadInformation\"/></strong>.</p> </dd></param>\t\n            <param name=\"dstTextureRef\"><dd>  <p>Pointer to the destination texture. See <strong><see cref=\"T:SharpDX.Direct3D10.Resource\"/> Interface</strong>.</p> </dd></param>\t\n            <returns><p>The return value is one of the values listed in Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10LoadTextureFromTexture']/*\"/>\t\n            <msdn-id>bb172680</msdn-id>\t\n            <unmanaged>HRESULT D3DX10LoadTextureFromTexture([In] ID3D10Resource* pSrcTexture,[In] D3DX10_TEXTURE_LOAD_INFO* pLoadInfo,[In] ID3D10Resource* pDstTexture)</unmanaged>\t\n            <unmanaged-short>D3DX10LoadTextureFromTexture</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.D3DX10.CreateShaderResourceViewFromMemory(SharpDX.Direct3D10.Device,System.IntPtr,SharpDX.PointerSize,System.Nullable{SharpDX.Direct3D10.ImageLoadInformation},System.IntPtr,SharpDX.Direct3D10.ShaderResourceView@,SharpDX.Result@)\">\n            <summary>\t\n            <p>Create a shader-resource view from a file in memory.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\"><dd>  <p>A reference to the device (see <strong><see cref=\"T:SharpDX.Direct3D10.Device\"/> Interface</strong>) that will use the resource.</p> </dd></param>\t\n            <param name=\"srcDataRef\"><dd>  <p>Pointer to the file in memory that contains the shader-resource view.</p> </dd></param>\t\n            <param name=\"srcDataSize\"><dd>  <p>Size of the file in memory.</p> </dd></param>\t\n            <param name=\"loadInfoRef\"><dd>  <p>Optional. Identifies the characteristics of a texture (see <strong><see cref=\"T:SharpDX.Direct3D10.ImageLoadInformation\"/></strong>) when the data processor is created; set this to <strong><c>null</c></strong> to read the characteristics of a texture when the texture is loaded.</p> </dd></param>\t\n            <param name=\"pumpRef\"><dd>  <p>A reference to a thread pump interface (see <strong><see cref=\"T:System.IntPtr\"/> Interface</strong>). If <strong><c>null</c></strong> is specified, this function will behave synchronously and will not return until it is finished.</p> </dd></param>\t\n            <param name=\"shaderResourceViewOut\"><dd>  <p>Address of a reference to the newly created shader resource view. See <strong><see cref=\"T:SharpDX.Direct3D10.ShaderResourceView\"/> Interface</strong>.</p> </dd></param>\t\n            <param name=\"hResultRef\"><dd>  <p>A reference to the return value. May be <strong><c>null</c></strong>. If <em>pPump</em> is not <strong><c>null</c></strong>, then <em>pHResult</em> must be a valid memory location until the asynchronous execution completes.</p> </dd></param>\t\n            <returns><p>The return value is one of the values listed in Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10CreateShaderResourceViewFromMemory']/*\"/>\t\n            <msdn-id>bb172668</msdn-id>\t\n            <unmanaged>HRESULT D3DX10CreateShaderResourceViewFromMemory([In] ID3D10Device* pDevice,[In] const void* pSrcData,[In] SIZE_T SrcDataSize,[In, Optional] D3DX10_IMAGE_LOAD_INFO* pLoadInfo,[In] ID3DX10ThreadPump* pPump,[In] ID3D10ShaderResourceView** ppShaderResourceView,[Out] HRESULT* pHResult)</unmanaged>\t\n            <unmanaged-short>D3DX10CreateShaderResourceViewFromMemory</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.D3DX10.FilterTexture(SharpDX.Direct3D10.Resource,System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Generates mipmap chain using a particular texture filter.</p>\t\n            </summary>\t\n            <param name=\"textureRef\"><dd>  <p>The texture object to be filtered. See <strong><see cref=\"T:SharpDX.Direct3D10.Resource\"/></strong>.</p> </dd></param>\t\n            <param name=\"srcLevel\"><dd>  <p>The mipmap level whose data is used to generate the rest of the mipmap chain.</p> </dd></param>\t\n            <param name=\"mipFilter\"><dd>  <p>Flags controlling how each miplevel is filtered (or D3DX10_DEFAULT for <see cref=\"F:SharpDX.Direct3D10.FilterFlags.Box\"/>). See <strong><see cref=\"T:SharpDX.Direct3D10.FilterFlags\"/></strong>.</p> </dd></param>\t\n            <returns><p>The return value is one of the values listed in Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10FilterTexture']/*\"/>\t\n            <msdn-id>Bb172675</msdn-id>\t\n            <unmanaged>HRESULT D3DX10FilterTexture([In] ID3D10Resource* pTexture,[In] unsigned int SrcLevel,[In] unsigned int MipFilter)</unmanaged>\t\n            <unmanaged-short>D3DX10FilterTexture</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.D3DX10.CreateTextureFromMemory(SharpDX.Direct3D10.Device,System.IntPtr,SharpDX.PointerSize,System.Nullable{SharpDX.Direct3D10.ImageLoadInformation},System.IntPtr,System.IntPtr@,SharpDX.Result@)\">\n            <summary>\t\n            <p>Create a texture resource from a file residing in system memory.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\"><dd>  <p>A reference to the device (see <strong><see cref=\"T:SharpDX.Direct3D10.Device\"/> Interface</strong>) that will use the resource.</p> </dd></param>\t\n            <param name=\"srcDataRef\"><dd>  <p>Pointer to the resource in system memory.</p> </dd></param>\t\n            <param name=\"srcDataSize\"><dd>  <p>Size of the resource in system memory.</p> </dd></param>\t\n            <param name=\"loadInfoRef\"><dd>  <p>Optional. Identifies the characteristics of a texture (see <strong><see cref=\"T:SharpDX.Direct3D10.ImageLoadInformation\"/></strong>) when the data processor is created;  set this to <strong><c>null</c></strong> to read the characteristics of a texture when the texture is loaded.</p> </dd></param>\t\n            <param name=\"pumpRef\"><dd>  <p>A reference to a thread pump interface (see <strong><see cref=\"T:System.IntPtr\"/> Interface</strong>). If <strong><c>null</c></strong> is specified, this function will behave synchronously  and will not return until it is finished.</p> </dd></param>\t\n            <param name=\"textureOut\"><dd>  <p>Address of a reference to the created resource. See <strong><see cref=\"T:SharpDX.Direct3D10.Resource\"/> Interface</strong>.</p> </dd></param>\t\n            <param name=\"hResultRef\"><dd>  <p>A reference to the return value. May be <strong><c>null</c></strong>. If <em>pPump</em> is not <strong><c>null</c></strong>, then <em>pHResult</em> must be a  valid memory location until the asynchronous execution completes.</p> </dd></param>\t\n            <returns><p>The return value is one of the values listed in Direct3D 10 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>For a list of supported image formats see <strong><see cref=\"T:SharpDX.Direct3D10.ImageFileFormat\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10CreateTextureFromMemory']/*\"/>\t\n            <msdn-id>bb172672</msdn-id>\t\n            <unmanaged>HRESULT D3DX10CreateTextureFromMemory([In] ID3D10Device* pDevice,[In] const void* pSrcData,[In] SIZE_T SrcDataSize,[In, Optional] D3DX10_IMAGE_LOAD_INFO* pLoadInfo,[In] ID3DX10ThreadPump* pPump,[Out] void** ppTexture,[Out] HRESULT* pHResult)</unmanaged>\t\n            <unmanaged-short>D3DX10CreateTextureFromMemory</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.D3DX10.GetImageInfoFromFile(System.String,System.IntPtr,SharpDX.Direct3D10.ImageInformation@,SharpDX.Result@)\">\n            <summary>\t\n            <p>Retrieves information about a given image file.</p>\t\n            </summary>\t\n            <param name=\"srcFileRef\"><dd>  <p>File name of image to retrieve information about. If UNICODE or _UNICODE are defined, this parameter type is LPCWSTR, otherwise, the type is LPCSTR.</p> </dd></param>\t\n            <param name=\"pumpRef\"><dd>  <p>Optional thread pump that can be used to load the info asynchronously. Can be <strong><c>null</c></strong>. See <strong><see cref=\"T:System.IntPtr\"/></strong>.</p> </dd></param>\t\n            <param name=\"srcInfoRef\"><dd>  <p>Pointer to a <see cref=\"T:SharpDX.Direct3D10.ImageInformation\"/> structure to be filled with the description of the data in the source file.</p> </dd></param>\t\n            <param name=\"hResultRef\"><dd>  <p>A reference to the return value. May be <strong><c>null</c></strong>. If <em>pPump</em> is not <strong><c>null</c></strong>, then <em>pHResult</em> must be a valid memory location until the asynchronous execution completes.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"!:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be the following: <see cref=\"!:SharpDX.Direct3D9.ResultCode.InvalidCall\"/></p></returns>\t\n            <remarks>\t\n            <p>This function supports both Unicode and ANSI strings.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10GetImageInfoFromFileW']/*\"/>\t\n            <msdn-id>bb172677</msdn-id>\t\n            <unmanaged>HRESULT D3DX10GetImageInfoFromFileW([In] const wchar_t* pSrcFile,[In] ID3DX10ThreadPump* pPump,[In] D3DX10_IMAGE_INFO* pSrcInfo,[Out] HRESULT* pHResult)</unmanaged>\t\n            <unmanaged-short>D3DX10GetImageInfoFromFileW</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.D3DX10.CreateMesh(SharpDX.Direct3D10.Device,SharpDX.Direct3D10.InputElement[],System.Int32,System.String,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D10.Mesh)\">\n            <summary>\t\n            <p>Creates a mesh object using a declarator.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D10.Device\"/> Interface</strong>, the device object to be associated with the mesh.</p> </dd></param>\t\n            <param name=\"declarationRef\"><dd>  <p>Array of <strong><see cref=\"T:SharpDX.Direct3D10.InputElement\"/></strong> elements, describing the vertex format for the returned mesh. This parameter must map directly to a flexible vertex format (FVF).</p> </dd></param>\t\n            <param name=\"declCount\"><dd>  <p>The number of elements in pDeclaration.</p> </dd></param>\t\n            <param name=\"positionSemanticRef\"><dd>  <p>Semantic that identifies which part of the vertex declaration contains position information.</p> </dd></param>\t\n            <param name=\"vertexCount\"><dd>  <p>Number of vertices for the mesh. This parameter must be greater than 0.</p> </dd></param>\t\n            <param name=\"faceCount\"><dd>  <p>Number of faces for the mesh. The valid range for this number is greater than 0, and one less than the maximum DWORD (typically 65534), because the last index is reserved.</p> </dd></param>\t\n            <param name=\"options\"><dd>  <p>Combination of one or more flags from the <strong>D3DX10_MESH</strong>, specifying options for the mesh. </p> </dd></param>\t\n            <param name=\"meshOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D10.Mesh\"/> Interface</strong>, representing the created mesh object.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"!:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: <see cref=\"!:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10CreateMesh']/*\"/>\t\n            <msdn-id>bb204914</msdn-id>\t\n            <unmanaged>HRESULT D3DX10CreateMesh([In] ID3D10Device* pDevice,[In, Buffer] const D3D10_INPUT_ELEMENT_DESC* pDeclaration,[In] unsigned int DeclCount,[In] const char* pPositionSemantic,[In] unsigned int VertexCount,[In] unsigned int FaceCount,[In] unsigned int Options,[Out, Fast] ID3DX10Mesh** ppMesh)</unmanaged>\t\n            <unmanaged-short>D3DX10CreateMesh</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.D3DX10.CreateSkinInfo(SharpDX.Direct3D10.SkinInfo@)\">\n            <summary>\t\n            <p>Creates an empty skin mesh object using a declarator.</p>\t\n            </summary>\t\n            <param name=\"skinInfoOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D10.SkinInfo\"/> Interface</strong>, representing the created skin mesh object.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"!:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be: E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>Use the <strong><see cref=\"M:SharpDX.Direct3D10.SkinInfo.SetBoneInfluence(System.Int32,System.Int32,System.Single)\"/></strong> to populate the empty skin mesh object returned by this method.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10CreateSkinInfo']/*\"/>\t\n            <msdn-id>bb204915</msdn-id>\t\n            <unmanaged>HRESULT D3DX10CreateSkinInfo([In] ID3DX10SkinInfo** ppSkinInfo)</unmanaged>\t\n            <unmanaged-short>D3DX10CreateSkinInfo</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.D3DX10.CreateEffectPoolFromResource(System.IntPtr,System.String,System.String,SharpDX.Direct3D.ShaderMacro[],System.IntPtr,System.String,System.Int32,System.Int32,SharpDX.Direct3D10.Device,System.IntPtr,SharpDX.Direct3D10.EffectPool@,SharpDX.Direct3D.Blob@,SharpDX.Result@)\">\n            <summary>\t\n            <p>Create an effect pool from a resource.</p>\t\n            </summary>\t\n            <param name=\"hModule\"><dd>  <p>A handle to the resource module containing the effect. HMODULE can be obtained with GetModuleHandle Function.</p> </dd></param>\t\n            <param name=\"resourceNameRef\"><dd>  <p>The name of the resource in hModule. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the data type resolves to LPCSTR.</p> </dd></param>\t\n            <param name=\"srcFileNameRef\"><dd>  <p>Optional. Effect file name, which is used for error messages only. Can be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"definesRef\"><dd>  <p>A <c>null</c>-terminated array of shader macros (see <strong>D3D10_SHADER_MACRO</strong>); set this to <strong><c>null</c></strong> to specify no macros.</p> </dd></param>\t\n            <param name=\"includeRef\"><dd>  <p>A reference to an include interface (see <strong>ID3D10Include Interface</strong>). This parameter can be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"profileRef\"><dd>  <p>A string that specifies the shader profile, or shader model.</p> </dd></param>\t\n            <param name=\"hLSLFlags\"><dd>  <p>HLSL compile options (see D3D10_SHADER Constants).</p> </dd></param>\t\n            <param name=\"fXFlags\"><dd>  <p>Effect compile options (see Compile and Effect Flags).</p> </dd></param>\t\n            <param name=\"deviceRef\"><dd>  <p>A reference to the device (see <strong><see cref=\"T:SharpDX.Direct3D10.Device\"/> Interface</strong>) that will use the resources.</p> </dd></param>\t\n            <param name=\"pumpRef\"><dd>  <p>A reference to a thread pump interface (see <strong><see cref=\"T:System.IntPtr\"/> Interface</strong>). Use <strong><c>null</c></strong> to specify that this function should not return until it is completed.</p> </dd></param>\t\n            <param name=\"effectPoolOut\"><dd>  <p>The address of a reference to the effect pool (see <strong><see cref=\"T:SharpDX.Direct3D10.EffectPool\"/> Interface</strong>).</p> </dd></param>\t\n            <param name=\"errorsOut\"><dd>  <p>The address of a reference to memory (see <strong><see cref=\"T:SharpDX.Direct3D.Blob\"/> Interface</strong>) that contains effect compile errors, if there were any.</p> </dd></param>\t\n            <param name=\"hResultRef\"><dd>  <p>A reference to the return value. May be <strong><c>null</c></strong>. If <em>pPump</em> is not <strong><c>null</c></strong>, then <em>pHResult</em> must be a valid memory location until the asynchronous execution completes.</p> </dd></param>\t\n            <returns><p>The return value is one of the values listed in Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10CreateEffectPoolFromResourceW']/*\"/>\t\n            <msdn-id>bb172663</msdn-id>\t\n            <unmanaged>HRESULT D3DX10CreateEffectPoolFromResourceW([In] HINSTANCE hModule,[In] const wchar_t* pResourceName,[In] const wchar_t* pSrcFileName,[In, Buffer, Optional] const D3D_SHADER_MACRO* pDefines,[In] ID3DInclude* pInclude,[In] const char* pProfile,[In] unsigned int HLSLFlags,[In] unsigned int FXFlags,[In] ID3D10Device* pDevice,[In] ID3DX10ThreadPump* pPump,[In] ID3D10EffectPool** ppEffectPool,[In] ID3D10Blob** ppErrors,[Out] HRESULT* pHResult)</unmanaged>\t\n            <unmanaged-short>D3DX10CreateEffectPoolFromResourceW</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.D3DX10.CreateEffectPoolFromFile(System.String,SharpDX.Direct3D.ShaderMacro[],System.IntPtr,System.String,System.Int32,System.Int32,SharpDX.Direct3D10.Device,System.IntPtr,SharpDX.Direct3D10.EffectPool@,SharpDX.Direct3D.Blob@,SharpDX.Result@)\">\n            <summary>\t\n            <p>Create an effect pool from an effect file.</p>\t\n            </summary>\t\n            <param name=\"fileNameRef\"><dd>  <p>The effect filename. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the data type resolves to LPCSTR.</p> </dd></param>\t\n            <param name=\"definesRef\"><dd>  <p>A <c>null</c>-terminated array of shader macros (see <strong>D3D10_SHADER_MACRO</strong>); set this to <strong><c>null</c></strong> to specify no macros.</p> </dd></param>\t\n            <param name=\"includeRef\"><dd>  <p>A reference to an include interface (see <strong>ID3D10Include Interface</strong>). This parameter can be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"profileRef\"><dd>  <p>A string that specifies the shader profile, or shader model.</p> </dd></param>\t\n            <param name=\"hLSLFlags\"><dd>  <p>HLSL compile options (see D3D10_SHADER Constants).</p> </dd></param>\t\n            <param name=\"fXFlags\"><dd>  <p>Effect compile options (see Compile and Effect Flags).</p> </dd></param>\t\n            <param name=\"deviceRef\"><dd>  <p>A reference to the device (see <strong><see cref=\"T:SharpDX.Direct3D10.Device\"/> Interface</strong>) that will use the resources.</p> </dd></param>\t\n            <param name=\"pumpRef\"><dd>  <p>A reference to a thread pump interface (see <strong><see cref=\"T:System.IntPtr\"/> Interface</strong>). Use <strong><c>null</c></strong> to specify that this function should not return until it is completed.</p> </dd></param>\t\n            <param name=\"effectPoolOut\"><dd>  <p>The address of a reference to the effect pool (see <strong><see cref=\"T:SharpDX.Direct3D10.EffectPool\"/> Interface</strong>).</p> </dd></param>\t\n            <param name=\"errorsOut\"><dd>  <p>The address of a reference to memory (see <strong><see cref=\"T:SharpDX.Direct3D.Blob\"/> Interface</strong>) that contains effect compile errors, if there were any.</p> </dd></param>\t\n            <param name=\"hResultRef\"><dd>  <p>A reference to the return value. May be <strong><c>null</c></strong>. If <em>pPump</em> is not <strong><c>null</c></strong>, then <em>pHResult</em> must be a valid memory location until the asynchronous execution completes.</p> </dd></param>\t\n            <returns><p>The return value is one of the values listed in Direct3D 10 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>This example creates an effect pool from the effect used in the BasicHLSL10 Sample.</p><pre><code> // Create an effect pool from an effect in memory\t\n            <see cref=\"T:SharpDX.Direct3D10.EffectPool\"/> * l_pEffectPool = <c>null</c>;\t\n            <see cref=\"T:SharpDX.Direct3D.Blob\"/>*\tl_pBlob_Errors = <c>null</c>;\t\n            WCHAR str[MAX_PATH];\t\n            hr = DXUTFindDXSDKMediaFileCch( str, MAX_PATH, L\"BasicHLSL10.fx\" );\t\n            hr = <see cref=\"M:SharpDX.Direct3D10.D3DX10.CreateEffectPoolFromFile(System.String,SharpDX.Direct3D.ShaderMacro[],System.IntPtr,System.String,System.Int32,System.Int32,SharpDX.Direct3D10.Device,System.IntPtr,SharpDX.Direct3D10.EffectPool@,SharpDX.Direct3D.Blob@,SharpDX.Result@)\"/>( str,  <c>null</c>, <c>null</c>, D3D10_SHADER_ENABLE_STRICTNESS,  0, pd3dDevice, <c>null</c>, &amp;l_pEffectPool, &amp;l_pBlob_Errors );\t\n            </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10CreateEffectPoolFromFileW']/*\"/>\t\n            <msdn-id>bb172661</msdn-id>\t\n            <unmanaged>HRESULT D3DX10CreateEffectPoolFromFileW([In] const wchar_t* pFileName,[In, Buffer, Optional] const D3D_SHADER_MACRO* pDefines,[In] ID3DInclude* pInclude,[In] const char* pProfile,[In] unsigned int HLSLFlags,[In] unsigned int FXFlags,[In] ID3D10Device* pDevice,[In] ID3DX10ThreadPump* pPump,[In] ID3D10EffectPool** ppEffectPool,[In] ID3D10Blob** ppErrors,[Out] HRESULT* pHResult)</unmanaged>\t\n            <unmanaged-short>D3DX10CreateEffectPoolFromFileW</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.D3DX10.CreateEffectFromFile(System.String,SharpDX.Direct3D.ShaderMacro[],System.IntPtr,System.String,System.Int32,System.Int32,SharpDX.Direct3D10.Device,SharpDX.Direct3D10.EffectPool,System.IntPtr,SharpDX.Direct3D10.Effect@,SharpDX.Direct3D.Blob@,SharpDX.Result@)\">\n            <summary>\t\n            <p>Create an effect from a file.</p>\t\n            </summary>\t\n            <param name=\"fileNameRef\"><dd>  <p>Name of the ASCII effect file. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the data type resolves to LPCSTR.</p> </dd></param>\t\n            <param name=\"definesRef\"><dd>  <p>A <c>null</c>-terminated array of shader macros (see <strong>D3D10_SHADER_MACRO</strong>); set this to <strong><c>null</c></strong> to specify no macros.</p> </dd></param>\t\n            <param name=\"includeRef\"><dd>  <p>A reference to an include interface (see <strong>ID3D10Include Interface</strong>). This parameter can be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"profileRef\"><dd>  <p>A string that specifies the shader profile, or shader model.</p> </dd></param>\t\n            <param name=\"hLSLFlags\"><dd>  <p>HLSL compile options (see D3D10_SHADER Constants).</p> </dd></param>\t\n            <param name=\"fXFlags\"><dd>  <p>Effect compile options (see Compile and Effect Flags).</p> </dd></param>\t\n            <param name=\"deviceRef\"><dd>  <p>A reference to the device (see <strong><see cref=\"T:SharpDX.Direct3D10.Device\"/> Interface</strong>) that will use the resources.</p> </dd></param>\t\n            <param name=\"effectPoolRef\"><dd>  <p>Pointer to an effect pool (see <strong><see cref=\"T:SharpDX.Direct3D10.EffectPool\"/> Interface</strong>) for sharing variables between effects.</p> </dd></param>\t\n            <param name=\"pumpRef\"><dd>  <p>A reference to a thread pump interface (see <strong><see cref=\"T:System.IntPtr\"/> Interface</strong>). Use <strong><c>null</c></strong> to specify that this function should not return until it is completed.</p> </dd></param>\t\n            <param name=\"effectOut\"><dd>  <p>Address of a reference to the effect (see <strong><see cref=\"T:SharpDX.Direct3D10.Effect\"/> Interface</strong>) that is created.</p> </dd></param>\t\n            <param name=\"errorsOut\"><dd>  <p>The address of a reference to memory (see <strong><see cref=\"T:SharpDX.Direct3D.Blob\"/> Interface</strong>) that contains effect compile errors, if there were any.</p> </dd></param>\t\n            <param name=\"hResultRef\"><dd>  <p>A reference to the return value. May be <strong><c>null</c></strong>. If <em>pPump</em> is not <strong><c>null</c></strong>, then <em>pHResult</em> must be a valid memory location until the asynchronous execution completes.</p> </dd></param>\t\n            <returns><p>The return value is one of the values listed in Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10CreateEffectFromFileW']/*\"/>\t\n            <msdn-id>bb172658</msdn-id>\t\n            <unmanaged>HRESULT D3DX10CreateEffectFromFileW([In] const wchar_t* pFileName,[In, Buffer, Optional] const D3D_SHADER_MACRO* pDefines,[In] ID3DInclude* pInclude,[In] const char* pProfile,[In] unsigned int HLSLFlags,[In] unsigned int FXFlags,[In] ID3D10Device* pDevice,[In] ID3D10EffectPool* pEffectPool,[In] ID3DX10ThreadPump* pPump,[In] ID3D10Effect** ppEffect,[In] ID3D10Blob** ppErrors,[Out] HRESULT* pHResult)</unmanaged>\t\n            <unmanaged-short>D3DX10CreateEffectFromFileW</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.D3DX10.CreateEffectFromMemory(System.IntPtr,SharpDX.PointerSize,System.String,SharpDX.Direct3D.ShaderMacro[],System.IntPtr,System.String,System.Int32,System.Int32,SharpDX.Direct3D10.Device,SharpDX.Direct3D10.EffectPool,System.IntPtr,SharpDX.Direct3D10.Effect@,SharpDX.Direct3D.Blob@,SharpDX.Result@)\">\n            <summary>\t\n            <p>Create an effect from memory.</p>\t\n            </summary>\t\n            <param name=\"dataRef\"><dd>  <p>Pointer to the effect in memory.</p> </dd></param>\t\n            <param name=\"dataLength\"><dd>  <p>Size of the effect in memory.</p> </dd></param>\t\n            <param name=\"srcFileNameRef\"><dd>  <p>Name of the effect file in memory.</p> </dd></param>\t\n            <param name=\"definesRef\"><dd>  <p>A <c>null</c>-terminated array of shader macros (see <strong>D3D10_SHADER_MACRO</strong>); set this to <strong><c>null</c></strong> to specify no macros.</p> </dd></param>\t\n            <param name=\"includeRef\"><dd>  <p>A reference to an include interface (see <strong>ID3D10Include Interface</strong>). This parameter can be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"profileRef\"><dd>  <p>A string that specifies the shader profile, or shader model.</p> </dd></param>\t\n            <param name=\"hLSLFlags\"><dd>  <p>HLSL compile options (see D3D10_SHADER Constants).</p> </dd></param>\t\n            <param name=\"fXFlags\"><dd>  <p>Effect compile options (see D3D10_EFFECT Constants).</p> </dd></param>\t\n            <param name=\"deviceRef\"><dd>  <p>A reference to the device (see <strong><see cref=\"T:SharpDX.Direct3D10.Device\"/> Interface</strong>) that will use the resources.</p> </dd></param>\t\n            <param name=\"effectPoolRef\"><dd>  <p>Pointer to an effect pool (see <strong><see cref=\"T:SharpDX.Direct3D10.EffectPool\"/> Interface</strong>) for sharing variables between effects.</p> </dd></param>\t\n            <param name=\"pumpRef\"><dd>  <p>A reference to a thread pump interface (see <strong><see cref=\"T:System.IntPtr\"/> Interface</strong>). Use <strong><c>null</c></strong> to specify that this function should not return until it is completed.</p> </dd></param>\t\n            <param name=\"effectOut\"><dd>  <p>Address of a reference to the effect (see <strong><see cref=\"T:SharpDX.Direct3D10.Effect\"/> Interface</strong>) that is created.</p> </dd></param>\t\n            <param name=\"errorsOut\"><dd>  <p>The address of a reference to memory (see <strong><see cref=\"T:SharpDX.Direct3D.Blob\"/> Interface</strong>) that contains effect compile errors, if there were any.</p> </dd></param>\t\n            <param name=\"hResultRef\"><dd>  <p>A reference to the return value. May be <strong><c>null</c></strong>. If <em>pPump</em> is not <strong><c>null</c></strong>, then <em>pHResult</em> must be a valid memory location until the asynchronous execution completes.</p> </dd></param>\t\n            <returns><p>The return value is one of the values listed in Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10CreateEffectFromMemory']/*\"/>\t\n            <msdn-id>bb172659</msdn-id>\t\n            <unmanaged>HRESULT D3DX10CreateEffectFromMemory([In] const void* pData,[In] SIZE_T DataLength,[In] const char* pSrcFileName,[In, Buffer, Optional] const D3D_SHADER_MACRO* pDefines,[In] ID3DInclude* pInclude,[In] const char* pProfile,[In] unsigned int HLSLFlags,[In] unsigned int FXFlags,[In] ID3D10Device* pDevice,[In] ID3D10EffectPool* pEffectPool,[In] ID3DX10ThreadPump* pPump,[In] ID3D10Effect** ppEffect,[In] ID3D10Blob** ppErrors,[Out] HRESULT* pHResult)</unmanaged>\t\n            <unmanaged-short>D3DX10CreateEffectFromMemory</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.D3DX10.CreateEffectPoolFromMemory(System.IntPtr,SharpDX.PointerSize,System.String,SharpDX.Direct3D.ShaderMacro[],System.IntPtr,System.String,System.Int32,System.Int32,SharpDX.Direct3D10.Device,System.IntPtr,SharpDX.Direct3D10.EffectPool@,SharpDX.Direct3D.Blob@,SharpDX.Result@)\">\n            <summary>\t\n            <p>Create an effect pool from an effect in memory.</p>\t\n            </summary>\t\n            <param name=\"dataRef\"><dd>  <p>A reference to the effect.</p> </dd></param>\t\n            <param name=\"dataLength\"><dd>  <p>The size of the effect.</p> </dd></param>\t\n            <param name=\"srcFileNameRef\"><dd>  <p>The name of the effect file.</p> </dd></param>\t\n            <param name=\"definesRef\"><dd>  <p>A <c>null</c>-terminated array of shader macros (see <strong>D3D10_SHADER_MACRO</strong>); set this to <strong><c>null</c></strong> to specify no macros.</p> </dd></param>\t\n            <param name=\"includeRef\"><dd>  <p>A reference to an include interface (see <strong>ID3D10Include Interface</strong>). This parameter can be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"profileRef\"><dd>  <p>A string that specifies the shader profile, or shader model.</p> </dd></param>\t\n            <param name=\"hLSLFlags\"><dd>  <p>HLSL compile options (see D3D10_SHADER Constants).</p> </dd></param>\t\n            <param name=\"fXFlags\"><dd>  <p>Effect compile options (see Compile and Effect Flags).</p> </dd></param>\t\n            <param name=\"deviceRef\"><dd>  <p>A reference to the device (see <strong><see cref=\"T:SharpDX.Direct3D10.Device\"/> Interface</strong>) that will use the resources.</p> </dd></param>\t\n            <param name=\"pumpRef\"><dd>  <p>A reference to a thread pump interface (see <strong><see cref=\"T:System.IntPtr\"/> Interface</strong>). Use <strong><c>null</c></strong> to specify that this function should not return until it is completed.</p> </dd></param>\t\n            <param name=\"effectPoolOut\"><dd>  <p>The address of a reference to the effect pool (see <strong><see cref=\"T:SharpDX.Direct3D10.EffectPool\"/> Interface</strong>).</p> </dd></param>\t\n            <param name=\"errorsOut\"><dd>  <p>The address of a reference to memory (see <strong><see cref=\"T:SharpDX.Direct3D.Blob\"/> Interface</strong>) that contains effect compile errors, if there were any.</p> </dd></param>\t\n            <param name=\"hResultRef\"><dd>  <p>A reference to the return value. May be <strong><c>null</c></strong>. If <em>pPump</em> is not <strong><c>null</c></strong>, then <em>pHResult</em> must be a valid memory location until the asynchronous execution completes.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10CreateEffectPoolFromMemory']/*\"/>\t\n            <msdn-id>bb172662</msdn-id>\t\n            <unmanaged>HRESULT D3DX10CreateEffectPoolFromMemory([In] const void* pData,[In] SIZE_T DataLength,[In] const char* pSrcFileName,[In, Buffer, Optional] const D3D_SHADER_MACRO* pDefines,[In] ID3DInclude* pInclude,[In] const char* pProfile,[In] unsigned int HLSLFlags,[In] unsigned int FXFlags,[In] ID3D10Device* pDevice,[In] ID3DX10ThreadPump* pPump,[In] ID3D10EffectPool** ppEffectPool,[In] ID3D10Blob** ppErrors,[Out] HRESULT* pHResult)</unmanaged>\t\n            <unmanaged-short>D3DX10CreateEffectPoolFromMemory</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.D3DX10.CreateEffectFromResource(System.IntPtr,System.String,System.String,SharpDX.Direct3D.ShaderMacro[],System.IntPtr,System.String,System.Int32,System.Int32,SharpDX.Direct3D10.Device,SharpDX.Direct3D10.EffectPool,System.IntPtr,SharpDX.Direct3D10.Effect@,SharpDX.Direct3D.Blob@,SharpDX.Result@)\">\n            <summary>\t\n            <p>Create an effect from a resource.</p>\t\n            </summary>\t\n            <param name=\"hModule\"><dd>  <p>A handle to the resource module containing the effect. HMODULE can be obtained with GetModuleHandle Function.</p> </dd></param>\t\n            <param name=\"resourceNameRef\"><dd>  <p>Name of the resource in hModule. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the data type resolves to LPCSTR.</p> </dd></param>\t\n            <param name=\"srcFileNameRef\"><dd>  <p>Optional. Effect file name, which is used for error messages only. Can be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"definesRef\"><dd>  <p>A <c>null</c>-terminated array of shader macros (see <strong>D3D10_SHADER_MACRO</strong>); set this to <strong><c>null</c></strong> to specify no macros.</p> </dd></param>\t\n            <param name=\"includeRef\"><dd>  <p>A reference to an include interface (see <strong>ID3D10Include Interface</strong>). This parameter can be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"profileRef\"><dd>  <p>A string that specifies the shader profile, or shader model.</p> </dd></param>\t\n            <param name=\"hLSLFlags\"><dd>  <p>HLSL compile options (see D3D10_SHADER Constants).</p> </dd></param>\t\n            <param name=\"fXFlags\"><dd>  <p>Effect compile options (see Compile and Effect Flags).</p> </dd></param>\t\n            <param name=\"deviceRef\"><dd>  <p>A reference to the device (see <strong><see cref=\"T:SharpDX.Direct3D10.Device\"/> Interface</strong>) that will use the resources.</p> </dd></param>\t\n            <param name=\"effectPoolRef\"><dd>  <p>Pointer to an effect pool (see <strong><see cref=\"T:SharpDX.Direct3D10.EffectPool\"/> Interface</strong>) for sharing variables between effects.</p> </dd></param>\t\n            <param name=\"pumpRef\"><dd>  <p>A reference to a thread pump interface (see <strong><see cref=\"T:System.IntPtr\"/> Interface</strong>). Use <strong><c>null</c></strong> to specify that this function should not return until it is completed.</p> </dd></param>\t\n            <param name=\"effectOut\"><dd>  <p>Address of a reference to the effect (see <strong><see cref=\"T:SharpDX.Direct3D10.Effect\"/> Interface</strong>) that is created.</p> </dd></param>\t\n            <param name=\"errorsOut\"><dd>  <p>The address of a reference to memory (see <strong><see cref=\"T:SharpDX.Direct3D.Blob\"/> Interface</strong>) that contains effect compile errors, if there were any.</p> </dd></param>\t\n            <param name=\"hResultRef\"><dd>  <p>A reference to the return value. May be <strong><c>null</c></strong>. If <em>pPump</em> is not <strong><c>null</c></strong>, then <em>pHResult</em> must be a valid memory location until the asynchronous execution completes.</p> </dd></param>\t\n            <returns><p>The return value is one of the values listed in Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10CreateEffectFromResourceW']/*\"/>\t\n            <msdn-id>bb172660</msdn-id>\t\n            <unmanaged>HRESULT D3DX10CreateEffectFromResourceW([In] HINSTANCE hModule,[In] const wchar_t* pResourceName,[In] const wchar_t* pSrcFileName,[In, Buffer, Optional] const D3D_SHADER_MACRO* pDefines,[In] ID3DInclude* pInclude,[In] const char* pProfile,[In] unsigned int HLSLFlags,[In] unsigned int FXFlags,[In] ID3D10Device* pDevice,[In] ID3D10EffectPool* pEffectPool,[In] ID3DX10ThreadPump* pPump,[In] ID3D10Effect** ppEffect,[In] ID3D10Blob** ppErrors,[Out] HRESULT* pHResult)</unmanaged>\t\n            <unmanaged-short>D3DX10CreateEffectFromResourceW</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.EffectConstantBuffer\">\n            <summary>\t\n            <p>A constant-buffer interface accesses constant buffers or texture buffers.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Use constant buffers to store many effect constants; grouping constants into buffers based on their frequency of update. This allows you to minimize the number of state changes as well as make the fewest API calls to change state. Both of these factors lead to better performance.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectConstantBuffer']/*\"/>\t\n            <msdn-id>bb173634</msdn-id>\t\n            <unmanaged>ID3D10EffectConstantBuffer</unmanaged>\t\n            <unmanaged-short>ID3D10EffectConstantBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectConstantBuffer.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D10.EffectConstantBuffer\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectConstantBuffer.op_Explicit(System.IntPtr)~SharpDX.Direct3D10.EffectConstantBuffer\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D10.EffectConstantBuffer\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectConstantBuffer.SetConstantBuffer(SharpDX.Direct3D10.Buffer)\">\n            <summary>\t\n            <p>Set a constant-buffer.</p>\t\n            </summary>\t\n            <param name=\"constantBufferRef\"><dd>  <p>A reference to a constant-buffer interface. See <strong><see cref=\"T:SharpDX.Direct3D10.Buffer\"/> Interface</strong>.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectConstantBuffer::SetConstantBuffer']/*\"/>\t\n            <msdn-id>bb173637</msdn-id>\t\n            <unmanaged>HRESULT ID3D10EffectConstantBuffer::SetConstantBuffer([In] ID3D10Buffer* pConstantBuffer)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectConstantBuffer::SetConstantBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectConstantBuffer.GetConstantBuffer\">\n            <summary>\t\n            <p>Get a constant-buffer.</p>\t\n            </summary>\t\n            <returns><dd>  <p>The address of a reference to a constant-buffer interface. See <strong><see cref=\"T:SharpDX.Direct3D10.Buffer\"/> Interface</strong>.</p> </dd></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectConstantBuffer::GetConstantBuffer']/*\"/>\t\n            <msdn-id>bb173635</msdn-id>\t\n            <unmanaged>HRESULT ID3D10EffectConstantBuffer::GetConstantBuffer([Out] ID3D10Buffer** ppConstantBuffer)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectConstantBuffer::GetConstantBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectConstantBuffer.SetTextureBuffer(SharpDX.Direct3D10.ShaderResourceView)\">\n            <summary>\t\n            <p>Set a texture-buffer.</p>\t\n            </summary>\t\n            <param name=\"textureBufferRef\"><dd>  <p>A reference to a shader-resource-view interface for accessing a texture buffer.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectConstantBuffer::SetTextureBuffer']/*\"/>\t\n            <msdn-id>bb173638</msdn-id>\t\n            <unmanaged>HRESULT ID3D10EffectConstantBuffer::SetTextureBuffer([In] ID3D10ShaderResourceView* pTextureBuffer)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectConstantBuffer::SetTextureBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectConstantBuffer.GetTextureBuffer\">\n            <summary>\t\n            <p>Get a texture-buffer.</p>\t\n            </summary>\t\n            <returns><dd>  <p>The address of a reference to a shader-resource-view interface for accessing a texture buffer. See <strong><see cref=\"T:SharpDX.Direct3D10.ShaderResourceView\"/> Interface</strong>.</p> </dd></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectConstantBuffer::GetTextureBuffer']/*\"/>\t\n            <msdn-id>bb173636</msdn-id>\t\n            <unmanaged>HRESULT ID3D10EffectConstantBuffer::GetTextureBuffer([Out] ID3D10ShaderResourceView** ppTextureBuffer)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectConstantBuffer::GetTextureBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.EffectShaderVariable\">\n            <summary>\t\n            <p>A shader-variable interface accesses a shader variable.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectShaderVariable']/*\"/>\t\n            <msdn-id>bb173698</msdn-id>\t\n            <unmanaged>ID3D10EffectShaderVariable</unmanaged>\t\n            <unmanaged-short>ID3D10EffectShaderVariable</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectShaderVariable.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D10.EffectShaderVariable\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectShaderVariable.op_Explicit(System.IntPtr)~SharpDX.Direct3D10.EffectShaderVariable\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D10.EffectShaderVariable\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectShaderVariable.GetShaderDescription(System.Int32)\">\n            <summary>\t\n            <p>Get a shader description.</p>\t\n            </summary>\t\n            <param name=\"shaderIndex\"><dd>  <p>A zero-based index.</p> </dd></param>\t\n            <returns><dd>  <p>A reference to a shader description (see <strong><see cref=\"T:SharpDX.Direct3D10.EffectShaderDescription\"/></strong>).</p> </dd></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectShaderVariable::GetShaderDesc']/*\"/>\t\n            <msdn-id>bb173703</msdn-id>\t\n            <unmanaged>HRESULT ID3D10EffectShaderVariable::GetShaderDesc([In] unsigned int ShaderIndex,[Out] D3D10_EFFECT_SHADER_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectShaderVariable::GetShaderDesc</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectShaderVariable.GetVertexShader(System.Int32)\">\n            <summary>\t\n            <p>Get a vertex shader.</p>\t\n            </summary>\t\n            <param name=\"shaderIndex\"><dd>  <p>A zero-based index.</p> </dd></param>\t\n            <returns><dd>  <p>A reference to a <strong><see cref=\"T:SharpDX.Direct3D10.VertexShader\"/> Interface</strong>.</p> </dd></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectShaderVariable::GetVertexShader']/*\"/>\t\n            <msdn-id>Bb173704</msdn-id>\t\n            <unmanaged>HRESULT ID3D10EffectShaderVariable::GetVertexShader([In] unsigned int ShaderIndex,[Out] ID3D10VertexShader** ppVS)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectShaderVariable::GetVertexShader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectShaderVariable.GetGeometryShader(System.Int32)\">\n            <summary>\t\n            <p>Get a geometry shader.</p>\t\n            </summary>\t\n            <param name=\"shaderIndex\"><dd>  <p>A zero-based index.</p> </dd></param>\t\n            <returns><dd>  <p>A reference to a <strong><see cref=\"T:SharpDX.Direct3D10.GeometryShader\"/> Interface</strong>.</p> </dd></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectShaderVariable::GetGeometryShader']/*\"/>\t\n            <msdn-id>bb173699</msdn-id>\t\n            <unmanaged>HRESULT ID3D10EffectShaderVariable::GetGeometryShader([In] unsigned int ShaderIndex,[Out] ID3D10GeometryShader** ppGS)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectShaderVariable::GetGeometryShader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectShaderVariable.GetPixelShader(System.Int32)\">\n            <summary>\t\n            <p>Get a pixel shader.</p>\t\n            </summary>\t\n            <param name=\"shaderIndex\"><dd>  <p>A zero-based index.</p> </dd></param>\t\n            <returns><dd>  <p>A reference to a <strong><see cref=\"T:SharpDX.Direct3D10.PixelShader\"/> Interface</strong>.</p> </dd></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectShaderVariable::GetPixelShader']/*\"/>\t\n            <msdn-id>bb173702</msdn-id>\t\n            <unmanaged>HRESULT ID3D10EffectShaderVariable::GetPixelShader([In] unsigned int ShaderIndex,[Out] ID3D10PixelShader** ppPS)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectShaderVariable::GetPixelShader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectShaderVariable.GetInputSignatureElementDescription(System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Get an input-signature description.</p>\t\n            </summary>\t\n            <param name=\"shaderIndex\"><dd>  <p>A zero-based shader index.</p> </dd></param>\t\n            <param name=\"element\"><dd>  <p>A zero-based shader-element index.</p> </dd></param>\t\n            <returns><dd>  <p>A reference to a parameter description (see <strong><see cref=\"T:SharpDX.Direct3D10.ShaderParameterDescription\"/></strong>).</p> </dd></returns>\t\n            <remarks>\t\n            <p>An effect contains one or more shaders; each shader has an input and output signature; each signature contains one or more elements (or parameters). The shader index identifies the shader and the element index identifies the element (or parameter) in the shader signature.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectShaderVariable::GetInputSignatureElementDesc']/*\"/>\t\n            <msdn-id>bb173700</msdn-id>\t\n            <unmanaged>HRESULT ID3D10EffectShaderVariable::GetInputSignatureElementDesc([In] unsigned int ShaderIndex,[In] unsigned int Element,[Out] D3D10_SIGNATURE_PARAMETER_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectShaderVariable::GetInputSignatureElementDesc</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectShaderVariable.GetOutputSignatureElementDescription(System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Get an output-signature description.</p>\t\n            </summary>\t\n            <param name=\"shaderIndex\"><dd>  <p>A zero-based shader index.</p> </dd></param>\t\n            <param name=\"element\"><dd>  <p>A zero-based element index.</p> </dd></param>\t\n            <returns><dd>  <p>A reference to a parameter description (see <strong><see cref=\"T:SharpDX.Direct3D10.ShaderParameterDescription\"/></strong>).</p> </dd></returns>\t\n            <remarks>\t\n            <p>An effect contains one or more shaders; each shader has an input and output signature; each signature contains one or more elements (or parameters). The shader index identifies the shader and the element index identifies the element (or parameter) in the shader signature.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectShaderVariable::GetOutputSignatureElementDesc']/*\"/>\t\n            <msdn-id>bb173701</msdn-id>\t\n            <unmanaged>HRESULT ID3D10EffectShaderVariable::GetOutputSignatureElementDesc([In] unsigned int ShaderIndex,[In] unsigned int Element,[Out] D3D10_SIGNATURE_PARAMETER_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectShaderVariable::GetOutputSignatureElementDesc</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.EffectTechnique\">\n            <summary>\t\n            <p>An <strong><see cref=\"T:SharpDX.Direct3D10.EffectTechnique\"/></strong> interface is a collection of passes.</p><p>The lifetime of an <strong><see cref=\"T:SharpDX.Direct3D10.EffectTechnique\"/></strong> object is equal to the lifetime of its parent <strong><see cref=\"T:SharpDX.Direct3D10.Effect\"/></strong> object.</p><ul> <li>Methods</li> </ul>Methods<p>The <strong><see cref=\"T:SharpDX.Direct3D10.EffectTechnique\"/></strong> interface has the following methods.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>An effect contains one or more techniques; each technique contains one or more passes; each pass contains state assignments (see Organizing State in an Effect (Direct3D 10)). The syntax for creating a technique is shown in Effect Technique Syntax (Direct3D 10).</p><p>To get an effect-technique interface, call a method like <strong><see cref=\"M:SharpDX.Direct3D10.Effect.GetTechniqueByName(System.String)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectTechnique']/*\"/>\t\n            <msdn-id>bb173708</msdn-id>\t\n            <unmanaged>ID3D10EffectTechnique</unmanaged>\t\n            <unmanaged-short>ID3D10EffectTechnique</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectTechnique.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D10.EffectTechnique\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectTechnique.op_Explicit(System.IntPtr)~SharpDX.Direct3D10.EffectTechnique\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D10.EffectTechnique\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectTechnique.IsValid_\">\n            <summary>\t\n            <p>Test a technique to see if it contains valid syntax.</p>\t\n            </summary>\t\n            <returns><p><strong>TRUE</strong> if the code syntax is valid; otherwise <strong><see cref=\"F:SharpDX.Result.False\"/></strong>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectTechnique::IsValid']/*\"/>\t\n            <msdn-id>bb173715</msdn-id>\t\n            <unmanaged>BOOL ID3D10EffectTechnique::IsValid()</unmanaged>\t\n            <unmanaged-short>ID3D10EffectTechnique::IsValid</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectTechnique.GetDescription(SharpDX.Direct3D10.EffectTechniqueDescription@)\">\n            <summary>\t\n            <p>Get a technique description.</p>\t\n            </summary>\t\n            <param name=\"descRef\"><dd>  <p>A reference to a technique description (see <strong><see cref=\"T:SharpDX.Direct3D10.EffectTechniqueDescription\"/></strong>).</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectTechnique::GetDesc']/*\"/>\t\n            <msdn-id>bb173712</msdn-id>\t\n            <unmanaged>HRESULT ID3D10EffectTechnique::GetDesc([Out] D3D10_TECHNIQUE_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectTechnique::GetDesc</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectTechnique.GetAnnotationByIndex(System.Int32)\">\n            <summary>\t\n            <p>Get an annotation by index.</p>\t\n            </summary>\t\n            <param name=\"index\"><dd>  <p>The zero-based index of the interface reference.</p> </dd></param>\t\n            <returns><p>A reference to an <strong><see cref=\"T:SharpDX.Direct3D10.EffectVariable\"/> Interface</strong>.</p></returns>\t\n            <remarks>\t\n            <p>Use an annotation to attach a piece of metadata to a technique.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectTechnique::GetAnnotationByIndex']/*\"/>\t\n            <msdn-id>bb173710</msdn-id>\t\n            <unmanaged>ID3D10EffectVariable* ID3D10EffectTechnique::GetAnnotationByIndex([In] unsigned int Index)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectTechnique::GetAnnotationByIndex</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectTechnique.GetAnnotationByName(System.String)\">\n            <summary>\t\n            <p>Get an annotation by name.</p>\t\n            </summary>\t\n            <param name=\"name\"><dd>  <p>Name of the annotation.</p> </dd></param>\t\n            <returns><p>A reference to an <strong><see cref=\"T:SharpDX.Direct3D10.EffectVariable\"/> Interface</strong>.</p></returns>\t\n            <remarks>\t\n            <p>Use an annotation to attach a piece of metadata to a technique.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectTechnique::GetAnnotationByName']/*\"/>\t\n            <msdn-id>bb173711</msdn-id>\t\n            <unmanaged>ID3D10EffectVariable* ID3D10EffectTechnique::GetAnnotationByName([In] const char* Name)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectTechnique::GetAnnotationByName</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectTechnique.GetPassByIndex(System.Int32)\">\n            <summary>\t\n            <p>Get a pass by index.</p>\t\n            </summary>\t\n            <param name=\"index\"><dd>  <p>A zero-based index.</p> </dd></param>\t\n            <returns><p>A reference to a <strong><see cref=\"T:SharpDX.Direct3D10.EffectPass\"/> Interface</strong>.</p></returns>\t\n            <remarks>\t\n            <p>A technique contains one or more passes; get a pass using a name or an index.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectTechnique::GetPassByIndex']/*\"/>\t\n            <msdn-id>Bb173713</msdn-id>\t\n            <unmanaged>ID3D10EffectPass* ID3D10EffectTechnique::GetPassByIndex([In] unsigned int Index)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectTechnique::GetPassByIndex</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectTechnique.GetPassByName(System.String)\">\n            <summary>\t\n            <p>Get a pass by name.</p>\t\n            </summary>\t\n            <param name=\"name\"><dd>  <p>The name of the pass.</p> </dd></param>\t\n            <returns><p>A reference to an <strong><see cref=\"T:SharpDX.Direct3D10.EffectPass\"/> Interface</strong>.</p></returns>\t\n            <remarks>\t\n            <p>A technique contains one or more passes; get a pass using a name or an index.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectTechnique::GetPassByName']/*\"/>\t\n            <msdn-id>bb173714</msdn-id>\t\n            <unmanaged>ID3D10EffectPass* ID3D10EffectTechnique::GetPassByName([In] const char* Name)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectTechnique::GetPassByName</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectTechnique.ComputeStateBlockMask(SharpDX.Direct3D10.StateBlockMask@)\">\n            <summary>\t\n            <p>Compute a state-block mask to allow/prevent state changes.</p>\t\n            </summary>\t\n            <param name=\"stateBlockMaskRef\"><dd>  <p>A reference to a state-block mask (see <strong><see cref=\"T:SharpDX.Direct3D10.StateBlockMask\"/></strong>).</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectTechnique::ComputeStateBlockMask']/*\"/>\t\n            <msdn-id>bb173709</msdn-id>\t\n            <unmanaged>HRESULT ID3D10EffectTechnique::ComputeStateBlockMask([In] D3D10_STATE_BLOCK_MASK* pStateBlockMask)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectTechnique::ComputeStateBlockMask</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.EffectTechnique.IsValid\">\n            <summary>\t\n            <p>Test a technique to see if it contains valid syntax.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectTechnique::IsValid']/*\"/>\t\n            <msdn-id>bb173715</msdn-id>\t\n            <unmanaged>IsValid</unmanaged>\t\n            <unmanaged-short>IsValid</unmanaged-short>\t\n            <unmanaged>BOOL ID3D10EffectTechnique::IsValid()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.EffectTechnique.Description\">\n            <summary>\t\n            <p>Get a technique description.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectTechnique::GetDesc']/*\"/>\t\n            <msdn-id>bb173712</msdn-id>\t\n            <unmanaged>GetDesc</unmanaged>\t\n            <unmanaged-short>GetDesc</unmanaged-short>\t\n            <unmanaged>HRESULT ID3D10EffectTechnique::GetDesc([Out] D3D10_TECHNIQUE_DESC* pDesc)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.EffectType\">\n            <summary>\t\n            <p>Get an member type by name.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectType']/*\"/>\t\n            <msdn-id>bb173721</msdn-id>\t\n            <unmanaged>ID3D10EffectType</unmanaged>\t\n            <unmanaged-short>ID3D10EffectType</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectType.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D10.EffectType\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectType.op_Explicit(System.IntPtr)~SharpDX.Direct3D10.EffectType\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D10.EffectType\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectType.IsValid_\">\n            <summary>\t\n            <p>Tests that the effect type is valid.</p>\t\n            </summary>\t\n            <returns><p><strong>TRUE</strong> if it is valid; otherwise <strong><see cref=\"F:SharpDX.Result.False\"/></strong>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectType::IsValid']/*\"/>\t\n            <msdn-id>bb173723</msdn-id>\t\n            <unmanaged>BOOL ID3D10EffectType::IsValid()</unmanaged>\t\n            <unmanaged-short>ID3D10EffectType::IsValid</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectType.GetDescription(SharpDX.Direct3D10.EffectTypeDescription@)\">\n            <summary>\t\n            <p>Get an effect-type description.</p>\t\n            </summary>\t\n            <param name=\"descRef\"><dd>  <p>A reference to an effect-type description. See <strong><see cref=\"T:SharpDX.Direct3D10.EffectTypeDescription\"/></strong>.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>The effect-variable description contains data about the name, annotations, semantic, flags and buffer offset of the effect type.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectType::GetDesc']/*\"/>\t\n            <msdn-id>bb173717</msdn-id>\t\n            <unmanaged>HRESULT ID3D10EffectType::GetDesc([Out] D3D10_EFFECT_TYPE_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectType::GetDesc</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectType.GetMemberTypeByIndex(System.Int32)\">\n            <summary>\t\n            <p>Get a member type by index.</p>\t\n            </summary>\t\n            <param name=\"index\"><dd>  <p>A zero-based index.</p> </dd></param>\t\n            <returns><p>A reference to an <strong><see cref=\"T:SharpDX.Direct3D10.EffectType\"/> Interface</strong>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectType::GetMemberTypeByIndex']/*\"/>\t\n            <msdn-id>bb173720</msdn-id>\t\n            <unmanaged>ID3D10EffectType* ID3D10EffectType::GetMemberTypeByIndex([In] unsigned int Index)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectType::GetMemberTypeByIndex</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectType.GetMemberTypeByName(System.String)\">\n            <summary>\t\n            <p>Get an member type by name.</p>\t\n            </summary>\t\n            <param name=\"name\"><dd>  <p>A member's name.</p> </dd></param>\t\n            <returns><p>A reference to an <strong><see cref=\"T:SharpDX.Direct3D10.EffectType\"/> Interface</strong>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectType::GetMemberTypeByName']/*\"/>\t\n            <msdn-id>bb173721</msdn-id>\t\n            <unmanaged>ID3D10EffectType* ID3D10EffectType::GetMemberTypeByName([In] const char* Name)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectType::GetMemberTypeByName</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectType.GetMemberTypeBySemantic(System.String)\">\n            <summary>\t\n            <p>Get a member type by semantic.</p>\t\n            </summary>\t\n            <param name=\"semantic\"><dd>  <p>A semantic.</p> </dd></param>\t\n            <returns><p>A reference to an <strong><see cref=\"T:SharpDX.Direct3D10.EffectType\"/> Interface</strong>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectType::GetMemberTypeBySemantic']/*\"/>\t\n            <msdn-id>bb173722</msdn-id>\t\n            <unmanaged>ID3D10EffectType* ID3D10EffectType::GetMemberTypeBySemantic([In] const char* Semantic)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectType::GetMemberTypeBySemantic</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectType.GetMemberName(System.Int32)\">\n            <summary>\t\n            <p>Get the name of a member.</p>\t\n            </summary>\t\n            <param name=\"index\"><dd>  <p>A zero-based index.</p> </dd></param>\t\n            <returns><p>The name of the member.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectType::GetMemberName']/*\"/>\t\n            <msdn-id>bb173718</msdn-id>\t\n            <unmanaged>const char* ID3D10EffectType::GetMemberName([In] unsigned int Index)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectType::GetMemberName</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.EffectType.GetMemberSemantic(System.Int32)\">\n            <summary>\t\n            <p>Get the semantic attached to a member.</p>\t\n            </summary>\t\n            <param name=\"index\"><dd>  <p>A zero-based index.</p> </dd></param>\t\n            <returns><p>A string that contains the semantic.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectType::GetMemberSemantic']/*\"/>\t\n            <msdn-id>bb173719</msdn-id>\t\n            <unmanaged>const char* ID3D10EffectType::GetMemberSemantic([In] unsigned int Index)</unmanaged>\t\n            <unmanaged-short>ID3D10EffectType::GetMemberSemantic</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.EffectType.IsValid\">\n            <summary>\t\n            <p>Tests that the effect type is valid.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectType::IsValid']/*\"/>\t\n            <msdn-id>bb173723</msdn-id>\t\n            <unmanaged>IsValid</unmanaged>\t\n            <unmanaged-short>IsValid</unmanaged-short>\t\n            <unmanaged>BOOL ID3D10EffectType::IsValid()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.EffectType.Description\">\n            <summary>\t\n            <p>Get an effect-type description.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The effect-variable description contains data about the name, annotations, semantic, flags and buffer offset of the effect type.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10EffectType::GetDesc']/*\"/>\t\n            <msdn-id>bb173717</msdn-id>\t\n            <unmanaged>GetDesc</unmanaged>\t\n            <unmanaged-short>GetDesc</unmanaged-short>\t\n            <unmanaged>HRESULT ID3D10EffectType::GetDesc([Out] D3D10_EFFECT_TYPE_DESC* pDesc)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.GeometryShader\">\n            <summary>\t\n            <p>A geometry-shader interface manages an executable program (a geometry shader) that controls the geometry-shader stage.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The geometry-shader interface has no methods; use HLSL to implement your shader functionality. All shaders in Direct3D 10 are implemented from a common set of features referred to as the common shader core.</p><p>To create a geometry shader interface, call either <strong><see cref=\"M:SharpDX.Direct3D10.Device.CreateGeometryShader(System.IntPtr,SharpDX.PointerSize,SharpDX.Direct3D10.GeometryShader)\"/></strong> or <strong><see cref=\"M:SharpDX.Direct3D10.Device.CreateGeometryShaderWithStreamOutput(System.IntPtr,SharpDX.PointerSize,SharpDX.Direct3D10.StreamOutputElement[],System.Int32,System.Int32,SharpDX.Direct3D10.GeometryShader)\"/></strong>. Before using a geometry shader you must bind it to the device by calling <strong><see cref=\"M:SharpDX.Direct3D10.GeometryShaderStage.Set(SharpDX.Direct3D10.GeometryShader)\"/></strong>.</p><p>This interface is defined in D3D10.h.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10GeometryShader']/*\"/>\t\n            <msdn-id>bb173774</msdn-id>\t\n            <unmanaged>ID3D10GeometryShader</unmanaged>\t\n            <unmanaged-short>ID3D10GeometryShader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.GeometryShader.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D10.GeometryShader\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.GeometryShader.op_Explicit(System.IntPtr)~SharpDX.Direct3D10.GeometryShader\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D10.GeometryShader\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.GeometryShader.#ctor(SharpDX.Direct3D10.Device,System.Byte[])\">\n            <summary>\n              Initializes a new instance of the <see cref = \"T:SharpDX.Direct3D10.GeometryShader\" /> class.\n            </summary>\n            <param name = \"device\">The device used to create the shader.</param>\n            <param name = \"shaderBytecode\">The compiled shader bytecode.</param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.GeometryShader.#ctor(SharpDX.Direct3D10.Device,System.Byte[],SharpDX.Direct3D10.StreamOutputElement[],System.Int32)\">\n            <summary>\n              Initializes a new instance of the <see cref = \"T:SharpDX.Direct3D10.GeometryShader\" /> class.\n            </summary>\n            <param name = \"device\">The device used to create the shader.</param>\n            <param name = \"shaderBytecode\">The compiled shader bytecode.</param>\n            <param name = \"elements\">An array of <see cref = \"T:SharpDX.Direct3D10.StreamOutputElement\" /> instances describing the layout of the output buffers.</param>\n            <param name = \"outputStreamStride\">The size, in bytes, of each element in the array pointed to by pSODeclaration. This parameter is only used when the output slot is 0 for all entries in pSODeclaration.</param>\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.GeometryShaderStage\">\n            <summary>\t\n            <p>The device interface represents a virtual adapter for Direct3D 10.0; it is used to perform rendering and create Direct3D resources.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>A device is created using <strong><see cref=\"M:SharpDX.Direct3D10.D3D10.CreateDevice(SharpDX.DXGI.Adapter,SharpDX.Direct3D10.DriverType,System.IntPtr,SharpDX.Direct3D10.DeviceCreationFlags,System.Int32,SharpDX.Direct3D10.Device)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device']/*\"/>\t\n            <msdn-id>bb173528</msdn-id>\t\n            <unmanaged>ID3D10Device</unmanaged>\t\n            <unmanaged-short>ID3D10Device</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.GeometryShaderStage.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D10.GeometryShaderStage\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.GeometryShaderStage.op_Explicit(System.IntPtr)~SharpDX.Direct3D10.GeometryShaderStage\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D10.GeometryShaderStage\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.GeometryShaderStage.SetConstantBuffers(System.Int32,System.Int32,SharpDX.Direct3D10.Buffer[])\">\n            <summary>\t\n            <p>Set the constant buffers used by the geometry shader pipeline stage.</p>\t\n            </summary>\t\n            <param name=\"startSlot\">No documentation.</param>\t\n            <param name=\"numBuffers\">No documentation.</param>\t\n            <param name=\"constantBuffersOut\">No documentation.</param>\t\n            <remarks>\t\n            <p>The method will not hold references to the interfaces passed in. For that reason, applications should be careful not to release interfaces currently in use by the device.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::GSSetConstantBuffers']/*\"/>\t\n            <msdn-id>bb173580</msdn-id>\t\n            <unmanaged>void ID3D10Device::GSSetConstantBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[In, Buffer] const ID3D10Buffer** ppConstantBuffers)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::GSSetConstantBuffers</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.GeometryShaderStage.SetConstantBuffers(System.Int32,System.Int32,SharpDX.ComArray{SharpDX.Direct3D10.Buffer})\">\n            <summary>\t\n            <p>Set the constant buffers used by the geometry shader pipeline stage.</p>\t\n            </summary>\t\n            <param name=\"startSlot\">No documentation.</param>\t\n            <param name=\"numBuffers\">No documentation.</param>\t\n            <param name=\"constantBuffersOut\">No documentation.</param>\t\n            <remarks>\t\n            <p>The method will not hold references to the interfaces passed in. For that reason, applications should be careful not to release interfaces currently in use by the device.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::GSSetConstantBuffers']/*\"/>\t\n            <msdn-id>bb173580</msdn-id>\t\n            <unmanaged>void ID3D10Device::GSSetConstantBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[In, Buffer] const ID3D10Buffer** ppConstantBuffers)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::GSSetConstantBuffers</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.GeometryShaderStage.Set(SharpDX.Direct3D10.GeometryShader)\">\n            <summary>\t\n            <p>Set a geometry shader to the device.</p>\t\n            </summary>\t\n            <param name=\"shaderRef\"><dd>  <p>Pointer to a geometry shader (see <strong><see cref=\"T:SharpDX.Direct3D10.GeometryShader\"/></strong>). Passing in <strong><c>null</c></strong> disables the shader for this pipeline stage.</p> </dd></param>\t\n            <remarks>\t\n            <p>The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::GSSetShader']/*\"/>\t\n            <msdn-id>bb173582</msdn-id>\t\n            <unmanaged>void ID3D10Device::GSSetShader([In, Optional] ID3D10GeometryShader* pShader)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::GSSetShader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.GeometryShaderStage.SetShaderResources(System.Int32,System.Int32,SharpDX.Direct3D10.ShaderResourceView[])\">\n            <summary>\t\n            <p>Bind an array of shader resources to the geometry shader stage.</p>\t\n            </summary>\t\n            <param name=\"startSlot\">No documentation.</param>\t\n            <param name=\"numViews\">No documentation.</param>\t\n            <param name=\"shaderResourceViewsOut\">No documentation.</param>\t\n            <remarks>\t\n            <p>If you bind a subresource as an input and an output, this API will fill the destination shader resource slot with <strong><c>null</c></strong>. The debug layer (when active) will alert you if this is true.</p><p>For information about creating shader-resource views, see <strong><see cref=\"M:SharpDX.Direct3D10.Device.CreateShaderResourceView(SharpDX.Direct3D10.Resource,System.Nullable{SharpDX.Direct3D10.ShaderResourceViewDescription},SharpDX.Direct3D10.ShaderResourceView)\"/></strong>.</p><p>The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::GSSetShaderResources']/*\"/>\t\n            <msdn-id>bb173583</msdn-id>\t\n            <unmanaged>void ID3D10Device::GSSetShaderResources([In] unsigned int StartSlot,[In] unsigned int NumViews,[In, Buffer] const ID3D10ShaderResourceView** ppShaderResourceViews)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::GSSetShaderResources</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.GeometryShaderStage.SetShaderResources(System.Int32,System.Int32,SharpDX.ComArray{SharpDX.Direct3D10.ShaderResourceView})\">\n            <summary>\t\n            <p>Bind an array of shader resources to the geometry shader stage.</p>\t\n            </summary>\t\n            <param name=\"startSlot\">No documentation.</param>\t\n            <param name=\"numViews\">No documentation.</param>\t\n            <param name=\"shaderResourceViewsOut\">No documentation.</param>\t\n            <remarks>\t\n            <p>If you bind a subresource as an input and an output, this API will fill the destination shader resource slot with <strong><c>null</c></strong>. The debug layer (when active) will alert you if this is true.</p><p>For information about creating shader-resource views, see <strong><see cref=\"M:SharpDX.Direct3D10.Device.CreateShaderResourceView(SharpDX.Direct3D10.Resource,System.Nullable{SharpDX.Direct3D10.ShaderResourceViewDescription},SharpDX.Direct3D10.ShaderResourceView)\"/></strong>.</p><p>The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::GSSetShaderResources']/*\"/>\t\n            <msdn-id>bb173583</msdn-id>\t\n            <unmanaged>void ID3D10Device::GSSetShaderResources([In] unsigned int StartSlot,[In] unsigned int NumViews,[In, Buffer] const ID3D10ShaderResourceView** ppShaderResourceViews)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::GSSetShaderResources</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.GeometryShaderStage.SetSamplers(System.Int32,System.Int32,SharpDX.Direct3D10.SamplerState[])\">\n            <summary>\t\n            <p>Set an array of sampler states to the geometry shader pipeline stage.</p>\t\n            </summary>\t\n            <param name=\"startSlot\">No documentation.</param>\t\n            <param name=\"numSamplers\">No documentation.</param>\t\n            <param name=\"samplersOut\">No documentation.</param>\t\n            <remarks>\t\n            <p>Any sampler may be set to <strong><c>null</c></strong>; this invokes the default state, which is defined to be the following.</p><pre><code> //Default sampler state:\t\n            <see cref=\"T:SharpDX.Direct3D10.SamplerStateDescription\"/> SamplerDesc;\t\n            SamplerDesc.Filter = <see cref=\"F:SharpDX.Direct3D10.Filter.MinMagMipLinear\"/>;\t\n            SamplerDesc.AddressU = <see cref=\"F:SharpDX.Direct3D10.TextureAddressMode.Clamp\"/>;\t\n            SamplerDesc.AddressV = <see cref=\"F:SharpDX.Direct3D10.TextureAddressMode.Clamp\"/>;\t\n            SamplerDesc.AddressW = <see cref=\"F:SharpDX.Direct3D10.TextureAddressMode.Clamp\"/>;\t\n            SamplerDesc.MipLODBias = 0;\t\n            SamplerDesc.MaxAnisotropy = 1;\t\n            SamplerDesc.ComparisonFunc = <see cref=\"F:SharpDX.Direct3D10.Comparison.Never\"/>;\t\n            SamplerDesc.BorderColor[0] = 1.0f;\t\n            SamplerDesc.BorderColor[1] = 1.0f;\t\n            SamplerDesc.BorderColor[2] = 1.0f;\t\n            SamplerDesc.BorderColor[3] = 1.0f;\t\n            SamplerDesc.MinLOD = -FLT_MAX;\t\n            SamplerDesc.MaxLOD = FLT_MAX; </code></pre><p>The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::GSSetSamplers']/*\"/>\t\n            <msdn-id>bb173581</msdn-id>\t\n            <unmanaged>void ID3D10Device::GSSetSamplers([In] unsigned int StartSlot,[In] unsigned int NumSamplers,[In, Buffer] const ID3D10SamplerState** ppSamplers)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::GSSetSamplers</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.GeometryShaderStage.SetSamplers(System.Int32,System.Int32,SharpDX.ComArray{SharpDX.Direct3D10.SamplerState})\">\n            <summary>\t\n            <p>Set an array of sampler states to the geometry shader pipeline stage.</p>\t\n            </summary>\t\n            <param name=\"startSlot\">No documentation.</param>\t\n            <param name=\"numSamplers\">No documentation.</param>\t\n            <param name=\"samplersOut\">No documentation.</param>\t\n            <remarks>\t\n            <p>Any sampler may be set to <strong><c>null</c></strong>; this invokes the default state, which is defined to be the following.</p><pre><code> //Default sampler state:\t\n            <see cref=\"T:SharpDX.Direct3D10.SamplerStateDescription\"/> SamplerDesc;\t\n            SamplerDesc.Filter = <see cref=\"F:SharpDX.Direct3D10.Filter.MinMagMipLinear\"/>;\t\n            SamplerDesc.AddressU = <see cref=\"F:SharpDX.Direct3D10.TextureAddressMode.Clamp\"/>;\t\n            SamplerDesc.AddressV = <see cref=\"F:SharpDX.Direct3D10.TextureAddressMode.Clamp\"/>;\t\n            SamplerDesc.AddressW = <see cref=\"F:SharpDX.Direct3D10.TextureAddressMode.Clamp\"/>;\t\n            SamplerDesc.MipLODBias = 0;\t\n            SamplerDesc.MaxAnisotropy = 1;\t\n            SamplerDesc.ComparisonFunc = <see cref=\"F:SharpDX.Direct3D10.Comparison.Never\"/>;\t\n            SamplerDesc.BorderColor[0] = 1.0f;\t\n            SamplerDesc.BorderColor[1] = 1.0f;\t\n            SamplerDesc.BorderColor[2] = 1.0f;\t\n            SamplerDesc.BorderColor[3] = 1.0f;\t\n            SamplerDesc.MinLOD = -FLT_MAX;\t\n            SamplerDesc.MaxLOD = FLT_MAX; </code></pre><p>The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::GSSetSamplers']/*\"/>\t\n            <msdn-id>bb173581</msdn-id>\t\n            <unmanaged>void ID3D10Device::GSSetSamplers([In] unsigned int StartSlot,[In] unsigned int NumSamplers,[In, Buffer] const ID3D10SamplerState** ppSamplers)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::GSSetSamplers</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.GeometryShaderStage.GetConstantBuffers(System.Int32,System.Int32,SharpDX.Direct3D10.Buffer[])\">\n            <summary>\t\n            <p>Get the constant buffers used by the geometry shader pipeline stage.</p>\t\n            </summary>\t\n            <param name=\"startSlot\">No documentation.</param>\t\n            <param name=\"numBuffers\">No documentation.</param>\t\n            <param name=\"constantBuffersOut\">No documentation.</param>\t\n            <remarks>\t\n            <p>Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::GSGetConstantBuffers']/*\"/>\t\n            <msdn-id>bb173576</msdn-id>\t\n            <unmanaged>void ID3D10Device::GSGetConstantBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[Out, Buffer] ID3D10Buffer** ppConstantBuffers)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::GSGetConstantBuffers</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.GeometryShaderStage.Get(SharpDX.Direct3D10.GeometryShader@)\">\n            <summary>\t\n            <p>Get the geometry shader currently set on the device.</p>\t\n            </summary>\t\n            <param name=\"geometryShaderOut\"><dd>  <p>Address of a reference to a geometry shader (see <strong><see cref=\"T:SharpDX.Direct3D10.GeometryShader\"/></strong>) to be returned by the method.</p> </dd></param>\t\n            <remarks>\t\n            <p>Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::GSGetShader']/*\"/>\t\n            <msdn-id>bb173578</msdn-id>\t\n            <unmanaged>void ID3D10Device::GSGetShader([Out] ID3D10GeometryShader** ppGeometryShader)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::GSGetShader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.GeometryShaderStage.GetShaderResources(System.Int32,System.Int32,SharpDX.Direct3D10.ShaderResourceView[])\">\n            <summary>\t\n            <p>Get the geometry shader resources.</p>\t\n            </summary>\t\n            <param name=\"startSlot\"><dd>  <p>Index into the device's zero-based array to begin getting shader resources from.</p> </dd></param>\t\n            <param name=\"numViews\"><dd>  <p>The number of resources to get from the device. Up to a maximum of 128 slots are available for shader resources.</p> </dd></param>\t\n            <param name=\"shaderResourceViewsOut\"><dd>  <p>Array of <strong>shader resource view</strong> interfaces to be returned by the device.</p> </dd></param>\t\n            <remarks>\t\n            <p>Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::GSGetShaderResources']/*\"/>\t\n            <msdn-id>bb173579</msdn-id>\t\n            <unmanaged>void ID3D10Device::GSGetShaderResources([In] unsigned int StartSlot,[In] unsigned int NumViews,[Out, Buffer] ID3D10ShaderResourceView** ppShaderResourceViews)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::GSGetShaderResources</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.GeometryShaderStage.GetSamplers(System.Int32,System.Int32,SharpDX.Direct3D10.SamplerState[])\">\n            <summary>\t\n            <p>Get an array of sampler states from the geometry shader pipeline stage.</p>\t\n            </summary>\t\n            <param name=\"startSlot\">No documentation.</param>\t\n            <param name=\"numSamplers\">No documentation.</param>\t\n            <param name=\"samplersOut\">No documentation.</param>\t\n            <remarks>\t\n            <p>Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::GSGetSamplers']/*\"/>\t\n            <msdn-id>bb173577</msdn-id>\t\n            <unmanaged>void ID3D10Device::GSGetSamplers([In] unsigned int StartSlot,[In] unsigned int NumSamplers,[Out, Buffer] ID3D10SamplerState** ppSamplers)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::GSGetSamplers</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.InfoQueue\">\n            <summary>\t\n            <p>An information-queue interface stores, retrieves, and filters debug messages. The queue consists of a message queue, an optional storage filter stack, and a optional retrieval filter stack.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This interface is obtained by turning on the debug layer and querying it from the <strong><see cref=\"T:SharpDX.Direct3D10.Device\"/> Interface</strong> using IUnknown::QueryInterface.</p><pre><code>hr = <see cref=\"M:SharpDX.Direct3D10.D3D10.CreateDeviceAndSwapChain(SharpDX.DXGI.Adapter,SharpDX.Direct3D10.DriverType,System.IntPtr,SharpDX.Direct3D10.DeviceCreationFlags,System.Int32,SharpDX.DXGI.SwapChainDescription@,SharpDX.DXGI.SwapChain@,SharpDX.Direct3D10.Device@)\"/>( <c>null</c>, g_driverType, <c>null</c>, <see cref=\"F:SharpDX.Direct3D10.DeviceCreationFlags.Debug\"/>, <see cref=\"F:SharpDX.Direct3D10.D3D10.SdkVersion\"/>, &amp;sd, &amp;g_pSwapChain, &amp;g_pd3dDevice );\t\n            ...\t\n            <see cref=\"T:SharpDX.Direct3D10.InfoQueue\"/> * infoQueue;\t\n            g_pd3dDevice-&gt;QueryInterface(__uuidof(<see cref=\"T:SharpDX.Direct3D10.InfoQueue\"/>),  (void **)&amp;infoQueue); \t\n            </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10InfoQueue']/*\"/>\t\n            <msdn-id>bb173779</msdn-id>\t\n            <unmanaged>ID3D10InfoQueue</unmanaged>\t\n            <unmanaged-short>ID3D10InfoQueue</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.InfoQueue.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D10.InfoQueue\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.InfoQueue.op_Explicit(System.IntPtr)~SharpDX.Direct3D10.InfoQueue\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D10.InfoQueue\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.InfoQueue.SetMessageCountLimit(System.Int64)\">\n            <summary>\t\n            <p>Set the maximum number of messages that can be added to the message queue.</p>\t\n            </summary>\t\n            <param name=\"messageCountLimit\"><dd>  <p>Maximum number of messages that can be added to the message queue. -1 means no limit.</p> </dd></param>\t\n            <returns><p>This method returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>When the number of messages in the message queue has reached the maximum limit, new messages coming in will push old messages out.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10InfoQueue::SetMessageCountLimit']/*\"/>\t\n            <msdn-id>bb173813</msdn-id>\t\n            <unmanaged>HRESULT ID3D10InfoQueue::SetMessageCountLimit([In] unsigned longlong MessageCountLimit)</unmanaged>\t\n            <unmanaged-short>ID3D10InfoQueue::SetMessageCountLimit</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.InfoQueue.ClearStoredMessages\">\n            <summary>\t\n            <p>Clear all messages from the message queue.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10InfoQueue::ClearStoredMessages']/*\"/>\t\n            <msdn-id>bb173786</msdn-id>\t\n            <unmanaged>void ID3D10InfoQueue::ClearStoredMessages()</unmanaged>\t\n            <unmanaged-short>ID3D10InfoQueue::ClearStoredMessages</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.InfoQueue.GetMessage(System.Int64,System.IntPtr,SharpDX.PointerSize@)\">\n            <summary>\t\n            <p>Get a message from the message queue.</p>\t\n            </summary>\t\n            <param name=\"messageIndex\"><dd>  <p>Index into message queue after an optional retrieval filter has been applied. This can be between 0 and the number of messages in the message queue that pass through the retrieval filter (which can be obtained with <strong><see cref=\"M:SharpDX.Direct3D10.InfoQueue.GetNumStoredMessagesAllowedByRetrievalFilter\"/></strong>). 0 is the message at the front of the message queue.</p> </dd></param>\t\n            <param name=\"messageRef\"><dd>  <p>Returned message (see <strong><see cref=\"T:SharpDX.Direct3D10.Message\"/></strong>).</p> </dd></param>\t\n            <param name=\"messageByteLengthRef\"><dd>  <p>Size of pMessage in bytes, including the size of the message string that the pMessage points to.</p> </dd></param>\t\n            <returns><p>This method returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>This method does not remove any messages from the message queue.</p><p>This method gets messages from the message queue after an optional retrieval filter has been applied.</p><p>Applications should call this method twice to retrieve a message - first to obtain the size of the message and second to get the message. Here is a typical example:</p><pre><code> // Get the size of the message\t\n            <see cref=\"T:SharpDX.PointerSize\"/> messageLength = 0;\t\n            <see cref=\"T:SharpDX.Result\"/> hr = pInfoQueue-&gt;GetMessage(0, <c>null</c>, &amp;messageLength); // Allocate space and get the message\t\n            <see cref=\"T:SharpDX.Direct3D10.Message\"/> * pMessage = (<see cref=\"T:SharpDX.Direct3D10.Message\"/>*)malloc(messageLength);\t\n            hr = pInfoQueue-&gt;GetMessage(0, pMessage, &amp;messageLength);\t\n            </code></pre><p>For an overview see <strong>Information Queue Overview</strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10InfoQueue::GetMessageW']/*\"/>\t\n            <msdn-id>bb173790</msdn-id>\t\n            <unmanaged>HRESULT ID3D10InfoQueue::GetMessageW([In] unsigned longlong MessageIndex,[In] void* pMessage,[InOut] SIZE_T* pMessageByteLength)</unmanaged>\t\n            <unmanaged-short>ID3D10InfoQueue::GetMessageW</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.InfoQueue.GetNumMessagesAllowedByStorageFilter\">\n            <summary>\t\n            <p>Get the number of messages that were allowed to pass through a storage filter.</p>\t\n            </summary>\t\n            <returns><p>Number of messages allowed by a storage filter.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10InfoQueue::GetNumMessagesAllowedByStorageFilter']/*\"/>\t\n            <msdn-id>bb173793</msdn-id>\t\n            <unmanaged>unsigned longlong ID3D10InfoQueue::GetNumMessagesAllowedByStorageFilter()</unmanaged>\t\n            <unmanaged-short>ID3D10InfoQueue::GetNumMessagesAllowedByStorageFilter</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.InfoQueue.GetNumMessagesDeniedByStorageFilter\">\n            <summary>\t\n            <p>Get the number of messages that were denied passage through a storage filter.</p>\t\n            </summary>\t\n            <returns><p>Number of messages denied by a storage filter.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10InfoQueue::GetNumMessagesDeniedByStorageFilter']/*\"/>\t\n            <msdn-id>bb173794</msdn-id>\t\n            <unmanaged>unsigned longlong ID3D10InfoQueue::GetNumMessagesDeniedByStorageFilter()</unmanaged>\t\n            <unmanaged-short>ID3D10InfoQueue::GetNumMessagesDeniedByStorageFilter</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.InfoQueue.GetNumStoredMessages\">\n            <summary>\t\n            <p>Get the number of messages currently stored in the message queue.</p>\t\n            </summary>\t\n            <returns><p>Number of messages currently stored in the message queue.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10InfoQueue::GetNumStoredMessages']/*\"/>\t\n            <msdn-id>bb173796</msdn-id>\t\n            <unmanaged>unsigned longlong ID3D10InfoQueue::GetNumStoredMessages()</unmanaged>\t\n            <unmanaged-short>ID3D10InfoQueue::GetNumStoredMessages</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.InfoQueue.GetNumStoredMessagesAllowedByRetrievalFilter\">\n            <summary>\t\n            <p>Get the number of messages that are able to pass through a retrieval filter.</p>\t\n            </summary>\t\n            <returns><p>Number of messages allowed by a retrieval filter.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10InfoQueue::GetNumStoredMessagesAllowedByRetrievalFilter']/*\"/>\t\n            <msdn-id>bb173797</msdn-id>\t\n            <unmanaged>unsigned longlong ID3D10InfoQueue::GetNumStoredMessagesAllowedByRetrievalFilter()</unmanaged>\t\n            <unmanaged-short>ID3D10InfoQueue::GetNumStoredMessagesAllowedByRetrievalFilter</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.InfoQueue.GetNumMessagesDiscardedByMessageCountLimit\">\n            <summary>\t\n            <p>Get the number of messages that were discarded due to the message count limit.</p>\t\n            </summary>\t\n            <returns><p>Number of messages discarded.</p></returns>\t\n            <remarks>\t\n            <p>Get and set the message count limit with <strong><see cref=\"M:SharpDX.Direct3D10.InfoQueue.GetMessageCountLimit\"/></strong> and <strong><see cref=\"M:SharpDX.Direct3D10.InfoQueue.SetMessageCountLimit(System.Int64)\"/></strong>, respectively.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10InfoQueue::GetNumMessagesDiscardedByMessageCountLimit']/*\"/>\t\n            <msdn-id>bb173795</msdn-id>\t\n            <unmanaged>unsigned longlong ID3D10InfoQueue::GetNumMessagesDiscardedByMessageCountLimit()</unmanaged>\t\n            <unmanaged-short>ID3D10InfoQueue::GetNumMessagesDiscardedByMessageCountLimit</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.InfoQueue.GetMessageCountLimit\">\n            <summary>\t\n            <p>Get the maximum number of messages that can be added to the message queue.</p>\t\n            </summary>\t\n            <returns><p>Maximum number of messages that can be added to the queue. -1 means no limit.</p></returns>\t\n            <remarks>\t\n            <p>When the number of messages in the message queue has reached the maximum limit, new messages coming in will push old messages out.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10InfoQueue::GetMessageCountLimit']/*\"/>\t\n            <msdn-id>bb173791</msdn-id>\t\n            <unmanaged>unsigned longlong ID3D10InfoQueue::GetMessageCountLimit()</unmanaged>\t\n            <unmanaged-short>ID3D10InfoQueue::GetMessageCountLimit</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.InfoQueue.AddStorageFilterEntries(SharpDX.Direct3D10.InfoQueueFilter)\">\n            <summary>\t\n            <p>Add storage filters to the top of the storage-filter stack.</p>\t\n            </summary>\t\n            <param name=\"filterRef\"><dd>  <p>Array of storage filters (see <strong><see cref=\"T:SharpDX.Direct3D10.InfoQueueFilter\"/></strong>).</p> </dd></param>\t\n            <returns><p>This method returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>A storage filter defines a grouping of debug messages that should be allowed into the info queue.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10InfoQueue::AddStorageFilterEntries']/*\"/>\t\n            <msdn-id>bb173783</msdn-id>\t\n            <unmanaged>HRESULT ID3D10InfoQueue::AddStorageFilterEntries([In] D3D10_INFO_QUEUE_FILTER* pFilter)</unmanaged>\t\n            <unmanaged-short>ID3D10InfoQueue::AddStorageFilterEntries</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.InfoQueue.GetStorageFilter(System.IntPtr,SharpDX.PointerSize@)\">\n            <summary>\t\n            <p>Get the storage filter at the top of the storage-filter stack.</p>\t\n            </summary>\t\n            <param name=\"filterRef\"><dd>  <p>Storage filter at the top of the storage-filter stack.</p> </dd></param>\t\n            <param name=\"filterByteLengthRef\"><dd>  <p>Size of the storage filter in bytes. If pFilter is <strong><c>null</c></strong>, the size of the storage filter will be output to this parameter.</p> </dd></param>\t\n            <returns><p>This method returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10InfoQueue::GetStorageFilter']/*\"/>\t\n            <msdn-id>Bb173800</msdn-id>\t\n            <unmanaged>HRESULT ID3D10InfoQueue::GetStorageFilter([In] void* pFilter,[InOut] SIZE_T* pFilterByteLength)</unmanaged>\t\n            <unmanaged-short>ID3D10InfoQueue::GetStorageFilter</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.InfoQueue.ClearStorageFilter\">\n            <summary>\t\n            <p>Remove a storage filter from the top of the storage-filter stack.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10InfoQueue::ClearStorageFilter']/*\"/>\t\n            <msdn-id>bb173785</msdn-id>\t\n            <unmanaged>void ID3D10InfoQueue::ClearStorageFilter()</unmanaged>\t\n            <unmanaged-short>ID3D10InfoQueue::ClearStorageFilter</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.InfoQueue.PushEmptyStorageFilter\">\n            <summary>\t\n            <p>Push an empty storage filter onto the storage-filter stack.</p>\t\n            </summary>\t\n            <returns><p>This method returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>An empty storage filter allows all messages to pass through.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10InfoQueue::PushEmptyStorageFilter']/*\"/>\t\n            <msdn-id>bb173807</msdn-id>\t\n            <unmanaged>HRESULT ID3D10InfoQueue::PushEmptyStorageFilter()</unmanaged>\t\n            <unmanaged-short>ID3D10InfoQueue::PushEmptyStorageFilter</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.InfoQueue.PushCopyOfStorageFilter\">\n            <summary>\t\n            <p>Push a copy of storage filter currently on the top of the storage-filter stack onto the storage-filter stack.</p>\t\n            </summary>\t\n            <returns><p>This method returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10InfoQueue::PushCopyOfStorageFilter']/*\"/>\t\n            <msdn-id>bb173805</msdn-id>\t\n            <unmanaged>HRESULT ID3D10InfoQueue::PushCopyOfStorageFilter()</unmanaged>\t\n            <unmanaged-short>ID3D10InfoQueue::PushCopyOfStorageFilter</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.InfoQueue.PushStorageFilter(SharpDX.Direct3D10.InfoQueueFilter)\">\n            <summary>\t\n            <p>Push a storage filter onto the storage-filter stack.</p>\t\n            </summary>\t\n            <param name=\"filterRef\"><dd>  <p>Pointer to a storage filter (see <strong><see cref=\"T:SharpDX.Direct3D10.InfoQueueFilter\"/></strong>).</p> </dd></param>\t\n            <returns><p>This method returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10InfoQueue::PushStorageFilter']/*\"/>\t\n            <msdn-id>bb173809</msdn-id>\t\n            <unmanaged>HRESULT ID3D10InfoQueue::PushStorageFilter([In] D3D10_INFO_QUEUE_FILTER* pFilter)</unmanaged>\t\n            <unmanaged-short>ID3D10InfoQueue::PushStorageFilter</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.InfoQueue.PopStorageFilter\">\n            <summary>\t\n            <p>Pop a storage filter from the top of the storage-filter stack.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10InfoQueue::PopStorageFilter']/*\"/>\t\n            <msdn-id>bb173803</msdn-id>\t\n            <unmanaged>void ID3D10InfoQueue::PopStorageFilter()</unmanaged>\t\n            <unmanaged-short>ID3D10InfoQueue::PopStorageFilter</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.InfoQueue.GetStorageFilterStackSize\">\n            <summary>\t\n            <p>Get the size of the storage-filter stack in bytes.</p>\t\n            </summary>\t\n            <returns><p>Size of the storage-filter stack in bytes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10InfoQueue::GetStorageFilterStackSize']/*\"/>\t\n            <msdn-id>bb173801</msdn-id>\t\n            <unmanaged>unsigned int ID3D10InfoQueue::GetStorageFilterStackSize()</unmanaged>\t\n            <unmanaged-short>ID3D10InfoQueue::GetStorageFilterStackSize</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.InfoQueue.AddRetrievalFilterEntries(SharpDX.Direct3D10.InfoQueueFilter)\">\n            <summary>\t\n            <p>Add storage filters to the top of the retrieval-filter stack.</p>\t\n            </summary>\t\n            <param name=\"filterRef\"><dd>  <p>Array of retrieval filters (see <strong><see cref=\"T:SharpDX.Direct3D10.InfoQueueFilter\"/></strong>).</p> </dd></param>\t\n            <returns><p>This method returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>A retrieval filter is used to define a subgroup of the messages that are already in the info queue.   Retrieval filters affect the messages that will be returned by <strong><see cref=\"M:SharpDX.Direct3D10.InfoQueue.GetMessage(System.Int64,System.IntPtr,SharpDX.PointerSize@)\"/></strong>.</p><p>The number of messages already in the info queue that will be allowed through the retrieval filter can be determined  by calling <strong><see cref=\"M:SharpDX.Direct3D10.InfoQueue.GetNumStoredMessagesAllowedByRetrievalFilter\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10InfoQueue::AddRetrievalFilterEntries']/*\"/>\t\n            <msdn-id>bb173782</msdn-id>\t\n            <unmanaged>HRESULT ID3D10InfoQueue::AddRetrievalFilterEntries([In] D3D10_INFO_QUEUE_FILTER* pFilter)</unmanaged>\t\n            <unmanaged-short>ID3D10InfoQueue::AddRetrievalFilterEntries</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.InfoQueue.GetRetrievalFilter(System.IntPtr,SharpDX.PointerSize@)\">\n            <summary>\t\n            <p>Get the retrieval filter at the top of the retrieval-filter stack.</p>\t\n            </summary>\t\n            <param name=\"filterRef\"><dd>  <p>Retrieval filter at the top of the retrieval-filter stack.</p> </dd></param>\t\n            <param name=\"filterByteLengthRef\"><dd>  <p>Size of the retrieval filter in bytes. If pFilter is <strong><c>null</c></strong>, the size of the retrieval filter will be output to this parameter.</p> </dd></param>\t\n            <returns><p>This method returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10InfoQueue::GetRetrievalFilter']/*\"/>\t\n            <msdn-id>bb173798</msdn-id>\t\n            <unmanaged>HRESULT ID3D10InfoQueue::GetRetrievalFilter([In] void* pFilter,[InOut] SIZE_T* pFilterByteLength)</unmanaged>\t\n            <unmanaged-short>ID3D10InfoQueue::GetRetrievalFilter</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.InfoQueue.ClearRetrievalFilter\">\n            <summary>\t\n            <p>Remove a retrieval filter from the top of the retrieval-filter stack.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10InfoQueue::ClearRetrievalFilter']/*\"/>\t\n            <msdn-id>bb173784</msdn-id>\t\n            <unmanaged>void ID3D10InfoQueue::ClearRetrievalFilter()</unmanaged>\t\n            <unmanaged-short>ID3D10InfoQueue::ClearRetrievalFilter</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.InfoQueue.PushEmptyRetrievalFilter\">\n            <summary>\t\n            <p>Push an empty retrieval filter onto the retrieval-filter stack.</p>\t\n            </summary>\t\n            <returns><p>This method returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>An empty retrieval filter allows all messages to pass through.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10InfoQueue::PushEmptyRetrievalFilter']/*\"/>\t\n            <msdn-id>bb173806</msdn-id>\t\n            <unmanaged>HRESULT ID3D10InfoQueue::PushEmptyRetrievalFilter()</unmanaged>\t\n            <unmanaged-short>ID3D10InfoQueue::PushEmptyRetrievalFilter</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.InfoQueue.PushCopyOfRetrievalFilter\">\n            <summary>\t\n            <p>Push a copy of retrieval filter currently on the top of the retrieval-filter stack onto the retrieval-filter stack.</p>\t\n            </summary>\t\n            <returns><p>This method returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10InfoQueue::PushCopyOfRetrievalFilter']/*\"/>\t\n            <msdn-id>bb173804</msdn-id>\t\n            <unmanaged>HRESULT ID3D10InfoQueue::PushCopyOfRetrievalFilter()</unmanaged>\t\n            <unmanaged-short>ID3D10InfoQueue::PushCopyOfRetrievalFilter</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.InfoQueue.PushRetrievalFilter(SharpDX.Direct3D10.InfoQueueFilter)\">\n            <summary>\t\n            <p>Push a retrieval filter onto the retrieval-filter stack.</p>\t\n            </summary>\t\n            <param name=\"filterRef\"><dd>  <p>Pointer to a retrieval filter (see <strong><see cref=\"T:SharpDX.Direct3D10.InfoQueueFilter\"/></strong>).</p> </dd></param>\t\n            <returns><p>This method returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10InfoQueue::PushRetrievalFilter']/*\"/>\t\n            <msdn-id>bb173808</msdn-id>\t\n            <unmanaged>HRESULT ID3D10InfoQueue::PushRetrievalFilter([In] D3D10_INFO_QUEUE_FILTER* pFilter)</unmanaged>\t\n            <unmanaged-short>ID3D10InfoQueue::PushRetrievalFilter</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.InfoQueue.PopRetrievalFilter\">\n            <summary>\t\n            <p>Pop a retrieval filter from the top of the retrieval-filter stack.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10InfoQueue::PopRetrievalFilter']/*\"/>\t\n            <msdn-id>bb173802</msdn-id>\t\n            <unmanaged>void ID3D10InfoQueue::PopRetrievalFilter()</unmanaged>\t\n            <unmanaged-short>ID3D10InfoQueue::PopRetrievalFilter</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.InfoQueue.GetRetrievalFilterStackSize\">\n            <summary>\t\n            <p>Get the size of the retrieval-filter stack in bytes.</p>\t\n            </summary>\t\n            <returns><p>Size of the retrieval-filter stack in bytes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10InfoQueue::GetRetrievalFilterStackSize']/*\"/>\t\n            <msdn-id>Bb173799</msdn-id>\t\n            <unmanaged>unsigned int ID3D10InfoQueue::GetRetrievalFilterStackSize()</unmanaged>\t\n            <unmanaged-short>ID3D10InfoQueue::GetRetrievalFilterStackSize</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.InfoQueue.AddMessage(SharpDX.Direct3D10.MessageCategory,SharpDX.Direct3D10.MessageSeverity,SharpDX.Direct3D10.MessageId,System.String)\">\n            <summary>\t\n            <p>Add a Direct3D 10 debug message to the message queue and send that message to debug output.</p>\t\n            </summary>\t\n            <param name=\"category\"><dd>  <p>Category of a message (see <strong><see cref=\"T:SharpDX.Direct3D10.MessageCategory\"/></strong>).</p> </dd></param>\t\n            <param name=\"severity\"><dd>  <p>Severity of a message (see <strong><see cref=\"T:SharpDX.Direct3D10.MessageSeverity\"/></strong>).</p> </dd></param>\t\n            <param name=\"id\"><dd>  <p>Unique identifier of a message (see <strong><see cref=\"T:SharpDX.Direct3D10.MessageId\"/></strong>).</p> </dd></param>\t\n            <param name=\"descriptionRef\"><dd>  <p>User-defined message.</p> </dd></param>\t\n            <returns><p>This method returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>This method is used by the runtime's internal mechanisms to add Direct3D 10 debug messages to the message queue and send them to debug output. For applications to add their own custom messages to the message queue and send them to debug output, call <strong><see cref=\"M:SharpDX.Direct3D10.InfoQueue.AddApplicationMessage(SharpDX.Direct3D10.MessageSeverity,System.String)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10InfoQueue::AddMessage']/*\"/>\t\n            <msdn-id>bb173781</msdn-id>\t\n            <unmanaged>HRESULT ID3D10InfoQueue::AddMessage([In] D3D10_MESSAGE_CATEGORY Category,[In] D3D10_MESSAGE_SEVERITY Severity,[In] D3D10_MESSAGE_ID ID,[In] const char* pDescription)</unmanaged>\t\n            <unmanaged-short>ID3D10InfoQueue::AddMessage</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.InfoQueue.AddApplicationMessage(SharpDX.Direct3D10.MessageSeverity,System.String)\">\n            <summary>\t\n            <p>Add a user-defined message to the message queue and send that message to debug output.</p>\t\n            </summary>\t\n            <param name=\"severity\"><dd>  <p>Severity of a message (see <strong><see cref=\"T:SharpDX.Direct3D10.MessageSeverity\"/></strong>).</p> </dd></param>\t\n            <param name=\"descriptionRef\"><dd>  <p>Message string.</p> </dd></param>\t\n            <returns><p>This method returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10InfoQueue::AddApplicationMessage']/*\"/>\t\n            <msdn-id>bb173780</msdn-id>\t\n            <unmanaged>HRESULT ID3D10InfoQueue::AddApplicationMessage([In] D3D10_MESSAGE_SEVERITY Severity,[In] const char* pDescription)</unmanaged>\t\n            <unmanaged-short>ID3D10InfoQueue::AddApplicationMessage</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.InfoQueue.SetBreakOnCategory(SharpDX.Direct3D10.MessageCategory,SharpDX.Bool)\">\n            <summary>\t\n            <p>Set a message category to break on when a message with that category passes through the storage filter.</p>\t\n            </summary>\t\n            <param name=\"category\"><dd>  <p>Message category to break on (see <strong><see cref=\"T:SharpDX.Direct3D10.MessageCategory\"/></strong>).</p> </dd></param>\t\n            <param name=\"bEnable\"><dd>  <p>Turns this breaking condition on or off (true for on, false for off).</p> </dd></param>\t\n            <returns><p>This method returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10InfoQueue::SetBreakOnCategory']/*\"/>\t\n            <msdn-id>bb173810</msdn-id>\t\n            <unmanaged>HRESULT ID3D10InfoQueue::SetBreakOnCategory([In] D3D10_MESSAGE_CATEGORY Category,[In] BOOL bEnable)</unmanaged>\t\n            <unmanaged-short>ID3D10InfoQueue::SetBreakOnCategory</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.InfoQueue.SetBreakOnSeverity(SharpDX.Direct3D10.MessageSeverity,SharpDX.Bool)\">\n            <summary>\t\n            <p>Set a message severity level to break on when a message with that severity level passes through the storage filter.</p>\t\n            </summary>\t\n            <param name=\"severity\"><dd>  <p>Message severity level to break on (see <strong><see cref=\"T:SharpDX.Direct3D10.MessageSeverity\"/></strong>).</p> </dd></param>\t\n            <param name=\"bEnable\"><dd>  <p>Turns this breaking condition on or off (true for on, false for off).</p> </dd></param>\t\n            <returns><p>This method returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10InfoQueue::SetBreakOnSeverity']/*\"/>\t\n            <msdn-id>bb173812</msdn-id>\t\n            <unmanaged>HRESULT ID3D10InfoQueue::SetBreakOnSeverity([In] D3D10_MESSAGE_SEVERITY Severity,[In] BOOL bEnable)</unmanaged>\t\n            <unmanaged-short>ID3D10InfoQueue::SetBreakOnSeverity</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.InfoQueue.SetBreakOnID(SharpDX.Direct3D10.MessageId,SharpDX.Bool)\">\n            <summary>\t\n            <p>Set a message identifier to break on when a message with that identifier passes through the storage filter.</p>\t\n            </summary>\t\n            <param name=\"id\"><dd>  <p>Message identifier to break on (see <strong><see cref=\"T:SharpDX.Direct3D10.MessageId\"/></strong>).</p> </dd></param>\t\n            <param name=\"bEnable\"><dd>  <p>Turns this breaking condition on or off (true for on, false for off).</p> </dd></param>\t\n            <returns><p>This method returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10InfoQueue::SetBreakOnID']/*\"/>\t\n            <msdn-id>bb173811</msdn-id>\t\n            <unmanaged>HRESULT ID3D10InfoQueue::SetBreakOnID([In] D3D10_MESSAGE_ID ID,[In] BOOL bEnable)</unmanaged>\t\n            <unmanaged-short>ID3D10InfoQueue::SetBreakOnID</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.InfoQueue.GetBreakOnCategory(SharpDX.Direct3D10.MessageCategory)\">\n            <summary>\t\n            <p>Get a message category to break on when a message with that category passes through the storage filter.</p>\t\n            </summary>\t\n            <param name=\"category\"><dd>  <p>Message category to break on (see <strong><see cref=\"T:SharpDX.Direct3D10.MessageCategory\"/></strong>).</p> </dd></param>\t\n            <returns><p>Whether this breaking condition is turned on or off (true for on, false for off).</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10InfoQueue::GetBreakOnCategory']/*\"/>\t\n            <msdn-id>bb173787</msdn-id>\t\n            <unmanaged>BOOL ID3D10InfoQueue::GetBreakOnCategory([In] D3D10_MESSAGE_CATEGORY Category)</unmanaged>\t\n            <unmanaged-short>ID3D10InfoQueue::GetBreakOnCategory</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.InfoQueue.GetBreakOnSeverity(SharpDX.Direct3D10.MessageSeverity)\">\n            <summary>\t\n            <p>Get a message severity level to break on when a message with that severity level passes through the storage filter.</p>\t\n            </summary>\t\n            <param name=\"severity\"><dd>  <p>Message severity level to break on (see <strong><see cref=\"T:SharpDX.Direct3D10.MessageSeverity\"/></strong>).</p> </dd></param>\t\n            <returns><p>Whether this breaking condition is turned on or off (true for on, false for off).</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10InfoQueue::GetBreakOnSeverity']/*\"/>\t\n            <msdn-id>bb173789</msdn-id>\t\n            <unmanaged>BOOL ID3D10InfoQueue::GetBreakOnSeverity([In] D3D10_MESSAGE_SEVERITY Severity)</unmanaged>\t\n            <unmanaged-short>ID3D10InfoQueue::GetBreakOnSeverity</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.InfoQueue.GetBreakOnID(SharpDX.Direct3D10.MessageId)\">\n            <summary>\t\n            <p>Get a message identifier to break on when a message with that identifier passes through the storage filter.</p>\t\n            </summary>\t\n            <param name=\"id\"><dd>  <p>Message identifier to break on (see <strong><see cref=\"T:SharpDX.Direct3D10.MessageId\"/></strong>).</p> </dd></param>\t\n            <returns><p>Whether this breaking condition is turned on or off (true for on, false for off).</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10InfoQueue::GetBreakOnID']/*\"/>\t\n            <msdn-id>bb173788</msdn-id>\t\n            <unmanaged>BOOL ID3D10InfoQueue::GetBreakOnID([In] D3D10_MESSAGE_ID ID)</unmanaged>\t\n            <unmanaged-short>ID3D10InfoQueue::GetBreakOnID</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.InfoQueue.SetMuteDebugOutput(SharpDX.Bool)\">\n            <summary>\t\n            <p>Set a boolean that turns the debug output on or off.</p>\t\n            </summary>\t\n            <param name=\"bMute\"><dd>  <p>Disable/Enable the debug output (<strong>TRUE</strong> to disable or mute the output, <strong><see cref=\"F:SharpDX.Result.False\"/></strong> to enable the output).</p> </dd></param>\t\n            <remarks>\t\n            <p>This will stop messages that pass the storage filter from being printed out in the debug output, however those messages will still be added to the message queue.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10InfoQueue::SetMuteDebugOutput']/*\"/>\t\n            <msdn-id>Bb173814</msdn-id>\t\n            <unmanaged>void ID3D10InfoQueue::SetMuteDebugOutput([In] BOOL bMute)</unmanaged>\t\n            <unmanaged-short>ID3D10InfoQueue::SetMuteDebugOutput</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.InfoQueue.GetMuteDebugOutput\">\n            <summary>\t\n            <p>Get a boolean that turns the debug output on or off.</p>\t\n            </summary>\t\n            <returns><p>Whether the debug output is on or off (true for on, false for off).</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10InfoQueue::GetMuteDebugOutput']/*\"/>\t\n            <msdn-id>bb173792</msdn-id>\t\n            <unmanaged>BOOL ID3D10InfoQueue::GetMuteDebugOutput()</unmanaged>\t\n            <unmanaged-short>ID3D10InfoQueue::GetMuteDebugOutput</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.InfoQueue.GetMessage(System.Int64)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"messageIndex\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10InfoQueue::GetMessageW']/*\"/>\t\n            <unmanaged>HRESULT ID3D10InfoQueue::GetMessageW([In] unsigned longlong MessageIndex,[Out, Buffer, Optional] D3D10_MESSAGE* pMessage,[InOut] SIZE_T* pMessageByteLength)</unmanaged>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.InfoQueue.GetStorageFilter\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <returns>No documentation.</returns>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10InfoQueue::GetStorageFilter']/*\"/>\t\n            <unmanaged>HRESULT ID3D10InfoQueue::GetStorageFilter([Out, Buffer, Optional] D3D10_INFO_QUEUE_FILTER* pFilter,[InOut] SIZE_T* pFilterByteLength)</unmanaged>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.InfoQueue.GetRetrievalFilter\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <returns>No documentation.</returns>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10InfoQueue::GetRetrievalFilter']/*\"/>\t\n            <unmanaged>HRESULT ID3D10InfoQueue::GetRetrievalFilter([Out, Buffer, Optional] D3D10_INFO_QUEUE_FILTER* pFilter,[InOut] SIZE_T* pFilterByteLength)</unmanaged>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.InfoQueue.MessageCountLimit\">\n            <summary>\t\n            <p>Get or sets the maximum number of messages that can be added to the message queue.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>When the number of messages in the message queue has reached the maximum limit, new messages coming in will push old messages out.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10InfoQueue::GetMessageCountLimit']/*\"/>\t\n            <msdn-id>bb173791</msdn-id>\t\n            <unmanaged>GetMessageCountLimit / SetMessageCountLimit</unmanaged>\t\n            <unmanaged-short>GetMessageCountLimit</unmanaged-short>\t\n            <unmanaged>unsigned longlong ID3D10InfoQueue::GetMessageCountLimit()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.InfoQueue.NumMessagesAllowedByStorageFilter\">\n            <summary>\t\n            <p>Get the number of messages that were allowed to pass through a storage filter.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10InfoQueue::GetNumMessagesAllowedByStorageFilter']/*\"/>\t\n            <msdn-id>bb173793</msdn-id>\t\n            <unmanaged>GetNumMessagesAllowedByStorageFilter</unmanaged>\t\n            <unmanaged-short>GetNumMessagesAllowedByStorageFilter</unmanaged-short>\t\n            <unmanaged>unsigned longlong ID3D10InfoQueue::GetNumMessagesAllowedByStorageFilter()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.InfoQueue.NumMessagesDeniedByStorageFilter\">\n            <summary>\t\n            <p>Get the number of messages that were denied passage through a storage filter.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10InfoQueue::GetNumMessagesDeniedByStorageFilter']/*\"/>\t\n            <msdn-id>bb173794</msdn-id>\t\n            <unmanaged>GetNumMessagesDeniedByStorageFilter</unmanaged>\t\n            <unmanaged-short>GetNumMessagesDeniedByStorageFilter</unmanaged-short>\t\n            <unmanaged>unsigned longlong ID3D10InfoQueue::GetNumMessagesDeniedByStorageFilter()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.InfoQueue.NumStoredMessages\">\n            <summary>\t\n            <p>Get the number of messages currently stored in the message queue.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10InfoQueue::GetNumStoredMessages']/*\"/>\t\n            <msdn-id>bb173796</msdn-id>\t\n            <unmanaged>GetNumStoredMessages</unmanaged>\t\n            <unmanaged-short>GetNumStoredMessages</unmanaged-short>\t\n            <unmanaged>unsigned longlong ID3D10InfoQueue::GetNumStoredMessages()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.InfoQueue.NumStoredMessagesAllowedByRetrievalFilter\">\n            <summary>\t\n            <p>Get the number of messages that are able to pass through a retrieval filter.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10InfoQueue::GetNumStoredMessagesAllowedByRetrievalFilter']/*\"/>\t\n            <msdn-id>bb173797</msdn-id>\t\n            <unmanaged>GetNumStoredMessagesAllowedByRetrievalFilter</unmanaged>\t\n            <unmanaged-short>GetNumStoredMessagesAllowedByRetrievalFilter</unmanaged-short>\t\n            <unmanaged>unsigned longlong ID3D10InfoQueue::GetNumStoredMessagesAllowedByRetrievalFilter()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.InfoQueue.NumMessagesDiscardedByMessageCountLimit\">\n            <summary>\t\n            <p>Get the number of messages that were discarded due to the message count limit.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Get and set the message count limit with <strong><see cref=\"M:SharpDX.Direct3D10.InfoQueue.GetMessageCountLimit\"/></strong> and <strong><see cref=\"M:SharpDX.Direct3D10.InfoQueue.SetMessageCountLimit(System.Int64)\"/></strong>, respectively.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10InfoQueue::GetNumMessagesDiscardedByMessageCountLimit']/*\"/>\t\n            <msdn-id>bb173795</msdn-id>\t\n            <unmanaged>GetNumMessagesDiscardedByMessageCountLimit</unmanaged>\t\n            <unmanaged-short>GetNumMessagesDiscardedByMessageCountLimit</unmanaged-short>\t\n            <unmanaged>unsigned longlong ID3D10InfoQueue::GetNumMessagesDiscardedByMessageCountLimit()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.InfoQueue.StorageFilterStackSize\">\n            <summary>\t\n            <p>Get the size of the storage-filter stack in bytes.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10InfoQueue::GetStorageFilterStackSize']/*\"/>\t\n            <msdn-id>bb173801</msdn-id>\t\n            <unmanaged>GetStorageFilterStackSize</unmanaged>\t\n            <unmanaged-short>GetStorageFilterStackSize</unmanaged-short>\t\n            <unmanaged>unsigned int ID3D10InfoQueue::GetStorageFilterStackSize()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.InfoQueue.RetrievalFilterStackSize\">\n            <summary>\t\n            <p>Get the size of the retrieval-filter stack in bytes.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10InfoQueue::GetRetrievalFilterStackSize']/*\"/>\t\n            <msdn-id>Bb173799</msdn-id>\t\n            <unmanaged>GetRetrievalFilterStackSize</unmanaged>\t\n            <unmanaged-short>GetRetrievalFilterStackSize</unmanaged-short>\t\n            <unmanaged>unsigned int ID3D10InfoQueue::GetRetrievalFilterStackSize()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.InfoQueue.MuteDebugOutput\">\n            <summary>\t\n            <p>Get or sets a boolean that turns the debug output on or off.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10InfoQueue::GetMuteDebugOutput']/*\"/>\t\n            <msdn-id>bb173792</msdn-id>\t\n            <unmanaged>GetMuteDebugOutput / SetMuteDebugOutput</unmanaged>\t\n            <unmanaged-short>GetMuteDebugOutput</unmanaged-short>\t\n            <unmanaged>BOOL ID3D10InfoQueue::GetMuteDebugOutput()</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.InputLayout\">\n            <summary>\t\n            <p>An input-layout interface accesses the input data for the input-assembler stage.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This interface is created by calling <strong><see cref=\"M:SharpDX.Direct3D10.Device.CreateInputLayout(SharpDX.Direct3D10.InputElement[],System.Int32,System.IntPtr,SharpDX.PointerSize,SharpDX.Direct3D10.InputLayout)\"/></strong>; use <strong><see cref=\"M:SharpDX.Direct3D10.InputAssemblerStage.SetInputLayout(SharpDX.Direct3D10.InputLayout)\"/></strong> to bind it to the graphics pipeline.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10InputLayout']/*\"/>\t\n            <msdn-id>bb173815</msdn-id>\t\n            <unmanaged>ID3D10InputLayout</unmanaged>\t\n            <unmanaged-short>ID3D10InputLayout</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.InputLayout.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D10.InputLayout\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.InputLayout.op_Explicit(System.IntPtr)~SharpDX.Direct3D10.InputLayout\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D10.InputLayout\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.InputLayout.#ctor(SharpDX.Direct3D10.Device,System.Byte[],SharpDX.Direct3D10.InputElement[])\">\n            <summary>\n              Initializes a new instance of the <see cref = \"T:SharpDX.Direct3D10.InputLayout\" /> object to describe the\n              input-buffer data for the input-assembler stage.\n            </summary>\n            <unmanaged>ID3D10Device::CreateInputLayout</unmanaged>\n            <param name = \"device\">The device used to create the layout.</param>\n            <param name = \"elements\">An array of input elements describing the layout of the input data.</param>\n            <param name = \"shaderBytecode\">The compiled shader used to validate the input elements.</param>\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.Mesh\">\n            <summary>\t\n            <p>Applications use the methods of the <see cref=\"T:SharpDX.Direct3D10.Mesh\"/> interface to manipulate mesh objects.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>To obtain the <see cref=\"T:SharpDX.Direct3D10.Mesh\"/> interface, call <strong><see cref=\"M:SharpDX.Direct3D10.D3DX10.CreateMesh(SharpDX.Direct3D10.Device,SharpDX.Direct3D10.InputElement[],System.Int32,System.String,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D10.Mesh)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10Mesh']/*\"/>\t\n            <msdn-id>bb173897</msdn-id>\t\n            <unmanaged>ID3DX10Mesh</unmanaged>\t\n            <unmanaged-short>ID3DX10Mesh</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Mesh.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D10.Mesh\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Mesh.op_Explicit(System.IntPtr)~SharpDX.Direct3D10.Mesh\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D10.Mesh\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Mesh.GetFaceCount\">\n            <summary>\t\n            <p>Retrieves the number of faces in the mesh.</p>\t\n            </summary>\t\n            <returns><p>Returns the number of faces in the mesh.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10Mesh::GetFaceCount']/*\"/>\t\n            <msdn-id>bb173915</msdn-id>\t\n            <unmanaged>unsigned int ID3DX10Mesh::GetFaceCount()</unmanaged>\t\n            <unmanaged-short>ID3DX10Mesh::GetFaceCount</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Mesh.GetVertexCount\">\n            <summary>\t\n            <p>Get the number of vertices in the mesh. A mesh may contain multiple vertex buffers (i.e. one vertex buffer may contain all position data, another may contains all texture coordinate data, etc.), however each vertex buffer will contain the same number of elements.</p>\t\n            </summary>\t\n            <returns><p>The number of vertices in the mesh.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10Mesh::GetVertexCount']/*\"/>\t\n            <msdn-id>bb173921</msdn-id>\t\n            <unmanaged>unsigned int ID3DX10Mesh::GetVertexCount()</unmanaged>\t\n            <unmanaged-short>ID3DX10Mesh::GetVertexCount</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Mesh.GetVertexBufferCount\">\n            <summary>\t\n            <p>Get the number of vertex buffers in the mesh.</p>\t\n            </summary>\t\n            <returns><p>The number of vertex buffers in the mesh.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10Mesh::GetVertexBufferCount']/*\"/>\t\n            <msdn-id>bb173920</msdn-id>\t\n            <unmanaged>unsigned int ID3DX10Mesh::GetVertexBufferCount()</unmanaged>\t\n            <unmanaged-short>ID3DX10Mesh::GetVertexBufferCount</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Mesh.GetFlags\">\n            <summary>\t\n            <p>Access the mesh's creation flags.</p>\t\n            </summary>\t\n            <returns><p>The creation flags passed into the <em>options</em> parameter of <strong><see cref=\"M:SharpDX.Direct3D10.D3DX10.CreateMesh(SharpDX.Direct3D10.Device,SharpDX.Direct3D10.InputElement[],System.Int32,System.String,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D10.Mesh)\"/></strong> when the mesh was created. See <strong>D3DX10_MESH</strong>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10Mesh::GetFlags']/*\"/>\t\n            <msdn-id>bb173916</msdn-id>\t\n            <unmanaged>unsigned int ID3DX10Mesh::GetFlags()</unmanaged>\t\n            <unmanaged-short>ID3DX10Mesh::GetFlags</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Mesh.GetVertexDescription(SharpDX.Direct3D10.InputElement[],System.Int32)\">\n            <summary>\t\n            <p>Access the vertex description passed into <strong><see cref=\"M:SharpDX.Direct3D10.D3DX10.CreateMesh(SharpDX.Direct3D10.Device,SharpDX.Direct3D10.InputElement[],System.Int32,System.String,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D10.Mesh)\"/></strong>. The vertex description describes the layout of the mesh's vertex buffers.</p>\t\n            </summary>\t\n            <param name=\"descOut\">No documentation.</param>\t\n            <param name=\"declCountRef\">No documentation.</param>\t\n            <returns><p>The return value is one of the values listed in Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10Mesh::GetVertexDescription']/*\"/>\t\n            <msdn-id>Bb173922</msdn-id>\t\n            <unmanaged>HRESULT ID3DX10Mesh::GetVertexDescription([Out, Buffer] const D3D10_INPUT_ELEMENT_DESC** ppDesc,[In] unsigned int* pDeclCount)</unmanaged>\t\n            <unmanaged-short>ID3DX10Mesh::GetVertexDescription</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Mesh.SetVertexData(System.Int32,System.IntPtr)\">\n            <summary>\t\n            <p>Set vertex data into one of the mesh's vertex buffers.</p>\t\n            </summary>\t\n            <param name=\"iBuffer\"><dd>  <p>The vertex buffer to be filled with pData.</p> </dd></param>\t\n            <param name=\"dataRef\"><dd>  <p>The vertex data to set.</p> </dd></param>\t\n            <returns><p>The return value is one of the values listed in Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10Mesh::SetVertexData']/*\"/>\t\n            <msdn-id>Bb173931</msdn-id>\t\n            <unmanaged>HRESULT ID3DX10Mesh::SetVertexData([In] unsigned int iBuffer,[In] const void* pData)</unmanaged>\t\n            <unmanaged-short>ID3DX10Mesh::SetVertexData</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Mesh.GetVertexBuffer(System.Int32)\">\n            <summary>\t\n            <p>Retrieves the vertex buffer associated with the mesh.</p>\t\n            </summary>\t\n            <param name=\"iBuffer\"><dd>  <p>The vertex buffer to get. This is an index value.</p> </dd></param>\t\n            <returns><dd>  <p>The vertex buffer. See <strong><see cref=\"T:SharpDX.Direct3D10.MeshBuffer\"/></strong> </p> </dd></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10Mesh::GetVertexBuffer']/*\"/>\t\n            <msdn-id>bb173919</msdn-id>\t\n            <unmanaged>HRESULT ID3DX10Mesh::GetVertexBuffer([In] unsigned int iBuffer,[In] ID3DX10MeshBuffer** ppVertexBuffer)</unmanaged>\t\n            <unmanaged-short>ID3DX10Mesh::GetVertexBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Mesh.SetIndexData(System.IntPtr,System.Int32)\">\n            <summary>\t\n            <p>Set the mesh's index data.</p>\t\n            </summary>\t\n            <param name=\"dataRef\"><dd>  <p>The index data.</p> </dd></param>\t\n            <param name=\"cIndices\"><dd>  <p>The number of indices in pData.</p> </dd></param>\t\n            <returns><p>The return value is one of the values listed in Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10Mesh::SetIndexData']/*\"/>\t\n            <msdn-id>bb173929</msdn-id>\t\n            <unmanaged>HRESULT ID3DX10Mesh::SetIndexData([In] const void* pData,[In] unsigned int cIndices)</unmanaged>\t\n            <unmanaged-short>ID3DX10Mesh::SetIndexData</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Mesh.GetIndexBuffer\">\n            <summary>\t\n            <p>Retrieves the data in an index buffer.</p>\t\n            </summary>\t\n            <returns><dd>  <p>Address of a reference to a <see cref=\"T:SharpDX.Direct3D10.MeshBuffer\"/> interface, representing the index buffer associated with the mesh.</p> </dd></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10Mesh::GetIndexBuffer']/*\"/>\t\n            <msdn-id>Bb173917</msdn-id>\t\n            <unmanaged>HRESULT ID3DX10Mesh::GetIndexBuffer([In] ID3DX10MeshBuffer** ppIndexBuffer)</unmanaged>\t\n            <unmanaged-short>ID3DX10Mesh::GetIndexBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Mesh.SetAttributeData(System.IntPtr)\">\n            <summary>\t\n            <p>Set the mesh's attribute data.</p>\t\n            </summary>\t\n            <param name=\"dataRef\"><dd>  <p>The attribute data to set.</p> </dd></param>\t\n            <returns><p>The return value is one of the values listed in Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10Mesh::SetAttributeData']/*\"/>\t\n            <msdn-id>bb173927</msdn-id>\t\n            <unmanaged>HRESULT ID3DX10Mesh::SetAttributeData([In] const void* pData)</unmanaged>\t\n            <unmanaged-short>ID3DX10Mesh::SetAttributeData</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Mesh.GetAttributeBuffer(SharpDX.Direct3D10.MeshBuffer@)\">\n            <summary>\t\n            <p>Access the mesh's attribute buffer.</p>\t\n            </summary>\t\n            <param name=\"attributeBufferOut\"><dd>  <p>The attribute buffer. See <strong><see cref=\"T:SharpDX.Direct3D10.MeshBuffer\"/></strong>.</p> </dd></param>\t\n            <returns><p>The return value is one of the values listed in Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10Mesh::GetAttributeBuffer']/*\"/>\t\n            <msdn-id>Bb173911</msdn-id>\t\n            <unmanaged>HRESULT ID3DX10Mesh::GetAttributeBuffer([In] ID3DX10MeshBuffer** ppAttributeBuffer)</unmanaged>\t\n            <unmanaged-short>ID3DX10Mesh::GetAttributeBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Mesh.SetAttributeTable(SharpDX.Direct3D10.MeshAttributeRange[],System.Int32)\">\n            <summary>\t\n            <p>Sets the attribute table for a mesh and the number of entries stored in the table.</p>\t\n            </summary>\t\n            <param name=\"attribTableRef\"><dd>  <p>Pointer to an array of <see cref=\"T:SharpDX.Direct3D10.MeshAttributeRange\"/> structures, representing the entries in the mesh attribute table.</p> </dd></param>\t\n            <param name=\"cAttribTableSize\"><dd>  <p>Number of attributes in the mesh attribute table.</p> </dd></param>\t\n            <returns><p>The return value is one of the values listed in Direct3D 10 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>If an application keeps track of the information in an attribute table, and rearranges the table as a result of changes to attributes or faces, this method allows the application to update the attribute tables instead of calling <see cref=\"M:SharpDX.Direct3D10.Mesh.Optimize(System.Int32,System.Int32[],System.IntPtr)\"/> again.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10Mesh::SetAttributeTable']/*\"/>\t\n            <msdn-id>bb173928</msdn-id>\t\n            <unmanaged>HRESULT ID3DX10Mesh::SetAttributeTable([In, Buffer] const D3DX10_ATTRIBUTE_RANGE* pAttribTable,[In] unsigned int cAttribTableSize)</unmanaged>\t\n            <unmanaged-short>ID3DX10Mesh::SetAttributeTable</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Mesh.GetAttributeTable(SharpDX.Direct3D10.MeshAttributeRange[],System.Int32@)\">\n            <summary>\t\n            <p>Retrieves either an attribute table for a mesh, or the number of entries stored in an attribute table for a mesh.</p>\t\n            </summary>\t\n            <param name=\"attribTableRef\"><dd>  <p>Pointer to an array of <see cref=\"T:SharpDX.Direct3D10.MeshAttributeRange\"/> structures, representing the entries in the mesh's attribute table. Specify <strong><c>null</c></strong> to retrieve the value for pAttribTableSize.</p> </dd></param>\t\n            <param name=\"attribTableSizeRef\"><dd>  <p>Pointer to either the number of entries stored in pAttribTable or a value to be filled in with the number of entries stored in the attribute table for the mesh.</p> </dd></param>\t\n            <returns><p>The return value is one of the values listed in Direct3D 10 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>An attribute table is used to identify areas of the mesh that need to be drawn with different textures, render states, materials, and so on. In addition, the application can use the attribute table to hide portions of a mesh by not drawing a given attribute identifier when drawing the frame.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10Mesh::GetAttributeTable']/*\"/>\t\n            <msdn-id>bb173912</msdn-id>\t\n            <unmanaged>HRESULT ID3DX10Mesh::GetAttributeTable([Out, Buffer, Optional] D3DX10_ATTRIBUTE_RANGE* pAttribTable,[InOut] unsigned int* pAttribTableSize)</unmanaged>\t\n            <unmanaged-short>ID3DX10Mesh::GetAttributeTable</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Mesh.GenerateAdjacencyAndPointRepresentation(System.Single)\">\n            <summary>\t\n            <p>Generate a list of mesh edges, as well as a list of faces that share each edge.</p>\t\n            </summary>\t\n            <param name=\"epsilon\"><dd>  <p>Specifies that vertices that differ in position by less than epsilon should be treated as coincident.</p> </dd></param>\t\n            <returns><p>The return value is one of the values listed in Direct3D 10 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>After an application generates adjacency information for a mesh, the mesh data can be optimized for better drawing performance.</p><p>The order of the entries in the adjacency buffer is determined by the order of the vertex indices in the index buffer. The adjacent triangle 0 always corresponds to the edge between the indices of the corners 0 and 1. The adjacent triangle 1 always corresponds to the edge between the indices of the corners 1 and 2 while the adjacent triangle 2 corresponds to the edge between the indices of the corners 2 and 0.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10Mesh::GenerateAdjacencyAndPointReps']/*\"/>\t\n            <msdn-id>bb173907</msdn-id>\t\n            <unmanaged>HRESULT ID3DX10Mesh::GenerateAdjacencyAndPointReps([In] float Epsilon)</unmanaged>\t\n            <unmanaged-short>ID3DX10Mesh::GenerateAdjacencyAndPointReps</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Mesh.GenerateGeometryShaderAdjacency\">\n            <summary>\t\n            <p>Adds adjacency data to the mesh's index buffer. When the mesh is to be sent to a geometry shader that takes adjacency data, it is neccessary for the mesh's index buffer to contain adjacency data.</p>\t\n            </summary>\t\n            <returns><p>The return value is one of the values listed in Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10Mesh::GenerateGSAdjacency']/*\"/>\t\n            <msdn-id>bb173909</msdn-id>\t\n            <unmanaged>HRESULT ID3DX10Mesh::GenerateGSAdjacency()</unmanaged>\t\n            <unmanaged-short>ID3DX10Mesh::GenerateGSAdjacency</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Mesh.SetAdjacencyData(System.IntPtr)\">\n            <summary>\t\n            <p>Set the mesh's adjacency data.</p>\t\n            </summary>\t\n            <param name=\"adjacencyRef\"><dd>  <p>The adjacency data to set.</p> </dd></param>\t\n            <returns><p>The return value is one of the values listed in Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10Mesh::SetAdjacencyData']/*\"/>\t\n            <msdn-id>bb173926</msdn-id>\t\n            <unmanaged>HRESULT ID3DX10Mesh::SetAdjacencyData([In] const void* pAdjacency)</unmanaged>\t\n            <unmanaged-short>ID3DX10Mesh::SetAdjacencyData</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Mesh.GetAdjacencyBuffer\">\n            <summary>\t\n            <p>Access the mesh's adjacency buffer.</p>\t\n            </summary>\t\n            <returns><dd>  <p>The adjacency buffer. See <strong><see cref=\"T:SharpDX.Direct3D10.MeshBuffer\"/></strong>.</p> </dd></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10Mesh::GetAdjacencyBuffer']/*\"/>\t\n            <msdn-id>bb173910</msdn-id>\t\n            <unmanaged>HRESULT ID3DX10Mesh::GetAdjacencyBuffer([In] ID3DX10MeshBuffer** ppAdjacency)</unmanaged>\t\n            <unmanaged-short>ID3DX10Mesh::GetAdjacencyBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Mesh.SetPointRepData(System.IntPtr)\">\n            <summary>\t\n            <p>Set the point rep data for the mesh.</p>\t\n            </summary>\t\n            <param name=\"pointRepsRef\"><dd>  <p>The point rep data to set.</p> </dd></param>\t\n            <returns><p>The return value is one of the values listed in Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10Mesh::SetPointRepData']/*\"/>\t\n            <msdn-id>bb173930</msdn-id>\t\n            <unmanaged>HRESULT ID3DX10Mesh::SetPointRepData([In] const void* pPointReps)</unmanaged>\t\n            <unmanaged-short>ID3DX10Mesh::SetPointRepData</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Mesh.GetPointRepBuffer(SharpDX.Direct3D10.MeshBuffer@)\">\n            <summary>\t\n            <p>Get the mesh's point rep buffer.</p>\t\n            </summary>\t\n            <param name=\"pointRepsOut\"><dd>  <p>Pointer to a mesh buffer containing the mesh's point rep data. See <strong><see cref=\"T:SharpDX.Direct3D10.MeshBuffer\"/></strong>.</p> </dd></param>\t\n            <returns><p>The return value is one of the values listed in Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10Mesh::GetPointRepBuffer']/*\"/>\t\n            <msdn-id>bb173918</msdn-id>\t\n            <unmanaged>HRESULT ID3DX10Mesh::GetPointRepBuffer([In] ID3DX10MeshBuffer** ppPointReps)</unmanaged>\t\n            <unmanaged-short>ID3DX10Mesh::GetPointRepBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Mesh.Discard(SharpDX.Direct3D10.MeshDiscardFlags)\">\n            <summary>\t\n            <p>Removes mesh data from the device that has been committed to the device (with <strong><see cref=\"M:SharpDX.Direct3D10.Mesh.Commit\"/></strong>).</p>\t\n            </summary>\t\n            <param name=\"dwDiscard\">No documentation.</param>\t\n            <returns><p>The return value is one of the values listed in Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10Mesh::Discard']/*\"/>\t\n            <msdn-id>bb173904</msdn-id>\t\n            <unmanaged>HRESULT ID3DX10Mesh::Discard([In] D3DX10_MESH_DISCARD_FLAGS dwDiscard)</unmanaged>\t\n            <unmanaged-short>ID3DX10Mesh::Discard</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Mesh.CloneMesh(System.Int32,System.String,SharpDX.Direct3D10.InputElement[],System.Int32,SharpDX.Direct3D10.Mesh@)\">\n            <summary>\t\n            <p>Creates a new mesh and fills it with the data of a previously loaded mesh.</p>\t\n            </summary>\t\n            <param name=\"flags\"><dd>  <p>Creation flags to be applied to the new mesh. See <strong>D3DX10_MESH</strong>.</p> </dd></param>\t\n            <param name=\"posSemanticRef\"><dd>  <p>The semantic name for the position data.</p> </dd></param>\t\n            <param name=\"descRef\"><dd>  <p>Array of <see cref=\"T:SharpDX.Direct3D10.InputElement\"/> structures, describing the vertex format for the returned mesh. See <strong><see cref=\"T:SharpDX.Direct3D10.InputElement\"/></strong>.</p> </dd></param>\t\n            <param name=\"declCount\"><dd>  <p>The number of elements in the pDesc array.</p> </dd></param>\t\n            <param name=\"cloneMeshOut\"><dd>  <p>The new mesh.</p> </dd></param>\t\n            <returns><p>The return value is one of the values listed in Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10Mesh::CloneMesh']/*\"/>\t\n            <msdn-id>bb173902</msdn-id>\t\n            <unmanaged>HRESULT ID3DX10Mesh::CloneMesh([In] unsigned int Flags,[In] const char* pPosSemantic,[In, Buffer] const D3D10_INPUT_ELEMENT_DESC* pDesc,[In] unsigned int DeclCount,[In] ID3DX10Mesh** ppCloneMesh)</unmanaged>\t\n            <unmanaged-short>ID3DX10Mesh::CloneMesh</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Mesh.Optimize(System.Int32,System.Int32[],System.IntPtr)\">\n            <summary>\t\n            <p>Generates a new mesh with reordered faces and vertices to optimize drawing performance.</p>\t\n            </summary>\t\n            <param name=\"flags\"><dd>  <p>Specifies the type of optimization to perform. This parameter can be set to a combination of one or more flags from D3DXMESHOPT and D3DXMESH (except <see cref=\"!:SharpDX.Direct3D9.MeshFlags.Use32Bit\"/>, <see cref=\"!:SharpDX.Direct3D9.MeshFlags.IndexBufferWriteOnly\"/>, and <see cref=\"!:SharpDX.Direct3D9.MeshFlags.WriteOnly\"/>).</p> </dd></param>\t\n            <param name=\"faceRemapRef\"><dd>  <p>An array of UINTs, one per face, that identifies the original mesh face that corresponds to each face in the optimized mesh. If the value supplied for this argument is <strong><c>null</c></strong>, face remap data is not returned.</p> </dd></param>\t\n            <param name=\"vertexRemapOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D.Blob\"/> Interface</strong>, which contains a DWORD for each vertex that specifies how the new vertices map to the old vertices. This remap is useful if you need to alter external data based on the new vertex mapping.</p> </dd></param>\t\n            <returns><p>The return value is one of the values listed in Direct3D 10 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>This method generates a new mesh. Before running Optimize, an application must generate an adjacency buffer by calling <strong><see cref=\"M:SharpDX.Direct3D10.Mesh.GenerateAdjacencyAndPointRepresentation(System.Single)\"/></strong>. The adjacency buffer contains adjacency data, such as a list of edges and the faces that are adjacent to each other.</p><p>This method is very similar to the <strong><see cref=\"M:SharpDX.Direct3D10.Mesh.CloneMesh(System.Int32,System.String,SharpDX.Direct3D10.InputElement[],System.Int32,SharpDX.Direct3D10.Mesh@)\"/></strong> method, except that it can perform optimization while generating the new clone of the mesh. The output mesh inherits all of the creation parameters of the input mesh.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10Mesh::Optimize']/*\"/>\t\n            <msdn-id>bb173925</msdn-id>\t\n            <unmanaged>HRESULT ID3DX10Mesh::Optimize([In] unsigned int Flags,[Out, Buffer, Optional] unsigned int* pFaceRemap,[In] void** ppVertexRemap)</unmanaged>\t\n            <unmanaged-short>ID3DX10Mesh::Optimize</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Mesh.GenerateAttributeBufferFromTable\">\n            <summary>\t\n            <p>Generate an attribute buffer from the data in the mesh's attribute table. An attribute buffer is another format for storing the data in the attribute table. Both the attribute buffer and the attribute table are internal data structures in the mesh.</p>\t\n            </summary>\t\n            <returns><p>The return value is one of the values listed in Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10Mesh::GenerateAttributeBufferFromTable']/*\"/>\t\n            <msdn-id>bb173908</msdn-id>\t\n            <unmanaged>HRESULT ID3DX10Mesh::GenerateAttributeBufferFromTable()</unmanaged>\t\n            <unmanaged-short>ID3DX10Mesh::GenerateAttributeBufferFromTable</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Mesh.Intersect(SharpDX.Vector3,SharpDX.Vector3,System.Int32,System.Int32,System.Single,System.Single,System.Single,SharpDX.Direct3D.Blob@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Determines if a ray intersects with this mesh.</p>\t\n            </summary>\t\n            <param name=\"rayPosRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Vector3\"/></strong> structure, specifying the point where the ray begins.</p> </dd></param>\t\n            <param name=\"rayDirRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Vector3\"/></strong> structure, specifying the direction of the ray.</p> </dd></param>\t\n            <param name=\"hitCountRef\"><dd>  <p>The number of times the ray intersected with the mesh.</p> </dd></param>\t\n            <param name=\"faceIndexRef\"><dd>  <p>Pointer to an index value of the face closest to the ray origin, if pHit is <strong>TRUE</strong>.</p> </dd></param>\t\n            <param name=\"uRef\"><dd>  <p>Pointer to a barycentric hit coordinate, U.</p> </dd></param>\t\n            <param name=\"vRef\"><dd>  <p>Pointer to a barycentric hit coordinate, V.</p> </dd></param>\t\n            <param name=\"distRef\"><dd>  <p>Pointer to a ray intersection parameter distance.</p> </dd></param>\t\n            <param name=\"allHitsOut\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D.Blob\"/> Interface</strong>, containing an array of <strong>D3DX10_INTERSECT_INFO</strong> structures. This is a list of all the hits that occurred in the intersection test.</p> </dd></param>\t\n            <returns><p>The return value is one of the values listed in Direct3D 10 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>This API provides a way to understand points in and around a triangle, independent of where the triangle is actually located. This function returns the resulting point by using the following equation: V1 + U(V2 - V1) + V(V3 - V1).</p><p>Any point in the plane V1V2V3 can be represented by the barycentric coordinate (U,V). The parameter U controls how much V2 gets weighted into the result, and the parameter V controls how much V3 gets weighted into the result. Lastly, the value of [1 - (U + V)] controls how much V1 gets weighted into the result.</p><p>Barycentric coordinates are a form of general coordinates. In this context, using barycentric coordinates represents a change in coordinate systems. What holds true for Cartesian coordinates holds true for barycentric coordinates.</p><p>Barycentric coordinates define a point inside a triangle in terms of the triangle's vertices. For a more in-depth description of barycentric coordinates, see Mathworld's Barycentric Coordinates Description.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10Mesh::Intersect']/*\"/>\t\n            <msdn-id>bb173923</msdn-id>\t\n            <unmanaged>HRESULT ID3DX10Mesh::Intersect([In] D3DXVECTOR3* pRayPos,[In] D3DXVECTOR3* pRayDir,[In] unsigned int* pHitCount,[In] unsigned int* pFaceIndex,[In] float* pU,[In] float* pV,[In] float* pDist,[In] ID3D10Blob** ppAllHits)</unmanaged>\t\n            <unmanaged-short>ID3DX10Mesh::Intersect</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Mesh.IntersectSubset(System.Int32,SharpDX.Vector3,SharpDX.Vector3,System.Int32,System.Int32,System.Single,System.Single,System.Single,SharpDX.Direct3D.Blob@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Determines if a ray intersects with a subset of this mesh.</p>\t\n            </summary>\t\n            <param name=\"attribId\"><dd>  <p>Attribute ID identifying the subset of the mesh.</p> </dd></param>\t\n            <param name=\"rayPosRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Vector3\"/></strong> structure, specifying the point where the ray begins.</p> </dd></param>\t\n            <param name=\"rayDirRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Vector3\"/></strong> structure, specifying the direction of the ray.</p> </dd></param>\t\n            <param name=\"hitCountRef\"><dd>  <p>The number of times the ray intersected with the mesh.</p> </dd></param>\t\n            <param name=\"faceIndexRef\"><dd>  <p>Pointer to an index value of the face closest to the ray origin, if pHit is <strong>TRUE</strong>.</p> </dd></param>\t\n            <param name=\"uRef\"><dd>  <p>Pointer to a barycentric hit coordinate, U.</p> </dd></param>\t\n            <param name=\"vRef\"><dd>  <p>Pointer to a barycentric hit coordinate, V.</p> </dd></param>\t\n            <param name=\"distRef\"><dd>  <p>Pointer to a ray intersection parameter distance.</p> </dd></param>\t\n            <param name=\"allHitsOut\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D.Blob\"/> Interface</strong>, containing an array of <strong>D3DX10_INTERSECT_INFO</strong> structures. This is a list of all the hits that occurred in the intersection test.</p> </dd></param>\t\n            <returns><p>The return value is one of the values listed in Direct3D 10 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>This API provides a way to understand points in and around a triangle, independent of where the triangle is actually located. This function returns the resulting point by using the following equation: V1 + U(V2 - V1) + V(V3 - V1).</p><p>Any point in the plane V1V2V3 can be represented by the barycentric coordinate (U,V). The parameter U controls how much V2 gets weighted into the result, and the parameter V controls how much V3 gets weighted into the result. Lastly, the value of [1 - (U + V)] controls how much V1 gets weighted into the result.</p><p>Barycentric coordinates are a form of general coordinates. In this context, using barycentric coordinates represents a change in coordinate systems. What holds true for Cartesian coordinates holds true for barycentric coordinates.</p><p>Barycentric coordinates define a point inside a triangle in terms of the triangle's vertices. For a more in-depth description of barycentric coordinates, see Mathworld's Barycentric Coordinates Description.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10Mesh::IntersectSubset']/*\"/>\t\n            <msdn-id>bb173924</msdn-id>\t\n            <unmanaged>HRESULT ID3DX10Mesh::IntersectSubset([In] unsigned int AttribId,[In] D3DXVECTOR3* pRayPos,[In] D3DXVECTOR3* pRayDir,[In] unsigned int* pHitCount,[In] unsigned int* pFaceIndex,[In] float* pU,[In] float* pV,[In] float* pDist,[In] ID3D10Blob** ppAllHits)</unmanaged>\t\n            <unmanaged-short>ID3DX10Mesh::IntersectSubset</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Mesh.Commit\">\n            <summary>\t\n            <p>Commit any changes made to a mesh to the device so that the changes can be rendered. This should be called after a mesh's data is altered and before it is rendered. A mesh cannot be rendered unless it is committed to the device. See remarks.</p>\t\n            </summary>\t\n            <returns><p>The return value is one of the values listed in Direct3D 10 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>When a mesh is loaded, it's data is loaded into staging resources, meaning the data can be altered but not rendered. When CommitToDevice is called, the data from the staging resources are copied into device resources so that they can be rendered. Although the data is committed to the device, the staging resources remain and can be modified. If any modifications are made to the staging resources, the staging resources must be committed to the device again in order for those changes to be rendered on screen.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10Mesh::CommitToDevice']/*\"/>\t\n            <msdn-id>bb173903</msdn-id>\t\n            <unmanaged>HRESULT ID3DX10Mesh::CommitToDevice()</unmanaged>\t\n            <unmanaged-short>ID3DX10Mesh::CommitToDevice</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Mesh.DrawSubset(System.Int32)\">\n            <summary>\t\n            <p>Draws a subset of a mesh.</p>\t\n            </summary>\t\n            <param name=\"attribId\"><dd>  <p>Specifies which subset of the mesh to draw. This value is used to differentiate faces in a mesh as belonging to one or more attribute groups.</p> </dd></param>\t\n            <returns><p>The return value is one of the values listed in Direct3D 10 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>An attribute table is used to identify areas of the mesh that need to be drawn with different textures, render states, materials, and so on. In addition, the application can use the attribute table to hide portions of a mesh by not drawing a given attribute identifier (AttribId) when drawing the frame.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10Mesh::DrawSubset']/*\"/>\t\n            <msdn-id>bb173905</msdn-id>\t\n            <unmanaged>HRESULT ID3DX10Mesh::DrawSubset([In] unsigned int AttribId)</unmanaged>\t\n            <unmanaged-short>ID3DX10Mesh::DrawSubset</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Mesh.DrawSubsetInstanced(System.Int32,System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Draw several instances of the same subset of a mesh.</p>\t\n            </summary>\t\n            <param name=\"attribId\"><dd>  <p>Specifies which subset of the mesh to draw. This value is used to differentiate faces in a mesh as belonging to one or more attribute groups.  See remarks.</p> </dd></param>\t\n            <param name=\"instanceCount\"><dd>  <p>Number of instances to render.</p> </dd></param>\t\n            <param name=\"startInstanceLocation\"><dd>  <p>Which instance to start fetching from in each buffer marked as instance data.</p> </dd></param>\t\n            <returns><p>The return value is one of the values listed in Direct3D 10 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>A mesh contains an attribute table. The attribute table can divide a mesh into subsets, where each subset is identified with an attribute ID.  For example, a mesh with 200 faces, divided into three subsets, might have an attribute table that looks like this:</p><table> <tr><td>AttribID 0</td><td>Faces 0 ~ 50</td></tr> <tr><td>AttribID 1</td><td>Faces 51 ~ 125</td></tr> <tr><td>AttribID 2</td><td>Faces 126 ~ 200</td></tr> </table><p>?</p><p>Instancing may extend performance by reusing the same geometry to draw multiple objects in a scene.  One example of instancing could be to draw the same object with different positions and colors.  Indexing requires multiple vertex buffers: at least one for per-vertex data and a second buffer for per-instance data.</p><p>Drawing instances with DrawSubsetInstanced is very similar to the process used with <strong><see cref=\"M:SharpDX.Direct3D10.Device.DrawIndexedInstanced(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32)\"/></strong> that is outlined  in Instancing Sample.  The key difference when using DrawSubsetInstanced is that vertex and index buffers must be extracted  from the <strong><see cref=\"T:SharpDX.Direct3D10.Mesh\"/> Interface</strong> object before the instancing data can be combined.</p><p>The following code illustrates extracting the vertex and index buffers from the mesh object.</p><pre><code> <see cref=\"T:SharpDX.Direct3D10.Buffer\"/>* vertexBuffer; pDeviceObj-&gt;pMesh-&gt;GetDeviceVertexBuffer(0, &amp;vertexBuffer); <see cref=\"T:SharpDX.Direct3D10.Buffer\"/>* indexBuffer; pDeviceObj-&gt;pMesh-&gt;GetDeviceIndexBuffer(&amp;indexBuffer); </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10Mesh::DrawSubsetInstanced']/*\"/>\t\n            <msdn-id>Bb173906</msdn-id>\t\n            <unmanaged>HRESULT ID3DX10Mesh::DrawSubsetInstanced([In] unsigned int AttribId,[In] unsigned int InstanceCount,[In] unsigned int StartInstanceLocation)</unmanaged>\t\n            <unmanaged-short>ID3DX10Mesh::DrawSubsetInstanced</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Mesh.GetDeviceVertexBuffer(System.Int32)\">\n            <summary>\t\n            <p>Access the mesh's vertex buffer after it has been committed to the device with <strong><see cref=\"M:SharpDX.Direct3D10.Mesh.Commit\"/></strong>. This is different from <strong><see cref=\"M:SharpDX.Direct3D10.Mesh.GetVertexBuffer(System.Int32)\"/></strong>, which returns the vertex buffer before it has been committed to the device.</p>\t\n            </summary>\t\n            <param name=\"iBuffer\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10Mesh::GetDeviceVertexBuffer']/*\"/>\t\n            <msdn-id>Bb173914</msdn-id>\t\n            <unmanaged>HRESULT ID3DX10Mesh::GetDeviceVertexBuffer([In] unsigned int iBuffer,[In] ID3D10Buffer** ppVertexBuffer)</unmanaged>\t\n            <unmanaged-short>ID3DX10Mesh::GetDeviceVertexBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Mesh.GetDeviceIndexBuffer\">\n            <summary>\t\n            <p>Access the mesh's index buffer after it has been committed to the device with <strong><see cref=\"M:SharpDX.Direct3D10.Mesh.Commit\"/></strong>. This is different from <strong><see cref=\"M:SharpDX.Direct3D10.Mesh.GetIndexBuffer\"/></strong>, which returns the index buffer before it has been committed to the device.</p>\t\n            </summary>\t\n            <returns>No documentation.</returns>\t\n            <remarks>\t\n            <p>If the mesh's index buffer has not already been committed to the device, this API will automatically commit the index buffer before it returns a reference to the buffer.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10Mesh::GetDeviceIndexBuffer']/*\"/>\t\n            <msdn-id>bb173913</msdn-id>\t\n            <unmanaged>HRESULT ID3DX10Mesh::GetDeviceIndexBuffer([In] ID3D10Buffer** ppIndexBuffer)</unmanaged>\t\n            <unmanaged-short>ID3DX10Mesh::GetDeviceIndexBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Mesh.#ctor(SharpDX.Direct3D10.Device,SharpDX.Direct3D10.InputElement[],System.String,System.Int32,System.Int32,SharpDX.Direct3D10.MeshFlags)\">\n            <summary>\t\n            Creates a mesh object using a declarator.\t\n            </summary>\t\n            <param name=\"device\">Pointer to an <see cref=\"T:SharpDX.Direct3D10.Device\"/>, the device object to be associated with the mesh. </param>\n            <param name=\"elements\">Array of <see cref=\"T:SharpDX.Direct3D10.InputElement\"/> elements, describing the vertex format for the returned mesh. This parameter must map directly to a flexible vertex format (FVF). </param>\n            <param name=\"positionElement\">Semantic that identifies which part of the vertex declaration contains position information. </param>\n            <param name=\"vertexCount\">Number of vertices for the mesh. This parameter must be greater than 0. </param>\n            <param name=\"faceCount\">Number of faces for the mesh. The valid range for this number is greater than 0, and one less than the maximum DWORD (typically 65534), because the last index is reserved. </param>\n            <param name=\"flags\">Combination of one or more flags from the <see cref=\"T:SharpDX.Direct3D10.MeshFlags\"/>, specifying options for the mesh.  </param>\n            <unmanaged>HRESULT D3DX10CreateMesh([None] ID3D10Device* pDevice,[In, Buffer] const D3D10_INPUT_ELEMENT_DESC* pDeclaration,[None] int DeclCount,[None] const char* pPositionSemantic,[None] int VertexCount,[None] int FaceCount,[None] int Options,[None] ID3DX10Mesh** ppMesh)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Mesh.Clone(SharpDX.Direct3D10.InputElement[],System.String,SharpDX.Direct3D10.MeshFlags)\">\n            <summary>\t\n            Creates a new mesh and fills it with the data of a previously loaded mesh.\t\n            </summary>\t\n            <param name=\"positionElement\">The semantic name for the position data. </param>\n            <param name=\"elements\">Array of <see cref=\"T:SharpDX.Direct3D10.InputElement\"/> structures, describing the vertex format for the returned mesh. See <see cref=\"T:SharpDX.Direct3D10.InputElement\"/>. </param>\n            <param name=\"flags\">Creation flags to be applied to the new mesh. See <see cref=\"T:SharpDX.Direct3D10.MeshFlags\"/>.</param>\n            <returns>returns the Mesh cloned. </returns>\n            <unmanaged>HRESULT ID3DX10Mesh::CloneMesh([None] int Flags,[None] const char* pPosSemantic,[In, Buffer] const D3D10_INPUT_ELEMENT_DESC* pDesc,[None] int DeclCount,[None] ID3DX10Mesh** ppCloneMesh)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Mesh.GetAttributeBuffer\">\n            <summary>\t\n            Access the mesh's attribute buffer.\t\n            </summary>\t\n            <returns>Returns the attribute buffer. See <see cref=\"T:SharpDX.Direct3D10.MeshBuffer\"/>. </returns>\n            <unmanaged>HRESULT ID3DX10Mesh::GetAttributeBuffer([None] ID3DX10MeshBuffer** ppAttribute)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Mesh.GetAttributeTable\">\n            <summary>\t\n            Retrieves either an attribute table for a mesh, or the number of entries stored in an attribute table for a mesh.\t\n            </summary>\t\n            <remarks>\t\n            An attribute table is used to identify areas of the mesh that need to be drawn with different textures, render states, materials, and so on. In addition, the application can use the attribute table to hide portions of a mesh by not drawing a given attribute identifier when drawing the frame. \t\n            </remarks>\t\n            <returns>Returns an array of <see cref=\"T:SharpDX.Direct3D10.MeshAttributeRange\"/> structures, representing the entries in the mesh's attribute table. </returns>\n            <unmanaged>HRESULT ID3DX10Mesh::GetAttributeTable([Out, Buffer, Optional] D3DX10_ATTRIBUTE_RANGE* pAttribTable,[None] int* pAttribTableSize)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Mesh.GetPointRepresentationBuffer\">\n            <summary>\t\n            Get the mesh's point rep buffer.\t\n            </summary>\t\n            <returns>Returns a mesh buffer containing the mesh's point rep data. See <see cref=\"T:SharpDX.Direct3D10.MeshBuffer\"/>. </returns>\n            <unmanaged>HRESULT ID3DX10Mesh::GetPointRepBuffer([None] ID3DX10MeshBuffer** ppPointReps)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Mesh.Optimize(SharpDX.Direct3D10.MeshOptimizeFlags)\">\n            <summary>\n            Optimizes the mesh data.\n            </summary>\n            <param name=\"flags\">Flags indicating which optimizations to perform.</param>\n            <returns>A result code.</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Mesh.Optimize(SharpDX.Direct3D10.MeshOptimizeFlags,System.Int32[]@,System.Int32[]@)\">\n            <summary>\t\n            Generates a new mesh with reordered faces and vertices to optimize drawing performance.\t\n            </summary>\t\n            <remarks>\t\n            This method generates a new mesh. Before running Optimize, an application must generate an adjacency buffer by calling <see cref=\"M:SharpDX.Direct3D10.Mesh.GenerateAdjacencyAndPointRepresentation(System.Single)\"/>. The adjacency buffer contains adjacency data, such as a list of edges and the faces that are adjacent to each other. This method is very similar to the <see cref=\"M:SharpDX.Direct3D10.Mesh.CloneMesh(System.Int32,System.String,SharpDX.Direct3D10.InputElement[],System.Int32,SharpDX.Direct3D10.Mesh@)\"/> method, except that it can perform optimization while generating the new clone of the mesh. The output mesh inherits all of the creation parameters of the input mesh. \t\n            </remarks>\t\n            <param name=\"flags\">Specifies the type of optimization to perform. This parameter can be set to a combination of one or more flags from D3DXMESHOPT and D3DXMESH (except D3DXMESH_32BIT, D3DXMESH_IB_WRITEONLY, and D3DXMESH_WRITEONLY). </param>\n            <param name=\"faceRemap\">An array of UINTs, one per face, that identifies the original mesh face that corresponds to each face in the optimized mesh.</param>\n            <param name=\"vertexRemap\">An array of index for each vertex that specifies how the new vertices map to the old vertices. This remap is useful if you need to alter external data based on the new vertex mapping. </param>\n            <returns>The return value is one of the values listed in {{Direct3D 10 Return Codes}}. </returns>\n            <unmanaged>HRESULT ID3DX10Mesh::Optimize([None] int Flags,[Out, Buffer, Optional] int* pFaceRemap,[In] LPD3D10BLOB* ppVertexRemap)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Mesh.SetAdjacencyData(SharpDX.DataStream)\">\n            <summary>\t\n            Set the mesh's adjacency data.\t\n            </summary>\t\n            <param name=\"data\">The adjacency data to set </param>\n            <returns>The return value is one of the values listed in {{Direct3D 10 Return Codes}}. </returns>\n            <unmanaged>HRESULT ID3DX10Mesh::SetAdjacencyData([In] const int* pAdjacency)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Mesh.SetAttributeData(SharpDX.DataStream)\">\n            <summary>\t\n            Set the mesh's attribute data.\t\n            </summary>\t\n            <param name=\"data\">The attribute data to set. </param>\n            <returns>The return value is one of the values listed in {{Direct3D 10 Return Codes}}. </returns>\n            <unmanaged>HRESULT ID3DX10Mesh::SetAttributeData([In] const int* pData)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Mesh.SetAttributeTable(SharpDX.Direct3D10.MeshAttributeRange[])\">\n            <summary>\n            Sets the attribute table for a mesh and the number of entries stored in the table.\t\n            </summary>\t\n            <remarks>\t\n            If an application keeps track of the information in an attribute table, and rearranges the table as a result of changes to attributes or faces, this method allows the application to update the attribute tables instead of calling ID3DX10Mesh::Optimize again. \t\n            </remarks>\t\n            <param name=\"data\">an array of <see cref=\"T:SharpDX.Direct3D10.MeshAttributeRange\"/> structures, representing the entries in the mesh attribute table. </param>\n            <returns>The return value is one of the values listed in {{Direct3D 10 Return Codes}}. </returns>\n            <unmanaged>HRESULT ID3DX10Mesh::SetAttributeTable([In, Buffer] const D3DX10_ATTRIBUTE_RANGE* pAttribTable,[None] int cAttribTableSize)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Mesh.SetIndexData(SharpDX.DataStream,System.Int32)\">\n            <summary>\t\n            Set the mesh's index data.\t\n            </summary>\t\n            <param name=\"data\">The index data. </param>\n            <param name=\"count\">The number of indices in pData. </param>\n            <returns>The return value is one of the values listed in {{Direct3D 10 Return Codes}}. </returns>\n            <unmanaged>HRESULT ID3DX10Mesh::SetIndexData([None] const void* pData,[None] int cIndices)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Mesh.SetPointRepresentationData(SharpDX.DataStream)\">\n            <summary>\t\n            Set the point rep data for the mesh.\t\n            </summary>\t\n            <param name=\"data\">The point rep data to set. </param>\n            <returns>The return value is one of the values listed in {{Direct3D 10 Return Codes}}. </returns>\n            <unmanaged>HRESULT ID3DX10Mesh::SetPointRepData([None] const int* pPointReps)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Mesh.SetVertexData(System.Int32,SharpDX.DataStream)\">\n            <summary>\t\n            Set vertex data into one of the mesh's vertex buffers.\t\n            </summary>\t\n            <param name=\"index\">The vertex buffer to be filled with pData. </param>\n            <param name=\"data\">The vertex data to set. </param>\n            <returns>The return value is one of the values listed in {{Direct3D 10 Return Codes}}. </returns>\n            <unmanaged>HRESULT ID3DX10Mesh::SetVertexData([None] int iBuffer,[None] const void* pData)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.Mesh.FaceCount\">\n            <summary>\t\n            <p>Retrieves the number of faces in the mesh.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10Mesh::GetFaceCount']/*\"/>\t\n            <msdn-id>bb173915</msdn-id>\t\n            <unmanaged>GetFaceCount</unmanaged>\t\n            <unmanaged-short>GetFaceCount</unmanaged-short>\t\n            <unmanaged>unsigned int ID3DX10Mesh::GetFaceCount()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.Mesh.VertexCount\">\n            <summary>\t\n            <p>Get the number of vertices in the mesh. A mesh may contain multiple vertex buffers (i.e. one vertex buffer may contain all position data, another may contains all texture coordinate data, etc.), however each vertex buffer will contain the same number of elements.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10Mesh::GetVertexCount']/*\"/>\t\n            <msdn-id>bb173921</msdn-id>\t\n            <unmanaged>GetVertexCount</unmanaged>\t\n            <unmanaged-short>GetVertexCount</unmanaged-short>\t\n            <unmanaged>unsigned int ID3DX10Mesh::GetVertexCount()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.Mesh.VertexBufferCount\">\n            <summary>\t\n            <p>Get the number of vertex buffers in the mesh.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10Mesh::GetVertexBufferCount']/*\"/>\t\n            <msdn-id>bb173920</msdn-id>\t\n            <unmanaged>GetVertexBufferCount</unmanaged>\t\n            <unmanaged-short>GetVertexBufferCount</unmanaged-short>\t\n            <unmanaged>unsigned int ID3DX10Mesh::GetVertexBufferCount()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.Mesh.Flags\">\n            <summary>\t\n            Access the mesh's creation flags.\t\n            </summary>\t\n            <returns>The creation flags passed into the options parameter of <see cref=\"M:SharpDX.Direct3D10.D3DX10.CreateMesh(SharpDX.Direct3D10.Device,SharpDX.Direct3D10.InputElement[],System.Int32,System.String,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D10.Mesh)\"/> when the mesh was created. See {{D3DX10_MESH}}. </returns>\n            <unmanaged>int ID3DX10Mesh::GetFlags()</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.MeshBuffer\">\n            <summary>\t\n            <p>A mesh buffer is a buffer that contains data about a mesh. It can contain one of five different types of data: vertex data, index data, adjacency data, attribute data, or point rep data. The structure is used to access these five pieces of data through the following five APIs: <strong><see cref=\"M:SharpDX.Direct3D10.Mesh.GetVertexBuffer(System.Int32)\"/></strong>, <strong><see cref=\"M:SharpDX.Direct3D10.Mesh.GetIndexBuffer\"/></strong>, <strong><see cref=\"M:SharpDX.Direct3D10.Mesh.GetAdjacencyBuffer\"/></strong>, <strong><see cref=\"M:SharpDX.Direct3D10.Mesh.GetAttributeBuffer(SharpDX.Direct3D10.MeshBuffer@)\"/></strong>, or <strong><see cref=\"M:SharpDX.Direct3D10.Mesh.GetPointRepBuffer(SharpDX.Direct3D10.MeshBuffer@)\"/></strong>.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10MeshBuffer']/*\"/>\t\n            <msdn-id>bb173898</msdn-id>\t\n            <unmanaged>ID3DX10MeshBuffer</unmanaged>\t\n            <unmanaged-short>ID3DX10MeshBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.MeshBuffer.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D10.MeshBuffer\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.MeshBuffer.op_Explicit(System.IntPtr)~SharpDX.Direct3D10.MeshBuffer\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D10.MeshBuffer\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.MeshBuffer.Map(System.IntPtr@,SharpDX.PointerSize@)\">\n            <summary>\t\n            <p>Get a reference to the mesh buffer memory to modify its contents.</p>\t\n            </summary>\t\n            <param name=\"dataOut\"><dd>  <p>Pointer to the buffer data.</p> </dd></param>\t\n            <param name=\"sizeRef\"><dd>  <p>Size of the buffer in bytes.</p> </dd></param>\t\n            <returns><p>The return value is one of the values listed in Direct3D 10 Return Codes.</p></returns>\t\n            <remarks>\t\n            <table> <tr><td> <p>Differences between Direct3D 9 and Direct3D 10:</p> <p>Map() in Direct3D 10 is analogous to resource Map() in Direct3D 9.</p> </td></tr> </table><p>?</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10MeshBuffer::Map']/*\"/>\t\n            <msdn-id>bb173900</msdn-id>\t\n            <unmanaged>HRESULT ID3DX10MeshBuffer::Map([Out] void** ppData,[Out] SIZE_T* pSize)</unmanaged>\t\n            <unmanaged-short>ID3DX10MeshBuffer::Map</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.MeshBuffer.Unmap\">\n            <summary>\t\n            <p>Unmap a buffer.</p>\t\n            </summary>\t\n            <returns><p>The return value is one of the values listed in Direct3D 10 Return Codes.</p></returns>\t\n            <remarks>\t\n            <table> <tr><td> <p>Differences between Direct3D 9 and Direct3D 10:</p> <p>Unmap() in Direct3D 10 is analogous to resource Unlock() in Direct3D 9.</p> </td></tr> </table><p>?</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10MeshBuffer::Unmap']/*\"/>\t\n            <msdn-id>bb173901</msdn-id>\t\n            <unmanaged>HRESULT ID3DX10MeshBuffer::Unmap()</unmanaged>\t\n            <unmanaged-short>ID3DX10MeshBuffer::Unmap</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.MeshBuffer.GetSizeInBytes\">\n            <summary>\t\n            <p>Get the size of the mesh buffer, in bytes.</p>\t\n            </summary>\t\n            <returns><p>The size of the mesh buffer, in bytes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10MeshBuffer::GetSize']/*\"/>\t\n            <msdn-id>bb173899</msdn-id>\t\n            <unmanaged>SIZE_T ID3DX10MeshBuffer::GetSize()</unmanaged>\t\n            <unmanaged-short>ID3DX10MeshBuffer::GetSize</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.MeshBuffer.Map\">\n            <summary>\t\n            Get a reference to the mesh buffer memory to modify its contents.\t\n            </summary>\t\n            <remarks>\t\n            Differences between Direct3D 9 and Direct3D 10: Map() in Direct3D 10 is analogous to resource Map() in Direct3D 9.   ? \t\n            </remarks>\t\n            <returns>Returns a reference to the mesh buffer memory to modify its contents</returns>\n            <unmanaged>HRESULT ID3DX10MeshBuffer::Map([Out] void** ppData,[Out] SIZE_T* pSize)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.MeshBuffer.SizeInBytes\">\n            <summary>\t\n            <p>Get the size of the mesh buffer, in bytes.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10MeshBuffer::GetSize']/*\"/>\t\n            <msdn-id>bb173899</msdn-id>\t\n            <unmanaged>GetSize</unmanaged>\t\n            <unmanaged-short>GetSize</unmanaged-short>\t\n            <unmanaged>SIZE_T ID3DX10MeshBuffer::GetSize()</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.PixelShader\">\n            <summary>\t\n            <p>A pixel-shader interface manages an executable program (a pixel shader) that controls the pixel-shader stage.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The pixel-shader interface has no methods; use HLSL to implement your shader functionality. All shaders in Direct3D 10 are implemented from a common set of features referred to as the common shader core.</p><p>To create a pixel shader interface, call <strong><see cref=\"M:SharpDX.Direct3D10.Device.CreatePixelShader(System.IntPtr,SharpDX.PointerSize,SharpDX.Direct3D10.PixelShader)\"/></strong>. Before using a pixel shader you must bind it to the device by calling <strong><see cref=\"M:SharpDX.Direct3D10.PixelShaderStage.Set(SharpDX.Direct3D10.PixelShader)\"/></strong>.</p><p>This interface is defined in D3D10.h.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10PixelShader']/*\"/>\t\n            <msdn-id>bb173821</msdn-id>\t\n            <unmanaged>ID3D10PixelShader</unmanaged>\t\n            <unmanaged-short>ID3D10PixelShader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.PixelShader.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D10.PixelShader\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.PixelShader.op_Explicit(System.IntPtr)~SharpDX.Direct3D10.PixelShader\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D10.PixelShader\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.PixelShader.#ctor(SharpDX.Direct3D10.Device,System.Byte[])\">\n            <summary>\n              Initializes a new instance of the <see cref = \"T:SharpDX.Direct3D10.PixelShader\" /> class.\n            </summary>\n            <param name = \"device\">The device used to create the shader.</param>\n            <param name = \"shaderBytecode\">The compiled shader bytecode.</param>\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.PixelShaderStage\">\n            <summary>\t\n            <p>The device interface represents a virtual adapter for Direct3D 10.0; it is used to perform rendering and create Direct3D resources.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>A device is created using <strong><see cref=\"M:SharpDX.Direct3D10.D3D10.CreateDevice(SharpDX.DXGI.Adapter,SharpDX.Direct3D10.DriverType,System.IntPtr,SharpDX.Direct3D10.DeviceCreationFlags,System.Int32,SharpDX.Direct3D10.Device)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device']/*\"/>\t\n            <msdn-id>bb173528</msdn-id>\t\n            <unmanaged>ID3D10Device</unmanaged>\t\n            <unmanaged-short>ID3D10Device</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.PixelShaderStage.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D10.PixelShaderStage\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.PixelShaderStage.op_Explicit(System.IntPtr)~SharpDX.Direct3D10.PixelShaderStage\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D10.PixelShaderStage\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.PixelShaderStage.SetShaderResources(System.Int32,System.Int32,SharpDX.Direct3D10.ShaderResourceView[])\">\n            <summary>\t\n            <p>Bind an array of shader resources to the pixel shader stage.</p>\t\n            </summary>\t\n            <param name=\"startSlot\">No documentation.</param>\t\n            <param name=\"numViews\">No documentation.</param>\t\n            <param name=\"shaderResourceViewsOut\">No documentation.</param>\t\n            <remarks>\t\n            <p>If you bind a subresource as an input and an output, this API will fill the destination shader resource slot with <strong><c>null</c></strong>. The debug layer (when active) will alert you if this is true.</p><p>For information about creating shader-resource views, see <strong><see cref=\"M:SharpDX.Direct3D10.Device.CreateShaderResourceView(SharpDX.Direct3D10.Resource,System.Nullable{SharpDX.Direct3D10.ShaderResourceViewDescription},SharpDX.Direct3D10.ShaderResourceView)\"/></strong>.</p><p>The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::PSSetShaderResources']/*\"/>\t\n            <msdn-id>bb173606</msdn-id>\t\n            <unmanaged>void ID3D10Device::PSSetShaderResources([In] unsigned int StartSlot,[In] unsigned int NumViews,[In, Buffer] const ID3D10ShaderResourceView** ppShaderResourceViews)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::PSSetShaderResources</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.PixelShaderStage.SetShaderResources(System.Int32,System.Int32,SharpDX.ComArray{SharpDX.Direct3D10.ShaderResourceView})\">\n            <summary>\t\n            <p>Bind an array of shader resources to the pixel shader stage.</p>\t\n            </summary>\t\n            <param name=\"startSlot\">No documentation.</param>\t\n            <param name=\"numViews\">No documentation.</param>\t\n            <param name=\"shaderResourceViewsOut\">No documentation.</param>\t\n            <remarks>\t\n            <p>If you bind a subresource as an input and an output, this API will fill the destination shader resource slot with <strong><c>null</c></strong>. The debug layer (when active) will alert you if this is true.</p><p>For information about creating shader-resource views, see <strong><see cref=\"M:SharpDX.Direct3D10.Device.CreateShaderResourceView(SharpDX.Direct3D10.Resource,System.Nullable{SharpDX.Direct3D10.ShaderResourceViewDescription},SharpDX.Direct3D10.ShaderResourceView)\"/></strong>.</p><p>The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::PSSetShaderResources']/*\"/>\t\n            <msdn-id>bb173606</msdn-id>\t\n            <unmanaged>void ID3D10Device::PSSetShaderResources([In] unsigned int StartSlot,[In] unsigned int NumViews,[In, Buffer] const ID3D10ShaderResourceView** ppShaderResourceViews)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::PSSetShaderResources</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.PixelShaderStage.Set(SharpDX.Direct3D10.PixelShader)\">\n            <summary>\t\n            <p>Sets a pixel shader to the device.</p>\t\n            </summary>\t\n            <param name=\"pixelShaderRef\"><dd>  <p>Pointer to a pixel shader (see <strong><see cref=\"T:SharpDX.Direct3D10.PixelShader\"/></strong>). Passing in <strong><c>null</c></strong> disables the shader for this pipeline stage.</p> </dd></param>\t\n            <remarks>\t\n            <p>The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::PSSetShader']/*\"/>\t\n            <msdn-id>bb173605</msdn-id>\t\n            <unmanaged>void ID3D10Device::PSSetShader([In, Optional] ID3D10PixelShader* pPixelShader)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::PSSetShader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.PixelShaderStage.SetSamplers(System.Int32,System.Int32,SharpDX.Direct3D10.SamplerState[])\">\n            <summary>\t\n            <p>Set an array of sampler states to the pixel shader pipeline stage.</p>\t\n            </summary>\t\n            <param name=\"startSlot\">No documentation.</param>\t\n            <param name=\"numSamplers\">No documentation.</param>\t\n            <param name=\"samplersOut\">No documentation.</param>\t\n            <remarks>\t\n            <p>Any sampler may be set to <strong><c>null</c></strong>; this invokes the default state, which is defined to be the following.</p><table> <tr><th>State</th><th>Default Value</th></tr> <tr><td>Filter</td><td><see cref=\"F:SharpDX.Direct3D10.Filter.MinMagMipLinear\"/></td></tr> <tr><td>AddressU</td><td><see cref=\"F:SharpDX.Direct3D10.TextureAddressMode.Clamp\"/></td></tr> <tr><td>AddressV</td><td><see cref=\"F:SharpDX.Direct3D10.TextureAddressMode.Clamp\"/></td></tr> <tr><td>AddressW</td><td><see cref=\"F:SharpDX.Direct3D10.TextureAddressMode.Clamp\"/></td></tr> <tr><td>MipLODBias</td><td>0</td></tr> <tr><td>MaxAnisotropy</td><td>1</td></tr> <tr><td>ComparisonFunc</td><td><see cref=\"F:SharpDX.Direct3D10.Comparison.Never\"/></td></tr> <tr><td>BorderColor[0]</td><td>1.0f</td></tr> <tr><td>BorderColor[1]</td><td>1.0f</td></tr> <tr><td>BorderColor[2]</td><td>1.0f</td></tr> <tr><td>BorderColor[3]</td><td>1.0f</td></tr> <tr><td>MinLOD</td><td>-FLT_MAX</td></tr> <tr><td>MaxLOD</td><td>FLT_MAX</td></tr> </table><p>?</p><p>The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::PSSetSamplers']/*\"/>\t\n            <msdn-id>bb173604</msdn-id>\t\n            <unmanaged>void ID3D10Device::PSSetSamplers([In] unsigned int StartSlot,[In] unsigned int NumSamplers,[In, Buffer] const ID3D10SamplerState** ppSamplers)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::PSSetSamplers</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.PixelShaderStage.SetSamplers(System.Int32,System.Int32,SharpDX.ComArray{SharpDX.Direct3D10.SamplerState})\">\n            <summary>\t\n            <p>Set an array of sampler states to the pixel shader pipeline stage.</p>\t\n            </summary>\t\n            <param name=\"startSlot\">No documentation.</param>\t\n            <param name=\"numSamplers\">No documentation.</param>\t\n            <param name=\"samplersOut\">No documentation.</param>\t\n            <remarks>\t\n            <p>Any sampler may be set to <strong><c>null</c></strong>; this invokes the default state, which is defined to be the following.</p><table> <tr><th>State</th><th>Default Value</th></tr> <tr><td>Filter</td><td><see cref=\"F:SharpDX.Direct3D10.Filter.MinMagMipLinear\"/></td></tr> <tr><td>AddressU</td><td><see cref=\"F:SharpDX.Direct3D10.TextureAddressMode.Clamp\"/></td></tr> <tr><td>AddressV</td><td><see cref=\"F:SharpDX.Direct3D10.TextureAddressMode.Clamp\"/></td></tr> <tr><td>AddressW</td><td><see cref=\"F:SharpDX.Direct3D10.TextureAddressMode.Clamp\"/></td></tr> <tr><td>MipLODBias</td><td>0</td></tr> <tr><td>MaxAnisotropy</td><td>1</td></tr> <tr><td>ComparisonFunc</td><td><see cref=\"F:SharpDX.Direct3D10.Comparison.Never\"/></td></tr> <tr><td>BorderColor[0]</td><td>1.0f</td></tr> <tr><td>BorderColor[1]</td><td>1.0f</td></tr> <tr><td>BorderColor[2]</td><td>1.0f</td></tr> <tr><td>BorderColor[3]</td><td>1.0f</td></tr> <tr><td>MinLOD</td><td>-FLT_MAX</td></tr> <tr><td>MaxLOD</td><td>FLT_MAX</td></tr> </table><p>?</p><p>The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::PSSetSamplers']/*\"/>\t\n            <msdn-id>bb173604</msdn-id>\t\n            <unmanaged>void ID3D10Device::PSSetSamplers([In] unsigned int StartSlot,[In] unsigned int NumSamplers,[In, Buffer] const ID3D10SamplerState** ppSamplers)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::PSSetSamplers</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.PixelShaderStage.SetConstantBuffers(System.Int32,System.Int32,SharpDX.Direct3D10.Buffer[])\">\n            <summary>\t\n            <p>Set the constant buffers used by the pixel shader pipeline stage.</p>\t\n            </summary>\t\n            <param name=\"startSlot\">No documentation.</param>\t\n            <param name=\"numBuffers\">No documentation.</param>\t\n            <param name=\"constantBuffersOut\">No documentation.</param>\t\n            <remarks>\t\n            <p>The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::PSSetConstantBuffers']/*\"/>\t\n            <msdn-id>bb173603</msdn-id>\t\n            <unmanaged>void ID3D10Device::PSSetConstantBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[In, Buffer] const ID3D10Buffer** ppConstantBuffers)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::PSSetConstantBuffers</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.PixelShaderStage.SetConstantBuffers(System.Int32,System.Int32,SharpDX.ComArray{SharpDX.Direct3D10.Buffer})\">\n            <summary>\t\n            <p>Set the constant buffers used by the pixel shader pipeline stage.</p>\t\n            </summary>\t\n            <param name=\"startSlot\">No documentation.</param>\t\n            <param name=\"numBuffers\">No documentation.</param>\t\n            <param name=\"constantBuffersOut\">No documentation.</param>\t\n            <remarks>\t\n            <p>The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::PSSetConstantBuffers']/*\"/>\t\n            <msdn-id>bb173603</msdn-id>\t\n            <unmanaged>void ID3D10Device::PSSetConstantBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[In, Buffer] const ID3D10Buffer** ppConstantBuffers)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::PSSetConstantBuffers</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.PixelShaderStage.GetShaderResources(System.Int32,System.Int32,SharpDX.Direct3D10.ShaderResourceView[])\">\n            <summary>\t\n            <p>Get the pixel shader resources.</p>\t\n            </summary>\t\n            <param name=\"startSlot\"><dd>  <p>Index into the device's zero-based array to begin getting shader resources from.</p> </dd></param>\t\n            <param name=\"numViews\"><dd>  <p>The number of resources to get from the device. Up to a maximum of 128 slots are available for shader resources.</p> </dd></param>\t\n            <param name=\"shaderResourceViewsOut\"><dd>  <p>Array of <strong>shader resource view</strong> interfaces to be returned by the device.</p> </dd></param>\t\n            <remarks>\t\n            <p>Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::PSGetShaderResources']/*\"/>\t\n            <msdn-id>bb173602</msdn-id>\t\n            <unmanaged>void ID3D10Device::PSGetShaderResources([In] unsigned int StartSlot,[In] unsigned int NumViews,[Out, Buffer] ID3D10ShaderResourceView** ppShaderResourceViews)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::PSGetShaderResources</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.PixelShaderStage.Get(SharpDX.Direct3D10.PixelShader@)\">\n            <summary>\t\n            <p>Get the pixel shader currently set on the device.</p>\t\n            </summary>\t\n            <param name=\"pixelShaderOut\"><dd>  <p>Address of a reference to a pixel shader (see <strong><see cref=\"T:SharpDX.Direct3D10.PixelShader\"/></strong>) to be returned by the method.</p> </dd></param>\t\n            <remarks>\t\n            <p>Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::PSGetShader']/*\"/>\t\n            <msdn-id>bb173601</msdn-id>\t\n            <unmanaged>void ID3D10Device::PSGetShader([Out] ID3D10PixelShader** ppPixelShader)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::PSGetShader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.PixelShaderStage.GetSamplers(System.Int32,System.Int32,SharpDX.Direct3D10.SamplerState[])\">\n            <summary>\t\n            <p>Get an array of sampler states from the pixel shader pipeline stage.</p>\t\n            </summary>\t\n            <param name=\"startSlot\">No documentation.</param>\t\n            <param name=\"numSamplers\">No documentation.</param>\t\n            <param name=\"samplersOut\">No documentation.</param>\t\n            <remarks>\t\n            <p>Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::PSGetSamplers']/*\"/>\t\n            <msdn-id>bb173600</msdn-id>\t\n            <unmanaged>void ID3D10Device::PSGetSamplers([In] unsigned int StartSlot,[In] unsigned int NumSamplers,[Out, Buffer] ID3D10SamplerState** ppSamplers)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::PSGetSamplers</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.PixelShaderStage.GetConstantBuffers(System.Int32,System.Int32,SharpDX.Direct3D10.Buffer[])\">\n            <summary>\t\n            <p>Get the constant buffers used by the pixel shader pipeline stage.</p>\t\n            </summary>\t\n            <param name=\"startSlot\">No documentation.</param>\t\n            <param name=\"numBuffers\">No documentation.</param>\t\n            <param name=\"constantBuffersOut\">No documentation.</param>\t\n            <remarks>\t\n            <p>Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::PSGetConstantBuffers']/*\"/>\t\n            <msdn-id>bb173599</msdn-id>\t\n            <unmanaged>void ID3D10Device::PSGetConstantBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[Out, Buffer] ID3D10Buffer** ppConstantBuffers)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::PSGetConstantBuffers</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.Predicate\">\n            <summary>\t\n            <p>A predicate interface determines whether geometry should be processed depending on the results of a previous draw call.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>A predicate can be created with <strong><see cref=\"M:SharpDX.Direct3D10.Device.CreatePredicate(SharpDX.Direct3D10.QueryDescription,SharpDX.Direct3D10.Predicate)\"/></strong>, and used with <strong><see cref=\"M:SharpDX.Direct3D10.Device.SetPredication(SharpDX.Direct3D10.Predicate,SharpDX.Bool)\"/></strong>.</p><p>There are two types of predicates in Direct3D 10: stream-output-overflow predicates and occlusion predicates. Stream-output-overflow predicates will cause any geometry residing in stream-output buffers that were overflowed to not be processed. Occlusion predicates will cause any geometry that did not have a single sample pass the depth/stencil tests to not be processed.</p><p>For an example of occlusion-predicated rendering, see Draw Predicated Sample. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Predicate']/*\"/>\t\n            <msdn-id>bb173822</msdn-id>\t\n            <unmanaged>ID3D10Predicate</unmanaged>\t\n            <unmanaged-short>ID3D10Predicate</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.Query\">\n            <summary>\t\n            <p>A query interface queries information from the GPU.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>A query can be created with <strong><see cref=\"M:SharpDX.Direct3D10.Device.CreateQuery(SharpDX.Direct3D10.QueryDescription,SharpDX.Direct3D10.Query)\"/></strong>.</p><p>This interface inherits the functionality of an <strong><see cref=\"T:SharpDX.Direct3D10.Asynchronous\"/> Interface</strong>.</p><p>Query data is typically gathered by issuing an <strong><see cref=\"M:SharpDX.Direct3D10.Asynchronous.Begin\"/></strong> command, issuing some graphics commands, issuing an <strong><see cref=\"M:SharpDX.Direct3D10.Asynchronous.End\"/></strong> command, and then calling <strong><see cref=\"M:SharpDX.Direct3D10.Asynchronous.GetData\"/></strong> to get data about what happened in between the Begin and End calls. The data returned by GetData will be different depending on the type of query.</p><p>There are, however, some queries that do not require calls to Begin. For a list of possible queries see <strong><see cref=\"T:SharpDX.Direct3D10.QueryType\"/></strong>.</p><p>A query is typically executed as shown in the following code:</p><pre><code><see cref=\"T:SharpDX.Direct3D10.QueryDescription\"/> queryDesc; ... // Fill out queryDesc structure <see cref=\"T:SharpDX.Direct3D10.Query\"/> * pQuery;\t\n            pDevice-&gt;CreateQuery(&amp;queryDesc, &amp;pQuery); pQuery-&gt;Begin(); ... // Issue graphis commands, do whatever pQuery-&gt;End(); UINT64 queryData; // This data type is different depending on the query type while( <see cref=\"F:SharpDX.Result.Ok\"/> != pQuery-&gt;GetData(&amp;queryData, sizeof(UINT64), 0) )\t\n            {\t\n            }\t\n            </code></pre><p>When using a query that does not require a call to Begin, it still requires a call to End. The call to End causes the data returned by GetData to be accurate up until the last call to End.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Query']/*\"/>\t\n            <msdn-id>bb173823</msdn-id>\t\n            <unmanaged>ID3D10Query</unmanaged>\t\n            <unmanaged-short>ID3D10Query</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Query.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D10.Query\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Query.op_Explicit(System.IntPtr)~SharpDX.Direct3D10.Query\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D10.Query\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Query.GetDescription(SharpDX.Direct3D10.QueryDescription@)\">\n            <summary>\t\n            <p>Get a query description.</p>\t\n            </summary>\t\n            <param name=\"descRef\"><dd>  <p>Pointer to a query description (see <strong><see cref=\"T:SharpDX.Direct3D10.QueryDescription\"/></strong>).</p> </dd></param>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Query::GetDesc']/*\"/>\t\n            <msdn-id>bb173824</msdn-id>\t\n            <unmanaged>void ID3D10Query::GetDesc([Out] D3D10_QUERY_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>ID3D10Query::GetDesc</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Query.#ctor(SharpDX.Direct3D10.Device,SharpDX.Direct3D10.QueryDescription)\">\n            <summary>\n              Constructs a new <see cref = \"T:SharpDX.Direct3D10.Query\" /> based on the specified description.\n            </summary>\n            <param name = \"device\">The device with which to associate the state object.</param>\n            <param name = \"description\">The query description.</param>\n            <returns>The newly created object.</returns>\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.Query.Description\">\n            <summary>\t\n            <p>Get a query description.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Query::GetDesc']/*\"/>\t\n            <msdn-id>bb173824</msdn-id>\t\n            <unmanaged>GetDesc</unmanaged>\t\n            <unmanaged-short>GetDesc</unmanaged-short>\t\n            <unmanaged>void ID3D10Query::GetDesc([Out] D3D10_QUERY_DESC* pDesc)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Predicate.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D10.Predicate\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Predicate.op_Explicit(System.IntPtr)~SharpDX.Direct3D10.Predicate\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D10.Predicate\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Predicate.#ctor(SharpDX.Direct3D10.Device,SharpDX.Direct3D10.QueryDescription)\">\n            <summary>\n              Constructs a new <see cref = \"T:SharpDX.Direct3D10.Predicate\" /> based on the specified description.\n            </summary>\n            <param name = \"device\">The device with which to associate the state object.</param>\n            <param name = \"description\">The query description.</param>\n            <returns>The newly created object.</returns>\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.RasterizerState\">\n            <summary>\t\n            <p>A rasterizer-state interface accesses rasterizer state for the rasterizer stage.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>A rasterizer-state object is created with <strong><see cref=\"M:SharpDX.Direct3D10.Device.CreateRasterizerState(SharpDX.Direct3D10.RasterizerStateDescription@,SharpDX.Direct3D10.RasterizerState)\"/></strong> and bound to the pipeline with <strong><see cref=\"M:SharpDX.Direct3D10.RasterizerStage.SetState(SharpDX.Direct3D10.RasterizerState)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10RasterizerState']/*\"/>\t\n            <msdn-id>bb173825</msdn-id>\t\n            <unmanaged>ID3D10RasterizerState</unmanaged>\t\n            <unmanaged-short>ID3D10RasterizerState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.RasterizerState.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D10.RasterizerState\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.RasterizerState.op_Explicit(System.IntPtr)~SharpDX.Direct3D10.RasterizerState\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D10.RasterizerState\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.RasterizerState.GetDescription(SharpDX.Direct3D10.RasterizerStateDescription@)\">\n            <summary>\t\n            <p>Get the properties of a rasterizer-state object.</p>\t\n            </summary>\t\n            <param name=\"descRef\"><dd>  <p>Pointer to a rasterizer-state description (see <strong><see cref=\"T:SharpDX.Direct3D10.RasterizerStateDescription\"/></strong>).</p> </dd></param>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10RasterizerState::GetDesc']/*\"/>\t\n            <msdn-id>bb173826</msdn-id>\t\n            <unmanaged>void ID3D10RasterizerState::GetDesc([Out] D3D10_RASTERIZER_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>ID3D10RasterizerState::GetDesc</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.RasterizerState.#ctor(SharpDX.Direct3D10.Device,SharpDX.Direct3D10.RasterizerStateDescription)\">\n            <summary>\n              Constructs a new <see cref = \"T:SharpDX.Direct3D10.RasterizerState\" /> based on the specified description.\n            </summary>\n            <param name = \"device\">The device with which to associate the state object.</param>\n            <param name = \"description\">The state description.</param>\n            <returns>The newly created object.</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.RasterizerState.#ctor(SharpDX.Direct3D10.Device,SharpDX.Direct3D10.RasterizerStateDescription@)\">\n            <summary>\n              Constructs a new <see cref = \"T:SharpDX.Direct3D10.RasterizerState\" /> based on the specified description.\n            </summary>\n            <param name = \"device\">The device with which to associate the state object.</param>\n            <param name = \"description\">The state description.</param>\n            <returns>The newly created object.</returns>\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.RasterizerState.Description\">\n            <summary>\t\n            <p>Get the properties of a rasterizer-state object.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10RasterizerState::GetDesc']/*\"/>\t\n            <msdn-id>bb173826</msdn-id>\t\n            <unmanaged>GetDesc</unmanaged>\t\n            <unmanaged-short>GetDesc</unmanaged-short>\t\n            <unmanaged>void ID3D10RasterizerState::GetDesc([Out] D3D10_RASTERIZER_DESC* pDesc)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.RenderTargetView\">\n            <summary>\t\n            <p>A render-target-view interface identifies the render-target subresources that can be accessed during rendering.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>To create a render-target view, call <strong><see cref=\"M:SharpDX.Direct3D10.Device.CreateRenderTargetView(SharpDX.Direct3D10.Resource,System.Nullable{SharpDX.Direct3D10.RenderTargetViewDescription},SharpDX.Direct3D10.RenderTargetView)\"/></strong>. To bind a render-target view to the pipeline, call <strong><see cref=\"M:SharpDX.Direct3D10.OutputMergerStage.SetRenderTargets(System.Int32,SharpDX.Direct3D10.RenderTargetView[],SharpDX.Direct3D10.DepthStencilView)\"/></strong>.</p><p>A rendertarget is a resource that can be written by the output-merger stage at the end of a render pass. Each render-target should also have a corresponding depth-stencil view.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10RenderTargetView']/*\"/>\t\n            <msdn-id>bb173827</msdn-id>\t\n            <unmanaged>ID3D10RenderTargetView</unmanaged>\t\n            <unmanaged-short>ID3D10RenderTargetView</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.RenderTargetView.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D10.RenderTargetView\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.RenderTargetView.op_Explicit(System.IntPtr)~SharpDX.Direct3D10.RenderTargetView\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D10.RenderTargetView\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.RenderTargetView.GetDescription(SharpDX.Direct3D10.RenderTargetViewDescription@)\">\n            <summary>\t\n            <p>Get the properties of a render target view.</p>\t\n            </summary>\t\n            <param name=\"descRef\"><dd>  <p>Pointer to the description of a render target view (see <strong><see cref=\"T:SharpDX.Direct3D10.RenderTargetViewDescription\"/></strong>).</p> </dd></param>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10RenderTargetView::GetDesc']/*\"/>\t\n            <msdn-id>bb173828</msdn-id>\t\n            <unmanaged>void ID3D10RenderTargetView::GetDesc([Out] D3D10_RENDER_TARGET_VIEW_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>ID3D10RenderTargetView::GetDesc</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.RenderTargetView.#ctor(SharpDX.Direct3D10.Device,SharpDX.Direct3D10.Resource)\">\n            <summary>\n              Creates a <see cref = \"T:SharpDX.Direct3D10.RenderTargetView\" /> for accessing resource data.\n            </summary>\n            <param name = \"device\">The device to use when creating this <see cref = \"T:SharpDX.Direct3D10.RenderTargetView\" />.</param>\n            <param name = \"resource\">The resource that represents the render-target surface. This surface must have been created with the <see cref = \"T:SharpDX.Direct3D10.BindFlags\">RenderTarget</see> flag.</param>\n            <unmanaged>ID3D10Device::CreateRenderTargetView</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.RenderTargetView.#ctor(SharpDX.Direct3D10.Device,SharpDX.Direct3D10.Resource,SharpDX.Direct3D10.RenderTargetViewDescription)\">\n            <summary>\n              Creates a <see cref = \"T:SharpDX.Direct3D10.RenderTargetView\" /> for accessing resource data.\n            </summary>\n            <param name = \"device\">The device to use when creating this <see cref = \"T:SharpDX.Direct3D10.RenderTargetView\" />.</param>\n            <param name = \"resource\">The resource that represents the render-target surface. This surface must have been created with the <see cref = \"T:SharpDX.Direct3D10.BindFlags\">RenderTarget</see> flag.</param>\n            <param name = \"description\">A structure describing the <see cref = \"T:SharpDX.Direct3D10.RenderTargetView\" /> to be created.</param>\n            <unmanaged>ID3D10Device::CreateRenderTargetView</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.RenderTargetView.Description\">\n            <summary>\t\n            <p>Get the properties of a render target view.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10RenderTargetView::GetDesc']/*\"/>\t\n            <msdn-id>bb173828</msdn-id>\t\n            <unmanaged>GetDesc</unmanaged>\t\n            <unmanaged-short>GetDesc</unmanaged-short>\t\n            <unmanaged>void ID3D10RenderTargetView::GetDesc([Out] D3D10_RENDER_TARGET_VIEW_DESC* pDesc)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.SamplerState\">\n            <summary>\t\n            <p>A sampler-state interface accesses sampler state for a texture.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Create a sampler-state object by calling <strong><see cref=\"M:SharpDX.Direct3D10.Device.CreateSamplerState(SharpDX.Direct3D10.SamplerStateDescription@,SharpDX.Direct3D10.SamplerState)\"/></strong>.</p><p>To initialize sampler state, bind the sampler-state object to the pipeline by calling <strong><see cref=\"M:SharpDX.Direct3D10.VertexShaderStage.SetSamplers(System.Int32,System.Int32,SharpDX.Direct3D10.SamplerState[])\"/></strong>, <strong><see cref=\"M:SharpDX.Direct3D10.GeometryShaderStage.SetSamplers(System.Int32,System.Int32,SharpDX.Direct3D10.SamplerState[])\"/></strong>, or <strong><see cref=\"M:SharpDX.Direct3D10.PixelShaderStage.SetSamplers(System.Int32,System.Int32,SharpDX.Direct3D10.SamplerState[])\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10SamplerState']/*\"/>\t\n            <msdn-id>bb173833</msdn-id>\t\n            <unmanaged>ID3D10SamplerState</unmanaged>\t\n            <unmanaged-short>ID3D10SamplerState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.SamplerState.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D10.SamplerState\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.SamplerState.op_Explicit(System.IntPtr)~SharpDX.Direct3D10.SamplerState\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D10.SamplerState\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.SamplerState.GetDescription(SharpDX.Direct3D10.SamplerStateDescription@)\">\n            <summary>\t\n            <p>Get the sampler state.</p>\t\n            </summary>\t\n            <param name=\"descRef\"><dd>  <p>A reference to the sampler state (see <strong><see cref=\"T:SharpDX.Direct3D10.SamplerStateDescription\"/></strong>).</p> </dd></param>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10SamplerState::GetDesc']/*\"/>\t\n            <msdn-id>bb173834</msdn-id>\t\n            <unmanaged>void ID3D10SamplerState::GetDesc([Out] D3D10_SAMPLER_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>ID3D10SamplerState::GetDesc</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.SamplerState.#ctor(SharpDX.Direct3D10.Device,SharpDX.Direct3D10.SamplerStateDescription)\">\n            <summary>\n              Constructs a new <see cref = \"T:SharpDX.Direct3D10.SamplerState\" /> based on the specified description.\n            </summary>\n            <param name = \"device\">The device with which to associate the state object.</param>\n            <param name = \"description\">The state description.</param>\n            <returns>The newly created object.</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.SamplerState.#ctor(SharpDX.Direct3D10.Device,SharpDX.Direct3D10.SamplerStateDescription@)\">\n            <summary>\n              Constructs a new <see cref = \"T:SharpDX.Direct3D10.SamplerState\" /> based on the specified description.\n            </summary>\n            <param name = \"device\">The device with which to associate the state object.</param>\n            <param name = \"description\">The state description.</param>\n            <returns>The newly created object.</returns>\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.SamplerState.Description\">\n            <summary>\t\n            <p>Get the sampler state.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10SamplerState::GetDesc']/*\"/>\t\n            <msdn-id>bb173834</msdn-id>\t\n            <unmanaged>GetDesc</unmanaged>\t\n            <unmanaged-short>GetDesc</unmanaged-short>\t\n            <unmanaged>void ID3D10SamplerState::GetDesc([Out] D3D10_SAMPLER_DESC* pDesc)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.ShaderResourceView\">\n            <summary>\t\n            <p>A shader-resource-view interface specifies the subresources a shader can access during rendering. Examples of shader resources include a constant buffer, a texture buffer, a texture or a sampler.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>To create a shader-resource view, call <strong><see cref=\"M:SharpDX.Direct3D10.Device.CreateShaderResourceView(SharpDX.Direct3D10.Resource,System.Nullable{SharpDX.Direct3D10.ShaderResourceViewDescription},SharpDX.Direct3D10.ShaderResourceView)\"/></strong>.</p><p>A shader-resource view is required when binding a resource to a shader stage; the binding occurs by calling <strong><see cref=\"M:SharpDX.Direct3D10.GeometryShaderStage.SetShaderResources(System.Int32,System.Int32,SharpDX.Direct3D10.ShaderResourceView[])\"/></strong>, <strong><see cref=\"M:SharpDX.Direct3D10.VertexShaderStage.SetShaderResources(System.Int32,System.Int32,SharpDX.Direct3D10.ShaderResourceView[])\"/></strong> or <strong><see cref=\"M:SharpDX.Direct3D10.PixelShaderStage.SetShaderResources(System.Int32,System.Int32,SharpDX.Direct3D10.ShaderResourceView[])\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10ShaderResourceView']/*\"/>\t\n            <msdn-id>bb173854</msdn-id>\t\n            <unmanaged>ID3D10ShaderResourceView</unmanaged>\t\n            <unmanaged-short>ID3D10ShaderResourceView</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.ShaderResourceView.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D10.ShaderResourceView\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.ShaderResourceView.op_Explicit(System.IntPtr)~SharpDX.Direct3D10.ShaderResourceView\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D10.ShaderResourceView\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.ShaderResourceView.GetDescription(SharpDX.Direct3D10.ShaderResourceViewDescription@)\">\n            <summary>\t\n            <p>Get the shader resource view's description.</p>\t\n            </summary>\t\n            <param name=\"descRef\"><dd>  <p>A reference to a <strong><see cref=\"T:SharpDX.Direct3D10.ShaderResourceViewDescription\"/></strong> structure to be filled with data about the shader resource view.</p> </dd></param>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10ShaderResourceView::GetDesc']/*\"/>\t\n            <msdn-id>bb173855</msdn-id>\t\n            <unmanaged>void ID3D10ShaderResourceView::GetDesc([Out] D3D10_SHADER_RESOURCE_VIEW_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>ID3D10ShaderResourceView::GetDesc</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.ShaderResourceView.#ctor(SharpDX.Direct3D10.Device,SharpDX.Direct3D10.Resource)\">\n            <summary>\n              Creates a <see cref = \"T:SharpDX.Direct3D10.ShaderResourceView\" /> for accessing resource data.\n            </summary>\n            <param name = \"device\">The device to use when creating this <see cref = \"T:SharpDX.Direct3D10.ShaderResourceView\" />.</param>\n            <param name = \"resource\">The resource that represents the render-target surface. This surface must have been created with the <see cref = \"T:SharpDX.Direct3D10.BindFlags\">ShaderResource</see> flag.</param>\n            <unmanaged>ID3D10Device::CreateShaderResourceView</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.ShaderResourceView.#ctor(SharpDX.Direct3D10.Device,SharpDX.Direct3D10.Resource,SharpDX.Direct3D10.ShaderResourceViewDescription)\">\n            <summary>\n              Creates a <see cref = \"T:SharpDX.Direct3D10.ShaderResourceView\" /> for accessing resource data.\n            </summary>\n            <param name = \"device\">The device to use when creating this <see cref = \"T:SharpDX.Direct3D10.ShaderResourceView\" />.</param>\n            <param name = \"resource\">The resource that represents the render-target surface. This surface must have been created with the <see cref = \"T:SharpDX.Direct3D10.BindFlags\">ShaderResource</see> flag.</param>\n            <param name = \"description\">A structure describing the <see cref = \"T:SharpDX.Direct3D10.ShaderResourceView\" /> to be created.</param>\n            <unmanaged>ID3D10Device::CreateShaderResourceView</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.ShaderResourceView.FromFile(SharpDX.Direct3D10.Device,System.String)\">\n            <summary>\t\n            Create a shader-resource view from a file. Read the characteristics of a texture when the texture is loaded.\n            </summary>\t\n            <param name=\"device\">A reference to the device (see <see cref=\"T:SharpDX.Direct3D10.Device\"/>) that will use the resource. </param>\n            <param name=\"fileName\">Name of the file that contains the shader-resource view.</param>\n            <returns>Returns a reference to the shader-resource view (see <see cref=\"T:SharpDX.Direct3D10.ShaderResourceView\"/>). </returns>\n            <unmanaged>HRESULT D3DX10CreateShaderResourceViewFromFileW([None] ID3D10Device* pDevice,[None] const wchar_t* pSrcFile,[In, Optional] D3DX10_IMAGE_LOAD_INFO* pLoadInfo,[None] ID3DX10ThreadPump* pPump,[None] ID3D10ShaderResourceView** ppShaderResourceView,[None] HRESULT* pHResult)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.ShaderResourceView.FromFile(SharpDX.Direct3D10.Device,System.String,SharpDX.Direct3D10.ImageLoadInformation)\">\n            <summary>\t\n            Create a shader-resource view from a file.\t\n            </summary>\t\n            <param name=\"device\">A reference to the device (see <see cref=\"T:SharpDX.Direct3D10.Device\"/>) that will use the resource. </param>\n            <param name=\"fileName\">Name of the file that contains the shader-resource view.</param>\n            <param name=\"loadInformation\">Identifies the characteristics of a texture (see <see cref=\"T:SharpDX.Direct3D10.ImageLoadInformation\"/>) when the data processor is created. </param>\n            <returns>Returns a reference to the shader-resource view (see <see cref=\"T:SharpDX.Direct3D10.ShaderResourceView\"/>). </returns>\n            <unmanaged>HRESULT D3DX10CreateShaderResourceViewFromFileW([None] ID3D10Device* pDevice,[None] const wchar_t* pSrcFile,[In, Optional] D3DX10_IMAGE_LOAD_INFO* pLoadInfo,[None] ID3DX10ThreadPump* pPump,[None] ID3D10ShaderResourceView** ppShaderResourceView,[None] HRESULT* pHResult)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.ShaderResourceView.FromMemory(SharpDX.Direct3D10.Device,System.Byte[])\">\n            <summary>\t\n            Create a shader-resource view from a file in memory.\t\n            </summary>\t\n            <param name=\"device\">A reference to the device (see <see cref=\"T:SharpDX.Direct3D10.Device\"/>) that will use the resource. </param>\n            <param name=\"memory\">Pointer to a memory location that contains the shader-resource view. </param>\n            <returns>Returns a reference to the shader-resource view (see <see cref=\"T:SharpDX.Direct3D10.ShaderResourceView\"/>). </returns>\n            <unmanaged>HRESULT D3DX10CreateShaderResourceViewFromMemory([None] ID3D10Device* pDevice,[None] const void* pSrcData,[None] SIZE_T SrcDataSize,[In, Optional] D3DX10_IMAGE_LOAD_INFO* pLoadInfo,[None] ID3DX10ThreadPump* pPump,[None] ID3D10ShaderResourceView** ppShaderResourceView,[None] HRESULT* pHResult)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.ShaderResourceView.FromMemory(SharpDX.Direct3D10.Device,System.Byte[],SharpDX.Direct3D10.ImageLoadInformation)\">\n            <summary>\t\n            Create a shader-resource view from a file in memory.\t\n            </summary>\t\n            <param name=\"device\">A reference to the device (see <see cref=\"T:SharpDX.Direct3D10.Device\"/>) that will use the resource. </param>\n            <param name=\"memory\">Pointer to a memory location that contains the shader-resource view. </param>\n            <param name=\"loadInformation\">Identifies the characteristics of a texture (see <see cref=\"T:SharpDX.Direct3D10.ImageLoadInformation\"/>) when the data processor is created. </param>\n            <returns>Returns a reference to the shader-resource view (see <see cref=\"T:SharpDX.Direct3D10.ShaderResourceView\"/>). </returns>\n            <unmanaged>HRESULT D3DX10CreateShaderResourceViewFromMemory([None] ID3D10Device* pDevice,[None] const void* pSrcData,[None] SIZE_T SrcDataSize,[In, Optional] D3DX10_IMAGE_LOAD_INFO* pLoadInfo,[None] ID3DX10ThreadPump* pPump,[None] ID3D10ShaderResourceView** ppShaderResourceView,[None] HRESULT* pHResult)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.ShaderResourceView.FromStream(SharpDX.Direct3D10.Device,System.IO.Stream,System.Int32)\">\n            <summary>\t\n            Create a shader-resource view from a file in a stream..\t\n            </summary>\t\n            <param name=\"device\">A reference to the device (see <see cref=\"T:SharpDX.Direct3D10.Device\"/>) that will use the resource. </param>\n            <param name=\"stream\">Pointer to the file in memory that contains the shader-resource view. </param>\n            <param name=\"sizeInBytes\">Size of the file to read from the stream</param>\n            <returns>Returns a reference to the shader-resource view (see <see cref=\"T:SharpDX.Direct3D10.ShaderResourceView\"/>). </returns>\n            <unmanaged>HRESULT D3DX10CreateShaderResourceViewFromMemory([None] ID3D10Device* pDevice,[None] const void* pSrcData,[None] SIZE_T SrcDataSize,[In, Optional] D3DX10_IMAGE_LOAD_INFO* pLoadInfo,[None] ID3DX10ThreadPump* pPump,[None] ID3D10ShaderResourceView** ppShaderResourceView,[None] HRESULT* pHResult)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.ShaderResourceView.FromStream(SharpDX.Direct3D10.Device,System.IO.Stream,System.Int32,SharpDX.Direct3D10.ImageLoadInformation)\">\n            <summary>\t\n            Create a shader-resource view from a file in a stream..\t\n            </summary>\t\n            <param name=\"device\">A reference to the device (see <see cref=\"T:SharpDX.Direct3D10.Device\"/>) that will use the resource. </param>\n            <param name=\"stream\">Pointer to the file in memory that contains the shader-resource view. </param>\n            <param name=\"sizeInBytes\">Size of the file to read from the stream</param>\n            <param name=\"loadInformation\">Identifies the characteristics of a texture (see <see cref=\"T:SharpDX.Direct3D10.ImageLoadInformation\"/>) when the data processor is created. </param>\n            <returns>Returns a reference to the shader-resource view (see <see cref=\"T:SharpDX.Direct3D10.ShaderResourceView\"/>). </returns>\n            <unmanaged>HRESULT D3DX10CreateShaderResourceViewFromMemory([None] ID3D10Device* pDevice,[None] const void* pSrcData,[None] SIZE_T SrcDataSize,[In, Optional] D3DX10_IMAGE_LOAD_INFO* pLoadInfo,[None] ID3DX10ThreadPump* pPump,[None] ID3D10ShaderResourceView** ppShaderResourceView,[None] HRESULT* pHResult)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.ShaderResourceView.Description\">\n            <summary>\t\n            <p>Get the shader resource view's description.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10ShaderResourceView::GetDesc']/*\"/>\t\n            <msdn-id>bb173855</msdn-id>\t\n            <unmanaged>GetDesc</unmanaged>\t\n            <unmanaged-short>GetDesc</unmanaged-short>\t\n            <unmanaged>void ID3D10ShaderResourceView::GetDesc([Out] D3D10_SHADER_RESOURCE_VIEW_DESC* pDesc)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.ShaderResourceView1\">\n            <summary>\t\n            <p>A shader-resource-view interface specifies the subresources a shader can access during rendering. Examples of shader resources include a constant buffer, a texture buffer, a texture or a sampler.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>To create a shader-resource view, call <strong><see cref=\"M:SharpDX.Direct3D10.Device1.CreateShaderResourceView1(SharpDX.Direct3D10.Resource,System.Nullable{SharpDX.Direct3D10.ShaderResourceViewDescription1},SharpDX.Direct3D10.ShaderResourceView1)\"/></strong>.</p><p>A shader-resource view is required when binding a resource to a shader stage; the binding occurs by calling <strong><see cref=\"M:SharpDX.Direct3D10.GeometryShaderStage.SetShaderResources(System.Int32,System.Int32,SharpDX.Direct3D10.ShaderResourceView[])\"/></strong>, <strong><see cref=\"M:SharpDX.Direct3D10.VertexShaderStage.SetShaderResources(System.Int32,System.Int32,SharpDX.Direct3D10.ShaderResourceView[])\"/></strong> or <strong><see cref=\"M:SharpDX.Direct3D10.PixelShaderStage.SetShaderResources(System.Int32,System.Int32,SharpDX.Direct3D10.ShaderResourceView[])\"/></strong>.</p><p>This method requires Windows Vista Service Pack 1.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10ShaderResourceView1']/*\"/>\t\n            <msdn-id>bb694557</msdn-id>\t\n            <unmanaged>ID3D10ShaderResourceView1</unmanaged>\t\n            <unmanaged-short>ID3D10ShaderResourceView1</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.ShaderResourceView1.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D10.ShaderResourceView1\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.ShaderResourceView1.op_Explicit(System.IntPtr)~SharpDX.Direct3D10.ShaderResourceView1\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D10.ShaderResourceView1\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.ShaderResourceView1.GetDescription1(SharpDX.Direct3D10.ShaderResourceViewDescription1@)\">\n            <summary>\t\n            <p>Get the shader resource view's description.</p>\t\n            </summary>\t\n            <param name=\"descRef\"><dd>  <p>A reference to a <strong><see cref=\"T:SharpDX.Direct3D10.ShaderResourceViewDescription1\"/></strong> structure to be filled with data about the shader resource view.</p> </dd></param>\t\n            <remarks>\t\n            <p>This method requires Windows Vista Service Pack 1.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10ShaderResourceView1::GetDesc1']/*\"/>\t\n            <msdn-id>bb694558</msdn-id>\t\n            <unmanaged>void ID3D10ShaderResourceView1::GetDesc1([Out] D3D10_SHADER_RESOURCE_VIEW_DESC1* pDesc)</unmanaged>\t\n            <unmanaged-short>ID3D10ShaderResourceView1::GetDesc1</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.ShaderResourceView1.#ctor(SharpDX.Direct3D10.Device1,SharpDX.Direct3D10.Resource)\">\n            <summary>\n              Creates a <see cref = \"T:SharpDX.Direct3D10.ShaderResourceView1\" /> for accessing resource data.\n            </summary>\n            <param name = \"device\">The device to use when creating this <see cref = \"T:SharpDX.Direct3D10.ShaderResourceView\" />.</param>\n            <param name = \"resource\">The resource that represents the render-target surface. This surface must have been created with the <see cref = \"T:SharpDX.Direct3D10.BindFlags\">ShaderResource</see> flag.</param>\n            <unmanaged>ID3D10Device1::CreateShaderResourceView1</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.ShaderResourceView1.#ctor(SharpDX.Direct3D10.Device1,SharpDX.Direct3D10.Resource,SharpDX.Direct3D10.ShaderResourceViewDescription1)\">\n            <summary>\n              Creates a <see cref = \"T:SharpDX.Direct3D10.ShaderResourceView1\" /> for accessing resource data.\n            </summary>\n            <param name = \"device\">The device to use when creating this <see cref = \"T:SharpDX.Direct3D10.ShaderResourceView1\" />.</param>\n            <param name = \"resource\">The resource that represents the render-target surface. This surface must have been created with the <see cref = \"T:SharpDX.Direct3D10.BindFlags\">ShaderResource</see> flag.</param>\n            <param name = \"description\">A structure describing the <see cref = \"T:SharpDX.Direct3D10.ShaderResourceView1\" /> to be created.</param>\n            <unmanaged>ID3D10Device1::CreateShaderResourceView1</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.ShaderResourceView1.Description1\">\n            <summary>\t\n            <p>Get the shader resource view's description.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This method requires Windows Vista Service Pack 1.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10ShaderResourceView1::GetDesc1']/*\"/>\t\n            <msdn-id>bb694558</msdn-id>\t\n            <unmanaged>GetDesc1</unmanaged>\t\n            <unmanaged-short>GetDesc1</unmanaged-short>\t\n            <unmanaged>void ID3D10ShaderResourceView1::GetDesc1([Out] D3D10_SHADER_RESOURCE_VIEW_DESC1* pDesc)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.SkinInfo\">\n            <summary>\t\n            <p><see cref=\"T:SharpDX.Direct3D10.SkinInfo\"/> allows you to optimize, process, and manually set the relationship between bones and vertices in your meshes (see Skeletal Animation on Wikipedia). It is most useful for making .x files exported by DCC Apps (such as 3DS Max and Maya) more hardware-friendly, and for improving the render speed of your skinned meshes in software render mode.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Create a <see cref=\"T:SharpDX.Direct3D10.SkinInfo\"/> interface with <strong><see cref=\"M:SharpDX.Direct3D10.D3DX10.CreateSkinInfo(SharpDX.Direct3D10.SkinInfo@)\"/></strong>, <strong>D3DX10CreateSkinInfoFromBlendedMesh</strong>, or <strong>D3DX10CreateSkinInfoFVF</strong>.</p><p>The LPD3DX10SKININFO type is defined as a reference to the <strong><see cref=\"T:SharpDX.Direct3D10.SkinInfo\"/></strong> interface. </p><pre><code> typedef struct <see cref=\"T:SharpDX.Direct3D10.SkinInfo\"/> *LPD3DX10SKININFO;\t\n            </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10SkinInfo']/*\"/>\t\n            <msdn-id>Bb173932</msdn-id>\t\n            <unmanaged>ID3DX10SkinInfo</unmanaged>\t\n            <unmanaged-short>ID3DX10SkinInfo</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.SkinInfo.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D10.SkinInfo\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.SkinInfo.op_Explicit(System.IntPtr)~SharpDX.Direct3D10.SkinInfo\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D10.SkinInfo\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.SkinInfo.GetNumVertices\">\n            <summary>\t\n            <p>Get the number of vertices in <see cref=\"T:SharpDX.Direct3D10.SkinInfo\"/>.</p>\t\n            </summary>\t\n            <returns><p>The number of vertices in <see cref=\"T:SharpDX.Direct3D10.SkinInfo\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10SkinInfo::GetNumVertices']/*\"/>\t\n            <msdn-id>bb173945</msdn-id>\t\n            <unmanaged>unsigned int ID3DX10SkinInfo::GetNumVertices()</unmanaged>\t\n            <unmanaged-short>ID3DX10SkinInfo::GetNumVertices</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.SkinInfo.GetNumBones\">\n            <summary>\t\n            <p>Get the number of bones in <see cref=\"T:SharpDX.Direct3D10.SkinInfo\"/>.</p>\t\n            </summary>\t\n            <returns><p>The number of bones in <see cref=\"T:SharpDX.Direct3D10.SkinInfo\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10SkinInfo::GetNumBones']/*\"/>\t\n            <msdn-id>bb173944</msdn-id>\t\n            <unmanaged>unsigned int ID3DX10SkinInfo::GetNumBones()</unmanaged>\t\n            <unmanaged-short>ID3DX10SkinInfo::GetNumBones</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.SkinInfo.GetMaxBoneInfluences\">\n            <summary>\t\n            <p>Get the number of vertices a bone can maximally influence.</p>\t\n            </summary>\t\n            <returns><p>The number of vertices a bone can maximally influence.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10SkinInfo::GetMaxBoneInfluences']/*\"/>\t\n            <msdn-id>bb173943</msdn-id>\t\n            <unmanaged>unsigned int ID3DX10SkinInfo::GetMaxBoneInfluences()</unmanaged>\t\n            <unmanaged-short>ID3DX10SkinInfo::GetMaxBoneInfluences</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.SkinInfo.AddVertices(System.Int32)\">\n            <summary>\t\n            <p>Allocate space for additional vertices.</p>\t\n            </summary>\t\n            <param name=\"count\"><dd>  <p>The number of vertices to add.</p> </dd></param>\t\n            <returns><p>If this method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the return value can be: E_OUTOFMEMORY.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10SkinInfo::AddVertices']/*\"/>\t\n            <msdn-id>bb173935</msdn-id>\t\n            <unmanaged>HRESULT ID3DX10SkinInfo::AddVertices([In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3DX10SkinInfo::AddVertices</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.SkinInfo.RemapVertices(System.Int32,System.Int32[])\">\n            <summary>\t\n            <p>Change which vertices are influenced by which bones.</p>\t\n            </summary>\t\n            <param name=\"newVertexCount\"><dd>  <p>The new number of vertices.</p> </dd></param>\t\n            <param name=\"vertexRemapRef\"><dd>  <p>A reference to an array of vertex indices, which describe the remapping. For example, say SkinInfo contains some vertices such that bone0 is mapped to v0, bone1 to v1, and bone2 to v2, and array with 2,1,0 is specified for pBoneRemap. This will cause bone0 to be mapped to v2, bone1 to v1, and bone2 to v0.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the return value can be: E_OUTOFMEMORY or E_INVALIDARG.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10SkinInfo::RemapVertices']/*\"/>\t\n            <msdn-id>bb173947</msdn-id>\t\n            <unmanaged>HRESULT ID3DX10SkinInfo::RemapVertices([In] unsigned int NewVertexCount,[In, Buffer] unsigned int* pVertexRemap)</unmanaged>\t\n            <unmanaged-short>ID3DX10SkinInfo::RemapVertices</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.SkinInfo.AddBones(System.Int32)\">\n            <summary>\t\n            <p>Allocate space for more bones.</p>\t\n            </summary>\t\n            <param name=\"count\"><dd>  <p>The number of bones to add.</p> </dd></param>\t\n            <returns><p>If this method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the return value can be: E_OUTOFMEMORY.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10SkinInfo::AddBones']/*\"/>\t\n            <msdn-id>bb173934</msdn-id>\t\n            <unmanaged>HRESULT ID3DX10SkinInfo::AddBones([In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3DX10SkinInfo::AddBones</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.SkinInfo.RemoveBone(System.Int32)\">\n            <summary>\t\n            <p>Remove a bone.</p>\t\n            </summary>\t\n            <param name=\"index\"><dd>  <p>An index that specifies which bone to remove. Must be between 0 and the value returned by <strong><see cref=\"M:SharpDX.Direct3D10.SkinInfo.GetNumBones\"/></strong>.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the return value can be: E_INVALIDARG.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10SkinInfo::RemoveBone']/*\"/>\t\n            <msdn-id>bb173948</msdn-id>\t\n            <unmanaged>HRESULT ID3DX10SkinInfo::RemoveBone([In] unsigned int Index)</unmanaged>\t\n            <unmanaged-short>ID3DX10SkinInfo::RemoveBone</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.SkinInfo.RemapBones(System.Int32,System.Int32[])\">\n            <summary>\t\n            <p>Change which bones influence which vertices.</p>\t\n            </summary>\t\n            <param name=\"newBoneCount\"><dd>  <p>The new number of bones.</p> </dd></param>\t\n            <param name=\"boneRemapRef\"><dd>  <p>A reference to an array of bone indices, which describe the remapping. For example, say SkinInfo contains some bones such that bone0 is mapped to v0, bone1 to v1, and bone2 to v2, and array with 2,1,0 is specified for pBoneRemap. This will cause bone0 to be mapped to v2, bone1 to v1, and bone2 to v0.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the return value can be: E_OUTOFMEMORY or E_INVALIDARG.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10SkinInfo::RemapBones']/*\"/>\t\n            <msdn-id>bb173946</msdn-id>\t\n            <unmanaged>HRESULT ID3DX10SkinInfo::RemapBones([In] unsigned int NewBoneCount,[In, Buffer] unsigned int* pBoneRemap)</unmanaged>\t\n            <unmanaged-short>ID3DX10SkinInfo::RemapBones</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.SkinInfo.AddBoneInfluences(System.Int32,System.Int32,System.Int32[],System.Single[])\">\n            <summary>\t\n            <p>Enable an existing bone to influence a group of vertices and define how much influence the bone has on each vertex.</p>\t\n            </summary>\t\n            <param name=\"boneIndex\"><dd>  <p>An index that specifies an existing bone. Must be between 0 and the value returned by <strong><see cref=\"M:SharpDX.Direct3D10.SkinInfo.GetNumBones\"/></strong>.</p> </dd></param>\t\n            <param name=\"influenceCount\"><dd>  <p>Number of vertices to add to the bone's influence.</p> </dd></param>\t\n            <param name=\"indicesRef\"><dd>  <p>Pointer to an array of vertex indices.  Each member of this array has a corresponding member in pWeights, such that pIndices[i] corresponds to pWeights[i].  The corresponding value in pWeights[i] determines how much influence BoneIndex will have on the vertex indexed by pIndices[i]. The size of the pIndices array must be equal to or greater than InfluenceCount.</p> </dd></param>\t\n            <param name=\"weightsRef\"><dd>  <p>Pointer to an array of bone weights.  Each member of this array has a corresponding member in pIndices, such that pWeights[i] corresponds to pIndices[i]. Each value in pWeights is between 0 and 1 and defines the amount of influence the bone has over each vertex. The size of pWeights must be equal to or greater than InfluenceCount.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the return value can be: E_INVALIDARG or E_OUTOFMEMORY.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10SkinInfo::AddBoneInfluences']/*\"/>\t\n            <msdn-id>bb173933</msdn-id>\t\n            <unmanaged>HRESULT ID3DX10SkinInfo::AddBoneInfluences([In] unsigned int BoneIndex,[In] unsigned int InfluenceCount,[In, Buffer] unsigned int* pIndices,[In, Buffer] float* pWeights)</unmanaged>\t\n            <unmanaged-short>ID3DX10SkinInfo::AddBoneInfluences</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.SkinInfo.ClearBoneInfluences(System.Int32)\">\n            <summary>\t\n            <p>Clear a bone's list of vertices that it influences.</p>\t\n            </summary>\t\n            <param name=\"boneIndex\"><dd>  <p>An index that specifies an existing bone. Must be between 0 and the value returned by <strong><see cref=\"M:SharpDX.Direct3D10.SkinInfo.GetNumBones\"/></strong>.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the return value can be: E_INVALIDARG.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10SkinInfo::ClearBoneInfluences']/*\"/>\t\n            <msdn-id>bb173936</msdn-id>\t\n            <unmanaged>HRESULT ID3DX10SkinInfo::ClearBoneInfluences([In] unsigned int BoneIndex)</unmanaged>\t\n            <unmanaged-short>ID3DX10SkinInfo::ClearBoneInfluences</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.SkinInfo.GetBoneInfluenceCount(System.Int32)\">\n            <summary>\t\n            <p>Get the number of vertices that a given bone influences.</p>\t\n            </summary>\t\n            <param name=\"boneIndex\"><dd>  <p>An index that specifies an existing bone. Must be between 0 and the value returned by <strong><see cref=\"M:SharpDX.Direct3D10.SkinInfo.GetNumBones\"/></strong>.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the return value can be: E_INVALIDARG.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10SkinInfo::GetBoneInfluenceCount']/*\"/>\t\n            <msdn-id>bb173941</msdn-id>\t\n            <unmanaged>unsigned int ID3DX10SkinInfo::GetBoneInfluenceCount([In] unsigned int BoneIndex)</unmanaged>\t\n            <unmanaged-short>ID3DX10SkinInfo::GetBoneInfluenceCount</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.SkinInfo.GetBoneInfluences(System.Int32,System.Int32,System.Int32,System.Int32[],System.Single[])\">\n            <summary>\t\n            <p>Get a list of vertices that a given bone influences and a list of the amount of influence that bone has on each vertex.</p>\t\n            </summary>\t\n            <param name=\"boneIndex\"><dd>  <p>An index that specifies an existing bone. Must be between 0 and the value returned by <strong><see cref=\"M:SharpDX.Direct3D10.SkinInfo.GetNumBones\"/></strong>.</p> </dd></param>\t\n            <param name=\"offset\"><dd>  <p>An offset from the top of the bone's list of influenced vertices. This must be between 0 and the value returned by <strong><see cref=\"M:SharpDX.Direct3D10.SkinInfo.GetBoneInfluenceCount(System.Int32)\"/></strong>.</p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>The number of indices and weights to retrieve.  Must be between 0 and the value returned by <see cref=\"M:SharpDX.Direct3D10.SkinInfo.GetBoneInfluenceCount(System.Int32)\"/>.</p> </dd></param>\t\n            <param name=\"destIndicesRef\"><dd>  <p>A list of indices into the vertex buffer, each one representing a vertex influenced by the bone. These values correspond to the values in pDestWeights, such that pDestIndices[i] corresponds to pDestWeights[i].</p> </dd></param>\t\n            <param name=\"destWeightsRef\"><dd>  <p>A list of the amount of influence the bone has on each vertex. These values correspond to the values in pDestIndices, such that pDestWeights[i] corresponds to pDestIndices[i].f</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the return value can be: E_INVALIDARG or E_OUTOFMEMORY.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10SkinInfo::GetBoneInfluences']/*\"/>\t\n            <msdn-id>bb173942</msdn-id>\t\n            <unmanaged>HRESULT ID3DX10SkinInfo::GetBoneInfluences([In] unsigned int BoneIndex,[In] unsigned int Offset,[In] unsigned int Count,[Out, Buffer] unsigned int* pDestIndices,[Out, Buffer] float* pDestWeights)</unmanaged>\t\n            <unmanaged-short>ID3DX10SkinInfo::GetBoneInfluences</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.SkinInfo.FindBoneInfluenceIndex(System.Int32,System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Find the index that indicates where a given vertex is in a given bone's list of influenced vertices.</p>\t\n            </summary>\t\n            <param name=\"boneIndex\"><dd>  <p>An index that specifies an existing bone. Must be between 0 and the value returned by <strong><see cref=\"M:SharpDX.Direct3D10.SkinInfo.GetNumBones\"/></strong>.</p> </dd></param>\t\n            <param name=\"vertexIndex\"><dd>  <p>The index of the vertex in the vertex buffer.</p> </dd></param>\t\n            <param name=\"influenceIndexRef\"><dd>  <p>The index of the vertex in the bone's list of influenced vertices.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the return value can be: E_INVALIDARG.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10SkinInfo::FindBoneInfluenceIndex']/*\"/>\t\n            <msdn-id>bb173939</msdn-id>\t\n            <unmanaged>HRESULT ID3DX10SkinInfo::FindBoneInfluenceIndex([In] unsigned int BoneIndex,[In] unsigned int VertexIndex,[In] unsigned int* pInfluenceIndex)</unmanaged>\t\n            <unmanaged-short>ID3DX10SkinInfo::FindBoneInfluenceIndex</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.SkinInfo.SetBoneInfluence(System.Int32,System.Int32,System.Single)\">\n            <summary>\t\n            <p>Set the amount of influence a given bone has over a given vertex.</p>\t\n            </summary>\t\n            <param name=\"boneIndex\"><dd>  <p>An index that specifies an existing bone. Must be between 0 and the value returned by <strong><see cref=\"M:SharpDX.Direct3D10.SkinInfo.GetNumBones\"/></strong>.</p> </dd></param>\t\n            <param name=\"influenceIndex\"><dd>  <p>An index into the bone's list of vertices that it influences.</p> </dd></param>\t\n            <param name=\"weight\"><dd>  <p>The amount of influence, between 0 and 1, that the bone has over the vertex.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"!:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be E_INVALIDARG.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10SkinInfo::SetBoneInfluence']/*\"/>\t\n            <msdn-id>bb173949</msdn-id>\t\n            <unmanaged>HRESULT ID3DX10SkinInfo::SetBoneInfluence([In] unsigned int BoneIndex,[In] unsigned int InfluenceIndex,[In] float Weight)</unmanaged>\t\n            <unmanaged-short>ID3DX10SkinInfo::SetBoneInfluence</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.SkinInfo.GetBoneInfluence(System.Int32,System.Int32,System.Single)\">\n            <summary>\t\n            <p>Get the amount of influence a given bone has over a given vertex.</p>\t\n            </summary>\t\n            <param name=\"boneIndex\"><dd>  <p>An index that specifies an existing bone. Must be between 0 and the value returned by <strong><see cref=\"M:SharpDX.Direct3D10.SkinInfo.GetNumBones\"/></strong>.</p> </dd></param>\t\n            <param name=\"influenceIndex\"><dd>  <p>An index into the bone's list of vertices that it influences.</p> </dd></param>\t\n            <param name=\"weightRef\"><dd>  <p>The amount of influence, between 0 and 1, that the bone has over the vertex.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"!:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be E_INVALIDARG.</p></returns>\t\n            <remarks>\t\n            <p>Use <see cref=\"M:SharpDX.Direct3D10.SkinInfo.GetBoneInfluenceCount(System.Int32)\"/> to find out how many vertices the bone influences.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10SkinInfo::GetBoneInfluence']/*\"/>\t\n            <msdn-id>bb173940</msdn-id>\t\n            <unmanaged>HRESULT ID3DX10SkinInfo::GetBoneInfluence([In] unsigned int BoneIndex,[In] unsigned int InfluenceIndex,[In] float* pWeight)</unmanaged>\t\n            <unmanaged-short>ID3DX10SkinInfo::GetBoneInfluence</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.SkinInfo.Compact(System.Int32,System.Int32,System.Single)\">\n            <summary>\t\n            <p>Limit the number of bones that can influence a vertex and/or limit the amount of influence a bone can have on a vertex.</p>\t\n            </summary>\t\n            <param name=\"maxPerVertexInfluences\"><dd>  <p>The maximum number of bones that can influence any given vertex. This value is ignored if it is greater than the value returned by <strong><see cref=\"M:SharpDX.Direct3D10.SkinInfo.GetMaxBoneInfluences\"/></strong>.</p> </dd></param>\t\n            <param name=\"scaleMode\"><dd>  <p>A flag describing how to scale the remaining weights on a given vertex after some have been chopped off by MinWeight. If D3DX10_SKININFO_NO_SCALING is specified, the weights will not be scaled at all. If D3DX10_SKININFO_SCALE_TO_1 is specified, the weights greater than MinWeight will be scaled up so that they add up to 1.0. If D3DX10_SKININFO_SCALE_TO_TOTAL is specified, the weights greater than MinWeight will be scaled up so that they add up to the original total.</p> </dd></param>\t\n            <param name=\"minWeight\"><dd>  <p>The minimum percentage of influence, or weight, that any bone can have on any vertex. This value must be between 0 and 1.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the return value can be: E_OUTOFMEMORY or E_INVALIDARG.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10SkinInfo::Compact']/*\"/>\t\n            <msdn-id>bb173937</msdn-id>\t\n            <unmanaged>HRESULT ID3DX10SkinInfo::Compact([In] unsigned int MaxPerVertexInfluences,[In] unsigned int ScaleMode,[In] float MinWeight)</unmanaged>\t\n            <unmanaged-short>ID3DX10SkinInfo::Compact</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.SkinInfo.DoSoftwareSkinning(System.Int32,System.Int32,System.IntPtr,System.Int32,System.IntPtr,System.Int32,SharpDX.Matrix@,System.Nullable{SharpDX.Matrix},SharpDX.Direct3D10.SkinningChannel,System.Int32)\">\n            <summary>\t\n            <p>Do software skinning on an array of vertices.</p>\t\n            </summary>\t\n            <param name=\"startVertex\"><dd>  <p>A 0-based index into pSrcVertices.</p> </dd></param>\t\n            <param name=\"vertexCount\"><dd>  <p>Number of vertices to transform.</p> </dd></param>\t\n            <param name=\"srcVerticesRef\"><dd>  <p>Pointer to an array of vertices to transform.</p> </dd></param>\t\n            <param name=\"srcStride\"><dd>  <p>The size, in bytes, of a vertex in pSrcVertices.</p> </dd></param>\t\n            <param name=\"destVerticesRef\"><dd>  <p>Pointer to an array of vertices, which will be filled with the transformed vertices.</p> </dd></param>\t\n            <param name=\"destStride\"><dd>  <p>The size, in bytes, of a vertex in pDestVertices.</p> </dd></param>\t\n            <param name=\"boneMatricesRef\"><dd>  <p>An array of matrices that will be used to transform the points mapped to each bone, such that the vertices mapped to bone[i] will be transformed by pBoneMatrices[i].  This array will be used to transform the matrices only if the IsNormal value in pChannelDescs is set to <strong><see cref=\"F:SharpDX.Result.False\"/></strong>, otherwise pInverseTransposeBoneMatrices will be used.</p> </dd></param>\t\n            <param name=\"inverseTransposeBoneMatricesRef\"><dd>  <p>If this value is <strong><c>null</c></strong>, it will be set equal to pBoneMatrices.  This array of matrices will be used to transform the vertices only if the IsNormal value in pChannelDescs is set to <strong>TRUE</strong>, otherwise pBoneMatrices will be used.</p> </dd></param>\t\n            <param name=\"channelDescsRef\"><dd>  <p>Pointer to a <see cref=\"T:SharpDX.Direct3D10.SkinningChannel\"/> structure, which determines the member of the vertex decl the software skinning will be done on.</p> </dd></param>\t\n            <param name=\"numChannels\"><dd>  <p>The number of <see cref=\"T:SharpDX.Direct3D10.SkinningChannel\"/> structures in pChannelDescs.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the return value can be: E_INVALIDARG.</p></returns>\t\n            <remarks>\t\n            <p>Here is an example of how to use software skinning:</p><pre><code> //vertex definition\t\n            struct MyVertex\t\n            { <see cref=\"T:SharpDX.Vector3\"/> Position; <see cref=\"T:SharpDX.Vector2\"/> Weight; <see cref=\"T:SharpDX.Vector2\"/> TexCoord;\t\n            }; //create vertex data\t\n            const UINT numVertices = 16;\t\n            MyVertex vertices[numVertices] = {...};\t\n            MyVertex destVertices[numVertices]; //create bone matrices\t\n            <see cref=\"T:SharpDX.Matrix\"/> boneMatrices[2];\t\n            D3DXMatrixIdentity(&amp;boneMatrices[0]);\t\n            D3DXMatrixRotationX(&amp;boneMatrices[1], 3.14159f / 180.0f); //create bone indices and weights\t\n            UINT boneIndices[numVertices] = {...};\t\n            float boneWeights[2][numVertices] = {...}; //create skin info, populate it with bones and vertices, and then map them to each other\t\n            <see cref=\"T:SharpDX.Direct3D10.SkinInfo\"/> *pSkinInfo = <c>null</c>;\t\n            <see cref=\"M:SharpDX.Direct3D10.D3DX10.CreateSkinInfo(SharpDX.Direct3D10.SkinInfo@)\"/>(&amp;pSkinInfo);\t\n            pSkinInfo-&gt;AddBones(2);\t\n            pSkinInfo-&gt;AddVertices(numVertices);\t\n            pSkinInfo-&gt;AddBoneInfluences(0, numVertices, boneIndices, boneWeights[0]);\t\n            pSkinInfo-&gt;AddBoneInfluences(1, numVertices, boneIndices, boneWeights[1]); //create channel desc\t\n            <see cref=\"T:SharpDX.Direct3D10.SkinningChannel\"/> channelDesc;\t\n            channelDesc.SrcOffset = 0;\t\n            channelDesc.DestOffset = 0;\t\n            channelDesc.IsNormal = <see cref=\"F:SharpDX.Result.False\"/>; //do the skinning\t\n            pSkinInfo-&gt;DoSoftwareSkinning(0, numVertices, vertices, sizeof(MyVertex),  destVertices, sizeof(MyVertex),  boneMatrices, <c>null</c>,  &amp;channelDesc, 1);\t\n            </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10SkinInfo::DoSoftwareSkinning']/*\"/>\t\n            <msdn-id>bb173938</msdn-id>\t\n            <unmanaged>HRESULT ID3DX10SkinInfo::DoSoftwareSkinning([In] unsigned int StartVertex,[In] unsigned int VertexCount,[In] void* pSrcVertices,[In] unsigned int SrcStride,[In] void* pDestVertices,[In] unsigned int DestStride,[In] D3DXMATRIX* pBoneMatrices,[In, Optional] D3DXMATRIX* pInverseTransposeBoneMatrices,[In] D3DX10_SKINNING_CHANNEL* pChannelDescs,[In] unsigned int NumChannels)</unmanaged>\t\n            <unmanaged-short>ID3DX10SkinInfo::DoSoftwareSkinning</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.SkinInfo.GetBoneInfluences(System.Int32,System.Int32,System.Int32,System.Int32[]@,System.Single[]@)\">\n            <summary>\t\n            Get a list of vertices that a given bone influences and a list of the amount of influence that bone has on each vertex.\t\n            </summary>\t\n            <param name=\"boneIndex\">An index that specifies an existing bone. Must be between 0 and the value returned by <see cref=\"M:SharpDX.Direct3D10.SkinInfo.GetNumBones\" />. </param>\n            <param name=\"offset\">An offset from the top of the bone's list of influenced vertices. This must be between 0 and the value returned by <see cref=\"M:SharpDX.Direct3D10.SkinInfo.GetBoneInfluenceCount(System.Int32)\" />. </param>\n            <param name=\"count\">The number of indices and weights to retrieve.  Must be between 0 and the value returned by ID3DX10SkinInfo::GetBoneInfluenceCount. </param>\n            <param name=\"destIndicesRef\">A list of indices into the vertex buffer, each one representing a vertex influenced by the bone. These values correspond to the values in pDestWeights, such that pDestIndices[i] corresponds to pDestWeights[i]. </param>\n            <param name=\"destWeightsRef\">A list of the amount of influence the bone has on each vertex. These values correspond to the values in pDestIndices, such that pDestWeights[i] corresponds to pDestIndices[i].f </param>\n            <returns>If the method succeeds, the return value is S_OK. If the method fails, the return value can be: E_INVALIDARG or E_OUTOFMEMORY. </returns>\n            <unmanaged>HRESULT ID3DX10SkinInfo::GetBoneInfluences([None] int BoneIndex,[None] int Offset,[None] int Count,[Out, Buffer] int* pDestIndices,[Out, Buffer] float* pDestWeights)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.SkinInfo.NumVertices\">\n            <summary>\t\n            <p>Get the number of vertices in <see cref=\"T:SharpDX.Direct3D10.SkinInfo\"/>.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10SkinInfo::GetNumVertices']/*\"/>\t\n            <msdn-id>bb173945</msdn-id>\t\n            <unmanaged>GetNumVertices</unmanaged>\t\n            <unmanaged-short>GetNumVertices</unmanaged-short>\t\n            <unmanaged>unsigned int ID3DX10SkinInfo::GetNumVertices()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.SkinInfo.NumBones\">\n            <summary>\t\n            <p>Get the number of bones in <see cref=\"T:SharpDX.Direct3D10.SkinInfo\"/>.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10SkinInfo::GetNumBones']/*\"/>\t\n            <msdn-id>bb173944</msdn-id>\t\n            <unmanaged>GetNumBones</unmanaged>\t\n            <unmanaged-short>GetNumBones</unmanaged-short>\t\n            <unmanaged>unsigned int ID3DX10SkinInfo::GetNumBones()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.SkinInfo.MaxBoneInfluences\">\n            <summary>\t\n            <p>Get the number of vertices a bone can maximally influence.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10SkinInfo::GetMaxBoneInfluences']/*\"/>\t\n            <msdn-id>bb173943</msdn-id>\t\n            <unmanaged>GetMaxBoneInfluences</unmanaged>\t\n            <unmanaged-short>GetMaxBoneInfluences</unmanaged-short>\t\n            <unmanaged>unsigned int ID3DX10SkinInfo::GetMaxBoneInfluences()</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.Sprite\">\n            <summary>\t\n            <p>The <see cref=\"T:SharpDX.Direct3D10.Sprite\"/> interface provides a set of methods that simplify the process of drawing sprites using Microsoft Direct3D. This interface can operate on a set of many sprites.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The <see cref=\"T:SharpDX.Direct3D10.Sprite\"/> interface is obtained by calling the <strong><see cref=\"M:SharpDX.Direct3D10.D3DX10.CreateSprite(SharpDX.Direct3D10.Device,System.Int32,SharpDX.Direct3D10.Sprite)\"/></strong> function.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10Sprite']/*\"/>\t\n            <msdn-id>bb205601</msdn-id>\t\n            <unmanaged>ID3DX10Sprite</unmanaged>\t\n            <unmanaged-short>ID3DX10Sprite</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Sprite.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D10.Sprite\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Sprite.op_Explicit(System.IntPtr)~SharpDX.Direct3D10.Sprite\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D10.Sprite\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Sprite.Begin(SharpDX.Direct3D10.SpriteFlags)\">\n            <summary>\t\n            <p>Prepare a device for drawing sprites.</p>\t\n            </summary>\t\n            <param name=\"flags\"><dd>  <p>Flags that control how the sprites will be drawn. See <strong><see cref=\"T:SharpDX.Direct3D10.SpriteFlags\"/></strong>.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the return value can be one of the following: <see cref=\"!:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, <see cref=\"!:SharpDX.Direct3D9.ResultCode.OutOfVideoMemory\"/>, D3DXERR_INVALIDDATA, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>Every call to Begin must be matched with a call to <strong><see cref=\"M:SharpDX.Direct3D10.Sprite.End\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10Sprite::Begin']/*\"/>\t\n            <msdn-id>bb205602</msdn-id>\t\n            <unmanaged>HRESULT ID3DX10Sprite::Begin([In] D3DX10_SPRITE_FLAG flags)</unmanaged>\t\n            <unmanaged-short>ID3DX10Sprite::Begin</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Sprite.DrawSpritesBuffered(SharpDX.Direct3D10.SpriteInstance[],System.Int32)\">\n            <summary>\t\n            <p>Add an array of sprites to the batch of sprites to be rendered. This must be called in between calls to <strong><see cref=\"M:SharpDX.Direct3D10.Sprite.Begin(SharpDX.Direct3D10.SpriteFlags)\"/></strong> and <strong><see cref=\"M:SharpDX.Direct3D10.Sprite.End\"/></strong>, and <strong><see cref=\"M:SharpDX.Direct3D10.Sprite.Flush\"/></strong> must be called before End to send all of the batched sprites to the device for rendering. This draw method is most useful when drawing a small number of sprites that you want buffered into a large batch, such as fonts.</p>\t\n            </summary>\t\n            <param name=\"spritesRef\">No documentation.</param>\t\n            <param name=\"cSprites\">No documentation.</param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the return value can be one of the following: <see cref=\"!:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10Sprite::DrawSpritesBuffered']/*\"/>\t\n            <msdn-id>bb205603</msdn-id>\t\n            <unmanaged>HRESULT ID3DX10Sprite::DrawSpritesBuffered([In, Buffer] D3DX10_SPRITE* pSprites,[In] unsigned int cSprites)</unmanaged>\t\n            <unmanaged-short>ID3DX10Sprite::DrawSpritesBuffered</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Sprite.Flush\">\n            <summary>\t\n            <p>Force all batched sprites to be submitted to the device. Device states remain as they were after the last call to <see cref=\"M:SharpDX.Direct3D10.Sprite.Begin(SharpDX.Direct3D10.SpriteFlags)\"/>. The list of batched sprites is then cleared.</p>\t\n            </summary>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the following value will be returned: <see cref=\"!:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10Sprite::Flush']/*\"/>\t\n            <msdn-id>bb205606</msdn-id>\t\n            <unmanaged>HRESULT ID3DX10Sprite::Flush()</unmanaged>\t\n            <unmanaged-short>ID3DX10Sprite::Flush</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Sprite.DrawSpritesImmediate(SharpDX.Direct3D10.SpriteInstance[],System.Int32,System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Draw an array of sprites. This will immediately send the sprites to the device for rendering, which is different from <strong><see cref=\"M:SharpDX.Direct3D10.Sprite.DrawSpritesBuffered(SharpDX.Direct3D10.SpriteInstance[],System.Int32)\"/></strong> which only adds an array of sprites to a batch of sprites to be rendered when <strong><see cref=\"M:SharpDX.Direct3D10.Sprite.Flush\"/></strong> is called. This draw method is most useful when drawing a large number of sprites that have already been sorted on the CPU (or do not need to be sorted), such as in a particle system. This must be called in between calls to <strong><see cref=\"M:SharpDX.Direct3D10.Sprite.Begin(SharpDX.Direct3D10.SpriteFlags)\"/></strong> and <strong><see cref=\"M:SharpDX.Direct3D10.Sprite.End\"/></strong>.</p>\t\n            </summary>\t\n            <param name=\"spritesRef\">No documentation.</param>\t\n            <param name=\"cSprites\">No documentation.</param>\t\n            <param name=\"cbSprite\">No documentation.</param>\t\n            <param name=\"flags\">No documentation.</param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the return value can be one of the following: <see cref=\"!:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10Sprite::DrawSpritesImmediate']/*\"/>\t\n            <msdn-id>Bb205604</msdn-id>\t\n            <unmanaged>HRESULT ID3DX10Sprite::DrawSpritesImmediate([In, Buffer] D3DX10_SPRITE* pSprites,[In] unsigned int cSprites,[In] unsigned int cbSprite,[In] unsigned int flags)</unmanaged>\t\n            <unmanaged-short>ID3DX10Sprite::DrawSpritesImmediate</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Sprite.End\">\n            <summary>\t\n            <p>Call this after <see cref=\"M:SharpDX.Direct3D10.Sprite.Flush\"/>. If  <see cref=\"F:SharpDX.Direct3D10.SpriteFlags.SaveState\"/> was specified when <see cref=\"M:SharpDX.Direct3D10.Sprite.Begin(SharpDX.Direct3D10.SpriteFlags)\"/> was called, this API will restore the device state to how it was before <see cref=\"M:SharpDX.Direct3D10.Sprite.Begin(SharpDX.Direct3D10.SpriteFlags)\"/> was called.</p>\t\n            </summary>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the following value will be returned: <see cref=\"!:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10Sprite::End']/*\"/>\t\n            <msdn-id>bb205605</msdn-id>\t\n            <unmanaged>HRESULT ID3DX10Sprite::End()</unmanaged>\t\n            <unmanaged-short>ID3DX10Sprite::End</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Sprite.GetViewTransform(SharpDX.Matrix@)\">\n            <summary>\t\n            <p>Get the view transform that applies to all sprites.</p>\t\n            </summary>\t\n            <param name=\"viewTransformRef\"><dd>  <p>Pointer to a <strong>D3DX10MATRIX</strong> that will be set to the transform of the sprite from the original world space.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the following value will be returned: <see cref=\"!:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10Sprite::GetViewTransform']/*\"/>\t\n            <msdn-id>bb205609</msdn-id>\t\n            <unmanaged>HRESULT ID3DX10Sprite::GetViewTransform([Out] D3DXMATRIX* pViewTransform)</unmanaged>\t\n            <unmanaged-short>ID3DX10Sprite::GetViewTransform</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Sprite.SetViewTransform(SharpDX.Matrix@)\">\n            <summary>\t\n            <p>Set the view transform that applies to all sprites.</p>\t\n            </summary>\t\n            <param name=\"viewTransformRef\"><dd>  <p>Pointer to a <see cref=\"T:SharpDX.Matrix\"/> that contains a transform of the sprite from the original world space. Use this transform to scale, rotate, or transform the sprite.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the following value will be returned: <see cref=\"!:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10Sprite::SetViewTransform']/*\"/>\t\n            <msdn-id>bb205611</msdn-id>\t\n            <unmanaged>HRESULT ID3DX10Sprite::SetViewTransform([In] D3DXMATRIX* pViewTransform)</unmanaged>\t\n            <unmanaged-short>ID3DX10Sprite::SetViewTransform</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Sprite.GetProjectionTransform(SharpDX.Matrix@)\">\n            <summary>\t\n            <p>Get the sprite projection matrix that is applied to all sprites.</p>\t\n            </summary>\t\n            <param name=\"projectionTransformRef\"><dd>  <p>Pointer to a <strong>D3DX10MATRIX</strong> that will be set to the sprite's projection matrix.</p> </dd></param>\t\n            <returns><p>The return value is one of the values listed in Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10Sprite::GetProjectionTransform']/*\"/>\t\n            <msdn-id>bb205608</msdn-id>\t\n            <unmanaged>HRESULT ID3DX10Sprite::GetProjectionTransform([Out] D3DXMATRIX* pProjectionTransform)</unmanaged>\t\n            <unmanaged-short>ID3DX10Sprite::GetProjectionTransform</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Sprite.SetProjectionTransform(SharpDX.Matrix@)\">\n            <summary>\t\n            <p>Set the projection matrix for all sprites.</p>\t\n            </summary>\t\n            <param name=\"projectionTransformRef\"><dd>  <p>The projection matrix to be used on all sprites.</p> </dd></param>\t\n            <returns><p>The return value is one of the values listed in Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10Sprite::SetProjectionTransform']/*\"/>\t\n            <msdn-id>bb205610</msdn-id>\t\n            <unmanaged>HRESULT ID3DX10Sprite::SetProjectionTransform([In] D3DXMATRIX* pProjectionTransform)</unmanaged>\t\n            <unmanaged-short>ID3DX10Sprite::SetProjectionTransform</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Sprite.GetDevice(SharpDX.Direct3D10.Device@)\">\n            <summary>\t\n            <p>Retrieve the device associated with the sprite object.</p>\t\n            </summary>\t\n            <param name=\"deviceOut\"><dd>  <p>Address of a reference to an <see cref=\"T:SharpDX.Direct3D10.Device\"/> interface, representing the Direct3D device object associated with the sprite object.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the following value will be returned: <see cref=\"!:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>Calling this method will increase the internal reference count on the <see cref=\"T:SharpDX.Direct3D10.Device\"/> interface.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10Sprite::GetDevice']/*\"/>\t\n            <msdn-id>bb205607</msdn-id>\t\n            <unmanaged>HRESULT ID3DX10Sprite::GetDevice([Out] ID3D10Device** ppDevice)</unmanaged>\t\n            <unmanaged-short>ID3DX10Sprite::GetDevice</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Sprite.#ctor(SharpDX.Direct3D10.Device,System.Int32)\">\n            <summary>\t\n            Create a sprite for drawing a 2D texture.\t\n            </summary>\t\n            <param name=\"device\">A reference to the device (see <see cref=\"T:SharpDX.Direct3D10.Device\"/>) that will draw the sprite. </param>\n            <param name=\"bufferSize\">The size of the vertex buffer, in number of sprites, that will be sent to the device when <see cref=\"M:SharpDX.Direct3D10.Sprite.Flush\"/> or <see cref=\"M:SharpDX.Direct3D10.Sprite.DrawSpritesBuffered(SharpDX.Direct3D10.SpriteInstance[])\"/> is called. This should be a small number if you know you will be rendering a small number of sprites at a time (to save memory) and a large number if you know you will be rendering a large number of sprites at a time. The maximum value is 4096. If 0 is specified, the vertex buffer size will automatically be set to 4096. </param>\n            <unmanaged>HRESULT D3DX10CreateSprite([None] ID3D10Device* pDevice,[None] int cDeviceBufferSize,[None] LPD3DX10SPRITE* ppSprite)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Sprite.DrawSpritesBuffered(SharpDX.Direct3D10.SpriteInstance[])\">\n            <summary>\t\n            Add an array of sprites to the batch of sprites to be rendered. This must be called in between calls to <see cref=\"M:SharpDX.Direct3D10.Sprite.Begin(SharpDX.Direct3D10.SpriteFlags)\"/> and <see cref=\"M:SharpDX.Direct3D10.Sprite.End\"/>, and <see cref=\"M:SharpDX.Direct3D10.Sprite.Flush\"/> must be called before End to send all of the batched sprites to the device for rendering. This draw method is most useful when drawing a small number of sprites that you want buffered into a large batch, such as fonts.\t\n            </summary>\t\n            <param name=\"sprites\">The array of sprites to draw. See <see cref=\"T:SharpDX.Direct3D10.SpriteInstance\"/>. </param>\n            <returns>If the method succeeds, the return value is S_OK. If the method fails, the return value can be one of the following: D3DERR_INVALIDCALL, D3DXERR_INVALIDDATA. </returns>\n            <unmanaged>HRESULT ID3DX10Sprite::DrawSpritesBuffered([None] D3DX10_SPRITE* pSprites,[None] int cSprites)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Sprite.DrawSpritesImmediate(SharpDX.Direct3D10.SpriteInstance[])\">\n            <summary>\t\n            Draw an array of sprites. This will immediately send the sprites to the device for rendering, which is different from <see cref=\"M:SharpDX.Direct3D10.Sprite.DrawSpritesBuffered(SharpDX.Direct3D10.SpriteInstance[])\"/> which only adds an array of sprites to a batch of sprites to be rendered when <see cref=\"M:SharpDX.Direct3D10.Sprite.Flush\"/> is called. This draw method is most useful when drawing a large number of sprites that have already been sorted on the CPU (or do not need to be sorted), such as in a particle system. This must be called in between calls to <see cref=\"M:SharpDX.Direct3D10.Sprite.Begin(SharpDX.Direct3D10.SpriteFlags)\"/> and <see cref=\"M:SharpDX.Direct3D10.Sprite.End\"/>.\t\n            </summary>\t\n            <param name=\"sprites\">The array of sprites to draw. See <see cref=\"T:SharpDX.Direct3D10.SpriteInstance\"/>. </param>\n            <returns>If the method succeeds, the return value is S_OK. If the method fails, the return value can be one of the following: D3DERR_INVALIDCALL, D3DXERR_INVALIDDATA. </returns>\n            <unmanaged>HRESULT ID3DX10Sprite::DrawSpritesImmediate([In, Buffer] D3DX10_SPRITE* pSprites,[None] int cSprites,[None] int cbSprite,[None] int flags)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.Sprite.ViewTransform\">\n            <summary>\t\n            <p>Get or sets the view transform that applies to all sprites.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10Sprite::GetViewTransform']/*\"/>\t\n            <msdn-id>bb205609</msdn-id>\t\n            <unmanaged>GetViewTransform / SetViewTransform</unmanaged>\t\n            <unmanaged-short>GetViewTransform</unmanaged-short>\t\n            <unmanaged>HRESULT ID3DX10Sprite::GetViewTransform([Out] D3DXMATRIX* pViewTransform)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.Sprite.ProjectionTransform\">\n            <summary>\t\n            <p>Get or sets the sprite projection matrix that is applied to all sprites.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10Sprite::GetProjectionTransform']/*\"/>\t\n            <msdn-id>bb205608</msdn-id>\t\n            <unmanaged>GetProjectionTransform / SetProjectionTransform</unmanaged>\t\n            <unmanaged-short>GetProjectionTransform</unmanaged-short>\t\n            <unmanaged>HRESULT ID3DX10Sprite::GetProjectionTransform([Out] D3DXMATRIX* pProjectionTransform)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.Sprite.Device\">\n            <summary>\t\n            <p>Retrieve the device associated with the sprite object.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Calling this method will increase the internal reference count on the <see cref=\"T:SharpDX.Direct3D10.Device\"/> interface.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX10Sprite::GetDevice']/*\"/>\t\n            <msdn-id>bb205607</msdn-id>\t\n            <unmanaged>GetDevice</unmanaged>\t\n            <unmanaged-short>GetDevice</unmanaged-short>\t\n            <unmanaged>HRESULT ID3DX10Sprite::GetDevice([Out] ID3D10Device** ppDevice)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.StateBlock\">\n            <summary>\t\n            <p>A state-block interface encapsulates render states.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>To create a state-block interface, call <strong><see cref=\"M:SharpDX.Direct3D10.D3D10.CreateStateBlock(SharpDX.Direct3D10.Device,SharpDX.Direct3D10.StateBlockMask@,SharpDX.Direct3D10.StateBlock)\"/></strong>.</p><p>This interface can be used to save and restore pipeline state. It can also be used to capture the current state.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10StateBlock']/*\"/>\t\n            <msdn-id>bb173856</msdn-id>\t\n            <unmanaged>ID3D10StateBlock</unmanaged>\t\n            <unmanaged-short>ID3D10StateBlock</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.StateBlock.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D10.StateBlock\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.StateBlock.op_Explicit(System.IntPtr)~SharpDX.Direct3D10.StateBlock\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D10.StateBlock\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.StateBlock.Capture\">\n            <summary>\t\n            <p>Capture the current value of states that are included in a stateblock.</p>\t\n            </summary>\t\n            <returns><p>Returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>Capture captures current values for states within an existing state block. It does not capture the entire state of the device. Creating an empty stateblock and calling Capture does nothing if no states have been set.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10StateBlock::Capture']/*\"/>\t\n            <msdn-id>bb173858</msdn-id>\t\n            <unmanaged>HRESULT ID3D10StateBlock::Capture()</unmanaged>\t\n            <unmanaged-short>ID3D10StateBlock::Capture</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.StateBlock.Apply\">\n            <summary>\t\n            <p>Apply the state block to the current device state.</p>\t\n            </summary>\t\n            <returns><p>Returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10StateBlock::Apply']/*\"/>\t\n            <msdn-id>bb173857</msdn-id>\t\n            <unmanaged>HRESULT ID3D10StateBlock::Apply()</unmanaged>\t\n            <unmanaged-short>ID3D10StateBlock::Apply</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.StateBlock.ReleaseAllDeviceObjects\">\n            <summary>\t\n            <p>Release all references to device objects.</p>\t\n            </summary>\t\n            <returns><p>Returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>Each time you return a reference to an interface (by calling <strong><see cref=\"M:SharpDX.Direct3D10.StateBlock.GetDevice(SharpDX.Direct3D10.Device@)\"/></strong>), the internal reference count is incremented; when you are finished using a stateblock, call this method to release all references and avoid a memory leak.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10StateBlock::ReleaseAllDeviceObjects']/*\"/>\t\n            <msdn-id>cc627127</msdn-id>\t\n            <unmanaged>HRESULT ID3D10StateBlock::ReleaseAllDeviceObjects()</unmanaged>\t\n            <unmanaged-short>ID3D10StateBlock::ReleaseAllDeviceObjects</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.StateBlock.GetDevice(SharpDX.Direct3D10.Device@)\">\n            <summary>\t\n            <p>Get the device.</p>\t\n            </summary>\t\n            <param name=\"deviceOut\"><dd>  <p>Pointer to the <see cref=\"T:SharpDX.Direct3D10.Device\"/> interface that is returned.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10StateBlock::GetDevice']/*\"/>\t\n            <msdn-id>bb173859</msdn-id>\t\n            <unmanaged>HRESULT ID3D10StateBlock::GetDevice([Out] ID3D10Device** ppDevice)</unmanaged>\t\n            <unmanaged-short>ID3D10StateBlock::GetDevice</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.StateBlock.#ctor(SharpDX.Direct3D10.Device,SharpDX.Direct3D10.StateBlockMask)\">\n            <summary>\t\n            Create a state block.\t\n            </summary>\t\n            <remarks>\t\n            A state block is a collection of device state, and is used for saving and restoring device state. Use a state-block mask to enable subsets of state for saving and restoring. The <see cref=\"T:SharpDX.Direct3D10.StateBlockMask\"/> structure can be filled manually or by using any of the D3D10StateBlockMaskXXX APIs. A state block mask can also be obtained by calling <see cref=\"M:SharpDX.Direct3D10.EffectTechnique.ComputeStateBlockMask(SharpDX.Direct3D10.StateBlockMask@)\"/> or <see cref=\"M:SharpDX.Direct3D10.EffectPass.ComputeStateBlockMask(SharpDX.Direct3D10.StateBlockMask@)\"/>.   Differences between Direct3D 9 and Direct3D 10: In Direct3D 10, a state block object does not contain any valid information about the state of the device until <see cref=\"M:SharpDX.Direct3D10.StateBlock.Capture\"/> is called. In Direct3D 9, state is saved in a state block object, when it is created.   ? \t\n            </remarks>\t\n            <param name=\"device\">The device for which the state block will be created. </param>\n            <param name=\"mask\">Indicates which parts of the device state will be captured when calling <see cref=\"M:SharpDX.Direct3D10.StateBlock.Capture\"/> and reapplied when calling <see cref=\"M:SharpDX.Direct3D10.StateBlock.Apply\"/>. See remarks. </param>\n            <unmanaged>HRESULT D3D10CreateStateBlock([None] ID3D10Device* pDevice,[None] D3D10_STATE_BLOCK_MASK* pStateBlockMask,[None] ID3D10StateBlock** ppStateBlock)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.StateBlock.Device\">\n            <summary>\t\n            <p>Get the device.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10StateBlock::GetDevice']/*\"/>\t\n            <msdn-id>bb173859</msdn-id>\t\n            <unmanaged>GetDevice</unmanaged>\t\n            <unmanaged-short>GetDevice</unmanaged-short>\t\n            <unmanaged>HRESULT ID3D10StateBlock::GetDevice([Out] ID3D10Device** ppDevice)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.SwitchToRef\">\n            <summary>\t\n            <p>Get a boolean value that indicates the type of device being used.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>A hardware device is commonly referred to as a HAL device, which stands for a hardware accelerated device. This means that the pipeline is rendering all of the pipeline commands in hardware, using the GPU. Operating the pipeline with a HAL device gives the best performance generally, but it can be more difficult to debug since resources exist on the GPU instead of the CPU.</p><p>A software device implements rendering in software using the CPU with no hardware acceleration. A software device is commonly referred to as a reference device or REF device. Because a REF device implements rendering on the CPU, it is generally slower, but is easier to debug since it allows access to resources.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10SwitchToRef']/*\"/>\t\n            <msdn-id>bb173861</msdn-id>\t\n            <unmanaged>ID3D10SwitchToRef</unmanaged>\t\n            <unmanaged-short>ID3D10SwitchToRef</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.SwitchToRef.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D10.SwitchToRef\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.SwitchToRef.op_Explicit(System.IntPtr)~SharpDX.Direct3D10.SwitchToRef\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D10.SwitchToRef\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.SwitchToRef.SetUseRef(SharpDX.Bool)\">\n            <summary>\t\n            <p>Switch between a hardware and a software device.</p>\t\n            </summary>\t\n            <param name=\"useRef\"><dd>  <p>A boolean value. Set this to <strong>TRUE</strong> to change to a software device, set this to <strong><see cref=\"F:SharpDX.Result.False\"/></strong> to change to a hardware device.</p> </dd></param>\t\n            <returns><p>The previous value of <em>UseRef</em>.</p></returns>\t\n            <remarks>\t\n            <p>This API will fail if the device is not switchable; you must have created a device that is switchable by specifying the <see cref=\"F:SharpDX.Direct3D10.DeviceCreationFlags.SwitchToRef\"/> flag during device creation (when calling <strong><see cref=\"M:SharpDX.Direct3D10.D3D10.CreateDevice(SharpDX.DXGI.Adapter,SharpDX.Direct3D10.DriverType,System.IntPtr,SharpDX.Direct3D10.DeviceCreationFlags,System.Int32,SharpDX.Direct3D10.Device)\"/></strong>).</p><p>Switching from a software device to a hardware device clears all cached objects from system memory. Switching from a hardware device to a software device causes resources to be downloaded to system memory.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10SwitchToRef::SetUseRef']/*\"/>\t\n            <msdn-id>bb173862</msdn-id>\t\n            <unmanaged>BOOL ID3D10SwitchToRef::SetUseRef([In] BOOL UseRef)</unmanaged>\t\n            <unmanaged-short>ID3D10SwitchToRef::SetUseRef</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.SwitchToRef.GetUseRef\">\n            <summary>\t\n            <p>Get a boolean value that indicates the type of device being used.</p>\t\n            </summary>\t\n            <returns><p><strong>TRUE</strong> if the device is a software device, <strong><see cref=\"F:SharpDX.Result.False\"/></strong> if the device is a hardware device. See remarks.</p></returns>\t\n            <remarks>\t\n            <p>A hardware device is commonly referred to as a HAL device, which stands for a hardware accelerated device. This means that the pipeline is rendering all of the pipeline commands in hardware, using the GPU. Operating the pipeline with a HAL device gives the best performance generally, but it can be more difficult to debug since resources exist on the GPU instead of the CPU.</p><p>A software device implements rendering in software using the CPU with no hardware acceleration. A software device is commonly referred to as a reference device or REF device. Because a REF device implements rendering on the CPU, it is generally slower, but is easier to debug since it allows access to resources.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10SwitchToRef::GetUseRef']/*\"/>\t\n            <msdn-id>bb173861</msdn-id>\t\n            <unmanaged>BOOL ID3D10SwitchToRef::GetUseRef()</unmanaged>\t\n            <unmanaged-short>ID3D10SwitchToRef::GetUseRef</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.SwitchToRef.UseRef\">\n            <summary>\t\n            <p>Get a boolean value that indicates the type of device being used.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>A hardware device is commonly referred to as a HAL device, which stands for a hardware accelerated device. This means that the pipeline is rendering all of the pipeline commands in hardware, using the GPU. Operating the pipeline with a HAL device gives the best performance generally, but it can be more difficult to debug since resources exist on the GPU instead of the CPU.</p><p>A software device implements rendering in software using the CPU with no hardware acceleration. A software device is commonly referred to as a reference device or REF device. Because a REF device implements rendering on the CPU, it is generally slower, but is easier to debug since it allows access to resources.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10SwitchToRef::GetUseRef']/*\"/>\t\n            <msdn-id>bb173861</msdn-id>\t\n            <unmanaged>GetUseRef</unmanaged>\t\n            <unmanaged-short>GetUseRef</unmanaged-short>\t\n            <unmanaged>BOOL ID3D10SwitchToRef::GetUseRef()</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.Texture1D\">\n            <summary>\t\n            <p>A 1D texture interface accesses texel data, which is structured memory.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>To create an empty 1D texture, call <strong><see cref=\"M:SharpDX.Direct3D10.Device.CreateTexture1D(SharpDX.Direct3D10.Texture1DDescription@,SharpDX.DataBox[],SharpDX.Direct3D10.Texture1D)\"/></strong>. For more details on creating and loading textures, see Creating Texture Resources.</p><p>Textures cannot be bound directly to the pipeline; instead, a view must be created and bound. Using a view, texture data can be interpreted at run time within certain restrictions. To use the texture as a render target or depth-stencil resource, call <strong><see cref=\"M:SharpDX.Direct3D10.Device.CreateRenderTargetView(SharpDX.Direct3D10.Resource,System.Nullable{SharpDX.Direct3D10.RenderTargetViewDescription},SharpDX.Direct3D10.RenderTargetView)\"/></strong>, and <strong><see cref=\"M:SharpDX.Direct3D10.Device.CreateDepthStencilView(SharpDX.Direct3D10.Resource,System.Nullable{SharpDX.Direct3D10.DepthStencilViewDescription},SharpDX.Direct3D10.DepthStencilView)\"/></strong>, respectively. To use the texture as an input to a shader, create a  by calling <strong><see cref=\"M:SharpDX.Direct3D10.Device.CreateShaderResourceView(SharpDX.Direct3D10.Resource,System.Nullable{SharpDX.Direct3D10.ShaderResourceViewDescription},SharpDX.Direct3D10.ShaderResourceView)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Texture1D']/*\"/>\t\n            <msdn-id>bb173863</msdn-id>\t\n            <unmanaged>ID3D10Texture1D</unmanaged>\t\n            <unmanaged-short>ID3D10Texture1D</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Texture1D.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D10.Texture1D\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Texture1D.op_Explicit(System.IntPtr)~SharpDX.Direct3D10.Texture1D\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D10.Texture1D\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Texture1D.Map(System.Int32,SharpDX.Direct3D10.MapMode,SharpDX.Direct3D10.MapFlags,System.IntPtr@)\">\n            <summary>\t\n            <p>Get a reference to the data contained in a subresource, and deny the GPU access to that subresource.</p>\t\n            </summary>\t\n            <param name=\"subresource\"><dd>  <p>Index number of the subresource. See <strong>D3D10CalcSubresource</strong> for more details.</p> </dd></param>\t\n            <param name=\"mapType\"><dd>  <p>Specifies the CPU's read and write permissions for a resource. For possible values, see <strong><see cref=\"T:SharpDX.Direct3D10.MapMode\"/></strong>.</p> </dd></param>\t\n            <param name=\"mapFlags\"><dd>  <p> <strong>Flag</strong> that specifies what the CPU should do when the GPU is busy. This flag is optional.</p> </dd></param>\t\n            <param name=\"dataOut\"><dd>  <p>Pointer to the texture resource data.</p> </dd></param>\t\n            <returns><p>If this function succeeds, it returns <see cref=\"F:SharpDX.Result.Ok\"/>. For other restrictions, and a listing of error values that can be returned by any of the <strong>Map</strong> methods, see Remarks.</p></returns>\t\n            <remarks>\t\n            <p>Mapping a texture enables the CPU to directly access the underlying data in the subresource of a texture. For the method to succeed, the texture being mapped must be created with the appropriate flags (see <strong><see cref=\"T:SharpDX.Direct3D10.CpuAccessFlags\"/></strong>), and its specified usage (see <strong><see cref=\"T:SharpDX.Direct3D10.ResourceUsage\"/></strong>) must be either <see cref=\"F:SharpDX.Direct3D10.ResourceUsage.Dynamic\"/> or <see cref=\"F:SharpDX.Direct3D10.ResourceUsage.Staging\"/>.</p><p>Common failures of <strong>Map</strong> methods are indicated by the following return values:</p><p></p><table> <tr><th>Item</th><th>Description</th></tr> <tr><td> <p><see cref=\"F:SharpDX.DXGI.ResultCode.WasStillDrawing\"/></p> </td><td> <p>If <em>MapFlags</em> specifies <see cref=\"F:SharpDX.Direct3D10.MapFlags.DoNotWait\"/> and the GPU is not yet finished with the resource, <strong>Map</strong> returns <see cref=\"F:SharpDX.DXGI.ResultCode.WasStillDrawing\"/>.</p> </td></tr> <tr><td> <p><see cref=\"F:SharpDX.DXGI.ResultCode.DeviceRemoved\"/></p> </td><td> <p><strong>Map</strong> returns <see cref=\"F:SharpDX.DXGI.ResultCode.DeviceRemoved\"/> if <em>MapType</em> allows any CPU read access and the video card has been removed.</p> </td></tr> </table><p>?</p><p>For more information about the preceding return values, see DXGI_ERROR.</p><p><strong>Map</strong> has the following restrictions:</p><ul> <li>A single subresource cannot be mapped multiple times; in other words, do not call <strong>Map</strong> on a subresource that is already mapped.</li> <li>Any subresource that is bound to the pipeline must be unmapped before any render operation (that is, before <strong><see cref=\"M:SharpDX.Direct3D10.Device.Draw(System.Int32,System.Int32)\"/></strong>) can be executed.</li> </ul><p>Applications must cast the void pData reference to the appropriate type to meaningfully access the underlying subresource data. For example, the following code demonstrates how to read each texel of a 1D subresource. It is assumed that the texture was created using <strong><see cref=\"F:SharpDX.DXGI.Format.R32G32B32A32_Float\"/></strong> and that pData is the reference to the texture resource data output from a successful call to this method.</p><pre><code> FLOAT* pTexels = (FLOAT*)pData;\t\n            for( UINT col = 0; col &lt; width; col++ )\t\n            { pTexels[col*4 + 0]; // Alpha pTexels[col*4 + 1]; // Blue pTexels[col*4 + 2]; // Green pTexels[col*4 + 3]; // Red\t\n            }\t\n            </code></pre><table> <tr><td> <p>Differences between Direct3D 9 and Direct3D 10:</p> <p><strong>Map</strong> in Direct3D 10 is analogous to resource Lock in Direct3D 9.</p> </td></tr> </table><p>?</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Texture1D::Map']/*\"/>\t\n            <msdn-id>bb173865</msdn-id>\t\n            <unmanaged>HRESULT ID3D10Texture1D::Map([In] unsigned int Subresource,[In] D3D10_MAP MapType,[In] D3D10_MAP_FLAG MapFlags,[Out] void** ppData)</unmanaged>\t\n            <unmanaged-short>ID3D10Texture1D::Map</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Texture1D.Unmap(System.Int32)\">\n            <summary>\t\n            <p>Invalidate the reference to a resource that was retrieved by <strong><see cref=\"M:SharpDX.Direct3D10.Texture1D.Map(System.Int32,SharpDX.Direct3D10.MapMode,SharpDX.Direct3D10.MapFlags,System.IntPtr@)\"/></strong>, and re-enable the GPU's access to that resource.</p>\t\n            </summary>\t\n            <param name=\"subresource\">No documentation.</param>\t\n            <remarks>\t\n            <p>A subresource must be mapped before Unmap is called.</p><table> <tr><td> <p>Differences between Direct3D 9 and Direct3D 10:</p> <p>Unmap in Direct3D 10 is analogous to resource Unlock in Direct3D 9.</p> </td></tr> </table><p>?</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Texture1D::Unmap']/*\"/>\t\n            <msdn-id>bb173866</msdn-id>\t\n            <unmanaged>void ID3D10Texture1D::Unmap([In] unsigned int Subresource)</unmanaged>\t\n            <unmanaged-short>ID3D10Texture1D::Unmap</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Texture1D.GetDescription(SharpDX.Direct3D10.Texture1DDescription@)\">\n            <summary>\t\n            <p>Get the properties of the texture resource.</p>\t\n            </summary>\t\n            <param name=\"descRef\"><dd>  <p>Pointer to a resource description (see <strong><see cref=\"T:SharpDX.Direct3D10.Texture1DDescription\"/></strong>).</p> </dd></param>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Texture1D::GetDesc']/*\"/>\t\n            <msdn-id>bb173864</msdn-id>\t\n            <unmanaged>void ID3D10Texture1D::GetDesc([Out] D3D10_TEXTURE1D_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>ID3D10Texture1D::GetDesc</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Texture1D.#ctor(SharpDX.Direct3D10.Device,SharpDX.Direct3D10.Texture1DDescription)\">\n            <summary>\n              Initializes a new instance of the <see cref = \"T:SharpDX.Direct3D10.Texture1D\" /> class.\n            </summary>\n            <param name = \"device\">The device with which to associate the texture.</param>\n            <param name = \"description\">The description of the texture.</param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Texture1D.#ctor(SharpDX.Direct3D10.Device,SharpDX.Direct3D10.Texture1DDescription,SharpDX.DataStream)\">\n            <summary>\n              Initializes a new instance of the <see cref = \"T:SharpDX.Direct3D10.Texture1D\" /> class.\n            </summary>\n            <param name = \"device\">The device with which to associate the texture.</param>\n            <param name = \"description\">The description of the texture.</param>\n            <param name = \"data\">The initial texture data.</param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Texture1D.#ctor(SharpDX.Direct3D10.Device,SharpDX.Direct3D10.Texture1DDescription,SharpDX.DataStream[])\">\n            <summary>\n              Initializes a new instance of the <see cref = \"T:SharpDX.Direct3D10.Texture1D\" /> class.\n            </summary>\n            <param name = \"device\">The device with which to associate the texture.</param>\n            <param name = \"description\">The description of the texture.</param>\n            <param name = \"data\">An array of initial texture data for each subresource.</param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Texture1D.Map(System.Int32,SharpDX.Direct3D10.MapMode,SharpDX.Direct3D10.MapFlags)\">\n            <summary>\n            Maps the texture, providing CPU access to its contents.\n            </summary>\n            <param name=\"mipSlice\">The mip slice to map.</param>\n            <param name=\"mode\">The IO operations to enable on the CPU.</param>\n            <param name=\"flags\">Flags indicating how the CPU should respond when the GPU is busy.</param>\n            <returns>A data stream containing the mapped data. This data stream is invalidated\n            when the buffer is unmapped.</returns>\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.Texture1D.Description\">\n            <summary>\t\n            <p>Get the properties of the texture resource.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Texture1D::GetDesc']/*\"/>\t\n            <msdn-id>bb173864</msdn-id>\t\n            <unmanaged>GetDesc</unmanaged>\t\n            <unmanaged-short>GetDesc</unmanaged-short>\t\n            <unmanaged>void ID3D10Texture1D::GetDesc([Out] D3D10_TEXTURE1D_DESC* pDesc)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.Texture2D\">\n            <summary>\t\n            <p>A 2D texture interface manages texel data, which is structured memory.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>To create an empty Texture2D resource, call <strong><see cref=\"M:SharpDX.Direct3D10.Device.CreateTexture2D(SharpDX.Direct3D10.Texture2DDescription@,SharpDX.DataBox[],SharpDX.Direct3D10.Texture2D)\"/></strong>. For more details on creating and loading textures, see Creating Texture Resources.</p><p>Textures cannot be bound directly to the pipeline; instead, a view must be created and bound. Using a view, texture data can be interpreted at run time within certain restrictions. To use the texture as a render target or depth-stencil resource, call <strong><see cref=\"M:SharpDX.Direct3D10.Device.CreateRenderTargetView(SharpDX.Direct3D10.Resource,System.Nullable{SharpDX.Direct3D10.RenderTargetViewDescription},SharpDX.Direct3D10.RenderTargetView)\"/></strong>, and <strong><see cref=\"M:SharpDX.Direct3D10.Device.CreateDepthStencilView(SharpDX.Direct3D10.Resource,System.Nullable{SharpDX.Direct3D10.DepthStencilViewDescription},SharpDX.Direct3D10.DepthStencilView)\"/></strong>, respectively. To use the texture as an input to a shader, create a  by calling <strong><see cref=\"M:SharpDX.Direct3D10.Device.CreateShaderResourceView(SharpDX.Direct3D10.Resource,System.Nullable{SharpDX.Direct3D10.ShaderResourceViewDescription},SharpDX.Direct3D10.ShaderResourceView)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Texture2D']/*\"/>\t\n            <msdn-id>bb173867</msdn-id>\t\n            <unmanaged>ID3D10Texture2D</unmanaged>\t\n            <unmanaged-short>ID3D10Texture2D</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Texture2D.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D10.Texture2D\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Texture2D.op_Explicit(System.IntPtr)~SharpDX.Direct3D10.Texture2D\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D10.Texture2D\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Texture2D.Map(System.Int32,SharpDX.Direct3D10.MapMode,SharpDX.Direct3D10.MapFlags,SharpDX.DataRectangle@)\">\n            <summary>\t\n            <p>Get a reference to the data contained in a subresource, and deny GPU access to that subresource.</p>\t\n            </summary>\t\n            <param name=\"subresource\"><dd>  <p>Index number of the subresource. See <strong>D3D10CalcSubresource</strong> for more details.</p> </dd></param>\t\n            <param name=\"mapType\"><dd>  <p>Integer that specifies the CPU's read and write permissions for a resource. For possible values, see <strong><see cref=\"T:SharpDX.Direct3D10.MapMode\"/></strong>.</p> </dd></param>\t\n            <param name=\"mapFlags\"><dd>  <p> <strong>Flag</strong> that specifies what the CPU should do when the GPU is busy. This flag is optional.</p> </dd></param>\t\n            <param name=\"mappedTex2DRef\"><dd>  <p>Pointer to a structure (<strong><see cref=\"T:SharpDX.DataRectangle\"/></strong>) that is filled in by the function and contains a reference to the resource data.</p> </dd></param>\t\n            <returns><p>If this function succeeds, it returns <see cref=\"F:SharpDX.Result.Ok\"/>.</p><p>All of the Map methods have identical return values and operating restrictions. These are listed in the remarks section of <strong><see cref=\"M:SharpDX.Direct3D10.Texture1D.Map(System.Int32,SharpDX.Direct3D10.MapMode,SharpDX.Direct3D10.MapFlags,System.IntPtr@)\"/></strong>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Texture2D::Map']/*\"/>\t\n            <msdn-id>bb173869</msdn-id>\t\n            <unmanaged>HRESULT ID3D10Texture2D::Map([In] unsigned int Subresource,[In] D3D10_MAP MapType,[In] D3D10_MAP_FLAG MapFlags,[Out] D3D10_MAPPED_TEXTURE2D* pMappedTex2D)</unmanaged>\t\n            <unmanaged-short>ID3D10Texture2D::Map</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Texture2D.Unmap(System.Int32)\">\n            <summary>\t\n            <p>Invalidate the reference to the resource that was retrieved by <strong><see cref=\"M:SharpDX.Direct3D10.Texture2D.Map(System.Int32,SharpDX.Direct3D10.MapMode,SharpDX.Direct3D10.MapFlags,SharpDX.DataRectangle@)\"/></strong>, and re-enable GPU access to the resource.</p>\t\n            </summary>\t\n            <param name=\"subresource\">No documentation.</param>\t\n            <remarks>\t\n            <p>A subresource must be mapped before Unmap is called.</p><table> <tr><td> <p>Differences between Direct3D 9 and Direct3D 10:</p> <p>Unmap in Direct3D 10 is analogous to resource <strong>Unlock</strong> in Direct3D 9.</p> </td></tr> </table><p>?</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Texture2D::Unmap']/*\"/>\t\n            <msdn-id>bb173870</msdn-id>\t\n            <unmanaged>void ID3D10Texture2D::Unmap([In] unsigned int Subresource)</unmanaged>\t\n            <unmanaged-short>ID3D10Texture2D::Unmap</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Texture2D.GetDescription(SharpDX.Direct3D10.Texture2DDescription@)\">\n            <summary>\t\n            <p>Get the properties of the texture resource.</p>\t\n            </summary>\t\n            <param name=\"descRef\"><dd>  <p>Pointer to a resource description (see <strong><see cref=\"T:SharpDX.Direct3D10.Texture2DDescription\"/></strong>).</p> </dd></param>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Texture2D::GetDesc']/*\"/>\t\n            <msdn-id>bb173868</msdn-id>\t\n            <unmanaged>void ID3D10Texture2D::GetDesc([Out] D3D10_TEXTURE2D_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>ID3D10Texture2D::GetDesc</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Texture2D.#ctor(SharpDX.Direct3D10.Device,SharpDX.Direct3D10.Texture2DDescription)\">\n            <summary>\n              Initializes a new instance of the <see cref = \"T:SharpDX.Direct3D10.Texture2D\" /> class.\n            </summary>\n            <param name = \"device\">The device with which to associate the texture.</param>\n            <param name = \"description\">The description of the texture.</param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Texture2D.#ctor(SharpDX.Direct3D10.Device,SharpDX.Direct3D10.Texture2DDescription,SharpDX.DataRectangle)\">\n            <summary>\n              Initializes a new instance of the <see cref = \"T:SharpDX.Direct3D10.Texture2D\" /> class.\n            </summary>\n            <param name = \"device\">The device with which to associate the texture.</param>\n            <param name = \"description\">The description of the texture.</param>\n            <param name = \"data\">The initial texture data.</param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Texture2D.#ctor(SharpDX.Direct3D10.Device,SharpDX.Direct3D10.Texture2DDescription,SharpDX.DataRectangle[])\">\n            <summary>\n              Initializes a new instance of the <see cref = \"T:SharpDX.Direct3D10.Texture2D\" /> class.\n            </summary>\n            <param name = \"device\">The device with which to associate the texture.</param>\n            <param name = \"description\">The description of the texture.</param>\n            <param name = \"data\">An array of initial texture data for each subresource.</param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Texture2D.ComputeNormalMap(SharpDX.Direct3D10.Texture2D,SharpDX.Direct3D10.Texture2D,SharpDX.Direct3D10.NormalMapFlags,SharpDX.Direct3D10.Channel,System.Single)\">\n            <summary>\n              Converts a height map into a normal map. The (x,y,z) components of each normal are mapped to the (r,g,b) channels of the output texture.\n            </summary>\n            <param name = \"source\">The source height map texture.</param>\n            <param name = \"destination\">The destination texture.</param>\n            <param name = \"flags\">One or more flags that control generation of normal maps.</param>\n            <param name = \"channel\">One or more flag specifying the source of height information.</param>\n            <param name = \"amplitude\">Constant value multiplier that increases (or decreases) the values in the normal map. Higher values usually make bumps more visible, lower values usually make bumps less visible.</param>\n            <returns>A <see cref = \"T:SharpDX.Result\" /> object describing the result of the operation.</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Texture2D.Map(System.Int32,SharpDX.Direct3D10.MapMode,SharpDX.Direct3D10.MapFlags)\">\n            <summary>\n            Maps the texture, providing CPU access to its contents.\n            </summary>\n            <param name=\"mipSlice\">The mip slice to map.</param>\n            <param name=\"mode\">The IO operations to enable on the CPU.</param>\n            <param name=\"flags\">Flags indicating how the CPU should respond when the GPU is busy.</param>\n            <returns>A data rectangle containing the mapped data. This data stream is invalidated when the buffer is unmapped.</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Texture2D.Map(System.Int32,SharpDX.Direct3D10.MapMode,SharpDX.Direct3D10.MapFlags,SharpDX.DataStream@)\">\n            <summary>\n            Maps the texture, providing CPU access to its contents.\n            </summary>\n            <param name=\"mipSlice\">The mip slice to map.</param>\n            <param name=\"mode\">The IO operations to enable on the CPU.</param>\n            <param name=\"flags\">Flags indicating how the CPU should respond when the GPU is busy.</param>\n            <param name=\"dataStream\">The data stream.</param>\n            <returns>\n            A data rectangle containing the mapped data. This data stream is invalidated when the buffer is unmapped.\n            </returns>\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.Texture2D.Description\">\n            <summary>\t\n            <p>Get the properties of the texture resource.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Texture2D::GetDesc']/*\"/>\t\n            <msdn-id>bb173868</msdn-id>\t\n            <unmanaged>GetDesc</unmanaged>\t\n            <unmanaged-short>GetDesc</unmanaged-short>\t\n            <unmanaged>void ID3D10Texture2D::GetDesc([Out] D3D10_TEXTURE2D_DESC* pDesc)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.Texture3D\">\n            <summary>\t\n            <p>A 3D texture interface accesses texel data, which is structured memory.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>To create an empty Texture3D resource, call <strong><see cref=\"M:SharpDX.Direct3D10.Device.CreateTexture3D(SharpDX.Direct3D10.Texture3DDescription@,SharpDX.DataBox[],SharpDX.Direct3D10.Texture3D)\"/></strong>. For more details on creating and loading textures, see Creating Texture Resources.</p><p>Textures cannot be bound directly to the pipeline; instead, a view must be created and bound. Using a view, texture data can be interpreted at run time within certain restrictions. To use the texture as a render target or depth-stencil resource, call <strong><see cref=\"M:SharpDX.Direct3D10.Device.CreateRenderTargetView(SharpDX.Direct3D10.Resource,System.Nullable{SharpDX.Direct3D10.RenderTargetViewDescription},SharpDX.Direct3D10.RenderTargetView)\"/></strong>, and <strong><see cref=\"M:SharpDX.Direct3D10.Device.CreateDepthStencilView(SharpDX.Direct3D10.Resource,System.Nullable{SharpDX.Direct3D10.DepthStencilViewDescription},SharpDX.Direct3D10.DepthStencilView)\"/></strong>, respectively. To use the texture as an input to a shader, create a  by calling <strong><see cref=\"M:SharpDX.Direct3D10.Device.CreateShaderResourceView(SharpDX.Direct3D10.Resource,System.Nullable{SharpDX.Direct3D10.ShaderResourceViewDescription},SharpDX.Direct3D10.ShaderResourceView)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Texture3D']/*\"/>\t\n            <msdn-id>Bb173871</msdn-id>\t\n            <unmanaged>ID3D10Texture3D</unmanaged>\t\n            <unmanaged-short>ID3D10Texture3D</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Texture3D.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D10.Texture3D\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Texture3D.op_Explicit(System.IntPtr)~SharpDX.Direct3D10.Texture3D\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D10.Texture3D\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Texture3D.Map(System.Int32,SharpDX.Direct3D10.MapMode,SharpDX.Direct3D10.MapFlags,SharpDX.DataBox@)\">\n            <summary>\t\n            <p>Get a reference to the data contained in a subresource, and deny GPU access to that subresource.</p>\t\n            </summary>\t\n            <param name=\"subresource\"><dd>  <p>Index number of the subresource. See <strong>D3D10CalcSubresource</strong>for more details.</p> </dd></param>\t\n            <param name=\"mapType\"><dd>  <p>Specifies the CPU's read and write permissions for a resource. For possible values, see <strong><see cref=\"T:SharpDX.Direct3D10.MapMode\"/></strong>.</p> </dd></param>\t\n            <param name=\"mapFlags\"><dd>  <p> <strong>Flag</strong> that specifies what the CPU should do when the GPU is busy. This flag is optional.</p> </dd></param>\t\n            <param name=\"mappedTex3DRef\"><dd>  <p>Pointer to a structure (<strong><see cref=\"T:SharpDX.DataBox\"/></strong>) that is filled in by the function and contains a reference to the resource data.</p> </dd></param>\t\n            <returns><p>If this function succeeds, it returns <see cref=\"F:SharpDX.Result.Ok\"/>. All of the Map methods have identical return values and operating restrictions. These are listed in the remarks section of <strong><see cref=\"M:SharpDX.Direct3D10.Texture1D.Map(System.Int32,SharpDX.Direct3D10.MapMode,SharpDX.Direct3D10.MapFlags,System.IntPtr@)\"/></strong>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Texture3D::Map']/*\"/>\t\n            <msdn-id>bb173873</msdn-id>\t\n            <unmanaged>HRESULT ID3D10Texture3D::Map([In] unsigned int Subresource,[In] D3D10_MAP MapType,[In] D3D10_MAP_FLAG MapFlags,[Out] D3D10_MAPPED_TEXTURE3D* pMappedTex3D)</unmanaged>\t\n            <unmanaged-short>ID3D10Texture3D::Map</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Texture3D.Unmap(System.Int32)\">\n            <summary>\t\n            <p>Invalidate the reference to the resource retrieved by <strong><see cref=\"M:SharpDX.Direct3D10.Texture3D.Map(System.Int32,SharpDX.Direct3D10.MapMode,SharpDX.Direct3D10.MapFlags,SharpDX.DataBox@)\"/></strong>, and re-enable the GPU's access to the resource.</p>\t\n            </summary>\t\n            <param name=\"subresource\">No documentation.</param>\t\n            <remarks>\t\n            <p>A subresource must be mapped before Unmap is called.</p><table> <tr><td> <p>Differences between Direct3D 9 and Direct3D 10:</p> <p>Unmap() in Direct3D 10 is analogous to resource Unlock() in Direct3D 9.</p> </td></tr> </table><p>?</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Texture3D::Unmap']/*\"/>\t\n            <msdn-id>bb173874</msdn-id>\t\n            <unmanaged>void ID3D10Texture3D::Unmap([In] unsigned int Subresource)</unmanaged>\t\n            <unmanaged-short>ID3D10Texture3D::Unmap</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Texture3D.GetDescription(SharpDX.Direct3D10.Texture3DDescription@)\">\n            <summary>\t\n            <p>Get the properties of the texture resource.</p>\t\n            </summary>\t\n            <param name=\"descRef\"><dd>  <p>Pointer to a resource description (see <strong><see cref=\"T:SharpDX.Direct3D10.Texture3DDescription\"/></strong>).</p> </dd></param>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Texture3D::GetDesc']/*\"/>\t\n            <msdn-id>Bb173872</msdn-id>\t\n            <unmanaged>void ID3D10Texture3D::GetDesc([Out] D3D10_TEXTURE3D_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>ID3D10Texture3D::GetDesc</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Texture3D.#ctor(SharpDX.Direct3D10.Device,SharpDX.Direct3D10.Texture3DDescription)\">\n            <summary>\n              Initializes a new instance of the <see cref = \"T:SharpDX.Direct3D10.Texture3D\" /> class.\n            </summary>\n            <param name = \"device\">The device with which to associate the texture.</param>\n            <param name = \"description\">The description of the texture.</param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Texture3D.#ctor(SharpDX.Direct3D10.Device,SharpDX.Direct3D10.Texture3DDescription,SharpDX.DataBox)\">\n            <summary>\n              Initializes a new instance of the <see cref = \"T:SharpDX.Direct3D10.Texture3D\" /> class.\n            </summary>\n            <param name = \"device\">The device with which to associate the texture.</param>\n            <param name = \"description\">The description of the texture.</param>\n            <param name = \"data\">The initial texture data.</param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Texture3D.#ctor(SharpDX.Direct3D10.Device,SharpDX.Direct3D10.Texture3DDescription,SharpDX.DataBox[])\">\n            <summary>\n              Initializes a new instance of the <see cref = \"T:SharpDX.Direct3D10.Texture3D\" /> class.\n            </summary>\n            <param name = \"device\">The device with which to associate the texture.</param>\n            <param name = \"description\">The description of the texture.</param>\n            <param name = \"data\">An array of initial texture data for each subresource.</param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Texture3D.Map(System.Int32,SharpDX.Direct3D10.MapMode,SharpDX.Direct3D10.MapFlags)\">\n            <summary>\n            Maps the texture, providing CPU access to its contents.\n            </summary>\n            <param name=\"mipSlice\">The mip slice to map.</param>\n            <param name=\"mode\">The IO operations to enable on the CPU.</param>\n            <param name=\"flags\">Flags indicating how the CPU should respond when the GPU is busy.</param>\n            <returns>\n            A databox containing the mapped data. This data stream is invalidated when the buffer is unmapped.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.Texture3D.Map(System.Int32,SharpDX.Direct3D10.MapMode,SharpDX.Direct3D10.MapFlags,SharpDX.DataStream@)\">\n            <summary>\n            Maps the texture, providing CPU access to its contents.\n            </summary>\n            <param name=\"mipSlice\">The mip slice to map.</param>\n            <param name=\"mode\">The IO operations to enable on the CPU.</param>\n            <param name=\"flags\">Flags indicating how the CPU should respond when the GPU is busy.</param>\n            <param name=\"dataStream\">The data stream.</param>\n            <returns>\n            A databox containing the mapped data. This data stream is invalidated when the buffer is unmapped.\n            </returns>\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.Texture3D.Description\">\n            <summary>\t\n            <p>Get the properties of the texture resource.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Texture3D::GetDesc']/*\"/>\t\n            <msdn-id>Bb173872</msdn-id>\t\n            <unmanaged>GetDesc</unmanaged>\t\n            <unmanaged-short>GetDesc</unmanaged-short>\t\n            <unmanaged>void ID3D10Texture3D::GetDesc([Out] D3D10_TEXTURE3D_DESC* pDesc)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.VertexShader\">\n            <summary>\t\n            <p>A vertex-shader interface manages an executable program (a vertex shader) that controls the vertex-shader stage.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The vertex-shader interface has no methods; use HLSL to implement your shader functionality. All shaders in Direct3D 10 are implemented from a common set of features referred to as the common shader core.</p><p>To create a vertex shader interface, call <strong><see cref=\"M:SharpDX.Direct3D10.Device.CreateVertexShader(System.IntPtr,SharpDX.PointerSize,SharpDX.Direct3D10.VertexShader)\"/></strong>. Before using a vertex shader you must bind it to the device by calling <strong><see cref=\"M:SharpDX.Direct3D10.VertexShaderStage.Set(SharpDX.Direct3D10.VertexShader)\"/></strong>.</p><p>This interface is defined in D3D10.h.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10VertexShader']/*\"/>\t\n            <msdn-id>bb173875</msdn-id>\t\n            <unmanaged>ID3D10VertexShader</unmanaged>\t\n            <unmanaged-short>ID3D10VertexShader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.VertexShader.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D10.VertexShader\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.VertexShader.op_Explicit(System.IntPtr)~SharpDX.Direct3D10.VertexShader\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D10.VertexShader\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.VertexShader.#ctor(SharpDX.Direct3D10.Device,System.Byte[])\">\n            <summary>\n              Initializes a new instance of the <see cref = \"T:SharpDX.Direct3D10.VertexShader\" /> class.\n            </summary>\n            <param name = \"device\">The device used to create the shader.</param>\n            <param name = \"shaderBytecode\">The compiled shader bytecode.</param>\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.VertexShaderStage\">\n            <summary>\t\n            <p>The device interface represents a virtual adapter for Direct3D 10.0; it is used to perform rendering and create Direct3D resources.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>A device is created using <strong><see cref=\"M:SharpDX.Direct3D10.D3D10.CreateDevice(SharpDX.DXGI.Adapter,SharpDX.Direct3D10.DriverType,System.IntPtr,SharpDX.Direct3D10.DeviceCreationFlags,System.Int32,SharpDX.Direct3D10.Device)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device']/*\"/>\t\n            <msdn-id>bb173528</msdn-id>\t\n            <unmanaged>ID3D10Device</unmanaged>\t\n            <unmanaged-short>ID3D10Device</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.VertexShaderStage.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D10.VertexShaderStage\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.VertexShaderStage.op_Explicit(System.IntPtr)~SharpDX.Direct3D10.VertexShaderStage\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D10.VertexShaderStage\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.VertexShaderStage.SetConstantBuffers(System.Int32,System.Int32,SharpDX.Direct3D10.Buffer[])\">\n            <summary>\t\n            <p>Set the constant buffers used by the vertex shader pipeline stage.</p>\t\n            </summary>\t\n            <param name=\"startSlot\">No documentation.</param>\t\n            <param name=\"numBuffers\">No documentation.</param>\t\n            <param name=\"constantBuffersOut\">No documentation.</param>\t\n            <remarks>\t\n            <p>The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::VSSetConstantBuffers']/*\"/>\t\n            <msdn-id>bb173626</msdn-id>\t\n            <unmanaged>void ID3D10Device::VSSetConstantBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[In, Buffer] const ID3D10Buffer** ppConstantBuffers)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::VSSetConstantBuffers</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.VertexShaderStage.SetConstantBuffers(System.Int32,System.Int32,SharpDX.ComArray{SharpDX.Direct3D10.Buffer})\">\n            <summary>\t\n            <p>Set the constant buffers used by the vertex shader pipeline stage.</p>\t\n            </summary>\t\n            <param name=\"startSlot\">No documentation.</param>\t\n            <param name=\"numBuffers\">No documentation.</param>\t\n            <param name=\"constantBuffersOut\">No documentation.</param>\t\n            <remarks>\t\n            <p>The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::VSSetConstantBuffers']/*\"/>\t\n            <msdn-id>bb173626</msdn-id>\t\n            <unmanaged>void ID3D10Device::VSSetConstantBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[In, Buffer] const ID3D10Buffer** ppConstantBuffers)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::VSSetConstantBuffers</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.VertexShaderStage.Set(SharpDX.Direct3D10.VertexShader)\">\n            <summary>\t\n            <p>Set a vertex shader to the device.</p>\t\n            </summary>\t\n            <param name=\"vertexShaderRef\"><dd>  <p>Pointer to a vertex shader (see <strong><see cref=\"T:SharpDX.Direct3D10.VertexShader\"/></strong>). Passing in <strong><c>null</c></strong> disables the shader for this pipeline stage.</p> </dd></param>\t\n            <remarks>\t\n            <p>The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::VSSetShader']/*\"/>\t\n            <msdn-id>bb173628</msdn-id>\t\n            <unmanaged>void ID3D10Device::VSSetShader([In, Optional] ID3D10VertexShader* pVertexShader)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::VSSetShader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.VertexShaderStage.SetShaderResources(System.Int32,System.Int32,SharpDX.Direct3D10.ShaderResourceView[])\">\n            <summary>\t\n            <p>Bind an array of shader resources to the vertex shader stage.</p>\t\n            </summary>\t\n            <param name=\"startSlot\">No documentation.</param>\t\n            <param name=\"numViews\">No documentation.</param>\t\n            <param name=\"shaderResourceViewsOut\">No documentation.</param>\t\n            <remarks>\t\n            <p>If you bind a subresource as an input and an output, this API will fill the destination shader resource slot with <strong><c>null</c></strong>. The debug layer (when active) will alert you if this is true.</p><p>For information about creating shader-resource views, see <strong><see cref=\"M:SharpDX.Direct3D10.Device.CreateShaderResourceView(SharpDX.Direct3D10.Resource,System.Nullable{SharpDX.Direct3D10.ShaderResourceViewDescription},SharpDX.Direct3D10.ShaderResourceView)\"/></strong>.</p><p>The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::VSSetShaderResources']/*\"/>\t\n            <msdn-id>bb173629</msdn-id>\t\n            <unmanaged>void ID3D10Device::VSSetShaderResources([In] unsigned int StartSlot,[In] unsigned int NumViews,[In, Buffer] const ID3D10ShaderResourceView** ppShaderResourceViews)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::VSSetShaderResources</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.VertexShaderStage.SetShaderResources(System.Int32,System.Int32,SharpDX.ComArray{SharpDX.Direct3D10.ShaderResourceView})\">\n            <summary>\t\n            <p>Bind an array of shader resources to the vertex shader stage.</p>\t\n            </summary>\t\n            <param name=\"startSlot\">No documentation.</param>\t\n            <param name=\"numViews\">No documentation.</param>\t\n            <param name=\"shaderResourceViewsOut\">No documentation.</param>\t\n            <remarks>\t\n            <p>If you bind a subresource as an input and an output, this API will fill the destination shader resource slot with <strong><c>null</c></strong>. The debug layer (when active) will alert you if this is true.</p><p>For information about creating shader-resource views, see <strong><see cref=\"M:SharpDX.Direct3D10.Device.CreateShaderResourceView(SharpDX.Direct3D10.Resource,System.Nullable{SharpDX.Direct3D10.ShaderResourceViewDescription},SharpDX.Direct3D10.ShaderResourceView)\"/></strong>.</p><p>The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::VSSetShaderResources']/*\"/>\t\n            <msdn-id>bb173629</msdn-id>\t\n            <unmanaged>void ID3D10Device::VSSetShaderResources([In] unsigned int StartSlot,[In] unsigned int NumViews,[In, Buffer] const ID3D10ShaderResourceView** ppShaderResourceViews)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::VSSetShaderResources</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.VertexShaderStage.SetSamplers(System.Int32,System.Int32,SharpDX.Direct3D10.SamplerState[])\">\n            <summary>\t\n            <p>Set an array of sampler states to the vertex shader pipeline stage.</p>\t\n            </summary>\t\n            <param name=\"startSlot\">No documentation.</param>\t\n            <param name=\"numSamplers\">No documentation.</param>\t\n            <param name=\"samplersOut\">No documentation.</param>\t\n            <remarks>\t\n            <p>Any sampler may be set to <strong><c>null</c></strong>; this invokes the default state, which is defined to be the following.</p><pre><code> //Default sampler state:\t\n            <see cref=\"T:SharpDX.Direct3D10.SamplerStateDescription\"/> SamplerDesc;\t\n            SamplerDesc.Filter = <see cref=\"F:SharpDX.Direct3D10.Filter.MinMagMipLinear\"/>;\t\n            SamplerDesc.AddressU = <see cref=\"F:SharpDX.Direct3D10.TextureAddressMode.Clamp\"/>;\t\n            SamplerDesc.AddressV = <see cref=\"F:SharpDX.Direct3D10.TextureAddressMode.Clamp\"/>;\t\n            SamplerDesc.AddressW = <see cref=\"F:SharpDX.Direct3D10.TextureAddressMode.Clamp\"/>;\t\n            SamplerDesc.MipLODBias = 0;\t\n            SamplerDesc.MaxAnisotropy = 1;\t\n            SamplerDesc.ComparisonFunc = <see cref=\"F:SharpDX.Direct3D10.Comparison.Never\"/>;\t\n            SamplerDesc.BorderColor[0] = 1.0f;\t\n            SamplerDesc.BorderColor[1] = 1.0f;\t\n            SamplerDesc.BorderColor[2] = 1.0f;\t\n            SamplerDesc.BorderColor[3] = 1.0f;\t\n            SamplerDesc.MinLOD = -FLT_MAX;\t\n            SamplerDesc.MaxLOD = FLT_MAX; </code></pre><p>The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::VSSetSamplers']/*\"/>\t\n            <msdn-id>bb173627</msdn-id>\t\n            <unmanaged>void ID3D10Device::VSSetSamplers([In] unsigned int StartSlot,[In] unsigned int NumSamplers,[In, Buffer] const ID3D10SamplerState** ppSamplers)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::VSSetSamplers</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.VertexShaderStage.SetSamplers(System.Int32,System.Int32,SharpDX.ComArray{SharpDX.Direct3D10.SamplerState})\">\n            <summary>\t\n            <p>Set an array of sampler states to the vertex shader pipeline stage.</p>\t\n            </summary>\t\n            <param name=\"startSlot\">No documentation.</param>\t\n            <param name=\"numSamplers\">No documentation.</param>\t\n            <param name=\"samplersOut\">No documentation.</param>\t\n            <remarks>\t\n            <p>Any sampler may be set to <strong><c>null</c></strong>; this invokes the default state, which is defined to be the following.</p><pre><code> //Default sampler state:\t\n            <see cref=\"T:SharpDX.Direct3D10.SamplerStateDescription\"/> SamplerDesc;\t\n            SamplerDesc.Filter = <see cref=\"F:SharpDX.Direct3D10.Filter.MinMagMipLinear\"/>;\t\n            SamplerDesc.AddressU = <see cref=\"F:SharpDX.Direct3D10.TextureAddressMode.Clamp\"/>;\t\n            SamplerDesc.AddressV = <see cref=\"F:SharpDX.Direct3D10.TextureAddressMode.Clamp\"/>;\t\n            SamplerDesc.AddressW = <see cref=\"F:SharpDX.Direct3D10.TextureAddressMode.Clamp\"/>;\t\n            SamplerDesc.MipLODBias = 0;\t\n            SamplerDesc.MaxAnisotropy = 1;\t\n            SamplerDesc.ComparisonFunc = <see cref=\"F:SharpDX.Direct3D10.Comparison.Never\"/>;\t\n            SamplerDesc.BorderColor[0] = 1.0f;\t\n            SamplerDesc.BorderColor[1] = 1.0f;\t\n            SamplerDesc.BorderColor[2] = 1.0f;\t\n            SamplerDesc.BorderColor[3] = 1.0f;\t\n            SamplerDesc.MinLOD = -FLT_MAX;\t\n            SamplerDesc.MaxLOD = FLT_MAX; </code></pre><p>The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::VSSetSamplers']/*\"/>\t\n            <msdn-id>bb173627</msdn-id>\t\n            <unmanaged>void ID3D10Device::VSSetSamplers([In] unsigned int StartSlot,[In] unsigned int NumSamplers,[In, Buffer] const ID3D10SamplerState** ppSamplers)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::VSSetSamplers</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.VertexShaderStage.GetConstantBuffers(System.Int32,System.Int32,SharpDX.Direct3D10.Buffer[])\">\n            <summary>\t\n            <p>Get the constant buffers used by the vertex shader pipeline stage.</p>\t\n            </summary>\t\n            <param name=\"startSlot\">No documentation.</param>\t\n            <param name=\"numBuffers\">No documentation.</param>\t\n            <param name=\"constantBuffersOut\">No documentation.</param>\t\n            <remarks>\t\n            <p>Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::VSGetConstantBuffers']/*\"/>\t\n            <msdn-id>bb173622</msdn-id>\t\n            <unmanaged>void ID3D10Device::VSGetConstantBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[Out, Buffer] ID3D10Buffer** ppConstantBuffers)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::VSGetConstantBuffers</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.VertexShaderStage.Get(SharpDX.Direct3D10.VertexShader@)\">\n            <summary>\t\n            <p>Get the vertex shader currently set on the device.</p>\t\n            </summary>\t\n            <param name=\"vertexShaderOut\"><dd>  <p>Address of a reference to a vertex shader (see <strong><see cref=\"T:SharpDX.Direct3D10.VertexShader\"/></strong>) to be returned by the method.</p> </dd></param>\t\n            <remarks>\t\n            <p>Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::VSGetShader']/*\"/>\t\n            <msdn-id>bb173624</msdn-id>\t\n            <unmanaged>void ID3D10Device::VSGetShader([Out] ID3D10VertexShader** ppVertexShader)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::VSGetShader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.VertexShaderStage.GetShaderResources(System.Int32,System.Int32,SharpDX.Direct3D10.ShaderResourceView[])\">\n            <summary>\t\n            <p>Get the vertex shader resources.</p>\t\n            </summary>\t\n            <param name=\"startSlot\"><dd>  <p>Index into the device's zero-based array to begin getting shader resources from.</p> </dd></param>\t\n            <param name=\"numViews\"><dd>  <p>The number of resources to get from the device. Up to a maximum of 128 slots are available for shader resources.</p> </dd></param>\t\n            <param name=\"shaderResourceViewsOut\"><dd>  <p>Array of <strong>shader resource view</strong> interfaces to be returned by the device.</p> </dd></param>\t\n            <remarks>\t\n            <p>Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::VSGetShaderResources']/*\"/>\t\n            <msdn-id>bb173625</msdn-id>\t\n            <unmanaged>void ID3D10Device::VSGetShaderResources([In] unsigned int StartSlot,[In] unsigned int NumViews,[Out, Buffer] ID3D10ShaderResourceView** ppShaderResourceViews)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::VSGetShaderResources</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.VertexShaderStage.GetSamplers(System.Int32,System.Int32,SharpDX.Direct3D10.SamplerState[])\">\n            <summary>\t\n            <p>Get an array of sampler states from the vertex shader pipeline stage.</p>\t\n            </summary>\t\n            <param name=\"startSlot\">No documentation.</param>\t\n            <param name=\"numSamplers\">No documentation.</param>\t\n            <param name=\"samplersOut\">No documentation.</param>\t\n            <remarks>\t\n            <p>Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Device::VSGetSamplers']/*\"/>\t\n            <msdn-id>bb173623</msdn-id>\t\n            <unmanaged>void ID3D10Device::VSGetSamplers([In] unsigned int StartSlot,[In] unsigned int NumSamplers,[Out, Buffer] ID3D10SamplerState** ppSamplers)</unmanaged>\t\n            <unmanaged-short>ID3D10Device::VSGetSamplers</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.BlendStateDescription\">\n            <summary>\t\n            <p>Describes the blend state.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>To see how blending is done, see Output-Merger Stage (Direct3D 10).</p><p>These are the default values for blend state.</p><table> <tr><th>State</th><th>Default Value</th></tr> <tr><td>AlphaToCoverageEnable</td><td><see cref=\"F:SharpDX.Result.False\"/></td></tr> <tr><td>BlendEnable[8]</td><td><see cref=\"F:SharpDX.Result.False\"/> (for all 8)</td></tr> <tr><td>SrcBlend</td><td><see cref=\"F:SharpDX.Direct3D10.BlendOption.One\"/></td></tr> <tr><td>DestBlend</td><td><see cref=\"F:SharpDX.Direct3D10.BlendOption.Zero\"/></td></tr> <tr><td>BlendOp</td><td><see cref=\"F:SharpDX.Direct3D10.BlendOperation.Add\"/></td></tr> <tr><td>SrcBlendAlpha</td><td><see cref=\"F:SharpDX.Direct3D10.BlendOption.One\"/></td></tr> <tr><td>DestBlendAlpha</td><td><see cref=\"F:SharpDX.Direct3D10.BlendOption.Zero\"/></td></tr> <tr><td>BlendOpAlpha</td><td><see cref=\"F:SharpDX.Direct3D10.BlendOperation.Add\"/></td></tr> <tr><td>RenderTargetWriteMask[8]</td><td><see cref=\"F:SharpDX.Direct3D10.ColorWriteMaskFlags.All\"/> (for all 8)</td></tr> </table><p>?</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_BLEND_DESC']/*\"/>\t\n            <msdn-id>bb204893</msdn-id>\t\n            <unmanaged>D3D10_BLEND_DESC</unmanaged>\t\n            <unmanaged-short>D3D10_BLEND_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.BlendStateDescription.IsAlphaToCoverageEnabled\">\n            <summary>\t\n            <dd> <p>Determines whether or not to use alpha-to-coverage as a multisampling technique when setting a pixel to a rendertarget.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_BLEND_DESC::AlphaToCoverageEnable']/*\"/>\t\n            <msdn-id>bb204893</msdn-id>\t\n            <unmanaged>BOOL AlphaToCoverageEnable</unmanaged>\t\n            <unmanaged-short>BOOL AlphaToCoverageEnable</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.BlendStateDescription.SourceBlend\">\n            <summary>\t\n            <dd> <p>This <strong>blend option</strong> specifies the first RGB data source and includes an optional pre-blend operation.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_BLEND_DESC::SrcBlend']/*\"/>\t\n            <msdn-id>bb204893</msdn-id>\t\n            <unmanaged>D3D10_BLEND SrcBlend</unmanaged>\t\n            <unmanaged-short>D3D10_BLEND SrcBlend</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.BlendStateDescription.DestinationBlend\">\n            <summary>\t\n            <dd> <p>This <strong>blend option</strong> specifies the second RGB data source and includes an optional pre-blend operation.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_BLEND_DESC::DestBlend']/*\"/>\t\n            <msdn-id>bb204893</msdn-id>\t\n            <unmanaged>D3D10_BLEND DestBlend</unmanaged>\t\n            <unmanaged-short>D3D10_BLEND DestBlend</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.BlendStateDescription.BlendOperation\">\n            <summary>\t\n            <dd> <p>This <strong>blend operation</strong> defines how to combine the RGB data sources.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_BLEND_DESC::BlendOp']/*\"/>\t\n            <msdn-id>bb204893</msdn-id>\t\n            <unmanaged>D3D10_BLEND_OP BlendOp</unmanaged>\t\n            <unmanaged-short>D3D10_BLEND_OP BlendOp</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.BlendStateDescription.SourceAlphaBlend\">\n            <summary>\t\n            <dd> <p>This <strong>blend option</strong> specifies the first alpha data source and includes an optional pre-blend operation. Blend options that end in _COLOR are not allowed.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_BLEND_DESC::SrcBlendAlpha']/*\"/>\t\n            <msdn-id>bb204893</msdn-id>\t\n            <unmanaged>D3D10_BLEND SrcBlendAlpha</unmanaged>\t\n            <unmanaged-short>D3D10_BLEND SrcBlendAlpha</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.BlendStateDescription.DestinationAlphaBlend\">\n            <summary>\t\n            <dd> <p>This <strong>blend option</strong> specifies the second alpha data source and includes an optional pre-blend operation. Blend options that end in _COLOR are not allowed.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_BLEND_DESC::DestBlendAlpha']/*\"/>\t\n            <msdn-id>bb204893</msdn-id>\t\n            <unmanaged>D3D10_BLEND DestBlendAlpha</unmanaged>\t\n            <unmanaged-short>D3D10_BLEND DestBlendAlpha</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.BlendStateDescription.AlphaBlendOperation\">\n            <summary>\t\n            <dd> <p>This <strong>blend operation</strong> defines how to combine the alpha data sources.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_BLEND_DESC::BlendOpAlpha']/*\"/>\t\n            <msdn-id>bb204893</msdn-id>\t\n            <unmanaged>D3D10_BLEND_OP BlendOpAlpha</unmanaged>\t\n            <unmanaged-short>D3D10_BLEND_OP BlendOpAlpha</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.BlendStateDescription.IsBlendEnabled\">\n            <summary>\t\n            <dd> <p>Enable (or disable) blending. There are eight elements in this array; these correspond to the eight rendertargets that can be set to output-merger stage at one time.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_BLEND_DESC::BlendEnable']/*\"/>\t\n            <msdn-id>bb204893</msdn-id>\t\n            <unmanaged>BOOL BlendEnable[8]</unmanaged>\t\n            <unmanaged-short>BOOL BlendEnable</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.BlendStateDescription.RenderTargetWriteMask\">\n            <summary>\t\n            <dd> <p>A per-pixel write mask that allows control over which components can be written (see <strong><see cref=\"T:SharpDX.Direct3D10.ColorWriteMaskFlags\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_BLEND_DESC::RenderTargetWriteMask']/*\"/>\t\n            <msdn-id>bb204893</msdn-id>\t\n            <unmanaged>D3D10_COLOR_WRITE_ENABLE RenderTargetWriteMask[8]</unmanaged>\t\n            <unmanaged-short>D3D10_COLOR_WRITE_ENABLE RenderTargetWriteMask</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.BlendStateDescription1\">\n            <summary>\t\n            <p>Describes the blend state for a Direct3D 10.1 device.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>To see how blending is done, see Output-Merger Stage (Direct3D 10).</p><p>These are the default values for the blend description.</p><table> <tr><th>State</th><th>Default Value</th></tr> <tr><td>AlphaToCoverageEnable</td><td><strong><see cref=\"F:SharpDX.Result.False\"/></strong></td></tr> <tr><td>IndependentBlendEnable</td><td><strong><see cref=\"F:SharpDX.Result.False\"/></strong></td></tr> <tr><td>RenderTarget[0].BlendEnable</td><td><strong><see cref=\"F:SharpDX.Result.False\"/></strong></td></tr> <tr><td>RenderTarget[0].SrcBlend</td><td><see cref=\"F:SharpDX.Direct3D10.BlendOption.One\"/></td></tr> <tr><td>RenderTarget[0].DestBlend</td><td><see cref=\"F:SharpDX.Direct3D10.BlendOption.Zero\"/></td></tr> <tr><td>RenderTarget[0].BlendOp</td><td><see cref=\"F:SharpDX.Direct3D10.BlendOperation.Add\"/></td></tr> <tr><td>RenderTarget[0].SrcBlendAlpha</td><td><see cref=\"F:SharpDX.Direct3D10.BlendOption.One\"/></td></tr> <tr><td>RenderTarget[0].DestBlendAlpha</td><td><see cref=\"F:SharpDX.Direct3D10.BlendOption.Zero\"/></td></tr> <tr><td>RenderTarget[0].BlendOpAlpha</td><td><see cref=\"F:SharpDX.Direct3D10.BlendOperation.Add\"/></td></tr> <tr><td>RenderTarget[0].RenderTargetWriteMask</td><td><see cref=\"F:SharpDX.Direct3D10.ColorWriteMaskFlags.All\"/></td></tr> </table><p>?</p><p>This structure requires Windows Vista Service Pack 1.</p><p>If the driver type is set to <strong><see cref=\"F:SharpDX.Direct3D.DriverType.Hardware\"/></strong>, the feature level is set to less than or equal to <strong><see cref=\"F:SharpDX.Direct3D.FeatureLevel.Level_9_3\"/></strong>, and the pixel format of the render target is set to <strong><see cref=\"F:SharpDX.DXGI.Format.R8G8B8A8_UNorm_SRgb\"/></strong>, <strong><see cref=\"F:SharpDX.DXGI.Format.B8G8R8A8_UNorm_SRgb\"/></strong>, or <strong><see cref=\"F:SharpDX.DXGI.Format.B8G8R8X8_UNorm_SRgb\"/></strong>, the device performs the blend in standard RGB (sRGB) space and not in linear space. However, if the feature level is set to greater than <strong><see cref=\"F:SharpDX.Direct3D.FeatureLevel.Level_9_3\"/></strong>, the device performs the blend in linear space.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_BLEND_DESC1']/*\"/>\t\n            <msdn-id>bb694528</msdn-id>\t\n            <unmanaged>D3D10_BLEND_DESC1</unmanaged>\t\n            <unmanaged-short>D3D10_BLEND_DESC1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.BlendStateDescription1.IsAlphaToCoverageEnabled\">\n            <summary>\t\n            <dd> <p>Determines whether or not to use the alpha-to-coverage multisampling technique when setting a render-target pixel.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_BLEND_DESC1::AlphaToCoverageEnable']/*\"/>\t\n            <msdn-id>bb694528</msdn-id>\t\n            <unmanaged>BOOL AlphaToCoverageEnable</unmanaged>\t\n            <unmanaged-short>BOOL AlphaToCoverageEnable</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.BlendStateDescription1.IndependentBlendEnable\">\n            <summary>\t\n            <dd> <p>Set to <strong>TRUE</strong> to enable independent blending in simultaneous render targets. If set to <strong><see cref=\"F:SharpDX.Result.False\"/></strong>, only the RenderTarget[0] members are used. RenderTarget[1..7] are ignored.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_BLEND_DESC1::IndependentBlendEnable']/*\"/>\t\n            <msdn-id>bb694528</msdn-id>\t\n            <unmanaged>BOOL IndependentBlendEnable</unmanaged>\t\n            <unmanaged-short>BOOL IndependentBlendEnable</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.BlendStateDescription1.RenderTarget\">\n            <summary>\t\n            <dd> <p>An array of render-target-blend descriptions (see <strong><see cref=\"T:SharpDX.Direct3D10.RenderTargetBlendDescription1\"/></strong>); these correspond to the eight rendertargets  that can be set to the output-merger stage at one time.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_BLEND_DESC1::RenderTarget']/*\"/>\t\n            <msdn-id>bb694528</msdn-id>\t\n            <unmanaged>D3D10_RENDER_TARGET_BLEND_DESC1 RenderTarget[8]</unmanaged>\t\n            <unmanaged-short>D3D10_RENDER_TARGET_BLEND_DESC1 RenderTarget</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.CounterCapabilities\">\n            <summary>\t\n            <p>Information about the video card's performance counter capabilities.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure is returned by <strong><see cref=\"M:SharpDX.Direct3D10.Device.GetCounterCapabilities\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_COUNTER_INFO']/*\"/>\t\n            <msdn-id>bb204906</msdn-id>\t\n            <unmanaged>D3D10_COUNTER_INFO</unmanaged>\t\n            <unmanaged-short>D3D10_COUNTER_INFO</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.CounterCapabilities.LastDeviceDependentCounter\">\n            <summary>\t\n            <dd> <p>Largest device-dependent counter ID that the device supports. If none are supported, this value will be 0. Otherwise it will be greater than or equal to <see cref=\"F:SharpDX.Direct3D10.CounterKind.DeviceDependent0\"/>. See <strong><see cref=\"T:SharpDX.Direct3D10.CounterKind\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_COUNTER_INFO::LastDeviceDependentCounter']/*\"/>\t\n            <msdn-id>bb204906</msdn-id>\t\n            <unmanaged>D3D10_COUNTER LastDeviceDependentCounter</unmanaged>\t\n            <unmanaged-short>D3D10_COUNTER LastDeviceDependentCounter</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.CounterCapabilities.SimultaneousCounterCount\">\n            <summary>\t\n            <dd> <p>Number of counters that can be simultaneously supported.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_COUNTER_INFO::NumSimultaneousCounters']/*\"/>\t\n            <msdn-id>bb204906</msdn-id>\t\n            <unmanaged>unsigned int NumSimultaneousCounters</unmanaged>\t\n            <unmanaged-short>unsigned int NumSimultaneousCounters</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.CounterCapabilities.DetectableParallelUnitCount\">\n            <summary>\t\n            <dd> <p>Number of detectable parallel units that the counter is able to discern. Values are 1 ~ 4. Use NumDetectableParallelUnits to interpret the values of the VERTEX_PROCESSING, GEOMETRY_PROCESSING, PIXEL_PROCESSING, and OTHER_GPU_PROCESSING counters. See <strong><see cref=\"M:SharpDX.Direct3D10.Asynchronous.GetData\"/></strong> for an equation.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_COUNTER_INFO::NumDetectableParallelUnits']/*\"/>\t\n            <msdn-id>bb204906</msdn-id>\t\n            <unmanaged>unsigned char NumDetectableParallelUnits</unmanaged>\t\n            <unmanaged-short>unsigned char NumDetectableParallelUnits</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.CounterDescription\">\n            <summary>\t\n            <p>Describes a counter.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_COUNTER_DESC']/*\"/>\t\n            <msdn-id>bb204905</msdn-id>\t\n            <unmanaged>D3D10_COUNTER_DESC</unmanaged>\t\n            <unmanaged-short>D3D10_COUNTER_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.CounterDescription.Counter\">\n            <summary>\t\n            <dd> <p>Type of counter (see <strong><see cref=\"T:SharpDX.Direct3D10.CounterKind\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_COUNTER_DESC::Counter']/*\"/>\t\n            <msdn-id>bb204905</msdn-id>\t\n            <unmanaged>D3D10_COUNTER Counter</unmanaged>\t\n            <unmanaged-short>D3D10_COUNTER Counter</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.CounterDescription.MiscFlags\">\n            <summary>\t\n            <dd> <p>Reserved.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_COUNTER_DESC::MiscFlags']/*\"/>\t\n            <msdn-id>bb204905</msdn-id>\t\n            <unmanaged>unsigned int MiscFlags</unmanaged>\t\n            <unmanaged-short>unsigned int MiscFlags</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.DepthStencilOperationDescription\">\n            <summary>\t\n            <p>Describes the stencil operations that can be performed based on the results of stencil test.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The stencil operation can be set differently based on the outcome of the stencil test by using the <strong>StencilFunc</strong> member.  This can be done for the stencil test portion of depth-stencil testing.</p><p>The <see cref=\"T:SharpDX.Direct3D10.DepthStencilOperationDescription\"/> structure is a member of the <strong><see cref=\"T:SharpDX.Direct3D10.DepthStencilStateDescription\"/></strong> structure. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_DEPTH_STENCILOP_DESC']/*\"/>\t\n            <msdn-id>bb205035</msdn-id>\t\n            <unmanaged>D3D10_DEPTH_STENCILOP_DESC</unmanaged>\t\n            <unmanaged-short>D3D10_DEPTH_STENCILOP_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.DepthStencilOperationDescription.FailOperation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_DEPTH_STENCILOP_DESC::StencilFailOp']/*\"/>\t\n            <unmanaged>D3D10_STENCIL_OP StencilFailOp</unmanaged>\t\n            <unmanaged-short>D3D10_STENCIL_OP StencilFailOp</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.DepthStencilOperationDescription.DepthFailOperation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_DEPTH_STENCILOP_DESC::StencilDepthFailOp']/*\"/>\t\n            <unmanaged>D3D10_STENCIL_OP StencilDepthFailOp</unmanaged>\t\n            <unmanaged-short>D3D10_STENCIL_OP StencilDepthFailOp</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.DepthStencilOperationDescription.PassOperation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_DEPTH_STENCILOP_DESC::StencilPassOp']/*\"/>\t\n            <unmanaged>D3D10_STENCIL_OP StencilPassOp</unmanaged>\t\n            <unmanaged-short>D3D10_STENCIL_OP StencilPassOp</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.DepthStencilOperationDescription.Comparison\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_DEPTH_STENCILOP_DESC::StencilFunc']/*\"/>\t\n            <unmanaged>D3D10_COMPARISON_FUNC StencilFunc</unmanaged>\t\n            <unmanaged-short>D3D10_COMPARISON_FUNC StencilFunc</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.DepthStencilStateDescription\">\n            <summary>\t\n            <p>Describes depth-stencil state.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Depth-stencil state controls how depth-stencil testing is performed by the output-merger stage.</p><p>The formats that support stenciling are <see cref=\"F:SharpDX.DXGI.Format.D24_UNorm_S8_UInt\"/> and <see cref=\"F:SharpDX.DXGI.Format.D32_Float_S8X24_UInt\"/>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_DEPTH_STENCIL_DESC']/*\"/>\t\n            <msdn-id>bb205036</msdn-id>\t\n            <unmanaged>D3D10_DEPTH_STENCIL_DESC</unmanaged>\t\n            <unmanaged-short>D3D10_DEPTH_STENCIL_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.DepthStencilStateDescription.IsDepthEnabled\">\n            <summary>\t\n            <dd> <p>A Boolean value that enables depth testing.  The default value is <strong>TRUE</strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_DEPTH_STENCIL_DESC::DepthEnable']/*\"/>\t\n            <msdn-id>bb205036</msdn-id>\t\n            <unmanaged>BOOL DepthEnable</unmanaged>\t\n            <unmanaged-short>BOOL DepthEnable</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.DepthStencilStateDescription.DepthWriteMask\">\n            <summary>\t\n            <dd> <p>A member of the <strong><see cref=\"T:SharpDX.Direct3D10.DepthWriteMask\"/></strong> enumerated type that identifies a portion of the depth-stencil buffer that can be modified by depth data.  The default value is <strong><see cref=\"F:SharpDX.Direct3D10.DepthWriteMask.All\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_DEPTH_STENCIL_DESC::DepthWriteMask']/*\"/>\t\n            <msdn-id>bb205036</msdn-id>\t\n            <unmanaged>D3D10_DEPTH_WRITE_MASK DepthWriteMask</unmanaged>\t\n            <unmanaged-short>D3D10_DEPTH_WRITE_MASK DepthWriteMask</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.DepthStencilStateDescription.DepthComparison\">\n            <summary>\t\n            <dd> <p>A member of the <strong><see cref=\"T:SharpDX.Direct3D10.Comparison\"/></strong> enumerated type that defines how depth data is compared against existing depth data.  The default value is <strong><see cref=\"F:SharpDX.Direct3D10.Comparison.Less\"/></strong></p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_DEPTH_STENCIL_DESC::DepthFunc']/*\"/>\t\n            <msdn-id>bb205036</msdn-id>\t\n            <unmanaged>D3D10_COMPARISON_FUNC DepthFunc</unmanaged>\t\n            <unmanaged-short>D3D10_COMPARISON_FUNC DepthFunc</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.DepthStencilStateDescription.IsStencilEnabled\">\n            <summary>\t\n            <dd> <p>A Boolean value that enables stencil testing.  The default value is <strong><see cref=\"F:SharpDX.Result.False\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_DEPTH_STENCIL_DESC::StencilEnable']/*\"/>\t\n            <msdn-id>bb205036</msdn-id>\t\n            <unmanaged>BOOL StencilEnable</unmanaged>\t\n            <unmanaged-short>BOOL StencilEnable</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.DepthStencilStateDescription.StencilReadMask\">\n            <summary>\t\n            <dd> <p>A value that identifies a portion of the depth-stencil buffer for reading stencil data.  The default value is <strong>D3D10_DEFAULT_STENCIL_READ_MASK</strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_DEPTH_STENCIL_DESC::StencilReadMask']/*\"/>\t\n            <msdn-id>bb205036</msdn-id>\t\n            <unmanaged>unsigned char StencilReadMask</unmanaged>\t\n            <unmanaged-short>unsigned char StencilReadMask</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.DepthStencilStateDescription.StencilWriteMask\">\n            <summary>\t\n            <dd> <p>A value that identifies a portion of the depth-stencil buffer for writing stencil data. The default value is <strong>D3D10_DEFAULT_STENCIL_WRITE_MASK</strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_DEPTH_STENCIL_DESC::StencilWriteMask']/*\"/>\t\n            <msdn-id>bb205036</msdn-id>\t\n            <unmanaged>unsigned char StencilWriteMask</unmanaged>\t\n            <unmanaged-short>unsigned char StencilWriteMask</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.DepthStencilStateDescription.FrontFace\">\n            <summary>\t\n            <dd> <p>A <strong><see cref=\"T:SharpDX.Direct3D10.DepthStencilOperationDescription\"/></strong> structure that identifies how to use the results of the depth test and the stencil test for pixels whose surface normal is facing toward the camera.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_DEPTH_STENCIL_DESC::FrontFace']/*\"/>\t\n            <msdn-id>bb205036</msdn-id>\t\n            <unmanaged>D3D10_DEPTH_STENCILOP_DESC FrontFace</unmanaged>\t\n            <unmanaged-short>D3D10_DEPTH_STENCILOP_DESC FrontFace</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.DepthStencilStateDescription.BackFace\">\n            <summary>\t\n            <dd> <p>A <strong><see cref=\"T:SharpDX.Direct3D10.DepthStencilOperationDescription\"/></strong> structure that identifies how to use the results of the depth test and the stencil test for pixels whose surface normal is facing away from the camera.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_DEPTH_STENCIL_DESC::BackFace']/*\"/>\t\n            <msdn-id>bb205036</msdn-id>\t\n            <unmanaged>D3D10_DEPTH_STENCILOP_DESC BackFace</unmanaged>\t\n            <unmanaged-short>D3D10_DEPTH_STENCILOP_DESC BackFace</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.DepthStencilViewDescription\">\n            <summary>\t\n            <p>Specifies the subresource(s) from a texture that are accessible using a depth-stencil view.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>These are valid formats for a depth-stencil view:</p><ul> <li><see cref=\"F:SharpDX.DXGI.Format.D16_UNorm\"/></li> <li><see cref=\"F:SharpDX.DXGI.Format.D24_UNorm_S8_UInt\"/></li> <li><see cref=\"F:SharpDX.DXGI.Format.D32_Float\"/></li> <li><see cref=\"F:SharpDX.DXGI.Format.D32_Float_S8X24_UInt\"/></li> <li><see cref=\"F:SharpDX.DXGI.Format.Unknown\"/></li> </ul><p>A depth-stencil view cannot use a typeless format.  If the format chosen is <see cref=\"F:SharpDX.DXGI.Format.Unknown\"/>, then the format of the parent resource is used.</p><p>A depth-stencil-view description is needed when calling <strong><see cref=\"M:SharpDX.Direct3D10.Device.CreateDepthStencilView(SharpDX.Direct3D10.Resource,System.Nullable{SharpDX.Direct3D10.DepthStencilViewDescription},SharpDX.Direct3D10.DepthStencilView)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_DEPTH_STENCIL_VIEW_DESC']/*\"/>\t\n            <msdn-id>bb205037</msdn-id>\t\n            <unmanaged>D3D10_DEPTH_STENCIL_VIEW_DESC</unmanaged>\t\n            <unmanaged-short>D3D10_DEPTH_STENCIL_VIEW_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.DepthStencilViewDescription.Format\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_DEPTH_STENCIL_VIEW_DESC::Format']/*\"/>\t\n            <unmanaged>DXGI_FORMAT Format</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT Format</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.DepthStencilViewDescription.Dimension\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_DEPTH_STENCIL_VIEW_DESC::ViewDimension']/*\"/>\t\n            <unmanaged>D3D10_DSV_DIMENSION ViewDimension</unmanaged>\t\n            <unmanaged-short>D3D10_DSV_DIMENSION ViewDimension</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.DepthStencilViewDescription.Texture1D\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_DEPTH_STENCIL_VIEW_DESC::Texture1D']/*\"/>\t\n            <unmanaged>D3D10_TEX1D_DSV Texture1D</unmanaged>\t\n            <unmanaged-short>D3D10_TEX1D_DSV Texture1D</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.DepthStencilViewDescription.Texture1DArray\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_DEPTH_STENCIL_VIEW_DESC::Texture1DArray']/*\"/>\t\n            <unmanaged>D3D10_TEX1D_ARRAY_DSV Texture1DArray</unmanaged>\t\n            <unmanaged-short>D3D10_TEX1D_ARRAY_DSV Texture1DArray</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.DepthStencilViewDescription.Texture2D\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_DEPTH_STENCIL_VIEW_DESC::Texture2D']/*\"/>\t\n            <unmanaged>D3D10_TEX2D_DSV Texture2D</unmanaged>\t\n            <unmanaged-short>D3D10_TEX2D_DSV Texture2D</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.DepthStencilViewDescription.Texture2DArray\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_DEPTH_STENCIL_VIEW_DESC::Texture2DArray']/*\"/>\t\n            <unmanaged>D3D10_TEX2D_ARRAY_DSV Texture2DArray</unmanaged>\t\n            <unmanaged-short>D3D10_TEX2D_ARRAY_DSV Texture2DArray</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.DepthStencilViewDescription.Texture2DMS\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_DEPTH_STENCIL_VIEW_DESC::Texture2DMS']/*\"/>\t\n            <unmanaged>D3D10_TEX2DMS_DSV Texture2DMS</unmanaged>\t\n            <unmanaged-short>D3D10_TEX2DMS_DSV Texture2DMS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.DepthStencilViewDescription.Texture2DMSArray\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_DEPTH_STENCIL_VIEW_DESC::Texture2DMSArray']/*\"/>\t\n            <unmanaged>D3D10_TEX2DMS_ARRAY_DSV Texture2DMSArray</unmanaged>\t\n            <unmanaged-short>D3D10_TEX2DMS_ARRAY_DSV Texture2DMSArray</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.DepthStencilViewDescription.Texture2DArrayResource\">\n            <summary>\t\n            <p>Specifies the subresource(s) from an array 2D textures that are accessible to a depth-stencil view.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure is one member of a depth-stencil-view description (see <strong><see cref=\"T:SharpDX.Direct3D10.DepthStencilViewDescription\"/></strong>).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEX2D_ARRAY_DSV']/*\"/>\t\n            <msdn-id>bb172470</msdn-id>\t\n            <unmanaged>D3D10_TEX2D_ARRAY_DSV</unmanaged>\t\n            <unmanaged-short>D3D10_TEX2D_ARRAY_DSV</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.DepthStencilViewDescription.Texture2DArrayResource.MipSlice\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEX2D_ARRAY_DSV::MipSlice']/*\"/>\t\n            <unmanaged>unsigned int MipSlice</unmanaged>\t\n            <unmanaged-short>unsigned int MipSlice</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.DepthStencilViewDescription.Texture2DArrayResource.FirstArraySlice\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEX2D_ARRAY_DSV::FirstArraySlice']/*\"/>\t\n            <unmanaged>unsigned int FirstArraySlice</unmanaged>\t\n            <unmanaged-short>unsigned int FirstArraySlice</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.DepthStencilViewDescription.Texture2DArrayResource.ArraySize\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEX2D_ARRAY_DSV::ArraySize']/*\"/>\t\n            <unmanaged>unsigned int ArraySize</unmanaged>\t\n            <unmanaged-short>unsigned int ArraySize</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.DepthStencilViewDescription.Texture2DMultisampledArrayResource\">\n            <summary>\t\n            <p>Specifies the subresource(s) from an array of multisampled 2D textures for a depth-stencil view.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure is one member of a depth-stencil-view description (see <strong><see cref=\"T:SharpDX.Direct3D10.DepthStencilViewDescription\"/></strong>).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEX2DMS_ARRAY_DSV']/*\"/>\t\n            <msdn-id>bb172464</msdn-id>\t\n            <unmanaged>D3D10_TEX2DMS_ARRAY_DSV</unmanaged>\t\n            <unmanaged-short>D3D10_TEX2DMS_ARRAY_DSV</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.DepthStencilViewDescription.Texture2DMultisampledArrayResource.FirstArraySlice\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEX2DMS_ARRAY_DSV::FirstArraySlice']/*\"/>\t\n            <unmanaged>unsigned int FirstArraySlice</unmanaged>\t\n            <unmanaged-short>unsigned int FirstArraySlice</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.DepthStencilViewDescription.Texture2DMultisampledArrayResource.ArraySize\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEX2DMS_ARRAY_DSV::ArraySize']/*\"/>\t\n            <unmanaged>unsigned int ArraySize</unmanaged>\t\n            <unmanaged-short>unsigned int ArraySize</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.DepthStencilViewDescription.Texture1DArrayResource\">\n            <summary>\t\n            <p>Specifies the subresource(s) from an array of 1D textures to use in a depth-stencil view.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure is one member of a depth-stencil-view description (see <strong><see cref=\"T:SharpDX.Direct3D10.DepthStencilViewDescription\"/></strong>).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEX1D_ARRAY_DSV']/*\"/>\t\n            <msdn-id>bb172458</msdn-id>\t\n            <unmanaged>D3D10_TEX1D_ARRAY_DSV</unmanaged>\t\n            <unmanaged-short>D3D10_TEX1D_ARRAY_DSV</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.DepthStencilViewDescription.Texture1DArrayResource.MipSlice\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEX1D_ARRAY_DSV::MipSlice']/*\"/>\t\n            <unmanaged>unsigned int MipSlice</unmanaged>\t\n            <unmanaged-short>unsigned int MipSlice</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.DepthStencilViewDescription.Texture1DArrayResource.FirstArraySlice\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEX1D_ARRAY_DSV::FirstArraySlice']/*\"/>\t\n            <unmanaged>unsigned int FirstArraySlice</unmanaged>\t\n            <unmanaged-short>unsigned int FirstArraySlice</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.DepthStencilViewDescription.Texture1DArrayResource.ArraySize\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEX1D_ARRAY_DSV::ArraySize']/*\"/>\t\n            <unmanaged>unsigned int ArraySize</unmanaged>\t\n            <unmanaged-short>unsigned int ArraySize</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.DepthStencilViewDescription.Texture1DResource\">\n            <summary>\t\n            <p>Specifies the subresource from a 1D texture that is accessible to a depth-stencil view.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure is one member of a depth-stencil-view description (see <strong><see cref=\"T:SharpDX.Direct3D10.DepthStencilViewDescription\"/></strong>).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEX1D_DSV']/*\"/>\t\n            <msdn-id>bb172461</msdn-id>\t\n            <unmanaged>D3D10_TEX1D_DSV</unmanaged>\t\n            <unmanaged-short>D3D10_TEX1D_DSV</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.DepthStencilViewDescription.Texture1DResource.MipSlice\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEX1D_DSV::MipSlice']/*\"/>\t\n            <unmanaged>unsigned int MipSlice</unmanaged>\t\n            <unmanaged-short>unsigned int MipSlice</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.DepthStencilViewDescription.Texture2DMultisampledResource\">\n            <summary>\t\n            <p>Specifies the subresource from a multisampled 2D texture that is accessible to a depth-stencil view.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Since a multisampled 2D texture contains a single subtexture, there is nothing to specify; this unused member is included so that this structure will compile in C.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEX2DMS_DSV']/*\"/>\t\n            <msdn-id>bb172467</msdn-id>\t\n            <unmanaged>D3D10_TEX2DMS_DSV</unmanaged>\t\n            <unmanaged-short>D3D10_TEX2DMS_DSV</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.DepthStencilViewDescription.Texture2DMultisampledResource.UnusedFieldNothingToDefine\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEX2DMS_DSV::UnusedField_NothingToDefine']/*\"/>\t\n            <unmanaged>unsigned int UnusedField_NothingToDefine</unmanaged>\t\n            <unmanaged-short>unsigned int UnusedField_NothingToDefine</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.DepthStencilViewDescription.Texture2DResource\">\n            <summary>\t\n            <p>Specifies the subresource from a 2D texture that is accessible to a depth-stencil view.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure is one member of a depth-stencil-view description (see <strong><see cref=\"T:SharpDX.Direct3D10.DepthStencilViewDescription\"/></strong>).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEX2D_DSV']/*\"/>\t\n            <msdn-id>bb172473</msdn-id>\t\n            <unmanaged>D3D10_TEX2D_DSV</unmanaged>\t\n            <unmanaged-short>D3D10_TEX2D_DSV</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.DepthStencilViewDescription.Texture2DResource.MipSlice\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEX2D_DSV::MipSlice']/*\"/>\t\n            <unmanaged>unsigned int MipSlice</unmanaged>\t\n            <unmanaged-short>unsigned int MipSlice</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.EffectDescription\">\n            <summary>\t\n            <p>Describes an effect.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>To get an effect description, call <strong><see cref=\"M:SharpDX.Direct3D10.Effect.GetDescription(SharpDX.Direct3D10.EffectDescription@)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_EFFECT_DESC']/*\"/>\t\n            <msdn-id>bb205047</msdn-id>\t\n            <unmanaged>D3D10_EFFECT_DESC</unmanaged>\t\n            <unmanaged-short>D3D10_EFFECT_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.EffectDescription.IsChildEffect\">\n            <summary>\t\n            <dd> <p><strong>TRUE</strong> if the effect is a child effect; otherwise <strong><see cref=\"F:SharpDX.Result.False\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_EFFECT_DESC::IsChildEffect']/*\"/>\t\n            <msdn-id>bb205047</msdn-id>\t\n            <unmanaged>BOOL IsChildEffect</unmanaged>\t\n            <unmanaged-short>BOOL IsChildEffect</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.EffectDescription.ConstantBufferCount\">\n            <summary>\t\n            <dd> <p>The number of constant buffers.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_EFFECT_DESC::ConstantBuffers']/*\"/>\t\n            <msdn-id>bb205047</msdn-id>\t\n            <unmanaged>unsigned int ConstantBuffers</unmanaged>\t\n            <unmanaged-short>unsigned int ConstantBuffers</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.EffectDescription.SharedConstantBufferCount\">\n            <summary>\t\n            <dd> <p>The number of constant buffers shared in an effect pool.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_EFFECT_DESC::SharedConstantBuffers']/*\"/>\t\n            <msdn-id>bb205047</msdn-id>\t\n            <unmanaged>unsigned int SharedConstantBuffers</unmanaged>\t\n            <unmanaged-short>unsigned int SharedConstantBuffers</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.EffectDescription.GlobalVariableCount\">\n            <summary>\t\n            <dd> <p>The number of global variables.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_EFFECT_DESC::GlobalVariables']/*\"/>\t\n            <msdn-id>bb205047</msdn-id>\t\n            <unmanaged>unsigned int GlobalVariables</unmanaged>\t\n            <unmanaged-short>unsigned int GlobalVariables</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.EffectDescription.SharedGlobalVariableCount\">\n            <summary>\t\n            <dd> <p>The number of global variables shared in an effect pool.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_EFFECT_DESC::SharedGlobalVariables']/*\"/>\t\n            <msdn-id>bb205047</msdn-id>\t\n            <unmanaged>unsigned int SharedGlobalVariables</unmanaged>\t\n            <unmanaged-short>unsigned int SharedGlobalVariables</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.EffectDescription.TechniqueCount\">\n            <summary>\t\n            <dd> <p>The number of techniques.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_EFFECT_DESC::Techniques']/*\"/>\t\n            <msdn-id>bb205047</msdn-id>\t\n            <unmanaged>unsigned int Techniques</unmanaged>\t\n            <unmanaged-short>unsigned int Techniques</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.EffectTechniqueDescription\">\n            <summary>\t\n            <p>Describes an effect technique.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>To get a technique, call <strong><see cref=\"M:SharpDX.Direct3D10.EffectTechnique.GetDescription(SharpDX.Direct3D10.EffectTechniqueDescription@)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TECHNIQUE_DESC']/*\"/>\t\n            <msdn-id>bb172457</msdn-id>\t\n            <unmanaged>D3D10_TECHNIQUE_DESC</unmanaged>\t\n            <unmanaged-short>D3D10_TECHNIQUE_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.EffectTechniqueDescription.Name\">\n            <summary>\t\n            <dd> <p>A string that contains the technique name; otherwise <strong><c>null</c></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TECHNIQUE_DESC::Name']/*\"/>\t\n            <msdn-id>bb172457</msdn-id>\t\n            <unmanaged>const char* Name</unmanaged>\t\n            <unmanaged-short>char Name</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.EffectTechniqueDescription.PassCount\">\n            <summary>\t\n            <dd> <p>The number of passes in the technique.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TECHNIQUE_DESC::Passes']/*\"/>\t\n            <msdn-id>bb172457</msdn-id>\t\n            <unmanaged>unsigned int Passes</unmanaged>\t\n            <unmanaged-short>unsigned int Passes</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.EffectTechniqueDescription.AnnotationCount\">\n            <summary>\t\n            <dd> <p>The number of annotations.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TECHNIQUE_DESC::Annotations']/*\"/>\t\n            <msdn-id>bb172457</msdn-id>\t\n            <unmanaged>unsigned int Annotations</unmanaged>\t\n            <unmanaged-short>unsigned int Annotations</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.EffectTypeDescription\">\n            <summary>\t\n            <p>Describes an effect-variable type.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>To get an effect-variable type, call <strong><see cref=\"M:SharpDX.Direct3D10.EffectType.GetDescription(SharpDX.Direct3D10.EffectTypeDescription@)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_EFFECT_TYPE_DESC']/*\"/>\t\n            <msdn-id>bb205054</msdn-id>\t\n            <unmanaged>D3D10_EFFECT_TYPE_DESC</unmanaged>\t\n            <unmanaged-short>D3D10_EFFECT_TYPE_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.EffectTypeDescription.TypeName\">\n            <summary>\t\n            <dd> <p>A string that contains the variable name.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_EFFECT_TYPE_DESC::TypeName']/*\"/>\t\n            <msdn-id>bb205054</msdn-id>\t\n            <unmanaged>const char* TypeName</unmanaged>\t\n            <unmanaged-short>char TypeName</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.EffectTypeDescription.Class\">\n            <summary>\t\n            <dd> <p>The variable class (see <strong>D3D10_SHADER_VARIABLE_CLASS</strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_EFFECT_TYPE_DESC::Class']/*\"/>\t\n            <msdn-id>bb205054</msdn-id>\t\n            <unmanaged>D3D_SHADER_VARIABLE_CLASS Class</unmanaged>\t\n            <unmanaged-short>D3D_SHADER_VARIABLE_CLASS Class</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.EffectTypeDescription.Type\">\n            <summary>\t\n            <dd> <p>The variable type (see <strong>D3D10_SHADER_VARIABLE_TYPE</strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_EFFECT_TYPE_DESC::Type']/*\"/>\t\n            <msdn-id>bb205054</msdn-id>\t\n            <unmanaged>D3D_SHADER_VARIABLE_TYPE Type</unmanaged>\t\n            <unmanaged-short>D3D_SHADER_VARIABLE_TYPE Type</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.EffectTypeDescription.Elements\">\n            <summary>\t\n            <dd> <p>The number of elements if the variable is an array; otherwise 0.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_EFFECT_TYPE_DESC::Elements']/*\"/>\t\n            <msdn-id>bb205054</msdn-id>\t\n            <unmanaged>unsigned int Elements</unmanaged>\t\n            <unmanaged-short>unsigned int Elements</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.EffectTypeDescription.Members\">\n            <summary>\t\n            <dd> <p>The number of members if the variable is a structure; otherwise 0.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_EFFECT_TYPE_DESC::Members']/*\"/>\t\n            <msdn-id>bb205054</msdn-id>\t\n            <unmanaged>unsigned int Members</unmanaged>\t\n            <unmanaged-short>unsigned int Members</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.EffectTypeDescription.Rows\">\n            <summary>\t\n            <dd> <p>The number of rows if the variable is a matrix; otherwise 0.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_EFFECT_TYPE_DESC::Rows']/*\"/>\t\n            <msdn-id>bb205054</msdn-id>\t\n            <unmanaged>unsigned int Rows</unmanaged>\t\n            <unmanaged-short>unsigned int Rows</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.EffectTypeDescription.Columns\">\n            <summary>\t\n            <dd> <p>The number of columns if the variable is a matrix; otherwise 0.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_EFFECT_TYPE_DESC::Columns']/*\"/>\t\n            <msdn-id>bb205054</msdn-id>\t\n            <unmanaged>unsigned int Columns</unmanaged>\t\n            <unmanaged-short>unsigned int Columns</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.EffectTypeDescription.PackedSize\">\n            <summary>\t\n            <dd> <p>The number of bytes that the variable consumes when it is packed tightly by the compiler.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_EFFECT_TYPE_DESC::PackedSize']/*\"/>\t\n            <msdn-id>bb205054</msdn-id>\t\n            <unmanaged>unsigned int PackedSize</unmanaged>\t\n            <unmanaged-short>unsigned int PackedSize</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.EffectTypeDescription.UnpackedSize\">\n            <summary>\t\n            <dd> <p>The number of bytes that the variable consumes before it is packed by the compiler.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_EFFECT_TYPE_DESC::UnpackedSize']/*\"/>\t\n            <msdn-id>bb205054</msdn-id>\t\n            <unmanaged>unsigned int UnpackedSize</unmanaged>\t\n            <unmanaged-short>unsigned int UnpackedSize</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.EffectTypeDescription.Stride\">\n            <summary>\t\n            <dd> <p>The number of bytes between elements.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_EFFECT_TYPE_DESC::Stride']/*\"/>\t\n            <msdn-id>bb205054</msdn-id>\t\n            <unmanaged>unsigned int Stride</unmanaged>\t\n            <unmanaged-short>unsigned int Stride</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.EffectVariableDescription\">\n            <summary>\t\n            <p>Describes an effect variable.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>To get an effect-variable description, call <strong><see cref=\"M:SharpDX.Direct3D10.EffectVariable.GetDescription(SharpDX.Direct3D10.EffectVariableDescription@)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_EFFECT_VARIABLE_DESC']/*\"/>\t\n            <msdn-id>bb205056</msdn-id>\t\n            <unmanaged>D3D10_EFFECT_VARIABLE_DESC</unmanaged>\t\n            <unmanaged-short>D3D10_EFFECT_VARIABLE_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.EffectVariableDescription.Name\">\n            <summary>\t\n            <dd> <p>A string that contains the variable name.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_EFFECT_VARIABLE_DESC::Name']/*\"/>\t\n            <msdn-id>bb205056</msdn-id>\t\n            <unmanaged>const char* Name</unmanaged>\t\n            <unmanaged-short>char Name</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.EffectVariableDescription.Semantic\">\n            <summary>\t\n            <dd> <p>The semantic attached to the variable; otherwise <strong><c>null</c></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_EFFECT_VARIABLE_DESC::Semantic']/*\"/>\t\n            <msdn-id>bb205056</msdn-id>\t\n            <unmanaged>const char* Semantic</unmanaged>\t\n            <unmanaged-short>char Semantic</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.EffectVariableDescription.Flags\">\n            <summary>\t\n            <dd> <p>Optional flags for effect variables. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_EFFECT_VARIABLE_DESC::Flags']/*\"/>\t\n            <msdn-id>bb205056</msdn-id>\t\n            <unmanaged>D3D10_EFFECT_VARIABLE_FLAGS Flags</unmanaged>\t\n            <unmanaged-short>D3D10_EFFECT_VARIABLE_FLAGS Flags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.EffectVariableDescription.AnnotationCount\">\n            <summary>\t\n            <dd> <p>The number of annotations; otherwise 0.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_EFFECT_VARIABLE_DESC::Annotations']/*\"/>\t\n            <msdn-id>bb205056</msdn-id>\t\n            <unmanaged>unsigned int Annotations</unmanaged>\t\n            <unmanaged-short>unsigned int Annotations</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.EffectVariableDescription.BufferOffset\">\n            <summary>\t\n            <dd> <p>The offset between the beginning of the constant buffer and this variable; otherwise 0.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_EFFECT_VARIABLE_DESC::BufferOffset']/*\"/>\t\n            <msdn-id>bb205056</msdn-id>\t\n            <unmanaged>unsigned int BufferOffset</unmanaged>\t\n            <unmanaged-short>unsigned int BufferOffset</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.EffectVariableDescription.ExplicitBindPoint\">\n            <summary>\t\n            <dd> <p>The register that this variable is bound to. To bind a variable explicitly use the <see cref=\"F:SharpDX.Direct3D10.EffectVariableFlags.ExplicitBindPoint\"/> flag.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_EFFECT_VARIABLE_DESC::ExplicitBindPoint']/*\"/>\t\n            <msdn-id>bb205056</msdn-id>\t\n            <unmanaged>unsigned int ExplicitBindPoint</unmanaged>\t\n            <unmanaged-short>unsigned int ExplicitBindPoint</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.FontDescription\">\n            <summary>\t\n            <p>Defines font attributes.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The compiler setting also determines the structure type. If Unicode is defined, the <see cref=\"T:SharpDX.Direct3D10.FontDescription\"/> structure type resolves to a <see cref=\"T:SharpDX.Direct3D10.FontDescription\"/>; otherwise the structure type resolves to a D3DX10_FONT_DESCA.</p><p>Possible values of the above members are given in the GDI <see cref=\"T:SharpDX.Win32Native.LogFont\"/> structure.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_FONT_DESCW']/*\"/>\t\n            <msdn-id>bb172693</msdn-id>\t\n            <unmanaged>D3DX10_FONT_DESCW</unmanaged>\t\n            <unmanaged-short>D3DX10_FONT_DESCW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FontDescription.Height\">\n            <summary>\t\n            <dd> <p>Height, in logical units, of the font's character cell or character.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_FONT_DESCW::Height']/*\"/>\t\n            <msdn-id>bb172693</msdn-id>\t\n            <unmanaged>int Height</unmanaged>\t\n            <unmanaged-short>int Height</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FontDescription.Width\">\n            <summary>\t\n            <dd> <p>Width, in logical units, of characters in the font.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_FONT_DESCW::Width']/*\"/>\t\n            <msdn-id>bb172693</msdn-id>\t\n            <unmanaged>unsigned int Width</unmanaged>\t\n            <unmanaged-short>unsigned int Width</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FontDescription.Weight\">\n            <summary>\t\n            <dd> <p>Weight of the font in the range from 0 through 1000.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_FONT_DESCW::Weight']/*\"/>\t\n            <msdn-id>bb172693</msdn-id>\t\n            <unmanaged>D3DX10_FONT_WEIGHT Weight</unmanaged>\t\n            <unmanaged-short>D3DX10_FONT_WEIGHT Weight</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FontDescription.MipLevels\">\n            <summary>\t\n            <dd> <p>Number of mipmap levels requested. If this value is zero or D3DX_DEFAULT, a complete mipmap chain is created. If the value is 1, the texture space is mapped identically to the screen space.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_FONT_DESCW::MipLevels']/*\"/>\t\n            <msdn-id>bb172693</msdn-id>\t\n            <unmanaged>unsigned int MipLevels</unmanaged>\t\n            <unmanaged-short>unsigned int MipLevels</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FontDescription.Italic\">\n            <summary>\t\n            <dd> <p>Set to <strong>TRUE</strong> for an Italic font.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_FONT_DESCW::Italic']/*\"/>\t\n            <msdn-id>bb172693</msdn-id>\t\n            <unmanaged>BOOL Italic</unmanaged>\t\n            <unmanaged-short>BOOL Italic</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FontDescription.CharacterSet\">\n            <summary>\t\n            <dd> <p>Character set.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_FONT_DESCW::CharSet']/*\"/>\t\n            <msdn-id>bb172693</msdn-id>\t\n            <unmanaged>D3DX10_FONT_CHARSET CharSet</unmanaged>\t\n            <unmanaged-short>D3DX10_FONT_CHARSET CharSet</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FontDescription.OutputPrecision\">\n            <summary>\t\n            <dd> <p>Output precision. The output precision defines how closely the output must match the requested font height, width, character orientation, escapement, pitch, and font type.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_FONT_DESCW::OutputPrecision']/*\"/>\t\n            <msdn-id>bb172693</msdn-id>\t\n            <unmanaged>D3DX10_FONT_PRECISION OutputPrecision</unmanaged>\t\n            <unmanaged-short>D3DX10_FONT_PRECISION OutputPrecision</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FontDescription.Quality\">\n            <summary>\t\n            <dd> <p>Output quality.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_FONT_DESCW::Quality']/*\"/>\t\n            <msdn-id>bb172693</msdn-id>\t\n            <unmanaged>D3DX10_FONT_QUALITY Quality</unmanaged>\t\n            <unmanaged-short>D3DX10_FONT_QUALITY Quality</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FontDescription.PitchAndFamily\">\n            <summary>\t\n            <dd> <p>Pitch and family of the font.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_FONT_DESCW::PitchAndFamily']/*\"/>\t\n            <msdn-id>bb172693</msdn-id>\t\n            <unmanaged>D3DX10_FONT_PITCHFAMILY PitchAndFamily</unmanaged>\t\n            <unmanaged-short>D3DX10_FONT_PITCHFAMILY PitchAndFamily</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.FontDescription.FaceName\">\n            <summary>\t\n            <dd> <p>A <c>null</c>-terminated string that specifies the typeface name of the font. The length of the string must not exceed 32 characters, including the terminating <strong><c>null</c></strong> character. If FaceName is an empty string, the first font that matches the other specified attributes will be used. If the compiler settings require Unicode, the data type TCHAR resolves to WCHAR; otherwise, the data type resolves to CHAR. See Remarks.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_FONT_DESCW::FaceName']/*\"/>\t\n            <msdn-id>bb172693</msdn-id>\t\n            <unmanaged>wchar_t FaceName[32]</unmanaged>\t\n            <unmanaged-short>wchar_t FaceName</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.ImageInformation\">\n            <summary>\t\n            <p>Returns a description of the original contents of an image file.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_IMAGE_INFO']/*\"/>\t\n            <msdn-id>bb172695</msdn-id>\t\n            <unmanaged>D3DX10_IMAGE_INFO</unmanaged>\t\n            <unmanaged-short>D3DX10_IMAGE_INFO</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ImageInformation.Width\">\n            <summary>\t\n            <dd> <p>Width of original image in pixels.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_IMAGE_INFO::Width']/*\"/>\t\n            <msdn-id>bb172695</msdn-id>\t\n            <unmanaged>unsigned int Width</unmanaged>\t\n            <unmanaged-short>unsigned int Width</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ImageInformation.Height\">\n            <summary>\t\n            <dd> <p>Height of original image in pixels.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_IMAGE_INFO::Height']/*\"/>\t\n            <msdn-id>bb172695</msdn-id>\t\n            <unmanaged>unsigned int Height</unmanaged>\t\n            <unmanaged-short>unsigned int Height</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ImageInformation.Depth\">\n            <summary>\t\n            <dd> <p>Depth of original image in pixels.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_IMAGE_INFO::Depth']/*\"/>\t\n            <msdn-id>bb172695</msdn-id>\t\n            <unmanaged>unsigned int Depth</unmanaged>\t\n            <unmanaged-short>unsigned int Depth</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ImageInformation.ArraySize\">\n            <summary>\t\n            <dd> <p>Size of the texture array. <em>ArraySize</em> will be 1 for a single image.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_IMAGE_INFO::ArraySize']/*\"/>\t\n            <msdn-id>bb172695</msdn-id>\t\n            <unmanaged>unsigned int ArraySize</unmanaged>\t\n            <unmanaged-short>unsigned int ArraySize</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ImageInformation.MipLevels\">\n            <summary>\t\n            <dd> <p>Number of mipmap levels in original image.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_IMAGE_INFO::MipLevels']/*\"/>\t\n            <msdn-id>bb172695</msdn-id>\t\n            <unmanaged>unsigned int MipLevels</unmanaged>\t\n            <unmanaged-short>unsigned int MipLevels</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ImageInformation.OptionFlags\">\n            <summary>\t\n            <dd> <p>Miscellaneous resource properties (see <strong><see cref=\"T:SharpDX.Direct3D10.ResourceOptionFlags\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_IMAGE_INFO::MiscFlags']/*\"/>\t\n            <msdn-id>bb172695</msdn-id>\t\n            <unmanaged>D3D10_RESOURCE_MISC_FLAG MiscFlags</unmanaged>\t\n            <unmanaged-short>D3D10_RESOURCE_MISC_FLAG MiscFlags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ImageInformation.Format\">\n            <summary>\t\n            <dd> <p>A value from the <strong><see cref=\"T:SharpDX.DXGI.Format\"/></strong> enumerated type that most closely describes the data in the original image.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_IMAGE_INFO::Format']/*\"/>\t\n            <msdn-id>bb172695</msdn-id>\t\n            <unmanaged>DXGI_FORMAT Format</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT Format</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ImageInformation.ResourceDimension\">\n            <summary>\t\n            <dd> <p>Represents the type of the texture stored in the file. See <strong><see cref=\"T:SharpDX.Direct3D10.ResourceDimension\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_IMAGE_INFO::ResourceDimension']/*\"/>\t\n            <msdn-id>bb172695</msdn-id>\t\n            <unmanaged>D3D10_RESOURCE_DIMENSION ResourceDimension</unmanaged>\t\n            <unmanaged-short>D3D10_RESOURCE_DIMENSION ResourceDimension</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ImageInformation.ImageFileFormat\">\n            <summary>\t\n            <dd> <p>Represents the format of the image file.  See <strong><see cref=\"T:SharpDX.Direct3D10.ImageFileFormat\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_IMAGE_INFO::ImageFileFormat']/*\"/>\t\n            <msdn-id>bb172695</msdn-id>\t\n            <unmanaged>D3DX10_IMAGE_FILE_FORMAT ImageFileFormat</unmanaged>\t\n            <unmanaged-short>D3DX10_IMAGE_FILE_FORMAT ImageFileFormat</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.ImageInformation.FromFile(System.String)\">\n            <summary>\t\n            Retrieves information about a given image file.\t\n            </summary>\t\n            <param name=\"fileName\">File name of image to retrieve information about.</param>\n            <returns>If the function succeeds, returns a <see cref=\"T:SharpDX.Direct3D10.ImageInformation\"/> filled with the description of the data in the source file. else returns null </returns>\n            <unmanaged>HRESULT D3DX11GetImageInfoFromFileW([None] const wchar_t* pSrcFile,[None] ID3DX11ThreadPump* pPump,[None] D3DX11_IMAGE_INFO* pSrcInfo,[None] HRESULT* pHResult)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.ImageInformation.FromMemory(System.Byte[])\">\n            <summary>\t\n            Retrieves information about a given image file from a memory location.\n            </summary>\t\n            <param name=\"memory\">an array to the image in memory</param>\n            <returns>If the function succeeds, returns a <see cref=\"T:SharpDX.Direct3D10.ImageInformation\"/> filled with the description of the data from the image memory. else returns null </returns>\n            <unmanaged>HRESULT D3DX11GetImageInfoFromFileW([None] const wchar_t* pSrcFile,[None] ID3DX11ThreadPump* pPump,[None] D3DX11_IMAGE_INFO* pSrcInfo,[None] HRESULT* pHResult)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.ImageLoadInformation\">\n            <summary>\t\n            <p>Optionally provide information to texture loader APIs to control how textures get loaded. A value of D3DX10_DEFAULT for any of these parameters will cause D3DX to automatically use the value from the source file.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>When initializing the structure, you may set any member to D3DX10_DEFAULT and D3DX will initialize it with a default value from the source texture when the texture is loaded.</p><p>This structure can be used by APIs that:</p><ul> <li>Create resources, such as <strong><see cref=\"M:SharpDX.Direct3D10.D3DX10.CreateTextureFromFile(SharpDX.Direct3D10.Device,System.String,System.Nullable{SharpDX.Direct3D10.ImageLoadInformation},System.IntPtr,System.IntPtr@,SharpDX.Result@)\"/></strong> and <strong><see cref=\"M:SharpDX.Direct3D10.D3DX10.CreateShaderResourceViewFromFile(SharpDX.Direct3D10.Device,System.String,System.Nullable{SharpDX.Direct3D10.ImageLoadInformation},System.IntPtr,SharpDX.Direct3D10.ShaderResourceView@,SharpDX.Result@)\"/></strong>.</li> <li>Create data processors, such as <strong>D3DX10CreateAsyncTextureInfoProcessor</strong> or\t\n            <strong>D3DX10CreateAsyncShaderResourceViewProcessor</strong>.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_IMAGE_LOAD_INFO']/*\"/>\t\n            <msdn-id>bb172696</msdn-id>\t\n            <unmanaged>D3DX10_IMAGE_LOAD_INFO</unmanaged>\t\n            <unmanaged-short>D3DX10_IMAGE_LOAD_INFO</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ImageLoadInformation.FileDefaultValue\">\n            <summary>\n            The default value for load options.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ImageLoadInformation.Width\">\n            <summary>\t\n            <dd> <p>The target width of the texture. If the actual width of the texture is larger or smaller than this value then the texture will be scaled up or down to fit this target width.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_IMAGE_LOAD_INFO::Width']/*\"/>\t\n            <msdn-id>bb172696</msdn-id>\t\n            <unmanaged>unsigned int Width</unmanaged>\t\n            <unmanaged-short>unsigned int Width</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ImageLoadInformation.Height\">\n            <summary>\t\n            <dd> <p>The target height of the texture. If the actual height of the texture is larger or smaller than this value then the texture will be scaled up or down to fit this target height.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_IMAGE_LOAD_INFO::Height']/*\"/>\t\n            <msdn-id>bb172696</msdn-id>\t\n            <unmanaged>unsigned int Height</unmanaged>\t\n            <unmanaged-short>unsigned int Height</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ImageLoadInformation.Depth\">\n            <summary>\t\n            <dd> <p>The depth of the texture. This only applies to volume textures.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_IMAGE_LOAD_INFO::Depth']/*\"/>\t\n            <msdn-id>bb172696</msdn-id>\t\n            <unmanaged>unsigned int Depth</unmanaged>\t\n            <unmanaged-short>unsigned int Depth</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ImageLoadInformation.FirstMipLevel\">\n            <summary>\t\n            <dd> <p>The highest resolution mipmap level of the texture. If this is greater than 0, then after the texture is loaded FirstMipLevel will be mapped to mipmap level 0.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_IMAGE_LOAD_INFO::FirstMipLevel']/*\"/>\t\n            <msdn-id>bb172696</msdn-id>\t\n            <unmanaged>unsigned int FirstMipLevel</unmanaged>\t\n            <unmanaged-short>unsigned int FirstMipLevel</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ImageLoadInformation.MipLevels\">\n            <summary>\t\n            <dd> <p>The maximum number of mipmap levels that the texture will have. Using 0 or D3DX10_DEFAULT will cause a full mipmap chain to be created.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_IMAGE_LOAD_INFO::MipLevels']/*\"/>\t\n            <msdn-id>bb172696</msdn-id>\t\n            <unmanaged>unsigned int MipLevels</unmanaged>\t\n            <unmanaged-short>unsigned int MipLevels</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ImageLoadInformation.Usage\">\n            <summary>\t\n            <dd> <p>The way the texture resource is intended to be used. See <strong><see cref=\"T:SharpDX.Direct3D10.ResourceUsage\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_IMAGE_LOAD_INFO::Usage']/*\"/>\t\n            <msdn-id>bb172696</msdn-id>\t\n            <unmanaged>D3D10_USAGE Usage</unmanaged>\t\n            <unmanaged-short>D3D10_USAGE Usage</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ImageLoadInformation.BindFlags\">\n            <summary>\t\n            <dd> <p>The pipeline stages that the texture will be allowed to bind to. See <strong><see cref=\"T:SharpDX.Direct3D10.BindFlags\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_IMAGE_LOAD_INFO::BindFlags']/*\"/>\t\n            <msdn-id>bb172696</msdn-id>\t\n            <unmanaged>D3D10_BIND_FLAG BindFlags</unmanaged>\t\n            <unmanaged-short>D3D10_BIND_FLAG BindFlags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ImageLoadInformation.CpuAccessFlags\">\n            <summary>\t\n            <dd> <p>The access permissions the cpu will have for the texture resource. See <strong><see cref=\"T:SharpDX.Direct3D10.CpuAccessFlags\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_IMAGE_LOAD_INFO::CpuAccessFlags']/*\"/>\t\n            <msdn-id>bb172696</msdn-id>\t\n            <unmanaged>D3D10_CPU_ACCESS_FLAG CpuAccessFlags</unmanaged>\t\n            <unmanaged-short>D3D10_CPU_ACCESS_FLAG CpuAccessFlags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ImageLoadInformation.OptionFlags\">\n            <summary>\t\n            <dd> <p>Miscellaneous resource properties (see <strong><see cref=\"T:SharpDX.Direct3D10.ResourceOptionFlags\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_IMAGE_LOAD_INFO::MiscFlags']/*\"/>\t\n            <msdn-id>bb172696</msdn-id>\t\n            <unmanaged>D3D10_RESOURCE_MISC_FLAG MiscFlags</unmanaged>\t\n            <unmanaged-short>D3D10_RESOURCE_MISC_FLAG MiscFlags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ImageLoadInformation.Format\">\n            <summary>\t\n            <dd> <p>The format the texture will be in after it is loaded. See <strong><see cref=\"T:SharpDX.DXGI.Format\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_IMAGE_LOAD_INFO::Format']/*\"/>\t\n            <msdn-id>bb172696</msdn-id>\t\n            <unmanaged>DXGI_FORMAT Format</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT Format</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ImageLoadInformation.Filter\">\n            <summary>\t\n            <dd> <p>Filter the texture using the specified filter (only when resampling). See <strong><see cref=\"T:SharpDX.Direct3D10.FilterFlags\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_IMAGE_LOAD_INFO::Filter']/*\"/>\t\n            <msdn-id>bb172696</msdn-id>\t\n            <unmanaged>D3DX10_FILTER_FLAG Filter</unmanaged>\t\n            <unmanaged-short>D3DX10_FILTER_FLAG Filter</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ImageLoadInformation.MipFilter\">\n            <summary>\t\n            <dd> <p>Filter the texture mip levels using the specified filter (only if generating mipmaps). Valid values are <see cref=\"F:SharpDX.Direct3D10.FilterFlags.None\"/>, <see cref=\"F:SharpDX.Direct3D10.FilterFlags.Point\"/>, <see cref=\"F:SharpDX.Direct3D10.FilterFlags.Linear\"/>, or <see cref=\"F:SharpDX.Direct3D10.FilterFlags.Triangle\"/>. See <strong><see cref=\"T:SharpDX.Direct3D10.FilterFlags\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_IMAGE_LOAD_INFO::MipFilter']/*\"/>\t\n            <msdn-id>bb172696</msdn-id>\t\n            <unmanaged>D3DX10_FILTER_FLAG MipFilter</unmanaged>\t\n            <unmanaged-short>D3DX10_FILTER_FLAG MipFilter</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ImageLoadInformation.PSrcInfo\">\n            <summary>\t\n            <dd> <p>Information about the original image. See <strong><see cref=\"T:SharpDX.Direct3D10.ImageInformation\"/></strong>. Can be obtained with <strong><see cref=\"M:SharpDX.Direct3D10.D3DX10.GetImageInfoFromFile(System.String,System.IntPtr,SharpDX.Direct3D10.ImageInformation@,SharpDX.Result@)\"/></strong>, <strong><see cref=\"M:SharpDX.Direct3D10.D3DX10.GetImageInfoFromMemory(System.IntPtr,SharpDX.PointerSize,System.IntPtr,SharpDX.Direct3D10.ImageInformation@,SharpDX.Result@)\"/></strong>, or <strong><see cref=\"M:SharpDX.Direct3D10.D3DX10.GetImageInfoFromResource(System.IntPtr,System.String,System.IntPtr,SharpDX.Direct3D10.ImageInformation@,SharpDX.Result@)\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_IMAGE_LOAD_INFO::pSrcInfo']/*\"/>\t\n            <msdn-id>bb172696</msdn-id>\t\n            <unmanaged>D3DX10_IMAGE_INFO* pSrcInfo</unmanaged>\t\n            <unmanaged-short>D3DX10_IMAGE_INFO pSrcInfo</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ImageLoadInformation.Default\">\n            <summary>\n            Gets an ImageLoadInformation that is setup with all default values (<see cref=\"F:SharpDX.Direct3D10.ImageLoadInformation.FileDefaultValue\"/>).\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.InfoQueueFilter\">\n            <summary>\t\n            <p>Debug message filter; contains a lists of message types to allow or deny.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>For use with an <strong><see cref=\"T:SharpDX.Direct3D10.InfoQueue\"/> Interface</strong>.</p><p>Providing an allow list with non-zero values causes only the specified combination of categories, severities and message IDs to be allowed.   Messages that do not match the specified combination will be rejected.</p><p>Providing a deny list with non-zero values causes the specified combination of categories, severities and message IDs to be rejected. Messages that do not match the specified combination will be allowed.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_INFO_QUEUE_FILTER']/*\"/>\t\n            <msdn-id>bb205313</msdn-id>\t\n            <unmanaged>D3D10_INFO_QUEUE_FILTER</unmanaged>\t\n            <unmanaged-short>D3D10_INFO_QUEUE_FILTER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.InfoQueueFilter.AllowList\">\n            <summary>\t\n            <dd> <p>A <strong><see cref=\"T:SharpDX.Direct3D10.InfoQueueFilterDescription\"/></strong> structure describing the types of messages the info queue should allow.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_INFO_QUEUE_FILTER::AllowList']/*\"/>\t\n            <msdn-id>bb205313</msdn-id>\t\n            <unmanaged>D3D10_INFO_QUEUE_FILTER_DESC AllowList</unmanaged>\t\n            <unmanaged-short>D3D10_INFO_QUEUE_FILTER_DESC AllowList</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.InfoQueueFilter.DenyList\">\n            <summary>\t\n            <dd> <p>A <strong><see cref=\"T:SharpDX.Direct3D10.InfoQueueFilterDescription\"/></strong> structure describing the types of messages the info queue should reject.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_INFO_QUEUE_FILTER::DenyList']/*\"/>\t\n            <msdn-id>bb205313</msdn-id>\t\n            <unmanaged>D3D10_INFO_QUEUE_FILTER_DESC DenyList</unmanaged>\t\n            <unmanaged-short>D3D10_INFO_QUEUE_FILTER_DESC DenyList</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.InfoQueueFilterDescription\">\n            <summary>\t\n            <p>Allow or deny certain types of messages to pass through a filter.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p><strong><see cref=\"T:SharpDX.Direct3D10.InfoQueueFilterDescription\"/></strong> is used to define the allow list and deny list in the <strong><see cref=\"T:SharpDX.Direct3D10.InfoQueueFilter\"/></strong> structure.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_INFO_QUEUE_FILTER_DESC']/*\"/>\t\n            <msdn-id>bb205314</msdn-id>\t\n            <unmanaged>D3D10_INFO_QUEUE_FILTER_DESC</unmanaged>\t\n            <unmanaged-short>D3D10_INFO_QUEUE_FILTER_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.InfoQueueFilterDescription.CategorieCount\">\n            <summary>\t\n            <dd> <p>Number of message categories to allow or deny.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_INFO_QUEUE_FILTER_DESC::NumCategories']/*\"/>\t\n            <msdn-id>bb205314</msdn-id>\t\n            <unmanaged>unsigned int NumCategories</unmanaged>\t\n            <unmanaged-short>unsigned int NumCategories</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.InfoQueueFilterDescription.PCategoryList\">\n            <summary>\t\n            <dd> <p>Array of message categories to allow or deny. Array must have at least NumCategories members (see <strong><see cref=\"T:SharpDX.Direct3D10.MessageCategory\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_INFO_QUEUE_FILTER_DESC::pCategoryList']/*\"/>\t\n            <msdn-id>bb205314</msdn-id>\t\n            <unmanaged>D3D10_MESSAGE_CATEGORY* pCategoryList</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_CATEGORY pCategoryList</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.InfoQueueFilterDescription.SeveritieCount\">\n            <summary>\t\n            <dd> <p>Number of message severity levels to allow or deny.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_INFO_QUEUE_FILTER_DESC::NumSeverities']/*\"/>\t\n            <msdn-id>bb205314</msdn-id>\t\n            <unmanaged>unsigned int NumSeverities</unmanaged>\t\n            <unmanaged-short>unsigned int NumSeverities</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.InfoQueueFilterDescription.PSeverityList\">\n            <summary>\t\n            <dd> <p>Array of message severity levels to allow or deny. Array must have at least NumSeverities members (see <strong><see cref=\"T:SharpDX.Direct3D10.MessageSeverity\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_INFO_QUEUE_FILTER_DESC::pSeverityList']/*\"/>\t\n            <msdn-id>bb205314</msdn-id>\t\n            <unmanaged>D3D10_MESSAGE_SEVERITY* pSeverityList</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_SEVERITY pSeverityList</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.InfoQueueFilterDescription.IDCount\">\n            <summary>\t\n            <dd> <p>Number of message IDs to allow or deny.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_INFO_QUEUE_FILTER_DESC::NumIDs']/*\"/>\t\n            <msdn-id>bb205314</msdn-id>\t\n            <unmanaged>unsigned int NumIDs</unmanaged>\t\n            <unmanaged-short>unsigned int NumIDs</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.InfoQueueFilterDescription.PIDList\">\n            <summary>\t\n            <dd> <p>Array of message IDs to allow or deny. Array must have at least NumIDs members (see <strong><see cref=\"T:SharpDX.Direct3D10.MessageId\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_INFO_QUEUE_FILTER_DESC::pIDList']/*\"/>\t\n            <msdn-id>bb205314</msdn-id>\t\n            <unmanaged>D3D10_MESSAGE_ID* pIDList</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID pIDList</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.InfoQueueFilterDescription.Categories\">\n            <summary>\n            Gets or sets the categories.\n            </summary>\n            <value>\n            The categories.\n            </value>\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.InfoQueueFilterDescription.Severities\">\n            <summary>\n            Gets or sets the severities.\n            </summary>\n            <value>\n            The severities.\n            </value>\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.InfoQueueFilterDescription.Ids\">\n            <summary>\n            Gets or sets the ids.\n            </summary>\n            <value>\n            The ids.\n            </value>\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.InputElement\">\n            <summary>\t\n            <p>A description of a single element for the input-assembler stage.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>An input-layout object contains an array of structures, each structure defines one element being read from an input slot. Create an input-layout object by calling <strong><see cref=\"M:SharpDX.Direct3D10.Device.CreateInputLayout(SharpDX.Direct3D10.InputElement[],System.Int32,System.IntPtr,SharpDX.PointerSize,SharpDX.Direct3D10.InputLayout)\"/></strong>. For an example, see Create an input-layout object.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_INPUT_ELEMENT_DESC']/*\"/>\t\n            <msdn-id>bb205316</msdn-id>\t\n            <unmanaged>D3D10_INPUT_ELEMENT_DESC</unmanaged>\t\n            <unmanaged-short>D3D10_INPUT_ELEMENT_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.InputElement.SemanticName\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_INPUT_ELEMENT_DESC::SemanticName']/*\"/>\t\n            <unmanaged>const char* SemanticName</unmanaged>\t\n            <unmanaged-short>char SemanticName</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.InputElement.SemanticIndex\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_INPUT_ELEMENT_DESC::SemanticIndex']/*\"/>\t\n            <unmanaged>unsigned int SemanticIndex</unmanaged>\t\n            <unmanaged-short>unsigned int SemanticIndex</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.InputElement.Format\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_INPUT_ELEMENT_DESC::Format']/*\"/>\t\n            <unmanaged>DXGI_FORMAT Format</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT Format</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.InputElement.Slot\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_INPUT_ELEMENT_DESC::InputSlot']/*\"/>\t\n            <unmanaged>unsigned int InputSlot</unmanaged>\t\n            <unmanaged-short>unsigned int InputSlot</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.InputElement.AlignedByteOffset\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_INPUT_ELEMENT_DESC::AlignedByteOffset']/*\"/>\t\n            <unmanaged>unsigned int AlignedByteOffset</unmanaged>\t\n            <unmanaged-short>unsigned int AlignedByteOffset</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.InputElement.Classification\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_INPUT_ELEMENT_DESC::InputSlotClass']/*\"/>\t\n            <unmanaged>D3D10_INPUT_CLASSIFICATION InputSlotClass</unmanaged>\t\n            <unmanaged-short>D3D10_INPUT_CLASSIFICATION InputSlotClass</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.InputElement.InstanceDataStepRate\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_INPUT_ELEMENT_DESC::InstanceDataStepRate']/*\"/>\t\n            <unmanaged>unsigned int InstanceDataStepRate</unmanaged>\t\n            <unmanaged-short>unsigned int InstanceDataStepRate</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.InputElement.#ctor(System.String,System.Int32,SharpDX.DXGI.Format,System.Int32,System.Int32,SharpDX.Direct3D10.InputClassification,System.Int32)\">\n            <summary>\n              Initializes a new instance of the <see cref = \"T:SharpDX.Direct3D10.InputElement\" /> struct.\n            </summary>\n            <param name = \"name\">The HLSL semantic associated with this element in a shader input-signature.</param>\n            <param name = \"index\">The semantic index for the element. A semantic index modifies a semantic, with an integer index number. A semantic index is only needed in a case where there is more than one element with the same semantic. For example, a 4x4 matrix would have four components each with the semantic name matrix, however each of the four component would have different semantic indices (0, 1, 2, and 3).</param>\n            <param name = \"format\">The data type of the element data.</param>\n            <param name = \"offset\">Offset (in bytes) between each element. Use AppendAligned for convenience to define the current element directly after the previous one, including any packing if necessary.</param>\n            <param name = \"slot\">An integer value that identifies the input-assembler. Valid values are between 0 and 15.</param>\n            <param name = \"slotClass\">Identifies the input data class for a single input slot.</param>\n            <param name = \"stepRate\">The number of instances to draw using the same per-instance data before advancing in the buffer by one element. This value must be 0 for an element that contains per-vertex data.</param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.InputElement.#ctor(System.String,System.Int32,SharpDX.DXGI.Format,System.Int32,System.Int32)\">\n            <summary>\n              Initializes a new instance of the <see cref = \"T:SharpDX.Direct3D10.InputElement\" /> struct.\n            </summary>\n            <param name = \"name\">The HLSL semantic associated with this element in a shader input-signature.</param>\n            <param name = \"index\">The semantic index for the element. A semantic index modifies a semantic, with an integer index number. A semantic index is only needed in a case where there is more than one element with the same semantic. For example, a 4x4 matrix would have four components each with the semantic name matrix, however each of the four component would have different semantic indices (0, 1, 2, and 3).</param>\n            <param name = \"format\">The data type of the element data.</param>\n            <param name = \"offset\">Offset (in bytes) between each element. Use AppendAligned for convenience to define the current element directly after the previous one, including any packing if necessary.</param>\n            <param name = \"slot\">An integer value that identifies the input-assembler. Valid values are between 0 and 15.</param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.InputElement.#ctor(System.String,System.Int32,SharpDX.DXGI.Format,System.Int32)\">\n            <summary>\n              Initializes a new instance of the <see cref = \"T:SharpDX.Direct3D10.InputElement\" /> struct.\n            </summary>\n            <param name = \"name\">The HLSL semantic associated with this element in a shader input-signature.</param>\n            <param name = \"index\">The semantic index for the element. A semantic index modifies a semantic, with an integer index number. A semantic index is only needed in a case where there is more than one element with the same semantic. For example, a 4x4 matrix would have four components each with the semantic name matrix, however each of the four component would have different semantic indices (0, 1, 2, and 3).</param>\n            <param name = \"format\">The data type of the element data.</param>\n            <param name = \"slot\">An integer value that identifies the input-assembler. Valid values are between 0 and 15.</param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.InputElement.Equals(SharpDX.Direct3D10.InputElement)\">\n            <summary>\n            Determines whether the specified <see cref=\"T:SharpDX.Direct3D10.InputElement\"/> is equal to this instance.\n            </summary>\n            <param name=\"obj\">The <see cref=\"T:SharpDX.Direct3D10.InputElement\"/> to compare with this instance.</param>\n            <returns>\n              <c>true</c> if the specified <see cref=\"T:SharpDX.Direct3D10.InputElement\"/> is equal to this instance; otherwise, <c>false</c>.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.InputElement.Equals(System.Object)\">\n            <inheritdoc/>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.InputElement.GetHashCode\">\n            <inheritdoc/>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.InputElement.op_Equality(SharpDX.Direct3D10.InputElement,SharpDX.Direct3D10.InputElement)\">\n            <summary>\n            Implements the operator ==.\n            </summary>\n            <param name=\"left\">The left.</param>\n            <param name=\"right\">The right.</param>\n            <returns>\n            The result of the operator.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.InputElement.op_Inequality(SharpDX.Direct3D10.InputElement,SharpDX.Direct3D10.InputElement)\">\n            <summary>\n            Implements the operator !=.\n            </summary>\n            <param name=\"left\">The left.</param>\n            <param name=\"right\">The right.</param>\n            <returns>\n            The result of the operator.\n            </returns>\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.InputElement.AppendAligned\">\n            <summary>\n              Returns a value that can be used for the offset parameter of an InputElement to indicate that the element\n              should be aligned directly after the previous element, including any packing if neccessary.\n            </summary>\n            <returns>A value used to align input elements.</returns>\n            <unmanaged>D3D10_APPEND_ALIGNED_ELEMENT</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.MeshAttributeRange\">\n            <summary>\t\n            <p>Stores an attribute table entry.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>An attribute table is used to identify areas of the mesh that need to be drawn with different textures, render states, materials, and so on. In addition, the application can use the attribute table to hide portions of a mesh by not drawing a given attribute identifier (AttribId) when drawing the frame.</p><p>The LPD3DX_ATTRIBUTE_RANGE type is defined as a reference to the D3DX_ATTRIBUTE_RANGE structure. </p><pre><code> typedef D3DX_ATTRIBUTE_RANGE* LPD3DX_ATTRIBUTE_RANGE;\t\n            </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_ATTRIBUTE_RANGE']/*\"/>\t\n            <msdn-id>bb172688</msdn-id>\t\n            <unmanaged>D3DX10_ATTRIBUTE_RANGE</unmanaged>\t\n            <unmanaged-short>D3DX10_ATTRIBUTE_RANGE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MeshAttributeRange.Id\">\n            <summary>\t\n            <dd> <p>Attribute table identifier.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_ATTRIBUTE_RANGE::AttribId']/*\"/>\t\n            <msdn-id>bb172688</msdn-id>\t\n            <unmanaged>unsigned int AttribId</unmanaged>\t\n            <unmanaged-short>unsigned int AttribId</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MeshAttributeRange.FaceStart\">\n            <summary>\t\n            <dd> <p>Starting face.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_ATTRIBUTE_RANGE::FaceStart']/*\"/>\t\n            <msdn-id>bb172688</msdn-id>\t\n            <unmanaged>unsigned int FaceStart</unmanaged>\t\n            <unmanaged-short>unsigned int FaceStart</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MeshAttributeRange.FaceCount\">\n            <summary>\t\n            <dd> <p>Face count.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_ATTRIBUTE_RANGE::FaceCount']/*\"/>\t\n            <msdn-id>bb172688</msdn-id>\t\n            <unmanaged>unsigned int FaceCount</unmanaged>\t\n            <unmanaged-short>unsigned int FaceCount</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MeshAttributeRange.VertexStart\">\n            <summary>\t\n            <dd> <p>Starting vertex.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_ATTRIBUTE_RANGE::VertexStart']/*\"/>\t\n            <msdn-id>bb172688</msdn-id>\t\n            <unmanaged>unsigned int VertexStart</unmanaged>\t\n            <unmanaged-short>unsigned int VertexStart</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MeshAttributeRange.VertexCount\">\n            <summary>\t\n            <dd> <p>Vertex count.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_ATTRIBUTE_RANGE::VertexCount']/*\"/>\t\n            <msdn-id>bb172688</msdn-id>\t\n            <unmanaged>unsigned int VertexCount</unmanaged>\t\n            <unmanaged-short>unsigned int VertexCount</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.MeshAttributeWeights\">\n            <summary>\t\n            <p>Specifies mesh weight attributes.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure describes how a simplification operation will consider vertex data when calculating relative costs between collapsing edges. For example, if the Normal field is 0.0, the simplification operation will ignore the vertex normal component when calculating the error for the collapse. However, if the Normal field is 1.0, the simplification operation will use the vertex normal component. If the Normal field is 2.0, double the amount of errors; if the Normal field is 4.0, then quadruple the number of errors, and so on.</p><p>The LPD3DX_ATTRIBUTE_WEIGHTS type is defined as a reference to the D3DX_ATTRIBUTE_WEIGHTS structure.</p><pre><code> typedef D3DX_ATTRIBUTE_WEIGHTS* LPD3DX_ATTRIBUTE_WEIGHTS;\t\n            </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_ATTRIBUTE_WEIGHTS']/*\"/>\t\n            <msdn-id>bb172689</msdn-id>\t\n            <unmanaged>D3DX10_ATTRIBUTE_WEIGHTS</unmanaged>\t\n            <unmanaged-short>D3DX10_ATTRIBUTE_WEIGHTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MeshAttributeWeights.Position\">\n            <summary>\t\n            <dd> <p>Position.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_ATTRIBUTE_WEIGHTS::Position']/*\"/>\t\n            <msdn-id>bb172689</msdn-id>\t\n            <unmanaged>float Position</unmanaged>\t\n            <unmanaged-short>float Position</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MeshAttributeWeights.Boundary\">\n            <summary>\t\n            <dd> <p>Blend weight.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_ATTRIBUTE_WEIGHTS::Boundary']/*\"/>\t\n            <msdn-id>bb172689</msdn-id>\t\n            <unmanaged>float Boundary</unmanaged>\t\n            <unmanaged-short>float Boundary</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MeshAttributeWeights.Normal\">\n            <summary>\t\n            <dd> <p>Normal.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_ATTRIBUTE_WEIGHTS::Normal']/*\"/>\t\n            <msdn-id>bb172689</msdn-id>\t\n            <unmanaged>float Normal</unmanaged>\t\n            <unmanaged-short>float Normal</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MeshAttributeWeights.Diffuse\">\n            <summary>\t\n            <dd> <p>Diffuse lighting value.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_ATTRIBUTE_WEIGHTS::Diffuse']/*\"/>\t\n            <msdn-id>bb172689</msdn-id>\t\n            <unmanaged>float Diffuse</unmanaged>\t\n            <unmanaged-short>float Diffuse</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MeshAttributeWeights.Specular\">\n            <summary>\t\n            <dd> <p>Specular lighting value.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_ATTRIBUTE_WEIGHTS::Specular']/*\"/>\t\n            <msdn-id>bb172689</msdn-id>\t\n            <unmanaged>float Specular</unmanaged>\t\n            <unmanaged-short>float Specular</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MeshAttributeWeights.Tangent\">\n            <summary>\t\n            <dd> <p>Tangent.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_ATTRIBUTE_WEIGHTS::Tangent']/*\"/>\t\n            <msdn-id>bb172689</msdn-id>\t\n            <unmanaged>float Tangent</unmanaged>\t\n            <unmanaged-short>float Tangent</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.MeshAttributeWeights.Binormal\">\n            <summary>\t\n            <dd> <p>Binormal.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_ATTRIBUTE_WEIGHTS::Binormal']/*\"/>\t\n            <msdn-id>bb172689</msdn-id>\t\n            <unmanaged>float Binormal</unmanaged>\t\n            <unmanaged-short>float Binormal</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.MeshAttributeWeights.Texcoord\">\n            <summary>\t\n            <dd> <p>Eight texture coordinates.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_ATTRIBUTE_WEIGHTS::Texcoord']/*\"/>\t\n            <msdn-id>bb172689</msdn-id>\t\n            <unmanaged>float Texcoord[8]</unmanaged>\t\n            <unmanaged-short>float Texcoord</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.Message\">\n            <summary>\t\n            <p>Categories of debug messages. This will identify the category of a message when retrieving a message with <strong><see cref=\"M:SharpDX.Direct3D10.InfoQueue.GetMessage(System.Int64,System.IntPtr,SharpDX.PointerSize@)\"/></strong> and when adding a message with <strong><see cref=\"M:SharpDX.Direct3D10.InfoQueue.AddMessage(SharpDX.Direct3D10.MessageCategory,SharpDX.Direct3D10.MessageSeverity,SharpDX.Direct3D10.MessageId,System.String)\"/></strong>. When creating an <strong>info queue filter</strong>, these values can be used to allow or deny any categories of messages to pass through the storage and retrieval filters.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This is part of the Information Queue feature. See <strong><see cref=\"T:SharpDX.Direct3D10.InfoQueue\"/> Interface</strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE']/*\"/>\t\n            <msdn-id>bb205323</msdn-id>\t\n            <unmanaged>D3D10_MESSAGE</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.Message.Category\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE::Category']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_CATEGORY Category</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_CATEGORY Category</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.Message.Severity\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE::Severity']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_SEVERITY Severity</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_SEVERITY Severity</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.Message.Id\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE::ID']/*\"/>\t\n            <unmanaged>D3D10_MESSAGE_ID ID</unmanaged>\t\n            <unmanaged-short>D3D10_MESSAGE_ID ID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.Message.Description\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE::pDescription']/*\"/>\t\n            <unmanaged>const char* pDescription</unmanaged>\t\n            <unmanaged-short>char pDescription</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.Message.DescriptionByteLength\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_MESSAGE::DescriptionByteLength']/*\"/>\t\n            <unmanaged>SIZE_T DescriptionByteLength</unmanaged>\t\n            <unmanaged-short>SIZE_T DescriptionByteLength</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.QueryDataPipelineStatistics\">\n            <summary>\t\n            <p>Query information about graphics-pipeline activity in between calls to <strong><see cref=\"M:SharpDX.Direct3D10.Asynchronous.Begin\"/></strong> and <strong><see cref=\"M:SharpDX.Direct3D10.Asynchronous.End\"/></strong>.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_QUERY_DATA_PIPELINE_STATISTICS']/*\"/>\t\n            <msdn-id>bb172402</msdn-id>\t\n            <unmanaged>D3D10_QUERY_DATA_PIPELINE_STATISTICS</unmanaged>\t\n            <unmanaged-short>D3D10_QUERY_DATA_PIPELINE_STATISTICS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.QueryDataPipelineStatistics.IAVerticeCount\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_QUERY_DATA_PIPELINE_STATISTICS::IAVertices']/*\"/>\t\n            <unmanaged>unsigned longlong IAVertices</unmanaged>\t\n            <unmanaged-short>unsigned longlong IAVertices</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.QueryDataPipelineStatistics.IAPrimitiveCount\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_QUERY_DATA_PIPELINE_STATISTICS::IAPrimitives']/*\"/>\t\n            <unmanaged>unsigned longlong IAPrimitives</unmanaged>\t\n            <unmanaged-short>unsigned longlong IAPrimitives</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.QueryDataPipelineStatistics.VSInvocationCount\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_QUERY_DATA_PIPELINE_STATISTICS::VSInvocations']/*\"/>\t\n            <unmanaged>unsigned longlong VSInvocations</unmanaged>\t\n            <unmanaged-short>unsigned longlong VSInvocations</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.QueryDataPipelineStatistics.GSInvocationCount\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_QUERY_DATA_PIPELINE_STATISTICS::GSInvocations']/*\"/>\t\n            <unmanaged>unsigned longlong GSInvocations</unmanaged>\t\n            <unmanaged-short>unsigned longlong GSInvocations</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.QueryDataPipelineStatistics.GSPrimitiveCount\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_QUERY_DATA_PIPELINE_STATISTICS::GSPrimitives']/*\"/>\t\n            <unmanaged>unsigned longlong GSPrimitives</unmanaged>\t\n            <unmanaged-short>unsigned longlong GSPrimitives</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.QueryDataPipelineStatistics.CInvocationCount\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_QUERY_DATA_PIPELINE_STATISTICS::CInvocations']/*\"/>\t\n            <unmanaged>unsigned longlong CInvocations</unmanaged>\t\n            <unmanaged-short>unsigned longlong CInvocations</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.QueryDataPipelineStatistics.CPrimitiveCount\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_QUERY_DATA_PIPELINE_STATISTICS::CPrimitives']/*\"/>\t\n            <unmanaged>unsigned longlong CPrimitives</unmanaged>\t\n            <unmanaged-short>unsigned longlong CPrimitives</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.QueryDataPipelineStatistics.PSInvocationCount\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_QUERY_DATA_PIPELINE_STATISTICS::PSInvocations']/*\"/>\t\n            <unmanaged>unsigned longlong PSInvocations</unmanaged>\t\n            <unmanaged-short>unsigned longlong PSInvocations</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.QueryDataTimestampDisjoint\">\n            <summary>\t\n            <p>Query information about the reliability of a timestamp query.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>For a list of query types see <strong><see cref=\"T:SharpDX.Direct3D10.QueryType\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_QUERY_DATA_TIMESTAMP_DISJOINT']/*\"/>\t\n            <msdn-id>bb172404</msdn-id>\t\n            <unmanaged>D3D10_QUERY_DATA_TIMESTAMP_DISJOINT</unmanaged>\t\n            <unmanaged-short>D3D10_QUERY_DATA_TIMESTAMP_DISJOINT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.QueryDataTimestampDisjoint.Frequency\">\n            <summary>\t\n            <dd> <p>How frequently the GPU counter increments in Hz.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_QUERY_DATA_TIMESTAMP_DISJOINT::Frequency']/*\"/>\t\n            <msdn-id>bb172404</msdn-id>\t\n            <unmanaged>unsigned longlong Frequency</unmanaged>\t\n            <unmanaged-short>unsigned longlong Frequency</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.QueryDataTimestampDisjoint.Disjoint\">\n            <summary>\t\n            <dd> <p>If this is <strong>TRUE</strong>, something occurred in between the query's <strong><see cref=\"M:SharpDX.Direct3D10.Asynchronous.Begin\"/></strong> and <strong><see cref=\"M:SharpDX.Direct3D10.Asynchronous.End\"/></strong> calls that caused the timestamp counter to become discontinuous or disjoint, such as unplugging the AC chord on a laptop, overheating, or throttling up/down due to laptop savings events. The timestamp returned by <strong><see cref=\"M:SharpDX.Direct3D10.Asynchronous.GetData\"/></strong> for a timestamp query is only reliable if Disjoint is <strong><see cref=\"F:SharpDX.Result.False\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_QUERY_DATA_TIMESTAMP_DISJOINT::Disjoint']/*\"/>\t\n            <msdn-id>bb172404</msdn-id>\t\n            <unmanaged>BOOL Disjoint</unmanaged>\t\n            <unmanaged-short>BOOL Disjoint</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.QueryDescription\">\n            <summary>\t\n            <p>Describes a query.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_QUERY_DESC']/*\"/>\t\n            <msdn-id>bb172405</msdn-id>\t\n            <unmanaged>D3D10_QUERY_DESC</unmanaged>\t\n            <unmanaged-short>D3D10_QUERY_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.QueryDescription.Type\">\n            <summary>\t\n            <dd> <p>Type of query (see <strong><see cref=\"T:SharpDX.Direct3D10.QueryType\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_QUERY_DESC::Query']/*\"/>\t\n            <msdn-id>bb172405</msdn-id>\t\n            <unmanaged>D3D10_QUERY Query</unmanaged>\t\n            <unmanaged-short>D3D10_QUERY Query</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.QueryDescription.Flags\">\n            <summary>\t\n            <dd> <p>Miscellaneous flags (see <strong><see cref=\"T:SharpDX.Direct3D10.QueryFlags\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_QUERY_DESC::MiscFlags']/*\"/>\t\n            <msdn-id>bb172405</msdn-id>\t\n            <unmanaged>D3D10_QUERY_MISC_FLAG MiscFlags</unmanaged>\t\n            <unmanaged-short>D3D10_QUERY_MISC_FLAG MiscFlags</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.RasterizerStateDescription\">\n            <summary>\t\n            <p>Describes the rasterizer state.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Rasterizer state defines the behavior of the rasterizer stage; to set rasterizer state, call <strong><see cref=\"M:SharpDX.Direct3D10.RasterizerStage.SetState(SharpDX.Direct3D10.RasterizerState)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_RASTERIZER_DESC']/*\"/>\t\n            <msdn-id>bb172408</msdn-id>\t\n            <unmanaged>D3D10_RASTERIZER_DESC</unmanaged>\t\n            <unmanaged-short>D3D10_RASTERIZER_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.RasterizerStateDescription.FillMode\">\n            <summary>\t\n            <dd> <p>A member of the <strong><see cref=\"T:SharpDX.Direct3D10.FillMode\"/></strong> enumerated type that determines the fill mode to use when rendering.  The default value is <strong><see cref=\"F:SharpDX.Direct3D10.FillMode.Solid\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_RASTERIZER_DESC::FillMode']/*\"/>\t\n            <msdn-id>bb172408</msdn-id>\t\n            <unmanaged>D3D10_FILL_MODE FillMode</unmanaged>\t\n            <unmanaged-short>D3D10_FILL_MODE FillMode</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.RasterizerStateDescription.CullMode\">\n            <summary>\t\n            <dd> <p>A member of the <strong><see cref=\"T:SharpDX.Direct3D10.CullMode\"/></strong> enumerated type that indicates whether triangles facing the specified direction are drawn.  The default value is <strong><see cref=\"F:SharpDX.Direct3D10.CullMode.Back\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_RASTERIZER_DESC::CullMode']/*\"/>\t\n            <msdn-id>bb172408</msdn-id>\t\n            <unmanaged>D3D10_CULL_MODE CullMode</unmanaged>\t\n            <unmanaged-short>D3D10_CULL_MODE CullMode</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.RasterizerStateDescription.IsFrontCounterClockwise\">\n            <summary>\t\n            <dd> <p>Determines if a triangle is front-facing or back-facing. If this parameter is <strong>TRUE</strong>, then a triangle is considered front-facing if its vertices are counter-clockwise on the render target, and considered back-facing if they are clockwise. If this parameter is <strong><see cref=\"F:SharpDX.Result.False\"/></strong>, then the opposite is true.  The default value is <strong><see cref=\"F:SharpDX.Result.False\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_RASTERIZER_DESC::FrontCounterClockwise']/*\"/>\t\n            <msdn-id>bb172408</msdn-id>\t\n            <unmanaged>BOOL FrontCounterClockwise</unmanaged>\t\n            <unmanaged-short>BOOL FrontCounterClockwise</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.RasterizerStateDescription.DepthBias\">\n            <summary>\t\n            <dd> <p>Specifies the depth value added to a given pixel. The default value is 0. For more information, see Depth Bias.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_RASTERIZER_DESC::DepthBias']/*\"/>\t\n            <msdn-id>bb172408</msdn-id>\t\n            <unmanaged>int DepthBias</unmanaged>\t\n            <unmanaged-short>int DepthBias</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.RasterizerStateDescription.DepthBiasClamp\">\n            <summary>\t\n            <dd> <p>Specifies the maximum depth bias of a pixel. The default value is 0.0f. For more information, see Depth Bias.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_RASTERIZER_DESC::DepthBiasClamp']/*\"/>\t\n            <msdn-id>bb172408</msdn-id>\t\n            <unmanaged>float DepthBiasClamp</unmanaged>\t\n            <unmanaged-short>float DepthBiasClamp</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.RasterizerStateDescription.SlopeScaledDepthBias\">\n            <summary>\t\n            <dd> <p>Specifies a scalar on a given pixel's slope. The default value is 0.0f. For more information, see Depth Bias.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_RASTERIZER_DESC::SlopeScaledDepthBias']/*\"/>\t\n            <msdn-id>bb172408</msdn-id>\t\n            <unmanaged>float SlopeScaledDepthBias</unmanaged>\t\n            <unmanaged-short>float SlopeScaledDepthBias</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.RasterizerStateDescription.IsDepthClipEnabled\">\n            <summary>\t\n            <dd> <p>Enables or disables clipping based on distance.  The default value is <strong>TRUE</strong>.</p> <p>The hardware always performs x and y clipping of rasterized coordinates. When <strong>DepthClipEnable</strong> is set to the default value, the hardware also clips the z value (that is, the hardware performs the last step of the following algorithm).\t\n            </p> <code> 0 &lt; w\t\n            -w &lt;= x &lt;= w (or arbitrarily wider range if implementation uses a guard band to reduce clipping burden)\t\n            -w &lt;= y &lt;= w (or arbitrarily wider range if implementation uses a guard band to reduce clipping burden)\t\n            0 &lt;= z &lt;= w\t\n            </code> <p>When you set <strong>DepthClipEnable</strong> to <see cref=\"F:SharpDX.Result.False\"/>, the hardware skips the z clipping (that is, the last step in the preceding algorithm). However, the hardware still performs the \"0 &lt; w\" clipping. When z clipping is disabled, improper depth ordering at the pixel level might result. However, when z clipping is disabled, stencil shadow implementations are simplified. In other words, you can avoid complex special-case handling for geometry that goes beyond the back clipping plane.\t\n            </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_RASTERIZER_DESC::DepthClipEnable']/*\"/>\t\n            <msdn-id>bb172408</msdn-id>\t\n            <unmanaged>BOOL DepthClipEnable</unmanaged>\t\n            <unmanaged-short>BOOL DepthClipEnable</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.RasterizerStateDescription.IsScissorEnabled\">\n            <summary>\t\n            <dd> <p>Enable or disables scissor-rectangle culling. All pixels outside an active scissor rectangle are culled. The default value is <strong><see cref=\"F:SharpDX.Result.False\"/></strong>. For more information, see Set the Scissor Rectangle.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_RASTERIZER_DESC::ScissorEnable']/*\"/>\t\n            <msdn-id>bb172408</msdn-id>\t\n            <unmanaged>BOOL ScissorEnable</unmanaged>\t\n            <unmanaged-short>BOOL ScissorEnable</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.RasterizerStateDescription.IsMultisampleEnabled\">\n            <summary>\t\n            <dd> <p>Enables or disables multisample antialiasing.  The default value is <strong><see cref=\"F:SharpDX.Result.False\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_RASTERIZER_DESC::MultisampleEnable']/*\"/>\t\n            <msdn-id>bb172408</msdn-id>\t\n            <unmanaged>BOOL MultisampleEnable</unmanaged>\t\n            <unmanaged-short>BOOL MultisampleEnable</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.RasterizerStateDescription.IsAntialiasedLineEnabled\">\n            <summary>\t\n            <dd> <p>Enable or disables line antialiasing. Note that this option only applies when alpha blending is enabled, you are drawing lines, and the <strong>MultisampleEnable</strong> member is <strong><see cref=\"F:SharpDX.Result.False\"/></strong>.  The default value is <strong><see cref=\"F:SharpDX.Result.False\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_RASTERIZER_DESC::AntialiasedLineEnable']/*\"/>\t\n            <msdn-id>bb172408</msdn-id>\t\n            <unmanaged>BOOL AntialiasedLineEnable</unmanaged>\t\n            <unmanaged-short>BOOL AntialiasedLineEnable</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.RenderTargetBlendDescription1\">\n            <summary>\t\n            <p>Describes the blend state for a render target for a Direct3D 10.1 device</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>To see how blending is done, see Output-Merger Stage (Direct3D 10).</p><p>These are the default values for blend state.</p><table> <tr><th>State</th><th>Default Value</th></tr> <tr><td>BlendEnable</td><td><see cref=\"F:SharpDX.Result.False\"/></td></tr> <tr><td>SrcBlend</td><td><see cref=\"F:SharpDX.Direct3D10.BlendOption.One\"/></td></tr> <tr><td>DestBlend</td><td><see cref=\"F:SharpDX.Direct3D10.BlendOption.Zero\"/></td></tr> <tr><td>BlendOp</td><td><see cref=\"F:SharpDX.Direct3D10.BlendOperation.Add\"/></td></tr> <tr><td>SrcBlendAlpha</td><td><see cref=\"F:SharpDX.Direct3D10.BlendOption.One\"/></td></tr> <tr><td>DestBlendAlpha</td><td><see cref=\"F:SharpDX.Direct3D10.BlendOption.Zero\"/></td></tr> <tr><td>BlendOpAlpha</td><td><see cref=\"F:SharpDX.Direct3D10.BlendOperation.Add\"/></td></tr> <tr><td>RenderTargetWriteMask</td><td><see cref=\"F:SharpDX.Direct3D10.ColorWriteMaskFlags.All\"/></td></tr> </table><p>?</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_RENDER_TARGET_BLEND_DESC1']/*\"/>\t\n            <msdn-id>bb694533</msdn-id>\t\n            <unmanaged>D3D10_RENDER_TARGET_BLEND_DESC1</unmanaged>\t\n            <unmanaged-short>D3D10_RENDER_TARGET_BLEND_DESC1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.RenderTargetBlendDescription1.IsBlendEnabled\">\n            <summary>\t\n            <dd> <p>Enable (or disable) blending.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_RENDER_TARGET_BLEND_DESC1::BlendEnable']/*\"/>\t\n            <msdn-id>bb694533</msdn-id>\t\n            <unmanaged>BOOL BlendEnable</unmanaged>\t\n            <unmanaged-short>BOOL BlendEnable</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.RenderTargetBlendDescription1.SourceBlend\">\n            <summary>\t\n            <dd> <p>This <strong>blend option</strong> specifies the first RGB data source and includes an optional pre-blend operation.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_RENDER_TARGET_BLEND_DESC1::SrcBlend']/*\"/>\t\n            <msdn-id>bb694533</msdn-id>\t\n            <unmanaged>D3D10_BLEND SrcBlend</unmanaged>\t\n            <unmanaged-short>D3D10_BLEND SrcBlend</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.RenderTargetBlendDescription1.DestinationBlend\">\n            <summary>\t\n            <dd> <p>This <strong>blend option</strong> specifies the second RGB data source and includes an optional pre-blend operation.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_RENDER_TARGET_BLEND_DESC1::DestBlend']/*\"/>\t\n            <msdn-id>bb694533</msdn-id>\t\n            <unmanaged>D3D10_BLEND DestBlend</unmanaged>\t\n            <unmanaged-short>D3D10_BLEND DestBlend</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.RenderTargetBlendDescription1.BlendOperation\">\n            <summary>\t\n            <dd> <p>This <strong>blend operation</strong> defines how to combine the RGB data sources.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_RENDER_TARGET_BLEND_DESC1::BlendOp']/*\"/>\t\n            <msdn-id>bb694533</msdn-id>\t\n            <unmanaged>D3D10_BLEND_OP BlendOp</unmanaged>\t\n            <unmanaged-short>D3D10_BLEND_OP BlendOp</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.RenderTargetBlendDescription1.SourceAlphaBlend\">\n            <summary>\t\n            <dd> <p>This <strong>blend option</strong> specifies the first alpha data source and includes an optional pre-blend operation. Blend options that end in _COLOR are not allowed.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_RENDER_TARGET_BLEND_DESC1::SrcBlendAlpha']/*\"/>\t\n            <msdn-id>bb694533</msdn-id>\t\n            <unmanaged>D3D10_BLEND SrcBlendAlpha</unmanaged>\t\n            <unmanaged-short>D3D10_BLEND SrcBlendAlpha</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.RenderTargetBlendDescription1.DestinationAlphaBlend\">\n            <summary>\t\n            <dd> <p>This <strong>blend option</strong> specifies the second alpha data source and includes an optional pre-blend operation. Blend options that end in _COLOR are not allowed.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_RENDER_TARGET_BLEND_DESC1::DestBlendAlpha']/*\"/>\t\n            <msdn-id>bb694533</msdn-id>\t\n            <unmanaged>D3D10_BLEND DestBlendAlpha</unmanaged>\t\n            <unmanaged-short>D3D10_BLEND DestBlendAlpha</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.RenderTargetBlendDescription1.AlphaBlendOperation\">\n            <summary>\t\n            <dd> <p>This <strong>blend operation</strong> defines how to combine the alpha data sources.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_RENDER_TARGET_BLEND_DESC1::BlendOpAlpha']/*\"/>\t\n            <msdn-id>bb694533</msdn-id>\t\n            <unmanaged>D3D10_BLEND_OP BlendOpAlpha</unmanaged>\t\n            <unmanaged-short>D3D10_BLEND_OP BlendOpAlpha</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.RenderTargetBlendDescription1.RenderTargetWriteMask\">\n            <summary>\t\n            <dd> <p>A write mask.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_RENDER_TARGET_BLEND_DESC1::RenderTargetWriteMask']/*\"/>\t\n            <msdn-id>bb694533</msdn-id>\t\n            <unmanaged>D3D10_COLOR_WRITE_ENABLE RenderTargetWriteMask</unmanaged>\t\n            <unmanaged-short>D3D10_COLOR_WRITE_ENABLE RenderTargetWriteMask</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.RenderTargetViewDescription\">\n            <summary>\t\n            <p>Specifies the subresource(s) from a resource that are accessible using a render-target view.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>A render-target-view description is passed into <strong><see cref=\"M:SharpDX.Direct3D10.Device.CreateRenderTargetView(SharpDX.Direct3D10.Resource,System.Nullable{SharpDX.Direct3D10.RenderTargetViewDescription},SharpDX.Direct3D10.RenderTargetView)\"/></strong> to create a render target.</p><p>A render-target-view cannot use the following formats:</p><ul> <li>Any typeless format.</li> <li> <strong><see cref=\"T:SharpDX.DXGI.Format\"/></strong> if the view will be used to bind a buffer (vertex, index, constant, or stream-output).</li> </ul><p>If the format is set to <strong><see cref=\"T:SharpDX.DXGI.Format\"/></strong>, then the format of the resource that the view binds to the pipeline will be used.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_RENDER_TARGET_VIEW_DESC']/*\"/>\t\n            <msdn-id>bb172410</msdn-id>\t\n            <unmanaged>D3D10_RENDER_TARGET_VIEW_DESC</unmanaged>\t\n            <unmanaged-short>D3D10_RENDER_TARGET_VIEW_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.RenderTargetViewDescription.Format\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_RENDER_TARGET_VIEW_DESC::Format']/*\"/>\t\n            <unmanaged>DXGI_FORMAT Format</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT Format</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.RenderTargetViewDescription.Dimension\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_RENDER_TARGET_VIEW_DESC::ViewDimension']/*\"/>\t\n            <unmanaged>D3D10_RTV_DIMENSION ViewDimension</unmanaged>\t\n            <unmanaged-short>D3D10_RTV_DIMENSION ViewDimension</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.RenderTargetViewDescription.Buffer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_RENDER_TARGET_VIEW_DESC::Buffer']/*\"/>\t\n            <unmanaged>D3D10_BUFFER_RTV Buffer</unmanaged>\t\n            <unmanaged-short>D3D10_BUFFER_RTV Buffer</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.RenderTargetViewDescription.Texture1D\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_RENDER_TARGET_VIEW_DESC::Texture1D']/*\"/>\t\n            <unmanaged>D3D10_TEX1D_RTV Texture1D</unmanaged>\t\n            <unmanaged-short>D3D10_TEX1D_RTV Texture1D</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.RenderTargetViewDescription.Texture1DArray\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_RENDER_TARGET_VIEW_DESC::Texture1DArray']/*\"/>\t\n            <unmanaged>D3D10_TEX1D_ARRAY_RTV Texture1DArray</unmanaged>\t\n            <unmanaged-short>D3D10_TEX1D_ARRAY_RTV Texture1DArray</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.RenderTargetViewDescription.Texture2D\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_RENDER_TARGET_VIEW_DESC::Texture2D']/*\"/>\t\n            <unmanaged>D3D10_TEX2D_RTV Texture2D</unmanaged>\t\n            <unmanaged-short>D3D10_TEX2D_RTV Texture2D</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.RenderTargetViewDescription.Texture2DArray\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_RENDER_TARGET_VIEW_DESC::Texture2DArray']/*\"/>\t\n            <unmanaged>D3D10_TEX2D_ARRAY_RTV Texture2DArray</unmanaged>\t\n            <unmanaged-short>D3D10_TEX2D_ARRAY_RTV Texture2DArray</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.RenderTargetViewDescription.Texture2DMS\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_RENDER_TARGET_VIEW_DESC::Texture2DMS']/*\"/>\t\n            <unmanaged>D3D10_TEX2DMS_RTV Texture2DMS</unmanaged>\t\n            <unmanaged-short>D3D10_TEX2DMS_RTV Texture2DMS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.RenderTargetViewDescription.Texture2DMSArray\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_RENDER_TARGET_VIEW_DESC::Texture2DMSArray']/*\"/>\t\n            <unmanaged>D3D10_TEX2DMS_ARRAY_RTV Texture2DMSArray</unmanaged>\t\n            <unmanaged-short>D3D10_TEX2DMS_ARRAY_RTV Texture2DMSArray</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.RenderTargetViewDescription.Texture3D\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_RENDER_TARGET_VIEW_DESC::Texture3D']/*\"/>\t\n            <unmanaged>D3D10_TEX3D_RTV Texture3D</unmanaged>\t\n            <unmanaged-short>D3D10_TEX3D_RTV Texture3D</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.RenderTargetViewDescription.Texture3DResource\">\n            <summary>\t\n            <p>Specifies the subresource(s) from a 3D texture to use in a render-target view.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure is one member of a render target view. See <strong><see cref=\"T:SharpDX.Direct3D10.RenderTargetViewDescription\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEX3D_RTV']/*\"/>\t\n            <msdn-id>Bb172476</msdn-id>\t\n            <unmanaged>D3D10_TEX3D_RTV</unmanaged>\t\n            <unmanaged-short>D3D10_TEX3D_RTV</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.RenderTargetViewDescription.Texture3DResource.MipSlice\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEX3D_RTV::MipSlice']/*\"/>\t\n            <unmanaged>unsigned int MipSlice</unmanaged>\t\n            <unmanaged-short>unsigned int MipSlice</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.RenderTargetViewDescription.Texture3DResource.FirstDepthSlice\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEX3D_RTV::FirstWSlice']/*\"/>\t\n            <unmanaged>unsigned int FirstWSlice</unmanaged>\t\n            <unmanaged-short>unsigned int FirstWSlice</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.RenderTargetViewDescription.Texture3DResource.DepthSliceCount\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEX3D_RTV::WSize']/*\"/>\t\n            <unmanaged>unsigned int WSize</unmanaged>\t\n            <unmanaged-short>unsigned int WSize</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.RenderTargetViewDescription.Texture2DArrayResource\">\n            <summary>\t\n            <p>Specifies the subresource(s) from an array of 2D textures to use in a render-target view.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure is one member of a render-target-view description (see <strong><see cref=\"T:SharpDX.Direct3D10.RenderTargetViewDescription\"/></strong>).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEX2D_ARRAY_RTV']/*\"/>\t\n            <msdn-id>bb172471</msdn-id>\t\n            <unmanaged>D3D10_TEX2D_ARRAY_RTV</unmanaged>\t\n            <unmanaged-short>D3D10_TEX2D_ARRAY_RTV</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.RenderTargetViewDescription.Texture2DArrayResource.MipSlice\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEX2D_ARRAY_RTV::MipSlice']/*\"/>\t\n            <unmanaged>unsigned int MipSlice</unmanaged>\t\n            <unmanaged-short>unsigned int MipSlice</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.RenderTargetViewDescription.Texture2DArrayResource.FirstArraySlice\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEX2D_ARRAY_RTV::FirstArraySlice']/*\"/>\t\n            <unmanaged>unsigned int FirstArraySlice</unmanaged>\t\n            <unmanaged-short>unsigned int FirstArraySlice</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.RenderTargetViewDescription.Texture2DArrayResource.ArraySize\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEX2D_ARRAY_RTV::ArraySize']/*\"/>\t\n            <unmanaged>unsigned int ArraySize</unmanaged>\t\n            <unmanaged-short>unsigned int ArraySize</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.RenderTargetViewDescription.Texture2DMultisampledArrayResource\">\n            <summary>\t\n            <p>Specifies the subresource(s) from a an array of multisampled 2D textures to use in a render-target view.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure is one member of a render-target-view description (see <strong><see cref=\"T:SharpDX.Direct3D10.RenderTargetViewDescription\"/></strong>).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEX2DMS_ARRAY_RTV']/*\"/>\t\n            <msdn-id>bb172465</msdn-id>\t\n            <unmanaged>D3D10_TEX2DMS_ARRAY_RTV</unmanaged>\t\n            <unmanaged-short>D3D10_TEX2DMS_ARRAY_RTV</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.RenderTargetViewDescription.Texture2DMultisampledArrayResource.FirstArraySlice\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEX2DMS_ARRAY_RTV::FirstArraySlice']/*\"/>\t\n            <unmanaged>unsigned int FirstArraySlice</unmanaged>\t\n            <unmanaged-short>unsigned int FirstArraySlice</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.RenderTargetViewDescription.Texture2DMultisampledArrayResource.ArraySize\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEX2DMS_ARRAY_RTV::ArraySize']/*\"/>\t\n            <unmanaged>unsigned int ArraySize</unmanaged>\t\n            <unmanaged-short>unsigned int ArraySize</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.RenderTargetViewDescription.BufferResource\">\n            <summary>\t\n            <p>Specifies the elements from a buffer resource to use in a render-target view.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>A render-target view is a member of a render-target-view description (see <strong><see cref=\"T:SharpDX.Direct3D10.RenderTargetViewDescription\"/></strong>). Create a render-target view by calling <strong><see cref=\"M:SharpDX.Direct3D10.Device.CreateRenderTargetView(SharpDX.Direct3D10.Resource,System.Nullable{SharpDX.Direct3D10.RenderTargetViewDescription},SharpDX.Direct3D10.RenderTargetView)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_BUFFER_RTV']/*\"/>\t\n            <msdn-id>bb204897</msdn-id>\t\n            <unmanaged>D3D10_BUFFER_RTV</unmanaged>\t\n            <unmanaged-short>D3D10_BUFFER_RTV</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.RenderTargetViewDescription.BufferResource.FirstElement\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_BUFFER_RTV::FirstElement']/*\"/>\t\n            <unmanaged>unsigned int FirstElement</unmanaged>\t\n            <unmanaged-short>unsigned int FirstElement</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.RenderTargetViewDescription.BufferResource.ElementOffset\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_BUFFER_RTV::ElementOffset']/*\"/>\t\n            <unmanaged>unsigned int ElementOffset</unmanaged>\t\n            <unmanaged-short>unsigned int ElementOffset</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.RenderTargetViewDescription.BufferResource.ElementCount\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_BUFFER_RTV::NumElements']/*\"/>\t\n            <unmanaged>unsigned int NumElements</unmanaged>\t\n            <unmanaged-short>unsigned int NumElements</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.RenderTargetViewDescription.BufferResource.ElementWidth\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_BUFFER_RTV::ElementWidth']/*\"/>\t\n            <unmanaged>unsigned int ElementWidth</unmanaged>\t\n            <unmanaged-short>unsigned int ElementWidth</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.RenderTargetViewDescription.Texture1DResource\">\n            <summary>\t\n            <p>Specifies the subresource from a 1D texture to use in a render-target view.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure is one member of a render-target-view description (see <strong><see cref=\"T:SharpDX.Direct3D10.RenderTargetViewDescription\"/></strong>).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEX1D_RTV']/*\"/>\t\n            <msdn-id>bb172462</msdn-id>\t\n            <unmanaged>D3D10_TEX1D_RTV</unmanaged>\t\n            <unmanaged-short>D3D10_TEX1D_RTV</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.RenderTargetViewDescription.Texture1DResource.MipSlice\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEX1D_RTV::MipSlice']/*\"/>\t\n            <unmanaged>unsigned int MipSlice</unmanaged>\t\n            <unmanaged-short>unsigned int MipSlice</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.RenderTargetViewDescription.Texture1DArrayResource\">\n            <summary>\t\n            <p>Specifies the subresource(s) from an array of 1D textures to use in a render-target view.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure is one member of a render-target-view description (see <strong><see cref=\"T:SharpDX.Direct3D10.RenderTargetViewDescription\"/></strong>).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEX1D_ARRAY_RTV']/*\"/>\t\n            <msdn-id>Bb172459</msdn-id>\t\n            <unmanaged>D3D10_TEX1D_ARRAY_RTV</unmanaged>\t\n            <unmanaged-short>D3D10_TEX1D_ARRAY_RTV</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.RenderTargetViewDescription.Texture1DArrayResource.MipSlice\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEX1D_ARRAY_RTV::MipSlice']/*\"/>\t\n            <unmanaged>unsigned int MipSlice</unmanaged>\t\n            <unmanaged-short>unsigned int MipSlice</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.RenderTargetViewDescription.Texture1DArrayResource.FirstArraySlice\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEX1D_ARRAY_RTV::FirstArraySlice']/*\"/>\t\n            <unmanaged>unsigned int FirstArraySlice</unmanaged>\t\n            <unmanaged-short>unsigned int FirstArraySlice</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.RenderTargetViewDescription.Texture1DArrayResource.ArraySize\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEX1D_ARRAY_RTV::ArraySize']/*\"/>\t\n            <unmanaged>unsigned int ArraySize</unmanaged>\t\n            <unmanaged-short>unsigned int ArraySize</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.RenderTargetViewDescription.Texture2DResource\">\n            <summary>\t\n            <p>Specifies the subresource from a 2D texture to use in a render-target view.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure is one member of a render-target-view description (see <strong><see cref=\"T:SharpDX.Direct3D10.RenderTargetViewDescription\"/></strong>).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEX2D_RTV']/*\"/>\t\n            <msdn-id>bb172474</msdn-id>\t\n            <unmanaged>D3D10_TEX2D_RTV</unmanaged>\t\n            <unmanaged-short>D3D10_TEX2D_RTV</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.RenderTargetViewDescription.Texture2DResource.MipSlice\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEX2D_RTV::MipSlice']/*\"/>\t\n            <unmanaged>unsigned int MipSlice</unmanaged>\t\n            <unmanaged-short>unsigned int MipSlice</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.RenderTargetViewDescription.Texture2DMultisampledResource\">\n            <summary>\t\n            <p>Specifies the subresource from a multisampled 2D texture to use in a render-target view.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Since a multisampled 2D texture contains a single subresource, there is actually nothing to specify in <strong><see cref=\"T:SharpDX.Direct3D10.RenderTargetViewDescription.Texture2DMultisampledResource\"/></strong>. Consequently, <strong>UnusedField_NothingToDefine</strong> is included so that this structure will compile in C.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEX2DMS_RTV']/*\"/>\t\n            <msdn-id>bb172468</msdn-id>\t\n            <unmanaged>D3D10_TEX2DMS_RTV</unmanaged>\t\n            <unmanaged-short>D3D10_TEX2DMS_RTV</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.RenderTargetViewDescription.Texture2DMultisampledResource.UnusedFieldNothingToDefine\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEX2DMS_RTV::UnusedField_NothingToDefine']/*\"/>\t\n            <unmanaged>unsigned int UnusedField_NothingToDefine</unmanaged>\t\n            <unmanaged-short>unsigned int UnusedField_NothingToDefine</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.ResourceRegion\">\n            <summary>\t\n            <p>Defines a 3D box.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The following diagram shows a 3D box, where the origin is the left, front, top corner.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_BOX']/*\"/>\t\n            <msdn-id>bb204895</msdn-id>\t\n            <unmanaged>D3D10_BOX</unmanaged>\t\n            <unmanaged-short>D3D10_BOX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ResourceRegion.Left\">\n            <summary>\t\n            <dd> <p>The x position of the left hand side of the box.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_BOX::left']/*\"/>\t\n            <msdn-id>bb204895</msdn-id>\t\n            <unmanaged>unsigned int left</unmanaged>\t\n            <unmanaged-short>unsigned int left</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ResourceRegion.Top\">\n            <summary>\t\n            <dd> <p>The y position of the top of the box.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_BOX::top']/*\"/>\t\n            <msdn-id>bb204895</msdn-id>\t\n            <unmanaged>unsigned int top</unmanaged>\t\n            <unmanaged-short>unsigned int top</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ResourceRegion.Front\">\n            <summary>\t\n            <dd> <p>The z position of the front of the box.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_BOX::front']/*\"/>\t\n            <msdn-id>bb204895</msdn-id>\t\n            <unmanaged>unsigned int front</unmanaged>\t\n            <unmanaged-short>unsigned int front</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ResourceRegion.Right\">\n            <summary>\t\n            <dd> <p>The x position of the right hand side of the box.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_BOX::right']/*\"/>\t\n            <msdn-id>bb204895</msdn-id>\t\n            <unmanaged>unsigned int right</unmanaged>\t\n            <unmanaged-short>unsigned int right</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ResourceRegion.Bottom\">\n            <summary>\t\n            <dd> <p>The y position of the bottom of the box.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_BOX::bottom']/*\"/>\t\n            <msdn-id>bb204895</msdn-id>\t\n            <unmanaged>unsigned int bottom</unmanaged>\t\n            <unmanaged-short>unsigned int bottom</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ResourceRegion.Back\">\n            <summary>\t\n            <dd> <p>The z position of the back of the box.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_BOX::back']/*\"/>\t\n            <msdn-id>bb204895</msdn-id>\t\n            <unmanaged>unsigned int back</unmanaged>\t\n            <unmanaged-short>unsigned int back</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.SamplerStateDescription\">\n            <summary>\t\n            <p>Describes a sampler state.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>These are the default values for sampler state.</p><table> <tr><th>State</th><th>Default Value</th></tr> <tr><td>Filter</td><td>Min_Mag_Mip_Point</td></tr> <tr><td>AddressU</td><td>Clamp</td></tr> <tr><td>AddressV</td><td>Clamp</td></tr> <tr><td>AddressW</td><td>Clamp</td></tr> <tr><td>MinLOD</td><td>0.0f</td></tr> <tr><td>MaxLOD</td><td>3.402823466e+38F (FLT_MAX)</td></tr> <tr><td>MipMapLODBias</td><td>0.0f</td></tr> <tr><td>MaxAnisotropy</td><td>16</td></tr> <tr><td>ComparisonFunc</td><td>Never</td></tr> <tr><td>BorderColor</td><td>float4(0.0f, 0.0f, 0.0f, 0.0f)</td></tr> <tr><td>Texture</td><td>N/A</td></tr> </table><p>?</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_SAMPLER_DESC']/*\"/>\t\n            <msdn-id>bb172415</msdn-id>\t\n            <unmanaged>D3D10_SAMPLER_DESC</unmanaged>\t\n            <unmanaged-short>D3D10_SAMPLER_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.SamplerStateDescription.Filter\">\n            <summary>\t\n            <dd> <p>Filtering method to use when sampling a texture (see <strong><see cref=\"T:SharpDX.Direct3D10.Filter\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_SAMPLER_DESC::Filter']/*\"/>\t\n            <msdn-id>bb172415</msdn-id>\t\n            <unmanaged>D3D10_FILTER Filter</unmanaged>\t\n            <unmanaged-short>D3D10_FILTER Filter</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.SamplerStateDescription.AddressU\">\n            <summary>\t\n            <dd> <p>Method to use for resolving a u texture coordinate that is outside the 0 to 1 range (see <strong><see cref=\"T:SharpDX.Direct3D10.TextureAddressMode\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_SAMPLER_DESC::AddressU']/*\"/>\t\n            <msdn-id>bb172415</msdn-id>\t\n            <unmanaged>D3D10_TEXTURE_ADDRESS_MODE AddressU</unmanaged>\t\n            <unmanaged-short>D3D10_TEXTURE_ADDRESS_MODE AddressU</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.SamplerStateDescription.AddressV\">\n            <summary>\t\n            <dd> <p>Method to use for resolving a v texture coordinate that is outside the 0 to 1 range.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_SAMPLER_DESC::AddressV']/*\"/>\t\n            <msdn-id>bb172415</msdn-id>\t\n            <unmanaged>D3D10_TEXTURE_ADDRESS_MODE AddressV</unmanaged>\t\n            <unmanaged-short>D3D10_TEXTURE_ADDRESS_MODE AddressV</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.SamplerStateDescription.AddressW\">\n            <summary>\t\n            <dd> <p>Method to use for resolving a w texture coordinate that is outside the 0 to 1 range.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_SAMPLER_DESC::AddressW']/*\"/>\t\n            <msdn-id>bb172415</msdn-id>\t\n            <unmanaged>D3D10_TEXTURE_ADDRESS_MODE AddressW</unmanaged>\t\n            <unmanaged-short>D3D10_TEXTURE_ADDRESS_MODE AddressW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.SamplerStateDescription.MipLodBias\">\n            <summary>\t\n            <dd> <p>Offset from the calculated mipmap level. For example, if Direct3D calculates that a texture should be sampled at mipmap level 3 and MipLODBias is 2, then the texture will be sampled at mipmap level 5.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_SAMPLER_DESC::MipLODBias']/*\"/>\t\n            <msdn-id>bb172415</msdn-id>\t\n            <unmanaged>float MipLODBias</unmanaged>\t\n            <unmanaged-short>float MipLODBias</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.SamplerStateDescription.MaximumAnisotropy\">\n            <summary>\t\n            <dd> <p>Clamping value used if <see cref=\"F:SharpDX.Direct3D10.Filter.Anisotropic\"/> or <see cref=\"F:SharpDX.Direct3D10.Filter.ComparisonAnisotropic\"/> is specified in Filter. Valid values are between 1 and 16.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_SAMPLER_DESC::MaxAnisotropy']/*\"/>\t\n            <msdn-id>bb172415</msdn-id>\t\n            <unmanaged>unsigned int MaxAnisotropy</unmanaged>\t\n            <unmanaged-short>unsigned int MaxAnisotropy</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.SamplerStateDescription.ComparisonFunction\">\n            <summary>\t\n            <dd> <p>A function that compares sampled data against existing sampled data. The function options are listed in <strong><see cref=\"T:SharpDX.Direct3D10.Comparison\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_SAMPLER_DESC::ComparisonFunc']/*\"/>\t\n            <msdn-id>bb172415</msdn-id>\t\n            <unmanaged>D3D10_COMPARISON_FUNC ComparisonFunc</unmanaged>\t\n            <unmanaged-short>D3D10_COMPARISON_FUNC ComparisonFunc</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.SamplerStateDescription.BorderColor\">\n            <summary>\t\n            <dd> <p>Border color to use if <see cref=\"F:SharpDX.Direct3D10.TextureAddressMode.Border\"/> is specified for AddressU, AddressV, or AddressW. Range must be between 0.0 and 1.0 inclusive.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_SAMPLER_DESC::BorderColor']/*\"/>\t\n            <msdn-id>bb172415</msdn-id>\t\n            <unmanaged>SHARPDX_COLOR4 BorderColor</unmanaged>\t\n            <unmanaged-short>SHARPDX_COLOR4 BorderColor</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.SamplerStateDescription.MinimumLod\">\n            <summary>\t\n            <dd> <p>Lower end of the mipmap range to clamp access to, where 0 is the largest and most detailed mipmap level and any level higher than that is less detailed.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_SAMPLER_DESC::MinLOD']/*\"/>\t\n            <msdn-id>bb172415</msdn-id>\t\n            <unmanaged>float MinLOD</unmanaged>\t\n            <unmanaged-short>float MinLOD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.SamplerStateDescription.MaximumLod\">\n            <summary>\t\n            <dd> <p>Upper end of the mipmap range to clamp access to, where 0 is the largest and most detailed mipmap level and any level higher than that is less detailed. This value must be greater than or equal to MinLOD. To have no upper limit on LOD set this to a large value such as D3D10_FLOAT32_MAX.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_SAMPLER_DESC::MaxLOD']/*\"/>\t\n            <msdn-id>bb172415</msdn-id>\t\n            <unmanaged>float MaxLOD</unmanaged>\t\n            <unmanaged-short>float MaxLOD</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.ShaderBufferDescription\">\n            <summary>\t\n            <p>Describes a shader constant-buffer.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Constants are supplied to shaders in a shader-constant buffer. Get the description of a shader-constant-buffer by calling <strong>ID3D10ShaderReflectionConstantBuffer::GetDesc</strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_SHADER_BUFFER_DESC']/*\"/>\t\n            <msdn-id>bb172417</msdn-id>\t\n            <unmanaged>D3D10_SHADER_BUFFER_DESC</unmanaged>\t\n            <unmanaged-short>D3D10_SHADER_BUFFER_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ShaderBufferDescription.Name\">\n            <summary>\t\n            <dd> <p>The name of the buffer.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_SHADER_BUFFER_DESC::Name']/*\"/>\t\n            <msdn-id>bb172417</msdn-id>\t\n            <unmanaged>const char* Name</unmanaged>\t\n            <unmanaged-short>char Name</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ShaderBufferDescription.Type\">\n            <summary>\t\n            <dd> <p>The intended use of the constant data. See <strong>D3D10_CBUFFER_TYPE</strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_SHADER_BUFFER_DESC::Type']/*\"/>\t\n            <msdn-id>bb172417</msdn-id>\t\n            <unmanaged>D3D_CBUFFER_TYPE Type</unmanaged>\t\n            <unmanaged-short>D3D_CBUFFER_TYPE Type</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ShaderBufferDescription.VariableCount\">\n            <summary>\t\n            <dd> <p>The number of unique variables.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_SHADER_BUFFER_DESC::Variables']/*\"/>\t\n            <msdn-id>bb172417</msdn-id>\t\n            <unmanaged>unsigned int Variables</unmanaged>\t\n            <unmanaged-short>unsigned int Variables</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ShaderBufferDescription.Size\">\n            <summary>\t\n            <dd> <p>Buffer size (in bytes).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_SHADER_BUFFER_DESC::Size']/*\"/>\t\n            <msdn-id>bb172417</msdn-id>\t\n            <unmanaged>unsigned int Size</unmanaged>\t\n            <unmanaged-short>unsigned int Size</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ShaderBufferDescription.Flags\">\n            <summary>\t\n            <dd> <p>Shader buffer properties. See <strong>D3D10_SHADER_CBUFFER_FLAGS</strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_SHADER_BUFFER_DESC::uFlags']/*\"/>\t\n            <msdn-id>bb172417</msdn-id>\t\n            <unmanaged>D3D_SHADER_CBUFFER_FLAGS uFlags</unmanaged>\t\n            <unmanaged-short>D3D_SHADER_CBUFFER_FLAGS uFlags</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.ShaderParameterDescription\">\n            <summary>\t\n            <p>Describes a shader signature.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>A shader can take n inputs and can produce m outputs. The order of the input (or output) parameters, their associated types, and any attached semantics make up the shader signature. Each shader has an input and an output signature.</p><p>When compiling a shader or an effect, some API calls validate shader signatures (such as <strong>D3D10CompileShader</strong> and <strong><see cref=\"M:SharpDX.Direct3D10.D3D10.CompileEffect10FromMemory(System.IntPtr,SharpDX.PointerSize,System.String,SharpDX.Direct3D.ShaderMacro[],System.IntPtr,SharpDX.D3DCompiler.ShaderFlags,SharpDX.D3DCompiler.EffectFlags,SharpDX.Direct3D.Blob@,SharpDX.Direct3D.Blob@)\"/></strong>). That is, they compare the output signature of one shader (like a vertex shader) with the input signature of another shader (like a pixel shader). This ensures that a shader outputs data that is compatible with a downstream shader that is consuming that data. Compatible means that a shader signature is a exact-match subset of the preceding shader stage. Exact match means parameter types and semantics must exactly match. Subset means that a parameter that is not required by a downstream stage, does not need to include that parameter in its shader signature.</p><p>Get a shader-signature from a shader or an effect by calling APIs such as <strong>ID3D10ShaderReflection::GetInputParameterDesc</strong> or <strong><see cref=\"M:SharpDX.Direct3D10.EffectShaderVariable.GetInputSignatureElementDescription(System.Int32,System.Int32)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_SIGNATURE_PARAMETER_DESC']/*\"/>\t\n            <msdn-id>Bb172446</msdn-id>\t\n            <unmanaged>D3D10_SIGNATURE_PARAMETER_DESC</unmanaged>\t\n            <unmanaged-short>D3D10_SIGNATURE_PARAMETER_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ShaderParameterDescription.SemanticName\">\n            <summary>\t\n            <dd> <p>A per-parameter string that identifies how the data will be used. See Semantics (DirectX HLSL).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_SIGNATURE_PARAMETER_DESC::SemanticName']/*\"/>\t\n            <msdn-id>Bb172446</msdn-id>\t\n            <unmanaged>const char* SemanticName</unmanaged>\t\n            <unmanaged-short>char SemanticName</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ShaderParameterDescription.SemanticIndex\">\n            <summary>\t\n            <dd> <p>Semantic index that modifies the semantic. Used to differentiate different parameters that use the same semantic.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_SIGNATURE_PARAMETER_DESC::SemanticIndex']/*\"/>\t\n            <msdn-id>Bb172446</msdn-id>\t\n            <unmanaged>unsigned int SemanticIndex</unmanaged>\t\n            <unmanaged-short>unsigned int SemanticIndex</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ShaderParameterDescription.Register\">\n            <summary>\t\n            <dd> <p>The register that will contain this variable's data.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_SIGNATURE_PARAMETER_DESC::Register']/*\"/>\t\n            <msdn-id>Bb172446</msdn-id>\t\n            <unmanaged>unsigned int Register</unmanaged>\t\n            <unmanaged-short>unsigned int Register</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ShaderParameterDescription.SystemValueType\">\n            <summary>\t\n            <dd> <p>A predefined string that determines the functionality of certain pipeline stages. See <strong>D3D10_NAME</strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_SIGNATURE_PARAMETER_DESC::SystemValueType']/*\"/>\t\n            <msdn-id>Bb172446</msdn-id>\t\n            <unmanaged>D3D_NAME SystemValueType</unmanaged>\t\n            <unmanaged-short>D3D_NAME SystemValueType</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ShaderParameterDescription.ComponentType\">\n            <summary>\t\n            <dd> <p>The per-component-data type that is stored in a register. See <strong>D3D10_REGISTER_COMPONENT_TYPE</strong>. Each register can store up to four-components of data.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_SIGNATURE_PARAMETER_DESC::ComponentType']/*\"/>\t\n            <msdn-id>Bb172446</msdn-id>\t\n            <unmanaged>D3D_REGISTER_COMPONENT_TYPE ComponentType</unmanaged>\t\n            <unmanaged-short>D3D_REGISTER_COMPONENT_TYPE ComponentType</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ShaderParameterDescription.Mask\">\n            <summary>\t\n            <dd> <p>Mask which indicates which components of a register are used.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_SIGNATURE_PARAMETER_DESC::Mask']/*\"/>\t\n            <msdn-id>Bb172446</msdn-id>\t\n            <unmanaged>unsigned char Mask</unmanaged>\t\n            <unmanaged-short>unsigned char Mask</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ShaderParameterDescription.ReadWriteMask\">\n            <summary>\t\n            <dd> <p>Mask which indicates whether a given component is never written (if the signature is an output signature) or always read (if the signature is an input signature). The mask is a combination of <strong>D3D10_REGISTER_COMPONENT_TYPE</strong> values.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_SIGNATURE_PARAMETER_DESC::ReadWriteMask']/*\"/>\t\n            <msdn-id>Bb172446</msdn-id>\t\n            <unmanaged>unsigned char ReadWriteMask</unmanaged>\t\n            <unmanaged-short>unsigned char ReadWriteMask</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.ShaderResourceViewDescription\">\n            <summary>\t\n            <p>Describes a shader-resource view.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>A view is a format-specific way to look at the data in a resource. The view determines what data to look at, and how it is cast when read. For more information about how views work, see Views </p><p>When viewing a resource, the resource-view description must specify a typed format, that is compatible with the resource format. So that means that you cannot create a resource-view description using any format with _TYPELESS in the name. You can however view a typeless resource by specifying a typed format for the view. For example, a <see cref=\"F:SharpDX.DXGI.Format.R32G32B32_Typeless\"/> resource can be viewed with one of these typed formats: <see cref=\"F:SharpDX.DXGI.Format.R32G32B32_Float\"/>, <see cref=\"F:SharpDX.DXGI.Format.R32G32B32_UInt\"/>, and <see cref=\"F:SharpDX.DXGI.Format.R32G32B32_SInt\"/>, since these typed formats are compatible with the typeless resource.</p><p>Create a shader-resource-view description by calling <strong><see cref=\"M:SharpDX.Direct3D10.Device.CreateShaderResourceView(SharpDX.Direct3D10.Resource,System.Nullable{SharpDX.Direct3D10.ShaderResourceViewDescription},SharpDX.Direct3D10.ShaderResourceView)\"/></strong>. To view a shader-resource-view description, call <strong><see cref=\"M:SharpDX.Direct3D10.ShaderResourceView.GetDescription(SharpDX.Direct3D10.ShaderResourceViewDescription@)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_SHADER_RESOURCE_VIEW_DESC']/*\"/>\t\n            <msdn-id>bb172437</msdn-id>\t\n            <unmanaged>D3D10_SHADER_RESOURCE_VIEW_DESC</unmanaged>\t\n            <unmanaged-short>D3D10_SHADER_RESOURCE_VIEW_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ShaderResourceViewDescription.Format\">\n            <summary>\t\n            <dd> <p>The viewing <strong>format</strong>. See remarks.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_SHADER_RESOURCE_VIEW_DESC::Format']/*\"/>\t\n            <msdn-id>bb172437</msdn-id>\t\n            <unmanaged>DXGI_FORMAT Format</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT Format</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ShaderResourceViewDescription.Dimension\">\n            <summary>\t\n            <dd> <p>The resource type of the view. See <strong>D3D10_SRV_DIMENSION</strong>. This should be the same as the resource type of the underlying resource. This parameter also determines which _SRV to use in the union below.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_SHADER_RESOURCE_VIEW_DESC::ViewDimension']/*\"/>\t\n            <msdn-id>bb172437</msdn-id>\t\n            <unmanaged>D3D_SRV_DIMENSION ViewDimension</unmanaged>\t\n            <unmanaged-short>D3D_SRV_DIMENSION ViewDimension</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ShaderResourceViewDescription.Buffer\">\n            <summary>\t\n            <dd> <p>View the resource as a buffer using information from a shader-resource view (see <strong><see cref=\"T:SharpDX.Direct3D10.ShaderResourceViewDescription.BufferResource\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_SHADER_RESOURCE_VIEW_DESC::Buffer']/*\"/>\t\n            <msdn-id>bb172437</msdn-id>\t\n            <unmanaged>D3D10_BUFFER_SRV Buffer</unmanaged>\t\n            <unmanaged-short>D3D10_BUFFER_SRV Buffer</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ShaderResourceViewDescription.Texture1D\">\n            <summary>\t\n            <dd> <p>View the resource as a 1D texture using information from a shader-resource view (see <strong><see cref=\"T:SharpDX.Direct3D10.ShaderResourceViewDescription.Texture1DResource\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_SHADER_RESOURCE_VIEW_DESC::Texture1D']/*\"/>\t\n            <msdn-id>bb172437</msdn-id>\t\n            <unmanaged>D3D10_TEX1D_SRV Texture1D</unmanaged>\t\n            <unmanaged-short>D3D10_TEX1D_SRV Texture1D</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ShaderResourceViewDescription.Texture1DArray\">\n            <summary>\t\n            <dd> <p>View the resource as a 1D-texture array using information from a shader-resource view (see <strong><see cref=\"T:SharpDX.Direct3D10.ShaderResourceViewDescription.Texture1DArrayResource\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_SHADER_RESOURCE_VIEW_DESC::Texture1DArray']/*\"/>\t\n            <msdn-id>bb172437</msdn-id>\t\n            <unmanaged>D3D10_TEX1D_ARRAY_SRV Texture1DArray</unmanaged>\t\n            <unmanaged-short>D3D10_TEX1D_ARRAY_SRV Texture1DArray</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ShaderResourceViewDescription.Texture2D\">\n            <summary>\t\n            <dd> <p>View the resource as a 2D-texture using information from a shader-resource view (see <strong><see cref=\"T:SharpDX.Direct3D10.ShaderResourceViewDescription.Texture2DResource\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_SHADER_RESOURCE_VIEW_DESC::Texture2D']/*\"/>\t\n            <msdn-id>bb172437</msdn-id>\t\n            <unmanaged>D3D10_TEX2D_SRV Texture2D</unmanaged>\t\n            <unmanaged-short>D3D10_TEX2D_SRV Texture2D</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ShaderResourceViewDescription.Texture2DArray\">\n            <summary>\t\n            <dd> <p>View the resource as a 2D-texture array using information from a shader-resource view (see <strong><see cref=\"T:SharpDX.Direct3D10.ShaderResourceViewDescription.Texture2DArrayResource\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_SHADER_RESOURCE_VIEW_DESC::Texture2DArray']/*\"/>\t\n            <msdn-id>bb172437</msdn-id>\t\n            <unmanaged>D3D10_TEX2D_ARRAY_SRV Texture2DArray</unmanaged>\t\n            <unmanaged-short>D3D10_TEX2D_ARRAY_SRV Texture2DArray</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ShaderResourceViewDescription.Texture2DMS\">\n            <summary>\t\n            <dd> <p>View the resource as a 2D-multisampled texture using information from a shader-resource view (see <strong><see cref=\"T:SharpDX.Direct3D10.ShaderResourceViewDescription.Texture2DMultisampledResource\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_SHADER_RESOURCE_VIEW_DESC::Texture2DMS']/*\"/>\t\n            <msdn-id>bb172437</msdn-id>\t\n            <unmanaged>D3D10_TEX2DMS_SRV Texture2DMS</unmanaged>\t\n            <unmanaged-short>D3D10_TEX2DMS_SRV Texture2DMS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ShaderResourceViewDescription.Texture2DMSArray\">\n            <summary>\t\n            <dd> <p>View the resource as a 2D-multisampled-texture array using information from a shader-resource view (see <strong><see cref=\"T:SharpDX.Direct3D10.ShaderResourceViewDescription.Texture2DMultisampledArrayResource\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_SHADER_RESOURCE_VIEW_DESC::Texture2DMSArray']/*\"/>\t\n            <msdn-id>bb172437</msdn-id>\t\n            <unmanaged>D3D10_TEX2DMS_ARRAY_SRV Texture2DMSArray</unmanaged>\t\n            <unmanaged-short>D3D10_TEX2DMS_ARRAY_SRV Texture2DMSArray</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ShaderResourceViewDescription.Texture3D\">\n            <summary>\t\n            <dd> <p>View the resource as a 3D texture using information from a shader-resource view (see <strong><see cref=\"T:SharpDX.Direct3D10.ShaderResourceViewDescription.Texture3DResource\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_SHADER_RESOURCE_VIEW_DESC::Texture3D']/*\"/>\t\n            <msdn-id>bb172437</msdn-id>\t\n            <unmanaged>D3D10_TEX3D_SRV Texture3D</unmanaged>\t\n            <unmanaged-short>D3D10_TEX3D_SRV Texture3D</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ShaderResourceViewDescription.TextureCube\">\n            <summary>\t\n            <dd> <p>View the resource as a 3D-cube texture using information from a shader-resource view (see <strong><see cref=\"T:SharpDX.Direct3D10.ShaderResourceViewDescription.TextureCubeResource\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_SHADER_RESOURCE_VIEW_DESC::TextureCube']/*\"/>\t\n            <msdn-id>bb172437</msdn-id>\t\n            <unmanaged>D3D10_TEXCUBE_SRV TextureCube</unmanaged>\t\n            <unmanaged-short>D3D10_TEXCUBE_SRV TextureCube</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.ShaderResourceViewDescription.BufferResource\">\n            <summary>\t\n            <p>Specifies the elements in a buffer resource to use in a shader-resource view.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The <strong><see cref=\"T:SharpDX.Direct3D10.ShaderResourceViewDescription.BufferResource\"/></strong> structure is a member of the  <strong><see cref=\"T:SharpDX.Direct3D10.ShaderResourceViewDescription\"/></strong> structure, which represents a shader-resource view description. You can create a shader-resource view by calling the <strong><see cref=\"M:SharpDX.Direct3D10.Device.CreateShaderResourceView(SharpDX.Direct3D10.Resource,System.Nullable{SharpDX.Direct3D10.ShaderResourceViewDescription},SharpDX.Direct3D10.ShaderResourceView)\"/></strong> method.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_BUFFER_SRV']/*\"/>\t\n            <msdn-id>bb204898</msdn-id>\t\n            <unmanaged>D3D10_BUFFER_SRV</unmanaged>\t\n            <unmanaged-short>D3D10_BUFFER_SRV</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ShaderResourceViewDescription.BufferResource.FirstElement\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_BUFFER_SRV::FirstElement']/*\"/>\t\n            <unmanaged>unsigned int FirstElement</unmanaged>\t\n            <unmanaged-short>unsigned int FirstElement</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ShaderResourceViewDescription.BufferResource.ElementOffset\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_BUFFER_SRV::ElementOffset']/*\"/>\t\n            <unmanaged>unsigned int ElementOffset</unmanaged>\t\n            <unmanaged-short>unsigned int ElementOffset</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ShaderResourceViewDescription.BufferResource.ElementCount\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_BUFFER_SRV::NumElements']/*\"/>\t\n            <unmanaged>unsigned int NumElements</unmanaged>\t\n            <unmanaged-short>unsigned int NumElements</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ShaderResourceViewDescription.BufferResource.ElementWidth\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_BUFFER_SRV::ElementWidth']/*\"/>\t\n            <unmanaged>unsigned int ElementWidth</unmanaged>\t\n            <unmanaged-short>unsigned int ElementWidth</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.ShaderResourceViewDescription.Texture1DResource\">\n            <summary>\t\n            <p>Specifies the subresource from a 1D texture to use in a shader-resource view.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure is one member of a shader-resource-view description (see <strong><see cref=\"T:SharpDX.Direct3D10.ShaderResourceViewDescription\"/></strong>).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEX1D_SRV']/*\"/>\t\n            <msdn-id>bb172463</msdn-id>\t\n            <unmanaged>D3D10_TEX1D_SRV</unmanaged>\t\n            <unmanaged-short>D3D10_TEX1D_SRV</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ShaderResourceViewDescription.Texture1DResource.MostDetailedMip\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEX1D_SRV::MostDetailedMip']/*\"/>\t\n            <unmanaged>unsigned int MostDetailedMip</unmanaged>\t\n            <unmanaged-short>unsigned int MostDetailedMip</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ShaderResourceViewDescription.Texture1DResource.MipLevels\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEX1D_SRV::MipLevels']/*\"/>\t\n            <unmanaged>unsigned int MipLevels</unmanaged>\t\n            <unmanaged-short>unsigned int MipLevels</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.ShaderResourceViewDescription.Texture1DArrayResource\">\n            <summary>\t\n            <p>Specifies the subresource(s) from an array of 1D textures to use in a shader-resource view.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure is one member of a shader-resource-view description (see <strong><see cref=\"T:SharpDX.Direct3D10.ShaderResourceViewDescription\"/></strong>).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEX1D_ARRAY_SRV']/*\"/>\t\n            <msdn-id>Bb172460</msdn-id>\t\n            <unmanaged>D3D10_TEX1D_ARRAY_SRV</unmanaged>\t\n            <unmanaged-short>D3D10_TEX1D_ARRAY_SRV</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ShaderResourceViewDescription.Texture1DArrayResource.MostDetailedMip\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEX1D_ARRAY_SRV::MostDetailedMip']/*\"/>\t\n            <unmanaged>unsigned int MostDetailedMip</unmanaged>\t\n            <unmanaged-short>unsigned int MostDetailedMip</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ShaderResourceViewDescription.Texture1DArrayResource.MipLevels\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEX1D_ARRAY_SRV::MipLevels']/*\"/>\t\n            <unmanaged>unsigned int MipLevels</unmanaged>\t\n            <unmanaged-short>unsigned int MipLevels</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ShaderResourceViewDescription.Texture1DArrayResource.FirstArraySlice\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEX1D_ARRAY_SRV::FirstArraySlice']/*\"/>\t\n            <unmanaged>unsigned int FirstArraySlice</unmanaged>\t\n            <unmanaged-short>unsigned int FirstArraySlice</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ShaderResourceViewDescription.Texture1DArrayResource.ArraySize\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEX1D_ARRAY_SRV::ArraySize']/*\"/>\t\n            <unmanaged>unsigned int ArraySize</unmanaged>\t\n            <unmanaged-short>unsigned int ArraySize</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.ShaderResourceViewDescription.Texture2DResource\">\n            <summary>\t\n            <p>Specifies the subresource from a 2D texture to use in a shader-resource view.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure is one member of a shader-resource-view description (see <strong><see cref=\"T:SharpDX.Direct3D10.ShaderResourceViewDescription\"/></strong>).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEX2D_SRV']/*\"/>\t\n            <msdn-id>bb172475</msdn-id>\t\n            <unmanaged>D3D10_TEX2D_SRV</unmanaged>\t\n            <unmanaged-short>D3D10_TEX2D_SRV</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ShaderResourceViewDescription.Texture2DResource.MostDetailedMip\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEX2D_SRV::MostDetailedMip']/*\"/>\t\n            <unmanaged>unsigned int MostDetailedMip</unmanaged>\t\n            <unmanaged-short>unsigned int MostDetailedMip</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ShaderResourceViewDescription.Texture2DResource.MipLevels\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEX2D_SRV::MipLevels']/*\"/>\t\n            <unmanaged>unsigned int MipLevels</unmanaged>\t\n            <unmanaged-short>unsigned int MipLevels</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.ShaderResourceViewDescription.Texture2DArrayResource\">\n            <summary>\t\n            <p>Specifies the subresource(s) from an array of 2D textures to use in a shader-resource view.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure is one member of a shader-resource-view description (see <strong><see cref=\"T:SharpDX.Direct3D10.ShaderResourceViewDescription\"/></strong>).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEX2D_ARRAY_SRV']/*\"/>\t\n            <msdn-id>bb172472</msdn-id>\t\n            <unmanaged>D3D10_TEX2D_ARRAY_SRV</unmanaged>\t\n            <unmanaged-short>D3D10_TEX2D_ARRAY_SRV</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ShaderResourceViewDescription.Texture2DArrayResource.MostDetailedMip\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEX2D_ARRAY_SRV::MostDetailedMip']/*\"/>\t\n            <unmanaged>unsigned int MostDetailedMip</unmanaged>\t\n            <unmanaged-short>unsigned int MostDetailedMip</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ShaderResourceViewDescription.Texture2DArrayResource.MipLevels\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEX2D_ARRAY_SRV::MipLevels']/*\"/>\t\n            <unmanaged>unsigned int MipLevels</unmanaged>\t\n            <unmanaged-short>unsigned int MipLevels</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ShaderResourceViewDescription.Texture2DArrayResource.FirstArraySlice\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEX2D_ARRAY_SRV::FirstArraySlice']/*\"/>\t\n            <unmanaged>unsigned int FirstArraySlice</unmanaged>\t\n            <unmanaged-short>unsigned int FirstArraySlice</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ShaderResourceViewDescription.Texture2DArrayResource.ArraySize\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEX2D_ARRAY_SRV::ArraySize']/*\"/>\t\n            <unmanaged>unsigned int ArraySize</unmanaged>\t\n            <unmanaged-short>unsigned int ArraySize</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.ShaderResourceViewDescription.Texture2DMultisampledResource\">\n            <summary>\t\n            <p>Specifies the subresource(s) from a multisampled 2D texture to use in a shader-resource view.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Since a multisampled 2D texture contains a single subresource, there is actually nothing to specify in <strong><see cref=\"T:SharpDX.Direct3D10.RenderTargetViewDescription.Texture2DMultisampledResource\"/></strong>. Consequently, <strong>UnusedField_NothingToDefine</strong> is included so that this structure will compile in C.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEX2DMS_SRV']/*\"/>\t\n            <msdn-id>bb172469</msdn-id>\t\n            <unmanaged>D3D10_TEX2DMS_SRV</unmanaged>\t\n            <unmanaged-short>D3D10_TEX2DMS_SRV</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ShaderResourceViewDescription.Texture2DMultisampledResource.UnusedFieldNothingToDefine\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEX2DMS_SRV::UnusedField_NothingToDefine']/*\"/>\t\n            <unmanaged>unsigned int UnusedField_NothingToDefine</unmanaged>\t\n            <unmanaged-short>unsigned int UnusedField_NothingToDefine</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.ShaderResourceViewDescription.Texture2DMultisampledArrayResource\">\n            <summary>\t\n            <p>Specifies the subresource(s) from an array of multisampled 2D textures to use in a shader-resource view.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure is one member of a shader-resource-view description (see <strong><see cref=\"T:SharpDX.Direct3D10.ShaderResourceViewDescription\"/></strong>).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEX2DMS_ARRAY_SRV']/*\"/>\t\n            <msdn-id>bb172466</msdn-id>\t\n            <unmanaged>D3D10_TEX2DMS_ARRAY_SRV</unmanaged>\t\n            <unmanaged-short>D3D10_TEX2DMS_ARRAY_SRV</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ShaderResourceViewDescription.Texture2DMultisampledArrayResource.FirstArraySlice\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEX2DMS_ARRAY_SRV::FirstArraySlice']/*\"/>\t\n            <unmanaged>unsigned int FirstArraySlice</unmanaged>\t\n            <unmanaged-short>unsigned int FirstArraySlice</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ShaderResourceViewDescription.Texture2DMultisampledArrayResource.ArraySize\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEX2DMS_ARRAY_SRV::ArraySize']/*\"/>\t\n            <unmanaged>unsigned int ArraySize</unmanaged>\t\n            <unmanaged-short>unsigned int ArraySize</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.ShaderResourceViewDescription.Texture3DResource\">\n            <summary>\t\n            <p>Specifies the subresource(s) from a 3D texture to use in a shader-resource view.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure is one member of a shader-resource-view description (see <strong><see cref=\"T:SharpDX.Direct3D10.ShaderResourceViewDescription\"/></strong>).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEX3D_SRV']/*\"/>\t\n            <msdn-id>Bb172477</msdn-id>\t\n            <unmanaged>D3D10_TEX3D_SRV</unmanaged>\t\n            <unmanaged-short>D3D10_TEX3D_SRV</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ShaderResourceViewDescription.Texture3DResource.MostDetailedMip\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEX3D_SRV::MostDetailedMip']/*\"/>\t\n            <unmanaged>unsigned int MostDetailedMip</unmanaged>\t\n            <unmanaged-short>unsigned int MostDetailedMip</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ShaderResourceViewDescription.Texture3DResource.MipLevels\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEX3D_SRV::MipLevels']/*\"/>\t\n            <unmanaged>unsigned int MipLevels</unmanaged>\t\n            <unmanaged-short>unsigned int MipLevels</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.ShaderResourceViewDescription.TextureCubeResource\">\n            <summary>\t\n            <p>Specifies the subresource from a cube texture to use in a shader-resource view.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure is one member of a shader-resource-view description (see <strong><see cref=\"T:SharpDX.Direct3D10.ShaderResourceViewDescription\"/></strong>).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEXCUBE_SRV']/*\"/>\t\n            <msdn-id>bb172478</msdn-id>\t\n            <unmanaged>D3D10_TEXCUBE_SRV</unmanaged>\t\n            <unmanaged-short>D3D10_TEXCUBE_SRV</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ShaderResourceViewDescription.TextureCubeResource.MostDetailedMip\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEXCUBE_SRV::MostDetailedMip']/*\"/>\t\n            <unmanaged>unsigned int MostDetailedMip</unmanaged>\t\n            <unmanaged-short>unsigned int MostDetailedMip</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ShaderResourceViewDescription.TextureCubeResource.MipLevels\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEXCUBE_SRV::MipLevels']/*\"/>\t\n            <unmanaged>unsigned int MipLevels</unmanaged>\t\n            <unmanaged-short>unsigned int MipLevels</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.ShaderResourceViewDescription1\">\n            <summary>\t\n            <p>Describes a shader-resource view.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>A view is a format-specific way to look at the data in a resource. The view determines what data to look at, and how it is cast when read. For more information about how views work, see Views </p><p>When viewing a resource, the resource-view description must specify a typed format, that is compatible with the resource format. So that means that you cannot create a resource-view description using any format with _TYPELESS in the name. You can however view a typeless resource by specifying a typed format for the view. For example, a <see cref=\"F:SharpDX.DXGI.Format.R32G32B32_Typeless\"/> resource can be viewed with one of these typed formats: <see cref=\"F:SharpDX.DXGI.Format.R32G32B32_Float\"/>, <see cref=\"F:SharpDX.DXGI.Format.R32G32B32_UInt\"/>, and <see cref=\"F:SharpDX.DXGI.Format.R32G32B32_SInt\"/>, since these typed formats are compatible with the typeless resource.</p><p>Create a shader-resource-view description by calling <strong><see cref=\"M:SharpDX.Direct3D10.Device1.CreateShaderResourceView1(SharpDX.Direct3D10.Resource,System.Nullable{SharpDX.Direct3D10.ShaderResourceViewDescription1},SharpDX.Direct3D10.ShaderResourceView1)\"/></strong>. To view a shader-resource-view description, call <strong><see cref=\"M:SharpDX.Direct3D10.ShaderResourceView.GetDescription(SharpDX.Direct3D10.ShaderResourceViewDescription@)\"/></strong>.</p><p>This structure requires Windows Vista Service Pack 1.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_SHADER_RESOURCE_VIEW_DESC1']/*\"/>\t\n            <msdn-id>bb694534</msdn-id>\t\n            <unmanaged>D3D10_SHADER_RESOURCE_VIEW_DESC1</unmanaged>\t\n            <unmanaged-short>D3D10_SHADER_RESOURCE_VIEW_DESC1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ShaderResourceViewDescription1.Format\">\n            <summary>\t\n            <dd> <p>The viewing <strong>format</strong>. See remarks.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_SHADER_RESOURCE_VIEW_DESC1::Format']/*\"/>\t\n            <msdn-id>bb694534</msdn-id>\t\n            <unmanaged>DXGI_FORMAT Format</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT Format</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ShaderResourceViewDescription1.Dimension\">\n            <summary>\t\n            <dd> <p>The resource type of the view. See <strong>D3D10_SRV_DIMENSION1</strong>. This should be the same as the resource type of the underlying resource. This parameter also determines which _SRV to use in the union below.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_SHADER_RESOURCE_VIEW_DESC1::ViewDimension']/*\"/>\t\n            <msdn-id>bb694534</msdn-id>\t\n            <unmanaged>D3D_SRV_DIMENSION ViewDimension</unmanaged>\t\n            <unmanaged-short>D3D_SRV_DIMENSION ViewDimension</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ShaderResourceViewDescription1.Buffer\">\n            <summary>\t\n            <dd> <p>View the resource as a buffer using information from a shader-resource view (see <strong><see cref=\"T:SharpDX.Direct3D10.ShaderResourceViewDescription.BufferResource\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_SHADER_RESOURCE_VIEW_DESC1::Buffer']/*\"/>\t\n            <msdn-id>bb694534</msdn-id>\t\n            <unmanaged>D3D10_BUFFER_SRV Buffer</unmanaged>\t\n            <unmanaged-short>D3D10_BUFFER_SRV Buffer</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ShaderResourceViewDescription1.Texture1D\">\n            <summary>\t\n            <dd> <p>View the resource as a 1D texture using information from a shader-resource view (see <strong><see cref=\"T:SharpDX.Direct3D10.ShaderResourceViewDescription.Texture1DResource\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_SHADER_RESOURCE_VIEW_DESC1::Texture1D']/*\"/>\t\n            <msdn-id>bb694534</msdn-id>\t\n            <unmanaged>D3D10_TEX1D_SRV Texture1D</unmanaged>\t\n            <unmanaged-short>D3D10_TEX1D_SRV Texture1D</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ShaderResourceViewDescription1.Texture1DArray\">\n            <summary>\t\n            <dd> <p>View the resource as a 1D-texture array using information from a shader-resource view (see <strong><see cref=\"T:SharpDX.Direct3D10.ShaderResourceViewDescription.Texture1DArrayResource\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_SHADER_RESOURCE_VIEW_DESC1::Texture1DArray']/*\"/>\t\n            <msdn-id>bb694534</msdn-id>\t\n            <unmanaged>D3D10_TEX1D_ARRAY_SRV Texture1DArray</unmanaged>\t\n            <unmanaged-short>D3D10_TEX1D_ARRAY_SRV Texture1DArray</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ShaderResourceViewDescription1.Texture2D\">\n            <summary>\t\n            <dd> <p>View the resource as a 2D-texture using information from a shader-resource view (see <strong><see cref=\"T:SharpDX.Direct3D10.ShaderResourceViewDescription.Texture2DResource\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_SHADER_RESOURCE_VIEW_DESC1::Texture2D']/*\"/>\t\n            <msdn-id>bb694534</msdn-id>\t\n            <unmanaged>D3D10_TEX2D_SRV Texture2D</unmanaged>\t\n            <unmanaged-short>D3D10_TEX2D_SRV Texture2D</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ShaderResourceViewDescription1.Texture2DArray\">\n            <summary>\t\n            <dd> <p>View the resource as a 2D-texture array using information from a shader-resource view (see <strong><see cref=\"T:SharpDX.Direct3D10.ShaderResourceViewDescription.Texture2DArrayResource\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_SHADER_RESOURCE_VIEW_DESC1::Texture2DArray']/*\"/>\t\n            <msdn-id>bb694534</msdn-id>\t\n            <unmanaged>D3D10_TEX2D_ARRAY_SRV Texture2DArray</unmanaged>\t\n            <unmanaged-short>D3D10_TEX2D_ARRAY_SRV Texture2DArray</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ShaderResourceViewDescription1.Texture2DMS\">\n            <summary>\t\n            <dd> <p>View the resource as a 2D-multisampled texture using information from a shader-resource view (see <strong><see cref=\"T:SharpDX.Direct3D10.ShaderResourceViewDescription.Texture2DMultisampledResource\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_SHADER_RESOURCE_VIEW_DESC1::Texture2DMS']/*\"/>\t\n            <msdn-id>bb694534</msdn-id>\t\n            <unmanaged>D3D10_TEX2DMS_SRV Texture2DMS</unmanaged>\t\n            <unmanaged-short>D3D10_TEX2DMS_SRV Texture2DMS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ShaderResourceViewDescription1.Texture2DMSArray\">\n            <summary>\t\n            <dd> <p>View the resource as a 2D-multisampled-texture array using information from a shader-resource view (see <strong><see cref=\"T:SharpDX.Direct3D10.ShaderResourceViewDescription.Texture2DMultisampledArrayResource\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_SHADER_RESOURCE_VIEW_DESC1::Texture2DMSArray']/*\"/>\t\n            <msdn-id>bb694534</msdn-id>\t\n            <unmanaged>D3D10_TEX2DMS_ARRAY_SRV Texture2DMSArray</unmanaged>\t\n            <unmanaged-short>D3D10_TEX2DMS_ARRAY_SRV Texture2DMSArray</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ShaderResourceViewDescription1.Texture3D\">\n            <summary>\t\n            <dd> <p>View the resource as a 3D texture using information from a shader-resource view (see <strong><see cref=\"T:SharpDX.Direct3D10.ShaderResourceViewDescription.Texture3DResource\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_SHADER_RESOURCE_VIEW_DESC1::Texture3D']/*\"/>\t\n            <msdn-id>bb694534</msdn-id>\t\n            <unmanaged>D3D10_TEX3D_SRV Texture3D</unmanaged>\t\n            <unmanaged-short>D3D10_TEX3D_SRV Texture3D</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ShaderResourceViewDescription1.TextureCube\">\n            <summary>\t\n            <dd> <p>View the resource as a 3D-cube texture using information from a shader-resource view (see <strong><see cref=\"T:SharpDX.Direct3D10.ShaderResourceViewDescription.TextureCubeResource\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_SHADER_RESOURCE_VIEW_DESC1::TextureCube']/*\"/>\t\n            <msdn-id>bb694534</msdn-id>\t\n            <unmanaged>D3D10_TEXCUBE_SRV TextureCube</unmanaged>\t\n            <unmanaged-short>D3D10_TEXCUBE_SRV TextureCube</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ShaderResourceViewDescription1.TextureCubeArray\">\n            <summary>\t\n            <dd> <p>View the resource as an array of cube textures using information from a shader-resource view (see <strong><see cref=\"T:SharpDX.Direct3D10.ShaderResourceViewDescription1.TextureCubeArrayResource1\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_SHADER_RESOURCE_VIEW_DESC1::TextureCubeArray']/*\"/>\t\n            <msdn-id>bb694534</msdn-id>\t\n            <unmanaged>D3D10_TEXCUBE_ARRAY_SRV1 TextureCubeArray</unmanaged>\t\n            <unmanaged-short>D3D10_TEXCUBE_ARRAY_SRV1 TextureCubeArray</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.ShaderResourceViewDescription1.TextureCubeArrayResource1\">\n            <summary>\t\n            <p>Specifies the subresource(s) from an array of cube textures to use in a shader-resource view.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure is one member of a shader-resource-view description (see <strong><see cref=\"T:SharpDX.Direct3D10.ShaderResourceViewDescription1\"/></strong>).</p><p>This structure requires Windows Vista Service Pack 1.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEXCUBE_ARRAY_SRV1']/*\"/>\t\n            <msdn-id>bb694536</msdn-id>\t\n            <unmanaged>D3D10_TEXCUBE_ARRAY_SRV1</unmanaged>\t\n            <unmanaged-short>D3D10_TEXCUBE_ARRAY_SRV1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ShaderResourceViewDescription1.TextureCubeArrayResource1.MostDetailedMip\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEXCUBE_ARRAY_SRV1::MostDetailedMip']/*\"/>\t\n            <unmanaged>unsigned int MostDetailedMip</unmanaged>\t\n            <unmanaged-short>unsigned int MostDetailedMip</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ShaderResourceViewDescription1.TextureCubeArrayResource1.MipLevels\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEXCUBE_ARRAY_SRV1::MipLevels']/*\"/>\t\n            <unmanaged>unsigned int MipLevels</unmanaged>\t\n            <unmanaged-short>unsigned int MipLevels</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ShaderResourceViewDescription1.TextureCubeArrayResource1.First2DArrayFace\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEXCUBE_ARRAY_SRV1::First2DArrayFace']/*\"/>\t\n            <unmanaged>unsigned int First2DArrayFace</unmanaged>\t\n            <unmanaged-short>unsigned int First2DArrayFace</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.ShaderResourceViewDescription1.TextureCubeArrayResource1.CubeCount\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEXCUBE_ARRAY_SRV1::NumCubes']/*\"/>\t\n            <unmanaged>unsigned int NumCubes</unmanaged>\t\n            <unmanaged-short>unsigned int NumCubes</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.SkinningChannel\">\n            <summary>\t\n            <p>The member of the vertex decl to do the software skinning on. This is used with the <strong><see cref=\"M:SharpDX.Direct3D10.SkinInfo.DoSoftwareSkinning(System.Int32,System.Int32,System.IntPtr,System.Int32,System.IntPtr,System.Int32,SharpDX.Matrix@,System.Nullable{SharpDX.Matrix},SharpDX.Direct3D10.SkinningChannel,System.Int32)\"/></strong> API.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_SKINNING_CHANNEL']/*\"/>\t\n            <msdn-id>bb172702</msdn-id>\t\n            <unmanaged>D3DX10_SKINNING_CHANNEL</unmanaged>\t\n            <unmanaged-short>D3DX10_SKINNING_CHANNEL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.SkinningChannel.SourceOffset\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_SKINNING_CHANNEL::SrcOffset']/*\"/>\t\n            <unmanaged>unsigned int SrcOffset</unmanaged>\t\n            <unmanaged-short>unsigned int SrcOffset</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.SkinningChannel.DestinationOffset\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_SKINNING_CHANNEL::DestOffset']/*\"/>\t\n            <unmanaged>unsigned int DestOffset</unmanaged>\t\n            <unmanaged-short>unsigned int DestOffset</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.SkinningChannel.IsNormal\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_SKINNING_CHANNEL::IsNormal']/*\"/>\t\n            <unmanaged>BOOL IsNormal</unmanaged>\t\n            <unmanaged-short>BOOL IsNormal</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.SpriteInstance\">\n            <summary>\t\n            <p>Defines position, texture, and color information about a sprite.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_SPRITE']/*\"/>\t\n            <msdn-id>bb172703</msdn-id>\t\n            <unmanaged>D3DX10_SPRITE</unmanaged>\t\n            <unmanaged-short>D3DX10_SPRITE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.SpriteInstance.Transform\">\n            <summary>\t\n            <dd> <p>The sprite's model-world transformation. This defines the position and orientation of the sprite in world space.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_SPRITE::matWorld']/*\"/>\t\n            <msdn-id>bb172703</msdn-id>\t\n            <unmanaged>D3DXMATRIX matWorld</unmanaged>\t\n            <unmanaged-short>D3DXMATRIX matWorld</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.SpriteInstance.TextureCoordinates\">\n            <summary>\t\n            <dd> <p>Offset from the upper-left corner of the texture indicating where the sprite image should start in the texture.  <strong>TexCoord</strong> is in  texture coordinates.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_SPRITE::TexCoord']/*\"/>\t\n            <msdn-id>bb172703</msdn-id>\t\n            <unmanaged>D3DXVECTOR2 TexCoord</unmanaged>\t\n            <unmanaged-short>D3DXVECTOR2 TexCoord</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.SpriteInstance.TextureDimensions\">\n            <summary>\t\n            <dd> <p>A vector containing the width and height of the sprite in texture coordinates.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_SPRITE::TexSize']/*\"/>\t\n            <msdn-id>bb172703</msdn-id>\t\n            <unmanaged>D3DXVECTOR2 TexSize</unmanaged>\t\n            <unmanaged-short>D3DXVECTOR2 TexSize</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.SpriteInstance.Color\">\n            <summary>\t\n            <dd> <p>A color that will be multiplied with the pixel color before rendering.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_SPRITE::ColorModulate']/*\"/>\t\n            <msdn-id>bb172703</msdn-id>\t\n            <unmanaged>D3DXCOLOR ColorModulate</unmanaged>\t\n            <unmanaged-short>D3DXCOLOR ColorModulate</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.SpriteInstance.ShaderResourceViewPointer\">\n            <summary>\t\n            <dd> <p>Pointer to a shader-resource view representing the sprite's texture. See <strong><see cref=\"T:SharpDX.Direct3D10.ShaderResourceView\"/> Interface</strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_SPRITE::pTexture']/*\"/>\t\n            <msdn-id>bb172703</msdn-id>\t\n            <unmanaged>ID3D10ShaderResourceView* pTexture</unmanaged>\t\n            <unmanaged-short>ID3D10ShaderResourceView pTexture</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.SpriteInstance.TextureIndex\">\n            <summary>\t\n            <dd> <p>The index of the texture. If pTexture does not represent a texture array, then this should be 0.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_SPRITE::TextureIndex']/*\"/>\t\n            <msdn-id>bb172703</msdn-id>\t\n            <unmanaged>unsigned int TextureIndex</unmanaged>\t\n            <unmanaged-short>unsigned int TextureIndex</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.SpriteInstance.Texture\">\n            <summary>\n            Gets or sets the texture.\n            </summary>\n            <value>The texture.</value>\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.StateBlockMask\">\n            <summary>\t\n            <p>Indicates the device state.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>A state-block mask indicates the device states that a pass or a technique changes.  The <strong>D3D10StateBlockMaskEnableCapture</strong> function  provides a convenient way of setting a range of bitmasks for the array members of <strong><see cref=\"T:SharpDX.Direct3D10.StateBlockMask\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_STATE_BLOCK_MASK']/*\"/>\t\n            <msdn-id>bb172453</msdn-id>\t\n            <unmanaged>D3D10_STATE_BLOCK_MASK</unmanaged>\t\n            <unmanaged-short>D3D10_STATE_BLOCK_MASK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.StateBlockMask.VertexShader\">\n            <summary>\t\n            <dd> <p>Boolean value indicating whether to save the vertex shader state.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_STATE_BLOCK_MASK::VS']/*\"/>\t\n            <msdn-id>bb172453</msdn-id>\t\n            <unmanaged>bool VS</unmanaged>\t\n            <unmanaged-short>bool VS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.StateBlockMask.GeometryShader\">\n            <summary>\t\n            <dd> <p>Boolean value indicating whether to save the geometry shader state.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_STATE_BLOCK_MASK::GS']/*\"/>\t\n            <msdn-id>bb172453</msdn-id>\t\n            <unmanaged>bool GS</unmanaged>\t\n            <unmanaged-short>bool GS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.StateBlockMask.PixelShader\">\n            <summary>\t\n            <dd> <p>Boolean value indicating whether to save the pixel shader state.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_STATE_BLOCK_MASK::PS']/*\"/>\t\n            <msdn-id>bb172453</msdn-id>\t\n            <unmanaged>bool PS</unmanaged>\t\n            <unmanaged-short>bool PS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.StateBlockMask.IAIndexBuffer\">\n            <summary>\t\n            <dd> <p>Boolean value indicating whether to save the index buffer state.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_STATE_BLOCK_MASK::IAIndexBuffer']/*\"/>\t\n            <msdn-id>bb172453</msdn-id>\t\n            <unmanaged>bool IAIndexBuffer</unmanaged>\t\n            <unmanaged-short>bool IAIndexBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.StateBlockMask.IAInputLayout\">\n            <summary>\t\n            <dd> <p>Boolean value indicating whether to save the input layout state.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_STATE_BLOCK_MASK::IAInputLayout']/*\"/>\t\n            <msdn-id>bb172453</msdn-id>\t\n            <unmanaged>bool IAInputLayout</unmanaged>\t\n            <unmanaged-short>bool IAInputLayout</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.StateBlockMask.IAPrimitiveTopology\">\n            <summary>\t\n            <dd> <p>Boolean value indicating whether to save the primitive topology state.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_STATE_BLOCK_MASK::IAPrimitiveTopology']/*\"/>\t\n            <msdn-id>bb172453</msdn-id>\t\n            <unmanaged>bool IAPrimitiveTopology</unmanaged>\t\n            <unmanaged-short>bool IAPrimitiveTopology</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.StateBlockMask.OMRenderTargets\">\n            <summary>\t\n            <dd> <p>Boolean value indicating whether to save the render targets states.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_STATE_BLOCK_MASK::OMRenderTargets']/*\"/>\t\n            <msdn-id>bb172453</msdn-id>\t\n            <unmanaged>bool OMRenderTargets</unmanaged>\t\n            <unmanaged-short>bool OMRenderTargets</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.StateBlockMask.OMDepthStencilState\">\n            <summary>\t\n            <dd> <p>Boolean value indicating whether to save the depth-stencil state.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_STATE_BLOCK_MASK::OMDepthStencilState']/*\"/>\t\n            <msdn-id>bb172453</msdn-id>\t\n            <unmanaged>bool OMDepthStencilState</unmanaged>\t\n            <unmanaged-short>bool OMDepthStencilState</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.StateBlockMask.OMBlendState\">\n            <summary>\t\n            <dd> <p>Boolean value indicating whether to save the blend state.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_STATE_BLOCK_MASK::OMBlendState']/*\"/>\t\n            <msdn-id>bb172453</msdn-id>\t\n            <unmanaged>bool OMBlendState</unmanaged>\t\n            <unmanaged-short>bool OMBlendState</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.StateBlockMask.RSViewports\">\n            <summary>\t\n            <dd> <p>Boolean value indicating whether to save the viewports states.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_STATE_BLOCK_MASK::RSViewports']/*\"/>\t\n            <msdn-id>bb172453</msdn-id>\t\n            <unmanaged>bool RSViewports</unmanaged>\t\n            <unmanaged-short>bool RSViewports</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.StateBlockMask.RSScissorRects\">\n            <summary>\t\n            <dd> <p>Boolean value indicating whether to save the scissor rectangles states.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_STATE_BLOCK_MASK::RSScissorRects']/*\"/>\t\n            <msdn-id>bb172453</msdn-id>\t\n            <unmanaged>bool RSScissorRects</unmanaged>\t\n            <unmanaged-short>bool RSScissorRects</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.StateBlockMask.RSRasterizerState\">\n            <summary>\t\n            <dd> <p>Boolean value indicating whether to save the rasterizer state.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_STATE_BLOCK_MASK::RSRasterizerState']/*\"/>\t\n            <msdn-id>bb172453</msdn-id>\t\n            <unmanaged>bool RSRasterizerState</unmanaged>\t\n            <unmanaged-short>bool RSRasterizerState</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.StateBlockMask.SOBuffers\">\n            <summary>\t\n            <dd> <p>Boolean value indicating whether to save the stream-out buffers states.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_STATE_BLOCK_MASK::SOBuffers']/*\"/>\t\n            <msdn-id>bb172453</msdn-id>\t\n            <unmanaged>bool SOBuffers</unmanaged>\t\n            <unmanaged-short>bool SOBuffers</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.StateBlockMask.Predication\">\n            <summary>\t\n            <dd> <p>Boolean value indicating whether to save the predication state.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_STATE_BLOCK_MASK::Predication']/*\"/>\t\n            <msdn-id>bb172453</msdn-id>\t\n            <unmanaged>bool Predication</unmanaged>\t\n            <unmanaged-short>bool Predication</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.StateBlockMask.VSSamplers\">\n            <summary>\t\n            <dd> <p>Array of vertex-shader samplers.  The array is a multi-byte bitmask where each bit represents one sampler slot.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_STATE_BLOCK_MASK::VSSamplers']/*\"/>\t\n            <msdn-id>bb172453</msdn-id>\t\n            <unmanaged>bool VSSamplers[2]</unmanaged>\t\n            <unmanaged-short>bool VSSamplers</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.StateBlockMask.VSShaderResources\">\n            <summary>\t\n            <dd> <p>Array of vertex-shader resources. The array is a multi-byte bitmask where each bit represents one resource slot.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_STATE_BLOCK_MASK::VSShaderResources']/*\"/>\t\n            <msdn-id>bb172453</msdn-id>\t\n            <unmanaged>bool VSShaderResources[16]</unmanaged>\t\n            <unmanaged-short>bool VSShaderResources</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.StateBlockMask.VSConstantBuffers\">\n            <summary>\t\n            <dd> <p>Array of vertex-shader constant buffers. The array is a multi-byte bitmask where each bit represents one constant buffer slot.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_STATE_BLOCK_MASK::VSConstantBuffers']/*\"/>\t\n            <msdn-id>bb172453</msdn-id>\t\n            <unmanaged>bool VSConstantBuffers[2]</unmanaged>\t\n            <unmanaged-short>bool VSConstantBuffers</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.StateBlockMask.GSSamplers\">\n            <summary>\t\n            <dd> <p>Array of geometry-shader samplers. The array is a multi-byte bitmask where each bit represents one sampler slot.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_STATE_BLOCK_MASK::GSSamplers']/*\"/>\t\n            <msdn-id>bb172453</msdn-id>\t\n            <unmanaged>bool GSSamplers[2]</unmanaged>\t\n            <unmanaged-short>bool GSSamplers</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.StateBlockMask.GSShaderResources\">\n            <summary>\t\n            <dd> <p>Array of geometry-shader resources. The array is a multi-byte bitmask where each bit represents one resource slot.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_STATE_BLOCK_MASK::GSShaderResources']/*\"/>\t\n            <msdn-id>bb172453</msdn-id>\t\n            <unmanaged>bool GSShaderResources[16]</unmanaged>\t\n            <unmanaged-short>bool GSShaderResources</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.StateBlockMask.GSConstantBuffers\">\n            <summary>\t\n            <dd> <p>Array of geometry-shader constant buffers. The array is a multi-byte bitmask where each bit represents one buffer slot.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_STATE_BLOCK_MASK::GSConstantBuffers']/*\"/>\t\n            <msdn-id>bb172453</msdn-id>\t\n            <unmanaged>bool GSConstantBuffers[2]</unmanaged>\t\n            <unmanaged-short>bool GSConstantBuffers</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.StateBlockMask.PSSamplers\">\n            <summary>\t\n            <dd> <p>Array of pixel-shader samplers. The array is a multi-byte bitmask where each bit represents one sampler slot.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_STATE_BLOCK_MASK::PSSamplers']/*\"/>\t\n            <msdn-id>bb172453</msdn-id>\t\n            <unmanaged>bool PSSamplers[2]</unmanaged>\t\n            <unmanaged-short>bool PSSamplers</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.StateBlockMask.PSShaderResources\">\n            <summary>\t\n            <dd> <p>Array of pixel-shader resources. The array is a multi-byte bitmask where each bit represents one resource slot.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_STATE_BLOCK_MASK::PSShaderResources']/*\"/>\t\n            <msdn-id>bb172453</msdn-id>\t\n            <unmanaged>bool PSShaderResources[16]</unmanaged>\t\n            <unmanaged-short>bool PSShaderResources</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.StateBlockMask.PSConstantBuffers\">\n            <summary>\t\n            <dd> <p>Array of pixel-shader constant buffers. The array is a multi-byte bitmask where each bit represents one constant buffer slot.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_STATE_BLOCK_MASK::PSConstantBuffers']/*\"/>\t\n            <msdn-id>bb172453</msdn-id>\t\n            <unmanaged>bool PSConstantBuffers[2]</unmanaged>\t\n            <unmanaged-short>bool PSConstantBuffers</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.StateBlockMask.IAVertexBuffers\">\n            <summary>\t\n            <dd> <p>Array of vertex buffers. The array is a multi-byte bitmask where each bit represents one resource slot.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_STATE_BLOCK_MASK::IAVertexBuffers']/*\"/>\t\n            <msdn-id>bb172453</msdn-id>\t\n            <unmanaged>bool IAVertexBuffers[2]</unmanaged>\t\n            <unmanaged-short>bool IAVertexBuffers</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.StreamOutputElement\">\n            <summary>\t\n            <p>Description of a vertex element in a vertex buffer in an output slot.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_SO_DECLARATION_ENTRY']/*\"/>\t\n            <msdn-id>bb172450</msdn-id>\t\n            <unmanaged>D3D10_SO_DECLARATION_ENTRY</unmanaged>\t\n            <unmanaged-short>D3D10_SO_DECLARATION_ENTRY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.StreamOutputElement.SemanticName\">\n            <summary>\t\n            <dd> <p>Type of output element.  Possible values: \"POSITION\", \"NORMAL\", or \"TEXCOORD0\".</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_SO_DECLARATION_ENTRY::SemanticName']/*\"/>\t\n            <msdn-id>bb172450</msdn-id>\t\n            <unmanaged>const char* SemanticName</unmanaged>\t\n            <unmanaged-short>char SemanticName</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.StreamOutputElement.SemanticIndex\">\n            <summary>\t\n            <dd> <p>Output element's zero-based index. Should be used if, for example, you have more than one texture coordinate stored in each vertex.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_SO_DECLARATION_ENTRY::SemanticIndex']/*\"/>\t\n            <msdn-id>bb172450</msdn-id>\t\n            <unmanaged>unsigned int SemanticIndex</unmanaged>\t\n            <unmanaged-short>unsigned int SemanticIndex</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.StreamOutputElement.StartComponent\">\n            <summary>\t\n            <dd> <p>Which component of the entry to begin writing out to. Valid values are 0 ~ 3. For example, if you only wish to output to the y and z components of a position, then StartComponent should be 1 and ComponentCount should be 2.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_SO_DECLARATION_ENTRY::StartComponent']/*\"/>\t\n            <msdn-id>bb172450</msdn-id>\t\n            <unmanaged>unsigned char StartComponent</unmanaged>\t\n            <unmanaged-short>unsigned char StartComponent</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.StreamOutputElement.ComponentCount\">\n            <summary>\t\n            <dd> <p>The number of components of the entry to write out to. Valid values are 1 ~ 4. For example, if you only wish to output to the y and z components of a position, then StartComponent should be 1 and ComponentCount should be 2.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_SO_DECLARATION_ENTRY::ComponentCount']/*\"/>\t\n            <msdn-id>bb172450</msdn-id>\t\n            <unmanaged>unsigned char ComponentCount</unmanaged>\t\n            <unmanaged-short>unsigned char ComponentCount</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.StreamOutputElement.OutputSlot\">\n            <summary>\t\n            <dd> <p>The output slot that contains the vertex buffer that contains this output entry.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_SO_DECLARATION_ENTRY::OutputSlot']/*\"/>\t\n            <msdn-id>bb172450</msdn-id>\t\n            <unmanaged>unsigned char OutputSlot</unmanaged>\t\n            <unmanaged-short>unsigned char OutputSlot</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.StreamOutputElement.#ctor(System.String,System.Int32,System.Byte,System.Byte,System.Byte)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D10.StreamOutputElement\"/> struct.\n            </summary>\n            <param name=\"semanticName\">Name of the semantic.</param>\n            <param name=\"semanticIndex\">Index of the semantic.</param>\n            <param name=\"startComponent\">The start component.</param>\n            <param name=\"componentCount\">The component count.</param>\n            <param name=\"outputSlot\">The output slot.</param>\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.StreamOutputStatistics\">\n            <summary>\t\n            <p>Query information about the amount of data streamed out to the stream-output buffers in between <strong><see cref=\"M:SharpDX.Direct3D10.Asynchronous.Begin\"/></strong> and <strong><see cref=\"M:SharpDX.Direct3D10.Asynchronous.End\"/></strong>.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_QUERY_DATA_SO_STATISTICS']/*\"/>\t\n            <msdn-id>bb172403</msdn-id>\t\n            <unmanaged>D3D10_QUERY_DATA_SO_STATISTICS</unmanaged>\t\n            <unmanaged-short>D3D10_QUERY_DATA_SO_STATISTICS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.StreamOutputStatistics.NumPrimitivesWritten\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_QUERY_DATA_SO_STATISTICS::NumPrimitivesWritten']/*\"/>\t\n            <unmanaged>unsigned longlong NumPrimitivesWritten</unmanaged>\t\n            <unmanaged-short>unsigned longlong NumPrimitivesWritten</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.StreamOutputStatistics.PrimitivesStorageNeeded\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_QUERY_DATA_SO_STATISTICS::PrimitivesStorageNeeded']/*\"/>\t\n            <unmanaged>unsigned longlong PrimitivesStorageNeeded</unmanaged>\t\n            <unmanaged-short>unsigned longlong PrimitivesStorageNeeded</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.Texture1DDescription\">\n            <summary>\t\n            <p>Describes a 1D texture.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure is used in a call to <strong><see cref=\"M:SharpDX.Direct3D10.Device.CreateTexture1D(SharpDX.Direct3D10.Texture1DDescription@,SharpDX.DataBox[],SharpDX.Direct3D10.Texture1D)\"/></strong>. A helpful derived structure CD3D10_TEXTURE1D_DESC is declared in D3D10.h, to help create a texture description.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEXTURE1D_DESC']/*\"/>\t\n            <msdn-id>bb172479</msdn-id>\t\n            <unmanaged>D3D10_TEXTURE1D_DESC</unmanaged>\t\n            <unmanaged-short>D3D10_TEXTURE1D_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.Texture1DDescription.Width\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEXTURE1D_DESC::Width']/*\"/>\t\n            <unmanaged>unsigned int Width</unmanaged>\t\n            <unmanaged-short>unsigned int Width</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.Texture1DDescription.MipLevels\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEXTURE1D_DESC::MipLevels']/*\"/>\t\n            <unmanaged>unsigned int MipLevels</unmanaged>\t\n            <unmanaged-short>unsigned int MipLevels</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.Texture1DDescription.ArraySize\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEXTURE1D_DESC::ArraySize']/*\"/>\t\n            <unmanaged>unsigned int ArraySize</unmanaged>\t\n            <unmanaged-short>unsigned int ArraySize</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.Texture1DDescription.Format\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEXTURE1D_DESC::Format']/*\"/>\t\n            <unmanaged>DXGI_FORMAT Format</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT Format</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.Texture1DDescription.Usage\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEXTURE1D_DESC::Usage']/*\"/>\t\n            <unmanaged>D3D10_USAGE Usage</unmanaged>\t\n            <unmanaged-short>D3D10_USAGE Usage</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.Texture1DDescription.BindFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEXTURE1D_DESC::BindFlags']/*\"/>\t\n            <unmanaged>D3D10_BIND_FLAG BindFlags</unmanaged>\t\n            <unmanaged-short>D3D10_BIND_FLAG BindFlags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.Texture1DDescription.CpuAccessFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEXTURE1D_DESC::CPUAccessFlags']/*\"/>\t\n            <unmanaged>D3D10_CPU_ACCESS_FLAG CPUAccessFlags</unmanaged>\t\n            <unmanaged-short>D3D10_CPU_ACCESS_FLAG CPUAccessFlags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.Texture1DDescription.OptionFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEXTURE1D_DESC::MiscFlags']/*\"/>\t\n            <unmanaged>D3D10_RESOURCE_MISC_FLAG MiscFlags</unmanaged>\t\n            <unmanaged-short>D3D10_RESOURCE_MISC_FLAG MiscFlags</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.Texture2DDescription\">\n            <summary>\t\n            <p>Describes a 2D texture.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure is used in a call to <strong><see cref=\"M:SharpDX.Direct3D10.Device.CreateTexture2D(SharpDX.Direct3D10.Texture2DDescription@,SharpDX.DataBox[],SharpDX.Direct3D10.Texture2D)\"/></strong>. A helpful derived structure CD3D10_TEXTURE2D_DESC is declared in D3D10.h, to help create a texture description.</p><p>The device places some size restrictions (must be multiples of a minimum size) for a subsampled, block compressed, or bit-format resource.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEXTURE2D_DESC']/*\"/>\t\n            <msdn-id>bb172480</msdn-id>\t\n            <unmanaged>D3D10_TEXTURE2D_DESC</unmanaged>\t\n            <unmanaged-short>D3D10_TEXTURE2D_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.Texture2DDescription.Width\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEXTURE2D_DESC::Width']/*\"/>\t\n            <unmanaged>unsigned int Width</unmanaged>\t\n            <unmanaged-short>unsigned int Width</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.Texture2DDescription.Height\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEXTURE2D_DESC::Height']/*\"/>\t\n            <unmanaged>unsigned int Height</unmanaged>\t\n            <unmanaged-short>unsigned int Height</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.Texture2DDescription.MipLevels\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEXTURE2D_DESC::MipLevels']/*\"/>\t\n            <unmanaged>unsigned int MipLevels</unmanaged>\t\n            <unmanaged-short>unsigned int MipLevels</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.Texture2DDescription.ArraySize\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEXTURE2D_DESC::ArraySize']/*\"/>\t\n            <unmanaged>unsigned int ArraySize</unmanaged>\t\n            <unmanaged-short>unsigned int ArraySize</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.Texture2DDescription.Format\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEXTURE2D_DESC::Format']/*\"/>\t\n            <unmanaged>DXGI_FORMAT Format</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT Format</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.Texture2DDescription.SampleDescription\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEXTURE2D_DESC::SampleDesc']/*\"/>\t\n            <unmanaged>DXGI_SAMPLE_DESC SampleDesc</unmanaged>\t\n            <unmanaged-short>DXGI_SAMPLE_DESC SampleDesc</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.Texture2DDescription.Usage\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEXTURE2D_DESC::Usage']/*\"/>\t\n            <unmanaged>D3D10_USAGE Usage</unmanaged>\t\n            <unmanaged-short>D3D10_USAGE Usage</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.Texture2DDescription.BindFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEXTURE2D_DESC::BindFlags']/*\"/>\t\n            <unmanaged>D3D10_BIND_FLAG BindFlags</unmanaged>\t\n            <unmanaged-short>D3D10_BIND_FLAG BindFlags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.Texture2DDescription.CpuAccessFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEXTURE2D_DESC::CPUAccessFlags']/*\"/>\t\n            <unmanaged>D3D10_CPU_ACCESS_FLAG CPUAccessFlags</unmanaged>\t\n            <unmanaged-short>D3D10_CPU_ACCESS_FLAG CPUAccessFlags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.Texture2DDescription.OptionFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEXTURE2D_DESC::MiscFlags']/*\"/>\t\n            <unmanaged>D3D10_RESOURCE_MISC_FLAG MiscFlags</unmanaged>\t\n            <unmanaged-short>D3D10_RESOURCE_MISC_FLAG MiscFlags</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.Texture3DDescription\">\n            <summary>\t\n            <p>Describes a 3D texture.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure is used in a call to <strong><see cref=\"M:SharpDX.Direct3D10.Device.CreateTexture3D(SharpDX.Direct3D10.Texture3DDescription@,SharpDX.DataBox[],SharpDX.Direct3D10.Texture3D)\"/></strong>. A helpful derived structure CD3D10_TEXTURE3D_DESC is declared in D3D10.h, to help create a texture description.</p><p>The device restricts the size of subsampled, block compressed (see Block Compression (Direct3D 10)), and bit format resources to be multiples of sizes specific to each format.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEXTURE3D_DESC']/*\"/>\t\n            <msdn-id>bb172481</msdn-id>\t\n            <unmanaged>D3D10_TEXTURE3D_DESC</unmanaged>\t\n            <unmanaged-short>D3D10_TEXTURE3D_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.Texture3DDescription.Width\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEXTURE3D_DESC::Width']/*\"/>\t\n            <unmanaged>unsigned int Width</unmanaged>\t\n            <unmanaged-short>unsigned int Width</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.Texture3DDescription.Height\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEXTURE3D_DESC::Height']/*\"/>\t\n            <unmanaged>unsigned int Height</unmanaged>\t\n            <unmanaged-short>unsigned int Height</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.Texture3DDescription.Depth\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEXTURE3D_DESC::Depth']/*\"/>\t\n            <unmanaged>unsigned int Depth</unmanaged>\t\n            <unmanaged-short>unsigned int Depth</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.Texture3DDescription.MipLevels\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEXTURE3D_DESC::MipLevels']/*\"/>\t\n            <unmanaged>unsigned int MipLevels</unmanaged>\t\n            <unmanaged-short>unsigned int MipLevels</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.Texture3DDescription.Format\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEXTURE3D_DESC::Format']/*\"/>\t\n            <unmanaged>DXGI_FORMAT Format</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT Format</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.Texture3DDescription.Usage\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEXTURE3D_DESC::Usage']/*\"/>\t\n            <unmanaged>D3D10_USAGE Usage</unmanaged>\t\n            <unmanaged-short>D3D10_USAGE Usage</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.Texture3DDescription.BindFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEXTURE3D_DESC::BindFlags']/*\"/>\t\n            <unmanaged>D3D10_BIND_FLAG BindFlags</unmanaged>\t\n            <unmanaged-short>D3D10_BIND_FLAG BindFlags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.Texture3DDescription.CpuAccessFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEXTURE3D_DESC::CPUAccessFlags']/*\"/>\t\n            <unmanaged>D3D10_CPU_ACCESS_FLAG CPUAccessFlags</unmanaged>\t\n            <unmanaged-short>D3D10_CPU_ACCESS_FLAG CPUAccessFlags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.Texture3DDescription.OptionFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D10_TEXTURE3D_DESC::MiscFlags']/*\"/>\t\n            <unmanaged>D3D10_RESOURCE_MISC_FLAG MiscFlags</unmanaged>\t\n            <unmanaged-short>D3D10_RESOURCE_MISC_FLAG MiscFlags</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.TextureLoadInformation\">\n            <summary>\t\n            <p>Describes parameters used to load a texture from another texture.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure is used in a call to <strong><see cref=\"M:SharpDX.Direct3D10.D3DX10.LoadTextureFromTexture(SharpDX.Direct3D10.Resource,SharpDX.Direct3D10.TextureLoadInformation,SharpDX.Direct3D10.Resource)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_TEXTURE_LOAD_INFO']/*\"/>\t\n            <msdn-id>bb172705</msdn-id>\t\n            <unmanaged>D3DX10_TEXTURE_LOAD_INFO</unmanaged>\t\n            <unmanaged-short>D3DX10_TEXTURE_LOAD_INFO</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.TextureLoadInformation.SourceRegionPointer\">\n            <summary>\t\n            <dd> <p>Source texture box (see <strong><see cref=\"T:SharpDX.Direct3D10.ResourceRegion\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_TEXTURE_LOAD_INFO::pSrcBox']/*\"/>\t\n            <msdn-id>bb172705</msdn-id>\t\n            <unmanaged>D3D10_BOX* pSrcBox</unmanaged>\t\n            <unmanaged-short>D3D10_BOX pSrcBox</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.TextureLoadInformation.DestinationRegionPointer\">\n            <summary>\t\n            <dd> <p>Destination texture box (see <strong><see cref=\"T:SharpDX.Direct3D10.ResourceRegion\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_TEXTURE_LOAD_INFO::pDstBox']/*\"/>\t\n            <msdn-id>bb172705</msdn-id>\t\n            <unmanaged>D3D10_BOX* pDstBox</unmanaged>\t\n            <unmanaged-short>D3D10_BOX pDstBox</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.TextureLoadInformation.FirstSourceMip\">\n            <summary>\t\n            <dd> <p>Source texture mipmap level, see <strong>D3D10CalcSubresource</strong> for more detail.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_TEXTURE_LOAD_INFO::SrcFirstMip']/*\"/>\t\n            <msdn-id>bb172705</msdn-id>\t\n            <unmanaged>unsigned int SrcFirstMip</unmanaged>\t\n            <unmanaged-short>unsigned int SrcFirstMip</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.TextureLoadInformation.FirstDestinationMip\">\n            <summary>\t\n            <dd> <p>Destination texture mipmap level, see <strong>D3D10CalcSubresource</strong> for more detail.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_TEXTURE_LOAD_INFO::DstFirstMip']/*\"/>\t\n            <msdn-id>bb172705</msdn-id>\t\n            <unmanaged>unsigned int DstFirstMip</unmanaged>\t\n            <unmanaged-short>unsigned int DstFirstMip</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.TextureLoadInformation.MipCount\">\n            <summary>\t\n            <dd> <p>Number of mipmap levels in the source texture.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_TEXTURE_LOAD_INFO::NumMips']/*\"/>\t\n            <msdn-id>bb172705</msdn-id>\t\n            <unmanaged>unsigned int NumMips</unmanaged>\t\n            <unmanaged-short>unsigned int NumMips</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.TextureLoadInformation.FirstSourceElement\">\n            <summary>\t\n            <dd> <p>First element of the source texture.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_TEXTURE_LOAD_INFO::SrcFirstElement']/*\"/>\t\n            <msdn-id>bb172705</msdn-id>\t\n            <unmanaged>unsigned int SrcFirstElement</unmanaged>\t\n            <unmanaged-short>unsigned int SrcFirstElement</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.TextureLoadInformation.FirstDestinationElement\">\n            <summary>\t\n            <dd> <p>First element of the destination texture.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_TEXTURE_LOAD_INFO::DstFirstElement']/*\"/>\t\n            <msdn-id>bb172705</msdn-id>\t\n            <unmanaged>unsigned int DstFirstElement</unmanaged>\t\n            <unmanaged-short>unsigned int DstFirstElement</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.TextureLoadInformation.ElementCount\">\n            <summary>\t\n            <dd> <p>Number of elements to load.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_TEXTURE_LOAD_INFO::NumElements']/*\"/>\t\n            <msdn-id>bb172705</msdn-id>\t\n            <unmanaged>unsigned int NumElements</unmanaged>\t\n            <unmanaged-short>unsigned int NumElements</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.TextureLoadInformation.Filter\">\n            <summary>\t\n            <dd> <p>Filtering options during resampling (see <strong><see cref=\"T:SharpDX.Direct3D10.FilterFlags\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_TEXTURE_LOAD_INFO::Filter']/*\"/>\t\n            <msdn-id>bb172705</msdn-id>\t\n            <unmanaged>D3DX10_FILTER_FLAG Filter</unmanaged>\t\n            <unmanaged-short>D3DX10_FILTER_FLAG Filter</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.TextureLoadInformation.MipFilter\">\n            <summary>\t\n            <dd> <p>Filtering options when generating mip levels (see <strong><see cref=\"T:SharpDX.Direct3D10.FilterFlags\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX10_TEXTURE_LOAD_INFO::MipFilter']/*\"/>\t\n            <msdn-id>bb172705</msdn-id>\t\n            <unmanaged>D3DX10_FILTER_FLAG MipFilter</unmanaged>\t\n            <unmanaged-short>D3DX10_FILTER_FLAG MipFilter</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.TextureLoadInformation.SourceRegion\">\n            <summary>\t\n            Source texture box (see <see cref=\"T:SharpDX.Direct3D10.ResourceRegion\"/>). \t\n            </summary>\t\n            <unmanaged>D3D11_BOX* pSrcBox</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D10.TextureLoadInformation.DestinationRegion\">\n            <summary>\t\n            Destination texture box (see <see cref=\"T:SharpDX.Direct3D10.ResourceRegion\"/>). \t\n            </summary>\t\n            <unmanaged>D3D11_BOX* pDstBox</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.NamespaceDoc\">\n            <summary>\n            The <see cref=\"N:SharpDX.Direct3D10\"/> namespace provides a managed Direct3D10 API.\n            </summary>\n            <msdn-id>bb205066</msdn-id>\n            <unmanaged>Direct3D10</unmanaged>\t\n            <unmanaged-short>Direct3D10</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.StreamOutputBufferBinding\">\n            <summary>\n              Properties defining the way a buffer is bound to the pipeline as a target for stream output operations.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.StreamOutputBufferBinding.#ctor(SharpDX.Direct3D10.Buffer,System.Int32)\">\n            <summary>\n              Initializes a new instance of the <see cref = \"T:SharpDX.Direct3D10.StreamOutputBufferBinding\" /> struct.\n            </summary>\n            <param name = \"buffer\">The buffer being bound.</param>\n            <param name = \"offset\">The offset to the first vertex (in bytes).</param>\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.StreamOutputBufferBinding.Buffer\">\n            <summary>\n              Gets or sets the buffer being bound.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.StreamOutputBufferBinding.Offset\">\n            <summary>\n              Gets or sets the offset from the start of the buffer of the first vertex to use (in bytes).\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Direct3D10.VertexBufferBinding\">\n            <summary>\n              Properties defining the way a buffer (containing vertex data) is bound\n              to the pipeline for rendering.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Direct3D10.VertexBufferBinding.#ctor(SharpDX.Direct3D10.Buffer,System.Int32,System.Int32)\">\n            <summary>\n              Initializes a new instance of the <see cref = \"T:SharpDX.Direct3D10.VertexBufferBinding\" /> struct.\n            </summary>\n            <param name = \"buffer\">The buffer being bound.</param>\n            <param name = \"stride\">The stride between vertex element (in bytes).</param>\n            <param name = \"offset\">The offset to the first vertex (in bytes).</param>\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.VertexBufferBinding.Buffer\">\n            <summary>\n              Gets or sets the buffer being bound.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.VertexBufferBinding.Stride\">\n            <summary>\n              Gets or sets the stride between vertex elements in the buffer (in bytes).\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Direct3D10.VertexBufferBinding.Offset\">\n            <summary>\n              Gets or sets the offset from the start of the buffer of the first vertex to use (in bytes).\n            </summary>\n        </member>\n    </members>\n</doc>\n"
  },
  {
    "path": "3rd/SharpDX/SharpDX.Direct3D11.Effects.xml",
    "content": "<?xml version=\"1.0\"?>\n<doc>\n    <assembly>\n        <name>SharpDX.Direct3D11.Effects</name>\n    </assembly>\n    <members>\n        <member name=\"T:SharpDX.Direct3D11.AssemblyDoc\">\n            <summary>\n            The <see cref=\"A:SharpDX.Direct3D11.Effects\"/> assembly provides Effects11 managed API for Direct3D11.\n            </summary>\n            <msdn-id>ff476080</msdn-id>\n            <unmanaged>Direct3D11</unmanaged>\t\n            <unmanaged-short>Direct3D11</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.Effect\">\n            <summary>\t\n            <p>An <strong><see cref=\"T:SharpDX.Direct3D11.Effect\"/></strong> interface manages a set of state objects, resources, and shaders for implementing a rendering effect.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>An effect is created by calling <strong><see cref=\"M:SharpDX.Direct3D11.D3DX11Effects.CreateEffectFromMemory(System.IntPtr,SharpDX.PointerSize,System.Int32,SharpDX.Direct3D11.Device,SharpDX.Direct3D11.Effect)\"/></strong>.</p><p>The effect system groups the information required for rendering into an effect which contains:  state objects for assigning state changes in groups, resources for supplying input data and storing output data,  and programs that control how the rendering is done called shaders.</p><p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p><p><strong>Note</strong>??</p><p>If you call <strong>QueryInterface</strong> on an <strong><see cref=\"T:SharpDX.Direct3D11.Effect\"/></strong> object to retrieve the <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interface, <strong>QueryInterface</strong> returns E_NOINTERFACE. To work around this issue, use the following code:</p><pre><code> <see cref=\"T:SharpDX.ComObject\"/>* pIUnknown = (<see cref=\"T:SharpDX.ComObject\"/>*)pEffect; pIUnknown-&gt;AddRef();\t\n            </code></pre>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11Effect']/*\"/>\t\n            <msdn-id>ff476652</msdn-id>\t\n            <unmanaged>ID3DX11Effect</unmanaged>\t\n            <unmanaged-short>ID3DX11Effect</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Effect.#ctor(SharpDX.Direct3D11.Device,System.Byte[],SharpDX.D3DCompiler.EffectFlags)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D11.Effect\"/> class.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"effectByteCode\">The effect byte code.</param>\n            <param name=\"fxFlags\">Effect compile options</param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Effect.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D11.Effect\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Effect.op_Explicit(System.IntPtr)~SharpDX.Direct3D11.Effect\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D11.Effect\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Effect.IsValid_\">\n            <summary>\t\n            <p>Test an effect to see if it contains valid syntax.</p>\t\n            </summary>\t\n            <returns><p><strong>TRUE</strong> if the code syntax is valid; otherwise <strong><see cref=\"F:SharpDX.Result.False\"/></strong>.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11Effect::IsValid']/*\"/>\t\n            <msdn-id>ff476844</msdn-id>\t\n            <unmanaged>BOOL ID3DX11Effect::IsValid()</unmanaged>\t\n            <unmanaged-short>ID3DX11Effect::IsValid</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Effect.GetDevice(SharpDX.Direct3D11.Device@)\">\n            <summary>\t\n            <p>Get the device that created the effect.</p>\t\n            </summary>\t\n            <param name=\"deviceOut\"><dd>  <p>A reference to an <strong><see cref=\"T:SharpDX.Direct3D11.Device\"/></strong>.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>An effect is created for a specific device, by calling a function such as <strong><see cref=\"M:SharpDX.Direct3D11.D3DX11Effects.CreateEffectFromMemory(System.IntPtr,SharpDX.PointerSize,System.Int32,SharpDX.Direct3D11.Device,SharpDX.Direct3D11.Effect)\"/></strong>.</p><p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11Effect::GetDevice']/*\"/>\t\n            <msdn-id>ff476835</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11Effect::GetDevice([Out] ID3D11Device** ppDevice)</unmanaged>\t\n            <unmanaged-short>ID3DX11Effect::GetDevice</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Effect.GetDescription(SharpDX.Direct3D11.EffectDescription@)\">\n            <summary>\t\n            <p>Get an effect description.</p>\t\n            </summary>\t\n            <param name=\"descRef\"><dd>  <p>A reference to an effect description (see <strong><see cref=\"T:SharpDX.Direct3D11.EffectDescription\"/></strong>).</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>An effect description contains basic information about an effect such as the techniques it contains and the constant buffer resources it requires.</p><p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11Effect::GetDesc']/*\"/>\t\n            <msdn-id>ff476834</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11Effect::GetDesc([Out] D3DX11_EFFECT_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>ID3DX11Effect::GetDesc</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Effect.GetConstantBufferByIndex(System.Int32)\">\n            <summary>\t\n            <p>Get a constant buffer by index.</p>\t\n            </summary>\t\n            <param name=\"index\"><dd>  <p>A zero-based index.</p> </dd></param>\t\n            <returns><p>A reference to a <strong><see cref=\"T:SharpDX.Direct3D11.EffectConstantBuffer\"/></strong>.</p></returns>\t\n            <remarks>\t\n            <p>An effect that contains a variable that will be read/written by an application requires at least one constant buffer.  For best performance, an effect should organize variables into one or more constant buffers based on their frequency of update.</p><p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11Effect::GetConstantBufferByIndex']/*\"/>\t\n            <msdn-id>ff476832</msdn-id>\t\n            <unmanaged>ID3DX11EffectConstantBuffer* ID3DX11Effect::GetConstantBufferByIndex([In] unsigned int Index)</unmanaged>\t\n            <unmanaged-short>ID3DX11Effect::GetConstantBufferByIndex</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Effect.GetConstantBufferByName(System.String)\">\n            <summary>\t\n            <p>Get a constant buffer by name.</p>\t\n            </summary>\t\n            <param name=\"name\"><dd>  <p>The constant-buffer name.</p> </dd></param>\t\n            <returns><p>A reference to the constant buffer indicated by the Name. See <strong><see cref=\"T:SharpDX.Direct3D11.EffectConstantBuffer\"/></strong>.</p></returns>\t\n            <remarks>\t\n            <p>An effect that contains a variable that will be read/written by an application requires at least one constant buffer. For best performance,  an effect should organize variables into one or more constant buffers based on their frequency of update.</p><p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11Effect::GetConstantBufferByName']/*\"/>\t\n            <msdn-id>ff476833</msdn-id>\t\n            <unmanaged>ID3DX11EffectConstantBuffer* ID3DX11Effect::GetConstantBufferByName([In] const char* Name)</unmanaged>\t\n            <unmanaged-short>ID3DX11Effect::GetConstantBufferByName</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Effect.GetVariableByIndex(System.Int32)\">\n            <summary>\t\n            <p>Get a variable by index.</p>\t\n            </summary>\t\n            <param name=\"index\"><dd>  <p>A zero-based index.</p> </dd></param>\t\n            <returns><p>A reference to a <strong><see cref=\"T:SharpDX.Direct3D11.EffectVariable\"/></strong>.</p></returns>\t\n            <remarks>\t\n            <p>An effect may contain one or more variables. Variables outside of a technique are considered global to all effects, those located inside of a technique  are local to that technique. You can access any local non-static effect variable using its name or with an index.</p><p>The method returns a reference to an <strong>effect-variable interface</strong> if a variable is not found; you can  call <strong><see cref=\"M:SharpDX.Direct3D11.Effect.IsValid_\"/></strong> to verify whether or not the index exists.</p><p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11Effect::GetVariableByIndex']/*\"/>\t\n            <msdn-id>ff476840</msdn-id>\t\n            <unmanaged>ID3DX11EffectVariable* ID3DX11Effect::GetVariableByIndex([In] unsigned int Index)</unmanaged>\t\n            <unmanaged-short>ID3DX11Effect::GetVariableByIndex</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Effect.GetVariableByName(System.String)\">\n            <summary>\t\n            <p>Get a variable by name.</p>\t\n            </summary>\t\n            <param name=\"name\"><dd>  <p>The variable name.</p> </dd></param>\t\n            <returns><p>A reference to an <strong><see cref=\"T:SharpDX.Direct3D11.EffectVariable\"/></strong>.  Returns an invalid variable if the specified name cannot be found.</p></returns>\t\n            <remarks>\t\n            <p>An effect may contain one or more variables. Variables outside of a technique are considered global to all effects, those located inside of a  technique are local to that technique. You can access an effect variable using its name or with an index.</p><p>The method returns a reference to an <strong>effect-variable interface</strong> whether or not a variable is found. <strong><see cref=\"M:SharpDX.Direct3D11.Effect.IsValid_\"/></strong> should be called to verify whether or not the name exists.</p><p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11Effect::GetVariableByName']/*\"/>\t\n            <msdn-id>ff476841</msdn-id>\t\n            <unmanaged>ID3DX11EffectVariable* ID3DX11Effect::GetVariableByName([In] const char* Name)</unmanaged>\t\n            <unmanaged-short>ID3DX11Effect::GetVariableByName</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Effect.GetVariableBySemantic(System.String)\">\n            <summary>\t\n            <p>Get a variable by semantic.</p>\t\n            </summary>\t\n            <param name=\"semantic\"><dd>  <p>The semantic name.</p> </dd></param>\t\n            <returns><p>A reference to the effect variable indicated by the Semantic. See <strong><see cref=\"T:SharpDX.Direct3D11.EffectVariable\"/></strong>.</p></returns>\t\n            <remarks>\t\n            <p>Each effect variable can have a semantic attached, which is a user defined metadata string. Some  system-value semantics are reserved words that trigger built in functionality by pipeline stages.</p><p>The method returns a reference to an <strong>effect-variable interface</strong> if a variable is not found; you can  call <strong><see cref=\"M:SharpDX.Direct3D11.Effect.IsValid_\"/></strong> to verify whether or not the semantic exists.</p><p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11Effect::GetVariableBySemantic']/*\"/>\t\n            <msdn-id>ff476842</msdn-id>\t\n            <unmanaged>ID3DX11EffectVariable* ID3DX11Effect::GetVariableBySemantic([In] const char* Semantic)</unmanaged>\t\n            <unmanaged-short>ID3DX11Effect::GetVariableBySemantic</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Effect.GetGroupByIndex(System.Int32)\">\n            <summary>\t\n            <p>Gets an effect group by index.</p>\t\n            </summary>\t\n            <param name=\"index\"><dd>  <p>Index of the effect group.</p> </dd></param>\t\n            <returns><p>A reference to an <strong><see cref=\"T:SharpDX.Direct3D11.EffectGroup\"/></strong> interface.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11Effect::GetGroupByIndex']/*\"/>\t\n            <msdn-id>ff476836</msdn-id>\t\n            <unmanaged>ID3DX11EffectGroup* ID3DX11Effect::GetGroupByIndex([In] unsigned int Index)</unmanaged>\t\n            <unmanaged-short>ID3DX11Effect::GetGroupByIndex</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Effect.GetGroupByName(System.String)\">\n            <summary>\t\n            <p>Gets an effect group by name.</p>\t\n            </summary>\t\n            <param name=\"name\"><dd>  <p>Name of the effect group.</p> </dd></param>\t\n            <returns><p>A reference to an <strong><see cref=\"T:SharpDX.Direct3D11.EffectGroup\"/></strong> interface.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11Effect::GetGroupByName']/*\"/>\t\n            <msdn-id>ff476837</msdn-id>\t\n            <unmanaged>ID3DX11EffectGroup* ID3DX11Effect::GetGroupByName([In] const char* Name)</unmanaged>\t\n            <unmanaged-short>ID3DX11Effect::GetGroupByName</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Effect.GetTechniqueByIndex(System.Int32)\">\n            <summary>\t\n            <p>Get a technique by index.</p>\t\n            </summary>\t\n            <param name=\"index\"><dd>  <p>A zero-based index.</p> </dd></param>\t\n            <returns><p>A reference to an <strong><see cref=\"T:SharpDX.Direct3D11.EffectTechnique\"/></strong>.</p></returns>\t\n            <remarks>\t\n            <p>An effect contains one or more techniques; each technique contains one or more passes. You can access a technique using its name or with an index. </p><p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11Effect::GetTechniqueByIndex']/*\"/>\t\n            <msdn-id>ff476838</msdn-id>\t\n            <unmanaged>ID3DX11EffectTechnique* ID3DX11Effect::GetTechniqueByIndex([In] unsigned int Index)</unmanaged>\t\n            <unmanaged-short>ID3DX11Effect::GetTechniqueByIndex</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Effect.GetTechniqueByName(System.String)\">\n            <summary>\t\n            <p>Get a technique by name.</p>\t\n            </summary>\t\n            <param name=\"name\"><dd>  <p>The name of the technique.</p> </dd></param>\t\n            <returns><p>A reference to an <strong><see cref=\"T:SharpDX.Direct3D11.EffectTechnique\"/></strong>. If a technique with the appropriate name is not found an invalid technique is returned. <strong><see cref=\"M:SharpDX.Direct3D11.EffectTechnique.IsValid_\"/></strong> should be called on the returned technique to determine whether it is valid.</p></returns>\t\n            <remarks>\t\n            <p>An effect contains one or more techniques; each technique contains one or more passes. You can access a technique using its name or with an index.</p><p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11Effect::GetTechniqueByName']/*\"/>\t\n            <msdn-id>ff476839</msdn-id>\t\n            <unmanaged>ID3DX11EffectTechnique* ID3DX11Effect::GetTechniqueByName([In] const char* Name)</unmanaged>\t\n            <unmanaged-short>ID3DX11Effect::GetTechniqueByName</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Effect.GetClassLinkage\">\n            <summary>\t\n            <p>Gets a class linkage interface.</p>\t\n            </summary>\t\n            <returns><p>Returns a reference to an <strong><see cref=\"T:SharpDX.Direct3D11.ClassLinkage\"/></strong> interface.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11Effect::GetClassLinkage']/*\"/>\t\n            <msdn-id>ff476831</msdn-id>\t\n            <unmanaged>ID3D11ClassLinkage* ID3DX11Effect::GetClassLinkage()</unmanaged>\t\n            <unmanaged-short>ID3DX11Effect::GetClassLinkage</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Effect.CloneEffect(System.Int32,SharpDX.Direct3D11.Effect@)\">\n            <summary>\t\n            <p>Creates a copy of an effect interface.</p>\t\n            </summary>\t\n            <param name=\"flags\"><dd>  <p>Flags affecting the creation of the cloned effect. Can be 0 or one of the following values.</p> <table> <tr><th>Flag</th><th>Description</th></tr> <tr><td>D3DX11_EFFECT_CLONE_FORCE_NONSINGLE</td><td>Ignore all \"single\" qualifiers on cbuffers.  All cbuffers will have their own <strong><see cref=\"T:SharpDX.Direct3D11.Buffer\"/></strong>s created in the cloned effect.</td></tr> </table> <p>?</p> </dd></param>\t\n            <param name=\"clonedEffectOut\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D11.Effect\"/></strong> reference that will be set to the copy of the effect.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11Effect::CloneEffect']/*\"/>\t\n            <msdn-id>ff476830</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11Effect::CloneEffect([In] unsigned int Flags,[In] ID3DX11Effect** ppClonedEffect)</unmanaged>\t\n            <unmanaged-short>ID3DX11Effect::CloneEffect</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Effect.Optimize\">\n            <summary>\t\n            <p>Minimize the amount of memory required for an effect.</p>\t\n            </summary>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>An effect uses memory space two different ways: to store the information required by the runtime to execute an effect, and to store the metadata  required to reflect information back to an application using the API. You can minimize the amount of memory required by an effect by  calling <strong><see cref=\"M:SharpDX.Direct3D11.Effect.Optimize\"/></strong> which removes the reflection metadata from memory. API methods to read variables will no  longer work once reflection data has been removed.</p><p>The following methods will fail after Optimize has been called on an effect.</p><ul> <li> <strong><see cref=\"M:SharpDX.Direct3D11.Effect.GetConstantBufferByIndex(System.Int32)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.Direct3D11.Effect.GetConstantBufferByName(System.String)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.Direct3D11.Effect.GetDescription(SharpDX.Direct3D11.EffectDescription@)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.Direct3D11.Effect.GetDevice(SharpDX.Direct3D11.Device@)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.Direct3D11.Effect.GetTechniqueByIndex(System.Int32)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.Direct3D11.Effect.GetTechniqueByName(System.String)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.Direct3D11.Effect.GetVariableByIndex(System.Int32)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.Direct3D11.Effect.GetVariableByName(System.String)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.Direct3D11.Effect.GetVariableBySemantic(System.String)\"/></strong> </li> </ul><p><strong>Note</strong>??References retrieved with these methods before calling <strong><see cref=\"M:SharpDX.Direct3D11.Effect.Optimize\"/></strong> are still valid  after <strong><see cref=\"M:SharpDX.Direct3D11.Effect.Optimize\"/></strong> is called.  This allows the application to get all the variables, techniques, and passes it will use,  call Optimize, and then use the effect.</p><p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11Effect::Optimize']/*\"/>\t\n            <msdn-id>ff476845</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11Effect::Optimize()</unmanaged>\t\n            <unmanaged-short>ID3DX11Effect::Optimize</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Effect.IsOptimized_\">\n            <summary>\t\n            <p>Test an effect to see if the reflection metadata has been removed from memory.</p>\t\n            </summary>\t\n            <returns><p><strong>TRUE</strong> if the effect is optimized; otherwise <strong><see cref=\"F:SharpDX.Result.False\"/></strong>.</p></returns>\t\n            <remarks>\t\n            <p>An effect uses memory space two different ways: to store the information required by the runtime to execute an effect,  and to store the metadata required to reflect information back to an application using the API. You can minimize the amount of memory required by  an effect by calling <strong><see cref=\"M:SharpDX.Direct3D11.Effect.Optimize\"/></strong> which removes the reflection metadata from memory. Of course, API methods to read variables  will no longer work once reflection data has been removed.</p><p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11Effect::IsOptimized']/*\"/>\t\n            <msdn-id>ff476843</msdn-id>\t\n            <unmanaged>BOOL ID3DX11Effect::IsOptimized()</unmanaged>\t\n            <unmanaged-short>ID3DX11Effect::IsOptimized</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.Effect.IsValid\">\n            <summary>\t\n            <p>Test an effect to see if it contains valid syntax.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11Effect::IsValid']/*\"/>\t\n            <msdn-id>ff476844</msdn-id>\t\n            <unmanaged>IsValid</unmanaged>\t\n            <unmanaged-short>IsValid</unmanaged-short>\t\n            <unmanaged>BOOL ID3DX11Effect::IsValid()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.Effect.Device\">\n            <summary>\t\n            <p>Get the device that created the effect.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>An effect is created for a specific device, by calling a function such as <strong><see cref=\"M:SharpDX.Direct3D11.D3DX11Effects.CreateEffectFromMemory(System.IntPtr,SharpDX.PointerSize,System.Int32,SharpDX.Direct3D11.Device,SharpDX.Direct3D11.Effect)\"/></strong>.</p><p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11Effect::GetDevice']/*\"/>\t\n            <msdn-id>ff476835</msdn-id>\t\n            <unmanaged>GetDevice</unmanaged>\t\n            <unmanaged-short>GetDevice</unmanaged-short>\t\n            <unmanaged>HRESULT ID3DX11Effect::GetDevice([Out] ID3D11Device** ppDevice)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.Effect.Description\">\n            <summary>\t\n            <p>Get an effect description.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>An effect description contains basic information about an effect such as the techniques it contains and the constant buffer resources it requires.</p><p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11Effect::GetDesc']/*\"/>\t\n            <msdn-id>ff476834</msdn-id>\t\n            <unmanaged>GetDesc</unmanaged>\t\n            <unmanaged-short>GetDesc</unmanaged-short>\t\n            <unmanaged>HRESULT ID3DX11Effect::GetDesc([Out] D3DX11_EFFECT_DESC* pDesc)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.Effect.ClassLinkage\">\n            <summary>\t\n            <p>Gets a class linkage interface.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11Effect::GetClassLinkage']/*\"/>\t\n            <msdn-id>ff476831</msdn-id>\t\n            <unmanaged>GetClassLinkage</unmanaged>\t\n            <unmanaged-short>GetClassLinkage</unmanaged-short>\t\n            <unmanaged>ID3D11ClassLinkage* ID3DX11Effect::GetClassLinkage()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.Effect.IsOptimized\">\n            <summary>\t\n            <p>Test an effect to see if the reflection metadata has been removed from memory.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>An effect uses memory space two different ways: to store the information required by the runtime to execute an effect,  and to store the metadata required to reflect information back to an application using the API. You can minimize the amount of memory required by  an effect by calling <strong><see cref=\"M:SharpDX.Direct3D11.Effect.Optimize\"/></strong> which removes the reflection metadata from memory. Of course, API methods to read variables  will no longer work once reflection data has been removed.</p><p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11Effect::IsOptimized']/*\"/>\t\n            <msdn-id>ff476843</msdn-id>\t\n            <unmanaged>IsOptimized</unmanaged>\t\n            <unmanaged-short>IsOptimized</unmanaged-short>\t\n            <unmanaged>BOOL ID3DX11Effect::IsOptimized()</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.EffectBlendVariable\">\n            <summary>\t\n            <p>The blend-variable interface accesses blend state.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>An <strong><see cref=\"T:SharpDX.Direct3D11.EffectVariable\"/></strong> interface is created when an effect is read into memory.</p><p>Effect variables are saved in memory in the backing store; when a technique is applied, the values in the backing store are copied to the device.  You can use either of these methods to return state.</p><p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectBlendVariable']/*\"/>\t\n            <msdn-id>ff476653</msdn-id>\t\n            <unmanaged>ID3DX11EffectBlendVariable</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectBlendVariable</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.EffectVariable\">\n            <summary>\t\n            <p>The <strong><see cref=\"T:SharpDX.Direct3D11.EffectVariable\"/></strong> interface is the base class for all effect variables.</p><p>The lifetime of an <strong><see cref=\"T:SharpDX.Direct3D11.EffectVariable\"/></strong> object is equal to the lifetime of its parent <strong><see cref=\"T:SharpDX.Direct3D11.Effect\"/></strong> object.</p><ul> <li>Methods</li> </ul>Methods<p>The <strong><see cref=\"T:SharpDX.Direct3D11.EffectVariable\"/></strong> interface has the following methods.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectVariable']/*\"/>\t\n            <msdn-id>ff476788</msdn-id>\t\n            <unmanaged>ID3DX11EffectVariable</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectVariable</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectVariable.SetRawValue(SharpDX.DataStream,System.Int32)\">\n            <summary>\n            Set data.\n            </summary>\n            <param name=\"data\">A reference to the variable.</param>\n            <param name=\"count\">size in bytes of data to write.</param>\n            <returns>\n            Returns one of the following {{Direct3D 10 Return Codes}}.\n            </returns>\n            <remarks>\n            This method does no conversion or type checking; it is therefore a very quick way to access array items.\n            </remarks>\n            <unmanaged>HRESULT ID3D11EffectVariable::SetRawValue([None] void* pData,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectVariable.GetRawValue(System.Int32)\">\n            <summary>\t\n            Get data.\t\n            </summary>\t\n            <remarks>\t\n            This method does no conversion or type checking; it is therefore a very quick way to access array items. \t\n            </remarks>\t\n            <param name=\"count\">The number of bytes to get. </param>\n            <returns>Returns a <see cref=\"T:SharpDX.DataStream\"/> filled with the value. </returns>\n            <unmanaged>HRESULT ID3D11EffectVariable::GetRawValue([None] void* pData,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectVariable.AsScalar\">\n            <summary>\t\n            Get a scalar variable.\t\n            </summary>\t\n            <remarks>\t\n            AsScalar returns a version of the effect variable that has been specialized to a scalar variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain scalar data. Applications can test the returned object for validity by calling {{IsValid}}. \t\n            </remarks>\t\n            <returns>A reference to a scalar variable. See <see cref=\"T:SharpDX.Direct3D11.EffectScalarVariable\"/>. </returns>\n            <unmanaged>ID3D11EffectScalarVariable* ID3D11EffectVariable::AsScalar()</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectVariable.AsVector\">\n            <summary>\t\n            Get a vector variable.\t\n            </summary>\t\n            <remarks>\t\n            AsVector returns a version of the effect variable that has been specialized to a vector variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain vector data. Applications can test the returned object for validity by calling {{IsValid}}. \t\n            </remarks>\t\n            <returns>A reference to a vector variable. See <see cref=\"T:SharpDX.Direct3D11.EffectVectorVariable\"/>. </returns>\n            <unmanaged>ID3D11EffectVectorVariable* ID3D11EffectVariable::AsVector()</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectVariable.AsMatrix\">\n            <summary>\t\n            Get a matrix variable.\t\n            </summary>\t\n            <remarks>\t\n            AsMatrix returns a version of the effect variable that has been specialized to a matrix variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain matrix data. Applications can test the returned object for validity by calling {{IsValid}}. \t\n            </remarks>\t\n            <returns>A reference to a matrix variable. See <see cref=\"T:SharpDX.Direct3D11.EffectMatrixVariable\"/>. </returns>\n            <unmanaged>ID3D11EffectMatrixVariable* ID3D11EffectVariable::AsMatrix()</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectVariable.AsString\">\n            <summary>\t\n            Get a string variable.\t\n            </summary>\t\n            <remarks>\t\n            AsString returns a version of the effect variable that has been specialized to a string variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain string data. Applications can test the returned object for validity by calling {{IsValid}}. \t\n            </remarks>\t\n            <returns>A reference to a string variable. See <see cref=\"T:SharpDX.Direct3D11.EffectStringVariable\"/>. </returns>\n            <unmanaged>ID3D11EffectStringVariable* ID3D11EffectVariable::AsString()</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectVariable.AsShaderResource\">\n            <summary>\t\n            Get a shader-resource variable.\t\n            </summary>\t\n            <remarks>\t\n            AsShaderResource returns a version of the effect variable that has been specialized to a shader-resource variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain shader-resource data. Applications can test the returned object for validity by calling {{IsValid}}. \t\n            </remarks>\t\n            <returns>A reference to a shader-resource variable. See <see cref=\"T:SharpDX.Direct3D11.EffectShaderResourceVariable\"/>. </returns>\n            <unmanaged>ID3D11EffectShaderResourceVariable* ID3D11EffectVariable::AsShaderResource()</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectVariable.AsRenderTargetView\">\n            <summary>\t\n            Get a render-target-view variable.\t\n            </summary>\t\n            <remarks>\t\n            This method returns a version of the effect variable that has been specialized to a render-target-view variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain render-target-view data. Applications can test the returned object for validity by calling {{IsValid}}. \t\n            </remarks>\t\n            <returns>A reference to a render-target-view variable. See <see cref=\"T:SharpDX.Direct3D11.EffectRenderTargetViewVariable\"/>. </returns>\n            <unmanaged>ID3D11EffectRenderTargetViewVariable* ID3D11EffectVariable::AsRenderTargetView()</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectVariable.AsDepthStencilView\">\n            <summary>\t\n            Get a depth-stencil-view variable.\t\n            </summary>\t\n            <remarks>\t\n            This method returns a version of the effect variable that has been specialized to a depth-stencil-view variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain depth-stencil-view data. Applications can test the returned object for validity by calling {{IsValid}}. \t\n            </remarks>\t\n            <returns>A reference to a depth-stencil-view variable. See <see cref=\"T:SharpDX.Direct3D11.EffectDepthStencilViewVariable\"/>. </returns>\n            <unmanaged>ID3D11EffectDepthStencilViewVariable* ID3D11EffectVariable::AsDepthStencilView()</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectVariable.AsClassInstance\">\n            <summary>\t\n            Get a class instance variable.\n            </summary>\t\n            <returns>A reference to a <see cref=\"T:SharpDX.Direct3D11.EffectClassInstanceVariable\"/>. </returns>\n            <unmanaged>ID3D11EffectClassInstanceVariable* ID3D11EffectVariable::AsClassInstance()</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectVariable.AsInterface\">\n            <summary>\t\n            Get an interface variable.\n            </summary>\t\n            <returns>A reference to a <see cref=\"T:SharpDX.Direct3D11.EffectInterfaceVariable\"/>. </returns>\n            <unmanaged>ID3D11EffectClassInstanceVariable* ID3D11EffectVariable::AsInterface()</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectVariable.AsUnorderedAccessView\">\n            <summary>\t\n            Get an unordered access view variable.\n            </summary>\t\n            <returns>A reference to a <see cref=\"T:SharpDX.Direct3D11.EffectUnorderedAccessViewVariable\"/>. </returns>\n            <unmanaged>ID3D11EffectUnorderedAccessViewVariable* ID3D11EffectVariable::AsDepthStencilView()</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectVariable.AsConstantBuffer\">\n            <summary>\t\n            Get a constant buffer.\t\n            </summary>\t\n            <remarks>\t\n            AsConstantBuffer returns a version of the effect variable that has been specialized to a constant buffer. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain constant buffer data. Applications can test the returned object for validity by calling {{IsValid}}. \t\n            </remarks>\t\n            <returns>A reference to a constant buffer. See <see cref=\"T:SharpDX.Direct3D11.EffectConstantBuffer\"/>. </returns>\n            <unmanaged>ID3D11EffectConstantBuffer* ID3D11EffectVariable::AsConstantBuffer()</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectVariable.AsShader\">\n            <summary>\t\n            Get a shader variable.\t\n            </summary>\t\n            <remarks>\t\n            AsShader returns a version of the effect variable that has been specialized to a shader variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain shader data. Applications can test the returned object for validity by calling {{IsValid}}. \t\n            </remarks>\t\n            <returns>A reference to a shader variable. See <see cref=\"T:SharpDX.Direct3D11.EffectShaderVariable\"/>. </returns>\n            <unmanaged>ID3D11EffectShaderVariable* ID3D11EffectVariable::AsShader()</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectVariable.AsBlend\">\n            <summary>\t\n            Get a effect-blend variable.\t\n            </summary>\t\n            <remarks>\t\n            AsBlend returns a version of the effect variable that has been specialized to an effect-blend variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain effect-blend data. Applications can test the returned object for validity by calling {{IsValid}}. \t\n            </remarks>\t\n            <returns>A reference to an effect blend variable. See <see cref=\"T:SharpDX.Direct3D11.EffectBlendVariable\"/>. </returns>\n            <unmanaged>ID3D11EffectBlendVariable* ID3D11EffectVariable::AsBlend()</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectVariable.AsDepthStencil\">\n            <summary>\t\n            Get a depth-stencil variable.\t\n            </summary>\t\n            <remarks>\t\n            AsDepthStencil returns a version of the effect variable that has been specialized to a depth-stencil variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain depth-stencil data. Applications can test the returned object for validity by calling {{IsValid}}. \t\n            </remarks>\t\n            <returns>A reference to a depth-stencil variable. See <see cref=\"T:SharpDX.Direct3D11.EffectDepthStencilVariable\"/>. </returns>\n            <unmanaged>ID3D11EffectDepthStencilVariable* ID3D11EffectVariable::AsDepthStencil()</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectVariable.AsRasterizer\">\n            <summary>\t\n            Get a rasterizer variable.\t\n            </summary>\t\n            <remarks>\t\n            AsRasterizer returns a version of the effect variable that has been specialized to a rasterizer variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain rasterizer data. Applications can test the returned object for validity by calling {{IsValid}}. \t\n            </remarks>\t\n            <returns>A reference to a rasterizer variable. See <see cref=\"T:SharpDX.Direct3D11.EffectRasterizerVariable\"/>. </returns>\n            <unmanaged>ID3D11EffectRasterizerVariable* ID3D11EffectVariable::AsRasterizer()</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectVariable.AsSampler\">\n            <summary>\t\n            Get a sampler variable.\t\n            </summary>\t\n            <remarks>\t\n            AsSampler returns a version of the effect variable that has been specialized to a sampler variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain sampler data. Applications can test the returned object for validity by calling {{IsValid}}. \t\n            </remarks>\t\n            <returns>A reference to a sampler variable. See <see cref=\"T:SharpDX.Direct3D11.EffectSamplerVariable\"/>. </returns>\n            <unmanaged>ID3D11EffectSamplerVariable* ID3D11EffectVariable::AsSampler()</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectVariable.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D11.EffectVariable\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectVariable.op_Explicit(System.IntPtr)~SharpDX.Direct3D11.EffectVariable\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D11.EffectVariable\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectVariable.IsValid_\">\n            <summary>\t\n            <p>Compare the data type with the data stored.</p>\t\n            </summary>\t\n            <returns><p><strong>TRUE</strong> if the syntax is valid; otherwise <strong><see cref=\"F:SharpDX.Result.False\"/></strong>.</p></returns>\t\n            <remarks>\t\n            <p>This method checks that the data type matches the data stored after casting one interface to another (using any of the As methods).</p><p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectVariable::IsValid']/*\"/>\t\n            <msdn-id>ff476815</msdn-id>\t\n            <unmanaged>BOOL ID3DX11EffectVariable::IsValid()</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectVariable::IsValid</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectVariable.GetTypeInfo\">\n            <summary>\t\n            <p>Get type information.</p>\t\n            </summary>\t\n            <returns><p>A reference to an <strong><see cref=\"T:SharpDX.Direct3D11.EffectType\"/></strong>.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectVariable::GetType']/*\"/>\t\n            <msdn-id>ff476814</msdn-id>\t\n            <unmanaged>ID3DX11EffectType* ID3DX11EffectVariable::GetType()</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectVariable::GetType</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectVariable.GetDescription(SharpDX.Direct3D11.EffectVariableDescription@)\">\n            <summary>\t\n            <p>Get a description.</p>\t\n            </summary>\t\n            <param name=\"descRef\"><dd>  <p>A reference to an effect-variable description (see <strong><see cref=\"T:SharpDX.Direct3D11.EffectVariableDescription\"/></strong>).</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectVariable::GetDesc']/*\"/>\t\n            <msdn-id>ff476807</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectVariable::GetDesc([Out] D3DX11_EFFECT_VARIABLE_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectVariable::GetDesc</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectVariable.GetAnnotationByIndex(System.Int32)\">\n            <summary>\t\n            <p>Get an annotation by index.</p>\t\n            </summary>\t\n            <param name=\"index\"><dd>  <p>A zero-based index.</p> </dd></param>\t\n            <returns><p>A reference to an <strong><see cref=\"T:SharpDX.Direct3D11.EffectVariable\"/></strong>.</p></returns>\t\n            <remarks>\t\n            <p>Annonations can be attached to a technique, a pass, or a global variable.</p><p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectVariable::GetAnnotationByIndex']/*\"/>\t\n            <msdn-id>ff476805</msdn-id>\t\n            <unmanaged>ID3DX11EffectVariable* ID3DX11EffectVariable::GetAnnotationByIndex([In] unsigned int Index)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectVariable::GetAnnotationByIndex</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectVariable.GetAnnotationByName(System.String)\">\n            <summary>\t\n            <p>Get an annotation by name.</p>\t\n            </summary>\t\n            <param name=\"name\"><dd>  <p>The annotation name.</p> </dd></param>\t\n            <returns><p>A reference to an <strong><see cref=\"T:SharpDX.Direct3D11.EffectVariable\"/></strong>.  Note that if the annotation is not found the <strong><see cref=\"T:SharpDX.Direct3D11.EffectVariable\"/></strong> returned  will be empty. The <strong><see cref=\"M:SharpDX.Direct3D11.EffectVariable.IsValid_\"/></strong> method should be called to determine whether the annotation was found.</p></returns>\t\n            <remarks>\t\n            <p>Annonations can be attached to a technique, a pass, or a global variable.</p><p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectVariable::GetAnnotationByName']/*\"/>\t\n            <msdn-id>ff476806</msdn-id>\t\n            <unmanaged>ID3DX11EffectVariable* ID3DX11EffectVariable::GetAnnotationByName([In] const char* Name)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectVariable::GetAnnotationByName</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectVariable.GetMemberByIndex(System.Int32)\">\n            <summary>\t\n            <p>Get a structure member by index.</p>\t\n            </summary>\t\n            <param name=\"index\"><dd>  <p>A zero-based index.</p> </dd></param>\t\n            <returns><p>A reference to an <strong><see cref=\"T:SharpDX.Direct3D11.EffectVariable\"/></strong>.</p></returns>\t\n            <remarks>\t\n            <p>If the effect variable is an structure, use this method to look up a member by index.</p><p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectVariable::GetMemberByIndex']/*\"/>\t\n            <msdn-id>ff476809</msdn-id>\t\n            <unmanaged>ID3DX11EffectVariable* ID3DX11EffectVariable::GetMemberByIndex([In] unsigned int Index)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectVariable::GetMemberByIndex</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectVariable.GetMemberByName(System.String)\">\n            <summary>\t\n            <p>Get a structure member by name.</p>\t\n            </summary>\t\n            <param name=\"name\"><dd>  <p>Member name.</p> </dd></param>\t\n            <returns><p>A reference to an <strong><see cref=\"T:SharpDX.Direct3D11.EffectVariable\"/></strong>.</p></returns>\t\n            <remarks>\t\n            <p>If the effect variable is an structure, use this method to look up a member by name.</p><p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectVariable::GetMemberByName']/*\"/>\t\n            <msdn-id>ff476810</msdn-id>\t\n            <unmanaged>ID3DX11EffectVariable* ID3DX11EffectVariable::GetMemberByName([In] const char* Name)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectVariable::GetMemberByName</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectVariable.GetMemberBySemantic(System.String)\">\n            <summary>\t\n            <p>Get a structure member by semantic.</p>\t\n            </summary>\t\n            <param name=\"semantic\"><dd>  <p>The semantic.</p> </dd></param>\t\n            <returns><p>A reference to an <strong><see cref=\"T:SharpDX.Direct3D11.EffectVariable\"/></strong>.</p></returns>\t\n            <remarks>\t\n            <p>If the effect variable is an structure, use this method to look up a member by attached semantic.</p><p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectVariable::GetMemberBySemantic']/*\"/>\t\n            <msdn-id>ff476811</msdn-id>\t\n            <unmanaged>ID3DX11EffectVariable* ID3DX11EffectVariable::GetMemberBySemantic([In] const char* Semantic)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectVariable::GetMemberBySemantic</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectVariable.GetElement(System.Int32)\">\n            <summary>\t\n            <p>Get an array element.</p>\t\n            </summary>\t\n            <param name=\"index\"><dd>  <p>A zero-based index; otherwise 0.</p> </dd></param>\t\n            <returns><p>A reference to an <strong><see cref=\"T:SharpDX.Direct3D11.EffectVariable\"/></strong>.</p></returns>\t\n            <remarks>\t\n            <p>If the effect variable is an array, use this method to return one of the elements.</p><p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectVariable::GetElement']/*\"/>\t\n            <msdn-id>ff476808</msdn-id>\t\n            <unmanaged>ID3DX11EffectVariable* ID3DX11EffectVariable::GetElement([In] unsigned int Index)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectVariable::GetElement</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectVariable.GetParentConstantBuffer\">\n            <summary>\t\n            <p>Get a constant buffer.</p>\t\n            </summary>\t\n            <returns><p>A reference to a <strong><see cref=\"T:SharpDX.Direct3D11.EffectConstantBuffer\"/></strong>.</p></returns>\t\n            <remarks>\t\n            <p>Effect variables are read-from or written-to a constant buffer.</p><p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectVariable::GetParentConstantBuffer']/*\"/>\t\n            <msdn-id>ff476812</msdn-id>\t\n            <unmanaged>ID3DX11EffectConstantBuffer* ID3DX11EffectVariable::GetParentConstantBuffer()</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectVariable::GetParentConstantBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectVariable.AsScalar_\">\n            <summary>\t\n            <p>Get a scalar variable.</p>\t\n            </summary>\t\n            <returns><p>A reference to a scalar variable. See <strong><see cref=\"T:SharpDX.Direct3D11.EffectScalarVariable\"/></strong>.</p></returns>\t\n            <remarks>\t\n            <p>AsScalar returns a version of the effect variable that has been specialized to a scalar variable. Similar to a cast,  this specialization will return an invalid object if the effect variable does not contain scalar data.</p><p>Applications can test the returned object for validity by calling <strong>IsValid</strong>.</p><p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectVariable::AsScalar']/*\"/>\t\n            <msdn-id>ff476799</msdn-id>\t\n            <unmanaged>ID3DX11EffectScalarVariable* ID3DX11EffectVariable::AsScalar()</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectVariable::AsScalar</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectVariable.AsVector_\">\n            <summary>\t\n            <p>Get a vector variable.</p>\t\n            </summary>\t\n            <returns><p>A reference to a vector variable. See <strong><see cref=\"T:SharpDX.Direct3D11.EffectVectorVariable\"/></strong>.</p></returns>\t\n            <remarks>\t\n            <p>AsVector returns a version of the effect variable that has been specialized to a vector variable. Similar to a cast,  this specialization will return an invalid object if the effect variable does not contain vector data.</p><p>Applications can test the returned object for validity by calling <strong>IsValid</strong>.</p><p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectVariable::AsVector']/*\"/>\t\n            <msdn-id>ff476804</msdn-id>\t\n            <unmanaged>ID3DX11EffectVectorVariable* ID3DX11EffectVariable::AsVector()</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectVariable::AsVector</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectVariable.AsMatrix_\">\n            <summary>\t\n            <p>Get a matrix variable.</p>\t\n            </summary>\t\n            <returns><p>A reference to a matrix variable. See <strong><see cref=\"T:SharpDX.Direct3D11.EffectMatrixVariable\"/></strong>.</p></returns>\t\n            <remarks>\t\n            <p>AsMatrix returns a version of the effect variable that has been specialized to a matrix variable. Similar to a cast, this specialization will  return an invalid object if the effect variable does not contain matrix data.</p><p>Applications can test the returned object for validity by calling <strong>IsValid</strong>.</p><p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectVariable::AsMatrix']/*\"/>\t\n            <msdn-id>ff476795</msdn-id>\t\n            <unmanaged>ID3DX11EffectMatrixVariable* ID3DX11EffectVariable::AsMatrix()</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectVariable::AsMatrix</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectVariable.AsString_\">\n            <summary>\t\n            <p>Get a string variable.</p>\t\n            </summary>\t\n            <returns><p>A reference to a string variable. See <strong><see cref=\"T:SharpDX.Direct3D11.EffectStringVariable\"/></strong>.</p></returns>\t\n            <remarks>\t\n            <p>AsString returns a version of the effect variable that has been specialized to a string variable. Similar to a cast,  this specialization will return an invalid object if the effect variable does not contain string data.</p><p>Applications can test the returned object for validity by calling <strong>IsValid</strong>.</p><p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectVariable::AsString']/*\"/>\t\n            <msdn-id>ff476802</msdn-id>\t\n            <unmanaged>ID3DX11EffectStringVariable* ID3DX11EffectVariable::AsString()</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectVariable::AsString</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectVariable.AsClassInstance_\">\n            <summary>\t\n            <p>Get a class-instance variable.</p>\t\n            </summary>\t\n            <returns><p>A reference to class-instance variable. See <strong><see cref=\"T:SharpDX.Direct3D11.EffectClassInstanceVariable\"/></strong>.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectVariable::AsClassInstance']/*\"/>\t\n            <msdn-id>ff476790</msdn-id>\t\n            <unmanaged>ID3DX11EffectClassInstanceVariable* ID3DX11EffectVariable::AsClassInstance()</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectVariable::AsClassInstance</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectVariable.AsInterface_\">\n            <summary>\t\n            <p>Get an interface variable.</p>\t\n            </summary>\t\n            <returns><p>A reference to an interface variable.  See <strong><see cref=\"T:SharpDX.Direct3D11.EffectInterfaceVariable\"/></strong>.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectVariable::AsInterface']/*\"/>\t\n            <msdn-id>ff476794</msdn-id>\t\n            <unmanaged>ID3DX11EffectInterfaceVariable* ID3DX11EffectVariable::AsInterface()</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectVariable::AsInterface</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectVariable.AsShaderResource_\">\n            <summary>\t\n            <p>Get a shader-resource variable.</p>\t\n            </summary>\t\n            <returns><p>A reference to a shader-resource variable. See <strong><see cref=\"T:SharpDX.Direct3D11.EffectShaderResourceVariable\"/></strong>.</p></returns>\t\n            <remarks>\t\n            <p>AsShaderResource returns a version of the effect variable that has been specialized to a shader-resource variable.  Similar to a cast, this specialization will return an invalid object if the effect variable does not contain shader-resource data.</p><p>Applications can test the returned object for validity by calling <strong>IsValid</strong>.</p><p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectVariable::AsShaderResource']/*\"/>\t\n            <msdn-id>ff476801</msdn-id>\t\n            <unmanaged>ID3DX11EffectShaderResourceVariable* ID3DX11EffectVariable::AsShaderResource()</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectVariable::AsShaderResource</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectVariable.AsUnorderedAccessView_\">\n            <summary>\t\n            <p>Get an unordered-access-view variable.</p>\t\n            </summary>\t\n            <returns><p>A reference to an unordered-access-view variable.  See <strong><see cref=\"T:SharpDX.Direct3D11.EffectUnorderedAccessViewVariable\"/></strong>.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectVariable::AsUnorderedAccessView']/*\"/>\t\n            <msdn-id>ff476803</msdn-id>\t\n            <unmanaged>ID3DX11EffectUnorderedAccessViewVariable* ID3DX11EffectVariable::AsUnorderedAccessView()</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectVariable::AsUnorderedAccessView</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectVariable.AsRenderTargetView_\">\n            <summary>\t\n            <p>Get a render-target-view variable.</p>\t\n            </summary>\t\n            <returns><p>A reference to a render-target-view variable. See <strong><see cref=\"T:SharpDX.Direct3D11.EffectRenderTargetViewVariable\"/></strong>.</p></returns>\t\n            <remarks>\t\n            <p>This method returns a version of the effect variable that has been specialized to a render-target-view variable.  Similar to a cast, this specialization will return an invalid object if the effect variable does not contain render-target-view data.</p><p>Applications can test the returned object for validity by calling <strong>IsValid</strong>.</p><p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectVariable::AsRenderTargetView']/*\"/>\t\n            <msdn-id>ff476797</msdn-id>\t\n            <unmanaged>ID3DX11EffectRenderTargetViewVariable* ID3DX11EffectVariable::AsRenderTargetView()</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectVariable::AsRenderTargetView</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectVariable.AsDepthStencilView_\">\n            <summary>\t\n            <p>Get a depth-stencil-view variable.</p>\t\n            </summary>\t\n            <returns><p>A reference to a depth-stencil-view variable. See <strong><see cref=\"T:SharpDX.Direct3D11.EffectDepthStencilViewVariable\"/></strong>.</p></returns>\t\n            <remarks>\t\n            <p>This method returns a version of the effect variable that has been specialized to a depth-stencil-view variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain depth-stencil-view data.</p><p>Applications can test the returned object for validity by calling <strong>IsValid</strong>.</p><p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectVariable::AsDepthStencilView']/*\"/>\t\n            <msdn-id>ff476793</msdn-id>\t\n            <unmanaged>ID3DX11EffectDepthStencilViewVariable* ID3DX11EffectVariable::AsDepthStencilView()</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectVariable::AsDepthStencilView</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectVariable.AsConstantBuffer_\">\n            <summary>\t\n            <p>Get a constant buffer.</p>\t\n            </summary>\t\n            <returns><p>A reference to a constant buffer. See <strong><see cref=\"T:SharpDX.Direct3D11.EffectConstantBuffer\"/></strong>.</p></returns>\t\n            <remarks>\t\n            <p>AsConstantBuffer returns a version of the effect variable that has been specialized to a constant buffer.  Similar to a cast, this specialization will return an invalid object if the effect variable does not contain constant buffer data.</p><p>Applications can test the returned object for validity by calling <strong>IsValid</strong>.</p><p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectVariable::AsConstantBuffer']/*\"/>\t\n            <msdn-id>ff476791</msdn-id>\t\n            <unmanaged>ID3DX11EffectConstantBuffer* ID3DX11EffectVariable::AsConstantBuffer()</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectVariable::AsConstantBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectVariable.AsShader_\">\n            <summary>\t\n            <p>Get a shader variable.</p>\t\n            </summary>\t\n            <returns><p>A reference to a shader variable. See <strong><see cref=\"T:SharpDX.Direct3D11.EffectShaderVariable\"/></strong>.</p></returns>\t\n            <remarks>\t\n            <p>AsShader returns a version of the effect variable that has been specialized to a shader variable. Similar to a cast,  this specialization will return an invalid object if the effect variable does not contain shader data.</p><p>Applications can test the returned object for validity by calling <strong>IsValid</strong>.</p><p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectVariable::AsShader']/*\"/>\t\n            <msdn-id>ff476800</msdn-id>\t\n            <unmanaged>ID3DX11EffectShaderVariable* ID3DX11EffectVariable::AsShader()</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectVariable::AsShader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectVariable.AsBlend_\">\n            <summary>\t\n            <p>Get a effect-blend variable.</p>\t\n            </summary>\t\n            <returns><p>A reference to an effect blend variable. See <strong><see cref=\"T:SharpDX.Direct3D11.EffectBlendVariable\"/></strong>.</p></returns>\t\n            <remarks>\t\n            <p>AsBlend returns a version of the effect variable that has been specialized to an effect-blend variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain effect-blend data.</p><p>Applications can test the returned object for validity by calling <strong>IsValid</strong>.</p><p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectVariable::AsBlend']/*\"/>\t\n            <msdn-id>ff476789</msdn-id>\t\n            <unmanaged>ID3DX11EffectBlendVariable* ID3DX11EffectVariable::AsBlend()</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectVariable::AsBlend</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectVariable.AsDepthStencil_\">\n            <summary>\t\n            <p>Get a depth-stencil variable.</p>\t\n            </summary>\t\n            <returns><p>A reference to a depth-stencil variable. See <strong><see cref=\"T:SharpDX.Direct3D11.EffectDepthStencilVariable\"/></strong>.</p></returns>\t\n            <remarks>\t\n            <p>AsDepthStencil returns a version of the effect variable that has been specialized to a depth-stencil variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain depth-stencil data.</p><p>Applications can test the returned object for validity by calling <strong>IsValid</strong>.</p><p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectVariable::AsDepthStencil']/*\"/>\t\n            <msdn-id>ff476792</msdn-id>\t\n            <unmanaged>ID3DX11EffectDepthStencilVariable* ID3DX11EffectVariable::AsDepthStencil()</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectVariable::AsDepthStencil</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectVariable.AsRasterizer_\">\n            <summary>\t\n            <p>Get a rasterizer variable.</p>\t\n            </summary>\t\n            <returns><p>A reference to a rasterizer variable. See <strong><see cref=\"T:SharpDX.Direct3D11.EffectRasterizerVariable\"/></strong>.</p></returns>\t\n            <remarks>\t\n            <p>AsRasterizer returns a version of the effect variable that has been specialized to a rasterizer variable. Similar to a cast, this specialization  will return an invalid object if the effect variable does not contain rasterizer data.</p><p>Applications can test the returned object for validity by calling <strong>IsValid</strong>.</p><p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectVariable::AsRasterizer']/*\"/>\t\n            <msdn-id>ff476796</msdn-id>\t\n            <unmanaged>ID3DX11EffectRasterizerVariable* ID3DX11EffectVariable::AsRasterizer()</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectVariable::AsRasterizer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectVariable.AsSampler_\">\n            <summary>\t\n            <p>Get a sampler variable.</p>\t\n            </summary>\t\n            <returns><p>A reference to a sampler variable. See <strong><see cref=\"T:SharpDX.Direct3D11.EffectSamplerVariable\"/></strong>.</p></returns>\t\n            <remarks>\t\n            <p>AsSampler returns a version of the effect variable that has been specialized to a sampler variable. Similar to a cast, this specialization will  return an invalid object if the effect variable does not contain sampler data.</p><p>Applications can test the returned object for validity by calling <strong>IsValid</strong>.</p><p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectVariable::AsSampler']/*\"/>\t\n            <msdn-id>ff476798</msdn-id>\t\n            <unmanaged>ID3DX11EffectSamplerVariable* ID3DX11EffectVariable::AsSampler()</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectVariable::AsSampler</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectVariable.SetRawValue(System.IntPtr,System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Set data.</p>\t\n            </summary>\t\n            <param name=\"dataRef\"><dd>  <p>A reference to the variable.</p> </dd></param>\t\n            <param name=\"offset\"><dd>  <p>The offset (in bytes) from the beginning of the reference to the data.</p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>The number of bytes to set.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>This method does no conversion or type checking; it is therefore a very quick way to access array items.</p><p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectVariable::SetRawValue']/*\"/>\t\n            <msdn-id>ff476816</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectVariable::SetRawValue([In] const void* pData,[In] unsigned int Offset,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectVariable::SetRawValue</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectVariable.GetRawValue(System.IntPtr,System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Get data.</p>\t\n            </summary>\t\n            <param name=\"dataRef\"><dd>  <p>A reference to the variable.</p> </dd></param>\t\n            <param name=\"offset\"><dd>  <p>The offset (in bytes) from the beginning of the reference to the data.</p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>The number of bytes to get.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>This method does no conversion or type checking; it is therefore a very quick way to access array items.</p><p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectVariable::GetRawValue']/*\"/>\t\n            <msdn-id>ff476813</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectVariable::GetRawValue([In] void* pData,[In] unsigned int Offset,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectVariable::GetRawValue</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.EffectVariable.IsValid\">\n            <summary>\t\n            <p>Compare the data type with the data stored.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This method checks that the data type matches the data stored after casting one interface to another (using any of the As methods).</p><p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectVariable::IsValid']/*\"/>\t\n            <msdn-id>ff476815</msdn-id>\t\n            <unmanaged>IsValid</unmanaged>\t\n            <unmanaged-short>IsValid</unmanaged-short>\t\n            <unmanaged>BOOL ID3DX11EffectVariable::IsValid()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.EffectVariable.TypeInfo\">\n            <summary>\t\n            <p>Get type information.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectVariable::GetType']/*\"/>\t\n            <msdn-id>ff476814</msdn-id>\t\n            <unmanaged>GetType</unmanaged>\t\n            <unmanaged-short>GetType</unmanaged-short>\t\n            <unmanaged>ID3DX11EffectType* ID3DX11EffectVariable::GetType()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.EffectVariable.Description\">\n            <summary>\t\n            <p>Get a description.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectVariable::GetDesc']/*\"/>\t\n            <msdn-id>ff476807</msdn-id>\t\n            <unmanaged>GetDesc</unmanaged>\t\n            <unmanaged-short>GetDesc</unmanaged-short>\t\n            <unmanaged>HRESULT ID3DX11EffectVariable::GetDesc([Out] D3DX11_EFFECT_VARIABLE_DESC* pDesc)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.EffectVariable.ParentConstantBuffer\">\n            <summary>\t\n            <p>Get a constant buffer.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Effect variables are read-from or written-to a constant buffer.</p><p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectVariable::GetParentConstantBuffer']/*\"/>\t\n            <msdn-id>ff476812</msdn-id>\t\n            <unmanaged>GetParentConstantBuffer</unmanaged>\t\n            <unmanaged-short>GetParentConstantBuffer</unmanaged-short>\t\n            <unmanaged>ID3DX11EffectConstantBuffer* ID3DX11EffectVariable::GetParentConstantBuffer()</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectBlendVariable.GetBlendState\">\n            <summary>\t\n            Get a pointer to a blend-state interface.\n            </summary>\t\n            <returns>Returns <see cref=\"T:SharpDX.Direct3D11.BlendState\"/>.</returns>\n            <unmanaged>HRESULT ID3D10EffectBlendVariable::GetBlendState([None] int Index,[Out] ID3D10BlendState** ppBlendState)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectBlendVariable.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D11.EffectBlendVariable\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectBlendVariable.op_Explicit(System.IntPtr)~SharpDX.Direct3D11.EffectBlendVariable\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D11.EffectBlendVariable\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectBlendVariable.GetBlendState(System.Int32)\">\n            <summary>\t\n            <p>Get a reference to a blend-state interface.</p>\t\n            </summary>\t\n            <param name=\"index\"><dd>  <p>Index into an array of blend-state interfaces. If there is only one blend-state interface, use 0.</p> </dd></param>\t\n            <returns><dd>  <p>The address of a reference to a blend-state interface (see <strong><see cref=\"T:SharpDX.Direct3D11.BlendState\"/></strong>).</p> </dd></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectBlendVariable::GetBlendState']/*\"/>\t\n            <msdn-id>ff476655</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectBlendVariable::GetBlendState([In] unsigned int Index,[Out] ID3D11BlendState** ppBlendState)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectBlendVariable::GetBlendState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectBlendVariable.SetBlendState(System.Int32,SharpDX.Direct3D11.BlendState)\">\n            <summary>\t\n            <p>Sets an effect's blend-state.</p>\t\n            </summary>\t\n            <param name=\"index\"><dd>  <p>Index into an array of blend-state interfaces. If there is only one blend-state interface, use 0.</p> </dd></param>\t\n            <param name=\"blendStateRef\"><dd>  <p>A reference to an <strong><see cref=\"T:SharpDX.Direct3D11.BlendState\"/></strong> interface containing the blend-state to set.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectBlendVariable::SetBlendState']/*\"/>\t\n            <msdn-id>ff476656</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectBlendVariable::SetBlendState([In] unsigned int Index,[In] ID3D11BlendState* pBlendState)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectBlendVariable::SetBlendState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectBlendVariable.UndoSetBlendState(System.Int32)\">\n            <summary>\t\n            <p>Reverts a previously set blend-state.</p>\t\n            </summary>\t\n            <param name=\"index\"><dd>  <p>Index into an array of blend-state interfaces. If there is only one blend-state interface, use 0.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectBlendVariable::UndoSetBlendState']/*\"/>\t\n            <msdn-id>ff476657</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectBlendVariable::UndoSetBlendState([In] unsigned int Index)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectBlendVariable::UndoSetBlendState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectBlendVariable.GetBackingStore(System.Int32,SharpDX.Direct3D11.BlendStateDescription@)\">\n            <summary>\t\n            <p>Get a reference to a blend-state variable.</p>\t\n            </summary>\t\n            <param name=\"index\"><dd>  <p>Index into an array of blend-state descriptions. If there is only one blend-state variable in the effect, use 0.</p> </dd></param>\t\n            <param name=\"blendDescRef\"><dd>  <p>A reference to a blend-state description (see <strong><see cref=\"T:SharpDX.Direct3D11.BlendStateDescription\"/></strong>).</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>Effect variables are saved in memory in the backing store; when a technique is applied, the values in the backing store are copied to the device.  Backing store data can used to recreate the variable when necessary.</p><p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectBlendVariable::GetBackingStore']/*\"/>\t\n            <msdn-id>ff476654</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectBlendVariable::GetBackingStore([In] unsigned int Index,[Out] D3D11_BLEND_DESC* pBlendDesc)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectBlendVariable::GetBackingStore</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.EffectDepthStencilVariable\">\n            <summary>\t\n            <p>A depth-stencil-variable interface accesses depth-stencil state.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>An <strong><see cref=\"T:SharpDX.Direct3D11.EffectVariable\"/></strong> interface is created when an effect is read into memory.</p><p>Effect variables are saved in memory in the backing store; when a technique is applied, the values in the backing store are copied to the device.  You can use either of these methods to return state.</p><p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectDepthStencilVariable']/*\"/>\t\n            <msdn-id>ff476677</msdn-id>\t\n            <unmanaged>ID3DX11EffectDepthStencilVariable</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectDepthStencilVariable</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectDepthStencilVariable.GetDepthStencilState\">\n            <summary>\t\n            Get a pointer to a depth-stencil interface.\t\n            </summary>\t\n            <returns>Returns a pointer to a blend-state interface (see <see cref=\"T:SharpDX.Direct3D11.DepthStencilState\"/>). </returns>\n            <unmanaged>HRESULT ID3D10EffectDepthStencilVariable::GetDepthStencilState([None] int Index,[Out] ID3D10DepthStencilState** ppDepthStencilState)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectDepthStencilVariable.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D11.EffectDepthStencilVariable\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectDepthStencilVariable.op_Explicit(System.IntPtr)~SharpDX.Direct3D11.EffectDepthStencilVariable\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D11.EffectDepthStencilVariable\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectDepthStencilVariable.GetDepthStencilState(System.Int32)\">\n            <summary>\t\n            <p>Get a reference to a depth-stencil interface.</p>\t\n            </summary>\t\n            <param name=\"index\"><dd>  <p>Index into an array of depth-stencil interfaces. If there is only one depth-stencil interface, use 0.</p> </dd></param>\t\n            <returns><dd>  <p>The address of a reference to a blend-state interface (see <strong><see cref=\"T:SharpDX.Direct3D11.DepthStencilState\"/></strong>).</p> </dd></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectDepthStencilVariable::GetDepthStencilState']/*\"/>\t\n            <msdn-id>ff476679</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectDepthStencilVariable::GetDepthStencilState([In] unsigned int Index,[Out] ID3D11DepthStencilState** ppDepthStencilState)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectDepthStencilVariable::GetDepthStencilState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectDepthStencilVariable.SetDepthStencilState(System.Int32,SharpDX.Direct3D11.DepthStencilState)\">\n            <summary>\t\n            <p>Sets the depth stencil state.</p>\t\n            </summary>\t\n            <param name=\"index\"><dd>  <p>Index into an array of depth-stencil interfaces. If there is only one depth-stencil interface, use 0.</p> </dd></param>\t\n            <param name=\"depthStencilStateRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D11.DepthStencilState\"/></strong> interface containing the new depth stencil state.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectDepthStencilVariable::SetDepthStencilState']/*\"/>\t\n            <msdn-id>ff476680</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectDepthStencilVariable::SetDepthStencilState([In] unsigned int Index,[In] ID3D11DepthStencilState* pDepthStencilState)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectDepthStencilVariable::SetDepthStencilState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectDepthStencilVariable.UndoSetDepthStencilState(System.Int32)\">\n            <summary>\t\n            <p>Reverts a previously set depth stencil state.</p>\t\n            </summary>\t\n            <param name=\"index\"><dd>  <p>Index into an array of depth-stencil interfaces. If there is only one depth-stencil interface, use 0.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectDepthStencilVariable::UndoSetDepthStencilState']/*\"/>\t\n            <msdn-id>ff476681</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectDepthStencilVariable::UndoSetDepthStencilState([In] unsigned int Index)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectDepthStencilVariable::UndoSetDepthStencilState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectDepthStencilVariable.GetBackingStore(System.Int32)\">\n            <summary>\t\n            <p>Get a reference to a variable that contains depth-stencil state.</p>\t\n            </summary>\t\n            <param name=\"index\"><dd>  <p>Index into an array of depth-stencil-state descriptions. If there is only one depth-stencil variable in the effect, use 0.</p> </dd></param>\t\n            <returns><dd>  <p>A reference to a depth-stencil-state description (see <strong><see cref=\"T:SharpDX.Direct3D11.DepthStencilStateDescription\"/></strong>).</p> </dd></returns>\t\n            <remarks>\t\n            <p>Effect variables are saved in memory in the backing store; when a technique is applied, the values in the backing store are copied to the device.  Backing store data can used to recreate the variable when necessary.</p><p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectDepthStencilVariable::GetBackingStore']/*\"/>\t\n            <msdn-id>ff476678</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectDepthStencilVariable::GetBackingStore([In] unsigned int Index,[Out] D3D11_DEPTH_STENCIL_DESC* pDepthStencilDesc)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectDepthStencilVariable::GetBackingStore</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.EffectDepthStencilViewVariable\">\n            <summary>\t\n            <p>A depth-stencil-view-variable interface accesses a depth-stencil view.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectDepthStencilViewVariable']/*\"/>\t\n            <msdn-id>ff476682</msdn-id>\t\n            <unmanaged>ID3DX11EffectDepthStencilViewVariable</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectDepthStencilViewVariable</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectDepthStencilViewVariable.SetDepthStencilArray(SharpDX.Direct3D11.DepthStencilView[])\">\n            <summary>\t\n            Set an array of depth-stencil-view resources.\t\n            </summary>\t\n            <param name=\"resourcesRef\"> A pointer to an array of depth-stencil-view interfaces. See <see cref=\"T:SharpDX.Direct3D11.DepthStencilView\"/>. </param>\n            <returns>Returns one of the following {{Direct3D 10 Return Codes}}. </returns>\n            <unmanaged>HRESULT ID3D10EffectDepthStencilViewVariable::SetDepthStencilArray([In, Buffer] ID3D10DepthStencilView** ppResources,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectDepthStencilViewVariable.SetDepthStencilArray(SharpDX.Direct3D11.DepthStencilView[],System.Int32)\">\n            <summary>\t\n            Set an array of depth-stencil-view resources.\t\n            </summary>\t\n            <param name=\"resourcesRef\"> A pointer to an array of depth-stencil-view interfaces. See <see cref=\"T:SharpDX.Direct3D11.DepthStencilView\"/>. </param>\n            <param name=\"offset\"> The zero-based array index to set the first interface. </param>\n            <returns>Returns one of the following {{Direct3D 10 Return Codes}}. </returns>\n            <unmanaged>HRESULT ID3D10EffectDepthStencilViewVariable::SetDepthStencilArray([In, Buffer] ID3D10DepthStencilView** ppResources,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectDepthStencilViewVariable.GetDepthStencilArray(System.Int32)\">\n            <summary>\t\n            Get an array of depth-stencil-view resources.\t\n            </summary>\t\n            <param name=\"count\"> The number of elements in the array. </param>\n            <returns>Returns an array of depth-stencil-view interfaces. See <see cref=\"T:SharpDX.Direct3D11.DepthStencilView\"/>. </returns>\n            <unmanaged>HRESULT ID3D10EffectDepthStencilViewVariable::GetDepthStencilArray([Out, Buffer] ID3D10DepthStencilView** ppResources,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectDepthStencilViewVariable.GetDepthStencilArray(System.Int32,System.Int32)\">\n            <summary>\t\n            Get an array of depth-stencil-view resources.\t\n            </summary>\t\n            <param name=\"offset\"> The zero-based array index to get the first interface. </param>\n            <param name=\"count\"> The number of elements in the array. </param>\n            <returns>Returns an array of depth-stencil-view interfaces. See <see cref=\"T:SharpDX.Direct3D11.DepthStencilView\"/>. </returns>\n            <unmanaged>HRESULT ID3D10EffectDepthStencilViewVariable::GetDepthStencilArray([Out, Buffer] ID3D10DepthStencilView** ppResources,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectDepthStencilViewVariable.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D11.EffectDepthStencilViewVariable\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectDepthStencilViewVariable.op_Explicit(System.IntPtr)~SharpDX.Direct3D11.EffectDepthStencilViewVariable\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D11.EffectDepthStencilViewVariable\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectDepthStencilViewVariable.SetDepthStencil(SharpDX.Direct3D11.DepthStencilView)\">\n            <summary>\t\n            <p>Set a depth-stencil-view resource.</p>\t\n            </summary>\t\n            <param name=\"resourceRef\"><dd>  <p>A reference to a depth-stencil-view interface. See <strong><see cref=\"T:SharpDX.Direct3D11.DepthStencilView\"/></strong>.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectDepthStencilViewVariable::SetDepthStencil']/*\"/>\t\n            <msdn-id>ff476685</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectDepthStencilViewVariable::SetDepthStencil([In] ID3D11DepthStencilView* pResource)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectDepthStencilViewVariable::SetDepthStencil</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectDepthStencilViewVariable.GetDepthStencil\">\n            <summary>\t\n            <p>Get a depth-stencil-view resource.</p>\t\n            </summary>\t\n            <returns><dd>  <p>The address of a reference to a depth-stencil-view interface. See <strong><see cref=\"T:SharpDX.Direct3D11.DepthStencilView\"/></strong>.</p> </dd></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectDepthStencilViewVariable::GetDepthStencil']/*\"/>\t\n            <msdn-id>ff476683</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectDepthStencilViewVariable::GetDepthStencil([In] ID3D11DepthStencilView** ppResource)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectDepthStencilViewVariable::GetDepthStencil</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectDepthStencilViewVariable.SetDepthStencilArray(SharpDX.Direct3D11.DepthStencilView[],System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Set an array of depth-stencil-view resources.</p>\t\n            </summary>\t\n            <param name=\"resourcesOut\"><dd>  <p>A reference to an array of depth-stencil-view interfaces. See <strong><see cref=\"T:SharpDX.Direct3D11.DepthStencilView\"/></strong>.</p> </dd></param>\t\n            <param name=\"offset\"><dd>  <p>The zero-based array index to set the first interface.</p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>The number of elements in the array.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectDepthStencilViewVariable::SetDepthStencilArray']/*\"/>\t\n            <msdn-id>ff476686</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectDepthStencilViewVariable::SetDepthStencilArray([In, Buffer] ID3D11DepthStencilView** ppResources,[In] unsigned int Offset,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectDepthStencilViewVariable::SetDepthStencilArray</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectDepthStencilViewVariable.SetDepthStencilArray(SharpDX.ComArray{SharpDX.Direct3D11.DepthStencilView},System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Set an array of depth-stencil-view resources.</p>\t\n            </summary>\t\n            <param name=\"resourcesOut\"><dd>  <p>A reference to an array of depth-stencil-view interfaces. See <strong><see cref=\"T:SharpDX.Direct3D11.DepthStencilView\"/></strong>.</p> </dd></param>\t\n            <param name=\"offset\"><dd>  <p>The zero-based array index to set the first interface.</p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>The number of elements in the array.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectDepthStencilViewVariable::SetDepthStencilArray']/*\"/>\t\n            <msdn-id>ff476686</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectDepthStencilViewVariable::SetDepthStencilArray([In, Buffer] ID3D11DepthStencilView** ppResources,[In] unsigned int Offset,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectDepthStencilViewVariable::SetDepthStencilArray</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectDepthStencilViewVariable.GetDepthStencilArray(SharpDX.Direct3D11.DepthStencilView[],System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Get an array of depth-stencil-view resources.</p>\t\n            </summary>\t\n            <param name=\"resourcesOut\"><dd>  <p>A reference to an array of depth-stencil-view interfaces. See <strong><see cref=\"T:SharpDX.Direct3D11.DepthStencilView\"/></strong>.</p> </dd></param>\t\n            <param name=\"offset\"><dd>  <p>The zero-based array index to get the first interface.</p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>The number of elements in the array.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectDepthStencilViewVariable::GetDepthStencilArray']/*\"/>\t\n            <msdn-id>ff476684</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectDepthStencilViewVariable::GetDepthStencilArray([Out, Buffer] ID3D11DepthStencilView** ppResources,[In] unsigned int Offset,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectDepthStencilViewVariable::GetDepthStencilArray</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.EffectMatrixVariable\">\n            <summary>\t\n            <p>A matrix-variable interface accesses a matrix.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectMatrixVariable']/*\"/>\t\n            <msdn-id>ff476697</msdn-id>\t\n            <unmanaged>ID3DX11EffectMatrixVariable</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectMatrixVariable</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectMatrixVariable.SetMatrix``1(``0)\">\n            <summary>\t\n            Set a floating-point matrix.\t\n            </summary>\t\n            <param name=\"matrix\"> A pointer to the first element in the matrix. </param>\n            <returns>Returns one of the following {{Direct3D 10 Return Codes}}. </returns>\n            <unmanaged>HRESULT ID3D11EffectMatrixVariable::SetMatrix([In] float* pData)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectMatrixVariable.GetMatrix``1\">\n            <summary>\t\n            Get a matrix.\t\n            </summary>\t\n            <returns><para>A reference to the first element in a matrix.</para></returns>\t\n            <remarks>\t\n            Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.\t\n            </remarks>\t\n            <unmanaged>HRESULT ID3DX11EffectMatrixVariable::GetMatrix([Out] SHARPDX_MATRIX* pData)</unmanaged>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectMatrixVariable.GetMatrix\">\n            <summary>\t\n            Get a matrix.\t\n            </summary>\t\n            <returns><para>A reference to the first element in a matrix.</para></returns>\t\n            <remarks>\t\n            Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.\t\n            </remarks>\t\n            <unmanaged>HRESULT ID3DX11EffectMatrixVariable::GetMatrix([Out] SHARPDX_MATRIX* pData)</unmanaged>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectMatrixVariable.SetMatrix``1(``0@)\">\n            <summary>\t\n            Set a floating-point matrix.\t\n            </summary>\t\n            <param name=\"matrix\"> A pointer to the first element in the matrix. </param>\n            <returns>Returns one of the following {{Direct3D 10 Return Codes}}. </returns>\n            <unmanaged>HRESULT ID3D11EffectMatrixVariable::SetMatrix([In] float* pData)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectMatrixVariable.SetMatrix``1(``0[])\">\n            <summary>\t\n            Set an array of floating-point matrices.\t\n            </summary>\t\n            <param name=\"matrixArray\"> A pointer to the first matrix. </param>\n            <returns>Returns one of the following {{Direct3D 10 Return Codes}}. </returns>\n            <unmanaged>HRESULT ID3D11EffectMatrixVariable::SetMatrixArray([In, Buffer] float* pData,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectMatrixVariable.SetMatrix``1(``0[],System.Int32)\">\n            <summary>\t\n            Set an array of floating-point matrices.\t\n            </summary>\t\n            <param name=\"matrixArray\"> A pointer to the first matrix. </param>\n            <param name=\"offset\"> The number of matrix elements to skip from the start of the array. </param>\n            <returns>Returns one of the following {{Direct3D 10 Return Codes}}. </returns>\n            <unmanaged>HRESULT ID3D11EffectMatrixVariable::SetMatrixArray([In, Buffer] float* pData,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectMatrixVariable.GetMatrixArray``1(System.Int32)\">\n            <summary>\t\n            Get an array of matrices.\t\n            </summary>\t\n            <param name=\"count\"> The number of matrices in the returned array. </param>\n            <returns>Returns an array of matrix. </returns>\n            <unmanaged>HRESULT ID3D11EffectMatrixVariable::GetMatrixArray([Out, Buffer] float* pData,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectMatrixVariable.GetMatrixArray``1(System.Int32,System.Int32)\">\n            <summary>\t\n            Get an array of matrices.\t\n            </summary>\t\n            <param name=\"offset\"> The offset (in number of matrices) between the start of the array and the first matrix returned. </param>\n            <param name=\"count\"> The number of matrices in the returned array. </param>\n            <returns>Returns an array of matrix. </returns>\n            <unmanaged>HRESULT ID3D11EffectMatrixVariable::GetMatrixArray([Out, Buffer] float* pData,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectMatrixVariable.SetMatrixTranspose``1(``0)\">\n            <summary>\t\n            Transpose and set a floating-point matrix.\t\n            </summary>\t\n            <remarks>\t\n             Transposing a matrix will rearrange the data order from row-column order to column-row order (or vice versa). \t\n            </remarks>\t\n            <param name=\"matrix\"> A pointer to the first element of a matrix. </param>\n            <returns>Returns one of the following {{Direct3D 10 Return Codes}}. </returns>\n            <unmanaged>HRESULT ID3D11EffectMatrixVariable::SetMatrixTranspose([In] float* pData)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectMatrixVariable.SetMatrixTranspose``1(``0@)\">\n            <summary>\t\n            Transpose and set a floating-point matrix.\t\n            </summary>\t\n            <remarks>\t\n             Transposing a matrix will rearrange the data order from row-column order to column-row order (or vice versa). \t\n            </remarks>\t\n            <param name=\"matrix\"> A pointer to the first element of a matrix. </param>\n            <returns>Returns one of the following {{Direct3D 10 Return Codes}}. </returns>\n            <unmanaged>HRESULT ID3D11EffectMatrixVariable::SetMatrixTranspose([In] float* pData)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectMatrixVariable.SetMatrixTranspose``1(``0[])\">\n            <summary>\t\n            Transpose and set an array of floating-point matrices.\t\n            </summary>\t\n            <remarks>\t\n             Transposing a matrix will rearrange the data order from row-column order to column-row order (or vice versa). \t\n            </remarks>\t\n            <param name=\"matrixArray\"> A pointer to an array of matrices. </param>\n            <returns>Returns one of the following {{Direct3D 10 Return Codes}}. </returns>\n            <unmanaged>HRESULT ID3D11EffectMatrixVariable::SetMatrixTransposeArray([In] float* pData,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectMatrixVariable.SetMatrixTranspose``1(``0[],System.Int32)\">\n            <summary>\t\n            Transpose and set an array of floating-point matrices.\t\n            </summary>\t\n            <remarks>\t\n             Transposing a matrix will rearrange the data order from row-column order to column-row order (or vice versa). \t\n            </remarks>\t\n            <param name=\"matrixArray\"> A pointer to an array of matrices. </param>\n            <param name=\"offset\"> The offset (in number of matrices) between the start of the array and the first matrix to set. </param>\n            <returns>Returns one of the following {{Direct3D 10 Return Codes}}. </returns>\n            <unmanaged>HRESULT ID3D11EffectMatrixVariable::SetMatrixTransposeArray([In] float* pData,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectMatrixVariable.GetMatrixTranspose``1\">\n            <summary>\t\n            Transpose and get a floating-point matrix.\t\n            </summary>\t\n            <returns>The transposed matrix.</returns>\t\n            <remarks>\t\n            Transposing a matrix will rearrange the data order from row-column order to column-row order (or vice versa).Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.\t\n            </remarks>\t\n            <unmanaged>HRESULT ID3DX11EffectMatrixVariable::GetMatrixTranspose([Out] SHARPDX_MATRIX* pData)</unmanaged>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectMatrixVariable.GetMatrixTranspose\">\n            <summary>\t\n            Transpose and get a floating-point matrix.\t\n            </summary>\t\n            <returns>The transposed matrix.</returns>\t\n            <remarks>\t\n            Transposing a matrix will rearrange the data order from row-column order to column-row order (or vice versa).Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.\t\n            </remarks>\t\n            <unmanaged>HRESULT ID3DX11EffectMatrixVariable::GetMatrixTranspose([Out] SHARPDX_MATRIX* pData)</unmanaged>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectMatrixVariable.GetMatrixTransposeArray``1(System.Int32)\">\n            <summary>\t\n            Transpose and get an array of floating-point matrices.\t\n            </summary>\t\n            <remarks>\t\n             Transposing a matrix will rearrange the data order from row-column order to column-row order (or vice versa). \t\n            </remarks>\t\n            <param name=\"count\"> The number of matrices in the array to get. </param>\n            <returns>Returns an array of transposed <see cref=\"T:SharpDX.Matrix\"/>. </returns>\n            <unmanaged>HRESULT ID3D11EffectMatrixVariable::GetMatrixTransposeArray([Out, Buffer] float* pData,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectMatrixVariable.GetMatrixTransposeArray``1(System.Int32,System.Int32)\">\n            <summary>\t\n            Transpose and get an array of floating-point matrices.\t\n            </summary>\t\n            <remarks>\t\n             Transposing a matrix will rearrange the data order from row-column order to column-row order (or vice versa). \t\n            </remarks>\t\n            <param name=\"offset\"> The offset (in number of matrices) between the start of the array and the first matrix to get. </param>\n            <param name=\"count\"> The number of matrices in the array to get. </param>\n            <returns>Returns an array of transposed <see cref=\"T:SharpDX.Matrix\"/>. </returns>\n            <unmanaged>HRESULT ID3D11EffectMatrixVariable::GetMatrixTransposeArray([Out, Buffer] float* pData,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectMatrixVariable.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D11.EffectMatrixVariable\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectMatrixVariable.op_Explicit(System.IntPtr)~SharpDX.Direct3D11.EffectMatrixVariable\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D11.EffectMatrixVariable\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectMatrixVariable.SetMatrix(SharpDX.Matrix@)\">\n            <summary>\t\n            <p>Set a floating-point matrix.</p>\t\n            </summary>\t\n            <param name=\"dataRef\"><dd>  <p>A reference to the first element in the matrix.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectMatrixVariable::SetMatrix']/*\"/>\t\n            <msdn-id>ff476702</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectMatrixVariable::SetMatrix([In] const SHARPDX_MATRIX* pData)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectMatrixVariable::SetMatrix</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectMatrixVariable.GetMatrix(SharpDX.Matrix@)\">\n            <summary>\t\n            <p>Get a matrix.</p>\t\n            </summary>\t\n            <param name=\"dataRef\"><dd>  <p>A reference to the first element in a matrix.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectMatrixVariable::GetMatrix']/*\"/>\t\n            <msdn-id>ff476698</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectMatrixVariable::GetMatrix([Out] SHARPDX_MATRIX* pData)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectMatrixVariable::GetMatrix</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectMatrixVariable.SetMatrixArray(SharpDX.Matrix[],System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Set an array of floating-point matrices.</p>\t\n            </summary>\t\n            <param name=\"dataRef\"><dd>  <p>A reference to the first matrix.</p> </dd></param>\t\n            <param name=\"offset\"><dd>  <p>The number of matrix elements to skip from the start of the array.</p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>The number of elements to set.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectMatrixVariable::SetMatrixArray']/*\"/>\t\n            <msdn-id>ff476703</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectMatrixVariable::SetMatrixArray([In, Buffer] const SHARPDX_MATRIX* pData,[In] unsigned int Offset,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectMatrixVariable::SetMatrixArray</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectMatrixVariable.GetMatrixArray(SharpDX.Matrix[],System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Get an array of matrices.</p>\t\n            </summary>\t\n            <param name=\"dataRef\"><dd>  <p>A reference to the first element of the first matrix in an array of matrices.</p> </dd></param>\t\n            <param name=\"offset\"><dd>  <p>The offset (in number of matrices) between the start of the array and the first matrix returned.</p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>The number of matrices in the returned array.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectMatrixVariable::GetMatrixArray']/*\"/>\t\n            <msdn-id>ff476699</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectMatrixVariable::GetMatrixArray([Out, Buffer] SHARPDX_MATRIX* pData,[In] unsigned int Offset,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectMatrixVariable::GetMatrixArray</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectMatrixVariable.SetMatrixTranspose(SharpDX.Matrix@)\">\n            <summary>\t\n            <p>Transpose and set a floating-point matrix.</p>\t\n            </summary>\t\n            <param name=\"dataRef\"><dd>  <p>A reference to the first element of a matrix.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>Transposing a matrix will rearrange the data order from row-column order to column-row order (or vice versa).</p><p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectMatrixVariable::SetMatrixTranspose']/*\"/>\t\n            <msdn-id>ff476704</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectMatrixVariable::SetMatrixTranspose([In] const SHARPDX_MATRIX* pData)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectMatrixVariable::SetMatrixTranspose</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectMatrixVariable.GetMatrixTranspose(SharpDX.Matrix@)\">\n            <summary>\t\n            <p>Transpose and get a floating-point matrix.</p>\t\n            </summary>\t\n            <param name=\"dataRef\"><dd>  <p>A reference to the first element of a transposed matrix.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>Transposing a matrix will rearrange the data order from row-column order to column-row order (or vice versa).</p><p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectMatrixVariable::GetMatrixTranspose']/*\"/>\t\n            <msdn-id>ff476700</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectMatrixVariable::GetMatrixTranspose([Out] SHARPDX_MATRIX* pData)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectMatrixVariable::GetMatrixTranspose</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectMatrixVariable.SetMatrixTransposeArray(SharpDX.Matrix[],System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Transpose and set an array of floating-point matrices.</p>\t\n            </summary>\t\n            <param name=\"dataRef\"><dd>  <p>A reference to an array of matrices.</p> </dd></param>\t\n            <param name=\"offset\"><dd>  <p>The offset (in number of matrices) between the start of the array and the first matrix to set.</p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>The number of matrices in the array to set.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>Transposing a matrix will rearrange the data order from row-column order to column-row order (or vice versa).</p><p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectMatrixVariable::SetMatrixTransposeArray']/*\"/>\t\n            <msdn-id>ff476705</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectMatrixVariable::SetMatrixTransposeArray([In, Buffer] const SHARPDX_MATRIX* pData,[In] unsigned int Offset,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectMatrixVariable::SetMatrixTransposeArray</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectMatrixVariable.GetMatrixTransposeArray(SharpDX.Matrix[],System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Transpose and get an array of floating-point matrices.</p>\t\n            </summary>\t\n            <param name=\"dataRef\"><dd>  <p>A reference to the first element of an array of tranposed matrices.</p> </dd></param>\t\n            <param name=\"offset\"><dd>  <p>The offset (in number of matrices) between the start of the array and the first matrix to get.</p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>The number of matrices in the array to get.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>Transposing a matrix will rearrange the data order from row-column order to column-row order (or vice versa).</p><p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectMatrixVariable::GetMatrixTransposeArray']/*\"/>\t\n            <msdn-id>ff476701</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectMatrixVariable::GetMatrixTransposeArray([Out, Buffer] SHARPDX_MATRIX* pData,[In] unsigned int Offset,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectMatrixVariable::GetMatrixTransposeArray</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.EffectPass\">\n            <summary>\t\n            <p>An <strong><see cref=\"T:SharpDX.Direct3D11.EffectPass\"/></strong> interface encapsulates state assignments within a technique.</p><p>The lifetime of an <strong><see cref=\"T:SharpDX.Direct3D11.EffectPass\"/></strong> object is equal to the lifetime of its parent <strong><see cref=\"T:SharpDX.Direct3D11.Effect\"/></strong> object.</p><ul> <li>Methods</li> </ul>Methods<p>The <strong><see cref=\"T:SharpDX.Direct3D11.EffectPass\"/></strong> interface has the following methods.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>A pass is a block of code that sets render-state objects and shaders. A pass is declared within a technique.</p><p>To get an effect-pass interface, call a method like <strong><see cref=\"M:SharpDX.Direct3D11.EffectTechnique.GetPassByName(System.String)\"/></strong>.</p><p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectPass']/*\"/>\t\n            <msdn-id>ff476706</msdn-id>\t\n            <unmanaged>ID3DX11EffectPass</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectPass</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectPass.Apply(SharpDX.Direct3D11.DeviceContext)\">\n            <summary>\t\n            Set the state contained in a pass to the device.\t\n            </summary>\t\n            <returns>Returns one of the following {{Direct3D 10 Return Codes}}.</returns>\n            <unmanaged>HRESULT Apply([None] UINT Flags)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectPass.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D11.EffectPass\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectPass.op_Explicit(System.IntPtr)~SharpDX.Direct3D11.EffectPass\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D11.EffectPass\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectPass.IsValid_\">\n            <summary>\t\n            <p>Test a pass to see if it contains valid syntax.</p>\t\n            </summary>\t\n            <returns><p><strong>TRUE</strong> if the code syntax is valid; otherwise <strong><see cref=\"F:SharpDX.Result.False\"/></strong>.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectPass::IsValid']/*\"/>\t\n            <msdn-id>ff476718</msdn-id>\t\n            <unmanaged>BOOL ID3DX11EffectPass::IsValid()</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectPass::IsValid</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectPass.GetDescription(SharpDX.Direct3D11.EffectPassDescription@)\">\n            <summary>\t\n            <p>Get a pass description.</p>\t\n            </summary>\t\n            <param name=\"descRef\"><dd>  <p>A reference to a pass description (see <strong><see cref=\"T:SharpDX.Direct3D11.EffectPassDescription\"/></strong>).</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>A pass is a block of code that sets render state and shaders (which in turn sets constant buffers, samplers and textures).  An effect technique contains one or more passes.</p><p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectPass::GetDesc']/*\"/>\t\n            <msdn-id>ff476712</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectPass::GetDesc([Out] D3DX11_PASS_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectPass::GetDesc</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectPass.GetVertexShaderDescription(SharpDX.Direct3D11.EffectPassShaderDescription@)\">\n            <summary>\t\n            <p>Get a vertex-shader description.</p>\t\n            </summary>\t\n            <param name=\"descRef\"><dd>  <p>A reference to a vertex-shader description (see <strong><see cref=\"T:SharpDX.Direct3D11.EffectPassShaderDescription\"/></strong>).</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>An effect pass can contain render state assignments and shader object assignments.</p><p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectPass::GetVertexShaderDesc']/*\"/>\t\n            <msdn-id>ff476717</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectPass::GetVertexShaderDesc([Out] D3DX11_PASS_SHADER_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectPass::GetVertexShaderDesc</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectPass.GetGeometryShaderDescription(SharpDX.Direct3D11.EffectPassShaderDescription@)\">\n            <summary>\t\n            <p>Get a geometry-shader description.</p>\t\n            </summary>\t\n            <param name=\"descRef\"><dd>  <p>A reference to a geometry-shader description (see <strong><see cref=\"T:SharpDX.Direct3D11.EffectPassShaderDescription\"/></strong>).</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>An effect pass can contain render state assignments and shader object assignments.</p><p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectPass::GetGeometryShaderDesc']/*\"/>\t\n            <msdn-id>ff476714</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectPass::GetGeometryShaderDesc([Out] D3DX11_PASS_SHADER_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectPass::GetGeometryShaderDesc</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectPass.GetPixelShaderDescription(SharpDX.Direct3D11.EffectPassShaderDescription@)\">\n            <summary>\t\n            <p>Get a pixel-shader description.</p>\t\n            </summary>\t\n            <param name=\"descRef\"><dd>  <p>A reference to a pixel-shader description (see <strong><see cref=\"T:SharpDX.Direct3D11.EffectPassShaderDescription\"/></strong>).</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>An effect pass can contain render state assignments and shader object assignments.</p><p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectPass::GetPixelShaderDesc']/*\"/>\t\n            <msdn-id>ff476716</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectPass::GetPixelShaderDesc([Out] D3DX11_PASS_SHADER_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectPass::GetPixelShaderDesc</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectPass.GetHullShaderDescription(SharpDX.Direct3D11.EffectPassShaderDescription@)\">\n            <summary>\t\n            <p>Get hull-shader description.</p>\t\n            </summary>\t\n            <param name=\"descRef\"><dd>  <p>A reference to a hull-shader description (see <strong><see cref=\"T:SharpDX.Direct3D11.EffectPassShaderDescription\"/></strong>).</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectPass::GetHullShaderDesc']/*\"/>\t\n            <msdn-id>ff476715</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectPass::GetHullShaderDesc([Out] D3DX11_PASS_SHADER_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectPass::GetHullShaderDesc</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectPass.GetDomainShaderDescription(SharpDX.Direct3D11.EffectPassShaderDescription@)\">\n            <summary>\t\n            <p>Get a domain-shader description.</p>\t\n            </summary>\t\n            <param name=\"descRef\"><dd>  <p>A reference to a domain-shader description (see <strong><see cref=\"T:SharpDX.Direct3D11.EffectPassShaderDescription\"/></strong>).</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectPass::GetDomainShaderDesc']/*\"/>\t\n            <msdn-id>ff476713</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectPass::GetDomainShaderDesc([Out] D3DX11_PASS_SHADER_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectPass::GetDomainShaderDesc</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectPass.GetComputeShaderDescription(SharpDX.Direct3D11.EffectPassShaderDescription@)\">\n            <summary>\t\n            <p>Get a compute-shader description.</p>\t\n            </summary>\t\n            <param name=\"descRef\"><dd>  <p>A reference to a compute-shader description (see <strong><see cref=\"T:SharpDX.Direct3D11.EffectPassShaderDescription\"/></strong>).</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectPass::GetComputeShaderDesc']/*\"/>\t\n            <msdn-id>ff476711</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectPass::GetComputeShaderDesc([Out] D3DX11_PASS_SHADER_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectPass::GetComputeShaderDesc</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectPass.GetAnnotationByIndex(System.Int32)\">\n            <summary>\t\n            <p>Get an annotation by index.</p>\t\n            </summary>\t\n            <param name=\"index\"><dd>  <p>A zero-based index.</p> </dd></param>\t\n            <returns><p>A reference to an <strong><see cref=\"T:SharpDX.Direct3D11.EffectVariable\"/></strong>.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectPass::GetAnnotationByIndex']/*\"/>\t\n            <msdn-id>ff476709</msdn-id>\t\n            <unmanaged>ID3DX11EffectVariable* ID3DX11EffectPass::GetAnnotationByIndex([In] unsigned int Index)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectPass::GetAnnotationByIndex</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectPass.GetAnnotationByName(System.String)\">\n            <summary>\t\n            <p>Get an annotation by name.</p>\t\n            </summary>\t\n            <param name=\"name\"><dd>  <p>The name of the annotation.</p> </dd></param>\t\n            <returns><p>A reference to an <strong><see cref=\"T:SharpDX.Direct3D11.EffectVariable\"/></strong>.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectPass::GetAnnotationByName']/*\"/>\t\n            <msdn-id>ff476710</msdn-id>\t\n            <unmanaged>ID3DX11EffectVariable* ID3DX11EffectPass::GetAnnotationByName([In] const char* Name)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectPass::GetAnnotationByName</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectPass.Apply(System.Int32,SharpDX.Direct3D11.DeviceContext)\">\n            <summary>\t\n            <p>Set the state contained in a pass to the device.</p>\t\n            </summary>\t\n            <param name=\"flags\"><dd>  <p>Unused.</p> </dd></param>\t\n            <param name=\"contextRef\"><dd>  <p>The <strong><see cref=\"T:SharpDX.Direct3D11.DeviceContext\"/></strong> to apply the pass to.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectPass::Apply']/*\"/>\t\n            <msdn-id>ff476707</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectPass::Apply([In] unsigned int Flags,[In] ID3D11DeviceContext* pContext)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectPass::Apply</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectPass.ComputeStateBlockMask(SharpDX.Direct3D11.StateBlockMask@)\">\n            <summary>\t\n            <p>Generate a mask for allowing/preventing state changes.</p>\t\n            </summary>\t\n            <param name=\"stateBlockMaskRef\"><dd>  <p>A reference to a state-block mask (see <strong><see cref=\"T:SharpDX.Direct3D11.StateBlockMask\"/></strong>).</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectPass::ComputeStateBlockMask']/*\"/>\t\n            <msdn-id>ff476708</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectPass::ComputeStateBlockMask([In] D3DX11_STATE_BLOCK_MASK* pStateBlockMask)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectPass::ComputeStateBlockMask</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.EffectPass.IsValid\">\n            <summary>\t\n            <p>Test a pass to see if it contains valid syntax.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectPass::IsValid']/*\"/>\t\n            <msdn-id>ff476718</msdn-id>\t\n            <unmanaged>IsValid</unmanaged>\t\n            <unmanaged-short>IsValid</unmanaged-short>\t\n            <unmanaged>BOOL ID3DX11EffectPass::IsValid()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.EffectPass.Description\">\n            <summary>\t\n            <p>Get a pass description.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>A pass is a block of code that sets render state and shaders (which in turn sets constant buffers, samplers and textures).  An effect technique contains one or more passes.</p><p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectPass::GetDesc']/*\"/>\t\n            <msdn-id>ff476712</msdn-id>\t\n            <unmanaged>GetDesc</unmanaged>\t\n            <unmanaged-short>GetDesc</unmanaged-short>\t\n            <unmanaged>HRESULT ID3DX11EffectPass::GetDesc([Out] D3DX11_PASS_DESC* pDesc)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.EffectPass.VertexShaderDescription\">\n            <summary>\t\n            <p>Get a vertex-shader description.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>An effect pass can contain render state assignments and shader object assignments.</p><p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectPass::GetVertexShaderDesc']/*\"/>\t\n            <msdn-id>ff476717</msdn-id>\t\n            <unmanaged>GetVertexShaderDesc</unmanaged>\t\n            <unmanaged-short>GetVertexShaderDesc</unmanaged-short>\t\n            <unmanaged>HRESULT ID3DX11EffectPass::GetVertexShaderDesc([Out] D3DX11_PASS_SHADER_DESC* pDesc)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.EffectPass.GeometryShaderDescription\">\n            <summary>\t\n            <p>Get a geometry-shader description.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>An effect pass can contain render state assignments and shader object assignments.</p><p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectPass::GetGeometryShaderDesc']/*\"/>\t\n            <msdn-id>ff476714</msdn-id>\t\n            <unmanaged>GetGeometryShaderDesc</unmanaged>\t\n            <unmanaged-short>GetGeometryShaderDesc</unmanaged-short>\t\n            <unmanaged>HRESULT ID3DX11EffectPass::GetGeometryShaderDesc([Out] D3DX11_PASS_SHADER_DESC* pDesc)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.EffectPass.PixelShaderDescription\">\n            <summary>\t\n            <p>Get a pixel-shader description.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>An effect pass can contain render state assignments and shader object assignments.</p><p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectPass::GetPixelShaderDesc']/*\"/>\t\n            <msdn-id>ff476716</msdn-id>\t\n            <unmanaged>GetPixelShaderDesc</unmanaged>\t\n            <unmanaged-short>GetPixelShaderDesc</unmanaged-short>\t\n            <unmanaged>HRESULT ID3DX11EffectPass::GetPixelShaderDesc([Out] D3DX11_PASS_SHADER_DESC* pDesc)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.EffectPass.HullShaderDescription\">\n            <summary>\t\n            <p>Get hull-shader description.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectPass::GetHullShaderDesc']/*\"/>\t\n            <msdn-id>ff476715</msdn-id>\t\n            <unmanaged>GetHullShaderDesc</unmanaged>\t\n            <unmanaged-short>GetHullShaderDesc</unmanaged-short>\t\n            <unmanaged>HRESULT ID3DX11EffectPass::GetHullShaderDesc([Out] D3DX11_PASS_SHADER_DESC* pDesc)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.EffectPass.DomainShaderDescription\">\n            <summary>\t\n            <p>Get a domain-shader description.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectPass::GetDomainShaderDesc']/*\"/>\t\n            <msdn-id>ff476713</msdn-id>\t\n            <unmanaged>GetDomainShaderDesc</unmanaged>\t\n            <unmanaged-short>GetDomainShaderDesc</unmanaged-short>\t\n            <unmanaged>HRESULT ID3DX11EffectPass::GetDomainShaderDesc([Out] D3DX11_PASS_SHADER_DESC* pDesc)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.EffectPass.ComputeShaderDescription\">\n            <summary>\t\n            <p>Get a compute-shader description.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectPass::GetComputeShaderDesc']/*\"/>\t\n            <msdn-id>ff476711</msdn-id>\t\n            <unmanaged>GetComputeShaderDesc</unmanaged>\t\n            <unmanaged-short>GetComputeShaderDesc</unmanaged-short>\t\n            <unmanaged>HRESULT ID3DX11EffectPass::GetComputeShaderDesc([Out] D3DX11_PASS_SHADER_DESC* pDesc)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.EffectPassDescription\">\n            <summary>\t\n            <p>Describes an effect pass, which contains pipeline state.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p><see cref=\"T:SharpDX.Direct3D11.EffectPassDescription\"/> is used with <strong><see cref=\"M:SharpDX.Direct3D11.EffectPass.GetDescription(SharpDX.Direct3D11.EffectPassDescription@)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_PASS_DESC']/*\"/>\t\n            <msdn-id>ff476319</msdn-id>\t\n            <unmanaged>D3DX11_PASS_DESC</unmanaged>\t\n            <unmanaged-short>D3DX11_PASS_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.EffectPassDescription.Name\">\n            <summary>\t\n            <dd> <p>Name of this pass (<strong><c>null</c></strong> if not anonymous).</p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_PASS_DESC::Name']/*\"/>\t\n            <msdn-id>ff476319</msdn-id>\t\n            <unmanaged>const char* Name</unmanaged>\t\n            <unmanaged-short>char Name</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.EffectPassDescription.AnnotationCount\">\n            <summary>\t\n            <dd> <p>Number of annotations on this pass.</p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_PASS_DESC::Annotations']/*\"/>\t\n            <msdn-id>ff476319</msdn-id>\t\n            <unmanaged>unsigned int Annotations</unmanaged>\t\n            <unmanaged-short>unsigned int Annotations</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.EffectPassDescription.PIAInputSignature\">\n            <summary>\t\n            <dd> <p>Signature from the vertex shader or geometry shader (if there is no vertex shader) or <strong><c>null</c></strong> if neither exists.</p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_PASS_DESC::pIAInputSignature']/*\"/>\t\n            <msdn-id>ff476319</msdn-id>\t\n            <unmanaged>unsigned char* pIAInputSignature</unmanaged>\t\n            <unmanaged-short>unsigned char pIAInputSignature</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.EffectPassDescription.IAInputSignatureSize\">\n            <summary>\t\n            <dd> <p>Singature size in bytes.</p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_PASS_DESC::IAInputSignatureSize']/*\"/>\t\n            <msdn-id>ff476319</msdn-id>\t\n            <unmanaged>SIZE_T IAInputSignatureSize</unmanaged>\t\n            <unmanaged-short>SIZE_T IAInputSignatureSize</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.EffectPassDescription.StencilReference\">\n            <summary>\t\n            <dd> <p>The stencil-reference value used in the depth-stencil state.</p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_PASS_DESC::StencilRef']/*\"/>\t\n            <msdn-id>ff476319</msdn-id>\t\n            <unmanaged>unsigned int StencilRef</unmanaged>\t\n            <unmanaged-short>unsigned int StencilRef</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.EffectPassDescription.SampleMask\">\n            <summary>\t\n            <dd> <p>The sample mask for the blend state.</p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_PASS_DESC::SampleMask']/*\"/>\t\n            <msdn-id>ff476319</msdn-id>\t\n            <unmanaged>unsigned int SampleMask</unmanaged>\t\n            <unmanaged-short>unsigned int SampleMask</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.EffectPassDescription.BlendFactor\">\n            <summary>\t\n            <dd> <p>The per-component blend factors (RGBA) for the blend state.</p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_PASS_DESC::BlendFactor']/*\"/>\t\n            <msdn-id>ff476319</msdn-id>\t\n            <unmanaged>SHARPDX_COLOR4 BlendFactor</unmanaged>\t\n            <unmanaged-short>SHARPDX_COLOR4 BlendFactor</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.EffectPassDescription.Signature\">\n            <summary>\n            Returns the signature of this Effect pass.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.EffectPassShaderDescription\">\n            <summary>\t\n            <p>Describes an effect pass.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p><see cref=\"T:SharpDX.Direct3D11.EffectPassShaderDescription\"/> is used with <strong><see cref=\"T:SharpDX.Direct3D11.EffectPass\"/></strong> Get*ShaderDesc methods.</p><p>If this is an inline shader assignment, the returned interface will be an anonymous shader variable, which is not retrievable any other way.   It's name in the variable description will be \"$Anonymous\". If there is no assignment of this type in the pass block, pShaderVariable != <strong><c>null</c></strong>,  but pShaderVariable-&gt;IsValid() == <strong><see cref=\"F:SharpDX.Result.False\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_PASS_SHADER_DESC']/*\"/>\t\n            <msdn-id>ff476320</msdn-id>\t\n            <unmanaged>D3DX11_PASS_SHADER_DESC</unmanaged>\t\n            <unmanaged-short>D3DX11_PASS_SHADER_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.EffectPassShaderDescription.VariablePointer\">\n            <summary>\t\n            <dd> <p>The variable that this shader came from.</p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_PASS_SHADER_DESC::pShaderVariable']/*\"/>\t\n            <msdn-id>ff476320</msdn-id>\t\n            <unmanaged>ID3DX11EffectShaderVariable* pShaderVariable</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectShaderVariable pShaderVariable</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.EffectPassShaderDescription.Index\">\n            <summary>\t\n            <dd> <p>The element of pShaderVariable (if an array) or 0 if not applicable.</p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_PASS_SHADER_DESC::ShaderIndex']/*\"/>\t\n            <msdn-id>ff476320</msdn-id>\t\n            <unmanaged>unsigned int ShaderIndex</unmanaged>\t\n            <unmanaged-short>unsigned int ShaderIndex</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.EffectPassShaderDescription.Variable\">\n            <summary>\t\n            A reference to the variable that the shader came from. If it is an inline shader assignment, the returned interface will be an anonymous shader variable, which is not retrievable any other way.  Its name in the variable description will be \"$Anonymous\". If there is no assignment of this type in the pass block, this will point to a shader variable that returns false when IsValid is called. \t\n            </summary>\t\n            <unmanaged>ID3D10EffectShaderVariable* pShaderVariable</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.EffectRasterizerVariable\">\n            <summary>\t\n            <p>A rasterizer-variable interface accesses rasterizer state.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>An <strong><see cref=\"T:SharpDX.Direct3D11.EffectVariable\"/></strong> interface is created when an effect is read into memory.</p><p>Effect variables are saved in memory in the backing store; when a technique is applied, the values in the backing store are copied to the device.  You can use either of these methods to return state.</p><p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectRasterizerVariable']/*\"/>\t\n            <msdn-id>ff476719</msdn-id>\t\n            <unmanaged>ID3DX11EffectRasterizerVariable</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectRasterizerVariable</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectRasterizerVariable.GetRasterizerState\">\n            <summary>\t\n            Get a pointer to a rasterizer interface.\t\n            </summary>\t\n            <returns>Returns a pointer to a rasterizer interface (see <see cref=\"T:SharpDX.Direct3D11.RasterizerState\"/>). </returns>\n            <unmanaged>HRESULT ID3D10EffectRasterizerVariable::GetRasterizerState([None] int Index,[Out] ID3D10RasterizerState** ppRasterizerState)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectRasterizerVariable.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D11.EffectRasterizerVariable\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectRasterizerVariable.op_Explicit(System.IntPtr)~SharpDX.Direct3D11.EffectRasterizerVariable\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D11.EffectRasterizerVariable\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectRasterizerVariable.GetRasterizerState(System.Int32)\">\n            <summary>\t\n            <p>Get a reference to a rasterizer interface.</p>\t\n            </summary>\t\n            <param name=\"index\"><dd>  <p>Index into an array of rasterizer interfaces. If there is only one rasterizer interface, use 0.</p> </dd></param>\t\n            <returns><dd>  <p>The address of a reference to a rasterizer interface (see <strong><see cref=\"T:SharpDX.Direct3D11.RasterizerState\"/></strong>).</p> </dd></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectRasterizerVariable::GetRasterizerState']/*\"/>\t\n            <msdn-id>ff476721</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectRasterizerVariable::GetRasterizerState([In] unsigned int Index,[Out] ID3D11RasterizerState** ppRasterizerState)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectRasterizerVariable::GetRasterizerState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectRasterizerVariable.SetRasterizerState(System.Int32,SharpDX.Direct3D11.RasterizerState)\">\n            <summary>\t\n            <p>Sets the rasterizer state.</p>\t\n            </summary>\t\n            <param name=\"index\"><dd>  <p>Index into an array of rasterizer interfaces. If there is only one rasterizer interface, use 0. </p> </dd></param>\t\n            <param name=\"rasterizerStateRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D11.RasterizerState\"/></strong> interface.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectRasterizerVariable::SetRasterizerState']/*\"/>\t\n            <msdn-id>ff476722</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectRasterizerVariable::SetRasterizerState([In] unsigned int Index,[In] ID3D11RasterizerState* pRasterizerState)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectRasterizerVariable::SetRasterizerState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectRasterizerVariable.UndoSetRasterizerState(System.Int32)\">\n            <summary>\t\n            <p>Reverts a previously set rasterizer state.</p>\t\n            </summary>\t\n            <param name=\"index\"><dd>  <p>Index into an array of rasterizer interfaces. If there is only one rasterizer interface, use 0. </p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectRasterizerVariable::UndoSetRasterizerState']/*\"/>\t\n            <msdn-id>ff476723</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectRasterizerVariable::UndoSetRasterizerState([In] unsigned int Index)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectRasterizerVariable::UndoSetRasterizerState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectRasterizerVariable.GetBackingStore(System.Int32,SharpDX.Direct3D11.RasterizerStateDescription@)\">\n            <summary>\t\n            <p>Get a reference to a variable that contains rasteriser state.</p>\t\n            </summary>\t\n            <param name=\"index\"><dd>  <p>Index into an array of rasteriser-state descriptions. If there is only one rasteriser variable in the effect, use 0.</p> </dd></param>\t\n            <param name=\"rasterizerDescRef\"><dd>  <p>A reference to a rasteriser-state description (see <strong><see cref=\"T:SharpDX.Direct3D11.RasterizerStateDescription\"/></strong>).</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>Effect variables are saved in memory in the backing store; when a technique is applied, the values in the backing store are copied to the device.  Backing store data can used to recreate the variable when necessary.</p><p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectRasterizerVariable::GetBackingStore']/*\"/>\t\n            <msdn-id>ff476720</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectRasterizerVariable::GetBackingStore([In] unsigned int Index,[Out] D3D11_RASTERIZER_DESC* pRasterizerDesc)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectRasterizerVariable::GetBackingStore</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.EffectRenderTargetViewVariable\">\n            <summary>\t\n            <p>A render-target-view interface accesses a render target.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectRenderTargetViewVariable']/*\"/>\t\n            <msdn-id>ff476724</msdn-id>\t\n            <unmanaged>ID3DX11EffectRenderTargetViewVariable</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectRenderTargetViewVariable</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectRenderTargetViewVariable.SetRenderTargetArray(SharpDX.Direct3D11.RenderTargetView[])\">\n            <summary>\t\n            Set an array of render-targets.\t\n            </summary>\t\n            <param name=\"resourcesRef\">Set an array of render-target-view interfaces. See <see cref=\"T:SharpDX.Direct3D11.RenderTargetView\"/>. </param>\n            <returns>Returns one of the following {{Direct3D 10 Return Codes}}. </returns>\n            <unmanaged>HRESULT ID3D10EffectRenderTargetViewVariable::SetRenderTargetArray([In, Buffer] ID3D10RenderTargetView** ppResources,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectRenderTargetViewVariable.SetRenderTargetArray(SharpDX.Direct3D11.RenderTargetView[],System.Int32)\">\n            <summary>\t\n            Set an array of render-targets.\t\n            </summary>\t\n            <param name=\"resourcesRef\">Set an array of render-target-view interfaces. See <see cref=\"T:SharpDX.Direct3D11.RenderTargetView\"/>. </param>\n            <param name=\"offset\">The zero-based array index to store the first interface. </param>\n            <returns>Returns one of the following {{Direct3D 10 Return Codes}}. </returns>\n            <unmanaged>HRESULT ID3D10EffectRenderTargetViewVariable::SetRenderTargetArray([In, Buffer] ID3D10RenderTargetView** ppResources,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectRenderTargetViewVariable.GetRenderTargetArray(System.Int32)\">\n            <summary>\t\n            Get an array of render-targets.\t\n            </summary>\t\n            <param name=\"count\">The number of elements in the array. </param>\n            <returns>Returns an array of <see cref=\"T:SharpDX.Direct3D11.RenderTargetView\"/>. </returns>\n            <unmanaged>HRESULT ID3D10EffectRenderTargetViewVariable::GetRenderTargetArray([Out, Buffer] ID3D10RenderTargetView** ppResources,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectRenderTargetViewVariable.GetRenderTargetArray(System.Int32,System.Int32)\">\n            <summary>\t\n            Get an array of render-targets.\t\n            </summary>\t\n            <param name=\"offset\">The zero-based array index to get the first interface. </param>\n            <param name=\"count\">The number of elements in the array. </param>\n            <returns>Returns an array of <see cref=\"T:SharpDX.Direct3D11.RenderTargetView\"/>. </returns>\n            <unmanaged>HRESULT ID3D10EffectRenderTargetViewVariable::GetRenderTargetArray([Out, Buffer] ID3D10RenderTargetView** ppResources,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectRenderTargetViewVariable.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D11.EffectRenderTargetViewVariable\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectRenderTargetViewVariable.op_Explicit(System.IntPtr)~SharpDX.Direct3D11.EffectRenderTargetViewVariable\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D11.EffectRenderTargetViewVariable\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectRenderTargetViewVariable.SetRenderTarget(SharpDX.Direct3D11.RenderTargetView)\">\n            <summary>\t\n            <p>Set a render-target.</p>\t\n            </summary>\t\n            <param name=\"resourceRef\"><dd>  <p>A reference to a render-target-view interface. See <strong><see cref=\"T:SharpDX.Direct3D11.RenderTargetView\"/></strong>.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectRenderTargetViewVariable::SetRenderTarget']/*\"/>\t\n            <msdn-id>ff476727</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectRenderTargetViewVariable::SetRenderTarget([In] ID3D11RenderTargetView* pResource)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectRenderTargetViewVariable::SetRenderTarget</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectRenderTargetViewVariable.GetRenderTarget\">\n            <summary>\t\n            <p>Get a render-target.</p>\t\n            </summary>\t\n            <returns><dd>  <p>The address of a reference to a render-target-view interface. See <strong><see cref=\"T:SharpDX.Direct3D11.RenderTargetView\"/></strong>.</p> </dd></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectRenderTargetViewVariable::GetRenderTarget']/*\"/>\t\n            <msdn-id>ff476725</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectRenderTargetViewVariable::GetRenderTarget([Out] ID3D11RenderTargetView** ppResource)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectRenderTargetViewVariable::GetRenderTarget</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectRenderTargetViewVariable.SetRenderTargetArray(SharpDX.Direct3D11.RenderTargetView[],System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Set an array of render-targets.</p>\t\n            </summary>\t\n            <param name=\"resourcesOut\"><dd>  <p>Set an array of render-target-view interfaces. See <strong><see cref=\"T:SharpDX.Direct3D11.RenderTargetView\"/></strong>.</p> </dd></param>\t\n            <param name=\"offset\"><dd>  <p>The zero-based array index to store the first interface.</p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>The number of elements in the array.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectRenderTargetViewVariable::SetRenderTargetArray']/*\"/>\t\n            <msdn-id>ff476728</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectRenderTargetViewVariable::SetRenderTargetArray([In, Buffer] ID3D11RenderTargetView** ppResources,[In] unsigned int Offset,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectRenderTargetViewVariable::SetRenderTargetArray</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectRenderTargetViewVariable.SetRenderTargetArray(SharpDX.ComArray{SharpDX.Direct3D11.RenderTargetView},System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Set an array of render-targets.</p>\t\n            </summary>\t\n            <param name=\"resourcesOut\"><dd>  <p>Set an array of render-target-view interfaces. See <strong><see cref=\"T:SharpDX.Direct3D11.RenderTargetView\"/></strong>.</p> </dd></param>\t\n            <param name=\"offset\"><dd>  <p>The zero-based array index to store the first interface.</p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>The number of elements in the array.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectRenderTargetViewVariable::SetRenderTargetArray']/*\"/>\t\n            <msdn-id>ff476728</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectRenderTargetViewVariable::SetRenderTargetArray([In, Buffer] ID3D11RenderTargetView** ppResources,[In] unsigned int Offset,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectRenderTargetViewVariable::SetRenderTargetArray</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectRenderTargetViewVariable.GetRenderTargetArray(SharpDX.Direct3D11.RenderTargetView[],System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Get an array of render-targets.</p>\t\n            </summary>\t\n            <param name=\"resourcesOut\"><dd>  <p>A reference to an array of render-target-view interfaces. See <strong><see cref=\"T:SharpDX.Direct3D11.RenderTargetView\"/></strong>.</p> </dd></param>\t\n            <param name=\"offset\"><dd>  <p>The zero-based array index to get the first interface.</p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>The number of elements in the array.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectRenderTargetViewVariable::GetRenderTargetArray']/*\"/>\t\n            <msdn-id>ff476726</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectRenderTargetViewVariable::GetRenderTargetArray([Out, Buffer] ID3D11RenderTargetView** ppResources,[In] unsigned int Offset,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectRenderTargetViewVariable::GetRenderTargetArray</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.EffectSamplerVariable\">\n            <summary>\t\n            <p>A sampler interface accesses sampler state.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>An <strong><see cref=\"T:SharpDX.Direct3D11.EffectVariable\"/></strong> interface is created when an effect is read into memory.</p><p>Effect variables are saved in memory in the backing store; when a technique is applied, the values in the backing store are copied to the device.  You can use either of these methods to return state.</p><p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectSamplerVariable']/*\"/>\t\n            <msdn-id>ff476729</msdn-id>\t\n            <unmanaged>ID3DX11EffectSamplerVariable</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectSamplerVariable</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectSamplerVariable.GetSampler\">\n            <summary>\t\n            Get a reference to a sampler interface.\t\n            </summary>\t\n            <returns>Returns a reference to a sampler interface (see <see cref=\"T:SharpDX.Direct3D11.SamplerState\"/>).  </returns>\n            <unmanaged>HRESULT ID3D10EffectSamplerVariable::GetSampler([None] int Index,[Out] ID3D10SamplerState** ppSampler)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectSamplerVariable.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D11.EffectSamplerVariable\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectSamplerVariable.op_Explicit(System.IntPtr)~SharpDX.Direct3D11.EffectSamplerVariable\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D11.EffectSamplerVariable\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectSamplerVariable.GetSampler(System.Int32)\">\n            <summary>\t\n            <p>Get a reference to a sampler interface.</p>\t\n            </summary>\t\n            <param name=\"index\"><dd>  <p>Index into an array of sampler interfaces. If there is only one sampler interface, use 0.</p> </dd></param>\t\n            <returns><dd>  <p>The address of a reference to a sampler interface (see <strong><see cref=\"T:SharpDX.Direct3D11.SamplerState\"/></strong>).</p> </dd></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectSamplerVariable::GetSampler']/*\"/>\t\n            <msdn-id>ff476731</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectSamplerVariable::GetSampler([In] unsigned int Index,[Out] ID3D11SamplerState** ppSampler)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectSamplerVariable::GetSampler</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectSamplerVariable.SetSampler(System.Int32,SharpDX.Direct3D11.SamplerState)\">\n            <summary>\t\n            <p>Set sampler state.</p>\t\n            </summary>\t\n            <param name=\"index\"><dd>  <p>Index into an array of sampler interfaces. If there is only one sampler interface, use 0. </p> </dd></param>\t\n            <param name=\"samplerRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D11.SamplerState\"/></strong> interface containing the sampler state.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectSamplerVariable::SetSampler']/*\"/>\t\n            <msdn-id>ff476732</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectSamplerVariable::SetSampler([In] unsigned int Index,[In] ID3D11SamplerState* pSampler)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectSamplerVariable::SetSampler</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectSamplerVariable.UndoSetSampler(System.Int32)\">\n            <summary>\t\n            <p>Revert a previously set sampler state.</p>\t\n            </summary>\t\n            <param name=\"index\"><dd>  <p>Index into an array of sampler interfaces. If there is only one sampler interface, use 0. </p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectSamplerVariable::UndoSetSampler']/*\"/>\t\n            <msdn-id>ff476733</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectSamplerVariable::UndoSetSampler([In] unsigned int Index)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectSamplerVariable::UndoSetSampler</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectSamplerVariable.GetBackingStore(System.Int32,SharpDX.Direct3D11.SamplerStateDescription@)\">\n            <summary>\t\n            <p>Get a reference to a variable that contains sampler state.</p>\t\n            </summary>\t\n            <param name=\"index\"><dd>  <p>Index into an array of sampler descriptions. If there is only one sampler variable in the effect, use 0.</p> </dd></param>\t\n            <param name=\"samplerDescRef\"><dd>  <p>A reference to a sampler description (see <strong><see cref=\"T:SharpDX.Direct3D11.SamplerStateDescription\"/></strong>).</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectSamplerVariable::GetBackingStore']/*\"/>\t\n            <msdn-id>ff476730</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectSamplerVariable::GetBackingStore([In] unsigned int Index,[Out] D3D11_SAMPLER_DESC* pSamplerDesc)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectSamplerVariable::GetBackingStore</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.EffectScalarVariable\">\n            <summary>\t\n            <p>An effect-scalar-variable interface accesses scalar values.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectScalarVariable']/*\"/>\t\n            <msdn-id>ff476734</msdn-id>\t\n            <unmanaged>ID3DX11EffectScalarVariable</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectScalarVariable</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectScalarVariable.Set(System.Single)\">\n            <summary>\t\n            Set a floating-point variable.\t\n            </summary>\t\n            <param name=\"value\">A reference to the variable. </param>\n            <returns>Returns one of the following {{Direct3D 10 Return Codes}}. </returns>\n            <unmanaged>HRESULT ID3D10EffectScalarVariable::SetFloat([None] float Value)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectScalarVariable.Set(System.Single[])\">\n            <summary>\t\n            Set an array of floating-point variables.\t\n            </summary>\t\n            <param name=\"dataRef\">A reference to the start of the data to set. </param>\n            <returns>Returns one of the following {{Direct3D 10 Return Codes}}. </returns>\n            <unmanaged>HRESULT ID3D10EffectScalarVariable::SetFloatArray([In, Buffer] float* pData,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectScalarVariable.Set(System.Single[],System.Int32)\">\n            <summary>\t\n            Set an array of floating-point variables.\t\n            </summary>\t\n            <param name=\"dataRef\">A reference to the start of the data to set. </param>\n            <param name=\"offset\">Must be set to 0; this is reserved for future use.  </param>\n            <returns>Returns one of the following {{Direct3D 10 Return Codes}}. </returns>\n            <unmanaged>HRESULT ID3D10EffectScalarVariable::SetFloatArray([In, Buffer] float* pData,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectScalarVariable.GetFloatArray(System.Int32)\">\n            <summary>\t\n            Get an array of floating-point variables.\t\n            </summary>\t\n            <param name=\"count\">The number of array elements to set. </param>\n            <returns>Returns an array of floats. </returns>\n            <unmanaged>HRESULT ID3D10EffectScalarVariable::GetFloatArray([Out, Buffer] float* pData,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectScalarVariable.GetFloatArray(System.Int32,System.Int32)\">\n            <summary>\t\n            Get an array of floating-point variables.\t\n            </summary>\t\n            <param name=\"offset\">Must be set to 0; this is reserved for future use.  </param>\n            <param name=\"count\">The number of array elements to set. </param>\n            <returns>Returns an array of floats. </returns>\n            <unmanaged>HRESULT ID3D10EffectScalarVariable::GetFloatArray([Out, Buffer] float* pData,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectScalarVariable.Set(System.Int32)\">\n            <summary>\t\n            Set an integer variable.\t\n            </summary>\t\n            <param name=\"value\">A reference to the variable. </param>\n            <returns>Returns one of the following {{Direct3D 10 Return Codes}}. </returns>\n            <unmanaged>HRESULT ID3D10EffectScalarVariable::SetInt([None] int Value)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectScalarVariable.Set(System.Int32[])\">\n            <summary>\t\n            Set an array of integer variables.\t\n            </summary>\t\n            <param name=\"dataRef\">A reference to the start of the data to set. </param>\n            <returns>Returns one of the following {{Direct3D 10 Return Codes}}. </returns>\n            <unmanaged>HRESULT ID3D10EffectScalarVariable::SetIntArray([In, Buffer] int* pData,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectScalarVariable.Set(System.Int32[],System.Int32)\">\n            <summary>\t\n            Set an array of integer variables.\t\n            </summary>\t\n            <param name=\"dataRef\">A reference to the start of the data to set. </param>\n            <param name=\"offset\">Must be set to 0; this is reserved for future use.  </param>\n            <returns>Returns one of the following {{Direct3D 10 Return Codes}}. </returns>\n            <unmanaged>HRESULT ID3D10EffectScalarVariable::SetIntArray([In, Buffer] int* pData,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectScalarVariable.GetIntArray(System.Int32)\">\n            <summary>\t\n            Get an array of integer variables.\t\n            </summary>\t\n            <param name=\"count\">The number of array elements to set. </param>\n            <returns>Returns an array of integer variables. </returns>\n            <unmanaged>HRESULT ID3D10EffectScalarVariable::GetIntArray([Out, Buffer] int* pData,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectScalarVariable.GetIntArray(System.Int32,System.Int32)\">\n            <summary>\t\n            Get an array of integer variables.\t\n            </summary>\t\n            <param name=\"offset\">Must be set to 0; this is reserved for future use.  </param>\n            <param name=\"count\">The number of array elements to set. </param>\n            <returns>Returns an array of integer variables. </returns>\n            <unmanaged>HRESULT ID3D10EffectScalarVariable::GetIntArray([Out, Buffer] int* pData,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectScalarVariable.Set(System.Boolean)\">\n            <summary>\t\n            Set a boolean variable.\t\n            </summary>\t\n            <param name=\"value\">A reference to the variable. </param>\n            <returns>Returns one of the following {{Direct3D 10 Return Codes}}. </returns>\n            <unmanaged>HRESULT ID3D10EffectScalarVariable::SetBool([None] BOOL Value)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectScalarVariable.GetBool\">\n            <summary>\t\n            Get a boolean variable.\t\n            </summary>\t\n            <returns>Returns a boolean. </returns>\n            <unmanaged>HRESULT ID3D10EffectScalarVariable::GetBool([Out] BOOL* pValue)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectScalarVariable.Set(System.Boolean[])\">\n            <summary>\t\n            Set an array of boolean variables.\t\n            </summary>\t\n            <param name=\"dataRef\">A reference to the start of the data to set. </param>\n            <returns>Returns one of the following {{Direct3D 10 Return Codes}}. </returns>\n            <unmanaged>HRESULT ID3D10EffectScalarVariable::SetBoolArray([In, Buffer] BOOL* pData,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectScalarVariable.Set(System.Boolean[],System.Int32)\">\n            <summary>\t\n            Set an array of boolean variables.\t\n            </summary>\t\n            <param name=\"dataRef\">A reference to the start of the data to set. </param>\n            <param name=\"offset\">Must be set to 0; this is reserved for future use.  </param>\n            <returns>Returns one of the following {{Direct3D 10 Return Codes}}. </returns>\n            <unmanaged>HRESULT ID3D10EffectScalarVariable::SetBoolArray([In, Buffer] BOOL* pData,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectScalarVariable.GetBoolArray(System.Int32,System.Int32)\">\n            <summary>\t\n            Get an array of boolean variables.\t\n            </summary>\t\n            <param name=\"offset\">Must be set to 0; this is reserved for future use.  </param>\n            <param name=\"count\">The number of array elements to set. </param>\n            <returns>Returns one of the following {{Direct3D 10 Return Codes}}. </returns>\n            <unmanaged>HRESULT ID3D10EffectScalarVariable::GetBoolArray([Out, Buffer] BOOL* pData,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectScalarVariable.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D11.EffectScalarVariable\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectScalarVariable.op_Explicit(System.IntPtr)~SharpDX.Direct3D11.EffectScalarVariable\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D11.EffectScalarVariable\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectScalarVariable.SetFloat(System.Single)\">\n            <summary>\t\n            <p>Set a floating-point variable.</p>\t\n            </summary>\t\n            <param name=\"value\"><dd>  <p>A reference to the variable.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectScalarVariable::SetFloat']/*\"/>\t\n            <msdn-id>ff476743</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectScalarVariable::SetFloat([In] const float Value)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectScalarVariable::SetFloat</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectScalarVariable.GetFloat\">\n            <summary>\t\n            <p>Get a floating-point variable.</p>\t\n            </summary>\t\n            <returns><dd>  <p>A reference to the variable.</p> </dd></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectScalarVariable::GetFloat']/*\"/>\t\n            <msdn-id>ff476737</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectScalarVariable::GetFloat([Out] float* pValue)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectScalarVariable::GetFloat</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectScalarVariable.SetFloatArray(System.Single[],System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Set an array of floating-point variables.</p>\t\n            </summary>\t\n            <param name=\"dataRef\"><dd>  <p>A reference to the start of the data to set.</p> </dd></param>\t\n            <param name=\"offset\"><dd>  <p>Must be set to 0; this is reserved for future use. </p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>The number of array elements to set.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectScalarVariable::SetFloatArray']/*\"/>\t\n            <msdn-id>ff476744</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectScalarVariable::SetFloatArray([In, Buffer] const float* pData,[In] unsigned int Offset,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectScalarVariable::SetFloatArray</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectScalarVariable.GetFloatArray(System.Single[],System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Get an array of floating-point variables.</p>\t\n            </summary>\t\n            <param name=\"dataRef\"><dd>  <p>A reference to the start of the data to set.</p> </dd></param>\t\n            <param name=\"offset\"><dd>  <p>Must be set to 0; this is reserved for future use. </p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>The number of array elements to set.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectScalarVariable::GetFloatArray']/*\"/>\t\n            <msdn-id>ff476738</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectScalarVariable::GetFloatArray([Out, Buffer] float* pData,[In] unsigned int Offset,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectScalarVariable::GetFloatArray</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectScalarVariable.SetInt(System.Int32)\">\n            <summary>\t\n            <p>Set an integer variable.</p>\t\n            </summary>\t\n            <param name=\"value\"><dd>  <p>A reference to the variable.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectScalarVariable::SetInt']/*\"/>\t\n            <msdn-id>ff476745</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectScalarVariable::SetInt([In] const int Value)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectScalarVariable::SetInt</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectScalarVariable.GetInt\">\n            <summary>\t\n            <p>Get an integer variable.</p>\t\n            </summary>\t\n            <returns><dd>  <p>A reference to the variable.</p> </dd></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectScalarVariable::GetInt']/*\"/>\t\n            <msdn-id>ff476739</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectScalarVariable::GetInt([Out] int* pValue)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectScalarVariable::GetInt</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectScalarVariable.SetIntArray(System.Int32[],System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Set an array of integer variables.</p>\t\n            </summary>\t\n            <param name=\"dataRef\"><dd>  <p>A reference to the start of the data to set.</p> </dd></param>\t\n            <param name=\"offset\"><dd>  <p>Must be set to 0; this is reserved for future use. </p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>The number of array elements to set.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectScalarVariable::SetIntArray']/*\"/>\t\n            <msdn-id>ff476746</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectScalarVariable::SetIntArray([In, Buffer] const int* pData,[In] unsigned int Offset,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectScalarVariable::SetIntArray</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectScalarVariable.GetIntArray(System.Int32[],System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Get an array of integer variables.</p>\t\n            </summary>\t\n            <param name=\"dataRef\"><dd>  <p>A reference to the start of the data to set.</p> </dd></param>\t\n            <param name=\"offset\"><dd>  <p>Must be set to 0; this is reserved for future use. </p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>The number of array elements to set.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectScalarVariable::GetIntArray']/*\"/>\t\n            <msdn-id>ff476740</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectScalarVariable::GetIntArray([Out, Buffer] int* pData,[In] unsigned int Offset,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectScalarVariable::GetIntArray</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectScalarVariable.SetBool(SharpDX.Bool)\">\n            <summary>\t\n            <p>Set a boolean variable.</p>\t\n            </summary>\t\n            <param name=\"value\"><dd>  <p>A reference to the variable.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectScalarVariable::SetBool']/*\"/>\t\n            <msdn-id>ff476741</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectScalarVariable::SetBool([In] const BOOL Value)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectScalarVariable::SetBool</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectScalarVariable.GetBool(SharpDX.Bool@)\">\n            <summary>\t\n            <p>Get a boolean variable.</p>\t\n            </summary>\t\n            <param name=\"valueRef\"><dd>  <p>A reference to the variable.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectScalarVariable::GetBool']/*\"/>\t\n            <msdn-id>ff476735</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectScalarVariable::GetBool([Out] BOOL* pValue)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectScalarVariable::GetBool</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectScalarVariable.SetBoolArray(SharpDX.Bool[],System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Set an array of boolean variables.</p>\t\n            </summary>\t\n            <param name=\"dataRef\"><dd>  <p>A reference to the start of the data to set.</p> </dd></param>\t\n            <param name=\"offset\"><dd>  <p>Must be set to 0; this is reserved for future use. </p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>The number of array elements to set.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectScalarVariable::SetBoolArray']/*\"/>\t\n            <msdn-id>ff476742</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectScalarVariable::SetBoolArray([In, Buffer] const BOOL* pData,[In] unsigned int Offset,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectScalarVariable::SetBoolArray</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectScalarVariable.GetBoolArray(SharpDX.Bool[],System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Get an array of boolean variables.</p>\t\n            </summary>\t\n            <param name=\"dataRef\"><dd>  <p>A reference to the start of the data to set.</p> </dd></param>\t\n            <param name=\"offset\"><dd>  <p>Must be set to 0; this is reserved for future use. </p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>The number of array elements to set.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectScalarVariable::GetBoolArray']/*\"/>\t\n            <msdn-id>ff476736</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectScalarVariable::GetBoolArray([Out, Buffer] BOOL* pData,[In] unsigned int Offset,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectScalarVariable::GetBoolArray</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.EffectShaderDescription\">\n            <summary>\t\n            <p>Describes an effect shader.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p><see cref=\"T:SharpDX.Direct3D11.EffectShaderDescription\"/> is used with <strong><see cref=\"M:SharpDX.Direct3D11.EffectShaderVariable.GetShaderDescription(System.Int32)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_EFFECT_SHADER_DESC']/*\"/>\t\n            <msdn-id>ff476304</msdn-id>\t\n            <unmanaged>D3DX11_EFFECT_SHADER_DESC</unmanaged>\t\n            <unmanaged-short>D3DX11_EFFECT_SHADER_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.EffectShaderDescription.InputSignaturePointer\">\n            <summary>\t\n            <dd> <p>Passed into CreateInputLayout. Only valid on a vertex shader or geometry shader. See <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateInputLayout(SharpDX.Direct3D11.InputElement[],System.Int32,System.IntPtr,SharpDX.PointerSize,SharpDX.Direct3D11.InputLayout)\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_EFFECT_SHADER_DESC::pInputSignature']/*\"/>\t\n            <msdn-id>ff476304</msdn-id>\t\n            <unmanaged>const unsigned char* pInputSignature</unmanaged>\t\n            <unmanaged-short>unsigned char pInputSignature</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.EffectShaderDescription.IsInline\">\n            <summary>\t\n            <dd> <p><strong>TRUE</strong> is the shader is defined inline; otherwise <strong><see cref=\"F:SharpDX.Result.False\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_EFFECT_SHADER_DESC::IsInline']/*\"/>\t\n            <msdn-id>ff476304</msdn-id>\t\n            <unmanaged>BOOL IsInline</unmanaged>\t\n            <unmanaged-short>BOOL IsInline</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.EffectShaderDescription.BytecodePointer\">\n            <summary>\t\n            <dd> <p>Shader bytecode.</p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_EFFECT_SHADER_DESC::pBytecode']/*\"/>\t\n            <msdn-id>ff476304</msdn-id>\t\n            <unmanaged>const unsigned char* pBytecode</unmanaged>\t\n            <unmanaged-short>unsigned char pBytecode</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.EffectShaderDescription.BytecodeLength\">\n            <summary>\t\n            <dd> <p>The length of pBytecode. </p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_EFFECT_SHADER_DESC::BytecodeLength']/*\"/>\t\n            <msdn-id>ff476304</msdn-id>\t\n            <unmanaged>unsigned int BytecodeLength</unmanaged>\t\n            <unmanaged-short>unsigned int BytecodeLength</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.EffectShaderDescription.RasterizedStream\">\n            <summary>\t\n            <dd> <p>Indicates which stream is rasterized.  D3D11 geometry shaders can output up to four streams of data, one of which can be rasterized.</p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_EFFECT_SHADER_DESC::RasterizedStream']/*\"/>\t\n            <msdn-id>ff476304</msdn-id>\t\n            <unmanaged>unsigned int RasterizedStream</unmanaged>\t\n            <unmanaged-short>unsigned int RasterizedStream</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.EffectShaderDescription.InputParameterCount\">\n            <summary>\t\n            <dd> <p>Number of entries in the input signature.</p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_EFFECT_SHADER_DESC::NumInputSignatureEntries']/*\"/>\t\n            <msdn-id>ff476304</msdn-id>\t\n            <unmanaged>unsigned int NumInputSignatureEntries</unmanaged>\t\n            <unmanaged-short>unsigned int NumInputSignatureEntries</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.EffectShaderDescription.OutputParameterCount\">\n            <summary>\t\n            <dd> <p>Number of entries in the output signature.</p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_EFFECT_SHADER_DESC::NumOutputSignatureEntries']/*\"/>\t\n            <msdn-id>ff476304</msdn-id>\t\n            <unmanaged>unsigned int NumOutputSignatureEntries</unmanaged>\t\n            <unmanaged-short>unsigned int NumOutputSignatureEntries</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.EffectShaderDescription.PatchConstantSignatureEntrieCount\">\n            <summary>\t\n            <dd> <p>Number of entries in the patch constant signature.</p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_EFFECT_SHADER_DESC::NumPatchConstantSignatureEntries']/*\"/>\t\n            <msdn-id>ff476304</msdn-id>\t\n            <unmanaged>unsigned int NumPatchConstantSignatureEntries</unmanaged>\t\n            <unmanaged-short>unsigned int NumPatchConstantSignatureEntries</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.EffectShaderDescription.Signature\">\n            <summary>\n            Gets the signature passed into InputLayout. Only valid on a vertex shader or geometry shader.\n            </summary>\n            <value>The signature.</value>\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.EffectShaderDescription.Bytecode\">\n            <summary>\n            Gets the bytecode from the compiled shader.\n            </summary>\n            <value>The bytecode.</value>\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.EffectShaderDescription.SODecls\">\n            <summary>\t\n            <dd> <p>Stream out declaration string (for geometry shader with SO).</p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_EFFECT_SHADER_DESC::SODecls']/*\"/>\t\n            <msdn-id>ff476304</msdn-id>\t\n            <unmanaged>const void* SODecls[4]</unmanaged>\t\n            <unmanaged-short>void SODecls</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.EffectShaderResourceVariable\">\n            <summary>\t\n            <p>A shader-resource interface accesses a shader resource.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectShaderResourceVariable']/*\"/>\t\n            <msdn-id>ff476747</msdn-id>\t\n            <unmanaged>ID3DX11EffectShaderResourceVariable</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectShaderResourceVariable</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectShaderResourceVariable.SetResourceArray(SharpDX.Direct3D11.ShaderResourceView[])\">\n            <summary>\t\n            Set an array of shader resources.\t\n            </summary>\t\n            <param name=\"resourcesRef\">The address of an array of shader-resource-view interfaces. See <see cref=\"T:SharpDX.Direct3D11.ShaderResourceView\"/>. </param>\n            <returns>Returns one of the following {{Direct3D 10 Return Codes}}. </returns>\n            <unmanaged>HRESULT ID3D10EffectShaderResourceVariable::SetResourceArray([None] ID3D10ShaderResourceView** ppResources,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectShaderResourceVariable.SetResourceArray(SharpDX.Direct3D11.ShaderResourceView[],System.Int32)\">\n            <summary>\t\n            Set an array of shader resources.\t\n            </summary>\t\n            <param name=\"resourcesRef\">The address of an array of shader-resource-view interfaces. See <see cref=\"T:SharpDX.Direct3D11.ShaderResourceView\"/>. </param>\n            <param name=\"offset\">The zero-based array index to get the first interface. </param>\n            <returns>Returns one of the following {{Direct3D 10 Return Codes}}. </returns>\n            <unmanaged>HRESULT ID3D10EffectShaderResourceVariable::SetResourceArray([None] ID3D10ShaderResourceView** ppResources,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectShaderResourceVariable.GetResourceArray(System.Int32)\">\n            <summary>\t\n            Get an array of shader resources.\t\n            </summary>\t\n            <param name=\"count\">The number of elements in the array. </param>\n            <returns>Returns an array of shader-resource-view interfaces. See <see cref=\"T:SharpDX.Direct3D11.ShaderResourceView\"/>. </returns>\n            <unmanaged>HRESULT ID3D10EffectShaderResourceVariable::GetResourceArray([Out] ID3D10ShaderResourceView** ppResources,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectShaderResourceVariable.GetResourceArray(System.Int32,System.Int32)\">\n            <summary>\t\n            Get an array of shader resources.\t\n            </summary>\t\n            <param name=\"offset\">The zero-based array index to get the first interface. </param>\n            <param name=\"count\">The number of elements in the array. </param>\n            <returns>Returns an array of shader-resource-view interfaces. See <see cref=\"T:SharpDX.Direct3D11.ShaderResourceView\"/>. </returns>\n            <unmanaged>HRESULT ID3D10EffectShaderResourceVariable::GetResourceArray([Out] ID3D10ShaderResourceView** ppResources,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectShaderResourceVariable.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D11.EffectShaderResourceVariable\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectShaderResourceVariable.op_Explicit(System.IntPtr)~SharpDX.Direct3D11.EffectShaderResourceVariable\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D11.EffectShaderResourceVariable\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectShaderResourceVariable.SetResource(SharpDX.Direct3D11.ShaderResourceView)\">\n            <summary>\t\n            <p>Set a shader resource.</p>\t\n            </summary>\t\n            <param name=\"resourceRef\"><dd>  <p>The address of a reference to a shader-resource-view interface. See <strong><see cref=\"T:SharpDX.Direct3D11.ShaderResourceView\"/></strong>.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectShaderResourceVariable::SetResource']/*\"/>\t\n            <msdn-id>ff476750</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectShaderResourceVariable::SetResource([In] ID3D11ShaderResourceView* pResource)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectShaderResourceVariable::SetResource</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectShaderResourceVariable.GetResource\">\n            <summary>\t\n            <p>Get a shader resource.</p>\t\n            </summary>\t\n            <returns><dd>  <p>The address of a reference to a shader-resource-view interface. See <strong><see cref=\"T:SharpDX.Direct3D11.ShaderResourceView\"/></strong>.</p> </dd></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectShaderResourceVariable::GetResource']/*\"/>\t\n            <msdn-id>ff476748</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectShaderResourceVariable::GetResource([Out] ID3D11ShaderResourceView** ppResource)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectShaderResourceVariable::GetResource</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectShaderResourceVariable.SetResourceArray(SharpDX.Direct3D11.ShaderResourceView[],System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Set an array of shader resources.</p>\t\n            </summary>\t\n            <param name=\"resourcesOut\"><dd>  <p>The address of an array of shader-resource-view interfaces. See <strong><see cref=\"T:SharpDX.Direct3D11.ShaderResourceView\"/></strong>.</p> </dd></param>\t\n            <param name=\"offset\"><dd>  <p>The zero-based array index to get the first interface.</p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>The number of elements in the array.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectShaderResourceVariable::SetResourceArray']/*\"/>\t\n            <msdn-id>ff476751</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectShaderResourceVariable::SetResourceArray([In, Buffer] ID3D11ShaderResourceView** ppResources,[In] unsigned int Offset,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectShaderResourceVariable::SetResourceArray</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectShaderResourceVariable.SetResourceArray(SharpDX.ComArray{SharpDX.Direct3D11.ShaderResourceView},System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Set an array of shader resources.</p>\t\n            </summary>\t\n            <param name=\"resourcesOut\"><dd>  <p>The address of an array of shader-resource-view interfaces. See <strong><see cref=\"T:SharpDX.Direct3D11.ShaderResourceView\"/></strong>.</p> </dd></param>\t\n            <param name=\"offset\"><dd>  <p>The zero-based array index to get the first interface.</p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>The number of elements in the array.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectShaderResourceVariable::SetResourceArray']/*\"/>\t\n            <msdn-id>ff476751</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectShaderResourceVariable::SetResourceArray([In, Buffer] ID3D11ShaderResourceView** ppResources,[In] unsigned int Offset,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectShaderResourceVariable::SetResourceArray</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectShaderResourceVariable.GetResourceArray(SharpDX.Direct3D11.ShaderResourceView[],System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Get an array of shader resources.</p>\t\n            </summary>\t\n            <param name=\"resourcesOut\"><dd>  <p>The address of an array of shader-resource-view interfaces. See <strong><see cref=\"T:SharpDX.Direct3D11.ShaderResourceView\"/></strong>.</p> </dd></param>\t\n            <param name=\"offset\"><dd>  <p>The zero-based array index to get the first interface.</p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>The number of elements in the array.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectShaderResourceVariable::GetResourceArray']/*\"/>\t\n            <msdn-id>ff476749</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectShaderResourceVariable::GetResourceArray([Out, Buffer] ID3D11ShaderResourceView** ppResources,[In] unsigned int Offset,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectShaderResourceVariable::GetResourceArray</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.EffectStringVariable\">\n            <summary>\t\n            <p>A string-variable interface accesses a string variable.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectStringVariable']/*\"/>\t\n            <msdn-id>ff476763</msdn-id>\t\n            <unmanaged>ID3DX11EffectStringVariable</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectStringVariable</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectStringVariable.GetString\">\n            <summary>\t\n            Get the string.\t\n            </summary>\t\n            <returns>Returns a reference to the string.</returns>\n            <unmanaged>HRESULT ID3D10EffectStringVariable::GetString([Out] const char** ppString)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectStringVariable.GetStringArray(System.Int32)\">\n            <summary>\t\n            Get an array of strings.\t\n            </summary>\t\n            <param name=\"count\">The number of strings in the returned array. </param>\n            <returns>Returns a reference to the first string in the array.</returns>\n            <unmanaged>HRESULT ID3D10EffectStringVariable::GetStringArray([Out, Buffer] const char** ppStrings,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectStringVariable.GetStringArray(System.Int32,System.Int32)\">\n            <summary>\t\n            Get an array of strings.\t\n            </summary>\t\n            <param name=\"offset\">The offset (in number of strings) between the start of the array and the first string to get. </param>\n            <param name=\"count\">The number of strings in the returned array. </param>\n            <returns>Returns a reference to the first string in the array.</returns>\n            <unmanaged>HRESULT ID3D10EffectStringVariable::GetStringArray([Out, Buffer] const char** ppStrings,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectStringVariable.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D11.EffectStringVariable\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectStringVariable.op_Explicit(System.IntPtr)~SharpDX.Direct3D11.EffectStringVariable\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D11.EffectStringVariable\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectStringVariable.GetString(System.IntPtr@)\">\n            <summary>\t\n            <p>Get the string.</p>\t\n            </summary>\t\n            <param name=\"stringOut\"><dd>  <p>A reference to the string.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectStringVariable::GetString']/*\"/>\t\n            <msdn-id>ff476764</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectStringVariable::GetString([Out] const void** ppString)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectStringVariable::GetString</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectStringVariable.GetStringArray(System.IntPtr,System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Get an array of strings.</p>\t\n            </summary>\t\n            <param name=\"stringsOut\"><dd>  <p>A reference to the first string in the array.</p> </dd></param>\t\n            <param name=\"offset\"><dd>  <p>The offset (in number of strings) between the start of the array and the first string to get.</p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>The number of strings in the returned array.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectStringVariable::GetStringArray']/*\"/>\t\n            <msdn-id>ff476765</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectStringVariable::GetStringArray([Out, Buffer] const void** ppStrings,[In] unsigned int Offset,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectStringVariable::GetStringArray</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.EffectUnorderedAccessViewVariable\">\n            <summary>\t\n            <p>Accesses an unordered access view.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectUnorderedAccessViewVariable']/*\"/>\t\n            <msdn-id>ff476783</msdn-id>\t\n            <unmanaged>ID3DX11EffectUnorderedAccessViewVariable</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectUnorderedAccessViewVariable</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectUnorderedAccessViewVariable.Set(SharpDX.Direct3D11.UnorderedAccessView[])\">\n            <summary>\n            Sets the specified view.\n            </summary>\n            <param name=\"view\">The view.</param>\n            <returns>A <see cref = \"T:SharpDX.Result\" /> object describing the result of the operation.</returns>\n            <unmanaged>HRESULT ID3DX11EffectUnorderedAccessViewVariable::SetUnorderedAccessViewArray([In, Buffer] ID3D11UnorderedAccessView** ppResources,[In] unsigned int Offset,[In] unsigned int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectUnorderedAccessViewVariable.Set(SharpDX.Direct3D11.UnorderedAccessView[],System.Int32)\">\n            <summary>\n            Sets the specified data ref.\n            </summary>\n            <param name=\"dataRef\">The data ref.</param>\n            <param name=\"offset\">The offset.</param>\n            <returns>A <see cref = \"T:SharpDX.Result\" /> object describing the result of the operation.</returns>\n            <unmanaged>HRESULT ID3DX11EffectUnorderedAccessViewVariable::SetUnorderedAccessViewArray([In, Buffer] ID3D11UnorderedAccessView** ppResources,[In] unsigned int Offset,[In] unsigned int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectUnorderedAccessViewVariable.Set(SharpDX.ComArray{SharpDX.Direct3D11.UnorderedAccessView})\">\n            <summary>\n            Sets the specified data ref.\n            </summary>\n            <param name=\"dataRef\">The data ref.</param>\n            <returns>A <see cref = \"T:SharpDX.Result\" /> object describing the result of the operation.</returns>\n            <unmanaged>HRESULT ID3DX11EffectUnorderedAccessViewVariable::SetUnorderedAccessViewArray([In, Buffer] ID3D11UnorderedAccessView** ppResources,[In] unsigned int Offset,[In] unsigned int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectUnorderedAccessViewVariable.Set(SharpDX.ComArray{SharpDX.Direct3D11.UnorderedAccessView},System.Int32)\">\n            <summary>\n            Sets the specified data ref.\n            </summary>\n            <param name=\"dataRef\">The data ref.</param>\n            <param name=\"offset\">The offset.</param>\n            <returns>A <see cref = \"T:SharpDX.Result\" /> object describing the result of the operation.</returns>\n            <unmanaged>HRESULT ID3DX11EffectUnorderedAccessViewVariable::SetUnorderedAccessViewArray([In, Buffer] ID3D11UnorderedAccessView** ppResources,[In] unsigned int Offset,[In] unsigned int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectUnorderedAccessViewVariable.GetUnorderedAccessViewArray(System.Int32)\">\n            <summary>\n            Gets the unordered access view array.\n            </summary>\n            <param name=\"count\">The count.</param>\n            <returns>A <see cref = \"T:SharpDX.Result\" /> object describing the result of the operation.</returns>\n            <unmanaged>HRESULT ID3DX11EffectUnorderedAccessViewVariable::GetUnorderedAccessViewArray([Out, Buffer] ID3D11UnorderedAccessView** ppResources,[In] unsigned int Offset,[In] unsigned int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectUnorderedAccessViewVariable.GetUnorderedAccessViewArray(System.Int32,System.Int32)\">\n            <summary>\n            Gets the unordered access view array.\n            </summary>\n            <param name=\"offset\">The offset.</param>\n            <param name=\"count\">The count.</param>\n            <returns>A <see cref = \"T:SharpDX.Result\" /> object describing the result of the operation.</returns>\n            <unmanaged>HRESULT ID3DX11EffectUnorderedAccessViewVariable::GetUnorderedAccessViewArray([Out, Buffer] ID3D11UnorderedAccessView** ppResources,[In] unsigned int Offset,[In] unsigned int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectUnorderedAccessViewVariable.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D11.EffectUnorderedAccessViewVariable\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectUnorderedAccessViewVariable.op_Explicit(System.IntPtr)~SharpDX.Direct3D11.EffectUnorderedAccessViewVariable\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D11.EffectUnorderedAccessViewVariable\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectUnorderedAccessViewVariable.Set(SharpDX.Direct3D11.UnorderedAccessView)\">\n            <summary>\t\n            <p>Set an unordered-access-view.</p>\t\n            </summary>\t\n            <param name=\"resourceRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D11.UnorderedAccessView\"/></strong>.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectUnorderedAccessViewVariable::SetUnorderedAccessView']/*\"/>\t\n            <msdn-id>ff476786</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectUnorderedAccessViewVariable::SetUnorderedAccessView([In] ID3D11UnorderedAccessView* pResource)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectUnorderedAccessViewVariable::SetUnorderedAccessView</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectUnorderedAccessViewVariable.GetUnorderedAccessView\">\n            <summary>\t\n            <p>Get an unordered-access-view.</p>\t\n            </summary>\t\n            <returns><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D11.UnorderedAccessView\"/></strong> reference that will be set on return.</p> </dd></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectUnorderedAccessViewVariable::GetUnorderedAccessView']/*\"/>\t\n            <msdn-id>ff476784</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectUnorderedAccessViewVariable::GetUnorderedAccessView([In] ID3D11UnorderedAccessView** ppResource)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectUnorderedAccessViewVariable::GetUnorderedAccessView</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectUnorderedAccessViewVariable.Set(SharpDX.Direct3D11.UnorderedAccessView[],System.Int32,System.Int32)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"resourcesOut\">No documentation.</param>\t\n            <param name=\"offset\">No documentation.</param>\t\n            <param name=\"count\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectUnorderedAccessViewVariable::SetUnorderedAccessViewArray']/*\"/>\t\n            <unmanaged>HRESULT ID3DX11EffectUnorderedAccessViewVariable::SetUnorderedAccessViewArray([In, Buffer] ID3D11UnorderedAccessView** ppResources,[In] unsigned int Offset,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectUnorderedAccessViewVariable::SetUnorderedAccessViewArray</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectUnorderedAccessViewVariable.Set(SharpDX.ComArray{SharpDX.Direct3D11.UnorderedAccessView},System.Int32,System.Int32)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"resourcesOut\">No documentation.</param>\t\n            <param name=\"offset\">No documentation.</param>\t\n            <param name=\"count\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectUnorderedAccessViewVariable::SetUnorderedAccessViewArray']/*\"/>\t\n            <unmanaged>HRESULT ID3DX11EffectUnorderedAccessViewVariable::SetUnorderedAccessViewArray([In, Buffer] ID3D11UnorderedAccessView** ppResources,[In] unsigned int Offset,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectUnorderedAccessViewVariable::SetUnorderedAccessViewArray</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectUnorderedAccessViewVariable.GetUnorderedAccessViewArray(SharpDX.Direct3D11.UnorderedAccessView[],System.Int32,System.Int32)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"resourcesOut\">No documentation.</param>\t\n            <param name=\"offset\">No documentation.</param>\t\n            <param name=\"count\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectUnorderedAccessViewVariable::GetUnorderedAccessViewArray']/*\"/>\t\n            <unmanaged>HRESULT ID3DX11EffectUnorderedAccessViewVariable::GetUnorderedAccessViewArray([Out, Buffer] ID3D11UnorderedAccessView** ppResources,[In] unsigned int Offset,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectUnorderedAccessViewVariable::GetUnorderedAccessViewArray</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.EffectVectorVariable\">\n            <summary>\t\n            <p>A vector-variable interface accesses a four-component vector.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectVectorVariable']/*\"/>\t\n            <msdn-id>ff476817</msdn-id>\t\n            <unmanaged>ID3DX11EffectVectorVariable</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectVectorVariable</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectVectorVariable.GetIntVector\">\n            <summary>\t\n            Get a four-component vector that contains integer data.\t\n            </summary>\t\n            <returns>Returns a four-component vector that contains integer data </returns>\n            <unmanaged>HRESULT ID3D11EffectVectorVariable::GetIntVector([Out] int* pData)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectVectorVariable.GetFloatVector\">\n            <summary>\t\n            Get a four-component vector that contains floating-point data.\t\n            </summary>\t\n            <returns>Returns a four-component vector that contains floating-point data.</returns>\n            <unmanaged>HRESULT ID3D11EffectVectorVariable::GetFloatVector([Out] float* pData)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectVectorVariable.GetBoolVector\">\n            <summary>\t\n            Get a four-component vector that contains boolean data.\t\n            </summary>\t\n            <returns>a four-component vector that contains boolean data. </returns>\n            <unmanaged>HRESULT ID3D11EffectVectorVariable::GetBoolVector([Out, Buffer] BOOL* pData)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectVectorVariable.GetVector``1\">\n            <summary>\t\n            Get a four-component vector.\t\n            </summary>\t\n            <typeparam name=\"T\">Type of the four-component vector</typeparam>\n            <returns>a four-component vector. </returns>\n            <unmanaged>HRESULT ID3D11EffectVectorVariable::GetFloatVector([Out, Buffer] BOOL* pData)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectVectorVariable.Set(SharpDX.Int4[])\">\n            <summary>\t\n            Set an array of four-component vectors that contain integer data.\t\n            </summary>\t\n            <param name=\"array\">A reference to the start of the data to set. </param>\n            <returns>Returns one of the following {{Direct3D 10 Return Codes}}. </returns>\n            <unmanaged>HRESULT ID3D11EffectVectorVariable::SetIntVectorArray([In, Buffer] int* pData,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectVectorVariable.Set(SharpDX.Vector4[])\">\n            <summary>\t\n            Set an array of four-component vectors that contain floating-point data.\t\n            </summary>\t\n            <param name=\"array\">A reference to the start of the data to set. </param>\n            <returns>Returns one of the following {{Direct3D 10 Return Codes}}. </returns>\n            <unmanaged>HRESULT ID3D11EffectVectorVariable::SetFloatVectorArray([In, Buffer] float* pData,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectVectorVariable.Set``1(``0[])\">\n            <summary>\n            Set an array of four-component vectors that contain floating-point data.\n            </summary>\n            <typeparam name=\"T\">Type of the four-component vector</typeparam>\n            <param name=\"array\">A reference to the start of the data to set.</param>\n            <returns>\n            Returns one of the following {{Direct3D 10 Return Codes}}.\n            </returns>\n            <unmanaged>HRESULT ID3D11EffectVectorVariable::SetFloatVectorArray([In, Buffer] float* pData,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectVectorVariable.Set``1(``0)\">\n            <summary>\t\n            Set a x-component vector.\t\n            </summary>\t\n            <param name=\"value\">A reference to the first component. </param>\n            <returns>Returns one of the following {{Direct3D 10 Return Codes}}. </returns>\n            <unmanaged>HRESULT ID3D11EffectVectorVariable::SetFloatVector([In] float* pData)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectVectorVariable.Set``1(``0@)\">\n            <summary>\t\n            Set a x-component vector.\t\n            </summary>\t\n            <param name=\"value\">A reference to the first component. </param>\n            <returns>Returns one of the following {{Direct3D 10 Return Codes}}. </returns>\n            <unmanaged>HRESULT ID3D11EffectVectorVariable::SetFloatVector([In] float* pData)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectVectorVariable.Set(SharpDX.Vector2)\">\n            <summary>\t\n            Set a two-component vector that contains floating-point data.\t\n            </summary>\t\n            <param name=\"value\">A reference to the first component. </param>\n            <returns>Returns one of the following {{Direct3D 10 Return Codes}}. </returns>\n            <unmanaged>HRESULT ID3D11EffectVectorVariable::SetFloatVector([In] float* pData)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectVectorVariable.Set(SharpDX.Vector3)\">\n            <summary>\t\n            Set a three-component vector that contains floating-point data.\t\n            </summary>\t\n            <param name=\"value\">A reference to the first component. </param>\n            <returns>Returns one of the following {{Direct3D 10 Return Codes}}. </returns>\n            <unmanaged>HRESULT ID3D11EffectVectorVariable::SetFloatVector([In] float* pData)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectVectorVariable.Set(SharpDX.Color4)\">\n            <summary>\t\n            Set a four-component color that contains floating-point data.\t\n            </summary>\t\n            <param name=\"value\">A reference to the first component. </param>\n            <returns>Returns one of the following {{Direct3D 10 Return Codes}}. </returns>\n            <unmanaged>HRESULT ID3D11EffectVectorVariable::SetFloatVector([In] float* pData)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectVectorVariable.Set(SharpDX.Color4[])\">\n            <summary>\t\n            Set an array of four-component color that contain floating-point data.\t\n            </summary>\t\n            <param name=\"array\">A reference to the start of the data to set. </param>\n            <returns>Returns one of the following {{Direct3D 10 Return Codes}}. </returns>\n            <unmanaged>HRESULT ID3D11EffectVectorVariable::SetFloatVectorArray([In, Buffer] float* pData,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectVectorVariable.GetIntVectorArray(System.Int32)\">\n            <summary>\t\n            Get an array of four-component vectors that contain integer data.\t\n            </summary>\t\n            <param name=\"count\">The number of array elements to set. </param>\n            <returns>Returns an array of four-component vectors that contain integer data. </returns>\n            <unmanaged>HRESULT ID3D11EffectVectorVariable::GetIntVectorArray([Out, Buffer] int* pData,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectVectorVariable.GetFloatVectorArray(System.Int32)\">\n            <summary>\t\n            Get an array of four-component vectors that contain floating-point data.\t\n            </summary>\t\n            <param name=\"count\">The number of array elements to set. </param>\n            <returns>Returns an array of four-component vectors that contain floating-point data. </returns>\n            <unmanaged>HRESULT ID3D11EffectVectorVariable::GetFloatVectorArray([None] float* pData,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectVectorVariable.GetBoolVectorArray(System.Int32)\">\n            <summary>\t\n            Get an array of four-component vectors that contain boolean data.\t\n            </summary>\t\n            <param name=\"count\">The number of array elements to set. </param>\n            <returns>an array of four-component vectors that contain boolean data.\t </returns>\n            <unmanaged>HRESULT ID3D11EffectVectorVariable::GetBoolVectorArray([Out, Buffer] BOOL* pData,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectVectorVariable.GetVectorArray``1(System.Int32)\">\n            <summary>\t\n            Get an array of four-component vectors that contain boolean data.\t\n            </summary>\t\n            <param name=\"count\">The number of array elements to set. </param>\n            <returns>an array of four-component vectors that contain boolean data.\t </returns>\n            <unmanaged>HRESULT ID3D11EffectVectorVariable::GetBoolVectorArray([Out, Buffer] BOOL* pData,[None] int Offset,[None] int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectVectorVariable.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D11.EffectVectorVariable\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectVectorVariable.op_Explicit(System.IntPtr)~SharpDX.Direct3D11.EffectVectorVariable\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D11.EffectVectorVariable\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectVectorVariable.Set(SharpDX.Bool4)\">\n            <summary>\t\n            <p>Set a four-component vector that contains boolean data.</p>\t\n            </summary>\t\n            <param name=\"dataRef\"><dd>  <p>A reference to the first component.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectVectorVariable::SetBoolVector']/*\"/>\t\n            <msdn-id>ff476824</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectVectorVariable::SetBoolVector([In] const SHARPDX_BOOL4* pData)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectVectorVariable::SetBoolVector</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectVectorVariable.Set(SharpDX.Int4)\">\n            <summary>\t\n            <p>Set a four-component vector that contains integer data.</p>\t\n            </summary>\t\n            <param name=\"dataRef\"><dd>  <p>A reference to the first component.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectVectorVariable::SetIntVector']/*\"/>\t\n            <msdn-id>ff476828</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectVectorVariable::SetIntVector([In] const SHARPDX_INT4* pData)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectVectorVariable::SetIntVector</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectVectorVariable.Set(System.Single)\">\n            <summary>\t\n            <p>Set a four-component vector that contains floating-point data.</p>\t\n            </summary>\t\n            <param name=\"dataRef\"><dd>  <p>A reference to the first component.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectVectorVariable::SetFloatVector']/*\"/>\t\n            <msdn-id>ff476826</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectVectorVariable::SetFloatVector([In] const float* pData)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectVectorVariable::SetFloatVector</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectVectorVariable.GetBoolVector(SharpDX.Bool4@)\">\n            <summary>\t\n            <p>Get a four-component vector that contains boolean data.</p>\t\n            </summary>\t\n            <param name=\"dataRef\"><dd>  <p>A reference to the first component.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectVectorVariable::GetBoolVector']/*\"/>\t\n            <msdn-id>ff476818</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectVectorVariable::GetBoolVector([Out] SHARPDX_BOOL4* pData)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectVectorVariable::GetBoolVector</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectVectorVariable.GetIntVector(SharpDX.Int4@)\">\n            <summary>\t\n            <p>Get a four-component vector that contains integer data.</p>\t\n            </summary>\t\n            <param name=\"dataRef\"><dd>  <p>A reference to the first component.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectVectorVariable::GetIntVector']/*\"/>\t\n            <msdn-id>ff476822</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectVectorVariable::GetIntVector([Out] SHARPDX_INT4* pData)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectVectorVariable::GetIntVector</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectVectorVariable.GetFloatVector(SharpDX.Vector4@)\">\n            <summary>\t\n            <p>Get a four-component vector that contains floating-point data.</p>\t\n            </summary>\t\n            <param name=\"dataRef\"><dd>  <p>A reference to the first component.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectVectorVariable::GetFloatVector']/*\"/>\t\n            <msdn-id>ff476820</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectVectorVariable::GetFloatVector([Out] SHARPDX_VECTOR4* pData)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectVectorVariable::GetFloatVector</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectVectorVariable.Set(SharpDX.Bool4[],System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Set an array of four-component vectors that contain boolean data.</p>\t\n            </summary>\t\n            <param name=\"dataRef\"><dd>  <p>A reference to the start of the data to set.</p> </dd></param>\t\n            <param name=\"offset\"><dd>  <p>Must be set to 0; this is reserved for future use. </p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>The number of array elements to set.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectVectorVariable::SetBoolVectorArray']/*\"/>\t\n            <msdn-id>ff476825</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectVectorVariable::SetBoolVectorArray([In, Buffer] const SHARPDX_BOOL4* pData,[In] unsigned int Offset,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectVectorVariable::SetBoolVectorArray</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectVectorVariable.Set(SharpDX.Int4[],System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Set an array of four-component vectors that contain integer data.</p>\t\n            </summary>\t\n            <param name=\"dataRef\"><dd>  <p>A reference to the start of the data to set.</p> </dd></param>\t\n            <param name=\"offset\"><dd>  <p>Must be set to 0; this is reserved for future use. </p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>The number of array elements to set.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectVectorVariable::SetIntVectorArray']/*\"/>\t\n            <msdn-id>ff476829</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectVectorVariable::SetIntVectorArray([In, Buffer] const SHARPDX_INT4* pData,[In] unsigned int Offset,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectVectorVariable::SetIntVectorArray</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectVectorVariable.Set(SharpDX.Vector4[],System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Set an array of four-component vectors that contain floating-point data.</p>\t\n            </summary>\t\n            <param name=\"dataRef\"><dd>  <p>A reference to the start of the data to set.</p> </dd></param>\t\n            <param name=\"offset\"><dd>  <p>Must be set to 0; this is reserved for future use. </p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>The number of array elements to set.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectVectorVariable::SetFloatVectorArray']/*\"/>\t\n            <msdn-id>ff476827</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectVectorVariable::SetFloatVectorArray([In, Buffer] const SHARPDX_VECTOR4* pData,[In] unsigned int Offset,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectVectorVariable::SetFloatVectorArray</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectVectorVariable.GetBoolVectorArray(SharpDX.Bool4[],System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Get an array of four-component vectors that contain boolean data.</p>\t\n            </summary>\t\n            <param name=\"dataRef\"><dd>  <p>A reference to the start of the data to set.</p> </dd></param>\t\n            <param name=\"offset\"><dd>  <p>Must be set to 0; this is reserved for future use. </p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>The number of array elements to set.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectVectorVariable::GetBoolVectorArray']/*\"/>\t\n            <msdn-id>ff476819</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectVectorVariable::GetBoolVectorArray([Out, Buffer] SHARPDX_BOOL4* pData,[In] unsigned int Offset,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectVectorVariable::GetBoolVectorArray</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectVectorVariable.GetIntVectorArray(SharpDX.Int4[],System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Get an array of four-component vectors that contain integer data.</p>\t\n            </summary>\t\n            <param name=\"dataRef\"><dd>  <p>A reference to the start of the data to set.</p> </dd></param>\t\n            <param name=\"offset\"><dd>  <p>Must be set to 0; this is reserved for future use. </p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>The number of array elements to set.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectVectorVariable::GetIntVectorArray']/*\"/>\t\n            <msdn-id>ff476823</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectVectorVariable::GetIntVectorArray([Out, Buffer] SHARPDX_INT4* pData,[In] unsigned int Offset,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectVectorVariable::GetIntVectorArray</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectVectorVariable.GetFloatVectorArray(SharpDX.Vector4[],System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Get an array of four-component vectors that contain floating-point data.</p>\t\n            </summary>\t\n            <param name=\"dataRef\"><dd>  <p>A reference to the start of the data to set.</p> </dd></param>\t\n            <param name=\"offset\"><dd>  <p>Must be set to 0; this is reserved for future use. </p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>The number of array elements to set.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectVectorVariable::GetFloatVectorArray']/*\"/>\t\n            <msdn-id>ff476821</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectVectorVariable::GetFloatVectorArray([Out, Buffer] SHARPDX_VECTOR4* pData,[In] unsigned int Offset,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectVectorVariable::GetFloatVectorArray</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.EffectVariableFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_EFFECT_VARIABLE_FLAGS']/*\"/>\t\n            <unmanaged>D3DX11_EFFECT_VARIABLE_FLAGS</unmanaged>\t\n            <unmanaged-short>D3DX11_EFFECT_VARIABLE_FLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.EffectVariableFlags.Annotation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_EFFECT_VARIABLE_ANNOTATION']/*\"/>\t\n            <unmanaged>D3DX11_EFFECT_VARIABLE_ANNOTATION</unmanaged>\t\n            <unmanaged-short>D3DX11_EFFECT_VARIABLE_ANNOTATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.EffectVariableFlags.ExplicitBindPoint\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_EFFECT_VARIABLE_EXPLICIT_BIND_POINT']/*\"/>\t\n            <unmanaged>D3DX11_EFFECT_VARIABLE_EXPLICIT_BIND_POINT</unmanaged>\t\n            <unmanaged-short>D3DX11_EFFECT_VARIABLE_EXPLICIT_BIND_POINT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.EffectVariableFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.D3DX11Effects\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.Direct3D11.D3DX11Effects']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.D3DX11Effects.DllHandle0_\">\n            <summary>\n            DLLs loaders\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.D3DX11Effects.CreateEffectFromMemory(System.IntPtr,SharpDX.PointerSize,System.Int32,SharpDX.Direct3D11.Device,SharpDX.Direct3D11.Effect)\">\n            <summary>\t\n            <p>Creates an effect from a binary effect or file.</p>\t\n            </summary>\t\n            <param name=\"dataRef\"><dd>  <p>Blob of compiled effect data.</p> </dd></param>\t\n            <param name=\"dataLength\"><dd>  <p>Length of the data blob.</p> </dd></param>\t\n            <param name=\"fXFlags\"><dd>  <p>Compilation flags pertaining to Effect compilation, honored by the Effect compiler.</p> </dd></param>\t\n            <param name=\"deviceRef\"><dd>  <p>Pointer to the <strong><see cref=\"T:SharpDX.Direct3D11.Device\"/></strong> on which to create Effect resources.</p> </dd></param>\t\n            <param name=\"effectOut\"><dd>  <p>Address of the newly created <strong><see cref=\"T:SharpDX.Direct3D11.Effect\"/></strong> interface.</p> </dd></param>\t\n            <returns><p>The return value is one of the values listed in Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11CreateEffectFromMemory']/*\"/>\t\n            <msdn-id>ff476273</msdn-id>\t\n            <unmanaged>HRESULT D3DX11CreateEffectFromMemory([In] const void* pData,[In] SIZE_T DataLength,[In] unsigned int FXFlags,[In] ID3D11Device* pDevice,[Out, Fast] ID3DX11Effect** ppEffect)</unmanaged>\t\n            <unmanaged-short>D3DX11CreateEffectFromMemory</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.EffectClassInstanceVariable\">\n            <summary>\t\n            <p>Accesses a class instance.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectClassInstanceVariable']/*\"/>\t\n            <msdn-id>ff476658</msdn-id>\t\n            <unmanaged>ID3DX11EffectClassInstanceVariable</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectClassInstanceVariable</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectClassInstanceVariable.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D11.EffectClassInstanceVariable\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectClassInstanceVariable.op_Explicit(System.IntPtr)~SharpDX.Direct3D11.EffectClassInstanceVariable\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D11.EffectClassInstanceVariable\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectClassInstanceVariable.GetClassInstance(SharpDX.Direct3D11.ClassInstance@)\">\n            <summary>\t\n            <p>Gets a class instance.</p>\t\n            </summary>\t\n            <param name=\"classInstanceOut\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D11.ClassInstance\"/></strong> reference that will be set to class instance.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectClassInstanceVariable::GetClassInstance']/*\"/>\t\n            <msdn-id>ff476659</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectClassInstanceVariable::GetClassInstance([In] ID3D11ClassInstance** ppClassInstance)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectClassInstanceVariable::GetClassInstance</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.EffectClassInstanceVariable.ClassInstance\">\n            <summary>\t\n            <p>Gets a class instance.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectClassInstanceVariable::GetClassInstance']/*\"/>\t\n            <msdn-id>ff476659</msdn-id>\t\n            <unmanaged>GetClassInstance</unmanaged>\t\n            <unmanaged-short>GetClassInstance</unmanaged-short>\t\n            <unmanaged>HRESULT ID3DX11EffectClassInstanceVariable::GetClassInstance([In] ID3D11ClassInstance** ppClassInstance)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.EffectConstantBuffer\">\n            <summary>\t\n            <p>A constant-buffer interface accesses constant buffers or texture buffers.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Use constant buffers to store many effect constants; grouping constants into buffers based on their frequency of update.  This allows you to minimize the number of state changes as well as make the fewest API calls to change state.  Both of these factors lead to better performance.</p><p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectConstantBuffer']/*\"/>\t\n            <msdn-id>ff476670</msdn-id>\t\n            <unmanaged>ID3DX11EffectConstantBuffer</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectConstantBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectConstantBuffer.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D11.EffectConstantBuffer\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectConstantBuffer.op_Explicit(System.IntPtr)~SharpDX.Direct3D11.EffectConstantBuffer\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D11.EffectConstantBuffer\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectConstantBuffer.SetConstantBuffer(SharpDX.Direct3D11.Buffer)\">\n            <summary>\t\n            <p>Set a constant-buffer.</p>\t\n            </summary>\t\n            <param name=\"constantBufferRef\"><dd>  <p>A reference to a constant-buffer interface. See <strong><see cref=\"T:SharpDX.Direct3D11.Buffer\"/></strong>.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectConstantBuffer::SetConstantBuffer']/*\"/>\t\n            <msdn-id>ff476673</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectConstantBuffer::SetConstantBuffer([In] ID3D11Buffer* pConstantBuffer)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectConstantBuffer::SetConstantBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectConstantBuffer.UndoSetConstantBuffer\">\n            <summary>\t\n            <p>Reverts a previously set constant buffer.</p>\t\n            </summary>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectConstantBuffer::UndoSetConstantBuffer']/*\"/>\t\n            <msdn-id>ff476675</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectConstantBuffer::UndoSetConstantBuffer()</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectConstantBuffer::UndoSetConstantBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectConstantBuffer.GetConstantBuffer\">\n            <summary>\t\n            <p>Get a constant-buffer.</p>\t\n            </summary>\t\n            <returns><dd>  <p>The address of a reference to a constant-buffer interface. See <strong><see cref=\"T:SharpDX.Direct3D11.Buffer\"/></strong>.</p> </dd></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectConstantBuffer::GetConstantBuffer']/*\"/>\t\n            <msdn-id>ff476671</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectConstantBuffer::GetConstantBuffer([Out] ID3D11Buffer** ppConstantBuffer)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectConstantBuffer::GetConstantBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectConstantBuffer.SetTextureBuffer(SharpDX.Direct3D11.ShaderResourceView)\">\n            <summary>\t\n            <p>Set a texture-buffer.</p>\t\n            </summary>\t\n            <param name=\"textureBufferRef\"><dd>  <p>A reference to a shader-resource-view interface for accessing a texture buffer.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectConstantBuffer::SetTextureBuffer']/*\"/>\t\n            <msdn-id>ff476674</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectConstantBuffer::SetTextureBuffer([In] ID3D11ShaderResourceView* pTextureBuffer)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectConstantBuffer::SetTextureBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectConstantBuffer.UndoSetTextureBuffer\">\n            <summary>\t\n            <p>Reverts a previously set texture buffer.</p>\t\n            </summary>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectConstantBuffer::UndoSetTextureBuffer']/*\"/>\t\n            <msdn-id>ff476676</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectConstantBuffer::UndoSetTextureBuffer()</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectConstantBuffer::UndoSetTextureBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectConstantBuffer.GetTextureBuffer\">\n            <summary>\t\n            <p>Get a texture-buffer.</p>\t\n            </summary>\t\n            <returns><dd>  <p>The address of a reference to a shader-resource-view interface for accessing a texture buffer. See <strong><see cref=\"T:SharpDX.Direct3D11.ShaderResourceView\"/></strong>.</p> </dd></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectConstantBuffer::GetTextureBuffer']/*\"/>\t\n            <msdn-id>ff476672</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectConstantBuffer::GetTextureBuffer([Out] ID3D11ShaderResourceView** ppTextureBuffer)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectConstantBuffer::GetTextureBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.EffectGroup\">\n            <summary>\t\n            <p>The <strong><see cref=\"T:SharpDX.Direct3D11.EffectGroup\"/></strong> interface accesses an Effect group.</p><p>The lifetime of an <strong><see cref=\"T:SharpDX.Direct3D11.EffectGroup\"/></strong> object is equal to the lifetime of its parent <strong><see cref=\"T:SharpDX.Direct3D11.Effect\"/></strong> object.</p><ul> <li>Methods</li> </ul>Methods<p>The <strong><see cref=\"T:SharpDX.Direct3D11.EffectGroup\"/></strong> interface has the following methods.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>To get an <strong><see cref=\"T:SharpDX.Direct3D11.EffectGroup\"/></strong> interface, call a method like <strong><see cref=\"M:SharpDX.Direct3D11.Effect.GetGroupByName(System.String)\"/></strong>.</p><p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectGroup']/*\"/>\t\n            <msdn-id>ff476687</msdn-id>\t\n            <unmanaged>ID3DX11EffectGroup</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectGroup</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectGroup.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D11.EffectGroup\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectGroup.op_Explicit(System.IntPtr)~SharpDX.Direct3D11.EffectGroup\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D11.EffectGroup\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectGroup.IsValid_\">\n            <summary>\t\n            <p>Test an effect to see if it contains valid syntax.</p>\t\n            </summary>\t\n            <returns><p><strong>TRUE</strong> if the code syntax is valid; otherwise <strong><see cref=\"F:SharpDX.Result.False\"/></strong>.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectGroup::IsValid']/*\"/>\t\n            <msdn-id>ff476693</msdn-id>\t\n            <unmanaged>BOOL ID3DX11EffectGroup::IsValid()</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectGroup::IsValid</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectGroup.GetDescription(SharpDX.Direct3D11.EffectGroupDescription@)\">\n            <summary>\t\n            <p>Gets a group description.</p>\t\n            </summary>\t\n            <param name=\"descRef\"><dd>  <p>A reference to a <strong><see cref=\"T:SharpDX.Direct3D11.EffectGroupDescription\"/></strong> structure.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectGroup::GetDesc']/*\"/>\t\n            <msdn-id>ff476690</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectGroup::GetDesc([Out] D3DX11_GROUP_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectGroup::GetDesc</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectGroup.GetAnnotationByIndex(System.Int32)\">\n            <summary>\t\n            <p>Get an annotation by index.</p>\t\n            </summary>\t\n            <param name=\"index\"><dd>  <p>Index of the annotation.</p> </dd></param>\t\n            <returns><p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D11.EffectVariable\"/></strong> interface.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectGroup::GetAnnotationByIndex']/*\"/>\t\n            <msdn-id>ff476688</msdn-id>\t\n            <unmanaged>ID3DX11EffectVariable* ID3DX11EffectGroup::GetAnnotationByIndex([In] unsigned int Index)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectGroup::GetAnnotationByIndex</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectGroup.GetAnnotationByName(System.String)\">\n            <summary>\t\n            <p>Get an annotation by name.</p>\t\n            </summary>\t\n            <param name=\"name\"><dd>  <p>The name of the annotation.</p> </dd></param>\t\n            <returns><p>A reference to an <strong><see cref=\"T:SharpDX.Direct3D11.EffectVariable\"/></strong>. Note that if the annotation is not found the <strong><see cref=\"T:SharpDX.Direct3D11.EffectVariable\"/></strong> returned will be empty. The <strong><see cref=\"M:SharpDX.Direct3D11.EffectVariable.IsValid_\"/></strong> method should be called to determine whether the annotation was found.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectGroup::GetAnnotationByName']/*\"/>\t\n            <msdn-id>ff476689</msdn-id>\t\n            <unmanaged>ID3DX11EffectVariable* ID3DX11EffectGroup::GetAnnotationByName([In] const char* Name)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectGroup::GetAnnotationByName</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectGroup.GetTechniqueByIndex(System.Int32)\">\n            <summary>\t\n            <p>Get a technique by index.</p>\t\n            </summary>\t\n            <param name=\"index\"><dd>  <p>A zero-based index.</p> </dd></param>\t\n            <returns><p>A reference to an <strong><see cref=\"T:SharpDX.Direct3D11.EffectTechnique\"/></strong>.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectGroup::GetTechniqueByIndex']/*\"/>\t\n            <msdn-id>ff476691</msdn-id>\t\n            <unmanaged>ID3DX11EffectTechnique* ID3DX11EffectGroup::GetTechniqueByIndex([In] unsigned int Index)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectGroup::GetTechniqueByIndex</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectGroup.GetTechniqueByName(System.String)\">\n            <summary>\t\n            <p>Get a technique by name.</p>\t\n            </summary>\t\n            <param name=\"name\"><dd>  <p>The name of the technique.</p> </dd></param>\t\n            <returns><p>A reference to an <strong><see cref=\"T:SharpDX.Direct3D11.EffectTechnique\"/></strong>, or <strong><c>null</c></strong> if the technique is not found.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectGroup::GetTechniqueByName']/*\"/>\t\n            <msdn-id>ff476692</msdn-id>\t\n            <unmanaged>ID3DX11EffectTechnique* ID3DX11EffectGroup::GetTechniqueByName([In] const char* Name)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectGroup::GetTechniqueByName</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.EffectGroup.IsValid\">\n            <summary>\t\n            <p>Test an effect to see if it contains valid syntax.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectGroup::IsValid']/*\"/>\t\n            <msdn-id>ff476693</msdn-id>\t\n            <unmanaged>IsValid</unmanaged>\t\n            <unmanaged-short>IsValid</unmanaged-short>\t\n            <unmanaged>BOOL ID3DX11EffectGroup::IsValid()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.EffectGroup.Description\">\n            <summary>\t\n            <p>Gets a group description.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectGroup::GetDesc']/*\"/>\t\n            <msdn-id>ff476690</msdn-id>\t\n            <unmanaged>GetDesc</unmanaged>\t\n            <unmanaged-short>GetDesc</unmanaged-short>\t\n            <unmanaged>HRESULT ID3DX11EffectGroup::GetDesc([Out] D3DX11_GROUP_DESC* pDesc)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.EffectInterfaceVariable\">\n            <summary>\t\n            <p>Accesses an interface variable.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectInterfaceVariable']/*\"/>\t\n            <msdn-id>ff476694</msdn-id>\t\n            <unmanaged>ID3DX11EffectInterfaceVariable</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectInterfaceVariable</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectInterfaceVariable.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D11.EffectInterfaceVariable\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectInterfaceVariable.op_Explicit(System.IntPtr)~SharpDX.Direct3D11.EffectInterfaceVariable\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D11.EffectInterfaceVariable\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectInterfaceVariable.SetClassInstance(SharpDX.Direct3D11.EffectClassInstanceVariable)\">\n            <summary>\t\n            <p>Sets a class instance.</p>\t\n            </summary>\t\n            <param name=\"effectClassInstanceRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D11.EffectClassInstanceVariable\"/></strong> interface.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectInterfaceVariable::SetClassInstance']/*\"/>\t\n            <msdn-id>ff476696</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectInterfaceVariable::SetClassInstance([In] ID3DX11EffectClassInstanceVariable* pEffectClassInstance)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectInterfaceVariable::SetClassInstance</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectInterfaceVariable.GetClassInstance(SharpDX.Direct3D11.EffectClassInstanceVariable@)\">\n            <summary>\t\n            <p>Get a class instance.</p>\t\n            </summary>\t\n            <param name=\"effectClassInstanceOut\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D11.EffectClassInstanceVariable\"/></strong> reference that will be set to the class instance.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectInterfaceVariable::GetClassInstance']/*\"/>\t\n            <msdn-id>ff476695</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectInterfaceVariable::GetClassInstance([In] ID3DX11EffectClassInstanceVariable** ppEffectClassInstance)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectInterfaceVariable::GetClassInstance</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.EffectInterfaceVariable.ClassInstance\">\n            <summary>\t\n            <p>Get or sets a class instance.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectInterfaceVariable::GetClassInstance']/*\"/>\t\n            <msdn-id>ff476695</msdn-id>\t\n            <unmanaged>GetClassInstance / SetClassInstance</unmanaged>\t\n            <unmanaged-short>GetClassInstance</unmanaged-short>\t\n            <unmanaged>HRESULT ID3DX11EffectInterfaceVariable::GetClassInstance([In] ID3DX11EffectClassInstanceVariable** ppEffectClassInstance)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.EffectShaderVariable\">\n            <summary>\t\n            <p>A shader-variable interface accesses a shader variable.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectShaderVariable']/*\"/>\t\n            <msdn-id>ff476752</msdn-id>\t\n            <unmanaged>ID3DX11EffectShaderVariable</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectShaderVariable</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectShaderVariable.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D11.EffectShaderVariable\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectShaderVariable.op_Explicit(System.IntPtr)~SharpDX.Direct3D11.EffectShaderVariable\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D11.EffectShaderVariable\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectShaderVariable.GetShaderDescription(System.Int32)\">\n            <summary>\t\n            <p>Get a shader description.</p>\t\n            </summary>\t\n            <param name=\"shaderIndex\"><dd>  <p>A zero-based index.</p> </dd></param>\t\n            <returns><dd>  <p>A reference to a shader description (see <strong><see cref=\"T:SharpDX.Direct3D11.EffectShaderDescription\"/></strong>).</p> </dd></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectShaderVariable::GetShaderDesc']/*\"/>\t\n            <msdn-id>ff476761</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectShaderVariable::GetShaderDesc([In] unsigned int ShaderIndex,[Out] D3DX11_EFFECT_SHADER_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectShaderVariable::GetShaderDesc</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectShaderVariable.GetVertexShader(System.Int32)\">\n            <summary>\t\n            <p>Get a vertex shader.</p>\t\n            </summary>\t\n            <param name=\"shaderIndex\"><dd>  <p>A zero-based index.</p> </dd></param>\t\n            <returns><dd>  <p>A reference to an <strong><see cref=\"T:SharpDX.Direct3D11.VertexShader\"/></strong> reference that will be set to the vertex shader on return.</p> </dd></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectShaderVariable::GetVertexShader']/*\"/>\t\n            <msdn-id>ff476762</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectShaderVariable::GetVertexShader([In] unsigned int ShaderIndex,[Out] ID3D11VertexShader** ppVS)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectShaderVariable::GetVertexShader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectShaderVariable.GetGeometryShader(System.Int32)\">\n            <summary>\t\n            <p>Get a geometry shader.</p>\t\n            </summary>\t\n            <param name=\"shaderIndex\"><dd>  <p>A zero-based index.</p> </dd></param>\t\n            <returns><dd>  <p>A reference to an <strong><see cref=\"T:SharpDX.Direct3D11.GeometryShader\"/></strong> reference that will be set to the geometry shader on return.</p> </dd></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectShaderVariable::GetGeometryShader']/*\"/>\t\n            <msdn-id>ff476755</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectShaderVariable::GetGeometryShader([In] unsigned int ShaderIndex,[Out] ID3D11GeometryShader** ppGS)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectShaderVariable::GetGeometryShader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectShaderVariable.GetPixelShader(System.Int32)\">\n            <summary>\t\n            <p>Get a pixel shader.</p>\t\n            </summary>\t\n            <param name=\"shaderIndex\"><dd>  <p>A zero-based index.</p> </dd></param>\t\n            <returns><dd>  <p>A reference to an <strong><see cref=\"T:SharpDX.Direct3D11.PixelShader\"/></strong> reference that will be set to the pixel shader on return.</p> </dd></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectShaderVariable::GetPixelShader']/*\"/>\t\n            <msdn-id>ff476760</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectShaderVariable::GetPixelShader([In] unsigned int ShaderIndex,[Out] ID3D11PixelShader** ppPS)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectShaderVariable::GetPixelShader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectShaderVariable.GetHullShader(System.Int32,SharpDX.Direct3D11.HullShader@)\">\n            <summary>\t\n            <p>Get a hull shader.</p>\t\n            </summary>\t\n            <param name=\"shaderIndex\"><dd>  <p>Index of the shader.</p> </dd></param>\t\n            <param name=\"pSOut\"><dd>  <p>A reference to an <strong><see cref=\"T:SharpDX.Direct3D11.HullShader\"/></strong> reference that will be set to the hull shader on return.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectShaderVariable::GetHullShader']/*\"/>\t\n            <msdn-id>ff476756</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectShaderVariable::GetHullShader([In] unsigned int ShaderIndex,[In] ID3D11HullShader** ppPS)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectShaderVariable::GetHullShader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectShaderVariable.GetDomainShader(System.Int32,SharpDX.Direct3D11.DomainShader@)\">\n            <summary>\t\n            <p>Get a domain shader.</p>\t\n            </summary>\t\n            <param name=\"shaderIndex\"><dd>  <p>Index of the domain shader.</p> </dd></param>\t\n            <param name=\"pSOut\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D11.DomainShader\"/></strong> reference that will be set to the domain shader on return.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectShaderVariable::GetDomainShader']/*\"/>\t\n            <msdn-id>ff476754</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectShaderVariable::GetDomainShader([In] unsigned int ShaderIndex,[In] ID3D11DomainShader** ppPS)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectShaderVariable::GetDomainShader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectShaderVariable.GetComputeShader(System.Int32,SharpDX.Direct3D11.ComputeShader@)\">\n            <summary>\t\n            <p>Get a compute shader.</p>\t\n            </summary>\t\n            <param name=\"shaderIndex\"><dd>  <p>Index of the compute shader.</p> </dd></param>\t\n            <param name=\"pSOut\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D11.ComputeShader\"/></strong> reference that will be set to the compute shader on return.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectShaderVariable::GetComputeShader']/*\"/>\t\n            <msdn-id>ff476753</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectShaderVariable::GetComputeShader([In] unsigned int ShaderIndex,[In] ID3D11ComputeShader** ppPS)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectShaderVariable::GetComputeShader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectShaderVariable.GetInputSignatureElementDescription(System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Get an input-signature description.</p>\t\n            </summary>\t\n            <param name=\"shaderIndex\"><dd>  <p>A zero-based shader index.</p> </dd></param>\t\n            <param name=\"element\"><dd>  <p>A zero-based shader-element index.</p> </dd></param>\t\n            <returns><dd>  <p>A reference to a parameter description (see <strong><see cref=\"T:SharpDX.D3DCompiler.ShaderParameterDescription\"/></strong>).</p> </dd></returns>\t\n            <remarks>\t\n            <p>An effect contains one or more shaders; each shader has an input and output signature; each signature contains one or more elements (or parameters).  The shader index identifies the shader and the element index identifies the element (or parameter) in the shader signature.</p><p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectShaderVariable::GetInputSignatureElementDesc']/*\"/>\t\n            <msdn-id>ff476757</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectShaderVariable::GetInputSignatureElementDesc([In] unsigned int ShaderIndex,[In] unsigned int Element,[Out] D3D11_SIGNATURE_PARAMETER_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectShaderVariable::GetInputSignatureElementDesc</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectShaderVariable.GetOutputSignatureElementDescription(System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Get an output-signature description.</p>\t\n            </summary>\t\n            <param name=\"shaderIndex\"><dd>  <p>A zero-based shader index.</p> </dd></param>\t\n            <param name=\"element\"><dd>  <p>A zero-based element index.</p> </dd></param>\t\n            <returns><dd>  <p>A reference to a parameter description (see <strong><see cref=\"T:SharpDX.D3DCompiler.ShaderParameterDescription\"/></strong>).</p> </dd></returns>\t\n            <remarks>\t\n            <p>An effect contains one or more shaders; each shader has an input and output signature; each signature contains one or more elements (or parameters).  The shader index identifies the shader and the element index identifies the element (or parameter) in the shader signature.</p><p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectShaderVariable::GetOutputSignatureElementDesc']/*\"/>\t\n            <msdn-id>ff476758</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectShaderVariable::GetOutputSignatureElementDesc([In] unsigned int ShaderIndex,[In] unsigned int Element,[Out] D3D11_SIGNATURE_PARAMETER_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectShaderVariable::GetOutputSignatureElementDesc</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectShaderVariable.GetPatchConstantSignatureElementDescription(System.Int32,System.Int32,SharpDX.D3DCompiler.ShaderParameterDescription@)\">\n            <summary>\t\n            <p>Get a patch constant signature description.</p>\t\n            </summary>\t\n            <param name=\"shaderIndex\"><dd>  <p>A zero-based shader index. </p> </dd></param>\t\n            <param name=\"element\"><dd>  <p>A zero-based element index. </p> </dd></param>\t\n            <param name=\"descRef\"><dd>  <p>A reference to a parameter description (see <strong><see cref=\"T:SharpDX.D3DCompiler.ShaderParameterDescription\"/></strong>).</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectShaderVariable::GetPatchConstantSignatureElementDesc']/*\"/>\t\n            <msdn-id>ff476759</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectShaderVariable::GetPatchConstantSignatureElementDesc([In] unsigned int ShaderIndex,[In] unsigned int Element,[In] D3D11_SIGNATURE_PARAMETER_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectShaderVariable::GetPatchConstantSignatureElementDesc</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.EffectTechnique\">\n            <summary>\t\n            <p>Compute a state-block mask to allow/prevent state changes.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectTechnique']/*\"/>\t\n            <msdn-id>ff476767</msdn-id>\t\n            <unmanaged>ID3DX11EffectTechnique</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectTechnique</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectTechnique.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D11.EffectTechnique\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectTechnique.op_Explicit(System.IntPtr)~SharpDX.Direct3D11.EffectTechnique\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D11.EffectTechnique\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectTechnique.IsValid_\">\n            <summary>\t\n            <p>Test a technique to see if it contains valid syntax.</p>\t\n            </summary>\t\n            <returns><p><strong>TRUE</strong> if the code syntax is valid; otherwise <strong><see cref=\"F:SharpDX.Result.False\"/></strong>.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectTechnique::IsValid']/*\"/>\t\n            <msdn-id>ff476773</msdn-id>\t\n            <unmanaged>BOOL ID3DX11EffectTechnique::IsValid()</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectTechnique::IsValid</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectTechnique.GetDescription(SharpDX.Direct3D11.EffectTechniqueDescription@)\">\n            <summary>\t\n            <p>Get a technique description.</p>\t\n            </summary>\t\n            <param name=\"descRef\"><dd>  <p>A reference to a technique description (see <strong><see cref=\"T:SharpDX.Direct3D11.EffectTechniqueDescription\"/></strong>).</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectTechnique::GetDesc']/*\"/>\t\n            <msdn-id>ff476770</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectTechnique::GetDesc([Out] D3DX11_TECHNIQUE_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectTechnique::GetDesc</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectTechnique.GetAnnotationByIndex(System.Int32)\">\n            <summary>\t\n            <p>Get an annotation by index.</p>\t\n            </summary>\t\n            <param name=\"index\"><dd>  <p>The zero-based index of the interface reference.</p> </dd></param>\t\n            <returns><p>A reference to an <strong><see cref=\"T:SharpDX.Direct3D11.EffectVariable\"/></strong>.</p></returns>\t\n            <remarks>\t\n            <p>Use an annotation to attach a piece of metadata to a technique.</p><p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectTechnique::GetAnnotationByIndex']/*\"/>\t\n            <msdn-id>ff476768</msdn-id>\t\n            <unmanaged>ID3DX11EffectVariable* ID3DX11EffectTechnique::GetAnnotationByIndex([In] unsigned int Index)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectTechnique::GetAnnotationByIndex</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectTechnique.GetAnnotationByName(System.String)\">\n            <summary>\t\n            <p>Get an annotation by name.</p>\t\n            </summary>\t\n            <param name=\"name\"><dd>  <p>Name of the annotation.</p> </dd></param>\t\n            <returns><p>A reference to an <strong><see cref=\"T:SharpDX.Direct3D11.EffectVariable\"/></strong>.</p></returns>\t\n            <remarks>\t\n            <p>Use an annotation to attach a piece of metadata to a technique.</p><p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectTechnique::GetAnnotationByName']/*\"/>\t\n            <msdn-id>ff476769</msdn-id>\t\n            <unmanaged>ID3DX11EffectVariable* ID3DX11EffectTechnique::GetAnnotationByName([In] const char* Name)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectTechnique::GetAnnotationByName</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectTechnique.GetPassByIndex(System.Int32)\">\n            <summary>\t\n            <p>Get a pass by index.</p>\t\n            </summary>\t\n            <param name=\"index\"><dd>  <p>A zero-based index.</p> </dd></param>\t\n            <returns><p>A reference to a <strong><see cref=\"T:SharpDX.Direct3D11.EffectPass\"/></strong>.</p></returns>\t\n            <remarks>\t\n            <p>A technique contains one or more passes; get a pass using a name or an index.</p><p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectTechnique::GetPassByIndex']/*\"/>\t\n            <msdn-id>ff476771</msdn-id>\t\n            <unmanaged>ID3DX11EffectPass* ID3DX11EffectTechnique::GetPassByIndex([In] unsigned int Index)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectTechnique::GetPassByIndex</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectTechnique.GetPassByName(System.String)\">\n            <summary>\t\n            <p>Get a pass by name.</p>\t\n            </summary>\t\n            <param name=\"name\"><dd>  <p>The name of the pass.</p> </dd></param>\t\n            <returns><p>A reference to an <strong><see cref=\"T:SharpDX.Direct3D11.EffectPass\"/></strong>.</p></returns>\t\n            <remarks>\t\n            <p>A technique contains one or more passes; get a pass using a name or an index.</p><p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectTechnique::GetPassByName']/*\"/>\t\n            <msdn-id>ff476772</msdn-id>\t\n            <unmanaged>ID3DX11EffectPass* ID3DX11EffectTechnique::GetPassByName([In] const char* Name)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectTechnique::GetPassByName</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectTechnique.ComputeStateBlockMask(SharpDX.Direct3D11.StateBlockMask@)\">\n            <summary>\t\n            <p>Compute a state-block mask to allow/prevent state changes.</p>\t\n            </summary>\t\n            <param name=\"stateBlockMaskRef\"><dd>  <p>A reference to a state-block mask (see <strong><see cref=\"T:SharpDX.Direct3D11.StateBlockMask\"/></strong>).</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectTechnique::ComputeStateBlockMask']/*\"/>\t\n            <msdn-id>ff476767</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectTechnique::ComputeStateBlockMask([In] D3DX11_STATE_BLOCK_MASK* pStateBlockMask)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectTechnique::ComputeStateBlockMask</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.EffectTechnique.IsValid\">\n            <summary>\t\n            <p>Test a technique to see if it contains valid syntax.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectTechnique::IsValid']/*\"/>\t\n            <msdn-id>ff476773</msdn-id>\t\n            <unmanaged>IsValid</unmanaged>\t\n            <unmanaged-short>IsValid</unmanaged-short>\t\n            <unmanaged>BOOL ID3DX11EffectTechnique::IsValid()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.EffectTechnique.Description\">\n            <summary>\t\n            <p>Get a technique description.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectTechnique::GetDesc']/*\"/>\t\n            <msdn-id>ff476770</msdn-id>\t\n            <unmanaged>GetDesc</unmanaged>\t\n            <unmanaged-short>GetDesc</unmanaged-short>\t\n            <unmanaged>HRESULT ID3DX11EffectTechnique::GetDesc([Out] D3DX11_TECHNIQUE_DESC* pDesc)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.EffectType\">\n            <summary>\t\n            <p>The <strong><see cref=\"T:SharpDX.Direct3D11.EffectType\"/></strong> interface accesses effect variables by type.</p><p>The lifetime of an <strong><see cref=\"T:SharpDX.Direct3D11.EffectType\"/></strong> object is equal to the lifetime of its parent <strong><see cref=\"T:SharpDX.Direct3D11.Effect\"/></strong> object.</p><ul> <li>Methods</li> </ul>Methods<p>The <strong><see cref=\"T:SharpDX.Direct3D11.EffectType\"/></strong> interface has the following methods.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>To get information about an effect type from an effect variable, call <strong><see cref=\"M:SharpDX.Direct3D11.EffectVariable.GetTypeInfo\"/></strong>.</p><p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectType']/*\"/>\t\n            <msdn-id>ff476774</msdn-id>\t\n            <unmanaged>ID3DX11EffectType</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectType</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectType.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D11.EffectType\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectType.op_Explicit(System.IntPtr)~SharpDX.Direct3D11.EffectType\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D11.EffectType\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectType.IsValid_\">\n            <summary>\t\n            <p>Tests that the effect type is valid.</p>\t\n            </summary>\t\n            <returns><p><strong>TRUE</strong> if it is valid; otherwise <strong><see cref=\"F:SharpDX.Result.False\"/></strong>.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectType::IsValid']/*\"/>\t\n            <msdn-id>ff476782</msdn-id>\t\n            <unmanaged>BOOL ID3DX11EffectType::IsValid()</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectType::IsValid</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectType.GetDescription(SharpDX.Direct3D11.EffectTypeDescription@)\">\n            <summary>\t\n            <p>Get an effect-type description.</p>\t\n            </summary>\t\n            <param name=\"descRef\"><dd>  <p>A reference to an effect-type description. See <strong><see cref=\"T:SharpDX.Direct3D11.EffectTypeDescription\"/></strong>.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>The effect-variable description contains data about the name, annotations, semantic, flags and buffer offset of the effect type.</p><p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectType::GetDesc']/*\"/>\t\n            <msdn-id>ff476775</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11EffectType::GetDesc([Out] D3DX11_EFFECT_TYPE_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectType::GetDesc</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectType.GetMemberTypeByIndex(System.Int32)\">\n            <summary>\t\n            <p>Get a member type by index.</p>\t\n            </summary>\t\n            <param name=\"index\"><dd>  <p>A zero-based index.</p> </dd></param>\t\n            <returns><p>A reference to an <strong><see cref=\"T:SharpDX.Direct3D11.EffectType\"/></strong>.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectType::GetMemberTypeByIndex']/*\"/>\t\n            <msdn-id>ff476779</msdn-id>\t\n            <unmanaged>ID3DX11EffectType* ID3DX11EffectType::GetMemberTypeByIndex([In] unsigned int Index)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectType::GetMemberTypeByIndex</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectType.GetMemberTypeByName(System.String)\">\n            <summary>\t\n            <p>Get an member type by name.</p>\t\n            </summary>\t\n            <param name=\"name\"><dd>  <p>A member's name.</p> </dd></param>\t\n            <returns><p>A reference to an <strong><see cref=\"T:SharpDX.Direct3D11.EffectType\"/></strong>.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectType::GetMemberTypeByName']/*\"/>\t\n            <msdn-id>ff476780</msdn-id>\t\n            <unmanaged>ID3DX11EffectType* ID3DX11EffectType::GetMemberTypeByName([In] const char* Name)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectType::GetMemberTypeByName</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectType.GetMemberTypeBySemantic(System.String)\">\n            <summary>\t\n            <p>Get a member type by semantic.</p>\t\n            </summary>\t\n            <param name=\"semantic\"><dd>  <p>A semantic.</p> </dd></param>\t\n            <returns><p>A reference to an <strong><see cref=\"T:SharpDX.Direct3D11.EffectType\"/></strong>.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectType::GetMemberTypeBySemantic']/*\"/>\t\n            <msdn-id>ff476781</msdn-id>\t\n            <unmanaged>ID3DX11EffectType* ID3DX11EffectType::GetMemberTypeBySemantic([In] const char* Semantic)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectType::GetMemberTypeBySemantic</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectType.GetMemberName(System.Int32)\">\n            <summary>\t\n            <p>Get the name of a member.</p>\t\n            </summary>\t\n            <param name=\"index\"><dd>  <p>A zero-based index.</p> </dd></param>\t\n            <returns><p>The name of the member.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectType::GetMemberName']/*\"/>\t\n            <msdn-id>ff476776</msdn-id>\t\n            <unmanaged>const char* ID3DX11EffectType::GetMemberName([In] unsigned int Index)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectType::GetMemberName</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.EffectType.GetMemberSemantic(System.Int32)\">\n            <summary>\t\n            <p>Get the semantic attached to a member.</p>\t\n            </summary>\t\n            <param name=\"index\"><dd>  <p>A zero-based index.</p> </dd></param>\t\n            <returns><p>A string that contains the semantic.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectType::GetMemberSemantic']/*\"/>\t\n            <msdn-id>ff476778</msdn-id>\t\n            <unmanaged>const char* ID3DX11EffectType::GetMemberSemantic([In] unsigned int Index)</unmanaged>\t\n            <unmanaged-short>ID3DX11EffectType::GetMemberSemantic</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.EffectType.IsValid\">\n            <summary>\t\n            <p>Tests that the effect type is valid.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectType::IsValid']/*\"/>\t\n            <msdn-id>ff476782</msdn-id>\t\n            <unmanaged>IsValid</unmanaged>\t\n            <unmanaged-short>IsValid</unmanaged-short>\t\n            <unmanaged>BOOL ID3DX11EffectType::IsValid()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.EffectType.Description\">\n            <summary>\t\n            <p>Get an effect-type description.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The effect-variable description contains data about the name, annotations, semantic, flags and buffer offset of the effect type.</p><p><strong>Note</strong>??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build  your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11EffectType::GetDesc']/*\"/>\t\n            <msdn-id>ff476775</msdn-id>\t\n            <unmanaged>GetDesc</unmanaged>\t\n            <unmanaged-short>GetDesc</unmanaged-short>\t\n            <unmanaged>HRESULT ID3DX11EffectType::GetDesc([Out] D3DX11_EFFECT_TYPE_DESC* pDesc)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.EffectDescription\">\n            <summary>\t\n            <p>Describes an effect.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p><see cref=\"T:SharpDX.Direct3D11.EffectDescription\"/> is used with <strong><see cref=\"M:SharpDX.Direct3D11.Effect.GetDescription(SharpDX.Direct3D11.EffectDescription@)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_EFFECT_DESC']/*\"/>\t\n            <msdn-id>ff476303</msdn-id>\t\n            <unmanaged>D3DX11_EFFECT_DESC</unmanaged>\t\n            <unmanaged-short>D3DX11_EFFECT_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.EffectDescription.ConstantBufferCount\">\n            <summary>\t\n            <dd> <p>Number of constant buffers in this effect.</p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_EFFECT_DESC::ConstantBuffers']/*\"/>\t\n            <msdn-id>ff476303</msdn-id>\t\n            <unmanaged>unsigned int ConstantBuffers</unmanaged>\t\n            <unmanaged-short>unsigned int ConstantBuffers</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.EffectDescription.GlobalVariableCount\">\n            <summary>\t\n            <dd> <p>Number of global variables in this effect.</p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_EFFECT_DESC::GlobalVariables']/*\"/>\t\n            <msdn-id>ff476303</msdn-id>\t\n            <unmanaged>unsigned int GlobalVariables</unmanaged>\t\n            <unmanaged-short>unsigned int GlobalVariables</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.EffectDescription.InterfaceVariableCount\">\n            <summary>\t\n            <dd> <p>Number of global interfaces in this effect.</p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_EFFECT_DESC::InterfaceVariables']/*\"/>\t\n            <msdn-id>ff476303</msdn-id>\t\n            <unmanaged>unsigned int InterfaceVariables</unmanaged>\t\n            <unmanaged-short>unsigned int InterfaceVariables</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.EffectDescription.TechniqueCount\">\n            <summary>\t\n            <dd> <p>Number of techniques in this effect.</p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_EFFECT_DESC::Techniques']/*\"/>\t\n            <msdn-id>ff476303</msdn-id>\t\n            <unmanaged>unsigned int Techniques</unmanaged>\t\n            <unmanaged-short>unsigned int Techniques</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.EffectDescription.GroupCount\">\n            <summary>\t\n            <dd> <p>Number of groups in this effect.</p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_EFFECT_DESC::Groups']/*\"/>\t\n            <msdn-id>ff476303</msdn-id>\t\n            <unmanaged>unsigned int Groups</unmanaged>\t\n            <unmanaged-short>unsigned int Groups</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.EffectGroupDescription\">\n            <summary>\t\n            <p>Describes an effect group.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p><see cref=\"T:SharpDX.Direct3D11.EffectGroupDescription\"/> is used with <strong><see cref=\"M:SharpDX.Direct3D11.EffectTechnique.GetDescription(SharpDX.Direct3D11.EffectTechniqueDescription@)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_GROUP_DESC']/*\"/>\t\n            <msdn-id>ff476314</msdn-id>\t\n            <unmanaged>D3DX11_GROUP_DESC</unmanaged>\t\n            <unmanaged-short>D3DX11_GROUP_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.EffectGroupDescription.Name\">\n            <summary>\t\n            <dd> <p>Name of this group (only <strong><c>null</c></strong> if global).</p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_GROUP_DESC::Name']/*\"/>\t\n            <msdn-id>ff476314</msdn-id>\t\n            <unmanaged>const char* Name</unmanaged>\t\n            <unmanaged-short>char Name</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.EffectGroupDescription.Techniques\">\n            <summary>\t\n            <dd> <p>Number of techniques contained in group.</p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_GROUP_DESC::Techniques']/*\"/>\t\n            <msdn-id>ff476314</msdn-id>\t\n            <unmanaged>unsigned int Techniques</unmanaged>\t\n            <unmanaged-short>unsigned int Techniques</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.EffectGroupDescription.Annotations\">\n            <summary>\t\n            <dd> <p>Number of annotations on this group.</p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_GROUP_DESC::Annotations']/*\"/>\t\n            <msdn-id>ff476314</msdn-id>\t\n            <unmanaged>unsigned int Annotations</unmanaged>\t\n            <unmanaged-short>unsigned int Annotations</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.EffectTechniqueDescription\">\n            <summary>\t\n            <p>Describes an effect technique.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p><see cref=\"T:SharpDX.Direct3D11.EffectTechniqueDescription\"/> is used with <strong><see cref=\"M:SharpDX.Direct3D11.EffectTechnique.GetDescription(SharpDX.Direct3D11.EffectTechniqueDescription@)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_TECHNIQUE_DESC']/*\"/>\t\n            <msdn-id>ff476326</msdn-id>\t\n            <unmanaged>D3DX11_TECHNIQUE_DESC</unmanaged>\t\n            <unmanaged-short>D3DX11_TECHNIQUE_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.EffectTechniqueDescription.Name\">\n            <summary>\t\n            <dd> <p>Name of this technique (<c>null</c> if not anonymous).</p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_TECHNIQUE_DESC::Name']/*\"/>\t\n            <msdn-id>ff476326</msdn-id>\t\n            <unmanaged>const char* Name</unmanaged>\t\n            <unmanaged-short>char Name</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.EffectTechniqueDescription.PassCount\">\n            <summary>\t\n            <dd> <p>Number of passes contained in the technique.</p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_TECHNIQUE_DESC::Passes']/*\"/>\t\n            <msdn-id>ff476326</msdn-id>\t\n            <unmanaged>unsigned int Passes</unmanaged>\t\n            <unmanaged-short>unsigned int Passes</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.EffectTechniqueDescription.AnnotationCount\">\n            <summary>\t\n            <dd> <p>Number of annotations on this technique.</p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_TECHNIQUE_DESC::Annotations']/*\"/>\t\n            <msdn-id>ff476326</msdn-id>\t\n            <unmanaged>unsigned int Annotations</unmanaged>\t\n            <unmanaged-short>unsigned int Annotations</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.EffectTypeDescription\">\n            <summary>\t\n            <p>Describes an effect-variable type.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p><see cref=\"T:SharpDX.Direct3D11.EffectTypeDescription\"/> is used with <strong><see cref=\"M:SharpDX.Direct3D11.EffectType.GetDescription(SharpDX.Direct3D11.EffectTypeDescription@)\"/></strong> </p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_EFFECT_TYPE_DESC']/*\"/>\t\n            <msdn-id>ff476305</msdn-id>\t\n            <unmanaged>D3DX11_EFFECT_TYPE_DESC</unmanaged>\t\n            <unmanaged-short>D3DX11_EFFECT_TYPE_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.EffectTypeDescription.TypeName\">\n            <summary>\t\n            <dd> <p>Name of the type, for example \"float4\" or \"MyStruct\".</p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_EFFECT_TYPE_DESC::TypeName']/*\"/>\t\n            <msdn-id>ff476305</msdn-id>\t\n            <unmanaged>const char* TypeName</unmanaged>\t\n            <unmanaged-short>char TypeName</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.EffectTypeDescription.Class\">\n            <summary>\t\n            <dd> <p>The variable class (see <strong>D3D10_SHADER_VARIABLE_CLASS</strong>). </p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_EFFECT_TYPE_DESC::Class']/*\"/>\t\n            <msdn-id>ff476305</msdn-id>\t\n            <unmanaged>D3D_SHADER_VARIABLE_CLASS Class</unmanaged>\t\n            <unmanaged-short>D3D_SHADER_VARIABLE_CLASS Class</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.EffectTypeDescription.Type\">\n            <summary>\t\n            <dd> <p>The variable type (see <strong>D3D10_SHADER_VARIABLE_TYPE</strong>).</p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_EFFECT_TYPE_DESC::Type']/*\"/>\t\n            <msdn-id>ff476305</msdn-id>\t\n            <unmanaged>D3D_SHADER_VARIABLE_TYPE Type</unmanaged>\t\n            <unmanaged-short>D3D_SHADER_VARIABLE_TYPE Type</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.EffectTypeDescription.Elements\">\n            <summary>\t\n            <dd> <p>Number of elements in this type (0 if not an array).</p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_EFFECT_TYPE_DESC::Elements']/*\"/>\t\n            <msdn-id>ff476305</msdn-id>\t\n            <unmanaged>unsigned int Elements</unmanaged>\t\n            <unmanaged-short>unsigned int Elements</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.EffectTypeDescription.Members\">\n            <summary>\t\n            <dd> <p>Number of members (0 if not a structure).</p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_EFFECT_TYPE_DESC::Members']/*\"/>\t\n            <msdn-id>ff476305</msdn-id>\t\n            <unmanaged>unsigned int Members</unmanaged>\t\n            <unmanaged-short>unsigned int Members</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.EffectTypeDescription.Rows\">\n            <summary>\t\n            <dd> <p>Number of rows in this type (0 if not a numeric primitive).</p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_EFFECT_TYPE_DESC::Rows']/*\"/>\t\n            <msdn-id>ff476305</msdn-id>\t\n            <unmanaged>unsigned int Rows</unmanaged>\t\n            <unmanaged-short>unsigned int Rows</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.EffectTypeDescription.Columns\">\n            <summary>\t\n            <dd> <p>Number of columns in this type (0 if not a numeric primitive).</p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_EFFECT_TYPE_DESC::Columns']/*\"/>\t\n            <msdn-id>ff476305</msdn-id>\t\n            <unmanaged>unsigned int Columns</unmanaged>\t\n            <unmanaged-short>unsigned int Columns</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.EffectTypeDescription.PackedSize\">\n            <summary>\t\n            <dd> <p>Number of bytes required to represent this data type, when tightly packed.</p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_EFFECT_TYPE_DESC::PackedSize']/*\"/>\t\n            <msdn-id>ff476305</msdn-id>\t\n            <unmanaged>unsigned int PackedSize</unmanaged>\t\n            <unmanaged-short>unsigned int PackedSize</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.EffectTypeDescription.UnpackedSize\">\n            <summary>\t\n            <dd> <p>Number of bytes occupied by this data type, when laid out in a constant buffer.</p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_EFFECT_TYPE_DESC::UnpackedSize']/*\"/>\t\n            <msdn-id>ff476305</msdn-id>\t\n            <unmanaged>unsigned int UnpackedSize</unmanaged>\t\n            <unmanaged-short>unsigned int UnpackedSize</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.EffectTypeDescription.Stride\">\n            <summary>\t\n            <dd> <p>Number of bytes to seek between elements, when laid out in a constant buffer.</p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_EFFECT_TYPE_DESC::Stride']/*\"/>\t\n            <msdn-id>ff476305</msdn-id>\t\n            <unmanaged>unsigned int Stride</unmanaged>\t\n            <unmanaged-short>unsigned int Stride</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.EffectVariableDescription\">\n            <summary>\t\n            <p>Describes an effect variable.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p><see cref=\"T:SharpDX.Direct3D11.EffectVariableDescription\"/> is used with <strong><see cref=\"M:SharpDX.Direct3D11.EffectVariable.GetDescription(SharpDX.Direct3D11.EffectVariableDescription@)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_EFFECT_VARIABLE_DESC']/*\"/>\t\n            <msdn-id>ff476306</msdn-id>\t\n            <unmanaged>D3DX11_EFFECT_VARIABLE_DESC</unmanaged>\t\n            <unmanaged-short>D3DX11_EFFECT_VARIABLE_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.EffectVariableDescription.Name\">\n            <summary>\t\n            <dd> <p>Name of this variable, annotation, or structure member.</p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_EFFECT_VARIABLE_DESC::Name']/*\"/>\t\n            <msdn-id>ff476306</msdn-id>\t\n            <unmanaged>const char* Name</unmanaged>\t\n            <unmanaged-short>char Name</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.EffectVariableDescription.Semantic\">\n            <summary>\t\n            <dd> <p>Semantic string of this variable or structure member (<c>null</c> for annotations or if not present).</p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_EFFECT_VARIABLE_DESC::Semantic']/*\"/>\t\n            <msdn-id>ff476306</msdn-id>\t\n            <unmanaged>const char* Semantic</unmanaged>\t\n            <unmanaged-short>char Semantic</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.EffectVariableDescription.Flags\">\n            <summary>\t\n            <dd> <p>Optional flags for effect variables.</p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_EFFECT_VARIABLE_DESC::Flags']/*\"/>\t\n            <msdn-id>ff476306</msdn-id>\t\n            <unmanaged>D3DX11_EFFECT_VARIABLE_FLAGS Flags</unmanaged>\t\n            <unmanaged-short>D3DX11_EFFECT_VARIABLE_FLAGS Flags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.EffectVariableDescription.AnnotationCount\">\n            <summary>\t\n            <dd> <p>Number of annotations on this variable (always 0 for annotations).</p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_EFFECT_VARIABLE_DESC::Annotations']/*\"/>\t\n            <msdn-id>ff476306</msdn-id>\t\n            <unmanaged>unsigned int Annotations</unmanaged>\t\n            <unmanaged-short>unsigned int Annotations</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.EffectVariableDescription.BufferOffset\">\n            <summary>\t\n            <dd> <p>Offset into containing cbuffer or tbuffer (always 0 for annotations or variables not in constant buffers).</p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_EFFECT_VARIABLE_DESC::BufferOffset']/*\"/>\t\n            <msdn-id>ff476306</msdn-id>\t\n            <unmanaged>unsigned int BufferOffset</unmanaged>\t\n            <unmanaged-short>unsigned int BufferOffset</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.EffectVariableDescription.ExplicitBindPoint\">\n            <summary>\t\n            <dd> <p>Used if the variable has been explicitly bound using the register keyword. Check Flags for <see cref=\"F:SharpDX.Direct3D11.EffectVariableFlags.ExplicitBindPoint\"/>.</p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_EFFECT_VARIABLE_DESC::ExplicitBindPoint']/*\"/>\t\n            <msdn-id>ff476306</msdn-id>\t\n            <unmanaged>unsigned int ExplicitBindPoint</unmanaged>\t\n            <unmanaged-short>unsigned int ExplicitBindPoint</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.StateBlockMask\">\n            <summary>\t\n            <p>Indicates the device state.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>A state-block mask indicates the device states that a pass or a technique changes.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_STATE_BLOCK_MASK']/*\"/>\t\n            <msdn-id>ff476325</msdn-id>\t\n            <unmanaged>D3DX11_STATE_BLOCK_MASK</unmanaged>\t\n            <unmanaged-short>D3DX11_STATE_BLOCK_MASK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.StateBlockMask.VertexShader\">\n            <summary>\t\n            <dd> <p>Boolean value indicating whether to save the vertex shader state. </p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_STATE_BLOCK_MASK::VS']/*\"/>\t\n            <msdn-id>ff476325</msdn-id>\t\n            <unmanaged>unsigned char VS</unmanaged>\t\n            <unmanaged-short>unsigned char VS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.StateBlockMask.HullShader\">\n            <summary>\t\n            <dd> <p>Boolean value indicating whether to save the hull shader state. </p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_STATE_BLOCK_MASK::HS']/*\"/>\t\n            <msdn-id>ff476325</msdn-id>\t\n            <unmanaged>unsigned char HS</unmanaged>\t\n            <unmanaged-short>unsigned char HS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.StateBlockMask.DomainShader\">\n            <summary>\t\n            <dd> <p>Boolean value indicating whether to save the domain shader state. </p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_STATE_BLOCK_MASK::DS']/*\"/>\t\n            <msdn-id>ff476325</msdn-id>\t\n            <unmanaged>unsigned char DS</unmanaged>\t\n            <unmanaged-short>unsigned char DS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.StateBlockMask.GeometryShader\">\n            <summary>\t\n            <dd> <p>Boolean value indicating whether to save the geometry shader state. </p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_STATE_BLOCK_MASK::GS']/*\"/>\t\n            <msdn-id>ff476325</msdn-id>\t\n            <unmanaged>unsigned char GS</unmanaged>\t\n            <unmanaged-short>unsigned char GS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.StateBlockMask.PixelShader\">\n            <summary>\t\n            <dd> <p>Boolean value indicating whether to save the pixel shader state.</p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_STATE_BLOCK_MASK::PS']/*\"/>\t\n            <msdn-id>ff476325</msdn-id>\t\n            <unmanaged>unsigned char PS</unmanaged>\t\n            <unmanaged-short>unsigned char PS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.StateBlockMask.PSUnorderedAccessViews\">\n            <summary>\t\n            <dd> <p>Boolean value indicating whether to save the pixel shader unordered access views.</p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_STATE_BLOCK_MASK::PSUnorderedAccessViews']/*\"/>\t\n            <msdn-id>ff476325</msdn-id>\t\n            <unmanaged>unsigned char PSUnorderedAccessViews</unmanaged>\t\n            <unmanaged-short>unsigned char PSUnorderedAccessViews</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.StateBlockMask.ComputeShader\">\n            <summary>\t\n            <dd> <p>Boolean value indicating whether to save the compute shader state.</p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_STATE_BLOCK_MASK::CS']/*\"/>\t\n            <msdn-id>ff476325</msdn-id>\t\n            <unmanaged>unsigned char CS</unmanaged>\t\n            <unmanaged-short>unsigned char CS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.StateBlockMask.CSUnorderedAccessViews\">\n            <summary>\t\n            <dd> <p>Boolean value indicating whether to save the compute shader unordered access views.</p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_STATE_BLOCK_MASK::CSUnorderedAccessViews']/*\"/>\t\n            <msdn-id>ff476325</msdn-id>\t\n            <unmanaged>unsigned char CSUnorderedAccessViews</unmanaged>\t\n            <unmanaged-short>unsigned char CSUnorderedAccessViews</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.StateBlockMask.IAIndexBuffer\">\n            <summary>\t\n            <dd> <p>Boolean value indicating whether to save the index buffer state. </p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_STATE_BLOCK_MASK::IAIndexBuffer']/*\"/>\t\n            <msdn-id>ff476325</msdn-id>\t\n            <unmanaged>unsigned char IAIndexBuffer</unmanaged>\t\n            <unmanaged-short>unsigned char IAIndexBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.StateBlockMask.IAInputLayout\">\n            <summary>\t\n            <dd> <p>Boolean value indicating whether to save the input layout state. </p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_STATE_BLOCK_MASK::IAInputLayout']/*\"/>\t\n            <msdn-id>ff476325</msdn-id>\t\n            <unmanaged>unsigned char IAInputLayout</unmanaged>\t\n            <unmanaged-short>unsigned char IAInputLayout</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.StateBlockMask.IAPrimitiveTopology\">\n            <summary>\t\n            <dd> <p>Boolean value indicating whether to save the primitive topology state. </p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_STATE_BLOCK_MASK::IAPrimitiveTopology']/*\"/>\t\n            <msdn-id>ff476325</msdn-id>\t\n            <unmanaged>unsigned char IAPrimitiveTopology</unmanaged>\t\n            <unmanaged-short>unsigned char IAPrimitiveTopology</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.StateBlockMask.OMRenderTargets\">\n            <summary>\t\n            <dd> <p>Boolean value indicating whether to save the render targets states. </p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_STATE_BLOCK_MASK::OMRenderTargets']/*\"/>\t\n            <msdn-id>ff476325</msdn-id>\t\n            <unmanaged>unsigned char OMRenderTargets</unmanaged>\t\n            <unmanaged-short>unsigned char OMRenderTargets</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.StateBlockMask.OMDepthStencilState\">\n            <summary>\t\n            <dd> <p>Boolean value indicating whether to save the depth-stencil state. </p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_STATE_BLOCK_MASK::OMDepthStencilState']/*\"/>\t\n            <msdn-id>ff476325</msdn-id>\t\n            <unmanaged>unsigned char OMDepthStencilState</unmanaged>\t\n            <unmanaged-short>unsigned char OMDepthStencilState</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.StateBlockMask.OMBlendState\">\n            <summary>\t\n            <dd> <p>Boolean value indicating whether to save the blend state. </p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_STATE_BLOCK_MASK::OMBlendState']/*\"/>\t\n            <msdn-id>ff476325</msdn-id>\t\n            <unmanaged>unsigned char OMBlendState</unmanaged>\t\n            <unmanaged-short>unsigned char OMBlendState</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.StateBlockMask.RSViewports\">\n            <summary>\t\n            <dd> <p>Boolean value indicating whether to save the viewports states. </p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_STATE_BLOCK_MASK::RSViewports']/*\"/>\t\n            <msdn-id>ff476325</msdn-id>\t\n            <unmanaged>unsigned char RSViewports</unmanaged>\t\n            <unmanaged-short>unsigned char RSViewports</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.StateBlockMask.RSScissorRects\">\n            <summary>\t\n            <dd> <p>Boolean value indicating whether to save the scissor rectangles states. </p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_STATE_BLOCK_MASK::RSScissorRects']/*\"/>\t\n            <msdn-id>ff476325</msdn-id>\t\n            <unmanaged>unsigned char RSScissorRects</unmanaged>\t\n            <unmanaged-short>unsigned char RSScissorRects</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.StateBlockMask.RSRasterizerState\">\n            <summary>\t\n            <dd> <p>Boolean value indicating whether to save the rasterizer state. </p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_STATE_BLOCK_MASK::RSRasterizerState']/*\"/>\t\n            <msdn-id>ff476325</msdn-id>\t\n            <unmanaged>unsigned char RSRasterizerState</unmanaged>\t\n            <unmanaged-short>unsigned char RSRasterizerState</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.StateBlockMask.SOBuffers\">\n            <summary>\t\n            <dd> <p>Boolean value indicating whether to save the stream-out buffers states. </p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_STATE_BLOCK_MASK::SOBuffers']/*\"/>\t\n            <msdn-id>ff476325</msdn-id>\t\n            <unmanaged>unsigned char SOBuffers</unmanaged>\t\n            <unmanaged-short>unsigned char SOBuffers</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.StateBlockMask.Predication\">\n            <summary>\t\n            <dd> <p>Boolean value indicating whether to save the predication state. </p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_STATE_BLOCK_MASK::Predication']/*\"/>\t\n            <msdn-id>ff476325</msdn-id>\t\n            <unmanaged>unsigned char Predication</unmanaged>\t\n            <unmanaged-short>unsigned char Predication</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.StateBlockMask.VSSamplers\">\n            <summary>\t\n            <dd> <p>Array of vertex-shader samplers. The array is a multi-byte bitmask where each bit represents one sampler slot. </p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_STATE_BLOCK_MASK::VSSamplers']/*\"/>\t\n            <msdn-id>ff476325</msdn-id>\t\n            <unmanaged>unsigned char VSSamplers[2]</unmanaged>\t\n            <unmanaged-short>unsigned char VSSamplers</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.StateBlockMask.VSShaderResources\">\n            <summary>\t\n            <dd> <p>Array of vertex-shader resources. The array is a multi-byte bitmask where each bit represents one resource slot. </p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_STATE_BLOCK_MASK::VSShaderResources']/*\"/>\t\n            <msdn-id>ff476325</msdn-id>\t\n            <unmanaged>unsigned char VSShaderResources[16]</unmanaged>\t\n            <unmanaged-short>unsigned char VSShaderResources</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.StateBlockMask.VSConstantBuffers\">\n            <summary>\t\n            <dd> <p>Array of vertex-shader constant buffers. The array is a multi-byte bitmask where each bit represents one constant buffer slot. </p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_STATE_BLOCK_MASK::VSConstantBuffers']/*\"/>\t\n            <msdn-id>ff476325</msdn-id>\t\n            <unmanaged>unsigned char VSConstantBuffers[2]</unmanaged>\t\n            <unmanaged-short>unsigned char VSConstantBuffers</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.StateBlockMask.VSInterfaces\">\n            <summary>\t\n            <dd> <p>Array of vertex-shader interfaces. The array is a multi-byte bitmask where each bit represents one interface slot.</p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_STATE_BLOCK_MASK::VSInterfaces']/*\"/>\t\n            <msdn-id>ff476325</msdn-id>\t\n            <unmanaged>unsigned char VSInterfaces[32]</unmanaged>\t\n            <unmanaged-short>unsigned char VSInterfaces</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.StateBlockMask.HSSamplers\">\n            <summary>\t\n            <dd> <p>Array of hull-shader samplers. The array is a multi-byte bitmask where each bit represents one sampler slot. </p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_STATE_BLOCK_MASK::HSSamplers']/*\"/>\t\n            <msdn-id>ff476325</msdn-id>\t\n            <unmanaged>unsigned char HSSamplers[2]</unmanaged>\t\n            <unmanaged-short>unsigned char HSSamplers</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.StateBlockMask.HSShaderResources\">\n            <summary>\t\n            <dd> <p>Array of hull-shader resources. The array is a multi-byte bitmask where each bit represents one resource slot.</p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_STATE_BLOCK_MASK::HSShaderResources']/*\"/>\t\n            <msdn-id>ff476325</msdn-id>\t\n            <unmanaged>unsigned char HSShaderResources[16]</unmanaged>\t\n            <unmanaged-short>unsigned char HSShaderResources</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.StateBlockMask.HSConstantBuffers\">\n            <summary>\t\n            <dd> <p>Array of hull-shader constant buffers. The array is a multi-byte bitmask where each bit represents one constant buffer slot.</p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_STATE_BLOCK_MASK::HSConstantBuffers']/*\"/>\t\n            <msdn-id>ff476325</msdn-id>\t\n            <unmanaged>unsigned char HSConstantBuffers[2]</unmanaged>\t\n            <unmanaged-short>unsigned char HSConstantBuffers</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.StateBlockMask.HSInterfaces\">\n            <summary>\t\n            <dd> <p>Array of hull-shader interfaces. The array is a multi-byte bitmask where each bit represents one interface slot.</p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_STATE_BLOCK_MASK::HSInterfaces']/*\"/>\t\n            <msdn-id>ff476325</msdn-id>\t\n            <unmanaged>unsigned char HSInterfaces[32]</unmanaged>\t\n            <unmanaged-short>unsigned char HSInterfaces</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.StateBlockMask.DSSamplers\">\n            <summary>\t\n            <dd> <p>Array of domain-shader samplers. The array is a multi-byte bitmask where each bit represents one sampler slot.</p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_STATE_BLOCK_MASK::DSSamplers']/*\"/>\t\n            <msdn-id>ff476325</msdn-id>\t\n            <unmanaged>unsigned char DSSamplers[2]</unmanaged>\t\n            <unmanaged-short>unsigned char DSSamplers</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.StateBlockMask.DSShaderResources\">\n            <summary>\t\n            <dd> <p>Array of domain-shader resources. The array is a multi-byte bitmask where each bit represents one resource slot.</p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_STATE_BLOCK_MASK::DSShaderResources']/*\"/>\t\n            <msdn-id>ff476325</msdn-id>\t\n            <unmanaged>unsigned char DSShaderResources[16]</unmanaged>\t\n            <unmanaged-short>unsigned char DSShaderResources</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.StateBlockMask.DSConstantBuffers\">\n            <summary>\t\n            <dd> <p>Array of domain-shader constant buffers. The array is a multi-byte bitmask where each bit represents one buffer slot.</p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_STATE_BLOCK_MASK::DSConstantBuffers']/*\"/>\t\n            <msdn-id>ff476325</msdn-id>\t\n            <unmanaged>unsigned char DSConstantBuffers[2]</unmanaged>\t\n            <unmanaged-short>unsigned char DSConstantBuffers</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.StateBlockMask.DSInterfaces\">\n            <summary>\t\n            <dd> <p>Array of domain-shader interfaces. The array is a multi-byte bitmask where each bit represents one interface slot.</p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_STATE_BLOCK_MASK::DSInterfaces']/*\"/>\t\n            <msdn-id>ff476325</msdn-id>\t\n            <unmanaged>unsigned char DSInterfaces[32]</unmanaged>\t\n            <unmanaged-short>unsigned char DSInterfaces</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.StateBlockMask.GSSamplers\">\n            <summary>\t\n            <dd> <p>Array of geometry-shader samplers. The array is a multi-byte bitmask where each bit represents one sampler slot. </p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_STATE_BLOCK_MASK::GSSamplers']/*\"/>\t\n            <msdn-id>ff476325</msdn-id>\t\n            <unmanaged>unsigned char GSSamplers[2]</unmanaged>\t\n            <unmanaged-short>unsigned char GSSamplers</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.StateBlockMask.GSShaderResources\">\n            <summary>\t\n            <dd> <p>Array of geometry-shader resources. The array is a multi-byte bitmask where each bit represents one resource slot.</p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_STATE_BLOCK_MASK::GSShaderResources']/*\"/>\t\n            <msdn-id>ff476325</msdn-id>\t\n            <unmanaged>unsigned char GSShaderResources[16]</unmanaged>\t\n            <unmanaged-short>unsigned char GSShaderResources</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.StateBlockMask.GSConstantBuffers\">\n            <summary>\t\n            <dd> <p>Array of geometry-shader constant buffers. The array is a multi-byte bitmask where each bit represents one buffer slot. </p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_STATE_BLOCK_MASK::GSConstantBuffers']/*\"/>\t\n            <msdn-id>ff476325</msdn-id>\t\n            <unmanaged>unsigned char GSConstantBuffers[2]</unmanaged>\t\n            <unmanaged-short>unsigned char GSConstantBuffers</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.StateBlockMask.GSInterfaces\">\n            <summary>\t\n            <dd> <p>Array of geometry-shader interfaces. The array is a multi-byte bitmask where each bit represents one interface slot.</p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_STATE_BLOCK_MASK::GSInterfaces']/*\"/>\t\n            <msdn-id>ff476325</msdn-id>\t\n            <unmanaged>unsigned char GSInterfaces[32]</unmanaged>\t\n            <unmanaged-short>unsigned char GSInterfaces</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.StateBlockMask.PSSamplers\">\n            <summary>\t\n            <dd> <p>Array of pixel-shader samplers. The array is a multi-byte bitmask where each bit represents one sampler slot. </p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_STATE_BLOCK_MASK::PSSamplers']/*\"/>\t\n            <msdn-id>ff476325</msdn-id>\t\n            <unmanaged>unsigned char PSSamplers[2]</unmanaged>\t\n            <unmanaged-short>unsigned char PSSamplers</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.StateBlockMask.PSShaderResources\">\n            <summary>\t\n            <dd> <p>Array of pixel-shader resources. The array is a multi-byte bitmask where each bit represents one resource slot. </p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_STATE_BLOCK_MASK::PSShaderResources']/*\"/>\t\n            <msdn-id>ff476325</msdn-id>\t\n            <unmanaged>unsigned char PSShaderResources[16]</unmanaged>\t\n            <unmanaged-short>unsigned char PSShaderResources</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.StateBlockMask.PSConstantBuffers\">\n            <summary>\t\n            <dd> <p>Array of pixel-shader constant buffers. The array is a multi-byte bitmask where each bit represents one constant buffer slot. </p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_STATE_BLOCK_MASK::PSConstantBuffers']/*\"/>\t\n            <msdn-id>ff476325</msdn-id>\t\n            <unmanaged>unsigned char PSConstantBuffers[2]</unmanaged>\t\n            <unmanaged-short>unsigned char PSConstantBuffers</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.StateBlockMask.PSInterfaces\">\n            <summary>\t\n            <dd> <p>Array of pixel-shader interfaces. The array is a multi-byte bitmask where each bit represents one interface slot. </p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_STATE_BLOCK_MASK::PSInterfaces']/*\"/>\t\n            <msdn-id>ff476325</msdn-id>\t\n            <unmanaged>unsigned char PSInterfaces[32]</unmanaged>\t\n            <unmanaged-short>unsigned char PSInterfaces</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.StateBlockMask.CSSamplers\">\n            <summary>\t\n            <dd> <p>Array of compute-shader samplers. The array is a multi-byte bitmask where each bit represents one sampler slot. </p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_STATE_BLOCK_MASK::CSSamplers']/*\"/>\t\n            <msdn-id>ff476325</msdn-id>\t\n            <unmanaged>unsigned char CSSamplers[2]</unmanaged>\t\n            <unmanaged-short>unsigned char CSSamplers</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.StateBlockMask.CSShaderResources\">\n            <summary>\t\n            <dd> <p>Array of compute-shader resources. The array is a multi-byte bitmask where each bit represents one resource slot.</p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_STATE_BLOCK_MASK::CSShaderResources']/*\"/>\t\n            <msdn-id>ff476325</msdn-id>\t\n            <unmanaged>unsigned char CSShaderResources[16]</unmanaged>\t\n            <unmanaged-short>unsigned char CSShaderResources</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.StateBlockMask.CSConstantBuffers\">\n            <summary>\t\n            <dd> <p>Array of compute-shader constant buffers. The array is a multi-byte bitmask where each bit represents one constant buffer slot.</p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_STATE_BLOCK_MASK::CSConstantBuffers']/*\"/>\t\n            <msdn-id>ff476325</msdn-id>\t\n            <unmanaged>unsigned char CSConstantBuffers[2]</unmanaged>\t\n            <unmanaged-short>unsigned char CSConstantBuffers</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.StateBlockMask.CSInterfaces\">\n            <summary>\t\n            <dd> <p>Array of compute-shader interfaces. The array is a multi-byte bitmask where each bit represents one interface slot.</p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_STATE_BLOCK_MASK::CSInterfaces']/*\"/>\t\n            <msdn-id>ff476325</msdn-id>\t\n            <unmanaged>unsigned char CSInterfaces[32]</unmanaged>\t\n            <unmanaged-short>unsigned char CSInterfaces</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.StateBlockMask.IAVertexBuffers\">\n            <summary>\t\n            <dd> <p>Array of vertex buffers. The array is a multi-byte bitmask where each bit represents one resource slot. </p> </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_STATE_BLOCK_MASK::IAVertexBuffers']/*\"/>\t\n            <msdn-id>ff476325</msdn-id>\t\n            <unmanaged>unsigned char IAVertexBuffers[4]</unmanaged>\t\n            <unmanaged-short>unsigned char IAVertexBuffers</unmanaged-short>\t\n        </member>\n    </members>\n</doc>\n"
  },
  {
    "path": "3rd/SharpDX/SharpDX.Direct3D11.xml",
    "content": "<?xml version=\"1.0\"?>\n<doc>\n    <assembly>\n        <name>SharpDX.Direct3D11</name>\n    </assembly>\n    <members>\n        <member name=\"T:SharpDX.Direct3D11.AssemblyDoc\">\n            <summary>\n            The <see cref=\"A:SharpDX.Direct3D11\"/> assembly provides managed Direct3D11 API.\n            </summary>\n            <msdn-id>ff476080</msdn-id>\n            <unmanaged>Direct3D11</unmanaged>\t\n            <unmanaged-short>Direct3D11</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.BlendState\">\n            <summary>\t\n            <p>The blend-state interface holds a description for blending state that you can bind to the output-merger stage.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Blending applies a simple function to combine output values from a pixel shader with data in a render target. You have control over how the pixels are blended by using a predefined set of blending operations and preblending operations.</p><p>To create a blend-state object, call <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateBlendState(SharpDX.Direct3D11.BlendStateDescription@,SharpDX.Direct3D11.BlendState)\"/></strong>. To bind the blend-state object to the output-merger stage, call <strong><see cref=\"M:SharpDX.Direct3D11.OutputMergerStage.SetBlendState(SharpDX.Direct3D11.BlendState,System.Nullable{SharpDX.Color4},System.UInt32)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11BlendState']/*\"/>\t\n            <msdn-id>ff476349</msdn-id>\t\n            <unmanaged>ID3D11BlendState</unmanaged>\t\n            <unmanaged-short>ID3D11BlendState</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.DeviceChild\">\n            <summary>\t\n            <p>A device-child interface accesses data used by a device.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>There are several types of device child interfaces, all of which inherit this interface. They include shaders, state objects, and input layouts.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceChild']/*\"/>\t\n            <msdn-id>ff476380</msdn-id>\t\n            <unmanaged>ID3D11DeviceChild</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceChild</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DeviceChild.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D11.DeviceChild\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DeviceChild.op_Explicit(System.IntPtr)~SharpDX.Direct3D11.DeviceChild\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D11.DeviceChild\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DeviceChild.GetDevice(SharpDX.Direct3D11.Device@)\">\n            <summary>\t\n            <p>Get a reference to the device that created this interface.</p>\t\n            </summary>\t\n            <param name=\"deviceOut\"><dd>  <p>Address of a reference to a device (see <strong><see cref=\"T:SharpDX.Direct3D11.Device\"/></strong>).</p> </dd></param>\t\n            <remarks>\t\n            <p>Any returned interfaces will have their reference count incremented by one, so be sure to call ::release() on the returned reference(s) before they are freed or else you will have a memory leak.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceChild::GetDevice']/*\"/>\t\n            <msdn-id>ff476381</msdn-id>\t\n            <unmanaged>void ID3D11DeviceChild::GetDevice([Out] ID3D11Device** ppDevice)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceChild::GetDevice</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DeviceChild.GetPrivateData(System.Guid,System.Int32@,System.IntPtr)\">\n            <summary>\t\n            <p>Get application-defined data from a device child.</p>\t\n            </summary>\t\n            <param name=\"guid\"><dd>  <p>Guid associated with the data.</p> </dd></param>\t\n            <param name=\"dataSizeRef\"><dd>  <p>A reference to a variable that on input contains the size, in bytes, of the buffer that <em>pData</em> points to, and on output contains the size, in bytes, of the amount of data that <strong>GetPrivateData</strong> retrieved.</p> </dd></param>\t\n            <param name=\"dataRef\"><dd>  <p>A reference to a buffer that <strong>GetPrivateData</strong> fills with data from the device child if <em>pDataSize</em> points to a value that specifies a buffer large enough to hold the data.</p> </dd></param>\t\n            <returns><p>This method returns one of the codes described in the topic Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>The data stored in the device child is set by calling <strong><see cref=\"M:SharpDX.Direct3D11.DeviceChild.SetPrivateData(System.Guid,System.Int32,System.IntPtr)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceChild::GetPrivateData']/*\"/>\t\n            <msdn-id>ff476382</msdn-id>\t\n            <unmanaged>HRESULT ID3D11DeviceChild::GetPrivateData([In] const GUID&amp; guid,[InOut] unsigned int* pDataSize,[Out, Buffer, Optional] void* pData)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceChild::GetPrivateData</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DeviceChild.SetPrivateData(System.Guid,System.Int32,System.IntPtr)\">\n            <summary>\t\n            <p>Set application-defined data to a device child and associate that data with an application-defined guid.</p>\t\n            </summary>\t\n            <param name=\"guid\"><dd>  <p>Guid associated with the data.</p> </dd></param>\t\n            <param name=\"dataSize\"><dd>  <p>Size of the data.</p> </dd></param>\t\n            <param name=\"dataRef\"><dd>  <p>Pointer to the data to be stored with this device child. If pData is <strong><c>null</c></strong>, DataSize must also be 0, and any data previously associated with the specified guid will be destroyed.</p> </dd></param>\t\n            <returns><p>This method returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>The data stored in the device child with this method can be retrieved with <strong><see cref=\"M:SharpDX.Direct3D11.DeviceChild.GetPrivateData(System.Guid,System.Int32@,System.IntPtr)\"/></strong>.</p><p>The debug layer reports memory leaks by outputting a list of object interface references along with their friendly names. The default friendly name is \"&lt;unnamed&gt;\". You can set the friendly name so that you can determine if the corresponding object interface reference caused the leak. To set the friendly name, use the <strong>SetPrivateData</strong> method and the <strong><see cref=\"F:SharpDX.Direct3D.CommonGuid.DebugObjectName\"/></strong> <see cref=\"T:System.Guid\"/> that is in D3Dcommon.h. For example, to give pContext a friendly name of <em>My name</em>, use the following code:</p><pre><code> static const char c_szName[] = \"My name\";\t\n            hr = pContext-&gt;SetPrivateData( <see cref=\"F:SharpDX.Direct3D.CommonGuid.DebugObjectName\"/>, sizeof( c_szName ) - 1, c_szName );\t\n            </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceChild::SetPrivateData']/*\"/>\t\n            <msdn-id>ff476383</msdn-id>\t\n            <unmanaged>HRESULT ID3D11DeviceChild::SetPrivateData([In] const GUID&amp; guid,[In] unsigned int DataSize,[In, Buffer, Optional] const void* pData)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceChild::SetPrivateData</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DeviceChild.SetPrivateDataInterface(System.Guid,SharpDX.ComObject)\">\n            <summary>\t\n            <p>Associate an <see cref=\"T:SharpDX.ComObject\"/>-derived interface with this device child and associate that interface with an application-defined guid.</p>\t\n            </summary>\t\n            <param name=\"guid\"><dd>  <p>Guid associated with the interface.</p> </dd></param>\t\n            <param name=\"dataRef\"><dd>  <p>Pointer to an <see cref=\"T:SharpDX.ComObject\"/>-derived interface to be associated with the device child.</p> </dd></param>\t\n            <returns><p>This method returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>When this method is called ::addref() will be called on the <see cref=\"T:SharpDX.ComObject\"/>-derived interface, and when the device child is detroyed ::release() will be called on the <see cref=\"T:SharpDX.ComObject\"/>-derived interface.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceChild::SetPrivateDataInterface']/*\"/>\t\n            <msdn-id>ff476384</msdn-id>\t\n            <unmanaged>HRESULT ID3D11DeviceChild::SetPrivateDataInterface([In] const GUID&amp; guid,[In, Optional] const IUnknown* pData)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceChild::SetPrivateDataInterface</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.DeviceChild.DebugName\">\n            <summary>\n            Gets or sets the debug-name for this object.\n            </summary>\n            <value>\n            The debug name.\n            </value>\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.DeviceChild.Device\">\n            <summary>\t\n            <p>Get a reference to the device that created this interface.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Any returned interfaces will have their reference count incremented by one, so be sure to call ::release() on the returned reference(s) before they are freed or else you will have a memory leak.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceChild::GetDevice']/*\"/>\t\n            <msdn-id>ff476381</msdn-id>\t\n            <unmanaged>GetDevice</unmanaged>\t\n            <unmanaged-short>GetDevice</unmanaged-short>\t\n            <unmanaged>void ID3D11DeviceChild::GetDevice([Out] ID3D11Device** ppDevice)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.BlendState.#ctor(SharpDX.Direct3D11.Device,SharpDX.Direct3D11.BlendStateDescription)\">\n            <summary>\n              Constructs a new <see cref = \"T:SharpDX.Direct3D11.BlendState\" /> based on the specified description.\n            </summary>\n            <param name = \"device\">The device with which to associate the state object.</param>\n            <param name = \"description\">The state description.</param>\n            <returns>The newly created object.</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.BlendState.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D11.BlendState\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.BlendState.op_Explicit(System.IntPtr)~SharpDX.Direct3D11.BlendState\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D11.BlendState\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.BlendState.GetDescription(SharpDX.Direct3D11.BlendStateDescription@)\">\n            <summary>\t\n            <p>Gets the description for blending state that you used to create the blend-state object.</p>\t\n            </summary>\t\n            <param name=\"descRef\"><dd>  <p>A reference to a <strong><see cref=\"T:SharpDX.Direct3D11.BlendStateDescription\"/></strong> structure that receives a description of the blend state.</p> </dd></param>\t\n            <remarks>\t\n            <p>You use the description for blending state in a call to the <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateBlendState(SharpDX.Direct3D11.BlendStateDescription@,SharpDX.Direct3D11.BlendState)\"/></strong> method to create the blend-state object.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11BlendState::GetDesc']/*\"/>\t\n            <msdn-id>ff476350</msdn-id>\t\n            <unmanaged>void ID3D11BlendState::GetDesc([Out] D3D11_BLEND_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>ID3D11BlendState::GetDesc</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.BlendState.Description\">\n            <summary>\t\n            <p>Gets the description for blending state that you used to create the blend-state object.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>You use the description for blending state in a call to the <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateBlendState(SharpDX.Direct3D11.BlendStateDescription@,SharpDX.Direct3D11.BlendState)\"/></strong> method to create the blend-state object.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11BlendState::GetDesc']/*\"/>\t\n            <msdn-id>ff476350</msdn-id>\t\n            <unmanaged>GetDesc</unmanaged>\t\n            <unmanaged-short>GetDesc</unmanaged-short>\t\n            <unmanaged>void ID3D11BlendState::GetDesc([Out] D3D11_BLEND_DESC* pDesc)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.BlendStateDescription\">\n            <summary>\t\n            <p>Describes the blend state that you use in a call to <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateBlendState(SharpDX.Direct3D11.BlendStateDescription@,SharpDX.Direct3D11.BlendState)\"/></strong> to create a blend-state object.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Here are the default values for blend state.</p><table> <tr><th>State</th><th>Default Value</th></tr> <tr><td>AlphaToCoverageEnable</td><td><strong><see cref=\"F:SharpDX.Result.False\"/></strong></td></tr> <tr><td>IndependentBlendEnable</td><td><strong><see cref=\"F:SharpDX.Result.False\"/></strong></td></tr> <tr><td>RenderTarget[0].BlendEnable</td><td><strong><see cref=\"F:SharpDX.Result.False\"/></strong></td></tr> <tr><td>RenderTarget[0].SrcBlend</td><td><see cref=\"F:SharpDX.Direct3D11.BlendOption.One\"/></td></tr> <tr><td>RenderTarget[0].DestBlend</td><td><see cref=\"F:SharpDX.Direct3D11.BlendOption.Zero\"/></td></tr> <tr><td>RenderTarget[0].BlendOp</td><td><see cref=\"F:SharpDX.Direct3D11.BlendOperation.Add\"/></td></tr> <tr><td>RenderTarget[0].SrcBlendAlpha</td><td><see cref=\"F:SharpDX.Direct3D11.BlendOption.One\"/></td></tr> <tr><td>RenderTarget[0].DestBlendAlpha</td><td><see cref=\"F:SharpDX.Direct3D11.BlendOption.Zero\"/></td></tr> <tr><td>RenderTarget[0].BlendOpAlpha</td><td><see cref=\"F:SharpDX.Direct3D11.BlendOperation.Add\"/></td></tr> <tr><td>RenderTarget[0].RenderTargetWriteMask</td><td><see cref=\"F:SharpDX.Direct3D11.ColorWriteMaskFlags.All\"/></td></tr> </table><p>?</p><p><strong>Note</strong>??<strong><see cref=\"T:SharpDX.Direct3D11.BlendStateDescription\"/></strong> is identical to <strong><see cref=\"!:SharpDX.Direct3D10.BlendStateDescription1\"/></strong>.</p><p>If the driver type is set to <strong><see cref=\"F:SharpDX.Direct3D.DriverType.Hardware\"/></strong>, the feature level is set to less than or equal to <strong><see cref=\"F:SharpDX.Direct3D.FeatureLevel.Level_9_3\"/></strong>, and the pixel format of the render target is set to <strong><see cref=\"F:SharpDX.DXGI.Format.R8G8B8A8_UNorm_SRgb\"/></strong>, <strong><see cref=\"F:SharpDX.DXGI.Format.B8G8R8A8_UNorm_SRgb\"/></strong>, or <strong><see cref=\"F:SharpDX.DXGI.Format.B8G8R8X8_UNorm_SRgb\"/></strong>, the display device performs the blend in standard RGB (sRGB) space and not in linear space. However, if the feature level is set to greater than <strong><see cref=\"F:SharpDX.Direct3D.FeatureLevel.Level_9_3\"/></strong>, the display device performs the blend in linear space, which is ideal.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_BLEND_DESC']/*\"/>\t\n            <msdn-id>ff476087</msdn-id>\t\n            <unmanaged>D3D11_BLEND_DESC</unmanaged>\t\n            <unmanaged-short>D3D11_BLEND_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.BlendStateDescription.Default\">\n            <summary>\n            Returns default values for <see cref=\"T:SharpDX.Direct3D11.BlendStateDescription\"/>. \n            </summary>\n            <remarks>\n            See MSDN documentation for default values.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.BlendStateDescription.Clone\">\n            <summary>\n            Clones this instance.\n            </summary>\n            <returns>A copy of this instance.</returns>\n            <remarks>\n            Because this structure contains an array, it is not possible to modify it without making an explicit clone method.\n            </remarks>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.BlendStateDescription.AlphaToCoverageEnable\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_BLEND_DESC::AlphaToCoverageEnable']/*\"/>\t\n            <unmanaged>BOOL AlphaToCoverageEnable</unmanaged>\t\n            <unmanaged-short>BOOL AlphaToCoverageEnable</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.BlendStateDescription.IndependentBlendEnable\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_BLEND_DESC::IndependentBlendEnable']/*\"/>\t\n            <unmanaged>BOOL IndependentBlendEnable</unmanaged>\t\n            <unmanaged-short>BOOL IndependentBlendEnable</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.BlendStateDescription.RenderTarget\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_BLEND_DESC::RenderTarget']/*\"/>\t\n            <unmanaged>D3D11_RENDER_TARGET_BLEND_DESC RenderTarget[8]</unmanaged>\t\n            <unmanaged-short>D3D11_RENDER_TARGET_BLEND_DESC RenderTarget</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.Buffer\">\n            <summary>\t\n            <p>A buffer interface accesses a buffer resource, which is unstructured memory. Buffers typically store vertex or index data.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>There are three types of buffers: vertex, index, or a shader-constant buffer. Create a buffer resource by calling <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateBuffer(SharpDX.Direct3D11.BufferDescription@,System.Nullable{SharpDX.DataBox},SharpDX.Direct3D11.Buffer)\"/></strong>.</p><p>A buffer must be bound to the pipeline before it can be accessed. Buffers can be bound to the input-assembler stage by calls to <strong><see cref=\"M:SharpDX.Direct3D11.InputAssemblerStage.SetVertexBuffers(System.Int32,SharpDX.Direct3D11.VertexBufferBinding)\"/></strong> and <strong><see cref=\"M:SharpDX.Direct3D11.InputAssemblerStage.SetIndexBuffer(SharpDX.Direct3D11.Buffer,SharpDX.DXGI.Format,System.Int32)\"/></strong>, to the stream-output stage by a call to <strong><see cref=\"M:SharpDX.Direct3D11.StreamOutputStage.SetTargets(SharpDX.Direct3D11.StreamOutputBufferBinding[])\"/></strong>, and to a shader stage by calling the appropriate shader method (such as <strong><see cref=\"M:SharpDX.Direct3D11.VertexShaderStage.SetConstantBuffers(System.Int32,System.Int32,System.IntPtr)\"/></strong> for example).</p><p>Buffers can be bound to multiple pipeline stages simultaneously for reading. A buffer can also be bound to a single pipeline stage for writing; however, the same buffer cannot be bound for reading and writing simultaneously.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Buffer']/*\"/>\t\n            <msdn-id>ff476351</msdn-id>\t\n            <unmanaged>ID3D11Buffer</unmanaged>\t\n            <unmanaged-short>ID3D11Buffer</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.Resource\">\n            <summary>\t\n            <p>A resource interface provides common actions on all resources.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>A resource interface cannot be created directly; instead, buffers and textures are created that inherit from a resource interface (see Creating Buffer Resources or Creating Texture Resources).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Resource']/*\"/>\t\n            <msdn-id>ff476584</msdn-id>\t\n            <unmanaged>ID3D11Resource</unmanaged>\t\n            <unmanaged-short>ID3D11Resource</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.Resource.MaximumMipLevels\">\n            <summary>Constant MaximumMipLevels.</summary>\n            <unmanaged>D3D11_REQ_MIP_LEVELS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.Resource.ResourceSizeInMegabytes\">\n            <summary>Constant ResourceSizeInMegabytes.</summary>\n            <unmanaged>D3D11_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_A_TERM</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.Resource.MaximumTexture1DArraySize\">\n            <summary>Constant MaximumTexture1DArraySize.</summary>\n            <unmanaged>D3D11_REQ_TEXTURE1D_ARRAY_AXIS_DIMENSION</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.Resource.MaximumTexture2DArraySize\">\n            <summary>Constant MaximumTexture2DArraySize.</summary>\n            <unmanaged>D3D11_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.Resource.MaximumTexture1DSize\">\n            <summary>Constant MaximumTexture1DSize.</summary>\n            <unmanaged>D3D11_REQ_TEXTURE1D_U_DIMENSION</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.Resource.MaximumTexture2DSize\">\n            <summary>Constant MaximumTexture2DSize.</summary>\n            <unmanaged>D3D11_REQ_TEXTURE2D_U_OR_V_DIMENSION</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.Resource.MaximumTexture3DSize\">\n            <summary>Constant MaximumTexture3DSize.</summary>\n            <unmanaged>D3D11_REQ_TEXTURE3D_U_V_OR_W_DIMENSION</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.Resource.MaximumTextureCubeSize\">\n            <summary>Constant MaximumTextureCubeSize.</summary>\n            <unmanaged>D3D11_REQ_TEXTURECUBE_DIMENSION</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Resource.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D11.Resource\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Resource.op_Explicit(System.IntPtr)~SharpDX.Direct3D11.Resource\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D11.Resource\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Resource.GetDimension(SharpDX.Direct3D11.ResourceDimension@)\">\n            <summary>\t\n            <p>Get the type of the resource.</p>\t\n            </summary>\t\n            <param name=\"resourceDimensionRef\"><dd>  <p>Pointer to the resource type (see <strong><see cref=\"T:SharpDX.Direct3D11.ResourceDimension\"/></strong>).</p> </dd></param>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Resource::GetType']/*\"/>\t\n            <msdn-id>ff476586</msdn-id>\t\n            <unmanaged>void ID3D11Resource::GetType([Out] D3D11_RESOURCE_DIMENSION* pResourceDimension)</unmanaged>\t\n            <unmanaged-short>ID3D11Resource::GetType</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Resource.SetEvictionPriority(System.Int32)\">\n            <summary>\t\n            <p>Set the eviction priority of a resource.</p>\t\n            </summary>\t\n            <param name=\"evictionPriority\"><dd>  <p>Eviction priority for the resource, which is one of the following values:</p> <ul> <li><see cref=\"F:SharpDX.DXGI.ResourcePriority.Minimum\"/></li> <li><see cref=\"F:SharpDX.DXGI.ResourcePriority.Low\"/></li> <li><see cref=\"F:SharpDX.DXGI.ResourcePriority.Normal\"/></li> <li><see cref=\"F:SharpDX.DXGI.ResourcePriority.High\"/></li> <li><see cref=\"F:SharpDX.DXGI.ResourcePriority.Maximum\"/></li> </ul> </dd></param>\t\n            <remarks>\t\n            <p>Resource priorities determine which resource to evict from video memory when the system has run out of video memory. The resource will not be lost; it will be removed from video memory and placed into system memory, or possibly placed onto the hard drive. The resource will be loaded back into video memory when it is required.</p><p>A resource that is set to the maximum priority, <see cref=\"F:SharpDX.DXGI.ResourcePriority.Maximum\"/>, is only evicted if there is no other way of resolving the incoming memory request. The Windows Display Driver Model (WDDM) tries to split an incoming memory request to its minimum size and evict lower-priority resources before evicting a resource with maximum priority.</p><p>Changing the priorities of resources should be done carefully. The wrong eviction priorities could be a detriment to performance rather than an improvement. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Resource::SetEvictionPriority']/*\"/>\t\n            <msdn-id>ff476587</msdn-id>\t\n            <unmanaged>void ID3D11Resource::SetEvictionPriority([In] unsigned int EvictionPriority)</unmanaged>\t\n            <unmanaged-short>ID3D11Resource::SetEvictionPriority</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Resource.GetEvictionPriority\">\n            <summary>\t\n            <p>Get the eviction priority of a resource.</p>\t\n            </summary>\t\n            <returns><p>One of the following values, which specifies the eviction priority for the resource:</p><ul> <li><see cref=\"F:SharpDX.DXGI.ResourcePriority.Minimum\"/></li> <li><see cref=\"F:SharpDX.DXGI.ResourcePriority.Low\"/></li> <li><see cref=\"F:SharpDX.DXGI.ResourcePriority.Normal\"/></li> <li><see cref=\"F:SharpDX.DXGI.ResourcePriority.High\"/></li> <li><see cref=\"F:SharpDX.DXGI.ResourcePriority.Maximum\"/></li> </ul></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Resource::GetEvictionPriority']/*\"/>\t\n            <msdn-id>ff476585</msdn-id>\t\n            <unmanaged>unsigned int ID3D11Resource::GetEvictionPriority()</unmanaged>\t\n            <unmanaged-short>ID3D11Resource::GetEvictionPriority</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Resource.FromSwapChain``1(SharpDX.DXGI.SwapChain,System.Int32)\">\n            <summary>\n              Gets a swap chain back buffer.\n            </summary>\n            <typeparam name = \"T\">The type of the buffer.</typeparam>\n            <param name = \"swapChain\">The swap chain to get the buffer from.</param>\n            <param name = \"index\">The index of the desired buffer.</param>\n            <returns>The buffer interface, or <c>null</c> on failure.</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Resource.FromFile``1(SharpDX.Direct3D11.Device,System.String)\">\n            <summary>\n              Loads a texture from an image file.\n            </summary>\n            <param name = \"device\">The device used to load the texture.</param>\n            <param name = \"fileName\">Path to the file on disk.</param>\n            <returns>The loaded texture object.</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Resource.FromFile``1(SharpDX.Direct3D11.Device,System.String,SharpDX.Direct3D11.ImageLoadInformation)\">\n            <summary>\n              Loads a texture from an image file.\n            </summary>\n            <param name = \"device\">The device used to load the texture.</param>\n            <param name = \"fileName\">Path to the file on disk.</param>\n            <param name = \"loadInfo\">Specifies information used to load the texture.</param>\n            <returns>The loaded texture object.</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Resource.FromFile(SharpDX.Direct3D11.Device,System.String,SharpDX.Direct3D11.ImageLoadInformation)\">\n            <summary>\n              Loads a texture from an image file.\n            </summary>\n            <param name = \"device\">The device used to load the texture.</param>\n            <param name = \"fileName\">Path to the file on disk.</param>\n            <param name = \"loadInfo\">Specifies information used to load the texture.</param>\n            <returns>The loaded texture object.</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Resource.FromFile(SharpDX.Direct3D11.Device,System.String)\">\n            <summary>\n              Loads a texture from an image file.\n            </summary>\n            <param name = \"device\">The device used to load the texture.</param>\n            <param name = \"fileName\">Path to the file on disk.</param>\n            <returns>The loaded texture object.</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Resource.LoadTextureFromTexture(SharpDX.Direct3D11.DeviceContext,SharpDX.Direct3D11.Resource,SharpDX.Direct3D11.Resource,SharpDX.Direct3D11.TextureLoadInformation)\">\n            <summary>\t\n            Load a texture from a texture.\t\n            </summary>\n            <param name=\"context\">A reference to a valid <see cref=\"T:SharpDX.Direct3D11.DeviceContext\"/></param>\n            <param name=\"source\">Pointer to the source texture. See <see cref=\"T:SharpDX.Direct3D11.Resource\"/>. </param>\n            <param name=\"destination\">Pointer to the destination texture. See <see cref=\"T:SharpDX.Direct3D11.Resource\"/>. </param>\n            <param name=\"loadInformation\">Pointer to texture loading parameters. See <see cref=\"T:SharpDX.Direct3D11.TextureLoadInformation\"/>. </param>\n            <returns>The return value is one of the values listed in {{Direct3D 10 Return Codes}}. </returns>\n            <unmanaged>HRESULT D3DX10LoadTextureFromTexture([None] ID3D10Resource* pSrcTexture,[None] D3DX10_TEXTURE_LOAD_INFO* pLoadInfo,[None] ID3D10Resource* pDstTexture)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Resource.FilterTexture(SharpDX.Direct3D11.DeviceContext,System.Int32,SharpDX.Direct3D11.FilterFlags)\">\n            <summary>\t\n            Generates mipmap chain using a particular texture filter for this texture instance.\n            </summary>\t\n            <param name=\"deviceContext\"><para>A reference to an <see cref=\"T:SharpDX.Direct3D11.DeviceContext\"/> object.</para></param>\t\n            <param name=\"sourceLevel\"><para>The mipmap level whose data is used to generate the rest of the mipmap chain.</para></param>\t\n            <param name=\"mipFilter\"><para>Flags controlling how each miplevel is filtered (or D3DX11_DEFAULT for <see cref=\"F:SharpDX.Direct3D11.FilterFlags.Linear\"/>). See <see cref=\"T:SharpDX.Direct3D11.FilterFlags\"/>.</para></param>\t\n            <returns>The return value is one of the values listed in Direct3D 11 Return Codes.</returns>\t\n            <unmanaged>HRESULT D3DX11FilterTexture([In] ID3D11DeviceContext* pContext,[In] ID3D11Resource* pTexture,[In] unsigned int SrcLevel,[In] unsigned int MipFilter)</unmanaged>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Resource.ToFile(SharpDX.Direct3D11.DeviceContext,SharpDX.Direct3D11.Resource,SharpDX.Direct3D11.ImageFileFormat,System.String)\">\n            <summary>\n              Saves a texture to file.\n            </summary>\n            <param name = \"context\">The device used to save the texture.</param>\n            <param name = \"texture\">The texture to save.</param>\n            <param name = \"format\">The format the texture will be saved as.</param>\n            <param name = \"fileName\">Name of the destination output file where the texture will be saved.</param>\n            <returns>A <see cref = \"T:SharpDX.Result\" /> object describing the result of the operation.</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Resource.FromMemory``1(SharpDX.Direct3D11.Device,System.Byte[])\">\n            <summary>\n              Loads a texture from an image in memory.\n            </summary>\n            <param name = \"device\">The device used to load the texture.</param>\n            <param name = \"memory\">Array of memory containing the image data to load.</param>\n            <returns>The loaded texture object.</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Resource.FromMemory``1(SharpDX.Direct3D11.Device,System.Byte[],SharpDX.Direct3D11.ImageLoadInformation)\">\n            <summary>\n              Loads a texture from an image in memory.\n            </summary>\n            <param name = \"device\">The device used to load the texture.</param>\n            <param name = \"memory\">Array of memory containing the image data to load.</param>\n            <param name = \"loadInfo\">Specifies information used to load the texture.</param>\n            <returns>The loaded texture object.</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Resource.FromMemory(SharpDX.Direct3D11.Device,System.Byte[])\">\n            <summary>\n              Loads a texture from an image in memory.\n            </summary>\n            <param name = \"device\">The device used to load the texture.</param>\n            <param name = \"memory\">Array of memory containing the image data to load.</param>\n            <returns>The loaded texture object.</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Resource.FromMemory(SharpDX.Direct3D11.Device,System.Byte[],SharpDX.Direct3D11.ImageLoadInformation)\">\n            <summary>\n              Loads a texture from an image in memory.\n            </summary>\n            <param name = \"device\">The device used to load the texture.</param>\n            <param name = \"memory\">Array of memory containing the image data to load.</param>\n            <param name = \"loadInfo\">Specifies information used to load the texture.</param>\n            <returns>The loaded texture object.</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Resource.FromStream``1(SharpDX.Direct3D11.Device,System.IO.Stream,System.Int32)\">\n            <summary>\n              Loads a texture from a stream of data.\n            </summary>\n            <param name = \"device\">The device used to load the texture.</param>\n            <param name = \"stream\">A stream containing the image data to load.</param>\n            <param name = \"sizeInBytes\">Size of the image to load.</param>\n            <returns>The loaded texture object.</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Resource.FromStream``1(SharpDX.Direct3D11.Device,System.IO.Stream,System.Int32,SharpDX.Direct3D11.ImageLoadInformation)\">\n            <summary>\n              Loads a texture from a stream of data.\n            </summary>\n            <param name = \"device\">The device used to load the texture.</param>\n            <param name = \"stream\">A stream containing the image data to load.</param>\n            <param name = \"sizeInBytes\">Size of the image to load.</param>\n            <param name = \"loadInfo\">Specifies information used to load the texture.</param>\n            <returns>The loaded texture object.</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Resource.FromStream(SharpDX.Direct3D11.Device,System.IO.Stream,System.Int32)\">\n            <summary>\n              Loads a texture from a stream of data.\n            </summary>\n            <param name = \"device\">The device used to load the texture.</param>\n            <param name = \"stream\">A stream containing the image data to load.</param>\n            <param name = \"sizeInBytes\">Size of the image to load.</param>\n            <returns>The loaded texture object.</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Resource.FromStream(SharpDX.Direct3D11.Device,System.IO.Stream,System.Int32,SharpDX.Direct3D11.ImageLoadInformation)\">\n            <summary>\n              Loads a texture from a stream of data.\n            </summary>\n            <param name = \"device\">The device used to load the texture.</param>\n            <param name = \"stream\">A stream containing the image data to load.</param>\n            <param name = \"sizeInBytes\">Size of the image to load.</param>\n            <param name = \"loadInfo\">Specifies information used to load the texture.</param>\n            <returns>The loaded texture object.</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Resource.ToStream``1(SharpDX.Direct3D11.DeviceContext,``0,SharpDX.Direct3D11.ImageFileFormat,System.IO.Stream)\">\n            <summary>\n              Saves a texture to a stream.\n            </summary>\n            <param name = \"context\">The device used to save the texture.</param>\n            <param name = \"texture\">The texture to save.</param>\n            <param name = \"format\">The format the texture will be saved as.</param>\n            <param name = \"stream\">Destination memory stream where the image will be saved.</param>\n            <returns>A <see cref = \"T:SharpDX.Result\" /> object describing the result of the operation.</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Resource.CalculateSubResourceIndex(System.Int32,System.Int32,System.Int32)\">\n            <summary>\n            Calculates the sub resource index from a miplevel.\n            </summary>\n            <param name=\"mipSlice\">A zero-based index for the mipmap level to address; 0 indicates the first, most detailed mipmap level.</param>\n            <param name=\"arraySlice\">The zero-based index for the array level to address; always use 0 for volume (3D) textures.</param>\n            <param name=\"mipLevel\">Number of mipmap levels in the resource.</param>\n            <returns>\n            The index which equals MipSlice + (ArraySlice * MipLevels).\n            </returns>\n            <unmanaged>D3D11CalcSubresource</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Resource.CalculateMipSize(System.Int32,System.Int32)\">\n            <summary>\n            Calculates the resulting size at a single level for an original size.\n            </summary>\n            <param name=\"mipLevel\">The mip level to get the size.</param>\n            <param name=\"baseSize\">Size of the base.</param>\n            <returns>\n            Size of the mipLevel\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Resource.CalculateSubResourceIndex(System.Int32,System.Int32,System.Int32@)\">\n            <summary>\n            Calculates the sub resource index for a particular mipSlice and arraySlice.\n            </summary>\n            <param name=\"mipSlice\">The mip slice.</param>\n            <param name=\"arraySlice\">The array slice.</param>\n            <param name=\"mipSize\">The size of slice. This values is resource dependent. Texture1D -> mipSize of the Width. Texture2D -> mipSize of the Height. Texture3D -> mipsize of the Depth</param>\n            <returns>The resulting miplevel calulated for this instance with this mipSlice and arraySlice.</returns>\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.Resource.Dimension\">\n            <summary>\t\n            <p>Get the type of the resource.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Resource::GetType']/*\"/>\t\n            <msdn-id>ff476586</msdn-id>\t\n            <unmanaged>GetType</unmanaged>\t\n            <unmanaged-short>GetType</unmanaged-short>\t\n            <unmanaged>void ID3D11Resource::GetType([Out] D3D11_RESOURCE_DIMENSION* pResourceDimension)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.Resource.EvictionPriority\">\n            <summary>\t\n            <p>Get or sets the eviction priority of a resource.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Resource::GetEvictionPriority']/*\"/>\t\n            <msdn-id>ff476585</msdn-id>\t\n            <unmanaged>GetEvictionPriority / SetEvictionPriority</unmanaged>\t\n            <unmanaged-short>GetEvictionPriority</unmanaged-short>\t\n            <unmanaged>unsigned int ID3D11Resource::GetEvictionPriority()</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Buffer.#ctor(SharpDX.Direct3D11.Device,SharpDX.Direct3D11.BufferDescription)\">\n            <summary>\n              Initializes a new instance of the <see cref = \"T:SharpDX.Direct3D11.Buffer\" /> class.\n            </summary>\n            <param name = \"device\">The device with which to associate the buffer.</param>\n            <param name = \"description\">The description of the buffer.</param>\n            <msdn-id>ff476501</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateBuffer([In] const D3D11_BUFFER_DESC* pDesc,[In, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Buffer** ppBuffer)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Buffer.#ctor(SharpDX.Direct3D11.Device,SharpDX.DataStream,SharpDX.Direct3D11.BufferDescription)\">\n            <summary>\n              Initializes a new instance of the <see cref = \"T:SharpDX.Direct3D11.Buffer\" /> class.\n            </summary>\n            <param name = \"device\">The device with which to associate the buffer.</param>\n            <param name = \"data\">Initial data used to initialize the buffer.</param>\n            <param name = \"description\">The description of the buffer.</param>\n            <msdn-id>ff476501</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateBuffer([In] const D3D11_BUFFER_DESC* pDesc,[In, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Buffer** ppBuffer)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Buffer.#ctor(SharpDX.Direct3D11.Device,System.IntPtr,SharpDX.Direct3D11.BufferDescription)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D11.Buffer\" /> class.\n            </summary>\n            <param name=\"device\">The device with which to associate the buffer.</param>\n            <param name=\"dataPointer\">The data pointer.</param>\n            <param name=\"description\">The description of the buffer.</param>\n            <msdn-id>ff476501</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateBuffer([In] const D3D11_BUFFER_DESC* pDesc,[In, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Buffer** ppBuffer)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Buffer.#ctor(SharpDX.Direct3D11.Device,System.Int32,SharpDX.Direct3D11.ResourceUsage,SharpDX.Direct3D11.BindFlags,SharpDX.Direct3D11.CpuAccessFlags,SharpDX.Direct3D11.ResourceOptionFlags,System.Int32)\">\n            <summary>\n              Initializes a new instance of the <see cref = \"T:SharpDX.Direct3D11.Buffer\" /> class.\n            </summary>\n            <param name = \"device\">The device with which to associate the buffer.</param>\n            <param name = \"sizeInBytes\">The size, in bytes, of the buffer.</param>\n            <param name = \"usage\">The usage pattern for the buffer.</param>\n            <param name = \"bindFlags\">Flags specifying how the buffer will be bound to the pipeline.</param>\n            <param name = \"accessFlags\">Flags specifying how the buffer will be accessible from the CPU.</param>\n            <param name = \"optionFlags\">Miscellaneous resource options.</param>\n            <param name = \"structureByteStride\">The size (in bytes) of the structure element for structured buffers.</param>\n            <msdn-id>ff476501</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateBuffer([In] const D3D11_BUFFER_DESC* pDesc,[In, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Buffer** ppBuffer)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Buffer.#ctor(SharpDX.Direct3D11.Device,SharpDX.DataStream,System.Int32,SharpDX.Direct3D11.ResourceUsage,SharpDX.Direct3D11.BindFlags,SharpDX.Direct3D11.CpuAccessFlags,SharpDX.Direct3D11.ResourceOptionFlags,System.Int32)\">\n            <summary>\n              Initializes a new instance of the <see cref = \"T:SharpDX.Direct3D11.Buffer\" /> class.\n            </summary>\n            <param name = \"device\">The device with which to associate the buffer.</param>\n            <param name = \"data\">Initial data used to initialize the buffer.</param>\n            <param name = \"sizeInBytes\">The size, in bytes, of the buffer.</param>\n            <param name = \"usage\">The usage pattern for the buffer.</param>\n            <param name = \"bindFlags\">Flags specifying how the buffer will be bound to the pipeline.</param>\n            <param name = \"accessFlags\">Flags specifying how the buffer will be accessible from the CPU.</param>\n            <param name = \"optionFlags\">Miscellaneous resource options.</param>\n            <param name = \"structureByteStride\">The size (in bytes) of the structure element for structured buffers.</param>\n            <msdn-id>ff476501</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateBuffer([In] const D3D11_BUFFER_DESC* pDesc,[In, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Buffer** ppBuffer)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Buffer.Create``1(SharpDX.Direct3D11.Device,SharpDX.Direct3D11.BindFlags,``0@,System.Int32,SharpDX.Direct3D11.ResourceUsage,SharpDX.Direct3D11.CpuAccessFlags,SharpDX.Direct3D11.ResourceOptionFlags,System.Int32)\">\n            <summary>\n            Creates a new instance of the <see cref=\"T:SharpDX.Direct3D11.Buffer\"/> class.\n            </summary>\n            <typeparam name=\"T\">Type of the data to upload</typeparam>\n            <param name=\"device\">The device with which to associate the buffer.</param>\n            <param name=\"bindFlags\">Flags specifying how the buffer will be bound to the pipeline.</param>\n            <param name=\"data\">Initial data used to initialize the buffer.</param>\n            <param name=\"sizeInBytes\">The size, in bytes, of the buffer. If 0 is specified, sizeof(T) is used. </param>\n            <param name=\"usage\">The usage pattern for the buffer.</param>\n            <param name=\"accessFlags\">Flags specifying how the buffer will be accessible from the CPU.</param>\n            <param name=\"optionFlags\">Miscellaneous resource options.</param>\n            <param name=\"structureByteStride\">The size (in bytes) of the structure element for structured buffers.</param>\n            <returns>An initialized buffer</returns>\n            <msdn-id>ff476501</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateBuffer([In] const D3D11_BUFFER_DESC* pDesc,[In, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Buffer** ppBuffer)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Buffer.Create``1(SharpDX.Direct3D11.Device,SharpDX.Direct3D11.BindFlags,``0[],System.Int32,SharpDX.Direct3D11.ResourceUsage,SharpDX.Direct3D11.CpuAccessFlags,SharpDX.Direct3D11.ResourceOptionFlags,System.Int32)\">\n            <summary>\n            Creates a new instance of the <see cref=\"T:SharpDX.Direct3D11.Buffer\"/> class.\n            </summary>\n            <typeparam name=\"T\">Type of the data to upload</typeparam>\n            <param name=\"device\">The device with which to associate the buffer.</param>\n            <param name=\"bindFlags\">Flags specifying how the buffer will be bound to the pipeline.</param>\n            <param name=\"data\">Initial data used to initialize the buffer.</param>\n            <param name=\"sizeInBytes\">The size, in bytes, of the buffer. If 0 is specified, sizeof(T) * data.Length is used.</param>\n            <param name=\"usage\">The usage pattern for the buffer.</param>\n            <param name=\"accessFlags\">Flags specifying how the buffer will be accessible from the CPU.</param>\n            <param name=\"optionFlags\">Miscellaneous resource options.</param>\n            <param name=\"structureByteStride\">The size (in bytes) of the structure element for structured buffers.</param>\n            <returns>An initialized buffer</returns>\n            <msdn-id>ff476501</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateBuffer([In] const D3D11_BUFFER_DESC* pDesc,[In, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Buffer** ppBuffer)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Buffer.Create``1(SharpDX.Direct3D11.Device,``0@,SharpDX.Direct3D11.BufferDescription)\">\n            <summary>\n            Creates a new instance of the <see cref=\"T:SharpDX.Direct3D11.Buffer\"/> class.\n            </summary>\n            <typeparam name=\"T\">Type of the data to upload</typeparam>\n            <param name=\"device\">The device with which to associate the buffer.</param>\n            <param name=\"data\">Initial data used to initialize the buffer.</param>\n            <param name=\"description\">The description.</param>\n            <returns>\n            An initialized buffer\n            </returns>\n            <remarks>\n            If the <see cref=\"F:SharpDX.Direct3D11.BufferDescription.SizeInBytes\"/> is at 0, sizeof(T) is used.\n            </remarks>\n            <msdn-id>ff476501</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateBuffer([In] const D3D11_BUFFER_DESC* pDesc,[In, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Buffer** ppBuffer)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Buffer.Create``1(SharpDX.Direct3D11.Device,``0[],SharpDX.Direct3D11.BufferDescription)\">\n            <summary>\n            Creates a new instance of the <see cref=\"T:SharpDX.Direct3D11.Buffer\"/> class.\n            </summary>\n            <typeparam name=\"T\">Type of the data to upload</typeparam>\n            <param name=\"device\">The device with which to associate the buffer.</param>\n            <param name=\"data\">Initial data used to initialize the buffer.</param>\n            <param name=\"description\">The description.</param>\n            <returns>\n            An initialized buffer\n            </returns>\n            <remarks>\n            If the <see cref=\"F:SharpDX.Direct3D11.BufferDescription.SizeInBytes\"/> is at 0, sizeof(T) * data.Length is used.\n            </remarks>\n            <msdn-id>ff476501</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateBuffer([In] const D3D11_BUFFER_DESC* pDesc,[In, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Buffer** ppBuffer)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Buffer.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D11.Buffer\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Buffer.op_Explicit(System.IntPtr)~SharpDX.Direct3D11.Buffer\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D11.Buffer\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Buffer.GetDescription(SharpDX.Direct3D11.BufferDescription@)\">\n            <summary>\t\n            <p>Get the properties of a buffer resource.</p>\t\n            </summary>\t\n            <param name=\"descRef\"><dd>  <p>Pointer to a resource description (see <strong><see cref=\"T:SharpDX.Direct3D11.BufferDescription\"/></strong>) filled in by the method.</p> </dd></param>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Buffer::GetDesc']/*\"/>\t\n            <msdn-id>ff476352</msdn-id>\t\n            <unmanaged>void ID3D11Buffer::GetDesc([Out] D3D11_BUFFER_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>ID3D11Buffer::GetDesc</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.Buffer.Description\">\n            <summary>\t\n            <p>Get the properties of a buffer resource.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Buffer::GetDesc']/*\"/>\t\n            <msdn-id>ff476352</msdn-id>\t\n            <unmanaged>GetDesc</unmanaged>\t\n            <unmanaged-short>GetDesc</unmanaged-short>\t\n            <unmanaged>void ID3D11Buffer::GetDesc([Out] D3D11_BUFFER_DESC* pDesc)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.BufferDescription\">\n            <summary>\t\n            <p>Describes a buffer resource.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure is used by <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateBuffer(SharpDX.Direct3D11.BufferDescription@,System.Nullable{SharpDX.DataBox},SharpDX.Direct3D11.Buffer)\"/></strong> to create buffer resources.</p><p>In addition to this structure, there is also a derived structure in D3D11.h (CD3D11_BUFFER_DESC) which behaves like an inherited class to help create a buffer description.</p><p>If the bind flag is <see cref=\"F:SharpDX.Direct3D11.BindFlags.ConstantBuffer\"/> then the <strong>ByteWidth</strong> value must be in multiples of 16, and less than or equal to D3D11_REQ_CONSTANT_BUFFER_ELEMENT_COUNT.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_BUFFER_DESC']/*\"/>\t\n            <msdn-id>ff476092</msdn-id>\t\n            <unmanaged>D3D11_BUFFER_DESC</unmanaged>\t\n            <unmanaged-short>D3D11_BUFFER_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.BufferDescription.#ctor(System.Int32,SharpDX.Direct3D11.ResourceUsage,SharpDX.Direct3D11.BindFlags,SharpDX.Direct3D11.CpuAccessFlags,SharpDX.Direct3D11.ResourceOptionFlags,System.Int32)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D11.BufferDescription\"/> struct.\n            </summary>\n            <param name=\"sizeInBytes\">The size in bytes.</param>\n            <param name=\"usage\">The usage.</param>\n            <param name=\"bindFlags\">The bind flags.</param>\n            <param name=\"cpuAccessFlags\">The cpu access flags.</param>\n            <param name=\"optionFlags\">The option flags.</param>\n            <param name=\"structureByteStride\">The structure byte stride.</param>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.BufferDescription.SizeInBytes\">\n            <summary>\t\n            <dd> <p>Size of the buffer in bytes.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_BUFFER_DESC::ByteWidth']/*\"/>\t\n            <msdn-id>ff476092</msdn-id>\t\n            <unmanaged>unsigned int ByteWidth</unmanaged>\t\n            <unmanaged-short>unsigned int ByteWidth</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.BufferDescription.Usage\">\n            <summary>\t\n            <dd> <p>Identify how the buffer is expected to be read from and written to. Frequency of update is a key factor. The most common value is typically <see cref=\"F:SharpDX.Direct3D11.ResourceUsage.Default\"/>; see <strong><see cref=\"T:SharpDX.Direct3D11.ResourceUsage\"/></strong> for all possible values.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_BUFFER_DESC::Usage']/*\"/>\t\n            <msdn-id>ff476092</msdn-id>\t\n            <unmanaged>D3D11_USAGE Usage</unmanaged>\t\n            <unmanaged-short>D3D11_USAGE Usage</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.BufferDescription.BindFlags\">\n            <summary>\t\n            <dd> <p>Identify how the buffer will be bound to the pipeline. Flags (see <strong><see cref=\"T:SharpDX.Direct3D11.BindFlags\"/></strong>) can be combined with a logical OR.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_BUFFER_DESC::BindFlags']/*\"/>\t\n            <msdn-id>ff476092</msdn-id>\t\n            <unmanaged>D3D11_BIND_FLAG BindFlags</unmanaged>\t\n            <unmanaged-short>D3D11_BIND_FLAG BindFlags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.BufferDescription.CpuAccessFlags\">\n            <summary>\t\n            <dd> <p>CPU access flags (see <strong><see cref=\"T:SharpDX.Direct3D11.CpuAccessFlags\"/></strong>) or 0 if no CPU access is necessary. Flags can be combined with a logical OR.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_BUFFER_DESC::CPUAccessFlags']/*\"/>\t\n            <msdn-id>ff476092</msdn-id>\t\n            <unmanaged>D3D11_CPU_ACCESS_FLAG CPUAccessFlags</unmanaged>\t\n            <unmanaged-short>D3D11_CPU_ACCESS_FLAG CPUAccessFlags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.BufferDescription.OptionFlags\">\n            <summary>\t\n            <dd> <p>Miscellaneous flags (see <strong><see cref=\"T:SharpDX.Direct3D11.ResourceOptionFlags\"/></strong>) or 0 if unused. Flags can be combined with a logical OR.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_BUFFER_DESC::MiscFlags']/*\"/>\t\n            <msdn-id>ff476092</msdn-id>\t\n            <unmanaged>D3D11_RESOURCE_MISC_FLAG MiscFlags</unmanaged>\t\n            <unmanaged-short>D3D11_RESOURCE_MISC_FLAG MiscFlags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.BufferDescription.StructureByteStride\">\n            <summary>\t\n            <dd> <p>The size of the structure (in bytes) when it represents a structured buffer.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_BUFFER_DESC::StructureByteStride']/*\"/>\t\n            <msdn-id>ff476092</msdn-id>\t\n            <unmanaged>unsigned int StructureByteStride</unmanaged>\t\n            <unmanaged-short>unsigned int StructureByteStride</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.ClassInstance\">\n            <summary>\t\n            <p>This interface encapsulates an HLSL class.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This interface is created by calling <strong><see cref=\"M:SharpDX.Direct3D11.ClassLinkage.CreateClassInstance(System.String,System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D11.ClassInstance)\"/></strong>. The interface is used when binding shader resources to the pipeline using APIs such as <strong><see cref=\"M:SharpDX.Direct3D11.VertexShaderStage.SetShader(SharpDX.Direct3D11.VertexShader,SharpDX.Direct3D11.ClassInstance[],System.Int32)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11ClassInstance']/*\"/>\t\n            <msdn-id>ff476353</msdn-id>\t\n            <unmanaged>ID3D11ClassInstance</unmanaged>\t\n            <unmanaged-short>ID3D11ClassInstance</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.ClassInstance.#ctor(SharpDX.Direct3D11.ClassLinkage,System.String,System.Int32,System.Int32,System.Int32,System.Int32)\">\n            <summary>\t\n            Initializes a class-instance object that represents an HLSL class instance.\t\n            </summary>\t\n            <remarks>\t\n            Instances can be created (or gotten) before or after a shader is created. Use the same shader linkage object to acquire a class instance and create the shader the instance is going to be used in. For more information about using the <see cref=\"T:SharpDX.Direct3D11.ClassLinkage\"/> interface, see {{Dynamic Linking}}. \t\n            </remarks>\t\n            <param name=\"linkage\">An instance of <see cref=\"P:SharpDX.Direct3D11.ClassInstance.ClassLinkage\"/>.</param>\n            <param name=\"classTypeName\">The type name of a class to initialize. </param>\n            <param name=\"constantBufferOffset\">Identifies the constant buffer that contains the class data. </param>\n            <param name=\"constantVectorOffset\">The four-component vector offset from the start of the constant buffer where the class data will begin. Consequently, this is not a byte offset. </param>\n            <param name=\"textureOffset\">The texture slot for the first texture; there may be multiple textures following the offset. </param>\n            <param name=\"samplerOffset\">The sampler slot for the first sampler; there may be multiple samplers following the offset. </param>\n            <returns>Returns S_OK if successful; otherwise, returns one of the following {{Direct3D 11 Return Codes}}. </returns>\n            <unmanaged>HRESULT ID3D11ClassLinkage::CreateClassInstance([In] const char* pClassTypeName,[In] int ConstantBufferOffset,[In] int ConstantVectorOffset,[In] int TextureOffset,[In] int SamplerOffset,[Out] ID3D11ClassInstance** ppInstance)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.ClassInstance.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D11.ClassInstance\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.ClassInstance.op_Explicit(System.IntPtr)~SharpDX.Direct3D11.ClassInstance\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D11.ClassInstance\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.ClassInstance.GetClassLinkage(SharpDX.Direct3D11.ClassLinkage@)\">\n            <summary>\t\n            <p>Gets the <strong><see cref=\"T:SharpDX.Direct3D11.ClassLinkage\"/></strong> object associated with the current HLSL class.</p>\t\n            </summary>\t\n            <param name=\"linkageOut\">No documentation.</param>\t\n            <remarks>\t\n            <p>For more information about using the <strong><see cref=\"T:SharpDX.Direct3D11.ClassInstance\"/></strong> interface, see Dynamic Linking.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11ClassInstance::GetClassLinkage']/*\"/>\t\n            <msdn-id>ff476354</msdn-id>\t\n            <unmanaged>void ID3D11ClassInstance::GetClassLinkage([Out] ID3D11ClassLinkage** ppLinkage)</unmanaged>\t\n            <unmanaged-short>ID3D11ClassInstance::GetClassLinkage</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.ClassInstance.GetDescription(SharpDX.Direct3D11.ClassInstanceDescription@)\">\n            <summary>\t\n            <p>Gets a description of the current HLSL class.</p>\t\n            </summary>\t\n            <param name=\"descRef\"><dd>  <p>A reference to a <strong><see cref=\"T:SharpDX.Direct3D11.ClassInstanceDescription\"/></strong> structure that describes the current HLSL class.</p> </dd></param>\t\n            <remarks>\t\n            <p>For more information about using the <strong><see cref=\"T:SharpDX.Direct3D11.ClassInstance\"/></strong> interface, see Dynamic Linking.</p><p>An instance is not restricted to being used for a single type in a single shader. An instance is flexible and can be used for any shader that used the same type name or instance name when the instance was generated.</p><ul> <li>A created instance will work for any shader that contains a type of the same type name. For instance, a class instance created with the type name <strong>DefaultShader</strong> would work in any shader that contained a type <strong>DefaultShader</strong> even though several shaders could describe a different type.</li> <li>A gotten instance maps directly to an instance name/index in a shader.  A class instance aquired using GetClassInstance will work for any shader that contains a class instance of the name used to generate the runtime instance, the instance does not have to be the same type in all of the shaders it's used in.</li> </ul><p>An instance does not replace the importance of reflection for a particular shader since a gotten instance will not know its slot location and a created instance only specifies a type name.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11ClassInstance::GetDesc']/*\"/>\t\n            <msdn-id>ff476355</msdn-id>\t\n            <unmanaged>void ID3D11ClassInstance::GetDesc([Out] D3D11_CLASS_INSTANCE_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>ID3D11ClassInstance::GetDesc</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.ClassInstance.GetInstanceName(System.IntPtr,SharpDX.PointerSize@)\">\n            <summary>\t\n            <p>Gets the instance name of the current HLSL class.</p>\t\n            </summary>\t\n            <param name=\"instanceNameRef\"><dd>  <p>The instance name of the current HLSL class.</p> </dd></param>\t\n            <param name=\"bufferLengthRef\"><dd>  <p>The length of the <em>pInstanceName</em> parameter.</p> </dd></param>\t\n            <remarks>\t\n            <p>GetInstanceName will return a valid name only for instances acquired using <strong><see cref=\"M:SharpDX.Direct3D11.ClassLinkage.GetClassInstance(System.String,System.Int32)\"/></strong>.</p><p>For more information about using the <strong><see cref=\"T:SharpDX.Direct3D11.ClassInstance\"/></strong> interface, see Dynamic Linking.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11ClassInstance::GetInstanceName']/*\"/>\t\n            <msdn-id>ff476356</msdn-id>\t\n            <unmanaged>void ID3D11ClassInstance::GetInstanceName([Out, Buffer, Optional] char* pInstanceName,[InOut] SIZE_T* pBufferLength)</unmanaged>\t\n            <unmanaged-short>ID3D11ClassInstance::GetInstanceName</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.ClassInstance.GetTypeName(System.IntPtr,SharpDX.PointerSize@)\">\n            <summary>\t\n            <p>Gets the type of the current HLSL class.</p>\t\n            </summary>\t\n            <param name=\"typeNameRef\"><dd>  <p>Type of the current HLSL class.</p> </dd></param>\t\n            <param name=\"bufferLengthRef\"><dd>  <p>The length of the <em>pTypeName</em> parameter.</p> </dd></param>\t\n            <remarks>\t\n            <p>GetTypeName will return a valid name only for instances acquired using <strong><see cref=\"M:SharpDX.Direct3D11.ClassLinkage.GetClassInstance(System.String,System.Int32)\"/></strong>.</p><p>For more information about using the <strong><see cref=\"T:SharpDX.Direct3D11.ClassInstance\"/></strong> interface, see Dynamic Linking.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11ClassInstance::GetTypeName']/*\"/>\t\n            <msdn-id>ff476357</msdn-id>\t\n            <unmanaged>void ID3D11ClassInstance::GetTypeName([Out, Buffer, Optional] char* pTypeName,[InOut] SIZE_T* pBufferLength)</unmanaged>\t\n            <unmanaged-short>ID3D11ClassInstance::GetTypeName</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.ClassInstance.InstanceName\">\n            <summary>\n              Gets the instance name of the current HLSL class.\n            </summary>\n            <remarks>\n              GetInstanceName will return a valid name only for instances acquired using <see cref=\"M:SharpDX.Direct3D11.ClassLinkage.GetClassInstance(System.String,System.Int32)\"/>.For more information about using the <see cref=\"T:SharpDX.Direct3D11.ClassInstance\"/> interface, see {{Dynamic Linking}}.\n            </remarks>\n            <returns>The instance name of the current HLSL class.</returns>\n            <unmanaged>void GetInstanceName([Out, Buffer, Optional] LPSTR pInstanceName,[InOut] SIZE_T* pBufferLength)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.ClassInstance.TypeName\">\n            <summary>\n              Gets the type of the current HLSL class.\n            </summary>\n            <remarks>\n              GetTypeName will return a valid name only for instances acquired using <see cref=\"M:SharpDX.Direct3D11.ClassLinkage.GetClassInstance(System.String,System.Int32)\"/>.For more information about using the <see cref=\"T:SharpDX.Direct3D11.ClassInstance\"/> interface, see {{Dynamic Linking}}.\n            </remarks>\n            <returns>Type of the current HLSL class.</returns>\n            <unmanaged>void GetTypeName([Out, Buffer, Optional] LPSTR pTypeName,[InOut] SIZE_T* pBufferLength)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.ClassInstance.ClassLinkage\">\n            <summary>\t\n            <p>Gets the <strong><see cref=\"T:SharpDX.Direct3D11.ClassLinkage\"/></strong> object associated with the current HLSL class.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>For more information about using the <strong><see cref=\"T:SharpDX.Direct3D11.ClassInstance\"/></strong> interface, see Dynamic Linking.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11ClassInstance::GetClassLinkage']/*\"/>\t\n            <msdn-id>ff476354</msdn-id>\t\n            <unmanaged>GetClassLinkage</unmanaged>\t\n            <unmanaged-short>GetClassLinkage</unmanaged-short>\t\n            <unmanaged>void ID3D11ClassInstance::GetClassLinkage([Out] ID3D11ClassLinkage** ppLinkage)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.ClassInstance.Description\">\n            <summary>\t\n            <p>Gets a description of the current HLSL class.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>For more information about using the <strong><see cref=\"T:SharpDX.Direct3D11.ClassInstance\"/></strong> interface, see Dynamic Linking.</p><p>An instance is not restricted to being used for a single type in a single shader. An instance is flexible and can be used for any shader that used the same type name or instance name when the instance was generated.</p><ul> <li>A created instance will work for any shader that contains a type of the same type name. For instance, a class instance created with the type name <strong>DefaultShader</strong> would work in any shader that contained a type <strong>DefaultShader</strong> even though several shaders could describe a different type.</li> <li>A gotten instance maps directly to an instance name/index in a shader.  A class instance aquired using GetClassInstance will work for any shader that contains a class instance of the name used to generate the runtime instance, the instance does not have to be the same type in all of the shaders it's used in.</li> </ul><p>An instance does not replace the importance of reflection for a particular shader since a gotten instance will not know its slot location and a created instance only specifies a type name.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11ClassInstance::GetDesc']/*\"/>\t\n            <msdn-id>ff476355</msdn-id>\t\n            <unmanaged>GetDesc</unmanaged>\t\n            <unmanaged-short>GetDesc</unmanaged-short>\t\n            <unmanaged>void ID3D11ClassInstance::GetDesc([Out] D3D11_CLASS_INSTANCE_DESC* pDesc)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.ClassLinkage\">\n            <summary>\t\n            <p>This interface encapsulates an HLSL dynamic linkage.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>A class linkage object can hold up to 64K gotten instances. A gotten instance is a handle that references a variable name in any shader that is created with that linkage object. When you create a shader with a class linkage object, the runtime gathers these instances and stores them in the class linkage object. For more information about how a class linkage object is used, see Storing Variables and Types for Shaders to Share.</p><p>An <strong><see cref=\"T:SharpDX.Direct3D11.ClassLinkage\"/></strong> object is created using the <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateClassLinkage(SharpDX.Direct3D11.ClassLinkage)\"/></strong> method.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11ClassLinkage']/*\"/>\t\n            <msdn-id>ff476358</msdn-id>\t\n            <unmanaged>ID3D11ClassLinkage</unmanaged>\t\n            <unmanaged-short>ID3D11ClassLinkage</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.ClassLinkage.#ctor(SharpDX.Direct3D11.Device)\">\n            <summary>\n              Create a new instance of <see cref = \"T:SharpDX.Direct3D11.ClassLinkage\" />.\n            </summary>\n            <param name = \"device\"></param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.ClassLinkage.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D11.ClassLinkage\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.ClassLinkage.op_Explicit(System.IntPtr)~SharpDX.Direct3D11.ClassLinkage\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D11.ClassLinkage\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.ClassLinkage.GetClassInstance(System.String,System.Int32)\">\n            <summary>\t\n            <p>Gets the class-instance object that represents the specified HLSL class.</p>\t\n            </summary>\t\n            <param name=\"classInstanceNameRef\"><dd>  <p>The name of a class for which to get the class instance.</p> </dd></param>\t\n            <param name=\"instanceIndex\"><dd>  <p>The index of the class instance.</p> </dd></param>\t\n            <returns><dd>  <p>The address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D11.ClassInstance\"/></strong> interface to initialize.</p> </dd></returns>\t\n            <remarks>\t\n            <p>For more information about using the <strong><see cref=\"T:SharpDX.Direct3D11.ClassLinkage\"/></strong> interface, see Dynamic Linking.</p><p>A class instance must have at least 1 data member in order to be available for the runtime to use with <strong><see cref=\"M:SharpDX.Direct3D11.ClassLinkage.GetClassInstance(System.String,System.Int32)\"/></strong>. Any instance with no members will be optimized out of a compiled shader blob as a zero-sized object. If you have a class with no data members, use <strong><see cref=\"M:SharpDX.Direct3D11.ClassLinkage.CreateClassInstance(System.String,System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D11.ClassInstance)\"/></strong> instead.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11ClassLinkage::GetClassInstance']/*\"/>\t\n            <msdn-id>ff476360</msdn-id>\t\n            <unmanaged>HRESULT ID3D11ClassLinkage::GetClassInstance([In] const char* pClassInstanceName,[In] unsigned int InstanceIndex,[Out] ID3D11ClassInstance** ppInstance)</unmanaged>\t\n            <unmanaged-short>ID3D11ClassLinkage::GetClassInstance</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.ClassLinkage.CreateClassInstance(System.String,System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D11.ClassInstance)\">\n            <summary>\t\n            <p>Initializes a class-instance object that represents an HLSL class instance.</p>\t\n            </summary>\t\n            <param name=\"classTypeNameRef\"><dd>  <p>The type name of a class to initialize.</p> </dd></param>\t\n            <param name=\"constantBufferOffset\"><dd>  <p>Identifies the constant buffer that contains the class data.</p> </dd></param>\t\n            <param name=\"constantVectorOffset\"><dd>  <p>The four-component vector offset from the start of the constant buffer where the class data will begin. Consequently, this is not a byte offset.</p> </dd></param>\t\n            <param name=\"textureOffset\"><dd>  <p>The texture slot for the first texture; there may be multiple textures following the offset.</p> </dd></param>\t\n            <param name=\"samplerOffset\"><dd>  <p>The sampler slot for the first sampler; there may be multiple samplers following the offset.</p> </dd></param>\t\n            <param name=\"instanceOut\"><dd>  <p>The address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D11.ClassInstance\"/></strong> interface to initialize.</p> </dd></param>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful; otherwise, returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>Instances can be created (or gotten) before or after a shader is created. Use the same shader linkage object to acquire a class instance and create the shader the instance is going to be used in.</p><p>For more information about using the <strong><see cref=\"T:SharpDX.Direct3D11.ClassLinkage\"/></strong> interface, see Dynamic Linking.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11ClassLinkage::CreateClassInstance']/*\"/>\t\n            <msdn-id>ff476359</msdn-id>\t\n            <unmanaged>HRESULT ID3D11ClassLinkage::CreateClassInstance([In] const char* pClassTypeName,[In] unsigned int ConstantBufferOffset,[In] unsigned int ConstantVectorOffset,[In] unsigned int TextureOffset,[In] unsigned int SamplerOffset,[Out, Fast] ID3D11ClassInstance** ppInstance)</unmanaged>\t\n            <unmanaged-short>ID3D11ClassLinkage::CreateClassInstance</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.ComputeShader\">\n            <summary>\t\n            <p>A compute-shader interface manages an executable program (a compute shader) that controls the compute-shader stage.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The compute-shader interface has no methods; use HLSL to implement your shader functionality. All shaders are implemented from a common set of features referred to as the common-shader core..</p><p>To create a compute-shader interface, call <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateComputeShader(System.IntPtr,SharpDX.PointerSize,SharpDX.Direct3D11.ClassLinkage,SharpDX.Direct3D11.ComputeShader)\"/></strong>. Before using a compute shader you must bind it to the device by calling <strong><see cref=\"M:SharpDX.Direct3D11.ComputeShaderStage.SetShader(SharpDX.Direct3D11.ComputeShader,SharpDX.Direct3D11.ClassInstance[],System.Int32)\"/></strong>.</p><p>This interface is defined in D3D11.h.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11ComputeShader']/*\"/>\t\n            <msdn-id>ff476363</msdn-id>\t\n            <unmanaged>ID3D11ComputeShader</unmanaged>\t\n            <unmanaged-short>ID3D11ComputeShader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.ComputeShader.#ctor(SharpDX.Direct3D11.Device,System.Byte[],SharpDX.Direct3D11.ClassLinkage)\">\n            <summary>\n              Initializes a new instance of the <see cref = \"T:SharpDX.Direct3D11.ComputeShader\" /> class.\n            </summary>\n            <param name = \"device\">The device used to create the shader.</param>\n            <param name = \"shaderBytecode\">The compiled shader bytecode.</param>\n            <param name = \"linkage\">A dynamic class linkage interface.</param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.ComputeShader.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D11.ComputeShader\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.ComputeShader.op_Explicit(System.IntPtr)~SharpDX.Direct3D11.ComputeShader\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D11.ComputeShader\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.DepthStencilStateDescription\">\n            <summary>\t\n            <p>Describes depth-stencil state.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Depth-stencil state controls how depth-stencil testing is performed by the output-merger stage.</p><p>The following table shows the default values of depth-stencil states.</p><table> <tr><th>State</th><th>Default Value</th></tr> <tr><td>DepthEnable</td><td>TRUE</td></tr> <tr><td>DepthWriteMask</td><td><see cref=\"F:SharpDX.Direct3D11.DepthWriteMask.All\"/></td></tr> <tr><td>DepthFunc</td><td><see cref=\"F:SharpDX.Direct3D11.Comparison.Less\"/></td></tr> <tr><td>StencilEnable</td><td><see cref=\"F:SharpDX.Result.False\"/></td></tr> <tr><td>StencilReadMask</td><td>D3D11_DEFAULT_STENCIL_READ_MASK</td></tr> <tr><td>StencilWriteMask</td><td>D3D11_DEFAULT_STENCIL_WRITE_MASK</td></tr> <tr><td> <p>FrontFace.StencilFunc</p> <p>and</p> <p>BackFace.StencilFunc</p> </td><td><see cref=\"F:SharpDX.Direct3D11.Comparison.Always\"/></td></tr> <tr><td> <p>FrontFace.StencilDepthFailOp</p> <p>and</p> <p>BackFace.StencilDepthFailOp</p> </td><td><see cref=\"F:SharpDX.Direct3D11.StencilOperation.Keep\"/></td></tr> <tr><td> <p>FrontFace.StencilPassOp</p> <p>and</p> <p>BackFace.StencilPassOp</p> </td><td><see cref=\"F:SharpDX.Direct3D11.StencilOperation.Keep\"/></td></tr> <tr><td> <p>FrontFace.StencilFailOp</p> <p>and</p> <p>BackFace.StencilFailOp</p> </td><td><see cref=\"F:SharpDX.Direct3D11.StencilOperation.Keep\"/></td></tr> </table><p>?</p><p>The formats that support stenciling are <see cref=\"F:SharpDX.DXGI.Format.D24_UNorm_S8_UInt\"/> and <see cref=\"F:SharpDX.DXGI.Format.D32_Float_S8X24_UInt\"/>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_DEPTH_STENCIL_DESC']/*\"/>\t\n            <msdn-id>ff476110</msdn-id>\t\n            <unmanaged>D3D11_DEPTH_STENCIL_DESC</unmanaged>\t\n            <unmanaged-short>D3D11_DEPTH_STENCIL_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DepthStencilStateDescription.Default\">\n            <summary>\n            Returns default values for <see cref=\"T:SharpDX.Direct3D11.DepthStencilStateDescription\"/>. \n            </summary>\n            <remarks>\n            See MSDN documentation for default values.\n            </remarks>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.DepthStencilStateDescription.IsDepthEnabled\">\n            <summary>\t\n            <dd> <p>Enable depth testing.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_DEPTH_STENCIL_DESC::DepthEnable']/*\"/>\t\n            <msdn-id>ff476110</msdn-id>\t\n            <unmanaged>BOOL DepthEnable</unmanaged>\t\n            <unmanaged-short>BOOL DepthEnable</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.DepthStencilStateDescription.DepthWriteMask\">\n            <summary>\t\n            <dd> <p>Identify a portion of the depth-stencil buffer that can be modified by depth data (see <strong><see cref=\"T:SharpDX.Direct3D11.DepthWriteMask\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_DEPTH_STENCIL_DESC::DepthWriteMask']/*\"/>\t\n            <msdn-id>ff476110</msdn-id>\t\n            <unmanaged>D3D11_DEPTH_WRITE_MASK DepthWriteMask</unmanaged>\t\n            <unmanaged-short>D3D11_DEPTH_WRITE_MASK DepthWriteMask</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.DepthStencilStateDescription.DepthComparison\">\n            <summary>\t\n            <dd> <p>A function that compares depth data against existing depth data. The function options are listed in <strong><see cref=\"T:SharpDX.Direct3D11.Comparison\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_DEPTH_STENCIL_DESC::DepthFunc']/*\"/>\t\n            <msdn-id>ff476110</msdn-id>\t\n            <unmanaged>D3D11_COMPARISON_FUNC DepthFunc</unmanaged>\t\n            <unmanaged-short>D3D11_COMPARISON_FUNC DepthFunc</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.DepthStencilStateDescription.IsStencilEnabled\">\n            <summary>\t\n            <dd> <p>Enable stencil testing.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_DEPTH_STENCIL_DESC::StencilEnable']/*\"/>\t\n            <msdn-id>ff476110</msdn-id>\t\n            <unmanaged>BOOL StencilEnable</unmanaged>\t\n            <unmanaged-short>BOOL StencilEnable</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.DepthStencilStateDescription.StencilReadMask\">\n            <summary>\t\n            <dd> <p>Identify a portion of the depth-stencil buffer for reading stencil data.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_DEPTH_STENCIL_DESC::StencilReadMask']/*\"/>\t\n            <msdn-id>ff476110</msdn-id>\t\n            <unmanaged>unsigned char StencilReadMask</unmanaged>\t\n            <unmanaged-short>unsigned char StencilReadMask</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.DepthStencilStateDescription.StencilWriteMask\">\n            <summary>\t\n            <dd> <p>Identify a portion of the depth-stencil buffer for writing stencil data.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_DEPTH_STENCIL_DESC::StencilWriteMask']/*\"/>\t\n            <msdn-id>ff476110</msdn-id>\t\n            <unmanaged>unsigned char StencilWriteMask</unmanaged>\t\n            <unmanaged-short>unsigned char StencilWriteMask</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.DepthStencilStateDescription.FrontFace\">\n            <summary>\t\n            <dd> <p>Identify how to use the results of the depth test and the stencil test for pixels whose surface normal is facing towards the camera (see <strong><see cref=\"T:SharpDX.Direct3D11.DepthStencilOperationDescription\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_DEPTH_STENCIL_DESC::FrontFace']/*\"/>\t\n            <msdn-id>ff476110</msdn-id>\t\n            <unmanaged>D3D11_DEPTH_STENCILOP_DESC FrontFace</unmanaged>\t\n            <unmanaged-short>D3D11_DEPTH_STENCILOP_DESC FrontFace</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.DepthStencilStateDescription.BackFace\">\n            <summary>\t\n            <dd> <p>Identify how to use the results of the depth test and the stencil test for pixels whose surface normal is facing away from the camera (see <strong><see cref=\"T:SharpDX.Direct3D11.DepthStencilOperationDescription\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_DEPTH_STENCIL_DESC::BackFace']/*\"/>\t\n            <msdn-id>ff476110</msdn-id>\t\n            <unmanaged>D3D11_DEPTH_STENCILOP_DESC BackFace</unmanaged>\t\n            <unmanaged-short>D3D11_DEPTH_STENCILOP_DESC BackFace</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.NamespaceDoc\">\n            <summary>\n            The <see cref=\"N:SharpDX.Direct3D11\"/> namespace provides a managed Direct3D11 API.\n            </summary>\n            <msdn-id>ff476080</msdn-id>\n            <unmanaged>Direct3D11</unmanaged>\t\n            <unmanaged-short>Direct3D11</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.RasterizerStateDescription\">\n            <summary>\t\n            <p>Describes rasterizer state.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Rasterizer state defines the behavior of the rasterizer stage; to set rasterizer state, call <strong><see cref=\"M:SharpDX.Direct3D11.RasterizerStage.SetState(SharpDX.Direct3D11.RasterizerState)\"/></strong>.</p><p>These are the default values for rasterizer state.</p><table> <tr><th>State</th><th>Default Value</th></tr> <tr><td>FillMode</td><td>Solid</td></tr> <tr><td>CullMode</td><td>Back</td></tr> <tr><td>FrontCounterClockwise</td><td><see cref=\"F:SharpDX.Result.False\"/></td></tr> <tr><td>DepthBias</td><td>0</td></tr> <tr><td>SlopeScaledDepthBias</td><td>0.0f</td></tr> <tr><td>DepthBiasClamp</td><td>0.0f</td></tr> <tr><td>DepthClipEnable</td><td>TRUE</td></tr> <tr><td>ScissorEnable</td><td><see cref=\"F:SharpDX.Result.False\"/></td></tr> <tr><td>MultisampleEnable</td><td><see cref=\"F:SharpDX.Result.False\"/></td></tr> <tr><td>AntialiasedLineEnable</td><td><see cref=\"F:SharpDX.Result.False\"/></td></tr> </table><p>?</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_RASTERIZER_DESC']/*\"/>\t\n            <msdn-id>ff476198</msdn-id>\t\n            <unmanaged>D3D11_RASTERIZER_DESC</unmanaged>\t\n            <unmanaged-short>D3D11_RASTERIZER_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.RasterizerStateDescription.Default\">\n            <summary>\n            Returns default values for <see cref=\"T:SharpDX.Direct3D11.RasterizerStateDescription\"/>. \n            </summary>\n            <remarks>\n            See MSDN documentation for default values.\n            </remarks>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.RasterizerStateDescription.FillMode\">\n            <summary>\t\n            <dd> <p>Determines the fill mode to use when rendering (see <strong><see cref=\"T:SharpDX.Direct3D11.FillMode\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_RASTERIZER_DESC::FillMode']/*\"/>\t\n            <msdn-id>ff476198</msdn-id>\t\n            <unmanaged>D3D11_FILL_MODE FillMode</unmanaged>\t\n            <unmanaged-short>D3D11_FILL_MODE FillMode</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.RasterizerStateDescription.CullMode\">\n            <summary>\t\n            <dd> <p>Indicates triangles facing the specified direction are not drawn (see <strong><see cref=\"T:SharpDX.Direct3D11.CullMode\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_RASTERIZER_DESC::CullMode']/*\"/>\t\n            <msdn-id>ff476198</msdn-id>\t\n            <unmanaged>D3D11_CULL_MODE CullMode</unmanaged>\t\n            <unmanaged-short>D3D11_CULL_MODE CullMode</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.RasterizerStateDescription.IsFrontCounterClockwise\">\n            <summary>\t\n            <dd> <p>Determines if a triangle is front- or back-facing. If this parameter is true, then a triangle will be considered front-facing if its vertices are counter-clockwise on the render target and considered back-facing if they are clockwise. If this parameter is false then the opposite is true.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_RASTERIZER_DESC::FrontCounterClockwise']/*\"/>\t\n            <msdn-id>ff476198</msdn-id>\t\n            <unmanaged>BOOL FrontCounterClockwise</unmanaged>\t\n            <unmanaged-short>BOOL FrontCounterClockwise</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.RasterizerStateDescription.DepthBias\">\n            <summary>\t\n            <dd> <p>Depth value added to a given pixel.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_RASTERIZER_DESC::DepthBias']/*\"/>\t\n            <msdn-id>ff476198</msdn-id>\t\n            <unmanaged>int DepthBias</unmanaged>\t\n            <unmanaged-short>int DepthBias</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.RasterizerStateDescription.DepthBiasClamp\">\n            <summary>\t\n            <dd> <p>Maximum depth bias of a pixel.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_RASTERIZER_DESC::DepthBiasClamp']/*\"/>\t\n            <msdn-id>ff476198</msdn-id>\t\n            <unmanaged>float DepthBiasClamp</unmanaged>\t\n            <unmanaged-short>float DepthBiasClamp</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.RasterizerStateDescription.SlopeScaledDepthBias\">\n            <summary>\t\n            <dd> <p>Scalar on a given pixel's slope.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_RASTERIZER_DESC::SlopeScaledDepthBias']/*\"/>\t\n            <msdn-id>ff476198</msdn-id>\t\n            <unmanaged>float SlopeScaledDepthBias</unmanaged>\t\n            <unmanaged-short>float SlopeScaledDepthBias</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.RasterizerStateDescription.IsDepthClipEnabled\">\n            <summary>\t\n            <dd> <p>Enable clipping based on distance.</p> <p>The hardware always performs x and y clipping of rasterized coordinates. When <strong>DepthClipEnable</strong> is set to the default?TRUE, the hardware also clips the z value (that is, the hardware performs the last step of the following algorithm).\t\n            </p> <code> 0 &lt; w\t\n            -w &lt;= x &lt;= w (or arbitrarily wider range if implementation uses a guard band to reduce clipping burden)\t\n            -w &lt;= y &lt;= w (or arbitrarily wider range if implementation uses a guard band to reduce clipping burden)\t\n            0 &lt;= z &lt;= w\t\n            </code> <p>When you set <strong>DepthClipEnable</strong> to <see cref=\"F:SharpDX.Result.False\"/>, the hardware skips the z clipping (that is, the last step in the preceding algorithm). However, the hardware still performs the \"0 &lt; w\" clipping. When z clipping is disabled, improper depth ordering at the pixel level might result. However, when z clipping is disabled, stencil shadow implementations are simplified. In other words, you can avoid complex special-case handling for geometry that goes beyond the back clipping plane.\t\n            </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_RASTERIZER_DESC::DepthClipEnable']/*\"/>\t\n            <msdn-id>ff476198</msdn-id>\t\n            <unmanaged>BOOL DepthClipEnable</unmanaged>\t\n            <unmanaged-short>BOOL DepthClipEnable</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.RasterizerStateDescription.IsScissorEnabled\">\n            <summary>\t\n            <dd> <p>Enable scissor-rectangle culling. All pixels ouside an active scissor rectangle are culled.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_RASTERIZER_DESC::ScissorEnable']/*\"/>\t\n            <msdn-id>ff476198</msdn-id>\t\n            <unmanaged>BOOL ScissorEnable</unmanaged>\t\n            <unmanaged-short>BOOL ScissorEnable</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.RasterizerStateDescription.IsMultisampleEnabled\">\n            <summary>\t\n            <dd> <p>Enable multisample antialiasing.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_RASTERIZER_DESC::MultisampleEnable']/*\"/>\t\n            <msdn-id>ff476198</msdn-id>\t\n            <unmanaged>BOOL MultisampleEnable</unmanaged>\t\n            <unmanaged-short>BOOL MultisampleEnable</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.RasterizerStateDescription.IsAntialiasedLineEnabled\">\n            <summary>\t\n            <dd> <p>Enable line antialiasing; only applies if doing line drawing and <em>MultisampleEnable</em> is false.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_RASTERIZER_DESC::AntialiasedLineEnable']/*\"/>\t\n            <msdn-id>ff476198</msdn-id>\t\n            <unmanaged>BOOL AntialiasedLineEnable</unmanaged>\t\n            <unmanaged-short>BOOL AntialiasedLineEnable</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.Counter\">\n            <summary>\t\n            <p>This interface encapsulates methods for measuring GPU performance.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>A counter can be created with <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateCounter(SharpDX.Direct3D11.CounterDescription,SharpDX.Direct3D11.Counter)\"/></strong>.</p><p>This is a derived class of <strong><see cref=\"T:SharpDX.Direct3D11.Asynchronous\"/></strong>.</p><p>Counter data is gathered by issuing an <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.Begin(SharpDX.Direct3D11.Asynchronous)\"/></strong> command, issuing some graphics commands, issuing an <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.End(SharpDX.Direct3D11.Asynchronous)\"/></strong> command, and then calling <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.GetDataInternal(SharpDX.Direct3D11.Asynchronous,System.IntPtr,System.Int32,SharpDX.Direct3D11.AsynchronousFlags)\"/></strong> to get data about what happened in between the Begin and End calls. The data returned by GetData will be different depending on the type of counter. The call to End causes the data returned by GetData to be accurate up until the last call to End.</p><p>Counters are best suited for profiling.</p><p>For a list of the types of performance counters, see <strong><see cref=\"T:SharpDX.Direct3D11.CounterKind\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Counter']/*\"/>\t\n            <msdn-id>ff476364</msdn-id>\t\n            <unmanaged>ID3D11Counter</unmanaged>\t\n            <unmanaged-short>ID3D11Counter</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.Asynchronous\">\n            <summary>\t\n            <p>This interface encapsulates methods for retrieving data from the GPU asynchronously.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>There are three types of asynchronous interfaces, all of which inherit this interface:</p><ul> <li> <strong><see cref=\"T:SharpDX.Direct3D11.Query\"/></strong> - Queries information from the GPU.</li> <li> <strong><see cref=\"T:SharpDX.Direct3D11.Predicate\"/></strong> - Determines whether a piece of geometry should be processed or not depending on the results of a previous draw call.</li> <li> <strong><see cref=\"T:SharpDX.Direct3D11.Counter\"/></strong> - Measures GPU performance.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Asynchronous']/*\"/>\t\n            <msdn-id>ff476347</msdn-id>\t\n            <unmanaged>ID3D11Asynchronous</unmanaged>\t\n            <unmanaged-short>ID3D11Asynchronous</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Asynchronous.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D11.Asynchronous\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Asynchronous.op_Explicit(System.IntPtr)~SharpDX.Direct3D11.Asynchronous\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D11.Asynchronous\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Asynchronous.GetDataSize\">\n            <summary>\t\n            <p>Get the size of the data (in bytes) that is output when calling <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.GetDataInternal(SharpDX.Direct3D11.Asynchronous,System.IntPtr,System.Int32,SharpDX.Direct3D11.AsynchronousFlags)\"/></strong>.</p>\t\n            </summary>\t\n            <returns><p>Size of the data (in bytes) that is output when calling GetData.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Asynchronous::GetDataSize']/*\"/>\t\n            <msdn-id>ff476348</msdn-id>\t\n            <unmanaged>unsigned int ID3D11Asynchronous::GetDataSize()</unmanaged>\t\n            <unmanaged-short>ID3D11Asynchronous::GetDataSize</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.Asynchronous.DataSize\">\n            <summary>\t\n            <p>Get the size of the data (in bytes) that is output when calling <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.GetDataInternal(SharpDX.Direct3D11.Asynchronous,System.IntPtr,System.Int32,SharpDX.Direct3D11.AsynchronousFlags)\"/></strong>.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Asynchronous::GetDataSize']/*\"/>\t\n            <msdn-id>ff476348</msdn-id>\t\n            <unmanaged>GetDataSize</unmanaged>\t\n            <unmanaged-short>GetDataSize</unmanaged-short>\t\n            <unmanaged>unsigned int ID3D11Asynchronous::GetDataSize()</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Counter.#ctor(SharpDX.Direct3D11.Device,SharpDX.Direct3D11.CounterDescription)\">\n            <summary>\n              Constructs a new <see cref = \"T:SharpDX.Direct3D11.Counter\" /> based on the specified description.\n            </summary>\n            <param name = \"device\">The device with which to associate the state object.</param>\n            <param name = \"description\">The counter description.</param>\n            <returns>The newly created object.</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Counter.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D11.Counter\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Counter.op_Explicit(System.IntPtr)~SharpDX.Direct3D11.Counter\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D11.Counter\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Counter.GetDescription(SharpDX.Direct3D11.CounterDescription@)\">\n            <summary>\t\n            <p>Get a counter description.</p>\t\n            </summary>\t\n            <param name=\"descRef\"><dd>  <p>Pointer to a counter description (see <strong><see cref=\"T:SharpDX.Direct3D11.CounterDescription\"/></strong>).</p> </dd></param>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Counter::GetDesc']/*\"/>\t\n            <msdn-id>ff476365</msdn-id>\t\n            <unmanaged>void ID3D11Counter::GetDesc([Out] D3D11_COUNTER_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>ID3D11Counter::GetDesc</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.Counter.Description\">\n            <summary>\t\n            <p>Get a counter description.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Counter::GetDesc']/*\"/>\t\n            <msdn-id>ff476365</msdn-id>\t\n            <unmanaged>GetDesc</unmanaged>\t\n            <unmanaged-short>GetDesc</unmanaged-short>\t\n            <unmanaged>void ID3D11Counter::GetDesc([Out] D3D11_COUNTER_DESC* pDesc)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.CounterMetadata\">\n            <summary>\n            Counter metadata that contains the type, name, units of measure, and a description of an existing counter.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.CounterMetadata.Type\">\n            <summary>\n            Gets the data type of a counter (see <see cref=\"T:SharpDX.Direct3D11.CounterType\"/>).\n            </summary>\n            <value>The type.</value>\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.CounterMetadata.HardwareCounterCount\">\n            <summary>\n            Gets the number of hardware counters that are needed for this counter type to be created. All instances of the same counter type use the same hardware counters.\n            </summary>\n            <value>The hardware counter count.</value>\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.CounterMetadata.Name\">\n            <summary>\n            Gets a brief name for the counter.\n            </summary>\n            <value>The name.</value>\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.CounterMetadata.Units\">\n            <summary>\n            Gets the units a counter measures.\n            </summary>\n            <value>The units.</value>\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.CounterMetadata.Description\">\n            <summary>\n            Gets a description of the counter.\n            </summary>\n            <value>The description.</value>\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.DeviceDebug\">\n            <summary>\t\n            <p>Get the swap chain that the runtime will use for automatically calling <strong><see cref=\"M:SharpDX.DXGI.SwapChain.Present(System.Int32,SharpDX.DXGI.PresentFlags)\"/></strong>.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The swap chain retrieved by this method will only be used if <see cref=\"F:SharpDX.Direct3D11.DebugFeatureFlags.PresentPerRender\"/> is set in the <strong>feature mask</strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Debug']/*\"/>\t\n            <msdn-id>ff476369</msdn-id>\t\n            <unmanaged>ID3D11Debug</unmanaged>\t\n            <unmanaged-short>ID3D11Debug</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DeviceDebug.#ctor(SharpDX.Direct3D11.Device)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D11.DeviceDebug\"/> class.\n            </summary>\n            <param name=\"device\">The device.</param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DeviceDebug.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D11.DeviceDebug\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DeviceDebug.op_Explicit(System.IntPtr)~SharpDX.Direct3D11.DeviceDebug\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D11.DeviceDebug\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DeviceDebug.SetFeatureFlags(System.Int32)\">\n            <summary>\t\n            <p>Set a bit field of flags that will turn debug features on and off.</p>\t\n            </summary>\t\n            <param name=\"mask\"><dd>  <p>A combination of feature-mask flags that are combined by using a bitwise OR operation. If a flag is present, that feature will be set to on, otherwise the feature will be set to off. For descriptions of the feature-mask flags, see Remarks.</p> </dd></param>\t\n            <returns><p>This method returns one of the Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>Setting one of the following feature-mask flags will cause a rendering-operation method (listed below) to do some extra task when called. </p><table> <tr><td><see cref=\"F:SharpDX.Direct3D11.DebugFeatureFlags.FinishPerRender\"/> (0x2)</td><td>Application will wait for the GPU to finish processing the rendering operation before continuing.</td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D11.DebugFeatureFlags.FlushPerRender\"/> (0x1)</td><td>Runtime will additionally call <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.Flush\"/></strong>.</td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D11.DebugFeatureFlags.PresentPerRender\"/> (0x4)</td><td>Runtime will call <strong><see cref=\"M:SharpDX.DXGI.SwapChain.Present(System.Int32,SharpDX.DXGI.PresentFlags)\"/></strong>. Presentation of render buffers will occur according to the settings established by prior calls to <strong><see cref=\"M:SharpDX.Direct3D11.DeviceDebug.SetSwapChain(SharpDX.DXGI.SwapChain)\"/></strong> and <strong><see cref=\"M:SharpDX.Direct3D11.DeviceDebug.SetPresentDelay(System.Int32)\"/></strong>.</td></tr> </table><p>?</p><p>These feature-mask flags apply to the following rendering-operation methods:</p><ul> <li> <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.Draw(System.Int32,System.Int32)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.DrawIndexed(System.Int32,System.Int32,System.Int32)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.DrawInstanced(System.Int32,System.Int32,System.Int32,System.Int32)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.DrawIndexedInstanced(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.DrawAuto\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.ClearRenderTargetView(SharpDX.Direct3D11.RenderTargetView,SharpDX.Color4)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.ClearDepthStencilView(SharpDX.Direct3D11.DepthStencilView,SharpDX.Direct3D11.DepthStencilClearFlags,System.Single,System.Byte)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.CopySubresourceRegion_(SharpDX.Direct3D11.Resource,System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D11.Resource,System.Int32,System.Nullable{SharpDX.Direct3D11.ResourceRegion})\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.CopyResource_(SharpDX.Direct3D11.Resource,SharpDX.Direct3D11.Resource)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.UpdateSubresource(SharpDX.DataBox,SharpDX.Direct3D11.Resource,System.Int32)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.GenerateMips(SharpDX.Direct3D11.ShaderResourceView)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.ResolveSubresource_(SharpDX.Direct3D11.Resource,System.Int32,SharpDX.Direct3D11.Resource,System.Int32,SharpDX.DXGI.Format)\"/></strong> </li> </ul><p>By setting one of the following feature-mask flags, you can control the behavior of the <strong>IDXGIDevice2::OfferResources</strong> and <strong>IDXGIDevice2::ReclaimResources</strong> methods to aid in testing and debugging. </p><p><strong>Note</strong>??These flags are supported by the Direct3D 11.1 runtime, which is available starting with Windows Developer Preview.</p><table> <tr><td>D3D11_DEBUG_FEATURE_ALWAYS_DISCARD_OFFERED_RESOURCE (0x8)</td><td>When you call <strong>IDXGIDevice2::OfferResources</strong> to offer resources while this flag is enabled, their content is always discarded.  Use this flag to test code paths that regenerate resource content on reclaim.  You cannot use this flag in combination with D3D11_DEBUG_FEATURE_NEVER_DISCARD_OFFERED_RESOURCE.</td></tr> <tr><td>D3D11_DEBUG_FEATURE_NEVER_DISCARD_OFFERED_RESOURCE (0x10)</td><td>When you call <strong>IDXGIDevice2::OfferResources</strong> to offer resources while this flag is enabled, their content is never discarded.  Use this flag to test code paths that do not need to regenerate resource content on reclaim.  You cannot use this flag in combination with D3D11_DEBUG_FEATURE_ALWAYS_DISCARD_OFFERED_RESOURCE.</td></tr> </table><p>?</p><p>The behavior of the <strong>IDXGIDevice2::OfferResources</strong> and <strong>IDXGIDevice2::ReclaimResources</strong> methods depends on system-wide memory pressure. Therefore, the scenario where content is lost and must be regenerated is uncommon for most applications.  The preceding new options in the Direct3D debug layer let you simulate that scenario consistently and test code paths.</p><p>The following flag is supported by the Direct3D 11.1 runtime.</p><table> <tr><td>D3D11_DEBUG_FEATURE_AVOID_BEHAVIOR_CHANGING_DEBUG_AIDS (0x40)</td><td>Disables the following default debugging behavior.</td></tr> </table><p>?</p><p>When the debug layer is enabled, it performs certain actions to reveal application problems.  By setting the D3D11_DEBUG_FEATURE_AVOID_BEHAVIOR_CHANGING_DEBUG_AIDS feature-mask flag, you can enable the debug layer without getting the following default debugging behavior:</p><ul> <li>If an application calls <strong>ID3D11DeviceContext1::DiscardView</strong>, the runtime fills in the resource with a random color.</li> <li>If an application calls <strong>IDXGISwapChain1::Present1</strong> with partial presentation parameters, the runtime ignores the partial presentation information.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Debug::SetFeatureMask']/*\"/>\t\n            <msdn-id>ff476371</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Debug::SetFeatureMask([In] unsigned int Mask)</unmanaged>\t\n            <unmanaged-short>ID3D11Debug::SetFeatureMask</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DeviceDebug.GetFeatureFlags\">\n            <summary>\t\n            <p>Get a bitfield of flags that indicates which debug features are on or off.</p>\t\n            </summary>\t\n            <returns><p>Mask of feature-mask flags bitwise ORed together. If a flag is present, then that feature will be set to on, otherwise the feature will be set to off. See <strong><see cref=\"M:SharpDX.Direct3D11.DeviceDebug.SetFeatureFlags(System.Int32)\"/></strong> for a list of possible feature-mask flags.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Debug::GetFeatureMask']/*\"/>\t\n            <msdn-id>ff476367</msdn-id>\t\n            <unmanaged>unsigned int ID3D11Debug::GetFeatureMask()</unmanaged>\t\n            <unmanaged-short>ID3D11Debug::GetFeatureMask</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DeviceDebug.SetPresentDelay(System.Int32)\">\n            <summary>\t\n            <p>Set the number of milliseconds to sleep after <strong><see cref=\"M:SharpDX.DXGI.SwapChain.Present(System.Int32,SharpDX.DXGI.PresentFlags)\"/></strong> is called.</p>\t\n            </summary>\t\n            <param name=\"milliseconds\">No documentation.</param>\t\n            <returns><p>This method returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>The application will only sleep if <see cref=\"F:SharpDX.Direct3D11.DebugFeatureFlags.PresentPerRender\"/> is a set in the <strong>feature mask</strong>. If that flag is not set the number of milliseconds is set but ignored and the application does not sleep. 10ms is used as a default value if this method is never called.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Debug::SetPresentPerRenderOpDelay']/*\"/>\t\n            <msdn-id>ff476372</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Debug::SetPresentPerRenderOpDelay([In] unsigned int Milliseconds)</unmanaged>\t\n            <unmanaged-short>ID3D11Debug::SetPresentPerRenderOpDelay</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DeviceDebug.GetPresentDelay\">\n            <summary>\t\n            <p>Get the number of milliseconds to sleep after <strong><see cref=\"M:SharpDX.DXGI.SwapChain.Present(System.Int32,SharpDX.DXGI.PresentFlags)\"/></strong> is called.</p>\t\n            </summary>\t\n            <returns><p>Number of milliseconds to sleep after Present is called.</p></returns>\t\n            <remarks>\t\n            <p>Value is set with <strong><see cref=\"M:SharpDX.Direct3D11.DeviceDebug.SetPresentDelay(System.Int32)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Debug::GetPresentPerRenderOpDelay']/*\"/>\t\n            <msdn-id>ff476368</msdn-id>\t\n            <unmanaged>unsigned int ID3D11Debug::GetPresentPerRenderOpDelay()</unmanaged>\t\n            <unmanaged-short>ID3D11Debug::GetPresentPerRenderOpDelay</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DeviceDebug.SetSwapChain(SharpDX.DXGI.SwapChain)\">\n            <summary>\t\n            <p>Set a swap chain that the runtime will use for automatically calling <strong><see cref=\"M:SharpDX.DXGI.SwapChain.Present(System.Int32,SharpDX.DXGI.PresentFlags)\"/></strong>.</p>\t\n            </summary>\t\n            <param name=\"swapChainRef\">No documentation.</param>\t\n            <returns><p>This method returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>The swap chain set by this method will only be used if <see cref=\"F:SharpDX.Direct3D11.DebugFeatureFlags.PresentPerRender\"/> is set in the <strong>feature mask</strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Debug::SetSwapChain']/*\"/>\t\n            <msdn-id>ff476373</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Debug::SetSwapChain([In, Optional] IDXGISwapChain* pSwapChain)</unmanaged>\t\n            <unmanaged-short>ID3D11Debug::SetSwapChain</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DeviceDebug.GetSwapChain(SharpDX.DXGI.SwapChain@)\">\n            <summary>\t\n            <p>Get the swap chain that the runtime will use for automatically calling <strong><see cref=\"M:SharpDX.DXGI.SwapChain.Present(System.Int32,SharpDX.DXGI.PresentFlags)\"/></strong>.</p>\t\n            </summary>\t\n            <param name=\"swapChainOut\">No documentation.</param>\t\n            <returns><p>This method returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>The swap chain retrieved by this method will only be used if <see cref=\"F:SharpDX.Direct3D11.DebugFeatureFlags.PresentPerRender\"/> is set in the <strong>feature mask</strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Debug::GetSwapChain']/*\"/>\t\n            <msdn-id>ff476369</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Debug::GetSwapChain([Out] IDXGISwapChain** ppSwapChain)</unmanaged>\t\n            <unmanaged-short>ID3D11Debug::GetSwapChain</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DeviceDebug.ValidateContext(SharpDX.Direct3D11.DeviceContext)\">\n            <summary>\t\n            <p>Check to see if the draw pipeline state is valid.</p>\t\n            </summary>\t\n            <param name=\"contextRef\"><dd>  <p>A reference to the <strong><see cref=\"T:SharpDX.Direct3D11.DeviceContext\"/></strong>, that represents a device context.</p> </dd></param>\t\n            <returns><p>This method returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>Use validate prior to calling a draw method (for example, <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.Draw(System.Int32,System.Int32)\"/></strong>); validation requires the debug layer.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Debug::ValidateContext']/*\"/>\t\n            <msdn-id>ff476374</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Debug::ValidateContext([In] ID3D11DeviceContext* pContext)</unmanaged>\t\n            <unmanaged-short>ID3D11Debug::ValidateContext</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DeviceDebug.ReportLiveDeviceObjects(SharpDX.Direct3D11.ReportingLevel)\">\n            <summary>\t\n            <p>Report information about a device object's lifetime.</p>\t\n            </summary>\t\n            <param name=\"flags\"><dd>  <p>A value from the <strong><see cref=\"T:SharpDX.Direct3D11.ReportingLevel\"/></strong> enumeration.</p> </dd></param>\t\n            <returns><p>This method returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>ReportLiveDeviceObjects</strong> uses the value in  <em>Flags</em> to determine the amount of information to report about a device object's lifetime.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Debug::ReportLiveDeviceObjects']/*\"/>\t\n            <msdn-id>ff476370</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Debug::ReportLiveDeviceObjects([In] D3D11_RLDO_FLAGS Flags)</unmanaged>\t\n            <unmanaged-short>ID3D11Debug::ReportLiveDeviceObjects</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DeviceDebug.ValidateContextForDispatch(SharpDX.Direct3D11.DeviceContext)\">\n            <summary>\t\n            <p>Verifies whether the dispatch pipeline state is valid.</p>\t\n            </summary>\t\n            <param name=\"contextRef\"><dd>  <p>A reference to the <strong><see cref=\"T:SharpDX.Direct3D11.DeviceContext\"/></strong> that represents a device context.</p> </dd></param>\t\n            <returns><p>This method returns one of the return codes described in the topic Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>Use this method before you call a dispatch method (for example, <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.Dispatch(System.Int32,System.Int32,System.Int32)\"/></strong>). Validation requires the debug layer.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Debug::ValidateContextForDispatch']/*\"/>\t\n            <msdn-id>ff728740</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Debug::ValidateContextForDispatch([In] ID3D11DeviceContext* pContext)</unmanaged>\t\n            <unmanaged-short>ID3D11Debug::ValidateContextForDispatch</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.DeviceDebug.FeatureFlags\">\n            <summary>\n            Gets or sets the feature flags that indicates which debug features are on or off.\t\n            </summary>\n            <value>The feature flags.</value>\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.DeviceDebug.PresentDelay\">\n            <summary>\t\n            <p>Get or sets the number of milliseconds to sleep after <strong><see cref=\"M:SharpDX.DXGI.SwapChain.Present(System.Int32,SharpDX.DXGI.PresentFlags)\"/></strong> is called.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Value is set with <strong><see cref=\"M:SharpDX.Direct3D11.DeviceDebug.SetPresentDelay(System.Int32)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Debug::GetPresentPerRenderOpDelay']/*\"/>\t\n            <msdn-id>ff476368</msdn-id>\t\n            <unmanaged>GetPresentPerRenderOpDelay / SetPresentPerRenderOpDelay</unmanaged>\t\n            <unmanaged-short>GetPresentPerRenderOpDelay</unmanaged-short>\t\n            <unmanaged>unsigned int ID3D11Debug::GetPresentPerRenderOpDelay()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.DeviceDebug.SwapChain\">\n            <summary>\t\n            <p>Get or sets the swap chain that the runtime will use for automatically calling <strong><see cref=\"M:SharpDX.DXGI.SwapChain.Present(System.Int32,SharpDX.DXGI.PresentFlags)\"/></strong>.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The swap chain retrieved by this method will only be used if <see cref=\"F:SharpDX.Direct3D11.DebugFeatureFlags.PresentPerRender\"/> is set in the <strong>feature mask</strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Debug::GetSwapChain']/*\"/>\t\n            <msdn-id>ff476369</msdn-id>\t\n            <unmanaged>GetSwapChain / SetSwapChain</unmanaged>\t\n            <unmanaged-short>GetSwapChain</unmanaged-short>\t\n            <unmanaged>HRESULT ID3D11Debug::GetSwapChain([Out] IDXGISwapChain** ppSwapChain)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.DepthStencilState\">\n            <summary>\t\n            <p>The depth-stencil-state interface holds a description for depth-stencil state that you can bind to the output-merger stage.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>To create a depth-stencil-state object, call <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateDepthStencilState(SharpDX.Direct3D11.DepthStencilStateDescription@,SharpDX.Direct3D11.DepthStencilState)\"/></strong>. To bind the depth-stencil-state object to the output-merger stage, call <strong><see cref=\"M:SharpDX.Direct3D11.OutputMergerStage.SetDepthStencilState(SharpDX.Direct3D11.DepthStencilState,System.Int32)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DepthStencilState']/*\"/>\t\n            <msdn-id>ff476375</msdn-id>\t\n            <unmanaged>ID3D11DepthStencilState</unmanaged>\t\n            <unmanaged-short>ID3D11DepthStencilState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DepthStencilState.#ctor(SharpDX.Direct3D11.Device,SharpDX.Direct3D11.DepthStencilStateDescription)\">\n            <summary>\n              Constructs a new <see cref = \"T:SharpDX.Direct3D11.DepthStencilState\" /> based on the specified description.\n            </summary>\n            <param name = \"device\">The device with which to associate the state object.</param>\n            <param name = \"description\">The state description.</param>\n            <returns>The newly created object.</returns>\n            <msdn-id>ff476506</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateDepthStencilState([In] const D3D11_DEPTH_STENCIL_DESC* pDepthStencilDesc,[Out, Fast] ID3D11DepthStencilState** ppDepthStencilState)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateDepthStencilState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DepthStencilState.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D11.DepthStencilState\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DepthStencilState.op_Explicit(System.IntPtr)~SharpDX.Direct3D11.DepthStencilState\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D11.DepthStencilState\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DepthStencilState.GetDescription(SharpDX.Direct3D11.DepthStencilStateDescription@)\">\n            <summary>\t\n            <p>Gets the description for depth-stencil state that you used to create the depth-stencil-state object.</p>\t\n            </summary>\t\n            <param name=\"descRef\"><dd>  <p>A reference to a <strong><see cref=\"T:SharpDX.Direct3D11.DepthStencilStateDescription\"/></strong> structure that receives a description of the depth-stencil state.</p> </dd></param>\t\n            <remarks>\t\n            <p>You use the description for depth-stencil state in a call to the <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateDepthStencilState(SharpDX.Direct3D11.DepthStencilStateDescription@,SharpDX.Direct3D11.DepthStencilState)\"/></strong> method to create the depth-stencil-state object.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DepthStencilState::GetDesc']/*\"/>\t\n            <msdn-id>ff476376</msdn-id>\t\n            <unmanaged>void ID3D11DepthStencilState::GetDesc([Out] D3D11_DEPTH_STENCIL_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>ID3D11DepthStencilState::GetDesc</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.DepthStencilState.Description\">\n            <summary>\t\n            <p>Gets the description for depth-stencil state that you used to create the depth-stencil-state object.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>You use the description for depth-stencil state in a call to the <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateDepthStencilState(SharpDX.Direct3D11.DepthStencilStateDescription@,SharpDX.Direct3D11.DepthStencilState)\"/></strong> method to create the depth-stencil-state object.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DepthStencilState::GetDesc']/*\"/>\t\n            <msdn-id>ff476376</msdn-id>\t\n            <unmanaged>GetDesc</unmanaged>\t\n            <unmanaged-short>GetDesc</unmanaged-short>\t\n            <unmanaged>void ID3D11DepthStencilState::GetDesc([Out] D3D11_DEPTH_STENCIL_DESC* pDesc)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.DepthStencilView\">\n            <summary>\t\n            <p>A depth-stencil-view interface accesses a texture resource during depth-stencil testing.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>To create a depth-stencil view, call <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateDepthStencilView(SharpDX.Direct3D11.Resource,System.Nullable{SharpDX.Direct3D11.DepthStencilViewDescription},SharpDX.Direct3D11.DepthStencilView)\"/></strong>.</p><p>To bind a depth-stencil view to the pipeline, call <strong><see cref=\"M:SharpDX.Direct3D11.OutputMergerStage.SetRenderTargets(System.Int32,System.IntPtr,SharpDX.Direct3D11.DepthStencilView)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DepthStencilView']/*\"/>\t\n            <msdn-id>ff476377</msdn-id>\t\n            <unmanaged>ID3D11DepthStencilView</unmanaged>\t\n            <unmanaged-short>ID3D11DepthStencilView</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.ResourceView\">\n            <summary>\t\n            <p>A view interface specifies the parts of a resource the pipeline can access during rendering.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>A view interface is the base interface for all views. There are four types of views; a depth-stencil view, a render-target view, a shader-resource view, and an unordered-access view.</p><ul> <li>To create a render-target view, call <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateRenderTargetView(SharpDX.Direct3D11.Resource,System.Nullable{SharpDX.Direct3D11.RenderTargetViewDescription},SharpDX.Direct3D11.RenderTargetView)\"/></strong>.</li> <li>To create a depth-stencil view, call <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateDepthStencilView(SharpDX.Direct3D11.Resource,System.Nullable{SharpDX.Direct3D11.DepthStencilViewDescription},SharpDX.Direct3D11.DepthStencilView)\"/></strong>.</li> <li>To create a shader-resource view, call <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateShaderResourceView(SharpDX.Direct3D11.Resource,System.Nullable{SharpDX.Direct3D11.ShaderResourceViewDescription},SharpDX.Direct3D11.ShaderResourceView)\"/></strong>.</li> <li>To create an unordered-access view, call <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateUnorderedAccessView(SharpDX.Direct3D11.Resource,System.Nullable{SharpDX.Direct3D11.UnorderedAccessViewDescription},SharpDX.Direct3D11.UnorderedAccessView)\"/></strong>.</li> </ul><p>All resources must be bound to the pipeline before they can be accessed.</p><ul> <li>To bind a render-target view or a depth-stencil view, call <strong><see cref=\"M:SharpDX.Direct3D11.OutputMergerStage.SetRenderTargets(System.Int32,System.IntPtr,SharpDX.Direct3D11.DepthStencilView)\"/></strong>.</li> <li>To bind a shader resource, call <strong><see cref=\"M:SharpDX.Direct3D11.VertexShaderStage.SetShaderResources(System.Int32,System.Int32,System.IntPtr)\"/></strong>.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11View']/*\"/>\t\n            <msdn-id>ff476642</msdn-id>\t\n            <unmanaged>ID3D11View</unmanaged>\t\n            <unmanaged-short>ID3D11View</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.ResourceView.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D11.ResourceView\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.ResourceView.op_Explicit(System.IntPtr)~SharpDX.Direct3D11.ResourceView\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D11.ResourceView\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.ResourceView.GetResource(System.IntPtr@)\">\n            <summary>\t\n            <p>Get the resource that is accessed through this view.</p>\t\n            </summary>\t\n            <param name=\"resourceOut\"><dd>  <p>Address of a reference to the resource that is accessed through this view. (See <strong><see cref=\"T:SharpDX.Direct3D11.Resource\"/></strong>.)</p> </dd></param>\t\n            <remarks>\t\n            <p>This function increments the reference count of the resource by one, so it is necessary to call <strong>Release</strong> on the returned reference when the application is done with it. Destroying (or losing) the returned reference before <strong>Release</strong> is called will result in a memory leak.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11View::GetResource']/*\"/>\t\n            <msdn-id>ff476643</msdn-id>\t\n            <unmanaged>void ID3D11View::GetResource([Out] void** ppResource)</unmanaged>\t\n            <unmanaged-short>ID3D11View::GetResource</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.ResourceView.ResourceAs``1\">\n            <summary>\t\n            <p>Get the resource that is accessed through this view.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This function increments the reference count of the resource by one, so it is necessary to call <strong>Dispose</strong> on the returned reference when the application is done with it. Destroying (or losing) the returned reference before <strong>Release</strong> is called will result in a memory leak.</p>\t\n            </remarks>\t\n            <msdn-id>ff476643</msdn-id>\t\n            <unmanaged>GetResource</unmanaged>\t\n            <unmanaged-short>GetResource</unmanaged-short>\t\n            <unmanaged>void ID3D11View::GetResource([Out] ID3D11Resource** ppResource)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.ResourceView.Resource\">\n            <summary>\t\n            <p>Get the resource that is accessed through this view.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This function increments the reference count of the resource by one, so it is necessary to call <strong>Release</strong> on the returned reference when the application is done with it. Destroying (or losing) the returned reference before <strong>Release</strong> is called will result in a memory leak.</p>\t\n            </remarks>\t\n            <msdn-id>ff476643</msdn-id>\t\n            <unmanaged>GetResource</unmanaged>\t\n            <unmanaged-short>GetResource</unmanaged-short>\t\n            <unmanaged>void ID3D11View::GetResource([Out] ID3D11Resource** ppResource)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DepthStencilView.#ctor(SharpDX.Direct3D11.Device,SharpDX.Direct3D11.Resource)\">\n            <summary>\n              Creates a <see cref = \"T:SharpDX.Direct3D11.DepthStencilView\" /> for accessing resource data.\n            </summary>\n            <param name = \"device\">The device to use when creating this <see cref = \"T:SharpDX.Direct3D11.DepthStencilView\" />.</param>\n            <param name = \"resource\">The resource that represents the render-target surface. This surface must have been created with the <see cref = \"T:SharpDX.Direct3D11.BindFlags\">DepthStencil</see> flag.</param>\n            <unmanaged>ID3D11Device::CreateDepthStencilView</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DepthStencilView.#ctor(SharpDX.Direct3D11.Device,SharpDX.Direct3D11.Resource,SharpDX.Direct3D11.DepthStencilViewDescription)\">\n            <summary>\n              Creates a <see cref = \"T:SharpDX.Direct3D11.DepthStencilView\" /> for accessing resource data.\n            </summary>\n            <param name = \"device\">The device to use when creating this <see cref = \"T:SharpDX.Direct3D11.DepthStencilView\" />.</param>\n            <param name = \"resource\">The resource that represents the render-target surface. This surface must have been created with the <see cref = \"T:SharpDX.Direct3D11.BindFlags\">DepthStencil</see> flag.</param>\n            <param name = \"description\">A structure describing the <see cref = \"T:SharpDX.Direct3D11.DepthStencilView\" /> to be created.</param>\n            <unmanaged>ID3D11Device::CreateDepthStencilView</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DepthStencilView.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D11.DepthStencilView\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DepthStencilView.op_Explicit(System.IntPtr)~SharpDX.Direct3D11.DepthStencilView\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D11.DepthStencilView\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DepthStencilView.GetDescription(SharpDX.Direct3D11.DepthStencilViewDescription@)\">\n            <summary>\t\n            <p>Get the depth-stencil view.</p>\t\n            </summary>\t\n            <param name=\"descRef\"><dd>  <p>Pointer to a depth-stencil-view description (see <strong><see cref=\"T:SharpDX.Direct3D11.DepthStencilViewDescription\"/></strong>).</p> </dd></param>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DepthStencilView::GetDesc']/*\"/>\t\n            <msdn-id>ff476378</msdn-id>\t\n            <unmanaged>void ID3D11DepthStencilView::GetDesc([Out] D3D11_DEPTH_STENCIL_VIEW_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>ID3D11DepthStencilView::GetDesc</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.DepthStencilView.Description\">\n            <summary>\t\n            <p>Get the depth-stencil view.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DepthStencilView::GetDesc']/*\"/>\t\n            <msdn-id>ff476378</msdn-id>\t\n            <unmanaged>GetDesc</unmanaged>\t\n            <unmanaged-short>GetDesc</unmanaged-short>\t\n            <unmanaged>void ID3D11DepthStencilView::GetDesc([Out] D3D11_DEPTH_STENCIL_VIEW_DESC* pDesc)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.Device\">\n            <summary>\t\n            <p>The device interface represents a virtual adapter; it is used to create resources.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>A device is created using <strong><see cref=\"M:SharpDX.Direct3D11.D3D11.CreateDevice(SharpDX.DXGI.Adapter,SharpDX.Direct3D.DriverType,System.IntPtr,SharpDX.Direct3D11.DeviceCreationFlags,SharpDX.Direct3D.FeatureLevel[],System.Int32,System.Int32,SharpDX.Direct3D11.Device,SharpDX.Direct3D.FeatureLevel@,SharpDX.Direct3D11.DeviceContext@)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Device']/*\"/>\t\n            <msdn-id>ff476379</msdn-id>\t\n            <unmanaged>ID3D11Device</unmanaged>\t\n            <unmanaged-short>ID3D11Device</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.Device.MultisampleCountMaximum\">\n            <summary>Constant MultisampleCountMaximum.</summary>\n            <unmanaged>D3D11_MAX_MULTISAMPLE_SAMPLE_COUNT</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Device.#ctor(SharpDX.Direct3D.DriverType)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D11.Device\"/> class. \n            </summary>\n            <param name=\"driverType\">\n            Type of the driver.\n            </param>\n            <msdn-id>ff476082</msdn-id>\t\n            <unmanaged>HRESULT D3D11CreateDevice([In, Optional] IDXGIAdapter* pAdapter,[In] D3D_DRIVER_TYPE DriverType,[In] HINSTANCE Software,[In] D3D11_CREATE_DEVICE_FLAG Flags,[In, Buffer, Optional] const D3D_FEATURE_LEVEL* pFeatureLevels,[In] unsigned int FeatureLevels,[In] unsigned int SDKVersion,[Out, Fast] ID3D11Device** ppDevice,[Out, Optional] D3D_FEATURE_LEVEL* pFeatureLevel,[Out, Optional] ID3D11DeviceContext** ppImmediateContext)</unmanaged>\t\n            <unmanaged-short>D3D11CreateDevice</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Device.#ctor(SharpDX.DXGI.Adapter)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D11.Device\"/> class. \n            </summary>\n            <param name=\"adapter\">\n            The adapter.\n            </param>\n            <msdn-id>ff476082</msdn-id>\t\n            <unmanaged>HRESULT D3D11CreateDevice([In, Optional] IDXGIAdapter* pAdapter,[In] D3D_DRIVER_TYPE DriverType,[In] HINSTANCE Software,[In] D3D11_CREATE_DEVICE_FLAG Flags,[In, Buffer, Optional] const D3D_FEATURE_LEVEL* pFeatureLevels,[In] unsigned int FeatureLevels,[In] unsigned int SDKVersion,[Out, Fast] ID3D11Device** ppDevice,[Out, Optional] D3D_FEATURE_LEVEL* pFeatureLevel,[Out, Optional] ID3D11DeviceContext** ppImmediateContext)</unmanaged>\t\n            <unmanaged-short>D3D11CreateDevice</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Device.#ctor(SharpDX.Direct3D.DriverType,SharpDX.Direct3D11.DeviceCreationFlags)\">\n            <summary>\n            Constructor for a D3D11 Device. See <see cref=\"M:SharpDX.Direct3D11.D3D11.CreateDevice(SharpDX.DXGI.Adapter,SharpDX.Direct3D.DriverType,System.IntPtr,SharpDX.Direct3D11.DeviceCreationFlags,SharpDX.Direct3D.FeatureLevel[],System.Int32,System.Int32,SharpDX.Direct3D11.Device,SharpDX.Direct3D.FeatureLevel@,SharpDX.Direct3D11.DeviceContext@)\"/> for more information.\n            </summary>\n            <param name=\"driverType\">Type of the driver.</param>\n            <param name=\"flags\">The flags.</param>\n            <msdn-id>ff476082</msdn-id>\t\n            <unmanaged>HRESULT D3D11CreateDevice([In, Optional] IDXGIAdapter* pAdapter,[In] D3D_DRIVER_TYPE DriverType,[In] HINSTANCE Software,[In] D3D11_CREATE_DEVICE_FLAG Flags,[In, Buffer, Optional] const D3D_FEATURE_LEVEL* pFeatureLevels,[In] unsigned int FeatureLevels,[In] unsigned int SDKVersion,[Out, Fast] ID3D11Device** ppDevice,[Out, Optional] D3D_FEATURE_LEVEL* pFeatureLevel,[Out, Optional] ID3D11DeviceContext** ppImmediateContext)</unmanaged>\t\n            <unmanaged-short>D3D11CreateDevice</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Device.#ctor(SharpDX.DXGI.Adapter,SharpDX.Direct3D11.DeviceCreationFlags)\">\n            <summary>\n              Constructor for a D3D11 Device. See <see cref=\"M:SharpDX.Direct3D11.D3D11.CreateDevice(SharpDX.DXGI.Adapter,SharpDX.Direct3D.DriverType,System.IntPtr,SharpDX.Direct3D11.DeviceCreationFlags,SharpDX.Direct3D.FeatureLevel[],System.Int32,System.Int32,SharpDX.Direct3D11.Device,SharpDX.Direct3D.FeatureLevel@,SharpDX.Direct3D11.DeviceContext@)\"/> for more information.\n            </summary>\n            <param name=\"adapter\"></param>\n            <param name=\"flags\"></param>\n            <msdn-id>ff476082</msdn-id>\t\n            <unmanaged>HRESULT D3D11CreateDevice([In, Optional] IDXGIAdapter* pAdapter,[In] D3D_DRIVER_TYPE DriverType,[In] HINSTANCE Software,[In] D3D11_CREATE_DEVICE_FLAG Flags,[In, Buffer, Optional] const D3D_FEATURE_LEVEL* pFeatureLevels,[In] unsigned int FeatureLevels,[In] unsigned int SDKVersion,[Out, Fast] ID3D11Device** ppDevice,[Out, Optional] D3D_FEATURE_LEVEL* pFeatureLevel,[Out, Optional] ID3D11DeviceContext** ppImmediateContext)</unmanaged>\t\n            <unmanaged-short>D3D11CreateDevice</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Device.#ctor(SharpDX.Direct3D.DriverType,SharpDX.Direct3D11.DeviceCreationFlags,SharpDX.Direct3D.FeatureLevel[])\">\n            <summary>\n              Constructor for a D3D11 Device. See <see cref=\"M:SharpDX.Direct3D11.D3D11.CreateDevice(SharpDX.DXGI.Adapter,SharpDX.Direct3D.DriverType,System.IntPtr,SharpDX.Direct3D11.DeviceCreationFlags,SharpDX.Direct3D.FeatureLevel[],System.Int32,System.Int32,SharpDX.Direct3D11.Device,SharpDX.Direct3D.FeatureLevel@,SharpDX.Direct3D11.DeviceContext@)\"/> for more information.\n            </summary>\n            <param name=\"driverType\"></param>\n            <param name=\"flags\"></param>\n            <param name=\"featureLevels\"></param>\n            <msdn-id>ff476082</msdn-id>\t\n            <unmanaged>HRESULT D3D11CreateDevice([In, Optional] IDXGIAdapter* pAdapter,[In] D3D_DRIVER_TYPE DriverType,[In] HINSTANCE Software,[In] D3D11_CREATE_DEVICE_FLAG Flags,[In, Buffer, Optional] const D3D_FEATURE_LEVEL* pFeatureLevels,[In] unsigned int FeatureLevels,[In] unsigned int SDKVersion,[Out, Fast] ID3D11Device** ppDevice,[Out, Optional] D3D_FEATURE_LEVEL* pFeatureLevel,[Out, Optional] ID3D11DeviceContext** ppImmediateContext)</unmanaged>\t\n            <unmanaged-short>D3D11CreateDevice</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Device.#ctor(SharpDX.DXGI.Adapter,SharpDX.Direct3D11.DeviceCreationFlags,SharpDX.Direct3D.FeatureLevel[])\">\n            <summary>\n              Constructor for a D3D11 Device. See <see cref=\"M:SharpDX.Direct3D11.D3D11.CreateDevice(SharpDX.DXGI.Adapter,SharpDX.Direct3D.DriverType,System.IntPtr,SharpDX.Direct3D11.DeviceCreationFlags,SharpDX.Direct3D.FeatureLevel[],System.Int32,System.Int32,SharpDX.Direct3D11.Device,SharpDX.Direct3D.FeatureLevel@,SharpDX.Direct3D11.DeviceContext@)\"/> for more information.\n            </summary>\n            <param name=\"adapter\"></param>\n            <param name=\"flags\"></param>\n            <param name=\"featureLevels\"></param>\n            <msdn-id>ff476082</msdn-id>\t\n            <unmanaged>HRESULT D3D11CreateDevice([In, Optional] IDXGIAdapter* pAdapter,[In] D3D_DRIVER_TYPE DriverType,[In] HINSTANCE Software,[In] D3D11_CREATE_DEVICE_FLAG Flags,[In, Buffer, Optional] const D3D_FEATURE_LEVEL* pFeatureLevels,[In] unsigned int FeatureLevels,[In] unsigned int SDKVersion,[Out, Fast] ID3D11Device** ppDevice,[Out, Optional] D3D_FEATURE_LEVEL* pFeatureLevel,[Out, Optional] ID3D11DeviceContext** ppImmediateContext)</unmanaged>\t\n            <unmanaged-short>D3D11CreateDevice</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Device.CreateWithSwapChain(SharpDX.Direct3D.DriverType,SharpDX.Direct3D11.DeviceCreationFlags,SharpDX.DXGI.SwapChainDescription,SharpDX.Direct3D11.Device@,SharpDX.DXGI.SwapChain@)\">\n            <summary>\n              Initializes a new instance of the <see cref = \"T:SharpDX.Direct3D11.Device\" /> class along with a new <see cref = \"T:SharpDX.DXGI.SwapChain\" /> used for rendering.\n            </summary>\n            <param name = \"driverType\">The type of device to create.</param>\n            <param name = \"flags\">A list of runtime layers to enable.</param>\n            <param name = \"swapChainDescription\">Details used to create the swap chain.</param>\n            <param name = \"device\">When the method completes, contains the created device instance.</param>\n            <param name = \"swapChain\">When the method completes, contains the created swap chain instance.</param>\n            <returns>A <see cref = \"T:SharpDX.Result\" /> object describing the result of the operation.</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Device.CreateWithSwapChain(SharpDX.DXGI.Adapter,SharpDX.Direct3D11.DeviceCreationFlags,SharpDX.DXGI.SwapChainDescription,SharpDX.Direct3D11.Device@,SharpDX.DXGI.SwapChain@)\">\n            <summary>\n              Initializes a new instance of the <see cref = \"T:SharpDX.Direct3D11.Device\" /> class along with a new <see cref = \"T:SharpDX.DXGI.SwapChain\" /> used for rendering.\n            </summary>\n            <param name = \"adapter\">The video adapter on which the device should be created.</param>\n            <param name = \"flags\">A list of runtime layers to enable.</param>\n            <param name = \"swapChainDescription\">Details used to create the swap chain.</param>\n            <param name = \"device\">When the method completes, contains the created device instance.</param>\n            <param name = \"swapChain\">When the method completes, contains the created swap chain instance.</param>\n            <returns>A <see cref = \"T:SharpDX.Result\" /> object describing the result of the operation.</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Device.CreateWithSwapChain(SharpDX.Direct3D.DriverType,SharpDX.Direct3D11.DeviceCreationFlags,SharpDX.Direct3D.FeatureLevel[],SharpDX.DXGI.SwapChainDescription,SharpDX.Direct3D11.Device@,SharpDX.DXGI.SwapChain@)\">\n            <summary>\n              Initializes a new instance of the <see cref = \"T:SharpDX.Direct3D11.Device\" /> class along with a new <see cref = \"T:SharpDX.DXGI.SwapChain\" /> used for rendering.\n            </summary>\n            <param name = \"driverType\">The type of device to create.</param>\n            <param name = \"flags\">A list of runtime layers to enable.</param>\n            <param name = \"featureLevels\">A list of feature levels which determine the order of feature levels to attempt to create.</param>\n            <param name = \"swapChainDescription\">Details used to create the swap chain.</param>\n            <param name = \"device\">When the method completes, contains the created device instance.</param>\n            <param name = \"swapChain\">When the method completes, contains the created swap chain instance.</param>\n            <returns>A <see cref = \"T:SharpDX.Result\" /> object describing the result of the operation.</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Device.CreateWithSwapChain(SharpDX.DXGI.Adapter,SharpDX.Direct3D11.DeviceCreationFlags,SharpDX.Direct3D.FeatureLevel[],SharpDX.DXGI.SwapChainDescription,SharpDX.Direct3D11.Device@,SharpDX.DXGI.SwapChain@)\">\n            <summary>\n              Initializes a new instance of the <see cref = \"T:SharpDX.Direct3D11.Device\" /> class along with a new <see cref = \"T:SharpDX.DXGI.SwapChain\" /> used for rendering.\n            </summary>\n            <param name = \"adapter\">The video adapter on which the device should be created.</param>\n            <param name = \"flags\">A list of runtime layers to enable.</param>\n            <param name = \"featureLevels\">A list of feature levels which determine the order of feature levels to attempt to create.</param>\n            <param name = \"swapChainDescription\">Details used to create the swap chain.</param>\n            <param name = \"device\">When the method completes, contains the created device instance.</param>\n            <param name = \"swapChain\">When the method completes, contains the created swap chain instance.</param>\n            <returns>A <see cref = \"T:SharpDX.Result\" /> object describing the result of the operation.</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Device.CreateWithSwapChain(SharpDX.DXGI.Adapter,SharpDX.Direct3D.DriverType,SharpDX.Direct3D11.DeviceCreationFlags,SharpDX.Direct3D.FeatureLevel[],SharpDX.DXGI.SwapChainDescription,SharpDX.Direct3D11.Device@,SharpDX.DXGI.SwapChain@)\">\n            <summary>\n              This overload has been deprecated. Use one of the alternatives that does not take both an adapter and a driver type.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Device.GetCounterMetadata(SharpDX.Direct3D11.CounterDescription)\">\n            <summary>\n            Get the type, name, units of measure, and a description of an existing counter.\t\n            </summary>\n            <param name=\"counterDescription\">The counter description.</param>\n            <returns>Description of the counter</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Device.OpenSharedResource``1(System.IntPtr)\">\n            <summary>\n            Give a device access to a shared resource created on a different Direct3d device.\n            </summary>\n            <typeparam name=\"T\">The type of the resource we are gaining access to.</typeparam>\n            <param name=\"resourceHandle\">A resource handle. See remarks.</param>\n            <returns>\n            This method returns a reference to the resource we are gaining access to.\n            </returns>\n            <remarks>\n            To share a resource between two Direct3D 10 devices the resource must have been created with the  <see cref=\"F:SharpDX.Direct3D11.ResourceOptionFlags.Shared\"/> flag, if it was created using the ID3D10Device interface.  If it was created using the IDXGIDevice interface, then the resource is always shared. The REFIID, or GUID, of the interface to the resource can be obtained by using the __uuidof() macro.  For example, __uuidof(ID3D10Buffer) will get the GUID of the interface to a buffer resource. When sharing a resource between two Direct3D 10 devices the unique handle of the resource can be obtained by querying the resource for the <see cref=\"T:SharpDX.DXGI.Resource\"/> interface and then calling {{GetSharedHandle}}.\n            <code> IDXGIResource* pOtherResource(NULL);\n            hr = pOtherDeviceResource-&gt;QueryInterface( __uuidof(IDXGIResource), (void**)&amp;pOtherResource );\n            HANDLE sharedHandle;\n            pOtherResource-&gt;GetSharedHandle(&amp;sharedHandle); </code>\n            The only resources that can be shared are 2D non-mipmapped textures. To share a resource between a Direct3D 9 device and a Direct3D 10 device the texture must have been created using  the pSharedHandle argument of {{CreateTexture}}.   The shared Direct3D 9 handle is then passed to OpenSharedResource in the hResource argument. The following code illustrates the method calls involved.\n            <code> sharedHandle = NULL; // must be set to NULL to create, can use a valid handle here to open in D3D9\n            pDevice9-&gt;CreateTexture(..., pTex2D_9, &amp;sharedHandle);\n            ...\n            pDevice10-&gt;OpenSharedResource(sharedHandle, __uuidof(ID3D10Resource), (void**)(&amp;tempResource10));\n            tempResource10-&gt;QueryInterface(__uuidof(ID3D10Texture2D), (void**)(&amp;pTex2D_10));\n            tempResource10-&gt;Release();\n            // now use pTex2D_10 with pDevice10    </code>\n            Textures being shared from D3D9 to D3D10 have the following restrictions.  Textures must be 2D Only 1 mip level is allowed Texture must have default usage Texture must be write only MSAA textures are not allowed Bind flags must have SHADER_RESOURCE and RENDER_TARGET set Only R10G10B10A2_UNORM, R16G16B16A16_FLOAT and R8G8B8A8_UNORM formats are allowed  If a shared texture is updated on one device <see cref=\"M:SharpDX.Direct3D11.DeviceContext.Flush\"/> must be called on that device.\n            </remarks>\n            <unmanaged>HRESULT ID3D10Device::OpenSharedResource([In] void* hResource,[In] GUID* ReturnedInterface,[Out, Optional] void** ppResource)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Device.CheckComputeShaderFormatSupport(SharpDX.DXGI.Format)\">\n            <summary>\n            Check if this device is supporting compute shaders for the specified format.\n            </summary>\n            <param name=\"format\">The format for which to check support.</param>\n            <returns>Flags indicating usage contexts in which the specified format is supported.</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Device.CheckFeatureSupport(SharpDX.Direct3D11.Feature)\">\n            <summary>\n            Check if this device is supporting a feature.\n            </summary>\n            <param name=\"feature\">The feature to check.</param>\n            <returns>\n            Returns true if this device supports this feature, otherwise false.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Device.CheckThreadingSupport(System.Boolean@,System.Boolean@)\">\n            <summary>\n            Check if this device is supporting threading.\n            </summary>\n            <param name=\"supportsConcurrentResources\">Support concurrent resources.</param>\n            <param name=\"supportsCommandLists\">Support command lists.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Device.GetSupportedFeatureLevel\">\n            <summary>\n            Gets the highest supported hardware feature level of the primary adapter.\n            </summary>\n            <returns>The highest supported hardware feature level.</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Device.GetSupportedFeatureLevel(SharpDX.DXGI.Adapter)\">\n            <summary>\n            Gets the highest supported hardware feature level of the primary adapter.\n            </summary>\n            <param name=\"adapter\">The adapter.</param>\n            <returns>\n            The highest supported hardware feature level.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Device.CreateDevice(SharpDX.DXGI.Adapter,SharpDX.Direct3D.DriverType,SharpDX.Direct3D11.DeviceCreationFlags,SharpDX.Direct3D.FeatureLevel[])\">\n            <summary>\n              Internal CreateDevice\n            </summary>\n            <param name = \"adapter\"></param>\n            <param name = \"driverType\"></param>\n            <param name = \"flags\"></param>\n            <param name = \"featureLevels\"></param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Device.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D11.Device\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Device.op_Explicit(System.IntPtr)~SharpDX.Direct3D11.Device\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D11.Device\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Device.CreateBuffer(SharpDX.Direct3D11.BufferDescription@,System.Nullable{SharpDX.DataBox},SharpDX.Direct3D11.Buffer)\">\n            <summary>\t\n            <p>Creates a buffer (vertex buffer, index buffer, or shader-constant buffer).</p>\t\n            </summary>\t\n            <param name=\"descRef\"><dd>  <p>A reference to a <strong><see cref=\"T:SharpDX.Direct3D11.BufferDescription\"/></strong> structure that describes the buffer.</p> </dd></param>\t\n            <param name=\"initialDataRef\"><dd>  <p>A reference to a <strong><see cref=\"T:SharpDX.DataBox\"/></strong> structure that describes  the initialization data;  use <strong><c>null</c></strong> to allocate space only (with the exception that it cannot be <strong><c>null</c></strong> if the usage flag is <strong><see cref=\"F:SharpDX.Direct3D11.ResourceUsage.Immutable\"/></strong>).</p> </dd></param>\t\n            <param name=\"bufferOut\"><dd>  <p>Address of a reference to the <strong><see cref=\"T:SharpDX.Direct3D11.Buffer\"/></strong> interface for the buffer object created.  Set this parameter to <strong><c>null</c></strong> to validate the other input parameters (<strong>S_FALSE</strong> indicates a pass).</p> </dd></param>\t\n            <returns><p>This method returns <strong>E_OUTOFMEMORY</strong> if there is insufficient memory to create the buffer.   See Direct3D 11 Return Codes for other possible return values.</p></returns>\t\n            <remarks>\t\n            <p>For example code, see How to: Create a Vertex Buffer,  How to: Create an Index Buffer or How to: Create a Constant Buffer.</p><p>The Direct3D 11.1 runtime, which is available on Windows Developer Preview and later operating systems, provides the following new functionality for <strong>CreateBuffer</strong>.</p><p>You can create a constant buffer that is larger than the maximum constant buffer size that a shader can access (4096 32-bit*4-component constants ? 64KB).  When you bind the constant buffer to the pipeline (for example, via <strong>PSSetConstantBuffers</strong> or <strong>PSSetConstantBuffers1</strong>), you can define a range of the buffer that the shader can access that fits within the 4096 constant limit.</p><p>The runtime will emulate this feature for feature level 9.1, 9.2, and 9.3; therefore, this feature is supported for feature level 9.1, 9.2, and 9.3.  This feature is always available on new drivers for feature level 10 and higher.  On existing drivers that are implemented to feature level 10 and higher, a call to <strong>CreateBuffer</strong> to request a constant buffer that is larger than 4096 fails.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Device::CreateBuffer']/*\"/>\t\n            <msdn-id>ff476501</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateBuffer([In] const D3D11_BUFFER_DESC* pDesc,[In, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Buffer** ppBuffer)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Device.CreateTexture1D(SharpDX.Direct3D11.Texture1DDescription@,SharpDX.DataBox[],SharpDX.Direct3D11.Texture1D)\">\n            <summary>\t\n            <p>Creates an array of 1D textures.</p>\t\n            </summary>\t\n            <param name=\"descRef\">No documentation.</param>\t\n            <param name=\"initialDataRef\">No documentation.</param>\t\n            <param name=\"texture1DOut\">No documentation.</param>\t\n            <returns><p>If the method succeeds, the return code is <see cref=\"F:SharpDX.Result.Ok\"/>. See Direct3D 11 Return Codes for failing error codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>CreateTexture1D</strong> creates a 1D texture resource, which can contain a number of 1D subresources. The number of textures is specified in the texture description. All textures in a resource must have the same format, size, and number of mipmap levels.</p><p>All resources are made up of one or more subresources. To load data into the texture, applications can supply the data initially as an array of <strong><see cref=\"T:SharpDX.DataBox\"/></strong> structures pointed to by <em>pInitialData</em>, or they can use one of the D3DX texture functions such as <strong><see cref=\"M:SharpDX.Direct3D11.D3DX11.CreateTextureFromFile(SharpDX.Direct3D11.Device,System.String,System.Nullable{SharpDX.Direct3D11.ImageLoadInformation},System.IntPtr,System.IntPtr@,SharpDX.Result@)\"/></strong>.</p><p>For a 32 width texture with a full mipmap chain, the <em>pInitialData</em> array has the following 6 elements:\t\n            </p><ul> <li>pInitialData[0] = 32x1</li> <li>pInitialData[1] = 16x1</li> <li>pInitialData[2] = 8x1</li> <li>pInitialData[3] = 4x1\t\n            </li> <li>pInitialData[4] = 2x1\t\n            </li> <li>pInitialData[5] = 1x1\t\n            </li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Device::CreateTexture1D']/*\"/>\t\n            <msdn-id>ff476520</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateTexture1D([In] const D3D11_TEXTURE1D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture1D** ppTexture1D)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateTexture1D</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Device.CreateTexture2D(SharpDX.Direct3D11.Texture2DDescription@,SharpDX.DataBox[],SharpDX.Direct3D11.Texture2D)\">\n            <summary>\t\n            <p>Create an array of 2D textures.</p>\t\n            </summary>\t\n            <param name=\"descRef\">No documentation.</param>\t\n            <param name=\"initialDataRef\">No documentation.</param>\t\n            <param name=\"texture2DOut\">No documentation.</param>\t\n            <returns><p>If the method succeeds, the return code is <see cref=\"F:SharpDX.Result.Ok\"/>. See Direct3D 11 Return Codes for failing error codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>CreateTexture2D</strong> creates a 2D texture resource, which can contain a number of 2D subresources. The number of textures is specified in the texture description. All textures in a resource must have the same format, size, and number of mipmap levels.</p><p>All resources are made up of one or more subresources. To load data into the texture, applications can supply the data initially as an array of <strong><see cref=\"T:SharpDX.DataBox\"/></strong> structures pointed to by <em>pInitialData</em>, or it may use one of the D3DX texture functions such as <strong><see cref=\"M:SharpDX.Direct3D11.D3DX11.CreateTextureFromFile(SharpDX.Direct3D11.Device,System.String,System.Nullable{SharpDX.Direct3D11.ImageLoadInformation},System.IntPtr,System.IntPtr@,SharpDX.Result@)\"/></strong>.</p><p>For a 32 x 32 texture with a full mipmap chain, the <em>pInitialData</em> array has the following 6 elements:\t\n            </p><ul> <li>pInitialData[0] = 32x32</li> <li>pInitialData[1] = 16x16</li> <li>pInitialData[2] = 8x8</li> <li>pInitialData[3] = 4x4\t\n            </li> <li>pInitialData[4] = 2x2\t\n            </li> <li>pInitialData[5] = 1x1\t\n            </li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Device::CreateTexture2D']/*\"/>\t\n            <msdn-id>ff476521</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateTexture2D([In] const D3D11_TEXTURE2D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture2D** ppTexture2D)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateTexture2D</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Device.CreateTexture3D(SharpDX.Direct3D11.Texture3DDescription@,SharpDX.DataBox[],SharpDX.Direct3D11.Texture3D)\">\n            <summary>\t\n            <p>Create a single 3D texture.</p>\t\n            </summary>\t\n            <param name=\"descRef\">No documentation.</param>\t\n            <param name=\"initialDataRef\">No documentation.</param>\t\n            <param name=\"texture3DOut\">No documentation.</param>\t\n            <returns><p>If the method succeeds, the return code is <see cref=\"F:SharpDX.Result.Ok\"/>. See Direct3D 11 Return Codes for failing error codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>CreateTexture3D</strong> creates a 3D texture resource, which can contain a number of 3D subresources. The number of textures is specified in the texture description. All textures in a resource must have the same format, size, and number of mipmap levels.</p><p>All resources are made up of one or more subresources. To load data into the texture, applications can supply the data initially as an array of <strong><see cref=\"T:SharpDX.DataBox\"/></strong> structures pointed to by <em>pInitialData</em>, or they can use one of the D3DX texture functions such as <strong><see cref=\"M:SharpDX.Direct3D11.D3DX11.CreateTextureFromFile(SharpDX.Direct3D11.Device,System.String,System.Nullable{SharpDX.Direct3D11.ImageLoadInformation},System.IntPtr,System.IntPtr@,SharpDX.Result@)\"/></strong>.</p><p>Each element of <em>pInitialData</em> provides all of the slices that are defined for a given miplevel. For example, for a 32 x 32 x 4 volume texture with a full mipmap chain, the array has the following 6 elements:</p><ul> <li>pInitialData[0] = 32x32 with 4 slices</li> <li>pInitialData[1] = 16x16 with 2 slices</li> <li>pInitialData[2] = 8x8 with 1 slice</li> <li>pInitialData[3] = 4x4\t\n            with 1 slice</li> <li>pInitialData[4] = 2x2\t\n            with 1 slice</li> <li>pInitialData[5] = 1x1\t\n            with 1 slice</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Device::CreateTexture3D']/*\"/>\t\n            <msdn-id>ff476522</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateTexture3D([In] const D3D11_TEXTURE3D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture3D** ppTexture3D)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateTexture3D</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Device.CreateShaderResourceView(SharpDX.Direct3D11.Resource,System.Nullable{SharpDX.Direct3D11.ShaderResourceViewDescription},SharpDX.Direct3D11.ShaderResourceView)\">\n            <summary>\t\n            <p>Create a shader-resource view for accessing data in a resource.</p>\t\n            </summary>\t\n            <param name=\"resourceRef\"><dd>  <p>Pointer to the resource that will serve as input to a shader. This resource must have been created with the <strong> <see cref=\"F:SharpDX.Direct3D11.BindFlags.ShaderResource\"/></strong> flag.</p> </dd></param>\t\n            <param name=\"descRef\"><dd>  <p>Pointer to a shader-resource view description (see <strong><see cref=\"T:SharpDX.Direct3D11.ShaderResourceViewDescription\"/></strong>). Set this parameter to <strong><c>null</c></strong> to create a  view that accesses the entire resource (using the format the resource was created with).</p> </dd></param>\t\n            <param name=\"sRViewOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D11.ShaderResourceView\"/></strong>. Set this parameter to <strong><c>null</c></strong> to validate the  other input parameters (the method will return <strong>S_FALSE</strong> if the other input parameters pass validation).</p> </dd></param>\t\n            <returns><p>This method returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>A resource is made up of one or more subresources; a view identifies which subresources to allow the pipeline to access. In addition, each resource is bound to the pipeline using a view. A shader-resource view is designed to bind any buffer or texture resource to the shader stages using the following  API methods: <strong><see cref=\"M:SharpDX.Direct3D11.VertexShaderStage.SetShaderResources(System.Int32,System.Int32,System.IntPtr)\"/></strong>, <strong><see cref=\"M:SharpDX.Direct3D11.GeometryShaderStage.SetShaderResources(System.Int32,System.Int32,System.IntPtr)\"/></strong> and <strong><see cref=\"M:SharpDX.Direct3D11.PixelShaderStage.SetShaderResources(System.Int32,System.Int32,System.IntPtr)\"/></strong>.</p><p>Because a view is fully typed, this means that typeless resources become fully typed when bound to the pipeline.</p><p><strong>Note</strong>??To successfully create a shader-resource view from a typeless buffer (for example, <strong><see cref=\"F:SharpDX.DXGI.Format.R32G32B32A32_Typeless\"/></strong>), you must set the <strong><see cref=\"F:SharpDX.Direct3D11.ResourceOptionFlags.BufferAllowRawViews\"/></strong> flag when you create the buffer.</p><p>The Direct3D 11.1 runtime, which is available starting with Windows Developer Preview, allows you to use <strong>CreateShaderResourceView</strong> for the following new purpose. </p><p>You can create shader-resource views of video resources so that Direct3D shaders can process those shader-resource views. These video resources are either Texture2D or Texture2DArray. The value in the <strong>ViewDimension</strong> member of the <strong><see cref=\"T:SharpDX.Direct3D11.ShaderResourceViewDescription\"/></strong> structure for a created shader-resource view must match the type of video resource, D3D11_SRV_DIMENSION_TEXTURE2D          for Texture2D and D3D11_SRV_DIMENSION_TEXTURE2DARRAY for Texture2DArray. Additionally, the format of the underlying video resource restricts the formats that the view can use. The video resource format values on the <strong><see cref=\"T:SharpDX.DXGI.Format\"/></strong> reference page specify the format values that views are restricted to.</p><p>The runtime read+write conflict prevention logic (which stops a resource from being bound as an SRV and RTV or UAV at the same time) treats views of different parts of the same video surface as conflicting for simplicity.  Therefore, the runtime does not allow an application to read from luma while the application simultaneously renders to chroma in the same surface even though the hardware might allow these simultaneous operations.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Device::CreateShaderResourceView']/*\"/>\t\n            <msdn-id>ff476519</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateShaderResourceView([In] ID3D11Resource* pResource,[In, Optional] const D3D11_SHADER_RESOURCE_VIEW_DESC* pDesc,[Out, Fast] ID3D11ShaderResourceView** ppSRView)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateShaderResourceView</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Device.CreateUnorderedAccessView(SharpDX.Direct3D11.Resource,System.Nullable{SharpDX.Direct3D11.UnorderedAccessViewDescription},SharpDX.Direct3D11.UnorderedAccessView)\">\n            <summary>\t\n            <p>Creates a view for accessing an unordered access resource.</p>\t\n            </summary>\t\n            <param name=\"resourceRef\">No documentation.</param>\t\n            <param name=\"descRef\">No documentation.</param>\t\n            <param name=\"uAViewOut\">No documentation.</param>\t\n            <returns><p>This method returns one of the Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>The Direct3D 11.1 runtime, which is available starting with Windows Developer Preview, allows you to use <strong>CreateUnorderedAccessView</strong> for the following new purpose. </p><p>You can create unordered-access views of video resources so that Direct3D shaders can process those unordered-access views. These video resources are either Texture2D or Texture2DArray. The value in the <strong>ViewDimension</strong> member of the <strong><see cref=\"T:SharpDX.Direct3D11.UnorderedAccessViewDescription\"/></strong> structure for a created unordered-access view must match the type of video resource, <see cref=\"F:SharpDX.Direct3D11.UnorderedAccessViewDimension.Texture2D\"/>          for Texture2D and <see cref=\"F:SharpDX.Direct3D11.UnorderedAccessViewDimension.Texture2DArray\"/> for Texture2DArray. Additionally, the format of the underlying video resource restricts the formats that the view can use. The video resource format values on the <strong><see cref=\"T:SharpDX.DXGI.Format\"/></strong> reference page specify the format values that views are restricted to.</p><p>The runtime read+write conflict prevention logic (which stops a resource from being bound as an SRV and RTV or UAV at the same time) treats views of different parts of the same video surface as conflicting for simplicity.  Therefore, the runtime does not allow an application to read from luma while the application simultaneously renders to chroma in the same surface even though the hardware might allow these simultaneous operations.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Device::CreateUnorderedAccessView']/*\"/>\t\n            <msdn-id>ff476523</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateUnorderedAccessView([In] ID3D11Resource* pResource,[In, Optional] const D3D11_UNORDERED_ACCESS_VIEW_DESC* pDesc,[Out, Fast] ID3D11UnorderedAccessView** ppUAView)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateUnorderedAccessView</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Device.CreateRenderTargetView(SharpDX.Direct3D11.Resource,System.Nullable{SharpDX.Direct3D11.RenderTargetViewDescription},SharpDX.Direct3D11.RenderTargetView)\">\n            <summary>\t\n            <p>Creates a render-target view for accessing resource data.</p>\t\n            </summary>\t\n            <param name=\"resourceRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D11.Resource\"/></strong> that represents a render target. This resource must have been created with the <strong><see cref=\"F:SharpDX.Direct3D11.BindFlags.RenderTarget\"/></strong> flag.</p> </dd></param>\t\n            <param name=\"descRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D11.RenderTargetViewDescription\"/></strong> that represents a render-target view description. Set this parameter to <strong><c>null</c></strong> to create a view that accesses all of the subresources in mipmap level 0.</p> </dd></param>\t\n            <param name=\"rTViewOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D11.RenderTargetView\"/></strong>. Set this parameter to <strong><c>null</c></strong> to validate the other input parameters (the method will return S_FALSE if the other input parameters pass validation).</p> </dd></param>\t\n            <returns><p>This method returns one of the Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>A render-target view can be bound to the output-merger stage by calling <strong><see cref=\"M:SharpDX.Direct3D11.OutputMergerStage.SetRenderTargets(System.Int32,System.IntPtr,SharpDX.Direct3D11.DepthStencilView)\"/></strong>.</p><p>The Direct3D 11.1 runtime, which is available starting with Windows Developer Preview, allows you to use <strong>CreateRenderTargetView</strong> for the following new purpose. </p><p>You can create render-target views of video resources so that Direct3D shaders can process those render-target views. These video resources are either Texture2D or Texture2DArray. The value in the <strong>ViewDimension</strong> member of the <strong><see cref=\"T:SharpDX.Direct3D11.RenderTargetViewDescription\"/></strong> structure for a created render-target view must match the type of video resource, <see cref=\"F:SharpDX.Direct3D11.RenderTargetViewDimension.Texture2D\"/>          for Texture2D and <see cref=\"F:SharpDX.Direct3D11.RenderTargetViewDimension.Texture2DArray\"/> for Texture2DArray. Additionally, the format of the underlying video resource restricts the formats that the view can use. The video resource format values on the <strong><see cref=\"T:SharpDX.DXGI.Format\"/></strong> reference page specify the format values that views are restricted to.</p><p>The runtime read+write conflict prevention logic (which stops a resource from being bound as an SRV and RTV or UAV at the same time) treats views of different parts of the same video surface as conflicting for simplicity.  Therefore, the runtime does not allow an application to read from luma while the application simultaneously renders to chroma in the same surface even though the hardware might allow these simultaneous operations.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Device::CreateRenderTargetView']/*\"/>\t\n            <msdn-id>ff476517</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateRenderTargetView([In] ID3D11Resource* pResource,[In, Optional] const D3D11_RENDER_TARGET_VIEW_DESC* pDesc,[Out, Fast] ID3D11RenderTargetView** ppRTView)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateRenderTargetView</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Device.CreateDepthStencilView(SharpDX.Direct3D11.Resource,System.Nullable{SharpDX.Direct3D11.DepthStencilViewDescription},SharpDX.Direct3D11.DepthStencilView)\">\n            <summary>\t\n            <p>Create a depth-stencil view for accessing resource data.</p>\t\n            </summary>\t\n            <param name=\"resourceRef\"><dd>  <p>Pointer to the resource that will serve as the depth-stencil surface. This resource must have been created with the <strong><see cref=\"F:SharpDX.Direct3D11.BindFlags.DepthStencil\"/></strong> flag.</p> </dd></param>\t\n            <param name=\"descRef\"><dd>  <p>Pointer to a depth-stencil-view description (see <strong><see cref=\"T:SharpDX.Direct3D11.DepthStencilViewDescription\"/></strong>). Set this parameter to <strong><c>null</c></strong> to create a view that accesses mipmap level 0 of the entire resource (using the format the resource was created with).</p> </dd></param>\t\n            <param name=\"depthStencilViewOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D11.DepthStencilView\"/></strong>. Set this parameter to <strong><c>null</c></strong> to validate the other input parameters (the method will return S_FALSE if the other input parameters pass validation).</p> </dd></param>\t\n            <returns><p>This method returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>A depth-stencil view can be bound to the output-merger stage by calling <strong><see cref=\"M:SharpDX.Direct3D11.OutputMergerStage.SetRenderTargets(System.Int32,System.IntPtr,SharpDX.Direct3D11.DepthStencilView)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Device::CreateDepthStencilView']/*\"/>\t\n            <msdn-id>ff476507</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateDepthStencilView([In] ID3D11Resource* pResource,[In, Optional] const D3D11_DEPTH_STENCIL_VIEW_DESC* pDesc,[Out, Fast] ID3D11DepthStencilView** ppDepthStencilView)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateDepthStencilView</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Device.CreateInputLayout(SharpDX.Direct3D11.InputElement[],System.Int32,System.IntPtr,SharpDX.PointerSize,SharpDX.Direct3D11.InputLayout)\">\n            <summary>\t\n            <p>Create an input-layout object to describe the input-buffer data for the input-assembler stage.</p>\t\n            </summary>\t\n            <param name=\"inputElementDescsRef\"><dd>  <p>An array of the input-assembler stage input data types; each type is described by an element description (see <strong><see cref=\"T:SharpDX.Direct3D11.InputElement\"/></strong>).</p> </dd></param>\t\n            <param name=\"numElements\"><dd>  <p>The number of input-data types in the array of input-elements.</p> </dd></param>\t\n            <param name=\"shaderBytecodeWithInputSignatureRef\"><dd>  <p>A reference to the compiled shader.  The compiled shader code contains a input signature which is validated against the array of elements. See remarks.</p> </dd></param>\t\n            <param name=\"bytecodeLength\"><dd>  <p>Size of the compiled shader.</p> </dd></param>\t\n            <param name=\"inputLayoutOut\"><dd>  <p>A reference to the input-layout object created (see <strong><see cref=\"T:SharpDX.Direct3D11.InputLayout\"/></strong>). To validate the other input parameters, set this reference to be <strong><c>null</c></strong> and verify that the method returns S_FALSE.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return code is <see cref=\"F:SharpDX.Result.Ok\"/>. See Direct3D 11 Return Codes for failing error codes.</p></returns>\t\n            <remarks>\t\n            <p>After creating an input layout object, it must be bound to the input-assembler stage before calling a draw API.</p><p>Once an input-layout object is created from a shader signature, the input-layout object can be reused with any other shader that has an identical input signature (semantics included). This can simplify the creation of input-layout objects when you are working with many shaders with identical inputs.</p><p>If a data type in the input-layout declaration does not match the data type in a shader-input signature, CreateInputLayout will generate a warning during compilation. The warning is simply to call attention to the fact that the data may be reinterpreted when read from a register. You may either disregard this warning (if reinterpretation is intentional) or make the data types match in both declarations to eliminate the warning.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Device::CreateInputLayout']/*\"/>\t\n            <msdn-id>ff476512</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateInputLayout([In, Buffer] const D3D11_INPUT_ELEMENT_DESC* pInputElementDescs,[In] unsigned int NumElements,[In] const void* pShaderBytecodeWithInputSignature,[In] SIZE_T BytecodeLength,[Out, Fast] ID3D11InputLayout** ppInputLayout)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateInputLayout</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Device.CreateVertexShader(System.IntPtr,SharpDX.PointerSize,SharpDX.Direct3D11.ClassLinkage,SharpDX.Direct3D11.VertexShader)\">\n            <summary>\t\n            <p>Create a vertex-shader object from a compiled shader.</p>\t\n            </summary>\t\n            <param name=\"shaderBytecodeRef\"><dd>  <p>A reference to the compiled shader. </p> </dd></param>\t\n            <param name=\"bytecodeLength\"><dd>  <p>Size of the compiled vertex shader.</p> </dd></param>\t\n            <param name=\"classLinkageRef\"><dd>  <p>A reference to a class linkage interface (see <strong><see cref=\"T:SharpDX.Direct3D11.ClassLinkage\"/></strong>); the value can be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"vertexShaderOut\"><dd>  <p>Address of a reference to a <strong><see cref=\"T:SharpDX.Direct3D11.VertexShader\"/></strong> interface. If this is <strong><c>null</c></strong>, all other parameters will be validated, and if all parameters pass validation this API will return <strong>S_FALSE</strong> instead of <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>.</p> </dd></param>\t\n            <returns><p>This method returns one of the Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>The Direct3D 11.1 runtime, which is available starting with Windows Developer Preview, provides the following new functionality for <strong>CreateVertexShader</strong>.</p><p>The following shader model 5.0 instructions are available to just pixel shaders and compute shaders in the Direct3D 11.0 runtime. For the Direct3D 11.1 runtime, because unordered access views (UAV) are available at all shader stages, you can use these instructions in all shader stages.</p><p>Therefore, if you use the following shader model 5.0 instructions in a vertex shader, you can successfully pass the compiled vertex shader to <em>pShaderBytecode</em>. That is, the call to <strong>CreateVertexShader</strong> succeeds.</p><p>If you pass a compiled shader to <em>pShaderBytecode</em> that uses any of the following instructions on a device that doesn?t support UAVs at every shader stage (including existing drivers that are not implemented to support UAVs at every shader stage), <strong>CreateVertexShader</strong> fails.  <strong>CreateVertexShader</strong> also fails if the shader tries to use a UAV slot beyond the set of UAV slots that the hardware supports.</p><ul> <li> dcl_uav_typed </li> <li> dcl_uav_raw </li> <li> dcl_uav_structured </li> <li> ld_raw </li> <li> ld_structured </li> <li> ld_uav_typed </li> <li> store_raw </li> <li> store_structured </li> <li> store_uav_typed </li> <li> sync_uglobal </li> <li>All atomics and immediate atomics (for example, atomic_and and imm_atomic_and)</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Device::CreateVertexShader']/*\"/>\t\n            <msdn-id>ff476524</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateVertexShader([In] const void* pShaderBytecode,[In] SIZE_T BytecodeLength,[In, Optional] ID3D11ClassLinkage* pClassLinkage,[Out, Fast] ID3D11VertexShader** ppVertexShader)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateVertexShader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Device.CreateGeometryShader(System.IntPtr,SharpDX.PointerSize,SharpDX.Direct3D11.ClassLinkage,SharpDX.Direct3D11.GeometryShader)\">\n            <summary>\t\n            <p>Create a geometry shader.</p>\t\n            </summary>\t\n            <param name=\"shaderBytecodeRef\"><dd>  <p>A reference to the compiled shader.  </p> </dd></param>\t\n            <param name=\"bytecodeLength\"><dd>  <p>Size of the compiled geometry shader.</p> </dd></param>\t\n            <param name=\"classLinkageRef\"><dd>  <p>A reference to a class linkage interface (see <strong><see cref=\"T:SharpDX.Direct3D11.ClassLinkage\"/></strong>); the value can be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"geometryShaderOut\"><dd>  <p>Address of a reference to a <strong><see cref=\"T:SharpDX.Direct3D11.GeometryShader\"/></strong> interface. If this is <strong><c>null</c></strong>, all other parameters will be validated, and if all parameters pass validation this API will return S_FALSE instead of <see cref=\"F:SharpDX.Result.Ok\"/>.</p> </dd></param>\t\n            <returns><p>This method returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>After it is created, the shader can be set to the device by calling <strong><see cref=\"M:SharpDX.Direct3D11.GeometryShaderStage.SetShader(SharpDX.Direct3D11.GeometryShader,SharpDX.Direct3D11.ClassInstance[],System.Int32)\"/></strong>.</p><p>The Direct3D 11.1 runtime, which is available starting with Windows Developer Preview, provides the following new functionality for <strong>CreateGeometryShader</strong>.</p><p>The following shader model 5.0 instructions are available to just pixel shaders and compute shaders in the Direct3D 11.0 runtime. For the Direct3D 11.1 runtime, because unordered access views (UAV) are available at all shader stages, you can use these instructions in all shader stages.</p><p>Therefore, if you use the following shader model 5.0 instructions in a geometry shader, you can successfully pass the compiled geometry shader to <em>pShaderBytecode</em>. That is, the call to <strong>CreateGeometryShader</strong> succeeds.</p><p>If you pass a compiled shader to <em>pShaderBytecode</em> that uses any of the following instructions on a device that doesn?t support UAVs at every shader stage (including existing drivers that are not implemented to support UAVs at every shader stage), <strong>CreateGeometryShader</strong> fails.  <strong>CreateGeometryShader</strong> also fails if the shader tries to use a UAV slot beyond the set of UAV slots that the hardware supports.</p><ul> <li> dcl_uav_typed </li> <li> dcl_uav_raw </li> <li> dcl_uav_structured </li> <li> ld_raw </li> <li> ld_structured </li> <li> ld_uav_typed </li> <li> store_raw </li> <li> store_structured </li> <li> store_uav_typed </li> <li> sync_uglobal </li> <li>All atomics and immediate atomics (for example, atomic_and and imm_atomic_and)</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Device::CreateGeometryShader']/*\"/>\t\n            <msdn-id>ff476509</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateGeometryShader([In] const void* pShaderBytecode,[In] SIZE_T BytecodeLength,[In, Optional] ID3D11ClassLinkage* pClassLinkage,[Out, Fast] ID3D11GeometryShader** ppGeometryShader)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateGeometryShader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Device.CreateGeometryShaderWithStreamOutput(System.IntPtr,SharpDX.PointerSize,SharpDX.Direct3D11.StreamOutputElement[],System.Int32,System.Int32[],System.Int32,System.Int32,SharpDX.Direct3D11.ClassLinkage,SharpDX.Direct3D11.GeometryShader)\">\n            <summary>\t\n            <p>Creates a geometry shader that can write to streaming output buffers.</p>\t\n            </summary>\t\n            <param name=\"shaderBytecodeRef\"><dd>  <p>A reference to the compiled geometry shader for a standard geometry shader plus stream output. For info on how to get this reference, see Getting a Pointer to a Compiled Shader.</p> <p>To create the stream output without using a geometry shader, pass a reference to the output signature for the prior stage. To obtain this output signature, call the <strong><see cref=\"!:SharpDX.D3DCompiler.D3D.GetOutputSignatureBlob\"/></strong> compiler function. You can also pass a reference to the compiled shader for the prior stage (for example, the vertex-shader stage or domain-shader stage). This compiled shader provides the output signature for the data.</p> </dd></param>\t\n            <param name=\"bytecodeLength\"><dd>  <p>Size of the compiled geometry shader.</p> </dd></param>\t\n            <param name=\"sODeclarationRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D11.StreamOutputElement\"/></strong> array. Cannot be <strong><c>null</c></strong> if NumEntries &gt; 0.</p> </dd></param>\t\n            <param name=\"numEntries\"><dd>  <p>The number of entries in the stream output declaration ( ranges from 0 to D3D11_SO_STREAM_COUNT * D3D11_SO_OUTPUT_COMPONENT_COUNT ).</p> </dd></param>\t\n            <param name=\"bufferStridesRef\"><dd>  <p>An array of buffer strides; each stride is the size of an element for that buffer.</p> </dd></param>\t\n            <param name=\"numStrides\"><dd>  <p>The number of strides (or buffers) in <em>pBufferStrides</em> (ranges from 0 to D3D11_SO_BUFFER_SLOT_COUNT).</p> </dd></param>\t\n            <param name=\"rasterizedStream\"><dd>  <p>The index number of the stream to be sent to the rasterizer stage (ranges from 0 to D3D11_SO_STREAM_COUNT - 1).  Set to D3D11_SO_NO_RASTERIZED_STREAM if no stream is to be rasterized.</p> </dd></param>\t\n            <param name=\"classLinkageRef\"><dd>  <p>A reference to a class linkage interface (see <strong><see cref=\"T:SharpDX.Direct3D11.ClassLinkage\"/></strong>); the value can be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"geometryShaderOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D11.GeometryShader\"/></strong> interface, representing the geometry shader that was created.  Set this to <strong><c>null</c></strong> to validate the other parameters; if validation passes, the method will return S_FALSE instead of <see cref=\"F:SharpDX.Result.Ok\"/>.</p> </dd></param>\t\n            <returns><p>This method returns one of the Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>For more info about using <strong>CreateGeometryShaderWithStreamOutput</strong>, see Create a Geometry-Shader Object with Stream Output.</p><p>The Direct3D 11.1 runtime, which is available starting with Windows Developer Preview, provides the following new functionality for <strong>CreateGeometryShaderWithStreamOutput</strong>.</p><p>The following shader model 5.0 instructions are available to just pixel shaders and compute shaders in the Direct3D 11.0 runtime. For the Direct3D 11.1 runtime, because unordered access views (UAV) are available at all shader stages, you can use these instructions in all shader stages.</p><p>Therefore, if you use the following shader model 5.0 instructions in a geometry shader, you can successfully pass the compiled geometry shader to <em>pShaderBytecode</em>. That is, the call to <strong>CreateGeometryShaderWithStreamOutput</strong> succeeds.</p><p>If you pass a compiled shader to <em>pShaderBytecode</em> that uses any of the following instructions on a device that doesn?t support UAVs at every shader stage (including existing drivers that are not implemented to support UAVs at every shader stage), <strong>CreateGeometryShaderWithStreamOutput</strong> fails.  <strong>CreateGeometryShaderWithStreamOutput</strong> also fails if the shader tries to use a UAV slot beyond the set of UAV slots that the hardware supports.</p><ul> <li> dcl_uav_typed </li> <li> dcl_uav_raw </li> <li> dcl_uav_structured </li> <li> ld_raw </li> <li> ld_structured </li> <li> ld_uav_typed </li> <li> store_raw </li> <li> store_structured </li> <li> store_uav_typed </li> <li> sync_uglobal </li> <li>All atomics and immediate atomics (for example, atomic_and and imm_atomic_and)</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Device::CreateGeometryShaderWithStreamOutput']/*\"/>\t\n            <msdn-id>ff476510</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateGeometryShaderWithStreamOutput([In] const void* pShaderBytecode,[In] SIZE_T BytecodeLength,[In, Buffer, Optional] const D3D11_SO_DECLARATION_ENTRY* pSODeclaration,[In] unsigned int NumEntries,[In, Buffer, Optional] const unsigned int* pBufferStrides,[In] unsigned int NumStrides,[In] unsigned int RasterizedStream,[In, Optional] ID3D11ClassLinkage* pClassLinkage,[Out, Fast] ID3D11GeometryShader** ppGeometryShader)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateGeometryShaderWithStreamOutput</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Device.CreatePixelShader(System.IntPtr,SharpDX.PointerSize,SharpDX.Direct3D11.ClassLinkage,SharpDX.Direct3D11.PixelShader)\">\n            <summary>\t\n            <p>Create a pixel shader.</p>\t\n            </summary>\t\n            <param name=\"shaderBytecodeRef\"><dd>  <p>A reference to the compiled shader. </p> </dd></param>\t\n            <param name=\"bytecodeLength\"><dd>  <p>Size of the compiled pixel shader.</p> </dd></param>\t\n            <param name=\"classLinkageRef\"><dd>  <p>A reference to a class linkage interface (see <strong><see cref=\"T:SharpDX.Direct3D11.ClassLinkage\"/></strong>); the value can be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"pixelShaderOut\"><dd>  <p>Address of a reference to a <strong><see cref=\"T:SharpDX.Direct3D11.PixelShader\"/></strong> interface. If this is <strong><c>null</c></strong>, all other parameters will be validated, and if all parameters pass validation this API will return S_FALSE instead of <see cref=\"F:SharpDX.Result.Ok\"/>.</p> </dd></param>\t\n            <returns><p>This method returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>After creating the pixel shader, you can set it to the device using <strong><see cref=\"M:SharpDX.Direct3D11.PixelShaderStage.SetShader(SharpDX.Direct3D11.PixelShader,SharpDX.Direct3D11.ClassInstance[],System.Int32)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Device::CreatePixelShader']/*\"/>\t\n            <msdn-id>ff476513</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreatePixelShader([In] const void* pShaderBytecode,[In] SIZE_T BytecodeLength,[In, Optional] ID3D11ClassLinkage* pClassLinkage,[Out, Fast] ID3D11PixelShader** ppPixelShader)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreatePixelShader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Device.CreateHullShader(System.IntPtr,SharpDX.PointerSize,SharpDX.Direct3D11.ClassLinkage,SharpDX.Direct3D11.HullShader)\">\n            <summary>\t\n            <p>Create a hull shader.</p>\t\n            </summary>\t\n            <param name=\"shaderBytecodeRef\">No documentation.</param>\t\n            <param name=\"bytecodeLength\">No documentation.</param>\t\n            <param name=\"classLinkageRef\">No documentation.</param>\t\n            <param name=\"hullShaderOut\">No documentation.</param>\t\n            <returns><p>This method returns one of the Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>The Direct3D 11.1 runtime, which is available starting with Windows Developer Preview, provides the following new functionality for <strong>CreateHullShader</strong>.</p><p>The following shader model 5.0 instructions are available to just pixel shaders and compute shaders in the Direct3D 11.0 runtime. For the Direct3D 11.1 runtime, because unordered access views (UAV) are available at all shader stages, you can use these instructions in all shader stages.</p><p>Therefore, if you use the following shader model 5.0 instructions in a hull shader, you can successfully pass the compiled hull shader to <em>pShaderBytecode</em>. That is, the call to <strong>CreateHullShader</strong> succeeds.</p><p>If you pass a compiled shader to <em>pShaderBytecode</em> that uses any of the following instructions on a device that doesn?t support UAVs at every shader stage (including existing drivers that are not implemented to support UAVs at every shader stage), <strong>CreateHullShader</strong> fails.  <strong>CreateHullShader</strong> also fails if the shader tries to use a UAV slot beyond the set of UAV slots that the hardware supports.</p><ul> <li> dcl_uav_typed </li> <li> dcl_uav_raw </li> <li> dcl_uav_structured </li> <li> ld_raw </li> <li> ld_structured </li> <li> ld_uav_typed </li> <li> store_raw </li> <li> store_structured </li> <li> store_uav_typed </li> <li> sync_uglobal </li> <li>All atomics and immediate atomics (for example, atomic_and and imm_atomic_and)</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Device::CreateHullShader']/*\"/>\t\n            <msdn-id>ff476511</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateHullShader([In] const void* pShaderBytecode,[In] SIZE_T BytecodeLength,[In, Optional] ID3D11ClassLinkage* pClassLinkage,[Out, Fast] ID3D11HullShader** ppHullShader)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateHullShader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Device.CreateDomainShader(System.IntPtr,SharpDX.PointerSize,SharpDX.Direct3D11.ClassLinkage,SharpDX.Direct3D11.DomainShader)\">\n            <summary>\t\n            <p>Create a domain shader .</p>\t\n            </summary>\t\n            <param name=\"shaderBytecodeRef\">No documentation.</param>\t\n            <param name=\"bytecodeLength\">No documentation.</param>\t\n            <param name=\"classLinkageRef\">No documentation.</param>\t\n            <param name=\"domainShaderOut\">No documentation.</param>\t\n            <returns><p>This method returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>The Direct3D 11.1 runtime, which is available starting with Windows Developer Preview, provides the following new functionality for <strong>CreateDomainShader</strong>.</p><p>The following shader model 5.0 instructions are available to just pixel shaders and compute shaders in the Direct3D 11.0 runtime. For the Direct3D 11.1 runtime, because unordered access views (UAV) are available at all shader stages, you can use these instructions in all shader stages.</p><p>Therefore, if you use the following shader model 5.0 instructions in a domain shader, you can successfully pass the compiled domain shader to <em>pShaderBytecode</em>. That is, the call to <strong>CreateDomainShader</strong> succeeds.</p><p>If you pass a compiled shader to <em>pShaderBytecode</em> that uses any of the following instructions on a device that doesn?t support UAVs at every shader stage (including existing drivers that are not implemented to support UAVs at every shader stage), <strong>CreateDomainShader</strong> fails.  <strong>CreateDomainShader</strong> also fails if the shader tries to use a UAV slot beyond the set of UAV slots that the hardware supports.</p><ul> <li> dcl_uav_typed </li> <li> dcl_uav_raw </li> <li> dcl_uav_structured </li> <li> ld_raw </li> <li> ld_structured </li> <li> ld_uav_typed </li> <li> store_raw </li> <li> store_structured </li> <li> store_uav_typed </li> <li> sync_uglobal </li> <li>All atomics and immediate atomics (for example, atomic_and and imm_atomic_and)</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Device::CreateDomainShader']/*\"/>\t\n            <msdn-id>ff476508</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateDomainShader([In] const void* pShaderBytecode,[In] SIZE_T BytecodeLength,[In, Optional] ID3D11ClassLinkage* pClassLinkage,[Out, Fast] ID3D11DomainShader** ppDomainShader)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateDomainShader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Device.CreateComputeShader(System.IntPtr,SharpDX.PointerSize,SharpDX.Direct3D11.ClassLinkage,SharpDX.Direct3D11.ComputeShader)\">\n            <summary>\t\n            <p>Create a compute shader.</p>\t\n            </summary>\t\n            <param name=\"shaderBytecodeRef\">No documentation.</param>\t\n            <param name=\"bytecodeLength\">No documentation.</param>\t\n            <param name=\"classLinkageRef\">No documentation.</param>\t\n            <param name=\"computeShaderOut\">No documentation.</param>\t\n            <returns><p>This method returns E_OUTOFMEMORY if there is insufficient memory to create the compute shader.   See Direct3D 11 Return Codes for other possible return values.</p></returns>\t\n            <remarks>\t\n            <p>For an example, see How To: Create a Compute Shader and HDRToneMappingCS11 Sample.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Device::CreateComputeShader']/*\"/>\t\n            <msdn-id>ff476503</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateComputeShader([In] const void* pShaderBytecode,[In] SIZE_T BytecodeLength,[In, Optional] ID3D11ClassLinkage* pClassLinkage,[Out, Fast] ID3D11ComputeShader** ppComputeShader)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateComputeShader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Device.CreateClassLinkage(SharpDX.Direct3D11.ClassLinkage)\">\n            <summary>\t\n            <p>Creates class linkage libraries to enable dynamic shader linkage.</p>\t\n            </summary>\t\n            <param name=\"linkageOut\"><dd>  <p>A reference to a class-linkage interface reference (see <strong><see cref=\"T:SharpDX.Direct3D11.ClassLinkage\"/></strong>).</p> </dd></param>\t\n            <returns><p>This method returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>The <strong><see cref=\"T:SharpDX.Direct3D11.ClassLinkage\"/></strong> interface returned in <em>ppLinkage</em> is associated with a shader by passing it as a parameter to one of the <strong><see cref=\"T:SharpDX.Direct3D11.Device\"/></strong> create shader methods such as <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreatePixelShader(System.IntPtr,SharpDX.PointerSize,SharpDX.Direct3D11.ClassLinkage,SharpDX.Direct3D11.PixelShader)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Device::CreateClassLinkage']/*\"/>\t\n            <msdn-id>ff476502</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateClassLinkage([Out, Fast] ID3D11ClassLinkage** ppLinkage)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateClassLinkage</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Device.CreateBlendState(SharpDX.Direct3D11.BlendStateDescription@,SharpDX.Direct3D11.BlendState)\">\n            <summary>\t\n            <p>Create a blend-state object that encapsules blend state for the output-merger stage.</p>\t\n            </summary>\t\n            <param name=\"blendStateDescRef\"><dd>  <p>Pointer to a blend-state description (see <strong><see cref=\"T:SharpDX.Direct3D11.BlendStateDescription\"/></strong>).</p> </dd></param>\t\n            <param name=\"blendStateOut\"><dd>  <p>Address of a reference to the blend-state object created (see <strong><see cref=\"T:SharpDX.Direct3D11.BlendState\"/></strong>).</p> </dd></param>\t\n            <returns><p>This method returns E_OUTOFMEMORY if there is insufficient memory to create the blend-state object.   See Direct3D 11 Return Codes for other possible return values.</p></returns>\t\n            <remarks>\t\n            <p>An application can create up to 4096 unique blend-state objects. For each object created, the runtime checks to see if a previous object  has the same state. If such a previous object exists, the runtime will return a reference to previous instance instead of creating a duplicate object.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Device::CreateBlendState']/*\"/>\t\n            <msdn-id>ff476500</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateBlendState([In] const D3D11_BLEND_DESC* pBlendStateDesc,[Out, Fast] ID3D11BlendState** ppBlendState)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateBlendState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Device.CreateDepthStencilState(SharpDX.Direct3D11.DepthStencilStateDescription@,SharpDX.Direct3D11.DepthStencilState)\">\n            <summary>\t\n            <p>Create a depth-stencil state object that encapsulates depth-stencil test information for the output-merger stage.</p>\t\n            </summary>\t\n            <param name=\"depthStencilDescRef\"><dd>  <p>Pointer to a depth-stencil state description (see <strong><see cref=\"T:SharpDX.Direct3D11.DepthStencilStateDescription\"/></strong>).</p> </dd></param>\t\n            <param name=\"depthStencilStateOut\"><dd>  <p>Address of a reference to the depth-stencil state object created (see <strong><see cref=\"T:SharpDX.Direct3D11.DepthStencilState\"/></strong>).</p> </dd></param>\t\n            <returns><p>This method returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>4096 unique depth-stencil state objects can be created on a device at a time.</p><p>If an application attempts to create a depth-stencil-state interface with the same state as an existing interface, the same interface will be returned and the total number of unique depth-stencil state objects will stay the same.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Device::CreateDepthStencilState']/*\"/>\t\n            <msdn-id>ff476506</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateDepthStencilState([In] const D3D11_DEPTH_STENCIL_DESC* pDepthStencilDesc,[Out, Fast] ID3D11DepthStencilState** ppDepthStencilState)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateDepthStencilState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Device.CreateRasterizerState(SharpDX.Direct3D11.RasterizerStateDescription@,SharpDX.Direct3D11.RasterizerState)\">\n            <summary>\t\n            <p>Create a rasterizer state object that tells the rasterizer stage how to behave.</p>\t\n            </summary>\t\n            <param name=\"rasterizerDescRef\"><dd>  <p>Pointer to a rasterizer state description (see <strong><see cref=\"T:SharpDX.Direct3D11.RasterizerStateDescription\"/></strong>).</p> </dd></param>\t\n            <param name=\"rasterizerStateOut\"><dd>  <p>Address of a reference to the rasterizer state object created (see <strong><see cref=\"T:SharpDX.Direct3D11.RasterizerState\"/></strong>).</p> </dd></param>\t\n            <returns><p>This method returns E_OUTOFMEMORY if there is insufficient memory to create the compute shader.  See Direct3D 11 Return Codes for other possible return values.</p></returns>\t\n            <remarks>\t\n            <p>4096 unique rasterizer state objects can be created on a device at a time.</p><p>If an application attempts to create a rasterizer-state interface with the same state as an existing interface, the same interface will be returned and the total number of unique rasterizer state objects will stay the same.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Device::CreateRasterizerState']/*\"/>\t\n            <msdn-id>ff476516</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateRasterizerState([In] const D3D11_RASTERIZER_DESC* pRasterizerDesc,[Out, Fast] ID3D11RasterizerState** ppRasterizerState)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateRasterizerState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Device.CreateSamplerState(SharpDX.Direct3D11.SamplerStateDescription@,SharpDX.Direct3D11.SamplerState)\">\n            <summary>\t\n            <p>Create a sampler-state object that encapsulates sampling information for a texture.</p>\t\n            </summary>\t\n            <param name=\"samplerDescRef\"><dd>  <p>Pointer to a sampler state description (see <strong><see cref=\"T:SharpDX.Direct3D11.SamplerStateDescription\"/></strong>).</p> </dd></param>\t\n            <param name=\"samplerStateOut\"><dd>  <p>Address of a reference to the sampler state object created (see <strong><see cref=\"T:SharpDX.Direct3D11.SamplerState\"/></strong>).</p> </dd></param>\t\n            <returns><p>This method returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>4096 unique sampler state objects can be created on a device at a time.</p><p>If an application attempts to create a sampler-state interface with the same state as an existing interface, the same interface will be returned and the total number of unique sampler state objects will stay the same.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Device::CreateSamplerState']/*\"/>\t\n            <msdn-id>ff476518</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateSamplerState([In] const D3D11_SAMPLER_DESC* pSamplerDesc,[Out, Fast] ID3D11SamplerState** ppSamplerState)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateSamplerState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Device.CreateQuery(SharpDX.Direct3D11.QueryDescription,SharpDX.Direct3D11.Query)\">\n            <summary>\t\n            <p>This interface encapsulates methods for querying information from the GPU.</p>\t\n            </summary>\t\n            <param name=\"queryDescRef\"><dd>  <p>Pointer to a query description (see <strong><see cref=\"T:SharpDX.Direct3D11.QueryDescription\"/></strong>).</p> </dd></param>\t\n            <param name=\"queryOut\"><dd>  <p>Address of a reference to the query object created (see <strong><see cref=\"T:SharpDX.Direct3D11.Query\"/></strong>).</p> </dd></param>\t\n            <returns><p>This method returns E_OUTOFMEMORY if there is insufficient memory to create the query object.   See Direct3D 11 Return Codes for other possible return values.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Device::CreateQuery']/*\"/>\t\n            <msdn-id>ff476515</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateQuery([In] const D3D11_QUERY_DESC* pQueryDesc,[Out, Fast] ID3D11Query** ppQuery)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateQuery</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Device.CreatePredicate(SharpDX.Direct3D11.QueryDescription,SharpDX.Direct3D11.Predicate)\">\n            <summary>\t\n            <p>Creates a predicate.</p>\t\n            </summary>\t\n            <param name=\"predicateDescRef\"><dd>  <p>Pointer to a query description where the type of query must be a <see cref=\"F:SharpDX.Direct3D11.QueryType.StreamOutputOverflowPredicate\"/> or <see cref=\"F:SharpDX.Direct3D11.QueryType.OcclusionPredicate\"/> (see <strong><see cref=\"T:SharpDX.Direct3D11.QueryDescription\"/></strong>).</p> </dd></param>\t\n            <param name=\"predicateOut\"><dd>  <p>Address of a reference to a predicate (see <strong><see cref=\"T:SharpDX.Direct3D11.Predicate\"/></strong>).</p> </dd></param>\t\n            <returns><p>This method returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Device::CreatePredicate']/*\"/>\t\n            <msdn-id>ff476514</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreatePredicate([In] const D3D11_QUERY_DESC* pPredicateDesc,[Out, Fast] ID3D11Predicate** ppPredicate)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreatePredicate</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Device.CreateCounter(SharpDX.Direct3D11.CounterDescription,SharpDX.Direct3D11.Counter)\">\n            <summary>\t\n            <p>Create a counter object for measuring GPU performance.</p>\t\n            </summary>\t\n            <param name=\"counterDescRef\"><dd>  <p>Pointer to a counter description (see <strong><see cref=\"T:SharpDX.Direct3D11.CounterDescription\"/></strong>).</p> </dd></param>\t\n            <param name=\"counterOut\"><dd>  <p>Address of a reference to a counter (see <strong><see cref=\"T:SharpDX.Direct3D11.Counter\"/></strong>).</p> </dd></param>\t\n            <returns><p>If this function succeeds, it will return <see cref=\"F:SharpDX.Result.Ok\"/>. If it fails, possible return values are: S_FALSE, E_OUTOFMEMORY, <see cref=\"F:SharpDX.DXGI.ResultCode.Unsupported\"/>, <see cref=\"F:SharpDX.DXGI.ResultCode.Nonexclusive\"/>, or E_INVALIDARG.</p><p><see cref=\"F:SharpDX.DXGI.ResultCode.Unsupported\"/> is returned whenever the application requests to create a well-known counter, but the current device does not support it.</p><p><see cref=\"F:SharpDX.DXGI.ResultCode.Nonexclusive\"/> indicates that another device object is currently using the counters, so they cannot be used by this device at the moment.</p><p>E_INVALIDARG is returned whenever an out-of-range well-known or device-dependent counter is requested, or when the simulataneously active counters have been exhausted.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Device::CreateCounter']/*\"/>\t\n            <msdn-id>ff476504</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateCounter([In] const D3D11_COUNTER_DESC* pCounterDesc,[Out, Fast] ID3D11Counter** ppCounter)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateCounter</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Device.CreateDeferredContext(System.Int32,SharpDX.Direct3D11.DeviceContext)\">\n            <summary>\t\n            <p>Creates a deferred context for play back of command lists.</p>\t\n            </summary>\t\n            <param name=\"contextFlags\"><dd>  <p>Reserved for future use.  Pass 0.</p> </dd></param>\t\n            <param name=\"deferredContextOut\"><dd>  <p>Upon completion of the method, the passed reference to an <strong><see cref=\"T:SharpDX.Direct3D11.DeviceContext\"/></strong> interface reference is initialized.</p> </dd></param>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful; otherwise, returns one of the following:</p><ul> <li>Returns <strong><see cref=\"F:SharpDX.DXGI.ResultCode.DeviceRemoved\"/></strong> if the video card has been physically removed from the system, or a driver upgrade for the video card has occurred. If this error occurs, you should destroy and recreate the device.</li> <li>Returns <strong><see cref=\"F:SharpDX.DXGI.ResultCode.InvalidCall\"/></strong> if the <strong>CreateDeferredContext</strong> method cannot be called from the current context. For example, if the device was created with the <strong><see cref=\"F:SharpDX.Direct3D11.DeviceCreationFlags.SingleThreaded\"/></strong> value,  <strong>CreateDeferredContext</strong> returns <strong><see cref=\"F:SharpDX.DXGI.ResultCode.InvalidCall\"/></strong>.</li> <li>Returns <strong>E_INVALIDARG</strong> if the <em>ContextFlags</em> parameter is invalid.</li> <li>Returns <strong>E_OUTOFMEMORY</strong> if the application has exhausted available memory.</li> </ul></returns>\t\n            <remarks>\t\n            <p>A deferred context is a thread-safe context that you can use to record graphics commands on a thread other than the main rendering thread.  Using a deferred context, you can record graphics commands into a command list that is encapsulated by the <strong><see cref=\"T:SharpDX.Direct3D11.CommandList\"/></strong> interface.  After all scene items are recorded, you can then submit them to the main render thread for final rendering.  In this manner, you can perform rendering tasks concurrently across multiple threads and potentially improve performance in multi-core CPU scenarios.</p><p>You can create multiple deferred contexts.</p><p><strong>Note</strong>??If you use the <strong><see cref=\"F:SharpDX.Direct3D11.DeviceCreationFlags.SingleThreaded\"/></strong> value to create the device that is represented by <strong><see cref=\"T:SharpDX.Direct3D11.Device\"/></strong>, the <strong>CreateDeferredContext</strong> method will fail, and you will not be able to create a deferred context.</p><p>For more information about deferred contexts, see Immediate and Deferred Rendering.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Device::CreateDeferredContext']/*\"/>\t\n            <msdn-id>ff476505</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateDeferredContext([In] unsigned int ContextFlags,[Out, Fast] ID3D11DeviceContext** ppDeferredContext)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateDeferredContext</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Device.OpenSharedResource(System.IntPtr,System.Guid,System.IntPtr@)\">\n            <summary>\t\n            <p>Give a device access to a shared resource created on a different device.</p>\t\n            </summary>\t\n            <param name=\"hResource\"><dd>  <p>A resource handle. See remarks.</p> </dd></param>\t\n            <param name=\"returnedInterface\"><dd>  <p>The globally unique identifier (<see cref=\"T:System.Guid\"/>) for the resource interface. See remarks.</p> </dd></param>\t\n            <param name=\"resourceOut\"><dd>  <p>Address of a reference to the resource we are gaining access to.</p> </dd></param>\t\n            <returns><p>This method returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>The REFIID, or <see cref=\"T:System.Guid\"/>, of the interface to the resource can be obtained by using the __uuidof() macro. For example, __uuidof(<see cref=\"T:SharpDX.Direct3D11.Buffer\"/>) will get the <see cref=\"T:System.Guid\"/> of the interface to a buffer resource.</p><p>The unique handle of the resource is obtained differently depending on the type of device that originally created the resource.</p><p>To share a resource between two Direct3D 11 devices the resource must have been created with the  <strong><see cref=\"F:SharpDX.Direct3D11.ResourceOptionFlags.Shared\"/></strong> flag, if it was created using the <see cref=\"T:SharpDX.Direct3D11.Device\"/> interface.  If it was created using a DXGI device interface, then the resource is always shared.</p><p>The REFIID, or <see cref=\"T:System.Guid\"/>, of the interface to the resource can be obtained by using the __uuidof() macro.  For example, __uuidof(<see cref=\"T:SharpDX.Direct3D11.Buffer\"/>) will get the <see cref=\"T:System.Guid\"/> of the interface to a buffer resource.</p><p>When sharing a resource between two Direct3D 10/11 devices the unique handle of the resource can be obtained by querying the resource for the <strong><see cref=\"T:SharpDX.DXGI.Resource\"/></strong> interface and then calling <strong>GetSharedHandle</strong>.</p><pre><code> <see cref=\"T:SharpDX.DXGI.Resource\"/>* pOtherResource(<c>null</c>);\t\n            hr = pOtherDeviceResource-&gt;QueryInterface( __uuidof(<see cref=\"T:SharpDX.DXGI.Resource\"/>), (void**)&amp;pOtherResource );\t\n            HANDLE sharedHandle;\t\n            pOtherResource-&gt;GetSharedHandle(&amp;sharedHandle); </code></pre><p>The only resources that can be shared are 2D non-mipmapped textures.</p><p>To share a resource between a Direct3D 9 device and a Direct3D 11 device the texture must have been created using  the <em>pSharedHandle</em> argument of <strong>CreateTexture</strong>.   The shared Direct3D 9 handle is then passed to OpenSharedResource in the <em>hResource</em> argument.</p><p>The following code illustrates the method calls involved.</p><pre><code> sharedHandle = <c>null</c>; // must be set to <c>null</c> to create, can use a valid handle here to open in D3D9 \t\n            pDevice9-&gt;CreateTexture(..., pTex2D_9, &amp;sharedHandle); \t\n            ... \t\n            pDevice11-&gt;OpenSharedResource(sharedHandle, __uuidof(<see cref=\"T:SharpDX.Direct3D11.Resource\"/>), (void**)(&amp;tempResource11)); \t\n            tempResource11-&gt;QueryInterface(__uuidof(<see cref=\"T:SharpDX.Direct3D11.Texture2D\"/>), (void**)(&amp;pTex2D_11)); \t\n            tempResource11-&gt;Release(); \t\n            // now use pTex2D_11 with pDevice11    </code></pre><p>Textures being shared from D3D9 to D3D11 have the following restrictions.</p><ul> <li>Textures must be 2D</li> <li>Only 1 mip level is allowed</li> <li>Texture must have default usage</li> <li>Texture must be write only</li> <li>MSAA textures are not allowed</li> <li>Bind flags must have SHADER_RESOURCE and RENDER_TARGET set</li> <li>Only R10G10B10A2_UNORM, R16G16B16A16_FLOAT and R8G8B8A8_UNORM formats are allowed</li> </ul><p>If a shared texture is updated on one device <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.Flush\"/></strong> must be called on that device.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Device::OpenSharedResource']/*\"/>\t\n            <msdn-id>ff476531</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::OpenSharedResource([In] void* hResource,[In] const GUID&amp; ReturnedInterface,[Out, Optional] void** ppResource)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::OpenSharedResource</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Device.CheckFormatSupport(SharpDX.DXGI.Format)\">\n            <summary>\t\n            <p>Get the support of a given format on the installed video device.</p>\t\n            </summary>\t\n            <param name=\"format\"><dd>  <p>A <strong><see cref=\"T:SharpDX.DXGI.Format\"/></strong> enumeration that describes a format for which to check for support.</p> </dd></param>\t\n            <returns><dd>  <p>A bitfield of <strong><see cref=\"T:SharpDX.Direct3D11.FormatSupport\"/></strong> enumeration values describing how the specified format is supported on the installed device.  The values are ORed together.</p> </dd></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Device::CheckFormatSupport']/*\"/>\t\n            <msdn-id>ff476498</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CheckFormatSupport([In] DXGI_FORMAT Format,[Out] D3D11_FORMAT_SUPPORT* pFormatSupport)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CheckFormatSupport</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Device.CheckMultisampleQualityLevels(SharpDX.DXGI.Format,System.Int32)\">\n            <summary>\t\n            <p>Get the number of quality levels available during multisampling.</p>\t\n            </summary>\t\n            <param name=\"format\"><dd>  <p>The texture format. See <strong><see cref=\"T:SharpDX.DXGI.Format\"/></strong>.</p> </dd></param>\t\n            <param name=\"sampleCount\"><dd>  <p>The number of samples during multisampling.</p> </dd></param>\t\n            <returns><dd>  <p>Number of quality levels supported by the adapter. See remarks.</p> </dd></returns>\t\n            <remarks>\t\n            <p>When multisampling a texture, the number of quality levels available for an adapter is dependent on the texture format used and the number of  samples requested. The maximum number of quality levels is defined by <see cref=\"F:SharpDX.Direct3D11.Device.MultisampleCountMaximum\"/> in D3D11.h. If this method returns 0, the format  and sample count combination is not supported for the installed adapter.</p><p>Furthermore, the definition of a quality level is up to each hardware vendor to define, however no facility is provided by Direct3D to help discover  this information.</p><p>Note that FEATURE_LEVEL_10_1 devices are required to support 4x MSAA for all render targets except R32G32B32A32 and R32G32B32. FEATURE_LEVEL_11_0 devices are required to support 4x MSAA for all render target formats, and 8x MSAA for all render target formats  except R32G32B32A32 formats.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Device::CheckMultisampleQualityLevels']/*\"/>\t\n            <msdn-id>ff476499</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CheckMultisampleQualityLevels([In] DXGI_FORMAT Format,[In] unsigned int SampleCount,[Out] unsigned int* pNumQualityLevels)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CheckMultisampleQualityLevels</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Device.GetCounterCapabilities\">\n            <summary>\t\n            <p>Get a counter's information.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Device::CheckCounterInfo']/*\"/>\t\n            <msdn-id>ff476496</msdn-id>\t\n            <unmanaged>void ID3D11Device::CheckCounterInfo([Out] D3D11_COUNTER_INFO* pCounterInfo)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CheckCounterInfo</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Device.CheckCounter(SharpDX.Direct3D11.CounterDescription,SharpDX.Direct3D11.CounterType@,System.Int32@,System.IntPtr,System.IntPtr,System.IntPtr,System.IntPtr,System.IntPtr,System.IntPtr)\">\n            <summary>\t\n            <p>Get the type, name, units of measure, and a description of an existing counter.</p>\t\n            </summary>\t\n            <param name=\"descRef\"><dd>  <p>Pointer to a counter description (see <strong><see cref=\"T:SharpDX.Direct3D11.CounterDescription\"/></strong>). Specifies which counter information is to be retrieved about.</p> </dd></param>\t\n            <param name=\"typeRef\"><dd>  <p>Pointer to the data type of a counter (see <strong><see cref=\"T:SharpDX.Direct3D11.CounterType\"/></strong>). Specifies the data type of the counter being retrieved.</p> </dd></param>\t\n            <param name=\"activeCountersRef\"><dd>  <p>Pointer to the number of hardware counters that are needed for this counter type to be created. All instances of the same counter type use the same hardware counters.</p> </dd></param>\t\n            <param name=\"szName\"><dd>  <p>String to be filled with a brief name for the counter. May be <strong><c>null</c></strong> if the application is not interested in the name of the counter.</p> </dd></param>\t\n            <param name=\"nameLengthRef\"><dd>  <p>Length of the string returned to szName. Can be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"szUnits\"><dd>  <p>Name of the units a counter measures, provided the memory the reference points to has enough room to hold the string. Can be <strong><c>null</c></strong>. The returned string will always be in English.</p> </dd></param>\t\n            <param name=\"unitsLengthRef\"><dd>  <p>Length of the string returned to szUnits. Can be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"szDescription\"><dd>  <p>A description of the counter, provided the memory the reference points to has enough room to hold the string. Can be <strong><c>null</c></strong>. The returned string will always be in English.</p> </dd></param>\t\n            <param name=\"descriptionLengthRef\"><dd>  <p>Length of the string returned to szDescription. Can be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <returns><p>This method returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>Length parameters can be <strong><c>null</c></strong>, which indicates the application is not interested in the length nor the corresponding string value. When a length parameter is non-<strong><c>null</c></strong> and the corresponding string is <strong><c>null</c></strong>, the input value of the length parameter is ignored, and the length of the corresponding string (including terminating <strong><c>null</c></strong>) will be returned through the length parameter. When length and the corresponding parameter are both non-<strong><c>null</c></strong>, the input value of length is checked to ensure there is enough room, and then the length of the string (including terminating <strong><c>null</c></strong> character) is passed out through the length parameter.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Device::CheckCounter']/*\"/>\t\n            <msdn-id>ff476495</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CheckCounter([In] const D3D11_COUNTER_DESC* pDesc,[Out] D3D11_COUNTER_TYPE* pType,[Out] unsigned int* pActiveCounters,[Out, Buffer, Optional] char* szName,[InOut, Optional] unsigned int* pNameLength,[Out, Buffer, Optional] char* szUnits,[InOut, Optional] unsigned int* pUnitsLength,[Out, Buffer, Optional] char* szDescription,[InOut, Optional] unsigned int* pDescriptionLength)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CheckCounter</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Device.CheckFeatureSupport(SharpDX.Direct3D11.Feature,System.IntPtr,System.Int32)\">\n            <summary>\t\n            <p>Gets information about the features that are supported by the current graphics driver.</p>\t\n            </summary>\t\n            <param name=\"feature\"><dd>  <p>A member of the <strong><see cref=\"T:SharpDX.Direct3D11.Feature\"/></strong> enumerated type that describes which feature to query for support.</p> </dd></param>\t\n            <param name=\"featureSupportDataRef\"><dd>  <p>Upon completion of the method, the passed structure is filled with data that describes the feature support.</p> </dd></param>\t\n            <param name=\"featureSupportDataSize\"><dd>  <p>The size of the structure passed to the <em>pFeatureSupportData</em> parameter.</p> </dd></param>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful; otherwise, returns E_INVALIDARG if an unsupported data type is passed to the <em>pFeatureSupportData</em> parameter  or a size mismatch is detected for the <em>FeatureSupportDataSize</em> parameter.</p></returns>\t\n            <remarks>\t\n            <p>To query for multi-threading support, pass the <strong><see cref=\"F:SharpDX.Direct3D11.Feature.Threading\"/></strong> value to the <em>Feature</em> parameter, pass  the <strong><see cref=\"T:SharpDX.Direct3D11.FeatureDataThreading\"/></strong> structure to the  <em>pFeatureSupportData</em> parameter, and pass the size of  the <strong><see cref=\"T:SharpDX.Direct3D11.FeatureDataThreading\"/></strong> structure to the <em>FeatureSupportDataSize</em> parameter.</p><p>Calling CheckFeatureSupport with <em>Feature</em> set to <see cref=\"F:SharpDX.Direct3D11.Feature.FormatSupport\"/> causes the method to return the same information that would be returned  by <strong><see cref=\"M:SharpDX.Direct3D11.Device.CheckFormatSupport(SharpDX.DXGI.Format)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Device::CheckFeatureSupport']/*\"/>\t\n            <msdn-id>ff476497</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CheckFeatureSupport([In] D3D11_FEATURE Feature,[Out, Buffer] void* pFeatureSupportData,[In] unsigned int FeatureSupportDataSize)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CheckFeatureSupport</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Device.GetPrivateData(System.Guid,System.Int32@,System.IntPtr)\">\n            <summary>\t\n            <p>Get application-defined data from a device.</p>\t\n            </summary>\t\n            <param name=\"guid\"><dd>  <p>Guid associated with the data.</p> </dd></param>\t\n            <param name=\"dataSizeRef\"><dd>  <p>A reference to a variable that on input contains the size, in bytes, of the buffer that <em>pData</em> points to, and on output contains the size, in bytes, of the amount of data that <strong>GetPrivateData</strong> retrieved.</p> </dd></param>\t\n            <param name=\"dataRef\"><dd>  <p>A reference to a buffer that <strong>GetPrivateData</strong> fills with data from the device if <em>pDataSize</em> points to a value that specifies a buffer large enough to hold the data.</p> </dd></param>\t\n            <returns><p>This method returns one of the codes described in the topic Direct3D 11 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Device::GetPrivateData']/*\"/>\t\n            <msdn-id>ff476530</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::GetPrivateData([In] const GUID&amp; guid,[InOut] unsigned int* pDataSize,[Out, Buffer, Optional] void* pData)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::GetPrivateData</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Device.SetPrivateData(System.Guid,System.Int32,System.IntPtr)\">\n            <summary>\t\n            <p>Set data to a device and associate that data with a guid.</p>\t\n            </summary>\t\n            <param name=\"guid\"><dd>  <p>Guid associated with the data.</p> </dd></param>\t\n            <param name=\"dataSize\"><dd>  <p>Size of the data.</p> </dd></param>\t\n            <param name=\"dataRef\"><dd>  <p>Pointer to the data to be stored with this device. If pData is <strong><c>null</c></strong>, DataSize must also be 0, and any data previously associated with the guid will be destroyed.</p> </dd></param>\t\n            <returns><p>This method returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>The data stored in the device with this method can be retrieved with <strong><see cref=\"M:SharpDX.Direct3D11.Device.GetPrivateData(System.Guid,System.Int32@,System.IntPtr)\"/></strong>.</p><p>The data and guid set with this method will typically be application-defined.</p><p>If an application uses this method to change the device type using GUID_DeviceType, results are undefined. However, GUID_DeviceType can be used to retrieve the device type using <strong><see cref=\"M:SharpDX.Direct3D11.Device.GetPrivateData(System.Guid,System.Int32@,System.IntPtr)\"/></strong>.</p><p>The debug layer reports memory leaks by outputting a list of object interface references along with their friendly names. The default friendly name is \"&lt;unnamed&gt;\". You can set the friendly name so that you can determine if the corresponding object interface reference caused the leak. To set the friendly name, use the <strong>SetPrivateData</strong> method and the <strong><see cref=\"F:SharpDX.Direct3D.CommonGuid.DebugObjectName\"/></strong> <see cref=\"T:System.Guid\"/> that is in D3Dcommon.h. For example, to give pContext a friendly name of <em>My name</em>, use the following code:</p><pre><code> static const char c_szName[] = \"My name\";\t\n            hr = pContext-&gt;SetPrivateData( <see cref=\"F:SharpDX.Direct3D.CommonGuid.DebugObjectName\"/>, sizeof( c_szName ) - 1, c_szName );\t\n            </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Device::SetPrivateData']/*\"/>\t\n            <msdn-id>ff476533</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::SetPrivateData([In] const GUID&amp; guid,[In] unsigned int DataSize,[In, Buffer, Optional] const void* pData)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::SetPrivateData</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Device.SetPrivateDataInterface(System.Guid,SharpDX.ComObject)\">\n            <summary>\t\n            <p>Associate an <see cref=\"T:SharpDX.ComObject\"/>-derived interface with this device child and associate that interface with an application-defined guid.</p>\t\n            </summary>\t\n            <param name=\"guid\"><dd>  <p>Guid associated with the interface.</p> </dd></param>\t\n            <param name=\"dataRef\"><dd>  <p>Pointer to an <see cref=\"T:SharpDX.ComObject\"/>-derived interface to be associated with the device child.</p> </dd></param>\t\n            <returns><p>This method returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Device::SetPrivateDataInterface']/*\"/>\t\n            <msdn-id>ff476534</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::SetPrivateDataInterface([In] const GUID&amp; guid,[In, Optional] const IUnknown* pData)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::SetPrivateDataInterface</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Device.GetFeatureLevel\">\n            <summary>\t\n            <p>Gets the feature level of the hardware device.</p>\t\n            </summary>\t\n            <returns><p>A member of the <strong><see cref=\"T:SharpDX.Direct3D.FeatureLevel\"/></strong> enumerated type that describes the feature level of the hardware device.</p></returns>\t\n            <remarks>\t\n            <p> Feature levels determine the capabilities of your device.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Device::GetFeatureLevel']/*\"/>\t\n            <msdn-id>ff476528</msdn-id>\t\n            <unmanaged>D3D_FEATURE_LEVEL ID3D11Device::GetFeatureLevel()</unmanaged>\t\n            <unmanaged-short>ID3D11Device::GetFeatureLevel</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Device.GetCreationFlags\">\n            <summary>\t\n            <p>Get the flags used during the call to create the device with <strong><see cref=\"M:SharpDX.Direct3D11.D3D11.CreateDevice(SharpDX.DXGI.Adapter,SharpDX.Direct3D.DriverType,System.IntPtr,SharpDX.Direct3D11.DeviceCreationFlags,SharpDX.Direct3D.FeatureLevel[],System.Int32,System.Int32,SharpDX.Direct3D11.Device,SharpDX.Direct3D.FeatureLevel@,SharpDX.Direct3D11.DeviceContext@)\"/></strong>.</p>\t\n            </summary>\t\n            <returns><p>A bitfield containing the flags used to create the device. See <strong><see cref=\"T:SharpDX.Direct3D11.DeviceCreationFlags\"/></strong>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Device::GetCreationFlags']/*\"/>\t\n            <msdn-id>ff476525</msdn-id>\t\n            <unmanaged>unsigned int ID3D11Device::GetCreationFlags()</unmanaged>\t\n            <unmanaged-short>ID3D11Device::GetCreationFlags</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Device.GetDeviceRemovedReason\">\n            <summary>\t\n            <p>Get the reason why the device was removed.</p>\t\n            </summary>\t\n            <returns><p>Possible return values include:  </p><ul> <li><see cref=\"F:SharpDX.DXGI.ResultCode.DeviceHung\"/></li> <li><see cref=\"F:SharpDX.DXGI.ResultCode.DeviceRemoved\"/></li> <li><see cref=\"F:SharpDX.DXGI.ResultCode.DeviceReset\"/></li> <li><see cref=\"F:SharpDX.DXGI.ResultCode.DriverInternalError\"/></li> <li><see cref=\"F:SharpDX.DXGI.ResultCode.InvalidCall\"/></li> <li><see cref=\"F:SharpDX.Result.Ok\"/></li> </ul><p>For more detail on these return codes, see DXGI_ERROR.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Device::GetDeviceRemovedReason']/*\"/>\t\n            <msdn-id>ff476526</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::GetDeviceRemovedReason()</unmanaged>\t\n            <unmanaged-short>ID3D11Device::GetDeviceRemovedReason</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Device.GetImmediateContext(SharpDX.Direct3D11.DeviceContext@)\">\n            <summary>\t\n            <p>Gets an immediate context which can record command lists.</p>\t\n            </summary>\t\n            <param name=\"immediateContextOut\"><dd>  <p>Upon completion of the method, the passed reference to an <strong><see cref=\"T:SharpDX.Direct3D11.DeviceContext\"/></strong> interface reference is initialized.</p> </dd></param>\t\n            <remarks>\t\n            <p>The <strong>GetImmediateContext</strong> method returns an <strong><see cref=\"T:SharpDX.Direct3D11.DeviceContext\"/></strong> object that represents an immediate context which is used to perform rendering that you want immediately submitted to a device. For most applications, an immediate context is the primary object that is used to draw your scene.</p><p>The <strong>GetImmediateContext</strong> method increments the reference count of the immediate context by one. Therefore, you must call <strong>Release</strong> on the returned interface reference when you are done with it to avoid a memory leak. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Device::GetImmediateContext']/*\"/>\t\n            <msdn-id>ff476529</msdn-id>\t\n            <unmanaged>void ID3D11Device::GetImmediateContext([Out] ID3D11DeviceContext** ppImmediateContext)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::GetImmediateContext</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Device.SetExceptionMode(System.Int32)\">\n            <summary>\t\n            <p>Get the exception-mode flags.</p>\t\n            </summary>\t\n            <param name=\"raiseFlags\"><dd>  <p>A value that contains one or more exception flags; each flag specifies a condition which will cause an exception to be raised. The flags are listed in <strong>D3D11_RAISE_FLAG</strong>. A default value of 0 means there are no flags.</p> </dd></param>\t\n            <returns><p>This method returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>Set an exception-mode flag to elevate an error condition to a non-continuable exception. </p><p>Whenever an error occurs, a Direct3D device enters the DEVICEREMOVED state and if the appropriate exception flag has been set, an exception is raised. A raised exception is designed to terminate an application. Before termination, the last chance an application has to persist data is by using an UnhandledExceptionFilter (see Structured Exception Handling). In general, UnhandledExceptionFilters are leveraged to try to persist data when an application is crashing (to disk, for example). Any code that executes during an UnhandledExceptionFilter is not guaranteed to reliably execute (due to possible process corruption). Any data that the UnhandledExceptionFilter manages to persist, before the UnhandledExceptionFilter crashes again, should be treated as suspect, and therefore inspected by a new, non-corrupted process to see if it is usable.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Device::SetExceptionMode']/*\"/>\t\n            <msdn-id>ff476532</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::SetExceptionMode([In] unsigned int RaiseFlags)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::SetExceptionMode</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Device.GetExceptionMode\">\n            <summary>\t\n            <p>Get the exception-mode flags.</p>\t\n            </summary>\t\n            <returns><p>A value that contains one or more exception flags; each flag specifies a condition which will cause an exception to be raised. The flags are listed in <strong>D3D11_RAISE_FLAG</strong>. A default value of 0 means there are no flags.</p></returns>\t\n            <remarks>\t\n            <p>An exception-mode flag is used to elevate an error condition to a non-continuable exception. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Device::GetExceptionMode']/*\"/>\t\n            <msdn-id>ff476527</msdn-id>\t\n            <unmanaged>unsigned int ID3D11Device::GetExceptionMode()</unmanaged>\t\n            <unmanaged-short>ID3D11Device::GetExceptionMode</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.Device.IsReferenceDevice\">\n            <summary>\n            Gets a value indicating whether the current device is using the reference rasterizer.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.Device.DebugName\">\n            <summary>\n            Gets or sets the debug-name for this object.\n            </summary>\n            <value>\n            The debug name.\n            </value>\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.Device.FeatureLevel\">\n            <summary>\t\n            <p>Gets the feature level of the hardware device.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p> Feature levels determine the capabilities of your device.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Device::GetFeatureLevel']/*\"/>\t\n            <msdn-id>ff476528</msdn-id>\t\n            <unmanaged>GetFeatureLevel</unmanaged>\t\n            <unmanaged-short>GetFeatureLevel</unmanaged-short>\t\n            <unmanaged>D3D_FEATURE_LEVEL ID3D11Device::GetFeatureLevel()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.Device.CreationFlags\">\n            <summary>\t\n            <p>Get the flags used during the call to create the device with <strong><see cref=\"M:SharpDX.Direct3D11.D3D11.CreateDevice(SharpDX.DXGI.Adapter,SharpDX.Direct3D.DriverType,System.IntPtr,SharpDX.Direct3D11.DeviceCreationFlags,SharpDX.Direct3D.FeatureLevel[],System.Int32,System.Int32,SharpDX.Direct3D11.Device,SharpDX.Direct3D.FeatureLevel@,SharpDX.Direct3D11.DeviceContext@)\"/></strong>.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Device::GetCreationFlags']/*\"/>\t\n            <msdn-id>ff476525</msdn-id>\t\n            <unmanaged>GetCreationFlags</unmanaged>\t\n            <unmanaged-short>GetCreationFlags</unmanaged-short>\t\n            <unmanaged>unsigned int ID3D11Device::GetCreationFlags()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.Device.DeviceRemovedReason\">\n            <summary>\t\n            <p>Get the reason why the device was removed.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Device::GetDeviceRemovedReason']/*\"/>\t\n            <msdn-id>ff476526</msdn-id>\t\n            <unmanaged>GetDeviceRemovedReason</unmanaged>\t\n            <unmanaged-short>GetDeviceRemovedReason</unmanaged-short>\t\n            <unmanaged>HRESULT ID3D11Device::GetDeviceRemovedReason()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.Device.ImmediateContext\">\n            <summary>\t\n            <p>Gets an immediate context which can record command lists.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The <strong>GetImmediateContext</strong> method returns an <strong><see cref=\"T:SharpDX.Direct3D11.DeviceContext\"/></strong> object that represents an immediate context which is used to perform rendering that you want immediately submitted to a device. For most applications, an immediate context is the primary object that is used to draw your scene.</p><p>The <strong>GetImmediateContext</strong> method increments the reference count of the immediate context by one. Therefore, you must call <strong>Release</strong> on the returned interface reference when you are done with it to avoid a memory leak. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Device::GetImmediateContext']/*\"/>\t\n            <msdn-id>ff476529</msdn-id>\t\n            <unmanaged>GetImmediateContext</unmanaged>\t\n            <unmanaged-short>GetImmediateContext</unmanaged-short>\t\n            <unmanaged>void ID3D11Device::GetImmediateContext([Out] ID3D11DeviceContext** ppImmediateContext)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.Device.ExceptionMode\">\n            <summary>\t\n            <p>Get or sets the exception-mode flags.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>An exception-mode flag is used to elevate an error condition to a non-continuable exception. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Device::GetExceptionMode']/*\"/>\t\n            <msdn-id>ff476527</msdn-id>\t\n            <unmanaged>GetExceptionMode / SetExceptionMode</unmanaged>\t\n            <unmanaged-short>GetExceptionMode</unmanaged-short>\t\n            <unmanaged>unsigned int ID3D11Device::GetExceptionMode()</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.StreamOutputStage\">\n            <summary>\t\n            <p>The <strong><see cref=\"T:SharpDX.Direct3D11.DeviceContext\"/></strong> interface represents a device context which generates rendering commands.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext']/*\"/>\t\n            <msdn-id>ff476385</msdn-id>\t\n            <unmanaged>ID3D11DeviceContext</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.StreamOutputStage.SetTargets(SharpDX.Direct3D11.StreamOutputBufferBinding[])\">\n            <summary>\t\n            Set the target output {{buffers}} for the {{StreamOutput}} stage, which enables/disables the pipeline to stream-out data.\t\n            </summary>\t\n            <remarks>\t\n            Call ID3D10Device::SOSetTargets (before any draw calls) to stream data out; call SOSetTargets with NULL to stop streaming data out. For an example, see Exercise 01 from the GDC 2007 workshop, which sets the stream output rendertargets before calling draw methods in the RenderInstanceToStream function. An offset of -1 will cause the stream output buffer to be appended, continuing after the last location written to the buffer in a previous stream output pass. Calling this method using a buffer that is currently bound for writing will effectively bind NULL instead because a buffer cannot be bound as both an input and an output at the same time. The {{DeviceDebug Layer}} will generate a warning whenever a resource is prevented from being bound simultaneously as an input and an output, but this will not prevent invalid data from being used by the runtime. The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device. \t\n            </remarks>\t\n            <param name=\"bufferBindings\">an array of output buffers (see <see cref=\"T:SharpDX.Direct3D11.StreamOutputBufferBinding\"/>) to bind to the device. The buffers must have been created with the <see cref=\"F:SharpDX.Direct3D11.BindFlags.StreamOutput\"/> flag. </param>\n            <unmanaged>void SOSetTargets([In] int NumBuffers,[In, Buffer, Optional] const ID3D10Buffer** ppSOTargets,[In, Buffer, Optional] const int* pOffsets)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.StreamOutputStage.GetTargets(System.Int32)\">\n            <summary>\t\n            Get the target output {{buffers}} for the {{StreamOutput}} stage of the pipeline.\t\n            </summary>\t\n            <remarks>\t\n            Any returned interfaces will have their reference count incremented by one. Applications should call {{IUnknown::Release}} on the returned interfaces when they are no longer needed to avoid memory leaks. \t\n            </remarks>\t\n            <param name=\"numBuffers\">Number of buffers to get. A maximum of four output buffers can be retrieved. </param>\n            <returns>an array of output buffers (see <see cref=\"T:SharpDX.Direct3D11.Buffer\"/>) to bind to the device.</returns>\n            <unmanaged>void SOGetTargets([In] int NumBuffers,[Out, Buffer, Optional] ID3D10Buffer** ppSOTargets,[Out, Buffer, Optional] int* pOffsets)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.StreamOutputStage.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D11.StreamOutputStage\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.StreamOutputStage.op_Explicit(System.IntPtr)~SharpDX.Direct3D11.StreamOutputStage\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D11.StreamOutputStage\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.StreamOutputStage.SetTargets(System.Int32,SharpDX.Direct3D11.Buffer[],System.Int32[])\">\n            <summary>\t\n            <p>Set the target output buffers for the stream-output stage of the pipeline.</p>\t\n            </summary>\t\n            <param name=\"numBuffers\"><dd>  <p>The number of buffer to bind to the device. A maximum of four output buffers can be set. If less than four are defined by the call, the remaining buffer slots are set to <strong><c>null</c></strong>. See Remarks.</p> </dd></param>\t\n            <param name=\"sOTargetsOut\"><dd>  <p>The array of output buffers (see <strong><see cref=\"T:SharpDX.Direct3D11.Buffer\"/></strong>) to bind to the device. The buffers must have been created with the <strong><see cref=\"F:SharpDX.Direct3D11.BindFlags.StreamOutput\"/></strong> flag.</p> </dd></param>\t\n            <param name=\"offsetsRef\"><dd>  <p>Array of offsets to the output buffers from <em>ppSOTargets</em>, one offset for each buffer. The offset values must be in bytes.</p> </dd></param>\t\n            <remarks>\t\n            <p>An offset of -1 will cause the stream output buffer to be appended, continuing after the last location written to the buffer in a previous stream output pass.</p><p>Calling this method using a buffer that is currently bound for writing will effectively bind <strong><c>null</c></strong> instead because a buffer cannot be bound as both an input and an output at the same time.</p><p>The debug layer will generate a warning whenever a resource is prevented from being bound simultaneously as an input and an output, but this will not prevent invalid data from being used by the runtime.</p><p> The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::SOSetTargets']/*\"/>\t\n            <msdn-id>ff476484</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::SOSetTargets([In] unsigned int NumBuffers,[In, Buffer, Optional] const ID3D11Buffer** ppSOTargets,[In, Buffer, Optional] const unsigned int* pOffsets)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::SOSetTargets</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.StreamOutputStage.SetTargets(System.Int32,SharpDX.ComArray{SharpDX.Direct3D11.Buffer},System.Int32[])\">\n            <summary>\t\n            <p>Set the target output buffers for the stream-output stage of the pipeline.</p>\t\n            </summary>\t\n            <param name=\"numBuffers\"><dd>  <p>The number of buffer to bind to the device. A maximum of four output buffers can be set. If less than four are defined by the call, the remaining buffer slots are set to <strong><c>null</c></strong>. See Remarks.</p> </dd></param>\t\n            <param name=\"sOTargetsOut\"><dd>  <p>The array of output buffers (see <strong><see cref=\"T:SharpDX.Direct3D11.Buffer\"/></strong>) to bind to the device. The buffers must have been created with the <strong><see cref=\"F:SharpDX.Direct3D11.BindFlags.StreamOutput\"/></strong> flag.</p> </dd></param>\t\n            <param name=\"offsetsRef\"><dd>  <p>Array of offsets to the output buffers from <em>ppSOTargets</em>, one offset for each buffer. The offset values must be in bytes.</p> </dd></param>\t\n            <remarks>\t\n            <p>An offset of -1 will cause the stream output buffer to be appended, continuing after the last location written to the buffer in a previous stream output pass.</p><p>Calling this method using a buffer that is currently bound for writing will effectively bind <strong><c>null</c></strong> instead because a buffer cannot be bound as both an input and an output at the same time.</p><p>The debug layer will generate a warning whenever a resource is prevented from being bound simultaneously as an input and an output, but this will not prevent invalid data from being used by the runtime.</p><p> The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::SOSetTargets']/*\"/>\t\n            <msdn-id>ff476484</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::SOSetTargets([In] unsigned int NumBuffers,[In, Buffer, Optional] const ID3D11Buffer** ppSOTargets,[In, Buffer, Optional] const unsigned int* pOffsets)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::SOSetTargets</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.StreamOutputStage.GetTargets(System.Int32,SharpDX.Direct3D11.Buffer[])\">\n            <summary>\t\n            <p>Get the target output buffers for the stream-output stage of the pipeline.</p>\t\n            </summary>\t\n            <param name=\"numBuffers\"><dd>  <p>Number of buffers to get.</p> </dd></param>\t\n            <param name=\"sOTargetsOut\"><dd>  <p>An array of output buffers (see <strong><see cref=\"T:SharpDX.Direct3D11.Buffer\"/></strong>) to be retrieved from the device.</p> </dd></param>\t\n            <remarks>\t\n            <p>A maximum of four output buffers can be retrieved.</p><p>The offsets to the output buffers pointed to in the returned <em>ppSOTargets</em> array may be assumed to be -1 (append), as defined for use in <strong><see cref=\"M:SharpDX.Direct3D11.StreamOutputStage.SetTargets(SharpDX.Direct3D11.StreamOutputBufferBinding[])\"/></strong>.</p><p>Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::SOGetTargets']/*\"/>\t\n            <msdn-id>ff476483</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::SOGetTargets([In] unsigned int NumBuffers,[Out, Buffer] ID3D11Buffer** ppSOTargets)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::SOGetTargets</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.CommonShaderStage\">\n            <summary>\n            Common Shader class. Provides a common set of methods for a Shader Stage.\n            TODO: check if usage of abstract is not introducing an unacceptable overhead...\n            </summary>\n            <typeparam name=\"T\">Type of the shader</typeparam>\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.Direct3D11.CommonShaderStage']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.CommonShaderStage.SamplerRegisterComponents\">\n            <summary>Constant SamplerRegisterComponents.</summary>\n            <unmanaged>D3D11_COMMONSHADER_SAMPLER_REGISTER_COMPONENTS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.CommonShaderStage.SamplerRegisterCount\">\n            <summary>Constant SamplerRegisterCount.</summary>\n            <unmanaged>D3D11_COMMONSHADER_SAMPLER_REGISTER_COUNT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.CommonShaderStage.ConstantBufferComponentBitCount\">\n            <summary>Constant ConstantBufferComponentBitCount.</summary>\n            <unmanaged>D3D11_COMMONSHADER_CONSTANT_BUFFER_COMPONENT_BIT_COUNT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.CommonShaderStage.InputResourceRegisterReadsPerInst\">\n            <summary>Constant InputResourceRegisterReadsPerInst.</summary>\n            <unmanaged>D3D11_COMMONSHADER_INPUT_RESOURCE_REGISTER_READS_PER_INST</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.CommonShaderStage.TextureCoordRangeReductionMinimum\">\n            <summary>Constant TextureCoordRangeReductionMinimum.</summary>\n            <unmanaged>D3D11_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MIN</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.CommonShaderStage.InputResourceSlotCount\">\n            <summary>Constant InputResourceSlotCount.</summary>\n            <unmanaged>D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.CommonShaderStage.TempRegisterComponents\">\n            <summary>Constant TempRegisterComponents.</summary>\n            <unmanaged>D3D11_COMMONSHADER_TEMP_REGISTER_COMPONENTS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.CommonShaderStage.ImmediateValueComponentBitCount\">\n            <summary>Constant ImmediateValueComponentBitCount.</summary>\n            <unmanaged>D3D11_COMMONSHADER_IMMEDIATE_VALUE_COMPONENT_BIT_COUNT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.CommonShaderStage.ImmediateConstantBufferRegisterCount\">\n            <summary>Constant ImmediateConstantBufferRegisterCount.</summary>\n            <unmanaged>D3D11_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COUNT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.CommonShaderStage.TextureElOffsetMaximumPositive\">\n            <summary>Constant TextureElOffsetMaximumPositive.</summary>\n            <unmanaged>D3D11_COMMONSHADER_TEXEL_OFFSET_MAX_POSITIVE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.CommonShaderStage.ConstantBufferComponents\">\n            <summary>Constant ConstantBufferComponents.</summary>\n            <unmanaged>D3D11_COMMONSHADER_CONSTANT_BUFFER_COMPONENTS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.CommonShaderStage.TempRegisterReadsPerInst\">\n            <summary>Constant TempRegisterReadsPerInst.</summary>\n            <unmanaged>D3D11_COMMONSHADER_TEMP_REGISTER_READS_PER_INST</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.CommonShaderStage.SubRoutineNestingLimit\">\n            <summary>Constant SubRoutineNestingLimit.</summary>\n            <unmanaged>D3D11_COMMONSHADER_SUBROUTINE_NESTING_LIMIT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.CommonShaderStage.ImmediateConstantBufferRegisterReadPorts\">\n            <summary>Constant ImmediateConstantBufferRegisterReadPorts.</summary>\n            <unmanaged>D3D11_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READ_PORTS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.CommonShaderStage.ConstantBufferApiSlotCount\">\n            <summary>Constant ConstantBufferApiSlotCount.</summary>\n            <unmanaged>D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.CommonShaderStage.InputResourceRegisterReadPorts\">\n            <summary>Constant InputResourceRegisterReadPorts.</summary>\n            <unmanaged>D3D11_COMMONSHADER_INPUT_RESOURCE_REGISTER_READ_PORTS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.CommonShaderStage.ImmediateConstantBufferRegisterReadsPerInst\">\n            <summary>Constant ImmediateConstantBufferRegisterReadsPerInst.</summary>\n            <unmanaged>D3D11_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READS_PER_INST</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.CommonShaderStage.InputResourceRegisterCount\">\n            <summary>Constant InputResourceRegisterCount.</summary>\n            <unmanaged>D3D11_COMMONSHADER_INPUT_RESOURCE_REGISTER_COUNT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.CommonShaderStage.ConstantBufferRegisterReadPorts\">\n            <summary>Constant ConstantBufferRegisterReadPorts.</summary>\n            <unmanaged>D3D11_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READ_PORTS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.CommonShaderStage.FlowcontrolNestingLimit\">\n            <summary>Constant FlowcontrolNestingLimit.</summary>\n            <unmanaged>D3D11_COMMONSHADER_FLOWCONTROL_NESTING_LIMIT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.CommonShaderStage.SamplerRegisterReadsPerInst\">\n            <summary>Constant SamplerRegisterReadsPerInst.</summary>\n            <unmanaged>D3D11_COMMONSHADER_SAMPLER_REGISTER_READS_PER_INST</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.CommonShaderStage.TempRegisterComponentBitCount\">\n            <summary>Constant TempRegisterComponentBitCount.</summary>\n            <unmanaged>D3D11_COMMONSHADER_TEMP_REGISTER_COMPONENT_BIT_COUNT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.CommonShaderStage.SamplerRegisterReadPorts\">\n            <summary>Constant SamplerRegisterReadPorts.</summary>\n            <unmanaged>D3D11_COMMONSHADER_SAMPLER_REGISTER_READ_PORTS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.CommonShaderStage.TextureElOffsetMaximumNegative\">\n            <summary>Constant TextureElOffsetMaximumNegative.</summary>\n            <unmanaged>D3D11_COMMONSHADER_TEXEL_OFFSET_MAX_NEGATIVE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.CommonShaderStage.TextureCoordRangeReductionMaximum\">\n            <summary>Constant TextureCoordRangeReductionMaximum.</summary>\n            <unmanaged>D3D11_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MAX</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.CommonShaderStage.TempRegisterCount\">\n            <summary>Constant TempRegisterCount.</summary>\n            <unmanaged>D3D11_COMMONSHADER_TEMP_REGISTER_COUNT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.CommonShaderStage.ConstantBufferRegisterCount\">\n            <summary>Constant ConstantBufferRegisterCount.</summary>\n            <unmanaged>D3D11_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COUNT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.CommonShaderStage.ImmediateConstantBufferRegisterComponents\">\n            <summary>Constant ImmediateConstantBufferRegisterComponents.</summary>\n            <unmanaged>D3D11_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COMPONENTS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.CommonShaderStage.InputResourceRegisterComponents\">\n            <summary>Constant InputResourceRegisterComponents.</summary>\n            <unmanaged>D3D11_COMMONSHADER_INPUT_RESOURCE_REGISTER_COMPONENTS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.CommonShaderStage.TempRegisterReadPorts\">\n            <summary>Constant TempRegisterReadPorts.</summary>\n            <unmanaged>D3D11_COMMONSHADER_TEMP_REGISTER_READ_PORTS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.CommonShaderStage.ConstantBufferRegisterComponents\">\n            <summary>Constant ConstantBufferRegisterComponents.</summary>\n            <unmanaged>D3D11_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COMPONENTS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.CommonShaderStage.ConstantBufferHwSlotCount\">\n            <summary>Constant ConstantBufferHwSlotCount.</summary>\n            <unmanaged>D3D11_COMMONSHADER_CONSTANT_BUFFER_HW_SLOT_COUNT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.CommonShaderStage.SamplerSlotCount\">\n            <summary>Constant SamplerSlotCount.</summary>\n            <unmanaged>D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.CommonShaderStage.ConstantBufferRegisterReadsPerInst\">\n            <summary>Constant ConstantBufferRegisterReadsPerInst.</summary>\n            <unmanaged>D3D11_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READS_PER_INST</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.CommonShaderStage.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D11.CommonShaderStage`1\"/> class.\n            </summary>\n            <param name=\"pointer\">The pointer.</param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.CommonShaderStage.GetConstantBuffers(System.Int32,System.Int32)\">\n            <summary>\n              Gets the constant buffers used by the shader stage.\n            </summary>\n            <param name = \"startSlot\">Index into the device's zero-based array from which to begin retrieving constant buffers.</param>\n            <param name = \"count\">Number of buffers to retrieve.</param>\n            <returns>An array of constant buffers.</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.CommonShaderStage.GetSamplers(System.Int32,System.Int32)\">\n            <summary>\n              Gets the sampler states used by the shader stage.\n            </summary>\n            <param name = \"startSlot\">Index into the device's zero-based array from which to begin retrieving samplers.</param>\n            <param name = \"count\">Number of samplers to retrieve.</param>\n            <returns>An array of sampler states.</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.CommonShaderStage.GetShaderResources(System.Int32,System.Int32)\">\n            <summary>\n              Gets the shader resources used by the shader stage.\n            </summary>\n            <param name = \"startSlot\">Index into the device's zero-based array from which to begin retrieving shader resources.</param>\n            <param name = \"count\">Number of resources to retrieve.</param>\n            <returns>An array of shader resources.</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.CommonShaderStage.SetConstantBuffer(System.Int32,SharpDX.Direct3D11.Buffer)\">\n            <summary>\n              Sets a single constant buffer to be used by the shader stage.\n            </summary>\n            <param name = \"slot\">Index into the device's zero-based array to which to set the constant buffer.</param>\n            <param name = \"constantBuffer\">constant buffer to set</param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.CommonShaderStage.SetConstantBuffers(System.Int32,SharpDX.Direct3D11.Buffer[])\">\n            <summary>\n              Sets an array of constant buffers to be used by the shader stage.\n            </summary>\n            <param name = \"slot\">Index into the device's zero-based array to which to set the array of constant buffers.</param>\n            <param name = \"constantBuffers\">An array of constant buffer to set</param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.CommonShaderStage.SetConstantBuffers(System.Int32,SharpDX.ComArray{SharpDX.Direct3D11.Buffer})\">\n            <summary>\n              Sets an array of constant buffers to be used by the shader stage.\n            </summary>\n            <param name = \"slot\">Index into the device's zero-based array to which to set the array of constant buffers.</param>\n            <param name = \"constantBuffers\">An array of constant buffer to set</param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.CommonShaderStage.SetSampler(System.Int32,SharpDX.Direct3D11.SamplerState)\">\n            <summary>\n              Sets a single sampler to be used by the shader stage.\n            </summary>\n            <param name = \"slot\">Index into the device's zero-based array to which to set the sampler.</param>\n            <param name = \"sampler\">sampler state to set</param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.CommonShaderStage.SetSamplers(System.Int32,SharpDX.Direct3D11.SamplerState[])\">\n            <summary>\n              Sets an array of samplers to be used by the shader stage.\n            </summary>\n            <param name = \"slot\">Index into the device's zero-based array to which to set the array of sampler states.</param>\n            <param name = \"samplers\">An array of sampler state to set</param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.CommonShaderStage.SetSamplers(System.Int32,SharpDX.ComArray{SharpDX.Direct3D11.SamplerState})\">\n            <summary>\n              Sets an array of samplesr to be used by the shader stage.\n            </summary>\n            <param name = \"slot\">Index into the device's zero-based array to which  to set the array of sampler states.</param>\n            <param name = \"samplers\">An array of sampler state to set</param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.CommonShaderStage.SetShaderResource(System.Int32,SharpDX.Direct3D11.ShaderResourceView)\">\n            <summary>\n              Sets a single shader resource to be used by the shader stage.\n            </summary>\n            <param name = \"slot\">Index into the device's zero-based array to which to set the resource.</param>\n            <param name = \"resourceView\">Resource view to attach</param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.CommonShaderStage.SetShaderResources(System.Int32,SharpDX.Direct3D11.ShaderResourceView[])\">\n            <summary>\n              Bind an array of shader resources to the shader stage.\n            </summary>\n            <remarks>\n              If an overlapping resource view is already bound to an output slot, such as a rendertarget, then this API will fill the destination shader resource slot with NULL.For information about creating shader-resource views, see <see cref=\"M:SharpDX.Direct3D11.Device.CreateShaderResourceView(SharpDX.Direct3D11.Resource,System.Nullable{SharpDX.Direct3D11.ShaderResourceViewDescription},SharpDX.Direct3D11.ShaderResourceView)\"/>. The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.\n            </remarks>\n            <param name=\"startSlot\">Index into the device's zero-based array to begin setting shader resources to (ranges from 0 to D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - 1).</param>\n            <param name=\"shaderResourceViews\">Array of {{shader resource view}} interfaces to set to the device.</param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.CommonShaderStage.SetShaderResources(System.Int32,SharpDX.ComArray{SharpDX.Direct3D11.ShaderResourceView})\">\n            <summary>\n              Bind an array of shader resources to the shader stage.\n            </summary>\n            <remarks>\n              If an overlapping resource view is already bound to an output slot, such as a rendertarget, then this API will fill the destination shader resource slot with NULL.For information about creating shader-resource views, see <see cref=\"M:SharpDX.Direct3D11.Device.CreateShaderResourceView(SharpDX.Direct3D11.Resource,System.Nullable{SharpDX.Direct3D11.ShaderResourceViewDescription},SharpDX.Direct3D11.ShaderResourceView)\"/>. The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.\n            </remarks>\n            <param name=\"startSlot\">Index into the device's zero-based array to begin setting shader resources to (ranges from 0 to D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - 1).</param>\n            <param name=\"shaderResourceViews\">Array of {{shader resource view}} interfaces to set to the device.</param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.CommonShaderStage.GetShaderResources(System.Int32,System.Int32,SharpDX.Direct3D11.ShaderResourceView[])\">\n            <summary>\n              Get the shader resources.\n            </summary>\n            <remarks>\n              Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.\n            </remarks>\n            <param name = \"startSlot\">Index into the device's zero-based array to begin getting shader resources from (ranges from 0 to D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - 1).</param>\n            <param name = \"numViews\">The number of resources to get from the device. Up to a maximum of 128 slots are available for shader resources (ranges from 0 to D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - StartSlot).</param>\n            <param name = \"shaderResourceViewsRef\">Array of {{shader resource view}} interfaces to be returned by the device.</param>\n            <unmanaged>void PSGetShaderResources([In] UINT StartSlot,[In] UINT NumViews,[Out, Buffer] ID3D11ShaderResourceView** ppShaderResourceViews)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.CommonShaderStage.GetSamplers(System.Int32,System.Int32,SharpDX.Direct3D11.SamplerState[])\">\n            <summary>\n              Get an array of sampler states from the shader pipeline stage.\n            </summary>\n            <remarks>\n              Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.\n            </remarks>\n            <param name=\"startSlot\">Index into a zero-based array to begin getting samplers from (ranges from 0 to D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT - 1).</param>\n            <param name=\"numSamplers\">Number of samplers to get from a device context. Each pipeline stage has a total of 16 sampler slots available (ranges from 0 to D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT - StartSlot).</param>\n            <param name=\"samplersRef\">Arry of sampler-state interface pointers (see <see cref=\"T:SharpDX.Direct3D11.SamplerState\"/>) to be returned by the device.</param>\n            <unmanaged>void PSGetSamplers([In] UINT StartSlot,[In] UINT NumSamplers,[Out, Buffer] ID3D11SamplerState** ppSamplers)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.CommonShaderStage.GetConstantBuffers(System.Int32,System.Int32,SharpDX.Direct3D11.Buffer[])\">\n            <summary>\n              Get the constant buffers used by the shader pipeline stage.\n            </summary>\n            <remarks>\n              Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.\n            </remarks>\n            <param name=\"startSlot\">Index into the device's zero-based array to begin retrieving constant buffers from (ranges from 0 to D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - 1).</param>\n            <param name=\"numBuffers\">Number of buffers to retrieve (ranges from 0 to D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - StartSlot).</param>\n            <param name=\"constantBuffersRef\">Array of constant buffer interface pointers (see <see cref=\"T:SharpDX.Direct3D11.Buffer\"/>) to be returned by the method.</param>\n            <unmanaged>void PSGetConstantBuffers([In] UINT StartSlot,[In] UINT NumBuffers,[Out, Buffer] ID3D11Buffer** ppConstantBuffers)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.CommonShaderStage.SetShaderResources(System.Int32,System.Int32,SharpDX.Direct3D11.ShaderResourceView[])\">\n            <summary>\n              Bind an array of shader resources to the shader stage.\n            </summary>\n            <remarks>\n              If an overlapping resource view is already bound to an output slot, such as a rendertarget, then this API will fill the destination shader resource slot with NULL.For information about creating shader-resource views, see <see cref=\"M:SharpDX.Direct3D11.Device.CreateShaderResourceView(SharpDX.Direct3D11.Resource,System.Nullable{SharpDX.Direct3D11.ShaderResourceViewDescription},SharpDX.Direct3D11.ShaderResourceView)\"/>. The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.\n            </remarks>\n            <param name=\"startSlot\">Index into the device's zero-based array to begin setting shader resources to (ranges from 0 to D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - 1).</param>\n            <param name=\"numViews\">Number of shader resources to set. Up to a maximum of 128 slots are available for shader resources (ranges from 0 to D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - StartSlot).</param>\n            <param name=\"shaderResourceViews\">Array of {{shader resource view}} interfaces to set to the device.</param>\n            <unmanaged>void PSSetShaderResources([In] UINT StartSlot,[In] UINT NumViews,[In, Buffer] const ID3D11ShaderResourceView** ppShaderResourceViews)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.CommonShaderStage.SetShaderResources(System.Int32,System.Int32,SharpDX.ComArray{SharpDX.Direct3D11.ShaderResourceView})\">\n            <summary>\n              Bind an array of shader resources to the shader stage.\n            </summary>\n            <remarks>\n              If an overlapping resource view is already bound to an output slot, such as a rendertarget, then this API will fill the destination shader resource slot with NULL.For information about creating shader-resource views, see <see cref=\"M:SharpDX.Direct3D11.Device.CreateShaderResourceView(SharpDX.Direct3D11.Resource,System.Nullable{SharpDX.Direct3D11.ShaderResourceViewDescription},SharpDX.Direct3D11.ShaderResourceView)\"/>. The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.\n            </remarks>\n            <param name=\"startSlot\">Index into the device's zero-based array to begin setting shader resources to (ranges from 0 to D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - 1).</param>\n            <param name=\"numViews\">Number of shader resources to set. Up to a maximum of 128 slots are available for shader resources (ranges from 0 to D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - StartSlot).</param>\n            <param name=\"shaderResourceViewsRef\">Array of {{shader resource view}} interfaces to set to the device.</param>\n            <unmanaged>void PSSetShaderResources([In] UINT StartSlot,[In] UINT NumViews,[In, Buffer] const ID3D11ShaderResourceView** ppShaderResourceViews)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.CommonShaderStage.SetShaderResources(System.Int32,System.Int32,System.IntPtr)\">\n            <summary>\n              Bind an array of shader resources to the shader stage.\n            </summary>\n            <remarks>\n              If an overlapping resource view is already bound to an output slot, such as a rendertarget, then this API will fill the destination shader resource slot with NULL.For information about creating shader-resource views, see <see cref=\"M:SharpDX.Direct3D11.Device.CreateShaderResourceView(SharpDX.Direct3D11.Resource,System.Nullable{SharpDX.Direct3D11.ShaderResourceViewDescription},SharpDX.Direct3D11.ShaderResourceView)\"/>. The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.\n            </remarks>\n            <param name=\"startSlot\">Index into the device's zero-based array to begin setting shader resources to (ranges from 0 to D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - 1).</param>\n            <param name=\"numViews\">Number of shader resources to set. Up to a maximum of 128 slots are available for shader resources (ranges from 0 to D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - StartSlot).</param>\n            <param name=\"shaderResourceViewsRef\">Array of {{shader resource view}} interfaces to set to the device.</param>\n            <unmanaged>void PSSetShaderResources([In] UINT StartSlot,[In] UINT NumViews,[In, Buffer] const ID3D11ShaderResourceView** ppShaderResourceViews)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.CommonShaderStage.SetSamplers(System.Int32,System.Int32,SharpDX.Direct3D11.SamplerState[])\">\n            <summary>\n              Set an array of sampler states to the shader pipeline stage.\n            </summary>\n            <remarks>\n              Any sampler may be set to NULL; this invokes the default state, which is defined to be the following.StateDefault ValueFilterD3D11_FILTER_MIN_MAG_MIP_LINEARAddressUD3D11_TEXTURE_ADDRESS_CLAMPAddressVD3D11_TEXTURE_ADDRESS_CLAMPAddressWD3D11_TEXTURE_ADDRESS_CLAMPMipLODBias0MaxAnisotropy1ComparisonFuncD3D11_COMPARISON_NEVERBorderColor[0]1.0fBorderColor[1]1.0fBorderColor[2]1.0fBorderColor[3]1.0fMinLOD-FLT_MAXMaxLODFLT_MAX  The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.\n            </remarks>\n            <param name=\"startSlot\">Index into the device's zero-based array to begin setting samplers to (ranges from 0 to D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT - 1).</param>\n            <param name=\"numSamplers\">Number of samplers in the array. Each pipeline stage has a total of 16 sampler slots available (ranges from 0 to D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT - StartSlot).</param>\n            <param name=\"samplers\">Pointer to an array of sampler-state interfaces (see <see cref=\"T:SharpDX.Direct3D11.SamplerState\"/>). See Remarks.</param>\n            <unmanaged>void PSSetSamplers([In] UINT StartSlot,[In] UINT NumSamplers,[In, Buffer] const ID3D11SamplerState** ppSamplers)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.CommonShaderStage.SetSamplers(System.Int32,System.Int32,SharpDX.ComArray{SharpDX.Direct3D11.SamplerState})\">\n            <summary>\n              Set an array of sampler states to the shader pipeline stage.\n            </summary>\n            <remarks>\n              Any sampler may be set to NULL; this invokes the default state, which is defined to be the following.StateDefault ValueFilterD3D11_FILTER_MIN_MAG_MIP_LINEARAddressUD3D11_TEXTURE_ADDRESS_CLAMPAddressVD3D11_TEXTURE_ADDRESS_CLAMPAddressWD3D11_TEXTURE_ADDRESS_CLAMPMipLODBias0MaxAnisotropy1ComparisonFuncD3D11_COMPARISON_NEVERBorderColor[0]1.0fBorderColor[1]1.0fBorderColor[2]1.0fBorderColor[3]1.0fMinLOD-FLT_MAXMaxLODFLT_MAX  The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.\n            </remarks>\n            <param name=\"startSlot\">Index into the device's zero-based array to begin setting samplers to (ranges from 0 to D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT - 1).</param>\n            <param name=\"numSamplers\">Number of samplers in the array. Each pipeline stage has a total of 16 sampler slots available (ranges from 0 to D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT - StartSlot).</param>\n            <param name=\"samplers\">Pointer to an array of sampler-state interfaces (see <see cref=\"T:SharpDX.Direct3D11.SamplerState\"/>). See Remarks.</param>\n            <unmanaged>void PSSetSamplers([In] UINT StartSlot,[In] UINT NumSamplers,[In, Buffer] const ID3D11SamplerState** ppSamplers)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.CommonShaderStage.SetConstantBuffers(System.Int32,System.Int32,SharpDX.Direct3D11.Buffer[])\">\n            <summary>\n              Set the constant buffers used by the shader pipeline stage.\n            </summary>\n            <remarks>\n              The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.\n            </remarks>\n            <param name=\"startSlot\">Index into the device's zero-based array to begin setting constant buffers to (ranges from 0 to D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - 1).</param>\n            <param name=\"numBuffers\">Number of buffers to set (ranges from 0 to D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - StartSlot).</param>\n            <param name=\"constantBuffers\">Array of constant buffers (see <see cref=\"T:SharpDX.Direct3D11.Buffer\"/>) being given to the device.</param>\n            <unmanaged>void PSSetConstantBuffers([In] UINT StartSlot,[In] UINT NumBuffers,[In, Buffer] const ID3D11Buffer** ppConstantBuffers)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.CommonShaderStage.SetConstantBuffers(System.Int32,System.Int32,SharpDX.ComArray{SharpDX.Direct3D11.Buffer})\">\n            <summary>\n              Set the constant buffers used by the shader pipeline stage.\n            </summary>\n            <remarks>\n              The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.\n            </remarks>\n            <param name=\"startSlot\">Index into the device's zero-based array to begin setting constant buffers to (ranges from 0 to D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - 1).</param>\n            <param name=\"numBuffers\">Number of buffers to set (ranges from 0 to D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - StartSlot).</param>\n            <param name=\"constantBuffers\">Array of constant buffers (see <see cref=\"T:SharpDX.Direct3D11.Buffer\"/>) being given to the device.</param>\n            <unmanaged>void PSSetConstantBuffers([In] UINT StartSlot,[In] UINT NumBuffers,[In, Buffer] const ID3D11Buffer** ppConstantBuffers)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.CommonShaderStage`1\">\n            <summary>\n            Common Shader class. Provides a common set of methods for a Shader Stage.\n            TODO: check if usage of abstract is not introducing an unacceptable overhead...\n            </summary>\n            <typeparam name = \"T\">Type of the shader</typeparam>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.CommonShaderStage`1.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D11.CommonShaderStage`1\"/> class.\n            </summary>\n            <param name=\"pointer\">The pointer.</param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.CommonShaderStage`1.Get\">\n            <summary>\n              Gets the shader currently assigned to the device.\n            </summary>\n            <returns>The shader (null if no shader is assigned).</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.CommonShaderStage`1.Get(SharpDX.Direct3D11.ClassInstance[])\">\n            <summary>\n              Gets the shader currently assigned to the device.\n            </summary>\n            <param name = \"classInstances\">An array that will be used to contain any class instances currently active.</param>\n            <returns>The shader (null if no shader is assigned).</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.CommonShaderStage`1.Set(`0)\">\n            <summary>\n              Assigns a compute shader to the device.\n            </summary>\n            <param name = \"shader\">The shader to assign to the device. Assign null to disable the compute shader.</param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.CommonShaderStage`1.Set(`0,SharpDX.Direct3D11.ClassInstance[])\">\n            <summary>\n              Assigns a compute shader to the device.\n            </summary>\n            <param name = \"shader\">The shader to assign to the device. Assign <c>null</c> to disable the compute shader.</param>\n            <param name = \"classInstances\">An array of class-instance interfaces. Each interface used by a shader must have a corresponding class instance or the shader will get disabled.</param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.CommonShaderStage`1.Set(`0,SharpDX.ComArray{SharpDX.Direct3D11.ClassInstance})\">\n            <summary>\n              Assigns a compute shader to the device.\n            </summary>\n            <param name = \"shader\">The shader to assign to the device. Assign <c>null</c> to disable the compute shader.</param>\n            <param name = \"classInstances\">An array of class-instance interfaces. Each interface used by a shader must have a corresponding class instance or the shader will get disabled.</param>\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.ComputeShaderStage\">\n            <summary>\t\n            <p>The <strong><see cref=\"T:SharpDX.Direct3D11.DeviceContext\"/></strong> interface represents a device context which generates rendering commands.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext']/*\"/>\t\n            <msdn-id>ff476385</msdn-id>\t\n            <unmanaged>ID3D11DeviceContext</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ComputeShaderStage.UnorderedAccessViewSlotCount\">\n            <summary>Constant UnorderedAccessViewSlotCount.</summary>\n            <unmanaged>D3D11_PS_CS_UAV_REGISTER_COUNT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ComputeShaderStage.DispatchMaximumThreadGroupsPerDimension\">\n            <summary>Constant DispatchMaximumThreadGroupsPerDimension.</summary>\n            <unmanaged>D3D11_CS_DISPATCH_MAX_THREAD_GROUPS_PER_DIMENSION</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ComputeShaderStage.ThreadLocalTempRegisterPool\">\n            <summary>Constant ThreadLocalTempRegisterPool.</summary>\n            <unmanaged>D3D11_CS_THREAD_LOCAL_TEMP_REGISTER_POOL</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ComputeShaderStage.ThreadGroupSharedMemoryRegisterCount\">\n            <summary>Constant ThreadGroupSharedMemoryRegisterCount.</summary>\n            <unmanaged>D3D11_CS_TGSM_REGISTER_COUNT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ComputeShaderStage.ThreadGroupMaximumY\">\n            <summary>Constant ThreadGroupMaximumY.</summary>\n            <unmanaged>D3D11_CS_THREAD_GROUP_MAX_Y</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ComputeShaderStage.ThreadGroupSharedMemoryResourceRegisterReadPorts\">\n            <summary>Constant ThreadGroupSharedMemoryResourceRegisterReadPorts.</summary>\n            <unmanaged>D3D11_CS_TGSM_RESOURCE_REGISTER_READ_PORTS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ComputeShaderStage.ThreadGroupMinimumY\">\n            <summary>Constant ThreadGroupMinimumY.</summary>\n            <unmanaged>D3D11_CS_THREAD_GROUP_MIN_Y</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ComputeShaderStage.ThreadGroupSharedMemoryRegisterReadsPerInst\">\n            <summary>Constant ThreadGroupSharedMemoryRegisterReadsPerInst.</summary>\n            <unmanaged>D3D11_CS_TGSM_REGISTER_READS_PER_INST</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ComputeShaderStage.ThreadGroupMinimumX\">\n            <summary>Constant ThreadGroupMinimumX.</summary>\n            <unmanaged>D3D11_CS_THREAD_GROUP_MIN_X</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ComputeShaderStage.ThreadGroupSharedMemoryResourceRegisterComponents\">\n            <summary>Constant ThreadGroupSharedMemoryResourceRegisterComponents.</summary>\n            <unmanaged>D3D11_CS_TGSM_RESOURCE_REGISTER_COMPONENTS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ComputeShaderStage.ThreadGroupMaximumX\">\n            <summary>Constant ThreadGroupMaximumX.</summary>\n            <unmanaged>D3D11_CS_THREAD_GROUP_MAX_X</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ComputeShaderStage.ThreadGroupMaximumThreadsPerGroup\">\n            <summary>Constant ThreadGroupMaximumThreadsPerGroup.</summary>\n            <unmanaged>D3D11_CS_THREAD_GROUP_MAX_THREADS_PER_GROUP</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ComputeShaderStage.ThreadGroupMinimumZ\">\n            <summary>Constant ThreadGroupMinimumZ.</summary>\n            <unmanaged>D3D11_CS_THREAD_GROUP_MIN_Z</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ComputeShaderStage.ThreadGroupMaximumZ\">\n            <summary>Constant ThreadGroupMaximumZ.</summary>\n            <unmanaged>D3D11_CS_THREAD_GROUP_MAX_Z</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.ComputeShaderStage.GetUnorderedAccessViews(System.Int32,System.Int32)\">\n            <summary>\t\n            Gets an array of views for an unordered resource.\t\n            </summary>\t\n            <remarks>\t\n            Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks. \t\n            </remarks>\t\n            <param name=\"startSlot\">Index of the first element in the zero-based array to return (ranges from 0 to D3D11_PS_CS_UAV_REGISTER_COUNT - 1). </param>\n            <param name=\"count\">Number of views to get (ranges from 0 to D3D11_PS_CS_UAV_REGISTER_COUNT - StartSlot). </param>\n            <unmanaged>void CSGetUnorderedAccessViews([In] int StartSlot,[In] int NumUAVs,[Out, Buffer] ID3D11UnorderedAccessView** ppUnorderedAccessViews)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.ComputeShaderStage.SetUnorderedAccessView(System.Int32,SharpDX.Direct3D11.UnorderedAccessView)\">\n            <summary>\t\n            Sets an array of views for an unordered resource.\t\n            </summary>\t\n            <remarks>\t\n            </remarks>\t\n            <param name=\"startSlot\">Index of the first element in the zero-based array to begin setting. </param>\n            <param name=\"unorderedAccessView\">A reference to an <see cref=\"T:SharpDX.Direct3D11.UnorderedAccessView\"/> references to be set by the method. </param>\n            <unmanaged>void CSSetUnorderedAccessViews([In] int StartSlot,[In] int NumUAVs,[In, Buffer] const ID3D11UnorderedAccessView** ppUnorderedAccessViews,[In, Buffer] const int* pUAVInitialCounts)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.ComputeShaderStage.SetUnorderedAccessView(System.Int32,SharpDX.Direct3D11.UnorderedAccessView,System.Int32)\">\n            <summary>\t\n            Sets an array of views for an unordered resource.\t\n            </summary>\t\n            <remarks>\t\n            </remarks>\t\n            <param name=\"startSlot\">Index of the first element in the zero-based array to begin setting. </param>\n            <param name=\"unorderedAccessView\">A reference to an <see cref=\"T:SharpDX.Direct3D11.UnorderedAccessView\"/> references to be set by the method. </param>\n            <param name=\"uavInitialCount\">An Append/Consume buffer offsets. A value of -1 indicates the current offset should be kept.   Any other values set the hidden counter for that Appendable/Consumeable UAV. uAVInitialCount is only relevant for UAVs which have the <see cref=\"T:SharpDX.Direct3D11.UnorderedAccessViewBufferFlags\"/> flag,  otherwise the argument is ignored. </param>\n            <unmanaged>void CSSetUnorderedAccessViews([In] int StartSlot,[In] int NumUAVs,[In, Buffer] const ID3D11UnorderedAccessView** ppUnorderedAccessViews,[In, Buffer] const int* pUAVInitialCounts)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.ComputeShaderStage.SetUnorderedAccessViews(System.Int32,SharpDX.Direct3D11.UnorderedAccessView[])\">\n            <summary>\t\n            Sets an array of views for an unordered resource.\t\n            </summary>\t\n            <remarks>\t\n            </remarks>\t\n            <param name=\"startSlot\">Index of the first element in the zero-based array to begin setting. </param>\n            <param name=\"unorderedAccessViews\">A reference to an array of <see cref=\"T:SharpDX.Direct3D11.UnorderedAccessView\"/> references to be set by the method. </param>\n            <unmanaged>void CSSetUnorderedAccessViews([In] int StartSlot,[In] int NumUAVs,[In, Buffer] const ID3D11UnorderedAccessView** ppUnorderedAccessViews,[In, Buffer] const int* pUAVInitialCounts)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.ComputeShaderStage.SetUnorderedAccessViews(System.Int32,SharpDX.Direct3D11.UnorderedAccessView[],System.Int32[])\">\n            <summary>\t\n            Sets an array of views for an unordered resource.\t\n            </summary>\t\n            <remarks>\t\n            </remarks>\t\n            <param name=\"startSlot\">Index of the first element in the zero-based array to begin setting. </param>\n            <param name=\"unorderedAccessViews\">A reference to an array of <see cref=\"T:SharpDX.Direct3D11.UnorderedAccessView\"/> references to be set by the method. </param>\n            <param name=\"uavInitialCounts\">An array of Append/Consume buffer offsets. A value of -1 indicates the current offset should be kept.   Any other values set the hidden counter for that Appendable/Consumeable UAV.  pUAVInitialCounts is only relevant for UAVs which have the <see cref=\"T:SharpDX.Direct3D11.UnorderedAccessViewBufferFlags\"/> flag,  otherwise the argument is ignored. </param>\n            <unmanaged>void CSSetUnorderedAccessViews([In] int StartSlot,[In] int NumUAVs,[In, Buffer] const ID3D11UnorderedAccessView** ppUnorderedAccessViews,[In, Buffer] const int* pUAVInitialCounts)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.ComputeShaderStage.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D11.ComputeShaderStage\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.ComputeShaderStage.op_Explicit(System.IntPtr)~SharpDX.Direct3D11.ComputeShaderStage\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D11.ComputeShaderStage\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.ComputeShaderStage.SetShaderResources(System.Int32,System.Int32,System.IntPtr)\">\n            <summary>\t\n            <p>Bind an array of shader resources to the compute-shader stage.</p>\t\n            </summary>\t\n            <param name=\"startSlot\"><dd>  <p>Index into the device's zero-based array to begin setting shader resources to (ranges from 0 to <see cref=\"F:SharpDX.Direct3D11.CommonShaderStage.InputResourceSlotCount\"/> - 1).</p> </dd></param>\t\n            <param name=\"numViews\"><dd>  <p>Number of shader resources to set. Up to a maximum of 128 slots are available for shader resources(ranges from 0 to <see cref=\"F:SharpDX.Direct3D11.CommonShaderStage.InputResourceSlotCount\"/> - StartSlot).</p> </dd></param>\t\n            <param name=\"shaderResourceViewsOut\"><dd>  <p>Array of <strong>shader resource view</strong> interfaces to set to the device.</p> </dd></param>\t\n            <remarks>\t\n            <p>If an overlapping resource view is already bound to an output slot, such as a render target, then the method will fill the destination shader resource slot with <strong><c>null</c></strong>.</p><p>For information about creating shader-resource views, see <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateShaderResourceView(SharpDX.Direct3D11.Resource,System.Nullable{SharpDX.Direct3D11.ShaderResourceViewDescription},SharpDX.Direct3D11.ShaderResourceView)\"/></strong>.</p><p> The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.\t\n            </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::CSSetShaderResources']/*\"/>\t\n            <msdn-id>ff476403</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::CSSetShaderResources([In] unsigned int StartSlot,[In] unsigned int NumViews,[In, Buffer] const void** ppShaderResourceViews)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::CSSetShaderResources</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.ComputeShaderStage.SetUnorderedAccessViews(System.Int32,System.Int32,System.IntPtr,System.Int32[])\">\n            <summary>\t\n            <p>Sets an array of views for an unordered resource.</p>\t\n            </summary>\t\n            <param name=\"startSlot\"><dd>  <p>Index of the first element in the zero-based array to begin setting  (ranges from 0 to D3D11_1_UAV_SLOT_COUNT - 1). D3D11_1_UAV_SLOT_COUNT is defined as 64.</p> </dd></param>\t\n            <param name=\"numUAVs\"><dd>  <p>Number of views to set (ranges from 0 to D3D11_1_UAV_SLOT_COUNT - <em>StartSlot</em>).</p> </dd></param>\t\n            <param name=\"unorderedAccessViewsOut\"><dd>  <p>A reference to an array of <strong><see cref=\"T:SharpDX.Direct3D11.UnorderedAccessView\"/></strong> references to be set by the method.</p> </dd></param>\t\n            <param name=\"uAVInitialCountsRef\"><dd>  <p>An array of append and consume buffer offsets. A value of -1 indicates to keep the current offset. Any other values set the hidden counter  for that appendable and consumable UAV. <em>pUAVInitialCounts</em> is only relevant for UAVs that were created with either  <strong><see cref=\"F:SharpDX.Direct3D11.UnorderedAccessViewBufferFlags.Append\"/></strong> or <strong><see cref=\"F:SharpDX.Direct3D11.UnorderedAccessViewBufferFlags.Counter\"/></strong> specified  when the UAV was created; otherwise, the argument is ignored.</p> </dd></param>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::CSSetUnorderedAccessViews']/*\"/>\t\n            <msdn-id>ff476404</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::CSSetUnorderedAccessViews([In] unsigned int StartSlot,[In] unsigned int NumUAVs,[In, Buffer] const void** ppUnorderedAccessViews,[In, Buffer] const unsigned int* pUAVInitialCounts)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::CSSetUnorderedAccessViews</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.ComputeShaderStage.SetShader(SharpDX.Direct3D11.ComputeShader,SharpDX.Direct3D11.ClassInstance[],System.Int32)\">\n            <summary>\t\n            <p>Set a compute shader to the device.</p>\t\n            </summary>\t\n            <param name=\"computeShaderRef\"><dd>  <p>Pointer to a compute shader (see <strong><see cref=\"T:SharpDX.Direct3D11.ComputeShader\"/></strong>). Passing in <strong><c>null</c></strong> disables the shader for this pipeline stage.</p> </dd></param>\t\n            <param name=\"classInstancesOut\"><dd>  <p>A reference to an array of class-instance interfaces (see <strong><see cref=\"T:SharpDX.Direct3D11.ClassInstance\"/></strong>). Each interface used by a shader must have a corresponding class instance or the shader will get disabled. Set ppClassInstances to <strong><c>null</c></strong> if the shader does not use any interfaces.</p> </dd></param>\t\n            <param name=\"numClassInstances\"><dd>  <p>The number of class-instance interfaces in the array.</p> </dd></param>\t\n            <remarks>\t\n            <p> The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. </p><p>The maximum number of instances a shader can have is 256.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::CSSetShader']/*\"/>\t\n            <msdn-id>ff476402</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::CSSetShader([In, Optional] ID3D11ComputeShader* pComputeShader,[In, Buffer, Optional] const ID3D11ClassInstance** ppClassInstances,[In] unsigned int NumClassInstances)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::CSSetShader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.ComputeShaderStage.SetShader(SharpDX.Direct3D11.ComputeShader,SharpDX.ComArray{SharpDX.Direct3D11.ClassInstance},System.Int32)\">\n            <summary>\t\n            <p>Set a compute shader to the device.</p>\t\n            </summary>\t\n            <param name=\"computeShaderRef\"><dd>  <p>Pointer to a compute shader (see <strong><see cref=\"T:SharpDX.Direct3D11.ComputeShader\"/></strong>). Passing in <strong><c>null</c></strong> disables the shader for this pipeline stage.</p> </dd></param>\t\n            <param name=\"classInstancesOut\"><dd>  <p>A reference to an array of class-instance interfaces (see <strong><see cref=\"T:SharpDX.Direct3D11.ClassInstance\"/></strong>). Each interface used by a shader must have a corresponding class instance or the shader will get disabled. Set ppClassInstances to <strong><c>null</c></strong> if the shader does not use any interfaces.</p> </dd></param>\t\n            <param name=\"numClassInstances\"><dd>  <p>The number of class-instance interfaces in the array.</p> </dd></param>\t\n            <remarks>\t\n            <p> The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. </p><p>The maximum number of instances a shader can have is 256.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::CSSetShader']/*\"/>\t\n            <msdn-id>ff476402</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::CSSetShader([In, Optional] ID3D11ComputeShader* pComputeShader,[In, Buffer, Optional] const ID3D11ClassInstance** ppClassInstances,[In] unsigned int NumClassInstances)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::CSSetShader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.ComputeShaderStage.SetSamplers(System.Int32,System.Int32,System.IntPtr)\">\n            <summary>\t\n            <p>Set an array of sampler states to the compute-shader stage.</p>\t\n            </summary>\t\n            <param name=\"startSlot\"><dd>  <p>Index into the device's zero-based array to begin setting samplers to (ranges from 0 to <see cref=\"F:SharpDX.Direct3D11.CommonShaderStage.SamplerSlotCount\"/> - 1).</p> </dd></param>\t\n            <param name=\"numSamplers\"><dd>  <p>Number of samplers in the array. Each pipeline stage has a total of 16 sampler slots available (ranges from 0 to <see cref=\"F:SharpDX.Direct3D11.CommonShaderStage.SamplerSlotCount\"/> - StartSlot).</p> </dd></param>\t\n            <param name=\"samplersOut\"><dd>  <p>Pointer to an array of sampler-state interfaces (see <strong><see cref=\"T:SharpDX.Direct3D11.SamplerState\"/></strong>). See Remarks.</p> </dd></param>\t\n            <remarks>\t\n            <p>Any sampler may be set to <strong><c>null</c></strong>; this invokes the default state, which is defined to be the following.</p><pre><code> //Default sampler state:\t\n            <see cref=\"T:SharpDX.Direct3D11.SamplerStateDescription\"/> SamplerDesc;\t\n            SamplerDesc.Filter = <see cref=\"F:SharpDX.Direct3D11.Filter.MinMagMipLinear\"/>;\t\n            SamplerDesc.AddressU = <see cref=\"F:SharpDX.Direct3D11.TextureAddressMode.Clamp\"/>;\t\n            SamplerDesc.AddressV = <see cref=\"F:SharpDX.Direct3D11.TextureAddressMode.Clamp\"/>;\t\n            SamplerDesc.AddressW = <see cref=\"F:SharpDX.Direct3D11.TextureAddressMode.Clamp\"/>;\t\n            SamplerDesc.MipLODBias = 0;\t\n            SamplerDesc.MaxAnisotropy = 1;\t\n            SamplerDesc.ComparisonFunc = <see cref=\"F:SharpDX.Direct3D11.Comparison.Never\"/>;\t\n            SamplerDesc.BorderColor[0] = 1.0f;\t\n            SamplerDesc.BorderColor[1] = 1.0f;\t\n            SamplerDesc.BorderColor[2] = 1.0f;\t\n            SamplerDesc.BorderColor[3] = 1.0f;\t\n            SamplerDesc.MinLOD = -FLT_MAX;\t\n            SamplerDesc.MaxLOD = FLT_MAX; </code></pre><p> The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::CSSetSamplers']/*\"/>\t\n            <msdn-id>ff476401</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::CSSetSamplers([In] unsigned int StartSlot,[In] unsigned int NumSamplers,[In, Buffer] const void** ppSamplers)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::CSSetSamplers</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.ComputeShaderStage.SetConstantBuffers(System.Int32,System.Int32,System.IntPtr)\">\n            <summary>\t\n            <p>Sets the constant buffers used by the compute-shader stage.</p>\t\n            </summary>\t\n            <param name=\"startSlot\"><dd>  <p>Index into the zero-based array to begin setting constant buffers to (ranges from 0 to <strong><see cref=\"F:SharpDX.Direct3D11.CommonShaderStage.ConstantBufferApiSlotCount\"/></strong> - 1).</p> </dd></param>\t\n            <param name=\"numBuffers\"><dd>  <p>Number of buffers to set (ranges from 0 to <strong><see cref=\"F:SharpDX.Direct3D11.CommonShaderStage.ConstantBufferApiSlotCount\"/></strong> - <em>StartSlot</em>).</p> </dd></param>\t\n            <param name=\"constantBuffersOut\"><dd>  <p>Array of constant buffers (see <strong><see cref=\"T:SharpDX.Direct3D11.Buffer\"/></strong>) being given to the device.</p> </dd></param>\t\n            <remarks>\t\n            <p> The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. </p><p>The Direct3D 11.1 runtime, which is available starting with Windows Developer Preview, can bind a larger number of <strong><see cref=\"T:SharpDX.Direct3D11.Buffer\"/></strong> resources to the shader than the maximum constant buffer size that is supported by shaders (4096 constants ? 4*32-bit components each).  When you bind such a large buffer, the shader can access only the first 4096 4*32-bit component constants in the buffer, as if 4096 constants is the full size of the buffer.  </p><p>If the application wants the shader to access other parts of the buffer, it must call the <strong>CSSetConstantBuffers1</strong> method instead. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::CSSetConstantBuffers']/*\"/>\t\n            <msdn-id>ff476400</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::CSSetConstantBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[In, Buffer] const void** ppConstantBuffers)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::CSSetConstantBuffers</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.ComputeShaderStage.GetShaderResources(System.Int32,System.Int32,SharpDX.Direct3D11.ShaderResourceView[])\">\n            <summary>\t\n            <p>Get the compute-shader resources.</p>\t\n            </summary>\t\n            <param name=\"startSlot\"><dd>  <p>Index into the device's zero-based array to begin getting shader resources from (ranges from 0 to <see cref=\"F:SharpDX.Direct3D11.CommonShaderStage.InputResourceSlotCount\"/> - 1).</p> </dd></param>\t\n            <param name=\"numViews\"><dd>  <p>The number of resources to get from the device. Up to a maximum of 128 slots are available for shader resources (ranges from 0 to <see cref=\"F:SharpDX.Direct3D11.CommonShaderStage.InputResourceSlotCount\"/> - StartSlot).</p> </dd></param>\t\n            <param name=\"shaderResourceViewsOut\"><dd>  <p>Array of <strong>shader resource view</strong> interfaces to be returned by the device.</p> </dd></param>\t\n            <remarks>\t\n            <p>Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::CSGetShaderResources']/*\"/>\t\n            <msdn-id>ff476398</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::CSGetShaderResources([In] unsigned int StartSlot,[In] unsigned int NumViews,[Out, Buffer] ID3D11ShaderResourceView** ppShaderResourceViews)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::CSGetShaderResources</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.ComputeShaderStage.GetUnorderedAccessViews(System.Int32,System.Int32,SharpDX.Direct3D11.UnorderedAccessView[])\">\n            <summary>\t\n            <p>Gets an array of views for an unordered resource.</p>\t\n            </summary>\t\n            <param name=\"startSlot\"><dd>  <p>Index of the first element in the zero-based array to return (ranges from 0 to <see cref=\"F:SharpDX.Direct3D11.ComputeShaderStage.UnorderedAccessViewSlotCount\"/> - 1).</p> </dd></param>\t\n            <param name=\"numUAVs\"><dd>  <p>Number of views to get (ranges from 0 to <see cref=\"F:SharpDX.Direct3D11.ComputeShaderStage.UnorderedAccessViewSlotCount\"/> - StartSlot).</p> </dd></param>\t\n            <param name=\"unorderedAccessViewsOut\"><dd>  <p>A reference to an array of interface references (see <strong><see cref=\"T:SharpDX.Direct3D11.UnorderedAccessView\"/></strong>) to get.</p> </dd></param>\t\n            <remarks>\t\n            <p>Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::CSGetUnorderedAccessViews']/*\"/>\t\n            <msdn-id>ff476399</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::CSGetUnorderedAccessViews([In] unsigned int StartSlot,[In] unsigned int NumUAVs,[Out, Buffer] ID3D11UnorderedAccessView** ppUnorderedAccessViews)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::CSGetUnorderedAccessViews</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.ComputeShaderStage.GetShader(SharpDX.Direct3D11.ComputeShader@,SharpDX.Direct3D11.ClassInstance[],System.Int32@)\">\n            <summary>\t\n            <p>Get the compute shader currently set on the device.</p>\t\n            </summary>\t\n            <param name=\"computeShaderOut\"><dd>  <p>Address of a reference to a Compute shader (see <strong><see cref=\"T:SharpDX.Direct3D11.ComputeShader\"/></strong>) to be returned by the method.</p> </dd></param>\t\n            <param name=\"classInstancesOut\"><dd>  <p>Pointer to an array of class instance interfaces (see <strong><see cref=\"T:SharpDX.Direct3D11.ClassInstance\"/></strong>).</p> </dd></param>\t\n            <param name=\"numClassInstancesRef\"><dd>  <p>The number of class-instance elements in the array.</p> </dd></param>\t\n            <remarks>\t\n            <p>Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::CSGetShader']/*\"/>\t\n            <msdn-id>ff476397</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::CSGetShader([Out] ID3D11ComputeShader** ppComputeShader,[Out, Buffer, Optional] ID3D11ClassInstance** ppClassInstances,[InOut] unsigned int* pNumClassInstances)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::CSGetShader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.ComputeShaderStage.GetSamplers(System.Int32,System.Int32,SharpDX.Direct3D11.SamplerState[])\">\n            <summary>\t\n            <p>Get an array of sampler state interfaces from the compute-shader stage.</p>\t\n            </summary>\t\n            <param name=\"startSlot\"><dd>  <p>Index into a zero-based array to begin getting samplers from (ranges from 0 to <see cref=\"F:SharpDX.Direct3D11.CommonShaderStage.SamplerSlotCount\"/> - 1).</p> </dd></param>\t\n            <param name=\"numSamplers\"><dd>  <p>Number of samplers to get from a device context. Each pipeline stage has a total of 16 sampler slots available (ranges from 0 to <see cref=\"F:SharpDX.Direct3D11.CommonShaderStage.SamplerSlotCount\"/> - StartSlot).</p> </dd></param>\t\n            <param name=\"samplersOut\"><dd>  <p>Pointer to an array of sampler-state interfaces (see <strong><see cref=\"T:SharpDX.Direct3D11.SamplerState\"/></strong>).</p> </dd></param>\t\n            <remarks>\t\n            <p>Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::CSGetSamplers']/*\"/>\t\n            <msdn-id>ff476396</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::CSGetSamplers([In] unsigned int StartSlot,[In] unsigned int NumSamplers,[Out, Buffer] ID3D11SamplerState** ppSamplers)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::CSGetSamplers</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.ComputeShaderStage.GetConstantBuffers(System.Int32,System.Int32,SharpDX.Direct3D11.Buffer[])\">\n            <summary>\t\n            <p>Get the constant buffers used by the compute-shader stage.</p>\t\n            </summary>\t\n            <param name=\"startSlot\"><dd>  <p>Index into the device's zero-based array to begin retrieving constant buffers from (ranges from 0 to <see cref=\"F:SharpDX.Direct3D11.CommonShaderStage.ConstantBufferApiSlotCount\"/> - 1).</p> </dd></param>\t\n            <param name=\"numBuffers\"><dd>  <p>Number of buffers to retrieve (ranges from 0 to <see cref=\"F:SharpDX.Direct3D11.CommonShaderStage.ConstantBufferApiSlotCount\"/> - StartSlot).</p> </dd></param>\t\n            <param name=\"constantBuffersOut\"><dd>  <p>Array of constant buffer interface references (see <strong><see cref=\"T:SharpDX.Direct3D11.Buffer\"/></strong>) to be returned by the method.</p> </dd></param>\t\n            <remarks>\t\n            <p>Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::CSGetConstantBuffers']/*\"/>\t\n            <msdn-id>ff476395</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::CSGetConstantBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[Out, Buffer] ID3D11Buffer** ppConstantBuffers)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::CSGetConstantBuffers</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.DeviceContext\">\n            <summary>\t\n            <p>The <strong><see cref=\"T:SharpDX.Direct3D11.DeviceContext\"/></strong> interface represents a device context which generates rendering commands.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext']/*\"/>\t\n            <msdn-id>ff476385</msdn-id>\t\n            <unmanaged>ID3D11DeviceContext</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DeviceContext.#ctor(SharpDX.Direct3D11.Device)\">\n            <summary>\n              Constructs a new deferred context <see cref = \"T:SharpDX.Direct3D11.DeviceContext\" />.\n            </summary>\n            <param name = \"device\">The device with which to associate the state object.</param>\n            <returns>The newly created object.</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DeviceContext.FinishCommandList(System.Boolean)\">\n            <summary>\n              Create a command list and record graphics commands into it.\n            </summary>\n            <param name = \"restoreState\">A flag indicating whether the immediate context state is saved (prior) and restored (after) the execution of a command list.</param>\n            <returns>The created command list containing the queued rendering commands.</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DeviceContext.IsDataAvailable(SharpDX.Direct3D11.Asynchronous)\">\n            <summary>\n            Determines whether asynhronous query data is available.\n            </summary>\n            <param name=\"data\">The data.</param>\n            <returns>\n              <c>true</c> if asynhronous query data is available; otherwise, <c>false</c>.\n            </returns>\n            <unmanaged>HRESULT ID3D11DeviceContext::GetData([In] ID3D11Asynchronous* pAsync,[Out, Buffer, Optional] void* pData,[In] unsigned int DataSize,[In] D3D11_ASYNC_GETDATA_FLAG GetDataFlags)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DeviceContext.IsDataAvailable(SharpDX.Direct3D11.Asynchronous,SharpDX.Direct3D11.AsynchronousFlags)\">\n            <summary>\n            Determines whether asynhronous query data is available.\n            </summary>\n            <param name=\"data\">The data.</param>\n            <returns>\n              <c>true</c> if asynhronous query data is available; otherwise, <c>false</c>.\n            </returns>\n            <unmanaged>HRESULT ID3D11DeviceContext::GetData([In] ID3D11Asynchronous* pAsync,[Out, Buffer, Optional] void* pData,[In] unsigned int DataSize,[In] D3D11_ASYNC_GETDATA_FLAG GetDataFlags)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DeviceContext.GetData(SharpDX.Direct3D11.Asynchronous)\">\n            <summary>\n              Gets data from the GPU asynchronously.\n            </summary>\n            <param name = \"data\">The asynchronous data provider.</param>\n            <returns>The data retrieved from the GPU.</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DeviceContext.GetData``1(SharpDX.Direct3D11.Asynchronous)\">\n            <summary>\n              Gets data from the GPU asynchronously.\n            </summary>\n            <param name = \"data\">The asynchronous data provider.</param>\n            <returns>The data retrieved from the GPU.</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DeviceContext.GetData``1(SharpDX.Direct3D11.Asynchronous,``0@)\">\n            <summary>\n            Gets data from the GPU asynchronously.\n            </summary>\n            <typeparam name=\"T\"></typeparam>\n            <param name=\"data\">The asynchronous data provider.</param>\n            <param name=\"result\">The data retrieved from the GPU.</param>\n            <returns>\n            True if result contains valid data, false otherwise.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DeviceContext.GetData(SharpDX.Direct3D11.Asynchronous,SharpDX.Direct3D11.AsynchronousFlags)\">\n            <summary>\n              Gets data from the GPU asynchronously.\n            </summary>\n            <param name = \"data\">The asynchronous data provider.</param>\n            <param name = \"flags\">Flags specifying how the command should operate.</param>\n            <returns>The data retrieved from the GPU.</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DeviceContext.GetData``1(SharpDX.Direct3D11.Asynchronous,SharpDX.Direct3D11.AsynchronousFlags)\">\n            <summary>\n              Gets data from the GPU asynchronously.\n            </summary>\n            <param name = \"data\">The asynchronous data provider.</param>\n            <param name = \"flags\">Flags specifying how the command should operate.</param>\n            <returns>The data retrieved from the GPU.</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DeviceContext.GetData``1(SharpDX.Direct3D11.Asynchronous,SharpDX.Direct3D11.AsynchronousFlags,``0@)\">\n            <summary>\n            Gets data from the GPU asynchronously.\n            </summary>\n            <typeparam name=\"T\"></typeparam>\n            <param name=\"data\">The asynchronous data provider.</param>\n            <param name=\"flags\">Flags specifying how the command should operate.</param>\n            <param name=\"result\">The data retrieved from the GPU.</param>\n            <returns>\n            True if result contains valid data, false otherwise.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DeviceContext.CopyResource(SharpDX.Direct3D11.Resource,SharpDX.Direct3D11.Resource)\">\n            <summary>\t\n            Copy the entire contents of the source resource to the destination resource using the GPU. \t\n            </summary>\t\n            <remarks>\t\n            This method is unusual in that it causes the GPU to perform the copy operation (similar to a memcpy by the CPU). As a result, it has a few restrictions designed for improving performance. For instance, the source and destination resources:  Must be different resources. Must be the same type. Must have identical dimensions (including width, height, depth, and size as appropriate). Will only be copied. CopyResource does not support any stretch, color key, blend, or format conversions. Must have compatible DXGI formats, which means the formats must be identical or at least from the same type group. For example, a DXGI_FORMAT_R32G32B32_FLOAT texture can be copied to an DXGI_FORMAT_R32G32B32_UINT texture since both of these formats are in the DXGI_FORMAT_R32G32B32_TYPELESS group. Might not be currently mapped.  You cannot use an {{Immutable}} resource as a destination. You can use a   {{depth-stencil}} resource as either a source or a destination.  Resources created with multisampling capability (see <see cref=\"T:SharpDX.DXGI.SampleDescription\"/>) can be used as source and destination only if both source and destination have identical multisampled count and quality. If source and destination differ in multisampled count and quality or if one is multisampled and the other is not multisampled the call to ID3D11DeviceContext::CopyResource fails. The method is an asynchronous call which may be added to the command-buffer queue. This attempts to remove pipeline stalls that may occur when copying data.  An application that only needs to copy a portion of the data in a resource should use <see cref=\"M:SharpDX.Direct3D11.DeviceContext.CopySubresourceRegion_(SharpDX.Direct3D11.Resource,System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D11.Resource,System.Int32,System.Nullable{SharpDX.Direct3D11.ResourceRegion})\"/> instead. \t\n            </remarks>\t\n            <param name=\"source\">A reference to the source resource (see <see cref=\"T:SharpDX.Direct3D11.Resource\"/>). </param>\n            <param name=\"destination\">A reference to the destination resource (see <see cref=\"T:SharpDX.Direct3D11.Resource\"/>). </param>\n            <unmanaged>void ID3D11DeviceContext::CopyResource([In] ID3D11Resource* pDstResource,[In] ID3D11Resource* pSrcResource)</unmanaged>\n            <msdn-id>ff476392</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::CopyResource([In] ID3D11Resource* pDstResource,[In] ID3D11Resource* pSrcResource)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::CopyResource</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DeviceContext.CopySubresourceRegion(SharpDX.Direct3D11.Resource,System.Int32,System.Nullable{SharpDX.Direct3D11.ResourceRegion},SharpDX.Direct3D11.Resource,System.Int32,System.Int32,System.Int32,System.Int32)\">\n            <summary>\t\n            Copy a region from a source resource to a destination resource.\t\n            </summary>\t\n            <remarks>\t\n            The source box must be within the size of the source resource. The destination offsets, (x, y, and z) allow the source box to be offset when writing into the destination resource; however, the dimensions of the source box and the offsets must be within the size of the resource. If the resources are buffers, all coordinates are in bytes; if the resources are textures, all coordinates are in texels. {{D3D11CalcSubresource}} is a helper function for calculating subresource indexes. CopySubresourceRegion performs the copy on the GPU (similar to a memcpy by the CPU). As a consequence, the source and destination resources:  Must be different subresources (although they can be from the same resource). Must be the same type. Must have compatible DXGI formats (identical or from the same type group). For example, a DXGI_FORMAT_R32G32B32_FLOAT texture can be copied to an DXGI_FORMAT_R32G32B32_UINT texture since both of these formats are in the DXGI_FORMAT_R32G32B32_TYPELESS group. May not be currently mapped.  CopySubresourceRegion only supports copy; it does not support any stretch, color key, blend, or format conversions. An application that needs to copy an entire resource should use <see cref=\"M:SharpDX.Direct3D11.DeviceContext.CopyResource_(SharpDX.Direct3D11.Resource,SharpDX.Direct3D11.Resource)\"/> instead. CopySubresourceRegion is an asynchronous call which may be added to the command-buffer queue, this attempts to remove pipeline stalls that may occur when copying data. See performance considerations for more details. Note??If you use CopySubresourceRegion with a depth-stencil buffer or a multisampled resource, you must copy the whole subresource. In this situation, you must pass 0 to the DstX, DstY, and DstZ parameters and NULL to the pSrcBox parameter. In addition, source and destination resources, which are represented by the pSrcResource and pDstResource parameters, should have identical sample count values. Example The following code snippet copies a box (located at (120,100),(200,220)) from a source texture into a reqion (10,20),(90,140) in a destination texture. \t\n            <code> D3D11_BOX sourceRegion;\t\n            sourceRegion.left = 120;\t\n            sourceRegion.right = 200;\t\n            sourceRegion.top = 100;\t\n            sourceRegion.bottom = 220;\t\n            sourceRegion.front = 0;\t\n            sourceRegion.back = 1; pd3dDeviceContext-&gt;CopySubresourceRegion( pDestTexture, 0, 10, 20, 0, pSourceTexture, 0, &amp;sourceRegion ); </code>\t\n            \t\n             Notice, that for a 2D texture, front and back are set to 0 and 1 respectively. \t\n            </remarks>\t\n            <param name=\"source\">A reference to the source resource (see <see cref=\"T:SharpDX.Direct3D11.Resource\"/>). </param>\n            <param name=\"sourceSubresource\">Source subresource index. </param>\n            <param name=\"sourceRegion\">A reference to a 3D box (see <see cref=\"T:SharpDX.Direct3D11.ResourceRegion\"/>) that defines the source subresources that can be copied. If NULL, the entire source subresource is copied. The box must fit within the source resource. </param>\n            <param name=\"destination\">A reference to the destination resource (see <see cref=\"T:SharpDX.Direct3D11.Resource\"/>). </param>\n            <param name=\"destinationSubResource\">Destination subresource index. </param>\n            <param name=\"dstX\">The x-coordinate of the upper left corner of the destination region. </param>\n            <param name=\"dstY\">The y-coordinate of the upper left corner of the destination region. For a 1D subresource, this must be zero. </param>\n            <param name=\"dstZ\">The z-coordinate of the upper left corner of the destination region. For a 1D or 2D subresource, this must be zero. </param>\n            <msdn-id>ff476394</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::CopySubresourceRegion([In] ID3D11Resource* pDstResource,[In] unsigned int DstSubresource,[In] unsigned int DstX,[In] unsigned int DstY,[In] unsigned int DstZ,[In] ID3D11Resource* pSrcResource,[In] unsigned int SrcSubresource,[In, Optional] const D3D11_BOX* pSrcBox)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::CopySubresourceRegion</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DeviceContext.ResolveSubresource(SharpDX.Direct3D11.Resource,System.Int32,SharpDX.Direct3D11.Resource,System.Int32,SharpDX.DXGI.Format)\">\n            <summary>\t\n            Copy a multisampled resource into a non-multisampled resource.\t\n            </summary>\t\n            <remarks>\t\n            This API is most useful when re-using the resulting rendertarget of one render pass as an input to a second render pass. The source and destination resources must be the same resource type and have the same dimensions. In addition, they must have compatible formats. There are three scenarios for this:  ScenarioRequirements Source and destination are prestructured and typedBoth the source and destination must have identical formats and that format must be specified in the Format parameter. One resource is prestructured and typed and the other is prestructured and typelessThe typed resource must have a format that is compatible with the typeless resource (i.e. the typed resource is DXGI_FORMAT_R32_FLOAT and the typeless resource is DXGI_FORMAT_R32_TYPELESS). The format of the typed resource must be specified in the Format parameter. Source and destination are prestructured and typelessBoth the source and desintation must have the same typeless format (i.e. both must have DXGI_FORMAT_R32_TYPELESS), and the Format parameter must specify a format that is compatible with the source and destination (i.e. if both are DXGI_FORMAT_R32_TYPELESS then DXGI_FORMAT_R32_FLOAT could be specified in the Format parameter). For example, given the DXGI_FORMAT_R16G16B16A16_TYPELESS format:  The source (or dest) format could be DXGI_FORMAT_R16G16B16A16_UNORM The dest (or source) format could be DXGI_FORMAT_R16G16B16A16_FLOAT    ? \t\n            </remarks>\t\n            <param name=\"source\">Source resource. Must be multisampled. </param>\n            <param name=\"sourceSubresource\">&gt;The source subresource of the source resource. </param>\n            <param name=\"destination\">Destination resource. Must be a created with the <see cref=\"F:SharpDX.Direct3D11.ResourceUsage.Default\"/> flag and be single-sampled. See <see cref=\"T:SharpDX.Direct3D11.Resource\"/>. </param>\n            <param name=\"destinationSubresource\">A zero-based index, that identifies the destination subresource. Use {{D3D11CalcSubresource}} to calculate the index. </param>\n            <param name=\"format\">A <see cref=\"T:SharpDX.DXGI.Format\"/> that indicates how the multisampled resource will be resolved to a single-sampled resource.  See remarks. </param>\n            <unmanaged>void ID3D11DeviceContext::ResolveSubresource([In] ID3D11Resource* pDstResource,[In] int DstSubresource,[In] ID3D11Resource* pSrcResource,[In] int SrcSubresource,[In] DXGI_FORMAT Format)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DeviceContext.MapSubresource(SharpDX.Direct3D11.Texture1D,System.Int32,System.Int32,SharpDX.Direct3D11.MapMode,SharpDX.Direct3D11.MapFlags,SharpDX.DataStream@)\">\n            <summary>\n            Maps the data contained in a subresource to a memory pointer, and denies the GPU access to that subresource.\n            </summary>\n            <param name=\"resource\">The resource.</param>\n            <param name=\"mipSlice\">The mip slice.</param>\n            <param name=\"arraySlice\">The array slice.</param>\n            <param name=\"mode\">The mode.</param>\n            <param name=\"flags\">The flags.</param>\n            <param name=\"stream\">The output stream containing the pointer.</param>\n            <returns>\n            The locked <see cref=\"T:SharpDX.DataBox\"/>\n            </returns>\n            <unmanaged>HRESULT ID3D11DeviceContext::Map([In] ID3D11Resource* pResource,[In] unsigned int Subresource,[In] D3D11_MAP MapType,[In] D3D11_MAP_FLAG MapFlags,[Out] D3D11_MAPPED_SUBRESOURCE* pMappedResource)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DeviceContext.MapSubresource(SharpDX.Direct3D11.Texture2D,System.Int32,System.Int32,SharpDX.Direct3D11.MapMode,SharpDX.Direct3D11.MapFlags,SharpDX.DataStream@)\">\n            <summary>\n            Maps the data contained in a subresource to a memory pointer, and denies the GPU access to that subresource.\n            </summary>\n            <param name=\"resource\">The resource.</param>\n            <param name=\"mipSlice\">The mip slice.</param>\n            <param name=\"arraySlice\">The array slice.</param>\n            <param name=\"mode\">The mode.</param>\n            <param name=\"flags\">The flags.</param>\n            <param name=\"stream\">The output stream containing the pointer.</param>\n            <returns>\n            The locked <see cref=\"T:SharpDX.DataBox\"/>\n            </returns>\n            <unmanaged>HRESULT ID3D11DeviceContext::Map([In] ID3D11Resource* pResource,[In] unsigned int Subresource,[In] D3D11_MAP MapType,[In] D3D11_MAP_FLAG MapFlags,[Out] D3D11_MAPPED_SUBRESOURCE* pMappedResource)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DeviceContext.MapSubresource(SharpDX.Direct3D11.Texture3D,System.Int32,System.Int32,SharpDX.Direct3D11.MapMode,SharpDX.Direct3D11.MapFlags,SharpDX.DataStream@)\">\n            <summary>\n            Maps the data contained in a subresource to a memory pointer, and denies the GPU access to that subresource.\n            </summary>\n            <param name=\"resource\">The resource.</param>\n            <param name=\"mipSlice\">The mip slice.</param>\n            <param name=\"arraySlice\">The array slice.</param>\n            <param name=\"mode\">The mode.</param>\n            <param name=\"flags\">The flags.</param>\n            <param name=\"stream\">The output stream containing the pointer.</param>\n            <returns>\n            The locked <see cref=\"T:SharpDX.DataBox\"/>\n            </returns>\n            <unmanaged>HRESULT ID3D11DeviceContext::Map([In] ID3D11Resource* pResource,[In] unsigned int Subresource,[In] D3D11_MAP MapType,[In] D3D11_MAP_FLAG MapFlags,[Out] D3D11_MAPPED_SUBRESOURCE* pMappedResource)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DeviceContext.MapSubresource(SharpDX.Direct3D11.Buffer,SharpDX.Direct3D11.MapMode,SharpDX.Direct3D11.MapFlags,SharpDX.DataStream@)\">\n            <summary>\n            Maps the data contained in a subresource to a memory pointer, and denies the GPU access to that subresource.\n            </summary>\n            <param name=\"resource\">The resource.</param>\n            <param name=\"mode\">The mode.</param>\n            <param name=\"flags\">The flags.</param>\n            <param name=\"stream\">The output stream containing the pointer.</param>\n            <returns>\n            The locked <see cref=\"T:SharpDX.DataBox\"/>\n            </returns>\n            <unmanaged>HRESULT ID3D11DeviceContext::Map([In] ID3D11Resource* pResource,[In] unsigned int Subresource,[In] D3D11_MAP MapType,[In] D3D11_MAP_FLAG MapFlags,[Out] D3D11_MAPPED_SUBRESOURCE* pMappedResource)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DeviceContext.MapSubresource(SharpDX.Direct3D11.Resource,System.Int32,System.Int32,SharpDX.Direct3D11.MapMode,SharpDX.Direct3D11.MapFlags,System.Int32@)\">\n            <summary>\n            Maps the data contained in a subresource to a memory pointer, and denies the GPU access to that subresource.\n            </summary>\n            <param name=\"resource\">The resource.</param>\n            <param name=\"mipSlice\">The mip slice.</param>\n            <param name=\"arraySlice\">The array slice.</param>\n            <param name=\"mode\">The mode.</param>\n            <param name=\"flags\">The flags.</param>\n            <param name=\"mipSize\">Size of the selected miplevel.</param>\n            <returns>\n            The locked <see cref=\"T:SharpDX.DataBox\"/>\n            </returns>\n            <unmanaged>HRESULT ID3D11DeviceContext::Map([In] ID3D11Resource* pResource,[In] unsigned int Subresource,[In] D3D11_MAP MapType,[In] D3D11_MAP_FLAG MapFlags,[Out] D3D11_MAPPED_SUBRESOURCE* pMappedResource)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DeviceContext.MapSubresource(SharpDX.Direct3D11.Resource,System.Int32,SharpDX.Direct3D11.MapMode,SharpDX.Direct3D11.MapFlags,SharpDX.DataStream@)\">\n            <summary>\n            Maps the data contained in a subresource to a memory pointer, and denies the GPU access to that subresource.\n            </summary>\n            <param name=\"resource\">The resource.</param>\n            <param name=\"subresource\">The subresource.</param>\n            <param name=\"mode\">The mode.</param>\n            <param name=\"flags\">The flags.</param>\n            <param name=\"stream\">The output stream containing the pointer.</param>\n            <returns>The locked <see cref=\"T:SharpDX.DataBox\"/></returns>\n            <unmanaged>HRESULT ID3D11DeviceContext::Map([In] ID3D11Resource* pResource,[In] unsigned int Subresource,[In] D3D11_MAP MapType,[In] D3D11_MAP_FLAG MapFlags,[Out] D3D11_MAPPED_SUBRESOURCE* pMappedResource)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DeviceContext.UpdateSubresource``1(``0@,SharpDX.Direct3D11.Resource,System.Int32,System.Int32,System.Int32,System.Nullable{SharpDX.Direct3D11.ResourceRegion})\">\n            <summary>\n            Copies data from the CPU to to a non-mappable subresource region.\n            </summary>\n            <typeparam name=\"T\">Type of the data to upload</typeparam>\n            <param name=\"data\">A reference to the data to upload.</param>\n            <param name=\"resource\">The destination resource.</param>\n            <param name=\"subresource\">The destination subresource.</param>\n            <param name=\"rowPitch\">The row pitch.</param>\n            <param name=\"depthPitch\">The depth pitch.</param>\n            <remarks>\n            This method is implementing the <a href=\"http://blogs.msdn.com/b/chuckw/archive/2010/07/28/known-issue-direct3d-11-updatesubresource-and-deferred-contexts.aspx\">workaround for defered context</a>.\n            </remarks>\n            <msdn-id>ff476486</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::UpdateSubresource([In] ID3D11Resource* pDstResource,[In] unsigned int DstSubresource,[In, Optional] const D3D11_BOX* pDstBox,[In] const void* pSrcData,[In] unsigned int SrcRowPitch,[In] unsigned int SrcDepthPitch)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::UpdateSubresource</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DeviceContext.UpdateSubresource``1(``0[],SharpDX.Direct3D11.Resource,System.Int32,System.Int32,System.Int32,System.Nullable{SharpDX.Direct3D11.ResourceRegion})\">\n            <summary>\n            Copies data from the CPU to to a non-mappable subresource region.\n            </summary>\n            <typeparam name=\"T\">Type of the data to upload</typeparam>\n            <param name=\"data\">A reference to the data to upload.</param>\n            <param name=\"resource\">The destination resource.</param>\n            <param name=\"subresource\">The destination subresource.</param>\n            <param name=\"rowPitch\">The row pitch.</param>\n            <param name=\"depthPitch\">The depth pitch.</param>\n            <param name=\"region\">A region that defines the portion of the destination subresource to copy the resource data into. Coordinates are in bytes for buffers and in texels for textures.</param>\n            <msdn-id>ff476486</msdn-id>\n              <unmanaged>void ID3D11DeviceContext::UpdateSubresource([In] ID3D11Resource* pDstResource,[In] unsigned int DstSubresource,[In, Optional] const D3D11_BOX* pDstBox,[In] const void* pSrcData,[In] unsigned int SrcRowPitch,[In] unsigned int SrcDepthPitch)</unmanaged>\n              <unmanaged-short>ID3D11DeviceContext::UpdateSubresource</unmanaged-short>\n            <remarks>This method is implementing the <a href=\"http://blogs.msdn.com/b/chuckw/archive/2010/07/28/known-issue-direct3d-11-updatesubresource-and-deferred-contexts.aspx\">workaround for defered context</a>.</remarks>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DeviceContext.UpdateSubresource(SharpDX.DataBox,SharpDX.Direct3D11.Resource,System.Int32)\">\n            <summary>\n              Copies data from the CPU to to a non-mappable subresource region.\n            </summary>\n            <param name = \"source\">The source data.</param>\n            <param name = \"resource\">The destination resource.</param>\n            <param name = \"subresource\">The destination subresource.</param>\n            <remarks>\n            This method is implementing the <a href=\"http://blogs.msdn.com/b/chuckw/archive/2010/07/28/known-issue-direct3d-11-updatesubresource-and-deferred-contexts.aspx\">workaround for defered context</a>.\n            </remarks>\n            <unmanaged>void ID3D11DeviceContext::UpdateSubresource([In] ID3D11Resource* pDstResource,[In] unsigned int DstSubresource,[In, Optional] const D3D11_BOX* pDstBox,[In] const void* pSrcData,[In] unsigned int SrcRowPitch,[In] unsigned int SrcDepthPitch)</unmanaged>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DeviceContext.UpdateSubresource(SharpDX.DataBox,SharpDX.Direct3D11.Resource,System.Int32,SharpDX.Direct3D11.ResourceRegion)\">\n            <summary>\n              Copies data from the CPU to to a non-mappable subresource region.\n            </summary>\n            <param name = \"source\">The source data.</param>\n            <param name = \"resource\">The destination resource.</param>\n            <param name = \"subresource\">The destination subresource.</param>\n            <param name = \"region\">The destination region within the resource.</param>\n            <remarks>\n            This method is implementing the <a href=\"http://blogs.msdn.com/b/chuckw/archive/2010/07/28/known-issue-direct3d-11-updatesubresource-and-deferred-contexts.aspx\">workaround for defered context</a>.\n            </remarks>\n            <unmanaged>void ID3D11DeviceContext::UpdateSubresource([In] ID3D11Resource* pDstResource,[In] unsigned int DstSubresource,[In, Optional] const D3D11_BOX* pDstBox,[In] const void* pSrcData,[In] unsigned int SrcRowPitch,[In] unsigned int SrcDepthPitch)</unmanaged>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DeviceContext.UpdateSubresourceSafe``1(``0@,SharpDX.Direct3D11.Resource,System.Int32,System.Int32,System.Int32,System.Int32,System.Boolean)\">\n            <summary>\n            Copies data from the CPU to to a non-mappable subresource region.\n            </summary>\n            <typeparam name=\"T\">Type of the data to upload</typeparam>\n            <param name=\"data\">A reference to the data to upload.</param>\n            <param name=\"resource\">The destination resource.</param>\n            <param name=\"srcBytesPerElement\">The size in bytes per pixel/block element.</param>\n            <param name=\"subresource\">The destination subresource.</param>\n            <param name=\"rowPitch\">The row pitch.</param>\n            <param name=\"depthPitch\">The depth pitch.</param>\n            <param name=\"isCompressedResource\">if set to <c>true</c> the resource is a block/compressed resource</param>\n            <unmanaged>void ID3D11DeviceContext::UpdateSubresource([In] ID3D11Resource* pDstResource,[In] unsigned int DstSubresource,[In, Optional] const D3D11_BOX* pDstBox,[In] const void* pSrcData,[In] unsigned int SrcRowPitch,[In] unsigned int SrcDepthPitch)</unmanaged>\n            <remarks>\n            This method is implementing the <a href=\"http://blogs.msdn.com/b/chuckw/archive/2010/07/28/known-issue-direct3d-11-updatesubresource-and-deferred-contexts.aspx\">workaround for defered context</a>.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DeviceContext.UpdateSubresourceSafe``1(``0[],SharpDX.Direct3D11.Resource,System.Int32,System.Int32,System.Int32,System.Int32,System.Boolean)\">\n            <summary>\n            Copies data from the CPU to to a non-mappable subresource region.\n            </summary>\n            <typeparam name=\"T\">Type of the data to upload</typeparam>\n            <param name=\"data\">A reference to the data to upload.</param>\n            <param name=\"resource\">The destination resource.</param>\n            <param name=\"srcBytesPerElement\">The size in bytes per pixel/block element.</param>\n            <param name=\"subresource\">The destination subresource.</param>\n            <param name=\"rowPitch\">The row pitch.</param>\n            <param name=\"depthPitch\">The depth pitch.</param>\n            <param name=\"isCompressedResource\">if set to <c>true</c> the resource is a block/compressed resource</param>\n            <remarks>\n            This method is implementing the <a href=\"http://blogs.msdn.com/b/chuckw/archive/2010/07/28/known-issue-direct3d-11-updatesubresource-and-deferred-contexts.aspx\">workaround for defered context</a>.\n            </remarks>\n            <unmanaged>void ID3D11DeviceContext::UpdateSubresource([In] ID3D11Resource* pDstResource,[In] unsigned int DstSubresource,[In, Optional] const D3D11_BOX* pDstBox,[In] const void* pSrcData,[In] unsigned int SrcRowPitch,[In] unsigned int SrcDepthPitch)</unmanaged>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DeviceContext.UpdateSubresourceSafe(SharpDX.DataBox,SharpDX.Direct3D11.Resource,System.Int32,System.Int32,System.Boolean)\">\n            <summary>\n              Copies data from the CPU to to a non-mappable subresource region.\n            </summary>\n            <param name = \"source\">The source data.</param>\n            <param name = \"resource\">The destination resource.</param>\n            <param name=\"srcBytesPerElement\">The size in bytes per pixel/block element.</param>\n            <param name = \"subresource\">The destination subresource.</param>\n            <param name=\"isCompressedResource\">if set to <c>true</c> the resource is a block/compressed resource</param>\n            <remarks>\n            This method is implementing the <a href=\"http://blogs.msdn.com/b/chuckw/archive/2010/07/28/known-issue-direct3d-11-updatesubresource-and-deferred-contexts.aspx\">workaround for defered context</a>.\n            </remarks>\n            <unmanaged>void ID3D11DeviceContext::UpdateSubresource([In] ID3D11Resource* pDstResource,[In] unsigned int DstSubresource,[In, Optional] const D3D11_BOX* pDstBox,[In] const void* pSrcData,[In] unsigned int SrcRowPitch,[In] unsigned int SrcDepthPitch)</unmanaged>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DeviceContext.UpdateSubresourceSafe(SharpDX.DataBox,SharpDX.Direct3D11.Resource,System.Int32,System.Int32,SharpDX.Direct3D11.ResourceRegion,System.Boolean)\">\n            <summary>\n              Copies data from the CPU to to a non-mappable subresource region.\n            </summary>\n            <param name = \"source\">The source data.</param>\n            <param name = \"resource\">The destination resource.</param>\n            <param name=\"srcBytesPerElement\">The size in bytes per pixel/block element.</param>\n            <param name = \"subresource\">The destination subresource.</param>\n            <param name = \"region\">The destination region within the resource.</param>\n            <param name=\"isCompressedResource\">if set to <c>true</c> the resource is a block/compressed resource</param>\n            <remarks>\n            This method is implementing the <a href=\"http://blogs.msdn.com/b/chuckw/archive/2010/07/28/known-issue-direct3d-11-updatesubresource-and-deferred-contexts.aspx\">workaround for defered context</a>.\n            </remarks>\n            <unmanaged>void ID3D11DeviceContext::UpdateSubresource([In] ID3D11Resource* pDstResource,[In] unsigned int DstSubresource,[In, Optional] const D3D11_BOX* pDstBox,[In] const void* pSrcData,[In] unsigned int SrcRowPitch,[In] unsigned int SrcDepthPitch)</unmanaged>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DeviceContext.UpdateSubresourceSafe(SharpDX.Direct3D11.Resource,System.Int32,System.Nullable{SharpDX.Direct3D11.ResourceRegion},System.IntPtr,System.Int32,System.Int32,System.Int32,System.Boolean)\">\n            <summary>\n            Updates the subresource safe method.\n            </summary>\n            <param name=\"dstResourceRef\">The DST resource ref.</param>\n            <param name=\"dstSubresource\">The DST subresource.</param>\n            <param name=\"dstBoxRef\">The DST box ref.</param>\n            <param name=\"pSrcData\">The p SRC data.</param>\n            <param name=\"srcRowPitch\">The SRC row pitch.</param>\n            <param name=\"srcDepthPitch\">The SRC depth pitch.</param>\n            <param name=\"srcBytesPerElement\">The size in bytes per pixel/block element.</param>\n            <param name=\"isCompressedResource\">if set to <c>true</c> the resource is a block/compressed resource</param>\n            <returns></returns>\n            <remarks>\n            This method is implementing the <a href=\"http://blogs.msdn.com/b/chuckw/archive/2010/07/28/known-issue-direct3d-11-updatesubresource-and-deferred-contexts.aspx\">workaround for defered context</a>.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DeviceContext.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D11.DeviceContext\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DeviceContext.op_Explicit(System.IntPtr)~SharpDX.Direct3D11.DeviceContext\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D11.DeviceContext\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DeviceContext.NativePointerUpdated(System.IntPtr)\">\n            <summary>Update nested inner interfaces pointer</summary>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DeviceContext.DrawIndexed(System.Int32,System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Draw indexed, non-instanced primitives.</p>\t\n            </summary>\t\n            <param name=\"indexCount\"><dd>  <p>Number of indices to draw.</p> </dd></param>\t\n            <param name=\"startIndexLocation\"><dd>  <p>The location of the first index read by the GPU from the index buffer.</p> </dd></param>\t\n            <param name=\"baseVertexLocation\"><dd>  <p>A value added to each index before reading a vertex from the vertex buffer.</p> </dd></param>\t\n            <remarks>\t\n            <p>A draw API submits work to the rendering pipeline.</p><p>If the sum of both indices is negative, the result of the function call is undefined.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::DrawIndexed']/*\"/>\t\n            <msdn-id>ff476409</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::DrawIndexed([In] unsigned int IndexCount,[In] unsigned int StartIndexLocation,[In] int BaseVertexLocation)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::DrawIndexed</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DeviceContext.Draw(System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Draw non-indexed, non-instanced primitives.</p>\t\n            </summary>\t\n            <param name=\"vertexCount\"><dd>  <p>Number of vertices to draw.</p> </dd></param>\t\n            <param name=\"startVertexLocation\"><dd>  <p>Index of the first vertex, which is usually an offset in a vertex buffer; it could also be used as the first vertex id generated for a shader parameter marked with the <strong>SV_TargetId</strong> system-value semantic.</p> </dd></param>\t\n            <remarks>\t\n            <p>A draw API submits work to the rendering pipeline.</p><p>The vertex data for a draw call normally comes from a vertex buffer that is bound to the pipeline. However, you could also provide the vertex data from a shader that has vertex data marked with the <strong>SV_VertexId</strong> system-value semantic.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::Draw']/*\"/>\t\n            <msdn-id>ff476407</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::Draw([In] unsigned int VertexCount,[In] unsigned int StartVertexLocation)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::Draw</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DeviceContext.MapSubresource(SharpDX.Direct3D11.Resource,System.Int32,SharpDX.Direct3D11.MapMode,SharpDX.Direct3D11.MapFlags)\">\n            <summary>\t\n            <p>Gets a reference to the data contained in a subresource, and denies the GPU access to that subresource.</p>\t\n            </summary>\t\n            <param name=\"resourceRef\"><dd>  <p>A reference to a <strong><see cref=\"T:SharpDX.Direct3D11.Resource\"/></strong> interface.</p> </dd></param>\t\n            <param name=\"subresource\"><dd>  <p>Index number of the subresource.</p> </dd></param>\t\n            <param name=\"mapType\"><dd>  <p>Specifies the CPU's read and write permissions for a resource. For possible values, see <strong><see cref=\"T:SharpDX.Direct3D11.MapMode\"/></strong>.</p> </dd></param>\t\n            <param name=\"mapFlags\"><dd>  <p> <strong>Flag</strong> that specifies what the CPU should do when the GPU is busy. This flag is optional.</p> </dd></param>\t\n            <returns><dd>  <p>A reference to the mapped subresource (see <strong><see cref=\"T:SharpDX.DataBox\"/></strong>).</p> </dd></returns>\t\n            <remarks>\t\n            <p>If you call <strong>Map</strong> on a deferred context, you can only pass <strong><see cref=\"F:SharpDX.Direct3D11.MapMode.WriteDiscard\"/></strong>, <strong><see cref=\"F:SharpDX.Direct3D11.MapMode.WriteNoOverwrite\"/></strong>, or both to the <em>MapType</em> parameter. Other <strong><see cref=\"T:SharpDX.Direct3D11.MapMode\"/></strong>-typed values are not supported for a deferred context.</p><p>The Direct3D 11.1 runtime, which is available starting with Windows Developer Preview, can  map shader resource views (SRVs) of dynamic buffers with <strong><see cref=\"F:SharpDX.Direct3D11.MapMode.WriteNoOverwrite\"/></strong>.  The Direct3D 11 and earlier runtimes limited mapping to vertex or index buffers.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::Map']/*\"/>\t\n            <msdn-id>ff476457</msdn-id>\t\n            <unmanaged>HRESULT ID3D11DeviceContext::Map([In] ID3D11Resource* pResource,[In] unsigned int Subresource,[In] D3D11_MAP MapType,[In] D3D11_MAP_FLAG MapFlags,[Out] D3D11_MAPPED_SUBRESOURCE* pMappedResource)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::Map</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DeviceContext.UnmapSubresource(SharpDX.Direct3D11.Resource,System.Int32)\">\n            <summary>\t\n            <p>Invalidate the reference to a resource and re-enable the GPU's access to that resource.</p>\t\n            </summary>\t\n            <param name=\"resourceRef\"><dd>  <p>A reference to a <strong><see cref=\"T:SharpDX.Direct3D11.Resource\"/></strong> interface.</p> </dd></param>\t\n            <param name=\"subresource\"><dd>  <p>A subresource to be unmapped.</p> </dd></param>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::Unmap']/*\"/>\t\n            <msdn-id>ff476485</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::Unmap([In] ID3D11Resource* pResource,[In] unsigned int Subresource)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::Unmap</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DeviceContext.DrawIndexedInstanced(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Draw indexed, instanced primitives.</p>\t\n            </summary>\t\n            <param name=\"indexCountPerInstance\"><dd>  <p>Number of indices read from the index buffer for each instance.</p> </dd></param>\t\n            <param name=\"instanceCount\"><dd>  <p>Number of instances to draw.</p> </dd></param>\t\n            <param name=\"startIndexLocation\"><dd>  <p>The location of the first index read by the GPU from the index buffer.</p> </dd></param>\t\n            <param name=\"baseVertexLocation\"><dd>  <p>A value added to each index before reading a vertex from the vertex buffer.</p> </dd></param>\t\n            <param name=\"startInstanceLocation\"><dd>  <p>A value added to each index before reading per-instance data from a vertex buffer.</p> </dd></param>\t\n            <remarks>\t\n            <p>A draw API submits work to the rendering pipeline.</p><p>Instancing may extend performance by reusing the same geometry to draw multiple objects in a scene. One example of instancing could be  to draw the same object with different positions and colors. Indexing requires multiple vertex buffers: at least one for per-vertex data  and a second buffer for per-instance data.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::DrawIndexedInstanced']/*\"/>\t\n            <msdn-id>ff476410</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::DrawIndexedInstanced([In] unsigned int IndexCountPerInstance,[In] unsigned int InstanceCount,[In] unsigned int StartIndexLocation,[In] int BaseVertexLocation,[In] unsigned int StartInstanceLocation)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::DrawIndexedInstanced</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DeviceContext.DrawInstanced(System.Int32,System.Int32,System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Draw non-indexed, instanced primitives.</p>\t\n            </summary>\t\n            <param name=\"vertexCountPerInstance\"><dd>  <p>Number of vertices to draw.</p> </dd></param>\t\n            <param name=\"instanceCount\"><dd>  <p>Number of instances to draw.</p> </dd></param>\t\n            <param name=\"startVertexLocation\"><dd>  <p>Index of the first vertex.</p> </dd></param>\t\n            <param name=\"startInstanceLocation\"><dd>  <p>A value added to each index before reading per-instance data from a vertex buffer.</p> </dd></param>\t\n            <remarks>\t\n            <p>A draw API submits work to the rendering pipeline.</p><p>Instancing may extend performance by reusing the same geometry to draw multiple objects in a scene. One example of instancing could be  to draw the same object with different positions and colors.</p><p>The vertex data for an instanced draw call normally comes from a vertex buffer that is bound to the pipeline.  However, you could also provide the vertex data from a shader that has instanced data identified with a system-value semantic (SV_InstanceID).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::DrawInstanced']/*\"/>\t\n            <msdn-id>ff476412</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::DrawInstanced([In] unsigned int VertexCountPerInstance,[In] unsigned int InstanceCount,[In] unsigned int StartVertexLocation,[In] unsigned int StartInstanceLocation)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::DrawInstanced</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DeviceContext.Begin(SharpDX.Direct3D11.Asynchronous)\">\n            <summary>\t\n            <p>Mark the beginning of a series of commands.</p>\t\n            </summary>\t\n            <param name=\"asyncRef\"><dd>  <p>A reference to an <strong><see cref=\"T:SharpDX.Direct3D11.Asynchronous\"/></strong> interface.</p> </dd></param>\t\n            <remarks>\t\n            <p>Use <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.End(SharpDX.Direct3D11.Asynchronous)\"/></strong> to mark the ending of the series of commands.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::Begin']/*\"/>\t\n            <msdn-id>ff476386</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::Begin([In] ID3D11Asynchronous* pAsync)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::Begin</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DeviceContext.End(SharpDX.Direct3D11.Asynchronous)\">\n            <summary>\t\n            <p>Mark the end of a series of commands.</p>\t\n            </summary>\t\n            <param name=\"asyncRef\"><dd>  <p>A reference to an <strong><see cref=\"T:SharpDX.Direct3D11.Asynchronous\"/></strong> interface.</p> </dd></param>\t\n            <remarks>\t\n            <p>Use <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.Begin(SharpDX.Direct3D11.Asynchronous)\"/></strong> to mark the beginning of the series of commands.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::End']/*\"/>\t\n            <msdn-id>ff476422</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::End([In] ID3D11Asynchronous* pAsync)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::End</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DeviceContext.GetDataInternal(SharpDX.Direct3D11.Asynchronous,System.IntPtr,System.Int32,SharpDX.Direct3D11.AsynchronousFlags)\">\n            <summary>\t\n            <p>Get data from the graphics processing unit (GPU) asynchronously.</p>\t\n            </summary>\t\n            <param name=\"asyncRef\"><dd>  <p>A reference to an <strong><see cref=\"T:SharpDX.Direct3D11.Asynchronous\"/></strong> interface for the object about which <strong>GetData</strong> retrieves data.</p> </dd></param>\t\n            <param name=\"dataRef\"><dd>  <p>Address of memory that will receive the data. If <strong><c>null</c></strong>, <strong>GetData</strong> will be used only to check status. The type of data output depends on the type of asynchronous interface.</p> </dd></param>\t\n            <param name=\"dataSize\"><dd>  <p>Size of the data to retrieve or 0. Must be 0 when <em>pData</em> is <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"getDataFlags\"><dd>  <p>Optional flags. Can be 0 or any combination of the flags enumerated by <strong><see cref=\"T:SharpDX.Direct3D11.AsynchronousFlags\"/></strong>.</p> </dd></param>\t\n            <returns><p>This method returns one of the Direct3D 11 Return Codes. A return value of <see cref=\"F:SharpDX.Result.Ok\"/> indicates that the data at <em>pData</em> is available for the calling application to access. A return value of S_FALSE indicates that the data is not yet available. If the data is not yet available, the application must call <strong>GetData</strong> until the data is available.</p></returns>\t\n            <remarks>\t\n            <p>Queries in a deferred context are limited to predicated drawing. That is, you cannot call <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.GetDataInternal(SharpDX.Direct3D11.Asynchronous,System.IntPtr,System.Int32,SharpDX.Direct3D11.AsynchronousFlags)\"/></strong> on a deferred context to get data about a query; you can only call <strong>GetData</strong> on the immediate context to get data about a query. For predicated drawing, the results of a predication-type query are used by the GPU and not returned to an application. For more information about predication and predicated drawing, see <strong>D3D11DeviceContext::SetPredication</strong>.</p><p><strong>GetData</strong> retrieves the data that the runtime collected between calls to <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.Begin(SharpDX.Direct3D11.Asynchronous)\"/></strong> and <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.End(SharpDX.Direct3D11.Asynchronous)\"/></strong>.  Certain queries only require a call to <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.End(SharpDX.Direct3D11.Asynchronous)\"/></strong> in which case the data returned by <strong>GetData</strong> is accurate up to the last call to <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.End(SharpDX.Direct3D11.Asynchronous)\"/></strong>. For information about the queries that only require a call to <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.End(SharpDX.Direct3D11.Asynchronous)\"/></strong> and about the type of data that <strong>GetData</strong> retrieves for each query, see <strong><see cref=\"T:SharpDX.Direct3D11.QueryType\"/></strong>.</p><p>If <em>DataSize</em> is 0, <strong>GetData</strong> is only used to check status.</p><p>An application gathers counter data by calling <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.Begin(SharpDX.Direct3D11.Asynchronous)\"/></strong>, issuing some graphics commands, calling <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.End(SharpDX.Direct3D11.Asynchronous)\"/></strong>, and then calling <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.GetDataInternal(SharpDX.Direct3D11.Asynchronous,System.IntPtr,System.Int32,SharpDX.Direct3D11.AsynchronousFlags)\"/></strong> to get data about what happened in between the <strong>Begin</strong> and <strong>End</strong> calls. For information about performance counter types, see <strong><see cref=\"T:SharpDX.Direct3D11.CounterKind\"/></strong>. The counter data is of type FLOAT32. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::GetData']/*\"/>\t\n            <msdn-id>ff476428</msdn-id>\t\n            <unmanaged>HRESULT ID3D11DeviceContext::GetData([In] ID3D11Asynchronous* pAsync,[Out, Buffer, Optional] void* pData,[In] unsigned int DataSize,[In] D3D11_ASYNC_GETDATA_FLAG GetDataFlags)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::GetData</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DeviceContext.SetPredication(SharpDX.Direct3D11.Predicate,SharpDX.Bool)\">\n            <summary>\t\n            <p>Set a rendering predicate.</p>\t\n            </summary>\t\n            <param name=\"predicateRef\"><dd>  <p>Pointer to a predicate (see <strong><see cref=\"T:SharpDX.Direct3D11.Predicate\"/></strong>). A <strong><c>null</c></strong> value indicates \"no\" predication; in this case, the value of PredicateValue is irrelevent but will be preserved for <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.GetPredication(SharpDX.Bool@)\"/></strong>.</p> </dd></param>\t\n            <param name=\"predicateValue\"><dd>  <p>If <strong>TRUE</strong>, rendering will be affected by when the predicate's conditions are met. If <strong><see cref=\"F:SharpDX.Result.False\"/></strong>, rendering will be affected when the conditions are not met.</p> </dd></param>\t\n            <remarks>\t\n            <p>The predicate must be in the \"issued\" or \"signaled\" state to be used for predication. While the predicate is set for predication, calls to <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.Begin(SharpDX.Direct3D11.Asynchronous)\"/></strong> and <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.End(SharpDX.Direct3D11.Asynchronous)\"/></strong> are invalid.</p><p>This method is used to denote that subsequent rendering and resource manipulation commands are not actually performed if the resulting Predicate data of the Predicate is equal to the PredicateValue. However, some Predicates are only hints, so they may not actually prevent operations from being performed. </p><p>The primary usefulness of Predication is to allow an application to issue graphics commands without taking the performance hit of spinning, waiting for <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.GetDataInternal(SharpDX.Direct3D11.Asynchronous,System.IntPtr,System.Int32,SharpDX.Direct3D11.AsynchronousFlags)\"/></strong> to return. So, Predication can occur while <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.GetDataInternal(SharpDX.Direct3D11.Asynchronous,System.IntPtr,System.Int32,SharpDX.Direct3D11.AsynchronousFlags)\"/></strong> returns S_FALSE. Another way to think of it: an application can also use Predication as a fallback, if it is possible that <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.GetDataInternal(SharpDX.Direct3D11.Asynchronous,System.IntPtr,System.Int32,SharpDX.Direct3D11.AsynchronousFlags)\"/></strong> returns S_FALSE. If <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.GetDataInternal(SharpDX.Direct3D11.Asynchronous,System.IntPtr,System.Int32,SharpDX.Direct3D11.AsynchronousFlags)\"/></strong> returns <see cref=\"F:SharpDX.Result.Ok\"/>, the application can skip calling the graphics commands manually with it's own application logic.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::SetPredication']/*\"/>\t\n            <msdn-id>ff476481</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::SetPredication([In, Optional] ID3D11Predicate* pPredicate,[In] BOOL PredicateValue)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::SetPredication</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DeviceContext.DrawAuto\">\n            <summary>\t\n            <p>Draw geometry of an unknown size.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>A draw API submits work to the rendering pipeline. This API submits work of an unknown size that was processed by the input assembler, vertex shader, and stream-output stages;  the work may or may not have gone through the geometry-shader stage.</p><p>After data has been streamed out to stream-output stage buffers, those buffers can be again bound to the Input Assembler stage at input slot 0 and DrawAuto will draw them without the application needing to know the amount of data that was written to the buffers. A measurement of the amount of data written to the SO stage buffers is maintained internally when the data is streamed out. This means that the CPU does not need to fetch the measurement before re-binding the data that was streamed as input data. Although this amount is tracked internally, it is still the responsibility of applications to use input layouts to describe the format of the data in the SO stage buffers so that the layouts are available when the buffers are again bound to the input assembler.</p><p>The following diagram shows the DrawAuto process.</p><p></p><p>Calling DrawAuto does not change the state of the streaming-output buffers that were bound again as inputs.</p><p>DrawAuto only works when drawing with one input buffer bound as an input to the IA stage at slot 0. Applications must create the SO buffer resource with both binding flags, <strong><see cref=\"F:SharpDX.Direct3D11.BindFlags.VertexBuffer\"/></strong> and <strong><see cref=\"F:SharpDX.Direct3D11.BindFlags.StreamOutput\"/></strong>.</p><p>This API does not support indexing or instancing.</p><p>If an application needs to retrieve the size of the streaming-output buffer, it can query for statistics on streaming output by using <strong><see cref=\"F:SharpDX.Direct3D11.QueryType.StreamOutputStatistics\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::DrawAuto']/*\"/>\t\n            <msdn-id>ff476408</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::DrawAuto()</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::DrawAuto</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DeviceContext.DrawIndexedInstancedIndirect(SharpDX.Direct3D11.Buffer,System.Int32)\">\n            <summary>\t\n            <p>Draw indexed, instanced, GPU-generated primitives.</p>\t\n            </summary>\t\n            <param name=\"bufferForArgsRef\"><dd>  <p>A reference to an <strong><see cref=\"T:SharpDX.Direct3D11.Buffer\"/></strong>, which is a buffer containing the GPU generated primitives.</p> </dd></param>\t\n            <param name=\"alignedByteOffsetForArgs\"><dd>  <p>Offset in <em>pBufferForArgs</em> to the start of the GPU generated primitives.</p> </dd></param>\t\n            <remarks>\t\n            <p>When an application creates a buffer that is associated with the <strong><see cref=\"T:SharpDX.Direct3D11.Buffer\"/></strong> interface that  <em>pBufferForArgs</em> points to, the application must set the <strong><see cref=\"F:SharpDX.Direct3D11.ResourceOptionFlags.DrawIndirectArguments\"/></strong> flag in the <strong>MiscFlags</strong> member of the <strong><see cref=\"T:SharpDX.Direct3D11.BufferDescription\"/></strong> structure that describes the buffer. To create the buffer, the application calls the <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateBuffer(SharpDX.Direct3D11.BufferDescription@,System.Nullable{SharpDX.DataBox},SharpDX.Direct3D11.Buffer)\"/></strong> method and in this call passes a reference to <strong><see cref=\"T:SharpDX.Direct3D11.BufferDescription\"/></strong> in the <em>pDesc</em> parameter.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::DrawIndexedInstancedIndirect']/*\"/>\t\n            <msdn-id>ff476411</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::DrawIndexedInstancedIndirect([In] ID3D11Buffer* pBufferForArgs,[In] unsigned int AlignedByteOffsetForArgs)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::DrawIndexedInstancedIndirect</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DeviceContext.DrawInstancedIndirect(SharpDX.Direct3D11.Buffer,System.Int32)\">\n            <summary>\t\n            <p>Draw instanced, GPU-generated primitives.</p>\t\n            </summary>\t\n            <param name=\"bufferForArgsRef\"><dd>  <p>A reference to an <strong><see cref=\"T:SharpDX.Direct3D11.Buffer\"/></strong>, which is a buffer containing the GPU generated primitives.</p> </dd></param>\t\n            <param name=\"alignedByteOffsetForArgs\"><dd>  <p>Offset in <em>pBufferForArgs</em> to the start of the GPU generated primitives.</p> </dd></param>\t\n            <remarks>\t\n            <p>When an application creates a buffer that is associated with the <strong><see cref=\"T:SharpDX.Direct3D11.Buffer\"/></strong> interface that  <em>pBufferForArgs</em> points to, the application must set the <strong><see cref=\"F:SharpDX.Direct3D11.ResourceOptionFlags.DrawIndirectArguments\"/></strong> flag in the <strong>MiscFlags</strong> member of the <strong><see cref=\"T:SharpDX.Direct3D11.BufferDescription\"/></strong> structure that describes the buffer. To create the buffer, the application calls the <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateBuffer(SharpDX.Direct3D11.BufferDescription@,System.Nullable{SharpDX.DataBox},SharpDX.Direct3D11.Buffer)\"/></strong> method and in this call passes a reference to <strong><see cref=\"T:SharpDX.Direct3D11.BufferDescription\"/></strong> in the <em>pDesc</em> parameter.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::DrawInstancedIndirect']/*\"/>\t\n            <msdn-id>ff476413</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::DrawInstancedIndirect([In] ID3D11Buffer* pBufferForArgs,[In] unsigned int AlignedByteOffsetForArgs)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::DrawInstancedIndirect</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DeviceContext.Dispatch(System.Int32,System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Execute a command list from a thread group.</p>\t\n            </summary>\t\n            <param name=\"threadGroupCountX\"><dd>  <p>The number of groups dispatched in the x direction. <em>ThreadGroupCountX</em> must be less than <see cref=\"F:SharpDX.Direct3D11.ComputeShaderStage.DispatchMaximumThreadGroupsPerDimension\"/> (65535).</p> </dd></param>\t\n            <param name=\"threadGroupCountY\"><dd>  <p>The number of groups dispatched in the y direction. <em>ThreadGroupCountY</em> must be less than <see cref=\"F:SharpDX.Direct3D11.ComputeShaderStage.DispatchMaximumThreadGroupsPerDimension\"/> (65535).</p> </dd></param>\t\n            <param name=\"threadGroupCountZ\"><dd>  <p>The number of groups dispatched in the z direction.  <em>ThreadGroupCountZ</em> must be less than <see cref=\"F:SharpDX.Direct3D11.ComputeShaderStage.DispatchMaximumThreadGroupsPerDimension\"/> (65535).  In feature level 10 the value for <em>ThreadGroupCountZ</em> must be 1.</p> </dd></param>\t\n            <remarks>\t\n            <p>You call the <strong>Dispatch</strong> method to execute commands in a compute shader. A compute shader can be run on many threads in parallel, within a thread group. Index a particular thread, within a thread group using a 3D vector  given by (x,y,z).</p><p>In the following illustration, assume a thread group with 50 threads where the size of the group is given by (5,5,2). A single thread is identified from a  thread group with 50 threads in it, using the vector (4,1,1).</p><p></p><p>The following illustration shows the relationship between the parameters passed to <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.Dispatch(System.Int32,System.Int32,System.Int32)\"/></strong>, Dispatch(5,3,2), the values specified in the numthreads attribute, numthreads(10,8,3), and values that will passed to the compute shader for the thread-related system values \t\n            (SV_GroupIndex,SV_DispatchThreadID,SV_GroupThreadID,SV_GroupID).</p><p></p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::Dispatch']/*\"/>\t\n            <msdn-id>ff476405</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::Dispatch([In] unsigned int ThreadGroupCountX,[In] unsigned int ThreadGroupCountY,[In] unsigned int ThreadGroupCountZ)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::Dispatch</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DeviceContext.DispatchIndirect(SharpDX.Direct3D11.Buffer,System.Int32)\">\n            <summary>\t\n            <p>Execute a command list over one or more thread groups.</p>\t\n            </summary>\t\n            <param name=\"bufferForArgsRef\"><dd>  <p>A reference to an <strong><see cref=\"T:SharpDX.Direct3D11.Buffer\"/></strong>, which must be loaded with data that matches the argument list for <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.Dispatch(System.Int32,System.Int32,System.Int32)\"/></strong>.</p> </dd></param>\t\n            <param name=\"alignedByteOffsetForArgs\"><dd>  <p>A byte-aligned offset between the start of the buffer and the arguments.</p> </dd></param>\t\n            <remarks>\t\n            <p>You call the <strong>DispatchIndirect</strong> method to execute commands in a compute shader.</p><p>When an application creates a buffer that is associated with the <strong><see cref=\"T:SharpDX.Direct3D11.Buffer\"/></strong> interface that  <em>pBufferForArgs</em> points to, the application must set the <strong><see cref=\"F:SharpDX.Direct3D11.ResourceOptionFlags.DrawIndirectArguments\"/></strong> flag in the <strong>MiscFlags</strong> member of the <strong><see cref=\"T:SharpDX.Direct3D11.BufferDescription\"/></strong> structure that describes the buffer. To create the buffer, the application calls the <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateBuffer(SharpDX.Direct3D11.BufferDescription@,System.Nullable{SharpDX.DataBox},SharpDX.Direct3D11.Buffer)\"/></strong> method and in this call passes a reference to <strong><see cref=\"T:SharpDX.Direct3D11.BufferDescription\"/></strong> in the <em>pDesc</em> parameter.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::DispatchIndirect']/*\"/>\t\n            <msdn-id>ff476406</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::DispatchIndirect([In] ID3D11Buffer* pBufferForArgs,[In] unsigned int AlignedByteOffsetForArgs)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::DispatchIndirect</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DeviceContext.CopySubresourceRegion_(SharpDX.Direct3D11.Resource,System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D11.Resource,System.Int32,System.Nullable{SharpDX.Direct3D11.ResourceRegion})\">\n            <summary>\t\n            <p>Copy a region from a source resource to a destination resource.</p>\t\n            </summary>\t\n            <param name=\"dstResourceRef\"><dd>  <p>A reference to the destination resource (see <strong><see cref=\"T:SharpDX.Direct3D11.Resource\"/></strong>).</p> </dd></param>\t\n            <param name=\"dstSubresource\"><dd>  <p>Destination subresource index.</p> </dd></param>\t\n            <param name=\"dstX\"><dd>  <p>The x-coordinate of the upper left corner of the destination region.</p> </dd></param>\t\n            <param name=\"dstY\"><dd>  <p>The y-coordinate of the upper left corner of the destination region. For a 1D subresource, this must be zero.</p> </dd></param>\t\n            <param name=\"dstZ\"><dd>  <p>The z-coordinate of the upper left corner of the destination region. For a 1D or 2D subresource, this must be zero.</p> </dd></param>\t\n            <param name=\"srcResourceRef\"><dd>  <p>A reference to the source resource (see <strong><see cref=\"T:SharpDX.Direct3D11.Resource\"/></strong>).</p> </dd></param>\t\n            <param name=\"srcSubresource\"><dd>  <p>Source subresource index.</p> </dd></param>\t\n            <param name=\"srcBoxRef\"><dd>  <p>A reference to a 3D box (see <strong><see cref=\"T:SharpDX.Direct3D11.ResourceRegion\"/></strong>) that defines the source subresources that can be copied. If <strong><c>null</c></strong>, the entire source subresource is copied. The box must fit within the source resource.</p> </dd></param>\t\n            <remarks>\t\n            <p>The source box must be within the size of the source resource. The destination offsets, (x, y, and z) allow the source box to be offset when writing into the destination resource; however, the dimensions of the source box and the offsets must be within the size of the resource.</p><p>If the resources are buffers, all coordinates are in bytes; if the resources are textures, all coordinates are in texels. <strong>D3D11CalcSubresource</strong> is a helper function for calculating subresource indexes.</p><p><strong>CopySubresourceRegion</strong> performs the copy on the GPU (similar to a memcpy by the CPU). As a consequence, the source and destination resources:</p><ul> <li>Must be different subresources (although they can be from the same resource).</li> <li>Must be the same type.</li> <li>Must have compatible DXGI formats (identical or from the same type group). For example, a <see cref=\"F:SharpDX.DXGI.Format.R32G32B32_Float\"/> texture can be copied to an <see cref=\"F:SharpDX.DXGI.Format.R32G32B32_UInt\"/> texture since both of these formats are in the <see cref=\"F:SharpDX.DXGI.Format.R32G32B32_Typeless\"/> group.</li> <li>May not be currently mapped.</li> </ul><p><strong>CopySubresourceRegion</strong> only supports copy; it does not support any stretch, color key, blend, or format conversions. An application that needs to copy an entire resource should use <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.CopyResource_(SharpDX.Direct3D11.Resource,SharpDX.Direct3D11.Resource)\"/></strong> instead.</p><p><strong>CopySubresourceRegion</strong> is an asynchronous call, which may be added to the command-buffer queue, this attempts to remove pipeline stalls that may occur when copying data. For more information about pipeline stalls, see performance considerations.</p><p><strong>Note</strong>??If you use <strong>CopySubresourceRegion</strong> with a depth-stencil buffer or a multisampled resource, you must copy the whole subresource. In this situation, you must pass 0 to the <em>DstX</em>, <em>DstY</em>, and <em>DstZ</em> parameters and <strong><c>null</c></strong> to the <em>pSrcBox</em> parameter. In addition, source and destination resources, which are represented by the <em>pSrcResource</em> and <em>pDstResource</em> parameters, should have identical sample count values.</p>Example<p>The following code snippet copies a box (located at (120,100),(200,220)) from a source texture into a reqion (10,20),(90,140) in a destination texture.</p><pre><code> <see cref=\"T:SharpDX.Direct3D11.ResourceRegion\"/> sourceRegion;\t\n            sourceRegion.left = 120;\t\n            sourceRegion.right = 200;\t\n            sourceRegion.top = 100;\t\n            sourceRegion.bottom = 220;\t\n            sourceRegion.front = 0;\t\n            sourceRegion.back = 1; pd3dDeviceContext-&gt;CopySubresourceRegion( pDestTexture, 0, 10, 20, 0, pSourceTexture, 0, &amp;sourceRegion );\t\n            </code></pre><p>Notice, that for a 2D texture, front and back are set to 0 and 1 respectively.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::CopySubresourceRegion']/*\"/>\t\n            <msdn-id>ff476394</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::CopySubresourceRegion([In] ID3D11Resource* pDstResource,[In] unsigned int DstSubresource,[In] unsigned int DstX,[In] unsigned int DstY,[In] unsigned int DstZ,[In] ID3D11Resource* pSrcResource,[In] unsigned int SrcSubresource,[In, Optional] const D3D11_BOX* pSrcBox)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::CopySubresourceRegion</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DeviceContext.CopyResource_(SharpDX.Direct3D11.Resource,SharpDX.Direct3D11.Resource)\">\n            <summary>\t\n            <p>Copy the entire contents of the source resource to the destination resource using the GPU. </p>\t\n            </summary>\t\n            <param name=\"dstResourceRef\"><dd>  <p>A reference to the destination resource (see <strong><see cref=\"T:SharpDX.Direct3D11.Resource\"/></strong>).</p> </dd></param>\t\n            <param name=\"srcResourceRef\"><dd>  <p>A reference to the source resource (see <strong><see cref=\"T:SharpDX.Direct3D11.Resource\"/></strong>).</p> </dd></param>\t\n            <remarks>\t\n            <p>This method is unusual in that it causes the GPU to perform the copy operation (similar to a memcpy by the CPU). As a result, it has a few restrictions designed for improving performance. For instance, the source and destination resources:</p><ul> <li>Must be different resources.</li> <li>Must be the same type.</li> <li>Must have identical dimensions (including width, height, depth, and size as appropriate).</li> <li>Will only be copied. CopyResource does not support any stretch, color key, blend, or format conversions.</li> <li>Must have compatible DXGI formats, which means the formats must be identical or at least from the same type group. For example, a <see cref=\"F:SharpDX.DXGI.Format.R32G32B32_Float\"/> texture can be copied to an <see cref=\"F:SharpDX.DXGI.Format.R32G32B32_UInt\"/> texture since both of these formats are in the <see cref=\"F:SharpDX.DXGI.Format.R32G32B32_Typeless\"/> group.</li> <li>Might not be currently mapped.</li> </ul><p>You cannot use an <strong>Immutable</strong> resource as a destination. You can use a   <strong>depth-stencil</strong> resource as either a source or a destination.  Resources created with multisampling capability (see <strong><see cref=\"T:SharpDX.DXGI.SampleDescription\"/></strong>) can be used as source and destination only if both source and destination have identical multisampled count and quality. If source and destination differ in multisampled count and quality or if one is multisampled and the other is not multisampled the call to <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.CopyResource_(SharpDX.Direct3D11.Resource,SharpDX.Direct3D11.Resource)\"/></strong> fails.</p><p>The method is an asynchronous call which may be added to the command-buffer queue. This attempts to remove pipeline stalls that may occur when copying data. </p><p>An application that only needs to copy a portion of the data in a resource should use <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.CopySubresourceRegion_(SharpDX.Direct3D11.Resource,System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D11.Resource,System.Int32,System.Nullable{SharpDX.Direct3D11.ResourceRegion})\"/></strong> instead.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::CopyResource']/*\"/>\t\n            <msdn-id>ff476392</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::CopyResource([In] ID3D11Resource* pDstResource,[In] ID3D11Resource* pSrcResource)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::CopyResource</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DeviceContext.UpdateSubresource(SharpDX.Direct3D11.Resource,System.Int32,System.Nullable{SharpDX.Direct3D11.ResourceRegion},System.IntPtr,System.Int32,System.Int32)\">\n            <summary>\t\n            <p>The CPU copies data from memory to a subresource created in non-mappable memory.</p>\t\n            </summary>\t\n            <param name=\"dstResourceRef\"><dd>  <p>A reference to the destination resource (see <strong><see cref=\"T:SharpDX.Direct3D11.Resource\"/></strong>).</p> </dd></param>\t\n            <param name=\"dstSubresource\"><dd>  <p>A zero-based index, that identifies the destination subresource. See <strong>D3D11CalcSubresource</strong> for more details.</p> </dd></param>\t\n            <param name=\"dstBoxRef\"><dd>  <p>A reference to a box that defines the portion of the destination subresource to copy the resource data into. Coordinates are in bytes for buffers and in texels for textures. If <strong><c>null</c></strong>, the data is written to the destination subresource with no offset. The dimensions of the source must fit the destination (see <strong><see cref=\"T:SharpDX.Direct3D11.ResourceRegion\"/></strong>).</p> </dd></param>\t\n            <param name=\"srcDataRef\"><dd>  <p>A reference to the source data in memory.</p> </dd></param>\t\n            <param name=\"srcRowPitch\"><dd>  <p>The size of one row of the source data.</p> </dd></param>\t\n            <param name=\"srcDepthPitch\"><dd>  <p>The size of one depth slice of source data.</p> </dd></param>\t\n            <remarks>\t\n            <p>For a shader-constant buffer; set <em>pDstBox</em> to <strong><c>null</c></strong>. It is not possible to use this method to partially update a shader-constant buffer.</p><p>A resource cannot be used as a destination if:</p><ul> <li>the resource is created with <strong>immutable</strong> or <strong>dynamic</strong> usage.</li> <li>the resource is created as a depth-stencil resource.</li> <li>the resource is created with multisampling capability (see <strong><see cref=\"T:SharpDX.DXGI.SampleDescription\"/></strong>).</li> </ul><p>When <strong>UpdateSubresource</strong> returns, the application is free to change or even free the data pointed to by <em>pSrcData</em> because the method has already copied/snapped away the original contents.</p><p>The performance of <strong>UpdateSubresource</strong> depends on whether or not there is contention for the destination resource. For example, contention for a vertex buffer resource occurs when the application executes a <strong>Draw</strong> call and later calls <strong>UpdateSubresource</strong> on the same vertex buffer before the <strong>Draw</strong> call is actually executed by the GPU.</p><ul> <li>When there is contention for the resource, <strong>UpdateSubresource</strong> will perform 2 copies of the source data. First, the data is copied by the CPU to a temporary storage space accessible by the command buffer. This copy happens before the method returns.  A second copy is then performed by the GPU to copy the source data into non-mappable memory. This second copy happens asynchronously because it is executed by GPU when the command buffer is flushed.</li> <li>When there is no resource contention, the behavior of <strong>UpdateSubresource</strong> is dependent on which is faster (from the CPU's perspective): copying the data to the command buffer and then having a second copy execute when the command buffer is flushed, or having the CPU copy the data to the final resource location. This is dependent on the architecture of the underlying system.</li> </ul><p>To better understand the source row pitch and source depth pitch parameters, the following illustration shows a 3D volume texture.</p><p></p><p>Each block in this visual represents an element of data, and the size of each element is dependent on the resource's format. For example, if the resource format is <see cref=\"F:SharpDX.DXGI.Format.R32G32B32A32_Float\"/>, the size of each element would be 128 bits, or 16 bytes. This 3D volume texture has a width of two, a height of three, and a depth of four.</p><p>To calculate the source row pitch and source depth pitch for a given resource, use the following formulas:</p><ul> <li>Source Row Pitch = [size of one element in bytes] * [number of elements in one row]</li> <li>Source Depth Pitch = [Source Row Pitch] * [number of rows (height)]</li> </ul><p>In the case of this example 3D volume texture where the size of each element is 16 bytes, the formulas are as follows:</p><ul> <li>Source Row Pitch = 16 * 2 = 32</li> <li>Source Depth Pitch = 16 * 2 * 3 = 96</li> </ul><p>The following illustration shows the resource as it is laid out in memory.</p><p></p><p>For example, the following code snippet shows how to specify a destination region in a 2D texture. Assume the destination texture is 512x512 and the operation will copy the data pointed to by <em>pData</em> to  [(120,100)..(200,220)] in the destination texture. Also assume that <em>rowPitch</em> has been initialized with the proper value (as explained above). <strong>front</strong> and <strong>back</strong> are set to 0 and 1 respectively, because by having <strong>front</strong> equal to <strong>back</strong>, the box is technically empty.</p><pre><code> <see cref=\"T:SharpDX.Direct3D11.ResourceRegion\"/> destRegion;\t\n            destRegion.left = 120;\t\n            destRegion.right = 200;\t\n            destRegion.top = 100;\t\n            destRegion.bottom = 220;\t\n            destRegion.front = 0;\t\n            destRegion.back = 1; pd3dDeviceContext-&gt;UpdateSubresource( pDestTexture, 0, &amp;destRegion, pData, rowPitch, 0 );\t\n            </code></pre><p>The 1D case is similar. The following snippet shows how to specify a destination region in a 1D texture. Use the same assumptions as above, except that the texture is 512 in length.</p><pre><code> <see cref=\"T:SharpDX.Direct3D11.ResourceRegion\"/> destRegion;\t\n            destRegion.left = 120\t\n            destRegion.right = 200;\t\n            destRegion.top = 0;\t\n            destRegion.bottom = 1;\t\n            destRegion.front = 0;\t\n            destRegion.back = 1; pd3dDeviceContext-&gt;UpdateSubresource( pDestTexture, 0, &amp;destRegion, pData, rowPitch, 0 );\t\n            </code></pre>Calling UpdateSubresource on a Deferred Context<p>If your application calls <strong>UpdateSubresource</strong> on a deferred context with a destination box?to which <em>pDstBox</em> points?that has a non-(0,0,0) offset, and if the driver does not support command lists, <strong>UpdateSubresource</strong> inappropriately applies that destination-box offset to the <em>pSrcData</em> parameter. To work around this behavior, use the following code:</p><pre><code> <see cref=\"T:SharpDX.Result\"/> UpdateSubresource_Workaround( <see cref=\"T:SharpDX.Direct3D11.Device\"/> *pDevice, <see cref=\"T:SharpDX.Direct3D11.DeviceContext\"/> *pDeviceContext, <see cref=\"T:SharpDX.Direct3D11.Resource\"/> *pDstResource, UINT dstSubresource, const <see cref=\"T:SharpDX.Direct3D11.ResourceRegion\"/> *pDstBox, const void *pSrcData, UINT srcBytesPerElement, UINT srcRowPitch, UINT srcDepthPitch, bool* pDidWorkAround )\t\n            { <see cref=\"T:SharpDX.Result\"/> hr = <see cref=\"F:SharpDX.Result.Ok\"/>; bool needWorkaround = false; <see cref=\"T:SharpDX.Direct3D11.DeviceContextType\"/> contextType = pDeviceContext-&gt;GetType(); if( pDstBox &amp;&amp; (<see cref=\"F:SharpDX.Direct3D11.DeviceContextType.Deferred\"/> == contextType) ) { <see cref=\"T:SharpDX.Direct3D11.FeatureDataThreading\"/> threadingCaps = { <see cref=\"F:SharpDX.Result.False\"/>, <see cref=\"F:SharpDX.Result.False\"/> }; hr = pDevice-&gt;CheckFeatureSupport( <see cref=\"F:SharpDX.Direct3D11.Feature.Threading\"/>, &amp;threadingCaps, sizeof(threadingCaps) ); if( SUCCEEDED(hr) ) { if( !threadingCaps.DriverCommandLists ) { needWorkaround = true; } } } const void* pAdjustedSrcData = pSrcData; if( needWorkaround ) { <see cref=\"T:SharpDX.Direct3D11.ResourceRegion\"/> alignedBox = *pDstBox; // convert from pixels to blocks if( m_bBC ) { alignedBox.left     /= 4; alignedBox.right    /= 4; alignedBox.top      /= 4; alignedBox.bottom   /= 4; } pAdjustedSrcData = ((const BYTE*)pSrcData) - (alignedBox.front * srcDepthPitch) - (alignedBox.top * srcRowPitch) - (alignedBox.left * srcBytesPerElement); } pDeviceContext-&gt;UpdateSubresource( pDstResource, dstSubresource, pDstBox, pAdjustedSrcData, srcRowPitch, srcDepthPitch ); if( pDidWorkAround ) { *pDidWorkAround = needWorkaround; } return hr;\t\n            }\t\n            </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::UpdateSubresource']/*\"/>\t\n            <msdn-id>ff476486</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::UpdateSubresource([In] ID3D11Resource* pDstResource,[In] unsigned int DstSubresource,[In, Optional] const D3D11_BOX* pDstBox,[In] const void* pSrcData,[In] unsigned int SrcRowPitch,[In] unsigned int SrcDepthPitch)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::UpdateSubresource</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DeviceContext.CopyStructureCount(SharpDX.Direct3D11.Buffer,System.Int32,SharpDX.Direct3D11.UnorderedAccessView)\">\n            <summary>\t\n            <p>Copies data from a buffer holding variable length data.</p>\t\n            </summary>\t\n            <param name=\"dstBufferRef\"><dd>  <p>Pointer to <strong><see cref=\"T:SharpDX.Direct3D11.Buffer\"/></strong>.  This can be any buffer resource that other copy commands,  such as <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.CopyResource_(SharpDX.Direct3D11.Resource,SharpDX.Direct3D11.Resource)\"/></strong> or <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.CopySubresourceRegion_(SharpDX.Direct3D11.Resource,System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D11.Resource,System.Int32,System.Nullable{SharpDX.Direct3D11.ResourceRegion})\"/></strong>, are able to write to.</p> </dd></param>\t\n            <param name=\"dstAlignedByteOffset\"><dd>  <p>Offset from the start of <em>pDstBuffer</em> to write 32-bit UINT structure (vertex) count from <em>pSrcView</em>.</p> </dd></param>\t\n            <param name=\"srcViewRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D11.UnorderedAccessView\"/></strong> of a Structured Buffer resource created with either  <strong><see cref=\"F:SharpDX.Direct3D11.UnorderedAccessViewBufferFlags.Append\"/></strong> or <strong><see cref=\"F:SharpDX.Direct3D11.UnorderedAccessViewBufferFlags.Counter\"/></strong> specified  when the UAV was created.   These types of resources have hidden counters tracking \"how many\" records have  been written.</p> </dd></param>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::CopyStructureCount']/*\"/>\t\n            <msdn-id>ff476393</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::CopyStructureCount([In] ID3D11Buffer* pDstBuffer,[In] unsigned int DstAlignedByteOffset,[In] ID3D11UnorderedAccessView* pSrcView)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::CopyStructureCount</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DeviceContext.ClearRenderTargetView(SharpDX.Direct3D11.RenderTargetView,SharpDX.Color4)\">\n            <summary>\t\n            <p>Set all the elements in a render target to one value.</p>\t\n            </summary>\t\n            <param name=\"renderTargetViewRef\"><dd>  <p>Pointer to the rendertarget.</p> </dd></param>\t\n            <param name=\"colorRGBA\"><dd>  <p>A 4-component array that represents the color to fill the render target with.</p> </dd></param>\t\n            <remarks>\t\n            <p>Applications that wish to clear a render target to a specific integer value bit pattern should render a screen-aligned quad instead of using this method.  The reason for this is because this method accepts as input a floating point value, which may not have the same bit pattern as the original integer.</p><table> <tr><td> <p>Differences between Direct3D 9 and Direct3D 11/10:</p> <p>Unlike Direct3D 9, the full extent of the resource view is always cleared. Viewport and scissor settings are not applied.</p> </td></tr> </table><p>?</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::ClearRenderTargetView']/*\"/>\t\n            <msdn-id>ff476388</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::ClearRenderTargetView([In] ID3D11RenderTargetView* pRenderTargetView,[In] const SHARPDX_COLOR4* ColorRGBA)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::ClearRenderTargetView</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DeviceContext.ClearUnorderedAccessView(SharpDX.Direct3D11.UnorderedAccessView,SharpDX.Int4)\">\n            <summary>\t\n            <p>Clears an unordered access resource with bit-precise values.</p>\t\n            </summary>\t\n            <param name=\"unorderedAccessViewRef\">No documentation.</param>\t\n            <param name=\"values\">No documentation.</param>\t\n            <remarks>\t\n            <p>This API copies the lower ni bits from each array element i to the corresponding channel, where ni is the number of bits in  the ith channel of the resource format (for example, R8G8B8_FLOAT has 8 bits for the first 3 channels). This works on any UAV with no format conversion.  For a raw or structured buffer view, only the first array element value is used.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::ClearUnorderedAccessViewUint']/*\"/>\t\n            <msdn-id>ff476391</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::ClearUnorderedAccessViewUint([In] ID3D11UnorderedAccessView* pUnorderedAccessView,[In] const SHARPDX_INT4* Values)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::ClearUnorderedAccessViewUint</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DeviceContext.ClearUnorderedAccessView(SharpDX.Direct3D11.UnorderedAccessView,SharpDX.Vector4)\">\n            <summary>\t\n            <p>Clears an unordered access resource with a float value.</p>\t\n            </summary>\t\n            <param name=\"unorderedAccessViewRef\">No documentation.</param>\t\n            <param name=\"values\">No documentation.</param>\t\n            <remarks>\t\n            <p>This API works on FLOAT, UNORM, and SNORM unordered access views (UAVs), with format conversion from FLOAT to *NORM where appropriate. On other UAVs, the operation is invalid and the call will not reach the driver.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::ClearUnorderedAccessViewFloat']/*\"/>\t\n            <msdn-id>ff476390</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::ClearUnorderedAccessViewFloat([In] ID3D11UnorderedAccessView* pUnorderedAccessView,[In] const SHARPDX_VECTOR4* Values)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::ClearUnorderedAccessViewFloat</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DeviceContext.ClearDepthStencilView(SharpDX.Direct3D11.DepthStencilView,SharpDX.Direct3D11.DepthStencilClearFlags,System.Single,System.Byte)\">\n            <summary>\t\n            <p>Clears the depth-stencil resource.</p>\t\n            </summary>\t\n            <param name=\"depthStencilViewRef\"><dd>  <p>Pointer to the depth stencil to be cleared.</p> </dd></param>\t\n            <param name=\"clearFlags\"><dd>  <p>Identify the type of data to clear (see <strong><see cref=\"T:SharpDX.Direct3D11.DepthStencilClearFlags\"/></strong>).</p> </dd></param>\t\n            <param name=\"depth\"><dd>  <p>Clear the depth buffer with this value. This value will be clamped between 0 and 1.</p> </dd></param>\t\n            <param name=\"stencil\"><dd>  <p>Clear the stencil buffer with this value.</p> </dd></param>\t\n            <remarks>\t\n            <table> <tr><td> <p>Differences between Direct3D 9 and Direct3D 11/10:</p> <p>Unlike Direct3D 9, the full extent of the resource view is always cleared. Viewport and scissor settings are not applied.</p> </td></tr> </table><p>?</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::ClearDepthStencilView']/*\"/>\t\n            <msdn-id>ff476387</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::ClearDepthStencilView([In] ID3D11DepthStencilView* pDepthStencilView,[In] D3D11_CLEAR_FLAG ClearFlags,[In] float Depth,[In] unsigned char Stencil)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::ClearDepthStencilView</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DeviceContext.GenerateMips(SharpDX.Direct3D11.ShaderResourceView)\">\n            <summary>\t\n            <p>Generate mipmaps for the given shader resource.</p>\t\n            </summary>\t\n            <param name=\"shaderResourceViewRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D11.ShaderResourceView\"/></strong> interface that represents the shader resource.</p> </dd></param>\t\n            <remarks>\t\n            <p>GenerateMips may be called on any shader-resource view in order to generate the lower mipmap levels. GenerateMips uses the largest mipmap level of the view to recursively generate the lower levels of the mip, stopping with the smallest level specified by the view. If the base resource was not created with <strong><see cref=\"F:SharpDX.Direct3D11.BindFlags.RenderTarget\"/></strong> and <strong><see cref=\"F:SharpDX.Direct3D11.ResourceOptionFlags.GenerateMipMaps\"/></strong>, this call has no effect.</p><p>All video adapters support generating mipmaps if you are using any of the following formats:</p><pre><code> <see cref=\"F:SharpDX.DXGI.Format.A8_UNorm\"/>\t\n            <see cref=\"F:SharpDX.DXGI.Format.R10G10B10A2_UNorm\"/>\t\n            <see cref=\"F:SharpDX.DXGI.Format.R11G11B10_Float\"/>\t\n            <see cref=\"F:SharpDX.DXGI.Format.R16_Float\"/>\t\n            <see cref=\"F:SharpDX.DXGI.Format.R16_SNorm\"/>\t\n            <see cref=\"F:SharpDX.DXGI.Format.R16_UNorm\"/>\t\n            <see cref=\"F:SharpDX.DXGI.Format.R16G16_Float\"/>\t\n            <see cref=\"F:SharpDX.DXGI.Format.R16G16_SNorm\"/>\t\n            <see cref=\"F:SharpDX.DXGI.Format.R16G16_UNorm\"/>\t\n            <see cref=\"F:SharpDX.DXGI.Format.R16G16B16A16_Float\"/>\t\n            <see cref=\"F:SharpDX.DXGI.Format.R16G16B16A16_SNorm\"/>\t\n            <see cref=\"F:SharpDX.DXGI.Format.R16G16B16A16_UNorm\"/>\t\n            <see cref=\"F:SharpDX.DXGI.Format.R32_Float\"/>\t\n            <see cref=\"F:SharpDX.DXGI.Format.R32G32_Float\"/>\t\n            <see cref=\"F:SharpDX.DXGI.Format.R32G32B32A32_Float\"/>\t\n            <see cref=\"F:SharpDX.DXGI.Format.R8_SNorm\"/>\t\n            <see cref=\"F:SharpDX.DXGI.Format.R8_UNorm\"/>\t\n            <see cref=\"F:SharpDX.DXGI.Format.R8G8_SNorm\"/>\t\n            <see cref=\"F:SharpDX.DXGI.Format.R8G8_UNorm\"/>\t\n            <see cref=\"F:SharpDX.DXGI.Format.R8G8B8A8_SNorm\"/>\t\n            <see cref=\"F:SharpDX.DXGI.Format.R8G8B8A8_UNorm\"/>\t\n            <see cref=\"F:SharpDX.DXGI.Format.R8G8B8A8_UNorm_SRgb\"/>\t\n            </code></pre><p>Some video adapters support generating mipmaps if you are using this format:</p><pre><code> <see cref=\"F:SharpDX.DXGI.Format.R32G32B32_Float\"/>\t\n            </code></pre><p>For all other unsupported formats, this method will silently fail.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::GenerateMips']/*\"/>\t\n            <msdn-id>ff476426</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::GenerateMips([In] ID3D11ShaderResourceView* pShaderResourceView)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::GenerateMips</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DeviceContext.SetMinimumLod(SharpDX.Direct3D11.Resource,System.Single)\">\n            <summary>\t\n            <p>Sets the minimum level-of-detail (LOD) for a resource.</p>\t\n            </summary>\t\n            <param name=\"resourceRef\"><dd>  <p>A reference to an <strong><see cref=\"T:SharpDX.Direct3D11.Resource\"/></strong> that represents the resource.</p> </dd></param>\t\n            <param name=\"minLOD\"><dd>  <p>The level-of-detail, which ranges between 0 and the maximum number of mipmap levels of the resource. For example, the maximum number of mipmap levels of a 1D texture is specified in the  <strong>MipLevels</strong> member of the  <strong><see cref=\"T:SharpDX.Direct3D11.Texture1DDescription\"/></strong> structure.</p> </dd></param>\t\n            <remarks>\t\n            <p>To use a resource with <strong>SetResourceMinLOD</strong>, you must set the <strong><see cref=\"F:SharpDX.Direct3D11.ResourceOptionFlags.ResourceClamp\"/></strong> flag when you create that resource.</p><p>For Direct3D 10 and Direct3D 10.1, when sampling from a texture resource in a shader, the sampler can define a minimum LOD clamp to force sampling from less detailed mip levels.  For Direct3D 11, this functionality is extended from the sampler to the entire resource. Therefore, the application can specify the highest-resolution mip level of a resource that is available for access. This restricts the set of mip levels that are required to be resident in GPU memory, thereby saving memory.</p><p>The set of mip levels resident per-resource in GPU memory can be specified by the user.</p><p>Minimum LOD affects all of the resident mip levels. Therefore, only the resident mip levels can be updated and read from.</p><p>All methods that access texture resources must adhere to minimum LOD clamps.</p><p>Empty-set accesses are handled as out-of-bounds cases.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::SetResourceMinLOD']/*\"/>\t\n            <msdn-id>ff476482</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::SetResourceMinLOD([In] ID3D11Resource* pResource,[In] float MinLOD)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::SetResourceMinLOD</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DeviceContext.GetMinimumLod(SharpDX.Direct3D11.Resource)\">\n            <summary>\t\n            <p>Gets the minimum level-of-detail (LOD).</p>\t\n            </summary>\t\n            <param name=\"resourceRef\"><dd>  <p>A reference to an <strong><see cref=\"T:SharpDX.Direct3D11.Resource\"/></strong> which represents the resource.</p> </dd></param>\t\n            <returns><p>Returns the minimum LOD.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::GetResourceMinLOD']/*\"/>\t\n            <msdn-id>ff476430</msdn-id>\t\n            <unmanaged>float ID3D11DeviceContext::GetResourceMinLOD([In] ID3D11Resource* pResource)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::GetResourceMinLOD</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DeviceContext.ResolveSubresource_(SharpDX.Direct3D11.Resource,System.Int32,SharpDX.Direct3D11.Resource,System.Int32,SharpDX.DXGI.Format)\">\n            <summary>\t\n            <p>Copy a multisampled resource into a non-multisampled resource.</p>\t\n            </summary>\t\n            <param name=\"dstResourceRef\"><dd>  <p>Destination resource. Must be a created with the <strong><see cref=\"F:SharpDX.Direct3D11.ResourceUsage.Default\"/></strong> flag and be single-sampled. See <strong><see cref=\"T:SharpDX.Direct3D11.Resource\"/></strong>.</p> </dd></param>\t\n            <param name=\"dstSubresource\"><dd>  <p>A zero-based index, that identifies the destination subresource. Use <strong>D3D11CalcSubresource</strong> to calculate the index.</p> </dd></param>\t\n            <param name=\"srcResourceRef\"><dd>  <p>Source resource. Must be multisampled.</p> </dd></param>\t\n            <param name=\"srcSubresource\"><dd>  <p>&gt;The source subresource of the source resource.</p> </dd></param>\t\n            <param name=\"format\"><dd>  <p>A <strong><see cref=\"T:SharpDX.DXGI.Format\"/></strong> that indicates how the multisampled resource will be resolved to a single-sampled resource.  See remarks.</p> </dd></param>\t\n            <remarks>\t\n            <p>This API is most useful when re-using the resulting rendertarget of one render pass as an input to a second render pass.</p><p>The source and destination resources must be the same resource type and have the same dimensions. In addition, they must have compatible formats. There are three scenarios for this:</p><table> <tr><th>Scenario</th><th>Requirements</th></tr> <tr><td>Source and destination are prestructured and typed</td><td>Both the source and destination must have identical formats and that format must be specified in the Format parameter.</td></tr> <tr><td>One resource is prestructured and typed and the other is prestructured and typeless</td><td>The typed resource must have a format that is compatible with the typeless resource (i.e. the typed resource is <see cref=\"F:SharpDX.DXGI.Format.R32_Float\"/> and the typeless resource is <see cref=\"F:SharpDX.DXGI.Format.R32_Typeless\"/>). The format of the typed resource must be specified in the Format parameter.</td></tr> <tr><td>Source and destination are prestructured and typeless</td><td>Both the source and desintation must have the same typeless format (i.e. both must have <see cref=\"F:SharpDX.DXGI.Format.R32_Typeless\"/>), and the Format parameter must specify a format that is compatible with the source and destination (i.e. if both are <see cref=\"F:SharpDX.DXGI.Format.R32_Typeless\"/> then <see cref=\"F:SharpDX.DXGI.Format.R32_Float\"/> could be specified in the Format parameter). <p>For example, given the <see cref=\"F:SharpDX.DXGI.Format.R16G16B16A16_Typeless\"/> format:</p> <ul> <li>The source (or dest) format could be <see cref=\"F:SharpDX.DXGI.Format.R16G16B16A16_UNorm\"/></li> <li>The dest (or source) format could be <see cref=\"F:SharpDX.DXGI.Format.R16G16B16A16_Float\"/></li> </ul> </td></tr> </table><p>?</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::ResolveSubresource']/*\"/>\t\n            <msdn-id>ff476474</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::ResolveSubresource([In] ID3D11Resource* pDstResource,[In] unsigned int DstSubresource,[In] ID3D11Resource* pSrcResource,[In] unsigned int SrcSubresource,[In] DXGI_FORMAT Format)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::ResolveSubresource</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DeviceContext.ExecuteCommandList(SharpDX.Direct3D11.CommandList,SharpDX.Bool)\">\n            <summary>\t\n            <p>Queues commands from a command list onto a device.</p>\t\n            </summary>\t\n            <param name=\"commandListRef\"><dd>  <p>A reference to an <strong><see cref=\"T:SharpDX.Direct3D11.CommandList\"/></strong> interface that encapsulates a command list.</p> </dd></param>\t\n            <param name=\"restoreContextState\"><dd>  <p>A Boolean flag that determines whether the immediate context state is saved prior to and restored after the execution of a command list. Use <strong>TRUE</strong> to indicate that the runtime needs to save and restore the state. Use <strong><see cref=\"F:SharpDX.Result.False\"/></strong> to indicate that no state shall be saved or restored, which causes the immediate context to  return to its default state after the command list executes. Applications should typically use <strong><see cref=\"F:SharpDX.Result.False\"/></strong> unless they will restore the state to be nearly equivalent to the state that the runtime would restore if <strong>TRUE</strong> were passed. When applications use <strong><see cref=\"F:SharpDX.Result.False\"/></strong>, they can avoid unnecessary and inefficient state transitions.</p> </dd></param>\t\n            <remarks>\t\n            <p>Use this method to play back a command list that was recorded by a deferred context on any thread.</p><p>This method performs some runtime validation related to queries. Queries that are begun in a device context cannot be manipulated indirectly by executing a command list (that is, Begin or End was invoked against the same query by the deferred context which generated the command list). If such a condition occurs, the ExecuteCommandList method does not execute the command list. However, the state of the device context is still maintained, as would be expected (<strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.ClearState\"/></strong> is performed, unless the application indicates to preserve the device context state).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::ExecuteCommandList']/*\"/>\t\n            <msdn-id>ff476423</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::ExecuteCommandList([In] ID3D11CommandList* pCommandList,[In] BOOL RestoreContextState)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::ExecuteCommandList</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DeviceContext.GetPredication(SharpDX.Bool@)\">\n            <summary>\t\n            <p>Get the rendering predicate state.</p>\t\n            </summary>\t\n            <param name=\"predicateValueRef\"><dd>  <p>Address of a boolean to fill with the predicate comparison value. <strong><see cref=\"F:SharpDX.Result.False\"/></strong> upon device creation.</p> </dd></param>\t\n            <remarks>\t\n            <p>Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::GetPredication']/*\"/>\t\n            <msdn-id>ff476429</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::GetPredication([Out, Optional] ID3D11Predicate** ppPredicate,[Out, Optional] BOOL* pPredicateValue)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::GetPredication</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DeviceContext.ClearState\">\n            <summary>\t\n            <p>Restore all default settings.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This method resets any device context to the default settings. This sets all input/output resource slots, shaders, input layouts, predications, scissor rectangles, depth-stencil state, rasterizer state, blend state, sampler state, and viewports to <strong><c>null</c></strong>. The primitive topology is set to UNDEFINED.</p><p>For a scenario where you would like to clear a list of commands recorded so far, call <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.FinishCommandListInternal(SharpDX.Bool,SharpDX.Direct3D11.CommandList@)\"/></strong> and throw away the resulting <strong><see cref=\"T:SharpDX.Direct3D11.CommandList\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::ClearState']/*\"/>\t\n            <msdn-id>ff476389</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::ClearState()</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::ClearState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DeviceContext.Flush\">\n            <summary>\t\n            <p>Sends queued-up commands in the command buffer to the graphics processing unit (GPU).</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Most applications don't need to call this method. If an application calls this method when not necessary, it incurs a performance penalty.  Each call to <strong>Flush</strong> incurs a significant amount of overhead.</p><p>When Microsoft Direct3D state-setting, present, or draw commands are called by an application, those commands are queued into an internal command buffer.  <strong>Flush</strong> sends those commands to the GPU for processing. Typically, the Direct3D runtime sends these commands to the GPU automatically whenever the runtime determines that  they need to be sent, such as when the command buffer is full or when an application maps a resource. <strong>Flush</strong> sends the commands manually.</p><p>We recommend that you use <strong>Flush</strong> when the CPU waits for an arbitrary amount of time (such as when  you call the <strong>Sleep</strong> function).</p><p>Because <strong>Flush</strong> operates asynchronously,  it can return either before or after the GPU finishes executing the queued graphics commands. However, the graphics commands eventually always complete. You can call the <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateQuery(SharpDX.Direct3D11.QueryDescription,SharpDX.Direct3D11.Query)\"/></strong> method with the <strong><see cref=\"F:SharpDX.Direct3D11.QueryType.Event\"/></strong> value to create an event query; you can then use that event query in a call to the <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.GetDataInternal(SharpDX.Direct3D11.Asynchronous,System.IntPtr,System.Int32,SharpDX.Direct3D11.AsynchronousFlags)\"/></strong> method to determine when the GPU is finished processing the graphics commands.\t\n            </p><p>Microsoft Direct3D?11 defers the destruction of objects. Therefore, an application can't rely upon objects immediately being destroyed. By calling <strong>Flush</strong>, you destroy any  objects whose destruction was deferred.  If an application requires synchronous destruction of an object, we recommend that the application release all its references, call <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.ClearState\"/></strong>, and then call <strong>Flush</strong>.</p>Deferred Destruction Issues with Flip Presentation Swap Chains<p>Direct3D?11 defers the destruction of objects like views and resources until it can efficiently destroy them. This deferred destruction can cause problems with flip presentation model swap chains. Flip presentation model swap chains have the <strong>DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL</strong> flag set. When you create a flip presentation model swap chain, you can associate only one swap chain at a time with an <strong><see cref=\"T:System.IntPtr\"/></strong>, <strong>IWindow</strong>, or composition surface. If an application attempts to destroy a flip presentation model swap chain and replace it with another swap chain, the original swap chain is not destroyed when the application immediately frees all of the original swap chain's references.</p><p>Most applications typically use the <strong><see cref=\"M:SharpDX.DXGI.SwapChain.ResizeBuffers(System.Int32,System.Int32,System.Int32,SharpDX.DXGI.Format,SharpDX.DXGI.SwapChainFlags)\"/></strong> method for the majority of scenarios where they replace new swap chain buffers for old swap chain buffers. However, if an application must actually destroy an old swap chain and create a new swap chain, the application must force the destruction of all objects that the application freed. To force the destruction, call <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.ClearState\"/></strong> (or otherwise ensure no views are bound to pipeline state), and then call <strong>Flush</strong> on the immediate context. You must force destruction before you call <strong>IDXGIFactory2::CreateSwapChainForHwnd</strong>, <strong>IDXGIFactory2::CreateSwapChainForImmersiveWindow</strong>, or <strong>IDXGIFactory2::CreateSwapChainForCompositionSurface</strong> again to create a new swap chain.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::Flush']/*\"/>\t\n            <msdn-id>ff476425</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::Flush()</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::Flush</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DeviceContext.GetTypeInfo\">\n            <summary>\t\n            <p>Gets the type of device context.</p>\t\n            </summary>\t\n            <returns><p>A member of <strong><see cref=\"T:SharpDX.Direct3D11.DeviceContextType\"/></strong> that indicates the type of device context.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::GetType']/*\"/>\t\n            <msdn-id>ff476431</msdn-id>\t\n            <unmanaged>D3D11_DEVICE_CONTEXT_TYPE ID3D11DeviceContext::GetType()</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::GetType</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DeviceContext.GetContextFlags\">\n            <summary>\t\n            <p>Gets the initialization flags associated with the current deferred context.</p>\t\n            </summary>\t\n            <returns>No documentation.</returns>\t\n            <remarks>\t\n            <p>The GetContextFlags method gets the flags that were supplied to the <em>ContextFlags</em> parameter of <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateDeferredContext(System.Int32,SharpDX.Direct3D11.DeviceContext)\"/></strong>; however, the context flag is reserved for future use.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::GetContextFlags']/*\"/>\t\n            <msdn-id>ff476427</msdn-id>\t\n            <unmanaged>unsigned int ID3D11DeviceContext::GetContextFlags()</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::GetContextFlags</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DeviceContext.FinishCommandListInternal(SharpDX.Bool,SharpDX.Direct3D11.CommandList@)\">\n            <summary>\t\n            <p>Create a command list and record graphics commands into it.</p>\t\n            </summary>\t\n            <param name=\"restoreDeferredContextState\"><dd>  <p>A Boolean flag that determines whether the runtime saves deferred context state before it executes  <strong>FinishCommandList</strong> and restores it afterwards. Use <strong>TRUE</strong> to indicate that the runtime needs to save and restore the state. Use <strong><see cref=\"F:SharpDX.Result.False\"/></strong> to indicate that the runtime will not save or restore any state. In this case, the deferred context will  return to its default state after the call to  <strong>FinishCommandList</strong> completes. For information about default state, see <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.ClearState\"/></strong>. Typically, use <strong><see cref=\"F:SharpDX.Result.False\"/></strong> unless you restore the state to be nearly equivalent to the state that the runtime would restore if you passed <strong>TRUE</strong>. When you use <strong><see cref=\"F:SharpDX.Result.False\"/></strong>, you can avoid unnecessary and inefficient state transitions.</p> <p><strong>Note</strong>??This parameter does not affect the command list that the current call to <strong>FinishCommandList</strong> returns. However, this parameter affects the command list of the next call to <strong>FinishCommandList</strong> on the same deferred context.</p> </dd></param>\t\n            <param name=\"commandListOut\"><dd>  <p>Upon completion of the method, the passed reference to an <strong><see cref=\"T:SharpDX.Direct3D11.CommandList\"/></strong> interface reference is initialized with the recorded command list information.</p> </dd></param>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful; otherwise, returns one of the following:</p><ul> <li>Returns <see cref=\"F:SharpDX.DXGI.ResultCode.DeviceRemoved\"/> if the video card has been physically removed from the system, or a driver upgrade for the video card has occurred. If this error occurs, you should destroy and recreate the device.</li> <li>Returns <see cref=\"F:SharpDX.DXGI.ResultCode.InvalidCall\"/> if <strong>FinishCommandList</strong> cannot be called from the current context. See remarks.</li> <li>Returns E_OUTOFMEMORY if the application has exhausted available memory.</li> </ul></returns>\t\n            <remarks>\t\n            <p>Create a command list from a deferred context and record commands into it by calling <strong>FinishCommandList</strong>. Play back a command list with an immediate context by calling <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.ExecuteCommandList(SharpDX.Direct3D11.CommandList,SharpDX.Bool)\"/></strong>.</p><p>Immediate context state is cleared before and after a command list is executed. A command list has no concept of inheritance. Each call to <strong>FinishCommandList</strong> will record only the state set since any previous call to  <strong>FinishCommandList</strong>.</p><p>For example, the state of a device context is its render state or pipeline state. To retrieve device context state, an application can call  <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.GetDataInternal(SharpDX.Direct3D11.Asynchronous,System.IntPtr,System.Int32,SharpDX.Direct3D11.AsynchronousFlags)\"/></strong> or  <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.GetPredication(SharpDX.Bool@)\"/></strong>.</p><p>For more information about how to use <strong>FinishCommandList</strong>, see How to: Record a Command List.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::FinishCommandList']/*\"/>\t\n            <msdn-id>ff476424</msdn-id>\t\n            <unmanaged>HRESULT ID3D11DeviceContext::FinishCommandList([In] BOOL RestoreDeferredContextState,[Out, Optional] ID3D11CommandList** ppCommandList)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::FinishCommandList</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.DeviceContext.VertexShader\">\n            <summary>Inner interface giving access to VertexShaderStage methods. </summary>\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.DeviceContext.PixelShader\">\n            <summary>Inner interface giving access to PixelShaderStage methods. </summary>\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.DeviceContext.InputAssembler\">\n            <summary>Inner interface giving access to InputAssemblerStage methods. </summary>\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.DeviceContext.GeometryShader\">\n            <summary>Inner interface giving access to GeometryShaderStage methods. </summary>\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.DeviceContext.OutputMerger\">\n            <summary>Inner interface giving access to OutputMergerStage methods. </summary>\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.DeviceContext.StreamOutput\">\n            <summary>Inner interface giving access to StreamOutputStage methods. </summary>\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.DeviceContext.Rasterizer\">\n            <summary>Inner interface giving access to RasterizerStage methods. </summary>\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.DeviceContext.HullShader\">\n            <summary>Inner interface giving access to HullShaderStage methods. </summary>\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.DeviceContext.DomainShader\">\n            <summary>Inner interface giving access to DomainShaderStage methods. </summary>\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.DeviceContext.ComputeShader\">\n            <summary>Inner interface giving access to ComputeShaderStage methods. </summary>\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.DeviceContext.TypeInfo\">\n            <summary>\t\n            <p>Gets the type of device context.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::GetType']/*\"/>\t\n            <msdn-id>ff476431</msdn-id>\t\n            <unmanaged>GetType</unmanaged>\t\n            <unmanaged-short>GetType</unmanaged-short>\t\n            <unmanaged>D3D11_DEVICE_CONTEXT_TYPE ID3D11DeviceContext::GetType()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.DeviceContext.ContextFlags\">\n            <summary>\t\n            <p>Gets the initialization flags associated with the current deferred context.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The GetContextFlags method gets the flags that were supplied to the <em>ContextFlags</em> parameter of <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateDeferredContext(System.Int32,SharpDX.Direct3D11.DeviceContext)\"/></strong>; however, the context flag is reserved for future use.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::GetContextFlags']/*\"/>\t\n            <msdn-id>ff476427</msdn-id>\t\n            <unmanaged>GetContextFlags</unmanaged>\t\n            <unmanaged-short>GetContextFlags</unmanaged-short>\t\n            <unmanaged>unsigned int ID3D11DeviceContext::GetContextFlags()</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.InputAssemblerStage\">\n            <summary>\t\n            <p>The <strong><see cref=\"T:SharpDX.Direct3D11.DeviceContext\"/></strong> interface represents a device context which generates rendering commands.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext']/*\"/>\t\n            <msdn-id>ff476385</msdn-id>\t\n            <unmanaged>ID3D11DeviceContext</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.InputAssemblerStage.IndexInputResourceSlotCount\">\n            <summary>Constant IndexInputResourceSlotCount.</summary>\n            <unmanaged>D3D11_IA_INDEX_INPUT_RESOURCE_SLOT_COUNT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.InputAssemblerStage.VertexIdBitCount\">\n            <summary>Constant VertexIdBitCount.</summary>\n            <unmanaged>D3D11_IA_VERTEX_ID_BIT_COUNT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.InputAssemblerStage.DefaultIndexBufferOffsetInBytes\">\n            <summary>Constant DefaultIndexBufferOffsetInBytes.</summary>\n            <unmanaged>D3D11_IA_DEFAULT_INDEX_BUFFER_OFFSET_IN_BYTES</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.InputAssemblerStage.DefaultPrimitiveTopology\">\n            <summary>Constant DefaultPrimitiveTopology.</summary>\n            <unmanaged>D3D11_IA_DEFAULT_PRIMITIVE_TOPOLOGY</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.InputAssemblerStage.IntegerArithmeticBitCount\">\n            <summary>Constant IntegerArithmeticBitCount.</summary>\n            <unmanaged>D3D11_IA_INTEGER_ARITHMETIC_BIT_COUNT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.InputAssemblerStage.VertexInputStructureElementsComponents\">\n            <summary>Constant VertexInputStructureElementsComponents.</summary>\n            <unmanaged>D3D11_IA_VERTEX_INPUT_STRUCTURE_ELEMENTS_COMPONENTS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.InputAssemblerStage.VertexInputStructureElementCount\">\n            <summary>Constant VertexInputStructureElementCount.</summary>\n            <unmanaged>D3D11_IA_VERTEX_INPUT_STRUCTURE_ELEMENT_COUNT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.InputAssemblerStage.PatchMaximumControlPointCount\">\n            <summary>Constant PatchMaximumControlPointCount.</summary>\n            <unmanaged>D3D11_IA_PATCH_MAX_CONTROL_POINT_COUNT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.InputAssemblerStage.DefaultVertexBufferOffsetInBytes\">\n            <summary>Constant DefaultVertexBufferOffsetInBytes.</summary>\n            <unmanaged>D3D11_IA_DEFAULT_VERTEX_BUFFER_OFFSET_IN_BYTES</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.InputAssemblerStage.InstanceIdBitCount\">\n            <summary>Constant InstanceIdBitCount.</summary>\n            <unmanaged>D3D11_IA_INSTANCE_ID_BIT_COUNT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.InputAssemblerStage.VertexInputResourceSlotCount\">\n            <summary>Constant VertexInputResourceSlotCount.</summary>\n            <unmanaged>D3D11_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.InputAssemblerStage.PrimitiveIdBitCount\">\n            <summary>Constant PrimitiveIdBitCount.</summary>\n            <unmanaged>D3D11_IA_PRIMITIVE_ID_BIT_COUNT</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.InputAssemblerStage.SetVertexBuffers(System.Int32,SharpDX.Direct3D11.VertexBufferBinding)\">\n            <summary>\n            <p>Bind a single vertex buffer to the input-assembler stage.</p>\t\n            </summary>\t\n            <param name=\"slot\"><dd>  <p>The first input slot for binding. The first vertex buffer is explicitly bound to the start slot; this causes each additional vertex buffer in the array to be implicitly bound to each subsequent input slot. The maximum of 16 or 32 input slots (ranges from 0 to <see cref=\"F:SharpDX.Direct3D11.InputAssemblerStage.VertexInputResourceSlotCount\"/> - 1) are available; the maximum number of input slots depends on the feature level.</p> </dd></param>\t\n            <param name=\"vertexBufferBinding\"><dd>  <p>A <see cref=\"T:SharpDX.Direct3D11.VertexBufferBinding\"/>. The vertex buffer must have been created with the <strong><see cref=\"F:SharpDX.Direct3D11.BindFlags.VertexBuffer\"/></strong> flag.</p> </dd></param>        /// <remarks>\t\n            <p>For information about creating vertex buffers, see Create a Vertex Buffer.</p><p>Calling this method using a buffer that is currently bound for writing (i.e. bound to the stream output pipeline stage) will effectively bind <strong><c>null</c></strong> instead because a buffer cannot be bound as both an input and an output at the same time.</p><p>The debug layer will generate a warning whenever a resource is prevented from being bound simultaneously as an input and an output, but this will not prevent invalid data from being used by the runtime.</p><p> The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. </p>\t\n            </remarks>\t\n            <msdn-id>ff476456</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::IASetVertexBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[In, Buffer] const void* ppVertexBuffers,[In, Buffer] const void* pStrides,[In, Buffer] const void* pOffsets)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::IASetVertexBuffers</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.InputAssemblerStage.SetVertexBuffers(System.Int32,SharpDX.Direct3D11.VertexBufferBinding[])\">\n            <summary>\n            <p>Bind an array of vertex buffers to the input-assembler stage.</p>\t\n            </summary>\t\n            <param name=\"firstSlot\"><dd>  <p>The first input slot for binding. The first vertex buffer is explicitly bound to the start slot; this causes each additional vertex buffer in the array to be implicitly bound to each subsequent input slot. The maximum of 16 or 32 input slots (ranges from 0 to <see cref=\"F:SharpDX.Direct3D11.InputAssemblerStage.VertexInputResourceSlotCount\"/> - 1) are available; the maximum number of input slots depends on the feature level.</p> </dd></param>\t\n            <param name=\"vertexBufferBindings\"><dd>  <p>A reference to an array of <see cref=\"T:SharpDX.Direct3D11.VertexBufferBinding\"/>. The vertex buffers must have been created with the <strong><see cref=\"F:SharpDX.Direct3D11.BindFlags.VertexBuffer\"/></strong> flag.</p> </dd></param>        /// <remarks>\t\n            <p>For information about creating vertex buffers, see Create a Vertex Buffer.</p><p>Calling this method using a buffer that is currently bound for writing (i.e. bound to the stream output pipeline stage) will effectively bind <strong><c>null</c></strong> instead because a buffer cannot be bound as both an input and an output at the same time.</p><p>The debug layer will generate a warning whenever a resource is prevented from being bound simultaneously as an input and an output, but this will not prevent invalid data from being used by the runtime.</p><p> The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. </p>\t\n            </remarks>\t\n            <msdn-id>ff476456</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::IASetVertexBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[In, Buffer] const void* ppVertexBuffers,[In, Buffer] const void* pStrides,[In, Buffer] const void* pOffsets)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::IASetVertexBuffers</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.InputAssemblerStage.SetVertexBuffers(System.Int32,SharpDX.Direct3D11.Buffer[],System.Int32[],System.Int32[])\">\n            <summary>\n            <p>Bind an array of vertex buffers to the input-assembler stage.</p>\t\n            </summary>\t\n            <param name=\"slot\"><dd>  <p>The first input slot for binding. The first vertex buffer is explicitly bound to the start slot; this causes each additional vertex buffer in the array to be implicitly bound to each subsequent input slot. The maximum of 16 or 32 input slots (ranges from 0 to <see cref=\"F:SharpDX.Direct3D11.InputAssemblerStage.VertexInputResourceSlotCount\"/> - 1) are available; the maximum number of input slots depends on the feature level.</p> </dd></param>\t\n            <param name=\"vertexBuffers\"><dd>  <p>A reference to an array of vertex buffers (see <strong><see cref=\"T:SharpDX.Direct3D11.Buffer\"/></strong>). The vertex buffers must have been created with the <strong><see cref=\"F:SharpDX.Direct3D11.BindFlags.VertexBuffer\"/></strong> flag.</p> </dd></param>\t\n            <param name=\"stridesRef\"><dd>  <p>Pointer to an array of stride values; one stride value for each buffer in the vertex-buffer array. Each stride is the size (in bytes) of the elements that are to be used from that vertex buffer.</p> </dd></param>\t\n            <param name=\"offsetsRef\"><dd>  <p>Pointer to an array of offset values; one offset value for each buffer in the vertex-buffer array. Each offset is the number of bytes between the first element of a vertex buffer and the first element that will be used.</p> </dd></param>\t\n            <remarks>\t\n            <p>For information about creating vertex buffers, see Create a Vertex Buffer.</p><p>Calling this method using a buffer that is currently bound for writing (i.e. bound to the stream output pipeline stage) will effectively bind <strong><c>null</c></strong> instead because a buffer cannot be bound as both an input and an output at the same time.</p><p>The debug layer will generate a warning whenever a resource is prevented from being bound simultaneously as an input and an output, but this will not prevent invalid data from being used by the runtime.</p><p> The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. </p>\t\n            </remarks>\t\n            <msdn-id>ff476456</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::IASetVertexBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[In, Buffer] const void* ppVertexBuffers,[In, Buffer] const void* pStrides,[In, Buffer] const void* pOffsets)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::IASetVertexBuffers</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.InputAssemblerStage.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D11.InputAssemblerStage\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.InputAssemblerStage.op_Explicit(System.IntPtr)~SharpDX.Direct3D11.InputAssemblerStage\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D11.InputAssemblerStage\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.InputAssemblerStage.SetInputLayout(SharpDX.Direct3D11.InputLayout)\">\n            <summary>\t\n            <p>Bind an input-layout object to the input-assembler stage.</p>\t\n            </summary>\t\n            <param name=\"inputLayoutRef\"><dd>  <p>A reference to the input-layout object (see <strong><see cref=\"T:SharpDX.Direct3D11.InputLayout\"/></strong>), which describes the input buffers that will be read by the IA stage.</p> </dd></param>\t\n            <remarks>\t\n            <p>Input-layout objects describe how vertex buffer data is streamed into the IA pipeline stage. To create an input-layout object, call <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateInputLayout(SharpDX.Direct3D11.InputElement[],System.Int32,System.IntPtr,SharpDX.PointerSize,SharpDX.Direct3D11.InputLayout)\"/></strong>.</p><p> The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::IASetInputLayout']/*\"/>\t\n            <msdn-id>ff476454</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::IASetInputLayout([In, Optional] ID3D11InputLayout* pInputLayout)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::IASetInputLayout</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.InputAssemblerStage.SetVertexBuffers(System.Int32,System.Int32,System.IntPtr,System.IntPtr,System.IntPtr)\">\n            <summary>\t\n            <p>Bind an array of vertex buffers to the input-assembler stage.</p>\t\n            </summary>\t\n            <param name=\"startSlot\"><dd>  <p>The first input slot for binding. The first vertex buffer is explicitly bound to the start slot; this causes each additional vertex buffer in the array to be implicitly bound to each subsequent input slot. The maximum of 16 or 32 input slots (ranges from 0 to <see cref=\"F:SharpDX.Direct3D11.InputAssemblerStage.VertexInputResourceSlotCount\"/> - 1) are available; the maximum number of input slots depends on the feature level.</p> </dd></param>\t\n            <param name=\"numBuffers\"><dd>  <p>The number of vertex buffers in the array. The number of buffers (plus the starting slot) cannot exceed the total number of IA-stage input slots (ranges from 0 to <see cref=\"F:SharpDX.Direct3D11.InputAssemblerStage.VertexInputResourceSlotCount\"/> - StartSlot).</p> </dd></param>\t\n            <param name=\"vertexBuffersOut\"><dd>  <p>A reference to an array of vertex buffers (see <strong><see cref=\"T:SharpDX.Direct3D11.Buffer\"/></strong>). The vertex buffers must have been created with the <strong><see cref=\"F:SharpDX.Direct3D11.BindFlags.VertexBuffer\"/></strong> flag.</p> </dd></param>\t\n            <param name=\"stridesRef\"><dd>  <p>Pointer to an array of stride values; one stride value for each buffer in the vertex-buffer array. Each stride is the size (in bytes) of the elements that are to be used from that vertex buffer.</p> </dd></param>\t\n            <param name=\"offsetsRef\"><dd>  <p>Pointer to an array of offset values; one offset value for each buffer in the vertex-buffer array. Each offset is the number of bytes between the first element of a vertex buffer and the first element that will be used.</p> </dd></param>\t\n            <remarks>\t\n            <p>For information about creating vertex buffers, see Create a Vertex Buffer.</p><p>Calling this method using a buffer that is currently bound for writing (i.e. bound to the stream output pipeline stage) will effectively bind <strong><c>null</c></strong> instead because a buffer cannot be bound as both an input and an output at the same time.</p><p>The debug layer will generate a warning whenever a resource is prevented from being bound simultaneously as an input and an output, but this will not prevent invalid data from being used by the runtime.</p><p> The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::IASetVertexBuffers']/*\"/>\t\n            <msdn-id>ff476456</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::IASetVertexBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[In, Buffer] const void* ppVertexBuffers,[In, Buffer] const void* pStrides,[In, Buffer] const void* pOffsets)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::IASetVertexBuffers</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.InputAssemblerStage.SetIndexBuffer(SharpDX.Direct3D11.Buffer,SharpDX.DXGI.Format,System.Int32)\">\n            <summary>\t\n            <p>Bind an index buffer to the input-assembler stage.</p>\t\n            </summary>\t\n            <param name=\"indexBufferRef\"><dd>  <p>A reference to an <strong><see cref=\"T:SharpDX.Direct3D11.Buffer\"/></strong> object, that contains indices. The index buffer must have been created with  the <strong><see cref=\"F:SharpDX.Direct3D11.BindFlags.IndexBuffer\"/></strong> flag.</p> </dd></param>\t\n            <param name=\"format\"><dd>  <p>A <strong><see cref=\"T:SharpDX.DXGI.Format\"/></strong> that specifies the format of the data in the index buffer. The only formats allowed for index  buffer data are 16-bit (<see cref=\"F:SharpDX.DXGI.Format.R16_UInt\"/>) and 32-bit (<see cref=\"F:SharpDX.DXGI.Format.R32_UInt\"/>) integers.</p> </dd></param>\t\n            <param name=\"offset\"><dd>  <p>Offset (in bytes) from the start of the index buffer to the first index to use.</p> </dd></param>\t\n            <remarks>\t\n            <p>For information about creating index buffers, see How to: Create an Index Buffer.</p><p>Calling this method using a buffer that is currently bound for writing (i.e. bound to the stream output pipeline stage) will effectively bind  <strong><c>null</c></strong> instead because a buffer cannot be bound as both an input and an output at the same time.</p><p>The debug layer will generate a warning whenever a resource is prevented from being bound simultaneously as an input and an output, but this will  not prevent invalid data from being used by the runtime.</p><p> The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::IASetIndexBuffer']/*\"/>\t\n            <msdn-id>ff476453</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::IASetIndexBuffer([In, Optional] ID3D11Buffer* pIndexBuffer,[In] DXGI_FORMAT Format,[In] unsigned int Offset)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::IASetIndexBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.InputAssemblerStage.SetPrimitiveTopology(SharpDX.Direct3D.PrimitiveTopology)\">\n            <summary>\t\n            <p>Bind information about the primitive type, and data order that describes input data for the input assembler stage.</p>\t\n            </summary>\t\n            <param name=\"topology\"><dd>  <p>The type of primitive and ordering of the primitive data (see <strong>D3D11_PRIMITIVE_TOPOLOGY</strong>).</p> </dd></param>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::IASetPrimitiveTopology']/*\"/>\t\n            <msdn-id>ff476455</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::IASetPrimitiveTopology([In] D3D_PRIMITIVE_TOPOLOGY Topology)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::IASetPrimitiveTopology</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.InputAssemblerStage.GetInputLayout(SharpDX.Direct3D11.InputLayout@)\">\n            <summary>\t\n            <p>Get a reference to the input-layout object that is bound to the input-assembler stage.</p>\t\n            </summary>\t\n            <param name=\"inputLayoutOut\"><dd>  <p>A reference to the input-layout object (see <strong><see cref=\"T:SharpDX.Direct3D11.InputLayout\"/></strong>), which describes the input buffers that will be read by the IA stage.</p> </dd></param>\t\n            <remarks>\t\n            <p>For information about creating an input-layout object, see Creating the Input-Layout Object.</p><p>Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::IAGetInputLayout']/*\"/>\t\n            <msdn-id>ff476450</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::IAGetInputLayout([Out] ID3D11InputLayout** ppInputLayout)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::IAGetInputLayout</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.InputAssemblerStage.GetVertexBuffers(System.Int32,System.Int32,SharpDX.Direct3D11.Buffer[],System.Int32[],System.Int32[])\">\n            <summary>\t\n            <p>Get the vertex buffers bound to the input-assembler stage.</p>\t\n            </summary>\t\n            <param name=\"startSlot\"><dd>  <p>The input slot of the first vertex buffer to get. The first vertex buffer is explicitly bound to the start slot; this causes each additional vertex buffer in the array to be implicitly bound to each subsequent input slot. The maximum of 16 or 32 input slots (ranges from 0 to <see cref=\"F:SharpDX.Direct3D11.InputAssemblerStage.VertexInputResourceSlotCount\"/> - 1) are available; the maximum number of input slots depends on the feature level.</p> </dd></param>\t\n            <param name=\"numBuffers\"><dd>  <p>The number of vertex buffers to get starting at the offset. The number of buffers (plus the starting slot) cannot exceed the total number of IA-stage input slots.</p> </dd></param>\t\n            <param name=\"vertexBuffersOut\"><dd>  <p>A reference to an array of vertex buffers returned by the method (see <strong><see cref=\"T:SharpDX.Direct3D11.Buffer\"/></strong>).</p> </dd></param>\t\n            <param name=\"stridesRef\"><dd>  <p>Pointer to an array of stride values returned by the method; one stride value for each buffer in the vertex-buffer array. Each stride value is the size (in bytes) of the elements that are to be used from that vertex buffer.</p> </dd></param>\t\n            <param name=\"offsetsRef\"><dd>  <p>Pointer to an array of offset values returned by the method; one offset value for each buffer in the vertex-buffer array. Each offset is the number of bytes between the first element of a vertex buffer and the first element that will be used.</p> </dd></param>\t\n            <remarks>\t\n            <p>Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::IAGetVertexBuffers']/*\"/>\t\n            <msdn-id>ff476452</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::IAGetVertexBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[Out, Buffer, Optional] ID3D11Buffer** ppVertexBuffers,[Out, Buffer, Optional] unsigned int* pStrides,[Out, Buffer, Optional] unsigned int* pOffsets)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::IAGetVertexBuffers</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.InputAssemblerStage.GetIndexBuffer(SharpDX.Direct3D11.Buffer@,SharpDX.DXGI.Format@,System.Int32@)\">\n            <summary>\t\n            <p>Get a reference to the index buffer that is bound to the input-assembler stage.</p>\t\n            </summary>\t\n            <param name=\"indexBufferRef\"><dd>  <p>A reference to an index buffer returned by the method (see <strong><see cref=\"T:SharpDX.Direct3D11.Buffer\"/></strong>).</p> </dd></param>\t\n            <param name=\"format\"><dd>  <p>Specifies format of the data in the index buffer (see <strong><see cref=\"T:SharpDX.DXGI.Format\"/></strong>). These formats provide the size and type of  the data in the buffer. The only formats allowed for index buffer data are 16-bit (<see cref=\"F:SharpDX.DXGI.Format.R16_UInt\"/>) and 32-bit (<see cref=\"F:SharpDX.DXGI.Format.R32_UInt\"/>)  integers.</p> </dd></param>\t\n            <param name=\"offset\"><dd>  <p>Offset (in bytes) from the start of the index buffer, to the first index to use.</p> </dd></param>\t\n            <remarks>\t\n            <p>Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces  when they are no longer needed to avoid memory leaks.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::IAGetIndexBuffer']/*\"/>\t\n            <msdn-id>ff476449</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::IAGetIndexBuffer([Out, Optional] ID3D11Buffer** pIndexBuffer,[Out, Optional] DXGI_FORMAT* Format,[Out, Optional] unsigned int* Offset)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::IAGetIndexBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.InputAssemblerStage.GetPrimitiveTopology(SharpDX.Direct3D.PrimitiveTopology@)\">\n            <summary>\t\n            <p>Get information about the primitive type, and data order that describes input data for the input assembler stage.</p>\t\n            </summary>\t\n            <param name=\"topologyRef\"><dd>  <p>A reference to the type of primitive, and ordering of the primitive data (see <strong>D3D11_PRIMITIVE_TOPOLOGY</strong>).</p> </dd></param>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::IAGetPrimitiveTopology']/*\"/>\t\n            <msdn-id>ff476451</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::IAGetPrimitiveTopology([Out] D3D_PRIMITIVE_TOPOLOGY* pTopology)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::IAGetPrimitiveTopology</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.InputAssemblerStage.InputLayout\">\n            <summary>\t\n            <p>Get or sets a reference to the input-layout object that is bound to the input-assembler stage.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>For information about creating an input-layout object, see Creating the Input-Layout Object.</p><p>Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::IAGetInputLayout']/*\"/>\t\n            <msdn-id>ff476450</msdn-id>\t\n            <unmanaged>IAGetInputLayout / IASetInputLayout</unmanaged>\t\n            <unmanaged-short>IAGetInputLayout</unmanaged-short>\t\n            <unmanaged>void ID3D11DeviceContext::IAGetInputLayout([Out] ID3D11InputLayout** ppInputLayout)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.InputAssemblerStage.PrimitiveTopology\">\n            <summary>\t\n            <p>Get or sets information about the primitive type, and data order that describes input data for the input assembler stage.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::IAGetPrimitiveTopology']/*\"/>\t\n            <msdn-id>ff476451</msdn-id>\t\n            <unmanaged>IAGetPrimitiveTopology / IASetPrimitiveTopology</unmanaged>\t\n            <unmanaged-short>IAGetPrimitiveTopology</unmanaged-short>\t\n            <unmanaged>void ID3D11DeviceContext::IAGetPrimitiveTopology([Out] D3D_PRIMITIVE_TOPOLOGY* pTopology)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.OutputMergerStage\">\n            <summary>\t\n            <p>The <strong><see cref=\"T:SharpDX.Direct3D11.DeviceContext\"/></strong> interface represents a device context which generates rendering commands.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext']/*\"/>\t\n            <msdn-id>ff476385</msdn-id>\t\n            <unmanaged>ID3D11DeviceContext</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.OutputMergerStage.GetRenderTargets(SharpDX.Direct3D11.DepthStencilView@)\">\n            <summary>\t\n            Get references to the render targets that are available to the {{output-merger stage}}.\t\n            </summary>\t\n            <remarks>\t\n            Any returned interfaces will have their reference count incremented by one. Applications should call {{IUnknown::Release}} on the returned interfaces when they are no longer needed to avoid memory leaks. \t\n            </remarks>\t\n            <returns>a depth-stencil view (see <see cref=\"T:SharpDX.Direct3D11.DepthStencilView\"/>) to be filled with the depth-stencil information from the device.</returns>\n            <unmanaged>void OMGetRenderTargets([In] int NumViews,[Out, Buffer, Optional] ID3D10RenderTargetView** ppRenderTargetViews,[Out, Optional] ID3D10DepthStencilView** ppDepthStencilView)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.OutputMergerStage.GetRenderTargets(System.Int32)\">\n            <summary>\t\n            Get references to the render targets that are available to the {{output-merger stage}}.\t\n            </summary>\t\n            <remarks>\t\n            Any returned interfaces will have their reference count incremented by one. Applications should call {{IUnknown::Release}} on the returned interfaces when they are no longer needed to avoid memory leaks. \t\n            </remarks>\t\n            <param name=\"numViews\">Number of render targets to retrieve. </param>\n            <returns>an array of render targets views (see <see cref=\"T:SharpDX.Direct3D11.RenderTargetView\"/>) to be filled with the render targets from the device.</returns>\n            <unmanaged>void OMGetRenderTargets([In] int NumViews,[Out, Buffer, Optional] ID3D10RenderTargetView** ppRenderTargetViews,[Out, Optional] ID3D10DepthStencilView** ppDepthStencilView)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.OutputMergerStage.GetRenderTargets(System.Int32,SharpDX.Direct3D11.DepthStencilView@)\">\n            <summary>\t\n            Get references to the render targets and the depth-stencil buffer that are available to the {{output-merger stage}}.\t\n            </summary>\t\n            <remarks>\t\n            Any returned interfaces will have their reference count incremented by one. Applications should call {{IUnknown::Release}} on the returned interfaces when they are no longer needed to avoid memory leaks. \t\n            </remarks>\t\n            <param name=\"numViews\">Number of render targets to retrieve. </param>\n            <param name=\"depthStencilViewRef\">Pointer to a depth-stencil view (see <see cref=\"T:SharpDX.Direct3D11.DepthStencilView\"/>) to be filled with the depth-stencil information from the device.</param>\n            <returns>an array of render targets views (see <see cref=\"T:SharpDX.Direct3D11.RenderTargetView\"/>) to be filled with the render targets from the device.</returns>\n            <unmanaged>void OMGetRenderTargets([In] int NumViews,[Out, Buffer, Optional] ID3D10RenderTargetView** ppRenderTargetViews,[Out, Optional] ID3D10DepthStencilView** ppDepthStencilView)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.OutputMergerStage.GetBlendState(SharpDX.Color4@,System.Int32@)\">\n            <summary>\t\n            Get the {{blend state}} of the output-merger stage.\t\n            </summary>\t\n            <remarks>\t\n            The reference count of the returned interface will be incremented by one when the blend state is retrieved. Applications must release returned reference(s) when they are no longer needed, or else there will be a memory leak. \t\n            </remarks>\t\n            <param name=\"blendFactor\">Array of blend factors, one for each RGBA component. </param>\n            <param name=\"sampleMaskRef\">Pointer to a {{sample mask}}. </param>\n            <returns>a reference to a blend-state interface (see <see cref=\"T:SharpDX.Direct3D11.BlendState\"/>).</returns>\n            <unmanaged>void OMGetBlendState([Out, Optional] ID3D10BlendState** ppBlendState,[Out, Optional] float BlendFactor[4],[Out, Optional] int* pSampleMask)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.OutputMergerStage.GetDepthStencilState(System.Int32@)\">\n            <summary>\t\n            Gets the {{depth-stencil}} state of the output-merger stage.\t\n            </summary>\t\n            <remarks>\t\n            Any returned interfaces will have their reference count incremented by one. Applications should call {{IUnknown::Release}} on the returned interfaces when they are no longer needed to avoid memory leaks. \t\n            </remarks>\t\n            <param name=\"stencilRefRef\">Pointer to the stencil reference value used in the {{depth-stencil}} test. </param>\n            <returns>a reference to a depth-stencil state interface (see <see cref=\"T:SharpDX.Direct3D11.DepthStencilState\"/>) to be filled with information from the device.</returns>\n            <unmanaged>void OMGetDepthStencilState([Out, Optional] ID3D10DepthStencilState** ppDepthStencilState,[Out, Optional] int* pStencilRef)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.OutputMergerStage.GetUnorderedAccessViews(System.Int32,System.Int32)\">\n            <summary>\t\n            Gets an array of views for an unordered resource.\t\n            </summary>\t\n            <remarks>\t\n            Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks. \t\n            </remarks>\t\n            <param name=\"startSlot\">Index of the first element in the zero-based array to return (ranges from 0 to D3D11_PS_CS_UAV_REGISTER_COUNT - 1). </param>\n            <param name=\"count\">Number of views to get (ranges from 0 to D3D11_PS_CS_UAV_REGISTER_COUNT - StartSlot). </param>\n            <unmanaged>void OMGetRenderTargetsAndUnorderedAccessViews([In] int NumRTVs,[Out, Buffer, Optional] ID3D11RenderTargetView** ppRenderTargetViews,[Out, Optional] ID3D11DepthStencilView** ppDepthStencilView,[In] int UAVStartSlot,[In] int NumUAVs,[Out, Buffer, Optional] ID3D11UnorderedAccessView** ppUnorderedAccessViews)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.OutputMergerStage.ResetTargets\">\n            <summary>\n              Unbinds all depth-stencil buffer and render targets from the output-merger stage.\n            </summary>\n            <msdn-id>ff476464</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::OMSetRenderTargets([In] unsigned int NumViews,[In] const void** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::OMSetRenderTargets</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.OutputMergerStage.SetTargets(SharpDX.Direct3D11.RenderTargetView[])\">\n            <summary>\t\n            <p>Bind one or more render targets atomically and the depth-stencil buffer to the output-merger stage.</p>\t\n            </summary>\t\n            <param name = \"renderTargetViews\">A set of render target views to bind.</param>\n            <remarks>\t\n            <p>The maximum number of active render targets a device can have active at any given time is set by a #define in D3D11.h called  D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT. It is invalid to try to set the same subresource to multiple render target slots.  Any render targets not defined by this call are set to <strong><c>null</c></strong>.</p><p>If any subresources are also currently bound for reading in a different stage or writing (perhaps in a different part of the pipeline),  those bind points will be set to <strong><c>null</c></strong>, in order to prevent the same subresource from being read and written simultaneously in a single rendering operation.</p><p> The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. </p><p>If the render-target views were created from an array resource type, then all of the render-target views must have the same array size.   This restriction also applies to the depth-stencil view, its array size must match that of the render-target views being bound.</p><p>The pixel shader must be able to simultaneously render to at least eight separate render targets. All of these render targets must access the same type of resource: Buffer, Texture1D, Texture1DArray, Texture2D, Texture2DArray, Texture3D, or TextureCube. All render targets must have the same size in all dimensions (width and height, and depth for 3D or array size for *Array types). If render targets use multisample anti-aliasing, all bound render targets and depth buffer must be the same form of multisample resource (that is, the sample counts must be the same). Each render target can have a different data format. These render target formats are not required to have identical bit-per-element counts.</p><p>Any combination of the eight slots for render targets can have a render target set or not set.</p><p>The same resource view cannot be bound to multiple render target slots simultaneously. However, you can set multiple non-overlapping resource views of a single resource as simultaneous multiple render targets.</p>\t\n            </remarks>\t\n            <msdn-id>ff476464</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::OMSetRenderTargets([In] unsigned int NumViews,[In] const void** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::OMSetRenderTargets</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.OutputMergerStage.SetTargets(SharpDX.Direct3D11.RenderTargetView)\">\n            <summary>\t\n              Binds a single render target to the output-merger stage.\n            </summary>\t\n            <param name = \"renderTargetView\">A view of the render target to bind.</param>\n            <remarks>\t\n            <p>The maximum number of active render targets a device can have active at any given time is set by a #define in D3D11.h called  D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT. It is invalid to try to set the same subresource to multiple render target slots.  Any render targets not defined by this call are set to <strong><c>null</c></strong>.</p><p>If any subresources are also currently bound for reading in a different stage or writing (perhaps in a different part of the pipeline),  those bind points will be set to <strong><c>null</c></strong>, in order to prevent the same subresource from being read and written simultaneously in a single rendering operation.</p><p> The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. </p><p>If the render-target views were created from an array resource type, then all of the render-target views must have the same array size.   This restriction also applies to the depth-stencil view, its array size must match that of the render-target views being bound.</p><p>The pixel shader must be able to simultaneously render to at least eight separate render targets. All of these render targets must access the same type of resource: Buffer, Texture1D, Texture1DArray, Texture2D, Texture2DArray, Texture3D, or TextureCube. All render targets must have the same size in all dimensions (width and height, and depth for 3D or array size for *Array types). If render targets use multisample anti-aliasing, all bound render targets and depth buffer must be the same form of multisample resource (that is, the sample counts must be the same). Each render target can have a different data format. These render target formats are not required to have identical bit-per-element counts.</p><p>Any combination of the eight slots for render targets can have a render target set or not set.</p><p>The same resource view cannot be bound to multiple render target slots simultaneously. However, you can set multiple non-overlapping resource views of a single resource as simultaneous multiple render targets.</p>\t\n            </remarks>\t\n            <msdn-id>ff476464</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::OMSetRenderTargets([In] unsigned int NumViews,[In] const void** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::OMSetRenderTargets</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.OutputMergerStage.SetTargets(SharpDX.Direct3D11.DepthStencilView,SharpDX.Direct3D11.RenderTargetView[])\">\n            <summary>\n              Binds a depth-stencil buffer and a set of render targets to the output-merger stage.\n            </summary>\n            <param name = \"depthStencilView\">A view of the depth-stencil buffer to bind.</param>\n            <param name = \"renderTargetViews\">A set of render target views to bind.</param>\n            <remarks>\t\n            <p>The maximum number of active render targets a device can have active at any given time is set by a #define in D3D11.h called  D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT. It is invalid to try to set the same subresource to multiple render target slots.  Any render targets not defined by this call are set to <strong><c>null</c></strong>.</p><p>If any subresources are also currently bound for reading in a different stage or writing (perhaps in a different part of the pipeline),  those bind points will be set to <strong><c>null</c></strong>, in order to prevent the same subresource from being read and written simultaneously in a single rendering operation.</p><p> The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. </p><p>If the render-target views were created from an array resource type, then all of the render-target views must have the same array size.   This restriction also applies to the depth-stencil view, its array size must match that of the render-target views being bound.</p><p>The pixel shader must be able to simultaneously render to at least eight separate render targets. All of these render targets must access the same type of resource: Buffer, Texture1D, Texture1DArray, Texture2D, Texture2DArray, Texture3D, or TextureCube. All render targets must have the same size in all dimensions (width and height, and depth for 3D or array size for *Array types). If render targets use multisample anti-aliasing, all bound render targets and depth buffer must be the same form of multisample resource (that is, the sample counts must be the same). Each render target can have a different data format. These render target formats are not required to have identical bit-per-element counts.</p><p>Any combination of the eight slots for render targets can have a render target set or not set.</p><p>The same resource view cannot be bound to multiple render target slots simultaneously. However, you can set multiple non-overlapping resource views of a single resource as simultaneous multiple render targets.</p>\t\n            </remarks>\t\n            <msdn-id>ff476464</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::OMSetRenderTargets([In] unsigned int NumViews,[In] const void** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::OMSetRenderTargets</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.OutputMergerStage.SetTargets(SharpDX.Direct3D11.DepthStencilView,SharpDX.Direct3D11.RenderTargetView)\">\n            <summary>\n              Binds a depth-stencil buffer and a single render target to the output-merger stage.\n            </summary>\n            <param name = \"depthStencilView\">A view of the depth-stencil buffer to bind.</param>\n            <param name = \"renderTargetView\">A view of the render target to bind.</param>\n            <remarks>\t\n            <p>The maximum number of active render targets a device can have active at any given time is set by a #define in D3D11.h called  D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT. It is invalid to try to set the same subresource to multiple render target slots.  Any render targets not defined by this call are set to <strong><c>null</c></strong>.</p><p>If any subresources are also currently bound for reading in a different stage or writing (perhaps in a different part of the pipeline),  those bind points will be set to <strong><c>null</c></strong>, in order to prevent the same subresource from being read and written simultaneously in a single rendering operation.</p><p> The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. </p><p>If the render-target views were created from an array resource type, then all of the render-target views must have the same array size.   This restriction also applies to the depth-stencil view, its array size must match that of the render-target views being bound.</p><p>The pixel shader must be able to simultaneously render to at least eight separate render targets. All of these render targets must access the same type of resource: Buffer, Texture1D, Texture1DArray, Texture2D, Texture2DArray, Texture3D, or TextureCube. All render targets must have the same size in all dimensions (width and height, and depth for 3D or array size for *Array types). If render targets use multisample anti-aliasing, all bound render targets and depth buffer must be the same form of multisample resource (that is, the sample counts must be the same). Each render target can have a different data format. These render target formats are not required to have identical bit-per-element counts.</p><p>Any combination of the eight slots for render targets can have a render target set or not set.</p><p>The same resource view cannot be bound to multiple render target slots simultaneously. However, you can set multiple non-overlapping resource views of a single resource as simultaneous multiple render targets.</p>\t\n            </remarks>\t\n            <msdn-id>ff476464</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::OMSetRenderTargets([In] unsigned int NumViews,[In] const void** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::OMSetRenderTargets</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.OutputMergerStage.SetTargets(SharpDX.Direct3D11.DepthStencilView,SharpDX.ComArray{SharpDX.Direct3D11.RenderTargetView})\">\n            <summary>\n              Binds a depth-stencil buffer and a set of render targets to the output-merger stage.\n            </summary>\n            <param name = \"depthStencilView\">A view of the depth-stencil buffer to bind.</param>\n            <param name = \"renderTargetViews\">A set of render target views to bind.</param>\n            <unmanaged>void ID3D11DeviceContext::OMSetRenderTargets([In] unsigned int NumViews,[In, Buffer, Optional] const ID3D11RenderTargetView** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView)</unmanaged>\t\n            <remarks>\t\n            <p>The maximum number of active render targets a device can have active at any given time is set by a #define in D3D11.h called  D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT. It is invalid to try to set the same subresource to multiple render target slots.  Any render targets not defined by this call are set to <strong><c>null</c></strong>.</p><p>If any subresources are also currently bound for reading in a different stage or writing (perhaps in a different part of the pipeline),  those bind points will be set to <strong><c>null</c></strong>, in order to prevent the same subresource from being read and written simultaneously in a single rendering operation.</p><p> The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. </p><p>If the render-target views were created from an array resource type, then all of the render-target views must have the same array size.   This restriction also applies to the depth-stencil view, its array size must match that of the render-target views being bound.</p><p>The pixel shader must be able to simultaneously render to at least eight separate render targets. All of these render targets must access the same type of resource: Buffer, Texture1D, Texture1DArray, Texture2D, Texture2DArray, Texture3D, or TextureCube. All render targets must have the same size in all dimensions (width and height, and depth for 3D or array size for *Array types). If render targets use multisample anti-aliasing, all bound render targets and depth buffer must be the same form of multisample resource (that is, the sample counts must be the same). Each render target can have a different data format. These render target formats are not required to have identical bit-per-element counts.</p><p>Any combination of the eight slots for render targets can have a render target set or not set.</p><p>The same resource view cannot be bound to multiple render target slots simultaneously. However, you can set multiple non-overlapping resource views of a single resource as simultaneous multiple render targets.</p>\t\n            </remarks>\t\n            <msdn-id>ff476464</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::OMSetRenderTargets([In] unsigned int NumViews,[In] const void** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::OMSetRenderTargets</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.OutputMergerStage.SetTargets(SharpDX.ComArray{SharpDX.Direct3D11.RenderTargetView})\">\n            <summary>\n              Binds a set of render targets to the output-merger stage and clear the depth stencil view.\n            </summary>\n            <param name = \"renderTargetViews\">A set of render target views to bind.</param>\n            <unmanaged>void ID3D11DeviceContext::OMSetRenderTargets([In] unsigned int NumViews,[In, Buffer, Optional] const ID3D11RenderTargetView** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView)</unmanaged>\t\n            <remarks>\t\n            <p>The maximum number of active render targets a device can have active at any given time is set by a #define in D3D11.h called  D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT. It is invalid to try to set the same subresource to multiple render target slots.  Any render targets not defined by this call are set to <strong><c>null</c></strong>.</p><p>If any subresources are also currently bound for reading in a different stage or writing (perhaps in a different part of the pipeline),  those bind points will be set to <strong><c>null</c></strong>, in order to prevent the same subresource from being read and written simultaneously in a single rendering operation.</p><p> The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. </p><p>If the render-target views were created from an array resource type, then all of the render-target views must have the same array size.   This restriction also applies to the depth-stencil view, its array size must match that of the render-target views being bound.</p><p>The pixel shader must be able to simultaneously render to at least eight separate render targets. All of these render targets must access the same type of resource: Buffer, Texture1D, Texture1DArray, Texture2D, Texture2DArray, Texture3D, or TextureCube. All render targets must have the same size in all dimensions (width and height, and depth for 3D or array size for *Array types). If render targets use multisample anti-aliasing, all bound render targets and depth buffer must be the same form of multisample resource (that is, the sample counts must be the same). Each render target can have a different data format. These render target formats are not required to have identical bit-per-element counts.</p><p>Any combination of the eight slots for render targets can have a render target set or not set.</p><p>The same resource view cannot be bound to multiple render target slots simultaneously. However, you can set multiple non-overlapping resource views of a single resource as simultaneous multiple render targets.</p>\t\n            </remarks>\t\n            <msdn-id>ff476464</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::OMSetRenderTargets([In] unsigned int NumViews,[In] const void** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::OMSetRenderTargets</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.OutputMergerStage.SetTargets(SharpDX.Direct3D11.RenderTargetView,System.Int32,SharpDX.Direct3D11.UnorderedAccessView[])\">\n            <summary>\n              Binds a set of unordered access views and a single render target to the output-merger stage.\n            </summary>\n            <param name = \"startSlot\">Index into a zero-based array to begin setting unordered access views.</param>\n            <param name = \"unorderedAccessViews\">A set of unordered access views to bind.</param>\n            <param name = \"renderTargetView\">A view of the render target to bind.</param>\n            <msdn-id>ff476465</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews([In] unsigned int NumRTVs,[In, Buffer, Optional] const ID3D11RenderTargetView** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView,[In] unsigned int UAVStartSlot,[In] unsigned int NumUAVs,[In, Buffer, Optional] const ID3D11UnorderedAccessView** ppUnorderedAccessViews,[In, Buffer, Optional] const unsigned int* pUAVInitialCounts)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.OutputMergerStage.SetTargets(System.Int32,SharpDX.Direct3D11.UnorderedAccessView[],SharpDX.Direct3D11.RenderTargetView[])\">\n            <summary>\n              Binds a set of unordered access views and a set of render targets to the output-merger stage.\n            </summary>\n            <param name = \"startSlot\">Index into a zero-based array to begin setting unordered access views.</param>\n            <param name = \"unorderedAccessViews\">A set of unordered access views to bind.</param>\n            <param name = \"renderTargetViews\">A set of render target views to bind.</param>\n            <msdn-id>ff476465</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews([In] unsigned int NumRTVs,[In, Buffer, Optional] const ID3D11RenderTargetView** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView,[In] unsigned int UAVStartSlot,[In] unsigned int NumUAVs,[In, Buffer, Optional] const ID3D11UnorderedAccessView** ppUnorderedAccessViews,[In, Buffer, Optional] const unsigned int* pUAVInitialCounts)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.OutputMergerStage.SetTargets(SharpDX.Direct3D11.DepthStencilView,SharpDX.Direct3D11.RenderTargetView,System.Int32,SharpDX.Direct3D11.UnorderedAccessView[])\">\n            <summary>\n              Binds a depth-stencil buffer, a set of unordered access views, and a single render target to the output-merger stage.\n            </summary>\n            <param name = \"depthStencilView\">A view of the depth-stencil buffer to bind.</param>\n            <param name = \"startSlot\">Index into a zero-based array to begin setting unordered access views.</param>\n            <param name = \"unorderedAccessViews\">A set of unordered access views to bind.</param>\n            <param name = \"renderTargetView\">A view of the render target to bind.</param>\n            <msdn-id>ff476465</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews([In] unsigned int NumRTVs,[In, Buffer, Optional] const ID3D11RenderTargetView** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView,[In] unsigned int UAVStartSlot,[In] unsigned int NumUAVs,[In, Buffer, Optional] const ID3D11UnorderedAccessView** ppUnorderedAccessViews,[In, Buffer, Optional] const unsigned int* pUAVInitialCounts)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.OutputMergerStage.SetTargets(SharpDX.Direct3D11.DepthStencilView,System.Int32,SharpDX.Direct3D11.UnorderedAccessView[],SharpDX.Direct3D11.RenderTargetView[])\">\n            <summary>\n              Binds a depth-stencil buffer, a set of unordered access views, and a set of render targets to the output-merger stage.\n            </summary>\n            <param name = \"depthStencilView\">A view of the depth-stencil buffer to bind.</param>\n            <param name = \"startSlot\">Index into a zero-based array to begin setting unordered access views.</param>\n            <param name = \"unorderedAccessViews\">A set of unordered access views to bind.</param>\n            <param name = \"renderTargetViews\">A set of render target views to bind.</param>\n            <msdn-id>ff476465</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews([In] unsigned int NumRTVs,[In, Buffer, Optional] const ID3D11RenderTargetView** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView,[In] unsigned int UAVStartSlot,[In] unsigned int NumUAVs,[In, Buffer, Optional] const ID3D11UnorderedAccessView** ppUnorderedAccessViews,[In, Buffer, Optional] const unsigned int* pUAVInitialCounts)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.OutputMergerStage.SetTargets(SharpDX.Direct3D11.RenderTargetView,System.Int32,SharpDX.Direct3D11.UnorderedAccessView[],System.Int32[])\">\n            <summary>\n              Binds a set of unordered access views and a single render target to the output-merger stage.\n            </summary>\n            <param name = \"startSlot\">Index into a zero-based array to begin setting unordered access views.</param>\n            <param name = \"unorderedAccessViews\">A set of unordered access views to bind.</param>\n            <param name = \"renderTargetView\">A view of the render target to bind.</param>\n            <param name = \"initialLengths\">An array of Append/Consume buffer offsets. A value of -1 indicates the current offset should be kept. Any other values set the hidden counter for that Appendable/Consumeable UAV.</param>\n            <msdn-id>ff476465</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews([In] unsigned int NumRTVs,[In, Buffer, Optional] const ID3D11RenderTargetView** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView,[In] unsigned int UAVStartSlot,[In] unsigned int NumUAVs,[In, Buffer, Optional] const ID3D11UnorderedAccessView** ppUnorderedAccessViews,[In, Buffer, Optional] const unsigned int* pUAVInitialCounts)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.OutputMergerStage.SetTargets(System.Int32,SharpDX.Direct3D11.UnorderedAccessView[],System.Int32[],SharpDX.Direct3D11.RenderTargetView[])\">\n            <summary>\n              Binds a set of unordered access views and a set of render targets to the output-merger stage.\n            </summary>\n            <param name = \"startSlot\">Index into a zero-based array to begin setting unordered access views.</param>\n            <param name = \"unorderedAccessViews\">A set of unordered access views to bind.</param>\n            <param name = \"renderTargetViews\">A set of render target views to bind.</param>\n            <param name = \"initialLengths\">An array of Append/Consume buffer offsets. A value of -1 indicates the current offset should be kept. Any other values set the hidden counter for that Appendable/Consumeable UAV.</param>\n            <msdn-id>ff476465</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews([In] unsigned int NumRTVs,[In, Buffer, Optional] const ID3D11RenderTargetView** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView,[In] unsigned int UAVStartSlot,[In] unsigned int NumUAVs,[In, Buffer, Optional] const ID3D11UnorderedAccessView** ppUnorderedAccessViews,[In, Buffer, Optional] const unsigned int* pUAVInitialCounts)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.OutputMergerStage.SetTargets(SharpDX.Direct3D11.DepthStencilView,SharpDX.Direct3D11.RenderTargetView,System.Int32,SharpDX.Direct3D11.UnorderedAccessView[],System.Int32[])\">\n            <summary>\n              Binds a depth-stencil buffer, a set of unordered access views, and a single render target to the output-merger stage.\n            </summary>\n            <param name = \"depthStencilView\">A view of the depth-stencil buffer to bind.</param>\n            <param name = \"startSlot\">Index into a zero-based array to begin setting unordered access views.</param>\n            <param name = \"unorderedAccessViews\">A set of unordered access views to bind.</param>\n            <param name = \"renderTargetView\">A view of the render target to bind.</param>\n            <param name = \"initialLengths\">An array of Append/Consume buffer offsets. A value of -1 indicates the current offset should be kept. Any other values set the hidden counter for that Appendable/Consumeable UAV.</param>\n            <msdn-id>ff476465</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews([In] unsigned int NumRTVs,[In, Buffer, Optional] const ID3D11RenderTargetView** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView,[In] unsigned int UAVStartSlot,[In] unsigned int NumUAVs,[In, Buffer, Optional] const ID3D11UnorderedAccessView** ppUnorderedAccessViews,[In, Buffer, Optional] const unsigned int* pUAVInitialCounts)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.OutputMergerStage.SetTargets(SharpDX.Direct3D11.DepthStencilView,System.Int32,SharpDX.Direct3D11.UnorderedAccessView[],System.Int32[],SharpDX.Direct3D11.RenderTargetView[])\">\n            <summary>\n              Binds a depth-stencil buffer, a set of unordered access views, and a set of render targets to the output-merger stage.\n            </summary>\n            <param name = \"depthStencilView\">A view of the depth-stencil buffer to bind.</param>\n            <param name = \"startSlot\">Index into a zero-based array to begin setting unordered access views.</param>\n            <param name = \"unorderedAccessViews\">A set of unordered access views to bind.</param>\n            <param name = \"renderTargetViews\">A set of render target views to bind.</param>\n            <param name = \"initialLengths\">An array of Append/Consume buffer offsets. A value of -1 indicates the current offset should be kept. Any other values set the hidden counter for that Appendable/Consumeable UAV.</param>\n            <msdn-id>ff476465</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews([In] unsigned int NumRTVs,[In, Buffer, Optional] const ID3D11RenderTargetView** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView,[In] unsigned int UAVStartSlot,[In] unsigned int NumUAVs,[In, Buffer, Optional] const ID3D11UnorderedAccessView** ppUnorderedAccessViews,[In, Buffer, Optional] const unsigned int* pUAVInitialCounts)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.OutputMergerStage.SetRenderTargets(System.Int32,SharpDX.Direct3D11.RenderTargetView[],SharpDX.Direct3D11.DepthStencilView)\">\n            <unmanaged>void ID3D11DeviceContext::OMSetRenderTargets([In] unsigned int NumViews,[In, Buffer, Optional] const ID3D11RenderTargetView** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView)</unmanaged>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.OutputMergerStage.SetUnorderedAccessView(System.Int32,SharpDX.Direct3D11.UnorderedAccessView)\">\n            <summary>\t\n            Sets an array of views for an unordered resource.\t\n            </summary>\t\n            <remarks>\t\n            </remarks>\t\n            <param name=\"startSlot\">Index of the first element in the zero-based array to begin setting. </param>\n            <param name=\"unorderedAccessView\">A reference to an <see cref=\"T:SharpDX.Direct3D11.UnorderedAccessView\"/> references to be set by the method. </param>\n            <msdn-id>ff476465</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews([In] unsigned int NumRTVs,[In, Buffer, Optional] const ID3D11RenderTargetView** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView,[In] unsigned int UAVStartSlot,[In] unsigned int NumUAVs,[In, Buffer, Optional] const ID3D11UnorderedAccessView** ppUnorderedAccessViews,[In, Buffer, Optional] const unsigned int* pUAVInitialCounts)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.OutputMergerStage.SetUnorderedAccessView(System.Int32,SharpDX.Direct3D11.UnorderedAccessView,System.Int32)\">\n            <summary>\t\n            Sets an array of views for an unordered resource.\t\n            </summary>\t\n            <remarks>\t\n            </remarks>\t\n            <param name=\"startSlot\">Index of the first element in the zero-based array to begin setting. </param>\n            <param name=\"unorderedAccessView\">A reference to an <see cref=\"T:SharpDX.Direct3D11.UnorderedAccessView\"/> references to be set by the method. </param>\n            <param name=\"uavInitialCount\">An Append/Consume buffer offsets. A value of -1 indicates the current offset should be kept.   Any other values set the hidden counter for that Appendable/Consumeable UAV. uAVInitialCount is only relevant for UAVs which have the <see cref=\"T:SharpDX.Direct3D11.UnorderedAccessViewBufferFlags\"/> flag,  otherwise the argument is ignored. </param>\n            <msdn-id>ff476465</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews([In] unsigned int NumRTVs,[In, Buffer, Optional] const ID3D11RenderTargetView** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView,[In] unsigned int UAVStartSlot,[In] unsigned int NumUAVs,[In, Buffer, Optional] const ID3D11UnorderedAccessView** ppUnorderedAccessViews,[In, Buffer, Optional] const unsigned int* pUAVInitialCounts)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.OutputMergerStage.SetUnorderedAccessViews(System.Int32,SharpDX.Direct3D11.UnorderedAccessView[])\">\n            <summary>\t\n            Sets an array of views for an unordered resource.\t\n            </summary>\t\n            <remarks>\t\n            </remarks>\t\n            <param name=\"startSlot\">Index of the first element in the zero-based array to begin setting. </param>\n            <param name=\"unorderedAccessViews\">A reference to an array of <see cref=\"T:SharpDX.Direct3D11.UnorderedAccessView\"/> references to be set by the method. </param>\n            <msdn-id>ff476465</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews([In] unsigned int NumRTVs,[In, Buffer, Optional] const ID3D11RenderTargetView** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView,[In] unsigned int UAVStartSlot,[In] unsigned int NumUAVs,[In, Buffer, Optional] const ID3D11UnorderedAccessView** ppUnorderedAccessViews,[In, Buffer, Optional] const unsigned int* pUAVInitialCounts)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.OutputMergerStage.SetUnorderedAccessViews(System.Int32,SharpDX.Direct3D11.UnorderedAccessView[],System.Int32[])\">\n            <summary>\t\n            Sets an array of views for an unordered resource.\t\n            </summary>\t\n            <remarks>\t\n            </remarks>\t\n            <param name=\"startSlot\">Index of the first element in the zero-based array to begin setting. </param>\n            <param name=\"unorderedAccessViews\">A reference to an array of <see cref=\"T:SharpDX.Direct3D11.UnorderedAccessView\"/> references to be set by the method. </param>\n            <param name=\"uavInitialCounts\">An array of Append/Consume buffer offsets. A value of -1 indicates the current offset should be kept.   Any other values set the hidden counter for that Appendable/Consumeable UAV.  pUAVInitialCounts is only relevant for UAVs which have the <see cref=\"T:SharpDX.Direct3D11.UnorderedAccessViewBufferFlags\"/> flag,  otherwise the argument is ignored. </param>\n            <msdn-id>ff476465</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews([In] unsigned int NumRTVs,[In, Buffer, Optional] const ID3D11RenderTargetView** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView,[In] unsigned int UAVStartSlot,[In] unsigned int NumUAVs,[In, Buffer, Optional] const ID3D11UnorderedAccessView** ppUnorderedAccessViews,[In, Buffer, Optional] const unsigned int* pUAVInitialCounts)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.OutputMergerStage.SetRenderTargetsAndUnorderedAccessViews(System.Int32,SharpDX.Direct3D11.RenderTargetView[],SharpDX.Direct3D11.DepthStencilView,System.Int32,System.Int32,SharpDX.Direct3D11.UnorderedAccessView[],System.Int32[])\">\n            <summary>\t\n            <p>Binds resources to the output-merger stage.</p>\t\n            </summary>\t\n            <param name=\"numRTVs\"><dd>  <p>Number of render-target views (<em>ppRenderTargetViews</em>) and depth-stencil view (<em>ppDepthStencilView</em>)  to bind. If you set <em>NumViews</em> to D3D11_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL (0xffffffff), this method does not modify the currently bound render-target views (RTVs) and also does not modify depth-stencil view (DSV).</p> </dd></param>\t\n            <param name=\"renderTargetViewsOut\"><dd>  <p>Pointer to an array of <strong><see cref=\"T:SharpDX.Direct3D11.RenderTargetView\"/></strong>s, which represent render-target views. Specify <strong><c>null</c></strong> to set none.</p> </dd></param>\t\n            <param name=\"depthStencilViewRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D11.DepthStencilView\"/></strong>, which represents a depth-stencil view. Specify <strong><c>null</c></strong> to set none.</p> </dd></param>\t\n            <param name=\"uAVStartSlot\"><dd>  <p>Index into a zero-based array to begin setting unordered-access views (ranges from 0 to <see cref=\"F:SharpDX.Direct3D11.ComputeShaderStage.UnorderedAccessViewSlotCount\"/> - 1).</p> <p> For the Direct3D 11.1 runtime, which is available starting with Windows Developer Preview, this value can range from 0 to D3D11_1_UAV_SLOT_COUNT - 1. D3D11_1_UAV_SLOT_COUNT is defined as 64.</p> <p>For pixel shaders, <em>UAVStartSlot</em> should be equal to the number of render-target views being bound. </p> </dd></param>\t\n            <param name=\"numUAVs\"><dd>  <p>Number of unordered-access views (UAVs) in <em>ppUnorderedAccessView</em>. If you set <em>NumUAVs</em> to D3D11_KEEP_UNORDERED_ACCESS_VIEWS (0xffffffff), this method does not modify the currently bound unordered-access views.</p> <p>For the Direct3D 11.1 runtime, which is available starting with Windows Developer Preview, this value can range from 0 to D3D11_1_UAV_SLOT_COUNT - <em>UAVStartSlot</em>.</p> </dd></param>\t\n            <param name=\"unorderedAccessViewsOut\"><dd>  <p>Pointer to an array of <strong><see cref=\"T:SharpDX.Direct3D11.UnorderedAccessView\"/></strong>s, which represent unordered-access views.</p> </dd></param>\t\n            <param name=\"uAVInitialCountsRef\"><dd>  <p>An array of append and consume buffer offsets. A value of -1 indicates to keep the current offset. Any other values set the hidden counter  for that appendable and consumable UAV. <em>pUAVInitialCounts</em> is  relevant only for UAVs that were created with either  <strong><see cref=\"F:SharpDX.Direct3D11.UnorderedAccessViewBufferFlags.Append\"/></strong> or <strong><see cref=\"F:SharpDX.Direct3D11.UnorderedAccessViewBufferFlags.Counter\"/></strong> specified  when the UAV was created; otherwise, the argument is ignored.</p> </dd></param>\t\n            <remarks>\t\n            <p>For pixel shaders, the render targets and unordered-access views share the same resource slots when being written out. This means that UAVs must be  given an offset so that they are placed in the slots after the render target views that are being bound. </p><p><strong>Note</strong>??RTVs, DSV, and UAVs cannot be set independently; they all need to be set at the same time.</p><p>Two RTVs conflict if they share a subresource (and therefore share the same resource).</p><p>Two UAVs conflict if they share a subresource (and therefore share the same resource).</p><p>An RTV conflicts with a UAV if they share a subresource or share a bind point.</p><p><strong>OMSetRenderTargetsAndUnorderedAccessViews</strong> operates properly in the following situations:</p><ol> <li> <p><em>NumViews</em> != D3D11_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL and <em>NumUAVs</em> != D3D11_KEEP_UNORDERED_ACCESS_VIEWS</p> <p>The following conditions must be true for <strong>OMSetRenderTargetsAndUnorderedAccessViews</strong> to succeed and for the runtime to pass the bind information to the driver:</p> <ul> <li><em>NumViews</em> &lt;= 8</li> <li><em>UAVStartSlot</em> &gt;= <em>NumViews</em></li> <li><em>UAVStartSlot</em> + <em>NumUAVs</em> &lt;= 8</li> <li>There must be no conflicts in the set of all <em>ppRenderTargetViews</em> and <em>ppUnorderedAccessView</em>.</li> <li><em>ppDepthStencilView</em> must match the render-target views. For more information about resource views, see Introduction to a Resource in Direct3D 11.</li> </ul> <p><strong>OMSetRenderTargetsAndUnorderedAccessViews</strong> performs the following tasks:</p> <ul> <li>Unbinds all currently bound conflicting resources (stream-output target resources (SOTargets), compute shader (CS) UAVs, shader-resource views (SRVs)).</li> <li>Binds <em>ppRenderTargetViews</em>, <em>ppDepthStencilView</em>, and <em>ppUnorderedAccessView</em>.</li> </ul> </li> <li> <p><em>NumViews</em> == D3D11_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL </p> <p>In this situation, <strong>OMSetRenderTargetsAndUnorderedAccessViews</strong> binds only UAVs. </p> <p>The following conditions must be true for <strong>OMSetRenderTargetsAndUnorderedAccessViews</strong> to succeed and for the runtime to pass the bind information to the driver:</p> <ul> <li><em>UAVStartSlot</em> + <em>NumUAVs</em> &lt;= 8</li> <li>There must be no conflicts in <em>ppUnorderedAccessView</em>.</li> </ul> <p><strong>OMSetRenderTargetsAndUnorderedAccessViews</strong> unbinds the following items:</p> <ul> <li>All RTVs in slots &gt;= <em>UAVStartSlot</em></li> <li>All RTVs that conflict with any UAVs in <em>ppUnorderedAccessView</em></li> <li>All currently bound resources (SOTargets, CS UAVs, SRVs) that conflict with <em>ppUnorderedAccessView</em></li> </ul> <p><strong>OMSetRenderTargetsAndUnorderedAccessViews</strong> binds <em>ppUnorderedAccessView</em>.</p> <p><strong>OMSetRenderTargetsAndUnorderedAccessViews</strong> ignores <em>ppDepthStencilView</em>, and the current depth-stencil view remains bound.</p> </li> <li> <p><em>NumUAVs</em> == D3D11_KEEP_UNORDERED_ACCESS_VIEWS</p> <p>In this situation, <strong>OMSetRenderTargetsAndUnorderedAccessViews</strong> binds only RTVs and DSV. </p> <p>The following conditions must be true for <strong>OMSetRenderTargetsAndUnorderedAccessViews</strong> to succeed and for the runtime to pass the bind information to the driver:</p> <ul> <li><em>NumViews</em> &lt;= 8</li> <li>There must be no conflicts in <em>ppRenderTargetViews</em>.</li> <li><em>ppDepthStencilView</em> must match the render-target views. For more information about resource views, see Introduction to a Resource in Direct3D 11.</li> </ul> <p><strong>OMSetRenderTargetsAndUnorderedAccessViews</strong> unbinds the following items:</p> <ul> <li>All UAVs in slots &lt; <em>NumViews</em></li> <li>All UAVs that conflict with any RTVs in <em>ppRenderTargetViews</em></li> <li>All currently bound resources (SOTargets, CS UAVs, SRVs) that conflict with <em>ppRenderTargetViews</em></li> </ul> <p><strong>OMSetRenderTargetsAndUnorderedAccessViews</strong> binds <em>ppRenderTargetViews</em> and <em>ppDepthStencilView</em>.</p> <p><strong>OMSetRenderTargetsAndUnorderedAccessViews</strong> ignores <em>UAVStartSlot</em>.</p> </li> </ol>\t\n            </remarks>\t\n            <msdn-id>ff476465</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews([In] unsigned int NumRTVs,[In, Buffer, Optional] const ID3D11RenderTargetView** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView,[In] unsigned int UAVStartSlot,[In] unsigned int NumUAVs,[In, Buffer, Optional] const ID3D11UnorderedAccessView** ppUnorderedAccessViews,[In, Buffer, Optional] const unsigned int* pUAVInitialCounts)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.OutputMergerStage.SetRenderTargetsAndUnorderedAccessViews(System.Int32,SharpDX.ComArray{SharpDX.Direct3D11.RenderTargetView},SharpDX.Direct3D11.DepthStencilView,System.Int32,System.Int32,SharpDX.ComArray{SharpDX.Direct3D11.UnorderedAccessView},System.Int32[])\">\n            <summary>\t\n            <p>Binds resources to the output-merger stage.</p>\t\n            </summary>\t\n            <param name=\"numRTVs\"><dd>  <p>Number of render-target views (<em>ppRenderTargetViews</em>) and depth-stencil view (<em>ppDepthStencilView</em>)  to bind. If you set <em>NumViews</em> to D3D11_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL (0xffffffff), this method does not modify the currently bound render-target views (RTVs) and also does not modify depth-stencil view (DSV).</p> </dd></param>\t\n            <param name=\"renderTargetViewsOut\"><dd>  <p>Pointer to an array of <strong><see cref=\"T:SharpDX.Direct3D11.RenderTargetView\"/></strong>s, which represent render-target views. Specify <strong><c>null</c></strong> to set none.</p> </dd></param>\t\n            <param name=\"depthStencilViewRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D11.DepthStencilView\"/></strong>, which represents a depth-stencil view. Specify <strong><c>null</c></strong> to set none.</p> </dd></param>\t\n            <param name=\"uAVStartSlot\"><dd>  <p>Index into a zero-based array to begin setting unordered-access views (ranges from 0 to <see cref=\"F:SharpDX.Direct3D11.ComputeShaderStage.UnorderedAccessViewSlotCount\"/> - 1).</p> <p> For the Direct3D 11.1 runtime, which is available starting with Windows Developer Preview, this value can range from 0 to D3D11_1_UAV_SLOT_COUNT - 1. D3D11_1_UAV_SLOT_COUNT is defined as 64.</p> <p>For pixel shaders, <em>UAVStartSlot</em> should be equal to the number of render-target views being bound. </p> </dd></param>\t\n            <param name=\"numUAVs\"><dd>  <p>Number of unordered-access views (UAVs) in <em>ppUnorderedAccessView</em>. If you set <em>NumUAVs</em> to D3D11_KEEP_UNORDERED_ACCESS_VIEWS (0xffffffff), this method does not modify the currently bound unordered-access views.</p> <p>For the Direct3D 11.1 runtime, which is available starting with Windows Developer Preview, this value can range from 0 to D3D11_1_UAV_SLOT_COUNT - <em>UAVStartSlot</em>.</p> </dd></param>\t\n            <param name=\"unorderedAccessViewsOut\"><dd>  <p>Pointer to an array of <strong><see cref=\"T:SharpDX.Direct3D11.UnorderedAccessView\"/></strong>s, which represent unordered-access views.</p> </dd></param>\t\n            <param name=\"uAVInitialCountsRef\"><dd>  <p>An array of append and consume buffer offsets. A value of -1 indicates to keep the current offset. Any other values set the hidden counter  for that appendable and consumable UAV. <em>pUAVInitialCounts</em> is  relevant only for UAVs that were created with either  <strong><see cref=\"F:SharpDX.Direct3D11.UnorderedAccessViewBufferFlags.Append\"/></strong> or <strong><see cref=\"F:SharpDX.Direct3D11.UnorderedAccessViewBufferFlags.Counter\"/></strong> specified  when the UAV was created; otherwise, the argument is ignored.</p> </dd></param>\t\n            <remarks>\t\n            <p>For pixel shaders, the render targets and unordered-access views share the same resource slots when being written out. This means that UAVs must be  given an offset so that they are placed in the slots after the render target views that are being bound. </p><p><strong>Note</strong>??RTVs, DSV, and UAVs cannot be set independently; they all need to be set at the same time.</p><p>Two RTVs conflict if they share a subresource (and therefore share the same resource).</p><p>Two UAVs conflict if they share a subresource (and therefore share the same resource).</p><p>An RTV conflicts with a UAV if they share a subresource or share a bind point.</p><p><strong>OMSetRenderTargetsAndUnorderedAccessViews</strong> operates properly in the following situations:</p><ol> <li> <p><em>NumViews</em> != D3D11_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL and <em>NumUAVs</em> != D3D11_KEEP_UNORDERED_ACCESS_VIEWS</p> <p>The following conditions must be true for <strong>OMSetRenderTargetsAndUnorderedAccessViews</strong> to succeed and for the runtime to pass the bind information to the driver:</p> <ul> <li><em>NumViews</em> &lt;= 8</li> <li><em>UAVStartSlot</em> &gt;= <em>NumViews</em></li> <li><em>UAVStartSlot</em> + <em>NumUAVs</em> &lt;= 8</li> <li>There must be no conflicts in the set of all <em>ppRenderTargetViews</em> and <em>ppUnorderedAccessView</em>.</li> <li><em>ppDepthStencilView</em> must match the render-target views. For more information about resource views, see Introduction to a Resource in Direct3D 11.</li> </ul> <p><strong>OMSetRenderTargetsAndUnorderedAccessViews</strong> performs the following tasks:</p> <ul> <li>Unbinds all currently bound conflicting resources (stream-output target resources (SOTargets), compute shader (CS) UAVs, shader-resource views (SRVs)).</li> <li>Binds <em>ppRenderTargetViews</em>, <em>ppDepthStencilView</em>, and <em>ppUnorderedAccessView</em>.</li> </ul> </li> <li> <p><em>NumViews</em> == D3D11_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL </p> <p>In this situation, <strong>OMSetRenderTargetsAndUnorderedAccessViews</strong> binds only UAVs. </p> <p>The following conditions must be true for <strong>OMSetRenderTargetsAndUnorderedAccessViews</strong> to succeed and for the runtime to pass the bind information to the driver:</p> <ul> <li><em>UAVStartSlot</em> + <em>NumUAVs</em> &lt;= 8</li> <li>There must be no conflicts in <em>ppUnorderedAccessView</em>.</li> </ul> <p><strong>OMSetRenderTargetsAndUnorderedAccessViews</strong> unbinds the following items:</p> <ul> <li>All RTVs in slots &gt;= <em>UAVStartSlot</em></li> <li>All RTVs that conflict with any UAVs in <em>ppUnorderedAccessView</em></li> <li>All currently bound resources (SOTargets, CS UAVs, SRVs) that conflict with <em>ppUnorderedAccessView</em></li> </ul> <p><strong>OMSetRenderTargetsAndUnorderedAccessViews</strong> binds <em>ppUnorderedAccessView</em>.</p> <p><strong>OMSetRenderTargetsAndUnorderedAccessViews</strong> ignores <em>ppDepthStencilView</em>, and the current depth-stencil view remains bound.</p> </li> <li> <p><em>NumUAVs</em> == D3D11_KEEP_UNORDERED_ACCESS_VIEWS</p> <p>In this situation, <strong>OMSetRenderTargetsAndUnorderedAccessViews</strong> binds only RTVs and DSV. </p> <p>The following conditions must be true for <strong>OMSetRenderTargetsAndUnorderedAccessViews</strong> to succeed and for the runtime to pass the bind information to the driver:</p> <ul> <li><em>NumViews</em> &lt;= 8</li> <li>There must be no conflicts in <em>ppRenderTargetViews</em>.</li> <li><em>ppDepthStencilView</em> must match the render-target views. For more information about resource views, see Introduction to a Resource in Direct3D 11.</li> </ul> <p><strong>OMSetRenderTargetsAndUnorderedAccessViews</strong> unbinds the following items:</p> <ul> <li>All UAVs in slots &lt; <em>NumViews</em></li> <li>All UAVs that conflict with any RTVs in <em>ppRenderTargetViews</em></li> <li>All currently bound resources (SOTargets, CS UAVs, SRVs) that conflict with <em>ppRenderTargetViews</em></li> </ul> <p><strong>OMSetRenderTargetsAndUnorderedAccessViews</strong> binds <em>ppRenderTargetViews</em> and <em>ppDepthStencilView</em>.</p> <p><strong>OMSetRenderTargetsAndUnorderedAccessViews</strong> ignores <em>UAVStartSlot</em>.</p> </li> </ol>\t\n            </remarks>\t\n            <msdn-id>ff476465</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews([In] unsigned int NumRTVs,[In, Buffer, Optional] const ID3D11RenderTargetView** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView,[In] unsigned int UAVStartSlot,[In] unsigned int NumUAVs,[In, Buffer, Optional] const ID3D11UnorderedAccessView** ppUnorderedAccessViews,[In, Buffer, Optional] const unsigned int* pUAVInitialCounts)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.OutputMergerStage.SetBlendState(SharpDX.Direct3D11.BlendState,System.Nullable{SharpDX.Color4},System.UInt32)\">\n            <summary>\t\n            Set the blend state of the output-merger stage.\t\n            </summary>\t\n            <param name=\"blendStateRef\"><para>Pointer to a blend-state interface (see <see cref=\"T:SharpDX.Direct3D11.BlendState\"/>). Passing in <c>null</c> implies a default blend state. See remarks for further details.</para></param>\t\n            <param name=\"blendFactor\"><para>Array of blend factors, one for each RGBA component. This requires a blend state object that specifies the <see cref=\"F:SharpDX.Direct3D11.BlendOption.BlendFactor\"/> option.</para></param>\t\n            <param name=\"sampleMask\"><para>32-bit sample coverage. The default value is 0xffffffff. See remarks.</para></param>\t\n            <remarks>\t\n            Blend state is used by the output-merger stage to determine how to blend together two pixel values. The two values are commonly the current pixel value and the pixel value already in the output render target. Use the blend operation to control where the two pixel values come from and how they are mathematically combined.To create a blend-state interface, call <see cref=\"M:SharpDX.Direct3D11.Device.CreateBlendState(SharpDX.Direct3D11.BlendStateDescription@,SharpDX.Direct3D11.BlendState)\"/>.Passing in <c>null</c> for the blend-state interface indicates to the runtime to set a default blending state.  The following table indicates the default blending parameters.StateDefault Value AlphaToCoverageEnableFALSE BlendEnableFALSE[8] SrcBlendD3D11_BLEND_ONE DstBlendD3D11_BLEND_ZERO BlendOpD3D11_BLEND_OP_ADD SrcBlendAlphaD3D11_BLEND_ONE DstBlendAlphaD3D11_BLEND_ZERO BlendOpAlphaD3D11_BLEND_OP_ADD RenderTargetWriteMask[8]<see cref=\"F:SharpDX.Direct3D11.ColorWriteMaskFlags.All\"/>[8]?A sample mask determines which samples get updated in all the active render targets. The mapping of bits in a sample mask to samples in a multisample render target is the responsibility of an individual application. A sample mask is always applied; it is independent of whether multisampling is enabled, and does not depend on whether an application uses multisample render targets.The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.\t\n            </remarks>\t\n            <unmanaged>void ID3D11DeviceContext::OMSetBlendState([In, Optional] ID3D11BlendState* pBlendState,[In, Optional] const SHARPDX_COLOR4* BlendFactor,[In] unsigned int SampleMask)</unmanaged>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.OutputMergerStage.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D11.OutputMergerStage\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.OutputMergerStage.op_Explicit(System.IntPtr)~SharpDX.Direct3D11.OutputMergerStage\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D11.OutputMergerStage\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.OutputMergerStage.SetRenderTargets(System.Int32,System.IntPtr,SharpDX.Direct3D11.DepthStencilView)\">\n            <summary>\t\n            <p>Bind one or more render targets atomically and the depth-stencil buffer to the output-merger stage.</p>\t\n            </summary>\t\n            <param name=\"numViews\"><dd>  <p>Number of render targets to bind (ranges between 0 and D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT).</p> </dd></param>\t\n            <param name=\"renderTargetViewsOut\"><dd>  <p>Pointer to an array of render targets (see <strong><see cref=\"T:SharpDX.Direct3D11.RenderTargetView\"/></strong>) to bind to the device.  If this parameter is <strong><c>null</c></strong>, no render targets are bound. See Remarks.</p> </dd></param>\t\n            <param name=\"depthStencilViewRef\"><dd>  <p>Pointer to a depth-stencil view (see <strong><see cref=\"T:SharpDX.Direct3D11.DepthStencilView\"/></strong>) to bind to the device.  If this parameter is <strong><c>null</c></strong>, the depth-stencil state is not bound.</p> </dd></param>\t\n            <remarks>\t\n            <p>The maximum number of active render targets a device can have active at any given time is set by a #define in D3D11.h called  D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT. It is invalid to try to set the same subresource to multiple render target slots.  Any render targets not defined by this call are set to <strong><c>null</c></strong>.</p><p>If any subresources are also currently bound for reading in a different stage or writing (perhaps in a different part of the pipeline),  those bind points will be set to <strong><c>null</c></strong>, in order to prevent the same subresource from being read and written simultaneously in a single rendering operation.</p><p> The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. </p><p>If the render-target views were created from an array resource type, then all of the render-target views must have the same array size.   This restriction also applies to the depth-stencil view, its array size must match that of the render-target views being bound.</p><p>The pixel shader must be able to simultaneously render to at least eight separate render targets. All of these render targets must access the same type of resource: Buffer, Texture1D, Texture1DArray, Texture2D, Texture2DArray, Texture3D, or TextureCube. All render targets must have the same size in all dimensions (width and height, and depth for 3D or array size for *Array types). If render targets use multisample anti-aliasing, all bound render targets and depth buffer must be the same form of multisample resource (that is, the sample counts must be the same). Each render target can have a different data format. These render target formats are not required to have identical bit-per-element counts.</p><p>Any combination of the eight slots for render targets can have a render target set or not set.</p><p>The same resource view cannot be bound to multiple render target slots simultaneously. However, you can set multiple non-overlapping resource views of a single resource as simultaneous multiple render targets.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::OMSetRenderTargets']/*\"/>\t\n            <msdn-id>ff476464</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::OMSetRenderTargets([In] unsigned int NumViews,[In] const void** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::OMSetRenderTargets</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.OutputMergerStage.SetRenderTargetsAndUnorderedAccessViews(System.Int32,System.IntPtr,SharpDX.Direct3D11.DepthStencilView,System.Int32,System.Int32,System.IntPtr,System.Int32[])\">\n            <summary>\t\n            <p>Binds resources to the output-merger stage.</p>\t\n            </summary>\t\n            <param name=\"numRTVs\"><dd>  <p>Number of render-target views (<em>ppRenderTargetViews</em>) and depth-stencil view (<em>ppDepthStencilView</em>)  to bind. If you set <em>NumViews</em> to D3D11_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL (0xffffffff), this method does not modify the currently bound render-target views (RTVs) and also does not modify depth-stencil view (DSV).</p> </dd></param>\t\n            <param name=\"renderTargetViewsOut\"><dd>  <p>Pointer to an array of <strong><see cref=\"T:SharpDX.Direct3D11.RenderTargetView\"/></strong>s, which represent render-target views. Specify <strong><c>null</c></strong> to set none.</p> </dd></param>\t\n            <param name=\"depthStencilViewRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D11.DepthStencilView\"/></strong>, which represents a depth-stencil view. Specify <strong><c>null</c></strong> to set none.</p> </dd></param>\t\n            <param name=\"uAVStartSlot\"><dd>  <p>Index into a zero-based array to begin setting unordered-access views (ranges from 0 to <see cref=\"F:SharpDX.Direct3D11.ComputeShaderStage.UnorderedAccessViewSlotCount\"/> - 1).</p> <p> For the Direct3D 11.1 runtime, which is available starting with Windows Developer Preview, this value can range from 0 to D3D11_1_UAV_SLOT_COUNT - 1. D3D11_1_UAV_SLOT_COUNT is defined as 64.</p> <p>For pixel shaders, <em>UAVStartSlot</em> should be equal to the number of render-target views being bound. </p> </dd></param>\t\n            <param name=\"numUAVs\"><dd>  <p>Number of unordered-access views (UAVs) in <em>ppUnorderedAccessView</em>. If you set <em>NumUAVs</em> to D3D11_KEEP_UNORDERED_ACCESS_VIEWS (0xffffffff), this method does not modify the currently bound unordered-access views.</p> <p>For the Direct3D 11.1 runtime, which is available starting with Windows Developer Preview, this value can range from 0 to D3D11_1_UAV_SLOT_COUNT - <em>UAVStartSlot</em>.</p> </dd></param>\t\n            <param name=\"unorderedAccessViewsOut\"><dd>  <p>Pointer to an array of <strong><see cref=\"T:SharpDX.Direct3D11.UnorderedAccessView\"/></strong>s, which represent unordered-access views.</p> </dd></param>\t\n            <param name=\"uAVInitialCountsRef\"><dd>  <p>An array of append and consume buffer offsets. A value of -1 indicates to keep the current offset. Any other values set the hidden counter  for that appendable and consumable UAV. <em>pUAVInitialCounts</em> is  relevant only for UAVs that were created with either  <strong><see cref=\"F:SharpDX.Direct3D11.UnorderedAccessViewBufferFlags.Append\"/></strong> or <strong><see cref=\"F:SharpDX.Direct3D11.UnorderedAccessViewBufferFlags.Counter\"/></strong> specified  when the UAV was created; otherwise, the argument is ignored.</p> </dd></param>\t\n            <remarks>\t\n            <p>For pixel shaders, the render targets and unordered-access views share the same resource slots when being written out. This means that UAVs must be  given an offset so that they are placed in the slots after the render target views that are being bound. </p><p><strong>Note</strong>??RTVs, DSV, and UAVs cannot be set independently; they all need to be set at the same time.</p><p>Two RTVs conflict if they share a subresource (and therefore share the same resource).</p><p>Two UAVs conflict if they share a subresource (and therefore share the same resource).</p><p>An RTV conflicts with a UAV if they share a subresource or share a bind point.</p><p><strong>OMSetRenderTargetsAndUnorderedAccessViews</strong> operates properly in the following situations:</p><ol> <li> <p><em>NumViews</em> != D3D11_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL and <em>NumUAVs</em> != D3D11_KEEP_UNORDERED_ACCESS_VIEWS</p> <p>The following conditions must be true for <strong>OMSetRenderTargetsAndUnorderedAccessViews</strong> to succeed and for the runtime to pass the bind information to the driver:</p> <ul> <li><em>NumViews</em> &lt;= 8</li> <li><em>UAVStartSlot</em> &gt;= <em>NumViews</em></li> <li><em>UAVStartSlot</em> + <em>NumUAVs</em> &lt;= 8</li> <li>There must be no conflicts in the set of all <em>ppRenderTargetViews</em> and <em>ppUnorderedAccessView</em>.</li> <li><em>ppDepthStencilView</em> must match the render-target views. For more information about resource views, see Introduction to a Resource in Direct3D 11.</li> </ul> <p><strong>OMSetRenderTargetsAndUnorderedAccessViews</strong> performs the following tasks:</p> <ul> <li>Unbinds all currently bound conflicting resources (stream-output target resources (SOTargets), compute shader (CS) UAVs, shader-resource views (SRVs)).</li> <li>Binds <em>ppRenderTargetViews</em>, <em>ppDepthStencilView</em>, and <em>ppUnorderedAccessView</em>.</li> </ul> </li> <li> <p><em>NumViews</em> == D3D11_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL </p> <p>In this situation, <strong>OMSetRenderTargetsAndUnorderedAccessViews</strong> binds only UAVs. </p> <p>The following conditions must be true for <strong>OMSetRenderTargetsAndUnorderedAccessViews</strong> to succeed and for the runtime to pass the bind information to the driver:</p> <ul> <li><em>UAVStartSlot</em> + <em>NumUAVs</em> &lt;= 8</li> <li>There must be no conflicts in <em>ppUnorderedAccessView</em>.</li> </ul> <p><strong>OMSetRenderTargetsAndUnorderedAccessViews</strong> unbinds the following items:</p> <ul> <li>All RTVs in slots &gt;= <em>UAVStartSlot</em></li> <li>All RTVs that conflict with any UAVs in <em>ppUnorderedAccessView</em></li> <li>All currently bound resources (SOTargets, CS UAVs, SRVs) that conflict with <em>ppUnorderedAccessView</em></li> </ul> <p><strong>OMSetRenderTargetsAndUnorderedAccessViews</strong> binds <em>ppUnorderedAccessView</em>.</p> <p><strong>OMSetRenderTargetsAndUnorderedAccessViews</strong> ignores <em>ppDepthStencilView</em>, and the current depth-stencil view remains bound.</p> </li> <li> <p><em>NumUAVs</em> == D3D11_KEEP_UNORDERED_ACCESS_VIEWS</p> <p>In this situation, <strong>OMSetRenderTargetsAndUnorderedAccessViews</strong> binds only RTVs and DSV. </p> <p>The following conditions must be true for <strong>OMSetRenderTargetsAndUnorderedAccessViews</strong> to succeed and for the runtime to pass the bind information to the driver:</p> <ul> <li><em>NumViews</em> &lt;= 8</li> <li>There must be no conflicts in <em>ppRenderTargetViews</em>.</li> <li><em>ppDepthStencilView</em> must match the render-target views. For more information about resource views, see Introduction to a Resource in Direct3D 11.</li> </ul> <p><strong>OMSetRenderTargetsAndUnorderedAccessViews</strong> unbinds the following items:</p> <ul> <li>All UAVs in slots &lt; <em>NumViews</em></li> <li>All UAVs that conflict with any RTVs in <em>ppRenderTargetViews</em></li> <li>All currently bound resources (SOTargets, CS UAVs, SRVs) that conflict with <em>ppRenderTargetViews</em></li> </ul> <p><strong>OMSetRenderTargetsAndUnorderedAccessViews</strong> binds <em>ppRenderTargetViews</em> and <em>ppDepthStencilView</em>.</p> <p><strong>OMSetRenderTargetsAndUnorderedAccessViews</strong> ignores <em>UAVStartSlot</em>.</p> </li> </ol>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews']/*\"/>\t\n            <msdn-id>ff476465</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews([In] unsigned int NumRTVs,[In, Buffer, Optional] const void** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView,[In] unsigned int UAVStartSlot,[In] unsigned int NumUAVs,[In, Buffer, Optional] const void** ppUnorderedAccessViews,[In, Buffer, Optional] const unsigned int* pUAVInitialCounts)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.OutputMergerStage.SetBlendState(SharpDX.Direct3D11.BlendState,System.Nullable{SharpDX.Color4},System.Int32)\">\n            <summary>\t\n            <p>Set the blend state of the output-merger stage.</p>\t\n            </summary>\t\n            <param name=\"blendStateRef\"><dd>  <p>Pointer to a blend-state interface (see <strong><see cref=\"T:SharpDX.Direct3D11.BlendState\"/></strong>). Passing in <strong><c>null</c></strong> implies a default blend state. See remarks for further details.</p> </dd></param>\t\n            <param name=\"blendFactor\"><dd>  <p>Array of blend factors, one for each RGBA component. This requires a blend state object that specifies the <strong><see cref=\"F:SharpDX.Direct3D11.BlendOption.BlendFactor\"/></strong> option.</p> </dd></param>\t\n            <param name=\"sampleMask\"><dd>  <p>32-bit sample coverage. The default value is 0xffffffff. See remarks.</p> </dd></param>\t\n            <remarks>\t\n            <p>Blend state is used by the output-merger stage to determine how to blend together two pixel values. The two values are commonly the current pixel value and the pixel value already in the output render target. Use the <strong>blend operation</strong> to control where the two pixel values come from and how they are mathematically combined.</p><p>To create a blend-state interface, call <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateBlendState(SharpDX.Direct3D11.BlendStateDescription@,SharpDX.Direct3D11.BlendState)\"/></strong>.</p><p>Passing in <strong><c>null</c></strong> for the blend-state interface indicates to the runtime to set a default blending state.  The following table indicates the default blending parameters.</p><table> <tr><th>State</th><th>Default Value</th></tr> <tr><td>AlphaToCoverageEnable</td><td><strong><see cref=\"F:SharpDX.Result.False\"/></strong></td></tr> <tr><td>BlendEnable</td><td><strong><see cref=\"F:SharpDX.Result.False\"/></strong>[8]</td></tr> <tr><td>SrcBlend</td><td><see cref=\"F:SharpDX.Direct3D11.BlendOption.One\"/></td></tr> <tr><td>DstBlend</td><td><see cref=\"F:SharpDX.Direct3D11.BlendOption.Zero\"/></td></tr> <tr><td>BlendOp</td><td><see cref=\"F:SharpDX.Direct3D11.BlendOperation.Add\"/></td></tr> <tr><td>SrcBlendAlpha</td><td><see cref=\"F:SharpDX.Direct3D11.BlendOption.One\"/></td></tr> <tr><td>DstBlendAlpha</td><td><see cref=\"F:SharpDX.Direct3D11.BlendOption.Zero\"/></td></tr> <tr><td>BlendOpAlpha</td><td><see cref=\"F:SharpDX.Direct3D11.BlendOperation.Add\"/></td></tr> <tr><td>RenderTargetWriteMask[8]</td><td><see cref=\"F:SharpDX.Direct3D11.ColorWriteMaskFlags.All\"/>[8]</td></tr> </table><p>?</p><p>A sample mask determines which samples get updated in all the active render targets. The mapping of bits in a sample mask to samples in a multisample render target is the responsibility of an individual application. A sample mask is always applied; it is independent of whether multisampling is enabled, and does not depend on whether an application uses multisample render targets.</p><p> The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::OMSetBlendState']/*\"/>\t\n            <msdn-id>ff476462</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::OMSetBlendState([In, Optional] ID3D11BlendState* pBlendState,[In, Optional] const SHARPDX_COLOR4* BlendFactor,[In] unsigned int SampleMask)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::OMSetBlendState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.OutputMergerStage.SetDepthStencilState(SharpDX.Direct3D11.DepthStencilState,System.Int32)\">\n            <summary>\t\n            <p>Sets the depth-stencil state of the output-merger stage.</p>\t\n            </summary>\t\n            <param name=\"depthStencilStateRef\"><dd>  <p>Pointer to a depth-stencil state interface (see <strong><see cref=\"T:SharpDX.Direct3D11.DepthStencilState\"/></strong>) to bind to the device. Set this to <strong><c>null</c></strong> to use the default state listed in <strong><see cref=\"T:SharpDX.Direct3D11.DepthStencilStateDescription\"/></strong>.</p> </dd></param>\t\n            <param name=\"stencilRef\"><dd>  <p>Reference value to perform against when doing a depth-stencil test. See remarks.</p> </dd></param>\t\n            <remarks>\t\n            <p>To create a depth-stencil state interface, call <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateDepthStencilState(SharpDX.Direct3D11.DepthStencilStateDescription@,SharpDX.Direct3D11.DepthStencilState)\"/></strong>.</p><p> The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::OMSetDepthStencilState']/*\"/>\t\n            <msdn-id>ff476463</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::OMSetDepthStencilState([In, Optional] ID3D11DepthStencilState* pDepthStencilState,[In] unsigned int StencilRef)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::OMSetDepthStencilState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.OutputMergerStage.GetRenderTargets(System.Int32,SharpDX.Direct3D11.RenderTargetView[],SharpDX.Direct3D11.DepthStencilView@)\">\n            <summary>\t\n            <p>Get references to the resources bound to the output-merger stage.</p>\t\n            </summary>\t\n            <param name=\"numViews\"><dd>  <p>Number of render targets to retrieve.</p> </dd></param>\t\n            <param name=\"renderTargetViewsOut\"><dd>  <p>Pointer to an array of <strong><see cref=\"T:SharpDX.Direct3D11.RenderTargetView\"/></strong>s which represent render target views. Specify <strong><c>null</c></strong> for this parameter when retrieval of a render target is not needed. </p> </dd></param>\t\n            <param name=\"depthStencilViewOut\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D11.DepthStencilView\"/></strong>, which represents a depth-stencil view. Specify <strong><c>null</c></strong> for this parameter when retrieval of the depth-stencil view is not needed.</p> </dd></param>\t\n            <remarks>\t\n            <p>Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::OMGetRenderTargets']/*\"/>\t\n            <msdn-id>ff476460</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::OMGetRenderTargets([In] unsigned int NumViews,[Out, Buffer, Optional] ID3D11RenderTargetView** ppRenderTargetViews,[Out, Optional] ID3D11DepthStencilView** ppDepthStencilView)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::OMGetRenderTargets</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.OutputMergerStage.GetRenderTargetsAndUnorderedAccessViews(System.Int32,SharpDX.Direct3D11.RenderTargetView[],SharpDX.Direct3D11.DepthStencilView@,System.Int32,System.Int32,SharpDX.Direct3D11.UnorderedAccessView[])\">\n            <summary>\t\n            <p>Get references to the resources bound to the output-merger stage.</p>\t\n            </summary>\t\n            <param name=\"numRTVs\"><dd>  <p>The number of render-target views to retrieve.</p> </dd></param>\t\n            <param name=\"renderTargetViewsOut\"><dd>  <p>Pointer to an array of <strong><see cref=\"T:SharpDX.Direct3D11.RenderTargetView\"/></strong>s, which represent render-target views. Specify <strong><c>null</c></strong> for this parameter when retrieval of render-target views is not required. </p> </dd></param>\t\n            <param name=\"depthStencilViewOut\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D11.DepthStencilView\"/></strong>, which represents a depth-stencil view. Specify <strong><c>null</c></strong> for this parameter when retrieval of the depth-stencil view is not required.</p> </dd></param>\t\n            <param name=\"uAVStartSlot\"><dd>  <p>Index into a zero-based array to begin retrieving unordered-access views (ranges from 0 to <see cref=\"F:SharpDX.Direct3D11.ComputeShaderStage.UnorderedAccessViewSlotCount\"/> - 1). For pixel shaders <em>UAVStartSlot</em> should be equal to the number of render-target views that are bound. </p> </dd></param>\t\n            <param name=\"numUAVs\"><dd>  <p>Number of unordered-access views to return in <em>ppUnorderedAccessViews</em>. This number ranges from 0 to <see cref=\"F:SharpDX.Direct3D11.ComputeShaderStage.UnorderedAccessViewSlotCount\"/> - <em>UAVStartSlot</em>.</p> </dd></param>\t\n            <param name=\"unorderedAccessViewsOut\"><dd>  <p>Pointer to an array of <strong><see cref=\"T:SharpDX.Direct3D11.UnorderedAccessView\"/></strong>s, which represent unordered-access views that are retrieved. Specify <strong><c>null</c></strong> for this parameter when retrieval of unordered-access views is not required. </p> </dd></param>\t\n            <remarks>\t\n            <p>Any returned interfaces will have their reference count incremented by one. Applications should call <strong>IUnknown::Release</strong> on the returned interfaces when they are no longer needed to avoid memory leaks.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::OMGetRenderTargetsAndUnorderedAccessViews']/*\"/>\t\n            <msdn-id>ff476461</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::OMGetRenderTargetsAndUnorderedAccessViews([In] unsigned int NumRTVs,[Out, Buffer, Optional] ID3D11RenderTargetView** ppRenderTargetViews,[Out, Optional] ID3D11DepthStencilView** ppDepthStencilView,[In] unsigned int UAVStartSlot,[In] unsigned int NumUAVs,[Out, Buffer, Optional] ID3D11UnorderedAccessView** ppUnorderedAccessViews)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::OMGetRenderTargetsAndUnorderedAccessViews</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.OutputMergerStage.GetBlendState(SharpDX.Direct3D11.BlendState@,SharpDX.Color4@,System.Int32@)\">\n            <summary>\t\n            <p>Get the blend state of the output-merger stage.</p>\t\n            </summary>\t\n            <param name=\"blendStateOut\"><dd>  <p>Address of a reference to a blend-state interface (see <strong><see cref=\"T:SharpDX.Direct3D11.BlendState\"/></strong>).</p> </dd></param>\t\n            <param name=\"blendFactor\"><dd>  <p>Array of blend factors, one for each RGBA component.</p> </dd></param>\t\n            <param name=\"sampleMaskRef\"><dd>  <p>Pointer to a <strong>sample mask</strong>.</p> </dd></param>\t\n            <remarks>\t\n            <p>The reference count of the returned interface will be incremented by one when the blend state is retrieved. Applications must release returned reference(s) when they are no longer needed, or else there will be a memory leak.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::OMGetBlendState']/*\"/>\t\n            <msdn-id>ff476458</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::OMGetBlendState([Out, Optional] ID3D11BlendState** ppBlendState,[Out, Optional] SHARPDX_COLOR4* BlendFactor,[Out, Optional] unsigned int* pSampleMask)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::OMGetBlendState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.OutputMergerStage.GetDepthStencilState(SharpDX.Direct3D11.DepthStencilState@,System.Int32@)\">\n            <summary>\t\n            <p>Gets the depth-stencil state of the output-merger stage.</p>\t\n            </summary>\t\n            <param name=\"depthStencilStateOut\"><dd>  <p>Address of a reference to a depth-stencil state interface (see <strong><see cref=\"T:SharpDX.Direct3D11.DepthStencilState\"/></strong>) to be filled with information from the device.</p> </dd></param>\t\n            <param name=\"stencilRefRef\"><dd>  <p>Pointer to the stencil reference value used in the depth-stencil test.</p> </dd></param>\t\n            <remarks>\t\n            <p>Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::OMGetDepthStencilState']/*\"/>\t\n            <msdn-id>ff476459</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::OMGetDepthStencilState([Out, Optional] ID3D11DepthStencilState** ppDepthStencilState,[Out, Optional] unsigned int* pStencilRef)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::OMGetDepthStencilState</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.OutputMergerStage.BlendFactor\">\n            <summary>\n            Gets or sets the blend factor.\n            </summary>\n            <value>The blend factor.</value>\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.OutputMergerStage.BlendSampleMask\">\n            <summary>\n            Gets or sets the blend sample mask.\n            </summary>\n            <value>The blend sample mask.</value>\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.OutputMergerStage.BlendState\">\n            <summary>\n            Gets or sets the state of the blend.\n            </summary>\n            <value>The state of the blend.</value>\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.OutputMergerStage.DepthStencilReference\">\n            <summary>\n            Gets or sets the depth stencil reference.\n            </summary>\n            <value>The depth stencil reference.</value>\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.OutputMergerStage.DepthStencilState\">\n            <summary>\n            Gets or sets the state of the depth stencil.\n            </summary>\n            <value>The state of the depth stencil.</value>\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.RasterizerStage\">\n            <summary>\t\n            <p>The <strong><see cref=\"T:SharpDX.Direct3D11.DeviceContext\"/></strong> interface represents a device context which generates rendering commands.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext']/*\"/>\t\n            <msdn-id>ff476385</msdn-id>\t\n            <unmanaged>ID3D11DeviceContext</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.RasterizerStage.GetViewports\">\n            <summary>\t\n            Get the array of {{viewports}} bound  to the {{rasterizer stage}} \t\n            </summary>\t\n            <returns>An array of viewports (see <see cref=\"T:SharpDX.ViewportF\"/>).</returns>\n            <unmanaged>void RSGetViewports([InOut] int* NumViewports,[Out, Buffer, Optional] D3D10_VIEWPORT* pViewports)</unmanaged>\n            <msdn-id>ff476477</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::RSGetViewports([InOut] unsigned int* pNumViewports,[Out, Buffer, Optional] D3D11_VIEWPORT* pViewports)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::RSGetViewports</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.RasterizerStage.GetViewports(SharpDX.ViewportF[])\">\n            <summary>\t\n            Get the array of {{viewports}} bound  to the {{rasterizer stage}} \t\n            </summary>\t\n            <returns>An array of viewports (see <see cref=\"T:SharpDX.ViewportF\"/>).</returns>\n            <unmanaged>void RSGetViewports([InOut] int* NumViewports,[Out, Buffer, Optional] D3D10_VIEWPORT* pViewports)</unmanaged>\n            <msdn-id>ff476477</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::RSGetViewports([InOut] unsigned int* pNumViewports,[Out, Buffer, Optional] D3D11_VIEWPORT* pViewports)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::RSGetViewports</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.RasterizerStage.GetScissorRectangles\">\n            <summary>\t\n            Get the array of {{scissor rectangles}} bound to the {{rasterizer stage}}.\t\n            </summary>\t\n            <returns>An array of scissor rectangles (see <see cref=\"T:SharpDX.Rectangle\"/>).</returns>\n            <unmanaged>void RSGetScissorRects([InOut] int* NumRects,[Out, Buffer, Optional] D3D10_RECT* pRects)</unmanaged>\n            <msdn-id>ff476475</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::RSGetScissorRects([InOut] unsigned int* pNumRects,[Out, Buffer, Optional] RECT* pRects)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::RSGetScissorRects</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.RasterizerStage.GetScissorRectangles(SharpDX.Rectangle[])\">\n            <summary>\t\n            Get the array of {{scissor rectangles}} bound to the {{rasterizer stage}}.\t\n            </summary>\t\n            <returns>An array of scissor rectangles (see <see cref=\"T:SharpDX.Rectangle\"/>).</returns>\n            <unmanaged>void RSGetScissorRects([InOut] int* NumRects,[Out, Buffer, Optional] D3D10_RECT* pRects)</unmanaged>\n            <msdn-id>ff476475</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::RSGetScissorRects([InOut] unsigned int* pNumRects,[Out, Buffer, Optional] RECT* pRects)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::RSGetScissorRects</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.RasterizerStage.SetScissorRectangle(System.Int32,System.Int32,System.Int32,System.Int32)\">\n            <summary>\n            Binds a single scissor rectangle to the rasterizer stage.\n            </summary>\n            <param name=\"left\">The left.</param>\n            <param name=\"top\">The top.</param>\n            <param name=\"right\">The right.</param>\n            <param name=\"bottom\">The bottom.</param>\n            <remarks>\t\n            <p>All scissor rects must be set atomically as one operation. Any scissor rects not defined by the call are disabled.</p><p>The scissor rectangles will only be used if ScissorEnable is set to true in the rasterizer state (see <strong><see cref=\"T:SharpDX.Direct3D11.RasterizerStateDescription\"/></strong>).</p><p>Which scissor rectangle to use is determined by the SV_ViewportArrayIndex semantic output by a geometry shader (see shader semantic syntax). If a geometry shader does not make use of the SV_ViewportArrayIndex semantic then Direct3D will use the first scissor rectangle in the array.</p><p>Each scissor rectangle in the array corresponds to a viewport in an array of viewports (see <strong><see cref=\"M:SharpDX.Direct3D11.RasterizerStage.SetViewports(SharpDX.ViewportF)\"/></strong>).</p>\t\n            </remarks>\t\n            <msdn-id>ff476478</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::RSSetScissorRects([In] unsigned int NumRects,[In, Buffer, Optional] const void* pRects)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::RSSetScissorRects</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.RasterizerStage.SetScissorRectangles(SharpDX.Rectangle[])\">\n            <summary>\n              Binds a set of scissor rectangles to the rasterizer stage.\n            </summary>\n            <param name=\"scissorRectangles\">The set of scissor rectangles to bind.</param>\n            <remarks>\t\n            <p>All scissor rects must be set atomically as one operation. Any scissor rects not defined by the call are disabled.</p><p>The scissor rectangles will only be used if ScissorEnable is set to true in the rasterizer state (see <strong><see cref=\"T:SharpDX.Direct3D11.RasterizerStateDescription\"/></strong>).</p><p>Which scissor rectangle to use is determined by the SV_ViewportArrayIndex semantic output by a geometry shader (see shader semantic syntax). If a geometry shader does not make use of the SV_ViewportArrayIndex semantic then Direct3D will use the first scissor rectangle in the array.</p><p>Each scissor rectangle in the array corresponds to a viewport in an array of viewports (see <strong><see cref=\"M:SharpDX.Direct3D11.RasterizerStage.SetViewports(SharpDX.ViewportF)\"/></strong>).</p>\t\n            </remarks>\t\n            <msdn-id>ff476478</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::RSSetScissorRects([In] unsigned int NumRects,[In, Buffer, Optional] const void* pRects)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::RSSetScissorRects</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.RasterizerStage.SetViewport(System.Single,System.Single,System.Single,System.Single,System.Single,System.Single)\">\n            <summary>\n            Binds a single viewport to the rasterizer stage.\n            </summary>\n            <param name=\"x\">The x coord of the viewport.</param>\n            <param name=\"y\">The x coord of the viewport.</param>\n            <param name=\"width\">The width.</param>\n            <param name=\"height\">The height.</param>\n            <param name=\"minZ\">The min Z.</param>\n            <param name=\"maxZ\">The max Z.</param>\n            <remarks>\t\n            <p></p><p>All viewports must be set atomically as one operation. Any viewports not defined by the call are disabled.</p><p>Which viewport to use is determined by the SV_ViewportArrayIndex semantic output by a geometry shader; if a geometry shader does not specify the semantic, Direct3D will use the first viewport in the array.</p>\t\n            </remarks>\t\n            <msdn-id>ff476480</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::RSSetViewports([In] unsigned int NumViewports,[In, Buffer, Optional] const void* pViewports)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::RSSetViewports</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.RasterizerStage.SetViewports(SharpDX.ViewportF)\">\n            <summary>\n            Binds a single viewport to the rasterizer stage.\n            </summary>\n            <param name=\"viewport\">The viewport.</param>\n            <remarks>\t\n            <p></p><p>All viewports must be set atomically as one operation. Any viewports not defined by the call are disabled.</p><p>Which viewport to use is determined by the SV_ViewportArrayIndex semantic output by a geometry shader; if a geometry shader does not specify the semantic, Direct3D will use the first viewport in the array.</p>\t\n            </remarks>\t\n            <msdn-id>ff476480</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::RSSetViewports([In] unsigned int NumViewports,[In, Buffer, Optional] const void* pViewports)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::RSSetViewports</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.RasterizerStage.SetViewports(SharpDX.ViewportF[])\">\n            <summary>\n              Binds a set of viewports to the rasterizer stage.\n            </summary>\n            <param name = \"viewports\">The set of viewports to bind.</param>\n            <remarks>\t\n            <p></p><p>All viewports must be set atomically as one operation. Any viewports not defined by the call are disabled.</p><p>Which viewport to use is determined by the SV_ViewportArrayIndex semantic output by a geometry shader; if a geometry shader does not specify the semantic, Direct3D will use the first viewport in the array.</p>\t\n            </remarks>\t\n            <msdn-id>ff476480</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::RSSetViewports([In] unsigned int NumViewports,[In, Buffer, Optional] const void* pViewports)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::RSSetViewports</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.RasterizerStage.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D11.RasterizerStage\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.RasterizerStage.op_Explicit(System.IntPtr)~SharpDX.Direct3D11.RasterizerStage\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D11.RasterizerStage\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.RasterizerStage.SetState(SharpDX.Direct3D11.RasterizerState)\">\n            <summary>\t\n            <p>Set the <strong>rasterizer state</strong> for the rasterizer stage of the pipeline.</p>\t\n            </summary>\t\n            <param name=\"rasterizerStateRef\">No documentation.</param>\t\n            <remarks>\t\n            <p>To create a rasterizer state interface, call <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateRasterizerState(SharpDX.Direct3D11.RasterizerStateDescription@,SharpDX.Direct3D11.RasterizerState)\"/></strong>.</p><p> The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::RSSetState']/*\"/>\t\n            <msdn-id>ff476479</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::RSSetState([In, Optional] ID3D11RasterizerState* pRasterizerState)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::RSSetState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.RasterizerStage.SetViewports(System.Int32,System.IntPtr)\">\n            <summary>\t\n            <p>Bind an array of viewports to the rasterizer stage of the pipeline.</p>\t\n            </summary>\t\n            <param name=\"numViewports\"><dd>  <p>Number of viewports to bind.</p> </dd></param>\t\n            <param name=\"viewportsRef\"><dd>  <p>An array of <strong><see cref=\"T:SharpDX.ViewportF\"/></strong> structures to bind to the device. See the structure page for details about how the viewport size is dependent on the device feature level which has changed between Direct3D 11 and Direct3D 10.</p> </dd></param>\t\n            <remarks>\t\n            <p></p><p>All viewports must be set atomically as one operation. Any viewports not defined by the call are disabled.</p><p>Which viewport to use is determined by the SV_ViewportArrayIndex semantic output by a geometry shader; if a geometry shader does not specify the semantic, Direct3D will use the first viewport in the array.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::RSSetViewports']/*\"/>\t\n            <msdn-id>ff476480</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::RSSetViewports([In] unsigned int NumViewports,[In, Buffer, Optional] const void* pViewports)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::RSSetViewports</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.RasterizerStage.SetScissorRects(System.Int32,System.IntPtr)\">\n            <summary>\t\n            <p>Bind an array of scissor rectangles to the rasterizer stage.</p>\t\n            </summary>\t\n            <param name=\"numRects\"><dd>  <p>Number of scissor rectangles to bind.</p> </dd></param>\t\n            <param name=\"rectsRef\"><dd>  <p>An array of scissor rectangles (see <strong>D3D11_RECT</strong>).</p> </dd></param>\t\n            <remarks>\t\n            <p>All scissor rects must be set atomically as one operation. Any scissor rects not defined by the call are disabled.</p><p>The scissor rectangles will only be used if ScissorEnable is set to true in the rasterizer state (see <strong><see cref=\"T:SharpDX.Direct3D11.RasterizerStateDescription\"/></strong>).</p><p>Which scissor rectangle to use is determined by the SV_ViewportArrayIndex semantic output by a geometry shader (see shader semantic syntax). If a geometry shader does not make use of the SV_ViewportArrayIndex semantic then Direct3D will use the first scissor rectangle in the array.</p><p>Each scissor rectangle in the array corresponds to a viewport in an array of viewports (see <strong><see cref=\"M:SharpDX.Direct3D11.RasterizerStage.SetViewports(SharpDX.ViewportF)\"/></strong>).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::RSSetScissorRects']/*\"/>\t\n            <msdn-id>ff476478</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::RSSetScissorRects([In] unsigned int NumRects,[In, Buffer, Optional] const void* pRects)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::RSSetScissorRects</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.RasterizerStage.GetState(SharpDX.Direct3D11.RasterizerState@)\">\n            <summary>\t\n            <p>Get the <strong>rasterizer state</strong> from the rasterizer stage of the pipeline.</p>\t\n            </summary>\t\n            <param name=\"rasterizerStateOut\">No documentation.</param>\t\n            <remarks>\t\n            <p>Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::RSGetState']/*\"/>\t\n            <msdn-id>ff476476</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::RSGetState([Out] ID3D11RasterizerState** ppRasterizerState)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::RSGetState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.RasterizerStage.GetViewports(System.Int32@,SharpDX.ViewportF[])\">\n            <summary>\t\n            <p>Get the array of viewports bound to the rasterizer stage</p>\t\n            </summary>\t\n            <param name=\"numViewportsRef\"><dd>  <p>The input specifies the number of viewports (ranges from 0 to D3D11_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE)  in <em>pViewports</em>, the output contains the actual number of viewports returned.   If <em>pViewports</em> is <strong><c>null</c></strong>, this will be filled with the number of viewports currently bound.</p> </dd></param>\t\n            <param name=\"viewportsRef\"><dd>  <p>An array of <strong><see cref=\"T:SharpDX.ViewportF\"/></strong> structures that are bound to the device. If the number of viewports (in pNumViewports) is  greater than the actual number of viewports currently bound, then unused members of the array will contain 0.  See the structure page for details about how the viewport size is dependent on the device feature level which has changed between Direct3D 11  and Direct3D 10.</p> </dd></param>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::RSGetViewports']/*\"/>\t\n            <msdn-id>ff476477</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::RSGetViewports([InOut] unsigned int* pNumViewports,[Out, Buffer, Optional] D3D11_VIEWPORT* pViewports)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::RSGetViewports</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.RasterizerStage.GetScissorRects(System.Int32@,SharpDX.Rectangle[])\">\n            <summary>\t\n            <p>Get the array of scissor rectangles bound to the rasterizer stage.</p>\t\n            </summary>\t\n            <param name=\"numRectsRef\"><dd>  <p>The number of scissor rectangles (ranges between 0 and D3D11_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) bound; set <em>pRects</em> to <strong><c>null</c></strong> to use <em>pNumRects</em> to see how many rectangles would be returned.</p> </dd></param>\t\n            <param name=\"rectsRef\"><dd>  <p>An array of scissor rectangles (see <strong>D3D11_RECT</strong>). If NumRects is greater than the number of scissor rects currently bound, then unused members of the array will contain 0.</p> </dd></param>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::RSGetScissorRects']/*\"/>\t\n            <msdn-id>ff476475</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::RSGetScissorRects([InOut] unsigned int* pNumRects,[Out, Buffer, Optional] RECT* pRects)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::RSGetScissorRects</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.RasterizerStage.State\">\n            <summary>\t\n            <p>Get or sets the <strong>rasterizer state</strong> from the rasterizer stage of the pipeline.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::RSGetState']/*\"/>\t\n            <msdn-id>ff476476</msdn-id>\t\n            <unmanaged>RSGetState / RSSetState</unmanaged>\t\n            <unmanaged-short>RSGetState</unmanaged-short>\t\n            <unmanaged>void ID3D11DeviceContext::RSGetState([Out] ID3D11RasterizerState** ppRasterizerState)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.DomainShader\">\n            <summary>\t\n            <p>A domain-shader interface manages an executable program (a domain shader) that controls the domain-shader stage.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The domain-shader interface has no methods; use HLSL to implement your shader functionality. All shaders are implemented from a common set of features referred to as the common-shader core..</p><p>To create a domain-shader interface, call <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateDomainShader(System.IntPtr,SharpDX.PointerSize,SharpDX.Direct3D11.ClassLinkage,SharpDX.Direct3D11.DomainShader)\"/></strong>. Before using a domain shader you must bind it to the device by calling <strong><see cref=\"M:SharpDX.Direct3D11.DomainShaderStage.SetShader(SharpDX.Direct3D11.DomainShader,SharpDX.Direct3D11.ClassInstance[],System.Int32)\"/></strong>.</p><p>This interface is defined in D3D11.h.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DomainShader']/*\"/>\t\n            <msdn-id>ff476535</msdn-id>\t\n            <unmanaged>ID3D11DomainShader</unmanaged>\t\n            <unmanaged-short>ID3D11DomainShader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DomainShader.#ctor(SharpDX.Direct3D11.Device,System.Byte[],SharpDX.Direct3D11.ClassLinkage)\">\n            <summary>\n              Initializes a new instance of the <see cref = \"T:SharpDX.Direct3D11.DomainShader\" /> class.\n            </summary>\n            <param name = \"device\">The device used to create the shader.</param>\n            <param name = \"shaderBytecode\">The compiled shader bytecode.</param>\n            <param name = \"linkage\">A dynamic class linkage interface.</param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DomainShader.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D11.DomainShader\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DomainShader.op_Explicit(System.IntPtr)~SharpDX.Direct3D11.DomainShader\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D11.DomainShader\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.FastFourierTransform\">\n            <summary>\t\n            <p>Encapsulates forward and inverse FFTs.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11FFT']/*\"/>\t\n            <msdn-id>ff476846</msdn-id>\t\n            <unmanaged>ID3DX11FFT</unmanaged>\t\n            <unmanaged-short>ID3DX11FFT</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.FastFourierTransform.#ctor(SharpDX.Direct3D11.DeviceContext,SharpDX.Direct3D11.FastFourierTransformDescription)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D11.FastFourierTransform\" /> class.\n            </summary>\n            <param name=\"context\">The device context used to create the FFT.</param>\n            <param name=\"description\">Information that describes the shape of the FFT data as well as the scaling factors that should be used for forward and inverse transforms.</param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.FastFourierTransform.#ctor(SharpDX.Direct3D11.DeviceContext,SharpDX.Direct3D11.FastFourierTransformDescription,SharpDX.Direct3D11.FastFourierTransformCreationFlags)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D11.FastFourierTransform\" /> class.\n            </summary>\n            <param name=\"context\">The device context used to create the FFT.</param>\n            <param name=\"description\">Information that describes the shape of the FFT data as well as the scaling factors that should be used for forward and inverse transforms.</param>\n            <param name=\"flags\">Flag affecting the behavior of the FFT.</param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.FastFourierTransform.AttachBuffersAndPrecompute(SharpDX.Direct3D11.UnorderedAccessView[],SharpDX.Direct3D11.UnorderedAccessView[])\">\n            <summary>\t\n            Attaches buffers to an FFT context and performs any required precomputations.\t\n            </summary>\t\n            <remarks>\t\n            The buffers must be no smaller than the corresponding buffer sizes returned by D3DX11CreateFFT*(). Temporary buffers can be shared between multiple contexts, though care should be taken not  to concurrently execute multiple FFTs which share temp buffers. \t\n            </remarks>\t\n            <param name=\"temporaryBuffers\">Temporary buffers to attach. </param>\n            <param name=\"precomputeBuffers\">Buffers to hold precomputed data. </param>\n            <returns>Returns one of the return codes described in the topic {{Direct3D 11 Return Codes}}. </returns>\n            <unmanaged>HRESULT ID3DX11FFT::AttachBuffersAndPrecompute([In] int NumTempBuffers,[In, Buffer] const ID3D11UnorderedAccessView** ppTempBuffers,[In] int NumPrecomputeBuffers,[In, Buffer] const ID3D11UnorderedAccessView** ppPrecomputeBufferSizes)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.FastFourierTransform.Create1DComplex(SharpDX.Direct3D11.DeviceContext,System.Int32)\">\n            <summary>\t\n            Creates a new one-dimensional complex FFT.\t\n            </summary>\t\n            <param name=\"context\">Pointer to the <see cref=\"T:SharpDX.Direct3D11.DeviceContext\"/> interface to use for the FFT. </param>\n            <param name=\"x\">Length of the first dimension of the FFT. </param>\n            <returns>an <see cref=\"T:SharpDX.Direct3D11.FastFourierTransform\"/> interface reference.</returns>\n            <unmanaged>HRESULT D3DX11CreateFFT1DComplex([None] ID3D11DeviceContext* pDeviceContext,[None] int X,[None] int Flags,[Out] D3DX11_FFT_BUFFER_INFO* pBufferInfo,[Out] ID3DX11FFT** ppFFT)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.FastFourierTransform.Create1DComplex(SharpDX.Direct3D11.DeviceContext,System.Int32,SharpDX.Direct3D11.FastFourierTransformCreationFlags)\">\n            <summary>\t\n            Creates a new one-dimensional complex FFT.\t\n            </summary>\t\n            <param name=\"context\">Pointer to the <see cref=\"T:SharpDX.Direct3D11.DeviceContext\"/> interface to use for the FFT. </param>\n            <param name=\"x\">Length of the first dimension of the FFT. </param>\n            <param name=\"flags\">Flag affecting the behavior of the FFT, can be 0 or a combination of flags from <see cref=\"T:SharpDX.Direct3D11.FastFourierTransformCreationFlags\"/>. </param>\n            <returns>an <see cref=\"T:SharpDX.Direct3D11.FastFourierTransform\"/> interface reference.</returns>\n            <unmanaged>HRESULT D3DX11CreateFFT1DComplex([None] ID3D11DeviceContext* pDeviceContext,[None] int X,[None] int Flags,[Out] D3DX11_FFT_BUFFER_INFO* pBufferInfo,[Out] ID3DX11FFT** ppFFT)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.FastFourierTransform.Create1DReal(SharpDX.Direct3D11.DeviceContext,System.Int32)\">\n            <summary>\t\n            Creates a new one-dimensional real FFT.\t\n            </summary>\t\n            <param name=\"context\">Pointer to the <see cref=\"T:SharpDX.Direct3D11.DeviceContext\"/> interface to use for the FFT. </param>\n            <param name=\"x\">Length of the first dimension of the FFT. </param>\n            <returns>an <see cref=\"T:SharpDX.Direct3D11.FastFourierTransform\"/> interface reference.</returns>\n            <unmanaged>HRESULT D3DX11CreateFFT1DReal([None] ID3D11DeviceContext* pDeviceContext,[None] int X,[None] int Flags,[Out] D3DX11_FFT_BUFFER_INFO* pBufferInfo,[Out] ID3DX11FFT** ppFFT)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.FastFourierTransform.Create1DReal(SharpDX.Direct3D11.DeviceContext,System.Int32,SharpDX.Direct3D11.FastFourierTransformCreationFlags)\">\n            <summary>\t\n            Creates a new one-dimensional real FFT.\t\n            </summary>\t\n            <param name=\"context\">Pointer to the <see cref=\"T:SharpDX.Direct3D11.DeviceContext\"/> interface to use for the FFT. </param>\n            <param name=\"x\">Length of the first dimension of the FFT. </param>\n            <param name=\"flags\">Flag affecting the behavior of the FFT, can be 0 or a combination of flags from <see cref=\"T:SharpDX.Direct3D11.FastFourierTransformCreationFlags\"/>. </param>\n            <returns>an <see cref=\"T:SharpDX.Direct3D11.FastFourierTransform\"/> interface reference.</returns>\n            <unmanaged>HRESULT D3DX11CreateFFT1DReal([None] ID3D11DeviceContext* pDeviceContext,[None] int X,[None] int Flags,[Out] D3DX11_FFT_BUFFER_INFO* pBufferInfo,[Out] ID3DX11FFT** ppFFT)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.FastFourierTransform.Create2DComplex(SharpDX.Direct3D11.DeviceContext,System.Int32,System.Int32)\">\n            <summary>\t\n            Creates a new two-dimensional complex FFT.\t\n            </summary>\t\n            <param name=\"context\">Pointer to the <see cref=\"T:SharpDX.Direct3D11.DeviceContext\"/> interface to use for the FFT. </param>\n            <param name=\"x\">Length of the first dimension of the FFT.</param>\n            <param name=\"y\">Length of the second dimension of the FFT.</param>\n            <returns>an <see cref=\"T:SharpDX.Direct3D11.FastFourierTransform\"/> interface reference.</returns>\n            <unmanaged>HRESULT D3DX11CreateFFT1DReal([None] ID3D11DeviceContext* pDeviceContext,[None] int X,[None] int Flags,[Out] D3DX11_FFT_BUFFER_INFO* pBufferInfo,[Out] ID3DX11FFT** ppFFT)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.FastFourierTransform.Create2DComplex(SharpDX.Direct3D11.DeviceContext,System.Int32,System.Int32,SharpDX.Direct3D11.FastFourierTransformCreationFlags)\">\n            <summary>\t\n            Creates a new two-dimensional complex FFT.\t\n            </summary>\t\n            <param name=\"context\">Pointer to the <see cref=\"T:SharpDX.Direct3D11.DeviceContext\"/> interface to use for the FFT. </param>\n            <param name=\"x\">Length of the first dimension of the FFT.</param>\n            <param name=\"y\">Length of the second dimension of the FFT.</param>\n            <param name=\"flags\">Flag affecting the behavior of the FFT, can be 0 or a combination of flags from <see cref=\"T:SharpDX.Direct3D11.FastFourierTransformCreationFlags\"/>. </param>\n            <returns>an <see cref=\"T:SharpDX.Direct3D11.FastFourierTransform\"/> interface reference.</returns>\n            <unmanaged>HRESULT D3DX11CreateFFT1DReal([None] ID3D11DeviceContext* pDeviceContext,[None] int X,[None] int Flags,[Out] D3DX11_FFT_BUFFER_INFO* pBufferInfo,[Out] ID3DX11FFT** ppFFT)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.FastFourierTransform.Create2DReal(SharpDX.Direct3D11.DeviceContext,System.Int32,System.Int32)\">\n            <summary>\t\n            Creates a new two-dimensional real FFT.\t\n            </summary>\t\n            <param name=\"context\">Pointer to the <see cref=\"T:SharpDX.Direct3D11.DeviceContext\"/> interface to use for the FFT. </param>\n            <param name=\"x\">Length of the first dimension of the FFT.</param>\n            <param name=\"y\">Length of the second dimension of the FFT.</param>\n            <returns>an <see cref=\"T:SharpDX.Direct3D11.FastFourierTransform\"/> interface reference.</returns>\n            <unmanaged>HRESULT D3DX11CreateFFT1DReal([None] ID3D11DeviceContext* pDeviceContext,[None] int X,[None] int Flags,[Out] D3DX11_FFT_BUFFER_INFO* pBufferInfo,[Out] ID3DX11FFT** ppFFT)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.FastFourierTransform.Create2DReal(SharpDX.Direct3D11.DeviceContext,System.Int32,System.Int32,SharpDX.Direct3D11.FastFourierTransformCreationFlags)\">\n            <summary>\t\n            Creates a new two-dimensional real FFT.\t\n            </summary>\t\n            <param name=\"context\">Pointer to the <see cref=\"T:SharpDX.Direct3D11.DeviceContext\"/> interface to use for the FFT. </param>\n            <param name=\"x\">Length of the first dimension of the FFT.</param>\n            <param name=\"y\">Length of the second dimension of the FFT.</param>\n            <param name=\"flags\">Flag affecting the behavior of the FFT, can be 0 or a combination of flags from <see cref=\"T:SharpDX.Direct3D11.FastFourierTransformCreationFlags\"/>. </param>\n            <returns>an <see cref=\"T:SharpDX.Direct3D11.FastFourierTransform\"/> interface reference.</returns>\n            <unmanaged>HRESULT D3DX11CreateFFT1DReal([None] ID3D11DeviceContext* pDeviceContext,[None] int X,[None] int Flags,[Out] D3DX11_FFT_BUFFER_INFO* pBufferInfo,[Out] ID3DX11FFT** ppFFT)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.FastFourierTransform.Create3DComplex(SharpDX.Direct3D11.DeviceContext,System.Int32,System.Int32,System.Int32)\">\n            <summary>\t\n            Creates a new three-dimensional complex FFT.\t\n            </summary>\t\n            <param name=\"context\">Pointer to the <see cref=\"T:SharpDX.Direct3D11.DeviceContext\"/> interface to use for the FFT. </param>\n            <param name=\"x\">Length of the first dimension of the FFT.</param>\n            <param name=\"y\">Length of the second dimension of the FFT.</param>\n            <param name=\"z\">Length of the third dimension of the FFT.</param>\n            <returns>an <see cref=\"T:SharpDX.Direct3D11.FastFourierTransform\"/> interface reference.</returns>\n            <unmanaged>HRESULT D3DX11CreateFFT1DReal([None] ID3D11DeviceContext* pDeviceContext,[None] int X,[None] int Flags,[Out] D3DX11_FFT_BUFFER_INFO* pBufferInfo,[Out] ID3DX11FFT** ppFFT)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.FastFourierTransform.Create3DComplex(SharpDX.Direct3D11.DeviceContext,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D11.FastFourierTransformCreationFlags)\">\n            <summary>\t\n            Creates a new three-dimensional complex FFT.\t\n            </summary>\t\n            <param name=\"context\">Pointer to the <see cref=\"T:SharpDX.Direct3D11.DeviceContext\"/> interface to use for the FFT. </param>\n            <param name=\"x\">Length of the first dimension of the FFT.</param>\n            <param name=\"y\">Length of the second dimension of the FFT.</param>\n            <param name=\"z\">Length of the third dimension of the FFT.</param>\n            <param name=\"flags\">Flag affecting the behavior of the FFT, can be 0 or a combination of flags from <see cref=\"T:SharpDX.Direct3D11.FastFourierTransformCreationFlags\"/>. </param>\n            <returns>an <see cref=\"T:SharpDX.Direct3D11.FastFourierTransform\"/> interface reference.</returns>\n            <unmanaged>HRESULT D3DX11CreateFFT1DReal([None] ID3D11DeviceContext* pDeviceContext,[None] int X,[None] int Flags,[Out] D3DX11_FFT_BUFFER_INFO* pBufferInfo,[Out] ID3DX11FFT** ppFFT)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.FastFourierTransform.Create3DReal(SharpDX.Direct3D11.DeviceContext,System.Int32,System.Int32,System.Int32)\">\n            <summary>\t\n            Creates a new three-dimensional real FFT.\t\n            </summary>\t\n            <param name=\"context\">Pointer to the <see cref=\"T:SharpDX.Direct3D11.DeviceContext\"/> interface to use for the FFT. </param>\n            <param name=\"x\">Length of the first dimension of the FFT.</param>\n            <param name=\"y\">Length of the second dimension of the FFT.</param>\n            <param name=\"z\">Length of the third dimension of the FFT.</param>\n            <returns>an <see cref=\"T:SharpDX.Direct3D11.FastFourierTransform\"/> interface reference.</returns>\n            <unmanaged>HRESULT D3DX11CreateFFT1DReal([None] ID3D11DeviceContext* pDeviceContext,[None] int X,[None] int Flags,[Out] D3DX11_FFT_BUFFER_INFO* pBufferInfo,[Out] ID3DX11FFT** ppFFT)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.FastFourierTransform.Create3DReal(SharpDX.Direct3D11.DeviceContext,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D11.FastFourierTransformCreationFlags)\">\n            <summary>\t\n            Creates a new three-dimensional real FFT.\t\n            </summary>\t\n            <param name=\"context\">Pointer to the <see cref=\"T:SharpDX.Direct3D11.DeviceContext\"/> interface to use for the FFT. </param>\n            <param name=\"x\">Length of the first dimension of the FFT.</param>\n            <param name=\"y\">Length of the second dimension of the FFT.</param>\n            <param name=\"z\">Length of the third dimension of the FFT.</param>\n            <param name=\"flags\">Flag affecting the behavior of the FFT, can be 0 or a combination of flags from <see cref=\"T:SharpDX.Direct3D11.FastFourierTransformCreationFlags\"/>. </param>\n            <returns>an <see cref=\"T:SharpDX.Direct3D11.FastFourierTransform\"/> interface reference.</returns>\n            <unmanaged>HRESULT D3DX11CreateFFT1DReal([None] ID3D11DeviceContext* pDeviceContext,[None] int X,[None] int Flags,[Out] D3DX11_FFT_BUFFER_INFO* pBufferInfo,[Out] ID3DX11FFT** ppFFT)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.FastFourierTransform.ForwardTransform(SharpDX.Direct3D11.UnorderedAccessView)\">\n            <summary>\n            Performs a forward FFT.\n            </summary>\n            <param name=\"inputBufferRef\">Pointer to <see cref=\"T:SharpDX.Direct3D11.UnorderedAccessView\"/> onto the input buffer.</param>\n            <returns>\n            Returns the computation in a temp buffers; in addition, the last buffer written to is returned.\n            </returns>\n            <unmanaged>HRESULT ID3DX11FFT::ForwardTransform([In] const ID3D11UnorderedAccessView* pInputBuffer,[InOut] void** ppOutputBuffer)</unmanaged>\n            <remarks>\n            ForwardTransform can be called after buffers have been attached to the context using <see cref=\"M:SharpDX.Direct3D11.FastFourierTransform.AttachBuffersAndPrecompute(SharpDX.Direct3D11.UnorderedAccessView[],SharpDX.Direct3D11.UnorderedAccessView[])\"/>. The combination of pInputBuffer and *ppOuputBuffer can be one of the temp buffers.The format of complex data is interleaved components (for example, (Real0, Imag0),  (Real1, Imag1) ... , and so on). Data is stored in row major order.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.FastFourierTransform.InverseTransform(SharpDX.Direct3D11.UnorderedAccessView)\">\n            <summary>\t\n            Performs an inverse FFT.\t\n            </summary>\t\n            <param name=\"inputBufferRef\"><para>Pointer to <see cref=\"T:SharpDX.Direct3D11.UnorderedAccessView\"/> onto the input buffer.</para></param>\t\n            <returns>\n            Returns the computation in a temp buffers; in addition, the last buffer written to is returned.\n            </returns>\n            <unmanaged>HRESULT ID3DX11FFT::InverseTransform([In] const ID3D11UnorderedAccessView* pInputBuffer,[InOut] void** ppOutputBuffer)</unmanaged>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.FastFourierTransform.ForwardTransform(SharpDX.Direct3D11.UnorderedAccessView,SharpDX.Direct3D11.UnorderedAccessView)\">\n            <summary>\n            Performs a forward FFT.\n            </summary>\n            <param name=\"inputBufferRef\">Pointer to <see cref=\"T:SharpDX.Direct3D11.UnorderedAccessView\"/> onto the input buffer.</param>\n            <param name=\"outputBufferView\"><para>Buffer <see cref=\"T:SharpDX.Direct3D11.UnorderedAccessView\"/> reference used as the output buffer.</para></param>\t\n            <returns>Returns one of the return codes described in the topic Direct3D 11 Return Codes.</returns>\t\n            <unmanaged>HRESULT ID3DX11FFT::ForwardTransform([In] const ID3D11UnorderedAccessView* pInputBuffer,[InOut] void** ppOutputBuffer)</unmanaged>\n            <remarks>\n            ForwardTransform can be called after buffers have been attached to the context using <see cref=\"M:SharpDX.Direct3D11.FastFourierTransform.AttachBuffersAndPrecompute(SharpDX.Direct3D11.UnorderedAccessView[],SharpDX.Direct3D11.UnorderedAccessView[])\"/>. The combination of pInputBuffer and *ppOuputBuffer can be one of the temp buffers.The format of complex data is interleaved components (for example, (Real0, Imag0),  (Real1, Imag1) ... , and so on). Data is stored in row major order.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.FastFourierTransform.InverseTransform(SharpDX.Direct3D11.UnorderedAccessView,SharpDX.Direct3D11.UnorderedAccessView)\">\n            <summary>\t\n            Performs an inverse FFT.\t\n            </summary>\t\n            <param name=\"inputBufferRef\"><para>Pointer to <see cref=\"T:SharpDX.Direct3D11.UnorderedAccessView\"/> onto the input buffer.</para></param>\t\n            <param name=\"outputBufferView\"><para>Buffer <see cref=\"T:SharpDX.Direct3D11.UnorderedAccessView\"/> reference used as the output buffer.</para></param>\t\n            <returns>Returns one of the return codes described in the topic Direct3D 11 Return Codes.</returns>\t\n            <unmanaged>HRESULT ID3DX11FFT::InverseTransform([In] const ID3D11UnorderedAccessView* pInputBuffer,[InOut] void** ppOutputBuffer)</unmanaged>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.FastFourierTransform.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D11.FastFourierTransform\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.FastFourierTransform.op_Explicit(System.IntPtr)~SharpDX.Direct3D11.FastFourierTransform\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D11.FastFourierTransform\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.FastFourierTransform.SetForwardScale(System.Single)\">\n            <summary>\t\n            <p>Sets the scale used for forward transforms.</p>\t\n            </summary>\t\n            <param name=\"forwardScale\"><dd>  <p>The scale to use for forward transforms.  Setting <em>ForwardScale</em> to 0 causes the default values of 1 to be used.</p> </dd></param>\t\n            <returns><p>Returns one of the return codes described in the topic Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>SetForwardScale</strong> sets the scale used by <strong><see cref=\"M:SharpDX.Direct3D11.FastFourierTransform.ForwardTransform(SharpDX.Direct3D11.UnorderedAccessView)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11FFT::SetForwardScale']/*\"/>\t\n            <msdn-id>ff476852</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11FFT::SetForwardScale([In] float ForwardScale)</unmanaged>\t\n            <unmanaged-short>ID3DX11FFT::SetForwardScale</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.FastFourierTransform.GetForwardScale\">\n            <summary>\t\n            <p>Gets the scale for forward transforms.</p>\t\n            </summary>\t\n            <returns><p>Scale for forward transforms.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11FFT::GetForwardScale']/*\"/>\t\n            <msdn-id>ff476849</msdn-id>\t\n            <unmanaged>float ID3DX11FFT::GetForwardScale()</unmanaged>\t\n            <unmanaged-short>ID3DX11FFT::GetForwardScale</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.FastFourierTransform.SetInverseScale(System.Single)\">\n            <summary>\t\n            <p>Sets the scale used for inverse transforms.</p>\t\n            </summary>\t\n            <param name=\"inverseScale\"><dd>  <p>Scale used for inverse transforms.  Setting <em>InverseScale</em> to 0 causes the default value of 1/N to be used,  where N is the product of the transformed dimension lengths.</p> </dd></param>\t\n            <returns><p>Returns one of the return codes described in the topic Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>SetInverseScale</strong> sets the scale used by <strong><see cref=\"M:SharpDX.Direct3D11.FastFourierTransform.InverseTransform(SharpDX.Direct3D11.UnorderedAccessView)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11FFT::SetInverseScale']/*\"/>\t\n            <msdn-id>ff476853</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11FFT::SetInverseScale([In] float InverseScale)</unmanaged>\t\n            <unmanaged-short>ID3DX11FFT::SetInverseScale</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.FastFourierTransform.GetInverseScale\">\n            <summary>\t\n            <p>Get the scale for inverse transforms.</p>\t\n            </summary>\t\n            <returns><p>Scale for inverse transforms.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11FFT::GetInverseScale']/*\"/>\t\n            <msdn-id>ff476850</msdn-id>\t\n            <unmanaged>float ID3DX11FFT::GetInverseScale()</unmanaged>\t\n            <unmanaged-short>ID3DX11FFT::GetInverseScale</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.FastFourierTransform.AttachBuffersAndPrecompute(System.Int32,SharpDX.Direct3D11.UnorderedAccessView[],System.Int32,SharpDX.Direct3D11.UnorderedAccessView[])\">\n            <summary>\t\n            <p>Attaches buffers to an FFT context and performs any required precomputations.</p>\t\n            </summary>\t\n            <param name=\"numTempBuffers\"><dd>  <p>Number of buffers in <em>ppTempBuffers</em>.</p> </dd></param>\t\n            <param name=\"tempBuffersOut\"><dd>  <p>Temporary buffers to attach.</p> </dd></param>\t\n            <param name=\"numPrecomputeBuffers\"><dd>  <p>Number of buffers in <em>ppPrecomputeBuffers</em>.</p> </dd></param>\t\n            <param name=\"precomputeBufferSizesOut\"><dd>  <p>Buffers to hold precomputed data.</p> </dd></param>\t\n            <returns><p>Returns one of the return codes described in the topic Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>The buffers must be no smaller than the corresponding buffer sizes returned by <see cref=\"M:SharpDX.Direct3D11.D3DCSX.CreateFFT(SharpDX.Direct3D11.DeviceContext,SharpDX.Direct3D11.FastFourierTransformDescription@,System.Int32,SharpDX.Direct3D11.FastFourierTransformBufferRequirements@,SharpDX.Direct3D11.FastFourierTransform)\"/>*(). Temporary buffers can be shared between multiple contexts, though care should be taken not  to concurrently execute multiple FFTs which share temp buffers.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11FFT::AttachBuffersAndPrecompute']/*\"/>\t\n            <msdn-id>ff476847</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11FFT::AttachBuffersAndPrecompute([In] unsigned int NumTempBuffers,[In, Buffer] const ID3D11UnorderedAccessView** ppTempBuffers,[In] unsigned int NumPrecomputeBuffers,[In, Buffer] const ID3D11UnorderedAccessView** ppPrecomputeBufferSizes)</unmanaged>\t\n            <unmanaged-short>ID3DX11FFT::AttachBuffersAndPrecompute</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.FastFourierTransform.AttachBuffersAndPrecompute(System.Int32,SharpDX.ComArray{SharpDX.Direct3D11.UnorderedAccessView},System.Int32,SharpDX.ComArray{SharpDX.Direct3D11.UnorderedAccessView})\">\n            <summary>\t\n            <p>Attaches buffers to an FFT context and performs any required precomputations.</p>\t\n            </summary>\t\n            <param name=\"numTempBuffers\"><dd>  <p>Number of buffers in <em>ppTempBuffers</em>.</p> </dd></param>\t\n            <param name=\"tempBuffersOut\"><dd>  <p>Temporary buffers to attach.</p> </dd></param>\t\n            <param name=\"numPrecomputeBuffers\"><dd>  <p>Number of buffers in <em>ppPrecomputeBuffers</em>.</p> </dd></param>\t\n            <param name=\"precomputeBufferSizesOut\"><dd>  <p>Buffers to hold precomputed data.</p> </dd></param>\t\n            <returns><p>Returns one of the return codes described in the topic Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>The buffers must be no smaller than the corresponding buffer sizes returned by <see cref=\"M:SharpDX.Direct3D11.D3DCSX.CreateFFT(SharpDX.Direct3D11.DeviceContext,SharpDX.Direct3D11.FastFourierTransformDescription@,System.Int32,SharpDX.Direct3D11.FastFourierTransformBufferRequirements@,SharpDX.Direct3D11.FastFourierTransform)\"/>*(). Temporary buffers can be shared between multiple contexts, though care should be taken not  to concurrently execute multiple FFTs which share temp buffers.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11FFT::AttachBuffersAndPrecompute']/*\"/>\t\n            <msdn-id>ff476847</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11FFT::AttachBuffersAndPrecompute([In] unsigned int NumTempBuffers,[In, Buffer] const ID3D11UnorderedAccessView** ppTempBuffers,[In] unsigned int NumPrecomputeBuffers,[In, Buffer] const ID3D11UnorderedAccessView** ppPrecomputeBufferSizes)</unmanaged>\t\n            <unmanaged-short>ID3DX11FFT::AttachBuffersAndPrecompute</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.FastFourierTransform.ForwardTransform(SharpDX.Direct3D11.UnorderedAccessView,System.IntPtr@)\">\n            <summary>\t\n            <p>Performs a forward FFT.</p>\t\n            </summary>\t\n            <param name=\"inputBufferRef\"><dd>  <p>Pointer to <strong><see cref=\"T:SharpDX.Direct3D11.UnorderedAccessView\"/></strong> onto the input buffer.</p> </dd></param>\t\n            <param name=\"outputBufferOut\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D11.UnorderedAccessView\"/></strong> reference.  If *<em>ppOutputBuffer</em> is <strong><c>null</c></strong>, the computation will switch between temp buffers; in addition, the last buffer written to is stored at *<em>ppOutputBuffer</em>. Otherwise, *<em>ppOutputBuffer</em> is used as the output buffer (which might incur an extra copy).</p> </dd></param>\t\n            <returns><p>Returns one of the return codes described in the topic Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>ForwardTransform</strong> can be called after buffers have been attached to the context using <strong><see cref=\"M:SharpDX.Direct3D11.FastFourierTransform.AttachBuffersAndPrecompute(SharpDX.Direct3D11.UnorderedAccessView[],SharpDX.Direct3D11.UnorderedAccessView[])\"/></strong>. The combination of <em>pInputBuffer</em> and *<em>ppOuputBuffer</em> can be one of the temp buffers.</p><p>The format of complex data is interleaved components (for example, (Real0, Imag0),  (Real1, Imag1) ... , and so on). Data is stored in row major order.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11FFT::ForwardTransform']/*\"/>\t\n            <msdn-id>ff476848</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11FFT::ForwardTransform([In] const ID3D11UnorderedAccessView* pInputBuffer,[InOut] void** ppOutputBuffer)</unmanaged>\t\n            <unmanaged-short>ID3DX11FFT::ForwardTransform</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.FastFourierTransform.InverseTransform(SharpDX.Direct3D11.UnorderedAccessView,System.IntPtr@)\">\n            <summary>\t\n            <p>Performs an inverse FFT.</p>\t\n            </summary>\t\n            <param name=\"inputBufferRef\"><dd>  <p>Pointer to <strong><see cref=\"T:SharpDX.Direct3D11.UnorderedAccessView\"/></strong> onto the input buffer.</p> </dd></param>\t\n            <param name=\"outputBufferOut\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D11.UnorderedAccessView\"/></strong> reference.  If *<em>ppOutput</em> is <strong><c>null</c></strong>, then the computation will switch between temp buffers; in addition, the last buffer written to is stored at *<em>ppOutput</em>. Otherwise, *<em>ppOutput</em> is used as the output buffer (which might incur an extra copy).</p> </dd></param>\t\n            <returns><p>Returns one of the return codes described in the topic Direct3D 11 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11FFT::InverseTransform']/*\"/>\t\n            <msdn-id>ff476851</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11FFT::InverseTransform([In] const ID3D11UnorderedAccessView* pInputBuffer,[InOut] void** ppOutputBuffer)</unmanaged>\t\n            <unmanaged-short>ID3DX11FFT::InverseTransform</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.FastFourierTransform.BufferRequirements\">\n            <summary>\n            Gets the buffer requirements.\n            </summary>\n            <value>The buffer requirements.</value>\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.FastFourierTransform.ForwardScale\">\n            <summary>\t\n            <p>Gets or sets the scale for forward transforms.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11FFT::GetForwardScale']/*\"/>\t\n            <msdn-id>ff476849</msdn-id>\t\n            <unmanaged>GetForwardScale / SetForwardScale</unmanaged>\t\n            <unmanaged-short>GetForwardScale</unmanaged-short>\t\n            <unmanaged>float ID3DX11FFT::GetForwardScale()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.FastFourierTransform.InverseScale\">\n            <summary>\t\n            <p>Get or sets the scale for inverse transforms.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11FFT::GetInverseScale']/*\"/>\t\n            <msdn-id>ff476850</msdn-id>\t\n            <unmanaged>GetInverseScale / SetInverseScale</unmanaged>\t\n            <unmanaged-short>GetInverseScale</unmanaged-short>\t\n            <unmanaged>float ID3DX11FFT::GetInverseScale()</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.AsynchronousFlags\">\n            <summary>\t\n            <p>Optional flags that control the behavior of <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.GetDataInternal(SharpDX.Direct3D11.Asynchronous,System.IntPtr,System.Int32,SharpDX.Direct3D11.AsynchronousFlags)\"/></strong>.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_ASYNC_GETDATA_FLAG']/*\"/>\t\n            <msdn-id>ff476084</msdn-id>\t\n            <unmanaged>D3D11_ASYNC_GETDATA_FLAG</unmanaged>\t\n            <unmanaged-short>D3D11_ASYNC_GETDATA_FLAG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.AsynchronousFlags.DoNotFlush\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_ASYNC_GETDATA_DONOTFLUSH']/*\"/>\t\n            <unmanaged>D3D11_ASYNC_GETDATA_DONOTFLUSH</unmanaged>\t\n            <unmanaged-short>D3D11_ASYNC_GETDATA_DONOTFLUSH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.AsynchronousFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.BindFlags\">\n            <summary>\t\n            <p>Identifies how to bind a resource to the pipeline.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>In general, binding flags can be combined using a logical OR (except the constant-buffer flag); however, you should use a single flag to allow the device to optimize the resource usage.</p><p>This enumeration is used by a:</p><ul> <li> <strong>Buffer description</strong> when creating a buffer.</li> <li>Texture description when creating a texture (see <strong><see cref=\"T:SharpDX.Direct3D11.Texture1DDescription\"/></strong> or <strong><see cref=\"T:SharpDX.Direct3D11.Texture2DDescription\"/></strong> or <strong><see cref=\"T:SharpDX.Direct3D11.Texture3DDescription\"/></strong>).</li> </ul><p>A shader-resource buffer is NOT a constant buffer; rather, it is a texture or buffer resource that is bound to a shader, that contains texture or buffer data (it is not limited to a single element type in the buffer). A shader-resource buffer is created with the <see cref=\"F:SharpDX.Direct3D11.BindFlags.ShaderResource\"/> flag and is bound to the pipeline using one of these APIs: <strong><see cref=\"M:SharpDX.Direct3D11.GeometryShaderStage.SetShaderResources(System.Int32,System.Int32,System.IntPtr)\"/></strong>, <strong><see cref=\"M:SharpDX.Direct3D11.PixelShaderStage.SetShaderResources(System.Int32,System.Int32,System.IntPtr)\"/></strong>, or <strong><see cref=\"M:SharpDX.Direct3D11.VertexShaderStage.SetShaderResources(System.Int32,System.Int32,System.IntPtr)\"/></strong>. Furthermore, a shader-resource buffer cannot use the <strong><see cref=\"F:SharpDX.Direct3D11.MapMode.WriteNoOverwrite\"/></strong> flag.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_BIND_FLAG']/*\"/>\t\n            <msdn-id>ff476085</msdn-id>\t\n            <unmanaged>D3D11_BIND_FLAG</unmanaged>\t\n            <unmanaged-short>D3D11_BIND_FLAG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.BindFlags.VertexBuffer\">\n            <summary>\t\n            <dd> <p>Bind a buffer as a vertex buffer to the input-assembler stage.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_BIND_VERTEX_BUFFER']/*\"/>\t\n            <msdn-id>ff476085</msdn-id>\t\n            <unmanaged>D3D11_BIND_VERTEX_BUFFER</unmanaged>\t\n            <unmanaged-short>D3D11_BIND_VERTEX_BUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.BindFlags.IndexBuffer\">\n            <summary>\t\n            <dd> <p>Bind a buffer as an index buffer to the input-assembler stage.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_BIND_INDEX_BUFFER']/*\"/>\t\n            <msdn-id>ff476085</msdn-id>\t\n            <unmanaged>D3D11_BIND_INDEX_BUFFER</unmanaged>\t\n            <unmanaged-short>D3D11_BIND_INDEX_BUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.BindFlags.ConstantBuffer\">\n            <summary>\t\n            <dd> <p>Bind a buffer as a constant buffer to a shader stage; this flag may NOT be combined with any other bind flag.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_BIND_CONSTANT_BUFFER']/*\"/>\t\n            <msdn-id>ff476085</msdn-id>\t\n            <unmanaged>D3D11_BIND_CONSTANT_BUFFER</unmanaged>\t\n            <unmanaged-short>D3D11_BIND_CONSTANT_BUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.BindFlags.ShaderResource\">\n            <summary>\t\n            <dd> <p>Bind a buffer or texture to a shader stage; this flag cannot be used with the <strong><see cref=\"F:SharpDX.Direct3D11.MapMode.WriteNoOverwrite\"/></strong> flag.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_BIND_SHADER_RESOURCE']/*\"/>\t\n            <msdn-id>ff476085</msdn-id>\t\n            <unmanaged>D3D11_BIND_SHADER_RESOURCE</unmanaged>\t\n            <unmanaged-short>D3D11_BIND_SHADER_RESOURCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.BindFlags.StreamOutput\">\n            <summary>\t\n            <dd> <p>Bind an output buffer for the stream-output stage.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_BIND_STREAM_OUTPUT']/*\"/>\t\n            <msdn-id>ff476085</msdn-id>\t\n            <unmanaged>D3D11_BIND_STREAM_OUTPUT</unmanaged>\t\n            <unmanaged-short>D3D11_BIND_STREAM_OUTPUT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.BindFlags.RenderTarget\">\n            <summary>\t\n            <dd> <p>Bind a texture as a render target for the output-merger stage.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_BIND_RENDER_TARGET']/*\"/>\t\n            <msdn-id>ff476085</msdn-id>\t\n            <unmanaged>D3D11_BIND_RENDER_TARGET</unmanaged>\t\n            <unmanaged-short>D3D11_BIND_RENDER_TARGET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.BindFlags.DepthStencil\">\n            <summary>\t\n            <dd> <p>Bind a texture as a depth-stencil target for the output-merger stage.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_BIND_DEPTH_STENCIL']/*\"/>\t\n            <msdn-id>ff476085</msdn-id>\t\n            <unmanaged>D3D11_BIND_DEPTH_STENCIL</unmanaged>\t\n            <unmanaged-short>D3D11_BIND_DEPTH_STENCIL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.BindFlags.UnorderedAccess\">\n            <summary>\t\n            <dd> <p>Bind an unordered access resource.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_BIND_UNORDERED_ACCESS']/*\"/>\t\n            <msdn-id>ff476085</msdn-id>\t\n            <unmanaged>D3D11_BIND_UNORDERED_ACCESS</unmanaged>\t\n            <unmanaged-short>D3D11_BIND_UNORDERED_ACCESS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.BindFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.BlendOperation\">\n            <summary>\t\n            <p>RGB or alpha blending operation.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The runtime implements RGB blending and alpha blending separately. Therefore, blend state requires separate blend operations for RGB data and alpha data. These blend operations are specified in a <strong>blend description</strong>. The two sources?Source 1, called SrcBlend and SrcBlendAlpha, and Source 2, called DestBlend and DestBlendAlpha?are shown in the blending block diagram.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_BLEND_OP']/*\"/>\t\n            <msdn-id>ff476088</msdn-id>\t\n            <unmanaged>D3D11_BLEND_OP</unmanaged>\t\n            <unmanaged-short>D3D11_BLEND_OP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.BlendOperation.Add\">\n            <summary>\t\n            <dd> <p>Add source 1 and source 2.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_BLEND_OP_ADD']/*\"/>\t\n            <msdn-id>ff476088</msdn-id>\t\n            <unmanaged>D3D11_BLEND_OP_ADD</unmanaged>\t\n            <unmanaged-short>D3D11_BLEND_OP_ADD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.BlendOperation.Subtract\">\n            <summary>\t\n            <dd> <p>Subtract source 1 from source 2.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_BLEND_OP_SUBTRACT']/*\"/>\t\n            <msdn-id>ff476088</msdn-id>\t\n            <unmanaged>D3D11_BLEND_OP_SUBTRACT</unmanaged>\t\n            <unmanaged-short>D3D11_BLEND_OP_SUBTRACT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.BlendOperation.ReverseSubtract\">\n            <summary>\t\n            <dd> <p>Subtract source 2 from source 1.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_BLEND_OP_REV_SUBTRACT']/*\"/>\t\n            <msdn-id>ff476088</msdn-id>\t\n            <unmanaged>D3D11_BLEND_OP_REV_SUBTRACT</unmanaged>\t\n            <unmanaged-short>D3D11_BLEND_OP_REV_SUBTRACT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.BlendOperation.Minimum\">\n            <summary>\t\n            <dd> <p>Find the minimum of source 1 and source 2.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_BLEND_OP_MIN']/*\"/>\t\n            <msdn-id>ff476088</msdn-id>\t\n            <unmanaged>D3D11_BLEND_OP_MIN</unmanaged>\t\n            <unmanaged-short>D3D11_BLEND_OP_MIN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.BlendOperation.Maximum\">\n            <summary>\t\n            <dd> <p>Find the maximum of source 1 and source 2.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_BLEND_OP_MAX']/*\"/>\t\n            <msdn-id>ff476088</msdn-id>\t\n            <unmanaged>D3D11_BLEND_OP_MAX</unmanaged>\t\n            <unmanaged-short>D3D11_BLEND_OP_MAX</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.BlendOption\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Blend options. A blend option identifies the data source and an optional pre-blend operation.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Blend operations are specified in a <strong>blend description</strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_BLEND']/*\"/>\t\n            <msdn-id>ff476086</msdn-id>\t\n            <unmanaged>D3D11_BLEND</unmanaged>\t\n            <unmanaged-short>D3D11_BLEND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.BlendOption.Zero\">\n            <summary>\t\n            <dd> <p>The data source is the color black (0, 0, 0, 0). No pre-blend operation.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_BLEND_ZERO']/*\"/>\t\n            <msdn-id>ff476086</msdn-id>\t\n            <unmanaged>D3D11_BLEND_ZERO</unmanaged>\t\n            <unmanaged-short>D3D11_BLEND_ZERO</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.BlendOption.One\">\n            <summary>\t\n            <dd> <p>The data source is the color white (1, 1, 1, 1). No pre-blend operation.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_BLEND_ONE']/*\"/>\t\n            <msdn-id>ff476086</msdn-id>\t\n            <unmanaged>D3D11_BLEND_ONE</unmanaged>\t\n            <unmanaged-short>D3D11_BLEND_ONE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.BlendOption.SourceColor\">\n            <summary>\t\n            <dd> <p>The data source is color data (RGB) from a pixel shader. No pre-blend operation.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_BLEND_SRC_COLOR']/*\"/>\t\n            <msdn-id>ff476086</msdn-id>\t\n            <unmanaged>D3D11_BLEND_SRC_COLOR</unmanaged>\t\n            <unmanaged-short>D3D11_BLEND_SRC_COLOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.BlendOption.InverseSourceColor\">\n            <summary>\t\n            <dd> <p>The data source is color data (RGB) from a pixel shader. The pre-blend operation inverts the data, generating 1 - RGB.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_BLEND_INV_SRC_COLOR']/*\"/>\t\n            <msdn-id>ff476086</msdn-id>\t\n            <unmanaged>D3D11_BLEND_INV_SRC_COLOR</unmanaged>\t\n            <unmanaged-short>D3D11_BLEND_INV_SRC_COLOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.BlendOption.SourceAlpha\">\n            <summary>\t\n            <dd> <p>The data source is alpha data (A) from a pixel shader. No pre-blend operation.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_BLEND_SRC_ALPHA']/*\"/>\t\n            <msdn-id>ff476086</msdn-id>\t\n            <unmanaged>D3D11_BLEND_SRC_ALPHA</unmanaged>\t\n            <unmanaged-short>D3D11_BLEND_SRC_ALPHA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.BlendOption.InverseSourceAlpha\">\n            <summary>\t\n            <dd> <p>The data source is alpha data (A) from a pixel shader. The pre-blend operation inverts the data, generating 1 - A.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_BLEND_INV_SRC_ALPHA']/*\"/>\t\n            <msdn-id>ff476086</msdn-id>\t\n            <unmanaged>D3D11_BLEND_INV_SRC_ALPHA</unmanaged>\t\n            <unmanaged-short>D3D11_BLEND_INV_SRC_ALPHA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.BlendOption.DestinationAlpha\">\n            <summary>\t\n            <dd> <p>The data source is alpha data from a rendertarget. No pre-blend operation.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_BLEND_DEST_ALPHA']/*\"/>\t\n            <msdn-id>ff476086</msdn-id>\t\n            <unmanaged>D3D11_BLEND_DEST_ALPHA</unmanaged>\t\n            <unmanaged-short>D3D11_BLEND_DEST_ALPHA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.BlendOption.InverseDestinationAlpha\">\n            <summary>\t\n            <dd> <p>The data source is alpha data from a rendertarget. The pre-blend operation inverts the data, generating 1 - A.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_BLEND_INV_DEST_ALPHA']/*\"/>\t\n            <msdn-id>ff476086</msdn-id>\t\n            <unmanaged>D3D11_BLEND_INV_DEST_ALPHA</unmanaged>\t\n            <unmanaged-short>D3D11_BLEND_INV_DEST_ALPHA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.BlendOption.DestinationColor\">\n            <summary>\t\n            <dd> <p>The data source is color data from a rendertarget. No pre-blend operation.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_BLEND_DEST_COLOR']/*\"/>\t\n            <msdn-id>ff476086</msdn-id>\t\n            <unmanaged>D3D11_BLEND_DEST_COLOR</unmanaged>\t\n            <unmanaged-short>D3D11_BLEND_DEST_COLOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.BlendOption.InverseDestinationColor\">\n            <summary>\t\n            <dd> <p>The data source is color data from a rendertarget. The pre-blend operation inverts the data, generating 1 - RGB.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_BLEND_INV_DEST_COLOR']/*\"/>\t\n            <msdn-id>ff476086</msdn-id>\t\n            <unmanaged>D3D11_BLEND_INV_DEST_COLOR</unmanaged>\t\n            <unmanaged-short>D3D11_BLEND_INV_DEST_COLOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.BlendOption.SourceAlphaSaturate\">\n            <summary>\t\n            <dd> <p>The data source is alpha data from a pixel shader. The pre-blend operation clamps the data to 1 or less. \t\n            </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_BLEND_SRC_ALPHA_SAT']/*\"/>\t\n            <msdn-id>ff476086</msdn-id>\t\n            <unmanaged>D3D11_BLEND_SRC_ALPHA_SAT</unmanaged>\t\n            <unmanaged-short>D3D11_BLEND_SRC_ALPHA_SAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.BlendOption.BlendFactor\">\n            <summary>\t\n            <dd> <p>The data source is the blend factor set with <strong><see cref=\"M:SharpDX.Direct3D11.OutputMergerStage.SetBlendState(SharpDX.Direct3D11.BlendState,System.Nullable{SharpDX.Color4},System.UInt32)\"/></strong>. No pre-blend operation.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_BLEND_BLEND_FACTOR']/*\"/>\t\n            <msdn-id>ff476086</msdn-id>\t\n            <unmanaged>D3D11_BLEND_BLEND_FACTOR</unmanaged>\t\n            <unmanaged-short>D3D11_BLEND_BLEND_FACTOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.BlendOption.InverseBlendFactor\">\n            <summary>\t\n            <dd> <p>The data source is the blend factor set with <strong><see cref=\"M:SharpDX.Direct3D11.OutputMergerStage.SetBlendState(SharpDX.Direct3D11.BlendState,System.Nullable{SharpDX.Color4},System.UInt32)\"/></strong>. The pre-blend operation inverts the blend factor, generating 1 - blend_factor.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_BLEND_INV_BLEND_FACTOR']/*\"/>\t\n            <msdn-id>ff476086</msdn-id>\t\n            <unmanaged>D3D11_BLEND_INV_BLEND_FACTOR</unmanaged>\t\n            <unmanaged-short>D3D11_BLEND_INV_BLEND_FACTOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.BlendOption.SecondarySourceColor\">\n            <summary>\t\n            <dd> <p>The data sources are both color data output by a pixel shader. There is no pre-blend operation. This options supports dual-source color blending.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_BLEND_SRC1_COLOR']/*\"/>\t\n            <msdn-id>ff476086</msdn-id>\t\n            <unmanaged>D3D11_BLEND_SRC1_COLOR</unmanaged>\t\n            <unmanaged-short>D3D11_BLEND_SRC1_COLOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.BlendOption.InverseSecondarySourceColor\">\n            <summary>\t\n            <dd> <p>The data sources are both color data output by a pixel shader. The pre-blend operation inverts the data, generating 1 - RGB. This options supports dual-source color blending.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_BLEND_INV_SRC1_COLOR']/*\"/>\t\n            <msdn-id>ff476086</msdn-id>\t\n            <unmanaged>D3D11_BLEND_INV_SRC1_COLOR</unmanaged>\t\n            <unmanaged-short>D3D11_BLEND_INV_SRC1_COLOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.BlendOption.SecondarySourceAlpha\">\n            <summary>\t\n            <dd> <p>The data sources are alpha data output by a pixel shader. There is no pre-blend operation. This options supports dual-source color blending.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_BLEND_SRC1_ALPHA']/*\"/>\t\n            <msdn-id>ff476086</msdn-id>\t\n            <unmanaged>D3D11_BLEND_SRC1_ALPHA</unmanaged>\t\n            <unmanaged-short>D3D11_BLEND_SRC1_ALPHA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.BlendOption.InverseSecondarySourceAlpha\">\n            <summary>\t\n            <dd> <p>The data sources are alpha data output by a pixel shader. The pre-blend operation inverts the data, generating 1 - A. This options supports dual-source color blending.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_BLEND_INV_SRC1_ALPHA']/*\"/>\t\n            <msdn-id>ff476086</msdn-id>\t\n            <unmanaged>D3D11_BLEND_INV_SRC1_ALPHA</unmanaged>\t\n            <unmanaged-short>D3D11_BLEND_INV_SRC1_ALPHA</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.ColorWriteMaskFlags\">\n            <summary>\t\n            <p>Identify which components of each pixel of a render target are writable during blending.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>These flags can be combined with a bitwise OR.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_COLOR_WRITE_ENABLE']/*\"/>\t\n            <msdn-id>ff476100</msdn-id>\t\n            <unmanaged>D3D11_COLOR_WRITE_ENABLE</unmanaged>\t\n            <unmanaged-short>D3D11_COLOR_WRITE_ENABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ColorWriteMaskFlags.Red\">\n            <summary>\t\n            <dd> <p>Allow data to be stored in the red component.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_COLOR_WRITE_ENABLE_RED']/*\"/>\t\n            <msdn-id>ff476100</msdn-id>\t\n            <unmanaged>D3D11_COLOR_WRITE_ENABLE_RED</unmanaged>\t\n            <unmanaged-short>D3D11_COLOR_WRITE_ENABLE_RED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ColorWriteMaskFlags.Green\">\n            <summary>\t\n            <dd> <p>Allow data to be stored in the green component.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_COLOR_WRITE_ENABLE_GREEN']/*\"/>\t\n            <msdn-id>ff476100</msdn-id>\t\n            <unmanaged>D3D11_COLOR_WRITE_ENABLE_GREEN</unmanaged>\t\n            <unmanaged-short>D3D11_COLOR_WRITE_ENABLE_GREEN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ColorWriteMaskFlags.Blue\">\n            <summary>\t\n            <dd> <p>Allow data to be stored in the blue component.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_COLOR_WRITE_ENABLE_BLUE']/*\"/>\t\n            <msdn-id>ff476100</msdn-id>\t\n            <unmanaged>D3D11_COLOR_WRITE_ENABLE_BLUE</unmanaged>\t\n            <unmanaged-short>D3D11_COLOR_WRITE_ENABLE_BLUE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ColorWriteMaskFlags.Alpha\">\n            <summary>\t\n            <dd> <p>Allow data to be stored in the alpha component.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_COLOR_WRITE_ENABLE_ALPHA']/*\"/>\t\n            <msdn-id>ff476100</msdn-id>\t\n            <unmanaged>D3D11_COLOR_WRITE_ENABLE_ALPHA</unmanaged>\t\n            <unmanaged-short>D3D11_COLOR_WRITE_ENABLE_ALPHA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ColorWriteMaskFlags.All\">\n            <summary>\t\n            <dd> <p>Allow data to be stored in all components.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_COLOR_WRITE_ENABLE_ALL']/*\"/>\t\n            <msdn-id>ff476100</msdn-id>\t\n            <unmanaged>D3D11_COLOR_WRITE_ENABLE_ALL</unmanaged>\t\n            <unmanaged-short>D3D11_COLOR_WRITE_ENABLE_ALL</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.Comparison\">\n            <summary>\t\n            <p>Comparison options.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>A comparison option determines whether how the runtime compares source (new) data against destination (existing) data before storing the new data. The comparison option is declared in a description before an object is created. The API allows you to set a comparison option for a depth-stencil buffer (see <strong><see cref=\"T:SharpDX.Direct3D11.DepthStencilStateDescription\"/></strong>), depth-stencil operations (see <strong><see cref=\"T:SharpDX.Direct3D11.DepthStencilOperationDescription\"/></strong>), or sampler state (see <strong><see cref=\"T:SharpDX.Direct3D11.SamplerStateDescription\"/></strong>).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_COMPARISON_FUNC']/*\"/>\t\n            <msdn-id>ff476101</msdn-id>\t\n            <unmanaged>D3D11_COMPARISON_FUNC</unmanaged>\t\n            <unmanaged-short>D3D11_COMPARISON_FUNC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.Comparison.Never\">\n            <summary>\t\n            <dd> <p>Never pass the comparison.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_COMPARISON_NEVER']/*\"/>\t\n            <msdn-id>ff476101</msdn-id>\t\n            <unmanaged>D3D11_COMPARISON_NEVER</unmanaged>\t\n            <unmanaged-short>D3D11_COMPARISON_NEVER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.Comparison.Less\">\n            <summary>\t\n            <dd> <p>If the source data is less than the destination data, the comparison passes.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_COMPARISON_LESS']/*\"/>\t\n            <msdn-id>ff476101</msdn-id>\t\n            <unmanaged>D3D11_COMPARISON_LESS</unmanaged>\t\n            <unmanaged-short>D3D11_COMPARISON_LESS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.Comparison.Equal\">\n            <summary>\t\n            <dd> <p>If the source data is equal to the destination data, the comparison passes.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_COMPARISON_EQUAL']/*\"/>\t\n            <msdn-id>ff476101</msdn-id>\t\n            <unmanaged>D3D11_COMPARISON_EQUAL</unmanaged>\t\n            <unmanaged-short>D3D11_COMPARISON_EQUAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.Comparison.LessEqual\">\n            <summary>\t\n            <dd> <p>If the source data is less than or equal to the destination data, the comparison passes.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_COMPARISON_LESS_EQUAL']/*\"/>\t\n            <msdn-id>ff476101</msdn-id>\t\n            <unmanaged>D3D11_COMPARISON_LESS_EQUAL</unmanaged>\t\n            <unmanaged-short>D3D11_COMPARISON_LESS_EQUAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.Comparison.Greater\">\n            <summary>\t\n            <dd> <p>If the source data is greater than the destination data, the comparison passes.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_COMPARISON_GREATER']/*\"/>\t\n            <msdn-id>ff476101</msdn-id>\t\n            <unmanaged>D3D11_COMPARISON_GREATER</unmanaged>\t\n            <unmanaged-short>D3D11_COMPARISON_GREATER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.Comparison.NotEqual\">\n            <summary>\t\n            <dd> <p>If the source data is not equal to the destination data, the comparison passes.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_COMPARISON_NOT_EQUAL']/*\"/>\t\n            <msdn-id>ff476101</msdn-id>\t\n            <unmanaged>D3D11_COMPARISON_NOT_EQUAL</unmanaged>\t\n            <unmanaged-short>D3D11_COMPARISON_NOT_EQUAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.Comparison.GreaterEqual\">\n            <summary>\t\n            <dd> <p>If the source data is greater than or equal to the destination data, the comparison passes.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_COMPARISON_GREATER_EQUAL']/*\"/>\t\n            <msdn-id>ff476101</msdn-id>\t\n            <unmanaged>D3D11_COMPARISON_GREATER_EQUAL</unmanaged>\t\n            <unmanaged-short>D3D11_COMPARISON_GREATER_EQUAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.Comparison.Always\">\n            <summary>\t\n            <dd> <p>Always pass the comparison.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_COMPARISON_ALWAYS']/*\"/>\t\n            <msdn-id>ff476101</msdn-id>\t\n            <unmanaged>D3D11_COMPARISON_ALWAYS</unmanaged>\t\n            <unmanaged-short>D3D11_COMPARISON_ALWAYS</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.ComputeShaderFormatSupport\">\n            <summary>\t\n            <p>Unordered resource support options for a compute shader resource (see <strong><see cref=\"M:SharpDX.Direct3D11.Device.CheckFeatureSupport(SharpDX.Direct3D11.Feature)\"/></strong>).</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_FORMAT_SUPPORT2']/*\"/>\t\n            <msdn-id>ff476135</msdn-id>\t\n            <unmanaged>D3D11_FORMAT_SUPPORT2</unmanaged>\t\n            <unmanaged-short>D3D11_FORMAT_SUPPORT2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ComputeShaderFormatSupport.AtomicAdd\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_ADD']/*\"/>\t\n            <unmanaged>D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_ADD</unmanaged>\t\n            <unmanaged-short>D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_ADD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ComputeShaderFormatSupport.AtomicBitwiseOperations\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_BITWISE_OPS']/*\"/>\t\n            <unmanaged>D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_BITWISE_OPS</unmanaged>\t\n            <unmanaged-short>D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_BITWISE_OPS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ComputeShaderFormatSupport.AtomicCompareStoreOrCompareExchange\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_COMPARE_STORE_OR_COMPARE_EXCHANGE']/*\"/>\t\n            <unmanaged>D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_COMPARE_STORE_OR_COMPARE_EXCHANGE</unmanaged>\t\n            <unmanaged-short>D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_COMPARE_STORE_OR_COMPARE_EXCHANGE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ComputeShaderFormatSupport.AtomicExchange\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_EXCHANGE']/*\"/>\t\n            <unmanaged>D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_EXCHANGE</unmanaged>\t\n            <unmanaged-short>D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_EXCHANGE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ComputeShaderFormatSupport.AtomicSignedMinimumOrMaximum\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_SIGNED_MIN_OR_MAX']/*\"/>\t\n            <unmanaged>D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_SIGNED_MIN_OR_MAX</unmanaged>\t\n            <unmanaged-short>D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_SIGNED_MIN_OR_MAX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ComputeShaderFormatSupport.AtomicUnsignedMinimumOrMaximum\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_UNSIGNED_MIN_OR_MAX']/*\"/>\t\n            <unmanaged>D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_UNSIGNED_MIN_OR_MAX</unmanaged>\t\n            <unmanaged-short>D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_UNSIGNED_MIN_OR_MAX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ComputeShaderFormatSupport.TypedLoad\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_FORMAT_SUPPORT2_UAV_TYPED_LOAD']/*\"/>\t\n            <unmanaged>D3D11_FORMAT_SUPPORT2_UAV_TYPED_LOAD</unmanaged>\t\n            <unmanaged-short>D3D11_FORMAT_SUPPORT2_UAV_TYPED_LOAD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ComputeShaderFormatSupport.TypedStore\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_FORMAT_SUPPORT2_UAV_TYPED_STORE']/*\"/>\t\n            <unmanaged>D3D11_FORMAT_SUPPORT2_UAV_TYPED_STORE</unmanaged>\t\n            <unmanaged-short>D3D11_FORMAT_SUPPORT2_UAV_TYPED_STORE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ComputeShaderFormatSupport.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.CounterKind\">\n            <summary>\t\n            <p>Describes a counter.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure is used by <strong><see cref=\"M:SharpDX.Direct3D11.Counter.GetDescription(SharpDX.Direct3D11.CounterDescription@)\"/></strong>, <strong><see cref=\"M:SharpDX.Direct3D11.Device.CheckCounter(SharpDX.Direct3D11.CounterDescription,SharpDX.Direct3D11.CounterType@,System.Int32@,System.IntPtr,System.IntPtr,System.IntPtr,System.IntPtr,System.IntPtr,System.IntPtr)\"/></strong> and <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateCounter(SharpDX.Direct3D11.CounterDescription,SharpDX.Direct3D11.Counter)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_COUNTER']/*\"/>\t\n            <msdn-id>ff476103</msdn-id>\t\n            <unmanaged>D3D11_COUNTER</unmanaged>\t\n            <unmanaged-short>D3D11_COUNTER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.CounterKind.DeviceDependent0\">\n            <summary>\t\n            <dd> <p>Type of counter (see <strong><see cref=\"T:SharpDX.Direct3D11.CounterKind\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_COUNTER_DEVICE_DEPENDENT_0']/*\"/>\t\n            <msdn-id>ff476103</msdn-id>\t\n            <unmanaged>D3D11_COUNTER_DEVICE_DEPENDENT_0</unmanaged>\t\n            <unmanaged-short>D3D11_COUNTER_DEVICE_DEPENDENT_0</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.CounterType\">\n            <summary>\t\n            <p>Data type of a performance counter.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>These flags are an output parameter in <strong><see cref=\"M:SharpDX.Direct3D11.Device.CheckCounter(SharpDX.Direct3D11.CounterDescription,SharpDX.Direct3D11.CounterType@,System.Int32@,System.IntPtr,System.IntPtr,System.IntPtr,System.IntPtr,System.IntPtr,System.IntPtr)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_COUNTER_TYPE']/*\"/>\t\n            <msdn-id>ff476105</msdn-id>\t\n            <unmanaged>D3D11_COUNTER_TYPE</unmanaged>\t\n            <unmanaged-short>D3D11_COUNTER_TYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.CounterType.Float32\">\n            <summary>\t\n            <dd> <p>32-bit floating point.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_COUNTER_TYPE_FLOAT32']/*\"/>\t\n            <msdn-id>ff476105</msdn-id>\t\n            <unmanaged>D3D11_COUNTER_TYPE_FLOAT32</unmanaged>\t\n            <unmanaged-short>D3D11_COUNTER_TYPE_FLOAT32</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.CounterType.UInt16\">\n            <summary>\t\n            <dd> <p>16-bit unsigned integer.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_COUNTER_TYPE_UINT16']/*\"/>\t\n            <msdn-id>ff476105</msdn-id>\t\n            <unmanaged>D3D11_COUNTER_TYPE_UINT16</unmanaged>\t\n            <unmanaged-short>D3D11_COUNTER_TYPE_UINT16</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.CounterType.UInt32\">\n            <summary>\t\n            <dd> <p>32-bit unsigned integer.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_COUNTER_TYPE_UINT32']/*\"/>\t\n            <msdn-id>ff476105</msdn-id>\t\n            <unmanaged>D3D11_COUNTER_TYPE_UINT32</unmanaged>\t\n            <unmanaged-short>D3D11_COUNTER_TYPE_UINT32</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.CounterType.UInt64\">\n            <summary>\t\n            <dd> <p>64-bit unsigned integer.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_COUNTER_TYPE_UINT64']/*\"/>\t\n            <msdn-id>ff476105</msdn-id>\t\n            <unmanaged>D3D11_COUNTER_TYPE_UINT64</unmanaged>\t\n            <unmanaged-short>D3D11_COUNTER_TYPE_UINT64</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.CpuAccessFlags\">\n            <summary>\t\n            <p>Specifies the types of CPU access allowed for a resource.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This enumeration is used in <strong><see cref=\"T:SharpDX.Direct3D11.BufferDescription\"/></strong>, <strong><see cref=\"T:SharpDX.Direct3D11.Texture1DDescription\"/></strong>, <strong><see cref=\"T:SharpDX.Direct3D11.Texture2DDescription\"/></strong>, <strong><see cref=\"T:SharpDX.Direct3D11.Texture3DDescription\"/></strong>. </p><p>Applications may combine one or more of these flags with a logical OR. When possible, create resources with no CPU access flags, as this enables better resource optimiztion.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_CPU_ACCESS_FLAG']/*\"/>\t\n            <msdn-id>ff476106</msdn-id>\t\n            <unmanaged>D3D11_CPU_ACCESS_FLAG</unmanaged>\t\n            <unmanaged-short>D3D11_CPU_ACCESS_FLAG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.CpuAccessFlags.Write\">\n            <summary>\t\n            <dd> <p>The resource is to be mappable so that the CPU can change its contents. Resources created with this flag cannot be set as outputs of the pipeline and must be created with either dynamic or staging usage (see <strong><see cref=\"T:SharpDX.Direct3D11.ResourceUsage\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_CPU_ACCESS_WRITE']/*\"/>\t\n            <msdn-id>ff476106</msdn-id>\t\n            <unmanaged>D3D11_CPU_ACCESS_WRITE</unmanaged>\t\n            <unmanaged-short>D3D11_CPU_ACCESS_WRITE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.CpuAccessFlags.Read\">\n            <summary>\t\n            <dd> <p>The resource is to be mappable so that the CPU can read its contents. Resources created with this flag cannot be set as either inputs or outputs to the pipeline and must be created with staging usage (see <strong><see cref=\"T:SharpDX.Direct3D11.ResourceUsage\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_CPU_ACCESS_READ']/*\"/>\t\n            <msdn-id>ff476106</msdn-id>\t\n            <unmanaged>D3D11_CPU_ACCESS_READ</unmanaged>\t\n            <unmanaged-short>D3D11_CPU_ACCESS_READ</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.CpuAccessFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.CullMode\">\n            <summary>\t\n            <p>Indicates triangles facing a particular direction are not drawn.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This enumeration is part of a rasterizer-state object description (see <strong><see cref=\"T:SharpDX.Direct3D11.RasterizerStateDescription\"/></strong>).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_CULL_MODE']/*\"/>\t\n            <msdn-id>ff476108</msdn-id>\t\n            <unmanaged>D3D11_CULL_MODE</unmanaged>\t\n            <unmanaged-short>D3D11_CULL_MODE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.CullMode.None\">\n            <summary>\t\n            <dd> <p>Always draw all triangles.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_CULL_NONE']/*\"/>\t\n            <msdn-id>ff476108</msdn-id>\t\n            <unmanaged>D3D11_CULL_NONE</unmanaged>\t\n            <unmanaged-short>D3D11_CULL_NONE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.CullMode.Front\">\n            <summary>\t\n            <dd> <p>Do not draw triangles that are front-facing.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_CULL_FRONT']/*\"/>\t\n            <msdn-id>ff476108</msdn-id>\t\n            <unmanaged>D3D11_CULL_FRONT</unmanaged>\t\n            <unmanaged-short>D3D11_CULL_FRONT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.CullMode.Back\">\n            <summary>\t\n            <dd> <p>Do not draw triangles that are back-facing.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_CULL_BACK']/*\"/>\t\n            <msdn-id>ff476108</msdn-id>\t\n            <unmanaged>D3D11_CULL_BACK</unmanaged>\t\n            <unmanaged-short>D3D11_CULL_BACK</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.DebugFeatureFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_DEBUG_FEATURE_FLAGS']/*\"/>\t\n            <unmanaged>D3D11_DEBUG_FEATURE_FLAGS</unmanaged>\t\n            <unmanaged-short>D3D11_DEBUG_FEATURE_FLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.DebugFeatureFlags.FlushPerRender\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_DEBUG_FEATURE_FLUSH_PER_RENDER_OP']/*\"/>\t\n            <unmanaged>D3D11_DEBUG_FEATURE_FLUSH_PER_RENDER_OP</unmanaged>\t\n            <unmanaged-short>D3D11_DEBUG_FEATURE_FLUSH_PER_RENDER_OP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.DebugFeatureFlags.FinishPerRender\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_DEBUG_FEATURE_FINISH_PER_RENDER_OP']/*\"/>\t\n            <unmanaged>D3D11_DEBUG_FEATURE_FINISH_PER_RENDER_OP</unmanaged>\t\n            <unmanaged-short>D3D11_DEBUG_FEATURE_FINISH_PER_RENDER_OP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.DebugFeatureFlags.PresentPerRender\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_DEBUG_FEATURE_PRESENT_PER_RENDER_OP']/*\"/>\t\n            <unmanaged>D3D11_DEBUG_FEATURE_PRESENT_PER_RENDER_OP</unmanaged>\t\n            <unmanaged-short>D3D11_DEBUG_FEATURE_PRESENT_PER_RENDER_OP</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.DepthStencilClearFlags\">\n            <summary>\t\n            <p>Specifies the parts of the depth stencil to clear.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>These flags are used when calling <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.ClearDepthStencilView(SharpDX.Direct3D11.DepthStencilView,SharpDX.Direct3D11.DepthStencilClearFlags,System.Single,System.Byte)\"/></strong>; the flags can be combined with a bitwise OR.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_CLEAR_FLAG']/*\"/>\t\n            <msdn-id>ff476099</msdn-id>\t\n            <unmanaged>D3D11_CLEAR_FLAG</unmanaged>\t\n            <unmanaged-short>D3D11_CLEAR_FLAG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.DepthStencilClearFlags.Depth\">\n            <summary>\t\n            <dd> <p>Clear the depth buffer.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_CLEAR_DEPTH']/*\"/>\t\n            <msdn-id>ff476099</msdn-id>\t\n            <unmanaged>D3D11_CLEAR_DEPTH</unmanaged>\t\n            <unmanaged-short>D3D11_CLEAR_DEPTH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.DepthStencilClearFlags.Stencil\">\n            <summary>\t\n            <dd> <p>Clear the stencil buffer.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_CLEAR_STENCIL']/*\"/>\t\n            <msdn-id>ff476099</msdn-id>\t\n            <unmanaged>D3D11_CLEAR_STENCIL</unmanaged>\t\n            <unmanaged-short>D3D11_CLEAR_STENCIL</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.DepthStencilViewDimension\">\n            <summary>\t\n            <p>Specifies how to access a resource used in a depth-stencil view.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This enumeration is used in <strong><see cref=\"T:SharpDX.Direct3D11.DepthStencilViewDescription\"/></strong> to create a depth-stencil view.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_DSV_DIMENSION']/*\"/>\t\n            <msdn-id>ff476115</msdn-id>\t\n            <unmanaged>D3D11_DSV_DIMENSION</unmanaged>\t\n            <unmanaged-short>D3D11_DSV_DIMENSION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.DepthStencilViewDimension.Unknown\">\n            <summary>\t\n            <dd> <p><em><see cref=\"F:SharpDX.Direct3D11.DepthStencilViewDimension.Unknown\"/></em> is not a valid value for <strong><see cref=\"T:SharpDX.Direct3D11.DepthStencilViewDescription\"/></strong> and is not used.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_DSV_DIMENSION_UNKNOWN']/*\"/>\t\n            <msdn-id>ff476115</msdn-id>\t\n            <unmanaged>D3D11_DSV_DIMENSION_UNKNOWN</unmanaged>\t\n            <unmanaged-short>D3D11_DSV_DIMENSION_UNKNOWN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.DepthStencilViewDimension.Texture1D\">\n            <summary>\t\n            <dd> <p>The resource will be accessed as a 1D texture.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_DSV_DIMENSION_TEXTURE1D']/*\"/>\t\n            <msdn-id>ff476115</msdn-id>\t\n            <unmanaged>D3D11_DSV_DIMENSION_TEXTURE1D</unmanaged>\t\n            <unmanaged-short>D3D11_DSV_DIMENSION_TEXTURE1D</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.DepthStencilViewDimension.Texture1DArray\">\n            <summary>\t\n            <dd> <p>The resource will be accessed as an array of 1D textures.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_DSV_DIMENSION_TEXTURE1DARRAY']/*\"/>\t\n            <msdn-id>ff476115</msdn-id>\t\n            <unmanaged>D3D11_DSV_DIMENSION_TEXTURE1DARRAY</unmanaged>\t\n            <unmanaged-short>D3D11_DSV_DIMENSION_TEXTURE1DARRAY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.DepthStencilViewDimension.Texture2D\">\n            <summary>\t\n            <dd> <p>The resource will be accessed as a 2D texture.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_DSV_DIMENSION_TEXTURE2D']/*\"/>\t\n            <msdn-id>ff476115</msdn-id>\t\n            <unmanaged>D3D11_DSV_DIMENSION_TEXTURE2D</unmanaged>\t\n            <unmanaged-short>D3D11_DSV_DIMENSION_TEXTURE2D</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.DepthStencilViewDimension.Texture2DArray\">\n            <summary>\t\n            <dd> <p>The resource will be accessed as an array of 2D textures.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_DSV_DIMENSION_TEXTURE2DARRAY']/*\"/>\t\n            <msdn-id>ff476115</msdn-id>\t\n            <unmanaged>D3D11_DSV_DIMENSION_TEXTURE2DARRAY</unmanaged>\t\n            <unmanaged-short>D3D11_DSV_DIMENSION_TEXTURE2DARRAY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.DepthStencilViewDimension.Texture2DMultisampled\">\n            <summary>\t\n            <dd> <p>The resource will be accessed as a 2D texture with multisampling.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_DSV_DIMENSION_TEXTURE2DMS']/*\"/>\t\n            <msdn-id>ff476115</msdn-id>\t\n            <unmanaged>D3D11_DSV_DIMENSION_TEXTURE2DMS</unmanaged>\t\n            <unmanaged-short>D3D11_DSV_DIMENSION_TEXTURE2DMS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.DepthStencilViewDimension.Texture2DMultisampledArray\">\n            <summary>\t\n            <dd> <p>The resource will be accessed as an array of 2D textures with multisampling.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_DSV_DIMENSION_TEXTURE2DMSARRAY']/*\"/>\t\n            <msdn-id>ff476115</msdn-id>\t\n            <unmanaged>D3D11_DSV_DIMENSION_TEXTURE2DMSARRAY</unmanaged>\t\n            <unmanaged-short>D3D11_DSV_DIMENSION_TEXTURE2DMSARRAY</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.DepthStencilViewFlags\">\n            <summary>\t\n            <p>Depth-stencil view options.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This enumeration is used by <strong><see cref=\"T:SharpDX.Direct3D11.DepthStencilViewDescription\"/></strong>.</p><p>Limiting a depth-stencil buffer to read-only access allows more than one depth-stencil view to be bound to the pipeline simultaneously, since it is not possible to have a read/write conflicts between separate views.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_DSV_FLAG']/*\"/>\t\n            <msdn-id>ff476116</msdn-id>\t\n            <unmanaged>D3D11_DSV_FLAG</unmanaged>\t\n            <unmanaged-short>D3D11_DSV_FLAG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.DepthStencilViewFlags.ReadOnlyDepth\">\n            <summary>\t\n            <dd> <p>Indicates that depth values are read only.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_DSV_READ_ONLY_DEPTH']/*\"/>\t\n            <msdn-id>ff476116</msdn-id>\t\n            <unmanaged>D3D11_DSV_READ_ONLY_DEPTH</unmanaged>\t\n            <unmanaged-short>D3D11_DSV_READ_ONLY_DEPTH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.DepthStencilViewFlags.ReadOnlyStencil\">\n            <summary>\t\n            <dd> <p>Indicates that stencil values are read only.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_DSV_READ_ONLY_STENCIL']/*\"/>\t\n            <msdn-id>ff476116</msdn-id>\t\n            <unmanaged>D3D11_DSV_READ_ONLY_STENCIL</unmanaged>\t\n            <unmanaged-short>D3D11_DSV_READ_ONLY_STENCIL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.DepthStencilViewFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.DepthWriteMask\">\n            <summary>\t\n            <p>Identify the portion of a depth-stencil buffer for writing depth data.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_DEPTH_WRITE_MASK']/*\"/>\t\n            <msdn-id>ff476113</msdn-id>\t\n            <unmanaged>D3D11_DEPTH_WRITE_MASK</unmanaged>\t\n            <unmanaged-short>D3D11_DEPTH_WRITE_MASK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.DepthWriteMask.Zero\">\n            <summary>\t\n            <dd> <p>Turn off writes to the depth-stencil buffer.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_DEPTH_WRITE_MASK_ZERO']/*\"/>\t\n            <msdn-id>ff476113</msdn-id>\t\n            <unmanaged>D3D11_DEPTH_WRITE_MASK_ZERO</unmanaged>\t\n            <unmanaged-short>D3D11_DEPTH_WRITE_MASK_ZERO</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.DepthWriteMask.All\">\n            <summary>\t\n            <dd> <p>Turn on writes to the depth-stencil buffer.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_DEPTH_WRITE_MASK_ALL']/*\"/>\t\n            <msdn-id>ff476113</msdn-id>\t\n            <unmanaged>D3D11_DEPTH_WRITE_MASK_ALL</unmanaged>\t\n            <unmanaged-short>D3D11_DEPTH_WRITE_MASK_ALL</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.DeviceContextType\">\n            <summary>\t\n            <p>Device context options.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This enumeration is used by <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.GetTypeInfo\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_DEVICE_CONTEXT_TYPE']/*\"/>\t\n            <msdn-id>ff476114</msdn-id>\t\n            <unmanaged>D3D11_DEVICE_CONTEXT_TYPE</unmanaged>\t\n            <unmanaged-short>D3D11_DEVICE_CONTEXT_TYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.DeviceContextType.Immediate\">\n            <summary>\t\n            <dd> <p>The device context is an immediate context.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_DEVICE_CONTEXT_IMMEDIATE']/*\"/>\t\n            <msdn-id>ff476114</msdn-id>\t\n            <unmanaged>D3D11_DEVICE_CONTEXT_IMMEDIATE</unmanaged>\t\n            <unmanaged-short>D3D11_DEVICE_CONTEXT_IMMEDIATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.DeviceContextType.Deferred\">\n            <summary>\t\n            <dd> <p>The device context is a deferred context.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_DEVICE_CONTEXT_DEFERRED']/*\"/>\t\n            <msdn-id>ff476114</msdn-id>\t\n            <unmanaged>D3D11_DEVICE_CONTEXT_DEFERRED</unmanaged>\t\n            <unmanaged-short>D3D11_DEVICE_CONTEXT_DEFERRED</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.DeviceCreationFlags\">\n            <summary>\t\n            <p>Describes parameters that are used to create a device.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Device creation flags are used by <strong><see cref=\"M:SharpDX.Direct3D11.D3D11.CreateDevice(SharpDX.DXGI.Adapter,SharpDX.Direct3D.DriverType,System.IntPtr,SharpDX.Direct3D11.DeviceCreationFlags,SharpDX.Direct3D.FeatureLevel[],System.Int32,System.Int32,SharpDX.Direct3D11.Device,SharpDX.Direct3D.FeatureLevel@,SharpDX.Direct3D11.DeviceContext@)\"/></strong> and <strong><see cref=\"M:SharpDX.Direct3D11.D3D11.CreateDeviceAndSwapChain(SharpDX.DXGI.Adapter,SharpDX.Direct3D.DriverType,System.IntPtr,SharpDX.Direct3D11.DeviceCreationFlags,SharpDX.Direct3D.FeatureLevel[],System.Int32,System.Int32,SharpDX.DXGI.SwapChainDescription@,SharpDX.DXGI.SwapChain@,SharpDX.Direct3D11.Device@,SharpDX.Direct3D.FeatureLevel@,SharpDX.Direct3D11.DeviceContext@)\"/></strong>.</p><p>An application might dynamically create (and destroy) threads to improve performance especially on a machine with multiple CPU cores. There may be cases, however, when an application needs to prevent extra threads from being created. This can happen when you want to simplify debugging, profile code or develop a tool for instance. For these cases, use <strong><see cref=\"F:SharpDX.Direct3D11.DeviceCreationFlags.PreventThreadingOptimizations\"/></strong> to request that the runtime and video driver not create any additional threads that might interfere with the application.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_CREATE_DEVICE_FLAG']/*\"/>\t\n            <msdn-id>ff476107</msdn-id>\t\n            <unmanaged>D3D11_CREATE_DEVICE_FLAG</unmanaged>\t\n            <unmanaged-short>D3D11_CREATE_DEVICE_FLAG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.DeviceCreationFlags.SingleThreaded\">\n            <summary>\t\n            <dd> <p>You should use this flag if your application will only call methods of Direct3D?11 interfaces from a single thread. By default, the <strong><see cref=\"T:SharpDX.Direct3D11.Device\"/></strong> object is  thread-safe.  By using this flag, you can increase performance. However, if you use this flag and your application calls methods of Direct3D?11 interfaces from multiple threads, undefined behavior might result.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_CREATE_DEVICE_SINGLETHREADED']/*\"/>\t\n            <msdn-id>ff476107</msdn-id>\t\n            <unmanaged>D3D11_CREATE_DEVICE_SINGLETHREADED</unmanaged>\t\n            <unmanaged-short>D3D11_CREATE_DEVICE_SINGLETHREADED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.DeviceCreationFlags.Debug\">\n            <summary>\t\n            <dd> <p>Creates a device that supports the debug layer.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_CREATE_DEVICE_DEBUG']/*\"/>\t\n            <msdn-id>ff476107</msdn-id>\t\n            <unmanaged>D3D11_CREATE_DEVICE_DEBUG</unmanaged>\t\n            <unmanaged-short>D3D11_CREATE_DEVICE_DEBUG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.DeviceCreationFlags.SwitchToRef\">\n            <summary>\t\n            <dd> <p><strong>Note</strong>??This flag is not supported in Direct3D?11.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_CREATE_DEVICE_SWITCH_TO_REF']/*\"/>\t\n            <msdn-id>ff476107</msdn-id>\t\n            <unmanaged>D3D11_CREATE_DEVICE_SWITCH_TO_REF</unmanaged>\t\n            <unmanaged-short>D3D11_CREATE_DEVICE_SWITCH_TO_REF</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.DeviceCreationFlags.PreventThreadingOptimizations\">\n            <summary>\t\n            <dd> <p>Prevents multiple threads from being created. When this flag is used with a Windows Advanced Rasterization Platform (WARP) device, no additional threads will be created by WARP  and all rasterization will occur on the calling thread. This flag is not recommended for general use. See remarks.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_CREATE_DEVICE_PREVENT_INTERNAL_THREADING_OPTIMIZATIONS']/*\"/>\t\n            <msdn-id>ff476107</msdn-id>\t\n            <unmanaged>D3D11_CREATE_DEVICE_PREVENT_INTERNAL_THREADING_OPTIMIZATIONS</unmanaged>\t\n            <unmanaged-short>D3D11_CREATE_DEVICE_PREVENT_INTERNAL_THREADING_OPTIMIZATIONS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.DeviceCreationFlags.BgraSupport\">\n            <summary>\t\n            <dd> <p>Required for Direct2D interoperability with Direct3D resources.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_CREATE_DEVICE_BGRA_SUPPORT']/*\"/>\t\n            <msdn-id>ff476107</msdn-id>\t\n            <unmanaged>D3D11_CREATE_DEVICE_BGRA_SUPPORT</unmanaged>\t\n            <unmanaged-short>D3D11_CREATE_DEVICE_BGRA_SUPPORT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.DeviceCreationFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.FastFourierTransformCreationFlags\">\n            <summary>\t\n            <p>FFT creation flags.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_FFT_CREATE_FLAG']/*\"/>\t\n            <msdn-id>ff476309</msdn-id>\t\n            <unmanaged>D3DX11_FFT_CREATE_FLAG</unmanaged>\t\n            <unmanaged-short>D3DX11_FFT_CREATE_FLAG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.FastFourierTransformCreationFlags.NoPrecomputeBuffers\">\n            <summary>\t\n            <dd> <p>Do not AddRef or Release temp and precompute buffers, caller is responsible for holding  references to these buffers.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_FFT_CREATE_FLAG_NO_PRECOMPUTE_BUFFERS']/*\"/>\t\n            <msdn-id>ff476309</msdn-id>\t\n            <unmanaged>D3DX11_FFT_CREATE_FLAG_NO_PRECOMPUTE_BUFFERS</unmanaged>\t\n            <unmanaged-short>D3DX11_FFT_CREATE_FLAG_NO_PRECOMPUTE_BUFFERS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.FastFourierTransformCreationFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.FastFourierTransformDataType\">\n            <summary>\t\n            <p>FFT data types.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_FFT_DATA_TYPE']/*\"/>\t\n            <msdn-id>ff476310</msdn-id>\t\n            <unmanaged>D3DX11_FFT_DATA_TYPE</unmanaged>\t\n            <unmanaged-short>D3DX11_FFT_DATA_TYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.FastFourierTransformDataType.Real\">\n            <summary>\t\n            <dd> <p>Real numbers.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_FFT_DATA_TYPE_REAL']/*\"/>\t\n            <msdn-id>ff476310</msdn-id>\t\n            <unmanaged>D3DX11_FFT_DATA_TYPE_REAL</unmanaged>\t\n            <unmanaged-short>D3DX11_FFT_DATA_TYPE_REAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.FastFourierTransformDataType.Complex\">\n            <summary>\t\n            <dd> <p>Complex numbers.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_FFT_DATA_TYPE_COMPLEX']/*\"/>\t\n            <msdn-id>ff476310</msdn-id>\t\n            <unmanaged>D3DX11_FFT_DATA_TYPE_COMPLEX</unmanaged>\t\n            <unmanaged-short>D3DX11_FFT_DATA_TYPE_COMPLEX</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.FastFourierTransformDimensions\">\n            <summary>\t\n            <p>Number of dimensions for FFT data.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_FFT_DIM_MASK']/*\"/>\t\n            <msdn-id>ff476312</msdn-id>\t\n            <unmanaged>D3DX11_FFT_DIM_MASK</unmanaged>\t\n            <unmanaged-short>D3DX11_FFT_DIM_MASK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.FastFourierTransformDimensions.Dimension1D\">\n            <summary>\t\n            <dd> <p>One dimension.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_FFT_DIM_MASK_1D']/*\"/>\t\n            <msdn-id>ff476312</msdn-id>\t\n            <unmanaged>D3DX11_FFT_DIM_MASK_1D</unmanaged>\t\n            <unmanaged-short>D3DX11_FFT_DIM_MASK_1D</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.FastFourierTransformDimensions.Dimension2D\">\n            <summary>\t\n            <dd> <p>Two dimensions.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_FFT_DIM_MASK_2D']/*\"/>\t\n            <msdn-id>ff476312</msdn-id>\t\n            <unmanaged>D3DX11_FFT_DIM_MASK_2D</unmanaged>\t\n            <unmanaged-short>D3DX11_FFT_DIM_MASK_2D</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.FastFourierTransformDimensions.Dimension3D\">\n            <summary>\t\n            <dd> <p>Three dimensions.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_FFT_DIM_MASK_3D']/*\"/>\t\n            <msdn-id>ff476312</msdn-id>\t\n            <unmanaged>D3DX11_FFT_DIM_MASK_3D</unmanaged>\t\n            <unmanaged-short>D3DX11_FFT_DIM_MASK_3D</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.Feature\">\n            <summary>\t\n            <p>Direct3D 11 feature options.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This enumeration is used when querying a driver about support for these features by calling <strong><see cref=\"M:SharpDX.Direct3D11.Device.CheckFeatureSupport(SharpDX.Direct3D11.Feature)\"/></strong>.   Each value in this enumeration has a corresponding data structure that is required to be passed to the <em>pFeatureSupportData</em> parameter  of <strong><see cref=\"M:SharpDX.Direct3D11.Device.CheckFeatureSupport(SharpDX.Direct3D11.Feature)\"/></strong>.</p><p>The following table shows the structures associated with each enumerant.</p><table> <tr><th>Enumerant</th><th>Associated Structure</th></tr> <tr><td><see cref=\"F:SharpDX.Direct3D11.Feature.Threading\"/></td><td> <strong><see cref=\"T:SharpDX.Direct3D11.FeatureDataThreading\"/></strong> </td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D11.Feature.ShaderDoubles\"/></td><td> <strong><see cref=\"T:SharpDX.Direct3D11.FeatureDataDoubles\"/></strong> </td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D11.Feature.FormatSupport\"/></td><td> <strong><see cref=\"T:SharpDX.Direct3D11.FeatureDataFormatSupport\"/></strong> </td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D11.Feature.ComputeShaders\"/></td><td> <strong><see cref=\"T:SharpDX.Direct3D11.FeatureDataFormatSupport2\"/></strong> </td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D11.Feature.D3D10XHardwareOptions\"/></td><td> <strong><see cref=\"T:SharpDX.Direct3D11.FeatureDataD3D10XHardwareOptions\"/></strong> </td></tr> <tr><td>D3D11_FEATURE_D3D11_OPTIONS</td><td> <strong>D3D11_FEATURE_DATA_D3D11_OPTIONS</strong> </td></tr> <tr><td>D3D11_FEATURE_ARCHITECTURE_INFO</td><td> <strong>D3D11_FEATURE_DATA_ARCHITECTURE_INFO</strong> </td></tr> <tr><td>D3D11_FEATURE_D3D9_OPTIONS</td><td> <strong>D3D11_FEATURE_DATA_D3D9_OPTIONS</strong> </td></tr> <tr><td>D3D11_FEATURE_SHADER_MIN_PRECISION_SUPPORT</td><td> <strong>D3D11_FEATURE_DATA_SHADER_MIN_PRECISION_SUPPORT</strong> </td></tr> </table><p>?</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_FEATURE']/*\"/>\t\n            <msdn-id>ff476124</msdn-id>\t\n            <unmanaged>D3D11_FEATURE</unmanaged>\t\n            <unmanaged-short>D3D11_FEATURE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.Feature.Threading\">\n            <summary>\t\n            <dd> <p>The driver supports multithreading.  To see an example of testing a driver for multithread support, see How To: Check for Driver Support.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_FEATURE_THREADING']/*\"/>\t\n            <msdn-id>ff476124</msdn-id>\t\n            <unmanaged>D3D11_FEATURE_THREADING</unmanaged>\t\n            <unmanaged-short>D3D11_FEATURE_THREADING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.Feature.ShaderDoubles\">\n            <summary>\t\n            <dd> <p>Supports the use of the double-precision shaders in HLSL.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_FEATURE_DOUBLES']/*\"/>\t\n            <msdn-id>ff476124</msdn-id>\t\n            <unmanaged>D3D11_FEATURE_DOUBLES</unmanaged>\t\n            <unmanaged-short>D3D11_FEATURE_DOUBLES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.Feature.FormatSupport\">\n            <summary>\t\n            <dd> <p>Supports the formats in <strong><see cref=\"T:SharpDX.Direct3D11.FormatSupport\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_FEATURE_FORMAT_SUPPORT']/*\"/>\t\n            <msdn-id>ff476124</msdn-id>\t\n            <unmanaged>D3D11_FEATURE_FORMAT_SUPPORT</unmanaged>\t\n            <unmanaged-short>D3D11_FEATURE_FORMAT_SUPPORT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.Feature.ComputeShaders\">\n            <summary>\t\n            <dd> <p>Supports the formats in <strong><see cref=\"T:SharpDX.Direct3D11.ComputeShaderFormatSupport\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_FEATURE_FORMAT_SUPPORT2']/*\"/>\t\n            <msdn-id>ff476124</msdn-id>\t\n            <unmanaged>D3D11_FEATURE_FORMAT_SUPPORT2</unmanaged>\t\n            <unmanaged-short>D3D11_FEATURE_FORMAT_SUPPORT2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.Feature.D3D10XHardwareOptions\">\n            <summary>\t\n            <dd> <p>Supports compute shaders and raw and structured buffers.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_FEATURE_D3D10_X_HARDWARE_OPTIONS']/*\"/>\t\n            <msdn-id>ff476124</msdn-id>\t\n            <unmanaged>D3D11_FEATURE_D3D10_X_HARDWARE_OPTIONS</unmanaged>\t\n            <unmanaged-short>D3D11_FEATURE_D3D10_X_HARDWARE_OPTIONS</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.FillMode\">\n            <summary>\t\n            <p>Determines the fill mode to use when rendering triangles.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This enumeration is part of a rasterizer-state object description (see <strong><see cref=\"T:SharpDX.Direct3D11.RasterizerStateDescription\"/></strong>).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_FILL_MODE']/*\"/>\t\n            <msdn-id>ff476131</msdn-id>\t\n            <unmanaged>D3D11_FILL_MODE</unmanaged>\t\n            <unmanaged-short>D3D11_FILL_MODE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.FillMode.Wireframe\">\n            <summary>\t\n            <dd> <p>Draw lines connecting the vertices. Adjacent vertices are not drawn.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_FILL_WIREFRAME']/*\"/>\t\n            <msdn-id>ff476131</msdn-id>\t\n            <unmanaged>D3D11_FILL_WIREFRAME</unmanaged>\t\n            <unmanaged-short>D3D11_FILL_WIREFRAME</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.FillMode.Solid\">\n            <summary>\t\n            <dd> <p>Fill the triangles formed by the vertices. Adjacent vertices are not drawn.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_FILL_SOLID']/*\"/>\t\n            <msdn-id>ff476131</msdn-id>\t\n            <unmanaged>D3D11_FILL_SOLID</unmanaged>\t\n            <unmanaged-short>D3D11_FILL_SOLID</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.Filter\">\n            <summary>\t\n            <p>Types of magnification or minification sampler filters.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_FILTER']/*\"/>\t\n            <msdn-id>ff476133</msdn-id>\t\n            <unmanaged>D3D11_FILTER</unmanaged>\t\n            <unmanaged-short>D3D11_FILTER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.Filter.MinMagMipPoint\">\n            <summary>\t\n            <dd> <p>Point filtering used as a texture magnification or minification filter. The texel with coordinates nearest to the desired pixel value is used. The texture filter to be used between mipmap levels is nearest-point mipmap filtering. The rasterizer uses the color from the texel of the nearest mipmap texture. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_FILTER_MIN_MAG_MIP_POINT']/*\"/>\t\n            <msdn-id>ff476133</msdn-id>\t\n            <unmanaged>D3D11_FILTER_MIN_MAG_MIP_POINT</unmanaged>\t\n            <unmanaged-short>D3D11_FILTER_MIN_MAG_MIP_POINT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.Filter.MinMagPointMipLinear\">\n            <summary>\t\n            <dd> <p>Bilinear interpolation filtering used as a texture magnification or minification filter. A weighted average of a 2 x 2 area of texels surrounding the desired pixel is used. The texture filter to use between mipmap levels is trilinear mipmap interpolation. The rasterizer linearly interpolates pixel color, using the texels of the two nearest mipmap textures. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_FILTER_MIN_MAG_POINT_MIP_LINEAR']/*\"/>\t\n            <msdn-id>ff476133</msdn-id>\t\n            <unmanaged>D3D11_FILTER_MIN_MAG_POINT_MIP_LINEAR</unmanaged>\t\n            <unmanaged-short>D3D11_FILTER_MIN_MAG_POINT_MIP_LINEAR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.Filter.MinPointMagLinearMipPoint\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT']/*\"/>\t\n            <unmanaged>D3D11_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT</unmanaged>\t\n            <unmanaged-short>D3D11_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.Filter.MinPointMagMipLinear\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_FILTER_MIN_POINT_MAG_MIP_LINEAR']/*\"/>\t\n            <unmanaged>D3D11_FILTER_MIN_POINT_MAG_MIP_LINEAR</unmanaged>\t\n            <unmanaged-short>D3D11_FILTER_MIN_POINT_MAG_MIP_LINEAR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.Filter.MinLinearMagMipPoint\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_FILTER_MIN_LINEAR_MAG_MIP_POINT']/*\"/>\t\n            <unmanaged>D3D11_FILTER_MIN_LINEAR_MAG_MIP_POINT</unmanaged>\t\n            <unmanaged-short>D3D11_FILTER_MIN_LINEAR_MAG_MIP_POINT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.Filter.MinLinearMagPointMipLinear\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR']/*\"/>\t\n            <unmanaged>D3D11_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR</unmanaged>\t\n            <unmanaged-short>D3D11_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.Filter.MinMagLinearMipPoint\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_FILTER_MIN_MAG_LINEAR_MIP_POINT']/*\"/>\t\n            <unmanaged>D3D11_FILTER_MIN_MAG_LINEAR_MIP_POINT</unmanaged>\t\n            <unmanaged-short>D3D11_FILTER_MIN_MAG_LINEAR_MIP_POINT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.Filter.MinMagMipLinear\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_FILTER_MIN_MAG_MIP_LINEAR']/*\"/>\t\n            <unmanaged>D3D11_FILTER_MIN_MAG_MIP_LINEAR</unmanaged>\t\n            <unmanaged-short>D3D11_FILTER_MIN_MAG_MIP_LINEAR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.Filter.Anisotropic\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_FILTER_ANISOTROPIC']/*\"/>\t\n            <unmanaged>D3D11_FILTER_ANISOTROPIC</unmanaged>\t\n            <unmanaged-short>D3D11_FILTER_ANISOTROPIC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.Filter.ComparisonMinMagMipPoint\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_FILTER_COMPARISON_MIN_MAG_MIP_POINT']/*\"/>\t\n            <unmanaged>D3D11_FILTER_COMPARISON_MIN_MAG_MIP_POINT</unmanaged>\t\n            <unmanaged-short>D3D11_FILTER_COMPARISON_MIN_MAG_MIP_POINT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.Filter.ComparisonMinMagPointMipLinear\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR']/*\"/>\t\n            <unmanaged>D3D11_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR</unmanaged>\t\n            <unmanaged-short>D3D11_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.Filter.ComparisonMinPointMagLinearMipPoint\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT']/*\"/>\t\n            <unmanaged>D3D11_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT</unmanaged>\t\n            <unmanaged-short>D3D11_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.Filter.ComparisonMinPointMagMipLinear\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR']/*\"/>\t\n            <unmanaged>D3D11_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR</unmanaged>\t\n            <unmanaged-short>D3D11_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.Filter.ComparisonMinLinearMagMipPoint\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT']/*\"/>\t\n            <unmanaged>D3D11_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT</unmanaged>\t\n            <unmanaged-short>D3D11_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.Filter.ComparisonMinLinearMagPointMipLinear\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR']/*\"/>\t\n            <unmanaged>D3D11_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR</unmanaged>\t\n            <unmanaged-short>D3D11_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.Filter.ComparisonMinMagLinearMipPoint\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT']/*\"/>\t\n            <unmanaged>D3D11_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT</unmanaged>\t\n            <unmanaged-short>D3D11_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.Filter.ComparisonMinMagMipLinear\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR']/*\"/>\t\n            <unmanaged>D3D11_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR</unmanaged>\t\n            <unmanaged-short>D3D11_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.Filter.ComparisonAnisotropic\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_FILTER_COMPARISON_ANISOTROPIC']/*\"/>\t\n            <unmanaged>D3D11_FILTER_COMPARISON_ANISOTROPIC</unmanaged>\t\n            <unmanaged-short>D3D11_FILTER_COMPARISON_ANISOTROPIC</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.FilterFlags\">\n            <summary>\t\n            <p>Texture filtering flags.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>D3DX11 automatically performs gamma correction (to convert color data from RGB space to standard RGB space) when loading texture data. This is automatically done for instance when RGB data is loaded from a .png file into an sRGB texture. Use the SRGB filter flags to indicate if the data does not need to be converted into sRGB space.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_FILTER_FLAG']/*\"/>\t\n            <msdn-id>ff476313</msdn-id>\t\n            <unmanaged>D3DX11_FILTER_FLAG</unmanaged>\t\n            <unmanaged-short>D3DX11_FILTER_FLAG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.FilterFlags.None\">\n            <summary>\t\n            <dd> <p>No scaling or filtering will take place. Pixels outside the bounds of the source image are assumed to be transparent black.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_FILTER_NONE']/*\"/>\t\n            <msdn-id>ff476313</msdn-id>\t\n            <unmanaged>D3DX11_FILTER_NONE</unmanaged>\t\n            <unmanaged-short>D3DX11_FILTER_NONE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.FilterFlags.Point\">\n            <summary>\t\n            <dd> <p>Each destination pixel is computed by sampling the nearest pixel from the source image.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_FILTER_POINT']/*\"/>\t\n            <msdn-id>ff476313</msdn-id>\t\n            <unmanaged>D3DX11_FILTER_POINT</unmanaged>\t\n            <unmanaged-short>D3DX11_FILTER_POINT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.FilterFlags.Linear\">\n            <summary>\t\n            <dd> <p>Each destination pixel is computed by sampling the four nearest pixels from the source image. This filter works best when the scale on both axes is less than two.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_FILTER_LINEAR']/*\"/>\t\n            <msdn-id>ff476313</msdn-id>\t\n            <unmanaged>D3DX11_FILTER_LINEAR</unmanaged>\t\n            <unmanaged-short>D3DX11_FILTER_LINEAR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.FilterFlags.Triangle\">\n            <summary>\t\n            <dd> <p>Every pixel in the source image contributes equally to the destination image. This is the slowest of the filters.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_FILTER_TRIANGLE']/*\"/>\t\n            <msdn-id>ff476313</msdn-id>\t\n            <unmanaged>D3DX11_FILTER_TRIANGLE</unmanaged>\t\n            <unmanaged-short>D3DX11_FILTER_TRIANGLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.FilterFlags.Box\">\n            <summary>\t\n            <dd> <p>Each pixel is computed by averaging a 2x2(x2) box of pixels from the source image. This filter works only when the dimensions of the destination are half those of the source, as is the case with mipmaps.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_FILTER_BOX']/*\"/>\t\n            <msdn-id>ff476313</msdn-id>\t\n            <unmanaged>D3DX11_FILTER_BOX</unmanaged>\t\n            <unmanaged-short>D3DX11_FILTER_BOX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.FilterFlags.MirrorU\">\n            <summary>\t\n            <dd> <p>Pixels off the edge of the texture on the u-axis should be mirrored, not wrapped.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_FILTER_MIRROR_U']/*\"/>\t\n            <msdn-id>ff476313</msdn-id>\t\n            <unmanaged>D3DX11_FILTER_MIRROR_U</unmanaged>\t\n            <unmanaged-short>D3DX11_FILTER_MIRROR_U</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.FilterFlags.MirrorV\">\n            <summary>\t\n            <dd> <p>Pixels off the edge of the texture on the v-axis should be mirrored, not wrapped.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_FILTER_MIRROR_V']/*\"/>\t\n            <msdn-id>ff476313</msdn-id>\t\n            <unmanaged>D3DX11_FILTER_MIRROR_V</unmanaged>\t\n            <unmanaged-short>D3DX11_FILTER_MIRROR_V</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.FilterFlags.MirrorW\">\n            <summary>\t\n            <dd> <p>Pixels off the edge of the texture on the w-axis should be mirrored, not wrapped.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_FILTER_MIRROR_W']/*\"/>\t\n            <msdn-id>ff476313</msdn-id>\t\n            <unmanaged>D3DX11_FILTER_MIRROR_W</unmanaged>\t\n            <unmanaged-short>D3DX11_FILTER_MIRROR_W</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.FilterFlags.Mirror\">\n            <summary>\t\n            <dd> <p>Specifying this flag is the same as specifying the <see cref=\"!:SharpDX.Direct3D9.Filter.MirrorU\"/>, <see cref=\"!:SharpDX.Direct3D9.Filter.MirrorV\"/>, and <see cref=\"!:SharpDX.Direct3D9.Filter.MirrorW\"/> flags.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_FILTER_MIRROR']/*\"/>\t\n            <msdn-id>ff476313</msdn-id>\t\n            <unmanaged>D3DX11_FILTER_MIRROR</unmanaged>\t\n            <unmanaged-short>D3DX11_FILTER_MIRROR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.FilterFlags.Dither\">\n            <summary>\t\n            <dd> <p>The resulting image must be dithered using a 4x4 ordered dither algorithm. This happens when converting from one format to another.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_FILTER_DITHER']/*\"/>\t\n            <msdn-id>ff476313</msdn-id>\t\n            <unmanaged>D3DX11_FILTER_DITHER</unmanaged>\t\n            <unmanaged-short>D3DX11_FILTER_DITHER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.FilterFlags.DitherDiffusion\">\n            <summary>\t\n            <dd> <p>Do diffuse dithering on the image when changing from one format to another.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_FILTER_DITHER_DIFFUSION']/*\"/>\t\n            <msdn-id>ff476313</msdn-id>\t\n            <unmanaged>D3DX11_FILTER_DITHER_DIFFUSION</unmanaged>\t\n            <unmanaged-short>D3DX11_FILTER_DITHER_DIFFUSION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.FilterFlags.SRgbIn\">\n            <summary>\t\n            <dd> <p>Input data is in standard RGB (sRGB) color space. See remarks.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_FILTER_SRGB_IN']/*\"/>\t\n            <msdn-id>ff476313</msdn-id>\t\n            <unmanaged>D3DX11_FILTER_SRGB_IN</unmanaged>\t\n            <unmanaged-short>D3DX11_FILTER_SRGB_IN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.FilterFlags.SRgbOut\">\n            <summary>\t\n            <dd> <p>Output data is in standard RGB (sRGB) color space. See remarks.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_FILTER_SRGB_OUT']/*\"/>\t\n            <msdn-id>ff476313</msdn-id>\t\n            <unmanaged>D3DX11_FILTER_SRGB_OUT</unmanaged>\t\n            <unmanaged-short>D3DX11_FILTER_SRGB_OUT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.FilterFlags.SRgb\">\n            <summary>\t\n            <dd> <p>Same as specifying <see cref=\"!:SharpDX.Direct3D9.Filter.SrgbIn\"/> | <see cref=\"!:SharpDX.Direct3D9.Filter.SrgbOut\"/>. See remarks.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_FILTER_SRGB']/*\"/>\t\n            <msdn-id>ff476313</msdn-id>\t\n            <unmanaged>D3DX11_FILTER_SRGB</unmanaged>\t\n            <unmanaged-short>D3DX11_FILTER_SRGB</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.FilterType\">\n            <summary>\t\n            <p>Types of magnification or minification sampler filters.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_FILTER_TYPE']/*\"/>\t\n            <msdn-id>ff476133</msdn-id>\t\n            <unmanaged>D3D11_FILTER_TYPE</unmanaged>\t\n            <unmanaged-short>D3D11_FILTER_TYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.FilterType.Point\">\n            <summary>\t\n            <dd> <p>Point filtering used as a texture magnification or minification filter. The texel with coordinates nearest to the desired pixel value is used. The texture filter to be used between mipmap levels is nearest-point mipmap filtering. The rasterizer uses the color from the texel of the nearest mipmap texture. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_FILTER_TYPE_POINT']/*\"/>\t\n            <msdn-id>ff476133</msdn-id>\t\n            <unmanaged>D3D11_FILTER_TYPE_POINT</unmanaged>\t\n            <unmanaged-short>D3D11_FILTER_TYPE_POINT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.FilterType.Linear\">\n            <summary>\t\n            <dd> <p>Bilinear interpolation filtering used as a texture magnification or minification filter. A weighted average of a 2 x 2 area of texels surrounding the desired pixel is used. The texture filter to use between mipmap levels is trilinear mipmap interpolation. The rasterizer linearly interpolates pixel color, using the texels of the two nearest mipmap textures. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_FILTER_TYPE_LINEAR']/*\"/>\t\n            <msdn-id>ff476133</msdn-id>\t\n            <unmanaged>D3D11_FILTER_TYPE_LINEAR</unmanaged>\t\n            <unmanaged-short>D3D11_FILTER_TYPE_LINEAR</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.FormatSupport\">\n            <summary>\t\n            <p>Which resources are supported for a given format and given device (see <strong><see cref=\"M:SharpDX.Direct3D11.Device.CheckFormatSupport(SharpDX.DXGI.Format)\"/></strong> and <strong><see cref=\"M:SharpDX.Direct3D11.Device.CheckFeatureSupport(SharpDX.Direct3D11.Feature)\"/></strong>).</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_FORMAT_SUPPORT']/*\"/>\t\n            <msdn-id>ff476134</msdn-id>\t\n            <unmanaged>D3D11_FORMAT_SUPPORT</unmanaged>\t\n            <unmanaged-short>D3D11_FORMAT_SUPPORT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.FormatSupport.Buffer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_FORMAT_SUPPORT_BUFFER']/*\"/>\t\n            <unmanaged>D3D11_FORMAT_SUPPORT_BUFFER</unmanaged>\t\n            <unmanaged-short>D3D11_FORMAT_SUPPORT_BUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.FormatSupport.InputAssemblyVertexBuffer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_FORMAT_SUPPORT_IA_VERTEX_BUFFER']/*\"/>\t\n            <unmanaged>D3D11_FORMAT_SUPPORT_IA_VERTEX_BUFFER</unmanaged>\t\n            <unmanaged-short>D3D11_FORMAT_SUPPORT_IA_VERTEX_BUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.FormatSupport.InputAssemblyIndexBuffer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_FORMAT_SUPPORT_IA_INDEX_BUFFER']/*\"/>\t\n            <unmanaged>D3D11_FORMAT_SUPPORT_IA_INDEX_BUFFER</unmanaged>\t\n            <unmanaged-short>D3D11_FORMAT_SUPPORT_IA_INDEX_BUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.FormatSupport.StreamOutputBuffer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_FORMAT_SUPPORT_SO_BUFFER']/*\"/>\t\n            <unmanaged>D3D11_FORMAT_SUPPORT_SO_BUFFER</unmanaged>\t\n            <unmanaged-short>D3D11_FORMAT_SUPPORT_SO_BUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.FormatSupport.Texture1D\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_FORMAT_SUPPORT_TEXTURE1D']/*\"/>\t\n            <unmanaged>D3D11_FORMAT_SUPPORT_TEXTURE1D</unmanaged>\t\n            <unmanaged-short>D3D11_FORMAT_SUPPORT_TEXTURE1D</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.FormatSupport.Texture2D\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_FORMAT_SUPPORT_TEXTURE2D']/*\"/>\t\n            <unmanaged>D3D11_FORMAT_SUPPORT_TEXTURE2D</unmanaged>\t\n            <unmanaged-short>D3D11_FORMAT_SUPPORT_TEXTURE2D</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.FormatSupport.Texture3D\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_FORMAT_SUPPORT_TEXTURE3D']/*\"/>\t\n            <unmanaged>D3D11_FORMAT_SUPPORT_TEXTURE3D</unmanaged>\t\n            <unmanaged-short>D3D11_FORMAT_SUPPORT_TEXTURE3D</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.FormatSupport.TextureCube\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_FORMAT_SUPPORT_TEXTURECUBE']/*\"/>\t\n            <unmanaged>D3D11_FORMAT_SUPPORT_TEXTURECUBE</unmanaged>\t\n            <unmanaged-short>D3D11_FORMAT_SUPPORT_TEXTURECUBE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.FormatSupport.ShaderLoad\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_FORMAT_SUPPORT_SHADER_LOAD']/*\"/>\t\n            <unmanaged>D3D11_FORMAT_SUPPORT_SHADER_LOAD</unmanaged>\t\n            <unmanaged-short>D3D11_FORMAT_SUPPORT_SHADER_LOAD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.FormatSupport.ShaderSample\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_FORMAT_SUPPORT_SHADER_SAMPLE']/*\"/>\t\n            <unmanaged>D3D11_FORMAT_SUPPORT_SHADER_SAMPLE</unmanaged>\t\n            <unmanaged-short>D3D11_FORMAT_SUPPORT_SHADER_SAMPLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.FormatSupport.ShaderSampleComparison\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_FORMAT_SUPPORT_SHADER_SAMPLE_COMPARISON']/*\"/>\t\n            <unmanaged>D3D11_FORMAT_SUPPORT_SHADER_SAMPLE_COMPARISON</unmanaged>\t\n            <unmanaged-short>D3D11_FORMAT_SUPPORT_SHADER_SAMPLE_COMPARISON</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.FormatSupport.ShaderSampleMonoText\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_FORMAT_SUPPORT_SHADER_SAMPLE_MONO_TEXT']/*\"/>\t\n            <unmanaged>D3D11_FORMAT_SUPPORT_SHADER_SAMPLE_MONO_TEXT</unmanaged>\t\n            <unmanaged-short>D3D11_FORMAT_SUPPORT_SHADER_SAMPLE_MONO_TEXT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.FormatSupport.Mip\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_FORMAT_SUPPORT_MIP']/*\"/>\t\n            <unmanaged>D3D11_FORMAT_SUPPORT_MIP</unmanaged>\t\n            <unmanaged-short>D3D11_FORMAT_SUPPORT_MIP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.FormatSupport.MipAutogen\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_FORMAT_SUPPORT_MIP_AUTOGEN']/*\"/>\t\n            <unmanaged>D3D11_FORMAT_SUPPORT_MIP_AUTOGEN</unmanaged>\t\n            <unmanaged-short>D3D11_FORMAT_SUPPORT_MIP_AUTOGEN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.FormatSupport.RenderTarget\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_FORMAT_SUPPORT_RENDER_TARGET']/*\"/>\t\n            <unmanaged>D3D11_FORMAT_SUPPORT_RENDER_TARGET</unmanaged>\t\n            <unmanaged-short>D3D11_FORMAT_SUPPORT_RENDER_TARGET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.FormatSupport.Blendable\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_FORMAT_SUPPORT_BLENDABLE']/*\"/>\t\n            <unmanaged>D3D11_FORMAT_SUPPORT_BLENDABLE</unmanaged>\t\n            <unmanaged-short>D3D11_FORMAT_SUPPORT_BLENDABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.FormatSupport.DepthStencil\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_FORMAT_SUPPORT_DEPTH_STENCIL']/*\"/>\t\n            <unmanaged>D3D11_FORMAT_SUPPORT_DEPTH_STENCIL</unmanaged>\t\n            <unmanaged-short>D3D11_FORMAT_SUPPORT_DEPTH_STENCIL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.FormatSupport.CpuLockable\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_FORMAT_SUPPORT_CPU_LOCKABLE']/*\"/>\t\n            <unmanaged>D3D11_FORMAT_SUPPORT_CPU_LOCKABLE</unmanaged>\t\n            <unmanaged-short>D3D11_FORMAT_SUPPORT_CPU_LOCKABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.FormatSupport.MultisampleResolve\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_FORMAT_SUPPORT_MULTISAMPLE_RESOLVE']/*\"/>\t\n            <unmanaged>D3D11_FORMAT_SUPPORT_MULTISAMPLE_RESOLVE</unmanaged>\t\n            <unmanaged-short>D3D11_FORMAT_SUPPORT_MULTISAMPLE_RESOLVE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.FormatSupport.Display\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_FORMAT_SUPPORT_DISPLAY']/*\"/>\t\n            <unmanaged>D3D11_FORMAT_SUPPORT_DISPLAY</unmanaged>\t\n            <unmanaged-short>D3D11_FORMAT_SUPPORT_DISPLAY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.FormatSupport.CastWithinBitLayout\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_FORMAT_SUPPORT_CAST_WITHIN_BIT_LAYOUT']/*\"/>\t\n            <unmanaged>D3D11_FORMAT_SUPPORT_CAST_WITHIN_BIT_LAYOUT</unmanaged>\t\n            <unmanaged-short>D3D11_FORMAT_SUPPORT_CAST_WITHIN_BIT_LAYOUT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.FormatSupport.MultisampleRenderTarget\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_FORMAT_SUPPORT_MULTISAMPLE_RENDERTARGET']/*\"/>\t\n            <unmanaged>D3D11_FORMAT_SUPPORT_MULTISAMPLE_RENDERTARGET</unmanaged>\t\n            <unmanaged-short>D3D11_FORMAT_SUPPORT_MULTISAMPLE_RENDERTARGET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.FormatSupport.MultisampleLoad\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_FORMAT_SUPPORT_MULTISAMPLE_LOAD']/*\"/>\t\n            <unmanaged>D3D11_FORMAT_SUPPORT_MULTISAMPLE_LOAD</unmanaged>\t\n            <unmanaged-short>D3D11_FORMAT_SUPPORT_MULTISAMPLE_LOAD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.FormatSupport.ShaderGather\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_FORMAT_SUPPORT_SHADER_GATHER']/*\"/>\t\n            <unmanaged>D3D11_FORMAT_SUPPORT_SHADER_GATHER</unmanaged>\t\n            <unmanaged-short>D3D11_FORMAT_SUPPORT_SHADER_GATHER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.FormatSupport.BackBufferCast\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_FORMAT_SUPPORT_BACK_BUFFER_CAST']/*\"/>\t\n            <unmanaged>D3D11_FORMAT_SUPPORT_BACK_BUFFER_CAST</unmanaged>\t\n            <unmanaged-short>D3D11_FORMAT_SUPPORT_BACK_BUFFER_CAST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.FormatSupport.TypedUnorderedAccessView\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_FORMAT_SUPPORT_TYPED_UNORDERED_ACCESS_VIEW']/*\"/>\t\n            <unmanaged>D3D11_FORMAT_SUPPORT_TYPED_UNORDERED_ACCESS_VIEW</unmanaged>\t\n            <unmanaged-short>D3D11_FORMAT_SUPPORT_TYPED_UNORDERED_ACCESS_VIEW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.FormatSupport.ShaderGatherComparison\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_FORMAT_SUPPORT_SHADER_GATHER_COMPARISON']/*\"/>\t\n            <unmanaged>D3D11_FORMAT_SUPPORT_SHADER_GATHER_COMPARISON</unmanaged>\t\n            <unmanaged-short>D3D11_FORMAT_SUPPORT_SHADER_GATHER_COMPARISON</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.FormatSupport.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.Channel\">\n            <summary>\t\n            <p>These flags are used by functions which operate on one or more channels in a texture.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_CHANNEL_FLAG']/*\"/>\t\n            <msdn-id>ff476302</msdn-id>\t\n            <unmanaged>D3DX11_CHANNEL_FLAG</unmanaged>\t\n            <unmanaged-short>D3DX11_CHANNEL_FLAG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.Channel.Red\">\n            <summary>\t\n            <dd> <p>Indicates the red channel should be used.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_CHANNEL_RED']/*\"/>\t\n            <msdn-id>ff476302</msdn-id>\t\n            <unmanaged>D3DX11_CHANNEL_RED</unmanaged>\t\n            <unmanaged-short>D3DX11_CHANNEL_RED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.Channel.Blue\">\n            <summary>\t\n            <dd> <p>Indicates the blue channel should be used.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_CHANNEL_BLUE']/*\"/>\t\n            <msdn-id>ff476302</msdn-id>\t\n            <unmanaged>D3DX11_CHANNEL_BLUE</unmanaged>\t\n            <unmanaged-short>D3DX11_CHANNEL_BLUE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.Channel.Green\">\n            <summary>\t\n            <dd> <p>Indicates the green channel should be used.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_CHANNEL_GREEN']/*\"/>\t\n            <msdn-id>ff476302</msdn-id>\t\n            <unmanaged>D3DX11_CHANNEL_GREEN</unmanaged>\t\n            <unmanaged-short>D3DX11_CHANNEL_GREEN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.Channel.Alpha\">\n            <summary>\t\n            <dd> <p>Indicates the alpha channel should be used.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_CHANNEL_ALPHA']/*\"/>\t\n            <msdn-id>ff476302</msdn-id>\t\n            <unmanaged>D3DX11_CHANNEL_ALPHA</unmanaged>\t\n            <unmanaged-short>D3DX11_CHANNEL_ALPHA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.Channel.Luminance\">\n            <summary>\t\n            <dd> <p>Indicates the luminaces of the red, green, and blue channels should be used.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_CHANNEL_LUMINANCE']/*\"/>\t\n            <msdn-id>ff476302</msdn-id>\t\n            <unmanaged>D3DX11_CHANNEL_LUMINANCE</unmanaged>\t\n            <unmanaged-short>D3DX11_CHANNEL_LUMINANCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.Channel.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.ImageFileFormat\">\n            <summary>\t\n            <p>Image file formats supported by D3DX11Createxxx and D3DX11Savexxx functions.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>See Types of Bitmaps (GDI+) for more information on some of these formats.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_IMAGE_FILE_FORMAT']/*\"/>\t\n            <msdn-id>ff476315</msdn-id>\t\n            <unmanaged>D3DX11_IMAGE_FILE_FORMAT</unmanaged>\t\n            <unmanaged-short>D3DX11_IMAGE_FILE_FORMAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ImageFileFormat.Bmp\">\n            <summary>\t\n            <dd> <p>Windows bitmap (BMP) file format. Contains a header that describes the resolution of the device on which the rectangle of pixels was created, the dimensions of the rectangle, the size of the array of bits, a logical palette, and an array of bits that defines the relationship between pixels in the bitmapped image and entries in the logical palette. The file extension for this format is .bmp.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_IFF_BMP']/*\"/>\t\n            <msdn-id>ff476315</msdn-id>\t\n            <unmanaged>D3DX11_IFF_BMP</unmanaged>\t\n            <unmanaged-short>D3DX11_IFF_BMP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ImageFileFormat.Jpg\">\n            <summary>\t\n            <dd> <p>Joint Photographic Experts Group (JPEG) compressed file format. Specifies variable compression of 24-bit RGB color and 8-bit gray-scale Tagged Image File Format (TIFF) image document files. The file extension for this format is .jpg.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_IFF_JPG']/*\"/>\t\n            <msdn-id>ff476315</msdn-id>\t\n            <unmanaged>D3DX11_IFF_JPG</unmanaged>\t\n            <unmanaged-short>D3DX11_IFF_JPG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ImageFileFormat.Png\">\n            <summary>\t\n            <dd> <p>Portable Network Graphics (PNG) file format. A non-proprietary bitmap format using lossless compression. The file extension for this format is .png.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_IFF_PNG']/*\"/>\t\n            <msdn-id>ff476315</msdn-id>\t\n            <unmanaged>D3DX11_IFF_PNG</unmanaged>\t\n            <unmanaged-short>D3DX11_IFF_PNG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ImageFileFormat.Dds\">\n            <summary>\t\n            <dd> <p>DirectDraw surface (DDS) file format. Stores textures, volume textures, and cubic environment maps, with or without mipmap levels, and with or without pixel compression. The file extension for this format is .dds.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_IFF_DDS']/*\"/>\t\n            <msdn-id>ff476315</msdn-id>\t\n            <unmanaged>D3DX11_IFF_DDS</unmanaged>\t\n            <unmanaged-short>D3DX11_IFF_DDS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ImageFileFormat.Tiff\">\n            <summary>\t\n            <dd> <p>Tagged Image File Format (TIFF). The file extensions for this format are .tif and .tiff.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_IFF_TIFF']/*\"/>\t\n            <msdn-id>ff476315</msdn-id>\t\n            <unmanaged>D3DX11_IFF_TIFF</unmanaged>\t\n            <unmanaged-short>D3DX11_IFF_TIFF</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ImageFileFormat.Gif\">\n            <summary>\t\n            <dd> <p>Graphics Interchange Format (GIF). The file extension for this format is .gif.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_IFF_GIF']/*\"/>\t\n            <msdn-id>ff476315</msdn-id>\t\n            <unmanaged>D3DX11_IFF_GIF</unmanaged>\t\n            <unmanaged-short>D3DX11_IFF_GIF</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ImageFileFormat.Wmp\">\n            <summary>\t\n            <dd> <p>Windows Media Photo format (WMP). This format is also known as HD Photo and JPEG XR. The file extensions for this format are .hdp, .jxr, and .wdp.</p> <p>To work properly, <strong><see cref=\"F:SharpDX.Direct3D11.ImageFileFormat.Wmp\"/></strong> requires that you initialize COM. Therefore, call <strong>CoInitialize</strong> or <strong>CoInitializeEx</strong> in your application before you call D3DX.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_IFF_WMP']/*\"/>\t\n            <msdn-id>ff476315</msdn-id>\t\n            <unmanaged>D3DX11_IFF_WMP</unmanaged>\t\n            <unmanaged-short>D3DX11_IFF_WMP</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.InputClassification\">\n            <summary>\t\n            <p>Type of data contained in an input slot.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Use these values to specify the type of data for a particular input element (see <strong><see cref=\"T:SharpDX.Direct3D11.InputElement\"/></strong>) of an input-layout object.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_INPUT_CLASSIFICATION']/*\"/>\t\n            <msdn-id>ff476179</msdn-id>\t\n            <unmanaged>D3D11_INPUT_CLASSIFICATION</unmanaged>\t\n            <unmanaged-short>D3D11_INPUT_CLASSIFICATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.InputClassification.PerVertexData\">\n            <summary>\t\n            <dd> <p>Input data is per-vertex data.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_INPUT_PER_VERTEX_DATA']/*\"/>\t\n            <msdn-id>ff476179</msdn-id>\t\n            <unmanaged>D3D11_INPUT_PER_VERTEX_DATA</unmanaged>\t\n            <unmanaged-short>D3D11_INPUT_PER_VERTEX_DATA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.InputClassification.PerInstanceData\">\n            <summary>\t\n            <dd> <p>Input data is per-instance data.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_INPUT_PER_INSTANCE_DATA']/*\"/>\t\n            <msdn-id>ff476179</msdn-id>\t\n            <unmanaged>D3D11_INPUT_PER_INSTANCE_DATA</unmanaged>\t\n            <unmanaged-short>D3D11_INPUT_PER_INSTANCE_DATA</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.MapFlags\">\n            <summary>\t\n            <p>Specifies how the CPU should respond when an application calls the <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.MapSubresource(SharpDX.Direct3D11.Texture1D,System.Int32,System.Int32,SharpDX.Direct3D11.MapMode,SharpDX.Direct3D11.MapFlags,SharpDX.DataStream@)\"/></strong> method on a resource that is being used by the GPU.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This enumeration is used by <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.MapSubresource(SharpDX.Direct3D11.Texture1D,System.Int32,System.Int32,SharpDX.Direct3D11.MapMode,SharpDX.Direct3D11.MapFlags,SharpDX.DataStream@)\"/></strong>.</p><p><see cref=\"F:SharpDX.Direct3D11.MapFlags.DoNotWait\"/> cannot be used with <strong><see cref=\"F:SharpDX.Direct3D11.MapMode.WriteDiscard\"/></strong> or <strong>D3D11_MAP_WRITE_NOOVERWRITE</strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MAP_FLAG']/*\"/>\t\n            <msdn-id>ff476183</msdn-id>\t\n            <unmanaged>D3D11_MAP_FLAG</unmanaged>\t\n            <unmanaged-short>D3D11_MAP_FLAG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MapFlags.DoNotWait\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MAP_FLAG_DO_NOT_WAIT']/*\"/>\t\n            <unmanaged>D3D11_MAP_FLAG_DO_NOT_WAIT</unmanaged>\t\n            <unmanaged-short>D3D11_MAP_FLAG_DO_NOT_WAIT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MapFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.MapMode\">\n            <summary>\t\n            <p>Identifies a resource to be accessed for reading and writing by the CPU. Applications may combine one or more of these flags.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This enumeration is used in <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.MapSubresource(SharpDX.Direct3D11.Texture1D,System.Int32,System.Int32,SharpDX.Direct3D11.MapMode,SharpDX.Direct3D11.MapFlags,SharpDX.DataStream@)\"/></strong>.</p><p>These remarks are divided into the following topics:</p><p> </p><ul> <li>Meaning</li> <li>Common</li> </ul>Meaning of <see cref=\"F:SharpDX.Direct3D11.MapMode.WriteNoOverwrite\"/><p><see cref=\"F:SharpDX.Direct3D11.MapMode.WriteNoOverwrite\"/> signifies that the application promises not to write to data that the input assembler (IA) stage is using. In exchange, the GPU allows the application to write to other parts of the same buffer.  The application must ensure that it does not write over any data in use by the IA stage.</p><p>For example, consider the buffer illustrated in the following diagram. If a Draw call has been issued that uses vertices 4-6, then an application that calls Map on this buffer must ensure that it does not write to the vertices that the Draw call will access during rendering.</p><p>However, ensuring this can be difficult, because the GPU is often many frames behind the CPU in terms of which frame it is currently processing. Keeping track of which sections of a resource are being used because of calls made 2 to 5 frames ago is difficult and error-prone. Because of this, it is recommended that applications only write to the uninitialized portions of a resource when using <see cref=\"F:SharpDX.Direct3D11.MapMode.WriteNoOverwrite\"/>.</p>Common Usage of <see cref=\"F:SharpDX.Direct3D11.MapMode.WriteDiscard\"/> with <see cref=\"F:SharpDX.Direct3D11.MapMode.WriteNoOverwrite\"/><p><see cref=\"F:SharpDX.Direct3D11.MapMode.WriteDiscard\"/> and <see cref=\"F:SharpDX.Direct3D11.MapMode.WriteNoOverwrite\"/> are normally used in conjunction with dynamic index/vertex buffers. <see cref=\"F:SharpDX.Direct3D11.MapMode.WriteDiscard\"/> can also be used with dynamic textures. However, <see cref=\"F:SharpDX.Direct3D11.MapMode.WriteNoOverwrite\"/> cannot be used with dynamic textures.</p><p>A common use of these two flags involves filling dynamic index/vertex buffers with geometry that can be seen from the camera's current position. The first time that data is entered into the buffer on a given frame, Map is called with <see cref=\"F:SharpDX.Direct3D11.MapMode.WriteDiscard\"/>; doing so invalidates the previous contents of the buffer. The buffer is then filled with all available data.</p><p>Subsequent writes to the buffer within the same frame should use <see cref=\"F:SharpDX.Direct3D11.MapMode.WriteNoOverwrite\"/>. This will enable the CPU to access a resource that is potentially being used by the GPU as long as the restrictions described previously are respected.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MAP']/*\"/>\t\n            <msdn-id>ff476181</msdn-id>\t\n            <unmanaged>D3D11_MAP</unmanaged>\t\n            <unmanaged-short>D3D11_MAP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MapMode.Read\">\n            <summary>\t\n            <dd> <p>Resource is mapped for reading. The resource must have been created with read access  (see <strong><see cref=\"F:SharpDX.Direct3D11.CpuAccessFlags.Read\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MAP_READ']/*\"/>\t\n            <msdn-id>ff476181</msdn-id>\t\n            <unmanaged>D3D11_MAP_READ</unmanaged>\t\n            <unmanaged-short>D3D11_MAP_READ</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MapMode.Write\">\n            <summary>\t\n            <dd> <p>Resource is mapped for writing. The resource must have been created with write  access (see <strong><see cref=\"F:SharpDX.Direct3D11.CpuAccessFlags.Write\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MAP_WRITE']/*\"/>\t\n            <msdn-id>ff476181</msdn-id>\t\n            <unmanaged>D3D11_MAP_WRITE</unmanaged>\t\n            <unmanaged-short>D3D11_MAP_WRITE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MapMode.ReadWrite\">\n            <summary>\t\n            <dd> <p>Resource is mapped for reading and writing. The resource must have been created with read and write  access (see <strong><see cref=\"F:SharpDX.Direct3D11.CpuAccessFlags.Read\"/> and <see cref=\"F:SharpDX.Direct3D11.CpuAccessFlags.Write\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MAP_READ_WRITE']/*\"/>\t\n            <msdn-id>ff476181</msdn-id>\t\n            <unmanaged>D3D11_MAP_READ_WRITE</unmanaged>\t\n            <unmanaged-short>D3D11_MAP_READ_WRITE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MapMode.WriteDiscard\">\n            <summary>\t\n            <dd> <p>Resource is mapped for writing; the previous contents of the resource will be undefined. The resource must have been created with write access  and dynamic usage (See <strong><see cref=\"F:SharpDX.Direct3D11.CpuAccessFlags.Write\"/></strong> and <strong><see cref=\"F:SharpDX.Direct3D11.ResourceUsage.Dynamic\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MAP_WRITE_DISCARD']/*\"/>\t\n            <msdn-id>ff476181</msdn-id>\t\n            <unmanaged>D3D11_MAP_WRITE_DISCARD</unmanaged>\t\n            <unmanaged-short>D3D11_MAP_WRITE_DISCARD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MapMode.WriteNoOverwrite\">\n            <summary>\t\n            <dd> <p>Resource is mapped for writing; the existing contents of the resource cannot be overwritten (see Remarks). This flag is only valid on vertex and  index buffers. The resource must have been created with write access (see <strong><see cref=\"F:SharpDX.Direct3D11.CpuAccessFlags.Write\"/></strong>).  Cannot be used on a resource created with the <strong><see cref=\"F:SharpDX.Direct3D11.BindFlags.ConstantBuffer\"/></strong> flag.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MAP_WRITE_NO_OVERWRITE']/*\"/>\t\n            <msdn-id>ff476181</msdn-id>\t\n            <unmanaged>D3D11_MAP_WRITE_NO_OVERWRITE</unmanaged>\t\n            <unmanaged-short>D3D11_MAP_WRITE_NO_OVERWRITE</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.MessageCategory\">\n            <summary>\t\n            <p>Categories of debug messages. This will identify the category of a message when retrieving a message with <strong><see cref=\"M:SharpDX.Direct3D11.InfoQueue.GetMessage(System.Int64,System.IntPtr,SharpDX.PointerSize@)\"/></strong> and when adding a message with <strong><see cref=\"M:SharpDX.Direct3D11.InfoQueue.AddMessage(SharpDX.Direct3D11.MessageCategory,SharpDX.Direct3D11.MessageSeverity,SharpDX.Direct3D11.MessageId,System.String)\"/></strong>. When creating an <strong>info queue filter</strong>, these values can be used to allow or deny any categories of messages to pass through the storage and retrieval filters.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This is part of the Information Queue feature. See <strong><see cref=\"T:SharpDX.Direct3D11.InfoQueue\"/> Interface</strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_CATEGORY']/*\"/>\t\n            <msdn-id>ff476185</msdn-id>\t\n            <unmanaged>D3D11_MESSAGE_CATEGORY</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_CATEGORY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageCategory.ApplicationDefined\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_CATEGORY_APPLICATION_DEFINED']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_CATEGORY_APPLICATION_DEFINED</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_CATEGORY_APPLICATION_DEFINED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageCategory.Miscellaneous\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_CATEGORY_MISCELLANEOUS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_CATEGORY_MISCELLANEOUS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_CATEGORY_MISCELLANEOUS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageCategory.Initialization\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_CATEGORY_INITIALIZATION']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_CATEGORY_INITIALIZATION</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_CATEGORY_INITIALIZATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageCategory.Cleanup\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_CATEGORY_CLEANUP']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_CATEGORY_CLEANUP</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_CATEGORY_CLEANUP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageCategory.Compilation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_CATEGORY_COMPILATION']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_CATEGORY_COMPILATION</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_CATEGORY_COMPILATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageCategory.StateCreation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_CATEGORY_STATE_CREATION']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_CATEGORY_STATE_CREATION</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_CATEGORY_STATE_CREATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageCategory.StateSetting\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_CATEGORY_STATE_SETTING']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_CATEGORY_STATE_SETTING</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_CATEGORY_STATE_SETTING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageCategory.StateGetting\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_CATEGORY_STATE_GETTING']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_CATEGORY_STATE_GETTING</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_CATEGORY_STATE_GETTING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageCategory.ResourceManipulation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_CATEGORY_RESOURCE_MANIPULATION']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_CATEGORY_RESOURCE_MANIPULATION</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_CATEGORY_RESOURCE_MANIPULATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageCategory.Execution\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_CATEGORY_EXECUTION']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_CATEGORY_EXECUTION</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_CATEGORY_EXECUTION</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.MessageId\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.Unknown\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_UNKNOWN']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_UNKNOWN</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_UNKNOWN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceInputAssemblySetVertexBuffersHazard\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_HAZARD']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_HAZARD</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_HAZARD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceInputAssemblySetIndexBufferHazard\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_IASETINDEXBUFFER_HAZARD']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_IASETINDEXBUFFER_HAZARD</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_IASETINDEXBUFFER_HAZARD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceVertexShaderSetShaderResourcesHazard\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_VSSETSHADERRESOURCES_HAZARD']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_VSSETSHADERRESOURCES_HAZARD</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_VSSETSHADERRESOURCES_HAZARD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceVertexShaderSetConstantBuffersHazard\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_VSSETCONSTANTBUFFERS_HAZARD']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_VSSETCONSTANTBUFFERS_HAZARD</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_VSSETCONSTANTBUFFERS_HAZARD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceGeometryShaderSetShaderResourcesHazard\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_GSSETSHADERRESOURCES_HAZARD']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_GSSETSHADERRESOURCES_HAZARD</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_GSSETSHADERRESOURCES_HAZARD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceGeometryShaderSetConstantBuffersHazard\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_GSSETCONSTANTBUFFERS_HAZARD']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_GSSETCONSTANTBUFFERS_HAZARD</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_GSSETCONSTANTBUFFERS_HAZARD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DevicePixelShaderSetShaderResourcesHazard\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_PSSETSHADERRESOURCES_HAZARD']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_PSSETSHADERRESOURCES_HAZARD</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_PSSETSHADERRESOURCES_HAZARD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DevicePixelShaderSetConstantBuffersHazard\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_PSSETCONSTANTBUFFERS_HAZARD']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_PSSETCONSTANTBUFFERS_HAZARD</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_PSSETCONSTANTBUFFERS_HAZARD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceOutputMergerSetRenderTargetsHazard\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_OMSETRENDERTARGETS_HAZARD']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_OMSETRENDERTARGETS_HAZARD</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_OMSETRENDERTARGETS_HAZARD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceStreamOutputSetTargetsHazard\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_SOSETTARGETS_HAZARD']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_SOSETTARGETS_HAZARD</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_SOSETTARGETS_HAZARD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.StringFromApplication\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_STRING_FROM_APPLICATION']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_STRING_FROM_APPLICATION</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_STRING_FROM_APPLICATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CorruptedThis\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CORRUPTED_THIS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CORRUPTED_THIS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CORRUPTED_THIS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CorruptedParameter1\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CORRUPTED_PARAMETER1']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CORRUPTED_PARAMETER1</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CORRUPTED_PARAMETER1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CorruptedParameter2\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CORRUPTED_PARAMETER2']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CORRUPTED_PARAMETER2</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CORRUPTED_PARAMETER2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CorruptedParameter3\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CORRUPTED_PARAMETER3']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CORRUPTED_PARAMETER3</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CORRUPTED_PARAMETER3</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CorruptedParameter4\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CORRUPTED_PARAMETER4']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CORRUPTED_PARAMETER4</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CORRUPTED_PARAMETER4</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CorruptedParameter5\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CORRUPTED_PARAMETER5']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CORRUPTED_PARAMETER5</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CORRUPTED_PARAMETER5</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CorruptedParameter6\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CORRUPTED_PARAMETER6']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CORRUPTED_PARAMETER6</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CORRUPTED_PARAMETER6</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CorruptedParameter7\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CORRUPTED_PARAMETER7']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CORRUPTED_PARAMETER7</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CORRUPTED_PARAMETER7</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CorruptedParameter8\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CORRUPTED_PARAMETER8']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CORRUPTED_PARAMETER8</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CORRUPTED_PARAMETER8</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CorruptedParameter9\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CORRUPTED_PARAMETER9']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CORRUPTED_PARAMETER9</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CORRUPTED_PARAMETER9</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CorruptedParameter10\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CORRUPTED_PARAMETER10']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CORRUPTED_PARAMETER10</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CORRUPTED_PARAMETER10</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CorruptedParameter11\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CORRUPTED_PARAMETER11']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CORRUPTED_PARAMETER11</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CORRUPTED_PARAMETER11</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CorruptedParameter12\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CORRUPTED_PARAMETER12']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CORRUPTED_PARAMETER12</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CORRUPTED_PARAMETER12</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CorruptedParameter13\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CORRUPTED_PARAMETER13']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CORRUPTED_PARAMETER13</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CORRUPTED_PARAMETER13</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CorruptedParameter14\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CORRUPTED_PARAMETER14']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CORRUPTED_PARAMETER14</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CORRUPTED_PARAMETER14</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CorruptedParameter15\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CORRUPTED_PARAMETER15']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CORRUPTED_PARAMETER15</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CORRUPTED_PARAMETER15</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CorruptedMultithreading\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CORRUPTED_MULTITHREADING']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CORRUPTED_MULTITHREADING</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CORRUPTED_MULTITHREADING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.MessageReportingOufOfMemory\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_MESSAGE_REPORTING_OUTOFMEMORY']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_MESSAGE_REPORTING_OUTOFMEMORY</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_MESSAGE_REPORTING_OUTOFMEMORY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.InputAssemblySetInputLayoutUnbindDeletingObject\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_IASETINPUTLAYOUT_UNBINDDELETINGOBJECT']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_IASETINPUTLAYOUT_UNBINDDELETINGOBJECT</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_IASETINPUTLAYOUT_UNBINDDELETINGOBJECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.InputAssemblySetVertexBuffersUnbindDeletingObject\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_IASETVERTEXBUFFERS_UNBINDDELETINGOBJECT']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_IASETVERTEXBUFFERS_UNBINDDELETINGOBJECT</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_IASETVERTEXBUFFERS_UNBINDDELETINGOBJECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.InputAssemblySetIndexBufferUnbindDeletingObject\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_IASETINDEXBUFFER_UNBINDDELETINGOBJECT']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_IASETINDEXBUFFER_UNBINDDELETINGOBJECT</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_IASETINDEXBUFFER_UNBINDDELETINGOBJECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.VertexShaderSetShaderUnbindDeletingObject\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_VSSETSHADER_UNBINDDELETINGOBJECT']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_VSSETSHADER_UNBINDDELETINGOBJECT</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_VSSETSHADER_UNBINDDELETINGOBJECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.VertexShaderSetShaderResourcesUnbindDeletingObject\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_VSSETSHADERRESOURCES_UNBINDDELETINGOBJECT']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_VSSETSHADERRESOURCES_UNBINDDELETINGOBJECT</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_VSSETSHADERRESOURCES_UNBINDDELETINGOBJECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.VertexShaderSetConstantBuffersUnbindDeletingObject\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_VSSETCONSTANTBUFFERS_UNBINDDELETINGOBJECT']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_VSSETCONSTANTBUFFERS_UNBINDDELETINGOBJECT</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_VSSETCONSTANTBUFFERS_UNBINDDELETINGOBJECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.VertexShaderSetSamplersUnbindDeletingObject\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_VSSETSAMPLERS_UNBINDDELETINGOBJECT']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_VSSETSAMPLERS_UNBINDDELETINGOBJECT</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_VSSETSAMPLERS_UNBINDDELETINGOBJECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.GeometryShaderSetShaderUnbindDeletingObject\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_GSSETSHADER_UNBINDDELETINGOBJECT']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_GSSETSHADER_UNBINDDELETINGOBJECT</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_GSSETSHADER_UNBINDDELETINGOBJECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.GeometryShaderSetShaderResourcesUnbindDeletingObject\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_GSSETSHADERRESOURCES_UNBINDDELETINGOBJECT']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_GSSETSHADERRESOURCES_UNBINDDELETINGOBJECT</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_GSSETSHADERRESOURCES_UNBINDDELETINGOBJECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.GeometryShaderSetConstantBuffersUnbindDeletingObject\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_GSSETCONSTANTBUFFERS_UNBINDDELETINGOBJECT']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_GSSETCONSTANTBUFFERS_UNBINDDELETINGOBJECT</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_GSSETCONSTANTBUFFERS_UNBINDDELETINGOBJECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.GeometryShaderSetSamplersUnbindDeletingObject\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_GSSETSAMPLERS_UNBINDDELETINGOBJECT']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_GSSETSAMPLERS_UNBINDDELETINGOBJECT</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_GSSETSAMPLERS_UNBINDDELETINGOBJECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.StreamOutputSetTargetsUnbindDeletingObject\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_SOSETTARGETS_UNBINDDELETINGOBJECT']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_SOSETTARGETS_UNBINDDELETINGOBJECT</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_SOSETTARGETS_UNBINDDELETINGOBJECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.PixelShaderSetShaderUnbindDeletingObject\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_PSSETSHADER_UNBINDDELETINGOBJECT']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_PSSETSHADER_UNBINDDELETINGOBJECT</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_PSSETSHADER_UNBINDDELETINGOBJECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.PixelShaderSetShaderResourcesUnbindDeletingObject\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_PSSETSHADERRESOURCES_UNBINDDELETINGOBJECT']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_PSSETSHADERRESOURCES_UNBINDDELETINGOBJECT</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_PSSETSHADERRESOURCES_UNBINDDELETINGOBJECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.PixelShaderSetConstantBuffersUnbindDeletingObject\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_PSSETCONSTANTBUFFERS_UNBINDDELETINGOBJECT']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_PSSETCONSTANTBUFFERS_UNBINDDELETINGOBJECT</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_PSSETCONSTANTBUFFERS_UNBINDDELETINGOBJECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.PixelShaderSetSamplersUnbindDeletingObject\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_PSSETSAMPLERS_UNBINDDELETINGOBJECT']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_PSSETSAMPLERS_UNBINDDELETINGOBJECT</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_PSSETSAMPLERS_UNBINDDELETINGOBJECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.RasterizerSetStateUnbindDeletingObject\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_RSSETSTATE_UNBINDDELETINGOBJECT']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_RSSETSTATE_UNBINDDELETINGOBJECT</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_RSSETSTATE_UNBINDDELETINGOBJECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.OutputMergerSetBlendStateUnbindDeletingObject\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_OMSETBLENDSTATE_UNBINDDELETINGOBJECT']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_OMSETBLENDSTATE_UNBINDDELETINGOBJECT</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_OMSETBLENDSTATE_UNBINDDELETINGOBJECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.OutputMergerSetDepthStencilStateUnbindDeletingObject\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_OMSETDEPTHSTENCILSTATE_UNBINDDELETINGOBJECT']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_OMSETDEPTHSTENCILSTATE_UNBINDDELETINGOBJECT</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_OMSETDEPTHSTENCILSTATE_UNBINDDELETINGOBJECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.OutputMergerSetRenderTargetsUnbindDeletingObject\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_OMSETRENDERTARGETS_UNBINDDELETINGOBJECT']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_OMSETRENDERTARGETS_UNBINDDELETINGOBJECT</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_OMSETRENDERTARGETS_UNBINDDELETINGOBJECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.SetPredicationUnbindDeletingObject\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_SETPREDICATION_UNBINDDELETINGOBJECT']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_SETPREDICATION_UNBINDDELETINGOBJECT</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_SETPREDICATION_UNBINDDELETINGOBJECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.GetPrivateDataMoreData\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_GETPRIVATEDATA_MOREDATA']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_GETPRIVATEDATA_MOREDATA</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_GETPRIVATEDATA_MOREDATA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.SetPrivateDataInvalidFreeData\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_SETPRIVATEDATA_INVALIDFREEDATA']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_SETPRIVATEDATA_INVALIDFREEDATA</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_SETPRIVATEDATA_INVALIDFREEDATA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.SetPrivateDataInvalidIUnknown\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_SETPRIVATEDATA_INVALIDIUNKNOWN']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_SETPRIVATEDATA_INVALIDIUNKNOWN</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_SETPRIVATEDATA_INVALIDIUNKNOWN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.SetPrivateDataInvalidFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_SETPRIVATEDATA_INVALIDFLAGS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_SETPRIVATEDATA_INVALIDFLAGS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_SETPRIVATEDATA_INVALIDFLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.SetPrivateDataChangingparams\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_SETPRIVATEDATA_CHANGINGPARAMS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_SETPRIVATEDATA_CHANGINGPARAMS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_SETPRIVATEDATA_CHANGINGPARAMS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.SetPrivateDataOufOfMemory\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_SETPRIVATEDATA_OUTOFMEMORY']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_SETPRIVATEDATA_OUTOFMEMORY</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_SETPRIVATEDATA_OUTOFMEMORY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateBufferUnrecognizedFormat\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEBUFFER_UNRECOGNIZEDFORMAT']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEBUFFER_UNRECOGNIZEDFORMAT</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEBUFFER_UNRECOGNIZEDFORMAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateBufferInvalidSamples\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEBUFFER_INVALIDSAMPLES']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEBUFFER_INVALIDSAMPLES</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEBUFFER_INVALIDSAMPLES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateBufferUnrecognizedUsage\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEBUFFER_UNRECOGNIZEDUSAGE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEBUFFER_UNRECOGNIZEDUSAGE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEBUFFER_UNRECOGNIZEDUSAGE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateBufferUnrecognizedBindFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEBUFFER_UNRECOGNIZEDBINDFLAGS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEBUFFER_UNRECOGNIZEDBINDFLAGS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEBUFFER_UNRECOGNIZEDBINDFLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateBufferUnrecognizedCpuAccessFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEBUFFER_UNRECOGNIZEDCPUACCESSFLAGS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEBUFFER_UNRECOGNIZEDCPUACCESSFLAGS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEBUFFER_UNRECOGNIZEDCPUACCESSFLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateBufferUnrecognizedMiscFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEBUFFER_UNRECOGNIZEDMISCFLAGS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEBUFFER_UNRECOGNIZEDMISCFLAGS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEBUFFER_UNRECOGNIZEDMISCFLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateBufferInvalidCpuAccessFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEBUFFER_INVALIDCPUACCESSFLAGS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEBUFFER_INVALIDCPUACCESSFLAGS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEBUFFER_INVALIDCPUACCESSFLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateBufferInvalidBindFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEBUFFER_INVALIDBINDFLAGS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEBUFFER_INVALIDBINDFLAGS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEBUFFER_INVALIDBINDFLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateBufferInvalidInitialData\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEBUFFER_INVALIDINITIALDATA']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEBUFFER_INVALIDINITIALDATA</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEBUFFER_INVALIDINITIALDATA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateBufferInvalidDimensions\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEBUFFER_INVALIDDIMENSIONS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEBUFFER_INVALIDDIMENSIONS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEBUFFER_INVALIDDIMENSIONS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateBufferInvalidMipLevels\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEBUFFER_INVALIDMIPLEVELS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEBUFFER_INVALIDMIPLEVELS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEBUFFER_INVALIDMIPLEVELS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateBufferInvalidMiscFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEBUFFER_INVALIDMISCFLAGS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEBUFFER_INVALIDMISCFLAGS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEBUFFER_INVALIDMISCFLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateBufferInvalidArgumentReturn\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEBUFFER_INVALIDARG_RETURN']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEBUFFER_INVALIDARG_RETURN</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEBUFFER_INVALIDARG_RETURN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateBufferOufOfMemoryReturn\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEBUFFER_OUTOFMEMORY_RETURN']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEBUFFER_OUTOFMEMORY_RETURN</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEBUFFER_OUTOFMEMORY_RETURN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateBufferNullDescription\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEBUFFER_NULLDESC']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEBUFFER_NULLDESC</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEBUFFER_NULLDESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateBufferInvalidConstantBufferBindingS\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEBUFFER_INVALIDCONSTANTBUFFERBINDINGS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEBUFFER_INVALIDCONSTANTBUFFERBINDINGS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEBUFFER_INVALIDCONSTANTBUFFERBINDINGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateBufferLargeAllOcation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEBUFFER_LARGEALLOCATION']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEBUFFER_LARGEALLOCATION</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEBUFFER_LARGEALLOCATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateTexture1DUnrecognizedFormat\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATETEXTURE1D_UNRECOGNIZEDFORMAT']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATETEXTURE1D_UNRECOGNIZEDFORMAT</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATETEXTURE1D_UNRECOGNIZEDFORMAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateTexture1DUnsupportedFormat\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATETEXTURE1D_UNSUPPORTEDFORMAT']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATETEXTURE1D_UNSUPPORTEDFORMAT</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATETEXTURE1D_UNSUPPORTEDFORMAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateTexture1DInvalidSamples\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATETEXTURE1D_INVALIDSAMPLES']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATETEXTURE1D_INVALIDSAMPLES</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATETEXTURE1D_INVALIDSAMPLES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateTexture1DUnrecognizedUsage\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATETEXTURE1D_UNRECOGNIZEDUSAGE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATETEXTURE1D_UNRECOGNIZEDUSAGE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATETEXTURE1D_UNRECOGNIZEDUSAGE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateTexture1DUnrecognizedBindFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATETEXTURE1D_UNRECOGNIZEDBINDFLAGS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATETEXTURE1D_UNRECOGNIZEDBINDFLAGS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATETEXTURE1D_UNRECOGNIZEDBINDFLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateTexture1DUnrecognizedCpuAccessFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATETEXTURE1D_UNRECOGNIZEDCPUACCESSFLAGS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATETEXTURE1D_UNRECOGNIZEDCPUACCESSFLAGS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATETEXTURE1D_UNRECOGNIZEDCPUACCESSFLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateTexture1DUnrecognizedMiscFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATETEXTURE1D_UNRECOGNIZEDMISCFLAGS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATETEXTURE1D_UNRECOGNIZEDMISCFLAGS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATETEXTURE1D_UNRECOGNIZEDMISCFLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateTexture1DInvalidCpuAccessFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATETEXTURE1D_INVALIDCPUACCESSFLAGS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATETEXTURE1D_INVALIDCPUACCESSFLAGS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATETEXTURE1D_INVALIDCPUACCESSFLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateTexture1DInvalidBindFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATETEXTURE1D_INVALIDBINDFLAGS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATETEXTURE1D_INVALIDBINDFLAGS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATETEXTURE1D_INVALIDBINDFLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateTexture1DInvalidInitialData\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATETEXTURE1D_INVALIDINITIALDATA']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATETEXTURE1D_INVALIDINITIALDATA</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATETEXTURE1D_INVALIDINITIALDATA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateTexture1DInvalidDimensions\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATETEXTURE1D_INVALIDDIMENSIONS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATETEXTURE1D_INVALIDDIMENSIONS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATETEXTURE1D_INVALIDDIMENSIONS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateTexture1DInvalidMipLevels\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATETEXTURE1D_INVALIDMIPLEVELS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATETEXTURE1D_INVALIDMIPLEVELS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATETEXTURE1D_INVALIDMIPLEVELS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateTexture1DInvalidMiscFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATETEXTURE1D_INVALIDMISCFLAGS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATETEXTURE1D_INVALIDMISCFLAGS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATETEXTURE1D_INVALIDMISCFLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateTexture1DInvalidArgumentReturn\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATETEXTURE1D_INVALIDARG_RETURN']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATETEXTURE1D_INVALIDARG_RETURN</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATETEXTURE1D_INVALIDARG_RETURN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateTexture1DOufOfMemoryReturn\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATETEXTURE1D_OUTOFMEMORY_RETURN']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATETEXTURE1D_OUTOFMEMORY_RETURN</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATETEXTURE1D_OUTOFMEMORY_RETURN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateTexture1DNullDescription\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATETEXTURE1D_NULLDESC']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATETEXTURE1D_NULLDESC</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATETEXTURE1D_NULLDESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateTexture1DLargeAllOcation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATETEXTURE1D_LARGEALLOCATION']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATETEXTURE1D_LARGEALLOCATION</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATETEXTURE1D_LARGEALLOCATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateTexture2DUnrecognizedFormat\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATETEXTURE2D_UNRECOGNIZEDFORMAT']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATETEXTURE2D_UNRECOGNIZEDFORMAT</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATETEXTURE2D_UNRECOGNIZEDFORMAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateTexture2DUnsupportedFormat\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATETEXTURE2D_UNSUPPORTEDFORMAT']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATETEXTURE2D_UNSUPPORTEDFORMAT</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATETEXTURE2D_UNSUPPORTEDFORMAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateTexture2DInvalidSamples\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATETEXTURE2D_INVALIDSAMPLES']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATETEXTURE2D_INVALIDSAMPLES</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATETEXTURE2D_INVALIDSAMPLES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateTexture2DUnrecognizedUsage\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATETEXTURE2D_UNRECOGNIZEDUSAGE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATETEXTURE2D_UNRECOGNIZEDUSAGE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATETEXTURE2D_UNRECOGNIZEDUSAGE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateTexture2DUnrecognizedBindFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATETEXTURE2D_UNRECOGNIZEDBINDFLAGS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATETEXTURE2D_UNRECOGNIZEDBINDFLAGS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATETEXTURE2D_UNRECOGNIZEDBINDFLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateTexture2DUnrecognizedCpuAccessFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATETEXTURE2D_UNRECOGNIZEDCPUACCESSFLAGS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATETEXTURE2D_UNRECOGNIZEDCPUACCESSFLAGS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATETEXTURE2D_UNRECOGNIZEDCPUACCESSFLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateTexture2DUnrecognizedMiscFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATETEXTURE2D_UNRECOGNIZEDMISCFLAGS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATETEXTURE2D_UNRECOGNIZEDMISCFLAGS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATETEXTURE2D_UNRECOGNIZEDMISCFLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateTexture2DInvalidCpuAccessFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATETEXTURE2D_INVALIDCPUACCESSFLAGS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATETEXTURE2D_INVALIDCPUACCESSFLAGS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATETEXTURE2D_INVALIDCPUACCESSFLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateTexture2DInvalidBindFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATETEXTURE2D_INVALIDBINDFLAGS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATETEXTURE2D_INVALIDBINDFLAGS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATETEXTURE2D_INVALIDBINDFLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateTexture2DInvalidInitialData\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATETEXTURE2D_INVALIDINITIALDATA']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATETEXTURE2D_INVALIDINITIALDATA</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATETEXTURE2D_INVALIDINITIALDATA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateTexture2DInvalidDimensions\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATETEXTURE2D_INVALIDDIMENSIONS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATETEXTURE2D_INVALIDDIMENSIONS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATETEXTURE2D_INVALIDDIMENSIONS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateTexture2DInvalidMipLevels\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATETEXTURE2D_INVALIDMIPLEVELS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATETEXTURE2D_INVALIDMIPLEVELS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATETEXTURE2D_INVALIDMIPLEVELS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateTexture2DInvalidMiscFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATETEXTURE2D_INVALIDMISCFLAGS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATETEXTURE2D_INVALIDMISCFLAGS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATETEXTURE2D_INVALIDMISCFLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateTexture2DInvalidArgumentReturn\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATETEXTURE2D_INVALIDARG_RETURN']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATETEXTURE2D_INVALIDARG_RETURN</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATETEXTURE2D_INVALIDARG_RETURN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateTexture2DOufOfMemoryReturn\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATETEXTURE2D_OUTOFMEMORY_RETURN']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATETEXTURE2D_OUTOFMEMORY_RETURN</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATETEXTURE2D_OUTOFMEMORY_RETURN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateTexture2DNullDescription\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATETEXTURE2D_NULLDESC']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATETEXTURE2D_NULLDESC</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATETEXTURE2D_NULLDESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateTexture2DLargeAllOcation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATETEXTURE2D_LARGEALLOCATION']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATETEXTURE2D_LARGEALLOCATION</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATETEXTURE2D_LARGEALLOCATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateTexture3DUnrecognizedFormat\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATETEXTURE3D_UNRECOGNIZEDFORMAT']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATETEXTURE3D_UNRECOGNIZEDFORMAT</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATETEXTURE3D_UNRECOGNIZEDFORMAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateTexture3DUnsupportedFormat\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATETEXTURE3D_UNSUPPORTEDFORMAT']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATETEXTURE3D_UNSUPPORTEDFORMAT</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATETEXTURE3D_UNSUPPORTEDFORMAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateTexture3DInvalidSamples\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATETEXTURE3D_INVALIDSAMPLES']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATETEXTURE3D_INVALIDSAMPLES</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATETEXTURE3D_INVALIDSAMPLES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateTexture3DUnrecognizedUsage\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATETEXTURE3D_UNRECOGNIZEDUSAGE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATETEXTURE3D_UNRECOGNIZEDUSAGE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATETEXTURE3D_UNRECOGNIZEDUSAGE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateTexture3DUnrecognizedBindFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATETEXTURE3D_UNRECOGNIZEDBINDFLAGS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATETEXTURE3D_UNRECOGNIZEDBINDFLAGS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATETEXTURE3D_UNRECOGNIZEDBINDFLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateTexture3DUnrecognizedCpuAccessFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATETEXTURE3D_UNRECOGNIZEDCPUACCESSFLAGS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATETEXTURE3D_UNRECOGNIZEDCPUACCESSFLAGS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATETEXTURE3D_UNRECOGNIZEDCPUACCESSFLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateTexture3DUnrecognizedMiscFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATETEXTURE3D_UNRECOGNIZEDMISCFLAGS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATETEXTURE3D_UNRECOGNIZEDMISCFLAGS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATETEXTURE3D_UNRECOGNIZEDMISCFLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateTexture3DInvalidCpuAccessFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATETEXTURE3D_INVALIDCPUACCESSFLAGS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATETEXTURE3D_INVALIDCPUACCESSFLAGS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATETEXTURE3D_INVALIDCPUACCESSFLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateTexture3DInvalidBindFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATETEXTURE3D_INVALIDBINDFLAGS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATETEXTURE3D_INVALIDBINDFLAGS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATETEXTURE3D_INVALIDBINDFLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateTexture3DInvalidInitialData\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATETEXTURE3D_INVALIDINITIALDATA']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATETEXTURE3D_INVALIDINITIALDATA</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATETEXTURE3D_INVALIDINITIALDATA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateTexture3DInvalidDimensions\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATETEXTURE3D_INVALIDDIMENSIONS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATETEXTURE3D_INVALIDDIMENSIONS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATETEXTURE3D_INVALIDDIMENSIONS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateTexture3DInvalidMipLevels\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATETEXTURE3D_INVALIDMIPLEVELS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATETEXTURE3D_INVALIDMIPLEVELS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATETEXTURE3D_INVALIDMIPLEVELS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateTexture3DInvalidMiscFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATETEXTURE3D_INVALIDMISCFLAGS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATETEXTURE3D_INVALIDMISCFLAGS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATETEXTURE3D_INVALIDMISCFLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateTexture3DInvalidArgumentReturn\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATETEXTURE3D_INVALIDARG_RETURN']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATETEXTURE3D_INVALIDARG_RETURN</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATETEXTURE3D_INVALIDARG_RETURN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateTexture3DOufOfMemoryReturn\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATETEXTURE3D_OUTOFMEMORY_RETURN']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATETEXTURE3D_OUTOFMEMORY_RETURN</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATETEXTURE3D_OUTOFMEMORY_RETURN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateTexture3DNullDescription\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATETEXTURE3D_NULLDESC']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATETEXTURE3D_NULLDESC</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATETEXTURE3D_NULLDESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateTexture3DLargeAllOcation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATETEXTURE3D_LARGEALLOCATION']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATETEXTURE3D_LARGEALLOCATION</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATETEXTURE3D_LARGEALLOCATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateShaderResourceViewUnrecognizedFormat\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_UNRECOGNIZEDFORMAT']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_UNRECOGNIZEDFORMAT</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_UNRECOGNIZEDFORMAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateShaderResourceViewInvalidDescription\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDDESC']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDDESC</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDDESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateShaderResourceViewInvalidFormat\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDFORMAT']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDFORMAT</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDFORMAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateShaderResourceViewInvalidDimensions\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDDIMENSIONS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDDIMENSIONS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDDIMENSIONS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateShaderResourceViewInvalidResource\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDRESOURCE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDRESOURCE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDRESOURCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateShaderResourceViewTooManyObjects\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_TOOMANYOBJECTS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_TOOMANYOBJECTS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_TOOMANYOBJECTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateShaderResourceViewInvalidArgumentReturn\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDARG_RETURN']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDARG_RETURN</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDARG_RETURN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateShaderResourceViewOufOfMemoryReturn\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_OUTOFMEMORY_RETURN']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_OUTOFMEMORY_RETURN</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_OUTOFMEMORY_RETURN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateRenderTargetViewUnrecognizedFormat\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATERENDERTARGETVIEW_UNRECOGNIZEDFORMAT']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATERENDERTARGETVIEW_UNRECOGNIZEDFORMAT</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATERENDERTARGETVIEW_UNRECOGNIZEDFORMAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateRenderTargetViewUnsupportedFormat\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATERENDERTARGETVIEW_UNSUPPORTEDFORMAT']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATERENDERTARGETVIEW_UNSUPPORTEDFORMAT</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATERENDERTARGETVIEW_UNSUPPORTEDFORMAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateRenderTargetViewInvalidDescription\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDDESC']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDDESC</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDDESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateRenderTargetViewInvalidFormat\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDFORMAT']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDFORMAT</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDFORMAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateRenderTargetViewInvalidDimensions\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDDIMENSIONS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDDIMENSIONS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDDIMENSIONS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateRenderTargetViewInvalidResource\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDRESOURCE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDRESOURCE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDRESOURCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateRenderTargetViewTooManyObjects\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATERENDERTARGETVIEW_TOOMANYOBJECTS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATERENDERTARGETVIEW_TOOMANYOBJECTS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATERENDERTARGETVIEW_TOOMANYOBJECTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateRenderTargetViewInvalidArgumentReturn\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDARG_RETURN']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDARG_RETURN</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDARG_RETURN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateRenderTargetViewOufOfMemoryReturn\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATERENDERTARGETVIEW_OUTOFMEMORY_RETURN']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATERENDERTARGETVIEW_OUTOFMEMORY_RETURN</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATERENDERTARGETVIEW_OUTOFMEMORY_RETURN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateDepthStencilViewUnrecognizedFormat\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_UNRECOGNIZEDFORMAT']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_UNRECOGNIZEDFORMAT</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_UNRECOGNIZEDFORMAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateDepthStencilViewInvalidDescription\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDDESC']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDDESC</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDDESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateDepthStencilViewInvalidFormat\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDFORMAT']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDFORMAT</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDFORMAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateDepthStencilViewInvalidDimensions\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDDIMENSIONS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDDIMENSIONS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDDIMENSIONS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateDepthStencilViewInvalidResource\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDRESOURCE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDRESOURCE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDRESOURCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateDepthStencilViewTooManyObjects\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_TOOMANYOBJECTS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_TOOMANYOBJECTS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_TOOMANYOBJECTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateDepthStencilViewInvalidArgumentReturn\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDARG_RETURN']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDARG_RETURN</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDARG_RETURN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateDepthStencilViewOufOfMemoryReturn\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_OUTOFMEMORY_RETURN']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_OUTOFMEMORY_RETURN</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_OUTOFMEMORY_RETURN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateInputLayoutOufOfMemory\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_OUTOFMEMORY']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_OUTOFMEMORY</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_OUTOFMEMORY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateInputLayoutTooManyElements\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_TOOMANYELEMENTS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_TOOMANYELEMENTS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_TOOMANYELEMENTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateInputLayoutInvalidFormat\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDFORMAT']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDFORMAT</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDFORMAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateInputLayoutIncompatibleformat\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_INCOMPATIBLEFORMAT']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_INCOMPATIBLEFORMAT</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_INCOMPATIBLEFORMAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateInputLayoutInvalidSlot\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSLOT']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSLOT</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSLOT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateInputLayoutInvalidInputsLotclass\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDINPUTSLOTCLASS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDINPUTSLOTCLASS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDINPUTSLOTCLASS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateInputLayoutSteprateslotclassmismatch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_STEPRATESLOTCLASSMISMATCH']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_STEPRATESLOTCLASSMISMATCH</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_STEPRATESLOTCLASSMISMATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateInputLayoutInvalidSlotClassChange\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSLOTCLASSCHANGE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSLOTCLASSCHANGE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSLOTCLASSCHANGE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateInputLayoutInvalidStepratechange\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSTEPRATECHANGE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSTEPRATECHANGE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSTEPRATECHANGE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateInputLayoutInvalidAlignment\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDALIGNMENT']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDALIGNMENT</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDALIGNMENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateInputLayoutDuplicatesemantic\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_DUPLICATESEMANTIC']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_DUPLICATESEMANTIC</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_DUPLICATESEMANTIC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateInputLayoutUnparseableinputsignature\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_UNPARSEABLEINPUTSIGNATURE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_UNPARSEABLEINPUTSIGNATURE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_UNPARSEABLEINPUTSIGNATURE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateInputLayoutNullSemantic\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_NULLSEMANTIC']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_NULLSEMANTIC</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_NULLSEMANTIC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateInputLayoutMissingElement\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_MISSINGELEMENT']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_MISSINGELEMENT</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_MISSINGELEMENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateInputLayoutNullDescription\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_NULLDESC']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_NULLDESC</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_NULLDESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateVertexShaderOufOfMemory\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEVERTEXSHADER_OUTOFMEMORY']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEVERTEXSHADER_OUTOFMEMORY</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEVERTEXSHADER_OUTOFMEMORY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateVertexShaderInvalidShaderByteCode\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDSHADERBYTECODE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDSHADERBYTECODE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDSHADERBYTECODE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateVertexShaderInvalidShaderType\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDSHADERTYPE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDSHADERTYPE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDSHADERTYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateGeometryShaderOufOfMemory\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEGEOMETRYSHADER_OUTOFMEMORY']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEGEOMETRYSHADER_OUTOFMEMORY</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEGEOMETRYSHADER_OUTOFMEMORY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateGeometryShaderInvalidShaderByteCode\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDSHADERBYTECODE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDSHADERBYTECODE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDSHADERBYTECODE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateGeometryShaderInvalidShaderType\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDSHADERTYPE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDSHADERTYPE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDSHADERTYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateGeometryShaderWithStreamOutputOufOfMemory\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTOFMEMORY']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTOFMEMORY</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTOFMEMORY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateGeometryShaderWithStreamOutputInvalidShaderByteCode\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSHADERBYTECODE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSHADERBYTECODE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSHADERBYTECODE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateGeometryShaderWithStreamOutputInvalidShaderType\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSHADERTYPE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSHADERTYPE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSHADERTYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateGeometryShaderWithStreamOutputInvalidNumentries\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDNUMENTRIES']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDNUMENTRIES</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDNUMENTRIES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateGeometryShaderWithStreamOutputOutputStreamsTrideunused\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTPUTSTREAMSTRIDEUNUSED']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTPUTSTREAMSTRIDEUNUSED</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTPUTSTREAMSTRIDEUNUSED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateGeometryShaderWithStreamOutputUnexpectedDeclaration\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDDECL']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDDECL</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDDECL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateGeometryShaderWithStreamOutputExpectedDeclaration\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_EXPECTEDDECL']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_EXPECTEDDECL</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_EXPECTEDDECL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateGeometryShaderWithStreamOutputOutputSlot0expected\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTPUTSLOT0EXPECTED']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTPUTSLOT0EXPECTED</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTPUTSLOT0EXPECTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateGeometryShaderWithStreamOutputInvalidOutputSlot\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDOUTPUTSLOT']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDOUTPUTSLOT</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDOUTPUTSLOT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateGeometryShaderWithStreamOutputOnlyoneelementperslot\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_ONLYONEELEMENTPERSLOT']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_ONLYONEELEMENTPERSLOT</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_ONLYONEELEMENTPERSLOT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateGeometryShaderWithStreamOutputInvalidComponentcount\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDCOMPONENTCOUNT']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDCOMPONENTCOUNT</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDCOMPONENTCOUNT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateGeometryShaderWithStreamOutputInvalidStartcomponentandcomponentcount\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTARTCOMPONENTANDCOMPONENTCOUNT']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTARTCOMPONENTANDCOMPONENTCOUNT</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTARTCOMPONENTANDCOMPONENTCOUNT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateGeometryShaderWithStreamOutputInvalidGapdefinition\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDGAPDEFINITION']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDGAPDEFINITION</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDGAPDEFINITION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateGeometryShaderWithStreamOutputRepeatedoutput\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_REPEATEDOUTPUT']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_REPEATEDOUTPUT</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_REPEATEDOUTPUT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateGeometryShaderWithStreamOutputInvalidOutputStreamsTride\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDOUTPUTSTREAMSTRIDE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDOUTPUTSTREAMSTRIDE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDOUTPUTSTREAMSTRIDE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateGeometryShaderWithStreamOutputMissingSemantic\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MISSINGSEMANTIC']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MISSINGSEMANTIC</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MISSINGSEMANTIC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateGeometryShaderWithStreamOutputMaskmismatch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MASKMISMATCH']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MASKMISMATCH</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MASKMISMATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateGeometryShaderWithStreamOutputCanthaveonlygaps\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_CANTHAVEONLYGAPS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_CANTHAVEONLYGAPS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_CANTHAVEONLYGAPS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateGeometryShaderWithStreamOutputDeclarationTooComplex\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DECLTOOCOMPLEX']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DECLTOOCOMPLEX</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DECLTOOCOMPLEX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateGeometryShaderWithStreamOutputMissingOutputSignature\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MISSINGOUTPUTSIGNATURE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MISSINGOUTPUTSIGNATURE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MISSINGOUTPUTSIGNATURE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreatePixelShaderOufOfMemory\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEPIXELSHADER_OUTOFMEMORY']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEPIXELSHADER_OUTOFMEMORY</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEPIXELSHADER_OUTOFMEMORY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreatePixelShaderInvalidShaderByteCode\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEPIXELSHADER_INVALIDSHADERBYTECODE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEPIXELSHADER_INVALIDSHADERBYTECODE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEPIXELSHADER_INVALIDSHADERBYTECODE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreatePixelShaderInvalidShaderType\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEPIXELSHADER_INVALIDSHADERTYPE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEPIXELSHADER_INVALIDSHADERTYPE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEPIXELSHADER_INVALIDSHADERTYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateRasterizerstateInvalidFillmode\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDFILLMODE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDFILLMODE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDFILLMODE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateRasterizerstateInvalidCullmode\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDCULLMODE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDCULLMODE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDCULLMODE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateRasterizerstateInvalidDepthBiasclamp\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDDEPTHBIASCLAMP']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDDEPTHBIASCLAMP</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDDEPTHBIASCLAMP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateRasterizerstateInvalidSlopescaleddepthbias\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDSLOPESCALEDDEPTHBIAS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDSLOPESCALEDDEPTHBIAS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDSLOPESCALEDDEPTHBIAS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateRasterizerstateTooManyObjects\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATERASTERIZERSTATE_TOOMANYOBJECTS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATERASTERIZERSTATE_TOOMANYOBJECTS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATERASTERIZERSTATE_TOOMANYOBJECTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateRasterizerstateNullDescription\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATERASTERIZERSTATE_NULLDESC']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATERASTERIZERSTATE_NULLDESC</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATERASTERIZERSTATE_NULLDESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateDepthStencilStateInvalidDepthWriteMask\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDDEPTHWRITEMASK']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDDEPTHWRITEMASK</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDDEPTHWRITEMASK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateDepthStencilStateInvalidDepthFunction\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDDEPTHFUNC']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDDEPTHFUNC</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDDEPTHFUNC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateDepthStencilStateInvalidFrontfacestencilfailop\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILFAILOP']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILFAILOP</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILFAILOP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateDepthStencilStateInvalidFrontfacestencilzfailop\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILZFAILOP']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILZFAILOP</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILZFAILOP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateDepthStencilStateInvalidFrontfacestencilpassop\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILPASSOP']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILPASSOP</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILPASSOP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateDepthStencilStateInvalidFrontfacestencilfunc\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILFUNC']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILFUNC</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILFUNC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateDepthStencilStateInvalidBackfaceStencilFailop\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILFAILOP']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILFAILOP</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILFAILOP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateDepthStencilStateInvalidBackfaceStencilZfailop\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILZFAILOP']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILZFAILOP</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILZFAILOP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateDepthStencilStateInvalidBackfaceStencilPassop\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILPASSOP']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILPASSOP</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILPASSOP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateDepthStencilStateInvalidBackfaceStencilFunction\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILFUNC']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILFUNC</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILFUNC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateDepthStencilStateTooManyObjects\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_TOOMANYOBJECTS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_TOOMANYOBJECTS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_TOOMANYOBJECTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateDepthStencilStateNullDescription\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_NULLDESC']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_NULLDESC</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_NULLDESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateBlendStateInvalidSourceBlend\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEBLENDSTATE_INVALIDSRCBLEND']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEBLENDSTATE_INVALIDSRCBLEND</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEBLENDSTATE_INVALIDSRCBLEND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateBlendStateInvalidDestinationBlend\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEBLENDSTATE_INVALIDDESTBLEND']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEBLENDSTATE_INVALIDDESTBLEND</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEBLENDSTATE_INVALIDDESTBLEND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateBlendStateInvalidBlendOperation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEBLENDSTATE_INVALIDBLENDOP']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEBLENDSTATE_INVALIDBLENDOP</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEBLENDSTATE_INVALIDBLENDOP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateBlendStateInvalidSourceBlendAlpha\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEBLENDSTATE_INVALIDSRCBLENDALPHA']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEBLENDSTATE_INVALIDSRCBLENDALPHA</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEBLENDSTATE_INVALIDSRCBLENDALPHA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateBlendStateInvalidDestinationBlendAlpha\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEBLENDSTATE_INVALIDDESTBLENDALPHA']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEBLENDSTATE_INVALIDDESTBLENDALPHA</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEBLENDSTATE_INVALIDDESTBLENDALPHA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateBlendStateInvalidBlendOperationAlpha\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEBLENDSTATE_INVALIDBLENDOPALPHA']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEBLENDSTATE_INVALIDBLENDOPALPHA</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEBLENDSTATE_INVALIDBLENDOPALPHA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateBlendStateInvalidRenderTargetWriteMask\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEBLENDSTATE_INVALIDRENDERTARGETWRITEMASK']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEBLENDSTATE_INVALIDRENDERTARGETWRITEMASK</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEBLENDSTATE_INVALIDRENDERTARGETWRITEMASK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateBlendStateTooManyObjects\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEBLENDSTATE_TOOMANYOBJECTS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEBLENDSTATE_TOOMANYOBJECTS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEBLENDSTATE_TOOMANYOBJECTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateBlendStateNullDescription\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEBLENDSTATE_NULLDESC']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEBLENDSTATE_NULLDESC</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEBLENDSTATE_NULLDESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateSamplerStateInvalidFilter\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDFILTER']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDFILTER</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDFILTER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateSamplerStateInvalidAddressU\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDADDRESSU']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDADDRESSU</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDADDRESSU</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateSamplerStateInvalidAddressV\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDADDRESSV']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDADDRESSV</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDADDRESSV</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateSamplerStateInvalidAddressW\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDADDRESSW']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDADDRESSW</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDADDRESSW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateSamplerStateInvalidMiplodbias\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDMIPLODBIAS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDMIPLODBIAS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDMIPLODBIAS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateSamplerStateInvalidMaximumAnisotropy\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDMAXANISOTROPY']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDMAXANISOTROPY</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDMAXANISOTROPY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateSamplerStateInvalidComparisonfunc\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDCOMPARISONFUNC']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDCOMPARISONFUNC</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDCOMPARISONFUNC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateSamplerStateInvalidMinimumLod\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDMINLOD']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDMINLOD</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDMINLOD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateSamplerStateInvalidMaximumLod\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDMAXLOD']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDMAXLOD</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDMAXLOD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateSamplerStateTooManyObjects\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATESAMPLERSTATE_TOOMANYOBJECTS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATESAMPLERSTATE_TOOMANYOBJECTS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATESAMPLERSTATE_TOOMANYOBJECTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateSamplerStateNullDescription\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATESAMPLERSTATE_NULLDESC']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATESAMPLERSTATE_NULLDESC</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATESAMPLERSTATE_NULLDESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateQueryOrpredicateInvalidQuery\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEQUERYORPREDICATE_INVALIDQUERY']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEQUERYORPREDICATE_INVALIDQUERY</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEQUERYORPREDICATE_INVALIDQUERY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateQueryOrpredicateInvalidMiscFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEQUERYORPREDICATE_INVALIDMISCFLAGS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEQUERYORPREDICATE_INVALIDMISCFLAGS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEQUERYORPREDICATE_INVALIDMISCFLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateQueryOrpredicateUnexpectedMiscFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEQUERYORPREDICATE_UNEXPECTEDMISCFLAG']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEQUERYORPREDICATE_UNEXPECTEDMISCFLAG</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEQUERYORPREDICATE_UNEXPECTEDMISCFLAG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateQueryOrpredicateNullDescription\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEQUERYORPREDICATE_NULLDESC']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEQUERYORPREDICATE_NULLDESC</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEQUERYORPREDICATE_NULLDESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceInputAssemblySetPrimitivetopologyTopologyUnrecognized\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_IASETPRIMITIVETOPOLOGY_TOPOLOGY_UNRECOGNIZED']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_IASETPRIMITIVETOPOLOGY_TOPOLOGY_UNRECOGNIZED</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_IASETPRIMITIVETOPOLOGY_TOPOLOGY_UNRECOGNIZED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceInputAssemblySetPrimitivetopologyTopologyUndefined\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_IASETPRIMITIVETOPOLOGY_TOPOLOGY_UNDEFINED']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_IASETPRIMITIVETOPOLOGY_TOPOLOGY_UNDEFINED</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_IASETPRIMITIVETOPOLOGY_TOPOLOGY_UNDEFINED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.InputAssemblySetVertexBuffersInvalidBuffer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_IASETVERTEXBUFFERS_INVALIDBUFFER']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_IASETVERTEXBUFFERS_INVALIDBUFFER</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_IASETVERTEXBUFFERS_INVALIDBUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceInputAssemblySetVertexBuffersOffsetTooLarge\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_OFFSET_TOO_LARGE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_OFFSET_TOO_LARGE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_OFFSET_TOO_LARGE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceInputAssemblySetVertexBuffersBuffersEmpty\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_BUFFERS_EMPTY']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_BUFFERS_EMPTY</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_BUFFERS_EMPTY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.InputAssemblySetIndexBufferInvalidBuffer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_IASETINDEXBUFFER_INVALIDBUFFER']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_IASETINDEXBUFFER_INVALIDBUFFER</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_IASETINDEXBUFFER_INVALIDBUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceInputAssemblySetIndexBufferFormatInvalid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_IASETINDEXBUFFER_FORMAT_INVALID']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_IASETINDEXBUFFER_FORMAT_INVALID</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_IASETINDEXBUFFER_FORMAT_INVALID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceInputAssemblySetIndexBufferOffsetTooLarge\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_IASETINDEXBUFFER_OFFSET_TOO_LARGE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_IASETINDEXBUFFER_OFFSET_TOO_LARGE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_IASETINDEXBUFFER_OFFSET_TOO_LARGE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceInputAssemblySetIndexBufferOffsetUnaligned\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_IASETINDEXBUFFER_OFFSET_UNALIGNED']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_IASETINDEXBUFFER_OFFSET_UNALIGNED</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_IASETINDEXBUFFER_OFFSET_UNALIGNED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceVertexShaderSetShaderResourcesViewsEmpty\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_VSSETSHADERRESOURCES_VIEWS_EMPTY']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_VSSETSHADERRESOURCES_VIEWS_EMPTY</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_VSSETSHADERRESOURCES_VIEWS_EMPTY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.VertexShaderSetConstantBuffersInvalidBuffer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_VSSETCONSTANTBUFFERS_INVALIDBUFFER']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_VSSETCONSTANTBUFFERS_INVALIDBUFFER</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_VSSETCONSTANTBUFFERS_INVALIDBUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceVertexShaderSetConstantBuffersBuffersEmpty\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_VSSETCONSTANTBUFFERS_BUFFERS_EMPTY']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_VSSETCONSTANTBUFFERS_BUFFERS_EMPTY</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_VSSETCONSTANTBUFFERS_BUFFERS_EMPTY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceVertexShaderSetSamplersSamplersEmpty\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_VSSETSAMPLERS_SAMPLERS_EMPTY']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_VSSETSAMPLERS_SAMPLERS_EMPTY</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_VSSETSAMPLERS_SAMPLERS_EMPTY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceGeometryShaderSetShaderResourcesViewsEmpty\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_GSSETSHADERRESOURCES_VIEWS_EMPTY']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_GSSETSHADERRESOURCES_VIEWS_EMPTY</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_GSSETSHADERRESOURCES_VIEWS_EMPTY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.GeometryShaderSetConstantBuffersInvalidBuffer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_GSSETCONSTANTBUFFERS_INVALIDBUFFER']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_GSSETCONSTANTBUFFERS_INVALIDBUFFER</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_GSSETCONSTANTBUFFERS_INVALIDBUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceGeometryShaderSetConstantBuffersBuffersEmpty\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_GSSETCONSTANTBUFFERS_BUFFERS_EMPTY']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_GSSETCONSTANTBUFFERS_BUFFERS_EMPTY</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_GSSETCONSTANTBUFFERS_BUFFERS_EMPTY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceGeometryShaderSetSamplersSamplersEmpty\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_GSSETSAMPLERS_SAMPLERS_EMPTY']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_GSSETSAMPLERS_SAMPLERS_EMPTY</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_GSSETSAMPLERS_SAMPLERS_EMPTY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.StreamOutputSetTargetsInvalidBuffer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_SOSETTARGETS_INVALIDBUFFER']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_SOSETTARGETS_INVALIDBUFFER</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_SOSETTARGETS_INVALIDBUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceStreamOutputSetTargetsOffsetUnaligned\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_SOSETTARGETS_OFFSET_UNALIGNED']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_SOSETTARGETS_OFFSET_UNALIGNED</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_SOSETTARGETS_OFFSET_UNALIGNED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DevicePixelShaderSetShaderResourcesViewsEmpty\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_PSSETSHADERRESOURCES_VIEWS_EMPTY']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_PSSETSHADERRESOURCES_VIEWS_EMPTY</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_PSSETSHADERRESOURCES_VIEWS_EMPTY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.PixelShaderSetConstantBuffersInvalidBuffer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_PSSETCONSTANTBUFFERS_INVALIDBUFFER']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_PSSETCONSTANTBUFFERS_INVALIDBUFFER</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_PSSETCONSTANTBUFFERS_INVALIDBUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DevicePixelShaderSetConstantBuffersBuffersEmpty\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_PSSETCONSTANTBUFFERS_BUFFERS_EMPTY']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_PSSETCONSTANTBUFFERS_BUFFERS_EMPTY</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_PSSETCONSTANTBUFFERS_BUFFERS_EMPTY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DevicePixelShaderSetSamplersSamplersEmpty\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_PSSETSAMPLERS_SAMPLERS_EMPTY']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_PSSETSAMPLERS_SAMPLERS_EMPTY</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_PSSETSAMPLERS_SAMPLERS_EMPTY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceRasterizerSetViewportsInvalidViewport\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_RSSETVIEWPORTS_INVALIDVIEWPORT']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_RSSETVIEWPORTS_INVALIDVIEWPORT</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_RSSETVIEWPORTS_INVALIDVIEWPORT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceRasterizerSetScissorRectanglesInvalidScissor\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_RSSETSCISSORRECTS_INVALIDSCISSOR']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_RSSETSCISSORRECTS_INVALIDSCISSOR</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_RSSETSCISSORRECTS_INVALIDSCISSOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.ClearrendertargetviewDenormflush\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CLEARRENDERTARGETVIEW_DENORMFLUSH']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CLEARRENDERTARGETVIEW_DENORMFLUSH</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CLEARRENDERTARGETVIEW_DENORMFLUSH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CleardepthstencilviewDenormflush\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_DENORMFLUSH']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_DENORMFLUSH</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_DENORMFLUSH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CleardepthstencilviewInvalid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_INVALID']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_INVALID</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_INVALID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceInputAssemblyGetVertexBuffersBuffersEmpty\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_IAGETVERTEXBUFFERS_BUFFERS_EMPTY']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_IAGETVERTEXBUFFERS_BUFFERS_EMPTY</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_IAGETVERTEXBUFFERS_BUFFERS_EMPTY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceVertexShaderGetShaderResourcesViewsEmpty\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_VSGETSHADERRESOURCES_VIEWS_EMPTY']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_VSGETSHADERRESOURCES_VIEWS_EMPTY</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_VSGETSHADERRESOURCES_VIEWS_EMPTY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceVertexShaderGetConstantBuffersBuffersEmpty\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_VSGETCONSTANTBUFFERS_BUFFERS_EMPTY']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_VSGETCONSTANTBUFFERS_BUFFERS_EMPTY</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_VSGETCONSTANTBUFFERS_BUFFERS_EMPTY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceVertexShaderGetSamplersSamplersEmpty\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_VSGETSAMPLERS_SAMPLERS_EMPTY']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_VSGETSAMPLERS_SAMPLERS_EMPTY</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_VSGETSAMPLERS_SAMPLERS_EMPTY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceGeometryShaderGetShaderResourcesViewsEmpty\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_GSGETSHADERRESOURCES_VIEWS_EMPTY']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_GSGETSHADERRESOURCES_VIEWS_EMPTY</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_GSGETSHADERRESOURCES_VIEWS_EMPTY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceGeometryShaderGetConstantBuffersBuffersEmpty\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_GSGETCONSTANTBUFFERS_BUFFERS_EMPTY']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_GSGETCONSTANTBUFFERS_BUFFERS_EMPTY</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_GSGETCONSTANTBUFFERS_BUFFERS_EMPTY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceGeometryShaderGetSamplersSamplersEmpty\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_GSGETSAMPLERS_SAMPLERS_EMPTY']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_GSGETSAMPLERS_SAMPLERS_EMPTY</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_GSGETSAMPLERS_SAMPLERS_EMPTY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceStreamOutputGetTargetsBuffersEmpty\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_SOGETTARGETS_BUFFERS_EMPTY']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_SOGETTARGETS_BUFFERS_EMPTY</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_SOGETTARGETS_BUFFERS_EMPTY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DevicePixelShaderGetShaderResourcesViewsEmpty\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_PSGETSHADERRESOURCES_VIEWS_EMPTY']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_PSGETSHADERRESOURCES_VIEWS_EMPTY</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_PSGETSHADERRESOURCES_VIEWS_EMPTY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DevicePixelShaderGetConstantBuffersBuffersEmpty\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_PSGETCONSTANTBUFFERS_BUFFERS_EMPTY']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_PSGETCONSTANTBUFFERS_BUFFERS_EMPTY</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_PSGETCONSTANTBUFFERS_BUFFERS_EMPTY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DevicePixelShaderGetSamplersSamplersEmpty\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_PSGETSAMPLERS_SAMPLERS_EMPTY']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_PSGETSAMPLERS_SAMPLERS_EMPTY</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_PSGETSAMPLERS_SAMPLERS_EMPTY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceRasterizerGetViewportsViewportsEmpty\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_RSGETVIEWPORTS_VIEWPORTS_EMPTY']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_RSGETVIEWPORTS_VIEWPORTS_EMPTY</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_RSGETVIEWPORTS_VIEWPORTS_EMPTY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceRasterizerGetScissorRectanglesRectanglesEmpty\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_RSGETSCISSORRECTS_RECTS_EMPTY']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_RSGETSCISSORRECTS_RECTS_EMPTY</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_RSGETSCISSORRECTS_RECTS_EMPTY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceGeneratemipsResourceInvalid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_GENERATEMIPS_RESOURCE_INVALID']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_GENERATEMIPS_RESOURCE_INVALID</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_GENERATEMIPS_RESOURCE_INVALID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CopySubResourceRegionInvalidDestinationSubResource\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDDESTINATIONSUBRESOURCE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDDESTINATIONSUBRESOURCE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDDESTINATIONSUBRESOURCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CopySubResourceRegionInvalidSourceSubResource\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDSOURCESUBRESOURCE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDSOURCESUBRESOURCE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDSOURCESUBRESOURCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CopySubResourceRegionInvalidSourceBox\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDSOURCEBOX']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDSOURCEBOX</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDSOURCEBOX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CopySubResourceRegionInvalidSource\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDSOURCE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDSOURCE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDSOURCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CopySubResourceRegionInvalidDestinationState\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDDESTINATIONSTATE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDDESTINATIONSTATE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDDESTINATIONSTATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CopySubResourceRegionInvalidSourceState\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDSOURCESTATE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDSOURCESTATE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDSOURCESTATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CopyResourceInvalidSource\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_COPYRESOURCE_INVALIDSOURCE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_COPYRESOURCE_INVALIDSOURCE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_COPYRESOURCE_INVALIDSOURCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CopyResourceInvalidDestinationState\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_COPYRESOURCE_INVALIDDESTINATIONSTATE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_COPYRESOURCE_INVALIDDESTINATIONSTATE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_COPYRESOURCE_INVALIDDESTINATIONSTATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CopyResourceInvalidSourceState\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_COPYRESOURCE_INVALIDSOURCESTATE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_COPYRESOURCE_INVALIDSOURCESTATE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_COPYRESOURCE_INVALIDSOURCESTATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.UpdatesUbresourceInvalidDestinationSubResource\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_UPDATESUBRESOURCE_INVALIDDESTINATIONSUBRESOURCE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_UPDATESUBRESOURCE_INVALIDDESTINATIONSUBRESOURCE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_UPDATESUBRESOURCE_INVALIDDESTINATIONSUBRESOURCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.UpdatesUbresourceInvalidDestinationBox\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_UPDATESUBRESOURCE_INVALIDDESTINATIONBOX']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_UPDATESUBRESOURCE_INVALIDDESTINATIONBOX</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_UPDATESUBRESOURCE_INVALIDDESTINATIONBOX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.UpdatesUbresourceInvalidDestinationState\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_UPDATESUBRESOURCE_INVALIDDESTINATIONSTATE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_UPDATESUBRESOURCE_INVALIDDESTINATIONSTATE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_UPDATESUBRESOURCE_INVALIDDESTINATIONSTATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceResolvesubresourceDestinationInvalid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_DESTINATION_INVALID']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_DESTINATION_INVALID</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_DESTINATION_INVALID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceResolvesubresourceDestinationSubResourceInvalid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_DESTINATION_SUBRESOURCE_INVALID']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_DESTINATION_SUBRESOURCE_INVALID</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_DESTINATION_SUBRESOURCE_INVALID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceResolvesubresourceSourceInvalid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_SOURCE_INVALID']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_SOURCE_INVALID</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_SOURCE_INVALID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceResolvesubresourceSourceSubResourceInvalid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_SOURCE_SUBRESOURCE_INVALID']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_SOURCE_SUBRESOURCE_INVALID</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_SOURCE_SUBRESOURCE_INVALID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceResolvesubresourceFormatInvalid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_FORMAT_INVALID']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_FORMAT_INVALID</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_FORMAT_INVALID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.BufferMapInvalidMaptype\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_BUFFER_MAP_INVALIDMAPTYPE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_BUFFER_MAP_INVALIDMAPTYPE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_BUFFER_MAP_INVALIDMAPTYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.BufferMapInvalidFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_BUFFER_MAP_INVALIDFLAGS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_BUFFER_MAP_INVALIDFLAGS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_BUFFER_MAP_INVALIDFLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.BufferMapAlreadymapped\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_BUFFER_MAP_ALREADYMAPPED']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_BUFFER_MAP_ALREADYMAPPED</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_BUFFER_MAP_ALREADYMAPPED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.BufferMapDeviceremovedReturn\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_BUFFER_MAP_DEVICEREMOVED_RETURN']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_BUFFER_MAP_DEVICEREMOVED_RETURN</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_BUFFER_MAP_DEVICEREMOVED_RETURN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.BufferUnmapNotMapped\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_BUFFER_UNMAP_NOTMAPPED']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_BUFFER_UNMAP_NOTMAPPED</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_BUFFER_UNMAP_NOTMAPPED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.Texture1DMapInvalidMaptype\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_TEXTURE1D_MAP_INVALIDMAPTYPE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_TEXTURE1D_MAP_INVALIDMAPTYPE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_TEXTURE1D_MAP_INVALIDMAPTYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.Texture1DMapInvalidSubResource\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_TEXTURE1D_MAP_INVALIDSUBRESOURCE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_TEXTURE1D_MAP_INVALIDSUBRESOURCE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_TEXTURE1D_MAP_INVALIDSUBRESOURCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.Texture1DMapInvalidFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_TEXTURE1D_MAP_INVALIDFLAGS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_TEXTURE1D_MAP_INVALIDFLAGS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_TEXTURE1D_MAP_INVALIDFLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.Texture1DMapAlreadymapped\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_TEXTURE1D_MAP_ALREADYMAPPED']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_TEXTURE1D_MAP_ALREADYMAPPED</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_TEXTURE1D_MAP_ALREADYMAPPED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.Texture1DMapDeviceremovedReturn\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_TEXTURE1D_MAP_DEVICEREMOVED_RETURN']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_TEXTURE1D_MAP_DEVICEREMOVED_RETURN</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_TEXTURE1D_MAP_DEVICEREMOVED_RETURN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.Texture1DUnmapInvalidSubResource\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_TEXTURE1D_UNMAP_INVALIDSUBRESOURCE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_TEXTURE1D_UNMAP_INVALIDSUBRESOURCE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_TEXTURE1D_UNMAP_INVALIDSUBRESOURCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.Texture1DUnmapNotMapped\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_TEXTURE1D_UNMAP_NOTMAPPED']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_TEXTURE1D_UNMAP_NOTMAPPED</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_TEXTURE1D_UNMAP_NOTMAPPED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.Texture2DMapInvalidMaptype\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_TEXTURE2D_MAP_INVALIDMAPTYPE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_TEXTURE2D_MAP_INVALIDMAPTYPE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_TEXTURE2D_MAP_INVALIDMAPTYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.Texture2DMapInvalidSubResource\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_TEXTURE2D_MAP_INVALIDSUBRESOURCE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_TEXTURE2D_MAP_INVALIDSUBRESOURCE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_TEXTURE2D_MAP_INVALIDSUBRESOURCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.Texture2DMapInvalidFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_TEXTURE2D_MAP_INVALIDFLAGS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_TEXTURE2D_MAP_INVALIDFLAGS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_TEXTURE2D_MAP_INVALIDFLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.Texture2DMapAlreadymapped\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_TEXTURE2D_MAP_ALREADYMAPPED']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_TEXTURE2D_MAP_ALREADYMAPPED</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_TEXTURE2D_MAP_ALREADYMAPPED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.Texture2DMapDeviceremovedReturn\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_TEXTURE2D_MAP_DEVICEREMOVED_RETURN']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_TEXTURE2D_MAP_DEVICEREMOVED_RETURN</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_TEXTURE2D_MAP_DEVICEREMOVED_RETURN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.Texture2DUnmapInvalidSubResource\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_TEXTURE2D_UNMAP_INVALIDSUBRESOURCE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_TEXTURE2D_UNMAP_INVALIDSUBRESOURCE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_TEXTURE2D_UNMAP_INVALIDSUBRESOURCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.Texture2DUnmapNotMapped\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_TEXTURE2D_UNMAP_NOTMAPPED']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_TEXTURE2D_UNMAP_NOTMAPPED</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_TEXTURE2D_UNMAP_NOTMAPPED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.Texture3DMapInvalidMaptype\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_TEXTURE3D_MAP_INVALIDMAPTYPE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_TEXTURE3D_MAP_INVALIDMAPTYPE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_TEXTURE3D_MAP_INVALIDMAPTYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.Texture3DMapInvalidSubResource\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_TEXTURE3D_MAP_INVALIDSUBRESOURCE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_TEXTURE3D_MAP_INVALIDSUBRESOURCE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_TEXTURE3D_MAP_INVALIDSUBRESOURCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.Texture3DMapInvalidFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_TEXTURE3D_MAP_INVALIDFLAGS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_TEXTURE3D_MAP_INVALIDFLAGS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_TEXTURE3D_MAP_INVALIDFLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.Texture3DMapAlreadymapped\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_TEXTURE3D_MAP_ALREADYMAPPED']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_TEXTURE3D_MAP_ALREADYMAPPED</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_TEXTURE3D_MAP_ALREADYMAPPED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.Texture3DMapDeviceremovedReturn\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_TEXTURE3D_MAP_DEVICEREMOVED_RETURN']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_TEXTURE3D_MAP_DEVICEREMOVED_RETURN</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_TEXTURE3D_MAP_DEVICEREMOVED_RETURN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.Texture3DUnmapInvalidSubResource\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_TEXTURE3D_UNMAP_INVALIDSUBRESOURCE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_TEXTURE3D_UNMAP_INVALIDSUBRESOURCE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_TEXTURE3D_UNMAP_INVALIDSUBRESOURCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.Texture3DUnmapNotMapped\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_TEXTURE3D_UNMAP_NOTMAPPED']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_TEXTURE3D_UNMAP_NOTMAPPED</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_TEXTURE3D_UNMAP_NOTMAPPED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CheckFormatSupportFormatDeprecated\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CHECKFORMATSUPPORT_FORMAT_DEPRECATED']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CHECKFORMATSUPPORT_FORMAT_DEPRECATED</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CHECKFORMATSUPPORT_FORMAT_DEPRECATED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CheckMultisamplequalitylevelsFormatDeprecated\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CHECKMULTISAMPLEQUALITYLEVELS_FORMAT_DEPRECATED']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CHECKMULTISAMPLEQUALITYLEVELS_FORMAT_DEPRECATED</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CHECKMULTISAMPLEQUALITYLEVELS_FORMAT_DEPRECATED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.SetExceptionmodeUnrecognizedFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_SETEXCEPTIONMODE_UNRECOGNIZEDFLAGS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_SETEXCEPTIONMODE_UNRECOGNIZEDFLAGS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_SETEXCEPTIONMODE_UNRECOGNIZEDFLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.SetExceptionmodeInvalidArgumentReturn\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_SETEXCEPTIONMODE_INVALIDARG_RETURN']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_SETEXCEPTIONMODE_INVALIDARG_RETURN</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_SETEXCEPTIONMODE_INVALIDARG_RETURN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.SetExceptionmodeDeviceremovedReturn\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_SETEXCEPTIONMODE_DEVICEREMOVED_RETURN']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_SETEXCEPTIONMODE_DEVICEREMOVED_RETURN</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_SETEXCEPTIONMODE_DEVICEREMOVED_RETURN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.RefSimulatingInfinitelyFastHardware\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_REF_SIMULATING_INFINITELY_FAST_HARDWARE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_REF_SIMULATING_INFINITELY_FAST_HARDWARE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_REF_SIMULATING_INFINITELY_FAST_HARDWARE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.RefThreadingMode\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_REF_THREADING_MODE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_REF_THREADING_MODE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_REF_THREADING_MODE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.RefUmdriverException\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_REF_UMDRIVER_EXCEPTION']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_REF_UMDRIVER_EXCEPTION</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_REF_UMDRIVER_EXCEPTION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.RefKmdriverException\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_REF_KMDRIVER_EXCEPTION']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_REF_KMDRIVER_EXCEPTION</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_REF_KMDRIVER_EXCEPTION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.RefHardwareException\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_REF_HARDWARE_EXCEPTION']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_REF_HARDWARE_EXCEPTION</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_REF_HARDWARE_EXCEPTION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.RefAccessIngIndexAbleTempOutOfRange\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_REF_ACCESSING_INDEXABLE_TEMP_OUT_OF_RANGE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_REF_ACCESSING_INDEXABLE_TEMP_OUT_OF_RANGE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_REF_ACCESSING_INDEXABLE_TEMP_OUT_OF_RANGE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.RefProblemParsingShader\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_REF_PROBLEM_PARSING_SHADER']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_REF_PROBLEM_PARSING_SHADER</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_REF_PROBLEM_PARSING_SHADER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.RefOutOfMemory\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_REF_OUT_OF_MEMORY']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_REF_OUT_OF_MEMORY</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_REF_OUT_OF_MEMORY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.RefInformation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_REF_INFO']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_REF_INFO</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_REF_INFO</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceDrawVertexPosOverflow\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_DRAW_VERTEXPOS_OVERFLOW']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_DRAW_VERTEXPOS_OVERFLOW</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_DRAW_VERTEXPOS_OVERFLOW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceDrawIndexedIndexPosOverflow\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_DRAWINDEXED_INDEXPOS_OVERFLOW']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_DRAWINDEXED_INDEXPOS_OVERFLOW</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_DRAWINDEXED_INDEXPOS_OVERFLOW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceDrawInstancedVertexPosOverflow\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_DRAWINSTANCED_VERTEXPOS_OVERFLOW']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_DRAWINSTANCED_VERTEXPOS_OVERFLOW</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_DRAWINSTANCED_VERTEXPOS_OVERFLOW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceDrawInstancedInstancePosOverflow\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_DRAWINSTANCED_INSTANCEPOS_OVERFLOW']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_DRAWINSTANCED_INSTANCEPOS_OVERFLOW</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_DRAWINSTANCED_INSTANCEPOS_OVERFLOW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceDrawIndexedInstancedInstancePosOverflow\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_DRAWINDEXEDINSTANCED_INSTANCEPOS_OVERFLOW']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_DRAWINDEXEDINSTANCED_INSTANCEPOS_OVERFLOW</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_DRAWINDEXEDINSTANCED_INSTANCEPOS_OVERFLOW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceDrawIndexedInstancedIndexPosOverflow\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_DRAWINDEXEDINSTANCED_INDEXPOS_OVERFLOW']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_DRAWINDEXEDINSTANCED_INDEXPOS_OVERFLOW</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_DRAWINDEXEDINSTANCED_INDEXPOS_OVERFLOW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceDrawVertexShaderNotSet\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_DRAW_VERTEX_SHADER_NOT_SET']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_DRAW_VERTEX_SHADER_NOT_SET</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_DRAW_VERTEX_SHADER_NOT_SET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceShaderLinkageSemanticnameNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_SHADER_LINKAGE_SEMANTICNAME_NOT_FOUND']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_SHADER_LINKAGE_SEMANTICNAME_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_SHADER_LINKAGE_SEMANTICNAME_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceShaderLinkageRegisterindex\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_SHADER_LINKAGE_REGISTERINDEX']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_SHADER_LINKAGE_REGISTERINDEX</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_SHADER_LINKAGE_REGISTERINDEX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceShaderLinkageComponenttype\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_SHADER_LINKAGE_COMPONENTTYPE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_SHADER_LINKAGE_COMPONENTTYPE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_SHADER_LINKAGE_COMPONENTTYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceShaderLinkageRegistermask\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_SHADER_LINKAGE_REGISTERMASK']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_SHADER_LINKAGE_REGISTERMASK</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_SHADER_LINKAGE_REGISTERMASK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceShaderLinkageSystemvalue\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_SHADER_LINKAGE_SYSTEMVALUE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_SHADER_LINKAGE_SYSTEMVALUE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_SHADER_LINKAGE_SYSTEMVALUE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceShaderLinkageNeverwrittenAlwaysreads\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_SHADER_LINKAGE_NEVERWRITTEN_ALWAYSREADS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_SHADER_LINKAGE_NEVERWRITTEN_ALWAYSREADS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_SHADER_LINKAGE_NEVERWRITTEN_ALWAYSREADS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceDrawVertexBufferNotSet\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_DRAW_VERTEX_BUFFER_NOT_SET']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_DRAW_VERTEX_BUFFER_NOT_SET</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_DRAW_VERTEX_BUFFER_NOT_SET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceDrawInputLayoutNotSet\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_DRAW_INPUTLAYOUT_NOT_SET']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_DRAW_INPUTLAYOUT_NOT_SET</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_DRAW_INPUTLAYOUT_NOT_SET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceDrawConstantBufferNotSet\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_DRAW_CONSTANT_BUFFER_NOT_SET']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_DRAW_CONSTANT_BUFFER_NOT_SET</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_DRAW_CONSTANT_BUFFER_NOT_SET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceDrawConstantBufferTooSmall\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_DRAW_CONSTANT_BUFFER_TOO_SMALL']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_DRAW_CONSTANT_BUFFER_TOO_SMALL</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_DRAW_CONSTANT_BUFFER_TOO_SMALL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceDrawSamplerNotSet\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_DRAW_SAMPLER_NOT_SET']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_DRAW_SAMPLER_NOT_SET</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_DRAW_SAMPLER_NOT_SET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceDrawShaderResourceViewNotSet\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_DRAW_SHADERRESOURCEVIEW_NOT_SET']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_DRAW_SHADERRESOURCEVIEW_NOT_SET</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_DRAW_SHADERRESOURCEVIEW_NOT_SET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceDrawViewDimensionMismatch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_DRAW_VIEW_DIMENSION_MISMATCH']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_DRAW_VIEW_DIMENSION_MISMATCH</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_DRAW_VIEW_DIMENSION_MISMATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceDrawVertexBufferStrideTooSmall\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_DRAW_VERTEX_BUFFER_STRIDE_TOO_SMALL']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_DRAW_VERTEX_BUFFER_STRIDE_TOO_SMALL</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_DRAW_VERTEX_BUFFER_STRIDE_TOO_SMALL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceDrawVertexBufferTooSmall\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_DRAW_VERTEX_BUFFER_TOO_SMALL']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_DRAW_VERTEX_BUFFER_TOO_SMALL</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_DRAW_VERTEX_BUFFER_TOO_SMALL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceDrawIndexBufferNotSet\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_DRAW_INDEX_BUFFER_NOT_SET']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_DRAW_INDEX_BUFFER_NOT_SET</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_DRAW_INDEX_BUFFER_NOT_SET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceDrawIndexBufferFormatInvalid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_DRAW_INDEX_BUFFER_FORMAT_INVALID']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_DRAW_INDEX_BUFFER_FORMAT_INVALID</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_DRAW_INDEX_BUFFER_FORMAT_INVALID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceDrawIndexBufferTooSmall\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_DRAW_INDEX_BUFFER_TOO_SMALL']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_DRAW_INDEX_BUFFER_TOO_SMALL</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_DRAW_INDEX_BUFFER_TOO_SMALL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceDrawGeometryShaderInputPrimitiveMismatch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_DRAW_GS_INPUT_PRIMITIVE_MISMATCH']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_DRAW_GS_INPUT_PRIMITIVE_MISMATCH</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_DRAW_GS_INPUT_PRIMITIVE_MISMATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceDrawResourceReturnTypeMismatch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_DRAW_RESOURCE_RETURN_TYPE_MISMATCH']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_DRAW_RESOURCE_RETURN_TYPE_MISMATCH</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_DRAW_RESOURCE_RETURN_TYPE_MISMATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceDrawPositionNotPresent\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_DRAW_POSITION_NOT_PRESENT']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_DRAW_POSITION_NOT_PRESENT</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_DRAW_POSITION_NOT_PRESENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceDrawOutputStreamNotSet\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_DRAW_OUTPUT_STREAM_NOT_SET']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_DRAW_OUTPUT_STREAM_NOT_SET</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_DRAW_OUTPUT_STREAM_NOT_SET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceDrawBoundResourceMapped\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_DRAW_BOUND_RESOURCE_MAPPED']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_DRAW_BOUND_RESOURCE_MAPPED</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_DRAW_BOUND_RESOURCE_MAPPED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceDrawInvalidPrimitivetopology\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_DRAW_INVALID_PRIMITIVETOPOLOGY']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_DRAW_INVALID_PRIMITIVETOPOLOGY</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_DRAW_INVALID_PRIMITIVETOPOLOGY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceDrawVertexOffsetUnaligned\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_DRAW_VERTEX_OFFSET_UNALIGNED']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_DRAW_VERTEX_OFFSET_UNALIGNED</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_DRAW_VERTEX_OFFSET_UNALIGNED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceDrawVertexStrideUnaligned\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_DRAW_VERTEX_STRIDE_UNALIGNED']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_DRAW_VERTEX_STRIDE_UNALIGNED</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_DRAW_VERTEX_STRIDE_UNALIGNED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceDrawIndexOffsetUnaligned\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_DRAW_INDEX_OFFSET_UNALIGNED']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_DRAW_INDEX_OFFSET_UNALIGNED</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_DRAW_INDEX_OFFSET_UNALIGNED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceDrawOutputStreamOffsetUnaligned\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_DRAW_OUTPUT_STREAM_OFFSET_UNALIGNED']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_DRAW_OUTPUT_STREAM_OFFSET_UNALIGNED</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_DRAW_OUTPUT_STREAM_OFFSET_UNALIGNED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceDrawResourceFormatLdUnsupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_DRAW_RESOURCE_FORMAT_LD_UNSUPPORTED']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_DRAW_RESOURCE_FORMAT_LD_UNSUPPORTED</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_DRAW_RESOURCE_FORMAT_LD_UNSUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceDrawResourceFormatSampleUnsupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_DRAW_RESOURCE_FORMAT_SAMPLE_UNSUPPORTED']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_DRAW_RESOURCE_FORMAT_SAMPLE_UNSUPPORTED</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_DRAW_RESOURCE_FORMAT_SAMPLE_UNSUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceDrawResourceFormatSampleCUnsupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_DRAW_RESOURCE_FORMAT_SAMPLE_C_UNSUPPORTED']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_DRAW_RESOURCE_FORMAT_SAMPLE_C_UNSUPPORTED</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_DRAW_RESOURCE_FORMAT_SAMPLE_C_UNSUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceDrawResourceMultisampleUnsupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_DRAW_RESOURCE_MULTISAMPLE_UNSUPPORTED']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_DRAW_RESOURCE_MULTISAMPLE_UNSUPPORTED</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_DRAW_RESOURCE_MULTISAMPLE_UNSUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceDrawStreamOutputTargetsBoundWithoutSource\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_DRAW_SO_TARGETS_BOUND_WITHOUT_SOURCE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_DRAW_SO_TARGETS_BOUND_WITHOUT_SOURCE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_DRAW_SO_TARGETS_BOUND_WITHOUT_SOURCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceDrawStreamOutputStrideLargeRThanBuffer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_DRAW_SO_STRIDE_LARGER_THAN_BUFFER']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_DRAW_SO_STRIDE_LARGER_THAN_BUFFER</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_DRAW_SO_STRIDE_LARGER_THAN_BUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceDrawOutputMergerRenderTargetDoesNotSupportBlending\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_DRAW_OM_RENDER_TARGET_DOES_NOT_SUPPORT_BLENDING']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_DRAW_OM_RENDER_TARGET_DOES_NOT_SUPPORT_BLENDING</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_DRAW_OM_RENDER_TARGET_DOES_NOT_SUPPORT_BLENDING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceDrawOutputMergerDualSourceBlendingCanOnlyHaveRenderTarget0\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_DRAW_OM_DUAL_SOURCE_BLENDING_CAN_ONLY_HAVE_RENDER_TARGET_0']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_DRAW_OM_DUAL_SOURCE_BLENDING_CAN_ONLY_HAVE_RENDER_TARGET_0</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_DRAW_OM_DUAL_SOURCE_BLENDING_CAN_ONLY_HAVE_RENDER_TARGET_0</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceRemovalProcessAtFault\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_AT_FAULT']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_AT_FAULT</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_AT_FAULT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceRemovalProcessPossiblyAtFault\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_POSSIBLY_AT_FAULT']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_POSSIBLY_AT_FAULT</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_POSSIBLY_AT_FAULT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceRemovalProcessNotAtFault\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_NOT_AT_FAULT']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_NOT_AT_FAULT</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_NOT_AT_FAULT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceOpenSharedResourceInvalidArgumentReturn\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_OPEN_SHARED_RESOURCE_INVALIDARG_RETURN']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_OPEN_SHARED_RESOURCE_INVALIDARG_RETURN</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_OPEN_SHARED_RESOURCE_INVALIDARG_RETURN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceOpenSharedResourceOufOfMemoryReturn\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_OPEN_SHARED_RESOURCE_OUTOFMEMORY_RETURN']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_OPEN_SHARED_RESOURCE_OUTOFMEMORY_RETURN</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_OPEN_SHARED_RESOURCE_OUTOFMEMORY_RETURN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceOpenSharedResourceBadinterfaceReturn\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_OPEN_SHARED_RESOURCE_BADINTERFACE_RETURN']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_OPEN_SHARED_RESOURCE_BADINTERFACE_RETURN</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_OPEN_SHARED_RESOURCE_BADINTERFACE_RETURN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceDrawViewportNotSet\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_DRAW_VIEWPORT_NOT_SET']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_DRAW_VIEWPORT_NOT_SET</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_DRAW_VIEWPORT_NOT_SET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateInputLayoutTrailingDigitInSemantic\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_TRAILING_DIGIT_IN_SEMANTIC']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_TRAILING_DIGIT_IN_SEMANTIC</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_TRAILING_DIGIT_IN_SEMANTIC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateGeometryShaderWithStreamOutputTrailingDigitInSemantic\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_TRAILING_DIGIT_IN_SEMANTIC']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_TRAILING_DIGIT_IN_SEMANTIC</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_TRAILING_DIGIT_IN_SEMANTIC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceRasterizerSetViewportsDenormflush\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_RSSETVIEWPORTS_DENORMFLUSH']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_RSSETVIEWPORTS_DENORMFLUSH</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_RSSETVIEWPORTS_DENORMFLUSH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.OutputMergerSetRenderTargetsInvalidView\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_OMSETRENDERTARGETS_INVALIDVIEW']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_OMSETRENDERTARGETS_INVALIDVIEW</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_OMSETRENDERTARGETS_INVALIDVIEW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceSetTextFiltersizeInvalidDimensions\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_SETTEXTFILTERSIZE_INVALIDDIMENSIONS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_SETTEXTFILTERSIZE_INVALIDDIMENSIONS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_SETTEXTFILTERSIZE_INVALIDDIMENSIONS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceDrawSamplerMismatch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_DRAW_SAMPLER_MISMATCH']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_DRAW_SAMPLER_MISMATCH</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_DRAW_SAMPLER_MISMATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateInputLayoutTypeMismatch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_TYPE_MISMATCH']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_TYPE_MISMATCH</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_TYPE_MISMATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.BlendStateGetDescriptionLegacy\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_BLENDSTATE_GETDESC_LEGACY']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_BLENDSTATE_GETDESC_LEGACY</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_BLENDSTATE_GETDESC_LEGACY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.ShaderResourceViewGetDescriptionLegacy\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_SHADERRESOURCEVIEW_GETDESC_LEGACY']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_SHADERRESOURCEVIEW_GETDESC_LEGACY</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_SHADERRESOURCEVIEW_GETDESC_LEGACY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateQueryOufOfMemoryReturn\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEQUERY_OUTOFMEMORY_RETURN']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEQUERY_OUTOFMEMORY_RETURN</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEQUERY_OUTOFMEMORY_RETURN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreatePredicateOufOfMemoryReturn\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEPREDICATE_OUTOFMEMORY_RETURN']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEPREDICATE_OUTOFMEMORY_RETURN</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEPREDICATE_OUTOFMEMORY_RETURN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateCounterOufOfRangeCounter\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATECOUNTER_OUTOFRANGE_COUNTER']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATECOUNTER_OUTOFRANGE_COUNTER</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATECOUNTER_OUTOFRANGE_COUNTER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateCounterSimultaneousActiveCountersExhausted\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATECOUNTER_SIMULTANEOUS_ACTIVE_COUNTERS_EXHAUSTED']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATECOUNTER_SIMULTANEOUS_ACTIVE_COUNTERS_EXHAUSTED</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATECOUNTER_SIMULTANEOUS_ACTIVE_COUNTERS_EXHAUSTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateCounterUnsupportedWellknownCounter\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATECOUNTER_UNSUPPORTED_WELLKNOWN_COUNTER']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATECOUNTER_UNSUPPORTED_WELLKNOWN_COUNTER</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATECOUNTER_UNSUPPORTED_WELLKNOWN_COUNTER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateCounterOufOfMemoryReturn\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATECOUNTER_OUTOFMEMORY_RETURN']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATECOUNTER_OUTOFMEMORY_RETURN</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATECOUNTER_OUTOFMEMORY_RETURN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateCounterNonexclusiveReturn\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATECOUNTER_NONEXCLUSIVE_RETURN']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATECOUNTER_NONEXCLUSIVE_RETURN</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATECOUNTER_NONEXCLUSIVE_RETURN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateCounterNullDescription\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATECOUNTER_NULLDESC']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATECOUNTER_NULLDESC</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATECOUNTER_NULLDESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CheckCounterOufOfRangeCounter\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CHECKCOUNTER_OUTOFRANGE_COUNTER']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CHECKCOUNTER_OUTOFRANGE_COUNTER</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CHECKCOUNTER_OUTOFRANGE_COUNTER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CheckCounterUnsupportedWellknownCounter\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CHECKCOUNTER_UNSUPPORTED_WELLKNOWN_COUNTER']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CHECKCOUNTER_UNSUPPORTED_WELLKNOWN_COUNTER</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CHECKCOUNTER_UNSUPPORTED_WELLKNOWN_COUNTER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.SetPredicationInvalidPredicateState\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_SETPREDICATION_INVALID_PREDICATE_STATE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_SETPREDICATION_INVALID_PREDICATE_STATE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_SETPREDICATION_INVALID_PREDICATE_STATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.QueryBeginUnsupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_QUERY_BEGIN_UNSUPPORTED']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_QUERY_BEGIN_UNSUPPORTED</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_QUERY_BEGIN_UNSUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.PredicateBeginDuringPredication\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_PREDICATE_BEGIN_DURING_PREDICATION']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_PREDICATE_BEGIN_DURING_PREDICATION</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_PREDICATE_BEGIN_DURING_PREDICATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.QueryBeginDuplicate\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_QUERY_BEGIN_DUPLICATE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_QUERY_BEGIN_DUPLICATE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_QUERY_BEGIN_DUPLICATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.QueryBeginAbandoningPreviousResults\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_QUERY_BEGIN_ABANDONING_PREVIOUS_RESULTS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_QUERY_BEGIN_ABANDONING_PREVIOUS_RESULTS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_QUERY_BEGIN_ABANDONING_PREVIOUS_RESULTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.PredicateEndDuringPredication\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_PREDICATE_END_DURING_PREDICATION']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_PREDICATE_END_DURING_PREDICATION</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_PREDICATE_END_DURING_PREDICATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.QueryEndAbandoningPreviousResults\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_QUERY_END_ABANDONING_PREVIOUS_RESULTS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_QUERY_END_ABANDONING_PREVIOUS_RESULTS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_QUERY_END_ABANDONING_PREVIOUS_RESULTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.QueryEndWithoutBegin\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_QUERY_END_WITHOUT_BEGIN']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_QUERY_END_WITHOUT_BEGIN</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_QUERY_END_WITHOUT_BEGIN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.QueryGetDataInvalidDataSize\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_QUERY_GETDATA_INVALID_DATASIZE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_QUERY_GETDATA_INVALID_DATASIZE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_QUERY_GETDATA_INVALID_DATASIZE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.QueryGetDataInvalidFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_QUERY_GETDATA_INVALID_FLAGS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_QUERY_GETDATA_INVALID_FLAGS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_QUERY_GETDATA_INVALID_FLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.QueryGetDataInvalidCall\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_QUERY_GETDATA_INVALID_CALL']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_QUERY_GETDATA_INVALID_CALL</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_QUERY_GETDATA_INVALID_CALL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceDrawPixelShaderOutputTypeMismatch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_DRAW_PS_OUTPUT_TYPE_MISMATCH']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_DRAW_PS_OUTPUT_TYPE_MISMATCH</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_DRAW_PS_OUTPUT_TYPE_MISMATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceDrawResourceFormatGatherUnsupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_DRAW_RESOURCE_FORMAT_GATHER_UNSUPPORTED']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_DRAW_RESOURCE_FORMAT_GATHER_UNSUPPORTED</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_DRAW_RESOURCE_FORMAT_GATHER_UNSUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceDrawInvalidUseOfCenterMultisamplePattern\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_DRAW_INVALID_USE_OF_CENTER_MULTISAMPLE_PATTERN']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_DRAW_INVALID_USE_OF_CENTER_MULTISAMPLE_PATTERN</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_DRAW_INVALID_USE_OF_CENTER_MULTISAMPLE_PATTERN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceInputAssemblySetVertexBuffersStrideTooLarge\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_STRIDE_TOO_LARGE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_STRIDE_TOO_LARGE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_STRIDE_TOO_LARGE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceInputAssemblySetVertexBuffersInvalidRange\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_INVALIDRANGE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_INVALIDRANGE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_INVALIDRANGE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateInputLayoutEmptyLayout\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_EMPTY_LAYOUT']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_EMPTY_LAYOUT</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_EMPTY_LAYOUT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceDrawResourceSampleCountMismatch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_DRAW_RESOURCE_SAMPLE_COUNT_MISMATCH']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_DRAW_RESOURCE_SAMPLE_COUNT_MISMATCH</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_DRAW_RESOURCE_SAMPLE_COUNT_MISMATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.D3D10MessagesEnd\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_D3D10_MESSAGES_END']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_D3D10_MESSAGES_END</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_D3D10_MESSAGES_END</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.D3D10L9MessagesStart\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_D3D10L9_MESSAGES_START']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_D3D10L9_MESSAGES_START</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_D3D10L9_MESSAGES_START</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateDepthStencilStateStencilNoTwoSided\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_STENCIL_NO_TWO_SIDED']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_STENCIL_NO_TWO_SIDED</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_STENCIL_NO_TWO_SIDED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateRasterizerstateDepthBiasClampNotSupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATERASTERIZERSTATE_DepthBiasClamp_NOT_SUPPORTED']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATERASTERIZERSTATE_DepthBiasClamp_NOT_SUPPORTED</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATERASTERIZERSTATE_DepthBiasClamp_NOT_SUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateSamplerStateNoComparisonSupport\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATESAMPLERSTATE_NO_COMPARISON_SUPPORT']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATESAMPLERSTATE_NO_COMPARISON_SUPPORT</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATESAMPLERSTATE_NO_COMPARISON_SUPPORT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateSamplerStateExcessiveAnisotropy\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATESAMPLERSTATE_EXCESSIVE_ANISOTROPY']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATESAMPLERSTATE_EXCESSIVE_ANISOTROPY</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATESAMPLERSTATE_EXCESSIVE_ANISOTROPY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateSamplerStateBorderOutOfRange\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATESAMPLERSTATE_BORDER_OUT_OF_RANGE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATESAMPLERSTATE_BORDER_OUT_OF_RANGE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATESAMPLERSTATE_BORDER_OUT_OF_RANGE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.VertexShaderSetSamplersNotSupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_VSSETSAMPLERS_NOT_SUPPORTED']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_VSSETSAMPLERS_NOT_SUPPORTED</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_VSSETSAMPLERS_NOT_SUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.VertexShaderSetSamplersTooManySamplers\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_VSSETSAMPLERS_TOO_MANY_SAMPLERS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_VSSETSAMPLERS_TOO_MANY_SAMPLERS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_VSSETSAMPLERS_TOO_MANY_SAMPLERS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.PixelShaderSetSamplersTooManySamplers\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_PSSETSAMPLERS_TOO_MANY_SAMPLERS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_PSSETSAMPLERS_TOO_MANY_SAMPLERS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_PSSETSAMPLERS_TOO_MANY_SAMPLERS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateResourceNoArrays\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATERESOURCE_NO_ARRAYS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATERESOURCE_NO_ARRAYS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATERESOURCE_NO_ARRAYS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateResourceNoVertexBufferAndIndexBufferBind\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATERESOURCE_NO_VB_AND_IB_BIND']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATERESOURCE_NO_VB_AND_IB_BIND</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATERESOURCE_NO_VB_AND_IB_BIND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateResourceNoTexture1D\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATERESOURCE_NO_TEXTURE_1D']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATERESOURCE_NO_TEXTURE_1D</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATERESOURCE_NO_TEXTURE_1D</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateResourceDimensionOutOfRange\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATERESOURCE_DIMENSION_OUT_OF_RANGE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATERESOURCE_DIMENSION_OUT_OF_RANGE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATERESOURCE_DIMENSION_OUT_OF_RANGE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateResourceNotBindableAsShaderResource\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATERESOURCE_NOT_BINDABLE_AS_SHADER_RESOURCE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATERESOURCE_NOT_BINDABLE_AS_SHADER_RESOURCE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATERESOURCE_NOT_BINDABLE_AS_SHADER_RESOURCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.OutputMergerSetRenderTargetsTooManyRenderTargets\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_OMSETRENDERTARGETS_TOO_MANY_RENDER_TARGETS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_OMSETRENDERTARGETS_TOO_MANY_RENDER_TARGETS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_OMSETRENDERTARGETS_TOO_MANY_RENDER_TARGETS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.OutputMergerSetRenderTargetsNoDifferingBitDepthS\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_OMSETRENDERTARGETS_NO_DIFFERING_BIT_DEPTHS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_OMSETRENDERTARGETS_NO_DIFFERING_BIT_DEPTHS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_OMSETRENDERTARGETS_NO_DIFFERING_BIT_DEPTHS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.InputAssemblySetVertexBuffersBadBufferIndex\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_IASETVERTEXBUFFERS_BAD_BUFFER_INDEX']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_IASETVERTEXBUFFERS_BAD_BUFFER_INDEX</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_IASETVERTEXBUFFERS_BAD_BUFFER_INDEX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceRasterizerSetViewportsTooManyViewports\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_RSSETVIEWPORTS_TOO_MANY_VIEWPORTS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_RSSETVIEWPORTS_TOO_MANY_VIEWPORTS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_RSSETVIEWPORTS_TOO_MANY_VIEWPORTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceInputAssemblySetPrimitivetopologyWithAdjacencyUnsupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_IASETPRIMITIVETOPOLOGY_ADJACENCY_UNSUPPORTED']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_IASETPRIMITIVETOPOLOGY_ADJACENCY_UNSUPPORTED</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_IASETPRIMITIVETOPOLOGY_ADJACENCY_UNSUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceRasterizerSetScissorRectanglesTooManyScissors\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_RSSETSCISSORRECTS_TOO_MANY_SCISSORS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_RSSETSCISSORRECTS_TOO_MANY_SCISSORS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_RSSETSCISSORRECTS_TOO_MANY_SCISSORS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CopyResourceOnlyTexture2DWithinGpuMemory\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_COPYRESOURCE_ONLY_TEXTURE_2D_WITHIN_GPU_MEMORY']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_COPYRESOURCE_ONLY_TEXTURE_2D_WITHIN_GPU_MEMORY</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_COPYRESOURCE_ONLY_TEXTURE_2D_WITHIN_GPU_MEMORY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CopyResourceNoTexture3DReadback\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_COPYRESOURCE_NO_TEXTURE_3D_READBACK']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_COPYRESOURCE_NO_TEXTURE_3D_READBACK</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_COPYRESOURCE_NO_TEXTURE_3D_READBACK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CopyResourceNoTextureOnlyReadback\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_COPYRESOURCE_NO_TEXTURE_ONLY_READBACK']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_COPYRESOURCE_NO_TEXTURE_ONLY_READBACK</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_COPYRESOURCE_NO_TEXTURE_ONLY_READBACK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateInputLayoutUnsupportedFormat\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_UNSUPPORTED_FORMAT']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_UNSUPPORTED_FORMAT</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_UNSUPPORTED_FORMAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateBlendStateNoAlphaToCoverage\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEBLENDSTATE_NO_ALPHA_TO_COVERAGE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEBLENDSTATE_NO_ALPHA_TO_COVERAGE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEBLENDSTATE_NO_ALPHA_TO_COVERAGE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateRasterizerstateDepthClipEnableMustBeTrue\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATERASTERIZERSTATE_DepthClipEnable_MUST_BE_TRUE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATERASTERIZERSTATE_DepthClipEnable_MUST_BE_TRUE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATERASTERIZERSTATE_DepthClipEnable_MUST_BE_TRUE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DrawIndexedStartindexlocationMustBePositive\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DRAWINDEXED_STARTINDEXLOCATION_MUST_BE_POSITIVE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DRAWINDEXED_STARTINDEXLOCATION_MUST_BE_POSITIVE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DRAWINDEXED_STARTINDEXLOCATION_MUST_BE_POSITIVE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateShaderResourceViewMustUseLowestLod\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_MUST_USE_LOWEST_LOD']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_MUST_USE_LOWEST_LOD</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_MUST_USE_LOWEST_LOD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateSamplerStateMinimumLodMustNotBeFractional\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATESAMPLERSTATE_MINLOD_MUST_NOT_BE_FRACTIONAL']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATESAMPLERSTATE_MINLOD_MUST_NOT_BE_FRACTIONAL</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATESAMPLERSTATE_MINLOD_MUST_NOT_BE_FRACTIONAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateSamplerStateMaximumLodMustBeFltMaximum\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATESAMPLERSTATE_MAXLOD_MUST_BE_FLT_MAX']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATESAMPLERSTATE_MAXLOD_MUST_BE_FLT_MAX</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATESAMPLERSTATE_MAXLOD_MUST_BE_FLT_MAX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateShaderResourceViewFirstArraySliceMustBeZero\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_FIRSTARRAYSLICE_MUST_BE_ZERO']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_FIRSTARRAYSLICE_MUST_BE_ZERO</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_FIRSTARRAYSLICE_MUST_BE_ZERO</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateShaderResourceViewCubeSMustHave6Sides\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_CUBES_MUST_HAVE_6_SIDES']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_CUBES_MUST_HAVE_6_SIDES</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_CUBES_MUST_HAVE_6_SIDES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateResourceNotBindableAsRenderTarget\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATERESOURCE_NOT_BINDABLE_AS_RENDER_TARGET']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATERESOURCE_NOT_BINDABLE_AS_RENDER_TARGET</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATERESOURCE_NOT_BINDABLE_AS_RENDER_TARGET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateResourceNoDwordIndexBuffer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATERESOURCE_NO_DWORD_INDEX_BUFFER']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATERESOURCE_NO_DWORD_INDEX_BUFFER</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATERESOURCE_NO_DWORD_INDEX_BUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateResourceMSAAPrecludesShaderResource\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATERESOURCE_MSAA_PRECLUDES_SHADER_RESOURCE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATERESOURCE_MSAA_PRECLUDES_SHADER_RESOURCE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATERESOURCE_MSAA_PRECLUDES_SHADER_RESOURCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateResourcePresentationPrecludesShaderResource\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATERESOURCE_PRESENTATION_PRECLUDES_SHADER_RESOURCE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATERESOURCE_PRESENTATION_PRECLUDES_SHADER_RESOURCE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATERESOURCE_PRESENTATION_PRECLUDES_SHADER_RESOURCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateBlendStateNoIndependentBlendEnable\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEBLENDSTATE_NO_INDEPENDENT_BLEND_ENABLE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEBLENDSTATE_NO_INDEPENDENT_BLEND_ENABLE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEBLENDSTATE_NO_INDEPENDENT_BLEND_ENABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateBlendStateNoIndependentWriteMasks\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEBLENDSTATE_NO_INDEPENDENT_WRITE_MASKS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEBLENDSTATE_NO_INDEPENDENT_WRITE_MASKS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEBLENDSTATE_NO_INDEPENDENT_WRITE_MASKS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateResourceNoStreamOut\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATERESOURCE_NO_STREAM_OUT']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATERESOURCE_NO_STREAM_OUT</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATERESOURCE_NO_STREAM_OUT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateResourceOnlyVertexBufferIndexBufferForBuffers\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATERESOURCE_ONLY_VB_IB_FOR_BUFFERS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATERESOURCE_ONLY_VB_IB_FOR_BUFFERS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATERESOURCE_ONLY_VB_IB_FOR_BUFFERS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateResourceNoAutogenForVolumes\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATERESOURCE_NO_AUTOGEN_FOR_VOLUMES']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATERESOURCE_NO_AUTOGEN_FOR_VOLUMES</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATERESOURCE_NO_AUTOGEN_FOR_VOLUMES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateResourceDxgiFormatR8G8B8A8CannotBeShared\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATERESOURCE_DXGI_FORMAT_R8G8B8A8_CANNOT_BE_SHARED']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATERESOURCE_DXGI_FORMAT_R8G8B8A8_CANNOT_BE_SHARED</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATERESOURCE_DXGI_FORMAT_R8G8B8A8_CANNOT_BE_SHARED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.VertexShaderShaderResourcesNotSupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_VSSHADERRESOURCES_NOT_SUPPORTED']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_VSSHADERRESOURCES_NOT_SUPPORTED</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_VSSHADERRESOURCES_NOT_SUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.GeometryShaderNotSupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_GEOMETRY_SHADER_NOT_SUPPORTED']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_GEOMETRY_SHADER_NOT_SUPPORTED</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_GEOMETRY_SHADER_NOT_SUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.StreamOutNotSupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_STREAM_OUT_NOT_SUPPORTED']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_STREAM_OUT_NOT_SUPPORTED</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_STREAM_OUT_NOT_SUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.TextFilterNotSupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_TEXT_FILTER_NOT_SUPPORTED']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_TEXT_FILTER_NOT_SUPPORTED</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_TEXT_FILTER_NOT_SUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateBlendStateNoSeparateAlphaBlend\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEBLENDSTATE_NO_SEPARATE_ALPHA_BLEND']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEBLENDSTATE_NO_SEPARATE_ALPHA_BLEND</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEBLENDSTATE_NO_SEPARATE_ALPHA_BLEND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateBlendStateNoMrtBlend\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEBLENDSTATE_NO_MRT_BLEND']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEBLENDSTATE_NO_MRT_BLEND</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEBLENDSTATE_NO_MRT_BLEND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateBlendStateOperationNotSupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEBLENDSTATE_OPERATION_NOT_SUPPORTED']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEBLENDSTATE_OPERATION_NOT_SUPPORTED</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEBLENDSTATE_OPERATION_NOT_SUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateSamplerStateNoMirrorOnce\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATESAMPLERSTATE_NO_MIRRORONCE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATESAMPLERSTATE_NO_MIRRORONCE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATESAMPLERSTATE_NO_MIRRORONCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DrawInstancedNotSupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DRAWINSTANCED_NOT_SUPPORTED']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DRAWINSTANCED_NOT_SUPPORTED</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DRAWINSTANCED_NOT_SUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DrawIndexedInstancedNotSupportedBelow93\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DRAWINDEXEDINSTANCED_NOT_SUPPORTED_BELOW_9_3']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DRAWINDEXEDINSTANCED_NOT_SUPPORTED_BELOW_9_3</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DRAWINDEXEDINSTANCED_NOT_SUPPORTED_BELOW_9_3</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DrawIndexedPointListUnsupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DRAWINDEXED_POINTLIST_UNSUPPORTED']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DRAWINDEXED_POINTLIST_UNSUPPORTED</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DRAWINDEXED_POINTLIST_UNSUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.SetBlendStateSampleMaskCannotBeZero\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_SETBLENDSTATE_SAMPLE_MASK_CANNOT_BE_ZERO']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_SETBLENDSTATE_SAMPLE_MASK_CANNOT_BE_ZERO</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_SETBLENDSTATE_SAMPLE_MASK_CANNOT_BE_ZERO</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateResourceDimensionExceedsFeatureLevelDefinition\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATERESOURCE_DIMENSION_EXCEEDS_FEATURE_LEVEL_DEFINITION']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATERESOURCE_DIMENSION_EXCEEDS_FEATURE_LEVEL_DEFINITION</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATERESOURCE_DIMENSION_EXCEEDS_FEATURE_LEVEL_DEFINITION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateResourceOnlySingleMipLevelDepthStencilSupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATERESOURCE_ONLY_SINGLE_MIP_LEVEL_DEPTH_STENCIL_SUPPORTED']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATERESOURCE_ONLY_SINGLE_MIP_LEVEL_DEPTH_STENCIL_SUPPORTED</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATERESOURCE_ONLY_SINGLE_MIP_LEVEL_DEPTH_STENCIL_SUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceRasterizerSetScissorRectanglesNegativeScissor\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_RSSETSCISSORRECTS_NEGATIVESCISSOR']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_RSSETSCISSORRECTS_NEGATIVESCISSOR</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_RSSETSCISSORRECTS_NEGATIVESCISSOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.SlotZeroMustBeD3D10InputPerVertexData\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_SLOT_ZERO_MUST_BE_D3D10_INPUT_PER_VERTEX_DATA']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_SLOT_ZERO_MUST_BE_D3D10_INPUT_PER_VERTEX_DATA</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_SLOT_ZERO_MUST_BE_D3D10_INPUT_PER_VERTEX_DATA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateResourceNonPow2Mipmap\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATERESOURCE_NON_POW_2_MIPMAP']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATERESOURCE_NON_POW_2_MIPMAP</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATERESOURCE_NON_POW_2_MIPMAP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateSamplerStateBorderNotSupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATESAMPLERSTATE_BORDER_NOT_SUPPORTED']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATESAMPLERSTATE_BORDER_NOT_SUPPORTED</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATESAMPLERSTATE_BORDER_NOT_SUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.OutputMergerSetRenderTargetsNoSRgbMrt\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_OMSETRENDERTARGETS_NO_SRGB_MRT']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_OMSETRENDERTARGETS_NO_SRGB_MRT</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_OMSETRENDERTARGETS_NO_SRGB_MRT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.D3D10L9MessagesEnd\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_D3D10L9_MESSAGES_END']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_D3D10L9_MESSAGES_END</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_D3D10L9_MESSAGES_END</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.D3D11MessagesStart\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_D3D11_MESSAGES_START']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_D3D11_MESSAGES_START</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_D3D11_MESSAGES_START</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateDepthStencilViewInvalidFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDFLAGS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDFLAGS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDFLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateVertexShaderInvalidClassLinkage\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDCLASSLINKAGE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDCLASSLINKAGE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDCLASSLINKAGE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateGeometryShaderInvalidClassLinkage\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDCLASSLINKAGE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDCLASSLINKAGE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDCLASSLINKAGE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateGeometryShaderWithStreamOutputInvalidNumstreams\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDNUMSTREAMS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDNUMSTREAMS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDNUMSTREAMS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateGeometryShaderWithStreamOutputInvalidStreamTorasterizer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTREAMTORASTERIZER']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTREAMTORASTERIZER</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTREAMTORASTERIZER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateGeometryShaderWithStreamOutputUnexpectedStreams\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDSTREAMS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDSTREAMS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDSTREAMS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateGeometryShaderWithStreamOutputInvalidClassLinkage\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDCLASSLINKAGE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDCLASSLINKAGE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDCLASSLINKAGE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreatePixelShaderInvalidClassLinkage\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEPIXELSHADER_INVALIDCLASSLINKAGE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEPIXELSHADER_INVALIDCLASSLINKAGE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEPIXELSHADER_INVALIDCLASSLINKAGE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateDeferredContextInvalidCommandlistflags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEDEFERREDCONTEXT_INVALID_COMMANDLISTFLAGS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEDEFERREDCONTEXT_INVALID_COMMANDLISTFLAGS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEDEFERREDCONTEXT_INVALID_COMMANDLISTFLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateDeferredContextSingleThreaded\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEDEFERREDCONTEXT_SINGLETHREADED']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEDEFERREDCONTEXT_SINGLETHREADED</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEDEFERREDCONTEXT_SINGLETHREADED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateDeferredContextInvalidArgumentReturn\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEDEFERREDCONTEXT_INVALIDARG_RETURN']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEDEFERREDCONTEXT_INVALIDARG_RETURN</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEDEFERREDCONTEXT_INVALIDARG_RETURN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateDeferredContextInvalidCallReturn\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEDEFERREDCONTEXT_INVALID_CALL_RETURN']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEDEFERREDCONTEXT_INVALID_CALL_RETURN</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEDEFERREDCONTEXT_INVALID_CALL_RETURN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateDeferredContextOufOfMemoryReturn\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEDEFERREDCONTEXT_OUTOFMEMORY_RETURN']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEDEFERREDCONTEXT_OUTOFMEMORY_RETURN</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEDEFERREDCONTEXT_OUTOFMEMORY_RETURN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.FinishDisplayListOnimmediatecontext\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_FINISHDISPLAYLIST_ONIMMEDIATECONTEXT']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_FINISHDISPLAYLIST_ONIMMEDIATECONTEXT</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_FINISHDISPLAYLIST_ONIMMEDIATECONTEXT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.FinishDisplayListOufOfMemoryReturn\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_FINISHDISPLAYLIST_OUTOFMEMORY_RETURN']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_FINISHDISPLAYLIST_OUTOFMEMORY_RETURN</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_FINISHDISPLAYLIST_OUTOFMEMORY_RETURN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.FinishDisplayListInvalidCallReturn\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_FINISHDISPLAYLIST_INVALID_CALL_RETURN']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_FINISHDISPLAYLIST_INVALID_CALL_RETURN</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_FINISHDISPLAYLIST_INVALID_CALL_RETURN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateGeometryShaderWithStreamOutputInvalidStream\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTREAM']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTREAM</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTREAM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateGeometryShaderWithStreamOutputUnexpectedEntries\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDENTRIES']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDENTRIES</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDENTRIES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateGeometryShaderWithStreamOutputUnexpectedStrides\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDSTRIDES']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDSTRIDES</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDSTRIDES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateGeometryShaderWithStreamOutputInvalidNumstrides\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDNUMSTRIDES']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDNUMSTRIDES</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDNUMSTRIDES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceHullShaderSetShaderResourcesHazard\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_HSSETSHADERRESOURCES_HAZARD']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_HSSETSHADERRESOURCES_HAZARD</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_HSSETSHADERRESOURCES_HAZARD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceHullShaderSetConstantBuffersHazard\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_HSSETCONSTANTBUFFERS_HAZARD']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_HSSETCONSTANTBUFFERS_HAZARD</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_HSSETCONSTANTBUFFERS_HAZARD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.HullShaderSetShaderResourcesUnbindDeletingObject\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_HSSETSHADERRESOURCES_UNBINDDELETINGOBJECT']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_HSSETSHADERRESOURCES_UNBINDDELETINGOBJECT</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_HSSETSHADERRESOURCES_UNBINDDELETINGOBJECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.HullShaderSetConstantBuffersUnbindDeletingObject\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_HSSETCONSTANTBUFFERS_UNBINDDELETINGOBJECT']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_HSSETCONSTANTBUFFERS_UNBINDDELETINGOBJECT</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_HSSETCONSTANTBUFFERS_UNBINDDELETINGOBJECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateHullShaderInvalidCall\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEHULLSHADER_INVALIDCALL']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEHULLSHADER_INVALIDCALL</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEHULLSHADER_INVALIDCALL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateHullShaderOufOfMemory\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEHULLSHADER_OUTOFMEMORY']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEHULLSHADER_OUTOFMEMORY</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEHULLSHADER_OUTOFMEMORY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateHullShaderInvalidShaderByteCode\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEHULLSHADER_INVALIDSHADERBYTECODE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEHULLSHADER_INVALIDSHADERBYTECODE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEHULLSHADER_INVALIDSHADERBYTECODE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateHullShaderInvalidShaderType\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEHULLSHADER_INVALIDSHADERTYPE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEHULLSHADER_INVALIDSHADERTYPE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEHULLSHADER_INVALIDSHADERTYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateHullShaderInvalidClassLinkage\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEHULLSHADER_INVALIDCLASSLINKAGE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEHULLSHADER_INVALIDCLASSLINKAGE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEHULLSHADER_INVALIDCLASSLINKAGE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceHullShaderSetShaderResourcesViewsEmpty\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_HSSETSHADERRESOURCES_VIEWS_EMPTY']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_HSSETSHADERRESOURCES_VIEWS_EMPTY</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_HSSETSHADERRESOURCES_VIEWS_EMPTY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.HullShaderSetConstantBuffersInvalidBuffer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_HSSETCONSTANTBUFFERS_INVALIDBUFFER']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_HSSETCONSTANTBUFFERS_INVALIDBUFFER</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_HSSETCONSTANTBUFFERS_INVALIDBUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceHullShaderSetConstantBuffersBuffersEmpty\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_HSSETCONSTANTBUFFERS_BUFFERS_EMPTY']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_HSSETCONSTANTBUFFERS_BUFFERS_EMPTY</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_HSSETCONSTANTBUFFERS_BUFFERS_EMPTY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceHullShaderSetSamplersSamplersEmpty\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_HSSETSAMPLERS_SAMPLERS_EMPTY']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_HSSETSAMPLERS_SAMPLERS_EMPTY</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_HSSETSAMPLERS_SAMPLERS_EMPTY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceHullShaderGetShaderResourcesViewsEmpty\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_HSGETSHADERRESOURCES_VIEWS_EMPTY']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_HSGETSHADERRESOURCES_VIEWS_EMPTY</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_HSGETSHADERRESOURCES_VIEWS_EMPTY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceHullShaderGetConstantBuffersBuffersEmpty\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_HSGETCONSTANTBUFFERS_BUFFERS_EMPTY']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_HSGETCONSTANTBUFFERS_BUFFERS_EMPTY</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_HSGETCONSTANTBUFFERS_BUFFERS_EMPTY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceHullShaderGetSamplersSamplersEmpty\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_HSGETSAMPLERS_SAMPLERS_EMPTY']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_HSGETSAMPLERS_SAMPLERS_EMPTY</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_HSGETSAMPLERS_SAMPLERS_EMPTY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceDomainShaderSetShaderResourcesHazard\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_DSSETSHADERRESOURCES_HAZARD']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_DSSETSHADERRESOURCES_HAZARD</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_DSSETSHADERRESOURCES_HAZARD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceDomainShaderSetConstantBuffersHazard\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_DSSETCONSTANTBUFFERS_HAZARD']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_DSSETCONSTANTBUFFERS_HAZARD</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_DSSETCONSTANTBUFFERS_HAZARD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DomainShaderSetShaderResourcesUnbindDeletingObject\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DSSETSHADERRESOURCES_UNBINDDELETINGOBJECT']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DSSETSHADERRESOURCES_UNBINDDELETINGOBJECT</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DSSETSHADERRESOURCES_UNBINDDELETINGOBJECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DomainShaderSetConstantBuffersUnbindDeletingObject\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DSSETCONSTANTBUFFERS_UNBINDDELETINGOBJECT']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DSSETCONSTANTBUFFERS_UNBINDDELETINGOBJECT</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DSSETCONSTANTBUFFERS_UNBINDDELETINGOBJECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateDomainShaderInvalidCall\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDCALL']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDCALL</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDCALL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateDomainShaderOufOfMemory\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEDOMAINSHADER_OUTOFMEMORY']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEDOMAINSHADER_OUTOFMEMORY</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEDOMAINSHADER_OUTOFMEMORY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateDomainShaderInvalidShaderByteCode\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDSHADERBYTECODE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDSHADERBYTECODE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDSHADERBYTECODE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateDomainShaderInvalidShaderType\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDSHADERTYPE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDSHADERTYPE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDSHADERTYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateDomainShaderInvalidClassLinkage\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDCLASSLINKAGE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDCLASSLINKAGE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDCLASSLINKAGE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceDomainShaderSetShaderResourcesViewsEmpty\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_DSSETSHADERRESOURCES_VIEWS_EMPTY']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_DSSETSHADERRESOURCES_VIEWS_EMPTY</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_DSSETSHADERRESOURCES_VIEWS_EMPTY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DomainShaderSetConstantBuffersInvalidBuffer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DSSETCONSTANTBUFFERS_INVALIDBUFFER']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DSSETCONSTANTBUFFERS_INVALIDBUFFER</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DSSETCONSTANTBUFFERS_INVALIDBUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceDomainShaderSetConstantBuffersBuffersEmpty\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_DSSETCONSTANTBUFFERS_BUFFERS_EMPTY']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_DSSETCONSTANTBUFFERS_BUFFERS_EMPTY</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_DSSETCONSTANTBUFFERS_BUFFERS_EMPTY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceDomainShaderSetSamplersSamplersEmpty\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_DSSETSAMPLERS_SAMPLERS_EMPTY']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_DSSETSAMPLERS_SAMPLERS_EMPTY</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_DSSETSAMPLERS_SAMPLERS_EMPTY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceDomainShaderGetShaderResourcesViewsEmpty\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_DSGETSHADERRESOURCES_VIEWS_EMPTY']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_DSGETSHADERRESOURCES_VIEWS_EMPTY</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_DSGETSHADERRESOURCES_VIEWS_EMPTY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceDomainShaderGetConstantBuffersBuffersEmpty\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_DSGETCONSTANTBUFFERS_BUFFERS_EMPTY']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_DSGETCONSTANTBUFFERS_BUFFERS_EMPTY</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_DSGETCONSTANTBUFFERS_BUFFERS_EMPTY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceDomainShaderGetSamplersSamplersEmpty\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_DSGETSAMPLERS_SAMPLERS_EMPTY']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_DSGETSAMPLERS_SAMPLERS_EMPTY</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_DSGETSAMPLERS_SAMPLERS_EMPTY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceDrawHullShaderXorDomainShaderMismatch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_DRAW_HS_XOR_DS_MISMATCH']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_DRAW_HS_XOR_DS_MISMATCH</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_DRAW_HS_XOR_DS_MISMATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeferredContextRemovalProcessAtFault\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEFERRED_CONTEXT_REMOVAL_PROCESS_AT_FAULT']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEFERRED_CONTEXT_REMOVAL_PROCESS_AT_FAULT</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEFERRED_CONTEXT_REMOVAL_PROCESS_AT_FAULT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceDrawIndirectInvalidArgumentBuffer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_DRAWINDIRECT_INVALID_ARG_BUFFER']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_DRAWINDIRECT_INVALID_ARG_BUFFER</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_DRAWINDIRECT_INVALID_ARG_BUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceDrawIndirectOffsetUnaligned\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_DRAWINDIRECT_OFFSET_UNALIGNED']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_DRAWINDIRECT_OFFSET_UNALIGNED</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_DRAWINDIRECT_OFFSET_UNALIGNED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceDrawIndirectOffsetOverflow\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_DRAWINDIRECT_OFFSET_OVERFLOW']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_DRAWINDIRECT_OFFSET_OVERFLOW</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_DRAWINDIRECT_OFFSET_OVERFLOW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.ResourceMapInvalidMaptype\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_RESOURCE_MAP_INVALIDMAPTYPE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_RESOURCE_MAP_INVALIDMAPTYPE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_RESOURCE_MAP_INVALIDMAPTYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.ResourceMapInvalidSubResource\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_RESOURCE_MAP_INVALIDSUBRESOURCE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_RESOURCE_MAP_INVALIDSUBRESOURCE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_RESOURCE_MAP_INVALIDSUBRESOURCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.ResourceMapInvalidFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_RESOURCE_MAP_INVALIDFLAGS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_RESOURCE_MAP_INVALIDFLAGS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_RESOURCE_MAP_INVALIDFLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.ResourceMapAlreadymapped\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_RESOURCE_MAP_ALREADYMAPPED']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_RESOURCE_MAP_ALREADYMAPPED</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_RESOURCE_MAP_ALREADYMAPPED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.ResourceMapDeviceremovedReturn\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_RESOURCE_MAP_DEVICEREMOVED_RETURN']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_RESOURCE_MAP_DEVICEREMOVED_RETURN</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_RESOURCE_MAP_DEVICEREMOVED_RETURN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.ResourceMapOufOfMemoryReturn\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_RESOURCE_MAP_OUTOFMEMORY_RETURN']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_RESOURCE_MAP_OUTOFMEMORY_RETURN</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_RESOURCE_MAP_OUTOFMEMORY_RETURN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.ResourceMapWithoutInitialDiscard\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_RESOURCE_MAP_WITHOUT_INITIAL_DISCARD']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_RESOURCE_MAP_WITHOUT_INITIAL_DISCARD</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_RESOURCE_MAP_WITHOUT_INITIAL_DISCARD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.ResourceUnmapInvalidSubResource\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_RESOURCE_UNMAP_INVALIDSUBRESOURCE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_RESOURCE_UNMAP_INVALIDSUBRESOURCE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_RESOURCE_UNMAP_INVALIDSUBRESOURCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.ResourceUnmapNotMapped\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_RESOURCE_UNMAP_NOTMAPPED']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_RESOURCE_UNMAP_NOTMAPPED</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_RESOURCE_UNMAP_NOTMAPPED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceDrawRasterizingControlPoints\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_DRAW_RASTERIZING_CONTROL_POINTS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_DRAW_RASTERIZING_CONTROL_POINTS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_DRAW_RASTERIZING_CONTROL_POINTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceInputAssemblySetPrimitivetopologyTopologyUnsupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_IASETPRIMITIVETOPOLOGY_TOPOLOGY_UNSUPPORTED']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_IASETPRIMITIVETOPOLOGY_TOPOLOGY_UNSUPPORTED</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_IASETPRIMITIVETOPOLOGY_TOPOLOGY_UNSUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceDrawHullShaderDomainShaderSignatureMismatch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_DRAW_HS_DS_SIGNATURE_MISMATCH']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_DRAW_HS_DS_SIGNATURE_MISMATCH</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_DRAW_HS_DS_SIGNATURE_MISMATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceDrawHullShaderInputTopologyMismatch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_DRAW_HULL_SHADER_INPUT_TOPOLOGY_MISMATCH']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_DRAW_HULL_SHADER_INPUT_TOPOLOGY_MISMATCH</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_DRAW_HULL_SHADER_INPUT_TOPOLOGY_MISMATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceDrawHullShaderDomainShaderControlPointCountMismatch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_DRAW_HS_DS_CONTROL_POINT_COUNT_MISMATCH']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_DRAW_HS_DS_CONTROL_POINT_COUNT_MISMATCH</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_DRAW_HS_DS_CONTROL_POINT_COUNT_MISMATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceDrawHullShaderDomainShaderTessellatorDomainMismatch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_DRAW_HS_DS_TESSELLATOR_DOMAIN_MISMATCH']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_DRAW_HS_DS_TESSELLATOR_DOMAIN_MISMATCH</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_DRAW_HS_DS_TESSELLATOR_DOMAIN_MISMATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateContext\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATE_CONTEXT']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATE_CONTEXT</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATE_CONTEXT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.LiveContext\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_LIVE_CONTEXT']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_LIVE_CONTEXT</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_LIVE_CONTEXT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DestroyContext\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DESTROY_CONTEXT']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DESTROY_CONTEXT</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DESTROY_CONTEXT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateBuffer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATE_BUFFER']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATE_BUFFER</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATE_BUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.LiveBuffer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_LIVE_BUFFER']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_LIVE_BUFFER</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_LIVE_BUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DestroyBuffer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DESTROY_BUFFER']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DESTROY_BUFFER</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DESTROY_BUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateTexture1D\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATE_TEXTURE1D']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATE_TEXTURE1D</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATE_TEXTURE1D</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.LiveTexture1D\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_LIVE_TEXTURE1D']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_LIVE_TEXTURE1D</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_LIVE_TEXTURE1D</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DestroyTexture1D\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DESTROY_TEXTURE1D']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DESTROY_TEXTURE1D</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DESTROY_TEXTURE1D</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateTexture2D\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATE_TEXTURE2D']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATE_TEXTURE2D</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATE_TEXTURE2D</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.LiveTexture2D\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_LIVE_TEXTURE2D']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_LIVE_TEXTURE2D</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_LIVE_TEXTURE2D</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DestroyTexture2D\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DESTROY_TEXTURE2D']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DESTROY_TEXTURE2D</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DESTROY_TEXTURE2D</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateTexture3D\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATE_TEXTURE3D']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATE_TEXTURE3D</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATE_TEXTURE3D</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.LiveTexture3D\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_LIVE_TEXTURE3D']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_LIVE_TEXTURE3D</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_LIVE_TEXTURE3D</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DestroyTexture3D\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DESTROY_TEXTURE3D']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DESTROY_TEXTURE3D</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DESTROY_TEXTURE3D</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateShaderResourceView\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATE_SHADERRESOURCEVIEW']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATE_SHADERRESOURCEVIEW</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATE_SHADERRESOURCEVIEW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.LiveShaderResourceView\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_LIVE_SHADERRESOURCEVIEW']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_LIVE_SHADERRESOURCEVIEW</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_LIVE_SHADERRESOURCEVIEW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DestroyShaderResourceView\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DESTROY_SHADERRESOURCEVIEW']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DESTROY_SHADERRESOURCEVIEW</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DESTROY_SHADERRESOURCEVIEW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateRenderTargetView\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATE_RENDERTARGETVIEW']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATE_RENDERTARGETVIEW</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATE_RENDERTARGETVIEW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.LiveRenderTargetView\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_LIVE_RENDERTARGETVIEW']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_LIVE_RENDERTARGETVIEW</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_LIVE_RENDERTARGETVIEW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DestroyRenderTargetView\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DESTROY_RENDERTARGETVIEW']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DESTROY_RENDERTARGETVIEW</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DESTROY_RENDERTARGETVIEW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateDepthStencilView\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATE_DEPTHSTENCILVIEW']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATE_DEPTHSTENCILVIEW</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATE_DEPTHSTENCILVIEW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.LiveDepthStencilView\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_LIVE_DEPTHSTENCILVIEW']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_LIVE_DEPTHSTENCILVIEW</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_LIVE_DEPTHSTENCILVIEW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DestroyDepthStencilView\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DESTROY_DEPTHSTENCILVIEW']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DESTROY_DEPTHSTENCILVIEW</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DESTROY_DEPTHSTENCILVIEW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateVertexShader\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATE_VERTEXSHADER']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATE_VERTEXSHADER</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATE_VERTEXSHADER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.LiveVertexShader\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_LIVE_VERTEXSHADER']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_LIVE_VERTEXSHADER</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_LIVE_VERTEXSHADER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DestroyVertexShader\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DESTROY_VERTEXSHADER']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DESTROY_VERTEXSHADER</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DESTROY_VERTEXSHADER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateHullShader\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATE_HULLSHADER']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATE_HULLSHADER</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATE_HULLSHADER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.LiveHullShader\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_LIVE_HULLSHADER']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_LIVE_HULLSHADER</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_LIVE_HULLSHADER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DestroyHullShader\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DESTROY_HULLSHADER']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DESTROY_HULLSHADER</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DESTROY_HULLSHADER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateDomainShader\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATE_DOMAINSHADER']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATE_DOMAINSHADER</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATE_DOMAINSHADER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.LiveDomainShader\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_LIVE_DOMAINSHADER']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_LIVE_DOMAINSHADER</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_LIVE_DOMAINSHADER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DestroyDomainShader\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DESTROY_DOMAINSHADER']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DESTROY_DOMAINSHADER</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DESTROY_DOMAINSHADER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateGeometryShader\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATE_GEOMETRYSHADER']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATE_GEOMETRYSHADER</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATE_GEOMETRYSHADER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.LiveGeometryShader\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_LIVE_GEOMETRYSHADER']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_LIVE_GEOMETRYSHADER</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_LIVE_GEOMETRYSHADER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DestroyGeometryShader\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DESTROY_GEOMETRYSHADER']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DESTROY_GEOMETRYSHADER</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DESTROY_GEOMETRYSHADER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreatePixelShader\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATE_PIXELSHADER']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATE_PIXELSHADER</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATE_PIXELSHADER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.LivePixelShader\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_LIVE_PIXELSHADER']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_LIVE_PIXELSHADER</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_LIVE_PIXELSHADER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DestroyPixelShader\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DESTROY_PIXELSHADER']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DESTROY_PIXELSHADER</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DESTROY_PIXELSHADER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateInputLayout\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATE_INPUTLAYOUT']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATE_INPUTLAYOUT</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATE_INPUTLAYOUT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.LiveInputLayout\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_LIVE_INPUTLAYOUT']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_LIVE_INPUTLAYOUT</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_LIVE_INPUTLAYOUT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DestroyInputLayout\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DESTROY_INPUTLAYOUT']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DESTROY_INPUTLAYOUT</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DESTROY_INPUTLAYOUT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateSampler\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATE_SAMPLER']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATE_SAMPLER</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATE_SAMPLER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.LiveSampler\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_LIVE_SAMPLER']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_LIVE_SAMPLER</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_LIVE_SAMPLER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DestroySampler\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DESTROY_SAMPLER']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DESTROY_SAMPLER</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DESTROY_SAMPLER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateBlendState\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATE_BLENDSTATE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATE_BLENDSTATE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATE_BLENDSTATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.LiveBlendState\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_LIVE_BLENDSTATE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_LIVE_BLENDSTATE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_LIVE_BLENDSTATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DestroyBlendState\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DESTROY_BLENDSTATE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DESTROY_BLENDSTATE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DESTROY_BLENDSTATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateDepthStencilState\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATE_DEPTHSTENCILSTATE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATE_DEPTHSTENCILSTATE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATE_DEPTHSTENCILSTATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.LiveDepthStencilState\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_LIVE_DEPTHSTENCILSTATE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_LIVE_DEPTHSTENCILSTATE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_LIVE_DEPTHSTENCILSTATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DestroyDepthStencilState\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DESTROY_DEPTHSTENCILSTATE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DESTROY_DEPTHSTENCILSTATE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DESTROY_DEPTHSTENCILSTATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateRasterizerstate\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATE_RASTERIZERSTATE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATE_RASTERIZERSTATE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATE_RASTERIZERSTATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.LiveRasterizerstate\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_LIVE_RASTERIZERSTATE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_LIVE_RASTERIZERSTATE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_LIVE_RASTERIZERSTATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DestroyRasterizerstate\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DESTROY_RASTERIZERSTATE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DESTROY_RASTERIZERSTATE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DESTROY_RASTERIZERSTATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateQuery\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATE_QUERY']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATE_QUERY</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATE_QUERY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.LiveQuery\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_LIVE_QUERY']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_LIVE_QUERY</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_LIVE_QUERY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DestroyQuery\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DESTROY_QUERY']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DESTROY_QUERY</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DESTROY_QUERY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreatePredicate\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATE_PREDICATE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATE_PREDICATE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATE_PREDICATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.LivePredicate\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_LIVE_PREDICATE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_LIVE_PREDICATE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_LIVE_PREDICATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DestroyPredicate\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DESTROY_PREDICATE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DESTROY_PREDICATE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DESTROY_PREDICATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateCounter\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATE_COUNTER']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATE_COUNTER</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATE_COUNTER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.LiveCounter\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_LIVE_COUNTER']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_LIVE_COUNTER</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_LIVE_COUNTER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DestroyCounter\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DESTROY_COUNTER']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DESTROY_COUNTER</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DESTROY_COUNTER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateCommandlist\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATE_COMMANDLIST']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATE_COMMANDLIST</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATE_COMMANDLIST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.LiveCommandlist\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_LIVE_COMMANDLIST']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_LIVE_COMMANDLIST</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_LIVE_COMMANDLIST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DestroyCommandlist\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DESTROY_COMMANDLIST']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DESTROY_COMMANDLIST</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DESTROY_COMMANDLIST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateClassInstance\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATE_CLASSINSTANCE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATE_CLASSINSTANCE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATE_CLASSINSTANCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.LiveClassInstance\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_LIVE_CLASSINSTANCE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_LIVE_CLASSINSTANCE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_LIVE_CLASSINSTANCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DestroyClassInstance\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DESTROY_CLASSINSTANCE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DESTROY_CLASSINSTANCE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DESTROY_CLASSINSTANCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateClassLinkage\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATE_CLASSLINKAGE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATE_CLASSLINKAGE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATE_CLASSLINKAGE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.LiveClassLinkage\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_LIVE_CLASSLINKAGE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_LIVE_CLASSLINKAGE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_LIVE_CLASSLINKAGE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DestroyClassLinkage\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DESTROY_CLASSLINKAGE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DESTROY_CLASSLINKAGE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DESTROY_CLASSLINKAGE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.LiveDevice\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_LIVE_DEVICE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_LIVE_DEVICE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_LIVE_DEVICE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.LiveObjectSummary\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_LIVE_OBJECT_SUMMARY']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_LIVE_OBJECT_SUMMARY</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_LIVE_OBJECT_SUMMARY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateComputeShader\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATE_COMPUTESHADER']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATE_COMPUTESHADER</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATE_COMPUTESHADER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.LiveComputeShader\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_LIVE_COMPUTESHADER']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_LIVE_COMPUTESHADER</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_LIVE_COMPUTESHADER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DestroyComputeShader\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DESTROY_COMPUTESHADER']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DESTROY_COMPUTESHADER</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DESTROY_COMPUTESHADER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateUnorderedAccessView\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATE_UNORDEREDACCESSVIEW']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATE_UNORDEREDACCESSVIEW</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATE_UNORDEREDACCESSVIEW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.LiveUnorderedAccessView\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_LIVE_UNORDEREDACCESSVIEW']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_LIVE_UNORDEREDACCESSVIEW</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_LIVE_UNORDEREDACCESSVIEW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DestroyUnorderedAccessView\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DESTROY_UNORDEREDACCESSVIEW']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DESTROY_UNORDEREDACCESSVIEW</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DESTROY_UNORDEREDACCESSVIEW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceSetShaderInterfacesFeaturelevel\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_SETSHADER_INTERFACES_FEATURELEVEL']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_SETSHADER_INTERFACES_FEATURELEVEL</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_SETSHADER_INTERFACES_FEATURELEVEL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceSetShaderInterfaceCountMismatch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_SETSHADER_INTERFACE_COUNT_MISMATCH']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_SETSHADER_INTERFACE_COUNT_MISMATCH</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_SETSHADER_INTERFACE_COUNT_MISMATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceSetShaderInvalidInstance\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_SETSHADER_INVALID_INSTANCE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_SETSHADER_INVALID_INSTANCE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_SETSHADER_INVALID_INSTANCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceSetShaderInvalidInstanceIndex\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_SETSHADER_INVALID_INSTANCE_INDEX']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_SETSHADER_INVALID_INSTANCE_INDEX</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_SETSHADER_INVALID_INSTANCE_INDEX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceSetShaderInvalidInstanceType\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_SETSHADER_INVALID_INSTANCE_TYPE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_SETSHADER_INVALID_INSTANCE_TYPE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_SETSHADER_INVALID_INSTANCE_TYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceSetShaderInvalidInstanceData\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_SETSHADER_INVALID_INSTANCE_DATA']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_SETSHADER_INVALID_INSTANCE_DATA</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_SETSHADER_INVALID_INSTANCE_DATA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceSetShaderUnboundInstanceData\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_SETSHADER_UNBOUND_INSTANCE_DATA']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_SETSHADER_UNBOUND_INSTANCE_DATA</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_SETSHADER_UNBOUND_INSTANCE_DATA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceSetShaderInstanceDataBindingS\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_SETSHADER_INSTANCE_DATA_BINDINGS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_SETSHADER_INSTANCE_DATA_BINDINGS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_SETSHADER_INSTANCE_DATA_BINDINGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceCreateShaderClassLinkageFull\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_CREATESHADER_CLASSLINKAGE_FULL']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_CREATESHADER_CLASSLINKAGE_FULL</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_CREATESHADER_CLASSLINKAGE_FULL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceCheckFeaturesupportUnrecognizedFeature\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_CHECKFEATURESUPPORT_UNRECOGNIZED_FEATURE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_CHECKFEATURESUPPORT_UNRECOGNIZED_FEATURE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_CHECKFEATURESUPPORT_UNRECOGNIZED_FEATURE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceCheckFeaturesupportMismatchedDataSize\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_CHECKFEATURESUPPORT_MISMATCHED_DATA_SIZE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_CHECKFEATURESUPPORT_MISMATCHED_DATA_SIZE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_CHECKFEATURESUPPORT_MISMATCHED_DATA_SIZE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceCheckFeaturesupportInvalidArgumentReturn\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_CHECKFEATURESUPPORT_INVALIDARG_RETURN']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_CHECKFEATURESUPPORT_INVALIDARG_RETURN</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_CHECKFEATURESUPPORT_INVALIDARG_RETURN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceComputeShaderSetShaderResourcesHazard\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_CSSETSHADERRESOURCES_HAZARD']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_CSSETSHADERRESOURCES_HAZARD</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_CSSETSHADERRESOURCES_HAZARD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceComputeShaderSetConstantBuffersHazard\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_CSSETCONSTANTBUFFERS_HAZARD']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_CSSETCONSTANTBUFFERS_HAZARD</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_CSSETCONSTANTBUFFERS_HAZARD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.ComputeShaderSetShaderResourcesUnbindDeletingObject\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CSSETSHADERRESOURCES_UNBINDDELETINGOBJECT']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CSSETSHADERRESOURCES_UNBINDDELETINGOBJECT</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CSSETSHADERRESOURCES_UNBINDDELETINGOBJECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.ComputeShaderSetConstantBuffersUnbindDeletingObject\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CSSETCONSTANTBUFFERS_UNBINDDELETINGOBJECT']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CSSETCONSTANTBUFFERS_UNBINDDELETINGOBJECT</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CSSETCONSTANTBUFFERS_UNBINDDELETINGOBJECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateComputeShaderInvalidCall\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATECOMPUTESHADER_INVALIDCALL']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATECOMPUTESHADER_INVALIDCALL</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATECOMPUTESHADER_INVALIDCALL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateComputeShaderOufOfMemory\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATECOMPUTESHADER_OUTOFMEMORY']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATECOMPUTESHADER_OUTOFMEMORY</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATECOMPUTESHADER_OUTOFMEMORY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateComputeShaderInvalidShaderByteCode\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATECOMPUTESHADER_INVALIDSHADERBYTECODE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATECOMPUTESHADER_INVALIDSHADERBYTECODE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATECOMPUTESHADER_INVALIDSHADERBYTECODE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateComputeShaderInvalidShaderType\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATECOMPUTESHADER_INVALIDSHADERTYPE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATECOMPUTESHADER_INVALIDSHADERTYPE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATECOMPUTESHADER_INVALIDSHADERTYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateComputeShaderInvalidClassLinkage\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATECOMPUTESHADER_INVALIDCLASSLINKAGE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATECOMPUTESHADER_INVALIDCLASSLINKAGE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATECOMPUTESHADER_INVALIDCLASSLINKAGE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceComputeShaderSetShaderResourcesViewsEmpty\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_CSSETSHADERRESOURCES_VIEWS_EMPTY']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_CSSETSHADERRESOURCES_VIEWS_EMPTY</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_CSSETSHADERRESOURCES_VIEWS_EMPTY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.ComputeShaderSetConstantBuffersInvalidBuffer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CSSETCONSTANTBUFFERS_INVALIDBUFFER']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CSSETCONSTANTBUFFERS_INVALIDBUFFER</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CSSETCONSTANTBUFFERS_INVALIDBUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceComputeShaderSetConstantBuffersBuffersEmpty\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_CSSETCONSTANTBUFFERS_BUFFERS_EMPTY']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_CSSETCONSTANTBUFFERS_BUFFERS_EMPTY</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_CSSETCONSTANTBUFFERS_BUFFERS_EMPTY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceComputeShaderSetSamplersSamplersEmpty\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_CSSETSAMPLERS_SAMPLERS_EMPTY']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_CSSETSAMPLERS_SAMPLERS_EMPTY</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_CSSETSAMPLERS_SAMPLERS_EMPTY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceComputeShaderGetShaderResourcesViewsEmpty\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_CSGETSHADERRESOURCES_VIEWS_EMPTY']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_CSGETSHADERRESOURCES_VIEWS_EMPTY</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_CSGETSHADERRESOURCES_VIEWS_EMPTY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceComputeShaderGetConstantBuffersBuffersEmpty\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_CSGETCONSTANTBUFFERS_BUFFERS_EMPTY']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_CSGETCONSTANTBUFFERS_BUFFERS_EMPTY</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_CSGETCONSTANTBUFFERS_BUFFERS_EMPTY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceComputeShaderGetSamplersSamplersEmpty\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_CSGETSAMPLERS_SAMPLERS_EMPTY']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_CSGETSAMPLERS_SAMPLERS_EMPTY</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_CSGETSAMPLERS_SAMPLERS_EMPTY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceCreateVertexShaderDoubleFloatopsnotsupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_CREATEVERTEXSHADER_DOUBLEFLOATOPSNOTSUPPORTED']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_CREATEVERTEXSHADER_DOUBLEFLOATOPSNOTSUPPORTED</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_CREATEVERTEXSHADER_DOUBLEFLOATOPSNOTSUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceCreateHullShaderDoubleFloatopsnotsupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_CREATEHULLSHADER_DOUBLEFLOATOPSNOTSUPPORTED']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_CREATEHULLSHADER_DOUBLEFLOATOPSNOTSUPPORTED</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_CREATEHULLSHADER_DOUBLEFLOATOPSNOTSUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceCreateDomainShaderDoubleFloatopsnotsupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_CREATEDOMAINSHADER_DOUBLEFLOATOPSNOTSUPPORTED']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_CREATEDOMAINSHADER_DOUBLEFLOATOPSNOTSUPPORTED</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_CREATEDOMAINSHADER_DOUBLEFLOATOPSNOTSUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceCreateGeometryShaderDoubleFloatopsnotsupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADER_DOUBLEFLOATOPSNOTSUPPORTED']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADER_DOUBLEFLOATOPSNOTSUPPORTED</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADER_DOUBLEFLOATOPSNOTSUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceCreateGeometryShaderWithStreamOutputDoubleFloatopsnotsupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DOUBLEFLOATOPSNOTSUPPORTED']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DOUBLEFLOATOPSNOTSUPPORTED</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DOUBLEFLOATOPSNOTSUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceCreatePixelShaderDoubleFloatopsnotsupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_CREATEPIXELSHADER_DOUBLEFLOATOPSNOTSUPPORTED']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_CREATEPIXELSHADER_DOUBLEFLOATOPSNOTSUPPORTED</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_CREATEPIXELSHADER_DOUBLEFLOATOPSNOTSUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceCreateComputeShaderDoubleFloatopsnotsupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_CREATECOMPUTESHADER_DOUBLEFLOATOPSNOTSUPPORTED']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_CREATECOMPUTESHADER_DOUBLEFLOATOPSNOTSUPPORTED</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_CREATECOMPUTESHADER_DOUBLEFLOATOPSNOTSUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateBufferInvalidStructurestride\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEBUFFER_INVALIDSTRUCTURESTRIDE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEBUFFER_INVALIDSTRUCTURESTRIDE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEBUFFER_INVALIDSTRUCTURESTRIDE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateShaderResourceViewInvalidFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDFLAGS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDFLAGS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDFLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateUnorderedAccessViewInvalidResource\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDRESOURCE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDRESOURCE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDRESOURCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateUnorderedAccessViewInvalidDescription\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDDESC']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDDESC</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDDESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateUnorderedAccessViewInvalidFormat\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDFORMAT']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDFORMAT</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDFORMAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateUnorderedAccessViewInvalidDimensions\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDDIMENSIONS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDDIMENSIONS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDDIMENSIONS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateUnorderedAccessViewUnrecognizedFormat\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_UNRECOGNIZEDFORMAT']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_UNRECOGNIZEDFORMAT</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_UNRECOGNIZEDFORMAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceOutputMergerSetRenderTargetsAndUnorderedAccessViewsHazard\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_OMSETRENDERTARGETSANDUNORDEREDACCESSVIEWS_HAZARD']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_OMSETRENDERTARGETSANDUNORDEREDACCESSVIEWS_HAZARD</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_OMSETRENDERTARGETSANDUNORDEREDACCESSVIEWS_HAZARD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceOutputMergerSetRenderTargetsAndUnorderedAccessViewsOverlappingOldSlots\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_OMSETRENDERTARGETSANDUNORDEREDACCESSVIEWS_OVERLAPPING_OLD_SLOTS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_OMSETRENDERTARGETSANDUNORDEREDACCESSVIEWS_OVERLAPPING_OLD_SLOTS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_OMSETRENDERTARGETSANDUNORDEREDACCESSVIEWS_OVERLAPPING_OLD_SLOTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceOutputMergerSetRenderTargetsAndUnorderedAccessViewsNoOperation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_OMSETRENDERTARGETSANDUNORDEREDACCESSVIEWS_NO_OP']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_OMSETRENDERTARGETSANDUNORDEREDACCESSVIEWS_NO_OP</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_OMSETRENDERTARGETSANDUNORDEREDACCESSVIEWS_NO_OP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.ComputeShaderSetUnorderedAccessViewsUnbindDeletingObject\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CSSETUNORDEREDACCESSVIEWS_UNBINDDELETINGOBJECT']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CSSETUNORDEREDACCESSVIEWS_UNBINDDELETINGOBJECT</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CSSETUNORDEREDACCESSVIEWS_UNBINDDELETINGOBJECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.PixelShaderSetUnorderedAccessViewsUnbindDeletingObject\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_PSSETUNORDEREDACCESSVIEWS_UNBINDDELETINGOBJECT']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_PSSETUNORDEREDACCESSVIEWS_UNBINDDELETINGOBJECT</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_PSSETUNORDEREDACCESSVIEWS_UNBINDDELETINGOBJECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateUnorderedAccessViewInvalidArgumentReturn\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDARG_RETURN']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDARG_RETURN</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDARG_RETURN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateUnorderedAccessViewOufOfMemoryReturn\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_OUTOFMEMORY_RETURN']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_OUTOFMEMORY_RETURN</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_OUTOFMEMORY_RETURN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateUnorderedAccessViewTooManyObjects\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_TOOMANYOBJECTS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_TOOMANYOBJECTS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_TOOMANYOBJECTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceComputeShaderSetUnorderedAccessViewsHazard\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_CSSETUNORDEREDACCESSVIEWS_HAZARD']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_CSSETUNORDEREDACCESSVIEWS_HAZARD</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_CSSETUNORDEREDACCESSVIEWS_HAZARD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.ClearunorderedaccessviewDenormflush\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CLEARUNORDEREDACCESSVIEW_DENORMFLUSH']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CLEARUNORDEREDACCESSVIEW_DENORMFLUSH</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CLEARUNORDEREDACCESSVIEW_DENORMFLUSH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceComputeShaderSetUnorderedAccessSViewsEmpty\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_CSSETUNORDEREDACCESSS_VIEWS_EMPTY']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_CSSETUNORDEREDACCESSS_VIEWS_EMPTY</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_CSSETUNORDEREDACCESSS_VIEWS_EMPTY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceComputeShaderGetUnorderedAccessSViewsEmpty\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_CSGETUNORDEREDACCESSS_VIEWS_EMPTY']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_CSGETUNORDEREDACCESSS_VIEWS_EMPTY</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_CSGETUNORDEREDACCESSS_VIEWS_EMPTY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateUnorderedAccessViewInvalidFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDFLAGS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDFLAGS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDFLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CreateShaderResesourceviewTooManyObjects\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CREATESHADERRESESOURCEVIEW_TOOMANYOBJECTS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CREATESHADERRESESOURCEVIEW_TOOMANYOBJECTS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CREATESHADERRESESOURCEVIEW_TOOMANYOBJECTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceDispatchindirectInvalidArgumentBuffer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_DISPATCHINDIRECT_INVALID_ARG_BUFFER']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_DISPATCHINDIRECT_INVALID_ARG_BUFFER</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_DISPATCHINDIRECT_INVALID_ARG_BUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceDispatchindirectOffsetUnaligned\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_DISPATCHINDIRECT_OFFSET_UNALIGNED']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_DISPATCHINDIRECT_OFFSET_UNALIGNED</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_DISPATCHINDIRECT_OFFSET_UNALIGNED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceDispatchindirectOffsetOverflow\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_DISPATCHINDIRECT_OFFSET_OVERFLOW']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_DISPATCHINDIRECT_OFFSET_OVERFLOW</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_DISPATCHINDIRECT_OFFSET_OVERFLOW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceSetResourceMinimumLodInvalidContext\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_SETRESOURCEMINLOD_INVALIDCONTEXT']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_SETRESOURCEMINLOD_INVALIDCONTEXT</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_SETRESOURCEMINLOD_INVALIDCONTEXT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceSetResourceMinimumLodInvalidResource\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_SETRESOURCEMINLOD_INVALIDRESOURCE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_SETRESOURCEMINLOD_INVALIDRESOURCE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_SETRESOURCEMINLOD_INVALIDRESOURCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceSetResourceMinimumLodInvalidMinimumLod\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_SETRESOURCEMINLOD_INVALIDMINLOD']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_SETRESOURCEMINLOD_INVALIDMINLOD</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_SETRESOURCEMINLOD_INVALIDMINLOD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceGetResourceMinimumLodInvalidContext\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_GETRESOURCEMINLOD_INVALIDCONTEXT']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_GETRESOURCEMINLOD_INVALIDCONTEXT</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_GETRESOURCEMINLOD_INVALIDCONTEXT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceGetResourceMinimumLodInvalidResource\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_GETRESOURCEMINLOD_INVALIDRESOURCE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_GETRESOURCEMINLOD_INVALIDRESOURCE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_GETRESOURCEMINLOD_INVALIDRESOURCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.OutputMergerSetDepthStencilUnbindDeletingObject\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_OMSETDEPTHSTENCIL_UNBINDDELETINGOBJECT']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_OMSETDEPTHSTENCIL_UNBINDDELETINGOBJECT</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_OMSETDEPTHSTENCIL_UNBINDDELETINGOBJECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CleardepthstencilviewDepthReadonly\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_DEPTH_READONLY']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_DEPTH_READONLY</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_DEPTH_READONLY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CleardepthstencilviewStencilReadonly\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_STENCIL_READONLY']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_STENCIL_READONLY</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_STENCIL_READONLY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CheckFeaturesupportFormatDeprecated\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CHECKFEATURESUPPORT_FORMAT_DEPRECATED']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CHECKFEATURESUPPORT_FORMAT_DEPRECATED</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CHECKFEATURESUPPORT_FORMAT_DEPRECATED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceUnorderedAccessViewReturnTypeMismatch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_RETURN_TYPE_MISMATCH']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_RETURN_TYPE_MISMATCH</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_RETURN_TYPE_MISMATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceUnorderedAccessViewNotSet\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_NOT_SET']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_NOT_SET</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_NOT_SET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceDrawUnorderedAccessViewRenderTargetViewOverlap\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_DRAW_UNORDEREDACCESSVIEW_RENDERTARGETVIEW_OVERLAP']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_DRAW_UNORDEREDACCESSVIEW_RENDERTARGETVIEW_OVERLAP</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_DRAW_UNORDEREDACCESSVIEW_RENDERTARGETVIEW_OVERLAP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceUnorderedAccessViewDimensionMismatch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_DIMENSION_MISMATCH']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_DIMENSION_MISMATCH</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_DIMENSION_MISMATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceUnorderedAccessViewAppendUnsupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_APPEND_UNSUPPORTED']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_APPEND_UNSUPPORTED</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_APPEND_UNSUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceUnorderedAccessViewAtomicsUnsupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_ATOMICS_UNSUPPORTED']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_ATOMICS_UNSUPPORTED</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_ATOMICS_UNSUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceUnorderedAccessViewStructureStrideMismatch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_STRUCTURE_STRIDE_MISMATCH']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_STRUCTURE_STRIDE_MISMATCH</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_STRUCTURE_STRIDE_MISMATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceUnorderedAccessViewBufferTypeMismatch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_BUFFER_TYPE_MISMATCH']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_BUFFER_TYPE_MISMATCH</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_BUFFER_TYPE_MISMATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceUnorderedAccessViewRawUnsupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_RAW_UNSUPPORTED']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_RAW_UNSUPPORTED</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_RAW_UNSUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceUnorderedAccessViewFormatLdUnsupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_FORMAT_LD_UNSUPPORTED']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_FORMAT_LD_UNSUPPORTED</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_FORMAT_LD_UNSUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceUnorderedAccessViewFormatStoreUnsupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_FORMAT_STORE_UNSUPPORTED']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_FORMAT_STORE_UNSUPPORTED</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_FORMAT_STORE_UNSUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceUnorderedAccessViewAtomicAddUnsupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_ATOMIC_ADD_UNSUPPORTED']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_ATOMIC_ADD_UNSUPPORTED</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_ATOMIC_ADD_UNSUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceUnorderedAccessViewAtomicBitwiseOperationsUnsupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_ATOMIC_BITWISE_OPS_UNSUPPORTED']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_ATOMIC_BITWISE_OPS_UNSUPPORTED</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_ATOMIC_BITWISE_OPS_UNSUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceUnorderedAccessViewAtomicCmpstoreCmpexchangeUnsupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_ATOMIC_CMPSTORE_CMPEXCHANGE_UNSUPPORTED']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_ATOMIC_CMPSTORE_CMPEXCHANGE_UNSUPPORTED</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_ATOMIC_CMPSTORE_CMPEXCHANGE_UNSUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceUnorderedAccessViewAtomicExchangeUnsupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_ATOMIC_EXCHANGE_UNSUPPORTED']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_ATOMIC_EXCHANGE_UNSUPPORTED</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_ATOMIC_EXCHANGE_UNSUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceUnorderedAccessViewAtomicSignedMinimumMaximumUnsupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_ATOMIC_SIGNED_MINMAX_UNSUPPORTED']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_ATOMIC_SIGNED_MINMAX_UNSUPPORTED</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_ATOMIC_SIGNED_MINMAX_UNSUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceUnorderedAccessViewAtomicUnsignedMinimumMaximumUnsupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_ATOMIC_UNSIGNED_MINMAX_UNSUPPORTED']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_ATOMIC_UNSIGNED_MINMAX_UNSUPPORTED</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_ATOMIC_UNSIGNED_MINMAX_UNSUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceDispatchBoundResourceMapped\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_DISPATCH_BOUND_RESOURCE_MAPPED']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_DISPATCH_BOUND_RESOURCE_MAPPED</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_DISPATCH_BOUND_RESOURCE_MAPPED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceDispatchThreadgroupcountOverflow\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_DISPATCH_THREADGROUPCOUNT_OVERFLOW']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_DISPATCH_THREADGROUPCOUNT_OVERFLOW</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_DISPATCH_THREADGROUPCOUNT_OVERFLOW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceDispatchThreadgroupcountZero\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_DISPATCH_THREADGROUPCOUNT_ZERO']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_DISPATCH_THREADGROUPCOUNT_ZERO</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_DISPATCH_THREADGROUPCOUNT_ZERO</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceShaderResourceViewStructureStrideMismatch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_SHADERRESOURCEVIEW_STRUCTURE_STRIDE_MISMATCH']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_SHADERRESOURCEVIEW_STRUCTURE_STRIDE_MISMATCH</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_SHADERRESOURCEVIEW_STRUCTURE_STRIDE_MISMATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceShaderResourceViewBufferTypeMismatch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_SHADERRESOURCEVIEW_BUFFER_TYPE_MISMATCH']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_SHADERRESOURCEVIEW_BUFFER_TYPE_MISMATCH</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_SHADERRESOURCEVIEW_BUFFER_TYPE_MISMATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceShaderResourceViewRawUnsupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_SHADERRESOURCEVIEW_RAW_UNSUPPORTED']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_SHADERRESOURCEVIEW_RAW_UNSUPPORTED</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_SHADERRESOURCEVIEW_RAW_UNSUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceDispatchUnsupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_DISPATCH_UNSUPPORTED']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_DISPATCH_UNSUPPORTED</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_DISPATCH_UNSUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceDispatchindirectUnsupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_DISPATCHINDIRECT_UNSUPPORTED']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_DISPATCHINDIRECT_UNSUPPORTED</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_DISPATCHINDIRECT_UNSUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CopyStructurecountInvalidOffset\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_COPYSTRUCTURECOUNT_INVALIDOFFSET']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_COPYSTRUCTURECOUNT_INVALIDOFFSET</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_COPYSTRUCTURECOUNT_INVALIDOFFSET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CopyStructurecountLargeOffset\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_COPYSTRUCTURECOUNT_LARGEOFFSET']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_COPYSTRUCTURECOUNT_LARGEOFFSET</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_COPYSTRUCTURECOUNT_LARGEOFFSET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CopyStructurecountInvalidDestinationState\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_COPYSTRUCTURECOUNT_INVALIDDESTINATIONSTATE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_COPYSTRUCTURECOUNT_INVALIDDESTINATIONSTATE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_COPYSTRUCTURECOUNT_INVALIDDESTINATIONSTATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CopyStructurecountInvalidSourceState\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_COPYSTRUCTURECOUNT_INVALIDSOURCESTATE']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_COPYSTRUCTURECOUNT_INVALIDSOURCESTATE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_COPYSTRUCTURECOUNT_INVALIDSOURCESTATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.CheckFormatSupportFormatNotSupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CHECKFORMATSUPPORT_FORMAT_NOT_SUPPORTED']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CHECKFORMATSUPPORT_FORMAT_NOT_SUPPORTED</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CHECKFORMATSUPPORT_FORMAT_NOT_SUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceComputeShaderSetUnorderedAccessViewsInvalidView\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_CSSETUNORDEREDACCESSVIEWS_INVALIDVIEW']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_CSSETUNORDEREDACCESSVIEWS_INVALIDVIEW</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_CSSETUNORDEREDACCESSVIEWS_INVALIDVIEW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceComputeShaderSetUnorderedAccessViewsInvalidOffset\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_CSSETUNORDEREDACCESSVIEWS_INVALIDOFFSET']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_CSSETUNORDEREDACCESSVIEWS_INVALIDOFFSET</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_CSSETUNORDEREDACCESSVIEWS_INVALIDOFFSET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceComputeShaderSetUnorderedAccessViewsTooManyViews\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_CSSETUNORDEREDACCESSVIEWS_TOOMANYVIEWS']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_CSSETUNORDEREDACCESSVIEWS_TOOMANYVIEWS</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_CSSETUNORDEREDACCESSVIEWS_TOOMANYVIEWS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.ClearunorderedaccessviewfloatInvalidFormat\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_CLEARUNORDEREDACCESSVIEWFLOAT_INVALIDFORMAT']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_CLEARUNORDEREDACCESSVIEWFLOAT_INVALIDFORMAT</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_CLEARUNORDEREDACCESSVIEWFLOAT_INVALIDFORMAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.DeviceUnorderedAccessViewCounterUnsupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_COUNTER_UNSUPPORTED']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_COUNTER_UNSUPPORTED</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_COUNTER_UNSUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.RefWarning\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_REF_WARNING']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_REF_WARNING</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_REF_WARNING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageId.D3D11MessagesEnd\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_ID_D3D11_MESSAGES_END']/*\"/>\t\n            <unmanaged>D3D11_MESSAGE_ID_D3D11_MESSAGES_END</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID_D3D11_MESSAGES_END</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.MessageSeverity\">\n            <summary>\t\n            <p>Debug message severity levels for an information queue.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Use these values to allow or deny message categories to pass through the storage and retrieval filters for an information queue (see <strong><see cref=\"T:SharpDX.Direct3D11.InfoQueueFilter\"/></strong>). This API is used by <strong><see cref=\"M:SharpDX.Direct3D11.InfoQueue.AddApplicationMessage(SharpDX.Direct3D11.MessageSeverity,System.String)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_SEVERITY']/*\"/>\t\n            <msdn-id>ff476187</msdn-id>\t\n            <unmanaged>D3D11_MESSAGE_SEVERITY</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_SEVERITY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageSeverity.Corruption\">\n            <summary>\t\n            <dd> <p>Defines some type of corruption which has occurred.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_SEVERITY_CORRUPTION']/*\"/>\t\n            <msdn-id>ff476187</msdn-id>\t\n            <unmanaged>D3D11_MESSAGE_SEVERITY_CORRUPTION</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_SEVERITY_CORRUPTION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageSeverity.Error\">\n            <summary>\t\n            <dd> <p>Defines an error message.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_SEVERITY_ERROR']/*\"/>\t\n            <msdn-id>ff476187</msdn-id>\t\n            <unmanaged>D3D11_MESSAGE_SEVERITY_ERROR</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_SEVERITY_ERROR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageSeverity.Warning\">\n            <summary>\t\n            <dd> <p>Defines a warning message.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_SEVERITY_WARNING']/*\"/>\t\n            <msdn-id>ff476187</msdn-id>\t\n            <unmanaged>D3D11_MESSAGE_SEVERITY_WARNING</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_SEVERITY_WARNING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.MessageSeverity.Information\">\n            <summary>\t\n            <dd> <p>Defines an information message.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE_SEVERITY_INFO']/*\"/>\t\n            <msdn-id>ff476187</msdn-id>\t\n            <unmanaged>D3D11_MESSAGE_SEVERITY_INFO</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_SEVERITY_INFO</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.NormalMapFlags\">\n            <summary>\t\n            <p>Normal map options. Any number of these flags may be OR'd together in any combination.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>These flags are used by <strong><see cref=\"M:SharpDX.Direct3D11.D3DX11.ComputeNormalMap(SharpDX.Direct3D11.DeviceContext,SharpDX.Direct3D11.Texture2D,SharpDX.Direct3D11.NormalMapFlags,SharpDX.Direct3D11.Channel,System.Single,SharpDX.Direct3D11.Texture2D)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_NORMALMAP_FLAG']/*\"/>\t\n            <msdn-id>ff476318</msdn-id>\t\n            <unmanaged>D3DX11_NORMALMAP_FLAG</unmanaged>\t\n            <unmanaged-short>D3DX11_NORMALMAP_FLAG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.NormalMapFlags.MirrorU\">\n            <summary>\t\n            <dd> <p>Indicates that pixels off the edge of the texture on the U-axis should be mirrored, not wraped.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_NORMALMAP_MIRROR_U']/*\"/>\t\n            <msdn-id>ff476318</msdn-id>\t\n            <unmanaged>D3DX11_NORMALMAP_MIRROR_U</unmanaged>\t\n            <unmanaged-short>D3DX11_NORMALMAP_MIRROR_U</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.NormalMapFlags.MirrorV\">\n            <summary>\t\n            <dd> <p>Indicates that pixels off the edge of the texture on the V-axis should be mirrored, not wraped.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_NORMALMAP_MIRROR_V']/*\"/>\t\n            <msdn-id>ff476318</msdn-id>\t\n            <unmanaged>D3DX11_NORMALMAP_MIRROR_V</unmanaged>\t\n            <unmanaged-short>D3DX11_NORMALMAP_MIRROR_V</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.NormalMapFlags.Mirror\">\n            <summary>\t\n            <dd> <p>Same as <see cref=\"F:SharpDX.Direct3D11.NormalMapFlags.MirrorU\"/> | <see cref=\"F:SharpDX.Direct3D11.NormalMapFlags.MirrorV\"/>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_NORMALMAP_MIRROR']/*\"/>\t\n            <msdn-id>ff476318</msdn-id>\t\n            <unmanaged>D3DX11_NORMALMAP_MIRROR</unmanaged>\t\n            <unmanaged-short>D3DX11_NORMALMAP_MIRROR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.NormalMapFlags.InvertSign\">\n            <summary>\t\n            <dd> <p>Inverts the direction of each normal.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_NORMALMAP_INVERTSIGN']/*\"/>\t\n            <msdn-id>ff476318</msdn-id>\t\n            <unmanaged>D3DX11_NORMALMAP_INVERTSIGN</unmanaged>\t\n            <unmanaged-short>D3DX11_NORMALMAP_INVERTSIGN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.NormalMapFlags.ComputeOcclusion\">\n            <summary>\t\n            <dd> <p>Computes the per pixel occlusion term and encodes it into the alpha. An Alpha of 1 means that the pixel is not obscured in any way, and an alpha of 0 would mean that the pixel is completly obscured.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_NORMALMAP_COMPUTE_OCCLUSION']/*\"/>\t\n            <msdn-id>ff476318</msdn-id>\t\n            <unmanaged>D3DX11_NORMALMAP_COMPUTE_OCCLUSION</unmanaged>\t\n            <unmanaged-short>D3DX11_NORMALMAP_COMPUTE_OCCLUSION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.NormalMapFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.QueryFlags\">\n            <summary>\t\n            <p>Flags that describe miscellaneous query behavior.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This flag is part of a query description (see <strong><see cref=\"T:SharpDX.Direct3D11.QueryDescription\"/></strong>).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_QUERY_MISC_FLAG']/*\"/>\t\n            <msdn-id>ff476196</msdn-id>\t\n            <unmanaged>D3D11_QUERY_MISC_FLAG</unmanaged>\t\n            <unmanaged-short>D3D11_QUERY_MISC_FLAG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.QueryFlags.Predicatehint\">\n            <summary>\t\n            <dd> <p>Tell the hardware that if it is not yet sure if something is hidden or not to draw it anyway. This is only used with an occlusion predicate. Predication data cannot be returned to your application via <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.GetDataInternal(SharpDX.Direct3D11.Asynchronous,System.IntPtr,System.Int32,SharpDX.Direct3D11.AsynchronousFlags)\"/></strong> when using this flag.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_QUERY_MISC_PREDICATEHINT']/*\"/>\t\n            <msdn-id>ff476196</msdn-id>\t\n            <unmanaged>D3D11_QUERY_MISC_PREDICATEHINT</unmanaged>\t\n            <unmanaged-short>D3D11_QUERY_MISC_PREDICATEHINT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.QueryFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.QueryType\">\n            <summary>\t\n            <p>Query types.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Create a query with <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateQuery(SharpDX.Direct3D11.QueryDescription,SharpDX.Direct3D11.Query)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_QUERY']/*\"/>\t\n            <msdn-id>ff476191</msdn-id>\t\n            <unmanaged>D3D11_QUERY</unmanaged>\t\n            <unmanaged-short>D3D11_QUERY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.QueryType.Event\">\n            <summary>\t\n            <dd> <p>Determines whether or not the GPU is finished processing commands. When the GPU is finished processing commands <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.GetDataInternal(SharpDX.Direct3D11.Asynchronous,System.IntPtr,System.Int32,SharpDX.Direct3D11.AsynchronousFlags)\"/></strong> will return <see cref=\"F:SharpDX.Result.Ok\"/>, and pData will point to a <see cref=\"T:SharpDX.Bool\"/> with a value of <strong>TRUE</strong>. When using this type of query, <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.Begin(SharpDX.Direct3D11.Asynchronous)\"/></strong> is disabled.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_QUERY_EVENT']/*\"/>\t\n            <msdn-id>ff476191</msdn-id>\t\n            <unmanaged>D3D11_QUERY_EVENT</unmanaged>\t\n            <unmanaged-short>D3D11_QUERY_EVENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.QueryType.Occlusion\">\n            <summary>\t\n            <dd> <p>Get the number of samples that passed the depth and stencil tests in between <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.Begin(SharpDX.Direct3D11.Asynchronous)\"/></strong> and <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.End(SharpDX.Direct3D11.Asynchronous)\"/></strong>. <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.GetDataInternal(SharpDX.Direct3D11.Asynchronous,System.IntPtr,System.Int32,SharpDX.Direct3D11.AsynchronousFlags)\"/></strong> returns a UINT64. If a depth or stencil test is disabled, then each of those tests will be counted as a pass.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_QUERY_OCCLUSION']/*\"/>\t\n            <msdn-id>ff476191</msdn-id>\t\n            <unmanaged>D3D11_QUERY_OCCLUSION</unmanaged>\t\n            <unmanaged-short>D3D11_QUERY_OCCLUSION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.QueryType.Timestamp\">\n            <summary>\t\n            <dd> <p>Get a timestamp value where <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.GetDataInternal(SharpDX.Direct3D11.Asynchronous,System.IntPtr,System.Int32,SharpDX.Direct3D11.AsynchronousFlags)\"/></strong> returns a UINT64. This kind of query is only useful if two timestamp queries are done in the middle of a <see cref=\"F:SharpDX.Direct3D11.QueryType.TimestampDisjoint\"/> query. The difference of two timestamps can be used to determine how many ticks have elapsed, and the <see cref=\"F:SharpDX.Direct3D11.QueryType.TimestampDisjoint\"/> query will determine if that difference is a reliable value and also has a value that shows how to convert the number of ticks into seconds. See <strong><see cref=\"T:SharpDX.Direct3D11.QueryDataTimestampDisjoint\"/></strong>. When using this type of query, <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.Begin(SharpDX.Direct3D11.Asynchronous)\"/></strong> is disabled.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_QUERY_TIMESTAMP']/*\"/>\t\n            <msdn-id>ff476191</msdn-id>\t\n            <unmanaged>D3D11_QUERY_TIMESTAMP</unmanaged>\t\n            <unmanaged-short>D3D11_QUERY_TIMESTAMP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.QueryType.TimestampDisjoint\">\n            <summary>\t\n            <dd> <p>Determines whether or not a <see cref=\"F:SharpDX.Direct3D11.QueryType.Timestamp\"/> is returning reliable values, and also gives the frequency of the processor enabling you to convert the number of elapsed ticks into seconds. <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.GetDataInternal(SharpDX.Direct3D11.Asynchronous,System.IntPtr,System.Int32,SharpDX.Direct3D11.AsynchronousFlags)\"/></strong> will return a <strong><see cref=\"T:SharpDX.Direct3D11.QueryDataTimestampDisjoint\"/></strong>. This type of query should only be invoked once per frame or less.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_QUERY_TIMESTAMP_DISJOINT']/*\"/>\t\n            <msdn-id>ff476191</msdn-id>\t\n            <unmanaged>D3D11_QUERY_TIMESTAMP_DISJOINT</unmanaged>\t\n            <unmanaged-short>D3D11_QUERY_TIMESTAMP_DISJOINT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.QueryType.PipelineStatistics\">\n            <summary>\t\n            <dd> <p>Get pipeline statistics, such as the number of pixel shader invocations in between <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.Begin(SharpDX.Direct3D11.Asynchronous)\"/></strong> and <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.End(SharpDX.Direct3D11.Asynchronous)\"/></strong>. <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.GetDataInternal(SharpDX.Direct3D11.Asynchronous,System.IntPtr,System.Int32,SharpDX.Direct3D11.AsynchronousFlags)\"/></strong> will return a <strong><see cref=\"T:SharpDX.Direct3D11.QueryDataPipelineStatistics\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_QUERY_PIPELINE_STATISTICS']/*\"/>\t\n            <msdn-id>ff476191</msdn-id>\t\n            <unmanaged>D3D11_QUERY_PIPELINE_STATISTICS</unmanaged>\t\n            <unmanaged-short>D3D11_QUERY_PIPELINE_STATISTICS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.QueryType.OcclusionPredicate\">\n            <summary>\t\n            <dd> <p>Similar to <see cref=\"F:SharpDX.Direct3D11.QueryType.Occlusion\"/>, except <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.GetDataInternal(SharpDX.Direct3D11.Asynchronous,System.IntPtr,System.Int32,SharpDX.Direct3D11.AsynchronousFlags)\"/></strong> returns a <see cref=\"T:SharpDX.Bool\"/> indicating whether or not any samples passed the depth and stencil tests - <strong>TRUE</strong> meaning at least one passed, <strong><see cref=\"F:SharpDX.Result.False\"/></strong> meaning none passed.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_QUERY_OCCLUSION_PREDICATE']/*\"/>\t\n            <msdn-id>ff476191</msdn-id>\t\n            <unmanaged>D3D11_QUERY_OCCLUSION_PREDICATE</unmanaged>\t\n            <unmanaged-short>D3D11_QUERY_OCCLUSION_PREDICATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.QueryType.StreamOutputStatistics\">\n            <summary>\t\n            <dd> <p>Get streaming output statistics, such as the number of primitives streamed out in between <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.Begin(SharpDX.Direct3D11.Asynchronous)\"/></strong> and <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.End(SharpDX.Direct3D11.Asynchronous)\"/></strong>. <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.GetDataInternal(SharpDX.Direct3D11.Asynchronous,System.IntPtr,System.Int32,SharpDX.Direct3D11.AsynchronousFlags)\"/></strong> will return a <strong><see cref=\"T:SharpDX.Direct3D11.StreamOutputStatistics\"/></strong> structure.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_QUERY_SO_STATISTICS']/*\"/>\t\n            <msdn-id>ff476191</msdn-id>\t\n            <unmanaged>D3D11_QUERY_SO_STATISTICS</unmanaged>\t\n            <unmanaged-short>D3D11_QUERY_SO_STATISTICS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.QueryType.StreamOutputOverflowPredicate\">\n            <summary>\t\n            <dd> <p>Determines whether or not any of the streaming output buffers overflowed in between <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.Begin(SharpDX.Direct3D11.Asynchronous)\"/></strong> and <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.End(SharpDX.Direct3D11.Asynchronous)\"/></strong>. <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.GetDataInternal(SharpDX.Direct3D11.Asynchronous,System.IntPtr,System.Int32,SharpDX.Direct3D11.AsynchronousFlags)\"/></strong> returns a <see cref=\"T:SharpDX.Bool\"/> - <strong>TRUE</strong> meaning there was an overflow, <strong><see cref=\"F:SharpDX.Result.False\"/></strong> meaning there was not an overflow. If streaming output writes to multiple buffers, and one of the buffers overflows, then it will stop writing to all the output buffers. When an overflow is detected by Direct3D it is prevented from happening - no memory is corrupted. This predication may be used in conjunction with an SO_STATISTICS query so that when an overflow occurs the SO_STATISTIC query will let the application know how much memory was needed to prevent an overflow.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_QUERY_SO_OVERFLOW_PREDICATE']/*\"/>\t\n            <msdn-id>ff476191</msdn-id>\t\n            <unmanaged>D3D11_QUERY_SO_OVERFLOW_PREDICATE</unmanaged>\t\n            <unmanaged-short>D3D11_QUERY_SO_OVERFLOW_PREDICATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.QueryType.StreamOutputStatisticsStream0\">\n            <summary>\t\n            <dd> <p>Get streaming output statistics for stream 0, such as the number of primitives streamed out in between <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.Begin(SharpDX.Direct3D11.Asynchronous)\"/></strong> and <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.End(SharpDX.Direct3D11.Asynchronous)\"/></strong>. <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.GetDataInternal(SharpDX.Direct3D11.Asynchronous,System.IntPtr,System.Int32,SharpDX.Direct3D11.AsynchronousFlags)\"/></strong> will return a <strong><see cref=\"T:SharpDX.Direct3D11.StreamOutputStatistics\"/></strong> structure.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_QUERY_SO_STATISTICS_STREAM0']/*\"/>\t\n            <msdn-id>ff476191</msdn-id>\t\n            <unmanaged>D3D11_QUERY_SO_STATISTICS_STREAM0</unmanaged>\t\n            <unmanaged-short>D3D11_QUERY_SO_STATISTICS_STREAM0</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.QueryType.StreamOutputOverflowPredicateStream0\">\n            <summary>\t\n            <dd> <p>Determines whether or not the stream 0 output buffers overflowed in between <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.Begin(SharpDX.Direct3D11.Asynchronous)\"/></strong> and <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.End(SharpDX.Direct3D11.Asynchronous)\"/></strong>. <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.GetDataInternal(SharpDX.Direct3D11.Asynchronous,System.IntPtr,System.Int32,SharpDX.Direct3D11.AsynchronousFlags)\"/></strong> returns a <see cref=\"T:SharpDX.Bool\"/> - <strong>TRUE</strong> meaning there was an overflow, <strong><see cref=\"F:SharpDX.Result.False\"/></strong> meaning there was not an overflow. If streaming output writes to multiple buffers, and one of the buffers overflows, then it will stop writing to all the output buffers. When an overflow is detected by Direct3D it is prevented from happening - no memory is corrupted. This predication may be used in conjunction with an SO_STATISTICS query so that when an overflow occurs the SO_STATISTIC query will let the application know how much memory was needed to prevent an overflow.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM0']/*\"/>\t\n            <msdn-id>ff476191</msdn-id>\t\n            <unmanaged>D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM0</unmanaged>\t\n            <unmanaged-short>D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM0</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.QueryType.StreamOutputStatisticsStream1\">\n            <summary>\t\n            <dd> <p>Get streaming output statistics for stream 1, such as the number of primitives streamed out in between <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.Begin(SharpDX.Direct3D11.Asynchronous)\"/></strong> and <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.End(SharpDX.Direct3D11.Asynchronous)\"/></strong>. <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.GetDataInternal(SharpDX.Direct3D11.Asynchronous,System.IntPtr,System.Int32,SharpDX.Direct3D11.AsynchronousFlags)\"/></strong> will return a <strong><see cref=\"T:SharpDX.Direct3D11.StreamOutputStatistics\"/></strong> structure.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_QUERY_SO_STATISTICS_STREAM1']/*\"/>\t\n            <msdn-id>ff476191</msdn-id>\t\n            <unmanaged>D3D11_QUERY_SO_STATISTICS_STREAM1</unmanaged>\t\n            <unmanaged-short>D3D11_QUERY_SO_STATISTICS_STREAM1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.QueryType.StreamOutputOverflowPredicateStream1\">\n            <summary>\t\n            <dd> <p>Determines whether or not the stream 1 output buffers overflowed in between <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.Begin(SharpDX.Direct3D11.Asynchronous)\"/></strong> and <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.End(SharpDX.Direct3D11.Asynchronous)\"/></strong>. <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.GetDataInternal(SharpDX.Direct3D11.Asynchronous,System.IntPtr,System.Int32,SharpDX.Direct3D11.AsynchronousFlags)\"/></strong> returns a <see cref=\"T:SharpDX.Bool\"/> - <strong>TRUE</strong> meaning there was an overflow, <strong><see cref=\"F:SharpDX.Result.False\"/></strong> meaning there was not an overflow. If streaming output writes to multiple buffers, and one of the buffers overflows, then it will stop writing to all the output buffers. When an overflow is detected by Direct3D it is prevented from happening - no memory is corrupted. This predication may be used in conjunction with an SO_STATISTICS query so that when an overflow occurs the SO_STATISTIC query will let the application know how much memory was needed to prevent an overflow.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM1']/*\"/>\t\n            <msdn-id>ff476191</msdn-id>\t\n            <unmanaged>D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM1</unmanaged>\t\n            <unmanaged-short>D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.QueryType.StreamOutputStatisticsStream2\">\n            <summary>\t\n            <dd> <p>Get streaming output statistics for stream 2, such as the number of primitives streamed out in between <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.Begin(SharpDX.Direct3D11.Asynchronous)\"/></strong> and <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.End(SharpDX.Direct3D11.Asynchronous)\"/></strong>. <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.GetDataInternal(SharpDX.Direct3D11.Asynchronous,System.IntPtr,System.Int32,SharpDX.Direct3D11.AsynchronousFlags)\"/></strong> will return a <strong><see cref=\"T:SharpDX.Direct3D11.StreamOutputStatistics\"/></strong> structure.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_QUERY_SO_STATISTICS_STREAM2']/*\"/>\t\n            <msdn-id>ff476191</msdn-id>\t\n            <unmanaged>D3D11_QUERY_SO_STATISTICS_STREAM2</unmanaged>\t\n            <unmanaged-short>D3D11_QUERY_SO_STATISTICS_STREAM2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.QueryType.StreamOutputOverflowPredicateStream2\">\n            <summary>\t\n            <dd> <p>Determines whether or not the stream 2 output buffers overflowed in between <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.Begin(SharpDX.Direct3D11.Asynchronous)\"/></strong> and <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.End(SharpDX.Direct3D11.Asynchronous)\"/></strong>. <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.GetDataInternal(SharpDX.Direct3D11.Asynchronous,System.IntPtr,System.Int32,SharpDX.Direct3D11.AsynchronousFlags)\"/></strong> returns a <see cref=\"T:SharpDX.Bool\"/> - <strong>TRUE</strong> meaning there was an overflow, <strong><see cref=\"F:SharpDX.Result.False\"/></strong> meaning there was not an overflow. If streaming output writes to multiple buffers, and one of the buffers overflows, then it will stop writing to all the output buffers. When an overflow is detected by Direct3D it is prevented from happening - no memory is corrupted. This predication may be used in conjunction with an SO_STATISTICS query so that when an overflow occurs the SO_STATISTIC query will let the application know how much memory was needed to prevent an overflow.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM2']/*\"/>\t\n            <msdn-id>ff476191</msdn-id>\t\n            <unmanaged>D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM2</unmanaged>\t\n            <unmanaged-short>D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.QueryType.StreamOutputStatisticsStream3\">\n            <summary>\t\n            <dd> <p>Get streaming output statistics for stream 3, such as the number of primitives streamed out in between <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.Begin(SharpDX.Direct3D11.Asynchronous)\"/></strong> and <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.End(SharpDX.Direct3D11.Asynchronous)\"/></strong>. <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.GetDataInternal(SharpDX.Direct3D11.Asynchronous,System.IntPtr,System.Int32,SharpDX.Direct3D11.AsynchronousFlags)\"/></strong> will return a <strong><see cref=\"T:SharpDX.Direct3D11.StreamOutputStatistics\"/></strong> structure.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_QUERY_SO_STATISTICS_STREAM3']/*\"/>\t\n            <msdn-id>ff476191</msdn-id>\t\n            <unmanaged>D3D11_QUERY_SO_STATISTICS_STREAM3</unmanaged>\t\n            <unmanaged-short>D3D11_QUERY_SO_STATISTICS_STREAM3</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.QueryType.StreamOutputOverflowPredicateStream3\">\n            <summary>\t\n            <dd> <p>Determines whether or not the stream 3 output buffers overflowed in between <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.Begin(SharpDX.Direct3D11.Asynchronous)\"/></strong> and <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.End(SharpDX.Direct3D11.Asynchronous)\"/></strong>. <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.GetDataInternal(SharpDX.Direct3D11.Asynchronous,System.IntPtr,System.Int32,SharpDX.Direct3D11.AsynchronousFlags)\"/></strong> returns a <see cref=\"T:SharpDX.Bool\"/> - <strong>TRUE</strong> meaning there was an overflow, <strong><see cref=\"F:SharpDX.Result.False\"/></strong> meaning there was not an overflow. If streaming output writes to multiple buffers, and one of the buffers overflows, then it will stop writing to all the output buffers. When an overflow is detected by Direct3D it is prevented from happening - no memory is corrupted. This predication may be used in conjunction with an SO_STATISTICS query so that when an overflow occurs the SO_STATISTIC query will let the application know how much memory was needed to prevent an overflow.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM3']/*\"/>\t\n            <msdn-id>ff476191</msdn-id>\t\n            <unmanaged>D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM3</unmanaged>\t\n            <unmanaged-short>D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM3</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.RenderTargetViewDimension\">\n            <summary>\t\n            <p>These flags identify the type of resource that will be viewed as a render target.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This enumeration is used in <strong><see cref=\"T:SharpDX.Direct3D11.RenderTargetViewDescription\"/></strong> to create a render-target view.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_RTV_DIMENSION']/*\"/>\t\n            <msdn-id>ff476206</msdn-id>\t\n            <unmanaged>D3D11_RTV_DIMENSION</unmanaged>\t\n            <unmanaged-short>D3D11_RTV_DIMENSION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.RenderTargetViewDimension.Unknown\">\n            <summary>\t\n            <dd> <p>Do not use this value, as it will cause <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateRenderTargetView(SharpDX.Direct3D11.Resource,System.Nullable{SharpDX.Direct3D11.RenderTargetViewDescription},SharpDX.Direct3D11.RenderTargetView)\"/></strong> to fail.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_RTV_DIMENSION_UNKNOWN']/*\"/>\t\n            <msdn-id>ff476206</msdn-id>\t\n            <unmanaged>D3D11_RTV_DIMENSION_UNKNOWN</unmanaged>\t\n            <unmanaged-short>D3D11_RTV_DIMENSION_UNKNOWN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.RenderTargetViewDimension.Buffer\">\n            <summary>\t\n            <dd> <p>The resource will be accessed as a buffer.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_RTV_DIMENSION_BUFFER']/*\"/>\t\n            <msdn-id>ff476206</msdn-id>\t\n            <unmanaged>D3D11_RTV_DIMENSION_BUFFER</unmanaged>\t\n            <unmanaged-short>D3D11_RTV_DIMENSION_BUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.RenderTargetViewDimension.Texture1D\">\n            <summary>\t\n            <dd> <p>The resource will be accessed as a 1D texture.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_RTV_DIMENSION_TEXTURE1D']/*\"/>\t\n            <msdn-id>ff476206</msdn-id>\t\n            <unmanaged>D3D11_RTV_DIMENSION_TEXTURE1D</unmanaged>\t\n            <unmanaged-short>D3D11_RTV_DIMENSION_TEXTURE1D</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.RenderTargetViewDimension.Texture1DArray\">\n            <summary>\t\n            <dd> <p>The resource will be accessed as an array of 1D textures.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_RTV_DIMENSION_TEXTURE1DARRAY']/*\"/>\t\n            <msdn-id>ff476206</msdn-id>\t\n            <unmanaged>D3D11_RTV_DIMENSION_TEXTURE1DARRAY</unmanaged>\t\n            <unmanaged-short>D3D11_RTV_DIMENSION_TEXTURE1DARRAY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.RenderTargetViewDimension.Texture2D\">\n            <summary>\t\n            <dd> <p>The resource will be accessed as a 2D texture.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_RTV_DIMENSION_TEXTURE2D']/*\"/>\t\n            <msdn-id>ff476206</msdn-id>\t\n            <unmanaged>D3D11_RTV_DIMENSION_TEXTURE2D</unmanaged>\t\n            <unmanaged-short>D3D11_RTV_DIMENSION_TEXTURE2D</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.RenderTargetViewDimension.Texture2DArray\">\n            <summary>\t\n            <dd> <p>The resource will be accessed as an array of 2D textures.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_RTV_DIMENSION_TEXTURE2DARRAY']/*\"/>\t\n            <msdn-id>ff476206</msdn-id>\t\n            <unmanaged>D3D11_RTV_DIMENSION_TEXTURE2DARRAY</unmanaged>\t\n            <unmanaged-short>D3D11_RTV_DIMENSION_TEXTURE2DARRAY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.RenderTargetViewDimension.Texture2DMultisampled\">\n            <summary>\t\n            <dd> <p>The resource will be accessed as a 2D texture with multisampling.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_RTV_DIMENSION_TEXTURE2DMS']/*\"/>\t\n            <msdn-id>ff476206</msdn-id>\t\n            <unmanaged>D3D11_RTV_DIMENSION_TEXTURE2DMS</unmanaged>\t\n            <unmanaged-short>D3D11_RTV_DIMENSION_TEXTURE2DMS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.RenderTargetViewDimension.Texture2DMultisampledArray\">\n            <summary>\t\n            <dd> <p>The resource will be accessed as an array of 2D textures with multisampling.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_RTV_DIMENSION_TEXTURE2DMSARRAY']/*\"/>\t\n            <msdn-id>ff476206</msdn-id>\t\n            <unmanaged>D3D11_RTV_DIMENSION_TEXTURE2DMSARRAY</unmanaged>\t\n            <unmanaged-short>D3D11_RTV_DIMENSION_TEXTURE2DMSARRAY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.RenderTargetViewDimension.Texture3D\">\n            <summary>\t\n            <dd> <p>The resource will be accessed as a 3D texture.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_RTV_DIMENSION_TEXTURE3D']/*\"/>\t\n            <msdn-id>ff476206</msdn-id>\t\n            <unmanaged>D3D11_RTV_DIMENSION_TEXTURE3D</unmanaged>\t\n            <unmanaged-short>D3D11_RTV_DIMENSION_TEXTURE3D</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.ReportingLevel\">\n            <summary>\t\n            <p>Options for the amount of information to report about a device object's lifetime.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This enumeration is used by <strong><see cref=\"M:SharpDX.Direct3D11.DeviceDebug.ReportLiveDeviceObjects(SharpDX.Direct3D11.ReportingLevel)\"/></strong>.</p><p>Several inline functions exist to combine the options using operators, see the D3D11SDKLayers.h header file for details.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_RLDO_FLAGS']/*\"/>\t\n            <msdn-id>ff476205</msdn-id>\t\n            <unmanaged>D3D11_RLDO_FLAGS</unmanaged>\t\n            <unmanaged-short>D3D11_RLDO_FLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ReportingLevel.Summary\">\n            <summary>\t\n            <dd> <p> Specifies to obtain a summary about a device object's lifetime.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_RLDO_SUMMARY']/*\"/>\t\n            <msdn-id>ff476205</msdn-id>\t\n            <unmanaged>D3D11_RLDO_SUMMARY</unmanaged>\t\n            <unmanaged-short>D3D11_RLDO_SUMMARY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ReportingLevel.Detail\">\n            <summary>\t\n            <dd> <p> Specifies to obtain detailed information about a device object's lifetime.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_RLDO_DETAIL']/*\"/>\t\n            <msdn-id>ff476205</msdn-id>\t\n            <unmanaged>D3D11_RLDO_DETAIL</unmanaged>\t\n            <unmanaged-short>D3D11_RLDO_DETAIL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ReportingLevel.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.ResourceDimension\">\n            <summary>\t\n            <p>Identifies the type of resource being used.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This enumeration is used in <strong><see cref=\"M:SharpDX.Direct3D11.Resource.GetDimension(SharpDX.Direct3D11.ResourceDimension@)\"/></strong>. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_RESOURCE_DIMENSION']/*\"/>\t\n            <msdn-id>ff476202</msdn-id>\t\n            <unmanaged>D3D11_RESOURCE_DIMENSION</unmanaged>\t\n            <unmanaged-short>D3D11_RESOURCE_DIMENSION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ResourceDimension.Unknown\">\n            <summary>\t\n            <dd> <p>Resource is of unknown type.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_RESOURCE_DIMENSION_UNKNOWN']/*\"/>\t\n            <msdn-id>ff476202</msdn-id>\t\n            <unmanaged>D3D11_RESOURCE_DIMENSION_UNKNOWN</unmanaged>\t\n            <unmanaged-short>D3D11_RESOURCE_DIMENSION_UNKNOWN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ResourceDimension.Buffer\">\n            <summary>\t\n            <dd> <p>Resource is a buffer.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_RESOURCE_DIMENSION_BUFFER']/*\"/>\t\n            <msdn-id>ff476202</msdn-id>\t\n            <unmanaged>D3D11_RESOURCE_DIMENSION_BUFFER</unmanaged>\t\n            <unmanaged-short>D3D11_RESOURCE_DIMENSION_BUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ResourceDimension.Texture1D\">\n            <summary>\t\n            <dd> <p>Resource is a 1D texture.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_RESOURCE_DIMENSION_TEXTURE1D']/*\"/>\t\n            <msdn-id>ff476202</msdn-id>\t\n            <unmanaged>D3D11_RESOURCE_DIMENSION_TEXTURE1D</unmanaged>\t\n            <unmanaged-short>D3D11_RESOURCE_DIMENSION_TEXTURE1D</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ResourceDimension.Texture2D\">\n            <summary>\t\n            <dd> <p>Resource is a 2D texture.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_RESOURCE_DIMENSION_TEXTURE2D']/*\"/>\t\n            <msdn-id>ff476202</msdn-id>\t\n            <unmanaged>D3D11_RESOURCE_DIMENSION_TEXTURE2D</unmanaged>\t\n            <unmanaged-short>D3D11_RESOURCE_DIMENSION_TEXTURE2D</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ResourceDimension.Texture3D\">\n            <summary>\t\n            <dd> <p>Resource is a 3D texture.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_RESOURCE_DIMENSION_TEXTURE3D']/*\"/>\t\n            <msdn-id>ff476202</msdn-id>\t\n            <unmanaged>D3D11_RESOURCE_DIMENSION_TEXTURE3D</unmanaged>\t\n            <unmanaged-short>D3D11_RESOURCE_DIMENSION_TEXTURE3D</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.ResourceOptionFlags\">\n            <summary>\t\n            <p>Identifies options for resources.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This enumeration is used in <strong><see cref=\"T:SharpDX.Direct3D11.BufferDescription\"/></strong>, <strong><see cref=\"T:SharpDX.Direct3D11.Texture1DDescription\"/></strong>, <strong><see cref=\"T:SharpDX.Direct3D11.Texture2DDescription\"/></strong>, <strong><see cref=\"T:SharpDX.Direct3D11.Texture3DDescription\"/></strong>. </p><p>These flags can be combined by bitwise OR.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_RESOURCE_MISC_FLAG']/*\"/>\t\n            <msdn-id>ff476203</msdn-id>\t\n            <unmanaged>D3D11_RESOURCE_MISC_FLAG</unmanaged>\t\n            <unmanaged-short>D3D11_RESOURCE_MISC_FLAG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ResourceOptionFlags.GenerateMipMaps\">\n            <summary>\t\n            <dd> <p>Enables MIP map generation by using <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.GenerateMips(SharpDX.Direct3D11.ShaderResourceView)\"/></strong> on a texture resource. The resource must be created with the <strong>bind flags</strong> that specify that the resource is a render target and a shader resource.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_RESOURCE_MISC_GENERATE_MIPS']/*\"/>\t\n            <msdn-id>ff476203</msdn-id>\t\n            <unmanaged>D3D11_RESOURCE_MISC_GENERATE_MIPS</unmanaged>\t\n            <unmanaged-short>D3D11_RESOURCE_MISC_GENERATE_MIPS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ResourceOptionFlags.Shared\">\n            <summary>\t\n            <dd> <p>Enables resource data sharing between two or more Direct3D devices. The only resources that can be shared are 2D non-mipmapped textures.</p> <p><strong><see cref=\"F:SharpDX.Direct3D11.ResourceOptionFlags.Shared\"/></strong> and <strong><see cref=\"F:SharpDX.Direct3D11.ResourceOptionFlags.SharedKeyedmutex\"/></strong> are mutually exclusive.</p> <p><strong>WARP</strong> and <strong>REF</strong> devices do not support shared resources. If you try to create a resource with this flag on either a <strong>WARP</strong> or <strong>REF</strong> device,  the create method will return an <strong>E_OUTOFMEMORY</strong> error code.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_RESOURCE_MISC_SHARED']/*\"/>\t\n            <msdn-id>ff476203</msdn-id>\t\n            <unmanaged>D3D11_RESOURCE_MISC_SHARED</unmanaged>\t\n            <unmanaged-short>D3D11_RESOURCE_MISC_SHARED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ResourceOptionFlags.TextureCube\">\n            <summary>\t\n            <dd> <p>Sets a resource to be a cube texture created from a Texture2DArray that contains 6 textures.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_RESOURCE_MISC_TEXTURECUBE']/*\"/>\t\n            <msdn-id>ff476203</msdn-id>\t\n            <unmanaged>D3D11_RESOURCE_MISC_TEXTURECUBE</unmanaged>\t\n            <unmanaged-short>D3D11_RESOURCE_MISC_TEXTURECUBE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ResourceOptionFlags.DrawIndirectArguments\">\n            <summary>\t\n            <dd> <p>Enables instancing of GPU-generated content.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_RESOURCE_MISC_DRAWINDIRECT_ARGS']/*\"/>\t\n            <msdn-id>ff476203</msdn-id>\t\n            <unmanaged>D3D11_RESOURCE_MISC_DRAWINDIRECT_ARGS</unmanaged>\t\n            <unmanaged-short>D3D11_RESOURCE_MISC_DRAWINDIRECT_ARGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ResourceOptionFlags.BufferAllowRawViews\">\n            <summary>\t\n            <dd> <p>Enables a resource as a byte address buffer.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_RESOURCE_MISC_BUFFER_ALLOW_RAW_VIEWS']/*\"/>\t\n            <msdn-id>ff476203</msdn-id>\t\n            <unmanaged>D3D11_RESOURCE_MISC_BUFFER_ALLOW_RAW_VIEWS</unmanaged>\t\n            <unmanaged-short>D3D11_RESOURCE_MISC_BUFFER_ALLOW_RAW_VIEWS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ResourceOptionFlags.BufferStructured\">\n            <summary>\t\n            <dd> <p>Enables a resource as a structured buffer.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_RESOURCE_MISC_BUFFER_STRUCTURED']/*\"/>\t\n            <msdn-id>ff476203</msdn-id>\t\n            <unmanaged>D3D11_RESOURCE_MISC_BUFFER_STRUCTURED</unmanaged>\t\n            <unmanaged-short>D3D11_RESOURCE_MISC_BUFFER_STRUCTURED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ResourceOptionFlags.ResourceClamp\">\n            <summary>\t\n            <dd> <p>Enables a resource with MIP map clamping for use with <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.SetMinimumLod(SharpDX.Direct3D11.Resource,System.Single)\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_RESOURCE_MISC_RESOURCE_CLAMP']/*\"/>\t\n            <msdn-id>ff476203</msdn-id>\t\n            <unmanaged>D3D11_RESOURCE_MISC_RESOURCE_CLAMP</unmanaged>\t\n            <unmanaged-short>D3D11_RESOURCE_MISC_RESOURCE_CLAMP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ResourceOptionFlags.SharedKeyedmutex\">\n            <summary>\t\n            <dd> <p>Enables the resource  to be synchronized by using the <strong><see cref=\"M:SharpDX.DXGI.KeyedMutex.Acquire(System.Int64,System.Int32)\"/></strong> and  <strong><see cref=\"M:SharpDX.DXGI.KeyedMutex.Release(System.Int64)\"/></strong> APIs.  The following Direct3D?11 resource creation  APIs, that take <strong><see cref=\"T:SharpDX.Direct3D11.ResourceOptionFlags\"/></strong> parameters, have been extended to support the new flag.</p> <ul> <li> <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateTexture1D(SharpDX.Direct3D11.Texture1DDescription@,SharpDX.DataBox[],SharpDX.Direct3D11.Texture1D)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateTexture2D(SharpDX.Direct3D11.Texture2DDescription@,SharpDX.DataBox[],SharpDX.Direct3D11.Texture2D)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateTexture3D(SharpDX.Direct3D11.Texture3DDescription@,SharpDX.DataBox[],SharpDX.Direct3D11.Texture3D)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateBuffer(SharpDX.Direct3D11.BufferDescription@,System.Nullable{SharpDX.DataBox},SharpDX.Direct3D11.Buffer)\"/></strong> </li> </ul> <p>If you call any of these  methods with the <strong><see cref=\"F:SharpDX.Direct3D11.ResourceOptionFlags.SharedKeyedmutex\"/></strong> flag set, the interface returned will support the <strong><see cref=\"T:SharpDX.DXGI.KeyedMutex\"/></strong> interface.  You can retrieve a reference to the <strong><see cref=\"T:SharpDX.DXGI.KeyedMutex\"/></strong> interface from the resource by using <strong>IUnknown::QueryInterface</strong>.  The <strong><see cref=\"T:SharpDX.DXGI.KeyedMutex\"/></strong> interface implements the <strong><see cref=\"M:SharpDX.DXGI.KeyedMutex.Acquire(System.Int64,System.Int32)\"/></strong> and <strong><see cref=\"M:SharpDX.DXGI.KeyedMutex.Release(System.Int64)\"/></strong> APIs to synchronize access to the surface. The device that creates the surface, and any other device that opens the surface  by using <strong>OpenSharedResource</strong>, must call <strong><see cref=\"M:SharpDX.DXGI.KeyedMutex.Acquire(System.Int64,System.Int32)\"/></strong> before they issue any rendering commands to the surface. When those devices finish rendering, they must call <strong><see cref=\"M:SharpDX.DXGI.KeyedMutex.Release(System.Int64)\"/></strong>.</p> <p><strong> <see cref=\"F:SharpDX.Direct3D11.ResourceOptionFlags.Shared\"/></strong> and <strong><see cref=\"F:SharpDX.Direct3D11.ResourceOptionFlags.SharedKeyedmutex\"/></strong> are mutually exclusive.</p> <p><strong>WARP</strong> and <strong>REF</strong> devices do not support shared resources. If you try to create a resource with this flag on either a <strong>WARP</strong> or <strong>REF</strong> device,  the create method will return an <strong>E_OUTOFMEMORY</strong> error code.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX']/*\"/>\t\n            <msdn-id>ff476203</msdn-id>\t\n            <unmanaged>D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX</unmanaged>\t\n            <unmanaged-short>D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ResourceOptionFlags.GdiCompatible\">\n            <summary>\t\n            <dd> <p>Enables a resource compatible with GDI. You must set the <strong><see cref=\"F:SharpDX.Direct3D11.ResourceOptionFlags.GdiCompatible\"/></strong> flag  on surfaces that you use with GDI. Setting the <strong><see cref=\"F:SharpDX.Direct3D11.ResourceOptionFlags.GdiCompatible\"/></strong> flag allows GDI rendering on the surface via <strong><see cref=\"M:SharpDX.DXGI.Surface1.GetDC(SharpDX.Bool)\"/></strong>.\t\n            </p> <p>Consider the following programming tips for using <see cref=\"F:SharpDX.Direct3D11.ResourceOptionFlags.GdiCompatible\"/> when you create a texture or use that texture in a swap chain:</p> <ul> <li><see cref=\"F:SharpDX.Direct3D11.ResourceOptionFlags.SharedKeyedmutex\"/> and <see cref=\"F:SharpDX.Direct3D11.ResourceOptionFlags.GdiCompatible\"/> are mutually exclusive. Therefore, do not use them together.</li> <li><see cref=\"F:SharpDX.Direct3D11.ResourceOptionFlags.ResourceClamp\"/> and <see cref=\"F:SharpDX.Direct3D11.ResourceOptionFlags.GdiCompatible\"/> are mutually exclusive. Therefore, do not use them together.</li> <li>You must bind the texture as a render target for the output-merger stage. For example, set the <see cref=\"F:SharpDX.Direct3D11.BindFlags.RenderTarget\"/> flag in the <strong>BindFlags</strong> member of the <strong><see cref=\"T:SharpDX.Direct3D11.Texture2DDescription\"/></strong> structure.</li> <li>You must set the maximum number of MIP map levels to 1. For example, set the <strong>MipLevels</strong> member of the <strong><see cref=\"T:SharpDX.Direct3D11.Texture2DDescription\"/></strong> structure to 1.</li> <li>You must specify that the texture requires read and write access by the GPU. For example, set the <strong>Usage</strong> member of the <strong><see cref=\"T:SharpDX.Direct3D11.Texture2DDescription\"/></strong> structure to <see cref=\"F:SharpDX.Direct3D11.ResourceUsage.Default\"/>.</li> <li> <p>You must set the texture format to one of the following types. </p> <ul> <li><see cref=\"F:SharpDX.DXGI.Format.B8G8R8A8_UNorm\"/>\t\n            </li> <li><see cref=\"F:SharpDX.DXGI.Format.B8G8R8A8_Typeless\"/></li> <li><see cref=\"F:SharpDX.DXGI.Format.B8G8R8A8_UNorm_SRgb\"/>\t\n            </li> </ul>For example, set the <strong>Format</strong> member of the <strong><see cref=\"T:SharpDX.Direct3D11.Texture2DDescription\"/></strong> structure to one of these  types.</li> <li>You cannot use <see cref=\"F:SharpDX.Direct3D11.ResourceOptionFlags.GdiCompatible\"/> with multisampling. Therefore, set the <strong>Count</strong> member of the <strong><see cref=\"T:SharpDX.DXGI.SampleDescription\"/></strong> structure to 1. Then, set the <strong>SampleDesc</strong> member of the <strong><see cref=\"T:SharpDX.Direct3D11.Texture2DDescription\"/></strong> structure to this <strong><see cref=\"T:SharpDX.DXGI.SampleDescription\"/></strong> structure.</li> </ul> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_RESOURCE_MISC_GDI_COMPATIBLE']/*\"/>\t\n            <msdn-id>ff476203</msdn-id>\t\n            <unmanaged>D3D11_RESOURCE_MISC_GDI_COMPATIBLE</unmanaged>\t\n            <unmanaged-short>D3D11_RESOURCE_MISC_GDI_COMPATIBLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ResourceOptionFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.ResourceUsage\">\n            <summary>\t\n            <p>Identifies expected resource use during rendering. The usage directly reflects whether a resource is accessible by the CPU and/or the graphics processing unit (GPU).</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>An application identifies the way a resource is intended to be used (its usage) in a resource description. There are several structures for creating resources including: <strong><see cref=\"T:SharpDX.Direct3D11.Texture1DDescription\"/></strong>, <strong><see cref=\"T:SharpDX.Direct3D11.Texture2DDescription\"/></strong>, <strong><see cref=\"T:SharpDX.Direct3D11.Texture3DDescription\"/></strong>, <strong><see cref=\"T:SharpDX.Direct3D11.BufferDescription\"/></strong>.</p><table> <tr><td> <p>Differences between Direct3D 9 and Direct3D 10/11:</p> <p>In Direct3D 9, you specify the type of memory a resource should be created in at resource creation time (using <see cref=\"!:SharpDX.Direct3D9.Pool\"/>). It was an application's job to decide what memory pool would provide the best combination of functionality and performance.</p> <p>In Direct3D 10/11, an application no longer specifies what type of memory (the pool) to create a resource in. Instead, you specify the intended usage of the resource, and let the runtime (in concert with the driver and a memory manager) choose the type of memory that will achieve the best performance.</p> </td></tr> </table><p>?</p>Resource Usage Restrictions<p>Each usage dictates a tradeoff between accessibility for the CPU and accessibility for the GPU. In general, higher-performance access for one of these two processors means lower-performance access for the other. At either extreme are the <strong><see cref=\"F:SharpDX.Direct3D11.ResourceUsage.Default\"/></strong> and <strong><see cref=\"F:SharpDX.Direct3D11.ResourceUsage.Staging\"/></strong> usages. <strong><see cref=\"F:SharpDX.Direct3D11.ResourceUsage.Default\"/></strong> restricts access almost entirely to the GPU. <strong><see cref=\"F:SharpDX.Direct3D11.ResourceUsage.Staging\"/></strong> restricts access almost entirely to the CPU and allows only a data transfer (copy) of a resource between the GPU and the CPU. You can perform these copy operations via the <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.CopySubresourceRegion_(SharpDX.Direct3D11.Resource,System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D11.Resource,System.Int32,System.Nullable{SharpDX.Direct3D11.ResourceRegion})\"/></strong> and <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.CopyResource_(SharpDX.Direct3D11.Resource,SharpDX.Direct3D11.Resource)\"/></strong> methods. You can also use these copy methods to copy data between two resources of the same usage. You can also use the <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.UpdateSubresource(SharpDX.DataBox,SharpDX.Direct3D11.Resource,System.Int32)\"/></strong> method to copy memory directly from a CPU-supplied reference to any resource, most usefully a resource with <strong><see cref=\"F:SharpDX.Direct3D11.ResourceUsage.Default\"/></strong>.</p><p><strong><see cref=\"F:SharpDX.Direct3D11.ResourceUsage.Dynamic\"/></strong> usage is a special case that optimizes the flow of data from CPU to GPU when the CPU generates that data on-the-fly and sends that data with high frequency. <strong><see cref=\"F:SharpDX.Direct3D11.ResourceUsage.Dynamic\"/></strong> is typically used on resources with vertex data and on constant buffers. Use the <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.MapSubresource(SharpDX.Direct3D11.Texture1D,System.Int32,System.Int32,SharpDX.Direct3D11.MapMode,SharpDX.Direct3D11.MapFlags,SharpDX.DataStream@)\"/></strong> and <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.UnmapSubresource(SharpDX.Direct3D11.Resource,System.Int32)\"/></strong> methods to write data to these resources. To achieve the highest performance for data consumed serially, like vertex data, use the <strong><see cref=\"F:SharpDX.Direct3D11.MapMode.WriteNoOverwrite\"/></strong> and <strong><see cref=\"F:SharpDX.Direct3D11.MapMode.WriteDiscard\"/></strong> sequence. For more info about this sequence, see <strong>Common Usage of <see cref=\"F:SharpDX.Direct3D11.MapMode.WriteDiscard\"/> with <see cref=\"F:SharpDX.Direct3D11.MapMode.WriteNoOverwrite\"/></strong>.\t\n            </p><p><strong><see cref=\"F:SharpDX.Direct3D11.ResourceUsage.Immutable\"/></strong> usage is another special case that causes the GPU to generate data just once when you create a resource. <strong><see cref=\"F:SharpDX.Direct3D11.ResourceUsage.Immutable\"/></strong> is well-suited to data such as textures because such data is typically read into memory from some file format. Therefore, when you create a texture with <strong><see cref=\"F:SharpDX.Direct3D11.ResourceUsage.Immutable\"/></strong>, the GPU directly reads that texture into memory.\t\n            </p><p>Use the following table to choose the usage that best describes how the resource will need to be accessed by the CPU and/or the GPU. Of course, there will be performance tradeoffs.</p><table> <tr><th>Resource Usage</th><th>Default</th><th>Dynamic</th><th>Immutable</th><th>Staging</th></tr> <tr><td>GPU-Read</td><td>yes</td><td>yes</td><td>yes</td><td>yes1</td></tr> <tr><td>GPU-Write</td><td>yes</td><td></td><td></td><td>yes1</td></tr> <tr><td>CPU-Read</td><td></td><td></td><td></td><td>yes1</td></tr> <tr><td>CPU-Write</td><td></td><td>yes</td><td></td><td>yes1</td></tr> </table><p>?</p><p>1 - GPU read or write of a resource with the <strong><see cref=\"F:SharpDX.Direct3D11.ResourceUsage.Staging\"/></strong> usage is restricted to copy operations. You use <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.CopySubresourceRegion_(SharpDX.Direct3D11.Resource,System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D11.Resource,System.Int32,System.Nullable{SharpDX.Direct3D11.ResourceRegion})\"/></strong> and <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.CopyResource_(SharpDX.Direct3D11.Resource,SharpDX.Direct3D11.Resource)\"/></strong> for these copy operations. Also, because depth-stencil formats and multisample layouts are implementation details of a particular GPU design, the operating system can?t expose these formats and layouts to the CPU in general. Therefore, staging resources can't be a depth-stencil buffer or a multisampled render target.</p><p><strong>Note</strong>??You can technically use <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.UpdateSubresource(SharpDX.DataBox,SharpDX.Direct3D11.Resource,System.Int32)\"/></strong> to copy to a resource with any usage except <strong><see cref=\"F:SharpDX.Direct3D11.ResourceUsage.Immutable\"/></strong>. However, we recommend to use <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.UpdateSubresource(SharpDX.DataBox,SharpDX.Direct3D11.Resource,System.Int32)\"/></strong> to update only a resource with <strong><see cref=\"F:SharpDX.Direct3D11.ResourceUsage.Default\"/></strong>. We recommend to use <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.MapSubresource(SharpDX.Direct3D11.Texture1D,System.Int32,System.Int32,SharpDX.Direct3D11.MapMode,SharpDX.Direct3D11.MapFlags,SharpDX.DataStream@)\"/></strong> and <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.UnmapSubresource(SharpDX.Direct3D11.Resource,System.Int32)\"/></strong> to update resources with <strong><see cref=\"F:SharpDX.Direct3D11.ResourceUsage.Dynamic\"/></strong> because that is the specific purpose of <strong><see cref=\"F:SharpDX.Direct3D11.ResourceUsage.Dynamic\"/></strong> resources, and is therefore the most optimized path.</p><p><strong>Note</strong>??<strong><see cref=\"F:SharpDX.Direct3D11.ResourceUsage.Dynamic\"/></strong> resources consume specific hardware capabilities. Therefore, use them sparingly. The display driver typically allocates memory for <strong><see cref=\"F:SharpDX.Direct3D11.ResourceUsage.Dynamic\"/></strong> resources with a caching algorithm that favors CPU writes and hinders CPU reads. Furthermore, the memory behind <strong><see cref=\"F:SharpDX.Direct3D11.ResourceUsage.Dynamic\"/></strong> resources might not even be the same for successive calls to <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.MapSubresource(SharpDX.Direct3D11.Texture1D,System.Int32,System.Int32,SharpDX.Direct3D11.MapMode,SharpDX.Direct3D11.MapFlags,SharpDX.DataStream@)\"/></strong>. Therefore, do not expect high performance or even consistent CPU reads from <strong><see cref=\"F:SharpDX.Direct3D11.ResourceUsage.Dynamic\"/></strong> resources.</p><p><strong>Note</strong>??<strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.CopyStructureCount(SharpDX.Direct3D11.Buffer,System.Int32,SharpDX.Direct3D11.UnorderedAccessView)\"/></strong> is a special case of GPU-to-CPU copy. Use <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.CopyStructureCount(SharpDX.Direct3D11.Buffer,System.Int32,SharpDX.Direct3D11.UnorderedAccessView)\"/></strong> only with unordered access views (UAVs) of buffers.</p>Resource Bind Options<p>To maximize performance, not all resource usage options can be used as input or output resources to the pipeline. This table identifies these limitations.</p><table> <tr><th>Resource Can Be Bound As</th><th>Default</th><th>Dynamic</th><th>Immutable</th><th>Staging</th></tr> <tr><td>Input to a Stage</td><td>yes2</td><td>yes3</td><td>yes</td><td></td></tr> <tr><td>Output from a Stage</td><td>yes2</td><td></td><td></td><td></td></tr> </table><p>?</p><ul> <li>2 - If bound as an input and an output using different views, each view must use different subresources.</li> <li>3 - The resource can only be created with a single subresource. The resource cannot be a texture array. The resource cannot be a mipmap chain.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_USAGE']/*\"/>\t\n            <msdn-id>ff476259</msdn-id>\t\n            <unmanaged>D3D11_USAGE</unmanaged>\t\n            <unmanaged-short>D3D11_USAGE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ResourceUsage.Default\">\n            <summary>\t\n            <dd> <p>A resource that requires read and write access by the GPU. This is likely to be the most common usage choice.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_USAGE_DEFAULT']/*\"/>\t\n            <msdn-id>ff476259</msdn-id>\t\n            <unmanaged>D3D11_USAGE_DEFAULT</unmanaged>\t\n            <unmanaged-short>D3D11_USAGE_DEFAULT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ResourceUsage.Immutable\">\n            <summary>\t\n            <dd> <p>A resource that can only be read by the GPU. It cannot be written by the GPU, and cannot be accessed at all by the CPU. This type of resource must be initialized when it is created, since it cannot be changed after creation.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_USAGE_IMMUTABLE']/*\"/>\t\n            <msdn-id>ff476259</msdn-id>\t\n            <unmanaged>D3D11_USAGE_IMMUTABLE</unmanaged>\t\n            <unmanaged-short>D3D11_USAGE_IMMUTABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ResourceUsage.Dynamic\">\n            <summary>\t\n            <dd> <p>A resource that is accessible by both the GPU (read only) and the CPU (write only). A dynamic resource is a good choice for a resource that will be updated by the CPU at least once per frame. To update a dynamic resource, use a <strong>Map</strong> method.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_USAGE_DYNAMIC']/*\"/>\t\n            <msdn-id>ff476259</msdn-id>\t\n            <unmanaged>D3D11_USAGE_DYNAMIC</unmanaged>\t\n            <unmanaged-short>D3D11_USAGE_DYNAMIC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ResourceUsage.Staging\">\n            <summary>\t\n            <dd> <p>A resource that supports data transfer (copy) from the GPU to the CPU.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_USAGE_STAGING']/*\"/>\t\n            <msdn-id>ff476259</msdn-id>\t\n            <unmanaged>D3D11_USAGE_STAGING</unmanaged>\t\n            <unmanaged-short>D3D11_USAGE_STAGING</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.ScanDataType\">\n            <summary>\t\n            <p>Type for scan data.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_SCAN_DATA_TYPE']/*\"/>\t\n            <msdn-id>ff476322</msdn-id>\t\n            <unmanaged>D3DX11_SCAN_DATA_TYPE</unmanaged>\t\n            <unmanaged-short>D3DX11_SCAN_DATA_TYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ScanDataType.Float\">\n            <summary>\t\n            <dd> <p>FLOAT data.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_SCAN_DATA_TYPE_FLOAT']/*\"/>\t\n            <msdn-id>ff476322</msdn-id>\t\n            <unmanaged>D3DX11_SCAN_DATA_TYPE_FLOAT</unmanaged>\t\n            <unmanaged-short>D3DX11_SCAN_DATA_TYPE_FLOAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ScanDataType.Int\">\n            <summary>\t\n            <dd> <p>INT data.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_SCAN_DATA_TYPE_INT']/*\"/>\t\n            <msdn-id>ff476322</msdn-id>\t\n            <unmanaged>D3DX11_SCAN_DATA_TYPE_INT</unmanaged>\t\n            <unmanaged-short>D3DX11_SCAN_DATA_TYPE_INT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ScanDataType.UInt\">\n            <summary>\t\n            <dd> <p>UINT data.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_SCAN_DATA_TYPE_UINT']/*\"/>\t\n            <msdn-id>ff476322</msdn-id>\t\n            <unmanaged>D3DX11_SCAN_DATA_TYPE_UINT</unmanaged>\t\n            <unmanaged-short>D3DX11_SCAN_DATA_TYPE_UINT</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.ScanDirection\">\n            <summary>\t\n            <p>Direction to perform scan in.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_SCAN_DIRECTION']/*\"/>\t\n            <msdn-id>ff476323</msdn-id>\t\n            <unmanaged>D3DX11_SCAN_DIRECTION</unmanaged>\t\n            <unmanaged-short>D3DX11_SCAN_DIRECTION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ScanDirection.Forward\">\n            <summary>\t\n            <dd> <p>Scan forward.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_SCAN_DIRECTION_FORWARD']/*\"/>\t\n            <msdn-id>ff476323</msdn-id>\t\n            <unmanaged>D3DX11_SCAN_DIRECTION_FORWARD</unmanaged>\t\n            <unmanaged-short>D3DX11_SCAN_DIRECTION_FORWARD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ScanDirection.Backward\">\n            <summary>\t\n            <dd> <p>Scan backward.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_SCAN_DIRECTION_BACKWARD']/*\"/>\t\n            <msdn-id>ff476323</msdn-id>\t\n            <unmanaged>D3DX11_SCAN_DIRECTION_BACKWARD</unmanaged>\t\n            <unmanaged-short>D3DX11_SCAN_DIRECTION_BACKWARD</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.ScanOperationCode\">\n            <summary>\t\n            <p>Scan opcodes.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_SCAN_OPCODE']/*\"/>\t\n            <msdn-id>ff476324</msdn-id>\t\n            <unmanaged>D3DX11_SCAN_OPCODE</unmanaged>\t\n            <unmanaged-short>D3DX11_SCAN_OPCODE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ScanOperationCode.Add\">\n            <summary>\t\n            <dd> <p>Add values.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_SCAN_OPCODE_ADD']/*\"/>\t\n            <msdn-id>ff476324</msdn-id>\t\n            <unmanaged>D3DX11_SCAN_OPCODE_ADD</unmanaged>\t\n            <unmanaged-short>D3DX11_SCAN_OPCODE_ADD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ScanOperationCode.Minimum\">\n            <summary>\t\n            <dd> <p>Take the minimum value.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_SCAN_OPCODE_MIN']/*\"/>\t\n            <msdn-id>ff476324</msdn-id>\t\n            <unmanaged>D3DX11_SCAN_OPCODE_MIN</unmanaged>\t\n            <unmanaged-short>D3DX11_SCAN_OPCODE_MIN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ScanOperationCode.Maximum\">\n            <summary>\t\n            <dd> <p>Take the maximum value.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_SCAN_OPCODE_MAX']/*\"/>\t\n            <msdn-id>ff476324</msdn-id>\t\n            <unmanaged>D3DX11_SCAN_OPCODE_MAX</unmanaged>\t\n            <unmanaged-short>D3DX11_SCAN_OPCODE_MAX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ScanOperationCode.Mul\">\n            <summary>\t\n            <dd> <p>Multiply the values.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_SCAN_OPCODE_MUL']/*\"/>\t\n            <msdn-id>ff476324</msdn-id>\t\n            <unmanaged>D3DX11_SCAN_OPCODE_MUL</unmanaged>\t\n            <unmanaged-short>D3DX11_SCAN_OPCODE_MUL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ScanOperationCode.And\">\n            <summary>\t\n            <dd> <p>Perform a logical AND on the values.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_SCAN_OPCODE_AND']/*\"/>\t\n            <msdn-id>ff476324</msdn-id>\t\n            <unmanaged>D3DX11_SCAN_OPCODE_AND</unmanaged>\t\n            <unmanaged-short>D3DX11_SCAN_OPCODE_AND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ScanOperationCode.Or\">\n            <summary>\t\n            <dd> <p>Perform a logical OR on the values.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_SCAN_OPCODE_OR']/*\"/>\t\n            <msdn-id>ff476324</msdn-id>\t\n            <unmanaged>D3DX11_SCAN_OPCODE_OR</unmanaged>\t\n            <unmanaged-short>D3DX11_SCAN_OPCODE_OR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ScanOperationCode.Xor\">\n            <summary>\t\n            <dd> <p>Perform a logical XOR on the values.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_SCAN_OPCODE_XOR']/*\"/>\t\n            <msdn-id>ff476324</msdn-id>\t\n            <unmanaged>D3DX11_SCAN_OPCODE_XOR</unmanaged>\t\n            <unmanaged-short>D3DX11_SCAN_OPCODE_XOR</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.ShaderResourceViewExtendedBufferFlags\">\n            <summary>\t\n            <p>Identifies how to bind a raw-buffer resource to the pipeline.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This enumeration is used by <strong><see cref=\"T:SharpDX.Direct3D11.ShaderResourceViewDescription.ExtendedBufferResource\"/></strong> </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_BUFFEREX_SRV_FLAG']/*\"/>\t\n            <msdn-id>ff476091</msdn-id>\t\n            <unmanaged>D3D11_BUFFEREX_SRV_FLAG</unmanaged>\t\n            <unmanaged-short>D3D11_BUFFEREX_SRV_FLAG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ShaderResourceViewExtendedBufferFlags.Raw\">\n            <summary>\t\n            <dd> <p>Bind a raw buffer to the input-assembler stage.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_BUFFEREX_SRV_FLAG_RAW']/*\"/>\t\n            <msdn-id>ff476091</msdn-id>\t\n            <unmanaged>D3D11_BUFFEREX_SRV_FLAG_RAW</unmanaged>\t\n            <unmanaged-short>D3D11_BUFFEREX_SRV_FLAG_RAW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ShaderResourceViewExtendedBufferFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.StandardMultisampleQualityLevels\">\n            <summary>\t\n            <p>Specifies a multi-sample pattern type.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_STANDARD_MULTISAMPLE_QUALITY_LEVELS']/*\"/>\t\n            <msdn-id>ff476218</msdn-id>\t\n            <unmanaged>D3D11_STANDARD_MULTISAMPLE_QUALITY_LEVELS</unmanaged>\t\n            <unmanaged-short>D3D11_STANDARD_MULTISAMPLE_QUALITY_LEVELS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.StandardMultisampleQualityLevels.StandardMultisamplePattern\">\n            <summary>\t\n            <dd> <p>Pre-defined multi-sample patterns required for DX11 and DX10.1 hardware.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_STANDARD_MULTISAMPLE_PATTERN']/*\"/>\t\n            <msdn-id>ff476218</msdn-id>\t\n            <unmanaged>D3D11_STANDARD_MULTISAMPLE_PATTERN</unmanaged>\t\n            <unmanaged-short>D3D11_STANDARD_MULTISAMPLE_PATTERN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.StandardMultisampleQualityLevels.CenterMultisamplePattern\">\n            <summary>\t\n            <dd> <p>Pattern where all of the samples are located at the pixel center.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_CENTER_MULTISAMPLE_PATTERN']/*\"/>\t\n            <msdn-id>ff476218</msdn-id>\t\n            <unmanaged>D3D11_CENTER_MULTISAMPLE_PATTERN</unmanaged>\t\n            <unmanaged-short>D3D11_CENTER_MULTISAMPLE_PATTERN</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.StencilOperation\">\n            <summary>\t\n            <p>The stencil operations that can be performed during depth-stencil testing.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_STENCIL_OP']/*\"/>\t\n            <msdn-id>ff476219</msdn-id>\t\n            <unmanaged>D3D11_STENCIL_OP</unmanaged>\t\n            <unmanaged-short>D3D11_STENCIL_OP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.StencilOperation.Keep\">\n            <summary>\t\n            <dd> <p>Keep the existing stencil data.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_STENCIL_OP_KEEP']/*\"/>\t\n            <msdn-id>ff476219</msdn-id>\t\n            <unmanaged>D3D11_STENCIL_OP_KEEP</unmanaged>\t\n            <unmanaged-short>D3D11_STENCIL_OP_KEEP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.StencilOperation.Zero\">\n            <summary>\t\n            <dd> <p>Set the stencil data to 0.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_STENCIL_OP_ZERO']/*\"/>\t\n            <msdn-id>ff476219</msdn-id>\t\n            <unmanaged>D3D11_STENCIL_OP_ZERO</unmanaged>\t\n            <unmanaged-short>D3D11_STENCIL_OP_ZERO</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.StencilOperation.Replace\">\n            <summary>\t\n            <dd> <p>Set the stencil data to the reference value set by calling <strong><see cref=\"M:SharpDX.Direct3D11.OutputMergerStage.SetDepthStencilState(SharpDX.Direct3D11.DepthStencilState,System.Int32)\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_STENCIL_OP_REPLACE']/*\"/>\t\n            <msdn-id>ff476219</msdn-id>\t\n            <unmanaged>D3D11_STENCIL_OP_REPLACE</unmanaged>\t\n            <unmanaged-short>D3D11_STENCIL_OP_REPLACE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.StencilOperation.IncrementAndClamp\">\n            <summary>\t\n            <dd> <p>Increment the stencil value by 1, and clamp the result.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_STENCIL_OP_INCR_SAT']/*\"/>\t\n            <msdn-id>ff476219</msdn-id>\t\n            <unmanaged>D3D11_STENCIL_OP_INCR_SAT</unmanaged>\t\n            <unmanaged-short>D3D11_STENCIL_OP_INCR_SAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.StencilOperation.DecrementAndClamp\">\n            <summary>\t\n            <dd> <p>Decrement the stencil value by 1, and clamp the result.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_STENCIL_OP_DECR_SAT']/*\"/>\t\n            <msdn-id>ff476219</msdn-id>\t\n            <unmanaged>D3D11_STENCIL_OP_DECR_SAT</unmanaged>\t\n            <unmanaged-short>D3D11_STENCIL_OP_DECR_SAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.StencilOperation.Invert\">\n            <summary>\t\n            <dd> <p>Invert the stencil data.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_STENCIL_OP_INVERT']/*\"/>\t\n            <msdn-id>ff476219</msdn-id>\t\n            <unmanaged>D3D11_STENCIL_OP_INVERT</unmanaged>\t\n            <unmanaged-short>D3D11_STENCIL_OP_INVERT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.StencilOperation.Increment\">\n            <summary>\t\n            <dd> <p>Increment the stencil value by 1, and wrap the result if necessary.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_STENCIL_OP_INCR']/*\"/>\t\n            <msdn-id>ff476219</msdn-id>\t\n            <unmanaged>D3D11_STENCIL_OP_INCR</unmanaged>\t\n            <unmanaged-short>D3D11_STENCIL_OP_INCR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.StencilOperation.Decrement\">\n            <summary>\t\n            <dd> <p>Increment the stencil value by 1, and wrap the result if necessary.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_STENCIL_OP_DECR']/*\"/>\t\n            <msdn-id>ff476219</msdn-id>\t\n            <unmanaged>D3D11_STENCIL_OP_DECR</unmanaged>\t\n            <unmanaged-short>D3D11_STENCIL_OP_DECR</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.TextureAddressMode\">\n            <summary>\t\n            <p>Identify a technique for resolving texture coordinates that are outside of the boundaries of a texture.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEXTURE_ADDRESS_MODE']/*\"/>\t\n            <msdn-id>ff476256</msdn-id>\t\n            <unmanaged>D3D11_TEXTURE_ADDRESS_MODE</unmanaged>\t\n            <unmanaged-short>D3D11_TEXTURE_ADDRESS_MODE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.TextureAddressMode.Wrap\">\n            <summary>\t\n            <dd> <p>Tile the texture at every (u,v) integer junction. For example, for u values between 0 and 3, the texture is repeated three times.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEXTURE_ADDRESS_WRAP']/*\"/>\t\n            <msdn-id>ff476256</msdn-id>\t\n            <unmanaged>D3D11_TEXTURE_ADDRESS_WRAP</unmanaged>\t\n            <unmanaged-short>D3D11_TEXTURE_ADDRESS_WRAP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.TextureAddressMode.Mirror\">\n            <summary>\t\n            <dd> <p>Flip the texture at every (u,v) integer junction. For u values between 0 and 1, for example, the texture is addressed normally; between 1 and 2, the texture is flipped (mirrored); between 2 and 3, the texture is normal again; and so on. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEXTURE_ADDRESS_MIRROR']/*\"/>\t\n            <msdn-id>ff476256</msdn-id>\t\n            <unmanaged>D3D11_TEXTURE_ADDRESS_MIRROR</unmanaged>\t\n            <unmanaged-short>D3D11_TEXTURE_ADDRESS_MIRROR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.TextureAddressMode.Clamp\">\n            <summary>\t\n            <dd> <p>Texture coordinates outside the range [0.0, 1.0] are set to the texture color at 0.0 or 1.0, respectively.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEXTURE_ADDRESS_CLAMP']/*\"/>\t\n            <msdn-id>ff476256</msdn-id>\t\n            <unmanaged>D3D11_TEXTURE_ADDRESS_CLAMP</unmanaged>\t\n            <unmanaged-short>D3D11_TEXTURE_ADDRESS_CLAMP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.TextureAddressMode.Border\">\n            <summary>\t\n            <dd> <p>Texture coordinates outside the range [0.0, 1.0] are set to the border color specified in <strong><see cref=\"T:SharpDX.Direct3D11.SamplerStateDescription\"/></strong> or HLSL code.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEXTURE_ADDRESS_BORDER']/*\"/>\t\n            <msdn-id>ff476256</msdn-id>\t\n            <unmanaged>D3D11_TEXTURE_ADDRESS_BORDER</unmanaged>\t\n            <unmanaged-short>D3D11_TEXTURE_ADDRESS_BORDER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.TextureAddressMode.MirrorOnce\">\n            <summary>\t\n            <dd> <p>Similar to <see cref=\"F:SharpDX.Direct3D11.TextureAddressMode.Mirror\"/> and <see cref=\"F:SharpDX.Direct3D11.TextureAddressMode.Clamp\"/>. Takes the absolute value of the texture coordinate (thus, mirroring around 0), and then clamps to the maximum value.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEXTURE_ADDRESS_MIRROR_ONCE']/*\"/>\t\n            <msdn-id>ff476256</msdn-id>\t\n            <unmanaged>D3D11_TEXTURE_ADDRESS_MIRROR_ONCE</unmanaged>\t\n            <unmanaged-short>D3D11_TEXTURE_ADDRESS_MIRROR_ONCE</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.TextureCubeFace\">\n            <summary>\t\n            <p>The different faces of a cube texture.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEXTURECUBE_FACE']/*\"/>\t\n            <msdn-id>ff476255</msdn-id>\t\n            <unmanaged>D3D11_TEXTURECUBE_FACE</unmanaged>\t\n            <unmanaged-short>D3D11_TEXTURECUBE_FACE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.TextureCubeFace.PositiveX\">\n            <summary>\t\n            <dd> <p>Positive X face.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEXTURECUBE_FACE_POSITIVE_X']/*\"/>\t\n            <msdn-id>ff476255</msdn-id>\t\n            <unmanaged>D3D11_TEXTURECUBE_FACE_POSITIVE_X</unmanaged>\t\n            <unmanaged-short>D3D11_TEXTURECUBE_FACE_POSITIVE_X</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.TextureCubeFace.NegativeX\">\n            <summary>\t\n            <dd> <p>Negative X face.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEXTURECUBE_FACE_NEGATIVE_X']/*\"/>\t\n            <msdn-id>ff476255</msdn-id>\t\n            <unmanaged>D3D11_TEXTURECUBE_FACE_NEGATIVE_X</unmanaged>\t\n            <unmanaged-short>D3D11_TEXTURECUBE_FACE_NEGATIVE_X</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.TextureCubeFace.PositiveY\">\n            <summary>\t\n            <dd> <p>Positive Y face.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEXTURECUBE_FACE_POSITIVE_Y']/*\"/>\t\n            <msdn-id>ff476255</msdn-id>\t\n            <unmanaged>D3D11_TEXTURECUBE_FACE_POSITIVE_Y</unmanaged>\t\n            <unmanaged-short>D3D11_TEXTURECUBE_FACE_POSITIVE_Y</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.TextureCubeFace.NegativeY\">\n            <summary>\t\n            <dd> <p>Negative Y face.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEXTURECUBE_FACE_NEGATIVE_Y']/*\"/>\t\n            <msdn-id>ff476255</msdn-id>\t\n            <unmanaged>D3D11_TEXTURECUBE_FACE_NEGATIVE_Y</unmanaged>\t\n            <unmanaged-short>D3D11_TEXTURECUBE_FACE_NEGATIVE_Y</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.TextureCubeFace.PositiveZ\">\n            <summary>\t\n            <dd> <p>Positive Z face.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEXTURECUBE_FACE_POSITIVE_Z']/*\"/>\t\n            <msdn-id>ff476255</msdn-id>\t\n            <unmanaged>D3D11_TEXTURECUBE_FACE_POSITIVE_Z</unmanaged>\t\n            <unmanaged-short>D3D11_TEXTURECUBE_FACE_POSITIVE_Z</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.TextureCubeFace.NegativeZ\">\n            <summary>\t\n            <dd> <p>Negative Z face.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEXTURECUBE_FACE_NEGATIVE_Z']/*\"/>\t\n            <msdn-id>ff476255</msdn-id>\t\n            <unmanaged>D3D11_TEXTURECUBE_FACE_NEGATIVE_Z</unmanaged>\t\n            <unmanaged-short>D3D11_TEXTURECUBE_FACE_NEGATIVE_Z</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.UnorderedAccessViewBufferFlags\">\n            <summary>\t\n            <p>Unordered-access-view buffer options.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_BUFFER_UAV_FLAG']/*\"/>\t\n            <msdn-id>ff476096</msdn-id>\t\n            <unmanaged>D3D11_BUFFER_UAV_FLAG</unmanaged>\t\n            <unmanaged-short>D3D11_BUFFER_UAV_FLAG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.UnorderedAccessViewBufferFlags.Raw\">\n            <summary>\t\n            <dd> <p>Resource contains raw, unstructured data.  Requires the UAV format to be <see cref=\"F:SharpDX.DXGI.Format.R32_Typeless\"/>. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_BUFFER_UAV_FLAG_RAW']/*\"/>\t\n            <msdn-id>ff476096</msdn-id>\t\n            <unmanaged>D3D11_BUFFER_UAV_FLAG_RAW</unmanaged>\t\n            <unmanaged-short>D3D11_BUFFER_UAV_FLAG_RAW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.UnorderedAccessViewBufferFlags.Append\">\n            <summary>\t\n            <dd> <p>Allow data to be appended to the end of the buffer.  <strong><see cref=\"F:SharpDX.Direct3D11.UnorderedAccessViewBufferFlags.Append\"/></strong> flag must also be used for  any view that will be used as a AppendStructuredBuffer or a ConsumeStructuredBuffer.  Requires the UAV format to be <see cref=\"F:SharpDX.DXGI.Format.Unknown\"/>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_BUFFER_UAV_FLAG_APPEND']/*\"/>\t\n            <msdn-id>ff476096</msdn-id>\t\n            <unmanaged>D3D11_BUFFER_UAV_FLAG_APPEND</unmanaged>\t\n            <unmanaged-short>D3D11_BUFFER_UAV_FLAG_APPEND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.UnorderedAccessViewBufferFlags.Counter\">\n            <summary>\t\n            <dd> <p>Adds a counter to the unordered-access-view buffer.  <strong><see cref=\"F:SharpDX.Direct3D11.UnorderedAccessViewBufferFlags.Counter\"/></strong> can only be used on a UAV that is a  RWStructuredBuffer and it enables the functionality needed for the <strong>IncrementCounter</strong> and <strong>DecrementCounter</strong> methods in HLSL.  Requires the UAV format to be <see cref=\"F:SharpDX.DXGI.Format.Unknown\"/>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_BUFFER_UAV_FLAG_COUNTER']/*\"/>\t\n            <msdn-id>ff476096</msdn-id>\t\n            <unmanaged>D3D11_BUFFER_UAV_FLAG_COUNTER</unmanaged>\t\n            <unmanaged-short>D3D11_BUFFER_UAV_FLAG_COUNTER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.UnorderedAccessViewBufferFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.UnorderedAccessViewDimension\">\n            <summary>\t\n            <p>Unordered-access view options.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This enumeration is used by a unordered access-view description (see <strong><see cref=\"T:SharpDX.Direct3D11.UnorderedAccessViewDescription\"/></strong>).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_UAV_DIMENSION']/*\"/>\t\n            <msdn-id>ff476257</msdn-id>\t\n            <unmanaged>D3D11_UAV_DIMENSION</unmanaged>\t\n            <unmanaged-short>D3D11_UAV_DIMENSION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.UnorderedAccessViewDimension.Unknown\">\n            <summary>\t\n            <dd> <p>The view type is unknown.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_UAV_DIMENSION_UNKNOWN']/*\"/>\t\n            <msdn-id>ff476257</msdn-id>\t\n            <unmanaged>D3D11_UAV_DIMENSION_UNKNOWN</unmanaged>\t\n            <unmanaged-short>D3D11_UAV_DIMENSION_UNKNOWN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.UnorderedAccessViewDimension.Buffer\">\n            <summary>\t\n            <dd> <p>View the resource as a buffer.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_UAV_DIMENSION_BUFFER']/*\"/>\t\n            <msdn-id>ff476257</msdn-id>\t\n            <unmanaged>D3D11_UAV_DIMENSION_BUFFER</unmanaged>\t\n            <unmanaged-short>D3D11_UAV_DIMENSION_BUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.UnorderedAccessViewDimension.Texture1D\">\n            <summary>\t\n            <dd> <p>View the resource as a 1D texture.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_UAV_DIMENSION_TEXTURE1D']/*\"/>\t\n            <msdn-id>ff476257</msdn-id>\t\n            <unmanaged>D3D11_UAV_DIMENSION_TEXTURE1D</unmanaged>\t\n            <unmanaged-short>D3D11_UAV_DIMENSION_TEXTURE1D</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.UnorderedAccessViewDimension.Texture1DArray\">\n            <summary>\t\n            <dd> <p>View the resource as a 1D texture array.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_UAV_DIMENSION_TEXTURE1DARRAY']/*\"/>\t\n            <msdn-id>ff476257</msdn-id>\t\n            <unmanaged>D3D11_UAV_DIMENSION_TEXTURE1DARRAY</unmanaged>\t\n            <unmanaged-short>D3D11_UAV_DIMENSION_TEXTURE1DARRAY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.UnorderedAccessViewDimension.Texture2D\">\n            <summary>\t\n            <dd> <p>View the resource as a 2D texture.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_UAV_DIMENSION_TEXTURE2D']/*\"/>\t\n            <msdn-id>ff476257</msdn-id>\t\n            <unmanaged>D3D11_UAV_DIMENSION_TEXTURE2D</unmanaged>\t\n            <unmanaged-short>D3D11_UAV_DIMENSION_TEXTURE2D</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.UnorderedAccessViewDimension.Texture2DArray\">\n            <summary>\t\n            <dd> <p>View the resource as a 2D texture array.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_UAV_DIMENSION_TEXTURE2DARRAY']/*\"/>\t\n            <msdn-id>ff476257</msdn-id>\t\n            <unmanaged>D3D11_UAV_DIMENSION_TEXTURE2DARRAY</unmanaged>\t\n            <unmanaged-short>D3D11_UAV_DIMENSION_TEXTURE2DARRAY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.UnorderedAccessViewDimension.Texture3D\">\n            <summary>\t\n            <dd> <p>View the resource as a 3D texture array.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_UAV_DIMENSION_TEXTURE3D']/*\"/>\t\n            <msdn-id>ff476257</msdn-id>\t\n            <unmanaged>D3D11_UAV_DIMENSION_TEXTURE3D</unmanaged>\t\n            <unmanaged-short>D3D11_UAV_DIMENSION_TEXTURE3D</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.D3D11\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.Direct3D11.D3D11']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.D3D11.SdkVersion\">\n            <summary>Constant SdkVersion.</summary>\n            <unmanaged>D3D11_SDK_VERSION</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.D3D11.CreateDevice(SharpDX.DXGI.Adapter,SharpDX.Direct3D.DriverType,System.IntPtr,SharpDX.Direct3D11.DeviceCreationFlags,SharpDX.Direct3D.FeatureLevel[],System.Int32,System.Int32,SharpDX.Direct3D11.Device,SharpDX.Direct3D.FeatureLevel@,SharpDX.Direct3D11.DeviceContext@)\">\n            <summary>\t\n            <p>Creates a device that represents the display adapter.</p>\t\n            </summary>\t\n            <param name=\"adapterRef\"><dd>  <p>A reference to the video adapter to use when creating a device. Pass <strong><c>null</c></strong> to use the default adapter, which is the first adapter that is enumerated by <strong>IDXGIFactory1::EnumAdapters</strong>. </p> <p><strong>Note</strong>??Do not mix the use of DXGI 1.0 (<strong><see cref=\"T:SharpDX.DXGI.Factory\"/></strong>) and DXGI 1.1 (<strong><see cref=\"T:SharpDX.DXGI.Factory1\"/></strong>) in an application. Use <strong><see cref=\"T:SharpDX.DXGI.Factory\"/></strong> or <strong><see cref=\"T:SharpDX.DXGI.Factory1\"/></strong>, but not both in an application.</p> </dd></param>\t\n            <param name=\"driverType\"><dd>  <p>The <strong><see cref=\"T:SharpDX.Direct3D.DriverType\"/></strong>, which represents the driver type to create.</p> </dd></param>\t\n            <param name=\"software\"><dd>  <p>A handle to a DLL that implements a software rasterizer.  If <em>DriverType</em> is <em><see cref=\"F:SharpDX.Direct3D.DriverType.Software\"/></em>,  <em>Software</em> must not be <strong><c>null</c></strong>. Get the handle by  calling LoadLibrary,  LoadLibraryEx ,  or GetModuleHandle.</p> </dd></param>\t\n            <param name=\"flags\"><dd>  <p>The runtime layers to enable (see <strong><see cref=\"T:SharpDX.Direct3D11.DeviceCreationFlags\"/></strong>);  values can be bitwise OR'd together.</p> </dd></param>\t\n            <param name=\"featureLevelsRef\"><dd>  <p>A reference to an array of <strong><see cref=\"T:SharpDX.Direct3D.FeatureLevel\"/></strong>s, which determine the order of feature levels to attempt to create.  Use default parameters to get the greatest feature level available. If <em>pFeatureLevels</em> is set to <strong><c>null</c></strong>,  the following array of feature levels will be used:</p>  <pre><code> { <see cref=\"F:SharpDX.Direct3D.FeatureLevel.Level_11_0\"/>, <see cref=\"F:SharpDX.Direct3D.FeatureLevel.Level_10_1\"/>, <see cref=\"F:SharpDX.Direct3D.FeatureLevel.Level_10_0\"/>, <see cref=\"F:SharpDX.Direct3D.FeatureLevel.Level_9_3\"/>, <see cref=\"F:SharpDX.Direct3D.FeatureLevel.Level_9_2\"/>, <see cref=\"F:SharpDX.Direct3D.FeatureLevel.Level_9_1\"/>,}; </code></pre>  </dd></param>\t\n            <param name=\"featureLevels\"><dd>  <p>The number of elements in <em>pFeatureLevels</em>.</p> </dd></param>\t\n            <param name=\"sDKVersion\"><dd>  <p>The SDK version; use <em><see cref=\"F:SharpDX.Direct3D11.D3D11.SdkVersion\"/></em>.</p> </dd></param>\t\n            <param name=\"deviceOut\"><dd>  <p>Returns the address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D11.Device\"/></strong> object that represents the device created.</p> </dd></param>\t\n            <param name=\"featureLevelRef\"><dd>  <p>If successful, returns the first <strong><see cref=\"T:SharpDX.Direct3D.FeatureLevel\"/></strong> from the <em>pFeatureLevels</em> array which succeeded. Otherwise, returns 0.</p> </dd></param>\t\n            <param name=\"immediateContextOut\"><dd>  <p>Returns the address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D11.DeviceContext\"/></strong> object that represents the device context.</p> </dd></param>\t\n            <returns><p>This method returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>This entry-point is supported by the Direct3D 11 runtime, which is available on Windows 7, Windows Server 2008 R2, and as an update to  Windows Vista (KB971644).</p><p>Set <em>ppDevice</em> and <em>ppImmediateContext</em> to <strong><c>null</c></strong> to determine which feature level is supported by looking  at pFeatureLevel without creating a device.</p><p>For an example, see How To: Create a Device and Immediate Context; to create a device and a swap chain at the same time,  use <strong><see cref=\"M:SharpDX.Direct3D11.D3D11.CreateDeviceAndSwapChain(SharpDX.DXGI.Adapter,SharpDX.Direct3D.DriverType,System.IntPtr,SharpDX.Direct3D11.DeviceCreationFlags,SharpDX.Direct3D.FeatureLevel[],System.Int32,System.Int32,SharpDX.DXGI.SwapChainDescription@,SharpDX.DXGI.SwapChain@,SharpDX.Direct3D11.Device@,SharpDX.Direct3D.FeatureLevel@,SharpDX.Direct3D11.DeviceContext@)\"/></strong>.</p><p>If you set the <em>pAdapter</em> parameter to a non-<strong><c>null</c></strong> value, you must also set the <em>DriverType</em> parameter to the <see cref=\"F:SharpDX.Direct3D.DriverType.Unknown\"/> value. If you set the <em>pAdapter</em> parameter to a non-<strong><c>null</c></strong> value and the <em>DriverType</em> parameter to the <see cref=\"F:SharpDX.Direct3D.DriverType.Hardware\"/> value, <strong><see cref=\"M:SharpDX.Direct3D11.D3D11.CreateDevice(SharpDX.DXGI.Adapter,SharpDX.Direct3D.DriverType,System.IntPtr,SharpDX.Direct3D11.DeviceCreationFlags,SharpDX.Direct3D.FeatureLevel[],System.Int32,System.Int32,SharpDX.Direct3D11.Device,SharpDX.Direct3D.FeatureLevel@,SharpDX.Direct3D11.DeviceContext@)\"/></strong> returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> of E_INVALIDARG.</p><table> <tr><td> <p>Differences between Direct3D 10 and Direct3D 11:</p> <p>In Direct3D 10, the presence of <em>pAdapter</em> dictated which adapter to use and the <em>DriverType</em> could  mismatch what the adapter was.</p> <p>In Direct3D 11, if you are trying to create a hardware or a software device, set <em>pAdapter</em> != <strong><c>null</c></strong> which constrains  the other inputs to be:</p> <ul> <li><em>DriverType</em> must be <see cref=\"F:SharpDX.Direct3D.DriverType.Unknown\"/></li> <li><em>Software</em> must be <strong><c>null</c></strong>.</li> </ul> <p>On the other hand, if <em>pAdapter</em> == <strong><c>null</c></strong>, the <em>DriverType</em> cannot be set to <see cref=\"F:SharpDX.Direct3D.DriverType.Unknown\"/>; it can be set to either:</p> <ul> <li>If <em>DriverType</em> == <see cref=\"F:SharpDX.Direct3D.DriverType.Software\"/>,  <em>Software</em> cannot be <strong><c>null</c></strong>.</li> <li>If <em>DriverType</em> == <see cref=\"F:SharpDX.Direct3D.DriverType.Hardware\"/>, the adapter used will be the default adapter, which is the first adapter that is enumerated by <strong>IDXGIFactory1::EnumAdapters</strong> </li> </ul> </td></tr> </table><p>?</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11CreateDevice']/*\"/>\t\n            <msdn-id>ff476082</msdn-id>\t\n            <unmanaged>HRESULT D3D11CreateDevice([In, Optional] IDXGIAdapter* pAdapter,[In] D3D_DRIVER_TYPE DriverType,[In] HINSTANCE Software,[In] D3D11_CREATE_DEVICE_FLAG Flags,[In, Buffer, Optional] const D3D_FEATURE_LEVEL* pFeatureLevels,[In] unsigned int FeatureLevels,[In] unsigned int SDKVersion,[Out, Fast] ID3D11Device** ppDevice,[Out, Optional] D3D_FEATURE_LEVEL* pFeatureLevel,[Out, Optional] ID3D11DeviceContext** ppImmediateContext)</unmanaged>\t\n            <unmanaged-short>D3D11CreateDevice</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.D3D11.CreateDeviceAndSwapChain(SharpDX.DXGI.Adapter,SharpDX.Direct3D.DriverType,System.IntPtr,SharpDX.Direct3D11.DeviceCreationFlags,SharpDX.Direct3D.FeatureLevel[],System.Int32,System.Int32,SharpDX.DXGI.SwapChainDescription@,SharpDX.DXGI.SwapChain@,SharpDX.Direct3D11.Device@,SharpDX.Direct3D.FeatureLevel@,SharpDX.Direct3D11.DeviceContext@)\">\n            <summary>\t\n            <p>Creates a device that represents the display adapter and a swap chain used for rendering.</p>\t\n            </summary>\t\n            <param name=\"adapterRef\"><dd>  <p>A reference to the video adapter to use when creating a device. Pass <strong><c>null</c></strong> to use the default adapter, which is the first adapter enumerated  by <strong>IDXGIFactory1::EnumAdapters</strong>. </p> <p><strong>Note</strong>??Do not mix the use of DXGI 1.0 (<strong><see cref=\"T:SharpDX.DXGI.Factory\"/></strong>) and DXGI 1.1 (<strong><see cref=\"T:SharpDX.DXGI.Factory1\"/></strong>) in an application. Use <strong><see cref=\"T:SharpDX.DXGI.Factory\"/></strong> or <strong><see cref=\"T:SharpDX.DXGI.Factory1\"/></strong>, but not both in an application.</p> </dd></param>\t\n            <param name=\"driverType\"><dd>  <p>The <strong><see cref=\"T:SharpDX.Direct3D.DriverType\"/></strong>, which represents the driver type to create.</p> </dd></param>\t\n            <param name=\"software\"><dd>  <p>A handle to a DLL that implements a software rasterizer.  If <em>DriverType</em> is <em><see cref=\"F:SharpDX.Direct3D.DriverType.Software\"/></em>, <em>Software</em> must not be <strong><c>null</c></strong>. Get the handle by  calling LoadLibrary,  LoadLibraryEx ,  or GetModuleHandle. The value should be non-<strong><c>null</c></strong> when <strong><see cref=\"T:SharpDX.Direct3D.DriverType\"/></strong> is <strong><see cref=\"F:SharpDX.Direct3D.DriverType.Software\"/></strong> and <strong><c>null</c></strong> otherwise.</p> </dd></param>\t\n            <param name=\"flags\"><dd>  <p>The runtime layers to enable (see <strong><see cref=\"T:SharpDX.Direct3D11.DeviceCreationFlags\"/></strong>);  values can be bitwise OR'd together.</p> </dd></param>\t\n            <param name=\"featureLevelsRef\"><dd>  <p>A reference to an array of <strong><see cref=\"T:SharpDX.Direct3D.FeatureLevel\"/></strong>s, which determine the order of feature levels to attempt to create.  Use default parameters to get the greatest feature level available. If pFeatureLevels is set to <strong><c>null</c></strong>, the following array of feature  levels will be used:</p>  <pre><code> { <see cref=\"F:SharpDX.Direct3D.FeatureLevel.Level_11_0\"/>, <see cref=\"F:SharpDX.Direct3D.FeatureLevel.Level_10_1\"/>, <see cref=\"F:SharpDX.Direct3D.FeatureLevel.Level_10_0\"/>, <see cref=\"F:SharpDX.Direct3D.FeatureLevel.Level_9_3\"/>, <see cref=\"F:SharpDX.Direct3D.FeatureLevel.Level_9_2\"/>, <see cref=\"F:SharpDX.Direct3D.FeatureLevel.Level_9_1\"/>,};</code></pre>  </dd></param>\t\n            <param name=\"featureLevels\"><dd>  <p>The number of elements in <em>pFeatureLevels</em>.</p> </dd></param>\t\n            <param name=\"sDKVersion\"><dd>  <p>The SDK version; use <em><see cref=\"F:SharpDX.Direct3D11.D3D11.SdkVersion\"/></em>.</p> </dd></param>\t\n            <param name=\"swapChainDescRef\"><dd>  <p>A reference to a swap chain description (see <strong><see cref=\"T:SharpDX.DXGI.SwapChainDescription\"/></strong>) that contains initialization parameters for the swap chain.</p> </dd></param>\t\n            <param name=\"swapChainOut\"><dd>  <p>Returns the address of a reference to the <strong><see cref=\"T:SharpDX.DXGI.SwapChain\"/></strong> object that represents the swap chain used for rendering.</p> </dd></param>\t\n            <param name=\"deviceOut\"><dd>  <p>Returns the address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D11.Device\"/></strong> object that represents the device created. Supply <strong><c>null</c></strong> as an input to  return the highest supported feature level in <em>pFeatureLevel</em>.</p> </dd></param>\t\n            <param name=\"featureLevelRef\"><dd>  <p>Returns a reference to a <strong><see cref=\"T:SharpDX.Direct3D.FeatureLevel\"/></strong>, which represents the first element in an array of feature levels supported  by the device.</p> </dd></param>\t\n            <param name=\"immediateContextOut\"><dd>  <p>Returns the address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D11.DeviceContext\"/></strong> object that represents the device context.</p> </dd></param>\t\n            <returns><p>This method returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>This entry-point is supported by the Direct3D 11 runtime, which is available on Windows 7, Windows Server 2008 R2, and as an update to  Windows Vista (KB971644).</p><p>Also, see the remarks section in <strong><see cref=\"M:SharpDX.Direct3D11.D3D11.CreateDevice(SharpDX.DXGI.Adapter,SharpDX.Direct3D.DriverType,System.IntPtr,SharpDX.Direct3D11.DeviceCreationFlags,SharpDX.Direct3D.FeatureLevel[],System.Int32,System.Int32,SharpDX.Direct3D11.Device,SharpDX.Direct3D.FeatureLevel@,SharpDX.Direct3D11.DeviceContext@)\"/></strong> for details about input parameter dependencies. To create a device without  creating a swap chain, use the <strong><see cref=\"M:SharpDX.Direct3D11.D3D11.CreateDevice(SharpDX.DXGI.Adapter,SharpDX.Direct3D.DriverType,System.IntPtr,SharpDX.Direct3D11.DeviceCreationFlags,SharpDX.Direct3D.FeatureLevel[],System.Int32,System.Int32,SharpDX.Direct3D11.Device,SharpDX.Direct3D.FeatureLevel@,SharpDX.Direct3D11.DeviceContext@)\"/></strong> function. </p><p>If you set the <em>pAdapter</em> parameter to a non-<strong><c>null</c></strong> value, you must also set the <em>DriverType</em> parameter to the <see cref=\"F:SharpDX.Direct3D.DriverType.Unknown\"/> value. If you set the <em>pAdapter</em> parameter to a non-<strong><c>null</c></strong> value and the <em>DriverType</em> parameter to the <see cref=\"F:SharpDX.Direct3D.DriverType.Hardware\"/> value, <strong><see cref=\"M:SharpDX.Direct3D11.D3D11.CreateDeviceAndSwapChain(SharpDX.DXGI.Adapter,SharpDX.Direct3D.DriverType,System.IntPtr,SharpDX.Direct3D11.DeviceCreationFlags,SharpDX.Direct3D.FeatureLevel[],System.Int32,System.Int32,SharpDX.DXGI.SwapChainDescription@,SharpDX.DXGI.SwapChain@,SharpDX.Direct3D11.Device@,SharpDX.Direct3D.FeatureLevel@,SharpDX.Direct3D11.DeviceContext@)\"/></strong> returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> of E_INVALIDARG.</p>Notes for Metro style apps<p>The <strong><see cref=\"M:SharpDX.Direct3D11.D3D11.CreateDeviceAndSwapChain(SharpDX.DXGI.Adapter,SharpDX.Direct3D.DriverType,System.IntPtr,SharpDX.Direct3D11.DeviceCreationFlags,SharpDX.Direct3D.FeatureLevel[],System.Int32,System.Int32,SharpDX.DXGI.SwapChainDescription@,SharpDX.DXGI.SwapChain@,SharpDX.Direct3D11.Device@,SharpDX.Direct3D.FeatureLevel@,SharpDX.Direct3D11.DeviceContext@)\"/></strong> function does not exist for Metro style apps. Instead, Metro style apps use the  <strong><see cref=\"M:SharpDX.Direct3D11.D3D11.CreateDevice(SharpDX.DXGI.Adapter,SharpDX.Direct3D.DriverType,System.IntPtr,SharpDX.Direct3D11.DeviceCreationFlags,SharpDX.Direct3D.FeatureLevel[],System.Int32,System.Int32,SharpDX.Direct3D11.Device,SharpDX.Direct3D.FeatureLevel@,SharpDX.Direct3D11.DeviceContext@)\"/></strong> function and then use the <strong>IDXGIFactory2::CreateSwapChainForImmersiveWindow</strong> method.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11CreateDeviceAndSwapChain']/*\"/>\t\n            <msdn-id>ff476083</msdn-id>\t\n            <unmanaged>HRESULT D3D11CreateDeviceAndSwapChain([In, Optional] IDXGIAdapter* pAdapter,[In] D3D_DRIVER_TYPE DriverType,[In] HINSTANCE Software,[In] D3D11_CREATE_DEVICE_FLAG Flags,[In, Buffer, Optional] const D3D_FEATURE_LEVEL* pFeatureLevels,[In] unsigned int FeatureLevels,[In] unsigned int SDKVersion,[In] const DXGI_SWAP_CHAIN_DESC* pSwapChainDesc,[Out, Optional] IDXGISwapChain** ppSwapChain,[Out, Optional] ID3D11Device** ppDevice,[Out, Optional] D3D_FEATURE_LEVEL* pFeatureLevel,[Out, Optional] ID3D11DeviceContext** ppImmediateContext)</unmanaged>\t\n            <unmanaged-short>D3D11CreateDeviceAndSwapChain</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.D3DCSX\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.Direct3D11.D3DCSX']/*\"/>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.D3DCSX.CreateFFT2DComplex(SharpDX.Direct3D11.DeviceContext,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D11.FastFourierTransformBufferRequirements@,SharpDX.Direct3D11.FastFourierTransform@)\">\n            <summary>\t\n            <p>Creates an <see cref=\"T:SharpDX.Direct3D11.FastFourierTransform\"/> COM interface object.</p>\t\n            </summary>\t\n            <param name=\"deviceContextRef\"><dd>  <p>Pointer to the <strong><see cref=\"T:SharpDX.Direct3D11.DeviceContext\"/></strong> interface to use for the FFT.</p> </dd></param>\t\n            <param name=\"x\"><dd>  <p>Length of the first dimension of the FFT.</p> </dd></param>\t\n            <param name=\"y\"><dd>  <p>Length of the second dimension of the FFT.</p> </dd></param>\t\n            <param name=\"flags\"><dd>  <p>Flag affecting the behavior of the FFT, can be 0 or a combination of flags from <strong><see cref=\"T:SharpDX.Direct3D11.FastFourierTransformCreationFlags\"/></strong>.</p> </dd></param>\t\n            <param name=\"bufferInfoRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D11.FastFourierTransformBufferRequirements\"/></strong> struct that will be filled out with buffer requirements for the FFT.</p> </dd></param>\t\n            <param name=\"fFTOut\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D11.FastFourierTransform\"/> Interface</strong> interface reference that will be set the created interface object.</p> </dd></param>\t\n            <returns><p>The return value is one of the values listed in Direct3D 11 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11CreateFFT2DComplex']/*\"/>\t\n            <msdn-id>ff476277</msdn-id>\t\n            <unmanaged>HRESULT D3DX11CreateFFT2DComplex([In] ID3D11DeviceContext* pDeviceContext,[In] unsigned int X,[In] unsigned int Y,[In] unsigned int Flags,[Out] D3DX11_FFT_BUFFER_INFO* pBufferInfo,[Out] ID3DX11FFT** ppFFT)</unmanaged>\t\n            <unmanaged-short>D3DX11CreateFFT2DComplex</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.D3DCSX.CreateFFT1DReal(SharpDX.Direct3D11.DeviceContext,System.Int32,System.Int32,SharpDX.Direct3D11.FastFourierTransformBufferRequirements@,SharpDX.Direct3D11.FastFourierTransform@)\">\n            <summary>\t\n            <p>Creates an <see cref=\"T:SharpDX.Direct3D11.FastFourierTransform\"/> COM interface object.</p>\t\n            </summary>\t\n            <param name=\"deviceContextRef\"><dd>  <p>Pointer to the <strong><see cref=\"T:SharpDX.Direct3D11.DeviceContext\"/></strong> interface to use for the FFT.</p> </dd></param>\t\n            <param name=\"x\"><dd>  <p>Length of the first dimension of the FFT.</p> </dd></param>\t\n            <param name=\"flags\"><dd>  <p>Flag affecting the behavior of the FFT, can be 0 or a combination of flags from <strong><see cref=\"T:SharpDX.Direct3D11.FastFourierTransformCreationFlags\"/></strong>.</p> </dd></param>\t\n            <param name=\"bufferInfoRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D11.FastFourierTransformBufferRequirements\"/></strong> struct that will be filled out with buffer requirements for the FFT.</p> </dd></param>\t\n            <param name=\"fFTOut\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D11.FastFourierTransform\"/> Interface</strong> interface reference that will be set the created interface object.</p> </dd></param>\t\n            <returns><p>The return value is one of the values listed in Direct3D 11 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11CreateFFT1DReal']/*\"/>\t\n            <msdn-id>ff476276</msdn-id>\t\n            <unmanaged>HRESULT D3DX11CreateFFT1DReal([In] ID3D11DeviceContext* pDeviceContext,[In] unsigned int X,[In] unsigned int Flags,[Out] D3DX11_FFT_BUFFER_INFO* pBufferInfo,[Out] ID3DX11FFT** ppFFT)</unmanaged>\t\n            <unmanaged-short>D3DX11CreateFFT1DReal</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.D3DCSX.CreateFFT(SharpDX.Direct3D11.DeviceContext,SharpDX.Direct3D11.FastFourierTransformDescription@,System.Int32,SharpDX.Direct3D11.FastFourierTransformBufferRequirements@,SharpDX.Direct3D11.FastFourierTransform)\">\n            <summary>\t\n            <p>Creates an <see cref=\"T:SharpDX.Direct3D11.FastFourierTransform\"/> COM interface object.</p>\t\n            </summary>\t\n            <param name=\"deviceContextRef\"><dd>  <p>Pointer to the <strong><see cref=\"T:SharpDX.Direct3D11.DeviceContext\"/></strong> interface to use for the FFT.</p> </dd></param>\t\n            <param name=\"descRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D11.FastFourierTransformDescription\"/></strong> structure that describes the shape of the FFT data as well as the scaling factors that should be used for forward and inverse transforms.</p> </dd></param>\t\n            <param name=\"flags\"><dd>  <p>Flag affecting the behavior of the FFT, can be 0 or a combination of flags from <strong><see cref=\"T:SharpDX.Direct3D11.FastFourierTransformCreationFlags\"/></strong>.</p> </dd></param>\t\n            <param name=\"bufferInfoRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D11.FastFourierTransformBufferRequirements\"/></strong> struct that will be filled out with buffer requirements for the FFT.</p> </dd></param>\t\n            <param name=\"fFTOut\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D11.FastFourierTransform\"/> Interface</strong> interface reference that will be set the created interface object.</p> </dd></param>\t\n            <returns><p>The return value is one of the values listed in Direct3D 11 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11CreateFFT']/*\"/>\t\n            <msdn-id>ff476274</msdn-id>\t\n            <unmanaged>HRESULT D3DX11CreateFFT([In] ID3D11DeviceContext* pDeviceContext,[In] const D3DX11_FFT_DESC* pDesc,[In] unsigned int Flags,[Out] D3DX11_FFT_BUFFER_INFO* pBufferInfo,[Out, Fast] ID3DX11FFT** ppFFT)</unmanaged>\t\n            <unmanaged-short>D3DX11CreateFFT</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.D3DCSX.CreateFFT2DReal(SharpDX.Direct3D11.DeviceContext,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D11.FastFourierTransformBufferRequirements@,SharpDX.Direct3D11.FastFourierTransform@)\">\n            <summary>\t\n            <p>Creates an <see cref=\"T:SharpDX.Direct3D11.FastFourierTransform\"/> COM interface object.</p>\t\n            </summary>\t\n            <param name=\"deviceContextRef\"><dd>  <p>Pointer to the <strong><see cref=\"T:SharpDX.Direct3D11.DeviceContext\"/></strong> interface to use for the FFT.</p> </dd></param>\t\n            <param name=\"x\"><dd>  <p>Length of the first dimension of the FFT.</p> </dd></param>\t\n            <param name=\"y\"><dd>  <p>Length of the second dimension of the FFT.</p> </dd></param>\t\n            <param name=\"flags\"><dd>  <p>Flag affecting the behavior of the FFT, can be 0 or a combination of flags from <strong><see cref=\"T:SharpDX.Direct3D11.FastFourierTransformCreationFlags\"/></strong>.</p> </dd></param>\t\n            <param name=\"bufferInfoRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D11.FastFourierTransformBufferRequirements\"/></strong> struct that will be filled out with buffer requirements for the FFT.</p> </dd></param>\t\n            <param name=\"fFTOut\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D11.FastFourierTransform\"/> Interface</strong> interface reference that will be set the created interface object.</p> </dd></param>\t\n            <returns><p>The return value is one of the values listed in Direct3D 11 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11CreateFFT2DReal']/*\"/>\t\n            <msdn-id>ff476278</msdn-id>\t\n            <unmanaged>HRESULT D3DX11CreateFFT2DReal([In] ID3D11DeviceContext* pDeviceContext,[In] unsigned int X,[In] unsigned int Y,[In] unsigned int Flags,[Out] D3DX11_FFT_BUFFER_INFO* pBufferInfo,[Out] ID3DX11FFT** ppFFT)</unmanaged>\t\n            <unmanaged-short>D3DX11CreateFFT2DReal</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.D3DCSX.CreateScan(SharpDX.Direct3D11.DeviceContext,System.Int32,System.Int32,SharpDX.Direct3D11.Scan)\">\n            <summary>\t\n            <p>Creates a scan context.</p>\t\n            </summary>\t\n            <param name=\"deviceContextRef\"><dd>  <p>The <strong><see cref=\"T:SharpDX.Direct3D11.DeviceContext\"/></strong> the scan is associated with.</p> </dd></param>\t\n            <param name=\"maxElementScanSize\"><dd>  <p>Maximum single scan size, in elements (FLOAT, UINT, or INT)</p> </dd></param>\t\n            <param name=\"maxScanCount\"><dd>  <p>Maximum number of scans in multiscan.</p> </dd></param>\t\n            <param name=\"scanOut\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D11.Scan\"/> Interface</strong> reference that will be set to the created interface object.</p> </dd></param>\t\n            <returns><p>The return value is one of the values listed in Direct3D 11 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11CreateScan']/*\"/>\t\n            <msdn-id>ff476281</msdn-id>\t\n            <unmanaged>HRESULT D3DX11CreateScan([In] ID3D11DeviceContext* pDeviceContext,[In] unsigned int MaxElementScanSize,[In] unsigned int MaxScanCount,[Out, Fast] ID3DX11Scan** ppScan)</unmanaged>\t\n            <unmanaged-short>D3DX11CreateScan</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.D3DCSX.CreateFFT3DComplex(SharpDX.Direct3D11.DeviceContext,System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D11.FastFourierTransformBufferRequirements@,SharpDX.Direct3D11.FastFourierTransform@)\">\n            <summary>\t\n            <p>Creates an <see cref=\"T:SharpDX.Direct3D11.FastFourierTransform\"/> COM interface object.</p>\t\n            </summary>\t\n            <param name=\"deviceContextRef\"><dd>  <p>Pointer to the <strong><see cref=\"T:SharpDX.Direct3D11.DeviceContext\"/></strong> interface to use for the FFT.</p> </dd></param>\t\n            <param name=\"x\"><dd>  <p>Length of the first dimension of the FFT.</p> </dd></param>\t\n            <param name=\"y\"><dd>  <p>Length of the second dimension of the FFT.</p> </dd></param>\t\n            <param name=\"z\"><dd>  <p>Length of the third dimension of the FFT.</p> </dd></param>\t\n            <param name=\"flags\"><dd>  <p>Flag affecting the behavior of the FFT, can be 0 or a combination of flags from <strong><see cref=\"T:SharpDX.Direct3D11.FastFourierTransformCreationFlags\"/></strong>.</p> </dd></param>\t\n            <param name=\"bufferInfoRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D11.FastFourierTransformBufferRequirements\"/></strong> struct that will be filled out with buffer requirements for the FFT.</p> </dd></param>\t\n            <param name=\"fFTOut\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D11.FastFourierTransform\"/> Interface</strong> interface reference that will be set the created interface object.</p> </dd></param>\t\n            <returns><p>The return value is one of the values listed in Direct3D 11 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11CreateFFT3DComplex']/*\"/>\t\n            <msdn-id>ff476279</msdn-id>\t\n            <unmanaged>HRESULT D3DX11CreateFFT3DComplex([In] ID3D11DeviceContext* pDeviceContext,[In] unsigned int X,[In] unsigned int Y,[In] unsigned int Z,[In] unsigned int Flags,[Out] D3DX11_FFT_BUFFER_INFO* pBufferInfo,[Out] ID3DX11FFT** ppFFT)</unmanaged>\t\n            <unmanaged-short>D3DX11CreateFFT3DComplex</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.D3DCSX.CreateFFT1DComplex(SharpDX.Direct3D11.DeviceContext,System.Int32,System.Int32,SharpDX.Direct3D11.FastFourierTransformBufferRequirements@,SharpDX.Direct3D11.FastFourierTransform@)\">\n            <summary>\t\n            <p>Creates an <see cref=\"T:SharpDX.Direct3D11.FastFourierTransform\"/> COM interface object.</p>\t\n            </summary>\t\n            <param name=\"deviceContextRef\"><dd>  <p>Pointer to the <strong><see cref=\"T:SharpDX.Direct3D11.DeviceContext\"/></strong> interface to use for the FFT.</p> </dd></param>\t\n            <param name=\"x\"><dd>  <p>Length of the first dimension of the FFT.</p> </dd></param>\t\n            <param name=\"flags\"><dd>  <p>Flag affecting the behavior of the FFT, can be 0 or a combination of flags from <strong><see cref=\"T:SharpDX.Direct3D11.FastFourierTransformCreationFlags\"/></strong>.</p> </dd></param>\t\n            <param name=\"bufferInfoRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D11.FastFourierTransformBufferRequirements\"/></strong> struct that will be filled out with buffer requirements for the FFT.</p> </dd></param>\t\n            <param name=\"fFTOut\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D11.FastFourierTransform\"/> Interface</strong> interface reference that will be set the created interface object.</p> </dd></param>\t\n            <returns><p>The return value is one of the values listed in Direct3D 11 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11CreateFFT1DComplex']/*\"/>\t\n            <msdn-id>ff476275</msdn-id>\t\n            <unmanaged>HRESULT D3DX11CreateFFT1DComplex([In] ID3D11DeviceContext* pDeviceContext,[In] unsigned int X,[In] unsigned int Flags,[Out] D3DX11_FFT_BUFFER_INFO* pBufferInfo,[Out] ID3DX11FFT** ppFFT)</unmanaged>\t\n            <unmanaged-short>D3DX11CreateFFT1DComplex</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.D3DCSX.CreateSegmentedScan(SharpDX.Direct3D11.DeviceContext,System.Int32,SharpDX.Direct3D11.SegmentedScan)\">\n            <summary>\t\n            <p>Creates a segmented scan context.</p>\t\n            </summary>\t\n            <param name=\"deviceContextRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D11.DeviceContext\"/></strong> interface.</p> </dd></param>\t\n            <param name=\"maxElementScanSize\"><dd>  <p>Maximum single scan size, in elements (FLOAT, UINT, or INT).</p> </dd></param>\t\n            <param name=\"scanOut\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D11.SegmentedScan\"/> Interface</strong> reference that will be set to the created interface object.</p> </dd></param>\t\n            <returns><p>The return value is one of the values listed in Direct3D 11 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11CreateSegmentedScan']/*\"/>\t\n            <msdn-id>ff476282</msdn-id>\t\n            <unmanaged>HRESULT D3DX11CreateSegmentedScan([In] ID3D11DeviceContext* pDeviceContext,[In] unsigned int MaxElementScanSize,[Out, Fast] ID3DX11SegmentedScan** ppScan)</unmanaged>\t\n            <unmanaged-short>D3DX11CreateSegmentedScan</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.D3DCSX.CreateFFT3DReal(SharpDX.Direct3D11.DeviceContext,System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D11.FastFourierTransformBufferRequirements@,SharpDX.Direct3D11.FastFourierTransform@)\">\n            <summary>\t\n            <p>Creates an <see cref=\"T:SharpDX.Direct3D11.FastFourierTransform\"/> COM interface object.</p>\t\n            </summary>\t\n            <param name=\"deviceContextRef\"><dd>  <p>Pointer to the <strong><see cref=\"T:SharpDX.Direct3D11.DeviceContext\"/></strong> interface to use for the FFT.</p> </dd></param>\t\n            <param name=\"x\"><dd>  <p>Length of the first dimension of the FFT.</p> </dd></param>\t\n            <param name=\"y\"><dd>  <p>Length of the second dimension of the FFT.</p> </dd></param>\t\n            <param name=\"z\"><dd>  <p>Length of the third dimension of the FFT.</p> </dd></param>\t\n            <param name=\"flags\"><dd>  <p>Flag affecting the behavior of the FFT, can be 0 or a combination of flags from <strong><see cref=\"T:SharpDX.Direct3D11.FastFourierTransformCreationFlags\"/></strong>.</p> </dd></param>\t\n            <param name=\"bufferInfoRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D11.FastFourierTransformBufferRequirements\"/></strong> struct that will be filled out with buffer requirements for the FFT.</p> </dd></param>\t\n            <param name=\"fFTOut\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D11.FastFourierTransform\"/> Interface</strong> interface reference that will be set the created interface object.</p> </dd></param>\t\n            <returns><p>The return value is one of the values listed in Direct3D 11 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11CreateFFT3DReal']/*\"/>\t\n            <msdn-id>ff476280</msdn-id>\t\n            <unmanaged>HRESULT D3DX11CreateFFT3DReal([In] ID3D11DeviceContext* pDeviceContext,[In] unsigned int X,[In] unsigned int Y,[In] unsigned int Z,[In] unsigned int Flags,[Out] D3DX11_FFT_BUFFER_INFO* pBufferInfo,[Out] ID3DX11FFT** ppFFT)</unmanaged>\t\n            <unmanaged-short>D3DX11CreateFFT3DReal</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.D3DX11\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.Direct3D11.D3DX11']/*\"/>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.D3DX11.CheckVersion(System.Int32,System.Int32)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"d3DSdkVersion\">No documentation.</param>\t\n            <param name=\"d3DX11SdkVersion\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11CheckVersion']/*\"/>\t\n            <unmanaged>HRESULT D3DX11CheckVersion([In] unsigned int D3DSdkVersion,[In] unsigned int D3DX11SdkVersion)</unmanaged>\t\n            <unmanaged-short>D3DX11CheckVersion</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.D3DX11.CreateShaderResourceViewFromMemory(SharpDX.Direct3D11.Device,System.IntPtr,SharpDX.PointerSize,System.Nullable{SharpDX.Direct3D11.ImageLoadInformation},System.IntPtr,SharpDX.Direct3D11.ShaderResourceView@,SharpDX.Result@)\">\n            <summary>\t\n            <p>Create a shader-resource view from a file in memory.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\"><dd>  <p>A reference to the device (see <strong><see cref=\"T:SharpDX.Direct3D11.Device\"/></strong>) that will use the resource.</p> </dd></param>\t\n            <param name=\"srcDataRef\"><dd>  <p>Pointer to the file in memory that contains the shader-resource view.</p> </dd></param>\t\n            <param name=\"srcDataSize\"><dd>  <p>Size of the file in memory.</p> </dd></param>\t\n            <param name=\"loadInfoRef\"><dd>  <p>Optional. Identifies the characteristics of a texture (see <strong><see cref=\"T:SharpDX.Direct3D11.ImageLoadInformation\"/></strong>) when the data processor is created; set this to <strong><c>null</c></strong> to read the characteristics of a texture when the texture is loaded.</p> </dd></param>\t\n            <param name=\"pumpRef\"><dd>  <p>A reference to a thread pump interface (see <strong><see cref=\"T:System.IntPtr\"/> Interface</strong>). If <strong><c>null</c></strong> is specified, this function will behave synchronously and will not return until it is finished.</p> </dd></param>\t\n            <param name=\"shaderResourceViewOut\"><dd>  <p>Address of a reference to the newly created shader resource view. See <strong><see cref=\"T:SharpDX.Direct3D11.ShaderResourceView\"/></strong>.</p> </dd></param>\t\n            <param name=\"hResultRef\"><dd>  <p>A reference to the return value. May be <strong><c>null</c></strong>. If <em>pPump</em> is not <strong><c>null</c></strong>, then <em>pHResult</em> must be a valid memory location until the asynchronous execution completes.</p> </dd></param>\t\n            <returns><p>The return value is one of the values listed in Direct3D 11 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11CreateShaderResourceViewFromMemory']/*\"/>\t\n            <msdn-id>ff476284</msdn-id>\t\n            <unmanaged>HRESULT D3DX11CreateShaderResourceViewFromMemory([In] ID3D11Device* pDevice,[In] const void* pSrcData,[In] SIZE_T SrcDataSize,[In, Optional] D3DX11_IMAGE_LOAD_INFO* pLoadInfo,[In] ID3DX11ThreadPump* pPump,[In] ID3D11ShaderResourceView** ppShaderResourceView,[Out] HRESULT* pHResult)</unmanaged>\t\n            <unmanaged-short>D3DX11CreateShaderResourceViewFromMemory</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.D3DX11.SHProjectCubeMap(SharpDX.Direct3D11.DeviceContext,System.Int32,SharpDX.Direct3D11.Texture2D,System.Single[],System.Single[],System.Single[])\">\n            <summary>\t\n            <p>Projects a function represented in a cube map into spherical harmonics.</p>\t\n            </summary>\t\n            <param name=\"contextRef\"><dd>  <p>A reference to an <strong><see cref=\"T:SharpDX.Direct3D11.DeviceContext\"/></strong> object.</p> </dd></param>\t\n            <param name=\"order\"><dd>  <p>Order of the SH evaluation, generates Order^2 coefficients whose degree is Order-1. Valid range is between 2 and 6.</p> </dd></param>\t\n            <param name=\"cubeMapRef\"><dd>  <p>A reference to an <strong><see cref=\"T:SharpDX.Direct3D11.Texture2D\"/></strong> that represents a cubemap that is going to be projected into spherical harmonics.</p> </dd></param>\t\n            <param name=\"rOutRef\"><dd>  <p>Output SH vector for red.</p> </dd></param>\t\n            <param name=\"gOutRef\"><dd>  <p>Output SH vector for green.</p> </dd></param>\t\n            <param name=\"bOutRef\"><dd>  <p>Output SH vector for blue.</p> </dd></param>\t\n            <returns><p>The return value is one of the values listed in Direct3D 11 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11SHProjectCubeMap']/*\"/>\t\n            <msdn-id>ff476300</msdn-id>\t\n            <unmanaged>HRESULT D3DX11SHProjectCubeMap([In] ID3D11DeviceContext* pContext,[In] unsigned int Order,[In] ID3D11Texture2D* pCubeMap,[Out, Buffer] float* pROut,[Out, Buffer, Optional] float* pGOut,[Out, Buffer, Optional] float* pBOut)</unmanaged>\t\n            <unmanaged-short>D3DX11SHProjectCubeMap</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.D3DX11.CreateTextureFromResource(SharpDX.Direct3D11.Device,System.IntPtr,System.String,System.Nullable{SharpDX.Direct3D11.ImageLoadInformation},System.IntPtr,System.IntPtr@,SharpDX.Result@)\">\n            <summary>\t\n            <p>Create a texture from another resource.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\"><dd>  <p>A reference to the device (see <strong><see cref=\"T:SharpDX.Direct3D11.Device\"/></strong>) that will use the resource.</p> </dd></param>\t\n            <param name=\"hSrcModule\"><dd>  <p>A handle to the source resource. HMODULE can be obtained with GetModuleHandle Function.</p> </dd></param>\t\n            <param name=\"srcResourceRef\"><dd>  <p>A string that contains the name of the source resource.  If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the data type resolves to LPCSTR. </p> </dd></param>\t\n            <param name=\"loadInfoRef\"><dd>  <p>Optional. Identifies the characteristics of a texture (see <strong><see cref=\"T:SharpDX.Direct3D11.ImageLoadInformation\"/></strong>) when the data processor is created; set this to <strong><c>null</c></strong> to read the characteristics of a texture when the texture is loaded.</p> </dd></param>\t\n            <param name=\"pumpRef\"><dd>  <p>A reference to a thread pump interface (see <strong><see cref=\"T:System.IntPtr\"/> Interface</strong>). If <strong><c>null</c></strong> is specified, this function will behave synchronously and will not return until it is finished.</p> </dd></param>\t\n            <param name=\"textureOut\"><dd>  <p>The address of a reference to the texture resource (see <strong><see cref=\"T:SharpDX.Direct3D11.Resource\"/></strong>).</p> </dd></param>\t\n            <param name=\"hResultRef\"><dd>  <p>A reference to the return value. May be <strong><c>null</c></strong>. If <em>pPump</em> is not <strong><c>null</c></strong>, then <em>pHResult</em> must be a valid memory location until the asynchronous execution completes.</p> </dd></param>\t\n            <returns><p>The return value is one of the values listed in Direct3D 11 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11CreateTextureFromResourceW']/*\"/>\t\n            <msdn-id>ff476288</msdn-id>\t\n            <unmanaged>HRESULT D3DX11CreateTextureFromResourceW([In] ID3D11Device* pDevice,[In] HINSTANCE hSrcModule,[In] const wchar_t* pSrcResource,[In, Optional] D3DX11_IMAGE_LOAD_INFO* pLoadInfo,[In] ID3DX11ThreadPump* pPump,[Out] void** ppTexture,[Out] HRESULT* pHResult)</unmanaged>\t\n            <unmanaged-short>D3DX11CreateTextureFromResourceW</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.D3DX11.SaveTextureToMemory(SharpDX.Direct3D11.DeviceContext,SharpDX.Direct3D11.Resource,SharpDX.Direct3D11.ImageFileFormat,SharpDX.Direct3D.Blob@,System.Int32)\">\n            <summary>\t\n            <p>Save a texture to memory.</p>\t\n            </summary>\t\n            <param name=\"contextRef\"><dd>  <p>A reference to an <strong><see cref=\"T:SharpDX.Direct3D11.DeviceContext\"/></strong> object.</p> </dd></param>\t\n            <param name=\"srcTextureRef\"><dd>  <p>Pointer to the texture to be saved. See <strong><see cref=\"T:SharpDX.Direct3D11.Resource\"/></strong>.</p> </dd></param>\t\n            <param name=\"destFormat\"><dd>  <p>The format the texture will be saved as. See <strong><see cref=\"T:SharpDX.Direct3D11.ImageFileFormat\"/></strong>.</p> </dd></param>\t\n            <param name=\"destBufOut\"><dd>  <p>Address of a reference to the memory containing the saved texture.</p> </dd></param>\t\n            <param name=\"flags\"><dd>  <p>Optional.</p> </dd></param>\t\n            <returns><p>The return value is one of the values listed in Direct3D 11 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11SaveTextureToMemory']/*\"/>\t\n            <msdn-id>ff476299</msdn-id>\t\n            <unmanaged>HRESULT D3DX11SaveTextureToMemory([In] ID3D11DeviceContext* pContext,[In] ID3D11Resource* pSrcTexture,[In] D3DX11_IMAGE_FILE_FORMAT DestFormat,[Out] ID3D10Blob** ppDestBuf,[In] unsigned int Flags)</unmanaged>\t\n            <unmanaged-short>D3DX11SaveTextureToMemory</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.D3DX11.ComputeNormalMap(SharpDX.Direct3D11.DeviceContext,SharpDX.Direct3D11.Texture2D,SharpDX.Direct3D11.NormalMapFlags,SharpDX.Direct3D11.Channel,System.Single,SharpDX.Direct3D11.Texture2D)\">\n            <summary>\t\n            <p>Converts a height map into a normal map. The (x,y,z) components of each normal are mapped to the (r,g,b) channels of the output texture.</p>\t\n            </summary>\t\n            <param name=\"contextRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D11.DeviceContext\"/></strong> interface, representing the source height-map texture.</p> </dd></param>\t\n            <param name=\"srcTextureRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D11.Texture2D\"/></strong> interface, representing the source height-map texture.</p> </dd></param>\t\n            <param name=\"flags\"><dd>  <p>One or more <see cref=\"!:SharpDX.Direct3D9.NormalMapFlags\"/> flags that control generation of normal maps.</p> </dd></param>\t\n            <param name=\"channel\"><dd>  <p>One <see cref=\"!:SharpDX.Direct3D9.Channel\"/> flag specifying the source of height information.</p> </dd></param>\t\n            <param name=\"amplitude\"><dd>  <p>Constant value multiplier that increases (or decreases) the values in the normal map. Higher values usually make bumps more visible, lower values usually make bumps less visible.</p> </dd></param>\t\n            <param name=\"destTextureRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D11.Texture2D\"/></strong> interface, representing the destination texture.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"!:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be the following value: <see cref=\"!:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>This method computes the normal by using the central difference with a kernel size of 3x3. RGB channels in the destination contain biased (x,y,z) components of the normal. The central differencing denominator is hardcoded to 2.0.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11ComputeNormalMap']/*\"/>\t\n            <msdn-id>ff476264</msdn-id>\t\n            <unmanaged>HRESULT D3DX11ComputeNormalMap([In] ID3D11DeviceContext* pContext,[In] ID3D11Texture2D* pSrcTexture,[In] D3DX11_NORMALMAP_FLAG Flags,[In] D3DX11_CHANNEL_FLAG Channel,[In] float Amplitude,[In] ID3D11Texture2D* pDestTexture)</unmanaged>\t\n            <unmanaged-short>D3DX11ComputeNormalMap</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.D3DX11.GetImageInfoFromResource(System.IntPtr,System.String,System.IntPtr,SharpDX.Direct3D11.ImageInformation@,SharpDX.Result@)\">\n            <summary>\t\n            <p>Retrieves information about a given image in a resource.</p>\t\n            </summary>\t\n            <param name=\"hSrcModule\"><dd>  <p>Module where the resource is loaded. Set this parameter to <strong><c>null</c></strong> to specify the module associated with the image that the operating system used to create the current process.</p> </dd></param>\t\n            <param name=\"srcResourceRef\"><dd>  <p>Pointer to a string that specifies the filename. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the data type resolves to LPCSTR. See Remarks.</p> </dd></param>\t\n            <param name=\"pumpRef\"><dd>  <p>Optional thread pump that can be used to load the info asynchronously. Can be <strong><c>null</c></strong>. See <strong><see cref=\"T:System.IntPtr\"/> Interface</strong>.</p> </dd></param>\t\n            <param name=\"srcInfoRef\"><dd>  <p>Pointer to a <see cref=\"T:SharpDX.Direct3D11.ImageInformation\"/> structure to be filled with the description of the data in the source file.</p> </dd></param>\t\n            <param name=\"hResultRef\"><dd>  <p>A reference to the return value. May be <strong><c>null</c></strong>. If <em>pPump</em> is not <strong><c>null</c></strong>, then <em>pHResult</em> must be a valid memory location until the asynchronous execution completes.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"!:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be the following: <see cref=\"!:SharpDX.Direct3D9.ResultCode.InvalidCall\"/></p></returns>\t\n            <remarks>\t\n            <p>The compiler setting also determines the function version. If Unicode is defined, the function call resolves to <strong><see cref=\"M:SharpDX.Direct3D11.D3DX11.GetImageInfoFromResource(System.IntPtr,System.String,System.IntPtr,SharpDX.Direct3D11.ImageInformation@,SharpDX.Result@)\"/></strong>. Otherwise, the function call resolves to <strong>D3DX11GetImageInfoFromResourceA</strong> because ANSI strings are being used.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11GetImageInfoFromResourceW']/*\"/>\t\n            <msdn-id>ff476293</msdn-id>\t\n            <unmanaged>HRESULT D3DX11GetImageInfoFromResourceW([In] HINSTANCE hSrcModule,[In] const wchar_t* pSrcResource,[In] ID3DX11ThreadPump* pPump,[In] D3DX11_IMAGE_INFO* pSrcInfo,[Out] HRESULT* pHResult)</unmanaged>\t\n            <unmanaged-short>D3DX11GetImageInfoFromResourceW</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.D3DX11.CreateShaderResourceViewFromFile(SharpDX.Direct3D11.Device,System.String,System.Nullable{SharpDX.Direct3D11.ImageLoadInformation},System.IntPtr,SharpDX.Direct3D11.ShaderResourceView@,SharpDX.Result@)\">\n            <summary>\t\n            <p>Create a shader-resource view from a file.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\"><dd>  <p>A reference to the device (see <strong><see cref=\"T:SharpDX.Direct3D11.Device\"/></strong>) that will use the resource.</p> </dd></param>\t\n            <param name=\"srcFileRef\"><dd>  <p>Name of the file that contains the shader-resource view. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the data type resolves to LPCSTR.</p> </dd></param>\t\n            <param name=\"loadInfoRef\"><dd>  <p>Optional. Identifies the characteristics of a texture (see <strong><see cref=\"T:SharpDX.Direct3D11.ImageLoadInformation\"/></strong>) when the data processor is created; set this to <strong><c>null</c></strong> to read the characteristics of a texture when the texture is loaded.</p> </dd></param>\t\n            <param name=\"pumpRef\"><dd>  <p>Pointer to a thread-pump interface (see <strong><see cref=\"T:System.IntPtr\"/> Interface</strong>). If <strong><c>null</c></strong> is specified, this function will behave synchronously and will not return until it is finished.</p> </dd></param>\t\n            <param name=\"shaderResourceViewOut\"><dd>  <p>Address of a reference to the shader-resource view (see <strong><see cref=\"T:SharpDX.Direct3D11.ShaderResourceView\"/></strong>).</p> </dd></param>\t\n            <param name=\"hResultRef\"><dd>  <p>A reference to the return value. May be <strong><c>null</c></strong>. If <em>pPump</em> is not <strong><c>null</c></strong>, then <em>pHResult</em> must be a valid memory location until the asynchronous execution completes.</p> </dd></param>\t\n            <returns><p>The return value is one of the values listed in Direct3D 11 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11CreateShaderResourceViewFromFileW']/*\"/>\t\n            <msdn-id>ff476283</msdn-id>\t\n            <unmanaged>HRESULT D3DX11CreateShaderResourceViewFromFileW([In] ID3D11Device* pDevice,[In] const wchar_t* pSrcFile,[In, Optional] D3DX11_IMAGE_LOAD_INFO* pLoadInfo,[In] ID3DX11ThreadPump* pPump,[In] ID3D11ShaderResourceView** ppShaderResourceView,[Out] HRESULT* pHResult)</unmanaged>\t\n            <unmanaged-short>D3DX11CreateShaderResourceViewFromFileW</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.D3DX11.CreateTextureFromFile(SharpDX.Direct3D11.Device,System.String,System.Nullable{SharpDX.Direct3D11.ImageLoadInformation},System.IntPtr,System.IntPtr@,SharpDX.Result@)\">\n            <summary>\t\n            <p>Create a texture resource from a file.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\"><dd>  <p>A reference to the device (see <strong><see cref=\"T:SharpDX.Direct3D11.Device\"/></strong>) that will use the resource.</p> </dd></param>\t\n            <param name=\"srcFileRef\"><dd>  <p>The name of the file containing the resource. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the data type resolves to LPCSTR.</p> </dd></param>\t\n            <param name=\"loadInfoRef\"><dd>  <p>Optional. Identifies the characteristics of a texture (see <strong><see cref=\"T:SharpDX.Direct3D11.ImageLoadInformation\"/></strong>) when the data processor is created; set this to <strong><c>null</c></strong> to read the characteristics of a texture when the texture is loaded.</p> </dd></param>\t\n            <param name=\"pumpRef\"><dd>  <p>A reference to a thread pump interface (see <strong><see cref=\"T:System.IntPtr\"/> Interface</strong>). If <strong><c>null</c></strong> is specified, this function will behave synchronously and will not return until it is finished.</p> </dd></param>\t\n            <param name=\"textureOut\"><dd>  <p>The address of a reference to the texture resource (see <strong><see cref=\"T:SharpDX.Direct3D11.Resource\"/></strong>).</p> </dd></param>\t\n            <param name=\"hResultRef\"><dd>  <p>A reference to the return value. May be <strong><c>null</c></strong>. If <em>pPump</em> is not <strong><c>null</c></strong>, then <em>pHResult</em> must be a valid memory location until the asynchronous execution completes.</p> </dd></param>\t\n            <returns><p>The return value is one of the values listed in Direct3D 11 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11CreateTextureFromFileW']/*\"/>\t\n            <msdn-id>ff476286</msdn-id>\t\n            <unmanaged>HRESULT D3DX11CreateTextureFromFileW([In] ID3D11Device* pDevice,[In] const wchar_t* pSrcFile,[In, Optional] D3DX11_IMAGE_LOAD_INFO* pLoadInfo,[In] ID3DX11ThreadPump* pPump,[Out] void** ppTexture,[Out] HRESULT* pHResult)</unmanaged>\t\n            <unmanaged-short>D3DX11CreateTextureFromFileW</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.D3DX11.FilterTexture(SharpDX.Direct3D11.DeviceContext,SharpDX.Direct3D11.Resource,System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Generates mipmap chain using a particular texture filter.</p>\t\n            </summary>\t\n            <param name=\"contextRef\"><dd>  <p>A reference to an <strong><see cref=\"T:SharpDX.Direct3D11.DeviceContext\"/></strong> object.</p> </dd></param>\t\n            <param name=\"textureRef\"><dd>  <p>The texture object to be filtered. See <strong><see cref=\"T:SharpDX.Direct3D11.Resource\"/></strong>.</p> </dd></param>\t\n            <param name=\"srcLevel\"><dd>  <p>The mipmap level whose data is used to generate the rest of the mipmap chain.</p> </dd></param>\t\n            <param name=\"mipFilter\"><dd>  <p>Flags controlling how each miplevel is filtered (or D3DX11_DEFAULT for <see cref=\"F:SharpDX.Direct3D11.FilterFlags.Linear\"/>). See <strong><see cref=\"T:SharpDX.Direct3D11.FilterFlags\"/></strong>.</p> </dd></param>\t\n            <returns><p>The return value is one of the values listed in Direct3D 11 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11FilterTexture']/*\"/>\t\n            <msdn-id>ff476290</msdn-id>\t\n            <unmanaged>HRESULT D3DX11FilterTexture([In] ID3D11DeviceContext* pContext,[In] ID3D11Resource* pTexture,[In] unsigned int SrcLevel,[In] unsigned int MipFilter)</unmanaged>\t\n            <unmanaged-short>D3DX11FilterTexture</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.D3DX11.GetImageInfoFromFile(System.String,System.IntPtr,SharpDX.Direct3D11.ImageInformation@,SharpDX.Result@)\">\n            <summary>\t\n            <p>Retrieves information about a given image file.</p>\t\n            </summary>\t\n            <param name=\"srcFileRef\"><dd>  <p>File name of image to retrieve information about. If UNICODE or _UNICODE are defined, this parameter type is LPCWSTR, otherwise, the type is LPCSTR.</p> </dd></param>\t\n            <param name=\"pumpRef\"><dd>  <p>Optional thread pump that can be used to load the info asynchronously. Can be <strong><c>null</c></strong>. See <strong><see cref=\"T:System.IntPtr\"/> Interface</strong>.</p> </dd></param>\t\n            <param name=\"srcInfoRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D11.ImageInformation\"/></strong> to be filled with the description of the data in the source file.</p> </dd></param>\t\n            <param name=\"hResultRef\"><dd>  <p>A reference to the return value. May be <strong><c>null</c></strong>. If <em>pPump</em> is not <strong><c>null</c></strong>, then <em>pHResult</em> must be a valid memory location until the asynchronous execution completes.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"!:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be the following: <see cref=\"!:SharpDX.Direct3D9.ResultCode.InvalidCall\"/></p></returns>\t\n            <remarks>\t\n            <p>This function supports both Unicode and ANSI strings.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11GetImageInfoFromFileW']/*\"/>\t\n            <msdn-id>ff476291</msdn-id>\t\n            <unmanaged>HRESULT D3DX11GetImageInfoFromFileW([In] const wchar_t* pSrcFile,[In] ID3DX11ThreadPump* pPump,[In] D3DX11_IMAGE_INFO* pSrcInfo,[Out] HRESULT* pHResult)</unmanaged>\t\n            <unmanaged-short>D3DX11GetImageInfoFromFileW</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.D3DX11.CreateShaderResourceViewFromResource(SharpDX.Direct3D11.Device,System.IntPtr,System.String,System.Nullable{SharpDX.Direct3D11.ImageLoadInformation},System.IntPtr,SharpDX.Direct3D11.ShaderResourceView@,SharpDX.Result@)\">\n            <summary>\t\n            <p>Create a shader-resource view from a resource.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\"><dd>  <p>A reference to the device (see <strong><see cref=\"T:SharpDX.Direct3D11.Device\"/></strong>) that will use the resource.</p> </dd></param>\t\n            <param name=\"hSrcModule\"><dd>  <p>Handle to the resource module containing the shader-resource view. HMODULE can be obtained with GetModuleHandle Function.</p> </dd></param>\t\n            <param name=\"srcResourceRef\"><dd>  <p>Name of the shader resource view in hSrcModule. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the data type resolves to LPCSTR.</p> </dd></param>\t\n            <param name=\"loadInfoRef\"><dd>  <p>Optional. Identifies the characteristics of a texture (see <strong><see cref=\"T:SharpDX.Direct3D11.ImageLoadInformation\"/></strong>) when the data processor is created; set this to <strong><c>null</c></strong> to read the characteristics of a texture when the texture is loaded.</p> </dd></param>\t\n            <param name=\"pumpRef\"><dd>  <p>A reference to a thread pump interface (see <strong><see cref=\"T:System.IntPtr\"/> Interface</strong>). If <strong><c>null</c></strong> is specified, this function will behave synchronously and will not return until it is finished.</p> </dd></param>\t\n            <param name=\"shaderResourceViewOut\"><dd>  <p>Address of a reference to the shader-resource view (see <strong><see cref=\"T:SharpDX.Direct3D11.ShaderResourceView\"/></strong>).</p> </dd></param>\t\n            <param name=\"hResultRef\"><dd>  <p>A reference to the return value. May be <strong><c>null</c></strong>. If <em>pPump</em> is not <strong><c>null</c></strong>, then <em>pHResult</em> must be a valid memory location until the asynchronous execution completes.</p> </dd></param>\t\n            <returns><p>The return value is one of the values listed in Direct3D 11 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11CreateShaderResourceViewFromResourceW']/*\"/>\t\n            <msdn-id>ff476285</msdn-id>\t\n            <unmanaged>HRESULT D3DX11CreateShaderResourceViewFromResourceW([In] ID3D11Device* pDevice,[In] HINSTANCE hSrcModule,[In] const wchar_t* pSrcResource,[In, Optional] D3DX11_IMAGE_LOAD_INFO* pLoadInfo,[In] ID3DX11ThreadPump* pPump,[In] ID3D11ShaderResourceView** ppShaderResourceView,[Out] HRESULT* pHResult)</unmanaged>\t\n            <unmanaged-short>D3DX11CreateShaderResourceViewFromResourceW</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.D3DX11.LoadTextureFromTexture(SharpDX.Direct3D11.DeviceContext,SharpDX.Direct3D11.Resource,SharpDX.Direct3D11.TextureLoadInformation,SharpDX.Direct3D11.Resource)\">\n            <summary>\t\n            <p>Load a texture from a texture.</p>\t\n            </summary>\t\n            <param name=\"contextRef\"><dd>  <p>A reference to an <strong><see cref=\"T:SharpDX.Direct3D11.DeviceContext\"/></strong> object.</p> </dd></param>\t\n            <param name=\"srcTextureRef\"><dd>  <p>Pointer to the source texture. See <strong><see cref=\"T:SharpDX.Direct3D11.Resource\"/></strong>.</p> </dd></param>\t\n            <param name=\"loadInfoRef\"><dd>  <p>Pointer to texture loading parameters. See <strong><see cref=\"T:SharpDX.Direct3D11.TextureLoadInformation\"/></strong>.</p> </dd></param>\t\n            <param name=\"dstTextureRef\"><dd>  <p>Pointer to the destination texture. See <strong><see cref=\"T:SharpDX.Direct3D11.Resource\"/></strong>.</p> </dd></param>\t\n            <returns><p>The return value is one of the values listed in Direct3D 11 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11LoadTextureFromTexture']/*\"/>\t\n            <msdn-id>ff476294</msdn-id>\t\n            <unmanaged>HRESULT D3DX11LoadTextureFromTexture([In] ID3D11DeviceContext* pContext,[In] ID3D11Resource* pSrcTexture,[In] D3DX11_TEXTURE_LOAD_INFO* pLoadInfo,[In] ID3D11Resource* pDstTexture)</unmanaged>\t\n            <unmanaged-short>D3DX11LoadTextureFromTexture</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.D3DX11.GetImageInfoFromMemory(System.IntPtr,SharpDX.PointerSize,System.IntPtr,SharpDX.Direct3D11.ImageInformation@,SharpDX.Result@)\">\n            <summary>\t\n            <p>Get information about an image already loaded into memory.</p>\t\n            </summary>\t\n            <param name=\"srcDataRef\"><dd>  <p>Pointer to the image in memory.</p> </dd></param>\t\n            <param name=\"srcDataSize\"><dd>  <p>Size of the image in memory, in bytes.</p> </dd></param>\t\n            <param name=\"pumpRef\"><dd>  <p>Optional thread pump that can be used to load the info asynchronously. Can be <strong><c>null</c></strong>. See <strong><see cref=\"T:System.IntPtr\"/> Interface</strong>.</p> </dd></param>\t\n            <param name=\"srcInfoRef\"><dd>  <p>Information about the image in memory.</p> </dd></param>\t\n            <param name=\"hResultRef\"><dd>  <p>A reference to the return value. May be <strong><c>null</c></strong>. If <em>pPump</em> is not <strong><c>null</c></strong>, then <em>pHResult</em> must be a valid memory location until the asynchronous execution completes.</p> </dd></param>\t\n            <returns><p>The return value is one of the values listed in Direct3D 11 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11GetImageInfoFromMemory']/*\"/>\t\n            <msdn-id>ff476292</msdn-id>\t\n            <unmanaged>HRESULT D3DX11GetImageInfoFromMemory([In] const void* pSrcData,[In] SIZE_T SrcDataSize,[In] ID3DX11ThreadPump* pPump,[In] D3DX11_IMAGE_INFO* pSrcInfo,[Out] HRESULT* pHResult)</unmanaged>\t\n            <unmanaged-short>D3DX11GetImageInfoFromMemory</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.D3DX11.CreateTextureFromMemory(SharpDX.Direct3D11.Device,System.IntPtr,SharpDX.PointerSize,System.Nullable{SharpDX.Direct3D11.ImageLoadInformation},System.IntPtr,System.IntPtr@,SharpDX.Result@)\">\n            <summary>\t\n            <p>Create a texture resource from a file residing in system memory.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\"><dd>  <p>A reference to the device (see <strong><see cref=\"T:SharpDX.Direct3D11.Device\"/></strong>) that will use the resource.</p> </dd></param>\t\n            <param name=\"srcDataRef\"><dd>  <p>Pointer to the resource in system memory.</p> </dd></param>\t\n            <param name=\"srcDataSize\"><dd>  <p>Size of the resource in system memory.</p> </dd></param>\t\n            <param name=\"loadInfoRef\"><dd>  <p>Optional. Identifies the characteristics of a texture (see <strong><see cref=\"T:SharpDX.Direct3D11.ImageLoadInformation\"/></strong>) when the data processor is created; set this to <strong><c>null</c></strong> to read the characteristics of a texture when the texture is loaded.</p> </dd></param>\t\n            <param name=\"pumpRef\"><dd>  <p>A reference to a thread pump interface (see <strong><see cref=\"T:System.IntPtr\"/> Interface</strong>). If <strong><c>null</c></strong> is specified, this function will behave synchronously and will not return until it is finished.</p> </dd></param>\t\n            <param name=\"textureOut\"><dd>  <p>Address of a reference to the created resource. See <strong><see cref=\"T:SharpDX.Direct3D11.Resource\"/></strong>.</p> </dd></param>\t\n            <param name=\"hResultRef\"><dd>  <p>A reference to the return value. May be <strong><c>null</c></strong>. If <em>pPump</em> is not <strong><c>null</c></strong>, then <em>pHResult</em> must be a valid memory location until the asynchronous execution completes.</p> </dd></param>\t\n            <returns><p>The return value is one of the values listed in Direct3D 11 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11CreateTextureFromMemory']/*\"/>\t\n            <msdn-id>ff476287</msdn-id>\t\n            <unmanaged>HRESULT D3DX11CreateTextureFromMemory([In] ID3D11Device* pDevice,[In] const void* pSrcData,[In] SIZE_T SrcDataSize,[In, Optional] D3DX11_IMAGE_LOAD_INFO* pLoadInfo,[In] ID3DX11ThreadPump* pPump,[Out] void** ppTexture,[Out] HRESULT* pHResult)</unmanaged>\t\n            <unmanaged-short>D3DX11CreateTextureFromMemory</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.D3DX11.SaveTextureToFile(SharpDX.Direct3D11.DeviceContext,SharpDX.Direct3D11.Resource,SharpDX.Direct3D11.ImageFileFormat,System.String)\">\n            <summary>\t\n            <p>Save a texture to a file.</p>\t\n            </summary>\t\n            <param name=\"contextRef\"><dd>  <p>A reference to an <strong><see cref=\"T:SharpDX.Direct3D11.DeviceContext\"/></strong> object.</p> </dd></param>\t\n            <param name=\"srcTextureRef\"><dd>  <p>Pointer to the texture to be saved. See <strong><see cref=\"T:SharpDX.Direct3D11.Resource\"/></strong>.</p> </dd></param>\t\n            <param name=\"destFormat\"><dd>  <p>The format the texture will be saved as (see <strong><see cref=\"T:SharpDX.Direct3D11.ImageFileFormat\"/></strong>). <see cref=\"F:SharpDX.Direct3D11.ImageFileFormat.Dds\"/> is the preferred format since it is the only option that supports all the formats in <strong><see cref=\"T:SharpDX.DXGI.Format\"/></strong>.</p> </dd></param>\t\n            <param name=\"destFileRef\"><dd>  <p>Name of the destination output file where the texture will be saved.  If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the data type resolves to LPCSTR.</p> </dd></param>\t\n            <returns><p>The return value is one of the values listed in Direct3D 11 Return Codes; use the return value to see if the <em>DestFormat</em> is supported.</p></returns>\t\n            <remarks>\t\n            <p><strong><see cref=\"M:SharpDX.Direct3D11.D3DX11.SaveTextureToFile(SharpDX.Direct3D11.DeviceContext,SharpDX.Direct3D11.Resource,SharpDX.Direct3D11.ImageFileFormat,System.String)\"/></strong> writes out the extra <strong>DDS_HEADER_DXT10</strong> structure for the input texture only if necessary (for example, because the input texture is in standard RGB (sRGB) format). If <strong><see cref=\"M:SharpDX.Direct3D11.D3DX11.SaveTextureToFile(SharpDX.Direct3D11.DeviceContext,SharpDX.Direct3D11.Resource,SharpDX.Direct3D11.ImageFileFormat,System.String)\"/></strong> writes out the <strong>DDS_HEADER_DXT10</strong> structure, it sets the <strong>dwFourCC</strong> member of the <strong>DDS_PIXELFORMAT</strong> structure for the texture to <strong>DX10</strong> to indicate the prescense of the <strong>DDS_HEADER_DXT10</strong> extended header.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11SaveTextureToFileW']/*\"/>\t\n            <msdn-id>ff476298</msdn-id>\t\n            <unmanaged>HRESULT D3DX11SaveTextureToFileW([In] ID3D11DeviceContext* pContext,[In] ID3D11Resource* pSrcTexture,[In] D3DX11_IMAGE_FILE_FORMAT DestFormat,[In] const wchar_t* pDestFile)</unmanaged>\t\n            <unmanaged-short>D3DX11SaveTextureToFileW</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.ResultCode\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.Direct3D11.ResultCode']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ResultCode.TooManyUniqueViewObjects\">\n            <summary>Constant TooManyUniqueViewObjects.</summary>\n            <unmanaged>D3D11_ERROR_TOO_MANY_UNIQUE_VIEW_OBJECTS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ResultCode.DeferredContextMapWithoutInitialDiscard\">\n            <summary>Constant DeferredContextMapWithoutInitialDiscard.</summary>\n            <unmanaged>D3D11_ERROR_DEFERRED_CONTEXT_MAP_WITHOUT_INITIAL_DISCARD</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ResultCode.TooManyUniqueStateObjects\">\n            <summary>Constant TooManyUniqueStateObjects.</summary>\n            <unmanaged>D3D11_ERROR_TOO_MANY_UNIQUE_STATE_OBJECTS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ResultCode.FileNotFound\">\n            <summary>Constant FileNotFound.</summary>\n            <unmanaged>D3D11_ERROR_FILE_NOT_FOUND</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ResultCode.CannotModifyIndexBuffer\">\n            <summary>Constant CannotModifyIndexBuffer.</summary>\n            <unmanaged>D3DX11_ERR_CANNOT_MODIFY_INDEX_BUFFER</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ResultCode.CannotAttrSort\">\n            <summary>Constant CannotAttrSort.</summary>\n            <unmanaged>D3DX11_ERR_CANNOT_ATTR_SORT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ResultCode.LoadedMeshHasNoData\">\n            <summary>Constant LoadedMeshHasNoData.</summary>\n            <unmanaged>D3DX11_ERR_LOADED_MESH_HAS_NO_DATA</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ResultCode.CannotRemoveLastItem\">\n            <summary>Constant CannotRemoveLastItem.</summary>\n            <unmanaged>D3DX11_ERR_CANNOT_REMOVE_LAST_ITEM</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ResultCode.DuplicateNamedFragment\">\n            <summary>Constant DuplicateNamedFragment.</summary>\n            <unmanaged>D3DX11_ERR_DUPLICATE_NAMED_FRAGMENT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ResultCode.InvalidMesh\">\n            <summary>Constant InvalidMesh.</summary>\n            <unmanaged>D3DX11_ERR_INVALID_MESH</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ResultCode.InvalidData\">\n            <summary>Constant InvalidData.</summary>\n            <unmanaged>D3DX11_ERR_INVALID_DATA</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ResultCode.SkinningNotSupported\">\n            <summary>Constant SkinningNotSupported.</summary>\n            <unmanaged>D3DX11_ERR_SKINNING_NOT_SUPPORTED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ResultCode.TooManyInfluences\">\n            <summary>Constant TooManyInfluences.</summary>\n            <unmanaged>D3DX11_ERR_TOO_MANY_INFLUENCES</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.CommandList\">\n            <summary>\t\n            <p>The <strong><see cref=\"T:SharpDX.Direct3D11.CommandList\"/></strong> interface encapsulates a list of graphics commands for play back.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>There is no explicit creation method, simply declare an <strong><see cref=\"T:SharpDX.Direct3D11.CommandList\"/></strong> interface, then call <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.FinishCommandListInternal(SharpDX.Bool,SharpDX.Direct3D11.CommandList@)\"/></strong> to record commands or <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.ExecuteCommandList(SharpDX.Direct3D11.CommandList,SharpDX.Bool)\"/></strong> to play back commands.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11CommandList']/*\"/>\t\n            <msdn-id>ff476361</msdn-id>\t\n            <unmanaged>ID3D11CommandList</unmanaged>\t\n            <unmanaged-short>ID3D11CommandList</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.CommandList.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D11.CommandList\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.CommandList.op_Explicit(System.IntPtr)~SharpDX.Direct3D11.CommandList\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D11.CommandList\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.CommandList.GetContextFlags\">\n            <summary>\t\n            <p>Gets the initialization flags associated with the deferred context that created the command list.</p>\t\n            </summary>\t\n            <returns><p>The context flag is reserved for future use and is always 0.</p></returns>\t\n            <remarks>\t\n            <p>The GetContextFlags method gets the flags that were supplied to the <em>ContextFlags</em> parameter of <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateDeferredContext(System.Int32,SharpDX.Direct3D11.DeviceContext)\"/></strong>; however, the context flag is reserved for future use.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11CommandList::GetContextFlags']/*\"/>\t\n            <msdn-id>ff476362</msdn-id>\t\n            <unmanaged>unsigned int ID3D11CommandList::GetContextFlags()</unmanaged>\t\n            <unmanaged-short>ID3D11CommandList::GetContextFlags</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.CommandList.ContextFlags\">\n            <summary>\t\n            <p>Gets the initialization flags associated with the deferred context that created the command list.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The GetContextFlags method gets the flags that were supplied to the <em>ContextFlags</em> parameter of <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateDeferredContext(System.Int32,SharpDX.Direct3D11.DeviceContext)\"/></strong>; however, the context flag is reserved for future use.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11CommandList::GetContextFlags']/*\"/>\t\n            <msdn-id>ff476362</msdn-id>\t\n            <unmanaged>GetContextFlags</unmanaged>\t\n            <unmanaged-short>GetContextFlags</unmanaged-short>\t\n            <unmanaged>unsigned int ID3D11CommandList::GetContextFlags()</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.DomainShaderStage\">\n            <summary>\t\n            <p>The <strong><see cref=\"T:SharpDX.Direct3D11.DeviceContext\"/></strong> interface represents a device context which generates rendering commands.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext']/*\"/>\t\n            <msdn-id>ff476385</msdn-id>\t\n            <unmanaged>ID3D11DeviceContext</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DomainShaderStage.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D11.DomainShaderStage\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DomainShaderStage.op_Explicit(System.IntPtr)~SharpDX.Direct3D11.DomainShaderStage\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D11.DomainShaderStage\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DomainShaderStage.SetShaderResources(System.Int32,System.Int32,System.IntPtr)\">\n            <summary>\t\n            <p>Bind an array of shader resources to the domain-shader stage.</p>\t\n            </summary>\t\n            <param name=\"startSlot\"><dd>  <p>Index into the device's zero-based array to begin setting shader resources to (ranges from 0 to <see cref=\"F:SharpDX.Direct3D11.CommonShaderStage.InputResourceSlotCount\"/> - 1).</p> </dd></param>\t\n            <param name=\"numViews\"><dd>  <p>Number of shader resources to set. Up to a maximum of 128 slots are available for shader resources(ranges from 0 to <see cref=\"F:SharpDX.Direct3D11.CommonShaderStage.InputResourceSlotCount\"/> - StartSlot).</p> </dd></param>\t\n            <param name=\"shaderResourceViewsOut\"><dd>  <p>Array of <strong>shader resource view</strong> interfaces to set to the device.</p> </dd></param>\t\n            <remarks>\t\n            <p>If an overlapping resource view is already bound to an output slot, such as a render target, then the method will fill the destination shader resource slot with <strong><c>null</c></strong>.</p><p>For information about creating shader-resource views, see <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateShaderResourceView(SharpDX.Direct3D11.Resource,System.Nullable{SharpDX.Direct3D11.ShaderResourceViewDescription},SharpDX.Direct3D11.ShaderResourceView)\"/></strong>.</p><p> The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::DSSetShaderResources']/*\"/>\t\n            <msdn-id>ff476421</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::DSSetShaderResources([In] unsigned int StartSlot,[In] unsigned int NumViews,[In, Buffer] const void** ppShaderResourceViews)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::DSSetShaderResources</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DomainShaderStage.SetShader(SharpDX.Direct3D11.DomainShader,SharpDX.Direct3D11.ClassInstance[],System.Int32)\">\n            <summary>\t\n            <p>Set a domain shader to the device.</p>\t\n            </summary>\t\n            <param name=\"domainShaderRef\"><dd>  <p>Pointer to a domain shader (see <strong><see cref=\"T:SharpDX.Direct3D11.DomainShader\"/></strong>). Passing in <strong><c>null</c></strong> disables the shader for this pipeline stage.</p> </dd></param>\t\n            <param name=\"classInstancesOut\"><dd>  <p>A reference to an array of class-instance interfaces (see <strong><see cref=\"T:SharpDX.Direct3D11.ClassInstance\"/></strong>). Each interface used by a shader must have a corresponding class instance or the shader will get disabled. Set ppClassInstances to <strong><c>null</c></strong> if the shader does not use any interfaces.</p> </dd></param>\t\n            <param name=\"numClassInstances\"><dd>  <p>The number of class-instance interfaces in the array.</p> </dd></param>\t\n            <remarks>\t\n            <p> The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. </p><p>The maximum number of instances a shader can have is 256.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::DSSetShader']/*\"/>\t\n            <msdn-id>ff476420</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::DSSetShader([In, Optional] ID3D11DomainShader* pDomainShader,[In, Buffer, Optional] const ID3D11ClassInstance** ppClassInstances,[In] unsigned int NumClassInstances)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::DSSetShader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DomainShaderStage.SetShader(SharpDX.Direct3D11.DomainShader,SharpDX.ComArray{SharpDX.Direct3D11.ClassInstance},System.Int32)\">\n            <summary>\t\n            <p>Set a domain shader to the device.</p>\t\n            </summary>\t\n            <param name=\"domainShaderRef\"><dd>  <p>Pointer to a domain shader (see <strong><see cref=\"T:SharpDX.Direct3D11.DomainShader\"/></strong>). Passing in <strong><c>null</c></strong> disables the shader for this pipeline stage.</p> </dd></param>\t\n            <param name=\"classInstancesOut\"><dd>  <p>A reference to an array of class-instance interfaces (see <strong><see cref=\"T:SharpDX.Direct3D11.ClassInstance\"/></strong>). Each interface used by a shader must have a corresponding class instance or the shader will get disabled. Set ppClassInstances to <strong><c>null</c></strong> if the shader does not use any interfaces.</p> </dd></param>\t\n            <param name=\"numClassInstances\"><dd>  <p>The number of class-instance interfaces in the array.</p> </dd></param>\t\n            <remarks>\t\n            <p> The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. </p><p>The maximum number of instances a shader can have is 256.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::DSSetShader']/*\"/>\t\n            <msdn-id>ff476420</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::DSSetShader([In, Optional] ID3D11DomainShader* pDomainShader,[In, Buffer, Optional] const ID3D11ClassInstance** ppClassInstances,[In] unsigned int NumClassInstances)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::DSSetShader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DomainShaderStage.SetSamplers(System.Int32,System.Int32,System.IntPtr)\">\n            <summary>\t\n            <p>Set an array of sampler states to the domain-shader stage.</p>\t\n            </summary>\t\n            <param name=\"startSlot\"><dd>  <p>Index into the device's zero-based array to begin setting samplers to (ranges from 0 to <see cref=\"F:SharpDX.Direct3D11.CommonShaderStage.SamplerSlotCount\"/> - 1).</p> </dd></param>\t\n            <param name=\"numSamplers\"><dd>  <p>Number of samplers in the array. Each pipeline stage has a total of 16 sampler slots available (ranges from 0 to <see cref=\"F:SharpDX.Direct3D11.CommonShaderStage.SamplerSlotCount\"/> - StartSlot).</p> </dd></param>\t\n            <param name=\"samplersOut\"><dd>  <p>Pointer to an array of sampler-state interfaces (see <strong><see cref=\"T:SharpDX.Direct3D11.SamplerState\"/></strong>). See Remarks.</p> </dd></param>\t\n            <remarks>\t\n            <p>Any sampler may be set to <strong><c>null</c></strong>; this invokes the default state, which is defined to be the following.</p><pre><code> //Default sampler state:\t\n            <see cref=\"T:SharpDX.Direct3D11.SamplerStateDescription\"/> SamplerDesc;\t\n            SamplerDesc.Filter = <see cref=\"F:SharpDX.Direct3D11.Filter.MinMagMipLinear\"/>;\t\n            SamplerDesc.AddressU = <see cref=\"F:SharpDX.Direct3D11.TextureAddressMode.Clamp\"/>;\t\n            SamplerDesc.AddressV = <see cref=\"F:SharpDX.Direct3D11.TextureAddressMode.Clamp\"/>;\t\n            SamplerDesc.AddressW = <see cref=\"F:SharpDX.Direct3D11.TextureAddressMode.Clamp\"/>;\t\n            SamplerDesc.MipLODBias = 0;\t\n            SamplerDesc.MaxAnisotropy = 1;\t\n            SamplerDesc.ComparisonFunc = <see cref=\"F:SharpDX.Direct3D11.Comparison.Never\"/>;\t\n            SamplerDesc.BorderColor[0] = 1.0f;\t\n            SamplerDesc.BorderColor[1] = 1.0f;\t\n            SamplerDesc.BorderColor[2] = 1.0f;\t\n            SamplerDesc.BorderColor[3] = 1.0f;\t\n            SamplerDesc.MinLOD = -FLT_MAX;\t\n            SamplerDesc.MaxLOD = FLT_MAX; </code></pre><p> The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::DSSetSamplers']/*\"/>\t\n            <msdn-id>ff476419</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::DSSetSamplers([In] unsigned int StartSlot,[In] unsigned int NumSamplers,[In, Buffer] const void** ppSamplers)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::DSSetSamplers</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DomainShaderStage.SetConstantBuffers(System.Int32,System.Int32,System.IntPtr)\">\n            <summary>\t\n            <p>Sets the constant buffers used by the domain-shader stage.</p>\t\n            </summary>\t\n            <param name=\"startSlot\"><dd>  <p>Index into the zero-based array to begin setting constant buffers to (ranges from 0 to <strong><see cref=\"F:SharpDX.Direct3D11.CommonShaderStage.ConstantBufferApiSlotCount\"/></strong> - 1).</p> </dd></param>\t\n            <param name=\"numBuffers\"><dd>  <p>Number of buffers to set (ranges from 0 to <strong><see cref=\"F:SharpDX.Direct3D11.CommonShaderStage.ConstantBufferApiSlotCount\"/></strong> - <em>StartSlot</em>).</p> </dd></param>\t\n            <param name=\"constantBuffersOut\"><dd>  <p>Array of constant buffers (see <strong><see cref=\"T:SharpDX.Direct3D11.Buffer\"/></strong>) being given to the device.</p> </dd></param>\t\n            <remarks>\t\n            <p> The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. </p><p>The Direct3D 11.1 runtime, which is available starting with Windows Developer Preview, can bind a larger number of <strong><see cref=\"T:SharpDX.Direct3D11.Buffer\"/></strong> resources to the shader than the maximum constant buffer size that is supported by shaders (4096 constants ? 4*32-bit components each).  When you bind such a large buffer, the shader can access only the first 4096 4*32-bit component constants in the buffer, as if 4096 constants is the full size of the buffer.  </p><p>If the application wants the shader to access other parts of the buffer, it must call the <strong>DSSetConstantBuffers1</strong> method instead. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::DSSetConstantBuffers']/*\"/>\t\n            <msdn-id>ff476418</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::DSSetConstantBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[In, Buffer] const void** ppConstantBuffers)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::DSSetConstantBuffers</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DomainShaderStage.GetShaderResources(System.Int32,System.Int32,SharpDX.Direct3D11.ShaderResourceView[])\">\n            <summary>\t\n            <p>Get the domain-shader resources.</p>\t\n            </summary>\t\n            <param name=\"startSlot\"><dd>  <p>Index into the device's zero-based array to begin getting shader resources from (ranges from 0 to <see cref=\"F:SharpDX.Direct3D11.CommonShaderStage.InputResourceSlotCount\"/> - 1).</p> </dd></param>\t\n            <param name=\"numViews\"><dd>  <p>The number of resources to get from the device. Up to a maximum of 128 slots are available for shader resources (ranges from 0 to <see cref=\"F:SharpDX.Direct3D11.CommonShaderStage.InputResourceSlotCount\"/> - StartSlot).</p> </dd></param>\t\n            <param name=\"shaderResourceViewsOut\"><dd>  <p>Array of <strong>shader resource view</strong> interfaces to be returned by the device.</p> </dd></param>\t\n            <remarks>\t\n            <p>Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::DSGetShaderResources']/*\"/>\t\n            <msdn-id>ff476417</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::DSGetShaderResources([In] unsigned int StartSlot,[In] unsigned int NumViews,[Out, Buffer] ID3D11ShaderResourceView** ppShaderResourceViews)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::DSGetShaderResources</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DomainShaderStage.GetShader(SharpDX.Direct3D11.DomainShader@,SharpDX.Direct3D11.ClassInstance[],System.Int32@)\">\n            <summary>\t\n            <p>Get the domain shader currently set on the device.</p>\t\n            </summary>\t\n            <param name=\"domainShaderOut\"><dd>  <p>Address of a reference to a domain shader (see <strong><see cref=\"T:SharpDX.Direct3D11.DomainShader\"/></strong>) to be returned by the method.</p> </dd></param>\t\n            <param name=\"classInstancesOut\"><dd>  <p>Pointer to an array of class instance interfaces (see <strong><see cref=\"T:SharpDX.Direct3D11.ClassInstance\"/></strong>).</p> </dd></param>\t\n            <param name=\"numClassInstancesRef\"><dd>  <p>The number of class-instance elements in the array.</p> </dd></param>\t\n            <remarks>\t\n            <p>Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::DSGetShader']/*\"/>\t\n            <msdn-id>ff476416</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::DSGetShader([Out] ID3D11DomainShader** ppDomainShader,[Out, Buffer, Optional] ID3D11ClassInstance** ppClassInstances,[InOut] unsigned int* pNumClassInstances)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::DSGetShader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DomainShaderStage.GetSamplers(System.Int32,System.Int32,SharpDX.Direct3D11.SamplerState[])\">\n            <summary>\t\n            <p>Get an array of sampler state interfaces from the domain-shader stage.</p>\t\n            </summary>\t\n            <param name=\"startSlot\"><dd>  <p>Index into a zero-based array to begin getting samplers from (ranges from 0 to <see cref=\"F:SharpDX.Direct3D11.CommonShaderStage.SamplerSlotCount\"/> - 1).</p> </dd></param>\t\n            <param name=\"numSamplers\"><dd>  <p>Number of samplers to get from a device context. Each pipeline stage has a total of 16 sampler slots available (ranges from 0 to <see cref=\"F:SharpDX.Direct3D11.CommonShaderStage.SamplerSlotCount\"/> - StartSlot).</p> </dd></param>\t\n            <param name=\"samplersOut\"><dd>  <p>Pointer to an array of sampler-state interfaces (see <strong><see cref=\"T:SharpDX.Direct3D11.SamplerState\"/></strong>).</p> </dd></param>\t\n            <remarks>\t\n            <p>Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::DSGetSamplers']/*\"/>\t\n            <msdn-id>ff476415</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::DSGetSamplers([In] unsigned int StartSlot,[In] unsigned int NumSamplers,[Out, Buffer] ID3D11SamplerState** ppSamplers)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::DSGetSamplers</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.DomainShaderStage.GetConstantBuffers(System.Int32,System.Int32,SharpDX.Direct3D11.Buffer[])\">\n            <summary>\t\n            <p>Get the constant buffers used by the domain-shader stage.</p>\t\n            </summary>\t\n            <param name=\"startSlot\"><dd>  <p>Index into the device's zero-based array to begin retrieving constant buffers from (ranges from 0 to <see cref=\"F:SharpDX.Direct3D11.CommonShaderStage.ConstantBufferApiSlotCount\"/> - 1).</p> </dd></param>\t\n            <param name=\"numBuffers\"><dd>  <p>Number of buffers to retrieve (ranges from 0 to <see cref=\"F:SharpDX.Direct3D11.CommonShaderStage.ConstantBufferApiSlotCount\"/> - StartSlot).</p> </dd></param>\t\n            <param name=\"constantBuffersOut\"><dd>  <p>Array of constant buffer interface references (see <strong><see cref=\"T:SharpDX.Direct3D11.Buffer\"/></strong>) to be returned by the method.</p> </dd></param>\t\n            <remarks>\t\n            <p>Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::DSGetConstantBuffers']/*\"/>\t\n            <msdn-id>ff476414</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::DSGetConstantBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[Out, Buffer] ID3D11Buffer** ppConstantBuffers)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::DSGetConstantBuffers</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.GeometryShader\">\n            <summary>\t\n            <p>A geometry-shader interface manages an executable program (a geometry shader) that controls the geometry-shader stage.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The geometry-shader interface has no methods; use HLSL to implement your shader functionality. All shaders are implemented from a common set of features referred to as the common-shader core..</p><p>To create a geometry shader interface, call either <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateGeometryShader(System.IntPtr,SharpDX.PointerSize,SharpDX.Direct3D11.ClassLinkage,SharpDX.Direct3D11.GeometryShader)\"/></strong> or <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateGeometryShaderWithStreamOutput(System.IntPtr,SharpDX.PointerSize,SharpDX.Direct3D11.StreamOutputElement[],System.Int32,System.Int32[],System.Int32,System.Int32,SharpDX.Direct3D11.ClassLinkage,SharpDX.Direct3D11.GeometryShader)\"/></strong>. Before using a geometry shader you must bind it to the device by calling <strong><see cref=\"M:SharpDX.Direct3D11.GeometryShaderStage.SetShader(SharpDX.Direct3D11.GeometryShader,SharpDX.Direct3D11.ClassInstance[],System.Int32)\"/></strong>.</p><p>This interface is defined in D3D11.h.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11GeometryShader']/*\"/>\t\n            <msdn-id>ff476536</msdn-id>\t\n            <unmanaged>ID3D11GeometryShader</unmanaged>\t\n            <unmanaged-short>ID3D11GeometryShader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.GeometryShader.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D11.GeometryShader\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.GeometryShader.op_Explicit(System.IntPtr)~SharpDX.Direct3D11.GeometryShader\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D11.GeometryShader\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.GeometryShader.#ctor(SharpDX.Direct3D11.Device,System.Byte[],SharpDX.Direct3D11.ClassLinkage)\">\n            <summary>\n              Initializes a new instance of the <see cref = \"T:SharpDX.Direct3D11.GeometryShader\" /> class.\n            </summary>\n            <param name = \"device\">The device used to create the shader.</param>\n            <param name = \"shaderBytecode\">The compiled shader bytecode.</param>\n            <param name = \"linkage\">A dynamic class linkage interface.</param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.GeometryShader.#ctor(SharpDX.Direct3D11.Device,System.Byte[],SharpDX.Direct3D11.StreamOutputElement[],System.Int32[],System.Int32,SharpDX.Direct3D11.ClassLinkage)\">\n            <summary>\n              Initializes a new instance of the <see cref = \"T:SharpDX.Direct3D11.GeometryShader\" /> class.\n            </summary>\n            <param name = \"device\">The device used to create the shader.</param>\n            <param name = \"shaderBytecode\">The compiled shader bytecode.</param>\n            <param name = \"elements\">An array of <see cref = \"T:SharpDX.Direct3D11.StreamOutputElement\" /> instances describing the layout of the output buffers.</param>\n            <param name = \"bufferedStrides\">An array of buffer strides; each stride is the size of an element for that buffer.</param>\n            <param name = \"rasterizedStream\">The index number of the stream to be sent to the rasterizer stage. Set to NoRasterizedStream if no stream is to be rasterized.</param>\n            <param name = \"linkage\">A dynamic class linkage interface.</param>\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.GeometryShaderStage\">\n            <summary>\t\n            <p>The <strong><see cref=\"T:SharpDX.Direct3D11.DeviceContext\"/></strong> interface represents a device context which generates rendering commands.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext']/*\"/>\t\n            <msdn-id>ff476385</msdn-id>\t\n            <unmanaged>ID3D11DeviceContext</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.GeometryShaderStage.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D11.GeometryShaderStage\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.GeometryShaderStage.op_Explicit(System.IntPtr)~SharpDX.Direct3D11.GeometryShaderStage\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D11.GeometryShaderStage\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.GeometryShaderStage.SetConstantBuffers(System.Int32,System.Int32,System.IntPtr)\">\n            <summary>\t\n            <p>Sets the constant buffers used by the geometry shader pipeline stage.</p>\t\n            </summary>\t\n            <param name=\"startSlot\"><dd>  <p>Index into the device's zero-based array to begin setting constant buffers to (ranges from 0 to <strong><see cref=\"F:SharpDX.Direct3D11.CommonShaderStage.ConstantBufferApiSlotCount\"/></strong> - 1).</p> </dd></param>\t\n            <param name=\"numBuffers\"><dd>  <p>Number of buffers to set (ranges from 0 to <strong><see cref=\"F:SharpDX.Direct3D11.CommonShaderStage.ConstantBufferApiSlotCount\"/></strong> - <em>StartSlot</em>).</p> </dd></param>\t\n            <param name=\"constantBuffersOut\"><dd>  <p>Array of constant buffers (see <strong><see cref=\"T:SharpDX.Direct3D11.Buffer\"/></strong>) being given to the device.</p> </dd></param>\t\n            <remarks>\t\n            <p> The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. </p><p>You can't use the <strong><see cref=\"!:SharpDX.D3DCompiler.ConstantBuffer\"/></strong> interface to get information about what is currently bound to the pipeline in the device context. But you can use <strong><see cref=\"!:SharpDX.D3DCompiler.ConstantBuffer\"/></strong> to get information from a compiled shader. For example, you can use <strong><see cref=\"!:SharpDX.D3DCompiler.ConstantBuffer\"/></strong> and <strong><see cref=\"!:SharpDX.D3DCompiler.ShaderReflectionVariable\"/></strong> to determine the slot in which a geometry shader expects a constant buffer. You can then pass this slot number to <strong>GSSetConstantBuffers</strong> to set the constant buffer. You can call the <strong>D3D11Reflect</strong> function to retrieve the address of a reference to the <strong><see cref=\"!:SharpDX.D3DCompiler.ShaderReflection\"/></strong> interface and then call <strong><see cref=\"!:SharpDX.D3DCompiler.ShaderReflection.GetConstantBuffer\"/></strong> to get a reference to <strong><see cref=\"!:SharpDX.D3DCompiler.ConstantBuffer\"/></strong>.</p><p>The Direct3D 11.1 runtime, which is available starting with Windows Developer Preview, can bind a larger number of <strong><see cref=\"T:SharpDX.Direct3D11.Buffer\"/></strong> resources to the shader than the maximum constant buffer size that is supported by shaders (4096 constants ? 4*32-bit components each).  When you bind such a large buffer, the shader can access only the first 4096 4*32-bit component constants in the buffer, as if 4096 constants is the full size of the buffer.  </p><p>If the application wants the shader to access other parts of the buffer, it must call the <strong>GSSetConstantBuffers1</strong> method instead. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::GSSetConstantBuffers']/*\"/>\t\n            <msdn-id>ff476436</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::GSSetConstantBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[In, Buffer] const void** ppConstantBuffers)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::GSSetConstantBuffers</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.GeometryShaderStage.SetShader(SharpDX.Direct3D11.GeometryShader,SharpDX.Direct3D11.ClassInstance[],System.Int32)\">\n            <summary>\t\n            <p>Set a geometry shader to the device.</p>\t\n            </summary>\t\n            <param name=\"shaderRef\"><dd>  <p>Pointer to a geometry shader (see <strong><see cref=\"T:SharpDX.Direct3D11.GeometryShader\"/></strong>). Passing in <strong><c>null</c></strong> disables the shader for this pipeline stage.</p> </dd></param>\t\n            <param name=\"classInstancesOut\"><dd>  <p>A reference to an array of class-instance interfaces (see <strong><see cref=\"T:SharpDX.Direct3D11.ClassInstance\"/></strong>). Each interface used by a shader must have a corresponding class instance or the shader will get disabled. Set ppClassInstances to <strong><c>null</c></strong> if the shader does not use any interfaces.</p> </dd></param>\t\n            <param name=\"numClassInstances\"><dd>  <p>The number of class-instance interfaces in the array.</p> </dd></param>\t\n            <remarks>\t\n            <p> The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. </p><p>The maximum number of instances a shader can have is 256.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::GSSetShader']/*\"/>\t\n            <msdn-id>ff476438</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::GSSetShader([In, Optional] ID3D11GeometryShader* pShader,[In, Buffer, Optional] const ID3D11ClassInstance** ppClassInstances,[In] unsigned int NumClassInstances)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::GSSetShader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.GeometryShaderStage.SetShader(SharpDX.Direct3D11.GeometryShader,SharpDX.ComArray{SharpDX.Direct3D11.ClassInstance},System.Int32)\">\n            <summary>\t\n            <p>Set a geometry shader to the device.</p>\t\n            </summary>\t\n            <param name=\"shaderRef\"><dd>  <p>Pointer to a geometry shader (see <strong><see cref=\"T:SharpDX.Direct3D11.GeometryShader\"/></strong>). Passing in <strong><c>null</c></strong> disables the shader for this pipeline stage.</p> </dd></param>\t\n            <param name=\"classInstancesOut\"><dd>  <p>A reference to an array of class-instance interfaces (see <strong><see cref=\"T:SharpDX.Direct3D11.ClassInstance\"/></strong>). Each interface used by a shader must have a corresponding class instance or the shader will get disabled. Set ppClassInstances to <strong><c>null</c></strong> if the shader does not use any interfaces.</p> </dd></param>\t\n            <param name=\"numClassInstances\"><dd>  <p>The number of class-instance interfaces in the array.</p> </dd></param>\t\n            <remarks>\t\n            <p> The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. </p><p>The maximum number of instances a shader can have is 256.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::GSSetShader']/*\"/>\t\n            <msdn-id>ff476438</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::GSSetShader([In, Optional] ID3D11GeometryShader* pShader,[In, Buffer, Optional] const ID3D11ClassInstance** ppClassInstances,[In] unsigned int NumClassInstances)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::GSSetShader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.GeometryShaderStage.SetShaderResources(System.Int32,System.Int32,System.IntPtr)\">\n            <summary>\t\n            <p>Bind an array of shader resources to the geometry shader stage.</p>\t\n            </summary>\t\n            <param name=\"startSlot\"><dd>  <p>Index into the device's zero-based array to begin setting shader resources to (ranges from 0 to <see cref=\"F:SharpDX.Direct3D11.CommonShaderStage.InputResourceSlotCount\"/> - 1).</p> </dd></param>\t\n            <param name=\"numViews\"><dd>  <p>Number of shader resources to set. Up to a maximum of 128 slots are available for shader resources(ranges from 0 to <see cref=\"F:SharpDX.Direct3D11.CommonShaderStage.InputResourceSlotCount\"/> - StartSlot).</p> </dd></param>\t\n            <param name=\"shaderResourceViewsOut\"><dd>  <p>Array of <strong>shader resource view</strong> interfaces to set to the device.</p> </dd></param>\t\n            <remarks>\t\n            <p>If an overlapping resource view is already bound to an output slot, such as a render target, then the method will fill the destination shader resource slot with <strong><c>null</c></strong>.</p><p>For information about creating shader-resource views, see <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateShaderResourceView(SharpDX.Direct3D11.Resource,System.Nullable{SharpDX.Direct3D11.ShaderResourceViewDescription},SharpDX.Direct3D11.ShaderResourceView)\"/></strong>.</p><p> The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::GSSetShaderResources']/*\"/>\t\n            <msdn-id>ff476439</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::GSSetShaderResources([In] unsigned int StartSlot,[In] unsigned int NumViews,[In, Buffer] const void** ppShaderResourceViews)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::GSSetShaderResources</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.GeometryShaderStage.SetSamplers(System.Int32,System.Int32,System.IntPtr)\">\n            <summary>\t\n            <p>Set an array of sampler states to the geometry shader pipeline stage.</p>\t\n            </summary>\t\n            <param name=\"startSlot\"><dd>  <p>Index into the device's zero-based array to begin setting samplers to (ranges from 0 to <see cref=\"F:SharpDX.Direct3D11.CommonShaderStage.SamplerSlotCount\"/> - 1).</p> </dd></param>\t\n            <param name=\"numSamplers\"><dd>  <p>Number of samplers in the array. Each pipeline stage has a total of 16 sampler slots available (ranges from 0 to <see cref=\"F:SharpDX.Direct3D11.CommonShaderStage.SamplerSlotCount\"/> - StartSlot).</p> </dd></param>\t\n            <param name=\"samplersOut\"><dd>  <p>Pointer to an array of sampler-state interfaces (see <strong><see cref=\"T:SharpDX.Direct3D11.SamplerState\"/></strong>). See Remarks.</p> </dd></param>\t\n            <remarks>\t\n            <p>Any sampler may be set to <strong><c>null</c></strong>; this invokes the default state, which is defined to be the following.</p><pre><code> //Default sampler state:\t\n            <see cref=\"T:SharpDX.Direct3D11.SamplerStateDescription\"/> SamplerDesc;\t\n            SamplerDesc.Filter = <see cref=\"F:SharpDX.Direct3D11.Filter.MinMagMipLinear\"/>;\t\n            SamplerDesc.AddressU = <see cref=\"F:SharpDX.Direct3D11.TextureAddressMode.Clamp\"/>;\t\n            SamplerDesc.AddressV = <see cref=\"F:SharpDX.Direct3D11.TextureAddressMode.Clamp\"/>;\t\n            SamplerDesc.AddressW = <see cref=\"F:SharpDX.Direct3D11.TextureAddressMode.Clamp\"/>;\t\n            SamplerDesc.MipLODBias = 0;\t\n            SamplerDesc.MaxAnisotropy = 1;\t\n            SamplerDesc.ComparisonFunc = <see cref=\"F:SharpDX.Direct3D11.Comparison.Never\"/>;\t\n            SamplerDesc.BorderColor[0] = 1.0f;\t\n            SamplerDesc.BorderColor[1] = 1.0f;\t\n            SamplerDesc.BorderColor[2] = 1.0f;\t\n            SamplerDesc.BorderColor[3] = 1.0f;\t\n            SamplerDesc.MinLOD = -FLT_MAX;\t\n            SamplerDesc.MaxLOD = FLT_MAX; </code></pre><p> The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::GSSetSamplers']/*\"/>\t\n            <msdn-id>ff476437</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::GSSetSamplers([In] unsigned int StartSlot,[In] unsigned int NumSamplers,[In, Buffer] const void** ppSamplers)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::GSSetSamplers</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.GeometryShaderStage.GetConstantBuffers(System.Int32,System.Int32,SharpDX.Direct3D11.Buffer[])\">\n            <summary>\t\n            <p>Get the constant buffers used by the geometry shader pipeline stage.</p>\t\n            </summary>\t\n            <param name=\"startSlot\"><dd>  <p>Index into the device's zero-based array to begin retrieving constant buffers from (ranges from 0 to <see cref=\"F:SharpDX.Direct3D11.CommonShaderStage.ConstantBufferApiSlotCount\"/> - 1).</p> </dd></param>\t\n            <param name=\"numBuffers\"><dd>  <p>Number of buffers to retrieve (ranges from 0 to <see cref=\"F:SharpDX.Direct3D11.CommonShaderStage.ConstantBufferApiSlotCount\"/> - StartSlot).</p> </dd></param>\t\n            <param name=\"constantBuffersOut\"><dd>  <p>Array of constant buffer interface references (see <strong><see cref=\"T:SharpDX.Direct3D11.Buffer\"/></strong>) to be returned by the method.</p> </dd></param>\t\n            <remarks>\t\n            <p>Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::GSGetConstantBuffers']/*\"/>\t\n            <msdn-id>ff476432</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::GSGetConstantBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[Out, Buffer] ID3D11Buffer** ppConstantBuffers)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::GSGetConstantBuffers</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.GeometryShaderStage.GetShader(SharpDX.Direct3D11.GeometryShader@,SharpDX.Direct3D11.ClassInstance[],System.Int32@)\">\n            <summary>\t\n            <p>Get the geometry shader currently set on the device.</p>\t\n            </summary>\t\n            <param name=\"geometryShaderOut\"><dd>  <p>Address of a reference to a geometry shader (see <strong><see cref=\"T:SharpDX.Direct3D11.GeometryShader\"/></strong>) to be returned by the method.</p> </dd></param>\t\n            <param name=\"classInstancesOut\"><dd>  <p>Pointer to an array of class instance interfaces (see <strong><see cref=\"T:SharpDX.Direct3D11.ClassInstance\"/></strong>).</p> </dd></param>\t\n            <param name=\"numClassInstancesRef\"><dd>  <p>The number of class-instance elements in the array.</p> </dd></param>\t\n            <remarks>\t\n            <p>Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::GSGetShader']/*\"/>\t\n            <msdn-id>ff476434</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::GSGetShader([Out] ID3D11GeometryShader** ppGeometryShader,[Out, Buffer, Optional] ID3D11ClassInstance** ppClassInstances,[InOut] unsigned int* pNumClassInstances)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::GSGetShader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.GeometryShaderStage.GetShaderResources(System.Int32,System.Int32,SharpDX.Direct3D11.ShaderResourceView[])\">\n            <summary>\t\n            <p>Get the geometry shader resources.</p>\t\n            </summary>\t\n            <param name=\"startSlot\"><dd>  <p>Index into the device's zero-based array to begin getting shader resources from (ranges from 0 to <see cref=\"F:SharpDX.Direct3D11.CommonShaderStage.InputResourceSlotCount\"/> - 1).</p> </dd></param>\t\n            <param name=\"numViews\"><dd>  <p>The number of resources to get from the device. Up to a maximum of 128 slots are available for shader resources (ranges from 0 to <see cref=\"F:SharpDX.Direct3D11.CommonShaderStage.InputResourceSlotCount\"/> - StartSlot).</p> </dd></param>\t\n            <param name=\"shaderResourceViewsOut\"><dd>  <p>Array of <strong>shader resource view</strong> interfaces to be returned by the device.</p> </dd></param>\t\n            <remarks>\t\n            <p>Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::GSGetShaderResources']/*\"/>\t\n            <msdn-id>ff476435</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::GSGetShaderResources([In] unsigned int StartSlot,[In] unsigned int NumViews,[Out, Buffer] ID3D11ShaderResourceView** ppShaderResourceViews)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::GSGetShaderResources</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.GeometryShaderStage.GetSamplers(System.Int32,System.Int32,SharpDX.Direct3D11.SamplerState[])\">\n            <summary>\t\n            <p>Get an array of sampler state interfaces from the geometry shader pipeline stage.</p>\t\n            </summary>\t\n            <param name=\"startSlot\"><dd>  <p>Index into a zero-based array to begin getting samplers from (ranges from 0 to <see cref=\"F:SharpDX.Direct3D11.CommonShaderStage.SamplerSlotCount\"/> - 1).</p> </dd></param>\t\n            <param name=\"numSamplers\"><dd>  <p>Number of samplers to get from a device context. Each pipeline stage has a total of 16 sampler slots available (ranges from 0 to <see cref=\"F:SharpDX.Direct3D11.CommonShaderStage.SamplerSlotCount\"/> - StartSlot).</p> </dd></param>\t\n            <param name=\"samplersOut\"><dd>  <p>Pointer to an array of sampler-state interfaces (see <strong><see cref=\"T:SharpDX.Direct3D11.SamplerState\"/></strong>).</p> </dd></param>\t\n            <remarks>\t\n            <p>Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::GSGetSamplers']/*\"/>\t\n            <msdn-id>ff476433</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::GSGetSamplers([In] unsigned int StartSlot,[In] unsigned int NumSamplers,[Out, Buffer] ID3D11SamplerState** ppSamplers)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::GSGetSamplers</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.HullShader\">\n            <summary>\t\n            <p>A hull-shader interface manages an executable program (a hull shader) that controls the hull-shader stage.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The hull-shader interface has no methods; use HLSL to implement your shader functionality. All shaders are implemented from a common set of features referred to as the common-shader core..</p><p>To create a hull-shader interface, call <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateHullShader(System.IntPtr,SharpDX.PointerSize,SharpDX.Direct3D11.ClassLinkage,SharpDX.Direct3D11.HullShader)\"/></strong>. Before using a hull shader you must bind it to the device by calling <strong><see cref=\"M:SharpDX.Direct3D11.HullShaderStage.SetShader(SharpDX.Direct3D11.HullShader,SharpDX.Direct3D11.ClassInstance[],System.Int32)\"/></strong>.</p><p>This interface is defined in D3D11.h.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11HullShader']/*\"/>\t\n            <msdn-id>ff476537</msdn-id>\t\n            <unmanaged>ID3D11HullShader</unmanaged>\t\n            <unmanaged-short>ID3D11HullShader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.HullShader.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D11.HullShader\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.HullShader.op_Explicit(System.IntPtr)~SharpDX.Direct3D11.HullShader\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D11.HullShader\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.HullShader.#ctor(SharpDX.Direct3D11.Device,System.Byte[],SharpDX.Direct3D11.ClassLinkage)\">\n            <summary>\n              Initializes a new instance of the <see cref = \"T:SharpDX.Direct3D11.HullShader\" /> class.\n            </summary>\n            <param name = \"device\">The device used to create the shader.</param>\n            <param name = \"shaderBytecode\">The compiled shader bytecode.</param>\n            <param name = \"linkage\">A dynamic class linkage interface.</param>\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.HullShaderStage\">\n            <summary>\t\n            <p>The <strong><see cref=\"T:SharpDX.Direct3D11.DeviceContext\"/></strong> interface represents a device context which generates rendering commands.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext']/*\"/>\t\n            <msdn-id>ff476385</msdn-id>\t\n            <unmanaged>ID3D11DeviceContext</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.HullShaderStage.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D11.HullShaderStage\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.HullShaderStage.op_Explicit(System.IntPtr)~SharpDX.Direct3D11.HullShaderStage\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D11.HullShaderStage\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.HullShaderStage.SetShaderResources(System.Int32,System.Int32,System.IntPtr)\">\n            <summary>\t\n            <p>Bind an array of shader resources to the hull-shader stage.</p>\t\n            </summary>\t\n            <param name=\"startSlot\">No documentation.</param>\t\n            <param name=\"numViews\">No documentation.</param>\t\n            <param name=\"shaderResourceViewsOut\">No documentation.</param>\t\n            <remarks>\t\n            <p>If an overlapping resource view is already bound to an output slot, such as a render target, then the method will fill the destination shader resource slot with <strong><c>null</c></strong>.</p><p>For information about creating shader-resource views, see <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateShaderResourceView(SharpDX.Direct3D11.Resource,System.Nullable{SharpDX.Direct3D11.ShaderResourceViewDescription},SharpDX.Direct3D11.ShaderResourceView)\"/></strong>.</p><p> The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::HSSetShaderResources']/*\"/>\t\n            <msdn-id>ff476448</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::HSSetShaderResources([In] unsigned int StartSlot,[In] unsigned int NumViews,[In, Buffer] const void** ppShaderResourceViews)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::HSSetShaderResources</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.HullShaderStage.SetShader(SharpDX.Direct3D11.HullShader,SharpDX.Direct3D11.ClassInstance[],System.Int32)\">\n            <summary>\t\n            <p>Set a hull shader to the device.</p>\t\n            </summary>\t\n            <param name=\"hullShaderRef\"><dd>  <p>Pointer to a hull shader (see <strong><see cref=\"T:SharpDX.Direct3D11.HullShader\"/></strong>). Passing in <strong><c>null</c></strong> disables the shader for this pipeline stage.</p> </dd></param>\t\n            <param name=\"classInstancesOut\"><dd>  <p>A reference to an array of class-instance interfaces (see <strong><see cref=\"T:SharpDX.Direct3D11.ClassInstance\"/></strong>). Each interface used by a shader must have a corresponding class instance or the shader will get disabled. Set ppClassInstances to <strong><c>null</c></strong> if the shader does not use any interfaces.</p> </dd></param>\t\n            <param name=\"numClassInstances\"><dd>  <p>The number of class-instance interfaces in the array.</p> </dd></param>\t\n            <remarks>\t\n            <p> The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. </p><p>The maximum number of instances a shader can have is 256.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::HSSetShader']/*\"/>\t\n            <msdn-id>ff476447</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::HSSetShader([In, Optional] ID3D11HullShader* pHullShader,[In, Buffer, Optional] const ID3D11ClassInstance** ppClassInstances,[In] unsigned int NumClassInstances)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::HSSetShader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.HullShaderStage.SetShader(SharpDX.Direct3D11.HullShader,SharpDX.ComArray{SharpDX.Direct3D11.ClassInstance},System.Int32)\">\n            <summary>\t\n            <p>Set a hull shader to the device.</p>\t\n            </summary>\t\n            <param name=\"hullShaderRef\"><dd>  <p>Pointer to a hull shader (see <strong><see cref=\"T:SharpDX.Direct3D11.HullShader\"/></strong>). Passing in <strong><c>null</c></strong> disables the shader for this pipeline stage.</p> </dd></param>\t\n            <param name=\"classInstancesOut\"><dd>  <p>A reference to an array of class-instance interfaces (see <strong><see cref=\"T:SharpDX.Direct3D11.ClassInstance\"/></strong>). Each interface used by a shader must have a corresponding class instance or the shader will get disabled. Set ppClassInstances to <strong><c>null</c></strong> if the shader does not use any interfaces.</p> </dd></param>\t\n            <param name=\"numClassInstances\"><dd>  <p>The number of class-instance interfaces in the array.</p> </dd></param>\t\n            <remarks>\t\n            <p> The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. </p><p>The maximum number of instances a shader can have is 256.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::HSSetShader']/*\"/>\t\n            <msdn-id>ff476447</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::HSSetShader([In, Optional] ID3D11HullShader* pHullShader,[In, Buffer, Optional] const ID3D11ClassInstance** ppClassInstances,[In] unsigned int NumClassInstances)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::HSSetShader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.HullShaderStage.SetSamplers(System.Int32,System.Int32,System.IntPtr)\">\n            <summary>\t\n            <p>Set an array of sampler states to the hull-shader stage.</p>\t\n            </summary>\t\n            <param name=\"startSlot\">No documentation.</param>\t\n            <param name=\"numSamplers\">No documentation.</param>\t\n            <param name=\"samplersOut\">No documentation.</param>\t\n            <remarks>\t\n            <p>Any sampler may be set to <strong><c>null</c></strong>; this invokes the default state, which is defined to be the following.</p><pre><code> //Default sampler state:\t\n            <see cref=\"T:SharpDX.Direct3D11.SamplerStateDescription\"/> SamplerDesc;\t\n            SamplerDesc.Filter = <see cref=\"F:SharpDX.Direct3D11.Filter.MinMagMipLinear\"/>;\t\n            SamplerDesc.AddressU = <see cref=\"F:SharpDX.Direct3D11.TextureAddressMode.Clamp\"/>;\t\n            SamplerDesc.AddressV = <see cref=\"F:SharpDX.Direct3D11.TextureAddressMode.Clamp\"/>;\t\n            SamplerDesc.AddressW = <see cref=\"F:SharpDX.Direct3D11.TextureAddressMode.Clamp\"/>;\t\n            SamplerDesc.MipLODBias = 0;\t\n            SamplerDesc.MaxAnisotropy = 1;\t\n            SamplerDesc.ComparisonFunc = <see cref=\"F:SharpDX.Direct3D11.Comparison.Never\"/>;\t\n            SamplerDesc.BorderColor[0] = 1.0f;\t\n            SamplerDesc.BorderColor[1] = 1.0f;\t\n            SamplerDesc.BorderColor[2] = 1.0f;\t\n            SamplerDesc.BorderColor[3] = 1.0f;\t\n            SamplerDesc.MinLOD = -FLT_MAX;\t\n            SamplerDesc.MaxLOD = FLT_MAX; </code></pre><p> The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::HSSetSamplers']/*\"/>\t\n            <msdn-id>ff476446</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::HSSetSamplers([In] unsigned int StartSlot,[In] unsigned int NumSamplers,[In, Buffer] const void** ppSamplers)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::HSSetSamplers</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.HullShaderStage.SetConstantBuffers(System.Int32,System.Int32,System.IntPtr)\">\n            <summary>\t\n            <p>Set the constant buffers used by the hull-shader stage.</p>\t\n            </summary>\t\n            <param name=\"startSlot\">No documentation.</param>\t\n            <param name=\"numBuffers\">No documentation.</param>\t\n            <param name=\"constantBuffersOut\">No documentation.</param>\t\n            <remarks>\t\n            <p> The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. </p><p>The Direct3D 11.1 runtime, which is available starting with Windows Developer Preview, can bind a larger number of <strong><see cref=\"T:SharpDX.Direct3D11.Buffer\"/></strong> resources to the shader than the maximum constant buffer size that is supported by shaders (4096 constants ? 4*32-bit components each).  When you bind such a large buffer, the shader can access only the first 4096 4*32-bit component constants in the buffer, as if 4096 constants is the full size of the buffer.  </p><p>If the application wants the shader to access other parts of the buffer, it must call the <strong>HSSetConstantBuffers1</strong> method instead. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::HSSetConstantBuffers']/*\"/>\t\n            <msdn-id>ff476445</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::HSSetConstantBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[In, Buffer] const void** ppConstantBuffers)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::HSSetConstantBuffers</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.HullShaderStage.GetShaderResources(System.Int32,System.Int32,SharpDX.Direct3D11.ShaderResourceView[])\">\n            <summary>\t\n            <p>Get the hull-shader resources.</p>\t\n            </summary>\t\n            <param name=\"startSlot\"><dd>  <p>Index into the device's zero-based array to begin getting shader resources from (ranges from 0 to <see cref=\"F:SharpDX.Direct3D11.CommonShaderStage.InputResourceSlotCount\"/> - 1).</p> </dd></param>\t\n            <param name=\"numViews\"><dd>  <p>The number of resources to get from the device. Up to a maximum of 128 slots are available for shader resources (ranges from 0 to <see cref=\"F:SharpDX.Direct3D11.CommonShaderStage.InputResourceSlotCount\"/> - StartSlot).</p> </dd></param>\t\n            <param name=\"shaderResourceViewsOut\"><dd>  <p>Array of <strong>shader resource view</strong> interfaces to be returned by the device.</p> </dd></param>\t\n            <remarks>\t\n            <p>Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::HSGetShaderResources']/*\"/>\t\n            <msdn-id>ff476443</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::HSGetShaderResources([In] unsigned int StartSlot,[In] unsigned int NumViews,[Out, Buffer] ID3D11ShaderResourceView** ppShaderResourceViews)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::HSGetShaderResources</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.HullShaderStage.GetShader(SharpDX.Direct3D11.HullShader@,SharpDX.Direct3D11.ClassInstance[],System.Int32@)\">\n            <summary>\t\n            <p>Get the hull shader currently set on the device.</p>\t\n            </summary>\t\n            <param name=\"hullShaderOut\"><dd>  <p>Address of a reference to a hull shader (see <strong><see cref=\"T:SharpDX.Direct3D11.HullShader\"/></strong>) to be returned by the method.</p> </dd></param>\t\n            <param name=\"classInstancesOut\"><dd>  <p>Pointer to an array of class instance interfaces (see <strong><see cref=\"T:SharpDX.Direct3D11.ClassInstance\"/></strong>).</p> </dd></param>\t\n            <param name=\"numClassInstancesRef\"><dd>  <p>The number of class-instance elements in the array.</p> </dd></param>\t\n            <remarks>\t\n            <p>Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::HSGetShader']/*\"/>\t\n            <msdn-id>ff476442</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::HSGetShader([Out] ID3D11HullShader** ppHullShader,[Out, Buffer, Optional] ID3D11ClassInstance** ppClassInstances,[InOut] unsigned int* pNumClassInstances)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::HSGetShader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.HullShaderStage.GetSamplers(System.Int32,System.Int32,SharpDX.Direct3D11.SamplerState[])\">\n            <summary>\t\n            <p>Get an array of sampler state interfaces from the hull-shader stage.</p>\t\n            </summary>\t\n            <param name=\"startSlot\">No documentation.</param>\t\n            <param name=\"numSamplers\">No documentation.</param>\t\n            <param name=\"samplersOut\">No documentation.</param>\t\n            <remarks>\t\n            <p>Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::HSGetSamplers']/*\"/>\t\n            <msdn-id>ff476441</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::HSGetSamplers([In] unsigned int StartSlot,[In] unsigned int NumSamplers,[Out, Buffer] ID3D11SamplerState** ppSamplers)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::HSGetSamplers</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.HullShaderStage.GetConstantBuffers(System.Int32,System.Int32,SharpDX.Direct3D11.Buffer[])\">\n            <summary>\t\n            <p>Get the constant buffers used by the hull-shader stage.</p>\t\n            </summary>\t\n            <param name=\"startSlot\">No documentation.</param>\t\n            <param name=\"numBuffers\">No documentation.</param>\t\n            <param name=\"constantBuffersOut\">No documentation.</param>\t\n            <remarks>\t\n            <p>Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::HSGetConstantBuffers']/*\"/>\t\n            <msdn-id>ff476440</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::HSGetConstantBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[Out, Buffer] ID3D11Buffer** ppConstantBuffers)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::HSGetConstantBuffers</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.InfoQueue\">\n            <summary>\t\n            <p>An information-queue interface stores, retrieves, and filters debug messages. The queue consists of a message queue, an optional storage filter stack, and a optional retrieval filter stack.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>To get this interface, turn on debug layer and use <strong>IUnknown::QueryInterface</strong> from the <strong><see cref=\"T:SharpDX.Direct3D11.Device\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11InfoQueue']/*\"/>\t\n            <msdn-id>ff476538</msdn-id>\t\n            <unmanaged>ID3D11InfoQueue</unmanaged>\t\n            <unmanaged-short>ID3D11InfoQueue</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.InfoQueue.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D11.InfoQueue\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.InfoQueue.op_Explicit(System.IntPtr)~SharpDX.Direct3D11.InfoQueue\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D11.InfoQueue\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.InfoQueue.SetMessageCountLimit(System.Int64)\">\n            <summary>\t\n            <p>Set the maximum number of messages that can be added to the message queue.</p>\t\n            </summary>\t\n            <param name=\"messageCountLimit\"><dd>  <p>Maximum number of messages that can be added to the message queue. -1 means no limit.</p> </dd></param>\t\n            <returns><p>This method returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>When the number of messages in the message queue has reached the maximum limit, new messages coming in will push old messages out.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11InfoQueue::SetMessageCountLimit']/*\"/>\t\n            <msdn-id>ff476573</msdn-id>\t\n            <unmanaged>HRESULT ID3D11InfoQueue::SetMessageCountLimit([In] unsigned longlong MessageCountLimit)</unmanaged>\t\n            <unmanaged-short>ID3D11InfoQueue::SetMessageCountLimit</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.InfoQueue.ClearStoredMessages\">\n            <summary>\t\n            <p>Clear all messages from the message queue.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11InfoQueue::ClearStoredMessages']/*\"/>\t\n            <msdn-id>ff476545</msdn-id>\t\n            <unmanaged>void ID3D11InfoQueue::ClearStoredMessages()</unmanaged>\t\n            <unmanaged-short>ID3D11InfoQueue::ClearStoredMessages</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.InfoQueue.GetMessage(System.Int64,System.IntPtr,SharpDX.PointerSize@)\">\n            <summary>\t\n            <p>Get a message from the message queue.</p>\t\n            </summary>\t\n            <param name=\"messageIndex\"><dd>  <p>Index into message queue after an optional retrieval filter has been applied. This can be between 0 and the number of messages in the message queue that pass through the retrieval filter (which can be obtained with <strong><see cref=\"M:SharpDX.Direct3D11.InfoQueue.GetNumStoredMessagesAllowedByRetrievalFilter\"/></strong>). 0 is the message at the front of the message queue.</p> </dd></param>\t\n            <param name=\"messageRef\"><dd>  <p>Returned message (see <strong><see cref=\"T:SharpDX.Direct3D11.Message\"/></strong>).</p> </dd></param>\t\n            <param name=\"messageByteLengthRef\"><dd>  <p>Size of pMessage in bytes, including the size of the message string that the pMessage points to.</p> </dd></param>\t\n            <returns><p>This method returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>This method does not remove any messages from the message queue.</p><p>This method gets messages from the message queue after an optional retrieval filter has been applied.</p><p>Applications should call this method twice to retrieve a message - first to obtain the size of the message and second to get the message. Here is a typical example:</p><pre><code> // Get the size of the message\t\n            <see cref=\"T:SharpDX.PointerSize\"/> messageLength = 0;\t\n            <see cref=\"T:SharpDX.Result\"/> hr = pInfoQueue-&gt;GetMessage(0, <c>null</c>, &amp;messageLength); // Allocate space and get the message\t\n            <see cref=\"T:SharpDX.Direct3D11.Message\"/> * pMessage = (<see cref=\"T:SharpDX.Direct3D11.Message\"/>*)malloc(messageLength);\t\n            hr = pInfoQueue-&gt;GetMessage(0, pMessage, &amp;messageLength);\t\n            </code></pre><p>For an overview see <strong>Information Queue Overview</strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11InfoQueue::GetMessageW']/*\"/>\t\n            <msdn-id>ff476549</msdn-id>\t\n            <unmanaged>HRESULT ID3D11InfoQueue::GetMessageW([In] unsigned longlong MessageIndex,[In] void* pMessage,[InOut] SIZE_T* pMessageByteLength)</unmanaged>\t\n            <unmanaged-short>ID3D11InfoQueue::GetMessageW</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.InfoQueue.GetNumMessagesAllowedByStorageFilter\">\n            <summary>\t\n            <p>Get the number of messages that were allowed to pass through a storage filter.</p>\t\n            </summary>\t\n            <returns><p>Number of messages allowed by a storage filter.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11InfoQueue::GetNumMessagesAllowedByStorageFilter']/*\"/>\t\n            <msdn-id>ff476552</msdn-id>\t\n            <unmanaged>unsigned longlong ID3D11InfoQueue::GetNumMessagesAllowedByStorageFilter()</unmanaged>\t\n            <unmanaged-short>ID3D11InfoQueue::GetNumMessagesAllowedByStorageFilter</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.InfoQueue.GetNumMessagesDeniedByStorageFilter\">\n            <summary>\t\n            <p>Get the number of messages that were denied passage through a storage filter.</p>\t\n            </summary>\t\n            <returns><p>Number of messages denied by a storage filter.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11InfoQueue::GetNumMessagesDeniedByStorageFilter']/*\"/>\t\n            <msdn-id>ff476553</msdn-id>\t\n            <unmanaged>unsigned longlong ID3D11InfoQueue::GetNumMessagesDeniedByStorageFilter()</unmanaged>\t\n            <unmanaged-short>ID3D11InfoQueue::GetNumMessagesDeniedByStorageFilter</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.InfoQueue.GetNumStoredMessages\">\n            <summary>\t\n            <p>Get the number of messages currently stored in the message queue.</p>\t\n            </summary>\t\n            <returns><p>Number of messages currently stored in the message queue.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11InfoQueue::GetNumStoredMessages']/*\"/>\t\n            <msdn-id>ff476556</msdn-id>\t\n            <unmanaged>unsigned longlong ID3D11InfoQueue::GetNumStoredMessages()</unmanaged>\t\n            <unmanaged-short>ID3D11InfoQueue::GetNumStoredMessages</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.InfoQueue.GetNumStoredMessagesAllowedByRetrievalFilter\">\n            <summary>\t\n            <p>Get the number of messages that are able to pass through a retrieval filter.</p>\t\n            </summary>\t\n            <returns><p>Number of messages allowed by a retrieval filter.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11InfoQueue::GetNumStoredMessagesAllowedByRetrievalFilter']/*\"/>\t\n            <msdn-id>ff476557</msdn-id>\t\n            <unmanaged>unsigned longlong ID3D11InfoQueue::GetNumStoredMessagesAllowedByRetrievalFilter()</unmanaged>\t\n            <unmanaged-short>ID3D11InfoQueue::GetNumStoredMessagesAllowedByRetrievalFilter</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.InfoQueue.GetNumMessagesDiscardedByMessageCountLimit\">\n            <summary>\t\n            <p>Get the number of messages that were discarded due to the message count limit.</p>\t\n            </summary>\t\n            <returns><p>Number of messages discarded.</p></returns>\t\n            <remarks>\t\n            <p>Get and set the message count limit with <strong><see cref=\"M:SharpDX.Direct3D11.InfoQueue.GetMessageCountLimit\"/></strong> and <strong><see cref=\"M:SharpDX.Direct3D11.InfoQueue.SetMessageCountLimit(System.Int64)\"/></strong>, respectively.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11InfoQueue::GetNumMessagesDiscardedByMessageCountLimit']/*\"/>\t\n            <msdn-id>ff476554</msdn-id>\t\n            <unmanaged>unsigned longlong ID3D11InfoQueue::GetNumMessagesDiscardedByMessageCountLimit()</unmanaged>\t\n            <unmanaged-short>ID3D11InfoQueue::GetNumMessagesDiscardedByMessageCountLimit</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.InfoQueue.GetMessageCountLimit\">\n            <summary>\t\n            <p>Get the maximum number of messages that can be added to the message queue.</p>\t\n            </summary>\t\n            <returns><p>Maximum number of messages that can be added to the queue. -1 means no limit.</p></returns>\t\n            <remarks>\t\n            <p>When the number of messages in the message queue has reached the maximum limit, new messages coming in will push old messages out.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11InfoQueue::GetMessageCountLimit']/*\"/>\t\n            <msdn-id>ff476550</msdn-id>\t\n            <unmanaged>unsigned longlong ID3D11InfoQueue::GetMessageCountLimit()</unmanaged>\t\n            <unmanaged-short>ID3D11InfoQueue::GetMessageCountLimit</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.InfoQueue.AddStorageFilterEntries(SharpDX.Direct3D11.InfoQueueFilter)\">\n            <summary>\t\n            <p>Add storage filters to the top of the storage-filter stack.</p>\t\n            </summary>\t\n            <param name=\"filterRef\"><dd>  <p>Array of storage filters (see <strong><see cref=\"T:SharpDX.Direct3D11.InfoQueueFilter\"/></strong>).</p> </dd></param>\t\n            <returns><p>This method returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11InfoQueue::AddStorageFilterEntries']/*\"/>\t\n            <msdn-id>ff476542</msdn-id>\t\n            <unmanaged>HRESULT ID3D11InfoQueue::AddStorageFilterEntries([In] D3D11_INFO_QUEUE_FILTER* pFilter)</unmanaged>\t\n            <unmanaged-short>ID3D11InfoQueue::AddStorageFilterEntries</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.InfoQueue.GetStorageFilter(System.IntPtr,SharpDX.PointerSize@)\">\n            <summary>\t\n            <p>Get the storage filter at the top of the storage-filter stack.</p>\t\n            </summary>\t\n            <param name=\"filterRef\"><dd>  <p>Storage filter at the top of the storage-filter stack.</p> </dd></param>\t\n            <param name=\"filterByteLengthRef\"><dd>  <p>Size of the storage filter in bytes. If pFilter is <strong><c>null</c></strong>, the size of the storage filter will be output to this parameter.</p> </dd></param>\t\n            <returns><p>This method returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11InfoQueue::GetStorageFilter']/*\"/>\t\n            <msdn-id>ff476560</msdn-id>\t\n            <unmanaged>HRESULT ID3D11InfoQueue::GetStorageFilter([In] void* pFilter,[InOut] SIZE_T* pFilterByteLength)</unmanaged>\t\n            <unmanaged-short>ID3D11InfoQueue::GetStorageFilter</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.InfoQueue.ClearStorageFilter\">\n            <summary>\t\n            <p>Remove a storage filter from the top of the storage-filter stack.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11InfoQueue::ClearStorageFilter']/*\"/>\t\n            <msdn-id>ff476544</msdn-id>\t\n            <unmanaged>void ID3D11InfoQueue::ClearStorageFilter()</unmanaged>\t\n            <unmanaged-short>ID3D11InfoQueue::ClearStorageFilter</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.InfoQueue.PushEmptyStorageFilter\">\n            <summary>\t\n            <p>Push an empty storage filter onto the storage-filter stack.</p>\t\n            </summary>\t\n            <returns><p>This method returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>An empty storage filter allows all messages to pass through.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11InfoQueue::PushEmptyStorageFilter']/*\"/>\t\n            <msdn-id>ff476567</msdn-id>\t\n            <unmanaged>HRESULT ID3D11InfoQueue::PushEmptyStorageFilter()</unmanaged>\t\n            <unmanaged-short>ID3D11InfoQueue::PushEmptyStorageFilter</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.InfoQueue.PushCopyOfStorageFilter\">\n            <summary>\t\n            <p>Push a copy of storage filter currently on the top of the storage-filter stack onto the storage-filter stack.</p>\t\n            </summary>\t\n            <returns><p>This method returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11InfoQueue::PushCopyOfStorageFilter']/*\"/>\t\n            <msdn-id>ff476565</msdn-id>\t\n            <unmanaged>HRESULT ID3D11InfoQueue::PushCopyOfStorageFilter()</unmanaged>\t\n            <unmanaged-short>ID3D11InfoQueue::PushCopyOfStorageFilter</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.InfoQueue.PushStorageFilter(SharpDX.Direct3D11.InfoQueueFilter)\">\n            <summary>\t\n            <p>Push a storage filter onto the storage-filter stack.</p>\t\n            </summary>\t\n            <param name=\"filterRef\"><dd>  <p>Pointer to a storage filter (see <strong><see cref=\"T:SharpDX.Direct3D11.InfoQueueFilter\"/></strong>).</p> </dd></param>\t\n            <returns><p>This method returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11InfoQueue::PushStorageFilter']/*\"/>\t\n            <msdn-id>ff476569</msdn-id>\t\n            <unmanaged>HRESULT ID3D11InfoQueue::PushStorageFilter([In] D3D11_INFO_QUEUE_FILTER* pFilter)</unmanaged>\t\n            <unmanaged-short>ID3D11InfoQueue::PushStorageFilter</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.InfoQueue.PopStorageFilter\">\n            <summary>\t\n            <p>Pop a storage filter from the top of the storage-filter stack.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11InfoQueue::PopStorageFilter']/*\"/>\t\n            <msdn-id>ff476563</msdn-id>\t\n            <unmanaged>void ID3D11InfoQueue::PopStorageFilter()</unmanaged>\t\n            <unmanaged-short>ID3D11InfoQueue::PopStorageFilter</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.InfoQueue.GetStorageFilterStackSize\">\n            <summary>\t\n            <p>Get the size of the storage-filter stack in bytes.</p>\t\n            </summary>\t\n            <returns><p>Size of the storage-filter stack in bytes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11InfoQueue::GetStorageFilterStackSize']/*\"/>\t\n            <msdn-id>ff476561</msdn-id>\t\n            <unmanaged>unsigned int ID3D11InfoQueue::GetStorageFilterStackSize()</unmanaged>\t\n            <unmanaged-short>ID3D11InfoQueue::GetStorageFilterStackSize</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.InfoQueue.AddRetrievalFilterEntries(SharpDX.Direct3D11.InfoQueueFilter)\">\n            <summary>\t\n            <p>Add storage filters to the top of the retrieval-filter stack.</p>\t\n            </summary>\t\n            <param name=\"filterRef\"><dd>  <p>Array of retrieval filters (see <strong><see cref=\"T:SharpDX.Direct3D11.InfoQueueFilter\"/></strong>).</p> </dd></param>\t\n            <returns><p>This method returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>The following code example shows how to use <strong><see cref=\"M:SharpDX.Direct3D11.InfoQueue.AddRetrievalFilterEntries(SharpDX.Direct3D11.InfoQueueFilter)\"/></strong>:</p><pre><code> <see cref=\"T:SharpDX.Direct3D11.MessageCategory\"/> cats[] = { ..., ..., ... };\t\n            <see cref=\"T:SharpDX.Direct3D11.MessageSeverity\"/> sevs[] = { ..., ..., ... };\t\n            UINT ids[] = { ..., ..., ... }; <see cref=\"T:SharpDX.Direct3D11.InfoQueueFilter\"/> filter;\t\n            memset( &amp;filter, 0, sizeof(filter) ); // To set the type of messages to allow, \t\n            // set filter.AllowList as follows:\t\n            filter.AllowList.NumCategories = sizeof(cats / sizeof(<see cref=\"T:SharpDX.Direct3D11.MessageCategory\"/>)); \t\n            filter.AllowList.pCategoryList = cats;\t\n            filter.AllowList.NumSeverities = sizeof(sevs / sizeof(<see cref=\"T:SharpDX.Direct3D11.MessageSeverity\"/>)); \t\n            filter.AllowList.pSeverityList = sevs;\t\n            filter.AllowList.NumIDs = sizeof(ids) / sizeof(UINT);\t\n            filter.AllowList.pIDList = ids; // To set the type of messages to deny, set filter.DenyList \t\n            // similarly to the preceding filter.AllowList. // The following single call sets all of the preceding information.\t\n            hr = infoQueue-&gt;AddRetrievalFilterEntries( &amp;filter );\t\n            </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11InfoQueue::AddRetrievalFilterEntries']/*\"/>\t\n            <msdn-id>ff476541</msdn-id>\t\n            <unmanaged>HRESULT ID3D11InfoQueue::AddRetrievalFilterEntries([In] D3D11_INFO_QUEUE_FILTER* pFilter)</unmanaged>\t\n            <unmanaged-short>ID3D11InfoQueue::AddRetrievalFilterEntries</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.InfoQueue.GetRetrievalFilter(System.IntPtr,SharpDX.PointerSize@)\">\n            <summary>\t\n            <p>Get the retrieval filter at the top of the retrieval-filter stack.</p>\t\n            </summary>\t\n            <param name=\"filterRef\"><dd>  <p>Retrieval filter at the top of the retrieval-filter stack.</p> </dd></param>\t\n            <param name=\"filterByteLengthRef\"><dd>  <p>Size of the retrieval filter in bytes. If pFilter is <strong><c>null</c></strong>, the size of the retrieval filter will be output to this parameter.</p> </dd></param>\t\n            <returns><p>This method returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11InfoQueue::GetRetrievalFilter']/*\"/>\t\n            <msdn-id>ff476558</msdn-id>\t\n            <unmanaged>HRESULT ID3D11InfoQueue::GetRetrievalFilter([In] void* pFilter,[InOut] SIZE_T* pFilterByteLength)</unmanaged>\t\n            <unmanaged-short>ID3D11InfoQueue::GetRetrievalFilter</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.InfoQueue.ClearRetrievalFilter\">\n            <summary>\t\n            <p>Remove a retrieval filter from the top of the retrieval-filter stack.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11InfoQueue::ClearRetrievalFilter']/*\"/>\t\n            <msdn-id>ff476543</msdn-id>\t\n            <unmanaged>void ID3D11InfoQueue::ClearRetrievalFilter()</unmanaged>\t\n            <unmanaged-short>ID3D11InfoQueue::ClearRetrievalFilter</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.InfoQueue.PushEmptyRetrievalFilter\">\n            <summary>\t\n            <p>Push an empty retrieval filter onto the retrieval-filter stack.</p>\t\n            </summary>\t\n            <returns><p>This method returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>An empty retrieval filter allows all messages to pass through.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11InfoQueue::PushEmptyRetrievalFilter']/*\"/>\t\n            <msdn-id>ff476566</msdn-id>\t\n            <unmanaged>HRESULT ID3D11InfoQueue::PushEmptyRetrievalFilter()</unmanaged>\t\n            <unmanaged-short>ID3D11InfoQueue::PushEmptyRetrievalFilter</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.InfoQueue.PushCopyOfRetrievalFilter\">\n            <summary>\t\n            <p>Push a copy of retrieval filter currently on the top of the retrieval-filter stack onto the retrieval-filter stack.</p>\t\n            </summary>\t\n            <returns><p>This method returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11InfoQueue::PushCopyOfRetrievalFilter']/*\"/>\t\n            <msdn-id>ff476564</msdn-id>\t\n            <unmanaged>HRESULT ID3D11InfoQueue::PushCopyOfRetrievalFilter()</unmanaged>\t\n            <unmanaged-short>ID3D11InfoQueue::PushCopyOfRetrievalFilter</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.InfoQueue.PushRetrievalFilter(SharpDX.Direct3D11.InfoQueueFilter)\">\n            <summary>\t\n            <p>Push a retrieval filter onto the retrieval-filter stack.</p>\t\n            </summary>\t\n            <param name=\"filterRef\"><dd>  <p>Pointer to a retrieval filter (see <strong><see cref=\"T:SharpDX.Direct3D11.InfoQueueFilter\"/></strong>).</p> </dd></param>\t\n            <returns><p>This method returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11InfoQueue::PushRetrievalFilter']/*\"/>\t\n            <msdn-id>ff476568</msdn-id>\t\n            <unmanaged>HRESULT ID3D11InfoQueue::PushRetrievalFilter([In] D3D11_INFO_QUEUE_FILTER* pFilter)</unmanaged>\t\n            <unmanaged-short>ID3D11InfoQueue::PushRetrievalFilter</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.InfoQueue.PopRetrievalFilter\">\n            <summary>\t\n            <p>Pop a retrieval filter from the top of the retrieval-filter stack.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11InfoQueue::PopRetrievalFilter']/*\"/>\t\n            <msdn-id>ff476562</msdn-id>\t\n            <unmanaged>void ID3D11InfoQueue::PopRetrievalFilter()</unmanaged>\t\n            <unmanaged-short>ID3D11InfoQueue::PopRetrievalFilter</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.InfoQueue.GetRetrievalFilterStackSize\">\n            <summary>\t\n            <p>Get the size of the retrieval-filter stack in bytes.</p>\t\n            </summary>\t\n            <returns><p>Size of the retrieval-filter stack in bytes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11InfoQueue::GetRetrievalFilterStackSize']/*\"/>\t\n            <msdn-id>ff476559</msdn-id>\t\n            <unmanaged>unsigned int ID3D11InfoQueue::GetRetrievalFilterStackSize()</unmanaged>\t\n            <unmanaged-short>ID3D11InfoQueue::GetRetrievalFilterStackSize</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.InfoQueue.AddMessage(SharpDX.Direct3D11.MessageCategory,SharpDX.Direct3D11.MessageSeverity,SharpDX.Direct3D11.MessageId,System.String)\">\n            <summary>\t\n            <p>Add a debug message to the message queue and send that message to debug output.</p>\t\n            </summary>\t\n            <param name=\"category\"><dd>  <p>Category of a message (see <strong><see cref=\"T:SharpDX.Direct3D11.MessageCategory\"/></strong>).</p> </dd></param>\t\n            <param name=\"severity\"><dd>  <p>Severity of a message (see <strong><see cref=\"T:SharpDX.Direct3D11.MessageSeverity\"/></strong>).</p> </dd></param>\t\n            <param name=\"id\"><dd>  <p>Unique identifier of a message (see <strong><see cref=\"T:SharpDX.Direct3D11.MessageId\"/></strong>).</p> </dd></param>\t\n            <param name=\"descriptionRef\"><dd>  <p>User-defined message.</p> </dd></param>\t\n            <returns><p>This method returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>This method is used by the runtime's internal mechanisms to add debug messages to the message queue and send them to debug output. For applications to add their own custom messages to the message queue and send them to debug output, call <strong><see cref=\"M:SharpDX.Direct3D11.InfoQueue.AddApplicationMessage(SharpDX.Direct3D11.MessageSeverity,System.String)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11InfoQueue::AddMessage']/*\"/>\t\n            <msdn-id>ff476540</msdn-id>\t\n            <unmanaged>HRESULT ID3D11InfoQueue::AddMessage([In] D3D11_MESSAGE_CATEGORY Category,[In] D3D11_MESSAGE_SEVERITY Severity,[In] D3D11_MESSAGE_ID ID,[In] const char* pDescription)</unmanaged>\t\n            <unmanaged-short>ID3D11InfoQueue::AddMessage</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.InfoQueue.AddApplicationMessage(SharpDX.Direct3D11.MessageSeverity,System.String)\">\n            <summary>\t\n            <p>Add a user-defined message to the message queue and send that message to debug output.</p>\t\n            </summary>\t\n            <param name=\"severity\"><dd>  <p>Severity of a message (see <strong><see cref=\"T:SharpDX.Direct3D11.MessageSeverity\"/></strong>).</p> </dd></param>\t\n            <param name=\"descriptionRef\"><dd>  <p>Message string.</p> </dd></param>\t\n            <returns><p>This method returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11InfoQueue::AddApplicationMessage']/*\"/>\t\n            <msdn-id>ff476539</msdn-id>\t\n            <unmanaged>HRESULT ID3D11InfoQueue::AddApplicationMessage([In] D3D11_MESSAGE_SEVERITY Severity,[In] const char* pDescription)</unmanaged>\t\n            <unmanaged-short>ID3D11InfoQueue::AddApplicationMessage</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.InfoQueue.SetBreakOnCategory(SharpDX.Direct3D11.MessageCategory,SharpDX.Bool)\">\n            <summary>\t\n            <p>Set a message category to break on when a message with that category passes through the storage filter.</p>\t\n            </summary>\t\n            <param name=\"category\"><dd>  <p>Message category to break on (see <strong><see cref=\"T:SharpDX.Direct3D11.MessageCategory\"/></strong>).</p> </dd></param>\t\n            <param name=\"bEnable\"><dd>  <p>Turns this breaking condition on or off (true for on, false for off).</p> </dd></param>\t\n            <returns><p>This method returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11InfoQueue::SetBreakOnCategory']/*\"/>\t\n            <msdn-id>ff476570</msdn-id>\t\n            <unmanaged>HRESULT ID3D11InfoQueue::SetBreakOnCategory([In] D3D11_MESSAGE_CATEGORY Category,[In] BOOL bEnable)</unmanaged>\t\n            <unmanaged-short>ID3D11InfoQueue::SetBreakOnCategory</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.InfoQueue.SetBreakOnSeverity(SharpDX.Direct3D11.MessageSeverity,SharpDX.Bool)\">\n            <summary>\t\n            <p>Set a message severity level to break on when a message with that severity level passes through the storage filter.</p>\t\n            </summary>\t\n            <param name=\"severity\"><dd>  <p>A <strong><see cref=\"T:SharpDX.Direct3D11.MessageSeverity\"/></strong>, which represents a message severity level to break on.</p> </dd></param>\t\n            <param name=\"bEnable\"><dd>  <p>Turns this breaking condition on or off (true for on, false for off).</p> </dd></param>\t\n            <returns><p>This method returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11InfoQueue::SetBreakOnSeverity']/*\"/>\t\n            <msdn-id>ff476572</msdn-id>\t\n            <unmanaged>HRESULT ID3D11InfoQueue::SetBreakOnSeverity([In] D3D11_MESSAGE_SEVERITY Severity,[In] BOOL bEnable)</unmanaged>\t\n            <unmanaged-short>ID3D11InfoQueue::SetBreakOnSeverity</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.InfoQueue.SetBreakOnID(SharpDX.Direct3D11.MessageId,SharpDX.Bool)\">\n            <summary>\t\n            <p>Set a message identifier to break on when a message with that identifier passes through the storage filter.</p>\t\n            </summary>\t\n            <param name=\"id\"><dd>  <p>Message identifier to break on (see <strong><see cref=\"T:SharpDX.Direct3D11.MessageId\"/></strong>).</p> </dd></param>\t\n            <param name=\"bEnable\"><dd>  <p>Turns this breaking condition on or off (true for on, false for off).</p> </dd></param>\t\n            <returns><p>This method returns one of the following Direct3D 11 Return Codes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11InfoQueue::SetBreakOnID']/*\"/>\t\n            <msdn-id>ff476571</msdn-id>\t\n            <unmanaged>HRESULT ID3D11InfoQueue::SetBreakOnID([In] D3D11_MESSAGE_ID ID,[In] BOOL bEnable)</unmanaged>\t\n            <unmanaged-short>ID3D11InfoQueue::SetBreakOnID</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.InfoQueue.GetBreakOnCategory(SharpDX.Direct3D11.MessageCategory)\">\n            <summary>\t\n            <p>Get a message category to break on when a message with that category passes through the storage filter.</p>\t\n            </summary>\t\n            <param name=\"category\"><dd>  <p>Message category to break on (see <strong><see cref=\"T:SharpDX.Direct3D11.MessageCategory\"/></strong>).</p> </dd></param>\t\n            <returns><p>Whether this breaking condition is turned on or off (true for on, false for off).</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11InfoQueue::GetBreakOnCategory']/*\"/>\t\n            <msdn-id>ff476546</msdn-id>\t\n            <unmanaged>BOOL ID3D11InfoQueue::GetBreakOnCategory([In] D3D11_MESSAGE_CATEGORY Category)</unmanaged>\t\n            <unmanaged-short>ID3D11InfoQueue::GetBreakOnCategory</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.InfoQueue.GetBreakOnSeverity(SharpDX.Direct3D11.MessageSeverity)\">\n            <summary>\t\n            <p>Get a message severity level to break on when a message with that severity level passes through the storage filter.</p>\t\n            </summary>\t\n            <param name=\"severity\"><dd>  <p>Message severity level to break on (see <strong><see cref=\"T:SharpDX.Direct3D11.MessageSeverity\"/></strong>).</p> </dd></param>\t\n            <returns><p>Whether this breaking condition is turned on or off (true for on, false for off).</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11InfoQueue::GetBreakOnSeverity']/*\"/>\t\n            <msdn-id>ff476548</msdn-id>\t\n            <unmanaged>BOOL ID3D11InfoQueue::GetBreakOnSeverity([In] D3D11_MESSAGE_SEVERITY Severity)</unmanaged>\t\n            <unmanaged-short>ID3D11InfoQueue::GetBreakOnSeverity</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.InfoQueue.GetBreakOnID(SharpDX.Direct3D11.MessageId)\">\n            <summary>\t\n            <p>Get a message identifier to break on when a message with that identifier passes through the storage filter.</p>\t\n            </summary>\t\n            <param name=\"id\"><dd>  <p>Message identifier to break on (see <strong><see cref=\"T:SharpDX.Direct3D11.MessageId\"/></strong>).</p> </dd></param>\t\n            <returns><p>Whether this breaking condition is turned on or off (true for on, false for off).</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11InfoQueue::GetBreakOnID']/*\"/>\t\n            <msdn-id>ff476547</msdn-id>\t\n            <unmanaged>BOOL ID3D11InfoQueue::GetBreakOnID([In] D3D11_MESSAGE_ID ID)</unmanaged>\t\n            <unmanaged-short>ID3D11InfoQueue::GetBreakOnID</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.InfoQueue.SetMuteDebugOutput(SharpDX.Bool)\">\n            <summary>\t\n            <p>Set a boolean that turns the debug output on or off.</p>\t\n            </summary>\t\n            <param name=\"bMute\"><dd>  <p>Disable/Enable the debug output (<strong>TRUE</strong> to disable or mute the output, <strong><see cref=\"F:SharpDX.Result.False\"/></strong> to enable the output).</p> </dd></param>\t\n            <remarks>\t\n            <p>This will stop messages that pass the storage filter from being printed out in the debug output, however those messages will still be added to the message queue.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11InfoQueue::SetMuteDebugOutput']/*\"/>\t\n            <msdn-id>ff476574</msdn-id>\t\n            <unmanaged>void ID3D11InfoQueue::SetMuteDebugOutput([In] BOOL bMute)</unmanaged>\t\n            <unmanaged-short>ID3D11InfoQueue::SetMuteDebugOutput</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.InfoQueue.GetMuteDebugOutput\">\n            <summary>\t\n            <p>Get a boolean that turns the debug output on or off.</p>\t\n            </summary>\t\n            <returns><p>Whether the debug output is on or off (true for on, false for off).</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11InfoQueue::GetMuteDebugOutput']/*\"/>\t\n            <msdn-id>ff476551</msdn-id>\t\n            <unmanaged>BOOL ID3D11InfoQueue::GetMuteDebugOutput()</unmanaged>\t\n            <unmanaged-short>ID3D11InfoQueue::GetMuteDebugOutput</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.InfoQueue.GetMessage(System.Int64)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"messageIndex\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11InfoQueue::GetMessageW']/*\"/>\t\n            <unmanaged>HRESULT ID3D11InfoQueue::GetMessageW([In] unsigned longlong MessageIndex,[Out, Buffer, Optional] D3D11_MESSAGE* pMessage,[InOut] SIZE_T* pMessageByteLength)</unmanaged>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.InfoQueue.GetStorageFilter\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <returns>No documentation.</returns>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11InfoQueue::GetStorageFilter']/*\"/>\t\n            <unmanaged>HRESULT ID3D11InfoQueue::GetStorageFilter([Out, Buffer, Optional] D3D11_INFO_QUEUE_FILTER* pFilter,[InOut] SIZE_T* pFilterByteLength)</unmanaged>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.InfoQueue.GetRetrievalFilter\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <returns>No documentation.</returns>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11InfoQueue::GetRetrievalFilter']/*\"/>\t\n            <unmanaged>HRESULT ID3D11InfoQueue::GetRetrievalFilter([Out, Buffer, Optional] D3D11_INFO_QUEUE_FILTER* pFilter,[InOut] SIZE_T* pFilterByteLength)</unmanaged>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.InfoQueue.MessageCountLimit\">\n            <summary>\t\n            <p>Get or sets the maximum number of messages that can be added to the message queue.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>When the number of messages in the message queue has reached the maximum limit, new messages coming in will push old messages out.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11InfoQueue::GetMessageCountLimit']/*\"/>\t\n            <msdn-id>ff476550</msdn-id>\t\n            <unmanaged>GetMessageCountLimit / SetMessageCountLimit</unmanaged>\t\n            <unmanaged-short>GetMessageCountLimit</unmanaged-short>\t\n            <unmanaged>unsigned longlong ID3D11InfoQueue::GetMessageCountLimit()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.InfoQueue.NumMessagesAllowedByStorageFilter\">\n            <summary>\t\n            <p>Get the number of messages that were allowed to pass through a storage filter.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11InfoQueue::GetNumMessagesAllowedByStorageFilter']/*\"/>\t\n            <msdn-id>ff476552</msdn-id>\t\n            <unmanaged>GetNumMessagesAllowedByStorageFilter</unmanaged>\t\n            <unmanaged-short>GetNumMessagesAllowedByStorageFilter</unmanaged-short>\t\n            <unmanaged>unsigned longlong ID3D11InfoQueue::GetNumMessagesAllowedByStorageFilter()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.InfoQueue.NumMessagesDeniedByStorageFilter\">\n            <summary>\t\n            <p>Get the number of messages that were denied passage through a storage filter.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11InfoQueue::GetNumMessagesDeniedByStorageFilter']/*\"/>\t\n            <msdn-id>ff476553</msdn-id>\t\n            <unmanaged>GetNumMessagesDeniedByStorageFilter</unmanaged>\t\n            <unmanaged-short>GetNumMessagesDeniedByStorageFilter</unmanaged-short>\t\n            <unmanaged>unsigned longlong ID3D11InfoQueue::GetNumMessagesDeniedByStorageFilter()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.InfoQueue.NumStoredMessages\">\n            <summary>\t\n            <p>Get the number of messages currently stored in the message queue.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11InfoQueue::GetNumStoredMessages']/*\"/>\t\n            <msdn-id>ff476556</msdn-id>\t\n            <unmanaged>GetNumStoredMessages</unmanaged>\t\n            <unmanaged-short>GetNumStoredMessages</unmanaged-short>\t\n            <unmanaged>unsigned longlong ID3D11InfoQueue::GetNumStoredMessages()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.InfoQueue.NumStoredMessagesAllowedByRetrievalFilter\">\n            <summary>\t\n            <p>Get the number of messages that are able to pass through a retrieval filter.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11InfoQueue::GetNumStoredMessagesAllowedByRetrievalFilter']/*\"/>\t\n            <msdn-id>ff476557</msdn-id>\t\n            <unmanaged>GetNumStoredMessagesAllowedByRetrievalFilter</unmanaged>\t\n            <unmanaged-short>GetNumStoredMessagesAllowedByRetrievalFilter</unmanaged-short>\t\n            <unmanaged>unsigned longlong ID3D11InfoQueue::GetNumStoredMessagesAllowedByRetrievalFilter()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.InfoQueue.NumMessagesDiscardedByMessageCountLimit\">\n            <summary>\t\n            <p>Get the number of messages that were discarded due to the message count limit.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Get and set the message count limit with <strong><see cref=\"M:SharpDX.Direct3D11.InfoQueue.GetMessageCountLimit\"/></strong> and <strong><see cref=\"M:SharpDX.Direct3D11.InfoQueue.SetMessageCountLimit(System.Int64)\"/></strong>, respectively.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11InfoQueue::GetNumMessagesDiscardedByMessageCountLimit']/*\"/>\t\n            <msdn-id>ff476554</msdn-id>\t\n            <unmanaged>GetNumMessagesDiscardedByMessageCountLimit</unmanaged>\t\n            <unmanaged-short>GetNumMessagesDiscardedByMessageCountLimit</unmanaged-short>\t\n            <unmanaged>unsigned longlong ID3D11InfoQueue::GetNumMessagesDiscardedByMessageCountLimit()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.InfoQueue.StorageFilterStackSize\">\n            <summary>\t\n            <p>Get the size of the storage-filter stack in bytes.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11InfoQueue::GetStorageFilterStackSize']/*\"/>\t\n            <msdn-id>ff476561</msdn-id>\t\n            <unmanaged>GetStorageFilterStackSize</unmanaged>\t\n            <unmanaged-short>GetStorageFilterStackSize</unmanaged-short>\t\n            <unmanaged>unsigned int ID3D11InfoQueue::GetStorageFilterStackSize()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.InfoQueue.RetrievalFilterStackSize\">\n            <summary>\t\n            <p>Get the size of the retrieval-filter stack in bytes.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11InfoQueue::GetRetrievalFilterStackSize']/*\"/>\t\n            <msdn-id>ff476559</msdn-id>\t\n            <unmanaged>GetRetrievalFilterStackSize</unmanaged>\t\n            <unmanaged-short>GetRetrievalFilterStackSize</unmanaged-short>\t\n            <unmanaged>unsigned int ID3D11InfoQueue::GetRetrievalFilterStackSize()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.InfoQueue.MuteDebugOutput\">\n            <summary>\t\n            <p>Get or sets a boolean that turns the debug output on or off.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11InfoQueue::GetMuteDebugOutput']/*\"/>\t\n            <msdn-id>ff476551</msdn-id>\t\n            <unmanaged>GetMuteDebugOutput / SetMuteDebugOutput</unmanaged>\t\n            <unmanaged-short>GetMuteDebugOutput</unmanaged-short>\t\n            <unmanaged>BOOL ID3D11InfoQueue::GetMuteDebugOutput()</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.InputLayout\">\n            <summary>\t\n            <p>An input-layout interface holds a definition of how to feed vertex data that is laid out in memory into the input-assembler stage of the graphics pipeline.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>To create an input-layout object, call <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateInputLayout(SharpDX.Direct3D11.InputElement[],System.Int32,System.IntPtr,SharpDX.PointerSize,SharpDX.Direct3D11.InputLayout)\"/></strong>. To bind the input-layout object to the input-assembler stage, call <strong><see cref=\"M:SharpDX.Direct3D11.InputAssemblerStage.SetInputLayout(SharpDX.Direct3D11.InputLayout)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11InputLayout']/*\"/>\t\n            <msdn-id>ff476575</msdn-id>\t\n            <unmanaged>ID3D11InputLayout</unmanaged>\t\n            <unmanaged-short>ID3D11InputLayout</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.InputLayout.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D11.InputLayout\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.InputLayout.op_Explicit(System.IntPtr)~SharpDX.Direct3D11.InputLayout\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D11.InputLayout\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.InputLayout.#ctor(SharpDX.Direct3D11.Device,System.Byte[],SharpDX.Direct3D11.InputElement[])\">\n            <summary>\n              Initializes a new instance of the <see cref = \"T:SharpDX.Direct3D11.InputLayout\" /> object to describe the\n              input-buffer data for the input-assembler stage.\n            </summary>\n            <unmanaged>ID3D11Device::CreateInputLayout</unmanaged>\n            <param name = \"device\">The device used to create the layout.</param>\n            <param name = \"elements\">An array of input elements describing the layout of the input data.</param>\n            <param name = \"shaderBytecode\">The compiled shader used to validate the input elements.</param>\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.PixelShader\">\n            <summary>\t\n            <p>A pixel-shader interface manages an executable program (a pixel shader) that controls the pixel-shader stage.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The pixel-shader interface has no methods; use HLSL to implement your shader functionality. All shaders in are implemented from a common set of features referred to as the common-shader core..</p><p>To create a pixel shader interface, call <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreatePixelShader(System.IntPtr,SharpDX.PointerSize,SharpDX.Direct3D11.ClassLinkage,SharpDX.Direct3D11.PixelShader)\"/></strong>. Before using a pixel shader you must bind it to the device by calling <strong><see cref=\"M:SharpDX.Direct3D11.PixelShaderStage.SetShader(SharpDX.Direct3D11.PixelShader,SharpDX.Direct3D11.ClassInstance[],System.Int32)\"/></strong>.</p><p>This interface is defined in D3D11.h.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11PixelShader']/*\"/>\t\n            <msdn-id>ff476576</msdn-id>\t\n            <unmanaged>ID3D11PixelShader</unmanaged>\t\n            <unmanaged-short>ID3D11PixelShader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.PixelShader.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D11.PixelShader\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.PixelShader.op_Explicit(System.IntPtr)~SharpDX.Direct3D11.PixelShader\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D11.PixelShader\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.PixelShader.#ctor(SharpDX.Direct3D11.Device,System.Byte[],SharpDX.Direct3D11.ClassLinkage)\">\n            <summary>\n              Initializes a new instance of the <see cref = \"T:SharpDX.Direct3D11.PixelShader\" /> class.\n            </summary>\n            <param name = \"device\">The device used to create the shader.</param>\n            <param name = \"shaderBytecode\">The compiled shader bytecode.</param>\n            <param name = \"linkage\">A dynamic class linkage interface.</param>\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.PixelShaderStage\">\n            <summary>\t\n            <p>The <strong><see cref=\"T:SharpDX.Direct3D11.DeviceContext\"/></strong> interface represents a device context which generates rendering commands.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext']/*\"/>\t\n            <msdn-id>ff476385</msdn-id>\t\n            <unmanaged>ID3D11DeviceContext</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.PixelShaderStage.InputRegisterComponentBitCount\">\n            <summary>Constant InputRegisterComponentBitCount.</summary>\n            <unmanaged>D3D11_PS_INPUT_REGISTER_COMPONENT_BIT_COUNT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.PixelShaderStage.OutputRegisterComponentBitCount\">\n            <summary>Constant OutputRegisterComponentBitCount.</summary>\n            <unmanaged>D3D11_PS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.PixelShaderStage.PixelCenterFractionalComponent\">\n            <summary>Constant PixelCenterFractionalComponent.</summary>\n            <unmanaged>D3D11_PS_PIXEL_CENTER_FRACTIONAL_COMPONENT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.PixelShaderStage.OutputRegisterComponents\">\n            <summary>Constant OutputRegisterComponents.</summary>\n            <unmanaged>D3D11_PS_OUTPUT_REGISTER_COMPONENTS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.PixelShaderStage.OutputMaskRegisterComponents\">\n            <summary>Constant OutputMaskRegisterComponents.</summary>\n            <unmanaged>D3D11_PS_OUTPUT_MASK_REGISTER_COMPONENTS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.PixelShaderStage.InputRegisterComponents\">\n            <summary>Constant InputRegisterComponents.</summary>\n            <unmanaged>D3D11_PS_INPUT_REGISTER_COMPONENTS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.PixelShaderStage.LegacyPixelCenterFractionalComponent\">\n            <summary>Constant LegacyPixelCenterFractionalComponent.</summary>\n            <unmanaged>D3D11_PS_LEGACY_PIXEL_CENTER_FRACTIONAL_COMPONENT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.PixelShaderStage.OutputMaskRegisterComponentBitCount\">\n            <summary>Constant OutputMaskRegisterComponentBitCount.</summary>\n            <unmanaged>D3D11_PS_OUTPUT_MASK_REGISTER_COMPONENT_BIT_COUNT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.PixelShaderStage.OutputMaskRegisterCount\">\n            <summary>Constant OutputMaskRegisterCount.</summary>\n            <unmanaged>D3D11_PS_OUTPUT_MASK_REGISTER_COUNT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.PixelShaderStage.FrontfacingTrueValue\">\n            <summary>Constant FrontfacingTrueValue.</summary>\n            <unmanaged>D3D11_PS_FRONTFACING_TRUE_VALUE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.PixelShaderStage.OutputDepthRegisterCount\">\n            <summary>Constant OutputDepthRegisterCount.</summary>\n            <unmanaged>D3D11_PS_OUTPUT_DEPTH_REGISTER_COUNT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.PixelShaderStage.OutputDepthRegisterComponents\">\n            <summary>Constant OutputDepthRegisterComponents.</summary>\n            <unmanaged>D3D11_PS_OUTPUT_DEPTH_REGISTER_COMPONENTS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.PixelShaderStage.InputRegisterReadsPerInst\">\n            <summary>Constant InputRegisterReadsPerInst.</summary>\n            <unmanaged>D3D11_PS_INPUT_REGISTER_READS_PER_INST</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.PixelShaderStage.OutputRegisterCount\">\n            <summary>Constant OutputRegisterCount.</summary>\n            <unmanaged>D3D11_PS_OUTPUT_REGISTER_COUNT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.PixelShaderStage.OutputDepthRegisterComponentBitCount\">\n            <summary>Constant OutputDepthRegisterComponentBitCount.</summary>\n            <unmanaged>D3D11_PS_OUTPUT_DEPTH_REGISTER_COMPONENT_BIT_COUNT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.PixelShaderStage.FrontfacingDefaultValue\">\n            <summary>Constant FrontfacingDefaultValue.</summary>\n            <unmanaged>D3D11_PS_FRONTFACING_DEFAULT_VALUE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.PixelShaderStage.FrontfacingFalseValue\">\n            <summary>Constant FrontfacingFalseValue.</summary>\n            <unmanaged>D3D11_PS_FRONTFACING_FALSE_VALUE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.PixelShaderStage.InputRegisterCount\">\n            <summary>Constant InputRegisterCount.</summary>\n            <unmanaged>D3D11_PS_INPUT_REGISTER_COUNT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.PixelShaderStage.InputRegisterReadPorts\">\n            <summary>Constant InputRegisterReadPorts.</summary>\n            <unmanaged>D3D11_PS_INPUT_REGISTER_READ_PORTS</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.PixelShaderStage.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D11.PixelShaderStage\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.PixelShaderStage.op_Explicit(System.IntPtr)~SharpDX.Direct3D11.PixelShaderStage\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D11.PixelShaderStage\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.PixelShaderStage.SetShaderResources(System.Int32,System.Int32,System.IntPtr)\">\n            <summary>\t\n            <p>Bind an array of shader resources to the pixel shader stage.</p>\t\n            </summary>\t\n            <param name=\"startSlot\"><dd>  <p>Index into the device's zero-based array to begin setting shader resources to (ranges from 0 to <see cref=\"F:SharpDX.Direct3D11.CommonShaderStage.InputResourceSlotCount\"/> - 1).</p> </dd></param>\t\n            <param name=\"numViews\"><dd>  <p>Number of shader resources to set. Up to a maximum of 128 slots are available for shader resources (ranges from 0 to <see cref=\"F:SharpDX.Direct3D11.CommonShaderStage.InputResourceSlotCount\"/> - StartSlot).</p> </dd></param>\t\n            <param name=\"shaderResourceViewsOut\"><dd>  <p>Array of <strong>shader resource view</strong> interfaces to set to the device.</p> </dd></param>\t\n            <remarks>\t\n            <p>If an overlapping resource view is already bound to an output slot, such as a rendertarget, then this API will fill the destination shader resource slot with <strong><c>null</c></strong>.</p><p>For information about creating shader-resource views, see <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateShaderResourceView(SharpDX.Direct3D11.Resource,System.Nullable{SharpDX.Direct3D11.ShaderResourceViewDescription},SharpDX.Direct3D11.ShaderResourceView)\"/></strong>.</p><p> The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::PSSetShaderResources']/*\"/>\t\n            <msdn-id>ff476473</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::PSSetShaderResources([In] unsigned int StartSlot,[In] unsigned int NumViews,[In, Buffer] const void** ppShaderResourceViews)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::PSSetShaderResources</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.PixelShaderStage.SetShader(SharpDX.Direct3D11.PixelShader,SharpDX.Direct3D11.ClassInstance[],System.Int32)\">\n            <summary>\t\n            <p>Sets a pixel shader to the device.</p>\t\n            </summary>\t\n            <param name=\"pixelShaderRef\"><dd>  <p>Pointer to a pixel shader (see <strong><see cref=\"T:SharpDX.Direct3D11.PixelShader\"/></strong>). Passing in <strong><c>null</c></strong> disables the shader for this pipeline stage.</p> </dd></param>\t\n            <param name=\"classInstancesOut\"><dd>  <p>A reference to an array of class-instance interfaces (see <strong><see cref=\"T:SharpDX.Direct3D11.ClassInstance\"/></strong>). Each interface used by a shader must have a corresponding class instance or the shader will get disabled. Set ppClassInstances to <strong><c>null</c></strong> if the shader does not use any interfaces.</p> </dd></param>\t\n            <param name=\"numClassInstances\"><dd>  <p>The number of class-instance interfaces in the array.</p> </dd></param>\t\n            <remarks>\t\n            <p> The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. </p><p>The maximum number of instances a shader can have is 256.</p><p>Set ppClassInstances to <strong><c>null</c></strong> if no interfaces are used in the shader. If it is not <strong><c>null</c></strong>, the number of class instances must match the number of interfaces used in the shader. Furthermore, each interface reference must have a corresponding class instance or the assigned shader will be disabled.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::PSSetShader']/*\"/>\t\n            <msdn-id>ff476472</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::PSSetShader([In, Optional] ID3D11PixelShader* pPixelShader,[In, Buffer, Optional] const ID3D11ClassInstance** ppClassInstances,[In] unsigned int NumClassInstances)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::PSSetShader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.PixelShaderStage.SetShader(SharpDX.Direct3D11.PixelShader,SharpDX.ComArray{SharpDX.Direct3D11.ClassInstance},System.Int32)\">\n            <summary>\t\n            <p>Sets a pixel shader to the device.</p>\t\n            </summary>\t\n            <param name=\"pixelShaderRef\"><dd>  <p>Pointer to a pixel shader (see <strong><see cref=\"T:SharpDX.Direct3D11.PixelShader\"/></strong>). Passing in <strong><c>null</c></strong> disables the shader for this pipeline stage.</p> </dd></param>\t\n            <param name=\"classInstancesOut\"><dd>  <p>A reference to an array of class-instance interfaces (see <strong><see cref=\"T:SharpDX.Direct3D11.ClassInstance\"/></strong>). Each interface used by a shader must have a corresponding class instance or the shader will get disabled. Set ppClassInstances to <strong><c>null</c></strong> if the shader does not use any interfaces.</p> </dd></param>\t\n            <param name=\"numClassInstances\"><dd>  <p>The number of class-instance interfaces in the array.</p> </dd></param>\t\n            <remarks>\t\n            <p> The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. </p><p>The maximum number of instances a shader can have is 256.</p><p>Set ppClassInstances to <strong><c>null</c></strong> if no interfaces are used in the shader. If it is not <strong><c>null</c></strong>, the number of class instances must match the number of interfaces used in the shader. Furthermore, each interface reference must have a corresponding class instance or the assigned shader will be disabled.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::PSSetShader']/*\"/>\t\n            <msdn-id>ff476472</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::PSSetShader([In, Optional] ID3D11PixelShader* pPixelShader,[In, Buffer, Optional] const ID3D11ClassInstance** ppClassInstances,[In] unsigned int NumClassInstances)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::PSSetShader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.PixelShaderStage.SetSamplers(System.Int32,System.Int32,System.IntPtr)\">\n            <summary>\t\n            <p>Set an array of sampler states to the pixel shader pipeline stage.</p>\t\n            </summary>\t\n            <param name=\"startSlot\"><dd>  <p>Index into the device's zero-based array to begin setting samplers to (ranges from 0 to <see cref=\"F:SharpDX.Direct3D11.CommonShaderStage.SamplerSlotCount\"/> - 1).</p> </dd></param>\t\n            <param name=\"numSamplers\"><dd>  <p>Number of samplers in the array. Each pipeline stage has a total of 16 sampler slots available (ranges from 0 to <see cref=\"F:SharpDX.Direct3D11.CommonShaderStage.SamplerSlotCount\"/> - StartSlot).</p> </dd></param>\t\n            <param name=\"samplersOut\"><dd>  <p>Pointer to an array of sampler-state interfaces (see <strong><see cref=\"T:SharpDX.Direct3D11.SamplerState\"/></strong>). See Remarks.</p> </dd></param>\t\n            <remarks>\t\n            <p>Any sampler may be set to <strong><c>null</c></strong>; this invokes the default state, which is defined to be the following.</p><table> <tr><th>State</th><th>Default Value</th></tr> <tr><td>Filter</td><td><see cref=\"F:SharpDX.Direct3D11.Filter.MinMagMipLinear\"/></td></tr> <tr><td>AddressU</td><td><see cref=\"F:SharpDX.Direct3D11.TextureAddressMode.Clamp\"/></td></tr> <tr><td>AddressV</td><td><see cref=\"F:SharpDX.Direct3D11.TextureAddressMode.Clamp\"/></td></tr> <tr><td>AddressW</td><td><see cref=\"F:SharpDX.Direct3D11.TextureAddressMode.Clamp\"/></td></tr> <tr><td>MipLODBias</td><td>0</td></tr> <tr><td>MaxAnisotropy</td><td>1</td></tr> <tr><td>ComparisonFunc</td><td><see cref=\"F:SharpDX.Direct3D11.Comparison.Never\"/></td></tr> <tr><td>BorderColor[0]</td><td>1.0f</td></tr> <tr><td>BorderColor[1]</td><td>1.0f</td></tr> <tr><td>BorderColor[2]</td><td>1.0f</td></tr> <tr><td>BorderColor[3]</td><td>1.0f</td></tr> <tr><td>MinLOD</td><td>-FLT_MAX</td></tr> <tr><td>MaxLOD</td><td>FLT_MAX</td></tr> </table><p>?</p><p> The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::PSSetSamplers']/*\"/>\t\n            <msdn-id>ff476471</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::PSSetSamplers([In] unsigned int StartSlot,[In] unsigned int NumSamplers,[In, Buffer] const void** ppSamplers)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::PSSetSamplers</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.PixelShaderStage.SetConstantBuffers(System.Int32,System.Int32,System.IntPtr)\">\n            <summary>\t\n            <p>Sets the constant buffers used by the pixel shader pipeline stage.</p>\t\n            </summary>\t\n            <param name=\"startSlot\"><dd>  <p>Index into the device's zero-based array to begin setting constant buffers to (ranges from 0 to <strong><see cref=\"F:SharpDX.Direct3D11.CommonShaderStage.ConstantBufferApiSlotCount\"/></strong> - 1).</p> </dd></param>\t\n            <param name=\"numBuffers\"><dd>  <p>Number of buffers to set (ranges from 0 to <strong><see cref=\"F:SharpDX.Direct3D11.CommonShaderStage.ConstantBufferApiSlotCount\"/></strong> - <em>StartSlot</em>).</p> </dd></param>\t\n            <param name=\"constantBuffersOut\"><dd>  <p>Array of constant buffers (see <strong><see cref=\"T:SharpDX.Direct3D11.Buffer\"/></strong>) being given to the device.</p> </dd></param>\t\n            <remarks>\t\n            <p> The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. </p><p>The Direct3D 11.1 runtime, which is available on Windows Developer Preview and later operating systems, can bind a larger number of <strong><see cref=\"T:SharpDX.Direct3D11.Buffer\"/></strong> resources to the shader than the maximum constant buffer size that is supported by shaders (4096 constants ? 4*32-bit components each).  When you bind such a large buffer, the shader can access only the first 4096 4*32-bit component constants in the buffer, as if 4096 constants is the full size of the buffer.  </p><p>If the application wants the shader to access other parts of the buffer, it must call the <strong>PSSetConstantBuffers1</strong> method instead. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::PSSetConstantBuffers']/*\"/>\t\n            <msdn-id>ff476470</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::PSSetConstantBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[In, Buffer] const void** ppConstantBuffers)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::PSSetConstantBuffers</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.PixelShaderStage.GetShaderResources(System.Int32,System.Int32,SharpDX.Direct3D11.ShaderResourceView[])\">\n            <summary>\t\n            <p>Get the pixel shader resources.</p>\t\n            </summary>\t\n            <param name=\"startSlot\"><dd>  <p>Index into the device's zero-based array to begin getting shader resources from (ranges from 0 to <see cref=\"F:SharpDX.Direct3D11.CommonShaderStage.InputResourceSlotCount\"/> - 1).</p> </dd></param>\t\n            <param name=\"numViews\"><dd>  <p>The number of resources to get from the device. Up to a maximum of 128 slots are available for shader resources (ranges from 0 to <see cref=\"F:SharpDX.Direct3D11.CommonShaderStage.InputResourceSlotCount\"/> - StartSlot).</p> </dd></param>\t\n            <param name=\"shaderResourceViewsOut\"><dd>  <p>Array of <strong>shader resource view</strong> interfaces to be returned by the device.</p> </dd></param>\t\n            <remarks>\t\n            <p>Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::PSGetShaderResources']/*\"/>\t\n            <msdn-id>ff476469</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::PSGetShaderResources([In] unsigned int StartSlot,[In] unsigned int NumViews,[Out, Buffer] ID3D11ShaderResourceView** ppShaderResourceViews)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::PSGetShaderResources</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.PixelShaderStage.GetShader(SharpDX.Direct3D11.PixelShader@,SharpDX.Direct3D11.ClassInstance[],System.Int32@)\">\n            <summary>\t\n            <p>Get the pixel shader currently set on the device.</p>\t\n            </summary>\t\n            <param name=\"pixelShaderOut\"><dd>  <p>Address of a reference to a pixel shader (see <strong><see cref=\"T:SharpDX.Direct3D11.PixelShader\"/></strong>) to be returned by the method.</p> </dd></param>\t\n            <param name=\"classInstancesOut\"><dd>  <p>Pointer to an array of class instance interfaces (see <strong><see cref=\"T:SharpDX.Direct3D11.ClassInstance\"/></strong>).</p> </dd></param>\t\n            <param name=\"numClassInstancesRef\"><dd>  <p>The number of class-instance elements in the array.</p> </dd></param>\t\n            <remarks>\t\n            <p>Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::PSGetShader']/*\"/>\t\n            <msdn-id>ff476468</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::PSGetShader([Out] ID3D11PixelShader** ppPixelShader,[Out, Buffer, Optional] ID3D11ClassInstance** ppClassInstances,[InOut] unsigned int* pNumClassInstances)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::PSGetShader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.PixelShaderStage.GetSamplers(System.Int32,System.Int32,SharpDX.Direct3D11.SamplerState[])\">\n            <summary>\t\n            <p>Get an array of sampler states from the pixel shader pipeline stage.</p>\t\n            </summary>\t\n            <param name=\"startSlot\"><dd>  <p>Index into a zero-based array to begin getting samplers from (ranges from 0 to <see cref=\"F:SharpDX.Direct3D11.CommonShaderStage.SamplerSlotCount\"/> - 1).</p> </dd></param>\t\n            <param name=\"numSamplers\"><dd>  <p>Number of samplers to get from a device context. Each pipeline stage has a total of 16 sampler slots available (ranges from 0 to <see cref=\"F:SharpDX.Direct3D11.CommonShaderStage.SamplerSlotCount\"/> - StartSlot).</p> </dd></param>\t\n            <param name=\"samplersOut\"><dd>  <p>Arry of sampler-state interface references (see <strong><see cref=\"T:SharpDX.Direct3D11.SamplerState\"/></strong>) to be returned by the device.</p> </dd></param>\t\n            <remarks>\t\n            <p>Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::PSGetSamplers']/*\"/>\t\n            <msdn-id>ff476467</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::PSGetSamplers([In] unsigned int StartSlot,[In] unsigned int NumSamplers,[Out, Buffer] ID3D11SamplerState** ppSamplers)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::PSGetSamplers</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.PixelShaderStage.GetConstantBuffers(System.Int32,System.Int32,SharpDX.Direct3D11.Buffer[])\">\n            <summary>\t\n            <p>Get the constant buffers used by the pixel shader pipeline stage.</p>\t\n            </summary>\t\n            <param name=\"startSlot\"><dd>  <p>Index into the device's zero-based array to begin retrieving constant buffers from (ranges from 0 to <see cref=\"F:SharpDX.Direct3D11.CommonShaderStage.ConstantBufferApiSlotCount\"/> - 1).</p> </dd></param>\t\n            <param name=\"numBuffers\"><dd>  <p>Number of buffers to retrieve (ranges from 0 to <see cref=\"F:SharpDX.Direct3D11.CommonShaderStage.ConstantBufferApiSlotCount\"/> - StartSlot).</p> </dd></param>\t\n            <param name=\"constantBuffersOut\"><dd>  <p>Array of constant buffer interface references (see <strong><see cref=\"T:SharpDX.Direct3D11.Buffer\"/></strong>) to be returned by the method.</p> </dd></param>\t\n            <remarks>\t\n            <p>Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::PSGetConstantBuffers']/*\"/>\t\n            <msdn-id>ff476466</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::PSGetConstantBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[Out, Buffer] ID3D11Buffer** ppConstantBuffers)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::PSGetConstantBuffers</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.Predicate\">\n            <summary>\t\n            <p>A predicate interface determines whether geometry should be processed depending on the results of a previous draw call.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>To create a predicate object, call <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreatePredicate(SharpDX.Direct3D11.QueryDescription,SharpDX.Direct3D11.Predicate)\"/></strong>. To set the predicate object, call <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.SetPredication(SharpDX.Direct3D11.Predicate,SharpDX.Bool)\"/></strong>.</p><p>There are two types of predicates: stream-output-overflow predicates and occlusion predicates. Stream-output-overflow predicates cause any geometry residing in stream-output buffers that were overflowed to not be processed. Occlusion predicates cause any geometry that did not have a single sample pass the depth/stencil tests to not be processed.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Predicate']/*\"/>\t\n            <msdn-id>ff476577</msdn-id>\t\n            <unmanaged>ID3D11Predicate</unmanaged>\t\n            <unmanaged-short>ID3D11Predicate</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.Query\">\n            <summary>\t\n            <p>A query interface queries information from the GPU.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>A query can be created with <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateQuery(SharpDX.Direct3D11.QueryDescription,SharpDX.Direct3D11.Query)\"/></strong>.</p><p>Query data is typically gathered by issuing an <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.Begin(SharpDX.Direct3D11.Asynchronous)\"/></strong> command, issuing some graphics commands, issuing an <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.End(SharpDX.Direct3D11.Asynchronous)\"/></strong> command, and then calling <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.GetDataInternal(SharpDX.Direct3D11.Asynchronous,System.IntPtr,System.Int32,SharpDX.Direct3D11.AsynchronousFlags)\"/></strong> to get data about what happened in between the Begin and End calls. The data returned by <strong>GetData</strong> will be different depending on the type of query.</p><p>There are, however, some queries that do not require calls to <strong>Begin</strong>. For a list of possible queries see <strong><see cref=\"T:SharpDX.Direct3D11.QueryType\"/></strong>.</p><p>A query is typically executed as shown in the following code:</p><pre><code> <see cref=\"T:SharpDX.Direct3D11.QueryDescription\"/> queryDesc;\t\n            ... // Fill out queryDesc structure\t\n            <see cref=\"T:SharpDX.Direct3D11.Query\"/> * pQuery;\t\n            pDevice-&gt;CreateQuery(&amp;queryDesc, &amp;pQuery);\t\n            pDeviceContext-&gt;Begin(pQuery); ... // Issue graphics commands pDeviceContext-&gt;End(pQuery);\t\n            UINT64 queryData; // This data type is different depending on the query type while( <see cref=\"F:SharpDX.Result.Ok\"/> != pDeviceContext-&gt;GetData(pQuery, &amp;queryData, sizeof(UINT64), 0) )\t\n            {\t\n            }\t\n            </code></pre><p>When using a query that does not require a call to <strong>Begin</strong>, it still requires a call to <strong>End</strong>. The call to <strong>End</strong> causes the data returned by <strong>GetData</strong> to be accurate up until the last call to <strong>End</strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Query']/*\"/>\t\n            <msdn-id>ff476578</msdn-id>\t\n            <unmanaged>ID3D11Query</unmanaged>\t\n            <unmanaged-short>ID3D11Query</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Query.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D11.Query\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Query.op_Explicit(System.IntPtr)~SharpDX.Direct3D11.Query\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D11.Query\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Query.GetDescription(SharpDX.Direct3D11.QueryDescription@)\">\n            <summary>\t\n            <p>Get a query description.</p>\t\n            </summary>\t\n            <param name=\"descRef\"><dd>  <p>Pointer to a query description (see <strong><see cref=\"T:SharpDX.Direct3D11.QueryDescription\"/></strong>).</p> </dd></param>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Query::GetDesc']/*\"/>\t\n            <msdn-id>ff476579</msdn-id>\t\n            <unmanaged>void ID3D11Query::GetDesc([Out] D3D11_QUERY_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>ID3D11Query::GetDesc</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Query.#ctor(SharpDX.Direct3D11.Device,SharpDX.Direct3D11.QueryDescription)\">\n            <summary>\n              Constructs a new <see cref = \"T:SharpDX.Direct3D11.Query\" /> based on the specified description.\n            </summary>\n            <param name = \"device\">The device with which to associate the state object.</param>\n            <param name = \"description\">The query description.</param>\n            <returns>The newly created object.</returns>\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.Query.Description\">\n            <summary>\t\n            <p>Get a query description.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Query::GetDesc']/*\"/>\t\n            <msdn-id>ff476579</msdn-id>\t\n            <unmanaged>GetDesc</unmanaged>\t\n            <unmanaged-short>GetDesc</unmanaged-short>\t\n            <unmanaged>void ID3D11Query::GetDesc([Out] D3D11_QUERY_DESC* pDesc)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Predicate.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D11.Predicate\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Predicate.op_Explicit(System.IntPtr)~SharpDX.Direct3D11.Predicate\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D11.Predicate\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Predicate.#ctor(SharpDX.Direct3D11.Device,SharpDX.Direct3D11.QueryDescription)\">\n            <summary>\n              Constructs a new <see cref = \"T:SharpDX.Direct3D11.Predicate\" /> based on the specified description.\n            </summary>\n            <param name = \"device\">The device with which to associate the state object.</param>\n            <param name = \"description\">The query description.</param>\n            <returns>The newly created object.</returns>\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.RasterizerState\">\n            <summary>\t\n            <p>The rasterizer-state interface holds a description for rasterizer state that you can bind to the rasterizer stage.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>To create a rasterizer-state object, call <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateRasterizerState(SharpDX.Direct3D11.RasterizerStateDescription@,SharpDX.Direct3D11.RasterizerState)\"/></strong>. To bind the rasterizer-state object to the rasterizer stage, call <strong><see cref=\"M:SharpDX.Direct3D11.RasterizerStage.SetState(SharpDX.Direct3D11.RasterizerState)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11RasterizerState']/*\"/>\t\n            <msdn-id>ff476580</msdn-id>\t\n            <unmanaged>ID3D11RasterizerState</unmanaged>\t\n            <unmanaged-short>ID3D11RasterizerState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.RasterizerState.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D11.RasterizerState\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.RasterizerState.op_Explicit(System.IntPtr)~SharpDX.Direct3D11.RasterizerState\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D11.RasterizerState\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.RasterizerState.GetDescription(SharpDX.Direct3D11.RasterizerStateDescription@)\">\n            <summary>\t\n            <p>Gets the description for rasterizer state that you used to create the rasterizer-state object.</p>\t\n            </summary>\t\n            <param name=\"descRef\"><dd>  <p>A reference to a <strong><see cref=\"T:SharpDX.Direct3D11.RasterizerStateDescription\"/></strong> structure that receives a description of the rasterizer state.</p> </dd></param>\t\n            <remarks>\t\n            <p>You use the description for rasterizer state in a call to the <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateRasterizerState(SharpDX.Direct3D11.RasterizerStateDescription@,SharpDX.Direct3D11.RasterizerState)\"/></strong> method to create the rasterizer-state object.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11RasterizerState::GetDesc']/*\"/>\t\n            <msdn-id>ff476581</msdn-id>\t\n            <unmanaged>void ID3D11RasterizerState::GetDesc([Out] D3D11_RASTERIZER_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>ID3D11RasterizerState::GetDesc</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.RasterizerState.#ctor(SharpDX.Direct3D11.Device,SharpDX.Direct3D11.RasterizerStateDescription)\">\n            <summary>\t\n            <p>Create a rasterizer state object that tells the rasterizer stage how to behave.</p>\t\n            </summary>\t\n            <param name = \"device\">The device with which to associate the state object.</param>\n            <param name=\"description\">A rasterizer state description</param>\t\n            <remarks>\t\n            <p>4096 unique rasterizer state objects can be created on a device at a time.</p><p>If an application attempts to create a rasterizer-state interface with the same state as an existing interface, the same interface will be returned and the total number of unique rasterizer state objects will stay the same.</p>\t\n            </remarks>\t\n            <msdn-id>ff476516</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateRasterizerState([In] const D3D11_RASTERIZER_DESC* pRasterizerDesc,[Out, Fast] ID3D11RasterizerState** ppRasterizerState)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateRasterizerState</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.RasterizerState.Description\">\n            <summary>\t\n            <p>Gets the description for rasterizer state that you used to create the rasterizer-state object.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>You use the description for rasterizer state in a call to the <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateRasterizerState(SharpDX.Direct3D11.RasterizerStateDescription@,SharpDX.Direct3D11.RasterizerState)\"/></strong> method to create the rasterizer-state object.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11RasterizerState::GetDesc']/*\"/>\t\n            <msdn-id>ff476581</msdn-id>\t\n            <unmanaged>GetDesc</unmanaged>\t\n            <unmanaged-short>GetDesc</unmanaged-short>\t\n            <unmanaged>void ID3D11RasterizerState::GetDesc([Out] D3D11_RASTERIZER_DESC* pDesc)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.RenderTargetView\">\n            <summary>\t\n            <p>A render-target-view interface identifies the render-target subresources that can be accessed during rendering.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>To create a render-target view, call <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateRenderTargetView(SharpDX.Direct3D11.Resource,System.Nullable{SharpDX.Direct3D11.RenderTargetViewDescription},SharpDX.Direct3D11.RenderTargetView)\"/></strong>. To bind a render-target view to the pipeline, call <strong><see cref=\"M:SharpDX.Direct3D11.OutputMergerStage.SetRenderTargets(System.Int32,System.IntPtr,SharpDX.Direct3D11.DepthStencilView)\"/></strong>.</p><p>A rendertarget is a resource that can be written by the output-merger stage at the end of a render pass. Each render-target should also have a corresponding depth-stencil view.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11RenderTargetView']/*\"/>\t\n            <msdn-id>ff476582</msdn-id>\t\n            <unmanaged>ID3D11RenderTargetView</unmanaged>\t\n            <unmanaged-short>ID3D11RenderTargetView</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.RenderTargetView.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D11.RenderTargetView\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.RenderTargetView.op_Explicit(System.IntPtr)~SharpDX.Direct3D11.RenderTargetView\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D11.RenderTargetView\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.RenderTargetView.GetDescription(SharpDX.Direct3D11.RenderTargetViewDescription@)\">\n            <summary>\t\n            <p>Get the properties of a render target view.</p>\t\n            </summary>\t\n            <param name=\"descRef\"><dd>  <p>Pointer to the description of a render target view (see <strong><see cref=\"T:SharpDX.Direct3D11.RenderTargetViewDescription\"/></strong>).</p> </dd></param>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11RenderTargetView::GetDesc']/*\"/>\t\n            <msdn-id>ff476583</msdn-id>\t\n            <unmanaged>void ID3D11RenderTargetView::GetDesc([Out] D3D11_RENDER_TARGET_VIEW_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>ID3D11RenderTargetView::GetDesc</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.RenderTargetView.#ctor(SharpDX.Direct3D11.Device,SharpDX.Direct3D11.Resource)\">\n            <summary>\n              Creates a <see cref = \"T:SharpDX.Direct3D11.RenderTargetView\" /> for accessing resource data.\n            </summary>\n            <param name = \"device\">The device to use when creating this <see cref = \"T:SharpDX.Direct3D11.RenderTargetView\" />.</param>\n            <param name = \"resource\">The resource that represents the render-target surface. This surface must have been created with the <see cref = \"T:SharpDX.Direct3D11.BindFlags\">RenderTarget</see> flag.</param>\n            <unmanaged>ID3D11Device::CreateRenderTargetView</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.RenderTargetView.#ctor(SharpDX.Direct3D11.Device,SharpDX.Direct3D11.Resource,SharpDX.Direct3D11.RenderTargetViewDescription)\">\n            <summary>\n              Creates a <see cref = \"T:SharpDX.Direct3D11.RenderTargetView\" /> for accessing resource data.\n            </summary>\n            <param name = \"device\">The device to use when creating this <see cref = \"T:SharpDX.Direct3D11.RenderTargetView\" />.</param>\n            <param name = \"resource\">The resource that represents the render-target surface. This surface must have been created with the <see cref = \"T:SharpDX.Direct3D11.BindFlags\">RenderTarget</see> flag.</param>\n            <param name = \"description\">A structure describing the <see cref = \"T:SharpDX.Direct3D11.RenderTargetView\" /> to be created.</param>\n            <unmanaged>ID3D11Device::CreateRenderTargetView</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.RenderTargetView.Description\">\n            <summary>\t\n            <p>Get the properties of a render target view.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11RenderTargetView::GetDesc']/*\"/>\t\n            <msdn-id>ff476583</msdn-id>\t\n            <unmanaged>GetDesc</unmanaged>\t\n            <unmanaged-short>GetDesc</unmanaged-short>\t\n            <unmanaged>void ID3D11RenderTargetView::GetDesc([Out] D3D11_RENDER_TARGET_VIEW_DESC* pDesc)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.SamplerState\">\n            <summary>\t\n            <p>The sampler-state interface holds a description for sampler state that you can bind to any shader stage of the pipeline for reference by texture sample operations.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>To create a sampler-state object, call <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateSamplerState(SharpDX.Direct3D11.SamplerStateDescription@,SharpDX.Direct3D11.SamplerState)\"/></strong>.</p><p>To bind a sampler-state object to any pipeline shader stage, call the following methods:</p><ul> <li> <strong><see cref=\"M:SharpDX.Direct3D11.VertexShaderStage.SetSamplers(System.Int32,System.Int32,System.IntPtr)\"/></strong> </li> <li> <strong>ID3D11DeviceContext::HSSetSampler</strong> </li> <li> <strong><see cref=\"M:SharpDX.Direct3D11.DomainShaderStage.SetSamplers(System.Int32,System.Int32,System.IntPtr)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.Direct3D11.GeometryShaderStage.SetSamplers(System.Int32,System.Int32,System.IntPtr)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.Direct3D11.PixelShaderStage.SetSamplers(System.Int32,System.Int32,System.IntPtr)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.Direct3D11.ComputeShaderStage.SetSamplers(System.Int32,System.Int32,System.IntPtr)\"/></strong> </li> </ul><p>You can bind the same sampler-state object to multiple shader stages simultaneously.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11SamplerState']/*\"/>\t\n            <msdn-id>ff476588</msdn-id>\t\n            <unmanaged>ID3D11SamplerState</unmanaged>\t\n            <unmanaged-short>ID3D11SamplerState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.SamplerState.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D11.SamplerState\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.SamplerState.op_Explicit(System.IntPtr)~SharpDX.Direct3D11.SamplerState\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D11.SamplerState\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.SamplerState.GetDescription(SharpDX.Direct3D11.SamplerStateDescription@)\">\n            <summary>\t\n            <p>Gets the description for sampler state that you used to create the sampler-state object.</p>\t\n            </summary>\t\n            <param name=\"descRef\"><dd>  <p>A reference to a <strong><see cref=\"T:SharpDX.Direct3D11.SamplerStateDescription\"/></strong> structure that receives a description of the sampler state.</p> </dd></param>\t\n            <remarks>\t\n            <p>You use the description for sampler state in a call to the <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateSamplerState(SharpDX.Direct3D11.SamplerStateDescription@,SharpDX.Direct3D11.SamplerState)\"/></strong> method to create the sampler-state object.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11SamplerState::GetDesc']/*\"/>\t\n            <msdn-id>ff476589</msdn-id>\t\n            <unmanaged>void ID3D11SamplerState::GetDesc([Out] D3D11_SAMPLER_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>ID3D11SamplerState::GetDesc</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.SamplerState.#ctor(SharpDX.Direct3D11.Device,SharpDX.Direct3D11.SamplerStateDescription)\">\n            <summary>\n              Constructs a new <see cref = \"T:SharpDX.Direct3D11.SamplerState\" /> based on the specified description.\n            </summary>\n            <param name = \"device\">The device with which to associate the state object.</param>\n            <param name = \"description\">The state description.</param>\n            <returns>The newly created object.</returns>\n            <msdn-id>ff476518</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateSamplerState([In] const D3D11_SAMPLER_DESC* pSamplerDesc,[Out, Fast] ID3D11SamplerState** ppSamplerState)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateSamplerState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.SamplerState.#ctor(SharpDX.Direct3D11.Device,SharpDX.Direct3D11.SamplerStateDescription@)\">\n            <summary>\n              Constructs a new <see cref = \"T:SharpDX.Direct3D11.SamplerState\" /> based on the specified description.\n            </summary>\n            <param name = \"device\">The device with which to associate the state object.</param>\n            <param name = \"description\">The state description.</param>\n            <returns>The newly created object.</returns>\n            <msdn-id>ff476518</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateSamplerState([In] const D3D11_SAMPLER_DESC* pSamplerDesc,[Out, Fast] ID3D11SamplerState** ppSamplerState)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateSamplerState</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.SamplerState.Description\">\n            <summary>\t\n            <p>Gets the description for sampler state that you used to create the sampler-state object.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>You use the description for sampler state in a call to the <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateSamplerState(SharpDX.Direct3D11.SamplerStateDescription@,SharpDX.Direct3D11.SamplerState)\"/></strong> method to create the sampler-state object.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11SamplerState::GetDesc']/*\"/>\t\n            <msdn-id>ff476589</msdn-id>\t\n            <unmanaged>GetDesc</unmanaged>\t\n            <unmanaged-short>GetDesc</unmanaged-short>\t\n            <unmanaged>void ID3D11SamplerState::GetDesc([Out] D3D11_SAMPLER_DESC* pDesc)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.Scan\">\n            <summary>\t\n            <p>Sets which direction to perform scans in.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p><strong>SetScanDirection</strong> sets the direction <strong><see cref=\"M:SharpDX.Direct3D11.Scan.PerformScan(SharpDX.Direct3D11.ScanDataType,SharpDX.Direct3D11.ScanOperationCode,System.Int32,SharpDX.Direct3D11.UnorderedAccessView,SharpDX.Direct3D11.UnorderedAccessView)\"/></strong> and <strong><see cref=\"M:SharpDX.Direct3D11.Scan.PerformMultiscan(SharpDX.Direct3D11.ScanDataType,SharpDX.Direct3D11.ScanOperationCode,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D11.UnorderedAccessView,SharpDX.Direct3D11.UnorderedAccessView)\"/></strong> will performed scans in.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11Scan']/*\"/>\t\n            <msdn-id>ff476857</msdn-id>\t\n            <unmanaged>ID3DX11Scan</unmanaged>\t\n            <unmanaged-short>ID3DX11Scan</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Scan.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D11.Scan\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Scan.op_Explicit(System.IntPtr)~SharpDX.Direct3D11.Scan\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D11.Scan\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Scan.SetScanDirection(SharpDX.Direct3D11.ScanDirection)\">\n            <summary>\t\n            <p>Sets which direction to perform scans in.</p>\t\n            </summary>\t\n            <param name=\"direction\"><dd>  <p>Direction to perform scans in.  See <strong><see cref=\"T:SharpDX.Direct3D11.ScanDirection\"/></strong>.</p> </dd></param>\t\n            <returns><p>Returns one of the return codes described in the topic Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>SetScanDirection</strong> sets the direction <strong><see cref=\"M:SharpDX.Direct3D11.Scan.PerformScan(SharpDX.Direct3D11.ScanDataType,SharpDX.Direct3D11.ScanOperationCode,System.Int32,SharpDX.Direct3D11.UnorderedAccessView,SharpDX.Direct3D11.UnorderedAccessView)\"/></strong> and <strong><see cref=\"M:SharpDX.Direct3D11.Scan.PerformMultiscan(SharpDX.Direct3D11.ScanDataType,SharpDX.Direct3D11.ScanOperationCode,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D11.UnorderedAccessView,SharpDX.Direct3D11.UnorderedAccessView)\"/></strong> will performed scans in.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11Scan::SetScanDirection']/*\"/>\t\n            <msdn-id>ff476857</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11Scan::SetScanDirection([In] D3DX11_SCAN_DIRECTION Direction)</unmanaged>\t\n            <unmanaged-short>ID3DX11Scan::SetScanDirection</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Scan.PerformScan(SharpDX.Direct3D11.ScanDataType,SharpDX.Direct3D11.ScanOperationCode,System.Int32,SharpDX.Direct3D11.UnorderedAccessView,SharpDX.Direct3D11.UnorderedAccessView)\">\n            <summary>\t\n            <p>Performs an unsegmented scan of a sequence.</p>\t\n            </summary>\t\n            <param name=\"elementType\"><dd>  <p>The type of element in the sequence.  See <strong><see cref=\"T:SharpDX.Direct3D11.ScanDataType\"/></strong> for more information.</p> </dd></param>\t\n            <param name=\"opCode\"><dd>  <p>The binary operation to perform.  See <strong><see cref=\"T:SharpDX.Direct3D11.ScanOperationCode\"/></strong> for more information.</p> </dd></param>\t\n            <param name=\"elementScanSize\"><dd>  <p>Size of scan in elements.</p> </dd></param>\t\n            <param name=\"srcRef\"><dd>  <p>Input sequence on the device.  Set <em>pSrc</em> and <em>pDst</em> to the same value for in-place scans. </p> </dd></param>\t\n            <param name=\"dstRef\"><dd>  <p>Output sequence on the device.</p> </dd></param>\t\n            <returns><p>Returns one of the return codes described in the topic Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>You must point the parameters <em>pSrc</em> and <em>pDst</em> to typed buffers (and not to raw or structured buffers). For information about buffer types, see Types of Resources. The format of these typed buffers must be <strong><see cref=\"F:SharpDX.DXGI.Format.R32_Float\"/></strong>, <strong><see cref=\"F:SharpDX.DXGI.Format.R32_UInt\"/></strong>, or <strong>DXGI_FORMAT_R32_INT</strong>. In addition, the format of these typed buffers must match the scan data type that you specify in the <em>ElementType</em> parameter. For example, if the scan data type is <strong><see cref=\"F:SharpDX.Direct3D11.ScanDataType.UInt\"/></strong>, the buffer formats must be <strong><see cref=\"F:SharpDX.DXGI.Format.R32_UInt\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11Scan::Scan']/*\"/>\t\n            <msdn-id>ff476856</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11Scan::Scan([In] D3DX11_SCAN_DATA_TYPE ElementType,[In] D3DX11_SCAN_OPCODE OpCode,[In] unsigned int ElementScanSize,[In] ID3D11UnorderedAccessView* pSrc,[In] ID3D11UnorderedAccessView* pDst)</unmanaged>\t\n            <unmanaged-short>ID3DX11Scan::Scan</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Scan.PerformMultiscan(SharpDX.Direct3D11.ScanDataType,SharpDX.Direct3D11.ScanOperationCode,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D11.UnorderedAccessView,SharpDX.Direct3D11.UnorderedAccessView)\">\n            <summary>\t\n            <p>Performs a multiscan of a sequence.</p>\t\n            </summary>\t\n            <param name=\"elementType\"><dd>  <p>The type of element in the sequence.  See <strong><see cref=\"T:SharpDX.Direct3D11.ScanDataType\"/></strong> for more information.</p> </dd></param>\t\n            <param name=\"opCode\"><dd>  <p>The binary operation to perform.  See <strong><see cref=\"T:SharpDX.Direct3D11.ScanOperationCode\"/></strong> for more information.</p> </dd></param>\t\n            <param name=\"elementScanSize\"><dd>  <p>Size of scan in elements.</p> </dd></param>\t\n            <param name=\"elementScanPitch\"><dd>  <p>Pitch of the next scan in elements.</p> </dd></param>\t\n            <param name=\"scanCount\"><dd>  <p>Number of scans in the multiscan.</p> </dd></param>\t\n            <param name=\"srcRef\"><dd>  <p>Input sequence on the device.  Set <em>pSrc</em> and <em>pDst</em> to the same value for in-place scans. </p> </dd></param>\t\n            <param name=\"dstRef\"><dd>  <p>Output sequence on the device.</p> </dd></param>\t\n            <returns><p>Returns one of the return codes described in the topic Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>You must point the parameters <em>pSrc</em> and <em>pDst</em> to typed buffers (and not to raw or structured buffers). For information about buffer types, see Types of Resources. The format of these typed buffers must be <strong><see cref=\"F:SharpDX.DXGI.Format.R32_Float\"/></strong>, <strong><see cref=\"F:SharpDX.DXGI.Format.R32_UInt\"/></strong>, or <strong>DXGI_FORMAT_R32_INT</strong>. In addition, the format of these typed buffers must match the scan data type that you specify in the <em>ElementType</em> parameter. For example, if the scan data type is <strong><see cref=\"F:SharpDX.Direct3D11.ScanDataType.UInt\"/></strong>, the buffer formats must be <strong><see cref=\"F:SharpDX.DXGI.Format.R32_UInt\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11Scan::Multiscan']/*\"/>\t\n            <msdn-id>ff476855</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11Scan::Multiscan([In] D3DX11_SCAN_DATA_TYPE ElementType,[In] D3DX11_SCAN_OPCODE OpCode,[In] unsigned int ElementScanSize,[In] unsigned int ElementScanPitch,[In] unsigned int ScanCount,[In] ID3D11UnorderedAccessView* pSrc,[In] ID3D11UnorderedAccessView* pDst)</unmanaged>\t\n            <unmanaged-short>ID3DX11Scan::Multiscan</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Scan.#ctor(SharpDX.Direct3D11.DeviceContext,System.Int32,System.Int32)\">\n            <summary>\t\n            Creates a scan context.\t\n            </summary>\t\n            <param name=\"deviceContext\">The <see cref=\"T:SharpDX.Direct3D11.DeviceContext\"/> the scan is associated with. </param>\n            <param name=\"maxElementScanSize\">Maximum single scan size, in elements (FLOAT, UINT, or INT) </param>\n            <param name=\"maxScanCount\">Maximum number of scans in multiscan. </param>\n            <unmanaged>HRESULT D3DX11CreateScan([In] ID3D11DeviceContext* pDeviceContext,[None] int MaxElementScanSize,[None] int MaxScanCount,[Out] ID3DX11Scan** ppScan)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.SegmentedScan\">\n            <summary>\t\n            <p>Segmented scan context.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11SegmentedScan']/*\"/>\t\n            <msdn-id>ff476858</msdn-id>\t\n            <unmanaged>ID3DX11SegmentedScan</unmanaged>\t\n            <unmanaged-short>ID3DX11SegmentedScan</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.SegmentedScan.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D11.SegmentedScan\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.SegmentedScan.op_Explicit(System.IntPtr)~SharpDX.Direct3D11.SegmentedScan\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D11.SegmentedScan\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.SegmentedScan.SetScanDirection(SharpDX.Direct3D11.ScanDirection)\">\n            <summary>\t\n            <p>Sets which direction to perform scans in.</p>\t\n            </summary>\t\n            <param name=\"direction\"><dd>  <p>Direction to perform scans in.  See <strong><see cref=\"T:SharpDX.Direct3D11.ScanDirection\"/></strong>.</p> </dd></param>\t\n            <returns><p>Returns one of the return codes described in the topic Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>SetScanDirection</strong> sets the direction <strong><see cref=\"M:SharpDX.Direct3D11.SegmentedScan.PerformSegmentedScan(SharpDX.Direct3D11.ScanDataType,SharpDX.Direct3D11.ScanOperationCode,System.Int32,SharpDX.Direct3D11.UnorderedAccessView,SharpDX.Direct3D11.UnorderedAccessView,SharpDX.Direct3D11.UnorderedAccessView)\"/></strong> will performed scans in.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11SegmentedScan::SetScanDirection']/*\"/>\t\n            <msdn-id>ff476860</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11SegmentedScan::SetScanDirection([In] D3DX11_SCAN_DIRECTION Direction)</unmanaged>\t\n            <unmanaged-short>ID3DX11SegmentedScan::SetScanDirection</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.SegmentedScan.PerformSegmentedScan(SharpDX.Direct3D11.ScanDataType,SharpDX.Direct3D11.ScanOperationCode,System.Int32,SharpDX.Direct3D11.UnorderedAccessView,SharpDX.Direct3D11.UnorderedAccessView,SharpDX.Direct3D11.UnorderedAccessView)\">\n            <summary>\t\n            <p>Performs a segmented scan of a sequence.</p>\t\n            </summary>\t\n            <param name=\"elementType\"><dd>  <p>The type of element in the sequence.  See <strong><see cref=\"T:SharpDX.Direct3D11.ScanDataType\"/></strong> for more information.</p> </dd></param>\t\n            <param name=\"opCode\"><dd>  <p>The binary operation to perform.  See <strong><see cref=\"T:SharpDX.Direct3D11.ScanOperationCode\"/></strong> for more information.</p> </dd></param>\t\n            <param name=\"elementScanSize\"><dd>  <p>Size of scan in elements.</p> </dd></param>\t\n            <param name=\"srcRef\"><dd>  <p>Input sequence on the device.  Set <em>pSrc</em> and <em>pDst</em> to the same value for in-place scans. </p> </dd></param>\t\n            <param name=\"srcElementFlagsRef\"><dd>  <p>Compact array of bits with one bit per element of <em>pSrc</em>.  A set value indicates the start of a new segment.</p> </dd></param>\t\n            <param name=\"dstRef\"><dd>  <p>Output sequence on the device.</p> </dd></param>\t\n            <returns><p>Returns one of the return codes described in the topic Direct3D 11 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>You must point the parameters <em>pSrc</em> and <em>pDst</em> to typed buffers (and not to raw or structured buffers). For information about buffer types, see Types of Resources. The format of these typed buffers must be <strong><see cref=\"F:SharpDX.DXGI.Format.R32_Float\"/></strong>, <strong><see cref=\"F:SharpDX.DXGI.Format.R32_UInt\"/></strong>, or <strong>DXGI_FORMAT_R32_INT</strong>. In addition, the format of these typed buffers must match the scan data type that you specify in the <em>ElementType</em> parameter. For example, if the scan data type is <strong><see cref=\"F:SharpDX.Direct3D11.ScanDataType.UInt\"/></strong>, the buffer formats must be <strong><see cref=\"F:SharpDX.DXGI.Format.R32_UInt\"/></strong>.</p><p>The format of the resource view to which the <em>pSrcElementFlags</em> parameter points must be <strong><see cref=\"F:SharpDX.DXGI.Format.R32_UInt\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DX11SegmentedScan::SegScan']/*\"/>\t\n            <msdn-id>ff476859</msdn-id>\t\n            <unmanaged>HRESULT ID3DX11SegmentedScan::SegScan([In] D3DX11_SCAN_DATA_TYPE ElementType,[In] D3DX11_SCAN_OPCODE OpCode,[In] unsigned int ElementScanSize,[In, Optional] ID3D11UnorderedAccessView* pSrc,[In] ID3D11UnorderedAccessView* pSrcElementFlags,[In] ID3D11UnorderedAccessView* pDst)</unmanaged>\t\n            <unmanaged-short>ID3DX11SegmentedScan::SegScan</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.SegmentedScan.#ctor(SharpDX.Direct3D11.DeviceContext,System.Int32)\">\n            <summary>\t\n            Creates a segmented scan context.\t\n            </summary>\t\n            <param name=\"deviceContext\">Pointer to an <see cref=\"T:SharpDX.Direct3D11.DeviceContext\"/> interface. </param>\n            <param name=\"maxElementScanSize\">Maximum single scan size, in elements (FLOAT, UINT, or INT). </param>\n            <unmanaged>HRESULT D3DX11CreateSegmentedScan([In] ID3D11DeviceContext* pDeviceContext,[None] int MaxElementScanSize,[Out] ID3DX11SegmentedScan** ppScan)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.ShaderResourceView\">\n            <summary>\t\n            <p>A shader-resource-view interface specifies the subresources a shader can access during rendering. Examples of shader resources include a constant buffer, a texture buffer, a texture or a sampler.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>To create a shader-resource view, call <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateShaderResourceView(SharpDX.Direct3D11.Resource,System.Nullable{SharpDX.Direct3D11.ShaderResourceViewDescription},SharpDX.Direct3D11.ShaderResourceView)\"/></strong>.</p><p>A shader-resource view is required when binding a resource to a shader stage; the binding occurs by calling <strong><see cref=\"M:SharpDX.Direct3D11.GeometryShaderStage.SetShaderResources(System.Int32,System.Int32,System.IntPtr)\"/></strong>, <strong><see cref=\"M:SharpDX.Direct3D11.VertexShaderStage.SetShaderResources(System.Int32,System.Int32,System.IntPtr)\"/></strong> or <strong><see cref=\"M:SharpDX.Direct3D11.PixelShaderStage.SetShaderResources(System.Int32,System.Int32,System.IntPtr)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11ShaderResourceView']/*\"/>\t\n            <msdn-id>ff476628</msdn-id>\t\n            <unmanaged>ID3D11ShaderResourceView</unmanaged>\t\n            <unmanaged-short>ID3D11ShaderResourceView</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.ShaderResourceView.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D11.ShaderResourceView\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.ShaderResourceView.op_Explicit(System.IntPtr)~SharpDX.Direct3D11.ShaderResourceView\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D11.ShaderResourceView\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.ShaderResourceView.GetDescription(SharpDX.Direct3D11.ShaderResourceViewDescription@)\">\n            <summary>\t\n            <p>Get the shader resource view's description.</p>\t\n            </summary>\t\n            <param name=\"descRef\"><dd>  <p>A reference to a <strong><see cref=\"T:SharpDX.Direct3D11.ShaderResourceViewDescription\"/></strong> structure to be filled with data about the shader resource view.</p> </dd></param>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11ShaderResourceView::GetDesc']/*\"/>\t\n            <msdn-id>ff476629</msdn-id>\t\n            <unmanaged>void ID3D11ShaderResourceView::GetDesc([Out] D3D11_SHADER_RESOURCE_VIEW_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>ID3D11ShaderResourceView::GetDesc</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.ShaderResourceView.#ctor(SharpDX.Direct3D11.Device,SharpDX.Direct3D11.Resource)\">\n            <summary>\n              Creates a <see cref = \"T:SharpDX.Direct3D11.ShaderResourceView\" /> for accessing resource data.\n            </summary>\n            <param name = \"device\">The device to use when creating this <see cref = \"T:SharpDX.Direct3D11.ShaderResourceView\" />.</param>\n            <param name = \"resource\">The resource that represents the render-target surface. This surface must have been created with the <see cref = \"T:SharpDX.Direct3D11.BindFlags\">ShaderResource</see> flag.</param>\n            <msdn-id>ff476519</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateShaderResourceView([In] ID3D11Resource* pResource,[In, Optional] const D3D11_SHADER_RESOURCE_VIEW_DESC* pDesc,[Out, Fast] ID3D11ShaderResourceView** ppSRView)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateShaderResourceView</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.ShaderResourceView.#ctor(SharpDX.Direct3D11.Device,SharpDX.Direct3D11.Resource,SharpDX.Direct3D11.ShaderResourceViewDescription)\">\n            <summary>\n              Creates a <see cref = \"T:SharpDX.Direct3D11.ShaderResourceView\" /> for accessing resource data.\n            </summary>\n            <param name = \"device\">The device to use when creating this <see cref = \"T:SharpDX.Direct3D11.ShaderResourceView\" />.</param>\n            <param name = \"resource\">The resource that represents the render-target surface. This surface must have been created with the <see cref = \"T:SharpDX.Direct3D11.BindFlags\">ShaderResource</see> flag.</param>\n            <param name = \"description\">A structure describing the <see cref = \"T:SharpDX.Direct3D11.ShaderResourceView\" /> to be created.</param>\n            <msdn-id>ff476519</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateShaderResourceView([In] ID3D11Resource* pResource,[In, Optional] const D3D11_SHADER_RESOURCE_VIEW_DESC* pDesc,[Out, Fast] ID3D11ShaderResourceView** ppSRView)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateShaderResourceView</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.ShaderResourceView.FromFile(SharpDX.Direct3D11.Device,System.String)\">\n            <summary>\t\n            Create a shader-resource view from a file. Read the characteristics of a texture when the texture is loaded.\n            </summary>\t\n            <param name=\"device\">A reference to the device (see <see cref=\"T:SharpDX.Direct3D11.Device\"/>) that will use the resource. </param>\n            <param name=\"fileName\">Name of the file that contains the shader-resource view.</param>\n            <returns>Returns a reference to the shader-resource view (see <see cref=\"T:SharpDX.Direct3D11.ShaderResourceView\"/>). </returns>\n            <unmanaged>HRESULT D3DX11CreateShaderResourceViewFromFileW([None] ID3D10Device* pDevice,[None] const wchar_t* pSrcFile,[In, Optional] D3DX11_IMAGE_LOAD_INFO* pLoadInfo,[None] ID3DX11ThreadPump* pPump,[None] ID3D10ShaderResourceView** ppShaderResourceView,[None] HRESULT* pHResult)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.ShaderResourceView.FromFile(SharpDX.Direct3D11.Device,System.String,SharpDX.Direct3D11.ImageLoadInformation)\">\n            <summary>\t\n            Create a shader-resource view from a file.\t\n            </summary>\t\n            <param name=\"device\">A reference to the device (see <see cref=\"T:SharpDX.Direct3D11.Device\"/>) that will use the resource. </param>\n            <param name=\"fileName\">Name of the file that contains the shader-resource view.</param>\n            <param name=\"loadInformation\">Identifies the characteristics of a texture (see <see cref=\"T:SharpDX.Direct3D11.ImageLoadInformation\"/>) when the data processor is created. </param>\n            <returns>Returns a reference to the shader-resource view (see <see cref=\"T:SharpDX.Direct3D11.ShaderResourceView\"/>). </returns>\n            <unmanaged>HRESULT D3DX11CreateShaderResourceViewFromFileW([None] ID3D10Device* pDevice,[None] const wchar_t* pSrcFile,[In, Optional] D3DX11_IMAGE_LOAD_INFO* pLoadInfo,[None] ID3DX11ThreadPump* pPump,[None] ID3D10ShaderResourceView** ppShaderResourceView,[None] HRESULT* pHResult)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.ShaderResourceView.FromMemory(SharpDX.Direct3D11.Device,System.Byte[])\">\n            <summary>\t\n            Create a shader-resource view from a file in memory.\t\n            </summary>\t\n            <param name=\"device\">A reference to the device (see <see cref=\"T:SharpDX.Direct3D11.Device\"/>) that will use the resource. </param>\n            <param name=\"memory\">Pointer to a memory location that contains the shader-resource view. </param>\n            <returns>Returns a reference to the shader-resource view (see <see cref=\"T:SharpDX.Direct3D11.ShaderResourceView\"/>). </returns>\n            <unmanaged>HRESULT D3DX11CreateShaderResourceViewFromMemory([None] ID3D10Device* pDevice,[None] const void* pSrcData,[None] SIZE_T SrcDataSize,[In, Optional] D3DX11_IMAGE_LOAD_INFO* pLoadInfo,[None] ID3DX11ThreadPump* pPump,[None] ID3D10ShaderResourceView** ppShaderResourceView,[None] HRESULT* pHResult)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.ShaderResourceView.FromMemory(SharpDX.Direct3D11.Device,System.Byte[],SharpDX.Direct3D11.ImageLoadInformation)\">\n            <summary>\t\n            Create a shader-resource view from a file in memory.\t\n            </summary>\t\n            <param name=\"device\">A reference to the device (see <see cref=\"T:SharpDX.Direct3D11.Device\"/>) that will use the resource. </param>\n            <param name=\"memory\">Pointer to a memory location that contains the shader-resource view. </param>\n            <param name=\"loadInformation\">Identifies the characteristics of a texture (see <see cref=\"T:SharpDX.Direct3D11.ImageLoadInformation\"/>) when the data processor is created. </param>\n            <returns>Returns a reference to the shader-resource view (see <see cref=\"T:SharpDX.Direct3D11.ShaderResourceView\"/>). </returns>\n            <unmanaged>HRESULT D3DX11CreateShaderResourceViewFromMemory([None] ID3D10Device* pDevice,[None] const void* pSrcData,[None] SIZE_T SrcDataSize,[In, Optional] D3DX11_IMAGE_LOAD_INFO* pLoadInfo,[None] ID3DX11ThreadPump* pPump,[None] ID3D10ShaderResourceView** ppShaderResourceView,[None] HRESULT* pHResult)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.ShaderResourceView.FromStream(SharpDX.Direct3D11.Device,System.IO.Stream,System.Int32)\">\n            <summary>\t\n            Create a shader-resource view from a file in a stream..\t\n            </summary>\t\n            <param name=\"device\">A reference to the device (see <see cref=\"T:SharpDX.Direct3D11.Device\"/>) that will use the resource. </param>\n            <param name=\"stream\">Pointer to the file in memory that contains the shader-resource view. </param>\n            <param name=\"sizeInBytes\">Size of the file to read from the stream</param>\n            <returns>Returns a reference to the shader-resource view (see <see cref=\"T:SharpDX.Direct3D11.ShaderResourceView\"/>). </returns>\n            <unmanaged>HRESULT D3DX11CreateShaderResourceViewFromMemory([None] ID3D10Device* pDevice,[None] const void* pSrcData,[None] SIZE_T SrcDataSize,[In, Optional] D3DX11_IMAGE_LOAD_INFO* pLoadInfo,[None] ID3DX11ThreadPump* pPump,[None] ID3D10ShaderResourceView** ppShaderResourceView,[None] HRESULT* pHResult)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.ShaderResourceView.FromStream(SharpDX.Direct3D11.Device,System.IO.Stream,System.Int32,SharpDX.Direct3D11.ImageLoadInformation)\">\n            <summary>\t\n            Create a shader-resource view from a file in a stream..\t\n            </summary>\t\n            <param name=\"device\">A reference to the device (see <see cref=\"T:SharpDX.Direct3D11.Device\"/>) that will use the resource. </param>\n            <param name=\"stream\">Pointer to the file in memory that contains the shader-resource view. </param>\n            <param name=\"sizeInBytes\">Size of the file to read from the stream</param>\n            <param name=\"loadInformation\">Identifies the characteristics of a texture (see <see cref=\"T:SharpDX.Direct3D11.ImageLoadInformation\"/>) when the data processor is created. </param>\n            <returns>Returns a reference to the shader-resource view (see <see cref=\"T:SharpDX.Direct3D11.ShaderResourceView\"/>). </returns>\n            <unmanaged>HRESULT D3DX11CreateShaderResourceViewFromMemory([None] ID3D10Device* pDevice,[None] const void* pSrcData,[None] SIZE_T SrcDataSize,[In, Optional] D3DX11_IMAGE_LOAD_INFO* pLoadInfo,[None] ID3DX11ThreadPump* pPump,[None] ID3D10ShaderResourceView** ppShaderResourceView,[None] HRESULT* pHResult)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.ShaderResourceView.Description\">\n            <summary>\t\n            <p>Get the shader resource view's description.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11ShaderResourceView::GetDesc']/*\"/>\t\n            <msdn-id>ff476629</msdn-id>\t\n            <unmanaged>GetDesc</unmanaged>\t\n            <unmanaged-short>GetDesc</unmanaged-short>\t\n            <unmanaged>void ID3D11ShaderResourceView::GetDesc([Out] D3D11_SHADER_RESOURCE_VIEW_DESC* pDesc)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.SwitchToRef\">\n            <summary>\t\n            <p><strong>Note</strong>??The <strong><see cref=\"T:SharpDX.Direct3D11.SwitchToRef\"/></strong> interface and its methods are not supported in Direct3D 11.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11SwitchToRef']/*\"/>\t\n            <msdn-id>ff476630</msdn-id>\t\n            <unmanaged>ID3D11SwitchToRef</unmanaged>\t\n            <unmanaged-short>ID3D11SwitchToRef</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.SwitchToRef.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D11.SwitchToRef\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.SwitchToRef.op_Explicit(System.IntPtr)~SharpDX.Direct3D11.SwitchToRef\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D11.SwitchToRef\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.SwitchToRef.SetUseRef(SharpDX.Bool)\">\n            <summary>\t\n            <p><strong>Note</strong>??The <strong><see cref=\"T:SharpDX.Direct3D11.SwitchToRef\"/></strong> interface and its methods are not supported in Direct3D 11.</p>\t\n            </summary>\t\n            <param name=\"useRef\">No documentation.</param>\t\n            <returns><p>Reserved.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11SwitchToRef::SetUseRef']/*\"/>\t\n            <msdn-id>ff476632</msdn-id>\t\n            <unmanaged>BOOL ID3D11SwitchToRef::SetUseRef([In] BOOL UseRef)</unmanaged>\t\n            <unmanaged-short>ID3D11SwitchToRef::SetUseRef</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.SwitchToRef.GetUseRef\">\n            <summary>\t\n            <p><strong>Note</strong>??The <strong><see cref=\"T:SharpDX.Direct3D11.SwitchToRef\"/></strong> interface and its methods are not supported in Direct3D 11.</p>\t\n            </summary>\t\n            <returns><p>Reserved.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11SwitchToRef::GetUseRef']/*\"/>\t\n            <msdn-id>ff476631</msdn-id>\t\n            <unmanaged>BOOL ID3D11SwitchToRef::GetUseRef()</unmanaged>\t\n            <unmanaged-short>ID3D11SwitchToRef::GetUseRef</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.SwitchToRef.UseRef\">\n            <summary>\t\n            <p><strong>Note</strong>??The <strong><see cref=\"T:SharpDX.Direct3D11.SwitchToRef\"/></strong> interface and its methods are not supported in Direct3D 11.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11SwitchToRef::GetUseRef']/*\"/>\t\n            <msdn-id>ff476631</msdn-id>\t\n            <unmanaged>GetUseRef</unmanaged>\t\n            <unmanaged-short>GetUseRef</unmanaged-short>\t\n            <unmanaged>BOOL ID3D11SwitchToRef::GetUseRef()</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.Texture1D\">\n            <summary>\t\n            <p>A 1D texture interface accesses texel data, which is structured memory.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>To create an empty 1D texture, call <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateTexture1D(SharpDX.Direct3D11.Texture1DDescription@,SharpDX.DataBox[],SharpDX.Direct3D11.Texture1D)\"/></strong>. For more details on creating and loading textures, see Creating Texture Resources.</p><p>Textures cannot be bound directly to the pipeline; instead, a view must be created and bound. Using a view, texture data can be interpreted at run time within certain restrictions. To use the texture as a render target or depth-stencil resource, call <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateRenderTargetView(SharpDX.Direct3D11.Resource,System.Nullable{SharpDX.Direct3D11.RenderTargetViewDescription},SharpDX.Direct3D11.RenderTargetView)\"/></strong>, and <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateDepthStencilView(SharpDX.Direct3D11.Resource,System.Nullable{SharpDX.Direct3D11.DepthStencilViewDescription},SharpDX.Direct3D11.DepthStencilView)\"/></strong>, respectively. To use the texture as an input to a shader, create a  by calling <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateShaderResourceView(SharpDX.Direct3D11.Resource,System.Nullable{SharpDX.Direct3D11.ShaderResourceViewDescription},SharpDX.Direct3D11.ShaderResourceView)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Texture1D']/*\"/>\t\n            <msdn-id>ff476633</msdn-id>\t\n            <unmanaged>ID3D11Texture1D</unmanaged>\t\n            <unmanaged-short>ID3D11Texture1D</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Texture1D.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D11.Texture1D\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Texture1D.op_Explicit(System.IntPtr)~SharpDX.Direct3D11.Texture1D\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D11.Texture1D\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Texture1D.GetDescription(SharpDX.Direct3D11.Texture1DDescription@)\">\n            <summary>\t\n            <p>Get the properties of the texture resource.</p>\t\n            </summary>\t\n            <param name=\"descRef\"><dd>  <p>Pointer to a resource description (see <strong><see cref=\"T:SharpDX.Direct3D11.Texture1DDescription\"/></strong>).</p> </dd></param>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Texture1D::GetDesc']/*\"/>\t\n            <msdn-id>ff476634</msdn-id>\t\n            <unmanaged>void ID3D11Texture1D::GetDesc([Out] D3D11_TEXTURE1D_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>ID3D11Texture1D::GetDesc</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Texture1D.#ctor(SharpDX.Direct3D11.Device,SharpDX.Direct3D11.Texture1DDescription)\">\n            <summary>\n              Initializes a new instance of the <see cref = \"T:SharpDX.Direct3D11.Texture1D\" /> class.\n            </summary>\n            <param name = \"device\">The device with which to associate the texture.</param>\n            <param name = \"description\">The description of the texture.</param>\n            <msdn-id>ff476520</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateTexture1D([In] const D3D11_TEXTURE1D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture1D** ppTexture1D)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateTexture1D</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Texture1D.#ctor(SharpDX.Direct3D11.Device,SharpDX.Direct3D11.Texture1DDescription,SharpDX.DataStream[])\">\n            <summary>\n              Initializes a new instance of the <see cref = \"T:SharpDX.Direct3D11.Texture1D\" /> class.\n            </summary>\n            <param name = \"device\">The device with which to associate the texture.</param>\n            <param name = \"description\">The description of the texture.</param>\n            <param name = \"data\">An array of initial texture data for each subresource.</param>\n            <msdn-id>ff476520</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateTexture1D([In] const D3D11_TEXTURE1D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture1D** ppTexture1D)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateTexture1D</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Texture1D.#ctor(SharpDX.Direct3D11.Device,SharpDX.Direct3D11.Texture1DDescription,System.IntPtr[])\">\n            <summary>\n              Initializes a new instance of the <see cref = \"T:SharpDX.Direct3D11.Texture1D\" /> class.\n            </summary>\n            <param name = \"device\">The device with which to associate the texture.</param>\n            <param name = \"description\">The description of the texture.</param>\n            <param name = \"data\">An array of initial texture data for each subresource.</param>\n            <msdn-id>ff476520</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateTexture1D([In] const D3D11_TEXTURE1D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture1D** ppTexture1D)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateTexture1D</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Texture1D.#ctor(SharpDX.Direct3D11.Device,SharpDX.Direct3D11.Texture1DDescription,SharpDX.DataBox[])\">\n            <summary>\n              Initializes a new instance of the <see cref = \"T:SharpDX.Direct3D11.Texture1D\" /> class.\n            </summary>\n            <param name = \"device\">The device with which to associate the texture.</param>\n            <param name = \"description\">The description of the texture.</param>\n            <param name = \"data\">An array of initial texture data for each subresource.</param>\n            <msdn-id>ff476520</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateTexture1D([In] const D3D11_TEXTURE1D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture1D** ppTexture1D)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateTexture1D</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Texture1D.CalculateSubResourceIndex(System.Int32,System.Int32,System.Int32@)\">\n            <inheritdoc/>\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.Texture1D.Description\">\n            <summary>\t\n            <p>Get the properties of the texture resource.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Texture1D::GetDesc']/*\"/>\t\n            <msdn-id>ff476634</msdn-id>\t\n            <unmanaged>GetDesc</unmanaged>\t\n            <unmanaged-short>GetDesc</unmanaged-short>\t\n            <unmanaged>void ID3D11Texture1D::GetDesc([Out] D3D11_TEXTURE1D_DESC* pDesc)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.Texture2D\">\n            <summary>\t\n            <p>A 2D texture interface manages texel data, which is structured memory.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>To create an empty Texture2D resource, call <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateTexture2D(SharpDX.Direct3D11.Texture2DDescription@,SharpDX.DataBox[],SharpDX.Direct3D11.Texture2D)\"/></strong>. For more details on creating and loading textures, see Creating Texture Resources.</p><p>Textures cannot be bound directly to the pipeline; instead, a view must be created and bound. Using a view, texture data can be interpreted at run time within certain restrictions. To use the texture as a render target or depth-stencil resource, call <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateRenderTargetView(SharpDX.Direct3D11.Resource,System.Nullable{SharpDX.Direct3D11.RenderTargetViewDescription},SharpDX.Direct3D11.RenderTargetView)\"/></strong>, and <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateDepthStencilView(SharpDX.Direct3D11.Resource,System.Nullable{SharpDX.Direct3D11.DepthStencilViewDescription},SharpDX.Direct3D11.DepthStencilView)\"/></strong>, respectively. To use the texture as an input to a shader, create a  by calling <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateShaderResourceView(SharpDX.Direct3D11.Resource,System.Nullable{SharpDX.Direct3D11.ShaderResourceViewDescription},SharpDX.Direct3D11.ShaderResourceView)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Texture2D']/*\"/>\t\n            <msdn-id>ff476635</msdn-id>\t\n            <unmanaged>ID3D11Texture2D</unmanaged>\t\n            <unmanaged-short>ID3D11Texture2D</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Texture2D.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D11.Texture2D\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Texture2D.op_Explicit(System.IntPtr)~SharpDX.Direct3D11.Texture2D\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D11.Texture2D\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Texture2D.GetDescription(SharpDX.Direct3D11.Texture2DDescription@)\">\n            <summary>\t\n            <p>Get the properties of the texture resource.</p>\t\n            </summary>\t\n            <param name=\"descRef\"><dd>  <p>Pointer to a resource description (see <strong><see cref=\"T:SharpDX.Direct3D11.Texture2DDescription\"/></strong>).</p> </dd></param>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Texture2D::GetDesc']/*\"/>\t\n            <msdn-id>ff476636</msdn-id>\t\n            <unmanaged>void ID3D11Texture2D::GetDesc([Out] D3D11_TEXTURE2D_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>ID3D11Texture2D::GetDesc</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Texture2D.#ctor(SharpDX.Direct3D11.Device,SharpDX.Direct3D11.Texture2DDescription)\">\n            <summary>\n              Initializes a new instance of the <see cref = \"T:SharpDX.Direct3D11.Texture2D\" /> class.\n            </summary>\n            <param name = \"device\">The device with which to associate the texture.</param>\n            <param name = \"description\">The description of the texture.</param>\n            <msdn-id>ff476521</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateTexture2D([In] const D3D11_TEXTURE2D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture2D** ppTexture2D)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateTexture2D</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Texture2D.#ctor(SharpDX.Direct3D11.Device,SharpDX.Direct3D11.Texture2DDescription,SharpDX.DataRectangle[])\">\n            <summary>\n              Initializes a new instance of the <see cref = \"T:SharpDX.Direct3D11.Texture2D\" /> class.\n            </summary>\n            <param name = \"device\">The device with which to associate the texture.</param>\n            <param name = \"description\">The description of the texture.</param>\n            <param name = \"data\">An array of initial texture data for each subresource.</param>\n            <msdn-id>ff476521</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateTexture2D([In] const D3D11_TEXTURE2D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture2D** ppTexture2D)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateTexture2D</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Texture2D.#ctor(SharpDX.Direct3D11.Device,SharpDX.Direct3D11.Texture2DDescription,SharpDX.DataBox[])\">\n            <summary>\n              Initializes a new instance of the <see cref = \"T:SharpDX.Direct3D11.Texture2D\" /> class.\n            </summary>\n            <param name = \"device\">The device with which to associate the texture.</param>\n            <param name = \"description\">The description of the texture.</param>\n            <param name = \"data\">An array of initial texture data for each subresource.</param>\n            <msdn-id>ff476521</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateTexture2D([In] const D3D11_TEXTURE2D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture2D** ppTexture2D)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateTexture2D</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Texture2D.CalculateSubResourceIndex(System.Int32,System.Int32,System.Int32@)\">\n            <inheritdoc/>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Texture2D.ComputeNormalMap(SharpDX.Direct3D11.DeviceContext,SharpDX.Direct3D11.Texture2D,SharpDX.Direct3D11.Texture2D,SharpDX.Direct3D11.NormalMapFlags,SharpDX.Direct3D11.Channel,System.Single)\">\n            <summary>\n              Converts a height map into a normal map. The (x,y,z) components of each normal are mapped to the (r,g,b) channels of the output texture.\n            </summary>\n            <param name = \"context\">The device used to create the normal map.</param>\n            <param name = \"source\">The source height map texture.</param>\n            <param name = \"destination\">The destination texture.</param>\n            <param name = \"flags\">One or more flags that control generation of normal maps.</param>\n            <param name = \"channel\">One or more flag specifying the source of height information.</param>\n            <param name = \"amplitude\">Constant value multiplier that increases (or decreases) the values in the normal map. Higher values usually make bumps more visible, lower values usually make bumps less visible.</param>\n            <returns>A <see cref = \"T:SharpDX.Result\" /> object describing the result of the operation.</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Texture2D.SHProjectCubeMap(SharpDX.Direct3D11.DeviceContext,SharpDX.Direct3D11.Texture2D,System.Int32)\">\n            <summary>\t\n            Projects a function represented in a cube map into spherical harmonics.\t\n            </summary>\t\n            <param name=\"context\"><para>A reference to an <see cref=\"T:SharpDX.Direct3D11.DeviceContext\"/> object.</para></param>\t\n            <param name=\"cubeMap\"><para>A reference to an <see cref=\"T:SharpDX.Direct3D11.Texture2D\"/> that represents a cubemap that is going to be projected into spherical harmonics.</para></param>\t\n            <param name=\"order\"><para>Order of the SH evaluation, generates Order^2 coefficients whose degree is Order-1. Valid range is between 2 and 6.</para></param>\t\n            <returns>An array of SH Vector for red, green and blue components with a length Order^2.</returns>\t\n            <unmanaged>HRESULT D3DX11SHProjectCubeMap([In] ID3D11DeviceContext* pContext,[In] unsigned int Order,[In] ID3D11Texture2D* pCubeMap,[Out, Buffer] float* pROut,[Out, Buffer, Optional] float* pGOut,[Out, Buffer, Optional] float* pBOut)</unmanaged>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.Texture2D.Description\">\n            <summary>\t\n            <p>Get the properties of the texture resource.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Texture2D::GetDesc']/*\"/>\t\n            <msdn-id>ff476636</msdn-id>\t\n            <unmanaged>GetDesc</unmanaged>\t\n            <unmanaged-short>GetDesc</unmanaged-short>\t\n            <unmanaged>void ID3D11Texture2D::GetDesc([Out] D3D11_TEXTURE2D_DESC* pDesc)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.Texture3D\">\n            <summary>\t\n            <p>A 3D texture interface accesses texel data, which is structured memory.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>To create an empty Texture3D resource, call <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateTexture3D(SharpDX.Direct3D11.Texture3DDescription@,SharpDX.DataBox[],SharpDX.Direct3D11.Texture3D)\"/></strong>. For more details on creating and loading textures, see Creating Texture Resources.</p><p>Textures cannot be bound directly to the pipeline; instead, a view must be created and bound. Using a view, texture data can be interpreted at run time within certain restrictions. To use the texture as a render target or depth-stencil resource, call <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateRenderTargetView(SharpDX.Direct3D11.Resource,System.Nullable{SharpDX.Direct3D11.RenderTargetViewDescription},SharpDX.Direct3D11.RenderTargetView)\"/></strong>, and <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateDepthStencilView(SharpDX.Direct3D11.Resource,System.Nullable{SharpDX.Direct3D11.DepthStencilViewDescription},SharpDX.Direct3D11.DepthStencilView)\"/></strong>, respectively. To use the texture as an input to a shader, create a  by calling <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateShaderResourceView(SharpDX.Direct3D11.Resource,System.Nullable{SharpDX.Direct3D11.ShaderResourceViewDescription},SharpDX.Direct3D11.ShaderResourceView)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Texture3D']/*\"/>\t\n            <msdn-id>ff476637</msdn-id>\t\n            <unmanaged>ID3D11Texture3D</unmanaged>\t\n            <unmanaged-short>ID3D11Texture3D</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Texture3D.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D11.Texture3D\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Texture3D.op_Explicit(System.IntPtr)~SharpDX.Direct3D11.Texture3D\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D11.Texture3D\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Texture3D.GetDescription(SharpDX.Direct3D11.Texture3DDescription@)\">\n            <summary>\t\n            <p>Get the properties of the texture resource.</p>\t\n            </summary>\t\n            <param name=\"descRef\"><dd>  <p>Pointer to a resource description (see <strong><see cref=\"T:SharpDX.Direct3D11.Texture3DDescription\"/></strong>).</p> </dd></param>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Texture3D::GetDesc']/*\"/>\t\n            <msdn-id>ff476638</msdn-id>\t\n            <unmanaged>void ID3D11Texture3D::GetDesc([Out] D3D11_TEXTURE3D_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>ID3D11Texture3D::GetDesc</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Texture3D.#ctor(SharpDX.Direct3D11.Device,SharpDX.Direct3D11.Texture3DDescription)\">\n            <summary>\n              Initializes a new instance of the <see cref = \"T:SharpDX.Direct3D11.Texture3D\" /> class.\n            </summary>\n            <param name = \"device\">The device with which to associate the texture.</param>\n            <param name = \"description\">The description of the texture.</param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Texture3D.#ctor(SharpDX.Direct3D11.Device,SharpDX.Direct3D11.Texture3DDescription,SharpDX.DataBox[])\">\n            <summary>\n              Initializes a new instance of the <see cref = \"T:SharpDX.Direct3D11.Texture3D\" /> class.\n            </summary>\n            <param name = \"device\">The device with which to associate the texture.</param>\n            <param name = \"description\">The description of the texture.</param>\n            <param name = \"data\">An array of initial texture data for each subresource.</param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.Texture3D.CalculateSubResourceIndex(System.Int32,System.Int32,System.Int32@)\">\n            <inheritdoc/>\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.Texture3D.Description\">\n            <summary>\t\n            <p>Get the properties of the texture resource.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11Texture3D::GetDesc']/*\"/>\t\n            <msdn-id>ff476638</msdn-id>\t\n            <unmanaged>GetDesc</unmanaged>\t\n            <unmanaged-short>GetDesc</unmanaged-short>\t\n            <unmanaged>void ID3D11Texture3D::GetDesc([Out] D3D11_TEXTURE3D_DESC* pDesc)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.UnorderedAccessView\">\n            <summary>\t\n            <p>A view interface specifies the parts of a resource the pipeline can access during rendering.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>To create a view for an unordered access resource, call  <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateUnorderedAccessView(SharpDX.Direct3D11.Resource,System.Nullable{SharpDX.Direct3D11.UnorderedAccessViewDescription},SharpDX.Direct3D11.UnorderedAccessView)\"/></strong>.</p><p>All resources must be bound to the pipeline before they can be accessed. Call <strong><see cref=\"M:SharpDX.Direct3D11.ComputeShaderStage.SetUnorderedAccessViews(System.Int32,SharpDX.Direct3D11.UnorderedAccessView[])\"/></strong> to bind an unordered access view to a compute shader; call <strong><see cref=\"M:SharpDX.Direct3D11.OutputMergerStage.SetRenderTargetsAndUnorderedAccessViews(System.Int32,SharpDX.Direct3D11.RenderTargetView[],SharpDX.Direct3D11.DepthStencilView,System.Int32,System.Int32,SharpDX.Direct3D11.UnorderedAccessView[],System.Int32[])\"/></strong> to bind an unordered access view to a pixel shader.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11UnorderedAccessView']/*\"/>\t\n            <msdn-id>ff476639</msdn-id>\t\n            <unmanaged>ID3D11UnorderedAccessView</unmanaged>\t\n            <unmanaged-short>ID3D11UnorderedAccessView</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.UnorderedAccessView.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D11.UnorderedAccessView\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.UnorderedAccessView.op_Explicit(System.IntPtr)~SharpDX.Direct3D11.UnorderedAccessView\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D11.UnorderedAccessView\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.UnorderedAccessView.GetDescription(SharpDX.Direct3D11.UnorderedAccessViewDescription@)\">\n            <summary>\t\n            <p>Get a description of the resource.</p>\t\n            </summary>\t\n            <param name=\"descRef\"><dd>  <p>Pointer to a resource description (see <strong><see cref=\"T:SharpDX.Direct3D11.UnorderedAccessViewDescription\"/></strong>.)</p> </dd></param>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11UnorderedAccessView::GetDesc']/*\"/>\t\n            <msdn-id>ff476640</msdn-id>\t\n            <unmanaged>void ID3D11UnorderedAccessView::GetDesc([Out] D3D11_UNORDERED_ACCESS_VIEW_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>ID3D11UnorderedAccessView::GetDesc</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.UnorderedAccessView.#ctor(SharpDX.Direct3D11.Device,SharpDX.Direct3D11.Resource)\">\n            <summary>\n              Creates a <see cref = \"T:SharpDX.Direct3D11.UnorderedAccessView\" /> for accessing resource data.\n            </summary>\n            <param name = \"device\">The device to use when creating this <see cref = \"T:SharpDX.Direct3D11.UnorderedAccessView\" />.</param>\n            <param name = \"resource\">The resource that represents the render-target surface. This surface must have been created with the <see cref = \"T:SharpDX.Direct3D11.BindFlags\">UnorderedAccess</see> flag.</param>\n            <unmanaged>ID3D11Device::CreateUnorderedAccessView</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.UnorderedAccessView.#ctor(SharpDX.Direct3D11.Device,SharpDX.Direct3D11.Resource,SharpDX.Direct3D11.UnorderedAccessViewDescription)\">\n            <summary>\n              Creates a <see cref = \"T:SharpDX.Direct3D11.UnorderedAccessView\" /> for accessing resource data.\n            </summary>\n            <param name = \"device\">The device to use when creating this <see cref = \"T:SharpDX.Direct3D11.UnorderedAccessView\" />.</param>\n            <param name = \"resource\">The resource that represents the render-target surface. This surface must have been created with the <see cref = \"T:SharpDX.Direct3D11.BindFlags\">UnorderedAccess</see> flag.</param>\n            <param name = \"description\">A structure describing the <see cref = \"T:SharpDX.Direct3D11.UnorderedAccessView\" /> to be created.</param>\n            <unmanaged>ID3D11Device::CreateUnorderedAccessView</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.UnorderedAccessView.Description\">\n            <summary>\t\n            <p>Get a description of the resource.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11UnorderedAccessView::GetDesc']/*\"/>\t\n            <msdn-id>ff476640</msdn-id>\t\n            <unmanaged>GetDesc</unmanaged>\t\n            <unmanaged-short>GetDesc</unmanaged-short>\t\n            <unmanaged>void ID3D11UnorderedAccessView::GetDesc([Out] D3D11_UNORDERED_ACCESS_VIEW_DESC* pDesc)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.VertexShader\">\n            <summary>\t\n            <p>A vertex-shader interface manages an executable program (a vertex shader) that controls the vertex-shader stage.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The vertex-shader interface has no methods; use HLSL to implement your shader functionality. All shaders are implemented from a common set of features referred to as the common-shader core..</p><p>To create a vertex shader interface, call <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateVertexShader(System.IntPtr,SharpDX.PointerSize,SharpDX.Direct3D11.ClassLinkage,SharpDX.Direct3D11.VertexShader)\"/></strong>. Before using a vertex shader you must bind it to the device by calling <strong><see cref=\"M:SharpDX.Direct3D11.VertexShaderStage.SetShader(SharpDX.Direct3D11.VertexShader,SharpDX.Direct3D11.ClassInstance[],System.Int32)\"/></strong>.</p><p>This interface is defined in D3D11.h.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11VertexShader']/*\"/>\t\n            <msdn-id>ff476641</msdn-id>\t\n            <unmanaged>ID3D11VertexShader</unmanaged>\t\n            <unmanaged-short>ID3D11VertexShader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.VertexShader.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D11.VertexShader\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.VertexShader.op_Explicit(System.IntPtr)~SharpDX.Direct3D11.VertexShader\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D11.VertexShader\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.VertexShader.#ctor(SharpDX.Direct3D11.Device,System.Byte[],SharpDX.Direct3D11.ClassLinkage)\">\n            <summary>\n              Initializes a new instance of the <see cref = \"T:SharpDX.Direct3D11.VertexShader\" /> class.\n            </summary>\n            <param name = \"device\">The device used to create the shader.</param>\n            <param name = \"shaderBytecode\">The compiled shader bytecode.</param>\n            <param name = \"linkage\">A dynamic class linkage interface.</param>\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.VertexShaderStage\">\n            <summary>\t\n            <p>The <strong><see cref=\"T:SharpDX.Direct3D11.DeviceContext\"/></strong> interface represents a device context which generates rendering commands.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext']/*\"/>\t\n            <msdn-id>ff476385</msdn-id>\t\n            <unmanaged>ID3D11DeviceContext</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.VertexShaderStage.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D11.VertexShaderStage\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.VertexShaderStage.op_Explicit(System.IntPtr)~SharpDX.Direct3D11.VertexShaderStage\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D11.VertexShaderStage\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.VertexShaderStage.SetConstantBuffers(System.Int32,System.Int32,System.IntPtr)\">\n            <summary>\t\n            <p>Sets the constant buffers used by the vertex shader pipeline stage.</p>\t\n            </summary>\t\n            <param name=\"startSlot\"><dd>  <p>Index into the device's zero-based array to begin setting constant buffers to (ranges from 0 to <strong><see cref=\"F:SharpDX.Direct3D11.CommonShaderStage.ConstantBufferApiSlotCount\"/></strong> - 1).</p> </dd></param>\t\n            <param name=\"numBuffers\"><dd>  <p>Number of buffers to set (ranges from 0 to <strong><see cref=\"F:SharpDX.Direct3D11.CommonShaderStage.ConstantBufferApiSlotCount\"/></strong> - <em>StartSlot</em>).</p> </dd></param>\t\n            <param name=\"constantBuffersOut\"><dd>  <p>Array of constant buffers (see <strong><see cref=\"T:SharpDX.Direct3D11.Buffer\"/></strong>) being given to the device.</p> </dd></param>\t\n            <remarks>\t\n            <p> The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. </p><p>The Direct3D 11.1 runtime, which is available starting with Windows Developer Preview, can bind a larger number of <strong><see cref=\"T:SharpDX.Direct3D11.Buffer\"/></strong> resources to the shader than the maximum constant buffer size that is supported by shaders (4096 constants ? 4*32-bit components each).  When you bind such a large buffer, the shader can access only the first 4096 4*32-bit component constants in the buffer, as if 4096 constants is the full size of the buffer.  </p><p>If the application wants the shader to access other parts of the buffer, it must call the <strong>VSSetConstantBuffers1</strong> method instead. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::VSSetConstantBuffers']/*\"/>\t\n            <msdn-id>ff476491</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::VSSetConstantBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[In, Buffer] const void** ppConstantBuffers)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::VSSetConstantBuffers</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.VertexShaderStage.SetShader(SharpDX.Direct3D11.VertexShader,SharpDX.Direct3D11.ClassInstance[],System.Int32)\">\n            <summary>\t\n            <p>Set a vertex shader to the device.</p>\t\n            </summary>\t\n            <param name=\"vertexShaderRef\"><dd>  <p>Pointer to a vertex shader (see <strong><see cref=\"T:SharpDX.Direct3D11.VertexShader\"/></strong>). Passing in <strong><c>null</c></strong> disables the shader for this pipeline stage.</p> </dd></param>\t\n            <param name=\"classInstancesOut\"><dd>  <p>A reference to an array of class-instance interfaces (see <strong><see cref=\"T:SharpDX.Direct3D11.ClassInstance\"/></strong>). Each interface used by a shader must have a corresponding class instance or the shader will get disabled. Set ppClassInstances to <strong><c>null</c></strong> if the shader does not use any interfaces.</p> </dd></param>\t\n            <param name=\"numClassInstances\"><dd>  <p>The number of class-instance interfaces in the array.</p> </dd></param>\t\n            <remarks>\t\n            <p> The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. </p><p>The maximum number of instances a shader can have is 256.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::VSSetShader']/*\"/>\t\n            <msdn-id>ff476493</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::VSSetShader([In, Optional] ID3D11VertexShader* pVertexShader,[In, Buffer, Optional] const ID3D11ClassInstance** ppClassInstances,[In] unsigned int NumClassInstances)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::VSSetShader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.VertexShaderStage.SetShader(SharpDX.Direct3D11.VertexShader,SharpDX.ComArray{SharpDX.Direct3D11.ClassInstance},System.Int32)\">\n            <summary>\t\n            <p>Set a vertex shader to the device.</p>\t\n            </summary>\t\n            <param name=\"vertexShaderRef\"><dd>  <p>Pointer to a vertex shader (see <strong><see cref=\"T:SharpDX.Direct3D11.VertexShader\"/></strong>). Passing in <strong><c>null</c></strong> disables the shader for this pipeline stage.</p> </dd></param>\t\n            <param name=\"classInstancesOut\"><dd>  <p>A reference to an array of class-instance interfaces (see <strong><see cref=\"T:SharpDX.Direct3D11.ClassInstance\"/></strong>). Each interface used by a shader must have a corresponding class instance or the shader will get disabled. Set ppClassInstances to <strong><c>null</c></strong> if the shader does not use any interfaces.</p> </dd></param>\t\n            <param name=\"numClassInstances\"><dd>  <p>The number of class-instance interfaces in the array.</p> </dd></param>\t\n            <remarks>\t\n            <p> The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. </p><p>The maximum number of instances a shader can have is 256.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::VSSetShader']/*\"/>\t\n            <msdn-id>ff476493</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::VSSetShader([In, Optional] ID3D11VertexShader* pVertexShader,[In, Buffer, Optional] const ID3D11ClassInstance** ppClassInstances,[In] unsigned int NumClassInstances)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::VSSetShader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.VertexShaderStage.SetShaderResources(System.Int32,System.Int32,System.IntPtr)\">\n            <summary>\t\n            <p>Bind an array of shader resources to the vertex-shader stage.</p>\t\n            </summary>\t\n            <param name=\"startSlot\"><dd>  <p>Index into the device's zero-based array to begin setting shader resources to (range is from 0 to <see cref=\"F:SharpDX.Direct3D11.CommonShaderStage.InputResourceSlotCount\"/> - 1).</p> </dd></param>\t\n            <param name=\"numViews\"><dd>  <p>Number of shader resources to set. Up to a maximum of 128 slots are available for shader resources (range is from 0 to <see cref=\"F:SharpDX.Direct3D11.CommonShaderStage.InputResourceSlotCount\"/> - StartSlot).</p> </dd></param>\t\n            <param name=\"shaderResourceViewsOut\"><dd>  <p>Array of <strong>shader resource view</strong> interfaces to set to the device.</p> </dd></param>\t\n            <remarks>\t\n            <p>If an overlapping resource view is already bound to an output slot, such as a rendertarget, then this API will fill the destination shader resource slot with <strong><c>null</c></strong>.</p><p>For information about creating shader-resource views, see <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateShaderResourceView(SharpDX.Direct3D11.Resource,System.Nullable{SharpDX.Direct3D11.ShaderResourceViewDescription},SharpDX.Direct3D11.ShaderResourceView)\"/></strong>.</p><p> The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::VSSetShaderResources']/*\"/>\t\n            <msdn-id>ff476494</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::VSSetShaderResources([In] unsigned int StartSlot,[In] unsigned int NumViews,[In, Buffer] const void** ppShaderResourceViews)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::VSSetShaderResources</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.VertexShaderStage.SetSamplers(System.Int32,System.Int32,System.IntPtr)\">\n            <summary>\t\n            <p>Set an array of sampler states to the vertex shader pipeline stage.</p>\t\n            </summary>\t\n            <param name=\"startSlot\"><dd>  <p>Index into the device's zero-based array to begin setting samplers to (ranges from 0 to <see cref=\"F:SharpDX.Direct3D11.CommonShaderStage.SamplerSlotCount\"/> - 1).</p> </dd></param>\t\n            <param name=\"numSamplers\"><dd>  <p>Number of samplers in the array. Each pipeline stage has a total of 16 sampler slots available (ranges from 0 to <see cref=\"F:SharpDX.Direct3D11.CommonShaderStage.SamplerSlotCount\"/> - StartSlot).</p> </dd></param>\t\n            <param name=\"samplersOut\"><dd>  <p>Pointer to an array of sampler-state interfaces (see <strong><see cref=\"T:SharpDX.Direct3D11.SamplerState\"/></strong>). See Remarks.</p> </dd></param>\t\n            <remarks>\t\n            <p>Any sampler may be set to <strong><c>null</c></strong>; this invokes the default state, which is defined to be the following.</p><pre><code> //Default sampler state:\t\n            <see cref=\"T:SharpDX.Direct3D11.SamplerStateDescription\"/> SamplerDesc;\t\n            SamplerDesc.Filter = <see cref=\"F:SharpDX.Direct3D11.Filter.MinMagMipLinear\"/>;\t\n            SamplerDesc.AddressU = <see cref=\"F:SharpDX.Direct3D11.TextureAddressMode.Clamp\"/>;\t\n            SamplerDesc.AddressV = <see cref=\"F:SharpDX.Direct3D11.TextureAddressMode.Clamp\"/>;\t\n            SamplerDesc.AddressW = <see cref=\"F:SharpDX.Direct3D11.TextureAddressMode.Clamp\"/>;\t\n            SamplerDesc.MipLODBias = 0;\t\n            SamplerDesc.MaxAnisotropy = 1;\t\n            SamplerDesc.ComparisonFunc = <see cref=\"F:SharpDX.Direct3D11.Comparison.Never\"/>;\t\n            SamplerDesc.BorderColor[0] = 1.0f;\t\n            SamplerDesc.BorderColor[1] = 1.0f;\t\n            SamplerDesc.BorderColor[2] = 1.0f;\t\n            SamplerDesc.BorderColor[3] = 1.0f;\t\n            SamplerDesc.MinLOD = -FLT_MAX;\t\n            SamplerDesc.MaxLOD = FLT_MAX; </code></pre><p> The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::VSSetSamplers']/*\"/>\t\n            <msdn-id>ff476492</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::VSSetSamplers([In] unsigned int StartSlot,[In] unsigned int NumSamplers,[In, Buffer] const void** ppSamplers)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::VSSetSamplers</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.VertexShaderStage.GetConstantBuffers(System.Int32,System.Int32,SharpDX.Direct3D11.Buffer[])\">\n            <summary>\t\n            <p>Get the constant buffers used by the vertex shader pipeline stage.</p>\t\n            </summary>\t\n            <param name=\"startSlot\"><dd>  <p>Index into the device's zero-based array to begin retrieving constant buffers from (ranges from 0 to <see cref=\"F:SharpDX.Direct3D11.CommonShaderStage.ConstantBufferApiSlotCount\"/> - 1).</p> </dd></param>\t\n            <param name=\"numBuffers\"><dd>  <p>Number of buffers to retrieve (ranges from 0 to <see cref=\"F:SharpDX.Direct3D11.CommonShaderStage.ConstantBufferApiSlotCount\"/> - StartSlot).</p> </dd></param>\t\n            <param name=\"constantBuffersOut\"><dd>  <p>Array of constant buffer interface references (see <strong><see cref=\"T:SharpDX.Direct3D11.Buffer\"/></strong>) to be returned by the method.</p> </dd></param>\t\n            <remarks>\t\n            <p>Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::VSGetConstantBuffers']/*\"/>\t\n            <msdn-id>ff476487</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::VSGetConstantBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[Out, Buffer] ID3D11Buffer** ppConstantBuffers)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::VSGetConstantBuffers</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.VertexShaderStage.GetShader(SharpDX.Direct3D11.VertexShader@,SharpDX.Direct3D11.ClassInstance[],System.Int32@)\">\n            <summary>\t\n            <p>Get the vertex shader currently set on the device.</p>\t\n            </summary>\t\n            <param name=\"vertexShaderOut\"><dd>  <p>Address of a reference to a vertex shader (see <strong><see cref=\"T:SharpDX.Direct3D11.VertexShader\"/></strong>) to be returned by the method.</p> </dd></param>\t\n            <param name=\"classInstancesOut\"><dd>  <p>Pointer to an array of class instance interfaces (see <strong><see cref=\"T:SharpDX.Direct3D11.ClassInstance\"/></strong>).</p> </dd></param>\t\n            <param name=\"numClassInstancesRef\"><dd>  <p>The number of class-instance elements in the array.</p> </dd></param>\t\n            <remarks>\t\n            <p>Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::VSGetShader']/*\"/>\t\n            <msdn-id>ff476489</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::VSGetShader([Out] ID3D11VertexShader** ppVertexShader,[Out, Buffer, Optional] ID3D11ClassInstance** ppClassInstances,[InOut] unsigned int* pNumClassInstances)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::VSGetShader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.VertexShaderStage.GetShaderResources(System.Int32,System.Int32,SharpDX.Direct3D11.ShaderResourceView[])\">\n            <summary>\t\n            <p>Get the vertex shader resources.</p>\t\n            </summary>\t\n            <param name=\"startSlot\"><dd>  <p>Index into the device's zero-based array to begin getting shader resources from (ranges from 0 to <see cref=\"F:SharpDX.Direct3D11.CommonShaderStage.InputResourceSlotCount\"/> - 1).</p> </dd></param>\t\n            <param name=\"numViews\"><dd>  <p>The number of resources to get from the device. Up to a maximum of 128 slots are available for shader resources (ranges from 0 to <see cref=\"F:SharpDX.Direct3D11.CommonShaderStage.InputResourceSlotCount\"/> - StartSlot).</p> </dd></param>\t\n            <param name=\"shaderResourceViewsOut\"><dd>  <p>Array of <strong>shader resource view</strong> interfaces to be returned by the device.</p> </dd></param>\t\n            <remarks>\t\n            <p>Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::VSGetShaderResources']/*\"/>\t\n            <msdn-id>ff476490</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::VSGetShaderResources([In] unsigned int StartSlot,[In] unsigned int NumViews,[Out, Buffer] ID3D11ShaderResourceView** ppShaderResourceViews)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::VSGetShaderResources</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.VertexShaderStage.GetSamplers(System.Int32,System.Int32,SharpDX.Direct3D11.SamplerState[])\">\n            <summary>\t\n            <p>Get an array of sampler states from the vertex shader pipeline stage.</p>\t\n            </summary>\t\n            <param name=\"startSlot\"><dd>  <p>Index into a zero-based array to begin getting samplers from (ranges from 0 to <see cref=\"F:SharpDX.Direct3D11.CommonShaderStage.SamplerSlotCount\"/> - 1).</p> </dd></param>\t\n            <param name=\"numSamplers\"><dd>  <p>Number of samplers to get from a device context. Each pipeline stage has a total of 16 sampler slots available (ranges from 0 to <see cref=\"F:SharpDX.Direct3D11.CommonShaderStage.SamplerSlotCount\"/> - StartSlot).</p> </dd></param>\t\n            <param name=\"samplersOut\"><dd>  <p>Arry of sampler-state interface references (see <strong><see cref=\"T:SharpDX.Direct3D11.SamplerState\"/></strong>) to be returned by the device.</p> </dd></param>\t\n            <remarks>\t\n            <p>Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D11DeviceContext::VSGetSamplers']/*\"/>\t\n            <msdn-id>ff476488</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::VSGetSamplers([In] unsigned int StartSlot,[In] unsigned int NumSamplers,[Out, Buffer] ID3D11SamplerState** ppSamplers)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::VSGetSamplers</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.ClassInstanceDescription\">\n            <summary>\t\n            <p>Describes an HLSL class instance.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The <see cref=\"T:SharpDX.Direct3D11.ClassInstanceDescription\"/> structure is returned by the <strong><see cref=\"M:SharpDX.Direct3D11.ClassInstance.GetDescription(SharpDX.Direct3D11.ClassInstanceDescription@)\"/></strong> method.</p><p>The members of this structure except <strong>InstanceIndex</strong> are valid (non default values) if they describe a class instance aquired using  <strong><see cref=\"M:SharpDX.Direct3D11.ClassLinkage.CreateClassInstance(System.String,System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D11.ClassInstance)\"/></strong>.  The <strong>InstanceIndex</strong> member is only valid when the class instance is aquired using <strong><see cref=\"M:SharpDX.Direct3D11.ClassLinkage.GetClassInstance(System.String,System.Int32)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_CLASS_INSTANCE_DESC']/*\"/>\t\n            <msdn-id>ff476098</msdn-id>\t\n            <unmanaged>D3D11_CLASS_INSTANCE_DESC</unmanaged>\t\n            <unmanaged-short>D3D11_CLASS_INSTANCE_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ClassInstanceDescription.InstanceId\">\n            <summary>\t\n            <dd> <p>The instance ID of an HLSL class; the default value is 0.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_CLASS_INSTANCE_DESC::InstanceId']/*\"/>\t\n            <msdn-id>ff476098</msdn-id>\t\n            <unmanaged>unsigned int InstanceId</unmanaged>\t\n            <unmanaged-short>unsigned int InstanceId</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ClassInstanceDescription.InstanceIndex\">\n            <summary>\t\n            <dd> <p>The instance index of an HLSL class; the default value is 0.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_CLASS_INSTANCE_DESC::InstanceIndex']/*\"/>\t\n            <msdn-id>ff476098</msdn-id>\t\n            <unmanaged>unsigned int InstanceIndex</unmanaged>\t\n            <unmanaged-short>unsigned int InstanceIndex</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ClassInstanceDescription.TypeId\">\n            <summary>\t\n            <dd> <p>The type ID of an HLSL class; the default value is 0.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_CLASS_INSTANCE_DESC::TypeId']/*\"/>\t\n            <msdn-id>ff476098</msdn-id>\t\n            <unmanaged>unsigned int TypeId</unmanaged>\t\n            <unmanaged-short>unsigned int TypeId</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ClassInstanceDescription.ConstantBuffer\">\n            <summary>\t\n            <dd> <p>Describes the constant buffer associated with an HLSL class; the default value is 0.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_CLASS_INSTANCE_DESC::ConstantBuffer']/*\"/>\t\n            <msdn-id>ff476098</msdn-id>\t\n            <unmanaged>unsigned int ConstantBuffer</unmanaged>\t\n            <unmanaged-short>unsigned int ConstantBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ClassInstanceDescription.BaseConstantBufferOffset\">\n            <summary>\t\n            <dd> <p>The base constant buffer offset associated with an HLSL class; the default value is 0.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_CLASS_INSTANCE_DESC::BaseConstantBufferOffset']/*\"/>\t\n            <msdn-id>ff476098</msdn-id>\t\n            <unmanaged>unsigned int BaseConstantBufferOffset</unmanaged>\t\n            <unmanaged-short>unsigned int BaseConstantBufferOffset</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ClassInstanceDescription.BaseTexture\">\n            <summary>\t\n            <dd> <p>The base texture associated with an HLSL class; the default value is 127.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_CLASS_INSTANCE_DESC::BaseTexture']/*\"/>\t\n            <msdn-id>ff476098</msdn-id>\t\n            <unmanaged>unsigned int BaseTexture</unmanaged>\t\n            <unmanaged-short>unsigned int BaseTexture</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ClassInstanceDescription.BaseSampler\">\n            <summary>\t\n            <dd> <p>The base sampler associated with an HLSL class; the default value is 15.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_CLASS_INSTANCE_DESC::BaseSampler']/*\"/>\t\n            <msdn-id>ff476098</msdn-id>\t\n            <unmanaged>unsigned int BaseSampler</unmanaged>\t\n            <unmanaged-short>unsigned int BaseSampler</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ClassInstanceDescription.IsCreated\">\n            <summary>\t\n            <dd> <p>True if the class was created; the default value is false.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_CLASS_INSTANCE_DESC::Created']/*\"/>\t\n            <msdn-id>ff476098</msdn-id>\t\n            <unmanaged>BOOL Created</unmanaged>\t\n            <unmanaged-short>BOOL Created</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.CounterCapabilities\">\n            <summary>\t\n            <p>Information about the video card's performance counter capabilities.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure is returned by <strong><see cref=\"M:SharpDX.Direct3D11.Device.GetCounterCapabilities\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_COUNTER_INFO']/*\"/>\t\n            <msdn-id>ff476104</msdn-id>\t\n            <unmanaged>D3D11_COUNTER_INFO</unmanaged>\t\n            <unmanaged-short>D3D11_COUNTER_INFO</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.CounterCapabilities.LastDeviceDependentCounter\">\n            <summary>\t\n            <dd> <p>Largest device-dependent counter ID that the device supports. If none are supported, this value will be 0. Otherwise it will be greater than or equal to <see cref=\"F:SharpDX.Direct3D11.CounterKind.DeviceDependent0\"/>. See <strong><see cref=\"T:SharpDX.Direct3D11.CounterKind\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_COUNTER_INFO::LastDeviceDependentCounter']/*\"/>\t\n            <msdn-id>ff476104</msdn-id>\t\n            <unmanaged>D3D11_COUNTER LastDeviceDependentCounter</unmanaged>\t\n            <unmanaged-short>D3D11_COUNTER LastDeviceDependentCounter</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.CounterCapabilities.SimultaneousCounterCount\">\n            <summary>\t\n            <dd> <p>Number of counters that can be simultaneously supported.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_COUNTER_INFO::NumSimultaneousCounters']/*\"/>\t\n            <msdn-id>ff476104</msdn-id>\t\n            <unmanaged>unsigned int NumSimultaneousCounters</unmanaged>\t\n            <unmanaged-short>unsigned int NumSimultaneousCounters</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.CounterCapabilities.DetectableParallelUnitCount\">\n            <summary>\t\n            <dd> <p>Number of detectable parallel units that the counter is able to discern. Values are 1 ~ 4. Use NumDetectableParallelUnits to interpret the values of the VERTEX_PROCESSING, GEOMETRY_PROCESSING, PIXEL_PROCESSING, and OTHER_GPU_PROCESSING counters. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_COUNTER_INFO::NumDetectableParallelUnits']/*\"/>\t\n            <msdn-id>ff476104</msdn-id>\t\n            <unmanaged>unsigned char NumDetectableParallelUnits</unmanaged>\t\n            <unmanaged-short>unsigned char NumDetectableParallelUnits</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.CounterDescription\">\n            <summary>\t\n            <p>Describes a counter.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure is used by <strong><see cref=\"M:SharpDX.Direct3D11.Counter.GetDescription(SharpDX.Direct3D11.CounterDescription@)\"/></strong>, <strong><see cref=\"M:SharpDX.Direct3D11.Device.CheckCounter(SharpDX.Direct3D11.CounterDescription,SharpDX.Direct3D11.CounterType@,System.Int32@,System.IntPtr,System.IntPtr,System.IntPtr,System.IntPtr,System.IntPtr,System.IntPtr)\"/></strong> and <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateCounter(SharpDX.Direct3D11.CounterDescription,SharpDX.Direct3D11.Counter)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_COUNTER_DESC']/*\"/>\t\n            <msdn-id>ff476103</msdn-id>\t\n            <unmanaged>D3D11_COUNTER_DESC</unmanaged>\t\n            <unmanaged-short>D3D11_COUNTER_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.CounterDescription.Counter\">\n            <summary>\t\n            <dd> <p>Type of counter (see <strong><see cref=\"T:SharpDX.Direct3D11.CounterKind\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_COUNTER_DESC::Counter']/*\"/>\t\n            <msdn-id>ff476103</msdn-id>\t\n            <unmanaged>D3D11_COUNTER Counter</unmanaged>\t\n            <unmanaged-short>D3D11_COUNTER Counter</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.CounterDescription.MiscFlags\">\n            <summary>\t\n            <dd> <p>Reserved.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_COUNTER_DESC::MiscFlags']/*\"/>\t\n            <msdn-id>ff476103</msdn-id>\t\n            <unmanaged>unsigned int MiscFlags</unmanaged>\t\n            <unmanaged-short>unsigned int MiscFlags</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.DepthStencilOperationDescription\">\n            <summary>\t\n            <p>Stencil operations that can be performed based on the results of stencil test.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>All stencil operations are specified as a <strong><see cref=\"T:SharpDX.Direct3D11.StencilOperation\"/></strong>. The stencil operation can be set differently based on the outcome of the stencil test (which is referred to as <strong>StencilFunc</strong> in the stencil test portion of depth-stencil testing.</p><p>This structure is a member of a <strong>depth-stencil description</strong>. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_DEPTH_STENCILOP_DESC']/*\"/>\t\n            <msdn-id>ff476109</msdn-id>\t\n            <unmanaged>D3D11_DEPTH_STENCILOP_DESC</unmanaged>\t\n            <unmanaged-short>D3D11_DEPTH_STENCILOP_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.DepthStencilOperationDescription.FailOperation\">\n            <summary>\t\n            <dd> <p>The stencil operation to perform when stencil testing fails.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_DEPTH_STENCILOP_DESC::StencilFailOp']/*\"/>\t\n            <msdn-id>ff476109</msdn-id>\t\n            <unmanaged>D3D11_STENCIL_OP StencilFailOp</unmanaged>\t\n            <unmanaged-short>D3D11_STENCIL_OP StencilFailOp</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.DepthStencilOperationDescription.DepthFailOperation\">\n            <summary>\t\n            <dd> <p>The stencil operation to perform when stencil testing passes and depth testing fails.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_DEPTH_STENCILOP_DESC::StencilDepthFailOp']/*\"/>\t\n            <msdn-id>ff476109</msdn-id>\t\n            <unmanaged>D3D11_STENCIL_OP StencilDepthFailOp</unmanaged>\t\n            <unmanaged-short>D3D11_STENCIL_OP StencilDepthFailOp</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.DepthStencilOperationDescription.PassOperation\">\n            <summary>\t\n            <dd> <p>The stencil operation to perform when stencil testing and depth testing both pass.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_DEPTH_STENCILOP_DESC::StencilPassOp']/*\"/>\t\n            <msdn-id>ff476109</msdn-id>\t\n            <unmanaged>D3D11_STENCIL_OP StencilPassOp</unmanaged>\t\n            <unmanaged-short>D3D11_STENCIL_OP StencilPassOp</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.DepthStencilOperationDescription.Comparison\">\n            <summary>\t\n            <dd> <p>A function that compares stencil data against existing stencil data. The function options are listed in <strong><see cref=\"T:SharpDX.Direct3D11.Comparison\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_DEPTH_STENCILOP_DESC::StencilFunc']/*\"/>\t\n            <msdn-id>ff476109</msdn-id>\t\n            <unmanaged>D3D11_COMPARISON_FUNC StencilFunc</unmanaged>\t\n            <unmanaged-short>D3D11_COMPARISON_FUNC StencilFunc</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.DepthStencilViewDescription\">\n            <summary>\t\n            <p>Specifies the subresources of a texture that are accessible from a depth-stencil view.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>These are valid formats for a depth-stencil view:</p><ul> <li><see cref=\"F:SharpDX.DXGI.Format.D16_UNorm\"/></li> <li><see cref=\"F:SharpDX.DXGI.Format.D24_UNorm_S8_UInt\"/></li> <li><see cref=\"F:SharpDX.DXGI.Format.D32_Float\"/></li> <li><see cref=\"F:SharpDX.DXGI.Format.D32_Float_S8X24_UInt\"/></li> <li><see cref=\"F:SharpDX.DXGI.Format.Unknown\"/></li> </ul><p>A depth-stencil view cannot use a typeless format.  If the format chosen is <see cref=\"F:SharpDX.DXGI.Format.Unknown\"/>, then the format of the parent resource is used.</p><p>A depth-stencil-view description is needed when calling <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateDepthStencilView(SharpDX.Direct3D11.Resource,System.Nullable{SharpDX.Direct3D11.DepthStencilViewDescription},SharpDX.Direct3D11.DepthStencilView)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_DEPTH_STENCIL_VIEW_DESC']/*\"/>\t\n            <msdn-id>ff476112</msdn-id>\t\n            <unmanaged>D3D11_DEPTH_STENCIL_VIEW_DESC</unmanaged>\t\n            <unmanaged-short>D3D11_DEPTH_STENCIL_VIEW_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.DepthStencilViewDescription.Format\">\n            <summary>\t\n            <dd> <p>Resource data  format (see <strong><see cref=\"T:SharpDX.DXGI.Format\"/></strong>). See remarks for allowable formats.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_DEPTH_STENCIL_VIEW_DESC::Format']/*\"/>\t\n            <msdn-id>ff476112</msdn-id>\t\n            <unmanaged>DXGI_FORMAT Format</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT Format</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.DepthStencilViewDescription.Dimension\">\n            <summary>\t\n            <dd> <p>Type of resource (see <strong><see cref=\"T:SharpDX.Direct3D11.DepthStencilViewDimension\"/></strong>). Specifies how a depth-stencil resource will be accessed; the value is stored in the  union in this structure.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_DEPTH_STENCIL_VIEW_DESC::ViewDimension']/*\"/>\t\n            <msdn-id>ff476112</msdn-id>\t\n            <unmanaged>D3D11_DSV_DIMENSION ViewDimension</unmanaged>\t\n            <unmanaged-short>D3D11_DSV_DIMENSION ViewDimension</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.DepthStencilViewDescription.Flags\">\n            <summary>\t\n            <dd> <p>A value that describes whether the texture is read only.  Pass 0 to specify that it is not read only; otherwise, pass one of the members of  the <strong><see cref=\"T:SharpDX.Direct3D11.DepthStencilViewFlags\"/></strong> enumerated type.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_DEPTH_STENCIL_VIEW_DESC::Flags']/*\"/>\t\n            <msdn-id>ff476112</msdn-id>\t\n            <unmanaged>D3D11_DSV_FLAG Flags</unmanaged>\t\n            <unmanaged-short>D3D11_DSV_FLAG Flags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.DepthStencilViewDescription.Texture1D\">\n            <summary>\t\n            <dd> <p>Specifies a 1D texture subresource (see <strong><see cref=\"T:SharpDX.Direct3D11.DepthStencilViewDescription.Texture1DResource\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_DEPTH_STENCIL_VIEW_DESC::Texture1D']/*\"/>\t\n            <msdn-id>ff476112</msdn-id>\t\n            <unmanaged>D3D11_TEX1D_DSV Texture1D</unmanaged>\t\n            <unmanaged-short>D3D11_TEX1D_DSV Texture1D</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.DepthStencilViewDescription.Texture1DArray\">\n            <summary>\t\n            <dd> <p>Specifies an array of 1D texture subresources (see <strong><see cref=\"T:SharpDX.Direct3D11.DepthStencilViewDescription.Texture1DArrayResource\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_DEPTH_STENCIL_VIEW_DESC::Texture1DArray']/*\"/>\t\n            <msdn-id>ff476112</msdn-id>\t\n            <unmanaged>D3D11_TEX1D_ARRAY_DSV Texture1DArray</unmanaged>\t\n            <unmanaged-short>D3D11_TEX1D_ARRAY_DSV Texture1DArray</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.DepthStencilViewDescription.Texture2D\">\n            <summary>\t\n            <dd> <p>Specifies a 2D texture subresource (see <strong><see cref=\"T:SharpDX.Direct3D11.DepthStencilViewDescription.Texture2DResource\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_DEPTH_STENCIL_VIEW_DESC::Texture2D']/*\"/>\t\n            <msdn-id>ff476112</msdn-id>\t\n            <unmanaged>D3D11_TEX2D_DSV Texture2D</unmanaged>\t\n            <unmanaged-short>D3D11_TEX2D_DSV Texture2D</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.DepthStencilViewDescription.Texture2DArray\">\n            <summary>\t\n            <dd> <p>Specifies an array of 2D texture subresources (see <strong><see cref=\"T:SharpDX.Direct3D11.DepthStencilViewDescription.Texture2DArrayResource\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_DEPTH_STENCIL_VIEW_DESC::Texture2DArray']/*\"/>\t\n            <msdn-id>ff476112</msdn-id>\t\n            <unmanaged>D3D11_TEX2D_ARRAY_DSV Texture2DArray</unmanaged>\t\n            <unmanaged-short>D3D11_TEX2D_ARRAY_DSV Texture2DArray</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.DepthStencilViewDescription.Texture2DMS\">\n            <summary>\t\n            <dd> <p>Specifies a multisampled 2D texture (see <strong><see cref=\"T:SharpDX.Direct3D11.DepthStencilViewDescription.Texture2DMultisampledResource\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_DEPTH_STENCIL_VIEW_DESC::Texture2DMS']/*\"/>\t\n            <msdn-id>ff476112</msdn-id>\t\n            <unmanaged>D3D11_TEX2DMS_DSV Texture2DMS</unmanaged>\t\n            <unmanaged-short>D3D11_TEX2DMS_DSV Texture2DMS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.DepthStencilViewDescription.Texture2DMSArray\">\n            <summary>\t\n            <dd> <p>Specifies an array of multisampled 2D textures (see <strong><see cref=\"T:SharpDX.Direct3D11.DepthStencilViewDescription.Texture2DMultisampledArrayResource\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_DEPTH_STENCIL_VIEW_DESC::Texture2DMSArray']/*\"/>\t\n            <msdn-id>ff476112</msdn-id>\t\n            <unmanaged>D3D11_TEX2DMS_ARRAY_DSV Texture2DMSArray</unmanaged>\t\n            <unmanaged-short>D3D11_TEX2DMS_ARRAY_DSV Texture2DMSArray</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.DepthStencilViewDescription.Texture2DResource\">\n            <summary>\t\n            <p>Specifies the subresource from a 2D texture that is accessible to a depth-stencil view.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure is one member of a depth-stencil-view description (see <strong><see cref=\"T:SharpDX.Direct3D11.DepthStencilViewDescription\"/></strong>).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEX2D_DSV']/*\"/>\t\n            <msdn-id>ff476243</msdn-id>\t\n            <unmanaged>D3D11_TEX2D_DSV</unmanaged>\t\n            <unmanaged-short>D3D11_TEX2D_DSV</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.DepthStencilViewDescription.Texture2DResource.MipSlice\">\n            <summary>\t\n            <dd> <p>The index of the first mipmap level to use.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEX2D_DSV::MipSlice']/*\"/>\t\n            <msdn-id>ff476243</msdn-id>\t\n            <unmanaged>unsigned int MipSlice</unmanaged>\t\n            <unmanaged-short>unsigned int MipSlice</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.DepthStencilViewDescription.Texture1DArrayResource\">\n            <summary>\t\n            <p>Specifies the subresources from an array of 1D textures to use in a depth-stencil view.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure is one member of a depth-stencil-view description (see <strong><see cref=\"T:SharpDX.Direct3D11.DepthStencilViewDescription\"/></strong>).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEX1D_ARRAY_DSV']/*\"/>\t\n            <msdn-id>ff476225</msdn-id>\t\n            <unmanaged>D3D11_TEX1D_ARRAY_DSV</unmanaged>\t\n            <unmanaged-short>D3D11_TEX1D_ARRAY_DSV</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.DepthStencilViewDescription.Texture1DArrayResource.MipSlice\">\n            <summary>\t\n            <dd> <p>The index of the first mipmap level to use.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEX1D_ARRAY_DSV::MipSlice']/*\"/>\t\n            <msdn-id>ff476225</msdn-id>\t\n            <unmanaged>unsigned int MipSlice</unmanaged>\t\n            <unmanaged-short>unsigned int MipSlice</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.DepthStencilViewDescription.Texture1DArrayResource.FirstArraySlice\">\n            <summary>\t\n            <dd> <p>The index of the first texture to use in an array of textures.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEX1D_ARRAY_DSV::FirstArraySlice']/*\"/>\t\n            <msdn-id>ff476225</msdn-id>\t\n            <unmanaged>unsigned int FirstArraySlice</unmanaged>\t\n            <unmanaged-short>unsigned int FirstArraySlice</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.DepthStencilViewDescription.Texture1DArrayResource.ArraySize\">\n            <summary>\t\n            <dd> <p>Number of textures to use.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEX1D_ARRAY_DSV::ArraySize']/*\"/>\t\n            <msdn-id>ff476225</msdn-id>\t\n            <unmanaged>unsigned int ArraySize</unmanaged>\t\n            <unmanaged-short>unsigned int ArraySize</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.DepthStencilViewDescription.Texture1DResource\">\n            <summary>\t\n            <p>Specifies the subresource from a 1D texture that is accessible to a depth-stencil view.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure is one member of a depth-stencil-view description (see <strong><see cref=\"T:SharpDX.Direct3D11.DepthStencilViewDescription\"/></strong>).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEX1D_DSV']/*\"/>\t\n            <msdn-id>ff476229</msdn-id>\t\n            <unmanaged>D3D11_TEX1D_DSV</unmanaged>\t\n            <unmanaged-short>D3D11_TEX1D_DSV</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.DepthStencilViewDescription.Texture1DResource.MipSlice\">\n            <summary>\t\n            <dd> <p>The index of the first mipmap level to use.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEX1D_DSV::MipSlice']/*\"/>\t\n            <msdn-id>ff476229</msdn-id>\t\n            <unmanaged>unsigned int MipSlice</unmanaged>\t\n            <unmanaged-short>unsigned int MipSlice</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.DepthStencilViewDescription.Texture2DArrayResource\">\n            <summary>\t\n            <p>Specifies the subresources from an array 2D textures that are accessible to a depth-stencil view.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure is one member of a depth-stencil-view description (see <strong><see cref=\"T:SharpDX.Direct3D11.DepthStencilViewDescription\"/></strong>).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEX2D_ARRAY_DSV']/*\"/>\t\n            <msdn-id>ff476239</msdn-id>\t\n            <unmanaged>D3D11_TEX2D_ARRAY_DSV</unmanaged>\t\n            <unmanaged-short>D3D11_TEX2D_ARRAY_DSV</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.DepthStencilViewDescription.Texture2DArrayResource.MipSlice\">\n            <summary>\t\n            <dd> <p>The index of the first mipmap level to use.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEX2D_ARRAY_DSV::MipSlice']/*\"/>\t\n            <msdn-id>ff476239</msdn-id>\t\n            <unmanaged>unsigned int MipSlice</unmanaged>\t\n            <unmanaged-short>unsigned int MipSlice</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.DepthStencilViewDescription.Texture2DArrayResource.FirstArraySlice\">\n            <summary>\t\n            <dd> <p>The index of the first texture to use in an array of textures.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEX2D_ARRAY_DSV::FirstArraySlice']/*\"/>\t\n            <msdn-id>ff476239</msdn-id>\t\n            <unmanaged>unsigned int FirstArraySlice</unmanaged>\t\n            <unmanaged-short>unsigned int FirstArraySlice</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.DepthStencilViewDescription.Texture2DArrayResource.ArraySize\">\n            <summary>\t\n            <dd> <p>Number of textures to use.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEX2D_ARRAY_DSV::ArraySize']/*\"/>\t\n            <msdn-id>ff476239</msdn-id>\t\n            <unmanaged>unsigned int ArraySize</unmanaged>\t\n            <unmanaged-short>unsigned int ArraySize</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.DepthStencilViewDescription.Texture2DMultisampledResource\">\n            <summary>\t\n            <p>Specifies the subresource from a multisampled 2D texture that is accessible to a depth-stencil view.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Because a multisampled 2D texture contains a single subtexture, there is nothing to specify; this unused member is included so that this structure will compile in C.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEX2DMS_DSV']/*\"/>\t\n            <msdn-id>ff476236</msdn-id>\t\n            <unmanaged>D3D11_TEX2DMS_DSV</unmanaged>\t\n            <unmanaged-short>D3D11_TEX2DMS_DSV</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.DepthStencilViewDescription.Texture2DMultisampledResource.UnusedFieldNothingToDefine\">\n            <summary>\t\n            <dd> <p>Unused.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEX2DMS_DSV::UnusedField_NothingToDefine']/*\"/>\t\n            <msdn-id>ff476236</msdn-id>\t\n            <unmanaged>unsigned int UnusedField_NothingToDefine</unmanaged>\t\n            <unmanaged-short>unsigned int UnusedField_NothingToDefine</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.DepthStencilViewDescription.Texture2DMultisampledArrayResource\">\n            <summary>\t\n            <p>Specifies the subresources from an array of multisampled 2D textures for a depth-stencil view.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure is one member of a depth-stencil-view description (see <strong><see cref=\"T:SharpDX.Direct3D11.DepthStencilViewDescription\"/></strong>).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEX2DMS_ARRAY_DSV']/*\"/>\t\n            <msdn-id>ff476233</msdn-id>\t\n            <unmanaged>D3D11_TEX2DMS_ARRAY_DSV</unmanaged>\t\n            <unmanaged-short>D3D11_TEX2DMS_ARRAY_DSV</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.DepthStencilViewDescription.Texture2DMultisampledArrayResource.FirstArraySlice\">\n            <summary>\t\n            <dd> <p>The index of the first texture to use in an array of textures.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEX2DMS_ARRAY_DSV::FirstArraySlice']/*\"/>\t\n            <msdn-id>ff476233</msdn-id>\t\n            <unmanaged>unsigned int FirstArraySlice</unmanaged>\t\n            <unmanaged-short>unsigned int FirstArraySlice</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.DepthStencilViewDescription.Texture2DMultisampledArrayResource.ArraySize\">\n            <summary>\t\n            <dd> <p>Number of textures to use.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEX2DMS_ARRAY_DSV::ArraySize']/*\"/>\t\n            <msdn-id>ff476233</msdn-id>\t\n            <unmanaged>unsigned int ArraySize</unmanaged>\t\n            <unmanaged-short>unsigned int ArraySize</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.FastFourierTransformBufferRequirements\">\n            <summary>\t\n            <p>Buffer requirements for an FFT.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The <see cref=\"T:SharpDX.Direct3D11.FastFourierTransformBufferRequirements\"/> structure is initialized by a call to one of the <strong><see cref=\"M:SharpDX.Direct3D11.D3DCSX.CreateFFT(SharpDX.Direct3D11.DeviceContext,SharpDX.Direct3D11.FastFourierTransformDescription@,System.Int32,SharpDX.Direct3D11.FastFourierTransformBufferRequirements@,SharpDX.Direct3D11.FastFourierTransform)\"/></strong> functions  (see D3DX Functions).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_FFT_BUFFER_INFO']/*\"/>\t\n            <msdn-id>ff476308</msdn-id>\t\n            <unmanaged>D3DX11_FFT_BUFFER_INFO</unmanaged>\t\n            <unmanaged-short>D3DX11_FFT_BUFFER_INFO</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.FastFourierTransformBufferRequirements.TemporaryBufferCount\">\n            <summary>\t\n            <dd> <p>Number of temporary buffers needed. Allowed range is 0 to D3DX11_FFT_MAX_TEMP_BUFFERS.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_FFT_BUFFER_INFO::NumTempBufferSizes']/*\"/>\t\n            <msdn-id>ff476308</msdn-id>\t\n            <unmanaged>unsigned int NumTempBufferSizes</unmanaged>\t\n            <unmanaged-short>unsigned int NumTempBufferSizes</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.FastFourierTransformBufferRequirements.PrecomputeBufferCount\">\n            <summary>\t\n            <dd> <p>Number of precompute buffers required.  Allowed range is 0 to D3DX11_FFT_MAX_PRECOMPUTE_BUFFERS.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_FFT_BUFFER_INFO::NumPrecomputeBufferSizes']/*\"/>\t\n            <msdn-id>ff476308</msdn-id>\t\n            <unmanaged>unsigned int NumPrecomputeBufferSizes</unmanaged>\t\n            <unmanaged-short>unsigned int NumPrecomputeBufferSizes</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.FastFourierTransformBufferRequirements.TemporaryBufferSizes\">\n            <summary>\t\n            <dd> <p>Minimum sizes (in FLOATs) of temporary buffers.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_FFT_BUFFER_INFO::TempBufferFloatSizes']/*\"/>\t\n            <msdn-id>ff476308</msdn-id>\t\n            <unmanaged>unsigned int TempBufferFloatSizes[4]</unmanaged>\t\n            <unmanaged-short>unsigned int TempBufferFloatSizes</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.FastFourierTransformBufferRequirements.PrecomputeBufferSizes\">\n            <summary>\t\n            <dd> <p>Minimum sizes (in FLOATs) for precompute buffers.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_FFT_BUFFER_INFO::PrecomputeBufferFloatSizes']/*\"/>\t\n            <msdn-id>ff476308</msdn-id>\t\n            <unmanaged>unsigned int PrecomputeBufferFloatSizes[4]</unmanaged>\t\n            <unmanaged-short>unsigned int PrecomputeBufferFloatSizes</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.FastFourierTransformDescription\">\n            <summary>\t\n            <p>Describes an FFT.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_FFT_DESC']/*\"/>\t\n            <msdn-id>ff476311</msdn-id>\t\n            <unmanaged>D3DX11_FFT_DESC</unmanaged>\t\n            <unmanaged-short>D3DX11_FFT_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.FastFourierTransformDescription.DimensionCount\">\n            <summary>\t\n            <dd> <p>Number of dimension in the FFT.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_FFT_DESC::NumDimensions']/*\"/>\t\n            <msdn-id>ff476311</msdn-id>\t\n            <unmanaged>unsigned int NumDimensions</unmanaged>\t\n            <unmanaged-short>unsigned int NumDimensions</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.FastFourierTransformDescription.Dimensions\">\n            <summary>\t\n            <dd> <p>Combination of <strong><see cref=\"T:SharpDX.Direct3D11.FastFourierTransformDimensions\"/></strong> flags indicating the  dimensions to transform.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_FFT_DESC::DimensionMask']/*\"/>\t\n            <msdn-id>ff476311</msdn-id>\t\n            <unmanaged>D3DX11_FFT_DIM_MASK DimensionMask</unmanaged>\t\n            <unmanaged-short>D3DX11_FFT_DIM_MASK DimensionMask</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.FastFourierTransformDescription.DataType\">\n            <summary>\t\n            <dd> <p> <strong><see cref=\"T:SharpDX.Direct3D11.FastFourierTransformDataType\"/></strong> flag indicating the type of data being transformed.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_FFT_DESC::Type']/*\"/>\t\n            <msdn-id>ff476311</msdn-id>\t\n            <unmanaged>D3DX11_FFT_DATA_TYPE Type</unmanaged>\t\n            <unmanaged-short>D3DX11_FFT_DATA_TYPE Type</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.FastFourierTransformDescription.ElementLengths\">\n            <summary>\t\n            <dd> <p>Length of each dimension in the FFT.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_FFT_DESC::ElementLengths']/*\"/>\t\n            <msdn-id>ff476311</msdn-id>\t\n            <unmanaged>unsigned int ElementLengths[32]</unmanaged>\t\n            <unmanaged-short>unsigned int ElementLengths</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.FeatureDataD3D10XHardwareOptions\">\n            <summary>\t\n            <p>Describes compute shader and raw and structured buffer support in the current graphics driver.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Direct3D 11 devices (<see cref=\"F:SharpDX.Direct3D.FeatureLevel.Level_11_0\"/>) are required to support Compute Shader model 5.0.  Direct3D 10.x devices (<see cref=\"F:SharpDX.Direct3D.FeatureLevel.Level_10_0\"/>, <see cref=\"F:SharpDX.Direct3D.FeatureLevel.Level_10_1\"/>) can optionally support Compute Shader model 4.0 or 4.1.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_FEATURE_DATA_D3D10_X_HARDWARE_OPTIONS']/*\"/>\t\n            <msdn-id>ff476126</msdn-id>\t\n            <unmanaged>D3D11_FEATURE_DATA_D3D10_X_HARDWARE_OPTIONS</unmanaged>\t\n            <unmanaged-short>D3D11_FEATURE_DATA_D3D10_X_HARDWARE_OPTIONS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.FeatureDataD3D10XHardwareOptions.ComputeShadersPlusRawAndStructuredBuffersViaShader4X\">\n            <summary>\t\n            <dd> <p><strong>TRUE</strong> if compute shaders and raw and structured buffers are supported; otherwise <strong><see cref=\"F:SharpDX.Result.False\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_FEATURE_DATA_D3D10_X_HARDWARE_OPTIONS::ComputeShaders_Plus_RawAndStructuredBuffers_Via_Shader_4_x']/*\"/>\t\n            <msdn-id>ff476126</msdn-id>\t\n            <unmanaged>BOOL ComputeShaders_Plus_RawAndStructuredBuffers_Via_Shader_4_x</unmanaged>\t\n            <unmanaged-short>BOOL ComputeShaders_Plus_RawAndStructuredBuffers_Via_Shader_4_x</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.FeatureDataDoubles\">\n            <summary>\t\n            <p>Describes double data type support in the current graphics driver.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>If the runtime sets <strong>DoublePrecisionFloatShaderOps</strong> to  <strong>TRUE</strong>, the hardware and driver support the following Shader Model 5 instructions:</p><ul> <li> dadd </li> <li> dmax </li> <li> dmin </li> <li> dmul </li> <li> deq </li> <li> dge </li> <li> dlt </li> <li> dne </li> <li> dmov </li> <li> dmovc </li> <li> dtof </li> <li> ftod </li> </ul><p><strong>Note</strong>??If <strong>DoublePrecisionFloatShaderOps</strong> is <strong>TRUE</strong>, the hardware and driver do not necessarily support double-precision division.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_FEATURE_DATA_DOUBLES']/*\"/>\t\n            <msdn-id>ff476127</msdn-id>\t\n            <unmanaged>D3D11_FEATURE_DATA_DOUBLES</unmanaged>\t\n            <unmanaged-short>D3D11_FEATURE_DATA_DOUBLES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.FeatureDataDoubles.DoublePrecisionFloatShaderOps\">\n            <summary>\t\n            <dd> <p>Specifies whether double types are allowed. If <strong>TRUE</strong>, double types are allowed; otherwise <strong><see cref=\"F:SharpDX.Result.False\"/></strong>. The runtime must set <strong>DoublePrecisionFloatShaderOps</strong> to  <strong>TRUE</strong> in order for you to use any HLSL shader that is compiled with a double type.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_FEATURE_DATA_DOUBLES::DoublePrecisionFloatShaderOps']/*\"/>\t\n            <msdn-id>ff476127</msdn-id>\t\n            <unmanaged>BOOL DoublePrecisionFloatShaderOps</unmanaged>\t\n            <unmanaged-short>BOOL DoublePrecisionFloatShaderOps</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.FeatureDataFormatSupport\">\n            <summary>\t\n            <p>Describes which resources are supported by the current graphics driver for a given format.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_FEATURE_DATA_FORMAT_SUPPORT']/*\"/>\t\n            <msdn-id>ff476128</msdn-id>\t\n            <unmanaged>D3D11_FEATURE_DATA_FORMAT_SUPPORT</unmanaged>\t\n            <unmanaged-short>D3D11_FEATURE_DATA_FORMAT_SUPPORT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.FeatureDataFormatSupport.InFormat\">\n            <summary>\t\n            <dd> <p> <strong><see cref=\"T:SharpDX.DXGI.Format\"/></strong> to return information on.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_FEATURE_DATA_FORMAT_SUPPORT::InFormat']/*\"/>\t\n            <msdn-id>ff476128</msdn-id>\t\n            <unmanaged>DXGI_FORMAT InFormat</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT InFormat</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.FeatureDataFormatSupport.OutFormatSupport\">\n            <summary>\t\n            <dd> <p>Combination of <strong><see cref=\"T:SharpDX.Direct3D11.FormatSupport\"/></strong> flags indicating which resources are supported.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_FEATURE_DATA_FORMAT_SUPPORT::OutFormatSupport']/*\"/>\t\n            <msdn-id>ff476128</msdn-id>\t\n            <unmanaged>D3D11_FORMAT_SUPPORT OutFormatSupport</unmanaged>\t\n            <unmanaged-short>D3D11_FORMAT_SUPPORT OutFormatSupport</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.FeatureDataFormatSupport2\">\n            <summary>\t\n            <p>Describes which unordered resource options are supported by the current graphics driver for a given format.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_FEATURE_DATA_FORMAT_SUPPORT2']/*\"/>\t\n            <msdn-id>ff476129</msdn-id>\t\n            <unmanaged>D3D11_FEATURE_DATA_FORMAT_SUPPORT2</unmanaged>\t\n            <unmanaged-short>D3D11_FEATURE_DATA_FORMAT_SUPPORT2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.FeatureDataFormatSupport2.InFormat\">\n            <summary>\t\n            <dd> <p> <strong><see cref=\"T:SharpDX.DXGI.Format\"/></strong> to return information on.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_FEATURE_DATA_FORMAT_SUPPORT2::InFormat']/*\"/>\t\n            <msdn-id>ff476129</msdn-id>\t\n            <unmanaged>DXGI_FORMAT InFormat</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT InFormat</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.FeatureDataFormatSupport2.OutFormatSupport2\">\n            <summary>\t\n            <dd> <p>Combination of <strong><see cref=\"T:SharpDX.Direct3D11.ComputeShaderFormatSupport\"/></strong> flags indicating which unordered resource options are supported.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_FEATURE_DATA_FORMAT_SUPPORT2::OutFormatSupport2']/*\"/>\t\n            <msdn-id>ff476129</msdn-id>\t\n            <unmanaged>D3D11_FORMAT_SUPPORT2 OutFormatSupport2</unmanaged>\t\n            <unmanaged-short>D3D11_FORMAT_SUPPORT2 OutFormatSupport2</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.FeatureDataThreading\">\n            <summary>\t\n            <p>Describes the multi-threading features that are supported by the current graphics driver.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Use the <see cref=\"T:SharpDX.Direct3D11.FeatureDataThreading\"/> structure with the <strong><see cref=\"M:SharpDX.Direct3D11.Device.CheckFeatureSupport(SharpDX.Direct3D11.Feature)\"/></strong> method to determine multi-threading support.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_FEATURE_DATA_THREADING']/*\"/>\t\n            <msdn-id>ff476130</msdn-id>\t\n            <unmanaged>D3D11_FEATURE_DATA_THREADING</unmanaged>\t\n            <unmanaged-short>D3D11_FEATURE_DATA_THREADING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.FeatureDataThreading.DriverConcurrentCreates\">\n            <summary>\t\n            <dd> <p><strong>TRUE</strong> means resources can be created concurrently on multiple threads while drawing; <strong><see cref=\"F:SharpDX.Result.False\"/></strong> means that the presence of coarse synchronization will prevent concurrency.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_FEATURE_DATA_THREADING::DriverConcurrentCreates']/*\"/>\t\n            <msdn-id>ff476130</msdn-id>\t\n            <unmanaged>BOOL DriverConcurrentCreates</unmanaged>\t\n            <unmanaged-short>BOOL DriverConcurrentCreates</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.FeatureDataThreading.DriverCommandLists\">\n            <summary>\t\n            <dd> <p><strong>TRUE</strong> means command lists are supported by the current driver; <strong><see cref=\"F:SharpDX.Result.False\"/></strong> means that the API will emulate deferred contexts and command lists with software.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_FEATURE_DATA_THREADING::DriverCommandLists']/*\"/>\t\n            <msdn-id>ff476130</msdn-id>\t\n            <unmanaged>BOOL DriverCommandLists</unmanaged>\t\n            <unmanaged-short>BOOL DriverCommandLists</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.ImageInformation\">\n            <summary>\t\n            <p>Optionally provide information to texture loader APIs to control how textures get loaded. A value of D3DX11_DEFAULT for any of these parameters will cause D3DX to automatically pick use the value from the source file.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure is used by methods such as: <strong><see cref=\"M:SharpDX.Direct3D11.D3DX11.GetImageInfoFromFile(System.String,System.IntPtr,SharpDX.Direct3D11.ImageInformation@,SharpDX.Result@)\"/></strong>, <strong><see cref=\"M:SharpDX.Direct3D11.D3DX11.GetImageInfoFromMemory(System.IntPtr,SharpDX.PointerSize,System.IntPtr,SharpDX.Direct3D11.ImageInformation@,SharpDX.Result@)\"/></strong>, or <strong><see cref=\"M:SharpDX.Direct3D11.D3DX11.GetImageInfoFromResource(System.IntPtr,System.String,System.IntPtr,SharpDX.Direct3D11.ImageInformation@,SharpDX.Result@)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_IMAGE_INFO']/*\"/>\t\n            <msdn-id>ff476316</msdn-id>\t\n            <unmanaged>D3DX11_IMAGE_INFO</unmanaged>\t\n            <unmanaged-short>D3DX11_IMAGE_INFO</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ImageInformation.Width\">\n            <summary>\t\n            <dd> <p>The target width of the texture. If the actual width of the texture is larger or smaller than this value then the texture will be scaled up or down to fit this target width.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_IMAGE_INFO::Width']/*\"/>\t\n            <msdn-id>ff476316</msdn-id>\t\n            <unmanaged>unsigned int Width</unmanaged>\t\n            <unmanaged-short>unsigned int Width</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ImageInformation.Height\">\n            <summary>\t\n            <dd> <p>The target height of the texture. If the actual height of the texture is larger or smaller than this value then the texture will be scaled up or down to fit this target height.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_IMAGE_INFO::Height']/*\"/>\t\n            <msdn-id>ff476316</msdn-id>\t\n            <unmanaged>unsigned int Height</unmanaged>\t\n            <unmanaged-short>unsigned int Height</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ImageInformation.Depth\">\n            <summary>\t\n            <dd> <p>The depth of the texture. This only applies to volume textures.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_IMAGE_INFO::Depth']/*\"/>\t\n            <msdn-id>ff476316</msdn-id>\t\n            <unmanaged>unsigned int Depth</unmanaged>\t\n            <unmanaged-short>unsigned int Depth</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ImageInformation.ArraySize\">\n            <summary>\t\n            <dd> <p>The number of elements in the array.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_IMAGE_INFO::ArraySize']/*\"/>\t\n            <msdn-id>ff476316</msdn-id>\t\n            <unmanaged>unsigned int ArraySize</unmanaged>\t\n            <unmanaged-short>unsigned int ArraySize</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ImageInformation.MipLevels\">\n            <summary>\t\n            <dd> <p>The maximum number of mipmap levels in the texture. See the remarks in <strong><see cref=\"T:SharpDX.Direct3D11.ShaderResourceViewDescription.Texture1DResource\"/></strong>. Using 0 or D3DX11_DEFAULT will cause a full mipmap chain to be created.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_IMAGE_INFO::MipLevels']/*\"/>\t\n            <msdn-id>ff476316</msdn-id>\t\n            <unmanaged>unsigned int MipLevels</unmanaged>\t\n            <unmanaged-short>unsigned int MipLevels</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ImageInformation.OptionFlags\">\n            <summary>\t\n            <dd> <p>Miscellaneous resource properties specified with a <strong><see cref=\"T:SharpDX.Direct3D11.ResourceOptionFlags\"/></strong> flag.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_IMAGE_INFO::MiscFlags']/*\"/>\t\n            <msdn-id>ff476316</msdn-id>\t\n            <unmanaged>D3D11_RESOURCE_MISC_FLAG MiscFlags</unmanaged>\t\n            <unmanaged-short>D3D11_RESOURCE_MISC_FLAG MiscFlags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ImageInformation.Format\">\n            <summary>\t\n            <dd> <p>A <strong><see cref=\"T:SharpDX.DXGI.Format\"/></strong> enumeration specifying the format the texture will be in after it is loaded.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_IMAGE_INFO::Format']/*\"/>\t\n            <msdn-id>ff476316</msdn-id>\t\n            <unmanaged>DXGI_FORMAT Format</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT Format</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ImageInformation.ResourceDimension\">\n            <summary>\t\n            <dd> <p>A <strong><see cref=\"T:SharpDX.Direct3D11.ResourceDimension\"/></strong> value, which identifies the type of resource.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_IMAGE_INFO::ResourceDimension']/*\"/>\t\n            <msdn-id>ff476316</msdn-id>\t\n            <unmanaged>D3D11_RESOURCE_DIMENSION ResourceDimension</unmanaged>\t\n            <unmanaged-short>D3D11_RESOURCE_DIMENSION ResourceDimension</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ImageInformation.ImageFileFormat\">\n            <summary>\t\n            <dd> <p>A <strong><see cref=\"T:SharpDX.Direct3D11.ImageFileFormat\"/></strong> value, which identifies the image format.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_IMAGE_INFO::ImageFileFormat']/*\"/>\t\n            <msdn-id>ff476316</msdn-id>\t\n            <unmanaged>D3DX11_IMAGE_FILE_FORMAT ImageFileFormat</unmanaged>\t\n            <unmanaged-short>D3DX11_IMAGE_FILE_FORMAT ImageFileFormat</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.ImageInformation.FromFile(System.String)\">\n            <summary>\t\n            Retrieves information about a given image file.\t\n            </summary>\t\n            <param name=\"fileName\">File name of image to retrieve information about.</param>\n            <returns>If the function succeeds, returns a <see cref=\"T:SharpDX.Direct3D11.ImageInformation\"/> filled with the description of the data in the source file. else returns null </returns>\n            <unmanaged>HRESULT D3DX11GetImageInfoFromFileW([None] const wchar_t* pSrcFile,[None] ID3DX11ThreadPump* pPump,[None] D3DX11_IMAGE_INFO* pSrcInfo,[None] HRESULT* pHResult)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.ImageInformation.FromMemory(System.Byte[])\">\n            <summary>\t\n            Retrieves information about a given image file from a memory location.\n            </summary>\t\n            <param name=\"memory\">an array to the image in memory</param>\n            <returns>If the function succeeds, returns a <see cref=\"T:SharpDX.Direct3D11.ImageInformation\"/> filled with the description of the data from the image memory. else returns null </returns>\n            <unmanaged>HRESULT D3DX11GetImageInfoFromFileW([None] const wchar_t* pSrcFile,[None] ID3DX11ThreadPump* pPump,[None] D3DX11_IMAGE_INFO* pSrcInfo,[None] HRESULT* pHResult)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.ImageLoadInformation\">\n            <summary>\t\n            <p>Optionally provide information to texture loader APIs to control how textures get loaded. A value of D3DX11_DEFAULT for any of these parameters will cause D3DX to automatically pick use the value from the source file.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>When initializing the structure, you may set any member to D3DX11_DEFAULT and D3DX will initialize it with a default value from the source texture when the texture is loaded.</p><p>This structure can be used by APIs that:</p><ul> <li>Create resources, such as <strong><see cref=\"M:SharpDX.Direct3D11.D3DX11.CreateTextureFromFile(SharpDX.Direct3D11.Device,System.String,System.Nullable{SharpDX.Direct3D11.ImageLoadInformation},System.IntPtr,System.IntPtr@,SharpDX.Result@)\"/></strong> and <strong><see cref=\"M:SharpDX.Direct3D11.D3DX11.CreateShaderResourceViewFromFile(SharpDX.Direct3D11.Device,System.String,System.Nullable{SharpDX.Direct3D11.ImageLoadInformation},System.IntPtr,SharpDX.Direct3D11.ShaderResourceView@,SharpDX.Result@)\"/></strong>.</li> <li>Create data processors, such as <strong>D3DX11CreateAsyncTextureInfoProcessor</strong> or\t\n            <strong>D3DX11CreateAsyncShaderResourceViewProcessor</strong>.</li> </ul><p>The default values are:</p><pre><code> Width = D3DX11_DEFAULT; Height = D3DX11_DEFAULT; Depth = D3DX11_DEFAULT; FirstMipLevel = D3DX11_DEFAULT; MipLevels = D3DX11_DEFAULT; Usage = (<see cref=\"T:SharpDX.Direct3D11.ResourceUsage\"/>) D3DX11_DEFAULT; BindFlags = D3DX11_DEFAULT; CpuAccessFlags = D3DX11_DEFAULT; MiscFlags = D3DX11_DEFAULT; Format = DXGI_FORMAT_FROM_FILE; Filter = D3DX11_DEFAULT; MipFilter = D3DX11_DEFAULT; pSrcInfo = <c>null</c>;\t\n            </code></pre><p>Here is a brief example that uses this structure to supply the pixel format when loading a texture. For the complete code, see HDRFormats10.cpp in HDRToneMappingCS11 Sample.</p><pre><code> <see cref=\"T:SharpDX.Direct3D11.ShaderResourceView\"/>* pCubeRV = <c>null</c>;\t\n            WCHAR strPath[MAX_PATH];\t\n            <see cref=\"T:SharpDX.Direct3D11.ImageLoadInformation\"/> LoadInfo; DXUTFindDXSDKMediaFileCch( strPath, MAX_PATH,  L\"Light Probes\\\\uffizi_cross.dds\" ); LoadInfo.Format = <see cref=\"F:SharpDX.DXGI.Format.R16G16B16A16_Float\"/>; hr = <see cref=\"M:SharpDX.Direct3D11.D3DX11.CreateShaderResourceViewFromFile(SharpDX.Direct3D11.Device,System.String,System.Nullable{SharpDX.Direct3D11.ImageLoadInformation},System.IntPtr,SharpDX.Direct3D11.ShaderResourceView@,SharpDX.Result@)\"/>( pd3dDevice, strPath,  &amp;LoadInfo, <c>null</c>, &amp;pCubeRV, <c>null</c> );\t\n            </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_IMAGE_LOAD_INFO']/*\"/>\t\n            <msdn-id>ff476317</msdn-id>\t\n            <unmanaged>D3DX11_IMAGE_LOAD_INFO</unmanaged>\t\n            <unmanaged-short>D3DX11_IMAGE_LOAD_INFO</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ImageLoadInformation.FileDefaultValue\">\n            <summary>\n            The default value for load options.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ImageLoadInformation.Width\">\n            <summary>\t\n            <dd> <p>The target width of the texture. If the actual width of the texture is larger or smaller than this value then the texture will be scaled up or down to fit this target width.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_IMAGE_LOAD_INFO::Width']/*\"/>\t\n            <msdn-id>ff476317</msdn-id>\t\n            <unmanaged>unsigned int Width</unmanaged>\t\n            <unmanaged-short>unsigned int Width</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ImageLoadInformation.Height\">\n            <summary>\t\n            <dd> <p>The target height of the texture. If the actual height of the texture is larger or smaller than this value then the texture will be scaled up or down to fit this target height.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_IMAGE_LOAD_INFO::Height']/*\"/>\t\n            <msdn-id>ff476317</msdn-id>\t\n            <unmanaged>unsigned int Height</unmanaged>\t\n            <unmanaged-short>unsigned int Height</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ImageLoadInformation.Depth\">\n            <summary>\t\n            <dd> <p>The depth of the texture. This only applies to volume textures.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_IMAGE_LOAD_INFO::Depth']/*\"/>\t\n            <msdn-id>ff476317</msdn-id>\t\n            <unmanaged>unsigned int Depth</unmanaged>\t\n            <unmanaged-short>unsigned int Depth</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ImageLoadInformation.FirstMipLevel\">\n            <summary>\t\n            <dd> <p>The highest resolution mipmap level of the texture. If this is greater than 0, then after the texture is loaded FirstMipLevel will be mapped to mipmap level 0.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_IMAGE_LOAD_INFO::FirstMipLevel']/*\"/>\t\n            <msdn-id>ff476317</msdn-id>\t\n            <unmanaged>unsigned int FirstMipLevel</unmanaged>\t\n            <unmanaged-short>unsigned int FirstMipLevel</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ImageLoadInformation.MipLevels\">\n            <summary>\t\n            <dd> <p>The maximum number of mipmap levels in the texture. See the remarks in <strong><see cref=\"T:SharpDX.Direct3D11.ShaderResourceViewDescription.Texture1DResource\"/></strong>. Using 0 or D3DX11_DEFAULT will cause a full mipmap chain to be created.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_IMAGE_LOAD_INFO::MipLevels']/*\"/>\t\n            <msdn-id>ff476317</msdn-id>\t\n            <unmanaged>unsigned int MipLevels</unmanaged>\t\n            <unmanaged-short>unsigned int MipLevels</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ImageLoadInformation.Usage\">\n            <summary>\t\n            <dd> <p>The way the texture resource is intended to be used. See <strong><see cref=\"T:SharpDX.Direct3D11.ResourceUsage\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_IMAGE_LOAD_INFO::Usage']/*\"/>\t\n            <msdn-id>ff476317</msdn-id>\t\n            <unmanaged>D3D11_USAGE Usage</unmanaged>\t\n            <unmanaged-short>D3D11_USAGE Usage</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ImageLoadInformation.BindFlags\">\n            <summary>\t\n            <dd> <p>The pipeline stages that the texture will be allowed to bind to. See <strong><see cref=\"T:SharpDX.Direct3D11.BindFlags\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_IMAGE_LOAD_INFO::BindFlags']/*\"/>\t\n            <msdn-id>ff476317</msdn-id>\t\n            <unmanaged>D3D11_BIND_FLAG BindFlags</unmanaged>\t\n            <unmanaged-short>D3D11_BIND_FLAG BindFlags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ImageLoadInformation.CpuAccessFlags\">\n            <summary>\t\n            <dd> <p>The access permissions the cpu will have for the texture resource. See <strong><see cref=\"T:SharpDX.Direct3D11.CpuAccessFlags\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_IMAGE_LOAD_INFO::CpuAccessFlags']/*\"/>\t\n            <msdn-id>ff476317</msdn-id>\t\n            <unmanaged>D3D11_CPU_ACCESS_FLAG CpuAccessFlags</unmanaged>\t\n            <unmanaged-short>D3D11_CPU_ACCESS_FLAG CpuAccessFlags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ImageLoadInformation.OptionFlags\">\n            <summary>\t\n            <dd> <p>Miscellaneous resource properties (see <strong><see cref=\"T:SharpDX.Direct3D11.ResourceOptionFlags\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_IMAGE_LOAD_INFO::MiscFlags']/*\"/>\t\n            <msdn-id>ff476317</msdn-id>\t\n            <unmanaged>D3D11_RESOURCE_MISC_FLAG MiscFlags</unmanaged>\t\n            <unmanaged-short>D3D11_RESOURCE_MISC_FLAG MiscFlags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ImageLoadInformation.Format\">\n            <summary>\t\n            <dd> <p>A <strong><see cref=\"T:SharpDX.DXGI.Format\"/></strong> enumeration indicating the format the texture will be in after it is loaded.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_IMAGE_LOAD_INFO::Format']/*\"/>\t\n            <msdn-id>ff476317</msdn-id>\t\n            <unmanaged>DXGI_FORMAT Format</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT Format</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ImageLoadInformation.Filter\">\n            <summary>\t\n            <dd> <p>Filter the texture using the specified filter (only when resampling). See <strong><see cref=\"T:SharpDX.Direct3D11.FilterFlags\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_IMAGE_LOAD_INFO::Filter']/*\"/>\t\n            <msdn-id>ff476317</msdn-id>\t\n            <unmanaged>D3DX11_FILTER_FLAG Filter</unmanaged>\t\n            <unmanaged-short>D3DX11_FILTER_FLAG Filter</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ImageLoadInformation.MipFilter\">\n            <summary>\t\n            <dd> <p>Filter the texture mip levels using the specified filter (only if generating mipmaps). Valid values are <see cref=\"F:SharpDX.Direct3D11.FilterFlags.None\"/>, <see cref=\"F:SharpDX.Direct3D11.FilterFlags.Point\"/>, <see cref=\"F:SharpDX.Direct3D11.FilterFlags.Linear\"/>, or <see cref=\"F:SharpDX.Direct3D11.FilterFlags.Triangle\"/>. See <strong><see cref=\"T:SharpDX.Direct3D11.FilterFlags\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_IMAGE_LOAD_INFO::MipFilter']/*\"/>\t\n            <msdn-id>ff476317</msdn-id>\t\n            <unmanaged>D3DX11_FILTER_FLAG MipFilter</unmanaged>\t\n            <unmanaged-short>D3DX11_FILTER_FLAG MipFilter</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ImageLoadInformation.PSrcInfo\">\n            <summary>\t\n            <dd> <p>Information about the original image. See <strong><see cref=\"T:SharpDX.Direct3D11.ImageInformation\"/></strong>. Can be obtained with <strong><see cref=\"M:SharpDX.Direct3D11.D3DX11.GetImageInfoFromFile(System.String,System.IntPtr,SharpDX.Direct3D11.ImageInformation@,SharpDX.Result@)\"/></strong>, <strong><see cref=\"M:SharpDX.Direct3D11.D3DX11.GetImageInfoFromMemory(System.IntPtr,SharpDX.PointerSize,System.IntPtr,SharpDX.Direct3D11.ImageInformation@,SharpDX.Result@)\"/></strong>, or <strong><see cref=\"M:SharpDX.Direct3D11.D3DX11.GetImageInfoFromResource(System.IntPtr,System.String,System.IntPtr,SharpDX.Direct3D11.ImageInformation@,SharpDX.Result@)\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_IMAGE_LOAD_INFO::pSrcInfo']/*\"/>\t\n            <msdn-id>ff476317</msdn-id>\t\n            <unmanaged>D3DX11_IMAGE_INFO* pSrcInfo</unmanaged>\t\n            <unmanaged-short>D3DX11_IMAGE_INFO pSrcInfo</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ImageLoadInformation.Default\">\n            <summary>\n            Gets an ImageLoadInformation that is setup with all default values (<see cref=\"F:SharpDX.Direct3D11.ImageLoadInformation.FileDefaultValue\"/>).\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.InfoQueueFilter\">\n            <summary>\t\n            <p>Debug message filter; contains a lists of message types to allow or deny.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>For use with an <strong><see cref=\"T:SharpDX.Direct3D11.InfoQueue\"/> Interface</strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_INFO_QUEUE_FILTER']/*\"/>\t\n            <msdn-id>ff476177</msdn-id>\t\n            <unmanaged>D3D11_INFO_QUEUE_FILTER</unmanaged>\t\n            <unmanaged-short>D3D11_INFO_QUEUE_FILTER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.InfoQueueFilter.AllowList\">\n            <summary>\t\n            <dd> <p>Types of messages that you want to allow. See <strong><see cref=\"T:SharpDX.Direct3D11.InfoQueueFilterDescription\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_INFO_QUEUE_FILTER::AllowList']/*\"/>\t\n            <msdn-id>ff476177</msdn-id>\t\n            <unmanaged>D3D11_INFO_QUEUE_FILTER_DESC AllowList</unmanaged>\t\n            <unmanaged-short>D3D11_INFO_QUEUE_FILTER_DESC AllowList</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.InfoQueueFilter.DenyList\">\n            <summary>\t\n            <dd> <p>Types of messages that you want to deny.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_INFO_QUEUE_FILTER::DenyList']/*\"/>\t\n            <msdn-id>ff476177</msdn-id>\t\n            <unmanaged>D3D11_INFO_QUEUE_FILTER_DESC DenyList</unmanaged>\t\n            <unmanaged-short>D3D11_INFO_QUEUE_FILTER_DESC DenyList</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.InfoQueueFilterDescription\">\n            <summary>\t\n            <p>Allow or deny certain types of messages to pass through a filter.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_INFO_QUEUE_FILTER_DESC']/*\"/>\t\n            <msdn-id>ff476178</msdn-id>\t\n            <unmanaged>D3D11_INFO_QUEUE_FILTER_DESC</unmanaged>\t\n            <unmanaged-short>D3D11_INFO_QUEUE_FILTER_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.InfoQueueFilterDescription.CategorieCount\">\n            <summary>\t\n            <dd> <p>Number of message categories to allow or deny.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_INFO_QUEUE_FILTER_DESC::NumCategories']/*\"/>\t\n            <msdn-id>ff476178</msdn-id>\t\n            <unmanaged>unsigned int NumCategories</unmanaged>\t\n            <unmanaged-short>unsigned int NumCategories</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.InfoQueueFilterDescription.PCategoryList\">\n            <summary>\t\n            <dd> <p>Array of message categories to allow or deny. Array must have at least NumCategories members (see <strong><see cref=\"T:SharpDX.Direct3D11.MessageCategory\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_INFO_QUEUE_FILTER_DESC::pCategoryList']/*\"/>\t\n            <msdn-id>ff476178</msdn-id>\t\n            <unmanaged>D3D11_MESSAGE_CATEGORY* pCategoryList</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_CATEGORY pCategoryList</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.InfoQueueFilterDescription.SeveritieCount\">\n            <summary>\t\n            <dd> <p>Number of message severity levels to allow or deny.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_INFO_QUEUE_FILTER_DESC::NumSeverities']/*\"/>\t\n            <msdn-id>ff476178</msdn-id>\t\n            <unmanaged>unsigned int NumSeverities</unmanaged>\t\n            <unmanaged-short>unsigned int NumSeverities</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.InfoQueueFilterDescription.PSeverityList\">\n            <summary>\t\n            <dd> <p>Array of message severity levels to allow or deny. Array must have at least NumSeverities members (see <strong><see cref=\"T:SharpDX.Direct3D11.MessageSeverity\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_INFO_QUEUE_FILTER_DESC::pSeverityList']/*\"/>\t\n            <msdn-id>ff476178</msdn-id>\t\n            <unmanaged>D3D11_MESSAGE_SEVERITY* pSeverityList</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_SEVERITY pSeverityList</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.InfoQueueFilterDescription.IDCount\">\n            <summary>\t\n            <dd> <p>Number of message IDs to allow or deny.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_INFO_QUEUE_FILTER_DESC::NumIDs']/*\"/>\t\n            <msdn-id>ff476178</msdn-id>\t\n            <unmanaged>unsigned int NumIDs</unmanaged>\t\n            <unmanaged-short>unsigned int NumIDs</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.InfoQueueFilterDescription.PIDList\">\n            <summary>\t\n            <dd> <p>Array of message IDs to allow or deny. Array must have at least NumIDs members (see <strong><see cref=\"T:SharpDX.Direct3D11.MessageId\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_INFO_QUEUE_FILTER_DESC::pIDList']/*\"/>\t\n            <msdn-id>ff476178</msdn-id>\t\n            <unmanaged>D3D11_MESSAGE_ID* pIDList</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID pIDList</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.InfoQueueFilterDescription.Categories\">\n            <summary>\n            Gets or sets the categories.\n            </summary>\n            <value>\n            The categories.\n            </value>\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.InfoQueueFilterDescription.Severities\">\n            <summary>\n            Gets or sets the severities.\n            </summary>\n            <value>\n            The severities.\n            </value>\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.InfoQueueFilterDescription.Ids\">\n            <summary>\n            Gets or sets the ids.\n            </summary>\n            <value>\n            The ids.\n            </value>\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.InputElement\">\n            <summary>\t\n            <p>A description of a single element for the input-assembler stage.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>An input-layout object contains an array of structures, each structure defines one element being read from an input slot. Create an input-layout  object by calling <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateInputLayout(SharpDX.Direct3D11.InputElement[],System.Int32,System.IntPtr,SharpDX.PointerSize,SharpDX.Direct3D11.InputLayout)\"/></strong>. For an example, see the \"Create the Input-Layout Object\" subtopic under the  Getting Started with the Input-Assembler Stage topic.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_INPUT_ELEMENT_DESC']/*\"/>\t\n            <msdn-id>ff476180</msdn-id>\t\n            <unmanaged>D3D11_INPUT_ELEMENT_DESC</unmanaged>\t\n            <unmanaged-short>D3D11_INPUT_ELEMENT_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.InputElement.SemanticName\">\n            <summary>\t\n            <dd> <p>The HLSL semantic associated with this element in a shader input-signature.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_INPUT_ELEMENT_DESC::SemanticName']/*\"/>\t\n            <msdn-id>ff476180</msdn-id>\t\n            <unmanaged>const char* SemanticName</unmanaged>\t\n            <unmanaged-short>char SemanticName</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.InputElement.SemanticIndex\">\n            <summary>\t\n            <dd> <p>The semantic index for the element. A semantic index modifies a semantic, with an integer index number. A semantic index is only needed in a  case where there is more than one element with the same semantic. For example, a 4x4 matrix would have four components each with the semantic  name </p>  <pre><code>matrix</code></pre>  <p>, however each of the four component would have different semantic indices (0, 1, 2, and 3).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_INPUT_ELEMENT_DESC::SemanticIndex']/*\"/>\t\n            <msdn-id>ff476180</msdn-id>\t\n            <unmanaged>unsigned int SemanticIndex</unmanaged>\t\n            <unmanaged-short>unsigned int SemanticIndex</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.InputElement.Format\">\n            <summary>\t\n            <dd> <p>The data type of the element data. See <strong><see cref=\"T:SharpDX.DXGI.Format\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_INPUT_ELEMENT_DESC::Format']/*\"/>\t\n            <msdn-id>ff476180</msdn-id>\t\n            <unmanaged>DXGI_FORMAT Format</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT Format</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.InputElement.Slot\">\n            <summary>\t\n            <dd> <p>An integer value that identifies the input-assembler (see input slot). Valid values are between 0 and 15, defined in D3D11.h.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_INPUT_ELEMENT_DESC::InputSlot']/*\"/>\t\n            <msdn-id>ff476180</msdn-id>\t\n            <unmanaged>unsigned int InputSlot</unmanaged>\t\n            <unmanaged-short>unsigned int InputSlot</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.InputElement.AlignedByteOffset\">\n            <summary>\t\n            <dd> <p>Optional. Offset (in bytes) between each element. Use D3D11_APPEND_ALIGNED_ELEMENT for convenience to define the current element directly  after the previous one, including any packing if necessary.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_INPUT_ELEMENT_DESC::AlignedByteOffset']/*\"/>\t\n            <msdn-id>ff476180</msdn-id>\t\n            <unmanaged>unsigned int AlignedByteOffset</unmanaged>\t\n            <unmanaged-short>unsigned int AlignedByteOffset</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.InputElement.Classification\">\n            <summary>\t\n            <dd> <p>Identifies the input data class for a single input slot (see <strong><see cref=\"T:SharpDX.Direct3D11.InputClassification\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_INPUT_ELEMENT_DESC::InputSlotClass']/*\"/>\t\n            <msdn-id>ff476180</msdn-id>\t\n            <unmanaged>D3D11_INPUT_CLASSIFICATION InputSlotClass</unmanaged>\t\n            <unmanaged-short>D3D11_INPUT_CLASSIFICATION InputSlotClass</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.InputElement.InstanceDataStepRate\">\n            <summary>\t\n            <dd> <p>The number of instances to draw using the same per-instance data before advancing in the buffer by one element. This value must be 0 for an  element that contains per-vertex data (the slot class is set to <see cref=\"F:SharpDX.Direct3D11.InputClassification.PerVertexData\"/>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_INPUT_ELEMENT_DESC::InstanceDataStepRate']/*\"/>\t\n            <msdn-id>ff476180</msdn-id>\t\n            <unmanaged>unsigned int InstanceDataStepRate</unmanaged>\t\n            <unmanaged-short>unsigned int InstanceDataStepRate</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.InputElement.#ctor(System.String,System.Int32,SharpDX.DXGI.Format,System.Int32,System.Int32,SharpDX.Direct3D11.InputClassification,System.Int32)\">\n            <summary>\n              Initializes a new instance of the <see cref = \"T:SharpDX.Direct3D11.InputElement\" /> struct.\n            </summary>\n            <param name = \"name\">The HLSL semantic associated with this element in a shader input-signature.</param>\n            <param name = \"index\">The semantic index for the element. A semantic index modifies a semantic, with an integer index number. A semantic index is only needed in a case where there is more than one element with the same semantic. For example, a 4x4 matrix would have four components each with the semantic name matrix, however each of the four component would have different semantic indices (0, 1, 2, and 3).</param>\n            <param name = \"format\">The data type of the element data.</param>\n            <param name = \"offset\">Offset (in bytes) between each element. Use AppendAligned for convenience to define the current element directly after the previous one, including any packing if necessary.</param>\n            <param name = \"slot\">An integer value that identifies the input-assembler. Valid values are between 0 and 15.</param>\n            <param name = \"slotClass\">Identifies the input data class for a single input slot.</param>\n            <param name = \"stepRate\">The number of instances to draw using the same per-instance data before advancing in the buffer by one element. This value must be 0 for an element that contains per-vertex data.</param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.InputElement.#ctor(System.String,System.Int32,SharpDX.DXGI.Format,System.Int32,System.Int32)\">\n            <summary>\n              Initializes a new instance of the <see cref = \"T:SharpDX.Direct3D11.InputElement\" /> struct.\n            </summary>\n            <param name = \"name\">The HLSL semantic associated with this element in a shader input-signature.</param>\n            <param name = \"index\">The semantic index for the element. A semantic index modifies a semantic, with an integer index number. A semantic index is only needed in a case where there is more than one element with the same semantic. For example, a 4x4 matrix would have four components each with the semantic name matrix, however each of the four component would have different semantic indices (0, 1, 2, and 3).</param>\n            <param name = \"format\">The data type of the element data.</param>\n            <param name = \"offset\">Offset (in bytes) between each element. Use AppendAligned for convenience to define the current element directly after the previous one, including any packing if necessary.</param>\n            <param name = \"slot\">An integer value that identifies the input-assembler. Valid values are between 0 and 15.</param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.InputElement.#ctor(System.String,System.Int32,SharpDX.DXGI.Format,System.Int32)\">\n            <summary>\n              Initializes a new instance of the <see cref = \"T:SharpDX.Direct3D11.InputElement\" /> struct.\n            </summary>\n            <param name = \"name\">The HLSL semantic associated with this element in a shader input-signature.</param>\n            <param name = \"index\">The semantic index for the element. A semantic index modifies a semantic, with an integer index number. A semantic index is only needed in a case where there is more than one element with the same semantic. For example, a 4x4 matrix would have four components each with the semantic name matrix, however each of the four component would have different semantic indices (0, 1, 2, and 3).</param>\n            <param name = \"format\">The data type of the element data.</param>\n            <param name = \"slot\">An integer value that identifies the input-assembler. Valid values are between 0 and 15.</param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.InputElement.Equals(SharpDX.Direct3D11.InputElement)\">\n            <summary>\n            Determines whether the specified <see cref=\"T:SharpDX.Direct3D11.InputElement\"/> is equal to this instance.\n            </summary>\n            <param name=\"obj\">The <see cref=\"T:SharpDX.Direct3D11.InputElement\"/> to compare with this instance.</param>\n            <returns>\n              <c>true</c> if the specified <see cref=\"T:SharpDX.Direct3D11.InputElement\"/> is equal to this instance; otherwise, <c>false</c>.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.InputElement.Equals(System.Object)\">\n            <inheritdoc/>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.InputElement.GetHashCode\">\n            <inheritdoc/>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.InputElement.op_Equality(SharpDX.Direct3D11.InputElement,SharpDX.Direct3D11.InputElement)\">\n            <summary>\n            Implements the operator ==.\n            </summary>\n            <param name=\"left\">The left.</param>\n            <param name=\"right\">The right.</param>\n            <returns>\n            The result of the operator.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.InputElement.op_Inequality(SharpDX.Direct3D11.InputElement,SharpDX.Direct3D11.InputElement)\">\n            <summary>\n            Implements the operator !=.\n            </summary>\n            <param name=\"left\">The left.</param>\n            <param name=\"right\">The right.</param>\n            <returns>\n            The result of the operator.\n            </returns>\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.InputElement.AppendAligned\">\n            <summary>\n              Returns a value that can be used for the offset parameter of an InputElement to indicate that the element\n              should be aligned directly after the previous element, including any packing if neccessary.\n            </summary>\n            <returns>A value used to align input elements.</returns>\n            <unmanaged>D3D11_APPEND_ALIGNED_ELEMENT</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.Message\">\n            <summary>\t\n            <p>A debug message in the Information Queue.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure is returned from <strong><see cref=\"M:SharpDX.Direct3D11.InfoQueue.GetMessage(System.Int64,System.IntPtr,SharpDX.PointerSize@)\"/></strong> as part of the Information Queue feature (see <strong><see cref=\"T:SharpDX.Direct3D11.InfoQueue\"/> Interface</strong>).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE']/*\"/>\t\n            <msdn-id>ff476184</msdn-id>\t\n            <unmanaged>D3D11_MESSAGE</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.Message.Category\">\n            <summary>\t\n            <dd> <p>The category of the message. See <strong><see cref=\"T:SharpDX.Direct3D11.MessageCategory\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE::Category']/*\"/>\t\n            <msdn-id>ff476184</msdn-id>\t\n            <unmanaged>D3D11_MESSAGE_CATEGORY Category</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_CATEGORY Category</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.Message.Severity\">\n            <summary>\t\n            <dd> <p>The severity of the message. See <strong><see cref=\"T:SharpDX.Direct3D11.MessageSeverity\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE::Severity']/*\"/>\t\n            <msdn-id>ff476184</msdn-id>\t\n            <unmanaged>D3D11_MESSAGE_SEVERITY Severity</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_SEVERITY Severity</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.Message.Id\">\n            <summary>\t\n            <dd> <p>The ID of the message. See <strong><see cref=\"T:SharpDX.Direct3D11.MessageId\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE::ID']/*\"/>\t\n            <msdn-id>ff476184</msdn-id>\t\n            <unmanaged>D3D11_MESSAGE_ID ID</unmanaged>\t\n            <unmanaged-short>D3D11_MESSAGE_ID ID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.Message.Description\">\n            <summary>\t\n            <dd> <p>The message string.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE::pDescription']/*\"/>\t\n            <msdn-id>ff476184</msdn-id>\t\n            <unmanaged>const char* pDescription</unmanaged>\t\n            <unmanaged-short>char pDescription</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.Message.DescriptionByteLength\">\n            <summary>\t\n            <dd> <p>The length of pDescription in bytes.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_MESSAGE::DescriptionByteLength']/*\"/>\t\n            <msdn-id>ff476184</msdn-id>\t\n            <unmanaged>SIZE_T DescriptionByteLength</unmanaged>\t\n            <unmanaged-short>SIZE_T DescriptionByteLength</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.QueryDataPipelineStatistics\">\n            <summary>\t\n            <p>Query information about graphics-pipeline activity in between calls to <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.Begin(SharpDX.Direct3D11.Asynchronous)\"/></strong> and <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.End(SharpDX.Direct3D11.Asynchronous)\"/></strong>.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_QUERY_DATA_PIPELINE_STATISTICS']/*\"/>\t\n            <msdn-id>ff476192</msdn-id>\t\n            <unmanaged>D3D11_QUERY_DATA_PIPELINE_STATISTICS</unmanaged>\t\n            <unmanaged-short>D3D11_QUERY_DATA_PIPELINE_STATISTICS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.QueryDataPipelineStatistics.IAVerticeCount\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_QUERY_DATA_PIPELINE_STATISTICS::IAVertices']/*\"/>\t\n            <unmanaged>unsigned longlong IAVertices</unmanaged>\t\n            <unmanaged-short>unsigned longlong IAVertices</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.QueryDataPipelineStatistics.IAPrimitiveCount\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_QUERY_DATA_PIPELINE_STATISTICS::IAPrimitives']/*\"/>\t\n            <unmanaged>unsigned longlong IAPrimitives</unmanaged>\t\n            <unmanaged-short>unsigned longlong IAPrimitives</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.QueryDataPipelineStatistics.VSInvocationCount\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_QUERY_DATA_PIPELINE_STATISTICS::VSInvocations']/*\"/>\t\n            <unmanaged>unsigned longlong VSInvocations</unmanaged>\t\n            <unmanaged-short>unsigned longlong VSInvocations</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.QueryDataPipelineStatistics.GSInvocationCount\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_QUERY_DATA_PIPELINE_STATISTICS::GSInvocations']/*\"/>\t\n            <unmanaged>unsigned longlong GSInvocations</unmanaged>\t\n            <unmanaged-short>unsigned longlong GSInvocations</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.QueryDataPipelineStatistics.GSPrimitiveCount\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_QUERY_DATA_PIPELINE_STATISTICS::GSPrimitives']/*\"/>\t\n            <unmanaged>unsigned longlong GSPrimitives</unmanaged>\t\n            <unmanaged-short>unsigned longlong GSPrimitives</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.QueryDataPipelineStatistics.CInvocationCount\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_QUERY_DATA_PIPELINE_STATISTICS::CInvocations']/*\"/>\t\n            <unmanaged>unsigned longlong CInvocations</unmanaged>\t\n            <unmanaged-short>unsigned longlong CInvocations</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.QueryDataPipelineStatistics.CPrimitiveCount\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_QUERY_DATA_PIPELINE_STATISTICS::CPrimitives']/*\"/>\t\n            <unmanaged>unsigned longlong CPrimitives</unmanaged>\t\n            <unmanaged-short>unsigned longlong CPrimitives</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.QueryDataPipelineStatistics.PSInvocationCount\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_QUERY_DATA_PIPELINE_STATISTICS::PSInvocations']/*\"/>\t\n            <unmanaged>unsigned longlong PSInvocations</unmanaged>\t\n            <unmanaged-short>unsigned longlong PSInvocations</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.QueryDataPipelineStatistics.HSInvocationCount\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_QUERY_DATA_PIPELINE_STATISTICS::HSInvocations']/*\"/>\t\n            <unmanaged>unsigned longlong HSInvocations</unmanaged>\t\n            <unmanaged-short>unsigned longlong HSInvocations</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.QueryDataPipelineStatistics.DSInvocationCount\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_QUERY_DATA_PIPELINE_STATISTICS::DSInvocations']/*\"/>\t\n            <unmanaged>unsigned longlong DSInvocations</unmanaged>\t\n            <unmanaged-short>unsigned longlong DSInvocations</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.QueryDataPipelineStatistics.CSInvocationCount\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_QUERY_DATA_PIPELINE_STATISTICS::CSInvocations']/*\"/>\t\n            <unmanaged>unsigned longlong CSInvocations</unmanaged>\t\n            <unmanaged-short>unsigned longlong CSInvocations</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.QueryDataTimestampDisjoint\">\n            <summary>\t\n            <p>Query information about the reliability of a timestamp query.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>For a list of query types see <strong><see cref=\"T:SharpDX.Direct3D11.QueryType\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_QUERY_DATA_TIMESTAMP_DISJOINT']/*\"/>\t\n            <msdn-id>ff476194</msdn-id>\t\n            <unmanaged>D3D11_QUERY_DATA_TIMESTAMP_DISJOINT</unmanaged>\t\n            <unmanaged-short>D3D11_QUERY_DATA_TIMESTAMP_DISJOINT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.QueryDataTimestampDisjoint.Frequency\">\n            <summary>\t\n            <dd> <p>How frequently the GPU counter increments in Hz.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_QUERY_DATA_TIMESTAMP_DISJOINT::Frequency']/*\"/>\t\n            <msdn-id>ff476194</msdn-id>\t\n            <unmanaged>unsigned longlong Frequency</unmanaged>\t\n            <unmanaged-short>unsigned longlong Frequency</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.QueryDataTimestampDisjoint.Disjoint\">\n            <summary>\t\n            <dd> <p>If this is <strong>TRUE</strong>, something occurred in between the query's <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.Begin(SharpDX.Direct3D11.Asynchronous)\"/></strong> and <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.End(SharpDX.Direct3D11.Asynchronous)\"/></strong> calls that caused the timestamp counter to become discontinuous or disjoint, such as unplugging the AC chord on a laptop, overheating, or throttling up/down due to laptop savings events. The timestamp returned by <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.GetDataInternal(SharpDX.Direct3D11.Asynchronous,System.IntPtr,System.Int32,SharpDX.Direct3D11.AsynchronousFlags)\"/></strong> for a timestamp query is only reliable if Disjoint is <strong><see cref=\"F:SharpDX.Result.False\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_QUERY_DATA_TIMESTAMP_DISJOINT::Disjoint']/*\"/>\t\n            <msdn-id>ff476194</msdn-id>\t\n            <unmanaged>BOOL Disjoint</unmanaged>\t\n            <unmanaged-short>BOOL Disjoint</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.QueryDescription\">\n            <summary>\t\n            <p>Describes a query.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_QUERY_DESC']/*\"/>\t\n            <msdn-id>ff476195</msdn-id>\t\n            <unmanaged>D3D11_QUERY_DESC</unmanaged>\t\n            <unmanaged-short>D3D11_QUERY_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.QueryDescription.Type\">\n            <summary>\t\n            <dd> <p>Type of query (see <strong><see cref=\"T:SharpDX.Direct3D11.QueryType\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_QUERY_DESC::Query']/*\"/>\t\n            <msdn-id>ff476195</msdn-id>\t\n            <unmanaged>D3D11_QUERY Query</unmanaged>\t\n            <unmanaged-short>D3D11_QUERY Query</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.QueryDescription.Flags\">\n            <summary>\t\n            <dd> <p>Miscellaneous flags (see <strong><see cref=\"T:SharpDX.Direct3D11.QueryFlags\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_QUERY_DESC::MiscFlags']/*\"/>\t\n            <msdn-id>ff476195</msdn-id>\t\n            <unmanaged>D3D11_QUERY_MISC_FLAG MiscFlags</unmanaged>\t\n            <unmanaged-short>D3D11_QUERY_MISC_FLAG MiscFlags</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.RenderTargetBlendDescription\">\n            <summary>\t\n            <p>Describes the blend state for a render target.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>For info about how blending is done, see the output-merger stage.</p><p>Here are the default values for blend state.</p><table> <tr><th>State</th><th>Default Value</th></tr> <tr><td>BlendEnable</td><td><see cref=\"F:SharpDX.Result.False\"/></td></tr> <tr><td>SrcBlend</td><td><see cref=\"F:SharpDX.Direct3D11.BlendOption.One\"/></td></tr> <tr><td>DestBlend</td><td><see cref=\"F:SharpDX.Direct3D11.BlendOption.Zero\"/></td></tr> <tr><td>BlendOp</td><td><see cref=\"F:SharpDX.Direct3D11.BlendOperation.Add\"/></td></tr> <tr><td>SrcBlendAlpha</td><td><see cref=\"F:SharpDX.Direct3D11.BlendOption.One\"/></td></tr> <tr><td>DestBlendAlpha</td><td><see cref=\"F:SharpDX.Direct3D11.BlendOption.Zero\"/></td></tr> <tr><td>BlendOpAlpha</td><td><see cref=\"F:SharpDX.Direct3D11.BlendOperation.Add\"/></td></tr> <tr><td>RenderTargetWriteMask</td><td><see cref=\"F:SharpDX.Direct3D11.ColorWriteMaskFlags.All\"/></td></tr> </table><p>?</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_RENDER_TARGET_BLEND_DESC']/*\"/>\t\n            <msdn-id>ff476200</msdn-id>\t\n            <unmanaged>D3D11_RENDER_TARGET_BLEND_DESC</unmanaged>\t\n            <unmanaged-short>D3D11_RENDER_TARGET_BLEND_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.RenderTargetBlendDescription.IsBlendEnabled\">\n            <summary>\t\n            <dd> <p>Enable (or disable) blending.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_RENDER_TARGET_BLEND_DESC::BlendEnable']/*\"/>\t\n            <msdn-id>ff476200</msdn-id>\t\n            <unmanaged>BOOL BlendEnable</unmanaged>\t\n            <unmanaged-short>BOOL BlendEnable</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.RenderTargetBlendDescription.SourceBlend\">\n            <summary>\t\n            <dd> <p>This <strong>blend option</strong> specifies the operation to perform on the RGB value that the pixel shader outputs. The <strong>BlendOp</strong> member defines how to combine the <strong>SrcBlend</strong> and <strong>DestBlend</strong> operations.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_RENDER_TARGET_BLEND_DESC::SrcBlend']/*\"/>\t\n            <msdn-id>ff476200</msdn-id>\t\n            <unmanaged>D3D11_BLEND SrcBlend</unmanaged>\t\n            <unmanaged-short>D3D11_BLEND SrcBlend</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.RenderTargetBlendDescription.DestinationBlend\">\n            <summary>\t\n            <dd> <p>This <strong>blend option</strong> specifies the operation to perform on the current RGB value in the render target. The <strong>BlendOp</strong> member defines how to combine the <strong>SrcBlend</strong> and <strong>DestBlend</strong> operations.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_RENDER_TARGET_BLEND_DESC::DestBlend']/*\"/>\t\n            <msdn-id>ff476200</msdn-id>\t\n            <unmanaged>D3D11_BLEND DestBlend</unmanaged>\t\n            <unmanaged-short>D3D11_BLEND DestBlend</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.RenderTargetBlendDescription.BlendOperation\">\n            <summary>\t\n            <dd> <p>This <strong>blend operation</strong> defines how to combine the <strong>SrcBlend</strong> and <strong>DestBlend</strong> operations.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_RENDER_TARGET_BLEND_DESC::BlendOp']/*\"/>\t\n            <msdn-id>ff476200</msdn-id>\t\n            <unmanaged>D3D11_BLEND_OP BlendOp</unmanaged>\t\n            <unmanaged-short>D3D11_BLEND_OP BlendOp</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.RenderTargetBlendDescription.SourceAlphaBlend\">\n            <summary>\t\n            <dd> <p>This <strong>blend option</strong> specifies the operation to perform on the alpha value that the pixel shader outputs. Blend options that end in _COLOR are not allowed. The <strong>BlendOpAlpha</strong> member defines how to combine the <strong>SrcBlendAlpha</strong> and <strong>DestBlendAlpha</strong> operations.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_RENDER_TARGET_BLEND_DESC::SrcBlendAlpha']/*\"/>\t\n            <msdn-id>ff476200</msdn-id>\t\n            <unmanaged>D3D11_BLEND SrcBlendAlpha</unmanaged>\t\n            <unmanaged-short>D3D11_BLEND SrcBlendAlpha</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.RenderTargetBlendDescription.DestinationAlphaBlend\">\n            <summary>\t\n            <dd> <p>This <strong>blend option</strong> specifies the operation to perform on the current alpha value in the render target. Blend options that end in _COLOR are not allowed. The <strong>BlendOpAlpha</strong> member defines how to combine the <strong>SrcBlendAlpha</strong> and <strong>DestBlendAlpha</strong> operations.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_RENDER_TARGET_BLEND_DESC::DestBlendAlpha']/*\"/>\t\n            <msdn-id>ff476200</msdn-id>\t\n            <unmanaged>D3D11_BLEND DestBlendAlpha</unmanaged>\t\n            <unmanaged-short>D3D11_BLEND DestBlendAlpha</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.RenderTargetBlendDescription.AlphaBlendOperation\">\n            <summary>\t\n            <dd> <p>This <strong>blend operation</strong> defines how to combine the <strong>SrcBlendAlpha</strong> and <strong>DestBlendAlpha</strong> operations.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_RENDER_TARGET_BLEND_DESC::BlendOpAlpha']/*\"/>\t\n            <msdn-id>ff476200</msdn-id>\t\n            <unmanaged>D3D11_BLEND_OP BlendOpAlpha</unmanaged>\t\n            <unmanaged-short>D3D11_BLEND_OP BlendOpAlpha</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.RenderTargetBlendDescription.RenderTargetWriteMask\">\n            <summary>\t\n            <dd> <p>A write mask.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_RENDER_TARGET_BLEND_DESC::RenderTargetWriteMask']/*\"/>\t\n            <msdn-id>ff476200</msdn-id>\t\n            <unmanaged>D3D11_COLOR_WRITE_ENABLE RenderTargetWriteMask</unmanaged>\t\n            <unmanaged-short>D3D11_COLOR_WRITE_ENABLE RenderTargetWriteMask</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.RenderTargetBlendDescription.#ctor(System.Boolean,SharpDX.Direct3D11.BlendOption,SharpDX.Direct3D11.BlendOption,SharpDX.Direct3D11.BlendOperation,SharpDX.Direct3D11.BlendOption,SharpDX.Direct3D11.BlendOption,SharpDX.Direct3D11.BlendOperation,SharpDX.Direct3D11.ColorWriteMaskFlags)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D11.RenderTargetBlendDescription\"/> struct.\n            </summary>\n            <param name=\"isBlendEnabled\">The is blend enabled.</param>\n            <param name=\"sourceBlend\">The source blend.</param>\n            <param name=\"destinationBlend\">The destination blend.</param>\n            <param name=\"blendOperation\">The blend operation.</param>\n            <param name=\"sourceAlphaBlend\">The source alpha blend.</param>\n            <param name=\"destinationAlphaBlend\">The destination alpha blend.</param>\n            <param name=\"alphaBlendOperation\">The alpha blend operation.</param>\n            <param name=\"renderTargetWriteMask\">The render target write mask.</param>\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.RenderTargetViewDescription\">\n            <summary>\t\n            <p>Specifies the subresources from a resource that are accessible using a render-target view.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>A render-target-view description is passed into <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateRenderTargetView(SharpDX.Direct3D11.Resource,System.Nullable{SharpDX.Direct3D11.RenderTargetViewDescription},SharpDX.Direct3D11.RenderTargetView)\"/></strong> to create a render target.</p><p>A render-target-view cannot use the following formats:</p><ul> <li>Any typeless format.</li> <li>DXGI_FORMAT_R32G32B32 if the view will be used to bind a buffer (vertex, index, constant, or stream-output).</li> </ul><p>If the format is set to <see cref=\"F:SharpDX.DXGI.Format.Unknown\"/>, then the format of the resource that the view binds to the pipeline will be used.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_RENDER_TARGET_VIEW_DESC']/*\"/>\t\n            <msdn-id>ff476201</msdn-id>\t\n            <unmanaged>D3D11_RENDER_TARGET_VIEW_DESC</unmanaged>\t\n            <unmanaged-short>D3D11_RENDER_TARGET_VIEW_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.RenderTargetViewDescription.Format\">\n            <summary>\t\n            <dd> <p>The data format (see <strong><see cref=\"T:SharpDX.DXGI.Format\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_RENDER_TARGET_VIEW_DESC::Format']/*\"/>\t\n            <msdn-id>ff476201</msdn-id>\t\n            <unmanaged>DXGI_FORMAT Format</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT Format</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.RenderTargetViewDescription.Dimension\">\n            <summary>\t\n            <dd> <p>The resource type (see <strong><see cref=\"T:SharpDX.Direct3D11.RenderTargetViewDimension\"/></strong>), which specifies how the render-target resource will be accessed.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_RENDER_TARGET_VIEW_DESC::ViewDimension']/*\"/>\t\n            <msdn-id>ff476201</msdn-id>\t\n            <unmanaged>D3D11_RTV_DIMENSION ViewDimension</unmanaged>\t\n            <unmanaged-short>D3D11_RTV_DIMENSION ViewDimension</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.RenderTargetViewDescription.Buffer\">\n            <summary>\t\n            <dd> <p>Specifies which buffer elements can be accessed (see <strong><see cref=\"T:SharpDX.Direct3D11.RenderTargetViewDescription.BufferResource\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_RENDER_TARGET_VIEW_DESC::Buffer']/*\"/>\t\n            <msdn-id>ff476201</msdn-id>\t\n            <unmanaged>D3D11_BUFFER_RTV Buffer</unmanaged>\t\n            <unmanaged-short>D3D11_BUFFER_RTV Buffer</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.RenderTargetViewDescription.Texture1D\">\n            <summary>\t\n            <dd> <p>Specifies the subresources in a 1D texture that can be accessed (see <strong><see cref=\"T:SharpDX.Direct3D11.RenderTargetViewDescription.Texture1DResource\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_RENDER_TARGET_VIEW_DESC::Texture1D']/*\"/>\t\n            <msdn-id>ff476201</msdn-id>\t\n            <unmanaged>D3D11_TEX1D_RTV Texture1D</unmanaged>\t\n            <unmanaged-short>D3D11_TEX1D_RTV Texture1D</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.RenderTargetViewDescription.Texture1DArray\">\n            <summary>\t\n            <dd> <p>Specifies the subresources in a 1D texture array that can be accessed (see <strong><see cref=\"T:SharpDX.Direct3D11.RenderTargetViewDescription.Texture1DArrayResource\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_RENDER_TARGET_VIEW_DESC::Texture1DArray']/*\"/>\t\n            <msdn-id>ff476201</msdn-id>\t\n            <unmanaged>D3D11_TEX1D_ARRAY_RTV Texture1DArray</unmanaged>\t\n            <unmanaged-short>D3D11_TEX1D_ARRAY_RTV Texture1DArray</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.RenderTargetViewDescription.Texture2D\">\n            <summary>\t\n            <dd> <p>Specifies the subresources in a 2D texture that can be accessed (see <strong><see cref=\"T:SharpDX.Direct3D11.RenderTargetViewDescription.Texture2DResource\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_RENDER_TARGET_VIEW_DESC::Texture2D']/*\"/>\t\n            <msdn-id>ff476201</msdn-id>\t\n            <unmanaged>D3D11_TEX2D_RTV Texture2D</unmanaged>\t\n            <unmanaged-short>D3D11_TEX2D_RTV Texture2D</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.RenderTargetViewDescription.Texture2DArray\">\n            <summary>\t\n            <dd> <p>Specifies the subresources in a 2D texture array that can be accessed (see <strong><see cref=\"T:SharpDX.Direct3D11.RenderTargetViewDescription.Texture2DArrayResource\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_RENDER_TARGET_VIEW_DESC::Texture2DArray']/*\"/>\t\n            <msdn-id>ff476201</msdn-id>\t\n            <unmanaged>D3D11_TEX2D_ARRAY_RTV Texture2DArray</unmanaged>\t\n            <unmanaged-short>D3D11_TEX2D_ARRAY_RTV Texture2DArray</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.RenderTargetViewDescription.Texture2DMS\">\n            <summary>\t\n            <dd> <p>Specifies a single subresource because a multisampled 2D texture only contains one subresource (see <strong><see cref=\"T:SharpDX.Direct3D11.RenderTargetViewDescription.Texture2DMultisampledResource\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_RENDER_TARGET_VIEW_DESC::Texture2DMS']/*\"/>\t\n            <msdn-id>ff476201</msdn-id>\t\n            <unmanaged>D3D11_TEX2DMS_RTV Texture2DMS</unmanaged>\t\n            <unmanaged-short>D3D11_TEX2DMS_RTV Texture2DMS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.RenderTargetViewDescription.Texture2DMSArray\">\n            <summary>\t\n            <dd> <p>Specifies the subresources in a multisampled 2D texture array that can be accessed (see <strong><see cref=\"T:SharpDX.Direct3D11.RenderTargetViewDescription.Texture2DMultisampledArrayResource\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_RENDER_TARGET_VIEW_DESC::Texture2DMSArray']/*\"/>\t\n            <msdn-id>ff476201</msdn-id>\t\n            <unmanaged>D3D11_TEX2DMS_ARRAY_RTV Texture2DMSArray</unmanaged>\t\n            <unmanaged-short>D3D11_TEX2DMS_ARRAY_RTV Texture2DMSArray</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.RenderTargetViewDescription.Texture3D\">\n            <summary>\t\n            <dd> <p>Specifies subresources in a 3D texture that can be accessed (see <strong><see cref=\"T:SharpDX.Direct3D11.RenderTargetViewDescription.Texture3DResource\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_RENDER_TARGET_VIEW_DESC::Texture3D']/*\"/>\t\n            <msdn-id>ff476201</msdn-id>\t\n            <unmanaged>D3D11_TEX3D_RTV Texture3D</unmanaged>\t\n            <unmanaged-short>D3D11_TEX3D_RTV Texture3D</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.RenderTargetViewDescription.Texture2DMultisampledArrayResource\">\n            <summary>\t\n            <p>Specifies the subresources from a an array of multisampled 2D textures to use in a render-target view.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure is one member of a render-target-view description (see <strong><see cref=\"T:SharpDX.Direct3D11.RenderTargetViewDescription\"/></strong>).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEX2DMS_ARRAY_RTV']/*\"/>\t\n            <msdn-id>ff476234</msdn-id>\t\n            <unmanaged>D3D11_TEX2DMS_ARRAY_RTV</unmanaged>\t\n            <unmanaged-short>D3D11_TEX2DMS_ARRAY_RTV</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.RenderTargetViewDescription.Texture2DMultisampledArrayResource.FirstArraySlice\">\n            <summary>\t\n            <dd> <p>The index of the first texture to use in an array of textures.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEX2DMS_ARRAY_RTV::FirstArraySlice']/*\"/>\t\n            <msdn-id>ff476234</msdn-id>\t\n            <unmanaged>unsigned int FirstArraySlice</unmanaged>\t\n            <unmanaged-short>unsigned int FirstArraySlice</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.RenderTargetViewDescription.Texture2DMultisampledArrayResource.ArraySize\">\n            <summary>\t\n            <dd> <p>Number of textures to use.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEX2DMS_ARRAY_RTV::ArraySize']/*\"/>\t\n            <msdn-id>ff476234</msdn-id>\t\n            <unmanaged>unsigned int ArraySize</unmanaged>\t\n            <unmanaged-short>unsigned int ArraySize</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.RenderTargetViewDescription.Texture1DResource\">\n            <summary>\t\n            <p>Specifies the subresource from a 1D texture to use in a render-target view.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure is one member of a render-target-view description (see <strong><see cref=\"T:SharpDX.Direct3D11.RenderTargetViewDescription\"/></strong>).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEX1D_RTV']/*\"/>\t\n            <msdn-id>ff476230</msdn-id>\t\n            <unmanaged>D3D11_TEX1D_RTV</unmanaged>\t\n            <unmanaged-short>D3D11_TEX1D_RTV</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.RenderTargetViewDescription.Texture1DResource.MipSlice\">\n            <summary>\t\n            <dd> <p>The index of the mipmap level to use mip slice.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEX1D_RTV::MipSlice']/*\"/>\t\n            <msdn-id>ff476230</msdn-id>\t\n            <unmanaged>unsigned int MipSlice</unmanaged>\t\n            <unmanaged-short>unsigned int MipSlice</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.RenderTargetViewDescription.Texture2DMultisampledResource\">\n            <summary>\t\n            <p>Specifies the subresource from a multisampled 2D texture to use in a render-target view.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Since a multisampled 2D texture contains a single subresource, there is actually nothing to specify in <see cref=\"T:SharpDX.Direct3D11.RenderTargetViewDescription.Texture2DMultisampledResource\"/>. Consequently, <strong>UnusedField_NothingToDefine</strong> is included so that this structure will compile in C.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEX2DMS_RTV']/*\"/>\t\n            <msdn-id>ff476237</msdn-id>\t\n            <unmanaged>D3D11_TEX2DMS_RTV</unmanaged>\t\n            <unmanaged-short>D3D11_TEX2DMS_RTV</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.RenderTargetViewDescription.Texture2DMultisampledResource.UnusedFieldNothingToDefine\">\n            <summary>\t\n            <dd> <p>Integer of any value. See remarks.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEX2DMS_RTV::UnusedField_NothingToDefine']/*\"/>\t\n            <msdn-id>ff476237</msdn-id>\t\n            <unmanaged>unsigned int UnusedField_NothingToDefine</unmanaged>\t\n            <unmanaged-short>unsigned int UnusedField_NothingToDefine</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.RenderTargetViewDescription.Texture2DResource\">\n            <summary>\t\n            <p>Specifies the subresource from a 2D texture to use in a render-target view.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure is one member of a render-target-view description (see <strong><see cref=\"T:SharpDX.Direct3D11.RenderTargetViewDescription\"/></strong>).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEX2D_RTV']/*\"/>\t\n            <msdn-id>ff476244</msdn-id>\t\n            <unmanaged>D3D11_TEX2D_RTV</unmanaged>\t\n            <unmanaged-short>D3D11_TEX2D_RTV</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.RenderTargetViewDescription.Texture2DResource.MipSlice\">\n            <summary>\t\n            <dd> <p>The index of the mipmap level to use mip slice.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEX2D_RTV::MipSlice']/*\"/>\t\n            <msdn-id>ff476244</msdn-id>\t\n            <unmanaged>unsigned int MipSlice</unmanaged>\t\n            <unmanaged-short>unsigned int MipSlice</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.RenderTargetViewDescription.Texture1DArrayResource\">\n            <summary>\t\n            <p>Specifies the subresources from an array of 1D textures to use in a render-target view.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure is one member of a render-target-view description (see <strong><see cref=\"T:SharpDX.Direct3D11.RenderTargetViewDescription\"/></strong>).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEX1D_ARRAY_RTV']/*\"/>\t\n            <msdn-id>ff476226</msdn-id>\t\n            <unmanaged>D3D11_TEX1D_ARRAY_RTV</unmanaged>\t\n            <unmanaged-short>D3D11_TEX1D_ARRAY_RTV</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.RenderTargetViewDescription.Texture1DArrayResource.MipSlice\">\n            <summary>\t\n            <dd> <p>The index of the mipmap level to use mip slice.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEX1D_ARRAY_RTV::MipSlice']/*\"/>\t\n            <msdn-id>ff476226</msdn-id>\t\n            <unmanaged>unsigned int MipSlice</unmanaged>\t\n            <unmanaged-short>unsigned int MipSlice</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.RenderTargetViewDescription.Texture1DArrayResource.FirstArraySlice\">\n            <summary>\t\n            <dd> <p>The index of the first texture to use in an array of textures.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEX1D_ARRAY_RTV::FirstArraySlice']/*\"/>\t\n            <msdn-id>ff476226</msdn-id>\t\n            <unmanaged>unsigned int FirstArraySlice</unmanaged>\t\n            <unmanaged-short>unsigned int FirstArraySlice</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.RenderTargetViewDescription.Texture1DArrayResource.ArraySize\">\n            <summary>\t\n            <dd> <p>Number of textures to use.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEX1D_ARRAY_RTV::ArraySize']/*\"/>\t\n            <msdn-id>ff476226</msdn-id>\t\n            <unmanaged>unsigned int ArraySize</unmanaged>\t\n            <unmanaged-short>unsigned int ArraySize</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.RenderTargetViewDescription.Texture3DResource\">\n            <summary>\t\n            <p>Specifies the subresources from a 3D texture to use in a render-target view.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure is one member of a render target view. See <strong><see cref=\"T:SharpDX.Direct3D11.RenderTargetViewDescription\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEX3D_RTV']/*\"/>\t\n            <msdn-id>ff476247</msdn-id>\t\n            <unmanaged>D3D11_TEX3D_RTV</unmanaged>\t\n            <unmanaged-short>D3D11_TEX3D_RTV</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.RenderTargetViewDescription.Texture3DResource.MipSlice\">\n            <summary>\t\n            <dd> <p>The index of the mipmap level to use mip slice.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEX3D_RTV::MipSlice']/*\"/>\t\n            <msdn-id>ff476247</msdn-id>\t\n            <unmanaged>unsigned int MipSlice</unmanaged>\t\n            <unmanaged-short>unsigned int MipSlice</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.RenderTargetViewDescription.Texture3DResource.FirstDepthSlice\">\n            <summary>\t\n            <dd> <p>First depth level to use.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEX3D_RTV::FirstWSlice']/*\"/>\t\n            <msdn-id>ff476247</msdn-id>\t\n            <unmanaged>unsigned int FirstWSlice</unmanaged>\t\n            <unmanaged-short>unsigned int FirstWSlice</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.RenderTargetViewDescription.Texture3DResource.DepthSliceCount\">\n            <summary>\t\n            <dd> <p>Number of depth levels to use in the render-target view, starting from <strong>FirstWSlice</strong>. A value of -1 indicates all of the slices along the w axis, starting from <strong>FirstWSlice</strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEX3D_RTV::WSize']/*\"/>\t\n            <msdn-id>ff476247</msdn-id>\t\n            <unmanaged>unsigned int WSize</unmanaged>\t\n            <unmanaged-short>unsigned int WSize</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.RenderTargetViewDescription.Texture2DArrayResource\">\n            <summary>\t\n            <p>Specifies the subresources from an array of 2D textures to use in a render-target view.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure is one member of a render-target-view description (see <strong><see cref=\"T:SharpDX.Direct3D11.RenderTargetViewDescription\"/></strong>).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEX2D_ARRAY_RTV']/*\"/>\t\n            <msdn-id>ff476240</msdn-id>\t\n            <unmanaged>D3D11_TEX2D_ARRAY_RTV</unmanaged>\t\n            <unmanaged-short>D3D11_TEX2D_ARRAY_RTV</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.RenderTargetViewDescription.Texture2DArrayResource.MipSlice\">\n            <summary>\t\n            <dd> <p>The index of the mipmap level to use mip slice.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEX2D_ARRAY_RTV::MipSlice']/*\"/>\t\n            <msdn-id>ff476240</msdn-id>\t\n            <unmanaged>unsigned int MipSlice</unmanaged>\t\n            <unmanaged-short>unsigned int MipSlice</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.RenderTargetViewDescription.Texture2DArrayResource.FirstArraySlice\">\n            <summary>\t\n            <dd> <p>The index of the first texture to use in an array of textures.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEX2D_ARRAY_RTV::FirstArraySlice']/*\"/>\t\n            <msdn-id>ff476240</msdn-id>\t\n            <unmanaged>unsigned int FirstArraySlice</unmanaged>\t\n            <unmanaged-short>unsigned int FirstArraySlice</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.RenderTargetViewDescription.Texture2DArrayResource.ArraySize\">\n            <summary>\t\n            <dd> <p>Number of textures in the array to use in the render target view, starting from <strong>FirstArraySlice</strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEX2D_ARRAY_RTV::ArraySize']/*\"/>\t\n            <msdn-id>ff476240</msdn-id>\t\n            <unmanaged>unsigned int ArraySize</unmanaged>\t\n            <unmanaged-short>unsigned int ArraySize</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.RenderTargetViewDescription.BufferResource\">\n            <summary>\t\n            <p>Specifies the elements in a buffer resource to use in a render-target view.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>A render-target view is a member of a render-target-view description (see <strong><see cref=\"T:SharpDX.Direct3D11.RenderTargetViewDescription\"/></strong>). Create a render-target view by calling <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateRenderTargetView(SharpDX.Direct3D11.Resource,System.Nullable{SharpDX.Direct3D11.RenderTargetViewDescription},SharpDX.Direct3D11.RenderTargetView)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_BUFFER_RTV']/*\"/>\t\n            <msdn-id>ff476093</msdn-id>\t\n            <unmanaged>D3D11_BUFFER_RTV</unmanaged>\t\n            <unmanaged-short>D3D11_BUFFER_RTV</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.RenderTargetViewDescription.BufferResource.FirstElement\">\n            <summary>\t\n            <dd> <p>Number of bytes between the beginning of the buffer and the first element to access.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_BUFFER_RTV::FirstElement']/*\"/>\t\n            <msdn-id>ff476093</msdn-id>\t\n            <unmanaged>unsigned int FirstElement</unmanaged>\t\n            <unmanaged-short>unsigned int FirstElement</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.RenderTargetViewDescription.BufferResource.ElementOffset\">\n            <summary>\t\n            <dd> <p>The offset of the first element in the view to access, relative to element 0.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_BUFFER_RTV::ElementOffset']/*\"/>\t\n            <msdn-id>ff476093</msdn-id>\t\n            <unmanaged>unsigned int ElementOffset</unmanaged>\t\n            <unmanaged-short>unsigned int ElementOffset</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.RenderTargetViewDescription.BufferResource.ElementCount\">\n            <summary>\t\n            <dd> <p>The total number of elements in the view.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_BUFFER_RTV::NumElements']/*\"/>\t\n            <msdn-id>ff476093</msdn-id>\t\n            <unmanaged>unsigned int NumElements</unmanaged>\t\n            <unmanaged-short>unsigned int NumElements</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.RenderTargetViewDescription.BufferResource.ElementWidth\">\n            <summary>\t\n            <dd> <p>The width of each element (in bytes). This can be determined from the format stored in the render-target-view description.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_BUFFER_RTV::ElementWidth']/*\"/>\t\n            <msdn-id>ff476093</msdn-id>\t\n            <unmanaged>unsigned int ElementWidth</unmanaged>\t\n            <unmanaged-short>unsigned int ElementWidth</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.ResourceRegion\">\n            <summary>\t\n            <p>Defines a 3D box.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The following diagram shows a 3D box, where the origin is the left, front, top corner.</p><p></p><p>The values for <strong>right</strong>, <strong>bottom</strong>, and <strong>back</strong> are each one pixel past the end of the pixels that are included in the box region.  That is, the values for <strong>left</strong>, <strong>top</strong>, and <strong>front</strong> are included in the box region while the values for right, bottom, and back are excluded from the box region. For example, for a box that is one pixel wide, (right - left) == 1; the box region includes the left pixel but not the right pixel.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_BOX']/*\"/>\t\n            <msdn-id>ff476089</msdn-id>\t\n            <unmanaged>D3D11_BOX</unmanaged>\t\n            <unmanaged-short>D3D11_BOX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ResourceRegion.Left\">\n            <summary>\t\n            <dd> <p>The x position of the left hand side of the box.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_BOX::left']/*\"/>\t\n            <msdn-id>ff476089</msdn-id>\t\n            <unmanaged>unsigned int left</unmanaged>\t\n            <unmanaged-short>unsigned int left</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ResourceRegion.Top\">\n            <summary>\t\n            <dd> <p>The y position of the top of the box.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_BOX::top']/*\"/>\t\n            <msdn-id>ff476089</msdn-id>\t\n            <unmanaged>unsigned int top</unmanaged>\t\n            <unmanaged-short>unsigned int top</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ResourceRegion.Front\">\n            <summary>\t\n            <dd> <p>The z position of the front of the box.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_BOX::front']/*\"/>\t\n            <msdn-id>ff476089</msdn-id>\t\n            <unmanaged>unsigned int front</unmanaged>\t\n            <unmanaged-short>unsigned int front</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ResourceRegion.Right\">\n            <summary>\t\n            <dd> <p>The x position of the right hand side of the box.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_BOX::right']/*\"/>\t\n            <msdn-id>ff476089</msdn-id>\t\n            <unmanaged>unsigned int right</unmanaged>\t\n            <unmanaged-short>unsigned int right</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ResourceRegion.Bottom\">\n            <summary>\t\n            <dd> <p>The y position of the bottom of the box.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_BOX::bottom']/*\"/>\t\n            <msdn-id>ff476089</msdn-id>\t\n            <unmanaged>unsigned int bottom</unmanaged>\t\n            <unmanaged-short>unsigned int bottom</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ResourceRegion.Back\">\n            <summary>\t\n            <dd> <p>The z position of the back of the box.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_BOX::back']/*\"/>\t\n            <msdn-id>ff476089</msdn-id>\t\n            <unmanaged>unsigned int back</unmanaged>\t\n            <unmanaged-short>unsigned int back</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.ResourceRegion.#ctor(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32)\">\n            <summary>\n            Initiailize a new instance of <see cref=\"T:SharpDX.Direct3D11.ResourceRegion\"/> struct.\n            </summary>\n            <param name=\"left\">Left coordinates (inclusive)</param>\n            <param name=\"top\">Top coordinates (inclusive)</param>\n            <param name=\"front\">Front coordinates (inclusive)</param>\n            <param name=\"right\">Right coordinates (exclusive)</param>\n            <param name=\"bottom\">Botoom coordinates (exclusive)</param>\n            <param name=\"back\">Back coordinates (exclusive)</param>\n            <remarks>\n            <ul>\n            <li>For a Width of 1 pixels, (right - left) = 1. If left = 0, right = Width. </li>\n            <li>For a Height of 1 pixels, (bottom - top) = 1. If top = 0, bottom = Height.</li>\n            <li>For a Depth of 1 pixels, (back - front) = 1. If front = 0, back = Depth. </li>\n            </ul>\n            </remarks>\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.SamplerStateDescription\">\n            <summary>\t\n            <p>Describes a sampler state.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>These are the default values for sampler state.</p><table> <tr><th>State</th><th>Default Value</th></tr> <tr><td>Filter</td><td>MIN_MAG_MIP_LINEAR</td></tr> <tr><td>AddressU</td><td>Clamp</td></tr> <tr><td>AddressV</td><td>Clamp</td></tr> <tr><td>AddressW</td><td>Clamp</td></tr> <tr><td>MinLOD</td><td>-3.402823466e+38F (-FLT_MAX)</td></tr> <tr><td>MaxLOD</td><td>3.402823466e+38F (FLT_MAX)</td></tr> <tr><td>MipMapLODBias</td><td>0.0f</td></tr> <tr><td>MaxAnisotropy</td><td>16</td></tr> <tr><td>ComparisonFunc</td><td>Never</td></tr> <tr><td>BorderColor</td><td>float4(0.0f,0.0f,0.0f,0.0f)</td></tr> <tr><td>Texture</td><td>N/A</td></tr> </table><p>?</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SAMPLER_DESC']/*\"/>\t\n            <msdn-id>ff476207</msdn-id>\t\n            <unmanaged>D3D11_SAMPLER_DESC</unmanaged>\t\n            <unmanaged-short>D3D11_SAMPLER_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.SamplerStateDescription.Filter\">\n            <summary>\t\n            <dd> <p>Filtering method to use when sampling a texture (see <strong><see cref=\"T:SharpDX.Direct3D11.Filter\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SAMPLER_DESC::Filter']/*\"/>\t\n            <msdn-id>ff476207</msdn-id>\t\n            <unmanaged>D3D11_FILTER Filter</unmanaged>\t\n            <unmanaged-short>D3D11_FILTER Filter</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.SamplerStateDescription.AddressU\">\n            <summary>\t\n            <dd> <p>Method to use for resolving a u texture coordinate that is outside the 0 to 1 range (see <strong><see cref=\"T:SharpDX.Direct3D11.TextureAddressMode\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SAMPLER_DESC::AddressU']/*\"/>\t\n            <msdn-id>ff476207</msdn-id>\t\n            <unmanaged>D3D11_TEXTURE_ADDRESS_MODE AddressU</unmanaged>\t\n            <unmanaged-short>D3D11_TEXTURE_ADDRESS_MODE AddressU</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.SamplerStateDescription.AddressV\">\n            <summary>\t\n            <dd> <p>Method to use for resolving a v texture coordinate that is outside the 0 to 1 range.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SAMPLER_DESC::AddressV']/*\"/>\t\n            <msdn-id>ff476207</msdn-id>\t\n            <unmanaged>D3D11_TEXTURE_ADDRESS_MODE AddressV</unmanaged>\t\n            <unmanaged-short>D3D11_TEXTURE_ADDRESS_MODE AddressV</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.SamplerStateDescription.AddressW\">\n            <summary>\t\n            <dd> <p>Method to use for resolving a w texture coordinate that is outside the 0 to 1 range.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SAMPLER_DESC::AddressW']/*\"/>\t\n            <msdn-id>ff476207</msdn-id>\t\n            <unmanaged>D3D11_TEXTURE_ADDRESS_MODE AddressW</unmanaged>\t\n            <unmanaged-short>D3D11_TEXTURE_ADDRESS_MODE AddressW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.SamplerStateDescription.MipLodBias\">\n            <summary>\t\n            <dd> <p>Offset from the calculated mipmap level. For example, if Direct3D calculates that a texture should be sampled at mipmap level 3 and MipLODBias is 2, then the texture will be sampled at mipmap level 5.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SAMPLER_DESC::MipLODBias']/*\"/>\t\n            <msdn-id>ff476207</msdn-id>\t\n            <unmanaged>float MipLODBias</unmanaged>\t\n            <unmanaged-short>float MipLODBias</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.SamplerStateDescription.MaximumAnisotropy\">\n            <summary>\t\n            <dd> <p>Clamping value used if <see cref=\"F:SharpDX.Direct3D11.Filter.Anisotropic\"/> or <see cref=\"F:SharpDX.Direct3D11.Filter.ComparisonAnisotropic\"/> is specified in Filter. Valid values are between 1 and 16.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SAMPLER_DESC::MaxAnisotropy']/*\"/>\t\n            <msdn-id>ff476207</msdn-id>\t\n            <unmanaged>unsigned int MaxAnisotropy</unmanaged>\t\n            <unmanaged-short>unsigned int MaxAnisotropy</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.SamplerStateDescription.ComparisonFunction\">\n            <summary>\t\n            <dd> <p>A function that compares sampled data against existing sampled data. The function options are listed in <strong><see cref=\"T:SharpDX.Direct3D11.Comparison\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SAMPLER_DESC::ComparisonFunc']/*\"/>\t\n            <msdn-id>ff476207</msdn-id>\t\n            <unmanaged>D3D11_COMPARISON_FUNC ComparisonFunc</unmanaged>\t\n            <unmanaged-short>D3D11_COMPARISON_FUNC ComparisonFunc</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.SamplerStateDescription.BorderColor\">\n            <summary>\t\n            <dd> <p>Border color to use if <see cref=\"F:SharpDX.Direct3D11.TextureAddressMode.Border\"/> is specified for AddressU, AddressV, or AddressW. Range must be between 0.0 and 1.0 inclusive.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SAMPLER_DESC::BorderColor']/*\"/>\t\n            <msdn-id>ff476207</msdn-id>\t\n            <unmanaged>SHARPDX_COLOR4 BorderColor</unmanaged>\t\n            <unmanaged-short>SHARPDX_COLOR4 BorderColor</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.SamplerStateDescription.MinimumLod\">\n            <summary>\t\n            <dd> <p>Lower end of the mipmap range to clamp access to, where 0 is the largest and most detailed mipmap level and any level higher than that is less detailed.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SAMPLER_DESC::MinLOD']/*\"/>\t\n            <msdn-id>ff476207</msdn-id>\t\n            <unmanaged>float MinLOD</unmanaged>\t\n            <unmanaged-short>float MinLOD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.SamplerStateDescription.MaximumLod\">\n            <summary>\t\n            <dd> <p>Upper end of the mipmap range to clamp access to, where 0 is the largest and most detailed mipmap level and any level higher than that is less detailed. This value must be greater than or equal to MinLOD. To have no upper limit on LOD set this to a large value such as D3D11_FLOAT32_MAX.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SAMPLER_DESC::MaxLOD']/*\"/>\t\n            <msdn-id>ff476207</msdn-id>\t\n            <unmanaged>float MaxLOD</unmanaged>\t\n            <unmanaged-short>float MaxLOD</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.SamplerStateDescription.Default\">\n            <summary>\n            Returns default values for <see cref=\"T:SharpDX.Direct3D11.SamplerStateDescription\"/>. \n            </summary>\n            <remarks>\n            See MSDN documentation for default values.\n            </remarks>\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.ShaderResourceViewDescription\">\n            <summary>\t\n            <p>Describes a shader-resource view.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>A view is a format-specific way to look at the data in a resource. The view determines what data to look at, and how it is cast when read.</p><p>When viewing a resource, the resource-view description must specify a typed format, that is compatible with the resource format. So that means that you cannot create a resource-view description using any format with _TYPELESS in the name. You can however view a typeless resource by specifying a typed format for the view. For example, a <see cref=\"F:SharpDX.DXGI.Format.R32G32B32_Typeless\"/> resource can be viewed with one of these typed formats: <see cref=\"F:SharpDX.DXGI.Format.R32G32B32_Float\"/>, <see cref=\"F:SharpDX.DXGI.Format.R32G32B32_UInt\"/>, and <see cref=\"F:SharpDX.DXGI.Format.R32G32B32_SInt\"/>, since these typed formats are compatible with the typeless resource.</p><p>Create a shader-resource-view description by calling <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateShaderResourceView(SharpDX.Direct3D11.Resource,System.Nullable{SharpDX.Direct3D11.ShaderResourceViewDescription},SharpDX.Direct3D11.ShaderResourceView)\"/></strong>. To view a shader-resource-view description, call <strong><see cref=\"M:SharpDX.Direct3D11.ShaderResourceView.GetDescription(SharpDX.Direct3D11.ShaderResourceViewDescription@)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_RESOURCE_VIEW_DESC']/*\"/>\t\n            <msdn-id>ff476211</msdn-id>\t\n            <unmanaged>D3D11_SHADER_RESOURCE_VIEW_DESC</unmanaged>\t\n            <unmanaged-short>D3D11_SHADER_RESOURCE_VIEW_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ShaderResourceViewDescription.Format\">\n            <summary>\t\n            <dd> <p>A <strong><see cref=\"T:SharpDX.DXGI.Format\"/></strong> specifying the viewing format. See remarks.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_RESOURCE_VIEW_DESC::Format']/*\"/>\t\n            <msdn-id>ff476211</msdn-id>\t\n            <unmanaged>DXGI_FORMAT Format</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT Format</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ShaderResourceViewDescription.Dimension\">\n            <summary>\t\n            <dd> <p>The resource type of the view. See <strong>D3D11_SRV_DIMENSION</strong>. This should be the same as the resource type of the underlying resource. This parameter also determines which _SRV to use in the union below.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_RESOURCE_VIEW_DESC::ViewDimension']/*\"/>\t\n            <msdn-id>ff476211</msdn-id>\t\n            <unmanaged>D3D_SRV_DIMENSION ViewDimension</unmanaged>\t\n            <unmanaged-short>D3D_SRV_DIMENSION ViewDimension</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ShaderResourceViewDescription.Buffer\">\n            <summary>\t\n            <dd> <p>View the resource as a buffer using information from a shader-resource view (see <strong><see cref=\"T:SharpDX.Direct3D11.ShaderResourceViewDescription.BufferResource\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_RESOURCE_VIEW_DESC::Buffer']/*\"/>\t\n            <msdn-id>ff476211</msdn-id>\t\n            <unmanaged>D3D11_BUFFER_SRV Buffer</unmanaged>\t\n            <unmanaged-short>D3D11_BUFFER_SRV Buffer</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ShaderResourceViewDescription.Texture1D\">\n            <summary>\t\n            <dd> <p>View the resource as a 1D texture using information from a shader-resource view (see <strong><see cref=\"T:SharpDX.Direct3D11.ShaderResourceViewDescription.Texture1DResource\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_RESOURCE_VIEW_DESC::Texture1D']/*\"/>\t\n            <msdn-id>ff476211</msdn-id>\t\n            <unmanaged>D3D11_TEX1D_SRV Texture1D</unmanaged>\t\n            <unmanaged-short>D3D11_TEX1D_SRV Texture1D</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ShaderResourceViewDescription.Texture1DArray\">\n            <summary>\t\n            <dd> <p>View the resource as a 1D-texture array using information from a shader-resource view (see <strong><see cref=\"T:SharpDX.Direct3D11.ShaderResourceViewDescription.Texture1DArrayResource\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_RESOURCE_VIEW_DESC::Texture1DArray']/*\"/>\t\n            <msdn-id>ff476211</msdn-id>\t\n            <unmanaged>D3D11_TEX1D_ARRAY_SRV Texture1DArray</unmanaged>\t\n            <unmanaged-short>D3D11_TEX1D_ARRAY_SRV Texture1DArray</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ShaderResourceViewDescription.Texture2D\">\n            <summary>\t\n            <dd> <p>View the resource as a 2D-texture using information from a shader-resource view (see <strong><see cref=\"T:SharpDX.Direct3D11.ShaderResourceViewDescription.Texture2DResource\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_RESOURCE_VIEW_DESC::Texture2D']/*\"/>\t\n            <msdn-id>ff476211</msdn-id>\t\n            <unmanaged>D3D11_TEX2D_SRV Texture2D</unmanaged>\t\n            <unmanaged-short>D3D11_TEX2D_SRV Texture2D</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ShaderResourceViewDescription.Texture2DArray\">\n            <summary>\t\n            <dd> <p>View the resource as a 2D-texture array using information from a shader-resource view (see <strong><see cref=\"T:SharpDX.Direct3D11.ShaderResourceViewDescription.Texture2DArrayResource\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_RESOURCE_VIEW_DESC::Texture2DArray']/*\"/>\t\n            <msdn-id>ff476211</msdn-id>\t\n            <unmanaged>D3D11_TEX2D_ARRAY_SRV Texture2DArray</unmanaged>\t\n            <unmanaged-short>D3D11_TEX2D_ARRAY_SRV Texture2DArray</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ShaderResourceViewDescription.Texture2DMS\">\n            <summary>\t\n            <dd> <p>View the resource as a 2D-multisampled texture using information from a shader-resource view (see <strong><see cref=\"T:SharpDX.Direct3D11.ShaderResourceViewDescription.Texture2DMultisampledResource\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_RESOURCE_VIEW_DESC::Texture2DMS']/*\"/>\t\n            <msdn-id>ff476211</msdn-id>\t\n            <unmanaged>D3D11_TEX2DMS_SRV Texture2DMS</unmanaged>\t\n            <unmanaged-short>D3D11_TEX2DMS_SRV Texture2DMS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ShaderResourceViewDescription.Texture2DMSArray\">\n            <summary>\t\n            <dd> <p>View the resource as a 2D-multisampled-texture array using information from a shader-resource view (see <strong><see cref=\"T:SharpDX.Direct3D11.ShaderResourceViewDescription.Texture2DMultisampledArrayResource\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_RESOURCE_VIEW_DESC::Texture2DMSArray']/*\"/>\t\n            <msdn-id>ff476211</msdn-id>\t\n            <unmanaged>D3D11_TEX2DMS_ARRAY_SRV Texture2DMSArray</unmanaged>\t\n            <unmanaged-short>D3D11_TEX2DMS_ARRAY_SRV Texture2DMSArray</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ShaderResourceViewDescription.Texture3D\">\n            <summary>\t\n            <dd> <p>View the resource as a 3D texture using information from a shader-resource view (see <strong><see cref=\"T:SharpDX.Direct3D11.ShaderResourceViewDescription.Texture3DResource\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_RESOURCE_VIEW_DESC::Texture3D']/*\"/>\t\n            <msdn-id>ff476211</msdn-id>\t\n            <unmanaged>D3D11_TEX3D_SRV Texture3D</unmanaged>\t\n            <unmanaged-short>D3D11_TEX3D_SRV Texture3D</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ShaderResourceViewDescription.TextureCube\">\n            <summary>\t\n            <dd> <p>View the resource as a 3D-cube texture using information from a shader-resource view (see <strong><see cref=\"T:SharpDX.Direct3D11.ShaderResourceViewDescription.TextureCubeResource\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_RESOURCE_VIEW_DESC::TextureCube']/*\"/>\t\n            <msdn-id>ff476211</msdn-id>\t\n            <unmanaged>D3D11_TEXCUBE_SRV TextureCube</unmanaged>\t\n            <unmanaged-short>D3D11_TEXCUBE_SRV TextureCube</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ShaderResourceViewDescription.TextureCubeArray\">\n            <summary>\t\n            <dd> <p>View the resource as a 3D-cube-texture array using information from a shader-resource view (see <strong><see cref=\"T:SharpDX.Direct3D11.ShaderResourceViewDescription.TextureCubeArrayResource\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_RESOURCE_VIEW_DESC::TextureCubeArray']/*\"/>\t\n            <msdn-id>ff476211</msdn-id>\t\n            <unmanaged>D3D11_TEXCUBE_ARRAY_SRV TextureCubeArray</unmanaged>\t\n            <unmanaged-short>D3D11_TEXCUBE_ARRAY_SRV TextureCubeArray</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ShaderResourceViewDescription.BufferEx\">\n            <summary>\t\n            <dd> <p>View the resource as an extended buffer using information from a shader-resource view (see <strong><see cref=\"T:SharpDX.Direct3D11.ShaderResourceViewDescription.ExtendedBufferResource\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SHADER_RESOURCE_VIEW_DESC::BufferEx']/*\"/>\t\n            <msdn-id>ff476211</msdn-id>\t\n            <unmanaged>D3D11_BUFFEREX_SRV BufferEx</unmanaged>\t\n            <unmanaged-short>D3D11_BUFFEREX_SRV BufferEx</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.ShaderResourceViewDescription.BufferResource\">\n            <summary>\t\n            <p>Specifies the elements in a buffer resource to use in a shader-resource view.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The <strong><see cref=\"T:SharpDX.Direct3D11.ShaderResourceViewDescription.BufferResource\"/></strong> structure is a member of the  <strong><see cref=\"T:SharpDX.Direct3D11.ShaderResourceViewDescription\"/></strong> structure, which represents a shader-resource view description. You can create a shader-resource view by calling the <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateShaderResourceView(SharpDX.Direct3D11.Resource,System.Nullable{SharpDX.Direct3D11.ShaderResourceViewDescription},SharpDX.Direct3D11.ShaderResourceView)\"/></strong> method.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_BUFFER_SRV']/*\"/>\t\n            <msdn-id>ff476094</msdn-id>\t\n            <unmanaged>D3D11_BUFFER_SRV</unmanaged>\t\n            <unmanaged-short>D3D11_BUFFER_SRV</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ShaderResourceViewDescription.BufferResource.FirstElement\">\n            <summary>\t\n            <dd> <p>Number of bytes between the beginning of the buffer and the first element to access.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_BUFFER_SRV::FirstElement']/*\"/>\t\n            <msdn-id>ff476094</msdn-id>\t\n            <unmanaged>unsigned int FirstElement</unmanaged>\t\n            <unmanaged-short>unsigned int FirstElement</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ShaderResourceViewDescription.BufferResource.ElementOffset\">\n            <summary>\t\n            <dd> <p>The offset of the first element in the view to access, relative to element 0.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_BUFFER_SRV::ElementOffset']/*\"/>\t\n            <msdn-id>ff476094</msdn-id>\t\n            <unmanaged>unsigned int ElementOffset</unmanaged>\t\n            <unmanaged-short>unsigned int ElementOffset</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ShaderResourceViewDescription.BufferResource.ElementCount\">\n            <summary>\t\n            <dd> <p>The total number of elements in the view.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_BUFFER_SRV::NumElements']/*\"/>\t\n            <msdn-id>ff476094</msdn-id>\t\n            <unmanaged>unsigned int NumElements</unmanaged>\t\n            <unmanaged-short>unsigned int NumElements</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ShaderResourceViewDescription.BufferResource.ElementWidth\">\n            <summary>\t\n            <dd> <p>The width of each element (in bytes). This can be determined from the format stored in the shader-resource-view description.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_BUFFER_SRV::ElementWidth']/*\"/>\t\n            <msdn-id>ff476094</msdn-id>\t\n            <unmanaged>unsigned int ElementWidth</unmanaged>\t\n            <unmanaged-short>unsigned int ElementWidth</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.ShaderResourceViewDescription.TextureCubeResource\">\n            <summary>\t\n            <p>Specifies the subresource from a cube texture to use in a shader-resource view.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure is one member of a shader-resource-view description (see <strong><see cref=\"T:SharpDX.Direct3D11.ShaderResourceViewDescription\"/></strong>).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEXCUBE_SRV']/*\"/>\t\n            <msdn-id>ff476251</msdn-id>\t\n            <unmanaged>D3D11_TEXCUBE_SRV</unmanaged>\t\n            <unmanaged-short>D3D11_TEXCUBE_SRV</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ShaderResourceViewDescription.TextureCubeResource.MostDetailedMip\">\n            <summary>\t\n            <dd> <p>Index of the most detailed mipmap level to use; this number is between 0 and <strong>MipLevels</strong> (from the original TextureCube for which <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateShaderResourceView(SharpDX.Direct3D11.Resource,System.Nullable{SharpDX.Direct3D11.ShaderResourceViewDescription},SharpDX.Direct3D11.ShaderResourceView)\"/></strong> creates a view) -1.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEXCUBE_SRV::MostDetailedMip']/*\"/>\t\n            <msdn-id>ff476251</msdn-id>\t\n            <unmanaged>unsigned int MostDetailedMip</unmanaged>\t\n            <unmanaged-short>unsigned int MostDetailedMip</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ShaderResourceViewDescription.TextureCubeResource.MipLevels\">\n            <summary>\t\n            <dd> <p>The maximum number of mipmap levels for the view of the texture. See the remarks in <strong><see cref=\"T:SharpDX.Direct3D11.ShaderResourceViewDescription.Texture1DResource\"/></strong>.</p> <p>Set to -1 to indicate all the mipmap levels from <strong>MostDetailedMip</strong> on down to least detailed.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEXCUBE_SRV::MipLevels']/*\"/>\t\n            <msdn-id>ff476251</msdn-id>\t\n            <unmanaged>unsigned int MipLevels</unmanaged>\t\n            <unmanaged-short>unsigned int MipLevels</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.ShaderResourceViewDescription.Texture2DMultisampledResource\">\n            <summary>\t\n            <p>Specifies the subresources from a multisampled 2D texture to use in a shader-resource view.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Since a multisampled 2D texture contains a single subresource, there is actually nothing to specify in <see cref=\"T:SharpDX.Direct3D11.RenderTargetViewDescription.Texture2DMultisampledResource\"/>. Consequently, <strong>UnusedField_NothingToDefine</strong> is included so that this structure will compile in C.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEX2DMS_SRV']/*\"/>\t\n            <msdn-id>ff476238</msdn-id>\t\n            <unmanaged>D3D11_TEX2DMS_SRV</unmanaged>\t\n            <unmanaged-short>D3D11_TEX2DMS_SRV</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ShaderResourceViewDescription.Texture2DMultisampledResource.UnusedFieldNothingToDefine\">\n            <summary>\t\n            <dd> <p>Integer of any value. See remarks.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEX2DMS_SRV::UnusedField_NothingToDefine']/*\"/>\t\n            <msdn-id>ff476238</msdn-id>\t\n            <unmanaged>unsigned int UnusedField_NothingToDefine</unmanaged>\t\n            <unmanaged-short>unsigned int UnusedField_NothingToDefine</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.ShaderResourceViewDescription.TextureCubeArrayResource\">\n            <summary>\t\n            <p>Specifies the subresources from an array of cube textures to use in a shader-resource view.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure is one member of a shader-resource-view description (see <strong><see cref=\"T:SharpDX.Direct3D11.ShaderResourceViewDescription\"/></strong>).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEXCUBE_ARRAY_SRV']/*\"/>\t\n            <msdn-id>ff476250</msdn-id>\t\n            <unmanaged>D3D11_TEXCUBE_ARRAY_SRV</unmanaged>\t\n            <unmanaged-short>D3D11_TEXCUBE_ARRAY_SRV</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ShaderResourceViewDescription.TextureCubeArrayResource.MostDetailedMip\">\n            <summary>\t\n            <dd> <p>Index of the most detailed mipmap level to use; this number is between 0 and <strong>MipLevels</strong> (from the original TextureCube for which <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateShaderResourceView(SharpDX.Direct3D11.Resource,System.Nullable{SharpDX.Direct3D11.ShaderResourceViewDescription},SharpDX.Direct3D11.ShaderResourceView)\"/></strong> creates a view) -1.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEXCUBE_ARRAY_SRV::MostDetailedMip']/*\"/>\t\n            <msdn-id>ff476250</msdn-id>\t\n            <unmanaged>unsigned int MostDetailedMip</unmanaged>\t\n            <unmanaged-short>unsigned int MostDetailedMip</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ShaderResourceViewDescription.TextureCubeArrayResource.MipLevels\">\n            <summary>\t\n            <dd> <p>The maximum number of mipmap levels for the view of the texture. See the remarks in <strong><see cref=\"T:SharpDX.Direct3D11.ShaderResourceViewDescription.Texture1DResource\"/></strong>.</p> <p>Set to -1 to indicate all the mipmap levels from <strong>MostDetailedMip</strong> on down to least detailed.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEXCUBE_ARRAY_SRV::MipLevels']/*\"/>\t\n            <msdn-id>ff476250</msdn-id>\t\n            <unmanaged>unsigned int MipLevels</unmanaged>\t\n            <unmanaged-short>unsigned int MipLevels</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ShaderResourceViewDescription.TextureCubeArrayResource.First2DArrayFace\">\n            <summary>\t\n            <dd> <p>Index of the first 2D texture to use.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEXCUBE_ARRAY_SRV::First2DArrayFace']/*\"/>\t\n            <msdn-id>ff476250</msdn-id>\t\n            <unmanaged>unsigned int First2DArrayFace</unmanaged>\t\n            <unmanaged-short>unsigned int First2DArrayFace</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ShaderResourceViewDescription.TextureCubeArrayResource.CubeCount\">\n            <summary>\t\n            <dd> <p>Number of cube textures in the array.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEXCUBE_ARRAY_SRV::NumCubes']/*\"/>\t\n            <msdn-id>ff476250</msdn-id>\t\n            <unmanaged>unsigned int NumCubes</unmanaged>\t\n            <unmanaged-short>unsigned int NumCubes</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.ShaderResourceViewDescription.Texture3DResource\">\n            <summary>\t\n            <p>Specifies the subresources from a 3D texture to use in a shader-resource view.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure is one member of a shader-resource-view description (see <strong><see cref=\"T:SharpDX.Direct3D11.ShaderResourceViewDescription\"/></strong>).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEX3D_SRV']/*\"/>\t\n            <msdn-id>ff476248</msdn-id>\t\n            <unmanaged>D3D11_TEX3D_SRV</unmanaged>\t\n            <unmanaged-short>D3D11_TEX3D_SRV</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ShaderResourceViewDescription.Texture3DResource.MostDetailedMip\">\n            <summary>\t\n            <dd> <p>Index of the most detailed mipmap level to use; this number is between 0 and <strong>MipLevels</strong> (from the original Texture3D for which <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateShaderResourceView(SharpDX.Direct3D11.Resource,System.Nullable{SharpDX.Direct3D11.ShaderResourceViewDescription},SharpDX.Direct3D11.ShaderResourceView)\"/></strong> creates a view) -1.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEX3D_SRV::MostDetailedMip']/*\"/>\t\n            <msdn-id>ff476248</msdn-id>\t\n            <unmanaged>unsigned int MostDetailedMip</unmanaged>\t\n            <unmanaged-short>unsigned int MostDetailedMip</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ShaderResourceViewDescription.Texture3DResource.MipLevels\">\n            <summary>\t\n            <dd> <p>The maximum number of mipmap levels for the view of the texture. See the remarks in <strong><see cref=\"T:SharpDX.Direct3D11.ShaderResourceViewDescription.Texture1DResource\"/></strong>.</p> <p>Set to -1 to indicate all the mipmap levels from <strong>MostDetailedMip</strong> on down to least detailed.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEX3D_SRV::MipLevels']/*\"/>\t\n            <msdn-id>ff476248</msdn-id>\t\n            <unmanaged>unsigned int MipLevels</unmanaged>\t\n            <unmanaged-short>unsigned int MipLevels</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.ShaderResourceViewDescription.Texture2DResource\">\n            <summary>\t\n            <p>Specifies the subresource from a 2D texture to use in a shader-resource view.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure is one member of a shader-resource-view description (see <strong><see cref=\"T:SharpDX.Direct3D11.ShaderResourceViewDescription\"/></strong>).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEX2D_SRV']/*\"/>\t\n            <msdn-id>ff476245</msdn-id>\t\n            <unmanaged>D3D11_TEX2D_SRV</unmanaged>\t\n            <unmanaged-short>D3D11_TEX2D_SRV</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ShaderResourceViewDescription.Texture2DResource.MostDetailedMip\">\n            <summary>\t\n            <dd> <p>Index of the most detailed mipmap level to use; this number is between 0 and <strong>MipLevels</strong> (from the original Texture2D for which <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateShaderResourceView(SharpDX.Direct3D11.Resource,System.Nullable{SharpDX.Direct3D11.ShaderResourceViewDescription},SharpDX.Direct3D11.ShaderResourceView)\"/></strong> creates a view) -1.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEX2D_SRV::MostDetailedMip']/*\"/>\t\n            <msdn-id>ff476245</msdn-id>\t\n            <unmanaged>unsigned int MostDetailedMip</unmanaged>\t\n            <unmanaged-short>unsigned int MostDetailedMip</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ShaderResourceViewDescription.Texture2DResource.MipLevels\">\n            <summary>\t\n            <dd> <p>The maximum number of mipmap levels for the view of the texture. See the remarks in <strong><see cref=\"T:SharpDX.Direct3D11.ShaderResourceViewDescription.Texture1DResource\"/></strong>.</p> <p>Set to -1 to indicate all the mipmap levels from <strong>MostDetailedMip</strong> on down to least detailed.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEX2D_SRV::MipLevels']/*\"/>\t\n            <msdn-id>ff476245</msdn-id>\t\n            <unmanaged>unsigned int MipLevels</unmanaged>\t\n            <unmanaged-short>unsigned int MipLevels</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.ShaderResourceViewDescription.Texture1DArrayResource\">\n            <summary>\t\n            <p>Specifies the subresources from an array of 1D textures to use in a shader-resource view.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure is one member of a shader-resource-view description (see <strong><see cref=\"T:SharpDX.Direct3D11.ShaderResourceViewDescription\"/></strong>).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEX1D_ARRAY_SRV']/*\"/>\t\n            <msdn-id>ff476227</msdn-id>\t\n            <unmanaged>D3D11_TEX1D_ARRAY_SRV</unmanaged>\t\n            <unmanaged-short>D3D11_TEX1D_ARRAY_SRV</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ShaderResourceViewDescription.Texture1DArrayResource.MostDetailedMip\">\n            <summary>\t\n            <dd> <p>Index of the most detailed mipmap level to use; this number is between 0 and <strong>MipLevels</strong> (from the original Texture1D for which <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateShaderResourceView(SharpDX.Direct3D11.Resource,System.Nullable{SharpDX.Direct3D11.ShaderResourceViewDescription},SharpDX.Direct3D11.ShaderResourceView)\"/></strong> creates a view) -1.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEX1D_ARRAY_SRV::MostDetailedMip']/*\"/>\t\n            <msdn-id>ff476227</msdn-id>\t\n            <unmanaged>unsigned int MostDetailedMip</unmanaged>\t\n            <unmanaged-short>unsigned int MostDetailedMip</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ShaderResourceViewDescription.Texture1DArrayResource.MipLevels\">\n            <summary>\t\n            <dd> <p>The maximum number of mipmap levels for the view of the texture. See the remarks in <strong><see cref=\"T:SharpDX.Direct3D11.ShaderResourceViewDescription.Texture1DResource\"/></strong>.</p> <p>Set to -1 to indicate all the mipmap levels from <strong>MostDetailedMip</strong> on down to least detailed.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEX1D_ARRAY_SRV::MipLevels']/*\"/>\t\n            <msdn-id>ff476227</msdn-id>\t\n            <unmanaged>unsigned int MipLevels</unmanaged>\t\n            <unmanaged-short>unsigned int MipLevels</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ShaderResourceViewDescription.Texture1DArrayResource.FirstArraySlice\">\n            <summary>\t\n            <dd> <p>The index of the first texture to use in an array of textures.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEX1D_ARRAY_SRV::FirstArraySlice']/*\"/>\t\n            <msdn-id>ff476227</msdn-id>\t\n            <unmanaged>unsigned int FirstArraySlice</unmanaged>\t\n            <unmanaged-short>unsigned int FirstArraySlice</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ShaderResourceViewDescription.Texture1DArrayResource.ArraySize\">\n            <summary>\t\n            <dd> <p>Number of textures in the array.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEX1D_ARRAY_SRV::ArraySize']/*\"/>\t\n            <msdn-id>ff476227</msdn-id>\t\n            <unmanaged>unsigned int ArraySize</unmanaged>\t\n            <unmanaged-short>unsigned int ArraySize</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.ShaderResourceViewDescription.Texture1DResource\">\n            <summary>\t\n            <p>Specifies the subresource from a 1D texture to use in a shader-resource view.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure is one member of a shader-resource-view description (see <strong><see cref=\"T:SharpDX.Direct3D11.ShaderResourceViewDescription\"/></strong>).</p><p>As an example, assuming <strong>MostDetailedMip</strong> = 6 and <strong>MipLevels</strong> = 2, the view will have access to 2 mipmap levels, 6 and 7, of the original texture for which <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateShaderResourceView(SharpDX.Direct3D11.Resource,System.Nullable{SharpDX.Direct3D11.ShaderResourceViewDescription},SharpDX.Direct3D11.ShaderResourceView)\"/></strong> creates the view. In this situation, <strong>MostDetailedMip</strong> is greater than the <strong>MipLevels</strong> in the view. However, <strong>MostDetailedMip</strong> is not greater than the <strong>MipLevels</strong> in the original resource.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEX1D_SRV']/*\"/>\t\n            <msdn-id>ff476231</msdn-id>\t\n            <unmanaged>D3D11_TEX1D_SRV</unmanaged>\t\n            <unmanaged-short>D3D11_TEX1D_SRV</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ShaderResourceViewDescription.Texture1DResource.MostDetailedMip\">\n            <summary>\t\n            <dd> <p>Index of the most detailed mipmap level to use; this number is between 0 and <strong>MipLevels</strong> (from the original Texture1D for which <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateShaderResourceView(SharpDX.Direct3D11.Resource,System.Nullable{SharpDX.Direct3D11.ShaderResourceViewDescription},SharpDX.Direct3D11.ShaderResourceView)\"/></strong> creates a view) -1.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEX1D_SRV::MostDetailedMip']/*\"/>\t\n            <msdn-id>ff476231</msdn-id>\t\n            <unmanaged>unsigned int MostDetailedMip</unmanaged>\t\n            <unmanaged-short>unsigned int MostDetailedMip</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ShaderResourceViewDescription.Texture1DResource.MipLevels\">\n            <summary>\t\n            <dd> <p>The maximum number of mipmap levels for the view  of the texture. See the remarks.</p> <p>Set to -1 to indicate all the mipmap levels from <strong>MostDetailedMip</strong> on down to least detailed.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEX1D_SRV::MipLevels']/*\"/>\t\n            <msdn-id>ff476231</msdn-id>\t\n            <unmanaged>unsigned int MipLevels</unmanaged>\t\n            <unmanaged-short>unsigned int MipLevels</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.ShaderResourceViewDescription.Texture2DArrayResource\">\n            <summary>\t\n            <p>Specifies the subresources from an array of 2D textures to use in a shader-resource view.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure is one member of a shader-resource-view description (see <strong><see cref=\"T:SharpDX.Direct3D11.ShaderResourceViewDescription\"/></strong>).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEX2D_ARRAY_SRV']/*\"/>\t\n            <msdn-id>ff476241</msdn-id>\t\n            <unmanaged>D3D11_TEX2D_ARRAY_SRV</unmanaged>\t\n            <unmanaged-short>D3D11_TEX2D_ARRAY_SRV</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ShaderResourceViewDescription.Texture2DArrayResource.MostDetailedMip\">\n            <summary>\t\n            <dd> <p>Index of the most detailed mipmap level to use; this number is between 0 and <strong>MipLevels</strong> (from the original Texture2D for which <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateShaderResourceView(SharpDX.Direct3D11.Resource,System.Nullable{SharpDX.Direct3D11.ShaderResourceViewDescription},SharpDX.Direct3D11.ShaderResourceView)\"/></strong> creates a view) -1.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEX2D_ARRAY_SRV::MostDetailedMip']/*\"/>\t\n            <msdn-id>ff476241</msdn-id>\t\n            <unmanaged>unsigned int MostDetailedMip</unmanaged>\t\n            <unmanaged-short>unsigned int MostDetailedMip</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ShaderResourceViewDescription.Texture2DArrayResource.MipLevels\">\n            <summary>\t\n            <dd> <p>The maximum number of mipmap levels for the view of the texture. See the remarks in <strong><see cref=\"T:SharpDX.Direct3D11.ShaderResourceViewDescription.Texture1DResource\"/></strong>.</p> <p>Set to -1 to indicate all the mipmap levels from <strong>MostDetailedMip</strong> on down to least detailed.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEX2D_ARRAY_SRV::MipLevels']/*\"/>\t\n            <msdn-id>ff476241</msdn-id>\t\n            <unmanaged>unsigned int MipLevels</unmanaged>\t\n            <unmanaged-short>unsigned int MipLevels</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ShaderResourceViewDescription.Texture2DArrayResource.FirstArraySlice\">\n            <summary>\t\n            <dd> <p>The index of the first texture to use in an array of textures.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEX2D_ARRAY_SRV::FirstArraySlice']/*\"/>\t\n            <msdn-id>ff476241</msdn-id>\t\n            <unmanaged>unsigned int FirstArraySlice</unmanaged>\t\n            <unmanaged-short>unsigned int FirstArraySlice</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ShaderResourceViewDescription.Texture2DArrayResource.ArraySize\">\n            <summary>\t\n            <dd> <p>Number of textures in the array.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEX2D_ARRAY_SRV::ArraySize']/*\"/>\t\n            <msdn-id>ff476241</msdn-id>\t\n            <unmanaged>unsigned int ArraySize</unmanaged>\t\n            <unmanaged-short>unsigned int ArraySize</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.ShaderResourceViewDescription.Texture2DMultisampledArrayResource\">\n            <summary>\t\n            <p>Specifies the subresources from an array of multisampled 2D textures to use in a shader-resource view.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure is one member of a shader-resource-view description (see <strong><see cref=\"T:SharpDX.Direct3D11.ShaderResourceViewDescription\"/></strong>).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEX2DMS_ARRAY_SRV']/*\"/>\t\n            <msdn-id>ff476235</msdn-id>\t\n            <unmanaged>D3D11_TEX2DMS_ARRAY_SRV</unmanaged>\t\n            <unmanaged-short>D3D11_TEX2DMS_ARRAY_SRV</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ShaderResourceViewDescription.Texture2DMultisampledArrayResource.FirstArraySlice\">\n            <summary>\t\n            <dd> <p>The index of the first texture to use in an array of textures.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEX2DMS_ARRAY_SRV::FirstArraySlice']/*\"/>\t\n            <msdn-id>ff476235</msdn-id>\t\n            <unmanaged>unsigned int FirstArraySlice</unmanaged>\t\n            <unmanaged-short>unsigned int FirstArraySlice</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ShaderResourceViewDescription.Texture2DMultisampledArrayResource.ArraySize\">\n            <summary>\t\n            <dd> <p>Number of textures to use.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEX2DMS_ARRAY_SRV::ArraySize']/*\"/>\t\n            <msdn-id>ff476235</msdn-id>\t\n            <unmanaged>unsigned int ArraySize</unmanaged>\t\n            <unmanaged-short>unsigned int ArraySize</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.ShaderResourceViewDescription.ExtendedBufferResource\">\n            <summary>\t\n            <p>Describes a raw buffer resource.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure is used by <strong><see cref=\"T:SharpDX.Direct3D11.ShaderResourceViewDescription\"/></strong> to create a raw buffer.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_BUFFEREX_SRV']/*\"/>\t\n            <msdn-id>ff476090</msdn-id>\t\n            <unmanaged>D3D11_BUFFEREX_SRV</unmanaged>\t\n            <unmanaged-short>D3D11_BUFFEREX_SRV</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ShaderResourceViewDescription.ExtendedBufferResource.FirstElement\">\n            <summary>\t\n            <dd> <p>The index of the first element to be accessed by the view.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_BUFFEREX_SRV::FirstElement']/*\"/>\t\n            <msdn-id>ff476090</msdn-id>\t\n            <unmanaged>unsigned int FirstElement</unmanaged>\t\n            <unmanaged-short>unsigned int FirstElement</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ShaderResourceViewDescription.ExtendedBufferResource.ElementCount\">\n            <summary>\t\n            <dd> <p>The number of elements in the resource.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_BUFFEREX_SRV::NumElements']/*\"/>\t\n            <msdn-id>ff476090</msdn-id>\t\n            <unmanaged>unsigned int NumElements</unmanaged>\t\n            <unmanaged-short>unsigned int NumElements</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.ShaderResourceViewDescription.ExtendedBufferResource.Flags\">\n            <summary>\t\n            <dd> <p>Options for binding a raw buffer (see <strong><see cref=\"T:SharpDX.Direct3D11.ShaderResourceViewExtendedBufferFlags\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_BUFFEREX_SRV::Flags']/*\"/>\t\n            <msdn-id>ff476090</msdn-id>\t\n            <unmanaged>D3D11_BUFFEREX_SRV_FLAG Flags</unmanaged>\t\n            <unmanaged-short>D3D11_BUFFEREX_SRV_FLAG Flags</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.StreamOutputElement\">\n            <summary>\t\n            <p>Description of a vertex element in a vertex buffer in an output slot.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SO_DECLARATION_ENTRY']/*\"/>\t\n            <msdn-id>ff476216</msdn-id>\t\n            <unmanaged>D3D11_SO_DECLARATION_ENTRY</unmanaged>\t\n            <unmanaged-short>D3D11_SO_DECLARATION_ENTRY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.StreamOutputElement.Stream\">\n            <summary>\t\n            <dd> <p>Zero-based, stream number.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SO_DECLARATION_ENTRY::Stream']/*\"/>\t\n            <msdn-id>ff476216</msdn-id>\t\n            <unmanaged>unsigned int Stream</unmanaged>\t\n            <unmanaged-short>unsigned int Stream</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.StreamOutputElement.SemanticName\">\n            <summary>\t\n            <dd> <p>Type of output element; possible values include: <strong>\"POSITION\"</strong>, <strong>\"NORMAL\"</strong>, or <strong>\"TEXCOORD0\"</strong>. Note that if <em>SemanticName</em> is <strong><c>null</c></strong> then  <em>ComponentCount</em> can be greater than 4 and the described entry will be a gap in the stream out where no data will be written. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SO_DECLARATION_ENTRY::SemanticName']/*\"/>\t\n            <msdn-id>ff476216</msdn-id>\t\n            <unmanaged>const char* SemanticName</unmanaged>\t\n            <unmanaged-short>char SemanticName</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.StreamOutputElement.SemanticIndex\">\n            <summary>\t\n            <dd> <p>Output element's zero-based index. Should be used if, for example, you have more than one texture coordinate stored in each vertex.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SO_DECLARATION_ENTRY::SemanticIndex']/*\"/>\t\n            <msdn-id>ff476216</msdn-id>\t\n            <unmanaged>unsigned int SemanticIndex</unmanaged>\t\n            <unmanaged-short>unsigned int SemanticIndex</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.StreamOutputElement.StartComponent\">\n            <summary>\t\n            <dd> <p>Which component of the entry to begin writing out to. Valid values are 0 to 3. For example, if you only wish to output to the y and z components  of a position, then StartComponent should be 1 and ComponentCount should be 2.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SO_DECLARATION_ENTRY::StartComponent']/*\"/>\t\n            <msdn-id>ff476216</msdn-id>\t\n            <unmanaged>unsigned char StartComponent</unmanaged>\t\n            <unmanaged-short>unsigned char StartComponent</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.StreamOutputElement.ComponentCount\">\n            <summary>\t\n            <dd> <p>The number of components of the entry to write out to. Valid values are 1 to 4. For example, if you only wish to output to the y and z components  of a position, then StartComponent should be 1 and ComponentCount should be 2.  Note that if <em>SemanticName</em> is <strong><c>null</c></strong> then  <em>ComponentCount</em> can be greater than 4 and the described entry will be a gap in the stream out where no data will be written.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SO_DECLARATION_ENTRY::ComponentCount']/*\"/>\t\n            <msdn-id>ff476216</msdn-id>\t\n            <unmanaged>unsigned char ComponentCount</unmanaged>\t\n            <unmanaged-short>unsigned char ComponentCount</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.StreamOutputElement.OutputSlot\">\n            <summary>\t\n            <dd> <p>The associated stream output buffer that is bound to the pipeline  (see <strong><see cref=\"M:SharpDX.Direct3D11.StreamOutputStage.SetTargets(SharpDX.Direct3D11.StreamOutputBufferBinding[])\"/></strong>).  The valid range for <em>OutputSlot</em> is 0 to 3.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_SO_DECLARATION_ENTRY::OutputSlot']/*\"/>\t\n            <msdn-id>ff476216</msdn-id>\t\n            <unmanaged>unsigned char OutputSlot</unmanaged>\t\n            <unmanaged-short>unsigned char OutputSlot</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.StreamOutputStatistics\">\n            <summary>\t\n            <p>Query information about the amount of data streamed out to the stream-output buffers in between <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.Begin(SharpDX.Direct3D11.Asynchronous)\"/></strong> and <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.End(SharpDX.Direct3D11.Asynchronous)\"/></strong>.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_QUERY_DATA_SO_STATISTICS']/*\"/>\t\n            <msdn-id>ff476193</msdn-id>\t\n            <unmanaged>D3D11_QUERY_DATA_SO_STATISTICS</unmanaged>\t\n            <unmanaged-short>D3D11_QUERY_DATA_SO_STATISTICS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.StreamOutputStatistics.NumPrimitivesWritten\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_QUERY_DATA_SO_STATISTICS::NumPrimitivesWritten']/*\"/>\t\n            <unmanaged>unsigned longlong NumPrimitivesWritten</unmanaged>\t\n            <unmanaged-short>unsigned longlong NumPrimitivesWritten</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.StreamOutputStatistics.PrimitivesStorageNeeded\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_QUERY_DATA_SO_STATISTICS::PrimitivesStorageNeeded']/*\"/>\t\n            <unmanaged>unsigned longlong PrimitivesStorageNeeded</unmanaged>\t\n            <unmanaged-short>unsigned longlong PrimitivesStorageNeeded</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.Texture1DDescription\">\n            <summary>\t\n            <p>Describes a 1D texture.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure is used in a call to <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateTexture1D(SharpDX.Direct3D11.Texture1DDescription@,SharpDX.DataBox[],SharpDX.Direct3D11.Texture1D)\"/></strong>. A helpful derived structure CD3D11_TEXTURE1D_DESC is declared in D3D11.h, to help create a texture description.</p><p>The texture size range is determined by the feature level at which you create the device and not the Microsoft Direct3D interface version. For example, if you use Microsoft Direct3D?10 hardware at feature level 10 (<strong><see cref=\"F:SharpDX.Direct3D.FeatureLevel.Level_10_0\"/></strong>) and call <strong><see cref=\"M:SharpDX.Direct3D11.D3D11.CreateDevice(SharpDX.DXGI.Adapter,SharpDX.Direct3D.DriverType,System.IntPtr,SharpDX.Direct3D11.DeviceCreationFlags,SharpDX.Direct3D.FeatureLevel[],System.Int32,System.Int32,SharpDX.Direct3D11.Device,SharpDX.Direct3D.FeatureLevel@,SharpDX.Direct3D11.DeviceContext@)\"/></strong> to create an <strong><see cref=\"T:SharpDX.Direct3D11.Device\"/></strong>, you must constrain the maximum texture size to <see cref=\"!:SharpDX.Direct3D10.Resource.MaximumTexture1DSize\"/> (8192) when you create your 1D texture.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEXTURE1D_DESC']/*\"/>\t\n            <msdn-id>ff476252</msdn-id>\t\n            <unmanaged>D3D11_TEXTURE1D_DESC</unmanaged>\t\n            <unmanaged-short>D3D11_TEXTURE1D_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.Texture1DDescription.Width\">\n            <summary>\t\n            <dd> <p>Texture width (in texels). The  range is from 1 to <see cref=\"F:SharpDX.Direct3D11.Resource.MaximumTexture1DSize\"/> (16384). However, the range is actually constrained by the feature level at which you create the rendering device. For more information about restrictions, see Remarks.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEXTURE1D_DESC::Width']/*\"/>\t\n            <msdn-id>ff476252</msdn-id>\t\n            <unmanaged>unsigned int Width</unmanaged>\t\n            <unmanaged-short>unsigned int Width</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.Texture1DDescription.MipLevels\">\n            <summary>\t\n            <dd> <p>The maximum number of mipmap levels in the texture. See the remarks in <strong><see cref=\"T:SharpDX.Direct3D11.ShaderResourceViewDescription.Texture1DResource\"/></strong>. Use 1 for a multisampled texture; or 0 to generate a full set of subtextures.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEXTURE1D_DESC::MipLevels']/*\"/>\t\n            <msdn-id>ff476252</msdn-id>\t\n            <unmanaged>unsigned int MipLevels</unmanaged>\t\n            <unmanaged-short>unsigned int MipLevels</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.Texture1DDescription.ArraySize\">\n            <summary>\t\n            <dd> <p>Number of textures in the array. The  range is from 1 to <see cref=\"F:SharpDX.Direct3D11.Resource.MaximumTexture1DArraySize\"/> (2048). However, the range is actually constrained by the feature level at which you create the rendering device. For more information about restrictions, see Remarks.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEXTURE1D_DESC::ArraySize']/*\"/>\t\n            <msdn-id>ff476252</msdn-id>\t\n            <unmanaged>unsigned int ArraySize</unmanaged>\t\n            <unmanaged-short>unsigned int ArraySize</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.Texture1DDescription.Format\">\n            <summary>\t\n            <dd> <p>Texture format (see <strong><see cref=\"T:SharpDX.DXGI.Format\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEXTURE1D_DESC::Format']/*\"/>\t\n            <msdn-id>ff476252</msdn-id>\t\n            <unmanaged>DXGI_FORMAT Format</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT Format</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.Texture1DDescription.Usage\">\n            <summary>\t\n            <dd> <p>Value that identifies how the texture is to be read from and written to. The most common value is <see cref=\"F:SharpDX.Direct3D11.ResourceUsage.Default\"/>; see <strong><see cref=\"T:SharpDX.Direct3D11.ResourceUsage\"/></strong> for all possible values.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEXTURE1D_DESC::Usage']/*\"/>\t\n            <msdn-id>ff476252</msdn-id>\t\n            <unmanaged>D3D11_USAGE Usage</unmanaged>\t\n            <unmanaged-short>D3D11_USAGE Usage</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.Texture1DDescription.BindFlags\">\n            <summary>\t\n            <dd> <p>Flags (see <strong><see cref=\"T:SharpDX.Direct3D11.BindFlags\"/></strong>) for binding to pipeline stages. The flags can be combined by a logical OR. For a 1D texture, the allowable values are: <see cref=\"F:SharpDX.Direct3D11.BindFlags.ShaderResource\"/>, <see cref=\"F:SharpDX.Direct3D11.BindFlags.RenderTarget\"/> and <see cref=\"F:SharpDX.Direct3D11.BindFlags.DepthStencil\"/>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEXTURE1D_DESC::BindFlags']/*\"/>\t\n            <msdn-id>ff476252</msdn-id>\t\n            <unmanaged>D3D11_BIND_FLAG BindFlags</unmanaged>\t\n            <unmanaged-short>D3D11_BIND_FLAG BindFlags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.Texture1DDescription.CpuAccessFlags\">\n            <summary>\t\n            <dd> <p>Flags (see <strong><see cref=\"T:SharpDX.Direct3D11.CpuAccessFlags\"/></strong>) to specify the types of CPU access allowed. Use 0 if CPU access is not required. These flags can be combined with a logical OR.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEXTURE1D_DESC::CPUAccessFlags']/*\"/>\t\n            <msdn-id>ff476252</msdn-id>\t\n            <unmanaged>D3D11_CPU_ACCESS_FLAG CPUAccessFlags</unmanaged>\t\n            <unmanaged-short>D3D11_CPU_ACCESS_FLAG CPUAccessFlags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.Texture1DDescription.OptionFlags\">\n            <summary>\t\n            <dd> <p>Flags (see <strong><see cref=\"T:SharpDX.Direct3D11.ResourceOptionFlags\"/></strong>) that identify other, less common resource options. Use 0 if none of these flags apply. These flags can be combined with a logical OR.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEXTURE1D_DESC::MiscFlags']/*\"/>\t\n            <msdn-id>ff476252</msdn-id>\t\n            <unmanaged>D3D11_RESOURCE_MISC_FLAG MiscFlags</unmanaged>\t\n            <unmanaged-short>D3D11_RESOURCE_MISC_FLAG MiscFlags</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.Texture2DDescription\">\n            <summary>\t\n            <p>Describes a 2D texture.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure is used in a call to <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateTexture2D(SharpDX.Direct3D11.Texture2DDescription@,SharpDX.DataBox[],SharpDX.Direct3D11.Texture2D)\"/></strong>. A helpful derived structure CD3D11_TEXTURE2D_DESC is declared in D3D11.h, to help create a texture description.</p><p>The device places some size restrictions (must be multiples of a minimum size) for a subsampled, block compressed, or bit-format resource.</p><p>The texture size range is determined by the feature level at which you create the device and not the Microsoft Direct3D interface version. For example, if you use Microsoft Direct3D?10 hardware at feature level 10 (<strong><see cref=\"F:SharpDX.Direct3D.FeatureLevel.Level_10_0\"/></strong>) and call <strong><see cref=\"M:SharpDX.Direct3D11.D3D11.CreateDevice(SharpDX.DXGI.Adapter,SharpDX.Direct3D.DriverType,System.IntPtr,SharpDX.Direct3D11.DeviceCreationFlags,SharpDX.Direct3D.FeatureLevel[],System.Int32,System.Int32,SharpDX.Direct3D11.Device,SharpDX.Direct3D.FeatureLevel@,SharpDX.Direct3D11.DeviceContext@)\"/></strong> to create an <strong><see cref=\"T:SharpDX.Direct3D11.Device\"/></strong>, you must constrain the maximum texture size to <see cref=\"!:SharpDX.Direct3D10.Resource.MaximumTexture2DSize\"/> (8192) when you create your 2D texture.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEXTURE2D_DESC']/*\"/>\t\n            <msdn-id>ff476253</msdn-id>\t\n            <unmanaged>D3D11_TEXTURE2D_DESC</unmanaged>\t\n            <unmanaged-short>D3D11_TEXTURE2D_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.Texture2DDescription.Width\">\n            <summary>\t\n            <dd> <p>Texture width (in texels). The  range is from 1 to <see cref=\"F:SharpDX.Direct3D11.Resource.MaximumTexture2DSize\"/> (16384). For a texture cube-map, the  range is from 1 to <see cref=\"F:SharpDX.Direct3D11.Resource.MaximumTextureCubeSize\"/> (16384). However, the range is actually constrained by the feature level at which you create the rendering device. For more information about restrictions, see Remarks.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEXTURE2D_DESC::Width']/*\"/>\t\n            <msdn-id>ff476253</msdn-id>\t\n            <unmanaged>unsigned int Width</unmanaged>\t\n            <unmanaged-short>unsigned int Width</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.Texture2DDescription.Height\">\n            <summary>\t\n            <dd> <p>Texture height (in texels). The  range is from 1 to <see cref=\"F:SharpDX.Direct3D11.Resource.MaximumTexture2DSize\"/> (16384). For a texture cube-map, the  range is from 1 to <see cref=\"F:SharpDX.Direct3D11.Resource.MaximumTextureCubeSize\"/> (16384). However, the range is actually constrained by the feature level at which you create the rendering device. For more information about restrictions, see Remarks.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEXTURE2D_DESC::Height']/*\"/>\t\n            <msdn-id>ff476253</msdn-id>\t\n            <unmanaged>unsigned int Height</unmanaged>\t\n            <unmanaged-short>unsigned int Height</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.Texture2DDescription.MipLevels\">\n            <summary>\t\n            <dd> <p>The maximum number of mipmap levels in the texture. See the remarks in <strong><see cref=\"T:SharpDX.Direct3D11.ShaderResourceViewDescription.Texture1DResource\"/></strong>. Use 1 for a multisampled texture; or 0 to generate a full set of subtextures.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEXTURE2D_DESC::MipLevels']/*\"/>\t\n            <msdn-id>ff476253</msdn-id>\t\n            <unmanaged>unsigned int MipLevels</unmanaged>\t\n            <unmanaged-short>unsigned int MipLevels</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.Texture2DDescription.ArraySize\">\n            <summary>\t\n            <dd> <p>Number of textures in the texture array. The  range is from 1 to <see cref=\"F:SharpDX.Direct3D11.Resource.MaximumTexture2DArraySize\"/> (2048). For a texture cube-map, this value is a multiple of 6 (that is, 6 times the value in the <strong>NumCubes</strong> member of <strong><see cref=\"T:SharpDX.Direct3D11.ShaderResourceViewDescription.TextureCubeArrayResource\"/></strong>), and the  range is from 6 to <see cref=\"F:SharpDX.Direct3D11.Resource.MaximumTextureCubeSize\"/>. The range is actually constrained by the feature level at which you create the rendering device. For more information about restrictions, see Remarks.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEXTURE2D_DESC::ArraySize']/*\"/>\t\n            <msdn-id>ff476253</msdn-id>\t\n            <unmanaged>unsigned int ArraySize</unmanaged>\t\n            <unmanaged-short>unsigned int ArraySize</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.Texture2DDescription.Format\">\n            <summary>\t\n            <dd> <p>Texture format (see <strong><see cref=\"T:SharpDX.DXGI.Format\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEXTURE2D_DESC::Format']/*\"/>\t\n            <msdn-id>ff476253</msdn-id>\t\n            <unmanaged>DXGI_FORMAT Format</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT Format</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.Texture2DDescription.SampleDescription\">\n            <summary>\t\n            <dd> <p>Structure that specifies multisampling parameters for the texture. See <strong><see cref=\"T:SharpDX.DXGI.SampleDescription\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEXTURE2D_DESC::SampleDesc']/*\"/>\t\n            <msdn-id>ff476253</msdn-id>\t\n            <unmanaged>DXGI_SAMPLE_DESC SampleDesc</unmanaged>\t\n            <unmanaged-short>DXGI_SAMPLE_DESC SampleDesc</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.Texture2DDescription.Usage\">\n            <summary>\t\n            <dd> <p>Value that identifies how the texture is to be read from and written to. The most common value is <see cref=\"F:SharpDX.Direct3D11.ResourceUsage.Default\"/>; see <strong><see cref=\"T:SharpDX.Direct3D11.ResourceUsage\"/></strong> for all possible values.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEXTURE2D_DESC::Usage']/*\"/>\t\n            <msdn-id>ff476253</msdn-id>\t\n            <unmanaged>D3D11_USAGE Usage</unmanaged>\t\n            <unmanaged-short>D3D11_USAGE Usage</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.Texture2DDescription.BindFlags\">\n            <summary>\t\n            <dd> <p>Flags (see <strong><see cref=\"T:SharpDX.Direct3D11.BindFlags\"/></strong>) for binding to pipeline stages. The flags can be combined by a logical OR.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEXTURE2D_DESC::BindFlags']/*\"/>\t\n            <msdn-id>ff476253</msdn-id>\t\n            <unmanaged>D3D11_BIND_FLAG BindFlags</unmanaged>\t\n            <unmanaged-short>D3D11_BIND_FLAG BindFlags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.Texture2DDescription.CpuAccessFlags\">\n            <summary>\t\n            <dd> <p>Flags (see <strong><see cref=\"T:SharpDX.Direct3D11.CpuAccessFlags\"/></strong>) to specify the types of CPU access allowed. Use 0 if CPU access is not required. These flags can be combined with a logical OR.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEXTURE2D_DESC::CPUAccessFlags']/*\"/>\t\n            <msdn-id>ff476253</msdn-id>\t\n            <unmanaged>D3D11_CPU_ACCESS_FLAG CPUAccessFlags</unmanaged>\t\n            <unmanaged-short>D3D11_CPU_ACCESS_FLAG CPUAccessFlags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.Texture2DDescription.OptionFlags\">\n            <summary>\t\n            <dd> <p>Flags (see <strong><see cref=\"T:SharpDX.Direct3D11.ResourceOptionFlags\"/></strong>) that identify other, less common resource options. Use 0 if none of these flags apply. These flags can be combined by using a logical OR. For a texture cube-map, set the <strong><see cref=\"F:SharpDX.Direct3D11.ResourceOptionFlags.TextureCube\"/></strong> flag. Cube-map arrays (that is, <strong>ArraySize</strong> &gt; 6) require feature level <strong><see cref=\"F:SharpDX.Direct3D.FeatureLevel.Level_10_1\"/></strong> or higher.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEXTURE2D_DESC::MiscFlags']/*\"/>\t\n            <msdn-id>ff476253</msdn-id>\t\n            <unmanaged>D3D11_RESOURCE_MISC_FLAG MiscFlags</unmanaged>\t\n            <unmanaged-short>D3D11_RESOURCE_MISC_FLAG MiscFlags</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.Texture3DDescription\">\n            <summary>\t\n            <p>Describes a 3D texture.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure is used in a call to <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateTexture3D(SharpDX.Direct3D11.Texture3DDescription@,SharpDX.DataBox[],SharpDX.Direct3D11.Texture3D)\"/></strong>. A helpful derived structure CD3D11_TEXTURE3D_DESC is declared in D3D11.h, to help create a texture description.</p><p>The device restricts the size of subsampled, block compressed, and bit format resources to be multiples of sizes specific to each format.</p><p>The texture size range is determined by the feature level at which you create the device and not the Microsoft Direct3D interface version. For example, if you use Microsoft Direct3D?10 hardware at feature level 10 (<strong><see cref=\"F:SharpDX.Direct3D.FeatureLevel.Level_10_0\"/></strong>) and call <strong><see cref=\"M:SharpDX.Direct3D11.D3D11.CreateDevice(SharpDX.DXGI.Adapter,SharpDX.Direct3D.DriverType,System.IntPtr,SharpDX.Direct3D11.DeviceCreationFlags,SharpDX.Direct3D.FeatureLevel[],System.Int32,System.Int32,SharpDX.Direct3D11.Device,SharpDX.Direct3D.FeatureLevel@,SharpDX.Direct3D11.DeviceContext@)\"/></strong> to create an <strong><see cref=\"T:SharpDX.Direct3D11.Device\"/></strong>, you must constrain the maximum texture size to <see cref=\"!:SharpDX.Direct3D10.Resource.MaximumTexture3DSize\"/> (2048) when you create your 3D texture.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEXTURE3D_DESC']/*\"/>\t\n            <msdn-id>ff476254</msdn-id>\t\n            <unmanaged>D3D11_TEXTURE3D_DESC</unmanaged>\t\n            <unmanaged-short>D3D11_TEXTURE3D_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.Texture3DDescription.Width\">\n            <summary>\t\n            <dd> <p>Texture width (in texels). The  range is from 1 to <see cref=\"F:SharpDX.Direct3D11.Resource.MaximumTexture3DSize\"/> (2048). However, the range is actually constrained by the feature level at which you create the rendering device. For more information about restrictions, see Remarks.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEXTURE3D_DESC::Width']/*\"/>\t\n            <msdn-id>ff476254</msdn-id>\t\n            <unmanaged>unsigned int Width</unmanaged>\t\n            <unmanaged-short>unsigned int Width</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.Texture3DDescription.Height\">\n            <summary>\t\n            <dd> <p>Texture height (in texels). The  range is from 1 to <see cref=\"F:SharpDX.Direct3D11.Resource.MaximumTexture3DSize\"/> (2048). However, the range is actually constrained by the feature level at which you create the rendering device. For more information about restrictions, see Remarks.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEXTURE3D_DESC::Height']/*\"/>\t\n            <msdn-id>ff476254</msdn-id>\t\n            <unmanaged>unsigned int Height</unmanaged>\t\n            <unmanaged-short>unsigned int Height</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.Texture3DDescription.Depth\">\n            <summary>\t\n            <dd> <p>Texture depth (in texels). The  range is from 1 to <see cref=\"F:SharpDX.Direct3D11.Resource.MaximumTexture3DSize\"/> (2048). However, the range is actually constrained by the feature level at which you create the rendering device. For more information about restrictions, see Remarks.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEXTURE3D_DESC::Depth']/*\"/>\t\n            <msdn-id>ff476254</msdn-id>\t\n            <unmanaged>unsigned int Depth</unmanaged>\t\n            <unmanaged-short>unsigned int Depth</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.Texture3DDescription.MipLevels\">\n            <summary>\t\n            <dd> <p>The maximum number of mipmap levels in the texture. See the remarks in <strong><see cref=\"T:SharpDX.Direct3D11.ShaderResourceViewDescription.Texture1DResource\"/></strong>. Use 1 for a multisampled texture; or 0 to generate a full set of subtextures.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEXTURE3D_DESC::MipLevels']/*\"/>\t\n            <msdn-id>ff476254</msdn-id>\t\n            <unmanaged>unsigned int MipLevels</unmanaged>\t\n            <unmanaged-short>unsigned int MipLevels</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.Texture3DDescription.Format\">\n            <summary>\t\n            <dd> <p>Texture format (see <strong><see cref=\"T:SharpDX.DXGI.Format\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEXTURE3D_DESC::Format']/*\"/>\t\n            <msdn-id>ff476254</msdn-id>\t\n            <unmanaged>DXGI_FORMAT Format</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT Format</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.Texture3DDescription.Usage\">\n            <summary>\t\n            <dd> <p>Value that identifies how the texture is to be read from and written to. The most common value is <see cref=\"F:SharpDX.Direct3D11.ResourceUsage.Default\"/>; see <strong><see cref=\"T:SharpDX.Direct3D11.ResourceUsage\"/></strong> for all possible values.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEXTURE3D_DESC::Usage']/*\"/>\t\n            <msdn-id>ff476254</msdn-id>\t\n            <unmanaged>D3D11_USAGE Usage</unmanaged>\t\n            <unmanaged-short>D3D11_USAGE Usage</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.Texture3DDescription.BindFlags\">\n            <summary>\t\n            <dd> <p>Flags (see <strong><see cref=\"T:SharpDX.Direct3D11.BindFlags\"/></strong>) for binding to pipeline stages. The flags can be combined by a logical OR.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEXTURE3D_DESC::BindFlags']/*\"/>\t\n            <msdn-id>ff476254</msdn-id>\t\n            <unmanaged>D3D11_BIND_FLAG BindFlags</unmanaged>\t\n            <unmanaged-short>D3D11_BIND_FLAG BindFlags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.Texture3DDescription.CpuAccessFlags\">\n            <summary>\t\n            <dd> <p>Flags (see <strong><see cref=\"T:SharpDX.Direct3D11.CpuAccessFlags\"/></strong>) to specify the types of CPU access allowed. Use 0 if CPU access is not required. These flags can be combined with a logical OR.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEXTURE3D_DESC::CPUAccessFlags']/*\"/>\t\n            <msdn-id>ff476254</msdn-id>\t\n            <unmanaged>D3D11_CPU_ACCESS_FLAG CPUAccessFlags</unmanaged>\t\n            <unmanaged-short>D3D11_CPU_ACCESS_FLAG CPUAccessFlags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.Texture3DDescription.OptionFlags\">\n            <summary>\t\n            <dd> <p>Flags (see <strong><see cref=\"T:SharpDX.Direct3D11.ResourceOptionFlags\"/></strong>) that identify other, less common resource options. Use 0 if none of these flags apply. These flags can be combined with a logical OR.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEXTURE3D_DESC::MiscFlags']/*\"/>\t\n            <msdn-id>ff476254</msdn-id>\t\n            <unmanaged>D3D11_RESOURCE_MISC_FLAG MiscFlags</unmanaged>\t\n            <unmanaged-short>D3D11_RESOURCE_MISC_FLAG MiscFlags</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.TextureLoadInformation\">\n            <summary>\t\n            <p>Describes parameters used to load a texture from another texture.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure is used in a call to <strong><see cref=\"M:SharpDX.Direct3D11.D3DX11.LoadTextureFromTexture(SharpDX.Direct3D11.DeviceContext,SharpDX.Direct3D11.Resource,SharpDX.Direct3D11.TextureLoadInformation,SharpDX.Direct3D11.Resource)\"/></strong>.</p><p>The default values are:</p><pre><code> pSrcBox = <c>null</c>; pDstBox = <c>null</c>; SrcFirstMip = 0; DstFirstMip = 0; NumMips = D3DX11_DEFAULT; SrcFirstElement = 0; DstFirstElement = 0; NumElements = D3DX11_DEFAULT; Filter = D3DX11_DEFAULT; MipFilter = D3DX11_DEFAULT;\t\n            </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_TEXTURE_LOAD_INFO']/*\"/>\t\n            <msdn-id>ff476327</msdn-id>\t\n            <unmanaged>D3DX11_TEXTURE_LOAD_INFO</unmanaged>\t\n            <unmanaged-short>D3DX11_TEXTURE_LOAD_INFO</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.TextureLoadInformation.SourceRegionPointer\">\n            <summary>\t\n            <dd> <p>Source texture box (see <strong><see cref=\"T:SharpDX.Direct3D11.ResourceRegion\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_TEXTURE_LOAD_INFO::pSrcBox']/*\"/>\t\n            <msdn-id>ff476327</msdn-id>\t\n            <unmanaged>D3D11_BOX* pSrcBox</unmanaged>\t\n            <unmanaged-short>D3D11_BOX pSrcBox</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.TextureLoadInformation.DestinationRegionPointer\">\n            <summary>\t\n            <dd> <p>Destination texture box (see <strong><see cref=\"T:SharpDX.Direct3D11.ResourceRegion\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_TEXTURE_LOAD_INFO::pDstBox']/*\"/>\t\n            <msdn-id>ff476327</msdn-id>\t\n            <unmanaged>D3D11_BOX* pDstBox</unmanaged>\t\n            <unmanaged-short>D3D11_BOX pDstBox</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.TextureLoadInformation.FirstSourceMip\">\n            <summary>\t\n            <dd> <p>Source texture mipmap level, see <strong>D3D11CalcSubresource</strong> for more detail.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_TEXTURE_LOAD_INFO::SrcFirstMip']/*\"/>\t\n            <msdn-id>ff476327</msdn-id>\t\n            <unmanaged>unsigned int SrcFirstMip</unmanaged>\t\n            <unmanaged-short>unsigned int SrcFirstMip</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.TextureLoadInformation.FirstDestinationMip\">\n            <summary>\t\n            <dd> <p>Destination texture mipmap level, see <strong>D3D11CalcSubresource</strong> for more detail.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_TEXTURE_LOAD_INFO::DstFirstMip']/*\"/>\t\n            <msdn-id>ff476327</msdn-id>\t\n            <unmanaged>unsigned int DstFirstMip</unmanaged>\t\n            <unmanaged-short>unsigned int DstFirstMip</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.TextureLoadInformation.MipCount\">\n            <summary>\t\n            <dd> <p>Number of mipmap levels in the source texture.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_TEXTURE_LOAD_INFO::NumMips']/*\"/>\t\n            <msdn-id>ff476327</msdn-id>\t\n            <unmanaged>unsigned int NumMips</unmanaged>\t\n            <unmanaged-short>unsigned int NumMips</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.TextureLoadInformation.FirstSourceElement\">\n            <summary>\t\n            <dd> <p>First element of the source texture.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_TEXTURE_LOAD_INFO::SrcFirstElement']/*\"/>\t\n            <msdn-id>ff476327</msdn-id>\t\n            <unmanaged>unsigned int SrcFirstElement</unmanaged>\t\n            <unmanaged-short>unsigned int SrcFirstElement</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.TextureLoadInformation.FirstDestinationElement\">\n            <summary>\t\n            <dd> <p>First element of the destination texture.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_TEXTURE_LOAD_INFO::DstFirstElement']/*\"/>\t\n            <msdn-id>ff476327</msdn-id>\t\n            <unmanaged>unsigned int DstFirstElement</unmanaged>\t\n            <unmanaged-short>unsigned int DstFirstElement</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.TextureLoadInformation.ElementCount\">\n            <summary>\t\n            <dd> <p>Number of elements to load.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_TEXTURE_LOAD_INFO::NumElements']/*\"/>\t\n            <msdn-id>ff476327</msdn-id>\t\n            <unmanaged>unsigned int NumElements</unmanaged>\t\n            <unmanaged-short>unsigned int NumElements</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.TextureLoadInformation.Filter\">\n            <summary>\t\n            <dd> <p>Filtering options during resampling (see <strong><see cref=\"T:SharpDX.Direct3D11.FilterFlags\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_TEXTURE_LOAD_INFO::Filter']/*\"/>\t\n            <msdn-id>ff476327</msdn-id>\t\n            <unmanaged>D3DX11_FILTER_FLAG Filter</unmanaged>\t\n            <unmanaged-short>D3DX11_FILTER_FLAG Filter</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.TextureLoadInformation.MipFilter\">\n            <summary>\t\n            <dd> <p>Filtering options when generating mip levels (see <strong><see cref=\"T:SharpDX.Direct3D11.FilterFlags\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX11_TEXTURE_LOAD_INFO::MipFilter']/*\"/>\t\n            <msdn-id>ff476327</msdn-id>\t\n            <unmanaged>D3DX11_FILTER_FLAG MipFilter</unmanaged>\t\n            <unmanaged-short>D3DX11_FILTER_FLAG MipFilter</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.TextureLoadInformation.SourceRegion\">\n            <summary>\t\n            Source texture box (see <see cref=\"T:SharpDX.Direct3D11.ResourceRegion\"/>). \t\n            </summary>\t\n            <unmanaged>D3D11_BOX* pSrcBox</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.TextureLoadInformation.DestinationRegion\">\n            <summary>\t\n            Destination texture box (see <see cref=\"T:SharpDX.Direct3D11.ResourceRegion\"/>). \t\n            </summary>\t\n            <unmanaged>D3D11_BOX* pDstBox</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.UnorderedAccessViewDescription\">\n            <summary>\t\n            <p>Specifies the subresources from a resource that are accessible using an unordered-access view.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>An unordered-access-view description is passed into <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateUnorderedAccessView(SharpDX.Direct3D11.Resource,System.Nullable{SharpDX.Direct3D11.UnorderedAccessViewDescription},SharpDX.Direct3D11.UnorderedAccessView)\"/></strong> to create a view.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_UNORDERED_ACCESS_VIEW_DESC']/*\"/>\t\n            <msdn-id>ff476258</msdn-id>\t\n            <unmanaged>D3D11_UNORDERED_ACCESS_VIEW_DESC</unmanaged>\t\n            <unmanaged-short>D3D11_UNORDERED_ACCESS_VIEW_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.UnorderedAccessViewDescription.Format\">\n            <summary>\t\n            <dd> <p>The data format (see <strong><see cref=\"T:SharpDX.DXGI.Format\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_UNORDERED_ACCESS_VIEW_DESC::Format']/*\"/>\t\n            <msdn-id>ff476258</msdn-id>\t\n            <unmanaged>DXGI_FORMAT Format</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT Format</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.UnorderedAccessViewDescription.Dimension\">\n            <summary>\t\n            <dd> <p>The resource type (see <strong><see cref=\"T:SharpDX.Direct3D11.UnorderedAccessViewDimension\"/></strong>), which specifies how the resource will be accessed.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_UNORDERED_ACCESS_VIEW_DESC::ViewDimension']/*\"/>\t\n            <msdn-id>ff476258</msdn-id>\t\n            <unmanaged>D3D11_UAV_DIMENSION ViewDimension</unmanaged>\t\n            <unmanaged-short>D3D11_UAV_DIMENSION ViewDimension</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.UnorderedAccessViewDescription.Buffer\">\n            <summary>\t\n            <dd> <p>Specifies which buffer elements can be accessed (see <strong><see cref=\"T:SharpDX.Direct3D11.UnorderedAccessViewDescription.BufferResource\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_UNORDERED_ACCESS_VIEW_DESC::Buffer']/*\"/>\t\n            <msdn-id>ff476258</msdn-id>\t\n            <unmanaged>D3D11_BUFFER_UAV Buffer</unmanaged>\t\n            <unmanaged-short>D3D11_BUFFER_UAV Buffer</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.UnorderedAccessViewDescription.Texture1D\">\n            <summary>\t\n            <dd> <p>Specifies the subresources in a 1D texture that can be accessed (see <strong><see cref=\"T:SharpDX.Direct3D11.UnorderedAccessViewDescription.Texture1DResource\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_UNORDERED_ACCESS_VIEW_DESC::Texture1D']/*\"/>\t\n            <msdn-id>ff476258</msdn-id>\t\n            <unmanaged>D3D11_TEX1D_UAV Texture1D</unmanaged>\t\n            <unmanaged-short>D3D11_TEX1D_UAV Texture1D</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.UnorderedAccessViewDescription.Texture1DArray\">\n            <summary>\t\n            <dd> <p>Specifies the subresources in a 1D texture array that can be accessed (see <strong><see cref=\"T:SharpDX.Direct3D11.UnorderedAccessViewDescription.Texture1DArrayResource\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_UNORDERED_ACCESS_VIEW_DESC::Texture1DArray']/*\"/>\t\n            <msdn-id>ff476258</msdn-id>\t\n            <unmanaged>D3D11_TEX1D_ARRAY_UAV Texture1DArray</unmanaged>\t\n            <unmanaged-short>D3D11_TEX1D_ARRAY_UAV Texture1DArray</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.UnorderedAccessViewDescription.Texture2D\">\n            <summary>\t\n            <dd> <p>Specifies the subresources in a 2D texture that can be accessed (see <strong><see cref=\"T:SharpDX.Direct3D11.UnorderedAccessViewDescription.Texture2DResource\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_UNORDERED_ACCESS_VIEW_DESC::Texture2D']/*\"/>\t\n            <msdn-id>ff476258</msdn-id>\t\n            <unmanaged>D3D11_TEX2D_UAV Texture2D</unmanaged>\t\n            <unmanaged-short>D3D11_TEX2D_UAV Texture2D</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.UnorderedAccessViewDescription.Texture2DArray\">\n            <summary>\t\n            <dd> <p>Specifies the subresources in a 2D texture array that can be accessed (see <strong><see cref=\"T:SharpDX.Direct3D11.UnorderedAccessViewDescription.Texture2DArrayResource\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_UNORDERED_ACCESS_VIEW_DESC::Texture2DArray']/*\"/>\t\n            <msdn-id>ff476258</msdn-id>\t\n            <unmanaged>D3D11_TEX2D_ARRAY_UAV Texture2DArray</unmanaged>\t\n            <unmanaged-short>D3D11_TEX2D_ARRAY_UAV Texture2DArray</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.UnorderedAccessViewDescription.Texture3D\">\n            <summary>\t\n            <dd> <p>Specifies subresources in a 3D texture that can be accessed (see <strong><see cref=\"T:SharpDX.Direct3D11.UnorderedAccessViewDescription.Texture3DResource\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_UNORDERED_ACCESS_VIEW_DESC::Texture3D']/*\"/>\t\n            <msdn-id>ff476258</msdn-id>\t\n            <unmanaged>D3D11_TEX3D_UAV Texture3D</unmanaged>\t\n            <unmanaged-short>D3D11_TEX3D_UAV Texture3D</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.UnorderedAccessViewDescription.Texture1DArrayResource\">\n            <summary>\t\n            <p>Describes an array of unordered-access 1D texture resources.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure is used by a <strong><see cref=\"T:SharpDX.Direct3D11.UnorderedAccessViewDescription\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEX1D_ARRAY_UAV']/*\"/>\t\n            <msdn-id>ff476228</msdn-id>\t\n            <unmanaged>D3D11_TEX1D_ARRAY_UAV</unmanaged>\t\n            <unmanaged-short>D3D11_TEX1D_ARRAY_UAV</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.UnorderedAccessViewDescription.Texture1DArrayResource.MipSlice\">\n            <summary>\t\n            <dd> <p>The mipmap slice index.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEX1D_ARRAY_UAV::MipSlice']/*\"/>\t\n            <msdn-id>ff476228</msdn-id>\t\n            <unmanaged>unsigned int MipSlice</unmanaged>\t\n            <unmanaged-short>unsigned int MipSlice</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.UnorderedAccessViewDescription.Texture1DArrayResource.FirstArraySlice\">\n            <summary>\t\n            <dd> <p>The zero-based index of the first array slice to be accessed.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEX1D_ARRAY_UAV::FirstArraySlice']/*\"/>\t\n            <msdn-id>ff476228</msdn-id>\t\n            <unmanaged>unsigned int FirstArraySlice</unmanaged>\t\n            <unmanaged-short>unsigned int FirstArraySlice</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.UnorderedAccessViewDescription.Texture1DArrayResource.ArraySize\">\n            <summary>\t\n            <dd> <p>The number of slices in the array.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEX1D_ARRAY_UAV::ArraySize']/*\"/>\t\n            <msdn-id>ff476228</msdn-id>\t\n            <unmanaged>unsigned int ArraySize</unmanaged>\t\n            <unmanaged-short>unsigned int ArraySize</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.UnorderedAccessViewDescription.BufferResource\">\n            <summary>\t\n            <p>Unordered-access-view buffer options.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_BUFFER_UAV']/*\"/>\t\n            <msdn-id>ff476096</msdn-id>\t\n            <unmanaged>D3D11_BUFFER_UAV</unmanaged>\t\n            <unmanaged-short>D3D11_BUFFER_UAV</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.UnorderedAccessViewDescription.BufferResource.FirstElement\">\n            <summary>\t\n            <dd> <p>Resource contains raw, unstructured data.  Requires the UAV format to be <see cref=\"F:SharpDX.DXGI.Format.R32_Typeless\"/>. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_BUFFER_UAV::FirstElement']/*\"/>\t\n            <msdn-id>ff476096</msdn-id>\t\n            <unmanaged>unsigned int FirstElement</unmanaged>\t\n            <unmanaged-short>unsigned int FirstElement</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.UnorderedAccessViewDescription.BufferResource.ElementCount\">\n            <summary>\t\n            <dd> <p>Allow data to be appended to the end of the buffer.  <strong><see cref=\"F:SharpDX.Direct3D11.UnorderedAccessViewBufferFlags.Append\"/></strong> flag must also be used for  any view that will be used as a AppendStructuredBuffer or a ConsumeStructuredBuffer.  Requires the UAV format to be <see cref=\"F:SharpDX.DXGI.Format.Unknown\"/>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_BUFFER_UAV::NumElements']/*\"/>\t\n            <msdn-id>ff476096</msdn-id>\t\n            <unmanaged>unsigned int NumElements</unmanaged>\t\n            <unmanaged-short>unsigned int NumElements</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.UnorderedAccessViewDescription.BufferResource.Flags\">\n            <summary>\t\n            <dd> <p>Adds a counter to the unordered-access-view buffer.  <strong><see cref=\"F:SharpDX.Direct3D11.UnorderedAccessViewBufferFlags.Counter\"/></strong> can only be used on a UAV that is a  RWStructuredBuffer and it enables the functionality needed for the <strong>IncrementCounter</strong> and <strong>DecrementCounter</strong> methods in HLSL.  Requires the UAV format to be <see cref=\"F:SharpDX.DXGI.Format.Unknown\"/>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_BUFFER_UAV::Flags']/*\"/>\t\n            <msdn-id>ff476096</msdn-id>\t\n            <unmanaged>D3D11_BUFFER_UAV_FLAG Flags</unmanaged>\t\n            <unmanaged-short>D3D11_BUFFER_UAV_FLAG Flags</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.UnorderedAccessViewDescription.Texture1DResource\">\n            <summary>\t\n            <p>Describes a unordered-access 1D texture resource.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure is used by a <strong><see cref=\"T:SharpDX.Direct3D11.UnorderedAccessViewDescription\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEX1D_UAV']/*\"/>\t\n            <msdn-id>ff476232</msdn-id>\t\n            <unmanaged>D3D11_TEX1D_UAV</unmanaged>\t\n            <unmanaged-short>D3D11_TEX1D_UAV</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.UnorderedAccessViewDescription.Texture1DResource.MipSlice\">\n            <summary>\t\n            <dd> <p>The mipmap slice index.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEX1D_UAV::MipSlice']/*\"/>\t\n            <msdn-id>ff476232</msdn-id>\t\n            <unmanaged>unsigned int MipSlice</unmanaged>\t\n            <unmanaged-short>unsigned int MipSlice</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.UnorderedAccessViewDescription.Texture2DResource\">\n            <summary>\t\n            <p>Describes a unordered-access 2D texture resource.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure is used by a <strong><see cref=\"T:SharpDX.Direct3D11.UnorderedAccessViewDescription\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEX2D_UAV']/*\"/>\t\n            <msdn-id>ff476246</msdn-id>\t\n            <unmanaged>D3D11_TEX2D_UAV</unmanaged>\t\n            <unmanaged-short>D3D11_TEX2D_UAV</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.UnorderedAccessViewDescription.Texture2DResource.MipSlice\">\n            <summary>\t\n            <dd> <p>The mipmap slice index.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEX2D_UAV::MipSlice']/*\"/>\t\n            <msdn-id>ff476246</msdn-id>\t\n            <unmanaged>unsigned int MipSlice</unmanaged>\t\n            <unmanaged-short>unsigned int MipSlice</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.UnorderedAccessViewDescription.Texture2DArrayResource\">\n            <summary>\t\n            <p>Describes an array of unordered-access 2D texture resources.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure is used by a <strong><see cref=\"T:SharpDX.Direct3D11.UnorderedAccessViewDescription\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEX2D_ARRAY_UAV']/*\"/>\t\n            <msdn-id>ff476242</msdn-id>\t\n            <unmanaged>D3D11_TEX2D_ARRAY_UAV</unmanaged>\t\n            <unmanaged-short>D3D11_TEX2D_ARRAY_UAV</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.UnorderedAccessViewDescription.Texture2DArrayResource.MipSlice\">\n            <summary>\t\n            <dd> <p>The mipmap slice index.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEX2D_ARRAY_UAV::MipSlice']/*\"/>\t\n            <msdn-id>ff476242</msdn-id>\t\n            <unmanaged>unsigned int MipSlice</unmanaged>\t\n            <unmanaged-short>unsigned int MipSlice</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.UnorderedAccessViewDescription.Texture2DArrayResource.FirstArraySlice\">\n            <summary>\t\n            <dd> <p>The zero-based index of the first array slice to be accessed.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEX2D_ARRAY_UAV::FirstArraySlice']/*\"/>\t\n            <msdn-id>ff476242</msdn-id>\t\n            <unmanaged>unsigned int FirstArraySlice</unmanaged>\t\n            <unmanaged-short>unsigned int FirstArraySlice</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.UnorderedAccessViewDescription.Texture2DArrayResource.ArraySize\">\n            <summary>\t\n            <dd> <p>The number of slices in the array.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEX2D_ARRAY_UAV::ArraySize']/*\"/>\t\n            <msdn-id>ff476242</msdn-id>\t\n            <unmanaged>unsigned int ArraySize</unmanaged>\t\n            <unmanaged-short>unsigned int ArraySize</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.UnorderedAccessViewDescription.Texture3DResource\">\n            <summary>\t\n            <p>Describes a unordered-access 3D texture resource.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure is used by a <strong><see cref=\"T:SharpDX.Direct3D11.UnorderedAccessViewDescription\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEX3D_UAV']/*\"/>\t\n            <msdn-id>ff476249</msdn-id>\t\n            <unmanaged>D3D11_TEX3D_UAV</unmanaged>\t\n            <unmanaged-short>D3D11_TEX3D_UAV</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.UnorderedAccessViewDescription.Texture3DResource.MipSlice\">\n            <summary>\t\n            <dd> <p>The mipmap slice index.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEX3D_UAV::MipSlice']/*\"/>\t\n            <msdn-id>ff476249</msdn-id>\t\n            <unmanaged>unsigned int MipSlice</unmanaged>\t\n            <unmanaged-short>unsigned int MipSlice</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.UnorderedAccessViewDescription.Texture3DResource.FirstWSlice\">\n            <summary>\t\n            <dd> <p>The zero-based index of the first depth slice to be accessed.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEX3D_UAV::FirstWSlice']/*\"/>\t\n            <msdn-id>ff476249</msdn-id>\t\n            <unmanaged>unsigned int FirstWSlice</unmanaged>\t\n            <unmanaged-short>unsigned int FirstWSlice</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D11.UnorderedAccessViewDescription.Texture3DResource.WSize\">\n            <summary>\t\n            <dd> <p>The number of depth slices.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D11_TEX3D_UAV::WSize']/*\"/>\t\n            <msdn-id>ff476249</msdn-id>\t\n            <unmanaged>unsigned int WSize</unmanaged>\t\n            <unmanaged-short>unsigned int WSize</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.ModuleInit\">\n            <summary>\n            Internal class used to initialize this assembly.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.ModuleInit.Setup\">\n            <summary>\n            Initializes this assembly.\n            </summary>\n            <remarks>\n            This method is called when the assembly is loaded.\n            </remarks>\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.StreamOutputBufferBinding\">\n            <summary>\n              Properties defining the way a buffer is bound to the pipeline as a target for stream output operations.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.StreamOutputBufferBinding.#ctor(SharpDX.Direct3D11.Buffer,System.Int32)\">\n            <summary>\n              Initializes a new instance of the <see cref = \"T:SharpDX.Direct3D11.StreamOutputBufferBinding\" /> struct.\n            </summary>\n            <param name = \"buffer\">The buffer being bound.</param>\n            <param name = \"offset\">The offset to the first vertex (in bytes).</param>\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.StreamOutputBufferBinding.Buffer\">\n            <summary>\n              Gets or sets the buffer being bound.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.StreamOutputBufferBinding.Offset\">\n            <summary>\n              Gets or sets the offset from the start of the buffer of the first vertex to use (in bytes).\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Direct3D11.VertexBufferBinding\">\n            <summary>\n              Properties defining the way a buffer (containing vertex data) is bound\n              to the pipeline for rendering.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Direct3D11.VertexBufferBinding.#ctor(SharpDX.Direct3D11.Buffer,System.Int32,System.Int32)\">\n            <summary>\n              Initializes a new instance of the <see cref = \"T:SharpDX.Direct3D11.VertexBufferBinding\" /> struct.\n            </summary>\n            <param name = \"buffer\">The buffer being bound.</param>\n            <param name = \"stride\">The stride between vertex element (in bytes).</param>\n            <param name = \"offset\">The offset to the first vertex (in bytes).</param>\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.VertexBufferBinding.Buffer\">\n            <summary>\n              Gets or sets the buffer being bound.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.VertexBufferBinding.Stride\">\n            <summary>\n              Gets or sets the stride between vertex elements in the buffer (in bytes).\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Direct3D11.VertexBufferBinding.Offset\">\n            <summary>\n              Gets or sets the offset from the start of the buffer of the first vertex to use (in bytes).\n            </summary>\n        </member>\n    </members>\n</doc>\n"
  },
  {
    "path": "3rd/SharpDX/SharpDX.Direct3D9.xml",
    "content": "<?xml version=\"1.0\"?>\n<doc>\n    <assembly>\n        <name>SharpDX.Direct3D9</name>\n    </assembly>\n    <members>\n        <member name=\"T:SharpDX.Direct3D9.AdapterCollection\">\n            <summary>\n            A collection of <see cref=\"T:SharpDX.Direct3D9.AdapterInformation\"/>.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.AdapterDetails\">\n            <summary>\t\n            <p>Contains information identifying the adapter.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The following pseudocode example illustrates the version format encoded in the DriverVersion, DriverVersionLowPart, and DriverVersionHighPart members.</p><pre><code> Product = HIWORD(DriverVersion.HighPart)\t\n            Version = LOWORD(DriverVersion.HighPart)\t\n            SubVersion = HIWORD(DriverVersion.LowPart)\t\n            Build = LOWORD(DriverVersion.LowPart)\t\n            </code></pre><p>See the Platform SDK for more information about the HIWORD macro, the LOWORD macro, and the <see cref=\"T:System.Int64\"/> structure.</p><p>MAX_DEVICE_IDENTIFIER_STRING is a constant with the following definition.</p><pre><code>#define MAX_DEVICE_IDENTIFIER_STRING        512</code></pre><p>The VendorId, DeviceId, SubSysId, and Revision members can be used in tandem to identify particular chip sets. However, use these members with caution.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DADAPTER_IDENTIFIER9']/*\"/>\t\n            <msdn-id>bb172505</msdn-id>\t\n            <unmanaged>D3DADAPTER_IDENTIFIER9</unmanaged>\t\n            <unmanaged-short>D3DADAPTER_IDENTIFIER9</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.AdapterDetails.Driver\">\n            <summary>\t\n            <dd> <p>Used for presentation to the user. This should not be used to identify particular drivers, because many different strings might be associated with the same device and driver from different vendors.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DADAPTER_IDENTIFIER9::Driver']/*\"/>\t\n            <msdn-id>bb172505</msdn-id>\t\n            <unmanaged>char Driver[512]</unmanaged>\t\n            <unmanaged-short>char Driver</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.AdapterDetails.Description\">\n            <summary>\t\n            <dd> <p>Used for presentation to the user.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DADAPTER_IDENTIFIER9::Description']/*\"/>\t\n            <msdn-id>bb172505</msdn-id>\t\n            <unmanaged>char Description[512]</unmanaged>\t\n            <unmanaged-short>char Description</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.AdapterDetails.DeviceName\">\n            <summary>\t\n            <dd> <p>Device name for GDI.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DADAPTER_IDENTIFIER9::DeviceName']/*\"/>\t\n            <msdn-id>bb172505</msdn-id>\t\n            <unmanaged>char DeviceName[32]</unmanaged>\t\n            <unmanaged-short>char DeviceName</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.AdapterDetails.RawDriverVersion\">\n            <summary>\t\n            <dd> <p>Identify the version of the Direct3D driver. It is legal to do less than and greater than comparisons on the 64-bit signed integer value. However, exercise caution if you use this element to identify problematic drivers. Instead, you should use DeviceIdentifier. See Remarks.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DADAPTER_IDENTIFIER9::DriverVersion']/*\"/>\t\n            <msdn-id>bb172505</msdn-id>\t\n            <unmanaged>LARGE_INTEGER DriverVersion</unmanaged>\t\n            <unmanaged-short>LARGE_INTEGER DriverVersion</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.AdapterDetails.VendorId\">\n            <summary>\t\n            <dd> <p>Identify the version of the Direct3D driver. It is legal to do &lt; and &gt; comparisons on the 64-bit signed integer value. However, exercise caution if you use this element to identify problematic drivers. Instead, you should use DeviceIdentifier. See Remarks.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DADAPTER_IDENTIFIER9::VendorId']/*\"/>\t\n            <msdn-id>bb172505</msdn-id>\t\n            <unmanaged>unsigned int VendorId</unmanaged>\t\n            <unmanaged-short>unsigned int VendorId</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.AdapterDetails.DeviceId\">\n            <summary>\t\n            <dd> <p>Identify the version of the Direct3D driver. It is legal to do &lt; and &gt; comparisons on the 64-bit signed integer value. However, exercise caution if you use this element to identify problematic drivers. Instead, you should use DeviceIdentifier. See Remarks.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DADAPTER_IDENTIFIER9::DeviceId']/*\"/>\t\n            <msdn-id>bb172505</msdn-id>\t\n            <unmanaged>unsigned int DeviceId</unmanaged>\t\n            <unmanaged-short>unsigned int DeviceId</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.AdapterDetails.SubsystemId\">\n            <summary>\t\n            <dd> <p>Can be used to help identify a particular chip set. Query this member to identify the manufacturer. The value can be zero if unknown.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DADAPTER_IDENTIFIER9::SubSysId']/*\"/>\t\n            <msdn-id>bb172505</msdn-id>\t\n            <unmanaged>unsigned int SubSysId</unmanaged>\t\n            <unmanaged-short>unsigned int SubSysId</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.AdapterDetails.Revision\">\n            <summary>\t\n            <dd> <p>Can be used to help identify a particular chip set. Query this member to identify the type of chip set. The value can be zero if unknown.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DADAPTER_IDENTIFIER9::Revision']/*\"/>\t\n            <msdn-id>bb172505</msdn-id>\t\n            <unmanaged>unsigned int Revision</unmanaged>\t\n            <unmanaged-short>unsigned int Revision</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.AdapterDetails.DeviceIdentifier\">\n            <summary>\t\n            <dd> <p>Can be used to help identify a particular chip set. Query this member to identify the subsystem, typically the particular board. The value can be zero if unknown.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DADAPTER_IDENTIFIER9::DeviceIdentifier']/*\"/>\t\n            <msdn-id>bb172505</msdn-id>\t\n            <unmanaged>GUID DeviceIdentifier</unmanaged>\t\n            <unmanaged-short>GUID DeviceIdentifier</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.AdapterDetails.WhqlLevel\">\n            <summary>\t\n            <dd> <p>Can be used to help identify a particular chip set. Query this member to identify the revision level of the chip set. The value can be zero if unknown.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DADAPTER_IDENTIFIER9::WHQLLevel']/*\"/>\t\n            <msdn-id>bb172505</msdn-id>\t\n            <unmanaged>unsigned int WHQLLevel</unmanaged>\t\n            <unmanaged-short>unsigned int WHQLLevel</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.AdapterDetails.Certified\">\n            <summary>\n            Gets a value indicating whether the adapeter is WHQL certified.\n            </summary>\n            <value>\n              <c>true</c> if certified; otherwise, <c>false</c>.\n            </value>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.AdapterDetails.DriverVersion\">\n            <summary>\n            Gets the driver version.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.AdapterDetails.CertificationDate\">\n            <summary>\n            Gets the certification date.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.AdapterInformation\">\n            <summary>\n            Adapter information.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.AdapterInformation.GetCaps(SharpDX.Direct3D9.DeviceType)\">\n            <summary>\n            Gets the capabilities of this adapter.\n            </summary>\n            <param name=\"type\">The type.</param>\n            <returns>The capabilities</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.AdapterInformation.GetDisplayModes(SharpDX.Direct3D9.Format)\">\n            <summary>\n            Gets the display modes supported by this adapter.\n            </summary>\n            <param name=\"format\">The format.</param>\n            <returns>The display modes supported by this adapter.</returns>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.AdapterInformation.Adapter\">\n            <summary>\n            Gets the adapter ordinal.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.AdapterInformation.CurrentDisplayMode\">\n            <summary>\n            Gets the current display mode.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.AdapterInformation.Details\">\n            <summary>\n            Gets the details.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.AdapterInformation.Monitor\">\n            <summary>\n            Gets the monitor.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.AssemblyDoc\">\n            <summary>\n            The <see cref=\"A:SharpDX.Direct3D9\"/> assembly provides managed Direct3D9 API.\n            </summary>\n            <msdn-id>bb219837</msdn-id>\n            <unmanaged>Direct3D9</unmanaged>\t\n            <unmanaged-short>Direct3D9</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.BaseEffect\">\n            <summary>\t\n            <p>Sets a non-transposed matrix.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>A non-transposed matrix contains row-major data. In other words, each vector is contained in a row.</p><p>If the destination matrix is smaller than the source matrix, the additional components of the source matrix will be ignored.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXBaseEffect']/*\"/>\t\n            <msdn-id>bb205720</msdn-id>\t\n            <unmanaged>ID3DXBaseEffect</unmanaged>\t\n            <unmanaged-short>ID3DXBaseEffect</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseEffect.GetString(SharpDX.Direct3D9.EffectHandle)\">\n            <summary>\n            Gets the string.\n            </summary>\n            <param name=\"parameter\">The parameter.</param>\n            <returns></returns>\n            <unmanaged>HRESULT ID3DXBaseEffect::GetString([In] D3DXHANDLE hParameter,[Out] const void** ppString)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseEffect.GetValue``1(SharpDX.Direct3D9.EffectHandle)\">\n            <summary>\n            Gets the value of the specified parameter.\n            </summary>\n            <param name=\"parameter\">Handle of the parameter.</param>\n            <returns>The value of the parameter.</returns>\n            <unmanaged>HRESULT ID3DXBaseEffect::GetValue([In] D3DXHANDLE hParameter,[In] void* pData,[In] unsigned int Bytes)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseEffect.GetValue``1(SharpDX.Direct3D9.EffectHandle,System.Int32)\">\n            <summary>\n            Gets the value of the specified parameter.\n            </summary>\n            <typeparam name=\"T\"></typeparam>\n            <param name=\"parameter\">Handle of the parameter.</param>\n            <param name=\"count\">The count.</param>\n            <returns>\n            The value of the parameter.\n            </returns>\n            <unmanaged>HRESULT ID3DXBaseEffect::GetValue([In] D3DXHANDLE hParameter,[In] void* pData,[In] unsigned int Bytes)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseEffect.SetValue(SharpDX.Direct3D9.EffectHandle,System.Boolean)\">\n            <summary>\n            Sets a bool value.\n            </summary>\n            <param name=\"effectHandle\">The effect handle.</param>\n            <param name=\"value\">The value.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT ID3DXBaseEffect::SetBool([In] D3DXHANDLE hConstant,[In] BOOL b)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseEffect.SetValue(SharpDX.Direct3D9.EffectHandle,System.Single)\">\n            <summary>\n            Sets a float value.\n            </summary>\n            <param name=\"effectHandle\">The effect handle.</param>\n            <param name=\"value\">The value.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT ID3DXBaseEffect::SetFloat([In] D3DXHANDLE hConstant,[In] float f)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseEffect.SetValue(SharpDX.Direct3D9.EffectHandle,System.Int32)\">\n            <summary>\n            Sets an int value.\n            </summary>\n            <param name=\"effectHandle\">The effect handle.</param>\n            <param name=\"value\">The value.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT ID3DXBaseEffect::SetInt([In] D3DXHANDLE hConstant,[In] int n)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseEffect.SetValue(SharpDX.Direct3D9.EffectHandle,SharpDX.Matrix)\">\n            <summary>\n            Sets a matrix.\n            </summary>\n            <param name=\"effectHandle\">The effect handle.</param>\n            <param name=\"value\">The value.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT ID3DXBaseEffect::SetMatrix([In] D3DXHANDLE hConstant,[In] const D3DXMATRIX* pMatrix)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseEffect.SetValue(SharpDX.Direct3D9.EffectHandle,SharpDX.Vector4)\">\n            <summary>\n            Sets a 4D vector.\n            </summary>\n            <param name=\"effectHandle\">The effect handle.</param>\n            <param name=\"value\">The value.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT ID3DXBaseEffect::SetVector([In] D3DXHANDLE hConstant,[In] const D3DXVECTOR4* pVector)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseEffect.SetValue``1(SharpDX.Direct3D9.EffectHandle,``0)\">\n            <summary>\n            Sets a typed value.\n            </summary>\n            <typeparam name=\"T\">Type of the value to est</typeparam>\n            <param name=\"effectHandle\">The effect handle.</param>\n            <param name=\"value\">The value.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT ID3DXBaseEffect::SetValue([In] D3DXHANDLE hConstant,[In] const void* pData,[In] unsigned int Bytes)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseEffect.SetValue(SharpDX.Direct3D9.EffectHandle,System.Boolean[])\">\n            <summary>\n            Sets an array of bools.\n            </summary>\n            <param name=\"effectHandle\">The effect handle.</param>\n            <param name=\"values\">The values.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT ID3DXBaseEffect::SetBoolArray([In] D3DXHANDLE hConstant,[In, Buffer] const BOOL* pb,[In] unsigned int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseEffect.SetValue(SharpDX.Direct3D9.EffectHandle,System.Single[])\">\n            <summary>\n            Sets an array of floats.\n            </summary>\n            <param name=\"effectHandle\">The effect handle.</param>\n            <param name=\"values\">The values.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT ID3DXBaseEffect::SetFloatArray([In] D3DXHANDLE hConstant,[In, Buffer] const float* pf,[In] unsigned int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseEffect.SetValue(SharpDX.Direct3D9.EffectHandle,System.Int32[])\">\n            <summary>\n            Sets an array of ints.\n            </summary>\n            <param name=\"effectHandle\">The effect handle.</param>\n            <param name=\"values\">The values.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT ID3DXBaseEffect::SetIntArray([In] D3DXHANDLE hConstant,[In, Buffer] const int* pn,[In] unsigned int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseEffect.SetValue(SharpDX.Direct3D9.EffectHandle,SharpDX.Matrix[])\">\n            <summary>\n            Sets an array of matrices.\n            </summary>\n            <param name=\"effectHandle\">The effect handle.</param>\n            <param name=\"values\">The values.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT ID3DXBaseEffect::SetMatrixArray([In] D3DXHANDLE hConstant,[In, Buffer] const D3DXMATRIX* pMatrix,[In] unsigned int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseEffect.SetValue(SharpDX.Direct3D9.EffectHandle,SharpDX.Vector4[])\">\n            <summary>\n            Sets an array of 4D vectors.\n            </summary>\n            <param name=\"effectHandle\">The effect handle.</param>\n            <param name=\"values\">The values.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT ID3DXBaseEffect::SetVectorArray([In] D3DXHANDLE hConstant,[In, Buffer] const D3DXVECTOR4* pVector,[In] unsigned int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseEffect.SetValue``1(SharpDX.Direct3D9.EffectHandle,``0[])\">\n            <summary>\n            Sets an array of elements.\n            </summary>\n            <typeparam name=\"T\">Type of the array element</typeparam>\n            <param name=\"effectHandle\">The effect handle.</param>\n            <param name=\"values\">The values.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT ID3DXBaseEffect::SetValue([In] D3DXHANDLE hConstant,[In] const void* pData,[In] unsigned int Bytes)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseEffect.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D9.BaseEffect\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseEffect.op_Explicit(System.IntPtr)~SharpDX.Direct3D9.BaseEffect\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D9.BaseEffect\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseEffect.GetDescription(SharpDX.Direct3D9.EffectDescription@)\">\n            <summary>\t\n            <p>Gets the effect description.</p>\t\n            </summary>\t\n            <param name=\"descRef\"><dd>  <p>Returns a description of the effect. See <strong><see cref=\"T:SharpDX.Direct3D9.EffectDescription\"/></strong>.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXBaseEffect::GetDesc']/*\"/>\t\n            <msdn-id>bb205681</msdn-id>\t\n            <unmanaged>HRESULT ID3DXBaseEffect::GetDesc([Out] D3DXEFFECT_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>ID3DXBaseEffect::GetDesc</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseEffect.GetParameterDescription(SharpDX.Direct3D9.EffectHandle)\">\n            <summary>\t\n            <p>Gets a parameter or annotation description.</p>\t\n            </summary>\t\n            <param name=\"hParameter\"><dd>  <p>Parameter or annotation handle. See Handles (Direct3D 9).</p> </dd></param>\t\n            <returns><dd>  <p>Returns a description of the specified parameter or annotation. See <strong><see cref=\"T:SharpDX.Direct3D9.ParameterDescription\"/></strong>.</p> </dd></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXBaseEffect::GetParameterDesc']/*\"/>\t\n            <msdn-id>bb205698</msdn-id>\t\n            <unmanaged>HRESULT ID3DXBaseEffect::GetParameterDesc([In] D3DXHANDLE hParameter,[Out] D3DXPARAMETER_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>ID3DXBaseEffect::GetParameterDesc</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseEffect.GetTechniqueDescription(SharpDX.Direct3D9.EffectHandle)\">\n            <summary>\t\n            <p>Gets a technique description.</p>\t\n            </summary>\t\n            <param name=\"hTechnique\"><dd>  <p>Technique handle. See Handles (Direct3D 9).</p> </dd></param>\t\n            <returns><dd>  <p>Returns a description of the technique. See <strong><see cref=\"T:SharpDX.Direct3D9.TechniqueDescription\"/></strong>.</p> </dd></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXBaseEffect::GetTechniqueDesc']/*\"/>\t\n            <msdn-id>bb205707</msdn-id>\t\n            <unmanaged>HRESULT ID3DXBaseEffect::GetTechniqueDesc([In] D3DXHANDLE hTechnique,[Out] D3DXTECHNIQUE_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>ID3DXBaseEffect::GetTechniqueDesc</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseEffect.GetPassDescription(SharpDX.Direct3D9.EffectHandle)\">\n            <summary>\t\n            <p>Gets a pass description.</p>\t\n            </summary>\t\n            <param name=\"hPass\"><dd>  <p>Pass handle. See Handles (Direct3D 9).</p> </dd></param>\t\n            <returns><dd>  <p>Returns a description of the specified pass. See <strong><see cref=\"T:SharpDX.Direct3D9.PassDescription\"/></strong>.</p> </dd></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??If an effect is created with <see cref=\"F:SharpDX.Direct3D9.FX.NotCloneable\"/>, this method will return <strong><c>null</c></strong> references (in <strong><see cref=\"T:SharpDX.Direct3D9.PassDescription\"/></strong>) to the shader functions.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXBaseEffect::GetPassDesc']/*\"/>\t\n            <msdn-id>bb205702</msdn-id>\t\n            <unmanaged>HRESULT ID3DXBaseEffect::GetPassDesc([In] D3DXHANDLE hPass,[Out] D3DXPASS_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>ID3DXBaseEffect::GetPassDesc</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseEffect.GetFunctionDescription(SharpDX.Direct3D9.EffectHandle)\">\n            <summary>\t\n            <p>Gets a function description.</p>\t\n            </summary>\t\n            <param name=\"hShader\"><dd>  <p>Function handle. See Handles (Direct3D 9).</p> </dd></param>\t\n            <returns><dd>  <p>Returns a description of the function. See <strong><see cref=\"T:SharpDX.Direct3D9.FunctionDescription\"/></strong>.</p> </dd></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXBaseEffect::GetFunctionDesc']/*\"/>\t\n            <msdn-id>bb205686</msdn-id>\t\n            <unmanaged>HRESULT ID3DXBaseEffect::GetFunctionDesc([In] D3DXHANDLE hShader,[Out] D3DXFUNCTION_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>ID3DXBaseEffect::GetFunctionDesc</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseEffect.GetParameter(SharpDX.Direct3D9.EffectHandle,System.Int32)\">\n            <summary>\t\n            <p>Gets the handle of a top-level parameter or a structure member parameter.</p>\t\n            </summary>\t\n            <param name=\"hParameter\"><dd>  <p>Handle of the parameter, or <strong><c>null</c></strong> for top-level parameters. See Handles (Direct3D 9).</p> </dd></param>\t\n            <param name=\"index\"><dd>  <p>Parameter index.</p> </dd></param>\t\n            <returns><p>Returns the handle of the specified parameter, or <strong><c>null</c></strong> if the index was invalid. See Handles (Direct3D 9).</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXBaseEffect::GetParameter']/*\"/>\t\n            <msdn-id>bb205695</msdn-id>\t\n            <unmanaged>D3DXHANDLE ID3DXBaseEffect::GetParameter([In] D3DXHANDLE hParameter,[In] unsigned int Index)</unmanaged>\t\n            <unmanaged-short>ID3DXBaseEffect::GetParameter</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseEffect.GetParameter(SharpDX.Direct3D9.EffectHandle,System.String)\">\n            <summary>\t\n            <p>Gets the handle of a top-level parameter or a structure member parameter by looking up its name.</p>\t\n            </summary>\t\n            <param name=\"hParameter\"><dd>  <p>Handle of the parameter, or <strong><c>null</c></strong> for top-level parameters. See Handles (Direct3D 9).</p> </dd></param>\t\n            <param name=\"nameRef\"><dd>  <p>String containing the parameter name.</p> </dd></param>\t\n            <returns><p>Returns the handle of the specified parameter, or <strong><c>null</c></strong> if the index was invalid. See Handles (Direct3D 9).</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXBaseEffect::GetParameterByName']/*\"/>\t\n            <msdn-id>bb205696</msdn-id>\t\n            <unmanaged>D3DXHANDLE ID3DXBaseEffect::GetParameterByName([In] D3DXHANDLE hParameter,[In] const char* pName)</unmanaged>\t\n            <unmanaged-short>ID3DXBaseEffect::GetParameterByName</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseEffect.GetParameterBySemantic(SharpDX.Direct3D9.EffectHandle,System.String)\">\n            <summary>\t\n            <p>Gets the handle of a top-level parameter or a structure member parameter by looking up its semantic with a case-insensitive search.</p>\t\n            </summary>\t\n            <param name=\"hParameter\"><dd>  <p>Handle of the parameter, or <strong><c>null</c></strong> for top-level parameters. See Handles (Direct3D 9).</p> </dd></param>\t\n            <param name=\"semanticRef\"><dd>  <p>String containing the semantic name.</p> </dd></param>\t\n            <returns><p>Returns the handle of the first parameter that matches the specified semantic, or <strong><c>null</c></strong> if the semantic was not found. See Handles (Direct3D 9).</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXBaseEffect::GetParameterBySemantic']/*\"/>\t\n            <msdn-id>bb205697</msdn-id>\t\n            <unmanaged>D3DXHANDLE ID3DXBaseEffect::GetParameterBySemantic([In] D3DXHANDLE hParameter,[In] const char* pSemantic)</unmanaged>\t\n            <unmanaged-short>ID3DXBaseEffect::GetParameterBySemantic</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseEffect.GetParameterElement(SharpDX.Direct3D9.EffectHandle,System.Int32)\">\n            <summary>\t\n            <p>Get the handle of an array element parameter.</p>\t\n            </summary>\t\n            <param name=\"hParameter\"><dd>  <p>Handle of the array. See Handles (Direct3D 9).</p> </dd></param>\t\n            <param name=\"index\"><dd>  <p>Array element index.</p> </dd></param>\t\n            <returns><p>Returns the handle of the specified parameter, or <strong><c>null</c></strong> if either hParameter or ElementIndex is invalid.  See Handles (Direct3D 9).</p></returns>\t\n            <remarks>\t\n            <p>This method is used to get an element of a parameter that is an array.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXBaseEffect::GetParameterElement']/*\"/>\t\n            <msdn-id>bb205699</msdn-id>\t\n            <unmanaged>D3DXHANDLE ID3DXBaseEffect::GetParameterElement([In] D3DXHANDLE hParameter,[In] unsigned int Index)</unmanaged>\t\n            <unmanaged-short>ID3DXBaseEffect::GetParameterElement</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseEffect.GetTechnique(System.Int32)\">\n            <summary>\t\n            <p>Gets the handle of a technique.</p>\t\n            </summary>\t\n            <param name=\"index\"><dd>  <p>Technique index.</p> </dd></param>\t\n            <returns><p>Returns the handle of the specified technique, or <strong><c>null</c></strong> if the index was invalid. See Handles (Direct3D 9).</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXBaseEffect::GetTechnique']/*\"/>\t\n            <msdn-id>bb205705</msdn-id>\t\n            <unmanaged>D3DXHANDLE ID3DXBaseEffect::GetTechnique([In] unsigned int Index)</unmanaged>\t\n            <unmanaged-short>ID3DXBaseEffect::GetTechnique</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseEffect.GetTechnique(System.String)\">\n            <summary>\t\n            <p>Gets the handle of a technique by looking up its name.</p>\t\n            </summary>\t\n            <param name=\"nameRef\"><dd>  <p>String containing the technique name.</p> </dd></param>\t\n            <returns><p>Returns the handle of the first technique that has the specified name, or <strong><c>null</c></strong> if the name was not found. See Handles (Direct3D 9).</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXBaseEffect::GetTechniqueByName']/*\"/>\t\n            <msdn-id>Bb205706</msdn-id>\t\n            <unmanaged>D3DXHANDLE ID3DXBaseEffect::GetTechniqueByName([In] const char* pName)</unmanaged>\t\n            <unmanaged-short>ID3DXBaseEffect::GetTechniqueByName</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseEffect.GetPass(SharpDX.Direct3D9.EffectHandle,System.Int32)\">\n            <summary>\t\n            <p>Gets the handle of a pass.</p>\t\n            </summary>\t\n            <param name=\"hTechnique\"><dd>  <p>Handle of the parent technique. See Handles (Direct3D 9).</p> </dd></param>\t\n            <param name=\"index\"><dd>  <p>Index for the pass.</p> </dd></param>\t\n            <returns><p>Returns the handle of the specified pass inside the specified technique, or <strong><c>null</c></strong> if the index was invalid. See Handles (Direct3D 9).</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXBaseEffect::GetPass']/*\"/>\t\n            <msdn-id>bb205700</msdn-id>\t\n            <unmanaged>D3DXHANDLE ID3DXBaseEffect::GetPass([In] D3DXHANDLE hTechnique,[In] unsigned int Index)</unmanaged>\t\n            <unmanaged-short>ID3DXBaseEffect::GetPass</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseEffect.GetPass(SharpDX.Direct3D9.EffectHandle,System.String)\">\n            <summary>\t\n            <p>Gets the handle of a pass by looking up its name.</p>\t\n            </summary>\t\n            <param name=\"hTechnique\"><dd>  <p>Handle of the parent technique. See Handles (Direct3D 9).</p> </dd></param>\t\n            <param name=\"nameRef\"><dd>  <p>String containing the pass name.</p> </dd></param>\t\n            <returns><p>Returns the handle of the first pass inside the specified technique that has the specified name, or <strong><c>null</c></strong> if the name was not found. See Handles (Direct3D 9).</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXBaseEffect::GetPassByName']/*\"/>\t\n            <msdn-id>bb205701</msdn-id>\t\n            <unmanaged>D3DXHANDLE ID3DXBaseEffect::GetPassByName([In] D3DXHANDLE hTechnique,[In] const char* pName)</unmanaged>\t\n            <unmanaged-short>ID3DXBaseEffect::GetPassByName</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseEffect.GetFunction(System.Int32)\">\n            <summary>\t\n            <p>Gets the handle of a function.</p>\t\n            </summary>\t\n            <param name=\"index\"><dd>  <p>Function index.</p> </dd></param>\t\n            <returns><p>Returns the handle of the specified function, or <strong><c>null</c></strong> if the index was invalid. See Handles (Direct3D 9).</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXBaseEffect::GetFunction']/*\"/>\t\n            <msdn-id>bb205684</msdn-id>\t\n            <unmanaged>D3DXHANDLE ID3DXBaseEffect::GetFunction([In] unsigned int Index)</unmanaged>\t\n            <unmanaged-short>ID3DXBaseEffect::GetFunction</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseEffect.GetFunction(System.String)\">\n            <summary>\t\n            <p>Gets the handle of a function by looking up its name.</p>\t\n            </summary>\t\n            <param name=\"nameRef\"><dd>  <p>String containing the function name. </p> </dd></param>\t\n            <returns><p>Returns the handle of the specified function, or <strong><c>null</c></strong> if the name was not found. See Handles (Direct3D 9).</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXBaseEffect::GetFunctionByName']/*\"/>\t\n            <msdn-id>bb205685</msdn-id>\t\n            <unmanaged>D3DXHANDLE ID3DXBaseEffect::GetFunctionByName([In] const char* pName)</unmanaged>\t\n            <unmanaged-short>ID3DXBaseEffect::GetFunctionByName</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseEffect.GetAnnotation(SharpDX.Direct3D9.EffectHandle,System.Int32)\">\n            <summary>\t\n            <p>Gets the handle of an annotation. </p>\t\n            </summary>\t\n            <param name=\"hObject\"><dd>  <p>Handle of a technique, pass, or top-level parameter. See Handles (Direct3D 9).</p> </dd></param>\t\n            <param name=\"index\"><dd>  <p>Annotation index.</p> </dd></param>\t\n            <returns><p>Returns the handle of the specified annotation, or <strong><c>null</c></strong> if the index was invalid. See Handles (Direct3D 9).</p></returns>\t\n            <remarks>\t\n            <p>Annotations are user-specific data that can be attached to any technique, pass, or parameter. See Handles (Direct3D 9). </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXBaseEffect::GetAnnotation']/*\"/>\t\n            <msdn-id>bb205677</msdn-id>\t\n            <unmanaged>D3DXHANDLE ID3DXBaseEffect::GetAnnotation([In] D3DXHANDLE hObject,[In] unsigned int Index)</unmanaged>\t\n            <unmanaged-short>ID3DXBaseEffect::GetAnnotation</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseEffect.GetAnnotation(SharpDX.Direct3D9.EffectHandle,System.String)\">\n            <summary>\t\n            <p>Gets the handle of an annotation by looking up its name.</p>\t\n            </summary>\t\n            <param name=\"hObject\"><dd>  <p>Handle of a technique, pass, or top-level parameter. See Handles (Direct3D 9).</p> </dd></param>\t\n            <param name=\"nameRef\"><dd>  <p>String containing the annotation name.</p> </dd></param>\t\n            <returns><p>Returns the handle of the specified annotation, or <strong><c>null</c></strong> if the name was not found. See Handles (Direct3D 9).</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXBaseEffect::GetAnnotationByName']/*\"/>\t\n            <msdn-id>bb205678</msdn-id>\t\n            <unmanaged>D3DXHANDLE ID3DXBaseEffect::GetAnnotationByName([In] D3DXHANDLE hObject,[In] const char* pName)</unmanaged>\t\n            <unmanaged-short>ID3DXBaseEffect::GetAnnotationByName</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseEffect.SetValue(SharpDX.Direct3D9.EffectHandle,System.IntPtr,System.Int32)\">\n            <summary>\t\n            <p>Set the value of an arbitrary parameter or annotation, including simple types, structs, arrays, strings, shaders and textures. </p>\t\n            </summary>\t\n            <param name=\"hParameter\"><dd>  <p>Unique identifier. See Handles (Direct3D 9).</p> </dd></param>\t\n            <param name=\"dataRef\"><dd>  <p>Pointer to a buffer containing data.</p> </dd></param>\t\n            <param name=\"bytes\"><dd>  <p>[in] Number of bytes in the buffer. Pass in D3DX_DEFAULT if you know your buffer is large enough to contain the entire parameter, and you want to skip size validation.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>This method can be used in place of nearly all the effect set API calls.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXBaseEffect::SetValue']/*\"/>\t\n            <msdn-id>bb205728</msdn-id>\t\n            <unmanaged>HRESULT ID3DXBaseEffect::SetValue([In] D3DXHANDLE hParameter,[In] const void* pData,[In] unsigned int Bytes)</unmanaged>\t\n            <unmanaged-short>ID3DXBaseEffect::SetValue</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseEffect.GetValue(SharpDX.Direct3D9.EffectHandle,System.IntPtr,System.Int32)\">\n            <summary>\t\n            <p>Get the value of an arbitrary parameter or annotation, including simple types, structs, arrays, strings, shaders and textures. This method can be used in place of nearly all the Getxxx calls in <strong><see cref=\"T:SharpDX.Direct3D9.BaseEffect\"/></strong>.</p>\t\n            </summary>\t\n            <param name=\"hParameter\">No documentation.</param>\t\n            <param name=\"dataRef\">No documentation.</param>\t\n            <param name=\"bytes\">No documentation.</param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXBaseEffect::GetValue']/*\"/>\t\n            <msdn-id>bb205709</msdn-id>\t\n            <unmanaged>HRESULT ID3DXBaseEffect::GetValue([In] D3DXHANDLE hParameter,[In] void* pData,[In] unsigned int Bytes)</unmanaged>\t\n            <unmanaged-short>ID3DXBaseEffect::GetValue</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseEffect.SetBool(SharpDX.Direct3D9.EffectHandle,SharpDX.Bool)\">\n            <summary>\t\n            <p>Sets a <see cref=\"T:SharpDX.Bool\"/> value.</p>\t\n            </summary>\t\n            <param name=\"hParameter\"><dd>  <p>Unique identifier. See Handles (Direct3D 9).</p> </dd></param>\t\n            <param name=\"b\"><dd>  <p>Boolean value.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXBaseEffect::SetBool']/*\"/>\t\n            <msdn-id>bb205714</msdn-id>\t\n            <unmanaged>HRESULT ID3DXBaseEffect::SetBool([In] D3DXHANDLE hParameter,[In] BOOL b)</unmanaged>\t\n            <unmanaged-short>ID3DXBaseEffect::SetBool</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseEffect.GetBool(SharpDX.Direct3D9.EffectHandle,SharpDX.Bool@)\">\n            <summary>\t\n            <p>Gets a <see cref=\"T:SharpDX.Bool\"/> value.</p>\t\n            </summary>\t\n            <param name=\"hParameter\"><dd>  <p>Unique identifier. See Handles (Direct3D 9).</p> </dd></param>\t\n            <param name=\"bRef\"><dd>  <p>Returns a Boolean value.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXBaseEffect::GetBool']/*\"/>\t\n            <msdn-id>bb205679</msdn-id>\t\n            <unmanaged>HRESULT ID3DXBaseEffect::GetBool([In] D3DXHANDLE hParameter,[Out] BOOL* pb)</unmanaged>\t\n            <unmanaged-short>ID3DXBaseEffect::GetBool</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseEffect.SetBoolArray(SharpDX.Direct3D9.EffectHandle,SharpDX.Bool[],System.Int32)\">\n            <summary>\t\n            <p>Sets an array of Boolean values.</p>\t\n            </summary>\t\n            <param name=\"hParameter\"><dd>  <p>Unique identifier. See Handles (Direct3D 9).</p> </dd></param>\t\n            <param name=\"bRef\"><dd>  <p>Array of Boolean values.</p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>Number of Boolean values in the array.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXBaseEffect::SetBoolArray']/*\"/>\t\n            <msdn-id>bb205715</msdn-id>\t\n            <unmanaged>HRESULT ID3DXBaseEffect::SetBoolArray([In] D3DXHANDLE hParameter,[In, Buffer] const BOOL* pb,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3DXBaseEffect::SetBoolArray</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseEffect.GetBoolArray(SharpDX.Direct3D9.EffectHandle,SharpDX.Bool[],System.Int32)\">\n            <summary>\t\n            <p>Gets an array of <see cref=\"T:SharpDX.Bool\"/> values.</p>\t\n            </summary>\t\n            <param name=\"hParameter\"><dd>  <p>Unique identifier. See Handles (Direct3D 9).</p> </dd></param>\t\n            <param name=\"bRef\"><dd>  <p>Returns an array of Boolean values.</p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>Number of Boolean values in the array.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXBaseEffect::GetBoolArray']/*\"/>\t\n            <msdn-id>bb205680</msdn-id>\t\n            <unmanaged>HRESULT ID3DXBaseEffect::GetBoolArray([In] D3DXHANDLE hParameter,[Out, Buffer] BOOL* pb,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3DXBaseEffect::GetBoolArray</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseEffect.SetInt(SharpDX.Direct3D9.EffectHandle,System.Int32)\">\n            <summary>\t\n            <p>Sets an integer.</p>\t\n            </summary>\t\n            <param name=\"hParameter\"><dd>  <p>Unique identifier. See Handles (Direct3D 9).</p> </dd></param>\t\n            <param name=\"n\"><dd>  <p>Integer value.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXBaseEffect::SetInt']/*\"/>\t\n            <msdn-id>bb205718</msdn-id>\t\n            <unmanaged>HRESULT ID3DXBaseEffect::SetInt([In] D3DXHANDLE hParameter,[In] int n)</unmanaged>\t\n            <unmanaged-short>ID3DXBaseEffect::SetInt</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseEffect.GetInt(SharpDX.Direct3D9.EffectHandle,System.Int32@)\">\n            <summary>\t\n            <p>Gets an integer.</p>\t\n            </summary>\t\n            <param name=\"hParameter\"><dd>  <p>Unique identifier. See Handles (Direct3D 9).</p> </dd></param>\t\n            <param name=\"nRef\"><dd>  <p>Returns an integer.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXBaseEffect::GetInt']/*\"/>\t\n            <msdn-id>bb205687</msdn-id>\t\n            <unmanaged>HRESULT ID3DXBaseEffect::GetInt([In] D3DXHANDLE hParameter,[Out] int* pn)</unmanaged>\t\n            <unmanaged-short>ID3DXBaseEffect::GetInt</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseEffect.SetIntArray(SharpDX.Direct3D9.EffectHandle,System.Int32[],System.Int32)\">\n            <summary>\t\n            <p>Sets an array of integers.</p>\t\n            </summary>\t\n            <param name=\"hParameter\"><dd>  <p>Unique identifier. See Handles (Direct3D 9).</p> </dd></param>\t\n            <param name=\"nRef\"><dd>  <p>Array of integers.</p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>Number of integers in the array.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXBaseEffect::SetIntArray']/*\"/>\t\n            <msdn-id>bb205719</msdn-id>\t\n            <unmanaged>HRESULT ID3DXBaseEffect::SetIntArray([In] D3DXHANDLE hParameter,[In, Buffer] const int* pn,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3DXBaseEffect::SetIntArray</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseEffect.GetIntArray(SharpDX.Direct3D9.EffectHandle,System.Int32[],System.Int32)\">\n            <summary>\t\n            <p>Gets an array of integers.</p>\t\n            </summary>\t\n            <param name=\"hParameter\"><dd>  <p>Unique identifier. See Handles (Direct3D 9).</p> </dd></param>\t\n            <param name=\"nRef\"><dd>  <p>Returns an array of integers.</p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>Number of integers in the array.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXBaseEffect::GetIntArray']/*\"/>\t\n            <msdn-id>bb205688</msdn-id>\t\n            <unmanaged>HRESULT ID3DXBaseEffect::GetIntArray([In] D3DXHANDLE hParameter,[Out, Buffer] int* pn,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3DXBaseEffect::GetIntArray</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseEffect.SetFloat(SharpDX.Direct3D9.EffectHandle,System.Single)\">\n            <summary>\t\n            <p>Sets a floating point value.</p>\t\n            </summary>\t\n            <param name=\"hParameter\"><dd>  <p>Unique identifier. See Handles (Direct3D 9).</p> </dd></param>\t\n            <param name=\"f\"><dd>  <p>Floating point value.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXBaseEffect::SetFloat']/*\"/>\t\n            <msdn-id>bb205716</msdn-id>\t\n            <unmanaged>HRESULT ID3DXBaseEffect::SetFloat([In] D3DXHANDLE hParameter,[In] float f)</unmanaged>\t\n            <unmanaged-short>ID3DXBaseEffect::SetFloat</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseEffect.GetFloat(SharpDX.Direct3D9.EffectHandle,System.Single@)\">\n            <summary>\t\n            <p>Gets a floating point value.</p>\t\n            </summary>\t\n            <param name=\"hParameter\"><dd>  <p>Unique identifier. See Handles (Direct3D 9).</p> </dd></param>\t\n            <param name=\"fRef\"><dd>  <p>Returns a floating point value.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXBaseEffect::GetFloat']/*\"/>\t\n            <msdn-id>bb205682</msdn-id>\t\n            <unmanaged>HRESULT ID3DXBaseEffect::GetFloat([In] D3DXHANDLE hParameter,[Out] float* pf)</unmanaged>\t\n            <unmanaged-short>ID3DXBaseEffect::GetFloat</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseEffect.SetFloatArray(SharpDX.Direct3D9.EffectHandle,System.Single[],System.Int32)\">\n            <summary>\t\n            <p>Sets an array of floating point values.</p>\t\n            </summary>\t\n            <param name=\"hParameter\"><dd>  <p>Unique identifier. See Handles (Direct3D 9).</p> </dd></param>\t\n            <param name=\"fRef\"><dd>  <p>Array of floating point values.</p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>Number of floating point values in the array.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXBaseEffect::SetFloatArray']/*\"/>\t\n            <msdn-id>bb205717</msdn-id>\t\n            <unmanaged>HRESULT ID3DXBaseEffect::SetFloatArray([In] D3DXHANDLE hParameter,[In, Buffer] const float* pf,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3DXBaseEffect::SetFloatArray</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseEffect.GetFloatArray(SharpDX.Direct3D9.EffectHandle,System.Single[],System.Int32)\">\n            <summary>\t\n            <p>Gets an array of floating point values.</p>\t\n            </summary>\t\n            <param name=\"hParameter\"><dd>  <p>Unique identifier. See Handles (Direct3D 9).</p> </dd></param>\t\n            <param name=\"fRef\"><dd>  <p>Returns an array of floating point values.</p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>Number of floating point values in the array.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXBaseEffect::GetFloatArray']/*\"/>\t\n            <msdn-id>bb205683</msdn-id>\t\n            <unmanaged>HRESULT ID3DXBaseEffect::GetFloatArray([In] D3DXHANDLE hParameter,[Out, Buffer] float* pf,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3DXBaseEffect::GetFloatArray</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseEffect.SetVector(SharpDX.Direct3D9.EffectHandle,SharpDX.Vector4)\">\n            <summary>\t\n            <p>Sets a vector.</p>\t\n            </summary>\t\n            <param name=\"hParameter\"><dd>  <p>Unique identifier. See Handles (Direct3D 9).</p> </dd></param>\t\n            <param name=\"vectorRef\"><dd>  <p>Pointer to a 4D vector.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>If the destination vector is smaller than the source vector, the additional components of the source vector will be ignored.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXBaseEffect::SetVector']/*\"/>\t\n            <msdn-id>bb205729</msdn-id>\t\n            <unmanaged>HRESULT ID3DXBaseEffect::SetVector([In] D3DXHANDLE hParameter,[In] const D3DXVECTOR4* pVector)</unmanaged>\t\n            <unmanaged-short>ID3DXBaseEffect::SetVector</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseEffect.GetVector(SharpDX.Direct3D9.EffectHandle,SharpDX.Vector4@)\">\n            <summary>\t\n            <p>Gets a vector.</p>\t\n            </summary>\t\n            <param name=\"hParameter\"><dd>  <p>Unique identifier. See Handles (Direct3D 9).</p> </dd></param>\t\n            <param name=\"vectorRef\"><dd>  <p>Returns a 4D vector.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>If the destination vector is larger than the source vector, only the initial components of the destination vector will be filled, and the remaining components will be set to zero.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXBaseEffect::GetVector']/*\"/>\t\n            <msdn-id>bb205710</msdn-id>\t\n            <unmanaged>HRESULT ID3DXBaseEffect::GetVector([In] D3DXHANDLE hParameter,[Out] D3DXVECTOR4* pVector)</unmanaged>\t\n            <unmanaged-short>ID3DXBaseEffect::GetVector</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseEffect.SetVectorArray(SharpDX.Direct3D9.EffectHandle,SharpDX.Vector4[],System.Int32)\">\n            <summary>\t\n            <p>Sets an array of vectors.</p>\t\n            </summary>\t\n            <param name=\"hParameter\"><dd>  <p>Unique identifier. See Handles (Direct3D 9).</p> </dd></param>\t\n            <param name=\"vectorRef\"><dd>  <p>Array of 4D floating point vectors.</p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>Number of vectors in the array.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>If the destination vectors are smaller than the source vectors, the additional components of the source vectors will be ignored.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXBaseEffect::SetVectorArray']/*\"/>\t\n            <msdn-id>bb205730</msdn-id>\t\n            <unmanaged>HRESULT ID3DXBaseEffect::SetVectorArray([In] D3DXHANDLE hParameter,[In, Buffer] const D3DXVECTOR4* pVector,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3DXBaseEffect::SetVectorArray</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseEffect.GetVectorArray(SharpDX.Direct3D9.EffectHandle,SharpDX.Vector4[],System.Int32)\">\n            <summary>\t\n            <p>Gets an array of vectors.</p>\t\n            </summary>\t\n            <param name=\"hParameter\"><dd>  <p>Unique identifier. See Handles (Direct3D 9).</p> </dd></param>\t\n            <param name=\"vectorRef\"><dd>  <p>Returns an array of 4D floating point vectors.</p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>Number of vectors in the array.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>If the destination vectors are larger than the source vectors, only the initial components of each destination vector will be filled, and the remaining destination vector components will be set to zero.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXBaseEffect::GetVectorArray']/*\"/>\t\n            <msdn-id>bb205711</msdn-id>\t\n            <unmanaged>HRESULT ID3DXBaseEffect::GetVectorArray([In] D3DXHANDLE hParameter,[Out, Buffer] D3DXVECTOR4* pVector,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3DXBaseEffect::GetVectorArray</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseEffect.SetMatrix(SharpDX.Direct3D9.EffectHandle,SharpDX.Matrix@)\">\n            <summary>\t\n            <p>Sets a non-transposed matrix.</p>\t\n            </summary>\t\n            <param name=\"hParameter\"><dd>  <p>Unique identifier. See Handles (Direct3D 9).</p> </dd></param>\t\n            <param name=\"matrixRef\"><dd>  <p>Pointer to a nontransposed matrix. See <strong><see cref=\"T:SharpDX.Matrix\"/></strong>.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>A non-transposed matrix contains row-major data. In other words, each vector is contained in a row.</p><p>If the destination matrix is smaller than the source matrix, the additional components of the source matrix will be ignored.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXBaseEffect::SetMatrix']/*\"/>\t\n            <msdn-id>bb205720</msdn-id>\t\n            <unmanaged>HRESULT ID3DXBaseEffect::SetMatrix([In] D3DXHANDLE hParameter,[In] const D3DXMATRIX* pMatrix)</unmanaged>\t\n            <unmanaged-short>ID3DXBaseEffect::SetMatrix</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseEffect.GetMatrix(SharpDX.Direct3D9.EffectHandle,SharpDX.Matrix@)\">\n            <summary>\t\n            <p>Gets a nontransposed matrix.</p>\t\n            </summary>\t\n            <param name=\"hParameter\"><dd>  <p>Unique identifier. See Handles (Direct3D 9).</p> </dd></param>\t\n            <param name=\"matrixRef\"><dd>  <p>Returns a nontransposed matrix. See <strong><see cref=\"T:SharpDX.Matrix\"/></strong>.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>A nontransposed matrix contains row-major data; that is, each vector is contained in a row.</p><p>If the destination matrix is larger than the source matrix, only the upper-left components of the destination matrix will be filled, and the remaining components will be set to zero.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXBaseEffect::GetMatrix']/*\"/>\t\n            <msdn-id>bb205689</msdn-id>\t\n            <unmanaged>HRESULT ID3DXBaseEffect::GetMatrix([In] D3DXHANDLE hParameter,[Out] D3DXMATRIX* pMatrix)</unmanaged>\t\n            <unmanaged-short>ID3DXBaseEffect::GetMatrix</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseEffect.SetMatrixArray(SharpDX.Direct3D9.EffectHandle,SharpDX.Matrix[],System.Int32)\">\n            <summary>\t\n            <p>Sets an array of nontransposed matrices.</p>\t\n            </summary>\t\n            <param name=\"hParameter\"><dd>  <p>Unique identifier. See Handles (Direct3D 9).</p> </dd></param>\t\n            <param name=\"matrixRef\"><dd>  <p>Array of nontransposed matrices. See <strong><see cref=\"T:SharpDX.Matrix\"/></strong>.</p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>Number of matrices in the array.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>A nontransposed matrix contains row-major data; that is, each vector is contained in a row.</p><p>If the destination matrices are smaller than the source matrices, the additional components of the source matrices will be ignored.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXBaseEffect::SetMatrixArray']/*\"/>\t\n            <msdn-id>bb205721</msdn-id>\t\n            <unmanaged>HRESULT ID3DXBaseEffect::SetMatrixArray([In] D3DXHANDLE hParameter,[In, Buffer] const D3DXMATRIX* pMatrix,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3DXBaseEffect::SetMatrixArray</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseEffect.GetMatrixArray(SharpDX.Direct3D9.EffectHandle,SharpDX.Matrix[],System.Int32)\">\n            <summary>\t\n            <p>Gets an array of nontransposed matrices.</p>\t\n            </summary>\t\n            <param name=\"hParameter\"><dd>  <p>Unique identifier. See Handles (Direct3D 9).</p> </dd></param>\t\n            <param name=\"matrixRef\"><dd>  <p>Returns an array of nontransposed matrices. See <strong><see cref=\"T:SharpDX.Matrix\"/></strong>.</p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>Number of matrices in the array.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>A nontransposed matrix contains row-major data; that is, each vector is contained in a row.</p><p>If the destination matrices are larger than the source matrices, only the upper-left components of each destination matrix will be filled, and the remaining destination matrix components will be set to zero.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXBaseEffect::GetMatrixArray']/*\"/>\t\n            <msdn-id>bb205690</msdn-id>\t\n            <unmanaged>HRESULT ID3DXBaseEffect::GetMatrixArray([In] D3DXHANDLE hParameter,[Out, Buffer] D3DXMATRIX* pMatrix,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3DXBaseEffect::GetMatrixArray</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseEffect.SetMatrixPointerArray(SharpDX.Direct3D9.EffectHandle,SharpDX.Matrix@,System.Int32)\">\n            <summary>\t\n            <p>Sets an array of references to nontransposed matrices.</p>\t\n            </summary>\t\n            <param name=\"hParameter\"><dd>  <p>Unique identifier. See Handles (Direct3D 9).</p> </dd></param>\t\n            <param name=\"matrixOut\"><dd>  <p>Array of references to nontransposed matrices. See <strong><see cref=\"T:SharpDX.Matrix\"/></strong>.</p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>Number of matrices in the array.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>A nontransposed matrix contains row-major data; that is, each vector is contained in a row.</p><p>If the destination matrices are smaller than the source matrices, the additional components of the source matrices will be ignored.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXBaseEffect::SetMatrixPointerArray']/*\"/>\t\n            <msdn-id>bb205722</msdn-id>\t\n            <unmanaged>HRESULT ID3DXBaseEffect::SetMatrixPointerArray([In] D3DXHANDLE hParameter,[In] const D3DXMATRIX** ppMatrix,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3DXBaseEffect::SetMatrixPointerArray</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseEffect.GetMatrixPointerArray(SharpDX.Direct3D9.EffectHandle,SharpDX.Matrix@,System.Int32)\">\n            <summary>\t\n            <p>Gets an array of references to nontransposed matrices.</p>\t\n            </summary>\t\n            <param name=\"hParameter\"><dd>  <p>Unique identifier. See Handles (Direct3D 9).</p> </dd></param>\t\n            <param name=\"matrixOut\"><dd>  <p>Array of references to nontransposed matrices. See <strong><see cref=\"T:SharpDX.Matrix\"/></strong>.</p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>Number of matrices in the array.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>A nontransposed matrix contains row-major data; that is, each vector is contained in a row.</p><p>If the destination matrices are larger than the source matrices, only the upper-left components of each destination matrix will be filled, and the remaining destination matrix components will be set to zero.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXBaseEffect::GetMatrixPointerArray']/*\"/>\t\n            <msdn-id>bb205691</msdn-id>\t\n            <unmanaged>HRESULT ID3DXBaseEffect::GetMatrixPointerArray([In] D3DXHANDLE hParameter,[Out] D3DXMATRIX** ppMatrix,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3DXBaseEffect::GetMatrixPointerArray</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseEffect.SetMatrixTranspose(SharpDX.Direct3D9.EffectHandle,SharpDX.Matrix@)\">\n            <summary>\t\n            <p>Sets a transposed matrix.</p>\t\n            </summary>\t\n            <param name=\"hParameter\"><dd>  <p>Unique identifier. See Handles (Direct3D 9).</p> </dd></param>\t\n            <param name=\"matrixRef\"><dd>  <p>Pointer to a transposed matrix. See <strong><see cref=\"T:SharpDX.Matrix\"/></strong>.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>A transposed matrix contains column-major data; that is, each vector is contained in a column.</p><p>If the destination matrix is smaller than the source matrix, the additional components of the source matrix will be ignored.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXBaseEffect::SetMatrixTranspose']/*\"/>\t\n            <msdn-id>bb205723</msdn-id>\t\n            <unmanaged>HRESULT ID3DXBaseEffect::SetMatrixTranspose([In] D3DXHANDLE hParameter,[In] const D3DXMATRIX* pMatrix)</unmanaged>\t\n            <unmanaged-short>ID3DXBaseEffect::SetMatrixTranspose</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseEffect.GetMatrixTranspose(SharpDX.Direct3D9.EffectHandle,SharpDX.Matrix@)\">\n            <summary>\t\n            <p>Gets a transposed matrix.</p>\t\n            </summary>\t\n            <param name=\"hParameter\"><dd>  <p>Unique identifier. See Handles (Direct3D 9).</p> </dd></param>\t\n            <param name=\"matrixRef\"><dd>  <p>Returns a transposed matrix. See <strong><see cref=\"T:SharpDX.Matrix\"/></strong>.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>A transposed matrix contains column-major data; that is, each vector is contained in a column.</p><p>If the destination matrix is larger than the source matrix, only the upper-left elements of the destination matrix will be filled, and the remaining destination matrix components will be set to zero.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXBaseEffect::GetMatrixTranspose']/*\"/>\t\n            <msdn-id>bb205692</msdn-id>\t\n            <unmanaged>HRESULT ID3DXBaseEffect::GetMatrixTranspose([In] D3DXHANDLE hParameter,[Out] D3DXMATRIX* pMatrix)</unmanaged>\t\n            <unmanaged-short>ID3DXBaseEffect::GetMatrixTranspose</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseEffect.SetMatrixTransposeArray(SharpDX.Direct3D9.EffectHandle,SharpDX.Matrix[],System.Int32)\">\n            <summary>\t\n            <p>Sets an array of transposed matrices.</p>\t\n            </summary>\t\n            <param name=\"hParameter\"><dd>  <p>Unique identifier. See Handles (Direct3D 9).</p> </dd></param>\t\n            <param name=\"matrixRef\"><dd>  <p>Array of transposed matrices. See <strong><see cref=\"T:SharpDX.Matrix\"/></strong>.</p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>Number of matrices in the array.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>A transposed matrix contains column-major data; that is, each vector is contained in a column.</p><p>If the destination matrices are smaller than the source matrices, the additional components of the source matrices will be ignored.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXBaseEffect::SetMatrixTransposeArray']/*\"/>\t\n            <msdn-id>bb205724</msdn-id>\t\n            <unmanaged>HRESULT ID3DXBaseEffect::SetMatrixTransposeArray([In] D3DXHANDLE hParameter,[In, Buffer] const D3DXMATRIX* pMatrix,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3DXBaseEffect::SetMatrixTransposeArray</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseEffect.GetMatrixTransposeArray(SharpDX.Direct3D9.EffectHandle,SharpDX.Matrix[],System.Int32)\">\n            <summary>\t\n            <p>Gets an array of transposed matrices.</p>\t\n            </summary>\t\n            <param name=\"hParameter\"><dd>  <p>Unique identifier. See Handles (Direct3D 9).</p> </dd></param>\t\n            <param name=\"matrixRef\"><dd>  <p>Returns an array of transposed matrices. See <strong><see cref=\"T:SharpDX.Matrix\"/></strong>.</p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>Number of matrices in the array.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>A transposed matrix contains column-major data; that is, each vector is contained in a column.</p><p>If the destination matrices are larger than the source matrices, only the upper-left components of each destination matrix will be filled, and the remaining destination matrix components will be set to zero.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXBaseEffect::GetMatrixTransposeArray']/*\"/>\t\n            <msdn-id>bb205693</msdn-id>\t\n            <unmanaged>HRESULT ID3DXBaseEffect::GetMatrixTransposeArray([In] D3DXHANDLE hParameter,[Out, Buffer] D3DXMATRIX* pMatrix,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3DXBaseEffect::GetMatrixTransposeArray</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseEffect.SetMatrixTransposePointerArray(SharpDX.Direct3D9.EffectHandle,SharpDX.Matrix@,System.Int32)\">\n            <summary>\t\n            <p>Sets an array of references to transposed matrices.</p>\t\n            </summary>\t\n            <param name=\"hParameter\"><dd>  <p>Unique identifier. See Handles (Direct3D 9).</p> </dd></param>\t\n            <param name=\"matrixOut\"><dd>  <p>Array of references to transposed matrices. See <strong><see cref=\"T:SharpDX.Matrix\"/></strong>.</p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>Number of matrices in the array.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>A transposed matrix contains column-major data; that is, each vector is contained in a column.</p><p>If the destination matrices are smaller than the source matrices, the additional components of the source matrices will be ignored.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXBaseEffect::SetMatrixTransposePointerArray']/*\"/>\t\n            <msdn-id>bb205725</msdn-id>\t\n            <unmanaged>HRESULT ID3DXBaseEffect::SetMatrixTransposePointerArray([In] D3DXHANDLE hParameter,[In] const D3DXMATRIX** ppMatrix,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3DXBaseEffect::SetMatrixTransposePointerArray</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseEffect.GetMatrixTransposePointerArray(SharpDX.Direct3D9.EffectHandle,SharpDX.Matrix@,System.Int32)\">\n            <summary>\t\n            <p>Gets an array of references to transposed matrices.</p>\t\n            </summary>\t\n            <param name=\"hParameter\"><dd>  <p>Unique identifier. See Handles (Direct3D 9).</p> </dd></param>\t\n            <param name=\"matrixOut\"><dd>  <p>Array of references to transposed matrices. See <strong><see cref=\"T:SharpDX.Matrix\"/></strong>.</p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>Number of matrices in the array.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>A transposed matrix contains column-major data; that is, each vector is contained in a column.</p><p>If the destination matrices are larger than the source matrices, only the upper-left components of each destination matrix will be filled, and the remaining destination matrix components will be set to zero.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXBaseEffect::GetMatrixTransposePointerArray']/*\"/>\t\n            <msdn-id>bb205694</msdn-id>\t\n            <unmanaged>HRESULT ID3DXBaseEffect::GetMatrixTransposePointerArray([In] D3DXHANDLE hParameter,[Out] D3DXMATRIX** ppMatrix,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3DXBaseEffect::GetMatrixTransposePointerArray</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseEffect.SetString(SharpDX.Direct3D9.EffectHandle,System.String)\">\n            <summary>\t\n            <p>Sets a string.</p>\t\n            </summary>\t\n            <param name=\"hParameter\"><dd>  <p>Unique identifier. See Handles (Direct3D 9).</p> </dd></param>\t\n            <param name=\"stringRef\"><dd>  <p>String to set.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXBaseEffect::SetString']/*\"/>\t\n            <msdn-id>bb205726</msdn-id>\t\n            <unmanaged>HRESULT ID3DXBaseEffect::SetString([In] D3DXHANDLE hParameter,[In] const char* pString)</unmanaged>\t\n            <unmanaged-short>ID3DXBaseEffect::SetString</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseEffect.GetString_(SharpDX.Direct3D9.EffectHandle)\">\n            <summary>\t\n            <p>Gets a string.</p>\t\n            </summary>\t\n            <param name=\"hParameter\"><dd>  <p>Unique identifier. See Handles (Direct3D 9).</p> </dd></param>\t\n            <returns><dd>  <p>Returns a string identified by hParameter.</p> </dd></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXBaseEffect::GetString']/*\"/>\t\n            <msdn-id>bb205704</msdn-id>\t\n            <unmanaged>HRESULT ID3DXBaseEffect::GetString([In] D3DXHANDLE hParameter,[Out] const void** ppString)</unmanaged>\t\n            <unmanaged-short>ID3DXBaseEffect::GetString</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseEffect.SetTexture(SharpDX.Direct3D9.EffectHandle,SharpDX.Direct3D9.BaseTexture)\">\n            <summary>\t\n            <p>Sets a texture.</p>\t\n            </summary>\t\n            <param name=\"hParameter\"><dd>  <p>Unique identifier. See Handles (Direct3D 9).</p> </dd></param>\t\n            <param name=\"textureRef\"><dd>  <p>Texture object. See <strong><see cref=\"T:SharpDX.Direct3D9.BaseTexture\"/></strong>.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXBaseEffect::SetTexture']/*\"/>\t\n            <msdn-id>bb205727</msdn-id>\t\n            <unmanaged>HRESULT ID3DXBaseEffect::SetTexture([In] D3DXHANDLE hParameter,[In] IDirect3DBaseTexture9* pTexture)</unmanaged>\t\n            <unmanaged-short>ID3DXBaseEffect::SetTexture</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseEffect.GetTexture(SharpDX.Direct3D9.EffectHandle)\">\n            <summary>\t\n            <p>Gets a texture.</p>\t\n            </summary>\t\n            <param name=\"hParameter\"><dd>  <p>Unique identifier. See Handles (Direct3D 9).</p> </dd></param>\t\n            <returns><dd>  <p>Returns a texture object. See <strong><see cref=\"T:SharpDX.Direct3D9.BaseTexture\"/></strong>.</p> </dd></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXBaseEffect::GetTexture']/*\"/>\t\n            <msdn-id>bb205708</msdn-id>\t\n            <unmanaged>HRESULT ID3DXBaseEffect::GetTexture([In] D3DXHANDLE hParameter,[Out] IDirect3DBaseTexture9** ppTexture)</unmanaged>\t\n            <unmanaged-short>ID3DXBaseEffect::GetTexture</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseEffect.GetPixelShader(SharpDX.Direct3D9.EffectHandle)\">\n            <summary>\t\n            <p>Gets a pixel shader.</p>\t\n            </summary>\t\n            <param name=\"hParameter\"><dd>  <p>Unique identifier. See Handles (Direct3D 9).</p> </dd></param>\t\n            <returns><dd>  <p>Returns a pixel shader object. See <strong><see cref=\"T:SharpDX.Direct3D9.PixelShader\"/></strong> object.</p> </dd></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXBaseEffect::GetPixelShader']/*\"/>\t\n            <msdn-id>bb205703</msdn-id>\t\n            <unmanaged>HRESULT ID3DXBaseEffect::GetPixelShader([In] D3DXHANDLE hParameter,[Out] IDirect3DPixelShader9** ppPShader)</unmanaged>\t\n            <unmanaged-short>ID3DXBaseEffect::GetPixelShader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseEffect.GetVertexShader(SharpDX.Direct3D9.EffectHandle)\">\n            <summary>\t\n            <p>Gets a vertex shader.</p>\t\n            </summary>\t\n            <param name=\"hParameter\"><dd>  <p>Unique identifier. See Handles (Direct3D 9).</p> </dd></param>\t\n            <returns><dd>  <p>Returns a vertex shader object. See <strong><see cref=\"T:SharpDX.Direct3D9.VertexShader\"/></strong>.</p> </dd></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXBaseEffect::GetVertexShader']/*\"/>\t\n            <msdn-id>bb205712</msdn-id>\t\n            <unmanaged>HRESULT ID3DXBaseEffect::GetVertexShader([In] D3DXHANDLE hParameter,[Out] IDirect3DVertexShader9** ppVShader)</unmanaged>\t\n            <unmanaged-short>ID3DXBaseEffect::GetVertexShader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseEffect.SetArrayRange(SharpDX.Direct3D9.EffectHandle,System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Set the range of an array to pass to the device.</p>\t\n            </summary>\t\n            <param name=\"hParameter\"><dd>  <p>Unique identifier. See Handles (Direct3D 9).</p> </dd></param>\t\n            <param name=\"uStart\"><dd>  <p>Start index.</p> </dd></param>\t\n            <param name=\"uEnd\"><dd>  <p>Stop index.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXBaseEffect::SetArrayRange']/*\"/>\t\n            <msdn-id>bb205713</msdn-id>\t\n            <unmanaged>HRESULT ID3DXBaseEffect::SetArrayRange([In] D3DXHANDLE hParameter,[In] unsigned int uStart,[In] unsigned int uEnd)</unmanaged>\t\n            <unmanaged-short>ID3DXBaseEffect::SetArrayRange</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.BaseEffect.Description\">\n            <summary>\t\n            <p>Gets the effect description.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXBaseEffect::GetDesc']/*\"/>\t\n            <msdn-id>bb205681</msdn-id>\t\n            <unmanaged>GetDesc</unmanaged>\t\n            <unmanaged-short>GetDesc</unmanaged-short>\t\n            <unmanaged>HRESULT ID3DXBaseEffect::GetDesc([Out] D3DXEFFECT_DESC* pDesc)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.BaseTexture\">\n            <summary>\t\n            <p>Applications use the methods of the <see cref=\"T:SharpDX.Direct3D9.BaseTexture\"/> interface to manipulate texture resources including cube and volume textures.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The <strong><see cref=\"T:SharpDX.Direct3D9.BaseTexture\"/></strong> interface assigned to a particular stage for a device is obtained by calling the <strong>GetTexture</strong> method.</p><p>The LPDIRECT3DBASETEXTURE9 and PDIRECT3DBASETEXTURE9 types are defined as references to the <strong><see cref=\"T:SharpDX.Direct3D9.BaseTexture\"/></strong> interface. </p><pre><code>typedef struct <see cref=\"T:SharpDX.Direct3D9.BaseTexture\"/> *LPDIRECT3DBASETEXTURE9, *PDIRECT3DBASETEXTURE9;</code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DBaseTexture9']/*\"/>\t\n            <msdn-id>bb174322</msdn-id>\t\n            <unmanaged>IDirect3DBaseTexture9</unmanaged>\t\n            <unmanaged-short>IDirect3DBaseTexture9</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.Resource\">\n            <summary>\t\n            <p>Applications use the methods of the <strong><see cref=\"T:SharpDX.Direct3D9.Resource\"/></strong> interface to query and prepare resources.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>To create a texture resource, you can call one of the following methods.</p><ul> <li> <strong><see cref=\"M:SharpDX.Direct3D9.Device.CreateCubeTexture(System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,SharpDX.Direct3D9.CubeTexture,System.IntPtr)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.Direct3D9.Device.CreateTexture(System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,SharpDX.Direct3D9.Texture,System.IntPtr)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.Direct3D9.Device.CreateVolumeTexture(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,SharpDX.Direct3D9.VolumeTexture,System.IntPtr)\"/></strong> </li> </ul><p>To create a geometry-oriented resource, you can call one of the following methods.</p><ul> <li> <strong><see cref=\"M:SharpDX.Direct3D9.Device.CreateIndexBuffer(System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,SharpDX.Direct3D9.IndexBuffer,System.IntPtr)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.Direct3D9.Device.CreateVertexBuffer(System.Int32,SharpDX.Direct3D9.Usage,SharpDX.Direct3D9.VertexFormat,SharpDX.Direct3D9.Pool,SharpDX.Direct3D9.VertexBuffer,System.IntPtr)\"/></strong> </li> </ul><p>This interface, like all COM interfaces, inherits from the <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interface.</p><p>The LPDIRECT3DRESOURCE9 and PDIRECT3DRESOURCE9 types are defined as references to the <strong><see cref=\"T:SharpDX.Direct3D9.Resource\"/></strong> interface.  </p><pre><code> typedef struct <see cref=\"T:SharpDX.Direct3D9.Resource\"/> *LPDIRECT3DRESOURCE9, *PDIRECT3DRESOURCE9;\t\n            </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DResource9']/*\"/>\t\n            <msdn-id>bb205878</msdn-id>\t\n            <unmanaged>IDirect3DResource9</unmanaged>\t\n            <unmanaged-short>IDirect3DResource9</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Resource.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D9.Resource\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Resource.op_Explicit(System.IntPtr)~SharpDX.Direct3D9.Resource\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D9.Resource\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Resource.GetDevice(SharpDX.Direct3D9.Device@)\">\n            <summary>\t\n            <p>Retrieves the device associated with a resource.</p>\t\n            </summary>\t\n            <param name=\"deviceOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface to fill with the device reference, if the query succeeds. </p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>. </p></returns>\t\n            <remarks>\t\n            <p>This method allows navigation to the owning device object.</p><p>Calling this method will increase the internal reference count on the <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface. Failure to call <strong>IUnknown::Release</strong> when finished using this <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface results in a memory leak.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DResource9::GetDevice']/*\"/>\t\n            <msdn-id>bb205880</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DResource9::GetDevice([Out] IDirect3DDevice9** ppDevice)</unmanaged>\t\n            <unmanaged-short>IDirect3DResource9::GetDevice</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Resource.SetPrivateData(System.Guid,System.IntPtr,System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Associates data with the resource that is intended for use by the application, not by Direct3D. Data is passed by value, and multiple sets of data can be associated with a single resource.</p>\t\n            </summary>\t\n            <param name=\"refguid\"><dd>  <p>Reference to the globally unique identifier that identifies the private data to set.</p> </dd></param>\t\n            <param name=\"dataRef\"><dd>  <p>Pointer to a buffer that contains the data to be associated with the resource. </p> </dd></param>\t\n            <param name=\"sizeOfData\"><dd>  <p>Size of the buffer at pData, in bytes. </p> </dd></param>\t\n            <param name=\"flags\"><dd>  <p>Value that describes the type of data being passed, or indicates to the application that the data should be invalidated when the resource changes. </p> <p></p> <table> <tr><th>Item</th><th>Description</th></tr> <tr><td> <p>(none)</p> </td><td> <p>If no flags are specified, Direct3D allocates memory to hold the data within the buffer and copies the data into the new buffer. The buffer allocated by Direct3D is automatically freed, as appropriate.</p> </td></tr> <tr><td> <p>D3DSPD_IUNKNOWN</p> </td><td> <p>The data at pData is a reference to an <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interface. SizeOfData must be set to the size of a reference to <see cref=\"T:SharpDX.ComObject\"/>, that is, sizeof(<see cref=\"T:SharpDX.ComObject\"/>*). Direct3D automatically callsIUnknown through pData when the private data is destroyed. Private data will be destroyed by a subsequent call to <strong><see cref=\"M:SharpDX.Direct3D9.Resource.SetPrivateData(System.Guid,System.IntPtr,System.Int32,System.Int32)\"/></strong> with the same <see cref=\"T:System.Guid\"/>, a subsequent call to <strong><see cref=\"M:SharpDX.Direct3D9.Resource.FreePrivateData(System.Guid)\"/></strong>, or when the <strong><see cref=\"T:SharpDX.Direct3D9.Direct3D\"/></strong> object is released. For more information, see Remarks.</p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>Direct3D does not manage the memory at pData. If this buffer was dynamically allocated, it is the calling application's responsibility to free the memory.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DResource9::SetPrivateData']/*\"/>\t\n            <msdn-id>bb205886</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DResource9::SetPrivateData([In] const GUID&amp; refguid,[In] const void* pData,[In] unsigned int SizeOfData,[In] unsigned int Flags)</unmanaged>\t\n            <unmanaged-short>IDirect3DResource9::SetPrivateData</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Resource.GetPrivateData(System.Guid,System.IntPtr,System.Int32@)\">\n            <summary>\t\n            <p>Copies the private data associated with the resource to a provided buffer.</p>\t\n            </summary>\t\n            <param name=\"refguid\"><dd>  <p>The globally unique identifier that identifies the private data to retrieve. </p> </dd></param>\t\n            <param name=\"dataRef\"><dd>  <p>Pointer to a previously allocated buffer to fill with the requested private data if the call succeeds. The application calling this method is responsible for allocating and releasing this buffer. If this parameter is <strong><c>null</c></strong>, this method will return the buffer size in pSizeOfData.</p> </dd></param>\t\n            <param name=\"sizeOfDataRef\"><dd>  <p>Pointer to the size of the buffer at  pData, in bytes. If this value is less than the actual size of the private data (such as 0), the method sets this parameter to the required buffer size and the method returns <see cref=\"F:SharpDX.Direct3D9.ResultCode.MoreData\"/>. </p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.MoreData\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.NotFound\"/>.</p></returns>\t\n            <remarks>\t\n            <p>This method is inherited by the following interfaces:  <strong><see cref=\"T:SharpDX.Direct3D9.Resource\"/></strong>,  <strong><see cref=\"T:SharpDX.Direct3D9.BaseTexture\"/></strong>, <strong><see cref=\"T:SharpDX.Direct3D9.CubeTexture\"/></strong>,  <strong><see cref=\"T:SharpDX.Direct3D9.Texture\"/></strong>,  <strong><see cref=\"T:SharpDX.Direct3D9.VolumeTexture\"/></strong>, <strong><see cref=\"T:SharpDX.Direct3D9.IndexBuffer\"/></strong>,  <strong><see cref=\"T:SharpDX.Direct3D9.VertexBuffer\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DResource9::GetPrivateData']/*\"/>\t\n            <msdn-id>bb205882</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DResource9::GetPrivateData([In] const GUID&amp; refguid,[In] void* pData,[InOut] unsigned int* pSizeOfData)</unmanaged>\t\n            <unmanaged-short>IDirect3DResource9::GetPrivateData</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Resource.FreePrivateData(System.Guid)\">\n            <summary>\t\n            <p>Frees the specified private data associated with this resource.</p>\t\n            </summary>\t\n            <param name=\"refguid\"><dd>  <p>Reference to the globally unique identifier that identifies the private data to free.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.NotFound\"/>.</p></returns>\t\n            <remarks>\t\n            <p>Direct3D calls this method automatically when a resource is released.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DResource9::FreePrivateData']/*\"/>\t\n            <msdn-id>bb205879</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DResource9::FreePrivateData([In] const GUID&amp; refguid)</unmanaged>\t\n            <unmanaged-short>IDirect3DResource9::FreePrivateData</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Resource.SetPriority(System.Int32)\">\n            <summary>\t\n            <p>Assigns the priority of a resource for scheduling purposes.</p>\t\n            </summary>\t\n            <param name=\"priorityNew\"><dd>  <p>Priority to assign to a resource. </p> <table> <tr><td> <p>Differences between Direct3D 9 and Direct3D 9 for Windows Vista</p> <p>The priority can be any DWORD value; Direct3D 9 for Windows Vista also supports any of these pre-defined values <strong>D3D9_RESOURCE_PRIORITY</strong>.</p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <returns><p>Returns the previous priority value for the resource.</p></returns>\t\n            <remarks>\t\n            <p>This method is used to change the priority of managed resources (resources created with the <strong><see cref=\"F:SharpDX.Direct3D9.Pool.Managed\"/></strong> flag). This method returns 0 on non-managed resources.</p><p>Priorities are used to determine when managed resources are to be removed from memory. A resource assigned a low priority is removed before a resource with a high priority. If two resources have the same priority, the resource that was used more recently is kept in memory; the other resource is removed. Managed resources have a default priority of 0.</p><p> Windows Vista only - When this method is called using an <strong><see cref=\"T:SharpDX.Direct3D9.Direct3DEx\"/></strong> interface, only resources created with the <strong><see cref=\"F:SharpDX.Direct3D9.Pool.Default\"/></strong> flag will be affected.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DResource9::SetPriority']/*\"/>\t\n            <msdn-id>bb205885</msdn-id>\t\n            <unmanaged>unsigned int IDirect3DResource9::SetPriority([In] unsigned int PriorityNew)</unmanaged>\t\n            <unmanaged-short>IDirect3DResource9::SetPriority</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Resource.GetPriority\">\n            <summary>\t\n            <p>Retrieves the priority for this resource.</p>\t\n            </summary>\t\n            <returns><p>Returns a DWORD value, indicating the priority of the resource.</p></returns>\t\n            <remarks>\t\n            <p><strong><see cref=\"M:SharpDX.Direct3D9.Resource.GetPriority\"/></strong> is used for priority control of managed resources. This method returns 0 on nonmanaged resources.</p><p>Priorities are used to determine when managed resources are to be removed from memory. A resource assigned a low priority is removed before a resource with a high priority. If two resources have the same priority, the resource that was used more recently is kept in memory; the other resource is removed. Managed resources have a default priority of 0.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DResource9::GetPriority']/*\"/>\t\n            <msdn-id>bb205881</msdn-id>\t\n            <unmanaged>unsigned int IDirect3DResource9::GetPriority()</unmanaged>\t\n            <unmanaged-short>IDirect3DResource9::GetPriority</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Resource.PreLoad\">\n            <summary>\t\n            <p>Preloads a managed resource.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Calling this method indicates that the application will need this managed resource shortly. This method has no effect on nonmanaged resources.</p><p><strong><see cref=\"M:SharpDX.Direct3D9.Resource.PreLoad\"/></strong> detects \"thrashing\" conditions where more resources are being used in each frame than can fit in video memory simultaneously. Under such circumstances <strong><see cref=\"M:SharpDX.Direct3D9.Resource.PreLoad\"/></strong> silently does nothing.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DResource9::PreLoad']/*\"/>\t\n            <msdn-id>bb205884</msdn-id>\t\n            <unmanaged>void IDirect3DResource9::PreLoad()</unmanaged>\t\n            <unmanaged-short>IDirect3DResource9::PreLoad</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Resource.GetTypeInfo\">\n            <summary>\t\n            <p>Returns the type of the resource.</p>\t\n            </summary>\t\n            <returns><p>Returns a member of the <strong><see cref=\"T:SharpDX.Direct3D9.ResourceType\"/></strong> enumerated type, identifying the type of the resource.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DResource9::GetType']/*\"/>\t\n            <msdn-id>bb205883</msdn-id>\t\n            <unmanaged>D3DRESOURCETYPE IDirect3DResource9::GetType()</unmanaged>\t\n            <unmanaged-short>IDirect3DResource9::GetType</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.Resource.Device\">\n            <summary>\t\n            <p>Retrieves the device associated with a resource.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This method allows navigation to the owning device object.</p><p>Calling this method will increase the internal reference count on the <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface. Failure to call <strong>IUnknown::Release</strong> when finished using this <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface results in a memory leak.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DResource9::GetDevice']/*\"/>\t\n            <msdn-id>bb205880</msdn-id>\t\n            <unmanaged>GetDevice</unmanaged>\t\n            <unmanaged-short>GetDevice</unmanaged-short>\t\n            <unmanaged>HRESULT IDirect3DResource9::GetDevice([Out] IDirect3DDevice9** ppDevice)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.Resource.Priority\">\n            <summary>\t\n            <p>Retrieves the priority for this resource.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p><strong><see cref=\"M:SharpDX.Direct3D9.Resource.GetPriority\"/></strong> is used for priority control of managed resources. This method returns 0 on nonmanaged resources.</p><p>Priorities are used to determine when managed resources are to be removed from memory. A resource assigned a low priority is removed before a resource with a high priority. If two resources have the same priority, the resource that was used more recently is kept in memory; the other resource is removed. Managed resources have a default priority of 0.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DResource9::GetPriority']/*\"/>\t\n            <msdn-id>bb205881</msdn-id>\t\n            <unmanaged>GetPriority</unmanaged>\t\n            <unmanaged-short>GetPriority</unmanaged-short>\t\n            <unmanaged>unsigned int IDirect3DResource9::GetPriority()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.Resource.TypeInfo\">\n            <summary>\t\n            <p>Returns the type of the resource.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DResource9::GetType']/*\"/>\t\n            <msdn-id>bb205883</msdn-id>\t\n            <unmanaged>GetType</unmanaged>\t\n            <unmanaged-short>GetType</unmanaged-short>\t\n            <unmanaged>D3DRESOURCETYPE IDirect3DResource9::GetType()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.Resource.DebugName\">\n            <summary>\n            Gets or sets the debug-name for this object.\n            </summary>\n            <value>\n            The debug name.\n            </value>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseTexture.FilterTexture(System.Int32,SharpDX.Direct3D9.Filter)\">\n            <summary>\n            Filters mipmap levels of a texture.\n            </summary>\n            <param name=\"sourceLevel\">The source level.</param>\n            <param name=\"filter\">The filter.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT D3DXFilterTexture([In] IDirect3DBaseTexture9* pBaseTexture,[In, Buffer] const PALETTEENTRY* pPalette,[In] unsigned int SrcLevel,[In] D3DX_FILTER Filter)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseTexture.FilterTexture(System.Int32,SharpDX.Direct3D9.Filter,SharpDX.Direct3D9.PaletteEntry[])\">\n            <summary>\n            Filters mipmap levels of a texture.\n            </summary>\n            <param name=\"sourceLevel\">The source level.</param>\n            <param name=\"filter\">The filter.</param>\n            <param name=\"palette\">The palette.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT D3DXFilterTexture([In] IDirect3DBaseTexture9* pBaseTexture,[In, Buffer] const PALETTEENTRY* pPalette,[In] unsigned int SrcLevel,[In] D3DX_FILTER Filter)</unmanaged>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseTexture.ToFile(SharpDX.Direct3D9.BaseTexture,System.String,SharpDX.Direct3D9.ImageFileFormat)\">\n            <summary>\n            Saves a texture to a file.\n            </summary>\n            <param name=\"texture\">The texture.</param>\n            <param name=\"fileName\">Name of the file.</param>\n            <param name=\"format\">The format.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT D3DXSaveTextureToFileW([In] const wchar_t* pDestFile,[In] D3DXIMAGE_FILEFORMAT DestFormat,[In] IDirect3DBaseTexture9* pSrcTexture,[In, Buffer] const PALETTEENTRY* pSrcPalette)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseTexture.ToFile(SharpDX.Direct3D9.BaseTexture,System.String,SharpDX.Direct3D9.ImageFileFormat,SharpDX.Direct3D9.PaletteEntry[])\">\n            <summary>\n            Saves a texture to a file.\n            </summary>\n            <param name=\"texture\">The texture.</param>\n            <param name=\"fileName\">Name of the file.</param>\n            <param name=\"format\">The format.</param>\n            <param name=\"palette\">The palette.</param>\n            <returns>A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.</returns>\n            <unmanaged>HRESULT D3DXSaveTextureToFileW([In] const wchar_t* pDestFile,[In] D3DXIMAGE_FILEFORMAT DestFormat,[In] IDirect3DBaseTexture9* pSrcTexture,[In, Buffer] const PALETTEENTRY* pSrcPalette)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseTexture.ToStream(SharpDX.Direct3D9.BaseTexture,SharpDX.Direct3D9.ImageFileFormat)\">\n            <summary>\n            Saves a texture to a stream.\n            </summary>\n            <param name=\"texture\">The texture.</param>\n            <param name=\"format\">The format.</param>\n            <returns>A <see cref=\"T:SharpDX.DataStream\"/> containing the saved texture.</returns>\n            <unmanaged>HRESULT D3DXSaveTextureToFileInMemory([Out] ID3DXBuffer** ppDestBuf,[In] D3DXIMAGE_FILEFORMAT DestFormat,[In] IDirect3DBaseTexture9* pSrcTexture,[In, Buffer] const PALETTEENTRY* pSrcPalette)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseTexture.ToStream(SharpDX.Direct3D9.BaseTexture,SharpDX.Direct3D9.ImageFileFormat,SharpDX.Direct3D9.PaletteEntry[])\">\n            <summary>\n            Saves a texture to a stream.\n            </summary>\n            <param name=\"texture\">The texture.</param>\n            <param name=\"format\">The format.</param>\n            <param name=\"palette\">The palette.</param>\n            <returns>A <see cref=\"T:SharpDX.DataStream\"/> containing the saved texture.</returns>\n            <unmanaged>HRESULT D3DXSaveTextureToFileInMemory([Out] ID3DXBuffer** ppDestBuf,[In] D3DXIMAGE_FILEFORMAT DestFormat,[In] IDirect3DBaseTexture9* pSrcTexture,[In, Buffer] const PALETTEENTRY* pSrcPalette)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseTexture.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D9.BaseTexture\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseTexture.op_Explicit(System.IntPtr)~SharpDX.Direct3D9.BaseTexture\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D9.BaseTexture\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseTexture.SetLOD(System.Int32)\">\n            <summary>\t\n            <p>Sets the most detailed level-of-detail for a managed texture. </p>\t\n            </summary>\t\n            <param name=\"lODNew\"><dd>  <p>Most detailed level-of-detail value to set for the mipmap chain. </p> </dd></param>\t\n            <returns><p>A DWORD value, clamped to the maximum level-of-detail value (one less than the total number of levels). Subsequent calls to this method will return the clamped value, not the level-of-detail value that was previously set.</p></returns>\t\n            <remarks>\t\n            <p>This method applies to the following interfaces, which inherit from <strong><see cref=\"T:SharpDX.Direct3D9.BaseTexture\"/></strong>.</p><ul> <li> <strong><see cref=\"T:SharpDX.Direct3D9.CubeTexture\"/></strong> </li> <li> <strong><see cref=\"T:SharpDX.Direct3D9.Texture\"/></strong> </li> <li> <strong><see cref=\"T:SharpDX.Direct3D9.VolumeTexture\"/></strong> </li> <li> <strong><see cref=\"T:SharpDX.Direct3D9.Resource\"/></strong> </li> </ul><p><strong>SetLOD</strong> is used for level-of-detail control of managed textures. This method returns 0 on nonmanaged textures.</p><p><strong>SetLOD</strong> communicates to the Direct3D texture manager the most detailed mipmap in the chain that should be loaded into local video memory. For example, in a five-level mipmap chain, setting LODNew to 2 indicates that the texture manager should load only mipmap levels 2 through 4 into local video memory at any given time. </p><p>More specifically, if the texture was created with the dimensions of 256x256, setting the most detailed level to 0 indicates that 256 x 256 is the largest mipmap available, setting the most detailed level to 1 indicates that 128 x 128 is the largest mipmap available, and so on, up to the most detailed mip level (the smallest texture size) for the chain.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DBaseTexture9::SetLOD']/*\"/>\t\n            <msdn-id>bb174328</msdn-id>\t\n            <unmanaged>unsigned int IDirect3DBaseTexture9::SetLOD([In] unsigned int LODNew)</unmanaged>\t\n            <unmanaged-short>IDirect3DBaseTexture9::SetLOD</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseTexture.GetLOD\">\n            <summary>\t\n            <p>Returns a value clamped to the maximum level-of-detail set for a managed texture (this method is not supported for an unmanaged texture).</p>\t\n            </summary>\t\n            <returns><p>A DWORD value, clamped to the maximum level-of-detail value (one less than the total number of levels). Calling <strong>GetLOD</strong> on an unmanaged texture is not supported and will result in a D3DERR error code being returned.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DBaseTexture9::GetLOD']/*\"/>\t\n            <msdn-id>bb174326</msdn-id>\t\n            <unmanaged>unsigned int IDirect3DBaseTexture9::GetLOD()</unmanaged>\t\n            <unmanaged-short>IDirect3DBaseTexture9::GetLOD</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseTexture.GetLevelCount\">\n            <summary>\t\n            <p>Returns the number of texture levels in a multilevel texture.</p>\t\n            </summary>\t\n            <returns><p>A DWORD value indicating the number of texture levels in a multilevel texture.</p></returns>\t\n            <remarks>\t\n            <p>This method applies to the following interfaces, which inherit from <strong><see cref=\"T:SharpDX.Direct3D9.BaseTexture\"/></strong>.</p><ul> <li> <strong><see cref=\"T:SharpDX.Direct3D9.CubeTexture\"/></strong> </li> <li> <strong><see cref=\"T:SharpDX.Direct3D9.Texture\"/></strong> </li> <li> <strong><see cref=\"T:SharpDX.Direct3D9.VolumeTexture\"/></strong> </li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DBaseTexture9::GetLevelCount']/*\"/>\t\n            <msdn-id>bb174325</msdn-id>\t\n            <unmanaged>unsigned int IDirect3DBaseTexture9::GetLevelCount()</unmanaged>\t\n            <unmanaged-short>IDirect3DBaseTexture9::GetLevelCount</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseTexture.SetAutoMipGenerationFilter(SharpDX.Direct3D9.TextureFilter)\">\n            <summary>\t\n            <p>Set the filter type that is used for automatically generated mipmap sublevels.</p>\t\n            </summary>\t\n            <param name=\"filterType\"><dd>  <p>Filter type. See <strong><see cref=\"T:SharpDX.Direct3D9.TextureFilter\"/></strong>. This method will fail if the filter type is invalid or not supported.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>. </p></returns>\t\n            <remarks>\t\n            <p>Changing the filter type \"dirties\" the mipmap sublevels and causes them to be regenerated.</p><p>The (default) filter type set at texture creation time is <see cref=\"F:SharpDX.Direct3D9.TextureFilter.Linear\"/>. If the driver does not support a linear filter, the filter type will be set to <see cref=\"F:SharpDX.Direct3D9.TextureFilter.Point\"/>. All filter types supported by the driver for regular texture filtering are supported for autogeneration except <see cref=\"F:SharpDX.Direct3D9.TextureFilter.None\"/>. <strong>SetAutoGenFilterType</strong> will fail unless the driver sets the appropriate D3DPTFILTERCAPS_MINFxxx caps. These values are specified in the TextureFilterCaps and/or  CubeTextureFilterCaps members of <strong><see cref=\"T:SharpDX.Direct3D9.Capabilities\"/></strong>.  For more information about texture filter types, see <strong><see cref=\"T:SharpDX.Direct3D9.TextureFilter\"/></strong>.</p><p>This method has no effect if the texture is not created with <see cref=\"F:SharpDX.Direct3D9.Usage.AutoGenerateMipMap\"/>. In this case, no failure is returned. For more information about usage constants, see <see cref=\"T:SharpDX.Direct3D9.Usage\"/>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DBaseTexture9::SetAutoGenFilterType']/*\"/>\t\n            <msdn-id>bb174327</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DBaseTexture9::SetAutoGenFilterType([In] D3DTEXTUREFILTERTYPE FilterType)</unmanaged>\t\n            <unmanaged-short>IDirect3DBaseTexture9::SetAutoGenFilterType</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseTexture.GetAutoMipGenerationFilter\">\n            <summary>\t\n            <p>Get the filter type that is used for automatically generated mipmap sublevels.</p>\t\n            </summary>\t\n            <returns><p>Filter type. See <strong><see cref=\"T:SharpDX.Direct3D9.TextureFilter\"/></strong>. A texture must be created with <see cref=\"F:SharpDX.Direct3D9.Usage.AutoGenerateMipMap\"/> to use this method. Any other usage value will cause this method to return <see cref=\"F:SharpDX.Direct3D9.TextureFilter.None\"/>. </p></returns>\t\n            <remarks>\t\n            <p>Changing the filter type \"dirties\" the mipmap sublevels and causes them to be regenerated.</p><p>The (default) filter type set at texture creation time is <see cref=\"F:SharpDX.Direct3D9.TextureFilter.Linear\"/>. If the driver doesn't support a linear filter, the filter type will be set to <see cref=\"F:SharpDX.Direct3D9.TextureFilter.Point\"/>. All filter types supported by the driver for regular texture filtering are supported for autogeneration except <see cref=\"F:SharpDX.Direct3D9.TextureFilter.None\"/>. For each resource type, drivers should support all the filter types reported in the corresponding texture, CubeTexture, and volumetexture filter caps. For more information about texture types, see <strong><see cref=\"T:SharpDX.Direct3D9.TextureFilter\"/></strong>.</p><p>This method has no effect if the texture is not created with <see cref=\"F:SharpDX.Direct3D9.Usage.AutoGenerateMipMap\"/>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DBaseTexture9::GetAutoGenFilterType']/*\"/>\t\n            <msdn-id>bb174324</msdn-id>\t\n            <unmanaged>D3DTEXTUREFILTERTYPE IDirect3DBaseTexture9::GetAutoGenFilterType()</unmanaged>\t\n            <unmanaged-short>IDirect3DBaseTexture9::GetAutoGenFilterType</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseTexture.GenerateMipSubLevels\">\n            <summary>\t\n            <p>Generate mipmap sublevels.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>An application can generate mipmap sublevels at any time by calling <strong>GenerateMipSubLevels</strong>. To have mipmap sublevels generated automatically at texture creation time (see Automatic Generation of Mipmaps (Direct3D 9)), specify  <see cref=\"F:SharpDX.Direct3D9.Usage.AutoGenerateMipMap\"/> during <strong>CreateTexture</strong>, <strong>CreateCubeTexture</strong>, and <strong>CreateVolumeTexture</strong>. For more information about usage constants, see <see cref=\"T:SharpDX.Direct3D9.Usage\"/>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DBaseTexture9::GenerateMipSubLevels']/*\"/>\t\n            <msdn-id>bb174323</msdn-id>\t\n            <unmanaged>void IDirect3DBaseTexture9::GenerateMipSubLevels()</unmanaged>\t\n            <unmanaged-short>IDirect3DBaseTexture9::GenerateMipSubLevels</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.BaseTexture.LevelOfDetails\">\n            <summary>\n            Gets or sets the level of details.\n            </summary>\n            <value>\n            The level of details.\n            </value>\n            <unmanaged>unsigned int IDirect3DBaseTexture9::GetLOD()</unmanaged>\n            <unmanaged>unsigned int IDirect3DBaseTexture9::SetLOD([In] unsigned int LODNew)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.BaseTexture.LevelCount\">\n            <summary>\t\n            <p>Returns the number of texture levels in a multilevel texture.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This method applies to the following interfaces, which inherit from <strong><see cref=\"T:SharpDX.Direct3D9.BaseTexture\"/></strong>.</p><ul> <li> <strong><see cref=\"T:SharpDX.Direct3D9.CubeTexture\"/></strong> </li> <li> <strong><see cref=\"T:SharpDX.Direct3D9.Texture\"/></strong> </li> <li> <strong><see cref=\"T:SharpDX.Direct3D9.VolumeTexture\"/></strong> </li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DBaseTexture9::GetLevelCount']/*\"/>\t\n            <msdn-id>bb174325</msdn-id>\t\n            <unmanaged>GetLevelCount</unmanaged>\t\n            <unmanaged-short>GetLevelCount</unmanaged-short>\t\n            <unmanaged>unsigned int IDirect3DBaseTexture9::GetLevelCount()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.BaseTexture.AutoMipGenerationFilter\">\n            <summary>\t\n            <p>Get or sets the filter type that is used for automatically generated mipmap sublevels.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Changing the filter type \"dirties\" the mipmap sublevels and causes them to be regenerated.</p><p>The (default) filter type set at texture creation time is <see cref=\"F:SharpDX.Direct3D9.TextureFilter.Linear\"/>. If the driver doesn't support a linear filter, the filter type will be set to <see cref=\"F:SharpDX.Direct3D9.TextureFilter.Point\"/>. All filter types supported by the driver for regular texture filtering are supported for autogeneration except <see cref=\"F:SharpDX.Direct3D9.TextureFilter.None\"/>. For each resource type, drivers should support all the filter types reported in the corresponding texture, CubeTexture, and volumetexture filter caps. For more information about texture types, see <strong><see cref=\"T:SharpDX.Direct3D9.TextureFilter\"/></strong>.</p><p>This method has no effect if the texture is not created with <see cref=\"F:SharpDX.Direct3D9.Usage.AutoGenerateMipMap\"/>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DBaseTexture9::GetAutoGenFilterType']/*\"/>\t\n            <msdn-id>bb174324</msdn-id>\t\n            <unmanaged>GetAutoGenFilterType / SetAutoGenFilterType</unmanaged>\t\n            <unmanaged-short>GetAutoGenFilterType</unmanaged-short>\t\n            <unmanaged>D3DTEXTUREFILTERTYPE IDirect3DBaseTexture9::GetAutoGenFilterType()</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.BoneCombination\">\n            <summary>\t\n            <p>Describes a subset of the mesh that has the same attribute and bone combination.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The subset of the mesh described by <strong><see cref=\"T:SharpDX.Direct3D9.BoneCombination\"/></strong> can be rendered in a single drawing call.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXBONECOMBINATION']/*\"/>\t\n            <msdn-id>bb172712</msdn-id>\t\n            <unmanaged>D3DXBONECOMBINATION</unmanaged>\t\n            <unmanaged-short>D3DXBONECOMBINATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.BoneCombination.BoneIds\">\n            <summary>\n            Get the bone identifiers.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.BoneCombination.AttribId\">\n            <summary>\t\n            <dd> <p>Attribute table identifier.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXBONECOMBINATION::AttribId']/*\"/>\t\n            <msdn-id>bb172712</msdn-id>\t\n            <unmanaged>unsigned int AttribId</unmanaged>\t\n            <unmanaged-short>unsigned int AttribId</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.BoneCombination.FaceStart\">\n            <summary>\t\n            <dd> <p>Starting face.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXBONECOMBINATION::FaceStart']/*\"/>\t\n            <msdn-id>bb172712</msdn-id>\t\n            <unmanaged>unsigned int FaceStart</unmanaged>\t\n            <unmanaged-short>unsigned int FaceStart</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.BoneCombination.FaceCount\">\n            <summary>\t\n            <dd> <p>Face count.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXBONECOMBINATION::FaceCount']/*\"/>\t\n            <msdn-id>bb172712</msdn-id>\t\n            <unmanaged>unsigned int FaceCount</unmanaged>\t\n            <unmanaged-short>unsigned int FaceCount</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.BoneCombination.VertexStart\">\n            <summary>\t\n            <dd> <p>Starting vertex.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXBONECOMBINATION::VertexStart']/*\"/>\t\n            <msdn-id>bb172712</msdn-id>\t\n            <unmanaged>unsigned int VertexStart</unmanaged>\t\n            <unmanaged-short>unsigned int VertexStart</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.BoneCombination.VertexCount\">\n            <summary>\t\n            <dd> <p>Vertex count.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXBONECOMBINATION::VertexCount']/*\"/>\t\n            <msdn-id>bb172712</msdn-id>\t\n            <unmanaged>unsigned int VertexCount</unmanaged>\t\n            <unmanaged-short>unsigned int VertexCount</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.BoneCombination.BonedIdsPointer\">\n            <summary>\t\n            <dd> <p>Pointer to an array of values that identify each of the bones that can be drawn in a single drawing call.  Note that the array can be of variable length to accommodate variable length bone combinations of <strong>ConvertToIndexedBlendedMesh</strong>.  </p> <p>The size of the array varies based on the type of mesh generated. A non-indexed mesh array size is equal to the number of weights per  vertex (pMaxVertexInfl in <strong>ConvertToBlendedMesh</strong>). An indexed mesh array size is equal to the number of bone matrix  palette entries (paletteSize in <strong>ConvertToIndexedBlendedMesh</strong>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXBONECOMBINATION::BoneId']/*\"/>\t\n            <msdn-id>bb172712</msdn-id>\t\n            <unmanaged>unsigned int* BoneId</unmanaged>\t\n            <unmanaged-short>unsigned int BoneId</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.Capabilities\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS9']/*\"/>\t\n            <unmanaged>D3DCAPS9</unmanaged>\t\n            <unmanaged-short>D3DCAPS9</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Capabilities.DeviceType\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS9::DeviceType']/*\"/>\t\n            <unmanaged>D3DDEVTYPE DeviceType</unmanaged>\t\n            <unmanaged-short>D3DDEVTYPE DeviceType</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Capabilities.AdapterOrdinal\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS9::AdapterOrdinal']/*\"/>\t\n            <unmanaged>unsigned int AdapterOrdinal</unmanaged>\t\n            <unmanaged-short>unsigned int AdapterOrdinal</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Capabilities.Caps\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS9::Caps']/*\"/>\t\n            <unmanaged>D3DCAPS Caps</unmanaged>\t\n            <unmanaged-short>D3DCAPS Caps</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Capabilities.Caps2\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS9::Caps2']/*\"/>\t\n            <unmanaged>D3DCAPS2 Caps2</unmanaged>\t\n            <unmanaged-short>D3DCAPS2 Caps2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Capabilities.Caps3\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS9::Caps3']/*\"/>\t\n            <unmanaged>D3DCAPS3 Caps3</unmanaged>\t\n            <unmanaged-short>D3DCAPS3 Caps3</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Capabilities.PresentationIntervals\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS9::PresentationIntervals']/*\"/>\t\n            <unmanaged>D3DPRESENT_INTERVAL PresentationIntervals</unmanaged>\t\n            <unmanaged-short>D3DPRESENT_INTERVAL PresentationIntervals</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Capabilities.CursorCaps\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS9::CursorCaps']/*\"/>\t\n            <unmanaged>D3DCURSORCAPS CursorCaps</unmanaged>\t\n            <unmanaged-short>D3DCURSORCAPS CursorCaps</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Capabilities.DeviceCaps\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS9::DevCaps']/*\"/>\t\n            <unmanaged>D3DDEVCAPS DevCaps</unmanaged>\t\n            <unmanaged-short>D3DDEVCAPS DevCaps</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Capabilities.PrimitiveMiscCaps\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS9::PrimitiveMiscCaps']/*\"/>\t\n            <unmanaged>D3DPMISCCAPS PrimitiveMiscCaps</unmanaged>\t\n            <unmanaged-short>D3DPMISCCAPS PrimitiveMiscCaps</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Capabilities.RasterCaps\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS9::RasterCaps']/*\"/>\t\n            <unmanaged>D3DPRASTERCAPS RasterCaps</unmanaged>\t\n            <unmanaged-short>D3DPRASTERCAPS RasterCaps</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Capabilities.DepthCompareCaps\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS9::ZCmpCaps']/*\"/>\t\n            <unmanaged>D3DPCMPCAPS ZCmpCaps</unmanaged>\t\n            <unmanaged-short>D3DPCMPCAPS ZCmpCaps</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Capabilities.SourceBlendCaps\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS9::SrcBlendCaps']/*\"/>\t\n            <unmanaged>D3DPBLENDCAPS SrcBlendCaps</unmanaged>\t\n            <unmanaged-short>D3DPBLENDCAPS SrcBlendCaps</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Capabilities.DestinationBlendCaps\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS9::DestBlendCaps']/*\"/>\t\n            <unmanaged>D3DPBLENDCAPS DestBlendCaps</unmanaged>\t\n            <unmanaged-short>D3DPBLENDCAPS DestBlendCaps</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Capabilities.AlpaCompareCaps\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS9::AlphaCmpCaps']/*\"/>\t\n            <unmanaged>D3DPCMPCAPS AlphaCmpCaps</unmanaged>\t\n            <unmanaged-short>D3DPCMPCAPS AlphaCmpCaps</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Capabilities.ShadeCaps\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS9::ShadeCaps']/*\"/>\t\n            <unmanaged>D3DPSHADECAPS ShadeCaps</unmanaged>\t\n            <unmanaged-short>D3DPSHADECAPS ShadeCaps</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Capabilities.TextureCaps\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS9::TextureCaps']/*\"/>\t\n            <unmanaged>D3DPTEXTURECAPS TextureCaps</unmanaged>\t\n            <unmanaged-short>D3DPTEXTURECAPS TextureCaps</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Capabilities.TextureFilterCaps\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS9::TextureFilterCaps']/*\"/>\t\n            <unmanaged>D3DPTFILTERCAPS TextureFilterCaps</unmanaged>\t\n            <unmanaged-short>D3DPTFILTERCAPS TextureFilterCaps</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Capabilities.CubeTextureFilterCaps\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS9::CubeTextureFilterCaps']/*\"/>\t\n            <unmanaged>D3DPTFILTERCAPS CubeTextureFilterCaps</unmanaged>\t\n            <unmanaged-short>D3DPTFILTERCAPS CubeTextureFilterCaps</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Capabilities.VolumeTextureFilterCaps\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS9::VolumeTextureFilterCaps']/*\"/>\t\n            <unmanaged>D3DPTFILTERCAPS VolumeTextureFilterCaps</unmanaged>\t\n            <unmanaged-short>D3DPTFILTERCAPS VolumeTextureFilterCaps</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Capabilities.TextureAddressCaps\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS9::TextureAddressCaps']/*\"/>\t\n            <unmanaged>D3DPTADDRESSCAPS TextureAddressCaps</unmanaged>\t\n            <unmanaged-short>D3DPTADDRESSCAPS TextureAddressCaps</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Capabilities.VolumeTextureAddressCaps\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS9::VolumeTextureAddressCaps']/*\"/>\t\n            <unmanaged>D3DPTADDRESSCAPS VolumeTextureAddressCaps</unmanaged>\t\n            <unmanaged-short>D3DPTADDRESSCAPS VolumeTextureAddressCaps</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Capabilities.LineCaps\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS9::LineCaps']/*\"/>\t\n            <unmanaged>D3DLINECAPS LineCaps</unmanaged>\t\n            <unmanaged-short>D3DLINECAPS LineCaps</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Capabilities.MaxTextureWidth\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS9::MaxTextureWidth']/*\"/>\t\n            <unmanaged>unsigned int MaxTextureWidth</unmanaged>\t\n            <unmanaged-short>unsigned int MaxTextureWidth</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Capabilities.MaxTextureHeight\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS9::MaxTextureHeight']/*\"/>\t\n            <unmanaged>unsigned int MaxTextureHeight</unmanaged>\t\n            <unmanaged-short>unsigned int MaxTextureHeight</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Capabilities.MaxVolumeExtent\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS9::MaxVolumeExtent']/*\"/>\t\n            <unmanaged>unsigned int MaxVolumeExtent</unmanaged>\t\n            <unmanaged-short>unsigned int MaxVolumeExtent</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Capabilities.MaxTextureRepeat\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS9::MaxTextureRepeat']/*\"/>\t\n            <unmanaged>unsigned int MaxTextureRepeat</unmanaged>\t\n            <unmanaged-short>unsigned int MaxTextureRepeat</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Capabilities.MaxTextureAspectRatio\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS9::MaxTextureAspectRatio']/*\"/>\t\n            <unmanaged>unsigned int MaxTextureAspectRatio</unmanaged>\t\n            <unmanaged-short>unsigned int MaxTextureAspectRatio</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Capabilities.MaxAnisotropy\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS9::MaxAnisotropy']/*\"/>\t\n            <unmanaged>unsigned int MaxAnisotropy</unmanaged>\t\n            <unmanaged-short>unsigned int MaxAnisotropy</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Capabilities.MaxVertexW\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS9::MaxVertexW']/*\"/>\t\n            <unmanaged>float MaxVertexW</unmanaged>\t\n            <unmanaged-short>float MaxVertexW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Capabilities.GuardBandLeft\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS9::GuardBandLeft']/*\"/>\t\n            <unmanaged>float GuardBandLeft</unmanaged>\t\n            <unmanaged-short>float GuardBandLeft</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Capabilities.GuardBandTop\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS9::GuardBandTop']/*\"/>\t\n            <unmanaged>float GuardBandTop</unmanaged>\t\n            <unmanaged-short>float GuardBandTop</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Capabilities.GuardBandRight\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS9::GuardBandRight']/*\"/>\t\n            <unmanaged>float GuardBandRight</unmanaged>\t\n            <unmanaged-short>float GuardBandRight</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Capabilities.GuardBandBottom\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS9::GuardBandBottom']/*\"/>\t\n            <unmanaged>float GuardBandBottom</unmanaged>\t\n            <unmanaged-short>float GuardBandBottom</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Capabilities.ExtentsAdjust\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS9::ExtentsAdjust']/*\"/>\t\n            <unmanaged>float ExtentsAdjust</unmanaged>\t\n            <unmanaged-short>float ExtentsAdjust</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Capabilities.StencilCaps\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS9::StencilCaps']/*\"/>\t\n            <unmanaged>D3DSTENCILCAPS StencilCaps</unmanaged>\t\n            <unmanaged-short>D3DSTENCILCAPS StencilCaps</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Capabilities.FVFCaps\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS9::FVFCaps']/*\"/>\t\n            <unmanaged>D3DFVFCAPS FVFCaps</unmanaged>\t\n            <unmanaged-short>D3DFVFCAPS FVFCaps</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Capabilities.TextureOperationCaps\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS9::TextureOpCaps']/*\"/>\t\n            <unmanaged>D3DTEXOPCAPS TextureOpCaps</unmanaged>\t\n            <unmanaged-short>D3DTEXOPCAPS TextureOpCaps</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Capabilities.MaxTextureBlendStages\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS9::MaxTextureBlendStages']/*\"/>\t\n            <unmanaged>unsigned int MaxTextureBlendStages</unmanaged>\t\n            <unmanaged-short>unsigned int MaxTextureBlendStages</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Capabilities.MaxSimultaneousTextures\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS9::MaxSimultaneousTextures']/*\"/>\t\n            <unmanaged>unsigned int MaxSimultaneousTextures</unmanaged>\t\n            <unmanaged-short>unsigned int MaxSimultaneousTextures</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Capabilities.VertexProcessingCaps\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS9::VertexProcessingCaps']/*\"/>\t\n            <unmanaged>D3DVTXPCAPS VertexProcessingCaps</unmanaged>\t\n            <unmanaged-short>D3DVTXPCAPS VertexProcessingCaps</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Capabilities.MaxActiveLights\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS9::MaxActiveLights']/*\"/>\t\n            <unmanaged>unsigned int MaxActiveLights</unmanaged>\t\n            <unmanaged-short>unsigned int MaxActiveLights</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Capabilities.MaxUserClipPlanes\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS9::MaxUserClipPlanes']/*\"/>\t\n            <unmanaged>unsigned int MaxUserClipPlanes</unmanaged>\t\n            <unmanaged-short>unsigned int MaxUserClipPlanes</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Capabilities.MaxVertexBlendMatrices\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS9::MaxVertexBlendMatrices']/*\"/>\t\n            <unmanaged>unsigned int MaxVertexBlendMatrices</unmanaged>\t\n            <unmanaged-short>unsigned int MaxVertexBlendMatrices</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Capabilities.MaxVertexBlendMatrixIndex\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS9::MaxVertexBlendMatrixIndex']/*\"/>\t\n            <unmanaged>unsigned int MaxVertexBlendMatrixIndex</unmanaged>\t\n            <unmanaged-short>unsigned int MaxVertexBlendMatrixIndex</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Capabilities.MaxPointSize\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS9::MaxPointSize']/*\"/>\t\n            <unmanaged>float MaxPointSize</unmanaged>\t\n            <unmanaged-short>float MaxPointSize</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Capabilities.MaxPrimitiveCount\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS9::MaxPrimitiveCount']/*\"/>\t\n            <unmanaged>unsigned int MaxPrimitiveCount</unmanaged>\t\n            <unmanaged-short>unsigned int MaxPrimitiveCount</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Capabilities.MaxVertexIndex\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS9::MaxVertexIndex']/*\"/>\t\n            <unmanaged>unsigned int MaxVertexIndex</unmanaged>\t\n            <unmanaged-short>unsigned int MaxVertexIndex</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Capabilities.MaxStreams\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS9::MaxStreams']/*\"/>\t\n            <unmanaged>unsigned int MaxStreams</unmanaged>\t\n            <unmanaged-short>unsigned int MaxStreams</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Capabilities.MaxStreamStride\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS9::MaxStreamStride']/*\"/>\t\n            <unmanaged>unsigned int MaxStreamStride</unmanaged>\t\n            <unmanaged-short>unsigned int MaxStreamStride</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Capabilities.VertexShaderVersion_\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS9::VertexShaderVersion']/*\"/>\t\n            <unmanaged>unsigned int VertexShaderVersion</unmanaged>\t\n            <unmanaged-short>unsigned int VertexShaderVersion</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Capabilities.MaxVertexShaderConst\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS9::MaxVertexShaderConst']/*\"/>\t\n            <unmanaged>unsigned int MaxVertexShaderConst</unmanaged>\t\n            <unmanaged-short>unsigned int MaxVertexShaderConst</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Capabilities.PixelShaderVersion_\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS9::PixelShaderVersion']/*\"/>\t\n            <unmanaged>unsigned int PixelShaderVersion</unmanaged>\t\n            <unmanaged-short>unsigned int PixelShaderVersion</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Capabilities.PixelShader1xMaxValue\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS9::PixelShader1xMaxValue']/*\"/>\t\n            <unmanaged>float PixelShader1xMaxValue</unmanaged>\t\n            <unmanaged-short>float PixelShader1xMaxValue</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Capabilities.DeviceCaps2\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS9::DevCaps2']/*\"/>\t\n            <unmanaged>D3DDEVCAPS2 DevCaps2</unmanaged>\t\n            <unmanaged-short>D3DDEVCAPS2 DevCaps2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Capabilities.MaxNpatchTessellationLevel\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS9::MaxNpatchTessellationLevel']/*\"/>\t\n            <unmanaged>float MaxNpatchTessellationLevel</unmanaged>\t\n            <unmanaged-short>float MaxNpatchTessellationLevel</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Capabilities.Reserved5\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS9::Reserved5']/*\"/>\t\n            <unmanaged>unsigned int Reserved5</unmanaged>\t\n            <unmanaged-short>unsigned int Reserved5</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Capabilities.MasterAdapterOrdinal\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS9::MasterAdapterOrdinal']/*\"/>\t\n            <unmanaged>unsigned int MasterAdapterOrdinal</unmanaged>\t\n            <unmanaged-short>unsigned int MasterAdapterOrdinal</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Capabilities.AdapterOrdinalInGroup\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS9::AdapterOrdinalInGroup']/*\"/>\t\n            <unmanaged>unsigned int AdapterOrdinalInGroup</unmanaged>\t\n            <unmanaged-short>unsigned int AdapterOrdinalInGroup</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Capabilities.NumberOfAdaptersInGroup\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS9::NumberOfAdaptersInGroup']/*\"/>\t\n            <unmanaged>unsigned int NumberOfAdaptersInGroup</unmanaged>\t\n            <unmanaged-short>unsigned int NumberOfAdaptersInGroup</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Capabilities.DeclarationTypes\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS9::DeclTypes']/*\"/>\t\n            <unmanaged>D3DDTCAPS DeclTypes</unmanaged>\t\n            <unmanaged-short>D3DDTCAPS DeclTypes</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Capabilities.SimultaneousRTCount\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS9::NumSimultaneousRTs']/*\"/>\t\n            <unmanaged>unsigned int NumSimultaneousRTs</unmanaged>\t\n            <unmanaged-short>unsigned int NumSimultaneousRTs</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Capabilities.StretchRectFilterCaps\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS9::StretchRectFilterCaps']/*\"/>\t\n            <unmanaged>D3DPTFILTERCAPS StretchRectFilterCaps</unmanaged>\t\n            <unmanaged-short>D3DPTFILTERCAPS StretchRectFilterCaps</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Capabilities.VS20Caps\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS9::VS20Caps']/*\"/>\t\n            <unmanaged>D3DVSHADERCAPS2_0 VS20Caps</unmanaged>\t\n            <unmanaged-short>D3DVSHADERCAPS2_0 VS20Caps</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Capabilities.PS20Caps\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS9::PS20Caps']/*\"/>\t\n            <unmanaged>D3DPSHADERCAPS2_0 PS20Caps</unmanaged>\t\n            <unmanaged-short>D3DPSHADERCAPS2_0 PS20Caps</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Capabilities.VertexTextureFilterCaps\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS9::VertexTextureFilterCaps']/*\"/>\t\n            <unmanaged>D3DPTFILTERCAPS VertexTextureFilterCaps</unmanaged>\t\n            <unmanaged-short>D3DPTFILTERCAPS VertexTextureFilterCaps</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Capabilities.MaxVShaderInstructionsExecuted\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS9::MaxVShaderInstructionsExecuted']/*\"/>\t\n            <unmanaged>unsigned int MaxVShaderInstructionsExecuted</unmanaged>\t\n            <unmanaged-short>unsigned int MaxVShaderInstructionsExecuted</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Capabilities.MaxPShaderInstructionsExecuted\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS9::MaxPShaderInstructionsExecuted']/*\"/>\t\n            <unmanaged>unsigned int MaxPShaderInstructionsExecuted</unmanaged>\t\n            <unmanaged-short>unsigned int MaxPShaderInstructionsExecuted</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Capabilities.MaxVertexShader30InstructionSlots\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS9::MaxVertexShader30InstructionSlots']/*\"/>\t\n            <unmanaged>unsigned int MaxVertexShader30InstructionSlots</unmanaged>\t\n            <unmanaged-short>unsigned int MaxVertexShader30InstructionSlots</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Capabilities.MaxPixelShader30InstructionSlots\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS9::MaxPixelShader30InstructionSlots']/*\"/>\t\n            <unmanaged>unsigned int MaxPixelShader30InstructionSlots</unmanaged>\t\n            <unmanaged-short>unsigned int MaxPixelShader30InstructionSlots</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.Capabilities.PixelShaderVersion\">\n            <summary>\n            Gets the pixel shader version.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.Capabilities.VertexShaderVersion\">\n            <summary>\n            Gets the vertex shader version.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.CompilationResult\">\n            <summary>\n            Shader compilation results.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.CompilationResult.#ctor(SharpDX.Direct3D9.ShaderBytecode,SharpDX.Result,System.String)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D9.CompilationResult\"/> class.\n            </summary>\n            <param name=\"bytecode\">The bytecode.</param>\n            <param name=\"resultCode\">The result code.</param>\n            <param name=\"message\">The message.</param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.CompilationResult.op_Implicit(SharpDX.Direct3D9.CompilationResult)~SharpDX.Direct3D9.ShaderBytecode\">\n            <summary>\n            Performs an implicit conversion from <see cref=\"T:SharpDX.Direct3D9.CompilationResult\"/> to <see cref=\"T:SharpDX.Direct3D9.ShaderBytecode\"/>.\n            </summary>\n            <param name=\"input\">The input.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.ConstantTable\">\n            <summary>\t\n            <p>The <see cref=\"T:SharpDX.Direct3D9.ConstantTable\"/> interface is used to access the constant table. This table contains the variables that are used by high-level language shaders and effects.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The LPD3DXCONSTANTTABLE type is defined as a reference to the <strong><see cref=\"T:SharpDX.Direct3D9.ConstantTable\"/></strong> interface. </p><pre><code> typedef interface <see cref=\"T:SharpDX.Direct3D9.ConstantTable\"/> <see cref=\"T:SharpDX.Direct3D9.ConstantTable\"/>;\t\n            typedef interface <see cref=\"T:SharpDX.Direct3D9.ConstantTable\"/> *LPD3DXCONSTANTTABLE;\t\n            </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXConstantTable']/*\"/>\t\n            <msdn-id>bb205762</msdn-id>\t\n            <unmanaged>ID3DXConstantTable</unmanaged>\t\n            <unmanaged-short>ID3DXConstantTable</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ConstantTable.GetConstantDescription(SharpDX.Direct3D9.EffectHandle)\">\n            <summary>\n            Gets a single constant description in the constant table.\n            </summary>\n            <param name=\"effectHandle\">The effect handle.</param>\n            <returns>The constant description</returns>\n            <unmanaged>HRESULT ID3DXConstantTable::GetConstantDesc([In] D3DXHANDLE hConstant,[Out, Buffer] D3DXCONSTANT_DESC* pConstantDesc,[InOut] unsigned int* pCount)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ConstantTable.GetConstantDescriptionArray(SharpDX.Direct3D9.EffectHandle)\">\n            <summary>\n            Gets an array of constant descriptions in the constant table.\n            </summary>\n            <param name=\"effectHandle\">The effect handle.</param>\n            <returns>An array of constant descriptions</returns>\n            <unmanaged>HRESULT ID3DXConstantTable::GetConstantDesc([In] D3DXHANDLE hConstant,[Out, Buffer] D3DXCONSTANT_DESC* pConstantDesc,[InOut] unsigned int* pCount)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ConstantTable.SetValue(SharpDX.Direct3D9.Device,SharpDX.Direct3D9.EffectHandle,System.Boolean)\">\n            <summary>\n            Sets a bool value.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"effectHandle\">The effect handle.</param>\n            <param name=\"value\">The value.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT ID3DXConstantTable::SetBool([In] IDirect3DDevice9* pDevice,[In] D3DXHANDLE hConstant,[In] BOOL b)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ConstantTable.SetValue(SharpDX.Direct3D9.Device,SharpDX.Direct3D9.EffectHandle,System.Single)\">\n            <summary>\n            Sets a float value.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"effectHandle\">The effect handle.</param>\n            <param name=\"value\">The value.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT ID3DXConstantTable::SetFloat([In] IDirect3DDevice9* pDevice,[In] D3DXHANDLE hConstant,[In] float f)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ConstantTable.SetValue(SharpDX.Direct3D9.Device,SharpDX.Direct3D9.EffectHandle,System.Int32)\">\n            <summary>\n            Sets an int value.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"effectHandle\">The effect handle.</param>\n            <param name=\"value\">The value.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT ID3DXConstantTable::SetInt([In] IDirect3DDevice9* pDevice,[In] D3DXHANDLE hConstant,[In] int n)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ConstantTable.SetValue(SharpDX.Direct3D9.Device,SharpDX.Direct3D9.EffectHandle,SharpDX.Matrix)\">\n            <summary>\n            Sets a matrix.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"effectHandle\">The effect handle.</param>\n            <param name=\"value\">The value.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT ID3DXConstantTable::SetMatrix([In] IDirect3DDevice9* pDevice,[In] D3DXHANDLE hConstant,[In] const D3DXMATRIX* pMatrix)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ConstantTable.SetValue(SharpDX.Direct3D9.Device,SharpDX.Direct3D9.EffectHandle,SharpDX.Vector4)\">\n            <summary>\n            Sets a 4D vector.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"effectHandle\">The effect handle.</param>\n            <param name=\"value\">The value.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT ID3DXConstantTable::SetVector([In] IDirect3DDevice9* pDevice,[In] D3DXHANDLE hConstant,[In] const D3DXVECTOR4* pVector)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ConstantTable.SetValue``1(SharpDX.Direct3D9.Device,SharpDX.Direct3D9.EffectHandle,``0)\">\n            <summary>\n            Sets a typed value.\n            </summary>\n            <typeparam name=\"T\">Type of the value to est</typeparam>\n            <param name=\"device\">The device.</param>\n            <param name=\"effectHandle\">The effect handle.</param>\n            <param name=\"value\">The value.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT ID3DXConstantTable::SetValue([In] IDirect3DDevice9* pDevice,[In] D3DXHANDLE hConstant,[In] const void* pData,[In] unsigned int Bytes)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ConstantTable.SetValue(SharpDX.Direct3D9.Device,SharpDX.Direct3D9.EffectHandle,System.Boolean[])\">\n            <summary>\n            Sets an array of bools.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"effectHandle\">The effect handle.</param>\n            <param name=\"values\">The values.</param>\n            <returns>A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.</returns>\n            <unmanaged>HRESULT ID3DXConstantTable::SetBoolArray([In] IDirect3DDevice9* pDevice,[In] D3DXHANDLE hConstant,[In, Buffer] const BOOL* pb,[In] unsigned int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ConstantTable.SetValue(SharpDX.Direct3D9.Device,SharpDX.Direct3D9.EffectHandle,System.Single[])\">\n            <summary>\n            Sets an array of floats.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"effectHandle\">The effect handle.</param>\n            <param name=\"values\">The values.</param>\n            <returns>A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.</returns>\n            <unmanaged>HRESULT ID3DXConstantTable::SetFloatArray([In] IDirect3DDevice9* pDevice,[In] D3DXHANDLE hConstant,[In, Buffer] const float* pf,[In] unsigned int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ConstantTable.SetValue(SharpDX.Direct3D9.Device,SharpDX.Direct3D9.EffectHandle,System.Int32[])\">\n            <summary>\n            Sets an array of ints.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"effectHandle\">The effect handle.</param>\n            <param name=\"values\">The values.</param>\n            <returns>A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.</returns>\n            <unmanaged>HRESULT ID3DXConstantTable::SetIntArray([In] IDirect3DDevice9* pDevice,[In] D3DXHANDLE hConstant,[In, Buffer] const int* pn,[In] unsigned int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ConstantTable.SetValue(SharpDX.Direct3D9.Device,SharpDX.Direct3D9.EffectHandle,SharpDX.Matrix[])\">\n            <summary>\n            Sets an array of matrices.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"effectHandle\">The effect handle.</param>\n            <param name=\"values\">The values.</param>\n            <returns>A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.</returns>\n            <unmanaged>HRESULT ID3DXConstantTable::SetMatrixArray([In] IDirect3DDevice9* pDevice,[In] D3DXHANDLE hConstant,[In, Buffer] const D3DXMATRIX* pMatrix,[In] unsigned int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ConstantTable.SetValue(SharpDX.Direct3D9.Device,SharpDX.Direct3D9.EffectHandle,SharpDX.Vector4[])\">\n            <summary>\n            Sets an array of 4D vectors.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"effectHandle\">The effect handle.</param>\n            <param name=\"values\">The values.</param>\n            <returns>A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.</returns>\n            <unmanaged>HRESULT ID3DXConstantTable::SetVectorArray([In] IDirect3DDevice9* pDevice,[In] D3DXHANDLE hConstant,[In, Buffer] const D3DXVECTOR4* pVector,[In] unsigned int Count)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ConstantTable.SetValue``1(SharpDX.Direct3D9.Device,SharpDX.Direct3D9.EffectHandle,``0[])\">\n            <summary>\n            Sets an array of elements.\n            </summary>\n            <typeparam name=\"T\">Type of the array element</typeparam>\n            <param name=\"device\">The device.</param>\n            <param name=\"effectHandle\">The effect handle.</param>\n            <param name=\"values\">The values.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT ID3DXConstantTable::SetValue([In] IDirect3DDevice9* pDevice,[In] D3DXHANDLE hConstant,[In] const void* pData,[In] unsigned int Bytes)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ConstantTable.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D9.ConstantTable\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ConstantTable.op_Explicit(System.IntPtr)~SharpDX.Direct3D9.ConstantTable\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D9.ConstantTable\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ConstantTable.GetBufferPointer\">\n            <summary>\t\n            <p>Gets a reference to the buffer that contains the constant table.</p>\t\n            </summary>\t\n            <returns><p>Returns a reference the buffer.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXConstantTable::GetBufferPointer']/*\"/>\t\n            <msdn-id>bb205763</msdn-id>\t\n            <unmanaged>void* ID3DXConstantTable::GetBufferPointer()</unmanaged>\t\n            <unmanaged-short>ID3DXConstantTable::GetBufferPointer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ConstantTable.GetBufferSize\">\n            <summary>\t\n            <p>Gets the buffer size of the constant table.</p>\t\n            </summary>\t\n            <returns><p>Returns the size of the buffer, in bytes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXConstantTable::GetBufferSize']/*\"/>\t\n            <msdn-id>bb205764</msdn-id>\t\n            <unmanaged>unsigned int ID3DXConstantTable::GetBufferSize()</unmanaged>\t\n            <unmanaged-short>ID3DXConstantTable::GetBufferSize</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ConstantTable.GetDescription(SharpDX.Direct3D9.ConstantTableDescription@)\">\n            <summary>\t\n            <p>Gets a description of the constant table.</p>\t\n            </summary>\t\n            <param name=\"descRef\"><dd>  <p>Description of the constant table. See <strong><see cref=\"T:SharpDX.Direct3D9.ConstantTableDescription\"/></strong>.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXConstantTable::GetDesc']/*\"/>\t\n            <msdn-id>bb205769</msdn-id>\t\n            <unmanaged>HRESULT ID3DXConstantTable::GetDesc([Out] D3DXCONSTANTTABLE_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>ID3DXConstantTable::GetDesc</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ConstantTable.GetConstantDescription(SharpDX.Direct3D9.EffectHandle,SharpDX.Direct3D9.ConstantDescription[],System.Int32@)\">\n            <summary>\t\n            <p>Gets a reference to an array of constant descriptions in the constant table.</p>\t\n            </summary>\t\n            <param name=\"effectHandle\"><dd>  <p>Unique identifier to a constant. See <see cref=\"T:SharpDX.Direct3D9.EffectHandle\"/>.</p> </dd></param>\t\n            <param name=\"constantDescRef\"><dd>  <p>Returns a reference to an array of descriptions. See <strong><see cref=\"T:SharpDX.Direct3D9.ConstantDescription\"/></strong>.</p> </dd></param>\t\n            <param name=\"countRef\"><dd>  <p>The input supplied must be the maximum size of the array. The output is the number of elements that are filled in the array when the function returns.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA.</p></returns>\t\n            <remarks>\t\n            <p><strong><see cref=\"M:SharpDX.Direct3D9.ConstantTable.GetConstantDescription(SharpDX.Direct3D9.EffectHandle)\"/></strong> will sometimes return a <strong><see cref=\"T:SharpDX.Direct3D9.ConstantDescription\"/></strong> with a Register_Count of 0.  This will happen with a constant appears in more than one Register_Set but does not have space in that register set allocated.</p><p>Because a sampler can appear more than once in a constant table, this method can return an array of descriptions, each one with a different register index.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXConstantTable::GetConstantDesc']/*\"/>\t\n            <msdn-id>Bb205767</msdn-id>\t\n            <unmanaged>HRESULT ID3DXConstantTable::GetConstantDesc([In] D3DXHANDLE hConstant,[Out, Buffer] D3DXCONSTANT_DESC* pConstantDesc,[InOut] unsigned int* pCount)</unmanaged>\t\n            <unmanaged-short>ID3DXConstantTable::GetConstantDesc</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ConstantTable.GetSamplerIndex(SharpDX.Direct3D9.EffectHandle)\">\n            <summary>\t\n            <p>Returns the sampler index.</p>\t\n            </summary>\t\n            <param name=\"effectHandle\"><dd>  <p>The sampler handle.</p> </dd></param>\t\n            <returns><p>Returns the sampler index number from the constant table.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXConstantTable::GetSamplerIndex']/*\"/>\t\n            <msdn-id>bb205770</msdn-id>\t\n            <unmanaged>unsigned int ID3DXConstantTable::GetSamplerIndex([In] D3DXHANDLE hConstant)</unmanaged>\t\n            <unmanaged-short>ID3DXConstantTable::GetSamplerIndex</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ConstantTable.GetConstant(SharpDX.Direct3D9.EffectHandle,System.Int32)\">\n            <summary>\t\n            <p>Gets a constant by looking up its index.</p>\t\n            </summary>\t\n            <param name=\"effectHandle\"><dd>  <p>Unique identifier to the parent data structure. If the constant is a top-level parameter (there is no parent data structure), use <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"index\"><dd>  <p>Zero-based index of the constant.</p> </dd></param>\t\n            <returns><p>Returns a unique identifier to the constant.</p></returns>\t\n            <remarks>\t\n            <p>To get a constant from an array of constants, use <strong><see cref=\"M:SharpDX.Direct3D9.ConstantTable.GetConstantElement(SharpDX.Direct3D9.EffectHandle,System.Int32)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXConstantTable::GetConstant']/*\"/>\t\n            <msdn-id>bb205765</msdn-id>\t\n            <unmanaged>D3DXHANDLE ID3DXConstantTable::GetConstant([In] D3DXHANDLE hConstant,[In] unsigned int Index)</unmanaged>\t\n            <unmanaged-short>ID3DXConstantTable::GetConstant</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ConstantTable.GetConstantByName(SharpDX.Direct3D9.EffectHandle,System.String)\">\n            <summary>\t\n            <p>Gets a constant by looking up its name.</p>\t\n            </summary>\t\n            <param name=\"effectHandle\"><dd>  <p>Unique identifier to the parent data structure. If the constant is a top-level parameter (there is no parent data structure), use <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"nameRef\"><dd>  <p>Name of the constant.</p> </dd></param>\t\n            <returns><p>Returns a unique identifier to the constant.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXConstantTable::GetConstantByName']/*\"/>\t\n            <msdn-id>bb205766</msdn-id>\t\n            <unmanaged>D3DXHANDLE ID3DXConstantTable::GetConstantByName([In] D3DXHANDLE hConstant,[In] const char* pName)</unmanaged>\t\n            <unmanaged-short>ID3DXConstantTable::GetConstantByName</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ConstantTable.GetConstantElement(SharpDX.Direct3D9.EffectHandle,System.Int32)\">\n            <summary>\t\n            <p>Gets a constant from an array of constants. An array is made up of elements.</p>\t\n            </summary>\t\n            <param name=\"effectHandle\"><dd>  <p>Unique identifier to the array of constants.  This value may not be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"index\"><dd>  <p>Zero-based index of the element in the array.</p> </dd></param>\t\n            <returns><p>Returns a unique identifier to the element constant.</p></returns>\t\n            <remarks>\t\n            <p>To get a constant that is not part of an array, use <strong><see cref=\"M:SharpDX.Direct3D9.ConstantTable.GetConstant(SharpDX.Direct3D9.EffectHandle,System.Int32)\"/></strong> or <strong><see cref=\"M:SharpDX.Direct3D9.ConstantTable.GetConstantByName(SharpDX.Direct3D9.EffectHandle,System.String)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXConstantTable::GetConstantElement']/*\"/>\t\n            <msdn-id>bb205768</msdn-id>\t\n            <unmanaged>D3DXHANDLE ID3DXConstantTable::GetConstantElement([In] D3DXHANDLE hConstant,[In] unsigned int Index)</unmanaged>\t\n            <unmanaged-short>ID3DXConstantTable::GetConstantElement</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ConstantTable.SetDefaults(SharpDX.Direct3D9.Device)\">\n            <summary>\t\n            <p>Sets the constants to their default values. The default values are declared in the variable declarations in the shader.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface, representing the device associated with the constant table.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXConstantTable::SetDefaults']/*\"/>\t\n            <msdn-id>bb205773</msdn-id>\t\n            <unmanaged>HRESULT ID3DXConstantTable::SetDefaults([In] IDirect3DDevice9* pDevice)</unmanaged>\t\n            <unmanaged-short>ID3DXConstantTable::SetDefaults</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ConstantTable.SetValue(SharpDX.Direct3D9.Device,SharpDX.Direct3D9.EffectHandle,System.IntPtr,System.Int32)\">\n            <summary>\t\n            <p>Sets the contents of the buffer to the constant table.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface, representing the device associated with the constant table.</p> </dd></param>\t\n            <param name=\"effectHandle\"><dd>  <p>Unique identifier to a constant. See <see cref=\"T:SharpDX.Direct3D9.EffectHandle\"/>.</p> </dd></param>\t\n            <param name=\"dataRef\"><dd>  <p>Buffer containing data.</p> </dd></param>\t\n            <param name=\"bytes\"><dd>  <p>Size of the buffer, in bytes.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXConstantTable::SetValue']/*\"/>\t\n            <msdn-id>bb205785</msdn-id>\t\n            <unmanaged>HRESULT ID3DXConstantTable::SetValue([In] IDirect3DDevice9* pDevice,[In] D3DXHANDLE hConstant,[In] const void* pData,[In] unsigned int Bytes)</unmanaged>\t\n            <unmanaged-short>ID3DXConstantTable::SetValue</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ConstantTable.SetBool(SharpDX.Direct3D9.Device,SharpDX.Direct3D9.EffectHandle,SharpDX.Bool)\">\n            <summary>\t\n            <p>Sets a Boolean value.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface, representing the device associated with the constant table.</p> </dd></param>\t\n            <param name=\"effectHandle\"><dd>  <p>Unique identifier to the constant. See <see cref=\"T:SharpDX.Direct3D9.EffectHandle\"/>.</p> </dd></param>\t\n            <param name=\"b\"><dd>  <p>Boolean value.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXConstantTable::SetBool']/*\"/>\t\n            <msdn-id>bb205771</msdn-id>\t\n            <unmanaged>HRESULT ID3DXConstantTable::SetBool([In] IDirect3DDevice9* pDevice,[In] D3DXHANDLE hConstant,[In] BOOL b)</unmanaged>\t\n            <unmanaged-short>ID3DXConstantTable::SetBool</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ConstantTable.SetBoolArray(SharpDX.Direct3D9.Device,SharpDX.Direct3D9.EffectHandle,SharpDX.Bool[],System.Int32)\">\n            <summary>\t\n            <p>Sets an array of Boolean values.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface, representing the device associated with the constant table.</p> </dd></param>\t\n            <param name=\"effectHandle\"><dd>  <p>Unique identifier to the array of constants. See <see cref=\"T:SharpDX.Direct3D9.EffectHandle\"/>.</p> </dd></param>\t\n            <param name=\"bRef\"><dd>  <p>Array of Boolean values.</p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>Number of Boolean values in the array.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXConstantTable::SetBoolArray']/*\"/>\t\n            <msdn-id>bb205772</msdn-id>\t\n            <unmanaged>HRESULT ID3DXConstantTable::SetBoolArray([In] IDirect3DDevice9* pDevice,[In] D3DXHANDLE hConstant,[In, Buffer] const BOOL* pb,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3DXConstantTable::SetBoolArray</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ConstantTable.SetInt(SharpDX.Direct3D9.Device,SharpDX.Direct3D9.EffectHandle,System.Int32)\">\n            <summary>\t\n            <p>Sets an integer value.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface, representing the device associated with the constant table.</p> </dd></param>\t\n            <param name=\"effectHandle\"><dd>  <p>Unique identifier to the constant. See <see cref=\"T:SharpDX.Direct3D9.EffectHandle\"/>.</p> </dd></param>\t\n            <param name=\"n\"><dd>  <p>Integer.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXConstantTable::SetInt']/*\"/>\t\n            <msdn-id>bb205776</msdn-id>\t\n            <unmanaged>HRESULT ID3DXConstantTable::SetInt([In] IDirect3DDevice9* pDevice,[In] D3DXHANDLE hConstant,[In] int n)</unmanaged>\t\n            <unmanaged-short>ID3DXConstantTable::SetInt</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ConstantTable.SetIntArray(SharpDX.Direct3D9.Device,SharpDX.Direct3D9.EffectHandle,System.Int32[],System.Int32)\">\n            <summary>\t\n            <p>Sets an array of integers.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface, representing the device associated with the constant table.</p> </dd></param>\t\n            <param name=\"effectHandle\"><dd>  <p>Unique identifier to the array of constants. See <see cref=\"T:SharpDX.Direct3D9.EffectHandle\"/>.</p> </dd></param>\t\n            <param name=\"nRef\"><dd>  <p>Array of integers.</p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>Number of integers in the array.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXConstantTable::SetIntArray']/*\"/>\t\n            <msdn-id>bb205778</msdn-id>\t\n            <unmanaged>HRESULT ID3DXConstantTable::SetIntArray([In] IDirect3DDevice9* pDevice,[In] D3DXHANDLE hConstant,[In, Buffer] const int* pn,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3DXConstantTable::SetIntArray</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ConstantTable.SetFloat(SharpDX.Direct3D9.Device,SharpDX.Direct3D9.EffectHandle,System.Single)\">\n            <summary>\t\n            <p>Sets a floating-point number.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface, representing the device associated with the constant table.</p> </dd></param>\t\n            <param name=\"effectHandle\"><dd>  <p>Unique identifier to the constant. See <see cref=\"T:SharpDX.Direct3D9.EffectHandle\"/>.</p> </dd></param>\t\n            <param name=\"f\"><dd>  <p>Floating-point number.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXConstantTable::SetFloat']/*\"/>\t\n            <msdn-id>bb205774</msdn-id>\t\n            <unmanaged>HRESULT ID3DXConstantTable::SetFloat([In] IDirect3DDevice9* pDevice,[In] D3DXHANDLE hConstant,[In] float f)</unmanaged>\t\n            <unmanaged-short>ID3DXConstantTable::SetFloat</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ConstantTable.SetFloatArray(SharpDX.Direct3D9.Device,SharpDX.Direct3D9.EffectHandle,System.Single[],System.Int32)\">\n            <summary>\t\n            <p>Sets an array of floating-point numbers.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface, representing the device associated with the constant table.</p> </dd></param>\t\n            <param name=\"effectHandle\"><dd>  <p>Unique identifier to the array of constants. See <see cref=\"T:SharpDX.Direct3D9.EffectHandle\"/>.</p> </dd></param>\t\n            <param name=\"fRef\"><dd>  <p>Array of floating-point numbers.</p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>Number of floating-point values in the array.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXConstantTable::SetFloatArray']/*\"/>\t\n            <msdn-id>bb205775</msdn-id>\t\n            <unmanaged>HRESULT ID3DXConstantTable::SetFloatArray([In] IDirect3DDevice9* pDevice,[In] D3DXHANDLE hConstant,[In, Buffer] const float* pf,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3DXConstantTable::SetFloatArray</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ConstantTable.SetVector(SharpDX.Direct3D9.Device,SharpDX.Direct3D9.EffectHandle,SharpDX.Vector4)\">\n            <summary>\t\n            <p>Sets a 4D vector.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface, representing the device associated with the constant table.</p> </dd></param>\t\n            <param name=\"effectHandle\"><dd>  <p>Unique identifier to the vector constant. See <see cref=\"T:SharpDX.Direct3D9.EffectHandle\"/>.</p> </dd></param>\t\n            <param name=\"vectorRef\"><dd>  <p>Pointer to a 4D vector.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXConstantTable::SetVector']/*\"/>\t\n            <msdn-id>bb205786</msdn-id>\t\n            <unmanaged>HRESULT ID3DXConstantTable::SetVector([In] IDirect3DDevice9* pDevice,[In] D3DXHANDLE hConstant,[In] const D3DXVECTOR4* pVector)</unmanaged>\t\n            <unmanaged-short>ID3DXConstantTable::SetVector</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ConstantTable.SetVectorArray(SharpDX.Direct3D9.Device,SharpDX.Direct3D9.EffectHandle,SharpDX.Vector4[],System.Int32)\">\n            <summary>\t\n            <p>Sets an array of 4D vectors.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface, representing the device associated with the constant table.</p> </dd></param>\t\n            <param name=\"effectHandle\"><dd>  <p>Unique identifier to the array of vector constants. See <see cref=\"T:SharpDX.Direct3D9.EffectHandle\"/>.</p> </dd></param>\t\n            <param name=\"vectorRef\"><dd>  <p>Array of 4D vectors.</p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>Number of vectors in the array.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXConstantTable::SetVectorArray']/*\"/>\t\n            <msdn-id>bb205787</msdn-id>\t\n            <unmanaged>HRESULT ID3DXConstantTable::SetVectorArray([In] IDirect3DDevice9* pDevice,[In] D3DXHANDLE hConstant,[In, Buffer] const D3DXVECTOR4* pVector,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3DXConstantTable::SetVectorArray</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ConstantTable.SetMatrix(SharpDX.Direct3D9.Device,SharpDX.Direct3D9.EffectHandle,SharpDX.Matrix@)\">\n            <summary>\t\n            <p>Sets a nontransposed matrix.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface, representing the device associated with the constant table.</p> </dd></param>\t\n            <param name=\"effectHandle\"><dd>  <p>Unique identifier to the matrix of constants. See <see cref=\"T:SharpDX.Direct3D9.EffectHandle\"/>.</p> </dd></param>\t\n            <param name=\"matrixRef\"><dd>  <p>Pointer to a nontransposed matrix. See <strong><see cref=\"T:SharpDX.Matrix\"/></strong>.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXConstantTable::SetMatrix']/*\"/>\t\n            <msdn-id>bb205779</msdn-id>\t\n            <unmanaged>HRESULT ID3DXConstantTable::SetMatrix([In] IDirect3DDevice9* pDevice,[In] D3DXHANDLE hConstant,[In] const D3DXMATRIX* pMatrix)</unmanaged>\t\n            <unmanaged-short>ID3DXConstantTable::SetMatrix</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ConstantTable.SetMatrixArray(SharpDX.Direct3D9.Device,SharpDX.Direct3D9.EffectHandle,SharpDX.Matrix[],System.Int32)\">\n            <summary>\t\n            <p>Sets an array of nontransposed matrices.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface, representing the device associated with the constant table.</p> </dd></param>\t\n            <param name=\"effectHandle\"><dd>  <p>Unique identifier to the array of constant matrices. See <see cref=\"T:SharpDX.Direct3D9.EffectHandle\"/>.</p> </dd></param>\t\n            <param name=\"matrixRef\"><dd>  <p>Array of nontransposed matrices. See <strong><see cref=\"T:SharpDX.Matrix\"/></strong>.</p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>Number of matrices in the array.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXConstantTable::SetMatrixArray']/*\"/>\t\n            <msdn-id>bb205780</msdn-id>\t\n            <unmanaged>HRESULT ID3DXConstantTable::SetMatrixArray([In] IDirect3DDevice9* pDevice,[In] D3DXHANDLE hConstant,[In, Buffer] const D3DXMATRIX* pMatrix,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3DXConstantTable::SetMatrixArray</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ConstantTable.SetMatrixPointerArray(SharpDX.Direct3D9.Device,SharpDX.Direct3D9.EffectHandle,SharpDX.Matrix@,System.Int32)\">\n            <summary>\t\n            <p>Sets an array of references to nontransposed matrices.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface, representing the device associated with the constant table.</p> </dd></param>\t\n            <param name=\"effectHandle\"><dd>  <p>Unique identifier to an array of constant matrices. See <see cref=\"T:SharpDX.Direct3D9.EffectHandle\"/>.</p> </dd></param>\t\n            <param name=\"matrixOut\"><dd>  <p>Array of references to nontransposed matrices. See <strong><see cref=\"T:SharpDX.Matrix\"/></strong>.</p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>Number of matrices in the array.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>A nontransposed matrix contains row-major data; that is, each vector is contained in a row.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXConstantTable::SetMatrixPointerArray']/*\"/>\t\n            <msdn-id>bb205781</msdn-id>\t\n            <unmanaged>HRESULT ID3DXConstantTable::SetMatrixPointerArray([In] IDirect3DDevice9* pDevice,[In] D3DXHANDLE hConstant,[In] const D3DXMATRIX** ppMatrix,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3DXConstantTable::SetMatrixPointerArray</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ConstantTable.SetMatrixTranspose(SharpDX.Direct3D9.Device,SharpDX.Direct3D9.EffectHandle,SharpDX.Matrix@)\">\n            <summary>\t\n            <p>Sets a transposed matrix.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface, representing the device associated with the constant table.</p> </dd></param>\t\n            <param name=\"effectHandle\"><dd>  <p>Unique identifier to the matrix of constants. See <see cref=\"T:SharpDX.Direct3D9.EffectHandle\"/>.</p> </dd></param>\t\n            <param name=\"matrixRef\"><dd>  <p>Pointer to a transposed matrix. See <strong><see cref=\"T:SharpDX.Matrix\"/></strong>.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXConstantTable::SetMatrixTranspose']/*\"/>\t\n            <msdn-id>bb205782</msdn-id>\t\n            <unmanaged>HRESULT ID3DXConstantTable::SetMatrixTranspose([In] IDirect3DDevice9* pDevice,[In] D3DXHANDLE hConstant,[In] const D3DXMATRIX* pMatrix)</unmanaged>\t\n            <unmanaged-short>ID3DXConstantTable::SetMatrixTranspose</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ConstantTable.SetMatrixTransposeArray(SharpDX.Direct3D9.Device,SharpDX.Direct3D9.EffectHandle,SharpDX.Matrix[],System.Int32)\">\n            <summary>\t\n            <p>Sets an array of transposed matrices.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface, representing the device associated with the constant table.</p> </dd></param>\t\n            <param name=\"effectHandle\"><dd>  <p>Unique identifier to the array of matrix constants. See <see cref=\"T:SharpDX.Direct3D9.EffectHandle\"/>.</p> </dd></param>\t\n            <param name=\"matrixRef\"><dd>  <p>Array of transposed matrices. See <strong><see cref=\"T:SharpDX.Matrix\"/></strong>.</p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>Number of matrices in the array.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXConstantTable::SetMatrixTransposeArray']/*\"/>\t\n            <msdn-id>bb205783</msdn-id>\t\n            <unmanaged>HRESULT ID3DXConstantTable::SetMatrixTransposeArray([In] IDirect3DDevice9* pDevice,[In] D3DXHANDLE hConstant,[In, Buffer] const D3DXMATRIX* pMatrix,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3DXConstantTable::SetMatrixTransposeArray</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ConstantTable.SetMatrixTransposePointerArray(SharpDX.Direct3D9.Device,SharpDX.Direct3D9.EffectHandle,SharpDX.Matrix@,System.Int32)\">\n            <summary>\t\n            <p>Sets an array of references to transposed matrices.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface, representing the device associated with the constant table.</p> </dd></param>\t\n            <param name=\"effectHandle\"><dd>  <p>Unique identifier to the array of matrix constants. See <see cref=\"T:SharpDX.Direct3D9.EffectHandle\"/>.</p> </dd></param>\t\n            <param name=\"matrixOut\"><dd>  <p>Array of references to transposed matrices. See <strong><see cref=\"T:SharpDX.Matrix\"/></strong>.</p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>Number of matrices in the array.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>A transposed matrix contains column-major data; that is, each vector is contained in a column.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXConstantTable::SetMatrixTransposePointerArray']/*\"/>\t\n            <msdn-id>bb205784</msdn-id>\t\n            <unmanaged>HRESULT ID3DXConstantTable::SetMatrixTransposePointerArray([In] IDirect3DDevice9* pDevice,[In] D3DXHANDLE hConstant,[In] const D3DXMATRIX** ppMatrix,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3DXConstantTable::SetMatrixTransposePointerArray</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.ConstantTable.Buffer\">\n            <summary>\n            Gets the buffer.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.ConstantTable.BufferPointer\">\n            <summary>\t\n            <p>Gets a reference to the buffer that contains the constant table.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXConstantTable::GetBufferPointer']/*\"/>\t\n            <msdn-id>bb205763</msdn-id>\t\n            <unmanaged>GetBufferPointer</unmanaged>\t\n            <unmanaged-short>GetBufferPointer</unmanaged-short>\t\n            <unmanaged>void* ID3DXConstantTable::GetBufferPointer()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.ConstantTable.BufferSize\">\n            <summary>\t\n            <p>Gets the buffer size of the constant table.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXConstantTable::GetBufferSize']/*\"/>\t\n            <msdn-id>bb205764</msdn-id>\t\n            <unmanaged>GetBufferSize</unmanaged>\t\n            <unmanaged-short>GetBufferSize</unmanaged-short>\t\n            <unmanaged>unsigned int ID3DXConstantTable::GetBufferSize()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.ConstantTable.Description\">\n            <summary>\t\n            <p>Gets a description of the constant table.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXConstantTable::GetDesc']/*\"/>\t\n            <msdn-id>bb205769</msdn-id>\t\n            <unmanaged>GetDesc</unmanaged>\t\n            <unmanaged-short>GetDesc</unmanaged-short>\t\n            <unmanaged>HRESULT ID3DXConstantTable::GetDesc([Out] D3DXCONSTANTTABLE_DESC* pDesc)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.AdapterExCollection\">\n            <summary>\n            A collection of <see cref=\"T:SharpDX.Direct3D9.AdapterInformation\"/>.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.AdapterInformationEx\">\n            <summary>\n            Adapter information.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.AdapterInformationEx.GetCaps(SharpDX.Direct3D9.DeviceType)\">\n            <summary>\n            Gets the capabilities of this adapter.\n            </summary>\n            <param name=\"type\">The type.</param>\n            <returns>The capabilities</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.AdapterInformationEx.GetDisplayModes(SharpDX.Direct3D9.DisplayModeFilter)\">\n            <summary>\n            Gets the display modes supported by this adapter.\n            </summary>\n            <param name=\"filter\">The filter.</param>\n            <returns>\n            The display modes supported by this adapter.\n            </returns>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.AdapterInformationEx.Adapter\">\n            <summary>\n            Gets the adapter ordinal.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.AdapterInformationEx.CurrentDisplayMode\">\n            <summary>\n            Gets the current display mode.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.AdapterInformationEx.Details\">\n            <summary>\n            Gets the details.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.AdapterInformationEx.Monitor\">\n            <summary>\n            Gets the monitor.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.DisplayModeEx\">\n            <summary>\t\n            <p>Information about the properties of a display mode.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure is used in various methods to create and manage Direct3D 9Ex devices (<strong><see cref=\"T:SharpDX.Direct3D9.DeviceEx\"/></strong>) and swapchains (<strong><see cref=\"T:SharpDX.Direct3D9.SwapChain9Ex\"/></strong>).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDISPLAYMODEEX']/*\"/>\t\n            <msdn-id>bb172549</msdn-id>\t\n            <unmanaged>D3DDISPLAYMODEEX</unmanaged>\t\n            <unmanaged-short>D3DDISPLAYMODEEX</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.DisplayModeEx.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D9.DisplayModeEx\"/> class.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DisplayModeEx.Size\">\n            <summary>\t\n            <dd> <p>The size of this structure. This should always be set to sizeof(<see cref=\"T:SharpDX.Direct3D9.DisplayModeEx\"/>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDISPLAYMODEEX::Size']/*\"/>\t\n            <msdn-id>bb172549</msdn-id>\t\n            <unmanaged>unsigned int Size</unmanaged>\t\n            <unmanaged-short>unsigned int Size</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DisplayModeEx.Width\">\n            <summary>\t\n            <dd> <p>Width of the display mode.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDISPLAYMODEEX::Width']/*\"/>\t\n            <msdn-id>bb172549</msdn-id>\t\n            <unmanaged>unsigned int Width</unmanaged>\t\n            <unmanaged-short>unsigned int Width</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DisplayModeEx.Height\">\n            <summary>\t\n            <dd> <p>Height of the display mode.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDISPLAYMODEEX::Height']/*\"/>\t\n            <msdn-id>bb172549</msdn-id>\t\n            <unmanaged>unsigned int Height</unmanaged>\t\n            <unmanaged-short>unsigned int Height</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DisplayModeEx.RefreshRate\">\n            <summary>\t\n            <dd> <p>Refresh rate of the display mode.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDISPLAYMODEEX::RefreshRate']/*\"/>\t\n            <msdn-id>bb172549</msdn-id>\t\n            <unmanaged>unsigned int RefreshRate</unmanaged>\t\n            <unmanaged-short>unsigned int RefreshRate</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DisplayModeEx.Format\">\n            <summary>\t\n            <dd> <p>Format of the display mode. See <see cref=\"T:SharpDX.Direct3D9.Format\"/>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDISPLAYMODEEX::Format']/*\"/>\t\n            <msdn-id>bb172549</msdn-id>\t\n            <unmanaged>D3DFORMAT Format</unmanaged>\t\n            <unmanaged-short>D3DFORMAT Format</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DisplayModeEx.ScanLineOrdering\">\n            <summary>\t\n            <dd> <p>Indicates whether the scanline order is progressive or interlaced. See <strong><see cref=\"T:SharpDX.Direct3D9.ScanlineOrdering\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDISPLAYMODEEX::ScanLineOrdering']/*\"/>\t\n            <msdn-id>bb172549</msdn-id>\t\n            <unmanaged>D3DSCANLINEORDERING ScanLineOrdering</unmanaged>\t\n            <unmanaged-short>D3DSCANLINEORDERING ScanLineOrdering</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.DisplayModeEx.AspectRatio\">\n            <summary>\n            Gets the aspect ratio.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.DisplayMode\">\n            <summary>\t\n            <p>Describes the display mode.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDISPLAYMODE']/*\"/>\t\n            <msdn-id>bb172548</msdn-id>\t\n            <unmanaged>D3DDISPLAYMODE</unmanaged>\t\n            <unmanaged-short>D3DDISPLAYMODE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DisplayMode.Width\">\n            <summary>\t\n            <dd> <p>Screen width, in pixels. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDISPLAYMODE::Width']/*\"/>\t\n            <msdn-id>bb172548</msdn-id>\t\n            <unmanaged>unsigned int Width</unmanaged>\t\n            <unmanaged-short>unsigned int Width</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DisplayMode.Height\">\n            <summary>\t\n            <dd> <p>Screen height, in pixels. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDISPLAYMODE::Height']/*\"/>\t\n            <msdn-id>bb172548</msdn-id>\t\n            <unmanaged>unsigned int Height</unmanaged>\t\n            <unmanaged-short>unsigned int Height</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DisplayMode.RefreshRate\">\n            <summary>\t\n            <dd> <p>Refresh rate. The value of 0 indicates an adapter default. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDISPLAYMODE::RefreshRate']/*\"/>\t\n            <msdn-id>bb172548</msdn-id>\t\n            <unmanaged>unsigned int RefreshRate</unmanaged>\t\n            <unmanaged-short>unsigned int RefreshRate</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DisplayMode.Format\">\n            <summary>\t\n            <dd> <p>Member of the <see cref=\"T:SharpDX.Direct3D9.Format\"/> enumerated type, describing the surface format of the display mode. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDISPLAYMODE::Format']/*\"/>\t\n            <msdn-id>bb172548</msdn-id>\t\n            <unmanaged>D3DFORMAT Format</unmanaged>\t\n            <unmanaged-short>D3DFORMAT Format</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.DisplayMode.AspectRatio\">\n            <summary>\n            Gets the aspect ratio.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.DisplayModeExCollection\">\n            <summary>\n            A collection of <see cref=\"T:SharpDX.Direct3D9.DisplayModeEx\"/>\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.CubeTexture\">\n            <summary>\t\n            <p>Applications use the methods of the <see cref=\"T:SharpDX.Direct3D9.CubeTexture\"/> interface to manipulate a cube texture resource.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The <strong><see cref=\"T:SharpDX.Direct3D9.CubeTexture\"/></strong> interface can be obtained by calling the <strong><see cref=\"M:SharpDX.Direct3D9.Device.CreateCubeTexture(System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,SharpDX.Direct3D9.CubeTexture,System.IntPtr)\"/></strong> method or one of the <see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateCubeTexture(SharpDX.Direct3D9.Device,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,SharpDX.Direct3D9.CubeTexture@)\"/><em>xxx</em> functions.</p><p>This interface inherits additional functionality from the <strong><see cref=\"T:SharpDX.Direct3D9.BaseTexture\"/></strong> interface.</p><p>This interface, like all COM interfaces, inherits additional functionality from the <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interface.</p><p>The LPDIRECT3DCUBETEXTURE9 and PDIRECT3DCubeTexture9 types are defined as references to the <strong><see cref=\"T:SharpDX.Direct3D9.CubeTexture\"/></strong> interface. </p><pre><code> typedef struct <see cref=\"T:SharpDX.Direct3D9.CubeTexture\"/> *LPDIRECT3DCUBETEXTURE9, *PDIRECT3DCubeTexture9;\t\n            </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DCubeTexture9']/*\"/>\t\n            <msdn-id>bb174329</msdn-id>\t\n            <unmanaged>IDirect3DCubeTexture9</unmanaged>\t\n            <unmanaged-short>IDirect3DCubeTexture9</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.CubeTexture.#ctor(SharpDX.Direct3D9.Device,System.Int32,System.Int32,SharpDX.Direct3D9.Usage,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D9.CubeTexture\"/> class.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"edgeLength\">Length of the edge.</param>\n            <param name=\"levelCount\">The level count.</param>\n            <param name=\"usage\">The usage.</param>\n            <param name=\"format\">The format.</param>\n            <param name=\"pool\">The pool.</param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.CubeTexture.#ctor(SharpDX.Direct3D9.Device,System.Int32,System.Int32,SharpDX.Direct3D9.Usage,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,System.IntPtr@)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D9.CubeTexture\"/> class.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"edgeLength\">Length of the edge.</param>\n            <param name=\"levelCount\">The level count.</param>\n            <param name=\"usage\">The usage.</param>\n            <param name=\"format\">The format.</param>\n            <param name=\"pool\">The pool.</param>\n            <param name=\"sharedHandle\">The shared handle.</param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.CubeTexture.CheckRequirements(SharpDX.Direct3D9.Device,System.Int32,System.Int32,SharpDX.Direct3D9.Usage,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool)\">\n            <summary>\n            Checks texture-creation parameters.\n            </summary>\n            <param name=\"device\">Device associated with the texture.</param>\n            <param name=\"size\">Requested size of the texture. Null if </param>\n            <param name=\"mipLevelCount\">Requested number of mipmap levels for the texture.</param>\n            <param name=\"usage\">The requested usage for the texture.</param>\n            <param name=\"format\">Requested format for the texture.</param>\n            <param name=\"pool\">Memory class where the resource will be placed.</param>\n            <returns>A value type containing the proposed values to pass to the texture creation functions.</returns>\n            <unmanaged>HRESULT D3DXCheckCubeTextureRequirements([In] IDirect3DDevice9* pDevice,[InOut] unsigned int* pSize,[InOut] unsigned int* pNumMipLevels,[In] unsigned int Usage,[InOut] D3DFORMAT* pFormat,[In] D3DPOOL Pool)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.CubeTexture.Fill(SharpDX.Direct3D9.Fill3DCallback)\">\n            <summary>\n            Uses a user-provided function to fill each texel of each mip level of a given cube texture.\n            </summary>\n            <param name=\"callback\">A function that is used to fill the texture.</param>\n            <returns>A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.CubeTexture.Fill(SharpDX.Direct3D9.TextureShader)\">\n            <summary>\n            Uses a compiled high-level shader language (HLSL) function to fill each texel of each mipmap level of a texture.\n            </summary>\n            <param name=\"shader\">A texture shader object that is used to fill the texture.</param>\n            <returns>A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.CubeTexture.LockRectangle(SharpDX.Direct3D9.CubeMapFace,System.Int32,SharpDX.Direct3D9.LockFlags)\">\n            <summary>\n            Locks a rectangle on a cube texture resource.\n            </summary>\n            <param name=\"faceType\">Type of the face.</param>\n            <param name=\"level\">The level.</param>\n            <param name=\"flags\">The flags.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.DataRectangle\"/> describing the region locked.\n            </returns>\n            <unmanaged>HRESULT IDirect3DCubeTexture9::LockRect([In] D3DCUBEMAP_FACES FaceType,[In] unsigned int Level,[In] D3DLOCKED_RECT* pLockedRect,[In] const void* pRect,[In] D3DLOCK Flags)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.CubeTexture.LockRectangle(SharpDX.Direct3D9.CubeMapFace,System.Int32,SharpDX.Direct3D9.LockFlags,SharpDX.DataStream@)\">\n            <summary>\n            Locks a rectangle on a cube texture resource.\n            </summary>\n            <param name=\"faceType\">Type of the face.</param>\n            <param name=\"level\">The level.</param>\n            <param name=\"flags\">The flags.</param>\n            <param name=\"stream\">The stream pointing to the locked region.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.DataRectangle\"/> describing the region locked.\n            </returns>\n            <unmanaged>HRESULT IDirect3DCubeTexture9::LockRect([In] D3DCUBEMAP_FACES FaceType,[In] unsigned int Level,[In] D3DLOCKED_RECT* pLockedRect,[In] const void* pRect,[In] D3DLOCK Flags)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.CubeTexture.LockRectangle(SharpDX.Direct3D9.CubeMapFace,System.Int32,SharpDX.Rectangle,SharpDX.Direct3D9.LockFlags)\">\n            <summary>\n            Locks a rectangle on a cube texture resource.\n            </summary>\n            <param name=\"faceType\">Type of the face.</param>\n            <param name=\"level\">The level.</param>\n            <param name=\"rectangle\">The rectangle.</param>\n            <param name=\"flags\">The flags.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.DataRectangle\"/> describing the region locked.\n            </returns>\n            <unmanaged>HRESULT IDirect3DCubeTexture9::LockRect([In] D3DCUBEMAP_FACES FaceType,[In] unsigned int Level,[In] D3DLOCKED_RECT* pLockedRect,[In] const void* pRect,[In] D3DLOCK Flags)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.CubeTexture.LockRectangle(SharpDX.Direct3D9.CubeMapFace,System.Int32,SharpDX.Rectangle,SharpDX.Direct3D9.LockFlags,SharpDX.DataStream@)\">\n            <summary>\n            Locks a rectangle on a cube texture resource.\n            </summary>\n            <param name=\"faceType\">Type of the face.</param>\n            <param name=\"level\">The level.</param>\n            <param name=\"rectangle\">The rectangle.</param>\n            <param name=\"flags\">The flags.</param>\n            <param name=\"stream\">The stream pointing to the locked region.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.DataRectangle\"/> describing the region locked.\n            </returns>\n            <unmanaged>HRESULT IDirect3DCubeTexture9::LockRect([In] D3DCUBEMAP_FACES FaceType,[In] unsigned int Level,[In] D3DLOCKED_RECT* pLockedRect,[In] const void* pRect,[In] D3DLOCK Flags)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.CubeTexture.AddDirtyRectangle(SharpDX.Direct3D9.CubeMapFace)\">\n            <summary>\n            Adds a dirty region to a cube texture resource.\n            </summary>\n            <param name=\"faceType\">Type of the face.</param>\n            <returns>A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.</returns>\n            <unmanaged>HRESULT IDirect3DCubeTexture9::AddDirtyRect([In] D3DCUBEMAP_FACES FaceType,[In] const void* pDirtyRect)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.CubeTexture.AddDirtyRectangle(SharpDX.Direct3D9.CubeMapFace,SharpDX.Rectangle)\">\n            <summary>\n            Adds a dirty region to a cube texture resource.\n            </summary>\n            <param name=\"faceType\">Type of the face.</param>\n            <param name=\"dirtyRectRef\">The dirty rect ref.</param>\n            <returns>A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.</returns>\n            <unmanaged>HRESULT IDirect3DCubeTexture9::AddDirtyRect([In] D3DCUBEMAP_FACES FaceType,[In] const void* pDirtyRect)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.CubeTexture.FromFile(SharpDX.Direct3D9.Device,System.String)\">\n            <summary>\n            Creates a <see cref=\"T:SharpDX.Direct3D9.CubeTexture\"/> from a file\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"filename\">The filename.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Direct3D9.CubeTexture\"/>\n            </returns>\n            <unmanaged>HRESULT D3DXCreateCubeTextureFromFileExW([In] IDirect3DDevice9* pDevice,[In] const wchar_t* pSrcFile,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[In] void* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DCubeTexture9** ppCubeTexture)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.CubeTexture.FromFile(SharpDX.Direct3D9.Device,System.String,SharpDX.Direct3D9.Usage,SharpDX.Direct3D9.Pool)\">\n            <summary>\n            Creates a <see cref=\"T:SharpDX.Direct3D9.CubeTexture\"/> from a file\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"filename\">The filename.</param>\n            <param name=\"usage\">The usage.</param>\n            <param name=\"pool\">The pool.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Direct3D9.CubeTexture\"/>\n            </returns>\n            <unmanaged>HRESULT D3DXCreateCubeTextureFromFileExW([In] IDirect3DDevice9* pDevice,[In] const wchar_t* pSrcFile,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[In] void* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DCubeTexture9** ppCubeTexture)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.CubeTexture.FromFile(SharpDX.Direct3D9.Device,System.String,System.Int32,System.Int32,SharpDX.Direct3D9.Usage,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,SharpDX.Direct3D9.Filter,SharpDX.Direct3D9.Filter,System.Int32)\">\n            <summary>\n            Creates a <see cref=\"T:SharpDX.Direct3D9.CubeTexture\"/> from a file\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"filename\">The filename.</param>\n            <param name=\"size\">The size.</param>\n            <param name=\"levelCount\">The level count.</param>\n            <param name=\"usage\">The usage.</param>\n            <param name=\"format\">The format.</param>\n            <param name=\"pool\">The pool.</param>\n            <param name=\"filter\">The filter.</param>\n            <param name=\"mipFilter\">The mip filter.</param>\n            <param name=\"colorKey\">The color key.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Direct3D9.CubeTexture\"/>\n            </returns>\n            <unmanaged>HRESULT D3DXCreateCubeTextureFromFileExW([In] IDirect3DDevice9* pDevice,[In] const wchar_t* pSrcFile,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[In] void* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DCubeTexture9** ppCubeTexture)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.CubeTexture.FromFile(SharpDX.Direct3D9.Device,System.String,System.Int32,System.Int32,SharpDX.Direct3D9.Usage,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,SharpDX.Direct3D9.Filter,SharpDX.Direct3D9.Filter,System.Int32,SharpDX.Direct3D9.ImageInformation@)\">\n            <summary>\n            Creates a <see cref=\"T:SharpDX.Direct3D9.CubeTexture\"/> from a file\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"filename\">The filename.</param>\n            <param name=\"size\">The size.</param>\n            <param name=\"levelCount\">The level count.</param>\n            <param name=\"usage\">The usage.</param>\n            <param name=\"format\">The format.</param>\n            <param name=\"pool\">The pool.</param>\n            <param name=\"filter\">The filter.</param>\n            <param name=\"mipFilter\">The mip filter.</param>\n            <param name=\"colorKey\">The color key.</param>\n            <param name=\"imageInformation\">The image information.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Direct3D9.CubeTexture\"/>\n            </returns>\n            <unmanaged>HRESULT D3DXCreateCubeTextureFromFileExW([In] IDirect3DDevice9* pDevice,[In] const wchar_t* pSrcFile,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[In] void* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DCubeTexture9** ppCubeTexture)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.CubeTexture.FromFile(SharpDX.Direct3D9.Device,System.String,System.Int32,System.Int32,SharpDX.Direct3D9.Usage,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,SharpDX.Direct3D9.Filter,SharpDX.Direct3D9.Filter,System.Int32,SharpDX.Direct3D9.ImageInformation@,SharpDX.Direct3D9.PaletteEntry[]@)\">\n            <summary>\n            Creates a <see cref=\"T:SharpDX.Direct3D9.CubeTexture\"/> from a file\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"filename\">The filename.</param>\n            <param name=\"size\">The size.</param>\n            <param name=\"levelCount\">The level count.</param>\n            <param name=\"usage\">The usage.</param>\n            <param name=\"format\">The format.</param>\n            <param name=\"pool\">The pool.</param>\n            <param name=\"filter\">The filter.</param>\n            <param name=\"mipFilter\">The mip filter.</param>\n            <param name=\"colorKey\">The color key.</param>\n            <param name=\"imageInformation\">The image information.</param>\n            <param name=\"palette\">The palette.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Direct3D9.CubeTexture\"/>\n            </returns>\n            <unmanaged>HRESULT D3DXCreateCubeTextureFromFileExW([In] IDirect3DDevice9* pDevice,[In] const wchar_t* pSrcFile,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[In] void* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DCubeTexture9** ppCubeTexture)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.CubeTexture.FromMemory(SharpDX.Direct3D9.Device,System.Byte[])\">\n            <summary>\n            Creates a <see cref=\"T:SharpDX.Direct3D9.CubeTexture\"/> from a memory buffer.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"buffer\">The buffer.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Direct3D9.CubeTexture\"/>\n            </returns>\n            <unmanaged>HRESULT D3DXCreateCubeTextureFromFileInMemory([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] IDirect3DCubeTexture9** ppCubeTexture)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.CubeTexture.FromMemory(SharpDX.Direct3D9.Device,System.Byte[],SharpDX.Direct3D9.Usage,SharpDX.Direct3D9.Pool)\">\n            <summary>\n            Creates a <see cref=\"T:SharpDX.Direct3D9.CubeTexture\"/> from a memory buffer.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"buffer\">The buffer.</param>\n            <param name=\"usage\">The usage.</param>\n            <param name=\"pool\">The pool.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Direct3D9.CubeTexture\"/>\n            </returns>\n            <unmanaged>HRESULT D3DXCreateCubeTextureFromFileInMemoryEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[Out] D3DXIMAGE_INFO* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DCubeTexture9** ppCubeTexture)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.CubeTexture.FromMemory(SharpDX.Direct3D9.Device,System.Byte[],System.Int32,System.Int32,SharpDX.Direct3D9.Usage,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,SharpDX.Direct3D9.Filter,SharpDX.Direct3D9.Filter,System.Int32)\">\n            <summary>\n            Creates a <see cref=\"T:SharpDX.Direct3D9.CubeTexture\"/> from a memory buffer.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"buffer\">The buffer.</param>\n            <param name=\"size\">The size.</param>\n            <param name=\"levelCount\">The level count.</param>\n            <param name=\"usage\">The usage.</param>\n            <param name=\"format\">The format.</param>\n            <param name=\"pool\">The pool.</param>\n            <param name=\"filter\">The filter.</param>\n            <param name=\"mipFilter\">The mip filter.</param>\n            <param name=\"colorKey\">The color key.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Direct3D9.CubeTexture\"/>\n            </returns>\n            <unmanaged>HRESULT D3DXCreateCubeTextureFromFileInMemoryEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[Out] D3DXIMAGE_INFO* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DCubeTexture9** ppCubeTexture)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.CubeTexture.FromMemory(SharpDX.Direct3D9.Device,System.Byte[],System.Int32,System.Int32,SharpDX.Direct3D9.Usage,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,SharpDX.Direct3D9.Filter,SharpDX.Direct3D9.Filter,System.Int32,SharpDX.Direct3D9.ImageInformation@)\">\n            <summary>\n            Creates a <see cref=\"T:SharpDX.Direct3D9.CubeTexture\"/> from a memory buffer.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"buffer\">The buffer.</param>\n            <param name=\"size\">The size.</param>\n            <param name=\"levelCount\">The level count.</param>\n            <param name=\"usage\">The usage.</param>\n            <param name=\"format\">The format.</param>\n            <param name=\"pool\">The pool.</param>\n            <param name=\"filter\">The filter.</param>\n            <param name=\"mipFilter\">The mip filter.</param>\n            <param name=\"colorKey\">The color key.</param>\n            <param name=\"imageInformation\">The image information.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Direct3D9.CubeTexture\"/>\n            </returns>\n            <unmanaged>HRESULT D3DXCreateCubeTextureFromFileInMemoryEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[Out] D3DXIMAGE_INFO* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DCubeTexture9** ppCubeTexture)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.CubeTexture.FromMemory(SharpDX.Direct3D9.Device,System.Byte[],System.Int32,System.Int32,SharpDX.Direct3D9.Usage,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,SharpDX.Direct3D9.Filter,SharpDX.Direct3D9.Filter,System.Int32,SharpDX.Direct3D9.ImageInformation@,SharpDX.Direct3D9.PaletteEntry[]@)\">\n            <summary>\n            Creates a <see cref=\"T:SharpDX.Direct3D9.CubeTexture\"/> from a memory buffer.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"buffer\">The buffer.</param>\n            <param name=\"size\">The size.</param>\n            <param name=\"levelCount\">The level count.</param>\n            <param name=\"usage\">The usage.</param>\n            <param name=\"format\">The format.</param>\n            <param name=\"pool\">The pool.</param>\n            <param name=\"filter\">The filter.</param>\n            <param name=\"mipFilter\">The mip filter.</param>\n            <param name=\"colorKey\">The color key.</param>\n            <param name=\"imageInformation\">The image information.</param>\n            <param name=\"palette\">The palette.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Direct3D9.CubeTexture\"/>\n            </returns>\n            <unmanaged>HRESULT D3DXCreateCubeTextureFromFileInMemoryEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[Out] D3DXIMAGE_INFO* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DCubeTexture9** ppCubeTexture)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.CubeTexture.FromStream(SharpDX.Direct3D9.Device,System.IO.Stream)\">\n            <summary>\n            Creates a <see cref=\"T:SharpDX.Direct3D9.CubeTexture\"/> from a stream.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"stream\">The stream.</param>\n            <returns>A <see cref=\"T:SharpDX.Direct3D9.CubeTexture\"/></returns>\n            <unmanaged>HRESULT D3DXCreateCubeTextureFromFileInMemory([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] IDirect3DCubeTexture9** ppCubeTexture)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.CubeTexture.FromStream(SharpDX.Direct3D9.Device,System.IO.Stream,SharpDX.Direct3D9.Usage,SharpDX.Direct3D9.Pool)\">\n            <summary>\n            Creates a <see cref=\"T:SharpDX.Direct3D9.CubeTexture\"/> from a stream.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"stream\">The stream.</param>\n            <param name=\"usage\">The usage.</param>\n            <param name=\"pool\">The pool.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Direct3D9.CubeTexture\"/>\n            </returns>\n            <unmanaged>HRESULT D3DXCreateCubeTextureFromFileInMemoryEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[Out] D3DXIMAGE_INFO* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DCubeTexture9** ppCubeTexture)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.CubeTexture.FromStream(SharpDX.Direct3D9.Device,System.IO.Stream,System.Int32,System.Int32,SharpDX.Direct3D9.Usage,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,SharpDX.Direct3D9.Filter,SharpDX.Direct3D9.Filter,System.Int32)\">\n            <summary>\n            Creates a <see cref=\"T:SharpDX.Direct3D9.CubeTexture\"/> from a stream.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"stream\">The stream.</param>\n            <param name=\"size\">The size.</param>\n            <param name=\"levelCount\">The level count.</param>\n            <param name=\"usage\">The usage.</param>\n            <param name=\"format\">The format.</param>\n            <param name=\"pool\">The pool.</param>\n            <param name=\"filter\">The filter.</param>\n            <param name=\"mipFilter\">The mip filter.</param>\n            <param name=\"colorKey\">The color key.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Direct3D9.CubeTexture\"/>\n            </returns>\n            <unmanaged>HRESULT D3DXCreateCubeTextureFromFileInMemoryEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[Out] D3DXIMAGE_INFO* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DCubeTexture9** ppCubeTexture)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.CubeTexture.FromStream(SharpDX.Direct3D9.Device,System.IO.Stream,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Usage,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,SharpDX.Direct3D9.Filter,SharpDX.Direct3D9.Filter,System.Int32)\">\n            <summary>\n            Creates a <see cref=\"T:SharpDX.Direct3D9.CubeTexture\"/> from a stream.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"stream\">The stream.</param>\n            <param name=\"sizeBytes\">The size bytes.</param>\n            <param name=\"size\">The size.</param>\n            <param name=\"levelCount\">The level count.</param>\n            <param name=\"usage\">The usage.</param>\n            <param name=\"format\">The format.</param>\n            <param name=\"pool\">The pool.</param>\n            <param name=\"filter\">The filter.</param>\n            <param name=\"mipFilter\">The mip filter.</param>\n            <param name=\"colorKey\">The color key.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Direct3D9.CubeTexture\"/>\n            </returns>\n            <unmanaged>HRESULT D3DXCreateCubeTextureFromFileInMemoryEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[Out] D3DXIMAGE_INFO* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DCubeTexture9** ppCubeTexture)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.CubeTexture.FromStream(SharpDX.Direct3D9.Device,System.IO.Stream,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Usage,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,SharpDX.Direct3D9.Filter,SharpDX.Direct3D9.Filter,System.Int32,SharpDX.Direct3D9.ImageInformation@)\">\n            <summary>\n            Creates a <see cref=\"T:SharpDX.Direct3D9.CubeTexture\"/> from a stream.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"stream\">The stream.</param>\n            <param name=\"sizeBytes\">The size bytes.</param>\n            <param name=\"size\">The size.</param>\n            <param name=\"levelCount\">The level count.</param>\n            <param name=\"usage\">The usage.</param>\n            <param name=\"format\">The format.</param>\n            <param name=\"pool\">The pool.</param>\n            <param name=\"filter\">The filter.</param>\n            <param name=\"mipFilter\">The mip filter.</param>\n            <param name=\"colorKey\">The color key.</param>\n            <param name=\"imageInformation\">The image information.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Direct3D9.CubeTexture\"/>\n            </returns>\n            <unmanaged>HRESULT D3DXCreateCubeTextureFromFileInMemoryEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[Out] D3DXIMAGE_INFO* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DCubeTexture9** ppCubeTexture)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.CubeTexture.FromStream(SharpDX.Direct3D9.Device,System.IO.Stream,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Usage,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,SharpDX.Direct3D9.Filter,SharpDX.Direct3D9.Filter,System.Int32,SharpDX.Direct3D9.ImageInformation@,SharpDX.Direct3D9.PaletteEntry[]@)\">\n            <summary>\n            Creates a <see cref=\"T:SharpDX.Direct3D9.CubeTexture\"/> from a stream.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"stream\">The stream.</param>\n            <param name=\"sizeBytes\">The size bytes.</param>\n            <param name=\"size\">The size.</param>\n            <param name=\"levelCount\">The level count.</param>\n            <param name=\"usage\">The usage.</param>\n            <param name=\"format\">The format.</param>\n            <param name=\"pool\">The pool.</param>\n            <param name=\"filter\">The filter.</param>\n            <param name=\"mipFilter\">The mip filter.</param>\n            <param name=\"colorKey\">The color key.</param>\n            <param name=\"imageInformation\">The image information.</param>\n            <param name=\"palette\">The palette.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Direct3D9.CubeTexture\"/>\n            </returns>\n            <unmanaged>HRESULT D3DXCreateCubeTextureFromFileInMemoryEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[Out] D3DXIMAGE_INFO* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DCubeTexture9** ppCubeTexture)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.CubeTexture.CreateFromMemory(SharpDX.Direct3D9.Device,System.Byte[],System.Int32,System.Int32,SharpDX.Direct3D9.Usage,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,SharpDX.Direct3D9.Filter,SharpDX.Direct3D9.Filter,System.Int32,System.IntPtr,SharpDX.Direct3D9.PaletteEntry[])\">\n            <summary>\n            Creates a <see cref=\"T:SharpDX.Direct3D9.CubeTexture\"/> from a stream.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"buffer\">The buffer.</param>\n            <param name=\"size\">The size.</param>\n            <param name=\"levelCount\">The level count.</param>\n            <param name=\"usage\">The usage.</param>\n            <param name=\"format\">The format.</param>\n            <param name=\"pool\">The pool.</param>\n            <param name=\"filter\">The filter.</param>\n            <param name=\"mipFilter\">The mip filter.</param>\n            <param name=\"colorKey\">The color key.</param>\n            <param name=\"imageInformation\">The image information.</param>\n            <param name=\"palette\">The palette.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Direct3D9.CubeTexture\"/>\n            </returns>\n            <unmanaged>HRESULT D3DXCreateCubeTextureFromFileInMemoryEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[Out] D3DXIMAGE_INFO* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DCubeTexture9** ppCubeTexture)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.CubeTexture.CreateFromStream(SharpDX.Direct3D9.Device,System.IO.Stream,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Usage,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,SharpDX.Direct3D9.Filter,SharpDX.Direct3D9.Filter,System.Int32,System.IntPtr,SharpDX.Direct3D9.PaletteEntry[])\">\n            <summary>\n            Creates a <see cref=\"T:SharpDX.Direct3D9.CubeTexture\"/> from a stream.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"stream\">The stream.</param>\n            <param name=\"sizeBytes\">The size bytes.</param>\n            <param name=\"size\">The size.</param>\n            <param name=\"levelCount\">The level count.</param>\n            <param name=\"usage\">The usage.</param>\n            <param name=\"format\">The format.</param>\n            <param name=\"pool\">The pool.</param>\n            <param name=\"filter\">The filter.</param>\n            <param name=\"mipFilter\">The mip filter.</param>\n            <param name=\"colorKey\">The color key.</param>\n            <param name=\"imageInformation\">The image information.</param>\n            <param name=\"palette\">The palette.</param>\n            <returns>A <see cref=\"T:SharpDX.Direct3D9.CubeTexture\"/></returns>\n            <unmanaged>HRESULT D3DXCreateCubeTextureFromFileInMemoryEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[Out] D3DXIMAGE_INFO* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DCubeTexture9** ppCubeTexture)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.CubeTexture.CreateFromPointer(SharpDX.Direct3D9.Device,System.IntPtr,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Usage,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,SharpDX.Direct3D9.Filter,SharpDX.Direct3D9.Filter,System.Int32,System.IntPtr,SharpDX.Direct3D9.PaletteEntry[])\">\n            <summary>\n            Creates a <see cref=\"T:SharpDX.Direct3D9.CubeTexture\"/> from a stream.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"pointer\">The pointer.</param>\n            <param name=\"sizeInBytes\">The size in bytes.</param>\n            <param name=\"size\">The size.</param>\n            <param name=\"levelCount\">The level count.</param>\n            <param name=\"usage\">The usage.</param>\n            <param name=\"format\">The format.</param>\n            <param name=\"pool\">The pool.</param>\n            <param name=\"filter\">The filter.</param>\n            <param name=\"mipFilter\">The mip filter.</param>\n            <param name=\"colorKey\">The color key.</param>\n            <param name=\"imageInformation\">The image information.</param>\n            <param name=\"palette\">The palette.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Direct3D9.CubeTexture\"/>\n            </returns>\n            <unmanaged>HRESULT D3DXCreateCubeTextureFromFileInMemoryEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[Out] D3DXIMAGE_INFO* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DCubeTexture9** ppCubeTexture)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.CubeTexture.CreateFromFile(SharpDX.Direct3D9.Device,System.String,System.Int32,System.Int32,SharpDX.Direct3D9.Usage,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,SharpDX.Direct3D9.Filter,SharpDX.Direct3D9.Filter,System.Int32,System.IntPtr,SharpDX.Direct3D9.PaletteEntry[])\">\n            <summary>\n            Creates a <see cref=\"T:SharpDX.Direct3D9.CubeTexture\"/> from a stream.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"fileName\">Name of the file.</param>\n            <param name=\"size\">The size.</param>\n            <param name=\"levelCount\">The level count.</param>\n            <param name=\"usage\">The usage.</param>\n            <param name=\"format\">The format.</param>\n            <param name=\"pool\">The pool.</param>\n            <param name=\"filter\">The filter.</param>\n            <param name=\"mipFilter\">The mip filter.</param>\n            <param name=\"colorKey\">The color key.</param>\n            <param name=\"imageInformation\">The image information.</param>\n            <param name=\"palette\">The palette.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Direct3D9.CubeTexture\"/>\n            </returns>\n            <unmanaged>HRESULT D3DXCreateCubeTextureFromFileInMemoryEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[Out] D3DXIMAGE_INFO* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DCubeTexture9** ppCubeTexture)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.CubeTexture.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D9.CubeTexture\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.CubeTexture.op_Explicit(System.IntPtr)~SharpDX.Direct3D9.CubeTexture\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D9.CubeTexture\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.CubeTexture.GetLevelDescription(System.Int32)\">\n            <summary>\t\n            <p>Retrieves a description of one face of the specified cube texture level.</p>\t\n            </summary>\t\n            <param name=\"level\"><dd>  <p>Specifies a level of a mipmapped cube texture.</p> </dd></param>\t\n            <returns><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.SurfaceDescription\"/></strong> structure, describing one face of the specified cube texture level.</p> </dd></returns>\t\n            <remarks>\t\n            <p>The <strong><see cref=\"T:SharpDX.Direct3D9.SurfaceDescription\"/></strong> structure contains Width and Height members, which describe the size of one face in the cube. To get the size of the entire cube, multiply six (the number of cube faces) by the product of Width and Height.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DCubeTexture9::GetLevelDesc']/*\"/>\t\n            <msdn-id>bb174332</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DCubeTexture9::GetLevelDesc([In] unsigned int Level,[Out] D3DSURFACE_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>IDirect3DCubeTexture9::GetLevelDesc</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.CubeTexture.GetCubeMapSurface(SharpDX.Direct3D9.CubeMapFace,System.Int32)\">\n            <summary>\t\n            <p>Retrieves a cube texture map surface.</p>\t\n            </summary>\t\n            <param name=\"faceType\"><dd>  <p>Member of the <strong><see cref=\"T:SharpDX.Direct3D9.CubeMapFace\"/></strong> enumerated type, identifying a cube map face. </p> </dd></param>\t\n            <param name=\"level\"><dd>  <p>Specifies a level of a mipmapped cube texture. </p> </dd></param>\t\n            <returns><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D9.Surface\"/></strong> interface, representing the returned cube texture map surface. </p> </dd></returns>\t\n            <remarks>\t\n            <p>Calling this method will increase the internal reference count on the <strong><see cref=\"T:SharpDX.Direct3D9.Surface\"/></strong> interface. Failure to call <strong>IUnknown::Release</strong> when finished using this <strong><see cref=\"T:SharpDX.Direct3D9.Surface\"/></strong> interface results in a memory leak.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DCubeTexture9::GetCubeMapSurface']/*\"/>\t\n            <msdn-id>bb174331</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DCubeTexture9::GetCubeMapSurface([In] D3DCUBEMAP_FACES FaceType,[In] unsigned int Level,[Out] IDirect3DSurface9** ppCubeMapSurface)</unmanaged>\t\n            <unmanaged-short>IDirect3DCubeTexture9::GetCubeMapSurface</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.CubeTexture.LockRectangle(SharpDX.Direct3D9.CubeMapFace,System.Int32,SharpDX.Direct3D9.LockedRectangle@,System.IntPtr,SharpDX.Direct3D9.LockFlags)\">\n            <summary>\t\n            <p>Locks a rectangle on a cube texture resource.</p>\t\n            </summary>\t\n            <param name=\"faceType\"><dd>  <p>Member of the <strong><see cref=\"T:SharpDX.Direct3D9.CubeMapFace\"/></strong> enumerated type, identifying a cube map face. </p> </dd></param>\t\n            <param name=\"level\"><dd>  <p>Specifies a level of a mipmapped cube texture. </p> </dd></param>\t\n            <param name=\"lockedRectRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.LockedRectangle\"/></strong> structure, describing the region to lock. </p> </dd></param>\t\n            <param name=\"rectRef\"><dd>  <p>Pointer to a rectangle to lock. Specified by a reference to a <strong><see cref=\"T:SharpDX.Rectangle\"/></strong> structure. Specifying <strong><c>null</c></strong> for this parameter expands the dirty region to cover the entire cube texture.</p> </dd></param>\t\n            <param name=\"flags\"><dd>  <p>Combination of zero or more locking flags that describe the type of lock to perform. For this method, the valid flags are:  </p> <ul> <li><see cref=\"F:SharpDX.Direct3D9.LockFlags.Discard\"/></li> <li><see cref=\"F:SharpDX.Direct3D9.LockFlags.NoDirtyUpdate\"/></li> <li><see cref=\"F:SharpDX.Direct3D9.LockFlags.NoSystemLock\"/></li> <li><see cref=\"F:SharpDX.Direct3D9.LockFlags.ReadOnly\"/></li> </ul> <p> You may not specify a subrect when using <see cref=\"F:SharpDX.Direct3D9.LockFlags.Discard\"/>. For a description of the flags, see <see cref=\"T:SharpDX.Direct3D9.LockFlags\"/>. </p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/> is returned if one or more of the arguments is invalid.</p></returns>\t\n            <remarks>\t\n            <p>For performance reasons, dirty regions are only recorded for level zero of a texture. Dirty regions are automatically recorded when <strong><see cref=\"M:SharpDX.Direct3D9.CubeTexture.LockRectangle(SharpDX.Direct3D9.CubeMapFace,System.Int32,SharpDX.Direct3D9.LockFlags)\"/></strong> is called without <see cref=\"F:SharpDX.Direct3D9.LockFlags.NoDirtyUpdate\"/> or <see cref=\"F:SharpDX.Direct3D9.LockFlags.ReadOnly\"/>. See <strong><see cref=\"M:SharpDX.Direct3D9.Device.UpdateTexture(SharpDX.Direct3D9.BaseTexture,SharpDX.Direct3D9.BaseTexture)\"/></strong> for more information.</p><p>Cube textures created with <see cref=\"F:SharpDX.Direct3D9.Pool.Default\"/> are not lockable. Cube textures created in video memory are lockable when created with <strong>USAGE_DYNAMIC</strong>.</p><p>The only lockable format for a depth-stencil texture is <see cref=\"F:SharpDX.Direct3D9.Format.D16Lockable\"/>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DCubeTexture9::LockRect']/*\"/>\t\n            <msdn-id>bb174334</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DCubeTexture9::LockRect([In] D3DCUBEMAP_FACES FaceType,[In] unsigned int Level,[Out] D3DLOCKED_RECT* pLockedRect,[In] const void* pRect,[In] D3DLOCK Flags)</unmanaged>\t\n            <unmanaged-short>IDirect3DCubeTexture9::LockRect</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.CubeTexture.UnlockRectangle(SharpDX.Direct3D9.CubeMapFace,System.Int32)\">\n            <summary>\t\n            <p>Unlocks a rectangle on a cube texture resource.</p>\t\n            </summary>\t\n            <param name=\"faceType\"><dd>  <p>Member of the <strong><see cref=\"T:SharpDX.Direct3D9.CubeMapFace\"/></strong> enumerated type, identifying a cube map face. </p> </dd></param>\t\n            <param name=\"level\"><dd>  <p>Specifies a level of a mipmapped cube texture. </p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DCubeTexture9::UnlockRect']/*\"/>\t\n            <msdn-id>bb174335</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DCubeTexture9::UnlockRect([In] D3DCUBEMAP_FACES FaceType,[In] unsigned int Level)</unmanaged>\t\n            <unmanaged-short>IDirect3DCubeTexture9::UnlockRect</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.CubeTexture.AddDirtyRectangle(SharpDX.Direct3D9.CubeMapFace,System.IntPtr)\">\n            <summary>\t\n            <p>Adds a dirty region to a cube texture resource.</p>\t\n            </summary>\t\n            <param name=\"faceType\"><dd>  <p>Member of the <strong><see cref=\"T:SharpDX.Direct3D9.CubeMapFace\"/></strong> enumerated type, identifying the cube map face. </p> </dd></param>\t\n            <param name=\"dirtyRectRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Rectangle\"/></strong> structure, specifying the dirty region. Specifying <strong><c>null</c></strong> expands the dirty region to cover the entire cube texture. </p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>For performance reasons, dirty regions are only recorded for level zero of a texture. For sublevels, it is assumed that the corresponding (scaled) rectangle or box is also dirty. Dirty regions are automatically recorded when <strong><see cref=\"M:SharpDX.Direct3D9.CubeTexture.LockRectangle(SharpDX.Direct3D9.CubeMapFace,System.Int32,SharpDX.Direct3D9.LockFlags)\"/></strong> is called without <see cref=\"F:SharpDX.Direct3D9.LockFlags.NoDirtyUpdate\"/> or <see cref=\"F:SharpDX.Direct3D9.LockFlags.ReadOnly\"/>. The destination surface of <strong><see cref=\"M:SharpDX.Direct3D9.Device.UpdateSurface(SharpDX.Direct3D9.Surface,SharpDX.Direct3D9.Surface)\"/></strong> is also marked dirty automatically.</p><p>Using <see cref=\"F:SharpDX.Direct3D9.LockFlags.NoDirtyUpdate\"/> and explicitly specifying dirty regions can be used to increase the efficiency of <strong><see cref=\"M:SharpDX.Direct3D9.Device.UpdateTexture(SharpDX.Direct3D9.BaseTexture,SharpDX.Direct3D9.BaseTexture)\"/></strong>. Using this method, applications can optimize what subset of a resource is copied by specifying dirty regions on the resource. However, the dirty regions may be expanded to optimize alignment.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DCubeTexture9::AddDirtyRect']/*\"/>\t\n            <msdn-id>bb174330</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DCubeTexture9::AddDirtyRect([In] D3DCUBEMAP_FACES FaceType,[In] const void* pDirtyRect)</unmanaged>\t\n            <unmanaged-short>IDirect3DCubeTexture9::AddDirtyRect</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.CubeTextureRequirements\">\n            <summary>\n            A Cube Texture requirement.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.CubeTextureRequirements.Size\">\n            <summary>\n            The corrected size of the texture, in pixels.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.CubeTextureRequirements.Format\">\n            <summary>\n            The corrected surface format.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.CubeTextureRequirements.MipLevelCount\">\n            <summary>\n            The corrected mip level count.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.D3DX\">\n            <summary>\n            D3DX constants and methods\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.D3DX.Default\">\n            <summary>\n            The value used to signify that the default value for a parameter should be used.\n            </summary>\n            <unmanaged>D3DX_DEFAULT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.D3DX.DefaultNonPowerOf2\">\n            <summary>\n            The default value for non power-of-two textures.\n            </summary>\n            <unmanaged>D3DX_DEFAULT_NONPOW2</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.D3DX.FormatFromFile\">\n            <summary>\n            Indicates that the method should format from file.\n            </summary>\n            <unmanaged>D3DFMT_FROM_FILE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.D3DX.FromFile\">\n            <summary>\n            Indicates that the method should load from file.\n            </summary>\n            <unmanaged>D3DX_FROM_FILE</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX.CheckVersion\">\n            <summary>\n            Checks the D3DX runtime version against this compiled version.\n            </summary>\n            <returns>True if version are compatible</returns>\n            <unmanaged>BOOL D3DXCheckVersion([In] unsigned int D3DSdkVersion,[In] unsigned int D3DXSdkVersion)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX.DebugMute(System.Boolean)\">\n            <summary>\n            Get and set debug mute mode.\n            </summary>\n            <param name=\"mute\">if set to <c>true</c> [mute].</param>\n            <returns>Return the debug mute mode</returns>\n            <unmanaged>BOOL D3DXDebugMute([In] BOOL Mute)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX.DeclaratorFromFVF(SharpDX.Direct3D9.VertexFormat)\">\n            <summary>\n            Converts a declarator from a flexible vertex format (FVF) code.\n            </summary>\n            <param name=\"fvf\">Combination of <see cref=\"T:SharpDX.Direct3D9.VertexFormat\"/> that describes the FVF from which to generate the returned declarator array..</param>\n            <returns>\n            A declarator from a flexible vertex format (FVF) code.\n            </returns>\n            <unmanaged>HRESULT D3DXDeclaratorFromFVF([In] D3DFVF FVF,[In, Buffer] D3DVERTEXELEMENT9* pDeclarator)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX.FVFFromDeclarator(SharpDX.Direct3D9.VertexElement[])\">\n            <summary>\n            Converts a flexible vertex format (FVF) code from a declarator.\n            </summary>\n            <param name=\"declarator\">The declarator array.</param>\n            <returns>A <see cref=\"T:SharpDX.Direct3D9.VertexFormat\"/> that describes the vertex format returned from the declarator.</returns>\n            <unmanaged>HRESULT D3DXFVFFromDeclarator([In, Buffer] const D3DVERTEXELEMENT9* pDeclarator,[Out] D3DFVF* pFVF)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX.GenerateOutputDeclaration(SharpDX.Direct3D9.VertexElement[])\">\n            <summary>\n            Generates an output vertex declaration from the input declaration. The output declaration is intended for use by the mesh tessellation functions.\n            </summary>\n            <param name=\"declaration\">The input declaration.</param>\n            <returns>The output declaration</returns>\n            <unmanaged>HRESULT D3DXGenerateOutputDecl([In, Buffer] D3DVERTEXELEMENT9* pOutput,[In, Buffer] const D3DVERTEXELEMENT9* pInput)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX.GetDeclarationLength(SharpDX.Direct3D9.VertexElement[])\">\n            <summary>\n            Gets the number of elements in the vertex declaration.\n            </summary>\n            <param name=\"declaration\">The declaration.</param>\n            <returns>The number of elements in the vertex declaration.</returns>\n            <unmanaged>unsigned int D3DXGetDeclLength([In, Buffer] const D3DVERTEXELEMENT9* pDecl)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX.GetDeclarationVertexSize(SharpDX.Direct3D9.VertexElement[],System.Int32)\">\n            <summary>\n            Gets the size of a vertex from the vertex declaration.\n            </summary>\n            <param name=\"elements\">The elements.</param>\n            <param name=\"stream\">The stream.</param>\n            <returns>The vertex declaration size, in bytes.</returns>\n            <unmanaged>unsigned int D3DXGetDeclVertexSize([In, Buffer] const D3DVERTEXELEMENT9* pDecl,[In] unsigned int Stream)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX.GetFVFVertexSize(SharpDX.Direct3D9.VertexFormat)\">\n            <summary>\n            Returns the size of a vertex for a flexible vertex format (FVF).\n            </summary>\n            <param name=\"fvf\">The vertex format.</param>\n            <returns>The FVF vertex size, in bytes.</returns>\n            <unmanaged>unsigned int D3DXGetFVFVertexSize([In] D3DFVF FVF)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX.GetRectanglePatchSize(System.Single,System.Int32@,System.Int32@)\">\n            <summary>\n            Gets the size of the rectangle patch.\n            </summary>\n            <param name=\"segmentCount\">The segment count.</param>\n            <param name=\"triangleCount\">The triangle count.</param>\n            <param name=\"vertexCount\">The vertex count.</param>\n            <returns>A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.</returns>\n            <unmanaged>HRESULT D3DXRectPatchSize([In] const float* pfNumSegs,[In] unsigned int* pdwTriangles,[In] unsigned int* pdwVertices)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX.GetTrianglePatchSize(System.Single,System.Int32@,System.Int32@)\">\n            <summary>\n            Gets the size of the triangle patch.\n            </summary>\n            <param name=\"segmentCount\">The segment count.</param>\n            <param name=\"triangleCount\">The triangle count.</param>\n            <param name=\"vertexCount\">The vertex count.</param>\n            <returns>A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.</returns>\n            <unmanaged>HRESULT D3DXTriPatchSize([In] const float* pfNumSegs,[In] unsigned int* pdwTriangles,[In] unsigned int* pdwVertices)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX.GetVectors(SharpDX.DataStream,System.Int32,SharpDX.Direct3D9.VertexFormat)\">\n            <summary>\n            Gets an array of <see cref=\"T:SharpDX.Vector3\"/> from a <see cref=\"T:SharpDX.DataStream\"/>.\n            </summary>\n            <param name=\"stream\">The stream.</param>\n            <param name=\"vertexCount\">The vertex count.</param>\n            <param name=\"format\">The format.</param>\n            <returns>An array of <see cref=\"T:SharpDX.Vector3\"/> </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX.GetVectors(SharpDX.DataStream,System.Int32,System.Int32)\">\n            <summary>\n            Gets an array of <see cref=\"T:SharpDX.Vector3\"/> from a <see cref=\"T:SharpDX.DataStream\"/>.\n            </summary>\n            <param name=\"stream\">The stream.</param>\n            <param name=\"vertexCount\">The vertex count.</param>\n            <param name=\"stride\">The stride.</param>\n            <returns>An array of <see cref=\"T:SharpDX.Vector3\"/> </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX.MakeFourCC(System.Byte,System.Byte,System.Byte,System.Byte)\">\n            <summary>\n            Creates a FOURCC Format code from bytes description.\n            </summary>\n            <param name=\"c1\">The c1.</param>\n            <param name=\"c2\">The c2.</param>\n            <param name=\"c3\">The c3.</param>\n            <param name=\"c4\">The c4.</param>\n            <returns>A Format FourCC</returns>\n            <unmanaged>MAKEFOURCC</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX.OptimizeFaces(System.Int16[],System.Int32,System.Int32)\">\n            <summary>\n            Generates an optimized face remapping for a triangle list.\n            </summary>\n            <param name=\"indices\">The indices.</param>\n            <param name=\"faceCount\">The face count.</param>\n            <param name=\"vertexCount\">The vertex count.</param>\n            <returns>The original mesh face that was split to generate the current face.</returns>\n            <unmanaged>HRESULT D3DXOptimizeFaces([In] const void* pbIndices,[In] unsigned int cFaces,[In] unsigned int cVertices,[In] BOOL b32BitIndices,[In, Buffer] int* pFaceRemap)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX.OptimizeFaces(System.Int32[],System.Int32,System.Int32)\">\n            <summary>\n            Generates an optimized vertex remapping for a triangle list. This function is commonly used after applying the face remapping generated by D3DXOptimizeFaces.\n            </summary>\n            <param name=\"indices\">The indices.</param>\n            <param name=\"faceCount\">The face count.</param>\n            <param name=\"vertexCount\">The vertex count.</param>\n            <returns>The original mesh face that was split to generate the current face.</returns>\n            <unmanaged>HRESULT D3DXOptimizeFaces([In] const void* pbIndices,[In] unsigned int cFaces,[In] unsigned int cVertices,[In] BOOL b32BitIndices,[In, Buffer] int* pFaceRemap)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX.OptimizeVertices(System.Int16[],System.Int32,System.Int32)\">\n            <summary>\n            Generates an optimized vertex remapping for a triangle list. This function is commonly used after applying the face remapping generated by <see cref=\"M:SharpDX.Direct3D9.D3DX.OptimizeFaces(System.Int16[],System.Int32,System.Int32)\"/>.\n            </summary>\n            <param name=\"indices\">The indices.</param>\n            <param name=\"faceCount\">The face count.</param>\n            <param name=\"vertexCount\">The vertex count.</param>\n            <returns>A buffer that will contain the new index for each vertex. The value stored in pVertexRemap for a given element is the source vertex location in the new vertex ordering.</returns>\n            <unmanaged>HRESULT D3DXOptimizeVertices([In] const void* pbIndices,[In] unsigned int cFaces,[In] unsigned int cVertices,[In] BOOL b32BitIndices,[In, Buffer] int* pVertexRemap)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX.OptimizeVertices(System.Int32[],System.Int32,System.Int32)\">\n            <summary>\n            Generates an optimized vertex remapping for a triangle list. This function is commonly used after applying the face remapping generated by <see cref=\"M:SharpDX.Direct3D9.D3DX.OptimizeFaces(System.Int32[],System.Int32,System.Int32)\"/>.\n            </summary>\n            <param name=\"indices\">The indices.</param>\n            <param name=\"faceCount\">The face count.</param>\n            <param name=\"vertexCount\">The vertex count.</param>\n            <returns>A buffer that will contain the new index for each vertex. The value stored in pVertexRemap for a given element is the source vertex location in the new vertex ordering.</returns>\n            <unmanaged>HRESULT D3DXOptimizeVertices([In] const void* pbIndices,[In] unsigned int cFaces,[In] unsigned int cVertices,[In] BOOL b32BitIndices,[In, Buffer] int* pVertexRemap)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.Device\">\n            <summary>\t\n            <p>Applications use the methods of the <see cref=\"T:SharpDX.Direct3D9.Device\"/> interface to perform DrawPrimitive-based rendering, create resources, work with system-level variables, adjust gamma ramp levels, work with palettes, and create shaders.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface is obtained by calling the <strong><see cref=\"M:SharpDX.Direct3D9.Direct3D.CreateDevice(System.Int32,SharpDX.Direct3D9.DeviceType,System.IntPtr,SharpDX.Direct3D9.CreateFlags,SharpDX.Direct3D9.PresentParameters[],SharpDX.Direct3D9.Device)\"/></strong> method.</p><p>This interface, like all COM interfaces, inherits the <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interface methods.</p><p>The LPDIRECT3DDEVICE9 and PDIRECT3DDEVICE9 types are defined as references to the <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface.</p><pre><code> typedef struct <see cref=\"T:SharpDX.Direct3D9.Device\"/> *LPDIRECT3DDEVICE9, *PDIRECT3DDEVICE9;\t\n            </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9']/*\"/>\t\n            <msdn-id>bb174336</msdn-id>\t\n            <unmanaged>IDirect3DDevice9</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.#ctor(SharpDX.Direct3D9.Direct3D,System.Int32,SharpDX.Direct3D9.DeviceType,System.IntPtr,SharpDX.Direct3D9.CreateFlags,SharpDX.Direct3D9.PresentParameters[])\">\n            <summary>\t\n            Creates a device to represent the display adapter.\t\n            </summary>\t\n            <remarks>\t\n             This method returns a fully working device interface, set to the required display mode (or windowed), and allocated with the appropriate back buffers. To begin rendering, the application needs only to create and set a depth buffer (assuming EnableAutoDepthStencil is FALSE in <see cref=\"T:SharpDX.Direct3D9.PresentParameters\"/>). When you create a Direct3D device, you supply two different window parameters: a focus window (hFocusWindow) and a device window (the hDeviceWindow in <see cref=\"T:SharpDX.Direct3D9.PresentParameters\"/>). The purpose of each window is:  The focus window alerts Direct3D when an application switches from foreground mode to background mode (via Alt-Tab, a mouse click, or some other method). A single focus window is shared by each device created by an application. The device window determines the location and size of the back buffer on screen. This is used by Direct3D when the back buffer contents are copied to the front buffer during {{Present}}.  This method should not be run during the handling of WM_CREATE. An application should never pass a window handle to Direct3D while handling WM_CREATE.  Any call to create, release, or reset the device must be done using the same thread as the window procedure of the focus window. Note that D3DCREATE_HARDWARE_VERTEXPROCESSING, D3DCREATE_MIXED_VERTEXPROCESSING, and D3DCREATE_SOFTWARE_VERTEXPROCESSING are mutually exclusive flags, and at least one of these vertex processing flags must be specified when calling this method. Back buffers created as part of the device are only lockable if D3DPRESENTFLAG_LOCKABLE_BACKBUFFER is specified in the presentation parameters. (Multisampled back buffers and depth surfaces are never lockable.) The methods {{Reset}}, <see cref=\"T:SharpDX.ComObject\"/>, and {{TestCooperativeLevel}} must be called from the same thread that used this method to create a device. D3DFMT_UNKNOWN can be specified for the windowed mode back buffer format when calling CreateDevice, {{Reset}}, and {{CreateAdditionalSwapChain}}. This means the application does not have to query the current desktop format before calling CreateDevice for windowed mode. For full-screen mode, the back buffer format must be specified. If you attempt to create a device on a 0x0 sized window, CreateDevice will fail. \t\n            </remarks>\n            <param name=\"direct3D\">an instance of <see cref=\"T:SharpDX.Direct3D9.Direct3D\"/></param> \n            <param name=\"adapter\"> Ordinal number that denotes the display adapter. {{D3DADAPTER_DEFAULT}} is always the primary display adapter.  </param>\n            <param name=\"deviceType\"> Member of the <see cref=\"T:SharpDX.Direct3D9.DeviceType\"/> enumerated type that denotes the desired device type. If the desired device type is not available, the method will fail.  </param>\n            <param name=\"hFocusWindow\"> The focus window alerts Direct3D when an application switches from foreground mode to background mode. See Remarks. \t   For full-screen mode, the window specified must be a top-level window. For windowed mode, this parameter may be NULL only if the hDeviceWindow member of pPresentationParameters is set to a valid, non-NULL value.  </param>\n            <param name=\"behaviorFlags\"> Combination of one or more options that control device creation. For more information, see {{D3DCREATE}}. </param>\n            <param name=\"resentationParametersRef\"> Pointer to a <see cref=\"T:SharpDX.Direct3D9.PresentParameters\"/> structure, describing the presentation parameters for the device to be created. If BehaviorFlags specifies {{D3DCREATE_ADAPTERGROUP_DEVICE}}, pPresentationParameters is an array. Regardless of the number of heads that exist, only one depth/stencil surface is automatically created. For Windows 2000 and Windows XP, the full-screen device display refresh rate is set in the following order:   User-specified nonzero ForcedRefreshRate registry key, if supported by the device. Application-specified nonzero refresh rate value in the presentation parameter. Refresh rate of the latest desktop mode, if supported by the device. 75 hertz if supported by the device. 60 hertz if supported by the device. Device default.  An unsupported refresh rate will default to the closest supported refresh rate below it.  For example, if the application specifies 63 hertz, 60 hertz will be used. There are no supported refresh rates below 57 hertz. pPresentationParameters is both an input and an output parameter. Calling this method may change several members including:  If BackBufferCount, BackBufferWidth, and BackBufferHeight  are 0 before the method is called, they will be changed when the method returns. If BackBufferFormat equals <see cref=\"F:SharpDX.Direct3D9.Format.Unknown\"/> before the method is called, it will be changed when the method returns.  </param>\n            <param name=\"returnedDeviceInterfaceRef\"> Address of a pointer to the returned <see cref=\"T:SharpDX.Direct3D9.Device\"/> interface, which represents the created device.  </param>\n            <returns>  <see cref=\"T:System.Int32\"/>  If the method succeeds, the return value is D3D_OK. If the method fails, the return value can be one of the following: D3DERR_DEVICELOST, D3DERR_INVALIDCALL, D3DERR_NOTAVAILABLE, D3DERR_OUTOFVIDEOMEMORY. </returns>\n            <unmanaged>HRESULT CreateDevice([None] UINT Adapter,[None] D3DDEVTYPE DeviceType,[None] HWND hFocusWindow,[None] int BehaviorFlags,[None] D3DPRESENT_PARAMETERS* pPresentationParameters,[None] IDirect3DDevice9** ppReturnedDeviceInterface)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.Clear(SharpDX.Direct3D9.ClearFlags,SharpDX.ColorBGRA,System.Single,System.Int32)\">\n            <summary>\n            Clears one or more surfaces such as a render target, a stencil buffer, and a depth buffer.\n            </summary>\n            <param name=\"clearFlags\">Flags that specify which surfaces will be cleared.</param>\n            <param name=\"color\">The color that will be used to fill the cleared render target.</param>\n            <param name=\"zdepth\">The value that will be used to fill the cleared depth buffer.</param>\n            <param name=\"stencil\">The value that will be used to fill the cleared stencil buffer.</param>\n            <returns>A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.</returns>\n            <unmanaged>HRESULT IDirect3DDevice9::Clear([None] int Count,[In, Buffer, Optional] const D3DRECT* pRects,[None] int Flags,[None] D3DCOLOR Color,[None] float Z,[None] int Stencil)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.Clear(SharpDX.Direct3D9.ClearFlags,SharpDX.ColorBGRA,System.Single,System.Int32,SharpDX.Rectangle[])\">\n            <summary>\n            Clears one or more surfaces such as a render target, a stencil buffer, and a depth buffer.\n            </summary>\n            <param name=\"clearFlags\">Flags that specify which surfaces will be cleared.</param>\n            <param name=\"color\">The color that will be used to fill the cleared render target.</param>\n            <param name=\"zdepth\">The value that will be used to fill the cleared depth buffer.</param>\n            <param name=\"stencil\">The value that will be used to fill the cleared stencil buffer.</param>\n            <param name=\"rectangles\">The areas on the surfaces that will be cleared.</param>\n            <returns>A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.</returns>\n            <unmanaged>HRESULT IDirect3DDevice9::Clear([None] int Count,[In, Buffer, Optional] const D3DRECT* pRects,[None] int Flags,[None] D3DCOLOR Color,[None] float Z,[None] int Stencil)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.ColorFill(SharpDX.Direct3D9.Surface,SharpDX.ColorBGRA)\">\n            <summary>\t\n            Allows an application to fill a rectangular area of a D3DPOOL_DEFAULT surface with a specified color.\t\n            </summary>\t\n            <remarks>\t\n             This method can only be applied to a render target, a render-target texture surface, or an off-screen plain surface with a pool type of D3DPOOL_DEFAULT. IDirect3DDevice9::ColorFill will work with all formats. However, when using a reference or software device, the only formats supported are D3DFMT_X1R5G5B5, D3DFMT_A1R5G5B5, D3DFMT_R5G6B5, D3DFMT_X8R8G8B8, D3DFMT_A8R8G8B8, D3DFMT_YUY2, D3DFMT_G8R8_G8B8, D3DFMT_UYVY, D3DFMT_R8G8_B8G8, D3DFMT_R16F, D3DFMT_G16R16F, D3DFMT_A16B16G16R16F, D3DFMT_R32F, D3DFMT_G32R32F, and D3DFMT_A32B32G32R32F. When using a DirectX 7 or DirectX 8.x driver, the only YUV formats supported are D3DFMT_UYVY and D3DFMT_YUY2. \t\n            </remarks>\t\n            <param name=\"surfaceRef\"> Pointer to the surface to be filled. </param>\n            <param name=\"color\"> Color used for filling. </param>\n            <returns>A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.</returns>\n            <unmanaged>HRESULT IDirect3DDevice9::ColorFill([None] IDirect3DSurface9* pSurface,[In, Optional] const RECT* pRect,[None] D3DCOLOR color)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.DrawIndexedUserPrimitives``2(SharpDX.Direct3D9.PrimitiveType,System.Int32,System.Int32,System.Int32,``0[],SharpDX.Direct3D9.Format,``1[])\">\n            <summary>\n            Draws the indexed user primitives.\n            </summary>\n            <typeparam name=\"S\"></typeparam>\n            <typeparam name=\"T\"></typeparam>\n            <param name=\"primitiveType\">Type of the primitive.</param>\n            <param name=\"minimumVertexIndex\">Minimum index of the vertex.</param>\n            <param name=\"vertexCount\">The vertex count.</param>\n            <param name=\"primitiveCount\">The primitive count.</param>\n            <param name=\"indexData\">The index data.</param>\n            <param name=\"indexDataFormat\">The index data format.</param>\n            <param name=\"vertexData\">The vertex data.</param>\n            <param name=\"vertexStride\">The vertex stride.</param>\n            <returns>A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.DrawIndexedUserPrimitives``2(SharpDX.Direct3D9.PrimitiveType,System.Int32,System.Int32,System.Int32,System.Int32,``0[],SharpDX.Direct3D9.Format,``1[])\">\n            <summary>\n            Draws the indexed user primitives.\n            </summary>\n            <typeparam name=\"S\"></typeparam>\n            <typeparam name=\"T\"></typeparam>\n            <param name=\"primitiveType\">Type of the primitive.</param>\n            <param name=\"startIndex\">The start index.</param>\n            <param name=\"minimumVertexIndex\">Minimum index of the vertex.</param>\n            <param name=\"vertexCount\">The vertex count.</param>\n            <param name=\"primitiveCount\">The primitive count.</param>\n            <param name=\"indexData\">The index data.</param>\n            <param name=\"indexDataFormat\">The index data format.</param>\n            <param name=\"vertexData\">The vertex data.</param>\n            <param name=\"vertexStride\">The vertex stride.</param>\n            <returns>A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.DrawIndexedUserPrimitives``2(SharpDX.Direct3D9.PrimitiveType,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,``0[],SharpDX.Direct3D9.Format,``1[])\">\n            <summary>\n            Draws the indexed user primitives.\n            </summary>\n            <typeparam name=\"S\"></typeparam>\n            <typeparam name=\"T\"></typeparam>\n            <param name=\"primitiveType\">Type of the primitive.</param>\n            <param name=\"startIndex\">The start index.</param>\n            <param name=\"startVertex\">The start vertex.</param>\n            <param name=\"minimumVertexIndex\">Minimum index of the vertex.</param>\n            <param name=\"vertexCount\">The vertex count.</param>\n            <param name=\"primitiveCount\">The primitive count.</param>\n            <param name=\"indexData\">The index data.</param>\n            <param name=\"indexDataFormat\">The index data format.</param>\n            <param name=\"vertexData\">The vertex data.</param>\n            <param name=\"vertexStride\">The vertex stride.</param>\n            <returns>A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.DrawRectanglePatch(System.Int32,System.Single[])\">\n            <summary>\n            Draws the rectangle patch.\n            </summary>\n            <param name=\"handle\">The handle.</param>\n            <param name=\"segmentCounts\">The segment counts.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT IDirect3DDevice9::DrawRectPatch([In] unsigned int Handle,[In, Buffer] const float* pNumSegs,[In] const void* pRectPatchInfo)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.DrawRectanglePatch(System.Int32,System.Single[],SharpDX.Direct3D9.RectanglePatchInfo)\">\n            <summary>\n            Draws the rectangle patch.\n            </summary>\n            <param name=\"handle\">The handle.</param>\n            <param name=\"segmentCounts\">The segment counts.</param>\n            <param name=\"info\">The info.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged href=\"bb174373\">IDirect3DDevice9::DrawRectPatch</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.DrawTrianglePatch(System.Int32,System.Single[])\">\n            <summary>\n            Draws the triangle patch.\n            </summary>\n            <param name=\"handle\">The handle.</param>\n            <param name=\"segmentCounts\">The segment counts.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT IDirect3DDevice9::DrawTriPatch([In] unsigned int Handle,[In, Buffer] const float* pNumSegs,[In] const void* pTriPatchInfo)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.DrawTrianglePatch(System.Int32,System.Single[],SharpDX.Direct3D9.TrianglePatchInfo)\">\n            <summary>\n            Draws the triangle patch.\n            </summary>\n            <param name=\"handle\">The handle.</param>\n            <param name=\"segmentCounts\">The segment counts.</param>\n            <param name=\"info\">The info.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.DrawUserPrimitives``1(SharpDX.Direct3D9.PrimitiveType,System.Int32,``0[])\">\n            <summary>\n            Draws the user primitives.\n            </summary>\n            <typeparam name=\"T\"></typeparam>\n            <param name=\"primitiveType\">Type of the primitive.</param>\n            <param name=\"primitiveCount\">The primitive count.</param>\n            <param name=\"data\">The data.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.DrawUserPrimitives``1(SharpDX.Direct3D9.PrimitiveType,System.Int32,System.Int32,``0[])\">\n            <summary>\n            Draws the user primitives.\n            </summary>\n            <typeparam name=\"T\"></typeparam>\n            <param name=\"primitiveType\">Type of the primitive.</param>\n            <param name=\"startIndex\">The start index.</param>\n            <param name=\"primitiveCount\">The primitive count.</param>\n            <param name=\"data\">The data.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.GetBackBuffer(System.Int32,System.Int32)\">\n            <summary>\n            Gets the back buffer.\n            </summary>\n            <param name=\"swapChain\">The swap chain.</param>\n            <param name=\"backBuffer\">The back buffer.</param>\n            <returns>A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.GetPaletteEntries(System.Int32)\">\n            <summary>\n            Gets the palette entries.\n            </summary>\n            <param name=\"paletteNumber\">The palette number.</param>\n            <returns>An array of <see cref=\"T:SharpDX.Direct3D9.PaletteEntry\"/></returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.GetPixelShaderBooleanConstant(System.Int32,System.Int32)\">\n            <summary>\n            Gets the pixel shader boolean constant.\n            </summary>\n            <param name=\"startRegister\">The start register.</param>\n            <param name=\"count\">The count.</param>\n            <returns>An array of boolean constants</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.GetPixelShaderFloatConstant(System.Int32,System.Int32)\">\n            <summary>\n            Gets the pixel shader float constant.\n            </summary>\n            <param name=\"startRegister\">The start register.</param>\n            <param name=\"count\">The count.</param>\n            <returns>An array of float constants</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.GetPixelShaderIntegerConstant(System.Int32,System.Int32)\">\n            <summary>\n            Gets the pixel shader integer constant.\n            </summary>\n            <param name=\"startRegister\">The start register.</param>\n            <param name=\"count\">The count.</param>\n            <returns>An array of int constants</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.GetRenderState(SharpDX.Direct3D9.RenderState)\">\n            <summary>\n            Gets the state of the render.\n            </summary>\n            <param name=\"state\">The state.</param>\n            <returns>The render state value</returns>\n            <unmanaged>HRESULT IDirect3DDevice9::GetRenderState([In] D3DRENDERSTATETYPE State,[In] void* pValue)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.GetRenderState``1(SharpDX.Direct3D9.RenderState)\">\n            <summary>\n            Gets the state of the render.\n            </summary>\n            <typeparam name=\"T\">Type of the state value.</typeparam>\n            <param name=\"state\">The state.</param>\n            <returns>\n            The render state value\n            </returns>\n            <unmanaged>HRESULT IDirect3DDevice9::GetRenderState([In] D3DRENDERSTATETYPE State,[In] void* pValue)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.GetSamplerState(System.Int32,SharpDX.Direct3D9.SamplerState)\">\n            <summary>\n            Gets the state of the sampler.\n            </summary>\n            <param name=\"sampler\">The sampler.</param>\n            <param name=\"state\">The state.</param>\n            <returns>\n            The sampler state value\n            </returns>\n            <unmanaged>HRESULT IDirect3DDevice9::GetSamplerState([In] unsigned int Sampler,[In] D3DSAMPLERSTATETYPE Type,[In] void* pValue)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.GetSamplerState``1(System.Int32,SharpDX.Direct3D9.SamplerState)\">\n            <summary>\n            Gets the state of the sampler.\n            </summary>\n            <typeparam name=\"T\">Type of the sampler statet value</typeparam>\n            <param name=\"sampler\">The sampler.</param>\n            <param name=\"state\">The state.</param>\n            <returns>\n            The sampler state value\n            </returns>\n            <unmanaged>HRESULT IDirect3DDevice9::GetSamplerState([In] unsigned int Sampler,[In] D3DSAMPLERSTATETYPE Type,[In] void* pValue)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.GetTextureStageState(System.Int32,SharpDX.Direct3D9.TextureStage)\">\n            <summary>\n            Gets the state of the texture stage.\n            </summary>\n            <param name=\"stage\">The stage.</param>\n            <param name=\"type\">The type.</param>\n            <returns>\n            The texture stage state.\n            </returns>\n            <unmanaged>HRESULT IDirect3DDevice9::GetTextureStageState([In] unsigned int Stage,[In] D3DTEXTURESTAGESTATETYPE Type,[In] void* pValue)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.GetTextureStageState``1(System.Int32,SharpDX.Direct3D9.TextureStage)\">\n            <summary>\n            Gets the state of the texture stage.\n            </summary>\n            <typeparam name=\"T\">Type of the texture stage state</typeparam>\n            <param name=\"stage\">The stage.</param>\n            <param name=\"type\">The type.</param>\n            <returns>\n            The texture stage state.\n            </returns>\n            <unmanaged>HRESULT IDirect3DDevice9::GetTextureStageState([In] unsigned int Stage,[In] D3DTEXTURESTAGESTATETYPE Type,[In] void* pValue)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.GetVertexShaderBooleanConstant(System.Int32,System.Int32)\">\n            <summary>\n            Gets the vertex shader boolean constant.\n            </summary>\n            <param name=\"startRegister\">The start register.</param>\n            <param name=\"count\">The count.</param>\n            <returns>An array of boolean constants</returns>\n            <unmanaged>HRESULT IDirect3DDevice9::GetVertexShaderConstantB([In] unsigned int StartRegister,[In] void* pConstantData,[In] unsigned int BoolCount)</unmanaged>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.GetVertexShaderFloatConstant(System.Int32,System.Int32)\">\n            <summary>\n            Gets the vertex shader float constant.\n            </summary>\n            <param name=\"startRegister\">The start register.</param>\n            <param name=\"count\">The count.</param>\n            <returns>An array of float constants</returns>\n            <unmanaged>HRESULT IDirect3DDevice9::GetVertexShaderConstantF([In] unsigned int StartRegister,[In, Buffer] float* pConstantData,[In] unsigned int Vector4fCount)</unmanaged>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.GetVertexShaderIntegerConstant(System.Int32,System.Int32)\">\n            <summary>\n            Gets the vertex shader integer constant.\n            </summary>\n            <param name=\"startRegister\">The start register.</param>\n            <param name=\"count\">The count.</param>\n            <returns>An array of int constants</returns>\n            <unmanaged>HRESULT IDirect3DDevice9::GetVertexShaderConstantI([In] unsigned int StartRegister,[Out] int* pConstantData,[In] unsigned int Vector4iCount)</unmanaged>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.SetCursorPosition(SharpDX.DrawingPoint,System.Boolean)\">\n            <summary>\n            Sets the cursor position.\n            </summary>\n            <param name=\"point\">The point.</param>\n            <param name=\"flags\">if set to <c>true</c> [flags].</param>\n            <unmanaged>void IDirect3DDevice9::SetCursorPosition([In] int X,[In] int Y,[In] unsigned int Flags)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.SetCursorPosition(System.Int32,System.Int32,System.Boolean)\">\n            <summary>\n            Sets the cursor position.\n            </summary>\n            <param name=\"x\">The x.</param>\n            <param name=\"y\">The y.</param>\n            <param name=\"flags\">if set to <c>true</c> [flags].</param>\n            <unmanaged>void IDirect3DDevice9::SetCursorPosition([In] int X,[In] int Y,[In] unsigned int Flags)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.SetCursorProperties(SharpDX.DrawingPoint,SharpDX.Direct3D9.Surface)\">\n            <summary>\n            Sets the cursor properties.\n            </summary>\n            <param name=\"point\">The point.</param>\n            <param name=\"cursorBitmapRef\">The cursor bitmap ref.</param>\n            <returns></returns>\n            <unmanaged>HRESULT IDirect3DDevice9::SetCursorProperties([In] unsigned int XHotSpot,[In] unsigned int YHotSpot,[In] IDirect3DSurface9* pCursorBitmap)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.SetGammaRamp(System.Int32,SharpDX.Direct3D9.GammaRamp@,System.Boolean)\">\n            <summary>\n            Sets the gamma ramp.\n            </summary>\n            <param name=\"swapChain\">The swap chain.</param>\n            <param name=\"rampRef\">The ramp ref.</param>\n            <param name=\"calibrate\">if set to <c>true</c> [calibrate].</param>\n            <unmanaged>void IDirect3DDevice9::SetGammaRamp([In] unsigned int iSwapChain,[In] unsigned int Flags,[In] const D3DGAMMARAMP* pRamp)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.Present\">\n            <summary>\n            Presents the contents of the next buffer in the sequence of back buffers to the screen.\n            </summary>\n            <returns>A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.</returns>\n            <unmanaged>IDirect3DDevice9::Present</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.Present(SharpDX.Rectangle,SharpDX.Rectangle)\">\n            <summary>\n            Presents the contents of the next buffer in the sequence of back buffers to the screen.\n            </summary>\n            <param name=\"sourceRectangle\">The area of the back buffer that should be presented.</param>\n            <param name=\"destinationRectangle\">The area of the front buffer that should receive the result of the presentation.</param>\n            <returns>A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.</returns>\n            <unmanaged>IDirect3DDevice9::Present</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.Present(SharpDX.Rectangle,SharpDX.Rectangle,System.IntPtr)\">\n            <summary>\n            Presents the contents of the next buffer in the sequence of back buffers to the screen.\n            </summary>\n            <param name=\"sourceRectangle\">The area of the back buffer that should be presented.</param>\n            <param name=\"destinationRectangle\">The area of the front buffer that should receive the result of the presentation.</param>\n            <param name=\"windowOverride\">The destination window whose client area is taken as the target for this presentation.</param>\n            <returns>A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.</returns>\n            <unmanaged>IDirect3DDevice9::Present</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.Present(SharpDX.Rectangle,SharpDX.Rectangle,System.IntPtr,System.Drawing.Region)\">\n            <summary>\n            Presents the contents of the next buffer in the sequence of back buffers to the screen.\n            </summary>\n            <param name=\"sourceRectangle\">The area of the back buffer that should be presented.</param>\n            <param name=\"destinationRectangle\">The area of the front buffer that should receive the result of the presentation.</param>\n            <param name=\"windowOverride\">The destination window whose client area is taken as the target for this presentation.</param>\n            <param name=\"region\">Specifies a region on the back buffer that contains the minimal amount of pixels that need to be updated.</param>\n            <returns>A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.</returns>\n            <unmanaged>IDirect3DDevice9::Present</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.ResetStreamSourceFrequency(System.Int32)\">\n            <summary>\n            Resets the stream source frequency by setting the frequency to 1.\n            </summary>\n            <param name=\"stream\">The stream index.</param>\n            <returns>A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.</returns>\n            <unmanaged>HRESULT IDirect3DDevice9::SetStreamSourceFreq([In] unsigned int StreamNumber,[In] unsigned int Setting)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.SetPixelShaderConstant(System.Int32,SharpDX.Matrix[])\">\n            <summary>\n            Sets the pixel shader constant.\n            </summary>\n            <param name=\"startRegister\">The start register.</param>\n            <param name=\"data\">The data.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT IDirect3DDevice9::SetPixelShaderConstantF([In] unsigned int StartRegister,[In] const void* pConstantData,[In] unsigned int Vector4fCount)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.SetPixelShaderConstant(System.Int32,SharpDX.Vector4[])\">\n            <summary>\n            Sets the pixel shader constant.\n            </summary>\n            <param name=\"startRegister\">The start register.</param>\n            <param name=\"data\">The data.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT IDirect3DDevice9::SetPixelShaderConstantF([In] unsigned int StartRegister,[In] const void* pConstantData,[In] unsigned int Vector4fCount)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.SetPixelShaderConstant(System.Int32,System.Boolean[])\">\n            <summary>\n            Sets the pixel shader constant.\n            </summary>\n            <param name=\"startRegister\">The start register.</param>\n            <param name=\"data\">The data.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT IDirect3DDevice9::SetPixelShaderConstantB([In] unsigned int StartRegister,[In] const void* pConstantData,[In] unsigned int BoolCount)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.SetPixelShaderConstant(System.Int32,System.Int32[])\">\n            <summary>\n            Sets the pixel shader constant.\n            </summary>\n            <param name=\"startRegister\">The start register.</param>\n            <param name=\"data\">The data.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT IDirect3DDevice9::SetPixelShaderConstantI([In] unsigned int StartRegister,[In] const void* pConstantData,[In] unsigned int Vector4iCount)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.SetPixelShaderConstant(System.Int32,System.Single[])\">\n            <summary>\n            Sets the pixel shader constant.\n            </summary>\n            <param name=\"startRegister\">The start register.</param>\n            <param name=\"data\">The data.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT IDirect3DDevice9::SetPixelShaderConstantF([In] unsigned int StartRegister,[In] const void* pConstantData,[In] unsigned int Vector4fCount)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.SetPixelShaderConstant(System.Int32,SharpDX.Matrix*)\">\n            <summary>\n            Sets the pixel shader constant.\n            </summary>\n            <param name=\"startRegister\">The start register.</param>\n            <param name=\"data\">The data.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT IDirect3DDevice9::SetPixelShaderConstantF([In] unsigned int StartRegister,[In] const void* pConstantData,[In] unsigned int Vector4fCount)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.SetPixelShaderConstant(System.Int32,SharpDX.Matrix)\">\n            <summary>\n            Sets the pixel shader constant.\n            </summary>\n            <param name=\"startRegister\">The start register.</param>\n            <param name=\"data\">The data.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT IDirect3DDevice9::SetPixelShaderConstantF([In] unsigned int StartRegister,[In] const void* pConstantData,[In] unsigned int Vector4fCount)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.SetPixelShaderConstant(System.Int32,SharpDX.Matrix*,System.Int32)\">\n            <summary>\n            Sets the pixel shader constant.\n            </summary>\n            <param name=\"startRegister\">The start register.</param>\n            <param name=\"data\">The data.</param>\n            <param name=\"count\">The count.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT IDirect3DDevice9::SetPixelShaderConstantF([In] unsigned int StartRegister,[In] const void* pConstantData,[In] unsigned int Vector4fCount)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.SetPixelShaderConstant(System.Int32,SharpDX.Matrix[],System.Int32,System.Int32)\">\n            <summary>\n            Sets the pixel shader constant.\n            </summary>\n            <param name=\"startRegister\">The start register.</param>\n            <param name=\"data\">The data.</param>\n            <param name=\"offset\">The offset.</param>\n            <param name=\"count\">The count.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT IDirect3DDevice9::SetPixelShaderConstantF([In] unsigned int StartRegister,[In] const void* pConstantData,[In] unsigned int Vector4fCount)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.SetPixelShaderConstant(System.Int32,SharpDX.Vector4[],System.Int32,System.Int32)\">\n            <summary>\n            Sets the pixel shader constant.\n            </summary>\n            <param name=\"startRegister\">The start register.</param>\n            <param name=\"data\">The data.</param>\n            <param name=\"offset\">The offset.</param>\n            <param name=\"count\">The count.</param>\n            <returns>A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.</returns>\n            <unmanaged>HRESULT IDirect3DDevice9::SetPixelShaderConstantF([In] unsigned int StartRegister,[In] const void* pConstantData,[In] unsigned int Vector4fCount)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.SetPixelShaderConstant(System.Int32,System.Boolean[],System.Int32,System.Int32)\">\n            <summary>\n            Sets the pixel shader constant.\n            </summary>\n            <param name=\"startRegister\">The start register.</param>\n            <param name=\"data\">The data.</param>\n            <param name=\"offset\">The offset.</param>\n            <param name=\"count\">The count.</param>\n            <returns>A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.</returns>\n            <unmanaged>HRESULT IDirect3DDevice9::SetPixelShaderConstantB([In] unsigned int StartRegister,[In] const void* pConstantData,[In] unsigned int BoolCount)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.SetPixelShaderConstant(System.Int32,System.Int32[],System.Int32,System.Int32)\">\n            <summary>\n            Sets the pixel shader constant.\n            </summary>\n            <param name=\"startRegister\">The start register.</param>\n            <param name=\"data\">The data.</param>\n            <param name=\"offset\">The offset.</param>\n            <param name=\"count\">The count.</param>\n            <returns>A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.</returns>\n            <unmanaged>HRESULT IDirect3DDevice9::SetPixelShaderConstantI([In] unsigned int StartRegister,[In] const void* pConstantData,[In] unsigned int Vector4iCount)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.SetPixelShaderConstant(System.Int32,System.Single[],System.Int32,System.Int32)\">\n            <summary>\n            Sets the pixel shader constant.\n            </summary>\n            <param name=\"startRegister\">The start register.</param>\n            <param name=\"data\">The data.</param>\n            <param name=\"offset\">The offset.</param>\n            <param name=\"count\">The count.</param>\n            <returns>A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.</returns>\n            <unmanaged>HRESULT IDirect3DDevice9::SetPixelShaderConstantF([In] unsigned int StartRegister,[In] const void* pConstantData,[In] unsigned int Vector4fCount)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.SetRenderState(SharpDX.Direct3D9.RenderState,System.Boolean)\">\n            <summary>\n            Sets the RenderState.\n            </summary>\n            <param name=\"renderState\">State of the render.</param>\n            <param name=\"enable\">if set to <c>true</c> [enable].</param>\n            <returns>A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.</returns>\n            <unmanaged>HRESULT IDirect3DDevice9::SetRenderState([In] D3DRENDERSTATETYPE State,[In] unsigned int Value)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.SetRenderState(SharpDX.Direct3D9.RenderState,System.Single)\">\n            <summary>\n            Sets the RenderState.\n            </summary>\n            <param name=\"renderState\">State of the render.</param>\n            <param name=\"value\">A float value.</param>\n            <returns>A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.</returns>\n            <unmanaged>HRESULT IDirect3DDevice9::SetRenderState([In] D3DRENDERSTATETYPE State,[In] unsigned int Value)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.SetRenderState``1(SharpDX.Direct3D9.RenderState,``0)\">\n            <summary>\n            Sets the RenderState.\n            </summary>\n            <typeparam name=\"T\">Type of the enum value</typeparam>\n            <param name=\"renderState\">State of the render.</param>\n            <param name=\"value\">An enum value.</param>\n            <returns>A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.</returns>\n            <unmanaged>HRESULT IDirect3DDevice9::SetRenderState([In] D3DRENDERSTATETYPE State,[In] unsigned int Value)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.SetSamplerState(System.Int32,SharpDX.Direct3D9.SamplerState,SharpDX.Direct3D9.TextureFilter)\">\n            <summary>\n            Sets the SamplerState.\n            </summary>\n            <param name=\"sampler\">The sampler.</param>\n            <param name=\"type\">The type.</param>\n            <param name=\"textureFilter\">The texture filter.</param>\n            <returns>A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.</returns>\n            <unmanaged>HRESULT IDirect3DDevice9::SetSamplerState([In] unsigned int Sampler,[In] D3DSAMPLERSTATETYPE Type,[In] unsigned int Value)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.SetSamplerState(System.Int32,SharpDX.Direct3D9.SamplerState,SharpDX.Direct3D9.TextureAddress)\">\n            <summary>\n            Sets the SamplerState.\n            </summary>\n            <param name=\"sampler\">The sampler.</param>\n            <param name=\"type\">The type.</param>\n            <param name=\"textureAddress\">The texture address.</param>\n            <returns>A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.</returns>\n            <unmanaged>HRESULT IDirect3DDevice9::SetSamplerState([In] unsigned int Sampler,[In] D3DSAMPLERSTATETYPE Type,[In] unsigned int Value)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.SetSamplerState(System.Int32,SharpDX.Direct3D9.SamplerState,System.Single)\">\n            <summary>\n            Sets the SamplerState.\n            </summary>\n            <param name=\"sampler\">The sampler.</param>\n            <param name=\"type\">The type.</param>\n            <param name=\"value\">A float value.</param>\n            <returns>A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.</returns>\n            <unmanaged>HRESULT IDirect3DDevice9::SetSamplerState([In] unsigned int Sampler,[In] D3DSAMPLERSTATETYPE Type,[In] unsigned int Value)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.SetStreamSourceFrequency(System.Int32,System.Int32,SharpDX.Direct3D9.StreamSource)\">\n            <summary>\n            Sets the stream source frequency.\n            </summary>\n            <param name=\"stream\">The stream.</param>\n            <param name=\"frequency\">The frequency.</param>\n            <param name=\"source\">The source.</param>\n            <returns>A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.</returns>\n            <unmanaged>HRESULT IDirect3DDevice9::SetStreamSourceFreq([In] unsigned int StreamNumber,[In] unsigned int Setting)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.SetTextureStageState(System.Int32,SharpDX.Direct3D9.TextureStage,SharpDX.Direct3D9.TextureArgument)\">\n            <summary>\n            Sets the state of the texture stage.\n            </summary>\n            <param name=\"stage\">The stage.</param>\n            <param name=\"type\">The type.</param>\n            <param name=\"textureArgument\">The texture argument.</param>\n            <returns>A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.</returns>\n            <unmanaged>HRESULT IDirect3DDevice9::SetTextureStageState([In] unsigned int Stage,[In] D3DTEXTURESTAGESTATETYPE Type,[In] unsigned int Value)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.SetTextureStageState(System.Int32,SharpDX.Direct3D9.TextureStage,SharpDX.Direct3D9.TextureOperation)\">\n            <summary>\n            Sets the state of the texture stage.\n            </summary>\n            <param name=\"stage\">The stage.</param>\n            <param name=\"type\">The type.</param>\n            <param name=\"textureOperation\">The texture operation.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT IDirect3DDevice9::SetTextureStageState([In] unsigned int Stage,[In] D3DTEXTURESTAGESTATETYPE Type,[In] unsigned int Value)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.SetTextureStageState(System.Int32,SharpDX.Direct3D9.TextureStage,SharpDX.Direct3D9.TextureTransform)\">\n            <summary>\n            Sets the state of the texture stage.\n            </summary>\n            <param name=\"stage\">The stage.</param>\n            <param name=\"type\">The type.</param>\n            <param name=\"textureTransform\">The texture transform.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT IDirect3DDevice9::SetTextureStageState([In] unsigned int Stage,[In] D3DTEXTURESTAGESTATETYPE Type,[In] unsigned int Value)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.SetTextureStageState(System.Int32,SharpDX.Direct3D9.TextureStage,System.Single)\">\n            <summary>\n            Sets the state of the texture stage.\n            </summary>\n            <param name=\"stage\">The stage.</param>\n            <param name=\"type\">The type.</param>\n            <param name=\"value\">The value.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT IDirect3DDevice9::SetTextureStageState([In] unsigned int Stage,[In] D3DTEXTURESTAGESTATETYPE Type,[In] unsigned int Value)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.SetTransform(SharpDX.Direct3D9.TransformState,SharpDX.Matrix@)\">\n            <summary>\n            Sets the transform.\n            </summary>\n            <param name=\"state\">The state.</param>\n            <param name=\"matrixRef\">The matrix ref.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT IDirect3DDevice9::SetTransform([In] D3DTRANSFORMSTATETYPE State,[In] const D3DMATRIX* pMatrix)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.SetTransform(System.Int32,SharpDX.Matrix@)\">\n            <summary>\n            Sets the transform.\n            </summary>\n            <param name=\"index\">The index.</param>\n            <param name=\"matrixRef\">The matrix ref.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT IDirect3DDevice9::SetTransform([In] D3DTRANSFORMSTATETYPE State,[In] const D3DMATRIX* pMatrix)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.SetTransform(SharpDX.Direct3D9.TransformState,SharpDX.Matrix)\">\n            <summary>\n            Sets the transform.\n            </summary>\n            <param name=\"state\">The state.</param>\n            <param name=\"matrixRef\">The matrix ref.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT IDirect3DDevice9::SetTransform([In] D3DTRANSFORMSTATETYPE State,[In] const D3DMATRIX* pMatrix)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.SetTransform(System.Int32,SharpDX.Matrix)\">\n            <summary>\n            Sets the transform.\n            </summary>\n            <param name=\"index\">The index.</param>\n            <param name=\"matrixRef\">The matrix ref.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT IDirect3DDevice9::SetTransform([In] D3DTRANSFORMSTATETYPE State,[In] const D3DMATRIX* pMatrix)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.SetVertexShaderConstant(System.Int32,SharpDX.Matrix[])\">\n            <summary>\n            Sets the vertex shader constant.\n            </summary>\n            <param name=\"startRegister\">The start register.</param>\n            <param name=\"data\">The data.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT IDirect3DDevice9::SetVertexShaderConstantF([In] unsigned int StartRegister,[In] const void* pConstantData,[In] unsigned int Vector4fCount)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.SetVertexShaderConstant(System.Int32,SharpDX.Vector4[])\">\n            <summary>\n            Sets the vertex shader constant.\n            </summary>\n            <param name=\"startRegister\">The start register.</param>\n            <param name=\"data\">The data.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT IDirect3DDevice9::SetVertexShaderConstantF([In] unsigned int StartRegister,[In] const void* pConstantData,[In] unsigned int Vector4fCount)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.SetVertexShaderConstant(System.Int32,System.Boolean[])\">\n            <summary>\n            Sets the vertex shader constant.\n            </summary>\n            <param name=\"startRegister\">The start register.</param>\n            <param name=\"data\">The data.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT IDirect3DDevice9::SetVertexShaderConstantB([In] unsigned int StartRegister,[In] const void* pConstantData,[In] unsigned int BoolCount)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.SetVertexShaderConstant(System.Int32,System.Int32[])\">\n            <summary>\n            Sets the vertex shader constant.\n            </summary>\n            <param name=\"startRegister\">The start register.</param>\n            <param name=\"data\">The data.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT IDirect3DDevice9::SetVertexShaderConstantI([In] unsigned int StartRegister,[In] const void* pConstantData,[In] unsigned int Vector4iCount)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.SetVertexShaderConstant(System.Int32,System.Single[])\">\n            <summary>\n            Sets the vertex shader constant.\n            </summary>\n            <param name=\"startRegister\">The start register.</param>\n            <param name=\"data\">The data.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT IDirect3DDevice9::SetVertexShaderConstantF([In] unsigned int StartRegister,[In] const void* pConstantData,[In] unsigned int Vector4fCount)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.SetVertexShaderConstant(System.Int32,SharpDX.Matrix*)\">\n            <summary>\n            Sets the vertex shader constant.\n            </summary>\n            <param name=\"startRegister\">The start register.</param>\n            <param name=\"data\">The data.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT IDirect3DDevice9::SetVertexShaderConstantF([In] unsigned int StartRegister,[In] const void* pConstantData,[In] unsigned int Vector4fCount)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.SetVertexShaderConstant(System.Int32,SharpDX.Matrix)\">\n            <summary>\n            Sets the vertex shader constant.\n            </summary>\n            <param name=\"startRegister\">The start register.</param>\n            <param name=\"data\">The data.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT IDirect3DDevice9::SetVertexShaderConstantF([In] unsigned int StartRegister,[In] const void* pConstantData,[In] unsigned int Vector4fCount)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.SetVertexShaderConstant(System.Int32,SharpDX.Matrix*,System.Int32)\">\n            <summary>\n            Sets the vertex shader constant.\n            </summary>\n            <param name=\"startRegister\">The start register.</param>\n            <param name=\"data\">The data.</param>\n            <param name=\"count\">The count.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT IDirect3DDevice9::SetVertexShaderConstantF([In] unsigned int StartRegister,[In] const void* pConstantData,[In] unsigned int Vector4fCount)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.SetVertexShaderConstant(System.Int32,SharpDX.Matrix[],System.Int32,System.Int32)\">\n            <summary>\n            Sets the vertex shader constant.\n            </summary>\n            <param name=\"startRegister\">The start register.</param>\n            <param name=\"data\">The data.</param>\n            <param name=\"offset\">The offset.</param>\n            <param name=\"count\">The count.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT IDirect3DDevice9::SetVertexShaderConstantF([In] unsigned int StartRegister,[In] const void* pConstantData,[In] unsigned int Vector4fCount)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.SetVertexShaderConstant(System.Int32,SharpDX.Vector4[],System.Int32,System.Int32)\">\n            <summary>\n            Sets the vertex shader constant.\n            </summary>\n            <param name=\"startRegister\">The start register.</param>\n            <param name=\"data\">The data.</param>\n            <param name=\"offset\">The offset.</param>\n            <param name=\"count\">The count.</param>\n            <returns>A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.</returns>\n            <unmanaged>HRESULT IDirect3DDevice9::SetVertexShaderConstantF([In] unsigned int StartRegister,[In] const void* pConstantData,[In] unsigned int Vector4fCount)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.SetVertexShaderConstant(System.Int32,System.Boolean[],System.Int32,System.Int32)\">\n            <summary>\n            Sets the vertex shader constant.\n            </summary>\n            <param name=\"startRegister\">The start register.</param>\n            <param name=\"data\">The data.</param>\n            <param name=\"offset\">The offset.</param>\n            <param name=\"count\">The count.</param>\n            <returns>A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.</returns>\n            <unmanaged>HRESULT IDirect3DDevice9::SetVertexShaderConstantB([In] unsigned int StartRegister,[In] const void* pConstantData,[In] unsigned int BoolCount)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.SetVertexShaderConstant(System.Int32,System.Int32[],System.Int32,System.Int32)\">\n            <summary>\n            Sets the vertex shader constant.\n            </summary>\n            <param name=\"startRegister\">The start register.</param>\n            <param name=\"data\">The data.</param>\n            <param name=\"offset\">The offset.</param>\n            <param name=\"count\">The count.</param>\n            <returns>A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.</returns>\n            <unmanaged>HRESULT IDirect3DDevice9::SetVertexShaderConstantI([In] unsigned int StartRegister,[In] const void* pConstantData,[In] unsigned int Vector4iCount)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.SetVertexShaderConstant(System.Int32,System.Single[],System.Int32,System.Int32)\">\n            <summary>\n            Sets the vertex shader constant.\n            </summary>\n            <param name=\"startRegister\">The start register.</param>\n            <param name=\"data\">The data.</param>\n            <param name=\"offset\">The offset.</param>\n            <param name=\"count\">The count.</param>\n            <returns>A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.</returns>\n            <unmanaged>HRESULT IDirect3DDevice9::SetVertexShaderConstantF([In] unsigned int StartRegister,[In] const void* pConstantData,[In] unsigned int Vector4fCount)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.StretchRectangle(SharpDX.Direct3D9.Surface,SharpDX.Direct3D9.Surface,SharpDX.Direct3D9.TextureFilter)\">\n            <summary>\n            Stretches the rectangle.\n            </summary>\n            <param name=\"sourceSurfaceRef\">The source surface ref.</param>\n            <param name=\"destSurfaceRef\">The dest surface ref.</param>\n            <param name=\"filter\">The filter.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT IDirect3DDevice9::StretchRect([In] IDirect3DSurface9* pSourceSurface,[In, Optional] const RECT* pSourceRect,[In] IDirect3DSurface9* pDestSurface,[In, Optional] const RECT* pDestRect,[In] D3DTEXTUREFILTERTYPE Filter)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.UpdateSurface(SharpDX.Direct3D9.Surface,SharpDX.Direct3D9.Surface)\">\n            <summary>\n            Updates the surface.\n            </summary>\n            <param name=\"sourceSurfaceRef\">The source surface ref.</param>\n            <param name=\"destinationSurfaceRef\">The destination surface ref.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT IDirect3DDevice9::UpdateSurface([In] IDirect3DSurface9* pSourceSurface,[In] const RECT* pSourceRect,[In] IDirect3DSurface9* pDestinationSurface,[In] const POINT* pDestPoint)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D9.Device\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.op_Explicit(System.IntPtr)~SharpDX.Direct3D9.Device\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D9.Device\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.TestCooperativeLevel\">\n            <summary>\t\n            <p>Reports the current cooperative-level status of the Direct3D device for a windowed or full-screen application.</p>\t\n            </summary>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>, indicating that the device is operational and the calling application can continue. If the method fails, the return value can be one of the following values: <see cref=\"F:SharpDX.Direct3D9.ResultCode.DeviceLost\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.DeviceNotReset\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.DriverInternalError\"/>. </p></returns>\t\n            <remarks>\t\n            <p>If the device is lost but cannot be restored at the current time, <strong><see cref=\"M:SharpDX.Direct3D9.Device.TestCooperativeLevel\"/></strong> returns the <see cref=\"F:SharpDX.Direct3D9.ResultCode.DeviceLost\"/> return code. This would be the case, for example, when a full-screen device has lost focus. If an application detects a lost device, it should pause and periodically call <strong><see cref=\"M:SharpDX.Direct3D9.Device.TestCooperativeLevel\"/></strong> until it receives a return value of <see cref=\"F:SharpDX.Direct3D9.ResultCode.DeviceNotReset\"/>. The application may then attempt to reset the device by calling <strong><see cref=\"M:SharpDX.Direct3D9.Device.Reset(SharpDX.Direct3D9.PresentParameters[])\"/></strong> and, if this succeeds, restore the necessary resources and resume normal operation. Note that <strong><see cref=\"M:SharpDX.Direct3D9.Device.Present\"/></strong> will return <see cref=\"F:SharpDX.Direct3D9.ResultCode.DeviceLost\"/> if the device is either \"lost\" or \"not reset\".</p><p>A call to <strong><see cref=\"M:SharpDX.Direct3D9.Device.TestCooperativeLevel\"/></strong> will fail if called on a different thread than that used to create the device being reset.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::TestCooperativeLevel']/*\"/>\t\n            <msdn-id>bb174472</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::TestCooperativeLevel()</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::TestCooperativeLevel</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.GetAvailableTextureMem\">\n            <summary>\t\n            <p>Returns an estimate of the amount of available texture memory.</p>\t\n            </summary>\t\n            <returns><p>The function returns an estimate of the available texture memory.</p></returns>\t\n            <remarks>\t\n            <p>The returned value is rounded to the nearest MB. This is done to reflect the fact that video memory estimates are never precise due to alignment and other issues that affect consumption by certain resources. Applications can use this value to make gross estimates of memory availability to make large-scale resource decisions such as how many levels of a mipmap to attempt to allocate, but applications cannot use this value to make small-scale decisions such as if there is enough memory left to allocate another resource.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::GetAvailableTextureMem']/*\"/>\t\n            <msdn-id>bb174378</msdn-id>\t\n            <unmanaged>unsigned int IDirect3DDevice9::GetAvailableTextureMem()</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::GetAvailableTextureMem</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.EvictManagedResources\">\n            <summary>\t\n            <p>Evicts all managed resources, including both Direct3D and driver-managed resources.</p>\t\n            </summary>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.OutOfVideoMemory\"/>, D3DERR_COMMAND_UNPARSED.</p></returns>\t\n            <remarks>\t\n            <p>This function causes only the <see cref=\"F:SharpDX.Direct3D9.Pool.Default\"/> copy of resources to be evicted. The resource copy in system memory is retained. See <strong><see cref=\"T:SharpDX.Direct3D9.Pool\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::EvictManagedResources']/*\"/>\t\n            <msdn-id>bb174377</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::EvictManagedResources()</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::EvictManagedResources</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.GetDirect3D(SharpDX.Direct3D9.Direct3D@)\">\n            <summary>\t\n            <p>Returns an interface to the instance of the Direct3D object that created the device.</p>\t\n            </summary>\t\n            <param name=\"d3D9Out\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D9.Direct3D\"/></strong> interface, representing the interface of the Direct3D object that created the device. </p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>. </p></returns>\t\n            <remarks>\t\n            <p>Calling <strong><see cref=\"M:SharpDX.Direct3D9.Device.GetDirect3D(SharpDX.Direct3D9.Direct3D@)\"/></strong> will increase the internal reference count on the <strong><see cref=\"T:SharpDX.Direct3D9.Direct3D\"/></strong> interface. Failure to call <strong>IUnknown::Release</strong> when finished using this <strong><see cref=\"T:SharpDX.Direct3D9.Direct3D\"/></strong> interface results in a memory leak.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::GetDirect3D']/*\"/>\t\n            <msdn-id>bb174386</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::GetDirect3D([Out] IDirect3D9** ppD3D9)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::GetDirect3D</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.GetCapabilities(SharpDX.Direct3D9.Capabilities@)\">\n            <summary>\t\n            <p>Retrieves the capabilities of the rendering device.</p>\t\n            </summary>\t\n            <param name=\"capsRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.Capabilities\"/></strong> structure, describing the returned device. </p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>. </p></returns>\t\n            <remarks>\t\n            <p><strong><see cref=\"M:SharpDX.Direct3D9.Device.GetCapabilities(SharpDX.Direct3D9.Capabilities@)\"/></strong> retrieves the software vertex pipeline capabilities when the device is being used in software vertex processing mode.  </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::GetDeviceCaps']/*\"/>\t\n            <msdn-id>bb174385</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::GetDeviceCaps([Out] D3DCAPS9* pCaps)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::GetDeviceCaps</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.GetDisplayMode(System.Int32)\">\n            <summary>\t\n            <p>Retrieves the display mode's spatial resolution, color resolution, and refresh frequency.</p>\t\n            </summary>\t\n            <param name=\"iSwapChain\"><dd>  <p>An unsigned integer specifying the swap chain.</p> </dd></param>\t\n            <returns><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.DisplayMode\"/></strong> structure containing data about the display mode of the adapter. As opposed to the display mode of the device, which may not be active if the device does not own full-screen mode. </p> </dd></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::GetDisplayMode']/*\"/>\t\n            <msdn-id>bb174387</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::GetDisplayMode([In] unsigned int iSwapChain,[Out] D3DDISPLAYMODE* pMode)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::GetDisplayMode</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.GetCreationParameters(SharpDX.Direct3D9.CreationParameters@)\">\n            <summary>\t\n            <p>Retrieves the creation parameters of the device.</p>\t\n            </summary>\t\n            <param name=\"parametersRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.CreationParameters\"/></strong> structure, describing the creation parameters of the device. </p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>.</p><p><see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/> is returned if the argument is invalid.</p></returns>\t\n            <remarks>\t\n            <p>You can query the AdapterOrdinal member of the returned <strong><see cref=\"T:SharpDX.Direct3D9.CreationParameters\"/></strong> structure to retrieve the ordinal of the adapter represented by this device. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::GetCreationParameters']/*\"/>\t\n            <msdn-id>bb174382</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::GetCreationParameters([Out] D3DDEVICE_CREATION_PARAMETERS* pParameters)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::GetCreationParameters</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.SetCursorProperties(System.Int32,System.Int32,SharpDX.Direct3D9.Surface)\">\n            <summary>\t\n            <p>Sets properties for the cursor.</p>\t\n            </summary>\t\n            <param name=\"xHotSpot\"><dd>  <p>X-coordinate offset (in pixels) that marks the center of the cursor. The offset is relative to the upper-left corner of the cursor. When the cursor is given a new position, the image is drawn at an offset from this new position determined by subtracting the hot spot coordinates from the position. </p> </dd></param>\t\n            <param name=\"yHotSpot\"><dd>  <p>Y-coordinate offset (in pixels) that marks the center of the cursor. The offset is relative to the upper-left corner of the cursor. When the cursor is given a new position, the image is drawn at an offset from this new position determined by subtracting the hot spot coordinates from the position. </p> </dd></param>\t\n            <param name=\"cursorBitmapRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Surface\"/></strong> interface. This parameter must point to an 8888 ARGB surface (format <see cref=\"F:SharpDX.Direct3D9.Format.A8R8G8B8\"/>). The contents of this surface will be copied and potentially format-converted into an internal buffer from which the cursor is displayed. The dimensions of this surface must be less than the dimensions of the display mode, and must be a power of two in each direction, although not necessarily the same power of two. The alpha channel must be either 0.0 or 1.0. </p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>. </p></returns>\t\n            <remarks>\t\n            <p>An operating system cursor is created and used under either of these conditions:</p><ul> <li>The hardware has set <see cref=\"F:SharpDX.Direct3D9.CursorCaps.Color\"/> (see <see cref=\"T:SharpDX.Direct3D9.CursorCaps\"/>), and the cursor size is 32x32 (which is the cursor size in the operating system).</li> <li>The application is running in windowed mode.</li> </ul><p>Otherwise, DirectX uses an emulated cursor. An application uses <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetCursorPosition(SharpDX.DrawingPoint,System.Boolean)\"/></strong> to move an emulated cursor to follow mouse movement.</p><p>It is recommended for applications to always trap WM_MOUSEMOVE events and call DXSetCursorPosition.</p><p>Direct3D cursor functions use either GDI cursor or software emulation, depending on the hardware. Users typically want to respond to a WM_SETCURSOR message. For example, they might want to write the message handler as follows:</p><pre><code> case WM_SETCURSOR:\t\n            // Turn off window cursor. \t\n            SetCursor( <c>null</c> );\t\n            m_pd3dDevice-&gt;ShowCursor( TRUE );\t\n            return TRUE; // Prevent Windows from setting cursor to window class cursor.\t\n            break;\t\n            </code></pre><p>Or, users might want to call the <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetCursorProperties(SharpDX.DrawingPoint,SharpDX.Direct3D9.Surface)\"/></strong> method if they want to change the cursor. </p><p>The application can determine what hardware support is available for cursors by examining appropriate members of the <strong><see cref=\"T:SharpDX.Direct3D9.Capabilities\"/></strong> structure. Typically, hardware supports only 32x32 cursors and, when windowed, the system might support only 32x32 cursors. In this case, <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetCursorProperties(SharpDX.DrawingPoint,SharpDX.Direct3D9.Surface)\"/></strong> still succeeds but the cursor might be reduced to that size. The hot spot is scaled appropriately.</p><p>The cursor does not survive when the device is lost. This method must be called after the device is reset.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::SetCursorProperties']/*\"/>\t\n            <msdn-id>bb174430</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::SetCursorProperties([In] unsigned int XHotSpot,[In] unsigned int YHotSpot,[In] IDirect3DSurface9* pCursorBitmap)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::SetCursorProperties</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.SetCursorPosition(System.Int32,System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Sets the cursor position and update options.</p>\t\n            </summary>\t\n            <param name=\"x\"><dd>  <p>The new X-position of the cursor in virtual desktop coordinates. See Remarks. </p> </dd></param>\t\n            <param name=\"y\"><dd>  <p>The new Y-position of the cursor in virtual desktop coordinates. See Remarks. </p> </dd></param>\t\n            <param name=\"flags\"><dd>  <p> </p><p>Specifies the update options for the cursor. Currently, only one flag is defined.</p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td><dl> <dt><strong>D3DCURSOR_IMMEDIATE_UPDATE</strong></dt> </dl> </td><td> <p>Update cursor at the refresh rate.</p> <p>If this flag is specified, the system guarantees that the cursor will be updated at a minimum of half the display refresh rate, but never more frequently than the display refresh rate. Otherwise, the method delays cursor updates until the next <strong><see cref=\"M:SharpDX.Direct3D9.Device.Present\"/></strong> call. Not setting this flag usually results in better performance than if the flag is set. However, applications should set this flag if the rate of calls to Present is low enough that users would notice a significant delay in cursor motion. This flag has no effect in a windowed-mode application. Some video cards implement hardware color cursors. This flag does not have an effect on these cards.</p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <remarks>\t\n            <p>When running in full-screen mode, screen space coordinates are the back buffer coordinates appropriately scaled to the current display mode. When running in windowed mode, screen space coordinates are the desktop coordinates. The cursor image is drawn at the specified position minus the hotspot-offset specified by the <strong>SetCursorProperties</strong> method.</p><p>If the cursor has been hidden by <strong>ShowCursor</strong>, the cursor is not drawn.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::SetCursorPosition']/*\"/>\t\n            <msdn-id>bb174429</msdn-id>\t\n            <unmanaged>void IDirect3DDevice9::SetCursorPosition([In] int X,[In] int Y,[In] unsigned int Flags)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::SetCursorPosition</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.GetSetShowCursor(SharpDX.Bool)\">\n            <summary>\t\n            <p>Displays or hides the cursor.</p>\t\n            </summary>\t\n            <param name=\"bShow\"><dd>  <p>If bShow is <strong>TRUE</strong>, the cursor is shown. If bShow is <strong><see cref=\"F:SharpDX.Result.False\"/></strong>, the cursor is hidden. </p> </dd></param>\t\n            <returns><p>Value indicating whether the cursor was previously visible. <strong>TRUE</strong> if the cursor was previously visible, or <strong><see cref=\"F:SharpDX.Result.False\"/></strong> if the cursor was not previously visible.</p></returns>\t\n            <remarks>\t\n            <p>Direct3D cursor functions use either GDI cursor or software emulation, depending on the hardware. Users usually want to respond to a WM_SETCURSOR message. For example, the users might want to write the message handler like this:</p><pre><code> case WM_SETCURSOR: // Turn off window cursor  SetCursor( <c>null</c> ); m_pd3dDevice-&gt;ShowCursor( TRUE ); return TRUE; // prevent Windows from setting cursor to window class cursor break;\t\n            </code></pre><p>Or users might want to call the <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetCursorProperties(SharpDX.DrawingPoint,SharpDX.Direct3D9.Surface)\"/></strong> method if they want to change the cursor. See the code in the DirectX Graphics C/C++ Samples for more detail.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::ShowCursor']/*\"/>\t\n            <msdn-id>bb174470</msdn-id>\t\n            <unmanaged>BOOL IDirect3DDevice9::ShowCursor([In] BOOL bShow)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::ShowCursor</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.CreateAdditionalSwapChain(SharpDX.Direct3D9.PresentParameters@,SharpDX.Direct3D9.SwapChain)\">\n            <summary>\t\n            <p>Creates an additional swap chain for rendering multiple views.</p>\t\n            </summary>\t\n            <param name=\"presentationParametersRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.PresentParameters\"/></strong> structure, containing the presentation parameters for the new swap chain. This value cannot be <strong><c>null</c></strong>.</p> <p>Calling this method changes the value of members of the <see cref=\"T:SharpDX.Direct3D9.PresentParameters\"/> structure.</p> <ul> <li>If BackBufferCount == 0, calling CreateAdditionalSwapChain will increase it to 1.</li> <li>If the application is in windowed mode, and if either the BackBufferWidth or the BackBufferHeight == 0, they will be set to the client area width and height of the hwnd.</li> </ul> </dd></param>\t\n            <param name=\"swapChainRef\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D9.SwapChain\"/></strong> interface, representing the additional swap chain. </p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.NotAvailable\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.DeviceLost\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.OutOfVideoMemory\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>There is always at least one swap chain (the implicit swap chain) for each device because Direct3D 9 has one swap chain as a property of the device. </p><p>Note that any given device can support only one full-screen swap chain.</p><p><see cref=\"F:SharpDX.Direct3D9.Format.Unknown\"/> can be specified for the windowed mode back buffer format when calling <strong><see cref=\"M:SharpDX.Direct3D9.Direct3D.CreateDevice(System.Int32,SharpDX.Direct3D9.DeviceType,System.IntPtr,SharpDX.Direct3D9.CreateFlags,SharpDX.Direct3D9.PresentParameters[],SharpDX.Direct3D9.Device)\"/></strong>, <strong><see cref=\"M:SharpDX.Direct3D9.Device.Reset(SharpDX.Direct3D9.PresentParameters[])\"/></strong> and CreateAdditionalSwapChain. This means the application does not have to query the current desktop format before calling CreateDevice for windowed mode. For full-screen mode, the back buffer format must be specified. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::CreateAdditionalSwapChain']/*\"/>\t\n            <msdn-id>bb174354</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::CreateAdditionalSwapChain([In] D3DPRESENT_PARAMETERS* pPresentationParameters,[Out, Fast] IDirect3DSwapChain9** pSwapChain)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::CreateAdditionalSwapChain</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.GetSwapChain(System.Int32)\">\n            <summary>\t\n            <p>Gets a reference to a swap chain.</p>\t\n            </summary>\t\n            <param name=\"iSwapChain\"><dd>  <p>The swap chain ordinal value.  For more information, see NumberOfAdaptersInGroup in <strong><see cref=\"T:SharpDX.Direct3D9.Capabilities\"/></strong>.</p> </dd></param>\t\n            <returns><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.SwapChain\"/></strong> interface that will receive a copy of swap chain. </p> </dd></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::GetSwapChain']/*\"/>\t\n            <msdn-id>bb174411</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::GetSwapChain([In] unsigned int iSwapChain,[Out] IDirect3DSwapChain9** pSwapChain)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::GetSwapChain</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.GetSwapChainCount\">\n            <summary>\t\n            <p>Gets the number of implicit swap chains.</p>\t\n            </summary>\t\n            <returns><p>Number of implicit swap chains. See Remarks.</p></returns>\t\n            <remarks>\t\n            <p>Implicit swap chains are created by the device during <strong><see cref=\"M:SharpDX.Direct3D9.Direct3D.CreateDevice(System.Int32,SharpDX.Direct3D9.DeviceType,System.IntPtr,SharpDX.Direct3D9.CreateFlags,SharpDX.Direct3D9.PresentParameters[],SharpDX.Direct3D9.Device)\"/></strong>. This method returns the number of swap chains created by CreateDevice.  </p><p>An application may create additional swap chains using <strong><see cref=\"M:SharpDX.Direct3D9.Device.CreateAdditionalSwapChain(SharpDX.Direct3D9.PresentParameters@,SharpDX.Direct3D9.SwapChain)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::GetNumberOfSwapChains']/*\"/>\t\n            <msdn-id>bb174396</msdn-id>\t\n            <unmanaged>unsigned int IDirect3DDevice9::GetNumberOfSwapChains()</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::GetNumberOfSwapChains</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.Reset(SharpDX.Direct3D9.PresentParameters[])\">\n            <summary>\t\n            <p>Resets the type, size, and format of the swap chain.</p>\t\n            </summary>\t\n            <param name=\"presentationParametersRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.PresentParameters\"/></strong> structure, describing the new presentation parameters. This value cannot be <strong><c>null</c></strong>.  </p> <p>When switching to full-screen mode, Direct3D will try to find a desktop format that matches the back buffer format, so that back buffer and front buffer formats will be identical (to eliminate the need for color conversion).</p> <p>When this method returns:</p> <ul> <li>BackBufferCount, BackBufferWidth, and BackBufferHeight are set to zero.</li> <li>BackBufferFormat is set to <see cref=\"F:SharpDX.Direct3D9.Format.Unknown\"/> for windowed mode only; a full-screen mode must specify a format.</li> </ul> </dd></param>\t\n            <returns><p>Possible return values include: <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.DeviceLost\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.DeviceRemoved\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.DriverInternalError\"/>, or <see cref=\"F:SharpDX.Direct3D9.ResultCode.OutOfVideoMemory\"/> (see D3DERR).</p></returns>\t\n            <remarks>\t\n            <p>If a call to <strong><see cref=\"M:SharpDX.Direct3D9.Device.Reset(SharpDX.Direct3D9.PresentParameters[])\"/></strong> fails, the device will be placed in the \"lost\" state (as indicated by a return value of <see cref=\"F:SharpDX.Direct3D9.ResultCode.DeviceLost\"/> from a call to <strong><see cref=\"M:SharpDX.Direct3D9.Device.TestCooperativeLevel\"/></strong>) unless it is already in the \"not reset\" state (as indicated by a return value of <see cref=\"F:SharpDX.Direct3D9.ResultCode.DeviceNotReset\"/> from a call to <strong><see cref=\"M:SharpDX.Direct3D9.Device.TestCooperativeLevel\"/></strong>). Refer to <strong><see cref=\"M:SharpDX.Direct3D9.Device.TestCooperativeLevel\"/></strong> and Lost Devices (Direct3D 9) for further information concerning the use of <strong><see cref=\"M:SharpDX.Direct3D9.Device.Reset(SharpDX.Direct3D9.PresentParameters[])\"/></strong> in the context of lost devices.</p><p>Calling <strong><see cref=\"M:SharpDX.Direct3D9.Device.Reset(SharpDX.Direct3D9.PresentParameters[])\"/></strong> causes all texture memory surfaces to be lost, managed textures to be flushed from video memory, and all state information to be lost. Before calling the <strong><see cref=\"M:SharpDX.Direct3D9.Device.Reset(SharpDX.Direct3D9.PresentParameters[])\"/></strong> method for a device, an application should release any explicit render targets, depth stencil surfaces, additional swap chains, state blocks, and <see cref=\"F:SharpDX.Direct3D9.Pool.Default\"/> resources associated with the device.</p><p>There are two different types of swap chains: full-screen or windowed. If the new swap chain is full-screen, the adapter will be placed in the display mode that matches the new size.</p><p>Direct3D 9 applications can expect messages to be sent to them during this call (for example, before this call is returned); applications should take precautions not to call into Direct3D at this time. In addition, when <strong><see cref=\"M:SharpDX.Direct3D9.Device.Reset(SharpDX.Direct3D9.PresentParameters[])\"/></strong> fails, the only valid methods that can be called are <strong><see cref=\"M:SharpDX.Direct3D9.Device.Reset(SharpDX.Direct3D9.PresentParameters[])\"/></strong>, <strong><see cref=\"M:SharpDX.Direct3D9.Device.TestCooperativeLevel\"/></strong>, and the various Release member functions. Calling any other method can result in an exception.</p><p>A call to <strong><see cref=\"M:SharpDX.Direct3D9.Device.Reset(SharpDX.Direct3D9.PresentParameters[])\"/></strong> will fail if called on a different thread than that used to create the device being reset.</p><p>Pixel shaders and vertex shaders survive <strong><see cref=\"M:SharpDX.Direct3D9.Device.Reset(SharpDX.Direct3D9.PresentParameters[])\"/></strong> calls for Direct3D 9. They do not need to be re-created explicitly by the application.</p><p> <see cref=\"F:SharpDX.Direct3D9.Format.Unknown\"/> can be specified for the windowed mode back buffer format when calling <strong><see cref=\"M:SharpDX.Direct3D9.Direct3D.CreateDevice(System.Int32,SharpDX.Direct3D9.DeviceType,System.IntPtr,SharpDX.Direct3D9.CreateFlags,SharpDX.Direct3D9.PresentParameters[],SharpDX.Direct3D9.Device)\"/></strong>, <strong><see cref=\"M:SharpDX.Direct3D9.Device.Reset(SharpDX.Direct3D9.PresentParameters[])\"/></strong>, and <strong><see cref=\"M:SharpDX.Direct3D9.Device.CreateAdditionalSwapChain(SharpDX.Direct3D9.PresentParameters@,SharpDX.Direct3D9.SwapChain)\"/></strong>. This means the application does not have to query the current desktop format before calling <strong><see cref=\"M:SharpDX.Direct3D9.Direct3D.CreateDevice(System.Int32,SharpDX.Direct3D9.DeviceType,System.IntPtr,SharpDX.Direct3D9.CreateFlags,SharpDX.Direct3D9.PresentParameters[],SharpDX.Direct3D9.Device)\"/></strong> for windowed mode. For full-screen mode, the back buffer format must be specified. Setting BackBufferCount equal to zero  (BackBufferCount = 0) results in one back buffer.</p><p>When trying to reset more than one display adapter in a group, set pPresentationParameters to point to an array of <strong><see cref=\"T:SharpDX.Direct3D9.PresentParameters\"/></strong> structures, one for each display in the adapter group.</p><p>If a multihead device was created with <see cref=\"F:SharpDX.Direct3D9.CreateFlags.AdapterGroupDevice\"/>, <strong><see cref=\"M:SharpDX.Direct3D9.Device.Reset(SharpDX.Direct3D9.PresentParameters[])\"/></strong> requires an array of <strong><see cref=\"T:SharpDX.Direct3D9.PresentParameters\"/></strong> structures wherein each structure must specify a full-screen display. To switch back to windowed mode, the application must destroy the device and re-create a non-multihead device in windowed mode.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::Reset']/*\"/>\t\n            <msdn-id>bb174425</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::Reset([In, Out, Params] D3DPRESENT_PARAMETERS* pPresentationParameters)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::Reset</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.Present(System.IntPtr,System.IntPtr,System.IntPtr,System.IntPtr)\">\n            <summary>\t\n            <p>Presents the contents of the next buffer in the sequence of back buffers owned by the device.</p>\t\n            </summary>\t\n            <param name=\"sourceRectRef\"><dd>  <p>Pointer to a value that must be <strong><c>null</c></strong> unless the swap chain was created with <see cref=\"F:SharpDX.Direct3D9.SwapEffect.Copy\"/>. pSourceRect is a reference to a <strong><see cref=\"T:SharpDX.Rectangle\"/></strong> structure containing the source rectangle. If <strong><c>null</c></strong>, the entire source surface is presented. If the rectangle exceeds the source surface, the rectangle is clipped to the source surface. </p> </dd></param>\t\n            <param name=\"destRectRef\"><dd>  <p>Pointer to a value that must be <strong><c>null</c></strong> unless the swap chain was created with <see cref=\"F:SharpDX.Direct3D9.SwapEffect.Copy\"/>. pDestRect is a reference to a <strong><see cref=\"T:SharpDX.Rectangle\"/></strong> structure containing the destination rectangle, in window client coordinates. If <strong><c>null</c></strong>, the entire client area is filled. If the rectangle exceeds the destination client area, the rectangle is clipped to the destination client area. </p> </dd></param>\t\n            <param name=\"hDestWindowOverride\"><dd>  <p>Pointer to a destination window whose client area is taken as the target for this presentation. If this value is <strong><c>null</c></strong>, then the <strong>hWndDeviceWindow</strong> member of <strong><see cref=\"T:SharpDX.Direct3D9.PresentParameters\"/></strong> is taken. </p> </dd></param>\t\n            <param name=\"dirtyRegionRef\"><dd>  <p>Value must be <strong><c>null</c></strong> unless the swap chain was created with <see cref=\"F:SharpDX.Direct3D9.SwapEffect.Copy\"/>. For more information about swap chains, see Flipping Surfaces (Direct3D 9) and <strong><see cref=\"T:SharpDX.Direct3D9.SwapEffect\"/></strong>. If this value is non-<strong><c>null</c></strong>, the contained region is expressed in back buffer coordinates. The rectangles within the region are the minimal set of pixels that need to be updated. This method takes these rectangles into account when optimizing the presentation by copying only the pixels within the region, or some suitably expanded set of rectangles. This is an aid to optimization only, and the application should not rely on the region being copied exactly. The implementation can choose to copy the whole source rectangle.  </p> </dd></param>\t\n            <returns><p>Possible return values include: <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/> or <see cref=\"F:SharpDX.Direct3D9.ResultCode.DeviceRemoved\"/> (see D3DERR).</p></returns>\t\n            <remarks>\t\n            <p>If necessary, a stretch operation is applied to transfer the pixels within the source rectangle to the destination rectangle in the client area of the target window. </p><p><strong>Present</strong> will fail, returning <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, if called between BeginScene and EndScene pairs unless the render target is not the current render target (such as the back buffer you get from creating an additional swap chain). This is a new behavior for Direct3D 9. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::Present']/*\"/>\t\n            <msdn-id>bb174423</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::Present([In] const void* pSourceRect,[In] const void* pDestRect,[In] HWND hDestWindowOverride,[In] const void* pDirtyRegion)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::Present</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.GetBackBuffer(System.Int32,System.Int32,SharpDX.Direct3D9.BackBufferType)\">\n            <summary>\t\n            <p>Retrieves a back buffer from the device's swap chain.</p>\t\n            </summary>\t\n            <param name=\"iSwapChain\"><dd>  <p>An unsigned integer specifying the swap chain.</p> </dd></param>\t\n            <param name=\"iBackBuffer\"><dd>  <p>Index of the back buffer object to return. Back buffers are numbered from 0 to the total number of back buffers minus one. A value of 0 returns the first back buffer, not the front buffer. The front buffer is not accessible through this method. Use <strong><see cref=\"M:SharpDX.Direct3D9.Device.GetFrontBufferData(System.Int32,SharpDX.Direct3D9.Surface)\"/></strong> to retrieve a copy of the front buffer.</p> </dd></param>\t\n            <param name=\"type\"><dd>  <p>Stereo view is not supported in Direct3D 9, so the only valid value for this parameter is <see cref=\"F:SharpDX.Direct3D9.BackBufferType.Mono\"/>. </p> </dd></param>\t\n            <returns><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D9.Surface\"/></strong> interface, representing the returned back buffer surface. </p> </dd></returns>\t\n            <remarks>\t\n            <p>Calling this method will increase the internal reference count on the <strong><see cref=\"T:SharpDX.Direct3D9.Surface\"/></strong> interface. Failure to call <strong>IUnknown::Release</strong> when finished using this <strong><see cref=\"T:SharpDX.Direct3D9.Surface\"/></strong> interface results in a memory leak.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::GetBackBuffer']/*\"/>\t\n            <msdn-id>bb174379</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::GetBackBuffer([In] unsigned int iSwapChain,[In] unsigned int iBackBuffer,[In] D3DBACKBUFFER_TYPE Type,[Out] IDirect3DSurface9** ppBackBuffer)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::GetBackBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.GetRasterStatus(System.Int32)\">\n            <summary>\t\n            <p>Returns information describing the raster of the monitor on which the swap chain is presented.</p>\t\n            </summary>\t\n            <param name=\"iSwapChain\"><dd>  <p>An unsigned integer specifying the swap chain.</p> </dd></param>\t\n            <returns><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.RasterStatus\"/></strong> structure filled with information about the position or other status of the raster on the monitor driven by this adapter. </p> </dd></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::GetRasterStatus']/*\"/>\t\n            <msdn-id>bb174402</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::GetRasterStatus([In] unsigned int iSwapChain,[Out] D3DRASTER_STATUS* pRasterStatus)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::GetRasterStatus</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.SetDialogBoxMode(SharpDX.Bool)\">\n            <summary>\t\n            <p>This method allows the use of GDI dialog boxes in full-screen mode applications.</p>\t\n            </summary>\t\n            <param name=\"bEnableDialogs\"><dd>  <p><strong>TRUE</strong> to enable GDI dialog boxes, and <strong><see cref=\"F:SharpDX.Result.False\"/></strong> to disable them.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/> unless all of the following are true. </p><ul> <li>The application specified a back buffer format compatible with GDI, in other words, one of <see cref=\"F:SharpDX.Direct3D9.Format.X1R5G5B5\"/>, <see cref=\"F:SharpDX.Direct3D9.Format.R5G6B5\"/>, or <see cref=\"F:SharpDX.Direct3D9.Format.X8R8G8B8\"/>.</li> <li>The application specified no multisampling.</li> <li>The application specified <see cref=\"F:SharpDX.Direct3D9.SwapEffect.Discard\"/>.</li> <li>The application specified <see cref=\"F:SharpDX.Direct3D9.PresentFlags.LockableBackBuffer\"/>.</li> <li>The application did not specify <see cref=\"F:SharpDX.Direct3D9.CreateFlags.AdapterGroupDevice\"/>.</li> <li>The application is not between BeginScene and EndScene.</li> </ul></returns>\t\n            <remarks>\t\n            <p>The GDI dialog boxes must be created as child to the device window. They should also be created within the same thread that created the device because this enables the parent window to manage redrawing the child window.</p><p>The method has no effect for windowed mode applications, but this setting will be respected if the application resets the device into full-screen mode. If SetDialogBoxMode succeeds in a windowed mode application, any subsequent reset to full-screen mode will be checked against the restrictions listed above.  Also, SetDialogBoxMode causes all back buffers on the swap chain to be discarded, so an application is expected to refresh its content for all back buffers after this call.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::SetDialogBoxMode']/*\"/>\t\n            <msdn-id>bb174432</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::SetDialogBoxMode([In] BOOL bEnableDialogs)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::SetDialogBoxMode</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.SetGammaRamp(System.Int32,System.Int32,SharpDX.Direct3D9.GammaRamp@)\">\n            <summary>\t\n            <p>Sets the gamma correction ramp for the implicit swap chain. This method will affect the entire screen (not just the active window if you are running in windowed mode).</p>\t\n            </summary>\t\n            <param name=\"iSwapChain\"><dd>  <p>Unsigned integer specifying the swap chain.</p> </dd></param>\t\n            <param name=\"flags\"><dd>  <p>Indicates whether correction should be applied. Gamma correction results in a more consistent display, but can incur processing overhead and should not be used frequently. Short-duration effects, such as flashing the whole screen red, should not be calibrated, but long-duration gamma changes should be calibrated. One of the following values can be set: </p> <p></p> <table> <tr><th>Item</th><th>Description</th></tr> <tr><td> <p>D3DSGR_CALIBRATE</p> </td><td> <p>If a gamma calibrator is installed, the ramp will be modified before being sent to the device to account for the system and monitor response curves. If a calibrator is not installed, the ramp will be passed directly to the device.</p> </td></tr> <tr><td> <p>D3DSGR_NO_CALIBRATION</p> </td><td> <p>No gamma correction is applied. The supplied gamma table is transferred directly to the device.</p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <param name=\"rampRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.GammaRamp\"/></strong> structure, representing the gamma correction ramp to be set for the implicit swap chain. </p> </dd></param>\t\n            <remarks>\t\n            <p>There is always at least one swap chain (the implicit swap chain) for each device, because Direct3D 9 has one swap chain as a property of the device. The gamma ramp takes effect immediately; there is no wait for a vertical sync.</p><p>If the device does not support gamma ramps in the swap chain's current presentation mode (full-screen or windowed), no error return is given. Applications can check the <see cref=\"F:SharpDX.Direct3D9.Caps2.FullScreenGamma\"/> and <see cref=\"F:SharpDX.Direct3D9.Caps2.CanCalibrateGamma\"/> capability bits in the Caps2 member of the <see cref=\"T:SharpDX.Direct3D9.Capabilities\"/> structure to determine the capabilities of the device and whether a calibrator is installed.</p><p>For windowed gamma correction presentation, use <strong><see cref=\"M:SharpDX.Direct3D9.SwapChain.Present(System.IntPtr,System.IntPtr,System.IntPtr,System.IntPtr,System.Int32)\"/></strong> if the hardware supports the feature. In DirectX 8, SetGammaRamp will set the gamma ramp only on a full-screen mode application. For more information about gamma correction, see Gamma (Direct3D 9).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::SetGammaRamp']/*\"/>\t\n            <msdn-id>bb174434</msdn-id>\t\n            <unmanaged>void IDirect3DDevice9::SetGammaRamp([In] unsigned int iSwapChain,[In] unsigned int Flags,[In] const D3DGAMMARAMP* pRamp)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::SetGammaRamp</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.GetGammaRamp(System.Int32)\">\n            <summary>\t\n            <p>Retrieves the gamma correction ramp for the swap chain.</p>\t\n            </summary>\t\n            <param name=\"iSwapChain\"><dd>  <p>An unsigned integer specifying the swap chain.</p> </dd></param>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::GetGammaRamp']/*\"/>\t\n            <msdn-id>bb174390</msdn-id>\t\n            <unmanaged>void IDirect3DDevice9::GetGammaRamp([In] unsigned int iSwapChain,[Out] D3DGAMMARAMP* pRamp)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::GetGammaRamp</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.CreateTexture(System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,SharpDX.Direct3D9.Texture,System.IntPtr)\">\n            <summary>\t\n            <p>Creates a texture resource.</p>\t\n            </summary>\t\n            <param name=\"width\"><dd>  <p>Width of the top-level of the texture, in pixels. The pixel dimensions of subsequent levels will be the truncated value of half of the previous level's  pixel dimension (independently). Each dimension clamps at a size of 1 pixel. Thus, if the division by 2 results in 0, 1 will be taken instead. </p> </dd></param>\t\n            <param name=\"height\"><dd>  <p>Height of the top-level of the texture, in pixels. The pixel dimensions of subsequent levels will be the truncated value of half of the previous level's  pixel dimension (independently). Each dimension clamps at a size of 1 pixel. Thus, if the division by 2 results in 0, 1 will be taken instead. </p> </dd></param>\t\n            <param name=\"levels\"><dd>  <p>Number of levels in the texture. If this is zero, Direct3D will generate all texture sublevels down to 1 by 1 pixels for hardware that supports  mipmapped textures. Call <strong><see cref=\"M:SharpDX.Direct3D9.BaseTexture.GetLevelCount\"/></strong> to see the number of levels generated. </p> </dd></param>\t\n            <param name=\"usage\"><dd>  <p>Usage can be 0, which indicates no usage value. However, if usage is desired, use a combination of one or more <strong><see cref=\"T:SharpDX.Direct3D9.Usage\"/></strong> constants. It is  good practice to match the usage parameter with the behavior flags in <strong><see cref=\"M:SharpDX.Direct3D9.Direct3D.CreateDevice(System.Int32,SharpDX.Direct3D9.DeviceType,System.IntPtr,SharpDX.Direct3D9.CreateFlags,SharpDX.Direct3D9.PresentParameters[],SharpDX.Direct3D9.Device)\"/></strong>. </p> </dd></param>\t\n            <param name=\"format\"><dd>  <p>Member of the <see cref=\"T:SharpDX.Direct3D9.Format\"/> enumerated type, describing the format of all levels in the texture. </p> </dd></param>\t\n            <param name=\"pool\"><dd>  <p>Member of the <strong><see cref=\"T:SharpDX.Direct3D9.Pool\"/></strong> enumerated type, describing the memory class into which the texture should be placed. </p> </dd></param>\t\n            <param name=\"textureOut\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Texture\"/></strong> interface, representing the created texture resource. </p> </dd></param>\t\n            <param name=\"sharedHandleRef\"><dd>  <p>Reserved. Set this parameter to <strong><c>null</c></strong>. This parameter can be used in Direct3D 9 for Windows Vista to  share resources.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>,  <see cref=\"F:SharpDX.Direct3D9.ResultCode.OutOfVideoMemory\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>An application can discover support for Automatic Generation of Mipmaps (Direct3D 9) in a particular format by calling  <strong><see cref=\"M:SharpDX.Direct3D9.Direct3D.CheckDeviceFormat_(System.Int32,SharpDX.Direct3D9.DeviceType,SharpDX.Direct3D9.Format,System.Int32,SharpDX.Direct3D9.ResourceType,SharpDX.Direct3D9.Format)\"/></strong> with <see cref=\"F:SharpDX.Direct3D9.Usage.AutoGenerateMipMap\"/>. If <strong><see cref=\"M:SharpDX.Direct3D9.Direct3D.CheckDeviceFormat_(System.Int32,SharpDX.Direct3D9.DeviceType,SharpDX.Direct3D9.Format,System.Int32,SharpDX.Direct3D9.ResourceType,SharpDX.Direct3D9.Format)\"/></strong> returns <see cref=\"F:SharpDX.Direct3D9.ResultCode.NoAutomaticGeneration\"/>,  <strong><see cref=\"M:SharpDX.Direct3D9.Device.CreateTexture(System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,SharpDX.Direct3D9.Texture,System.IntPtr)\"/></strong> will succeed but it will return a one-level texture.</p><p>In Windows Vista CreateTexture can create a texture from a system memory reference allowing the application more flexibility over the use, allocation and deletion of  the system memory.  For example, an application could pass a GDI system memory bitmap reference and get a Direct3D texture interface around it.  Using a system memory  reference with CreateTexture has the following restrictions.</p><ul> <li>The pitch of the texture must be equal to the width multiplied by the number of bytes per pixel.</li> <li>Only textures with a single mipmap level are supported.  The <em>Levels</em> argument must be 1.</li> <li>The <em>Pool</em> argument must be <see cref=\"F:SharpDX.Direct3D9.Pool.SystemMemory\"/>.</li> <li>The <em>pSharedHandle</em> argument must be a valid reference to a buffer that can hold the system memory point; <em>*pSharedHandle</em> must  be a valid reference to system memory with a size in bytes of texture width * texture height * bytes per pixel of the texture format.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::CreateTexture']/*\"/>\t\n            <msdn-id>bb174363</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::CreateTexture([In] unsigned int Width,[In] unsigned int Height,[In] unsigned int Levels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[Out, Fast] IDirect3DTexture9** ppTexture,[In] void** pSharedHandle)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::CreateTexture</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.CreateVolumeTexture(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,SharpDX.Direct3D9.VolumeTexture,System.IntPtr)\">\n            <summary>\t\n            <p>Creates a volume texture resource.</p>\t\n            </summary>\t\n            <param name=\"width\"><dd>  <p>Width of the top-level of the volume texture, in pixels. This value must be a power of two if the <see cref=\"F:SharpDX.Direct3D9.TextureCaps.VolumeMapPow2\"/> member of <strong><see cref=\"T:SharpDX.Direct3D9.Capabilities\"/></strong> is set. The pixel dimensions of subsequent levels will be the truncated value of half of the previous level's pixel dimension (independently). Each dimension clamps at a size of 1 pixel. Thus, if the division by two results in 0 (zero), 1 will be taken instead. The maximum dimension that a driver supports (for width, height, and depth) can be found in MaxVolumeExtent in <strong><see cref=\"T:SharpDX.Direct3D9.Capabilities\"/></strong>.</p> </dd></param>\t\n            <param name=\"height\"><dd>  <p>Height of the top-level of the volume texture, in pixels. This value must be a power of two if the <see cref=\"F:SharpDX.Direct3D9.TextureCaps.VolumeMapPow2\"/> member of <strong><see cref=\"T:SharpDX.Direct3D9.Capabilities\"/></strong> is set. The pixel dimensions of subsequent levels will be the truncated value of half of the previous level's pixel dimension (independently). Each dimension clamps at a size of 1 pixel. Thus, if the division by 2 results in 0 (zero), 1 will be taken instead. The maximum dimension that a driver supports (for width, height, and depth) can be found in MaxVolumeExtent in <strong><see cref=\"T:SharpDX.Direct3D9.Capabilities\"/></strong>.</p> </dd></param>\t\n            <param name=\"depth\"><dd>  <p>Depth of the top-level of the volume texture, in pixels. This value must be a power of two if the <see cref=\"F:SharpDX.Direct3D9.TextureCaps.VolumeMapPow2\"/> member of <strong><see cref=\"T:SharpDX.Direct3D9.Capabilities\"/></strong> is set. The pixel dimensions of subsequent levels will be the truncated value of half of the previous level's pixel dimension (independently). Each dimension clamps at a size of 1 pixel. Thus, if the division by 2 results in 0 (zero), 1 will be taken instead. The maximum dimension that a driver supports (for width, height, and depth) can be found in MaxVolumeExtent in <strong><see cref=\"T:SharpDX.Direct3D9.Capabilities\"/></strong>.</p> </dd></param>\t\n            <param name=\"levels\"><dd>  <p>Number of levels in the texture. If this is zero, Direct3D will generate all texture sublevels down to 1x1 pixels for hardware that supports mipmapped volume textures. Call <strong><see cref=\"M:SharpDX.Direct3D9.BaseTexture.GetLevelCount\"/></strong> to see the number of levels generated. </p> </dd></param>\t\n            <param name=\"usage\"><dd>  <p>Usage can be 0, which indicates no usage value. If usage is desired, use <see cref=\"F:SharpDX.Direct3D9.Usage.Dynamic\"/> or <see cref=\"F:SharpDX.Direct3D9.Usage.SoftwareProcessing\"/>. For more information, see <strong><see cref=\"T:SharpDX.Direct3D9.Usage\"/></strong>. </p> </dd></param>\t\n            <param name=\"format\"><dd>  <p>Member of the <see cref=\"T:SharpDX.Direct3D9.Format\"/> enumerated type, describing the format of all levels in the volume texture. </p> </dd></param>\t\n            <param name=\"pool\"><dd>  <p>Member of the <strong><see cref=\"T:SharpDX.Direct3D9.Pool\"/></strong> enumerated type, describing the memory class into which the volume texture should be placed. </p> </dd></param>\t\n            <param name=\"volumeTextureOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D9.VolumeTexture\"/></strong> interface, representing the created volume texture resource. </p> </dd></param>\t\n            <param name=\"sharedHandleRef\"><dd>  <p>Reserved. Set this parameter to <strong><c>null</c></strong>. This parameter can be used in Direct3D 9 for Windows Vista to share resources.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.OutOfVideoMemory\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::CreateVolumeTexture']/*\"/>\t\n            <msdn-id>bb174367</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::CreateVolumeTexture([In] unsigned int Width,[In] unsigned int Height,[In] unsigned int Depth,[In] unsigned int Levels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[Out, Fast] IDirect3DVolumeTexture9** ppVolumeTexture,[In] void** pSharedHandle)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::CreateVolumeTexture</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.CreateCubeTexture(System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,SharpDX.Direct3D9.CubeTexture,System.IntPtr)\">\n            <summary>\t\n            <p>Creates a cube texture resource.</p>\t\n            </summary>\t\n            <param name=\"edgeLength\"><dd>  <p>Size of the edges of all the top-level faces of the cube texture. The pixel dimensions of subsequent levels of each face will be the truncated value of half of the previous level's pixel dimension (independently). Each dimension clamps at a size of 1 pixel. Thus, if the division by 2 results in 0 (zero), 1 will be taken instead. </p> </dd></param>\t\n            <param name=\"levels\"><dd>  <p>Number of levels in each face of the cube texture. If this is zero, Direct3D will generate all cube texture sublevels down to 1x1 pixels for each face for hardware that supports mipmapped cube textures.  Call <strong><see cref=\"M:SharpDX.Direct3D9.BaseTexture.GetLevelCount\"/></strong> to see the number of levels generated. </p> </dd></param>\t\n            <param name=\"usage\"><dd>  <p>Usage can be 0, which indicates no usage value. However, if usage is desired, use a combination of one or more <strong><see cref=\"T:SharpDX.Direct3D9.Usage\"/></strong> constants. It is good practice to match the usage parameter in CreateCubeTexture with the behavior flags in <strong><see cref=\"M:SharpDX.Direct3D9.Direct3D.CreateDevice(System.Int32,SharpDX.Direct3D9.DeviceType,System.IntPtr,SharpDX.Direct3D9.CreateFlags,SharpDX.Direct3D9.PresentParameters[],SharpDX.Direct3D9.Device)\"/></strong>. For more information, see Remarks. </p> </dd></param>\t\n            <param name=\"format\"><dd>  <p>Member of the <see cref=\"T:SharpDX.Direct3D9.Format\"/> enumerated type, describing the format of all levels in all faces of the cube texture. </p> </dd></param>\t\n            <param name=\"pool\"><dd>  <p>Member of the <strong><see cref=\"T:SharpDX.Direct3D9.Pool\"/></strong> enumerated type, describing the memory class into which the cube texture should be placed. </p> </dd></param>\t\n            <param name=\"cubeTextureOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D9.CubeTexture\"/></strong> interface, representing the created cube texture resource. </p> </dd></param>\t\n            <param name=\"sharedHandleRef\"><dd>  <p>Reserved. Set this parameter to <strong><c>null</c></strong>. This parameter can be used in Direct3D 9 for Windows Vista to share resources.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.OutOfVideoMemory\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>A mipmap (texture) is a collection of successively downsampled (mipmapped) surfaces. On the other hand, a cube texture (created by <strong><see cref=\"M:SharpDX.Direct3D9.Device.CreateCubeTexture(System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,SharpDX.Direct3D9.CubeTexture,System.IntPtr)\"/></strong>) is a collection of six textures (mipmaps), one for each face. All faces must be present in the cube texture. Also, a cube map surface must be the same pixel size in all three dimensions (x, y, and z).</p><p>An application can discover support for Automatic Generation of Mipmaps (Direct3D 9) in a particular format by calling <strong><see cref=\"M:SharpDX.Direct3D9.Direct3D.CheckDeviceFormat_(System.Int32,SharpDX.Direct3D9.DeviceType,SharpDX.Direct3D9.Format,System.Int32,SharpDX.Direct3D9.ResourceType,SharpDX.Direct3D9.Format)\"/></strong> with <see cref=\"F:SharpDX.Direct3D9.Usage.AutoGenerateMipMap\"/>. If <strong><see cref=\"M:SharpDX.Direct3D9.Direct3D.CheckDeviceFormat_(System.Int32,SharpDX.Direct3D9.DeviceType,SharpDX.Direct3D9.Format,System.Int32,SharpDX.Direct3D9.ResourceType,SharpDX.Direct3D9.Format)\"/></strong> returns <see cref=\"F:SharpDX.Direct3D9.ResultCode.NoAutomaticGeneration\"/>, <strong><see cref=\"M:SharpDX.Direct3D9.Device.CreateCubeTexture(System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,SharpDX.Direct3D9.CubeTexture,System.IntPtr)\"/></strong> will succeed but it will return a one-level texture.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::CreateCubeTexture']/*\"/>\t\n            <msdn-id>bb174355</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::CreateCubeTexture([In] unsigned int EdgeLength,[In] unsigned int Levels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[Out, Fast] IDirect3DCubeTexture9** ppCubeTexture,[In] void** pSharedHandle)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::CreateCubeTexture</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.CreateVertexBuffer(System.Int32,SharpDX.Direct3D9.Usage,SharpDX.Direct3D9.VertexFormat,SharpDX.Direct3D9.Pool,SharpDX.Direct3D9.VertexBuffer,System.IntPtr)\">\n            <summary>\t\n            <p>Creates a vertex buffer.</p>\t\n            </summary>\t\n            <param name=\"length\"><dd>  <p>Size of the vertex buffer, in bytes. For FVF vertex buffers, Length must be large enough to contain at least one vertex, but it need not be a multiple of the vertex size. Length is not validated for non-FVF buffers. See Remarks. </p> </dd></param>\t\n            <param name=\"usage\"><dd>  <p>Usage can be 0, which indicates no usage value. However, if usage is desired, use a combination of one or more <strong><see cref=\"T:SharpDX.Direct3D9.Usage\"/></strong> constants. It is good practice to match the usage parameter in CreateVertexBuffer with the behavior flags in <strong><see cref=\"M:SharpDX.Direct3D9.Direct3D.CreateDevice(System.Int32,SharpDX.Direct3D9.DeviceType,System.IntPtr,SharpDX.Direct3D9.CreateFlags,SharpDX.Direct3D9.PresentParameters[],SharpDX.Direct3D9.Device)\"/></strong>. For more information, see Remarks. </p> </dd></param>\t\n            <param name=\"vertexFormat\"><dd>  <p>Combination of <see cref=\"T:SharpDX.Direct3D9.VertexFormat\"/>, a usage specifier that describes the vertex format of the vertices in this buffer. If this parameter is set to a valid FVF code, the created vertex buffer is an FVF vertex buffer (see Remarks). Otherwise, if this parameter is set to zero, the vertex buffer is a non-FVF vertex buffer. </p> </dd></param>\t\n            <param name=\"pool\"><dd>  <p>Member of the <strong><see cref=\"T:SharpDX.Direct3D9.Pool\"/></strong> enumerated type, describing a valid memory class into which to place the resource. Do not set to <see cref=\"F:SharpDX.Direct3D9.Pool.Scratch\"/>.</p> </dd></param>\t\n            <param name=\"vertexBufferOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D9.VertexBuffer\"/></strong> interface, representing the created vertex buffer resource. </p> </dd></param>\t\n            <param name=\"sharedHandleRef\"><dd>  <p>Reserved. Set this parameter to <strong><c>null</c></strong>. This parameter can be used in Direct3D 9 for Windows Vista to share resources.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.OutOfVideoMemory\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>A vertex buffer can be used with either hardware or software vertex processing. This is determined by how the device and the vertex buffer are created.</p><p>When a device is created, CreateDevice uses the behavior flag to determine whether to process vertices in hardware or software. There are three possibilities:</p><ul> <li>Process vertices in hardware by setting <see cref=\"F:SharpDX.Direct3D9.CreateFlags.HardwareVertexProcessing\"/>.</li> <li>Process vertices in software by setting <see cref=\"F:SharpDX.Direct3D9.CreateFlags.SoftwareVertexProcessing\"/>.</li> <li>Process vertices in either hardware or software by setting <see cref=\"F:SharpDX.Direct3D9.CreateFlags.MixedVertexProcessing\"/>.</li> </ul><p>Mixed-mode devices might need to switch between software and hardware processing (using <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetSoftwareVertexProcessing(SharpDX.Bool)\"/></strong>) after the device is created.    </p><p>When a vertex buffer is created, CreateVertexBuffer uses the usage parameter to decide whether to process vertices in hardware or software.</p><ul> <li>If CreateDevice uses <see cref=\"F:SharpDX.Direct3D9.CreateFlags.HardwareVertexProcessing\"/>, CreateVertexBuffer must use 0.</li> <li>If CreateDevice uses <see cref=\"F:SharpDX.Direct3D9.CreateFlags.SoftwareVertexProcessing\"/>, CreateVertexBuffer must use either 0 or <see cref=\"F:SharpDX.Direct3D9.Usage.SoftwareProcessing\"/>. For either value, vertices will be processed in software.</li> <li>If CreateDevice uses <see cref=\"F:SharpDX.Direct3D9.CreateFlags.MixedVertexProcessing\"/>, CreateVertexBuffer can use either 0 or <see cref=\"F:SharpDX.Direct3D9.Usage.SoftwareProcessing\"/>.</li> </ul><p>To use a vertex buffer with a mixed mode device, create a single vertex buffer which can be used for both hardware or software processing. Use <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetStreamSource(System.Int32,SharpDX.Direct3D9.VertexBuffer,System.Int32,System.Int32)\"/></strong> to set the current vertex buffer and use <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetRenderState(SharpDX.Direct3D9.RenderState,System.Boolean)\"/></strong>, if necessary, to change the device behavior to match. It is recommended that the vertex buffer usage matches the device behavior. Note that a vertex buffer created for software processing cannot be located in video memory.</p><p>The <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface supports rendering of primitives using vertex data stored in vertex buffer objects. Vertex buffers are created from the <see cref=\"T:SharpDX.Direct3D9.Device\"/>, and are usable only with the <see cref=\"T:SharpDX.Direct3D9.Device\"/> object from which they are created.</p><p>When set to a nonzero value, which must be a valid FVF code, the FVF parameter indicates that the buffer content is to be characterized by an FVF code. A vertex buffer that is created with an FVF code is referred to as an FVF vertex buffer. For more information, see FVF Vertex Buffers (Direct3D 9). </p><p>Non-FVF buffers can be used to interleave data during multipass rendering or multitexture rendering in a single pass. To do this, one buffer contains geometry data and the others contain texture coordinates for each texture to be rendered. When rendering, the buffer containing the geometry data is interleaved with each of the buffers containing the texture coordinates. If FVF buffers were used instead, each of them would need to contain identical geometry data in addition to the texture coordinate data specific to each texture rendered. This would result in either a speed or memory penalty, depending on the strategy used. For more information about texture coordinates, see Texture Coordinates (Direct3D 9).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::CreateVertexBuffer']/*\"/>\t\n            <msdn-id>bb174364</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::CreateVertexBuffer([In] unsigned int Length,[In] D3DUSAGE Usage,[In] D3DFVF FVF,[In] D3DPOOL Pool,[Out, Fast] IDirect3DVertexBuffer9** ppVertexBuffer,[In] void** pSharedHandle)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::CreateVertexBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.CreateIndexBuffer(System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,SharpDX.Direct3D9.IndexBuffer,System.IntPtr)\">\n            <summary>\t\n            <p>Creates an index buffer.</p>\t\n            </summary>\t\n            <param name=\"length\"><dd>  <p>Size of the index buffer, in bytes. </p> </dd></param>\t\n            <param name=\"usage\"><dd>  <p>Usage can be 0, which indicates no usage value. However, if usage is desired, use a combination of one or more <strong><see cref=\"T:SharpDX.Direct3D9.Usage\"/></strong> constants. It is good practice to match the usage parameter in CreateIndexBuffer with the behavior flags in <strong><see cref=\"M:SharpDX.Direct3D9.Direct3D.CreateDevice(System.Int32,SharpDX.Direct3D9.DeviceType,System.IntPtr,SharpDX.Direct3D9.CreateFlags,SharpDX.Direct3D9.PresentParameters[],SharpDX.Direct3D9.Device)\"/></strong>. For more information, see Remarks. </p> </dd></param>\t\n            <param name=\"format\"><dd>  <p>Member of the <see cref=\"T:SharpDX.Direct3D9.Format\"/> enumerated type, describing the format of the index buffer. For more information, see Remarks. The valid settings are the following: </p> <p></p> <table> <tr><th>Item</th><th>Description</th></tr> <tr><td> <p><see cref=\"F:SharpDX.Direct3D9.Format.Index16\"/></p> </td><td> <p>Indices are 16 bits each.</p> </td></tr> <tr><td> <p><see cref=\"F:SharpDX.Direct3D9.Format.Index32\"/></p> </td><td> <p>Indices are 32 bits each.</p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <param name=\"pool\"><dd>  <p>Member of the <strong><see cref=\"T:SharpDX.Direct3D9.Pool\"/></strong> enumerated type, describing a valid memory class into which to place the resource. </p> </dd></param>\t\n            <param name=\"indexBufferOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D9.IndexBuffer\"/></strong> interface, representing the created index buffer resource. </p> </dd></param>\t\n            <param name=\"sharedHandleRef\"><dd>  <p>This parameter can be used in Direct3D?9 for Windows?Vista to share resources; set it to <strong><c>null</c></strong> to not share a resource. This parameter is not used in Direct3D?9 for operating systems earlier than Windows?Vista; set it to <strong><c>null</c></strong>. </p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.OutOfVideoMemory\"/>, D3DXERR_INVALIDDATA, E_OUTOFMEMORY. </p></returns>\t\n            <remarks>\t\n            <p>Index buffers are memory resources used to hold indices, they are similar to both surfaces and vertex buffers. The use of index buffers enables Direct3D to avoid unnecessary data copying and to place the buffer in the optimal memory type for the expected usage.</p><p>To use index buffers, create an index buffer, lock it, fill it with indices, unlock it, pass it to <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetIndices(SharpDX.Direct3D9.IndexBuffer)\"/></strong>, set up the vertices, set up the vertex shader, and call <strong><see cref=\"M:SharpDX.Direct3D9.Device.DrawIndexedPrimitive(SharpDX.Direct3D9.PrimitiveType,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32)\"/></strong> for rendering.</p><p>The MaxVertexIndex member of the <strong><see cref=\"T:SharpDX.Direct3D9.Capabilities\"/></strong> structure indicates the types of index buffers that are valid for rendering.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::CreateIndexBuffer']/*\"/>\t\n            <msdn-id>bb174357</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::CreateIndexBuffer([In] unsigned int Length,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[Out, Fast] IDirect3DIndexBuffer9** ppIndexBuffer,[In] void** pSharedHandle)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::CreateIndexBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.CreateRenderTarget(System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.MultisampleType,System.Int32,SharpDX.Bool,System.IntPtr)\">\n            <summary>\t\n            <p>Creates a render-target surface.</p>\t\n            </summary>\t\n            <param name=\"width\"><dd>  <p>Width of the render-target surface, in pixels. </p> </dd></param>\t\n            <param name=\"height\"><dd>  <p>Height of the render-target surface, in pixels. </p> </dd></param>\t\n            <param name=\"format\"><dd>  <p>Member of the <see cref=\"T:SharpDX.Direct3D9.Format\"/> enumerated type, describing the format of the render target. </p> </dd></param>\t\n            <param name=\"multiSample\"><dd>  <p>Member of the <strong><see cref=\"T:SharpDX.Direct3D9.MultisampleType\"/></strong> enumerated type, which describes the multisampling buffer type. This parameter specifies the antialiasing type for this render target. When this surface is passed to <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetRenderTarget(System.Int32,SharpDX.Direct3D9.Surface)\"/></strong>, its multisample type must be the same as that of the depth-stencil set by <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetDepthStencilSurface(SharpDX.Direct3D9.Surface)\"/></strong>. </p> </dd></param>\t\n            <param name=\"multisampleQuality\"><dd>  <p>Quality level. The valid range is between zero and one less than the level returned by pQualityLevels used by  <strong><see cref=\"M:SharpDX.Direct3D9.Direct3D.CheckDeviceMultiSampleType_(System.Int32,SharpDX.Direct3D9.DeviceType,SharpDX.Direct3D9.Format,SharpDX.Bool,SharpDX.Direct3D9.MultisampleType,System.Int32@)\"/></strong>. Passing a larger value returns the error, <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>. The MultisampleQuality values of paired render targets, depth stencil surfaces, and the multisample type must all match.</p> </dd></param>\t\n            <param name=\"lockable\"><dd>  <p>Render targets are not lockable unless the application specifies <strong>TRUE</strong> for Lockable.</p> <p>Note that lockable render targets reduce performance on some graphics hardware. The readback performance (moving data from video memory to system memory) depends on the type of hardware used (AGP vs. PCI Express) and is usually far lower than upload performance (moving data from system to video memory). If you need read access to render targets, use <strong>GetRenderTargetData</strong> instead of lockable render targets.</p> </dd></param>\t\n            <param name=\"sharedHandleRef\"><dd>  <p>Reserved. Set this parameter to <strong><c>null</c></strong>. This parameter can be used in Direct3D 9 for Windows Vista to share resources.</p> </dd></param>\t\n            <returns><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D9.Surface\"/></strong> interface. </p> </dd></returns>\t\n            <remarks>\t\n            <p>Render-target surfaces are placed in the <see cref=\"F:SharpDX.Direct3D9.Pool.Default\"/> memory class.</p><p>The creation of lockable, multisampled render targets is not supported.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::CreateRenderTarget']/*\"/>\t\n            <msdn-id>bb174361</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::CreateRenderTarget([In] unsigned int Width,[In] unsigned int Height,[In] D3DFORMAT Format,[In] D3DMULTISAMPLE_TYPE MultiSample,[In] unsigned int MultisampleQuality,[In] BOOL Lockable,[Out] IDirect3DSurface9** ppSurface,[In] void** pSharedHandle)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::CreateRenderTarget</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.CreateDepthStencilSurface(System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.MultisampleType,System.Int32,SharpDX.Bool,System.IntPtr)\">\n            <summary>\t\n            <p>Creates a depth-stencil resource.</p>\t\n            </summary>\t\n            <param name=\"width\"><dd>  <p>Width of the depth-stencil surface, in pixels. </p> </dd></param>\t\n            <param name=\"height\"><dd>  <p>Height of the depth-stencil surface, in pixels. </p> </dd></param>\t\n            <param name=\"format\"><dd>  <p>Member of the <see cref=\"T:SharpDX.Direct3D9.Format\"/> enumerated type, describing the format of the depth-stencil surface. This value must be one of the enumerated depth-stencil formats for this device.</p> </dd></param>\t\n            <param name=\"multiSample\"><dd>  <p>Member of the <strong><see cref=\"T:SharpDX.Direct3D9.MultisampleType\"/></strong> enumerated type, describing the multisampling buffer type. This value must be one of the allowed multisample types. When this surface is passed to <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetDepthStencilSurface(SharpDX.Direct3D9.Surface)\"/></strong>, its multisample type must be the same as that of the render target set by <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetRenderTarget(System.Int32,SharpDX.Direct3D9.Surface)\"/></strong>.</p> </dd></param>\t\n            <param name=\"multisampleQuality\"><dd>  <p>Quality level. The valid range is between zero and one less than the level returned by pQualityLevels used by  <strong><see cref=\"M:SharpDX.Direct3D9.Direct3D.CheckDeviceMultiSampleType_(System.Int32,SharpDX.Direct3D9.DeviceType,SharpDX.Direct3D9.Format,SharpDX.Bool,SharpDX.Direct3D9.MultisampleType,System.Int32@)\"/></strong>. Passing a larger value returns the error <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>. The MultisampleQuality values of paired render targets, depth stencil surfaces, and the MultiSample type must all match.</p> </dd></param>\t\n            <param name=\"discard\"><dd>  <p>Set this flag to <strong>TRUE</strong> to enable z-buffer discarding, and <strong><see cref=\"F:SharpDX.Result.False\"/></strong> otherwise.\t\t\t\tIf this flag is set, the contents of the depth stencil buffer will be invalid after calling either <strong><see cref=\"M:SharpDX.Direct3D9.Device.Present\"/></strong> or <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetDepthStencilSurface(SharpDX.Direct3D9.Surface)\"/></strong> with a different depth surface.</p> <p>This flag has the same behavior as the constant,  <see cref=\"F:SharpDX.Direct3D9.PresentFlags.DiscardDepthStencil\"/>, in <see cref=\"T:SharpDX.Direct3D9.PresentFlags\"/>.</p> </dd></param>\t\n            <param name=\"sharedHandleRef\"><dd>  <p>Reserved. Set this parameter to <strong><c>null</c></strong>. This parameter can be used in Direct3D 9 for Windows Vista to share resources.</p> </dd></param>\t\n            <returns><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D9.Surface\"/></strong> interface, representing the created depth-stencil surface resource. </p> </dd></returns>\t\n            <remarks>\t\n            <p>The memory class of the depth-stencil buffer is always <see cref=\"F:SharpDX.Direct3D9.Pool.Default\"/>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::CreateDepthStencilSurface']/*\"/>\t\n            <msdn-id>bb174356</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::CreateDepthStencilSurface([In] unsigned int Width,[In] unsigned int Height,[In] D3DFORMAT Format,[In] D3DMULTISAMPLE_TYPE MultiSample,[In] unsigned int MultisampleQuality,[In] BOOL Discard,[Out] IDirect3DSurface9** ppSurface,[In] void** pSharedHandle)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::CreateDepthStencilSurface</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.UpdateSurface(SharpDX.Direct3D9.Surface,System.Nullable{SharpDX.Rectangle},SharpDX.Direct3D9.Surface,System.Nullable{SharpDX.DrawingPoint})\">\n            <summary>\t\n            <p>Copies rectangular subsets of pixels from one surface to another. </p>\t\n            </summary>\t\n            <param name=\"sourceSurfaceRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Surface\"/></strong> interface, representing the source surface. This parameter must point to a different surface than pDestinationSurface. </p> </dd></param>\t\n            <param name=\"sourceRectRef\"><dd>  <p>Pointer to a rectangle on the source surface. Specifying <strong><c>null</c></strong> for this parameter causes the entire surface to be copied. </p> </dd></param>\t\n            <param name=\"destinationSurfaceRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Surface\"/></strong> interface, representing the destination surface.</p> </dd></param>\t\n            <param name=\"destPointRef\"><dd>  <p>Pointer to the upper left corner of the destination rectangle. Specifying <strong><c>null</c></strong> for this parameter causes the entire surface to be copied. </p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>This method is similar to CopyRects in DirectX 8.</p><p>This function has the following restrictions.</p><ul> <li>The source surface must have been created with <see cref=\"F:SharpDX.Direct3D9.Pool.SystemMemory\"/>.</li> <li>The destination surface must have been created with <see cref=\"F:SharpDX.Direct3D9.Pool.Default\"/>.</li> <li>Neither surface can be locked or holding an outstanding device context.</li> <li>Neither surface can be created with multisampling. The only valid flag for both surfaces is <see cref=\"F:SharpDX.Direct3D9.MultisampleType.None\"/>.</li> <li>The surface format cannot be a depth stencil format.</li> <li>The source and dest rects must fit within the surface.</li> <li>No stretching or shrinking is allowed (the rects must be the same size).</li> <li>The source format must match the dest format.</li> </ul><p>The following table shows the supported combinations.</p><table> <tr><th></th><th></th><th>Dest formats</th><th></th><th></th><th></th></tr> <tr><th></th><td></td><td>Texture</td><td>RT texture</td><td>RT</td><td>Off-screen plain</td></tr> <tr><th>Src formats</th><td>Texture</td><td>Yes</td><td>Yes</td><td>Yes*</td><td>Yes</td></tr> <tr><th></th><td>RT texture</td><td>No</td><td>No</td><td>No</td><td>No</td></tr> <tr><th></th><td>RT</td><td>No</td><td>No</td><td>No</td><td>No</td></tr> <tr><th></th><td>Off-screen plain</td><td>Yes</td><td>Yes</td><td>Yes</td><td>Yes</td></tr> </table><p>?</p><p>* If the driver does not support the requested copy, it will be emulated using lock and copy.</p><p>If the application needs to copy data from a <see cref=\"F:SharpDX.Direct3D9.Pool.Default\"/> render target to a <see cref=\"F:SharpDX.Direct3D9.Pool.SystemMemory\"/> surface, it can use <strong>GetRenderTargetData</strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::UpdateSurface']/*\"/>\t\n            <msdn-id>bb205857</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::UpdateSurface([In] IDirect3DSurface9* pSourceSurface,[In, Optional] const RECT* pSourceRect,[In] IDirect3DSurface9* pDestinationSurface,[In, Optional] const POINT* pDestPoint)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::UpdateSurface</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.UpdateTexture(SharpDX.Direct3D9.BaseTexture,SharpDX.Direct3D9.BaseTexture)\">\n            <summary>\t\n            <p>Updates the dirty portions of a texture.</p>\t\n            </summary>\t\n            <param name=\"sourceTextureRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.BaseTexture\"/></strong> interface, representing the source texture. The source texture must be in system memory (<see cref=\"F:SharpDX.Direct3D9.Pool.SystemMemory\"/>). </p> </dd></param>\t\n            <param name=\"destinationTextureRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.BaseTexture\"/></strong> interface, representing the destination texture. The destination texture must be in the <see cref=\"F:SharpDX.Direct3D9.Pool.Default\"/> memory pool. </p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>. </p></returns>\t\n            <remarks>\t\n            <p>You can dirty a portion of a texture by locking it, or by calling one of the following methods. </p><ul> <li> <strong><see cref=\"M:SharpDX.Direct3D9.CubeTexture.AddDirtyRectangle(SharpDX.Direct3D9.CubeMapFace)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.Direct3D9.Texture.AddDirtyRectangle(System.IntPtr)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.Direct3D9.VolumeTexture.AddDirtyBox(System.IntPtr)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.Direct3D9.Device.UpdateSurface(SharpDX.Direct3D9.Surface,SharpDX.Direct3D9.Surface)\"/></strong> </li> </ul><p><strong><see cref=\"M:SharpDX.Direct3D9.Device.UpdateTexture(SharpDX.Direct3D9.BaseTexture,SharpDX.Direct3D9.BaseTexture)\"/></strong> retrieves the dirty portions of the texture by calculating what has been accumulated since the last update operation.</p><p>For performance reasons, dirty regions are only recorded for level zero of a texture. For sublevels, it is assumed that the corresponding (scaled) rectangle or box is also dirty. Dirty regions are automatically recorded when LockRect or <strong><see cref=\"M:SharpDX.Direct3D9.VolumeTexture.LockBox(System.Int32,SharpDX.Direct3D9.LockedBox@,System.IntPtr,SharpDX.Direct3D9.LockFlags)\"/></strong> is called without <see cref=\"F:SharpDX.Direct3D9.LockFlags.NoDirtyUpdate\"/> or <see cref=\"F:SharpDX.Direct3D9.LockFlags.ReadOnly\"/>. Also, the destination surface of <strong><see cref=\"M:SharpDX.Direct3D9.Device.UpdateSurface(SharpDX.Direct3D9.Surface,SharpDX.Direct3D9.Surface)\"/></strong> is marked dirty.</p><p>This method fails if the textures are of different types, if their bottom-level buffers are of different sizes, or if their matching levels do not match. For example, consider a six-level source texture with the following dimensions. </p><pre><code> 32x16, 16x8, 8x4, 4x2, 2x1, 1x1\t\n            </code></pre><p>This six-level source texture could be the source for the following one-level destination. </p><pre><code> 1x1\t\n            </code></pre><p>For the following two-level destination. </p><pre><code> 2x1, 1x1\t\n            </code></pre><p>Or, for the following three-level destination. </p><pre><code> 4x2, 2x1, 1x1\t\n            </code></pre><p>In addition, this method will fail if the textures are of different formats. If the destination texture has fewer levels than the source, only the matching levels are copied. If the source texture has fewer levels than the destination, the method will fail. </p><p>If the source texture has dirty regions, the copy can be optimized by restricting the copy to only those regions. It is not guaranteed that only those bytes marked dirty will be copied.</p><p>Here are the possibilities for source and destination surface combinations:</p><ul> <li>If pSourceTexture is a non-autogenerated mipmap and pDestinationTexture is an autogenerated mipmap, only the topmost matching level is updated, and the destination sublevels are regenerated. All other source sublevels are ignored.</li> <li>If both pSourceTexture and pDestinationTexture are autogenerated mipmaps, only the topmost matching level is updated. The sublevels from the source are ignored and the destination sublevels are regenerated.</li> <li>If pSourceTexture is an autogenerated mipmap and pDestinationTexture a non-autogenerated mipmap, UpdateTexture will fail.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::UpdateTexture']/*\"/>\t\n            <msdn-id>bb205858</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::UpdateTexture([In] IDirect3DBaseTexture9* pSourceTexture,[In] IDirect3DBaseTexture9* pDestinationTexture)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::UpdateTexture</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.GetRenderTargetData(SharpDX.Direct3D9.Surface,SharpDX.Direct3D9.Surface)\">\n            <summary>\t\n            <p>Copies the render-target data from device memory to system memory.</p>\t\n            </summary>\t\n            <param name=\"renderTargetRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Surface\"/></strong> object, representing a render target. </p> </dd></param>\t\n            <param name=\"destSurfaceRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Surface\"/></strong> object, representing a destination surface. </p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.DriverInternalError\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.DeviceLost\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>The destination surface must be either an off-screen plain surface or a level of a texture (mipmap or cube texture) created with <see cref=\"F:SharpDX.Direct3D9.Pool.SystemMemory\"/>.</p><p>The source surface must be a regular render target or a level of a render-target texture (mipmap or cube texture) created with POOL_DEFAULT.</p><p>This method will fail if:</p><ul> <li>The render target is multisampled.</li> <li>The source render target is a different size than the destination surface.</li> <li>The source render target and destination surface formats do not match.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::GetRenderTargetData']/*\"/>\t\n            <msdn-id>bb174405</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::GetRenderTargetData([In] IDirect3DSurface9* pRenderTarget,[In] IDirect3DSurface9* pDestSurface)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::GetRenderTargetData</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.GetFrontBufferData(System.Int32,SharpDX.Direct3D9.Surface)\">\n            <summary>\t\n            <p>Generates a copy of the device's front buffer and places that copy in a system memory buffer provided by the application. </p>\t\n            </summary>\t\n            <param name=\"iSwapChain\"><dd>  <p>An unsigned integer specifying the swap chain.</p> </dd></param>\t\n            <param name=\"destSurfaceRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Surface\"/></strong> interface that will receive a copy of the contents of the front buffer. The data is returned in successive rows with no intervening space, starting from the vertically highest row on the device's output to the lowest.</p> <p></p> <p>For windowed mode, the size of the destination surface should be the size of the desktop. For full-screen mode, the size of the destination surface should be the screen size. </p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.DriverInternalError\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.DeviceLost\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/></p></returns>\t\n            <remarks>\t\n            <p>The buffer pointed to by pDestSurface will be filled with a representation of the front buffer, converted to the standard 32 bits per pixel format <see cref=\"F:SharpDX.Direct3D9.Format.A8R8G8B8\"/>. </p><p>This method is the only way to capture an antialiased screen shot.</p><p>This function is very slow, by design, and should not be used in any performance-critical path.</p><p>For more information, see Lost Devices and Retrieved Data.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::GetFrontBufferData']/*\"/>\t\n            <msdn-id>bb174388</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::GetFrontBufferData([In] unsigned int iSwapChain,[In] IDirect3DSurface9* pDestSurface)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::GetFrontBufferData</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.StretchRectangle(SharpDX.Direct3D9.Surface,System.Nullable{SharpDX.Rectangle},SharpDX.Direct3D9.Surface,System.Nullable{SharpDX.Rectangle},SharpDX.Direct3D9.TextureFilter)\">\n            <summary>\t\n            <p>Copy the contents of the source rectangle to the destination rectangle. The source rectangle can be stretched and filtered by the copy. This function is often used to change the aspect ratio of a video stream.</p>\t\n            </summary>\t\n            <param name=\"sourceSurfaceRef\"><dd>  <p>Pointer to the source surface. See <strong><see cref=\"T:SharpDX.Direct3D9.Surface\"/></strong>.</p> </dd></param>\t\n            <param name=\"sourceRectRef\"><dd>  <p>Pointer to the source rectangle. A <strong><c>null</c></strong> for this parameter causes the entire source surface to be used.</p> </dd></param>\t\n            <param name=\"destSurfaceRef\"><dd>  <p>Pointer to the destination surface. See <strong><see cref=\"T:SharpDX.Direct3D9.Surface\"/></strong>.</p> </dd></param>\t\n            <param name=\"destRectRef\"><dd>  <p>Pointer to the destination rectangle. A <strong><c>null</c></strong> for this parameter causes the entire destination surface to be used.</p> </dd></param>\t\n            <param name=\"filter\"><dd>  <p>Filter type. Allowable values are <see cref=\"F:SharpDX.Direct3D9.TextureFilter.None\"/>, <see cref=\"F:SharpDX.Direct3D9.TextureFilter.Point\"/>, or <see cref=\"F:SharpDX.Direct3D9.TextureFilter.Linear\"/>. For more information, see <strong><see cref=\"T:SharpDX.Direct3D9.TextureFilter\"/></strong>.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>StretchRect Restrictions</p><ul> <li>Driver support varies. See the section on driver support (below) to see which drivers support which source and destination formats.</li> <li>The source and destination surfaces must be created in the default memory pool.</li> <li>If filtering is specified, you must set the appropriate filter caps (see StretchRectFilterCaps in <strong><see cref=\"T:SharpDX.Direct3D9.Capabilities\"/></strong>).</li> <li>Stretching is not supported between source and destination rectangles on the same surface.</li> <li>Stretching is not supported if the destination surface is an off-screen plain surface but the source is not.</li> <li>You many not stretch between source and destination rectangles if either surface is in a compressed format (see Using Compressed Textures (Direct3D 9)).</li> <li>Stretching supports color-space conversion from YUV to high-precision RGBA only. Since color conversion support is not supported by software emulation, use <strong><see cref=\"M:SharpDX.Direct3D9.Direct3D.CheckDeviceFormatConversion_(System.Int32,SharpDX.Direct3D9.DeviceType,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Format)\"/></strong> to test the hardware for color conversion support.</li> <li>If the source or destination surface is a texture surface (or a cube texture surface), you must use a Direct3D 9 driver that supports <see cref=\"F:SharpDX.Direct3D9.DeviceCaps2.CanStretchRectFromTextures\"/> (see <see cref=\"T:SharpDX.Direct3D9.DeviceCaps2\"/>).</li> </ul><p>Additional Restrictions for Depth and Stencil Surfaces</p><ul> <li>The source and destination surfaces must be plain depth stencil surfaces (not textures) (see <strong><see cref=\"M:SharpDX.Direct3D9.Device.CreateDepthStencilSurface(System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.MultisampleType,System.Int32,SharpDX.Bool,System.IntPtr)\"/></strong>).</li> <li>Neither of the surfaces can be discardable.</li> <li>The entire surface must be copied (that is: sub-rectangle copies are not allowed).</li> <li>Format conversion, stretching, and shrinking are not supported.</li> <li>StretchRect cannot be called inside of a BeginScene/EndScene pair.</li> </ul><p>Using StretchRect to downsample a Multisample Rendertarget</p><p>You can use StretchRect to copy from one rendertarget to another. If the source rendertarget is multisampled, this results in downsampling the source rendertarget. For instance you could:</p><ul> <li>Create a multisampled rendertarget.</li> <li>Create a second rendertarget of the same size, that is not multisampled.</li> <li>Copy (using StretchRect the multisample rendertarget to the second rendertarget.</li> </ul><p>Note that use of the extra surface involved in using StretchRect to downsample a Multisample Rendertarget will result in a performance hit.</p><p>Driver Support</p><p>There are many restrictions as to which surface combinations are valid for StretchRect. Factors include whether the driver is a Direct3D 9 driver or older, and whether the operation will result in stretching/shrinking.  Since applications are not expected to recognize if the driver is a Direct3D 9 driver or not, the runtime will automatically set a new cap, <see cref=\"F:SharpDX.Direct3D9.DeviceCaps2.CanStretchRectFromTextures\"/> cap (see <see cref=\"T:SharpDX.Direct3D9.DeviceCaps2\"/>), for Direct3D 9-level drivers and above.</p><table> <tr><th>DirectX 8 Driver (no stretching)</th><th></th><th></th><th></th><th></th><th></th></tr> <tr><th></th><th></th><th>Dest formats</th><th></th><th></th><th></th></tr> <tr><th></th><th></th><th>Texture</th><th>RT texture</th><th>RT</th><th>Off-screen plain</th></tr> <tr><th>Src formats</th><th>Texture</th><td>No</td><td>No</td><td>No</td><td>No</td></tr> <tr><th></th><th>RT texture</th><td>No</td><td>Yes</td><td>Yes</td><td>No</td></tr> <tr><th></th><th>RT</th><td>No</td><td>Yes</td><td>Yes</td><td>No</td></tr> <tr><th></th><th>Off-screen plain</th><td>Yes</td><td>Yes</td><td>Yes</td><td>Yes</td></tr> </table><p>?</p><table> <tr><th>DirectX 8 Driver (stretching)</th><th></th><th></th><th></th><th></th><th></th></tr> <tr><th></th><th></th><th>Dest formats</th><th></th><th></th><th></th></tr> <tr><th></th><th></th><th>Texture</th><th>RT texture</th><th>RT</th><th>Off-screen plain</th></tr> <tr><th>Src formats</th><th>Texture</th><td>No</td><td>No</td><td>No</td><td>No</td></tr> <tr><th></th><th>RT texture</th><td>No</td><td>No</td><td>No</td><td>No</td></tr> <tr><th></th><th>RT</th><td>No</td><td>Yes</td><td>Yes</td><td>No</td></tr> <tr><th></th><th>Off-screen plain</th><td>No</td><td>Yes</td><td>Yes</td><td>No</td></tr> </table><p>?</p><table> <tr><th>Direct3D 9 Driver (no stretching)</th><th></th><th></th><th></th><th></th><th></th></tr> <tr><th></th><th></th><th>Dest formats</th><th></th><th></th><th></th></tr> <tr><th></th><th></th><th>Texture</th><th>RT texture</th><th>RT</th><th>Off-screen plain</th></tr> <tr><th>Src formats</th><th>Texture</th><td>No</td><td>Yes</td><td>Yes</td><td>No</td></tr> <tr><th></th><th>RT texture</th><td>No</td><td>Yes</td><td>Yes</td><td>No</td></tr> <tr><th></th><th>RT</th><td>No</td><td>Yes</td><td>Yes</td><td>No</td></tr> <tr><th></th><th>Off-screen plain</th><td>No</td><td>Yes</td><td>Yes</td><td>Yes</td></tr> </table><p>?</p><table> <tr><th>Direct3D 9 Driver (stretching)</th><th></th><th></th><th></th><th></th><th></th></tr> <tr><th></th><th></th><th>Dest formats</th><th></th><th></th><th></th></tr> <tr><th></th><th></th><th>Texture</th><th>RT texture</th><th>RT</th><th>Off-screen plain</th></tr> <tr><th>Src formats</th><th>Texture</th><td>No</td><td>Yes</td><td>Yes</td><td>No</td></tr> <tr><th></th><th>RT texture</th><td>No</td><td>Yes</td><td>Yes</td><td>No</td></tr> <tr><th></th><th>RT</th><td>No</td><td>Yes</td><td>Yes</td><td>No</td></tr> <tr><th></th><th>Off-screen plain</th><td>No</td><td>Yes</td><td>Yes</td><td>No</td></tr> </table><p>?</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::StretchRect']/*\"/>\t\n            <msdn-id>bb174471</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::StretchRect([In] IDirect3DSurface9* pSourceSurface,[In, Optional] const RECT* pSourceRect,[In] IDirect3DSurface9* pDestSurface,[In, Optional] const RECT* pDestRect,[In] D3DTEXTUREFILTERTYPE Filter)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::StretchRect</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.ColorFill(SharpDX.Direct3D9.Surface,System.Nullable{SharpDX.Rectangle},SharpDX.ColorBGRA)\">\n            <summary>\t\n            <p>Allows an application to fill a rectangular area of a <see cref=\"F:SharpDX.Direct3D9.Pool.Default\"/> surface with a specified color.</p>\t\n            </summary>\t\n            <param name=\"surfaceRef\"><dd>  <p>Pointer to the surface to be filled.</p> </dd></param>\t\n            <param name=\"rectRef\"><dd>  <p>Pointer to the source rectangle. Using <strong><c>null</c></strong> means that the entire surface will be filled.</p> </dd></param>\t\n            <param name=\"color\"><dd>  <p>Color used for filling.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>This method can only be applied to a render target, a render-target texture surface, or an off-screen plain surface with a pool type of <see cref=\"F:SharpDX.Direct3D9.Pool.Default\"/>.</p><p><strong><see cref=\"M:SharpDX.Direct3D9.Device.ColorFill(SharpDX.Direct3D9.Surface,SharpDX.ColorBGRA)\"/></strong> will work with all formats. However, when using a reference or software device, the only formats supported are <see cref=\"F:SharpDX.Direct3D9.Format.X1R5G5B5\"/>, <see cref=\"F:SharpDX.Direct3D9.Format.A1R5G5B5\"/>, <see cref=\"F:SharpDX.Direct3D9.Format.R5G6B5\"/>, <see cref=\"F:SharpDX.Direct3D9.Format.X8R8G8B8\"/>, <see cref=\"F:SharpDX.Direct3D9.Format.A8R8G8B8\"/>, <see cref=\"F:SharpDX.Direct3D9.Format.Yuy2\"/>, <see cref=\"F:SharpDX.Direct3D9.Format.G8R8_G8B8\"/>, <see cref=\"F:SharpDX.Direct3D9.Format.Uyvy\"/>, <see cref=\"F:SharpDX.Direct3D9.Format.R8G8_B8G8\"/>, <see cref=\"F:SharpDX.Direct3D9.Format.R16F\"/>, <see cref=\"F:SharpDX.Direct3D9.Format.G16R16F\"/>, <see cref=\"F:SharpDX.Direct3D9.Format.A16B16G16R16F\"/>, <see cref=\"F:SharpDX.Direct3D9.Format.R32F\"/>, <see cref=\"F:SharpDX.Direct3D9.Format.G32R32F\"/>, and <see cref=\"F:SharpDX.Direct3D9.Format.A32B32G32R32F\"/>.</p><p>When using a DirectX 7 or DirectX 8.x driver, the only YUV formats supported are <see cref=\"F:SharpDX.Direct3D9.Format.Uyvy\"/> and <see cref=\"F:SharpDX.Direct3D9.Format.Yuy2\"/>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::ColorFill']/*\"/>\t\n            <msdn-id>bb174353</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::ColorFill([In] IDirect3DSurface9* pSurface,[In, Optional] const RECT* pRect,[In] D3DCOLOR color)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::ColorFill</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.CreateOffscreenPlainSurface(System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,System.IntPtr)\">\n            <summary>\t\n            <p>Create an off-screen surface.</p>\t\n            </summary>\t\n            <param name=\"width\"><dd>  <p>Width of the surface.</p> </dd></param>\t\n            <param name=\"height\"><dd>  <p>Height of the surface.</p> </dd></param>\t\n            <param name=\"format\"><dd>  <p>Format of the surface. See <see cref=\"T:SharpDX.Direct3D9.Format\"/>. </p> </dd></param>\t\n            <param name=\"pool\"><dd>  <p>Surface pool type. See <strong><see cref=\"T:SharpDX.Direct3D9.Pool\"/></strong>.</p> </dd></param>\t\n            <param name=\"sharedHandleRef\"><dd>  <p>Reserved. Set this parameter to <strong><c>null</c></strong>. This parameter can be used in Direct3D 9 for Windows Vista to share resources.</p> </dd></param>\t\n            <returns><dd>  <p>Pointer to the <strong><see cref=\"T:SharpDX.Direct3D9.Surface\"/></strong> interface created.</p> </dd></returns>\t\n            <remarks>\t\n            <p><see cref=\"F:SharpDX.Direct3D9.Pool.Scratch\"/> will return a surface that has identical characteristics to a surface created by the DirectX 8.x method CreateImageSurface.</p><p><see cref=\"F:SharpDX.Direct3D9.Pool.Default\"/> is the appropriate pool for use with the <strong><see cref=\"M:SharpDX.Direct3D9.Device.StretchRectangle(SharpDX.Direct3D9.Surface,SharpDX.Direct3D9.Surface,SharpDX.Direct3D9.TextureFilter)\"/></strong> and <strong><see cref=\"M:SharpDX.Direct3D9.Device.ColorFill(SharpDX.Direct3D9.Surface,SharpDX.ColorBGRA)\"/></strong>.</p><p><see cref=\"F:SharpDX.Direct3D9.Pool.Managed\"/> is not allowed when creating an offscreen plain surface. For more information about memory pools, see <strong><see cref=\"T:SharpDX.Direct3D9.Pool\"/></strong>.</p><p>Off-screen plain surfaces are always lockable, regardless of their pool types.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::CreateOffscreenPlainSurface']/*\"/>\t\n            <msdn-id>bb174358</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::CreateOffscreenPlainSurface([In] unsigned int Width,[In] unsigned int Height,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[Out] IDirect3DSurface9** ppSurface,[In] void** pSharedHandle)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::CreateOffscreenPlainSurface</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.SetRenderTarget(System.Int32,SharpDX.Direct3D9.Surface)\">\n            <summary>\t\n            <p>Sets a new color buffer for the device.</p>\t\n            </summary>\t\n            <param name=\"renderTargetIndex\"><dd>  <p>Index of the render target. See Remarks.</p> </dd></param>\t\n            <param name=\"renderTargetRef\"><dd>  <p>Pointer to a new color buffer. If <strong><c>null</c></strong>, the color buffer for the corresponding RenderTargetIndex is disabled. Devices always must be associated with a color buffer. The new render-target surface must have at least <see cref=\"F:SharpDX.Direct3D9.Usage.RenderTarget\"/> specified.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. This method will return <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/> if either:</p><ul> <li>pRenderTarget = <strong><c>null</c></strong> and RenderTargetIndex = 0</li> <li>pRenderTarget is != <strong><c>null</c></strong> and the render target is invalid.</li> </ul></returns>\t\n            <remarks>\t\n            <p>The device can support multiple render targets. The number of render targets supported by a device is contained in the NumSimultaneousRTs member of <strong><see cref=\"T:SharpDX.Direct3D9.Capabilities\"/></strong>. See Multiple Render Targets (Direct3D 9).</p><p>Setting a new render target will cause the viewport (see Viewports and Clipping (Direct3D 9)) to be set to the full size of the new render target.</p><p>Some hardware tests the compatibility of the depth stencil buffer with the color buffer. If this is done, it is only done in a debug build.</p><p>Restrictions for using this method include the following:</p><ul> <li>The multisample type must be the same for the render target and the depth stencil surface.</li> <li>The formats must be compatible for the render target and the depth stencil surface. See <strong><see cref=\"M:SharpDX.Direct3D9.Direct3D.CheckDepthStencilMatch_(System.Int32,SharpDX.Direct3D9.DeviceType,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Format)\"/></strong>.</li> <li>The size of the depth stencil surface must be greater than or equal to the size of the render target.</li> </ul><p>These restrictions are validated only when using the debug runtime when any of the <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> Draw methods are called.</p><p>Cube textures differ from other surfaces in that they are collections of surfaces. To call <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetRenderTarget(System.Int32,SharpDX.Direct3D9.Surface)\"/></strong> with a cube texture, you must select an individual face using <strong><see cref=\"M:SharpDX.Direct3D9.CubeTexture.GetCubeMapSurface(SharpDX.Direct3D9.CubeMapFace,System.Int32)\"/></strong> and pass the resulting surface to <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetRenderTarget(System.Int32,SharpDX.Direct3D9.Surface)\"/></strong>. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::SetRenderTarget']/*\"/>\t\n            <msdn-id>bb174455</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::SetRenderTarget([In] unsigned int RenderTargetIndex,[In] IDirect3DSurface9* pRenderTarget)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::SetRenderTarget</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.GetRenderTarget(System.Int32)\">\n            <summary>\t\n            <p>Retrieves a render-target surface.</p>\t\n            </summary>\t\n            <param name=\"renderTargetIndex\"><dd>  <p>Index of the render target. See Remarks.</p> </dd></param>\t\n            <returns><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D9.Surface\"/></strong> interface, representing the returned render-target surface for this device. </p> </dd></returns>\t\n            <remarks>\t\n            <p>Typically, methods that return state will not work on a device that is created using <see cref=\"F:SharpDX.Direct3D9.CreateFlags.PureDevice\"/>. This method however, will work even on a pure device because it returns an interface.</p><p>The device can now support multiple render targets. The number of render targets supported by a device is contained in the NumSimultaneousRTs member of <strong><see cref=\"T:SharpDX.Direct3D9.Capabilities\"/></strong>. See Multiple Render Targets (Direct3D 9).</p><p>Calling this method will increase the internal reference count on the <strong><see cref=\"T:SharpDX.Direct3D9.Surface\"/></strong> interface. Failure to call <strong>IUnknown::Release</strong> when finished using the <strong><see cref=\"T:SharpDX.Direct3D9.Surface\"/></strong> interface results in a memory leak.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::GetRenderTarget']/*\"/>\t\n            <msdn-id>bb174404</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::GetRenderTarget([In] unsigned int RenderTargetIndex,[Out] IDirect3DSurface9** ppRenderTarget)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::GetRenderTarget</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.SetDepthStencilSurface(SharpDX.Direct3D9.Surface)\">\n            <summary>\t\n            <p>Sets the depth stencil surface.</p>\t\n            </summary>\t\n            <param name=\"newZStencilRef\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D9.Surface\"/></strong> interface representing the depth stencil surface. Setting this to <strong><c>null</c></strong> disables the depth stencil operation.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If pZStencilSurface is other than <strong><c>null</c></strong>, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/> when the stencil surface is invalid. </p></returns>\t\n            <remarks>\t\n            <p>Restrictions for using this method include the following:</p><ul> <li>The multisample type must be the same for the render target and the depth stencil surface.</li> <li>The formats must be compatible for the render target and the depth stencil surface. See <strong><see cref=\"M:SharpDX.Direct3D9.Direct3D.CheckDepthStencilMatch_(System.Int32,SharpDX.Direct3D9.DeviceType,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Format)\"/></strong>.</li> <li>The size of the depth stencil surface must be greater than or equal to the size of the render target.</li> </ul><p>These restrictions are validated only when using the debug runtime when any of the <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> Draw methods are called.</p><p>Cube textures differ from other surfaces in that they are collections of surfaces. To call <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetDepthStencilSurface(SharpDX.Direct3D9.Surface)\"/></strong> with a cube texture, you must select an individual face using <strong><see cref=\"M:SharpDX.Direct3D9.CubeTexture.GetCubeMapSurface(SharpDX.Direct3D9.CubeMapFace,System.Int32)\"/></strong> and pass the resulting surface to <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetDepthStencilSurface(SharpDX.Direct3D9.Surface)\"/></strong>. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::SetDepthStencilSurface']/*\"/>\t\n            <msdn-id>bb174431</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::SetDepthStencilSurface([In] IDirect3DSurface9* pNewZStencil)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::SetDepthStencilSurface</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.GetDepthStencilSurface(SharpDX.Direct3D9.Surface@)\">\n            <summary>\t\n            <p>Gets the depth-stencil surface owned by the Direct3DDevice object.</p>\t\n            </summary>\t\n            <param name=\"zStencilSurfaceOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D9.Surface\"/></strong> interface, representing the returned depth-stencil surface. </p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>.If the device doesn't have a depth stencil buffer associated with it, the return value will be <see cref=\"F:SharpDX.Direct3D9.ResultCode.NotFound\"/>. Otherwise, if the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>Calling this method will increase the internal reference count on the <strong><see cref=\"T:SharpDX.Direct3D9.Surface\"/></strong> interface. Failure to call <strong>IUnknown::Release</strong> when finished using this <strong><see cref=\"T:SharpDX.Direct3D9.Surface\"/></strong> interface results in a memory leak.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::GetDepthStencilSurface']/*\"/>\t\n            <msdn-id>bb174384</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::GetDepthStencilSurface([Out] IDirect3DSurface9** ppZStencilSurface)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::GetDepthStencilSurface</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.BeginScene\">\n            <summary>\t\n            <p>Begins a scene. </p>\t\n            </summary>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. The method will fail with <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/> if <strong><see cref=\"M:SharpDX.Direct3D9.Device.BeginScene\"/></strong> is called  while already in a <strong><see cref=\"M:SharpDX.Direct3D9.Device.BeginScene\"/></strong>/<strong><see cref=\"M:SharpDX.Direct3D9.Device.EndScene\"/></strong> pair. This happens only  when <strong><see cref=\"M:SharpDX.Direct3D9.Device.BeginScene\"/></strong> is called twice without first calling <strong><see cref=\"M:SharpDX.Direct3D9.Device.EndScene\"/></strong>.</p></returns>\t\n            <remarks>\t\n            <p>Applications must call <strong><see cref=\"M:SharpDX.Direct3D9.Device.BeginScene\"/></strong> before performing any rendering and must call <strong><see cref=\"M:SharpDX.Direct3D9.Device.EndScene\"/></strong> when rendering is complete and before calling <strong><see cref=\"M:SharpDX.Direct3D9.Device.BeginScene\"/></strong> again.</p><p>If <strong><see cref=\"M:SharpDX.Direct3D9.Device.BeginScene\"/></strong> fails, the device was unable to begin the scene, and there is no need to  call <strong><see cref=\"M:SharpDX.Direct3D9.Device.EndScene\"/></strong>. In fact, calls to <strong><see cref=\"M:SharpDX.Direct3D9.Device.EndScene\"/></strong> will fail if the  previous <strong><see cref=\"M:SharpDX.Direct3D9.Device.BeginScene\"/></strong> failed. This applies to any application that creates multiple swap chains.</p><p>There should be one <strong><see cref=\"M:SharpDX.Direct3D9.Device.BeginScene\"/></strong>/<strong><see cref=\"M:SharpDX.Direct3D9.Device.EndScene\"/></strong> pair between any successive calls to  present (either <strong><see cref=\"M:SharpDX.Direct3D9.Device.Present\"/></strong> or <strong><see cref=\"M:SharpDX.Direct3D9.SwapChain.Present(System.IntPtr,System.IntPtr,System.IntPtr,System.IntPtr,System.Int32)\"/></strong>). <strong><see cref=\"M:SharpDX.Direct3D9.Device.BeginScene\"/></strong> should  be called once before any rendering is performed, and <strong><see cref=\"M:SharpDX.Direct3D9.Device.EndScene\"/></strong> should be called once after all rendering for a frame has been submitted to the runtime. Multiple non-nested <strong><see cref=\"M:SharpDX.Direct3D9.Device.BeginScene\"/></strong>/<strong><see cref=\"M:SharpDX.Direct3D9.Device.EndScene\"/></strong> pairs between calls to present are legal, but having more than one pair may incur a performance hit. To enable maximal parallelism between the CPU and the graphics accelerator, it is advantageous to  call <strong><see cref=\"M:SharpDX.Direct3D9.Device.EndScene\"/></strong> as far ahead of calling present as possible.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::BeginScene']/*\"/>\t\n            <msdn-id>bb174350</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::BeginScene()</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::BeginScene</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.EndScene\">\n            <summary>\t\n            <p>Ends a scene that was begun by calling <strong><see cref=\"M:SharpDX.Direct3D9.Device.BeginScene\"/></strong>.</p>\t\n            </summary>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. The method will fail with <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/> if <strong><see cref=\"M:SharpDX.Direct3D9.Device.BeginScene\"/></strong> is called while already in a <strong><see cref=\"M:SharpDX.Direct3D9.Device.BeginScene\"/></strong>/<strong><see cref=\"M:SharpDX.Direct3D9.Device.EndScene\"/></strong> pair. This happens only when <strong><see cref=\"M:SharpDX.Direct3D9.Device.BeginScene\"/></strong> is called twice without first calling <strong><see cref=\"M:SharpDX.Direct3D9.Device.EndScene\"/></strong>.</p></returns>\t\n            <remarks>\t\n            <p>When this method succeeds, the scene has been queued up for rendering by the driver. This is not a synchronous method, so the scene is not guaranteed to have completed rendering when this method returns.</p><p>Applications must call <strong><see cref=\"M:SharpDX.Direct3D9.Device.BeginScene\"/></strong> before performing any rendering and must call <strong><see cref=\"M:SharpDX.Direct3D9.Device.EndScene\"/></strong> when rendering is complete and before calling <strong><see cref=\"M:SharpDX.Direct3D9.Device.BeginScene\"/></strong> again.</p><p>If <strong><see cref=\"M:SharpDX.Direct3D9.Device.BeginScene\"/></strong> fails, the device was unable to begin the scene, and there is no need to call <strong><see cref=\"M:SharpDX.Direct3D9.Device.EndScene\"/></strong>. In fact, calls to  <strong><see cref=\"M:SharpDX.Direct3D9.Device.EndScene\"/></strong> will fail if the previous <strong><see cref=\"M:SharpDX.Direct3D9.Device.BeginScene\"/></strong> failed. This applies to any application that creates multiple swap chains.</p><p>There should be at most one <strong><see cref=\"M:SharpDX.Direct3D9.Device.BeginScene\"/></strong>/<strong><see cref=\"M:SharpDX.Direct3D9.Device.EndScene\"/></strong> pair between any successive calls to present (either <strong><see cref=\"M:SharpDX.Direct3D9.Device.Present\"/></strong> or <strong><see cref=\"M:SharpDX.Direct3D9.SwapChain.Present(System.IntPtr,System.IntPtr,System.IntPtr,System.IntPtr,System.Int32)\"/></strong>). <strong><see cref=\"M:SharpDX.Direct3D9.Device.BeginScene\"/></strong> should be called once before any rendering is performed, and <strong><see cref=\"M:SharpDX.Direct3D9.Device.EndScene\"/></strong> should be called once after all rendering for a frame has been submitted to the runtime. To enable maximal parallelism between the CPU and the graphics accelerator, it is advantageous to call <strong><see cref=\"M:SharpDX.Direct3D9.Device.EndScene\"/></strong> as far ahead of calling present as possible.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::EndScene']/*\"/>\t\n            <msdn-id>bb174375</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::EndScene()</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::EndScene</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.Clear_(System.Int32,SharpDX.Rectangle[],SharpDX.Direct3D9.ClearFlags,SharpDX.ColorBGRA,System.Single,System.Int32)\">\n            <summary>\t\n            <p>Clears one or more surfaces such as a render target, multiple render targets, a stencil buffer, and a depth buffer.</p>\t\n            </summary>\t\n            <param name=\"count\">No documentation.</param>\t\n            <param name=\"rectsRef\">No documentation.</param>\t\n            <param name=\"flags\">No documentation.</param>\t\n            <param name=\"color\">No documentation.</param>\t\n            <param name=\"z\">No documentation.</param>\t\n            <param name=\"stencil\">No documentation.</param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>Use this method to clear a surface including: a render target, all render targets in an MRT, a stencil buffer, or a depth buffer. Flags determines how many surfaces are cleared. Use pRects to clear a subset of a surface defined by an array of rectangles.</p><p><strong><see cref=\"M:SharpDX.Direct3D9.Device.Clear_(System.Int32,SharpDX.Rectangle[],SharpDX.Direct3D9.ClearFlags,SharpDX.ColorBGRA,System.Single,System.Int32)\"/></strong> will fail if you:</p><ul> <li>Try to clear either the depth buffer or the stencil buffer of a render target that does not have an attached depth buffer.</li> <li>Try to clear the stencil buffer when the depth buffer does not contain stencil data.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::Clear']/*\"/>\t\n            <msdn-id>bb174352</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::Clear([In] unsigned int Count,[In, Buffer, Optional] const D3DRECT* pRects,[In] D3DCLEAR Flags,[In] D3DCOLOR Color,[In] float Z,[In] unsigned int Stencil)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::Clear</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.SetTransform_(System.Int32,SharpDX.Matrix@)\">\n            <summary>\t\n            <p>Sets a single device transformation-related state.</p>\t\n            </summary>\t\n            <param name=\"state\"><dd>  <p>Device-state variable that is being modified. This parameter can be any member of the <strong><see cref=\"T:SharpDX.Direct3D9.TransformState\"/></strong> enumerated type, or the <strong>D3DTS_WORLDMATRIX</strong> macro. </p> </dd></param>\t\n            <param name=\"matrixRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Matrix\"/></strong> structure that modifies the current transformation. </p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/> is returned if one of the arguments is invalid. </p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::SetTransform']/*\"/>\t\n            <msdn-id>bb174463</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::SetTransform([In] int State,[In] const D3DMATRIX* pMatrix)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::SetTransform</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.GetTransform(SharpDX.Direct3D9.TransformState)\">\n            <summary>\t\n            <p>Retrieves a matrix describing a transformation state.</p>\t\n            </summary>\t\n            <param name=\"state\"><dd>  <p>Device state variable that is being modified. This parameter can be any member of the <strong><see cref=\"T:SharpDX.Direct3D9.TransformState\"/></strong> enumerated type, or the <strong>D3DTS_WORLDMATRIX</strong> macro. </p> </dd></param>\t\n            <returns><dd>  <p>Pointer to a  <strong><see cref=\"T:SharpDX.Matrix\"/></strong> structure, describing the returned transformation state. </p> </dd></returns>\t\n            <remarks>\t\n            <p>This method will not return device state for a device that is created using <see cref=\"F:SharpDX.Direct3D9.CreateFlags.PureDevice\"/>. If you want to use this method, you must create your device with any of the other flag values in <see cref=\"T:SharpDX.Direct3D9.CreateFlags\"/>. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::GetTransform']/*\"/>\t\n            <msdn-id>bb174414</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::GetTransform([In] D3DTRANSFORMSTATETYPE State,[Out] D3DMATRIX* pMatrix)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::GetTransform</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.MultiplyTransform(SharpDX.Direct3D9.TransformState,SharpDX.Matrix@)\">\n            <summary>\t\n            <p>Multiplies a device's world, view, or projection matrices by a specified matrix. </p>\t\n            </summary>\t\n            <param name=\"arg0\"><dd>  <p>Member of the <strong><see cref=\"T:SharpDX.Direct3D9.TransformState\"/></strong> enumerated type, or the <strong>D3DTS_WORLDMATRIX</strong> macro that identifies which device matrix is to be modified. The most common setting, <strong>D3DTS_WORLDMATRIX</strong>(0), modifies the world matrix, but you can specify that the method modify the view or projection matrices, if needed. </p> </dd></param>\t\n            <param name=\"arg1\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Matrix\"/></strong> structure that modifies the current transformation. </p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/> if one of the arguments is invalid. </p></returns>\t\n            <remarks>\t\n            <p>The multiplication order is pMatrix times State.</p><p>An application might use the <strong><see cref=\"M:SharpDX.Direct3D9.Device.MultiplyTransform(SharpDX.Direct3D9.TransformState,SharpDX.Matrix@)\"/></strong> method to work with hierarchies of transformations. For example, the geometry and transformations describing an arm might be arranged in the following hierarchy.</p><pre><code> shoulder_transformation upper_arm geometry elbow transformation lower_arm geometry wrist transformation hand geometry\t\n            </code></pre><p>An application might use the following series of calls to render this hierarchy. Not all the parameters are shown in this pseudocode. </p><pre><code> <see cref=\"M:SharpDX.Direct3D9.Device.SetTransform_(System.Int32,SharpDX.Matrix@)\"/>(D3DTS_WORLDMATRIX(0),  shoulder_transform)\t\n            <see cref=\"M:SharpDX.Direct3D9.Device.DrawPrimitives(SharpDX.Direct3D9.PrimitiveType,System.Int32,System.Int32)\"/>(upper_arm)\t\n            <see cref=\"M:SharpDX.Direct3D9.Device.MultiplyTransform(SharpDX.Direct3D9.TransformState,SharpDX.Matrix@)\"/>(D3DTS_WORLDMATRIX(0),  elbow_transform)\t\n            <see cref=\"M:SharpDX.Direct3D9.Device.DrawPrimitives(SharpDX.Direct3D9.PrimitiveType,System.Int32,System.Int32)\"/>(lower_arm)\t\n            <see cref=\"M:SharpDX.Direct3D9.Device.MultiplyTransform(SharpDX.Direct3D9.TransformState,SharpDX.Matrix@)\"/>(D3DTS_WORLDMATRIX(0),  wrist_transform)\t\n            <see cref=\"M:SharpDX.Direct3D9.Device.DrawPrimitives(SharpDX.Direct3D9.PrimitiveType,System.Int32,System.Int32)\"/>(hand)</code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::MultiplyTransform']/*\"/>\t\n            <msdn-id>bb174422</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::MultiplyTransform([In] D3DTRANSFORMSTATETYPE arg0,[In] const D3DMATRIX* arg1)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::MultiplyTransform</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.SetViewport(SharpDX.Viewport)\">\n            <summary>\t\n            <p>Sets the viewport parameters for the device.</p>\t\n            </summary>\t\n            <param name=\"viewportRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Viewport\"/></strong> structure, specifying the viewport parameters to set. </p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, it will return <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>. This will happen if pViewport is invalid, or if pViewport describes a region that cannot exist within the render target surface.</p></returns>\t\n            <remarks>\t\n            <p>Direct3D sets the following default values for the viewport.</p><p></p><pre><code> <see cref=\"T:SharpDX.Viewport\"/> vp;\t\n            vp.X      = 0;\t\n            vp.Y      = 0;\t\n            vp.Width  = RenderTarget.Width;\t\n            vp.Height = RenderTarget.Height;\t\n            vp.MinZ   = 0.0f;\t\n            vp.MaxZ   = 1.0f;\t\n            </code></pre><p><strong><see cref=\"M:SharpDX.Direct3D9.Device.SetViewport(SharpDX.Viewport)\"/></strong> can be used to draw on part of the screen. Make sure to call it before any geometry is drawn so the viewport settings will take effect.</p><p>To draw multiple views within a scene, repeat the <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetViewport(SharpDX.Viewport)\"/></strong> and draw geometry sequence for each view.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::SetViewport']/*\"/>\t\n            <msdn-id>bb174469</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::SetViewport([In] const D3DVIEWPORT9* pViewport)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::SetViewport</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.GetViewport(SharpDX.Viewport@)\">\n            <summary>\t\n            <p>Retrieves the viewport parameters currently set for the device.</p>\t\n            </summary>\t\n            <param name=\"viewportRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Viewport\"/></strong> structure, representing the returned viewport parameters. </p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/> is returned if the pViewport parameter is invalid. </p></returns>\t\n            <remarks>\t\n            <p>Typically, methods that return state will not work on a device that is created using <see cref=\"F:SharpDX.Direct3D9.CreateFlags.PureDevice\"/>. This method however, will work even on a pure device.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::GetViewport']/*\"/>\t\n            <msdn-id>bb174420</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::GetViewport([Out] D3DVIEWPORT9* pViewport)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::GetViewport</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.SetMaterial(SharpDX.Direct3D9.Material@)\">\n            <summary>\t\n            <p>Sets the material properties for the device.</p>\t\n            </summary>\t\n            <param name=\"materialRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.Material\"/></strong> structure, describing the material properties to set. </p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/> if the pMaterial parameter is invalid. </p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::SetMaterial']/*\"/>\t\n            <msdn-id>bb174437</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::SetMaterial([In] const D3DMATERIAL9* pMaterial)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::SetMaterial</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.GetMaterial(SharpDX.Direct3D9.Material@)\">\n            <summary>\t\n            <p>Retrieves the current material properties for the device.</p>\t\n            </summary>\t\n            <param name=\"materialRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.Material\"/></strong> structure to fill with the currently set material properties. </p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/> if the pMaterial parameter is invalid. </p></returns>\t\n            <remarks>\t\n            <p>This method will not return device state for a device that is created using <see cref=\"F:SharpDX.Direct3D9.CreateFlags.PureDevice\"/>. If you want to use this method, you must create your device with any of the other values in <see cref=\"T:SharpDX.Direct3D9.CreateFlags\"/>. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::GetMaterial']/*\"/>\t\n            <msdn-id>bb174394</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::GetMaterial([Out] D3DMATERIAL9* pMaterial)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::GetMaterial</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.SetLight(System.Int32,SharpDX.Direct3D9.Light@)\">\n            <summary>\t\n            <p>Assigns a set of lighting properties for this device.</p>\t\n            </summary>\t\n            <param name=\"index\"><dd>  <p>Zero-based index of the set of lighting properties to set. If a set of lighting properties exists at this index, it is overwritten by the new properties specified in pLight. </p> </dd></param>\t\n            <param name=\"arg1\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.Light\"/></strong> structure, containing the lighting parameters to set. </p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>. </p></returns>\t\n            <remarks>\t\n            <p>Set light properties by preparing a <strong><see cref=\"T:SharpDX.Direct3D9.Light\"/></strong> structure and then calling the <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetLight(System.Int32,SharpDX.Direct3D9.Light@)\"/></strong> method. The  <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetLight(System.Int32,SharpDX.Direct3D9.Light@)\"/></strong> method accepts the index at which the device should place the set of light properties to its internal list of light properties, and the address of a prepared <strong><see cref=\"T:SharpDX.Direct3D9.Light\"/></strong> structure that defines those properties. You can call <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetLight(System.Int32,SharpDX.Direct3D9.Light@)\"/></strong> with new information as needed to update the light's illumination properties.</p><p>The system allocates memory to accommodate a set of lighting properties each time you call the <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetLight(System.Int32,SharpDX.Direct3D9.Light@)\"/></strong> method with an index that has never been assigned properties. Applications can set a number of lights, with only a subset of the assigned lights enabled at a time. Check the MaxActiveLights member of the <strong><see cref=\"T:SharpDX.Direct3D9.Capabilities\"/></strong> structure when you retrieve device capabilities to determine the maximum number of active lights supported by that device. If you no longer need a light, you can disable it or overwrite it with a new set of light properties.</p><p>The following example prepares and sets properties for a white point-light whose emitted light will not attenuate over distance.</p><pre><code> // Assume d3dDevice is a valid reference to an <see cref=\"T:SharpDX.Direct3D9.Device\"/> interface.\t\n            <see cref=\"T:SharpDX.Direct3D9.Light\"/> d3dLight;\t\n            <see cref=\"T:SharpDX.Result\"/>   hr; // Initialize the structure.\t\n            ZeroMemory(&amp;d3dLight, sizeof(d3dLight)); // Set up a white point light.\t\n            d3dLight.Type = <see cref=\"F:SharpDX.Direct3D9.LightType.Point\"/>;\t\n            d3dLight.Diffuse.r  = 1.0f;\t\n            d3dLight.Diffuse.g  = 1.0f;\t\n            d3dLight.Diffuse.b  = 1.0f;\t\n            d3dLight.Ambient.r  = 1.0f;\t\n            d3dLight.Ambient.g  = 1.0f;\t\n            d3dLight.Ambient.b  = 1.0f;\t\n            d3dLight.Specular.r = 1.0f;\t\n            d3dLight.Specular.g = 1.0f;\t\n            d3dLight.Specular.b = 1.0f; // Position it high in the scene and behind the user.\t\n            // Remember, these coordinates are in world space, so\t\n            // the user could be anywhere in world space, too. \t\n            // For the purposes of this example, assume the user\t\n            // is at the origin of world space.\t\n            d3dLight.Position.x = 0.0f;\t\n            d3dLight.Position.y = 1000.0f;\t\n            d3dLight.Position.z = -100.0f; // Don't attenuate.\t\n            d3dLight.Attenuation0 = 1.0f; \t\n            d3dLight.Range        = 1000.0f; // Set the property information for the first light.\t\n            hr = d3dDevice-&gt;SetLight(0, &amp;d3dLight);\t\n            if (SUCCEEDED(hr)) // Handle Success\t\n            else // Handle failure\t\n            </code></pre><p>Enable a light source by calling the <strong><see cref=\"M:SharpDX.Direct3D9.Device.EnableLight(System.Int32,SharpDX.Bool)\"/></strong> method for the device.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::SetLight']/*\"/>\t\n            <msdn-id>bb174436</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::SetLight([In] unsigned int Index,[In] const D3DLIGHT9* arg1)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::SetLight</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.GetLight(System.Int32)\">\n            <summary>\t\n            <p>Retrieves a set of lighting properties that this device uses.</p>\t\n            </summary>\t\n            <param name=\"index\"><dd>  <p>Zero-based index of the lighting property set to retrieve. This method will fail if a lighting property has not been set for this index by calling the <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetLight(System.Int32,SharpDX.Direct3D9.Light@)\"/></strong> method. </p> </dd></param>\t\n            <returns><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.Light\"/></strong> structure that is filled with the retrieved lighting-parameter set. </p> </dd></returns>\t\n            <remarks>\t\n            <p>This method will not return device state for a device that is created using <see cref=\"F:SharpDX.Direct3D9.CreateFlags.PureDevice\"/>. If you want to use this method, you must create your device with any of the other values in <see cref=\"T:SharpDX.Direct3D9.CreateFlags\"/>.</p><p>Retrieve all the properties for an existing light source by calling the <strong><see cref=\"M:SharpDX.Direct3D9.Device.GetLight(System.Int32)\"/></strong> method for the device. When calling the <strong><see cref=\"M:SharpDX.Direct3D9.Device.GetLight(System.Int32)\"/></strong> method, pass the zero-based index of the light source for which the properties will be retrieved as the first parameter, and supply the address of a <strong><see cref=\"T:SharpDX.Direct3D9.Light\"/></strong> structure as the second parameter. The device fills the <strong><see cref=\"T:SharpDX.Direct3D9.Light\"/></strong> structure to describe the lighting properties it uses for the light source at that index.</p><pre><code> // Assume d3dDevice is a valid reference to an <see cref=\"T:SharpDX.Direct3D9.Device\"/> interface.\t\n            <see cref=\"T:SharpDX.Result\"/> hr;\t\n            D3DLight9 light; // Get the property information for the first light.\t\n            hr = pd3dDevice-&gt;GetLight(0, &amp;light);\t\n            if (SUCCEEDED(hr)) // Handle Success\t\n            else // Handle failure\t\n            </code></pre><p>If you supply an index outside the range of the light sources assigned in the device, the <strong><see cref=\"M:SharpDX.Direct3D9.Device.GetLight(System.Int32)\"/></strong> method fails, returning <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p><p>When you assign a set of light properties for a light source in a scene, the light source can be activated by calling the <strong><see cref=\"M:SharpDX.Direct3D9.Device.EnableLight(System.Int32,SharpDX.Bool)\"/></strong> method for the device. New light sources are disabled by default. The <strong><see cref=\"M:SharpDX.Direct3D9.Device.EnableLight(System.Int32,SharpDX.Bool)\"/></strong> method accepts two parameters. Set the first parameter to the zero-based index of the light source to be affected by the method, and set the second parameter to <strong>TRUE</strong> to enable the light or <strong><see cref=\"F:SharpDX.Result.False\"/></strong> to disable it. The following code example illustrates the use of this method by enabling the first light source in the device's list of light source properties.</p><pre><code> // Assume d3dDevice is a valid reference to an <see cref=\"T:SharpDX.Direct3D9.Device\"/> interface.\t\n            <see cref=\"T:SharpDX.Result\"/> hr; hr = pd3dDevice-&gt;LightEnable(0, TRUE);\t\n            if (SUCCEEDED(hr)) // Handle Success\t\n            else // Handle failure\t\n            </code></pre><p>Check the MaxActiveLights member of the <strong><see cref=\"T:SharpDX.Direct3D9.Capabilities\"/></strong> structure when you retrieve device capabilities to determine the maximum number of active lights supported by that device.</p><p>If you enable or disable a light that has no properties that are set with <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetLight(System.Int32,SharpDX.Direct3D9.Light@)\"/></strong>, the <strong><see cref=\"M:SharpDX.Direct3D9.Device.EnableLight(System.Int32,SharpDX.Bool)\"/></strong> method creates a light source with the properties listed in following table and enables or disables it.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::GetLight']/*\"/>\t\n            <msdn-id>bb174392</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::GetLight([In] unsigned int Index,[Out] D3DLIGHT9* arg1)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::GetLight</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.EnableLight(System.Int32,SharpDX.Bool)\">\n            <summary>\t\n            <p>Enables or disables a set of lighting parameters within a device.</p>\t\n            </summary>\t\n            <param name=\"index\"><dd>  <p>Zero-based index of the set of lighting parameters that are the target of this method. </p> </dd></param>\t\n            <param name=\"enable\"><dd>  <p>Value that indicates if the set of lighting parameters are being enabled or disabled. Set this parameter to <strong>TRUE</strong> to enable lighting with the parameters at the specified index, or <strong><see cref=\"F:SharpDX.Result.False\"/></strong> to disable it. </p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>. </p></returns>\t\n            <remarks>\t\n            <p>If a value for LightIndex is outside the range of the light property sets assigned within the device, the <strong><see cref=\"M:SharpDX.Direct3D9.Device.EnableLight(System.Int32,SharpDX.Bool)\"/></strong> method creates a light source represented by a <strong><see cref=\"T:SharpDX.Direct3D9.Light\"/></strong> structure with the following properties and sets its enabled state to the value specified in bEnable.</p><table> <tr><th>Member</th><th>Default</th></tr> <tr><td> Type </td><td><see cref=\"F:SharpDX.Direct3D9.LightType.Directional\"/></td></tr> <tr><td> Diffuse </td><td>(R:1, G:1, B:1, A:0)</td></tr> <tr><td> Specular </td><td>(R:0, G:0, B:0, A:0)</td></tr> <tr><td> Ambient </td><td>(R:0, G:0, B:0, A:0)</td></tr> <tr><td> Position </td><td>(0, 0, 0)</td></tr> <tr><td> Direction </td><td>(0, 0, 1)</td></tr> <tr><td> Range </td><td>0</td></tr> <tr><td> Falloff </td><td>0</td></tr> <tr><td> Attenuation0 </td><td>0</td></tr> <tr><td> Attenuation1 </td><td>0</td></tr> <tr><td> Attenuation2 </td><td>0</td></tr> <tr><td> Theta </td><td>0</td></tr> <tr><td> Phi </td><td>0</td></tr> </table><p>?</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::LightEnable']/*\"/>\t\n            <msdn-id>bb174421</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::LightEnable([In] unsigned int Index,[In] BOOL Enable)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::LightEnable</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.IsLightEnabled(System.Int32)\">\n            <summary>\t\n            <p>Retrieves the activity status - enabled or disabled - for a set of lighting parameters within a device.</p>\t\n            </summary>\t\n            <param name=\"index\"><dd>  <p>Zero-based index of the set of lighting parameters that are the target of this method. </p> </dd></param>\t\n            <returns><dd>  <p>Pointer to a variable to fill with the status of the specified lighting parameters. After the call, a nonzero value at this address indicates that the specified lighting parameters are enabled; a value of 0 indicates that they are disabled. </p> </dd></returns>\t\n            <remarks>\t\n            <p>This method will not return device state for a device that is created using <see cref=\"F:SharpDX.Direct3D9.CreateFlags.PureDevice\"/>. If you want to use this method, you must create your device with any of the other values in <see cref=\"T:SharpDX.Direct3D9.CreateFlags\"/>. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::GetLightEnable']/*\"/>\t\n            <msdn-id>bb174393</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::GetLightEnable([In] unsigned int Index,[Out] BOOL* pEnable)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::GetLightEnable</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.SetClipPlane(System.Int32,SharpDX.Vector4)\">\n            <summary>\t\n            <p>Sets the coefficients of a user-defined clipping plane for the device.</p>\t\n            </summary>\t\n            <param name=\"index\"><dd>  <p>Index of the clipping plane for which the plane equation coefficients are to be set. </p> </dd></param>\t\n            <param name=\"planeRef\"><dd>  <p>Pointer to an address of a four-element array of values that represent the clipping plane coefficients to be set, in the form of the general plane equation. See Remarks. </p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>. This error indicates that the value in Index exceeds the maximum clipping plane index supported by the device or that the array at pPlane is not large enough to contain four floating-point values. </p></returns>\t\n            <remarks>\t\n            <p>The coefficients that this method sets take the form of the general plane equation. If the values in the array at pPlane were labeled A, B, C, and D in the order that they appear in the array, they would fit into the general plane equation so that Ax + By + Cz + Dw = 0. A point with homogeneous coordinates (x, y, z, w) is visible in the half space of the plane if Ax + By + Cz + Dw &gt;= 0. Points that exist behind the clipping plane are clipped from the scene.</p><p>When the fixed function pipeline is used the plane equations are assumed to be in world space. When the programmable pipeline is used the plane equations are assumed to be in the clipping space (the same space as output vertices).</p><p>This method does not enable the clipping plane equation being set. To enable a clipping plane, set the corresponding bit in the DWORD value applied to the <see cref=\"F:SharpDX.Direct3D9.RenderState.ClipPlaneEnable\"/> render state.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::SetClipPlane']/*\"/>\t\n            <msdn-id>bb174426</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::SetClipPlane([In] unsigned int Index,[In] const SHARPDX_VECTOR4* pPlane)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::SetClipPlane</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.GetClipPlane(System.Int32)\">\n            <summary>\t\n            <p>Retrieves the coefficients of a user-defined clipping plane for the device.</p>\t\n            </summary>\t\n            <param name=\"index\"><dd>  <p>Index of the clipping plane for which the plane equation coefficients are retrieved. </p> </dd></param>\t\n            <returns><dd>  <p>Pointer to a four-element array of values that represent the coefficients of the clipping plane in the form of the general plane equation. See Remarks. </p> </dd></returns>\t\n            <remarks>\t\n            <p>This method will not return device state for a device that is created using <see cref=\"F:SharpDX.Direct3D9.CreateFlags.PureDevice\"/>. If you want to use this method, you must create your device with any of the other values in <see cref=\"T:SharpDX.Direct3D9.CreateFlags\"/>.\" </p><p>The coefficients that this method reports take the form of the general plane equation. If the values in the array at pPlane were labeled A, B, C, and D in the order that they appear in the array, they would fit into the general plane equation so that Ax + By + Cz + Dw = 0. A point with homogeneous coordinates (x, y, z, w) is visible in the half space of the plane if Ax + By + Cz + Dw &gt;= 0. Points that exist on or behind the clipping plane are clipped from the scene.</p><p>The plane equation used by this method exists in world space and is set by a previous call to the <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetClipPlane(System.Int32,SharpDX.Vector4)\"/></strong> method.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::GetClipPlane']/*\"/>\t\n            <msdn-id>bb174380</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::GetClipPlane([In] unsigned int Index,[Out] float* pPlane)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::GetClipPlane</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.SetRenderState(SharpDX.Direct3D9.RenderState,System.Int32)\">\n            <summary>\t\n            <p>Sets a single device render-state parameter.</p>\t\n            </summary>\t\n            <param name=\"state\"><dd>  <p>Device state variable that is being modified. This parameter can be any member of the <strong><see cref=\"T:SharpDX.Direct3D9.RenderState\"/></strong> enumerated type. </p> </dd></param>\t\n            <param name=\"value\"><dd>  <p>New value for the device render state to be set. The meaning of this parameter is dependent on the value specified for <em>State</em>. For example, if <em>State</em> were <see cref=\"F:SharpDX.Direct3D9.RenderState.ShadeMode\"/>, the second parameter would be one member of the <strong><see cref=\"T:SharpDX.Direct3D9.ShadeMode\"/></strong> enumerated type. </p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/> is returned if one of the arguments is invalid. </p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::SetRenderState']/*\"/>\t\n            <msdn-id>bb174454</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::SetRenderState([In] D3DRENDERSTATETYPE State,[In] unsigned int Value)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::SetRenderState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.GetRenderState(SharpDX.Direct3D9.RenderState,System.IntPtr)\">\n            <summary>\t\n            <p>Retrieves a render-state value for a device.</p>\t\n            </summary>\t\n            <param name=\"state\"><dd>  <p>Device state variable that is being queried. This parameter can be any member of the <strong><see cref=\"T:SharpDX.Direct3D9.RenderState\"/></strong> enumerated type. </p> </dd></param>\t\n            <param name=\"valueRef\"><dd>  <p>Pointer to a variable that receives the value of the queried render state variable when the method returns. </p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/> if one of the arguments is invalid. </p></returns>\t\n            <remarks>\t\n            <p>This method will not return device state for a device that is created using <see cref=\"F:SharpDX.Direct3D9.CreateFlags.PureDevice\"/>. If you want to use this method, you must create your device with any of the other values in <see cref=\"T:SharpDX.Direct3D9.CreateFlags\"/>.\" </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::GetRenderState']/*\"/>\t\n            <msdn-id>bb174403</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::GetRenderState([In] D3DRENDERSTATETYPE State,[In] void* pValue)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::GetRenderState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.CreateStateBlock(SharpDX.Direct3D9.StateBlockType,SharpDX.Direct3D9.StateBlock)\">\n            <summary>\t\n            <p>Creates a new state block that contains the values for all device states, vertex-related states, or pixel-related states.</p>\t\n            </summary>\t\n            <param name=\"type\"><dd>  <p>Type of state data that the method should capture. This parameter can be set to a value defined in the <strong><see cref=\"T:SharpDX.Direct3D9.StateBlockType\"/></strong> enumerated type. </p> </dd></param>\t\n            <param name=\"sBOut\"><dd>  <p>Pointer to a state block interface. See <strong><see cref=\"T:SharpDX.Direct3D9.StateBlock\"/></strong>.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.OutOfVideoMemory\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>Vertex-related device states typically refer to those states that affect how the system processes vertices. Pixel-related states generally refer to device states that affect how the system processes pixel or depth-buffer data during rasterization. Some states are contained in both groups. </p><table> <tr><td> <p>Differences between Direct3D 9 and Direct3D 10:</p> <p>In Direct3D 9, a state block contains state data, for the states it was requested to capture, when the object is created. To change the value of the state block, call <strong><see cref=\"M:SharpDX.Direct3D9.StateBlock.Capture\"/></strong> or <strong><see cref=\"M:SharpDX.Direct3D9.Device.BeginStateBlock\"/></strong>/<strong><see cref=\"M:SharpDX.Direct3D9.Device.EndStateBlock\"/></strong>. There is no state saved when a state block object is created in Direct3D 10.</p> </td></tr> </table><p>?</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::CreateStateBlock']/*\"/>\t\n            <msdn-id>bb174362</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::CreateStateBlock([In] D3DSTATEBLOCKTYPE Type,[Out, Fast] IDirect3DStateBlock9** ppSB)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::CreateStateBlock</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.BeginStateBlock\">\n            <summary>\t\n            <p>Signals Direct3D to begin recording a device-state block.</p>\t\n            </summary>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>Applications can ensure that all recorded states are valid by calling the <strong><see cref=\"M:SharpDX.Direct3D9.Device.ValidateDevice(System.Int32)\"/></strong> method prior to calling this method.</p><p>The following methods can be recorded in a state block, after calling <strong><see cref=\"M:SharpDX.Direct3D9.Device.BeginStateBlock\"/></strong> and before <strong><see cref=\"M:SharpDX.Direct3D9.Device.EndStateBlock\"/></strong>. </p><ul> <li> <strong><see cref=\"M:SharpDX.Direct3D9.Device.EnableLight(System.Int32,SharpDX.Bool)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetClipPlane(System.Int32,SharpDX.Vector4)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetCurrentTexturePalette(System.Int32)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetVertexFormat(SharpDX.Direct3D9.VertexFormat)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetIndices(SharpDX.Direct3D9.IndexBuffer)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetLight(System.Int32,SharpDX.Direct3D9.Light@)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetMaterial(SharpDX.Direct3D9.Material@)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetNPatchMode(System.Single)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetPixelShader(SharpDX.Direct3D9.PixelShader)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetPixelShaderConstantB(System.Int32,System.IntPtr,System.Int32)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetPixelShaderConstantF(System.Int32,System.IntPtr,System.Int32)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetPixelShaderConstantI(System.Int32,System.IntPtr,System.Int32)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetRenderState(SharpDX.Direct3D9.RenderState,System.Boolean)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetSamplerState(System.Int32,SharpDX.Direct3D9.SamplerState,SharpDX.Direct3D9.TextureFilter)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetScissorRect(SharpDX.Rectangle)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetStreamSource(System.Int32,SharpDX.Direct3D9.VertexBuffer,System.Int32,System.Int32)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetStreamSourceFrequency(System.Int32,System.Int32,SharpDX.Direct3D9.StreamSource)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetTexture(System.Int32,SharpDX.Direct3D9.BaseTexture)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetTextureStageState(System.Int32,SharpDX.Direct3D9.TextureStage,SharpDX.Direct3D9.TextureArgument)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetTransform_(System.Int32,SharpDX.Matrix@)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetViewport(SharpDX.Viewport)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetVertexDeclaration(SharpDX.Direct3D9.VertexDeclaration)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetVertexShader(SharpDX.Direct3D9.VertexShader)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetVertexShaderConstantB(System.Int32,System.IntPtr,System.Int32)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetVertexShaderConstantF(System.Int32,System.IntPtr,System.Int32)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetVertexShaderConstantI(System.Int32,System.IntPtr,System.Int32)\"/></strong> </li> </ul><p>The ordering of state changes in a state block is not guaranteed. If the same state is specified multiple times in a state block, only the last value is used.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::BeginStateBlock']/*\"/>\t\n            <msdn-id>bb174351</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::BeginStateBlock()</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::BeginStateBlock</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.EndStateBlock\">\n            <summary>\t\n            <p>Signals Direct3D to stop recording a device-state block and retrieve a reference to the state block interface.</p>\t\n            </summary>\t\n            <returns><dd>  <p>Pointer to a state block interface. See <strong><see cref=\"T:SharpDX.Direct3D9.StateBlock\"/></strong>.</p> </dd></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::EndStateBlock']/*\"/>\t\n            <msdn-id>bb174376</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::EndStateBlock([In] IDirect3DStateBlock9** ppSB)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::EndStateBlock</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.SetClipStatus(SharpDX.Direct3D9.ClipStatus)\">\n            <summary>\t\n            <p>Sets the clip status.</p>\t\n            </summary>\t\n            <param name=\"clipStatusRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.ClipStatus\"/></strong> structure, describing the clip status settings to be set. </p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If one of the arguments is invalid, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>. </p></returns>\t\n            <remarks>\t\n            <p>Clip status is used during software vertex processing. Therefore, this method is not supported on pure or nonpure hardware processing devices. For more information about pure devices, see <see cref=\"T:SharpDX.Direct3D9.CreateFlags\"/>.</p><p>When clipping is enabled during vertex processing (by <strong><see cref=\"M:SharpDX.Direct3D9.Device.ProcessVertices(System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.VertexBuffer,SharpDX.Direct3D9.VertexDeclaration,SharpDX.Direct3D9.LockFlags)\"/></strong>, <strong><see cref=\"M:SharpDX.Direct3D9.Device.DrawPrimitives(SharpDX.Direct3D9.PrimitiveType,System.Int32,System.Int32)\"/></strong>, or other drawing functions), Direct3D computes a clip code for every vertex. The clip code is a combination of D3DCS_* bits. When a vertex is outside a particular clipping plane, the corresponding bit is set in the clipping code. Direct3D maintains the clip status using <strong><see cref=\"T:SharpDX.Direct3D9.ClipStatus\"/></strong>, which has ClipUnion and ClipIntersection members. ClipUnion is a bitwise \"OR\" of all vertex clip codes and ClipIntersection is a bitwise \"AND\" of all vertex clip codes. Initial values are zero for ClipUnion and 0xFFFFFFFF for ClipIntersection. When <see cref=\"F:SharpDX.Direct3D9.RenderState.Clipping\"/> is set to <strong><see cref=\"F:SharpDX.Result.False\"/></strong>, ClipUnion and ClipIntersection are set to zero. Direct3D updates the clip status during drawing calls. To compute clip status for a particular object, set ClipUnion and ClipIntersection to their initial value and continue drawing.</p><p>Clip status is not updated by <strong><see cref=\"M:SharpDX.Direct3D9.Device.DrawRectanglePatch(System.Int32,System.Single[])\"/></strong> and <strong><see cref=\"M:SharpDX.Direct3D9.Device.DrawTrianglePatch(System.Int32,System.Single[])\"/></strong> because there is no software emulation for them.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::SetClipStatus']/*\"/>\t\n            <msdn-id>bb174427</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::SetClipStatus([In] const D3DCLIPSTATUS9* pClipStatus)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::SetClipStatus</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.GetClipStatus(SharpDX.Direct3D9.ClipStatus@)\">\n            <summary>\t\n            <p>Retrieves the clip status.</p>\t\n            </summary>\t\n            <param name=\"clipStatusRef\"><dd>  <p> Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.ClipStatus\"/></strong> structure that describes the clip status. </p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>.</p><p><see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/> is returned if the argument is invalid.</p></returns>\t\n            <remarks>\t\n            <p>When clipping is enabled during vertex processing (by <strong><see cref=\"M:SharpDX.Direct3D9.Device.ProcessVertices(System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.VertexBuffer,SharpDX.Direct3D9.VertexDeclaration,SharpDX.Direct3D9.LockFlags)\"/></strong>, <strong><see cref=\"M:SharpDX.Direct3D9.Device.DrawPrimitives(SharpDX.Direct3D9.PrimitiveType,System.Int32,System.Int32)\"/></strong>, or other drawing functions), Direct3D computes a clip code for every vertex. The clip code is a combination of D3DCS_* bits. When a vertex is outside a particular clipping plane, the corresponding bit is set in the clipping code. Direct3D maintains the clip status using <strong><see cref=\"T:SharpDX.Direct3D9.ClipStatus\"/></strong>, which has ClipUnion and ClipIntersection members. ClipUnion is a bitwise \"OR\" of all vertex clip codes and ClipIntersection is a bitwise \"AND\" of all vertex clip codes. Initial values are zero for ClipUnion and 0xFFFFFFFF for ClipIntersection. When <see cref=\"F:SharpDX.Direct3D9.RenderState.Clipping\"/> is set to <strong><see cref=\"F:SharpDX.Result.False\"/></strong>, ClipUnion and ClipIntersection are set to zero. Direct3D updates the clip status during drawing calls. To compute clip status for a particular object, set ClipUnion and ClipIntersection to their initial value and continue drawing.</p><p>Clip status is not updated by <strong><see cref=\"M:SharpDX.Direct3D9.Device.DrawRectanglePatch(System.Int32,System.Single[])\"/></strong> and <strong><see cref=\"M:SharpDX.Direct3D9.Device.DrawTrianglePatch(System.Int32,System.Single[])\"/></strong> because there is no software emulation for them.</p><p>Clip status is used during software vertex processing. Therefore, this method is not supported on pure or nonpure hardware processing devices. For more information about pure devices, see <see cref=\"T:SharpDX.Direct3D9.CreateFlags\"/>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::GetClipStatus']/*\"/>\t\n            <msdn-id>bb174381</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::GetClipStatus([Out] D3DCLIPSTATUS9* pClipStatus)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::GetClipStatus</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.GetTexture(System.Int32)\">\n            <summary>\t\n            <p>Retrieves a texture assigned to a stage for a device.</p>\t\n            </summary>\t\n            <param name=\"stage\"><dd>  <p>Stage identifier of the texture to retrieve. Stage identifiers are zero-based.</p> </dd></param>\t\n            <returns><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D9.BaseTexture\"/></strong> interface, representing the returned texture. </p> </dd></returns>\t\n            <remarks>\t\n            <p>Typically, methods that return state will not work on a device that is created using <see cref=\"F:SharpDX.Direct3D9.CreateFlags.PureDevice\"/>. This method however, will work even on a pure device because it returns an interface.</p><p>Calling this method will increase the internal reference count on the <strong><see cref=\"T:SharpDX.Direct3D9.Texture\"/></strong> interface. Failure to call <strong>IUnknown::Release</strong> when finished using this <strong><see cref=\"T:SharpDX.Direct3D9.Texture\"/></strong> interface results in a memory leak.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::GetTexture']/*\"/>\t\n            <msdn-id>bb174412</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::GetTexture([In] unsigned int Stage,[Out] IDirect3DBaseTexture9** ppTexture)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::GetTexture</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.SetTexture(System.Int32,SharpDX.Direct3D9.BaseTexture)\">\n            <summary>\t\n            <p>Assigns a texture to a stage for a device.</p>\t\n            </summary>\t\n            <param name=\"stage\"><dd>  <p>Zero based sampler number.  Textures are bound to samplers; samplers define sampling state such as the filtering mode and the address wrapping mode. Textures are referenced differently by the programmable and the fixed function pipeline: </p> <ul> <li>Programmable shaders reference textures using the sampler number. The number of samplers available to a programmable shader is dependent on the shader version. For vertex shaders, see Sampler (Direct3D 9 asm-vs). For pixel shaders see Sampler (Direct3D 9 asm-ps).</li> <li>The fixed function pipeline on the other hand, references textures by texture stage number. The maximum number of samplers is determined from two caps: MaxSimultaneousTextures and MaxTextureBlendStages of the <strong><see cref=\"T:SharpDX.Direct3D9.Capabilities\"/></strong> structure.</li> </ul> <p>There are two other special cases for stage/sampler numbers.</p> <ul> <li>A special number called D3DDMAPSAMPLER is used for Displacement Mapping (Direct3D 9).</li> <li>A programmable vertex shader uses a special number defined by a <see cref=\"T:SharpDX.Direct3D9.VertexTextureSampler\"/> when accessing Vertex Textures in vs_3_0 (DirectX HLSL).</li> </ul> </dd></param>\t\n            <param name=\"textureRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.BaseTexture\"/></strong> interface, representing the texture being set.  </p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>. </p></returns>\t\n            <remarks>\t\n            <p><strong>SetTexture</strong> is not allowed if the texture is created with a pool type of <see cref=\"F:SharpDX.Direct3D9.Pool.Scratch\"/>. <strong>SetTexture</strong> is not allowed with a pool type of <see cref=\"F:SharpDX.Direct3D9.Pool.SystemMemory\"/> texture unless DevCaps is set with <see cref=\"F:SharpDX.Direct3D9.DeviceCaps.TextureSystemMemory\"/>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::SetTexture']/*\"/>\t\n            <msdn-id>bb174461</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::SetTexture([In] unsigned int Stage,[In] IDirect3DBaseTexture9* pTexture)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::SetTexture</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.GetTextureStageState(System.Int32,SharpDX.Direct3D9.TextureStage,System.IntPtr)\">\n            <summary>\t\n            <p>Retrieves a state value for an assigned texture.</p>\t\n            </summary>\t\n            <param name=\"stage\"><dd>  <p>Stage identifier of the texture for which the state is retrieved. Stage identifiers are zero-based. Devices can have up to eight set textures, so the maximum value allowed for Stage is 7. </p> </dd></param>\t\n            <param name=\"type\"><dd>  <p>Texture state to retrieve. This parameter can be any member of the <strong><see cref=\"T:SharpDX.Direct3D9.TextureStage\"/></strong> enumerated type. </p> </dd></param>\t\n            <param name=\"valueRef\"><dd>  <p>Pointer a variable to fill with the retrieved state value. The meaning of the retrieved value is determined by the Type parameter. </p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>. </p></returns>\t\n            <remarks>\t\n            <p>This method will not return device state for a device that is created using <see cref=\"F:SharpDX.Direct3D9.CreateFlags.PureDevice\"/>. If you want to use this method, you must create your device with any of the other flag values in <see cref=\"T:SharpDX.Direct3D9.CreateFlags\"/>.\" </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::GetTextureStageState']/*\"/>\t\n            <msdn-id>bb174413</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::GetTextureStageState([In] unsigned int Stage,[In] D3DTEXTURESTAGESTATETYPE Type,[In] void* pValue)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::GetTextureStageState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.SetTextureStageState(System.Int32,SharpDX.Direct3D9.TextureStage,System.Int32)\">\n            <summary>\t\n            <p>Sets the state value for the currently assigned texture.</p>\t\n            </summary>\t\n            <param name=\"stage\"><dd>  <p>Stage identifier of the texture for which the state value is set. Stage identifiers are zero-based. Devices can have up to eight set textures, so the maximum value allowed for Stage is 7. </p> </dd></param>\t\n            <param name=\"type\"><dd>  <p>Texture state to set. This parameter can be any member of the <strong><see cref=\"T:SharpDX.Direct3D9.TextureStage\"/></strong> enumerated type. </p> </dd></param>\t\n            <param name=\"value\"><dd>  <p>State value to set. The meaning of this value is determined by the Type parameter. </p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>. </p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::SetTextureStageState']/*\"/>\t\n            <msdn-id>bb174462</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::SetTextureStageState([In] unsigned int Stage,[In] D3DTEXTURESTAGESTATETYPE Type,[In] unsigned int Value)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::SetTextureStageState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.GetSamplerState(System.Int32,SharpDX.Direct3D9.SamplerState,System.IntPtr)\">\n            <summary>\t\n            <p>Gets the sampler state value.</p>\t\n            </summary>\t\n            <param name=\"sampler\"><dd>  <p>The sampler stage index.</p> </dd></param>\t\n            <param name=\"type\"><dd>  <p>This parameter can be any member of the <strong><see cref=\"T:SharpDX.Direct3D9.SamplerState\"/></strong> enumerated type. </p> </dd></param>\t\n            <param name=\"valueRef\"><dd>  <p>State value to get. The meaning of this value is determined by the Type parameter. </p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>. </p></returns>\t\n            <remarks>\t\n            <p>This method will not return device state for a device that is created using <see cref=\"F:SharpDX.Direct3D9.CreateFlags.PureDevice\"/>. If you want to use this method, you must create your device with any of the other values in <see cref=\"T:SharpDX.Direct3D9.CreateFlags\"/>.\" </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::GetSamplerState']/*\"/>\t\n            <msdn-id>bb174406</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::GetSamplerState([In] unsigned int Sampler,[In] D3DSAMPLERSTATETYPE Type,[In] void* pValue)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::GetSamplerState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.SetSamplerState(System.Int32,SharpDX.Direct3D9.SamplerState,System.Int32)\">\n            <summary>\t\n            <p>Sets the sampler state value.</p>\t\n            </summary>\t\n            <param name=\"sampler\"><dd>  <p>The sampler stage index.</p> </dd></param>\t\n            <param name=\"type\"><dd>  <p>This parameter can be any member of the <strong><see cref=\"T:SharpDX.Direct3D9.SamplerState\"/></strong> enumerated type. </p> </dd></param>\t\n            <param name=\"value\"><dd>  <p>State value to set. The meaning of this value is determined by the Type parameter. </p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>. </p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::SetSamplerState']/*\"/>\t\n            <msdn-id>bb174456</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::SetSamplerState([In] unsigned int Sampler,[In] D3DSAMPLERSTATETYPE Type,[In] unsigned int Value)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::SetSamplerState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.ValidateDevice(System.Int32)\">\n            <summary>\t\n            <p>Reports the device's ability to render the current texture-blending operations and arguments in a single pass.</p>\t\n            </summary>\t\n            <param name=\"numPassesRef\"><dd>  <p>Pointer to a DWORD value to fill with the number of rendering passes needed to complete the desired effect through multipass rendering. </p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.ConflictingRenderState\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.ConflictingTextureFilter\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.DeviceLost\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.DriverInternalError\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.TooManyOperations\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.UnsupportedAlphaArgument\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.UnsupportedAlphaOperation\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.UnsupportedColorArgument\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.UnsupportedColorOperation\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.UnsupportedFactorValue\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.UnsupportedTextureFilter\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.WrongTextureFormat\"/>,.</p></returns>\t\n            <remarks>\t\n            <p>The <strong><see cref=\"M:SharpDX.Direct3D9.Device.ValidateDevice(System.Int32)\"/></strong> method should be used to validate scenarios only when other capabilities are deficient. For example, in a multistage texturing scenario, you could query the MaxTextureBlendStages and MaxSimultaneousTextures members of a <strong><see cref=\"T:SharpDX.Direct3D9.Capabilities\"/></strong> structure to determine if multistage texturing is possible on the device.</p><p>Current hardware does not necessarily implement all possible combinations of operations and arguments. You can determine whether a particular blending operation can be performed with given arguments by setting the desired blending operation, and then calling the <strong><see cref=\"M:SharpDX.Direct3D9.Device.ValidateDevice(System.Int32)\"/></strong> method. </p><p>The <strong><see cref=\"M:SharpDX.Direct3D9.Device.ValidateDevice(System.Int32)\"/></strong> method uses the current render states, textures, and texture-stage states to perform validation at the time of the call. Changes to these factors after the call invalidate the previous result, and the method must be called again before rendering a scene.</p><p>For best performance, call <strong><see cref=\"M:SharpDX.Direct3D9.Device.ValidateDevice(System.Int32)\"/></strong> at initialization time; do not use it within a render loop.</p><p>Using diffuse iterated values, either as an argument or as an operation (D3DTA_DIFFUSED3DTOP_BLENDDIFFUSEALPHA) is rarely supported on current hardware. Most hardware can introduce iterated color data only at the last texture operation stage.</p><p>Try to specify the texture (<see cref=\"F:SharpDX.Direct3D9.TextureArgument.Texture\"/>) for each stage as the first argument, rather than the second argument.</p><p>Many cards do not support use of diffuse or scalar values at arbitrary texture stages. Often, these are available only at the first or last texture-blending stage.</p><p>Many cards do not have a blending unit associated with the first texture that is capable of more than replicating alpha to color channels or inverting the input. Therefore, your application might need to use only the second texture stage, if possible. On such hardware, the first unit is presumed to be in its default state, which has the first color argument set to <see cref=\"F:SharpDX.Direct3D9.TextureArgument.Texture\"/> with the <see cref=\"F:SharpDX.Direct3D9.TextureOperation.SelectArg1\"/> operation.</p><p>Operations on the output alpha that are more intricate than or substantially different from the color operations are less likely to be supported. </p><p>Some hardware does not support simultaneous use of <see cref=\"F:SharpDX.Direct3D9.TextureArgument.TFactor\"/> and <see cref=\"F:SharpDX.Direct3D9.TextureArgument.Diffuse\"/>.</p><p>Many cards do not support simultaneous use of multiple textures and mipmapped trilinear filtering. If trilinear filtering has been requested for a texture involved in multitexture blending operations and validation fails, turn off trilinear filtering and revalidate. In this case, you might want to perform multipass rendering instead.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::ValidateDevice']/*\"/>\t\n            <msdn-id>bb205859</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::ValidateDevice([In] unsigned int* pNumPasses)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::ValidateDevice</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.SetPaletteEntries(System.Int32,SharpDX.Direct3D9.PaletteEntry[])\">\n            <summary>\t\n            <p>Sets palette entries.</p>\t\n            </summary>\t\n            <param name=\"paletteNumber\"><dd>  <p>An ordinal value identifying the particular palette upon which the operation is to be performed. </p> </dd></param>\t\n            <param name=\"entriesRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.PaletteEntry\"/></strong> structure, representing the palette entries to set. The number of <strong><see cref=\"T:SharpDX.Direct3D9.PaletteEntry\"/></strong> structures pointed to by pEntries is assumed to be 256. See Remarks. </p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>. </p></returns>\t\n            <remarks>\t\n            <p>For Direct3D 9 applications, any palette sent to this method must conform to the <see cref=\"F:SharpDX.Direct3D9.TextureCaps.AlphaPalette\"/> capability bit of the <strong><see cref=\"T:SharpDX.Direct3D9.Capabilities\"/></strong> structure. If <see cref=\"F:SharpDX.Direct3D9.TextureCaps.AlphaPalette\"/> is not set, every entry in the palette must have alpha set to 1.0 or this method will fail with <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>. If <see cref=\"F:SharpDX.Direct3D9.TextureCaps.AlphaPalette\"/> is set, then any set of alpha values are allowed. Note that the debug runtime will print a warning message if all palette entries have alpha set to 0. </p><p>A single logical palette is associated with the device, and is shared by all texture stages.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::SetPaletteEntries']/*\"/>\t\n            <msdn-id>bb174439</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::SetPaletteEntries([In] unsigned int PaletteNumber,[In, Buffer] const PALETTEENTRY* pEntries)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::SetPaletteEntries</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.GetPaletteEntries(System.Int32,SharpDX.Direct3D9.PaletteEntry[])\">\n            <summary>\t\n            <p>Retrieves palette entries.</p>\t\n            </summary>\t\n            <param name=\"paletteNumber\"><dd>  <p>An ordinal value identifying the particular palette to retrieve. </p> </dd></param>\t\n            <param name=\"entriesRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.PaletteEntry\"/></strong> structure, representing the returned palette entries. </p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>. </p></returns>\t\n            <remarks>\t\n            <p>For more information about <strong><see cref=\"T:SharpDX.Direct3D9.PaletteEntry\"/></strong>, see the Platform SDK.</p><p><strong>Note</strong>??As of Direct3D 9, the peFlags member of the <strong><see cref=\"T:SharpDX.Direct3D9.PaletteEntry\"/></strong> structure does not work the way it is documented in the Platform SDK. The peFlags member is now the alpha channel for 8-bit palettized formats.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::GetPaletteEntries']/*\"/>\t\n            <msdn-id>bb174397</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::GetPaletteEntries([In] unsigned int PaletteNumber,[In, Buffer] PALETTEENTRY* pEntries)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::GetPaletteEntries</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.SetCurrentTexturePalette(System.Int32)\">\n            <summary>\t\n            <p>Sets the current texture palette.</p>\t\n            </summary>\t\n            <param name=\"paletteNumber\"><dd>  <p>Value that specifies the texture palette to set as the current texture palette. </p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>. </p></returns>\t\n            <remarks>\t\n            <p>A single logical palette is associated with the device, and is shared by all texture stages.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::SetCurrentTexturePalette']/*\"/>\t\n            <msdn-id>bb174428</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::SetCurrentTexturePalette([In] unsigned int PaletteNumber)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::SetCurrentTexturePalette</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.GetCurrentTexturePalette(System.Int32@)\">\n            <summary>\t\n            <p>Retrieves the current texture palette.</p>\t\n            </summary>\t\n            <param name=\"paletteNumber\"><dd>  <p>Pointer to a returned value that identifies the current texture palette. </p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::GetCurrentTexturePalette']/*\"/>\t\n            <msdn-id>bb174383</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::GetCurrentTexturePalette([Out] unsigned int* PaletteNumber)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::GetCurrentTexturePalette</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.SetScissorRect(SharpDX.Rectangle)\">\n            <summary>\t\n            <p>Sets the scissor rectangle.</p>\t\n            </summary>\t\n            <param name=\"rectRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Rectangle\"/></strong> structure that defines the rendering area within the render target if scissor test is enabled. This parameter may not be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>The scissor rectangle is used as a rectangular clipping region.</p><p>See Rectangles (Direct3D 9) for further information on the use of rectangles in DirectX.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::SetScissorRect']/*\"/>\t\n            <msdn-id>bb174457</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::SetScissorRect([In] const RECT* pRect)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::SetScissorRect</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.GetScissorRect(SharpDX.Rectangle@)\">\n            <summary>\t\n            <p>Gets the scissor rectangle.</p>\t\n            </summary>\t\n            <param name=\"rectRef\"><dd>  <p>Returns a reference to a <strong><see cref=\"T:SharpDX.Rectangle\"/></strong> structure that defines the rendering area within the render target if scissor test is enabled.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>The scissor rectangle is used as a rectangular clipping region.</p><p>See Rectangles (Direct3D 9) for further information on the use of rectangles in DirectX.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::GetScissorRect']/*\"/>\t\n            <msdn-id>bb174407</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::GetScissorRect([Out] RECT* pRect)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::GetScissorRect</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.SetSoftwareVertexProcessing(SharpDX.Bool)\">\n            <summary>\t\n            <p>Use this method to switch between software and hardware vertex processing.</p>\t\n            </summary>\t\n            <param name=\"bSoftware\"><dd>  <p><strong>TRUE</strong> to specify software vertex processing; <strong><see cref=\"F:SharpDX.Result.False\"/></strong> to specify hardware vertex processing.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>. </p></returns>\t\n            <remarks>\t\n            <p>The restrictions for changing modes are as follows:</p><ul> <li>If a device is created with <see cref=\"F:SharpDX.Direct3D9.CreateFlags.SoftwareVertexProcessing\"/>, the vertex processing will be done in software and cannot be changed.</li> <li>If a device is created with <see cref=\"F:SharpDX.Direct3D9.CreateFlags.HardwareVertexProcessing\"/>, the vertex processing will be done in hardware and cannot be changed.</li> <li>If a device is created with <see cref=\"F:SharpDX.Direct3D9.CreateFlags.MixedVertexProcessing\"/>, the vertex processing will be done in hardware by default. The processing can be switched to software (or back to hardware) using <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetSoftwareVertexProcessing(SharpDX.Bool)\"/></strong>.</li> </ul><p>An application can create a mixed-mode device to use both the software vertex processing and the hardware vertex processing. To switch between the two vertex processing modes in DirectX 8.x, use IDirect3DDevice8::SetRenderState with the render state D3DRS_SOFTWAREVERTEXPROCESSING and the appropriate DWORD argument. The drawback of the render state approach was the difficulty in defining the semantics for state blocks. Applications and the runtime had to do extra work and be careful while recording and playing back state blocks.</p><p>In Direct3D 9, use <strong>SetSoftwareVertexProcessing</strong> instead. This new API is not recorded by StateBlocks.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::SetSoftwareVertexProcessing']/*\"/>\t\n            <msdn-id>bb174458</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::SetSoftwareVertexProcessing([In] BOOL bSoftware)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::SetSoftwareVertexProcessing</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.GetSoftwareVertexProcessing\">\n            <summary>\t\n            <p>Gets the vertex processing (hardware or software) mode.</p>\t\n            </summary>\t\n            <returns><p>Returns <strong>TRUE</strong> if software vertex processing is set. Otherwise, it returns <strong><see cref=\"F:SharpDX.Result.False\"/></strong>.</p></returns>\t\n            <remarks>\t\n            <p>An application can create a mixed-mode device to use both the software vertex processing and the hardware vertex processing. To switch between the two vertex processing modes in DirectX 8.x, use <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetRenderState(SharpDX.Direct3D9.RenderState,System.Boolean)\"/></strong> with the render state D3DRS_SOFTWAREVERTEXPROCESSING and the appropriate <see cref=\"T:SharpDX.Bool\"/> argument. The drawback of the render state approach was the difficulty in defining the semantics for state blocks. Applications and the runtime had to do extra work and be careful while recording and playing back state blocks.</p><p>In Direct3D 9, use <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetSoftwareVertexProcessing(SharpDX.Bool)\"/></strong> instead. This new API is not recorded by StateBlocks.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::GetSoftwareVertexProcessing']/*\"/>\t\n            <msdn-id>bb174408</msdn-id>\t\n            <unmanaged>BOOL IDirect3DDevice9::GetSoftwareVertexProcessing()</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::GetSoftwareVertexProcessing</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.SetNPatchMode(System.Single)\">\n            <summary>\t\n            <p>Enable or disable N-patches.</p>\t\n            </summary>\t\n            <param name=\"nSegments\"><dd>  <p>Specifies the number of subdivision segments. If the number of segments is less than 1.0, N-patches are disabled. The default value is 0.0. </p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. </p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::SetNPatchMode']/*\"/>\t\n            <msdn-id>bb174438</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::SetNPatchMode([In] float nSegments)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::SetNPatchMode</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.GetNPatchMode\">\n            <summary>\t\n            <p>Gets the N-patch mode segments.</p>\t\n            </summary>\t\n            <returns><p>Specifies the number of subdivision segments. If the number of segments is less than 1.0, N-patches are disabled. The default value is 0.0. </p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::GetNPatchMode']/*\"/>\t\n            <msdn-id>bb174395</msdn-id>\t\n            <unmanaged>float IDirect3DDevice9::GetNPatchMode()</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::GetNPatchMode</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.DrawPrimitives(SharpDX.Direct3D9.PrimitiveType,System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Renders a sequence of nonindexed, geometric primitives of the specified type from the current set of data input streams.</p>\t\n            </summary>\t\n            <param name=\"primitiveType\"><dd>  <p>Member of the <strong><see cref=\"T:SharpDX.Direct3D9.PrimitiveType\"/></strong> enumerated type, describing the type of primitive to render. </p> </dd></param>\t\n            <param name=\"startVertex\"><dd>  <p>Index of the first vertex to load. Beginning at StartVertex the correct number of vertices will be read out of the vertex buffer. </p> </dd></param>\t\n            <param name=\"primitiveCount\"><dd>  <p>Number of primitives to render. The maximum number of primitives allowed is determined by checking the MaxPrimitiveCount member of the <strong><see cref=\"T:SharpDX.Direct3D9.Capabilities\"/></strong> structure. PrimitiveCount is the number of primitives as determined by the primitive type. If it is a line list, each primitive has two vertices. If it is a triangle list, each primitive has three vertices. </p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be  <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>When converting a legacy application to Direct3D 9, you must add a call to either <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetVertexFormat(SharpDX.Direct3D9.VertexFormat)\"/></strong> to use the fixed function pipeline, or <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetVertexDeclaration(SharpDX.Direct3D9.VertexDeclaration)\"/></strong> to use a vertex shader before you make any Draw calls.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::DrawPrimitive']/*\"/>\t\n            <msdn-id>bb174371</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::DrawPrimitive([In] D3DPRIMITIVETYPE PrimitiveType,[In] unsigned int StartVertex,[In] unsigned int PrimitiveCount)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::DrawPrimitive</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.DrawIndexedPrimitive(SharpDX.Direct3D9.PrimitiveType,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Based on indexing, renders the specified geometric primitive into an array of vertices.</p>\t\n            </summary>\t\n            <param name=\"arg0\"><dd>  <p>Member of the <strong><see cref=\"T:SharpDX.Direct3D9.PrimitiveType\"/></strong> enumerated type, describing the type of primitive to render. <see cref=\"F:SharpDX.Direct3D9.PrimitiveType.PointList\"/> is not supported with this method. See Remarks. </p> </dd></param>\t\n            <param name=\"baseVertexIndex\"><dd>  <p>Offset from the start of the vertex buffer to the first vertex. See Scenario 4.</p> </dd></param>\t\n            <param name=\"minVertexIndex\"><dd>  <p>Minimum vertex index for vertices used during this call. This is a zero based index relative to BaseVertexIndex.</p> </dd></param>\t\n            <param name=\"numVertices\"><dd>  <p>Number of vertices used during this call. The first vertex is located at index: BaseVertexIndex + MinIndex.</p> </dd></param>\t\n            <param name=\"startIndex\"><dd>  <p>Index of the first index to use when accesssing the vertex buffer. Beginning at StartIndex to index vertices from the vertex buffer.</p> </dd></param>\t\n            <param name=\"primCount\"><dd>  <p>Number of primitives to render. The number of vertices used is a function of the primitive count and the primitive type. The maximum number of primitives allowed is determined by checking the MaxPrimitiveCount member of the <strong><see cref=\"T:SharpDX.Direct3D9.Capabilities\"/></strong> structure. </p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>This method draws indexed primitives from the current set of data input streams. MinIndex  and all the indices in the index stream are relative to the BaseVertexIndex.</p><p>The MinIndex  and NumVertices  parameters specify the range of vertex indices used for each <strong><see cref=\"M:SharpDX.Direct3D9.Device.DrawIndexedPrimitive(SharpDX.Direct3D9.PrimitiveType,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32)\"/></strong> call. These are used to optimize vertex processing of indexed primitives by processing a sequential range of vertices prior to indexing into these vertices. It is invalid for any indices used during this call to reference any vertices outside of this range.</p><p><strong><see cref=\"M:SharpDX.Direct3D9.Device.DrawIndexedPrimitive(SharpDX.Direct3D9.PrimitiveType,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32)\"/></strong> fails if no index array is set.</p><p>The <see cref=\"F:SharpDX.Direct3D9.PrimitiveType.PointList\"/> member of the <strong><see cref=\"T:SharpDX.Direct3D9.PrimitiveType\"/></strong> enumerated type is not supported and is not a valid type for this method.</p><p>When converting a legacy application to Direct3D 9, you must add a call to either <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetVertexFormat(SharpDX.Direct3D9.VertexFormat)\"/></strong> to use the fixed function pipeline, or <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetVertexDeclaration(SharpDX.Direct3D9.VertexDeclaration)\"/></strong> to use a vertex shader before you make any Draw calls.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::DrawIndexedPrimitive']/*\"/>\t\n            <msdn-id>bb174369</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::DrawIndexedPrimitive([In] D3DPRIMITIVETYPE arg0,[In] int BaseVertexIndex,[In] unsigned int MinVertexIndex,[In] unsigned int NumVertices,[In] unsigned int startIndex,[In] unsigned int primCount)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::DrawIndexedPrimitive</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.DrawPrimitiveUP(SharpDX.Direct3D9.PrimitiveType,System.Int32,System.IntPtr,System.Int32)\">\n            <summary>\t\n            <p>Renders data specified by a user memory reference as a sequence of geometric primitives of the specified type.</p>\t\n            </summary>\t\n            <param name=\"primitiveType\"><dd>  <p>Member of the <strong><see cref=\"T:SharpDX.Direct3D9.PrimitiveType\"/></strong> enumerated type, describing the type of primitive to render. </p> </dd></param>\t\n            <param name=\"primitiveCount\"><dd>  <p>Number of primitives to render. The maximum number of primitives allowed is determined by checking the MaxPrimitiveCount member of the <strong><see cref=\"T:SharpDX.Direct3D9.Capabilities\"/></strong> structure. </p> </dd></param>\t\n            <param name=\"vertexStreamZeroDataRef\"><dd>  <p>User memory reference to the vertex data.</p> </dd></param>\t\n            <param name=\"vertexStreamZeroStride\"><dd>  <p>The number of bytes of data for each vertex. This value may not be 0.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>This method is intended for use in applications that are unable to store their vertex data in vertex buffers. This method supports only a single vertex stream. The effect of this call is to use the provided vertex data reference and stride for vertex stream 0. It is invalid to have the declaration of the current vertex shader refer to vertex streams other than stream 0.</p><p>Following any <strong><see cref=\"M:SharpDX.Direct3D9.Device.DrawPrimitiveUP(SharpDX.Direct3D9.PrimitiveType,System.Int32,System.IntPtr,System.Int32)\"/></strong> call, the stream 0 settings, referenced by <strong><see cref=\"M:SharpDX.Direct3D9.Device.GetStreamSource(System.Int32,SharpDX.Direct3D9.VertexBuffer@,System.Int32@,System.Int32@)\"/></strong>, are set to <strong><c>null</c></strong>.</p><p>The vertex data passed to <strong><see cref=\"M:SharpDX.Direct3D9.Device.DrawPrimitiveUP(SharpDX.Direct3D9.PrimitiveType,System.Int32,System.IntPtr,System.Int32)\"/></strong> does not need to persist after the call. Direct3D completes its access to that data prior to returning from the call.</p><p>When converting a legacy application to Direct3D 9, you must add a call to either <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetVertexFormat(SharpDX.Direct3D9.VertexFormat)\"/></strong> to use the fixed function pipeline, or <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetVertexDeclaration(SharpDX.Direct3D9.VertexDeclaration)\"/></strong> to use a vertex shader before you make any Draw calls.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::DrawPrimitiveUP']/*\"/>\t\n            <msdn-id>bb174372</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::DrawPrimitiveUP([In] D3DPRIMITIVETYPE PrimitiveType,[In] unsigned int PrimitiveCount,[In] const void* pVertexStreamZeroData,[In] unsigned int VertexStreamZeroStride)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::DrawPrimitiveUP</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.DrawIndexedPrimitiveUP(SharpDX.Direct3D9.PrimitiveType,System.Int32,System.Int32,System.Int32,System.IntPtr,SharpDX.Direct3D9.Format,System.IntPtr,System.Int32)\">\n            <summary>\t\n            <p>Renders the specified geometric primitive with data specified by a user memory reference.</p>\t\n            </summary>\t\n            <param name=\"primitiveType\"><dd>  <p>Member of the <strong><see cref=\"T:SharpDX.Direct3D9.PrimitiveType\"/></strong> enumerated type, describing the type of primitive to render. </p> </dd></param>\t\n            <param name=\"minVertexIndex\"><dd>  <p>Minimum vertex index. This is a zero-based index.</p> </dd></param>\t\n            <param name=\"numVertices\"><dd>  <p> Number of vertices used during this call. The first vertex is located at index: MinVertexIndex.</p> </dd></param>\t\n            <param name=\"primitiveCount\"><dd>  <p>Number of primitives to render. The maximum number of primitives allowed is determined by checking the MaxPrimitiveCount member of the <strong><see cref=\"T:SharpDX.Direct3D9.Capabilities\"/></strong> structure (the number of indices is a function of the primitive count and the primitive type).</p> </dd></param>\t\n            <param name=\"indexDataRef\"><dd>  <p>User memory reference to the index data. </p> </dd></param>\t\n            <param name=\"indexDataFormat\"><dd>  <p>Member of the <see cref=\"T:SharpDX.Direct3D9.Format\"/> enumerated type, describing the format of the index data. The valid settings are either: </p> <ul> <li> <see cref=\"F:SharpDX.Direct3D9.Format.Index16\"/> </li> <li> <see cref=\"F:SharpDX.Direct3D9.Format.Index32\"/> </li> </ul> </dd></param>\t\n            <param name=\"vertexStreamZeroDataRef\"><dd>  <p>User memory reference to the vertex data. The vertex data must be in stream 0.</p> </dd></param>\t\n            <param name=\"vertexStreamZeroStride\"><dd>  <p>The number of bytes of data for each vertex. This value may not be 0.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>This method is intended for use in applications that are unable to store their vertex data in vertex buffers. This method supports only a single vertex stream, which must be declared as stream 0.</p><p>Following any <strong><see cref=\"M:SharpDX.Direct3D9.Device.DrawIndexedPrimitiveUP(SharpDX.Direct3D9.PrimitiveType,System.Int32,System.Int32,System.Int32,System.IntPtr,SharpDX.Direct3D9.Format,System.IntPtr,System.Int32)\"/></strong> call, the stream 0 settings, referenced by <strong><see cref=\"M:SharpDX.Direct3D9.Device.GetStreamSource(System.Int32,SharpDX.Direct3D9.VertexBuffer@,System.Int32@,System.Int32@)\"/></strong>, are set to <strong><c>null</c></strong>. Also, the index buffer setting for <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetIndices(SharpDX.Direct3D9.IndexBuffer)\"/></strong> is set to <strong><c>null</c></strong>.</p><p>The vertex data passed to <strong><see cref=\"M:SharpDX.Direct3D9.Device.DrawIndexedPrimitiveUP(SharpDX.Direct3D9.PrimitiveType,System.Int32,System.Int32,System.Int32,System.IntPtr,SharpDX.Direct3D9.Format,System.IntPtr,System.Int32)\"/></strong> does not need to persist after the call. Direct3D completes its access to that data prior to returning from the call.</p><p>When converting a legacy application to Direct3D 9, you must add a call to either <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetVertexFormat(SharpDX.Direct3D9.VertexFormat)\"/></strong> to use the fixed function pipeline, or <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetVertexDeclaration(SharpDX.Direct3D9.VertexDeclaration)\"/></strong> to use a vertex shader before you make any Draw calls.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::DrawIndexedPrimitiveUP']/*\"/>\t\n            <msdn-id>bb174370</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::DrawIndexedPrimitiveUP([In] D3DPRIMITIVETYPE PrimitiveType,[In] unsigned int MinVertexIndex,[In] unsigned int NumVertices,[In] unsigned int PrimitiveCount,[In] const void* pIndexData,[In] D3DFORMAT IndexDataFormat,[In] const void* pVertexStreamZeroData,[In] unsigned int VertexStreamZeroStride)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::DrawIndexedPrimitiveUP</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.ProcessVertices(System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.VertexBuffer,SharpDX.Direct3D9.VertexDeclaration,SharpDX.Direct3D9.LockFlags)\">\n            <summary>\t\n            <p>Applies the vertex processing defined by the vertex shader to the set of input data streams, generating a single stream of interleaved vertex data to the destination vertex buffer. </p>\t\n            </summary>\t\n            <param name=\"srcStartIndex\"><dd>  <p>Index of first vertex to load. </p> </dd></param>\t\n            <param name=\"destIndex\"><dd>  <p>Index of first vertex in the destination vertex buffer into which the results are placed. </p> </dd></param>\t\n            <param name=\"vertexCount\"><dd>  <p>Number of vertices to process. </p> </dd></param>\t\n            <param name=\"destBufferRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.VertexBuffer\"/></strong> interface, the destination vertex buffer representing the stream of interleaved vertex data. </p> </dd></param>\t\n            <param name=\"vertexDeclRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.VertexDeclaration\"/></strong> interface that represents the output vertex data declaration. When vertex shader 3.0 or above is set as the current vertex shader, the output vertex declaration must be present.</p> </dd></param>\t\n            <param name=\"flags\"><dd>  <p>Processing options. Set this parameter to 0 for default processing. Set to D3DPV_DONOTCOPYDATA to prevent the system from copying vertex data not affected by the vertex operation into the destination buffer. The D3DPV_DONOTCOPYDATA value may be combined with one or more <see cref=\"T:SharpDX.Direct3D9.LockFlags\"/> values appropriate for the destination buffer.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>. </p></returns>\t\n            <remarks>\t\n            <p>The order of operations for this method is as follows:</p><ul> <li>Transform vertices to projection space using the world + view + projection matrix.</li> <li>Compute screen coordinates using viewport settings.</li> <li>If clipping is enabled, compute clipping codes and store them in an internal buffer, associated with the destination vertex buffer. If a vertex is inside the viewing frustum, its screen coordinates are computed. If the vertex is outside the viewing frustum, the vertex is stored in the destination vertex buffer in projection space coordinates.</li> <li>Other notes: The user does not have access to the internal clip code buffer. No clipping is done on triangles or any other primitives.</li> </ul><p>The destination vertex buffer, pDestBuffer, must be created with a nonzero FVF parameter in <strong><see cref=\"M:SharpDX.Direct3D9.Device.CreateVertexBuffer(System.Int32,SharpDX.Direct3D9.Usage,SharpDX.Direct3D9.VertexFormat,SharpDX.Direct3D9.Pool,SharpDX.Direct3D9.VertexBuffer,System.IntPtr)\"/></strong>. The FVF code specified during the call to the <strong><see cref=\"M:SharpDX.Direct3D9.Device.CreateVertexBuffer(System.Int32,SharpDX.Direct3D9.Usage,SharpDX.Direct3D9.VertexFormat,SharpDX.Direct3D9.Pool,SharpDX.Direct3D9.VertexBuffer,System.IntPtr)\"/></strong> method specifies the vertex elements present in the destination vertex buffer.</p><p>When Direct3D generates texture coordinates, or copies or transforms input texture coordinates, and the output texture coordinate format defines more texture coordinate components than Direct3D generates, Direct3D does not change these extra components.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::ProcessVertices']/*\"/>\t\n            <msdn-id>bb174424</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::ProcessVertices([In] unsigned int SrcStartIndex,[In] unsigned int DestIndex,[In] unsigned int VertexCount,[In] IDirect3DVertexBuffer9* pDestBuffer,[In] IDirect3DVertexDeclaration9* pVertexDecl,[In] D3DLOCK Flags)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::ProcessVertices</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.CreateVertexDeclaration(SharpDX.Direct3D9.VertexElement[],SharpDX.Direct3D9.VertexDeclaration)\">\n            <summary>\t\n            <p>Create a vertex shader declaration from the device and the vertex elements.</p>\t\n            </summary>\t\n            <param name=\"vertexElementsRef\"><dd>  <p>An array of <strong><see cref=\"T:SharpDX.Direct3D9.VertexElement\"/></strong> vertex elements.</p> </dd></param>\t\n            <param name=\"declOut\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.VertexDeclaration\"/></strong> reference that returns the created vertex shader declaration.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>See the Vertex Declaration (Direct3D 9) page for a detailed description of how to map vertex declarations between different versions of DirectX.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::CreateVertexDeclaration']/*\"/>\t\n            <msdn-id>bb174365</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::CreateVertexDeclaration([In, Buffer] const D3DVERTEXELEMENT9* pVertexElements,[Out, Fast] IDirect3DVertexDeclaration9** ppDecl)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::CreateVertexDeclaration</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.SetVertexDeclaration(SharpDX.Direct3D9.VertexDeclaration)\">\n            <summary>\t\n            <p>Sets a Vertex Declaration (Direct3D 9).</p>\t\n            </summary>\t\n            <param name=\"declRef\">No documentation.</param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. The return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>. </p></returns>\t\n            <remarks>\t\n            <p>A vertex declaration is an <see cref=\"T:SharpDX.Direct3D9.VertexDeclaration\"/> object that defines the data members of a vertex (i.e. texture coordinates, colors, normals, etc.). This data can be useful for implementing vertex shaders and pixel shaders.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::SetVertexDeclaration']/*\"/>\t\n            <msdn-id>bb174464</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::SetVertexDeclaration([In] IDirect3DVertexDeclaration9* pDecl)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::SetVertexDeclaration</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.GetVertexDeclaration(SharpDX.Direct3D9.VertexDeclaration@)\">\n            <summary>\t\n            <p>Gets a vertex shader declaration.</p>\t\n            </summary>\t\n            <param name=\"declOut\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.VertexDeclaration\"/></strong> object that is returned.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. The return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>. </p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::GetVertexDeclaration']/*\"/>\t\n            <msdn-id>bb174415</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::GetVertexDeclaration([Out] IDirect3DVertexDeclaration9** ppDecl)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::GetVertexDeclaration</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.SetVertexFormat(SharpDX.Direct3D9.VertexFormat)\">\n            <summary>\t\n            <p>Sets the current vertex stream declaration.</p>\t\n            </summary>\t\n            <param name=\"vertexFormat\"><dd>  <p>DWORD containing the fixed function vertex type. For more information, see <see cref=\"T:SharpDX.Direct3D9.VertexFormat\"/>.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>Here are the steps necessary to initialize and use vertices that have a position, diffuse and specular color, and texture coordinates:</p><ol> <li>Define the custom vertex type and FVF code.\t  <pre><code> struct LVertex\t\n            { FLOAT    x, y, z; <see cref=\"T:SharpDX.ColorBGRA\"/> specular, diffuse; FLOAT    tu, tv;\t\n            }; const DWORD VertexFVF = (<see cref=\"F:SharpDX.Direct3D9.VertexFormat.Position\"/> | <see cref=\"F:SharpDX.Direct3D9.VertexFormat.Diffuse\"/> | <see cref=\"F:SharpDX.Direct3D9.VertexFormat.Specular\"/> | <see cref=\"F:SharpDX.Direct3D9.VertexFormat.Texture1\"/> );\t\n            </code></pre>  </li> <li>Create a vertex buffer with enough room for four vertices using <strong><see cref=\"M:SharpDX.Direct3D9.Device.CreateVertexBuffer(System.Int32,SharpDX.Direct3D9.Usage,SharpDX.Direct3D9.VertexFormat,SharpDX.Direct3D9.Pool,SharpDX.Direct3D9.VertexBuffer,System.IntPtr)\"/></strong>.  <pre><code> g_d3dDevice-&gt;CreateVertexBuffer( 4*sizeof(LVertex),   <see cref=\"F:SharpDX.Direct3D9.Usage.WriteOnly\"/>, VertexFVF, <see cref=\"F:SharpDX.Direct3D9.Pool.Default\"/>, &amp;pBigSquareVB, <c>null</c> );\t\n            </code></pre>  </li> <li>Set the values for each vertex.  <pre><code> LVertex * v;\t\n            pBigSquareVB-&gt;Lock( 0, 0, (BYTE**)&amp;v, 0 ); v[0].x  = 0.0f;  v[0].y  = 10.0;  v[0].z  = 10.0f;\t\n            v[0].diffuse  = 0xffff0000;\t\n            v[0].specular = 0xff00ff00;\t\n            v[0].tu = 0.0f;  v[0].tv = 0.0f; v[1].x  = 0.0f;  v[1].y  = 0.0f;  v[1].z  = 10.0f;\t\n            v[1].diffuse  = 0xff00ff00;\t\n            v[1].specular = 0xff00ffff;\t\n            v[1].tu = 0.0f;  v[1].tv = 0.0f; v[2].x  = 10.0f; v[2].y  = 10.0f; v[2].z  = 10.0f;\t\n            v[2].diffuse  = 0xffff00ff;\t\n            v[2].specular = 0xff000000;\t\n            v[2].tu = 0.0f;  v[2].tv = 0.0f; v[3].x  = 0.0f; v[3].y  = 10.0f;  v[3].z = 10.0f;\t\n            v[3].diffuse  = 0xffffff00;\t\n            v[3].specular = 0xffff0000;\t\n            v[3].tu = 0.0f; v[3].tv = 0.0f; pBigSquareVB-&gt;Unlock();\t\n            </code></pre>  </li> <li>The vertex buffer has been initialized and is ready to render. The following code example shows how to use the legacy FVF to draw a square.  <pre><code> g_d3dDevice-&gt;SetFVF(VertexFVF);\t\n            g_d3dDevice-&gt;SetStreamSource(0, pBigSquareVB, 0, sizeof(LVertex));\t\n            g_d3dDevice-&gt;DrawPrimitive(<see cref=\"F:SharpDX.Direct3D9.PrimitiveType.TriangleStrip\"/>, 0 ,2);\t\n            </code></pre>  </li> </ol><p>Here are the steps necessary to initialize and use vertices that have a position, a normal, and texture coordinates:</p><ol> <li>Define the custom vertex type and FVF code. <pre><code> struct Vertex\t\n            { FLOAT x, y, z; FLOAT nx, ny, nz; FLOAT tu, tv;\t\n            }; const DWORD VertexFVF = ( <see cref=\"F:SharpDX.Direct3D9.VertexFormat.Position\"/> | <see cref=\"F:SharpDX.Direct3D9.VertexFormat.Normal\"/> | <see cref=\"F:SharpDX.Direct3D9.VertexFormat.Texture1\"/> );\t\n            </code></pre>  </li> <li>Create a vertex buffer with enough room for four vertices using <strong><see cref=\"M:SharpDX.Direct3D9.Device.CreateVertexBuffer(System.Int32,SharpDX.Direct3D9.Usage,SharpDX.Direct3D9.VertexFormat,SharpDX.Direct3D9.Pool,SharpDX.Direct3D9.VertexBuffer,System.IntPtr)\"/></strong> (similar to the example above).</li> <li>Set the values for each vertex.  <pre><code> Vertex * v;\t\n            pBigSquareVB-&gt;Lock(0, 0, (BYTE**)&amp;v, 0); v[0].x  = 0.0f;  v[0].y  = 10.0;  v[0].z  = 10.0f;\t\n            v[0].nx = 0.0f;  v[0].ny = 1.0f;  v[0].nz = 0.0f;\t\n            v[0].tu = 0.0f;  v[0].tv = 0.0f; v[1].x  = 0.0f;  v[1].y  = 0.0f;  v[1].z  = 10.0f;\t\n            v[1].nx = 0.0f;  v[1].ny = 1.0f;  v[1].nz = 0.0f;\t\n            v[1].tu = 0.0f;  v[1].tv = 0.0f; v[2].x  = 10.0f; v[2].y  = 10.0f; v[2].z  = 10.0f;\t\n            v[2].nx = 0.0f;  v[2].ny = 1.0f;  v[2].nz = 0.0f;\t\n            v[2].tu = 0.0f;  v[2].tv = 0.0f; v[3].x  = 0.0f; v[3].y  = 10.0f;  v[3].z = 10.0f;\t\n            v[3].nx = 0.0f; v[3].ny = 1.0f;   v[3].nz = 0.0f;\t\n            v[3].tu = 0.0f; v[3].tv = 0.0f; pBigSquareVB-&gt;Unlock();\t\n            </code></pre>  </li> <li>Draw the object (similar to the example above).</li> </ol>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::SetFVF']/*\"/>\t\n            <msdn-id>bb174433</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::SetFVF([In] D3DFVF FVF)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::SetFVF</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.GetVertexFormat(SharpDX.Direct3D9.VertexFormat@)\">\n            <summary>\t\n            <p>Gets the fixed vertex function declaration.</p>\t\n            </summary>\t\n            <param name=\"ertexFormatRef\"><dd>  <p>A DWORD reference to the fixed function vertex type. For more information, see <see cref=\"T:SharpDX.Direct3D9.VertexFormat\"/>.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>The fixed vertex function declaration is a set of FVF flags that determine how vertices processed by the fixed function pipeline will be used.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::GetFVF']/*\"/>\t\n            <msdn-id>bb174389</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::GetFVF([Out] D3DFVF* pFVF)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::GetFVF</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.CreateVertexShader(System.IntPtr,SharpDX.Direct3D9.VertexShader)\">\n            <summary>\t\n            <p>Creates a vertex shader.</p>\t\n            </summary>\t\n            <param name=\"functionRef\"><dd>  <p>Pointer to an array of tokens that represents the vertex shader, including any embedded debug and symbol table information.  </p> <ul> <li>Use a function such as <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.CompileShader(System.IntPtr,System.Int32,SharpDX.Direct3D9.Macro[],System.IntPtr,System.String,System.String,System.Int32,SharpDX.Direct3D.Blob@,SharpDX.Direct3D.Blob@,SharpDX.Direct3D9.ConstantTable@)\"/></strong> to create the array from a HLSL shader.</li> <li>Use a function like <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.AssembleShader(System.IntPtr,System.Int32,SharpDX.Direct3D9.Macro[],System.IntPtr,System.Int32,SharpDX.Direct3D.Blob@,SharpDX.Direct3D.Blob@)\"/></strong> to create the token array from an assembly language shader.</li> <li>Use a function like <strong><see cref=\"M:SharpDX.Direct3D9.EffectCompiler.CompileShader(SharpDX.Direct3D9.EffectHandle,System.String,SharpDX.Direct3D9.ShaderFlags)\"/></strong> to create the array from an effect.</li> </ul> </dd></param>\t\n            <param name=\"shaderOut\"><dd>  <p>Pointer to the returned vertex shader interface (see <strong><see cref=\"T:SharpDX.Direct3D9.VertexShader\"/></strong>).</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.OutOfVideoMemory\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>When a device is created, <strong><see cref=\"M:SharpDX.Direct3D9.Direct3D.CreateDevice(System.Int32,SharpDX.Direct3D9.DeviceType,System.IntPtr,SharpDX.Direct3D9.CreateFlags,SharpDX.Direct3D9.PresentParameters[],SharpDX.Direct3D9.Device)\"/></strong> uses the behavior flag to determine whether to process vertices in hardware or software. There are three possibilities:</p><ul> <li>Process vertices in hardware by setting <see cref=\"F:SharpDX.Direct3D9.CreateFlags.HardwareVertexProcessing\"/>.</li> <li>Process vertices in software by setting <see cref=\"F:SharpDX.Direct3D9.CreateFlags.SoftwareVertexProcessing\"/>.</li> <li>Process vertices in either hardware or software by setting <see cref=\"F:SharpDX.Direct3D9.CreateFlags.MixedVertexProcessing\"/>. To switch a mixed-mode device between software and hardware processing, use <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetSoftwareVertexProcessing(SharpDX.Bool)\"/></strong>.</li> </ul><p>For an example using <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.CompileShader(System.IntPtr,System.Int32,SharpDX.Direct3D9.Macro[],System.IntPtr,System.String,System.String,System.Int32,SharpDX.Direct3D.Blob@,SharpDX.Direct3D.Blob@,SharpDX.Direct3D9.ConstantTable@)\"/></strong>, see HLSLwithoutEffects Sample.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::CreateVertexShader']/*\"/>\t\n            <msdn-id>bb174366</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::CreateVertexShader([In] const void* pFunction,[Out, Fast] IDirect3DVertexShader9** ppShader)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::CreateVertexShader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.SetVertexShader(SharpDX.Direct3D9.VertexShader)\">\n            <summary>\t\n            <p>Sets the vertex shader.</p>\t\n            </summary>\t\n            <param name=\"shaderRef\"><dd>  <p>Vertex shader interface. For more information, see <strong><see cref=\"T:SharpDX.Direct3D9.VertexShader\"/></strong>.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>. </p></returns>\t\n            <remarks>\t\n            <p>To set a fixed-function vertex shader (after having set a programmable vertex shader), call <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetVertexShader(SharpDX.Direct3D9.VertexShader)\"/></strong>(<c>null</c>) to release the programmable shader, and then call <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetVertexFormat(SharpDX.Direct3D9.VertexFormat)\"/></strong> with the fixed-function vertex format.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::SetVertexShader']/*\"/>\t\n            <msdn-id>bb174465</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::SetVertexShader([In] IDirect3DVertexShader9* pShader)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::SetVertexShader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.GetVertexShader(SharpDX.Direct3D9.VertexShader@)\">\n            <summary>\t\n            <p>Retrieves the currently set vertex shader.</p>\t\n            </summary>\t\n            <param name=\"shaderOut\"><dd>  <p>Pointer to a vertex shader interface.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If ppShader is invalid, <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/> is returned. </p></returns>\t\n            <remarks>\t\n            <p>Typically, methods that return state will not work on a device that is created using <see cref=\"F:SharpDX.Direct3D9.CreateFlags.PureDevice\"/>. This method however, will work even on a pure device because it returns an interface.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::GetVertexShader']/*\"/>\t\n            <msdn-id>bb174416</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::GetVertexShader([Out] IDirect3DVertexShader9** ppShader)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::GetVertexShader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.SetVertexShaderConstantF(System.Int32,System.IntPtr,System.Int32)\">\n            <summary>\t\n            <p>Sets a floating-point vertex shader constant.</p>\t\n            </summary>\t\n            <param name=\"startRegister\"><dd>  <p>Register number that will contain the first constant value.</p> </dd></param>\t\n            <param name=\"constantDataRef\"><dd>  <p>Pointer to an array of constants.</p> </dd></param>\t\n            <param name=\"vector4fCount\"><dd>  <p>Number of four float vectors in the array of constants.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::SetVertexShaderConstantF']/*\"/>\t\n            <msdn-id>bb174467</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::SetVertexShaderConstantF([In] unsigned int StartRegister,[In] const void* pConstantData,[In] unsigned int Vector4fCount)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::SetVertexShaderConstantF</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.GetVertexShaderConstantF(System.Int32,System.Single[],System.Int32)\">\n            <summary>\t\n            <p>Gets a floating-point vertex shader constant.</p>\t\n            </summary>\t\n            <param name=\"startRegister\"><dd>  <p>Register number that will contain the first constant value.</p> </dd></param>\t\n            <param name=\"constantDataRef\"><dd>  <p>Pointer to an array of constants.</p> </dd></param>\t\n            <param name=\"vector4fCount\"><dd>  <p>Number of four float vectors in the array of constants.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::GetVertexShaderConstantF']/*\"/>\t\n            <msdn-id>bb174418</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::GetVertexShaderConstantF([In] unsigned int StartRegister,[In, Buffer] float* pConstantData,[In] unsigned int Vector4fCount)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::GetVertexShaderConstantF</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.SetVertexShaderConstantI(System.Int32,System.IntPtr,System.Int32)\">\n            <summary>\t\n            <p>Sets an integer vertex shader constant.</p>\t\n            </summary>\t\n            <param name=\"startRegister\"><dd>  <p>Register number that will contain the first constant value.</p> </dd></param>\t\n            <param name=\"constantDataRef\"><dd>  <p>Pointer to an array of constants.</p> </dd></param>\t\n            <param name=\"vector4iCount\"><dd>  <p>Number of four integer vectors in the array of constants.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::SetVertexShaderConstantI']/*\"/>\t\n            <msdn-id>bb174468</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::SetVertexShaderConstantI([In] unsigned int StartRegister,[In] const void* pConstantData,[In] unsigned int Vector4iCount)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::SetVertexShaderConstantI</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.GetVertexShaderConstantI(System.Int32,System.Int32[],System.Int32)\">\n            <summary>\t\n            <p>Gets an integer vertex shader constant.</p>\t\n            </summary>\t\n            <param name=\"startRegister\"><dd>  <p>Register number that will contain the first constant value.</p> </dd></param>\t\n            <param name=\"constantDataRef\"><dd>  <p>Pointer to an array of constants.</p> </dd></param>\t\n            <param name=\"vector4iCount\"><dd>  <p>Number of four integer vectors in the array of constants.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::GetVertexShaderConstantI']/*\"/>\t\n            <msdn-id>bb174419</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::GetVertexShaderConstantI([In] unsigned int StartRegister,[In, Buffer] int* pConstantData,[In] unsigned int Vector4iCount)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::GetVertexShaderConstantI</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.SetVertexShaderConstantB(System.Int32,System.IntPtr,System.Int32)\">\n            <summary>\t\n            <p>Sets a Boolean vertex shader constant.</p>\t\n            </summary>\t\n            <param name=\"startRegister\"><dd>  <p>Register number that will contain the first constant value.</p> </dd></param>\t\n            <param name=\"constantDataRef\"><dd>  <p>Pointer to an array of constants.</p> </dd></param>\t\n            <param name=\"boolCount\"><dd>  <p>Number of boolean values in the array of constants.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::SetVertexShaderConstantB']/*\"/>\t\n            <msdn-id>bb174466</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::SetVertexShaderConstantB([In] unsigned int StartRegister,[In] const void* pConstantData,[In] unsigned int BoolCount)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::SetVertexShaderConstantB</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.GetVertexShaderConstantB(System.Int32,System.IntPtr,System.Int32)\">\n            <summary>\t\n            <p>Gets a Boolean vertex shader constant.</p>\t\n            </summary>\t\n            <param name=\"startRegister\"><dd>  <p>Register number that will contain the first constant value.</p> </dd></param>\t\n            <param name=\"constantDataRef\"><dd>  <p>Pointer to an array of constants.</p> </dd></param>\t\n            <param name=\"boolCount\"><dd>  <p>Number of Boolean values in the array of constants.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::GetVertexShaderConstantB']/*\"/>\t\n            <msdn-id>bb174417</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::GetVertexShaderConstantB([In] unsigned int StartRegister,[In] void* pConstantData,[In] unsigned int BoolCount)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::GetVertexShaderConstantB</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.SetStreamSource(System.Int32,SharpDX.Direct3D9.VertexBuffer,System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Binds a vertex buffer to a device data stream. For more information, see Setting the Stream Source (Direct3D 9).</p>\t\n            </summary>\t\n            <param name=\"streamNumber\">No documentation.</param>\t\n            <param name=\"streamDataRef\">No documentation.</param>\t\n            <param name=\"offsetInBytes\">No documentation.</param>\t\n            <param name=\"stride\">No documentation.</param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>. </p></returns>\t\n            <remarks>\t\n            <p>When a FVF vertex shader is used, the stride of the vertex stream must match the vertex size, computed from the FVF. When a declaration is used, the stride should be greater than or equal to the stream size computed from the declaration.</p><p>When calling SetStreamSource, the stride is normally required to be equal to the vertex size. However, there are times when you may want to draw multiple instances of the same or similar geometry (such as when using instancing to draw). For this case, use a zero stride to tell the runtime not to increment the vertex buffer offset (ie: use the same vertex data for all instances). For more information about instancing, see Efficiently Drawing Multiple Instances of Geometry (Direct3D 9).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::SetStreamSource']/*\"/>\t\n            <msdn-id>bb174459</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::SetStreamSource([In] unsigned int StreamNumber,[In] IDirect3DVertexBuffer9* pStreamData,[In] unsigned int OffsetInBytes,[In] unsigned int Stride)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::SetStreamSource</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.GetStreamSource(System.Int32,SharpDX.Direct3D9.VertexBuffer@,System.Int32@,System.Int32@)\">\n            <summary>\t\n            <p>Retrieves a vertex buffer bound to the specified data stream.</p>\t\n            </summary>\t\n            <param name=\"streamNumber\"><dd>  <p>Specifies the data stream, in the range from 0 to the maximum number of streams minus one. </p> </dd></param>\t\n            <param name=\"streamDataOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D9.VertexBuffer\"/></strong> interface, representing the returned vertex buffer bound to the specified data stream. </p> </dd></param>\t\n            <param name=\"offsetInBytesRef\"><dd>  <p>Pointer containing the offset from the beginning of the stream to the beginning of the vertex data. The offset is measured in bytes. See Remarks.</p> </dd></param>\t\n            <param name=\"strideRef\"><dd>  <p>Pointer to a returned stride of the component, in bytes. See Remarks. </p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>. </p></returns>\t\n            <remarks>\t\n            <p>A stream is defined as a uniform array of component data, where each component consists of one or more elements representing a single entity such as position, normal, color, and so on.</p><p>When a FVF vertex shader is used, the stride of the vertex stream must match the vertex size, computed from the FVF. When a declaration is used, the stride should be greater than or equal to the stream size computed from the declaration.</p><p> Calling this method will increase the internal reference count on the <strong><see cref=\"T:SharpDX.Direct3D9.VertexBuffer\"/></strong> interface. Failure to call <strong>IUnknown::Release</strong> when finished using this <strong><see cref=\"T:SharpDX.Direct3D9.VertexBuffer\"/></strong> interface results in a memory leak.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::GetStreamSource']/*\"/>\t\n            <msdn-id>bb174409</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::GetStreamSource([In] unsigned int StreamNumber,[Out] IDirect3DVertexBuffer9** ppStreamData,[Out] unsigned int* pOffsetInBytes,[Out] unsigned int* pStride)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::GetStreamSource</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.SetStreamSourceFrequency(System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Sets the stream source frequency divider value. This may be used to draw several instances of geometry.</p>\t\n            </summary>\t\n            <param name=\"streamNumber\"><dd>  <p>Stream source number.</p> </dd></param>\t\n            <param name=\"setting\"><dd>  <p>This parameter may have two different values. See remarks.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>. </p></returns>\t\n            <remarks>\t\n            <p>There are two constants defined in d3d9types.h that are designed to use with SetStreamSourceFreq: <see cref=\"F:SharpDX.Direct3D9.StreamSource.IndexedData\"/> and <see cref=\"F:SharpDX.Direct3D9.StreamSource.InstanceData\"/>. To see how to use the constants, see Efficiently Drawing Multiple Instances of Geometry (Direct3D 9).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::SetStreamSourceFreq']/*\"/>\t\n            <msdn-id>bb174460</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::SetStreamSourceFreq([In] unsigned int StreamNumber,[In] unsigned int Setting)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::SetStreamSourceFreq</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.GetStreamSourceFrequency(System.Int32,System.Int32@)\">\n            <summary>\t\n            <p>Gets the stream source frequency divider value.</p>\t\n            </summary>\t\n            <param name=\"streamNumber\"><dd>  <p>Stream source number.</p> </dd></param>\t\n            <param name=\"settingRef\"><dd>  <p>Returns the frequency divider value.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>. </p></returns>\t\n            <remarks>\t\n            <p>Vertex shaders can now be invoked more than once per vertex. See Drawing Non-Indexed Geometry.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::GetStreamSourceFreq']/*\"/>\t\n            <msdn-id>bb174410</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::GetStreamSourceFreq([In] unsigned int StreamNumber,[Out] unsigned int* pSetting)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::GetStreamSourceFreq</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.SetIndices(SharpDX.Direct3D9.IndexBuffer)\">\n            <summary>\t\n            <p>Sets index data.</p>\t\n            </summary>\t\n            <param name=\"indexDataRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.IndexBuffer\"/></strong> interface, representing the index data to be set. </p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>When an application no longer holds a references to this interface, the interface will automatically be freed.</p><p>The <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetIndices(SharpDX.Direct3D9.IndexBuffer)\"/></strong> method sets the current index array to an index buffer. The single set of indices is used to index all streams. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::SetIndices']/*\"/>\t\n            <msdn-id>bb174435</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::SetIndices([In] IDirect3DIndexBuffer9* pIndexData)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::SetIndices</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.GetIndices(SharpDX.Direct3D9.IndexBuffer@)\">\n            <summary>\t\n            <p>Retrieves index data.</p>\t\n            </summary>\t\n            <param name=\"indexDataOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D9.IndexBuffer\"/></strong> interface, representing the returned index data. </p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>. </p></returns>\t\n            <remarks>\t\n            <p> Calling this method will increase the internal reference count on the <strong><see cref=\"T:SharpDX.Direct3D9.IndexBuffer\"/></strong> interface. Failure to call <strong>IUnknown::Release</strong> when finished using this <strong><see cref=\"T:SharpDX.Direct3D9.IndexBuffer\"/></strong> interface results in a memory leak.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::GetIndices']/*\"/>\t\n            <msdn-id>bb174391</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::GetIndices([Out] IDirect3DIndexBuffer9** ppIndexData)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::GetIndices</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.CreatePixelShader(System.IntPtr,SharpDX.Direct3D9.PixelShader)\">\n            <summary>\t\n            <p>Creates a pixel shader.</p>\t\n            </summary>\t\n            <param name=\"functionRef\"><dd>  <p>Pointer to the pixel shader function token array, specifying the blending operations. This value cannot be <strong><c>null</c></strong>. </p> </dd></param>\t\n            <param name=\"shaderOut\"><dd>  <p>Pointer to the returned pixel shader interface. See <strong><see cref=\"T:SharpDX.Direct3D9.PixelShader\"/></strong>.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.OutOfVideoMemory\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::CreatePixelShader']/*\"/>\t\n            <msdn-id>bb174359</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::CreatePixelShader([In] const void* pFunction,[Out, Fast] IDirect3DPixelShader9** ppShader)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::CreatePixelShader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.SetPixelShader(SharpDX.Direct3D9.PixelShader)\">\n            <summary>\t\n            <p>Sets the current pixel shader to a previously created pixel shader.</p>\t\n            </summary>\t\n            <param name=\"shaderRef\"><dd>  <p>Pixel shader interface.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>. </p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::SetPixelShader']/*\"/>\t\n            <msdn-id>bb174450</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::SetPixelShader([In] IDirect3DPixelShader9* pShader)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::SetPixelShader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.GetPixelShader(SharpDX.Direct3D9.PixelShader@)\">\n            <summary>\t\n            <p>Retrieves the currently set pixel shader.</p>\t\n            </summary>\t\n            <param name=\"shaderOut\"><dd>  <p>Pointer to a pixel shader interface.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>. </p></returns>\t\n            <remarks>\t\n            <p>This method will not work on a device that is created using <see cref=\"F:SharpDX.Direct3D9.CreateFlags.PureDevice\"/>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::GetPixelShader']/*\"/>\t\n            <msdn-id>bb174398</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::GetPixelShader([Out] IDirect3DPixelShader9** ppShader)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::GetPixelShader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.SetPixelShaderConstantF(System.Int32,System.IntPtr,System.Int32)\">\n            <summary>\t\n            <p>Sets a floating-point shader constant.</p>\t\n            </summary>\t\n            <param name=\"startRegister\"><dd>  <p>Register number that will contain the first constant value.</p> </dd></param>\t\n            <param name=\"constantDataRef\"><dd>  <p>Pointer to an array of constants.</p> </dd></param>\t\n            <param name=\"vector4fCount\"><dd>  <p>Number of four float vectors in the array of constants.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::SetPixelShaderConstantF']/*\"/>\t\n            <msdn-id>Bb174452</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::SetPixelShaderConstantF([In] unsigned int StartRegister,[In] const void* pConstantData,[In] unsigned int Vector4fCount)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::SetPixelShaderConstantF</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.GetPixelShaderConstantF(System.Int32,System.Single[],System.Int32)\">\n            <summary>\t\n            <p>Gets a floating-point shader constant.</p>\t\n            </summary>\t\n            <param name=\"startRegister\"><dd>  <p>Register number that will contain the first constant value.</p> </dd></param>\t\n            <param name=\"constantDataRef\"><dd>  <p>Pointer to an array of constants.</p> </dd></param>\t\n            <param name=\"vector4fCount\"><dd>  <p>Number of four float vectors in the array of constants.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::GetPixelShaderConstantF']/*\"/>\t\n            <msdn-id>bb174400</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::GetPixelShaderConstantF([In] unsigned int StartRegister,[In, Buffer] float* pConstantData,[In] unsigned int Vector4fCount)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::GetPixelShaderConstantF</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.SetPixelShaderConstantI(System.Int32,System.IntPtr,System.Int32)\">\n            <summary>\t\n            <p>Sets an integer shader constant.</p>\t\n            </summary>\t\n            <param name=\"startRegister\"><dd>  <p>Register number that will contain the first constant value.</p> </dd></param>\t\n            <param name=\"constantDataRef\"><dd>  <p>Pointer to an array of constants.</p> </dd></param>\t\n            <param name=\"vector4iCount\"><dd>  <p>Number of four integer vectors in the array of constants.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::SetPixelShaderConstantI']/*\"/>\t\n            <msdn-id>bb174453</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::SetPixelShaderConstantI([In] unsigned int StartRegister,[In] const void* pConstantData,[In] unsigned int Vector4iCount)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::SetPixelShaderConstantI</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.GetPixelShaderConstantI(System.Int32,System.Int32[],System.Int32)\">\n            <summary>\t\n            <p>Gets an integer shader constant.</p>\t\n            </summary>\t\n            <param name=\"startRegister\"><dd>  <p>Register number that will contain the first constant value.</p> </dd></param>\t\n            <param name=\"constantDataRef\"><dd>  <p>Pointer to an array of constants.</p> </dd></param>\t\n            <param name=\"vector4iCount\"><dd>  <p>Number of four integer vectors in the array of constants.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::GetPixelShaderConstantI']/*\"/>\t\n            <msdn-id>bb174401</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::GetPixelShaderConstantI([In] unsigned int StartRegister,[In, Buffer] int* pConstantData,[In] unsigned int Vector4iCount)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::GetPixelShaderConstantI</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.SetPixelShaderConstantB(System.Int32,System.IntPtr,System.Int32)\">\n            <summary>\t\n            <p>Sets a Boolean shader constant.</p>\t\n            </summary>\t\n            <param name=\"startRegister\"><dd>  <p>Register number that will contain the first constant value.</p> </dd></param>\t\n            <param name=\"constantDataRef\"><dd>  <p>Pointer to an array of constants.</p> </dd></param>\t\n            <param name=\"boolCount\"><dd>  <p>Number of boolean values in the array of constants.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::SetPixelShaderConstantB']/*\"/>\t\n            <msdn-id>bb174451</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::SetPixelShaderConstantB([In] unsigned int StartRegister,[In] const void* pConstantData,[In] unsigned int BoolCount)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::SetPixelShaderConstantB</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.GetPixelShaderConstantB(System.Int32,System.IntPtr,System.Int32)\">\n            <summary>\t\n            <p>Gets a Boolean shader constant.</p>\t\n            </summary>\t\n            <param name=\"startRegister\"><dd>  <p>Register number that will contain the first constant value.</p> </dd></param>\t\n            <param name=\"constantDataRef\"><dd>  <p>Pointer to an array of constants.</p> </dd></param>\t\n            <param name=\"boolCount\"><dd>  <p>Number of Boolean values in the array of constants.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::GetPixelShaderConstantB']/*\"/>\t\n            <msdn-id>bb174399</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::GetPixelShaderConstantB([In] unsigned int StartRegister,[In] void* pConstantData,[In] unsigned int BoolCount)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::GetPixelShaderConstantB</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.DrawRectanglePatch(System.Int32,System.Single[],System.IntPtr)\">\n            <summary>\t\n            <p>Draws a rectangular patch using the currently set streams.</p>\t\n            </summary>\t\n            <param name=\"handle\"><dd>  <p>Handle to the rectangular patch to draw. </p> </dd></param>\t\n            <param name=\"numSegsRef\"><dd>  <p>Pointer to an array of four floating-point values that identify the number of segments each edge of the rectangle patch should be divided into when tessellated. See <strong><see cref=\"T:SharpDX.Direct3D9.RectanglePatchInfo\"/></strong>. </p> </dd></param>\t\n            <param name=\"rectPatchInfoRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.RectanglePatchInfo\"/></strong> structure, describing the rectangular patch to draw. </p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be  <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>For static patches: Set the vertex shader, set the appropriate streams, supply patch information in the pRectPatchInfo parameter, and specify a handle so that Direct3D can capture and cache information. Call <strong><see cref=\"M:SharpDX.Direct3D9.Device.DrawRectanglePatch(System.Int32,System.Single[])\"/></strong> subsequently with pRectPatchInfo set to <strong><c>null</c></strong> to efficiently draw the patch. When drawing a cached patch, the currently set streams are ignored. Override the cached pNumSegs by specifying a new value for pNumSegs. When rendering a cached patch, you must set the same vertex shader that was set when it was captured.</p><p>Calling <strong><see cref=\"M:SharpDX.Direct3D9.Device.DrawRectanglePatch(System.Int32,System.Single[])\"/></strong> with a handle invalidates the same handle cached by a previous <strong><see cref=\"M:SharpDX.Direct3D9.Device.DrawTrianglePatch(System.Int32,System.Single[])\"/></strong> call.</p><p>For dynamic patches, the patch data changes for every rendering of the patch, so it is not efficient to cache information. The application can convey this to Direct3D by setting Handle to 0. In this case, Direct3D draws the patch using the currently set streams and the pNumSegs values, and does not cache any information. It is not valid to simultaneously set Handle to 0 and pRectPatchInfo to <strong><c>null</c></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::DrawRectPatch']/*\"/>\t\n            <msdn-id>bb174373</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::DrawRectPatch([In] unsigned int Handle,[In, Buffer] const float* pNumSegs,[In] const void* pRectPatchInfo)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::DrawRectPatch</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.DrawTrianglePatch(System.Int32,System.Single[],System.IntPtr)\">\n            <summary>\t\n            <p>Draws a triangular patch using the currently set streams.</p>\t\n            </summary>\t\n            <param name=\"handle\"><dd>  <p>Handle to the triangular patch to draw. </p> </dd></param>\t\n            <param name=\"numSegsRef\"><dd>  <p>Pointer to an array of three floating-point values that identify the number of segments each edge of the triangle patch should be divided into when tessellated. See <strong><see cref=\"T:SharpDX.Direct3D9.TrianglePatchInfo\"/></strong>. </p> </dd></param>\t\n            <param name=\"triPatchInfoRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.TrianglePatchInfo\"/></strong> structure, describing the triangular high-order patch to draw. </p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be  <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>For static patches: Set the vertex shader, set the appropriate streams, supply patch information in the pTriPatchInfo parameter, and specify a handle so that Direct3D can capture and cache information. To efficiently draw the patch, call <strong><see cref=\"M:SharpDX.Direct3D9.Device.DrawTrianglePatch(System.Int32,System.Single[])\"/></strong> with pTriPatchInfo set to <strong><c>null</c></strong>. When drawing a cached patch, the currently set streams are ignored. Override the cached pNumSegs by specifying a new value for pNumSegs. When rendering a cached patch, you must set the same vertex shader that was set when it was captured.</p><p>Calling <strong><see cref=\"M:SharpDX.Direct3D9.Device.DrawTrianglePatch(System.Int32,System.Single[])\"/></strong> with a handle invalidates the same handle cached by a previous <strong><see cref=\"M:SharpDX.Direct3D9.Device.DrawRectanglePatch(System.Int32,System.Single[])\"/></strong> call.</p><p>For dynamic patches, the patch data changes for every rendering of the patch so it is not efficient to cache information. The application can convey this to Direct3D by setting Handle to 0. In this case, Direct3D draws the patch using the currently set streams and the pNumSegs values, and does not cache any information. It is not valid to simultaneously set Handle to 0 and pTriPatchInfo to <strong><c>null</c></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::DrawTriPatch']/*\"/>\t\n            <msdn-id>bb174374</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::DrawTriPatch([In] unsigned int Handle,[In, Buffer] const float* pNumSegs,[In] const void* pTriPatchInfo)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::DrawTriPatch</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.DeletePatch(System.Int32)\">\n            <summary>\t\n            <p>Frees a cached high-order patch.</p>\t\n            </summary>\t\n            <param name=\"handle\"><dd>  <p>Handle of the cached high-order patch to delete. </p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be  <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::DeletePatch']/*\"/>\t\n            <msdn-id>bb174368</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::DeletePatch([In] unsigned int Handle)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::DeletePatch</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Device.CreateQuery(SharpDX.Direct3D9.QueryType,SharpDX.Direct3D9.Query)\">\n            <summary>\t\n            <p>Creates a status query.</p>\t\n            </summary>\t\n            <param name=\"type\"><dd>  <p>Identifies the query type. For more information, see <strong><see cref=\"T:SharpDX.Direct3D9.QueryType\"/></strong>.</p> </dd></param>\t\n            <param name=\"queryOut\"><dd>  <p>Returns a reference to the query interface that manages the query object. See <strong><see cref=\"T:SharpDX.Direct3D9.Query\"/></strong>. </p> <p>This parameter can be set to <strong><c>null</c></strong> to see if a query is supported. If the query is not supported, the method returns <see cref=\"F:SharpDX.Direct3D9.ResultCode.NotAvailable\"/>.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.NotAvailable\"/> or  E_OUTOFMEMORY. </p></returns>\t\n            <remarks>\t\n            <p>This method is provided for both synchronous and asynchronous queries. It takes the place of GetInfo, which is no longer supported in Direct3D 9.</p><p>Synchronous and asynchronous queries are created with <strong><see cref=\"M:SharpDX.Direct3D9.Device.CreateQuery(SharpDX.Direct3D9.QueryType,SharpDX.Direct3D9.Query)\"/></strong> with <strong><see cref=\"T:SharpDX.Direct3D9.QueryType\"/></strong>. When a query has been created and the API calls have been made that are being queried, use <strong><see cref=\"M:SharpDX.Direct3D9.Query.Issue(SharpDX.Direct3D9.Issue)\"/></strong> to issue a query and  <strong><see cref=\"M:SharpDX.Direct3D9.Query.GetData(System.IntPtr,System.Int32,System.Int32)\"/></strong> to get the results of the query.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::CreateQuery']/*\"/>\t\n            <msdn-id>bb174360</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::CreateQuery([In] D3DQUERYTYPE Type,[Out, Fast] IDirect3DQuery9** ppQuery)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::CreateQuery</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.Device.AvailableTextureMemory\">\n            <summary>\n            Gets the available texture memory.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.Device.DriverLevel\">\n            <summary>\n            Gets the driver level.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.Device.PixelShaderProfile\">\n            <summary>\n            Gets the pixel shader profile.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.Device.VertexShaderProfile\">\n            <summary>\n            Gets the vertex shader profile.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.Device.ShowCursor\">\n            <summary>\n            Gets or sets a value indicating whether the cursor can be displayed.\n            </summary>\n            <value>\n            <c>true</c> if the cursor can be displayed; otherwise, <c>false</c>.\n            </value>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.Device.Direct3D\">\n            <summary>\t\n            <p>Returns an interface to the instance of the Direct3D object that created the device.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Calling <strong><see cref=\"M:SharpDX.Direct3D9.Device.GetDirect3D(SharpDX.Direct3D9.Direct3D@)\"/></strong> will increase the internal reference count on the <strong><see cref=\"T:SharpDX.Direct3D9.Direct3D\"/></strong> interface. Failure to call <strong>IUnknown::Release</strong> when finished using this <strong><see cref=\"T:SharpDX.Direct3D9.Direct3D\"/></strong> interface results in a memory leak.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::GetDirect3D']/*\"/>\t\n            <msdn-id>bb174386</msdn-id>\t\n            <unmanaged>GetDirect3D</unmanaged>\t\n            <unmanaged-short>GetDirect3D</unmanaged-short>\t\n            <unmanaged>HRESULT IDirect3DDevice9::GetDirect3D([Out] IDirect3D9** ppD3D9)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.Device.Capabilities\">\n            <summary>\t\n            <p>Retrieves the capabilities of the rendering device.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p><strong><see cref=\"M:SharpDX.Direct3D9.Device.GetCapabilities(SharpDX.Direct3D9.Capabilities@)\"/></strong> retrieves the software vertex pipeline capabilities when the device is being used in software vertex processing mode.  </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::GetDeviceCaps']/*\"/>\t\n            <msdn-id>bb174385</msdn-id>\t\n            <unmanaged>GetDeviceCaps</unmanaged>\t\n            <unmanaged-short>GetDeviceCaps</unmanaged-short>\t\n            <unmanaged>HRESULT IDirect3DDevice9::GetDeviceCaps([Out] D3DCAPS9* pCaps)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.Device.CreationParameters\">\n            <summary>\t\n            <p>Retrieves the creation parameters of the device.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>You can query the AdapterOrdinal member of the returned <strong><see cref=\"T:SharpDX.Direct3D9.CreationParameters\"/></strong> structure to retrieve the ordinal of the adapter represented by this device. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::GetCreationParameters']/*\"/>\t\n            <msdn-id>bb174382</msdn-id>\t\n            <unmanaged>GetCreationParameters</unmanaged>\t\n            <unmanaged-short>GetCreationParameters</unmanaged-short>\t\n            <unmanaged>HRESULT IDirect3DDevice9::GetCreationParameters([Out] D3DDEVICE_CREATION_PARAMETERS* pParameters)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.Device.SwapChainCount\">\n            <summary>\t\n            <p>Gets the number of implicit swap chains.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Implicit swap chains are created by the device during <strong><see cref=\"M:SharpDX.Direct3D9.Direct3D.CreateDevice(System.Int32,SharpDX.Direct3D9.DeviceType,System.IntPtr,SharpDX.Direct3D9.CreateFlags,SharpDX.Direct3D9.PresentParameters[],SharpDX.Direct3D9.Device)\"/></strong>. This method returns the number of swap chains created by CreateDevice.  </p><p>An application may create additional swap chains using <strong><see cref=\"M:SharpDX.Direct3D9.Device.CreateAdditionalSwapChain(SharpDX.Direct3D9.PresentParameters@,SharpDX.Direct3D9.SwapChain)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::GetNumberOfSwapChains']/*\"/>\t\n            <msdn-id>bb174396</msdn-id>\t\n            <unmanaged>GetNumberOfSwapChains</unmanaged>\t\n            <unmanaged-short>GetNumberOfSwapChains</unmanaged-short>\t\n            <unmanaged>unsigned int IDirect3DDevice9::GetNumberOfSwapChains()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.Device.DialogBoxMode\">\n            <summary>\t\n            <p>This method allows the use of GDI dialog boxes in full-screen mode applications.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The GDI dialog boxes must be created as child to the device window. They should also be created within the same thread that created the device because this enables the parent window to manage redrawing the child window.</p><p>The method has no effect for windowed mode applications, but this setting will be respected if the application resets the device into full-screen mode. If SetDialogBoxMode succeeds in a windowed mode application, any subsequent reset to full-screen mode will be checked against the restrictions listed above.  Also, SetDialogBoxMode causes all back buffers on the swap chain to be discarded, so an application is expected to refresh its content for all back buffers after this call.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::SetDialogBoxMode']/*\"/>\t\n            <msdn-id>bb174432</msdn-id>\t\n            <unmanaged>SetDialogBoxMode</unmanaged>\t\n            <unmanaged-short>SetDialogBoxMode</unmanaged-short>\t\n            <unmanaged>HRESULT IDirect3DDevice9::SetDialogBoxMode([In] BOOL bEnableDialogs)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.Device.DepthStencilSurface\">\n            <summary>\t\n            <p>Gets or sets the depth-stencil surface owned by the Direct3DDevice object.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Calling this method will increase the internal reference count on the <strong><see cref=\"T:SharpDX.Direct3D9.Surface\"/></strong> interface. Failure to call <strong>IUnknown::Release</strong> when finished using this <strong><see cref=\"T:SharpDX.Direct3D9.Surface\"/></strong> interface results in a memory leak.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::GetDepthStencilSurface']/*\"/>\t\n            <msdn-id>bb174384</msdn-id>\t\n            <unmanaged>GetDepthStencilSurface / SetDepthStencilSurface</unmanaged>\t\n            <unmanaged-short>GetDepthStencilSurface</unmanaged-short>\t\n            <unmanaged>HRESULT IDirect3DDevice9::GetDepthStencilSurface([Out] IDirect3DSurface9** ppZStencilSurface)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.Device.Viewport\">\n            <summary>\t\n            <p>Retrieves or sets the viewport parameters currently set for the device.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Typically, methods that return state will not work on a device that is created using <see cref=\"F:SharpDX.Direct3D9.CreateFlags.PureDevice\"/>. This method however, will work even on a pure device.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::GetViewport']/*\"/>\t\n            <msdn-id>bb174420</msdn-id>\t\n            <unmanaged>GetViewport / SetViewport</unmanaged>\t\n            <unmanaged-short>GetViewport</unmanaged-short>\t\n            <unmanaged>HRESULT IDirect3DDevice9::GetViewport([Out] D3DVIEWPORT9* pViewport)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.Device.Material\">\n            <summary>\t\n            <p>Retrieves or sets the current material properties for the device.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This method will not return device state for a device that is created using <see cref=\"F:SharpDX.Direct3D9.CreateFlags.PureDevice\"/>. If you want to use this method, you must create your device with any of the other values in <see cref=\"T:SharpDX.Direct3D9.CreateFlags\"/>. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::GetMaterial']/*\"/>\t\n            <msdn-id>bb174394</msdn-id>\t\n            <unmanaged>GetMaterial / SetMaterial</unmanaged>\t\n            <unmanaged-short>GetMaterial</unmanaged-short>\t\n            <unmanaged>HRESULT IDirect3DDevice9::GetMaterial([Out] D3DMATERIAL9* pMaterial)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.Device.ClipStatus\">\n            <summary>\t\n            <p>Retrieves or sets the clip status.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>When clipping is enabled during vertex processing (by <strong><see cref=\"M:SharpDX.Direct3D9.Device.ProcessVertices(System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.VertexBuffer,SharpDX.Direct3D9.VertexDeclaration,SharpDX.Direct3D9.LockFlags)\"/></strong>, <strong><see cref=\"M:SharpDX.Direct3D9.Device.DrawPrimitives(SharpDX.Direct3D9.PrimitiveType,System.Int32,System.Int32)\"/></strong>, or other drawing functions), Direct3D computes a clip code for every vertex. The clip code is a combination of D3DCS_* bits. When a vertex is outside a particular clipping plane, the corresponding bit is set in the clipping code. Direct3D maintains the clip status using <strong><see cref=\"T:SharpDX.Direct3D9.ClipStatus\"/></strong>, which has ClipUnion and ClipIntersection members. ClipUnion is a bitwise \"OR\" of all vertex clip codes and ClipIntersection is a bitwise \"AND\" of all vertex clip codes. Initial values are zero for ClipUnion and 0xFFFFFFFF for ClipIntersection. When <see cref=\"F:SharpDX.Direct3D9.RenderState.Clipping\"/> is set to <strong><see cref=\"F:SharpDX.Result.False\"/></strong>, ClipUnion and ClipIntersection are set to zero. Direct3D updates the clip status during drawing calls. To compute clip status for a particular object, set ClipUnion and ClipIntersection to their initial value and continue drawing.</p><p>Clip status is not updated by <strong><see cref=\"M:SharpDX.Direct3D9.Device.DrawRectanglePatch(System.Int32,System.Single[])\"/></strong> and <strong><see cref=\"M:SharpDX.Direct3D9.Device.DrawTrianglePatch(System.Int32,System.Single[])\"/></strong> because there is no software emulation for them.</p><p>Clip status is used during software vertex processing. Therefore, this method is not supported on pure or nonpure hardware processing devices. For more information about pure devices, see <see cref=\"T:SharpDX.Direct3D9.CreateFlags\"/>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::GetClipStatus']/*\"/>\t\n            <msdn-id>bb174381</msdn-id>\t\n            <unmanaged>GetClipStatus / SetClipStatus</unmanaged>\t\n            <unmanaged-short>GetClipStatus</unmanaged-short>\t\n            <unmanaged>HRESULT IDirect3DDevice9::GetClipStatus([Out] D3DCLIPSTATUS9* pClipStatus)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.Device.CurrentTexturePalette\">\n            <summary>\t\n            <p>Retrieves or sets the current texture palette.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::GetCurrentTexturePalette']/*\"/>\t\n            <msdn-id>bb174383</msdn-id>\t\n            <unmanaged>GetCurrentTexturePalette / SetCurrentTexturePalette</unmanaged>\t\n            <unmanaged-short>GetCurrentTexturePalette</unmanaged-short>\t\n            <unmanaged>HRESULT IDirect3DDevice9::GetCurrentTexturePalette([Out] unsigned int* PaletteNumber)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.Device.ScissorRect\">\n            <summary>\t\n            <p>Gets or sets the scissor rectangle.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The scissor rectangle is used as a rectangular clipping region.</p><p>See Rectangles (Direct3D 9) for further information on the use of rectangles in DirectX.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::GetScissorRect']/*\"/>\t\n            <msdn-id>bb174407</msdn-id>\t\n            <unmanaged>GetScissorRect / SetScissorRect</unmanaged>\t\n            <unmanaged-short>GetScissorRect</unmanaged-short>\t\n            <unmanaged>HRESULT IDirect3DDevice9::GetScissorRect([Out] RECT* pRect)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.Device.SoftwareVertexProcessing\">\n            <summary>\t\n            <p>Gets or sets the vertex processing (hardware or software) mode.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>An application can create a mixed-mode device to use both the software vertex processing and the hardware vertex processing. To switch between the two vertex processing modes in DirectX 8.x, use <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetRenderState(SharpDX.Direct3D9.RenderState,System.Boolean)\"/></strong> with the render state D3DRS_SOFTWAREVERTEXPROCESSING and the appropriate <see cref=\"T:SharpDX.Bool\"/> argument. The drawback of the render state approach was the difficulty in defining the semantics for state blocks. Applications and the runtime had to do extra work and be careful while recording and playing back state blocks.</p><p>In Direct3D 9, use <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetSoftwareVertexProcessing(SharpDX.Bool)\"/></strong> instead. This new API is not recorded by StateBlocks.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::GetSoftwareVertexProcessing']/*\"/>\t\n            <msdn-id>bb174408</msdn-id>\t\n            <unmanaged>GetSoftwareVertexProcessing / SetSoftwareVertexProcessing</unmanaged>\t\n            <unmanaged-short>GetSoftwareVertexProcessing</unmanaged-short>\t\n            <unmanaged>BOOL IDirect3DDevice9::GetSoftwareVertexProcessing()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.Device.NPatchMode\">\n            <summary>\t\n            <p>Gets or sets the N-patch mode segments.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::GetNPatchMode']/*\"/>\t\n            <msdn-id>bb174395</msdn-id>\t\n            <unmanaged>GetNPatchMode / SetNPatchMode</unmanaged>\t\n            <unmanaged-short>GetNPatchMode</unmanaged-short>\t\n            <unmanaged>float IDirect3DDevice9::GetNPatchMode()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.Device.VertexDeclaration\">\n            <summary>\t\n            <p>Gets or sets a vertex shader declaration.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::GetVertexDeclaration']/*\"/>\t\n            <msdn-id>bb174415</msdn-id>\t\n            <unmanaged>GetVertexDeclaration / SetVertexDeclaration</unmanaged>\t\n            <unmanaged-short>GetVertexDeclaration</unmanaged-short>\t\n            <unmanaged>HRESULT IDirect3DDevice9::GetVertexDeclaration([Out] IDirect3DVertexDeclaration9** ppDecl)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.Device.VertexFormat\">\n            <summary>\t\n            <p>Gets or sets the fixed vertex function declaration.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The fixed vertex function declaration is a set of FVF flags that determine how vertices processed by the fixed function pipeline will be used.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::GetFVF']/*\"/>\t\n            <msdn-id>bb174389</msdn-id>\t\n            <unmanaged>GetFVF / SetFVF</unmanaged>\t\n            <unmanaged-short>GetFVF</unmanaged-short>\t\n            <unmanaged>HRESULT IDirect3DDevice9::GetFVF([Out] D3DFVF* pFVF)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.Device.VertexShader\">\n            <summary>\t\n            <p>Retrieves or sets the currently set vertex shader.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Typically, methods that return state will not work on a device that is created using <see cref=\"F:SharpDX.Direct3D9.CreateFlags.PureDevice\"/>. This method however, will work even on a pure device because it returns an interface.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::GetVertexShader']/*\"/>\t\n            <msdn-id>bb174416</msdn-id>\t\n            <unmanaged>GetVertexShader / SetVertexShader</unmanaged>\t\n            <unmanaged-short>GetVertexShader</unmanaged-short>\t\n            <unmanaged>HRESULT IDirect3DDevice9::GetVertexShader([Out] IDirect3DVertexShader9** ppShader)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.Device.Indices\">\n            <summary>\t\n            <p>Retrieves or sets index data.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p> Calling this method will increase the internal reference count on the <strong><see cref=\"T:SharpDX.Direct3D9.IndexBuffer\"/></strong> interface. Failure to call <strong>IUnknown::Release</strong> when finished using this <strong><see cref=\"T:SharpDX.Direct3D9.IndexBuffer\"/></strong> interface results in a memory leak.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::GetIndices']/*\"/>\t\n            <msdn-id>bb174391</msdn-id>\t\n            <unmanaged>GetIndices / SetIndices</unmanaged>\t\n            <unmanaged-short>GetIndices</unmanaged-short>\t\n            <unmanaged>HRESULT IDirect3DDevice9::GetIndices([Out] IDirect3DIndexBuffer9** ppIndexData)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.Device.PixelShader\">\n            <summary>\t\n            <p>Retrieves or sets the currently set pixel shader.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This method will not work on a device that is created using <see cref=\"F:SharpDX.Direct3D9.CreateFlags.PureDevice\"/>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9::GetPixelShader']/*\"/>\t\n            <msdn-id>bb174398</msdn-id>\t\n            <unmanaged>GetPixelShader / SetPixelShader</unmanaged>\t\n            <unmanaged-short>GetPixelShader</unmanaged-short>\t\n            <unmanaged>HRESULT IDirect3DDevice9::GetPixelShader([Out] IDirect3DPixelShader9** ppShader)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.DeviceEx\">\n            <summary>\t\n            <p>Applications use the methods of the <see cref=\"T:SharpDX.Direct3D9.DeviceEx\"/> interface to render primitives, create resources, work with system-level variables, adjust gamma ramp levels, work with palettes, and create shaders. The <see cref=\"T:SharpDX.Direct3D9.DeviceEx\"/> interface derives from the <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The <strong><see cref=\"T:SharpDX.Direct3D9.DeviceEx\"/></strong> interface is obtained by calling <strong><see cref=\"M:SharpDX.Direct3D9.Direct3DEx.CreateDeviceEx(System.Int32,SharpDX.Direct3D9.DeviceType,System.IntPtr,System.Int32,SharpDX.Direct3D9.PresentParameters[],SharpDX.Direct3D9.DisplayModeEx[],SharpDX.Direct3D9.DeviceEx)\"/></strong>.</p><p>The LPDIRECT3DDEVICE9EX and PDIRECT3DDEVICE9EX types are defined as references to the <see cref=\"T:SharpDX.Direct3D9.DeviceEx\"/> interface:</p><p> </p><pre><code> typedef struct <see cref=\"T:SharpDX.Direct3D9.DeviceEx\"/> *LPDIRECT3DDEVICE9EX, *PDIRECT3DDEVICE9EX;\t\n            </code></pre>Creating a Device<p>Follow these two steps to initialize a Direct3D device:</p><ol> <li>Call <strong>Direct3DCreate9Ex</strong> to create the Direct3D object.</li> <li>Call <strong>CreateDeviceEx</strong> to create the Direct3D device.</li> </ol><p>Here is an example:</p><p> </p><pre><code> <see cref=\"T:SharpDX.Direct3D9.Direct3DEx\"/> *pDirect3DEx;\t\n            LPDIRECT3DDEVICE9EX pDeviceEx;\t\n            DWORD behaviorFlags = <see cref=\"F:SharpDX.Direct3D9.CreateFlags.HardwareVertexProcessing\"/>; Direct3DCreate9Ex(<see cref=\"F:SharpDX.Direct3D9.D3D9.SdkVersion\"/>, &amp;pDirect3DEx);\t\n            pDirect3DEx-&gt;CreateDeviceEx(D3DADAPTER_DEFAULT, <see cref=\"F:SharpDX.Direct3D9.DeviceType.Hardware\"/>, hWnd, behaviorFlags, &amp;d3dpp, <c>null</c>, &amp;pDeviceEx);\t\n            </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9Ex']/*\"/>\t\n            <msdn-id>bb174337</msdn-id>\t\n            <unmanaged>IDirect3DDevice9Ex</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9Ex</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.DeviceEx.#ctor(SharpDX.Direct3D9.Direct3DEx,System.Int32,SharpDX.Direct3D9.DeviceType,System.IntPtr,SharpDX.Direct3D9.CreateFlags,SharpDX.Direct3D9.PresentParameters[])\">\n            <summary>\n            Creates a device to represent the display adapter.\n            </summary>\n            <param name=\"direct3D\">an instance of <see cref=\"T:SharpDX.Direct3D9.Direct3D\"/></param>\n            <param name=\"adapter\">Ordinal number that denotes the display adapter. {{D3DADAPTER_DEFAULT}} is always the primary display adapter.</param>\n            <param name=\"deviceType\">Member of the <see cref=\"T:SharpDX.Direct3D9.DeviceType\"/> enumerated type that denotes the desired device type. If the desired device type is not available, the method will fail.</param>\n            <param name=\"controlHandle\">The focus window alerts Direct3D when an application switches from foreground mode to background mode. See Remarks. \t   For full-screen mode, the window specified must be a top-level window. For windowed mode, this parameter may be NULL only if the hDeviceWindow member of pPresentationParameters is set to a valid, non-NULL value.</param>\n            <param name=\"createFlags\">Combination of one or more options that control device creation. For more information, see {{D3DCREATE}}.</param>\n            <param name=\"presentParameters\">Pointer to a <see cref=\"T:SharpDX.Direct3D9.PresentParameters\"/> structure, describing the presentation parameters for the device to be created. If BehaviorFlags specifies {{D3DCREATE_ADAPTERGROUP_DEVICE}}, pPresentationParameters is an array. Regardless of the number of heads that exist, only one depth/stencil surface is automatically created. For Windows 2000 and Windows XP, the full-screen device display refresh rate is set in the following order:   User-specified nonzero ForcedRefreshRate registry key, if supported by the device. Application-specified nonzero refresh rate value in the presentation parameter. Refresh rate of the latest desktop mode, if supported by the device. 75 hertz if supported by the device. 60 hertz if supported by the device. Device default.  An unsupported refresh rate will default to the closest supported refresh rate below it.  For example, if the application specifies 63 hertz, 60 hertz will be used. There are no supported refresh rates below 57 hertz. pPresentationParameters is both an input and an output parameter. Calling this method may change several members including:  If BackBufferCount, BackBufferWidth, and BackBufferHeight  are 0 before the method is called, they will be changed when the method returns. If BackBufferFormat equals <see cref=\"F:SharpDX.Direct3D9.Format.Unknown\"/> before the method is called, it will be changed when the method returns.</param>\n            <remarks>\n            This method returns a fully working device interface, set to the required display mode (or windowed), and allocated with the appropriate back buffers. To begin rendering, the application needs only to create and set a depth buffer (assuming EnableAutoDepthStencil is FALSE in <see cref=\"T:SharpDX.Direct3D9.PresentParameters\"/>). When you create a Direct3D device, you supply two different window parameters: a focus window (hFocusWindow) and a device window (the hDeviceWindow in <see cref=\"T:SharpDX.Direct3D9.PresentParameters\"/>). The purpose of each window is:  The focus window alerts Direct3D when an application switches from foreground mode to background mode (via Alt-Tab, a mouse click, or some other method). A single focus window is shared by each device created by an application. The device window determines the location and size of the back buffer on screen. This is used by Direct3D when the back buffer contents are copied to the front buffer during {{Present}}.  This method should not be run during the handling of WM_CREATE. An application should never pass a window handle to Direct3D while handling WM_CREATE.  Any call to create, release, or reset the device must be done using the same thread as the window procedure of the focus window. Note that D3DCREATE_HARDWARE_VERTEXPROCESSING, D3DCREATE_MIXED_VERTEXPROCESSING, and D3DCREATE_SOFTWARE_VERTEXPROCESSING are mutually exclusive flags, and at least one of these vertex processing flags must be specified when calling this method. Back buffers created as part of the device are only lockable if D3DPRESENTFLAG_LOCKABLE_BACKBUFFER is specified in the presentation parameters. (Multisampled back buffers and depth surfaces are never lockable.) The methods {{Reset}}, <see cref=\"T:SharpDX.ComObject\"/>, and {{TestCooperativeLevel}} must be called from the same thread that used this method to create a device. D3DFMT_UNKNOWN can be specified for the windowed mode back buffer format when calling CreateDevice, {{Reset}}, and {{CreateAdditionalSwapChain}}. This means the application does not have to query the current desktop format before calling CreateDevice for windowed mode. For full-screen mode, the back buffer format must be specified. If you attempt to create a device on a 0x0 sized window, CreateDevice will fail.\n            </remarks>\n            <unmanaged>HRESULT CreateDevice([None] UINT Adapter,[None] D3DDEVTYPE DeviceType,[None] HWND hFocusWindow,[None] int BehaviorFlags,[None] D3DPRESENT_PARAMETERS* pPresentationParameters,[None] IDirect3DDevice9** ppReturnedDeviceInterface)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.DeviceEx.#ctor(SharpDX.Direct3D9.Direct3DEx,System.Int32,SharpDX.Direct3D9.DeviceType,System.IntPtr,SharpDX.Direct3D9.CreateFlags,SharpDX.Direct3D9.PresentParameters)\">\n            <summary>\n            Creates a device to represent the display adapter.\n            </summary>\n            <param name=\"direct3D\">an instance of <see cref=\"T:SharpDX.Direct3D9.Direct3D\"/></param>\n            <param name=\"adapter\">Ordinal number that denotes the display adapter. {{D3DADAPTER_DEFAULT}} is always the primary display adapter.</param>\n            <param name=\"deviceType\">Member of the <see cref=\"T:SharpDX.Direct3D9.DeviceType\"/> enumerated type that denotes the desired device type. If the desired device type is not available, the method will fail.</param>\n            <param name=\"controlHandle\">The focus window alerts Direct3D when an application switches from foreground mode to background mode. See Remarks. \t   For full-screen mode, the window specified must be a top-level window. For windowed mode, this parameter may be NULL only if the hDeviceWindow member of pPresentationParameters is set to a valid, non-NULL value.</param>\n            <param name=\"createFlags\">Combination of one or more options that control device creation. For more information, see {{D3DCREATE}}.</param>\n            <param name=\"presentParameters\">Pointer to a <see cref=\"T:SharpDX.Direct3D9.PresentParameters\"/> structure, describing the presentation parameters for the device to be created. If BehaviorFlags specifies {{D3DCREATE_ADAPTERGROUP_DEVICE}}, pPresentationParameters is an array. Regardless of the number of heads that exist, only one depth/stencil surface is automatically created. For Windows 2000 and Windows XP, the full-screen device display refresh rate is set in the following order:   User-specified nonzero ForcedRefreshRate registry key, if supported by the device. Application-specified nonzero refresh rate value in the presentation parameter. Refresh rate of the latest desktop mode, if supported by the device. 75 hertz if supported by the device. 60 hertz if supported by the device. Device default.  An unsupported refresh rate will default to the closest supported refresh rate below it.  For example, if the application specifies 63 hertz, 60 hertz will be used. There are no supported refresh rates below 57 hertz. pPresentationParameters is both an input and an output parameter. Calling this method may change several members including:  If BackBufferCount, BackBufferWidth, and BackBufferHeight  are 0 before the method is called, they will be changed when the method returns. If BackBufferFormat equals <see cref=\"F:SharpDX.Direct3D9.Format.Unknown\"/> before the method is called, it will be changed when the method returns.</param>\n            <remarks>\n            This method returns a fully working device interface, set to the required display mode (or windowed), and allocated with the appropriate back buffers. To begin rendering, the application needs only to create and set a depth buffer (assuming EnableAutoDepthStencil is FALSE in <see cref=\"T:SharpDX.Direct3D9.PresentParameters\"/>). When you create a Direct3D device, you supply two different window parameters: a focus window (hFocusWindow) and a device window (the hDeviceWindow in <see cref=\"T:SharpDX.Direct3D9.PresentParameters\"/>). The purpose of each window is:  The focus window alerts Direct3D when an application switches from foreground mode to background mode (via Alt-Tab, a mouse click, or some other method). A single focus window is shared by each device created by an application. The device window determines the location and size of the back buffer on screen. This is used by Direct3D when the back buffer contents are copied to the front buffer during {{Present}}.  This method should not be run during the handling of WM_CREATE. An application should never pass a window handle to Direct3D while handling WM_CREATE.  Any call to create, release, or reset the device must be done using the same thread as the window procedure of the focus window. Note that D3DCREATE_HARDWARE_VERTEXPROCESSING, D3DCREATE_MIXED_VERTEXPROCESSING, and D3DCREATE_SOFTWARE_VERTEXPROCESSING are mutually exclusive flags, and at least one of these vertex processing flags must be specified when calling this method. Back buffers created as part of the device are only lockable if D3DPRESENTFLAG_LOCKABLE_BACKBUFFER is specified in the presentation parameters. (Multisampled back buffers and depth surfaces are never lockable.) The methods {{Reset}}, <see cref=\"T:SharpDX.ComObject\"/>, and {{TestCooperativeLevel}} must be called from the same thread that used this method to create a device. D3DFMT_UNKNOWN can be specified for the windowed mode back buffer format when calling CreateDevice, {{Reset}}, and {{CreateAdditionalSwapChain}}. This means the application does not have to query the current desktop format before calling CreateDevice for windowed mode. For full-screen mode, the back buffer format must be specified. If you attempt to create a device on a 0x0 sized window, CreateDevice will fail.\n            </remarks>\n            <unmanaged>HRESULT CreateDevice([None] UINT Adapter,[None] D3DDEVTYPE DeviceType,[None] HWND hFocusWindow,[None] int BehaviorFlags,[None] D3DPRESENT_PARAMETERS* pPresentationParameters,[None] IDirect3DDevice9** ppReturnedDeviceInterface)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.DeviceEx.#ctor(SharpDX.Direct3D9.Direct3DEx,System.Int32,SharpDX.Direct3D9.DeviceType,System.IntPtr,SharpDX.Direct3D9.CreateFlags,SharpDX.Direct3D9.PresentParameters,SharpDX.Direct3D9.DisplayModeEx)\">\n            <summary>\n            Creates a device to represent the display adapter.\n            </summary>\n            <param name=\"direct3D\">an instance of <see cref=\"T:SharpDX.Direct3D9.Direct3D\"/></param>\n            <param name=\"adapter\">Ordinal number that denotes the display adapter. {{D3DADAPTER_DEFAULT}} is always the primary display adapter.</param>\n            <param name=\"deviceType\">Member of the <see cref=\"T:SharpDX.Direct3D9.DeviceType\"/> enumerated type that denotes the desired device type. If the desired device type is not available, the method will fail.</param>\n            <param name=\"controlHandle\">The focus window alerts Direct3D when an application switches from foreground mode to background mode. See Remarks. \t   For full-screen mode, the window specified must be a top-level window. For windowed mode, this parameter may be NULL only if the hDeviceWindow member of pPresentationParameters is set to a valid, non-NULL value.</param>\n            <param name=\"createFlags\">Combination of one or more options that control device creation. For more information, see {{D3DCREATE}}.</param>\n            <param name=\"presentParameters\">Pointer to a <see cref=\"T:SharpDX.Direct3D9.PresentParameters\"/> structure, describing the presentation parameters for the device to be created. If BehaviorFlags specifies {{D3DCREATE_ADAPTERGROUP_DEVICE}}, pPresentationParameters is an array. Regardless of the number of heads that exist, only one depth/stencil surface is automatically created. For Windows 2000 and Windows XP, the full-screen device display refresh rate is set in the following order:   User-specified nonzero ForcedRefreshRate registry key, if supported by the device. Application-specified nonzero refresh rate value in the presentation parameter. Refresh rate of the latest desktop mode, if supported by the device. 75 hertz if supported by the device. 60 hertz if supported by the device. Device default.  An unsupported refresh rate will default to the closest supported refresh rate below it.  For example, if the application specifies 63 hertz, 60 hertz will be used. There are no supported refresh rates below 57 hertz. pPresentationParameters is both an input and an output parameter. Calling this method may change several members including:  If BackBufferCount, BackBufferWidth, and BackBufferHeight  are 0 before the method is called, they will be changed when the method returns. If BackBufferFormat equals <see cref=\"F:SharpDX.Direct3D9.Format.Unknown\"/> before the method is called, it will be changed when the method returns.</param>\n            <param name=\"fullScreenDisplayMode\">The full screen display mode.</param>\n            <remarks>\n            This method returns a fully working device interface, set to the required display mode (or windowed), and allocated with the appropriate back buffers. To begin rendering, the application needs only to create and set a depth buffer (assuming EnableAutoDepthStencil is FALSE in <see cref=\"T:SharpDX.Direct3D9.PresentParameters\"/>). When you create a Direct3D device, you supply two different window parameters: a focus window (hFocusWindow) and a device window (the hDeviceWindow in <see cref=\"T:SharpDX.Direct3D9.PresentParameters\"/>). The purpose of each window is:  The focus window alerts Direct3D when an application switches from foreground mode to background mode (via Alt-Tab, a mouse click, or some other method). A single focus window is shared by each device created by an application. The device window determines the location and size of the back buffer on screen. This is used by Direct3D when the back buffer contents are copied to the front buffer during {{Present}}.  This method should not be run during the handling of WM_CREATE. An application should never pass a window handle to Direct3D while handling WM_CREATE.  Any call to create, release, or reset the device must be done using the same thread as the window procedure of the focus window. Note that D3DCREATE_HARDWARE_VERTEXPROCESSING, D3DCREATE_MIXED_VERTEXPROCESSING, and D3DCREATE_SOFTWARE_VERTEXPROCESSING are mutually exclusive flags, and at least one of these vertex processing flags must be specified when calling this method. Back buffers created as part of the device are only lockable if D3DPRESENTFLAG_LOCKABLE_BACKBUFFER is specified in the presentation parameters. (Multisampled back buffers and depth surfaces are never lockable.) The methods {{Reset}}, <see cref=\"T:SharpDX.ComObject\"/>, and {{TestCooperativeLevel}} must be called from the same thread that used this method to create a device. D3DFMT_UNKNOWN can be specified for the windowed mode back buffer format when calling CreateDevice, {{Reset}}, and {{CreateAdditionalSwapChain}}. This means the application does not have to query the current desktop format before calling CreateDevice for windowed mode. For full-screen mode, the back buffer format must be specified. If you attempt to create a device on a 0x0 sized window, CreateDevice will fail.\n            </remarks>\n            <unmanaged>HRESULT CreateDevice([None] UINT Adapter,[None] D3DDEVTYPE DeviceType,[None] HWND hFocusWindow,[None] int BehaviorFlags,[None] D3DPRESENT_PARAMETERS* pPresentationParameters,[None] IDirect3DDevice9** ppReturnedDeviceInterface)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.DeviceEx.#ctor(SharpDX.Direct3D9.Direct3DEx,System.Int32,SharpDX.Direct3D9.DeviceType,System.IntPtr,SharpDX.Direct3D9.CreateFlags,SharpDX.Direct3D9.PresentParameters[],SharpDX.Direct3D9.DisplayModeEx[])\">\n            <summary>\n            Creates a device to represent the display adapter.\n            </summary>\n            <param name=\"direct3D\">an instance of <see cref=\"T:SharpDX.Direct3D9.Direct3D\"/></param>\n            <param name=\"adapter\">Ordinal number that denotes the display adapter. {{D3DADAPTER_DEFAULT}} is always the primary display adapter.</param>\n            <param name=\"deviceType\">Member of the <see cref=\"T:SharpDX.Direct3D9.DeviceType\"/> enumerated type that denotes the desired device type. If the desired device type is not available, the method will fail.</param>\n            <param name=\"controlHandle\">The focus window alerts Direct3D when an application switches from foreground mode to background mode. See Remarks. \t   For full-screen mode, the window specified must be a top-level window. For windowed mode, this parameter may be NULL only if the hDeviceWindow member of pPresentationParameters is set to a valid, non-NULL value.</param>\n            <param name=\"createFlags\">Combination of one or more options that control device creation. For more information, see {{D3DCREATE}}.</param>\n            <param name=\"presentParameters\">Pointer to a <see cref=\"T:SharpDX.Direct3D9.PresentParameters\"/> structure, describing the presentation parameters for the device to be created. If BehaviorFlags specifies {{D3DCREATE_ADAPTERGROUP_DEVICE}}, pPresentationParameters is an array. Regardless of the number of heads that exist, only one depth/stencil surface is automatically created. For Windows 2000 and Windows XP, the full-screen device display refresh rate is set in the following order:   User-specified nonzero ForcedRefreshRate registry key, if supported by the device. Application-specified nonzero refresh rate value in the presentation parameter. Refresh rate of the latest desktop mode, if supported by the device. 75 hertz if supported by the device. 60 hertz if supported by the device. Device default.  An unsupported refresh rate will default to the closest supported refresh rate below it.  For example, if the application specifies 63 hertz, 60 hertz will be used. There are no supported refresh rates below 57 hertz. pPresentationParameters is both an input and an output parameter. Calling this method may change several members including:  If BackBufferCount, BackBufferWidth, and BackBufferHeight  are 0 before the method is called, they will be changed when the method returns. If BackBufferFormat equals <see cref=\"F:SharpDX.Direct3D9.Format.Unknown\"/> before the method is called, it will be changed when the method returns.</param>\n            <param name=\"fullScreenDisplayMode\">The full screen display mode.</param>\n            <remarks>\n            This method returns a fully working device interface, set to the required display mode (or windowed), and allocated with the appropriate back buffers. To begin rendering, the application needs only to create and set a depth buffer (assuming EnableAutoDepthStencil is FALSE in <see cref=\"T:SharpDX.Direct3D9.PresentParameters\"/>). When you create a Direct3D device, you supply two different window parameters: a focus window (hFocusWindow) and a device window (the hDeviceWindow in <see cref=\"T:SharpDX.Direct3D9.PresentParameters\"/>). The purpose of each window is:  The focus window alerts Direct3D when an application switches from foreground mode to background mode (via Alt-Tab, a mouse click, or some other method). A single focus window is shared by each device created by an application. The device window determines the location and size of the back buffer on screen. This is used by Direct3D when the back buffer contents are copied to the front buffer during {{Present}}.  This method should not be run during the handling of WM_CREATE. An application should never pass a window handle to Direct3D while handling WM_CREATE.  Any call to create, release, or reset the device must be done using the same thread as the window procedure of the focus window. Note that D3DCREATE_HARDWARE_VERTEXPROCESSING, D3DCREATE_MIXED_VERTEXPROCESSING, and D3DCREATE_SOFTWARE_VERTEXPROCESSING are mutually exclusive flags, and at least one of these vertex processing flags must be specified when calling this method. Back buffers created as part of the device are only lockable if D3DPRESENTFLAG_LOCKABLE_BACKBUFFER is specified in the presentation parameters. (Multisampled back buffers and depth surfaces are never lockable.) The methods {{Reset}}, <see cref=\"T:SharpDX.ComObject\"/>, and {{TestCooperativeLevel}} must be called from the same thread that used this method to create a device. D3DFMT_UNKNOWN can be specified for the windowed mode back buffer format when calling CreateDevice, {{Reset}}, and {{CreateAdditionalSwapChain}}. This means the application does not have to query the current desktop format before calling CreateDevice for windowed mode. For full-screen mode, the back buffer format must be specified. If you attempt to create a device on a 0x0 sized window, CreateDevice will fail.\n            </remarks>\n            <unmanaged>HRESULT CreateDevice([None] UINT Adapter,[None] D3DDEVTYPE DeviceType,[None] HWND hFocusWindow,[None] int BehaviorFlags,[None] D3DPRESENT_PARAMETERS* pPresentationParameters,[None] IDirect3DDevice9** ppReturnedDeviceInterface)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.DeviceEx.CheckDeviceState(System.IntPtr)\">\n            <summary>\n            Reports the current cooperative-level status of the Direct3D device for a windowed or full-screen application.\n            </summary>\n            <param name=\"windowHandle\">The window handle.</param>\n            <returns>State of the device</returns>\n            <unmanaged>HRESULT IDirect3DDevice9Ex::CheckDeviceState([In] HWND hDestinationWindow)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.DeviceEx.CheckResourceResidency(SharpDX.Direct3D9.Resource[])\">\n            <summary>\n            Checks an array of resources to determine if it is likely that they will cause a large stall at Draw time because the system must make the resources GPU-accessible.\n            </summary>\n            <param name=\"resources\">An array of <see cref=\"T:SharpDX.Direct3D9.Resource\"/> that indicate the resources to check.</param>\n            <returns>The <see cref=\"T:SharpDX.Direct3D9.ResourceResidency\"/> status.</returns>\n            <unmanaged>HRESULT IDirect3DDevice9Ex::CheckDeviceState([In] HWND hDestinationWindow)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.DeviceEx.GetDisplayModeEx(System.Int32)\">\n            <summary>\n            Retrieves the display mode's spatial resolution, color resolution, refresh frequency, and rotation settings.\n            </summary>\n            <param name=\"swapChain\">The swap chain.</param>\n            <returns><see cref=\"T:SharpDX.Direct3D9.DisplayModeEx\"/> structure containing data about the display mode of the adapter</returns>\n            <unmanaged>HRESULT IDirect3DDevice9Ex::GetDisplayModeEx([In] unsigned int iSwapChain,[Out] D3DDISPLAYMODEEX* pMode,[In] void* pRotation)</unmanaged>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.DeviceEx.GetDisplayModeEx(System.Int32,SharpDX.Direct3D9.DisplayRotation@)\">\n            <summary>\n            Retrieves the display mode's spatial resolution, color resolution, refresh frequency, and rotation settings.\n            </summary>\n            <param name=\"swapChain\">The swap chain.</param>\n            <param name=\"rotation\">The <see cref=\"T:SharpDX.Direct3D9.DisplayRotation\"/> structure indicating the type of screen rotation the application will do.</param>\n            <returns><see cref=\"T:SharpDX.Direct3D9.DisplayModeEx\"/> structure containing data about the display mode of the adapter</returns>\n            <unmanaged>HRESULT IDirect3DDevice9Ex::GetDisplayModeEx([In] unsigned int iSwapChain,[Out] D3DDISPLAYMODEEX* pMode,[In] void* pRotation)</unmanaged>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.DeviceEx.PresentEx(SharpDX.Direct3D9.Present)\">\n            <summary>\n            Swap the swapchain's next buffer with the front buffer.\n            </summary>\n            <param name=\"flags\">The flags.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT IDirect3DDevice9Ex::PresentEx([In] const void* pSourceRect,[In] const void* pDestRect,[In] HWND hDestWindowOverride,[In] const RGNDATA* pDirtyRegion,[In] unsigned int dwFlags)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.DeviceEx.PresentEx(SharpDX.Direct3D9.Present,SharpDX.Rectangle,SharpDX.Rectangle)\">\n            <summary>\n            Swap the swapchain's next buffer with the front buffer.\n            </summary>\n            <param name=\"flags\">The flags.</param>\n            <param name=\"sourceRectangle\">The source rectangle.</param>\n            <param name=\"destinationRectangle\">The destination rectangle.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT IDirect3DDevice9Ex::PresentEx([In] const void* pSourceRect,[In] const void* pDestRect,[In] HWND hDestWindowOverride,[In] const RGNDATA* pDirtyRegion,[In] unsigned int dwFlags)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.DeviceEx.PresentEx(SharpDX.Direct3D9.Present,SharpDX.Rectangle,SharpDX.Rectangle,System.IntPtr)\">\n            <summary>\n            Swap the swapchain's next buffer with the front buffer.\n            </summary>\n            <param name=\"flags\">The flags.</param>\n            <param name=\"sourceRectangle\">The source rectangle.</param>\n            <param name=\"destinationRectangle\">The destination rectangle.</param>\n            <param name=\"windowOverride\">The window override.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT IDirect3DDevice9Ex::PresentEx([In] const void* pSourceRect,[In] const void* pDestRect,[In] HWND hDestWindowOverride,[In] const RGNDATA* pDirtyRegion,[In] unsigned int dwFlags)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.DeviceEx.PresentEx(SharpDX.Direct3D9.Present,SharpDX.Rectangle,SharpDX.Rectangle,System.IntPtr,System.Drawing.Region)\">\n            <summary>\n            Swap the swapchain's next buffer with the front buffer.\n            </summary>\n            <param name=\"flags\">The flags.</param>\n            <param name=\"sourceRectangle\">The source rectangle.</param>\n            <param name=\"destinationRectangle\">The destination rectangle.</param>\n            <param name=\"windowOverride\">The window override.</param>\n            <param name=\"region\">The region.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT IDirect3DDevice9Ex::PresentEx([In] const void* pSourceRect,[In] const void* pDestRect,[In] HWND hDestWindowOverride,[In] const RGNDATA* pDirtyRegion,[In] unsigned int dwFlags)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.DeviceEx.ResetEx(SharpDX.Direct3D9.PresentParameters@)\">\n            <summary>\n            Resets the type, size, and format of the swap chain with all other surfaces persistent.\n            </summary>\n            <param name=\"presentationParametersRef\">A reference describing the new presentation parameters.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT IDirect3DDevice9Ex::ResetEx([In] D3DPRESENT_PARAMETERS* pPresentationParameters,[In] void* pFullscreenDisplayMode)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.DeviceEx.ResetEx(SharpDX.Direct3D9.PresentParameters@,SharpDX.Direct3D9.DisplayModeEx)\">\n            <summary>\n            Resets the type, size, and format of the swap chain with all other surfaces persistent.\n            </summary>\n            <param name=\"presentationParametersRef\">A reference describing the new presentation parameters.</param>\n            <param name=\"fullScreenDisplayMode\">The full screen display mode.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT IDirect3DDevice9Ex::ResetEx([In] D3DPRESENT_PARAMETERS* pPresentationParameters,[In] void* pFullscreenDisplayMode)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.DeviceEx.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D9.DeviceEx\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.DeviceEx.op_Explicit(System.IntPtr)~SharpDX.Direct3D9.DeviceEx\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D9.DeviceEx\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.DeviceEx.SetConvolutionMonoKernel(System.Int32,System.Int32,System.Single[],System.Single[])\">\n            <summary>\t\n            <p>Prepare the texture sampler for monochrome convolution filtering on a single-color texture.</p>\t\n            </summary>\t\n            <param name=\"width\"><dd>  <p>The width of the filter kernel; ranging from 1 - <strong>D3DCONVOLUTIONMONO_MAXWIDTH</strong>. The default value is 1.</p> </dd></param>\t\n            <param name=\"height\"><dd>  <p>The height of the filter kernel; ranging from 1 - <strong>D3DCONVOLUTIONMONO_MAXHEIGHT</strong>. The default value is 1.</p> </dd></param>\t\n            <param name=\"rows\"><dd>  <p>An array of weights, one weight for each kernel sub-element in the width. This parameter must be <strong><c>null</c></strong>, which will set the weights equal to the default value.</p> </dd></param>\t\n            <param name=\"columns\"><dd>  <p>An array of weights, one weight for each kernel sub-element in the height. This parameter must be <strong><c>null</c></strong>, which will set the weights equal to the default value.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>.</p></returns>\t\n            <remarks>\t\n            <p>This method is designed to filter a single color texture. A monochrome convolution filter is a 2D box filter with all of the weights set to 1.0;  the filter kernel resolution ranges from 1 x 1 to 7 x 7. When monochrome texture filtering is set to a texture sampler and texture sampling is performed at location, then Direct3D performs convolution. </p><p>Restrictions include:</p><ul> <li>The filter specified by this method is recorded in state blocks as a part of <strong><see cref=\"F:SharpDX.Direct3D9.StateBlockType.PixelState\"/></strong>.</li> <li>The only texture address mode supported is: <see cref=\"F:SharpDX.Direct3D9.TextureAddressCaps.Border\"/>; the border color is always 0.</li> <li>This method is not supported for mipmaps.</li> <li>Using a non-monochrome texture with convolution filtering will generate a driver error.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9Ex::SetConvolutionMonoKernel']/*\"/>\t\n            <msdn-id>bb174345</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9Ex::SetConvolutionMonoKernel([In] unsigned int width,[In] unsigned int height,[In, Buffer] float* rows,[In, Buffer] float* columns)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9Ex::SetConvolutionMonoKernel</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.DeviceEx.ComposeRects(SharpDX.Direct3D9.Surface,SharpDX.Direct3D9.Surface,SharpDX.Direct3D9.VertexBuffer,System.Int32,SharpDX.Direct3D9.VertexBuffer,SharpDX.Direct3D9.ComposeRectOperation,System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Copy a text string to one surface using an alphabet of glyphs on another surface. Composition is done by the GPU using bitwise operations.</p>\t\n            </summary>\t\n            <param name=\"srcRef\"><dd>  <p>A reference to a source surface (prepared by <strong><see cref=\"T:SharpDX.Direct3D9.Surface\"/></strong>) that supplies the alphabet glyphs. This surface must be created with the <strong><see cref=\"F:SharpDX.Direct3D9.Usage.TextApi\"/></strong> flag.</p> </dd></param>\t\n            <param name=\"dstRef\"><dd>  <p>A reference to the destination surface (prepared by <strong><see cref=\"T:SharpDX.Direct3D9.Surface\"/></strong>) that receives the glyph data. The surface must be part of a texture.</p> </dd></param>\t\n            <param name=\"srcRectDescsRef\"><dd>  <p>A reference to a vertex buffer (see <strong><see cref=\"T:SharpDX.Direct3D9.VertexBuffer\"/></strong>) containing rectangles (see <strong>D3DCOMPOSERECTDESC</strong>) that enclose the desired glyphs in the source surface.</p> </dd></param>\t\n            <param name=\"numRects\"><dd>  <p>The number of rectangles or glyphs that are used in the operation. The number applies to both the source and destination surfaces. The range is 0 to <strong>D3DCOMPOSERECTS_MAXNUMRECTS</strong>.</p> </dd></param>\t\n            <param name=\"dstRectDescsRef\"><dd>  <p>A reference to a vertex buffer (see <strong><see cref=\"T:SharpDX.Direct3D9.VertexBuffer\"/></strong>) containing rectangles (see <strong>D3DCOMPOSERECTDESTINATION</strong>) that describe the destination to which the indicated glyph from the source surface will be copied.</p> </dd></param>\t\n            <param name=\"operation\"><dd>  <p>Specifies how to combine the source and destination surfaces. See <strong><see cref=\"T:SharpDX.Direct3D9.ComposeRectOperation\"/></strong>.</p> </dd></param>\t\n            <param name=\"xoffset\"><dd>  <p>A value added to the <em>x</em> coordinates of all destination rectangles. This value can be negative, which may cause the glyph to be rejected or clipped if the result is beyond the bounds of the surface.</p> </dd></param>\t\n            <param name=\"yoffset\"><dd>  <p>A value added to the <em>y</em> coordinates of all destination rectangles. This value can be negative, which may cause the glyph to be rejected or clipped if the result is beyond the bounds of the surface.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>.</p></returns>\t\n            <remarks>\t\n            <p>Glyphs from a one-bit source surface are put together into another one-bit texture surface with this method. The destination surface can then be used as the source for a normal texturing operation that will filter and scale the strings of text onto some other non-monochrome surface.</p><p>This method has several constraints (which are similar to <strong>StretchRect</strong>):</p><ul> <li>Surfaces cannot be locked.</li> <li>The source and destination surfaces cannot be the same surface.</li> <li>The source and destination surfaces must be created with the <see cref=\"F:SharpDX.Direct3D9.Format.A1\"/> format.</li> <li>The source surface and both vertex buffers must be created with the <strong><see cref=\"F:SharpDX.Direct3D9.Pool.Default\"/></strong> flag.</li> <li>The destination surface must be created with either the <strong><see cref=\"F:SharpDX.Direct3D9.Pool.Default\"/></strong> or <strong><see cref=\"F:SharpDX.Direct3D9.Pool.SystemMemory\"/></strong> flags.</li> <li>The source rectangles must be within the source surface.</li> </ul><p>The method is not recorded in state blocks.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9Ex::ComposeRects']/*\"/>\t\n            <msdn-id>bb174340</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9Ex::ComposeRects([In] IDirect3DSurface9* pSrc,[In] IDirect3DSurface9* pDst,[In] IDirect3DVertexBuffer9* pSrcRectDescs,[In] unsigned int NumRects,[In] IDirect3DVertexBuffer9* pDstRectDescs,[In] D3DCOMPOSERECTSOP Operation,[In] int Xoffset,[In] int Yoffset)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9Ex::ComposeRects</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.DeviceEx.PresentEx(System.IntPtr,System.IntPtr,System.IntPtr,System.IntPtr,System.Int32)\">\n            <summary>\t\n            <p>Swap the swapchain's next buffer with the front buffer.</p>\t\n            </summary>\t\n            <param name=\"sourceRectRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Rectangle\"/></strong> structure indicating region on the source surface to copy in window client coordinates. Only applies when the swapchain was created with the <strong><see cref=\"F:SharpDX.Direct3D9.SwapEffect.Copy\"/></strong> flag. If <strong><c>null</c></strong>, the entire source surface is presented. If the rectangle exceeds the source surface, it is clipped to the source surface.</p> </dd></param>\t\n            <param name=\"destRectRef\"><dd>  <p>Pointer to <strong><see cref=\"T:SharpDX.Rectangle\"/></strong> structure indicating the target region on the destination surface in window client coordinates. Only applies when the swapchain was created with the <strong><see cref=\"F:SharpDX.Direct3D9.SwapEffect.Copy\"/></strong> flag. If <strong><c>null</c></strong>, the entire client area is filled. If the rectangle exceeds the destination client area, it is clipped to the destination client area.</p> </dd></param>\t\n            <param name=\"hDestWindowOverride\"><dd>  <p>Pointer to a destination window handle whose client area is taken as the target for this presentation. If this value is <strong><c>null</c></strong>, then the <strong>hWndDeviceWindow</strong> member of <strong><see cref=\"T:SharpDX.Direct3D9.PresentParameters\"/></strong> is taken.</p> </dd></param>\t\n            <param name=\"dirtyRegionRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:System.IntPtr\"/></strong> structure indicating the smallest set of pixels that need to be transferred. This value must be <strong><c>null</c></strong> unless the swapchain was created with the <strong><see cref=\"F:SharpDX.Direct3D9.SwapEffect.Copy\"/></strong> flag. For more information about swapchains, see Flipping Surfaces (Direct3D 9).</p> <p>If this value is non-<strong><c>null</c></strong>, the contained region is expressed in back buffer coordinates. The method takes these rectangles into account when optimizing the presentation by copying only the pixels within the region, or some suitably expanded set of rectangles. This is an aid to optimization only, and the application should not rely on the region being copied exactly. The implementation can choose to copy the whole source rectangle.</p> </dd></param>\t\n            <param name=\"dwFlags\"><dd>  <p>Allows the application to request that the method return immediately when the driver reports that it cannot schedule a presentation. Valid values are 0, or any combination of <see cref=\"T:SharpDX.Direct3D9.Present\"/> flags. </p> <ul> <li>If dwFlags = 0, this method behaves as it did prior to Direct3D 9. Present will spin until the hardware is free, without returning an error.</li> <li>If dwFlags = <see cref=\"F:SharpDX.Direct3D9.Present.DoNotFlip\"/> the display driver is called with the front buffer as both the source and target surface. The driver responds by scheduling a frame synch, but not changing the displayed surface. This flag is only available in full-screen mode or when using <see cref=\"F:SharpDX.Direct3D9.SwapEffect.FlipEx\"/> in windowed mode.</li> <li>If dwFlags = <see cref=\"F:SharpDX.Direct3D9.Present.DoNotWait\"/>, and the hardware is busy processing or waiting for a vertical sync interval, the method will return <see cref=\"F:SharpDX.Direct3D9.ResultCode.WasStillDrawing\"/>.</li> <li>If dwFlags = <see cref=\"F:SharpDX.Direct3D9.Present.ForceImmediate\"/>, <see cref=\"F:SharpDX.Direct3D9.PresentInterval.Immediate\"/> is enforced on this Present call. This flag can only be specified when using <see cref=\"F:SharpDX.Direct3D9.SwapEffect.FlipEx\"/>. This behavior is the same for windowed and full-screen modes.</li> <li>If dwFlags = <see cref=\"F:SharpDX.Direct3D9.Present.LinearContent\"/>, gamma correction is performed from linear space to sRGB for windowed swap chains. This flag will take effect only when the driver exposes <see cref=\"F:SharpDX.Direct3D9.Caps3.LinearToSrgbPresentation\"/> (see Gamma (Direct3D 9)).</li> </ul> </dd></param>\t\n            <returns><p>Possible return values include: <see cref=\"F:SharpDX.Result.Ok\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.DeviceLost\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.DeviceHung\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.DeviceRemoved\"/>, or <see cref=\"F:SharpDX.Direct3D9.ResultCode.OutOfVideoMemory\"/> (see <strong>D3DERR</strong>). See Lost Device Behavior Changes for more information about lost, hung, and removed devices.</p><table> <tr><td> <p>Differences between Direct3D 9 and Direct3D 9Ex:</p> <p><strong><see cref=\"F:SharpDX.Direct3D9.SwapEffect.FlipEx\"/></strong> is only available in Direct3D9Ex running on Windows 7 (or more current operating system).</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>Similar to the <strong><see cref=\"M:SharpDX.Direct3D9.Device.Present\"/></strong> Method, PresentEx adds a dwflags parameter.</p><p>When the swapchain is created with <strong><see cref=\"F:SharpDX.Direct3D9.SwapEffect.FlipEx\"/></strong> flag, <strong>pSourceRect</strong>, <strong>pDestRect</strong> and <strong>pDirtyRegion</strong> values must be set to <strong><c>null</c></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9Ex::PresentEx']/*\"/>\t\n            <msdn-id>bb174343</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9Ex::PresentEx([In] const void* pSourceRect,[In] const void* pDestRect,[In] HWND hDestWindowOverride,[In] const RGNDATA* pDirtyRegion,[In] unsigned int dwFlags)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9Ex::PresentEx</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.DeviceEx.GetGPUThreadPriority(System.Int32@)\">\n            <summary>\t\n            <p>Get the priority of the GPU thread.</p>\t\n            </summary>\t\n            <param name=\"priorityRef\"><dd>  <p>Current GPU priority. Valid values range from -7 to 7.</p> </dd></param>\t\n            <returns><p>Possible return values include: <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/> or <see cref=\"F:SharpDX.Direct3D9.ResultCode.DeviceRemoved\"/> (see D3DERR).</p></returns>\t\n            <remarks>\t\n            <p>Use <strong><see cref=\"M:SharpDX.Direct3D9.DeviceEx.SetGPUThreadPriority(System.Int32)\"/></strong> to set the priority of a thread.</p><p>This method will retrieve the priority of the thread stored with the Direct3D device even if it was created with the <see cref=\"F:SharpDX.Direct3D9.CreateFlags.PureDevice\"/> flag.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9Ex::GetGPUThreadPriority']/*\"/>\t\n            <msdn-id>bb174341</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9Ex::GetGPUThreadPriority([Out] int* pPriority)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9Ex::GetGPUThreadPriority</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.DeviceEx.SetGPUThreadPriority(System.Int32)\">\n            <summary>\t\n            <p>Set the priority on the GPU thread.</p>\t\n            </summary>\t\n            <param name=\"priority\"><dd>  <p>The thread priority, ranging from -7 to 7.</p> </dd></param>\t\n            <returns><p>Possible return values include: <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, or <see cref=\"F:SharpDX.Direct3D9.ResultCode.DeviceRemoved\"/> (see D3DERR).</p></returns>\t\n            <remarks>\t\n            <p>GPU thread priority is not reset when a device is lost. The effects of calls to this method are not recorded in state blocks.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9Ex::SetGPUThreadPriority']/*\"/>\t\n            <msdn-id>bb174346</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9Ex::SetGPUThreadPriority([In] int Priority)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9Ex::SetGPUThreadPriority</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.DeviceEx.WaitForVBlank(System.Int32)\">\n            <summary>\t\n            <p>Suspend execution of the calling thread until the next vertical blank signal.</p>\t\n            </summary>\t\n            <param name=\"iSwapChain\"><dd>  <p>Swap chain index. This is an optional, zero-based index used to specify a swap chain on a multihead card.</p> </dd></param>\t\n            <returns><p>This method will always return <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>.</p></returns>\t\n            <remarks>\t\n            <p>This method allows applications to efficiently throttle their frame rate to that of the monitor associated with the device. Following a vertical blank, the amount of time it takes for the thread to wake up is typically very short.</p><p>In some scenarios the hardware may stop generating vertical blank signals when nothing is being displayed on the monitor. In this case, the method will wait approximately 100ms and return with <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9Ex::WaitForVBlank']/*\"/>\t\n            <msdn-id>bb174349</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9Ex::WaitForVBlank([In] unsigned int iSwapChain)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9Ex::WaitForVBlank</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.DeviceEx.CheckResourceResidency(SharpDX.Direct3D9.Resource[],System.Int32)\">\n            <summary>\t\n            <p>Checks an array of resources to determine if it is likely that they will cause a large stall at Draw time because the system must make the resources GPU-accessible.</p>\t\n            </summary>\t\n            <param name=\"resourceArrayRef\"><dd>  <p>An array of <see cref=\"T:SharpDX.Direct3D9.Resource\"/> references that indicate the resources to check (for a description of <see cref=\"T:SharpDX.Direct3D9.Resource\"/>, see the DirectX SDK documentation).</p> </dd></param>\t\n            <param name=\"numResources\"><dd>  <p>A value indicating the number of resources passed into the <em>pResourceArray</em> parameter up to a maximum of 65535.</p> </dd></param>\t\n            <returns><p>If all the resources are in GPU-accessible memory, the method will return <see cref=\"F:SharpDX.Result.Ok\"/>. The system may need to perform a remapping operation to promote the resources, but will not have to copy data.</p><p> If no allocation that comprises the resources is on disk, but at least one allocation is not in GPU-accessible memory, the method will return <see cref=\"F:SharpDX.Direct3D9.ResultCode.ResidentInSharedMemory\"/>. The system may need to perform a copy to promote the resource.</p><p> If at least one allocation that comprises the resources is on disk, this method will return S_NOT_RESIDENT.  The system may need to perform a copy to promote the resource.</p></returns>\t\n            <remarks>\t\n            <p>This API is no more than a reasonable guess at residency, since resources may have been demoted by the time the application uses them.</p><p>The expected usage pattern is as follows. If the application determines that a set of resources are not resident, then the application will substitute a lower-LOD version of the resource and continue with rendering. The video memory manager API, offers a feature to allow the application to express that it would like these lower-LOD resources to be made more likely to stay resident in GPU-accessible memory. It is the app's responsibility to create, fill and destroy these lower-LOD versions, if it so chooses.</p><p>The application also needs to begin promotion of the higher-LOD versions when the residency check indicates that the resource is not resident in GPU-accessible memory. Since a per-process lock exists in kernel mode, a performant implementation will spawn a separate process whose sole job is to promote resources. The application communicates resource identity between the two process by means of the Sharing Resources shared surfaces API and promotes them by means of the <strong>SetPriority</strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9Ex::CheckResourceResidency']/*\"/>\t\n            <msdn-id>bb174339</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9Ex::CheckResourceResidency([In, Buffer] IDirect3DResource9** pResourceArray,[In] unsigned int NumResources)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9Ex::CheckResourceResidency</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.DeviceEx.CheckResourceResidency(SharpDX.ComArray{SharpDX.Direct3D9.Resource},System.Int32)\">\n            <summary>\t\n            <p>Checks an array of resources to determine if it is likely that they will cause a large stall at Draw time because the system must make the resources GPU-accessible.</p>\t\n            </summary>\t\n            <param name=\"resourceArrayRef\"><dd>  <p>An array of <see cref=\"T:SharpDX.Direct3D9.Resource\"/> references that indicate the resources to check (for a description of <see cref=\"T:SharpDX.Direct3D9.Resource\"/>, see the DirectX SDK documentation).</p> </dd></param>\t\n            <param name=\"numResources\"><dd>  <p>A value indicating the number of resources passed into the <em>pResourceArray</em> parameter up to a maximum of 65535.</p> </dd></param>\t\n            <returns><p>If all the resources are in GPU-accessible memory, the method will return <see cref=\"F:SharpDX.Result.Ok\"/>. The system may need to perform a remapping operation to promote the resources, but will not have to copy data.</p><p> If no allocation that comprises the resources is on disk, but at least one allocation is not in GPU-accessible memory, the method will return <see cref=\"F:SharpDX.Direct3D9.ResultCode.ResidentInSharedMemory\"/>. The system may need to perform a copy to promote the resource.</p><p> If at least one allocation that comprises the resources is on disk, this method will return S_NOT_RESIDENT.  The system may need to perform a copy to promote the resource.</p></returns>\t\n            <remarks>\t\n            <p>This API is no more than a reasonable guess at residency, since resources may have been demoted by the time the application uses them.</p><p>The expected usage pattern is as follows. If the application determines that a set of resources are not resident, then the application will substitute a lower-LOD version of the resource and continue with rendering. The video memory manager API, offers a feature to allow the application to express that it would like these lower-LOD resources to be made more likely to stay resident in GPU-accessible memory. It is the app's responsibility to create, fill and destroy these lower-LOD versions, if it so chooses.</p><p>The application also needs to begin promotion of the higher-LOD versions when the residency check indicates that the resource is not resident in GPU-accessible memory. Since a per-process lock exists in kernel mode, a performant implementation will spawn a separate process whose sole job is to promote resources. The application communicates resource identity between the two process by means of the Sharing Resources shared surfaces API and promotes them by means of the <strong>SetPriority</strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9Ex::CheckResourceResidency']/*\"/>\t\n            <msdn-id>bb174339</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9Ex::CheckResourceResidency([In, Buffer] IDirect3DResource9** pResourceArray,[In] unsigned int NumResources)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9Ex::CheckResourceResidency</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.DeviceEx.SetMaximumFrameLatency(System.Int32)\">\n            <summary>\t\n            <p>Set the number of frames that the system is allowed to queue for rendering.</p>\t\n            </summary>\t\n            <param name=\"maxLatency\"><dd>  <p>The maximum number of back buffer frames that a driver can queue. The value is typically 3, but can range from 1 to 20. A value of 0 will reset latency to the default. For multi-head devices, <em>MaxLatency</em> is specified per-head.</p> </dd></param>\t\n            <returns><p>Possible return values include: <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/> or <see cref=\"F:SharpDX.Direct3D9.ResultCode.DeviceRemoved\"/> (see D3DERR).</p></returns>\t\n            <remarks>\t\n            <p>Frame latency is the number of frames that are allowed to be stored in a queue, before submission for rendering. Latency is often used to control how the CPU chooses between responding to user input and frames that are in the render queue.</p><p>It is often beneficial for applications that have no user input (for example, video playback) to queue more than 3 frames of data.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9Ex::SetMaximumFrameLatency']/*\"/>\t\n            <msdn-id>bb174347</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9Ex::SetMaximumFrameLatency([In] unsigned int MaxLatency)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9Ex::SetMaximumFrameLatency</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.DeviceEx.GetMaximumFrameLatency(System.Int32@)\">\n            <summary>\t\n            <p>Retrieves the number of frames of data that the system is allowed to queue.</p>\t\n            </summary>\t\n            <param name=\"maxLatencyRef\"><dd>  <p>Returns the number of frames that can be queued for render. The value is typically 3, but can range from 1 to 20.</p> </dd></param>\t\n            <returns><p>Possible return values include: <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.DeviceLost\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.DeviceRemoved\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.DriverInternalError\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, or <see cref=\"F:SharpDX.Direct3D9.ResultCode.OutOfVideoMemory\"/> (see D3DERR).</p></returns>\t\n            <remarks>\t\n            <p>Frame latency is the number of frames that are allowed to be stored in a queue, before submission for rendering. Latency is often used to control how the CPU chooses between responding to user input and frames that are in the render queue.</p><p>It is often beneficial for applications that have no user input (for example, video playback) to queue more than 3 frames of data.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9Ex::GetMaximumFrameLatency']/*\"/>\t\n            <msdn-id>bb174342</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9Ex::GetMaximumFrameLatency([Out] unsigned int* pMaxLatency)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9Ex::GetMaximumFrameLatency</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.DeviceEx.CheckDeviceState_(System.IntPtr)\">\n            <summary>\t\n            <p>Reports the current cooperative-level status of the Direct3D device for a windowed or full-screen application.</p>\t\n            </summary>\t\n            <param name=\"hDestinationWindow\"><dd>  <p>The destination window handle to check for occlusion. When this parameter is <strong><c>null</c></strong>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.PresentOccluded\"/> is returned when another device has fullscreen ownership. When the window handle is not <strong><c>null</c></strong>, window's client area is checked for occlusion. A window is occluded if any part of it is obscured by another application.</p> </dd></param>\t\n            <returns><p>Possible return values include: <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.DeviceLost\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.DeviceHung\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.DeviceRemoved\"/>, or <see cref=\"F:SharpDX.Direct3D9.ResultCode.OutOfVideoMemory\"/> (see D3DERR), or <see cref=\"F:SharpDX.Direct3D9.ResultCode.PresentModeChanged\"/>, or <see cref=\"F:SharpDX.Direct3D9.ResultCode.PresentOccluded\"/> (see S_PRESENT).</p></returns>\t\n            <remarks>\t\n            <p>This method replaces <strong><see cref=\"M:SharpDX.Direct3D9.Device.TestCooperativeLevel\"/></strong>, which always returns <see cref=\"F:SharpDX.Result.Ok\"/> in Direct3D 9Ex applications.</p><p>We recommend not to call <strong>CheckDeviceState</strong> every frame. Instead, call <strong>CheckDeviceState</strong> only if the <strong><see cref=\"M:SharpDX.Direct3D9.DeviceEx.PresentEx(SharpDX.Direct3D9.Present)\"/></strong> method returns a failure code.</p><p>See Lost Device Behavior Changes for more information about lost, hung, and removed devices.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9Ex::CheckDeviceState']/*\"/>\t\n            <msdn-id>bb174338</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9Ex::CheckDeviceState([In] HWND hDestinationWindow)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9Ex::CheckDeviceState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.DeviceEx.CreateRenderTargetEx(System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.MultisampleType,System.Int32,SharpDX.Bool,System.IntPtr,System.Int32)\">\n            <summary>\t\n            <p>Creates a render-target surface.</p>\t\n            </summary>\t\n            <param name=\"width\"><dd>  <p>Width of the render-target surface, in pixels. </p> </dd></param>\t\n            <param name=\"height\"><dd>  <p>Height of the render-target surface, in pixels. </p> </dd></param>\t\n            <param name=\"format\"><dd>  <p>Member of the <see cref=\"T:SharpDX.Direct3D9.Format\"/> enumerated type, describing the format of the render target. </p> </dd></param>\t\n            <param name=\"multiSample\"><dd>  <p>Member of the <strong><see cref=\"T:SharpDX.Direct3D9.MultisampleType\"/></strong> enumerated type, which describes the multisampling buffer type. This parameter specifies the antialiasing type for this render target. When this surface is passed to <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetRenderTarget(System.Int32,SharpDX.Direct3D9.Surface)\"/></strong>, its multisample type must be the same as that of the depth-stencil set by <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetDepthStencilSurface(SharpDX.Direct3D9.Surface)\"/></strong>. </p> </dd></param>\t\n            <param name=\"multisampleQuality\"><dd>  <p>Quality level. The valid range is between zero and one less than the level returned by pQualityLevels used by  <strong><see cref=\"M:SharpDX.Direct3D9.Direct3D.CheckDeviceMultiSampleType_(System.Int32,SharpDX.Direct3D9.DeviceType,SharpDX.Direct3D9.Format,SharpDX.Bool,SharpDX.Direct3D9.MultisampleType,System.Int32@)\"/></strong>. Passing a larger value returns the error, <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>. The MultisampleQuality values of paired render targets, depth stencil surfaces, and the multisample type must all match.</p> </dd></param>\t\n            <param name=\"lockable\"><dd>  <p>Render targets are not lockable unless the application specifies <strong>TRUE</strong> for Lockable.</p> <p>Note that lockable render targets reduce performance on some graphics hardware. The readback performance (moving data from video memory to system memory) depends on the type of hardware used (AGP vs. PCI Express) and is usually far lower than upload performance (moving data from system to video memory). If you need read access to render targets, use <strong>GetRenderTargetData</strong> instead of lockable render targets.</p> </dd></param>\t\n            <param name=\"sharedHandleRef\"><dd>  <p>Reserved. Set this parameter to <strong><c>null</c></strong>. This parameter can be used in Direct3D 9 for Windows Vista to share resources.</p> </dd></param>\t\n            <param name=\"usage\"><dd>  <p>Combination of one or more <strong><see cref=\"T:SharpDX.Direct3D9.Usage\"/></strong> constants which can be OR'd together. Value of 0 indicates no usage.</p> </dd></param>\t\n            <returns><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D9.Surface\"/></strong> interface. </p> </dd></returns>\t\n            <remarks>\t\n            <p>Render-target surfaces are placed in the <see cref=\"F:SharpDX.Direct3D9.Pool.Default\"/> memory class.</p><p>The creation of lockable, multisampled render targets is not supported.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9Ex::CreateRenderTargetEx']/*\"/>\t\n            <msdn-id>bb509713</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9Ex::CreateRenderTargetEx([In] unsigned int Width,[In] unsigned int Height,[In] D3DFORMAT Format,[In] D3DMULTISAMPLE_TYPE MultiSample,[In] unsigned int MultisampleQuality,[In] BOOL Lockable,[Out] IDirect3DSurface9** ppSurface,[In] void** pSharedHandle,[In] unsigned int Usage)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9Ex::CreateRenderTargetEx</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.DeviceEx.CreateOffscreenPlainSurfaceEx(System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,System.IntPtr,System.Int32)\">\n            <summary>\t\n            <p>Create an off-screen surface.</p>\t\n            </summary>\t\n            <param name=\"width\"><dd>  <p>Width of the surface.</p> </dd></param>\t\n            <param name=\"height\"><dd>  <p>Height of the surface.</p> </dd></param>\t\n            <param name=\"format\"><dd>  <p>Format of the surface. See <see cref=\"T:SharpDX.Direct3D9.Format\"/>. </p> </dd></param>\t\n            <param name=\"pool\"><dd>  <p>Surface pool type. See <strong><see cref=\"T:SharpDX.Direct3D9.Pool\"/></strong>.</p> </dd></param>\t\n            <param name=\"sharedHandleRef\"><dd>  <p>Reserved. Set this parameter to <strong><c>null</c></strong>. This parameter can be used in Direct3D 9 for Windows Vista to share resources.</p> </dd></param>\t\n            <param name=\"usage\"><dd>  <p>Combination of one or more <strong><see cref=\"T:SharpDX.Direct3D9.Usage\"/></strong> constants which can be OR'd together. Value of 0 indicates no usage.</p> </dd></param>\t\n            <returns><dd>  <p>Pointer to the <strong><see cref=\"T:SharpDX.Direct3D9.Surface\"/></strong> interface created.</p> </dd></returns>\t\n            <remarks>\t\n            <p><see cref=\"F:SharpDX.Direct3D9.Pool.Scratch\"/> will return a surface that has identical characteristics to a surface created by the DirectX 8.x method CreateImageSurface.</p><p><see cref=\"F:SharpDX.Direct3D9.Pool.Default\"/> is the appropriate pool for use with the <strong><see cref=\"M:SharpDX.Direct3D9.Device.StretchRectangle(SharpDX.Direct3D9.Surface,SharpDX.Direct3D9.Surface,SharpDX.Direct3D9.TextureFilter)\"/></strong> and <strong><see cref=\"M:SharpDX.Direct3D9.Device.ColorFill(SharpDX.Direct3D9.Surface,SharpDX.ColorBGRA)\"/></strong>.</p><p><see cref=\"F:SharpDX.Direct3D9.Pool.Managed\"/> is not allowed when creating an offscreen plain surface. For more information about memory pools, see <strong><see cref=\"T:SharpDX.Direct3D9.Pool\"/></strong>.</p><p>Off-screen plain surfaces are always lockable, regardless of their pool types.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9Ex::CreateOffscreenPlainSurfaceEx']/*\"/>\t\n            <msdn-id>bb509712</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9Ex::CreateOffscreenPlainSurfaceEx([In] unsigned int Width,[In] unsigned int Height,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[Out] IDirect3DSurface9** ppSurface,[In] void** pSharedHandle,[In] unsigned int Usage)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9Ex::CreateOffscreenPlainSurfaceEx</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.DeviceEx.CreateDepthStencilSurfaceEx(System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.MultisampleType,System.Int32,SharpDX.Bool,System.IntPtr,System.Int32)\">\n            <summary>\t\n            <p>Creates a depth-stencil surface.</p>\t\n            </summary>\t\n            <param name=\"width\"><dd>  <p>Width of the depth-stencil surface, in pixels. </p> </dd></param>\t\n            <param name=\"height\"><dd>  <p>Height of the depth-stencil surface, in pixels. </p> </dd></param>\t\n            <param name=\"format\"><dd>  <p>Member of the <see cref=\"T:SharpDX.Direct3D9.Format\"/> enumerated type, describing the format of the depth-stencil surface. This value must be one of the enumerated depth-stencil formats for this device.</p> </dd></param>\t\n            <param name=\"multiSample\"><dd>  <p>Member of the <strong><see cref=\"T:SharpDX.Direct3D9.MultisampleType\"/></strong> enumerated type, describing the multisampling buffer type. This value must be one of the allowed multisample types. When this surface is passed to <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetDepthStencilSurface(SharpDX.Direct3D9.Surface)\"/></strong>, its multisample type must be the same as that of the render target set by <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetRenderTarget(System.Int32,SharpDX.Direct3D9.Surface)\"/></strong>.</p> </dd></param>\t\n            <param name=\"multisampleQuality\"><dd>  <p>Quality level. The valid range is between zero and one less than the level returned by pQualityLevels used by  <strong><see cref=\"M:SharpDX.Direct3D9.Direct3D.CheckDeviceMultiSampleType_(System.Int32,SharpDX.Direct3D9.DeviceType,SharpDX.Direct3D9.Format,SharpDX.Bool,SharpDX.Direct3D9.MultisampleType,System.Int32@)\"/></strong>. Passing a larger value returns the error <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>. The MultisampleQuality values of paired render targets, depth stencil surfaces, and the MultiSample type must all match.</p> </dd></param>\t\n            <param name=\"discard\"><dd>  <p>Set this flag to <strong>TRUE</strong> to enable z-buffer discarding, and <strong><see cref=\"F:SharpDX.Result.False\"/></strong> otherwise.\t\t\t\tIf this flag is set, the contents of the depth stencil buffer will be invalid after calling either <strong><see cref=\"M:SharpDX.Direct3D9.Device.Present\"/></strong> or <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetDepthStencilSurface(SharpDX.Direct3D9.Surface)\"/></strong> with a different depth surface.</p> <p>This flag has the same behavior as the constant,  <see cref=\"F:SharpDX.Direct3D9.PresentFlags.DiscardDepthStencil\"/>, in <see cref=\"T:SharpDX.Direct3D9.PresentFlags\"/>.</p> </dd></param>\t\n            <param name=\"sharedHandleRef\"><dd>  <p>Reserved. Set this parameter to <strong><c>null</c></strong>. This parameter can be used in Direct3D 9 for Windows Vista to share resources.</p> </dd></param>\t\n            <param name=\"usage\"><dd>  <p>Combination of one or more <strong><see cref=\"T:SharpDX.Direct3D9.Usage\"/></strong> constants which can be OR'd together. Value of 0 indicates no usage.</p> </dd></param>\t\n            <returns><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D9.Surface\"/></strong> interface, representing the created depth-stencil surface resource. </p> </dd></returns>\t\n            <remarks>\t\n            <p>The memory class of the depth-stencil buffer is always <see cref=\"F:SharpDX.Direct3D9.Pool.Default\"/>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9Ex::CreateDepthStencilSurfaceEx']/*\"/>\t\n            <msdn-id>bb509711</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9Ex::CreateDepthStencilSurfaceEx([In] unsigned int Width,[In] unsigned int Height,[In] D3DFORMAT Format,[In] D3DMULTISAMPLE_TYPE MultiSample,[In] unsigned int MultisampleQuality,[In] BOOL Discard,[Out] IDirect3DSurface9** ppSurface,[In] void** pSharedHandle,[In] unsigned int Usage)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9Ex::CreateDepthStencilSurfaceEx</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.DeviceEx.ResetEx(SharpDX.Direct3D9.PresentParameters@,System.IntPtr)\">\n            <summary>\t\n            <p>Resets the type, size, and format of the swap chain with all other surfaces persistent.</p>\t\n            </summary>\t\n            <param name=\"presentationParametersRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.PresentParameters\"/></strong> structure, describing the new presentation parameters. This value cannot be <strong><c>null</c></strong>.  </p> <p>When switching to full-screen mode, Direct3D will try to find a desktop format that matches the back buffer format, so that back buffer and front buffer formats will be identical (to eliminate the need for color conversion).</p> <p>When this method returns:</p> <ul> <li>BackBufferCount, BackBufferWidth, and BackBufferHeight are set to zero.</li> <li>BackBufferFormat is set to <see cref=\"T:SharpDX.Direct3D9.Format\"/> for windowed mode only; a full-screen mode must specify a format.</li> </ul> </dd></param>\t\n            <param name=\"fullscreenDisplayModeRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.DisplayModeEx\"/></strong> structure that describes the properties of the desired display mode. This value must be provided for fullscreen applications, but can be <strong><c>null</c></strong> for windowed applications. </p> </dd></param>\t\n            <returns><p>The method can return: <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.DeviceLost\"/> or <see cref=\"F:SharpDX.Direct3D9.ResultCode.DeviceHung\"/> (see D3DERR). </p><p>If this method returns <see cref=\"F:SharpDX.Direct3D9.ResultCode.DeviceLost\"/> or <see cref=\"F:SharpDX.Direct3D9.ResultCode.DeviceHung\"/> then the application can only call <strong><see cref=\"M:SharpDX.Direct3D9.DeviceEx.ResetEx(SharpDX.Direct3D9.PresentParameters@)\"/></strong>, <strong><see cref=\"M:SharpDX.Direct3D9.DeviceEx.CheckDeviceState_(System.IntPtr)\"/></strong> or release the interface reference; any other API call will cause an exception.</p></returns>\t\n            <remarks>\t\n            <p>If a call to <strong><see cref=\"M:SharpDX.Direct3D9.DeviceEx.ResetEx(SharpDX.Direct3D9.PresentParameters@)\"/></strong> fails, the device will be placed in the lost state (as indicated by a return value of <see cref=\"F:SharpDX.Direct3D9.ResultCode.DeviceLost\"/> from a call to <strong><see cref=\"M:SharpDX.Direct3D9.DeviceEx.CheckDeviceState_(System.IntPtr)\"/></strong>). Refer to <strong><see cref=\"M:SharpDX.Direct3D9.DeviceEx.CheckDeviceState_(System.IntPtr)\"/></strong> and Lost Device Behavior Changes for further information concerning the use of <strong><see cref=\"M:SharpDX.Direct3D9.DeviceEx.ResetEx(SharpDX.Direct3D9.PresentParameters@)\"/></strong> in the context of lost devices.</p><p>Unlike previous versions of DirectX, calling <strong><see cref=\"M:SharpDX.Direct3D9.DeviceEx.ResetEx(SharpDX.Direct3D9.PresentParameters@)\"/></strong> does not cause surfaces, textures or state information to be lost.</p><p>Pixel shaders and vertex shaders survive <strong><see cref=\"M:SharpDX.Direct3D9.DeviceEx.ResetEx(SharpDX.Direct3D9.PresentParameters@)\"/></strong> calls for Direct3D 9. They do not need to be re-created explicitly by the application.</p><p>There are two different types of swap chains: full-screen or windowed. If the new swap chain is full-screen, the adapter will be placed in the display mode that matches the new size.</p><p>Applications can expect messages to be sent to them during this call (for example, before this call is returned); applications should take precautions not to call into Direct3D at this time.</p><p>A call to <strong><see cref=\"M:SharpDX.Direct3D9.DeviceEx.ResetEx(SharpDX.Direct3D9.PresentParameters@)\"/></strong> will fail if called on a different thread than that used to create the device being reset.</p><p><see cref=\"F:SharpDX.Direct3D9.Format.Unknown\"/> can be specified for the windowed mode back buffer format when calling <strong><see cref=\"M:SharpDX.Direct3D9.Direct3DEx.CreateDeviceEx(System.Int32,SharpDX.Direct3D9.DeviceType,System.IntPtr,System.Int32,SharpDX.Direct3D9.PresentParameters[],SharpDX.Direct3D9.DisplayModeEx[],SharpDX.Direct3D9.DeviceEx)\"/></strong>, <strong><see cref=\"M:SharpDX.Direct3D9.DeviceEx.ResetEx(SharpDX.Direct3D9.PresentParameters@)\"/></strong>, and <strong><see cref=\"M:SharpDX.Direct3D9.Device.CreateAdditionalSwapChain(SharpDX.Direct3D9.PresentParameters@,SharpDX.Direct3D9.SwapChain)\"/></strong>. This means the application does not have to query the current desktop format before calling <strong><see cref=\"M:SharpDX.Direct3D9.Direct3DEx.CreateDeviceEx(System.Int32,SharpDX.Direct3D9.DeviceType,System.IntPtr,System.Int32,SharpDX.Direct3D9.PresentParameters[],SharpDX.Direct3D9.DisplayModeEx[],SharpDX.Direct3D9.DeviceEx)\"/></strong> for windowed mode. For full-screen mode, the back buffer format must be specified. Setting BackBufferCount equal to zero (BackBufferCount = 0) results in one back buffer.</p><p>When trying to reset more than one display adapter in a group, set pPresentationParameters to point to an array of <strong><see cref=\"T:SharpDX.Direct3D9.PresentParameters\"/></strong> structures, one for each display in the adapter group.</p><p>If a multihead device was created with <see cref=\"F:SharpDX.Direct3D9.CreateFlags.AdapterGroupDevice\"/>, <strong><see cref=\"M:SharpDX.Direct3D9.DeviceEx.ResetEx(SharpDX.Direct3D9.PresentParameters@)\"/></strong> requires an array of <strong><see cref=\"T:SharpDX.Direct3D9.PresentParameters\"/></strong> structures wherein each structure must specify a full-screen display. To switch back to windowed mode, the application must destroy the device and re-create a non-multihead device in windowed mode.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9Ex::ResetEx']/*\"/>\t\n            <msdn-id>bb174344</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9Ex::ResetEx([In] D3DPRESENT_PARAMETERS* pPresentationParameters,[In] void* pFullscreenDisplayMode)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9Ex::ResetEx</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.DeviceEx.GetDisplayModeEx(System.Int32,System.IntPtr)\">\n            <summary>\t\n            <p>Retrieves the display mode's spatial resolution, color resolution, refresh frequency, and rotation settings.</p>\t\n            </summary>\t\n            <param name=\"iSwapChain\"><dd>  <p>An unsigned integer specifying the swap chain.</p> </dd></param>\t\n            <param name=\"rotationRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.DisplayRotation\"/></strong> indicating the type of screen rotation the application will do. The value returned through this reference is important when the <see cref=\"F:SharpDX.Direct3D9.PresentFlags.NoAutoRotate\"/> flag is used; otherwise, it can be set to <strong><c>null</c></strong>.</p> </dd></param>\t\n            <returns><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.DisplayModeEx\"/></strong> structure containing data about the display mode of the adapter. As opposed to the display mode of the device, which may not be active if the device does not own full-screen mode. Can be set to <strong><c>null</c></strong>.</p> </dd></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9Ex::GetDisplayModeEx']/*\"/>\t\n            <msdn-id>bb509714</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9Ex::GetDisplayModeEx([In] unsigned int iSwapChain,[Out] D3DDISPLAYMODEEX* pMode,[In] void* pRotation)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9Ex::GetDisplayModeEx</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.DeviceEx.GPUThreadPriority\">\n            <summary>\t\n            <p>Get or sets the priority of the GPU thread.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Use <strong><see cref=\"M:SharpDX.Direct3D9.DeviceEx.SetGPUThreadPriority(System.Int32)\"/></strong> to set the priority of a thread.</p><p>This method will retrieve the priority of the thread stored with the Direct3D device even if it was created with the <see cref=\"F:SharpDX.Direct3D9.CreateFlags.PureDevice\"/> flag.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9Ex::GetGPUThreadPriority']/*\"/>\t\n            <msdn-id>bb174341</msdn-id>\t\n            <unmanaged>GetGPUThreadPriority / SetGPUThreadPriority</unmanaged>\t\n            <unmanaged-short>GetGPUThreadPriority</unmanaged-short>\t\n            <unmanaged>HRESULT IDirect3DDevice9Ex::GetGPUThreadPriority([Out] int* pPriority)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.DeviceEx.MaximumFrameLatency\">\n            <summary>\t\n            <p>Retrieves or sets the number of frames of data that the system is allowed to queue.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Frame latency is the number of frames that are allowed to be stored in a queue, before submission for rendering. Latency is often used to control how the CPU chooses between responding to user input and frames that are in the render queue.</p><p>It is often beneficial for applications that have no user input (for example, video playback) to queue more than 3 frames of data.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDevice9Ex::GetMaximumFrameLatency']/*\"/>\t\n            <msdn-id>bb174342</msdn-id>\t\n            <unmanaged>GetMaximumFrameLatency / SetMaximumFrameLatency</unmanaged>\t\n            <unmanaged-short>GetMaximumFrameLatency</unmanaged-short>\t\n            <unmanaged>HRESULT IDirect3DDevice9Ex::GetMaximumFrameLatency([Out] unsigned int* pMaxLatency)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.Direct3D\">\n            <summary>\t\n            <p>Applications use the methods of the <see cref=\"T:SharpDX.Direct3D9.Direct3D\"/> interface to create Microsoft Direct3D objects and set up the environment. This interface includes methods for enumerating and retrieving capabilities of the device.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The <strong><see cref=\"T:SharpDX.Direct3D9.Direct3D\"/></strong> interface is obtained by calling the <strong>Direct3DCreate9</strong> function.</p><p>The LPDIRECT3D9 and PDIRECT3D9 types are defined as references to the <strong><see cref=\"T:SharpDX.Direct3D9.Direct3D\"/></strong> interface. </p><pre><code>typedef struct <see cref=\"T:SharpDX.Direct3D9.Direct3D\"/> *LPDIRECT3D9, *PDIRECT3D9;</code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3D9']/*\"/>\t\n            <msdn-id>bb174300</msdn-id>\t\n            <unmanaged>IDirect3D9</unmanaged>\t\n            <unmanaged-short>IDirect3D9</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Direct3D.#ctor\">\n            <summary>\t\n            Create an IDirect3D9 object and return an interface to it.\t\n            </summary>\t\n            <remarks>\t\n             The Direct3D object is the first Direct3D COM object that your graphical application needs to create and the last object that your application needs to release. Functions for enumerating and retrieving capabilities of a device are accessible through the Direct3D object. This enables applications to select devices without creating them. Create an IDirect3D9 object as shown here: \t\n            <code> LPDIRECT3D9 g_pD3D = NULL; if( NULL == (g_pD3D = Direct3DCreate9(D3D_SDK_VERSION))) return E_FAIL; </code>\t\n            \t\n             The IDirect3D9 interface supports enumeration of active display adapters and allows the creation of <see cref=\"T:SharpDX.Direct3D9.Device\"/> objects. If the user dynamically adds adapters (either by adding devices to the desktop, or by hot-docking a laptop), those devices will not be included in the enumeration. Creating a new IDirect3D9 interface will expose the new devices. D3D_SDK_VERSION is passed to this function to ensure that the header files against which an application is compiled match the version of the runtime DLL's that are installed on the machine. D3D_SDK_VERSION is only changed in the runtime when a header change (or other code change) would require an application to be rebuilt. If this function fails, it indicates that the header file version does not match the runtime DLL version. For an example, see {{Creating a Device (Direct3D 9)}}. \t\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Direct3D.CheckVersion\">\n            <summary>\n            Checks the version of D3DX runtime against the version of this library..\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Direct3D.CheckDepthStencilMatch(System.Int32,SharpDX.Direct3D9.DeviceType,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Format)\">\n            <summary>\n            Determines whether a depth-stencil format is compatible with a render-target format in a particular display mode.\n            </summary>\n            <param name=\"adapter\">The adapter.</param>\n            <param name=\"deviceType\">Type of the device.</param>\n            <param name=\"adapterFormat\">The adapter format.</param>\n            <param name=\"renderTargetFormat\">The render target format.</param>\n            <param name=\"depthStencilFormat\">The depth stencil format.</param>\n            <returns>If the depth-stencil format is compatible with the render-target format in the display mode, this method returns <c>true</c></returns>\n            <unmanaged>HRESULT IDirect3D9::CheckDepthStencilMatch([In] unsigned int Adapter,[In] D3DDEVTYPE DeviceType,[In] D3DFORMAT AdapterFormat,[In] D3DFORMAT RenderTargetFormat,[In] D3DFORMAT DepthStencilFormat)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Direct3D.CheckDepthStencilMatch(System.Int32,SharpDX.Direct3D9.DeviceType,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Format,SharpDX.Result@)\">\n            <summary>\n            Determines whether a depth-stencil format is compatible with a render-target format in a particular display mode.\n            </summary>\n            <param name=\"adapter\">The adapter.</param>\n            <param name=\"deviceType\">Type of the device.</param>\n            <param name=\"adapterFormat\">The adapter format.</param>\n            <param name=\"renderTargetFormat\">The render target format.</param>\n            <param name=\"depthStencilFormat\">The depth stencil format.</param>\n            <param name=\"result\">The result.</param>\n            <returns>\n            If the depth-stencil format is compatible with the render-target format in the display mode, this method returns <c>true</c>\n            </returns>\n            <unmanaged>HRESULT IDirect3D9::CheckDepthStencilMatch([In] unsigned int Adapter,[In] D3DDEVTYPE DeviceType,[In] D3DFORMAT AdapterFormat,[In] D3DFORMAT RenderTargetFormat,[In] D3DFORMAT DepthStencilFormat)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Direct3D.CheckDeviceFormat(System.Int32,SharpDX.Direct3D9.DeviceType,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Usage,SharpDX.Direct3D9.ResourceType,SharpDX.Direct3D9.Format)\">\n            <summary>\n            Determines whether a surface format is available as a specified resource type and can be used as a texture, depth-stencil buffer, or render target, or any combination of the three, on a device representing this adapter.\n            </summary>\n            <param name=\"adapter\">The adapter.</param>\n            <param name=\"deviceType\">Type of the device.</param>\n            <param name=\"adapterFormat\">The adapter format.</param>\n            <param name=\"usage\">The usage.</param>\n            <param name=\"resourceType\">Type of the resource.</param>\n            <param name=\"checkFormat\">The check format.</param>\n            <returns>\n            If the format is compatible with the specified device for the requested usage, this method returns <c>true</c>\n            </returns>\n            <unmanaged>HRESULT IDirect3D9::CheckDeviceFormat([In] unsigned int Adapter,[In] D3DDEVTYPE DeviceType,[In] D3DFORMAT AdapterFormat,[In] unsigned int Usage,[In] D3DRESOURCETYPE RType,[In] D3DFORMAT CheckFormat)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Direct3D.CheckDeviceFormat(System.Int32,SharpDX.Direct3D9.DeviceType,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Usage,SharpDX.Direct3D9.ResourceType,SharpDX.Direct3D9.Format,SharpDX.Result@)\">\n            <summary>\n            Determines whether a surface format is available as a specified resource type and can be used as a texture, depth-stencil buffer, or render target, or any combination of the three, on a device representing this adapter.\n            </summary>\n            <param name=\"adapter\">The adapter.</param>\n            <param name=\"deviceType\">Type of the device.</param>\n            <param name=\"adapterFormat\">The adapter format.</param>\n            <param name=\"usage\">The usage.</param>\n            <param name=\"resourceType\">Type of the resource.</param>\n            <param name=\"checkFormat\">The check format.</param>\n            <param name=\"result\">The result.</param>\n            <returns>If the format is compatible with the specified device for the requested usage, this method returns <c>true</c></returns>\n            <unmanaged>HRESULT IDirect3D9::CheckDeviceFormat([In] unsigned int Adapter,[In] D3DDEVTYPE DeviceType,[In] D3DFORMAT AdapterFormat,[In] unsigned int Usage,[In] D3DRESOURCETYPE RType,[In] D3DFORMAT CheckFormat)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Direct3D.CheckDeviceFormatConversion(System.Int32,SharpDX.Direct3D9.DeviceType,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Format)\">\n            <summary>\n            Tests the device to see if it supports conversion from one display format to another.\n            </summary>\n            <param name=\"adapter\">The adapter.</param>\n            <param name=\"deviceType\">Type of the device.</param>\n            <param name=\"sourceFormat\">The source format.</param>\n            <param name=\"targetFormat\">The target format.</param>\n            <returns>\n            True if the method succeeds.\n            </returns>\n            <unmanaged>HRESULT IDirect3D9::CheckDeviceFormatConversion([In] unsigned int Adapter,[In] D3DDEVTYPE DeviceType,[In] D3DFORMAT SourceFormat,[In] D3DFORMAT TargetFormat)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Direct3D.CheckDeviceFormatConversion(System.Int32,SharpDX.Direct3D9.DeviceType,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Format,SharpDX.Result@)\">\n            <summary>\n            Tests the device to see if it supports conversion from one display format to another.\n            </summary>\n            <param name=\"adapter\">The adapter.</param>\n            <param name=\"deviceType\">Type of the device.</param>\n            <param name=\"sourceFormat\">The source format.</param>\n            <param name=\"targetFormat\">The target format.</param>\n            <param name=\"result\">The result.</param>\n            <returns>True if the method succeeds.</returns>\n            <unmanaged>HRESULT IDirect3D9::CheckDeviceFormatConversion([In] unsigned int Adapter,[In] D3DDEVTYPE DeviceType,[In] D3DFORMAT SourceFormat,[In] D3DFORMAT TargetFormat)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Direct3D.CheckDeviceMultisampleType(System.Int32,SharpDX.Direct3D9.DeviceType,SharpDX.Direct3D9.Format,System.Boolean,SharpDX.Direct3D9.MultisampleType)\">\n            <summary>\n            Determines if a multisampling technique is available on this device.\n            </summary>\n            <param name=\"adapter\">The adapter.</param>\n            <param name=\"deviceType\">Type of the device.</param>\n            <param name=\"surfaceFormat\">The surface format.</param>\n            <param name=\"windowed\">if set to <c>true</c> [windowed].</param>\n            <param name=\"multisampleType\">Type of the multisample.</param>\n            <returns>\n            f the device can perform the specified multisampling method, this method returns <c>true</c>\n            </returns>\n            <unmanaged>HRESULT IDirect3D9::CheckDeviceMultiSampleType([In] unsigned int Adapter,[In] D3DDEVTYPE DeviceType,[In] D3DFORMAT SurfaceFormat,[In] BOOL Windowed,[In] D3DMULTISAMPLE_TYPE MultiSampleType,[Out] unsigned int* pQualityLevels)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Direct3D.CheckDeviceMultisampleType(System.Int32,SharpDX.Direct3D9.DeviceType,SharpDX.Direct3D9.Format,System.Boolean,SharpDX.Direct3D9.MultisampleType,System.Int32@)\">\n            <summary>\n            Determines if a multisampling technique is available on this device.\n            </summary>\n            <param name=\"adapter\">The adapter.</param>\n            <param name=\"deviceType\">Type of the device.</param>\n            <param name=\"surfaceFormat\">The surface format.</param>\n            <param name=\"windowed\">if set to <c>true</c> [windowed].</param>\n            <param name=\"multisampleType\">Type of the multisample.</param>\n            <param name=\"qualityLevels\">The quality levels.</param>\n            <returns>\n            f the device can perform the specified multisampling method, this method returns <c>true</c>\n            </returns>\n            <unmanaged>HRESULT IDirect3D9::CheckDeviceMultiSampleType([In] unsigned int Adapter,[In] D3DDEVTYPE DeviceType,[In] D3DFORMAT SurfaceFormat,[In] BOOL Windowed,[In] D3DMULTISAMPLE_TYPE MultiSampleType,[Out] unsigned int* pQualityLevels)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Direct3D.CheckDeviceMultisampleType(System.Int32,SharpDX.Direct3D9.DeviceType,SharpDX.Direct3D9.Format,System.Boolean,SharpDX.Direct3D9.MultisampleType,System.Int32@,SharpDX.Result@)\">\n            <summary>\n            Determines if a multisampling technique is available on this device.\n            </summary>\n            <param name=\"adapter\">The adapter.</param>\n            <param name=\"deviceType\">Type of the device.</param>\n            <param name=\"surfaceFormat\">The surface format.</param>\n            <param name=\"windowed\">if set to <c>true</c> [windowed].</param>\n            <param name=\"multisampleType\">Type of the multisample.</param>\n            <param name=\"qualityLevels\">The quality levels.</param>\n            <param name=\"result\">The result.</param>\n            <returns>f the device can perform the specified multisampling method, this method returns <c>true</c></returns>\n            <unmanaged>HRESULT IDirect3D9::CheckDeviceMultiSampleType([In] unsigned int Adapter,[In] D3DDEVTYPE DeviceType,[In] D3DFORMAT SurfaceFormat,[In] BOOL Windowed,[In] D3DMULTISAMPLE_TYPE MultiSampleType,[Out] unsigned int* pQualityLevels)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Direct3D.CheckDeviceType(System.Int32,SharpDX.Direct3D9.DeviceType,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Format,System.Boolean)\">\n            <summary>\n            Verifies whether a hardware accelerated device type can be used on this adapter.\n            </summary>\n            <param name=\"adapter\">The adapter.</param>\n            <param name=\"deviceType\">Type of the device.</param>\n            <param name=\"adapterFormat\">The adapter format.</param>\n            <param name=\"backBufferFormat\">The back buffer format.</param>\n            <param name=\"windowed\">if set to <c>true</c> [windowed].</param>\n            <returns>\n              <c>true</c> if the device can be used on this adapter\n            </returns>\n            <unmanaged>HRESULT IDirect3D9::CheckDeviceType([In] unsigned int Adapter,[In] D3DDEVTYPE DevType,[In] D3DFORMAT AdapterFormat,[In] D3DFORMAT BackBufferFormat,[In] BOOL bWindowed)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Direct3D.CheckDeviceType(System.Int32,SharpDX.Direct3D9.DeviceType,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Format,System.Boolean,SharpDX.Result@)\">\n            <summary>\n            Verifies whether a hardware accelerated device type can be used on this adapter.\n            </summary>\n            <param name=\"adapter\">The adapter.</param>\n            <param name=\"deviceType\">Type of the device.</param>\n            <param name=\"adapterFormat\">The adapter format.</param>\n            <param name=\"backBufferFormat\">The back buffer format.</param>\n            <param name=\"windowed\">if set to <c>true</c> [windowed].</param>\n            <param name=\"result\">The result.</param>\n            <returns><c>true</c> if the device can be used on this adapter</returns>\n            <unmanaged>HRESULT IDirect3D9::CheckDeviceType([In] unsigned int Adapter,[In] D3DDEVTYPE DevType,[In] D3DFORMAT AdapterFormat,[In] D3DFORMAT BackBufferFormat,[In] BOOL bWindowed)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Direct3D.GetAdapterIdentifier(System.Int32)\">\n            <summary>\n            Get the physical display adapters present in the system when this <see cref=\"T:SharpDX.Direct3D9.Direct3D\"/> was instantiated.\n            </summary>\n            <param name=\"adapter\">The adapter.</param>\n            <returns>The physical display adapters</returns>\n            <unmanaged>HRESULT IDirect3D9::GetAdapterIdentifier([In] unsigned int Adapter,[In] unsigned int Flags,[Out] D3DADAPTER_IDENTIFIER9* pIdentifier)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Direct3D.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D9.Direct3D\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Direct3D.op_Explicit(System.IntPtr)~SharpDX.Direct3D9.Direct3D\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D9.Direct3D\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Direct3D.RegisterSoftwareDevice(System.IntPtr)\">\n            <summary>\t\n            <p>Registers a pluggable software device. Software devices provide software rasterization enabling applications to access a variety of software rasterizers.</p>\t\n            </summary>\t\n            <param name=\"initializeFunctionRef\"><dd>  <p>Pointer to the initialization function for the software device to be registered. </p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>. The method call is invalid. For example, a method's parameter may have an invalid value: <see cref=\"F:SharpDX.Direct3D9.ResultCode.OutOfVideoMemory\"/>. </p></returns>\t\n            <remarks>\t\n            <p>If the user's computer provides no special hardware acceleration for 3D operations, your application might emulate 3D hardware in software. Software rasterization devices emulate the functions of color 3D hardware in software. A software device runs more slowly than a hal. However, software devices take advantage of any special instructions supported by the CPU to increase performance. Instruction sets include the AMD 3DNow! instruction set on some AMD processors and the MMX instruction set supported by many Intel processors. Direct3D uses the 3D-Now! instruction set to accelerate transformation and lighting operations and the MMX instruction set to accelerate rasterization.</p><p>Software devices communicate with Direct3D through an interface similar to the hardware device driver interface (DDI).</p><p>Software devices are loaded by the application and registered with the <strong><see cref=\"T:SharpDX.Direct3D9.Direct3D\"/></strong> object. Direct3D uses the software device for rendering. </p><p>The Direct3D Driver Development Kit (DDK) provides the documentation and headers for developing pluggable software devices.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3D9::RegisterSoftwareDevice']/*\"/>\t\n            <msdn-id>bb174321</msdn-id>\t\n            <unmanaged>HRESULT IDirect3D9::RegisterSoftwareDevice([In] void* pInitializeFunction)</unmanaged>\t\n            <unmanaged-short>IDirect3D9::RegisterSoftwareDevice</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Direct3D.GetAdapterCount\">\n            <summary>\t\n            <p>Returns the number of adapters on the system.</p>\t\n            </summary>\t\n            <returns><p>A UINT value that denotes the number of adapters on the system at the time this <strong><see cref=\"T:SharpDX.Direct3D9.Direct3D\"/></strong> interface was instantiated.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3D9::GetAdapterCount']/*\"/>\t\n            <msdn-id>bb174315</msdn-id>\t\n            <unmanaged>unsigned int IDirect3D9::GetAdapterCount()</unmanaged>\t\n            <unmanaged-short>IDirect3D9::GetAdapterCount</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Direct3D.GetAdapterIdentifier(System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Describes the physical display adapters present in the system when the <strong><see cref=\"T:SharpDX.Direct3D9.Direct3D\"/></strong> interface was instantiated.</p>\t\n            </summary>\t\n            <param name=\"adapter\">No documentation.</param>\t\n            <param name=\"flags\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3D9::GetAdapterIdentifier']/*\"/>\t\n            <msdn-id>bb174317</msdn-id>\t\n            <unmanaged>HRESULT IDirect3D9::GetAdapterIdentifier([In] unsigned int Adapter,[In] unsigned int Flags,[Out] D3DADAPTER_IDENTIFIER9* pIdentifier)</unmanaged>\t\n            <unmanaged-short>IDirect3D9::GetAdapterIdentifier</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Direct3D.GetAdapterModeCount(System.Int32,SharpDX.Direct3D9.Format)\">\n            <summary>\t\n            <p>Returns the number of display modes available on this adapter.</p>\t\n            </summary>\t\n            <param name=\"adapter\"><dd>  <p>Ordinal number that denotes the display adapter. D3DADAPTER_DEFAULT is always the primary display adapter. </p> </dd></param>\t\n            <param name=\"format\"><dd>  <p>Identifies the format of the surface type using <see cref=\"T:SharpDX.Direct3D9.Format\"/>. Use <strong>EnumAdapterModes</strong> to see the valid formats.</p> </dd></param>\t\n            <returns><p>This method returns the number of display modes on this adapter or zero if Adapter is greater than or equal to the number of adapters on the system.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3D9::GetAdapterModeCount']/*\"/>\t\n            <msdn-id>bb174318</msdn-id>\t\n            <unmanaged>unsigned int IDirect3D9::GetAdapterModeCount([In] unsigned int Adapter,[In] D3DFORMAT Format)</unmanaged>\t\n            <unmanaged-short>IDirect3D9::GetAdapterModeCount</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Direct3D.EnumAdapterModes(System.Int32,SharpDX.Direct3D9.Format,System.Int32)\">\n            <summary>\t\n            <p>Queries the device to determine whether the specified adapter supports the requested format and display mode. This method could be used in a loop to enumerate all the available adapter modes.</p>\t\n            </summary>\t\n            <param name=\"adapter\"><dd>  <p>Ordinal number denoting the display adapter to enumerate. D3DADAPTER_DEFAULT is always the primary display adapter. This method returns <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/> when this value equals or exceeds the number of display adapters in the system. </p> </dd></param>\t\n            <param name=\"format\"><dd>  <p>Allowable pixel formats. See Remarks.</p> </dd></param>\t\n            <param name=\"mode\"><dd>  <p>Represents the display-mode index which is an unsigned integer between zero and the value returned by <strong>GetAdapterModeCount</strong> minus one.</p> </dd></param>\t\n            <returns><dd>  <p>A reference to the available display mode of type <strong><see cref=\"T:SharpDX.Direct3D9.DisplayMode\"/></strong>. See Remarks.</p> </dd></returns>\t\n            <remarks>\t\n            <p>An application supplies a display mode and a format to <strong>EnumAdapterModes</strong> which returns a display mode. This method could be used in a loop to enumerate all available display modes.</p><p>The application specifies a format and the enumeration is restricted to those display modes that exactly match the format (alpha is ignored). Allowed formats (which are members of <see cref=\"T:SharpDX.Direct3D9.Format\"/>) are as follows:</p><ul> <li><see cref=\"F:SharpDX.Direct3D9.Format.A1R5G5B5\"/></li> <li><see cref=\"F:SharpDX.Direct3D9.Format.A2R10G10B10\"/></li> <li><see cref=\"F:SharpDX.Direct3D9.Format.A8R8G8B8\"/></li> <li><see cref=\"F:SharpDX.Direct3D9.Format.R5G6B5\"/></li> <li><see cref=\"F:SharpDX.Direct3D9.Format.X1R5G5B5\"/></li> <li><see cref=\"F:SharpDX.Direct3D9.Format.X8R8G8B8\"/></li> </ul><p>In addition, <strong>EnumAdapterModes</strong> treats pixel formats 565 and 555 as equivalent, and returns the correct version. The difference comes into play only when the application locks the back buffer and there is an explicit flag that the application must set in order to accomplish this.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3D9::EnumAdapterModes']/*\"/>\t\n            <msdn-id>bb174314</msdn-id>\t\n            <unmanaged>HRESULT IDirect3D9::EnumAdapterModes([In] unsigned int Adapter,[In] D3DFORMAT Format,[In] unsigned int Mode,[Out] D3DDISPLAYMODE* pMode)</unmanaged>\t\n            <unmanaged-short>IDirect3D9::EnumAdapterModes</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Direct3D.GetAdapterDisplayMode(System.Int32)\">\n            <summary>\t\n            <p>Retrieves the current display mode of the adapter.</p>\t\n            </summary>\t\n            <param name=\"adapter\"><dd>  <p>Ordinal number that denotes the display adapter to query. D3DADAPTER_DEFAULT is always the primary display adapter. </p> </dd></param>\t\n            <returns><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.DisplayMode\"/></strong> structure, to be filled with information describing the current adapter's mode. </p> </dd></returns>\t\n            <remarks>\t\n            <p><strong>GetAdapterDisplayMode</strong> will not return the correct format when the display is in an extended format, such as 2:10:10:10. Instead, it returns the format X8R8G8B8. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3D9::GetAdapterDisplayMode']/*\"/>\t\n            <msdn-id>bb174316</msdn-id>\t\n            <unmanaged>HRESULT IDirect3D9::GetAdapterDisplayMode([In] unsigned int Adapter,[Out] D3DDISPLAYMODE* pMode)</unmanaged>\t\n            <unmanaged-short>IDirect3D9::GetAdapterDisplayMode</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Direct3D.CheckDeviceType_(System.Int32,SharpDX.Direct3D9.DeviceType,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Format,SharpDX.Bool)\">\n            <summary>\t\n            <p>Verifies whether a hardware accelerated device type can be used on this adapter.</p>\t\n            </summary>\t\n            <param name=\"adapter\"><dd>  <p>Ordinal number denoting the display adapter to enumerate. D3DADAPTER_DEFAULT is always the primary display adapter. This method returns <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/> when this value equals or exceeds the number of display adapters in the system. </p> </dd></param>\t\n            <param name=\"devType\"><dd>  <p>Member of the <strong><see cref=\"T:SharpDX.Direct3D9.DeviceType\"/></strong> enumerated type, indicating the device type to check. </p> </dd></param>\t\n            <param name=\"adapterFormat\"><dd>  <p>Member of the <see cref=\"T:SharpDX.Direct3D9.Format\"/> enumerated type, indicating the format of the adapter display mode for which the device type is to be checked. For example, some devices will operate only in 16-bits-per-pixel modes. </p> </dd></param>\t\n            <param name=\"backBufferFormat\"><dd>  <p>Back buffer format. For more information about formats, see <see cref=\"T:SharpDX.Direct3D9.Format\"/>. This value must be one of the render-target formats. You can use <strong>GetAdapterDisplayMode</strong> to obtain the current format. For windowed applications, the back buffer format does not need to match the display mode format if the hardware supports color conversion. The set of possible back buffer formats is constrained, but the runtime will allow any valid back buffer format to be presented to any desktop format. There is the additional requirement that the device be operable in the desktop mode because devices typically do not operate in 8 bits per pixel modes. Full-screen applications cannot do color conversion. <see cref=\"F:SharpDX.Direct3D9.Format.Unknown\"/> is allowed for windowed mode. </p> </dd></param>\t\n            <param name=\"bWindowed\"><dd>  <p>Value indicating whether the device type will be used in full-screen or windowed mode. If set to <strong>TRUE</strong>, the query is performed for windowed applications; otherwise, this value should be set <strong><see cref=\"F:SharpDX.Result.False\"/></strong>. </p> </dd></param>\t\n            <returns><p>If the device can be used on this adapter, <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/> is returned. <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/> is returned if Adapter equals or exceeds the number of display adapters in the system. <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/> is also returned if <strong>CheckDeviceType</strong> specified a device that does not exist. <see cref=\"F:SharpDX.Direct3D9.ResultCode.NotAvailable\"/> is returned if the requested back buffer format is not supported, or if hardware acceleration is not available for the specified formats. </p></returns>\t\n            <remarks>\t\n            <p>A hal device type requires hardware acceleration. Applications can use CheckDeviceType to determine if the needed hardware and drivers are present to support a hal device. </p><p>Full-screen applications should not specify a DisplayFormat that contains an alpha channel. This will result in a failed call. Note that an alpha channel can be present in the back buffer but the two display formats must be identical in all other respects. For example, if DisplayFormat = <see cref=\"F:SharpDX.Direct3D9.Format.X1R5G5B5\"/>, valid values for BackBufferFormat include <see cref=\"F:SharpDX.Direct3D9.Format.X1R5G5B5\"/> and <see cref=\"F:SharpDX.Direct3D9.Format.A1R5G5B5\"/> but exclude <see cref=\"F:SharpDX.Direct3D9.Format.R5G6B5\"/>.</p><p>The following code fragment shows how you could use CheckDeviceType to test whether a certain device type can be used on this adapter.</p><pre><code> if(SUCCEEDED(pD3Device-&gt;CheckDeviceType(D3DADAPTER_DEFAULT,  <see cref=\"F:SharpDX.Direct3D9.DeviceType.Hardware\"/>,  DisplayFormat,  BackBufferFormat,  bIsWindowed))) return <see cref=\"F:SharpDX.Result.Ok\"/>;\t\n            // There is no HAL on this adapter using this render-target format. \t\n            // Try again, using another format.\t\n            </code></pre><p>This code returns <see cref=\"F:SharpDX.Result.Ok\"/> if the device can be used on the default adapter with the specified surface format.</p><p>Using <strong>CheckDeviceType</strong> to test for compatibility between a back buffer that differs from the display format will return appropriate values. This means that the call will reflect device capabilities. If the device cannot render to the requested back-buffer format, the call will still return <see cref=\"F:SharpDX.Direct3D9.ResultCode.NotAvailable\"/>. If the device can render to the format, but cannot perform the color-converting presentation, the return value will also be <see cref=\"F:SharpDX.Direct3D9.ResultCode.NotAvailable\"/>. Applications can discover hardware support for the presentation itself by calling <strong>CheckDeviceFormatConversion</strong>. No software emulation for the color-converting presentation itself will be offered.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3D9::CheckDeviceType']/*\"/>\t\n            <msdn-id>bb174312</msdn-id>\t\n            <unmanaged>HRESULT IDirect3D9::CheckDeviceType([In] unsigned int Adapter,[In] D3DDEVTYPE DevType,[In] D3DFORMAT AdapterFormat,[In] D3DFORMAT BackBufferFormat,[In] BOOL bWindowed)</unmanaged>\t\n            <unmanaged-short>IDirect3D9::CheckDeviceType</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Direct3D.CheckDeviceFormat_(System.Int32,SharpDX.Direct3D9.DeviceType,SharpDX.Direct3D9.Format,System.Int32,SharpDX.Direct3D9.ResourceType,SharpDX.Direct3D9.Format)\">\n            <summary>\t\n            <p>Determines whether a surface format is available as a specified resource type and can be used as a texture, depth-stencil buffer, or render target, or any combination of the three, on a device representing this adapter.</p>\t\n            </summary>\t\n            <param name=\"adapter\"><dd>  <p>Ordinal number denoting the display adapter to query. D3DADAPTER_DEFAULT is always the primary display adapter. This method returns <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/> when this value equals or exceeds the number of display adapters in the system. </p> </dd></param>\t\n            <param name=\"deviceType\"><dd>  <p>Member of the <strong><see cref=\"T:SharpDX.Direct3D9.DeviceType\"/></strong> enumerated type, identifying the device type.</p> </dd></param>\t\n            <param name=\"adapterFormat\"><dd>  <p>Member of the <see cref=\"T:SharpDX.Direct3D9.Format\"/> enumerated type, identifying the format of the display mode into which the adapter will be placed.</p> </dd></param>\t\n            <param name=\"usage\"><dd>  <p>Requested usage options for the surface. Usage options are any combination of <see cref=\"T:SharpDX.Direct3D9.Usage\"/> and D3DUSAGE_QUERY constants (only a subset of the <see cref=\"T:SharpDX.Direct3D9.Usage\"/> constants are valid for <strong>CheckDeviceFormat</strong>; see the table on the <see cref=\"T:SharpDX.Direct3D9.Usage\"/> page).</p> </dd></param>\t\n            <param name=\"rType\"><dd>  <p>Resource type requested for use with the queried format. Member of <strong><see cref=\"T:SharpDX.Direct3D9.ResourceType\"/></strong>. </p> </dd></param>\t\n            <param name=\"checkFormat\"><dd>  <p>Format of the surfaces which may be used, as defined by Usage. Member of <see cref=\"T:SharpDX.Direct3D9.Format\"/>.</p> </dd></param>\t\n            <returns><p>If the format is compatible with the specified device for the requested usage, this method returns <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>.</p><p><see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/> is returned if Adapter equals or exceeds the number of display adapters in the system, or if DeviceType is unsupported.</p><p><see cref=\"F:SharpDX.Direct3D9.ResultCode.NotAvailable\"/> is returned if the format is not acceptable to the device for this usage.</p></returns>\t\n            <remarks>\t\n            <p>Here are some examples using <strong>CheckDeviceFormat</strong> to check for hardware support of:</p><ul> <li>An off-screen plain surface format - Specify Usage = 0 and RType = <see cref=\"F:SharpDX.Direct3D9.ResourceType.Surface\"/>.</li> <li>A depth-stencil format - The following snippet tests for the passed in depth-stencil format:  <pre><code> <see cref=\"T:SharpDX.Bool\"/> IsDepthFormatExisting( <see cref=\"T:SharpDX.Direct3D9.Format\"/> DepthFormat, <see cref=\"T:SharpDX.Direct3D9.Format\"/> AdapterFormat ) \t\n            { <see cref=\"T:SharpDX.Result\"/> hr = pD3D-&gt;CheckDeviceFormat( D3DADAPTER_DEFAULT, <see cref=\"F:SharpDX.Direct3D9.DeviceType.Hardware\"/>, AdapterFormat, <see cref=\"F:SharpDX.Direct3D9.Usage.DepthStencil\"/>, <see cref=\"F:SharpDX.Direct3D9.ResourceType.Surface\"/>, DepthFormat); return SUCCEEDED( hr );\t\n            }</code></pre>  <p>See Selecting a Device (Direct3D 9) for more detail on the enumeration process.</p> </li> <li>Can this texture be rendered in a particular format - Given the current display mode, this example shows how to verify that the texture format is compatible with the specific back-buffer format:  <pre><code> <see cref=\"T:SharpDX.Bool\"/> IsTextureFormatOk( <see cref=\"T:SharpDX.Direct3D9.Format\"/> TextureFormat, <see cref=\"T:SharpDX.Direct3D9.Format\"/> AdapterFormat ) \t\n            { <see cref=\"T:SharpDX.Result\"/> hr = pD3D-&gt;CheckDeviceFormat( D3DADAPTER_DEFAULT, <see cref=\"F:SharpDX.Direct3D9.DeviceType.Hardware\"/>, AdapterFormat, 0, <see cref=\"F:SharpDX.Direct3D9.ResourceType.Texture\"/>, TextureFormat); return SUCCEEDED( hr );\t\n            }</code></pre>  </li> <li>Alpha blending in a pixel shader - Set Usage to <see cref=\"F:SharpDX.Direct3D9.Usage.QueryPostPixelShaderBlending\"/>. Expect this to fail for all floating-point render targets.</li> <li>Autogeneration of mipmaps - Set Usage to <see cref=\"F:SharpDX.Direct3D9.Usage.AutoGenerateMipMap\"/>. If the mipmap automatic generation fails, the application will get a non-mipmapped texture. Calling this method is considered a hint, so this method can return <see cref=\"F:SharpDX.Direct3D9.ResultCode.NoAutomaticGeneration\"/> (a valid success code) if the only thing that fails is the mipmap generation. For more information about mipmap generation, see Automatic Generation of Mipmaps (Direct3D 9).</li> </ul><p>When migrating code from Direct3D 9 to Direct3D 10, the Direct3D 10 equivalent to CheckDeviceFormat is <strong>CheckFormatSupport</strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3D9::CheckDeviceFormat']/*\"/>\t\n            <msdn-id>bb174309</msdn-id>\t\n            <unmanaged>HRESULT IDirect3D9::CheckDeviceFormat([In] unsigned int Adapter,[In] D3DDEVTYPE DeviceType,[In] D3DFORMAT AdapterFormat,[In] unsigned int Usage,[In] D3DRESOURCETYPE RType,[In] D3DFORMAT CheckFormat)</unmanaged>\t\n            <unmanaged-short>IDirect3D9::CheckDeviceFormat</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Direct3D.CheckDeviceMultiSampleType_(System.Int32,SharpDX.Direct3D9.DeviceType,SharpDX.Direct3D9.Format,SharpDX.Bool,SharpDX.Direct3D9.MultisampleType,System.Int32@)\">\n            <summary>\t\n            <p>Determines if a multisampling technique is available on this device.</p>\t\n            </summary>\t\n            <param name=\"adapter\"><dd>  <p>Ordinal number denoting the display adapter to query. D3DADAPTER_DEFAULT is always the primary display adapter. This method returns <strong><see cref=\"F:SharpDX.Result.False\"/></strong> when this value equals or exceeds the number of display adapters in the system. See Remarks.</p> </dd></param>\t\n            <param name=\"deviceType\"><dd>  <p>Member of the <strong><see cref=\"T:SharpDX.Direct3D9.DeviceType\"/></strong> enumerated type, identifying the device type.</p> </dd></param>\t\n            <param name=\"surfaceFormat\"><dd>  <p>Member of the <see cref=\"T:SharpDX.Direct3D9.Format\"/> enumerated type that specifies the format of the surface to be multisampled. For more information, see Remarks.</p> </dd></param>\t\n            <param name=\"windowed\"><dd>  <p>bool value. Specify <strong>TRUE</strong> to inquire about windowed multisampling, and specify <strong><see cref=\"F:SharpDX.Result.False\"/></strong> to inquire about full-screen multisampling.</p> </dd></param>\t\n            <param name=\"multiSampleType\"><dd>  <p>Member of the <strong><see cref=\"T:SharpDX.Direct3D9.MultisampleType\"/></strong> enumerated type, identifying the multisampling technique to test.</p> </dd></param>\t\n            <param name=\"qualityLevelsRef\"><dd>  <p><strong>pQualityLevels</strong> returns the number of device-specific sampling variations available with the given sample type. For example, if the returned value is 3, then quality levels 0, 1 and 2 can be used when creating resources with the given sample count. The meanings of these quality levels are defined by the device manufacturer and cannot be queried through D3D. For example, for a particular device different quality levels at a fixed sample count might refer to different spatial layouts of the sample locations or different methods of resolving.  This can be <strong><c>null</c></strong> if it is not necessary to return the quality levels.</p> </dd></param>\t\n            <returns><p>If the device can perform the specified multisampling method, this method returns <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/> is returned if the Adapter or MultiSampleType parameters are invalid. This method returns <see cref=\"F:SharpDX.Direct3D9.ResultCode.NotAvailable\"/> if the queried multisampling technique is not supported by this device. <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidDevice\"/> is returned if DeviceType does not apply to this adapter. </p></returns>\t\n            <remarks>\t\n            <p>This method is intended for use with both render-target and depth-stencil surfaces because you must create both surfaces multisampled if you want to use them together.</p><p>The following code fragment shows how you could use <strong>CheckDeviceMultiSampleType</strong> to test for devices that support a specific multisampling method.</p><pre><code> if( SUCCEEDED(pD3D-&gt;CheckDeviceMultiSampleType( pCaps-&gt;AdapterOrdinal,  pCaps-&gt;DeviceType, BackBufferFormat,  <see cref=\"F:SharpDX.Result.False\"/>, <see cref=\"F:SharpDX.Direct3D9.MultisampleType.ThreeSamples\"/>, <c>null</c> ) ) &amp;&amp; SUCCEEDED(pD3D-&gt;CheckDeviceMultiSampleType( pCaps-&gt;AdapterOrdinal,  pCaps-&gt;DeviceType, DepthBufferFormat,  <see cref=\"F:SharpDX.Result.False\"/>, <see cref=\"F:SharpDX.Direct3D9.MultisampleType.ThreeSamples\"/>, <c>null</c> ) ) ) return <see cref=\"F:SharpDX.Result.Ok\"/>;\t\n            </code></pre><p>The preceding code will return <see cref=\"F:SharpDX.Result.Ok\"/> if the device supports the full-screen <see cref=\"F:SharpDX.Direct3D9.MultisampleType.ThreeSamples\"/> multisampling method with the surface format.</p><p>See the remarks in <strong><see cref=\"T:SharpDX.Direct3D9.MultisampleType\"/></strong> for additional information on working with and setting multisample types and quality levels.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3D9::CheckDeviceMultiSampleType']/*\"/>\t\n            <msdn-id>bb174311</msdn-id>\t\n            <unmanaged>HRESULT IDirect3D9::CheckDeviceMultiSampleType([In] unsigned int Adapter,[In] D3DDEVTYPE DeviceType,[In] D3DFORMAT SurfaceFormat,[In] BOOL Windowed,[In] D3DMULTISAMPLE_TYPE MultiSampleType,[Out] unsigned int* pQualityLevels)</unmanaged>\t\n            <unmanaged-short>IDirect3D9::CheckDeviceMultiSampleType</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Direct3D.CheckDepthStencilMatch_(System.Int32,SharpDX.Direct3D9.DeviceType,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Format)\">\n            <summary>\t\n            <p>Determines whether a depth-stencil format is compatible with a render-target format in a particular display mode.</p>\t\n            </summary>\t\n            <param name=\"adapter\"><dd>  <p>Ordinal number denoting the display adapter to query. D3DADAPTER_DEFAULT is always the primary display adapter.</p> </dd></param>\t\n            <param name=\"deviceType\"><dd>  <p>Member of the <strong><see cref=\"T:SharpDX.Direct3D9.DeviceType\"/></strong> enumerated type, identifying the device type.</p> </dd></param>\t\n            <param name=\"adapterFormat\"><dd>  <p>Member of the <see cref=\"T:SharpDX.Direct3D9.Format\"/> enumerated type, identifying the format of the display mode into which the adapter will be placed. </p> </dd></param>\t\n            <param name=\"renderTargetFormat\"><dd>  <p>Member of the <see cref=\"T:SharpDX.Direct3D9.Format\"/> enumerated type, identifying the format of the render-target surface to be tested. </p> </dd></param>\t\n            <param name=\"depthStencilFormat\"><dd>  <p>Member of the <see cref=\"T:SharpDX.Direct3D9.Format\"/> enumerated type, identifying the format of the depth-stencil surface to be tested. </p> </dd></param>\t\n            <returns><p>If the depth-stencil format is compatible with the render-target format in the display mode, this method returns <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/> can be returned if one or more of the parameters is invalid. If a depth-stencil format is not compatible with the render target in the display mode, then this method returns <see cref=\"F:SharpDX.Direct3D9.ResultCode.NotAvailable\"/>.</p></returns>\t\n            <remarks>\t\n            <p>This method is provided to enable applications to work with hardware requiring that certain depth formats can only work with certain render-target formats.</p><p>The behavior of this method has been changed for DirectX 8.1.  This method now pays attention to the D24x8 and D32 depth-stencil formats. The previous version assumed that these formats would always be usable with 32- or 16-bit render targets. This method will now return <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/> for these formats only if the device is capable of mixed-depth operations.</p><p>The following code fragment shows how you could use <strong>CheckDeviceFormat</strong> to validate a depth stencil format.</p><pre><code> <see cref=\"T:SharpDX.Bool\"/> IsDepthFormatOk(<see cref=\"T:SharpDX.Direct3D9.Format\"/> DepthFormat,  <see cref=\"T:SharpDX.Direct3D9.Format\"/> AdapterFormat,  <see cref=\"T:SharpDX.Direct3D9.Format\"/> BackBufferFormat)\t\n            { // Verify that the depth format exists <see cref=\"T:SharpDX.Result\"/> hr = pD3D-&gt;CheckDeviceFormat(D3DADAPTER_DEFAULT, <see cref=\"F:SharpDX.Direct3D9.DeviceType.Hardware\"/>, AdapterFormat, <see cref=\"F:SharpDX.Direct3D9.Usage.DepthStencil\"/>, <see cref=\"F:SharpDX.Direct3D9.ResourceType.Surface\"/>, DepthFormat); if(FAILED(hr)) return <see cref=\"F:SharpDX.Result.False\"/>; // Verify that the depth format is compatible hr = pD3D-&gt;CheckDepthStencilMatch(D3DADAPTER_DEFAULT, <see cref=\"F:SharpDX.Direct3D9.DeviceType.Hardware\"/>, AdapterFormat, BackBufferFormat, DepthFormat); return SUCCEEDED(hr); }\t\n            </code></pre><p>The preceding call will return <strong><see cref=\"F:SharpDX.Result.False\"/></strong> if DepthFormat cannot be used in conjunction with AdapterFormat and BackBufferFormat.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3D9::CheckDepthStencilMatch']/*\"/>\t\n            <msdn-id>bb174308</msdn-id>\t\n            <unmanaged>HRESULT IDirect3D9::CheckDepthStencilMatch([In] unsigned int Adapter,[In] D3DDEVTYPE DeviceType,[In] D3DFORMAT AdapterFormat,[In] D3DFORMAT RenderTargetFormat,[In] D3DFORMAT DepthStencilFormat)</unmanaged>\t\n            <unmanaged-short>IDirect3D9::CheckDepthStencilMatch</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Direct3D.CheckDeviceFormatConversion_(System.Int32,SharpDX.Direct3D9.DeviceType,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Format)\">\n            <summary>\t\n            <p>Tests the device to see if it supports conversion from one display format to another.</p>\t\n            </summary>\t\n            <param name=\"adapter\"><dd>  <p>Display adapter ordinal number. D3DADAPTER_DEFAULT is always the primary display adapter. This method returns <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/> when this value equals or exceeds the number of display adapters in the system.  </p> </dd></param>\t\n            <param name=\"deviceType\"><dd>  <p>Device type. Member of the <strong><see cref=\"T:SharpDX.Direct3D9.DeviceType\"/></strong> enumerated type. </p> </dd></param>\t\n            <param name=\"sourceFormat\"><dd>  <p>Source adapter format. Member of the <see cref=\"T:SharpDX.Direct3D9.Format\"/> enumerated type.</p> </dd></param>\t\n            <param name=\"targetFormat\"><dd>  <p>Target adapter format. Member of the <see cref=\"T:SharpDX.Direct3D9.Format\"/> enumerated type.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>. The method will return <see cref=\"F:SharpDX.Direct3D9.ResultCode.NotAvailable\"/> when the hardware does not support conversion between the two formats. </p></returns>\t\n            <remarks>\t\n            <p>Using <strong>CheckDeviceType</strong> to test for compatibility between a back buffer that differs from the display format will return appropriate values. This means that the call will reflect device capabilities. If the device cannot render to the requested back buffer format, the call will still return <see cref=\"F:SharpDX.Direct3D9.ResultCode.NotAvailable\"/>. If the device can render to the format, but cannot perform the color-converting presentation, the return value will also be <see cref=\"F:SharpDX.Direct3D9.ResultCode.NotAvailable\"/>. Applications can discover hardware support for the presentation itself by calling <strong>CheckDeviceFormatConversion</strong>. No software emulation for the color-converting presentation itself will be offered.</p><p><strong>CheckDeviceFormatConversion</strong> can also be used to determine which combinations of source surface formats and destination surface formats are permissible in calls to <strong>StretchRect</strong>. </p><p>Color conversion is restricted to the following source and target formats.</p><ul> <li>The source format must be a FOURCC format or a valid back buffer format. For a list of these, see FourCC Formats and BackBuffer or Display Formats.</li> <li>The target format must be one of these unsigned formats: <table> <tr><td><see cref=\"F:SharpDX.Direct3D9.Format.X1R5G5B5\"/></td><td><see cref=\"F:SharpDX.Direct3D9.Format.A1R5G5B5\"/></td><td><see cref=\"F:SharpDX.Direct3D9.Format.R5G6B5\"/></td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D9.Format.R8G8B8\"/></td><td><see cref=\"F:SharpDX.Direct3D9.Format.X8R8G8B8\"/></td><td><see cref=\"F:SharpDX.Direct3D9.Format.A8R8G8B8\"/></td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D9.Format.A2R10G10B10\"/></td><td><see cref=\"F:SharpDX.Direct3D9.Format.A16B16G16R16\"/></td><td><see cref=\"F:SharpDX.Direct3D9.Format.A2B10G10R10\"/></td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D9.Format.A8B8G8R8\"/></td><td><see cref=\"F:SharpDX.Direct3D9.Format.X8B8G8R8\"/></td><td><see cref=\"F:SharpDX.Direct3D9.Format.A16B16G16R16F\"/></td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D9.Format.A32B32G32R32F\"/></td><td></td><td></td></tr> </table> <p>?</p> </li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3D9::CheckDeviceFormatConversion']/*\"/>\t\n            <msdn-id>bb174310</msdn-id>\t\n            <unmanaged>HRESULT IDirect3D9::CheckDeviceFormatConversion([In] unsigned int Adapter,[In] D3DDEVTYPE DeviceType,[In] D3DFORMAT SourceFormat,[In] D3DFORMAT TargetFormat)</unmanaged>\t\n            <unmanaged-short>IDirect3D9::CheckDeviceFormatConversion</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Direct3D.GetDeviceCaps(System.Int32,SharpDX.Direct3D9.DeviceType)\">\n            <summary>\t\n            <p>Retrieves device-specific information about a device. </p>\t\n            </summary>\t\n            <param name=\"adapter\"><dd>  <p>Ordinal number that denotes the display adapter. D3DADAPTER_DEFAULT is always the primary display adapter. </p> </dd></param>\t\n            <param name=\"deviceType\"><dd>  <p>Member of the <strong><see cref=\"T:SharpDX.Direct3D9.DeviceType\"/></strong> enumerated type. Denotes the device type. </p> </dd></param>\t\n            <returns><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.Capabilities\"/></strong> structure to be filled with information describing the capabilities of the device. </p> </dd></returns>\t\n            <remarks>\t\n            <p>The application should not assume the persistence of vertex processing capabilities across Direct3D device objects. The particular capabilities that a physical device exposes may depend on parameters supplied to <strong>CreateDevice</strong>. For example, the capabilities may yield different vertex processing capabilities before and after creating a Direct3D Device Object with hardware vertex processing enabled. For more information see the description of <strong><see cref=\"T:SharpDX.Direct3D9.Capabilities\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3D9::GetDeviceCaps']/*\"/>\t\n            <msdn-id>bb174320</msdn-id>\t\n            <unmanaged>HRESULT IDirect3D9::GetDeviceCaps([In] unsigned int Adapter,[In] D3DDEVTYPE DeviceType,[Out] D3DCAPS9* pCaps)</unmanaged>\t\n            <unmanaged-short>IDirect3D9::GetDeviceCaps</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Direct3D.GetAdapterMonitor(System.Int32)\">\n            <summary>\t\n            <p>Returns the handle of the monitor associated with the Direct3D object.</p>\t\n            </summary>\t\n            <param name=\"adapter\"><dd>  <p>Ordinal number that denotes the display adapter. D3DADAPTER_DEFAULT is always the primary display adapter. </p> </dd></param>\t\n            <returns><p>Handle of the monitor associated with the Direct3D object.</p></returns>\t\n            <remarks>\t\n            <p>As shown in the following code fragment, which illustrates how to obtain a handle to the monitor associated with a given device, use <strong>GetDirect3D</strong> to return the Direct3D enumerator from the device and use <strong>GetCreationParameters</strong> to retrieve the value for Adapter.</p><pre><code> if( FAILED( pDevice-&gt;GetCreationParameters(  &amp;Parameters ) ) ) return <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>; if( FAILED( pDevice-&gt;GetDirect3D(&amp;pD3D) ) ) return <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>; hMonitor = pD3D-&gt;GetAdapterMonitor(Parameters.AdapterOrdinal); pD3D-&gt;Release();\t\n            </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3D9::GetAdapterMonitor']/*\"/>\t\n            <msdn-id>bb174319</msdn-id>\t\n            <unmanaged>HMONITOR IDirect3D9::GetAdapterMonitor([In] unsigned int Adapter)</unmanaged>\t\n            <unmanaged-short>IDirect3D9::GetAdapterMonitor</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Direct3D.CreateDevice(System.Int32,SharpDX.Direct3D9.DeviceType,System.IntPtr,SharpDX.Direct3D9.CreateFlags,SharpDX.Direct3D9.PresentParameters[],SharpDX.Direct3D9.Device)\">\n            <summary>\t\n            <p>Creates a device to represent the display adapter.</p>\t\n            </summary>\t\n            <param name=\"adapter\"><dd>  <p>Ordinal number that denotes the display adapter. D3DADAPTER_DEFAULT is always the primary display adapter. </p> </dd></param>\t\n            <param name=\"deviceType\"><dd>  <p>Member of the <strong><see cref=\"T:SharpDX.Direct3D9.DeviceType\"/></strong> enumerated type that denotes the desired device type. If the desired device type is not available, the method will fail. </p> </dd></param>\t\n            <param name=\"hFocusWindow\"><dd>  <p>The focus window alerts Direct3D when an application switches from foreground mode to background mode. See Remarks. \t </p> <ul> <li>For full-screen mode, the window specified must be a top-level window.</li> <li>For windowed mode, this parameter may be <strong><c>null</c></strong> only if the hDeviceWindow member of <em>pPresentationParameters</em> is set to a valid, non-<strong><c>null</c></strong> value.</li> </ul> </dd></param>\t\n            <param name=\"behaviorFlags\"><dd>  <p>Combination of one or more options that control device creation. For more information, see <see cref=\"T:SharpDX.Direct3D9.CreateFlags\"/>.</p> </dd></param>\t\n            <param name=\"presentationParametersRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.PresentParameters\"/></strong> structure, describing the presentation parameters for the device to be created. If BehaviorFlags specifies <see cref=\"F:SharpDX.Direct3D9.CreateFlags.AdapterGroupDevice\"/>, pPresentationParameters is an array. Regardless of the number of heads that exist, only one depth/stencil surface is automatically created.</p> <p>For Windows 2000 and Windows XP, the full-screen device display refresh rate is set in the following order: </p> <ol> <li>User-specified nonzero ForcedRefreshRate registry key, if supported by the device.</li> <li>Application-specified nonzero refresh rate value in the presentation parameter.</li> <li>Refresh rate of the latest desktop mode, if supported by the device.</li> <li>75 hertz if supported by the device.</li> <li>60 hertz if supported by the device.</li> <li>Device default.</li> </ol> <p>An unsupported refresh rate will default to the closest supported refresh rate below it.  For example, if the application specifies 63 hertz, 60 hertz will be used. There are no supported refresh rates below 57 hertz.</p> <p>pPresentationParameters is both an input and an output parameter. Calling this method may change several members including:</p> <ul> <li>If BackBufferCount, BackBufferWidth, and BackBufferHeight  are 0 before the method is called, they will be changed when the method returns.</li> <li>If BackBufferFormat equals <see cref=\"F:SharpDX.Direct3D9.Format.Unknown\"/> before the method is called, it will be changed when the method returns.</li> </ul> </dd></param>\t\n            <param name=\"returnedDeviceInterfaceOut\"><dd>  <p>Address of a reference to the returned <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface, which represents the created device. </p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.DeviceLost\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.NotAvailable\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.OutOfVideoMemory\"/>.</p></returns>\t\n            <remarks>\t\n            <p>This method returns a fully working device interface, set to the required display mode (or windowed), and allocated with the appropriate back buffers. To begin rendering, the application needs only to create and set a depth buffer (assuming EnableAutoDepthStencil is <strong><see cref=\"F:SharpDX.Result.False\"/></strong> in <strong><see cref=\"T:SharpDX.Direct3D9.PresentParameters\"/></strong>).</p><p>When you create a Direct3D device, you supply two different window parameters: a focus window (hFocusWindow) and a device window (the hDeviceWindow in <strong><see cref=\"T:SharpDX.Direct3D9.PresentParameters\"/></strong>). The purpose of each window is:</p><ul> <li>The focus window alerts Direct3D when an application switches from foreground mode to background mode (via Alt-Tab, a mouse click, or some other method). A single focus window is shared by each device created by an application.</li> <li>The device window determines the location and size of the back buffer on screen. This is used by Direct3D when the back buffer contents are copied to the front buffer during <strong>Present</strong>.</li> </ul><p>This method should not be run during the handling of WM_CREATE. An application should never pass a window handle to Direct3D while handling WM_CREATE.  Any call to create, release, or reset the device must be done using the same thread as the window procedure of the focus window.</p><p>Note that <see cref=\"F:SharpDX.Direct3D9.CreateFlags.HardwareVertexProcessing\"/>, <see cref=\"F:SharpDX.Direct3D9.CreateFlags.MixedVertexProcessing\"/>, and <see cref=\"F:SharpDX.Direct3D9.CreateFlags.SoftwareVertexProcessing\"/> are mutually exclusive flags, and at least one of these vertex processing flags must be specified when calling this method.</p><p>Back buffers created as part of the device are only lockable if <see cref=\"F:SharpDX.Direct3D9.PresentFlags.LockableBackBuffer\"/> is specified in the presentation parameters. (Multisampled back buffers and depth surfaces are never lockable.)</p><p>The methods <strong>Reset</strong>, <strong><see cref=\"T:SharpDX.ComObject\"/></strong>, and <strong>TestCooperativeLevel</strong> must be called from the same thread that used this method to create a device.</p><p><see cref=\"F:SharpDX.Direct3D9.Format.Unknown\"/> can be specified for the windowed mode back buffer format when calling <strong>CreateDevice</strong>, <strong>Reset</strong>, and <strong>CreateAdditionalSwapChain</strong>. This means the application does not have to query the current desktop format before calling <strong>CreateDevice</strong> for windowed mode. For full-screen mode, the back buffer format must be specified.</p><p>If you attempt to create a device on a 0x0 sized window, <strong>CreateDevice</strong> will fail.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3D9::CreateDevice']/*\"/>\t\n            <msdn-id>bb174313</msdn-id>\t\n            <unmanaged>HRESULT IDirect3D9::CreateDevice([In] unsigned int Adapter,[In] D3DDEVTYPE DeviceType,[In] HWND hFocusWindow,[In] D3DCREATE BehaviorFlags,[In, Buffer] D3DPRESENT_PARAMETERS* pPresentationParameters,[Out, Fast] IDirect3DDevice9** ppReturnedDeviceInterface)</unmanaged>\t\n            <unmanaged-short>IDirect3D9::CreateDevice</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.Direct3D.Adapters\">\n            <summary>\n            Gets the adapters.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.Direct3D.AdapterCount\">\n            <summary>\t\n            <p>Returns the number of adapters on the system.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3D9::GetAdapterCount']/*\"/>\t\n            <msdn-id>bb174315</msdn-id>\t\n            <unmanaged>GetAdapterCount</unmanaged>\t\n            <unmanaged-short>GetAdapterCount</unmanaged-short>\t\n            <unmanaged>unsigned int IDirect3D9::GetAdapterCount()</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.Direct3DEx\">\n            <summary>\t\n            <p>Applications use the methods of the <strong><see cref=\"T:SharpDX.Direct3D9.Direct3DEx\"/></strong> interface (which inherits from <strong><see cref=\"T:SharpDX.Direct3D9.Direct3D\"/></strong>) to create Microsoft Direct3D 9Ex objects and set up the environment. This interface includes methods for enumerating and retrieving capabilities of the device and is available when the underlying device implementation is compliant with Windows Vista.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The <strong><see cref=\"T:SharpDX.Direct3D9.Direct3DEx\"/></strong> interface is obtained by calling the <strong>Direct3DCreate9Ex</strong> function.</p><p>The <strong>LPDIRECT3D9EX</strong> and <strong>PDIRECT3D9EX</strong> types are defined as references to the <strong><see cref=\"T:SharpDX.Direct3D9.Direct3DEx\"/></strong> interface:</p><p> </p><pre><code> typedef struct <see cref=\"T:SharpDX.Direct3D9.Direct3DEx\"/> *LPDIRECT3D9EX, *PDIRECT3D9EX;\t\n            </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3D9Ex']/*\"/>\t\n            <msdn-id>bb174301</msdn-id>\t\n            <unmanaged>IDirect3D9Ex</unmanaged>\t\n            <unmanaged-short>IDirect3D9Ex</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Direct3DEx.#ctor\">\n            <summary>\t\n            Creates an <see cref=\"T:SharpDX.Direct3D9.Direct3DEx\"/> object and returns an interface to it.\t\n            </summary>\t\n            <remarks>\t\n            The <see cref=\"T:SharpDX.Direct3D9.Direct3DEx\"/> object is the first object that the application creates and the last object thta the application releases. Functions for enumerating and retrieving capabilities of a device are accessible through the IDirect3D9Ex object. This enables applications to select devices without creating them.   The <see cref=\"T:SharpDX.Direct3D9.Direct3DEx\"/> interface supports enumeration of active display adapters and allows the creation of IDirect3D9Ex objects. If the user dynamically adds adapters (either by adding devices to the desktop, or by hot-docking a laptop), these devices are not included in the enumeration. Creating a new IDirect3D9Ex interface will expose the new devices.   Pass the D3D_SDK_VERSION flag to this function to ensure that header files used in the compiled application match the version of the installed runtime DLLs. D3D_SDK_VERSION is changed in the runtime only when a header or another code change would require rebuilding the application. If this function fails, it indicates that the versions of the header file and the runtime DLL do not match.  Note??Direct3DCreate9Ex is supported only in Windows Vista, Windows Server 2008, and Windows 7.   Earlier versions of the D3D9.dll library do not include Direct3D9Ex and Direct3DCreate9Ex.  \t\n            </remarks>\t\n            <returns>D3DERR_NOTAVAILABLE if Direct3DEx features are not supported (no WDDM driver is installed) or if the SDKVersion does not match the version of the DLL.   D3DERR_OUTOFMEMORY if out-of-memory conditions are detected when creating the enumerator object.  S_OK if the creation of the enumerator object is successful.  </returns>\n            <unmanaged>HRESULT Direct3DCreate9Ex([None] int SDKVersion,[None] IDirect3D9Ex** arg1)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Direct3DEx.GetAdapterDisplayModeEx(System.Int32)\">\n            <summary>\n            Retrieves the current display mode and rotation settings of the adapter.\n            </summary>\n            <param name=\"adapter\">The adapter.</param>\n            <returns><see cref=\"T:SharpDX.Direct3D9.DisplayModeEx\"/> structure containing data about the display mode of the adapter</returns>\n            <unmanaged>HRESULT IDirect3D9Ex::GetAdapterDisplayModeEx([In] unsigned int Adapter,[Out] D3DDISPLAYMODEEX* pMode,[Out] D3DDISPLAYROTATION* pRotation)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Direct3DEx.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D9.Direct3DEx\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Direct3DEx.op_Explicit(System.IntPtr)~SharpDX.Direct3D9.Direct3DEx\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D9.Direct3DEx\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Direct3DEx.GetAdapterModeCountEx(System.Int32,SharpDX.Direct3D9.DisplayModeFilter)\">\n            <summary>\t\n            <p>Returns the number of display modes available.</p>\t\n            </summary>\t\n            <param name=\"adapter\"><dd>  <p>Ordinal number denoting the display adapter from which to retrieve the display mode count.</p> </dd></param>\t\n            <param name=\"filterRef\"><dd>  <p>Specifies the characteristics of the desired display mode. See <strong><see cref=\"T:SharpDX.Direct3D9.DisplayModeFilter\"/></strong>.</p> </dd></param>\t\n            <returns><p>The number of display modes available. A return of value zero from this method is an indication that no such display mode is supported or simply this monitor is no longer available.</p></returns>\t\n            <remarks>\t\n            <p>Events such as display mode changes on other heads of the same hardware, monitor change or its connection status change, and desktop extension/unextension could all affect the number of display mode available.</p><p>To fullscreen applications, <see cref=\"F:SharpDX.Direct3D9.ResultCode.PresentModeChanged\"/> returned from <strong>PresentEx</strong> or <strong>CheckDeviceState</strong> is the indication of display mode setting failure due to those events.</p><p>To increase the chance of setting a currently available display mode successfully, fullscreen applications should try to requery the available display mode list upon receiving <see cref=\"F:SharpDX.Direct3D9.ResultCode.PresentModeChanged\"/>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3D9Ex::GetAdapterModeCountEx']/*\"/>\t\n            <msdn-id>bb174306</msdn-id>\t\n            <unmanaged>unsigned int IDirect3D9Ex::GetAdapterModeCountEx([In] unsigned int Adapter,[In] const D3DDISPLAYMODEFILTER* pFilter)</unmanaged>\t\n            <unmanaged-short>IDirect3D9Ex::GetAdapterModeCountEx</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Direct3DEx.EnumerateAdapterModesEx(System.Int32,SharpDX.Direct3D9.DisplayModeFilter,System.Int32)\">\n            <summary>\t\n            <p>This method returns the actual display mode info based on the given mode index.</p>\t\n            </summary>\t\n            <param name=\"adapter\"><dd>  <p>Ordinal number denoting the display adapter to enumerate. D3DADAPTER_DEFAULT is always the primary display adapter. This method returns <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/> when this value equals or exceeds the number of display adapters in the system.</p> </dd></param>\t\n            <param name=\"filterRef\"><dd>  <p>See <strong><see cref=\"T:SharpDX.Direct3D9.DisplayModeFilter\"/></strong>.</p> </dd></param>\t\n            <param name=\"mode\"><dd>  <p>Represents the display-mode index which is an unsigned integer between zero and the value returned by GetAdapterModeCount minus one.</p> </dd></param>\t\n            <returns><dd>  <p>A reference to the available display mode of type <strong><see cref=\"T:SharpDX.Direct3D9.DisplayModeEx\"/></strong>.</p> </dd></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3D9Ex::EnumAdapterModesEx']/*\"/>\t\n            <msdn-id>bb174303</msdn-id>\t\n            <unmanaged>HRESULT IDirect3D9Ex::EnumAdapterModesEx([In] unsigned int Adapter,[In] const D3DDISPLAYMODEFILTER* pFilter,[In] unsigned int Mode,[Out] D3DDISPLAYMODEEX* pMode)</unmanaged>\t\n            <unmanaged-short>IDirect3D9Ex::EnumAdapterModesEx</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Direct3DEx.GetAdapterDisplayModeEx(System.Int32,SharpDX.Direct3D9.DisplayRotation@)\">\n            <summary>\t\n            <p>Retrieves the current display mode and rotation settings of the adapter.</p>\t\n            </summary>\t\n            <param name=\"adapter\"><dd>  <p>Ordinal number that denotes the display adapter to query. D3DADAPTER_DEFAULT is always the primary display adapter. </p> </dd></param>\t\n            <param name=\"rotationRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.DisplayRotation\"/></strong> structure indicating the type of screen rotation the application will do. The value returned through this reference is important when the <see cref=\"F:SharpDX.Direct3D9.PresentFlags.NoAutoRotate\"/> flag is used; otherwise, it can be set to <strong><c>null</c></strong>.</p> </dd></param>\t\n            <returns><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.DisplayModeEx\"/></strong> structure containing data about the display mode of the adapter. As opposed to the display mode of the device, which may not be active if the device does not own full-screen mode. Can be set to <strong><c>null</c></strong>.</p> </dd></returns>\t\n            <remarks>\t\n            <p><strong>GetAdapterDisplayModeEx</strong> does not return the correct format when the display is in an extended format, such as 2:10:10:10. Instead, it returns the format X8R8G8B8.</p><p>To windowed applications, a value of <see cref=\"F:SharpDX.Direct3D9.ResultCode.PresentModeChanged\"/> returned from <strong>PresentEx</strong> or <strong>CheckDeviceState</strong> indicates that the display mode changed and that the current display mode might have a different format. To avoid a color-converting Present blt, windowed applications can optionally get new display mode information by using this method and adjusting its swap chain format accordingly. This method returns <see cref=\"F:SharpDX.Direct3D9.ResultCode.NotAvailable\"/> if this head is no longer part of the desktop or if the monitor is disconnected.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3D9Ex::GetAdapterDisplayModeEx']/*\"/>\t\n            <msdn-id>bb174304</msdn-id>\t\n            <unmanaged>HRESULT IDirect3D9Ex::GetAdapterDisplayModeEx([In] unsigned int Adapter,[Out] D3DDISPLAYMODEEX* pMode,[Out] D3DDISPLAYROTATION* pRotation)</unmanaged>\t\n            <unmanaged-short>IDirect3D9Ex::GetAdapterDisplayModeEx</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Direct3DEx.CreateDeviceEx(System.Int32,SharpDX.Direct3D9.DeviceType,System.IntPtr,System.Int32,SharpDX.Direct3D9.PresentParameters[],SharpDX.Direct3D9.DisplayModeEx[],SharpDX.Direct3D9.DeviceEx)\">\n            <summary>\t\n            <p>Creates a device to represent the display adapter.</p>\t\n            </summary>\t\n            <param name=\"adapter\"><dd>  <p>Ordinal number that denotes the display adapter. D3DADAPTER_DEFAULT is always the primary display adapter.</p> </dd></param>\t\n            <param name=\"deviceType\"><dd>  <p>Specifies the type of device. See <strong><see cref=\"T:SharpDX.Direct3D9.DeviceType\"/></strong>. If the desired device type is not available, the method will fail.</p> </dd></param>\t\n            <param name=\"hFocusWindow\"><dd>  <p>The focus window alerts Direct3D when an application switches from foreground mode to background mode. For full-screen mode, the window specified must be a top-level window. For windowed mode, this parameter may be <strong><c>null</c></strong> only if the hDeviceWindow member of pPresentationParameters is set to a valid, non-<strong><c>null</c></strong> value.</p> </dd></param>\t\n            <param name=\"behaviorFlags\"><dd>  <p>Combination of one or more options (see <see cref=\"T:SharpDX.Direct3D9.CreateFlags\"/>) that control device creation.</p> </dd></param>\t\n            <param name=\"presentationParametersRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.PresentParameters\"/></strong> structure, describing the presentation parameters for the device to be created. If <em>BehaviorFlags</em> specifies <see cref=\"F:SharpDX.Direct3D9.CreateFlags.AdapterGroupDevice\"/>, this parameter is an array. Regardless of the number of heads that exist, only one depth/stencil surface is automatically created.</p> <p>This parameter is both an input and an output parameter. Calling this method may change several members including:</p> <ul> <li>If BackBufferCount, BackBufferWidth, and BackBufferHeight are 0 before the method is called, they will be changed when the method returns.</li> <li>If BackBufferFormat equals <see cref=\"F:SharpDX.Direct3D9.Format.Unknown\"/> before the method is called, it will be changed when the method returns.</li> </ul> </dd></param>\t\n            <param name=\"fullscreenDisplayModeRef\"><dd>  <p>The display mode for when the device is set to fullscreen. See <strong><see cref=\"T:SharpDX.Direct3D9.DisplayModeEx\"/></strong>. If <em>BehaviorFlags</em> specifies <see cref=\"F:SharpDX.Direct3D9.CreateFlags.AdapterGroupDevice\"/>, this parameter is an array. This parameter must be <strong><c>null</c></strong> for windowed mode.</p> </dd></param>\t\n            <param name=\"returnedDeviceInterfaceOut\"><dd>  <p>Address of a reference to the returned <strong><see cref=\"T:SharpDX.Direct3D9.DeviceEx\"/></strong>, which represents the created device.</p> </dd></param>\t\n            <returns><p>This method returns <see cref=\"F:SharpDX.Result.Ok\"/> when rendering device along with swapchain buffers are created successfully. <see cref=\"F:SharpDX.Direct3D9.ResultCode.DeviceLost\"/> is returned when any error other than invalid caller input is encountered.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3D9Ex::CreateDeviceEx']/*\"/>\t\n            <msdn-id>bb174302</msdn-id>\t\n            <unmanaged>HRESULT IDirect3D9Ex::CreateDeviceEx([In] unsigned int Adapter,[In] D3DDEVTYPE DeviceType,[In] HWND hFocusWindow,[In] unsigned int BehaviorFlags,[In, Buffer] D3DPRESENT_PARAMETERS* pPresentationParameters,[In, Buffer, Optional] D3DDISPLAYMODEEX* pFullscreenDisplayMode,[Out, Fast] IDirect3DDevice9Ex** ppReturnedDeviceInterface)</unmanaged>\t\n            <unmanaged-short>IDirect3D9Ex::CreateDeviceEx</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Direct3DEx.GetAdapterLuid(System.Int32)\">\n            <summary>\t\n            <p>This method returns a unique identifier for the adapter that is specific to the adapter hardware. Applications can use this identifier to define robust mappings across various APIs (Direct3D 9, DXGI).</p>\t\n            </summary>\t\n            <param name=\"adapter\"><dd>  <p>Ordinal number denoting the display adapter from which to retrieve the <see cref=\"T:System.Int64\"/>.</p> </dd></param>\t\n            <returns><dd>  <p>A unique identifier for the given adapter.</p> </dd></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3D9Ex::GetAdapterLUID']/*\"/>\t\n            <msdn-id>bb174305</msdn-id>\t\n            <unmanaged>HRESULT IDirect3D9Ex::GetAdapterLUID([In] unsigned int Adapter,[Out] LUID* pLUID)</unmanaged>\t\n            <unmanaged-short>IDirect3D9Ex::GetAdapterLUID</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.Direct3DEx.AdaptersEx\">\n            <summary>\n            Gets a collection of installed extended adapters.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.DisplayModeCollection\">\n            <summary>\n            A collection of <see cref=\"T:SharpDX.Direct3D9.DisplayMode\"/>\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.DriverLevel\">\n            <summary>\n            Driver levels support.\n            </summary>\n            <unmanaged>None</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DriverLevel.Direct3D7\">\n            <summary>\n            Supports for Direct3D7.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DriverLevel.Direct3D8\">\n            <summary>\n            Supports for Direct3D8.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DriverLevel.Direct3D9\">\n            <summary>\n            Supports for Direct3D9.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.Effect\">\n            <summary>\t\n            <p>Used to set and query effects, and to choose techniques. An effect object can contain multiple techniques to render the same effect.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The <see cref=\"T:SharpDX.Direct3D9.Effect\"/> interface is obtained by calling <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateEffect(SharpDX.Direct3D9.Device,System.IntPtr,System.Int32,SharpDX.Direct3D9.Macro[],System.IntPtr,System.Int32,SharpDX.Direct3D9.EffectPool,SharpDX.Direct3D9.Effect@,SharpDX.Direct3D.Blob@)\"/></strong>, <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateEffectFromFileW(SharpDX.Direct3D9.Device,System.String,SharpDX.Direct3D9.Macro[],System.IntPtr,System.Int32,SharpDX.Direct3D9.EffectPool,SharpDX.Direct3D9.Effect@,SharpDX.Direct3D.Blob@)\"/></strong>, or <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateEffectFromResourceW(SharpDX.Direct3D9.Device,System.IntPtr,System.String,SharpDX.Direct3D9.Macro[],System.IntPtr,System.Int32,SharpDX.Direct3D9.EffectPool,SharpDX.Direct3D9.Effect@,SharpDX.Direct3D.Blob@)\"/></strong>.</p><p>The LPD3DXEFFECT type is defined as a reference to this interface.</p><pre><code> typedef interface <see cref=\"T:SharpDX.Direct3D9.Effect\"/> <see cref=\"T:SharpDX.Direct3D9.Effect\"/>;\t\n            typedef interface <see cref=\"T:SharpDX.Direct3D9.Effect\"/> *LPD3DXEFFECT;\t\n            </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXEffect']/*\"/>\t\n            <msdn-id>bb205788</msdn-id>\t\n            <unmanaged>ID3DXEffect</unmanaged>\t\n            <unmanaged-short>ID3DXEffect</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Effect.Begin\">\n            <summary>\n            Starts an active technique.\n            </summary>\n            <returns>The number of passes needed to render the current technique. </returns>\n            <unmanaged>HRESULT ID3DXEffect::Begin([Out] unsigned int* pPasses,[In] D3DXFX Flags)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Effect.FromFile(SharpDX.Direct3D9.Device,System.String,SharpDX.Direct3D9.ShaderFlags)\">\n            <summary>\n            Compiles an effect from a file.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"fileName\">Name of the file.</param>\n            <param name=\"flags\">The flags.</param>\n            <returns>\n            An <see cref=\"T:SharpDX.Direct3D9.Effect\"/>\n            </returns>\n            <unmanaged>HRESULT D3DXCreateEffectEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataLen,[In, Buffer] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] const char* pSkipConstants,[In] unsigned int Flags,[In] ID3DXEffectPool* pPool,[In] ID3DXEffect** ppEffect,[In] ID3DXBuffer** ppCompilationErrors)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Effect.FromFile(SharpDX.Direct3D9.Device,System.String,SharpDX.Direct3D9.Macro[],SharpDX.Direct3D9.Include,System.String,SharpDX.Direct3D9.ShaderFlags)\">\n            <summary>\n            Compiles an effect from a file.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"fileName\">Name of the file.</param>\n            <param name=\"preprocessorDefines\">The preprocessor defines.</param>\n            <param name=\"includeFile\">The include file.</param>\n            <param name=\"skipConstants\">The skip constants.</param>\n            <param name=\"flags\">The flags.</param>\n            <returns>\n            An <see cref=\"T:SharpDX.Direct3D9.Effect\"/>\n            </returns>\n            <unmanaged>HRESULT D3DXCreateEffectEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataLen,[In, Buffer] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] const char* pSkipConstants,[In] unsigned int Flags,[In] ID3DXEffectPool* pPool,[In] ID3DXEffect** ppEffect,[In] ID3DXBuffer** ppCompilationErrors)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Effect.FromFile(SharpDX.Direct3D9.Device,System.String,SharpDX.Direct3D9.Macro[],SharpDX.Direct3D9.Include,System.String,SharpDX.Direct3D9.ShaderFlags,SharpDX.Direct3D9.EffectPool)\">\n            <summary>\n            Compiles an effect from a file.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"fileName\">Name of the file.</param>\n            <param name=\"preprocessorDefines\">The preprocessor defines.</param>\n            <param name=\"includeFile\">The include file.</param>\n            <param name=\"skipConstants\">The skip constants.</param>\n            <param name=\"flags\">The flags.</param>\n            <param name=\"pool\">The pool.</param>\n            <returns>\n            An <see cref=\"T:SharpDX.Direct3D9.Effect\"/>\n            </returns>\n            <unmanaged>HRESULT D3DXCreateEffectEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataLen,[In, Buffer] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] const char* pSkipConstants,[In] unsigned int Flags,[In] ID3DXEffectPool* pPool,[In] ID3DXEffect** ppEffect,[In] ID3DXBuffer** ppCompilationErrors)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Effect.FromMemory(SharpDX.Direct3D9.Device,System.Byte[],SharpDX.Direct3D9.ShaderFlags)\">\n            <summary>\n            Compiles an effect from a memory buffer.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"memory\">The buffer.</param>\n            <param name=\"flags\">The flags.</param>\n            <returns>\n            An <see cref=\"T:SharpDX.Direct3D9.Effect\"/>\n            </returns>\n            <unmanaged>HRESULT D3DXCreateEffectEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataLen,[In, Buffer] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] const char* pSkipConstants,[In] unsigned int Flags,[In] ID3DXEffectPool* pPool,[In] ID3DXEffect** ppEffect,[In] ID3DXBuffer** ppCompilationErrors)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Effect.FromMemory(SharpDX.Direct3D9.Device,System.Byte[],SharpDX.Direct3D9.Macro[],SharpDX.Direct3D9.Include,System.String,SharpDX.Direct3D9.ShaderFlags)\">\n            <summary>\n            Compiles an effect from a memory buffer.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"memory\">The buffer.</param>\n            <param name=\"preprocessorDefines\">The preprocessor defines.</param>\n            <param name=\"includeFile\">The include file.</param>\n            <param name=\"skipConstants\">The skip constants.</param>\n            <param name=\"flags\">The flags.</param>\n            <returns>\n            An <see cref=\"T:SharpDX.Direct3D9.Effect\"/>\n            </returns>\n            <unmanaged>HRESULT D3DXCreateEffectEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataLen,[In, Buffer] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] const char* pSkipConstants,[In] unsigned int Flags,[In] ID3DXEffectPool* pPool,[In] ID3DXEffect** ppEffect,[In] ID3DXBuffer** ppCompilationErrors)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Effect.FromMemory(SharpDX.Direct3D9.Device,System.Byte[],SharpDX.Direct3D9.Macro[],SharpDX.Direct3D9.Include,System.String,SharpDX.Direct3D9.ShaderFlags,SharpDX.Direct3D9.EffectPool)\">\n            <summary>\n            Compiles an effect from a memory buffer.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"memory\">The buffer.</param>\n            <param name=\"preprocessorDefines\">The preprocessor defines.</param>\n            <param name=\"includeFile\">The include file.</param>\n            <param name=\"skipConstants\">The skip constants.</param>\n            <param name=\"flags\">The flags.</param>\n            <param name=\"pool\">The pool.</param>\n            <returns>An <see cref=\"T:SharpDX.Direct3D9.Effect\"/></returns>\n            <unmanaged>HRESULT D3DXCreateEffectEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataLen,[In, Buffer] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] const char* pSkipConstants,[In] unsigned int Flags,[In] ID3DXEffectPool* pPool,[In] ID3DXEffect** ppEffect,[In] ID3DXBuffer** ppCompilationErrors)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Effect.FromStream(SharpDX.Direct3D9.Device,System.IO.Stream,SharpDX.Direct3D9.ShaderFlags)\">\n            <summary>\n            Compiles an effect from a stream.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"stream\">The stream.</param>\n            <param name=\"flags\">The flags.</param>\n            <returns>\n            An <see cref=\"T:SharpDX.Direct3D9.Effect\"/>\n            </returns>\n            <unmanaged>HRESULT D3DXCreateEffectEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataLen,[In, Buffer] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] const char* pSkipConstants,[In] unsigned int Flags,[In] ID3DXEffectPool* pPool,[In] ID3DXEffect** ppEffect,[In] ID3DXBuffer** ppCompilationErrors)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Effect.FromStream(SharpDX.Direct3D9.Device,System.IO.Stream,SharpDX.Direct3D9.Macro[],SharpDX.Direct3D9.Include,System.String,SharpDX.Direct3D9.ShaderFlags)\">\n            <summary>\n            Compiles an effect from a stream.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"stream\">The stream.</param>\n            <param name=\"preprocessorDefines\">The preprocessor defines.</param>\n            <param name=\"includeFile\">The include file.</param>\n            <param name=\"skipConstants\">The skip constants.</param>\n            <param name=\"flags\">The flags.</param>\n            <returns>\n            An <see cref=\"T:SharpDX.Direct3D9.Effect\"/>\n            </returns>\n            <unmanaged>HRESULT D3DXCreateEffectEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataLen,[In, Buffer] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] const char* pSkipConstants,[In] unsigned int Flags,[In] ID3DXEffectPool* pPool,[In] ID3DXEffect** ppEffect,[In] ID3DXBuffer** ppCompilationErrors)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Effect.FromStream(SharpDX.Direct3D9.Device,System.IO.Stream,SharpDX.Direct3D9.Macro[],SharpDX.Direct3D9.Include,System.String,SharpDX.Direct3D9.ShaderFlags,SharpDX.Direct3D9.EffectPool)\">\n            <summary>\n            Compiles an effect from a stream.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"stream\">The stream.</param>\n            <param name=\"preprocessorDefines\">The preprocessor defines.</param>\n            <param name=\"includeFile\">The include file.</param>\n            <param name=\"skipConstants\">The skip constants.</param>\n            <param name=\"flags\">The flags.</param>\n            <param name=\"pool\">The pool.</param>\n            <returns>An <see cref=\"T:SharpDX.Direct3D9.Effect\"/></returns>\n            <unmanaged>HRESULT D3DXCreateEffectEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataLen,[In, Buffer] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] const char* pSkipConstants,[In] unsigned int Flags,[In] ID3DXEffectPool* pPool,[In] ID3DXEffect** ppEffect,[In] ID3DXBuffer** ppCompilationErrors)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Effect.FromString(SharpDX.Direct3D9.Device,System.String,SharpDX.Direct3D9.ShaderFlags)\">\n            <summary>\n            Compiles an effect from a string.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"sourceData\">The source data.</param>\n            <param name=\"flags\">The flags.</param>\n            <returns>\n            An <see cref=\"T:SharpDX.Direct3D9.Effect\"/>\n            </returns>\n            <unmanaged>HRESULT D3DXCreateEffectEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataLen,[In, Buffer] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] const char* pSkipConstants,[In] unsigned int Flags,[In] ID3DXEffectPool* pPool,[In] ID3DXEffect** ppEffect,[In] ID3DXBuffer** ppCompilationErrors)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Effect.FromString(SharpDX.Direct3D9.Device,System.String,SharpDX.Direct3D9.Macro[],SharpDX.Direct3D9.Include,System.String,SharpDX.Direct3D9.ShaderFlags)\">\n            <summary>\n            Compiles an effect from a string.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"sourceData\">The source data.</param>\n            <param name=\"preprocessorDefines\">The preprocessor defines.</param>\n            <param name=\"includeFile\">The include file.</param>\n            <param name=\"skipConstants\">The skip constants.</param>\n            <param name=\"flags\">The flags.</param>\n            <returns>\n            An <see cref=\"T:SharpDX.Direct3D9.Effect\"/>\n            </returns>\n            <unmanaged>HRESULT D3DXCreateEffectEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataLen,[In, Buffer] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] const char* pSkipConstants,[In] unsigned int Flags,[In] ID3DXEffectPool* pPool,[In] ID3DXEffect** ppEffect,[In] ID3DXBuffer** ppCompilationErrors)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Effect.FromString(SharpDX.Direct3D9.Device,System.String,SharpDX.Direct3D9.Macro[],SharpDX.Direct3D9.Include,System.String,SharpDX.Direct3D9.ShaderFlags,SharpDX.Direct3D9.EffectPool)\">\n            <summary>\n            Compiles an effect from a string.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"sourceData\">The source data.</param>\n            <param name=\"preprocessorDefines\">The preprocessor defines.</param>\n            <param name=\"includeFile\">The include file.</param>\n            <param name=\"skipConstants\">The skip constants.</param>\n            <param name=\"flags\">The flags.</param>\n            <param name=\"pool\">The pool.</param>\n            <returns>\n            An <see cref=\"T:SharpDX.Direct3D9.Effect\"/>\n            </returns>\n            <unmanaged>HRESULT D3DXCreateEffectEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataLen,[In, Buffer] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] const char* pSkipConstants,[In] unsigned int Flags,[In] ID3DXEffectPool* pPool,[In] ID3DXEffect** ppEffect,[In] ID3DXBuffer** ppCompilationErrors)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Effect.SetRawValue(SharpDX.Direct3D9.EffectHandle,System.Single[])\">\n            <summary>\n            Set a contiguous range of shader constants with a memory copy.\n            </summary>\n            <param name=\"handle\">The handle.</param>\n            <param name=\"data\">The data.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT ID3DXEffect::SetRawValue([In] D3DXHANDLE hParameter,[In] const void* pData,[In] unsigned int ByteOffset,[In] unsigned int Bytes)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Effect.SetRawValue(SharpDX.Direct3D9.EffectHandle,SharpDX.DataStream)\">\n            <summary>\n            Set a contiguous range of shader constants with a memory copy.\n            </summary>\n            <param name=\"handle\">The handle.</param>\n            <param name=\"data\">The data.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT ID3DXEffect::SetRawValue([In] D3DXHANDLE hParameter,[In] const void* pData,[In] unsigned int ByteOffset,[In] unsigned int Bytes)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Effect.SetRawValue(SharpDX.Direct3D9.EffectHandle,SharpDX.DataStream,System.Int32,System.Int32)\">\n            <summary>\n            Set a contiguous range of shader constants with a memory copy.\n            </summary>\n            <param name=\"handle\">The handle.</param>\n            <param name=\"data\">The data.</param>\n            <param name=\"offset\">The offset.</param>\n            <param name=\"countInBytes\">The count in bytes.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT ID3DXEffect::SetRawValue([In] D3DXHANDLE hParameter,[In] const void* pData,[In] unsigned int ByteOffset,[In] unsigned int Bytes)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Effect.SetRawValue(SharpDX.Direct3D9.EffectHandle,System.Single[],System.Int32,System.Int32)\">\n            <summary>\n            Set a contiguous range of shader constants with a memory copy.\n            </summary>\n            <param name=\"handle\">The handle.</param>\n            <param name=\"data\">The data.</param>\n            <param name=\"startIndex\">The start index.</param>\n            <param name=\"count\">The count.</param>\n            <returns>A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.</returns>\n            <unmanaged>HRESULT ID3DXEffect::SetRawValue([In] D3DXHANDLE hParameter,[In] const void* pData,[In] unsigned int ByteOffset,[In] unsigned int Bytes)</unmanaged>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Effect.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D9.Effect\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Effect.op_Explicit(System.IntPtr)~SharpDX.Direct3D9.Effect\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D9.Effect\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Effect.GetPool(SharpDX.Direct3D9.EffectPool@)\">\n            <summary>\t\n            <p>Gets a reference to the pool of shared parameters.</p>\t\n            </summary>\t\n            <param name=\"poolOut\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.EffectPool\"/></strong> object. </p> </dd></param>\t\n            <returns><p>This method always returns the value <see cref=\"F:SharpDX.Result.Ok\"/>.</p></returns>\t\n            <remarks>\t\n            <p>Pools contain shared parameters between effects. See Cloning and Sharing (Direct3D 9).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXEffect::GetPool']/*\"/>\t\n            <msdn-id>bb205827</msdn-id>\t\n            <unmanaged>HRESULT ID3DXEffect::GetPool([Out] ID3DXEffectPool** ppPool)</unmanaged>\t\n            <unmanaged-short>ID3DXEffect::GetPool</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Effect.SetTechnique(SharpDX.Direct3D9.EffectHandle)\">\n            <summary>\t\n            <p>Sets the active technique.</p>\t\n            </summary>\t\n            <param name=\"hTechnique\"><dd>  <p>Unique handle to the technique.  See Handles (Direct3D 9).</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXEffect::SetTechnique']/*\"/>\t\n            <msdn-id>bb205834</msdn-id>\t\n            <unmanaged>HRESULT ID3DXEffect::SetTechnique([In] D3DXHANDLE hTechnique)</unmanaged>\t\n            <unmanaged-short>ID3DXEffect::SetTechnique</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Effect.GetCurrentTechnique\">\n            <summary>\t\n            <p>Gets the current technique.</p>\t\n            </summary>\t\n            <returns><p>A unique identifier to the current technique.  See Handles (Direct3D 9).</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXEffect::GetCurrentTechnique']/*\"/>\t\n            <msdn-id>bb205825</msdn-id>\t\n            <unmanaged>D3DXHANDLE ID3DXEffect::GetCurrentTechnique()</unmanaged>\t\n            <unmanaged-short>ID3DXEffect::GetCurrentTechnique</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Effect.ValidateTechnique(SharpDX.Direct3D9.EffectHandle)\">\n            <summary>\t\n            <p>Validate a technique.</p>\t\n            </summary>\t\n            <param name=\"hTechnique\"><dd>  <p>Unique identifier. See Handles (Direct3D 9).</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.ConflictingRenderState\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.ConflictingTextureFilter\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.DeviceLost\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.DriverInternalError\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.TooManyOperations\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.UnsupportedAlphaArgument\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.UnsupportedAlphaOperation\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.UnsupportedColorArgument\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.UnsupportedColorOperation\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.UnsupportedFactorValue\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.UnsupportedTextureFilter\"/>, and <see cref=\"F:SharpDX.Direct3D9.ResultCode.WrongTextureFormat\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXEffect::ValidateTechnique']/*\"/>\t\n            <msdn-id>bb205835</msdn-id>\t\n            <unmanaged>HRESULT ID3DXEffect::ValidateTechnique([In] D3DXHANDLE hTechnique)</unmanaged>\t\n            <unmanaged-short>ID3DXEffect::ValidateTechnique</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Effect.FindNextValidTechnique(SharpDX.Direct3D9.EffectHandle)\">\n            <summary>\t\n            <p>Searches for the next valid technique, starting at the technique after the specified technique.</p>\t\n            </summary>\t\n            <param name=\"hTechnique\"><dd>  <p>Unique identifier to a technique. See Handles (Direct3D 9). Specify <strong><c>null</c></strong> for this parameter to find the first valid technique.</p> </dd></param>\t\n            <returns><dd>  <p>Pointer to an identifier for the next technique. <strong><c>null</c></strong> is returned if this is the last technique.  See Handles (Direct3D 9).</p> </dd></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXEffect::FindNextValidTechnique']/*\"/>\t\n            <msdn-id>bb205824</msdn-id>\t\n            <unmanaged>HRESULT ID3DXEffect::FindNextValidTechnique([In] D3DXHANDLE hTechnique,[Out] D3DXHANDLE* pTechnique)</unmanaged>\t\n            <unmanaged-short>ID3DXEffect::FindNextValidTechnique</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Effect.IsParameterUsed(SharpDX.Direct3D9.EffectHandle,SharpDX.Direct3D9.EffectHandle)\">\n            <summary>\t\n            <p>Determines if a parameter is used by the technique.</p>\t\n            </summary>\t\n            <param name=\"hParameter\"><dd>  <p>Unique identifier for the parameter.  See Handles (Direct3D 9).</p> </dd></param>\t\n            <param name=\"hTechnique\"><dd>  <p>Unique identifier for the technique.  See Handles (Direct3D 9).</p> </dd></param>\t\n            <returns><p>Returns <strong>TRUE</strong> if the parameter is being used and returns <strong><see cref=\"F:SharpDX.Result.False\"/></strong> if the parameter is not being used.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXEffect::IsParameterUsed']/*\"/>\t\n            <msdn-id>bb205829</msdn-id>\t\n            <unmanaged>BOOL ID3DXEffect::IsParameterUsed([In] D3DXHANDLE hParameter,[In] D3DXHANDLE hTechnique)</unmanaged>\t\n            <unmanaged-short>ID3DXEffect::IsParameterUsed</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Effect.Begin(SharpDX.Direct3D9.FX)\">\n            <summary>\t\n            <p>Starts an active technique.</p>\t\n            </summary>\t\n            <param name=\"flags\"><dd>  <p>DWORD that determines if state modified by an effect is saved and restored. The default value 0 specifies that <strong><see cref=\"M:SharpDX.Direct3D9.Effect.Begin\"/></strong> and <strong><see cref=\"M:SharpDX.Direct3D9.Effect.End\"/></strong> will save and restore all state modified by the effect (including pixel and vertex shader constants). Valid flags can be seen at Effect State Save and Restore Flags.</p> </dd></param>\t\n            <returns><dd>  <p>Pointer to a value returned that indicates the number of passes needed to render the current technique. </p> </dd></returns>\t\n            <remarks>\t\n            <p>An application sets one active technique in the effect system by calling <strong><see cref=\"M:SharpDX.Direct3D9.Effect.Begin\"/></strong>. The effect system responds by capturing all the pipeline state that can be changed by the technique in a state block. An application signals the end of a technique by calling <strong><see cref=\"M:SharpDX.Direct3D9.Effect.End\"/></strong>, which uses the state block to restore the original state. The effect system, therefore, takes care of saving state when a technique becomes active and restoring state when a technique ends. If you choose to disable this save and restore functionality, see <see cref=\"F:SharpDX.Direct3D9.FX.DoNotSaveSamplerState\"/>.</p><p>Within the <strong><see cref=\"M:SharpDX.Direct3D9.Effect.Begin\"/></strong> and <strong><see cref=\"M:SharpDX.Direct3D9.Effect.End\"/></strong> pair, an application uses <strong><see cref=\"M:SharpDX.Direct3D9.Effect.BeginPass(System.Int32)\"/></strong> to set the active pass, <strong><see cref=\"M:SharpDX.Direct3D9.Effect.CommitChanges\"/></strong> if any state changes occurred after the pass was activated, and <strong><see cref=\"M:SharpDX.Direct3D9.Effect.EndPass\"/></strong> to end the active pass.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXEffect::Begin']/*\"/>\t\n            <msdn-id>bb205815</msdn-id>\t\n            <unmanaged>HRESULT ID3DXEffect::Begin([Out] unsigned int* pPasses,[In] D3DXFX Flags)</unmanaged>\t\n            <unmanaged-short>ID3DXEffect::Begin</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Effect.BeginPass(System.Int32)\">\n            <summary>\t\n            <p>Begins a pass, within the active technique.</p>\t\n            </summary>\t\n            <param name=\"pass\"><dd>  <p>A zero-based integer index into the technique.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA.</p></returns>\t\n            <remarks>\t\n            <p>An application sets one active pass (within one active technique) in the effect system by calling <strong><see cref=\"M:SharpDX.Direct3D9.Effect.BeginPass(System.Int32)\"/></strong>. An application signals the end of the active pass by calling <strong><see cref=\"M:SharpDX.Direct3D9.Effect.EndPass\"/></strong>. <strong><see cref=\"M:SharpDX.Direct3D9.Effect.BeginPass(System.Int32)\"/></strong> and <strong><see cref=\"M:SharpDX.Direct3D9.Effect.EndPass\"/></strong> must occur in a matching pair, within a matching pair of <strong><see cref=\"M:SharpDX.Direct3D9.Effect.Begin\"/></strong> and <strong><see cref=\"M:SharpDX.Direct3D9.Effect.End\"/></strong> calls.</p><p>If the application changes any effect state using any of the <strong>Effect::Setx</strong> methods inside of a <strong><see cref=\"M:SharpDX.Direct3D9.Effect.BeginPass(System.Int32)\"/></strong>/<strong><see cref=\"M:SharpDX.Direct3D9.Effect.EndPass\"/></strong> matching pair, the application must call <strong><see cref=\"M:SharpDX.Direct3D9.Effect.CommitChanges\"/></strong> to set the update the device with the state changes. If no state changes occur within a <strong><see cref=\"M:SharpDX.Direct3D9.Effect.BeginPass(System.Int32)\"/></strong> and <strong><see cref=\"M:SharpDX.Direct3D9.Effect.EndPass\"/></strong> matching pair, it is not necessary to call <strong><see cref=\"M:SharpDX.Direct3D9.Effect.CommitChanges\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXEffect::BeginPass']/*\"/>\t\n            <msdn-id>bb205817</msdn-id>\t\n            <unmanaged>HRESULT ID3DXEffect::BeginPass([In] unsigned int Pass)</unmanaged>\t\n            <unmanaged-short>ID3DXEffect::BeginPass</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Effect.CommitChanges\">\n            <summary>\t\n            <p>Propagate state changes that occur inside of an active pass to the device before rendering.</p>\t\n            </summary>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA.</p></returns>\t\n            <remarks>\t\n            <p>If the application changes any effect state using any of the <strong>ID3DXEffect::Setx</strong> methods inside of an <strong><see cref=\"M:SharpDX.Direct3D9.Effect.BeginPass(System.Int32)\"/></strong>/<strong><see cref=\"M:SharpDX.Direct3D9.Effect.EndPass\"/></strong> matching pair, the application must call <strong><see cref=\"M:SharpDX.Direct3D9.Effect.CommitChanges\"/></strong> before any DrawxPrimitive call to propagate state changes to the device before rendering. If no state changes occur within a <strong><see cref=\"M:SharpDX.Direct3D9.Effect.BeginPass(System.Int32)\"/></strong> and <strong><see cref=\"M:SharpDX.Direct3D9.Effect.EndPass\"/></strong> matching pair, it is not necessary to call <strong><see cref=\"M:SharpDX.Direct3D9.Effect.CommitChanges\"/></strong>.</p><p>This is slightly different for any shared parameters in a cloned effect. When a technique is active on a cloned effect (that is, when <strong><see cref=\"M:SharpDX.Direct3D9.Effect.Begin\"/></strong> has been called but and <strong><see cref=\"M:SharpDX.Direct3D9.Effect.End\"/></strong> has not been called), <strong><see cref=\"M:SharpDX.Direct3D9.Effect.CommitChanges\"/></strong> updates parameters that are not shared as expected. To update a shared parameter (only for a cloned effect whose technique is active), call <strong><see cref=\"M:SharpDX.Direct3D9.Effect.End\"/></strong> to deactivate the technique and <strong><see cref=\"M:SharpDX.Direct3D9.Effect.Begin\"/></strong> to reactivate the technique before calling <strong><see cref=\"M:SharpDX.Direct3D9.Effect.CommitChanges\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXEffect::CommitChanges']/*\"/>\t\n            <msdn-id>bb205819</msdn-id>\t\n            <unmanaged>HRESULT ID3DXEffect::CommitChanges()</unmanaged>\t\n            <unmanaged-short>ID3DXEffect::CommitChanges</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Effect.EndPass\">\n            <summary>\t\n            <p>End an active pass.</p>\t\n            </summary>\t\n            <returns><p>This method always returns the value <see cref=\"F:SharpDX.Result.Ok\"/>.</p></returns>\t\n            <remarks>\t\n            <p>An application signals the end of rendering an active pass by calling <strong><see cref=\"M:SharpDX.Direct3D9.Effect.EndPass\"/></strong>. Each <strong><see cref=\"M:SharpDX.Direct3D9.Effect.EndPass\"/></strong> must be part of a matching pair of <strong><see cref=\"M:SharpDX.Direct3D9.Effect.BeginPass(System.Int32)\"/></strong> and <strong><see cref=\"M:SharpDX.Direct3D9.Effect.EndPass\"/></strong> calls.</p><p>Each matching pair of <strong><see cref=\"M:SharpDX.Direct3D9.Effect.BeginPass(System.Int32)\"/></strong> and <strong><see cref=\"M:SharpDX.Direct3D9.Effect.EndPass\"/></strong> calls must be located within a matching pair of <strong><see cref=\"M:SharpDX.Direct3D9.Effect.Begin\"/></strong> and <strong><see cref=\"M:SharpDX.Direct3D9.Effect.End\"/></strong> calls.</p><p>If the application changes any effect state using any of the <strong>Effect::Setx</strong> methods inside of a <strong><see cref=\"M:SharpDX.Direct3D9.Effect.BeginPass(System.Int32)\"/></strong>/<strong><see cref=\"M:SharpDX.Direct3D9.Effect.EndPass\"/></strong> matching pair, the application must call <strong><see cref=\"M:SharpDX.Direct3D9.Effect.CommitChanges\"/></strong> before any DrawxPrimitive call to propagate state changes to the device before rendering.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXEffect::EndPass']/*\"/>\t\n            <msdn-id>bb205823</msdn-id>\t\n            <unmanaged>HRESULT ID3DXEffect::EndPass()</unmanaged>\t\n            <unmanaged-short>ID3DXEffect::EndPass</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Effect.End\">\n            <summary>\t\n            <p>Ends an active technique.</p>\t\n            </summary>\t\n            <returns><p>This method always returns the value <see cref=\"F:SharpDX.Result.Ok\"/>.</p></returns>\t\n            <remarks>\t\n            <p>All rendering in an effect is done within a matching pair of <strong><see cref=\"M:SharpDX.Direct3D9.Effect.Begin\"/></strong> and <strong><see cref=\"M:SharpDX.Direct3D9.Effect.End\"/></strong> calls. After all passes are rendered, <strong><see cref=\"M:SharpDX.Direct3D9.Effect.End\"/></strong> must be called to end the active technique. The effect system responds by using the state block created when <strong><see cref=\"M:SharpDX.Direct3D9.Effect.Begin\"/></strong> was called, to automatically restore the pipeline state before <strong><see cref=\"M:SharpDX.Direct3D9.Effect.Begin\"/></strong>.</p><p>By default, the effect system takes care of saving state prior to a technique, and restoring state after a technique. If you choose to disable this save and restore functionality, see <see cref=\"F:SharpDX.Direct3D9.FX.DoNotSaveSamplerState\"/>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXEffect::End']/*\"/>\t\n            <msdn-id>bb205821</msdn-id>\t\n            <unmanaged>HRESULT ID3DXEffect::End()</unmanaged>\t\n            <unmanaged-short>ID3DXEffect::End</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Effect.GetDevice(SharpDX.Direct3D9.Device@)\">\n            <summary>\t\n            <p>Retrieves the device associated with the effect.</p>\t\n            </summary>\t\n            <param name=\"deviceOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface, representing the device associated with the effect. </p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>Calling this method will increase the internal reference count for the <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface. Be sure to call IUnknown::Release when you are done using the <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface or you will have a memory leak.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXEffect::GetDevice']/*\"/>\t\n            <msdn-id>bb205826</msdn-id>\t\n            <unmanaged>HRESULT ID3DXEffect::GetDevice([Out] IDirect3DDevice9** ppDevice)</unmanaged>\t\n            <unmanaged-short>ID3DXEffect::GetDevice</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Effect.OnLostDevice\">\n            <summary>\t\n            <p>Use this method to release all references to video memory resources and delete all stateblocks. This method should be called whenever a device is lost, or before resetting a device.</p>\t\n            </summary>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>This method should be called whenever the device is lost or before the user calls <strong><see cref=\"M:SharpDX.Direct3D9.Device.Reset(SharpDX.Direct3D9.PresentParameters[])\"/></strong>. Even if the device was not actually lost, <strong><see cref=\"M:SharpDX.Direct3D9.Effect.OnLostDevice\"/></strong> is responsible for freeing stateblocks and other resources that may need to be released before resetting the device. As a result, the font object cannot be used again before calling <strong><see cref=\"M:SharpDX.Direct3D9.Device.Reset(SharpDX.Direct3D9.PresentParameters[])\"/></strong> and then <strong><see cref=\"M:SharpDX.Direct3D9.Effect.OnResetDevice\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXEffect::OnLostDevice']/*\"/>\t\n            <msdn-id>bb205830</msdn-id>\t\n            <unmanaged>HRESULT ID3DXEffect::OnLostDevice()</unmanaged>\t\n            <unmanaged-short>ID3DXEffect::OnLostDevice</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Effect.OnResetDevice\">\n            <summary>\t\n            <p>Use this method to re-acquire resources and save initial state.</p>\t\n            </summary>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p><strong><see cref=\"M:SharpDX.Direct3D9.Effect.OnResetDevice\"/></strong> should be called each time the device is reset (using <strong><see cref=\"M:SharpDX.Direct3D9.Device.Reset(SharpDX.Direct3D9.PresentParameters[])\"/></strong>), before any other methods are called. This is a good place to re-acquire video-memory resources and capture state blocks.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXEffect::OnResetDevice']/*\"/>\t\n            <msdn-id>bb205831</msdn-id>\t\n            <unmanaged>HRESULT ID3DXEffect::OnResetDevice()</unmanaged>\t\n            <unmanaged-short>ID3DXEffect::OnResetDevice</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Effect.SetStateManager(SharpDX.Direct3D9.EffectStateManager)\">\n            <summary>\t\n            <p>Set the effect state manager.</p>\t\n            </summary>\t\n            <param name=\"managerRef\"><dd>  <p>A reference to the state manager. See <strong><see cref=\"T:SharpDX.Direct3D9.EffectStateManager\"/></strong>.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA.</p></returns>\t\n            <remarks>\t\n            <p>The <strong><see cref=\"T:SharpDX.Direct3D9.EffectStateManager\"/></strong> is a user-implemented interface that furnishes callbacks into an application for setting device state from an effect.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXEffect::SetStateManager']/*\"/>\t\n            <msdn-id>bb205833</msdn-id>\t\n            <unmanaged>HRESULT ID3DXEffect::SetStateManager([In] ID3DXEffectStateManager* pManager)</unmanaged>\t\n            <unmanaged-short>ID3DXEffect::SetStateManager</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Effect.GetStateManager(SharpDX.Direct3D9.EffectStateManager@)\">\n            <summary>\t\n            <p>Get the effect state manager.</p>\t\n            </summary>\t\n            <param name=\"managerOut\"><dd>  <p>Returns a reference to the state manager. See <strong><see cref=\"T:SharpDX.Direct3D9.EffectStateManager\"/></strong>.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA.</p></returns>\t\n            <remarks>\t\n            <p>The <strong><see cref=\"T:SharpDX.Direct3D9.EffectStateManager\"/></strong> is a user-implemented interface that furnishes callbacks into an application for setting device state from an effect.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXEffect::GetStateManager']/*\"/>\t\n            <msdn-id>bb205828</msdn-id>\t\n            <unmanaged>HRESULT ID3DXEffect::GetStateManager([Out] ID3DXEffectStateManager** ppManager)</unmanaged>\t\n            <unmanaged-short>ID3DXEffect::GetStateManager</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Effect.BeginParameterBlock\">\n            <summary>\t\n            <p>Start capturing state changes in a parameter block.</p>\t\n            </summary>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA.</p></returns>\t\n            <remarks>\t\n            <p>Capture effect parameter state changes until EndParameterBlock is called. Effect parameters include any state changes outside of a pass. Delete parameter blocks if they are no longer needed by calling DeleteParameterBlock.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXEffect::BeginParameterBlock']/*\"/>\t\n            <msdn-id>bb205816</msdn-id>\t\n            <unmanaged>HRESULT ID3DXEffect::BeginParameterBlock()</unmanaged>\t\n            <unmanaged-short>ID3DXEffect::BeginParameterBlock</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Effect.EndParameterBlock\">\n            <summary>\t\n            <p>Stop capturing effect parameter state changes.</p>\t\n            </summary>\t\n            <returns><p>Returns a handle to the parameter state block.</p></returns>\t\n            <remarks>\t\n            <p>All effect parameters that change state (after calling BeginParameterBlock and before calling EndParameterBlock) will be saved in an effect parameter state block. Use ApplyParameterBlock to apply this block of state changes to the effect system. Once you are finished with a state block use DeleteParameterBlock to free the memory.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXEffect::EndParameterBlock']/*\"/>\t\n            <msdn-id>bb205822</msdn-id>\t\n            <unmanaged>D3DXHANDLE ID3DXEffect::EndParameterBlock()</unmanaged>\t\n            <unmanaged-short>ID3DXEffect::EndParameterBlock</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Effect.ApplyParameterBlock(SharpDX.Direct3D9.EffectHandle)\">\n            <summary>\t\n            <p>Apply the values in a state block to the current effect system state.</p>\t\n            </summary>\t\n            <param name=\"hParameterBlock\"><dd>  <p>A handle to the parameter block. This is the handle returned by <strong><see cref=\"M:SharpDX.Direct3D9.Effect.EndParameterBlock\"/></strong>.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA.</p></returns>\t\n            <remarks>\t\n            <p>Capture effect parameter state changes in a parameter block by calling BeginParameterBlock; stop capturing state changes by calling EndParameterBlock. These state changes include any effect parameter changes that occur inside of a technique (including those outside of a pass). Once you are done with the parameter block, call DeleteParameterBlock to recover memory.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXEffect::ApplyParameterBlock']/*\"/>\t\n            <msdn-id>bb205814</msdn-id>\t\n            <unmanaged>HRESULT ID3DXEffect::ApplyParameterBlock([In] D3DXHANDLE hParameterBlock)</unmanaged>\t\n            <unmanaged-short>ID3DXEffect::ApplyParameterBlock</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Effect.DeleteParameterBlock(SharpDX.Direct3D9.EffectHandle)\">\n            <summary>\t\n            <p>Delete a parameter block.</p>\t\n            </summary>\t\n            <param name=\"hParameterBlock\"><dd>  <p>A handle to the parameter block. This is the handle returned by <strong><see cref=\"M:SharpDX.Direct3D9.Effect.EndParameterBlock\"/></strong>.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA.</p></returns>\t\n            <remarks>\t\n            <p>Parameter blocks are blocks of effect states. Use a parameter block to record state changes so that they can be applied later on with a single API call. When no longer needed, delete the parameter block to reduce memory usage.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXEffect::DeleteParameterBlock']/*\"/>\t\n            <msdn-id>bb205820</msdn-id>\t\n            <unmanaged>HRESULT ID3DXEffect::DeleteParameterBlock([In] D3DXHANDLE hParameterBlock)</unmanaged>\t\n            <unmanaged-short>ID3DXEffect::DeleteParameterBlock</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Effect.Clone(SharpDX.Direct3D9.Device)\">\n            <summary>\t\n            <p>Creates a copy of an effect.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface, representing the device associated with the effect. </p> </dd></param>\t\n            <returns><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Effect\"/></strong> interface, containing the cloned effect. </p> </dd></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??This function will not clone an effect if the user specifies <see cref=\"F:SharpDX.Direct3D9.FX.NotCloneable\"/> during effect creation.</p><p>To update shared and non-shared parameters in an active technique of a cloned effect, see <strong><see cref=\"M:SharpDX.Direct3D9.Effect.CommitChanges\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXEffect::CloneEffect']/*\"/>\t\n            <msdn-id>bb205818</msdn-id>\t\n            <unmanaged>HRESULT ID3DXEffect::CloneEffect([In] IDirect3DDevice9* pDevice,[Out] ID3DXEffect** ppEffect)</unmanaged>\t\n            <unmanaged-short>ID3DXEffect::CloneEffect</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Effect.SetRawValue(SharpDX.Direct3D9.EffectHandle,System.IntPtr,System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Set a contiguous range of shader constants with a memory copy.</p>\t\n            </summary>\t\n            <param name=\"hParameter\"><dd>  <p>Handle to the value to set, or the name of the value passed in as a string. Passing in a handle is more efficient. See Handles (Direct3D 9). </p> </dd></param>\t\n            <param name=\"dataRef\"><dd>  <p>Pointer to a buffer containing the data to be set. SetRawValue checks for valid memory, but does not do any checking for valid data.</p> </dd></param>\t\n            <param name=\"byteOffset\"><dd>  <p>Number of bytes between the beginning of the effect data and the beginning of the effect constants you are going to set.</p> </dd></param>\t\n            <param name=\"bytes\"><dd>  <p>The size of the buffer to be set, in bytes.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the return value can be one of the following:E_INVALIDCALL.</p></returns>\t\n            <remarks>\t\n            <p>SetRawValue is a very fast way to set effect constants since it performs a memory copy without performing validation or any data conversion (like converting a row-major matrix to a column-major matrix). Use SetRawValue to set a series of contiguous effect constants. For instance, you could set an array of twenty matrices with 20 calls to <strong><see cref=\"M:SharpDX.Direct3D9.BaseEffect.SetMatrix(SharpDX.Direct3D9.EffectHandle,SharpDX.Matrix@)\"/></strong> or by using a single SetRawValue.</p><p>All values are expected to be either matrix4x4s or float4s and all matrices are expected to be in column-major order. Int or float values are cast into a float4; therefore, it is highly recommended that you use SetRawValue with only float4 or matrix4x4 data.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXEffect::SetRawValue']/*\"/>\t\n            <msdn-id>bb205832</msdn-id>\t\n            <unmanaged>HRESULT ID3DXEffect::SetRawValue([In] D3DXHANDLE hParameter,[In] const void* pData,[In] unsigned int ByteOffset,[In] unsigned int Bytes)</unmanaged>\t\n            <unmanaged-short>ID3DXEffect::SetRawValue</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.Effect.Technique\">\n            <summary>\n            Gets or sets the current technique.\n            </summary>\n            <value>\n            The technique.\n            </value>\n            <unmanaged>D3DXHANDLE ID3DXEffect::GetCurrentTechnique()</unmanaged>\t\n            <unmanaged>HRESULT ID3DXEffect::SetTechnique([In] D3DXHANDLE hTechnique)</unmanaged>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.Effect.Pool\">\n            <summary>\t\n            <p>Gets a reference to the pool of shared parameters.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Pools contain shared parameters between effects. See Cloning and Sharing (Direct3D 9).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXEffect::GetPool']/*\"/>\t\n            <msdn-id>bb205827</msdn-id>\t\n            <unmanaged>GetPool</unmanaged>\t\n            <unmanaged-short>GetPool</unmanaged-short>\t\n            <unmanaged>HRESULT ID3DXEffect::GetPool([Out] ID3DXEffectPool** ppPool)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.Effect.Device\">\n            <summary>\t\n            <p>Retrieves the device associated with the effect.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Calling this method will increase the internal reference count for the <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface. Be sure to call IUnknown::Release when you are done using the <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface or you will have a memory leak.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXEffect::GetDevice']/*\"/>\t\n            <msdn-id>bb205826</msdn-id>\t\n            <unmanaged>GetDevice</unmanaged>\t\n            <unmanaged-short>GetDevice</unmanaged-short>\t\n            <unmanaged>HRESULT ID3DXEffect::GetDevice([Out] IDirect3DDevice9** ppDevice)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.Effect.StateManager\">\n            <summary>\t\n            <p>Get or sets the effect state manager.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The <strong><see cref=\"T:SharpDX.Direct3D9.EffectStateManager\"/></strong> is a user-implemented interface that furnishes callbacks into an application for setting device state from an effect.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXEffect::GetStateManager']/*\"/>\t\n            <msdn-id>bb205828</msdn-id>\t\n            <unmanaged>GetStateManager / SetStateManager</unmanaged>\t\n            <unmanaged-short>GetStateManager</unmanaged-short>\t\n            <unmanaged>HRESULT ID3DXEffect::GetStateManager([Out] ID3DXEffectStateManager** ppManager)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.EffectCompiler\">\n            <summary>\t\n            <p>Compiles a shader from an effect that contains one or more functions.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Targets can be specified for vertex shaders, pixel shaders, and texture fill functions.</p><table> <tr><td>Vertex shader targets</td><td>vs_1_1, vs_2_0, vs_2_sw, vs_3_0</td></tr> <tr><td>Pixel shader targets</td><td>ps_1_1, ps_1_2, ps_1_3, ps_1_4, ps_2_0, ps_2_sw, ps_3_0</td></tr> <tr><td>Texture fill targets</td><td>tx_0, tx_1</td></tr> </table><p>?</p><p>This method compiles a shader from a function that is written in a C-like language. For more information, see HLSL.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXEffectCompiler']/*\"/>\t\n            <msdn-id>bb205791</msdn-id>\t\n            <unmanaged>ID3DXEffectCompiler</unmanaged>\t\n            <unmanaged-short>ID3DXEffectCompiler</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.EffectCompiler.#ctor(System.String,SharpDX.Direct3D9.Macro[],SharpDX.Direct3D9.Include,SharpDX.Direct3D9.ShaderFlags)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D9.EffectCompiler\"/> class.\n            </summary>\n            <param name=\"data\">The data.</param>\n            <param name=\"defines\">The defines.</param>\n            <param name=\"includeFile\">The include file.</param>\n            <param name=\"flags\">The flags.</param>\n            <unmanaged>HRESULT D3DXCreateEffectCompiler([In] const char* pSrcData,[In] unsigned int SrcDataLen,[In, Buffer] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] unsigned int Flags,[In] ID3DXEffectCompiler** ppCompiler,[In] ID3DXBuffer** ppParseErrors)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.EffectCompiler.CompileEffect(SharpDX.Direct3D9.ShaderFlags)\">\n            <summary>\n            Compile an effect.\n            </summary>\n            <param name=\"flags\">The flags.</param>\n            <exception cref=\"T:SharpDX.CompilationException\">If a compilation errors occurs</exception>\n            <returns>Buffer containing the compiled effect.</returns>\n            <unmanaged>HRESULT ID3DXEffectCompiler::CompileEffect([In] unsigned int Flags,[In] ID3DXBuffer** ppEffect,[In] ID3DXBuffer** ppErrorMsgs)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.EffectCompiler.CompileShader(SharpDX.Direct3D9.EffectHandle,System.String,SharpDX.Direct3D9.ShaderFlags)\">\n            <summary>\n            Compiles a shader from an effect that contains one or more functions.\n            </summary>\n            <param name=\"functionHandle\">The function handle.</param>\n            <param name=\"target\">The target.</param>\n            <param name=\"flags\">The flags.</param>\n            <exception cref=\"T:SharpDX.CompilationException\">If a compilation errors occurs</exception>\n            <returns>The bytecode of the effect.</returns>\n            <unmanaged>HRESULT ID3DXEffectCompiler::CompileShader([In] D3DXHANDLE hFunction,[In] const char* pTarget,[In] unsigned int Flags,[In] ID3DXBuffer** ppShader,[In] ID3DXBuffer** ppErrorMsgs,[In] ID3DXConstantTable** ppConstantTable)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.EffectCompiler.CompileShader(SharpDX.Direct3D9.EffectHandle,System.String,SharpDX.Direct3D9.ShaderFlags,SharpDX.Direct3D9.ConstantTable@)\">\n            <summary>\n            Compiles a shader from an effect that contains one or more functions.\n            </summary>\n            <param name=\"functionHandle\">The function handle.</param>\n            <param name=\"target\">The target.</param>\n            <param name=\"flags\">The flags.</param>\n            <param name=\"constantTable\">The constant table.</param>\n            <exception cref=\"T:SharpDX.CompilationException\">If a compilation errors occurs</exception>\n            <returns>The bytecode of the effect.</returns>\n            <unmanaged>HRESULT ID3DXEffectCompiler::CompileShader([In] D3DXHANDLE hFunction,[In] const char* pTarget,[In] unsigned int Flags,[In] ID3DXBuffer** ppShader,[In] ID3DXBuffer** ppErrorMsgs,[In] ID3DXConstantTable** ppConstantTable)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.EffectCompiler.FromFile(System.String,SharpDX.Direct3D9.ShaderFlags)\">\n            <summary>\n            Creates an effect compiler from a file on disk containing an ASCII effect description .\n            </summary>\n            <param name=\"fileName\">Name of the file.</param>\n            <param name=\"flags\">The flags.</param>\n            <returns>\n            An instance of <see cref=\"T:SharpDX.Direct3D9.EffectCompiler\"/>\n            </returns>\n            <unmanaged>HRESULT D3DXCreateEffectCompiler([In] const void* pSrcData,[In] unsigned int SrcDataLen,[In, Buffer] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] unsigned int Flags,[Out, Fast] ID3DXEffectCompiler** ppCompiler,[In] ID3DXBuffer** ppParseErrors)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.EffectCompiler.FromFile(System.String,SharpDX.Direct3D9.Macro[],SharpDX.Direct3D9.Include,SharpDX.Direct3D9.ShaderFlags)\">\n            <summary>\n            Creates an effect compiler from a file on disk containing an ASCII effect description .\n            </summary>\n            <param name=\"fileName\">Name of the file.</param>\n            <param name=\"defines\">The defines.</param>\n            <param name=\"includeFile\">The include file.</param>\n            <param name=\"flags\">The flags.</param>\n            <returns>\n            An instance of <see cref=\"T:SharpDX.Direct3D9.EffectCompiler\"/>\n            </returns>\n            <unmanaged>HRESULT D3DXCreateEffectCompiler([In] const void* pSrcData,[In] unsigned int SrcDataLen,[In, Buffer] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] unsigned int Flags,[Out, Fast] ID3DXEffectCompiler** ppCompiler,[In] ID3DXBuffer** ppParseErrors)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.EffectCompiler.FromMemory(System.Byte[],SharpDX.Direct3D9.ShaderFlags)\">\n            <summary>\n            Creates an effect compiler from a memory buffer containing an ASCII effect description .\n            </summary>\n            <param name=\"data\">The data.</param>\n            <param name=\"flags\">The flags.</param>\n            <returns>\n            An instance of <see cref=\"T:SharpDX.Direct3D9.EffectCompiler\"/>\n            </returns>\n            <unmanaged>HRESULT D3DXCreateEffectCompiler([In] const void* pSrcData,[In] unsigned int SrcDataLen,[In, Buffer] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] unsigned int Flags,[Out, Fast] ID3DXEffectCompiler** ppCompiler,[In] ID3DXBuffer** ppParseErrors)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.EffectCompiler.FromMemory(System.Byte[],SharpDX.Direct3D9.Macro[],SharpDX.Direct3D9.Include,SharpDX.Direct3D9.ShaderFlags)\">\n            <summary>\n            Creates an effect compiler from a memory buffer containing an ASCII effect description .\n            </summary>\n            <param name=\"data\">The data.</param>\n            <param name=\"defines\">The defines.</param>\n            <param name=\"includeFile\">The include file.</param>\n            <param name=\"flags\">The flags.</param>\n            <returns>\n            An instance of <see cref=\"T:SharpDX.Direct3D9.EffectCompiler\"/>\n            </returns>\n            <unmanaged>HRESULT D3DXCreateEffectCompiler([In] const void* pSrcData,[In] unsigned int SrcDataLen,[In, Buffer] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] unsigned int Flags,[Out, Fast] ID3DXEffectCompiler** ppCompiler,[In] ID3DXBuffer** ppParseErrors)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.EffectCompiler.FromStream(System.IO.Stream,SharpDX.Direct3D9.ShaderFlags)\">\n            <summary>\n            Creates an effect compiler from a stream containing an ASCII effect description .\n            </summary>\n            <param name=\"stream\">The stream.</param>\n            <param name=\"flags\">The flags.</param>\n            <returns>\n            An instance of <see cref=\"T:SharpDX.Direct3D9.EffectCompiler\"/>\n            </returns>\n            <unmanaged>HRESULT D3DXCreateEffectCompiler([In] const void* pSrcData,[In] unsigned int SrcDataLen,[In, Buffer] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] unsigned int Flags,[Out, Fast] ID3DXEffectCompiler** ppCompiler,[In] ID3DXBuffer** ppParseErrors)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.EffectCompiler.FromStream(System.IO.Stream,SharpDX.Direct3D9.Macro[],SharpDX.Direct3D9.Include,SharpDX.Direct3D9.ShaderFlags)\">\n            <summary>\n            Creates an effect compiler from a stream containing an ASCII effect description .\n            </summary>\n            <param name=\"stream\">The stream.</param>\n            <param name=\"defines\">The defines.</param>\n            <param name=\"includeFile\">The include file.</param>\n            <param name=\"flags\">The flags.</param>\n            <returns>An instance of <see cref=\"T:SharpDX.Direct3D9.EffectCompiler\"/></returns>\n            <unmanaged>HRESULT D3DXCreateEffectCompiler([In] const void* pSrcData,[In] unsigned int SrcDataLen,[In, Buffer] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] unsigned int Flags,[Out, Fast] ID3DXEffectCompiler** ppCompiler,[In] ID3DXBuffer** ppParseErrors)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.EffectCompiler.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D9.EffectCompiler\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.EffectCompiler.op_Explicit(System.IntPtr)~SharpDX.Direct3D9.EffectCompiler\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D9.EffectCompiler\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.EffectCompiler.SetLiteral(SharpDX.Direct3D9.EffectHandle,SharpDX.Bool)\">\n            <summary>\t\n            <p>Toggles the literal status of a parameter. A literal parameter has a value that doesn't change during the lifetime of an effect.</p>\t\n            </summary>\t\n            <param name=\"hParameter\"><dd>  <p>Unique identifier to a parameter. See Handles (Direct3D 9).</p> </dd></param>\t\n            <param name=\"literal\"><dd>  <p>Set to <strong>TRUE</strong> to make the parameter a literal, and <strong><see cref=\"F:SharpDX.Result.False\"/></strong> if the parameter can change value during the shader lifetime.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>This methods only changes whether the parameter is a literal or not. To change the value of a parameter, use a method like <strong><see cref=\"M:SharpDX.Direct3D9.BaseEffect.SetBool(SharpDX.Direct3D9.EffectHandle,SharpDX.Bool)\"/></strong> or <strong><see cref=\"M:SharpDX.Direct3D9.BaseEffect.SetValue(SharpDX.Direct3D9.EffectHandle,System.Boolean)\"/></strong>.</p><p>This function must be called before the effect is compiled.  Here is an example of how one might use this function:</p><pre><code> LPD3DXEFFECTCOMPILER pEffectCompiler; char errors[1000]; <see cref=\"T:SharpDX.Result\"/> hr; hr = <see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateEffectCompilerFromFileW(System.String,SharpDX.Direct3D9.Macro[],System.IntPtr,System.Int32,SharpDX.Direct3D9.EffectCompiler@,SharpDX.Direct3D.Blob@)\"/>(\"shader.fx\", <c>null</c>, <c>null</c>, 0, &amp;pEffectCompiler,  &amp;errors); //In the fx file, literalInt is declared as an int. //By calling this function, the compiler will treat //it as a literal (i.e. #define) hr = pEffectCompiler-&gt;SetLiteral(\"literalInt\", TRUE); //create ten different variations of the same effect LPD3DXBUFFER pEffects[10]; LPD3DXBUFFER pErrors; for(int i = 0; i &lt; 10; ++i) { hr = pEffectCompiler-&gt;SetInt(\"literalInt\", i); hr = pEffectCompiler-&gt;CompileEffect(0, &amp;pEffects[i], &amp;pErrors); }\t\n            </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXEffectCompiler::SetLiteral']/*\"/>\t\n            <msdn-id>bb205793</msdn-id>\t\n            <unmanaged>HRESULT ID3DXEffectCompiler::SetLiteral([In] D3DXHANDLE hParameter,[In] BOOL Literal)</unmanaged>\t\n            <unmanaged-short>ID3DXEffectCompiler::SetLiteral</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.EffectCompiler.GetLiteral(SharpDX.Direct3D9.EffectHandle)\">\n            <summary>\t\n            <p>Gets a literal status of a parameter. A literal parameter has a value that doesn't change during the lifetime of an effect.</p>\t\n            </summary>\t\n            <param name=\"hParameter\"><dd>  <p>Unique identifier to a parameter. See Handles (Direct3D 9).</p> </dd></param>\t\n            <returns><dd>  <p>Returns True if the parameter is a literal, and False otherwise.</p> </dd></returns>\t\n            <remarks>\t\n            <p>This methods only changes whether the parameter is a literal or not. To change the value of a parameter, use a method like <strong><see cref=\"M:SharpDX.Direct3D9.BaseEffect.SetBool(SharpDX.Direct3D9.EffectHandle,SharpDX.Bool)\"/></strong> or <strong><see cref=\"M:SharpDX.Direct3D9.BaseEffect.SetValue(SharpDX.Direct3D9.EffectHandle,System.Boolean)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXEffectCompiler::GetLiteral']/*\"/>\t\n            <msdn-id>bb205792</msdn-id>\t\n            <unmanaged>HRESULT ID3DXEffectCompiler::GetLiteral([In] D3DXHANDLE hParameter,[Out] BOOL* pLiteral)</unmanaged>\t\n            <unmanaged-short>ID3DXEffectCompiler::GetLiteral</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.EffectCompiler.CompileEffect(System.Int32,SharpDX.Direct3D.Blob@,SharpDX.Direct3D.Blob@)\">\n            <summary>\t\n            <p>Compile an effect.</p>\t\n            </summary>\t\n            <param name=\"flags\"><dd>  <p>Compile options identified by various flags. The Direct3D 10 HLSL compiler is now the default. See <see cref=\"T:SharpDX.Direct3D9.ShaderFlags\"/> Flags for details.</p> </dd></param>\t\n            <param name=\"effectOut\"><dd>  <p>Buffer containing the compiled effect. For more information about accessing the buffer, see <strong><see cref=\"T:SharpDX.Direct3D.Blob\"/></strong>.</p> </dd></param>\t\n            <param name=\"errorMsgsOut\"><dd>  <p>Buffer containing at least the first compile error message that occurred. This includes effect compiler errors and high-level language compile errors. For more information about accessing the buffer, see <strong><see cref=\"T:SharpDX.Direct3D.Blob\"/></strong>.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>.</p><p>If the arguments are invalid, the method will return <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p><p>If the method fails, the return value will be E_FAIL.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXEffectCompiler::CompileEffect']/*\"/>\t\n            <msdn-id>bb205790</msdn-id>\t\n            <unmanaged>HRESULT ID3DXEffectCompiler::CompileEffect([In] unsigned int Flags,[In] ID3DXBuffer** ppEffect,[In] ID3DXBuffer** ppErrorMsgs)</unmanaged>\t\n            <unmanaged-short>ID3DXEffectCompiler::CompileEffect</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.EffectCompiler.CompileShader(SharpDX.Direct3D9.EffectHandle,System.String,System.Int32,SharpDX.Direct3D.Blob@,SharpDX.Direct3D.Blob@,SharpDX.Direct3D9.ConstantTable@)\">\n            <summary>\t\n            <p>Compiles a shader from an effect that contains one or more functions.</p>\t\n            </summary>\t\n            <param name=\"hFunction\"><dd>  <p>Unique identifier to the function to be compiled. This value must not be <strong><c>null</c></strong>. See Handles (Direct3D 9).</p> </dd></param>\t\n            <param name=\"targetRef\"><dd>  <p>Pointer to a shader profile which determines the shader instruction set. See <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.GetVertexShaderProfile(SharpDX.Direct3D9.Device)\"/></strong> or <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.GetPixelShaderProfile(SharpDX.Direct3D9.Device)\"/></strong> for a list of the profiles available.</p> </dd></param>\t\n            <param name=\"flags\"><dd>  <p>Compile options identified by various flags. The Direct3D 10 HLSL compiler is now the default. See <see cref=\"T:SharpDX.Direct3D9.ShaderFlags\"/> Flags for details.</p> </dd></param>\t\n            <param name=\"shaderOut\"><dd>  <p>Buffer containing the compiled shader. The compiler shader is an array of DWORDs. For more information about accessing the buffer, see <strong><see cref=\"T:SharpDX.Direct3D.Blob\"/></strong>.</p> </dd></param>\t\n            <param name=\"errorMsgsOut\"><dd>  <p>Buffer containing at least the first compile error message that occurred. This includes effect compiler errors and high-level language compile errors. For more information about accessing the buffer, see <strong><see cref=\"T:SharpDX.Direct3D.Blob\"/></strong>.</p> </dd></param>\t\n            <param name=\"constantTableOut\"><dd>  <p>Returns an <strong><see cref=\"T:SharpDX.Direct3D9.ConstantTable\"/></strong> interface, which can be used to access shader constants. This value can be <strong><c>null</c></strong>. If you compile your application as large address aware (that is, you use the /LARGEADDRESSAWARE linker option to handle addresses larger than 2 GB), you cannot use this parameter and must set it to <strong><c>null</c></strong>. Instead, you must use the <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.GetShaderConstantTableEx(System.IntPtr,System.Int32,SharpDX.Direct3D9.ConstantTable@)\"/></strong> function to retrieve the shader-constant table that is embedded inside the shader. In this <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.GetShaderConstantTableEx(System.IntPtr,System.Int32,SharpDX.Direct3D9.ConstantTable@)\"/></strong> call, you must pass the <strong>D3DXCONSTTABLE_LARGEADDRESSAWARE</strong> flag to the <em>Flags</em> parameter to specify to access up to 4 GB of virtual address space.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>.</p><p>If the arguments are invalid, the method will return <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p><p>If the method fails, the return value will be E_FAIL.</p></returns>\t\n            <remarks>\t\n            <p>Targets can be specified for vertex shaders, pixel shaders, and texture fill functions.</p><table> <tr><td>Vertex shader targets</td><td>vs_1_1, vs_2_0, vs_2_sw, vs_3_0</td></tr> <tr><td>Pixel shader targets</td><td>ps_1_1, ps_1_2, ps_1_3, ps_1_4, ps_2_0, ps_2_sw, ps_3_0</td></tr> <tr><td>Texture fill targets</td><td>tx_0, tx_1</td></tr> </table><p>?</p><p>This method compiles a shader from a function that is written in a C-like language. For more information, see HLSL.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXEffectCompiler::CompileShader']/*\"/>\t\n            <msdn-id>bb205791</msdn-id>\t\n            <unmanaged>HRESULT ID3DXEffectCompiler::CompileShader([In] D3DXHANDLE hFunction,[In] const char* pTarget,[In] unsigned int Flags,[In] ID3DXBuffer** ppShader,[In] ID3DXBuffer** ppErrorMsgs,[In] ID3DXConstantTable** ppConstantTable)</unmanaged>\t\n            <unmanaged-short>ID3DXEffectCompiler::CompileShader</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.EffectDefault\">\n            <summary>\t\n            <p>Effect default parameters.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXEFFECTDEFAULT']/*\"/>\t\n            <msdn-id>bb172821</msdn-id>\t\n            <unmanaged>D3DXEFFECTDEFAULT</unmanaged>\t\n            <unmanaged-short>D3DXEFFECTDEFAULT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.EffectDefault.ParameterName\">\n            <summary>\t\n            <dd> <p>Parameter name.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXEFFECTDEFAULT::pParamName']/*\"/>\t\n            <msdn-id>bb172821</msdn-id>\t\n            <unmanaged>char* pParamName</unmanaged>\t\n            <unmanaged-short>char pParamName</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.EffectDefault.Type\">\n            <summary>\t\n            <dd> <p>Data type in pValue. For more information, see <strong><see cref=\"T:SharpDX.Direct3D9.EffectDefaultType\"/></strong> </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXEFFECTDEFAULT::Type']/*\"/>\t\n            <msdn-id>bb172821</msdn-id>\t\n            <unmanaged>D3DXEFFECTDEFAULTTYPE Type</unmanaged>\t\n            <unmanaged-short>D3DXEFFECTDEFAULTTYPE Type</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.EffectDefault.BufferSize\">\n            <summary>\t\n            <dd> <p>Size, in bytes, of the data pointed to by pValue.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXEFFECTDEFAULT::NumBytes']/*\"/>\t\n            <msdn-id>bb172821</msdn-id>\t\n            <unmanaged>unsigned int NumBytes</unmanaged>\t\n            <unmanaged-short>unsigned int NumBytes</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.EffectDefault.BufferPointer\">\n            <summary>\t\n            <dd> <p>Pointer to the memory location that contains the data.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXEFFECTDEFAULT::pValue']/*\"/>\t\n            <msdn-id>bb172821</msdn-id>\t\n            <unmanaged>void* pValue</unmanaged>\t\n            <unmanaged-short>void pValue</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.EffectDefault.Value\">\n            <summary>\n            Gets the value.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.EffectInstance\">\n            <summary>\t\n            <p>Data type for managing a set of default effect parameters.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXEFFECTINSTANCE']/*\"/>\t\n            <msdn-id>bb172823</msdn-id>\t\n            <unmanaged>D3DXEFFECTINSTANCE</unmanaged>\t\n            <unmanaged-short>D3DXEFFECTINSTANCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.EffectInstance.EffectFilename\">\n            <summary>\t\n            <dd> <p>Name of the effect file.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXEFFECTINSTANCE::pEffectFilename']/*\"/>\t\n            <msdn-id>bb172823</msdn-id>\t\n            <unmanaged>char* pEffectFilename</unmanaged>\t\n            <unmanaged-short>char pEffectFilename</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.EffectInstance.DefaultCount\">\n            <summary>\t\n            <dd> <p>Number of default parameters.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXEFFECTINSTANCE::NumDefaults']/*\"/>\t\n            <msdn-id>bb172823</msdn-id>\t\n            <unmanaged>unsigned int NumDefaults</unmanaged>\t\n            <unmanaged-short>unsigned int NumDefaults</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.EffectInstance.DefaultPointer\">\n            <summary>\t\n            <dd> <p>Pointer to an array of <strong><see cref=\"T:SharpDX.Direct3D9.EffectDefault\"/></strong> elements, each of which contains an  effect parameter.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXEFFECTINSTANCE::pDefaults']/*\"/>\t\n            <msdn-id>bb172823</msdn-id>\t\n            <unmanaged>D3DXEFFECTDEFAULT* pDefaults</unmanaged>\t\n            <unmanaged-short>D3DXEFFECTDEFAULT pDefaults</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.EffectPool\">\n            <summary>\t\n            <p>Applications use the <strong><see cref=\"T:SharpDX.Direct3D9.EffectPool\"/></strong> interface to identify parameters that are going to be shared across effects. See parameter sharing in Cloning and Sharing (Direct3D 9). This interface has no methods.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The <see cref=\"T:SharpDX.Direct3D9.EffectPool\"/> interface is obtained by calling <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateEffectPool(SharpDX.Direct3D9.EffectPool)\"/></strong>.</p><p>The LPD3DXEFFECTPOOL type is defined as a reference to this interface. </p><pre><code> typedef interface <see cref=\"T:SharpDX.Direct3D9.EffectPool\"/> <see cref=\"T:SharpDX.Direct3D9.EffectPool\"/>;\t\n            typedef interface <see cref=\"T:SharpDX.Direct3D9.EffectPool\"/> *LPD3DXEFFECTPOOL;\t\n            </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXEffectPool']/*\"/>\t\n            <msdn-id>bb205794</msdn-id>\t\n            <unmanaged>ID3DXEffectPool</unmanaged>\t\n            <unmanaged-short>ID3DXEffectPool</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.EffectPool.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D9.EffectPool\"/> class.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.EffectPool.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D9.EffectPool\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.EffectPool.op_Explicit(System.IntPtr)~SharpDX.Direct3D9.EffectPool\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D9.EffectPool\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.Fill2DCallback\">\n            <summary>\n            A callback function used to fill 2D texture.\n            </summary>\n            <param name=\"coordinate\">Texture coordinate being sampled.</param>\n            <param name=\"texelSize\">Dimensions of the texel.</param>\n            <returns>The desired color of the specified texel.</returns>\n            <unmanaged>typedef VOID (WINAPI *LPD3DXFILL2D)(D3DXVECTOR4 *pOut, CONST D3DXVECTOR2 *pTexCoord, CONST D3DXVECTOR2 *pTexelSize, LPVOID pData);</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.Fill3DCallback\">\n            <summary>\n            A callback function used to fill 3D texture.\n            </summary>\n            <param name=\"coordinate\">Texture coordinate being sampled.</param>\n            <param name=\"texelSize\">Dimensions of the texel.</param>\n            <returns>The desired color of the specified texel.</returns>\n            <unmanaged>typedef VOID (WINAPI *LPD3DXFILL2D)(D3DXVECTOR4 *pOut, CONST D3DXVECTOR2 *pTexCoord, CONST D3DXVECTOR2 *pTexelSize, LPVOID pData);</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.FillCallbackHelper\">\n            <summary>\n            Fill callback helper class.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FillCallbackHelper.Native2DCallbackPtr\">\n            <summary>\n            Pointer to the native callback for 2D function\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FillCallbackHelper.Native3DCallbackPtr\">\n            <summary>\n            Pointer to the native callback for 3D function\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.EffectHandle\">\n            <summary>\n            EffectHandle used to identify a shader parameter.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.EffectHandle.UseCacheStrings\">\n            <summary>\n            Defines the behaviour for caching strings. True by default.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.EffectHandle.AllocatedStrings\">\n            <summary>\n            Cache of allocated strings.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.EffectHandle.pointer\">\n            <summary>\n            Pointer to the handle or the allocated string.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.EffectHandle.isStringToRelease\">\n            <summary>\n            If the <see cref=\"F:SharpDX.Direct3D9.EffectHandle.pointer\"/> is a custom string not cached that needs to be released by this instance.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.EffectHandle.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D9.EffectHandle\"/> class.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.EffectHandle.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D9.EffectHandle\"/> class.\n            </summary>\n            <param name=\"pointer\">\n            The pointer.\n            </param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.EffectHandle.#ctor(System.Void*)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D9.EffectHandle\"/> class.\n            </summary>\n            <param name=\"pointer\">\n            The pointer.\n            </param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.EffectHandle.#ctor(System.String)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D9.EffectHandle\"/> class.\n            </summary>\n            <param name=\"name\">\n            The name.\n            </param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.EffectHandle.ClearCache\">\n            <summary>\n            Clears the cache.\n            </summary>\n            <remarks>\n            By default, this class is caching all strings that are implicitly used as an effect handle.\n            Use this method in order to deallocate all strings that were previously cached.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.EffectHandle.__MarshalFree(SharpDX.Direct3D9.EffectHandle@,SharpDX.Direct3D9.EffectHandle.__Native@)\">\n            <summary>\n            marshal free.\n            </summary>\n            <param name=\"__from\">The __from.</param>\n            <param name=\"ref\">The @ref.</param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.EffectHandle.__MarshalFrom(SharpDX.Direct3D9.EffectHandle@,SharpDX.Direct3D9.EffectHandle.__Native@)\">\n            <summary>\n            Method to marshal from native to managed struct\n            </summary>\n            <param name=\"__from\">The __from.</param>\n            <param name=\"ref\">The @ref.</param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.EffectHandle.__MarshalTo(SharpDX.Direct3D9.EffectHandle@,SharpDX.Direct3D9.EffectHandle.__Native@)\">\n            <summary>\n            Method to marshal from managed struct tot native\n            </summary>\n            <param name=\"__from\">The __from.</param>\n            <param name=\"ref\">The @ref.</param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.EffectHandle.Dispose(System.Boolean)\">\n            <inheritdoc/>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.EffectHandle.AllocateString(System.String)\">\n            <summary>\n            Allocates a string.\n            </summary>\n            <param name=\"name\">\n            The name.\n            </param>\n            <returns>\n            Pointer to the allocated string\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.EffectHandle.op_Implicit(SharpDX.Direct3D9.EffectHandle)~System.IntPtr\">\n            <summary>\n            Performs an implicit conversion from <see cref=\"T:SharpDX.Direct3D9.EffectHandle\"/> to <see cref=\"T:System.IntPtr\"/>.\n            </summary>\n            <param name=\"value\">The value.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.EffectHandle.op_Implicit(System.IntPtr)~SharpDX.Direct3D9.EffectHandle\">\n            <summary>\n            Performs an implicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D9.EffectHandle\"/>.\n            </summary>\n            <param name=\"value\">The value.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.EffectHandle.op_Implicit(SharpDX.Direct3D9.EffectHandle)~System.Void*\">\n            <summary>\n            Performs an implicit conversion from <see cref=\"T:SharpDX.Direct3D9.EffectHandle\"/> to <see cref=\"!:System.Void*\"/>.\n            </summary>\n            <param name=\"value\">The value.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.EffectHandle.op_Implicit(System.Void*)~SharpDX.Direct3D9.EffectHandle\">\n            <summary>\n            Performs an implicit conversion from <see cref=\"!:System.Void*\"/> to <see cref=\"T:SharpDX.Direct3D9.EffectHandle\"/>.\n            </summary>\n            <param name=\"value\">The value.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.EffectHandle.op_Implicit(System.String)~SharpDX.Direct3D9.EffectHandle\">\n            <summary>\n            Performs an implicit conversion from <see cref=\"T:System.String\"/> to <see cref=\"T:SharpDX.Direct3D9.EffectHandle\"/>.\n            </summary>\n            <param name=\"name\">The name.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.Font\">\n            <summary>\t\n            <p>The <see cref=\"T:SharpDX.Direct3D9.Font\"/> interface encapsulates the textures and resources needed to render a specific font on a specific device.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The <strong><see cref=\"T:SharpDX.Direct3D9.Font\"/></strong> interface is obtained by calling <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateFont(SharpDX.Direct3D9.Device,System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Bool,System.Int32,System.Int32,System.Int32,System.Int32,System.String,SharpDX.Direct3D9.Font)\"/></strong> or <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateFontIndirect(SharpDX.Direct3D9.Device,SharpDX.Direct3D9.FontDescription@,SharpDX.Direct3D9.Font)\"/></strong>.</p><p>The LPD3DXFONT type is defined as a reference to the <strong><see cref=\"T:SharpDX.Direct3D9.Font\"/></strong> interface.</p><pre><code> typedef interface <see cref=\"T:SharpDX.Direct3D9.Font\"/> <see cref=\"T:SharpDX.Direct3D9.Font\"/>;\t\n            typedef interface <see cref=\"T:SharpDX.Direct3D9.Font\"/> *LPD3DXFONT;\t\n            </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXFont']/*\"/>\t\n            <msdn-id>bb173961</msdn-id>\t\n            <unmanaged>ID3DXFont</unmanaged>\t\n            <unmanaged-short>ID3DXFont</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Font.#ctor(SharpDX.Direct3D9.Device,SharpDX.Direct3D9.FontDescription)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D9.Font\"/> class.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"fontDescription\">The font description.</param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Font.#ctor(SharpDX.Direct3D9.Device,System.Drawing.Font)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D9.Font\"/> class from a <see cref=\"T:System.Drawing.Font\"/>\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"font\">The font.</param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Font.#ctor(SharpDX.Direct3D9.Device,System.Int32,System.Int32,SharpDX.Direct3D9.FontWeight,System.Int32,System.Boolean,SharpDX.Direct3D9.FontCharacterSet,SharpDX.Direct3D9.FontPrecision,SharpDX.Direct3D9.FontQuality,SharpDX.Direct3D9.FontPitchAndFamily,System.String)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D9.Font\"/> class.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"height\">The height.</param>\n            <param name=\"width\">The width.</param>\n            <param name=\"weight\">The weight.</param>\n            <param name=\"mipLevels\">The mip levels.</param>\n            <param name=\"isItalic\">if set to <c>true</c> [is italic].</param>\n            <param name=\"characterSet\">The character set.</param>\n            <param name=\"precision\">The precision.</param>\n            <param name=\"quality\">The quality.</param>\n            <param name=\"pitchAndFamily\">The pitch and family.</param>\n            <param name=\"faceName\">Name of the face.</param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Font.PreloadText(System.String)\">\n            <summary>\t\n            Load formatted text into video memory to improve the efficiency of rendering to the device. This method supports ANSI and Unicode strings.\t\n            </summary>\t\n            <remarks>\t\n            The compiler setting also determines the function version. If Unicode is defined, the function call resolves to PreloadTextW. Otherwise, the function call resolves to PreloadTextA because ANSI strings are being used. This method generates textures that contain glyphs that represent the input text. The glyphs are drawn as a series of triangles. Text will not be rendered to the device; ID3DX10Font::DrawText must still be called to render the text. However, by preloading text into video memory, ID3DX10Font::DrawText will use substantially fewer CPU resources. This method internally converts characters to glyphs using the GDI function {{GetCharacterPlacement}}. \t\n            </remarks>\t\n            <param name=\"stringRef\">Pointer to a string of characters to be loaded into video memory. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR; otherwise, the data type resolves to LPCSTR. See Remarks. </param>\n            <returns>If the method succeeds, the return value is S_OK. If the method fails, the return value can be one of the following: D3DERR_INVALIDCALL, D3DXERR_INVALIDDATA. </returns>\n            <unmanaged>HRESULT ID3DX10Font::PreloadTextW([None] const wchar_t* pString,[None] int Count)</unmanaged>\n        </member>\n        <!-- Badly formed XML comment ignored for member \"M:SharpDX.Direct3D9.Font.DrawText(SharpDX.Direct3D9.Sprite,System.String,SharpDX.Rectangle,SharpDX.Direct3D9.FontDrawFlags,SharpDX.ColorBGRA)\" -->\n        <member name=\"M:SharpDX.Direct3D9.Font.DrawText(SharpDX.Direct3D9.Sprite,System.String,System.Int32,System.Int32,SharpDX.ColorBGRA)\">\n            <summary>\n            Draws formatted text.\n            </summary>\n            <param name=\"sprite\">Pointer to an <see cref=\"T:SharpDX.Direct3D9.Sprite\"/> object that contains the string. Can be <c>null</c>, in which case Direct3D will render the string with its own sprite object. To improve efficiency, a sprite object should be specified if DrawText is to be called more than once in a row.</param>\n            <param name=\"text\">Pointer to a string to draw. If the Count parameter is -1, the string must be null-terminated.</param>\n            <param name=\"x\">The x position to draw the text.</param>\n            <param name=\"y\">The y position to draw the text.</param>\n            <param name=\"color\">Color of the text. For more information, see <see cref=\"T:SharpDX.Color4\"/>.</param>\n            <returns>\n            If the function succeeds, the return value is the height of the text in logical units. If DT_VCENTER or DT_BOTTOM is specified, the return value is the offset from pRect (top to the bottom) of the drawn text. If the function fails, the return value is zero.\n            </returns>\n            <unmanaged>int ID3DXFont::DrawTextW([In] ID3DXSprite* pSprite,[In] const wchar_t* pString,[In] int Count,[In] void* pRect,[In] unsigned int Format,[In] D3DCOLOR Color)</unmanaged>\n            <remarks>\n            The parameters of this method are very similar to those of the GDI DrawText function.This method supports both ANSI and Unicode strings.This method must be called inside a  BeginScene ... EndScene block. The only exception is when an application calls DrawText with DT_CALCRECT to calculate the size of a given block of text.Unless the DT_NOCLIP format is used, this method clips the text so that it does not appear outside the specified rectangle. All formatting is assumed to have multiple lines unless the DT_SINGLELINE format is specified.If the selected font is too large for the rectangle, this method does not attempt to substitute a smaller font.This method supports only fonts whose escapement and orientation are both zero.\n            </remarks>\n        </member>\n        <!-- Badly formed XML comment ignored for member \"M:SharpDX.Direct3D9.Font.MeasureText(SharpDX.Direct3D9.Sprite,System.String,SharpDX.Direct3D9.FontDrawFlags)\" -->\n        <!-- Badly formed XML comment ignored for member \"M:SharpDX.Direct3D9.Font.MeasureText(SharpDX.Direct3D9.Sprite,System.String,SharpDX.Rectangle,SharpDX.Direct3D9.FontDrawFlags)\" -->\n        <!-- Badly formed XML comment ignored for member \"M:SharpDX.Direct3D9.Font.MeasureText(SharpDX.Direct3D9.Sprite,System.String,SharpDX.Rectangle,SharpDX.Direct3D9.FontDrawFlags,System.Int32@)\" -->\n        <member name=\"M:SharpDX.Direct3D9.Font.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D9.Font\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Font.op_Explicit(System.IntPtr)~SharpDX.Direct3D9.Font\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D9.Font\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Font.GetDevice(SharpDX.Direct3D9.Device@)\">\n            <summary>\t\n            <p>Retrieves the Direct3D device associated with the font object.</p>\t\n            </summary>\t\n            <param name=\"deviceOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface, representing the Direct3D device object associated with the font object.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??Calling this method will increase the internal reference count on the <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface. Be sure to call <strong><see cref=\"T:SharpDX.ComObject\"/></strong> when you are done using this <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface or you will have a memory leak.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXFont::GetDevice']/*\"/>\t\n            <msdn-id>bb173965</msdn-id>\t\n            <unmanaged>HRESULT ID3DXFont::GetDevice([Out] IDirect3DDevice9** ppDevice)</unmanaged>\t\n            <unmanaged-short>ID3DXFont::GetDevice</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Font.GetDescription(SharpDX.Direct3D9.FontDescription@)\">\n            <summary>\t\n            <p>Gets a description of the current font object. GetDescW and GetDescA are identical to this method, except that a reference is returned to a <strong><see cref=\"T:SharpDX.Direct3D9.FontDescription\"/></strong> or <strong>D3DXFONT_DESCA</strong> structure, respectively.</p>\t\n            </summary>\t\n            <param name=\"descRef\">No documentation.</param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the following value will be returned: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>This method describes Unicode font objects if UNICODE is defined. Otherwise GetDescA is called, which returns a reference to the <strong>D3DXFONT_DESCA</strong> structure.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXFont::GetDescW']/*\"/>\t\n            <msdn-id>bb173964</msdn-id>\t\n            <unmanaged>HRESULT ID3DXFont::GetDescW([Out] D3DXFONT_DESCW* pDesc)</unmanaged>\t\n            <unmanaged-short>ID3DXFont::GetDescW</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Font.GetTextMetrics(SharpDX.Win32Native.TextMetric@)\">\n            <summary>\t\n            <p>Retrieves font characteristics that are identified in a <strong><see cref=\"T:SharpDX.Win32Native.TextMetric\"/></strong> structure. This method supports ANSI and Unicode compiler settings.</p>\t\n            </summary>\t\n            <param name=\"textMetricsRef\">No documentation.</param>\t\n            <returns><p>Nonzero if the function is successful; otherwise 0.</p></returns>\t\n            <remarks>\t\n            <p>The compiler setting also determines the structure type. If Unicode is defined, the function returns a <see cref=\"T:SharpDX.Win32Native.TextMetric\"/> structure. Otherwise, the function call returns a <see cref=\"T:SharpDX.Win32Native.TextMetricA\"/> structure.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXFont::GetTextMetricsW']/*\"/>\t\n            <msdn-id>bb173967</msdn-id>\t\n            <unmanaged>BOOL ID3DXFont::GetTextMetricsW([Out] TEXTMETRICW* pTextMetrics)</unmanaged>\t\n            <unmanaged-short>ID3DXFont::GetTextMetricsW</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Font.GetDeviceContext\">\n            <summary>\t\n            <p>Returns a handle to a display device context (DC) that has the font set.</p>\t\n            </summary>\t\n            <returns><p>Handle to a display DC.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXFont::GetDC']/*\"/>\t\n            <msdn-id>bb173963</msdn-id>\t\n            <unmanaged>HDC ID3DXFont::GetDC()</unmanaged>\t\n            <unmanaged-short>ID3DXFont::GetDC</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Font.GetGlyphData(System.Int32,SharpDX.Direct3D9.Texture@,SharpDX.Rectangle@,SharpDX.DrawingPoint@)\">\n            <summary>\t\n            <p>Returns information about the placement and orientation of a glyph in a character cell.</p>\t\n            </summary>\t\n            <param name=\"glyph\"><dd>  <p>Glyph identifier.</p> </dd></param>\t\n            <param name=\"textureOut\"><dd>  <p>Address of a reference to a <strong><see cref=\"T:SharpDX.Direct3D9.Texture\"/></strong> object that contains the glyph.</p> </dd></param>\t\n            <param name=\"blackBoxRef\"><dd>  <p>Pointer to the smallest rectangle object that completely encloses the glyph.</p> </dd></param>\t\n            <param name=\"cellIncRef\"><dd>  <p>Pointer to the two-dimensional vector that connects the origin of the current character cell to the origin of the next character cell. See <strong><see cref=\"T:SharpDX.DrawingPoint\"/></strong>.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXFont::GetGlyphData']/*\"/>\t\n            <msdn-id>bb173966</msdn-id>\t\n            <unmanaged>HRESULT ID3DXFont::GetGlyphData([In] unsigned int Glyph,[Out] IDirect3DTexture9** ppTexture,[Out] RECT* pBlackBox,[Out] POINT* pCellInc)</unmanaged>\t\n            <unmanaged-short>ID3DXFont::GetGlyphData</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Font.PreloadCharacters(System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Loads a series of characters into video memory to improve the efficiency of rendering to the device.</p>\t\n            </summary>\t\n            <param name=\"first\"><dd>  <p>ID of the first character to be loaded into video memory.</p> </dd></param>\t\n            <param name=\"last\"><dd>  <p>ID of the last character to be loaded into video memory.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA.</p></returns>\t\n            <remarks>\t\n            <p>This method generates textures containing glyphs that represent the input characters. The glyphs are drawn as a series of triangles.</p><p>Characters will not be rendered to the device; <strong>DrawText</strong> must still be called to render the characters. However, by pre-loading characters into video memory, <strong>DrawText</strong> will use substantially fewer CPU resources.</p><p>This method internally converts characters to glyphs using the GDI function <strong>GetCharacterPlacement</strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXFont::PreloadCharacters']/*\"/>\t\n            <msdn-id>bb173970</msdn-id>\t\n            <unmanaged>HRESULT ID3DXFont::PreloadCharacters([In] unsigned int First,[In] unsigned int Last)</unmanaged>\t\n            <unmanaged-short>ID3DXFont::PreloadCharacters</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Font.PreloadGlyphs(System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Loads a series of glyphs into video memory to improve the efficiency of rendering to the device.</p>\t\n            </summary>\t\n            <param name=\"first\"><dd>  <p>ID of the first glyph to be loaded into video memory.</p> </dd></param>\t\n            <param name=\"last\"><dd>  <p>ID of the last glyph to be loaded into video memory.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA.</p></returns>\t\n            <remarks>\t\n            <p>This method generates textures that contain the input glyphs. The glyphs are drawn as a series of triangles.</p><p>Glyphs will not be rendered to the device; <strong>DrawText</strong> must still be called to render the glyphs. However, by pre-loading glyphs into video memory, <strong>DrawText</strong> will use substantially fewer CPU resources.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXFont::PreloadGlyphs']/*\"/>\t\n            <msdn-id>bb173971</msdn-id>\t\n            <unmanaged>HRESULT ID3DXFont::PreloadGlyphs([In] unsigned int First,[In] unsigned int Last)</unmanaged>\t\n            <unmanaged-short>ID3DXFont::PreloadGlyphs</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Font.PreloadText(System.String,System.Int32)\">\n            <summary>\t\n            <p>Loads formatted text into video memory to improve the efficiency of rendering to the device. This method supports ANSI and Unicode strings.</p>\t\n            </summary>\t\n            <param name=\"stringRef\"><dd>  <p>Pointer to a string of characters to be loaded into video memory. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR; otherwise, the data type resolves to LPCSTR. See Remarks.</p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>Number of characters in the text string.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA.</p></returns>\t\n            <remarks>\t\n            <p>The compiler setting also determines the function version. If Unicode is defined, the function call resolves to PreloadTextW. Otherwise, the function call resolves to PreloadTextA because ANSI strings are being used.</p><p>This method generates textures that contain glyphs that represent the input text. The glyphs are drawn as a series of triangles.</p><p>Text will not be rendered to the device; <strong>DrawText</strong> must still be called to render the text. However, by preloading text into video memory, <strong>DrawText</strong> will use substantially fewer CPU resources.</p><p>This method internally converts characters to glyphs using the GDI function <strong>GetCharacterPlacement</strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXFont::PreloadTextW']/*\"/>\t\n            <msdn-id>bb173972</msdn-id>\t\n            <unmanaged>HRESULT ID3DXFont::PreloadTextW([In] const wchar_t* pString,[In] int Count)</unmanaged>\t\n            <unmanaged-short>ID3DXFont::PreloadTextW</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Font.DrawText(SharpDX.Direct3D9.Sprite,System.String,System.Int32,System.IntPtr,System.Int32,SharpDX.ColorBGRA)\">\n            <summary>\t\n            <p>Draws formatted text. This method supports ANSI and Unicode strings.</p>\t\n            </summary>\t\n            <param name=\"spriteRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Sprite\"/></strong> object that contains the string. Can be <strong><c>null</c></strong>, in which case Direct3D will render the string with its own sprite object. To improve efficiency, a sprite object should be specified if <strong>DrawText</strong> is to be called more than once in a row.</p> </dd></param>\t\n            <param name=\"stringRef\"><dd>  <p>Pointer to a string to draw. If the Count parameter is -1, the string must be null-terminated.</p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>Specifies the number of characters in the string. If Count is -1, then the pString parameter is assumed to be a reference to a null-terminated string and <strong>DrawText</strong> computes the character count automatically.</p> </dd></param>\t\n            <param name=\"rectRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Rectangle\"/></strong> structure that contains the rectangle, in logical coordinates, in which the text is to be formatted. The coordinate value of the rectangle's right side must be greater than that of its left side. Likewise, the coordinate value of the bottom must be greater than that of the top.</p> </dd></param>\t\n            <param name=\"format\"><dd>  <p> </p><p>Specifies the method of formatting the text. It can be any combination of the following values:</p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td><dl> <dt><strong>DT_BOTTOM</strong></dt> </dl> </td><td> <p>Justifies the text to the bottom of the rectangle. This value must be combined with DT_SINGLELINE.</p> </td></tr> <tr><td><dl> <dt><strong>DT_CALCRECT</strong></dt> </dl> </td><td> <p>Determines the width and height of the rectangle. If there are multiple lines of text, <strong>DrawText</strong> uses the width of the rectangle pointed to by the pRect parameter and extends the base of the rectangle to bound the last line of text. If there is only one line of text, <strong>DrawText</strong> modifies the right side of the rectangle so that it bounds the last character in the line. In either case, <strong>DrawText</strong> returns the height of the formatted text but does not draw the text.</p> </td></tr> <tr><td><dl> <dt><strong>DT_CENTER</strong></dt> </dl> </td><td> <p>Centers text horizontally in the rectangle.</p> </td></tr> <tr><td><dl> <dt><strong>DT_EXPANDTABS</strong></dt> </dl> </td><td> <p>Expands tab characters. The default number of characters per tab is eight.</p> </td></tr> <tr><td><dl> <dt><strong>DT_LEFT</strong></dt> </dl> </td><td> <p>Aligns text to the left.</p> </td></tr> <tr><td><dl> <dt><strong>DT_NOCLIP</strong></dt> </dl> </td><td> <p>Draws without clipping. <strong>DrawText</strong> is somewhat faster when DT_NOCLIP is used.</p> </td></tr> <tr><td><dl> <dt><strong>DT_RIGHT</strong></dt> </dl> </td><td> <p>Aligns text to the right.</p> </td></tr> <tr><td><dl> <dt><strong>DT_RTLREADING</strong></dt> </dl> </td><td> <p>Displays text in right-to-left reading order for bidirectional text when a Hebrew or Arabic font is selected. The default reading order for all text is left-to-right.</p> </td></tr> <tr><td><dl> <dt><strong>DT_SINGLELINE</strong></dt> </dl> </td><td> <p>Displays text on a single line only. Carriage returns and line feeds do not break the line.</p> </td></tr> <tr><td><dl> <dt><strong>DT_TOP</strong></dt> </dl> </td><td> <p>Top-justifies text.</p> </td></tr> <tr><td><dl> <dt><strong>DT_VCENTER</strong></dt> </dl> </td><td> <p>Centers text vertically (single line only).</p> </td></tr> <tr><td><dl> <dt><strong>DT_WORDBREAK</strong></dt> </dl> </td><td> <p>Breaks words. Lines are automatically broken between words if a word would extend past the edge of the rectangle specified by the pRect parameter. A carriage return/line feed sequence also breaks the line.</p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <param name=\"color\"><dd>  <p>Color of the text. For more information, see <strong><see cref=\"T:SharpDX.ColorBGRA\"/></strong>.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is the height of the text in logical units. If DT_VCENTER or DT_BOTTOM is specified, the return value is the offset from pRect (top to the bottom) of the drawn text. If the function fails, the return value is zero.</p></returns>\t\n            <remarks>\t\n            <p>The parameters of this method are very similar to those of the GDI <strong>DrawText</strong> function.</p><p>This method supports both ANSI and Unicode strings.</p><p>This method must be called inside a  <strong>BeginScene</strong> ... <strong>EndScene</strong> block. The only exception is when an application calls <strong>DrawText</strong> with DT_CALCRECT to calculate the size of a given block of text.</p><p>Unless the DT_NOCLIP format is used, this method clips the text so that it does not appear outside the specified rectangle. All formatting is assumed to have multiple lines unless the DT_SINGLELINE format is specified.</p><p>If the selected font is too large for the rectangle, this method does not attempt to substitute a smaller font.</p><p>This method supports only fonts whose escapement and orientation are both zero.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXFont::DrawTextW']/*\"/>\t\n            <msdn-id>bb173962</msdn-id>\t\n            <unmanaged>int ID3DXFont::DrawTextW([In] ID3DXSprite* pSprite,[In] const wchar_t* pString,[In] int Count,[In] void* pRect,[In] unsigned int Format,[In] D3DCOLOR Color)</unmanaged>\t\n            <unmanaged-short>ID3DXFont::DrawTextW</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Font.OnLostDevice\">\n            <summary>\t\n            <p>Use this method to release all references to video memory resources and delete all stateblocks. This method should be called whenever a device is lost, or before resetting a device.</p>\t\n            </summary>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>This method should be called whenever the device is lost or before the user calls <strong>Reset</strong>. Even if the device was not actually lost, <strong>OnLostDevice</strong> is responsible for freeing stateblocks and other resources that may need to be released before resetting the device. As a result, the font object cannot be used again before calling <strong>Reset</strong> and then <strong>OnResetDevice</strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXFont::OnLostDevice']/*\"/>\t\n            <msdn-id>bb173968</msdn-id>\t\n            <unmanaged>HRESULT ID3DXFont::OnLostDevice()</unmanaged>\t\n            <unmanaged-short>ID3DXFont::OnLostDevice</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Font.OnResetDevice\">\n            <summary>\t\n            <p>Use this method to re-acquire resources and save initial state.</p>\t\n            </summary>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p><strong>OnResetDevice</strong> should be called each time the device is reset (using <strong>Reset</strong>), before any other methods are called. This is a good place to re-acquire video-memory resources and capture state blocks.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXFont::OnResetDevice']/*\"/>\t\n            <msdn-id>bb173969</msdn-id>\t\n            <unmanaged>HRESULT ID3DXFont::OnResetDevice()</unmanaged>\t\n            <unmanaged-short>ID3DXFont::OnResetDevice</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.Font.Device\">\n            <summary>\t\n            <p>Retrieves the Direct3D device associated with the font object.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p><strong>Note</strong>??Calling this method will increase the internal reference count on the <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface. Be sure to call <strong><see cref=\"T:SharpDX.ComObject\"/></strong> when you are done using this <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface or you will have a memory leak.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXFont::GetDevice']/*\"/>\t\n            <msdn-id>bb173965</msdn-id>\t\n            <unmanaged>GetDevice</unmanaged>\t\n            <unmanaged-short>GetDevice</unmanaged-short>\t\n            <unmanaged>HRESULT ID3DXFont::GetDevice([Out] IDirect3DDevice9** ppDevice)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.Font.Description\">\n            <summary>\t\n            <p>Gets a description of the current font object. GetDescW and GetDescA are identical to this method, except that a reference is returned to a <strong><see cref=\"T:SharpDX.Direct3D9.FontDescription\"/></strong> or <strong>D3DXFONT_DESCA</strong> structure, respectively.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This method describes Unicode font objects if UNICODE is defined. Otherwise GetDescA is called, which returns a reference to the <strong>D3DXFONT_DESCA</strong> structure.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXFont::GetDescW']/*\"/>\t\n            <msdn-id>bb173964</msdn-id>\t\n            <unmanaged>GetDescW</unmanaged>\t\n            <unmanaged-short>GetDescW</unmanaged-short>\t\n            <unmanaged>HRESULT ID3DXFont::GetDescW([Out] D3DXFONT_DESCW* pDesc)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.Font.DeviceContext\">\n            <summary>\t\n            <p>Returns a handle to a display device context (DC) that has the font set.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXFont::GetDC']/*\"/>\t\n            <msdn-id>bb173963</msdn-id>\t\n            <unmanaged>GetDC</unmanaged>\t\n            <unmanaged-short>GetDC</unmanaged-short>\t\n            <unmanaged>HDC ID3DXFont::GetDC()</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.FontCharacterSet\">\n            <summary>\n            Defines possible character sets for fonts.\n            </summary>\n            <unmanaged>CHARSET</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FontCharacterSet.Ansi\">\n            <summary>\n            The ANSI character set.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FontCharacterSet.Arabic\">\n            <summary>\n            The Arabic character set.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FontCharacterSet.Baltic\">\n            <summary>\n            The Baltic character set.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FontCharacterSet.ChineseBig5\">\n            <summary>\n            The Chinese character set.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FontCharacterSet.Default\">\n            <summary>\n            The default system character set.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FontCharacterSet.EastEurope\">\n            <summary>\n            The East Europe character set.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FontCharacterSet.GB2312\">\n            <summary>\n            The GB2312 character set.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FontCharacterSet.Greek\">\n            <summary>\n            The Greek character set.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FontCharacterSet.Hangul\">\n            <summary>\n            The Hangul character set.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FontCharacterSet.Hebrew\">\n            <summary>\n            The Hebrew character set.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FontCharacterSet.Johab\">\n            <summary>\n            The Johab character set.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FontCharacterSet.Mac\">\n            <summary>\n            The Mac character set.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FontCharacterSet.Oem\">\n            <summary>\n            The OEM character set.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FontCharacterSet.Russian\">\n            <summary>\n            The Russian character set.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FontCharacterSet.ShiftJIS\">\n            <summary>\n            The ShiftJIS character set.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FontCharacterSet.Symbol\">\n            <summary>\n            The symbol character set.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FontCharacterSet.Thai\">\n            <summary>\n            The Thai character set.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FontCharacterSet.Turkish\">\n            <summary>\n            The Turkish character set.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FontCharacterSet.Vietnamese\">\n            <summary>\n            The Vietnamese character set.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.FontDrawFlags\">\n            <summary>\n            Specifies formatting options for text rendering.\n            </summary>\n            <unmanaged>DT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FontDrawFlags.Bottom\">\n            <summary>\n            Align the text to the bottom.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FontDrawFlags.Center\">\n            <summary>\n            Align the text to the center.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FontDrawFlags.ExpandTabs\">\n            <summary>\n            Expand tab characters.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FontDrawFlags.Left\">\n            <summary>\n            Align the text to the left.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FontDrawFlags.NoClip\">\n            <summary>\n            Don't clip the text.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FontDrawFlags.Right\">\n            <summary>\n            Align the text to the right.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FontDrawFlags.RtlReading\">\n            <summary>\n            Rendering the text in right-to-left reading order.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FontDrawFlags.SingleLine\">\n            <summary>\n            Force all text to a single line.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FontDrawFlags.Top\">\n            <summary>\n            Align the text to the top.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FontDrawFlags.VerticalCenter\">\n            <summary>\n            Vertically align the text to the center.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FontDrawFlags.WordBreak\">\n            <summary>\n            Allow word breaks.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.FontPitchAndFamily\">\n            <summary>\n            Defines pitch and family settings for fonts.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FontPitchAndFamily.Decorative\">\n            <summary>\n            Use the Decorative family.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FontPitchAndFamily.Default\">\n            <summary>\n            Default pitch.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FontPitchAndFamily.DontCare\">\n            <summary>\n            The font family doesn't matter.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FontPitchAndFamily.Fixed\">\n            <summary>\n            Fixed pitch.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FontPitchAndFamily.Modern\">\n            <summary>\n            Use the Modern family.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FontPitchAndFamily.Mono\">\n            <summary>\n            Mono pitch.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FontPitchAndFamily.Roman\">\n            <summary>\n            Use the Roman family.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FontPitchAndFamily.Script\">\n            <summary>\n            Use the Script family.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FontPitchAndFamily.Swiss\">\n            <summary>\n            Use the Swiss family.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FontPitchAndFamily.Variable\">\n            <summary>\n            Variable pitch.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.FontPrecision\">\n            <summary>\n            Defines precision levels for font rendering.\n            </summary>\n            <unmanaged>OutPrecision</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FontPrecision.Default\">\n            <summary>\n            Default\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FontPrecision.String\">\n            <summary>\n            String\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FontPrecision.Character\">\n            <summary>\n            Character\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FontPrecision.Stroke\">\n            <summary>\n            Stroke\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FontPrecision.TrueType\">\n            <summary>\n            TrueType\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FontPrecision.Device\">\n            <summary>\n            Device\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FontPrecision.Raster\">\n            <summary>\n            Raster\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FontPrecision.TrueTypeOnly\">\n            <summary>\n            TrueTypeOnly\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FontPrecision.Outline\">\n            <summary>\n            Outline\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FontPrecision.ScreenOutline\">\n            <summary>\n            ScreenOutline\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FontPrecision.PostScriptOnly\">\n            <summary>\n            PostScriptOnly\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.FontQuality\">\n            <summary>\n            Specifies quality options for font rendering.\n            </summary>\n            <unmanaged>QUALITY</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FontQuality.Default\">\n            <summary>\n            Default\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FontQuality.Draft\">\n            <summary>\n            Draft\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FontQuality.Proof\">\n            <summary>\n            Proof\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FontQuality.NonAntialiased\">\n            <summary>\n            Non antialiased\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FontQuality.Antialiased\">\n            <summary>\n            Antialiased\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FontQuality.ClearType\">\n            <summary>\n            ClearType\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FontQuality.ClearTypeNatural\">\n            <summary>\n            ClearTypeNatural\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.FontWeight\">\n            <summary>\n            Specifies weights for font rendering.\n            </summary>\n            <unmanaged>FW</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FontWeight.Black\">\n            <summary>\n            Use a black weight.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FontWeight.Bold\">\n            <summary>\n            Use a bold weight.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FontWeight.DemiBold\">\n            <summary>\n            Use a demi-bold weight.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FontWeight.DoNotCare\">\n            <summary>\n            The font weight doesn't matter.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FontWeight.ExtraBold\">\n            <summary>\n            Use an extra bold weight.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FontWeight.ExtraLight\">\n            <summary>\n            Make the font extra light.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FontWeight.Heavy\">\n            <summary>\n            Use a heavy weight.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FontWeight.Light\">\n            <summary>\n            Make the font light.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FontWeight.Medium\">\n            <summary>\n            Use a medium weight.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FontWeight.Normal\">\n            <summary>\n            Use a normal weight.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FontWeight.Regular\">\n            <summary>\n            Use a regular weight.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FontWeight.SemiBold\">\n            <summary>\n            Use a semi-bold weight.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FontWeight.Thin\">\n            <summary>\n            Make the font thin.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FontWeight.UltraBold\">\n            <summary>\n            Use an ultra bold weight.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FontWeight.UltraLight\">\n            <summary>\n            Make the font ultra light.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.BackBufferType\">\n            <summary>\t\n            <p>Defines constants that describe the type of back buffer.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Direct3D 9 does not support stereo view, so Direct3D does not use the <see cref=\"F:SharpDX.Direct3D9.BackBufferType.Left\"/> and <see cref=\"F:SharpDX.Direct3D9.BackBufferType.Right\"/> values of this enumerated type.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DBACKBUFFER_TYPE']/*\"/>\t\n            <msdn-id>bb172506</msdn-id>\t\n            <unmanaged>D3DBACKBUFFER_TYPE</unmanaged>\t\n            <unmanaged-short>D3DBACKBUFFER_TYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.BackBufferType.Mono\">\n            <summary>\t\n            <dd> <p>Specifies a nonstereo swap chain. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DBACKBUFFER_TYPE_MONO']/*\"/>\t\n            <msdn-id>bb172506</msdn-id>\t\n            <unmanaged>D3DBACKBUFFER_TYPE_MONO</unmanaged>\t\n            <unmanaged-short>D3DBACKBUFFER_TYPE_MONO</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.BackBufferType.Left\">\n            <summary>\t\n            <dd> <p>Specifies the left side of a stereo pair in a swap chain. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DBACKBUFFER_TYPE_LEFT']/*\"/>\t\n            <msdn-id>bb172506</msdn-id>\t\n            <unmanaged>D3DBACKBUFFER_TYPE_LEFT</unmanaged>\t\n            <unmanaged-short>D3DBACKBUFFER_TYPE_LEFT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.BackBufferType.Right\">\n            <summary>\t\n            <dd> <p>Specifies the right side of a stereo pair in a swap chain. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DBACKBUFFER_TYPE_RIGHT']/*\"/>\t\n            <msdn-id>bb172506</msdn-id>\t\n            <unmanaged>D3DBACKBUFFER_TYPE_RIGHT</unmanaged>\t\n            <unmanaged-short>D3DBACKBUFFER_TYPE_RIGHT</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.Basis\">\n            <summary>\t\n            <p>Defines the basis type of a high-order patch surface.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The members of <strong><see cref=\"T:SharpDX.Direct3D9.Basis\"/></strong> specify the formulation to be used in evaluating the high-order patch surface primitive during tessellation.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DBASISTYPE']/*\"/>\t\n            <msdn-id>bb172507</msdn-id>\t\n            <unmanaged>D3DBASISTYPE</unmanaged>\t\n            <unmanaged-short>D3DBASISTYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Basis.Bezier\">\n            <summary>\t\n            <dd> <p>Input vertices are treated as a series of B?zier patches. The number of vertices specified must be divisible by 4. Portions of the mesh beyond this criterion will not be rendered. Full continuity is assumed between sub-patches in the interior of the surface rendered by each call. Only the vertices at the corners of each sub-patch are guaranteed to lie on the resulting surface. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DBASIS_BEZIER']/*\"/>\t\n            <msdn-id>bb172507</msdn-id>\t\n            <unmanaged>D3DBASIS_BEZIER</unmanaged>\t\n            <unmanaged-short>D3DBASIS_BEZIER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Basis.BSpline\">\n            <summary>\t\n            <dd> <p>Input vertices are treated as control points of a B-spline surface. The number of apertures rendered is two fewer than the number of apertures in that direction. In general, the generated surface does not contain the control vertices specified. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DBASIS_BSPLINE']/*\"/>\t\n            <msdn-id>bb172507</msdn-id>\t\n            <unmanaged>D3DBASIS_BSPLINE</unmanaged>\t\n            <unmanaged-short>D3DBASIS_BSPLINE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Basis.CatmullRom\">\n            <summary>\t\n            <dd> <p>An interpolating basis defines the surface so that the surface goes through all the input vertices specified. In DirectX 8, this was D3DBASIS_INTERPOLATE.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DBASIS_CATMULL_ROM']/*\"/>\t\n            <msdn-id>bb172507</msdn-id>\t\n            <unmanaged>D3DBASIS_CATMULL_ROM</unmanaged>\t\n            <unmanaged-short>D3DBASIS_CATMULL_ROM</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.Blend\">\n            <summary>\t\n            <p>Defines the supported blend mode.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>In the preceding member descriptions, the RGBA values of the source and destination are indicated by the s and d subscripts.</p><p>The values in this enumerated type are used by the following render states:</p><ul> <li><see cref=\"F:SharpDX.Direct3D9.RenderState.DestinationBlend\"/></li> <li><see cref=\"F:SharpDX.Direct3D9.RenderState.SourceBlend\"/></li> <li><see cref=\"F:SharpDX.Direct3D9.RenderState.DestinationBlendAlpha\"/></li> <li><see cref=\"F:SharpDX.Direct3D9.RenderState.SourceBlendAlpha\"/></li> </ul><p>See <strong><see cref=\"T:SharpDX.Direct3D9.RenderState\"/></strong> </p>Render Target Blending<p>Direct3D 9Ex has improved text rendering capabilities. Rendering clear-type fonts would normally require two passes. To eliminate the second pass, a pixel shader can be used to output two colors, which we can call PSOutColor[0] and PSOutColor[1]. The first color would contain the standard 3 color components (RGB). The second color would contain 3 alpha components (one for each component of the first color).</p><p>These new blending modes are only used for text rendering on the first render target.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DBLEND']/*\"/>\t\n            <msdn-id>bb172508</msdn-id>\t\n            <unmanaged>D3DBLEND</unmanaged>\t\n            <unmanaged-short>D3DBLEND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Blend.Zero\">\n            <summary>\t\n            <dd> <p>Blend factor is (0, 0, 0, 0). </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DBLEND_ZERO']/*\"/>\t\n            <msdn-id>bb172508</msdn-id>\t\n            <unmanaged>D3DBLEND_ZERO</unmanaged>\t\n            <unmanaged-short>D3DBLEND_ZERO</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Blend.One\">\n            <summary>\t\n            <dd> <p>Blend factor is (1, 1, 1, 1). </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DBLEND_ONE']/*\"/>\t\n            <msdn-id>bb172508</msdn-id>\t\n            <unmanaged>D3DBLEND_ONE</unmanaged>\t\n            <unmanaged-short>D3DBLEND_ONE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Blend.SourceColor\">\n            <summary>\t\n            <dd> <p>Blend factor is (Rs, Gs, Bs, As). </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DBLEND_SRCCOLOR']/*\"/>\t\n            <msdn-id>bb172508</msdn-id>\t\n            <unmanaged>D3DBLEND_SRCCOLOR</unmanaged>\t\n            <unmanaged-short>D3DBLEND_SRCCOLOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Blend.InverseSourceColor\">\n            <summary>\t\n            <dd> <p>Blend factor is (1 - Rs, 1 - Gs, 1 - Bs, 1 - As). </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DBLEND_INVSRCCOLOR']/*\"/>\t\n            <msdn-id>bb172508</msdn-id>\t\n            <unmanaged>D3DBLEND_INVSRCCOLOR</unmanaged>\t\n            <unmanaged-short>D3DBLEND_INVSRCCOLOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Blend.SourceAlpha\">\n            <summary>\t\n            <dd> <p>Blend factor is (As, As, As, As). </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DBLEND_SRCALPHA']/*\"/>\t\n            <msdn-id>bb172508</msdn-id>\t\n            <unmanaged>D3DBLEND_SRCALPHA</unmanaged>\t\n            <unmanaged-short>D3DBLEND_SRCALPHA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Blend.InverseSourceAlpha\">\n            <summary>\t\n            <dd> <p>Blend factor is ( 1 - As, 1 - As, 1 - As, 1 - As). </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DBLEND_INVSRCALPHA']/*\"/>\t\n            <msdn-id>bb172508</msdn-id>\t\n            <unmanaged>D3DBLEND_INVSRCALPHA</unmanaged>\t\n            <unmanaged-short>D3DBLEND_INVSRCALPHA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Blend.DestinationAlpha\">\n            <summary>\t\n            <dd> <p>Blend factor is (Ad Ad Ad Ad). </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DBLEND_DESTALPHA']/*\"/>\t\n            <msdn-id>bb172508</msdn-id>\t\n            <unmanaged>D3DBLEND_DESTALPHA</unmanaged>\t\n            <unmanaged-short>D3DBLEND_DESTALPHA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Blend.InverseDestinationAlpha\">\n            <summary>\t\n            <dd> <p>Blend factor is (1 - Ad 1 - Ad 1 - Ad 1 - Ad). </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DBLEND_INVDESTALPHA']/*\"/>\t\n            <msdn-id>bb172508</msdn-id>\t\n            <unmanaged>D3DBLEND_INVDESTALPHA</unmanaged>\t\n            <unmanaged-short>D3DBLEND_INVDESTALPHA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Blend.DestinationColor\">\n            <summary>\t\n            <dd> <p>Blend factor is (Rd, Gd, Bd, Ad). </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DBLEND_DESTCOLOR']/*\"/>\t\n            <msdn-id>bb172508</msdn-id>\t\n            <unmanaged>D3DBLEND_DESTCOLOR</unmanaged>\t\n            <unmanaged-short>D3DBLEND_DESTCOLOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Blend.InverseDestinationColor\">\n            <summary>\t\n            <dd> <p>Blend factor is (1 - Rd, 1 - Gd, 1 - Bd, 1 - Ad). </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DBLEND_INVDESTCOLOR']/*\"/>\t\n            <msdn-id>bb172508</msdn-id>\t\n            <unmanaged>D3DBLEND_INVDESTCOLOR</unmanaged>\t\n            <unmanaged-short>D3DBLEND_INVDESTCOLOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Blend.SourceAlphaSaturated\">\n            <summary>\t\n            <dd> <p>Blend factor is (f, f, f, 1); where f = min(As, 1 - Ad). </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DBLEND_SRCALPHASAT']/*\"/>\t\n            <msdn-id>bb172508</msdn-id>\t\n            <unmanaged>D3DBLEND_SRCALPHASAT</unmanaged>\t\n            <unmanaged-short>D3DBLEND_SRCALPHASAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Blend.Bothsrcalpha\">\n            <summary>\t\n            <dd> <p>Obsolete. Starting with DirectX 6, you can achieve the same effect by setting the source and destination blend factors to <see cref=\"F:SharpDX.Direct3D9.Blend.SourceAlpha\"/> and <see cref=\"F:SharpDX.Direct3D9.Blend.InverseSourceAlpha\"/> in separate calls. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DBLEND_BOTHSRCALPHA']/*\"/>\t\n            <msdn-id>bb172508</msdn-id>\t\n            <unmanaged>D3DBLEND_BOTHSRCALPHA</unmanaged>\t\n            <unmanaged-short>D3DBLEND_BOTHSRCALPHA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Blend.BothInverseSourceAlpha\">\n            <summary>\t\n            <dd> <p>Source blend factor is (1 - As, 1 - As, 1 - As, 1 - As), and destination blend factor is (As, As, As, As); the destination blend selection is overridden. This blend mode is supported only for the <see cref=\"F:SharpDX.Direct3D9.RenderState.SourceBlend\"/> render state. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DBLEND_BOTHINVSRCALPHA']/*\"/>\t\n            <msdn-id>bb172508</msdn-id>\t\n            <unmanaged>D3DBLEND_BOTHINVSRCALPHA</unmanaged>\t\n            <unmanaged-short>D3DBLEND_BOTHINVSRCALPHA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Blend.BlendFactor\">\n            <summary>\t\n            <dd> <p>Constant color blending factor used by the frame-buffer blender. This blend mode is supported only if <see cref=\"F:SharpDX.Direct3D9.BlendCaps.BlendFactor\"/> is set in the <strong>SrcBlendCaps</strong> or <strong>DestBlendCaps</strong> members of <strong><see cref=\"T:SharpDX.Direct3D9.Capabilities\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DBLEND_BLENDFACTOR']/*\"/>\t\n            <msdn-id>bb172508</msdn-id>\t\n            <unmanaged>D3DBLEND_BLENDFACTOR</unmanaged>\t\n            <unmanaged-short>D3DBLEND_BLENDFACTOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Blend.InverseBlendFactor\">\n            <summary>\t\n            <dd> <p>Inverted constant color-blending factor used by the frame-buffer blender. This blend mode is supported only if the <see cref=\"F:SharpDX.Direct3D9.BlendCaps.BlendFactor\"/> bit is set in the <strong>SrcBlendCaps</strong> or <strong>DestBlendCaps</strong> members of <strong><see cref=\"T:SharpDX.Direct3D9.Capabilities\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DBLEND_INVBLENDFACTOR']/*\"/>\t\n            <msdn-id>bb172508</msdn-id>\t\n            <unmanaged>D3DBLEND_INVBLENDFACTOR</unmanaged>\t\n            <unmanaged-short>D3DBLEND_INVBLENDFACTOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Blend.SourceColor2\">\n            <summary>\t\n            <dd> <p>Blend factor is (PSOutColor[1]r, PSOutColor[1]g, PSOutColor[1]b, not used). See Render. </p> <table> <tr><td> <p>Differences between Direct3D 9 and Direct3D 9Ex:</p> <p>This flag is available in Direct3D 9Ex only.</p> </td></tr> </table> <p>?</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DBLEND_SRCCOLOR2']/*\"/>\t\n            <msdn-id>bb172508</msdn-id>\t\n            <unmanaged>D3DBLEND_SRCCOLOR2</unmanaged>\t\n            <unmanaged-short>D3DBLEND_SRCCOLOR2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Blend.InverseSourceColor2\">\n            <summary>\t\n            <dd> <p>Blend factor is (1 - PSOutColor[1]r, 1 - PSOutColor[1]g, 1 - PSOutColor[1]b, not used)). See Render. </p> <table> <tr><td> <p>Differences between Direct3D 9 and Direct3D 9Ex:</p> <p>This flag is available in Direct3D 9Ex only.</p> </td></tr> </table> <p>?</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DBLEND_INVSRCCOLOR2']/*\"/>\t\n            <msdn-id>bb172508</msdn-id>\t\n            <unmanaged>D3DBLEND_INVSRCCOLOR2</unmanaged>\t\n            <unmanaged-short>D3DBLEND_INVSRCCOLOR2</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.BlendCaps\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPBLENDCAPS']/*\"/>\t\n            <unmanaged>D3DPBLENDCAPS</unmanaged>\t\n            <unmanaged-short>D3DPBLENDCAPS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.BlendCaps.Zero\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPBLENDCAPS_ZERO']/*\"/>\t\n            <unmanaged>D3DPBLENDCAPS_ZERO</unmanaged>\t\n            <unmanaged-short>D3DPBLENDCAPS_ZERO</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.BlendCaps.One\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPBLENDCAPS_ONE']/*\"/>\t\n            <unmanaged>D3DPBLENDCAPS_ONE</unmanaged>\t\n            <unmanaged-short>D3DPBLENDCAPS_ONE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.BlendCaps.SourceColor\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPBLENDCAPS_SRCCOLOR']/*\"/>\t\n            <unmanaged>D3DPBLENDCAPS_SRCCOLOR</unmanaged>\t\n            <unmanaged-short>D3DPBLENDCAPS_SRCCOLOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.BlendCaps.InverseSourceColor\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPBLENDCAPS_INVSRCCOLOR']/*\"/>\t\n            <unmanaged>D3DPBLENDCAPS_INVSRCCOLOR</unmanaged>\t\n            <unmanaged-short>D3DPBLENDCAPS_INVSRCCOLOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.BlendCaps.SourceAlpha\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPBLENDCAPS_SRCALPHA']/*\"/>\t\n            <unmanaged>D3DPBLENDCAPS_SRCALPHA</unmanaged>\t\n            <unmanaged-short>D3DPBLENDCAPS_SRCALPHA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.BlendCaps.InverseSourceAlpha\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPBLENDCAPS_INVSRCALPHA']/*\"/>\t\n            <unmanaged>D3DPBLENDCAPS_INVSRCALPHA</unmanaged>\t\n            <unmanaged-short>D3DPBLENDCAPS_INVSRCALPHA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.BlendCaps.DestinationAlpha\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPBLENDCAPS_DESTALPHA']/*\"/>\t\n            <unmanaged>D3DPBLENDCAPS_DESTALPHA</unmanaged>\t\n            <unmanaged-short>D3DPBLENDCAPS_DESTALPHA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.BlendCaps.InverseDestinationAlpha\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPBLENDCAPS_INVDESTALPHA']/*\"/>\t\n            <unmanaged>D3DPBLENDCAPS_INVDESTALPHA</unmanaged>\t\n            <unmanaged-short>D3DPBLENDCAPS_INVDESTALPHA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.BlendCaps.DestinationColor\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPBLENDCAPS_DESTCOLOR']/*\"/>\t\n            <unmanaged>D3DPBLENDCAPS_DESTCOLOR</unmanaged>\t\n            <unmanaged-short>D3DPBLENDCAPS_DESTCOLOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.BlendCaps.InverseDestinationColor\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPBLENDCAPS_INVDESTCOLOR']/*\"/>\t\n            <unmanaged>D3DPBLENDCAPS_INVDESTCOLOR</unmanaged>\t\n            <unmanaged-short>D3DPBLENDCAPS_INVDESTCOLOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.BlendCaps.SourceAlphaSaturated\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPBLENDCAPS_SRCALPHASAT']/*\"/>\t\n            <unmanaged>D3DPBLENDCAPS_SRCALPHASAT</unmanaged>\t\n            <unmanaged-short>D3DPBLENDCAPS_SRCALPHASAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.BlendCaps.Bothsrcalpha\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPBLENDCAPS_BOTHSRCALPHA']/*\"/>\t\n            <unmanaged>D3DPBLENDCAPS_BOTHSRCALPHA</unmanaged>\t\n            <unmanaged-short>D3DPBLENDCAPS_BOTHSRCALPHA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.BlendCaps.BothInverseSourceAlpha\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPBLENDCAPS_BOTHINVSRCALPHA']/*\"/>\t\n            <unmanaged>D3DPBLENDCAPS_BOTHINVSRCALPHA</unmanaged>\t\n            <unmanaged-short>D3DPBLENDCAPS_BOTHINVSRCALPHA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.BlendCaps.BlendFactor\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPBLENDCAPS_BLENDFACTOR']/*\"/>\t\n            <unmanaged>D3DPBLENDCAPS_BLENDFACTOR</unmanaged>\t\n            <unmanaged-short>D3DPBLENDCAPS_BLENDFACTOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.BlendCaps.SourceColor2\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPBLENDCAPS_SRCCOLOR2']/*\"/>\t\n            <unmanaged>D3DPBLENDCAPS_SRCCOLOR2</unmanaged>\t\n            <unmanaged-short>D3DPBLENDCAPS_SRCCOLOR2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.BlendCaps.InverseSourceColor2\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPBLENDCAPS_INVSRCCOLOR2']/*\"/>\t\n            <unmanaged>D3DPBLENDCAPS_INVSRCCOLOR2</unmanaged>\t\n            <unmanaged-short>D3DPBLENDCAPS_INVSRCCOLOR2</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.BlendOperation\">\n            <summary>\t\n            <p>Defines the supported blend operations. See Remarks for definitions of terms.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Source, Destination, and Result are defined as: </p><table> <tr><th>Term</th><th>Type</th><th>Description</th></tr> <tr><td>Source</td><td>Input</td><td>Color of the source pixel before the operation.</td></tr> <tr><td>Destination</td><td>Input</td><td>Color of the pixel in the destination buffer before the operation.</td></tr> <tr><td>Result</td><td>Output</td><td>Returned value that is the blended color resulting from the operation.</td></tr> </table><p>?</p><p>This enumerated type defines values used by the following render states:</p><ul> <li><see cref=\"F:SharpDX.Direct3D9.RenderState.BlendOperation\"/></li> <li><see cref=\"F:SharpDX.Direct3D9.RenderState.BlendOperationAlpha\"/></li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DBLENDOP']/*\"/>\t\n            <msdn-id>bb172509</msdn-id>\t\n            <unmanaged>D3DBLENDOP</unmanaged>\t\n            <unmanaged-short>D3DBLENDOP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.BlendOperation.Add\">\n            <summary>\t\n            <dd> <p>The result is the destination added to the source.  Result = Source + Destination</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DBLENDOP_ADD']/*\"/>\t\n            <msdn-id>bb172509</msdn-id>\t\n            <unmanaged>D3DBLENDOP_ADD</unmanaged>\t\n            <unmanaged-short>D3DBLENDOP_ADD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.BlendOperation.Subtract\">\n            <summary>\t\n            <dd> <p>The result is the destination subtracted from to the source.  Result = Source - Destination</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DBLENDOP_SUBTRACT']/*\"/>\t\n            <msdn-id>bb172509</msdn-id>\t\n            <unmanaged>D3DBLENDOP_SUBTRACT</unmanaged>\t\n            <unmanaged-short>D3DBLENDOP_SUBTRACT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.BlendOperation.ReverseSubtract\">\n            <summary>\t\n            <dd> <p>The result is the source subtracted from the destination.  Result = Destination - Source</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DBLENDOP_REVSUBTRACT']/*\"/>\t\n            <msdn-id>bb172509</msdn-id>\t\n            <unmanaged>D3DBLENDOP_REVSUBTRACT</unmanaged>\t\n            <unmanaged-short>D3DBLENDOP_REVSUBTRACT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.BlendOperation.Minimum\">\n            <summary>\t\n            <dd> <p>The result is the minimum of the source and destination.  Result = MIN(Source, Destination)</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DBLENDOP_MIN']/*\"/>\t\n            <msdn-id>bb172509</msdn-id>\t\n            <unmanaged>D3DBLENDOP_MIN</unmanaged>\t\n            <unmanaged-short>D3DBLENDOP_MIN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.BlendOperation.Maximum\">\n            <summary>\t\n            <dd> <p>The result is the maximum of the source and destination.  Result = MAX(Source, Destination)</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DBLENDOP_MAX']/*\"/>\t\n            <msdn-id>bb172509</msdn-id>\t\n            <unmanaged>D3DBLENDOP_MAX</unmanaged>\t\n            <unmanaged-short>D3DBLENDOP_MAX</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.CallbackSearchFlags\">\n            <summary>\t\n            <p>Flags used to obtain callback information.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCALLBACK_SEARCH_FLAGS']/*\"/>\t\n            <msdn-id>bb172714</msdn-id>\t\n            <unmanaged>D3DXCALLBACK_SEARCH_FLAGS</unmanaged>\t\n            <unmanaged-short>D3DXCALLBACK_SEARCH_FLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.CallbackSearchFlags.SearchExcludingInitialPosition\">\n            <summary>\t\n            <dd> <p>Exclude callbacks located at the initial position from the search.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCALLBACK_SEARCH_EXCLUDING_INITIAL_POSITION']/*\"/>\t\n            <msdn-id>bb172714</msdn-id>\t\n            <unmanaged>D3DXCALLBACK_SEARCH_EXCLUDING_INITIAL_POSITION</unmanaged>\t\n            <unmanaged-short>D3DXCALLBACK_SEARCH_EXCLUDING_INITIAL_POSITION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.CallbackSearchFlags.SearchBehindInitialPosition\">\n            <summary>\t\n            <dd> <p>Reverse the callback search direction.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCALLBACK_SEARCH_BEHIND_INITIAL_POSITION']/*\"/>\t\n            <msdn-id>bb172714</msdn-id>\t\n            <unmanaged>D3DXCALLBACK_SEARCH_BEHIND_INITIAL_POSITION</unmanaged>\t\n            <unmanaged-short>D3DXCALLBACK_SEARCH_BEHIND_INITIAL_POSITION</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.Caps\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS']/*\"/>\t\n            <unmanaged>D3DCAPS</unmanaged>\t\n            <unmanaged-short>D3DCAPS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Caps.Overlay\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS_OVERLAY']/*\"/>\t\n            <unmanaged>D3DCAPS_OVERLAY</unmanaged>\t\n            <unmanaged-short>D3DCAPS_OVERLAY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Caps.ReadScanline\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS_READ_SCANLINE']/*\"/>\t\n            <unmanaged>D3DCAPS_READ_SCANLINE</unmanaged>\t\n            <unmanaged-short>D3DCAPS_READ_SCANLINE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Caps.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.Caps2\">\n            <summary>\t\n            <p>Driver capability flags.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS2']/*\"/>\t\n            <msdn-id>bb172511</msdn-id>\t\n            <unmanaged>D3DCAPS2</unmanaged>\t\n            <unmanaged-short>D3DCAPS2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Caps2.FullScreenGamma\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS2_FULLSCREENGAMMA']/*\"/>\t\n            <unmanaged>D3DCAPS2_FULLSCREENGAMMA</unmanaged>\t\n            <unmanaged-short>D3DCAPS2_FULLSCREENGAMMA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Caps2.CanCalibrateGamma\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS2_CANCALIBRATEGAMMA']/*\"/>\t\n            <unmanaged>D3DCAPS2_CANCALIBRATEGAMMA</unmanaged>\t\n            <unmanaged-short>D3DCAPS2_CANCALIBRATEGAMMA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Caps2.CanManageResource\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS2_CANMANAGERESOURCE']/*\"/>\t\n            <unmanaged>D3DCAPS2_CANMANAGERESOURCE</unmanaged>\t\n            <unmanaged-short>D3DCAPS2_CANMANAGERESOURCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Caps2.DynamicTextures\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS2_DYNAMICTEXTURES']/*\"/>\t\n            <unmanaged>D3DCAPS2_DYNAMICTEXTURES</unmanaged>\t\n            <unmanaged-short>D3DCAPS2_DYNAMICTEXTURES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Caps2.CanAutoGenerateMipMap\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS2_CANAUTOGENMIPMAP']/*\"/>\t\n            <unmanaged>D3DCAPS2_CANAUTOGENMIPMAP</unmanaged>\t\n            <unmanaged-short>D3DCAPS2_CANAUTOGENMIPMAP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Caps2.CanShareResource\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS2_CANSHARERESOURCE']/*\"/>\t\n            <unmanaged>D3DCAPS2_CANSHARERESOURCE</unmanaged>\t\n            <unmanaged-short>D3DCAPS2_CANSHARERESOURCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Caps2.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.Caps3\">\n            <summary>\t\n            <p>Driver capability flags.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS3']/*\"/>\t\n            <msdn-id>bb172512</msdn-id>\t\n            <unmanaged>D3DCAPS3</unmanaged>\t\n            <unmanaged-short>D3DCAPS3</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Caps3.AlphaFullScreenFlipOrDiscard\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS3_ALPHA_FULLSCREEN_FLIP_OR_DISCARD']/*\"/>\t\n            <unmanaged>D3DCAPS3_ALPHA_FULLSCREEN_FLIP_OR_DISCARD</unmanaged>\t\n            <unmanaged-short>D3DCAPS3_ALPHA_FULLSCREEN_FLIP_OR_DISCARD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Caps3.LinearToSrgbPresentation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS3_LINEAR_TO_SRGB_PRESENTATION']/*\"/>\t\n            <unmanaged>D3DCAPS3_LINEAR_TO_SRGB_PRESENTATION</unmanaged>\t\n            <unmanaged-short>D3DCAPS3_LINEAR_TO_SRGB_PRESENTATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Caps3.CopyToVideoMemory\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS3_COPY_TO_VIDMEM']/*\"/>\t\n            <unmanaged>D3DCAPS3_COPY_TO_VIDMEM</unmanaged>\t\n            <unmanaged-short>D3DCAPS3_COPY_TO_VIDMEM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Caps3.CopyToSystemMemory\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS3_COPY_TO_SYSTEMMEM']/*\"/>\t\n            <unmanaged>D3DCAPS3_COPY_TO_SYSTEMMEM</unmanaged>\t\n            <unmanaged-short>D3DCAPS3_COPY_TO_SYSTEMMEM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Caps3.DXVAHd\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCAPS3_DXVAHD']/*\"/>\t\n            <unmanaged>D3DCAPS3_DXVAHD</unmanaged>\t\n            <unmanaged-short>D3DCAPS3_DXVAHD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Caps3.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.CleanType\">\n            <summary>\t\n            <p>Defines operations to perform on vertices in preparation for mesh cleaning.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCLEANTYPE']/*\"/>\t\n            <msdn-id>bb172720</msdn-id>\t\n            <unmanaged>D3DXCLEANTYPE</unmanaged>\t\n            <unmanaged-short>D3DXCLEANTYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.CleanType.BackFacing\">\n            <summary>\t\n            <dd> <p>Merge triangles that share the same vertex indices but have face normals pointing in opposite directions (back-facing triangles). Unless the triangles are not split by adding a replicated vertex, mesh adjacency data from the two triangles may conflict.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCLEAN_BACKFACING']/*\"/>\t\n            <msdn-id>bb172720</msdn-id>\t\n            <unmanaged>D3DXCLEAN_BACKFACING</unmanaged>\t\n            <unmanaged-short>D3DXCLEAN_BACKFACING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.CleanType.Bowties\">\n            <summary>\t\n            <dd> <p>If a vertex is the apex of two triangle fans (a bowtie) and mesh operations will affect one of the fans, then split the shared vertex into two new vertices. Bowties can cause problems for operations such as mesh simplification that remove vertices, because removing one vertex affects two distinct sets of triangles.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCLEAN_BOWTIES']/*\"/>\t\n            <msdn-id>bb172720</msdn-id>\t\n            <unmanaged>D3DXCLEAN_BOWTIES</unmanaged>\t\n            <unmanaged-short>D3DXCLEAN_BOWTIES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.CleanType.Skinning\">\n            <summary>\t\n            <dd> <p>Use this flag to prevent infinite loops during skinning setup mesh operations.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCLEAN_SKINNING']/*\"/>\t\n            <msdn-id>bb172720</msdn-id>\t\n            <unmanaged>D3DXCLEAN_SKINNING</unmanaged>\t\n            <unmanaged-short>D3DXCLEAN_SKINNING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.CleanType.Optimization\">\n            <summary>\t\n            <dd> <p>Use this flag to prevent infinite loops during mesh optimization operations.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCLEAN_OPTIMIZATION']/*\"/>\t\n            <msdn-id>bb172720</msdn-id>\t\n            <unmanaged>D3DXCLEAN_OPTIMIZATION</unmanaged>\t\n            <unmanaged-short>D3DXCLEAN_OPTIMIZATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.CleanType.Simplification\">\n            <summary>\t\n            <dd> <p>Use this flag to prevent infinite loops during mesh simplification operations.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCLEAN_SIMPLIFICATION']/*\"/>\t\n            <msdn-id>bb172720</msdn-id>\t\n            <unmanaged>D3DXCLEAN_SIMPLIFICATION</unmanaged>\t\n            <unmanaged-short>D3DXCLEAN_SIMPLIFICATION</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.ClearFlags\">\n            <summary>\t\n            <p>These flags identify a surface to reset when calling <strong>Clear</strong>.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCLEAR']/*\"/>\t\n            <msdn-id>bb172514</msdn-id>\t\n            <unmanaged>D3DCLEAR</unmanaged>\t\n            <unmanaged-short>D3DCLEAR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ClearFlags.Target\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCLEAR_TARGET']/*\"/>\t\n            <unmanaged>D3DCLEAR_TARGET</unmanaged>\t\n            <unmanaged-short>D3DCLEAR_TARGET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ClearFlags.ZBuffer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCLEAR_ZBUFFER']/*\"/>\t\n            <unmanaged>D3DCLEAR_ZBUFFER</unmanaged>\t\n            <unmanaged-short>D3DCLEAR_ZBUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ClearFlags.Stencil\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCLEAR_STENCIL']/*\"/>\t\n            <unmanaged>D3DCLEAR_STENCIL</unmanaged>\t\n            <unmanaged-short>D3DCLEAR_STENCIL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ClearFlags.All\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCLEAR_ALL']/*\"/>\t\n            <unmanaged>D3DCLEAR_ALL</unmanaged>\t\n            <unmanaged-short>D3DCLEAR_ALL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ClearFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.ClipFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCS']/*\"/>\t\n            <unmanaged>D3DCS</unmanaged>\t\n            <unmanaged-short>D3DCS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ClipFlags.Left\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCS_LEFT']/*\"/>\t\n            <unmanaged>D3DCS_LEFT</unmanaged>\t\n            <unmanaged-short>D3DCS_LEFT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ClipFlags.Right\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCS_RIGHT']/*\"/>\t\n            <unmanaged>D3DCS_RIGHT</unmanaged>\t\n            <unmanaged-short>D3DCS_RIGHT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ClipFlags.Top\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCS_TOP']/*\"/>\t\n            <unmanaged>D3DCS_TOP</unmanaged>\t\n            <unmanaged-short>D3DCS_TOP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ClipFlags.Bottom\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCS_BOTTOM']/*\"/>\t\n            <unmanaged>D3DCS_BOTTOM</unmanaged>\t\n            <unmanaged-short>D3DCS_BOTTOM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ClipFlags.Front\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCS_FRONT']/*\"/>\t\n            <unmanaged>D3DCS_FRONT</unmanaged>\t\n            <unmanaged-short>D3DCS_FRONT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ClipFlags.Back\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCS_BACK']/*\"/>\t\n            <unmanaged>D3DCS_BACK</unmanaged>\t\n            <unmanaged-short>D3DCS_BACK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ClipFlags.Plane0\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCS_PLANE0']/*\"/>\t\n            <unmanaged>D3DCS_PLANE0</unmanaged>\t\n            <unmanaged-short>D3DCS_PLANE0</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ClipFlags.Plane1\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCS_PLANE1']/*\"/>\t\n            <unmanaged>D3DCS_PLANE1</unmanaged>\t\n            <unmanaged-short>D3DCS_PLANE1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ClipFlags.Plane2\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCS_PLANE2']/*\"/>\t\n            <unmanaged>D3DCS_PLANE2</unmanaged>\t\n            <unmanaged-short>D3DCS_PLANE2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ClipFlags.Plane3\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCS_PLANE3']/*\"/>\t\n            <unmanaged>D3DCS_PLANE3</unmanaged>\t\n            <unmanaged-short>D3DCS_PLANE3</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ClipFlags.Plane4\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCS_PLANE4']/*\"/>\t\n            <unmanaged>D3DCS_PLANE4</unmanaged>\t\n            <unmanaged-short>D3DCS_PLANE4</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ClipFlags.Plane5\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCS_PLANE5']/*\"/>\t\n            <unmanaged>D3DCS_PLANE5</unmanaged>\t\n            <unmanaged-short>D3DCS_PLANE5</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ClipFlags.All\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCS_ALL']/*\"/>\t\n            <unmanaged>D3DCS_ALL</unmanaged>\t\n            <unmanaged-short>D3DCS_ALL</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.ColorSource\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DMATERIALCOLORSOURCE']/*\"/>\t\n            <unmanaged>D3DMATERIALCOLORSOURCE</unmanaged>\t\n            <unmanaged-short>D3DMATERIALCOLORSOURCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ColorSource.Material\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DMCS_MATERIAL']/*\"/>\t\n            <unmanaged>D3DMCS_MATERIAL</unmanaged>\t\n            <unmanaged-short>D3DMCS_MATERIAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ColorSource.Color1\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DMCS_COLOR1']/*\"/>\t\n            <unmanaged>D3DMCS_COLOR1</unmanaged>\t\n            <unmanaged-short>D3DMCS_COLOR1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ColorSource.Color2\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DMCS_COLOR2']/*\"/>\t\n            <unmanaged>D3DMCS_COLOR2</unmanaged>\t\n            <unmanaged-short>D3DMCS_COLOR2</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.ColorWriteEnable\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCOLORWRITEENABLE']/*\"/>\t\n            <unmanaged>D3DCOLORWRITEENABLE</unmanaged>\t\n            <unmanaged-short>D3DCOLORWRITEENABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ColorWriteEnable.Red\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCOLORWRITEENABLE_RED']/*\"/>\t\n            <unmanaged>D3DCOLORWRITEENABLE_RED</unmanaged>\t\n            <unmanaged-short>D3DCOLORWRITEENABLE_RED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ColorWriteEnable.Green\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCOLORWRITEENABLE_GREEN']/*\"/>\t\n            <unmanaged>D3DCOLORWRITEENABLE_GREEN</unmanaged>\t\n            <unmanaged-short>D3DCOLORWRITEENABLE_GREEN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ColorWriteEnable.Blue\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCOLORWRITEENABLE_BLUE']/*\"/>\t\n            <unmanaged>D3DCOLORWRITEENABLE_BLUE</unmanaged>\t\n            <unmanaged-short>D3DCOLORWRITEENABLE_BLUE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ColorWriteEnable.Alpha\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCOLORWRITEENABLE_ALPHA']/*\"/>\t\n            <unmanaged>D3DCOLORWRITEENABLE_ALPHA</unmanaged>\t\n            <unmanaged-short>D3DCOLORWRITEENABLE_ALPHA</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.Compare\">\n            <summary>\t\n            <p>Defines the supported compare functions.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The values in this enumerated type define the supported compare functions for the <see cref=\"F:SharpDX.Direct3D9.RenderState.ZFunc\"/>, <see cref=\"F:SharpDX.Direct3D9.RenderState.AlphaFunc\"/>, and <see cref=\"F:SharpDX.Direct3D9.RenderState.StencilFunc\"/> render states.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCMPFUNC']/*\"/>\t\n            <msdn-id>bb172517</msdn-id>\t\n            <unmanaged>D3DCMPFUNC</unmanaged>\t\n            <unmanaged-short>D3DCMPFUNC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Compare.Never\">\n            <summary>\t\n            <dd> <p>Always fail the test. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCMP_NEVER']/*\"/>\t\n            <msdn-id>bb172517</msdn-id>\t\n            <unmanaged>D3DCMP_NEVER</unmanaged>\t\n            <unmanaged-short>D3DCMP_NEVER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Compare.Less\">\n            <summary>\t\n            <dd> <p>Accept the new pixel if its value is less than the value of the current pixel. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCMP_LESS']/*\"/>\t\n            <msdn-id>bb172517</msdn-id>\t\n            <unmanaged>D3DCMP_LESS</unmanaged>\t\n            <unmanaged-short>D3DCMP_LESS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Compare.Equal\">\n            <summary>\t\n            <dd> <p>Accept the new pixel if its value equals the value of the current pixel. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCMP_EQUAL']/*\"/>\t\n            <msdn-id>bb172517</msdn-id>\t\n            <unmanaged>D3DCMP_EQUAL</unmanaged>\t\n            <unmanaged-short>D3DCMP_EQUAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Compare.LessEqual\">\n            <summary>\t\n            <dd> <p>Accept the new pixel if its value is less than or equal to the value of the current pixel. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCMP_LESSEQUAL']/*\"/>\t\n            <msdn-id>bb172517</msdn-id>\t\n            <unmanaged>D3DCMP_LESSEQUAL</unmanaged>\t\n            <unmanaged-short>D3DCMP_LESSEQUAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Compare.Greater\">\n            <summary>\t\n            <dd> <p>Accept the new pixel if its value is greater than the value of the current pixel. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCMP_GREATER']/*\"/>\t\n            <msdn-id>bb172517</msdn-id>\t\n            <unmanaged>D3DCMP_GREATER</unmanaged>\t\n            <unmanaged-short>D3DCMP_GREATER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Compare.NotEqual\">\n            <summary>\t\n            <dd> <p>Accept the new pixel if its value does not equal the value of the current pixel. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCMP_NOTEQUAL']/*\"/>\t\n            <msdn-id>bb172517</msdn-id>\t\n            <unmanaged>D3DCMP_NOTEQUAL</unmanaged>\t\n            <unmanaged-short>D3DCMP_NOTEQUAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Compare.GreaterEqual\">\n            <summary>\t\n            <dd> <p>Accept the new pixel if its value is greater than or equal to the value of the current pixel. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCMP_GREATEREQUAL']/*\"/>\t\n            <msdn-id>bb172517</msdn-id>\t\n            <unmanaged>D3DCMP_GREATEREQUAL</unmanaged>\t\n            <unmanaged-short>D3DCMP_GREATEREQUAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Compare.Always\">\n            <summary>\t\n            <dd> <p>Always pass the test. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCMP_ALWAYS']/*\"/>\t\n            <msdn-id>bb172517</msdn-id>\t\n            <unmanaged>D3DCMP_ALWAYS</unmanaged>\t\n            <unmanaged-short>D3DCMP_ALWAYS</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.CompareCaps\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPCMPCAPS']/*\"/>\t\n            <unmanaged>D3DPCMPCAPS</unmanaged>\t\n            <unmanaged-short>D3DPCMPCAPS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.CompareCaps.Never\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPCMPCAPS_NEVER']/*\"/>\t\n            <unmanaged>D3DPCMPCAPS_NEVER</unmanaged>\t\n            <unmanaged-short>D3DPCMPCAPS_NEVER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.CompareCaps.Less\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPCMPCAPS_LESS']/*\"/>\t\n            <unmanaged>D3DPCMPCAPS_LESS</unmanaged>\t\n            <unmanaged-short>D3DPCMPCAPS_LESS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.CompareCaps.Equal\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPCMPCAPS_EQUAL']/*\"/>\t\n            <unmanaged>D3DPCMPCAPS_EQUAL</unmanaged>\t\n            <unmanaged-short>D3DPCMPCAPS_EQUAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.CompareCaps.LessEqual\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPCMPCAPS_LESSEQUAL']/*\"/>\t\n            <unmanaged>D3DPCMPCAPS_LESSEQUAL</unmanaged>\t\n            <unmanaged-short>D3DPCMPCAPS_LESSEQUAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.CompareCaps.Greater\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPCMPCAPS_GREATER']/*\"/>\t\n            <unmanaged>D3DPCMPCAPS_GREATER</unmanaged>\t\n            <unmanaged-short>D3DPCMPCAPS_GREATER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.CompareCaps.NotEqual\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPCMPCAPS_NOTEQUAL']/*\"/>\t\n            <unmanaged>D3DPCMPCAPS_NOTEQUAL</unmanaged>\t\n            <unmanaged-short>D3DPCMPCAPS_NOTEQUAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.CompareCaps.GreaterEqual\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPCMPCAPS_GREATEREQUAL']/*\"/>\t\n            <unmanaged>D3DPCMPCAPS_GREATEREQUAL</unmanaged>\t\n            <unmanaged-short>D3DPCMPCAPS_GREATEREQUAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.CompareCaps.Always\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPCMPCAPS_ALWAYS']/*\"/>\t\n            <unmanaged>D3DPCMPCAPS_ALWAYS</unmanaged>\t\n            <unmanaged-short>D3DPCMPCAPS_ALWAYS</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.ComposeRectOperation\">\n            <summary>\t\n            <p>Specifies how to combine the glyph data from the source and destination surfaces in a call to <strong>ComposeRects</strong>.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCOMPOSERECTSOP']/*\"/>\t\n            <msdn-id>bb509546</msdn-id>\t\n            <unmanaged>D3DCOMPOSERECTSOP</unmanaged>\t\n            <unmanaged-short>D3DCOMPOSERECTSOP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ComposeRectOperation.Copy\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCOMPOSERECTS_COPY']/*\"/>\t\n            <unmanaged>D3DCOMPOSERECTS_COPY</unmanaged>\t\n            <unmanaged-short>D3DCOMPOSERECTS_COPY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ComposeRectOperation.Or\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCOMPOSERECTS_OR']/*\"/>\t\n            <unmanaged>D3DCOMPOSERECTS_OR</unmanaged>\t\n            <unmanaged-short>D3DCOMPOSERECTS_OR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ComposeRectOperation.And\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCOMPOSERECTS_AND']/*\"/>\t\n            <unmanaged>D3DCOMPOSERECTS_AND</unmanaged>\t\n            <unmanaged-short>D3DCOMPOSERECTS_AND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ComposeRectOperation.Negate\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCOMPOSERECTS_NEG']/*\"/>\t\n            <unmanaged>D3DCOMPOSERECTS_NEG</unmanaged>\t\n            <unmanaged-short>D3DCOMPOSERECTS_NEG</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.CompressionFlags\">\n            <summary>\t\n            <p>Defines the compression mode used for storing compressed animation set data.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCOMPRESSION_FLAGS']/*\"/>\t\n            <msdn-id>bb172734</msdn-id>\t\n            <unmanaged>D3DXCOMPRESSION_FLAGS</unmanaged>\t\n            <unmanaged-short>D3DXCOMPRESSION_FLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.CompressionFlags.Default\">\n            <summary>\t\n            <dd> <p>Implements fast compression.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCOMPRESS_DEFAULT']/*\"/>\t\n            <msdn-id>bb172734</msdn-id>\t\n            <unmanaged>D3DXCOMPRESS_DEFAULT</unmanaged>\t\n            <unmanaged-short>D3DXCOMPRESS_DEFAULT</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.CreateFlags\">\n            <summary>\t\n            <p>A combination of one or more flags that control the device create behavior.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCREATE']/*\"/>\t\n            <msdn-id>bb172527</msdn-id>\t\n            <unmanaged>D3DCREATE</unmanaged>\t\n            <unmanaged-short>D3DCREATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.CreateFlags.FpuPreserve\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCREATE_FPU_PRESERVE']/*\"/>\t\n            <unmanaged>D3DCREATE_FPU_PRESERVE</unmanaged>\t\n            <unmanaged-short>D3DCREATE_FPU_PRESERVE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.CreateFlags.Multithreaded\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCREATE_MULTITHREADED']/*\"/>\t\n            <unmanaged>D3DCREATE_MULTITHREADED</unmanaged>\t\n            <unmanaged-short>D3DCREATE_MULTITHREADED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.CreateFlags.PureDevice\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCREATE_PUREDEVICE']/*\"/>\t\n            <unmanaged>D3DCREATE_PUREDEVICE</unmanaged>\t\n            <unmanaged-short>D3DCREATE_PUREDEVICE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.CreateFlags.SoftwareVertexProcessing\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCREATE_SOFTWARE_VERTEXPROCESSING']/*\"/>\t\n            <unmanaged>D3DCREATE_SOFTWARE_VERTEXPROCESSING</unmanaged>\t\n            <unmanaged-short>D3DCREATE_SOFTWARE_VERTEXPROCESSING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.CreateFlags.HardwareVertexProcessing\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCREATE_HARDWARE_VERTEXPROCESSING']/*\"/>\t\n            <unmanaged>D3DCREATE_HARDWARE_VERTEXPROCESSING</unmanaged>\t\n            <unmanaged-short>D3DCREATE_HARDWARE_VERTEXPROCESSING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.CreateFlags.MixedVertexProcessing\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCREATE_MIXED_VERTEXPROCESSING']/*\"/>\t\n            <unmanaged>D3DCREATE_MIXED_VERTEXPROCESSING</unmanaged>\t\n            <unmanaged-short>D3DCREATE_MIXED_VERTEXPROCESSING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.CreateFlags.DisableDriverManagement\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCREATE_DISABLE_DRIVER_MANAGEMENT']/*\"/>\t\n            <unmanaged>D3DCREATE_DISABLE_DRIVER_MANAGEMENT</unmanaged>\t\n            <unmanaged-short>D3DCREATE_DISABLE_DRIVER_MANAGEMENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.CreateFlags.AdapterGroupDevice\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCREATE_ADAPTERGROUP_DEVICE']/*\"/>\t\n            <unmanaged>D3DCREATE_ADAPTERGROUP_DEVICE</unmanaged>\t\n            <unmanaged-short>D3DCREATE_ADAPTERGROUP_DEVICE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.CreateFlags.DisableExtendedDriverManagement\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCREATE_DISABLE_DRIVER_MANAGEMENT_EX']/*\"/>\t\n            <unmanaged>D3DCREATE_DISABLE_DRIVER_MANAGEMENT_EX</unmanaged>\t\n            <unmanaged-short>D3DCREATE_DISABLE_DRIVER_MANAGEMENT_EX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.CreateFlags.NoWindowChanges\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCREATE_NOWINDOWCHANGES']/*\"/>\t\n            <unmanaged>D3DCREATE_NOWINDOWCHANGES</unmanaged>\t\n            <unmanaged-short>D3DCREATE_NOWINDOWCHANGES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.CreateFlags.DisablePsgpThreading\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCREATE_DISABLE_PSGP_THREADING']/*\"/>\t\n            <unmanaged>D3DCREATE_DISABLE_PSGP_THREADING</unmanaged>\t\n            <unmanaged-short>D3DCREATE_DISABLE_PSGP_THREADING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.CreateFlags.EnablePresentStatistics\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCREATE_ENABLE_PRESENTSTATS']/*\"/>\t\n            <unmanaged>D3DCREATE_ENABLE_PRESENTSTATS</unmanaged>\t\n            <unmanaged-short>D3DCREATE_ENABLE_PRESENTSTATS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.CreateFlags.DisablePrintScreen\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCREATE_DISABLE_PRINTSCREEN']/*\"/>\t\n            <unmanaged>D3DCREATE_DISABLE_PRINTSCREEN</unmanaged>\t\n            <unmanaged-short>D3DCREATE_DISABLE_PRINTSCREEN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.CreateFlags.AllowScreensavers\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCREATE_SCREENSAVER']/*\"/>\t\n            <unmanaged>D3DCREATE_SCREENSAVER</unmanaged>\t\n            <unmanaged-short>D3DCREATE_SCREENSAVER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.CreateFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.CubeMapFace\">\n            <summary>\t\n            <p>Defines the faces of a cubemap.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCUBEMAP_FACES']/*\"/>\t\n            <msdn-id>bb172528</msdn-id>\t\n            <unmanaged>D3DCUBEMAP_FACES</unmanaged>\t\n            <unmanaged-short>D3DCUBEMAP_FACES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.CubeMapFace.PositiveX\">\n            <summary>\t\n            <dd> <p>Positive x-face of the cubemap. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCUBEMAP_FACE_POSITIVE_X']/*\"/>\t\n            <msdn-id>bb172528</msdn-id>\t\n            <unmanaged>D3DCUBEMAP_FACE_POSITIVE_X</unmanaged>\t\n            <unmanaged-short>D3DCUBEMAP_FACE_POSITIVE_X</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.CubeMapFace.NegativeX\">\n            <summary>\t\n            <dd> <p>Negative x-face of the cubemap. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCUBEMAP_FACE_NEGATIVE_X']/*\"/>\t\n            <msdn-id>bb172528</msdn-id>\t\n            <unmanaged>D3DCUBEMAP_FACE_NEGATIVE_X</unmanaged>\t\n            <unmanaged-short>D3DCUBEMAP_FACE_NEGATIVE_X</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.CubeMapFace.PositiveY\">\n            <summary>\t\n            <dd> <p>Positive y-face of the cubemap. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCUBEMAP_FACE_POSITIVE_Y']/*\"/>\t\n            <msdn-id>bb172528</msdn-id>\t\n            <unmanaged>D3DCUBEMAP_FACE_POSITIVE_Y</unmanaged>\t\n            <unmanaged-short>D3DCUBEMAP_FACE_POSITIVE_Y</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.CubeMapFace.NegativeY\">\n            <summary>\t\n            <dd> <p>Negative y-face of the cubemap. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCUBEMAP_FACE_NEGATIVE_Y']/*\"/>\t\n            <msdn-id>bb172528</msdn-id>\t\n            <unmanaged>D3DCUBEMAP_FACE_NEGATIVE_Y</unmanaged>\t\n            <unmanaged-short>D3DCUBEMAP_FACE_NEGATIVE_Y</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.CubeMapFace.PositiveZ\">\n            <summary>\t\n            <dd> <p>Positive z-face of the cubemap. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCUBEMAP_FACE_POSITIVE_Z']/*\"/>\t\n            <msdn-id>bb172528</msdn-id>\t\n            <unmanaged>D3DCUBEMAP_FACE_POSITIVE_Z</unmanaged>\t\n            <unmanaged-short>D3DCUBEMAP_FACE_POSITIVE_Z</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.CubeMapFace.NegativeZ\">\n            <summary>\t\n            <dd> <p>Negative z-face of the cubemap. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCUBEMAP_FACE_NEGATIVE_Z']/*\"/>\t\n            <msdn-id>bb172528</msdn-id>\t\n            <unmanaged>D3DCUBEMAP_FACE_NEGATIVE_Z</unmanaged>\t\n            <unmanaged-short>D3DCUBEMAP_FACE_NEGATIVE_Z</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.Cull\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCULL']/*\"/>\t\n            <unmanaged>D3DCULL</unmanaged>\t\n            <unmanaged-short>D3DCULL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Cull.None\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCULL_NONE']/*\"/>\t\n            <unmanaged>D3DCULL_NONE</unmanaged>\t\n            <unmanaged-short>D3DCULL_NONE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Cull.Clockwise\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCULL_CW']/*\"/>\t\n            <unmanaged>D3DCULL_CW</unmanaged>\t\n            <unmanaged-short>D3DCULL_CW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Cull.Counterclockwise\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCULL_CCW']/*\"/>\t\n            <unmanaged>D3DCULL_CCW</unmanaged>\t\n            <unmanaged-short>D3DCULL_CCW</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.CursorCaps\">\n            <summary>\t\n            <p>Driver cursor capability flags.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCURSORCAPS']/*\"/>\t\n            <msdn-id>bb172530</msdn-id>\t\n            <unmanaged>D3DCURSORCAPS</unmanaged>\t\n            <unmanaged-short>D3DCURSORCAPS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.CursorCaps.Color\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCURSORCAPS_COLOR']/*\"/>\t\n            <unmanaged>D3DCURSORCAPS_COLOR</unmanaged>\t\n            <unmanaged-short>D3DCURSORCAPS_COLOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.CursorCaps.LowResolution\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCURSORCAPS_LOWRES']/*\"/>\t\n            <unmanaged>D3DCURSORCAPS_LOWRES</unmanaged>\t\n            <unmanaged-short>D3DCURSORCAPS_LOWRES</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.DebugMonitorTokens\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDEBUGMONITORTOKENS']/*\"/>\t\n            <unmanaged>D3DDEBUGMONITORTOKENS</unmanaged>\t\n            <unmanaged-short>D3DDEBUGMONITORTOKENS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DebugMonitorTokens.Enable\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDMT_ENABLE']/*\"/>\t\n            <unmanaged>D3DDMT_ENABLE</unmanaged>\t\n            <unmanaged-short>D3DDMT_ENABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DebugMonitorTokens.Disable\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDMT_DISABLE']/*\"/>\t\n            <unmanaged>D3DDMT_DISABLE</unmanaged>\t\n            <unmanaged-short>D3DDMT_DISABLE</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.DeclarationMethod\">\n            <summary>\t\n            <p>Defines the vertex declaration method which is a predefined operation performed by the tessellator (or any procedural geometry routine on the vertex data during tessellation).</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The tessellator looks at the method to determine what data to calculate from the vertex data during tessellation. Mesh data should use the default value. Patches can use any of the other implemented types. </p><p>Vertex data is declared with an array of <strong><see cref=\"T:SharpDX.Direct3D9.VertexElement\"/></strong> structures. Each element in the array contains a vertex declaration method.</p><p>In addition to using <see cref=\"F:SharpDX.Direct3D9.DeclarationMethod.Default\"/>, a normal mesh can use <see cref=\"F:SharpDX.Direct3D9.DeclarationMethod.Lookup\"/> and <see cref=\"F:SharpDX.Direct3D9.DeclarationMethod.LookupPresampled\"/> methods when N-patches are enabled. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDECLMETHOD']/*\"/>\t\n            <msdn-id>bb172532</msdn-id>\t\n            <unmanaged>D3DDECLMETHOD</unmanaged>\t\n            <unmanaged-short>D3DDECLMETHOD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DeclarationMethod.Default\">\n            <summary>\t\n            <dd> <p>Default value. The tessellator copies the vertex data (spline data for patches) as is, with no additional calculations. When the tessellator is used, this element is interpolated. Otherwise vertex data is copied into the input register. The input and output type can be any value, but are always the same type.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDECLMETHOD_DEFAULT']/*\"/>\t\n            <msdn-id>bb172532</msdn-id>\t\n            <unmanaged>D3DDECLMETHOD_DEFAULT</unmanaged>\t\n            <unmanaged-short>D3DDECLMETHOD_DEFAULT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DeclarationMethod.PartialU\">\n            <summary>\t\n            <dd> <p>Computes the tangent at a point on the rectangle or triangle patch in the U direction. The input type can be one of the following:\t\n            </p> <ul> <li><see cref=\"F:SharpDX.Direct3D9.DeclarationType.Color\"/></li> <li><see cref=\"F:SharpDX.Direct3D9.DeclarationType.Float3\"/></li> <li><see cref=\"F:SharpDX.Direct3D9.DeclarationType.Float4\"/></li> <li><see cref=\"F:SharpDX.Direct3D9.DeclarationType.Short4\"/></li> <li><see cref=\"F:SharpDX.Direct3D9.DeclarationType.Ubyte4\"/></li> </ul> <p> The output type is always <see cref=\"F:SharpDX.Direct3D9.DeclarationType.Float3\"/>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDECLMETHOD_PARTIALU']/*\"/>\t\n            <msdn-id>bb172532</msdn-id>\t\n            <unmanaged>D3DDECLMETHOD_PARTIALU</unmanaged>\t\n            <unmanaged-short>D3DDECLMETHOD_PARTIALU</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DeclarationMethod.PartialV\">\n            <summary>\t\n            <dd> <p>Computes the tangent at a point on the rectangle or triangle patch in the V direction. The input type can be one of the following:\t\n            </p> <ul> <li><see cref=\"F:SharpDX.Direct3D9.DeclarationType.Color\"/></li> <li><see cref=\"F:SharpDX.Direct3D9.DeclarationType.Float3\"/></li> <li><see cref=\"F:SharpDX.Direct3D9.DeclarationType.Float4\"/></li> <li><see cref=\"F:SharpDX.Direct3D9.DeclarationType.Short4\"/></li> <li><see cref=\"F:SharpDX.Direct3D9.DeclarationType.Ubyte4\"/></li> </ul> <p> The output type is always <see cref=\"F:SharpDX.Direct3D9.DeclarationType.Float3\"/>. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDECLMETHOD_PARTIALV']/*\"/>\t\n            <msdn-id>bb172532</msdn-id>\t\n            <unmanaged>D3DDECLMETHOD_PARTIALV</unmanaged>\t\n            <unmanaged-short>D3DDECLMETHOD_PARTIALV</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DeclarationMethod.CrossUV\">\n            <summary>\t\n            <dd> <p>Computes the normal at a point on the rectangle or triangle patch by taking the cross product of two tangents. The input type can be one of the following:\t\n            </p> <ul> <li><see cref=\"F:SharpDX.Direct3D9.DeclarationType.Color\"/></li> <li><see cref=\"F:SharpDX.Direct3D9.DeclarationType.Float3\"/></li> <li><see cref=\"F:SharpDX.Direct3D9.DeclarationType.Float4\"/></li> <li><see cref=\"F:SharpDX.Direct3D9.DeclarationType.Short4\"/></li> <li><see cref=\"F:SharpDX.Direct3D9.DeclarationType.Ubyte4\"/></li> </ul> <p> The output type is always <see cref=\"F:SharpDX.Direct3D9.DeclarationType.Float3\"/>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDECLMETHOD_CROSSUV']/*\"/>\t\n            <msdn-id>bb172532</msdn-id>\t\n            <unmanaged>D3DDECLMETHOD_CROSSUV</unmanaged>\t\n            <unmanaged-short>D3DDECLMETHOD_CROSSUV</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DeclarationMethod.UV\">\n            <summary>\t\n            <dd> <p>Copy out the U, V values at a point on the rectangle or triangle patch. This results in a 2D float. The input type must be set to <see cref=\"F:SharpDX.Direct3D9.DeclarationType.Unused\"/>. The output data type is always <see cref=\"F:SharpDX.Direct3D9.DeclarationType.Float2\"/>. The input stream and offset are also unused (but must be set to 0).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDECLMETHOD_UV']/*\"/>\t\n            <msdn-id>bb172532</msdn-id>\t\n            <unmanaged>D3DDECLMETHOD_UV</unmanaged>\t\n            <unmanaged-short>D3DDECLMETHOD_UV</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DeclarationMethod.Lookup\">\n            <summary>\t\n            <dd> <p>Look up a displacement map. The input type can be one of the following:\t\n            </p> <ul> <li><see cref=\"F:SharpDX.Direct3D9.DeclarationType.Float2\"/></li> <li><see cref=\"F:SharpDX.Direct3D9.DeclarationType.Float3\"/></li> <li><see cref=\"F:SharpDX.Direct3D9.DeclarationType.Float4\"/></li> </ul> <p> Only the .x and .y components are used for the texture map lookup. The output type is always <see cref=\"F:SharpDX.Direct3D9.DeclarationType.Float1\"/>. The device must support displacement mapping. For more information about displacement mapping, see Displacement Mapping (Direct3D 9). This constant is supported only by the programmable pipeline on N-patch data, if N-patches are enabled. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDECLMETHOD_LOOKUP']/*\"/>\t\n            <msdn-id>bb172532</msdn-id>\t\n            <unmanaged>D3DDECLMETHOD_LOOKUP</unmanaged>\t\n            <unmanaged-short>D3DDECLMETHOD_LOOKUP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DeclarationMethod.LookupPresampled\">\n            <summary>\t\n            <dd> <p>Look up a presampled displacement map. The input type must be set to <see cref=\"F:SharpDX.Direct3D9.DeclarationType.Unused\"/>; the stream index and the stream offset must be set to 0. The output type for this operation is always <see cref=\"F:SharpDX.Direct3D9.DeclarationType.Float1\"/>. The device must support displacement mapping. For more information about displacement mapping, see Displacement Mapping (Direct3D 9). This constant is supported only by the programmable pipeline on N-patch data, if N-patches are enabled. This method can be used only with <see cref=\"F:SharpDX.Direct3D9.DeclarationUsage.Sample\"/>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDECLMETHOD_LOOKUPPRESAMPLED']/*\"/>\t\n            <msdn-id>bb172532</msdn-id>\t\n            <unmanaged>D3DDECLMETHOD_LOOKUPPRESAMPLED</unmanaged>\t\n            <unmanaged-short>D3DDECLMETHOD_LOOKUPPRESAMPLED</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.DeclarationType\">\n            <summary>\t\n            <p>Defines a vertex declaration data type.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Vertex data is declared with an array of <strong><see cref=\"T:SharpDX.Direct3D9.VertexElement\"/></strong> structures. Each element in the array contains a vertex declaration data type.</p><p>Use the DirectX Caps Viewer Tool tool to see which types are supported on your device.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDECLTYPE']/*\"/>\t\n            <msdn-id>bb172533</msdn-id>\t\n            <unmanaged>D3DDECLTYPE</unmanaged>\t\n            <unmanaged-short>D3DDECLTYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DeclarationType.Float1\">\n            <summary>\t\n            <dd> <p>One-component float expanded to (float, 0, 0, 1).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDECLTYPE_FLOAT1']/*\"/>\t\n            <msdn-id>bb172533</msdn-id>\t\n            <unmanaged>D3DDECLTYPE_FLOAT1</unmanaged>\t\n            <unmanaged-short>D3DDECLTYPE_FLOAT1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DeclarationType.Float2\">\n            <summary>\t\n            <dd> <p>Two-component float expanded to (float, float, 0, 1).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDECLTYPE_FLOAT2']/*\"/>\t\n            <msdn-id>bb172533</msdn-id>\t\n            <unmanaged>D3DDECLTYPE_FLOAT2</unmanaged>\t\n            <unmanaged-short>D3DDECLTYPE_FLOAT2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DeclarationType.Float3\">\n            <summary>\t\n            <dd> <p>Three-component float expanded to (float, float, float, 1).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDECLTYPE_FLOAT3']/*\"/>\t\n            <msdn-id>bb172533</msdn-id>\t\n            <unmanaged>D3DDECLTYPE_FLOAT3</unmanaged>\t\n            <unmanaged-short>D3DDECLTYPE_FLOAT3</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DeclarationType.Float4\">\n            <summary>\t\n            <dd> <p>Four-component float expanded to (float, float, float, float).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDECLTYPE_FLOAT4']/*\"/>\t\n            <msdn-id>bb172533</msdn-id>\t\n            <unmanaged>D3DDECLTYPE_FLOAT4</unmanaged>\t\n            <unmanaged-short>D3DDECLTYPE_FLOAT4</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DeclarationType.Color\">\n            <summary>\t\n            <dd> <p>Four-component, packed, unsigned bytes mapped to 0 to 1 range. Input is a <strong><see cref=\"T:SharpDX.ColorBGRA\"/></strong> and is expanded to RGBA order.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDECLTYPE_D3DCOLOR']/*\"/>\t\n            <msdn-id>bb172533</msdn-id>\t\n            <unmanaged>D3DDECLTYPE_D3DCOLOR</unmanaged>\t\n            <unmanaged-short>D3DDECLTYPE_D3DCOLOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DeclarationType.Ubyte4\">\n            <summary>\t\n            <dd> <p>Four-component, unsigned byte.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDECLTYPE_UBYTE4']/*\"/>\t\n            <msdn-id>bb172533</msdn-id>\t\n            <unmanaged>D3DDECLTYPE_UBYTE4</unmanaged>\t\n            <unmanaged-short>D3DDECLTYPE_UBYTE4</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DeclarationType.Short2\">\n            <summary>\t\n            <dd> <p>Two-component, signed short expanded to (value, value, 0, 1).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDECLTYPE_SHORT2']/*\"/>\t\n            <msdn-id>bb172533</msdn-id>\t\n            <unmanaged>D3DDECLTYPE_SHORT2</unmanaged>\t\n            <unmanaged-short>D3DDECLTYPE_SHORT2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DeclarationType.Short4\">\n            <summary>\t\n            <dd> <p>Four-component, signed short expanded to (value, value, value, value).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDECLTYPE_SHORT4']/*\"/>\t\n            <msdn-id>bb172533</msdn-id>\t\n            <unmanaged>D3DDECLTYPE_SHORT4</unmanaged>\t\n            <unmanaged-short>D3DDECLTYPE_SHORT4</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DeclarationType.UByte4N\">\n            <summary>\t\n            <dd> <p>Four-component byte with each byte normalized by dividing with 255.0f.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDECLTYPE_UBYTE4N']/*\"/>\t\n            <msdn-id>bb172533</msdn-id>\t\n            <unmanaged>D3DDECLTYPE_UBYTE4N</unmanaged>\t\n            <unmanaged-short>D3DDECLTYPE_UBYTE4N</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DeclarationType.Short2N\">\n            <summary>\t\n            <dd> <p>Normalized, two-component, signed short, expanded to (first short/32767.0, second short/32767.0, 0, 1). </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDECLTYPE_SHORT2N']/*\"/>\t\n            <msdn-id>bb172533</msdn-id>\t\n            <unmanaged>D3DDECLTYPE_SHORT2N</unmanaged>\t\n            <unmanaged-short>D3DDECLTYPE_SHORT2N</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DeclarationType.Short4N\">\n            <summary>\t\n            <dd> <p>Normalized, four-component, signed short, expanded to (first short/32767.0, second short/32767.0, third short/32767.0, fourth short/32767.0). </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDECLTYPE_SHORT4N']/*\"/>\t\n            <msdn-id>bb172533</msdn-id>\t\n            <unmanaged>D3DDECLTYPE_SHORT4N</unmanaged>\t\n            <unmanaged-short>D3DDECLTYPE_SHORT4N</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DeclarationType.UShort2N\">\n            <summary>\t\n            <dd> <p>Normalized, two-component, unsigned short, expanded to (first short/65535.0, short short/65535.0, 0, 1). </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDECLTYPE_USHORT2N']/*\"/>\t\n            <msdn-id>bb172533</msdn-id>\t\n            <unmanaged>D3DDECLTYPE_USHORT2N</unmanaged>\t\n            <unmanaged-short>D3DDECLTYPE_USHORT2N</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DeclarationType.UShort4N\">\n            <summary>\t\n            <dd> <p>Normalized, four-component, unsigned short, expanded to (first short/65535.0, second short/65535.0, third short/65535.0, fourth short/65535.0). </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDECLTYPE_USHORT4N']/*\"/>\t\n            <msdn-id>bb172533</msdn-id>\t\n            <unmanaged>D3DDECLTYPE_USHORT4N</unmanaged>\t\n            <unmanaged-short>D3DDECLTYPE_USHORT4N</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DeclarationType.UDec3\">\n            <summary>\t\n            <dd> <p>Three-component, unsigned, 10 10 10 format expanded to (value, value, value, 1).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDECLTYPE_UDEC3']/*\"/>\t\n            <msdn-id>bb172533</msdn-id>\t\n            <unmanaged>D3DDECLTYPE_UDEC3</unmanaged>\t\n            <unmanaged-short>D3DDECLTYPE_UDEC3</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DeclarationType.Dec3N\">\n            <summary>\t\n            <dd> <p>Three-component, signed, 10 10 10 format normalized and expanded to (v[0]/511.0, v[1]/511.0, v[2]/511.0, 1). </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDECLTYPE_DEC3N']/*\"/>\t\n            <msdn-id>bb172533</msdn-id>\t\n            <unmanaged>D3DDECLTYPE_DEC3N</unmanaged>\t\n            <unmanaged-short>D3DDECLTYPE_DEC3N</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DeclarationType.HalfTwo\">\n            <summary>\t\n            <dd> <p>Two-component, 16-bit, floating point expanded to (value, value, 0, 1).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDECLTYPE_FLOAT16_2']/*\"/>\t\n            <msdn-id>bb172533</msdn-id>\t\n            <unmanaged>D3DDECLTYPE_FLOAT16_2</unmanaged>\t\n            <unmanaged-short>D3DDECLTYPE_FLOAT16_2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DeclarationType.HalfFour\">\n            <summary>\t\n            <dd> <p>Four-component, 16-bit, floating point expanded to (value, value, value, value). </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDECLTYPE_FLOAT16_4']/*\"/>\t\n            <msdn-id>bb172533</msdn-id>\t\n            <unmanaged>D3DDECLTYPE_FLOAT16_4</unmanaged>\t\n            <unmanaged-short>D3DDECLTYPE_FLOAT16_4</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DeclarationType.Unused\">\n            <summary>\t\n            <dd> <p>Type field in the declaration is unused. This is designed for use with <see cref=\"F:SharpDX.Direct3D9.DeclarationMethod.UV\"/>  and <see cref=\"F:SharpDX.Direct3D9.DeclarationMethod.LookupPresampled\"/>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDECLTYPE_UNUSED']/*\"/>\t\n            <msdn-id>bb172533</msdn-id>\t\n            <unmanaged>D3DDECLTYPE_UNUSED</unmanaged>\t\n            <unmanaged-short>D3DDECLTYPE_UNUSED</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.DeclarationTypeCaps\">\n            <summary>\t\n            <p>Constants describing the vertex data types supported by a device.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDTCAPS']/*\"/>\t\n            <msdn-id>bb172552</msdn-id>\t\n            <unmanaged>D3DDTCAPS</unmanaged>\t\n            <unmanaged-short>D3DDTCAPS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DeclarationTypeCaps.UByte4\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDTCAPS_UBYTE4']/*\"/>\t\n            <unmanaged>D3DDTCAPS_UBYTE4</unmanaged>\t\n            <unmanaged-short>D3DDTCAPS_UBYTE4</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DeclarationTypeCaps.UByte4N\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDTCAPS_UBYTE4N']/*\"/>\t\n            <unmanaged>D3DDTCAPS_UBYTE4N</unmanaged>\t\n            <unmanaged-short>D3DDTCAPS_UBYTE4N</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DeclarationTypeCaps.Short2N\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDTCAPS_SHORT2N']/*\"/>\t\n            <unmanaged>D3DDTCAPS_SHORT2N</unmanaged>\t\n            <unmanaged-short>D3DDTCAPS_SHORT2N</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DeclarationTypeCaps.Short4N\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDTCAPS_SHORT4N']/*\"/>\t\n            <unmanaged>D3DDTCAPS_SHORT4N</unmanaged>\t\n            <unmanaged-short>D3DDTCAPS_SHORT4N</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DeclarationTypeCaps.UShort2N\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDTCAPS_USHORT2N']/*\"/>\t\n            <unmanaged>D3DDTCAPS_USHORT2N</unmanaged>\t\n            <unmanaged-short>D3DDTCAPS_USHORT2N</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DeclarationTypeCaps.UShort4N\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDTCAPS_USHORT4N']/*\"/>\t\n            <unmanaged>D3DDTCAPS_USHORT4N</unmanaged>\t\n            <unmanaged-short>D3DDTCAPS_USHORT4N</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DeclarationTypeCaps.UDec3\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDTCAPS_UDEC3']/*\"/>\t\n            <unmanaged>D3DDTCAPS_UDEC3</unmanaged>\t\n            <unmanaged-short>D3DDTCAPS_UDEC3</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DeclarationTypeCaps.Dec3N\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDTCAPS_DEC3N']/*\"/>\t\n            <unmanaged>D3DDTCAPS_DEC3N</unmanaged>\t\n            <unmanaged-short>D3DDTCAPS_DEC3N</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DeclarationTypeCaps.HalfTwo\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDTCAPS_FLOAT16_2']/*\"/>\t\n            <unmanaged>D3DDTCAPS_FLOAT16_2</unmanaged>\t\n            <unmanaged-short>D3DDTCAPS_FLOAT16_2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DeclarationTypeCaps.HalfFour\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDTCAPS_FLOAT16_4']/*\"/>\t\n            <unmanaged>D3DDTCAPS_FLOAT16_4</unmanaged>\t\n            <unmanaged-short>D3DDTCAPS_FLOAT16_4</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.DeclarationUsage\">\n            <summary>\t\n            <p>Identifies the intended use of vertex data.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Vertex data is declared with an array of <strong><see cref=\"T:SharpDX.Direct3D9.VertexElement\"/></strong> structures. Each element in the array contains a usage type.</p><p>For more information about vertex declarations, see Vertex Declaration (Direct3D 9).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDECLUSAGE']/*\"/>\t\n            <msdn-id>bb172534</msdn-id>\t\n            <unmanaged>D3DDECLUSAGE</unmanaged>\t\n            <unmanaged-short>D3DDECLUSAGE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DeclarationUsage.Position\">\n            <summary>\t\n            <dd> <p>Position data ranging from (-1,-1) to (1,1). Use <see cref=\"F:SharpDX.Direct3D9.DeclarationUsage.Position\"/> with a usage index of 0 to specify untransformed position for fixed function vertex processing and the n-patch tessellator. Use <see cref=\"F:SharpDX.Direct3D9.DeclarationUsage.Position\"/> with a usage index of 1 to specify untransformed position in the fixed function vertex shader for vertex tweening. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDECLUSAGE_POSITION']/*\"/>\t\n            <msdn-id>bb172534</msdn-id>\t\n            <unmanaged>D3DDECLUSAGE_POSITION</unmanaged>\t\n            <unmanaged-short>D3DDECLUSAGE_POSITION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DeclarationUsage.BlendWeight\">\n            <summary>\t\n            <dd> <p>Blending weight data. Use <see cref=\"F:SharpDX.Direct3D9.DeclarationUsage.BlendWeight\"/> with a usage index of 0 to specify the blend weights used in indexed and nonindexed vertex blending.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDECLUSAGE_BLENDWEIGHT']/*\"/>\t\n            <msdn-id>bb172534</msdn-id>\t\n            <unmanaged>D3DDECLUSAGE_BLENDWEIGHT</unmanaged>\t\n            <unmanaged-short>D3DDECLUSAGE_BLENDWEIGHT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DeclarationUsage.BlendIndices\">\n            <summary>\t\n            <dd> <p>Blending indices data. Use <see cref=\"F:SharpDX.Direct3D9.DeclarationUsage.BlendIndices\"/> with a usage index of 0 to specify matrix indices for indexed paletted skinning.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDECLUSAGE_BLENDINDICES']/*\"/>\t\n            <msdn-id>bb172534</msdn-id>\t\n            <unmanaged>D3DDECLUSAGE_BLENDINDICES</unmanaged>\t\n            <unmanaged-short>D3DDECLUSAGE_BLENDINDICES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DeclarationUsage.Normal\">\n            <summary>\t\n            <dd> <p>Vertex normal data. Use <see cref=\"F:SharpDX.Direct3D9.DeclarationUsage.Normal\"/> with a usage index of 0 to specify vertex normals for fixed function vertex processing and the n-patch tessellator. Use <see cref=\"F:SharpDX.Direct3D9.DeclarationUsage.Normal\"/> with a usage index of 1 to specify vertex normals for fixed function vertex processing for vertex tweening.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDECLUSAGE_NORMAL']/*\"/>\t\n            <msdn-id>bb172534</msdn-id>\t\n            <unmanaged>D3DDECLUSAGE_NORMAL</unmanaged>\t\n            <unmanaged-short>D3DDECLUSAGE_NORMAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DeclarationUsage.PointSize\">\n            <summary>\t\n            <dd> <p>Point size data. Use <see cref=\"F:SharpDX.Direct3D9.DeclarationUsage.PointSize\"/> with a usage index of 0 to specify the point-size attribute used by the setup engine of the rasterizer to expand a point into a quad for the point-sprite functionality.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDECLUSAGE_PSIZE']/*\"/>\t\n            <msdn-id>bb172534</msdn-id>\t\n            <unmanaged>D3DDECLUSAGE_PSIZE</unmanaged>\t\n            <unmanaged-short>D3DDECLUSAGE_PSIZE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DeclarationUsage.TextureCoordinate\">\n            <summary>\t\n            <dd> <p>Texture coordinate data. Use <see cref=\"F:SharpDX.Direct3D9.DeclarationUsage.TextureCoordinate\"/>, n to specify texture coordinates in fixed function vertex processing and in pixel shaders prior to ps_3_0. These can be used to pass user defined data. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDECLUSAGE_TEXCOORD']/*\"/>\t\n            <msdn-id>bb172534</msdn-id>\t\n            <unmanaged>D3DDECLUSAGE_TEXCOORD</unmanaged>\t\n            <unmanaged-short>D3DDECLUSAGE_TEXCOORD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DeclarationUsage.Tangent\">\n            <summary>\t\n            <dd> <p>Vertex tangent data.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDECLUSAGE_TANGENT']/*\"/>\t\n            <msdn-id>bb172534</msdn-id>\t\n            <unmanaged>D3DDECLUSAGE_TANGENT</unmanaged>\t\n            <unmanaged-short>D3DDECLUSAGE_TANGENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DeclarationUsage.Binormal\">\n            <summary>\t\n            <dd> <p>Vertex binormal data. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDECLUSAGE_BINORMAL']/*\"/>\t\n            <msdn-id>bb172534</msdn-id>\t\n            <unmanaged>D3DDECLUSAGE_BINORMAL</unmanaged>\t\n            <unmanaged-short>D3DDECLUSAGE_BINORMAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DeclarationUsage.TessellateFactor\">\n            <summary>\t\n            <dd> <p>Single positive floating point value. Use <see cref=\"F:SharpDX.Direct3D9.DeclarationUsage.TessellateFactor\"/> with a usage index of 0 to specify a tessellation factor used in the tessellation unit to control the rate of tessellation. For more information about the data type, see <see cref=\"F:SharpDX.Direct3D9.DeclarationType.Float1\"/>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDECLUSAGE_TESSFACTOR']/*\"/>\t\n            <msdn-id>bb172534</msdn-id>\t\n            <unmanaged>D3DDECLUSAGE_TESSFACTOR</unmanaged>\t\n            <unmanaged-short>D3DDECLUSAGE_TESSFACTOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DeclarationUsage.PositionTransformed\">\n            <summary>\t\n            <dd> <p>Vertex data contains transformed position data ranging from (0,0) to (viewport width, viewport height). Use <see cref=\"F:SharpDX.Direct3D9.DeclarationUsage.PositionTransformed\"/> with a usage index of 0 to specify transformed position. When a declaration containing this is set, the pipeline does not perform vertex processing.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDECLUSAGE_POSITIONT']/*\"/>\t\n            <msdn-id>bb172534</msdn-id>\t\n            <unmanaged>D3DDECLUSAGE_POSITIONT</unmanaged>\t\n            <unmanaged-short>D3DDECLUSAGE_POSITIONT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DeclarationUsage.Color\">\n            <summary>\t\n            <dd> <p>Vertex data contains diffuse or specular color. Use <see cref=\"F:SharpDX.Direct3D9.DeclarationUsage.Color\"/> with a usage index of 0 to specify the diffuse color in the fixed function vertex shader and pixel shaders prior to ps_3_0. Use <see cref=\"F:SharpDX.Direct3D9.DeclarationUsage.Color\"/> with a usage index of 1 to specify the specular color in the fixed function vertex shader and pixel shaders prior to ps_3_0.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDECLUSAGE_COLOR']/*\"/>\t\n            <msdn-id>bb172534</msdn-id>\t\n            <unmanaged>D3DDECLUSAGE_COLOR</unmanaged>\t\n            <unmanaged-short>D3DDECLUSAGE_COLOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DeclarationUsage.Fog\">\n            <summary>\t\n            <dd> <p>Vertex data contains fog data. Use <see cref=\"F:SharpDX.Direct3D9.DeclarationUsage.Fog\"/> with a usage index of 0 to specify a fog blend value used after pixel shading finishes. This applies to pixel shaders prior to version ps_3_0. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDECLUSAGE_FOG']/*\"/>\t\n            <msdn-id>bb172534</msdn-id>\t\n            <unmanaged>D3DDECLUSAGE_FOG</unmanaged>\t\n            <unmanaged-short>D3DDECLUSAGE_FOG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DeclarationUsage.Depth\">\n            <summary>\t\n            <dd> <p>Vertex data contains depth data.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDECLUSAGE_DEPTH']/*\"/>\t\n            <msdn-id>bb172534</msdn-id>\t\n            <unmanaged>D3DDECLUSAGE_DEPTH</unmanaged>\t\n            <unmanaged-short>D3DDECLUSAGE_DEPTH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DeclarationUsage.Sample\">\n            <summary>\t\n            <dd> <p>Vertex data contains sampler data. Use <see cref=\"F:SharpDX.Direct3D9.DeclarationUsage.Sample\"/> with a usage index of 0 to specify the displacement value to look up. It can be used only with D3DDECLUSAGE_LOOKUPPRESAMPLED or D3DDECLUSAGE_LOOKUP.  </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDECLUSAGE_SAMPLE']/*\"/>\t\n            <msdn-id>bb172534</msdn-id>\t\n            <unmanaged>D3DDECLUSAGE_SAMPLE</unmanaged>\t\n            <unmanaged-short>D3DDECLUSAGE_SAMPLE</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.Degree\">\n            <summary>\t\n            <p>Defines the degree of the variables in the equation that describes a curve.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The values in this enumeration are used to describe the curves used by rectangle and triangle patches. For more information, see <see cref=\"F:SharpDX.Direct3D9.RenderState.CullMode\"/>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDEGREETYPE']/*\"/>\t\n            <msdn-id>bb172536</msdn-id>\t\n            <unmanaged>D3DDEGREETYPE</unmanaged>\t\n            <unmanaged-short>D3DDEGREETYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Degree.Linear\">\n            <summary>\t\n            <dd> <p>Curve is described by variables of first order.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDEGREE_LINEAR']/*\"/>\t\n            <msdn-id>bb172536</msdn-id>\t\n            <unmanaged>D3DDEGREE_LINEAR</unmanaged>\t\n            <unmanaged-short>D3DDEGREE_LINEAR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Degree.Quadratic\">\n            <summary>\t\n            <dd> <p>Curve is described by variables of second order.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDEGREE_QUADRATIC']/*\"/>\t\n            <msdn-id>bb172536</msdn-id>\t\n            <unmanaged>D3DDEGREE_QUADRATIC</unmanaged>\t\n            <unmanaged-short>D3DDEGREE_QUADRATIC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Degree.Cubic\">\n            <summary>\t\n            <dd> <p>Curve is described by variables of third order.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDEGREE_CUBIC']/*\"/>\t\n            <msdn-id>bb172536</msdn-id>\t\n            <unmanaged>D3DDEGREE_CUBIC</unmanaged>\t\n            <unmanaged-short>D3DDEGREE_CUBIC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Degree.Quintic\">\n            <summary>\t\n            <dd> <p>Curve is described by variables of fourth order.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDEGREE_QUINTIC']/*\"/>\t\n            <msdn-id>bb172536</msdn-id>\t\n            <unmanaged>D3DDEGREE_QUINTIC</unmanaged>\t\n            <unmanaged-short>D3DDEGREE_QUINTIC</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.DeviceCaps\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDEVCAPS']/*\"/>\t\n            <unmanaged>D3DDEVCAPS</unmanaged>\t\n            <unmanaged-short>D3DDEVCAPS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DeviceCaps.ExecuteSystemMemory\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDEVCAPS_EXECUTESYSTEMMEMORY']/*\"/>\t\n            <unmanaged>D3DDEVCAPS_EXECUTESYSTEMMEMORY</unmanaged>\t\n            <unmanaged-short>D3DDEVCAPS_EXECUTESYSTEMMEMORY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DeviceCaps.ExecuteVideoMemory\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDEVCAPS_EXECUTEVIDEOMEMORY']/*\"/>\t\n            <unmanaged>D3DDEVCAPS_EXECUTEVIDEOMEMORY</unmanaged>\t\n            <unmanaged-short>D3DDEVCAPS_EXECUTEVIDEOMEMORY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DeviceCaps.TLVertexSystemMemory\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDEVCAPS_TLVERTEXSYSTEMMEMORY']/*\"/>\t\n            <unmanaged>D3DDEVCAPS_TLVERTEXSYSTEMMEMORY</unmanaged>\t\n            <unmanaged-short>D3DDEVCAPS_TLVERTEXSYSTEMMEMORY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DeviceCaps.TLVertexVideoMemory\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDEVCAPS_TLVERTEXVIDEOMEMORY']/*\"/>\t\n            <unmanaged>D3DDEVCAPS_TLVERTEXVIDEOMEMORY</unmanaged>\t\n            <unmanaged-short>D3DDEVCAPS_TLVERTEXVIDEOMEMORY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DeviceCaps.TextureSystemMemory\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDEVCAPS_TEXTURESYSTEMMEMORY']/*\"/>\t\n            <unmanaged>D3DDEVCAPS_TEXTURESYSTEMMEMORY</unmanaged>\t\n            <unmanaged-short>D3DDEVCAPS_TEXTURESYSTEMMEMORY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DeviceCaps.TextureVideoMemory\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDEVCAPS_TEXTUREVIDEOMEMORY']/*\"/>\t\n            <unmanaged>D3DDEVCAPS_TEXTUREVIDEOMEMORY</unmanaged>\t\n            <unmanaged-short>D3DDEVCAPS_TEXTUREVIDEOMEMORY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DeviceCaps.DrawPrimTLVertex\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDEVCAPS_DRAWPRIMTLVERTEX']/*\"/>\t\n            <unmanaged>D3DDEVCAPS_DRAWPRIMTLVERTEX</unmanaged>\t\n            <unmanaged-short>D3DDEVCAPS_DRAWPRIMTLVERTEX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DeviceCaps.CanRenderAfterFlip\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDEVCAPS_CANRENDERAFTERFLIP']/*\"/>\t\n            <unmanaged>D3DDEVCAPS_CANRENDERAFTERFLIP</unmanaged>\t\n            <unmanaged-short>D3DDEVCAPS_CANRENDERAFTERFLIP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DeviceCaps.TextureNonLocalVideoMemory\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDEVCAPS_TEXTURENONLOCALVIDMEM']/*\"/>\t\n            <unmanaged>D3DDEVCAPS_TEXTURENONLOCALVIDMEM</unmanaged>\t\n            <unmanaged-short>D3DDEVCAPS_TEXTURENONLOCALVIDMEM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DeviceCaps.DrawPrimitives2\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDEVCAPS_DRAWPRIMITIVES2']/*\"/>\t\n            <unmanaged>D3DDEVCAPS_DRAWPRIMITIVES2</unmanaged>\t\n            <unmanaged-short>D3DDEVCAPS_DRAWPRIMITIVES2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DeviceCaps.SeparateTextureMemory\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDEVCAPS_SEPARATETEXTUREMEMORIES']/*\"/>\t\n            <unmanaged>D3DDEVCAPS_SEPARATETEXTUREMEMORIES</unmanaged>\t\n            <unmanaged-short>D3DDEVCAPS_SEPARATETEXTUREMEMORIES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DeviceCaps.DrawPrimitives2Extended\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDEVCAPS_DRAWPRIMITIVES2EX']/*\"/>\t\n            <unmanaged>D3DDEVCAPS_DRAWPRIMITIVES2EX</unmanaged>\t\n            <unmanaged-short>D3DDEVCAPS_DRAWPRIMITIVES2EX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DeviceCaps.HWTransformAndLight\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDEVCAPS_HWTRANSFORMANDLIGHT']/*\"/>\t\n            <unmanaged>D3DDEVCAPS_HWTRANSFORMANDLIGHT</unmanaged>\t\n            <unmanaged-short>D3DDEVCAPS_HWTRANSFORMANDLIGHT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DeviceCaps.CanBlitSysToNonLocal\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDEVCAPS_CANBLTSYSTONONLOCAL']/*\"/>\t\n            <unmanaged>D3DDEVCAPS_CANBLTSYSTONONLOCAL</unmanaged>\t\n            <unmanaged-short>D3DDEVCAPS_CANBLTSYSTONONLOCAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DeviceCaps.HWRasterization\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDEVCAPS_HWRASTERIZATION']/*\"/>\t\n            <unmanaged>D3DDEVCAPS_HWRASTERIZATION</unmanaged>\t\n            <unmanaged-short>D3DDEVCAPS_HWRASTERIZATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DeviceCaps.PureDevice\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDEVCAPS_PUREDEVICE']/*\"/>\t\n            <unmanaged>D3DDEVCAPS_PUREDEVICE</unmanaged>\t\n            <unmanaged-short>D3DDEVCAPS_PUREDEVICE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DeviceCaps.QuinticRTPatches\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDEVCAPS_QUINTICRTPATCHES']/*\"/>\t\n            <unmanaged>D3DDEVCAPS_QUINTICRTPATCHES</unmanaged>\t\n            <unmanaged-short>D3DDEVCAPS_QUINTICRTPATCHES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DeviceCaps.RTPatches\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDEVCAPS_RTPATCHES']/*\"/>\t\n            <unmanaged>D3DDEVCAPS_RTPATCHES</unmanaged>\t\n            <unmanaged-short>D3DDEVCAPS_RTPATCHES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DeviceCaps.RTPatchHandleZero\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDEVCAPS_RTPATCHHANDLEZERO']/*\"/>\t\n            <unmanaged>D3DDEVCAPS_RTPATCHHANDLEZERO</unmanaged>\t\n            <unmanaged-short>D3DDEVCAPS_RTPATCHHANDLEZERO</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DeviceCaps.NPatches\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDEVCAPS_NPATCHES']/*\"/>\t\n            <unmanaged>D3DDEVCAPS_NPATCHES</unmanaged>\t\n            <unmanaged-short>D3DDEVCAPS_NPATCHES</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.DeviceCaps2\">\n            <summary>\t\n            <p><see cref=\"T:SharpDX.Direct3D9.DeviceCaps2\"/> driver capability flags.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDEVCAPS2']/*\"/>\t\n            <msdn-id>bb172537</msdn-id>\t\n            <unmanaged>D3DDEVCAPS2</unmanaged>\t\n            <unmanaged-short>D3DDEVCAPS2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DeviceCaps2.StreamOffset\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDEVCAPS2_STREAMOFFSET']/*\"/>\t\n            <unmanaged>D3DDEVCAPS2_STREAMOFFSET</unmanaged>\t\n            <unmanaged-short>D3DDEVCAPS2_STREAMOFFSET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DeviceCaps2.DMapNPatch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDEVCAPS2_DMAPNPATCH']/*\"/>\t\n            <unmanaged>D3DDEVCAPS2_DMAPNPATCH</unmanaged>\t\n            <unmanaged-short>D3DDEVCAPS2_DMAPNPATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DeviceCaps2.AdaptiveTessRTPatch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDEVCAPS2_ADAPTIVETESSRTPATCH']/*\"/>\t\n            <unmanaged>D3DDEVCAPS2_ADAPTIVETESSRTPATCH</unmanaged>\t\n            <unmanaged-short>D3DDEVCAPS2_ADAPTIVETESSRTPATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DeviceCaps2.AdaptiveTessNPatch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDEVCAPS2_ADAPTIVETESSNPATCH']/*\"/>\t\n            <unmanaged>D3DDEVCAPS2_ADAPTIVETESSNPATCH</unmanaged>\t\n            <unmanaged-short>D3DDEVCAPS2_ADAPTIVETESSNPATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DeviceCaps2.CanStretchRectFromTextures\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDEVCAPS2_CAN_STRETCHRECT_FROM_TEXTURES']/*\"/>\t\n            <unmanaged>D3DDEVCAPS2_CAN_STRETCHRECT_FROM_TEXTURES</unmanaged>\t\n            <unmanaged-short>D3DDEVCAPS2_CAN_STRETCHRECT_FROM_TEXTURES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DeviceCaps2.PresampledMapNPatch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDEVCAPS2_PRESAMPLEDDMAPNPATCH']/*\"/>\t\n            <unmanaged>D3DDEVCAPS2_PRESAMPLEDDMAPNPATCH</unmanaged>\t\n            <unmanaged-short>D3DDEVCAPS2_PRESAMPLEDDMAPNPATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DeviceCaps2.VertexElementsCanShareStreamOffset\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDEVCAPS2_VERTEXELEMENTSCANSHARESTREAMOFFSET']/*\"/>\t\n            <unmanaged>D3DDEVCAPS2_VERTEXELEMENTSCANSHARESTREAMOFFSET</unmanaged>\t\n            <unmanaged-short>D3DDEVCAPS2_VERTEXELEMENTSCANSHARESTREAMOFFSET</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.DeviceType\">\n            <summary>\t\n            <p>Defines device types.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>All methods of the <strong><see cref=\"T:SharpDX.Direct3D9.Direct3D\"/></strong> interface that take a <strong><see cref=\"T:SharpDX.Direct3D9.DeviceType\"/></strong> device type will fail if <see cref=\"F:SharpDX.Direct3D9.DeviceType.NullReference\"/> is specified. To use these methods, substitute <see cref=\"F:SharpDX.Direct3D9.DeviceType.Reference\"/> in the method call.</p><p>A <see cref=\"F:SharpDX.Direct3D9.DeviceType.Reference\"/> device should be created in <see cref=\"F:SharpDX.Direct3D9.Pool.Scratch\"/> memory, unless vertex and index buffers are required. To support vertex and index buffers, create the device in <see cref=\"F:SharpDX.Direct3D9.Pool.SystemMemory\"/> memory.</p><p>If D3dref9.dll is installed, Direct3D will use the reference rasterizer to create a <see cref=\"F:SharpDX.Direct3D9.DeviceType.Reference\"/> device type, even if <see cref=\"F:SharpDX.Direct3D9.DeviceType.NullReference\"/> is specified. If D3dref9.dll is not available and <see cref=\"F:SharpDX.Direct3D9.DeviceType.NullReference\"/> is specified, Direct3D will neither render nor present the scene.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDEVTYPE']/*\"/>\t\n            <msdn-id>bb172547</msdn-id>\t\n            <unmanaged>D3DDEVTYPE</unmanaged>\t\n            <unmanaged-short>D3DDEVTYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DeviceType.Hardware\">\n            <summary>\t\n            <dd> <p>Hardware rasterization. Shading is done with software, hardware, or mixed transform and lighting.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDEVTYPE_HAL']/*\"/>\t\n            <msdn-id>bb172547</msdn-id>\t\n            <unmanaged>D3DDEVTYPE_HAL</unmanaged>\t\n            <unmanaged-short>D3DDEVTYPE_HAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DeviceType.Reference\">\n            <summary>\t\n            <dd> <p>Initialize Direct3D on a computer that has neither hardware nor reference rasterization available, and enable resources for 3D content creation. See Remarks.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDEVTYPE_REF']/*\"/>\t\n            <msdn-id>bb172547</msdn-id>\t\n            <unmanaged>D3DDEVTYPE_REF</unmanaged>\t\n            <unmanaged-short>D3DDEVTYPE_REF</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DeviceType.Software\">\n            <summary>\t\n            <dd> <p>Direct3D features are implemented in software; however, the reference rasterizer does make use of special CPU instructions whenever it can.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDEVTYPE_SW']/*\"/>\t\n            <msdn-id>bb172547</msdn-id>\t\n            <unmanaged>D3DDEVTYPE_SW</unmanaged>\t\n            <unmanaged-short>D3DDEVTYPE_SW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DeviceType.NullReference\">\n            <summary>\t\n            <dd> <p>A pluggable software device that has been registered with <strong><see cref=\"M:SharpDX.Direct3D9.Direct3D.RegisterSoftwareDevice(System.IntPtr)\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDEVTYPE_NULLREF']/*\"/>\t\n            <msdn-id>bb172547</msdn-id>\t\n            <unmanaged>D3DDEVTYPE_NULLREF</unmanaged>\t\n            <unmanaged-short>D3DDEVTYPE_NULLREF</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.DisplayRotation\">\n            <summary>\t\n            <p>Specifies how the monitor being used to display a full-screen application is rotated.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This enumeration is used in <strong><see cref=\"M:SharpDX.Direct3D9.Direct3DEx.GetAdapterDisplayModeEx(System.Int32)\"/></strong>, <strong><see cref=\"M:SharpDX.Direct3D9.DeviceEx.GetDisplayModeEx(System.Int32)\"/></strong>, and <strong><see cref=\"M:SharpDX.Direct3D9.SwapChain9Ex.GetDisplayModeEx(SharpDX.Direct3D9.DisplayModeEx@,SharpDX.Direct3D9.DisplayRotation@)\"/></strong>.</p><p>Applications may choose to handle monitor rotation themselves by using the <see cref=\"F:SharpDX.Direct3D9.PresentFlags.NoAutoRotate\"/>, in which case, the application will need to know how the monitor is rotated so that it may adjust its rendering accordingly.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDISPLAYROTATION']/*\"/>\t\n            <msdn-id>bb172551</msdn-id>\t\n            <unmanaged>D3DDISPLAYROTATION</unmanaged>\t\n            <unmanaged-short>D3DDISPLAYROTATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DisplayRotation.Identity\">\n            <summary>\t\n            <dd> <p>Display is not rotated.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDISPLAYROTATION_IDENTITY']/*\"/>\t\n            <msdn-id>bb172551</msdn-id>\t\n            <unmanaged>D3DDISPLAYROTATION_IDENTITY</unmanaged>\t\n            <unmanaged-short>D3DDISPLAYROTATION_IDENTITY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DisplayRotation.Rotation90\">\n            <summary>\t\n            <dd> <p>Display is rotated 90 degrees.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDISPLAYROTATION_90']/*\"/>\t\n            <msdn-id>bb172551</msdn-id>\t\n            <unmanaged>D3DDISPLAYROTATION_90</unmanaged>\t\n            <unmanaged-short>D3DDISPLAYROTATION_90</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DisplayRotation.Rotation180\">\n            <summary>\t\n            <dd> <p>Display is rotated 180 degrees.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDISPLAYROTATION_180']/*\"/>\t\n            <msdn-id>bb172551</msdn-id>\t\n            <unmanaged>D3DDISPLAYROTATION_180</unmanaged>\t\n            <unmanaged-short>D3DDISPLAYROTATION_180</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DisplayRotation.Rotation270\">\n            <summary>\t\n            <dd> <p>Display is rotated 270 degrees.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDISPLAYROTATION_270']/*\"/>\t\n            <msdn-id>bb172551</msdn-id>\t\n            <unmanaged>D3DDISPLAYROTATION_270</unmanaged>\t\n            <unmanaged-short>D3DDISPLAYROTATION_270</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.EffectDefaultType\">\n            <summary>\t\n            <p>Effect data types. The data is contained in the pValue member of <strong><see cref=\"T:SharpDX.Direct3D9.EffectDefault\"/></strong>.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXEFFECTDEFAULTTYPE']/*\"/>\t\n            <msdn-id>bb172822</msdn-id>\t\n            <unmanaged>D3DXEFFECTDEFAULTTYPE</unmanaged>\t\n            <unmanaged-short>D3DXEFFECTDEFAULTTYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.EffectDefaultType.String\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXEDT_STRING']/*\"/>\t\n            <unmanaged>D3DXEDT_STRING</unmanaged>\t\n            <unmanaged-short>D3DXEDT_STRING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.EffectDefaultType.Floats\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXEDT_FLOATS']/*\"/>\t\n            <unmanaged>D3DXEDT_FLOATS</unmanaged>\t\n            <unmanaged-short>D3DXEDT_FLOATS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.EffectDefaultType.Dword\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXEDT_DWORD']/*\"/>\t\n            <unmanaged>D3DXEDT_DWORD</unmanaged>\t\n            <unmanaged-short>D3DXEDT_DWORD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.EffectDefaultType.DtForcedWord\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXEDT_FORCEDWORD']/*\"/>\t\n            <unmanaged>D3DXEDT_FORCEDWORD</unmanaged>\t\n            <unmanaged-short>D3DXEDT_FORCEDWORD</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.EventType\">\n            <summary>\t\n            <p>Describes the type of events that can be keyed by the animation controller.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXEVENT_TYPE']/*\"/>\t\n            <msdn-id>bb172827</msdn-id>\t\n            <unmanaged>D3DXEVENT_TYPE</unmanaged>\t\n            <unmanaged-short>D3DXEVENT_TYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.EventType.TrackSpeed\">\n            <summary>\t\n            <dd> <p>Track speed.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXEVENT_TRACKSPEED']/*\"/>\t\n            <msdn-id>bb172827</msdn-id>\t\n            <unmanaged>D3DXEVENT_TRACKSPEED</unmanaged>\t\n            <unmanaged-short>D3DXEVENT_TRACKSPEED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.EventType.TrackWeight\">\n            <summary>\t\n            <dd> <p>Track weight.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXEVENT_TRACKWEIGHT']/*\"/>\t\n            <msdn-id>bb172827</msdn-id>\t\n            <unmanaged>D3DXEVENT_TRACKWEIGHT</unmanaged>\t\n            <unmanaged-short>D3DXEVENT_TRACKWEIGHT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.EventType.TrackPosition\">\n            <summary>\t\n            <dd> <p>Track position.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXEVENT_TRACKPOSITION']/*\"/>\t\n            <msdn-id>bb172827</msdn-id>\t\n            <unmanaged>D3DXEVENT_TRACKPOSITION</unmanaged>\t\n            <unmanaged-short>D3DXEVENT_TRACKPOSITION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.EventType.TrackEnable\">\n            <summary>\t\n            <dd> <p>Enable flag.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXEVENT_TRACKENABLE']/*\"/>\t\n            <msdn-id>bb172827</msdn-id>\t\n            <unmanaged>D3DXEVENT_TRACKENABLE</unmanaged>\t\n            <unmanaged-short>D3DXEVENT_TRACKENABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.EventType.PriorityBlend\">\n            <summary>\t\n            <dd> <p>Priority blend value.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXEVENT_PRIORITYBLEND']/*\"/>\t\n            <msdn-id>bb172827</msdn-id>\t\n            <unmanaged>D3DXEVENT_PRIORITYBLEND</unmanaged>\t\n            <unmanaged-short>D3DXEVENT_PRIORITYBLEND</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.FillMode\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFILLMODE']/*\"/>\t\n            <unmanaged>D3DFILLMODE</unmanaged>\t\n            <unmanaged-short>D3DFILLMODE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FillMode.Point\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFILL_POINT']/*\"/>\t\n            <unmanaged>D3DFILL_POINT</unmanaged>\t\n            <unmanaged-short>D3DFILL_POINT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FillMode.Wireframe\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFILL_WIREFRAME']/*\"/>\t\n            <unmanaged>D3DFILL_WIREFRAME</unmanaged>\t\n            <unmanaged-short>D3DFILL_WIREFRAME</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FillMode.Solid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFILL_SOLID']/*\"/>\t\n            <unmanaged>D3DFILL_SOLID</unmanaged>\t\n            <unmanaged-short>D3DFILL_SOLID</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.Filter\">\n            <summary>\t\n            <p>The following flags are used to specify which channels in a texture to operate on.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX_FILTER']/*\"/>\t\n            <msdn-id>bb205565</msdn-id>\t\n            <unmanaged>D3DX_FILTER</unmanaged>\t\n            <unmanaged-short>D3DX_FILTER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Filter.None\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX_FILTER_NONE']/*\"/>\t\n            <unmanaged>D3DX_FILTER_NONE</unmanaged>\t\n            <unmanaged-short>D3DX_FILTER_NONE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Filter.Point\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX_FILTER_POINT']/*\"/>\t\n            <unmanaged>D3DX_FILTER_POINT</unmanaged>\t\n            <unmanaged-short>D3DX_FILTER_POINT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Filter.Linear\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX_FILTER_LINEAR']/*\"/>\t\n            <unmanaged>D3DX_FILTER_LINEAR</unmanaged>\t\n            <unmanaged-short>D3DX_FILTER_LINEAR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Filter.Triangle\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX_FILTER_TRIANGLE']/*\"/>\t\n            <unmanaged>D3DX_FILTER_TRIANGLE</unmanaged>\t\n            <unmanaged-short>D3DX_FILTER_TRIANGLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Filter.Box\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX_FILTER_BOX']/*\"/>\t\n            <unmanaged>D3DX_FILTER_BOX</unmanaged>\t\n            <unmanaged-short>D3DX_FILTER_BOX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Filter.MirrorU\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX_FILTER_MIRROR_U']/*\"/>\t\n            <unmanaged>D3DX_FILTER_MIRROR_U</unmanaged>\t\n            <unmanaged-short>D3DX_FILTER_MIRROR_U</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Filter.MirrorV\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX_FILTER_MIRROR_V']/*\"/>\t\n            <unmanaged>D3DX_FILTER_MIRROR_V</unmanaged>\t\n            <unmanaged-short>D3DX_FILTER_MIRROR_V</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Filter.MirrorW\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX_FILTER_MIRROR_W']/*\"/>\t\n            <unmanaged>D3DX_FILTER_MIRROR_W</unmanaged>\t\n            <unmanaged-short>D3DX_FILTER_MIRROR_W</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Filter.Mirror\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX_FILTER_MIRROR']/*\"/>\t\n            <unmanaged>D3DX_FILTER_MIRROR</unmanaged>\t\n            <unmanaged-short>D3DX_FILTER_MIRROR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Filter.Dither\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX_FILTER_DITHER']/*\"/>\t\n            <unmanaged>D3DX_FILTER_DITHER</unmanaged>\t\n            <unmanaged-short>D3DX_FILTER_DITHER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Filter.DitherDiffusion\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX_FILTER_DITHER_DIFFUSION']/*\"/>\t\n            <unmanaged>D3DX_FILTER_DITHER_DIFFUSION</unmanaged>\t\n            <unmanaged-short>D3DX_FILTER_DITHER_DIFFUSION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Filter.SrgbIn\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX_FILTER_SRGB_IN']/*\"/>\t\n            <unmanaged>D3DX_FILTER_SRGB_IN</unmanaged>\t\n            <unmanaged-short>D3DX_FILTER_SRGB_IN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Filter.SrgbOut\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX_FILTER_SRGB_OUT']/*\"/>\t\n            <unmanaged>D3DX_FILTER_SRGB_OUT</unmanaged>\t\n            <unmanaged-short>D3DX_FILTER_SRGB_OUT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Filter.Srgb\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX_FILTER_SRGB']/*\"/>\t\n            <unmanaged>D3DX_FILTER_SRGB</unmanaged>\t\n            <unmanaged-short>D3DX_FILTER_SRGB</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Filter.Default\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX_FILTER_DEFAULT']/*\"/>\t\n            <unmanaged>D3DX_FILTER_DEFAULT</unmanaged>\t\n            <unmanaged-short>D3DX_FILTER_DEFAULT</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.FilterCaps\">\n            <summary>\t\n            <p>Texture filtering constants.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPTFILTERCAPS']/*\"/>\t\n            <msdn-id>Bb172593</msdn-id>\t\n            <unmanaged>D3DPTFILTERCAPS</unmanaged>\t\n            <unmanaged-short>D3DPTFILTERCAPS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FilterCaps.MinPoint\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPTFILTERCAPS_MINFPOINT']/*\"/>\t\n            <unmanaged>D3DPTFILTERCAPS_MINFPOINT</unmanaged>\t\n            <unmanaged-short>D3DPTFILTERCAPS_MINFPOINT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FilterCaps.MinLinear\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPTFILTERCAPS_MINFLINEAR']/*\"/>\t\n            <unmanaged>D3DPTFILTERCAPS_MINFLINEAR</unmanaged>\t\n            <unmanaged-short>D3DPTFILTERCAPS_MINFLINEAR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FilterCaps.MinAnisotropic\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPTFILTERCAPS_MINFANISOTROPIC']/*\"/>\t\n            <unmanaged>D3DPTFILTERCAPS_MINFANISOTROPIC</unmanaged>\t\n            <unmanaged-short>D3DPTFILTERCAPS_MINFANISOTROPIC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FilterCaps.MinPyramidalQuad\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPTFILTERCAPS_MINFPYRAMIDALQUAD']/*\"/>\t\n            <unmanaged>D3DPTFILTERCAPS_MINFPYRAMIDALQUAD</unmanaged>\t\n            <unmanaged-short>D3DPTFILTERCAPS_MINFPYRAMIDALQUAD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FilterCaps.MinGaussianQuad\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPTFILTERCAPS_MINFGAUSSIANQUAD']/*\"/>\t\n            <unmanaged>D3DPTFILTERCAPS_MINFGAUSSIANQUAD</unmanaged>\t\n            <unmanaged-short>D3DPTFILTERCAPS_MINFGAUSSIANQUAD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FilterCaps.MipPoint\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPTFILTERCAPS_MIPFPOINT']/*\"/>\t\n            <unmanaged>D3DPTFILTERCAPS_MIPFPOINT</unmanaged>\t\n            <unmanaged-short>D3DPTFILTERCAPS_MIPFPOINT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FilterCaps.MipLinear\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPTFILTERCAPS_MIPFLINEAR']/*\"/>\t\n            <unmanaged>D3DPTFILTERCAPS_MIPFLINEAR</unmanaged>\t\n            <unmanaged-short>D3DPTFILTERCAPS_MIPFLINEAR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FilterCaps.ConvolutionMono\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPTFILTERCAPS_CONVOLUTIONMONO']/*\"/>\t\n            <unmanaged>D3DPTFILTERCAPS_CONVOLUTIONMONO</unmanaged>\t\n            <unmanaged-short>D3DPTFILTERCAPS_CONVOLUTIONMONO</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FilterCaps.MagPoint\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPTFILTERCAPS_MAGFPOINT']/*\"/>\t\n            <unmanaged>D3DPTFILTERCAPS_MAGFPOINT</unmanaged>\t\n            <unmanaged-short>D3DPTFILTERCAPS_MAGFPOINT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FilterCaps.MagLinear\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPTFILTERCAPS_MAGFLINEAR']/*\"/>\t\n            <unmanaged>D3DPTFILTERCAPS_MAGFLINEAR</unmanaged>\t\n            <unmanaged-short>D3DPTFILTERCAPS_MAGFLINEAR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FilterCaps.MagAnisotropic\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPTFILTERCAPS_MAGFANISOTROPIC']/*\"/>\t\n            <unmanaged>D3DPTFILTERCAPS_MAGFANISOTROPIC</unmanaged>\t\n            <unmanaged-short>D3DPTFILTERCAPS_MAGFANISOTROPIC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FilterCaps.MagPyramidalQuad\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPTFILTERCAPS_MAGFPYRAMIDALQUAD']/*\"/>\t\n            <unmanaged>D3DPTFILTERCAPS_MAGFPYRAMIDALQUAD</unmanaged>\t\n            <unmanaged-short>D3DPTFILTERCAPS_MAGFPYRAMIDALQUAD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FilterCaps.MagGaussianQuad\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPTFILTERCAPS_MAGFGAUSSIANQUAD']/*\"/>\t\n            <unmanaged>D3DPTFILTERCAPS_MAGFGAUSSIANQUAD</unmanaged>\t\n            <unmanaged-short>D3DPTFILTERCAPS_MAGFGAUSSIANQUAD</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.FogMode\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFOGMODE']/*\"/>\t\n            <unmanaged>D3DFOGMODE</unmanaged>\t\n            <unmanaged-short>D3DFOGMODE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FogMode.None\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFOG_NONE']/*\"/>\t\n            <unmanaged>D3DFOG_NONE</unmanaged>\t\n            <unmanaged-short>D3DFOG_NONE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FogMode.Exponential\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFOG_EXP']/*\"/>\t\n            <unmanaged>D3DFOG_EXP</unmanaged>\t\n            <unmanaged-short>D3DFOG_EXP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FogMode.ExponentialSquared\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFOG_EXP2']/*\"/>\t\n            <unmanaged>D3DFOG_EXP2</unmanaged>\t\n            <unmanaged-short>D3DFOG_EXP2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FogMode.Linear\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFOG_LINEAR']/*\"/>\t\n            <unmanaged>D3DFOG_LINEAR</unmanaged>\t\n            <unmanaged-short>D3DFOG_LINEAR</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.Format\">\n            <summary>\t\n            <p>Defines the various types of surface formats.</p>typedef enum _D3DFORMAT { <see cref=\"F:SharpDX.Direct3D9.Format.Unknown\"/>              =  0, <see cref=\"F:SharpDX.Direct3D9.Format.R8G8B8\"/>               = 20, <see cref=\"F:SharpDX.Direct3D9.Format.A8R8G8B8\"/>             = 21, <see cref=\"F:SharpDX.Direct3D9.Format.X8R8G8B8\"/>             = 22, <see cref=\"F:SharpDX.Direct3D9.Format.R5G6B5\"/>               = 23, <see cref=\"F:SharpDX.Direct3D9.Format.X1R5G5B5\"/>             = 24, <see cref=\"F:SharpDX.Direct3D9.Format.A1R5G5B5\"/>             = 25, <see cref=\"F:SharpDX.Direct3D9.Format.A4R4G4B4\"/>             = 26, <see cref=\"F:SharpDX.Direct3D9.Format.R3G3B2\"/>               = 27, <see cref=\"F:SharpDX.Direct3D9.Format.A8\"/>                   = 28, <see cref=\"F:SharpDX.Direct3D9.Format.A8R3G3B2\"/>             = 29, <see cref=\"F:SharpDX.Direct3D9.Format.X4R4G4B4\"/>             = 30, <see cref=\"F:SharpDX.Direct3D9.Format.A2B10G10R10\"/>          = 31, <see cref=\"F:SharpDX.Direct3D9.Format.A8B8G8R8\"/>             = 32, <see cref=\"F:SharpDX.Direct3D9.Format.X8B8G8R8\"/>             = 33, <see cref=\"F:SharpDX.Direct3D9.Format.G16R16\"/>               = 34, <see cref=\"F:SharpDX.Direct3D9.Format.A2R10G10B10\"/>          = 35, <see cref=\"F:SharpDX.Direct3D9.Format.A16B16G16R16\"/>         = 36, <see cref=\"F:SharpDX.Direct3D9.Format.A8P8\"/>                 = 40, <see cref=\"F:SharpDX.Direct3D9.Format.P8\"/>                   = 41, <see cref=\"F:SharpDX.Direct3D9.Format.L8\"/>                   = 50, <see cref=\"F:SharpDX.Direct3D9.Format.A8L8\"/>                 = 51, <see cref=\"F:SharpDX.Direct3D9.Format.A4L4\"/>                 = 52, <see cref=\"F:SharpDX.Direct3D9.Format.V8U8\"/>                 = 60, <see cref=\"F:SharpDX.Direct3D9.Format.L6V5U5\"/>               = 61, <see cref=\"F:SharpDX.Direct3D9.Format.X8L8V8U8\"/>             = 62, <see cref=\"F:SharpDX.Direct3D9.Format.Q8W8V8U8\"/>             = 63, <see cref=\"F:SharpDX.Direct3D9.Format.V16U16\"/>               = 64, <see cref=\"F:SharpDX.Direct3D9.Format.A2W10V10U10\"/>          = 67, <see cref=\"F:SharpDX.Direct3D9.Format.Uyvy\"/>                 = MAKEFOURCC('U', 'Y', 'V', 'Y'), <see cref=\"F:SharpDX.Direct3D9.Format.R8G8_B8G8\"/>            = MAKEFOURCC('R', 'G', 'B', 'G'), <see cref=\"F:SharpDX.Direct3D9.Format.Yuy2\"/>                 = MAKEFOURCC('Y', 'U', 'Y', '2'), <see cref=\"F:SharpDX.Direct3D9.Format.G8R8_G8B8\"/>            = MAKEFOURCC('G', 'R', 'G', 'B'), <see cref=\"F:SharpDX.Direct3D9.Format.Dxt1\"/>                 = MAKEFOURCC('D', 'X', 'T', '1'), <see cref=\"F:SharpDX.Direct3D9.Format.Dxt2\"/>                 = MAKEFOURCC('D', 'X', 'T', '2'), <see cref=\"F:SharpDX.Direct3D9.Format.Dxt3\"/>                 = MAKEFOURCC('D', 'X', 'T', '3'), <see cref=\"F:SharpDX.Direct3D9.Format.Dxt4\"/>                 = MAKEFOURCC('D', 'X', 'T', '4'), <see cref=\"F:SharpDX.Direct3D9.Format.Dxt5\"/>                 = MAKEFOURCC('D', 'X', 'T', '5'), <see cref=\"F:SharpDX.Direct3D9.Format.D16Lockable\"/>         = 70, <see cref=\"F:SharpDX.Direct3D9.Format.D32\"/>                  = 71, <see cref=\"F:SharpDX.Direct3D9.Format.D15S1\"/>                = 73, <see cref=\"F:SharpDX.Direct3D9.Format.D24S8\"/>                = 75, <see cref=\"F:SharpDX.Direct3D9.Format.D24X8\"/>                = 77, <see cref=\"F:SharpDX.Direct3D9.Format.D24X4S4\"/>              = 79, <see cref=\"F:SharpDX.Direct3D9.Format.D16\"/>                  = 80, <see cref=\"F:SharpDX.Direct3D9.Format.D32SingleLockable\"/>        = 82, <see cref=\"F:SharpDX.Direct3D9.Format.D24SingleS8\"/>               = 83, #if !defined(D3D_DISABLE_9EX) <see cref=\"F:SharpDX.Direct3D9.Format.D32Lockable\"/>         = 84, <see cref=\"F:SharpDX.Direct3D9.Format.S8Lockable\"/>          = 85,\t\n            #endif // !D3D_DISABLE_9EX <see cref=\"F:SharpDX.Direct3D9.Format.L16\"/>                  = 81, <see cref=\"F:SharpDX.Direct3D9.Format.VertexData\"/>           =100, <see cref=\"F:SharpDX.Direct3D9.Format.Index16\"/>              =101, <see cref=\"F:SharpDX.Direct3D9.Format.Index32\"/>              =102, <see cref=\"F:SharpDX.Direct3D9.Format.Q16W16V16U16\"/>         =110, <see cref=\"F:SharpDX.Direct3D9.Format.Multi2Argb8\"/>         = MAKEFOURCC('M','E','T','1'), <see cref=\"F:SharpDX.Direct3D9.Format.R16F\"/>                 = 111, <see cref=\"F:SharpDX.Direct3D9.Format.G16R16F\"/>              = 112, <see cref=\"F:SharpDX.Direct3D9.Format.A16B16G16R16F\"/>        = 113, <see cref=\"F:SharpDX.Direct3D9.Format.R32F\"/>                 = 114, <see cref=\"F:SharpDX.Direct3D9.Format.G32R32F\"/>              = 115, <see cref=\"F:SharpDX.Direct3D9.Format.A32B32G32R32F\"/>        = 116, <see cref=\"F:SharpDX.Direct3D9.Format.MtCxV8U8\"/>               = 117, #if !defined(D3D_DISABLE_9EX) <see cref=\"F:SharpDX.Direct3D9.Format.A1\"/>                   = 118, <see cref=\"F:SharpDX.Direct3D9.Format.MtA2B10G10R10XrBias\"/>  = 119, <see cref=\"F:SharpDX.Direct3D9.Format.BinaryBuffer\"/>         = 199,\t\n            #endif // !D3D_DISABLE_9EX D3DFMT_FORCE_DWORD          =0x7fffffff\t\n            } <see cref=\"T:SharpDX.Direct3D9.Format\"/>;\t\n            </summary>\t\n            <remarks>\t\n            <p>There are several types of formats:</p><ul> <li>BackBuffer</li> <li>Buffer</li> <li>DXTn</li> <li>Floating-Point</li> <li>FOURCC</li> <li>IEEE</li> <li>Mixed</li> <li>Signed</li> <li>Unsigned</li> <li>Other</li> <li>Constant</li> </ul><p>All formats are listed from left to right, most-significant bit to least-significant bit. For example, <strong>D3DFORMAT_ARGB</strong> is ordered from the most-significant bit channel A (alpha), to the least-significant bit channel B (blue). When traversing surface data, the data is stored in memory from least-significant bit to most-significant bit, which means that the channel order in memory is from least-significant bit (blue) to most-significant bit (alpha).</p><p>The default value for formats that contain undefined channels (G16R16, A8, and so on) is 1. The only exception is the A8 format, which is initialized to 000 for the three color channels.</p><p>The order of the bits is from the most significant byte first, so <see cref=\"F:SharpDX.Direct3D9.Format.A8L8\"/> indicates that the high byte of this 2-byte format is alpha. <strong><see cref=\"F:SharpDX.Direct3D9.Format.D16\"/></strong> indicates a 16-bit integer value and an application-lockable surface.</p><p>Pixel formats have been chosen to enable the expression of hardware-vendor-defined extension formats, as well as to include the well-established FOURCC method. The set of formats understood by the Direct3D runtime is defined by <see cref=\"T:SharpDX.Direct3D9.Format\"/>.</p><p>Note that formats are supplied by independent hardware vendors (IHVs) and many FOURCC codes are not listed. The formats in this enumeration are unique in that they are sanctioned by the runtime, meaning that the reference rasterizer will operate on all these types. IHV-supplied formats will be supported by the individual IHVs on a card-by-card basis.</p>BackBuffer or Display Formats<p>These formats are the only valid formats for a back buffer or a display.</p><table> <tr><th>Format</th><th>Back buffer</th><th>Display</th></tr> <tr><td>A2R10G10B10</td><td>x</td><td>x (full-screen mode only)</td></tr> <tr><td>A8R8G8B8</td><td>x</td><td></td></tr> <tr><td>X8R8G8B8</td><td>x</td><td>x</td></tr> <tr><td>A1R5G5B5</td><td>x</td><td></td></tr> <tr><td>X1R5G5B5</td><td>x</td><td>x</td></tr> <tr><td>R5G6B5</td><td>x</td><td>x</td></tr> </table><p>?</p>Buffer Formats<p>Depth, stencil, vertex, and index buffers each have unique formats.</p><table> <tr><th>Buffer flags</th><th>Value</th><th>Format</th></tr> <tr><td><strong><see cref=\"F:SharpDX.Direct3D9.Format.D16Lockable\"/></strong></td><td>70</td><td>16-bit z-buffer bit depth.</td></tr> <tr><td><strong><see cref=\"F:SharpDX.Direct3D9.Format.D32\"/></strong></td><td>71</td><td>32-bit z-buffer bit depth.</td></tr> <tr><td><strong><see cref=\"F:SharpDX.Direct3D9.Format.D15S1\"/></strong></td><td>73</td><td>16-bit z-buffer bit depth where 15 bits are reserved for the depth channel and 1 bit is reserved for the stencil channel.</td></tr> <tr><td><strong><see cref=\"F:SharpDX.Direct3D9.Format.D24S8\"/></strong></td><td>75</td><td>32-bit z-buffer bit depth using 24 bits for the depth channel and 8 bits for the stencil channel.</td></tr> <tr><td><strong><see cref=\"F:SharpDX.Direct3D9.Format.D24X8\"/></strong></td><td>77</td><td>32-bit z-buffer bit depth using 24 bits for the depth channel.</td></tr> <tr><td><strong><see cref=\"F:SharpDX.Direct3D9.Format.D24X4S4\"/></strong></td><td>79</td><td>32-bit z-buffer bit depth using 24 bits for the depth channel and 4 bits for the stencil channel.</td></tr> <tr><td><strong><see cref=\"F:SharpDX.Direct3D9.Format.D32SingleLockable\"/></strong></td><td>82</td><td>A lockable format where the depth value is represented as a standard IEEE floating-point number.</td></tr> <tr><td><strong><see cref=\"F:SharpDX.Direct3D9.Format.D24SingleS8\"/></strong></td><td>83</td><td>A non-lockable format that contains 24 bits of depth (in a 24-bit floating point format - 20e4) and 8 bits of stencil.</td></tr> <tr><td><strong><see cref=\"F:SharpDX.Direct3D9.Format.D32Lockable\"/></strong></td><td>84</td><td>A lockable 32-bit depth buffer.\t\n            <strong>Differences between Direct3D 9 and Direct3D 9Ex:??</strong>This flag is available in Direct3D 9Ex only. </td></tr> <tr><td><strong><see cref=\"F:SharpDX.Direct3D9.Format.S8Lockable\"/></strong></td><td>84</td><td>A lockable 8-bit stencil buffer.\t\n            <strong>Differences between Direct3D 9 and Direct3D 9Ex:??</strong>This flag is available in Direct3D 9Ex only. </td></tr> <tr><td><strong><see cref=\"F:SharpDX.Direct3D9.Format.D16\"/></strong></td><td>80</td><td>16-bit z-buffer bit depth.</td></tr> <tr><td><strong><see cref=\"F:SharpDX.Direct3D9.Format.VertexData\"/></strong></td><td>100</td><td>Describes a vertex buffer surface.</td></tr> <tr><td><strong><see cref=\"F:SharpDX.Direct3D9.Format.Index16\"/></strong></td><td>101</td><td>16-bit index buffer bit depth.</td></tr> <tr><td><strong><see cref=\"F:SharpDX.Direct3D9.Format.Index32\"/></strong></td><td>102</td><td>32-bit index buffer bit depth.</td></tr> </table><p>?</p><p>All depth-stencil formats except <see cref=\"F:SharpDX.Direct3D9.Format.D16Lockable\"/> indicate no particular bit ordering per pixel, and the driver is allowed to consume more than the indicated number of bits-per-depth channel (but not stencil channel).</p>DXTn Compressed Texture Formats<p>These flags are used for compressed textures:</p><table> <tr><th>DXTn Compressed Texture flags</th><th>Value</th><th>Format</th></tr> <tr><td><strong><see cref=\"F:SharpDX.Direct3D9.Format.Dxt1\"/></strong></td><td>MAKEFOURCC('D', 'X', 'T', '1')</td><td>DXT1 compression texture format </td></tr> <tr><td><strong><see cref=\"F:SharpDX.Direct3D9.Format.Dxt2\"/></strong></td><td>MAKEFOURCC('D', 'X', 'T', '2')</td><td>DXT2 compression texture format </td></tr> <tr><td><strong><see cref=\"F:SharpDX.Direct3D9.Format.Dxt3\"/></strong></td><td>MAKEFOURCC('D', 'X', 'T', '3')</td><td>DXT3 compression texture format </td></tr> <tr><td><strong><see cref=\"F:SharpDX.Direct3D9.Format.Dxt4\"/></strong></td><td>MAKEFOURCC('D', 'X', 'T', '4')</td><td>DXT4 compression texture format </td></tr> <tr><td><strong><see cref=\"F:SharpDX.Direct3D9.Format.Dxt5\"/></strong></td><td>MAKEFOURCC('D', 'X', 'T', '5')</td><td>DXT5 compression texture format </td></tr> </table><p>?</p><p>The runtime will not allow an application to create a surface using a DXTn format unless the surface dimensions are multiples of 4.  This applies to offscreen-plain surfaces, render targets, 2D textures, cube textures, and volume textures.</p>Floating-Point Formats<p>These flags are used for floating-point surface formats. These 16-bits-per-channel formats are also known as s10e5 formats.</p><table> <tr><th>Floating-point flags</th><th>Value</th><th>Format</th></tr> <tr><td><strong><see cref=\"F:SharpDX.Direct3D9.Format.R16F\"/></strong></td><td>111</td><td>16-bit float format using 16 bits for the red channel.</td></tr> <tr><td><strong><see cref=\"F:SharpDX.Direct3D9.Format.G16R16F\"/></strong></td><td>112</td><td>32-bit float format using 16 bits for the red channel and 16 bits for the green channel.</td></tr> <tr><td><strong><see cref=\"F:SharpDX.Direct3D9.Format.A16B16G16R16F\"/></strong></td><td>113</td><td>64-bit float format using 16 bits for the each channel (alpha, blue, green, red).</td></tr> </table><p>?</p>FOURCC Formats<p>Data in a FOURCC format is compressed data.</p>MAKEFOURCC<p>A macro for generating four-character codes follows:</p><code>#define MAKEFOURCC(ch0, ch1, ch2, ch3)                              \\ ((DWORD)(BYTE)(ch0) | ((DWORD)(BYTE)(ch1) &lt;&lt; 8) |   \\ ((DWORD)(BYTE)(ch2) &lt;&lt; 16) | ((DWORD)(BYTE)(ch3) &lt;&lt; 24 ))</code><p>Here are the defined FOURCC formats:</p><table> <tr><th>FOURCC flags</th><th>Value</th><th>Format</th></tr> <tr><td><strong><see cref=\"F:SharpDX.Direct3D9.Format.Multi2Argb8\"/></strong></td><td>MAKEFOURCC('M','E','T','1')</td><td>MultiElement texture (not compressed)</td></tr> <tr><td><strong><see cref=\"F:SharpDX.Direct3D9.Format.G8R8_G8B8\"/></strong></td><td>MAKEFOURCC('G', 'R', 'G', 'B')</td><td>A 16-bit packed RGB format analogous to YUY2 (Y0U0, Y1V0, Y2U2, and so on). It requires a pixel pair in order to properly represent the color value. The first pixel in the pair contains 8 bits of green (in the high 8 bits) and 8 bits of red (in the low 8 bits). The second pixel contains 8 bits of green (in the high 8 bits) and 8 bits of blue (in the low 8 bits). Together, the two pixels share the red and blue components, while each has a unique green component (G0R0, G1B0, G2R2, and so on). The texture sampler does not normalize the colors when looking up into a pixel shader; they remain in the range of 0.0f to 255.0f. This is true for all programmable pixel shader models. For the fixed function pixel shader, the hardware should normalize to the 0.f to 1.f range and essentially treat it as the YUY2 texture. Hardware that exposes this format must have the PixelShader1xMaxValue member of <strong><see cref=\"T:SharpDX.Direct3D9.Capabilities\"/></strong> set to a value capable of handling that range.</td></tr> <tr><td><strong><see cref=\"F:SharpDX.Direct3D9.Format.R8G8_B8G8\"/></strong></td><td>MAKEFOURCC('R', 'G', 'B', 'G')</td><td>A 16-bit packed RGB format analogous to UYVY (U0Y0, V0Y1, U2Y2, and so on). It requires a pixel pair in order to properly represent the color value. The first pixel in the pair contains 8 bits of green (in the low 8 bits) and 8 bits of red (in the high 8 bits). The second pixel contains 8 bits of green (in the low 8 bits) and 8 bits of blue (in the high 8 bits). Together, the two pixels share the red and blue components, while each has a unique green component (R0G0, B0G1, R2G2, and so on). The texture sampler does not normalize the colors when looking up into a pixel shader; they remain in the range of 0.0f to 255.0f. This is true for all programmable pixel shader models. For the fixed function pixel shader, the hardware should normalize to the 0.f to 1.f range and essentially treat it as the YUY2 texture. Hardware that exposes this format must have PixelShader1xMaxValue member of <strong><see cref=\"T:SharpDX.Direct3D9.Capabilities\"/></strong> set to a value capable of handling that range.</td></tr> <tr><td><strong><see cref=\"F:SharpDX.Direct3D9.Format.Uyvy\"/></strong></td><td>MAKEFOURCC('U', 'Y', 'V', 'Y')</td><td>UYVY format (PC98 compliance)</td></tr> <tr><td><strong><see cref=\"F:SharpDX.Direct3D9.Format.Yuy2\"/></strong></td><td>MAKEFOURCC('Y', 'U', 'Y', '2')</td><td>YUY2 format (PC98 compliance)</td></tr> </table><p>?</p>IEEE Formats<p>These flags are used for floating-point surface formats. These 32-bits-per-channel formats are also known as s23e8 formats.</p><table> <tr><th>Floating-point flags</th><th>Value</th><th>Format</th></tr> <tr><td><strong><see cref=\"F:SharpDX.Direct3D9.Format.R32F\"/></strong></td><td>114</td><td>32-bit float format using 32 bits for the red channel.</td></tr> <tr><td><strong><see cref=\"F:SharpDX.Direct3D9.Format.G32R32F\"/></strong></td><td>115</td><td>64-bit float format using 32 bits for the red channel and 32 bits for the green channel.</td></tr> <tr><td><strong><see cref=\"F:SharpDX.Direct3D9.Format.A32B32G32R32F\"/></strong></td><td>116</td><td>128-bit float format using 32 bits for the each channel (alpha, blue, green, red).</td></tr> </table><p>?</p>Mixed Formats<p>Data in mixed formats can contain a combination of unsigned data and signed data.</p><table> <tr><th>Mixed format flags</th><th>Value</th><th>Format</th></tr> <tr><td><strong><see cref=\"F:SharpDX.Direct3D9.Format.L6V5U5\"/></strong></td><td>61</td><td>16-bit bump-map format with luminance using 6 bits for luminance, and 5 bits each for v and u.</td></tr> <tr><td><strong><see cref=\"F:SharpDX.Direct3D9.Format.X8L8V8U8\"/></strong></td><td>62</td><td>32-bit bump-map format with luminance using 8 bits for each channel.</td></tr> <tr><td><strong><see cref=\"F:SharpDX.Direct3D9.Format.A2W10V10U10\"/></strong></td><td>67</td><td>32-bit bump-map format using 2 bits for alpha and 10 bits each for w, v, and u.</td></tr> </table><p>?</p>Signed Formats<p>Data in a signed format can be both positive and negative. Signed formats use combinations of (U), (V), (W), and (Q) data.</p><table> <tr><th>Signed format flags</th><th>Value</th><th>Format</th></tr> <tr><td><strong><see cref=\"F:SharpDX.Direct3D9.Format.V8U8\"/></strong></td><td>60</td><td>16-bit bump-map format using 8 bits each for u and v data.</td></tr> <tr><td><strong><see cref=\"F:SharpDX.Direct3D9.Format.Q8W8V8U8\"/></strong></td><td>63</td><td>32-bit bump-map format using 8 bits for each channel.</td></tr> <tr><td><strong><see cref=\"F:SharpDX.Direct3D9.Format.V16U16\"/></strong></td><td>64</td><td>32-bit bump-map format using 16 bits for each channel.</td></tr> <tr><td><strong><see cref=\"F:SharpDX.Direct3D9.Format.Q16W16V16U16\"/></strong></td><td>110</td><td>64-bit bump-map format using 16 bits for each component.</td></tr> <tr><td><strong><see cref=\"F:SharpDX.Direct3D9.Format.MtCxV8U8\"/></strong></td><td>117</td><td>16-bit normal compression format. The texture sampler computes the C channel from: C = sqrt(1 - U2 - V2).</td></tr> </table><p>?</p>Unsigned Formats<p>Data in an unsigned format must be positive. Unsigned formats use combinations of (R)ed, (G)reen, (B)lue, (A)lpha,  (L)uminance, and (P)alette data. Palette data is also referred to as color indexed data because the data is used to index a color palette.</p><table> <tr><th>Unsigned format flags</th><th>Value</th><th>Format</th></tr> <tr><td><strong><see cref=\"F:SharpDX.Direct3D9.Format.R8G8B8\"/></strong></td><td>20</td><td>24-bit RGB pixel format with 8 bits per channel.</td></tr> <tr><td><strong><see cref=\"F:SharpDX.Direct3D9.Format.A8R8G8B8\"/></strong></td><td>21</td><td>32-bit ARGB pixel format with alpha, using 8 bits per channel.</td></tr> <tr><td><strong><see cref=\"F:SharpDX.Direct3D9.Format.X8R8G8B8\"/></strong></td><td>22</td><td>32-bit RGB pixel format, where 8 bits are reserved for each color.</td></tr> <tr><td><strong><see cref=\"F:SharpDX.Direct3D9.Format.R5G6B5\"/></strong></td><td>23</td><td>16-bit RGB pixel format with 5 bits for red, 6 bits for green, and 5 bits for blue.</td></tr> <tr><td><strong><see cref=\"F:SharpDX.Direct3D9.Format.X1R5G5B5\"/></strong></td><td>24</td><td>16-bit pixel format where 5 bits are reserved for each color.</td></tr> <tr><td><strong><see cref=\"F:SharpDX.Direct3D9.Format.A1R5G5B5\"/></strong></td><td>25</td><td>16-bit pixel format where 5 bits are reserved for each color and 1 bit is reserved for alpha.</td></tr> <tr><td><strong><see cref=\"F:SharpDX.Direct3D9.Format.A4R4G4B4\"/></strong></td><td>26</td><td>16-bit ARGB pixel format with 4 bits for each channel.</td></tr> <tr><td><strong><see cref=\"F:SharpDX.Direct3D9.Format.R3G3B2\"/></strong></td><td>27</td><td>8-bit RGB texture format using 3 bits for red, 3 bits for green, and 2 bits for blue.</td></tr> <tr><td><strong><see cref=\"F:SharpDX.Direct3D9.Format.A8\"/></strong></td><td>28</td><td>8-bit alpha only.</td></tr> <tr><td><strong><see cref=\"F:SharpDX.Direct3D9.Format.A8R3G3B2\"/></strong></td><td>29</td><td>16-bit ARGB texture format using 8 bits for alpha, 3 bits each for red and green, and 2 bits for blue.</td></tr> <tr><td><strong><see cref=\"F:SharpDX.Direct3D9.Format.X4R4G4B4\"/></strong></td><td>30</td><td>16-bit RGB pixel format using 4 bits for each color.</td></tr> <tr><td><strong><see cref=\"F:SharpDX.Direct3D9.Format.A2B10G10R10\"/></strong></td><td>31</td><td>32-bit pixel format using 10 bits for each color and 2 bits for alpha.</td></tr> <tr><td><strong><see cref=\"F:SharpDX.Direct3D9.Format.A8B8G8R8\"/></strong></td><td>32</td><td>32-bit ARGB pixel format with alpha, using 8 bits per channel.</td></tr> <tr><td><strong><see cref=\"F:SharpDX.Direct3D9.Format.X8B8G8R8\"/></strong></td><td>33</td><td>32-bit RGB pixel format, where 8 bits are reserved for each color.</td></tr> <tr><td><strong><see cref=\"F:SharpDX.Direct3D9.Format.G16R16\"/></strong></td><td>34</td><td>32-bit pixel format using 16 bits each for green and red.</td></tr> <tr><td><strong><see cref=\"F:SharpDX.Direct3D9.Format.A2R10G10B10\"/></strong></td><td>35</td><td>32-bit pixel format using 10 bits each for red, green, and blue, and 2 bits for alpha.</td></tr> <tr><td><strong><see cref=\"F:SharpDX.Direct3D9.Format.A16B16G16R16\"/></strong></td><td>36</td><td>64-bit pixel format using 16 bits for each component.</td></tr> <tr><td><strong><see cref=\"F:SharpDX.Direct3D9.Format.A8P8\"/></strong></td><td>40</td><td>8-bit color indexed with 8 bits of alpha.</td></tr> <tr><td><strong><see cref=\"F:SharpDX.Direct3D9.Format.P8\"/></strong></td><td>41</td><td>8-bit color indexed.</td></tr> <tr><td><strong><see cref=\"F:SharpDX.Direct3D9.Format.L8\"/></strong></td><td>50</td><td>8-bit luminance only.</td></tr> <tr><td><strong><see cref=\"F:SharpDX.Direct3D9.Format.L16\"/></strong></td><td>81</td><td>16-bit luminance only.</td></tr> <tr><td><strong><see cref=\"F:SharpDX.Direct3D9.Format.A8L8\"/></strong></td><td>51</td><td>16-bit using 8 bits each for alpha and luminance.</td></tr> <tr><td><strong><see cref=\"F:SharpDX.Direct3D9.Format.A4L4\"/></strong></td><td>52</td><td>8-bit using 4 bits each for alpha and luminance.</td></tr> <tr><td><strong><see cref=\"F:SharpDX.Direct3D9.Format.A1\"/></strong></td><td>118</td><td>1-bit monochrome.\t\n            <strong>Differences between Direct3D 9 and Direct3D 9Ex:??</strong>This flag is available in Direct3D 9Ex only. </td></tr> <tr><td><strong><see cref=\"F:SharpDX.Direct3D9.Format.MtA2B10G10R10XrBias\"/></strong></td><td>119</td><td>2.8-biased fixed point.\t\n            <strong>Differences between Direct3D 9 and Direct3D 9Ex:??</strong>This flag is available in Direct3D 9Ex only. </td></tr> <tr><td><strong><see cref=\"F:SharpDX.Direct3D9.Format.BinaryBuffer\"/></strong></td><td>199</td><td>Binary format indicating that the data has no inherent type.\t\n            <strong>Differences between Direct3D 9 and Direct3D 9Ex:??</strong>This flag is available in Direct3D 9Ex only. </td></tr> </table><p>?</p>Other<p>This flag is used for undefined formats.</p><table> <tr><th>Other flags</th><th>Value</th><th>Format</th></tr> <tr><td><strong><see cref=\"F:SharpDX.Direct3D9.Format.Unknown\"/></strong></td><td>0</td><td>Surface format is unknown</td></tr> </table><p>?</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFORMAT']/*\"/>\t\n            <msdn-id>bb172558</msdn-id>\t\n            <unmanaged>D3DFORMAT</unmanaged>\t\n            <unmanaged-short>D3DFORMAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Format.Unknown\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFMT_UNKNOWN']/*\"/>\t\n            <unmanaged>D3DFMT_UNKNOWN</unmanaged>\t\n            <unmanaged-short>D3DFMT_UNKNOWN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Format.R8G8B8\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFMT_R8G8B8']/*\"/>\t\n            <unmanaged>D3DFMT_R8G8B8</unmanaged>\t\n            <unmanaged-short>D3DFMT_R8G8B8</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Format.A8R8G8B8\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFMT_A8R8G8B8']/*\"/>\t\n            <unmanaged>D3DFMT_A8R8G8B8</unmanaged>\t\n            <unmanaged-short>D3DFMT_A8R8G8B8</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Format.X8R8G8B8\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFMT_X8R8G8B8']/*\"/>\t\n            <unmanaged>D3DFMT_X8R8G8B8</unmanaged>\t\n            <unmanaged-short>D3DFMT_X8R8G8B8</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Format.R5G6B5\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFMT_R5G6B5']/*\"/>\t\n            <unmanaged>D3DFMT_R5G6B5</unmanaged>\t\n            <unmanaged-short>D3DFMT_R5G6B5</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Format.X1R5G5B5\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFMT_X1R5G5B5']/*\"/>\t\n            <unmanaged>D3DFMT_X1R5G5B5</unmanaged>\t\n            <unmanaged-short>D3DFMT_X1R5G5B5</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Format.A1R5G5B5\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFMT_A1R5G5B5']/*\"/>\t\n            <unmanaged>D3DFMT_A1R5G5B5</unmanaged>\t\n            <unmanaged-short>D3DFMT_A1R5G5B5</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Format.A4R4G4B4\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFMT_A4R4G4B4']/*\"/>\t\n            <unmanaged>D3DFMT_A4R4G4B4</unmanaged>\t\n            <unmanaged-short>D3DFMT_A4R4G4B4</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Format.R3G3B2\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFMT_R3G3B2']/*\"/>\t\n            <unmanaged>D3DFMT_R3G3B2</unmanaged>\t\n            <unmanaged-short>D3DFMT_R3G3B2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Format.A8\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFMT_A8']/*\"/>\t\n            <unmanaged>D3DFMT_A8</unmanaged>\t\n            <unmanaged-short>D3DFMT_A8</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Format.A8R3G3B2\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFMT_A8R3G3B2']/*\"/>\t\n            <unmanaged>D3DFMT_A8R3G3B2</unmanaged>\t\n            <unmanaged-short>D3DFMT_A8R3G3B2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Format.X4R4G4B4\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFMT_X4R4G4B4']/*\"/>\t\n            <unmanaged>D3DFMT_X4R4G4B4</unmanaged>\t\n            <unmanaged-short>D3DFMT_X4R4G4B4</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Format.A2B10G10R10\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFMT_A2B10G10R10']/*\"/>\t\n            <unmanaged>D3DFMT_A2B10G10R10</unmanaged>\t\n            <unmanaged-short>D3DFMT_A2B10G10R10</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Format.A8B8G8R8\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFMT_A8B8G8R8']/*\"/>\t\n            <unmanaged>D3DFMT_A8B8G8R8</unmanaged>\t\n            <unmanaged-short>D3DFMT_A8B8G8R8</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Format.X8B8G8R8\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFMT_X8B8G8R8']/*\"/>\t\n            <unmanaged>D3DFMT_X8B8G8R8</unmanaged>\t\n            <unmanaged-short>D3DFMT_X8B8G8R8</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Format.G16R16\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFMT_G16R16']/*\"/>\t\n            <unmanaged>D3DFMT_G16R16</unmanaged>\t\n            <unmanaged-short>D3DFMT_G16R16</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Format.A2R10G10B10\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFMT_A2R10G10B10']/*\"/>\t\n            <unmanaged>D3DFMT_A2R10G10B10</unmanaged>\t\n            <unmanaged-short>D3DFMT_A2R10G10B10</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Format.A16B16G16R16\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFMT_A16B16G16R16']/*\"/>\t\n            <unmanaged>D3DFMT_A16B16G16R16</unmanaged>\t\n            <unmanaged-short>D3DFMT_A16B16G16R16</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Format.A8P8\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFMT_A8P8']/*\"/>\t\n            <unmanaged>D3DFMT_A8P8</unmanaged>\t\n            <unmanaged-short>D3DFMT_A8P8</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Format.P8\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFMT_P8']/*\"/>\t\n            <unmanaged>D3DFMT_P8</unmanaged>\t\n            <unmanaged-short>D3DFMT_P8</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Format.L8\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFMT_L8']/*\"/>\t\n            <unmanaged>D3DFMT_L8</unmanaged>\t\n            <unmanaged-short>D3DFMT_L8</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Format.A8L8\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFMT_A8L8']/*\"/>\t\n            <unmanaged>D3DFMT_A8L8</unmanaged>\t\n            <unmanaged-short>D3DFMT_A8L8</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Format.A4L4\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFMT_A4L4']/*\"/>\t\n            <unmanaged>D3DFMT_A4L4</unmanaged>\t\n            <unmanaged-short>D3DFMT_A4L4</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Format.V8U8\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFMT_V8U8']/*\"/>\t\n            <unmanaged>D3DFMT_V8U8</unmanaged>\t\n            <unmanaged-short>D3DFMT_V8U8</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Format.L6V5U5\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFMT_L6V5U5']/*\"/>\t\n            <unmanaged>D3DFMT_L6V5U5</unmanaged>\t\n            <unmanaged-short>D3DFMT_L6V5U5</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Format.X8L8V8U8\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFMT_X8L8V8U8']/*\"/>\t\n            <unmanaged>D3DFMT_X8L8V8U8</unmanaged>\t\n            <unmanaged-short>D3DFMT_X8L8V8U8</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Format.Q8W8V8U8\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFMT_Q8W8V8U8']/*\"/>\t\n            <unmanaged>D3DFMT_Q8W8V8U8</unmanaged>\t\n            <unmanaged-short>D3DFMT_Q8W8V8U8</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Format.V16U16\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFMT_V16U16']/*\"/>\t\n            <unmanaged>D3DFMT_V16U16</unmanaged>\t\n            <unmanaged-short>D3DFMT_V16U16</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Format.A2W10V10U10\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFMT_A2W10V10U10']/*\"/>\t\n            <unmanaged>D3DFMT_A2W10V10U10</unmanaged>\t\n            <unmanaged-short>D3DFMT_A2W10V10U10</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Format.Uyvy\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFMT_UYVY']/*\"/>\t\n            <unmanaged>D3DFMT_UYVY</unmanaged>\t\n            <unmanaged-short>D3DFMT_UYVY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Format.R8G8_B8G8\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFMT_R8G8_B8G8']/*\"/>\t\n            <unmanaged>D3DFMT_R8G8_B8G8</unmanaged>\t\n            <unmanaged-short>D3DFMT_R8G8_B8G8</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Format.Yuy2\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFMT_YUY2']/*\"/>\t\n            <unmanaged>D3DFMT_YUY2</unmanaged>\t\n            <unmanaged-short>D3DFMT_YUY2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Format.G8R8_G8B8\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFMT_G8R8_G8B8']/*\"/>\t\n            <unmanaged>D3DFMT_G8R8_G8B8</unmanaged>\t\n            <unmanaged-short>D3DFMT_G8R8_G8B8</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Format.Dxt1\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFMT_DXT1']/*\"/>\t\n            <unmanaged>D3DFMT_DXT1</unmanaged>\t\n            <unmanaged-short>D3DFMT_DXT1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Format.Dxt2\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFMT_DXT2']/*\"/>\t\n            <unmanaged>D3DFMT_DXT2</unmanaged>\t\n            <unmanaged-short>D3DFMT_DXT2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Format.Dxt3\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFMT_DXT3']/*\"/>\t\n            <unmanaged>D3DFMT_DXT3</unmanaged>\t\n            <unmanaged-short>D3DFMT_DXT3</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Format.Dxt4\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFMT_DXT4']/*\"/>\t\n            <unmanaged>D3DFMT_DXT4</unmanaged>\t\n            <unmanaged-short>D3DFMT_DXT4</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Format.Dxt5\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFMT_DXT5']/*\"/>\t\n            <unmanaged>D3DFMT_DXT5</unmanaged>\t\n            <unmanaged-short>D3DFMT_DXT5</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Format.D16Lockable\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFMT_D16_LOCKABLE']/*\"/>\t\n            <unmanaged>D3DFMT_D16_LOCKABLE</unmanaged>\t\n            <unmanaged-short>D3DFMT_D16_LOCKABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Format.D32\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFMT_D32']/*\"/>\t\n            <unmanaged>D3DFMT_D32</unmanaged>\t\n            <unmanaged-short>D3DFMT_D32</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Format.D15S1\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFMT_D15S1']/*\"/>\t\n            <unmanaged>D3DFMT_D15S1</unmanaged>\t\n            <unmanaged-short>D3DFMT_D15S1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Format.D24S8\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFMT_D24S8']/*\"/>\t\n            <unmanaged>D3DFMT_D24S8</unmanaged>\t\n            <unmanaged-short>D3DFMT_D24S8</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Format.D24X8\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFMT_D24X8']/*\"/>\t\n            <unmanaged>D3DFMT_D24X8</unmanaged>\t\n            <unmanaged-short>D3DFMT_D24X8</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Format.D24X4S4\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFMT_D24X4S4']/*\"/>\t\n            <unmanaged>D3DFMT_D24X4S4</unmanaged>\t\n            <unmanaged-short>D3DFMT_D24X4S4</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Format.D16\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFMT_D16']/*\"/>\t\n            <unmanaged>D3DFMT_D16</unmanaged>\t\n            <unmanaged-short>D3DFMT_D16</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Format.D32SingleLockable\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFMT_D32F_LOCKABLE']/*\"/>\t\n            <unmanaged>D3DFMT_D32F_LOCKABLE</unmanaged>\t\n            <unmanaged-short>D3DFMT_D32F_LOCKABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Format.D24SingleS8\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFMT_D24FS8']/*\"/>\t\n            <unmanaged>D3DFMT_D24FS8</unmanaged>\t\n            <unmanaged-short>D3DFMT_D24FS8</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Format.D32Lockable\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFMT_D32_LOCKABLE']/*\"/>\t\n            <unmanaged>D3DFMT_D32_LOCKABLE</unmanaged>\t\n            <unmanaged-short>D3DFMT_D32_LOCKABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Format.S8Lockable\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFMT_S8_LOCKABLE']/*\"/>\t\n            <unmanaged>D3DFMT_S8_LOCKABLE</unmanaged>\t\n            <unmanaged-short>D3DFMT_S8_LOCKABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Format.L16\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFMT_L16']/*\"/>\t\n            <unmanaged>D3DFMT_L16</unmanaged>\t\n            <unmanaged-short>D3DFMT_L16</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Format.VertexData\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFMT_VERTEXDATA']/*\"/>\t\n            <unmanaged>D3DFMT_VERTEXDATA</unmanaged>\t\n            <unmanaged-short>D3DFMT_VERTEXDATA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Format.Index16\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFMT_INDEX16']/*\"/>\t\n            <unmanaged>D3DFMT_INDEX16</unmanaged>\t\n            <unmanaged-short>D3DFMT_INDEX16</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Format.Index32\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFMT_INDEX32']/*\"/>\t\n            <unmanaged>D3DFMT_INDEX32</unmanaged>\t\n            <unmanaged-short>D3DFMT_INDEX32</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Format.Q16W16V16U16\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFMT_Q16W16V16U16']/*\"/>\t\n            <unmanaged>D3DFMT_Q16W16V16U16</unmanaged>\t\n            <unmanaged-short>D3DFMT_Q16W16V16U16</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Format.Multi2Argb8\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFMT_MULTI2_ARGB8']/*\"/>\t\n            <unmanaged>D3DFMT_MULTI2_ARGB8</unmanaged>\t\n            <unmanaged-short>D3DFMT_MULTI2_ARGB8</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Format.R16F\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFMT_R16F']/*\"/>\t\n            <unmanaged>D3DFMT_R16F</unmanaged>\t\n            <unmanaged-short>D3DFMT_R16F</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Format.G16R16F\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFMT_G16R16F']/*\"/>\t\n            <unmanaged>D3DFMT_G16R16F</unmanaged>\t\n            <unmanaged-short>D3DFMT_G16R16F</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Format.A16B16G16R16F\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFMT_A16B16G16R16F']/*\"/>\t\n            <unmanaged>D3DFMT_A16B16G16R16F</unmanaged>\t\n            <unmanaged-short>D3DFMT_A16B16G16R16F</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Format.R32F\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFMT_R32F']/*\"/>\t\n            <unmanaged>D3DFMT_R32F</unmanaged>\t\n            <unmanaged-short>D3DFMT_R32F</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Format.G32R32F\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFMT_G32R32F']/*\"/>\t\n            <unmanaged>D3DFMT_G32R32F</unmanaged>\t\n            <unmanaged-short>D3DFMT_G32R32F</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Format.A32B32G32R32F\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFMT_A32B32G32R32F']/*\"/>\t\n            <unmanaged>D3DFMT_A32B32G32R32F</unmanaged>\t\n            <unmanaged-short>D3DFMT_A32B32G32R32F</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Format.MtCxV8U8\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFMT_CxV8U8']/*\"/>\t\n            <unmanaged>D3DFMT_CxV8U8</unmanaged>\t\n            <unmanaged-short>D3DFMT_CxV8U8</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Format.A1\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFMT_A1']/*\"/>\t\n            <unmanaged>D3DFMT_A1</unmanaged>\t\n            <unmanaged-short>D3DFMT_A1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Format.MtA2B10G10R10XrBias\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFMT_A2B10G10R10_XR_BIAS']/*\"/>\t\n            <unmanaged>D3DFMT_A2B10G10R10_XR_BIAS</unmanaged>\t\n            <unmanaged-short>D3DFMT_A2B10G10R10_XR_BIAS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Format.BinaryBuffer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFMT_BINARYBUFFER']/*\"/>\t\n            <unmanaged>D3DFMT_BINARYBUFFER</unmanaged>\t\n            <unmanaged-short>D3DFMT_BINARYBUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.FX\">\n            <summary>\t\n            <p>Options for saving and creating effects.</p><p>The constants in the following table are defined in d3dx9effect.h.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXFX']/*\"/>\t\n            <msdn-id>bb172855</msdn-id>\t\n            <unmanaged>D3DXFX</unmanaged>\t\n            <unmanaged-short>D3DXFX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FX.DoNotSaveState\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXFX_DONOTSAVESTATE']/*\"/>\t\n            <unmanaged>D3DXFX_DONOTSAVESTATE</unmanaged>\t\n            <unmanaged-short>D3DXFX_DONOTSAVESTATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FX.DoNotSaveShaderState\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXFX_DONOTSAVESHADERSTATE']/*\"/>\t\n            <unmanaged>D3DXFX_DONOTSAVESHADERSTATE</unmanaged>\t\n            <unmanaged-short>D3DXFX_DONOTSAVESHADERSTATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FX.DoNotSaveSamplerState\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXFX_DONOTSAVESAMPLERSTATE']/*\"/>\t\n            <unmanaged>D3DXFX_DONOTSAVESAMPLERSTATE</unmanaged>\t\n            <unmanaged-short>D3DXFX_DONOTSAVESAMPLERSTATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FX.NotCloneable\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXFX_NOT_CLONEABLE']/*\"/>\t\n            <unmanaged>D3DXFX_NOT_CLONEABLE</unmanaged>\t\n            <unmanaged-short>D3DXFX_NOT_CLONEABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FX.LargeAddressAware\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXFX_LARGEADDRESSAWARE']/*\"/>\t\n            <unmanaged>D3DXFX_LARGEADDRESSAWARE</unmanaged>\t\n            <unmanaged-short>D3DXFX_LARGEADDRESSAWARE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FX.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.Channel\">\n            <summary>\t\n            <p>The following flags are used to specify which channels in a texture to operate on.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX_CHANNEL']/*\"/>\t\n            <msdn-id>bb205563</msdn-id>\t\n            <unmanaged>D3DX_CHANNEL</unmanaged>\t\n            <unmanaged-short>D3DX_CHANNEL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Channel.Red\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX_CHANNEL_RED']/*\"/>\t\n            <unmanaged>D3DX_CHANNEL_RED</unmanaged>\t\n            <unmanaged-short>D3DX_CHANNEL_RED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Channel.Blue\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX_CHANNEL_BLUE']/*\"/>\t\n            <unmanaged>D3DX_CHANNEL_BLUE</unmanaged>\t\n            <unmanaged-short>D3DX_CHANNEL_BLUE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Channel.Green\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX_CHANNEL_GREEN']/*\"/>\t\n            <unmanaged>D3DX_CHANNEL_GREEN</unmanaged>\t\n            <unmanaged-short>D3DX_CHANNEL_GREEN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Channel.Alpha\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX_CHANNEL_ALPHA']/*\"/>\t\n            <unmanaged>D3DX_CHANNEL_ALPHA</unmanaged>\t\n            <unmanaged-short>D3DX_CHANNEL_ALPHA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Channel.Luminance\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX_CHANNEL_LUMINANCE']/*\"/>\t\n            <unmanaged>D3DX_CHANNEL_LUMINANCE</unmanaged>\t\n            <unmanaged-short>D3DX_CHANNEL_LUMINANCE</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.ImageFileFormat\">\n            <summary>\t\n            <p>Describes the supported image file formats. See Remarks for descriptions of these formats.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Functions that begin with D3DXLoadxxx support all of the formats listed. Functions that begin with D3DXSavexxx support all of the formats listed except the Truevision (.tga) and portable pixmap (.ppm) formats.</p><p>The following table lists the available input and output formats. </p><table> <tr><th>File Extension</th><th>Description</th></tr> <tr><td>.bmp</td><td>Windows bitmap format. Contains a header that describes the resolution of the device on which the rectangle of pixels was created, the dimensions of the rectangle, the size of the array of bits, a logical palette, and an array of bits that defines the relationship between pixels in the bitmapped image and entries in the logical palette.</td></tr> <tr><td>.dds</td><td>DirectDraw Surface file format. Stores textures, volume textures, and cubic environment maps, with or without mipmap levels, and with or without pixel compression. See DDS.</td></tr> <tr><td>.dib</td><td>Windows DIB. Contains an array of bits combined with structures that specify width and height of the bitmapped image, color format of the device where the image was created, and resolution of the device used to create that image.</td></tr> <tr><td>.hdr</td><td>HDR format. Encodes each pixel as an RGBE 32-bit color, with 8 bits of mantissa for red, green, and blue, and a shared 8-bit exponent. Each channel is separately compressed with run-length encoding (RLE).</td></tr> <tr><td>.jpg</td><td>JPEG standard. Specifies variable compression of 24-bit RGB color and 8-bit gray-scale Tagged Image File Format (TIFF) image document files.</td></tr> <tr><td>.pfm</td><td>Portable float map format. A raw floating point image format, without any compression. The file header specifies image width, height, monochrome or color, and machine word order. Pixel data is stored as 32-bit floating point values, with 3 values per pixel for color, and one value per pixel for monochrome.</td></tr> <tr><td>.png</td><td>PNG format. A non-proprietary bitmap format using lossless compression.</td></tr> <tr><td>.ppm</td><td>Portable Pixmap format. A binary or ASCII file format for color images that includes image height and width and the maximum color component value.</td></tr> <tr><td>.tga</td><td>Targa or Truevision Graphics Adapter format. Supports depths of 8, 15, 16, 24, and 32 bits, including 8-bit gray scale, and contains optional color palette data, image (x, y) origin and size data, and pixel data.</td></tr> </table><p>?</p><p>See Types of Bitmaps for more information on some of these formats.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXIMAGE_FILEFORMAT']/*\"/>\t\n            <msdn-id>bb172878</msdn-id>\t\n            <unmanaged>D3DXIMAGE_FILEFORMAT</unmanaged>\t\n            <unmanaged-short>D3DXIMAGE_FILEFORMAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ImageFileFormat.Bmp\">\n            <summary>\t\n            <dd> <p>Windows bitmap (BMP) file format.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXIFF_BMP']/*\"/>\t\n            <msdn-id>bb172878</msdn-id>\t\n            <unmanaged>D3DXIFF_BMP</unmanaged>\t\n            <unmanaged-short>D3DXIFF_BMP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ImageFileFormat.Jpg\">\n            <summary>\t\n            <dd> <p>Joint Photographics Experts Group (JPEG) compressed file format.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXIFF_JPG']/*\"/>\t\n            <msdn-id>bb172878</msdn-id>\t\n            <unmanaged>D3DXIFF_JPG</unmanaged>\t\n            <unmanaged-short>D3DXIFF_JPG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ImageFileFormat.Tga\">\n            <summary>\t\n            <dd> <p>Truevision (Targa, or TGA) image file format.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXIFF_TGA']/*\"/>\t\n            <msdn-id>bb172878</msdn-id>\t\n            <unmanaged>D3DXIFF_TGA</unmanaged>\t\n            <unmanaged-short>D3DXIFF_TGA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ImageFileFormat.Png\">\n            <summary>\t\n            <dd> <p>Portable Network Graphics (PNG) file format.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXIFF_PNG']/*\"/>\t\n            <msdn-id>bb172878</msdn-id>\t\n            <unmanaged>D3DXIFF_PNG</unmanaged>\t\n            <unmanaged-short>D3DXIFF_PNG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ImageFileFormat.Dds\">\n            <summary>\t\n            <dd> <p>DirectDraw surface (DDS) file format.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXIFF_DDS']/*\"/>\t\n            <msdn-id>bb172878</msdn-id>\t\n            <unmanaged>D3DXIFF_DDS</unmanaged>\t\n            <unmanaged-short>D3DXIFF_DDS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ImageFileFormat.Ppm\">\n            <summary>\t\n            <dd> <p>Portable pixmap (PPM) file format.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXIFF_PPM']/*\"/>\t\n            <msdn-id>bb172878</msdn-id>\t\n            <unmanaged>D3DXIFF_PPM</unmanaged>\t\n            <unmanaged-short>D3DXIFF_PPM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ImageFileFormat.Dib\">\n            <summary>\t\n            <dd> <p>Windows device-independent bitmap (DIB) file format.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXIFF_DIB']/*\"/>\t\n            <msdn-id>bb172878</msdn-id>\t\n            <unmanaged>D3DXIFF_DIB</unmanaged>\t\n            <unmanaged-short>D3DXIFF_DIB</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ImageFileFormat.Hdr\">\n            <summary>\t\n            <dd> <p>High dynamic range (HDR) file format.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXIFF_HDR']/*\"/>\t\n            <msdn-id>bb172878</msdn-id>\t\n            <unmanaged>D3DXIFF_HDR</unmanaged>\t\n            <unmanaged-short>D3DXIFF_HDR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ImageFileFormat.Pfm\">\n            <summary>\t\n            <dd> <p>Portable float map file format.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXIFF_PFM']/*\"/>\t\n            <msdn-id>bb172878</msdn-id>\t\n            <unmanaged>D3DXIFF_PFM</unmanaged>\t\n            <unmanaged-short>D3DXIFF_PFM</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.IncludeType\">\n            <summary>\t\n            <p>Describes the location for the include file.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXINCLUDE_TYPE']/*\"/>\t\n            <msdn-id>bb172881</msdn-id>\t\n            <unmanaged>D3DXINCLUDE_TYPE</unmanaged>\t\n            <unmanaged-short>D3DXINCLUDE_TYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.IncludeType.Local\">\n            <summary>\t\n            <dd> <p>Look in the local project for the include file.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXINC_LOCAL']/*\"/>\t\n            <msdn-id>bb172881</msdn-id>\t\n            <unmanaged>D3DXINC_LOCAL</unmanaged>\t\n            <unmanaged-short>D3DXINC_LOCAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.IncludeType.System\">\n            <summary>\t\n            <dd> <p>Look in the system path for the include file.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXINC_SYSTEM']/*\"/>\t\n            <msdn-id>bb172881</msdn-id>\t\n            <unmanaged>D3DXINC_SYSTEM</unmanaged>\t\n            <unmanaged-short>D3DXINC_SYSTEM</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.Issue\">\n            <summary>\t\n            <p>This macro creates a value used by <strong>Issue</strong> to issue a query end. </p>#define <see cref=\"F:SharpDX.Direct3D9.Issue.End\"/> (1 &lt;&lt; 0)\t\n            </summary>\t\n            <remarks>\t\n            <p>This macro changes the query state to nonsignaled.</p><p><see cref=\"F:SharpDX.Direct3D9.Issue.End\"/> is valid for the following query types.</p><ul> <li><see cref=\"F:SharpDX.Direct3D9.QueryType.VCache\"/></li> <li>D3DQUERYTYPE_ResourceManager</li> <li><see cref=\"F:SharpDX.Direct3D9.QueryType.VertexStats\"/></li> <li><see cref=\"F:SharpDX.Direct3D9.QueryType.Event\"/></li> <li><see cref=\"F:SharpDX.Direct3D9.QueryType.Occlusion\"/></li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DISSUE']/*\"/>\t\n            <msdn-id>bb172565</msdn-id>\t\n            <unmanaged>D3DISSUE</unmanaged>\t\n            <unmanaged-short>D3DISSUE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Issue.End\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DISSUE_END']/*\"/>\t\n            <unmanaged>D3DISSUE_END</unmanaged>\t\n            <unmanaged-short>D3DISSUE_END</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Issue.Begin\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DISSUE_BEGIN']/*\"/>\t\n            <unmanaged>D3DISSUE_BEGIN</unmanaged>\t\n            <unmanaged-short>D3DISSUE_BEGIN</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.LightType\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DLIGHTTYPE']/*\"/>\t\n            <unmanaged>D3DLIGHTTYPE</unmanaged>\t\n            <unmanaged-short>D3DLIGHTTYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.LightType.Point\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DLIGHT_POINT']/*\"/>\t\n            <unmanaged>D3DLIGHT_POINT</unmanaged>\t\n            <unmanaged-short>D3DLIGHT_POINT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.LightType.Spot\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DLIGHT_SPOT']/*\"/>\t\n            <unmanaged>D3DLIGHT_SPOT</unmanaged>\t\n            <unmanaged-short>D3DLIGHT_SPOT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.LightType.Directional\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DLIGHT_DIRECTIONAL']/*\"/>\t\n            <unmanaged>D3DLIGHT_DIRECTIONAL</unmanaged>\t\n            <unmanaged-short>D3DLIGHT_DIRECTIONAL</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.LineCaps\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DLINECAPS']/*\"/>\t\n            <unmanaged>D3DLINECAPS</unmanaged>\t\n            <unmanaged-short>D3DLINECAPS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.LineCaps.Texture\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DLINECAPS_TEXTURE']/*\"/>\t\n            <unmanaged>D3DLINECAPS_TEXTURE</unmanaged>\t\n            <unmanaged-short>D3DLINECAPS_TEXTURE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.LineCaps.DepthTest\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DLINECAPS_ZTEST']/*\"/>\t\n            <unmanaged>D3DLINECAPS_ZTEST</unmanaged>\t\n            <unmanaged-short>D3DLINECAPS_ZTEST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.LineCaps.Blend\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DLINECAPS_BLEND']/*\"/>\t\n            <unmanaged>D3DLINECAPS_BLEND</unmanaged>\t\n            <unmanaged-short>D3DLINECAPS_BLEND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.LineCaps.AlphaCompare\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DLINECAPS_ALPHACMP']/*\"/>\t\n            <unmanaged>D3DLINECAPS_ALPHACMP</unmanaged>\t\n            <unmanaged-short>D3DLINECAPS_ALPHACMP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.LineCaps.Fog\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DLINECAPS_FOG']/*\"/>\t\n            <unmanaged>D3DLINECAPS_FOG</unmanaged>\t\n            <unmanaged-short>D3DLINECAPS_FOG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.LineCaps.Antialias\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DLINECAPS_ANTIALIAS']/*\"/>\t\n            <unmanaged>D3DLINECAPS_ANTIALIAS</unmanaged>\t\n            <unmanaged-short>D3DLINECAPS_ANTIALIAS</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.LockFlags\">\n            <summary>\t\n            <p>A combination of zero or more locking options that describe the type of lock to perform.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DLOCK']/*\"/>\t\n            <msdn-id>bb172568</msdn-id>\t\n            <unmanaged>D3DLOCK</unmanaged>\t\n            <unmanaged-short>D3DLOCK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.LockFlags.ReadOnly\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DLOCK_READONLY']/*\"/>\t\n            <unmanaged>D3DLOCK_READONLY</unmanaged>\t\n            <unmanaged-short>D3DLOCK_READONLY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.LockFlags.Discard\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DLOCK_DISCARD']/*\"/>\t\n            <unmanaged>D3DLOCK_DISCARD</unmanaged>\t\n            <unmanaged-short>D3DLOCK_DISCARD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.LockFlags.NoOverwrite\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DLOCK_NOOVERWRITE']/*\"/>\t\n            <unmanaged>D3DLOCK_NOOVERWRITE</unmanaged>\t\n            <unmanaged-short>D3DLOCK_NOOVERWRITE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.LockFlags.NoSystemLock\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DLOCK_NOSYSLOCK']/*\"/>\t\n            <unmanaged>D3DLOCK_NOSYSLOCK</unmanaged>\t\n            <unmanaged-short>D3DLOCK_NOSYSLOCK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.LockFlags.DoNotWait\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DLOCK_DONOTWAIT']/*\"/>\t\n            <unmanaged>D3DLOCK_DONOTWAIT</unmanaged>\t\n            <unmanaged-short>D3DLOCK_DONOTWAIT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.LockFlags.NoDirtyUpdate\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DLOCK_NO_DIRTY_UPDATE']/*\"/>\t\n            <unmanaged>D3DLOCK_NO_DIRTY_UPDATE</unmanaged>\t\n            <unmanaged-short>D3DLOCK_NO_DIRTY_UPDATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.LockFlags.DoNotCopyData\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DLOCK_DONOTCOPYDATA']/*\"/>\t\n            <unmanaged>D3DLOCK_DONOTCOPYDATA</unmanaged>\t\n            <unmanaged-short>D3DLOCK_DONOTCOPYDATA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.LockFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.MeshDataType\">\n            <summary>\t\n            <p>Defines the type of mesh data present in <strong><see cref=\"T:SharpDX.Direct3D9.MeshData\"/></strong>.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXMESHDATATYPE']/*\"/>\t\n            <msdn-id>bb205373</msdn-id>\t\n            <unmanaged>D3DXMESHDATATYPE</unmanaged>\t\n            <unmanaged-short>D3DXMESHDATATYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.MeshDataType.Mesh\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXMESHTYPE_MESH']/*\"/>\t\n            <unmanaged>D3DXMESHTYPE_MESH</unmanaged>\t\n            <unmanaged-short>D3DXMESHTYPE_MESH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.MeshDataType.ProgressiveMesh\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXMESHTYPE_PMESH']/*\"/>\t\n            <unmanaged>D3DXMESHTYPE_PMESH</unmanaged>\t\n            <unmanaged-short>D3DXMESHTYPE_PMESH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.MeshDataType.PatchMesh\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXMESHTYPE_PATCHMESH']/*\"/>\t\n            <unmanaged>D3DXMESHTYPE_PATCHMESH</unmanaged>\t\n            <unmanaged-short>D3DXMESHTYPE_PATCHMESH</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.MeshFlags\">\n            <summary>\t\n            <p>Flags used to specify creation options for a mesh.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>A 32-bit mesh (<see cref=\"F:SharpDX.Direct3D9.MeshFlags.Use32Bit\"/>) can theoretically support (2^32)-1 faces and vertices. However, allocating memory for a mesh that large on a 32-bit operating system is not practical.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='_D3DXMESH']/*\"/>\t\n            <msdn-id>bb205370</msdn-id>\t\n            <unmanaged>_D3DXMESH</unmanaged>\t\n            <unmanaged-short>_D3DXMESH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.MeshFlags.Use32Bit\">\n            <summary>\t\n            <dd> <p>The mesh has 32-bit indices instead of 16-bit indices. See Remarks.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXMESH_32BIT']/*\"/>\t\n            <msdn-id>bb205370</msdn-id>\t\n            <unmanaged>D3DXMESH_32BIT</unmanaged>\t\n            <unmanaged-short>D3DXMESH_32BIT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.MeshFlags.DoNotClip\">\n            <summary>\t\n            <dd> <p>Use the <strong><see cref=\"F:SharpDX.Direct3D9.Usage.DoNotClip\"/></strong> usage flag for vertex and index buffers.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXMESH_DONOTCLIP']/*\"/>\t\n            <msdn-id>bb205370</msdn-id>\t\n            <unmanaged>D3DXMESH_DONOTCLIP</unmanaged>\t\n            <unmanaged-short>D3DXMESH_DONOTCLIP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.MeshFlags.Points\">\n            <summary>\t\n            <dd> <p>Use the <strong><see cref=\"F:SharpDX.Direct3D9.Usage.Points\"/></strong> usage flag for vertex and index buffers.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXMESH_POINTS']/*\"/>\t\n            <msdn-id>bb205370</msdn-id>\t\n            <unmanaged>D3DXMESH_POINTS</unmanaged>\t\n            <unmanaged-short>D3DXMESH_POINTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.MeshFlags.RTPatches\">\n            <summary>\t\n            <dd> <p>Use the <strong><see cref=\"F:SharpDX.Direct3D9.Usage.RTPatches\"/></strong> usage flag for vertex and index buffers.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXMESH_RTPATCHES']/*\"/>\t\n            <msdn-id>bb205370</msdn-id>\t\n            <unmanaged>D3DXMESH_RTPATCHES</unmanaged>\t\n            <unmanaged-short>D3DXMESH_RTPATCHES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.MeshFlags.NPatches\">\n            <summary>\t\n            <dd> <p>Specifying this flag causes the vertex and index buffer of the mesh to be created with <strong><see cref=\"F:SharpDX.Direct3D9.Usage.NPatches\"/></strong> flag. This is required if the mesh object is to be rendered using N-patch enhancement using Direct3D.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXMESH_NPATCHES']/*\"/>\t\n            <msdn-id>bb205370</msdn-id>\t\n            <unmanaged>D3DXMESH_NPATCHES</unmanaged>\t\n            <unmanaged-short>D3DXMESH_NPATCHES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.MeshFlags.VertexBufferSystemMemory\">\n            <summary>\t\n            <dd> <p>Use the <strong><see cref=\"F:SharpDX.Direct3D9.Pool.SystemMemory\"/></strong> usage flag for vertex buffers.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXMESH_VB_SYSTEMMEM']/*\"/>\t\n            <msdn-id>bb205370</msdn-id>\t\n            <unmanaged>D3DXMESH_VB_SYSTEMMEM</unmanaged>\t\n            <unmanaged-short>D3DXMESH_VB_SYSTEMMEM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.MeshFlags.VertexBufferManaged\">\n            <summary>\t\n            <dd> <p>Use the <strong><see cref=\"F:SharpDX.Direct3D9.Pool.Managed\"/></strong> usage flag for vertex buffers.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXMESH_VB_MANAGED']/*\"/>\t\n            <msdn-id>bb205370</msdn-id>\t\n            <unmanaged>D3DXMESH_VB_MANAGED</unmanaged>\t\n            <unmanaged-short>D3DXMESH_VB_MANAGED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.MeshFlags.VertexBufferWriteOnly\">\n            <summary>\t\n            <dd> <p>Use the <strong><see cref=\"F:SharpDX.Direct3D9.Usage.WriteOnly\"/></strong> usage flag for vertex buffers.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXMESH_VB_WRITEONLY']/*\"/>\t\n            <msdn-id>bb205370</msdn-id>\t\n            <unmanaged>D3DXMESH_VB_WRITEONLY</unmanaged>\t\n            <unmanaged-short>D3DXMESH_VB_WRITEONLY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.MeshFlags.VertexBufferDynamic\">\n            <summary>\t\n            <dd> <p>Use the <strong><see cref=\"F:SharpDX.Direct3D9.Usage.Dynamic\"/></strong> usage flag for vertex buffers.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXMESH_VB_DYNAMIC']/*\"/>\t\n            <msdn-id>bb205370</msdn-id>\t\n            <unmanaged>D3DXMESH_VB_DYNAMIC</unmanaged>\t\n            <unmanaged-short>D3DXMESH_VB_DYNAMIC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.MeshFlags.VertexBufferSoftware\">\n            <summary>\t\n            <dd> <p>Use the <strong><see cref=\"F:SharpDX.Direct3D9.Usage.SoftwareProcessing\"/></strong> usage flag for vertex buffers.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXMESH_VB_SOFTWAREPROCESSING']/*\"/>\t\n            <msdn-id>bb205370</msdn-id>\t\n            <unmanaged>D3DXMESH_VB_SOFTWAREPROCESSING</unmanaged>\t\n            <unmanaged-short>D3DXMESH_VB_SOFTWAREPROCESSING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.MeshFlags.IndexBufferSystemMemory\">\n            <summary>\t\n            <dd> <p>Use the <strong><see cref=\"F:SharpDX.Direct3D9.Pool.SystemMemory\"/></strong> usage flag for index buffers.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXMESH_IB_SYSTEMMEM']/*\"/>\t\n            <msdn-id>bb205370</msdn-id>\t\n            <unmanaged>D3DXMESH_IB_SYSTEMMEM</unmanaged>\t\n            <unmanaged-short>D3DXMESH_IB_SYSTEMMEM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.MeshFlags.IndexBufferManaged\">\n            <summary>\t\n            <dd> <p>Use the <strong><see cref=\"F:SharpDX.Direct3D9.Pool.Managed\"/></strong> usage flag for index buffers.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXMESH_IB_MANAGED']/*\"/>\t\n            <msdn-id>bb205370</msdn-id>\t\n            <unmanaged>D3DXMESH_IB_MANAGED</unmanaged>\t\n            <unmanaged-short>D3DXMESH_IB_MANAGED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.MeshFlags.IndexBufferWriteOnly\">\n            <summary>\t\n            <dd> <p>Use the <strong><see cref=\"F:SharpDX.Direct3D9.Usage.WriteOnly\"/></strong> usage flag for index buffers.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXMESH_IB_WRITEONLY']/*\"/>\t\n            <msdn-id>bb205370</msdn-id>\t\n            <unmanaged>D3DXMESH_IB_WRITEONLY</unmanaged>\t\n            <unmanaged-short>D3DXMESH_IB_WRITEONLY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.MeshFlags.IndexBufferDynamic\">\n            <summary>\t\n            <dd> <p>Use the <strong><see cref=\"F:SharpDX.Direct3D9.Usage.Dynamic\"/></strong> usage flag for index buffers.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXMESH_IB_DYNAMIC']/*\"/>\t\n            <msdn-id>bb205370</msdn-id>\t\n            <unmanaged>D3DXMESH_IB_DYNAMIC</unmanaged>\t\n            <unmanaged-short>D3DXMESH_IB_DYNAMIC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.MeshFlags.IndexBufferSoftware\">\n            <summary>\t\n            <dd> <p>Use the <strong><see cref=\"F:SharpDX.Direct3D9.Usage.SoftwareProcessing\"/></strong> usage flag for index buffers.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXMESH_IB_SOFTWAREPROCESSING']/*\"/>\t\n            <msdn-id>bb205370</msdn-id>\t\n            <unmanaged>D3DXMESH_IB_SOFTWAREPROCESSING</unmanaged>\t\n            <unmanaged-short>D3DXMESH_IB_SOFTWAREPROCESSING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.MeshFlags.VertexBufferShare\">\n            <summary>\t\n            <dd> <p>Forces the cloned meshes to share vertex buffers.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXMESH_VB_SHARE']/*\"/>\t\n            <msdn-id>bb205370</msdn-id>\t\n            <unmanaged>D3DXMESH_VB_SHARE</unmanaged>\t\n            <unmanaged-short>D3DXMESH_VB_SHARE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.MeshFlags.UseHardwareOnly\">\n            <summary>\t\n            <dd> <p>Use hardware processing only. For mixed-mode device, this flag will cause the system to use hardware (if supported in hardware) or will default to software processing.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXMESH_USEHWONLY']/*\"/>\t\n            <msdn-id>bb205370</msdn-id>\t\n            <unmanaged>D3DXMESH_USEHWONLY</unmanaged>\t\n            <unmanaged-short>D3DXMESH_USEHWONLY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.MeshFlags.SystemMemory\">\n            <summary>\t\n            <dd> <p>Equivalent to specifying both <see cref=\"F:SharpDX.Direct3D9.MeshFlags.VertexBufferSystemMemory\"/> and <see cref=\"F:SharpDX.Direct3D9.MeshFlags.IndexBufferSystemMemory\"/>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXMESH_SYSTEMMEM']/*\"/>\t\n            <msdn-id>bb205370</msdn-id>\t\n            <unmanaged>D3DXMESH_SYSTEMMEM</unmanaged>\t\n            <unmanaged-short>D3DXMESH_SYSTEMMEM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.MeshFlags.Managed\">\n            <summary>\t\n            <dd> <p>Equivalent to specifying both <see cref=\"F:SharpDX.Direct3D9.MeshFlags.VertexBufferManaged\"/> and <see cref=\"F:SharpDX.Direct3D9.MeshFlags.IndexBufferManaged\"/>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXMESH_MANAGED']/*\"/>\t\n            <msdn-id>bb205370</msdn-id>\t\n            <unmanaged>D3DXMESH_MANAGED</unmanaged>\t\n            <unmanaged-short>D3DXMESH_MANAGED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.MeshFlags.WriteOnly\">\n            <summary>\t\n            <dd> <p>Equivalent to specifying both <see cref=\"F:SharpDX.Direct3D9.MeshFlags.VertexBufferWriteOnly\"/> and <see cref=\"F:SharpDX.Direct3D9.MeshFlags.IndexBufferWriteOnly\"/>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXMESH_WRITEONLY']/*\"/>\t\n            <msdn-id>bb205370</msdn-id>\t\n            <unmanaged>D3DXMESH_WRITEONLY</unmanaged>\t\n            <unmanaged-short>D3DXMESH_WRITEONLY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.MeshFlags.Dynamic\">\n            <summary>\t\n            <dd> <p>Equivalent to specifying both <see cref=\"F:SharpDX.Direct3D9.MeshFlags.VertexBufferDynamic\"/> and <see cref=\"F:SharpDX.Direct3D9.MeshFlags.IndexBufferDynamic\"/>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXMESH_DYNAMIC']/*\"/>\t\n            <msdn-id>bb205370</msdn-id>\t\n            <unmanaged>D3DXMESH_DYNAMIC</unmanaged>\t\n            <unmanaged-short>D3DXMESH_DYNAMIC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.MeshFlags.Software\">\n            <summary>\t\n            <dd> <p>Equivalent to specifying both <see cref=\"F:SharpDX.Direct3D9.MeshFlags.VertexBufferSoftware\"/> and <see cref=\"F:SharpDX.Direct3D9.MeshFlags.IndexBufferSoftware\"/>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXMESH_SOFTWAREPROCESSING']/*\"/>\t\n            <msdn-id>bb205370</msdn-id>\t\n            <unmanaged>D3DXMESH_SOFTWAREPROCESSING</unmanaged>\t\n            <unmanaged-short>D3DXMESH_SOFTWAREPROCESSING</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.MeshOptimizeFlags\">\n            <summary>\t\n            <p>Specifies the type of mesh optimization to be performed.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The <see cref=\"F:SharpDX.Direct3D9.MeshOptimizeFlags.StripReorder\"/> and <see cref=\"F:SharpDX.Direct3D9.MeshOptimizeFlags.VertexCache\"/> optimization flags are mutually exclusive.</p><p>The D3DXMESHOPT_SHAREVB flag has been removed from this enumeration. Use <see cref=\"F:SharpDX.Direct3D9.MeshFlags.VertexBufferShare\"/> instead, in <strong>D3DXMESH</strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='_D3DXMESHOPT']/*\"/>\t\n            <msdn-id>bb205374</msdn-id>\t\n            <unmanaged>_D3DXMESHOPT</unmanaged>\t\n            <unmanaged-short>_D3DXMESHOPT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.MeshOptimizeFlags.Compact\">\n            <summary>\t\n            <dd> <p>Reorders faces to remove unused vertices and faces.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXMESHOPT_COMPACT']/*\"/>\t\n            <msdn-id>bb205374</msdn-id>\t\n            <unmanaged>D3DXMESHOPT_COMPACT</unmanaged>\t\n            <unmanaged-short>D3DXMESHOPT_COMPACT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.MeshOptimizeFlags.AttributeSort\">\n            <summary>\t\n            <dd> <p>Reorders faces to optimize for fewer attribute bundle state changes and enhanced <strong><see cref=\"M:SharpDX.Direct3D9.BaseMesh.DrawSubset(System.Int32)\"/></strong> performance.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXMESHOPT_ATTRSORT']/*\"/>\t\n            <msdn-id>bb205374</msdn-id>\t\n            <unmanaged>D3DXMESHOPT_ATTRSORT</unmanaged>\t\n            <unmanaged-short>D3DXMESHOPT_ATTRSORT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.MeshOptimizeFlags.VertexCache\">\n            <summary>\t\n            <dd> <p>Reorders faces to increase the cache hit rate of vertex caches.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXMESHOPT_VERTEXCACHE']/*\"/>\t\n            <msdn-id>bb205374</msdn-id>\t\n            <unmanaged>D3DXMESHOPT_VERTEXCACHE</unmanaged>\t\n            <unmanaged-short>D3DXMESHOPT_VERTEXCACHE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.MeshOptimizeFlags.StripReorder\">\n            <summary>\t\n            <dd> <p>Reorders faces to maximize length of adjacent triangles.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXMESHOPT_STRIPREORDER']/*\"/>\t\n            <msdn-id>bb205374</msdn-id>\t\n            <unmanaged>D3DXMESHOPT_STRIPREORDER</unmanaged>\t\n            <unmanaged-short>D3DXMESHOPT_STRIPREORDER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.MeshOptimizeFlags.IgnoreVertices\">\n            <summary>\t\n            <dd> <p>Optimize the faces only; do not optimize the vertices.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXMESHOPT_IGNOREVERTS']/*\"/>\t\n            <msdn-id>bb205374</msdn-id>\t\n            <unmanaged>D3DXMESHOPT_IGNOREVERTS</unmanaged>\t\n            <unmanaged-short>D3DXMESHOPT_IGNOREVERTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.MeshOptimizeFlags.DoNotSplit\">\n            <summary>\t\n            <dd> <p>While attribute sorting, do not split vertices that are shared between attribute groups.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXMESHOPT_DONOTSPLIT']/*\"/>\t\n            <msdn-id>bb205374</msdn-id>\t\n            <unmanaged>D3DXMESHOPT_DONOTSPLIT</unmanaged>\t\n            <unmanaged-short>D3DXMESHOPT_DONOTSPLIT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.MeshOptimizeFlags.DeviceIndependent\">\n            <summary>\t\n            <dd> <p>Affects the vertex cache size. Using this flag specifies a default vertex cache size that works well on legacy hardware.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXMESHOPT_DEVICEINDEPENDENT']/*\"/>\t\n            <msdn-id>bb205374</msdn-id>\t\n            <unmanaged>D3DXMESHOPT_DEVICEINDEPENDENT</unmanaged>\t\n            <unmanaged-short>D3DXMESHOPT_DEVICEINDEPENDENT</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.MeshSimplification\">\n            <summary>\t\n            <p>Specifies simplification options for a mesh.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='_D3DXMESHSIMP']/*\"/>\t\n            <msdn-id>Bb205375</msdn-id>\t\n            <unmanaged>_D3DXMESHSIMP</unmanaged>\t\n            <unmanaged-short>_D3DXMESHSIMP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.MeshSimplification.Vertex\">\n            <summary>\t\n            <dd> <p>The mesh will be simplified by the number of vertices specified in the MinValue parameter.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXMESHSIMP_VERTEX']/*\"/>\t\n            <msdn-id>Bb205375</msdn-id>\t\n            <unmanaged>D3DXMESHSIMP_VERTEX</unmanaged>\t\n            <unmanaged-short>D3DXMESHSIMP_VERTEX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.MeshSimplification.Face\">\n            <summary>\t\n            <dd> <p>The mesh will be simplified by the number of faces specified in the MinValue parameter.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXMESHSIMP_FACE']/*\"/>\t\n            <msdn-id>Bb205375</msdn-id>\t\n            <unmanaged>D3DXMESHSIMP_FACE</unmanaged>\t\n            <unmanaged-short>D3DXMESHSIMP_FACE</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.MultisampleType\">\n            <summary>\t\n            <p>Defines the levels of full-scene multisampling that the device can apply.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>In addition to enabling full-scene multisampling at <strong><see cref=\"M:SharpDX.Direct3D9.Device.Reset(SharpDX.Direct3D9.PresentParameters[])\"/></strong> time, there will be render states that turn various aspects on and off at fine-grained levels.</p><p>Multisampling is valid only on a swap chain that is being created or reset with the <see cref=\"F:SharpDX.Direct3D9.SwapEffect.Discard\"/> swap effect.</p><p>The multisample antialiasing value can be set with the parameters (or sub-parameters) in the following methods.</p><table> <tr><th>Method</th><th>Parameters</th><th>Sub-parameters</th></tr> <tr><td> <strong><see cref=\"M:SharpDX.Direct3D9.Direct3D.CheckDeviceMultiSampleType_(System.Int32,SharpDX.Direct3D9.DeviceType,SharpDX.Direct3D9.Format,SharpDX.Bool,SharpDX.Direct3D9.MultisampleType,System.Int32@)\"/></strong> </td><td>MultiSampleType and pQualityLevels</td><td></td></tr> <tr><td> <strong><see cref=\"M:SharpDX.Direct3D9.Direct3D.CreateDevice(System.Int32,SharpDX.Direct3D9.DeviceType,System.IntPtr,SharpDX.Direct3D9.CreateFlags,SharpDX.Direct3D9.PresentParameters[],SharpDX.Direct3D9.Device)\"/></strong> </td><td>pPresentationParameters</td><td>MultiSampleType and pQualityLevels</td></tr> <tr><td> <strong><see cref=\"M:SharpDX.Direct3D9.Device.CreateAdditionalSwapChain(SharpDX.Direct3D9.PresentParameters@,SharpDX.Direct3D9.SwapChain)\"/></strong> </td><td>pPresentationParameters</td><td>MultiSampleType and pQualityLevels</td></tr> <tr><td> <strong><see cref=\"M:SharpDX.Direct3D9.Device.CreateDepthStencilSurface(System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.MultisampleType,System.Int32,SharpDX.Bool,System.IntPtr)\"/></strong> </td><td>MultiSampleType and pQualityLevels</td><td></td></tr> <tr><td> <strong><see cref=\"M:SharpDX.Direct3D9.Device.CreateRenderTarget(System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.MultisampleType,System.Int32,SharpDX.Bool,System.IntPtr)\"/></strong> </td><td>MultiSampleType and pQualityLevels</td><td></td></tr> <tr><td> <strong><see cref=\"M:SharpDX.Direct3D9.Device.Reset(SharpDX.Direct3D9.PresentParameters[])\"/></strong> </td><td>pPresentationParameters</td><td>MultiSampleType and pQualityLevels</td></tr> </table><p>?</p><p>It is not good practice to switch from one multisample type to another to raise the quality of the antialiasing.</p><p><see cref=\"F:SharpDX.Direct3D9.MultisampleType.None\"/> enables swap effects other than discarding, locking, and so on.</p><p>Whether the display device supports maskable multisampling (more than one sample for a multiple-sample render-target format plus antialias support) or just non-maskable multisampling (only antialias support), the driver for the device provides the number of quality levels for the <see cref=\"F:SharpDX.Direct3D9.MultisampleType.NonMaskable\"/> multiple-sample type. Applications that just use multisampling for antialiasing purposes only need to query for the number of non-maskable multiple-sample quality levels that the driver supports.</p><p>The quality levels supported by the device can be obtained with the pQualityLevels parameter of <strong><see cref=\"M:SharpDX.Direct3D9.Direct3D.CheckDeviceMultiSampleType_(System.Int32,SharpDX.Direct3D9.DeviceType,SharpDX.Direct3D9.Format,SharpDX.Bool,SharpDX.Direct3D9.MultisampleType,System.Int32@)\"/></strong>. Quality levels used by the application are set with the MultiSampleQuality parameter of <strong><see cref=\"M:SharpDX.Direct3D9.Device.CreateDepthStencilSurface(System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.MultisampleType,System.Int32,SharpDX.Bool,System.IntPtr)\"/></strong> and <strong><see cref=\"M:SharpDX.Direct3D9.Device.CreateRenderTarget(System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.MultisampleType,System.Int32,SharpDX.Bool,System.IntPtr)\"/></strong>.</p><p>See <see cref=\"F:SharpDX.Direct3D9.RenderState.MultisampleMask\"/> for discussion of maskable multisampling.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DMULTISAMPLE_TYPE']/*\"/>\t\n            <msdn-id>bb172574</msdn-id>\t\n            <unmanaged>D3DMULTISAMPLE_TYPE</unmanaged>\t\n            <unmanaged-short>D3DMULTISAMPLE_TYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.MultisampleType.None\">\n            <summary>\t\n            <dd> <p>No level of full-scene multisampling is available. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DMULTISAMPLE_NONE']/*\"/>\t\n            <msdn-id>bb172574</msdn-id>\t\n            <unmanaged>D3DMULTISAMPLE_NONE</unmanaged>\t\n            <unmanaged-short>D3DMULTISAMPLE_NONE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.MultisampleType.NonMaskable\">\n            <summary>\t\n            <dd> <p>Enables the multisample quality value. See Remarks. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DMULTISAMPLE_NONMASKABLE']/*\"/>\t\n            <msdn-id>bb172574</msdn-id>\t\n            <unmanaged>D3DMULTISAMPLE_NONMASKABLE</unmanaged>\t\n            <unmanaged-short>D3DMULTISAMPLE_NONMASKABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.MultisampleType.TwoSamples\">\n            <summary>\t\n            <dd> <p>Level of full-scene multisampling available. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DMULTISAMPLE_2_SAMPLES']/*\"/>\t\n            <msdn-id>bb172574</msdn-id>\t\n            <unmanaged>D3DMULTISAMPLE_2_SAMPLES</unmanaged>\t\n            <unmanaged-short>D3DMULTISAMPLE_2_SAMPLES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.MultisampleType.ThreeSamples\">\n            <summary>\t\n            <dd> <p>Level of full-scene multisampling available. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DMULTISAMPLE_3_SAMPLES']/*\"/>\t\n            <msdn-id>bb172574</msdn-id>\t\n            <unmanaged>D3DMULTISAMPLE_3_SAMPLES</unmanaged>\t\n            <unmanaged-short>D3DMULTISAMPLE_3_SAMPLES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.MultisampleType.FourSamples\">\n            <summary>\t\n            <dd> <p>Level of full-scene multisampling available. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DMULTISAMPLE_4_SAMPLES']/*\"/>\t\n            <msdn-id>bb172574</msdn-id>\t\n            <unmanaged>D3DMULTISAMPLE_4_SAMPLES</unmanaged>\t\n            <unmanaged-short>D3DMULTISAMPLE_4_SAMPLES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.MultisampleType.FiveSamples\">\n            <summary>\t\n            <dd> <p>Level of full-scene multisampling available. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DMULTISAMPLE_5_SAMPLES']/*\"/>\t\n            <msdn-id>bb172574</msdn-id>\t\n            <unmanaged>D3DMULTISAMPLE_5_SAMPLES</unmanaged>\t\n            <unmanaged-short>D3DMULTISAMPLE_5_SAMPLES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.MultisampleType.SixSamples\">\n            <summary>\t\n            <dd> <p>Level of full-scene multisampling available. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DMULTISAMPLE_6_SAMPLES']/*\"/>\t\n            <msdn-id>bb172574</msdn-id>\t\n            <unmanaged>D3DMULTISAMPLE_6_SAMPLES</unmanaged>\t\n            <unmanaged-short>D3DMULTISAMPLE_6_SAMPLES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.MultisampleType.SevenSamples\">\n            <summary>\t\n            <dd> <p>Level of full-scene multisampling available. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DMULTISAMPLE_7_SAMPLES']/*\"/>\t\n            <msdn-id>bb172574</msdn-id>\t\n            <unmanaged>D3DMULTISAMPLE_7_SAMPLES</unmanaged>\t\n            <unmanaged-short>D3DMULTISAMPLE_7_SAMPLES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.MultisampleType.EightSamples\">\n            <summary>\t\n            <dd> <p>Level of full-scene multisampling available. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DMULTISAMPLE_8_SAMPLES']/*\"/>\t\n            <msdn-id>bb172574</msdn-id>\t\n            <unmanaged>D3DMULTISAMPLE_8_SAMPLES</unmanaged>\t\n            <unmanaged-short>D3DMULTISAMPLE_8_SAMPLES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.MultisampleType.NineSamples\">\n            <summary>\t\n            <dd> <p>Level of full-scene multisampling available. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DMULTISAMPLE_9_SAMPLES']/*\"/>\t\n            <msdn-id>bb172574</msdn-id>\t\n            <unmanaged>D3DMULTISAMPLE_9_SAMPLES</unmanaged>\t\n            <unmanaged-short>D3DMULTISAMPLE_9_SAMPLES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.MultisampleType.TenSamples\">\n            <summary>\t\n            <dd> <p>Level of full-scene multisampling available. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DMULTISAMPLE_10_SAMPLES']/*\"/>\t\n            <msdn-id>bb172574</msdn-id>\t\n            <unmanaged>D3DMULTISAMPLE_10_SAMPLES</unmanaged>\t\n            <unmanaged-short>D3DMULTISAMPLE_10_SAMPLES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.MultisampleType.ElevenSamples\">\n            <summary>\t\n            <dd> <p>Level of full-scene multisampling available. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DMULTISAMPLE_11_SAMPLES']/*\"/>\t\n            <msdn-id>bb172574</msdn-id>\t\n            <unmanaged>D3DMULTISAMPLE_11_SAMPLES</unmanaged>\t\n            <unmanaged-short>D3DMULTISAMPLE_11_SAMPLES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.MultisampleType.TwelveSamples\">\n            <summary>\t\n            <dd> <p>Level of full-scene multisampling available. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DMULTISAMPLE_12_SAMPLES']/*\"/>\t\n            <msdn-id>bb172574</msdn-id>\t\n            <unmanaged>D3DMULTISAMPLE_12_SAMPLES</unmanaged>\t\n            <unmanaged-short>D3DMULTISAMPLE_12_SAMPLES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.MultisampleType.ThirteenSamples\">\n            <summary>\t\n            <dd> <p>Level of full-scene multisampling available. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DMULTISAMPLE_13_SAMPLES']/*\"/>\t\n            <msdn-id>bb172574</msdn-id>\t\n            <unmanaged>D3DMULTISAMPLE_13_SAMPLES</unmanaged>\t\n            <unmanaged-short>D3DMULTISAMPLE_13_SAMPLES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.MultisampleType.FourteenSamples\">\n            <summary>\t\n            <dd> <p>Level of full-scene multisampling available. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DMULTISAMPLE_14_SAMPLES']/*\"/>\t\n            <msdn-id>bb172574</msdn-id>\t\n            <unmanaged>D3DMULTISAMPLE_14_SAMPLES</unmanaged>\t\n            <unmanaged-short>D3DMULTISAMPLE_14_SAMPLES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.MultisampleType.FifteenSamples\">\n            <summary>\t\n            <dd> <p>Level of full-scene multisampling available. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DMULTISAMPLE_15_SAMPLES']/*\"/>\t\n            <msdn-id>bb172574</msdn-id>\t\n            <unmanaged>D3DMULTISAMPLE_15_SAMPLES</unmanaged>\t\n            <unmanaged-short>D3DMULTISAMPLE_15_SAMPLES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.MultisampleType.SixteenSamples\">\n            <summary>\t\n            <dd> <p>Level of full-scene multisampling available. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DMULTISAMPLE_16_SAMPLES']/*\"/>\t\n            <msdn-id>bb172574</msdn-id>\t\n            <unmanaged>D3DMULTISAMPLE_16_SAMPLES</unmanaged>\t\n            <unmanaged-short>D3DMULTISAMPLE_16_SAMPLES</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.NormalMapFlags\">\n            <summary>\t\n            <p>Normal maps generation constants.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX_NORMALMAP']/*\"/>\t\n            <msdn-id>bb205566</msdn-id>\t\n            <unmanaged>D3DX_NORMALMAP</unmanaged>\t\n            <unmanaged-short>D3DX_NORMALMAP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.NormalMapFlags.MirrorU\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX_NORMALMAP_MIRROR_U']/*\"/>\t\n            <unmanaged>D3DX_NORMALMAP_MIRROR_U</unmanaged>\t\n            <unmanaged-short>D3DX_NORMALMAP_MIRROR_U</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.NormalMapFlags.MirrorV\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX_NORMALMAP_MIRROR_V']/*\"/>\t\n            <unmanaged>D3DX_NORMALMAP_MIRROR_V</unmanaged>\t\n            <unmanaged-short>D3DX_NORMALMAP_MIRROR_V</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.NormalMapFlags.Mirror\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX_NORMALMAP_MIRROR']/*\"/>\t\n            <unmanaged>D3DX_NORMALMAP_MIRROR</unmanaged>\t\n            <unmanaged-short>D3DX_NORMALMAP_MIRROR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.NormalMapFlags.InvertSign\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX_NORMALMAP_INVERTSIGN']/*\"/>\t\n            <unmanaged>D3DX_NORMALMAP_INVERTSIGN</unmanaged>\t\n            <unmanaged-short>D3DX_NORMALMAP_INVERTSIGN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.NormalMapFlags.ComputeOcclusion\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX_NORMALMAP_COMPUTE_OCCLUSION']/*\"/>\t\n            <unmanaged>D3DX_NORMALMAP_COMPUTE_OCCLUSION</unmanaged>\t\n            <unmanaged-short>D3DX_NORMALMAP_COMPUTE_OCCLUSION</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.ParameterClass\">\n            <summary>\t\n            <p>The type of object.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXPARAMETER_CLASS']/*\"/>\t\n            <msdn-id>bb205378</msdn-id>\t\n            <unmanaged>D3DXPARAMETER_CLASS</unmanaged>\t\n            <unmanaged-short>D3DXPARAMETER_CLASS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ParameterClass.Scalar\">\n            <summary>\t\n            <dd> <p>Constant is a scalar.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXPC_SCALAR']/*\"/>\t\n            <msdn-id>bb205378</msdn-id>\t\n            <unmanaged>D3DXPC_SCALAR</unmanaged>\t\n            <unmanaged-short>D3DXPC_SCALAR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ParameterClass.Vector\">\n            <summary>\t\n            <dd> <p>Constant is a vector.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXPC_VECTOR']/*\"/>\t\n            <msdn-id>bb205378</msdn-id>\t\n            <unmanaged>D3DXPC_VECTOR</unmanaged>\t\n            <unmanaged-short>D3DXPC_VECTOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ParameterClass.MatrixRows\">\n            <summary>\t\n            <dd> <p>Constant is a row major matrix.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXPC_MATRIX_ROWS']/*\"/>\t\n            <msdn-id>bb205378</msdn-id>\t\n            <unmanaged>D3DXPC_MATRIX_ROWS</unmanaged>\t\n            <unmanaged-short>D3DXPC_MATRIX_ROWS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ParameterClass.MatrixColumns\">\n            <summary>\t\n            <dd> <p>Constant is a column major matrix.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXPC_MATRIX_COLUMNS']/*\"/>\t\n            <msdn-id>bb205378</msdn-id>\t\n            <unmanaged>D3DXPC_MATRIX_COLUMNS</unmanaged>\t\n            <unmanaged-short>D3DXPC_MATRIX_COLUMNS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ParameterClass.Object\">\n            <summary>\t\n            <dd> <p>Constant is either a texture, shader, or a string.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXPC_OBJECT']/*\"/>\t\n            <msdn-id>bb205378</msdn-id>\t\n            <unmanaged>D3DXPC_OBJECT</unmanaged>\t\n            <unmanaged-short>D3DXPC_OBJECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ParameterClass.Struct\">\n            <summary>\t\n            <dd> <p>Constant is a structure.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXPC_STRUCT']/*\"/>\t\n            <msdn-id>bb205378</msdn-id>\t\n            <unmanaged>D3DXPC_STRUCT</unmanaged>\t\n            <unmanaged-short>D3DXPC_STRUCT</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.ParameterFlags\">\n            <summary>\t\n            <p>These flags provide additional information about effect parameters.</p><p>Effect parameter constants are used by <strong><see cref=\"T:SharpDX.Direct3D9.ParameterDescription\"/></strong>.</p><p></p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX_PARAMETER']/*\"/>\t\n            <msdn-id>bb205567</msdn-id>\t\n            <unmanaged>D3DX_PARAMETER</unmanaged>\t\n            <unmanaged-short>D3DX_PARAMETER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ParameterFlags.Shared\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX_PARAMETER_SHARED']/*\"/>\t\n            <unmanaged>D3DX_PARAMETER_SHARED</unmanaged>\t\n            <unmanaged-short>D3DX_PARAMETER_SHARED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ParameterFlags.Literal\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX_PARAMETER_LITERAL']/*\"/>\t\n            <unmanaged>D3DX_PARAMETER_LITERAL</unmanaged>\t\n            <unmanaged-short>D3DX_PARAMETER_LITERAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ParameterFlags.Annotation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX_PARAMETER_ANNOTATION']/*\"/>\t\n            <unmanaged>D3DX_PARAMETER_ANNOTATION</unmanaged>\t\n            <unmanaged-short>D3DX_PARAMETER_ANNOTATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ParameterFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.ParameterType\">\n            <summary>\t\n            <p>Describes the data contained by the enumeration.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXPARAMETER_TYPE']/*\"/>\t\n            <msdn-id>bb205380</msdn-id>\t\n            <unmanaged>D3DXPARAMETER_TYPE</unmanaged>\t\n            <unmanaged-short>D3DXPARAMETER_TYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ParameterType.Void\">\n            <summary>\t\n            <dd> <p>Parameter is a void reference.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXPT_VOID']/*\"/>\t\n            <msdn-id>bb205380</msdn-id>\t\n            <unmanaged>D3DXPT_VOID</unmanaged>\t\n            <unmanaged-short>D3DXPT_VOID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ParameterType.Bool\">\n            <summary>\t\n            <dd> <p>Parameter is a Boolean. Any non-zero value passed into <strong><see cref=\"M:SharpDX.Direct3D9.ConstantTable.SetBool(SharpDX.Direct3D9.Device,SharpDX.Direct3D9.EffectHandle,SharpDX.Bool)\"/></strong>, <strong><see cref=\"M:SharpDX.Direct3D9.ConstantTable.SetBoolArray(SharpDX.Direct3D9.Device,SharpDX.Direct3D9.EffectHandle,SharpDX.Bool[],System.Int32)\"/></strong>, <strong><see cref=\"M:SharpDX.Direct3D9.ConstantTable.SetValue(SharpDX.Direct3D9.Device,SharpDX.Direct3D9.EffectHandle,System.Boolean)\"/></strong>, <strong><see cref=\"M:SharpDX.Direct3D9.ConstantTable.SetVector(SharpDX.Direct3D9.Device,SharpDX.Direct3D9.EffectHandle,SharpDX.Vector4)\"/></strong>, or <strong><see cref=\"M:SharpDX.Direct3D9.ConstantTable.SetVectorArray(SharpDX.Direct3D9.Device,SharpDX.Direct3D9.EffectHandle,SharpDX.Vector4[],System.Int32)\"/></strong> will be mapped to 1 (TRUE) before being written into the constant table; otherwise, the value will be set to 0 in the constant table.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXPT_BOOL']/*\"/>\t\n            <msdn-id>bb205380</msdn-id>\t\n            <unmanaged>D3DXPT_BOOL</unmanaged>\t\n            <unmanaged-short>D3DXPT_BOOL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ParameterType.Int\">\n            <summary>\t\n            <dd> <p>Parameter is an integer. Any floating-point values passed into <strong><see cref=\"M:SharpDX.Direct3D9.ConstantTable.SetValue(SharpDX.Direct3D9.Device,SharpDX.Direct3D9.EffectHandle,System.Boolean)\"/></strong>, <strong><see cref=\"M:SharpDX.Direct3D9.ConstantTable.SetVector(SharpDX.Direct3D9.Device,SharpDX.Direct3D9.EffectHandle,SharpDX.Vector4)\"/></strong>, or <strong><see cref=\"M:SharpDX.Direct3D9.ConstantTable.SetVectorArray(SharpDX.Direct3D9.Device,SharpDX.Direct3D9.EffectHandle,SharpDX.Vector4[],System.Int32)\"/></strong> will be rounded off (to zero decimal places) before being written into the constant table.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXPT_INT']/*\"/>\t\n            <msdn-id>bb205380</msdn-id>\t\n            <unmanaged>D3DXPT_INT</unmanaged>\t\n            <unmanaged-short>D3DXPT_INT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ParameterType.Float\">\n            <summary>\t\n            <dd> <p>Parameter is a floating-point number.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXPT_FLOAT']/*\"/>\t\n            <msdn-id>bb205380</msdn-id>\t\n            <unmanaged>D3DXPT_FLOAT</unmanaged>\t\n            <unmanaged-short>D3DXPT_FLOAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ParameterType.String\">\n            <summary>\t\n            <dd> <p>Parameter is a string.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXPT_STRING']/*\"/>\t\n            <msdn-id>bb205380</msdn-id>\t\n            <unmanaged>D3DXPT_STRING</unmanaged>\t\n            <unmanaged-short>D3DXPT_STRING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ParameterType.Texture\">\n            <summary>\t\n            <dd> <p>Parameter is a texture.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXPT_TEXTURE']/*\"/>\t\n            <msdn-id>bb205380</msdn-id>\t\n            <unmanaged>D3DXPT_TEXTURE</unmanaged>\t\n            <unmanaged-short>D3DXPT_TEXTURE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ParameterType.Texture1D\">\n            <summary>\t\n            <dd> <p>Parameter is a 1D texture.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXPT_TEXTURE1D']/*\"/>\t\n            <msdn-id>bb205380</msdn-id>\t\n            <unmanaged>D3DXPT_TEXTURE1D</unmanaged>\t\n            <unmanaged-short>D3DXPT_TEXTURE1D</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ParameterType.Texture2D\">\n            <summary>\t\n            <dd> <p>Parameter is a 2D texture.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXPT_TEXTURE2D']/*\"/>\t\n            <msdn-id>bb205380</msdn-id>\t\n            <unmanaged>D3DXPT_TEXTURE2D</unmanaged>\t\n            <unmanaged-short>D3DXPT_TEXTURE2D</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ParameterType.Texture3D\">\n            <summary>\t\n            <dd> <p>Parameter is a 3D texture.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXPT_TEXTURE3D']/*\"/>\t\n            <msdn-id>bb205380</msdn-id>\t\n            <unmanaged>D3DXPT_TEXTURE3D</unmanaged>\t\n            <unmanaged-short>D3DXPT_TEXTURE3D</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ParameterType.TextureCube\">\n            <summary>\t\n            <dd> <p>Parameter is a cube texture.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXPT_TEXTURECUBE']/*\"/>\t\n            <msdn-id>bb205380</msdn-id>\t\n            <unmanaged>D3DXPT_TEXTURECUBE</unmanaged>\t\n            <unmanaged-short>D3DXPT_TEXTURECUBE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ParameterType.Sampler\">\n            <summary>\t\n            <dd> <p>Parameter is a sampler.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXPT_SAMPLER']/*\"/>\t\n            <msdn-id>bb205380</msdn-id>\t\n            <unmanaged>D3DXPT_SAMPLER</unmanaged>\t\n            <unmanaged-short>D3DXPT_SAMPLER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ParameterType.Sampler1D\">\n            <summary>\t\n            <dd> <p>Parameter is a 1D sampler.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXPT_SAMPLER1D']/*\"/>\t\n            <msdn-id>bb205380</msdn-id>\t\n            <unmanaged>D3DXPT_SAMPLER1D</unmanaged>\t\n            <unmanaged-short>D3DXPT_SAMPLER1D</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ParameterType.Sampler2D\">\n            <summary>\t\n            <dd> <p>Parameter is a 2D sampler.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXPT_SAMPLER2D']/*\"/>\t\n            <msdn-id>bb205380</msdn-id>\t\n            <unmanaged>D3DXPT_SAMPLER2D</unmanaged>\t\n            <unmanaged-short>D3DXPT_SAMPLER2D</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ParameterType.Sampler3D\">\n            <summary>\t\n            <dd> <p>Parameter is a 3D sampler.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXPT_SAMPLER3D']/*\"/>\t\n            <msdn-id>bb205380</msdn-id>\t\n            <unmanaged>D3DXPT_SAMPLER3D</unmanaged>\t\n            <unmanaged-short>D3DXPT_SAMPLER3D</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ParameterType.SamplerCube\">\n            <summary>\t\n            <dd> <p>Parameter is a cube sampler.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXPT_SAMPLERCUBE']/*\"/>\t\n            <msdn-id>bb205380</msdn-id>\t\n            <unmanaged>D3DXPT_SAMPLERCUBE</unmanaged>\t\n            <unmanaged-short>D3DXPT_SAMPLERCUBE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ParameterType.PixelShader\">\n            <summary>\t\n            <dd> <p>Parameter is a pixel shader.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXPT_PIXELSHADER']/*\"/>\t\n            <msdn-id>bb205380</msdn-id>\t\n            <unmanaged>D3DXPT_PIXELSHADER</unmanaged>\t\n            <unmanaged-short>D3DXPT_PIXELSHADER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ParameterType.VertexShader\">\n            <summary>\t\n            <dd> <p>Parameter is a vertex shader.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXPT_VERTEXSHADER']/*\"/>\t\n            <msdn-id>bb205380</msdn-id>\t\n            <unmanaged>D3DXPT_VERTEXSHADER</unmanaged>\t\n            <unmanaged-short>D3DXPT_VERTEXSHADER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ParameterType.PixelFragment\">\n            <summary>\t\n            <dd> <p>Parameter is a pixel shader fragment.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXPT_PIXELFRAGMENT']/*\"/>\t\n            <msdn-id>bb205380</msdn-id>\t\n            <unmanaged>D3DXPT_PIXELFRAGMENT</unmanaged>\t\n            <unmanaged-short>D3DXPT_PIXELFRAGMENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ParameterType.VertexFragment\">\n            <summary>\t\n            <dd> <p>Parameter is a vertex shader fragment.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXPT_VERTEXFRAGMENT']/*\"/>\t\n            <msdn-id>bb205380</msdn-id>\t\n            <unmanaged>D3DXPT_VERTEXFRAGMENT</unmanaged>\t\n            <unmanaged-short>D3DXPT_VERTEXFRAGMENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ParameterType.Unsupported\">\n            <summary>\t\n            <dd> <p>Parameter is not supported.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXPT_UNSUPPORTED']/*\"/>\t\n            <msdn-id>bb205380</msdn-id>\t\n            <unmanaged>D3DXPT_UNSUPPORTED</unmanaged>\t\n            <unmanaged-short>D3DXPT_UNSUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.PatchEdgeStyle\">\n            <summary>\t\n            <p>Defines whether the current tessellation mode is discrete or continuous.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Note that continuous tessellation produces a completely different tessellation pattern from the discrete one for the same tessellation values (this is more apparent in wireframe mode). Thus, 4.0 continuous is not the same as 4 discrete.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPATCHEDGESTYLE']/*\"/>\t\n            <msdn-id>bb172575</msdn-id>\t\n            <unmanaged>D3DPATCHEDGESTYLE</unmanaged>\t\n            <unmanaged-short>D3DPATCHEDGESTYLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PatchEdgeStyle.Discrete\">\n            <summary>\t\n            <dd> <p>Discrete edge style. In discrete mode, you can specify float tessellation but it will be truncated to integers. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPATCHEDGE_DISCRETE']/*\"/>\t\n            <msdn-id>bb172575</msdn-id>\t\n            <unmanaged>D3DPATCHEDGE_DISCRETE</unmanaged>\t\n            <unmanaged-short>D3DPATCHEDGE_DISCRETE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PatchEdgeStyle.Continuous\">\n            <summary>\t\n            <dd> <p>Continuous edge style. In continuous mode, tessellation is specified as float values that can be smoothly varied to reduce \"popping\" artifacts. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPATCHEDGE_CONTINUOUS']/*\"/>\t\n            <msdn-id>bb172575</msdn-id>\t\n            <unmanaged>D3DPATCHEDGE_CONTINUOUS</unmanaged>\t\n            <unmanaged-short>D3DPATCHEDGE_CONTINUOUS</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.PatchMeshType\">\n            <summary>\t\n            <p>Mesh patch types.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Triangle patches have three sides and are described in <strong><see cref=\"T:SharpDX.Direct3D9.TrianglePatchInfo\"/></strong>. Rectangle patches are four-sided and are described in <strong><see cref=\"T:SharpDX.Direct3D9.RectanglePatchInfo\"/></strong>. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXPATCHMESHTYPE']/*\"/>\t\n            <msdn-id>bb205384</msdn-id>\t\n            <unmanaged>D3DXPATCHMESHTYPE</unmanaged>\t\n            <unmanaged-short>D3DXPATCHMESHTYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PatchMeshType.Rectangle\">\n            <summary>\t\n            <dd> <p>Rectangle patch mesh type.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXPATCHMESH_RECT']/*\"/>\t\n            <msdn-id>bb205384</msdn-id>\t\n            <unmanaged>D3DXPATCHMESH_RECT</unmanaged>\t\n            <unmanaged-short>D3DXPATCHMESH_RECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PatchMeshType.Triangle\">\n            <summary>\t\n            <dd> <p>Triangle patch mesh type.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXPATCHMESH_TRI']/*\"/>\t\n            <msdn-id>bb205384</msdn-id>\t\n            <unmanaged>D3DXPATCHMESH_TRI</unmanaged>\t\n            <unmanaged-short>D3DXPATCHMESH_TRI</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PatchMeshType.NPatch\">\n            <summary>\t\n            <dd> <p>N-patch mesh type.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXPATCHMESH_NPATCH']/*\"/>\t\n            <msdn-id>bb205384</msdn-id>\t\n            <unmanaged>D3DXPATCHMESH_NPATCH</unmanaged>\t\n            <unmanaged-short>D3DXPATCHMESH_NPATCH</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.PixelShaderCaps\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPS20CAPS']/*\"/>\t\n            <unmanaged>D3DPS20CAPS</unmanaged>\t\n            <unmanaged-short>D3DPS20CAPS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PixelShaderCaps.ArbitrarySwizzle\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPS20CAPS_ARBITRARYSWIZZLE']/*\"/>\t\n            <unmanaged>D3DPS20CAPS_ARBITRARYSWIZZLE</unmanaged>\t\n            <unmanaged-short>D3DPS20CAPS_ARBITRARYSWIZZLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PixelShaderCaps.GradientInstructions\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPS20CAPS_GRADIENTINSTRUCTIONS']/*\"/>\t\n            <unmanaged>D3DPS20CAPS_GRADIENTINSTRUCTIONS</unmanaged>\t\n            <unmanaged-short>D3DPS20CAPS_GRADIENTINSTRUCTIONS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PixelShaderCaps.Predication\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPS20CAPS_PREDICATION']/*\"/>\t\n            <unmanaged>D3DPS20CAPS_PREDICATION</unmanaged>\t\n            <unmanaged-short>D3DPS20CAPS_PREDICATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PixelShaderCaps.NoDependentReadLimit\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPS20CAPS_NODEPENDENTREADLIMIT']/*\"/>\t\n            <unmanaged>D3DPS20CAPS_NODEPENDENTREADLIMIT</unmanaged>\t\n            <unmanaged-short>D3DPS20CAPS_NODEPENDENTREADLIMIT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PixelShaderCaps.NoTextureInstructionLimit\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPS20CAPS_NOTEXINSTRUCTIONLIMIT']/*\"/>\t\n            <unmanaged>D3DPS20CAPS_NOTEXINSTRUCTIONLIMIT</unmanaged>\t\n            <unmanaged-short>D3DPS20CAPS_NOTEXINSTRUCTIONLIMIT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PixelShaderCaps.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.PlaybackType\">\n            <summary>\t\n            <p>Defines the type of animation set looping modes used for playback.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXPLAYBACK_TYPE']/*\"/>\t\n            <msdn-id>bb205397</msdn-id>\t\n            <unmanaged>D3DXPLAYBACK_TYPE</unmanaged>\t\n            <unmanaged-short>D3DXPLAYBACK_TYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PlaybackType.Loop\">\n            <summary>\t\n            <dd> <p>The animation repeats endlessly.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXPLAY_LOOP']/*\"/>\t\n            <msdn-id>bb205397</msdn-id>\t\n            <unmanaged>D3DXPLAY_LOOP</unmanaged>\t\n            <unmanaged-short>D3DXPLAY_LOOP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PlaybackType.Once\">\n            <summary>\t\n            <dd> <p>The animation plays once, and then it stops on the last frame.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXPLAY_ONCE']/*\"/>\t\n            <msdn-id>bb205397</msdn-id>\t\n            <unmanaged>D3DXPLAY_ONCE</unmanaged>\t\n            <unmanaged-short>D3DXPLAY_ONCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PlaybackType.PingPong\">\n            <summary>\t\n            <dd> <p>The animation alternates endlessly between playing forward and playing backward.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXPLAY_PINGPONG']/*\"/>\t\n            <msdn-id>bb205397</msdn-id>\t\n            <unmanaged>D3DXPLAY_PINGPONG</unmanaged>\t\n            <unmanaged-short>D3DXPLAY_PINGPONG</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.Pool\">\n            <summary>\t\n            <p>Defines the memory class that holds the buffers for a resource.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>All pool types are valid with all resources including: vertex buffers, index buffers, textures, and surfaces.</p><p>The following tables indicate restrictions on pool types for render targets, depth stencils, and dynamic and mipmap usages. An x indicates a compatible combination; lack of an x indicates incompatibility.</p><table> <tr><th>Pool</th><th><see cref=\"F:SharpDX.Direct3D9.Usage.RenderTarget\"/></th><th><see cref=\"F:SharpDX.Direct3D9.Usage.DepthStencil\"/></th></tr> <tr><th><see cref=\"F:SharpDX.Direct3D9.Pool.Default\"/></th><td>x</td><td>x</td></tr> <tr><th><see cref=\"F:SharpDX.Direct3D9.Pool.Managed\"/></th><td></td><td></td></tr> <tr><th><see cref=\"F:SharpDX.Direct3D9.Pool.Scratch\"/></th><td></td><td></td></tr> <tr><th><see cref=\"F:SharpDX.Direct3D9.Pool.SystemMemory\"/></th><td></td><td></td></tr> </table><p>?</p><table> <tr><th>Pool</th><th><see cref=\"F:SharpDX.Direct3D9.Usage.Dynamic\"/></th><th><see cref=\"F:SharpDX.Direct3D9.Usage.AutoGenerateMipMap\"/></th></tr> <tr><th><see cref=\"F:SharpDX.Direct3D9.Pool.Default\"/></th><td>x</td><td>x</td></tr> <tr><th><see cref=\"F:SharpDX.Direct3D9.Pool.Managed\"/></th><td></td><td>x</td></tr> <tr><th><see cref=\"F:SharpDX.Direct3D9.Pool.Scratch\"/></th><td></td><td></td></tr> <tr><th><see cref=\"F:SharpDX.Direct3D9.Pool.SystemMemory\"/></th><td>x</td><td></td></tr> </table><p>?</p><p>For more information about usage types, see <strong><see cref=\"T:SharpDX.Direct3D9.Usage\"/></strong>.</p><p>Pools cannot be mixed for different objects contained within one resource (mip levels in a mipmap) and, when a pool is chosen, it cannot be changed.</p><p>Applications should use <see cref=\"F:SharpDX.Direct3D9.Pool.Managed\"/> for most static resources because this saves the application from having to deal with lost devices. (Managed resources are restored by the runtime.) This is especially beneficial for unified memory architecture (UMA) systems. Other dynamic resources are not a good match for <see cref=\"F:SharpDX.Direct3D9.Pool.Managed\"/>. In fact, index buffers and vertex buffers cannot be created using <see cref=\"F:SharpDX.Direct3D9.Pool.Managed\"/> together with <see cref=\"F:SharpDX.Direct3D9.Usage.Dynamic\"/>.</p><p>For dynamic textures, it is sometimes desirable to use a pair of video memory and system memory textures, allocating the video memory using <see cref=\"F:SharpDX.Direct3D9.Pool.Default\"/> and the system memory using <see cref=\"F:SharpDX.Direct3D9.Pool.SystemMemory\"/>. You can lock and modify the bits of the system memory texture using a locking method. Then you can update the video memory texture using <strong><see cref=\"M:SharpDX.Direct3D9.Device.UpdateTexture(SharpDX.Direct3D9.BaseTexture,SharpDX.Direct3D9.BaseTexture)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPOOL']/*\"/>\t\n            <msdn-id>bb172584</msdn-id>\t\n            <unmanaged>D3DPOOL</unmanaged>\t\n            <unmanaged-short>D3DPOOL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Pool.Default\">\n            <summary>\t\n            <dd> <p>Resources are placed in the memory pool most appropriate for the set of usages requested for the given resource. This is usually video memory, including both local video memory and AGP memory. The <see cref=\"F:SharpDX.Direct3D9.Pool.Default\"/> pool is separate from <see cref=\"F:SharpDX.Direct3D9.Pool.Managed\"/> and <see cref=\"F:SharpDX.Direct3D9.Pool.SystemMemory\"/>, and it specifies that the resource is placed in the preferred memory for device access. Note that <see cref=\"F:SharpDX.Direct3D9.Pool.Default\"/> never indicates that either <see cref=\"F:SharpDX.Direct3D9.Pool.Managed\"/> or <see cref=\"F:SharpDX.Direct3D9.Pool.SystemMemory\"/> should be chosen as the memory pool type for this resource. Textures placed in the <see cref=\"F:SharpDX.Direct3D9.Pool.Default\"/> pool cannot be locked unless they are dynamic textures or they are private, FOURCC, driver formats. To access unlockable textures, you must use functions such as <strong><see cref=\"M:SharpDX.Direct3D9.Device.UpdateSurface(SharpDX.Direct3D9.Surface,SharpDX.Direct3D9.Surface)\"/></strong>, <strong><see cref=\"M:SharpDX.Direct3D9.Device.UpdateTexture(SharpDX.Direct3D9.BaseTexture,SharpDX.Direct3D9.BaseTexture)\"/></strong>, <strong><see cref=\"M:SharpDX.Direct3D9.Device.GetFrontBufferData(System.Int32,SharpDX.Direct3D9.Surface)\"/></strong>, and <strong><see cref=\"M:SharpDX.Direct3D9.Device.GetRenderTargetData(SharpDX.Direct3D9.Surface,SharpDX.Direct3D9.Surface)\"/></strong>. <see cref=\"F:SharpDX.Direct3D9.Pool.Managed\"/> is probably a better choice than <see cref=\"F:SharpDX.Direct3D9.Pool.Default\"/> for most applications. Note that some textures created in driver-proprietary pixel formats, unknown to the Direct3D runtime, can be locked. Also note that - unlike textures - swap chain back buffers, render targets, vertex buffers, and index buffers can be locked. When a device is lost, resources created using <see cref=\"F:SharpDX.Direct3D9.Pool.Default\"/> must be released before calling <strong><see cref=\"M:SharpDX.Direct3D9.Device.Reset(SharpDX.Direct3D9.PresentParameters[])\"/></strong>. For more information, see Lost Devices (Direct3D 9). </p> <p>When creating resources with <see cref=\"F:SharpDX.Direct3D9.Pool.Default\"/>, if video card memory is already committed, managed resources will be evicted to free enough memory to satisfy the request.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPOOL_DEFAULT']/*\"/>\t\n            <msdn-id>bb172584</msdn-id>\t\n            <unmanaged>D3DPOOL_DEFAULT</unmanaged>\t\n            <unmanaged-short>D3DPOOL_DEFAULT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Pool.Managed\">\n            <summary>\t\n            <dd> <p>Resources are copied automatically to device-accessible memory as needed. Managed resources are backed by system memory and do not need to be recreated when a device is lost. See Managing Resources (Direct3D 9) for more information. Managed resources can be locked. Only the system-memory copy is directly modified. Direct3D copies your changes to driver-accessible memory as needed. </p> <table> <tr><td> <p>Differences between Direct3D 9 and Direct3D 9Ex:</p> <p><see cref=\"F:SharpDX.Direct3D9.Pool.Managed\"/> is valid with <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong>; however, it is not valid with <strong><see cref=\"T:SharpDX.Direct3D9.DeviceEx\"/></strong>.</p> </td></tr> </table> <p>?</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPOOL_MANAGED']/*\"/>\t\n            <msdn-id>bb172584</msdn-id>\t\n            <unmanaged>D3DPOOL_MANAGED</unmanaged>\t\n            <unmanaged-short>D3DPOOL_MANAGED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Pool.SystemMemory\">\n            <summary>\t\n            <dd> <p>Resources are placed in memory that is not typically accessible by the Direct3D device. This memory allocation consumes system RAM but does not reduce pageable RAM. These resources do not need to be recreated when a device is lost. Resources in this pool can be locked and can be used as the source for a <strong><see cref=\"M:SharpDX.Direct3D9.Device.UpdateSurface(SharpDX.Direct3D9.Surface,SharpDX.Direct3D9.Surface)\"/></strong> or <strong><see cref=\"M:SharpDX.Direct3D9.Device.UpdateTexture(SharpDX.Direct3D9.BaseTexture,SharpDX.Direct3D9.BaseTexture)\"/></strong> operation to a memory resource created with <see cref=\"F:SharpDX.Direct3D9.Pool.Default\"/>. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPOOL_SYSTEMMEM']/*\"/>\t\n            <msdn-id>bb172584</msdn-id>\t\n            <unmanaged>D3DPOOL_SYSTEMMEM</unmanaged>\t\n            <unmanaged-short>D3DPOOL_SYSTEMMEM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Pool.Scratch\">\n            <summary>\t\n            <dd> <p>Resources are placed in system RAM and do not need to be recreated when a device is lost.  These resources are not bound by device size or format restrictions.  Because of this, these resources cannot be accessed by the Direct3D device nor set as textures or render targets. However, these resources can always be created, locked, and copied.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPOOL_SCRATCH']/*\"/>\t\n            <msdn-id>bb172584</msdn-id>\t\n            <unmanaged>D3DPOOL_SCRATCH</unmanaged>\t\n            <unmanaged-short>D3DPOOL_SCRATCH</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.Present\">\n            <summary>\t\n            <p>Describes the relationship between the adapter refresh rate and the rate at which <strong>Present</strong> or <strong>Present</strong> operations are completed.  These values also serve as flag values for the PresentationIntervals field of <strong><see cref=\"T:SharpDX.Direct3D9.Capabilities\"/></strong>.</p><p></p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Windowed mode supports <see cref=\"F:SharpDX.Direct3D9.PresentInterval.Default\"/>, <see cref=\"F:SharpDX.Direct3D9.PresentInterval.Immediate\"/>, and <see cref=\"F:SharpDX.Direct3D9.PresentInterval.One\"/>. <see cref=\"F:SharpDX.Direct3D9.PresentInterval.Default\"/> and the <see cref=\"F:SharpDX.Direct3D9.PresentInterval.One\"/> are nearly equivalent (see  the information regarding timer resolution below). They perform similarly to COPY_VSYNC in that there is only one present per frame, and they prevent tearing with beam-following. In contrast, <see cref=\"F:SharpDX.Direct3D9.PresentInterval.Immediate\"/> will attempt to provide an unlimited presentation rate.</p><p>Full-screen mode supports similar usage as windowed mode by supporting <see cref=\"F:SharpDX.Direct3D9.PresentInterval.Immediate\"/> regardless of the refresh rate or swap effect. <see cref=\"F:SharpDX.Direct3D9.PresentInterval.Default\"/> uses the default system timer resolution whereas the <see cref=\"F:SharpDX.Direct3D9.PresentInterval.One\"/> calls <strong>timeBeginPeriod</strong> to enhance system timer resolution. This improves the quality of vertical sync, but consumes slightly more processing time. Both parameters attempt to synchronize vertically.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPRESENT']/*\"/>\t\n            <msdn-id>bb172585</msdn-id>\t\n            <unmanaged>D3DPRESENT</unmanaged>\t\n            <unmanaged-short>D3DPRESENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Present.BackBuffersMaximum\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPRESENT_BACK_BUFFERS_MAX']/*\"/>\t\n            <unmanaged>D3DPRESENT_BACK_BUFFERS_MAX</unmanaged>\t\n            <unmanaged-short>D3DPRESENT_BACK_BUFFERS_MAX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Present.BackBuffersMaximumEx\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPRESENT_BACK_BUFFERS_MAX_EX']/*\"/>\t\n            <unmanaged>D3DPRESENT_BACK_BUFFERS_MAX_EX</unmanaged>\t\n            <unmanaged-short>D3DPRESENT_BACK_BUFFERS_MAX_EX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Present.DoNotWait\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPRESENT_DONOTWAIT']/*\"/>\t\n            <unmanaged>D3DPRESENT_DONOTWAIT</unmanaged>\t\n            <unmanaged-short>D3DPRESENT_DONOTWAIT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Present.LinearContent\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPRESENT_LINEAR_CONTENT']/*\"/>\t\n            <unmanaged>D3DPRESENT_LINEAR_CONTENT</unmanaged>\t\n            <unmanaged-short>D3DPRESENT_LINEAR_CONTENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Present.DoNotFlip\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPRESENT_DONOTFLIP']/*\"/>\t\n            <unmanaged>D3DPRESENT_DONOTFLIP</unmanaged>\t\n            <unmanaged-short>D3DPRESENT_DONOTFLIP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Present.FlipRestart\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPRESENT_FLIPRESTART']/*\"/>\t\n            <unmanaged>D3DPRESENT_FLIPRESTART</unmanaged>\t\n            <unmanaged-short>D3DPRESENT_FLIPRESTART</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Present.VideoRestrictToMonitor\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPRESENT_VIDEO_RESTRICT_TO_MONITOR']/*\"/>\t\n            <unmanaged>D3DPRESENT_VIDEO_RESTRICT_TO_MONITOR</unmanaged>\t\n            <unmanaged-short>D3DPRESENT_VIDEO_RESTRICT_TO_MONITOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Present.UpdateOverlayOnly\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPRESENT_UPDATEOVERLAYONLY']/*\"/>\t\n            <unmanaged>D3DPRESENT_UPDATEOVERLAYONLY</unmanaged>\t\n            <unmanaged-short>D3DPRESENT_UPDATEOVERLAYONLY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Present.HideOverlay\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPRESENT_HIDEOVERLAY']/*\"/>\t\n            <unmanaged>D3DPRESENT_HIDEOVERLAY</unmanaged>\t\n            <unmanaged-short>D3DPRESENT_HIDEOVERLAY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Present.UpdateColorKey\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPRESENT_UPDATECOLORKEY']/*\"/>\t\n            <unmanaged>D3DPRESENT_UPDATECOLORKEY</unmanaged>\t\n            <unmanaged-short>D3DPRESENT_UPDATECOLORKEY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Present.ForceImmediate\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPRESENT_FORCEIMMEDIATE']/*\"/>\t\n            <unmanaged>D3DPRESENT_FORCEIMMEDIATE</unmanaged>\t\n            <unmanaged-short>D3DPRESENT_FORCEIMMEDIATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Present.RateDefault\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPRESENT_RATE_DEFAULT']/*\"/>\t\n            <unmanaged>D3DPRESENT_RATE_DEFAULT</unmanaged>\t\n            <unmanaged-short>D3DPRESENT_RATE_DEFAULT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Present.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.PresentFlags\">\n            <summary>\t\n            <p>Constants used by <strong><see cref=\"T:SharpDX.Direct3D9.PresentParameters\"/></strong>.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPRESENTFLAG']/*\"/>\t\n            <msdn-id>bb172586</msdn-id>\t\n            <unmanaged>D3DPRESENTFLAG</unmanaged>\t\n            <unmanaged-short>D3DPRESENTFLAG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PresentFlags.LockableBackBuffer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPRESENTFLAG_LOCKABLE_BACKBUFFER']/*\"/>\t\n            <unmanaged>D3DPRESENTFLAG_LOCKABLE_BACKBUFFER</unmanaged>\t\n            <unmanaged-short>D3DPRESENTFLAG_LOCKABLE_BACKBUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PresentFlags.DiscardDepthStencil\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPRESENTFLAG_DISCARD_DEPTHSTENCIL']/*\"/>\t\n            <unmanaged>D3DPRESENTFLAG_DISCARD_DEPTHSTENCIL</unmanaged>\t\n            <unmanaged-short>D3DPRESENTFLAG_DISCARD_DEPTHSTENCIL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PresentFlags.DeviceClip\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPRESENTFLAG_DEVICECLIP']/*\"/>\t\n            <unmanaged>D3DPRESENTFLAG_DEVICECLIP</unmanaged>\t\n            <unmanaged-short>D3DPRESENTFLAG_DEVICECLIP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PresentFlags.Video\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPRESENTFLAG_VIDEO']/*\"/>\t\n            <unmanaged>D3DPRESENTFLAG_VIDEO</unmanaged>\t\n            <unmanaged-short>D3DPRESENTFLAG_VIDEO</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PresentFlags.NoAutoRotate\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPRESENTFLAG_NOAUTOROTATE']/*\"/>\t\n            <unmanaged>D3DPRESENTFLAG_NOAUTOROTATE</unmanaged>\t\n            <unmanaged-short>D3DPRESENTFLAG_NOAUTOROTATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PresentFlags.UnprunedMode\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPRESENTFLAG_UNPRUNEDMODE']/*\"/>\t\n            <unmanaged>D3DPRESENTFLAG_UNPRUNEDMODE</unmanaged>\t\n            <unmanaged-short>D3DPRESENTFLAG_UNPRUNEDMODE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PresentFlags.OverlayLimitedRgb\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPRESENTFLAG_OVERLAY_LIMITEDRGB']/*\"/>\t\n            <unmanaged>D3DPRESENTFLAG_OVERLAY_LIMITEDRGB</unmanaged>\t\n            <unmanaged-short>D3DPRESENTFLAG_OVERLAY_LIMITEDRGB</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PresentFlags.OverlayYCbCrBt709\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPRESENTFLAG_OVERLAY_YCbCr_BT709']/*\"/>\t\n            <unmanaged>D3DPRESENTFLAG_OVERLAY_YCbCr_BT709</unmanaged>\t\n            <unmanaged-short>D3DPRESENTFLAG_OVERLAY_YCbCr_BT709</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PresentFlags.OverlayYCbCrXvYCC\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPRESENTFLAG_OVERLAY_YCbCr_xvYCC']/*\"/>\t\n            <unmanaged>D3DPRESENTFLAG_OVERLAY_YCbCr_xvYCC</unmanaged>\t\n            <unmanaged-short>D3DPRESENTFLAG_OVERLAY_YCbCr_xvYCC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PresentFlags.RestrictedContent\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPRESENTFLAG_RESTRICTED_CONTENT']/*\"/>\t\n            <unmanaged>D3DPRESENTFLAG_RESTRICTED_CONTENT</unmanaged>\t\n            <unmanaged-short>D3DPRESENTFLAG_RESTRICTED_CONTENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PresentFlags.RestrictSharedResourceDriver\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPRESENTFLAG_RESTRICT_SHARED_RESOURCE_DRIVER']/*\"/>\t\n            <unmanaged>D3DPRESENTFLAG_RESTRICT_SHARED_RESOURCE_DRIVER</unmanaged>\t\n            <unmanaged-short>D3DPRESENTFLAG_RESTRICT_SHARED_RESOURCE_DRIVER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PresentFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.PresentInterval\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPRESENT_INTERVAL']/*\"/>\t\n            <unmanaged>D3DPRESENT_INTERVAL</unmanaged>\t\n            <unmanaged-short>D3DPRESENT_INTERVAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PresentInterval.Default\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPRESENT_INTERVAL_DEFAULT']/*\"/>\t\n            <unmanaged>D3DPRESENT_INTERVAL_DEFAULT</unmanaged>\t\n            <unmanaged-short>D3DPRESENT_INTERVAL_DEFAULT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PresentInterval.One\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPRESENT_INTERVAL_ONE']/*\"/>\t\n            <unmanaged>D3DPRESENT_INTERVAL_ONE</unmanaged>\t\n            <unmanaged-short>D3DPRESENT_INTERVAL_ONE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PresentInterval.Two\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPRESENT_INTERVAL_TWO']/*\"/>\t\n            <unmanaged>D3DPRESENT_INTERVAL_TWO</unmanaged>\t\n            <unmanaged-short>D3DPRESENT_INTERVAL_TWO</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PresentInterval.Three\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPRESENT_INTERVAL_THREE']/*\"/>\t\n            <unmanaged>D3DPRESENT_INTERVAL_THREE</unmanaged>\t\n            <unmanaged-short>D3DPRESENT_INTERVAL_THREE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PresentInterval.Four\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPRESENT_INTERVAL_FOUR']/*\"/>\t\n            <unmanaged>D3DPRESENT_INTERVAL_FOUR</unmanaged>\t\n            <unmanaged-short>D3DPRESENT_INTERVAL_FOUR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PresentInterval.Immediate\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPRESENT_INTERVAL_IMMEDIATE']/*\"/>\t\n            <unmanaged>D3DPRESENT_INTERVAL_IMMEDIATE</unmanaged>\t\n            <unmanaged-short>D3DPRESENT_INTERVAL_IMMEDIATE</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.PrimitiveMiscCaps\">\n            <summary>\t\n            <p>Miscellaneous driver primitive capability flags.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPMISCCAPS']/*\"/>\t\n            <msdn-id>bb172583</msdn-id>\t\n            <unmanaged>D3DPMISCCAPS</unmanaged>\t\n            <unmanaged-short>D3DPMISCCAPS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PrimitiveMiscCaps.MaskZ\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPMISCCAPS_MASKZ']/*\"/>\t\n            <unmanaged>D3DPMISCCAPS_MASKZ</unmanaged>\t\n            <unmanaged-short>D3DPMISCCAPS_MASKZ</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PrimitiveMiscCaps.CullNone\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPMISCCAPS_CULLNONE']/*\"/>\t\n            <unmanaged>D3DPMISCCAPS_CULLNONE</unmanaged>\t\n            <unmanaged-short>D3DPMISCCAPS_CULLNONE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PrimitiveMiscCaps.CullCW\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPMISCCAPS_CULLCW']/*\"/>\t\n            <unmanaged>D3DPMISCCAPS_CULLCW</unmanaged>\t\n            <unmanaged-short>D3DPMISCCAPS_CULLCW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PrimitiveMiscCaps.CullCCW\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPMISCCAPS_CULLCCW']/*\"/>\t\n            <unmanaged>D3DPMISCCAPS_CULLCCW</unmanaged>\t\n            <unmanaged-short>D3DPMISCCAPS_CULLCCW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PrimitiveMiscCaps.ColorWriteEnable\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPMISCCAPS_COLORWRITEENABLE']/*\"/>\t\n            <unmanaged>D3DPMISCCAPS_COLORWRITEENABLE</unmanaged>\t\n            <unmanaged-short>D3DPMISCCAPS_COLORWRITEENABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PrimitiveMiscCaps.ClipPlanesScaledPoints\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPMISCCAPS_CLIPPLANESCALEDPOINTS']/*\"/>\t\n            <unmanaged>D3DPMISCCAPS_CLIPPLANESCALEDPOINTS</unmanaged>\t\n            <unmanaged-short>D3DPMISCCAPS_CLIPPLANESCALEDPOINTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PrimitiveMiscCaps.ClipTLVertices\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPMISCCAPS_CLIPTLVERTS']/*\"/>\t\n            <unmanaged>D3DPMISCCAPS_CLIPTLVERTS</unmanaged>\t\n            <unmanaged-short>D3DPMISCCAPS_CLIPTLVERTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PrimitiveMiscCaps.TssArgTemp\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPMISCCAPS_TSSARGTEMP']/*\"/>\t\n            <unmanaged>D3DPMISCCAPS_TSSARGTEMP</unmanaged>\t\n            <unmanaged-short>D3DPMISCCAPS_TSSARGTEMP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PrimitiveMiscCaps.BlendOperation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPMISCCAPS_BLENDOP']/*\"/>\t\n            <unmanaged>D3DPMISCCAPS_BLENDOP</unmanaged>\t\n            <unmanaged-short>D3DPMISCCAPS_BLENDOP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PrimitiveMiscCaps.NullReference\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPMISCCAPS_NULLREFERENCE']/*\"/>\t\n            <unmanaged>D3DPMISCCAPS_NULLREFERENCE</unmanaged>\t\n            <unmanaged-short>D3DPMISCCAPS_NULLREFERENCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PrimitiveMiscCaps.IndependentWriteMasks\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPMISCCAPS_INDEPENDENTWRITEMASKS']/*\"/>\t\n            <unmanaged>D3DPMISCCAPS_INDEPENDENTWRITEMASKS</unmanaged>\t\n            <unmanaged-short>D3DPMISCCAPS_INDEPENDENTWRITEMASKS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PrimitiveMiscCaps.PerStageConstant\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPMISCCAPS_PERSTAGECONSTANT']/*\"/>\t\n            <unmanaged>D3DPMISCCAPS_PERSTAGECONSTANT</unmanaged>\t\n            <unmanaged-short>D3DPMISCCAPS_PERSTAGECONSTANT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PrimitiveMiscCaps.FogAndSpecularAlpha\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPMISCCAPS_FOGANDSPECULARALPHA']/*\"/>\t\n            <unmanaged>D3DPMISCCAPS_FOGANDSPECULARALPHA</unmanaged>\t\n            <unmanaged-short>D3DPMISCCAPS_FOGANDSPECULARALPHA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PrimitiveMiscCaps.SeparateAlphaBlend\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPMISCCAPS_SEPARATEALPHABLEND']/*\"/>\t\n            <unmanaged>D3DPMISCCAPS_SEPARATEALPHABLEND</unmanaged>\t\n            <unmanaged-short>D3DPMISCCAPS_SEPARATEALPHABLEND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PrimitiveMiscCaps.MrtIndependentBitDepths\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPMISCCAPS_MRTINDEPENDENTBITDEPTHS']/*\"/>\t\n            <unmanaged>D3DPMISCCAPS_MRTINDEPENDENTBITDEPTHS</unmanaged>\t\n            <unmanaged-short>D3DPMISCCAPS_MRTINDEPENDENTBITDEPTHS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PrimitiveMiscCaps.MrtPostPixelShaderBlending\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPMISCCAPS_MRTPOSTPIXELSHADERBLENDING']/*\"/>\t\n            <unmanaged>D3DPMISCCAPS_MRTPOSTPIXELSHADERBLENDING</unmanaged>\t\n            <unmanaged-short>D3DPMISCCAPS_MRTPOSTPIXELSHADERBLENDING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PrimitiveMiscCaps.FogVertexClamped\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPMISCCAPS_FOGVERTEXCLAMPED']/*\"/>\t\n            <unmanaged>D3DPMISCCAPS_FOGVERTEXCLAMPED</unmanaged>\t\n            <unmanaged-short>D3DPMISCCAPS_FOGVERTEXCLAMPED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PrimitiveMiscCaps.PostBlendSrgbConvert\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPMISCCAPS_POSTBLENDSRGBCONVERT']/*\"/>\t\n            <unmanaged>D3DPMISCCAPS_POSTBLENDSRGBCONVERT</unmanaged>\t\n            <unmanaged-short>D3DPMISCCAPS_POSTBLENDSRGBCONVERT</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.PrimitiveType\">\n            <summary>\t\n            <p>Defines the primitives supported by Direct3D.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Using Triangle Strips or Triangle Fans (Direct3D 9) is often more efficient than using triangle lists because fewer vertices are duplicated.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPRIMITIVETYPE']/*\"/>\t\n            <msdn-id>bb172589</msdn-id>\t\n            <unmanaged>D3DPRIMITIVETYPE</unmanaged>\t\n            <unmanaged-short>D3DPRIMITIVETYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PrimitiveType.PointList\">\n            <summary>\t\n            <dd> <p>Renders the vertices as a collection of isolated points. This value is unsupported for indexed primitives.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPT_POINTLIST']/*\"/>\t\n            <msdn-id>bb172589</msdn-id>\t\n            <unmanaged>D3DPT_POINTLIST</unmanaged>\t\n            <unmanaged-short>D3DPT_POINTLIST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PrimitiveType.LineList\">\n            <summary>\t\n            <dd> <p>Renders the vertices as a list of isolated straight line segments.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPT_LINELIST']/*\"/>\t\n            <msdn-id>bb172589</msdn-id>\t\n            <unmanaged>D3DPT_LINELIST</unmanaged>\t\n            <unmanaged-short>D3DPT_LINELIST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PrimitiveType.LineStrip\">\n            <summary>\t\n            <dd> <p>Renders the vertices as a single polyline.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPT_LINESTRIP']/*\"/>\t\n            <msdn-id>bb172589</msdn-id>\t\n            <unmanaged>D3DPT_LINESTRIP</unmanaged>\t\n            <unmanaged-short>D3DPT_LINESTRIP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PrimitiveType.TriangleList\">\n            <summary>\t\n            <dd> <p>Renders the specified vertices as a sequence of isolated triangles. Each group of three vertices defines a separate triangle. </p> <p>Back-face culling is affected by the current winding-order render state.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPT_TRIANGLELIST']/*\"/>\t\n            <msdn-id>bb172589</msdn-id>\t\n            <unmanaged>D3DPT_TRIANGLELIST</unmanaged>\t\n            <unmanaged-short>D3DPT_TRIANGLELIST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PrimitiveType.TriangleStrip\">\n            <summary>\t\n            <dd> <p>Renders the vertices as a triangle strip. The backface-culling flag is automatically flipped on even-numbered triangles. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPT_TRIANGLESTRIP']/*\"/>\t\n            <msdn-id>bb172589</msdn-id>\t\n            <unmanaged>D3DPT_TRIANGLESTRIP</unmanaged>\t\n            <unmanaged-short>D3DPT_TRIANGLESTRIP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PrimitiveType.TriangleFan\">\n            <summary>\t\n            <dd> <p>Renders the vertices as a triangle fan. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPT_TRIANGLEFAN']/*\"/>\t\n            <msdn-id>bb172589</msdn-id>\t\n            <unmanaged>D3DPT_TRIANGLEFAN</unmanaged>\t\n            <unmanaged-short>D3DPT_TRIANGLEFAN</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.QueryType\">\n            <summary>\t\n            <p>Identifies the query type. For information about queries, see Queries (Direct3D 9) </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DQUERYTYPE']/*\"/>\t\n            <msdn-id>bb172594</msdn-id>\t\n            <unmanaged>D3DQUERYTYPE</unmanaged>\t\n            <unmanaged-short>D3DQUERYTYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.QueryType.VCache\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DQUERYTYPE_VCACHE']/*\"/>\t\n            <unmanaged>D3DQUERYTYPE_VCACHE</unmanaged>\t\n            <unmanaged-short>D3DQUERYTYPE_VCACHE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.QueryType.ResourceManager\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DQUERYTYPE_RESOURCEMANAGER']/*\"/>\t\n            <unmanaged>D3DQUERYTYPE_RESOURCEMANAGER</unmanaged>\t\n            <unmanaged-short>D3DQUERYTYPE_RESOURCEMANAGER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.QueryType.VertexStats\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DQUERYTYPE_VERTEXSTATS']/*\"/>\t\n            <unmanaged>D3DQUERYTYPE_VERTEXSTATS</unmanaged>\t\n            <unmanaged-short>D3DQUERYTYPE_VERTEXSTATS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.QueryType.Event\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DQUERYTYPE_EVENT']/*\"/>\t\n            <unmanaged>D3DQUERYTYPE_EVENT</unmanaged>\t\n            <unmanaged-short>D3DQUERYTYPE_EVENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.QueryType.Occlusion\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DQUERYTYPE_OCCLUSION']/*\"/>\t\n            <unmanaged>D3DQUERYTYPE_OCCLUSION</unmanaged>\t\n            <unmanaged-short>D3DQUERYTYPE_OCCLUSION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.QueryType.Timestamp\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DQUERYTYPE_TIMESTAMP']/*\"/>\t\n            <unmanaged>D3DQUERYTYPE_TIMESTAMP</unmanaged>\t\n            <unmanaged-short>D3DQUERYTYPE_TIMESTAMP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.QueryType.TimestampDisjoint\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DQUERYTYPE_TIMESTAMPDISJOINT']/*\"/>\t\n            <unmanaged>D3DQUERYTYPE_TIMESTAMPDISJOINT</unmanaged>\t\n            <unmanaged-short>D3DQUERYTYPE_TIMESTAMPDISJOINT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.QueryType.TimestampFreq\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DQUERYTYPE_TIMESTAMPFREQ']/*\"/>\t\n            <unmanaged>D3DQUERYTYPE_TIMESTAMPFREQ</unmanaged>\t\n            <unmanaged-short>D3DQUERYTYPE_TIMESTAMPFREQ</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.QueryType.PipelineTimings\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DQUERYTYPE_PIPELINETIMINGS']/*\"/>\t\n            <unmanaged>D3DQUERYTYPE_PIPELINETIMINGS</unmanaged>\t\n            <unmanaged-short>D3DQUERYTYPE_PIPELINETIMINGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.QueryType.InterfaceTimings\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DQUERYTYPE_INTERFACETIMINGS']/*\"/>\t\n            <unmanaged>D3DQUERYTYPE_INTERFACETIMINGS</unmanaged>\t\n            <unmanaged-short>D3DQUERYTYPE_INTERFACETIMINGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.QueryType.VertexTimings\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DQUERYTYPE_VERTEXTIMINGS']/*\"/>\t\n            <unmanaged>D3DQUERYTYPE_VERTEXTIMINGS</unmanaged>\t\n            <unmanaged-short>D3DQUERYTYPE_VERTEXTIMINGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.QueryType.PixelTimings\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DQUERYTYPE_PIXELTIMINGS']/*\"/>\t\n            <unmanaged>D3DQUERYTYPE_PIXELTIMINGS</unmanaged>\t\n            <unmanaged-short>D3DQUERYTYPE_PIXELTIMINGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.QueryType.BandwidthTimings\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DQUERYTYPE_BANDWIDTHTIMINGS']/*\"/>\t\n            <unmanaged>D3DQUERYTYPE_BANDWIDTHTIMINGS</unmanaged>\t\n            <unmanaged-short>D3DQUERYTYPE_BANDWIDTHTIMINGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.QueryType.CacheUtilization\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DQUERYTYPE_CACHEUTILIZATION']/*\"/>\t\n            <unmanaged>D3DQUERYTYPE_CACHEUTILIZATION</unmanaged>\t\n            <unmanaged-short>D3DQUERYTYPE_CACHEUTILIZATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.QueryType.MemoryPressure\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DQUERYTYPE_MEMORYPRESSURE']/*\"/>\t\n            <unmanaged>D3DQUERYTYPE_MEMORYPRESSURE</unmanaged>\t\n            <unmanaged-short>D3DQUERYTYPE_MEMORYPRESSURE</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.RasterCaps\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPRASTERCAPS']/*\"/>\t\n            <unmanaged>D3DPRASTERCAPS</unmanaged>\t\n            <unmanaged-short>D3DPRASTERCAPS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RasterCaps.Dither\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPRASTERCAPS_DITHER']/*\"/>\t\n            <unmanaged>D3DPRASTERCAPS_DITHER</unmanaged>\t\n            <unmanaged-short>D3DPRASTERCAPS_DITHER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RasterCaps.DepthTest\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPRASTERCAPS_ZTEST']/*\"/>\t\n            <unmanaged>D3DPRASTERCAPS_ZTEST</unmanaged>\t\n            <unmanaged-short>D3DPRASTERCAPS_ZTEST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RasterCaps.FogVertex\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPRASTERCAPS_FOGVERTEX']/*\"/>\t\n            <unmanaged>D3DPRASTERCAPS_FOGVERTEX</unmanaged>\t\n            <unmanaged-short>D3DPRASTERCAPS_FOGVERTEX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RasterCaps.FogTable\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPRASTERCAPS_FOGTABLE']/*\"/>\t\n            <unmanaged>D3DPRASTERCAPS_FOGTABLE</unmanaged>\t\n            <unmanaged-short>D3DPRASTERCAPS_FOGTABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RasterCaps.MipMapLodBias\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPRASTERCAPS_MIPMAPLODBIAS']/*\"/>\t\n            <unmanaged>D3DPRASTERCAPS_MIPMAPLODBIAS</unmanaged>\t\n            <unmanaged-short>D3DPRASTERCAPS_MIPMAPLODBIAS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RasterCaps.ZBufferLessHsr\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPRASTERCAPS_ZBUFFERLESSHSR']/*\"/>\t\n            <unmanaged>D3DPRASTERCAPS_ZBUFFERLESSHSR</unmanaged>\t\n            <unmanaged-short>D3DPRASTERCAPS_ZBUFFERLESSHSR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RasterCaps.FogRange\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPRASTERCAPS_FOGRANGE']/*\"/>\t\n            <unmanaged>D3DPRASTERCAPS_FOGRANGE</unmanaged>\t\n            <unmanaged-short>D3DPRASTERCAPS_FOGRANGE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RasterCaps.Anisotropy\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPRASTERCAPS_ANISOTROPY']/*\"/>\t\n            <unmanaged>D3DPRASTERCAPS_ANISOTROPY</unmanaged>\t\n            <unmanaged-short>D3DPRASTERCAPS_ANISOTROPY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RasterCaps.WBuffer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPRASTERCAPS_WBUFFER']/*\"/>\t\n            <unmanaged>D3DPRASTERCAPS_WBUFFER</unmanaged>\t\n            <unmanaged-short>D3DPRASTERCAPS_WBUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RasterCaps.WFog\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPRASTERCAPS_WFOG']/*\"/>\t\n            <unmanaged>D3DPRASTERCAPS_WFOG</unmanaged>\t\n            <unmanaged-short>D3DPRASTERCAPS_WFOG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RasterCaps.ZFog\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPRASTERCAPS_ZFOG']/*\"/>\t\n            <unmanaged>D3DPRASTERCAPS_ZFOG</unmanaged>\t\n            <unmanaged-short>D3DPRASTERCAPS_ZFOG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RasterCaps.ColorPerspective\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPRASTERCAPS_COLORPERSPECTIVE']/*\"/>\t\n            <unmanaged>D3DPRASTERCAPS_COLORPERSPECTIVE</unmanaged>\t\n            <unmanaged-short>D3DPRASTERCAPS_COLORPERSPECTIVE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RasterCaps.ScissorTest\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPRASTERCAPS_SCISSORTEST']/*\"/>\t\n            <unmanaged>D3DPRASTERCAPS_SCISSORTEST</unmanaged>\t\n            <unmanaged-short>D3DPRASTERCAPS_SCISSORTEST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RasterCaps.SlopeScaleDepthBias\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPRASTERCAPS_SLOPESCALEDEPTHBIAS']/*\"/>\t\n            <unmanaged>D3DPRASTERCAPS_SLOPESCALEDEPTHBIAS</unmanaged>\t\n            <unmanaged-short>D3DPRASTERCAPS_SLOPESCALEDEPTHBIAS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RasterCaps.DepthBias\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPRASTERCAPS_DEPTHBIAS']/*\"/>\t\n            <unmanaged>D3DPRASTERCAPS_DEPTHBIAS</unmanaged>\t\n            <unmanaged-short>D3DPRASTERCAPS_DEPTHBIAS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RasterCaps.MultisampleToggle\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPRASTERCAPS_MULTISAMPLE_TOGGLE']/*\"/>\t\n            <unmanaged>D3DPRASTERCAPS_MULTISAMPLE_TOGGLE</unmanaged>\t\n            <unmanaged-short>D3DPRASTERCAPS_MULTISAMPLE_TOGGLE</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.RegisterSet\">\n            <summary>\t\n            <p>Data type of the register.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXREGISTER_SET']/*\"/>\t\n            <msdn-id>bb205424</msdn-id>\t\n            <unmanaged>D3DXREGISTER_SET</unmanaged>\t\n            <unmanaged-short>D3DXREGISTER_SET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RegisterSet.Bool\">\n            <summary>\t\n            <dd> <p>Boolean value.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXRS_BOOL']/*\"/>\t\n            <msdn-id>bb205424</msdn-id>\t\n            <unmanaged>D3DXRS_BOOL</unmanaged>\t\n            <unmanaged-short>D3DXRS_BOOL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RegisterSet.Int4\">\n            <summary>\t\n            <dd> <p>4D integer number.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXRS_INT4']/*\"/>\t\n            <msdn-id>bb205424</msdn-id>\t\n            <unmanaged>D3DXRS_INT4</unmanaged>\t\n            <unmanaged-short>D3DXRS_INT4</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RegisterSet.Float4\">\n            <summary>\t\n            <dd> <p>4D floating-point number.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXRS_FLOAT4']/*\"/>\t\n            <msdn-id>bb205424</msdn-id>\t\n            <unmanaged>D3DXRS_FLOAT4</unmanaged>\t\n            <unmanaged-short>D3DXRS_FLOAT4</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RegisterSet.Sampler\">\n            <summary>\t\n            <dd> <p>The register contains 4D sampler data.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXRS_SAMPLER']/*\"/>\t\n            <msdn-id>bb205424</msdn-id>\t\n            <unmanaged>D3DXRS_SAMPLER</unmanaged>\t\n            <unmanaged-short>D3DXRS_SAMPLER</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.RenderState\">\n            <summary>\t\n            <p>The <see cref=\"T:SharpDX.Direct3D9.RenderState\"/> enumerated type lists a variety of attributes, or render states. The enumerators of <see cref=\"T:SharpDX.Direct3D9.RenderState\"/> that are used exclusively by drivers can specify either rendering information or a texture attribute. The following render states are used by display drivers:</p><pre><code>#define D3DRENDERSTATE_EVICTMANAGEDTEXTURES  61\t\n            #define D3DRENDERSTATE_SCENECAPTURE          62\t\n            #define D3DRS_DELETERTPATCH                  169\t\n            #define D3DRS_MAXVERTEXSHADERINST            196\t\n            #define D3DRS_MAXPIXELSHADERINST             197</code></pre><p> </p><p><strong>Enumerators</strong></p><dl> <dt><strong>D3DRENDERSTATE_EVICTMANAGEDTEXTURES</strong></dt> <dd> <dl> <dt></dt> <dt> <p> Determines whether textures are evicted from memory.\t\n            The driver uses a <see cref=\"T:SharpDX.Bool\"/> data type without a default value to detect whether to evict.</p> <p>This render state determines whether the driver evicts textures that it manages (as opposed to textures managed by the Direct3D runtime) from video memory. If the render state value is <strong>TRUE</strong>, the driver evicts the textures. Otherwise, the driver does not evict those textures.</p> </dt> </dl> </dd> <dt><strong>D3DRENDERSTATE_SCENECAPTURE</strong></dt> <dd> <dl> <dt></dt> <dt> <p>Specifies either begin scene information or end scene information for geometric data captured within a frame.\t\n            The driver uses a <see cref=\"T:SharpDX.Bool\"/> data type with a default value of <strong>TRUE</strong> to detect scene-capture information.</p> <p>The driver responds to D3DRENDERSTATE_SCENECAPTURE first with <strong>TRUE</strong> for begin scene information and next with <strong><see cref=\"F:SharpDX.Result.False\"/></strong> for end scene information to capture geometric data within a frame.\t\n            See the <em>permedia2</em> sample driver that ships with the Windows Driver Development Kit (DDK) for an example implementation.\t\n            Using the D3DRENDERSTATE_SCENECAPTURE render state in a <em>D3dDrawPrimitives2</em> call replaces the legacy <strong>D3DHALCallbacks</strong>-&gt;<em>D3dSceneCapture</em> callback routine.</p> <p>Care must be taken in updating a driver that implements the legacy <strong>D3DHALCallbacks</strong>-&gt;<em>D3dSceneCapture</em> callback routine to one using the D3DRENDERSTATE_SCENECAPTURE render state. The <em>D3dSceneCapture</em> callback routine uses the constants D3DHAL_SCENE_CAPTURE_START and D3DHAL_SCENE_CAPTURE_END to indicate, respectively, the beginning and end of a scene. The values of these constants are, respectively, 0 and 1. If you use these constants in place of <strong>TRUE</strong> and <strong><see cref=\"F:SharpDX.Result.False\"/></strong> in this render state, the meaning will be the exact opposite of what you intend.</p> </dt> </dl> </dd> <dt><strong>D3DRS_DELETERTPATCH</strong></dt> <dd> <dl> <dt></dt> <dt> <p><strong>DirectX 8.0 and later versions only.</strong></p> <p>Deletes either a rectangular or triangular patch from memory. \t\n            The driver uses a DWORD data type without a default value to detect the patch to delete.</p> <p>This render state notifies the driver that a patch is to be deleted. The value of this render state is the handle to the patch affected. All cached information should be freed and the handle should be removed from the driver's patch handle table. This render state is not visible to applications but is generated internally when an application calls the <strong>DeletePatch</strong> function. This render state is sent to the driver only when patches are deleted by <strong>DeletePatch</strong> explicitly. All other patches should be cleaned up when the device is destroyed.</p> </dt> </dl> </dd> <dt><strong>D3DRS_MAXVERTEXSHADERINST</strong></dt> <dd> <dl> <dt></dt> <dt> <p><strong>DirectX 9.0 and later versions only.</strong></p> <p>Determines the maximum number of instructions that the vertex shader assembler can execute.</p> <p>The driver uses a DWORD data type with a default value of D3DINFINITEINSTRUCTIONS (0xffffffff) to report the maximum number of vertex-shader instructions.\t\n            This maximum number depends on the version of the vertex shader that the display device supports as shown in the following table.</p> <table> <tr><th>Version</th><th>Maximum number</th></tr> <tr><td>earlier than 2_0</td><td>0</td></tr> <tr><td>2_0 and later</td><td>From 216 (0x0000ffff) to D3DINFINITEINSTRUCTIONS</td></tr> </table> <p>?</p> <p>D3DINFINITEINSTRUCTIONS represents a virtually unlimited amount.</p> <p>Valid values for this render state are numbers that are powers of 2; if the driver sets any other integer, the runtime uses the next nearest power of 2 number.</p> <p>The runtime sets the <strong>MaxVShaderInstructionsExecuted</strong> member of the <see cref=\"T:SharpDX.Direct3D9.Capabilities\"/> structure to this maximum number.</p> </dt> </dl> </dd> <dt><strong>D3DRS_MAXPIXELSHADERINST</strong></dt> <dd> <dl> <dt></dt> <dt> <p><strong>DirectX 9.0 and later versions only.</strong></p> <p>Determines the maximum number of instructions that the pixel shader assembler can execute.</p> <p>The driver uses a DWORD data type with a default value of D3DINFINITEINSTRUCTIONS (0xffffffff) to report the maximum number of pixel-shader instructions.\t\n            This maximum number depends on the version of the pixel shader that the display device supports as shown in the following table.</p> <table> <tr><th>Version</th><th>Maximum number</th></tr> <tr><td>earlier than 2_0</td><td>0</td></tr> <tr><td>2_0</td><td>From 96 to D3DINFINITEINSTRUCTIONS</td></tr> <tr><td>3_0 and later</td><td>From 216 (0x0000ffff) to D3DINFINITEINSTRUCTIONS</td></tr> </table> <p>?</p> <p>D3DINFINITEINSTRUCTIONS represents a virtually unlimited amount.</p> <p>Valid values for this render state are numbers that are powers of 2; if the driver sets any other integer, the runtime uses the next nearest power of 2 number.</p> <p>The runtime sets the <strong>MaxVShaderInstructionsExecuted</strong> member of the <see cref=\"T:SharpDX.Direct3D9.Capabilities\"/> structure to this maximum number.</p> </dt> </dl> </dd> </dl>\t\n            </summary>\t\n            <remarks>\t\n            <p>The driver uses these render states when it performs graphics rendering. Only render states that are specific to drivers are included in the Windows Driver Kit (WDK) documentation. The render states accessible to DirectX applications are included in the DirectX SDK documentation. These application-level render states include such characteristics as whether alpha blending is enabled, whether dithering is enabled, whether Direct3D lighting is used, and the type of shading to be used. </p><p>To update a particular render state, Direct3D stores information about the render state, and then calls the driver's <em>D3dDrawPrimitives2</em> callback routine. The information provided to the driver enables it to:</p><ul> <li> <p>Determine that it should update one or more render states.</p> </li> <li> <p>Identify which render states to update, and what the new render state values should be.</p> </li> </ul><p>Note that for certain render states to be honored, the driver must have previously set capability flags in the relevant member of the D3DPRIMCAPS structure.</p><p>In order to indicate a specific render state update, Direct3D inserts a <strong>D3DHAL_DP2COMMAND</strong> structure into the command buffer, setting the <strong>bCommand</strong> member of this structure to D3DDP2OP_RENDERSTATE (see the description for D3DDP2OP_RENDERSTATE in <strong>D3DHAL_DP2OPERATION</strong>), and setting the <strong>wStateCount</strong> member of the same structure to the number of render states to be updated.</p><p>Immediately following the <strong>D3DHAL_DP2COMMAND</strong> structure, Direct3D inserts one <strong>D3DHAL_DP2RENDERSTATE</strong> structure into the command buffer for each render state to be updated. The <strong>RenderState</strong> member of this structure identifies the render state to be changed; the new value of this render state is specified in either the <strong>dwState</strong> member (for DWORD values) or the <strong>fState</strong> member (for D3DVALUE values).</p><p>The following figure shows a portion of the command buffer containing a D3DDP2OP_RENDERSTATE command and two D3DHAL_DP2RENDERSTATE structures. The first of the three structures indicates that two render states are to be updated. The second structure indicates that the D3DRENDERSTATE_FILLMODE render state is to be changed to <see cref=\"F:SharpDX.Direct3D9.FillMode.Solid\"/>. The third structure indicates that the D3DRENDERSTATE_SHADEMODE render state should be updated to <see cref=\"F:SharpDX.Direct3D9.ShadeMode.Gouraud\"/>.</p><p><strong>Additional Notes</strong></p><p>See the <see cref=\"T:SharpDX.Direct3D9.TextureStage\"/>, <see cref=\"T:SharpDX.Direct3D9.TextureOperation\"/>, and D3DTEXTUREFILTER enumerated types in the DirectX SDK documentation for complete listings of all of the enabled render state types.</p><p>Some changes have been made to the <see cref=\"T:SharpDX.Direct3D9.RenderState\"/> enumerated type for DirectX 5.0 and beyond. D3DRENDERSTATE_BLENDENABLE has been removed completely although it is defined as D3DRENDERSTATE_ALPHABLENDENABLE in the <em>d3dtypes.h</em> header file. See D3DRENDERSTATE_COLORKEYENABLE for an explanation. The 128 integer values in the interval [128, 255] are reserved for texture coordinate wrap flags. These are constructed with the D3DWRAP_U and D3DWRAP_V macros. Using a flags word preserves forward compatibility with texture coordinates of higher dimension than 2D.</p><p>Multitexture macro ops and D3DRENDERSTATE_TEXTUREFACTOR override all of the per-texture stage blending controls (COLOR{OP,ARG1,ARG2} &amp; ALPHA{OP,ARG1,ARG2}).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRENDERSTATETYPE']/*\"/>\t\n            <msdn-id>ff549036</msdn-id>\t\n            <unmanaged>D3DRENDERSTATETYPE</unmanaged>\t\n            <unmanaged-short>D3DRENDERSTATETYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.ZEnable\">\n            <summary>\t\n            <dd> <dl> <dt></dt> <dt> <p> Determines whether textures are evicted from memory.\t\n            The driver uses a <see cref=\"T:SharpDX.Bool\"/> data type without a default value to detect whether to evict.</p> <p>This render state determines whether the driver evicts textures that it manages (as opposed to textures managed by the Direct3D runtime) from video memory. If the render state value is <strong>TRUE</strong>, the driver evicts the textures. Otherwise, the driver does not evict those textures.</p> </dt> </dl> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_ZENABLE']/*\"/>\t\n            <msdn-id>ff549036</msdn-id>\t\n            <unmanaged>D3DRS_ZENABLE</unmanaged>\t\n            <unmanaged-short>D3DRS_ZENABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.FillMode\">\n            <summary>\t\n            <dd> <dl> <dt></dt> <dt> <p>Specifies either begin scene information or end scene information for geometric data captured within a frame.\t\n            The driver uses a <see cref=\"T:SharpDX.Bool\"/> data type with a default value of <strong>TRUE</strong> to detect scene-capture information.</p> <p>The driver responds to D3DRENDERSTATE_SCENECAPTURE first with <strong>TRUE</strong> for begin scene information and next with <strong><see cref=\"F:SharpDX.Result.False\"/></strong> for end scene information to capture geometric data within a frame.\t\n            See the <em>permedia2</em> sample driver that ships with the Windows Driver Development Kit (DDK) for an example implementation.\t\n            Using the D3DRENDERSTATE_SCENECAPTURE render state in a <em>D3dDrawPrimitives2</em> call replaces the legacy <strong>D3DHALCallbacks</strong>-&gt;<em>D3dSceneCapture</em> callback routine.</p> <p>Care must be taken in updating a driver that implements the legacy <strong>D3DHALCallbacks</strong>-&gt;<em>D3dSceneCapture</em> callback routine to one using the D3DRENDERSTATE_SCENECAPTURE render state. The <em>D3dSceneCapture</em> callback routine uses the constants D3DHAL_SCENE_CAPTURE_START and D3DHAL_SCENE_CAPTURE_END to indicate, respectively, the beginning and end of a scene. The values of these constants are, respectively, 0 and 1. If you use these constants in place of <strong>TRUE</strong> and <strong><see cref=\"F:SharpDX.Result.False\"/></strong> in this render state, the meaning will be the exact opposite of what you intend.</p> </dt> </dl> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_FILLMODE']/*\"/>\t\n            <msdn-id>ff549036</msdn-id>\t\n            <unmanaged>D3DRS_FILLMODE</unmanaged>\t\n            <unmanaged-short>D3DRS_FILLMODE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.ShadeMode\">\n            <summary>\t\n            <dd> <dl> <dt></dt> <dt> <p><strong>DirectX 8.0 and later versions only.</strong></p> <p>Deletes either a rectangular or triangular patch from memory. \t\n            The driver uses a DWORD data type without a default value to detect the patch to delete.</p> <p>This render state notifies the driver that a patch is to be deleted. The value of this render state is the handle to the patch affected. All cached information should be freed and the handle should be removed from the driver's patch handle table. This render state is not visible to applications but is generated internally when an application calls the <strong>DeletePatch</strong> function. This render state is sent to the driver only when patches are deleted by <strong>DeletePatch</strong> explicitly. All other patches should be cleaned up when the device is destroyed.</p> </dt> </dl> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_SHADEMODE']/*\"/>\t\n            <msdn-id>ff549036</msdn-id>\t\n            <unmanaged>D3DRS_SHADEMODE</unmanaged>\t\n            <unmanaged-short>D3DRS_SHADEMODE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.ZWriteEnable\">\n            <summary>\t\n            <dd> <dl> <dt></dt> <dt> <p><strong>DirectX 9.0 and later versions only.</strong></p> <p>Determines the maximum number of instructions that the vertex shader assembler can execute.</p> <p>The driver uses a DWORD data type with a default value of D3DINFINITEINSTRUCTIONS (0xffffffff) to report the maximum number of vertex-shader instructions.\t\n            This maximum number depends on the version of the vertex shader that the display device supports as shown in the following table.</p> <table> <tr><th>Version</th><th>Maximum number</th></tr> <tr><td>earlier than 2_0</td><td>0</td></tr> <tr><td>2_0 and later</td><td>From 216 (0x0000ffff) to D3DINFINITEINSTRUCTIONS</td></tr> </table> <p>?</p> <p>D3DINFINITEINSTRUCTIONS represents a virtually unlimited amount.</p> <p>Valid values for this render state are numbers that are powers of 2; if the driver sets any other integer, the runtime uses the next nearest power of 2 number.</p> <p>The runtime sets the <strong>MaxVShaderInstructionsExecuted</strong> member of the <see cref=\"T:SharpDX.Direct3D9.Capabilities\"/> structure to this maximum number.</p> </dt> </dl> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_ZWRITEENABLE']/*\"/>\t\n            <msdn-id>ff549036</msdn-id>\t\n            <unmanaged>D3DRS_ZWRITEENABLE</unmanaged>\t\n            <unmanaged-short>D3DRS_ZWRITEENABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.AlphaTestEnable\">\n            <summary>\t\n            <dd> <dl> <dt></dt> <dt> <p><strong>DirectX 9.0 and later versions only.</strong></p> <p>Determines the maximum number of instructions that the pixel shader assembler can execute.</p> <p>The driver uses a DWORD data type with a default value of D3DINFINITEINSTRUCTIONS (0xffffffff) to report the maximum number of pixel-shader instructions.\t\n            This maximum number depends on the version of the pixel shader that the display device supports as shown in the following table.</p> <table> <tr><th>Version</th><th>Maximum number</th></tr> <tr><td>earlier than 2_0</td><td>0</td></tr> <tr><td>2_0</td><td>From 96 to D3DINFINITEINSTRUCTIONS</td></tr> <tr><td>3_0 and later</td><td>From 216 (0x0000ffff) to D3DINFINITEINSTRUCTIONS</td></tr> </table> <p>?</p> <p>D3DINFINITEINSTRUCTIONS represents a virtually unlimited amount.</p> <p>Valid values for this render state are numbers that are powers of 2; if the driver sets any other integer, the runtime uses the next nearest power of 2 number.</p> <p>The runtime sets the <strong>MaxVShaderInstructionsExecuted</strong> member of the <see cref=\"T:SharpDX.Direct3D9.Capabilities\"/> structure to this maximum number.</p> </dt> </dl> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_ALPHATESTENABLE']/*\"/>\t\n            <msdn-id>ff549036</msdn-id>\t\n            <unmanaged>D3DRS_ALPHATESTENABLE</unmanaged>\t\n            <unmanaged-short>D3DRS_ALPHATESTENABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.LastPixel\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_LASTPIXEL']/*\"/>\t\n            <unmanaged>D3DRS_LASTPIXEL</unmanaged>\t\n            <unmanaged-short>D3DRS_LASTPIXEL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.SourceBlend\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_SRCBLEND']/*\"/>\t\n            <unmanaged>D3DRS_SRCBLEND</unmanaged>\t\n            <unmanaged-short>D3DRS_SRCBLEND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.DestinationBlend\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_DESTBLEND']/*\"/>\t\n            <unmanaged>D3DRS_DESTBLEND</unmanaged>\t\n            <unmanaged-short>D3DRS_DESTBLEND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.CullMode\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_CULLMODE']/*\"/>\t\n            <unmanaged>D3DRS_CULLMODE</unmanaged>\t\n            <unmanaged-short>D3DRS_CULLMODE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.ZFunc\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_ZFUNC']/*\"/>\t\n            <unmanaged>D3DRS_ZFUNC</unmanaged>\t\n            <unmanaged-short>D3DRS_ZFUNC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.AlphaRef\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_ALPHAREF']/*\"/>\t\n            <unmanaged>D3DRS_ALPHAREF</unmanaged>\t\n            <unmanaged-short>D3DRS_ALPHAREF</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.AlphaFunc\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_ALPHAFUNC']/*\"/>\t\n            <unmanaged>D3DRS_ALPHAFUNC</unmanaged>\t\n            <unmanaged-short>D3DRS_ALPHAFUNC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.DitherEnable\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_DITHERENABLE']/*\"/>\t\n            <unmanaged>D3DRS_DITHERENABLE</unmanaged>\t\n            <unmanaged-short>D3DRS_DITHERENABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.AlphaBlendEnable\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_ALPHABLENDENABLE']/*\"/>\t\n            <unmanaged>D3DRS_ALPHABLENDENABLE</unmanaged>\t\n            <unmanaged-short>D3DRS_ALPHABLENDENABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.FogEnable\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_FOGENABLE']/*\"/>\t\n            <unmanaged>D3DRS_FOGENABLE</unmanaged>\t\n            <unmanaged-short>D3DRS_FOGENABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.SpecularEnable\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_SPECULARENABLE']/*\"/>\t\n            <unmanaged>D3DRS_SPECULARENABLE</unmanaged>\t\n            <unmanaged-short>D3DRS_SPECULARENABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.FogColor\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_FOGCOLOR']/*\"/>\t\n            <unmanaged>D3DRS_FOGCOLOR</unmanaged>\t\n            <unmanaged-short>D3DRS_FOGCOLOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.FogTableMode\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_FOGTABLEMODE']/*\"/>\t\n            <unmanaged>D3DRS_FOGTABLEMODE</unmanaged>\t\n            <unmanaged-short>D3DRS_FOGTABLEMODE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.FogStart\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_FOGSTART']/*\"/>\t\n            <unmanaged>D3DRS_FOGSTART</unmanaged>\t\n            <unmanaged-short>D3DRS_FOGSTART</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.FogEnd\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_FOGEND']/*\"/>\t\n            <unmanaged>D3DRS_FOGEND</unmanaged>\t\n            <unmanaged-short>D3DRS_FOGEND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.FogDensity\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_FOGDENSITY']/*\"/>\t\n            <unmanaged>D3DRS_FOGDENSITY</unmanaged>\t\n            <unmanaged-short>D3DRS_FOGDENSITY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.RangeFogEnable\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_RANGEFOGENABLE']/*\"/>\t\n            <unmanaged>D3DRS_RANGEFOGENABLE</unmanaged>\t\n            <unmanaged-short>D3DRS_RANGEFOGENABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.StencilEnable\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_STENCILENABLE']/*\"/>\t\n            <unmanaged>D3DRS_STENCILENABLE</unmanaged>\t\n            <unmanaged-short>D3DRS_STENCILENABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.StencilFail\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_STENCILFAIL']/*\"/>\t\n            <unmanaged>D3DRS_STENCILFAIL</unmanaged>\t\n            <unmanaged-short>D3DRS_STENCILFAIL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.StencilZFail\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_STENCILZFAIL']/*\"/>\t\n            <unmanaged>D3DRS_STENCILZFAIL</unmanaged>\t\n            <unmanaged-short>D3DRS_STENCILZFAIL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.StencilPass\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_STENCILPASS']/*\"/>\t\n            <unmanaged>D3DRS_STENCILPASS</unmanaged>\t\n            <unmanaged-short>D3DRS_STENCILPASS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.StencilFunc\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_STENCILFUNC']/*\"/>\t\n            <unmanaged>D3DRS_STENCILFUNC</unmanaged>\t\n            <unmanaged-short>D3DRS_STENCILFUNC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.StencilRef\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_STENCILREF']/*\"/>\t\n            <unmanaged>D3DRS_STENCILREF</unmanaged>\t\n            <unmanaged-short>D3DRS_STENCILREF</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.StencilMask\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_STENCILMASK']/*\"/>\t\n            <unmanaged>D3DRS_STENCILMASK</unmanaged>\t\n            <unmanaged-short>D3DRS_STENCILMASK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.StencilWriteMask\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_STENCILWRITEMASK']/*\"/>\t\n            <unmanaged>D3DRS_STENCILWRITEMASK</unmanaged>\t\n            <unmanaged-short>D3DRS_STENCILWRITEMASK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.TextureFactor\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_TEXTUREFACTOR']/*\"/>\t\n            <unmanaged>D3DRS_TEXTUREFACTOR</unmanaged>\t\n            <unmanaged-short>D3DRS_TEXTUREFACTOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.Wrap0\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_WRAP0']/*\"/>\t\n            <unmanaged>D3DRS_WRAP0</unmanaged>\t\n            <unmanaged-short>D3DRS_WRAP0</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.Wrap1\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_WRAP1']/*\"/>\t\n            <unmanaged>D3DRS_WRAP1</unmanaged>\t\n            <unmanaged-short>D3DRS_WRAP1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.Wrap2\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_WRAP2']/*\"/>\t\n            <unmanaged>D3DRS_WRAP2</unmanaged>\t\n            <unmanaged-short>D3DRS_WRAP2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.Wrap3\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_WRAP3']/*\"/>\t\n            <unmanaged>D3DRS_WRAP3</unmanaged>\t\n            <unmanaged-short>D3DRS_WRAP3</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.Wrap4\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_WRAP4']/*\"/>\t\n            <unmanaged>D3DRS_WRAP4</unmanaged>\t\n            <unmanaged-short>D3DRS_WRAP4</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.Wrap5\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_WRAP5']/*\"/>\t\n            <unmanaged>D3DRS_WRAP5</unmanaged>\t\n            <unmanaged-short>D3DRS_WRAP5</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.Wrap6\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_WRAP6']/*\"/>\t\n            <unmanaged>D3DRS_WRAP6</unmanaged>\t\n            <unmanaged-short>D3DRS_WRAP6</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.Wrap7\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_WRAP7']/*\"/>\t\n            <unmanaged>D3DRS_WRAP7</unmanaged>\t\n            <unmanaged-short>D3DRS_WRAP7</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.Clipping\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_CLIPPING']/*\"/>\t\n            <unmanaged>D3DRS_CLIPPING</unmanaged>\t\n            <unmanaged-short>D3DRS_CLIPPING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.Lighting\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_LIGHTING']/*\"/>\t\n            <unmanaged>D3DRS_LIGHTING</unmanaged>\t\n            <unmanaged-short>D3DRS_LIGHTING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.Ambient\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_AMBIENT']/*\"/>\t\n            <unmanaged>D3DRS_AMBIENT</unmanaged>\t\n            <unmanaged-short>D3DRS_AMBIENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.FogVertexMode\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_FOGVERTEXMODE']/*\"/>\t\n            <unmanaged>D3DRS_FOGVERTEXMODE</unmanaged>\t\n            <unmanaged-short>D3DRS_FOGVERTEXMODE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.ColorVertex\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_COLORVERTEX']/*\"/>\t\n            <unmanaged>D3DRS_COLORVERTEX</unmanaged>\t\n            <unmanaged-short>D3DRS_COLORVERTEX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.LocalViewer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_LOCALVIEWER']/*\"/>\t\n            <unmanaged>D3DRS_LOCALVIEWER</unmanaged>\t\n            <unmanaged-short>D3DRS_LOCALVIEWER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.NormalizeNormals\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_NORMALIZENORMALS']/*\"/>\t\n            <unmanaged>D3DRS_NORMALIZENORMALS</unmanaged>\t\n            <unmanaged-short>D3DRS_NORMALIZENORMALS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.DiffuseMaterialSource\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_DIFFUSEMATERIALSOURCE']/*\"/>\t\n            <unmanaged>D3DRS_DIFFUSEMATERIALSOURCE</unmanaged>\t\n            <unmanaged-short>D3DRS_DIFFUSEMATERIALSOURCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.SpecularMaterialSource\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_SPECULARMATERIALSOURCE']/*\"/>\t\n            <unmanaged>D3DRS_SPECULARMATERIALSOURCE</unmanaged>\t\n            <unmanaged-short>D3DRS_SPECULARMATERIALSOURCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.AmbientMaterialSource\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_AMBIENTMATERIALSOURCE']/*\"/>\t\n            <unmanaged>D3DRS_AMBIENTMATERIALSOURCE</unmanaged>\t\n            <unmanaged-short>D3DRS_AMBIENTMATERIALSOURCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.EmissiveMaterialSource\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_EMISSIVEMATERIALSOURCE']/*\"/>\t\n            <unmanaged>D3DRS_EMISSIVEMATERIALSOURCE</unmanaged>\t\n            <unmanaged-short>D3DRS_EMISSIVEMATERIALSOURCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.VertexBlend\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_VERTEXBLEND']/*\"/>\t\n            <unmanaged>D3DRS_VERTEXBLEND</unmanaged>\t\n            <unmanaged-short>D3DRS_VERTEXBLEND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.ClipPlaneEnable\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_CLIPPLANEENABLE']/*\"/>\t\n            <unmanaged>D3DRS_CLIPPLANEENABLE</unmanaged>\t\n            <unmanaged-short>D3DRS_CLIPPLANEENABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.PointSize\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_POINTSIZE']/*\"/>\t\n            <unmanaged>D3DRS_POINTSIZE</unmanaged>\t\n            <unmanaged-short>D3DRS_POINTSIZE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.PointSizeMin\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_POINTSIZE_MIN']/*\"/>\t\n            <unmanaged>D3DRS_POINTSIZE_MIN</unmanaged>\t\n            <unmanaged-short>D3DRS_POINTSIZE_MIN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.PointSpriteEnable\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_POINTSPRITEENABLE']/*\"/>\t\n            <unmanaged>D3DRS_POINTSPRITEENABLE</unmanaged>\t\n            <unmanaged-short>D3DRS_POINTSPRITEENABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.PointScaleEnable\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_POINTSCALEENABLE']/*\"/>\t\n            <unmanaged>D3DRS_POINTSCALEENABLE</unmanaged>\t\n            <unmanaged-short>D3DRS_POINTSCALEENABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.PointScaleA\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_POINTSCALE_A']/*\"/>\t\n            <unmanaged>D3DRS_POINTSCALE_A</unmanaged>\t\n            <unmanaged-short>D3DRS_POINTSCALE_A</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.PointScaleB\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_POINTSCALE_B']/*\"/>\t\n            <unmanaged>D3DRS_POINTSCALE_B</unmanaged>\t\n            <unmanaged-short>D3DRS_POINTSCALE_B</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.PointScaleC\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_POINTSCALE_C']/*\"/>\t\n            <unmanaged>D3DRS_POINTSCALE_C</unmanaged>\t\n            <unmanaged-short>D3DRS_POINTSCALE_C</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.MultisampleAntialias\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_MULTISAMPLEANTIALIAS']/*\"/>\t\n            <unmanaged>D3DRS_MULTISAMPLEANTIALIAS</unmanaged>\t\n            <unmanaged-short>D3DRS_MULTISAMPLEANTIALIAS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.MultisampleMask\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_MULTISAMPLEMASK']/*\"/>\t\n            <unmanaged>D3DRS_MULTISAMPLEMASK</unmanaged>\t\n            <unmanaged-short>D3DRS_MULTISAMPLEMASK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.PatchEdgeStyle\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_PATCHEDGESTYLE']/*\"/>\t\n            <unmanaged>D3DRS_PATCHEDGESTYLE</unmanaged>\t\n            <unmanaged-short>D3DRS_PATCHEDGESTYLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.DebugMonitorToken\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_DEBUGMONITORTOKEN']/*\"/>\t\n            <unmanaged>D3DRS_DEBUGMONITORTOKEN</unmanaged>\t\n            <unmanaged-short>D3DRS_DEBUGMONITORTOKEN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.PointSizeMax\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_POINTSIZE_MAX']/*\"/>\t\n            <unmanaged>D3DRS_POINTSIZE_MAX</unmanaged>\t\n            <unmanaged-short>D3DRS_POINTSIZE_MAX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.IndexedVertexBlendEnable\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_INDEXEDVERTEXBLENDENABLE']/*\"/>\t\n            <unmanaged>D3DRS_INDEXEDVERTEXBLENDENABLE</unmanaged>\t\n            <unmanaged-short>D3DRS_INDEXEDVERTEXBLENDENABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.ColorWriteEnable\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_COLORWRITEENABLE']/*\"/>\t\n            <unmanaged>D3DRS_COLORWRITEENABLE</unmanaged>\t\n            <unmanaged-short>D3DRS_COLORWRITEENABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.TweenFactor\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_TWEENFACTOR']/*\"/>\t\n            <unmanaged>D3DRS_TWEENFACTOR</unmanaged>\t\n            <unmanaged-short>D3DRS_TWEENFACTOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.BlendOperation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_BLENDOP']/*\"/>\t\n            <unmanaged>D3DRS_BLENDOP</unmanaged>\t\n            <unmanaged-short>D3DRS_BLENDOP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.PositionDegree\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_POSITIONDEGREE']/*\"/>\t\n            <unmanaged>D3DRS_POSITIONDEGREE</unmanaged>\t\n            <unmanaged-short>D3DRS_POSITIONDEGREE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.NormalDegree\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_NORMALDEGREE']/*\"/>\t\n            <unmanaged>D3DRS_NORMALDEGREE</unmanaged>\t\n            <unmanaged-short>D3DRS_NORMALDEGREE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.ScissorTestEnable\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_SCISSORTESTENABLE']/*\"/>\t\n            <unmanaged>D3DRS_SCISSORTESTENABLE</unmanaged>\t\n            <unmanaged-short>D3DRS_SCISSORTESTENABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.SlopeScaleDepthBias\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_SLOPESCALEDEPTHBIAS']/*\"/>\t\n            <unmanaged>D3DRS_SLOPESCALEDEPTHBIAS</unmanaged>\t\n            <unmanaged-short>D3DRS_SLOPESCALEDEPTHBIAS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.AntialiasedLineEnable\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_ANTIALIASEDLINEENABLE']/*\"/>\t\n            <unmanaged>D3DRS_ANTIALIASEDLINEENABLE</unmanaged>\t\n            <unmanaged-short>D3DRS_ANTIALIASEDLINEENABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.MinTessellationLevel\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_MINTESSELLATIONLEVEL']/*\"/>\t\n            <unmanaged>D3DRS_MINTESSELLATIONLEVEL</unmanaged>\t\n            <unmanaged-short>D3DRS_MINTESSELLATIONLEVEL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.MaxTessellationLevel\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_MAXTESSELLATIONLEVEL']/*\"/>\t\n            <unmanaged>D3DRS_MAXTESSELLATIONLEVEL</unmanaged>\t\n            <unmanaged-short>D3DRS_MAXTESSELLATIONLEVEL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.AdaptiveTessX\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_ADAPTIVETESS_X']/*\"/>\t\n            <unmanaged>D3DRS_ADAPTIVETESS_X</unmanaged>\t\n            <unmanaged-short>D3DRS_ADAPTIVETESS_X</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.AdaptiveTessY\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_ADAPTIVETESS_Y']/*\"/>\t\n            <unmanaged>D3DRS_ADAPTIVETESS_Y</unmanaged>\t\n            <unmanaged-short>D3DRS_ADAPTIVETESS_Y</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.AdaptiveTessZ\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_ADAPTIVETESS_Z']/*\"/>\t\n            <unmanaged>D3DRS_ADAPTIVETESS_Z</unmanaged>\t\n            <unmanaged-short>D3DRS_ADAPTIVETESS_Z</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.AdaptiveTessW\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_ADAPTIVETESS_W']/*\"/>\t\n            <unmanaged>D3DRS_ADAPTIVETESS_W</unmanaged>\t\n            <unmanaged-short>D3DRS_ADAPTIVETESS_W</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.EnableAdaptiveTessellation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_ENABLEADAPTIVETESSELLATION']/*\"/>\t\n            <unmanaged>D3DRS_ENABLEADAPTIVETESSELLATION</unmanaged>\t\n            <unmanaged-short>D3DRS_ENABLEADAPTIVETESSELLATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.TwoSidedStencilMode\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_TWOSIDEDSTENCILMODE']/*\"/>\t\n            <unmanaged>D3DRS_TWOSIDEDSTENCILMODE</unmanaged>\t\n            <unmanaged-short>D3DRS_TWOSIDEDSTENCILMODE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.CcwStencilFail\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_CCW_STENCILFAIL']/*\"/>\t\n            <unmanaged>D3DRS_CCW_STENCILFAIL</unmanaged>\t\n            <unmanaged-short>D3DRS_CCW_STENCILFAIL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.CcwStencilZFail\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_CCW_STENCILZFAIL']/*\"/>\t\n            <unmanaged>D3DRS_CCW_STENCILZFAIL</unmanaged>\t\n            <unmanaged-short>D3DRS_CCW_STENCILZFAIL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.CcwStencilPass\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_CCW_STENCILPASS']/*\"/>\t\n            <unmanaged>D3DRS_CCW_STENCILPASS</unmanaged>\t\n            <unmanaged-short>D3DRS_CCW_STENCILPASS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.CcwStencilFunc\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_CCW_STENCILFUNC']/*\"/>\t\n            <unmanaged>D3DRS_CCW_STENCILFUNC</unmanaged>\t\n            <unmanaged-short>D3DRS_CCW_STENCILFUNC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.ColorWriteEnable1\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_COLORWRITEENABLE1']/*\"/>\t\n            <unmanaged>D3DRS_COLORWRITEENABLE1</unmanaged>\t\n            <unmanaged-short>D3DRS_COLORWRITEENABLE1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.ColorWriteEnable2\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_COLORWRITEENABLE2']/*\"/>\t\n            <unmanaged>D3DRS_COLORWRITEENABLE2</unmanaged>\t\n            <unmanaged-short>D3DRS_COLORWRITEENABLE2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.ColorWriteEnable3\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_COLORWRITEENABLE3']/*\"/>\t\n            <unmanaged>D3DRS_COLORWRITEENABLE3</unmanaged>\t\n            <unmanaged-short>D3DRS_COLORWRITEENABLE3</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.BlendFactor\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_BLENDFACTOR']/*\"/>\t\n            <unmanaged>D3DRS_BLENDFACTOR</unmanaged>\t\n            <unmanaged-short>D3DRS_BLENDFACTOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.SrgbWriteEnable\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_SRGBWRITEENABLE']/*\"/>\t\n            <unmanaged>D3DRS_SRGBWRITEENABLE</unmanaged>\t\n            <unmanaged-short>D3DRS_SRGBWRITEENABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.DepthBias\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_DEPTHBIAS']/*\"/>\t\n            <unmanaged>D3DRS_DEPTHBIAS</unmanaged>\t\n            <unmanaged-short>D3DRS_DEPTHBIAS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.Wrap8\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_WRAP8']/*\"/>\t\n            <unmanaged>D3DRS_WRAP8</unmanaged>\t\n            <unmanaged-short>D3DRS_WRAP8</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.Wrap9\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_WRAP9']/*\"/>\t\n            <unmanaged>D3DRS_WRAP9</unmanaged>\t\n            <unmanaged-short>D3DRS_WRAP9</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.Wrap10\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_WRAP10']/*\"/>\t\n            <unmanaged>D3DRS_WRAP10</unmanaged>\t\n            <unmanaged-short>D3DRS_WRAP10</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.Wrap11\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_WRAP11']/*\"/>\t\n            <unmanaged>D3DRS_WRAP11</unmanaged>\t\n            <unmanaged-short>D3DRS_WRAP11</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.Wrap12\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_WRAP12']/*\"/>\t\n            <unmanaged>D3DRS_WRAP12</unmanaged>\t\n            <unmanaged-short>D3DRS_WRAP12</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.Wrap13\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_WRAP13']/*\"/>\t\n            <unmanaged>D3DRS_WRAP13</unmanaged>\t\n            <unmanaged-short>D3DRS_WRAP13</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.Wrap14\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_WRAP14']/*\"/>\t\n            <unmanaged>D3DRS_WRAP14</unmanaged>\t\n            <unmanaged-short>D3DRS_WRAP14</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.Wrap15\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_WRAP15']/*\"/>\t\n            <unmanaged>D3DRS_WRAP15</unmanaged>\t\n            <unmanaged-short>D3DRS_WRAP15</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.SeparateAlphaBlendEnable\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_SEPARATEALPHABLENDENABLE']/*\"/>\t\n            <unmanaged>D3DRS_SEPARATEALPHABLENDENABLE</unmanaged>\t\n            <unmanaged-short>D3DRS_SEPARATEALPHABLENDENABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.SourceBlendAlpha\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_SRCBLENDALPHA']/*\"/>\t\n            <unmanaged>D3DRS_SRCBLENDALPHA</unmanaged>\t\n            <unmanaged-short>D3DRS_SRCBLENDALPHA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.DestinationBlendAlpha\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_DESTBLENDALPHA']/*\"/>\t\n            <unmanaged>D3DRS_DESTBLENDALPHA</unmanaged>\t\n            <unmanaged-short>D3DRS_DESTBLENDALPHA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderState.BlendOperationAlpha\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRS_BLENDOPALPHA']/*\"/>\t\n            <unmanaged>D3DRS_BLENDOPALPHA</unmanaged>\t\n            <unmanaged-short>D3DRS_BLENDOPALPHA</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.ResourceResidency\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX_RESOURCE_RESIDENCY']/*\"/>\t\n            <unmanaged>D3DX_RESOURCE_RESIDENCY</unmanaged>\t\n            <unmanaged-short>D3DX_RESOURCE_RESIDENCY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ResourceResidency.Resident\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX_RESOURCE_RESIDENCY_RESIDENT']/*\"/>\t\n            <unmanaged>D3DX_RESOURCE_RESIDENCY_RESIDENT</unmanaged>\t\n            <unmanaged-short>D3DX_RESOURCE_RESIDENCY_RESIDENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ResourceResidency.ResidentInSharedMemory\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX_RESOURCE_RESIDENCY_RESIDENT_IN_SHARED_MEMORY']/*\"/>\t\n            <unmanaged>D3DX_RESOURCE_RESIDENCY_RESIDENT_IN_SHARED_MEMORY</unmanaged>\t\n            <unmanaged-short>D3DX_RESOURCE_RESIDENCY_RESIDENT_IN_SHARED_MEMORY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ResourceResidency.NotResident\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DX_RESOURCE_RESIDENCY_NOT_RESIDENT']/*\"/>\t\n            <unmanaged>D3DX_RESOURCE_RESIDENCY_NOT_RESIDENT</unmanaged>\t\n            <unmanaged-short>D3DX_RESOURCE_RESIDENCY_NOT_RESIDENT</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.ResourceType\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRESOURCETYPE']/*\"/>\t\n            <unmanaged>D3DRESOURCETYPE</unmanaged>\t\n            <unmanaged-short>D3DRESOURCETYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ResourceType.Surface\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRTYPE_SURFACE']/*\"/>\t\n            <unmanaged>D3DRTYPE_SURFACE</unmanaged>\t\n            <unmanaged-short>D3DRTYPE_SURFACE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ResourceType.Volume\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRTYPE_VOLUME']/*\"/>\t\n            <unmanaged>D3DRTYPE_VOLUME</unmanaged>\t\n            <unmanaged-short>D3DRTYPE_VOLUME</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ResourceType.Texture\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRTYPE_TEXTURE']/*\"/>\t\n            <unmanaged>D3DRTYPE_TEXTURE</unmanaged>\t\n            <unmanaged-short>D3DRTYPE_TEXTURE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ResourceType.VolumeTexture\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRTYPE_VOLUMETEXTURE']/*\"/>\t\n            <unmanaged>D3DRTYPE_VOLUMETEXTURE</unmanaged>\t\n            <unmanaged-short>D3DRTYPE_VOLUMETEXTURE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ResourceType.CubeTexture\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRTYPE_CUBETEXTURE']/*\"/>\t\n            <unmanaged>D3DRTYPE_CUBETEXTURE</unmanaged>\t\n            <unmanaged-short>D3DRTYPE_CUBETEXTURE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ResourceType.VertexBuffer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRTYPE_VERTEXBUFFER']/*\"/>\t\n            <unmanaged>D3DRTYPE_VERTEXBUFFER</unmanaged>\t\n            <unmanaged-short>D3DRTYPE_VERTEXBUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ResourceType.IndexBuffer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRTYPE_INDEXBUFFER']/*\"/>\t\n            <unmanaged>D3DRTYPE_INDEXBUFFER</unmanaged>\t\n            <unmanaged-short>D3DRTYPE_INDEXBUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.SamplerState\">\n            <summary>\t\n            <p>Sampler states define texture sampling operations such as texture addressing and texture filtering. Some sampler states set-up vertex processing, and some set-up pixel processing. Sampler states can be saved and restored using stateblocks (see State Blocks Save and Restore State (Direct3D 9)).</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DSAMPLERSTATETYPE']/*\"/>\t\n            <msdn-id>bb172602</msdn-id>\t\n            <unmanaged>D3DSAMPLERSTATETYPE</unmanaged>\t\n            <unmanaged-short>D3DSAMPLERSTATETYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.SamplerState.AddressU\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DSAMP_ADDRESSU']/*\"/>\t\n            <unmanaged>D3DSAMP_ADDRESSU</unmanaged>\t\n            <unmanaged-short>D3DSAMP_ADDRESSU</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.SamplerState.AddressV\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DSAMP_ADDRESSV']/*\"/>\t\n            <unmanaged>D3DSAMP_ADDRESSV</unmanaged>\t\n            <unmanaged-short>D3DSAMP_ADDRESSV</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.SamplerState.AddressW\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DSAMP_ADDRESSW']/*\"/>\t\n            <unmanaged>D3DSAMP_ADDRESSW</unmanaged>\t\n            <unmanaged-short>D3DSAMP_ADDRESSW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.SamplerState.BorderColor\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DSAMP_BORDERCOLOR']/*\"/>\t\n            <unmanaged>D3DSAMP_BORDERCOLOR</unmanaged>\t\n            <unmanaged-short>D3DSAMP_BORDERCOLOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.SamplerState.MagFilter\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DSAMP_MAGFILTER']/*\"/>\t\n            <unmanaged>D3DSAMP_MAGFILTER</unmanaged>\t\n            <unmanaged-short>D3DSAMP_MAGFILTER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.SamplerState.MinFilter\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DSAMP_MINFILTER']/*\"/>\t\n            <unmanaged>D3DSAMP_MINFILTER</unmanaged>\t\n            <unmanaged-short>D3DSAMP_MINFILTER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.SamplerState.MipFilter\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DSAMP_MIPFILTER']/*\"/>\t\n            <unmanaged>D3DSAMP_MIPFILTER</unmanaged>\t\n            <unmanaged-short>D3DSAMP_MIPFILTER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.SamplerState.MipMapLodBias\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DSAMP_MIPMAPLODBIAS']/*\"/>\t\n            <unmanaged>D3DSAMP_MIPMAPLODBIAS</unmanaged>\t\n            <unmanaged-short>D3DSAMP_MIPMAPLODBIAS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.SamplerState.MaxMipLevel\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DSAMP_MAXMIPLEVEL']/*\"/>\t\n            <unmanaged>D3DSAMP_MAXMIPLEVEL</unmanaged>\t\n            <unmanaged-short>D3DSAMP_MAXMIPLEVEL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.SamplerState.MaxAnisotropy\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DSAMP_MAXANISOTROPY']/*\"/>\t\n            <unmanaged>D3DSAMP_MAXANISOTROPY</unmanaged>\t\n            <unmanaged-short>D3DSAMP_MAXANISOTROPY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.SamplerState.SrgbTexture\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DSAMP_SRGBTEXTURE']/*\"/>\t\n            <unmanaged>D3DSAMP_SRGBTEXTURE</unmanaged>\t\n            <unmanaged-short>D3DSAMP_SRGBTEXTURE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.SamplerState.ElementIndex\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DSAMP_ELEMENTINDEX']/*\"/>\t\n            <unmanaged>D3DSAMP_ELEMENTINDEX</unmanaged>\t\n            <unmanaged-short>D3DSAMP_ELEMENTINDEX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.SamplerState.DisplacementMapOffset\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DSAMP_DMAPOFFSET']/*\"/>\t\n            <unmanaged>D3DSAMP_DMAPOFFSET</unmanaged>\t\n            <unmanaged-short>D3DSAMP_DMAPOFFSET</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.SamplerTextureType\">\n            <summary>\t\n            <p>Defines the sampler texture types for vertex shaders.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DSAMPLER_TEXTURE_TYPE']/*\"/>\t\n            <msdn-id>bb172603</msdn-id>\t\n            <unmanaged>D3DSAMPLER_TEXTURE_TYPE</unmanaged>\t\n            <unmanaged-short>D3DSAMPLER_TEXTURE_TYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.SamplerTextureType.Unknown\">\n            <summary>\t\n            <dd> <p>Uninitialized value. The value of this element is D3DSP_TEXTURETYPE_SHIFT.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DSTT_UNKNOWN']/*\"/>\t\n            <msdn-id>bb172603</msdn-id>\t\n            <unmanaged>D3DSTT_UNKNOWN</unmanaged>\t\n            <unmanaged-short>D3DSTT_UNKNOWN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.SamplerTextureType.Texture2D\">\n            <summary>\t\n            <dd> <p>Declaring a 2D texture. The value of this element is D3DSP_TEXTURETYPE_SHIFT * 4.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DSTT_2D']/*\"/>\t\n            <msdn-id>bb172603</msdn-id>\t\n            <unmanaged>D3DSTT_2D</unmanaged>\t\n            <unmanaged-short>D3DSTT_2D</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.SamplerTextureType.Cube\">\n            <summary>\t\n            <dd> <p>Declaring a cube texture. The value of this element is D3DSP_TEXTURETYPE_SHIFT * 8.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DSTT_CUBE']/*\"/>\t\n            <msdn-id>bb172603</msdn-id>\t\n            <unmanaged>D3DSTT_CUBE</unmanaged>\t\n            <unmanaged-short>D3DSTT_CUBE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.SamplerTextureType.Volume\">\n            <summary>\t\n            <dd> <p>Declaring a volume texture. The value of this element is D3DSP_TEXTURETYPE_SHIFT * 16.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DSTT_VOLUME']/*\"/>\t\n            <msdn-id>bb172603</msdn-id>\t\n            <unmanaged>D3DSTT_VOLUME</unmanaged>\t\n            <unmanaged-short>D3DSTT_VOLUME</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.ScanlineOrdering\">\n            <summary>\t\n            <p>Flags indicating the method the rasterizer uses to create an image on a surface.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This enumeration is used as a member in <strong><see cref=\"T:SharpDX.Direct3D9.DisplayModeFilter\"/></strong> and <strong><see cref=\"T:SharpDX.Direct3D9.DisplayModeEx\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DSCANLINEORDERING']/*\"/>\t\n            <msdn-id>bb172604</msdn-id>\t\n            <unmanaged>D3DSCANLINEORDERING</unmanaged>\t\n            <unmanaged-short>D3DSCANLINEORDERING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ScanlineOrdering.Unknown\">\n            <summary>\t\n            <dd> <p>The image is created from the first scanline to the last without skipping any.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DSCANLINEORDERING_UNKNOWN']/*\"/>\t\n            <msdn-id>bb172604</msdn-id>\t\n            <unmanaged>D3DSCANLINEORDERING_UNKNOWN</unmanaged>\t\n            <unmanaged-short>D3DSCANLINEORDERING_UNKNOWN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ScanlineOrdering.Progressive\">\n            <summary>\t\n            <dd> <p>The image is created using the interlaced method in which odd-numbered lines are drawn on odd-numbered passes and even lines are drawn on even-numbered passes.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DSCANLINEORDERING_PROGRESSIVE']/*\"/>\t\n            <msdn-id>bb172604</msdn-id>\t\n            <unmanaged>D3DSCANLINEORDERING_PROGRESSIVE</unmanaged>\t\n            <unmanaged-short>D3DSCANLINEORDERING_PROGRESSIVE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ScanlineOrdering.Interlaced\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DSCANLINEORDERING_INTERLACED']/*\"/>\t\n            <unmanaged>D3DSCANLINEORDERING_INTERLACED</unmanaged>\t\n            <unmanaged-short>D3DSCANLINEORDERING_INTERLACED</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.ShadeCaps\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPSHADECAPS']/*\"/>\t\n            <unmanaged>D3DPSHADECAPS</unmanaged>\t\n            <unmanaged-short>D3DPSHADECAPS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ShadeCaps.ColorGouraudRgb\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPSHADECAPS_COLORGOURAUDRGB']/*\"/>\t\n            <unmanaged>D3DPSHADECAPS_COLORGOURAUDRGB</unmanaged>\t\n            <unmanaged-short>D3DPSHADECAPS_COLORGOURAUDRGB</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ShadeCaps.SpecularGouraudRgb\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPSHADECAPS_SPECULARGOURAUDRGB']/*\"/>\t\n            <unmanaged>D3DPSHADECAPS_SPECULARGOURAUDRGB</unmanaged>\t\n            <unmanaged-short>D3DPSHADECAPS_SPECULARGOURAUDRGB</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ShadeCaps.AlphaGouraudBlend\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPSHADECAPS_ALPHAGOURAUDBLEND']/*\"/>\t\n            <unmanaged>D3DPSHADECAPS_ALPHAGOURAUDBLEND</unmanaged>\t\n            <unmanaged-short>D3DPSHADECAPS_ALPHAGOURAUDBLEND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ShadeCaps.FogGouraud\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPSHADECAPS_FOGGOURAUD']/*\"/>\t\n            <unmanaged>D3DPSHADECAPS_FOGGOURAUD</unmanaged>\t\n            <unmanaged-short>D3DPSHADECAPS_FOGGOURAUD</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.ShadeMode\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DSHADEMODE']/*\"/>\t\n            <unmanaged>D3DSHADEMODE</unmanaged>\t\n            <unmanaged-short>D3DSHADEMODE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ShadeMode.Flat\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DSHADE_FLAT']/*\"/>\t\n            <unmanaged>D3DSHADE_FLAT</unmanaged>\t\n            <unmanaged-short>D3DSHADE_FLAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ShadeMode.Gouraud\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DSHADE_GOURAUD']/*\"/>\t\n            <unmanaged>D3DSHADE_GOURAUD</unmanaged>\t\n            <unmanaged-short>D3DSHADE_GOURAUD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ShadeMode.Phong\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DSHADE_PHONG']/*\"/>\t\n            <unmanaged>D3DSHADE_PHONG</unmanaged>\t\n            <unmanaged-short>D3DSHADE_PHONG</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.ShaderFlags\">\n            <summary>\t\n            <p>The following flags are used for parsing, compiling, or assembling shaders:</p><p></p><ul> <li>Parser</li> <li>Compiler</li> <li>Assembler</li> <li>Remarks</li> </ul>\t\n            </summary>\t\n            <remarks>\t\n            <p>Applying Compiler or Assembler to the incorrect API will fail shader validation. Check the Direct3D error code return value from the function (with the DirectX Error Lookup Tool) to help track down this error.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXSHADER']/*\"/>\t\n            <msdn-id>bb205441</msdn-id>\t\n            <unmanaged>D3DXSHADER</unmanaged>\t\n            <unmanaged-short>D3DXSHADER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ShaderFlags.Debug\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXSHADER_DEBUG']/*\"/>\t\n            <unmanaged>D3DXSHADER_DEBUG</unmanaged>\t\n            <unmanaged-short>D3DXSHADER_DEBUG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ShaderFlags.SkipValidation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXSHADER_SKIPVALIDATION']/*\"/>\t\n            <unmanaged>D3DXSHADER_SKIPVALIDATION</unmanaged>\t\n            <unmanaged-short>D3DXSHADER_SKIPVALIDATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ShaderFlags.SkipOptimization\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXSHADER_SKIPOPTIMIZATION']/*\"/>\t\n            <unmanaged>D3DXSHADER_SKIPOPTIMIZATION</unmanaged>\t\n            <unmanaged-short>D3DXSHADER_SKIPOPTIMIZATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ShaderFlags.PackMatrixRowMajor\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXSHADER_PACKMATRIX_ROWMAJOR']/*\"/>\t\n            <unmanaged>D3DXSHADER_PACKMATRIX_ROWMAJOR</unmanaged>\t\n            <unmanaged-short>D3DXSHADER_PACKMATRIX_ROWMAJOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ShaderFlags.PackMatrixColumnMajor\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXSHADER_PACKMATRIX_COLUMNMAJOR']/*\"/>\t\n            <unmanaged>D3DXSHADER_PACKMATRIX_COLUMNMAJOR</unmanaged>\t\n            <unmanaged-short>D3DXSHADER_PACKMATRIX_COLUMNMAJOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ShaderFlags.PartialPrecision\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXSHADER_PARTIALPRECISION']/*\"/>\t\n            <unmanaged>D3DXSHADER_PARTIALPRECISION</unmanaged>\t\n            <unmanaged-short>D3DXSHADER_PARTIALPRECISION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ShaderFlags.ForceVSSoftwareNoOpt\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXSHADER_FORCE_VS_SOFTWARE_NOOPT']/*\"/>\t\n            <unmanaged>D3DXSHADER_FORCE_VS_SOFTWARE_NOOPT</unmanaged>\t\n            <unmanaged-short>D3DXSHADER_FORCE_VS_SOFTWARE_NOOPT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ShaderFlags.ForcePSSoftwareNoOpt\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXSHADER_FORCE_PS_SOFTWARE_NOOPT']/*\"/>\t\n            <unmanaged>D3DXSHADER_FORCE_PS_SOFTWARE_NOOPT</unmanaged>\t\n            <unmanaged-short>D3DXSHADER_FORCE_PS_SOFTWARE_NOOPT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ShaderFlags.NoPreshader\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXSHADER_NO_PRESHADER']/*\"/>\t\n            <unmanaged>D3DXSHADER_NO_PRESHADER</unmanaged>\t\n            <unmanaged-short>D3DXSHADER_NO_PRESHADER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ShaderFlags.AvoidFlowControl\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXSHADER_AVOID_FLOW_CONTROL']/*\"/>\t\n            <unmanaged>D3DXSHADER_AVOID_FLOW_CONTROL</unmanaged>\t\n            <unmanaged-short>D3DXSHADER_AVOID_FLOW_CONTROL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ShaderFlags.PreferFlowControl\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXSHADER_PREFER_FLOW_CONTROL']/*\"/>\t\n            <unmanaged>D3DXSHADER_PREFER_FLOW_CONTROL</unmanaged>\t\n            <unmanaged-short>D3DXSHADER_PREFER_FLOW_CONTROL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ShaderFlags.EnableBackwardsCompatibility\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXSHADER_ENABLE_BACKWARDS_COMPATIBILITY']/*\"/>\t\n            <unmanaged>D3DXSHADER_ENABLE_BACKWARDS_COMPATIBILITY</unmanaged>\t\n            <unmanaged-short>D3DXSHADER_ENABLE_BACKWARDS_COMPATIBILITY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ShaderFlags.IeeeStrictness\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXSHADER_IEEE_STRICTNESS']/*\"/>\t\n            <unmanaged>D3DXSHADER_IEEE_STRICTNESS</unmanaged>\t\n            <unmanaged-short>D3DXSHADER_IEEE_STRICTNESS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ShaderFlags.UseLegacyD3DX9_31Dll\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXSHADER_USE_LEGACY_D3DX9_31_DLL']/*\"/>\t\n            <unmanaged>D3DXSHADER_USE_LEGACY_D3DX9_31_DLL</unmanaged>\t\n            <unmanaged-short>D3DXSHADER_USE_LEGACY_D3DX9_31_DLL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ShaderFlags.OptimizationLevel0\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXSHADER_OPTIMIZATION_LEVEL0']/*\"/>\t\n            <unmanaged>D3DXSHADER_OPTIMIZATION_LEVEL0</unmanaged>\t\n            <unmanaged-short>D3DXSHADER_OPTIMIZATION_LEVEL0</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ShaderFlags.OptimizationLevel1\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXSHADER_OPTIMIZATION_LEVEL1']/*\"/>\t\n            <unmanaged>D3DXSHADER_OPTIMIZATION_LEVEL1</unmanaged>\t\n            <unmanaged-short>D3DXSHADER_OPTIMIZATION_LEVEL1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ShaderFlags.OptimizationLevel2\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXSHADER_OPTIMIZATION_LEVEL2']/*\"/>\t\n            <unmanaged>D3DXSHADER_OPTIMIZATION_LEVEL2</unmanaged>\t\n            <unmanaged-short>D3DXSHADER_OPTIMIZATION_LEVEL2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ShaderFlags.OptimizationLevel3\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXSHADER_OPTIMIZATION_LEVEL3']/*\"/>\t\n            <unmanaged>D3DXSHADER_OPTIMIZATION_LEVEL3</unmanaged>\t\n            <unmanaged-short>D3DXSHADER_OPTIMIZATION_LEVEL3</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ShaderFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.SpriteFlags\">\n            <summary>\t\n            <p>The following flags are used to specify sprite rendering options to the flags parameter in the <strong>Begin</strong> method:</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXSPRITE']/*\"/>\t\n            <msdn-id>bb205466</msdn-id>\t\n            <unmanaged>D3DXSPRITE</unmanaged>\t\n            <unmanaged-short>D3DXSPRITE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.SpriteFlags.DoNotSaveState\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXSPRITE_DONOTSAVESTATE']/*\"/>\t\n            <unmanaged>D3DXSPRITE_DONOTSAVESTATE</unmanaged>\t\n            <unmanaged-short>D3DXSPRITE_DONOTSAVESTATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.SpriteFlags.DoNotModifyRenderState\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXSPRITE_DONOTMODIFY_RENDERSTATE']/*\"/>\t\n            <unmanaged>D3DXSPRITE_DONOTMODIFY_RENDERSTATE</unmanaged>\t\n            <unmanaged-short>D3DXSPRITE_DONOTMODIFY_RENDERSTATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.SpriteFlags.ObjectSpace\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXSPRITE_OBJECTSPACE']/*\"/>\t\n            <unmanaged>D3DXSPRITE_OBJECTSPACE</unmanaged>\t\n            <unmanaged-short>D3DXSPRITE_OBJECTSPACE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.SpriteFlags.Billboard\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXSPRITE_BILLBOARD']/*\"/>\t\n            <unmanaged>D3DXSPRITE_BILLBOARD</unmanaged>\t\n            <unmanaged-short>D3DXSPRITE_BILLBOARD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.SpriteFlags.AlphaBlend\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXSPRITE_ALPHABLEND']/*\"/>\t\n            <unmanaged>D3DXSPRITE_ALPHABLEND</unmanaged>\t\n            <unmanaged-short>D3DXSPRITE_ALPHABLEND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.SpriteFlags.SortTexture\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXSPRITE_SORT_TEXTURE']/*\"/>\t\n            <unmanaged>D3DXSPRITE_SORT_TEXTURE</unmanaged>\t\n            <unmanaged-short>D3DXSPRITE_SORT_TEXTURE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.SpriteFlags.SortDepthFrontToBack\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXSPRITE_SORT_DEPTH_FRONTTOBACK']/*\"/>\t\n            <unmanaged>D3DXSPRITE_SORT_DEPTH_FRONTTOBACK</unmanaged>\t\n            <unmanaged-short>D3DXSPRITE_SORT_DEPTH_FRONTTOBACK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.SpriteFlags.SortDepthBackToFront\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXSPRITE_SORT_DEPTH_BACKTOFRONT']/*\"/>\t\n            <unmanaged>D3DXSPRITE_SORT_DEPTH_BACKTOFRONT</unmanaged>\t\n            <unmanaged-short>D3DXSPRITE_SORT_DEPTH_BACKTOFRONT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.SpriteFlags.DoNotAddRefTexture\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXSPRITE_DO_NOT_ADDREF_TEXTURE']/*\"/>\t\n            <unmanaged>D3DXSPRITE_DO_NOT_ADDREF_TEXTURE</unmanaged>\t\n            <unmanaged-short>D3DXSPRITE_DO_NOT_ADDREF_TEXTURE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.SpriteFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.StateBlockType\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DSTATEBLOCKTYPE']/*\"/>\t\n            <unmanaged>D3DSTATEBLOCKTYPE</unmanaged>\t\n            <unmanaged-short>D3DSTATEBLOCKTYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.StateBlockType.All\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DSBT_ALL']/*\"/>\t\n            <unmanaged>D3DSBT_ALL</unmanaged>\t\n            <unmanaged-short>D3DSBT_ALL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.StateBlockType.PixelState\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DSBT_PIXELSTATE']/*\"/>\t\n            <unmanaged>D3DSBT_PIXELSTATE</unmanaged>\t\n            <unmanaged-short>D3DSBT_PIXELSTATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.StateBlockType.VertexState\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DSBT_VERTEXSTATE']/*\"/>\t\n            <unmanaged>D3DSBT_VERTEXSTATE</unmanaged>\t\n            <unmanaged-short>D3DSBT_VERTEXSTATE</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.StencilCaps\">\n            <summary>\t\n            <p>Driver stencil capability flags.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DSTENCILCAPS']/*\"/>\t\n            <msdn-id>bb172609</msdn-id>\t\n            <unmanaged>D3DSTENCILCAPS</unmanaged>\t\n            <unmanaged-short>D3DSTENCILCAPS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.StencilCaps.Keep\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DSTENCILCAPS_KEEP']/*\"/>\t\n            <unmanaged>D3DSTENCILCAPS_KEEP</unmanaged>\t\n            <unmanaged-short>D3DSTENCILCAPS_KEEP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.StencilCaps.Zero\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DSTENCILCAPS_ZERO']/*\"/>\t\n            <unmanaged>D3DSTENCILCAPS_ZERO</unmanaged>\t\n            <unmanaged-short>D3DSTENCILCAPS_ZERO</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.StencilCaps.Replace\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DSTENCILCAPS_REPLACE']/*\"/>\t\n            <unmanaged>D3DSTENCILCAPS_REPLACE</unmanaged>\t\n            <unmanaged-short>D3DSTENCILCAPS_REPLACE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.StencilCaps.IncrementClamp\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DSTENCILCAPS_INCRSAT']/*\"/>\t\n            <unmanaged>D3DSTENCILCAPS_INCRSAT</unmanaged>\t\n            <unmanaged-short>D3DSTENCILCAPS_INCRSAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.StencilCaps.DecrementClamp\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DSTENCILCAPS_DECRSAT']/*\"/>\t\n            <unmanaged>D3DSTENCILCAPS_DECRSAT</unmanaged>\t\n            <unmanaged-short>D3DSTENCILCAPS_DECRSAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.StencilCaps.Invert\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DSTENCILCAPS_INVERT']/*\"/>\t\n            <unmanaged>D3DSTENCILCAPS_INVERT</unmanaged>\t\n            <unmanaged-short>D3DSTENCILCAPS_INVERT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.StencilCaps.Increment\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DSTENCILCAPS_INCR']/*\"/>\t\n            <unmanaged>D3DSTENCILCAPS_INCR</unmanaged>\t\n            <unmanaged-short>D3DSTENCILCAPS_INCR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.StencilCaps.Decrement\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DSTENCILCAPS_DECR']/*\"/>\t\n            <unmanaged>D3DSTENCILCAPS_DECR</unmanaged>\t\n            <unmanaged-short>D3DSTENCILCAPS_DECR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.StencilCaps.TwoSided\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DSTENCILCAPS_TWOSIDED']/*\"/>\t\n            <unmanaged>D3DSTENCILCAPS_TWOSIDED</unmanaged>\t\n            <unmanaged-short>D3DSTENCILCAPS_TWOSIDED</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.StencilOperation\">\n            <summary>\t\n            <p>Defines stencil-buffer operations.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Stencil-buffer entries are integer values ranging from 0 through 2n - 1, where n is the bit depth of the stencil buffer.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DSTENCILOP']/*\"/>\t\n            <msdn-id>bb172610</msdn-id>\t\n            <unmanaged>D3DSTENCILOP</unmanaged>\t\n            <unmanaged-short>D3DSTENCILOP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.StencilOperation.Keep\">\n            <summary>\t\n            <dd> <p>Do not update the entry in the stencil buffer. This is the default value.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DSTENCILOP_KEEP']/*\"/>\t\n            <msdn-id>bb172610</msdn-id>\t\n            <unmanaged>D3DSTENCILOP_KEEP</unmanaged>\t\n            <unmanaged-short>D3DSTENCILOP_KEEP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.StencilOperation.Zero\">\n            <summary>\t\n            <dd> <p>Set the stencil-buffer entry to 0.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DSTENCILOP_ZERO']/*\"/>\t\n            <msdn-id>bb172610</msdn-id>\t\n            <unmanaged>D3DSTENCILOP_ZERO</unmanaged>\t\n            <unmanaged-short>D3DSTENCILOP_ZERO</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.StencilOperation.Replace\">\n            <summary>\t\n            <dd> <p>Replace the stencil-buffer entry with a reference value.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DSTENCILOP_REPLACE']/*\"/>\t\n            <msdn-id>bb172610</msdn-id>\t\n            <unmanaged>D3DSTENCILOP_REPLACE</unmanaged>\t\n            <unmanaged-short>D3DSTENCILOP_REPLACE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.StencilOperation.IncrementSaturate\">\n            <summary>\t\n            <dd> <p>Increment the stencil-buffer entry, clamping to the maximum value.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DSTENCILOP_INCRSAT']/*\"/>\t\n            <msdn-id>bb172610</msdn-id>\t\n            <unmanaged>D3DSTENCILOP_INCRSAT</unmanaged>\t\n            <unmanaged-short>D3DSTENCILOP_INCRSAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.StencilOperation.DecrementSaturate\">\n            <summary>\t\n            <dd> <p>Decrement the stencil-buffer entry, clamping to zero.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DSTENCILOP_DECRSAT']/*\"/>\t\n            <msdn-id>bb172610</msdn-id>\t\n            <unmanaged>D3DSTENCILOP_DECRSAT</unmanaged>\t\n            <unmanaged-short>D3DSTENCILOP_DECRSAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.StencilOperation.Invert\">\n            <summary>\t\n            <dd> <p>Invert the bits in the stencil-buffer entry.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DSTENCILOP_INVERT']/*\"/>\t\n            <msdn-id>bb172610</msdn-id>\t\n            <unmanaged>D3DSTENCILOP_INVERT</unmanaged>\t\n            <unmanaged-short>D3DSTENCILOP_INVERT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.StencilOperation.Increment\">\n            <summary>\t\n            <dd> <p>Increment the stencil-buffer entry, wrapping to zero if the new value exceeds the maximum value.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DSTENCILOP_INCR']/*\"/>\t\n            <msdn-id>bb172610</msdn-id>\t\n            <unmanaged>D3DSTENCILOP_INCR</unmanaged>\t\n            <unmanaged-short>D3DSTENCILOP_INCR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.StencilOperation.Decrement\">\n            <summary>\t\n            <dd> <p>Decrement the stencil-buffer entry, wrapping to the maximum value if the new value is less than zero.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DSTENCILOP_DECR']/*\"/>\t\n            <msdn-id>bb172610</msdn-id>\t\n            <unmanaged>D3DSTENCILOP_DECR</unmanaged>\t\n            <unmanaged-short>D3DSTENCILOP_DECR</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.StreamSource\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DSTREAMSOURCE']/*\"/>\t\n            <unmanaged>D3DSTREAMSOURCE</unmanaged>\t\n            <unmanaged-short>D3DSTREAMSOURCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.StreamSource.IndexedData\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DSTREAMSOURCE_INDEXEDDATA']/*\"/>\t\n            <unmanaged>D3DSTREAMSOURCE_INDEXEDDATA</unmanaged>\t\n            <unmanaged-short>D3DSTREAMSOURCE_INDEXEDDATA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.StreamSource.InstanceData\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DSTREAMSOURCE_INSTANCEDATA']/*\"/>\t\n            <unmanaged>D3DSTREAMSOURCE_INSTANCEDATA</unmanaged>\t\n            <unmanaged-short>D3DSTREAMSOURCE_INSTANCEDATA</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.SwapEffect\">\n            <summary>\t\n            <p>Defines swap effects.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The state of the back buffer after a call to Present is well-defined by each of these swap effects, and whether the Direct3D device was created with a full-screen swap chain or a windowed swap chain has no effect on this state. In particular, the <see cref=\"F:SharpDX.Direct3D9.SwapEffect.Flip\"/> swap effect operates the same whether windowed or full-screen, and the Direct3D runtime guarantees this by creating extra buffers. As a result, it is recommended that applications use <see cref=\"F:SharpDX.Direct3D9.SwapEffect.Discard\"/> whenever possible to avoid any such penalties. This is because this swap effect will always be the most efficient in terms of memory consumption and performance.</p><p>Applications that use <see cref=\"F:SharpDX.Direct3D9.SwapEffect.Flip\"/> or <see cref=\"F:SharpDX.Direct3D9.SwapEffect.Discard\"/> should not expect full-screen destination alpha to work. This means that the <see cref=\"F:SharpDX.Direct3D9.RenderState.DestinationBlend\"/> render state will not work as expected because full-screen swap chains with these swap effects do not have an explicit pixel format from the driver's point of view. The driver infers that they should take on the display format, which does not have an alpha channel. To work around this, take the following steps: </p><ul> <li>Use <see cref=\"F:SharpDX.Direct3D9.SwapEffect.Copy\"/>.</li> <li>Check the <see cref=\"F:SharpDX.Direct3D9.Caps3.AlphaFullScreenFlipOrDiscard\"/> flag in the Caps3 member of the <strong><see cref=\"T:SharpDX.Direct3D9.Capabilities\"/></strong> structure. This flag indicates whether the driver can do alpha blending when <see cref=\"F:SharpDX.Direct3D9.SwapEffect.Flip\"/> or <see cref=\"F:SharpDX.Direct3D9.SwapEffect.Discard\"/> is used.</li> <li>Applications using flip mode swap effect (<see cref=\"F:SharpDX.Direct3D9.SwapEffect.FlipEx\"/>) should call <strong>PresentEx</strong> after a window resize or region change to ensure that the display content is updated.</li> </ul><p>An invisible window cannot receive user-mode events; furthermore, an invisible-fullscreen window will interfere with the presentation of another applications' windowed-mode window. Therefore, each application needs to ensure that a device window is visible when a swapchain is presented in fullscreen mode.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DSWAPEFFECT']/*\"/>\t\n            <msdn-id>bb172612</msdn-id>\t\n            <unmanaged>D3DSWAPEFFECT</unmanaged>\t\n            <unmanaged-short>D3DSWAPEFFECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.SwapEffect.Discard\">\n            <summary>\t\n            <dd> <p>When a swap chain is created with a swap effect of <see cref=\"F:SharpDX.Direct3D9.SwapEffect.Flip\"/> or  <see cref=\"F:SharpDX.Direct3D9.SwapEffect.Copy\"/>, the runtime will guarantee that an <strong><see cref=\"M:SharpDX.Direct3D9.Device.Present\"/></strong> operation will not affect the content of any of the back buffers. Unfortunately, meeting this guarantee can involve substantial video memory or processing overheads, especially when implementing flip semantics for a windowed swap chain or copy semantics for a full-screen swap chain. An application may use the <see cref=\"F:SharpDX.Direct3D9.SwapEffect.Discard\"/> swap effect to avoid these overheads and to enable the display driver to select the most efficient presentation technique for the swap chain. This is also the only swap effect that may be used when specifying a value other than <see cref=\"F:SharpDX.Direct3D9.MultisampleType.None\"/> for the MultiSampleType member of <strong><see cref=\"T:SharpDX.Direct3D9.PresentParameters\"/></strong>.</p> <p>Like a swap chain that uses <see cref=\"F:SharpDX.Direct3D9.SwapEffect.Flip\"/>, a swap chain that uses <see cref=\"F:SharpDX.Direct3D9.SwapEffect.Discard\"/> might include more than one back buffer, any of which may be accessed using <strong><see cref=\"M:SharpDX.Direct3D9.Device.GetBackBuffer(System.Int32,System.Int32)\"/></strong> or <strong><see cref=\"M:SharpDX.Direct3D9.SwapChain.GetBackBuffer(System.Int32,SharpDX.Direct3D9.BackBufferType)\"/></strong>. The swap chain is best envisaged as a queue in which 0 always indexes the back buffer that will be displayed by the next Present operation and from which buffers are discarded when they have been displayed.</p> <p>An application that uses this swap effect cannot make any assumptions about the contents of a discarded back buffer and should therefore update an entire back buffer before invoking a Present operation that would display it. Although this is not enforced, the debug version of the runtime will overwrite the contents of discarded back buffers with random data to enable developers to verify that their applications are updating the entire back buffer surfaces correctly.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DSWAPEFFECT_DISCARD']/*\"/>\t\n            <msdn-id>bb172612</msdn-id>\t\n            <unmanaged>D3DSWAPEFFECT_DISCARD</unmanaged>\t\n            <unmanaged-short>D3DSWAPEFFECT_DISCARD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.SwapEffect.Flip\">\n            <summary>\t\n            <dd> <p>The swap chain might include multiple back buffers and is best envisaged as a circular queue that includes the front buffer. Within this queue, the back buffers are always numbered sequentially from 0 to (n - 1), where n is the number of back buffers, so that 0 denotes the least recently presented buffer. When Present is invoked, the queue is \"rotated\" so that the front buffer becomes back buffer (n - 1), while the back buffer 0 becomes the new front buffer.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DSWAPEFFECT_FLIP']/*\"/>\t\n            <msdn-id>bb172612</msdn-id>\t\n            <unmanaged>D3DSWAPEFFECT_FLIP</unmanaged>\t\n            <unmanaged-short>D3DSWAPEFFECT_FLIP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.SwapEffect.Copy\">\n            <summary>\t\n            <dd> <p>This swap effect may be specified only for a swap chain comprising a single back buffer. Whether the swap chain is windowed or full-screen, the runtime will guarantee the semantics implied by a copy-based Present operation, namely that the operation leaves the content of the back buffer unchanged, instead of replacing it with the content of the front buffer as a flip-based Present operation would. </p> <p>For a full-screen swap chain, the runtime uses a combination of flip operations and copy operations, supported if necessary by hidden back buffers, to accomplish the Present operation. Accordingly, the presentation is synchronized with the display adapter's vertical retrace and its rate is constrained by the chosen presentation interval. A swap chain specified with the <see cref=\"F:SharpDX.Direct3D9.PresentInterval.Immediate\"/> flag is the only exception. (Refer to the description of the PresentationIntervals member of the <strong><see cref=\"T:SharpDX.Direct3D9.PresentParameters\"/></strong> structure.) In this case, a Present operation copies the back buffer content directly to the front buffer without waiting for the vertical retrace.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DSWAPEFFECT_COPY']/*\"/>\t\n            <msdn-id>bb172612</msdn-id>\t\n            <unmanaged>D3DSWAPEFFECT_COPY</unmanaged>\t\n            <unmanaged-short>D3DSWAPEFFECT_COPY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.SwapEffect.Overlay\">\n            <summary>\t\n            <dd> <p>Use a dedicated area of video memory that can be overlayed on the primary surface. No copy is performed when the overlay is displayed.  The overlay operation is performed in hardware, without modifying the data in the primary surface.</p> <table> <tr><td> <p>Differences between Direct3D 9 and Direct3D 9Ex:</p> <p><see cref=\"F:SharpDX.Direct3D9.SwapEffect.Overlay\"/> is only available in Direct3D9Ex running on Windows 7 (or more current operating system).</p> </td></tr> </table> <p>?</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DSWAPEFFECT_OVERLAY']/*\"/>\t\n            <msdn-id>bb172612</msdn-id>\t\n            <unmanaged>D3DSWAPEFFECT_OVERLAY</unmanaged>\t\n            <unmanaged-short>D3DSWAPEFFECT_OVERLAY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.SwapEffect.FlipEx\">\n            <summary>\t\n            <dd> <p>Designates when an application is adopting flip mode, during which time an application's frame is passed instead of copied to the Desktop Window Manager(DWM) for composition when the application is presenting in windowed mode. Flip mode allows an application to more efficiently use memory bandwidth as well as enabling an application to take advantage of full-screen-present statistics. Flip mode does not affect full-screen behavior. A sample application that uses <see cref=\"F:SharpDX.Direct3D9.Present.ForceImmediate\"/> and <see cref=\"F:SharpDX.Direct3D9.SwapEffect.FlipEx\"/> is the D3D9ExFlipEx sample on the MSDN Code Gallery.</p> <table> <tr><td> <p>Differences between Direct3D 9 and Direct3D 9Ex:</p> <p><see cref=\"F:SharpDX.Direct3D9.SwapEffect.FlipEx\"/> is only available in Direct3D9Ex running on Windows 7 (or more current operating system).</p> </td></tr> </table> <p>?</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DSWAPEFFECT_FLIPEX']/*\"/>\t\n            <msdn-id>bb172612</msdn-id>\t\n            <unmanaged>D3DSWAPEFFECT_FLIPEX</unmanaged>\t\n            <unmanaged-short>D3DSWAPEFFECT_FLIPEX</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.TangentOptions\">\n            <summary>\t\n            <p>Defines settings used for mesh tangent frame computations.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXTANGENT']/*\"/>\t\n            <msdn-id>bb205467</msdn-id>\t\n            <unmanaged>D3DXTANGENT</unmanaged>\t\n            <unmanaged-short>D3DXTANGENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TangentOptions.WrapU\">\n            <summary>\t\n            <dd> <p>Texture coordinate values in the u direction are between 0 and 1. In this case a texture coordinate set will be chosen that minimizes the perimeter of the triangle. See Texture Wrapping (Direct3D 9).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXTANGENT_WRAP_U']/*\"/>\t\n            <msdn-id>bb205467</msdn-id>\t\n            <unmanaged>D3DXTANGENT_WRAP_U</unmanaged>\t\n            <unmanaged-short>D3DXTANGENT_WRAP_U</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TangentOptions.WrapV\">\n            <summary>\t\n            <dd> <p>Texture coordinate values in the v direction are between 0 and 1. In this case a texture coordinate set will be chosen that minimizes the perimeter of the triangle. See Texture Wrapping (Direct3D 9).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXTANGENT_WRAP_V']/*\"/>\t\n            <msdn-id>bb205467</msdn-id>\t\n            <unmanaged>D3DXTANGENT_WRAP_V</unmanaged>\t\n            <unmanaged-short>D3DXTANGENT_WRAP_V</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TangentOptions.WrapUV\">\n            <summary>\t\n            <dd> <p>Texture coordinate values in both u and v directions are between 0 and 1. In this case a texture coordinate set will be chosen that minimizes the perimeter of the triangle. See Texture Wrapping (Direct3D 9).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXTANGENT_WRAP_UV']/*\"/>\t\n            <msdn-id>bb205467</msdn-id>\t\n            <unmanaged>D3DXTANGENT_WRAP_UV</unmanaged>\t\n            <unmanaged-short>D3DXTANGENT_WRAP_UV</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TangentOptions.DontNormalizePartials\">\n            <summary>\t\n            <dd> <p>Do not normalize partial derivatives with respect to texture coordinates. If not normalized, the scale of the partial derivatives is proportional to the scale of the 3D model divided by the scale of the triangle in (u, v) space. This scale value provides a measure of how much the texture is stretched in a given direction. The resulting vector length is a weighted sum of the lengths of the partial derivatives.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXTANGENT_DONT_NORMALIZE_PARTIALS']/*\"/>\t\n            <msdn-id>bb205467</msdn-id>\t\n            <unmanaged>D3DXTANGENT_DONT_NORMALIZE_PARTIALS</unmanaged>\t\n            <unmanaged-short>D3DXTANGENT_DONT_NORMALIZE_PARTIALS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TangentOptions.DontOrthogonalize\">\n            <summary>\t\n            <dd> <p>Do not transform texture coordinates to orthogonal Cartesian coordinates. Mutually exclusive with <see cref=\"F:SharpDX.Direct3D9.TangentOptions.OrthogonalizeFromU\"/> and <see cref=\"F:SharpDX.Direct3D9.TangentOptions.OrthogonalizeFromV\"/>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXTANGENT_DONT_ORTHOGONALIZE']/*\"/>\t\n            <msdn-id>bb205467</msdn-id>\t\n            <unmanaged>D3DXTANGENT_DONT_ORTHOGONALIZE</unmanaged>\t\n            <unmanaged-short>D3DXTANGENT_DONT_ORTHOGONALIZE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TangentOptions.OrthogonalizeFromV\">\n            <summary>\t\n            <dd> <p>Compute the partial derivative with respect to texture coordinate v independently for each vertex, and then compute the partial derivative with respect to u as the cross product of the partial derivative with respect to v and the normal vector. Mutually exclusive with <see cref=\"F:SharpDX.Direct3D9.TangentOptions.DontOrthogonalize\"/> and <see cref=\"F:SharpDX.Direct3D9.TangentOptions.OrthogonalizeFromU\"/>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXTANGENT_ORTHOGONALIZE_FROM_V']/*\"/>\t\n            <msdn-id>bb205467</msdn-id>\t\n            <unmanaged>D3DXTANGENT_ORTHOGONALIZE_FROM_V</unmanaged>\t\n            <unmanaged-short>D3DXTANGENT_ORTHOGONALIZE_FROM_V</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TangentOptions.OrthogonalizeFromU\">\n            <summary>\t\n            <dd> <p>Compute the partial derivative with respect to texture coordinate u independently for each vertex, and then compute the partial derivative with respect to v as  the cross product of the normal vector and the partial derivative with respect to u. Mutually exclusive with <see cref=\"F:SharpDX.Direct3D9.TangentOptions.DontOrthogonalize\"/> and <see cref=\"F:SharpDX.Direct3D9.TangentOptions.OrthogonalizeFromV\"/>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXTANGENT_ORTHOGONALIZE_FROM_U']/*\"/>\t\n            <msdn-id>bb205467</msdn-id>\t\n            <unmanaged>D3DXTANGENT_ORTHOGONALIZE_FROM_U</unmanaged>\t\n            <unmanaged-short>D3DXTANGENT_ORTHOGONALIZE_FROM_U</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TangentOptions.WeightByArea\">\n            <summary>\t\n            <dd> <p>Weight the direction of the computed per-vertex normal or partial derivative vector according to the areas of triangles attached to that vertex. Mutually exclusive with <see cref=\"F:SharpDX.Direct3D9.TangentOptions.WeightEqual\"/>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXTANGENT_WEIGHT_BY_AREA']/*\"/>\t\n            <msdn-id>bb205467</msdn-id>\t\n            <unmanaged>D3DXTANGENT_WEIGHT_BY_AREA</unmanaged>\t\n            <unmanaged-short>D3DXTANGENT_WEIGHT_BY_AREA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TangentOptions.WeightEqual\">\n            <summary>\t\n            <dd> <p>Compute a unit-length normal vector for each triangle of the input mesh. Mutually exclusive with <see cref=\"F:SharpDX.Direct3D9.TangentOptions.WeightByArea\"/>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXTANGENT_WEIGHT_EQUAL']/*\"/>\t\n            <msdn-id>bb205467</msdn-id>\t\n            <unmanaged>D3DXTANGENT_WEIGHT_EQUAL</unmanaged>\t\n            <unmanaged-short>D3DXTANGENT_WEIGHT_EQUAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TangentOptions.WindCW\">\n            <summary>\t\n            <dd> <p>Vertices are ordered in a clockwise direction around each triangle. The computed normal vector direction is therefore inverted 180 degrees from the direction computed using counterclockwise vertex ordering.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXTANGENT_WIND_CW']/*\"/>\t\n            <msdn-id>bb205467</msdn-id>\t\n            <unmanaged>D3DXTANGENT_WIND_CW</unmanaged>\t\n            <unmanaged-short>D3DXTANGENT_WIND_CW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TangentOptions.CalculateNormals\">\n            <summary>\t\n            <dd> <p>Compute the per-vertex normal vector for each triangle of the input mesh, and ignore any normal vectors already in the input mesh.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXTANGENT_CALCULATE_NORMALS']/*\"/>\t\n            <msdn-id>bb205467</msdn-id>\t\n            <unmanaged>D3DXTANGENT_CALCULATE_NORMALS</unmanaged>\t\n            <unmanaged-short>D3DXTANGENT_CALCULATE_NORMALS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TangentOptions.GenerateInPlace\">\n            <summary>\t\n            <dd> <p>The results are stored in the original input mesh, and the output mesh is not used.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXTANGENT_GENERATE_IN_PLACE']/*\"/>\t\n            <msdn-id>bb205467</msdn-id>\t\n            <unmanaged>D3DXTANGENT_GENERATE_IN_PLACE</unmanaged>\t\n            <unmanaged-short>D3DXTANGENT_GENERATE_IN_PLACE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TangentOptions.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.TextureAddress\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTEXTUREADDRESS']/*\"/>\t\n            <unmanaged>D3DTEXTUREADDRESS</unmanaged>\t\n            <unmanaged-short>D3DTEXTUREADDRESS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureAddress.Wrap\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTADDRESS_WRAP']/*\"/>\t\n            <unmanaged>D3DTADDRESS_WRAP</unmanaged>\t\n            <unmanaged-short>D3DTADDRESS_WRAP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureAddress.Mirror\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTADDRESS_MIRROR']/*\"/>\t\n            <unmanaged>D3DTADDRESS_MIRROR</unmanaged>\t\n            <unmanaged-short>D3DTADDRESS_MIRROR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureAddress.Clamp\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTADDRESS_CLAMP']/*\"/>\t\n            <unmanaged>D3DTADDRESS_CLAMP</unmanaged>\t\n            <unmanaged-short>D3DTADDRESS_CLAMP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureAddress.Border\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTADDRESS_BORDER']/*\"/>\t\n            <unmanaged>D3DTADDRESS_BORDER</unmanaged>\t\n            <unmanaged-short>D3DTADDRESS_BORDER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureAddress.MirrorOnce\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTADDRESS_MIRRORONCE']/*\"/>\t\n            <unmanaged>D3DTADDRESS_MIRRORONCE</unmanaged>\t\n            <unmanaged-short>D3DTADDRESS_MIRRORONCE</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.TextureAddressCaps\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPTADDRESSCAPS']/*\"/>\t\n            <unmanaged>D3DPTADDRESSCAPS</unmanaged>\t\n            <unmanaged-short>D3DPTADDRESSCAPS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureAddressCaps.Wrap\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPTADDRESSCAPS_WRAP']/*\"/>\t\n            <unmanaged>D3DPTADDRESSCAPS_WRAP</unmanaged>\t\n            <unmanaged-short>D3DPTADDRESSCAPS_WRAP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureAddressCaps.Mirror\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPTADDRESSCAPS_MIRROR']/*\"/>\t\n            <unmanaged>D3DPTADDRESSCAPS_MIRROR</unmanaged>\t\n            <unmanaged-short>D3DPTADDRESSCAPS_MIRROR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureAddressCaps.Clamp\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPTADDRESSCAPS_CLAMP']/*\"/>\t\n            <unmanaged>D3DPTADDRESSCAPS_CLAMP</unmanaged>\t\n            <unmanaged-short>D3DPTADDRESSCAPS_CLAMP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureAddressCaps.Border\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPTADDRESSCAPS_BORDER']/*\"/>\t\n            <unmanaged>D3DPTADDRESSCAPS_BORDER</unmanaged>\t\n            <unmanaged-short>D3DPTADDRESSCAPS_BORDER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureAddressCaps.IndependentUV\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPTADDRESSCAPS_INDEPENDENTUV']/*\"/>\t\n            <unmanaged>D3DPTADDRESSCAPS_INDEPENDENTUV</unmanaged>\t\n            <unmanaged-short>D3DPTADDRESSCAPS_INDEPENDENTUV</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureAddressCaps.MirrorOnce\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPTADDRESSCAPS_MIRRORONCE']/*\"/>\t\n            <unmanaged>D3DPTADDRESSCAPS_MIRRORONCE</unmanaged>\t\n            <unmanaged-short>D3DPTADDRESSCAPS_MIRRORONCE</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.TextureArgument\">\n            <summary>\t\n            <p>Texture argument constants are used as values for the following members of the <strong><see cref=\"T:SharpDX.Direct3D9.TextureStage\"/></strong> enumerated type:</p><ul> <li><see cref=\"F:SharpDX.Direct3D9.TextureStage.AlphaArg0\"/></li> <li><see cref=\"F:SharpDX.Direct3D9.TextureStage.AlphaArg1\"/></li> <li><see cref=\"F:SharpDX.Direct3D9.TextureStage.AlphaArg2\"/></li> <li><see cref=\"F:SharpDX.Direct3D9.TextureStage.ColorArg0\"/></li> <li><see cref=\"F:SharpDX.Direct3D9.TextureStage.ColorArg1\"/></li> <li><see cref=\"F:SharpDX.Direct3D9.TextureStage.ColorArg2\"/></li> <li><see cref=\"F:SharpDX.Direct3D9.TextureStage.ResultArg\"/></li> </ul><p>Set and retrieve texture arguments by calling the <strong>SetTextureStageState</strong> and <strong>GetTextureStageState</strong> methods.</p><p>Argument flags</p><p>You can combine an argument flag with a modifier, but two argument flags cannot be combined.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTA']/*\"/>\t\n            <msdn-id>bb172613</msdn-id>\t\n            <unmanaged>D3DTA</unmanaged>\t\n            <unmanaged-short>D3DTA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureArgument.SelectMask\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTA_SELECTMASK']/*\"/>\t\n            <unmanaged>D3DTA_SELECTMASK</unmanaged>\t\n            <unmanaged-short>D3DTA_SELECTMASK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureArgument.Diffuse\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTA_DIFFUSE']/*\"/>\t\n            <unmanaged>D3DTA_DIFFUSE</unmanaged>\t\n            <unmanaged-short>D3DTA_DIFFUSE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureArgument.Current\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTA_CURRENT']/*\"/>\t\n            <unmanaged>D3DTA_CURRENT</unmanaged>\t\n            <unmanaged-short>D3DTA_CURRENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureArgument.Texture\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTA_TEXTURE']/*\"/>\t\n            <unmanaged>D3DTA_TEXTURE</unmanaged>\t\n            <unmanaged-short>D3DTA_TEXTURE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureArgument.TFactor\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTA_TFACTOR']/*\"/>\t\n            <unmanaged>D3DTA_TFACTOR</unmanaged>\t\n            <unmanaged-short>D3DTA_TFACTOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureArgument.Specular\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTA_SPECULAR']/*\"/>\t\n            <unmanaged>D3DTA_SPECULAR</unmanaged>\t\n            <unmanaged-short>D3DTA_SPECULAR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureArgument.Temp\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTA_TEMP']/*\"/>\t\n            <unmanaged>D3DTA_TEMP</unmanaged>\t\n            <unmanaged-short>D3DTA_TEMP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureArgument.Constant\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTA_CONSTANT']/*\"/>\t\n            <unmanaged>D3DTA_CONSTANT</unmanaged>\t\n            <unmanaged-short>D3DTA_CONSTANT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureArgument.Complement\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTA_COMPLEMENT']/*\"/>\t\n            <unmanaged>D3DTA_COMPLEMENT</unmanaged>\t\n            <unmanaged-short>D3DTA_COMPLEMENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureArgument.AlphaReplicate\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTA_ALPHAREPLICATE']/*\"/>\t\n            <unmanaged>D3DTA_ALPHAREPLICATE</unmanaged>\t\n            <unmanaged-short>D3DTA_ALPHAREPLICATE</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.TextureCaps\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPTEXTURECAPS']/*\"/>\t\n            <unmanaged>D3DPTEXTURECAPS</unmanaged>\t\n            <unmanaged-short>D3DPTEXTURECAPS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureCaps.Perspective\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPTEXTURECAPS_PERSPECTIVE']/*\"/>\t\n            <unmanaged>D3DPTEXTURECAPS_PERSPECTIVE</unmanaged>\t\n            <unmanaged-short>D3DPTEXTURECAPS_PERSPECTIVE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureCaps.Pow2\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPTEXTURECAPS_POW2']/*\"/>\t\n            <unmanaged>D3DPTEXTURECAPS_POW2</unmanaged>\t\n            <unmanaged-short>D3DPTEXTURECAPS_POW2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureCaps.Alpha\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPTEXTURECAPS_ALPHA']/*\"/>\t\n            <unmanaged>D3DPTEXTURECAPS_ALPHA</unmanaged>\t\n            <unmanaged-short>D3DPTEXTURECAPS_ALPHA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureCaps.SquareOnly\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPTEXTURECAPS_SQUAREONLY']/*\"/>\t\n            <unmanaged>D3DPTEXTURECAPS_SQUAREONLY</unmanaged>\t\n            <unmanaged-short>D3DPTEXTURECAPS_SQUAREONLY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureCaps.TextureRepeatNotScaledBySize\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPTEXTURECAPS_TEXREPEATNOTSCALEDBYSIZE']/*\"/>\t\n            <unmanaged>D3DPTEXTURECAPS_TEXREPEATNOTSCALEDBYSIZE</unmanaged>\t\n            <unmanaged-short>D3DPTEXTURECAPS_TEXREPEATNOTSCALEDBYSIZE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureCaps.AlphaPalette\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPTEXTURECAPS_ALPHAPALETTE']/*\"/>\t\n            <unmanaged>D3DPTEXTURECAPS_ALPHAPALETTE</unmanaged>\t\n            <unmanaged-short>D3DPTEXTURECAPS_ALPHAPALETTE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureCaps.NonPow2Conditional\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPTEXTURECAPS_NONPOW2CONDITIONAL']/*\"/>\t\n            <unmanaged>D3DPTEXTURECAPS_NONPOW2CONDITIONAL</unmanaged>\t\n            <unmanaged-short>D3DPTEXTURECAPS_NONPOW2CONDITIONAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureCaps.Projected\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPTEXTURECAPS_PROJECTED']/*\"/>\t\n            <unmanaged>D3DPTEXTURECAPS_PROJECTED</unmanaged>\t\n            <unmanaged-short>D3DPTEXTURECAPS_PROJECTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureCaps.CubeMap\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPTEXTURECAPS_CUBEMAP']/*\"/>\t\n            <unmanaged>D3DPTEXTURECAPS_CUBEMAP</unmanaged>\t\n            <unmanaged-short>D3DPTEXTURECAPS_CUBEMAP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureCaps.VolumeMap\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPTEXTURECAPS_VOLUMEMAP']/*\"/>\t\n            <unmanaged>D3DPTEXTURECAPS_VOLUMEMAP</unmanaged>\t\n            <unmanaged-short>D3DPTEXTURECAPS_VOLUMEMAP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureCaps.MipMap\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPTEXTURECAPS_MIPMAP']/*\"/>\t\n            <unmanaged>D3DPTEXTURECAPS_MIPMAP</unmanaged>\t\n            <unmanaged-short>D3DPTEXTURECAPS_MIPMAP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureCaps.MipVolumeMap\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPTEXTURECAPS_MIPVOLUMEMAP']/*\"/>\t\n            <unmanaged>D3DPTEXTURECAPS_MIPVOLUMEMAP</unmanaged>\t\n            <unmanaged-short>D3DPTEXTURECAPS_MIPVOLUMEMAP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureCaps.MipCubeMap\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPTEXTURECAPS_MIPCUBEMAP']/*\"/>\t\n            <unmanaged>D3DPTEXTURECAPS_MIPCUBEMAP</unmanaged>\t\n            <unmanaged-short>D3DPTEXTURECAPS_MIPCUBEMAP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureCaps.CubeMapPow2\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPTEXTURECAPS_CUBEMAP_POW2']/*\"/>\t\n            <unmanaged>D3DPTEXTURECAPS_CUBEMAP_POW2</unmanaged>\t\n            <unmanaged-short>D3DPTEXTURECAPS_CUBEMAP_POW2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureCaps.VolumeMapPow2\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPTEXTURECAPS_VOLUMEMAP_POW2']/*\"/>\t\n            <unmanaged>D3DPTEXTURECAPS_VOLUMEMAP_POW2</unmanaged>\t\n            <unmanaged-short>D3DPTEXTURECAPS_VOLUMEMAP_POW2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureCaps.NoProjectedBumpEnvironment\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPTEXTURECAPS_NOPROJECTEDBUMPENV']/*\"/>\t\n            <unmanaged>D3DPTEXTURECAPS_NOPROJECTEDBUMPENV</unmanaged>\t\n            <unmanaged-short>D3DPTEXTURECAPS_NOPROJECTEDBUMPENV</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.TextureCoordIndex\">\n            <summary>\t\n            <p>Driver texture coordinate capability flags.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTSS_TCI']/*\"/>\t\n            <msdn-id>bb172621</msdn-id>\t\n            <unmanaged>D3DTSS_TCI</unmanaged>\t\n            <unmanaged-short>D3DTSS_TCI</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureCoordIndex.PassThru\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTSS_TCI_PASSTHRU']/*\"/>\t\n            <unmanaged>D3DTSS_TCI_PASSTHRU</unmanaged>\t\n            <unmanaged-short>D3DTSS_TCI_PASSTHRU</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureCoordIndex.CameraSpaceNormal\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTSS_TCI_CAMERASPACENORMAL']/*\"/>\t\n            <unmanaged>D3DTSS_TCI_CAMERASPACENORMAL</unmanaged>\t\n            <unmanaged-short>D3DTSS_TCI_CAMERASPACENORMAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureCoordIndex.CameraSpacePosition\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTSS_TCI_CAMERASPACEPOSITION']/*\"/>\t\n            <unmanaged>D3DTSS_TCI_CAMERASPACEPOSITION</unmanaged>\t\n            <unmanaged-short>D3DTSS_TCI_CAMERASPACEPOSITION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureCoordIndex.CameraSpaceReflectionVector\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR']/*\"/>\t\n            <unmanaged>D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR</unmanaged>\t\n            <unmanaged-short>D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureCoordIndex.SphereMap\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTSS_TCI_SPHEREMAP']/*\"/>\t\n            <unmanaged>D3DTSS_TCI_SPHEREMAP</unmanaged>\t\n            <unmanaged-short>D3DTSS_TCI_SPHEREMAP</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.TextureFilter\">\n            <summary>\t\n            <p>Defines texture filtering modes for a texture stage.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p><see cref=\"T:SharpDX.Direct3D9.TextureFilter\"/> is used by <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetSamplerState(System.Int32,SharpDX.Direct3D9.SamplerState,SharpDX.Direct3D9.TextureFilter)\"/></strong> along with <strong><see cref=\"T:SharpDX.Direct3D9.SamplerState\"/></strong> to define texture filtering modes for a texture stage. </p><p>To check if a format supports texture filter types other than <see cref=\"F:SharpDX.Direct3D9.TextureFilter.Point\"/> (which is always supported), call <strong><see cref=\"M:SharpDX.Direct3D9.Direct3D.CheckDeviceFormat_(System.Int32,SharpDX.Direct3D9.DeviceType,SharpDX.Direct3D9.Format,System.Int32,SharpDX.Direct3D9.ResourceType,SharpDX.Direct3D9.Format)\"/></strong> with <see cref=\"F:SharpDX.Direct3D9.Usage.QueryFilter\"/>.</p><p>Set a texture stage's magnification filter by calling <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetSamplerState(System.Int32,SharpDX.Direct3D9.SamplerState,SharpDX.Direct3D9.TextureFilter)\"/></strong> with the <see cref=\"F:SharpDX.Direct3D9.SamplerState.MagFilter\"/> value as the second parameter and one member of this enumeration as the third parameter.</p><p>Set a texture stage's minification filter by calling <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetSamplerState(System.Int32,SharpDX.Direct3D9.SamplerState,SharpDX.Direct3D9.TextureFilter)\"/></strong> with the <see cref=\"F:SharpDX.Direct3D9.SamplerState.MinFilter\"/> value as the second parameter and one member of this enumeration as the third parameter.</p><p>Set the texture filter to use between-mipmap levels by calling <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetSamplerState(System.Int32,SharpDX.Direct3D9.SamplerState,SharpDX.Direct3D9.TextureFilter)\"/></strong> with the <see cref=\"F:SharpDX.Direct3D9.SamplerState.MipFilter\"/> value as the second parameter and one member of this enumeration as the third parameter.</p><p>Not all valid filtering modes for a device will apply to volume maps. In general, <see cref=\"F:SharpDX.Direct3D9.TextureFilter.Point\"/> and <see cref=\"F:SharpDX.Direct3D9.TextureFilter.Linear\"/> magnification filters will be supported for volume maps. If <see cref=\"F:SharpDX.Direct3D9.TextureCaps.MipVolumeMap\"/> is set, then the <see cref=\"F:SharpDX.Direct3D9.TextureFilter.Point\"/> mipmap filter and <see cref=\"F:SharpDX.Direct3D9.TextureFilter.Point\"/> and <see cref=\"F:SharpDX.Direct3D9.TextureFilter.Linear\"/> minification filters will be supported for volume maps. The device may or may not support the <see cref=\"F:SharpDX.Direct3D9.TextureFilter.Linear\"/> mipmap filter for volume maps. Devices that support anisotropic filtering for 2D maps do not necessarily support anisotropic filtering for volume maps. However, applications that enable anisotropic filtering will receive the best available filtering (probably linear) if anisotropic filtering is not supported.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTEXTUREFILTERTYPE']/*\"/>\t\n            <msdn-id>bb172615</msdn-id>\t\n            <unmanaged>D3DTEXTUREFILTERTYPE</unmanaged>\t\n            <unmanaged-short>D3DTEXTUREFILTERTYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureFilter.None\">\n            <summary>\t\n            <dd> <p>When used with <strong><see cref=\"F:SharpDX.Direct3D9.SamplerState.MipFilter\"/></strong>, disables mipmapping.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTEXF_NONE']/*\"/>\t\n            <msdn-id>bb172615</msdn-id>\t\n            <unmanaged>D3DTEXF_NONE</unmanaged>\t\n            <unmanaged-short>D3DTEXF_NONE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureFilter.Point\">\n            <summary>\t\n            <dd> <p>When used with <strong>D3DSAMP_ MAGFILTER</strong> or <strong><see cref=\"F:SharpDX.Direct3D9.SamplerState.MinFilter\"/></strong>,  specifies that point filtering is to be used as the texture magnification or minification filter respectively. When used  with <strong><see cref=\"F:SharpDX.Direct3D9.SamplerState.MipFilter\"/></strong>, enables mipmapping and specifies that the rasterizer chooses the color from the  texel of the nearest mip level.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTEXF_POINT']/*\"/>\t\n            <msdn-id>bb172615</msdn-id>\t\n            <unmanaged>D3DTEXF_POINT</unmanaged>\t\n            <unmanaged-short>D3DTEXF_POINT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureFilter.Linear\">\n            <summary>\t\n            <dd> <p>When used with <strong>D3DSAMP_ MAGFILTER</strong> or <strong><see cref=\"F:SharpDX.Direct3D9.SamplerState.MinFilter\"/></strong>,  specifies that linear filtering is to be used as the texture magnification or minification filter respectively. When used  with <strong><see cref=\"F:SharpDX.Direct3D9.SamplerState.MipFilter\"/></strong>, enables mipmapping and trilinear filtering; it specifies that the rasterizer  interpolates between the two nearest mip levels.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTEXF_LINEAR']/*\"/>\t\n            <msdn-id>bb172615</msdn-id>\t\n            <unmanaged>D3DTEXF_LINEAR</unmanaged>\t\n            <unmanaged-short>D3DTEXF_LINEAR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureFilter.Anisotropic\">\n            <summary>\t\n            <dd> <p>When used with <strong>D3DSAMP_ MAGFILTER</strong> or <strong><see cref=\"F:SharpDX.Direct3D9.SamplerState.MinFilter\"/></strong>,  specifies that anisotropic texture filtering used as a texture magnification or minification filter respectively.  Compensates for distortion caused by the difference in angle between the texture polygon and the plane of the screen.  Use with <strong><see cref=\"F:SharpDX.Direct3D9.SamplerState.MipFilter\"/></strong> is undefined.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTEXF_ANISOTROPIC']/*\"/>\t\n            <msdn-id>bb172615</msdn-id>\t\n            <unmanaged>D3DTEXF_ANISOTROPIC</unmanaged>\t\n            <unmanaged-short>D3DTEXF_ANISOTROPIC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureFilter.PyramidalQuad\">\n            <summary>\t\n            <dd> <p>A 4-sample tent filter used as a texture magnification or minification filter.  Use with <strong><see cref=\"F:SharpDX.Direct3D9.SamplerState.MipFilter\"/></strong> is undefined.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTEXF_PYRAMIDALQUAD']/*\"/>\t\n            <msdn-id>bb172615</msdn-id>\t\n            <unmanaged>D3DTEXF_PYRAMIDALQUAD</unmanaged>\t\n            <unmanaged-short>D3DTEXF_PYRAMIDALQUAD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureFilter.GaussianQuad\">\n            <summary>\t\n            <dd> <p>A 4-sample Gaussian filter used as a texture magnification or minification filter.  Use with <strong><see cref=\"F:SharpDX.Direct3D9.SamplerState.MipFilter\"/></strong> is undefined.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTEXF_GAUSSIANQUAD']/*\"/>\t\n            <msdn-id>bb172615</msdn-id>\t\n            <unmanaged>D3DTEXF_GAUSSIANQUAD</unmanaged>\t\n            <unmanaged-short>D3DTEXF_GAUSSIANQUAD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureFilter.ConvolutionMono\">\n            <summary>\t\n            <dd> <p>Convolution filter for monochrome textures.  See <see cref=\"F:SharpDX.Direct3D9.Format.A1\"/>. </p> <table> <tr><td> <p>Differences between Direct3D 9 and Direct3D 9Ex:</p> <p>This flag is available in Direct3D 9Ex only.</p> </td></tr> </table> <p>?</p> <p> Use with <strong><see cref=\"F:SharpDX.Direct3D9.SamplerState.MipFilter\"/></strong> is undefined. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTEXF_CONVOLUTIONMONO']/*\"/>\t\n            <msdn-id>bb172615</msdn-id>\t\n            <unmanaged>D3DTEXF_CONVOLUTIONMONO</unmanaged>\t\n            <unmanaged-short>D3DTEXF_CONVOLUTIONMONO</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.TextureOperation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTEXTUREOP']/*\"/>\t\n            <unmanaged>D3DTEXTUREOP</unmanaged>\t\n            <unmanaged-short>D3DTEXTUREOP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureOperation.Disable\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTOP_DISABLE']/*\"/>\t\n            <unmanaged>D3DTOP_DISABLE</unmanaged>\t\n            <unmanaged-short>D3DTOP_DISABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureOperation.SelectArg1\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTOP_SELECTARG1']/*\"/>\t\n            <unmanaged>D3DTOP_SELECTARG1</unmanaged>\t\n            <unmanaged-short>D3DTOP_SELECTARG1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureOperation.SelectArg2\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTOP_SELECTARG2']/*\"/>\t\n            <unmanaged>D3DTOP_SELECTARG2</unmanaged>\t\n            <unmanaged-short>D3DTOP_SELECTARG2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureOperation.Modulate\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTOP_MODULATE']/*\"/>\t\n            <unmanaged>D3DTOP_MODULATE</unmanaged>\t\n            <unmanaged-short>D3DTOP_MODULATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureOperation.Modulate2X\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTOP_MODULATE2X']/*\"/>\t\n            <unmanaged>D3DTOP_MODULATE2X</unmanaged>\t\n            <unmanaged-short>D3DTOP_MODULATE2X</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureOperation.Modulate4X\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTOP_MODULATE4X']/*\"/>\t\n            <unmanaged>D3DTOP_MODULATE4X</unmanaged>\t\n            <unmanaged-short>D3DTOP_MODULATE4X</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureOperation.Add\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTOP_ADD']/*\"/>\t\n            <unmanaged>D3DTOP_ADD</unmanaged>\t\n            <unmanaged-short>D3DTOP_ADD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureOperation.AddSigned\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTOP_ADDSIGNED']/*\"/>\t\n            <unmanaged>D3DTOP_ADDSIGNED</unmanaged>\t\n            <unmanaged-short>D3DTOP_ADDSIGNED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureOperation.AddSigned2X\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTOP_ADDSIGNED2X']/*\"/>\t\n            <unmanaged>D3DTOP_ADDSIGNED2X</unmanaged>\t\n            <unmanaged-short>D3DTOP_ADDSIGNED2X</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureOperation.Subtract\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTOP_SUBTRACT']/*\"/>\t\n            <unmanaged>D3DTOP_SUBTRACT</unmanaged>\t\n            <unmanaged-short>D3DTOP_SUBTRACT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureOperation.AddSmooth\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTOP_ADDSMOOTH']/*\"/>\t\n            <unmanaged>D3DTOP_ADDSMOOTH</unmanaged>\t\n            <unmanaged-short>D3DTOP_ADDSMOOTH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureOperation.BlendDiffuseAlpha\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTOP_BLENDDIFFUSEALPHA']/*\"/>\t\n            <unmanaged>D3DTOP_BLENDDIFFUSEALPHA</unmanaged>\t\n            <unmanaged-short>D3DTOP_BLENDDIFFUSEALPHA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureOperation.BlendTextureAlpha\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTOP_BLENDTEXTUREALPHA']/*\"/>\t\n            <unmanaged>D3DTOP_BLENDTEXTUREALPHA</unmanaged>\t\n            <unmanaged-short>D3DTOP_BLENDTEXTUREALPHA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureOperation.BlendFactorAlpha\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTOP_BLENDFACTORALPHA']/*\"/>\t\n            <unmanaged>D3DTOP_BLENDFACTORALPHA</unmanaged>\t\n            <unmanaged-short>D3DTOP_BLENDFACTORALPHA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureOperation.BlendTextureAlphaPM\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTOP_BLENDTEXTUREALPHAPM']/*\"/>\t\n            <unmanaged>D3DTOP_BLENDTEXTUREALPHAPM</unmanaged>\t\n            <unmanaged-short>D3DTOP_BLENDTEXTUREALPHAPM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureOperation.BlendCurrentAlpha\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTOP_BLENDCURRENTALPHA']/*\"/>\t\n            <unmanaged>D3DTOP_BLENDCURRENTALPHA</unmanaged>\t\n            <unmanaged-short>D3DTOP_BLENDCURRENTALPHA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureOperation.Premodulate\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTOP_PREMODULATE']/*\"/>\t\n            <unmanaged>D3DTOP_PREMODULATE</unmanaged>\t\n            <unmanaged-short>D3DTOP_PREMODULATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureOperation.ModulateAlphaAddColor\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTOP_MODULATEALPHA_ADDCOLOR']/*\"/>\t\n            <unmanaged>D3DTOP_MODULATEALPHA_ADDCOLOR</unmanaged>\t\n            <unmanaged-short>D3DTOP_MODULATEALPHA_ADDCOLOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureOperation.ModulateColorAddAlpha\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTOP_MODULATECOLOR_ADDALPHA']/*\"/>\t\n            <unmanaged>D3DTOP_MODULATECOLOR_ADDALPHA</unmanaged>\t\n            <unmanaged-short>D3DTOP_MODULATECOLOR_ADDALPHA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureOperation.ModulateInvAlphaAddColor\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTOP_MODULATEINVALPHA_ADDCOLOR']/*\"/>\t\n            <unmanaged>D3DTOP_MODULATEINVALPHA_ADDCOLOR</unmanaged>\t\n            <unmanaged-short>D3DTOP_MODULATEINVALPHA_ADDCOLOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureOperation.ModulateInvColorAddAlpha\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTOP_MODULATEINVCOLOR_ADDALPHA']/*\"/>\t\n            <unmanaged>D3DTOP_MODULATEINVCOLOR_ADDALPHA</unmanaged>\t\n            <unmanaged-short>D3DTOP_MODULATEINVCOLOR_ADDALPHA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureOperation.BumpEnvironmentMap\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTOP_BUMPENVMAP']/*\"/>\t\n            <unmanaged>D3DTOP_BUMPENVMAP</unmanaged>\t\n            <unmanaged-short>D3DTOP_BUMPENVMAP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureOperation.BumpEnvironmentMapLuminance\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTOP_BUMPENVMAPLUMINANCE']/*\"/>\t\n            <unmanaged>D3DTOP_BUMPENVMAPLUMINANCE</unmanaged>\t\n            <unmanaged-short>D3DTOP_BUMPENVMAPLUMINANCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureOperation.DotProduct3\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTOP_DOTPRODUCT3']/*\"/>\t\n            <unmanaged>D3DTOP_DOTPRODUCT3</unmanaged>\t\n            <unmanaged-short>D3DTOP_DOTPRODUCT3</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureOperation.MultiplyAdd\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTOP_MULTIPLYADD']/*\"/>\t\n            <unmanaged>D3DTOP_MULTIPLYADD</unmanaged>\t\n            <unmanaged-short>D3DTOP_MULTIPLYADD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureOperation.Lerp\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTOP_LERP']/*\"/>\t\n            <unmanaged>D3DTOP_LERP</unmanaged>\t\n            <unmanaged-short>D3DTOP_LERP</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.TextureOperationCaps\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTEXOPCAPS']/*\"/>\t\n            <unmanaged>D3DTEXOPCAPS</unmanaged>\t\n            <unmanaged-short>D3DTEXOPCAPS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureOperationCaps.Disable\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTEXOPCAPS_DISABLE']/*\"/>\t\n            <unmanaged>D3DTEXOPCAPS_DISABLE</unmanaged>\t\n            <unmanaged-short>D3DTEXOPCAPS_DISABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureOperationCaps.SelectArg1\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTEXOPCAPS_SELECTARG1']/*\"/>\t\n            <unmanaged>D3DTEXOPCAPS_SELECTARG1</unmanaged>\t\n            <unmanaged-short>D3DTEXOPCAPS_SELECTARG1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureOperationCaps.SelectArg2\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTEXOPCAPS_SELECTARG2']/*\"/>\t\n            <unmanaged>D3DTEXOPCAPS_SELECTARG2</unmanaged>\t\n            <unmanaged-short>D3DTEXOPCAPS_SELECTARG2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureOperationCaps.Modulate\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTEXOPCAPS_MODULATE']/*\"/>\t\n            <unmanaged>D3DTEXOPCAPS_MODULATE</unmanaged>\t\n            <unmanaged-short>D3DTEXOPCAPS_MODULATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureOperationCaps.Modulate2X\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTEXOPCAPS_MODULATE2X']/*\"/>\t\n            <unmanaged>D3DTEXOPCAPS_MODULATE2X</unmanaged>\t\n            <unmanaged-short>D3DTEXOPCAPS_MODULATE2X</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureOperationCaps.Modulate4X\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTEXOPCAPS_MODULATE4X']/*\"/>\t\n            <unmanaged>D3DTEXOPCAPS_MODULATE4X</unmanaged>\t\n            <unmanaged-short>D3DTEXOPCAPS_MODULATE4X</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureOperationCaps.Add\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTEXOPCAPS_ADD']/*\"/>\t\n            <unmanaged>D3DTEXOPCAPS_ADD</unmanaged>\t\n            <unmanaged-short>D3DTEXOPCAPS_ADD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureOperationCaps.AddSigned\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTEXOPCAPS_ADDSIGNED']/*\"/>\t\n            <unmanaged>D3DTEXOPCAPS_ADDSIGNED</unmanaged>\t\n            <unmanaged-short>D3DTEXOPCAPS_ADDSIGNED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureOperationCaps.AddSigned2X\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTEXOPCAPS_ADDSIGNED2X']/*\"/>\t\n            <unmanaged>D3DTEXOPCAPS_ADDSIGNED2X</unmanaged>\t\n            <unmanaged-short>D3DTEXOPCAPS_ADDSIGNED2X</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureOperationCaps.Subtract\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTEXOPCAPS_SUBTRACT']/*\"/>\t\n            <unmanaged>D3DTEXOPCAPS_SUBTRACT</unmanaged>\t\n            <unmanaged-short>D3DTEXOPCAPS_SUBTRACT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureOperationCaps.AddSmooth\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTEXOPCAPS_ADDSMOOTH']/*\"/>\t\n            <unmanaged>D3DTEXOPCAPS_ADDSMOOTH</unmanaged>\t\n            <unmanaged-short>D3DTEXOPCAPS_ADDSMOOTH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureOperationCaps.BlendDiffuseAlpha\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTEXOPCAPS_BLENDDIFFUSEALPHA']/*\"/>\t\n            <unmanaged>D3DTEXOPCAPS_BLENDDIFFUSEALPHA</unmanaged>\t\n            <unmanaged-short>D3DTEXOPCAPS_BLENDDIFFUSEALPHA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureOperationCaps.BlendTextureAlpha\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTEXOPCAPS_BLENDTEXTUREALPHA']/*\"/>\t\n            <unmanaged>D3DTEXOPCAPS_BLENDTEXTUREALPHA</unmanaged>\t\n            <unmanaged-short>D3DTEXOPCAPS_BLENDTEXTUREALPHA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureOperationCaps.BlendFactorAlpha\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTEXOPCAPS_BLENDFACTORALPHA']/*\"/>\t\n            <unmanaged>D3DTEXOPCAPS_BLENDFACTORALPHA</unmanaged>\t\n            <unmanaged-short>D3DTEXOPCAPS_BLENDFACTORALPHA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureOperationCaps.BlendTextureAlphaPM\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTEXOPCAPS_BLENDTEXTUREALPHAPM']/*\"/>\t\n            <unmanaged>D3DTEXOPCAPS_BLENDTEXTUREALPHAPM</unmanaged>\t\n            <unmanaged-short>D3DTEXOPCAPS_BLENDTEXTUREALPHAPM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureOperationCaps.BlendCurrentAlpha\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTEXOPCAPS_BLENDCURRENTALPHA']/*\"/>\t\n            <unmanaged>D3DTEXOPCAPS_BLENDCURRENTALPHA</unmanaged>\t\n            <unmanaged-short>D3DTEXOPCAPS_BLENDCURRENTALPHA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureOperationCaps.Premodulate\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTEXOPCAPS_PREMODULATE']/*\"/>\t\n            <unmanaged>D3DTEXOPCAPS_PREMODULATE</unmanaged>\t\n            <unmanaged-short>D3DTEXOPCAPS_PREMODULATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureOperationCaps.ModulateAlphaAddColor\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTEXOPCAPS_MODULATEALPHA_ADDCOLOR']/*\"/>\t\n            <unmanaged>D3DTEXOPCAPS_MODULATEALPHA_ADDCOLOR</unmanaged>\t\n            <unmanaged-short>D3DTEXOPCAPS_MODULATEALPHA_ADDCOLOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureOperationCaps.ModulateColorAddAlpha\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTEXOPCAPS_MODULATECOLOR_ADDALPHA']/*\"/>\t\n            <unmanaged>D3DTEXOPCAPS_MODULATECOLOR_ADDALPHA</unmanaged>\t\n            <unmanaged-short>D3DTEXOPCAPS_MODULATECOLOR_ADDALPHA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureOperationCaps.ModulateInvAlphaAddColor\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTEXOPCAPS_MODULATEINVALPHA_ADDCOLOR']/*\"/>\t\n            <unmanaged>D3DTEXOPCAPS_MODULATEINVALPHA_ADDCOLOR</unmanaged>\t\n            <unmanaged-short>D3DTEXOPCAPS_MODULATEINVALPHA_ADDCOLOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureOperationCaps.ModulateInvColorAddAlpha\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTEXOPCAPS_MODULATEINVCOLOR_ADDALPHA']/*\"/>\t\n            <unmanaged>D3DTEXOPCAPS_MODULATEINVCOLOR_ADDALPHA</unmanaged>\t\n            <unmanaged-short>D3DTEXOPCAPS_MODULATEINVCOLOR_ADDALPHA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureOperationCaps.BumpEnvironmentMap\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTEXOPCAPS_BUMPENVMAP']/*\"/>\t\n            <unmanaged>D3DTEXOPCAPS_BUMPENVMAP</unmanaged>\t\n            <unmanaged-short>D3DTEXOPCAPS_BUMPENVMAP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureOperationCaps.BumpEnvironmentMapLuminance\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTEXOPCAPS_BUMPENVMAPLUMINANCE']/*\"/>\t\n            <unmanaged>D3DTEXOPCAPS_BUMPENVMAPLUMINANCE</unmanaged>\t\n            <unmanaged-short>D3DTEXOPCAPS_BUMPENVMAPLUMINANCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureOperationCaps.DotProduct3\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTEXOPCAPS_DOTPRODUCT3']/*\"/>\t\n            <unmanaged>D3DTEXOPCAPS_DOTPRODUCT3</unmanaged>\t\n            <unmanaged-short>D3DTEXOPCAPS_DOTPRODUCT3</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureOperationCaps.MultiplyAdd\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTEXOPCAPS_MULTIPLYADD']/*\"/>\t\n            <unmanaged>D3DTEXOPCAPS_MULTIPLYADD</unmanaged>\t\n            <unmanaged-short>D3DTEXOPCAPS_MULTIPLYADD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureOperationCaps.Lerp\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTEXOPCAPS_LERP']/*\"/>\t\n            <unmanaged>D3DTEXOPCAPS_LERP</unmanaged>\t\n            <unmanaged-short>D3DTEXOPCAPS_LERP</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.TextureStage\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTEXTURESTAGESTATETYPE']/*\"/>\t\n            <unmanaged>D3DTEXTURESTAGESTATETYPE</unmanaged>\t\n            <unmanaged-short>D3DTEXTURESTAGESTATETYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureStage.ColorOperation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTSS_COLOROP']/*\"/>\t\n            <unmanaged>D3DTSS_COLOROP</unmanaged>\t\n            <unmanaged-short>D3DTSS_COLOROP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureStage.ColorArg1\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTSS_COLORARG1']/*\"/>\t\n            <unmanaged>D3DTSS_COLORARG1</unmanaged>\t\n            <unmanaged-short>D3DTSS_COLORARG1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureStage.ColorArg2\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTSS_COLORARG2']/*\"/>\t\n            <unmanaged>D3DTSS_COLORARG2</unmanaged>\t\n            <unmanaged-short>D3DTSS_COLORARG2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureStage.AlphaOperation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTSS_ALPHAOP']/*\"/>\t\n            <unmanaged>D3DTSS_ALPHAOP</unmanaged>\t\n            <unmanaged-short>D3DTSS_ALPHAOP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureStage.AlphaArg1\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTSS_ALPHAARG1']/*\"/>\t\n            <unmanaged>D3DTSS_ALPHAARG1</unmanaged>\t\n            <unmanaged-short>D3DTSS_ALPHAARG1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureStage.AlphaArg2\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTSS_ALPHAARG2']/*\"/>\t\n            <unmanaged>D3DTSS_ALPHAARG2</unmanaged>\t\n            <unmanaged-short>D3DTSS_ALPHAARG2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureStage.BumpEnvironmentMat00\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTSS_BUMPENVMAT00']/*\"/>\t\n            <unmanaged>D3DTSS_BUMPENVMAT00</unmanaged>\t\n            <unmanaged-short>D3DTSS_BUMPENVMAT00</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureStage.BumpEnvironmentMat01\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTSS_BUMPENVMAT01']/*\"/>\t\n            <unmanaged>D3DTSS_BUMPENVMAT01</unmanaged>\t\n            <unmanaged-short>D3DTSS_BUMPENVMAT01</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureStage.BumpEnvironmentMat10\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTSS_BUMPENVMAT10']/*\"/>\t\n            <unmanaged>D3DTSS_BUMPENVMAT10</unmanaged>\t\n            <unmanaged-short>D3DTSS_BUMPENVMAT10</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureStage.BumpEnvironmentMat11\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTSS_BUMPENVMAT11']/*\"/>\t\n            <unmanaged>D3DTSS_BUMPENVMAT11</unmanaged>\t\n            <unmanaged-short>D3DTSS_BUMPENVMAT11</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureStage.TexCoordIndex\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTSS_TEXCOORDINDEX']/*\"/>\t\n            <unmanaged>D3DTSS_TEXCOORDINDEX</unmanaged>\t\n            <unmanaged-short>D3DTSS_TEXCOORDINDEX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureStage.BumpEnvironmentLScale\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTSS_BUMPENVLSCALE']/*\"/>\t\n            <unmanaged>D3DTSS_BUMPENVLSCALE</unmanaged>\t\n            <unmanaged-short>D3DTSS_BUMPENVLSCALE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureStage.BumpEnvironmentLOffset\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTSS_BUMPENVLOFFSET']/*\"/>\t\n            <unmanaged>D3DTSS_BUMPENVLOFFSET</unmanaged>\t\n            <unmanaged-short>D3DTSS_BUMPENVLOFFSET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureStage.TextureTransformFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTSS_TEXTURETRANSFORMFLAGS']/*\"/>\t\n            <unmanaged>D3DTSS_TEXTURETRANSFORMFLAGS</unmanaged>\t\n            <unmanaged-short>D3DTSS_TEXTURETRANSFORMFLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureStage.ColorArg0\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTSS_COLORARG0']/*\"/>\t\n            <unmanaged>D3DTSS_COLORARG0</unmanaged>\t\n            <unmanaged-short>D3DTSS_COLORARG0</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureStage.AlphaArg0\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTSS_ALPHAARG0']/*\"/>\t\n            <unmanaged>D3DTSS_ALPHAARG0</unmanaged>\t\n            <unmanaged-short>D3DTSS_ALPHAARG0</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureStage.ResultArg\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTSS_RESULTARG']/*\"/>\t\n            <unmanaged>D3DTSS_RESULTARG</unmanaged>\t\n            <unmanaged-short>D3DTSS_RESULTARG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureStage.Constant\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTSS_CONSTANT']/*\"/>\t\n            <unmanaged>D3DTSS_CONSTANT</unmanaged>\t\n            <unmanaged-short>D3DTSS_CONSTANT</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.TextureTransform\">\n            <summary>\t\n            <p>Defines texture coordinate transformation values.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Texture coordinates can be transformed using a 4 x 4 matrix before the results are passed to the rasterizer. The texture coordinate transforms are set by calling <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetTextureStageState(System.Int32,SharpDX.Direct3D9.TextureStage,SharpDX.Direct3D9.TextureArgument)\"/></strong>, and by passing in the <see cref=\"F:SharpDX.Direct3D9.TextureStage.TextureTransformFlags\"/> texture stage state and one of the values from <strong><see cref=\"T:SharpDX.Direct3D9.TextureTransform\"/></strong>. For more information about texture transforms, see Texture Coordinate Transformations (Direct3D 9).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTEXTURETRANSFORMFLAGS']/*\"/>\t\n            <msdn-id>bb172618</msdn-id>\t\n            <unmanaged>D3DTEXTURETRANSFORMFLAGS</unmanaged>\t\n            <unmanaged-short>D3DTEXTURETRANSFORMFLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureTransform.Disable\">\n            <summary>\t\n            <dd> <p>Texture coordinates are passed directly to the rasterizer. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTTFF_DISABLE']/*\"/>\t\n            <msdn-id>bb172618</msdn-id>\t\n            <unmanaged>D3DTTFF_DISABLE</unmanaged>\t\n            <unmanaged-short>D3DTTFF_DISABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureTransform.Count1\">\n            <summary>\t\n            <dd> <p>The rasterizer should expect 1D texture coordinates. This value is used by fixed function vertex processing; it should be set to 0 when using a programmable vertex shader.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTTFF_COUNT1']/*\"/>\t\n            <msdn-id>bb172618</msdn-id>\t\n            <unmanaged>D3DTTFF_COUNT1</unmanaged>\t\n            <unmanaged-short>D3DTTFF_COUNT1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureTransform.Count2\">\n            <summary>\t\n            <dd> <p>The rasterizer should expect 2D texture coordinates. This value is used by fixed function vertex processing; it should be set to 0 when using a programmable vertex shader.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTTFF_COUNT2']/*\"/>\t\n            <msdn-id>bb172618</msdn-id>\t\n            <unmanaged>D3DTTFF_COUNT2</unmanaged>\t\n            <unmanaged-short>D3DTTFF_COUNT2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureTransform.Count3\">\n            <summary>\t\n            <dd> <p>The rasterizer should expect 3D texture coordinates. This value is used by fixed function vertex processing; it should be set to 0 when using a programmable vertex shader.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTTFF_COUNT3']/*\"/>\t\n            <msdn-id>bb172618</msdn-id>\t\n            <unmanaged>D3DTTFF_COUNT3</unmanaged>\t\n            <unmanaged-short>D3DTTFF_COUNT3</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureTransform.Count4\">\n            <summary>\t\n            <dd> <p>The rasterizer should expect 4D texture coordinates. This value is used by fixed function vertex processing; it should be set to 0 when using a programmable vertex shader.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTTFF_COUNT4']/*\"/>\t\n            <msdn-id>bb172618</msdn-id>\t\n            <unmanaged>D3DTTFF_COUNT4</unmanaged>\t\n            <unmanaged-short>D3DTTFF_COUNT4</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureTransform.Projected\">\n            <summary>\t\n            <dd> <p>This flag is honored by the fixed function pixel pipeline, as well as the programmable pixel pipeline in versions ps_1_1 to ps_1_3. When texture projection is enabled for a texture stage, all four floating point values must be written to the corresponding texture register. Each texture coordinate is divided by the last element before being passed to the rasterizer. For example, if this flag is specified with the <see cref=\"F:SharpDX.Direct3D9.TextureTransform.Count3\"/> flag, the first and second texture coordinates are divided by the third coordinate before being passed to the rasterizer. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTTFF_PROJECTED']/*\"/>\t\n            <msdn-id>bb172618</msdn-id>\t\n            <unmanaged>D3DTTFF_PROJECTED</unmanaged>\t\n            <unmanaged-short>D3DTTFF_PROJECTED</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.TextureWrapping\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DWRAPCOORD']/*\"/>\t\n            <unmanaged>D3DWRAPCOORD</unmanaged>\t\n            <unmanaged-short>D3DWRAPCOORD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureWrapping.WrapCoordinate0\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DWRAPCOORD_0']/*\"/>\t\n            <unmanaged>D3DWRAPCOORD_0</unmanaged>\t\n            <unmanaged-short>D3DWRAPCOORD_0</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureWrapping.WrapCoordinate1\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DWRAPCOORD_1']/*\"/>\t\n            <unmanaged>D3DWRAPCOORD_1</unmanaged>\t\n            <unmanaged-short>D3DWRAPCOORD_1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureWrapping.WrapCoordinate2\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DWRAPCOORD_2']/*\"/>\t\n            <unmanaged>D3DWRAPCOORD_2</unmanaged>\t\n            <unmanaged-short>D3DWRAPCOORD_2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureWrapping.WrapCoordinate3\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DWRAPCOORD_3']/*\"/>\t\n            <unmanaged>D3DWRAPCOORD_3</unmanaged>\t\n            <unmanaged-short>D3DWRAPCOORD_3</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureWrapping.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.TrackPriority\">\n            <summary>\t\n            <p>Defines the priority type to which an animation track is assigned.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Tracks with the same priority are blended together, and the two resulting values are then blended using the priority blend factor.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXPRIORITY_TYPE']/*\"/>\t\n            <msdn-id>bb205401</msdn-id>\t\n            <unmanaged>D3DXPRIORITY_TYPE</unmanaged>\t\n            <unmanaged-short>D3DXPRIORITY_TYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TrackPriority.Low\">\n            <summary>\t\n            <dd> <p>Track should be blended with all the low-priority tracks before the low-priority blend is mixed with the high-priority blend.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXPRIORITY_LOW']/*\"/>\t\n            <msdn-id>bb205401</msdn-id>\t\n            <unmanaged>D3DXPRIORITY_LOW</unmanaged>\t\n            <unmanaged-short>D3DXPRIORITY_LOW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TrackPriority.High\">\n            <summary>\t\n            <dd> <p>Track should be blended with all the high-priority tracks before the high-priority blend is mixed with the low-priority blend.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXPRIORITY_HIGH']/*\"/>\t\n            <msdn-id>bb205401</msdn-id>\t\n            <unmanaged>D3DXPRIORITY_HIGH</unmanaged>\t\n            <unmanaged-short>D3DXPRIORITY_HIGH</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.TransformState\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTRANSFORMSTATETYPE2']/*\"/>\t\n            <unmanaged>D3DTRANSFORMSTATETYPE2</unmanaged>\t\n            <unmanaged-short>D3DTRANSFORMSTATETYPE2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TransformState.View\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTS2_VIEW']/*\"/>\t\n            <unmanaged>D3DTS2_VIEW</unmanaged>\t\n            <unmanaged-short>D3DTS2_VIEW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TransformState.Projection\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTS2_PROJECTION']/*\"/>\t\n            <unmanaged>D3DTS2_PROJECTION</unmanaged>\t\n            <unmanaged-short>D3DTS2_PROJECTION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TransformState.World\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTS2_WORLD']/*\"/>\t\n            <unmanaged>D3DTS2_WORLD</unmanaged>\t\n            <unmanaged-short>D3DTS2_WORLD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TransformState.World1\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTS2_WORLD1']/*\"/>\t\n            <unmanaged>D3DTS2_WORLD1</unmanaged>\t\n            <unmanaged-short>D3DTS2_WORLD1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TransformState.World2\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTS2_WORLD2']/*\"/>\t\n            <unmanaged>D3DTS2_WORLD2</unmanaged>\t\n            <unmanaged-short>D3DTS2_WORLD2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TransformState.World3\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTS2_WORLD3']/*\"/>\t\n            <unmanaged>D3DTS2_WORLD3</unmanaged>\t\n            <unmanaged-short>D3DTS2_WORLD3</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TransformState.Texture0\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTS2_TEXTURE0']/*\"/>\t\n            <unmanaged>D3DTS2_TEXTURE0</unmanaged>\t\n            <unmanaged-short>D3DTS2_TEXTURE0</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TransformState.Texture1\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTS2_TEXTURE1']/*\"/>\t\n            <unmanaged>D3DTS2_TEXTURE1</unmanaged>\t\n            <unmanaged-short>D3DTS2_TEXTURE1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TransformState.Texture2\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTS2_TEXTURE2']/*\"/>\t\n            <unmanaged>D3DTS2_TEXTURE2</unmanaged>\t\n            <unmanaged-short>D3DTS2_TEXTURE2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TransformState.Texture3\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTS2_TEXTURE3']/*\"/>\t\n            <unmanaged>D3DTS2_TEXTURE3</unmanaged>\t\n            <unmanaged-short>D3DTS2_TEXTURE3</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TransformState.Texture4\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTS2_TEXTURE4']/*\"/>\t\n            <unmanaged>D3DTS2_TEXTURE4</unmanaged>\t\n            <unmanaged-short>D3DTS2_TEXTURE4</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TransformState.Texture5\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTS2_TEXTURE5']/*\"/>\t\n            <unmanaged>D3DTS2_TEXTURE5</unmanaged>\t\n            <unmanaged-short>D3DTS2_TEXTURE5</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TransformState.Texture6\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTS2_TEXTURE6']/*\"/>\t\n            <unmanaged>D3DTS2_TEXTURE6</unmanaged>\t\n            <unmanaged-short>D3DTS2_TEXTURE6</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TransformState.Texture7\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTS2_TEXTURE7']/*\"/>\t\n            <unmanaged>D3DTS2_TEXTURE7</unmanaged>\t\n            <unmanaged-short>D3DTS2_TEXTURE7</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.TransitionType\">\n            <summary>\t\n            <p>Defines the transition style between values of a mesh animation.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The calculation for the ramp from ease in to ease out is calculated as follows:</p><dl> <dd>Q(t) = 2(x - y)t3 + 3(y - x)t2 + x</dd> </dl><p>where the ramp is a function Q(t) with the following properties:</p><ul> <li>Q(t) is a cubic spline.</li> <li>Q(t) interpolates between x and y as t ranges from 0 to 1.</li> <li>Q(t) is horizontal when t = 0 and t = 1.</li> </ul><p>Mathematically, this translates into:</p><dl> <dd>Q(t) = At3 + Bt2 + Ct + D (and therefore, Q'(t) = 3At2 + 2Bt + C)</dd> <dd>2a) Q(0) = x</dd> <dd>2b) Q(1) = y</dd> <dd>3a) Q'(0) = 0</dd> <dd>3b) Q'(1) = 0</dd> </dl><p>Solving for A, B, C, D: </p><dl> <dd>D = x   (from 2a)</dd> <dd>C = 0  (from 3a)</dd> <dd>3A + 2B = 0 (from 3b)</dd> <dd>A + B = y - x (from 2b and D = x)</dd> </dl><p>Therefore:</p><dl> <dd>A = 2(x - y), B = 3(y - x), C = 0, D = x</dd> </dl>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXTRANSITION_TYPE']/*\"/>\t\n            <msdn-id>bb205475</msdn-id>\t\n            <unmanaged>D3DXTRANSITION_TYPE</unmanaged>\t\n            <unmanaged-short>D3DXTRANSITION_TYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TransitionType.Linear\">\n            <summary>\t\n            <dd> <p>Linear transition between values.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXTRANSITION_LINEAR']/*\"/>\t\n            <msdn-id>bb205475</msdn-id>\t\n            <unmanaged>D3DXTRANSITION_LINEAR</unmanaged>\t\n            <unmanaged-short>D3DXTRANSITION_LINEAR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TransitionType.EaseInEaseOut\">\n            <summary>\t\n            <dd> <p>Ease-in, ease-out spline transition between values.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXTRANSITION_EASEINEASEOUT']/*\"/>\t\n            <msdn-id>bb205475</msdn-id>\t\n            <unmanaged>D3DXTRANSITION_EASEINEASEOUT</unmanaged>\t\n            <unmanaged-short>D3DXTRANSITION_EASEINEASEOUT</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.Usage\">\n            <summary>\t\n            <p>Usage options that identify how resources are to be used.</p><p>The following table summarizes the available usage options.</p><p></p>\t\n            </summary>\t\n            <remarks>\t\n            Usage and Resource Combinations<p>Usages are either specified when a resource is created, or specified with <strong>CheckDeviceType</strong> to test the capability of an  existing resource. The following table identifies which usages can be applied to which resource types.</p><table> <tr><th>Usage</th><th>Vertex buffer create</th><th>Index buffer create</th><th>Texture create</th><th>Cube texture create</th><th>Volume texture create</th><th>Surface create</th><th>Check device format</th></tr> <tr><td><strong><see cref=\"F:SharpDX.Direct3D9.Usage.AutoGenerateMipMap\"/></strong></td><td></td><td></td><td>x</td><td>x</td><td></td><td></td><td>x</td></tr> <tr><td><strong><see cref=\"F:SharpDX.Direct3D9.Usage.DepthStencil\"/></strong></td><td></td><td></td><td>x</td><td>x</td><td></td><td>x</td><td>x</td></tr> <tr><td><strong><see cref=\"F:SharpDX.Direct3D9.Usage.DisplacementMap\"/></strong></td><td></td><td></td><td>x</td><td></td><td></td><td></td><td>x</td></tr> <tr><td><strong><see cref=\"F:SharpDX.Direct3D9.Usage.DoNotClip\"/></strong></td><td>x</td><td>x</td><td></td><td></td><td></td><td></td><td></td></tr> <tr><td><strong><see cref=\"F:SharpDX.Direct3D9.Usage.Dynamic\"/></strong></td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td><td></td><td>x</td></tr> <tr><td><strong><see cref=\"F:SharpDX.Direct3D9.Usage.NonSecure\"/></strong></td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td></tr> <tr><td><strong><see cref=\"F:SharpDX.Direct3D9.Usage.NPatches\"/></strong></td><td>x</td><td>x</td><td></td><td></td><td></td><td></td><td></td></tr> <tr><td><strong><see cref=\"F:SharpDX.Direct3D9.Usage.Points\"/></strong></td><td>x</td><td>x</td><td></td><td></td><td></td><td></td><td></td></tr> <tr><td><strong><see cref=\"F:SharpDX.Direct3D9.Usage.RTPatches\"/></strong></td><td>x</td><td>x</td><td></td><td></td><td></td><td></td><td></td></tr> <tr><td><strong><see cref=\"F:SharpDX.Direct3D9.Usage.RenderTarget\"/></strong></td><td></td><td></td><td>x</td><td>x</td><td></td><td>x</td><td>x</td></tr> <tr><td><strong><see cref=\"F:SharpDX.Direct3D9.Usage.SoftwareProcessing\"/></strong></td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td><td></td><td>x</td></tr> <tr><td><strong><see cref=\"F:SharpDX.Direct3D9.Usage.TextApi\"/></strong></td><td>x</td><td></td><td>x</td><td></td><td></td><td></td><td></td></tr> <tr><td><strong><see cref=\"F:SharpDX.Direct3D9.Usage.WriteOnly\"/></strong></td><td>x</td><td>x</td><td></td><td></td><td></td><td></td><td></td></tr> </table><p>?</p><p>Use <strong>CheckDeviceFormat</strong> to check hardware support for these usages.</p><p>Each of the resource creation methods is listed here.</p><ul> <li> <strong>CreateCubeTexture</strong> </li> <li> <strong>CreateDepthStencilSurface</strong> </li> <li> <strong>CreateIndexBuffer</strong> </li> <li> <strong>CreateOffscreenPlainSurface</strong> </li> <li> <strong>CreateRenderTarget</strong> </li> <li> <strong>CreateTexture</strong> </li> <li> <strong>CreateVertexBuffer</strong> </li> <li> <strong>CreateVolumeTexture</strong> </li> </ul><p>The D3DXCreatexxx texturing functions also use some of these constant values for  resource creation.</p><p>For more information about pool types and their restrictions with certain usages, see <strong><see cref=\"T:SharpDX.Direct3D9.Pool\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DUSAGE']/*\"/>\t\n            <msdn-id>bb172625</msdn-id>\t\n            <unmanaged>D3DUSAGE</unmanaged>\t\n            <unmanaged-short>D3DUSAGE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Usage.RenderTarget\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DUSAGE_RENDERTARGET']/*\"/>\t\n            <unmanaged>D3DUSAGE_RENDERTARGET</unmanaged>\t\n            <unmanaged-short>D3DUSAGE_RENDERTARGET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Usage.DepthStencil\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DUSAGE_DEPTHSTENCIL']/*\"/>\t\n            <unmanaged>D3DUSAGE_DEPTHSTENCIL</unmanaged>\t\n            <unmanaged-short>D3DUSAGE_DEPTHSTENCIL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Usage.Dynamic\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DUSAGE_DYNAMIC']/*\"/>\t\n            <unmanaged>D3DUSAGE_DYNAMIC</unmanaged>\t\n            <unmanaged-short>D3DUSAGE_DYNAMIC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Usage.NonSecure\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DUSAGE_NONSECURE']/*\"/>\t\n            <unmanaged>D3DUSAGE_NONSECURE</unmanaged>\t\n            <unmanaged-short>D3DUSAGE_NONSECURE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Usage.AutoGenerateMipMap\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DUSAGE_AUTOGENMIPMAP']/*\"/>\t\n            <unmanaged>D3DUSAGE_AUTOGENMIPMAP</unmanaged>\t\n            <unmanaged-short>D3DUSAGE_AUTOGENMIPMAP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Usage.DisplacementMap\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DUSAGE_DMAP']/*\"/>\t\n            <unmanaged>D3DUSAGE_DMAP</unmanaged>\t\n            <unmanaged-short>D3DUSAGE_DMAP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Usage.QueryLegacyBumpMap\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DUSAGE_QUERY_LEGACYBUMPMAP']/*\"/>\t\n            <unmanaged>D3DUSAGE_QUERY_LEGACYBUMPMAP</unmanaged>\t\n            <unmanaged-short>D3DUSAGE_QUERY_LEGACYBUMPMAP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Usage.QuerySrgbRead\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DUSAGE_QUERY_SRGBREAD']/*\"/>\t\n            <unmanaged>D3DUSAGE_QUERY_SRGBREAD</unmanaged>\t\n            <unmanaged-short>D3DUSAGE_QUERY_SRGBREAD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Usage.QueryFilter\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DUSAGE_QUERY_FILTER']/*\"/>\t\n            <unmanaged>D3DUSAGE_QUERY_FILTER</unmanaged>\t\n            <unmanaged-short>D3DUSAGE_QUERY_FILTER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Usage.QuerySrgbWrite\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DUSAGE_QUERY_SRGBWRITE']/*\"/>\t\n            <unmanaged>D3DUSAGE_QUERY_SRGBWRITE</unmanaged>\t\n            <unmanaged-short>D3DUSAGE_QUERY_SRGBWRITE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Usage.QueryPostPixelShaderBlending\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DUSAGE_QUERY_POSTPIXELSHADER_BLENDING']/*\"/>\t\n            <unmanaged>D3DUSAGE_QUERY_POSTPIXELSHADER_BLENDING</unmanaged>\t\n            <unmanaged-short>D3DUSAGE_QUERY_POSTPIXELSHADER_BLENDING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Usage.QueryVertexTexture\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DUSAGE_QUERY_VERTEXTEXTURE']/*\"/>\t\n            <unmanaged>D3DUSAGE_QUERY_VERTEXTEXTURE</unmanaged>\t\n            <unmanaged-short>D3DUSAGE_QUERY_VERTEXTEXTURE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Usage.QueryWrapAndMip\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DUSAGE_QUERY_WRAPANDMIP']/*\"/>\t\n            <unmanaged>D3DUSAGE_QUERY_WRAPANDMIP</unmanaged>\t\n            <unmanaged-short>D3DUSAGE_QUERY_WRAPANDMIP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Usage.WriteOnly\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DUSAGE_WRITEONLY']/*\"/>\t\n            <unmanaged>D3DUSAGE_WRITEONLY</unmanaged>\t\n            <unmanaged-short>D3DUSAGE_WRITEONLY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Usage.SoftwareProcessing\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DUSAGE_SOFTWAREPROCESSING']/*\"/>\t\n            <unmanaged>D3DUSAGE_SOFTWAREPROCESSING</unmanaged>\t\n            <unmanaged-short>D3DUSAGE_SOFTWAREPROCESSING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Usage.DoNotClip\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DUSAGE_DONOTCLIP']/*\"/>\t\n            <unmanaged>D3DUSAGE_DONOTCLIP</unmanaged>\t\n            <unmanaged-short>D3DUSAGE_DONOTCLIP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Usage.Points\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DUSAGE_POINTS']/*\"/>\t\n            <unmanaged>D3DUSAGE_POINTS</unmanaged>\t\n            <unmanaged-short>D3DUSAGE_POINTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Usage.RTPatches\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DUSAGE_RTPATCHES']/*\"/>\t\n            <unmanaged>D3DUSAGE_RTPATCHES</unmanaged>\t\n            <unmanaged-short>D3DUSAGE_RTPATCHES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Usage.NPatches\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DUSAGE_NPATCHES']/*\"/>\t\n            <unmanaged>D3DUSAGE_NPATCHES</unmanaged>\t\n            <unmanaged-short>D3DUSAGE_NPATCHES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Usage.TextApi\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DUSAGE_TEXTAPI']/*\"/>\t\n            <unmanaged>D3DUSAGE_TEXTAPI</unmanaged>\t\n            <unmanaged-short>D3DUSAGE_TEXTAPI</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Usage.RestrictedContent\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DUSAGE_RESTRICTED_CONTENT']/*\"/>\t\n            <unmanaged>D3DUSAGE_RESTRICTED_CONTENT</unmanaged>\t\n            <unmanaged-short>D3DUSAGE_RESTRICTED_CONTENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Usage.RestrictSharedResource\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DUSAGE_RESTRICT_SHARED_RESOURCE']/*\"/>\t\n            <unmanaged>D3DUSAGE_RESTRICT_SHARED_RESOURCE</unmanaged>\t\n            <unmanaged-short>D3DUSAGE_RESTRICT_SHARED_RESOURCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Usage.RestrictSharedResourceDriver\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DUSAGE_RESTRICT_SHARED_RESOURCE_DRIVER']/*\"/>\t\n            <unmanaged>D3DUSAGE_RESTRICT_SHARED_RESOURCE_DRIVER</unmanaged>\t\n            <unmanaged-short>D3DUSAGE_RESTRICT_SHARED_RESOURCE_DRIVER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Usage.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.UVAtlasQuality\">\n            <summary>\t\n            <p>Texture wrapping options for IMT computation APIs.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXIMT']/*\"/>\t\n            <msdn-id>bb172880</msdn-id>\t\n            <unmanaged>D3DXIMT</unmanaged>\t\n            <unmanaged-short>D3DXIMT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.UVAtlasQuality.WrapU\">\n            <summary>\t\n            <dd> <p>The texture wraps in the U direction.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXIMT_WRAP_U']/*\"/>\t\n            <msdn-id>bb172880</msdn-id>\t\n            <unmanaged>D3DXIMT_WRAP_U</unmanaged>\t\n            <unmanaged-short>D3DXIMT_WRAP_U</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.UVAtlasQuality.WrapV\">\n            <summary>\t\n            <dd> <p>The texture wraps in the V direction.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXIMT_WRAP_V']/*\"/>\t\n            <msdn-id>bb172880</msdn-id>\t\n            <unmanaged>D3DXIMT_WRAP_V</unmanaged>\t\n            <unmanaged-short>D3DXIMT_WRAP_V</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.UVAtlasQuality.WrapUv\">\n            <summary>\t\n            <dd> <p>The texture wraps in both the U and V direction.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXIMT_WRAP_UV']/*\"/>\t\n            <msdn-id>bb172880</msdn-id>\t\n            <unmanaged>D3DXIMT_WRAP_UV</unmanaged>\t\n            <unmanaged-short>D3DXIMT_WRAP_UV</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.VertexBlend\">\n            <summary>\t\n            <p>Defines flags used to control the number or matrices that the system applies when performing multimatrix vertex blending.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Members of this type are used with the <see cref=\"F:SharpDX.Direct3D9.RenderState.VertexBlend\"/> render state.</p><p>Geometry blending (multimatrix vertex blending) requires that your application use a vertex format that has blending (beta) weights for each vertex.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DVERTEXBLENDFLAGS']/*\"/>\t\n            <msdn-id>bb172628</msdn-id>\t\n            <unmanaged>D3DVERTEXBLENDFLAGS</unmanaged>\t\n            <unmanaged-short>D3DVERTEXBLENDFLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VertexBlend.Disable\">\n            <summary>\t\n            <dd> <p>Disable vertex blending; apply only the world matrix set by the <strong>D3DTS_WORLDMATRIX</strong> macro, where the index value for the transformation state is 0. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DVBF_DISABLE']/*\"/>\t\n            <msdn-id>bb172628</msdn-id>\t\n            <unmanaged>D3DVBF_DISABLE</unmanaged>\t\n            <unmanaged-short>D3DVBF_DISABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VertexBlend.Weights1\">\n            <summary>\t\n            <dd> <p>Enable vertex blending between the two matrices set by the <strong>D3DTS_WORLDMATRIX</strong> macro, where the index value for the transformation states are 0 and 1. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DVBF_1WEIGHTS']/*\"/>\t\n            <msdn-id>bb172628</msdn-id>\t\n            <unmanaged>D3DVBF_1WEIGHTS</unmanaged>\t\n            <unmanaged-short>D3DVBF_1WEIGHTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VertexBlend.Weights2\">\n            <summary>\t\n            <dd> <p>Enable vertex blending between the three matrices set by the <strong>D3DTS_WORLDMATRIX</strong> macro, where the index value for the transformation states are 0, 1, and 2. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DVBF_2WEIGHTS']/*\"/>\t\n            <msdn-id>bb172628</msdn-id>\t\n            <unmanaged>D3DVBF_2WEIGHTS</unmanaged>\t\n            <unmanaged-short>D3DVBF_2WEIGHTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VertexBlend.Weights3\">\n            <summary>\t\n            <dd> <p>Enable vertex blending between the four matrices set by the <strong>D3DTS_WORLDMATRIX</strong> macro, where the index value for the transformation states are 0, 1, 2, and 3. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DVBF_3WEIGHTS']/*\"/>\t\n            <msdn-id>bb172628</msdn-id>\t\n            <unmanaged>D3DVBF_3WEIGHTS</unmanaged>\t\n            <unmanaged-short>D3DVBF_3WEIGHTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VertexBlend.Tweening\">\n            <summary>\t\n            <dd> <p>Vertex blending is done by using the value assigned to <see cref=\"F:SharpDX.Direct3D9.RenderState.TweenFactor\"/>. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DVBF_TWEENING']/*\"/>\t\n            <msdn-id>bb172628</msdn-id>\t\n            <unmanaged>D3DVBF_TWEENING</unmanaged>\t\n            <unmanaged-short>D3DVBF_TWEENING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VertexBlend.Weights0\">\n            <summary>\t\n            <dd> <p>Use a single matrix with a weight of 1.0. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DVBF_0WEIGHTS']/*\"/>\t\n            <msdn-id>bb172628</msdn-id>\t\n            <unmanaged>D3DVBF_0WEIGHTS</unmanaged>\t\n            <unmanaged-short>D3DVBF_0WEIGHTS</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.VertexFormat\">\n            <summary>\t\n            <p>Flexible Vertex Format Constants, or FVF codes, are used to describe the contents of vertices  interleaved in a single data stream that will be processed by the fixed-function pipeline.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFVF']/*\"/>\t\n            <msdn-id>bb172559</msdn-id>\t\n            <unmanaged>D3DFVF</unmanaged>\t\n            <unmanaged-short>D3DFVF</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VertexFormat.Reserved0\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFVF_RESERVED0']/*\"/>\t\n            <unmanaged>D3DFVF_RESERVED0</unmanaged>\t\n            <unmanaged-short>D3DFVF_RESERVED0</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VertexFormat.PositionMask\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFVF_POSITION_MASK']/*\"/>\t\n            <unmanaged>D3DFVF_POSITION_MASK</unmanaged>\t\n            <unmanaged-short>D3DFVF_POSITION_MASK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VertexFormat.Position\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFVF_XYZ']/*\"/>\t\n            <unmanaged>D3DFVF_XYZ</unmanaged>\t\n            <unmanaged-short>D3DFVF_XYZ</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VertexFormat.PositionRhw\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFVF_XYZRHW']/*\"/>\t\n            <unmanaged>D3DFVF_XYZRHW</unmanaged>\t\n            <unmanaged-short>D3DFVF_XYZRHW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VertexFormat.PositionBlend1\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFVF_XYZB1']/*\"/>\t\n            <unmanaged>D3DFVF_XYZB1</unmanaged>\t\n            <unmanaged-short>D3DFVF_XYZB1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VertexFormat.PositionBlend2\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFVF_XYZB2']/*\"/>\t\n            <unmanaged>D3DFVF_XYZB2</unmanaged>\t\n            <unmanaged-short>D3DFVF_XYZB2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VertexFormat.PositionBlend3\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFVF_XYZB3']/*\"/>\t\n            <unmanaged>D3DFVF_XYZB3</unmanaged>\t\n            <unmanaged-short>D3DFVF_XYZB3</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VertexFormat.PositionBlend4\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFVF_XYZB4']/*\"/>\t\n            <unmanaged>D3DFVF_XYZB4</unmanaged>\t\n            <unmanaged-short>D3DFVF_XYZB4</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VertexFormat.PositionBlend5\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFVF_XYZB5']/*\"/>\t\n            <unmanaged>D3DFVF_XYZB5</unmanaged>\t\n            <unmanaged-short>D3DFVF_XYZB5</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VertexFormat.PositionW\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFVF_XYZW']/*\"/>\t\n            <unmanaged>D3DFVF_XYZW</unmanaged>\t\n            <unmanaged-short>D3DFVF_XYZW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VertexFormat.Normal\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFVF_NORMAL']/*\"/>\t\n            <unmanaged>D3DFVF_NORMAL</unmanaged>\t\n            <unmanaged-short>D3DFVF_NORMAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VertexFormat.PointSize\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFVF_PSIZE']/*\"/>\t\n            <unmanaged>D3DFVF_PSIZE</unmanaged>\t\n            <unmanaged-short>D3DFVF_PSIZE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VertexFormat.Diffuse\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFVF_DIFFUSE']/*\"/>\t\n            <unmanaged>D3DFVF_DIFFUSE</unmanaged>\t\n            <unmanaged-short>D3DFVF_DIFFUSE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VertexFormat.Specular\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFVF_SPECULAR']/*\"/>\t\n            <unmanaged>D3DFVF_SPECULAR</unmanaged>\t\n            <unmanaged-short>D3DFVF_SPECULAR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VertexFormat.TextureCountMask\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFVF_TEXCOUNT_MASK']/*\"/>\t\n            <unmanaged>D3DFVF_TEXCOUNT_MASK</unmanaged>\t\n            <unmanaged-short>D3DFVF_TEXCOUNT_MASK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VertexFormat.TextureCountShift\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFVF_TEXCOUNT_SHIFT']/*\"/>\t\n            <unmanaged>D3DFVF_TEXCOUNT_SHIFT</unmanaged>\t\n            <unmanaged-short>D3DFVF_TEXCOUNT_SHIFT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VertexFormat.Texture0\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFVF_TEX0']/*\"/>\t\n            <unmanaged>D3DFVF_TEX0</unmanaged>\t\n            <unmanaged-short>D3DFVF_TEX0</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VertexFormat.Texture1\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFVF_TEX1']/*\"/>\t\n            <unmanaged>D3DFVF_TEX1</unmanaged>\t\n            <unmanaged-short>D3DFVF_TEX1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VertexFormat.Texture2\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFVF_TEX2']/*\"/>\t\n            <unmanaged>D3DFVF_TEX2</unmanaged>\t\n            <unmanaged-short>D3DFVF_TEX2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VertexFormat.Texture3\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFVF_TEX3']/*\"/>\t\n            <unmanaged>D3DFVF_TEX3</unmanaged>\t\n            <unmanaged-short>D3DFVF_TEX3</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VertexFormat.Texture4\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFVF_TEX4']/*\"/>\t\n            <unmanaged>D3DFVF_TEX4</unmanaged>\t\n            <unmanaged-short>D3DFVF_TEX4</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VertexFormat.Texture5\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFVF_TEX5']/*\"/>\t\n            <unmanaged>D3DFVF_TEX5</unmanaged>\t\n            <unmanaged-short>D3DFVF_TEX5</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VertexFormat.Texture6\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFVF_TEX6']/*\"/>\t\n            <unmanaged>D3DFVF_TEX6</unmanaged>\t\n            <unmanaged-short>D3DFVF_TEX6</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VertexFormat.Texture7\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFVF_TEX7']/*\"/>\t\n            <unmanaged>D3DFVF_TEX7</unmanaged>\t\n            <unmanaged-short>D3DFVF_TEX7</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VertexFormat.Texture8\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFVF_TEX8']/*\"/>\t\n            <unmanaged>D3DFVF_TEX8</unmanaged>\t\n            <unmanaged-short>D3DFVF_TEX8</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VertexFormat.LastBetaUByte4\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFVF_LASTBETA_UBYTE4']/*\"/>\t\n            <unmanaged>D3DFVF_LASTBETA_UBYTE4</unmanaged>\t\n            <unmanaged-short>D3DFVF_LASTBETA_UBYTE4</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VertexFormat.LastBetaColor\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFVF_LASTBETA_D3DCOLOR']/*\"/>\t\n            <unmanaged>D3DFVF_LASTBETA_D3DCOLOR</unmanaged>\t\n            <unmanaged-short>D3DFVF_LASTBETA_D3DCOLOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VertexFormat.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.VertexFormatCaps\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFVFCAPS']/*\"/>\t\n            <unmanaged>D3DFVFCAPS</unmanaged>\t\n            <unmanaged-short>D3DFVFCAPS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VertexFormatCaps.TextureCoordCountMask\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFVFCAPS_TEXCOORDCOUNTMASK']/*\"/>\t\n            <unmanaged>D3DFVFCAPS_TEXCOORDCOUNTMASK</unmanaged>\t\n            <unmanaged-short>D3DFVFCAPS_TEXCOORDCOUNTMASK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VertexFormatCaps.DoNotStripElements\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFVFCAPS_DONOTSTRIPELEMENTS']/*\"/>\t\n            <unmanaged>D3DFVFCAPS_DONOTSTRIPELEMENTS</unmanaged>\t\n            <unmanaged-short>D3DFVFCAPS_DONOTSTRIPELEMENTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VertexFormatCaps.PointSize\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DFVFCAPS_PSIZE']/*\"/>\t\n            <unmanaged>D3DFVFCAPS_PSIZE</unmanaged>\t\n            <unmanaged-short>D3DFVFCAPS_PSIZE</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.VertexFormatDeclaratorCount\">\n            <summary>\t\n            <p>This constant is the maximum number of vertex declarators for a mesh.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>MAXD3DDECLLENGTH is defined as a maximum of 64 (see d3d9types.h). This does not include the \"end\" marker vertex element.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='_MAX_FVF_DECL_SIZE']/*\"/>\t\n            <msdn-id>bb147183</msdn-id>\t\n            <unmanaged>_MAX_FVF_DECL_SIZE</unmanaged>\t\n            <unmanaged-short>_MAX_FVF_DECL_SIZE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VertexFormatDeclaratorCount.Max\">\n            <summary>\t\n            <dd> <p>The maximum number of elements in the vertex declaration. The additional (+1) is for <strong>D3DDECL_END</strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MAX_FVF_DECL_SIZE']/*\"/>\t\n            <msdn-id>bb147183</msdn-id>\t\n            <unmanaged>MAX_FVF_DECL_SIZE</unmanaged>\t\n            <unmanaged-short>MAX_FVF_DECL_SIZE</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.VertexProcessingCaps\">\n            <summary>\t\n            <p>A combination of one or more flags that control the device create behavior.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DVTXPCAPS']/*\"/>\t\n            <msdn-id>bb172637</msdn-id>\t\n            <unmanaged>D3DVTXPCAPS</unmanaged>\t\n            <unmanaged-short>D3DVTXPCAPS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VertexProcessingCaps.TextureGen\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DVTXPCAPS_TEXGEN']/*\"/>\t\n            <unmanaged>D3DVTXPCAPS_TEXGEN</unmanaged>\t\n            <unmanaged-short>D3DVTXPCAPS_TEXGEN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VertexProcessingCaps.MaterialSource7\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DVTXPCAPS_MATERIALSOURCE7']/*\"/>\t\n            <unmanaged>D3DVTXPCAPS_MATERIALSOURCE7</unmanaged>\t\n            <unmanaged-short>D3DVTXPCAPS_MATERIALSOURCE7</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VertexProcessingCaps.DirectionalLights\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DVTXPCAPS_DIRECTIONALLIGHTS']/*\"/>\t\n            <unmanaged>D3DVTXPCAPS_DIRECTIONALLIGHTS</unmanaged>\t\n            <unmanaged-short>D3DVTXPCAPS_DIRECTIONALLIGHTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VertexProcessingCaps.PositionalLights\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DVTXPCAPS_POSITIONALLIGHTS']/*\"/>\t\n            <unmanaged>D3DVTXPCAPS_POSITIONALLIGHTS</unmanaged>\t\n            <unmanaged-short>D3DVTXPCAPS_POSITIONALLIGHTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VertexProcessingCaps.LocalViewer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DVTXPCAPS_LOCALVIEWER']/*\"/>\t\n            <unmanaged>D3DVTXPCAPS_LOCALVIEWER</unmanaged>\t\n            <unmanaged-short>D3DVTXPCAPS_LOCALVIEWER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VertexProcessingCaps.Tweening\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DVTXPCAPS_TWEENING']/*\"/>\t\n            <unmanaged>D3DVTXPCAPS_TWEENING</unmanaged>\t\n            <unmanaged-short>D3DVTXPCAPS_TWEENING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VertexProcessingCaps.TexGenSphereMap\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DVTXPCAPS_TEXGEN_SPHEREMAP']/*\"/>\t\n            <unmanaged>D3DVTXPCAPS_TEXGEN_SPHEREMAP</unmanaged>\t\n            <unmanaged-short>D3DVTXPCAPS_TEXGEN_SPHEREMAP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VertexProcessingCaps.NoTexGenNonLocalViewer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DVTXPCAPS_NO_TEXGEN_NONLOCALVIEWER']/*\"/>\t\n            <unmanaged>D3DVTXPCAPS_NO_TEXGEN_NONLOCALVIEWER</unmanaged>\t\n            <unmanaged-short>D3DVTXPCAPS_NO_TEXGEN_NONLOCALVIEWER</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.VertexShaderCaps\">\n            <summary>\t\n            <p>Vertex shader caps constants. These constants are used by the VS20Caps member of <strong><see cref=\"T:SharpDX.Direct3D9.Capabilities\"/></strong>.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DVS20CAPS']/*\"/>\t\n            <msdn-id>bb172634</msdn-id>\t\n            <unmanaged>D3DVS20CAPS</unmanaged>\t\n            <unmanaged-short>D3DVS20CAPS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VertexShaderCaps.Predication\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DVS20CAPS_PREDICATION']/*\"/>\t\n            <unmanaged>D3DVS20CAPS_PREDICATION</unmanaged>\t\n            <unmanaged-short>D3DVS20CAPS_PREDICATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VertexShaderCaps.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.VertexTextureSampler\">\n            <summary>\t\n            <p>Vertex texture sampler constants.</p><p>These constants identify the texture samplers used by vertex shaders.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DVERTEXTEXTURESAMPLER']/*\"/>\t\n            <msdn-id>bb172631</msdn-id>\t\n            <unmanaged>D3DVERTEXTEXTURESAMPLER</unmanaged>\t\n            <unmanaged-short>D3DVERTEXTEXTURESAMPLER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VertexTextureSampler.Sampler0\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DVERTEXTEXTURESAMPLER0']/*\"/>\t\n            <unmanaged>D3DVERTEXTEXTURESAMPLER0</unmanaged>\t\n            <unmanaged-short>D3DVERTEXTEXTURESAMPLER0</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VertexTextureSampler.Sampler1\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DVERTEXTEXTURESAMPLER1']/*\"/>\t\n            <unmanaged>D3DVERTEXTEXTURESAMPLER1</unmanaged>\t\n            <unmanaged-short>D3DVERTEXTEXTURESAMPLER1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VertexTextureSampler.Sampler2\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DVERTEXTEXTURESAMPLER2']/*\"/>\t\n            <unmanaged>D3DVERTEXTEXTURESAMPLER2</unmanaged>\t\n            <unmanaged-short>D3DVERTEXTEXTURESAMPLER2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VertexTextureSampler.Sampler3\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DVERTEXTEXTURESAMPLER3']/*\"/>\t\n            <unmanaged>D3DVERTEXTEXTURESAMPLER3</unmanaged>\t\n            <unmanaged-short>D3DVERTEXTEXTURESAMPLER3</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VertexTextureSampler.DisplacementMapSampler\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DVERTEXTEXTURESAMPLERMAPSAMPLER']/*\"/>\t\n            <unmanaged>D3DVERTEXTEXTURESAMPLERMAPSAMPLER</unmanaged>\t\n            <unmanaged-short>D3DVERTEXTEXTURESAMPLERMAPSAMPLER</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.VideoSubType\">\n            <summary>\t\n            <p>Specifies the type of I/O bus used by the graphics adapter.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>As many as three flags can be set. Flags in the range 0x00 through 0x04 (<strong>D3DBUSTYPE_Xxx</strong>) provide the basic bus type. Flags in the range 0x10000 through 0x50000 (<strong>D3DBUSIMPL_MODIFIER_Xxx</strong>) modify the basic description. The driver sets one bus-type flag, and can set zero or one modifier flag. If the driver sets a modifier flag, it also sets the <strong><see cref=\"F:SharpDX.Direct3D9.VideoSubType.NonStandard\"/></strong> flag. Flags are combined with a bitwise <strong>OR</strong>. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DBUSTYPE']/*\"/>\t\n            <msdn-id>dd318379</msdn-id>\t\n            <unmanaged>D3DBUSTYPE</unmanaged>\t\n            <unmanaged-short>D3DBUSTYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VideoSubType.Other\">\n            <summary>\t\n            <dd> <p>Indicates a type of bus other than the types listed here.\t\n            </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DBUSTYPE_OTHER']/*\"/>\t\n            <msdn-id>dd318379</msdn-id>\t\n            <unmanaged>D3DBUSTYPE_OTHER</unmanaged>\t\n            <unmanaged-short>D3DBUSTYPE_OTHER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VideoSubType.Pci\">\n            <summary>\t\n            <dd> <p>PCI bus.\t\n            </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DBUSTYPE_PCI']/*\"/>\t\n            <msdn-id>dd318379</msdn-id>\t\n            <unmanaged>D3DBUSTYPE_PCI</unmanaged>\t\n            <unmanaged-short>D3DBUSTYPE_PCI</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VideoSubType.PciX\">\n            <summary>\t\n            <dd> <p>PCI-X bus.\t\n            </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DBUSTYPE_PCIX']/*\"/>\t\n            <msdn-id>dd318379</msdn-id>\t\n            <unmanaged>D3DBUSTYPE_PCIX</unmanaged>\t\n            <unmanaged-short>D3DBUSTYPE_PCIX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VideoSubType.PciExpress\">\n            <summary>\t\n            <dd> <p>PCI Express bus.\t\n            </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DBUSTYPE_PCIEXPRESS']/*\"/>\t\n            <msdn-id>dd318379</msdn-id>\t\n            <unmanaged>D3DBUSTYPE_PCIEXPRESS</unmanaged>\t\n            <unmanaged-short>D3DBUSTYPE_PCIEXPRESS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VideoSubType.Agp\">\n            <summary>\t\n            <dd> <p>Accelerated Graphics Port (AGP) bus.\t\n            </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DBUSTYPE_AGP']/*\"/>\t\n            <msdn-id>dd318379</msdn-id>\t\n            <unmanaged>D3DBUSTYPE_AGP</unmanaged>\t\n            <unmanaged-short>D3DBUSTYPE_AGP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VideoSubType.InsideOfChipset\">\n            <summary>\t\n            <dd> <p>The implementation for the graphics adapter is in a motherboard chipset's north bridge. This flag implies that data never goes over an expansion bus (such as PCI or AGP) when it is transferred from main memory to the graphics adapter.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DBUSIMPL_MODIFIER_INSIDE_OF_CHIPSET']/*\"/>\t\n            <msdn-id>dd318379</msdn-id>\t\n            <unmanaged>D3DBUSIMPL_MODIFIER_INSIDE_OF_CHIPSET</unmanaged>\t\n            <unmanaged-short>D3DBUSIMPL_MODIFIER_INSIDE_OF_CHIPSET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VideoSubType.TracksOnMotherBoardToChip\">\n            <summary>\t\n            <dd> <p>Indicates that the graphics adapter is connected to a motherboard chipset's north bridge by tracks on the motherboard and all of the graphics adapter's chips are soldered to the motherboard. This flag implies that data never goes over an expansion bus (such as PCI or AGP) when it is transferred from main memory to the graphics adapter.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DBUSIMPL_MODIFIER_TRACKS_ON_MOTHER_BOARD_TO_CHIP']/*\"/>\t\n            <msdn-id>dd318379</msdn-id>\t\n            <unmanaged>D3DBUSIMPL_MODIFIER_TRACKS_ON_MOTHER_BOARD_TO_CHIP</unmanaged>\t\n            <unmanaged-short>D3DBUSIMPL_MODIFIER_TRACKS_ON_MOTHER_BOARD_TO_CHIP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VideoSubType.TracksOnMotherBoardToSocket\">\n            <summary>\t\n            <dd> <p>The graphics adapter is connected to a motherboard chipset's north bridge by tracks on the motherboard, and all of the graphics adapter's chips are connected through sockets to the motherboard.\t\n            </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DBUSIMPL_MODIFIER_TRACKS_ON_MOTHER_BOARD_TO_SOCKET']/*\"/>\t\n            <msdn-id>dd318379</msdn-id>\t\n            <unmanaged>D3DBUSIMPL_MODIFIER_TRACKS_ON_MOTHER_BOARD_TO_SOCKET</unmanaged>\t\n            <unmanaged-short>D3DBUSIMPL_MODIFIER_TRACKS_ON_MOTHER_BOARD_TO_SOCKET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VideoSubType.DaughterBoardConnector\">\n            <summary>\t\n            <dd> <p>The graphics adapter is connected to the motherboard through a daughterboard connector.\t\n            </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DBUSIMPL_MODIFIER_DAUGHTER_BOARD_CONNECTOR']/*\"/>\t\n            <msdn-id>dd318379</msdn-id>\t\n            <unmanaged>D3DBUSIMPL_MODIFIER_DAUGHTER_BOARD_CONNECTOR</unmanaged>\t\n            <unmanaged-short>D3DBUSIMPL_MODIFIER_DAUGHTER_BOARD_CONNECTOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VideoSubType.DaughterBoardConnectorInsideOfNuae\">\n            <summary>\t\n            <dd> <p>The graphics adapter is connected to the motherboard through a daughterboard connector, and the graphics adapter is inside an enclosure that is not user accessible.\t\n            </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DBUSIMPL_MODIFIER_DAUGHTER_BOARD_CONNECTOR_INSIDE_OF_NUAE']/*\"/>\t\n            <msdn-id>dd318379</msdn-id>\t\n            <unmanaged>D3DBUSIMPL_MODIFIER_DAUGHTER_BOARD_CONNECTOR_INSIDE_OF_NUAE</unmanaged>\t\n            <unmanaged-short>D3DBUSIMPL_MODIFIER_DAUGHTER_BOARD_CONNECTOR_INSIDE_OF_NUAE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VideoSubType.NonStandard\">\n            <summary>\t\n            <dd> <p>One of the D3DBUSIMPL_MODIFIER_MODIFIER_Xxx flags is set.\t\n            </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DBUSIMPL_MODIFIER_NON_STANDARD']/*\"/>\t\n            <msdn-id>dd318379</msdn-id>\t\n            <unmanaged>D3DBUSIMPL_MODIFIER_NON_STANDARD</unmanaged>\t\n            <unmanaged-short>D3DBUSIMPL_MODIFIER_NON_STANDARD</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.WeldFlags\">\n            <summary>\t\n            <p>Options for welding together vertices.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='_D3DXWELDEPSILONSFLAGS']/*\"/>\t\n            <msdn-id>bb205561</msdn-id>\t\n            <unmanaged>_D3DXWELDEPSILONSFLAGS</unmanaged>\t\n            <unmanaged-short>_D3DXWELDEPSILONSFLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.WeldFlags.WeldAll\">\n            <summary>\t\n            <dd> <p>Weld together all vertices that are at the same location. Using this flag avoids an epsilon comparison between vertex components.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXWELDEPSILONS_WELDALL']/*\"/>\t\n            <msdn-id>bb205561</msdn-id>\t\n            <unmanaged>D3DXWELDEPSILONS_WELDALL</unmanaged>\t\n            <unmanaged-short>D3DXWELDEPSILONS_WELDALL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.WeldFlags.WeldPartialMatches\">\n            <summary>\t\n            <dd> <p>If a given vertex component is within epsilon, modify partially matched vertices so that both components are identical. If all components are equal, remove one of the vertices.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXWELDEPSILONS_WELDPARTIALMATCHES']/*\"/>\t\n            <msdn-id>bb205561</msdn-id>\t\n            <unmanaged>D3DXWELDEPSILONS_WELDPARTIALMATCHES</unmanaged>\t\n            <unmanaged-short>D3DXWELDEPSILONS_WELDPARTIALMATCHES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.WeldFlags.DoNotRemoveVertices\">\n            <summary>\t\n            <dd> <p>Instructs the weld to allow only modifications to vertices and not removal. This flag is valid only if <see cref=\"F:SharpDX.Direct3D9.WeldFlags.WeldPartialMatches\"/> is set. It is useful to modify vertices to be equal, but not to allow vertices to be removed.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXWELDEPSILONS_DONOTREMOVEVERTICES']/*\"/>\t\n            <msdn-id>bb205561</msdn-id>\t\n            <unmanaged>D3DXWELDEPSILONS_DONOTREMOVEVERTICES</unmanaged>\t\n            <unmanaged-short>D3DXWELDEPSILONS_DONOTREMOVEVERTICES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.WeldFlags.DoNotSplit\">\n            <summary>\t\n            <dd> <p>Instructs the weld not to split vertices that are in separate attribute groups. When the <strong><see cref=\"M:SharpDX.Direct3D9.Mesh.Optimize(System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D.Blob@,SharpDX.Direct3D9.Mesh@)\"/></strong> method is called with the <see cref=\"F:SharpDX.Direct3D9.MeshOptimizeFlags.AttributeSort\"/> flag, then the <see cref=\"F:SharpDX.Direct3D9.MeshOptimizeFlags.DoNotSplit\"/> flag will also be set. Setting this flag can slow down software vertex processing.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXWELDEPSILONS_DONOTSPLIT']/*\"/>\t\n            <msdn-id>bb205561</msdn-id>\t\n            <unmanaged>D3DXWELDEPSILONS_DONOTSPLIT</unmanaged>\t\n            <unmanaged-short>D3DXWELDEPSILONS_DONOTSPLIT</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.XFileFormat\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXF_FILEFORMAT2']/*\"/>\t\n            <unmanaged>D3DXF_FILEFORMAT2</unmanaged>\t\n            <unmanaged-short>D3DXF_FILEFORMAT2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.XFileFormat.Binary\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXF_FILEFORMAT_BINARY']/*\"/>\t\n            <unmanaged>D3DXF_FILEFORMAT_BINARY</unmanaged>\t\n            <unmanaged-short>D3DXF_FILEFORMAT_BINARY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.XFileFormat.Text\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXF_FILEFORMAT_TEXT']/*\"/>\t\n            <unmanaged>D3DXF_FILEFORMAT_TEXT</unmanaged>\t\n            <unmanaged-short>D3DXF_FILEFORMAT_TEXT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.XFileFormat.Compressed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXF_FILEFORMAT_COMPRESSED']/*\"/>\t\n            <unmanaged>D3DXF_FILEFORMAT_COMPRESSED</unmanaged>\t\n            <unmanaged-short>D3DXF_FILEFORMAT_COMPRESSED</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.ZBufferType\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DZBUFFERTYPE']/*\"/>\t\n            <unmanaged>D3DZBUFFERTYPE</unmanaged>\t\n            <unmanaged-short>D3DZBUFFERTYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ZBufferType.DontUseZBuffer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DZB_FALSE']/*\"/>\t\n            <unmanaged>D3DZB_FALSE</unmanaged>\t\n            <unmanaged-short>D3DZB_FALSE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ZBufferType.UseZBuffer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DZB_TRUE']/*\"/>\t\n            <unmanaged>D3DZB_TRUE</unmanaged>\t\n            <unmanaged-short>D3DZB_TRUE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ZBufferType.UseWBuffer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DZB_USEW']/*\"/>\t\n            <unmanaged>D3DZB_USEW</unmanaged>\t\n            <unmanaged-short>D3DZB_USEW</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.D3D9\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.Direct3D9.D3D9']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.D3D9.SdkVersion\">\n            <summary>Constant SdkVersion.</summary>\n            <unmanaged>D3D_SDK_VERSION</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3D9.Create9Ex(System.Int32,SharpDX.Direct3D9.Direct3DEx)\">\n            <summary>\t\n            <p>Creates an <strong><see cref=\"T:SharpDX.Direct3D9.Direct3DEx\"/></strong> object and returns an interface to it.</p>\t\n            </summary>\t\n            <param name=\"sDKVersion\">No documentation.</param>\t\n            <param name=\"arg1\">No documentation.</param>\t\n            <returns><ul> <li> <see cref=\"F:SharpDX.Direct3D9.ResultCode.NotAvailable\"/> if Direct3DEx features are not supported (no WDDM driver is installed) or if the <strong>SDKVersion</strong> does not match the version of the DLL. </li> <li> D3DERR_OUTOFMEMORY if out-of-memory conditions are detected when creating the enumerator object. </li> <li><see cref=\"F:SharpDX.Result.Ok\"/> if the creation of the enumerator object is successful.</li> </ul></returns>\t\n            <remarks>\t\n            <p> The <strong><see cref=\"T:SharpDX.Direct3D9.Direct3DEx\"/></strong> object is the first object that the application creates and the last object thta the application releases. Functions for enumerating and retrieving capabilities of a device are accessible through the <strong><see cref=\"T:SharpDX.Direct3D9.Direct3DEx\"/></strong> object. This enables applications to select devices without creating them. </p><p> The <strong><see cref=\"T:SharpDX.Direct3D9.Direct3DEx\"/></strong> interface supports enumeration of active display adapters and allows the creation of <strong><see cref=\"T:SharpDX.Direct3D9.Direct3DEx\"/></strong> objects. If the user dynamically adds adapters (either by adding devices to the desktop, or by hot-docking a laptop), these devices are not included in the enumeration. Creating a new <strong><see cref=\"T:SharpDX.Direct3D9.Direct3DEx\"/></strong> interface will expose the new devices. </p><p> Pass the <see cref=\"F:SharpDX.Direct3D9.D3D9.SdkVersion\"/> flag to this function to ensure that header files used in the compiled application match the version of the installed runtime DLLs. <see cref=\"F:SharpDX.Direct3D9.D3D9.SdkVersion\"/> is changed in the runtime only when a header or another code change would require rebuilding the application. If this function fails, it indicates that the versions of the header file and the runtime DLL do not match. </p><p><strong>Note</strong>??Direct3DCreate9Ex is supported only in Windows Vista, Windows Server 2008, and Windows 7.   Earlier versions of the D3D9.dll library do not include Direct3D9Ex and Direct3DCreate9Ex. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='Direct3DCreate9Ex']/*\"/>\t\n            <msdn-id>bb219676</msdn-id>\t\n            <unmanaged>HRESULT Direct3DCreate9Ex([In] unsigned int SDKVersion,[Out, Fast] IDirect3D9Ex** arg1)</unmanaged>\t\n            <unmanaged-short>Direct3DCreate9Ex</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3D9.Create9(System.Int32)\">\n            <summary>\t\n            <p>Create an <see cref=\"T:SharpDX.Direct3D9.Direct3D\"/> object and return an interface to it.</p>\t\n            </summary>\t\n            <param name=\"sDKVersion\"><dd>  <p>The value of this parameter should be <see cref=\"F:SharpDX.Direct3D9.D3D9.SdkVersion\"/>. See Remarks.</p> </dd></param>\t\n            <returns><p>If successful, this function returns a reference to an <strong><see cref=\"T:SharpDX.Direct3D9.Direct3D\"/></strong> interface; otherwise, a <strong><c>null</c></strong> reference is returned.</p></returns>\t\n            <remarks>\t\n            <p>The Direct3D object is the first Direct3D COM object that your graphical application needs to create and the last object that your application needs to release. Functions for enumerating and retrieving capabilities of a device are accessible through the Direct3D object. This enables applications to select devices without creating them.</p><p>Create an <see cref=\"T:SharpDX.Direct3D9.Direct3D\"/> object as shown here:</p><pre><code> LPDIRECT3D9 g_pD3D = <c>null</c>; if( <c>null</c> == (g_pD3D = Direct3DCreate9(<see cref=\"F:SharpDX.Direct3D9.D3D9.SdkVersion\"/>))) return E_FAIL;\t\n            </code></pre><p>The <see cref=\"T:SharpDX.Direct3D9.Direct3D\"/> interface supports enumeration of active display adapters and allows the creation of <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> objects. If the user dynamically adds adapters (either by adding devices to the desktop, or by hot-docking a laptop), those devices will not be included in the enumeration. Creating a new <see cref=\"T:SharpDX.Direct3D9.Direct3D\"/> interface will expose the new devices.</p><p><see cref=\"F:SharpDX.Direct3D9.D3D9.SdkVersion\"/> is passed to this function to ensure that the header files against which an application is compiled match the version of the runtime DLL's that are installed on the machine. <see cref=\"F:SharpDX.Direct3D9.D3D9.SdkVersion\"/> is only changed in the runtime when a header change (or other code change) would require an application to be rebuilt. If this function fails, it indicates that the header file version does not match the runtime DLL version.</p><p>For an example, see Creating a Device (Direct3D 9).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='Direct3DCreate9']/*\"/>\t\n            <msdn-id>bb219685</msdn-id>\t\n            <unmanaged>IDirect3D9* Direct3DCreate9([In] unsigned int SDKVersion)</unmanaged>\t\n            <unmanaged-short>Direct3DCreate9</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.D3DX9\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.Direct3D9.D3DX9']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.D3DX9.Version\">\n            <summary>Constant Version.</summary>\n            <unmanaged>D3DX_VERSION</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.D3DX9.SdkVersion\">\n            <summary>Constant SdkVersion.</summary>\n            <unmanaged>D3DX_SDK_VERSION</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.SetMarker(SharpDX.ColorBGRA,System.String)\">\n            <summary>\t\n            <p>Mark an instantaneous event. PIX can use this event to trigger an action.</p>\t\n            </summary>\t\n            <param name=\"col\"><dd> Event color. This is the color to display the event in the event view. </dd></param>\t\n            <param name=\"wszName\"><dd> Event name. </dd></param>\t\n            <remarks>\t\n            <p>Instantaneous user events do not bracket or group other events.  For example, when the user fires a weapon in a game, a <em>Shot Fired</em> event could be created by a <see cref=\"M:SharpDX.Direct3D9.D3DX9.SetMarker(SharpDX.ColorBGRA,System.String)\"/> call. To group together multiple events under a single, user-defined name, use <see cref=\"M:SharpDX.Direct3D9.D3DX9.BeginEvent(SharpDX.ColorBGRA,System.String)\"/> and <see cref=\"M:SharpDX.Direct3D9.D3DX9.EndEvent\"/> rather than <see cref=\"M:SharpDX.Direct3D9.D3DX9.SetMarker(SharpDX.ColorBGRA,System.String)\"/>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPERF_SetMarker']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.d3dperf_setmarker</msdn-id>\t\n            <unmanaged>void D3DPERF_SetMarker([In] D3DCOLOR col,[In] const wchar_t* wszName)</unmanaged>\t\n            <unmanaged-short>D3DPERF_SetMarker</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.SetOptions(System.Int32)\">\n            <summary>\t\n            <p>Set profiler options specified by the target program.</p>\t\n            </summary>\t\n            <param name=\"dwOptions\"><dd> User options recognizable by PIX. Set this to 1 to notify PIX that the target program does not give permission to be profiled. </dd></param>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPERF_SetOptions']/*\"/>\t\n            <msdn-id>ee416584</msdn-id>\t\n            <unmanaged>void D3DPERF_SetOptions([In] unsigned int dwOptions)</unmanaged>\t\n            <unmanaged-short>D3DPERF_SetOptions</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.GetStatus\">\n            <summary>\t\n            <p>Determine the current state of the profiler from the target program.</p>\t\n            </summary>\t\n            <returns><p>Returns a non-zero value when PIX is profiling the target program; otherwise, returns zero.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPERF_GetStatus']/*\"/>\t\n            <msdn-id>ee416581</msdn-id>\t\n            <unmanaged>unsigned int D3DPERF_GetStatus()</unmanaged>\t\n            <unmanaged-short>D3DPERF_GetStatus</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.SetRegion(SharpDX.ColorBGRA,System.String)\">\n            <summary>\t\n            <p>Mark a series of frames with the specified color and name in the PIXRun file. This function is not currently supported by PIX.</p>\t\n            </summary>\t\n            <param name=\"col\"><dd> Event color. </dd></param>\t\n            <param name=\"wszName\"><dd> Event name or marker name. </dd></param>\t\n            <remarks>\t\n            <p>To make analysis easier, the target program can use color to mark each level of a target program.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPERF_SetRegion']/*\"/>\t\n            <msdn-id>ee416585</msdn-id>\t\n            <unmanaged>void D3DPERF_SetRegion([In] D3DCOLOR col,[In] const wchar_t* wszName)</unmanaged>\t\n            <unmanaged-short>D3DPERF_SetRegion</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.EndEvent\">\n            <summary>\t\n            <p>Mark the end of a user-defined event. PIX can use this event to trigger an action.</p>\t\n            </summary>\t\n            <returns><p>The level of the hierarchy in which the event is ending.  If an error occurs, this value is negative.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPERF_EndEvent']/*\"/>\t\n            <msdn-id>ee416580</msdn-id>\t\n            <unmanaged>int D3DPERF_EndEvent()</unmanaged>\t\n            <unmanaged-short>D3DPERF_EndEvent</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.BeginEvent(SharpDX.ColorBGRA,System.String)\">\n            <summary>\t\n            <p>Marks the beginning of a user-defined event. PIX can use this event to trigger an action.</p>\t\n            </summary>\t\n            <param name=\"col\"><dd> Event color. This is the color to display the event in the  event view. </dd></param>\t\n            <param name=\"wszName\"><dd> Event name. </dd></param>\t\n            <returns><p>The zero-based level of the hierarchy that this event is starting in. If an error occurs, the return value will be negative.</p></returns>\t\n            <remarks>\t\n            <p>User-defined events group together other events in a way that is meaningful to the target program so that they can be better represented in performance profiling tools. For example, a <em>Draw Spaceship</em> event might bracket a number of Direct3D calls that handle drawing a spaceship in a game. Events can be nested.</p> <p>Each <see cref=\"M:SharpDX.Direct3D9.D3DX9.BeginEvent(SharpDX.ColorBGRA,System.String)\"/> call should have a matching <see cref=\"M:SharpDX.Direct3D9.D3DX9.EndEvent\"/> call. Instantaneous events (which do not bracket other events) should be labeled by using <see cref=\"M:SharpDX.Direct3D9.D3DX9.SetMarker(SharpDX.ColorBGRA,System.String)\"/> rather than by <see cref=\"M:SharpDX.Direct3D9.D3DX9.BeginEvent(SharpDX.ColorBGRA,System.String)\"/> and <see cref=\"M:SharpDX.Direct3D9.D3DX9.EndEvent\"/>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPERF_BeginEvent']/*\"/>\t\n            <msdn-id>ee416579</msdn-id>\t\n            <unmanaged>int D3DPERF_BeginEvent([In] D3DCOLOR col,[In] const wchar_t* wszName)</unmanaged>\t\n            <unmanaged-short>D3DPERF_BeginEvent</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.QueryRepeatFrame\">\n            <summary>\t\n            <p>Determine whether a performance profiler is requesting that the current frame be resubmitted to Direct3D for performance analysis. This function is not currently supported by PIX.</p>\t\n            </summary>\t\n            <returns><p>If the return value is TRUE, the caller should repeat the same sequence of calls. If <see cref=\"F:SharpDX.Result.False\"/>, the caller should continue.</p></returns>\t\n            <remarks>\t\n            <p>The function should be called immediately after <see cref=\"M:SharpDX.Direct3D9.Device.Present\"/> is called.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPERF_QueryRepeatFrame']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.d3dperf_queryrepeatframe</msdn-id>\t\n            <unmanaged>BOOL D3DPERF_QueryRepeatFrame()</unmanaged>\t\n            <unmanaged-short>D3DPERF_QueryRepeatFrame</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.FrameAppendChild(SharpDX.Direct3D9.Frame@,SharpDX.Direct3D9.Frame@)\">\n            <summary>\t\n            <p>Adds a child frame to a frame.</p>\t\n            </summary>\t\n            <param name=\"frameParentRef\"><dd>  <p>Pointer to the parent node.</p> </dd></param>\t\n            <param name=\"frameChildRef\"><dd>  <p>Pointer to the child node.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following values: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXFrameAppendChild']/*\"/>\t\n            <msdn-id>Bb172846</msdn-id>\t\n            <unmanaged>HRESULT D3DXFrameAppendChild([In] D3DXFRAME* pFrameParent,[In] const D3DXFRAME* pFrameChild)</unmanaged>\t\n            <unmanaged-short>D3DXFrameAppendChild</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.LoadMeshHierarchyFromXW(System.String,System.Int32,SharpDX.Direct3D9.Device,SharpDX.Direct3D9.IAllocateHierarchy,SharpDX.Direct3D9.ILoadUserData,SharpDX.Direct3D9.Frame@,SharpDX.Direct3D9.AnimationController@)\">\n            <summary>\t\n            <p>Loads the first frame hierarchy from a .x file.</p>\t\n            </summary>\t\n            <param name=\"filename\"><dd>  <p>Pointer to a string that specifies the filename. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the string data type resolves to LPCSTR. See Remarks.</p> </dd></param>\t\n            <param name=\"meshOptions\"><dd>  <p>Combination of one or more flags from the <strong>D3DXMESH</strong> enumeration that specify creation options for the mesh.</p> </dd></param>\t\n            <param name=\"d3DDeviceRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface, the device object associated with the mesh.</p> </dd></param>\t\n            <param name=\"allocRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.IAllocateHierarchy\"/></strong> interface.</p> </dd></param>\t\n            <param name=\"userDataLoaderRef\"><dd>  <p>Application provided interface that allows loading of user data. See <strong><see cref=\"T:SharpDX.Direct3D9.ILoadUserData\"/></strong>.</p> </dd></param>\t\n            <param name=\"frameHierarchyOut\"><dd>  <p>Returns a reference to the loaded frame hierarchy. See <strong><see cref=\"T:SharpDX.Direct3D9.Frame\"/></strong>.</p> </dd></param>\t\n            <param name=\"animControllerOut\"><dd>  <p>Returns a reference to the animation controller corresponding to animation in the .x file. This is created with default tracks and events. See <strong><see cref=\"T:SharpDX.Direct3D9.AnimationController\"/></strong>.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following values: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>The compiler setting also determines the function version. If Unicode is defined, the function call resolves to <see cref=\"M:SharpDX.Direct3D9.D3DX9.LoadMeshHierarchyFromXW(System.String,System.Int32,SharpDX.Direct3D9.Device,SharpDX.Direct3D9.IAllocateHierarchy,SharpDX.Direct3D9.ILoadUserData,SharpDX.Direct3D9.Frame@,SharpDX.Direct3D9.AnimationController@)\"/>. Otherwise, the function call resolves to D3DXLoadMeshHierarchyFromXA.</p><p>All the meshes in the file will be collapsed into one output mesh. If the file contains a frame hierarchy, all the transformations will be applied to the mesh.</p><p><strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.LoadMeshHierarchyFromXW(System.String,System.Int32,SharpDX.Direct3D9.Device,SharpDX.Direct3D9.IAllocateHierarchy,SharpDX.Direct3D9.ILoadUserData,SharpDX.Direct3D9.Frame@,SharpDX.Direct3D9.AnimationController@)\"/></strong> loads the animation data and frame hierarchy from a .x file. It scans the .x file and builds a frame hierarchy and animation controller according to the <strong><see cref=\"T:SharpDX.Direct3D9.IAllocateHierarchy\"/></strong>-derived object passed to it through pAlloc. Loading the data requires several steps as follows:</p><ol> <li>Derive <strong><see cref=\"T:SharpDX.Direct3D9.IAllocateHierarchy\"/></strong>, implementing each method.  This controls how frames and meshes are allocated and freed.</li> <li>Derive <strong><see cref=\"T:SharpDX.Direct3D9.ILoadUserData\"/></strong>, implementing each method. If your .x file has no embedded user-defined data, or if you do not need it, you can skip this part.</li> <li>Create an object of your <strong><see cref=\"T:SharpDX.Direct3D9.IAllocateHierarchy\"/></strong> class, and optionally of your LoadUserData class. You do not need to call any methods of these objects yourself.</li> <li>Call <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.LoadMeshHierarchyFromXW(System.String,System.Int32,SharpDX.Direct3D9.Device,SharpDX.Direct3D9.IAllocateHierarchy,SharpDX.Direct3D9.ILoadUserData,SharpDX.Direct3D9.Frame@,SharpDX.Direct3D9.AnimationController@)\"/></strong>, passing in your <strong><see cref=\"T:SharpDX.Direct3D9.IAllocateHierarchy\"/></strong> object and your <strong><see cref=\"T:SharpDX.Direct3D9.ILoadUserData\"/></strong> object (or <strong><c>null</c></strong>) to create the frame hierarchy and animation controller.  All the animation sets and frames are automatically registered to the animation controller.</li> </ol><p>During the load, <strong>CreateFrame</strong> and <strong>LoadFrameChildData</strong> are called back on each frame to control loading and allocation of the frame.  The application defines these methods to control how frames are stored.  <strong>CreateMeshContainer</strong> and <strong>LoadMeshChildData</strong> are called back on each mesh object to control loading and allocation of mesh objects.  <strong>LoadTopLevelData</strong> is called back for each top level object that doesn't get loaded by the other methods.</p><p>To free this data, call ID3DXAnimationController::Release to free the animation sets, and <strong>D3DXFRAMEDestroy</strong>, passing in the root node of the frame hierarchy and an object of your derived <strong><see cref=\"T:SharpDX.Direct3D9.IAllocateHierarchy\"/></strong> class.  <strong>DestroyFrame</strong> and <strong>DestroyMeshContainer</strong> will each be called for every frame and mesh object in the frame hierarchy.  Your implementation of <strong>DestroyFrame</strong> should release everything allocated by <strong>CreateFrame</strong>, and likewise for the mesh container methods.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXLoadMeshHierarchyFromXW']/*\"/>\t\n            <msdn-id>bb172894</msdn-id>\t\n            <unmanaged>HRESULT D3DXLoadMeshHierarchyFromXW([In] const wchar_t* Filename,[In] unsigned int MeshOptions,[In] IDirect3DDevice9* pD3DDevice,[In] ID3DXAllocateHierarchy* pAlloc,[In] ID3DXLoadUserData* pUserDataLoader,[In] D3DXFRAME** ppFrameHierarchy,[In] ID3DXAnimationController** ppAnimController)</unmanaged>\t\n            <unmanaged-short>D3DXLoadMeshHierarchyFromXW</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.FrameRegisterNamedMatrices(SharpDX.Direct3D9.Frame@,SharpDX.Direct3D9.AnimationController)\">\n            <summary>\t\n            <p>Given a frame hierarchy, registers all the named matrices in the animation mixer.</p>\t\n            </summary>\t\n            <param name=\"frameRootRef\"><dd>  <p>The top level node in the frame hierarchy.</p> </dd></param>\t\n            <param name=\"animControllerRef\"><dd>  <p>Pointer to the animation controller object.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following values: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXFrameRegisterNamedMatrices']/*\"/>\t\n            <msdn-id>bb172851</msdn-id>\t\n            <unmanaged>HRESULT D3DXFrameRegisterNamedMatrices([In] D3DXFRAME* pFrameRoot,[In] ID3DXAnimationController* pAnimController)</unmanaged>\t\n            <unmanaged-short>D3DXFrameRegisterNamedMatrices</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.LoadMeshHierarchyFromXInMemory(System.IntPtr,System.Int32,System.Int32,SharpDX.Direct3D9.Device,SharpDX.Direct3D9.IAllocateHierarchy,SharpDX.Direct3D9.ILoadUserData,SharpDX.Direct3D9.Frame@,SharpDX.Direct3D9.AnimationController@)\">\n            <summary>\t\n            <p>Loads the first frame hierarchy from a .x file.</p>\t\n            </summary>\t\n            <param name=\"memory\"><dd>  <p>Pointer to a buffer that contains the mesh hierarchy.</p> </dd></param>\t\n            <param name=\"sizeOfMemory\"><dd>  <p>Size of the pMemory buffer, in bytes.</p> </dd></param>\t\n            <param name=\"meshOptions\"><dd>  <p>Combination of one or more flags from the <strong>D3DXMESH</strong> enumeration that specify creation options for the mesh.</p> </dd></param>\t\n            <param name=\"d3DDeviceRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface, the device object associated with the mesh.</p> </dd></param>\t\n            <param name=\"allocRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.IAllocateHierarchy\"/></strong> interface.</p> </dd></param>\t\n            <param name=\"userDataLoaderRef\"><dd>  <p>Application provided interface that allows loading of user data. See <strong><see cref=\"T:SharpDX.Direct3D9.ILoadUserData\"/></strong>.</p> </dd></param>\t\n            <param name=\"frameHierarchyOut\"><dd>  <p>Returns a reference to the loaded frame hierarchy. See <strong><see cref=\"T:SharpDX.Direct3D9.Frame\"/></strong>.</p> </dd></param>\t\n            <param name=\"animControllerOut\"><dd>  <p>Returns a reference to the animation controller corresponding to animation in the .x file. This is created with default tracks and events. See <strong><see cref=\"T:SharpDX.Direct3D9.AnimationController\"/></strong>.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following values: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>All the meshes in the file will be collapsed into one output mesh. If the file contains a frame hierarchy, all the transformations will be applied to the mesh.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXLoadMeshHierarchyFromXInMemory']/*\"/>\t\n            <msdn-id>bb172895</msdn-id>\t\n            <unmanaged>HRESULT D3DXLoadMeshHierarchyFromXInMemory([In] const void* Memory,[In] unsigned int SizeOfMemory,[In] unsigned int MeshOptions,[In] IDirect3DDevice9* pD3DDevice,[In] ID3DXAllocateHierarchy* pAlloc,[In] ID3DXLoadUserData* pUserDataLoader,[In] D3DXFRAME** ppFrameHierarchy,[In] ID3DXAnimationController** ppAnimController)</unmanaged>\t\n            <unmanaged-short>D3DXLoadMeshHierarchyFromXInMemory</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.CreateCompressedAnimationSet(System.String,System.Double,SharpDX.Direct3D9.PlaybackType,SharpDX.Direct3D.Blob,System.Int32,SharpDX.Direct3D9.CallbackKey,SharpDX.Direct3D9.CompressedAnimationSet@)\">\n            <summary>\t\n            <p>Creates a <strong><see cref=\"T:SharpDX.Direct3D9.CompressedAnimationSet\"/></strong> key framed animation set interface that stores key frame data in a compressed format.</p>\t\n            </summary>\t\n            <param name=\"nameRef\">No documentation.</param>\t\n            <param name=\"ticksPerSecond\">No documentation.</param>\t\n            <param name=\"playback\">No documentation.</param>\t\n            <param name=\"compressedDataRef\">No documentation.</param>\t\n            <param name=\"numCallbackKeys\">No documentation.</param>\t\n            <param name=\"callbackKeysRef\">No documentation.</param>\t\n            <param name=\"animationSetOut\">No documentation.</param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the function fails, the return value can be one of the following values: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCreateCompressedAnimationSet']/*\"/>\t\n            <msdn-id>bb172754</msdn-id>\t\n            <unmanaged>HRESULT D3DXCreateCompressedAnimationSet([In] const char* pName,[In] double TicksPerSecond,[In] D3DXPLAYBACK_TYPE Playback,[In] ID3DXBuffer* pCompressedData,[In] unsigned int NumCallbackKeys,[In] const D3DXKEY_CALLBACK* pCallbackKeys,[In] ID3DXCompressedAnimationSet** ppAnimationSet)</unmanaged>\t\n            <unmanaged-short>D3DXCreateCompressedAnimationSet</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.SaveMeshHierarchyToFileW(System.String,System.Int32,SharpDX.Direct3D9.Frame@,SharpDX.Direct3D9.AnimationController,SharpDX.Direct3D9.ISaveUserData)\">\n            <summary>\t\n            <p>Creates a .x file and saves the mesh hierarchy and corresponding animations in it.</p>\t\n            </summary>\t\n            <param name=\"filename\"><dd>  <p>Pointer to a string that specifies the name of the .x file identifying the saved mesh. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the string data type resolves to LPCSTR. See Remarks.</p> </dd></param>\t\n            <param name=\"xFormat\"><dd>  <p>Format of the .x file (text or binary, compressed or not). See <see cref=\"T:SharpDX.Direct3D9.XFileFormat\"/>. <see cref=\"F:SharpDX.Direct3D9.XFileFormat.Compressed\"/> can be combined (using a logical OR) with either the <see cref=\"F:SharpDX.Direct3D9.XFileFormat.Binary\"/> or <see cref=\"F:SharpDX.Direct3D9.XFileFormat.Text\"/> flags to reduce the output file size.</p> </dd></param>\t\n            <param name=\"frameRootRef\"><dd>  <p>Root node of the hierarchy to be saved. See <strong><see cref=\"T:SharpDX.Direct3D9.Frame\"/></strong>.</p> </dd></param>\t\n            <param name=\"animControllerRef\"><dd>  <p>Animation controller that has animation sets to be stored. See <strong><see cref=\"T:SharpDX.Direct3D9.AnimationController\"/></strong>.</p> </dd></param>\t\n            <param name=\"userDataSaverRef\"><dd>  <p>Application-provided interface that allows saving of user data. See <strong><see cref=\"T:SharpDX.Direct3D9.ISaveUserData\"/></strong>.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>The compiler setting also determines the function version. If Unicode is defined, the function call resolves to <see cref=\"M:SharpDX.Direct3D9.D3DX9.SaveMeshHierarchyToFileW(System.String,System.Int32,SharpDX.Direct3D9.Frame@,SharpDX.Direct3D9.AnimationController,SharpDX.Direct3D9.ISaveUserData)\"/>. Otherwise, the function call resolves to D3DXSaveMeshHierarchyToFileA.</p><p>This function does not save compressed animation sets.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXSaveMeshHierarchyToFileW']/*\"/>\t\n            <msdn-id>bb205427</msdn-id>\t\n            <unmanaged>HRESULT D3DXSaveMeshHierarchyToFileW([In] const wchar_t* Filename,[In] unsigned int XFormat,[In] const D3DXFRAME* pFrameRoot,[In] ID3DXAnimationController* pAnimController,[In] ID3DXSaveUserData* pUserDataSaver)</unmanaged>\t\n            <unmanaged-short>D3DXSaveMeshHierarchyToFileW</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.FrameCalculateBoundingSphere(SharpDX.Direct3D9.Frame@,SharpDX.Vector3,System.Single)\">\n            <summary>\t\n            <p>Computes the bounding sphere of all the meshes in the frame hierarchy.</p>\t\n            </summary>\t\n            <param name=\"frameRootRef\"><dd>  <p>Pointer to the root node.</p> </dd></param>\t\n            <param name=\"objectCenterRef\"><dd>  <p>Returns the center of the bounding sphere.</p> </dd></param>\t\n            <param name=\"objectRadiusRef\"><dd>  <p>Returns the radius of the bounding sphere.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following values: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXFrameCalculateBoundingSphere']/*\"/>\t\n            <msdn-id>bb172847</msdn-id>\t\n            <unmanaged>HRESULT D3DXFrameCalculateBoundingSphere([In] const D3DXFRAME* pFrameRoot,[In] D3DXVECTOR3* pObjectCenter,[In] float* pObjectRadius)</unmanaged>\t\n            <unmanaged-short>D3DXFrameCalculateBoundingSphere</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.CreateAnimationController(System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.AnimationController@)\">\n            <summary>\t\n            <p>Creates an animation controller object.</p>\t\n            </summary>\t\n            <param name=\"maxNumMatrices\"><dd>  <p>Maximum number of animation outputs the controller can support.</p> </dd></param>\t\n            <param name=\"maxNumAnimationSets\"><dd>  <p>Maximum number of animation sets that can be mixed.</p> </dd></param>\t\n            <param name=\"maxNumTracks\"><dd>  <p>Maximum number of animation sets that can be mixed simultaneously.</p> </dd></param>\t\n            <param name=\"maxNumEvents\"><dd>  <p>Maximum number of outstanding events that the controller will support.</p> </dd></param>\t\n            <param name=\"animControllerOut\"><dd>  <p>Pointer to the animation controller object created. See <strong><see cref=\"T:SharpDX.Direct3D9.AnimationController\"/></strong>.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following values: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>An animation controller controls an animation mixer. The controller adds methods to modify blending parameters over time to enable smooth transitions.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCreateAnimationController']/*\"/>\t\n            <msdn-id>bb172751</msdn-id>\t\n            <unmanaged>HRESULT D3DXCreateAnimationController([In] unsigned int MaxNumMatrices,[In] unsigned int MaxNumAnimationSets,[In] unsigned int MaxNumTracks,[In] unsigned int MaxNumEvents,[In] ID3DXAnimationController** ppAnimController)</unmanaged>\t\n            <unmanaged-short>D3DXCreateAnimationController</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.FrameFind(SharpDX.Direct3D9.Frame@,System.String)\">\n            <summary>\t\n            <p>Finds the child frame of a root frame.</p>\t\n            </summary>\t\n            <param name=\"frameRootRef\"><dd>  <p>Pointer to the root frame. See <strong><see cref=\"T:SharpDX.Direct3D9.Frame\"/></strong>.</p> </dd></param>\t\n            <param name=\"name\"><dd>  <p>Name of the child frame to find.</p> </dd></param>\t\n            <returns><p>Returns the child frame if it is found, or <strong><c>null</c></strong> otherwise. See <strong><see cref=\"T:SharpDX.Direct3D9.Frame\"/></strong>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXFrameFind']/*\"/>\t\n            <msdn-id>bb172849</msdn-id>\t\n            <unmanaged>D3DXFRAME* D3DXFrameFind([In] const D3DXFRAME* pFrameRoot,[In] const char* Name)</unmanaged>\t\n            <unmanaged-short>D3DXFrameFind</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.CreateKeyframedAnimationSet(System.String,System.Double,SharpDX.Direct3D9.PlaybackType,System.Int32,System.Int32,SharpDX.Direct3D9.CallbackKey,SharpDX.Direct3D9.KeyframedAnimationSet@)\">\n            <summary>\t\n            <p>Creates a <strong><see cref=\"T:SharpDX.Direct3D9.KeyframedAnimationSet\"/></strong> key framed animation set interface.</p>\t\n            </summary>\t\n            <param name=\"nameRef\">No documentation.</param>\t\n            <param name=\"ticksPerSecond\">No documentation.</param>\t\n            <param name=\"playback\">No documentation.</param>\t\n            <param name=\"numAnimations\">No documentation.</param>\t\n            <param name=\"numCallbackKeys\">No documentation.</param>\t\n            <param name=\"callbackKeysRef\">No documentation.</param>\t\n            <param name=\"animationSetOut\">No documentation.</param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the function fails, the return value can be one of the following values: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCreateKeyframedAnimationSet']/*\"/>\t\n            <msdn-id>Bb172776</msdn-id>\t\n            <unmanaged>HRESULT D3DXCreateKeyframedAnimationSet([In] const char* pName,[In] double TicksPerSecond,[In] D3DXPLAYBACK_TYPE Playback,[In] unsigned int NumAnimations,[In] unsigned int NumCallbackKeys,[In] const D3DXKEY_CALLBACK* pCallbackKeys,[In] ID3DXKeyframedAnimationSet** ppAnimationSet)</unmanaged>\t\n            <unmanaged-short>D3DXCreateKeyframedAnimationSet</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.FrameDestroy(SharpDX.Direct3D9.Frame@,SharpDX.Direct3D9.IAllocateHierarchy)\">\n            <summary>\t\n            <p>Destroys the subtree of frames under the root, including the root.</p>\t\n            </summary>\t\n            <param name=\"frameRootRef\"><dd>  <p>Pointer to the root node.</p> </dd></param>\t\n            <param name=\"allocRef\"><dd>  <p>Allocation interface used to deallocate nodes of the frame hierarchy.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following values: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXFrameDestroy']/*\"/>\t\n            <msdn-id>bb172848</msdn-id>\t\n            <unmanaged>HRESULT D3DXFrameDestroy([In] D3DXFRAME* pFrameRoot,[In] ID3DXAllocateHierarchy* pAlloc)</unmanaged>\t\n            <unmanaged-short>D3DXFrameDestroy</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.FrameNumNamedMatrices(SharpDX.Direct3D9.Frame@)\">\n            <summary>\t\n            <p>Counts number of frames in a subtree that have non-null names.</p>\t\n            </summary>\t\n            <param name=\"frameRootRef\"><dd>  <p>Pointer to the root node of the subtree.</p> </dd></param>\t\n            <returns><p>Returns the frame count.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXFrameNumNamedMatrices']/*\"/>\t\n            <msdn-id>bb172850</msdn-id>\t\n            <unmanaged>unsigned int D3DXFrameNumNamedMatrices([In] const D3DXFRAME* pFrameRoot)</unmanaged>\t\n            <unmanaged-short>D3DXFrameNumNamedMatrices</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.CreateRenderToEnvMap(SharpDX.Direct3D9.Device,System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Bool,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.RenderToEnvironmentMap@)\">\n            <summary>\t\n            <p>Creates a render environment map.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface, which is the device to associate with the render surface.</p> </dd></param>\t\n            <param name=\"size\"><dd>  <p>Size of the render surface.</p> </dd></param>\t\n            <param name=\"mipLevels\"><dd>  <p>The number of mipmap levels.</p> </dd></param>\t\n            <param name=\"format\"><dd>  <p>Member of the <see cref=\"T:SharpDX.Direct3D9.Format\"/> enumerated type that describes the pixel format of the environment map.</p> </dd></param>\t\n            <param name=\"depthStencil\"><dd>  <p>If <strong>TRUE</strong>, the render surface supports a depth-stencil surface. Otherwise, this member is set to <strong><see cref=\"F:SharpDX.Result.False\"/></strong>.</p> </dd></param>\t\n            <param name=\"depthStencilFormat\"><dd>  <p>If DepthStencil is set to <strong>TRUE</strong>, this parameter is a member of the <see cref=\"T:SharpDX.Direct3D9.Format\"/> enumerated type that describes the depth-stencil format of the environment map.</p> </dd></param>\t\n            <param name=\"renderToEnvMapOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D9.RenderToEnvironmentMap\"/></strong> interface that represents the created render environment map.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCreateRenderToEnvMap']/*\"/>\t\n            <msdn-id>bb172790</msdn-id>\t\n            <unmanaged>HRESULT D3DXCreateRenderToEnvMap([In] IDirect3DDevice9* pDevice,[In] unsigned int Size,[In] unsigned int MipLevels,[In] D3DFORMAT Format,[In] BOOL DepthStencil,[In] D3DFORMAT DepthStencilFormat,[In] ID3DXRenderToEnvMap** ppRenderToEnvMap)</unmanaged>\t\n            <unmanaged-short>D3DXCreateRenderToEnvMap</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.GetDriverLevel(SharpDX.Direct3D9.Device)\">\n            <summary>\t\n            <p>Returns the driver level.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface representing the device.</p> </dd></param>\t\n            <returns><p>The driver level. See remarks.</p></returns>\t\n            <remarks>\t\n            <p>This method returns the driver version, which is one of the following:</p><ul> <li>700 - Direct3D 7 level driver</li> <li>800 - Direct3D 8 level driver</li> <li>900 - Direct3D 9 level driver</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXGetDriverLevel']/*\"/>\t\n            <msdn-id>bb172865</msdn-id>\t\n            <unmanaged>unsigned int D3DXGetDriverLevel([In] IDirect3DDevice9* pDevice)</unmanaged>\t\n            <unmanaged-short>D3DXGetDriverLevel</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.CreateFont(SharpDX.Direct3D9.Device,System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Bool,System.Int32,System.Int32,System.Int32,System.Int32,System.String,SharpDX.Direct3D9.Font)\">\n            <summary>\t\n            <p>Creates a font object for a device and font.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface, the device to be associated with the font object.</p> </dd></param>\t\n            <param name=\"height\"><dd>  <p>The height of the characters in logical units.</p> </dd></param>\t\n            <param name=\"width\"><dd>  <p>The width of the characters in logical units.</p> </dd></param>\t\n            <param name=\"weight\"><dd>  <p>Typeface weight. One example is bold.</p> </dd></param>\t\n            <param name=\"mipLevels\"><dd>  <p>The number of mipmap levels.</p> </dd></param>\t\n            <param name=\"italic\"><dd>  <p>True for italic font, false otherwise.</p> </dd></param>\t\n            <param name=\"charSet\"><dd>  <p>The character set of the font.</p> </dd></param>\t\n            <param name=\"outputPrecision\"><dd>  <p>Specifies how Windows should attempt to match the desired font sizes and characteristics with actual fonts. Use OUT_TT_ONLY_PRECIS for instance, to ensure that you always get a TrueType font.</p> </dd></param>\t\n            <param name=\"quality\"><dd>  <p>Specifies how Windows should match the desired font with a real font. It applies to raster fonts only and should not affect TrueType fonts.</p> </dd></param>\t\n            <param name=\"pitchAndFamily\"><dd>  <p>Pitch and family index.</p> </dd></param>\t\n            <param name=\"faceNameRef\"><dd>  <p>String containing the typeface name. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the string data type resolves to LPCSTR. See Remarks. </p> </dd></param>\t\n            <param name=\"fontOut\"><dd>  <p>Returns a reference to an <strong><see cref=\"T:SharpDX.Direct3D9.Font\"/></strong> interface, representing the created font object.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>The creation of an <see cref=\"T:SharpDX.Direct3D9.Font\"/> object requires that the device supports 32-bit color.</p><p>The compiler setting also determines the function version. If Unicode is defined, the function call resolves to <see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateFont(SharpDX.Direct3D9.Device,System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Bool,System.Int32,System.Int32,System.Int32,System.Int32,System.String,SharpDX.Direct3D9.Font)\"/>. Otherwise, the function call resolves to D3DXCreateFontA because ANSI strings are being used.</p><p>If you want more information about font parameters, see The Logical Font.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCreateFontW']/*\"/>\t\n            <msdn-id>bb172773</msdn-id>\t\n            <unmanaged>HRESULT D3DXCreateFontW([In] IDirect3DDevice9* pDevice,[In] int Height,[In] unsigned int Width,[In] unsigned int Weight,[In] unsigned int MipLevels,[In] BOOL Italic,[In] unsigned int CharSet,[In] unsigned int OutputPrecision,[In] unsigned int Quality,[In] unsigned int PitchAndFamily,[In] const wchar_t* pFaceName,[Out, Fast] ID3DXFont** ppFont)</unmanaged>\t\n            <unmanaged-short>D3DXCreateFontW</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.CreateRenderToSurface(SharpDX.Direct3D9.Device,System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Bool,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.RenderToSurface)\">\n            <summary>\t\n            <p>Creates a render surface.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface, the device to be associated with the render surface.</p> </dd></param>\t\n            <param name=\"width\"><dd>  <p>Width of the render surface, in pixels.</p> </dd></param>\t\n            <param name=\"height\"><dd>  <p>Height of the render surface, in pixels.</p> </dd></param>\t\n            <param name=\"format\"><dd>  <p>Member of the <see cref=\"T:SharpDX.Direct3D9.Format\"/> enumerated type, describing the pixel format of the render surface.</p> </dd></param>\t\n            <param name=\"depthStencil\"><dd>  <p>If <strong>TRUE</strong>, the render surface supports a depth-stencil surface. Otherwise, this member is set to <strong><see cref=\"F:SharpDX.Result.False\"/></strong>. This function will create a new depth buffer.</p> </dd></param>\t\n            <param name=\"depthStencilFormat\"><dd>  <p>If  <em>DepthStencil</em> is set to <strong>TRUE</strong>, this parameter is a member of the <see cref=\"T:SharpDX.Direct3D9.Format\"/> enumerated type, describing the depth-stencil format of the render surface.</p> </dd></param>\t\n            <param name=\"renderToSurfaceOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D9.RenderToSurface\"/></strong> interface, representing the created render surface.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCreateRenderToSurface']/*\"/>\t\n            <msdn-id>bb172791</msdn-id>\t\n            <unmanaged>HRESULT D3DXCreateRenderToSurface([In] IDirect3DDevice9* pDevice,[In] unsigned int Width,[In] unsigned int Height,[In] D3DFORMAT Format,[In] BOOL DepthStencil,[In] D3DFORMAT DepthStencilFormat,[Out, Fast] ID3DXRenderToSurface** ppRenderToSurface)</unmanaged>\t\n            <unmanaged-short>D3DXCreateRenderToSurface</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.CreateSprite(SharpDX.Direct3D9.Device,SharpDX.Direct3D9.Sprite)\">\n            <summary>\t\n            <p>Creates a sprite object which is associated with a particular device. Sprite objects are used to draw 2D images to the screen.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface, the device to be associated with the sprite.</p> </dd></param>\t\n            <param name=\"spriteOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D9.Sprite\"/></strong> interface. This interface allows the user to access sprite functions. </p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>.If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>This interface can be used to draw two dimensional images in screen space of the associated device.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCreateSprite']/*\"/>\t\n            <msdn-id>bb172797</msdn-id>\t\n            <unmanaged>HRESULT D3DXCreateSprite([In] IDirect3DDevice9* pDevice,[Out, Fast] ID3DXSprite** ppSprite)</unmanaged>\t\n            <unmanaged-short>D3DXCreateSprite</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.CreateFontIndirect(SharpDX.Direct3D9.Device,SharpDX.Direct3D9.FontDescription@,SharpDX.Direct3D9.Font)\">\n            <summary>\t\n            <p>Creates a font object indirectly for both a device and a font.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface, the device to be associated with the font object.</p> </dd></param>\t\n            <param name=\"descRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.FontDescription\"/></strong> structure, describing the attributes of the font object to create. If the compiler settings require Unicode, the data type <see cref=\"T:SharpDX.Direct3D9.FontDescription\"/> resolves to <see cref=\"T:SharpDX.Direct3D9.FontDescription\"/>; otherwise, the data type resolves to D3DXFONT_DESCA. See Remarks.</p> </dd></param>\t\n            <param name=\"fontOut\"><dd>  <p>Returns a reference to an <strong><see cref=\"T:SharpDX.Direct3D9.Font\"/></strong> interface, representing the created font object.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>The compiler setting also determines the function version. If Unicode is defined, the function call resolves to <see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateFontIndirect(SharpDX.Direct3D9.Device,SharpDX.Direct3D9.FontDescription@,SharpDX.Direct3D9.Font)\"/>. Otherwise, the function call resolves to D3DXCreateFontIndirectA because ANSI strings are being used.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCreateFontIndirectW']/*\"/>\t\n            <msdn-id>bb172774</msdn-id>\t\n            <unmanaged>HRESULT D3DXCreateFontIndirectW([In] IDirect3DDevice9* pDevice,[In] const D3DXFONT_DESCW* pDesc,[Out, Fast] ID3DXFont** ppFont)</unmanaged>\t\n            <unmanaged-short>D3DXCreateFontIndirectW</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.CreateLine(SharpDX.Direct3D9.Device,SharpDX.Direct3D9.Line)\">\n            <summary>\t\n            <p>Uses a left-handed coordinate system to create a line.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface, representing the device associated with the created box mesh.</p> </dd></param>\t\n            <param name=\"lineOut\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Line\"/></strong> interface.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>This function creates a mesh with the <see cref=\"F:SharpDX.Direct3D9.MeshFlags.Managed\"/> creation option and <see cref=\"F:SharpDX.Direct3D9.VertexFormat.Position\"/> | <see cref=\"F:SharpDX.Direct3D9.VertexFormat.Normal\"/> Flexible Vertex Format (FVF).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCreateLine']/*\"/>\t\n            <msdn-id>bb172778</msdn-id>\t\n            <unmanaged>HRESULT D3DXCreateLine([In] IDirect3DDevice9* pDevice,[Out, Fast] ID3DXLine** ppLine)</unmanaged>\t\n            <unmanaged-short>D3DXCreateLine</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.DebugMute(SharpDX.Bool)\">\n            <summary>\t\n            <p>Turns on or off all D3DX debug output.</p>\t\n            </summary>\t\n            <param name=\"mute\"><dd>  <p>If <strong>TRUE</strong>, debugger output is halted; if <strong><see cref=\"F:SharpDX.Result.False\"/></strong>, debug output is enabled.</p> </dd></param>\t\n            <returns><p>Returns the previous value of Mute.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXDebugMute']/*\"/>\t\n            <msdn-id>bb172817</msdn-id>\t\n            <unmanaged>BOOL D3DXDebugMute([In] BOOL Mute)</unmanaged>\t\n            <unmanaged-short>D3DXDebugMute</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.CheckVersion(System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Verify that the version of D3DX you compiled with is the version that you are running.</p>\t\n            </summary>\t\n            <param name=\"d3DSdkVersion\"><dd>  <p>Use <see cref=\"F:SharpDX.Direct3D9.D3D9.SdkVersion\"/>. See remarks.</p> </dd></param>\t\n            <param name=\"d3DXSdkVersion\"><dd>  <p>Use <see cref=\"F:SharpDX.Direct3D9.D3DX9.SdkVersion\"/>. See remarks.</p> </dd></param>\t\n            <returns><p>Returns <strong>TRUE</strong> if the version of D3DX you compiled against is the version you are running with; otherwise, <strong><see cref=\"F:SharpDX.Result.False\"/></strong> is returned.</p></returns>\t\n            <remarks>\t\n            <p>Use this function during the initialization of your application like this:</p><pre><code> <see cref=\"T:SharpDX.Result\"/> CD3DXMyApplication::Initialize(<see cref=\"T:System.IntPtr\"/> hInstance,  LPCSTR szWindowName, LPCSTR szClassName, UINT uWidth, UINT uHeight)\t\n            { <see cref=\"T:SharpDX.Result\"/> hr; if (!<see cref=\"M:SharpDX.Direct3D9.D3DX9.CheckVersion(System.Int32,System.Int32)\"/>(<see cref=\"F:SharpDX.Direct3D9.D3D9.SdkVersion\"/>, <see cref=\"F:SharpDX.Direct3D9.D3DX9.SdkVersion\"/>)) return E_FAIL; ...\t\n            }\t\n            </code></pre><p>Use <strong>Direct3DCreate9</strong> to verify that the correct runtime is installed.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCheckVersion']/*\"/>\t\n            <msdn-id>bb172717</msdn-id>\t\n            <unmanaged>BOOL D3DXCheckVersion([In] unsigned int D3DSdkVersion,[In] unsigned int D3DXSdkVersion)</unmanaged>\t\n            <unmanaged-short>D3DXCheckVersion</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.CreateEffect(SharpDX.Direct3D9.Device,System.IntPtr,System.Int32,SharpDX.Direct3D9.Macro[],System.IntPtr,System.Int32,SharpDX.Direct3D9.EffectPool,SharpDX.Direct3D9.Effect@,SharpDX.Direct3D.Blob@)\">\n            <summary>\t\n            <p>Create an effect from an ASCII or binary effect description.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\"><dd>  <p>Pointer to the device that will create the effect. See <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong>.</p> </dd></param>\t\n            <param name=\"srcDataRef\"><dd>  <p>Pointer to a buffer containing an effect description.</p> </dd></param>\t\n            <param name=\"srcDataLen\"><dd>  <p>Length of the effect data, in bytes.</p> </dd></param>\t\n            <param name=\"definesRef\"><dd>  <p>An optional <strong><c>null</c></strong>-terminated array of <strong><see cref=\"T:SharpDX.Direct3D9.Macro\"/></strong> structures that describe preprocessor definitions. This value can be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"includeRef\"><dd>  <p>Optional interface reference, <strong><see cref=\"T:SharpDX.Direct3D9.Include\"/></strong>, to use for handling #include directives. If this value is <strong><c>null</c></strong>, #includes will either be honored when compiling from a file or will cause an error when compiled from a resource or memory. </p> </dd></param>\t\n            <param name=\"flags\"><dd>  <p>If <em>pSrcData</em> contains a text effect, flags can be a combination of <see cref=\"T:SharpDX.Direct3D9.ShaderFlags\"/> Flags and <see cref=\"T:SharpDX.Direct3D9.FX\"/> flags; otherwise, <em>pSrcData</em> contains a binary effect and the only flags honored are <see cref=\"T:SharpDX.Direct3D9.FX\"/> flags. The Direct3D 10 HLSL compiler is now the default. See Effect-Compiler Tool for details.</p> </dd></param>\t\n            <param name=\"poolRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.EffectPool\"/></strong> object to use for shared parameters. If this value is <strong><c>null</c></strong>, no parameters will be shared.</p> </dd></param>\t\n            <param name=\"effectOut\"><dd>  <p>Returns a reference to an <strong><see cref=\"T:SharpDX.Direct3D9.Effect\"/></strong> interface.</p> </dd></param>\t\n            <param name=\"compilationErrorsOut\"><dd>  <p>Returns a buffer containing a listing of compile errors.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA, E_OUTOFMEMORY.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCreateEffect']/*\"/>\t\n            <msdn-id>bb172763</msdn-id>\t\n            <unmanaged>HRESULT D3DXCreateEffect([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataLen,[In, Buffer, Optional] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] unsigned int Flags,[In] ID3DXEffectPool* pPool,[In] ID3DXEffect** ppEffect,[In] ID3DXBuffer** ppCompilationErrors)</unmanaged>\t\n            <unmanaged-short>D3DXCreateEffect</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.DisassembleEffect(SharpDX.Direct3D9.Effect,SharpDX.Bool,SharpDX.Direct3D.Blob@)\">\n            <summary>\t\n            <p>Disassemble an effect.</p>\t\n            </summary>\t\n            <param name=\"effectRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Effect\"/></strong> interface that contains the effect.</p> </dd></param>\t\n            <param name=\"enableColorCode\"><dd>  <p>Enable color coding to make the disassembly easier to read.</p> </dd></param>\t\n            <param name=\"disassemblyOut\"><dd>  <p>Returns a buffer containing the disassembled shader. See <strong><see cref=\"T:SharpDX.Direct3D.Blob\"/></strong>.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA, E_OUTOFMEMORY.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXDisassembleEffect']/*\"/>\t\n            <msdn-id>bb172819</msdn-id>\t\n            <unmanaged>HRESULT D3DXDisassembleEffect([In] ID3DXEffect* pEffect,[In] BOOL EnableColorCode,[In] ID3DXBuffer** ppDisassembly)</unmanaged>\t\n            <unmanaged-short>D3DXDisassembleEffect</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.CreateEffectFromResourceExW(SharpDX.Direct3D9.Device,System.IntPtr,System.String,SharpDX.Direct3D9.Macro[],System.IntPtr,System.String,System.Int32,SharpDX.Direct3D9.EffectPool,SharpDX.Direct3D9.Effect@,SharpDX.Direct3D.Blob@)\">\n            <summary>\t\n            <p>Create an effect from an ASCII or binary effect description. This is an extended version of <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateEffectFromResourceW(SharpDX.Direct3D9.Device,System.IntPtr,System.String,SharpDX.Direct3D9.Macro[],System.IntPtr,System.Int32,SharpDX.Direct3D9.EffectPool,SharpDX.Direct3D9.Effect@,SharpDX.Direct3D.Blob@)\"/></strong> that allows an application to control which parameters are ignored by the effects system.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\">No documentation.</param>\t\n            <param name=\"hSrcModule\">No documentation.</param>\t\n            <param name=\"srcResourceRef\">No documentation.</param>\t\n            <param name=\"definesRef\">No documentation.</param>\t\n            <param name=\"includeRef\">No documentation.</param>\t\n            <param name=\"skipConstantsRef\">No documentation.</param>\t\n            <param name=\"flags\">No documentation.</param>\t\n            <param name=\"poolRef\">No documentation.</param>\t\n            <param name=\"effectOut\">No documentation.</param>\t\n            <param name=\"compilationErrorsOut\">No documentation.</param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>This function is an extended version of <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateEffectFromResourceW(SharpDX.Direct3D9.Device,System.IntPtr,System.String,SharpDX.Direct3D9.Macro[],System.IntPtr,System.Int32,SharpDX.Direct3D9.EffectPool,SharpDX.Direct3D9.Effect@,SharpDX.Direct3D.Blob@)\"/></strong> that allows an application to specify which effect constants will be managed by the application. A constant that is managed by the application is ignored by the effects system. That is, the application is responsible for initializing the constant as well as saving and restoring its state whenever appropriate.</p><p>This function checks each constant in pSkipConstants to see that:</p><ul> <li>It is bound to a constant register.</li> <li>It is only used in HLSL shader code.</li> </ul><p> If a constant is named in the string that is not present in the effect, it is ignored.</p><p>If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the LPCTSTR data type resolves to LPCSTR.</p><p>The compiler setting also determines the function version. If Unicode is defined, the function call resolves to <see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateEffectFromResourceW(SharpDX.Direct3D9.Device,System.IntPtr,System.String,SharpDX.Direct3D9.Macro[],System.IntPtr,System.Int32,SharpDX.Direct3D9.EffectPool,SharpDX.Direct3D9.Effect@,SharpDX.Direct3D.Blob@)\"/>. Otherwise, the function call resolves to D3DXCreateEffectFromResourceA because ANSI strings are being used.</p><p><see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateEffectFromResourceW(SharpDX.Direct3D9.Device,System.IntPtr,System.String,SharpDX.Direct3D9.Macro[],System.IntPtr,System.Int32,SharpDX.Direct3D9.EffectPool,SharpDX.Direct3D9.Effect@,SharpDX.Direct3D.Blob@)\"/> loads data from a resource of type RT_RCDATA. See MSDN for more information about Windows resources.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCreateEffectFromResourceExW']/*\"/>\t\n            <msdn-id>bb172771</msdn-id>\t\n            <unmanaged>HRESULT D3DXCreateEffectFromResourceExW([In] IDirect3DDevice9* pDevice,[In] HINSTANCE hSrcModule,[In] const wchar_t* pSrcResource,[In, Buffer, Optional] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] const char* pSkipConstants,[In] unsigned int Flags,[In] ID3DXEffectPool* pPool,[In] ID3DXEffect** ppEffect,[In] ID3DXBuffer** ppCompilationErrors)</unmanaged>\t\n            <unmanaged-short>D3DXCreateEffectFromResourceExW</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.CreateEffectFromResourceW(SharpDX.Direct3D9.Device,System.IntPtr,System.String,SharpDX.Direct3D9.Macro[],System.IntPtr,System.Int32,SharpDX.Direct3D9.EffectPool,SharpDX.Direct3D9.Effect@,SharpDX.Direct3D.Blob@)\">\n            <summary>\t\n            <p>Create an effect from an ASCII or binary effect description.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\"><dd>  <p>Pointer to the device.</p> </dd></param>\t\n            <param name=\"hSrcModule\"><dd>  <p>Handle to a module containing the effect description. If this parameter is <strong><c>null</c></strong>, the current module will be used.</p> </dd></param>\t\n            <param name=\"srcResourceRef\"><dd>  <p>Pointer to the resource. This parameter supports both Unicode and ANSI strings. See Remarks.</p> </dd></param>\t\n            <param name=\"definesRef\"><dd>  <p>An optional <strong><c>null</c></strong>-terminated array of <strong><see cref=\"T:SharpDX.Direct3D9.Macro\"/></strong> structures that describe preprocessor definitions. This value can be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"includeRef\"><dd>  <p>Optional interface reference, <strong><see cref=\"T:SharpDX.Direct3D9.Include\"/></strong>, to use for handling #include directives. If this value is <strong><c>null</c></strong>, #includes will either be honored when compiling from a file or will cause an error when compiled from a resource or memory. </p> </dd></param>\t\n            <param name=\"flags\"><dd>  <p>If <em>hSrcModule</em> contains a text effect, flags can be a combination of <see cref=\"T:SharpDX.Direct3D9.ShaderFlags\"/> Flags and <see cref=\"T:SharpDX.Direct3D9.FX\"/> flags; otherwise, <em>hSrcModule</em> contains a binary effect and the only flags honored are <see cref=\"T:SharpDX.Direct3D9.FX\"/> flags. The Direct3D 10 HLSL compiler is now the default. See Effect-Compiler Tool for details.</p> </dd></param>\t\n            <param name=\"poolRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.EffectPool\"/></strong> object to use for shared parameters. If this value is <strong><c>null</c></strong>, no parameters will be shared.</p> </dd></param>\t\n            <param name=\"effectOut\"><dd>  <p>Returns a buffer containing the compiled effect.</p> </dd></param>\t\n            <param name=\"compilationErrorsOut\"><dd>  <p>Returns a buffer containing a listing of compile errors.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the LPCTSTR data type resolves to LPCSTR.</p><p>The compiler setting also determines the function version. If Unicode is defined, the function call resolves to <see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateEffectFromResourceW(SharpDX.Direct3D9.Device,System.IntPtr,System.String,SharpDX.Direct3D9.Macro[],System.IntPtr,System.Int32,SharpDX.Direct3D9.EffectPool,SharpDX.Direct3D9.Effect@,SharpDX.Direct3D.Blob@)\"/>. Otherwise, the function call resolves to D3DXCreateEffectFromResourceA because ANSI strings are being used.</p><p><see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateEffectFromResourceW(SharpDX.Direct3D9.Device,System.IntPtr,System.String,SharpDX.Direct3D9.Macro[],System.IntPtr,System.Int32,SharpDX.Direct3D9.EffectPool,SharpDX.Direct3D9.Effect@,SharpDX.Direct3D.Blob@)\"/> loads data from a resource of type RT_RCDATA. See MSDN for more information about Windows resources.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCreateEffectFromResourceW']/*\"/>\t\n            <msdn-id>bb172770</msdn-id>\t\n            <unmanaged>HRESULT D3DXCreateEffectFromResourceW([In] IDirect3DDevice9* pDevice,[In] HINSTANCE hSrcModule,[In] const wchar_t* pSrcResource,[In, Buffer, Optional] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] unsigned int Flags,[In] ID3DXEffectPool* pPool,[In] ID3DXEffect** ppEffect,[In] ID3DXBuffer** ppCompilationErrors)</unmanaged>\t\n            <unmanaged-short>D3DXCreateEffectFromResourceW</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.CreateEffectCompiler(System.IntPtr,System.Int32,SharpDX.Direct3D9.Macro[],System.IntPtr,System.Int32,SharpDX.Direct3D9.EffectCompiler,SharpDX.Direct3D.Blob@)\">\n            <summary>\t\n            <p>Creates an effect compiler from an ASCII effect description.</p>\t\n            </summary>\t\n            <param name=\"srcDataRef\"><dd>  <p>Pointer to a buffer containing an effect description.</p> </dd></param>\t\n            <param name=\"srcDataLen\"><dd>  <p>Length, in bytes, of the effect data.</p> </dd></param>\t\n            <param name=\"definesRef\"><dd>  <p>An optional <strong><c>null</c></strong>-terminated array of <strong><see cref=\"T:SharpDX.Direct3D9.Macro\"/></strong> structures that describe preprocessor definitions. This value can be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"includeRef\"><dd>  <p>Optional interface reference, <strong><see cref=\"T:SharpDX.Direct3D9.Include\"/></strong>, to use for handling #include directives. If this value is <strong><c>null</c></strong>, #includes will either be honored when compiling from a file or will cause an error when compiled from a resource or memory. </p> </dd></param>\t\n            <param name=\"flags\"><dd>  <p>Compile options identified by various flags (see <see cref=\"T:SharpDX.Direct3D9.ShaderFlags\"/> Flags). The Direct3D 10 HLSL compiler is now the default. See Effect-Compiler Tool for details.</p> </dd></param>\t\n            <param name=\"compilerOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D9.EffectCompiler\"/></strong> interface containing the effect compiler. </p> </dd></param>\t\n            <param name=\"parseErrorsOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D.Blob\"/></strong> interface containing any error messages that occurred during compilation. This parameter can be set to <strong><c>null</c></strong> to ignore error messages. </p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCreateEffectCompiler']/*\"/>\t\n            <msdn-id>bb172764</msdn-id>\t\n            <unmanaged>HRESULT D3DXCreateEffectCompiler([In] const void* pSrcData,[In] unsigned int SrcDataLen,[In, Buffer, Optional] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] unsigned int Flags,[Out, Fast] ID3DXEffectCompiler** ppCompiler,[In] ID3DXBuffer** ppParseErrors)</unmanaged>\t\n            <unmanaged-short>D3DXCreateEffectCompiler</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.CreateEffectFromFileExW(SharpDX.Direct3D9.Device,System.String,SharpDX.Direct3D9.Macro[],System.IntPtr,System.String,System.Int32,SharpDX.Direct3D9.EffectPool,SharpDX.Direct3D9.Effect@,SharpDX.Direct3D.Blob@)\">\n            <summary>\t\n            <p>Create an effect from an ASCII or binary effect description. This function is an extended version of <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateEffectFromFileW(SharpDX.Direct3D9.Device,System.String,SharpDX.Direct3D9.Macro[],System.IntPtr,System.Int32,SharpDX.Direct3D9.EffectPool,SharpDX.Direct3D9.Effect@,SharpDX.Direct3D.Blob@)\"/></strong> that allows an application to control which parameters are ignored by the effects system.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\">No documentation.</param>\t\n            <param name=\"srcFileRef\">No documentation.</param>\t\n            <param name=\"definesRef\">No documentation.</param>\t\n            <param name=\"includeRef\">No documentation.</param>\t\n            <param name=\"skipConstantsRef\">No documentation.</param>\t\n            <param name=\"flags\">No documentation.</param>\t\n            <param name=\"poolRef\">No documentation.</param>\t\n            <param name=\"effectOut\">No documentation.</param>\t\n            <param name=\"compilationErrorsOut\">No documentation.</param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>This function is an extended version of <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateEffectFromFileW(SharpDX.Direct3D9.Device,System.String,SharpDX.Direct3D9.Macro[],System.IntPtr,System.Int32,SharpDX.Direct3D9.EffectPool,SharpDX.Direct3D9.Effect@,SharpDX.Direct3D.Blob@)\"/></strong> that allows an application to specify which effect constants will be managed by the application. A constant that is managed by the application is ignored by the effects system. That is, the application is responsible for initializing the constant as well as saving and restoring its state whenever appropriate.</p><p>This function checks each constant in pSkipConstants to see that:</p><ul> <li>It is bound to a constant register.</li> <li>It is only used in HLSL shader code.</li> </ul><p> If a constant is named in the string that is not present in the effect, it is ignored.</p><p>If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the LPCTSTR data type resolves to LPCSTR.</p><p>The compiler setting also determines the function version. If Unicode is defined, the function call resolves to <see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateEffectFromFileW(SharpDX.Direct3D9.Device,System.String,SharpDX.Direct3D9.Macro[],System.IntPtr,System.Int32,SharpDX.Direct3D9.EffectPool,SharpDX.Direct3D9.Effect@,SharpDX.Direct3D.Blob@)\"/>. Otherwise, the function call resolves to D3DXCreateEffectFromFileA because ANSI strings are being used.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCreateEffectFromFileExW']/*\"/>\t\n            <msdn-id>bb172769</msdn-id>\t\n            <unmanaged>HRESULT D3DXCreateEffectFromFileExW([In] IDirect3DDevice9* pDevice,[In] const wchar_t* pSrcFile,[In, Buffer, Optional] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] const char* pSkipConstants,[In] unsigned int Flags,[In] ID3DXEffectPool* pPool,[In] ID3DXEffect** ppEffect,[In] ID3DXBuffer** ppCompilationErrors)</unmanaged>\t\n            <unmanaged-short>D3DXCreateEffectFromFileExW</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.CreateEffectCompilerFromFileW(System.String,SharpDX.Direct3D9.Macro[],System.IntPtr,System.Int32,SharpDX.Direct3D9.EffectCompiler@,SharpDX.Direct3D.Blob@)\">\n            <summary>\t\n            <p>Creates an effect compiler from an ASCII effect description.</p>\t\n            </summary>\t\n            <param name=\"srcFileRef\"><dd>  <p>Pointer to the filename. This parameter supports both Unicode and ANSI strings. See Remarks.</p> </dd></param>\t\n            <param name=\"definesRef\"><dd>  <p>An optional <strong><c>null</c></strong>-terminated array of <strong><see cref=\"T:SharpDX.Direct3D9.Macro\"/></strong> structures that describe preprocessor definitions. This value can be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"includeRef\"><dd>  <p>Optional interface reference, <strong><see cref=\"T:SharpDX.Direct3D9.Include\"/></strong>, to use for handling #include directives. If this value is <strong><c>null</c></strong>, #includes will either be honored when compiling from a file or will cause an error when compiled from a resource or memory. </p> </dd></param>\t\n            <param name=\"flags\"><dd>  <p>Compile options identified by various flags (see <see cref=\"T:SharpDX.Direct3D9.ShaderFlags\"/> Flags). The Direct3D 10 HLSL compiler is now the default. See Effect-Compiler Tool for details.</p> </dd></param>\t\n            <param name=\"compilerOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D9.EffectCompiler\"/></strong> interface, containing the effect compiler. </p> </dd></param>\t\n            <param name=\"parseErrorsOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D.Blob\"/></strong> interface, containing any error messages that occurred during compilation. This parameter can be set to <strong><c>null</c></strong> to ignore error messages. </p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the LPCTSTR data type resolves to LPCSTR.</p><p>The compiler setting also determines the function version. If Unicode is defined, the function call resolves to <see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateEffectCompilerFromFileW(System.String,SharpDX.Direct3D9.Macro[],System.IntPtr,System.Int32,SharpDX.Direct3D9.EffectCompiler@,SharpDX.Direct3D.Blob@)\"/>. Otherwise, the function call resolves to D3DXCreateEffectCompilerFromFileA because ANSI strings are being used.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCreateEffectCompilerFromFileW']/*\"/>\t\n            <msdn-id>bb172765</msdn-id>\t\n            <unmanaged>HRESULT D3DXCreateEffectCompilerFromFileW([In] const wchar_t* pSrcFile,[In, Buffer, Optional] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] unsigned int Flags,[In] ID3DXEffectCompiler** ppCompiler,[In] ID3DXBuffer** ppParseErrors)</unmanaged>\t\n            <unmanaged-short>D3DXCreateEffectCompilerFromFileW</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.CreateEffectCompilerFromResourceW(System.IntPtr,System.String,SharpDX.Direct3D9.Macro[],System.IntPtr,System.Int32,SharpDX.Direct3D9.EffectCompiler@,SharpDX.Direct3D.Blob@)\">\n            <summary>\t\n            <p>Creates an <strong><see cref=\"T:SharpDX.Direct3D9.EffectCompiler\"/></strong> from an ASCII effect description.</p>\t\n            </summary>\t\n            <param name=\"hSrcModule\">No documentation.</param>\t\n            <param name=\"srcResourceRef\">No documentation.</param>\t\n            <param name=\"definesRef\">No documentation.</param>\t\n            <param name=\"includeRef\">No documentation.</param>\t\n            <param name=\"flags\">No documentation.</param>\t\n            <param name=\"compilerOut\">No documentation.</param>\t\n            <param name=\"parseErrorsOut\">No documentation.</param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the LPCTSTR data type resolves to LPCSTR.</p><p>The compiler setting also determines the function version. If Unicode is defined, the function call resolves to <see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateEffectCompilerFromResourceW(System.IntPtr,System.String,SharpDX.Direct3D9.Macro[],System.IntPtr,System.Int32,SharpDX.Direct3D9.EffectCompiler@,SharpDX.Direct3D.Blob@)\"/>. Otherwise, the function call resolves to D3DXCreateEffectCompilerFromResourceA because ANSI strings are being used.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCreateEffectCompilerFromResourceW']/*\"/>\t\n            <msdn-id>bb172766</msdn-id>\t\n            <unmanaged>HRESULT D3DXCreateEffectCompilerFromResourceW([In] HINSTANCE hSrcModule,[In] const wchar_t* pSrcResource,[In, Buffer, Optional] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] unsigned int Flags,[In] ID3DXEffectCompiler** ppCompiler,[In] ID3DXBuffer** ppParseErrors)</unmanaged>\t\n            <unmanaged-short>D3DXCreateEffectCompilerFromResourceW</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.CreateEffectFromFileW(SharpDX.Direct3D9.Device,System.String,SharpDX.Direct3D9.Macro[],System.IntPtr,System.Int32,SharpDX.Direct3D9.EffectPool,SharpDX.Direct3D9.Effect@,SharpDX.Direct3D.Blob@)\">\n            <summary>\t\n            <p>Create an effect from an ASCII or binary effect description.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\"><dd>  <p>Pointer to the device that will create the effect. See <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong>.</p> </dd></param>\t\n            <param name=\"srcFileRef\"><dd>  <p>Pointer to the filename. This parameter supports both Unicode and ANSI strings. See Remarks.</p> </dd></param>\t\n            <param name=\"definesRef\"><dd>  <p>Optional <c>null</c>-terminated array of preprocessor macro definitions. See <strong><see cref=\"T:SharpDX.Direct3D9.Macro\"/></strong>.</p> </dd></param>\t\n            <param name=\"includeRef\"><dd>  <p>Optional interface reference, <strong><see cref=\"T:SharpDX.Direct3D9.Include\"/></strong>, to use for handling #include directives. If this value is <strong><c>null</c></strong>, #includes will either be honored when compiling from a file or will cause an error when compiled from a resource or memory. </p> </dd></param>\t\n            <param name=\"flags\"><dd>  <p>If <em>pSrcFile</em> contains a text effect, flags can be a combination of <see cref=\"T:SharpDX.Direct3D9.ShaderFlags\"/> Flags and <see cref=\"T:SharpDX.Direct3D9.FX\"/> flags; otherwise, <em>pSrcFile</em> contains a binary effect and the only flags honored are <see cref=\"T:SharpDX.Direct3D9.FX\"/> flags. The Direct3D 10 HLSL compiler is now the default. See Effect-Compiler Tool for details.</p> </dd></param>\t\n            <param name=\"poolRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.EffectPool\"/></strong> object to use for shared parameters. If this value is <strong><c>null</c></strong>, no parameters will be shared.</p> </dd></param>\t\n            <param name=\"effectOut\"><dd>  <p>Returns a reference to a buffer containing the compiled effect. See <strong><see cref=\"T:SharpDX.Direct3D9.Effect\"/></strong>.</p> </dd></param>\t\n            <param name=\"compilationErrorsOut\"><dd>  <p>Returns a reference to a buffer containing a listing of compile errors. See <strong><see cref=\"T:SharpDX.Direct3D.Blob\"/></strong>.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the LPCTSTR data type resolves to LPCSTR.</p><p>The compiler setting also determines the function version. If Unicode is defined, the function call resolves to <see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateEffectFromFileW(SharpDX.Direct3D9.Device,System.String,SharpDX.Direct3D9.Macro[],System.IntPtr,System.Int32,SharpDX.Direct3D9.EffectPool,SharpDX.Direct3D9.Effect@,SharpDX.Direct3D.Blob@)\"/>. Otherwise, the function call resolves to D3DXCreateEffectFromFileA because ANSI strings are being used.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCreateEffectFromFileW']/*\"/>\t\n            <msdn-id>bb172768</msdn-id>\t\n            <unmanaged>HRESULT D3DXCreateEffectFromFileW([In] IDirect3DDevice9* pDevice,[In] const wchar_t* pSrcFile,[In, Buffer, Optional] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] unsigned int Flags,[In] ID3DXEffectPool* pPool,[In] ID3DXEffect** ppEffect,[In] ID3DXBuffer** ppCompilationErrors)</unmanaged>\t\n            <unmanaged-short>D3DXCreateEffectFromFileW</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.CreateEffectPool(SharpDX.Direct3D9.EffectPool)\">\n            <summary>\t\n            <p>Create an effect pool. A pool is used to share parameters between effects.</p>\t\n            </summary>\t\n            <param name=\"poolOut\"><dd>  <p>Returns a reference to the created pool.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>.</p><p>If the arguments are invalid, the method will return <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p><p>If the method fails, the return value will be E_FAIL.</p></returns>\t\n            <remarks>\t\n            <p>For effects within a pool, shared parameters with the same name share values. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCreateEffectPool']/*\"/>\t\n            <msdn-id>bb172772</msdn-id>\t\n            <unmanaged>HRESULT D3DXCreateEffectPool([Out, Fast] ID3DXEffectPool** ppPool)</unmanaged>\t\n            <unmanaged-short>D3DXCreateEffectPool</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.CreateEffectEx(SharpDX.Direct3D9.Device,System.IntPtr,System.Int32,SharpDX.Direct3D9.Macro[],System.IntPtr,System.String,System.Int32,SharpDX.Direct3D9.EffectPool,SharpDX.Direct3D9.Effect@,SharpDX.Direct3D.Blob@)\">\n            <summary>\t\n            <p>Creates an effect from an ASCII or binary effect description. This function is an extended version of <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateEffect(SharpDX.Direct3D9.Device,System.IntPtr,System.Int32,SharpDX.Direct3D9.Macro[],System.IntPtr,System.Int32,SharpDX.Direct3D9.EffectPool,SharpDX.Direct3D9.Effect@,SharpDX.Direct3D.Blob@)\"/></strong> that allows an application to control which parameters are ignored by the effects system.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\">No documentation.</param>\t\n            <param name=\"srcDataRef\">No documentation.</param>\t\n            <param name=\"srcDataLen\">No documentation.</param>\t\n            <param name=\"definesRef\">No documentation.</param>\t\n            <param name=\"includeRef\">No documentation.</param>\t\n            <param name=\"skipConstantsRef\">No documentation.</param>\t\n            <param name=\"flags\">No documentation.</param>\t\n            <param name=\"poolRef\">No documentation.</param>\t\n            <param name=\"effectOut\">No documentation.</param>\t\n            <param name=\"compilationErrorsOut\">No documentation.</param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>This function is an extended version of <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateEffect(SharpDX.Direct3D9.Device,System.IntPtr,System.Int32,SharpDX.Direct3D9.Macro[],System.IntPtr,System.Int32,SharpDX.Direct3D9.EffectPool,SharpDX.Direct3D9.Effect@,SharpDX.Direct3D.Blob@)\"/></strong> that allows an application to specify which effect constants will be managed by the application. A constant that is managed by the application is ignored by the effects system. That is, the application is responsible for initializing the constant as well as saving and restoring its state whenever appropriate.</p><p>This function checks each constant in pSkipConstants to see that:</p><ul> <li>It is bound to a constant register.</li> <li>It is only used in HLSL shader code.</li> </ul><p> If a constant is named in the string that is not present in the effect, it is ignored.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCreateEffectEx']/*\"/>\t\n            <msdn-id>bb172767</msdn-id>\t\n            <unmanaged>HRESULT D3DXCreateEffectEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataLen,[In, Buffer, Optional] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] const char* pSkipConstants,[In] unsigned int Flags,[In] ID3DXEffectPool* pPool,[In] ID3DXEffect** ppEffect,[In] ID3DXBuffer** ppCompilationErrors)</unmanaged>\t\n            <unmanaged-short>D3DXCreateEffectEx</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.SaveMeshToXW(System.String,SharpDX.Direct3D9.Mesh,System.Int32,SharpDX.Direct3D9.ExtendedMaterial@,SharpDX.Direct3D9.EffectInstance,System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Saves a mesh to a .x file.</p>\t\n            </summary>\t\n            <param name=\"filenameRef\"><dd>  <p>Pointer to a string that specifies the filename. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the string data type resolves to LPCSTR. See Remarks.</p> </dd></param>\t\n            <param name=\"meshRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Mesh\"/></strong> interface, representing the mesh to save to a .x file.</p> </dd></param>\t\n            <param name=\"adjacencyRef\"><dd>  <p>Pointer to an array of three DWORDs per face that specify the three neighbors for each face in the mesh. This parameter may be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"materialsRef\"><dd>  <p>Pointer to an array of <strong><see cref=\"T:SharpDX.Direct3D9.ExtendedMaterial\"/></strong> structures, containing material information to be saved in the .x file.</p> </dd></param>\t\n            <param name=\"effectInstancesRef\"><dd>  <p>Pointer to an array of effect instances, one per attribute group in the mesh. This parameter may be <strong><c>null</c></strong>. An effect instance is a particular instance of state information used to initialize an effect. For more information, see <strong><see cref=\"T:SharpDX.Direct3D9.EffectInstance\"/></strong>.</p> </dd></param>\t\n            <param name=\"numMaterials\"><dd>  <p>Number of <strong><see cref=\"T:SharpDX.Direct3D9.ExtendedMaterial\"/></strong> structures in the <em>pMaterials</em> array.</p> </dd></param>\t\n            <param name=\"format\"><dd>  <p>A combination of file format and save options when saving an .x file. See D3DX X File Constants.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>The compiler setting also determines the function version. If Unicode is defined, the function call resolves to <see cref=\"M:SharpDX.Direct3D9.D3DX9.SaveMeshToXW(System.String,SharpDX.Direct3D9.Mesh,System.Int32,SharpDX.Direct3D9.ExtendedMaterial@,SharpDX.Direct3D9.EffectInstance,System.Int32,System.Int32)\"/>. Otherwise, the function call resolves to D3DXSaveMeshToXA because ANSI strings are being used.</p><p>The default file format is binary; however, if a file is specified as both a binary and a text file, it will be saved as a text file. Regardless of the file format, you may also use the compressed format to reduce the file size. </p><p>The following is a typical code example of how to use this function. </p><pre><code> <see cref=\"T:SharpDX.Direct3D9.Mesh\"/>*    m_pMesh;           // Mesh object to be saved to a .x file\t\n            <see cref=\"T:SharpDX.Direct3D9.ExtendedMaterial\"/>* m_pMaterials;      // Array of material structs in the mesh\t\n            DWORD         m_dwNumMaterials;  // Number of material structs in the mesh DWORD dwFormat = <see cref=\"F:SharpDX.Direct3D9.XFileFormat.Binary\"/>;  // Binary-format .x file (default)\t\n            // DWORD dwFormat = <see cref=\"F:SharpDX.Direct3D9.XFileFormat.Text\"/>; // Text-format .x file // Load mesh into m_pMesh and determine values of m_pMaterials and \t\n            // m_dwNumMaterials with calls to D3DXLoadMeshxxx or other D3DX functions // ... <see cref=\"M:SharpDX.Direct3D9.D3DX9.SaveMeshToXW(System.String,SharpDX.Direct3D9.Mesh,System.Int32,SharpDX.Direct3D9.ExtendedMaterial@,SharpDX.Direct3D9.EffectInstance,System.Int32,System.Int32)\"/>( L\"outputxfilename.x\", m_pMesh, <c>null</c>, m_pMaterials, <c>null</c>, m_dwNumMaterials, dwFormat );\t\n            </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXSaveMeshToXW']/*\"/>\t\n            <msdn-id>bb205428</msdn-id>\t\n            <unmanaged>HRESULT D3DXSaveMeshToXW([In] const wchar_t* pFilename,[In] ID3DXMesh* pMesh,[In] const unsigned int* pAdjacency,[In] const D3DXMATERIAL* pMaterials,[In] const D3DXEFFECTINSTANCE* pEffectInstances,[In] unsigned int NumMaterials,[In] unsigned int Format)</unmanaged>\t\n            <unmanaged-short>D3DXSaveMeshToXW</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.DeclaratorFromFVF(SharpDX.Direct3D9.VertexFormat,SharpDX.Direct3D9.VertexElement[])\">\n            <summary>\t\n            <p>Returns a declarator from a flexible vertex format (FVF) code.</p>\t\n            </summary>\t\n            <param name=\"fvf\"><dd>  <p>Combination of <see cref=\"T:SharpDX.Direct3D9.VertexFormat\"/> that describes the FVF from which to generate the returned declarator array.</p> </dd></param>\t\n            <param name=\"declaratorRef\"><dd>  <p>An array of <strong><see cref=\"T:SharpDX.Direct3D9.VertexElement\"/></strong> elements describing the vertex format of the mesh vertices. The upper limit of this declarator array is <strong><see cref=\"F:SharpDX.Direct3D9.VertexFormatDeclaratorCount.Max\"/></strong>.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: D3DXERR_INVALIDMESH.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXDeclaratorFromFVF']/*\"/>\t\n            <msdn-id>bb172818</msdn-id>\t\n            <unmanaged>HRESULT D3DXDeclaratorFromFVF([In] D3DFVF FVF,[In, Buffer] D3DVERTEXELEMENT9* pDeclarator)</unmanaged>\t\n            <unmanaged-short>D3DXDeclaratorFromFVF</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.ComputeTangentFrame(SharpDX.Direct3D9.Mesh,System.Int32)\">\n            <summary>\t\n            <p> Compute tangent, binormal, and normal vectors for a mesh.</p>\t\n            </summary>\t\n            <param name=\"meshRef\"><dd>  <p>Pointer to an input <strong><see cref=\"T:SharpDX.Direct3D9.Mesh\"/></strong> mesh object.</p> </dd></param>\t\n            <param name=\"dwOptions\"><dd>  <p>Combination of one or more <strong><see cref=\"T:SharpDX.Direct3D9.TangentOptions\"/></strong> flags.  </p> <p>Use <strong><c>null</c></strong> to specify the following options:</p> <ul> <li>Weight the normal vector length by the angle, in radians, subtended by the two edges leaving the vertex.</li> <li>Compute orthogonal Cartesian coordinates from the UV texture coordinates.</li> <li>Textures are not wrapped in either U or V directions</li> <li>Partial derivatives with respect to texture coordinates are normalized.</li> <li>Vertices are ordered in a counterclockwise direction around each triangle.</li> <li>Use per-vertex normal vectors already present in the input mesh.</li> <li>The results will be stored in the original input mesh. The function will fail if new vertices need to be created.</li> </ul> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>This function simply calls <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.ComputeTangentFrameEx(SharpDX.Direct3D9.Mesh,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Single,System.Single,System.Single,SharpDX.Direct3D9.Mesh@,SharpDX.Direct3D.Blob@)\"/></strong> with the following input parameters:</p><pre><code> <see cref=\"M:SharpDX.Direct3D9.D3DX9.ComputeTangentFrameEx(SharpDX.Direct3D9.Mesh,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Single,System.Single,System.Single,SharpDX.Direct3D9.Mesh@,SharpDX.Direct3D.Blob@)\"/>(pMesh, <see cref=\"F:SharpDX.Direct3D9.DeclarationUsage.TextureCoordinate\"/>, 0,    <see cref=\"F:SharpDX.Direct3D9.DeclarationUsage.Binormal\"/>, 0, <see cref=\"F:SharpDX.Direct3D9.DeclarationUsage.Tangent\"/>, 0,  <see cref=\"F:SharpDX.Direct3D9.DeclarationUsage.Normal\"/>, 0,  dwOptions | <see cref=\"F:SharpDX.Direct3D9.TangentOptions.GenerateInPlace\"/>, <c>null</c>, 0.01f, 0.25f, 0.01f, <c>null</c>, <c>null</c>);\t\n            </code></pre><p>Singularities are handled as required by grouping edges and splitting vertices. If any vertices need to be split, the function will fail. The computed normal vector at each vertex is always normalized to have unit length.</p><p>The most robust solution for computing orthogonal Cartesian coordinates is to not set flags <see cref=\"F:SharpDX.Direct3D9.TangentOptions.OrthogonalizeFromU\"/> and <see cref=\"F:SharpDX.Direct3D9.TangentOptions.OrthogonalizeFromV\"/>, so that orthogonal coordinates are computed from both UV texture coordinates. However, in this case, if either U or V is zero, then the function will compute orthogonal coordinates using <see cref=\"F:SharpDX.Direct3D9.TangentOptions.OrthogonalizeFromV\"/> or <see cref=\"F:SharpDX.Direct3D9.TangentOptions.OrthogonalizeFromU\"/> respectively.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXComputeTangentFrame']/*\"/>\t\n            <msdn-id>bb172744</msdn-id>\t\n            <unmanaged>HRESULT D3DXComputeTangentFrame([In] ID3DXMesh* pMesh,[In] unsigned int dwOptions)</unmanaged>\t\n            <unmanaged-short>D3DXComputeTangentFrame</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.OptimizeFaces(System.IntPtr,System.Int32,System.Int32,SharpDX.Bool,System.Int32[])\">\n            <summary>\t\n            <p>Generates an optimized face remapping for a triangle list.</p>\t\n            </summary>\t\n            <param name=\"bIndicesRef\"><dd>  <p>Pointer to triangle list indices to use for ordering vertices.</p> </dd></param>\t\n            <param name=\"cFaces\"><dd>  <p>Number of faces in the triangle list. For 16-bit meshes, this is limited to 2^16 - 1 (65535) or fewer faces.</p> </dd></param>\t\n            <param name=\"cVertices\"><dd>  <p>Number of vertices referenced by the triangle list.</p> </dd></param>\t\n            <param name=\"b32BitIndices\"><dd>  <p>Flag indicating index type: <strong>TRUE</strong> if indices are 32-bit (more than 65535 indices), <strong><see cref=\"F:SharpDX.Result.False\"/></strong> if indices are 16-bit (65535 or fewer indices).</p> </dd></param>\t\n            <param name=\"faceRemapRef\"><dd>  <p>Pointer to the original mesh face that was split to generate the current face.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>This function's optimization procedure is functionally equivalent to calling <strong><see cref=\"M:SharpDX.Direct3D9.Mesh.Optimize(System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D.Blob@,SharpDX.Direct3D9.Mesh@)\"/></strong> with the <see cref=\"F:SharpDX.Direct3D9.MeshOptimizeFlags.DeviceIndependent\"/> flag, but this function makes more efficient use of vertex caches.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXOptimizeFaces']/*\"/>\t\n            <msdn-id>bb205376</msdn-id>\t\n            <unmanaged>HRESULT D3DXOptimizeFaces([In] const void* pbIndices,[In] unsigned int cFaces,[In] unsigned int cVertices,[In] BOOL b32BitIndices,[In, Buffer] int* pFaceRemap)</unmanaged>\t\n            <unmanaged-short>D3DXOptimizeFaces</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.WeldVertices(SharpDX.Direct3D9.Mesh,System.Int32,SharpDX.Direct3D9.WeldEpsilons@,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D.Blob@)\">\n            <summary>\t\n            <p>Welds together replicated vertices that have equal attributes. This method uses specified epsilon values for equality comparisons.</p>\t\n            </summary>\t\n            <param name=\"meshRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Mesh\"/></strong> object, the mesh from which to weld vertices.</p> </dd></param>\t\n            <param name=\"flags\"><dd>  <p>Combination of one or more flags from <strong>D3DXWELDEPSILONSFLAGS</strong>.</p> </dd></param>\t\n            <param name=\"epsilonsRef\"><dd>  <p>Pointer to a <strong>D3DXWeldEpsilons</strong> structure, specifying the epsilon values to be used for this method. Use <strong><c>null</c></strong> to initialize all structure members to a default value of 1.0e-6f.</p> </dd></param>\t\n            <param name=\"adjacencyInRef\"><dd>  <p>Pointer to an array of three DWORDs per face that specify the three neighbors for each face in the source mesh. If the edge has no adjacent faces, the value is 0xffffffff. If this parameter is set to <strong><c>null</c></strong>, <strong><see cref=\"M:SharpDX.Direct3D9.BaseMesh.GenerateAdjacency(System.Single,System.Int32)\"/></strong> will be called to create logical adjacency information.</p> </dd></param>\t\n            <param name=\"adjacencyOutRef\"><dd>  <p>Pointer to an array of three DWORDs per face that specify the three neighbors for each face in the optimized mesh. If the edge has no adjacent faces, the value is 0xffffffff.</p> </dd></param>\t\n            <param name=\"faceRemapRef\"><dd>  <p>An array of DWORDs, one per face, that identifies the original mesh face that corresponds to each face in the welded mesh.</p> </dd></param>\t\n            <param name=\"vertexRemapOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D.Blob\"/></strong> interface, which contains a DWORD for each vertex that specifies how the new vertices map to the old vertices. This remap is useful if you need to alter external data based on the new vertex mapping.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>This function uses supplied adjacency information to determine the points that are replicated. Vertices are merged based on an epsilon comparison. Vertices with equal position must already have been calculated and represented by point-representative data.</p><p>This function combines logically-welded vertices that have similar components, such as normals or texture coordinates within pEpsilons.</p><p>The following example code calls this function with welding enabled. Vertices are compared using epsilon values for normal vector and vertex position. A reference is returned to a face remapping array (<em>pFaceRemap</em>).</p><pre><code> TCHAR            strMediaPath[512];       // X-file path \t\n            LPD3DXBUFFER     pAdjacencyBuffer = <c>null</c>; // adjacency data buffer\t\n            LPD3DXBUFFER     pD3DXMtrlBuffer  = <c>null</c>; // material buffer\t\n            LPD3DXMESH       pMesh            = <c>null</c>; // mesh object\t\n            DWORD            m_dwNumMaterials;        // number of materials\t\n            <see cref=\"T:SharpDX.Direct3D9.WeldEpsilons\"/> Epsilons;                // structure with epsilon values\t\n            DWORD            *pFaceRemap[65536];      // face remapping array\t\n            DWORD            i;                       // internal variable // Load the mesh from the specified file hr = <see cref=\"M:SharpDX.Direct3D9.D3DX9.LoadMeshFromXW(System.String,System.Int32,SharpDX.Direct3D9.Device,SharpDX.Direct3D.Blob@,SharpDX.Direct3D.Blob@,SharpDX.Direct3D.Blob@,System.Int32,SharpDX.Direct3D9.Mesh@)\"/> ( strMediaPath, <see cref=\"F:SharpDX.Direct3D9.MeshFlags.Managed\"/>, m_pd3dDevice, &amp;pAdjacencyBuffer, &amp;pD3DXMtrlBuffer, <c>null</c>, &amp;m_dwNumMaterials, &amp;pMesh ) ) if( FAILED( hr ) )  goto End;              // Go to error handling // Set epsilon values Epsilons.Normal = 0.001; Epsilons.Position = 0.1; // Weld the vertices for( i=0; i &lt; 65536; i++ ) {  pFaceRemap[i] = 0;  } hr = <see cref=\"M:SharpDX.Direct3D9.D3DX9.WeldVertices(SharpDX.Direct3D9.Mesh,System.Int32,SharpDX.Direct3D9.WeldEpsilons@,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D.Blob@)\"/> ( pMesh, <see cref=\"F:SharpDX.Direct3D9.WeldFlags.WeldPartialMatches\"/>, &amp;Epsilons, (DWORD*)pAdjacencyBuffer-&gt;GetBufferPointer(), (DWORD*)pAdjacencyBuffer-&gt;GetBufferPointer(), (DWORD*)pFaceRemap, <c>null</c> ) if( FAILED( hr ) )  goto End;              // Go to error handling\t\n            </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXWeldVertices']/*\"/>\t\n            <msdn-id>bb205562</msdn-id>\t\n            <unmanaged>HRESULT D3DXWeldVertices([In] ID3DXMesh* pMesh,[In] unsigned int Flags,[In] const D3DXWELDEPSILONS* pEpsilons,[In] const unsigned int* pAdjacencyIn,[In] unsigned int* pAdjacencyOut,[In] unsigned int* pFaceRemap,[In] ID3DXBuffer** ppVertexRemap)</unmanaged>\t\n            <unmanaged-short>D3DXWeldVertices</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.GenerateOutputDecl(SharpDX.Direct3D9.VertexElement[],SharpDX.Direct3D9.VertexElement[])\">\n            <summary>\t\n            <p>Generates an output vertex declaration from the input declaration. The output declaration is intended for use by the mesh tessellation functions.</p>\t\n            </summary>\t\n            <param name=\"outputRef\"><dd>  <p>Pointer to the output vertex declaration. See <strong><see cref=\"T:SharpDX.Direct3D9.VertexElement\"/></strong>.</p> </dd></param>\t\n            <param name=\"inputRef\"><dd>  <p>Pointer to the input vertex declaration. See <strong><see cref=\"T:SharpDX.Direct3D9.VertexElement\"/></strong>.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following values: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXGenerateOutputDecl']/*\"/>\t\n            <msdn-id>bb172861</msdn-id>\t\n            <unmanaged>HRESULT D3DXGenerateOutputDecl([In, Buffer] D3DVERTEXELEMENT9* pOutput,[In, Buffer] const D3DVERTEXELEMENT9* pInput)</unmanaged>\t\n            <unmanaged-short>D3DXGenerateOutputDecl</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.CreateBuffer(System.Int32,SharpDX.Direct3D.Blob@)\">\n            <summary>\t\n            <p>Creates a buffer object.</p>\t\n            </summary>\t\n            <param name=\"numBytes\"><dd>  <p>Size of the buffer to create, in bytes.</p> </dd></param>\t\n            <param name=\"bufferOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D.Blob\"/></strong> interface, representing the created buffer object.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: E_OUTOFMEMORY.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCreateBuffer']/*\"/>\t\n            <msdn-id>bb172753</msdn-id>\t\n            <unmanaged>HRESULT D3DXCreateBuffer([In] unsigned int NumBytes,[In] ID3DXBuffer** ppBuffer)</unmanaged>\t\n            <unmanaged-short>D3DXCreateBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.LoadPatchMeshFromXof(SharpDX.Direct3D9.XFileData,System.Int32,SharpDX.Direct3D9.Device,SharpDX.Direct3D.Blob@,SharpDX.Direct3D.Blob@,System.Int32,SharpDX.Direct3D9.PatchMesh@)\">\n            <summary>\t\n            <p>Loads a patch mesh from an <strong><see cref=\"T:SharpDX.Direct3D9.XFileData\"/></strong> object.</p>\t\n            </summary>\t\n            <param name=\"xofObjMeshRef\">No documentation.</param>\t\n            <param name=\"options\">No documentation.</param>\t\n            <param name=\"d3DDeviceRef\">No documentation.</param>\t\n            <param name=\"materialsOut\">No documentation.</param>\t\n            <param name=\"effectInstancesOut\">No documentation.</param>\t\n            <param name=\"numMaterialsRef\">No documentation.</param>\t\n            <param name=\"meshOut\">No documentation.</param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>For mesh files that do not contain effect instance information, default effect instances will be generated from the material information in the .x file. A default effect instance will have default values that correspond to the members of the <strong><see cref=\"T:SharpDX.Direct3D9.Material\"/></strong> structure.</p><p>The default texture name is also filled in, but is handled differently. The name will be Texture0@Name, which corresponds to an effect variable by the name of \"Texture0\" with an annotation called \"Name.\" This will contain the string file name for the texture.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXLoadPatchMeshFromXof']/*\"/>\t\n            <msdn-id>bb172896</msdn-id>\t\n            <unmanaged>HRESULT D3DXLoadPatchMeshFromXof([In] ID3DXFileData* pXofObjMesh,[In] unsigned int Options,[In] IDirect3DDevice9* pD3DDevice,[In] ID3DXBuffer** ppMaterials,[In] ID3DXBuffer** ppEffectInstances,[In] unsigned int* pNumMaterials,[In] ID3DXPatchMesh** ppMesh)</unmanaged>\t\n            <unmanaged-short>D3DXLoadPatchMeshFromXof</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.TessellateNPatches(SharpDX.Direct3D9.Mesh,System.Int32,System.Single,SharpDX.Bool,SharpDX.Direct3D9.Mesh@,SharpDX.Direct3D.Blob@)\">\n            <summary>\t\n            <p>Tessellates the given mesh using the N-patch tessellation scheme.</p>\t\n            </summary>\t\n            <param name=\"meshInRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Mesh\"/></strong> interface, representing the mesh to tessellate.</p> </dd></param>\t\n            <param name=\"adjacencyInRef\"><dd>  <p>Pointer to an array of three DWORDs per face that specify the three neighbors for each face in the source mesh. This parameter may be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"numSegs\"><dd>  <p>Number of segments per edge to tessellate.</p> </dd></param>\t\n            <param name=\"quadraticInterpNormals\"><dd>  <p>Set to <strong>TRUE</strong> to use quadratic interpolation for normals; set to <strong><see cref=\"F:SharpDX.Result.False\"/></strong> for linear interpolation.</p> </dd></param>\t\n            <param name=\"meshOutOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D9.Mesh\"/></strong> interface, representing the returned tessellated mesh.</p> </dd></param>\t\n            <param name=\"adjacencyOutOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D.Blob\"/></strong> interface. If the value of this parameter is not set to <strong><c>null</c></strong>, this buffer will contain an array of three DWORDs per face that specify the three neighbors for each face in the output mesh. This parameter may be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following values: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>This function tessellates by using the N-patch algorithm.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXTessellateNPatches']/*\"/>\t\n            <msdn-id>bb205469</msdn-id>\t\n            <unmanaged>HRESULT D3DXTessellateNPatches([In] ID3DXMesh* pMeshIn,[In] const unsigned int* pAdjacencyIn,[In] float NumSegs,[In] BOOL QuadraticInterpNormals,[In] ID3DXMesh** ppMeshOut,[In] ID3DXBuffer** ppAdjacencyOut)</unmanaged>\t\n            <unmanaged-short>D3DXTessellateNPatches</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.OptimizeVertices(System.IntPtr,System.Int32,System.Int32,SharpDX.Bool,System.Int32[])\">\n            <summary>\t\n            <p>Generates an optimized vertex remapping for a triangle list. This function is commonly used after applying the face remapping generated by <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.OptimizeFaces(System.IntPtr,System.Int32,System.Int32,SharpDX.Bool,System.Int32[])\"/></strong>.</p>\t\n            </summary>\t\n            <param name=\"bIndicesRef\">No documentation.</param>\t\n            <param name=\"cFaces\">No documentation.</param>\t\n            <param name=\"cVertices\">No documentation.</param>\t\n            <param name=\"b32BitIndices\">No documentation.</param>\t\n            <param name=\"vertexRemapRef\">No documentation.</param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>By default, a mesh uses 16 bit indices when it is created unless the application specifies otherwise. To check whether an existing mesh uses 16-bit or 32-bit indices, call <strong><see cref=\"M:SharpDX.Direct3D9.BaseMesh.GetOptions\"/></strong> and check for the <see cref=\"F:SharpDX.Direct3D9.MeshFlags.Use32Bit\"/> flag.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXOptimizeVertices']/*\"/>\t\n            <msdn-id>bb205377</msdn-id>\t\n            <unmanaged>HRESULT D3DXOptimizeVertices([In] const void* pbIndices,[In] unsigned int cFaces,[In] unsigned int cVertices,[In] BOOL b32BitIndices,[In, Buffer] int* pVertexRemap)</unmanaged>\t\n            <unmanaged-short>D3DXOptimizeVertices</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.ComputeIMTFromSignal(SharpDX.Direct3D9.Mesh,System.Int32,System.Int32,System.Single,System.Int32,SharpDX.FunctionCallback,System.IntPtr,SharpDX.FunctionCallback,System.IntPtr,SharpDX.Direct3D.Blob@)\">\n            <summary>\t\n            <p>Calculates per-triangle IMT's from a custom application-specified signal that varies over the surface of the mesh (generally at a higher frequency than vertex data). The signal is evaluated via a user-specified callback function.</p>\t\n            </summary>\t\n            <param name=\"meshRef\"><dd>  <p>A reference to an input mesh (see <strong><see cref=\"T:SharpDX.Direct3D9.Mesh\"/></strong>) which contains the object geometry for calculating the IMT.</p> </dd></param>\t\n            <param name=\"dwTextureIndex\"><dd>  <p>Zero-based texture coordinate index that identifies which set of texture coordinates to use.</p> </dd></param>\t\n            <param name=\"uSignalDimension\"><dd>  <p>The number of components in each data point in the signal.</p> </dd></param>\t\n            <param name=\"fMaxUVDistance\"><dd>  <p>The maximum distance between vertices; the algorithm continues  subdividing until the distance between all vertices is less than or equal to fMaxUVDistance.</p> </dd></param>\t\n            <param name=\"dwOptions\"><dd>  <p>Texture wrap options. This is a combination of one or more <strong><see cref=\"T:SharpDX.Direct3D9.UVAtlasQuality\"/> FLAGS</strong>.</p> </dd></param>\t\n            <param name=\"signalCallbackRef\"><dd>  <p>A reference to a user-provided evaluator function, which will be used to compute the signal value at arbitrary U,V coordinates. The function follows the prototype of LPD3DXIMTSIGNALCALLBACK.</p> </dd></param>\t\n            <param name=\"userDataRef\"><dd>  <p>A reference to a user-defined value which is passed to the signal callback function. Typically used by an application to pass a reference to a data structure that provides context information for the callback function.</p> </dd></param>\t\n            <param name=\"statusCallbackRef\"><dd>  <p>A reference to a callback function to monitor IMT computation progress.</p> </dd></param>\t\n            <param name=\"userContextRef\"><dd>  <p>A reference to a user-defined variable which is passed to the status callback function. Typically used by an application to pass a reference to a data structure that provides context information for the callback function.</p> </dd></param>\t\n            <param name=\"iMTDataOut\"><dd>  <p>A reference to the buffer (see <strong><see cref=\"T:SharpDX.Direct3D.Blob\"/></strong>) containing the returned IMT array. This array can be provided as input to the D3DX UVAtlas Functions to prioritize texture-space allocation in the texture parameterization.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>; otherwise, the value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>This function requires that the input mesh contain a signal-to-mesh texture mapping (ie. texture coordinates). It allows the user to define a signal arbitrarily over the surface of the mesh.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXComputeIMTFromSignal']/*\"/>\t\n            <msdn-id>bb172739</msdn-id>\t\n            <unmanaged>HRESULT D3DXComputeIMTFromSignal([In] ID3DXMesh* pMesh,[In] unsigned int dwTextureIndex,[In] unsigned int uSignalDimension,[In] float fMaxUVDistance,[In] unsigned int dwOptions,[In] __function__stdcall* pSignalCallback,[In] void* pUserData,[In] __function__stdcall* pStatusCallback,[In] void* pUserContext,[In] ID3DXBuffer** ppIMTData)</unmanaged>\t\n            <unmanaged-short>D3DXComputeIMTFromSignal</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.ValidPatchMesh(SharpDX.Direct3D9.PatchMesh,System.Int32,System.Int32,SharpDX.Direct3D.Blob@)\">\n            <summary>\t\n            <p>Validates a patch mesh, returning the number of degenerate vertices and patches.</p>\t\n            </summary>\t\n            <param name=\"meshRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.PatchMesh\"/></strong> interface, representing the patch mesh to be tested.</p> </dd></param>\t\n            <param name=\"dwcDegenerateVertices\"><dd>  <p>Returns the number of degenerate vertices in the patch mesh.</p> </dd></param>\t\n            <param name=\"dwcDegeneratePatches\"><dd>  <p>Returns the number of degenerate patches in the patch mesh.</p> </dd></param>\t\n            <param name=\"errorsAndWarningsOut\"><dd>  <p>Returns a reference to a buffer containing a string of errors and warnings that explain the problems found in the patch mesh.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>This method validates the mesh by checking for invalid indices. Error information is available from the debugger output.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXValidPatchMesh']/*\"/>\t\n            <msdn-id>bb205483</msdn-id>\t\n            <unmanaged>HRESULT D3DXValidPatchMesh([In] ID3DXPatchMesh* pMesh,[In] unsigned int* dwcDegenerateVertices,[In] unsigned int* dwcDegeneratePatches,[In] ID3DXBuffer** ppErrorsAndWarnings)</unmanaged>\t\n            <unmanaged-short>D3DXValidPatchMesh</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.ValidMesh(SharpDX.Direct3D9.Mesh,System.Int32,SharpDX.Direct3D.Blob@)\">\n            <summary>\t\n            <p>Validates a mesh.</p>\t\n            </summary>\t\n            <param name=\"meshInRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Mesh\"/></strong> interface, representing the mesh to be tested.</p> </dd></param>\t\n            <param name=\"adjacencyRef\"><dd>  <p>Pointer to an array of three DWORDs per face that specify the three neighbors for each face in the mesh to be tested.</p> </dd></param>\t\n            <param name=\"errorsAndWarningsOut\"><dd>  <p>Returns a buffer containing a string of errors and warnings, which explain the problems found in the mesh.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: D3DXERR_INVALIDMESH, <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>This method validates the mesh by checking for invalid indices. Error information is available from the debugger output.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXValidMesh']/*\"/>\t\n            <msdn-id>bb205482</msdn-id>\t\n            <unmanaged>HRESULT D3DXValidMesh([In] ID3DXMesh* pMeshIn,[In] const unsigned int* pAdjacency,[In] ID3DXBuffer** ppErrorsAndWarnings)</unmanaged>\t\n            <unmanaged-short>D3DXValidMesh</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.UVAtlasPartition(SharpDX.Direct3D9.Mesh,System.Int32,System.Single,System.Int32,System.Int32,System.Int32,System.Single,SharpDX.FunctionCallback,System.Single,System.IntPtr,System.Int32,SharpDX.Direct3D9.Mesh@,SharpDX.Direct3D.Blob@,SharpDX.Direct3D.Blob@,SharpDX.Direct3D.Blob@,System.Single,System.Int32)\">\n            <summary>\t\n            <p>Create a UV atlas for a mesh.</p>\t\n            </summary>\t\n            <param name=\"meshRef\"><dd>  <p>Pointer to an input mesh (see <strong><see cref=\"T:SharpDX.Direct3D9.Mesh\"/></strong>) that contains the object geometry for calculating the atlas. At a minimum, the mesh must contain position data and 2D texture coordinates.</p> </dd></param>\t\n            <param name=\"uMaxChartNumber\"><dd>  <p>The maximum number of charts to partition the mesh into. See remarks about the partitioning modes. Use 0 to tell D3DX that the atlas should be parameterized based on stretch.</p> </dd></param>\t\n            <param name=\"fMaxStretch\"><dd>  <p>The amount of stretching allowed. 0 means no stretching is allowed, 1 means any amount of stretching can be used.</p> </dd></param>\t\n            <param name=\"dwTextureIndex\"><dd>  <p>Zero-based texture coordinate index that identifies which set of texture coordinates to use.</p> </dd></param>\t\n            <param name=\"dwAdjacencyRef\"><dd>  <p>A reference to an array of adjacency data with 3 DWORDs per face, indicating which triangles are adjacent to each other (see <strong><see cref=\"M:SharpDX.Direct3D9.BaseMesh.GenerateAdjacency(System.Single,System.Int32)\"/></strong>).</p> </dd></param>\t\n            <param name=\"dwFalseEdgeAdjacencyRef\"><dd>  <p>An array with 3 DWORDS per face. Each face indicates if an edge is false or not. A non-false edge is indicated by -1, a false edge is indicated by any other value. This enables the parameterization of a mesh of quads where the edges down the middle of each quad will not be cut.</p> </dd></param>\t\n            <param name=\"fIMTArrayRef\"><dd>  <p>A reference to an array of integrated metric tensors that describes how to stretch a triangle (see IntegratedMetricTensor).</p> </dd></param>\t\n            <param name=\"statusCallbackRef\"><dd>  <p>A reference to a callback function (see LPD3DXUVATLASCB) that is useful for monitoring progress.</p> </dd></param>\t\n            <param name=\"fCallbackFrequency\"><dd>  <p>Specify how often D3DX will call the callback; a reasonable default value is 0.0001f.</p> </dd></param>\t\n            <param name=\"userContextRef\"><dd>  <p>Pointer to a user-defined value that is passed to the callback function; typically used by an application to pass a reference to a data structure that provides context information for the callback function.</p> </dd></param>\t\n            <param name=\"dwOptions\"><dd>  <p>Specify the quality of the charts generated by combining one or more <strong>D3DXUVATLAS</strong> flags.</p> </dd></param>\t\n            <param name=\"meshOutOut\"><dd>  <p>Pointer to the created mesh with the atlas (see <strong><see cref=\"T:SharpDX.Direct3D9.Mesh\"/></strong>).</p> </dd></param>\t\n            <param name=\"facePartitioningOut\"><dd>  <p>A reference to an array of the final face-partitioning data. Each element contains one DWORD per face (see <strong><see cref=\"T:SharpDX.Direct3D.Blob\"/></strong>).</p> </dd></param>\t\n            <param name=\"vertexRemapArrayOut\"><dd>  <p>A reference to an array of remapped vertices. Each array element identifies the original vertex each final vertex came from (if the vertex was split during remapping). Each array element contains one DWORD per vertex.</p> </dd></param>\t\n            <param name=\"partitionResultAdjacencyOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D.Blob\"/></strong> interface. This buffer will contain an array of three DWORDs per face that specify the three neighbors for each face in the output mesh. This parameter must not be <strong><c>null</c></strong>, because the subsequent call to <see cref=\"M:SharpDX.Direct3D9.D3DX9.UVAtlasPack(SharpDX.Direct3D9.Mesh,System.Int32,System.Int32,System.Single,System.Int32,System.Int32,SharpDX.FunctionCallback,System.Single,System.IntPtr,System.Int32,SharpDX.Direct3D.Blob)\"/>() requires it.</p> </dd></param>\t\n            <param name=\"fMaxStretchOutRef\"><dd>  <p>A reference to the maximum stretch value generated by the atlas algorithm. The range is between 0.0 and 1.0.</p> </dd></param>\t\n            <param name=\"uNumChartsOutRef\"><dd>  <p>A reference to the number of charts created by the atlas algorithm. If dwMaxChartNumber is too low, this parameter will return the minimum number of charts required to create an atlas.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>; otherwise, the value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p><see cref=\"M:SharpDX.Direct3D9.D3DX9.UVAtlasPartition(SharpDX.Direct3D9.Mesh,System.Int32,System.Single,System.Int32,System.Int32,System.Int32,System.Single,SharpDX.FunctionCallback,System.Single,System.IntPtr,System.Int32,SharpDX.Direct3D9.Mesh@,SharpDX.Direct3D.Blob@,SharpDX.Direct3D.Blob@,SharpDX.Direct3D.Blob@,System.Single,System.Int32)\"/> is similar to <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.UVAtlasCreate(SharpDX.Direct3D9.Mesh,System.Int32,System.Single,System.Int32,System.Int32,System.Single,System.Int32,System.Int32,System.Int32,System.Single,SharpDX.FunctionCallback,System.Single,System.IntPtr,System.Int32,SharpDX.Direct3D9.Mesh@,SharpDX.Direct3D.Blob@,SharpDX.Direct3D.Blob@,System.Single,System.Int32)\"/></strong>, except that <see cref=\"M:SharpDX.Direct3D9.D3DX9.UVAtlasPartition(SharpDX.Direct3D9.Mesh,System.Int32,System.Single,System.Int32,System.Int32,System.Int32,System.Single,SharpDX.FunctionCallback,System.Single,System.IntPtr,System.Int32,SharpDX.Direct3D9.Mesh@,SharpDX.Direct3D.Blob@,SharpDX.Direct3D.Blob@,SharpDX.Direct3D.Blob@,System.Single,System.Int32)\"/> does not performing the final packing step.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXUVAtlasPartition']/*\"/>\t\n            <msdn-id>bb205481</msdn-id>\t\n            <unmanaged>HRESULT D3DXUVAtlasPartition([In] ID3DXMesh* pMesh,[In] unsigned int uMaxChartNumber,[In] float fMaxStretch,[In] unsigned int dwTextureIndex,[In] const unsigned int* pdwAdjacency,[In] const unsigned int* pdwFalseEdgeAdjacency,[In] const float* pfIMTArray,[In] __function__stdcall* pStatusCallback,[In] float fCallbackFrequency,[In] void* pUserContext,[In] unsigned int dwOptions,[In] ID3DXMesh** ppMeshOut,[In] ID3DXBuffer** ppFacePartitioning,[In] ID3DXBuffer** ppVertexRemapArray,[In] ID3DXBuffer** ppPartitionResultAdjacency,[In] float* pfMaxStretchOut,[In] unsigned int* puNumChartsOut)</unmanaged>\t\n            <unmanaged-short>D3DXUVAtlasPartition</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.SplitMesh(SharpDX.Direct3D9.Mesh,System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D.Blob@,SharpDX.Direct3D.Blob@,SharpDX.Direct3D.Blob@,SharpDX.Direct3D.Blob@)\">\n            <summary>\t\n            <p>Splits a mesh into meshes smaller than the specified size.</p>\t\n            </summary>\t\n            <param name=\"meshInRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Mesh\"/></strong> interface, representing the source mesh.</p> </dd></param>\t\n            <param name=\"adjacencyInRef\"><dd>  <p>Pointer to an array of three DWORDs per face that specify the three neighbors for each face in the mesh to be simplified.</p> </dd></param>\t\n            <param name=\"maxSize\"><dd>  <p> Maximum number of vertices in the resulting mesh.</p> </dd></param>\t\n            <param name=\"options\"><dd>  <p>Option flags for the new meshes.</p> </dd></param>\t\n            <param name=\"meshesOutRef\"><dd>  <p>Number of meshes returned.</p> </dd></param>\t\n            <param name=\"meshArrayOutOut\"><dd>  <p>Buffer containing an array of <strong><see cref=\"T:SharpDX.Direct3D9.Mesh\"/></strong> interfaces for the new meshes. For a source mesh split into n meshes, <em>ppMeshArrayOut</em> is an array of n <strong><see cref=\"T:SharpDX.Direct3D9.Mesh\"/></strong> references.</p> </dd></param>\t\n            <param name=\"adjacencyArrayOutOut\"><dd>  <p>Buffer containing an array of adjacency arrays (DWORDs) for the new meshes. See <strong><see cref=\"T:SharpDX.Direct3D.Blob\"/></strong>. This parameter is optional.</p> </dd></param>\t\n            <param name=\"faceRemapArrayOutOut\"><dd>  <p>Buffer containing an array of face remap arrays (DWORDs) for the new meshes. See <strong><see cref=\"T:SharpDX.Direct3D.Blob\"/></strong>. This parameter is optional.</p> </dd></param>\t\n            <param name=\"vertRemapArrayOutOut\"><dd>  <p>Buffer containing an array of vertex remap arrays for the new meshes. See <strong><see cref=\"T:SharpDX.Direct3D.Blob\"/></strong>. This parameter is optional.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following values: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>A common use of this function is to split a mesh with 32-bit indices (more than 65535 vertices) into more than one mesh, each of which has 16-bit indices.</p><p>The adjacency, vertex remap and face remap arrays are arrays are DWORDs where each array contains n DWORD references, followed by the DWORD data referenced by the references. For example, to obtain the face remap information for face 3 in mesh 2, the following code could be used, assuming the face remap data was returned in a variable named <em>ppFaceRemapArrayOut</em>.</p><pre><code> const DWORD **face_remaps =  static_cast&lt;DWORD **&gt;(ppFaceRemapArrayOut-&gt;GetBufferPointer());\t\n            const DWORD remap = face_remaps[2][3];\t\n            </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXSplitMesh']/*\"/>\t\n            <msdn-id>bb205465</msdn-id>\t\n            <unmanaged>HRESULT D3DXSplitMesh([In] ID3DXMesh* pMeshIn,[In] const unsigned int* pAdjacencyIn,[In] const unsigned int MaxSize,[In] const unsigned int Options,[In] unsigned int* pMeshesOut,[In] ID3DXBuffer** ppMeshArrayOut,[In] ID3DXBuffer** ppAdjacencyArrayOut,[In] ID3DXBuffer** ppFaceRemapArrayOut,[In] ID3DXBuffer** ppVertRemapArrayOut)</unmanaged>\t\n            <unmanaged-short>D3DXSplitMesh</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.ComputeTangent(SharpDX.Direct3D9.Mesh,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Computes the tangent vectors for the texture coordinates given in the texture stage. Provided to support legacy applications. Use <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.ComputeTangentFrameEx(SharpDX.Direct3D9.Mesh,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Single,System.Single,System.Single,SharpDX.Direct3D9.Mesh@,SharpDX.Direct3D.Blob@)\"/></strong> for better results.</p>\t\n            </summary>\t\n            <param name=\"mesh\">No documentation.</param>\t\n            <param name=\"texStage\">No documentation.</param>\t\n            <param name=\"tangentIndex\">No documentation.</param>\t\n            <param name=\"binormIndex\">No documentation.</param>\t\n            <param name=\"wrap\">No documentation.</param>\t\n            <param name=\"adjacencyRef\">No documentation.</param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>If the mesh vertex declaration specifies tangent or binormal fields, <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.ComputeTangent(SharpDX.Direct3D9.Mesh,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32)\"/></strong> will update any user-supplied tangent or binormal data. Alternatively, set TangentIndex to D3DX_DEFAULT to not update the user-supplied tangent data, or set BinormIndex to D3DX_DEFAULT to not update the user-supplied binormal data. TexStageIndex cannot be set to D3DX_DEFAULT.</p><p><strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.ComputeTangent(SharpDX.Direct3D9.Mesh,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32)\"/></strong> depends on the mesh vertex declaration containing either the binormal field (BinormIndex), the tangent field (TangentIndex), or both. If both are missing, this function will fail.</p><p>This function simply calls <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.ComputeTangentFrameEx(SharpDX.Direct3D9.Mesh,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Single,System.Single,System.Single,SharpDX.Direct3D9.Mesh@,SharpDX.Direct3D.Blob@)\"/></strong> with the following input parameters:</p><pre><code> <see cref=\"M:SharpDX.Direct3D9.D3DX9.ComputeTangentFrameEx(SharpDX.Direct3D9.Mesh,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Single,System.Single,System.Single,SharpDX.Direct3D9.Mesh@,SharpDX.Direct3D.Blob@)\"/>( Mesh, <see cref=\"F:SharpDX.Direct3D9.DeclarationUsage.TextureCoordinate\"/>, TexStageIndex, ( BinormIndex == D3DX_DEFAULT ) ? D3DX_DEFAULT : <see cref=\"F:SharpDX.Direct3D9.DeclarationUsage.Binormal\"/>, // provides backward function compatibility BinormIndex, ( TangentIndex == D3DX_DEFAULT ) ? D3DX_DEFAULT : <see cref=\"F:SharpDX.Direct3D9.DeclarationUsage.Tangent\"/>, TangentIndex, D3DX_DEFAULT, // do not store normals 0, ( Wrap ? <see cref=\"F:SharpDX.Direct3D9.TangentOptions.WrapUV\"/> : 0 ) | <see cref=\"F:SharpDX.Direct3D9.TangentOptions.GenerateInPlace\"/> | <see cref=\"F:SharpDX.Direct3D9.TangentOptions.OrthogonalizeFromU\"/>, pAdjacency, -1.01f, -0.01f, -1.01f, <c>null</c>, <c>null</c>);\t\n            </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXComputeTangent']/*\"/>\t\n            <msdn-id>bb172743</msdn-id>\t\n            <unmanaged>HRESULT D3DXComputeTangent([In] ID3DXMesh* Mesh,[In] unsigned int TexStage,[In] unsigned int TangentIndex,[In] unsigned int BinormIndex,[In] unsigned int Wrap,[In] const unsigned int* pAdjacency)</unmanaged>\t\n            <unmanaged-short>D3DXComputeTangent</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.Intersect(SharpDX.Direct3D9.BaseMesh,SharpDX.Vector3,SharpDX.Vector3,SharpDX.Bool,System.Int32,System.Single,System.Single,System.Single,SharpDX.Direct3D.Blob@,System.Int32)\">\n            <summary>\t\n            <p>Determines if a ray intersects with a mesh.</p>\t\n            </summary>\t\n            <param name=\"meshRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.BaseMesh\"/></strong> interface, representing the mesh to be tested.</p> </dd></param>\t\n            <param name=\"rayPosRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Vector3\"/></strong> structure, specifying the point where the ray begins.</p> </dd></param>\t\n            <param name=\"rayDirRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Vector3\"/></strong> structure, specifying the direction of the ray.</p> </dd></param>\t\n            <param name=\"hitRef\"><dd>  <p>Pointer to a  <see cref=\"T:SharpDX.Bool\"/>. If the ray intersects a triangular face on the mesh, this value will be set to <strong>TRUE</strong>. Otherwise, this value is set to <strong><see cref=\"F:SharpDX.Result.False\"/></strong>.</p> </dd></param>\t\n            <param name=\"faceIndexRef\"><dd>  <p>Pointer to an index value of the face closest to the ray origin, if pHit is <strong>TRUE</strong>.</p> </dd></param>\t\n            <param name=\"uRef\"><dd>  <p>Pointer to a barycentric hit coordinate, U.</p> </dd></param>\t\n            <param name=\"vRef\"><dd>  <p>Pointer to a barycentric hit coordinate, V.</p> </dd></param>\t\n            <param name=\"distRef\"><dd>  <p>Pointer to a ray intersection parameter distance.</p> </dd></param>\t\n            <param name=\"allHitsOut\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D.Blob\"/></strong> object, containing an array of <strong>D3DXINTERSECTINFO</strong> structures.</p> </dd></param>\t\n            <param name=\"countOfHitsRef\"><dd>  <p>Pointer to a DWORD that contains the number of entries in the ppAllHits array.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be: E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>The <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.Intersect(SharpDX.Direct3D9.BaseMesh,SharpDX.Vector3,SharpDX.Vector3,SharpDX.Bool,System.Int32,System.Single,System.Single,System.Single,SharpDX.Direct3D.Blob@,System.Int32)\"/></strong> function provides a way to understand points in and around a triangle, independent of where the triangle is actually located. This function returns the resulting point by using the following equation: V1 + U(V2 - V1) + V(V3 - V1).</p><p>Any point in the plane V1V2V3 can be represented by the barycentric coordinate (U,V). The parameter U controls how much V2 gets weighted into the result, and the parameter V controls how much V3 gets weighted into the result. Lastly, the value of [1 - (U + V)] controls how much V1 gets weighted into the result.</p><p>Barycentric coordinates are a form of general coordinates. In this context, using barycentric coordinates represents a change in coordinate systems. What holds true for Cartesian coordinates holds true for barycentric coordinates.</p><p>Barycentric coordinates define a point inside a triangle in terms of the triangle's vertices.  For a more in-depth description of barycentric coordinates, see Mathworld's Barycentric Coordinates Description.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXIntersect']/*\"/>\t\n            <msdn-id>bb172882</msdn-id>\t\n            <unmanaged>HRESULT D3DXIntersect([In] ID3DXBaseMesh* pMesh,[In] const D3DXVECTOR3* pRayPos,[In] const D3DXVECTOR3* pRayDir,[In] BOOL* pHit,[In] unsigned int* pFaceIndex,[In] float* pU,[In] float* pV,[In] float* pDist,[In] ID3DXBuffer** ppAllHits,[In] unsigned int* pCountOfHits)</unmanaged>\t\n            <unmanaged-short>D3DXIntersect</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.UVAtlasPack(SharpDX.Direct3D9.Mesh,System.Int32,System.Int32,System.Single,System.Int32,System.Int32,SharpDX.FunctionCallback,System.Single,System.IntPtr,System.Int32,SharpDX.Direct3D.Blob)\">\n            <summary>\t\n            <p>Pack mesh partitioning data into an atlas.</p>\t\n            </summary>\t\n            <param name=\"meshRef\"><dd>  <p>Pointer to an input mesh (see <strong><see cref=\"T:SharpDX.Direct3D9.Mesh\"/></strong>) which contains the object geometry for calculating the atlas. At a minimum, the mesh must contain position data and 2D texture coordinates.</p> </dd></param>\t\n            <param name=\"uWidth\"><dd>  <p>Texture width.</p> </dd></param>\t\n            <param name=\"uHeight\"><dd>  <p>Texture height.</p> </dd></param>\t\n            <param name=\"fGutter\"><dd>  <p>The minimum distance, in texels, between two charts on the atlas. The gutter is always scaled by the width; so, if a gutter of 2.5 is used on a 512x512 texture, then the minimum distance between two charts is 2.5 / 512.0 texels.</p> </dd></param>\t\n            <param name=\"dwTextureIndex\"><dd>  <p>Zero-based texture coordinate index that identifies which set of texture coordinates to use.</p> </dd></param>\t\n            <param name=\"dwPartitionResultAdjacencyRef\"><dd>  <p>Pointer to an array of three DWORDs per face that specify the three neighbors for each face in the mesh. It should be derived from the ppPartitionResultAdjacency returned from <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.UVAtlasPartition(SharpDX.Direct3D9.Mesh,System.Int32,System.Single,System.Int32,System.Int32,System.Int32,System.Single,SharpDX.FunctionCallback,System.Single,System.IntPtr,System.Int32,SharpDX.Direct3D9.Mesh@,SharpDX.Direct3D.Blob@,SharpDX.Direct3D.Blob@,SharpDX.Direct3D.Blob@,System.Single,System.Int32)\"/></strong>. This value cannot be <strong><c>null</c></strong>, because Pack needs to know where charts were cut in the partition step in order to find the edges of each chart.</p> </dd></param>\t\n            <param name=\"statusCallbackRef\"><dd>  <p>A reference to a callback function (see LPD3DXUVATLASCB) that is useful for monitoring progress.</p> </dd></param>\t\n            <param name=\"fCallbackFrequency\"><dd>  <p>Specify how often D3DX will call the callback; a reasonable default value is 0.0001f.</p> </dd></param>\t\n            <param name=\"userContextRef\"><dd>  <p>A void reference to be passed back to the callback function.</p> </dd></param>\t\n            <param name=\"dwOptions\"><dd>  <p>This options parameter is currently reserved.</p> </dd></param>\t\n            <param name=\"facePartitioningRef\"><dd>  <p>A reference to an <strong><see cref=\"T:SharpDX.Direct3D.Blob\"/></strong> containing the array of the final face-partitioning. Each element contains one DWORD per face.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>; otherwise, the value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXUVAtlasPack']/*\"/>\t\n            <msdn-id>bb205480</msdn-id>\t\n            <unmanaged>HRESULT D3DXUVAtlasPack([In] ID3DXMesh* pMesh,[In] unsigned int uWidth,[In] unsigned int uHeight,[In] float fGutter,[In] unsigned int dwTextureIndex,[In] const unsigned int* pdwPartitionResultAdjacency,[In] __function__stdcall* pStatusCallback,[In] float fCallbackFrequency,[In] void* pUserContext,[In] unsigned int dwOptions,[In] ID3DXBuffer* pFacePartitioning)</unmanaged>\t\n            <unmanaged-short>D3DXUVAtlasPack</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.CreateNPatchMesh(SharpDX.Direct3D9.Mesh,SharpDX.Direct3D9.PatchMesh@)\">\n            <summary>\t\n            <p>Creates an N-patch mesh from a triangle mesh.</p>\t\n            </summary>\t\n            <param name=\"meshSysMemRef\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D9.Mesh\"/></strong> interface that represents the triangle mesh object.</p> </dd></param>\t\n            <param name=\"patchMeshRef\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D9.PatchMesh\"/></strong> interface that represents the created patch mesh object.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCreateNPatchMesh']/*\"/>\t\n            <msdn-id>bb172782</msdn-id>\t\n            <unmanaged>HRESULT D3DXCreateNPatchMesh([In] ID3DXMesh* pMeshSysMem,[In] ID3DXPatchMesh** pPatchMesh)</unmanaged>\t\n            <unmanaged-short>D3DXCreateNPatchMesh</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.LoadSkinMeshFromXof(SharpDX.Direct3D9.XFileData,System.Int32,SharpDX.Direct3D9.Device,SharpDX.Direct3D.Blob@,SharpDX.Direct3D.Blob@,SharpDX.Direct3D.Blob@,System.Int32,SharpDX.Direct3D9.SkinInfo@,SharpDX.Direct3D9.Mesh@)\">\n            <summary>\t\n            <p>Loads a skin mesh from a DirectX .x file data object.</p>\t\n            </summary>\t\n            <param name=\"xofMeshRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.XFileData\"/></strong> interface, representing the file data object to load.</p> </dd></param>\t\n            <param name=\"options\"><dd>  <p>Combination of one or more flags, from the <strong>D3DXMESH</strong> enumeration, specifying creation options for the mesh.</p> </dd></param>\t\n            <param name=\"d3DDeviceRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface, the device object associated with the mesh.</p> </dd></param>\t\n            <param name=\"adjacencyOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D.Blob\"/></strong> interface. When this method returns, this parameter is filled with an array of three  DWORDs per face that specify the three neighbors for each face in the mesh.</p> </dd></param>\t\n            <param name=\"materialsOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D.Blob\"/></strong> interface. When the method returns, this parameter is filled with an array of <strong><see cref=\"T:SharpDX.Direct3D9.ExtendedMaterial\"/></strong> structures.</p> </dd></param>\t\n            <param name=\"effectInstancesOut\"><dd>  <p>Pointer to a buffer containing an array of effect instances, one per attribute group in the returned mesh. An effect instance is a particular instance of state information used to initialize an effect. See <strong><see cref=\"T:SharpDX.Direct3D9.EffectInstance\"/></strong>. For more information about accessing the buffer, see <strong><see cref=\"T:SharpDX.Direct3D.Blob\"/></strong>.</p> </dd></param>\t\n            <param name=\"matOutRef\"><dd>  <p>Pointer to the number of <strong><see cref=\"T:SharpDX.Direct3D9.ExtendedMaterial\"/></strong> structures in the  <em>ppMaterials</em> array, when the method returns.</p> </dd></param>\t\n            <param name=\"skinInfoOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D9.SkinInfo\"/></strong> interface, which represents the skinning information. \t\t\t\t\t\t\t\t\t </p> </dd></param>\t\n            <param name=\"meshOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D9.Mesh\"/></strong> interface, which represents the loaded mesh. \t\t\t\t\t\t\t\t\t </p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA, E_OUTOFMEMORY</p></returns>\t\n            <remarks>\t\n            <p>This method takes a reference to an internal object in the .x file, enabling you to load the frame hierarchy.</p><p>For mesh files that do not contain effect instance information, default effect instances will be generated from the material information in the .x file. A default effect instance will have default values that correspond to the members of the <strong><see cref=\"T:SharpDX.Direct3D9.Material\"/></strong> structure.</p><p>The default texture name is also filled in, but is handled differently. The name will be Texture0@Name, which corresponds to an effect variable by the name of \"Texture0\" with an annotation called \"Name.\" This will contain the string file name for the texture.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXLoadSkinMeshFromXof']/*\"/>\t\n            <msdn-id>bb172899</msdn-id>\t\n            <unmanaged>HRESULT D3DXLoadSkinMeshFromXof([In] ID3DXFileData* pxofMesh,[In] unsigned int Options,[In] IDirect3DDevice9* pD3DDevice,[In] ID3DXBuffer** ppAdjacency,[In] ID3DXBuffer** ppMaterials,[In] ID3DXBuffer** ppEffectInstances,[In] unsigned int* pMatOut,[In] ID3DXSkinInfo** ppSkinInfo,[In] ID3DXMesh** ppMesh)</unmanaged>\t\n            <unmanaged-short>D3DXLoadSkinMeshFromXof</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.CreateSkinInfoFVF(System.Int32,SharpDX.Direct3D9.VertexFormat,System.Int32,SharpDX.Direct3D9.SkinInfo@)\">\n            <summary>\t\n            <p>Creates an empty skin mesh object using a flexible vertex format (FVF) code.</p>\t\n            </summary>\t\n            <param name=\"numVertices\"><dd>  <p>Number of vertices for the skin mesh.</p> </dd></param>\t\n            <param name=\"fvf\"><dd>  <p>Combination of <see cref=\"T:SharpDX.Direct3D9.VertexFormat\"/> that describes the vertex format for the returned skin mesh.</p> </dd></param>\t\n            <param name=\"numBones\"><dd>  <p>Number of bones for the skin mesh.</p> </dd></param>\t\n            <param name=\"skinInfoOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D9.SkinInfo\"/></strong> interface, representing the created skin information object.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>Use <strong>SetBoneInfluence</strong> to populate the empty skin mesh object returned by this method.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCreateSkinInfoFVF']/*\"/>\t\n            <msdn-id>bb172794</msdn-id>\t\n            <unmanaged>HRESULT D3DXCreateSkinInfoFVF([In] unsigned int NumVertices,[In] D3DFVF FVF,[In] unsigned int NumBones,[In] ID3DXSkinInfo** ppSkinInfo)</unmanaged>\t\n            <unmanaged-short>D3DXCreateSkinInfoFVF</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.IntersectSubset(SharpDX.Direct3D9.BaseMesh,System.Int32,SharpDX.Vector3,SharpDX.Vector3,SharpDX.Bool,System.Int32,System.Single,System.Single,System.Single,SharpDX.Direct3D.Blob@,System.Int32)\">\n            <summary>\t\n            <p>Intersects the specified ray with the given mesh subset. This provides similar functionality to <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.Intersect(SharpDX.Direct3D9.BaseMesh,SharpDX.Vector3,SharpDX.Vector3,SharpDX.Bool,System.Int32,System.Single,System.Single,System.Single,SharpDX.Direct3D.Blob@,System.Int32)\"/></strong>.</p>\t\n            </summary>\t\n            <param name=\"meshRef\">No documentation.</param>\t\n            <param name=\"attribId\">No documentation.</param>\t\n            <param name=\"rayPosRef\">No documentation.</param>\t\n            <param name=\"rayDirRef\">No documentation.</param>\t\n            <param name=\"hitRef\">No documentation.</param>\t\n            <param name=\"faceIndexRef\">No documentation.</param>\t\n            <param name=\"uRef\">No documentation.</param>\t\n            <param name=\"vRef\">No documentation.</param>\t\n            <param name=\"distRef\">No documentation.</param>\t\n            <param name=\"allHitsOut\">No documentation.</param>\t\n            <param name=\"countOfHitsRef\">No documentation.</param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be the following value: E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>The <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.IntersectSubset(SharpDX.Direct3D9.BaseMesh,System.Int32,SharpDX.Vector3,SharpDX.Vector3,SharpDX.Bool,System.Int32,System.Single,System.Single,System.Single,SharpDX.Direct3D.Blob@,System.Int32)\"/></strong> function provides a way to understand points in and around a triangle, independent of where the triangle is actually located. This function returns the resulting point by using the following equation: V1 + U(V2 - V1) + V(V3 - V1).</p><p>Any point in the plane V1V2V3 can be represented by the barycentric coordinate (U,V). The parameter U controls how much V2 gets weighted into the result and the parameter V controls how much V3 gets weighted into the result. Lastly, the value of [1 - (U + V)] controls how much V1 gets weighted into the result.</p><p>Barycentric coordinates are a form of general coordinates. In this context, using barycentric coordinates represents a change in coordinate systems. What holds true for Cartesian coordinates holds true for barycentric coordinates.</p><p>Barycentric coordinates define a point inside a triangle in terms of the triangle's vertices.  For a more in-depth description of barycentric coordinates, see Mathworld's Barycentric Coordinates Description.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXIntersectSubset']/*\"/>\t\n            <msdn-id>bb172884</msdn-id>\t\n            <unmanaged>HRESULT D3DXIntersectSubset([In] ID3DXBaseMesh* pMesh,[In] unsigned int AttribId,[In] const D3DXVECTOR3* pRayPos,[In] const D3DXVECTOR3* pRayDir,[In] BOOL* pHit,[In] unsigned int* pFaceIndex,[In] float* pU,[In] float* pV,[In] float* pDist,[In] ID3DXBuffer** ppAllHits,[In] unsigned int* pCountOfHits)</unmanaged>\t\n            <unmanaged-short>D3DXIntersectSubset</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.GetFVFVertexSize(SharpDX.Direct3D9.VertexFormat)\">\n            <summary>\t\n            <p>Returns the size of a vertex for a flexible vertex format (FVF).</p>\t\n            </summary>\t\n            <param name=\"fvf\"><dd>  <p>FVF to be queried. A combination of <see cref=\"T:SharpDX.Direct3D9.VertexFormat\"/>.</p> </dd></param>\t\n            <returns><p>The FVF vertex size, in bytes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXGetFVFVertexSize']/*\"/>\t\n            <msdn-id>bb172866</msdn-id>\t\n            <unmanaged>unsigned int D3DXGetFVFVertexSize([In] D3DFVF FVF)</unmanaged>\t\n            <unmanaged-short>D3DXGetFVFVertexSize</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.GetDeclLength(SharpDX.Direct3D9.VertexElement[])\">\n            <summary>\t\n            <p>Returns the number of elements in the vertex declaration.</p>\t\n            </summary>\t\n            <param name=\"declRef\"><dd>  <p>A reference to the vertex declaration. See <strong><see cref=\"T:SharpDX.Direct3D9.VertexElement\"/></strong>.</p> </dd></param>\t\n            <returns><p>The number of elements in the vertex declaration.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXGetDeclLength']/*\"/>\t\n            <msdn-id>bb172863</msdn-id>\t\n            <unmanaged>unsigned int D3DXGetDeclLength([In, Buffer] const D3DVERTEXELEMENT9* pDecl)</unmanaged>\t\n            <unmanaged-short>D3DXGetDeclLength</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.CleanMesh(SharpDX.Direct3D9.CleanType,SharpDX.Direct3D9.Mesh,System.Int32,SharpDX.Direct3D9.Mesh@,System.Int32,SharpDX.Direct3D.Blob@)\">\n            <summary>\t\n            <p>Cleans a mesh, preparing it for simplification.</p>\t\n            </summary>\t\n            <param name=\"cleanType\"><dd>  <p>Vertex operations to perform in preparation for mesh cleaning. See <strong><see cref=\"T:SharpDX.Direct3D9.CleanType\"/></strong>.</p> </dd></param>\t\n            <param name=\"meshInRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Mesh\"/></strong> interface, representing the mesh to be cleaned.</p> </dd></param>\t\n            <param name=\"adjacencyInRef\"><dd>  <p>Pointer to an array of three DWORDs per face that specify the three neighbors for each face in the mesh to be cleaned.</p> </dd></param>\t\n            <param name=\"meshOutOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D9.Mesh\"/></strong> interface, representing the returned cleaned mesh. The same mesh is returned that was passed in if no cleaning was necessary.</p> </dd></param>\t\n            <param name=\"adjacencyOutRef\"><dd>  <p>Pointer to an array of three DWORDs per face that specify the three neighbors for each face in the output mesh.</p> </dd></param>\t\n            <param name=\"errorsAndWarningsOut\"><dd>  <p>Returns a buffer containing a string of errors and warnings, which explain the problems found in the mesh.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>This function cleans a mesh using the cleaning method and options specified in the CleanType parameter. See the <strong><see cref=\"T:SharpDX.Direct3D9.CleanType\"/></strong> enumeration for a description of the available options.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCleanMesh']/*\"/>\t\n            <msdn-id>bb172719</msdn-id>\t\n            <unmanaged>HRESULT D3DXCleanMesh([In] D3DXCLEANTYPE CleanType,[In] ID3DXMesh* pMeshIn,[In] const unsigned int* pAdjacencyIn,[In] ID3DXMesh** ppMeshOut,[In] unsigned int* pAdjacencyOut,[In] ID3DXBuffer** ppErrorsAndWarnings)</unmanaged>\t\n            <unmanaged-short>D3DXCleanMesh</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.IntersectTri(SharpDX.Vector3,SharpDX.Vector3,SharpDX.Vector3,SharpDX.Vector3,SharpDX.Vector3,System.Single,System.Single,System.Single)\">\n            <summary>\t\n            <p>Computes the intersection of a ray and a triangle.</p>\t\n            </summary>\t\n            <param name=\"arg0Ref\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Vector3\"/></strong> structure, describing the first triangle vertex position.</p> </dd></param>\t\n            <param name=\"arg1Ref\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Vector3\"/></strong> structure, describing the second triangle vertex position.</p> </dd></param>\t\n            <param name=\"arg2Ref\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Vector3\"/></strong> structure, describing the third triangle vertex position.</p> </dd></param>\t\n            <param name=\"rayPosRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Vector3\"/></strong> structure, specifying the point where the ray begins.</p> </dd></param>\t\n            <param name=\"rayDirRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Vector3\"/></strong> structure, specifying the direction of the ray.</p> </dd></param>\t\n            <param name=\"uRef\"><dd>  <p>Barycentric hit coordinates, U.</p> </dd></param>\t\n            <param name=\"vRef\"><dd>  <p>Barycentric hit coordinates, V.</p> </dd></param>\t\n            <param name=\"distRef\"><dd>  <p>Ray-intersection parameter distance.</p> </dd></param>\t\n            <returns><p>Returns <strong>TRUE</strong> if the ray intersects the area of the triangle. Otherwise, returns <strong><see cref=\"F:SharpDX.Result.False\"/></strong>.</p></returns>\t\n            <remarks>\t\n            <p>The <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.Intersect(SharpDX.Direct3D9.BaseMesh,SharpDX.Vector3,SharpDX.Vector3,SharpDX.Bool,System.Int32,System.Single,System.Single,System.Single,SharpDX.Direct3D.Blob@,System.Int32)\"/></strong> function provides a way to understand points in and around a triangle, independent of where the triangle is actually located. This function returns the resulting point by using the following equation: V1 + U(V2 - V1) + V(V3 - V1).</p><p>Any point in the plane V1V2V3 can be represented by the barycentric coordinate (U,V). The parameter U controls how much V2 gets weighted into the result, and the parameter V controls how much V3 gets weighted into the result. Lastly, the value of [1 - (U + V)] controls how much V1 gets weighted into the result.</p><p>Barycentric coordinates are a form of general coordinates. In this context, using barycentric coordinates represents a change in coordinate systems. What holds true for Cartesian coordinates holds true for barycentric coordinates.</p><p>Barycentric coordinates define a point inside a triangle in terms of the triangle's vertices.  For a more in-depth description of barycentric coordinates, see Mathworld's Barycentric Coordinates Description.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXIntersectTri']/*\"/>\t\n            <msdn-id>bb172885</msdn-id>\t\n            <unmanaged>BOOL D3DXIntersectTri([In] const D3DXVECTOR3* p0,[In] const D3DXVECTOR3* p1,[In] const D3DXVECTOR3* p2,[In] const D3DXVECTOR3* pRayPos,[In] const D3DXVECTOR3* pRayDir,[In] float* pU,[In] float* pV,[In] float* pDist)</unmanaged>\t\n            <unmanaged-short>D3DXIntersectTri</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.ConvertMeshSubsetToSingleStrip(SharpDX.Direct3D9.BaseMesh,System.Int32,System.Int32,SharpDX.Direct3D9.IndexBuffer@,System.Int32)\">\n            <summary>\t\n            <p>Converts the specified mesh subset into a single triangle strip.</p>\t\n            </summary>\t\n            <param name=\"meshIn\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.BaseMesh\"/></strong> interface, representing the mesh to convert to a strip.</p> </dd></param>\t\n            <param name=\"attribId\"><dd>  <p>Attribute ID of the mesh subset to convert to strips.</p> </dd></param>\t\n            <param name=\"iBOptions\"><dd>  <p>Combination of one or more flags from the <strong>D3DXMESH</strong> enumeration, specifying options for creating the index buffer. Cannot be <see cref=\"F:SharpDX.Direct3D9.MeshFlags.Use32Bit\"/>. The index buffer will be created with 32-bit or 16-bit indices, depending on the format of the index buffer of the mesh specified by the <em>MeshIn</em> parameter.</p> </dd></param>\t\n            <param name=\"indexBufferOut\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.IndexBuffer\"/></strong> interface, representing the index buffer containing the strip.</p> </dd></param>\t\n            <param name=\"numIndicesRef\"><dd>  <p>Number of indices in the buffer returned in the <em>ppIndexBuffer</em> parameter.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following values: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>Before running this function, call <strong>Optimize</strong> or <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.OptimizeFaces(System.IntPtr,System.Int32,System.Int32,SharpDX.Bool,System.Int32[])\"/></strong>, with the <see cref=\"F:SharpDX.Direct3D9.MeshOptimizeFlags.AttributeSort\"/> flag set.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXConvertMeshSubsetToSingleStrip']/*\"/>\t\n            <msdn-id>bb172749</msdn-id>\t\n            <unmanaged>HRESULT D3DXConvertMeshSubsetToSingleStrip([In] ID3DXBaseMesh* MeshIn,[In] unsigned int AttribId,[In] unsigned int IBOptions,[In] IDirect3DIndexBuffer9** ppIndexBuffer,[In] unsigned int* pNumIndices)</unmanaged>\t\n            <unmanaged-short>D3DXConvertMeshSubsetToSingleStrip</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.CreateSkinInfo(System.Int32,SharpDX.Direct3D9.VertexElement,System.Int32,SharpDX.Direct3D9.SkinInfo@)\">\n            <summary>\t\n            <p>Creates an empty skin mesh object using a declarator.</p>\t\n            </summary>\t\n            <param name=\"numVertices\"><dd>  <p>Number of vertices for the skin mesh.</p> </dd></param>\t\n            <param name=\"declarationRef\"><dd>  <p>Array of <strong><see cref=\"T:SharpDX.Direct3D9.VertexElement\"/></strong> elements, describing the vertex format for the returned mesh.</p> </dd></param>\t\n            <param name=\"numBones\"><dd>  <p>Number of bones for the skin mesh.</p> </dd></param>\t\n            <param name=\"skinInfoOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D9.SkinInfo\"/></strong> interface, representing the created skin mesh object.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be: E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>Use <strong>SetBoneInfluence</strong> to populate the empty skin mesh object returned by this method.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCreateSkinInfo']/*\"/>\t\n            <msdn-id>bb172792</msdn-id>\t\n            <unmanaged>HRESULT D3DXCreateSkinInfo([In] unsigned int NumVertices,[In] const D3DVERTEXELEMENT9* pDeclaration,[In] unsigned int NumBones,[In] ID3DXSkinInfo** ppSkinInfo)</unmanaged>\t\n            <unmanaged-short>D3DXCreateSkinInfo</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.GetDeclVertexSize(SharpDX.Direct3D9.VertexElement[],System.Int32)\">\n            <summary>\t\n            <p>Returns the size of a vertex from the vertex declaration.</p>\t\n            </summary>\t\n            <param name=\"declRef\"><dd>  <p>A reference to the vertex declaration. See <strong><see cref=\"T:SharpDX.Direct3D9.VertexElement\"/></strong>.</p> </dd></param>\t\n            <param name=\"stream\"><dd>  <p>The zero-based stream index.</p> </dd></param>\t\n            <returns><p>The vertex declaration size, in bytes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXGetDeclVertexSize']/*\"/>\t\n            <msdn-id>bb172864</msdn-id>\t\n            <unmanaged>unsigned int D3DXGetDeclVertexSize([In, Buffer] const D3DVERTEXELEMENT9* pDecl,[In] unsigned int Stream)</unmanaged>\t\n            <unmanaged-short>D3DXGetDeclVertexSize</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.GeneratePMesh(SharpDX.Direct3D9.Mesh,System.Int32,SharpDX.Direct3D9.AttributeWeights@,System.Single,System.Int32,System.Int32,SharpDX.Direct3D9.ProgressiveMesh@)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"meshRef\">No documentation.</param>\t\n            <param name=\"adjacencyRef\">No documentation.</param>\t\n            <param name=\"vertexAttributeWeightsRef\">No documentation.</param>\t\n            <param name=\"vertexWeightsRef\">No documentation.</param>\t\n            <param name=\"minValue\">No documentation.</param>\t\n            <param name=\"options\">No documentation.</param>\t\n            <param name=\"pMeshOut\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXGeneratePMesh']/*\"/>\t\n            <unmanaged>HRESULT D3DXGeneratePMesh([In] ID3DXMesh* pMesh,[In] const unsigned int* pAdjacency,[In] const D3DXATTRIBUTEWEIGHTS* pVertexAttributeWeights,[In] const float* pVertexWeights,[In] unsigned int MinValue,[In] unsigned int Options,[In] ID3DXPMesh** ppPMesh)</unmanaged>\t\n            <unmanaged-short>D3DXGeneratePMesh</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.TessellateRectPatch(SharpDX.Direct3D9.VertexBuffer,System.Single,SharpDX.Direct3D9.VertexElement,SharpDX.Direct3D9.RectanglePatchInfo@,SharpDX.Direct3D9.Mesh)\">\n            <summary>\t\n            <p>Tessellates a rectangular higher-order surface patch into a triangle mesh.</p>\t\n            </summary>\t\n            <param name=\"vBRef\"><dd>  <p>Vertex buffer containing the patch data.</p> </dd></param>\t\n            <param name=\"numSegsRef\"><dd>  <p>Pointer to an array of four floating-point values that identify the number of segments into which each edge of the rectangle patch should be divided when tessellated. See <strong><see cref=\"T:SharpDX.Direct3D9.RectanglePatchInfo\"/></strong>.</p> </dd></param>\t\n            <param name=\"dwInDeclRef\"><dd>  <p>Vertex declaration structure that defines the vertex data. See <strong><see cref=\"T:SharpDX.Direct3D9.VertexElement\"/></strong>.</p> </dd></param>\t\n            <param name=\"rectPatchInfoRef\"><dd>  <p>Describes a rectangular patch. See <strong><see cref=\"T:SharpDX.Direct3D9.RectanglePatchInfo\"/></strong>.</p> </dd></param>\t\n            <param name=\"meshRef\"><dd>  <p>Pointer to the created mesh. See <strong><see cref=\"T:SharpDX.Direct3D9.Mesh\"/></strong>.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>Use <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.RectPatchSize(System.Single,System.Int32@,System.Int32@)\"/></strong> to get the number of output vertices and indices that the tessellation function needs.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXTessellateRectPatch']/*\"/>\t\n            <msdn-id>bb205470</msdn-id>\t\n            <unmanaged>HRESULT D3DXTessellateRectPatch([In] IDirect3DVertexBuffer9* pVB,[In] const float* pNumSegs,[In] const D3DVERTEXELEMENT9* pdwInDecl,[In] const D3DRECTPATCH_INFO* pRectPatchInfo,[In] ID3DXMesh* pMesh)</unmanaged>\t\n            <unmanaged-short>D3DXTessellateRectPatch</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.FVFFromDeclarator(SharpDX.Direct3D9.VertexElement[])\">\n            <summary>\t\n            <p>Returns a flexible vertex format (FVF) code from a declarator.</p>\t\n            </summary>\t\n            <param name=\"declaratorRef\"><dd>  <p>Array of <strong><see cref=\"T:SharpDX.Direct3D9.VertexElement\"/></strong> elements, describing the FVF code.</p> </dd></param>\t\n            <returns><dd>  <p>Pointer to a  DWORD value, representing the returned combination of <see cref=\"T:SharpDX.Direct3D9.VertexFormat\"/> that describes the vertex format returned from the declarator.</p> </dd></returns>\t\n            <remarks>\t\n            <p>This function will fail for any declarator that does not map directly to an FVF.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXFVFFromDeclarator']/*\"/>\t\n            <msdn-id>bb172854</msdn-id>\t\n            <unmanaged>HRESULT D3DXFVFFromDeclarator([In, Buffer] const D3DVERTEXELEMENT9* pDeclarator,[Out] D3DFVF* pFVF)</unmanaged>\t\n            <unmanaged-short>D3DXFVFFromDeclarator</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.CreateSkinInfoFromBlendedMesh(SharpDX.Direct3D9.BaseMesh,System.Int32,SharpDX.Direct3D9.BoneCombination,SharpDX.Direct3D9.SkinInfo@)\">\n            <summary>\t\n            <p>Creates a skin mesh from another mesh.</p>\t\n            </summary>\t\n            <param name=\"meshRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.BaseMesh\"/></strong> object, the mesh from which to create the skin mesh.</p> </dd></param>\t\n            <param name=\"numBones\"><dd>  <p>The length of the array attached to the BoneId. See <strong><see cref=\"T:SharpDX.Direct3D9.BoneCombination\"/></strong>.</p> </dd></param>\t\n            <param name=\"boneCombinationTableRef\"><dd>  <p>Pointer to an array of bone combinations. See <strong><see cref=\"T:SharpDX.Direct3D9.BoneCombination\"/></strong>.</p> </dd></param>\t\n            <param name=\"skinInfoOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D9.SkinInfo\"/></strong> interface representing the created skin mesh object.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be the following: E_OUTOFMEMORY.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCreateSkinInfoFromBlendedMesh']/*\"/>\t\n            <msdn-id>bb172793</msdn-id>\t\n            <unmanaged>HRESULT D3DXCreateSkinInfoFromBlendedMesh([In] ID3DXBaseMesh* pMesh,[In] unsigned int NumBones,[In] const D3DXBONECOMBINATION* pBoneCombinationTable,[In] ID3DXSkinInfo** ppSkinInfo)</unmanaged>\t\n            <unmanaged-short>D3DXCreateSkinInfoFromBlendedMesh</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.ComputeTangentFrameEx(SharpDX.Direct3D9.Mesh,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Single,System.Single,System.Single,SharpDX.Direct3D9.Mesh@,SharpDX.Direct3D.Blob@)\">\n            <summary>\t\n            <p>Performs tangent frame computations on a mesh. Tangent, binormal, and optionally normal vectors are generated. Singularities are handled as required by grouping edges and splitting vertices.</p>\t\n            </summary>\t\n            <param name=\"meshRef\"><dd>  <p>Pointer to an input <strong><see cref=\"T:SharpDX.Direct3D9.Mesh\"/></strong> mesh object.</p> </dd></param>\t\n            <param name=\"dwTextureInSemantic\"><dd>  <p>Specifies the texture coordinate input semantic. If D3DX_DEFAULT, the function assumes that there are no texture coordinates, and the function will fail unless normal vector calculation is specified.</p> </dd></param>\t\n            <param name=\"dwTextureInIndex\"><dd>  <p>If a mesh has multiple texture coordinates, specifies the texture coordinate to use for the tangent frame computations. If zero, the mesh has only a single texture coordinate.</p> </dd></param>\t\n            <param name=\"dwUPartialOutSemantic\"><dd>  <p>Specifies the output semantic for the type, typically <see cref=\"F:SharpDX.Direct3D9.DeclarationUsage.Tangent\"/>, that describes where the partial derivative with respect to the U texture coordinate will be stored. If D3DX_DEFAULT, then this partial derivative will not be stored.</p> </dd></param>\t\n            <param name=\"dwUPartialOutIndex\"><dd>  <p>Specifies the semantic index at which to store the partial derivative with respect to the U texture coordinate.</p> </dd></param>\t\n            <param name=\"dwVPartialOutSemantic\"><dd>  <p>Specifies the <strong><see cref=\"T:SharpDX.Direct3D9.DeclarationUsage\"/></strong> type, typically <see cref=\"F:SharpDX.Direct3D9.DeclarationUsage.Binormal\"/>, that describes where the partial derivative with respect to the V texture coordinate will be stored. If D3DX_DEFAULT, then this partial derivative will not be stored.</p> </dd></param>\t\n            <param name=\"dwVPartialOutIndex\"><dd>  <p>Specifies the semantic index at which to store the partial derivative with respect to the V texture coordinate.</p> </dd></param>\t\n            <param name=\"dwNormalOutSemantic\"><dd>  <p>Specifies the output normal semantic, typically <see cref=\"F:SharpDX.Direct3D9.DeclarationUsage.Normal\"/>, that describes where the normal vector at each vertex will be stored. If D3DX_DEFAULT, then this normal vector will not be stored.</p> </dd></param>\t\n            <param name=\"dwNormalOutIndex\"><dd>  <p>Specifies the semantic index at which to store the normal vector at each vertex.</p> </dd></param>\t\n            <param name=\"dwOptions\"><dd>  <p>Combination of one or more <strong><see cref=\"T:SharpDX.Direct3D9.TangentOptions\"/></strong> flags that specify tangent frame computation options. If <strong><c>null</c></strong>, the following options will be specified:</p> <table> <tr><th>Description</th><th> <strong><see cref=\"T:SharpDX.Direct3D9.TangentOptions\"/></strong> Flag Value</th></tr> <tr><td>Weight the normal vector length by the angle, in radians, subtended by the two edges leaving the vertex.</td><td>&amp; !( <see cref=\"F:SharpDX.Direct3D9.TangentOptions.WeightByArea\"/> | <see cref=\"F:SharpDX.Direct3D9.TangentOptions.WeightEqual\"/> )</td></tr> <tr><td>Compute orthogonal Cartesian coordinates from texture coordinates (u, v). See Remarks.</td><td>&amp; !( <see cref=\"F:SharpDX.Direct3D9.TangentOptions.OrthogonalizeFromU\"/> | <see cref=\"F:SharpDX.Direct3D9.TangentOptions.OrthogonalizeFromV\"/> )</td></tr> <tr><td>Textures are not wrapped in either u or v directions</td><td>&amp; !( <see cref=\"F:SharpDX.Direct3D9.TangentOptions.WrapUV\"/> )</td></tr> <tr><td>Partial derivatives with respect to texture coordinates are normalized.</td><td>&amp; !( <see cref=\"F:SharpDX.Direct3D9.TangentOptions.DontNormalizePartials\"/> )</td></tr> <tr><td>Vertices are ordered in a counterclockwise direction around each triangle.</td><td>&amp; !( <see cref=\"F:SharpDX.Direct3D9.TangentOptions.WindCW\"/> )</td></tr> <tr><td>Use per-vertex normal vectors already present in the input mesh.</td><td>&amp; !( <see cref=\"F:SharpDX.Direct3D9.TangentOptions.CalculateNormals\"/> )</td></tr> </table> <p>?</p> <p>If <see cref=\"F:SharpDX.Direct3D9.TangentOptions.GenerateInPlace\"/> is not set, the input mesh is cloned. The original mesh must therefore have sufficient space to store the computed normal vector and partial derivative data.</p> </dd></param>\t\n            <param name=\"dwAdjacencyRef\"><dd>  <p>Pointer to an array of three DWORDs per face that specify the three neighbors for each face in the mesh. The number of bytes in this array must be at least 3 * <strong>GetNumFaces</strong> * sizeof(DWORD).</p> </dd></param>\t\n            <param name=\"fPartialEdgeThreshold\"><dd>  <p>Specifies the maximum cosine of the angle at which two partial derivatives are deemed to be incompatible with each other. If the dot product of the direction of the two partial derivatives in adjacent triangles is less than or equal to this threshold, then the vertices shared between these triangles will be split.</p> </dd></param>\t\n            <param name=\"fSingularPointThreshold\"><dd>  <p>Specifies the maximum magnitude of a partial derivative at which a vertex will be deemed singular. As multiple triangles are incident on a point that have nearby tangent frames, but altogether cancel each other out (such as at the top of a sphere), the magnitude of the partial derivative will decrease. If the magnitude is less than or equal to this threshold, then the vertex will be split for every triangle that contains it.</p> </dd></param>\t\n            <param name=\"fNormalEdgeThreshold\"><dd>  <p>Similar to fPartialEdgeThreshold, specifies the maximum cosine of the angle between two normals that is a threshold beyond which vertices shared between triangles will be split. If the dot product of the two normals is less than the threshold, the shared vertices will be split, forming a hard edge between neighboring triangles. If the dot product is more than the threshold, neighboring triangles will have their normals interpolated.</p> </dd></param>\t\n            <param name=\"meshOutOut\"><dd>  <p>Address of a reference to an output <strong><see cref=\"T:SharpDX.Direct3D9.Mesh\"/></strong> mesh object that receives the computed tangent, binormal, and normal vector data.</p> </dd></param>\t\n            <param name=\"vertexMappingOut\"><dd>  <p>Address of a reference to an output <strong><see cref=\"T:SharpDX.Direct3D.Blob\"/></strong> buffer object that receives a mapping of new vertices computed by this method to the original vertices. The buffer is an array of DWORDs, with the array size defined as the number of vertices in ppMeshOut.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>A simplified version of this function is available as <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.ComputeTangentFrame(SharpDX.Direct3D9.Mesh,System.Int32)\"/></strong>.</p><p>The computed normal vector at each vertex is always normalized to have unit length.</p><p>The most robust solution for computing orthogonal Cartesian coordinates is to not set flags <see cref=\"F:SharpDX.Direct3D9.TangentOptions.OrthogonalizeFromU\"/> and <see cref=\"F:SharpDX.Direct3D9.TangentOptions.OrthogonalizeFromV\"/>, so that orthogonal coordinates are computed from both texture coordinates u and v. However, in this case, if either u or v is zero, then the function will compute orthogonal coordinates using <see cref=\"F:SharpDX.Direct3D9.TangentOptions.OrthogonalizeFromV\"/> or <see cref=\"F:SharpDX.Direct3D9.TangentOptions.OrthogonalizeFromU\"/>, respectively.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXComputeTangentFrameEx']/*\"/>\t\n            <msdn-id>bb172745</msdn-id>\t\n            <unmanaged>HRESULT D3DXComputeTangentFrameEx([In] ID3DXMesh* pMesh,[In] unsigned int dwTextureInSemantic,[In] unsigned int dwTextureInIndex,[In] unsigned int dwUPartialOutSemantic,[In] unsigned int dwUPartialOutIndex,[In] unsigned int dwVPartialOutSemantic,[In] unsigned int dwVPartialOutIndex,[In] unsigned int dwNormalOutSemantic,[In] unsigned int dwNormalOutIndex,[In] unsigned int dwOptions,[In] const unsigned int* pdwAdjacency,[In] float fPartialEdgeThreshold,[In] float fSingularPointThreshold,[In] float fNormalEdgeThreshold,[In] ID3DXMesh** ppMeshOut,[In] ID3DXBuffer** ppVertexMapping)</unmanaged>\t\n            <unmanaged-short>D3DXComputeTangentFrameEx</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.SphereBoundProbe(SharpDX.Vector3,System.Single,SharpDX.Vector3,SharpDX.Vector3)\">\n            <summary>\t\n            <p>Determines if a ray intersects the volume of a sphere's bounding box.</p>\t\n            </summary>\t\n            <param name=\"centerRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Vector3\"/></strong> structure, specifying the center coordinate of the sphere.</p> </dd></param>\t\n            <param name=\"radius\"><dd>  <p>Radius of the sphere.</p> </dd></param>\t\n            <param name=\"rayPositionRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Vector3\"/></strong> structure, specifying the origin coordinate of the ray.</p> </dd></param>\t\n            <param name=\"rayDirectionRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Vector3\"/></strong> structure, specifying the direction of the ray. This vector should not be (0,0,0) but does not need to be normalized.</p> </dd></param>\t\n            <returns><p>Returns <strong>TRUE</strong> if the ray intersects the volume of the sphere's bounding box. Otherwise, returns <strong><see cref=\"F:SharpDX.Result.False\"/></strong>.</p></returns>\t\n            <remarks>\t\n            <p><strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.SphereBoundProbe(SharpDX.Vector3,System.Single,SharpDX.Vector3,SharpDX.Vector3)\"/></strong> determines if the ray intersects the volume of the sphere's bounding box, not just the surface of the sphere.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXSphereBoundProbe']/*\"/>\t\n            <msdn-id>bb204995</msdn-id>\t\n            <unmanaged>BOOL D3DXSphereBoundProbe([In] const D3DXVECTOR3* pCenter,[In] float Radius,[In] const D3DXVECTOR3* pRayPosition,[In] const D3DXVECTOR3* pRayDirection)</unmanaged>\t\n            <unmanaged-short>D3DXSphereBoundProbe</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.UVAtlasCreate(SharpDX.Direct3D9.Mesh,System.Int32,System.Single,System.Int32,System.Int32,System.Single,System.Int32,System.Int32,System.Int32,System.Single,SharpDX.FunctionCallback,System.Single,System.IntPtr,System.Int32,SharpDX.Direct3D9.Mesh@,SharpDX.Direct3D.Blob@,SharpDX.Direct3D.Blob@,System.Single,System.Int32)\">\n            <summary>\t\n            <p>Create a UV atlas for a mesh.</p>\t\n            </summary>\t\n            <param name=\"meshRef\"><dd>  <p>Pointer to an input mesh (see <strong><see cref=\"T:SharpDX.Direct3D9.Mesh\"/></strong>) which contains the object geometry for calculating the atlas. At a minimum, the mesh must contain position data and 2D texture coordinates.</p> </dd></param>\t\n            <param name=\"uMaxChartNumber\"><dd>  <p>The maximum number of charts to partition the mesh into. See remarks about the partitioning modes. Use 0 to tell D3DX that the atlas should be parameterized based on stretch.</p> </dd></param>\t\n            <param name=\"fMaxStretch\"><dd>  <p>The amount of stretching allowed. 0 means no stretching is allowed, 1 means any amount of stretching can be used.</p> </dd></param>\t\n            <param name=\"uWidth\"><dd>  <p>Texture width.</p> </dd></param>\t\n            <param name=\"uHeight\"><dd>  <p>Texture height.</p> </dd></param>\t\n            <param name=\"fGutter\"><dd>  <p>The minimum distance, in texels, between two charts on the atlas. The gutter is always scaled by the width; so, if a gutter of 2.5 is used on a 512x512 texture, then the minimum distance between two charts is 2.5 / 512.0 texels.</p> </dd></param>\t\n            <param name=\"dwTextureIndex\"><dd>  <p>Zero-based texture coordinate index that identifies which set of texture coordinates to use.</p> </dd></param>\t\n            <param name=\"dwAdjacencyRef\"><dd>  <p>A reference to an array of adjacency data. with 3 DWORDs per face, indicating which triangles are adjacent to each other (see <strong><see cref=\"M:SharpDX.Direct3D9.BaseMesh.GenerateAdjacency(System.Single,System.Int32)\"/></strong>).</p> </dd></param>\t\n            <param name=\"dwFalseEdgeAdjacencyRef\"><dd>  <p>An array with 3 DWORDS per face. Each face indicates if an edge is false or not. A non-false edge is indicated by -1, a false edge is indicated by any other value. This enables the parameterization of a mesh of quads where the edges down the middle of each quad will not be cut.</p> </dd></param>\t\n            <param name=\"fIMTArrayRef\"><dd>  <p>A reference to an array of integrated metric tensors that describes how to stretch a triangle (see IntegratedMetricTensor).</p> </dd></param>\t\n            <param name=\"statusCallbackRef\"><dd>  <p>A reference to a callback function (see LPD3DXUVATLASCB) that is useful for monitoring progress.</p> </dd></param>\t\n            <param name=\"fCallbackFrequency\"><dd>  <p>Specify how often D3DX will call the callback; a reasonable default value is 0.0001f.</p> </dd></param>\t\n            <param name=\"userContextRef\"><dd>  <p>Pointer to a user-defined value which is passed to the callback function; typically used by an application to pass a reference to a data structure that provides context information for the callback function.</p> </dd></param>\t\n            <param name=\"dwOptions\"><dd>  <p>Specify the quality of the charts generated. See <strong>D3DXUVATLAS</strong>.</p> </dd></param>\t\n            <param name=\"meshOutOut\"><dd>  <p>Pointer to the created mesh with the atlas (see <strong><see cref=\"T:SharpDX.Direct3D9.Mesh\"/></strong>).</p> </dd></param>\t\n            <param name=\"facePartitioningOut\"><dd>  <p>A reference to an array of the final face-partitioning data. Each element contains one DWORD per face (see <strong><see cref=\"T:SharpDX.Direct3D.Blob\"/></strong>).</p> </dd></param>\t\n            <param name=\"vertexRemapArrayOut\"><dd>  <p>A reference to an array of remapped vertices. Each array element identifies the original vertex that each final vertex came from (if the vertex was split during remapping). Each array element contains one DWORD per vertex.</p> </dd></param>\t\n            <param name=\"fMaxStretchOutRef\"><dd>  <p>A reference to the maximum stretch value generated by the atlas algorithm. The range is between 0.0 and 1.0.</p> </dd></param>\t\n            <param name=\"uNumChartsOutRef\"><dd>  <p>A reference to the number of charts created by the atlas algorithm. If dwMaxChartNumber is too low, this parameter will return the minimum number of charts required to create an atlas.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>; otherwise, the value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p><see cref=\"M:SharpDX.Direct3D9.D3DX9.UVAtlasCreate(SharpDX.Direct3D9.Mesh,System.Int32,System.Single,System.Int32,System.Int32,System.Single,System.Int32,System.Int32,System.Int32,System.Single,SharpDX.FunctionCallback,System.Single,System.IntPtr,System.Int32,SharpDX.Direct3D9.Mesh@,SharpDX.Direct3D.Blob@,SharpDX.Direct3D.Blob@,System.Single,System.Int32)\"/> can partition mesh geometry two ways:</p><ul> <li>Based on the number of charts</li> <li>Based on the maximum allowed stretch. If the maximum allowed stretch is 0, each triangle will likely be in its own chart.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXUVAtlasCreate']/*\"/>\t\n            <msdn-id>bb205479</msdn-id>\t\n            <unmanaged>HRESULT D3DXUVAtlasCreate([In] ID3DXMesh* pMesh,[In] unsigned int uMaxChartNumber,[In] float fMaxStretch,[In] unsigned int uWidth,[In] unsigned int uHeight,[In] float fGutter,[In] unsigned int dwTextureIndex,[In] const unsigned int* pdwAdjacency,[In] const unsigned int* pdwFalseEdgeAdjacency,[In] const float* pfIMTArray,[In] __function__stdcall* pStatusCallback,[In] float fCallbackFrequency,[In] void* pUserContext,[In] unsigned int dwOptions,[In] ID3DXMesh** ppMeshOut,[In] ID3DXBuffer** ppFacePartitioning,[In] ID3DXBuffer** ppVertexRemapArray,[In] float* pfMaxStretchOut,[In] unsigned int* puNumChartsOut)</unmanaged>\t\n            <unmanaged-short>D3DXUVAtlasCreate</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.CreatePMeshFromStream(System.IntPtr,System.Int32,SharpDX.Direct3D9.Device,SharpDX.Direct3D.Blob@,SharpDX.Direct3D.Blob@,System.Int32,SharpDX.Direct3D9.ProgressiveMesh@)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"streamRef\">No documentation.</param>\t\n            <param name=\"options\">No documentation.</param>\t\n            <param name=\"d3DDeviceRef\">No documentation.</param>\t\n            <param name=\"materialsOut\">No documentation.</param>\t\n            <param name=\"effectInstancesOut\">No documentation.</param>\t\n            <param name=\"numMaterialsRef\">No documentation.</param>\t\n            <param name=\"pMeshOut\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCreatePMeshFromStream']/*\"/>\t\n            <unmanaged>HRESULT D3DXCreatePMeshFromStream([In] IStream* pStream,[In] unsigned int Options,[In] IDirect3DDevice9* pD3DDevice,[In] ID3DXBuffer** ppMaterials,[In] ID3DXBuffer** ppEffectInstances,[In] unsigned int* pNumMaterials,[In] ID3DXPMesh** ppPMesh)</unmanaged>\t\n            <unmanaged-short>D3DXCreatePMeshFromStream</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.ComputeIMTFromTexture(SharpDX.Direct3D9.Mesh,SharpDX.Direct3D9.Texture,System.Int32,System.Int32,SharpDX.FunctionCallback,System.IntPtr,SharpDX.Direct3D.Blob@)\">\n            <summary>\t\n            <p>Calculates per-triangle IMT's from a texture mapped onto a mesh, to be used optionally as input to the D3DX UVAtlas Functions.</p>\t\n            </summary>\t\n            <param name=\"meshRef\">No documentation.</param>\t\n            <param name=\"textureRef\">No documentation.</param>\t\n            <param name=\"dwTextureIndex\">No documentation.</param>\t\n            <param name=\"dwOptions\">No documentation.</param>\t\n            <param name=\"statusCallbackRef\">No documentation.</param>\t\n            <param name=\"userContextRef\">No documentation.</param>\t\n            <param name=\"iMTDataOut\">No documentation.</param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>; otherwise, the value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>Given a texture that maps over the surface of the mesh, the algorithm computes the IMT for each face. This will cause triangles containing lower-frequency signal data to take up less space in the final texture atlas when parameterized with the UVAtlas functions. The texture is assumed to be interpolated over the mesh bilinearly.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXComputeIMTFromTexture']/*\"/>\t\n            <msdn-id>bb172740</msdn-id>\t\n            <unmanaged>HRESULT D3DXComputeIMTFromTexture([In] ID3DXMesh* pMesh,[In] IDirect3DTexture9* pTexture,[In] unsigned int dwTextureIndex,[In] unsigned int dwOptions,[In] __function__stdcall* pStatusCallback,[In] void* pUserContext,[In] ID3DXBuffer** ppIMTData)</unmanaged>\t\n            <unmanaged-short>D3DXComputeIMTFromTexture</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.CreateSPMesh(SharpDX.Direct3D9.Mesh,System.Int32,SharpDX.Direct3D9.AttributeWeights@,System.Single,SharpDX.Direct3D9.SimplificationMesh@)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"meshRef\">No documentation.</param>\t\n            <param name=\"adjacencyRef\">No documentation.</param>\t\n            <param name=\"vertexAttributeWeightsRef\">No documentation.</param>\t\n            <param name=\"vertexWeightsRef\">No documentation.</param>\t\n            <param name=\"sMeshOut\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCreateSPMesh']/*\"/>\t\n            <unmanaged>HRESULT D3DXCreateSPMesh([In] ID3DXMesh* pMesh,[In] const unsigned int* pAdjacency,[In] const D3DXATTRIBUTEWEIGHTS* pVertexAttributeWeights,[In] const float* pVertexWeights,[In] ID3DXSPMesh** ppSMesh)</unmanaged>\t\n            <unmanaged-short>D3DXCreateSPMesh</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.ConcatenateMeshes(SharpDX.Direct3D9.Mesh@,System.Int32,System.Int32,SharpDX.Matrix@,SharpDX.Matrix@,SharpDX.Direct3D9.VertexElement[],SharpDX.Direct3D9.Device,SharpDX.Direct3D9.Mesh@)\">\n            <summary>\t\n            <p>Concatenates a group of meshes into one common mesh. This method can optionally apply a matrix transformation to each input mesh and its texture coordinates.</p>\t\n            </summary>\t\n            <param name=\"meshesOut\"><dd>  <p>Array of input mesh references (see <strong><see cref=\"T:SharpDX.Direct3D9.Mesh\"/></strong>). The number of elements in the array is NumMeshes.</p> </dd></param>\t\n            <param name=\"numMeshes\"><dd>  <p>Number of input meshes to concatenate.</p> </dd></param>\t\n            <param name=\"options\"><dd>  <p>Mesh creation options; this is a combination of one or more <strong>D3DXMESH</strong> flags. The mesh creation options are equivalent to the options parameter required by <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateMesh(System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.VertexElement,SharpDX.Direct3D9.Device,SharpDX.Direct3D9.Mesh@)\"/></strong>.</p> </dd></param>\t\n            <param name=\"geomXFormsRef\"><dd>  <p>Optional array of geometry transforms. The number of elements in the array is NumMeshes; each element is a transformation matrix (see <strong><see cref=\"T:SharpDX.Matrix\"/></strong>). May be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"textureXFormsRef\"><dd>  <p>Optional array of texture transforms. The number of elements in the array is NumMeshes; each element is a transformation matrix (see <strong><see cref=\"T:SharpDX.Matrix\"/></strong>). This parameter may be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"declRef\"><dd>  <p>Optional reference to a vertex declaration (see <strong><see cref=\"T:SharpDX.Direct3D9.VertexElement\"/></strong>). This parameter may be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"d3DDeviceRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> device that is used to create the new mesh.</p> </dd></param>\t\n            <param name=\"meshOutOut\"><dd>  <p>Address of a reference to the mesh created (see <strong><see cref=\"T:SharpDX.Direct3D9.Mesh\"/></strong>).</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the function fails, the return value can be one of these: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>If no vertex declaration is given as part of the Options mesh creation parameter, the method will generate a union of all of the vertex declarations of the submeshes, promoting channels and types if necessary. The method will create an attribute table from attribute tables of the input meshes. To ensure creation of an attribute table, call <strong>Optimize</strong> with Flags set to <see cref=\"F:SharpDX.Direct3D9.MeshOptimizeFlags.Compact\"/> and <see cref=\"F:SharpDX.Direct3D9.MeshOptimizeFlags.AttributeSort\"/> (see <strong>D3DXMESHOPT</strong>).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXConcatenateMeshes']/*\"/>\t\n            <msdn-id>bb172746</msdn-id>\t\n            <unmanaged>HRESULT D3DXConcatenateMeshes([In] ID3DXMesh** ppMeshes,[In] unsigned int NumMeshes,[In] unsigned int Options,[In] const D3DXMATRIX* pGeomXForms,[In] const D3DXMATRIX* pTextureXForms,[In, Buffer] const D3DVERTEXELEMENT9* pDecl,[In] IDirect3DDevice9* pD3DDevice,[In] ID3DXMesh** ppMeshOut)</unmanaged>\t\n            <unmanaged-short>D3DXConcatenateMeshes</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.BoxBoundProbe(SharpDX.Vector3,SharpDX.Vector3,SharpDX.Vector3,SharpDX.Vector3)\">\n            <summary>\t\n            <p>Determines whether a ray intersects the volume of a box's bounding box.</p>\t\n            </summary>\t\n            <param name=\"minRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Vector3\"/></strong>, describing the lower-left corner of the bounding box. See Remarks.</p> </dd></param>\t\n            <param name=\"maxRef\"><dd>  <p>Pointer to a  <strong><see cref=\"T:SharpDX.Vector3\"/></strong> structure, describing the upper-right corner of the bounding box. See Remarks.</p> </dd></param>\t\n            <param name=\"rayPositionRef\"><dd>  <p>Pointer to a <see cref=\"T:SharpDX.Vector3\"/> structure, specifying the origin coordinate of the ray.</p> </dd></param>\t\n            <param name=\"rayDirectionRef\"><dd>  <p>Pointer to a <see cref=\"T:SharpDX.Vector3\"/> structure, specifying the direction of the ray. This vector should not be (0,0,0) but does not need to be normalized.</p> </dd></param>\t\n            <returns><p>Returns <strong>TRUE</strong> if the ray intersects the volume of the box's bounding box. Otherwise, returns <strong><see cref=\"F:SharpDX.Result.False\"/></strong>.</p></returns>\t\n            <remarks>\t\n            <p><strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.BoxBoundProbe(SharpDX.Vector3,SharpDX.Vector3,SharpDX.Vector3,SharpDX.Vector3)\"/></strong> determines if the ray intersects the volume of the box's bounding box, not just the surface of the box.</p><p>The values passed to <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.BoxBoundProbe(SharpDX.Vector3,SharpDX.Vector3,SharpDX.Vector3,SharpDX.Vector3)\"/></strong> are xmin, xmax, ymin, ymax, zmin, and zmax. Thus, the following defines the corners of the bounding box.</p><pre><code> xmax, ymax, zmax\t\n            xmax, ymax, zmin\t\n            xmax, ymin, zmax\t\n            xmax, ymin, zmin\t\n            xmin, ymax, zmax\t\n            xmin, ymax, zmin\t\n            xmin, ymin, zmax\t\n            xmin, ymin, zmin\t\n            </code></pre><p>The depth of the bounding box in the z direction is zmax - zmin, in the y direction is ymax - ymin, and in the x direction is xmax - xmin. For example, with the following minimum and maximum vectors, min (-1, -1, -1) and max (1, 1, 1), the bounding box is defined in the following manner.</p><pre><code> 1,  1,  1 1,  1, -1 1, -1,  1 1, -1, -1\t\n            -1,  1,  1\t\n            -1,  1, -1\t\n            -1, -1,  1\t\n            -1, -1, -l\t\n            </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXBoxBoundProbe']/*\"/>\t\n            <msdn-id>bb204916</msdn-id>\t\n            <unmanaged>BOOL D3DXBoxBoundProbe([In] const D3DXVECTOR3* pMin,[In] const D3DXVECTOR3* pMax,[In] const D3DXVECTOR3* pRayPosition,[In] const D3DXVECTOR3* pRayDirection)</unmanaged>\t\n            <unmanaged-short>D3DXBoxBoundProbe</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.LoadMeshFromXResource(System.IntPtr,System.String,System.String,System.Int32,SharpDX.Direct3D9.Device,SharpDX.Direct3D.Blob@,SharpDX.Direct3D.Blob@,SharpDX.Direct3D.Blob@,System.Int32,SharpDX.Direct3D9.Mesh@)\">\n            <summary>\t\n            <p>Loads a mesh from a resource.</p>\t\n            </summary>\t\n            <param name=\"module\"><dd>  <p>Handle to the module where the resource is located, or <strong><c>null</c></strong> for the module associated with the image the operating system used to create the current process. See remarks.</p> </dd></param>\t\n            <param name=\"name\"><dd>  <p>Pointer to a string that specifies the resource to create the mesh from. See remarks.</p> </dd></param>\t\n            <param name=\"type\"><dd>  <p>Pointer to a string that specifies the resource type. See remarks.</p> </dd></param>\t\n            <param name=\"options\"><dd>  <p>Combination of one or more flags from the <strong>D3DXMESH</strong> enumeration that specify creation options for the mesh.</p> </dd></param>\t\n            <param name=\"d3DDeviceRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface, the device object associated with the mesh.</p> </dd></param>\t\n            <param name=\"adjacencyOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D.Blob\"/></strong> interface. When the method returns, this parameter is filled with an array of three DWORDs per face that specify the three neighbors for each face in the mesh.</p> </dd></param>\t\n            <param name=\"materialsOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D.Blob\"/></strong> interface. When this method returns, this parameter is filled with an array of <strong><see cref=\"T:SharpDX.Direct3D9.ExtendedMaterial\"/></strong> structures, containing information saved in the DirectX file.</p> </dd></param>\t\n            <param name=\"effectInstancesOut\"><dd>  <p>Pointer to a buffer containing an array of effect instances, one per attribute group in the returned mesh. An effect instance is a particular instance of state information used to initialize an effect. See <strong><see cref=\"T:SharpDX.Direct3D9.EffectInstance\"/></strong>. For more information about accessing the buffer, see <strong><see cref=\"T:SharpDX.Direct3D.Blob\"/></strong>.</p> </dd></param>\t\n            <param name=\"numMaterialsRef\"><dd>  <p>Pointer to the number of <strong><see cref=\"T:SharpDX.Direct3D9.ExtendedMaterial\"/></strong> structures in the <em>ppMaterials</em> array, when the method returns.</p> </dd></param>\t\n            <param name=\"meshOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D9.Mesh\"/></strong> interface, representing the loaded mesh.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following values: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>See <strong>FindResource</strong> to find out more about the Module, Name and Type parameters.</p><p>All the meshes in the file will be collapsed into one output mesh. If the file contains a frame hierarchy, all the transformations will be applied to the mesh.</p><p>For mesh files that do not contain effect instance information, default effect instances will be generated from the material information in the .x file. A default effect instance will have default values that correspond to the members of the <strong><see cref=\"T:SharpDX.Direct3D9.Material\"/></strong> structure.</p><p>The default texture name is also filled in, but is handled differently. The name will be Texture0@Name, which corresponds to an effect variable by the name of \"Texture0\" with an annotation called \"Name.\" This will contain the string file name for the texture.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXLoadMeshFromXResource']/*\"/>\t\n            <msdn-id>bb172893</msdn-id>\t\n            <unmanaged>HRESULT D3DXLoadMeshFromXResource([In] HINSTANCE Module,[In] const char* Name,[In] const char* Type,[In] unsigned int Options,[In] IDirect3DDevice9* pD3DDevice,[In] ID3DXBuffer** ppAdjacency,[In] ID3DXBuffer** ppMaterials,[In] ID3DXBuffer** ppEffectInstances,[In] unsigned int* pNumMaterials,[In] ID3DXMesh** ppMesh)</unmanaged>\t\n            <unmanaged-short>D3DXLoadMeshFromXResource</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.SimplifyMesh(SharpDX.Direct3D9.Mesh,System.Int32,SharpDX.Direct3D9.AttributeWeights@,System.Single,System.Int32,System.Int32,SharpDX.Direct3D9.Mesh@)\">\n            <summary>\t\n            <p>Generates a simplified mesh using the provided weights that come as close as possible to the given MinValue.</p>\t\n            </summary>\t\n            <param name=\"meshRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Mesh\"/></strong> interface, representing the source mesh.</p> </dd></param>\t\n            <param name=\"adjacencyRef\"><dd>  <p>Pointer to an array of three  DWORDs per face that specify the three neighbors for each face in the mesh to be simplified.</p> </dd></param>\t\n            <param name=\"vertexAttributeWeightsRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.AttributeWeights\"/></strong> structure, containing the weight for each vertex component. If this parameter is set to <strong><c>null</c></strong>, a default structure is used. See Remarks.</p> </dd></param>\t\n            <param name=\"vertexWeightsRef\"><dd>  <p>Pointer to an array of vertex weights. If this parameter is set to <strong><c>null</c></strong>, all vertex weights are set to 1.0.</p> </dd></param>\t\n            <param name=\"minValue\"><dd>  <p>Number of vertices or faces, depending on the flag set in the  <em>Options</em> parameter, by which to simplify the source mesh.</p> </dd></param>\t\n            <param name=\"options\"><dd>  <p>Specifies simplification options for the mesh. One of the flags in <strong>D3DXMESHSIMP</strong> can be set.</p> </dd></param>\t\n            <param name=\"meshOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D9.Mesh\"/></strong> interface, representing the returned simplification mesh.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>This function generates a mesh that has <em>MinValue</em> vertices or faces.</p><p>If the simplification process cannot reduce the mesh to <em>MinValue</em>, the call still succeeds because <em>MinValue</em> is a desired minimum, not an absolute minimum.</p><p>If <em>pVertexAttributeWeights</em> is set to <strong><c>null</c></strong>, the following values are assigned to the default <strong><see cref=\"T:SharpDX.Direct3D9.AttributeWeights\"/></strong> structure.</p><pre><code> <see cref=\"T:SharpDX.Direct3D9.AttributeWeights\"/> AttributeWeights; AttributeWeights.Position  = 1.0;\t\n            AttributeWeights.Boundary =  1.0;\t\n            AttributeWeights.Normal   =  1.0;\t\n            AttributeWeights.Diffuse  =  0.0;\t\n            AttributeWeights.Specular =  0.0;\t\n            AttributeWeights.Tex[8]   =  {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};\t\n            </code></pre><p>This default structure is what most applications should use because it considers only geometric and normal adjustment. Only in special cases will the other member fields need to be modified. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXSimplifyMesh']/*\"/>\t\n            <msdn-id>bb205463</msdn-id>\t\n            <unmanaged>HRESULT D3DXSimplifyMesh([In] ID3DXMesh* pMesh,[In] const unsigned int* pAdjacency,[In] const D3DXATTRIBUTEWEIGHTS* pVertexAttributeWeights,[In] const float* pVertexWeights,[In] unsigned int MinValue,[In] unsigned int Options,[In] ID3DXMesh** ppMesh)</unmanaged>\t\n            <unmanaged-short>D3DXSimplifyMesh</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.ComputeBoundingBox(SharpDX.Vector3,System.Int32,System.Int32,SharpDX.Vector3,SharpDX.Vector3)\">\n            <summary>\t\n            <p>Computes a coordinate-axis oriented bounding box.</p>\t\n            </summary>\t\n            <param name=\"firstPositionRef\"><dd>  <p>Pointer to the first position.</p> </dd></param>\t\n            <param name=\"numVertices\"><dd>  <p>Number of vertices.</p> </dd></param>\t\n            <param name=\"dwStride\"><dd>  <p>Count or number of bytes between vertices.</p> </dd></param>\t\n            <param name=\"minRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Vector3\"/></strong> structure, describing the returned lower-left corner of the bounding box.</p> </dd></param>\t\n            <param name=\"maxRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Vector3\"/></strong> structure, describing the returned upper-right corner of the bounding box.</p> <p></p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXComputeBoundingBox']/*\"/>\t\n            <msdn-id>bb204920</msdn-id>\t\n            <unmanaged>HRESULT D3DXComputeBoundingBox([In] const D3DXVECTOR3* pFirstPosition,[In] unsigned int NumVertices,[In] unsigned int dwStride,[In] D3DXVECTOR3* pMin,[In] D3DXVECTOR3* pMax)</unmanaged>\t\n            <unmanaged-short>D3DXComputeBoundingBox</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.CreateMeshFVF(System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.VertexFormat,SharpDX.Direct3D9.Device,SharpDX.Direct3D9.Mesh@)\">\n            <summary>\t\n            <p>Creates a mesh object using a flexible vertex format (FVF) code.</p>\t\n            </summary>\t\n            <param name=\"numFaces\"><dd>  <p>Number of faces for the mesh. The valid range for this number is greater than 0, and one less than the max DWORD value, typically 232 - 1, because the last index is reserved.</p> </dd></param>\t\n            <param name=\"numVertices\"><dd>  <p>Number of vertices for the mesh. This parameter must be greater than 0.</p> </dd></param>\t\n            <param name=\"options\"><dd>  <p>Combination of one or more flags from the  <strong>D3DXMESH</strong> enumeration, specifying creation options for the mesh. </p> </dd></param>\t\n            <param name=\"fvf\"><dd>  <p>Combination of <see cref=\"T:SharpDX.Direct3D9.VertexFormat\"/> that describes the vertex format for the returned mesh. This function does not support <see cref=\"F:SharpDX.Direct3D9.VertexFormat.PositionRhw\"/>.</p> </dd></param>\t\n            <param name=\"d3DDeviceRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface, the device object to be associated with the mesh.</p> </dd></param>\t\n            <param name=\"meshOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D9.Mesh\"/></strong> interface, representing the created mesh object.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCreateMeshFVF']/*\"/>\t\n            <msdn-id>bb172781</msdn-id>\t\n            <unmanaged>HRESULT D3DXCreateMeshFVF([In] unsigned int NumFaces,[In] unsigned int NumVertices,[In] unsigned int Options,[In] D3DFVF FVF,[In] IDirect3DDevice9* pD3DDevice,[In] ID3DXMesh** ppMesh)</unmanaged>\t\n            <unmanaged-short>D3DXCreateMeshFVF</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.ComputeIMTFromPerVertexSignal(SharpDX.Direct3D9.Mesh,System.Single,System.Int32,System.Int32,System.Int32,SharpDX.FunctionCallback,System.IntPtr,SharpDX.Direct3D.Blob@)\">\n            <summary>\t\n            <p>Calculate per-triangle IMT's from from per-vertex data. This function allows you to calculate the IMT based off of any value in a mesh (color, normal, etc).</p>\t\n            </summary>\t\n            <param name=\"meshRef\"><dd>  <p>A reference to an input mesh (see <strong><see cref=\"T:SharpDX.Direct3D9.Mesh\"/></strong>) which contains the object geometry for calculating the IMT.</p> </dd></param>\t\n            <param name=\"fVertexSignalRef\"><dd>  <p>A reference to an array of per-vertex data from which IMT will be computed. The array size is  uSignalStride * v, where v is the number of vertices in the mesh.</p> </dd></param>\t\n            <param name=\"uSignalDimension\"><dd>  <p>The number of floats per vertex.</p> </dd></param>\t\n            <param name=\"uSignalStride\"><dd>  <p>The number of bytes per vertex in the array. This must be a multiple of sizeof(float)</p> </dd></param>\t\n            <param name=\"dwOptions\"><dd>  <p>Texture wrap options. This is a combination of one or more <strong><see cref=\"T:SharpDX.Direct3D9.UVAtlasQuality\"/> FLAGS</strong>.</p> </dd></param>\t\n            <param name=\"statusCallbackRef\"><dd>  <p>A reference to a callback function to monitor IMT computation progress.</p> </dd></param>\t\n            <param name=\"userContextRef\"><dd>  <p>A reference to a user-defined variable which is passed to the status callback function. Typically used by an application to pass a reference to a data structure that provides context information for the callback function.</p> </dd></param>\t\n            <param name=\"iMTDataOut\"><dd>  <p>A reference to the buffer (see <strong><see cref=\"T:SharpDX.Direct3D.Blob\"/></strong>) containing the returned IMT array. This array can be provided as input to the D3DX UVAtlas Functions to prioritize texture-space allocation in the texture parameterization.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>; otherwise, the value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXComputeIMTFromPerVertexSignal']/*\"/>\t\n            <msdn-id>bb172738</msdn-id>\t\n            <unmanaged>HRESULT D3DXComputeIMTFromPerVertexSignal([In] ID3DXMesh* pMesh,[In] const float* pfVertexSignal,[In] unsigned int uSignalDimension,[In] unsigned int uSignalStride,[In] unsigned int dwOptions,[In] __function__stdcall* pStatusCallback,[In] void* pUserContext,[In] ID3DXBuffer** ppIMTData)</unmanaged>\t\n            <unmanaged-short>D3DXComputeIMTFromPerVertexSignal</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.LoadMeshFromXof(SharpDX.Direct3D9.XFileData,System.Int32,SharpDX.Direct3D9.Device,SharpDX.Direct3D.Blob@,SharpDX.Direct3D.Blob@,SharpDX.Direct3D.Blob@,System.Int32,SharpDX.Direct3D9.Mesh@)\">\n            <summary>\t\n            <p>Loads a mesh from an <strong><see cref=\"T:SharpDX.Direct3D9.XFileData\"/></strong> object.</p>\t\n            </summary>\t\n            <param name=\"xofMeshRef\">No documentation.</param>\t\n            <param name=\"options\">No documentation.</param>\t\n            <param name=\"d3DDeviceRef\">No documentation.</param>\t\n            <param name=\"adjacencyOut\">No documentation.</param>\t\n            <param name=\"materialsOut\">No documentation.</param>\t\n            <param name=\"effectInstancesOut\">No documentation.</param>\t\n            <param name=\"numMaterialsRef\">No documentation.</param>\t\n            <param name=\"meshOut\">No documentation.</param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>For mesh files that do not contain effect instance information, default effect instances will be generated from the material information in the .x file. A default effect instance will have default values that correspond to the members of the <strong><see cref=\"T:SharpDX.Direct3D9.Material\"/></strong> structure.</p><p>The default texture name is also filled in, but is handled differently. The name will be Texture0@Name, which corresponds to an effect variable by the name of \"Texture0\" with an annotation called \"Name.\" This will contain the string file name for the texture.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXLoadMeshFromXof']/*\"/>\t\n            <msdn-id>bb172892</msdn-id>\t\n            <unmanaged>HRESULT D3DXLoadMeshFromXof([In] ID3DXFileData* pxofMesh,[In] unsigned int Options,[In] IDirect3DDevice9* pD3DDevice,[In] ID3DXBuffer** ppAdjacency,[In] ID3DXBuffer** ppMaterials,[In] ID3DXBuffer** ppEffectInstances,[In] unsigned int* pNumMaterials,[In] ID3DXMesh** ppMesh)</unmanaged>\t\n            <unmanaged-short>D3DXLoadMeshFromXof</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.CreateMesh(System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.VertexElement,SharpDX.Direct3D9.Device,SharpDX.Direct3D9.Mesh@)\">\n            <summary>\t\n            <p>Creates a mesh object using a declarator.</p>\t\n            </summary>\t\n            <param name=\"numFaces\"><dd>  <p>Number of faces for the mesh. The valid range for this number is greater than 0, and one less than the maximum DWORD (typically 65534), because the last index is reserved.</p> </dd></param>\t\n            <param name=\"numVertices\"><dd>  <p>Number of vertices for the mesh. This parameter must be greater than 0.</p> </dd></param>\t\n            <param name=\"options\"><dd>  <p>Combination of one or more flags from the  <strong>D3DXMESH</strong> enumeration, specifying options for the mesh. </p> </dd></param>\t\n            <param name=\"declarationRef\"><dd>  <p>Array of <strong><see cref=\"T:SharpDX.Direct3D9.VertexElement\"/></strong> elements, describing the vertex format for the returned mesh. This parameter must map directly to a flexible vertex format (FVF).</p> </dd></param>\t\n            <param name=\"d3DDeviceRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface, the device object to be associated with the mesh.</p> </dd></param>\t\n            <param name=\"meshOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D9.Mesh\"/></strong> interface, representing the created mesh object.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCreateMesh']/*\"/>\t\n            <msdn-id>bb172780</msdn-id>\t\n            <unmanaged>HRESULT D3DXCreateMesh([In] unsigned int NumFaces,[In] unsigned int NumVertices,[In] unsigned int Options,[In] const D3DVERTEXELEMENT9* pDeclaration,[In] IDirect3DDevice9* pD3DDevice,[In] ID3DXMesh** ppMesh)</unmanaged>\t\n            <unmanaged-short>D3DXCreateMesh</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.CreatePatchMesh(SharpDX.Direct3D9.PatchInfo,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.VertexElement[],SharpDX.Direct3D9.Device,SharpDX.Direct3D9.PatchMesh@)\">\n            <summary>\t\n            <p>Creates a mesh from a control-patch mesh.</p>\t\n            </summary>\t\n            <param name=\"infoRef\"><dd>  <p>Patch information structure. For more information, see <strong><see cref=\"T:SharpDX.Direct3D9.PatchInfo\"/></strong>.</p> </dd></param>\t\n            <param name=\"dwNumPatches\"><dd>  <p>Number of patches.</p> </dd></param>\t\n            <param name=\"dwNumVertices\"><dd>  <p>Number of control vertices in the patch.</p> </dd></param>\t\n            <param name=\"dwOptions\"><dd>  <p>Unused. Reserved for later use.</p> </dd></param>\t\n            <param name=\"declRef\"><dd>  <p>Array of <strong><see cref=\"T:SharpDX.Direct3D9.VertexElement\"/></strong> elements, describing the vertex format for the returned mesh.</p> </dd></param>\t\n            <param name=\"d3DDeviceRef\"><dd>  <p>Pointer the device that creates the patch mesh. See <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong>.</p> </dd></param>\t\n            <param name=\"patchMeshRef\"><dd>  <p>Pointer to the <strong><see cref=\"T:SharpDX.Direct3D9.PatchMesh\"/></strong> object that is created.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>This method takes an input patch mesh and converts it to a tessellated mesh. Patch meshes use 16-bit index buffers. Therefore, indices to <strong>LockIndexBuffer</strong> are 16 bits.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCreatePatchMesh']/*\"/>\t\n            <msdn-id>bb172783</msdn-id>\t\n            <unmanaged>HRESULT D3DXCreatePatchMesh([In] const D3DXPATCHINFO* pInfo,[In] unsigned int dwNumPatches,[In] unsigned int dwNumVertices,[In] unsigned int dwOptions,[In, Buffer] const D3DVERTEXELEMENT9* pDecl,[In] IDirect3DDevice9* pD3DDevice,[In] ID3DXPatchMesh** pPatchMesh)</unmanaged>\t\n            <unmanaged-short>D3DXCreatePatchMesh</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.RectPatchSize(System.Single,System.Int32@,System.Int32@)\">\n            <summary>\t\n            <p>Gets the size of the rectangle patch.</p>\t\n            </summary>\t\n            <param name=\"fNumSegsRef\"><dd>  <p>Number of segments per edge to tessellate.</p> </dd></param>\t\n            <param name=\"dwTrianglesRef\"><dd>  <p>Pointer to a DWORD that contains the number of triangles in the patch.</p> </dd></param>\t\n            <param name=\"dwVerticesRef\"><dd>  <p>Pointer to a DWORD that contains the number of vertices in the patch.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXRectPatchSize']/*\"/>\t\n            <msdn-id>bb205423</msdn-id>\t\n            <unmanaged>HRESULT D3DXRectPatchSize([In] const float* pfNumSegs,[Out] unsigned int* pdwTriangles,[Out] unsigned int* pdwVertices)</unmanaged>\t\n            <unmanaged-short>D3DXRectPatchSize</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.TessellateTriPatch(SharpDX.Direct3D9.VertexBuffer,System.Single,SharpDX.Direct3D9.VertexElement,SharpDX.Direct3D9.TrianglePatchInfo,SharpDX.Direct3D9.Mesh)\">\n            <summary>\t\n            <p>Tessellates a triangular higher-order surface patch into a triangle mesh.</p>\t\n            </summary>\t\n            <param name=\"vBRef\"><dd>  <p>Vertex buffer containing the patch data.</p> </dd></param>\t\n            <param name=\"numSegsRef\"><dd>  <p>Pointer to an array of three floating-point values that identify the number of segments into which each edge of the triangle patch should be divided when tessellated. See <strong><see cref=\"T:SharpDX.Direct3D9.TrianglePatchInfo\"/></strong>.</p> </dd></param>\t\n            <param name=\"inDeclRef\"><dd>  <p>Vertex declaration structure that defines the vertex data. See <strong><see cref=\"T:SharpDX.Direct3D9.VertexElement\"/></strong>.</p> </dd></param>\t\n            <param name=\"triPatchInfoRef\"><dd>  <p>Describes a triangle patch. See <strong><see cref=\"T:SharpDX.Direct3D9.TrianglePatchInfo\"/></strong>.</p> </dd></param>\t\n            <param name=\"meshRef\"><dd>  <p>Pointer to the created mesh. See <strong><see cref=\"T:SharpDX.Direct3D9.Mesh\"/></strong>.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>Use <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.TriPatchSize(System.Single,System.Int32@,System.Int32@)\"/></strong> to get the number of output vertices and indices that the tessellation function needs.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXTessellateTriPatch']/*\"/>\t\n            <msdn-id>bb205471</msdn-id>\t\n            <unmanaged>HRESULT D3DXTessellateTriPatch([In] IDirect3DVertexBuffer9* pVB,[In] const float* pNumSegs,[In] const D3DVERTEXELEMENT9* pInDecl,[In] const D3DTRIPATCH_INFO* pTriPatchInfo,[In] ID3DXMesh* pMesh)</unmanaged>\t\n            <unmanaged-short>D3DXTessellateTriPatch</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.ComputeBoundingSphere(SharpDX.Vector3,System.Int32,System.Int32,SharpDX.Vector3,System.Single)\">\n            <summary>\t\n            <p>Computes a bounding sphere for the mesh.</p>\t\n            </summary>\t\n            <param name=\"firstPositionRef\"><dd>  <p>Pointer to first position.</p> </dd></param>\t\n            <param name=\"numVertices\"><dd>  <p>Number of vertices.</p> </dd></param>\t\n            <param name=\"dwStride\"><dd>  <p>Number of bytes between position vectors.  Use <strong>GetNumBytesPerVertex</strong>, <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.GetFVFVertexSize(SharpDX.Direct3D9.VertexFormat)\"/></strong>, or <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.GetDeclVertexSize(SharpDX.Direct3D9.VertexElement[],System.Int32)\"/></strong> to get the vertex stride.</p> </dd></param>\t\n            <param name=\"centerRef\"><dd>  <p> <strong><see cref=\"T:SharpDX.Vector3\"/></strong> structure, defining the coordinate center of the returned bounding sphere.</p> </dd></param>\t\n            <param name=\"radiusRef\"><dd>  <p>Radius of the returned bounding sphere.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXComputeBoundingSphere']/*\"/>\t\n            <msdn-id>bb172736</msdn-id>\t\n            <unmanaged>HRESULT D3DXComputeBoundingSphere([In] const D3DXVECTOR3* pFirstPosition,[In] unsigned int NumVertices,[In] unsigned int dwStride,[In] D3DXVECTOR3* pCenter,[In] float* pRadius)</unmanaged>\t\n            <unmanaged-short>D3DXComputeBoundingSphere</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.LoadMeshFromXW(System.String,System.Int32,SharpDX.Direct3D9.Device,SharpDX.Direct3D.Blob@,SharpDX.Direct3D.Blob@,SharpDX.Direct3D.Blob@,System.Int32,SharpDX.Direct3D9.Mesh@)\">\n            <summary>\t\n            <p>Loads a mesh from a DirectX .x file.</p>\t\n            </summary>\t\n            <param name=\"filenameRef\"><dd>  <p>Pointer to a string that specifies the filename. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the string data type resolves to LPCSTR. See Remarks.</p> </dd></param>\t\n            <param name=\"options\"><dd>  <p>Combination of one or more flags from the <strong>D3DXMESH</strong> enumeration, which specifies creation options for the mesh.</p> </dd></param>\t\n            <param name=\"d3DDeviceRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface, the device object associated with the mesh.</p> </dd></param>\t\n            <param name=\"adjacencyOut\"><dd>  <p>Pointer to a buffer that contains adjacency data.  The adjacency data contains an array of three DWORDs per face that specify the three neighbors for each face in the mesh. For more information about accessing the buffer, see <strong><see cref=\"T:SharpDX.Direct3D.Blob\"/></strong>.</p> </dd></param>\t\n            <param name=\"materialsOut\"><dd>  <p>Pointer to a buffer containing materials data. The buffer contains an array of <strong><see cref=\"T:SharpDX.Direct3D9.ExtendedMaterial\"/></strong> structures, containing information from the DirectX file. For more information about accessing the buffer, see <strong><see cref=\"T:SharpDX.Direct3D.Blob\"/></strong>.</p> </dd></param>\t\n            <param name=\"effectInstancesOut\"><dd>  <p>Pointer to a buffer containing an array of effect instances, one per attribute group in the returned mesh. An effect instance is a particular instance of state information used to initialize an effect. See <strong><see cref=\"T:SharpDX.Direct3D9.EffectInstance\"/></strong>. For more information about accessing the buffer, see <strong><see cref=\"T:SharpDX.Direct3D.Blob\"/></strong>.</p> </dd></param>\t\n            <param name=\"numMaterialsRef\"><dd>  <p>Pointer to the number of <strong><see cref=\"T:SharpDX.Direct3D9.ExtendedMaterial\"/></strong> structures in the  <em>ppMaterials</em> array, when the method returns.</p> </dd></param>\t\n            <param name=\"meshOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D9.Mesh\"/></strong> interface, representing the loaded mesh.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following values: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>The compiler setting also determines the function version. If Unicode is defined, the function call resolves to <see cref=\"M:SharpDX.Direct3D9.D3DX9.LoadMeshFromXW(System.String,System.Int32,SharpDX.Direct3D9.Device,SharpDX.Direct3D.Blob@,SharpDX.Direct3D.Blob@,SharpDX.Direct3D.Blob@,System.Int32,SharpDX.Direct3D9.Mesh@)\"/>. Otherwise, the function call resolves to D3DXLoadMeshFromXA because ANSI strings are being used.</p><p>All the meshes in the file will be collapsed into one output mesh. If the file contains a frame hierarchy, all the transformations will be applied to the mesh.</p><p>For mesh files that do not contain effect instance information, default effect instances will be generated from the material information in the .x file. A default effect instance will have default values that correspond to the members of the <strong><see cref=\"T:SharpDX.Direct3D9.Material\"/></strong> structure.</p><p>The default texture name is also filled in, but is handled differently. The name will be Texture0@Name, which corresponds to an effect variable by the name of \"Texture0\" with an annotation called \"Name.\" This will contain the string file name for the texture.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXLoadMeshFromXW']/*\"/>\t\n            <msdn-id>bb172890</msdn-id>\t\n            <unmanaged>HRESULT D3DXLoadMeshFromXW([In] const wchar_t* pFilename,[In] unsigned int Options,[In] IDirect3DDevice9* pD3DDevice,[In] ID3DXBuffer** ppAdjacency,[In] ID3DXBuffer** ppMaterials,[In] ID3DXBuffer** ppEffectInstances,[In] unsigned int* pNumMaterials,[In] ID3DXMesh** ppMesh)</unmanaged>\t\n            <unmanaged-short>D3DXLoadMeshFromXW</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.LoadMeshFromXInMemory(System.IntPtr,System.Int32,System.Int32,SharpDX.Direct3D9.Device,SharpDX.Direct3D.Blob@,SharpDX.Direct3D.Blob@,SharpDX.Direct3D.Blob@,System.Int32,SharpDX.Direct3D9.Mesh@)\">\n            <summary>\t\n            <p>Loads a mesh from memory.</p>\t\n            </summary>\t\n            <param name=\"memory\"><dd>  <p>Pointer to the memory buffer which contains the mesh data.</p> </dd></param>\t\n            <param name=\"sizeOfMemory\"><dd>  <p>Size of the file in memory, in bytes.</p> </dd></param>\t\n            <param name=\"options\"><dd>  <p>Combination of one or more flags from the <strong>D3DXMESH</strong> enumeration, specifying creation options for the mesh.</p> </dd></param>\t\n            <param name=\"d3DDeviceRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface, the device object associated with the mesh.</p> </dd></param>\t\n            <param name=\"adjacencyOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D.Blob\"/></strong> interface. When the method returns, this parameter is filled with an array of three DWORDs per face that specify the three neighbors for each face in the mesh.</p> </dd></param>\t\n            <param name=\"materialsOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D.Blob\"/></strong> interface. When this method returns, this parameter is filled with an array of <strong><see cref=\"T:SharpDX.Direct3D9.ExtendedMaterial\"/></strong> structures, containing information saved in the DirectX file.</p> </dd></param>\t\n            <param name=\"effectInstancesOut\"><dd>  <p>Pointer to a buffer containing an array of effect instances, one per attribute group in the returned mesh. An effect instance is a particular instance of state information used to initialize an effect. See <strong><see cref=\"T:SharpDX.Direct3D9.EffectInstance\"/></strong>. For more information about accessing the buffer, see <strong><see cref=\"T:SharpDX.Direct3D.Blob\"/></strong>.</p> </dd></param>\t\n            <param name=\"numMaterialsRef\"><dd>  <p>Pointer to the number of <strong><see cref=\"T:SharpDX.Direct3D9.ExtendedMaterial\"/></strong> structures in the <em>ppMaterials</em> array, when the method returns.</p> </dd></param>\t\n            <param name=\"meshOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D9.Mesh\"/></strong> interface, representing the loaded mesh.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following values: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>All the meshes in the file will be collapsed into one output mesh. If the file contains a frame hierarchy, all the transformations will be applied to the mesh.</p><p>For mesh files that do not contain effect instance information, default effect instances will be generated from the material information in the .x file. A default effect instance will have default values that correspond to the members of the <strong><see cref=\"T:SharpDX.Direct3D9.Material\"/></strong> structure.</p><p>The default texture name is also filled in, but is handled differently. The name will be Texture0@Name, which corresponds to an effect variable by the name of \"Texture0\" with an annotation called \"Name.\" This will contain the string file name for the texture.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXLoadMeshFromXInMemory']/*\"/>\t\n            <msdn-id>bb172891</msdn-id>\t\n            <unmanaged>HRESULT D3DXLoadMeshFromXInMemory([In] const void* Memory,[In] unsigned int SizeOfMemory,[In] unsigned int Options,[In] IDirect3DDevice9* pD3DDevice,[In] ID3DXBuffer** ppAdjacency,[In] ID3DXBuffer** ppMaterials,[In] ID3DXBuffer** ppEffectInstances,[In] unsigned int* pNumMaterials,[In] ID3DXMesh** ppMesh)</unmanaged>\t\n            <unmanaged-short>D3DXLoadMeshFromXInMemory</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.ConvertMeshSubsetToStrips(SharpDX.Direct3D9.BaseMesh,System.Int32,System.Int32,SharpDX.Direct3D9.IndexBuffer@,System.Int32,SharpDX.Direct3D.Blob@,System.Int32)\">\n            <summary>\t\n            <p>Convert the specified mesh subset into a series of strips.</p>\t\n            </summary>\t\n            <param name=\"meshIn\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.BaseMesh\"/></strong> interface, representing the mesh to convert to a strip.</p> </dd></param>\t\n            <param name=\"attribId\"><dd>  <p>Attribute ID of the mesh subset to convert to strips.</p> </dd></param>\t\n            <param name=\"iBOptions\"><dd>  <p>Combination of one or more flags from the <strong>D3DXMESH</strong> enumeration, specifying options for creating the index buffer. Cannot be <see cref=\"F:SharpDX.Direct3D9.MeshFlags.Use32Bit\"/>. The index buffer will be created with 32-bit or 16-bit indices depending on the format of the index buffer of the mesh specified by the <em>MeshIn</em> parameter.</p> </dd></param>\t\n            <param name=\"indexBufferOut\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.IndexBuffer\"/></strong> interface, representing index buffer containing the strip.</p> </dd></param>\t\n            <param name=\"numIndicesRef\"><dd>  <p>Number of indices in the buffer returned in the <em>ppIndexBuffer</em> parameter.</p> </dd></param>\t\n            <param name=\"stripLengthsOut\"><dd>  <p>Buffer containing an array of one DWORD per strip, which specifies the number of triangles in the that strip.</p> </dd></param>\t\n            <param name=\"numStripsRef\"><dd>  <p>Number of individual strips in the index buffer and corresponding strip length array.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following values: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>Before running this function, call <strong>Optimize</strong> or <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.OptimizeFaces(System.IntPtr,System.Int32,System.Int32,SharpDX.Bool,System.Int32[])\"/></strong>, with the <see cref=\"F:SharpDX.Direct3D9.MeshOptimizeFlags.AttributeSort\"/> flag set.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXConvertMeshSubsetToStrips']/*\"/>\t\n            <msdn-id>bb172750</msdn-id>\t\n            <unmanaged>HRESULT D3DXConvertMeshSubsetToStrips([In] ID3DXBaseMesh* MeshIn,[In] unsigned int AttribId,[In] unsigned int IBOptions,[In] IDirect3DIndexBuffer9** ppIndexBuffer,[In] unsigned int* pNumIndices,[In] ID3DXBuffer** ppStripLengths,[In] unsigned int* pNumStrips)</unmanaged>\t\n            <unmanaged-short>D3DXConvertMeshSubsetToStrips</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.ComputeIMTFromPerTexelSignal(SharpDX.Direct3D9.Mesh,System.Int32,System.Single,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.FunctionCallback,System.IntPtr,SharpDX.Direct3D.Blob@)\">\n            <summary>\t\n            <p>Calculate per-triangle IMT's from per-texel data. This function is similar to <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.ComputeIMTFromTexture(SharpDX.Direct3D9.Mesh,SharpDX.Direct3D9.Texture,System.Int32,System.Int32,SharpDX.FunctionCallback,System.IntPtr,SharpDX.Direct3D.Blob@)\"/></strong>, but it uses a float array to pass in the data, and it can calculate higher dimensional values than 4.</p>\t\n            </summary>\t\n            <param name=\"meshRef\">No documentation.</param>\t\n            <param name=\"dwTextureIndex\">No documentation.</param>\t\n            <param name=\"fTexelSignalRef\">No documentation.</param>\t\n            <param name=\"uWidth\">No documentation.</param>\t\n            <param name=\"uHeight\">No documentation.</param>\t\n            <param name=\"uSignalDimension\">No documentation.</param>\t\n            <param name=\"uComponents\">No documentation.</param>\t\n            <param name=\"dwOptions\">No documentation.</param>\t\n            <param name=\"statusCallbackRef\">No documentation.</param>\t\n            <param name=\"userContextRef\">No documentation.</param>\t\n            <param name=\"iMTDataOut\">No documentation.</param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>; otherwise, the value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXComputeIMTFromPerTexelSignal']/*\"/>\t\n            <msdn-id>bb172737</msdn-id>\t\n            <unmanaged>HRESULT D3DXComputeIMTFromPerTexelSignal([In] ID3DXMesh* pMesh,[In] unsigned int dwTextureIndex,[In] float* pfTexelSignal,[In] unsigned int uWidth,[In] unsigned int uHeight,[In] unsigned int uSignalDimension,[In] unsigned int uComponents,[In] unsigned int dwOptions,[In] __function__stdcall* pStatusCallback,[In] void* pUserContext,[In] ID3DXBuffer** ppIMTData)</unmanaged>\t\n            <unmanaged-short>D3DXComputeIMTFromPerTexelSignal</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.TriPatchSize(System.Single,System.Int32@,System.Int32@)\">\n            <summary>\t\n            <p>Gets the size of the triangle patch.</p>\t\n            </summary>\t\n            <param name=\"fNumSegsRef\"><dd>  <p>Number of segments per edge to tessellate.</p> </dd></param>\t\n            <param name=\"dwTrianglesRef\"><dd>  <p>Pointer to a DWORD that contains the number of triangles in the patch.</p> </dd></param>\t\n            <param name=\"dwVerticesRef\"><dd>  <p>Pointer to a DWORD that contains the number of vertices in the triangle patch.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXTriPatchSize']/*\"/>\t\n            <msdn-id>Bb205476</msdn-id>\t\n            <unmanaged>HRESULT D3DXTriPatchSize([In] const float* pfNumSegs,[Out] unsigned int* pdwTriangles,[Out] unsigned int* pdwVertices)</unmanaged>\t\n            <unmanaged-short>D3DXTriPatchSize</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.ComputeNormals(SharpDX.Direct3D9.BaseMesh,System.Int32)\">\n            <summary>\t\n            <p>Computes unit normals for each vertex in a mesh. Provided to support legacy applications. Use <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.ComputeTangentFrameEx(SharpDX.Direct3D9.Mesh,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Single,System.Single,System.Single,SharpDX.Direct3D9.Mesh@,SharpDX.Direct3D.Blob@)\"/></strong> for better results.</p>\t\n            </summary>\t\n            <param name=\"meshRef\">No documentation.</param>\t\n            <param name=\"adjacencyRef\">No documentation.</param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>The input mesh must have the <see cref=\"F:SharpDX.Direct3D9.VertexFormat.Normal\"/> flag specified in its flexible vertex format (FVF).</p><p>A normal for a vertex is generated by averaging the normals of all faces that share that vertex.</p><p>If adjacency is provided, replicated vertices are ignored and \"smoothed\" over. If adjacency is not provided, replicated vertices will have normals averaged in from only the faces explicitly referencing them.</p><p>This function simply calls <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.ComputeTangentFrameEx(SharpDX.Direct3D9.Mesh,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Single,System.Single,System.Single,SharpDX.Direct3D9.Mesh@,SharpDX.Direct3D.Blob@)\"/></strong> with the following input parameters:</p><pre><code> <see cref=\"M:SharpDX.Direct3D9.D3DX9.ComputeTangentFrameEx(SharpDX.Direct3D9.Mesh,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Single,System.Single,System.Single,SharpDX.Direct3D9.Mesh@,SharpDX.Direct3D.Blob@)\"/>( pMesh, D3DX_DEFAULT, 0, D3DX_DEFAULT, 0, D3DX_DEFAULT, 0, <see cref=\"F:SharpDX.Direct3D9.DeclarationUsage.Normal\"/>, 0, <see cref=\"F:SharpDX.Direct3D9.TangentOptions.GenerateInPlace\"/> | <see cref=\"F:SharpDX.Direct3D9.TangentOptions.CalculateNormals\"/>, pAdjacency, -1.01f, -0.01f, -1.01f, <c>null</c>, <c>null</c>);\t\n            </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXComputeNormals']/*\"/>\t\n            <msdn-id>bb172742</msdn-id>\t\n            <unmanaged>HRESULT D3DXComputeNormals([In] ID3DXBaseMesh* pMesh,[In] const unsigned int* pAdjacency)</unmanaged>\t\n            <unmanaged-short>D3DXComputeNormals</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.PreprocessShader(System.IntPtr,System.Int32,SharpDX.Direct3D9.Macro[],System.IntPtr,SharpDX.Direct3D.Blob@,SharpDX.Direct3D.Blob@)\">\n            <summary>\t\n            <p>Preprocesses a shader without performing compilation. This resolves all #defines and #includes, providing a self-contained shader for subsequent compilation. </p>\t\n            </summary>\t\n            <param name=\"srcDataRef\"><dd>  <p>Pointer to a string that contains the shader.</p> </dd></param>\t\n            <param name=\"srcDataSize\"><dd>  <p>Length of the data in bytes.</p> </dd></param>\t\n            <param name=\"definesRef\"><dd>  <p>An optional <strong><c>null</c></strong> terminated array of <strong><see cref=\"T:SharpDX.Direct3D9.Macro\"/></strong> structures. This value may be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"includeRef\"><dd>  <p>Optional interface reference, <strong><see cref=\"T:SharpDX.Direct3D9.Include\"/></strong>, to use for handling #include directives. If this value is <strong><c>null</c></strong>, #includes will either be honored when compiling from a file or will cause an error when compiled from a resource or memory.</p> </dd></param>\t\n            <param name=\"shaderTextOut\"><dd>  <p>Returns a buffer containing a single large string that represents the resulting formatted token stream.</p> </dd></param>\t\n            <param name=\"errorMsgsOut\"><dd>  <p>Returns a buffer containing a listing of errors and warnings that were encountered during the compile.  These are the same messages the debugger displays when running in debug mode.  This value may be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA, E_OUTOFMEMORY.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXPreprocessShader']/*\"/>\t\n            <msdn-id>bb205398</msdn-id>\t\n            <unmanaged>HRESULT D3DXPreprocessShader([In] const void* pSrcData,[In] unsigned int SrcDataSize,[In, Buffer, Optional] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] ID3DXBuffer** ppShaderText,[In] ID3DXBuffer** ppErrorMsgs)</unmanaged>\t\n            <unmanaged-short>D3DXPreprocessShader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.CompileShaderFromFileW(System.String,SharpDX.Direct3D9.Macro[],System.IntPtr,System.String,System.String,System.Int32,SharpDX.Direct3D.Blob@,SharpDX.Direct3D.Blob@,SharpDX.Direct3D9.ConstantTable@)\">\n            <summary>\t\n            <p>Compile a shader file.</p>\t\n            </summary>\t\n            <param name=\"srcFileRef\"><dd>  <p>Pointer to a string that specifies the filename.</p> </dd></param>\t\n            <param name=\"definesRef\"><dd>  <p>An optional <strong><c>null</c></strong> terminated array of <strong><see cref=\"T:SharpDX.Direct3D9.Macro\"/></strong> structures. This value may be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"includeRef\"><dd>  <p>Optional interface reference, <strong><see cref=\"T:SharpDX.Direct3D9.Include\"/></strong>, to use for handling #include directives. If this value is <strong><c>null</c></strong>, #includes will either be honored when compiling from a file or will cause an error when compiled from a resource or memory.</p> </dd></param>\t\n            <param name=\"functionNameRef\"><dd>  <p>Pointer to the shader entry point function where execution begins.</p> </dd></param>\t\n            <param name=\"profileRef\"><dd>  <p>Pointer to a shader profile which determines the shader instruction set. See <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.GetVertexShaderProfile(SharpDX.Direct3D9.Device)\"/></strong> or <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.GetPixelShaderProfile(SharpDX.Direct3D9.Device)\"/></strong> for a list of the profiles available.</p> </dd></param>\t\n            <param name=\"flags\"><dd>  <p>Compile options identified by various flags. The Direct3D 10 HLSL compiler is now the default. See <see cref=\"T:SharpDX.Direct3D9.ShaderFlags\"/> Flags for details.</p> </dd></param>\t\n            <param name=\"shaderOut\"><dd>  <p>Returns a buffer containing the created shader.  This buffer contains the compiled shader code, as well as any embedded debug and symbol table information.  </p> </dd></param>\t\n            <param name=\"errorMsgsOut\"><dd>  <p>Returns a buffer containing a listing of errors and warnings that were encountered during the compile.  These are the same messages the debugger displays when running in debug mode. This value may be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"constantTableOut\"><dd>  <p>Returns an <strong><see cref=\"T:SharpDX.Direct3D9.ConstantTable\"/></strong> interface, which can be used to access shader constants. This value can be <strong><c>null</c></strong>. If you compile your application as large address aware (that is, you use the /LARGEADDRESSAWARE linker option to handle addresses larger than 2 GB), you cannot use this parameter and must set it to <strong><c>null</c></strong>. Instead, you must use the <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.GetShaderConstantTableEx(System.IntPtr,System.Int32,SharpDX.Direct3D9.ConstantTable@)\"/></strong> function to retrieve the shader-constant table that is embedded inside the shader. In this <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.GetShaderConstantTableEx(System.IntPtr,System.Int32,SharpDX.Direct3D9.ConstantTable@)\"/></strong> call, you must pass the <strong>D3DXCONSTTABLE_LARGEADDRESSAWARE</strong> flag to the <em>Flags</em> parameter to specify to access up to 4 GB of virtual address space.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA, E_OUTOFMEMORY.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCompileShaderFromFileW']/*\"/>\t\n            <msdn-id>bb172732</msdn-id>\t\n            <unmanaged>HRESULT D3DXCompileShaderFromFileW([In] const wchar_t* pSrcFile,[In, Buffer, Optional] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] const char* pFunctionName,[In] const char* pProfile,[In] unsigned int Flags,[In] ID3DXBuffer** ppShader,[In] ID3DXBuffer** ppErrorMsgs,[In] ID3DXConstantTable** ppConstantTable)</unmanaged>\t\n            <unmanaged-short>D3DXCompileShaderFromFileW</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.CreateTextureShader(System.Int32,SharpDX.Direct3D9.TextureShader@)\">\n            <summary>\t\n            <p>Creates a texture shader object from the compiled shader.</p>\t\n            </summary>\t\n            <param name=\"functionRef\"><dd>  <p>Pointer to the function DWORD stream.</p> </dd></param>\t\n            <param name=\"textureShaderOut\"><dd>  <p>Returns an <strong><see cref=\"T:SharpDX.Direct3D9.TextureShader\"/></strong> object which can be used to procedurally fill the contents of a texture using the <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.FillTextureTX(SharpDX.Direct3D9.Texture,SharpDX.Direct3D9.TextureShader)\"/></strong> functions.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA, E_OUTOFMEMORY.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCreateTextureShader']/*\"/>\t\n            <msdn-id>bb172808</msdn-id>\t\n            <unmanaged>HRESULT D3DXCreateTextureShader([In] const unsigned int* pFunction,[In] ID3DXTextureShader** ppTextureShader)</unmanaged>\t\n            <unmanaged-short>D3DXCreateTextureShader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.GetShaderOutputSemantics(System.IntPtr,SharpDX.Direct3D9.ShaderSemantic[],System.Int32@)\">\n            <summary>\t\n            <p>Get the semantics for all shader output elements.</p>\t\n            </summary>\t\n            <param name=\"functionRef\"><dd>  <p>Pointer to the shader function DWORD stream.</p> </dd></param>\t\n            <param name=\"semanticsRef\"><dd>  <p>Pointer to an array of <strong><see cref=\"T:SharpDX.Direct3D9.ShaderSemantic\"/></strong> structures.  The function will fill this array with the semantics for each output element referenced by the shader.  This array is assumed to contain at least MAXD3DDECLLENGTH elements. However, calling <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.GetShaderOutputSemantics(System.IntPtr,SharpDX.Direct3D9.ShaderSemantic[],System.Int32@)\"/></strong> with pSemantics = <strong><c>null</c></strong> will return the number of elements  needed for pCount.</p> </dd></param>\t\n            <param name=\"countRef\"><dd>  <p>Returns the number of elements in pSemantics.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA, E_OUTOFMEMORY.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXGetShaderOutputSemantics']/*\"/>\t\n            <msdn-id>bb172873</msdn-id>\t\n            <unmanaged>HRESULT D3DXGetShaderOutputSemantics([In] const void* pFunction,[In, Out, Buffer] D3DXSEMANTIC* pSemantics,[InOut] unsigned int* pCount)</unmanaged>\t\n            <unmanaged-short>D3DXGetShaderOutputSemantics</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.GetShaderInputSemantics(System.IntPtr,SharpDX.Direct3D9.ShaderSemantic[],System.Int32@)\">\n            <summary>\t\n            <p>Gets the semantics for the shader inputs. Use this method to determine the input vertex format.</p>\t\n            </summary>\t\n            <param name=\"functionRef\"><dd>  <p>Pointer to the shader function DWORD stream.</p> </dd></param>\t\n            <param name=\"semanticsRef\"><dd>  <p>Pointer to an array of <strong><see cref=\"T:SharpDX.Direct3D9.ShaderSemantic\"/></strong> structures.  The function will fill this array with the semantics for each input element referenced by the shader. This array is assumed to contain at least MAXD3DDECLLENGTH elements. However, calling <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.GetShaderInputSemantics(System.IntPtr,SharpDX.Direct3D9.ShaderSemantic[],System.Int32@)\"/></strong> with pSemantics = <strong><c>null</c></strong> will return the number of elements  needed for pCount.</p> </dd></param>\t\n            <param name=\"countRef\"><dd>  <p>Returns the number of elements in pSemantics.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>Use <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.GetShaderInputSemantics(System.IntPtr,SharpDX.Direct3D9.ShaderSemantic[],System.Int32@)\"/></strong> to return a list of input semantics required by the shader. This is the way to find out what the input vertex format is for a high-level shader language (HLSL) shader. If the shader has additional inputs that your vertex declaration is missing, you could create an extra vertex stream that has a stride of 0 that has the missing components with default values. For instance, this technique could be used to provide default vertex color for models that do not specify it.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXGetShaderInputSemantics']/*\"/>\t\n            <msdn-id>bb172872</msdn-id>\t\n            <unmanaged>HRESULT D3DXGetShaderInputSemantics([In] const void* pFunction,[In, Out, Buffer] D3DXSEMANTIC* pSemantics,[InOut] unsigned int* pCount)</unmanaged>\t\n            <unmanaged-short>D3DXGetShaderInputSemantics</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.GetPixelShaderProfile(SharpDX.Direct3D9.Device)\">\n            <summary>\t\n            <p>Returns the name of the highest high-level shader language (HLSL) profile supported by a given device.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\"><dd>  <p>Pointer to the device. See <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong>.</p> </dd></param>\t\n            <returns><p>The HLSL profile name.</p><p>If the device does not support pixel shaders then the function returns <strong><c>null</c></strong>.</p></returns>\t\n            <remarks>\t\n            <p>A shader profile specifies the assembly shader version to use and the capabilities available to the HLSL compiler when compiling a shader.  The following table lists the pixel shader profiles that are supported.</p><table> <tr><th>Shader Profile</th><th>Description</th></tr> <tr><td>ps_1_1</td><td>Compile to ps_1_1 version.</td></tr> <tr><td>ps_1_2</td><td>Compile to ps_1_2 version.</td></tr> <tr><td>ps_1_3</td><td>Compile to ps_1_3 version.</td></tr> <tr><td>ps_1_4</td><td>Compile to ps_1_4 version.</td></tr> <tr><td>ps_2_0</td><td>Compile to ps_2_0 version.</td></tr> <tr><td>ps_2_a</td><td>Same as the ps_2_0 profile, with the following additional capabilities available for the compiler to target: <ul> <li>Number of Temporary Registers (r#) is greater than or equal to 22.</li> <li>Arbitrary source swizzle.</li> <li>Gradient instructions: dsx, dsy.</li> <li>Predication.</li> <li>No dependent texture read limit.</li> <li>No limit for the number of texture instructions.</li> </ul> </td></tr> <tr><td>ps_2_b</td><td>Same as the ps_2_0 profile, with the following additional capabilities available for the compiler to target: <ul> <li>Number of Temporary Registers (r#) is greater than or equal to 32.</li> <li>No limit for the number of texture instructions.</li> </ul> </td></tr> <tr><td>ps_3_0</td><td>Compile to ps_3_0 version.</td></tr> </table><p>?</p><p>For more information about the differences between shader versions, see Pixel Shader Differences.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXGetPixelShaderProfile']/*\"/>\t\n            <msdn-id>bb172870</msdn-id>\t\n            <unmanaged>const char* D3DXGetPixelShaderProfile([In] IDirect3DDevice9* pDevice)</unmanaged>\t\n            <unmanaged-short>D3DXGetPixelShaderProfile</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.FindShaderComment(System.IntPtr,System.Int32,System.IntPtr@,System.Int32@)\">\n            <summary>\t\n            <p>Searches through a shader for a particular comment. The comment is identified by a four-character code (FOURCC) in the first DWORD of the comment.</p>\t\n            </summary>\t\n            <param name=\"functionRef\"><dd>  <p>Pointer to the shader function DWORD stream.</p> </dd></param>\t\n            <param name=\"fourCC\"><dd>  <p>FOURCC code that identifies the comment block. See FourCC Formats.</p> </dd></param>\t\n            <param name=\"dataOut\"><dd>  <p>Returns a reference to the comment data (not including the comment token and FOURCC code). This value can be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"sizeInBytesRef\"><dd>  <p>Returns the size of the comment data in bytes. This value can be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the comment is not found, and no other error has occurred, S_FALSE is returned.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXFindShaderComment']/*\"/>\t\n            <msdn-id>bb172838</msdn-id>\t\n            <unmanaged>HRESULT D3DXFindShaderComment([In] const void* pFunction,[In] unsigned int FourCC,[Out] const void** ppData,[Out] unsigned int* pSizeInBytes)</unmanaged>\t\n            <unmanaged-short>D3DXFindShaderComment</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.AssembleShaderFromResourceW(System.IntPtr,System.String,SharpDX.Direct3D9.Macro[],System.IntPtr,System.Int32,SharpDX.Direct3D.Blob@,SharpDX.Direct3D.Blob@)\">\n            <summary>\t\n            <p>Assemble a shader.</p>\t\n            </summary>\t\n            <param name=\"hSrcModule\"><dd>  <p>Handle to a module containing the effect description. If this parameter is <strong><c>null</c></strong>, the current module will be used.</p> </dd></param>\t\n            <param name=\"srcResourceRef\"><dd>  <p>Pointer to a string that specifies the resource name. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the string data type resolves to LPCSTR. See Remarks.</p> </dd></param>\t\n            <param name=\"definesRef\"><dd>  <p>An optional <strong><c>null</c></strong> terminated array of <strong><see cref=\"T:SharpDX.Direct3D9.Macro\"/></strong> structures. This value may be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"includeRef\"><dd>  <p>Optional interface reference, <strong><see cref=\"T:SharpDX.Direct3D9.Include\"/></strong>, to use for handling #include directives. If this value is <strong><c>null</c></strong>, #includes will either be honored when compiling from a file or will cause an error when compiled from a resource or memory.</p> </dd></param>\t\n            <param name=\"flags\"><dd>  <p>Compile options identified by various flags. The Direct3D 10 HLSL compiler is now the default. See <see cref=\"T:SharpDX.Direct3D9.ShaderFlags\"/> Flags for details.</p> </dd></param>\t\n            <param name=\"shaderOut\"><dd>  <p>Returns a buffer containing the created shader.  This buffer contains the compiled shader code, as well as any embedded debug and symbol table information.  </p> </dd></param>\t\n            <param name=\"errorMsgsOut\"><dd>  <p>Returns a buffer containing a listing of errors and warnings that were encountered during the compile.  These are the same messages the debugger displays when running in debug mode. This value may be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>The compiler setting also determines the function version. If Unicode is defined, the function call resolves to <see cref=\"M:SharpDX.Direct3D9.D3DX9.AssembleShaderFromResourceW(System.IntPtr,System.String,SharpDX.Direct3D9.Macro[],System.IntPtr,System.Int32,SharpDX.Direct3D.Blob@,SharpDX.Direct3D.Blob@)\"/>. Otherwise, the function call resolves to D3DXAssembleShaderFromResourceA because ANSI strings are being used.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXAssembleShaderFromResourceW']/*\"/>\t\n            <msdn-id>bb172709</msdn-id>\t\n            <unmanaged>HRESULT D3DXAssembleShaderFromResourceW([In] HINSTANCE hSrcModule,[In] const wchar_t* pSrcResource,[In, Buffer, Optional] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] unsigned int Flags,[In] ID3DXBuffer** ppShader,[In] ID3DXBuffer** ppErrorMsgs)</unmanaged>\t\n            <unmanaged-short>D3DXAssembleShaderFromResourceW</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.AssembleShader(System.IntPtr,System.Int32,SharpDX.Direct3D9.Macro[],System.IntPtr,System.Int32,SharpDX.Direct3D.Blob@,SharpDX.Direct3D.Blob@)\">\n            <summary>\t\n            <p>Assemble a shader.</p>\t\n            </summary>\t\n            <param name=\"srcDataRef\"><dd>  <p>Pointer to a memory buffer that contains the shader data.</p> </dd></param>\t\n            <param name=\"srcDataLen\"><dd>  <p>Length of the effect data, in bytes.</p> </dd></param>\t\n            <param name=\"definesRef\"><dd>  <p>An optional <strong><c>null</c></strong> terminated array of <strong><see cref=\"T:SharpDX.Direct3D9.Macro\"/></strong> structures. This value may be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"includeRef\"><dd>  <p>Optional interface reference, <strong><see cref=\"T:SharpDX.Direct3D9.Include\"/></strong>, to use for handling #include directives. If this value is <strong><c>null</c></strong>, #includes will either be honored when compiling from a file or will cause an error when compiled from a resource or memory.</p> </dd></param>\t\n            <param name=\"flags\"><dd>  <p>Compile options identified by various flags. The Direct3D 10 HLSL compiler is now the default. See <see cref=\"T:SharpDX.Direct3D9.ShaderFlags\"/> Flags for details.</p> </dd></param>\t\n            <param name=\"shaderOut\"><dd>  <p>Returns a buffer containing the created shader.  This buffer contains the compiled shader code, as well as any embedded debug and symbol table information.</p> </dd></param>\t\n            <param name=\"errorMsgsOut\"><dd>  <p>Returns a buffer containing a listing of errors and warnings that were encountered during the compile.  These are the same messages the debugger displays when running in debug mode. This value may be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA, E_OUTOFMEMORY.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXAssembleShader']/*\"/>\t\n            <msdn-id>bb172707</msdn-id>\t\n            <unmanaged>HRESULT D3DXAssembleShader([In] const void* pSrcData,[In] unsigned int SrcDataLen,[In, Buffer, Optional] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] unsigned int Flags,[In] ID3DXBuffer** ppShader,[In] ID3DXBuffer** ppErrorMsgs)</unmanaged>\t\n            <unmanaged-short>D3DXAssembleShader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.CompileShader(System.IntPtr,System.Int32,SharpDX.Direct3D9.Macro[],System.IntPtr,System.String,System.String,System.Int32,SharpDX.Direct3D.Blob@,SharpDX.Direct3D.Blob@,SharpDX.Direct3D9.ConstantTable@)\">\n            <summary>\t\n            <p>Compile a shader file.</p>\t\n            </summary>\t\n            <param name=\"srcDataRef\"><dd>  <p>Pointer to a string that contains the shader.</p> </dd></param>\t\n            <param name=\"srcDataLen\"><dd>  <p>Length of the data in bytes.</p> </dd></param>\t\n            <param name=\"definesRef\"><dd>  <p>An optional <strong><c>null</c></strong> terminated array of <strong><see cref=\"T:SharpDX.Direct3D9.Macro\"/></strong> structures. This value may be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"includeRef\"><dd>  <p>Optional interface reference, <strong><see cref=\"T:SharpDX.Direct3D9.Include\"/></strong>, to use for handling #include directives. If this value is <strong><c>null</c></strong>, #includes will either be honored when compiling from a file or will cause an error when compiled from a resource or memory.</p> </dd></param>\t\n            <param name=\"functionNameRef\"><dd>  <p>Pointer to a string that contains the name of the shader entry point function where execution begins.</p> </dd></param>\t\n            <param name=\"profileRef\"><dd>  <p>Pointer to a shader profile which determines the shader instruction set. See <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.GetVertexShaderProfile(SharpDX.Direct3D9.Device)\"/></strong> or <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.GetPixelShaderProfile(SharpDX.Direct3D9.Device)\"/></strong> for a list of the profiles available.</p> </dd></param>\t\n            <param name=\"flags\"><dd>  <p>Compile options identified by various flags. The Direct3D 10 HLSL compiler is now the default. See <see cref=\"T:SharpDX.Direct3D9.ShaderFlags\"/> Flags for details.</p> </dd></param>\t\n            <param name=\"shaderOut\"><dd>  <p>Returns a buffer containing the created shader.  This buffer contains the compiled shader code, as well as any embedded debug and symbol table information.  </p> </dd></param>\t\n            <param name=\"errorMsgsOut\"><dd>  <p>Returns a buffer containing a listing of errors and warnings that were encountered during the compile.  These are the same messages the debugger displays when running in debug mode.  This value may be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"constantTableOut\"><dd>  <p>Returns an <strong><see cref=\"T:SharpDX.Direct3D9.ConstantTable\"/></strong> interface, which can be used to access shader constants. This value can be <strong><c>null</c></strong>. If you compile your application as large address aware (that is, you use the /LARGEADDRESSAWARE linker option to handle addresses larger than 2 GB), you cannot use this parameter and must set it to <strong><c>null</c></strong>. Instead, you must use the <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.GetShaderConstantTableEx(System.IntPtr,System.Int32,SharpDX.Direct3D9.ConstantTable@)\"/></strong> function to retrieve the shader-constant table that is embedded inside the shader. In this <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.GetShaderConstantTableEx(System.IntPtr,System.Int32,SharpDX.Direct3D9.ConstantTable@)\"/></strong> call, you must pass the <strong>D3DXCONSTTABLE_LARGEADDRESSAWARE</strong> flag to the <em>Flags</em> parameter to specify to access up to 4 GB of virtual address space.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA, E_OUTOFMEMORY.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCompileShader']/*\"/>\t\n            <msdn-id>bb172731</msdn-id>\t\n            <unmanaged>HRESULT D3DXCompileShader([In] const void* pSrcData,[In] unsigned int SrcDataLen,[In, Buffer, Optional] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] const char* pFunctionName,[In] const char* pProfile,[In] unsigned int Flags,[In] ID3DXBuffer** ppShader,[In] ID3DXBuffer** ppErrorMsgs,[In] ID3DXConstantTable** ppConstantTable)</unmanaged>\t\n            <unmanaged-short>D3DXCompileShader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.GetShaderSamplers(System.IntPtr,System.IntPtr,System.Int32@)\">\n            <summary>\t\n            <p>Get the sampler names referenced in a shader.</p>\t\n            </summary>\t\n            <param name=\"functionRef\"><dd>  <p>Pointer to the shader function DWORD stream.</p> </dd></param>\t\n            <param name=\"samplersRef\"><dd>  <p>Pointer to an array of LPCSTRs. The function will fill this array with references to the sampler names contained within <em>pFunction</em>. The maximum array size is the maximum number of sampler registers (16 for vs_3_0 and ps_3_0).</p> <p>To find the number of samplers used, check <em>pCount</em> after calling <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.GetShaderSamplers(System.IntPtr,System.IntPtr,System.Int32@)\"/></strong> with pSamplers = <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"countRef\"><dd>  <p>Returns the number of samplers referenced by the shader.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA, E_OUTOFMEMORY.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXGetShaderSamplers']/*\"/>\t\n            <msdn-id>bb172874</msdn-id>\t\n            <unmanaged>HRESULT D3DXGetShaderSamplers([In] const void* pFunction,[In, Out, Buffer] const void** pSamplers,[InOut] unsigned int* pCount)</unmanaged>\t\n            <unmanaged-short>D3DXGetShaderSamplers</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.GetShaderConstantTable(System.IntPtr)\">\n            <summary>\t\n            <p>Gets the shader-constant table embedded inside a shader.</p>\t\n            </summary>\t\n            <param name=\"functionRef\"><dd>  <p>Pointer to the function DWORD stream.</p> </dd></param>\t\n            <returns><dd>  <p>Returns the constant table interface (see <strong><see cref=\"T:SharpDX.Direct3D9.ConstantTable\"/></strong>) that manages the constant table.</p> </dd></returns>\t\n            <remarks>\t\n            <p>A constant table is generated by <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.CompileShader(System.IntPtr,System.Int32,SharpDX.Direct3D9.Macro[],System.IntPtr,System.String,System.String,System.Int32,SharpDX.Direct3D.Blob@,SharpDX.Direct3D.Blob@,SharpDX.Direct3D9.ConstantTable@)\"/></strong> and embedded in the shader body. If you need additional virtual address space, see <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.GetShaderConstantTableEx(System.IntPtr,System.Int32,SharpDX.Direct3D9.ConstantTable@)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXGetShaderConstantTable']/*\"/>\t\n            <msdn-id>bb172871</msdn-id>\t\n            <unmanaged>HRESULT D3DXGetShaderConstantTable([In] const void* pFunction,[Out] ID3DXConstantTable** ppConstantTable)</unmanaged>\t\n            <unmanaged-short>D3DXGetShaderConstantTable</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.AssembleShaderFromFileW(System.String,SharpDX.Direct3D9.Macro[],System.IntPtr,System.Int32,SharpDX.Direct3D.Blob@,SharpDX.Direct3D.Blob@)\">\n            <summary>\t\n            <p>Assemble a shader.</p>\t\n            </summary>\t\n            <param name=\"srcFileRef\"><dd>  <p>Pointer to a string that specifies the filename. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the string data type resolves to LPCSTR. See Remarks.</p> </dd></param>\t\n            <param name=\"definesRef\"><dd>  <p>An optional <strong><c>null</c></strong> terminated array of <strong><see cref=\"T:SharpDX.Direct3D9.Macro\"/></strong> structures. This value may be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"includeRef\"><dd>  <p>Optional interface reference, <strong><see cref=\"T:SharpDX.Direct3D9.Include\"/></strong>, to use for handling #include directives. If this value is <strong><c>null</c></strong>, #includes will either be honored when compiling from a file or will cause an error when compiled from a resource or memory.</p> </dd></param>\t\n            <param name=\"flags\"><dd>  <p>Compile options identified by various flags. The Direct3D 10 HLSL compiler is now the default. See <see cref=\"T:SharpDX.Direct3D9.ShaderFlags\"/> Flags for details.</p> </dd></param>\t\n            <param name=\"shaderOut\"><dd>  <p>Returns a buffer containing the created shader.  This buffer contains the compiled shader code, as well as any embedded debug and symbol table information.  </p> </dd></param>\t\n            <param name=\"errorMsgsOut\"><dd>  <p>Returns a buffer containing a listing of errors and warnings that were encountered during the compile.  These are the same messages the debugger displays when running in debug mode. This value may be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>The compiler setting also determines the function version. If Unicode is defined, the function call resolves to <see cref=\"M:SharpDX.Direct3D9.D3DX9.AssembleShaderFromFileW(System.String,SharpDX.Direct3D9.Macro[],System.IntPtr,System.Int32,SharpDX.Direct3D.Blob@,SharpDX.Direct3D.Blob@)\"/>. Otherwise, the function call resolves to D3DXAssembleShaderFromFileA because ANSI strings are being used.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXAssembleShaderFromFileW']/*\"/>\t\n            <msdn-id>bb172708</msdn-id>\t\n            <unmanaged>HRESULT D3DXAssembleShaderFromFileW([In] const wchar_t* pSrcFile,[In, Buffer, Optional] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] unsigned int Flags,[In] ID3DXBuffer** ppShader,[In] ID3DXBuffer** ppErrorMsgs)</unmanaged>\t\n            <unmanaged-short>D3DXAssembleShaderFromFileW</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.GetShaderConstantTableEx(System.IntPtr,System.Int32,SharpDX.Direct3D9.ConstantTable@)\">\n            <summary>\t\n            <p>Gets the shader-constant table embedded inside a shader.</p>\t\n            </summary>\t\n            <param name=\"functionRef\"><dd>  <p>Pointer to the function DWORD stream.</p> </dd></param>\t\n            <param name=\"flags\"><dd>  <p>Use the D3DXCONSTTABLE_LARGEADDRESSAWARE flag to access up to 4 GB of virtual address space (instead of the default of 2 GB). If you do not need the additional virtual address space, use <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.GetShaderConstantTable(System.IntPtr)\"/></strong>.</p> </dd></param>\t\n            <param name=\"constantTableOut\"><dd>  <p>Returns the constant table interface (see <strong><see cref=\"T:SharpDX.Direct3D9.ConstantTable\"/></strong>) that manages the constant table.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>A constant table is generated by <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.CompileShader(System.IntPtr,System.Int32,SharpDX.Direct3D9.Macro[],System.IntPtr,System.String,System.String,System.Int32,SharpDX.Direct3D.Blob@,SharpDX.Direct3D.Blob@,SharpDX.Direct3D9.ConstantTable@)\"/></strong> and embedded in the shader body.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXGetShaderConstantTableEx']/*\"/>\t\n            <msdn-id>bb943959</msdn-id>\t\n            <unmanaged>HRESULT D3DXGetShaderConstantTableEx([In] const void* pFunction,[In] unsigned int Flags,[In] ID3DXConstantTable** ppConstantTable)</unmanaged>\t\n            <unmanaged-short>D3DXGetShaderConstantTableEx</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.GetVertexShaderProfile(SharpDX.Direct3D9.Device)\">\n            <summary>\t\n            <p>Returns the name of the highest high-level shader language (HLSL) profile supported by a given device.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\"><dd>  <p>Pointer to the device. See <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong>.</p> </dd></param>\t\n            <returns><p>The HLSL profile name.</p><p>If the device does not support vertex shaders then the function returns <strong><c>null</c></strong>.</p></returns>\t\n            <remarks>\t\n            <p>A shader profile specifies the assembly shader version to use and the capabilities available to the HLSL compiler when compiling a shader.  The following table lists the vertex shader profiles that are supported.</p><table> <tr><th>Shader Profile</th><th>Description</th></tr> <tr><td>vs_1_1</td><td>Compile to vs_1_1 version.</td></tr> <tr><td>vs_2_0</td><td>Compile to vs_2_0 version.</td></tr> <tr><td>vs_2_a</td><td>Same as the vs_2_0 profile, with the following additional capabilities available for the compiler to target: <ul> <li>Number of Temporary Registers (r#) is greater than or equal to 13.</li> <li>Dynamic flow control instruction.</li> <li>Predication.</li> </ul> </td></tr> <tr><td>vs_3_0</td><td>Compile to vs_3_0 version.</td></tr> </table><p>?</p><p>For more information about the differences between shader versions, see Vertex Shader Differences.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXGetVertexShaderProfile']/*\"/>\t\n            <msdn-id>bb172877</msdn-id>\t\n            <unmanaged>const char* D3DXGetVertexShaderProfile([In] IDirect3DDevice9* pDevice)</unmanaged>\t\n            <unmanaged-short>D3DXGetVertexShaderProfile</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.PreprocessShaderFromResourceW(System.IntPtr,System.String,SharpDX.Direct3D9.Macro[],System.IntPtr,SharpDX.Direct3D.Blob@,SharpDX.Direct3D.Blob@)\">\n            <summary>\t\n            <p>Preprocesses a shader resource without performing compilation. This resolves all #defines and #includes, providing a self-contained shader for subsequent compilation. </p>\t\n            </summary>\t\n            <param name=\"hSrcModule\"><dd>  <p>Handle to the module that holds the shader resource. If this value is <strong><c>null</c></strong>, the current module will be used.</p> </dd></param>\t\n            <param name=\"srcResourceRef\"><dd>  <p>String that represents the name of the resource in the module.</p> </dd></param>\t\n            <param name=\"definesRef\"><dd>  <p>An optional <strong><c>null</c></strong> terminated array of <strong><see cref=\"T:SharpDX.Direct3D9.Macro\"/></strong> structures. This value may be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"includeRef\"><dd>  <p>Optional interface reference, <strong><see cref=\"T:SharpDX.Direct3D9.Include\"/></strong>, to use for handling #include directives. If this value is <strong><c>null</c></strong>, #includes will either be honored when compiling from a file or will cause an error when compiled from a resource or memory.</p> </dd></param>\t\n            <param name=\"shaderTextOut\"><dd>  <p>Returns a buffer containing a single large string that represents the resulting formatted token stream.</p> </dd></param>\t\n            <param name=\"errorMsgsOut\"><dd>  <p>Returns a buffer containing a listing of errors and warnings that were encountered during the compile.  These are the same messages the debugger displays when running in debug mode.  This value may be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA, E_OUTOFMEMORY.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXPreprocessShaderFromResourceW']/*\"/>\t\n            <msdn-id>bb205400</msdn-id>\t\n            <unmanaged>HRESULT D3DXPreprocessShaderFromResourceW([In] HINSTANCE hSrcModule,[In] const wchar_t* pSrcResource,[In, Buffer, Optional] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] ID3DXBuffer** ppShaderText,[In] ID3DXBuffer** ppErrorMsgs)</unmanaged>\t\n            <unmanaged-short>D3DXPreprocessShaderFromResourceW</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.CompileShaderFromResourceW(System.IntPtr,System.String,SharpDX.Direct3D9.Macro[],System.IntPtr,System.String,System.String,System.Int32,SharpDX.Direct3D.Blob@,SharpDX.Direct3D.Blob@,SharpDX.Direct3D9.ConstantTable@)\">\n            <summary>\t\n            <p>Compile a shader file.</p>\t\n            </summary>\t\n            <param name=\"hSrcModule\"><dd>  <p>Handle to a module containing the effect description. If this parameter is <strong><c>null</c></strong>, the current module will be used.</p> </dd></param>\t\n            <param name=\"srcResourceRef\"><dd>  <p>Pointer to a string that specifies the resource name.</p> </dd></param>\t\n            <param name=\"definesRef\"><dd>  <p>An optional <strong><c>null</c></strong> terminated array of <strong><see cref=\"T:SharpDX.Direct3D9.Macro\"/></strong> structures. This value may be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"includeRef\"><dd>  <p>Optional interface reference, <strong><see cref=\"T:SharpDX.Direct3D9.Include\"/></strong>, to use for handling #include directives. If this value is <strong><c>null</c></strong>, #includes will either be honored when compiling from a file, or will error when compiled from a resource or memory.</p> </dd></param>\t\n            <param name=\"functionNameRef\"><dd>  <p>Pointer to the shader entry point function where execution begins.</p> </dd></param>\t\n            <param name=\"profileRef\"><dd>  <p>Pointer to a shader profile which determines the shader instruction set. See <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.GetVertexShaderProfile(SharpDX.Direct3D9.Device)\"/></strong> or <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.GetPixelShaderProfile(SharpDX.Direct3D9.Device)\"/></strong> for a list of the profiles available.</p> </dd></param>\t\n            <param name=\"flags\"><dd>  <p>Compile options identified by various flags. The Direct3D 10 HLSL compiler is now the default. See <see cref=\"T:SharpDX.Direct3D9.ShaderFlags\"/> Flags for details.</p> </dd></param>\t\n            <param name=\"shaderOut\"><dd>  <p>Returns a buffer containing the created shader.  This buffer contains the compiled shader code, as well as any embedded debug and symbol table information.  </p> </dd></param>\t\n            <param name=\"errorMsgsOut\"><dd>  <p>Returns a buffer containing a listing of errors and warnings that were encountered during the compile.  These are the same messages the debugger displays when running in debug mode. This value may be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"constantTableOut\"><dd>  <p>Returns an <strong><see cref=\"T:SharpDX.Direct3D9.ConstantTable\"/></strong> interface, which can be used to access shader constants. This value can be <strong><c>null</c></strong>. If you compile your application as large address aware (that is, you use the /LARGEADDRESSAWARE linker option to handle addresses larger than 2 GB), you cannot use this parameter and must set it to <strong><c>null</c></strong>. Instead, you must use the <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.GetShaderConstantTableEx(System.IntPtr,System.Int32,SharpDX.Direct3D9.ConstantTable@)\"/></strong> function to retrieve the shader-constant table that is embedded inside the shader. In this <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.GetShaderConstantTableEx(System.IntPtr,System.Int32,SharpDX.Direct3D9.ConstantTable@)\"/></strong> call, you must pass the <strong>D3DXCONSTTABLE_LARGEADDRESSAWARE</strong> flag to the <em>Flags</em> parameter to specify to access up to 4 GB of virtual address space.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA, E_OUTOFMEMORY.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCompileShaderFromResourceW']/*\"/>\t\n            <msdn-id>bb172733</msdn-id>\t\n            <unmanaged>HRESULT D3DXCompileShaderFromResourceW([In] HINSTANCE hSrcModule,[In] const wchar_t* pSrcResource,[In, Buffer, Optional] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] const char* pFunctionName,[In] const char* pProfile,[In] unsigned int Flags,[In] ID3DXBuffer** ppShader,[In] ID3DXBuffer** ppErrorMsgs,[In] ID3DXConstantTable** ppConstantTable)</unmanaged>\t\n            <unmanaged-short>D3DXCompileShaderFromResourceW</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.DisassembleShader(System.IntPtr,SharpDX.Bool,System.String,SharpDX.Direct3D.Blob@)\">\n            <summary>\t\n            <p>Disassemble a shader.</p>\t\n            </summary>\t\n            <param name=\"shaderRef\"><dd>  <p>Pointer to a memory buffer that contains the shader data.</p> </dd></param>\t\n            <param name=\"enableColorCode\"><dd>  <p>Enable color code to make it easier to read the disassembly.</p> </dd></param>\t\n            <param name=\"commentsRef\"><dd>  <p>An optional <c>null</c>-terminated comment string. This value may be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"disassemblyOut\"><dd>  <p>Returns a buffer containing the disassembled shader. See <strong><see cref=\"T:SharpDX.Direct3D.Blob\"/></strong>.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA, E_OUTOFMEMORY.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXDisassembleShader']/*\"/>\t\n            <msdn-id>bb172820</msdn-id>\t\n            <unmanaged>HRESULT D3DXDisassembleShader([In] const void* pShader,[In] BOOL EnableColorCode,[In] const char* pComments,[In] ID3DXBuffer** ppDisassembly)</unmanaged>\t\n            <unmanaged-short>D3DXDisassembleShader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.PreprocessShaderFromFileW(System.String,SharpDX.Direct3D9.Macro[],System.IntPtr,SharpDX.Direct3D.Blob@,SharpDX.Direct3D.Blob@)\">\n            <summary>\t\n            <p>Preprocesses a shader file without performing compilation. This resolves all #defines and #includes, providing a self-contained shader for subsequent compilation.</p>\t\n            </summary>\t\n            <param name=\"srcFileRef\"><dd>  <p>Pointer to a string that specifies the filename of the shader.</p> </dd></param>\t\n            <param name=\"definesRef\"><dd>  <p>An optional <strong><c>null</c></strong> terminated array of <strong><see cref=\"T:SharpDX.Direct3D9.Macro\"/></strong> structures. This value may be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"includeRef\"><dd>  <p>Optional interface reference, <strong><see cref=\"T:SharpDX.Direct3D9.Include\"/></strong>, to use for handling #include directives. If this value is <strong><c>null</c></strong>, #includes will either be honored when compiling from a file or will cause an error when compiled from a resource or memory.</p> </dd></param>\t\n            <param name=\"shaderTextOut\"><dd>  <p>Returns a buffer containing a single large string that represents the resulting formatted token stream.</p> </dd></param>\t\n            <param name=\"errorMsgsOut\"><dd>  <p>Returns a buffer containing a listing of errors and warnings that were encountered during the compile.  These are the same messages the debugger displays when running in debug mode.  This value may be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA, E_OUTOFMEMORY.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXPreprocessShaderFromFileW']/*\"/>\t\n            <msdn-id>bb205399</msdn-id>\t\n            <unmanaged>HRESULT D3DXPreprocessShaderFromFileW([In] const wchar_t* pSrcFile,[In, Buffer, Optional] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] ID3DXBuffer** ppShaderText,[In] ID3DXBuffer** ppErrorMsgs)</unmanaged>\t\n            <unmanaged-short>D3DXPreprocessShaderFromFileW</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.GetShaderSize(System.IntPtr)\">\n            <summary>\t\n            <p>Returns the size of the shader byte code, in bytes.</p>\t\n            </summary>\t\n            <param name=\"functionRef\"><dd>  <p>Pointer to the function DWORD stream.</p> </dd></param>\t\n            <returns><p>Returns the size of the shader byte code, in bytes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXGetShaderSize']/*\"/>\t\n            <msdn-id>bb172875</msdn-id>\t\n            <unmanaged>unsigned int D3DXGetShaderSize([In] const void* pFunction)</unmanaged>\t\n            <unmanaged-short>D3DXGetShaderSize</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.GetShaderVersion(System.IntPtr)\">\n            <summary>\t\n            <p>Returns the shader version of the compiled shader.</p>\t\n            </summary>\t\n            <param name=\"functionRef\"><dd>  <p>Pointer to the function DWORD stream.</p> </dd></param>\t\n            <returns><p>Returns the shader version of the given shader, or zero if the shader  function is <strong><c>null</c></strong>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXGetShaderVersion']/*\"/>\t\n            <msdn-id>bb172876</msdn-id>\t\n            <unmanaged>unsigned int D3DXGetShaderVersion([In] const void* pFunction)</unmanaged>\t\n            <unmanaged-short>D3DXGetShaderVersion</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.CreateCylinder(SharpDX.Direct3D9.Device,System.Single,System.Single,System.Single,System.Int32,System.Int32,SharpDX.Direct3D9.Mesh@,SharpDX.Direct3D.Blob@)\">\n            <summary>\t\n            <p>Uses a left-handed coordinate system to create a mesh containing a cylinder.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface, representing the device associated with the created cylinder mesh.</p> </dd></param>\t\n            <param name=\"radius1\"><dd>  <p>Radius at the negative Z end. Value should be greater than or equal to 0.0f.</p> </dd></param>\t\n            <param name=\"radius2\"><dd>  <p>Radius at the positive Z end. Value should be greater than or equal to 0.0f.</p> </dd></param>\t\n            <param name=\"length\"><dd>  <p>Length of the cylinder along the z-axis.</p> </dd></param>\t\n            <param name=\"slices\"><dd>  <p>Number of slices about the main axis.</p> </dd></param>\t\n            <param name=\"stacks\"><dd>  <p>Number of stacks along the main axis.</p> </dd></param>\t\n            <param name=\"meshOut\"><dd>  <p>Address of a reference to the output shape, an <strong><see cref=\"T:SharpDX.Direct3D9.Mesh\"/></strong> interface.</p> </dd></param>\t\n            <param name=\"adjacencyOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D.Blob\"/></strong> interface. When the method returns, this parameter is filled with an array of three  DWORDs per face that specify the three neighbors for each face in the mesh. <strong><c>null</c></strong> can be specified.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>The created cylinder is centered at the origin, and its axis is aligned with the z-axis.</p><p>This function creates a mesh with the <see cref=\"F:SharpDX.Direct3D9.MeshFlags.Managed\"/> creation option and <see cref=\"F:SharpDX.Direct3D9.VertexFormat.Position\"/> | <see cref=\"F:SharpDX.Direct3D9.VertexFormat.Normal\"/> flexible vertex format (FVF).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCreateCylinder']/*\"/>\t\n            <msdn-id>bb172762</msdn-id>\t\n            <unmanaged>HRESULT D3DXCreateCylinder([In] IDirect3DDevice9* pDevice,[In] float Radius1,[In] float Radius2,[In] float Length,[In] unsigned int Slices,[In] unsigned int Stacks,[In] ID3DXMesh** ppMesh,[In] ID3DXBuffer** ppAdjacency)</unmanaged>\t\n            <unmanaged-short>D3DXCreateCylinder</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.CreateTorus(SharpDX.Direct3D9.Device,System.Single,System.Single,System.Int32,System.Int32,SharpDX.Direct3D9.Mesh@,SharpDX.Direct3D.Blob@)\">\n            <summary>\t\n            <p>Uses a left-handed coordinate system to create a mesh containing a torus.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface, representing the device associated with the created torus mesh.</p> </dd></param>\t\n            <param name=\"innerRadius\"><dd>  <p>Inner-radius of the torus. Value should be greater than or equal to 0.0f.</p> </dd></param>\t\n            <param name=\"outerRadius\"><dd>  <p>Outer-radius of the torus. Value should be greater than or equal to 0.0f.</p> </dd></param>\t\n            <param name=\"sides\"><dd>  <p>Number of sides in a cross-section. Value must be greater than or equal to 3.</p> </dd></param>\t\n            <param name=\"rings\"><dd>  <p>Number of rings making up the torus. Value must be greater than or equal to 3.</p> </dd></param>\t\n            <param name=\"meshOut\"><dd>  <p>Address of a reference to the output shape, an <strong><see cref=\"T:SharpDX.Direct3D9.Mesh\"/></strong> interface.</p> </dd></param>\t\n            <param name=\"adjacencyOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D.Blob\"/></strong> interface. When the method returns, this parameter is filled with an array of three  DWORDs per face that specify the three neighbors for each face in the mesh. <strong><c>null</c></strong> can be specified.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>The created torus is centered at the origin, and its axis is aligned with the z-axis. The inner radius of the torus is the radius of the cross-section (the minor radius), and the outer radius of the torus is the radius of the central hole. </p><p>This function returns a mesh that can be used later for drawing or manipulation by the application.</p><p>This function creates a mesh with the <see cref=\"F:SharpDX.Direct3D9.MeshFlags.Managed\"/> creation option and <see cref=\"F:SharpDX.Direct3D9.VertexFormat.Position\"/> | <see cref=\"F:SharpDX.Direct3D9.VertexFormat.Normal\"/> flexible vertex format (FVF).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCreateTorus']/*\"/>\t\n            <msdn-id>bb172809</msdn-id>\t\n            <unmanaged>HRESULT D3DXCreateTorus([In] IDirect3DDevice9* pDevice,[In] float InnerRadius,[In] float OuterRadius,[In] unsigned int Sides,[In] unsigned int Rings,[In] ID3DXMesh** ppMesh,[In] ID3DXBuffer** ppAdjacency)</unmanaged>\t\n            <unmanaged-short>D3DXCreateTorus</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.CreateSphere(SharpDX.Direct3D9.Device,System.Single,System.Int32,System.Int32,SharpDX.Direct3D9.Mesh@,SharpDX.Direct3D.Blob@)\">\n            <summary>\t\n            <p>Uses a left-handed coordinate system to create a mesh containing a sphere.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface, representing the device associated with the created sphere mesh.</p> </dd></param>\t\n            <param name=\"radius\"><dd>  <p>Radius of the sphere. This value should be greater than or equal to 0.0f.</p> </dd></param>\t\n            <param name=\"slices\"><dd>  <p>Number of slices about the main axis.</p> </dd></param>\t\n            <param name=\"stacks\"><dd>  <p>Number of stacks along the main axis.</p> </dd></param>\t\n            <param name=\"meshOut\"><dd>  <p>Address of a reference to the output shape, an <strong><see cref=\"T:SharpDX.Direct3D9.Mesh\"/></strong> interface.</p> </dd></param>\t\n            <param name=\"adjacencyOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D.Blob\"/></strong> interface. When the method returns, this parameter is filled with an array of three  DWORDs per face that specify the three neighbors for each face in the mesh. <strong><c>null</c></strong> can be specified.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>The created sphere is centered at the origin, and its axis is aligned with the z-axis.</p><p>This function creates a mesh with the <see cref=\"F:SharpDX.Direct3D9.MeshFlags.Managed\"/> creation option and <see cref=\"F:SharpDX.Direct3D9.VertexFormat.Position\"/> | <see cref=\"F:SharpDX.Direct3D9.VertexFormat.Normal\"/> flexible vertex format (FVF).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCreateSphere']/*\"/>\t\n            <msdn-id>bb172795</msdn-id>\t\n            <unmanaged>HRESULT D3DXCreateSphere([In] IDirect3DDevice9* pDevice,[In] float Radius,[In] unsigned int Slices,[In] unsigned int Stacks,[In] ID3DXMesh** ppMesh,[In] ID3DXBuffer** ppAdjacency)</unmanaged>\t\n            <unmanaged-short>D3DXCreateSphere</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.CreateTeapot(SharpDX.Direct3D9.Device,SharpDX.Direct3D9.Mesh@,SharpDX.Direct3D.Blob@)\">\n            <summary>\t\n            <p>Uses a left-handed coordinate system to create a mesh containing a teapot.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface, representing the device associated with the created teapot mesh.</p> </dd></param>\t\n            <param name=\"meshOut\"><dd>  <p>Address of a reference to the output shape, an <strong><see cref=\"T:SharpDX.Direct3D9.Mesh\"/></strong> interface.</p> </dd></param>\t\n            <param name=\"adjacencyOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D.Blob\"/></strong> interface. When the method returns, this parameter is filled with an array of three  DWORDs per face that specify the three neighbors for each face in the mesh. <strong><c>null</c></strong> can be specified.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>This function creates a mesh with the <see cref=\"F:SharpDX.Direct3D9.MeshFlags.Managed\"/> creation option and <see cref=\"F:SharpDX.Direct3D9.VertexFormat.Position\"/> | <see cref=\"F:SharpDX.Direct3D9.VertexFormat.Normal\"/> flexible vertex format (FVF).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCreateTeapot']/*\"/>\t\n            <msdn-id>bb172798</msdn-id>\t\n            <unmanaged>HRESULT D3DXCreateTeapot([In] IDirect3DDevice9* pDevice,[In] ID3DXMesh** ppMesh,[In] ID3DXBuffer** ppAdjacency)</unmanaged>\t\n            <unmanaged-short>D3DXCreateTeapot</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.CreateBox(SharpDX.Direct3D9.Device,System.Single,System.Single,System.Single,SharpDX.Direct3D9.Mesh@,SharpDX.Direct3D.Blob@)\">\n            <summary>\t\n            <p>Uses a left-handed coordinate system to create a mesh containing an axis-aligned box.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface, representing the device associated with the created box mesh.</p> </dd></param>\t\n            <param name=\"width\"><dd>  <p>Width of the box, along the x-axis.</p> </dd></param>\t\n            <param name=\"height\"><dd>  <p>Height of the box, along the y-axis.</p> </dd></param>\t\n            <param name=\"depth\"><dd>  <p>Depth of the box, along the z-axis.</p> </dd></param>\t\n            <param name=\"meshOut\"><dd>  <p>Address of a reference to the output shape, an <strong><see cref=\"T:SharpDX.Direct3D9.Mesh\"/></strong> interface.</p> </dd></param>\t\n            <param name=\"adjacencyOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D.Blob\"/></strong> interface. When the method returns, this parameter is filled with an array of three DWORDs per face that specify the three neighbors for each face in the mesh. <strong><c>null</c></strong> can be specified.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>The created box is centered at the origin.</p><p>This function creates a mesh with the <see cref=\"F:SharpDX.Direct3D9.MeshFlags.Managed\"/> creation option and <see cref=\"F:SharpDX.Direct3D9.VertexFormat.Position\"/> | <see cref=\"F:SharpDX.Direct3D9.VertexFormat.Normal\"/> flexible vertex format (FVF).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCreateBox']/*\"/>\t\n            <msdn-id>bb172752</msdn-id>\t\n            <unmanaged>HRESULT D3DXCreateBox([In] IDirect3DDevice9* pDevice,[In] float Width,[In] float Height,[In] float Depth,[In] ID3DXMesh** ppMesh,[In] ID3DXBuffer** ppAdjacency)</unmanaged>\t\n            <unmanaged-short>D3DXCreateBox</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.CreatePolygon(SharpDX.Direct3D9.Device,System.Single,System.Int32,SharpDX.Direct3D9.Mesh@,SharpDX.Direct3D.Blob@)\">\n            <summary>\t\n            <p>Uses a left-handed coordinate system to create a mesh containing an \t\n            n-sided polygon.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface, representing the device associated with the created polygon mesh.</p> </dd></param>\t\n            <param name=\"length\"><dd>  <p>Length of each side.</p> </dd></param>\t\n            <param name=\"sides\"><dd>  <p>Number of sides for the polygon. Value must be greater than or equal to 3.</p> </dd></param>\t\n            <param name=\"meshOut\"><dd>  <p>Address of a reference to the output shape, an <strong><see cref=\"T:SharpDX.Direct3D9.Mesh\"/></strong> interface.</p> </dd></param>\t\n            <param name=\"adjacencyOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D.Blob\"/></strong> interface. When the method returns, this parameter is filled with an array of three  DWORDs per face that specify the three neighbors for each face in the mesh. <strong><c>null</c></strong> can be specified.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>The created polygon is centered at the origin.</p><p>This function creates a mesh with the <see cref=\"F:SharpDX.Direct3D9.MeshFlags.Managed\"/> creation option and <see cref=\"F:SharpDX.Direct3D9.VertexFormat.Position\"/> | <see cref=\"F:SharpDX.Direct3D9.VertexFormat.Normal\"/> flexible vertex format (FVF).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCreatePolygon']/*\"/>\t\n            <msdn-id>bb172785</msdn-id>\t\n            <unmanaged>HRESULT D3DXCreatePolygon([In] IDirect3DDevice9* pDevice,[In] float Length,[In] unsigned int Sides,[In] ID3DXMesh** ppMesh,[In] ID3DXBuffer** ppAdjacency)</unmanaged>\t\n            <unmanaged-short>D3DXCreatePolygon</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.CreateTextW(SharpDX.Direct3D9.Device,System.IntPtr,System.String,System.Single,System.Single,SharpDX.Direct3D9.Mesh@,SharpDX.Direct3D.Blob@,System.IntPtr)\">\n            <summary>\t\n            <p>Creates a mesh containing the specified text, using the font associated with the device context.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\"><dd>  <p>Pointer to the device that created the mesh.</p> </dd></param>\t\n            <param name=\"hDC\"><dd>  <p>Device context, containing the font for output. The font selected by the device context must be a TrueType font.</p> </dd></param>\t\n            <param name=\"textRef\"><dd>  <p>Pointer to a string that specifies the text to generate. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the string data type resolves to LPCSTR. See Remarks.</p> </dd></param>\t\n            <param name=\"deviation\"><dd>  <p>Maximum chordal deviation from TrueType font outlines.</p> </dd></param>\t\n            <param name=\"extrusion\"><dd>  <p>Amount to extrude text in the negative z-direction.</p> </dd></param>\t\n            <param name=\"meshOut\"><dd>  <p>Pointer to the returned mesh.</p> </dd></param>\t\n            <param name=\"adjacencyOut\"><dd>  <p>Pointer to a buffer containing adjacency information. May be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"pGlyphMetrics\"><dd>  <p>Pointer to an array of <strong>GLYPHMETRICSFLOAT</strong> structures that contain the glyph metric data. Each element contains information about the position and orientation of the corresponding glyph in the string. The number of elements in the array should be equal to the number of characters in the string. Note that the origin in each structure is not relative to the entire string, but rather is relative to that character cell. To compute the entire bounding box, add the increment for each glyph while traversing the string. If you are not concerned with the glyph sizes, set this parameter to <strong><c>null</c></strong>.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>The compiler setting also determines the function version. If Unicode is defined, the function call resolves to <see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateTextW(SharpDX.Direct3D9.Device,System.IntPtr,System.String,System.Single,System.Single,SharpDX.Direct3D9.Mesh@,SharpDX.Direct3D.Blob@,System.IntPtr)\"/>. Otherwise, the function call resolves to D3DXCreateTextA because ANSI strings are being used.</p><p>This function creates a mesh with the <see cref=\"F:SharpDX.Direct3D9.MeshFlags.Managed\"/> creation option and <see cref=\"F:SharpDX.Direct3D9.VertexFormat.Position\"/> | <see cref=\"F:SharpDX.Direct3D9.VertexFormat.Normal\"/> flexible vertex format (FVF).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCreateTextW']/*\"/>\t\n            <msdn-id>bb172799</msdn-id>\t\n            <unmanaged>HRESULT D3DXCreateTextW([In] IDirect3DDevice9* pDevice,[In] HDC hDC,[In] const wchar_t* pText,[In] float Deviation,[In] float Extrusion,[In] ID3DXMesh** ppMesh,[In] ID3DXBuffer** ppAdjacency,[In] LPGLYPHMETRICSFLOAT pGlyphMetrics)</unmanaged>\t\n            <unmanaged-short>D3DXCreateTextW</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.GetImageInfoFromFileInMemory(System.IntPtr,System.Int32)\">\n            <summary>\t\n            <p>Retrieves information about a given image file in memory.</p>\t\n            </summary>\t\n            <param name=\"srcDataRef\"><dd>  <p>VOID reference to the source file in memory.</p> </dd></param>\t\n            <param name=\"srcDataSize\"><dd>  <p>Size of file in memory, in bytes. .</p> </dd></param>\t\n            <returns><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.ImageInformation\"/></strong> structure to be filled with the description of the data in the source file.</p> </dd></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXGetImageInfoFromFileInMemory']/*\"/>\t\n            <msdn-id>bb172868</msdn-id>\t\n            <unmanaged>HRESULT D3DXGetImageInfoFromFileInMemory([In] const void* pSrcData,[In] unsigned int SrcDataSize,[Out] D3DXIMAGE_INFO* pSrcInfo)</unmanaged>\t\n            <unmanaged-short>D3DXGetImageInfoFromFileInMemory</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.FillVolumeTextureTX(SharpDX.Direct3D9.VolumeTexture,SharpDX.Direct3D9.TextureShader)\">\n            <summary>\t\n            <p>Uses a compiled high-level shader language (HLSL) function to fill each texel of each mipmap level of a texture.</p>\t\n            </summary>\t\n            <param name=\"volumeTextureRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.VolumeTexture\"/></strong> object, representing the texture to be filled.</p> </dd></param>\t\n            <param name=\"textureShaderRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.TextureShader\"/></strong> texture shader object.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following:D3DERR_NOTAVAILABLE, <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>The texture target must be an HLSL function that takes contains the following semantics:</p><ul> <li>One input parameter must use a POSITION semantic.</li> <li>One input parameter must use a PSIZE semantic.</li> <li>The function must return a parameter that uses the COLOR semantic.</li> </ul><p>The input parameters can be in any order. For an example, see <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.FillTextureTX(SharpDX.Direct3D9.Texture,SharpDX.Direct3D9.TextureShader)\"/></strong> </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXFillVolumeTextureTX']/*\"/>\t\n            <msdn-id>bb172836</msdn-id>\t\n            <unmanaged>HRESULT D3DXFillVolumeTextureTX([In] IDirect3DVolumeTexture9* pVolumeTexture,[In] ID3DXTextureShader* pTextureShader)</unmanaged>\t\n            <unmanaged-short>D3DXFillVolumeTextureTX</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.CreateCubeTexture(SharpDX.Direct3D9.Device,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,SharpDX.Direct3D9.CubeTexture@)\">\n            <summary>\t\n            <p>Creates an empty cube texture, adjusting the calling parameters as needed.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface, representing the device to be associated with the texture.</p> </dd></param>\t\n            <param name=\"size\"><dd>  <p>Width and height of the cube texture, in pixels. For example, if the cube texture is an 8-pixel by 8-pixel cube, the value for this parameter should be 8.</p> </dd></param>\t\n            <param name=\"mipLevels\"><dd>  <p>Number of mip levels requested. If this value is zero or D3DX_DEFAULT, a complete mipmap chain is created.</p> </dd></param>\t\n            <param name=\"usage\"><dd>  <p>0, <see cref=\"F:SharpDX.Direct3D9.Usage.RenderTarget\"/>, or <see cref=\"F:SharpDX.Direct3D9.Usage.Dynamic\"/>. Setting this flag to <see cref=\"F:SharpDX.Direct3D9.Usage.RenderTarget\"/> indicates that the surface is to be used as a render target. The resource can then be passed to the <em>pNewRenderTarget</em> parameter of the <strong>SetRenderTarget</strong> method. If <see cref=\"F:SharpDX.Direct3D9.Usage.RenderTarget\"/> is specified, the application should check that the device supports this operation by calling <strong>CheckDeviceFormat</strong>. For more information about using dynamic textures, see Using Dynamic Textures.</p> </dd></param>\t\n            <param name=\"format\"><dd>  <p>Member of the <see cref=\"T:SharpDX.Direct3D9.Format\"/> enumerated type, describing the requested pixel format for the cube texture. The returned cube texture might have a different format from that specified by  <em>Format</em>. Applications should check the format of the returned cube texture.</p> </dd></param>\t\n            <param name=\"pool\"><dd>  <p>Member of the <strong><see cref=\"T:SharpDX.Direct3D9.Pool\"/></strong> enumerated type, describing the memory class into which the cube texture should be placed.</p> </dd></param>\t\n            <param name=\"cubeTextureOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D9.CubeTexture\"/></strong> interface, representing the created cube texture object.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.NotAvailable\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.OutOfVideoMemory\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>Cube textures differ from other surfaces in that they are collections of surfaces. </p><p>Internally, <see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateCubeTexture(SharpDX.Direct3D9.Device,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,SharpDX.Direct3D9.CubeTexture@)\"/> uses <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.CheckCubeTextureRequirements(SharpDX.Direct3D9.Device,System.Int32@,System.Int32@,System.Int32,SharpDX.Direct3D9.Format@,SharpDX.Direct3D9.Pool)\"/></strong> to adjust the calling parameters. Therefore, calls to <see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateCubeTexture(SharpDX.Direct3D9.Device,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,SharpDX.Direct3D9.CubeTexture@)\"/> will often succeed where calls to <strong>CreateCubeTexture</strong> would fail.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCreateCubeTexture']/*\"/>\t\n            <msdn-id>bb172755</msdn-id>\t\n            <unmanaged>HRESULT D3DXCreateCubeTexture([In] IDirect3DDevice9* pDevice,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] IDirect3DCubeTexture9** ppCubeTexture)</unmanaged>\t\n            <unmanaged-short>D3DXCreateCubeTexture</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.CreateVolumeTextureFromFileInMemoryEx(SharpDX.Direct3D9.Device,System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,System.Int32,System.Int32,SharpDX.ColorBGRA,System.IntPtr,SharpDX.Direct3D9.PaletteEntry[],SharpDX.Direct3D9.VolumeTexture@)\">\n            <summary>\t\n            <p>Creates a volume texture from a file. This is a more advanced function than <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateVolumeTextureFromFileInMemory(SharpDX.Direct3D9.Device,System.IntPtr,System.Int32,SharpDX.Direct3D9.VolumeTexture@)\"/></strong>.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\">No documentation.</param>\t\n            <param name=\"srcDataRef\">No documentation.</param>\t\n            <param name=\"srcDataSize\">No documentation.</param>\t\n            <param name=\"width\">No documentation.</param>\t\n            <param name=\"height\">No documentation.</param>\t\n            <param name=\"depth\">No documentation.</param>\t\n            <param name=\"mipLevels\">No documentation.</param>\t\n            <param name=\"usage\">No documentation.</param>\t\n            <param name=\"format\">No documentation.</param>\t\n            <param name=\"pool\">No documentation.</param>\t\n            <param name=\"filter\">No documentation.</param>\t\n            <param name=\"mipFilter\">No documentation.</param>\t\n            <param name=\"colorKey\">No documentation.</param>\t\n            <param name=\"srcInfoRef\">No documentation.</param>\t\n            <param name=\"paletteRef\">No documentation.</param>\t\n            <param name=\"volumeTextureOut\">No documentation.</param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.NotAvailable\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.OutOfVideoMemory\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>This function supports the following file formats: .bmp, .dds, .dib, .hdr, .jpg, .pfm, .png, .ppm, and .tga. See <strong><see cref=\"T:SharpDX.Direct3D9.ImageFileFormat\"/></strong>.</p><p>When skipping mipmap levels while loading a .dds file, use the D3DX_SKIP_DDS_MIP_LEVELS macro to generate the <em>MipFilter</em> value. This macro takes the number of levels to skip and the filter type and returns the filter value, which would then be passed into the <em>MipFilter</em> parameter.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCreateVolumeTextureFromFileInMemoryEx']/*\"/>\t\n            <msdn-id>bb172814</msdn-id>\t\n            <unmanaged>HRESULT D3DXCreateVolumeTextureFromFileInMemoryEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] unsigned int Width,[In] unsigned int Height,[In] unsigned int Depth,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[In] void* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DVolumeTexture9** ppVolumeTexture)</unmanaged>\t\n            <unmanaged-short>D3DXCreateVolumeTextureFromFileInMemoryEx</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.FillTextureTX(SharpDX.Direct3D9.Texture,SharpDX.Direct3D9.TextureShader)\">\n            <summary>\t\n            <p>Uses a compiled high-level shader language (HLSL) function to fill each texel of each mipmap level of a texture.</p>\t\n            </summary>\t\n            <param name=\"textureRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Texture\"/></strong> object, representing the texture to be filled.</p> </dd></param>\t\n            <param name=\"textureShaderRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.TextureShader\"/></strong> texture shader object.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.NotAvailable\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>The texture target must be an HLSL function that takes contains the following semantics:</p><ul> <li>One input parameter must use a POSITION semantic.</li> <li>One input parameter must use a PSIZE semantic.</li> <li>The function must return a parameter that uses the COLOR semantic.</li> </ul><p>The following is an example of such an HLSL function:</p><pre><code> float4 TextureGradientFill( float2 vTexCoord : POSITION,  float2 vTexelSize : PSIZE) : COLOR  { float r,g, b, xSq,ySq, a; xSq = 2.f*vTexCoord.x-1.f; xSq *= xSq; ySq = 2.f*vTexCoord.y-1.f; ySq *= ySq; a = sqrt(xSq+ySq); if (a &gt; 1.0f) { a = 1.0f-(a-1.0f); } else if (a &lt; 0.2f) { a = 0.2f; } r = 1-vTexCoord.x; g = 1-vTexCoord.y; b = vTexCoord.x; return float4(r, g, b, a); };\t\n            </code></pre><p>Note that the input parameters can be in any order, but both input semantics must be represented.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXFillTextureTX']/*\"/>\t\n            <msdn-id>bb172834</msdn-id>\t\n            <unmanaged>HRESULT D3DXFillTextureTX([In] IDirect3DTexture9* pTexture,[In] ID3DXTextureShader* pTextureShader)</unmanaged>\t\n            <unmanaged-short>D3DXFillTextureTX</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.CheckCubeTextureRequirements(SharpDX.Direct3D9.Device,System.Int32@,System.Int32@,System.Int32,SharpDX.Direct3D9.Format@,SharpDX.Direct3D9.Pool)\">\n            <summary>\t\n            <p>Checks cube-texture-creation parameters.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface, representing the device to be associated with the cube texture.</p> </dd></param>\t\n            <param name=\"sizeRef\"><dd>  <p>Pointer to the requested width and height in pixels, or <strong><c>null</c></strong>. Returns the corrected size.</p> </dd></param>\t\n            <param name=\"numMipLevelsRef\"><dd>  <p>Pointer to the number of requested mipmap levels, or <strong><c>null</c></strong>. Returns the corrected number of mipmap levels.</p> </dd></param>\t\n            <param name=\"usage\"><dd>  <p>0 or <see cref=\"F:SharpDX.Direct3D9.Usage.RenderTarget\"/>. Setting this flag to <see cref=\"F:SharpDX.Direct3D9.Usage.RenderTarget\"/> indicates that the surface is to be used as a render target. The resource can then be passed to the pNewRenderTarget parameter of the <strong>SetRenderTarget</strong> method. If <see cref=\"F:SharpDX.Direct3D9.Usage.RenderTarget\"/> is specified, the application should check that the device supports this operation by calling <strong>CheckDeviceFormat</strong>.</p> </dd></param>\t\n            <param name=\"formatRef\"><dd>  <p>Pointer to a member of the <see cref=\"T:SharpDX.Direct3D9.Format\"/> enumerated type. Specifies the desired pixel format, or <strong><c>null</c></strong>. Returns the corrected format.</p> </dd></param>\t\n            <param name=\"pool\"><dd>  <p>Member of the <strong><see cref=\"T:SharpDX.Direct3D9.Pool\"/></strong> enumerated type, describing the memory class into which the texture should be placed.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.NotAvailable\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>If parameters to this function are invalid, this function returns corrected parameters.</p><p>Cube textures differ from other surfaces in that they are collections of surfaces. To call <strong>SetRenderTarget</strong> with a cube texture, you must select an individual face using <strong>GetCubeMapSurface</strong> and pass the resulting surface to <strong>SetRenderTarget</strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCheckCubeTextureRequirements']/*\"/>\t\n            <msdn-id>bb172715</msdn-id>\t\n            <unmanaged>HRESULT D3DXCheckCubeTextureRequirements([In] IDirect3DDevice9* pDevice,[InOut] unsigned int* pSize,[InOut] unsigned int* pNumMipLevels,[In] unsigned int Usage,[InOut] D3DFORMAT* pFormat,[In] D3DPOOL Pool)</unmanaged>\t\n            <unmanaged-short>D3DXCheckCubeTextureRequirements</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.CreateTextureFromFileW(SharpDX.Direct3D9.Device,System.String,SharpDX.Direct3D9.Texture@)\">\n            <summary>\t\n            <p>Creates a texture from a file.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface, representing the device to be associated with the texture.</p> </dd></param>\t\n            <param name=\"srcFileRef\"><dd>  <p>Pointer to a string that specifies the filename. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the string data type resolves to LPCSTR. See Remarks.</p> </dd></param>\t\n            <param name=\"textureOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D9.Texture\"/></strong> interface, representing the created texture object.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.NotAvailable\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.OutOfVideoMemory\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>The compiler setting also determines the function version. If Unicode is defined, the function call resolves to <see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateTextureFromFileW(SharpDX.Direct3D9.Device,System.String,SharpDX.Direct3D9.Texture@)\"/>. Otherwise, the function call resolves to D3DXCreateTextureFromFileA because ANSI strings are being used.</p><p>This function supports the following file formats: .bmp, .dds, .dib, .hdr, .jpg, .pfm, .png, .ppm, and .tga. See <strong><see cref=\"T:SharpDX.Direct3D9.ImageFileFormat\"/></strong>.</p><p>The function is equivalent to <see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateTextureFromFileExW(SharpDX.Direct3D9.Device,System.String,System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,System.Int32,System.Int32,SharpDX.ColorBGRA,System.IntPtr,SharpDX.Direct3D9.PaletteEntry[],SharpDX.Direct3D9.Texture@)\"/>(pDevice, pSrcFile, D3DX_DEFAULT, D3DX_DEFAULT, D3DX_DEFAULT, 0, <see cref=\"F:SharpDX.Direct3D9.Format.Unknown\"/>, <see cref=\"F:SharpDX.Direct3D9.Pool.Managed\"/>, D3DX_DEFAULT, D3DX_DEFAULT, 0, <strong><c>null</c></strong>, <strong><c>null</c></strong>, ppTexture).</p><p>Mipmapped textures automatically have each level filled with the loaded texture.</p><p>When loading images into mipmapped textures, some devices are unable to go to a 1x1 image and this function will fail. If this happens, the images need to be loaded manually.</p><p>Note that a resource created with this function will be placed in the memory class denoted by <see cref=\"F:SharpDX.Direct3D9.Pool.Managed\"/>.</p><p>Filtering is automatically applied to a texture created using this method. The filtering is equivalent to <see cref=\"F:SharpDX.Direct3D9.Filter.Triangle\"/> | <see cref=\"F:SharpDX.Direct3D9.Filter.Dither\"/> in <see cref=\"T:SharpDX.Direct3D9.Filter\"/>.</p><p>For the best performance when using <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateTextureFromFileW(SharpDX.Direct3D9.Device,System.String,SharpDX.Direct3D9.Texture@)\"/></strong>:</p><ol> <li>Doing image scaling and format conversion at load time can be slow. Store images in the format and resolution they will be used. If the target hardware requires power of two dimensions, create and store images using power of two dimensions.</li> <li>Consider using DirectDraw surface (DDS) files. Because DDS files can be used to represent any Direct3D 9 texture format, they are very easy for D3DX to read. Also, they can store mipmaps, so any mipmap-generation algorithms can be used to author the images.</li> </ol>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCreateTextureFromFileW']/*\"/>\t\n            <msdn-id>bb172801</msdn-id>\t\n            <unmanaged>HRESULT D3DXCreateTextureFromFileW([In] IDirect3DDevice9* pDevice,[In] const wchar_t* pSrcFile,[In] IDirect3DTexture9** ppTexture)</unmanaged>\t\n            <unmanaged-short>D3DXCreateTextureFromFileW</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.LoadSurfaceFromFileW(SharpDX.Direct3D9.Surface,SharpDX.Direct3D9.PaletteEntry[],System.IntPtr,System.String,System.IntPtr,SharpDX.Direct3D9.Filter,System.Int32,System.IntPtr)\">\n            <summary>\t\n            <p>Loads a surface from a file.</p>\t\n            </summary>\t\n            <param name=\"destSurfaceRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Surface\"/></strong> interface. Specifies the destination surface, which receives the image.</p> </dd></param>\t\n            <param name=\"destPaletteRef\"><dd>  <p>Pointer to a  <strong><see cref=\"T:SharpDX.Direct3D9.PaletteEntry\"/></strong> structure, the destination palette of 256 colors or <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"destRectRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Rectangle\"/></strong> structure. Specifies the destination rectangle. Set this parameter to <strong><c>null</c></strong> to specify the entire surface.</p> </dd></param>\t\n            <param name=\"srcFileRef\"><dd>  <p>Pointer to a string that specifies the filename. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the string data type resolves to LPCSTR. See Remarks.</p> </dd></param>\t\n            <param name=\"srcRectRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Rectangle\"/></strong> structure. Specifies the source rectangle. Set this parameter to <strong><c>null</c></strong> to specify the entire image.</p> </dd></param>\t\n            <param name=\"filter\"><dd>  <p>Combination of one or more <see cref=\"T:SharpDX.Direct3D9.Filter\"/> controlling how the image is filtered. Specifying D3DX_DEFAULT for this parameter is the equivalent of specifying <see cref=\"F:SharpDX.Direct3D9.Filter.Triangle\"/> | <see cref=\"F:SharpDX.Direct3D9.Filter.Dither\"/>.</p> </dd></param>\t\n            <param name=\"colorKey\"><dd>  <p> <strong><see cref=\"T:SharpDX.ColorBGRA\"/></strong> value to replace with transparent black, or 0 to disable the colorkey. This is always a 32-bit ARGB color, independent of the source image format. Alpha is significant and should usually be set to FF for opaque color keys Thus, for opaque black, the value would be equal to 0xFF000000.</p> </dd></param>\t\n            <param name=\"srcInfoRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.ImageInformation\"/></strong> structure to be filled with a description of the data in the source image file, or <strong><c>null</c></strong>.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following values: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA.</p></returns>\t\n            <remarks>\t\n            <p>The compiler setting also determines the function version. If Unicode is defined, the function call resolves to <see cref=\"M:SharpDX.Direct3D9.D3DX9.LoadSurfaceFromFileW(SharpDX.Direct3D9.Surface,SharpDX.Direct3D9.PaletteEntry[],System.IntPtr,System.String,System.IntPtr,SharpDX.Direct3D9.Filter,System.Int32,System.IntPtr)\"/>. Otherwise, the function call resolves to D3DXLoadSurfaceFromFileA because ANSI strings are being used.</p><p>This function handles conversion to and from compressed texture formats and supports the following file formats: .bmp, .dds, .dib, .hdr, .jpg, .pfm, .png, .ppm, and .tga. See <strong><see cref=\"T:SharpDX.Direct3D9.ImageFileFormat\"/></strong>.</p><p>Writing to a non-level-zero surface will not cause the dirty rectangle to be updated. If <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.LoadSurfaceFromFileW(SharpDX.Direct3D9.Surface,SharpDX.Direct3D9.PaletteEntry[],System.IntPtr,System.String,System.IntPtr,SharpDX.Direct3D9.Filter,System.Int32,System.IntPtr)\"/></strong> is called and the surface was not already dirty (this is unlikely under normal usage scenarios), the application needs to explicitly call <strong>AddDirtyRect</strong> on the surface.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXLoadSurfaceFromFileW']/*\"/>\t\n            <msdn-id>bb172900</msdn-id>\t\n            <unmanaged>HRESULT D3DXLoadSurfaceFromFileW([In] IDirect3DSurface9* pDestSurface,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestRect,[In] const wchar_t* pSrcFile,[In] const void* pSrcRect,[In] D3DX_FILTER Filter,[In] int ColorKey,[In] void* pSrcInfo)</unmanaged>\t\n            <unmanaged-short>D3DXLoadSurfaceFromFileW</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.CreateVolumeTexture(SharpDX.Direct3D9.Device,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,SharpDX.Direct3D9.VolumeTexture@)\">\n            <summary>\t\n            <p>Creates an empty volume texture, adjusting the calling parameters as needed.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface, representing the device to be associated with the volume texture.</p> </dd></param>\t\n            <param name=\"width\"><dd>  <p>Width in pixels. This value must be nonzero. The maximum dimension that a driver supports (for width, height, and depth) can be found in MaxVolumeExtent in <strong><see cref=\"T:SharpDX.Direct3D9.Capabilities\"/></strong>.</p> </dd></param>\t\n            <param name=\"height\"><dd>  <p>Height in pixels. This value must be nonzero. The maximum dimension that a driver supports (for width, height, and depth) can be found in MaxVolumeExtent in <strong><see cref=\"T:SharpDX.Direct3D9.Capabilities\"/></strong>.</p> </dd></param>\t\n            <param name=\"depth\"><dd>  <p>Depth in pixels. This value must be nonzero. The maximum dimension that a driver supports (for width, height, and depth) can be found in MaxVolumeExtent in <strong><see cref=\"T:SharpDX.Direct3D9.Capabilities\"/></strong>.</p> </dd></param>\t\n            <param name=\"mipLevels\"><dd>  <p>Number of mip levels requested. If this value is zero or D3DX_DEFAULT, a complete mipmap chain is created.</p> </dd></param>\t\n            <param name=\"usage\"><dd>  <p>0 or <see cref=\"F:SharpDX.Direct3D9.Usage.Dynamic\"/>. For more information about using dynamic textures, see Using Dynamic Textures.</p> </dd></param>\t\n            <param name=\"format\"><dd>  <p>Member of the <see cref=\"T:SharpDX.Direct3D9.Format\"/> enumerated type, describing the requested pixel format for the volume texture. The returned volume texture might have a different format from that specified by Format. Applications should check the format of the returned volume texture.</p> </dd></param>\t\n            <param name=\"pool\"><dd>  <p>Member of the <strong><see cref=\"T:SharpDX.Direct3D9.Pool\"/></strong> enumerated type, describing the memory class into which the volume texture should be placed.</p> </dd></param>\t\n            <param name=\"volumeTextureOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D9.VolumeTexture\"/></strong> interface, representing the created volume texture object.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.NotAvailable\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.OutOfVideoMemory\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, E_OUTOFMEMORY .</p></returns>\t\n            <remarks>\t\n            <p>Internally, <see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateVolumeTexture(SharpDX.Direct3D9.Device,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,SharpDX.Direct3D9.VolumeTexture@)\"/> uses <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.CheckVolumeTextureRequirements(SharpDX.Direct3D9.Device,System.Int32@,System.Int32@,System.Int32@,System.Int32@,System.Int32,SharpDX.Direct3D9.Format@,SharpDX.Direct3D9.Pool)\"/></strong> to adjust the calling parameters. Therefore, calls to <see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateVolumeTexture(SharpDX.Direct3D9.Device,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,SharpDX.Direct3D9.VolumeTexture@)\"/> will often succeed where calls to <strong>CreateVolumeTexture</strong> would fail.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCreateVolumeTexture']/*\"/>\t\n            <msdn-id>bb172810</msdn-id>\t\n            <unmanaged>HRESULT D3DXCreateVolumeTexture([In] IDirect3DDevice9* pDevice,[In] unsigned int Width,[In] unsigned int Height,[In] unsigned int Depth,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] IDirect3DVolumeTexture9** ppVolumeTexture)</unmanaged>\t\n            <unmanaged-short>D3DXCreateVolumeTexture</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.LoadVolumeFromFileW(SharpDX.Direct3D9.Volume,SharpDX.Direct3D9.PaletteEntry[],System.IntPtr,System.String,System.IntPtr,SharpDX.Direct3D9.Filter,System.Int32,System.IntPtr)\">\n            <summary>\t\n            <p>Loads a volume from a file.</p>\t\n            </summary>\t\n            <param name=\"destVolumeRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Volume\"/></strong> interface. Specifies the destination volume.</p> </dd></param>\t\n            <param name=\"destPaletteRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.PaletteEntry\"/></strong> structure, the destination palette of 256 colors or <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"destBoxRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.Box\"/></strong> structure. Specifies the destination box. Set this parameter to <strong><c>null</c></strong> to specify the entire volume.</p> </dd></param>\t\n            <param name=\"srcFileRef\"><dd>  <p>Pointer to a string that specifies the filename. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the string data type resolves to LPCSTR. See Remarks.</p> </dd></param>\t\n            <param name=\"srcBoxRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.Box\"/></strong> structure. Specifies the source box. Set this parameter to <strong><c>null</c></strong> to specify the entire volume.</p> </dd></param>\t\n            <param name=\"filter\"><dd>  <p>Combination of one or more <see cref=\"T:SharpDX.Direct3D9.Filter\"/>, controlling how the image is filtered. Specifying D3DX_DEFAULT for this parameter is the equivalent of specifying <see cref=\"F:SharpDX.Direct3D9.Filter.Triangle\"/> | <see cref=\"F:SharpDX.Direct3D9.Filter.Dither\"/>.</p> </dd></param>\t\n            <param name=\"colorKey\"><dd>  <p> <strong><see cref=\"T:SharpDX.ColorBGRA\"/></strong> value to replace with transparent black, or 0 to disable the colorkey. This is always a 32-bit ARGB color, independent of the source image format. Alpha is significant and should usually be set to FF for opaque color keys. Thus, for opaque black, the value would be equal to 0xFF000000.</p> </dd></param>\t\n            <param name=\"srcInfoRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.ImageInformation\"/></strong> structure to be filled with a description of the data in the source image file, or <strong><c>null</c></strong>.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following values: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA.</p></returns>\t\n            <remarks>\t\n            <p>The compiler setting also determines  the function version. If Unicode is defined, the function call resolves to <see cref=\"M:SharpDX.Direct3D9.D3DX9.LoadVolumeFromFileW(SharpDX.Direct3D9.Volume,SharpDX.Direct3D9.PaletteEntry[],System.IntPtr,System.String,System.IntPtr,SharpDX.Direct3D9.Filter,System.Int32,System.IntPtr)\"/>. Otherwise, the function call resolves to D3DXLoadVolumeFromFileA because ANSI strings are being used.</p><p>This function handles conversion to and from compressed texture formats and supports the following file formats: .bmp, .dds, .dib, .hdr, .jpg, .pfm, .png, .ppm, and .tga. See <strong><see cref=\"T:SharpDX.Direct3D9.ImageFileFormat\"/></strong>.</p><p>Writing to a non-level-zero surface of the volume texture will not cause the dirty rectangle to be updated. If <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.LoadVolumeFromFileW(SharpDX.Direct3D9.Volume,SharpDX.Direct3D9.PaletteEntry[],System.IntPtr,System.String,System.IntPtr,SharpDX.Direct3D9.Filter,System.Int32,System.IntPtr)\"/></strong> is called and the texture was not already dirty (this is unlikely under normal usage scenarios), the application needs to explicitly call <strong><see cref=\"M:SharpDX.Direct3D9.VolumeTexture.AddDirtyBox(System.IntPtr)\"/></strong> on the volume texture.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXLoadVolumeFromFileW']/*\"/>\t\n            <msdn-id>bb172905</msdn-id>\t\n            <unmanaged>HRESULT D3DXLoadVolumeFromFileW([In] IDirect3DVolume9* pDestVolume,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestBox,[In] const wchar_t* pSrcFile,[In] const void* pSrcBox,[In] D3DX_FILTER Filter,[In] int ColorKey,[In] void* pSrcInfo)</unmanaged>\t\n            <unmanaged-short>D3DXLoadVolumeFromFileW</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.LoadSurfaceFromResourceW(SharpDX.Direct3D9.Surface,SharpDX.Direct3D9.PaletteEntry[],System.IntPtr,System.IntPtr,System.String,System.IntPtr,SharpDX.Direct3D9.Filter,System.Int32,System.IntPtr)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"destSurfaceRef\">No documentation.</param>\t\n            <param name=\"destPaletteRef\">No documentation.</param>\t\n            <param name=\"destRectRef\">No documentation.</param>\t\n            <param name=\"hSrcModule\">No documentation.</param>\t\n            <param name=\"srcResourceRef\">No documentation.</param>\t\n            <param name=\"srcRectRef\">No documentation.</param>\t\n            <param name=\"filter\">No documentation.</param>\t\n            <param name=\"colorKey\">No documentation.</param>\t\n            <param name=\"srcInfoRef\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXLoadSurfaceFromResourceW']/*\"/>\t\n            <unmanaged>HRESULT D3DXLoadSurfaceFromResourceW([In] IDirect3DSurface9* pDestSurface,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestRect,[In] HINSTANCE hSrcModule,[In] const wchar_t* pSrcResource,[In] const void* pSrcRect,[In] D3DX_FILTER Filter,[In] int ColorKey,[In] void* pSrcInfo)</unmanaged>\t\n            <unmanaged-short>D3DXLoadSurfaceFromResourceW</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.GetImageInfoFromFileW(System.String)\">\n            <summary>\t\n            <p>Retrieves information about a given image file.</p>\t\n            </summary>\t\n            <param name=\"srcFileRef\"><dd>  <p>File name of image to retrieve information about. If UNICODE or _UNICODE are defined, this parameter type is LPCWSTR, otherwise, the type is LPCSTR.</p> </dd></param>\t\n            <returns><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.ImageInformation\"/></strong> structure to be filled with the description of the data in the source file.</p> </dd></returns>\t\n            <remarks>\t\n            <p>This function supports both Unicode and ANSI strings.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXGetImageInfoFromFileW']/*\"/>\t\n            <msdn-id>bb172867</msdn-id>\t\n            <unmanaged>HRESULT D3DXGetImageInfoFromFileW([In] const wchar_t* pSrcFile,[Out] D3DXIMAGE_INFO* pSrcInfo)</unmanaged>\t\n            <unmanaged-short>D3DXGetImageInfoFromFileW</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.ComputeNormalMap(SharpDX.Direct3D9.Texture,SharpDX.Direct3D9.Texture,SharpDX.Direct3D9.PaletteEntry[],System.Int32,System.Int32,System.Single)\">\n            <summary>\t\n            <p>Converts a height map into a normal map. The (x,y,z) components of each normal are mapped to the (r,g,b) channels of the output texture.</p>\t\n            </summary>\t\n            <param name=\"textureRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Texture\"/></strong> interface, representing the destination texture.</p> </dd></param>\t\n            <param name=\"srcTextureRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Texture\"/></strong> interface, representing the source height-map texture.</p> </dd></param>\t\n            <param name=\"srcPaletteRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.PaletteEntry\"/></strong> type that contains the source palette of 256 colors or <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"flags\"><dd>  <p>One or more <see cref=\"T:SharpDX.Direct3D9.NormalMapFlags\"/> flags that control generation of normal maps.</p> </dd></param>\t\n            <param name=\"channel\"><dd>  <p>One <see cref=\"T:SharpDX.Direct3D9.Channel\"/> flag specifying the source of height information.</p> </dd></param>\t\n            <param name=\"amplitude\"><dd>  <p>Constant value multiplier that increases (or decreases) the values in the normal map. Higher values usually make bumps more visible, lower values usually make bumps less visible.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be the following value: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>This method computes the normal by using the central difference with a kernel size of 3x3. The central differencing denominator used is 2.0. RGB channels in the destination contain biased (x,y,z) components of the normal.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXComputeNormalMap']/*\"/>\t\n            <msdn-id>bb172741</msdn-id>\t\n            <unmanaged>HRESULT D3DXComputeNormalMap([In] IDirect3DTexture9* pTexture,[In] IDirect3DTexture9* pSrcTexture,[Out, Buffer] const PALETTEENTRY* pSrcPalette,[In] unsigned int Flags,[In] unsigned int Channel,[In] float Amplitude)</unmanaged>\t\n            <unmanaged-short>D3DXComputeNormalMap</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.CheckVolumeTextureRequirements(SharpDX.Direct3D9.Device,System.Int32@,System.Int32@,System.Int32@,System.Int32@,System.Int32,SharpDX.Direct3D9.Format@,SharpDX.Direct3D9.Pool)\">\n            <summary>\t\n            <p>Checks volume-texture-creation parameters.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface, representing the device to be associated with the volume texture.</p> </dd></param>\t\n            <param name=\"widthRef\"><dd>  <p>Pointer to the requested width in pixels, or <strong><c>null</c></strong>. Returns the corrected size.</p> </dd></param>\t\n            <param name=\"heightRef\"><dd>  <p>Pointer to the requested height in pixels, or <strong><c>null</c></strong>. Returns the corrected size.</p> </dd></param>\t\n            <param name=\"depthRef\"><dd>  <p>Pointer to the requested depth in pixels, or <strong><c>null</c></strong>. Returns the corrected size.</p> </dd></param>\t\n            <param name=\"numMipLevelsRef\"><dd>  <p>Pointer to the number of requested mipmap levels, or <strong><c>null</c></strong>. Returns the corrected number of mipmap levels.</p> </dd></param>\t\n            <param name=\"usage\"><dd>  <p>Currently not used, set to 0.</p> </dd></param>\t\n            <param name=\"formatRef\"><dd>  <p>Pointer to a member of the <see cref=\"T:SharpDX.Direct3D9.Format\"/> enumerated type. Specifies the desired pixel format, or <strong><c>null</c></strong>. Returns the corrected format.</p> </dd></param>\t\n            <param name=\"pool\"><dd>  <p>Member of the <strong><see cref=\"T:SharpDX.Direct3D9.Pool\"/></strong> enumerated type, describing the memory class into which the volume texture should be placed.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.NotAvailable\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>If parameters to this function are invalid, this function returns corrected parameters.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCheckVolumeTextureRequirements']/*\"/>\t\n            <msdn-id>bb172718</msdn-id>\t\n            <unmanaged>HRESULT D3DXCheckVolumeTextureRequirements([In] IDirect3DDevice9* pDevice,[InOut] unsigned int* pWidth,[InOut] unsigned int* pHeight,[InOut] unsigned int* pDepth,[InOut] unsigned int* pNumMipLevels,[In] unsigned int Usage,[InOut] D3DFORMAT* pFormat,[In] D3DPOOL Pool)</unmanaged>\t\n            <unmanaged-short>D3DXCheckVolumeTextureRequirements</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.LoadSurfaceFromFileInMemory(SharpDX.Direct3D9.Surface,SharpDX.Direct3D9.PaletteEntry[],System.IntPtr,System.IntPtr,System.Int32,System.IntPtr,SharpDX.Direct3D9.Filter,System.Int32,System.IntPtr)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"destSurfaceRef\">No documentation.</param>\t\n            <param name=\"destPaletteRef\">No documentation.</param>\t\n            <param name=\"destRectRef\">No documentation.</param>\t\n            <param name=\"srcDataRef\">No documentation.</param>\t\n            <param name=\"srcDataSize\">No documentation.</param>\t\n            <param name=\"srcRectRef\">No documentation.</param>\t\n            <param name=\"filter\">No documentation.</param>\t\n            <param name=\"colorKey\">No documentation.</param>\t\n            <param name=\"srcInfoRef\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXLoadSurfaceFromFileInMemory']/*\"/>\t\n            <unmanaged>HRESULT D3DXLoadSurfaceFromFileInMemory([In] IDirect3DSurface9* pDestSurface,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestRect,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] const void* pSrcRect,[In] D3DX_FILTER Filter,[In] int ColorKey,[In] void* pSrcInfo)</unmanaged>\t\n            <unmanaged-short>D3DXLoadSurfaceFromFileInMemory</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.CreateTextureFromFileInMemory(SharpDX.Direct3D9.Device,System.IntPtr,System.Int32,SharpDX.Direct3D9.Texture@)\">\n            <summary>\t\n            <p>Creates a texture from a file in memory.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface representing the device to be associated with the texture.</p> </dd></param>\t\n            <param name=\"srcDataRef\"><dd>  <p>Pointer to the file in memory from which to create the texture.</p> </dd></param>\t\n            <param name=\"srcDataSize\"><dd>  <p>Size in bytes of the file in memory.</p> </dd></param>\t\n            <param name=\"textureOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D9.Texture\"/></strong> interface representing the created texture object.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.NotAvailable\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.OutOfVideoMemory\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>The function is equivalent to <see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateTextureFromFileInMemoryEx(SharpDX.Direct3D9.Device,System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,System.Int32,System.Int32,SharpDX.ColorBGRA,System.IntPtr,SharpDX.Direct3D9.PaletteEntry[],SharpDX.Direct3D9.Texture@)\"/>(pDevice, pSrcData, SrcDataSize, D3DX_DEFAULT, D3DX_DEFAULT, D3DX_DEFAULT, 0, <see cref=\"F:SharpDX.Direct3D9.Format.Unknown\"/>, <see cref=\"F:SharpDX.Direct3D9.Pool.Managed\"/>, D3DX_DEFAULT, D3DX_DEFAULT, 0, <strong><c>null</c></strong>, <strong><c>null</c></strong>, ppTexture).</p><p>This function supports the following file formats: .bmp, .dds, .dib, .hdr, .jpg, .pfm, .png, .ppm, and .tga. See <strong><see cref=\"T:SharpDX.Direct3D9.ImageFileFormat\"/></strong>.</p><p>Note that a resource created with this function when called from a <see cref=\"T:SharpDX.Direct3D9.Device\"/> object will be placed in the memory class denoted by <see cref=\"F:SharpDX.Direct3D9.Pool.Managed\"/>.  When this method is called from a <see cref=\"T:SharpDX.Direct3D9.DeviceEx\"/> object the resource will be placed in the memory class denoted by <see cref=\"F:SharpDX.Direct3D9.Pool.Default\"/>.</p><p>Filtering is automatically applied to a texture created using this method. The filtering is equivalent to <see cref=\"F:SharpDX.Direct3D9.Filter.Triangle\"/> | <see cref=\"F:SharpDX.Direct3D9.Filter.Dither\"/> in <see cref=\"T:SharpDX.Direct3D9.Filter\"/>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCreateTextureFromFileInMemory']/*\"/>\t\n            <msdn-id>bb172803</msdn-id>\t\n            <unmanaged>HRESULT D3DXCreateTextureFromFileInMemory([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] IDirect3DTexture9** ppTexture)</unmanaged>\t\n            <unmanaged-short>D3DXCreateTextureFromFileInMemory</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.CreateVolumeTextureFromFileInMemory(SharpDX.Direct3D9.Device,System.IntPtr,System.Int32,SharpDX.Direct3D9.VolumeTexture@)\">\n            <summary>\t\n            <p>Creates a volume texture from a file in memory.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface, representing the device to be associated with the volume texture.</p> </dd></param>\t\n            <param name=\"srcDataRef\"><dd>  <p>Pointer to the file in memory from which to create the volume texture.</p> </dd></param>\t\n            <param name=\"srcDataSize\"><dd>  <p>Size of the file in memory, in bytes.</p> </dd></param>\t\n            <param name=\"volumeTextureOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D9.VolumeTexture\"/></strong> interface, representing the created texture object.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.NotAvailable\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.OutOfVideoMemory\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>This function supports the following file formats: .bmp, .dds, .dib, .hdr, .jpg, .pfm, .png, .ppm, and .tga. See <strong><see cref=\"T:SharpDX.Direct3D9.ImageFileFormat\"/></strong>.</p><p>The function is equivalent to <see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateVolumeTextureFromFileInMemoryEx(SharpDX.Direct3D9.Device,System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,System.Int32,System.Int32,SharpDX.ColorBGRA,System.IntPtr,SharpDX.Direct3D9.PaletteEntry[],SharpDX.Direct3D9.VolumeTexture@)\"/>(pDevice, pSrcFile, SrcData, D3DX_DEFAULT, D3DX_DEFAULT, D3DX_DEFAULT, D3DX_DEFAULT, 0, <see cref=\"F:SharpDX.Direct3D9.Format.Unknown\"/>, <see cref=\"F:SharpDX.Direct3D9.Pool.Managed\"/>, D3DX_DEFAULT, D3DX_DEFAULT, 0, <strong><c>null</c></strong>, <strong><c>null</c></strong>, ppVolumeTexture).</p><p>Note that a resource created with this function when called from a <see cref=\"T:SharpDX.Direct3D9.Device\"/> object will be placed in the memory class denoted by <see cref=\"F:SharpDX.Direct3D9.Pool.Managed\"/>.  When this method is called from a <see cref=\"T:SharpDX.Direct3D9.DeviceEx\"/> object the resource will be placed in the memory class denoted by <see cref=\"F:SharpDX.Direct3D9.Pool.Default\"/>.</p><p>Filtering is automatically applied to a texture created using this method. The filtering is equivalent to <see cref=\"F:SharpDX.Direct3D9.Filter.Triangle\"/> | <see cref=\"F:SharpDX.Direct3D9.Filter.Dither\"/> in <see cref=\"T:SharpDX.Direct3D9.Filter\"/>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCreateVolumeTextureFromFileInMemory']/*\"/>\t\n            <msdn-id>bb172813</msdn-id>\t\n            <unmanaged>HRESULT D3DXCreateVolumeTextureFromFileInMemory([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] IDirect3DVolumeTexture9** ppVolumeTexture)</unmanaged>\t\n            <unmanaged-short>D3DXCreateVolumeTextureFromFileInMemory</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.LoadVolumeFromVolume(SharpDX.Direct3D9.Volume,SharpDX.Direct3D9.PaletteEntry[],System.IntPtr,SharpDX.Direct3D9.Volume,SharpDX.Direct3D9.PaletteEntry[],System.IntPtr,SharpDX.Direct3D9.Filter,System.Int32)\">\n            <summary>\t\n            <p>Loads a volume from another volume.</p>\t\n            </summary>\t\n            <param name=\"destVolumeRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Volume\"/></strong> interface. Specifies the destination volume, which receives the image.</p> </dd></param>\t\n            <param name=\"destPaletteRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.PaletteEntry\"/></strong> structure, the destination palette of 256 colors or <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"destBoxRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.Box\"/></strong> structure. Specifies the destination box. Set this parameter to <strong><c>null</c></strong> to specify the entire volume.</p> </dd></param>\t\n            <param name=\"srcVolumeRef\"><dd>  <p>A Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Volume\"/></strong> interface. Specifies the source volume.</p> </dd></param>\t\n            <param name=\"srcPaletteRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.PaletteEntry\"/></strong> structure, the source palette of 256 colors or <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"srcBoxRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.Box\"/></strong> structure. Specifies the source box. Set this parameter to <strong><c>null</c></strong> to specify the entire volume.</p> </dd></param>\t\n            <param name=\"filter\"><dd>  <p>A combination of one or more <see cref=\"T:SharpDX.Direct3D9.Filter\"/>, controlling how the image is filtered. Specifying D3DX_DEFAULT for this parameter is the equivalent of specifying <see cref=\"F:SharpDX.Direct3D9.Filter.Triangle\"/> | <see cref=\"F:SharpDX.Direct3D9.Filter.Dither\"/>.</p> </dd></param>\t\n            <param name=\"colorKey\"><dd>  <p> <strong><see cref=\"T:SharpDX.ColorBGRA\"/></strong> value to replace with transparent black, or 0 to disable the colorkey. This is always a 32-bit ARGB color, independent of the source image format. Alpha is significant and should usually be set to FF for opaque color keys. Thus, for opaque black, the value would be equal to 0xFF000000.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA.</p></returns>\t\n            <remarks>\t\n            <p>Writing to a non-level-zero surface of the volume texture will not cause the dirty rectangle to be updated. If <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.LoadVolumeFromVolume(SharpDX.Direct3D9.Volume,SharpDX.Direct3D9.PaletteEntry[],System.IntPtr,SharpDX.Direct3D9.Volume,SharpDX.Direct3D9.PaletteEntry[],System.IntPtr,SharpDX.Direct3D9.Filter,System.Int32)\"/></strong> is called and the surface was not already dirty (this is unlikely under normal usage scenarios), the application needs to explicitly call <strong><see cref=\"M:SharpDX.Direct3D9.VolumeTexture.AddDirtyBox(System.IntPtr)\"/></strong> on the surface.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXLoadVolumeFromVolume']/*\"/>\t\n            <msdn-id>bb172909</msdn-id>\t\n            <unmanaged>HRESULT D3DXLoadVolumeFromVolume([In] IDirect3DVolume9* pDestVolume,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestBox,[In] IDirect3DVolume9* pSrcVolume,[In, Buffer] const PALETTEENTRY* pSrcPalette,[In] const void* pSrcBox,[In] D3DX_FILTER Filter,[In] int ColorKey)</unmanaged>\t\n            <unmanaged-short>D3DXLoadVolumeFromVolume</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.SaveTextureToFileW(System.String,SharpDX.Direct3D9.ImageFileFormat,SharpDX.Direct3D9.BaseTexture,SharpDX.Direct3D9.PaletteEntry[])\">\n            <summary>\t\n            <p>Saves a texture to a file.</p>\t\n            </summary>\t\n            <param name=\"destFileRef\"><dd>  <p>Pointer to a string that specifies the file name of the destination image. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the string data type resolves to LPCSTR. See Remarks.</p> </dd></param>\t\n            <param name=\"destFormat\"><dd>  <p> <strong><see cref=\"T:SharpDX.Direct3D9.ImageFileFormat\"/></strong> specifying the file format to use when saving. This function supports saving to all <strong><see cref=\"T:SharpDX.Direct3D9.ImageFileFormat\"/></strong> formats except Portable Pixmap (.ppm) and Targa/Truevision Graphics Adapter (.tga).</p> </dd></param>\t\n            <param name=\"srcTextureRef\"><dd>  <p>Pointer to <strong><see cref=\"T:SharpDX.Direct3D9.BaseTexture\"/></strong> interface, containing the texture to be saved.</p> </dd></param>\t\n            <param name=\"srcPaletteRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.PaletteEntry\"/></strong> structure containing a palette of 256 colors. This parameter can be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/></p></returns>\t\n            <remarks>\t\n            <p>The compiler setting also determines  the function version. If Unicode is defined, the function call resolves to <see cref=\"M:SharpDX.Direct3D9.D3DX9.SaveTextureToFileW(System.String,SharpDX.Direct3D9.ImageFileFormat,SharpDX.Direct3D9.BaseTexture,SharpDX.Direct3D9.PaletteEntry[])\"/>. Otherwise, the function call resolves to D3DXSaveTextureToFileA because ANSI strings are being used.</p><p>This function handles conversion to and from compressed texture formats.</p><p>If the volume is nondynamic (because of a usage parameter set to 0 at the creation) and located in video memory (the memory pool set to <see cref=\"F:SharpDX.Direct3D9.Pool.Default\"/>), <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.SaveTextureToFileW(System.String,SharpDX.Direct3D9.ImageFileFormat,SharpDX.Direct3D9.BaseTexture,SharpDX.Direct3D9.PaletteEntry[])\"/></strong> will fail because D3DX cannot lock nondynamic volumes located in video memory.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXSaveTextureToFileW']/*\"/>\t\n            <msdn-id>bb205433</msdn-id>\t\n            <unmanaged>HRESULT D3DXSaveTextureToFileW([In] const wchar_t* pDestFile,[In] D3DXIMAGE_FILEFORMAT DestFormat,[In] IDirect3DBaseTexture9* pSrcTexture,[In, Buffer] const PALETTEENTRY* pSrcPalette)</unmanaged>\t\n            <unmanaged-short>D3DXSaveTextureToFileW</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.CreateCubeTextureFromFileW(SharpDX.Direct3D9.Device,System.String,SharpDX.Direct3D9.CubeTexture@)\">\n            <summary>\t\n            <p>Creates a cube texture from a file.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface, representing the device to be associated with the cube texture.</p> </dd></param>\t\n            <param name=\"srcFileRef\"><dd>  <p>Pointer to a string that specifies the filename. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the string data type resolves to LPCSTR. See Remarks.</p> </dd></param>\t\n            <param name=\"cubeTextureOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D9.CubeTexture\"/></strong> interface, representing the created cube texture object.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following values: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.NotAvailable\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.OutOfVideoMemory\"/>, D3DXERR_INVALIDDATA, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>The compiler setting also determines the function version. If Unicode is defined, the function call resolves to <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateCubeTextureFromFileW(SharpDX.Direct3D9.Device,System.String,SharpDX.Direct3D9.CubeTexture@)\"/></strong>. Otherwise, the function call resolves to <strong>D3DXCreateCubeTextureFromFileA</strong> because ANSI strings are being used.</p><p>The function is equivalent to <see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateCubeTextureFromFileExW(SharpDX.Direct3D9.Device,System.String,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,System.Int32,System.Int32,SharpDX.ColorBGRA,System.IntPtr,SharpDX.Direct3D9.PaletteEntry[],SharpDX.Direct3D9.CubeTexture@)\"/>(pDevice, pSrcFile, D3DX_DEFAULT, D3DX_DEFAULT, 0, <see cref=\"F:SharpDX.Direct3D9.Format.Unknown\"/>, <see cref=\"F:SharpDX.Direct3D9.Pool.Managed\"/>, D3DX_DEFAULT, D3DX_DEFAULT, 0, <strong><c>null</c></strong>, <strong><c>null</c></strong>, ppCubeTexture).</p><p>This function supports the following file formats: .bmp, .dds, .dib, .hdr, .jpg, .pfm, .png, .ppm, and .tga. See <strong><see cref=\"T:SharpDX.Direct3D9.ImageFileFormat\"/></strong>.</p><p>Note that a resource created with this function when called from a <see cref=\"T:SharpDX.Direct3D9.Device\"/> object will be placed in the memory class denoted by <see cref=\"F:SharpDX.Direct3D9.Pool.Managed\"/>.  When this method is called from a <see cref=\"T:SharpDX.Direct3D9.DeviceEx\"/> object the resource will be placed in the memory class denoted by <see cref=\"F:SharpDX.Direct3D9.Pool.Default\"/>.</p><p>Filtering is automatically applied to a texture created using this method. The filtering is equivalent to <see cref=\"F:SharpDX.Direct3D9.Filter.Triangle\"/> | <see cref=\"F:SharpDX.Direct3D9.Filter.Dither\"/> in <see cref=\"T:SharpDX.Direct3D9.Filter\"/>.</p><p><strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateCubeTextureFromFileW(SharpDX.Direct3D9.Device,System.String,SharpDX.Direct3D9.CubeTexture@)\"/></strong> uses the DirectDraw surface (DDS) file format. The DirectX Texture Editor (Dxtex.exe) enables you to generate a cube map from other file formats and save it in the DDS file format.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCreateCubeTextureFromFileW']/*\"/>\t\n            <msdn-id>bb172756</msdn-id>\t\n            <unmanaged>HRESULT D3DXCreateCubeTextureFromFileW([In] IDirect3DDevice9* pDevice,[In] const wchar_t* pSrcFile,[In] IDirect3DCubeTexture9** ppCubeTexture)</unmanaged>\t\n            <unmanaged-short>D3DXCreateCubeTextureFromFileW</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.CreateCubeTextureFromFileInMemoryEx(SharpDX.Direct3D9.Device,System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,System.Int32,System.Int32,SharpDX.ColorBGRA,System.IntPtr,SharpDX.Direct3D9.PaletteEntry[],SharpDX.Direct3D9.CubeTexture@)\">\n            <summary>\t\n            <p>Creates a cube texture from a file in memory. This is a more advanced function than <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateCubeTextureFromFileInMemory(SharpDX.Direct3D9.Device,System.IntPtr,System.Int32,SharpDX.Direct3D9.CubeTexture@)\"/></strong>.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\">No documentation.</param>\t\n            <param name=\"srcDataRef\">No documentation.</param>\t\n            <param name=\"srcDataSize\">No documentation.</param>\t\n            <param name=\"size\">No documentation.</param>\t\n            <param name=\"mipLevels\">No documentation.</param>\t\n            <param name=\"usage\">No documentation.</param>\t\n            <param name=\"format\">No documentation.</param>\t\n            <param name=\"pool\">No documentation.</param>\t\n            <param name=\"filter\">No documentation.</param>\t\n            <param name=\"mipFilter\">No documentation.</param>\t\n            <param name=\"colorKey\">No documentation.</param>\t\n            <param name=\"srcInfoRef\">No documentation.</param>\t\n            <param name=\"paletteRef\">No documentation.</param>\t\n            <param name=\"cubeTextureOut\">No documentation.</param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.NotAvailable\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.OutOfVideoMemory\"/>, D3DXERR_INVALIDDATA, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>This function supports the following file formats: .bmp, .dds, .dib, .hdr, .jpg, .pfm, .png, .ppm, and .tga. See <strong><see cref=\"T:SharpDX.Direct3D9.ImageFileFormat\"/></strong>.</p><p>Cube textures differ from other surfaces in that they are collections of surfaces. To call <strong>SetRenderTarget</strong> with a cube texture, you must select an individual face using <strong>GetCubeMapSurface</strong> and pass the resulting surface to <strong>SetRenderTarget</strong> .</p><p>This method is designed to be used for loading image files stored as RT_RCDATA, which is an application-defined resource (raw data). Otherwise this method will fail.</p><p>For details on <strong><see cref=\"T:SharpDX.Direct3D9.PaletteEntry\"/></strong>, see the Platform SDK.  Note that as of DirectX 8.0, the peFlags member of the <strong><see cref=\"T:SharpDX.Direct3D9.PaletteEntry\"/></strong> structure does not function as documented in the Platform SDK. The peFlags  member is now the alpha channel for 8-bit palettized formats.</p><p><strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateCubeTextureFromFileInMemoryEx(SharpDX.Direct3D9.Device,System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,System.Int32,System.Int32,SharpDX.ColorBGRA,System.IntPtr,SharpDX.Direct3D9.PaletteEntry[],SharpDX.Direct3D9.CubeTexture@)\"/></strong> uses the DirectDraw surface (DDS) file format. The DirectX Texture Editor (Dxtex.exe) enables you to generate a cube map from other file formats and save it in the DDS file format</p><p>When skipping mipmap levels while loading a .dds file, use the D3DX_SKIP_DDS_MIP_LEVELS macro to generate the MipFilter value. This macro takes the number of levels to skip and the filter type and returns the filter value, which would then be passed into the MipFilter parameter.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCreateCubeTextureFromFileInMemoryEx']/*\"/>\t\n            <msdn-id>bb172759</msdn-id>\t\n            <unmanaged>HRESULT D3DXCreateCubeTextureFromFileInMemoryEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[In] void* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DCubeTexture9** ppCubeTexture)</unmanaged>\t\n            <unmanaged-short>D3DXCreateCubeTextureFromFileInMemoryEx</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.CreateTextureFromResourceExW(SharpDX.Direct3D9.Device,System.IntPtr,System.String,System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,System.Int32,System.Int32,SharpDX.ColorBGRA,SharpDX.Direct3D9.ImageInformation@,SharpDX.Direct3D9.PaletteEntry,SharpDX.Direct3D9.Texture@)\">\n            <summary>\t\n            <p>Creates a texture from a resource. This is a more advanced function than <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateTextureFromResourceW(SharpDX.Direct3D9.Device,System.IntPtr,System.String,SharpDX.Direct3D9.Texture@)\"/></strong>.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\">No documentation.</param>\t\n            <param name=\"hSrcModule\">No documentation.</param>\t\n            <param name=\"srcResourceRef\">No documentation.</param>\t\n            <param name=\"width\">No documentation.</param>\t\n            <param name=\"height\">No documentation.</param>\t\n            <param name=\"mipLevels\">No documentation.</param>\t\n            <param name=\"usage\">No documentation.</param>\t\n            <param name=\"format\">No documentation.</param>\t\n            <param name=\"pool\">No documentation.</param>\t\n            <param name=\"filter\">No documentation.</param>\t\n            <param name=\"mipFilter\">No documentation.</param>\t\n            <param name=\"colorKey\">No documentation.</param>\t\n            <param name=\"srcInfoRef\">No documentation.</param>\t\n            <param name=\"paletteRef\">No documentation.</param>\t\n            <param name=\"textureOut\">No documentation.</param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.NotAvailable\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.OutOfVideoMemory\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>The compiler setting also determines the function version. If Unicode is defined, the function call resolves to <see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateTextureFromResourceExW(SharpDX.Direct3D9.Device,System.IntPtr,System.String,System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,System.Int32,System.Int32,SharpDX.ColorBGRA,SharpDX.Direct3D9.ImageInformation@,SharpDX.Direct3D9.PaletteEntry,SharpDX.Direct3D9.Texture@)\"/>. Otherwise, the function call resolves to D3DXCreateTextureFromResourceExA because ANSI strings are being used.</p><p>The resource being loaded must be of type RT_BITMAP or RT_RCDATA. Resource type RT_RCDATA is used to load formats other than bitmaps (such as .tga, .jpg, and .dds).</p><p>This function supports the following file formats: .bmp, .dds, .dib, .hdr, .jpg, .pfm, .png, .ppm, and .tga. See <strong><see cref=\"T:SharpDX.Direct3D9.ImageFileFormat\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCreateTextureFromResourceExW']/*\"/>\t\n            <msdn-id>bb172806</msdn-id>\t\n            <unmanaged>HRESULT D3DXCreateTextureFromResourceExW([In] IDirect3DDevice9* pDevice,[In] HINSTANCE hSrcModule,[In] const wchar_t* pSrcResource,[In] unsigned int Width,[In] unsigned int Height,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[In] D3DXIMAGE_INFO* pSrcInfo,[In] PALETTEENTRY* pPalette,[In] IDirect3DTexture9** ppTexture)</unmanaged>\t\n            <unmanaged-short>D3DXCreateTextureFromResourceExW</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.FillCubeTexture(SharpDX.Direct3D9.CubeTexture,SharpDX.FunctionCallback,System.IntPtr)\">\n            <summary>\t\n            <p>Uses a user-provided function to fill each texel of each mip level of a given cube texture.</p>\t\n            </summary>\t\n            <param name=\"cubeTextureRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.CubeTexture\"/></strong> interface, representing the filled texture.</p> </dd></param>\t\n            <param name=\"functionRef\"><dd>  <p>Pointer to a user-provided evaluator function, which will be used to compute the value of each texel. The function follows the prototype of LPD3DXFILL3D.</p> </dd></param>\t\n            <param name=\"dataRef\"><dd>  <p>Pointer to an arbitrary block of user-defined data. This reference will be passed to the function provided in <em>pFunction</em>.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following values: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>Here is an example that creates a function called ColorCubeFill, which relies on <see cref=\"M:SharpDX.Direct3D9.D3DX9.FillCubeTexture(SharpDX.Direct3D9.CubeTexture,SharpDX.FunctionCallback,System.IntPtr)\"/>.</p><pre><code> // Define a function that matches the prototype of LPD3DXFILL3D\t\n            VOID WINAPI ColorCubeFill (<see cref=\"T:SharpDX.Vector4\"/>* pOut, const <see cref=\"T:SharpDX.Vector3\"/>* pTexCoord, \t\n            const <see cref=\"T:SharpDX.Vector3\"/>* pTexelSize, LPVOID pData)\t\n            { *pOut = <see cref=\"T:SharpDX.Vector4\"/>(pTexCoord-&gt;x, pTexCoord-&gt;y, pTexCoord-&gt;z, 0.0f);\t\n            } // Fill the texture using <see cref=\"M:SharpDX.Direct3D9.D3DX9.FillCubeTexture(SharpDX.Direct3D9.CubeTexture,SharpDX.FunctionCallback,System.IntPtr)\"/>\t\n            if (FAILED (hr = <see cref=\"M:SharpDX.Direct3D9.D3DX9.FillCubeTexture(SharpDX.Direct3D9.CubeTexture,SharpDX.FunctionCallback,System.IntPtr)\"/> (m_pTexture, ColorCubeFill, <c>null</c>)))\t\n            { return hr;\t\n            }\t\n            </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXFillCubeTexture']/*\"/>\t\n            <msdn-id>bb172831</msdn-id>\t\n            <unmanaged>HRESULT D3DXFillCubeTexture([In] IDirect3DCubeTexture9* pCubeTexture,[In] __function__stdcall* pFunction,[In] void* pData)</unmanaged>\t\n            <unmanaged-short>D3DXFillCubeTexture</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.FilterTexture(SharpDX.Direct3D9.BaseTexture,SharpDX.Direct3D9.PaletteEntry[],System.Int32,SharpDX.Direct3D9.Filter)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"baseTextureRef\">No documentation.</param>\t\n            <param name=\"paletteRef\">No documentation.</param>\t\n            <param name=\"srcLevel\">No documentation.</param>\t\n            <param name=\"filter\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXFilterTexture']/*\"/>\t\n            <unmanaged>HRESULT D3DXFilterTexture([In] IDirect3DBaseTexture9* pBaseTexture,[In, Buffer] const PALETTEENTRY* pPalette,[In] unsigned int SrcLevel,[In] D3DX_FILTER Filter)</unmanaged>\t\n            <unmanaged-short>D3DXFilterTexture</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.SaveTextureToFileInMemory(SharpDX.Direct3D9.ImageFileFormat,SharpDX.Direct3D9.BaseTexture,SharpDX.Direct3D9.PaletteEntry[])\">\n            <summary>\t\n            <p>Saves a texture to an image file.</p>\t\n            </summary>\t\n            <param name=\"destFormat\"><dd>  <p> <strong><see cref=\"T:SharpDX.Direct3D9.ImageFileFormat\"/></strong> specifying the file format to use when saving. This function supports saving to all <strong><see cref=\"T:SharpDX.Direct3D9.ImageFileFormat\"/></strong> formats except Portable Pixmap (.ppm) and Targa/Truevision Graphics Adapter (.tga).</p> </dd></param>\t\n            <param name=\"srcTextureRef\"><dd>  <p>Pointer to <strong><see cref=\"T:SharpDX.Direct3D9.BaseTexture\"/></strong> interface containing the image to be saved.</p> </dd></param>\t\n            <param name=\"srcPaletteRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.PaletteEntry\"/></strong> structure containing a palette of 256 colors. This parameter can be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <returns><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D.Blob\"/></strong> that will store the image.</p> </dd></returns>\t\n            <remarks>\t\n            <p>This function handles conversion to and from compressed texture formats.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXSaveTextureToFileInMemory']/*\"/>\t\n            <msdn-id>bb205434</msdn-id>\t\n            <unmanaged>HRESULT D3DXSaveTextureToFileInMemory([Out] ID3DXBuffer** ppDestBuf,[In] D3DXIMAGE_FILEFORMAT DestFormat,[In] IDirect3DBaseTexture9* pSrcTexture,[In, Buffer] const PALETTEENTRY* pSrcPalette)</unmanaged>\t\n            <unmanaged-short>D3DXSaveTextureToFileInMemory</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.CheckTextureRequirements(SharpDX.Direct3D9.Device,System.Int32@,System.Int32@,System.Int32@,System.Int32,SharpDX.Direct3D9.Format@,SharpDX.Direct3D9.Pool)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"deviceRef\">No documentation.</param>\t\n            <param name=\"widthRef\">No documentation.</param>\t\n            <param name=\"heightRef\">No documentation.</param>\t\n            <param name=\"numMipLevelsRef\">No documentation.</param>\t\n            <param name=\"usage\">No documentation.</param>\t\n            <param name=\"formatRef\">No documentation.</param>\t\n            <param name=\"pool\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCheckTextureRequirements']/*\"/>\t\n            <unmanaged>HRESULT D3DXCheckTextureRequirements([In] IDirect3DDevice9* pDevice,[InOut] unsigned int* pWidth,[InOut] unsigned int* pHeight,[InOut] unsigned int* pNumMipLevels,[In] unsigned int Usage,[InOut] D3DFORMAT* pFormat,[In] D3DPOOL Pool)</unmanaged>\t\n            <unmanaged-short>D3DXCheckTextureRequirements</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.SaveVolumeToFileW(System.String,SharpDX.Direct3D9.ImageFileFormat,SharpDX.Direct3D9.Volume,SharpDX.Direct3D9.PaletteEntry[],System.IntPtr)\">\n            <summary>\t\n            <p>Saves a volume to a file on disk.</p>\t\n            </summary>\t\n            <param name=\"destFileRef\"><dd>  <p>Pointer to a string that specifies the file name of the destination image. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the string data type resolves to LPCSTR. See Remarks.</p> </dd></param>\t\n            <param name=\"destFormat\"><dd>  <p> <strong><see cref=\"T:SharpDX.Direct3D9.ImageFileFormat\"/></strong> specifying the file format to use when saving. This function supports saving to all <strong><see cref=\"T:SharpDX.Direct3D9.ImageFileFormat\"/></strong> formats except Portable Pixmap (.ppm) and Targa/Truevision Graphics Adapter (.tga).</p> </dd></param>\t\n            <param name=\"srcVolumeRef\"><dd>  <p>Pointer to <strong><see cref=\"T:SharpDX.Direct3D9.Volume\"/></strong> interface containing the image to be saved.</p> </dd></param>\t\n            <param name=\"srcPaletteRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.PaletteEntry\"/></strong> structure containing a palette of 256 colors. This parameter can be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"srcBoxRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.Box\"/></strong> structure. Specifies the source box. Set this parameter to <strong><c>null</c></strong> to specify the entire volume.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/></p></returns>\t\n            <remarks>\t\n            <p>The compiler setting also determines  the function version. If Unicode is defined, the function call resolves to <see cref=\"M:SharpDX.Direct3D9.D3DX9.SaveVolumeToFileW(System.String,SharpDX.Direct3D9.ImageFileFormat,SharpDX.Direct3D9.Volume,SharpDX.Direct3D9.PaletteEntry[],System.IntPtr)\"/>. Otherwise, the function call resolves to &gt;D3DXSaveVolumeToFileA because ANSI strings are being used.</p><p>This function handles conversion to and from compressed texture formats.</p><p>If the volume is nondynamic (because of a usage parameter set to 0 at the creation) and located in video memory (the memory pool set to <see cref=\"F:SharpDX.Direct3D9.Pool.Default\"/>), <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.SaveTextureToFileW(System.String,SharpDX.Direct3D9.ImageFileFormat,SharpDX.Direct3D9.BaseTexture,SharpDX.Direct3D9.PaletteEntry[])\"/></strong> will fail because D3DX cannot lock nondynamic volumes located in video memory.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXSaveVolumeToFileW']/*\"/>\t\n            <msdn-id>bb205435</msdn-id>\t\n            <unmanaged>HRESULT D3DXSaveVolumeToFileW([In] const wchar_t* pDestFile,[In] D3DXIMAGE_FILEFORMAT DestFormat,[In] IDirect3DVolume9* pSrcVolume,[In, Buffer] const PALETTEENTRY* pSrcPalette,[In] const void* pSrcBox)</unmanaged>\t\n            <unmanaged-short>D3DXSaveVolumeToFileW</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.LoadVolumeFromResourceW(SharpDX.Direct3D9.Volume,SharpDX.Direct3D9.PaletteEntry[],System.IntPtr,System.IntPtr,System.String,System.IntPtr,SharpDX.Direct3D9.Filter,System.Int32,System.IntPtr)\">\n            <summary>\t\n            <p>Loads a volume from a resource.</p>\t\n            </summary>\t\n            <param name=\"destVolumeRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Volume\"/></strong> interface. Specifies the destination volume.</p> </dd></param>\t\n            <param name=\"destPaletteRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.PaletteEntry\"/></strong> structure, the destination palette of 256 colors or <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"destBoxRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.Box\"/></strong> structure. Specifies the destination box. Set this parameter to <strong><c>null</c></strong> to specify the entire volume.</p> </dd></param>\t\n            <param name=\"hSrcModule\"><dd>  <p>Handle to the module where the resource is located, or <strong><c>null</c></strong> for module associated with the image the operating system used to create the current process.</p> </dd></param>\t\n            <param name=\"srcResourceRef\"><dd>  <p>Pointer to a string that specifies the file name of the source image.  If UNICODE or _UNICODE are defined, this parameter type is LPCWSTR, otherwise, the type is LPCSTR.</p> </dd></param>\t\n            <param name=\"srcBoxRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.Box\"/></strong> structure. Specifies the source box. Set this parameter to <strong><c>null</c></strong> to specify the entire volume.</p> </dd></param>\t\n            <param name=\"filter\"><dd>  <p>Combination of one or more <see cref=\"T:SharpDX.Direct3D9.Filter\"/>, controlling how the image is filtered. Specifying D3DX_DEFAULT for this parameter is the equivalent of specifying <see cref=\"F:SharpDX.Direct3D9.Filter.Triangle\"/> | <see cref=\"F:SharpDX.Direct3D9.Filter.Dither\"/>.</p> </dd></param>\t\n            <param name=\"colorKey\"><dd>  <p> <strong><see cref=\"T:SharpDX.ColorBGRA\"/></strong> value to replace with transparent black, or 0 to disable the colorkey. This is always a 32-bit ARGB color, independent of the source image format. Alpha is significant and should usually be set to FF for opaque color keys. Thus, for opaque black, the value would be equal to 0xFF000000.</p> </dd></param>\t\n            <param name=\"srcInfoRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.ImageInformation\"/></strong> structure to be filled with a description of the data in the source image file, or <strong><c>null</c></strong>.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following values: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA.</p></returns>\t\n            <remarks>\t\n            <p>The resource being loaded must be a bitmap resource(RT_BITMAP).</p><p>This function handles conversion to and from compressed texture formats.</p><p>Writing to a non-level-zero surface of the volume texture will not cause the dirty rectangle to be updated. If <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.LoadVolumeFromFileW(SharpDX.Direct3D9.Volume,SharpDX.Direct3D9.PaletteEntry[],System.IntPtr,System.String,System.IntPtr,SharpDX.Direct3D9.Filter,System.Int32,System.IntPtr)\"/></strong> is called and the texture was not already dirty (this is unlikely under normal usage scenarios), the application needs to explicitly call <strong><see cref=\"M:SharpDX.Direct3D9.VolumeTexture.AddDirtyBox(System.IntPtr)\"/></strong> on the volume texture.</p><p>This function supports both Unicode and ANSI strings.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXLoadVolumeFromResourceW']/*\"/>\t\n            <msdn-id>bb172908</msdn-id>\t\n            <unmanaged>HRESULT D3DXLoadVolumeFromResourceW([In] IDirect3DVolume9* pDestVolume,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestBox,[In] HINSTANCE hSrcModule,[In] const wchar_t* pSrcResource,[In] const void* pSrcBox,[In] D3DX_FILTER Filter,[In] int ColorKey,[In] void* pSrcInfo)</unmanaged>\t\n            <unmanaged-short>D3DXLoadVolumeFromResourceW</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.CreateVolumeTextureFromResourceExW(SharpDX.Direct3D9.Device,System.IntPtr,System.String,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,System.Int32,System.Int32,SharpDX.ColorBGRA,SharpDX.Direct3D9.ImageInformation@,SharpDX.Direct3D9.PaletteEntry,SharpDX.Direct3D9.VolumeTexture@)\">\n            <summary>\t\n            <p>Creates a volume texture from a resource specified by a string. This is a more advanced function than <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateVolumeTextureFromResourceW(SharpDX.Direct3D9.Device,System.IntPtr,System.String,SharpDX.Direct3D9.VolumeTexture@)\"/></strong>.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\">No documentation.</param>\t\n            <param name=\"hSrcModule\">No documentation.</param>\t\n            <param name=\"srcResourceRef\">No documentation.</param>\t\n            <param name=\"width\">No documentation.</param>\t\n            <param name=\"height\">No documentation.</param>\t\n            <param name=\"depth\">No documentation.</param>\t\n            <param name=\"mipLevels\">No documentation.</param>\t\n            <param name=\"usage\">No documentation.</param>\t\n            <param name=\"format\">No documentation.</param>\t\n            <param name=\"pool\">No documentation.</param>\t\n            <param name=\"filter\">No documentation.</param>\t\n            <param name=\"mipFilter\">No documentation.</param>\t\n            <param name=\"colorKey\">No documentation.</param>\t\n            <param name=\"srcInfoRef\">No documentation.</param>\t\n            <param name=\"paletteRef\">No documentation.</param>\t\n            <param name=\"volumeTextureOut\">No documentation.</param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.NotAvailable\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.OutOfVideoMemory\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>The compiler setting also determines the function version. If Unicode is defined, the function call resolves to <see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateVolumeTextureFromResourceExW(SharpDX.Direct3D9.Device,System.IntPtr,System.String,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,System.Int32,System.Int32,SharpDX.ColorBGRA,SharpDX.Direct3D9.ImageInformation@,SharpDX.Direct3D9.PaletteEntry,SharpDX.Direct3D9.VolumeTexture@)\"/>. Otherwise, the function call resolves to D3DXCreateVolumeTextureFromResourceExA because ANSI strings are being used.</p><p>The resource being loaded must be an application-defined resource (RT_RCDATA).</p><p>This function supports the following file formats: .bmp, .dds, .dib, .hdr, .jpg, .pfm, .png, .ppm, and .tga. See <strong><see cref=\"T:SharpDX.Direct3D9.ImageFileFormat\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCreateVolumeTextureFromResourceExW']/*\"/>\t\n            <msdn-id>bb172816</msdn-id>\t\n            <unmanaged>HRESULT D3DXCreateVolumeTextureFromResourceExW([In] IDirect3DDevice9* pDevice,[In] HINSTANCE hSrcModule,[In] const wchar_t* pSrcResource,[In] unsigned int Width,[In] unsigned int Height,[In] unsigned int Depth,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[In] D3DXIMAGE_INFO* pSrcInfo,[In] PALETTEENTRY* pPalette,[In] IDirect3DVolumeTexture9** ppVolumeTexture)</unmanaged>\t\n            <unmanaged-short>D3DXCreateVolumeTextureFromResourceExW</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.CreateCubeTextureFromResourceW(SharpDX.Direct3D9.Device,System.IntPtr,System.String,SharpDX.Direct3D9.CubeTexture@)\">\n            <summary>\t\n            <p>Creates a cube texture from a resource.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface, representing the device to be associated with the cube texture.</p> </dd></param>\t\n            <param name=\"hSrcModule\"><dd>  <p>Handle to the module where the resource is located, or <strong><c>null</c></strong> for the module associated with the image the operating system used to create the current process.</p> </dd></param>\t\n            <param name=\"srcResourceRef\"><dd>  <p>Pointer to a string that specifies the resource name. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the string data type resolves to LPCSTR. See Remarks.</p> </dd></param>\t\n            <param name=\"cubeTextureOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D9.CubeTexture\"/></strong> interface, representing the created cube texture object.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following values: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.NotAvailable\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.OutOfVideoMemory\"/>, D3DXERR_INVALIDDATA, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>The compiler setting determines the function version. If Unicode is defined, the function call resolves to <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateCubeTextureFromResourceW(SharpDX.Direct3D9.Device,System.IntPtr,System.String,SharpDX.Direct3D9.CubeTexture@)\"/></strong>. Otherwise, the function call resolves to <strong>D3DXCreateCubeTextureFromResourceA</strong> because ANSI strings are being used.</p><p>The function is equivalent to <see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateCubeTextureFromResourceExW(SharpDX.Direct3D9.Device,System.IntPtr,System.String,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,System.Int32,System.Int32,SharpDX.ColorBGRA,SharpDX.Direct3D9.ImageInformation@,SharpDX.Direct3D9.PaletteEntry,SharpDX.Direct3D9.CubeTexture@)\"/>(pDevice, hSrcModule, pSrcResource, D3DX_DEFAULT, D3DX_DEFAULT, 0, <see cref=\"F:SharpDX.Direct3D9.Format.Unknown\"/>, <see cref=\"F:SharpDX.Direct3D9.Pool.Managed\"/>, D3DX_DEFAULT, D3DX_DEFAULT, 0, <strong><c>null</c></strong>, <strong><c>null</c></strong>, ppCubeTexture).</p><p>This function supports the following file formats: .bmp, .dds, .dib, .hdr, .jpg, .pfm, .png, .ppm, and .tga. See <strong><see cref=\"T:SharpDX.Direct3D9.ImageFileFormat\"/></strong>.</p><p>Note that a resource created with this function when called from a <see cref=\"T:SharpDX.Direct3D9.Device\"/> object will be placed in the memory class denoted by <see cref=\"F:SharpDX.Direct3D9.Pool.Managed\"/>.  When this method is called from a <see cref=\"T:SharpDX.Direct3D9.DeviceEx\"/> object the resource will be placed in the memory class denoted by <see cref=\"F:SharpDX.Direct3D9.Pool.Default\"/>.</p><p>Filtering is automatically applied to a texture created using this method. The filtering is equivalent to <see cref=\"F:SharpDX.Direct3D9.Filter.Triangle\"/> | <see cref=\"F:SharpDX.Direct3D9.Filter.Dither\"/> in <see cref=\"T:SharpDX.Direct3D9.Filter\"/>.</p><p><strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateCubeTextureFromResourceW(SharpDX.Direct3D9.Device,System.IntPtr,System.String,SharpDX.Direct3D9.CubeTexture@)\"/></strong> uses the DirectDraw surface (DDS) file format. The DirectX Texture Editor (Dxtex.exe) enables you to generate a cube map from other file formats and save it in the DDS file format.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCreateCubeTextureFromResourceW']/*\"/>\t\n            <msdn-id>bb172760</msdn-id>\t\n            <unmanaged>HRESULT D3DXCreateCubeTextureFromResourceW([In] IDirect3DDevice9* pDevice,[In] HINSTANCE hSrcModule,[In] const wchar_t* pSrcResource,[In] IDirect3DCubeTexture9** ppCubeTexture)</unmanaged>\t\n            <unmanaged-short>D3DXCreateCubeTextureFromResourceW</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.SaveSurfaceToFileW(System.String,SharpDX.Direct3D9.ImageFileFormat,SharpDX.Direct3D9.Surface,SharpDX.Direct3D9.PaletteEntry[],System.IntPtr)\">\n            <summary>\t\n            <p>Saves a surface to a file.</p>\t\n            </summary>\t\n            <param name=\"destFileRef\"><dd>  <p>Pointer to a string that specifies the file name of the destination image. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the string data type resolves to LPCSTR. See Remarks.</p> </dd></param>\t\n            <param name=\"destFormat\"><dd>  <p> <strong><see cref=\"T:SharpDX.Direct3D9.ImageFileFormat\"/></strong> specifying the file format to use when saving. This function supports saving to all <strong><see cref=\"T:SharpDX.Direct3D9.ImageFileFormat\"/></strong> formats except Portable Pixmap (.ppm) and Targa/Truevision Graphics Adapter (.tga).</p> </dd></param>\t\n            <param name=\"srcSurfaceRef\"><dd>  <p>Pointer to <strong><see cref=\"T:SharpDX.Direct3D9.Surface\"/></strong> interface, containing the image to be saved.</p> </dd></param>\t\n            <param name=\"srcPaletteRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.PaletteEntry\"/></strong> structure containing a palette of 256 colors. This parameter can be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"srcRectRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Rectangle\"/></strong> structure. Specifies the source rectangle. Set this parameter to <strong><c>null</c></strong> to specify the entire image.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/></p></returns>\t\n            <remarks>\t\n            <p>The compiler setting also determines  the function version. If Unicode is defined, the function call resolves to <see cref=\"M:SharpDX.Direct3D9.D3DX9.SaveSurfaceToFileW(System.String,SharpDX.Direct3D9.ImageFileFormat,SharpDX.Direct3D9.Surface,SharpDX.Direct3D9.PaletteEntry[],System.IntPtr)\"/>. Otherwise, the function call resolves to D3DXSaveSurfaceToFileA because ANSI strings are being used.</p><p>This function handles conversion to and from compressed texture formats.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXSaveSurfaceToFileW']/*\"/>\t\n            <msdn-id>bb205431</msdn-id>\t\n            <unmanaged>HRESULT D3DXSaveSurfaceToFileW([In] const wchar_t* pDestFile,[In] D3DXIMAGE_FILEFORMAT DestFormat,[In] IDirect3DSurface9* pSrcSurface,[In, Buffer] const PALETTEENTRY* pSrcPalette,[In] const void* pSrcRect)</unmanaged>\t\n            <unmanaged-short>D3DXSaveSurfaceToFileW</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.CreateCubeTextureFromFileExW(SharpDX.Direct3D9.Device,System.String,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,System.Int32,System.Int32,SharpDX.ColorBGRA,System.IntPtr,SharpDX.Direct3D9.PaletteEntry[],SharpDX.Direct3D9.CubeTexture@)\">\n            <summary>\t\n            <p>Creates a cube texture from a file. This is a more advanced function than <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateCubeTextureFromFileW(SharpDX.Direct3D9.Device,System.String,SharpDX.Direct3D9.CubeTexture@)\"/></strong>.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\">No documentation.</param>\t\n            <param name=\"srcFileRef\">No documentation.</param>\t\n            <param name=\"size\">No documentation.</param>\t\n            <param name=\"mipLevels\">No documentation.</param>\t\n            <param name=\"usage\">No documentation.</param>\t\n            <param name=\"format\">No documentation.</param>\t\n            <param name=\"pool\">No documentation.</param>\t\n            <param name=\"filter\">No documentation.</param>\t\n            <param name=\"mipFilter\">No documentation.</param>\t\n            <param name=\"colorKey\">No documentation.</param>\t\n            <param name=\"srcInfoRef\">No documentation.</param>\t\n            <param name=\"paletteRef\">No documentation.</param>\t\n            <param name=\"cubeTextureOut\">No documentation.</param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.NotAvailable\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.OutOfVideoMemory\"/>, D3DXERR_INVALIDDATA, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>The compiler setting also determines the function version. If Unicode is defined, the function call resolves to <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateCubeTextureFromFileExW(SharpDX.Direct3D9.Device,System.String,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,System.Int32,System.Int32,SharpDX.ColorBGRA,System.IntPtr,SharpDX.Direct3D9.PaletteEntry[],SharpDX.Direct3D9.CubeTexture@)\"/></strong>. Otherwise, the function call resolves to <strong>D3DXCreateCubeTextureFromFileExA</strong> because ANSI strings are being used.</p><p>This function supports the following file formats: .bmp, .dds, .dib, .hdr, .jpg, .pfm, .png, .ppm, and .tga. See <strong><see cref=\"T:SharpDX.Direct3D9.ImageFileFormat\"/></strong>.</p><p>Cube textures differ from other surfaces in that they are collections of surfaces. To call <strong>SetRenderTarget</strong> with a cube texture, you must select an individual face using <strong>GetCubeMapSurface</strong> and pass the resulting surface to <strong>SetRenderTarget</strong>.</p><p><strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateCubeTextureFromFileExW(SharpDX.Direct3D9.Device,System.String,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,System.Int32,System.Int32,SharpDX.ColorBGRA,System.IntPtr,SharpDX.Direct3D9.PaletteEntry[],SharpDX.Direct3D9.CubeTexture@)\"/></strong> uses the DirectDraw surface (DDS) file format. The DirectX Texture Editor (Dxtex.exe) enables you to generate a cube map from other file formats and save it in the DDS file format.</p><p>When skipping mipmap levels while loading a .dds file, use the D3DX_SKIP_DDS_MIP_LEVELS macro to generate the MipFilter value. This macro takes the number of levels to skip and the filter type and returns the filter value, which would then be passed into the MipFilter parameter.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCreateCubeTextureFromFileExW']/*\"/>\t\n            <msdn-id>bb172757</msdn-id>\t\n            <unmanaged>HRESULT D3DXCreateCubeTextureFromFileExW([In] IDirect3DDevice9* pDevice,[In] const wchar_t* pSrcFile,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[In] void* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DCubeTexture9** ppCubeTexture)</unmanaged>\t\n            <unmanaged-short>D3DXCreateCubeTextureFromFileExW</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.GetImageInfoFromResourceW(System.IntPtr,System.String)\">\n            <summary>\t\n            <p>Retrieves information about a given image in a resource.</p>\t\n            </summary>\t\n            <param name=\"hSrcModule\"><dd>  <p>Module where the resource is loaded. Set this parameter to <strong><c>null</c></strong> to specify the module associated with the image that the operating system used to create the current process.</p> </dd></param>\t\n            <param name=\"srcResourceRef\"><dd>  <p>Pointer to a string that specifies the filename. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the string data type resolves to LPCSTR. See Remarks.</p> </dd></param>\t\n            <returns><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.ImageInformation\"/></strong> structure to be filled with the description of the data in the source file.</p> </dd></returns>\t\n            <remarks>\t\n            <p>The compiler setting also determines  the function version. If Unicode is defined, the function call resolves to <see cref=\"M:SharpDX.Direct3D9.D3DX9.GetImageInfoFromResourceW(System.IntPtr,System.String)\"/>. Otherwise, the function call resolves to D3DXGetImageInfoFromResourceA because ANSI strings are being used.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXGetImageInfoFromResourceW']/*\"/>\t\n            <msdn-id>bb172869</msdn-id>\t\n            <unmanaged>HRESULT D3DXGetImageInfoFromResourceW([In] HINSTANCE hSrcModule,[In] const wchar_t* pSrcResource,[Out] D3DXIMAGE_INFO* pSrcInfo)</unmanaged>\t\n            <unmanaged-short>D3DXGetImageInfoFromResourceW</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.FillCubeTextureTX(SharpDX.Direct3D9.CubeTexture,SharpDX.Direct3D9.TextureShader)\">\n            <summary>\t\n            <p>Uses a compiled high-level shader language (HLSL) function to fill each texel of each mipmap level of a texture.</p>\t\n            </summary>\t\n            <param name=\"cubeTextureRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.CubeTexture\"/></strong> object, representing the texture to be filled.</p> </dd></param>\t\n            <param name=\"textureShaderRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.TextureShader\"/></strong> texture shader object.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.NotAvailable\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>The texture target must be an HLSL function that takes contains the following semantics:</p><ul> <li>One input parameter must use a POSITION semantic.</li> <li>One input parameter must use a PSIZE semantic.</li> <li>The function must return a parameter that uses the COLOR semantic.</li> </ul><p>The input parameters can be in any order. For an example, see <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.FillTextureTX(SharpDX.Direct3D9.Texture,SharpDX.Direct3D9.TextureShader)\"/></strong> </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXFillCubeTextureTX']/*\"/>\t\n            <msdn-id>bb172832</msdn-id>\t\n            <unmanaged>HRESULT D3DXFillCubeTextureTX([In] IDirect3DCubeTexture9* pCubeTexture,[In] ID3DXTextureShader* pTextureShader)</unmanaged>\t\n            <unmanaged-short>D3DXFillCubeTextureTX</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.FillTexture(SharpDX.Direct3D9.Texture,SharpDX.FunctionCallback,System.IntPtr)\">\n            <summary>\t\n            <p>Uses a user-provided function to fill each texel of each mip level of a given texture.</p>\t\n            </summary>\t\n            <param name=\"textureRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Texture\"/></strong> interface, representing the filled texture.</p> </dd></param>\t\n            <param name=\"functionRef\"><dd>  <p>Pointer to a user-provided evaluator function, which will be used to compute the value of each texel. The function follows the prototype of LPD3DXFILL2D.</p> </dd></param>\t\n            <param name=\"dataRef\"><dd>  <p>Pointer to an arbitrary block of user-defined data. This reference will be passed to the function provided in <em>pFunction</em>.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following values: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>Here is an example that creates a function called ColorFill, which relies on <see cref=\"M:SharpDX.Direct3D9.D3DX9.FillTexture(SharpDX.Direct3D9.Texture,SharpDX.FunctionCallback,System.IntPtr)\"/>.</p><pre><code> // Define a function that matches the prototype of LPD3DXFILL3D\t\n            VOID WINAPI ColorFill (<see cref=\"T:SharpDX.Vector4\"/>* pOut, const <see cref=\"T:SharpDX.Vector2\"/>* pTexCoord, \t\n            const <see cref=\"T:SharpDX.Vector2\"/>* pTexelSize, LPVOID pData)\t\n            { *pOut = <see cref=\"T:SharpDX.Vector4\"/>(pTexCoord-&gt;x, pTexCoord-&gt;y, 0.0f, 0.0f);\t\n            } // Fill the texture using <see cref=\"M:SharpDX.Direct3D9.D3DX9.FillTexture(SharpDX.Direct3D9.Texture,SharpDX.FunctionCallback,System.IntPtr)\"/>\t\n            if (FAILED (hr = <see cref=\"M:SharpDX.Direct3D9.D3DX9.FillTexture(SharpDX.Direct3D9.Texture,SharpDX.FunctionCallback,System.IntPtr)\"/> (m_pTexture, ColorFill, <c>null</c>)))\t\n            { return hr;\t\n            }\t\n            </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXFillTexture']/*\"/>\t\n            <msdn-id>bb172833</msdn-id>\t\n            <unmanaged>HRESULT D3DXFillTexture([In] IDirect3DTexture9* pTexture,[In] __function__stdcall* pFunction,[In] void* pData)</unmanaged>\t\n            <unmanaged-short>D3DXFillTexture</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.SaveSurfaceToFileInMemory(SharpDX.Direct3D.Blob@,SharpDX.Direct3D9.ImageFileFormat,SharpDX.Direct3D9.Surface,SharpDX.Direct3D9.PaletteEntry[],System.IntPtr)\">\n            <summary>\t\n            <p>Saves a surface to an image file.</p>\t\n            </summary>\t\n            <param name=\"destBufOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D.Blob\"/></strong> that will store the image.</p> </dd></param>\t\n            <param name=\"destFormat\"><dd>  <p> <strong><see cref=\"T:SharpDX.Direct3D9.ImageFileFormat\"/></strong> specifying the file format to use when saving. This function supports saving to all <strong><see cref=\"T:SharpDX.Direct3D9.ImageFileFormat\"/></strong> formats except Portable Pixmap (.ppm) and Targa/Truevision Graphics Adapter (.tga).</p> </dd></param>\t\n            <param name=\"srcSurfaceRef\"><dd>  <p>Pointer to <strong><see cref=\"T:SharpDX.Direct3D9.Surface\"/></strong> interface containing the image to be saved.</p> </dd></param>\t\n            <param name=\"srcPaletteRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.PaletteEntry\"/></strong> structure containing a palette of 256 colors. This parameter can be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"srcRectRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Rectangle\"/></strong> structure. Specifies the source rectangle. Set this parameter to <strong><c>null</c></strong> to specify the entire image.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>This function handles conversion to and from compressed texture formats.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXSaveSurfaceToFileInMemory']/*\"/>\t\n            <msdn-id>bb205432</msdn-id>\t\n            <unmanaged>HRESULT D3DXSaveSurfaceToFileInMemory([In] ID3DXBuffer** ppDestBuf,[In] D3DXIMAGE_FILEFORMAT DestFormat,[In] IDirect3DSurface9* pSrcSurface,[In, Buffer] const PALETTEENTRY* pSrcPalette,[In] const void* pSrcRect)</unmanaged>\t\n            <unmanaged-short>D3DXSaveSurfaceToFileInMemory</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.CreateCubeTextureFromResourceExW(SharpDX.Direct3D9.Device,System.IntPtr,System.String,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,System.Int32,System.Int32,SharpDX.ColorBGRA,SharpDX.Direct3D9.ImageInformation@,SharpDX.Direct3D9.PaletteEntry,SharpDX.Direct3D9.CubeTexture@)\">\n            <summary>\t\n            <p>Creates a cube texture from a resource specified by a string. This is a more advanced function than <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateCubeTextureFromResourceW(SharpDX.Direct3D9.Device,System.IntPtr,System.String,SharpDX.Direct3D9.CubeTexture@)\"/></strong>.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\">No documentation.</param>\t\n            <param name=\"hSrcModule\">No documentation.</param>\t\n            <param name=\"srcResourceRef\">No documentation.</param>\t\n            <param name=\"size\">No documentation.</param>\t\n            <param name=\"mipLevels\">No documentation.</param>\t\n            <param name=\"usage\">No documentation.</param>\t\n            <param name=\"format\">No documentation.</param>\t\n            <param name=\"pool\">No documentation.</param>\t\n            <param name=\"filter\">No documentation.</param>\t\n            <param name=\"mipFilter\">No documentation.</param>\t\n            <param name=\"colorKey\">No documentation.</param>\t\n            <param name=\"srcInfoRef\">No documentation.</param>\t\n            <param name=\"paletteRef\">No documentation.</param>\t\n            <param name=\"cubeTextureOut\">No documentation.</param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.NotAvailable\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.OutOfVideoMemory\"/>, D3DXERR_INVALIDDATA, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>The compiler setting determines the function version. If Unicode is defined, the function call resolves to <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateCubeTextureFromResourceExW(SharpDX.Direct3D9.Device,System.IntPtr,System.String,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,System.Int32,System.Int32,SharpDX.ColorBGRA,SharpDX.Direct3D9.ImageInformation@,SharpDX.Direct3D9.PaletteEntry,SharpDX.Direct3D9.CubeTexture@)\"/></strong>. Otherwise, the function call resolves to <strong>D3DXCreateCubeTextureFromResourceExA</strong> because ANSI strings are being used.</p><p>This function supports the following file formats: .bmp, .dds, .dib, .hdr, .jpg, .pfm, .png, .ppm, and .tga. See <strong><see cref=\"T:SharpDX.Direct3D9.ImageFileFormat\"/></strong>.</p><p>Cube textures differ from other surfaces in that they are collections of surfaces. To call <strong>SetRenderTarget</strong> with a cube texture, you must select an individual face using <strong>GetCubeMapSurface</strong> and pass the resulting surface to  <strong>SetRenderTarget</strong>.</p><p><strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateCubeTextureFromResourceExW(SharpDX.Direct3D9.Device,System.IntPtr,System.String,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,System.Int32,System.Int32,SharpDX.ColorBGRA,SharpDX.Direct3D9.ImageInformation@,SharpDX.Direct3D9.PaletteEntry,SharpDX.Direct3D9.CubeTexture@)\"/></strong> uses the DirectDraw surface (DDS) file format. The DirectX Texture Editor (Dxtex.exe) enables you to generate a cube map from other file formats and save it in the DDS file format.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCreateCubeTextureFromResourceExW']/*\"/>\t\n            <msdn-id>bb172761</msdn-id>\t\n            <unmanaged>HRESULT D3DXCreateCubeTextureFromResourceExW([In] IDirect3DDevice9* pDevice,[In] HINSTANCE hSrcModule,[In] const wchar_t* pSrcResource,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[In] D3DXIMAGE_INFO* pSrcInfo,[In] PALETTEENTRY* pPalette,[In] IDirect3DCubeTexture9** ppCubeTexture)</unmanaged>\t\n            <unmanaged-short>D3DXCreateCubeTextureFromResourceExW</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.CreateVolumeTextureFromFileW(SharpDX.Direct3D9.Device,System.String,SharpDX.Direct3D9.VolumeTexture@)\">\n            <summary>\t\n            <p>Creates a volume texture from a file.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface, representing the device to be associated with the volume texture.</p> </dd></param>\t\n            <param name=\"srcFileRef\"><dd>  <p>Pointer to a string that specifies the file name. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the string data type resolves to LPCSTR. See Remarks.</p> </dd></param>\t\n            <param name=\"volumeTextureOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D9.VolumeTexture\"/></strong> interface representing the created texture object.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.NotAvailable\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.OutOfVideoMemory\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>The compiler setting also determines the function version. If Unicode is defined, the function call resolves to <see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateVolumeTextureFromFileW(SharpDX.Direct3D9.Device,System.String,SharpDX.Direct3D9.VolumeTexture@)\"/>. Otherwise, the function call resolves to D3DXCreateVolumeTextureFromFileA because ANSI strings are being used.</p><p>The function is equivalent to <see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateVolumeTextureFromFileExW(SharpDX.Direct3D9.Device,System.String,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,System.Int32,System.Int32,SharpDX.ColorBGRA,System.IntPtr,SharpDX.Direct3D9.PaletteEntry[],SharpDX.Direct3D9.VolumeTexture@)\"/>(pDevice, pSrcFile, D3DX_DEFAULT, D3DX_DEFAULT, D3DX_DEFAULT, D3DX_DEFAULT, 0, <see cref=\"F:SharpDX.Direct3D9.Format.Unknown\"/>, <see cref=\"F:SharpDX.Direct3D9.Pool.Managed\"/>, D3DX_DEFAULT, D3DX_DEFAULT, 0, <strong><c>null</c></strong>, <strong><c>null</c></strong>, ppVolumeTexture).</p><p>This function supports the following file formats: .bmp, .dds, .dib, .hdr, .jpg, .pfm, .png, .ppm, and .tga. See <strong><see cref=\"T:SharpDX.Direct3D9.ImageFileFormat\"/></strong>.</p><p>Mipmapped textures automatically have each level filled with the loaded texture.</p><p>When loading images into mipmapped textures, some devices are unable to go to a 1x1 image and this function will fail. If this happens, then the images need to be loaded manually.</p><p>Note that a resource created with this function when called from a <see cref=\"T:SharpDX.Direct3D9.Device\"/> object will be placed in the memory class denoted by <see cref=\"F:SharpDX.Direct3D9.Pool.Managed\"/>.  When this method is called from a <see cref=\"T:SharpDX.Direct3D9.DeviceEx\"/> object the resource will be placed in the memory class denoted by <see cref=\"F:SharpDX.Direct3D9.Pool.Default\"/>.</p><p>Filtering is automatically applied to a texture created using this method. The filtering is equivalent to <see cref=\"F:SharpDX.Direct3D9.Filter.Triangle\"/> | <see cref=\"F:SharpDX.Direct3D9.Filter.Dither\"/> in <see cref=\"T:SharpDX.Direct3D9.Filter\"/>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCreateVolumeTextureFromFileW']/*\"/>\t\n            <msdn-id>bb172811</msdn-id>\t\n            <unmanaged>HRESULT D3DXCreateVolumeTextureFromFileW([In] IDirect3DDevice9* pDevice,[In] const wchar_t* pSrcFile,[In] IDirect3DVolumeTexture9** ppVolumeTexture)</unmanaged>\t\n            <unmanaged-short>D3DXCreateVolumeTextureFromFileW</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.CreateTextureFromResourceW(SharpDX.Direct3D9.Device,System.IntPtr,System.String,SharpDX.Direct3D9.Texture@)\">\n            <summary>\t\n            <p>Creates a texture from a resource.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface, representing the device to be associated with the texture.</p> </dd></param>\t\n            <param name=\"hSrcModule\"><dd>  <p>Handle to the module where the resource is located, or <strong><c>null</c></strong> for module associated with the image the operating system used to create the current process.</p> </dd></param>\t\n            <param name=\"srcResourceRef\"><dd>  <p>Pointer to a string that specifies the resource name. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the string data type resolves to LPCSTR. See Remarks.</p> </dd></param>\t\n            <param name=\"textureOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D9.Texture\"/></strong> interface, representing the created texture object.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.NotAvailable\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.OutOfVideoMemory\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>The compiler setting also determines the function version. If Unicode is defined, the function call resolves to <see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateTextureFromResourceW(SharpDX.Direct3D9.Device,System.IntPtr,System.String,SharpDX.Direct3D9.Texture@)\"/>. Otherwise, the function call resolves to D3DXCreateTextureFromResourceA because ANSI strings are being used.</p><p>The function is equivalent to <see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateTextureFromResourceExW(SharpDX.Direct3D9.Device,System.IntPtr,System.String,System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,System.Int32,System.Int32,SharpDX.ColorBGRA,SharpDX.Direct3D9.ImageInformation@,SharpDX.Direct3D9.PaletteEntry,SharpDX.Direct3D9.Texture@)\"/>(pDevice, hSrcModule, pSrcResource, D3DX_DEFAULT, D3DX_DEFAULT, D3DX_DEFAULT, 0, <see cref=\"F:SharpDX.Direct3D9.Format.Unknown\"/>, <see cref=\"F:SharpDX.Direct3D9.Pool.Managed\"/>, D3DX_DEFAULT, D3DX_DEFAULT, 0, <strong><c>null</c></strong>, <strong><c>null</c></strong>, ppTexture).</p><p>The resource being loaded must be of type RT_BITMAP or RT_RCDATA. Resource type RT_RCDATA is used to load formats other than bitmaps (such as .tga, .jpg, and .dds).</p><p>This function supports the following file formats: .bmp, .dds, .dib, .hdr, .jpg, .pfm, .png, .ppm, and .tga. See <strong><see cref=\"T:SharpDX.Direct3D9.ImageFileFormat\"/></strong>.</p><p>Note that a resource created with this function when called from a <see cref=\"T:SharpDX.Direct3D9.Device\"/> object will be placed in the memory class denoted by <see cref=\"F:SharpDX.Direct3D9.Pool.Managed\"/>.  When this method is called from a <see cref=\"T:SharpDX.Direct3D9.DeviceEx\"/> object the resource will be placed in the memory class denoted by <see cref=\"F:SharpDX.Direct3D9.Pool.Default\"/>.</p><p>Filtering is automatically applied to a texture created using this method. The filtering is equivalent to <see cref=\"F:SharpDX.Direct3D9.Filter.Triangle\"/> | <see cref=\"F:SharpDX.Direct3D9.Filter.Dither\"/> in <see cref=\"T:SharpDX.Direct3D9.Filter\"/>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCreateTextureFromResourceW']/*\"/>\t\n            <msdn-id>bb172805</msdn-id>\t\n            <unmanaged>HRESULT D3DXCreateTextureFromResourceW([In] IDirect3DDevice9* pDevice,[In] HINSTANCE hSrcModule,[In] const wchar_t* pSrcResource,[In] IDirect3DTexture9** ppTexture)</unmanaged>\t\n            <unmanaged-short>D3DXCreateTextureFromResourceW</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.LoadVolumeFromMemory(SharpDX.Direct3D9.Volume,SharpDX.Direct3D9.PaletteEntry[],System.IntPtr,System.IntPtr,SharpDX.Direct3D9.Format,System.Int32,System.Int32,SharpDX.Direct3D9.PaletteEntry[],System.IntPtr,SharpDX.Direct3D9.Filter,System.Int32)\">\n            <summary>\t\n            <p>Loads a volume from memory.</p>\t\n            </summary>\t\n            <param name=\"destVolumeRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Volume\"/></strong> interface. Specifies the destination volume, which receives the image.</p> </dd></param>\t\n            <param name=\"destPaletteRef\"><dd>  <p>Pointer to a  <strong><see cref=\"T:SharpDX.Direct3D9.PaletteEntry\"/></strong> structure, the destination palette of 256 colors or <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"destBoxRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.Box\"/></strong> structure. Specifies the destination box. Set this parameter to <strong><c>null</c></strong> to specify the entire volume.</p> </dd></param>\t\n            <param name=\"srcMemoryRef\"><dd>  <p>Pointer to the top-left corner of the source volume in memory.</p> </dd></param>\t\n            <param name=\"srcFormat\"><dd>  <p>Member of the <see cref=\"T:SharpDX.Direct3D9.Format\"/> enumerated type, the pixel format of the source volume.</p> </dd></param>\t\n            <param name=\"srcRowPitch\"><dd>  <p>Pitch of source image, in bytes. For DXT formats (compressed texture formats), this number should represent the size of one row of cells, in bytes.</p> </dd></param>\t\n            <param name=\"srcSlicePitch\"><dd>  <p>Pitch of source image, in bytes. For DXT formats (compressed texture formats), this number should represent the size of one slice of cells, in bytes.</p> </dd></param>\t\n            <param name=\"srcPaletteRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.PaletteEntry\"/></strong> structure, the source palette of 256 colors or <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"srcBoxRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.Box\"/></strong> structure. Specifies the source box. <strong><c>null</c></strong> is not a valid value for this parameter.</p> </dd></param>\t\n            <param name=\"filter\"><dd>  <p>A combination of one or more <see cref=\"T:SharpDX.Direct3D9.Filter\"/> controlling how the image is filtered. Specifying D3DX_DEFAULT for this parameter is the equivalent of specifying <see cref=\"F:SharpDX.Direct3D9.Filter.Triangle\"/> | <see cref=\"F:SharpDX.Direct3D9.Filter.Dither\"/>.</p> </dd></param>\t\n            <param name=\"colorKey\"><dd>  <p> <strong><see cref=\"T:SharpDX.ColorBGRA\"/></strong> value to replace with transparent black, or 0 to disable the colorkey. This is always a 32-bit ARGB color, independent of the source image format. Alpha is significant and should usually be set to FF for opaque color keys. Thus, for opaque black, the value would be equal to 0xFF000000.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following values: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA.</p></returns>\t\n            <remarks>\t\n            <p>Writing to a non-level-zero surface of the volume texture will not cause the dirty rectangle to be updated. If <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.LoadVolumeFromMemory(SharpDX.Direct3D9.Volume,SharpDX.Direct3D9.PaletteEntry[],System.IntPtr,System.IntPtr,SharpDX.Direct3D9.Format,System.Int32,System.Int32,SharpDX.Direct3D9.PaletteEntry[],System.IntPtr,SharpDX.Direct3D9.Filter,System.Int32)\"/></strong> is called and the texture was not already dirty (this is unlikely under normal usage scenarios), the application needs to explicitly call <strong><see cref=\"M:SharpDX.Direct3D9.VolumeTexture.AddDirtyBox(System.IntPtr)\"/></strong> on the volume texture.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXLoadVolumeFromMemory']/*\"/>\t\n            <msdn-id>Bb172907</msdn-id>\t\n            <unmanaged>HRESULT D3DXLoadVolumeFromMemory([In] IDirect3DVolume9* pDestVolume,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestBox,[In] const void* pSrcMemory,[In] D3DFORMAT SrcFormat,[In] unsigned int SrcRowPitch,[In] unsigned int SrcSlicePitch,[In, Buffer] const PALETTEENTRY* pSrcPalette,[In] const void* pSrcBox,[In] D3DX_FILTER Filter,[In] int ColorKey)</unmanaged>\t\n            <unmanaged-short>D3DXLoadVolumeFromMemory</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.CreateVolumeTextureFromFileExW(SharpDX.Direct3D9.Device,System.String,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,System.Int32,System.Int32,SharpDX.ColorBGRA,System.IntPtr,SharpDX.Direct3D9.PaletteEntry[],SharpDX.Direct3D9.VolumeTexture@)\">\n            <summary>\t\n            <p>Creates a volume texture from a file.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface, representing the device to be associated with the texture.</p> </dd></param>\t\n            <param name=\"srcFileRef\"><dd>  <p>Pointer to a string that specifies the filename. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the string data type resolves to LPCSTR. See Remarks.</p> </dd></param>\t\n            <param name=\"width\"><dd>  <p>Width in pixels. If this value is zero or D3DX_DEFAULT, the dimensions are taken from the file. The maximum dimension that a driver supports (for width, height, and depth) can be found in MaxVolumeExtent in <strong><see cref=\"T:SharpDX.Direct3D9.Capabilities\"/></strong>.</p> </dd></param>\t\n            <param name=\"height\"><dd>  <p>Height, in pixels. If this value is zero or D3DX_DEFAULT, the dimensions are taken from the file. The maximum dimension that a driver supports (for width, height, and depth) can be found in MaxVolumeExtent in <strong><see cref=\"T:SharpDX.Direct3D9.Capabilities\"/></strong>.</p> </dd></param>\t\n            <param name=\"depth\"><dd>  <p>Depth, in pixels. If this value is zero or D3DX_DEFAULT, the dimensions are taken from the file. The maximum dimension that a driver supports (for width, height, and depth) can be found in MaxVolumeExtent in <strong><see cref=\"T:SharpDX.Direct3D9.Capabilities\"/></strong>.</p> </dd></param>\t\n            <param name=\"mipLevels\"><dd>  <p>Number of mip levels requested. If this value is zero or D3DX_DEFAULT, a complete mipmap chain is created.</p> </dd></param>\t\n            <param name=\"usage\"><dd>  <p>0, <see cref=\"F:SharpDX.Direct3D9.Usage.RenderTarget\"/>, or <see cref=\"F:SharpDX.Direct3D9.Usage.Dynamic\"/>. Setting this flag to <see cref=\"F:SharpDX.Direct3D9.Usage.RenderTarget\"/> indicates that the surface is to be used as a render target. The resource can then be passed to the  <em>pNewRenderTarget</em> parameter of the <strong>SetRenderTarget</strong> method. If either <see cref=\"F:SharpDX.Direct3D9.Usage.RenderTarget\"/> or <see cref=\"F:SharpDX.Direct3D9.Usage.Dynamic\"/> is specified,  <em>Pool</em> must be set to <see cref=\"F:SharpDX.Direct3D9.Pool.Default\"/>, and the application should check that the device supports this operation by calling <strong>CheckDeviceFormat</strong>. <see cref=\"F:SharpDX.Direct3D9.Usage.Dynamic\"/> indicates that the surface should be handled dynamically. For more information about using dynamic textures, see Using Dynamic Textures.</p> </dd></param>\t\n            <param name=\"format\"><dd>  <p>Member of the <see cref=\"T:SharpDX.Direct3D9.Format\"/> enumerated type, describing the requested pixel format for the texture. The returned texture might have a different format from that specified by <em>Format</em>. Applications should check the format of the returned texture. If <see cref=\"F:SharpDX.Direct3D9.Format.Unknown\"/>, the format is taken from the file. If D3DFMT_FROM_FILE, the format is taken exactly as it is in the file, and the call will fail if this violates device capabilities.</p> </dd></param>\t\n            <param name=\"pool\"><dd>  <p>Member of the <strong><see cref=\"T:SharpDX.Direct3D9.Pool\"/></strong> enumerated type, describing the memory class into which the texture should be placed.</p> </dd></param>\t\n            <param name=\"filter\"><dd>  <p>A combination of one or more <see cref=\"T:SharpDX.Direct3D9.Filter\"/> controlling how the image is filtered. Specifying D3DX_DEFAULT for this parameter is the equivalent of specifying <see cref=\"F:SharpDX.Direct3D9.Filter.Triangle\"/> | <see cref=\"F:SharpDX.Direct3D9.Filter.Dither\"/>.</p> </dd></param>\t\n            <param name=\"mipFilter\"><dd>  <p>A combination of one or more <see cref=\"T:SharpDX.Direct3D9.Filter\"/> controlling how the image is filtered. Specifying D3DX_DEFAULT for this parameter is the equivalent of specifying <see cref=\"F:SharpDX.Direct3D9.Filter.Box\"/>. In addition, use bits 27-31 to specify the number of mip levels to be skipped (from the top of the mipmap chain) when a .dds texture is loaded into memory; this allows you to skip up to 32 levels.</p> </dd></param>\t\n            <param name=\"colorKey\"><dd>  <p> <strong><see cref=\"T:SharpDX.ColorBGRA\"/></strong> value to replace with transparent black, or 0 to disable the colorkey. This is always a 32-bit ARGB color, independent of the source image format. Alpha is significant and should usually be set to FF for opaque color keys. Thus, for opaque black, the value would be equal to 0xFF000000.</p> </dd></param>\t\n            <param name=\"srcInfoRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.ImageInformation\"/></strong> structure to be filled in with a description of the data in the source image file, or <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"paletteRef\"><dd>  <p>Pointer to a  <strong><see cref=\"T:SharpDX.Direct3D9.PaletteEntry\"/></strong> structure, representing a 256-color palette to fill in, or <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"volumeTextureOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D9.VolumeTexture\"/></strong> interface, representing the created texture object.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.NotAvailable\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.OutOfVideoMemory\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>The compiler setting also determines the function version. If Unicode is defined, the function call resolves to <see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateVolumeTextureFromFileExW(SharpDX.Direct3D9.Device,System.String,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,System.Int32,System.Int32,SharpDX.ColorBGRA,System.IntPtr,SharpDX.Direct3D9.PaletteEntry[],SharpDX.Direct3D9.VolumeTexture@)\"/>. Otherwise, the function call resolves to D3DXCreateVolumeTextureFromFileExA because ANSI strings are being used.</p><p>This function supports the following file formats: .bmp, .dds, .dib, .hdr, .jpg, .pfm, .png, .ppm, and .tga. See <strong><see cref=\"T:SharpDX.Direct3D9.ImageFileFormat\"/></strong>.</p><p>Mipmapped textures automatically have each level filled with the loaded volume texture. When loading images into mipmapped textures, some devices are unable to go to a 1x1 image and this function will fail. If this happens, then the images need to be loaded manually.</p><p>When skipping mipmap levels while loading a .dds file, use the D3DX_SKIP_DDS_MIP_LEVELS macro to generate the <em>MipFilter</em> value. This macro takes the number of levels to skip and the filter type and returns the filter value, which would then be passed into the <em>MipFilter</em> parameter.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCreateVolumeTextureFromFileExW']/*\"/>\t\n            <msdn-id>bb172812</msdn-id>\t\n            <unmanaged>HRESULT D3DXCreateVolumeTextureFromFileExW([In] IDirect3DDevice9* pDevice,[In] const wchar_t* pSrcFile,[In] unsigned int Width,[In] unsigned int Height,[In] unsigned int Depth,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[In] void* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DVolumeTexture9** ppVolumeTexture)</unmanaged>\t\n            <unmanaged-short>D3DXCreateVolumeTextureFromFileExW</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.CreateTextureFromFileInMemoryEx(SharpDX.Direct3D9.Device,System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,System.Int32,System.Int32,SharpDX.ColorBGRA,System.IntPtr,SharpDX.Direct3D9.PaletteEntry[],SharpDX.Direct3D9.Texture@)\">\n            <summary>\t\n            <p>Creates a texture from a file in memory. This is a more advanced function than <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateTextureFromFileInMemory(SharpDX.Direct3D9.Device,System.IntPtr,System.Int32,SharpDX.Direct3D9.Texture@)\"/></strong>.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\">No documentation.</param>\t\n            <param name=\"srcDataRef\">No documentation.</param>\t\n            <param name=\"srcDataSize\">No documentation.</param>\t\n            <param name=\"width\">No documentation.</param>\t\n            <param name=\"height\">No documentation.</param>\t\n            <param name=\"mipLevels\">No documentation.</param>\t\n            <param name=\"usage\">No documentation.</param>\t\n            <param name=\"format\">No documentation.</param>\t\n            <param name=\"pool\">No documentation.</param>\t\n            <param name=\"filter\">No documentation.</param>\t\n            <param name=\"mipFilter\">No documentation.</param>\t\n            <param name=\"colorKey\">No documentation.</param>\t\n            <param name=\"srcInfoRef\">No documentation.</param>\t\n            <param name=\"paletteRef\">No documentation.</param>\t\n            <param name=\"textureOut\">No documentation.</param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.NotAvailable\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.OutOfVideoMemory\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>This function supports the following file formats: .bmp, .dds, .dib, .hdr, .jpg, .pfm, .png, .ppm, and .tga. See <strong><see cref=\"T:SharpDX.Direct3D9.ImageFileFormat\"/></strong>.</p><p>For details about  <strong><see cref=\"T:SharpDX.Direct3D9.PaletteEntry\"/></strong>, see the Platform SDK. Note that as of DirectX 8.0, the peFlags member of the <strong><see cref=\"T:SharpDX.Direct3D9.PaletteEntry\"/></strong> structure does not function as documented in the Platform SDK. The peFlags member is now the alpha channel for 8-bit palettized formats.</p><p>When skipping mipmap levels while loading a .dds file, use the D3DX_SKIP_DDS_MIP_LEVELS macro to generate the MipFilter value. This macro takes the number of levels to skip and the filter type and returns the filter value, which would then be passed into the MipFilter parameter.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCreateTextureFromFileInMemoryEx']/*\"/>\t\n            <msdn-id>bb172804</msdn-id>\t\n            <unmanaged>HRESULT D3DXCreateTextureFromFileInMemoryEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] unsigned int Width,[In] unsigned int Height,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[In] void* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DTexture9** ppTexture)</unmanaged>\t\n            <unmanaged-short>D3DXCreateTextureFromFileInMemoryEx</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.SaveVolumeToFileInMemory(SharpDX.Direct3D.Blob@,SharpDX.Direct3D9.ImageFileFormat,SharpDX.Direct3D9.Volume,SharpDX.Direct3D9.PaletteEntry[],System.IntPtr)\">\n            <summary>\t\n            <p>Saves a volume to a buffer. The method creates an <strong><see cref=\"T:SharpDX.Direct3D.Blob\"/></strong> buffer to store the data, and returns that object.</p>\t\n            </summary>\t\n            <param name=\"destBufOut\">No documentation.</param>\t\n            <param name=\"destFormat\">No documentation.</param>\t\n            <param name=\"srcVolumeRef\">No documentation.</param>\t\n            <param name=\"srcPaletteRef\">No documentation.</param>\t\n            <param name=\"srcBoxRef\">No documentation.</param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/></p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXSaveVolumeToFileInMemory']/*\"/>\t\n            <msdn-id>bb205436</msdn-id>\t\n            <unmanaged>HRESULT D3DXSaveVolumeToFileInMemory([In] ID3DXBuffer** ppDestBuf,[In] D3DXIMAGE_FILEFORMAT DestFormat,[In] IDirect3DVolume9* pSrcVolume,[In, Buffer] const PALETTEENTRY* pSrcPalette,[In] const void* pSrcBox)</unmanaged>\t\n            <unmanaged-short>D3DXSaveVolumeToFileInMemory</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.CreateVolumeTextureFromResourceW(SharpDX.Direct3D9.Device,System.IntPtr,System.String,SharpDX.Direct3D9.VolumeTexture@)\">\n            <summary>\t\n            <p>Creates a volume texture from a resource.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface, representing the device to be associated with the volume texture.</p> </dd></param>\t\n            <param name=\"hSrcModule\"><dd>  <p>Handle to the module where the resource is located, or <strong><c>null</c></strong> for the module associated with the image the operating system used to create the current process.</p> </dd></param>\t\n            <param name=\"srcResourceRef\"><dd>  <p>Pointer to a string that specifies the resource name. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the string data type resolves to LPCSTR. See Remarks.</p> </dd></param>\t\n            <param name=\"volumeTextureOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D9.VolumeTexture\"/></strong> interface representing the created texture object.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.NotAvailable\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.OutOfVideoMemory\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>The compiler setting also determines the function version. If Unicode is defined, the function call resolves to <see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateVolumeTextureFromResourceW(SharpDX.Direct3D9.Device,System.IntPtr,System.String,SharpDX.Direct3D9.VolumeTexture@)\"/>. Otherwise, the function call resolves to D3DXCreateVolumeTextureFromResourceA because ANSI strings are being used.</p><p>The function is equivalent to <see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateVolumeTextureFromResourceExW(SharpDX.Direct3D9.Device,System.IntPtr,System.String,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,System.Int32,System.Int32,SharpDX.ColorBGRA,SharpDX.Direct3D9.ImageInformation@,SharpDX.Direct3D9.PaletteEntry,SharpDX.Direct3D9.VolumeTexture@)\"/>(pDevice, hSrcModule, pSrcResource, D3DX_DEFAULT, D3DX_DEFAULT, D3DX_DEFAULT, D3DX_DEFAULT, 0, <see cref=\"F:SharpDX.Direct3D9.Format.Unknown\"/>, <see cref=\"F:SharpDX.Direct3D9.Pool.Managed\"/>, D3DX_DEFAULT, D3DX_DEFAULT, 0, <strong><c>null</c></strong>, <strong><c>null</c></strong>, ppVolumeTexture).</p><p>The resource being loaded must be an application-defined resource (RT_RCDATA).</p><p>This function supports the following file formats: .bmp, .dds, .dib, .hdr, .jpg, .pfm, .png, .ppm, and .tga. See <strong><see cref=\"T:SharpDX.Direct3D9.ImageFileFormat\"/></strong>.</p><p>Note that a resource created with this function when called from a <see cref=\"T:SharpDX.Direct3D9.Device\"/> object will be placed in the memory class denoted by <see cref=\"F:SharpDX.Direct3D9.Pool.Managed\"/>.  When this method is called from a <see cref=\"T:SharpDX.Direct3D9.DeviceEx\"/> object the resource will be placed in the memory class denoted by <see cref=\"F:SharpDX.Direct3D9.Pool.Default\"/>.</p><p>Filtering is automatically applied to a texture created using this method. The filtering is equivalent to <see cref=\"F:SharpDX.Direct3D9.Filter.Triangle\"/> | <see cref=\"F:SharpDX.Direct3D9.Filter.Dither\"/> in <see cref=\"T:SharpDX.Direct3D9.Filter\"/>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCreateVolumeTextureFromResourceW']/*\"/>\t\n            <msdn-id>bb172815</msdn-id>\t\n            <unmanaged>HRESULT D3DXCreateVolumeTextureFromResourceW([In] IDirect3DDevice9* pDevice,[In] HINSTANCE hSrcModule,[In] const wchar_t* pSrcResource,[In] IDirect3DVolumeTexture9** ppVolumeTexture)</unmanaged>\t\n            <unmanaged-short>D3DXCreateVolumeTextureFromResourceW</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.CreateCubeTextureFromFileInMemory(SharpDX.Direct3D9.Device,System.IntPtr,System.Int32,SharpDX.Direct3D9.CubeTexture@)\">\n            <summary>\t\n            <p>Creates a cube texture from a file in memory.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface, representing the device to be associated with the cube texture.</p> </dd></param>\t\n            <param name=\"srcDataRef\"><dd>  <p>Pointer to the file in memory from which to create the cubemap. See Remarks.</p> </dd></param>\t\n            <param name=\"srcDataSize\"><dd>  <p>Size of the file in memory, in bytes.</p> </dd></param>\t\n            <param name=\"cubeTextureOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D9.CubeTexture\"/></strong> interface, representing the created cube texture object.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.NotAvailable\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.OutOfVideoMemory\"/>, D3DXERR_INVALIDDATA, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>This function supports the following file formats: .bmp, .dds, .dib, .hdr, .jpg, .pfm, .png, .ppm, and .tga. See <strong><see cref=\"T:SharpDX.Direct3D9.ImageFileFormat\"/></strong>.</p><p>The function is equivalent to <see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateCubeTextureFromFileInMemoryEx(SharpDX.Direct3D9.Device,System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,System.Int32,System.Int32,SharpDX.ColorBGRA,System.IntPtr,SharpDX.Direct3D9.PaletteEntry[],SharpDX.Direct3D9.CubeTexture@)\"/>(pDevice, pSrcData, SrcDataSize, D3DX_DEFAULT, D3DX_DEFAULT, 0, <see cref=\"F:SharpDX.Direct3D9.Format.Unknown\"/>, <see cref=\"F:SharpDX.Direct3D9.Pool.Managed\"/>, D3DX_DEFAULT, D3DX_DEFAULT, 0, <strong><c>null</c></strong>, <strong><c>null</c></strong>, ppCubeTexture).</p><p>Note that a resource created with this function when called from a <see cref=\"T:SharpDX.Direct3D9.Device\"/> object will be placed in the memory class denoted by <see cref=\"F:SharpDX.Direct3D9.Pool.Managed\"/>.  When this method is called from a <see cref=\"T:SharpDX.Direct3D9.DeviceEx\"/> object the resource will be placed in the memory class denoted by <see cref=\"F:SharpDX.Direct3D9.Pool.Default\"/>.</p><p>This method is designed to be used for loading image files stored as RT_RCDATA, which is an application-defined resource (raw data). Otherwise this method will fail.</p><p>Filtering is automatically applied to a texture created using this method. The filtering is equivalent to <see cref=\"F:SharpDX.Direct3D9.Filter.Triangle\"/> | <see cref=\"F:SharpDX.Direct3D9.Filter.Dither\"/> in <see cref=\"T:SharpDX.Direct3D9.Filter\"/>.</p><p><strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateCubeTextureFromFileInMemory(SharpDX.Direct3D9.Device,System.IntPtr,System.Int32,SharpDX.Direct3D9.CubeTexture@)\"/></strong> uses the DirectDraw surface (DDS) file format. The DirectX Texture Editor (Dxtex.exe) enables you to generate a cube map from other file formats and save it in the DDS file format.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCreateCubeTextureFromFileInMemory']/*\"/>\t\n            <msdn-id>bb172758</msdn-id>\t\n            <unmanaged>HRESULT D3DXCreateCubeTextureFromFileInMemory([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] IDirect3DCubeTexture9** ppCubeTexture)</unmanaged>\t\n            <unmanaged-short>D3DXCreateCubeTextureFromFileInMemory</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.CreateTexture(SharpDX.Direct3D9.Device,System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,SharpDX.Direct3D9.Texture@)\">\n            <summary>\t\n            <p>Creates an empty texture, adjusting the calling parameters as needed.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface, representing the device to be associated with the texture.</p> </dd></param>\t\n            <param name=\"width\"><dd>  <p>Width in pixels. If this value is 0, a value of 1 is used. See Remarks.</p> </dd></param>\t\n            <param name=\"height\"><dd>  <p>Height in pixels. If this value is 0, a value of 1 is used. See Remarks.</p> </dd></param>\t\n            <param name=\"mipLevels\"><dd>  <p>Number of mip levels requested. If this value is zero or D3DX_DEFAULT, a complete mipmap chain is created.</p> </dd></param>\t\n            <param name=\"usage\"><dd>  <p>0, <strong><see cref=\"F:SharpDX.Direct3D9.Usage.RenderTarget\"/></strong>, or <strong><see cref=\"F:SharpDX.Direct3D9.Usage.Dynamic\"/></strong>. Setting this flag to <strong><see cref=\"F:SharpDX.Direct3D9.Usage.RenderTarget\"/></strong> indicates that the surface is to be used as a render target by calling the <strong>SetRenderTarget</strong> method. If either <strong><see cref=\"F:SharpDX.Direct3D9.Usage.RenderTarget\"/></strong> or <strong><see cref=\"F:SharpDX.Direct3D9.Usage.Dynamic\"/></strong> is specified, the application should check that the device supports this operation by calling <strong>CheckDeviceFormat</strong>. For more information about using dynamic textures, see Using Dynamic Textures.</p> </dd></param>\t\n            <param name=\"format\"><dd>  <p>Member of the <see cref=\"T:SharpDX.Direct3D9.Format\"/> enumerated type, describing the requested pixel format for the texture. The returned texture may be of a different format from that specified, if the device does not support the requested format. Applications should check the format of the returned texture to see if it matches the format requested.</p> </dd></param>\t\n            <param name=\"pool\"><dd>  <p>Member of the <strong><see cref=\"T:SharpDX.Direct3D9.Pool\"/></strong> enumerated type, describing the memory class into which the texture should be placed.</p> </dd></param>\t\n            <param name=\"textureOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D9.Texture\"/></strong> interface, representing the created texture object.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.NotAvailable\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.OutOfVideoMemory\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>Internally, <see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateTexture(SharpDX.Direct3D9.Device,System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,SharpDX.Direct3D9.Texture@)\"/> uses <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.CheckTextureRequirements(SharpDX.Direct3D9.Device,System.Int32@,System.Int32@,System.Int32@,System.Int32,SharpDX.Direct3D9.Format@,SharpDX.Direct3D9.Pool)\"/></strong> to adjust the calling parameters. Therefore, calls to <see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateTexture(SharpDX.Direct3D9.Device,System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,SharpDX.Direct3D9.Texture@)\"/> will often succeed where calls to <strong>CreateTexture</strong> would fail.</p><p>If both Height and Width are set to D3DX_DEFAULT, a value of 256 is used for both parameters. If either Height or Width is set to D3DX_DEFAULT And the other parameter is set to a numeric value, the texture will be square with both the height and width equal to the numeric value.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCreateTexture']/*\"/>\t\n            <msdn-id>bb172800</msdn-id>\t\n            <unmanaged>HRESULT D3DXCreateTexture([In] IDirect3DDevice9* pDevice,[In] unsigned int Width,[In] unsigned int Height,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] IDirect3DTexture9** ppTexture)</unmanaged>\t\n            <unmanaged-short>D3DXCreateTexture</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.FillVolumeTexture(SharpDX.Direct3D9.VolumeTexture,SharpDX.FunctionCallback,System.IntPtr)\">\n            <summary>\t\n            <p>Uses a user-provided function to fill each texel of each mip level of a given volume texture.</p>\t\n            </summary>\t\n            <param name=\"volumeTextureRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.VolumeTexture\"/></strong> interface, representing the filled texture.</p> </dd></param>\t\n            <param name=\"functionRef\"><dd>  <p>Pointer to a user-provided evaluator function, which will be used to compute the value of each texel. The function follows the prototype of LPD3DXFILL3D.</p> </dd></param>\t\n            <param name=\"dataRef\"><dd>  <p>Pointer to an arbitrary block of user-defined data. This reference will be passed to the function provided in <em>pFunction</em>.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following values: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>If the volume is non-dynamic (because usage is set to 0 when it is  created), and located in video memory (the memory pool set to <see cref=\"F:SharpDX.Direct3D9.Pool.Default\"/>), <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.FillVolumeTexture(SharpDX.Direct3D9.VolumeTexture,SharpDX.FunctionCallback,System.IntPtr)\"/></strong> will fail because the volume cannot be locked.</p><p>This example creates a function called ColorVolumeFill, which relies on <see cref=\"M:SharpDX.Direct3D9.D3DX9.FillVolumeTexture(SharpDX.Direct3D9.VolumeTexture,SharpDX.FunctionCallback,System.IntPtr)\"/>.</p><pre><code> // Define a function that matches the prototype of LPD3DXFILL3D\t\n            VOID WINAPI ColorVolumeFill (<see cref=\"T:SharpDX.Vector4\"/>* pOut, const <see cref=\"T:SharpDX.Vector3\"/>* pTexCoord, \t\n            const <see cref=\"T:SharpDX.Vector3\"/>* pTexelSize, LPVOID pData)\t\n            { *pOut = <see cref=\"T:SharpDX.Vector4\"/>(pTexCoord-&gt;x, pTexCoord-&gt;y, pTexCoord-&gt;z, 0.0f);\t\n            } // Fill volume texture\t\n            if (FAILED (hr = <see cref=\"M:SharpDX.Direct3D9.D3DX9.FillVolumeTexture(SharpDX.Direct3D9.VolumeTexture,SharpDX.FunctionCallback,System.IntPtr)\"/> (m_pTexture, ColorVolumeFill, <c>null</c>)))\t\n            { return hr;\t\n            }\t\n            </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXFillVolumeTexture']/*\"/>\t\n            <msdn-id>bb172835</msdn-id>\t\n            <unmanaged>HRESULT D3DXFillVolumeTexture([In] IDirect3DVolumeTexture9* pVolumeTexture,[In] __function__stdcall* pFunction,[In] void* pData)</unmanaged>\t\n            <unmanaged-short>D3DXFillVolumeTexture</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.LoadSurfaceFromMemory(SharpDX.Direct3D9.Surface,SharpDX.Direct3D9.PaletteEntry[],System.IntPtr,System.IntPtr,SharpDX.Direct3D9.Format,System.Int32,SharpDX.Direct3D9.PaletteEntry[],System.IntPtr,SharpDX.Direct3D9.Filter,System.Int32)\">\n            <summary>\t\n            <p>Loads a surface from memory.</p>\t\n            </summary>\t\n            <param name=\"destSurfaceRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Surface\"/></strong> interface. Specifies the destination surface, which receives the image.</p> </dd></param>\t\n            <param name=\"destPaletteRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.PaletteEntry\"/></strong> structure, the destination palette of 256 colors or <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"destRectRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Rectangle\"/></strong> structure. Specifies the destination rectangle. Set this parameter to <strong><c>null</c></strong> to specify the entire surface.</p> </dd></param>\t\n            <param name=\"srcMemoryRef\"><dd>  <p>Pointer to the upper left corner of the source image in memory.</p> </dd></param>\t\n            <param name=\"srcFormat\"><dd>  <p>Member of the <see cref=\"T:SharpDX.Direct3D9.Format\"/> enumerated type, the pixel format of the source image.</p> </dd></param>\t\n            <param name=\"srcPitch\"><dd>  <p>Pitch of source image, in bytes. For DXT formats, this number should represent the width of one row of cells, in bytes.</p> </dd></param>\t\n            <param name=\"srcPaletteRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.PaletteEntry\"/></strong> structure, the source palette of 256 colors or <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"srcRectRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Rectangle\"/></strong> structure. Specifies the dimensions of the source image in memory. This value cannot be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"filter\"><dd>  <p>Combination of one or more <see cref=\"T:SharpDX.Direct3D9.Filter\"/> controlling how the image is filtered. Specifying D3DX_DEFAULT for this parameter is the equivalent of specifying <see cref=\"F:SharpDX.Direct3D9.Filter.Triangle\"/> | <see cref=\"F:SharpDX.Direct3D9.Filter.Dither\"/>.</p> </dd></param>\t\n            <param name=\"colorKey\"><dd>  <p> <strong><see cref=\"T:SharpDX.ColorBGRA\"/></strong> value to replace with transparent black, or 0 to disable the colorkey. This is always a 32-bit ARGB color, independent of the source image format. Alpha is significant and should usually be set to FF for opaque color keys. Thus, for opaque black, the value would be equal to 0xFF000000.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following values: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA.</p></returns>\t\n            <remarks>\t\n            <p>This function handles conversion to and from compressed texture formats.</p><p>Writing to a non-level-zero surface will not cause the dirty rectangle to be updated. If <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.LoadSurfaceFromMemory(SharpDX.Direct3D9.Surface,SharpDX.Direct3D9.PaletteEntry[],System.IntPtr,System.IntPtr,SharpDX.Direct3D9.Format,System.Int32,SharpDX.Direct3D9.PaletteEntry[],System.IntPtr,SharpDX.Direct3D9.Filter,System.Int32)\"/></strong> is called and the surface was not already dirty (this is unlikely under normal usage scenarios), the application needs to explicitly call <strong>AddDirtyRect</strong> on the surface.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXLoadSurfaceFromMemory']/*\"/>\t\n            <msdn-id>bb172902</msdn-id>\t\n            <unmanaged>HRESULT D3DXLoadSurfaceFromMemory([In] IDirect3DSurface9* pDestSurface,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestRect,[In] const void* pSrcMemory,[In] D3DFORMAT SrcFormat,[In] unsigned int SrcPitch,[In, Buffer] const PALETTEENTRY* pSrcPalette,[In] const void* pSrcRect,[In] D3DX_FILTER Filter,[In] int ColorKey)</unmanaged>\t\n            <unmanaged-short>D3DXLoadSurfaceFromMemory</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.LoadSurfaceFromSurface(SharpDX.Direct3D9.Surface,SharpDX.Direct3D9.PaletteEntry[],System.IntPtr,SharpDX.Direct3D9.Surface,SharpDX.Direct3D9.PaletteEntry[],System.IntPtr,SharpDX.Direct3D9.Filter,System.Int32)\">\n            <summary>\t\n            <p>Loads a surface from another surface with color conversion.</p>\t\n            </summary>\t\n            <param name=\"destSurfaceRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Surface\"/></strong> interface. Specifies the destination surface, which receives the image.</p> </dd></param>\t\n            <param name=\"destPaletteRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.PaletteEntry\"/></strong> structure, the destination palette of 256 colors or <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"destRectRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Rectangle\"/></strong> structure. Specifies the destination rectangle. Set this parameter to <strong><c>null</c></strong> to specify the entire surface.</p> </dd></param>\t\n            <param name=\"srcSurfaceRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Surface\"/></strong> interface, representing the source surface.</p> </dd></param>\t\n            <param name=\"srcPaletteRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.PaletteEntry\"/></strong> structure, the source palette of 256 colors or <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"srcRectRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Rectangle\"/></strong> structure. Specifies the source rectangle. Set this parameter to <strong><c>null</c></strong> to specify the entire surface.</p> </dd></param>\t\n            <param name=\"filter\"><dd>  <p>A combination of one or more <see cref=\"T:SharpDX.Direct3D9.Filter\"/>, controlling how the image is filtered. Specifying D3DX_DEFAULT for this parameter is the equivalent of specifying <see cref=\"F:SharpDX.Direct3D9.Filter.Triangle\"/> | <see cref=\"F:SharpDX.Direct3D9.Filter.Dither\"/>.</p> </dd></param>\t\n            <param name=\"colorKey\"><dd>  <p> <strong><see cref=\"T:SharpDX.ColorBGRA\"/></strong> value to replace with transparent black, or 0 to disable the colorkey. This is always a 32-bit ARGB color, independent of the source image format. Alpha is significant and should usually be set to FF for opaque color keys. Thus, for opaque black, the value would be equal to 0xFF000000.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA.</p></returns>\t\n            <remarks>\t\n            <p>This function handles conversion to and from compressed texture formats.</p><p>Writing to a non-level-zero surface will not cause the dirty rectangle to be updated. If <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.LoadSurfaceFromSurface(SharpDX.Direct3D9.Surface,SharpDX.Direct3D9.PaletteEntry[],System.IntPtr,SharpDX.Direct3D9.Surface,SharpDX.Direct3D9.PaletteEntry[],System.IntPtr,SharpDX.Direct3D9.Filter,System.Int32)\"/></strong> is called and the surface was not already dirty (this is unlikely under normal usage scenarios), the application needs to explicitly call <strong>AddDirtyRect</strong> on the surface.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXLoadSurfaceFromSurface']/*\"/>\t\n            <msdn-id>bb172904</msdn-id>\t\n            <unmanaged>HRESULT D3DXLoadSurfaceFromSurface([In] IDirect3DSurface9* pDestSurface,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestRect,[In] IDirect3DSurface9* pSrcSurface,[In, Buffer] const PALETTEENTRY* pSrcPalette,[In] const void* pSrcRect,[In] D3DX_FILTER Filter,[In] int ColorKey)</unmanaged>\t\n            <unmanaged-short>D3DXLoadSurfaceFromSurface</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.LoadVolumeFromFileInMemory(SharpDX.Direct3D9.Volume,SharpDX.Direct3D9.PaletteEntry[],System.IntPtr,System.IntPtr,System.Int32,System.IntPtr,SharpDX.Direct3D9.Filter,System.Int32,System.IntPtr)\">\n            <summary>\t\n            <p>Loads a volume from a file in memory.</p>\t\n            </summary>\t\n            <param name=\"destVolumeRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Volume\"/></strong> interface. Specifies the destination volume.</p> </dd></param>\t\n            <param name=\"destPaletteRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.PaletteEntry\"/></strong> structure, the destination palette of 256 colors or <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"destBoxRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.Box\"/></strong> structure. Specifies the destination box. Set this parameter to <strong><c>null</c></strong> to specify the entire volume.</p> </dd></param>\t\n            <param name=\"srcDataRef\"><dd>  <p>Pointer to the file in memory from which to load the volume.</p> </dd></param>\t\n            <param name=\"srcDataSize\"><dd>  <p>Size in bytes of the file in memory.</p> </dd></param>\t\n            <param name=\"srcBoxRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.Box\"/></strong> structure. Specifies the source box. Set this parameter to <strong><c>null</c></strong> to specify the entire volume.</p> </dd></param>\t\n            <param name=\"filter\"><dd>  <p>Combination of one or more <see cref=\"T:SharpDX.Direct3D9.Filter\"/>, controlling how the image is filtered. Specifying D3DX_DEFAULT for this parameter is the equivalent of specifying <see cref=\"F:SharpDX.Direct3D9.Filter.Triangle\"/> | <see cref=\"F:SharpDX.Direct3D9.Filter.Dither\"/>.</p> </dd></param>\t\n            <param name=\"colorKey\"><dd>  <p> <strong><see cref=\"T:SharpDX.ColorBGRA\"/></strong> value to replace with transparent black, or 0 to disable the colorkey. This is always a 32-bit ARGB color, independent of the source image format. Alpha is significant and should usually be set to FF for opaque color keys. Thus, for opaque black, the value would be equal to 0xFF000000.</p> </dd></param>\t\n            <param name=\"srcInfoRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.ImageInformation\"/></strong> structure to be filled with a description of the data in the source image file, or <strong><c>null</c></strong>.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA.</p></returns>\t\n            <remarks>\t\n            <p>This function handles conversion to and from compressed texture formats and supports the following file formats: .bmp, .dds, .dib, .hdr, .jpg, .pfm, .png, .ppm, and .tga. See <strong><see cref=\"T:SharpDX.Direct3D9.ImageFileFormat\"/></strong>.</p><p>Writing to a non-level-zero surface of the volume texture will not cause the dirty rectangle to be updated. If <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.LoadVolumeFromFileInMemory(SharpDX.Direct3D9.Volume,SharpDX.Direct3D9.PaletteEntry[],System.IntPtr,System.IntPtr,System.Int32,System.IntPtr,SharpDX.Direct3D9.Filter,System.Int32,System.IntPtr)\"/></strong> is called and the texture was not already dirty (this is unlikely under normal usage scenarios), the application needs to explicitly call <strong><see cref=\"M:SharpDX.Direct3D9.VolumeTexture.AddDirtyBox(System.IntPtr)\"/></strong> on the volume texture.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXLoadVolumeFromFileInMemory']/*\"/>\t\n            <msdn-id>bb172906</msdn-id>\t\n            <unmanaged>HRESULT D3DXLoadVolumeFromFileInMemory([In] IDirect3DVolume9* pDestVolume,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestBox,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] const void* pSrcBox,[In] D3DX_FILTER Filter,[In] int ColorKey,[In] void* pSrcInfo)</unmanaged>\t\n            <unmanaged-short>D3DXLoadVolumeFromFileInMemory</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.CreateTextureFromFileExW(SharpDX.Direct3D9.Device,System.String,System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,System.Int32,System.Int32,SharpDX.ColorBGRA,System.IntPtr,SharpDX.Direct3D9.PaletteEntry[],SharpDX.Direct3D9.Texture@)\">\n            <summary>\t\n            <p>Creates a texture from a file. This is a more advanced function than <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateTextureFromFileW(SharpDX.Direct3D9.Device,System.String,SharpDX.Direct3D9.Texture@)\"/></strong>.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\">No documentation.</param>\t\n            <param name=\"srcFileRef\">No documentation.</param>\t\n            <param name=\"width\">No documentation.</param>\t\n            <param name=\"height\">No documentation.</param>\t\n            <param name=\"mipLevels\">No documentation.</param>\t\n            <param name=\"usage\">No documentation.</param>\t\n            <param name=\"format\">No documentation.</param>\t\n            <param name=\"pool\">No documentation.</param>\t\n            <param name=\"filter\">No documentation.</param>\t\n            <param name=\"mipFilter\">No documentation.</param>\t\n            <param name=\"colorKey\">No documentation.</param>\t\n            <param name=\"srcInfoRef\">No documentation.</param>\t\n            <param name=\"paletteRef\">No documentation.</param>\t\n            <param name=\"textureOut\">No documentation.</param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.NotAvailable\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.OutOfVideoMemory\"/>, D3DXERR_INVALIDDATA, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>The compiler setting also determines the function version. If Unicode is defined, the function call resolves to <see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateTextureFromFileExW(SharpDX.Direct3D9.Device,System.String,System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,System.Int32,System.Int32,SharpDX.ColorBGRA,System.IntPtr,SharpDX.Direct3D9.PaletteEntry[],SharpDX.Direct3D9.Texture@)\"/>. Otherwise, the function call resolves to D3DXCreateTextureFromFileExA because ANSI strings are being used.</p><p>Use <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.CheckTextureRequirements(SharpDX.Direct3D9.Device,System.Int32@,System.Int32@,System.Int32@,System.Int32,SharpDX.Direct3D9.Format@,SharpDX.Direct3D9.Pool)\"/></strong> to determine if your device can support the texture given the current state.</p><p>This function supports the following file formats: .bmp, .dds, .dib, .hdr, .jpg, .pfm, .png, .ppm, and .tga. See <strong><see cref=\"T:SharpDX.Direct3D9.ImageFileFormat\"/></strong>.</p><p>Mipmapped textures automatically have each level filled with the loaded texture. When loading images into mipmapped textures, some devices are unable to go to a 1x1 image and this function will fail. If this happens, then the images need to be loaded manually.</p><p>For the best performance when using <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateTextureFromFileExW(SharpDX.Direct3D9.Device,System.String,System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,System.Int32,System.Int32,SharpDX.ColorBGRA,System.IntPtr,SharpDX.Direct3D9.PaletteEntry[],SharpDX.Direct3D9.Texture@)\"/></strong>:</p><ol> <li>Doing image scaling and format conversion at load time can be slow. Store images in the format and resolution they will be used. If the target hardware requires power of 2 dimensions, then create and store images using power of 2 dimensions.</li> <li>For mipmap image creation at load time, filter using <see cref=\"F:SharpDX.Direct3D9.Filter.Box\"/>. A box filter is much faster than other filter types such as <see cref=\"F:SharpDX.Direct3D9.Filter.Triangle\"/>.</li> <li>Consider using DDS files. Since DDS files can be used to represent any Direct3D 9 texture format, they are very easy for D3DX to read. Also, they can store mipmaps, so any mipmap-generation algorithms can be used to author the images.</li> </ol><p>When skipping mipmap levels while loading a .dds file, use the D3DX_SKIP_DDS_MIP_LEVELS macro to generate the MipFilter value. This macro takes the number of levels to skip and the filter type and returns the filter value, which would then be passed into the MipFilter parameter.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCreateTextureFromFileExW']/*\"/>\t\n            <msdn-id>bb172802</msdn-id>\t\n            <unmanaged>HRESULT D3DXCreateTextureFromFileExW([In] IDirect3DDevice9* pDevice,[In] const wchar_t* pSrcFile,[In] unsigned int Width,[In] unsigned int Height,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[In] void* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DTexture9** ppTexture)</unmanaged>\t\n            <unmanaged-short>D3DXCreateTextureFromFileExW</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.D3DX9.FileCreate(SharpDX.Direct3D9.XFile@)\">\n            <summary>\t\n            <p>Creates an instance of an <strong><see cref=\"T:SharpDX.Direct3D9.XFile\"/></strong> object.</p>\t\n            </summary>\t\n            <param name=\"lplpDirectXFile\">No documentation.</param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the function fails, the return value can be one of the following: E_POINTER, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>After using this function, use <strong>RegisterTemplates</strong> or <strong>RegisterEnumTemplates</strong> to register  templates, <strong>CreateEnumObject</strong> to create an enumerator object, or <strong>CreateSaveObject</strong> to create a save object.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXFileCreate']/*\"/>\t\n            <msdn-id>bb172830</msdn-id>\t\n            <unmanaged>HRESULT D3DXFileCreate([In] ID3DXFile** lplpDirectXFile)</unmanaged>\t\n            <unmanaged-short>D3DXFileCreate</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.ResultCode\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.Direct3D9.ResultCode']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ResultCode.ConflictingRenderState\">\n            <summary>Constant ConflictingRenderState.</summary>\n            <unmanaged>D3DERR_CONFLICTINGRENDERSTATE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ResultCode.ConflictingTextureFilter\">\n            <summary>Constant ConflictingTextureFilter.</summary>\n            <unmanaged>D3DERR_CONFLICTINGTEXTUREFILTER</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ResultCode.ConflictingTexturePalette\">\n            <summary>Constant ConflictingTexturePalette.</summary>\n            <unmanaged>D3DERR_CONFLICTINGTEXTUREPALETTE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ResultCode.DeviceHung\">\n            <summary>Constant DeviceHung.</summary>\n            <unmanaged>D3DERR_DEVICEHUNG</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ResultCode.DeviceLost\">\n            <summary>Constant DeviceLost.</summary>\n            <unmanaged>D3DERR_DEVICELOST</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ResultCode.DeviceNotReset\">\n            <summary>Constant DeviceNotReset.</summary>\n            <unmanaged>D3DERR_DEVICENOTRESET</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ResultCode.DeviceRemoved\">\n            <summary>Constant DeviceRemoved.</summary>\n            <unmanaged>D3DERR_DEVICEREMOVED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ResultCode.DriverInternalError\">\n            <summary>Constant DriverInternalError.</summary>\n            <unmanaged>D3DERR_DRIVERINTERNALERROR</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\">\n            <summary>Constant InvalidCall.</summary>\n            <unmanaged>D3DERR_INVALIDCALL</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ResultCode.InvalidDevice\">\n            <summary>Constant InvalidDevice.</summary>\n            <unmanaged>D3DERR_INVALIDDEVICE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ResultCode.MoreData\">\n            <summary>Constant MoreData.</summary>\n            <unmanaged>D3DERR_MOREDATA</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ResultCode.NoAutomaticGeneration\">\n            <summary>Constant NoAutomaticGeneration.</summary>\n            <unmanaged>D3DOK_NOAUTOGEN</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ResultCode.NotAvailable\">\n            <summary>Constant NotAvailable.</summary>\n            <unmanaged>D3DERR_NOTAVAILABLE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ResultCode.NotFound\">\n            <summary>Constant NotFound.</summary>\n            <unmanaged>D3DERR_NOTFOUND</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ResultCode.OutOfVideoMemory\">\n            <summary>Constant OutOfVideoMemory.</summary>\n            <unmanaged>D3DERR_OUTOFVIDEOMEMORY</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ResultCode.PresentModeChanged\">\n            <summary>Constant PresentModeChanged.</summary>\n            <unmanaged>S_PRESENT_MODE_CHANGED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ResultCode.PresentOccluded\">\n            <summary>Constant PresentOccluded.</summary>\n            <unmanaged>S_PRESENT_OCCLUDED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ResultCode.ResidentInSharedMemory\">\n            <summary>Constant ResidentInSharedMemory.</summary>\n            <unmanaged>S_RESIDENT_IN_SHARED_MEMORY</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ResultCode.Success\">\n            <summary>Constant Success.</summary>\n            <unmanaged>D3D_OK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ResultCode.TooManyOperations\">\n            <summary>Constant TooManyOperations.</summary>\n            <unmanaged>D3DERR_TOOMANYOPERATIONS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ResultCode.UnsupportedAlphaArgument\">\n            <summary>Constant UnsupportedAlphaArgument.</summary>\n            <unmanaged>D3DERR_UNSUPPORTEDALPHAARG</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ResultCode.UnsupportedAlphaOperation\">\n            <summary>Constant UnsupportedAlphaOperation.</summary>\n            <unmanaged>D3DERR_UNSUPPORTEDALPHAOPERATION</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ResultCode.UnsupportedColorArgument\">\n            <summary>Constant UnsupportedColorArgument.</summary>\n            <unmanaged>D3DERR_UNSUPPORTEDCOLORARG</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ResultCode.UnsupportedColorOperation\">\n            <summary>Constant UnsupportedColorOperation.</summary>\n            <unmanaged>D3DERR_UNSUPPORTEDCOLOROPERATION</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ResultCode.UnsupportedFactorValue\">\n            <summary>Constant UnsupportedFactorValue.</summary>\n            <unmanaged>D3DERR_UNSUPPORTEDFACTORVALUE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ResultCode.UnsupportedTextureFilter\">\n            <summary>Constant UnsupportedTextureFilter.</summary>\n            <unmanaged>D3DERR_UNSUPPORTEDTEXTUREFILTER</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ResultCode.WasStillDrawing\">\n            <summary>Constant WasStillDrawing.</summary>\n            <unmanaged>D3DERR_WASSTILLDRAWING</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ResultCode.WrongTextureFormat\">\n            <summary>Constant WrongTextureFormat.</summary>\n            <unmanaged>D3DERR_WRONGTEXTUREFORMAT</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.AnimationCallbackHandler\">\n            <summary>\t\n            <p>An application implements this interface to handle callbacks in animation sets generated by calls to <strong><see cref=\"M:SharpDX.Direct3D9.AnimationController.AdvanceTime(System.Double,SharpDX.Direct3D9.AnimationCallbackHandler)\"/></strong>.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The LPD3DXANIMATIONCALLBACKHANDLER type is defined as a reference to this interface. </p><pre><code> typedef interface <see cref=\"T:SharpDX.Direct3D9.AnimationCallbackHandler\"/> <see cref=\"T:SharpDX.Direct3D9.AnimationCallbackHandler\"/>;\t\n            typedef interface <see cref=\"T:SharpDX.Direct3D9.AnimationCallbackHandler\"/> *LPD3DXANIMATIONCALLBACKHANDLER;\t\n            </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXAnimationCallbackHandler']/*\"/>\t\n            <msdn-id>bb205624</msdn-id>\t\n            <unmanaged>ID3DXAnimationCallbackHandler</unmanaged>\t\n            <unmanaged-short>ID3DXAnimationCallbackHandler</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.AnimationCallbackHandler.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D9.AnimationCallbackHandler\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.AnimationCallbackHandler.op_Explicit(System.IntPtr)~SharpDX.Direct3D9.AnimationCallbackHandler\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D9.AnimationCallbackHandler\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.AnimationCallbackHandler.HandleCallback(System.Int32,System.IntPtr)\">\n            <summary>\t\n            <p>The application implements this method. This method is called when a callback occurs for an animation set in one of the tracks during a  call to <strong><see cref=\"M:SharpDX.Direct3D9.AnimationController.AdvanceTime(System.Double,SharpDX.Direct3D9.AnimationCallbackHandler)\"/></strong>.</p>\t\n            </summary>\t\n            <param name=\"track\">No documentation.</param>\t\n            <param name=\"callbackDataRef\">No documentation.</param>\t\n            <returns><p>The return values of this method are implemented by an application programmer. In general, if no error occurs, program the method to return <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. Otherwise, program the method to return an appropriate error message  from D3DERR or <strong>D3DXERR</strong>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXAnimationCallbackHandler::HandleCallback']/*\"/>\t\n            <msdn-id>bb205625</msdn-id>\t\n            <unmanaged>HRESULT ID3DXAnimationCallbackHandler::HandleCallback([In] unsigned int Track,[In] void* pCallbackData)</unmanaged>\t\n            <unmanaged-short>ID3DXAnimationCallbackHandler::HandleCallback</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.AnimationController\">\n            <summary>\t\n            <p>This interface is used to control animation functionality, connecting animation sets with the transformation frames that are being animated. The interface has methods to mix multiple animations and to modify blending parameters over time to enable smooth transitions and other effects.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Create an animation controller object with <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateAnimationController(System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.AnimationController@)\"/></strong>.</p><p>The LPD3DXANIMATIONCONTROLLER type is defined as a reference to the <strong><see cref=\"T:SharpDX.Direct3D9.AnimationController\"/></strong> interface. </p><pre><code> typedef interface <see cref=\"T:SharpDX.Direct3D9.AnimationController\"/> <see cref=\"T:SharpDX.Direct3D9.AnimationController\"/>;\t\n            typedef interface <see cref=\"T:SharpDX.Direct3D9.AnimationController\"/> *LPD3DXANIMATIONCONTROLLER;\t\n            </code></pre><p>The D3DXEVENTHANDLE type is defined as an event handle to animation controller events. </p><pre><code> typedef DWORD D3DXEVENTHANDLE;\t\n            </code></pre><p>The LPD3DXEVENTHANDLE type is defined as a reference to an event handle to animation controller events. </p><pre><code> typedef D3DXEVENTHANDLE *LPD3DXEVENTHANDLE;\t\n            </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXAnimationController']/*\"/>\t\n            <msdn-id>bb205626</msdn-id>\t\n            <unmanaged>ID3DXAnimationController</unmanaged>\t\n            <unmanaged-short>ID3DXAnimationController</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.AnimationController.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D9.AnimationController\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.AnimationController.op_Explicit(System.IntPtr)~SharpDX.Direct3D9.AnimationController\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D9.AnimationController\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.AnimationController.GetMaxNumAnimationOutputs\">\n            <summary>\t\n            <p>Get the maximum number of animation outputs the animation controller can support.</p>\t\n            </summary>\t\n            <returns><p>The maximum number of animation outputs the controller can manage.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXAnimationController::GetMaxNumAnimationOutputs']/*\"/>\t\n            <msdn-id>bb205634</msdn-id>\t\n            <unmanaged>unsigned int ID3DXAnimationController::GetMaxNumAnimationOutputs()</unmanaged>\t\n            <unmanaged-short>ID3DXAnimationController::GetMaxNumAnimationOutputs</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.AnimationController.GetMaxNumAnimationSets\">\n            <summary>\t\n            <p>Gets the maximum number of animation sets the animation controller can support.</p>\t\n            </summary>\t\n            <returns><p>The maximum number of animation sets the controller can manage.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXAnimationController::GetMaxNumAnimationSets']/*\"/>\t\n            <msdn-id>bb205635</msdn-id>\t\n            <unmanaged>unsigned int ID3DXAnimationController::GetMaxNumAnimationSets()</unmanaged>\t\n            <unmanaged-short>ID3DXAnimationController::GetMaxNumAnimationSets</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.AnimationController.GetMaxNumTracks\">\n            <summary>\t\n            <p>Gets the maximum number of tracks in the animation controller.</p>\t\n            </summary>\t\n            <returns><p>Number of tracks.</p></returns>\t\n            <remarks>\t\n            <p>The maximum number of tracks the controller can manage.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXAnimationController::GetMaxNumTracks']/*\"/>\t\n            <msdn-id>bb205637</msdn-id>\t\n            <unmanaged>unsigned int ID3DXAnimationController::GetMaxNumTracks()</unmanaged>\t\n            <unmanaged-short>ID3DXAnimationController::GetMaxNumTracks</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.AnimationController.GetMaxNumEvents\">\n            <summary>\t\n            <p>Gets the maximum number of events the animation controller can support.</p>\t\n            </summary>\t\n            <returns><p>The maximum number of events the controller can manage.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXAnimationController::GetMaxNumEvents']/*\"/>\t\n            <msdn-id>bb205636</msdn-id>\t\n            <unmanaged>unsigned int ID3DXAnimationController::GetMaxNumEvents()</unmanaged>\t\n            <unmanaged-short>ID3DXAnimationController::GetMaxNumEvents</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.AnimationController.RegisterAnimationOutput(System.String,SharpDX.Matrix@,SharpDX.Vector3,SharpDX.Quaternion,SharpDX.Vector3)\">\n            <summary>\t\n            <p>Adds an animation output to the animation controller and registers references for scale, rotate, and translate (SRT) transformations.</p>\t\n            </summary>\t\n            <param name=\"nameRef\"><dd>  <p>Name of the animation output.</p> </dd></param>\t\n            <param name=\"matrixRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Matrix\"/></strong> structure containing SRT transformation data. Can be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"scaleRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Vector3\"/></strong> vector that describes the scale of the animation set. Can be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"rotationRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Quaternion\"/></strong> quaternion that describes the rotation of the animation set. Can be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"translationRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Vector3\"/></strong> vector that describes the translation of the animation set. Can be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the return value can be one of the following  values: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>If the animation output is already registered, pMatrix will be filled with the input transformation data.</p><p>Animation sets created with <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.LoadMeshHierarchyFromXW(System.String,System.Int32,SharpDX.Direct3D9.Device,SharpDX.Direct3D9.IAllocateHierarchy,SharpDX.Direct3D9.ILoadUserData,SharpDX.Direct3D9.Frame@,SharpDX.Direct3D9.AnimationController@)\"/></strong> automatically register all loaded animation sets.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXAnimationController::RegisterAnimationOutput']/*\"/>\t\n            <msdn-id>bb205650</msdn-id>\t\n            <unmanaged>HRESULT ID3DXAnimationController::RegisterAnimationOutput([In] const char* pName,[In] D3DXMATRIX* pMatrix,[In] D3DXVECTOR3* pScale,[In] D3DXQUATERNION* pRotation,[In] D3DXVECTOR3* pTranslation)</unmanaged>\t\n            <unmanaged-short>ID3DXAnimationController::RegisterAnimationOutput</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.AnimationController.RegisterAnimationSet(SharpDX.Direct3D9.AnimationSet)\">\n            <summary>\t\n            <p>Adds an animation set to the animation controller.</p>\t\n            </summary>\t\n            <param name=\"animSetRef\"><dd>  <p>Pointer to the <strong><see cref=\"T:SharpDX.Direct3D9.AnimationSet\"/></strong> animation set to add.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the following value will be returned: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXAnimationController::RegisterAnimationSet']/*\"/>\t\n            <msdn-id>bb205651</msdn-id>\t\n            <unmanaged>HRESULT ID3DXAnimationController::RegisterAnimationSet([In] ID3DXAnimationSet* pAnimSet)</unmanaged>\t\n            <unmanaged-short>ID3DXAnimationController::RegisterAnimationSet</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.AnimationController.UnregisterAnimationSet(SharpDX.Direct3D9.AnimationSet)\">\n            <summary>\t\n            <p>Removes an animation set from the animation controller.</p>\t\n            </summary>\t\n            <param name=\"animSetRef\"><dd>  <p>Pointer to the <strong><see cref=\"T:SharpDX.Direct3D9.AnimationSet\"/></strong> animation set to remove.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the return value can be one of the following  values: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.NotFound\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXAnimationController::UnregisterAnimationSet']/*\"/>\t\n            <msdn-id>bb205664</msdn-id>\t\n            <unmanaged>HRESULT ID3DXAnimationController::UnregisterAnimationSet([In] ID3DXAnimationSet* pAnimSet)</unmanaged>\t\n            <unmanaged-short>ID3DXAnimationController::UnregisterAnimationSet</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.AnimationController.GetNumAnimationSets\">\n            <summary>\t\n            <p>Returns the number of animation sets currently registered in the animation controller.</p>\t\n            </summary>\t\n            <returns><p>Number of animation sets.</p></returns>\t\n            <remarks>\t\n            <p>The controller contains any number of animations sets and tracks. Animation sets can be registered with  <strong>RegisterAnimationOutput</strong>.  An animation controller created by a call  to <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.LoadMeshHierarchyFromXW(System.String,System.Int32,SharpDX.Direct3D9.Device,SharpDX.Direct3D9.IAllocateHierarchy,SharpDX.Direct3D9.ILoadUserData,SharpDX.Direct3D9.Frame@,SharpDX.Direct3D9.AnimationController@)\"/></strong> will automatically register loaded animation sets.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXAnimationController::GetNumAnimationSets']/*\"/>\t\n            <msdn-id>bb205638</msdn-id>\t\n            <unmanaged>unsigned int ID3DXAnimationController::GetNumAnimationSets()</unmanaged>\t\n            <unmanaged-short>ID3DXAnimationController::GetNumAnimationSets</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.AnimationController.GetAnimationSet(System.Int32,SharpDX.Direct3D9.AnimationSet@)\">\n            <summary>\t\n            <p>Gets an animation set.</p>\t\n            </summary>\t\n            <param name=\"index\"><dd>  <p>Index of the animation set.</p> </dd></param>\t\n            <param name=\"animationSetOut\"><dd>  <p>Pointer to the <strong><see cref=\"T:SharpDX.Direct3D9.AnimationSet\"/></strong> animation set.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the following value will be returned: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>The animation controller contains an array of animation sets. This method returns one of them at the given index.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXAnimationController::GetAnimationSet']/*\"/>\t\n            <msdn-id>bb205629</msdn-id>\t\n            <unmanaged>HRESULT ID3DXAnimationController::GetAnimationSet([In] unsigned int Index,[Out] ID3DXAnimationSet** ppAnimationSet)</unmanaged>\t\n            <unmanaged-short>ID3DXAnimationController::GetAnimationSet</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.AnimationController.GetAnimationSetByName(System.String,SharpDX.Direct3D9.AnimationSet@)\">\n            <summary>\t\n            <p>Gets an animation set, given its name.</p>\t\n            </summary>\t\n            <param name=\"szName\"><dd>  <p>String containing the name of the animation set.</p> </dd></param>\t\n            <param name=\"animationSetOut\"><dd>  <p>Pointer to the <strong><see cref=\"T:SharpDX.Direct3D9.AnimationSet\"/></strong> animation set.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the following value will be returned: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>The animation controller contains an array of animation sets. This method returns an animation set that has the given name.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXAnimationController::GetAnimationSetByName']/*\"/>\t\n            <msdn-id>bb205630</msdn-id>\t\n            <unmanaged>HRESULT ID3DXAnimationController::GetAnimationSetByName([In] const char* szName,[In] ID3DXAnimationSet** ppAnimationSet)</unmanaged>\t\n            <unmanaged-short>ID3DXAnimationController::GetAnimationSetByName</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.AnimationController.AdvanceTime(System.Double,SharpDX.Direct3D9.AnimationCallbackHandler)\">\n            <summary>\t\n            <p>Animates the mesh and advances the global animation time by a specified amount.</p>\t\n            </summary>\t\n            <param name=\"timeDelta\"><dd>  <p>Amount, in seconds, by which to advance the global animation time. TimeDelta value must be non-negative or zero.</p> </dd></param>\t\n            <param name=\"callbackHandlerRef\"><dd>  <p>Pointer to a user-defined animation callback handler interface, <strong><see cref=\"T:SharpDX.Direct3D9.AnimationCallbackHandler\"/></strong>.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the return value can be one of the following  values: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXAnimationController::AdvanceTime']/*\"/>\t\n            <msdn-id>bb205627</msdn-id>\t\n            <unmanaged>HRESULT ID3DXAnimationController::AdvanceTime([In] double TimeDelta,[In] ID3DXAnimationCallbackHandler* pCallbackHandler)</unmanaged>\t\n            <unmanaged-short>ID3DXAnimationController::AdvanceTime</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.AnimationController.ResetTime\">\n            <summary>\t\n            <p>Resets the global animation time to zero. Any pending events will retain their original schedules, but in the new timeframe.</p>\t\n            </summary>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the following value will be returned: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>This method is typically used when the global animation time value is nearing the maximum precision of DOUBLE storage, or 264 - 1.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXAnimationController::ResetTime']/*\"/>\t\n            <msdn-id>bb205652</msdn-id>\t\n            <unmanaged>HRESULT ID3DXAnimationController::ResetTime()</unmanaged>\t\n            <unmanaged-short>ID3DXAnimationController::ResetTime</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.AnimationController.GetTime\">\n            <summary>\t\n            <p>Gets the global animation time.</p>\t\n            </summary>\t\n            <returns><p>Returns the global animation time.</p></returns>\t\n            <remarks>\t\n            <p>Animations are designed using a local animation time and mixed into global time with <strong>AdvanceTime</strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXAnimationController::GetTime']/*\"/>\t\n            <msdn-id>bb205640</msdn-id>\t\n            <unmanaged>double ID3DXAnimationController::GetTime()</unmanaged>\t\n            <unmanaged-short>ID3DXAnimationController::GetTime</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.AnimationController.SetTrackAnimationSet(System.Int32,SharpDX.Direct3D9.AnimationSet)\">\n            <summary>\t\n            <p>Applies the animation set to the specified track.</p>\t\n            </summary>\t\n            <param name=\"track\"><dd>  <p>Identifier of the track to which the animation set is applied.</p> </dd></param>\t\n            <param name=\"animSetRef\"><dd>  <p>Pointer to the <strong><see cref=\"T:SharpDX.Direct3D9.AnimationSet\"/></strong> animation set to be added to the track.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the return value can be one of the following  values: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>This method sets the animation set to the specified track for mixing.  The animation set for each track is blended according to the  track weight and speed when <strong>AdvanceTime</strong> is called.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXAnimationController::SetTrackAnimationSet']/*\"/>\t\n            <msdn-id>bb205654</msdn-id>\t\n            <unmanaged>HRESULT ID3DXAnimationController::SetTrackAnimationSet([In] unsigned int Track,[In] ID3DXAnimationSet* pAnimSet)</unmanaged>\t\n            <unmanaged-short>ID3DXAnimationController::SetTrackAnimationSet</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.AnimationController.GetTrackAnimationSet(System.Int32,SharpDX.Direct3D9.AnimationSet@)\">\n            <summary>\t\n            <p>Gets the animation set for the given track.</p>\t\n            </summary>\t\n            <param name=\"track\"><dd>  <p>Track identifier.</p> </dd></param>\t\n            <param name=\"animSetOut\"><dd>  <p>Pointer to the <strong><see cref=\"T:SharpDX.Direct3D9.AnimationSet\"/></strong> animation set for the given track.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the return value can be one of the following  values: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXAnimationController::GetTrackAnimationSet']/*\"/>\t\n            <msdn-id>bb205641</msdn-id>\t\n            <unmanaged>HRESULT ID3DXAnimationController::GetTrackAnimationSet([In] unsigned int Track,[Out] ID3DXAnimationSet** ppAnimSet)</unmanaged>\t\n            <unmanaged-short>ID3DXAnimationController::GetTrackAnimationSet</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.AnimationController.SetTrackPriority(System.Int32,SharpDX.Direct3D9.TrackPriority)\">\n            <summary>\t\n            <p>Sets the priority blending weight for the specified animation track.</p>\t\n            </summary>\t\n            <param name=\"track\"><dd>  <p>Track identifier.</p> </dd></param>\t\n            <param name=\"priority\"><dd>  <p>Track priority. This parameter should be set to one of the constants from <strong><see cref=\"T:SharpDX.Direct3D9.TrackPriority\"/></strong>.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the following value will be returned: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXAnimationController::SetTrackPriority']/*\"/>\t\n            <msdn-id>bb205658</msdn-id>\t\n            <unmanaged>HRESULT ID3DXAnimationController::SetTrackPriority([In] unsigned int Track,[In] D3DXPRIORITY_TYPE Priority)</unmanaged>\t\n            <unmanaged-short>ID3DXAnimationController::SetTrackPriority</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.AnimationController.SetTrackSpeed(System.Int32,System.Single)\">\n            <summary>\t\n            <p>Sets the track speed. The track speed is similar to a multiplier that is used to speed up or slow down the playback of the track.</p>\t\n            </summary>\t\n            <param name=\"track\"><dd>  <p>Identifier of the track to set the speed on.</p> </dd></param>\t\n            <param name=\"speed\"><dd>  <p>New speed.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the return value can be one of the following  values: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXAnimationController::SetTrackSpeed']/*\"/>\t\n            <msdn-id>bb205659</msdn-id>\t\n            <unmanaged>HRESULT ID3DXAnimationController::SetTrackSpeed([In] unsigned int Track,[In] float Speed)</unmanaged>\t\n            <unmanaged-short>ID3DXAnimationController::SetTrackSpeed</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.AnimationController.SetTrackWeight(System.Int32,System.Single)\">\n            <summary>\t\n            <p>Sets the track weight. The weight is used to determine how to blend multiple tracks together.</p>\t\n            </summary>\t\n            <param name=\"track\"><dd>  <p>Identifier of the track to set the weight on.</p> </dd></param>\t\n            <param name=\"weight\"><dd>  <p>Weight value.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the return value can be one of the following  values: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXAnimationController::SetTrackWeight']/*\"/>\t\n            <msdn-id>bb205660</msdn-id>\t\n            <unmanaged>HRESULT ID3DXAnimationController::SetTrackWeight([In] unsigned int Track,[In] float Weight)</unmanaged>\t\n            <unmanaged-short>ID3DXAnimationController::SetTrackWeight</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.AnimationController.SetTrackPosition(System.Int32,System.Double)\">\n            <summary>\t\n            <p>Sets the track to the specified local animation time.</p>\t\n            </summary>\t\n            <param name=\"track\"><dd>  <p>Track identifier.</p> </dd></param>\t\n            <param name=\"position\"><dd>  <p>Local animation time value to assign to the track.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the return value can be one of the following  values: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXAnimationController::SetTrackPosition']/*\"/>\t\n            <msdn-id>bb205657</msdn-id>\t\n            <unmanaged>HRESULT ID3DXAnimationController::SetTrackPosition([In] unsigned int Track,[In] double Position)</unmanaged>\t\n            <unmanaged-short>ID3DXAnimationController::SetTrackPosition</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.AnimationController.SetTrackEnable(System.Int32,SharpDX.Bool)\">\n            <summary>\t\n            <p>Enables or disables a track in the animation controller.</p>\t\n            </summary>\t\n            <param name=\"track\"><dd>  <p>Identifier of the track to be mixed.</p> </dd></param>\t\n            <param name=\"enable\"><dd>  <p>Enable value. Set to <strong>TRUE</strong> to enable this track in the controller, or to <strong><see cref=\"F:SharpDX.Result.False\"/></strong> to prevent it from being mixed.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the return value can be one of the following  values: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>To mix a track with other tracks, the Enable flag must be set to <strong>TRUE</strong>. Conversely, setting the flag to <strong><see cref=\"F:SharpDX.Result.False\"/></strong> will prevent the track from being  mixed with other tracks.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXAnimationController::SetTrackEnable']/*\"/>\t\n            <msdn-id>bb205656</msdn-id>\t\n            <unmanaged>HRESULT ID3DXAnimationController::SetTrackEnable([In] unsigned int Track,[In] BOOL Enable)</unmanaged>\t\n            <unmanaged-short>ID3DXAnimationController::SetTrackEnable</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.AnimationController.SetTrackDescription(System.Int32,SharpDX.Direct3D9.TrackDescription@)\">\n            <summary>\t\n            <p>Sets the track description.</p>\t\n            </summary>\t\n            <param name=\"track\"><dd>  <p>Identifier of the track to modify.</p> </dd></param>\t\n            <param name=\"descRef\"><dd>  <p>Description of the track.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the return value can be one of the following  values: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXAnimationController::SetTrackDesc']/*\"/>\t\n            <msdn-id>bb205655</msdn-id>\t\n            <unmanaged>HRESULT ID3DXAnimationController::SetTrackDesc([In] unsigned int Track,[In] D3DXTRACK_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>ID3DXAnimationController::SetTrackDesc</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.AnimationController.GetTrackDescription(System.Int32,SharpDX.Direct3D9.TrackDescription@)\">\n            <summary>\t\n            <p>Gets the track description.</p>\t\n            </summary>\t\n            <param name=\"track\"><dd>  <p>Track identifier.</p> </dd></param>\t\n            <param name=\"descRef\"><dd>  <p>Pointer to the track description. See <strong><see cref=\"T:SharpDX.Direct3D9.TrackDescription\"/></strong>.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the return value can be one of the following  values: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXAnimationController::GetTrackDesc']/*\"/>\t\n            <msdn-id>bb205642</msdn-id>\t\n            <unmanaged>HRESULT ID3DXAnimationController::GetTrackDesc([In] unsigned int Track,[In] D3DXTRACK_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>ID3DXAnimationController::GetTrackDesc</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.AnimationController.SetPriorityBlend(System.Single)\">\n            <summary>\t\n            <p>Sets the priority blending weight used by the animation controller.</p>\t\n            </summary>\t\n            <param name=\"blendWeight\"><dd>  <p>Priority blending weight used by the animation controller.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the return value can be one of the following values: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>The blend weight is used to blend high and low priority tracks together.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXAnimationController::SetPriorityBlend']/*\"/>\t\n            <msdn-id>bb205653</msdn-id>\t\n            <unmanaged>HRESULT ID3DXAnimationController::SetPriorityBlend([In] float BlendWeight)</unmanaged>\t\n            <unmanaged-short>ID3DXAnimationController::SetPriorityBlend</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.AnimationController.GetPriorityBlend\">\n            <summary>\t\n            <p>Gets the current priority blending weight used by the animation controller.</p>\t\n            </summary>\t\n            <returns><p>Returns the current priority blending weight.</p></returns>\t\n            <remarks>\t\n            <p>The priority blending weight is used to blend high and low priority tracks together.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXAnimationController::GetPriorityBlend']/*\"/>\t\n            <msdn-id>bb205639</msdn-id>\t\n            <unmanaged>float ID3DXAnimationController::GetPriorityBlend()</unmanaged>\t\n            <unmanaged-short>ID3DXAnimationController::GetPriorityBlend</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.AnimationController.KeyTrackSpeed(System.Int32,System.Single,System.Double,System.Double,SharpDX.Direct3D9.TransitionType)\">\n            <summary>\t\n            <p>Sets an event key that changes the rate of play of an animation track.</p>\t\n            </summary>\t\n            <param name=\"track\"><dd>  <p>Identifier of the track to modify.</p> </dd></param>\t\n            <param name=\"newSpeed\"><dd>  <p>New speed of the animation track.</p> </dd></param>\t\n            <param name=\"startTime\"><dd>  <p>Global time key. Specifies the global time when the change will take place.</p> </dd></param>\t\n            <param name=\"duration\"><dd>  <p>Transition time, which specifies how long the smooth transition will take to complete.</p> </dd></param>\t\n            <param name=\"transition\"><dd>  <p>Specifies the transition type used for transitioning between speeds. See <strong><see cref=\"T:SharpDX.Direct3D9.TransitionType\"/></strong>.</p> </dd></param>\t\n            <returns><p>Event handle to the priority blend event. <strong><c>null</c></strong> is returned if one or more of the input parameters is invalid, or no free event is available.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXAnimationController::KeyTrackSpeed']/*\"/>\t\n            <msdn-id>bb205648</msdn-id>\t\n            <unmanaged>unsigned int ID3DXAnimationController::KeyTrackSpeed([In] unsigned int Track,[In] float NewSpeed,[In] double StartTime,[In] double Duration,[In] D3DXTRANSITION_TYPE Transition)</unmanaged>\t\n            <unmanaged-short>ID3DXAnimationController::KeyTrackSpeed</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.AnimationController.KeyTrackWeight(System.Int32,System.Single,System.Double,System.Double,SharpDX.Direct3D9.TransitionType)\">\n            <summary>\t\n            <p>Sets an event key that changes the weight of an animation track. The weight is used as a multiplier when combining multiple tracks together.</p>\t\n            </summary>\t\n            <param name=\"track\"><dd>  <p>Identifier of the track to modify.</p> </dd></param>\t\n            <param name=\"newWeight\"><dd>  <p>New weight of the track.</p> </dd></param>\t\n            <param name=\"startTime\"><dd>  <p>Global time key. Specifies the global time when the change will take place.</p> </dd></param>\t\n            <param name=\"duration\"><dd>  <p>Transition time, which specifies how long the smooth transition will take to complete.</p> </dd></param>\t\n            <param name=\"transition\"><dd>  <p>Specifies the transition type used for transitioning between weights. See <strong><see cref=\"T:SharpDX.Direct3D9.TransitionType\"/></strong>.</p> </dd></param>\t\n            <returns><p>Event handle to the priority blend event. <strong><c>null</c></strong> is returned if one or more of the input parameters is invalid, or no free event is available.</p></returns>\t\n            <remarks>\t\n            <p>The weight is used like a multiplier to determine how much of this track to blend together with other tracks.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXAnimationController::KeyTrackWeight']/*\"/>\t\n            <msdn-id>bb205649</msdn-id>\t\n            <unmanaged>unsigned int ID3DXAnimationController::KeyTrackWeight([In] unsigned int Track,[In] float NewWeight,[In] double StartTime,[In] double Duration,[In] D3DXTRANSITION_TYPE Transition)</unmanaged>\t\n            <unmanaged-short>ID3DXAnimationController::KeyTrackWeight</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.AnimationController.KeyTrackPosition(System.Int32,System.Double,System.Double)\">\n            <summary>\t\n            <p>Sets an event key that changes the local time of an animation track.</p>\t\n            </summary>\t\n            <param name=\"track\"><dd>  <p>Identifier of the track to modify.</p> </dd></param>\t\n            <param name=\"newPosition\"><dd>  <p>New local time of the animation track.</p> </dd></param>\t\n            <param name=\"startTime\"><dd>  <p>Global time key. Specifies the global time when the change will take place.</p> </dd></param>\t\n            <returns><p>Event handle to the priority blend event. <strong><c>null</c></strong> is returned if Track is invalid, or if no free event is available.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXAnimationController::KeyTrackPosition']/*\"/>\t\n            <msdn-id>bb205647</msdn-id>\t\n            <unmanaged>unsigned int ID3DXAnimationController::KeyTrackPosition([In] unsigned int Track,[In] double NewPosition,[In] double StartTime)</unmanaged>\t\n            <unmanaged-short>ID3DXAnimationController::KeyTrackPosition</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.AnimationController.KeyTrackEnable(System.Int32,SharpDX.Bool,System.Double)\">\n            <summary>\t\n            <p>Sets an event key that enables or disables an animation track.</p>\t\n            </summary>\t\n            <param name=\"track\"><dd>  <p>Identifier of the animation track to modify.</p> </dd></param>\t\n            <param name=\"newEnable\"><dd>  <p>Enable flag. Set this to <strong>TRUE</strong> to enable the animation track, or to <strong><see cref=\"F:SharpDX.Result.False\"/></strong> to disable the track.</p> </dd></param>\t\n            <param name=\"startTime\"><dd>  <p>Global time key. Specifies the global time when the change will take place.</p> </dd></param>\t\n            <returns><p>Event handle to the priority blend event. <strong><c>null</c></strong> is returned if Track is invalid.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXAnimationController::KeyTrackEnable']/*\"/>\t\n            <msdn-id>bb205646</msdn-id>\t\n            <unmanaged>unsigned int ID3DXAnimationController::KeyTrackEnable([In] unsigned int Track,[In] BOOL NewEnable,[In] double StartTime)</unmanaged>\t\n            <unmanaged-short>ID3DXAnimationController::KeyTrackEnable</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.AnimationController.KeyPriorityBlend(System.Single,System.Double,System.Double,SharpDX.Direct3D9.TransitionType)\">\n            <summary>\t\n            <p>Sets blending event keys for the specified animation track.</p>\t\n            </summary>\t\n            <param name=\"newBlendWeight\"><dd>  <p>Number between 0 and 1 that is used to blend tracks together.</p> </dd></param>\t\n            <param name=\"startTime\"><dd>  <p>Global time to start the blend.</p> </dd></param>\t\n            <param name=\"duration\"><dd>  <p>Global time duration of the blend.</p> </dd></param>\t\n            <param name=\"transition\"><dd>  <p>Specifies the transition type used for the duration of the blend. See <strong><see cref=\"T:SharpDX.Direct3D9.TransitionType\"/></strong>.</p> </dd></param>\t\n            <returns><p>Event handle to the priority blend event. <strong><c>null</c></strong> is returned if one or more of the input parameters is invalid, or no free event is available.</p></returns>\t\n            <remarks>\t\n            <p>The animation controller blends in three phases: low priority tracks are blended first, high priority tracks are blended second, and  then the results of both are blended.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXAnimationController::KeyPriorityBlend']/*\"/>\t\n            <msdn-id>bb205645</msdn-id>\t\n            <unmanaged>unsigned int ID3DXAnimationController::KeyPriorityBlend([In] float NewBlendWeight,[In] double StartTime,[In] double Duration,[In] D3DXTRANSITION_TYPE Transition)</unmanaged>\t\n            <unmanaged-short>ID3DXAnimationController::KeyPriorityBlend</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.AnimationController.UnkeyEvent(System.Int32)\">\n            <summary>\t\n            <p>Removes a specified event from an animation track, preventing the execution of the event.</p>\t\n            </summary>\t\n            <param name=\"hEvent\"><dd>  <p>Event handle to the event to be removed from the animation track.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the following value will be returned: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXAnimationController::UnkeyEvent']/*\"/>\t\n            <msdn-id>bb205663</msdn-id>\t\n            <unmanaged>HRESULT ID3DXAnimationController::UnkeyEvent([In] unsigned int hEvent)</unmanaged>\t\n            <unmanaged-short>ID3DXAnimationController::UnkeyEvent</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.AnimationController.UnkeyAllTrackEvents(System.Int32)\">\n            <summary>\t\n            <p>Removes all events from a specified animation track.</p>\t\n            </summary>\t\n            <param name=\"track\"><dd>  <p>Identifier of the track on which all events should be removed.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the following value will be returned: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>This method prevents the execution of all events previously scheduled on the track, and discards all data associated with those events.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXAnimationController::UnkeyAllTrackEvents']/*\"/>\t\n            <msdn-id>bb205662</msdn-id>\t\n            <unmanaged>HRESULT ID3DXAnimationController::UnkeyAllTrackEvents([In] unsigned int Track)</unmanaged>\t\n            <unmanaged-short>ID3DXAnimationController::UnkeyAllTrackEvents</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.AnimationController.UnkeyAllPriorityBlends\">\n            <summary>\t\n            <p>Removes all scheduled priority blend events from the animation controller.</p>\t\n            </summary>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the following value will be returned: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXAnimationController::UnkeyAllPriorityBlends']/*\"/>\t\n            <msdn-id>bb205661</msdn-id>\t\n            <unmanaged>HRESULT ID3DXAnimationController::UnkeyAllPriorityBlends()</unmanaged>\t\n            <unmanaged-short>ID3DXAnimationController::UnkeyAllPriorityBlends</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.AnimationController.GetCurrentTrackEvent(System.Int32,SharpDX.Direct3D9.EventType)\">\n            <summary>\t\n            <p>Returns an event handle to the event currently running on the specified animation track.</p>\t\n            </summary>\t\n            <param name=\"track\"><dd>  <p>Track identifier.</p> </dd></param>\t\n            <param name=\"eventType\"><dd>  <p>Type of event to query.</p> </dd></param>\t\n            <returns><p>Event handle to the event currently running on the specified track. <strong><c>null</c></strong> is returned if no event is running on the specified track.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXAnimationController::GetCurrentTrackEvent']/*\"/>\t\n            <msdn-id>bb205632</msdn-id>\t\n            <unmanaged>unsigned int ID3DXAnimationController::GetCurrentTrackEvent([In] unsigned int Track,[In] D3DXEVENT_TYPE EventType)</unmanaged>\t\n            <unmanaged-short>ID3DXAnimationController::GetCurrentTrackEvent</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.AnimationController.GetCurrentPriorityBlend\">\n            <summary>\t\n            <p>Returns an event handle to a priority blend event that is currently running.</p>\t\n            </summary>\t\n            <returns><p>Event handle to the currently running priority blend event. <strong><c>null</c></strong> is returned if no priority blend event is currently running.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXAnimationController::GetCurrentPriorityBlend']/*\"/>\t\n            <msdn-id>bb205631</msdn-id>\t\n            <unmanaged>unsigned int ID3DXAnimationController::GetCurrentPriorityBlend()</unmanaged>\t\n            <unmanaged-short>ID3DXAnimationController::GetCurrentPriorityBlend</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.AnimationController.GetUpcomingTrackEvent(System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Returns an event handle to the next event scheduled to occur after a specified event on an animation track.</p>\t\n            </summary>\t\n            <param name=\"track\"><dd>  <p>Track identifier.</p> </dd></param>\t\n            <param name=\"hEvent\"><dd>  <p>Event handle to a specified event after which to search for a following event. If set to <strong><c>null</c></strong>, then the method will return the next scheduled event.</p> </dd></param>\t\n            <returns><p>Event handle to the next event scheduled to run on the specified track. <strong><c>null</c></strong> is returned if no new event is scheduled.</p></returns>\t\n            <remarks>\t\n            <p>This method can be used iteratively to locate a desired event by repeatedly passing in <strong><c>null</c></strong> for hEvent.</p><p><strong>Note</strong>??Do not iterate further after the method has returned <strong><c>null</c></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXAnimationController::GetUpcomingTrackEvent']/*\"/>\t\n            <msdn-id>bb205644</msdn-id>\t\n            <unmanaged>unsigned int ID3DXAnimationController::GetUpcomingTrackEvent([In] unsigned int Track,[In] unsigned int hEvent)</unmanaged>\t\n            <unmanaged-short>ID3DXAnimationController::GetUpcomingTrackEvent</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.AnimationController.GetUpcomingPriorityBlend(System.Int32)\">\n            <summary>\t\n            <p>Returns an event handle to the next priority blend event scheduled to occur after a specified event.</p>\t\n            </summary>\t\n            <param name=\"hEvent\"><dd>  <p>Event handle to a specified event after which to search for a following priority blend event. If set to <strong><c>null</c></strong>, then the method will  return the next scheduled priority blend event.</p> </dd></param>\t\n            <returns><p>Event handle to the next scheduled priority blend event. <strong><c>null</c></strong> is returned if no new priority blend event is scheduled.</p></returns>\t\n            <remarks>\t\n            <p>This method can be used iteratively to locate a desired priority blend event by repeatedly passing in <strong><c>null</c></strong> for hEvent.</p><p><strong>Note</strong>??Do not iterate further after the method has returned <strong><c>null</c></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXAnimationController::GetUpcomingPriorityBlend']/*\"/>\t\n            <msdn-id>bb205643</msdn-id>\t\n            <unmanaged>unsigned int ID3DXAnimationController::GetUpcomingPriorityBlend([In] unsigned int hEvent)</unmanaged>\t\n            <unmanaged-short>ID3DXAnimationController::GetUpcomingPriorityBlend</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.AnimationController.ValidateEvent(System.Int32)\">\n            <summary>\t\n            <p>Checks whether a specified event handle is valid and the animation event has not yet completed.</p>\t\n            </summary>\t\n            <param name=\"hEvent\"><dd>  <p>Event handle to an animation event.</p> </dd></param>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if the event handle is valid and the event has not yet completed.</p><p>Returns E_FAIL if the event handle is invalid and/or the event has completed.</p></returns>\t\n            <remarks>\t\n            <p>The method will indicate that an event handle is valid even if the event is running but has not yet completed.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXAnimationController::ValidateEvent']/*\"/>\t\n            <msdn-id>bb205665</msdn-id>\t\n            <unmanaged>HRESULT ID3DXAnimationController::ValidateEvent([In] unsigned int hEvent)</unmanaged>\t\n            <unmanaged-short>ID3DXAnimationController::ValidateEvent</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.AnimationController.GetEventDescription(System.Int32,SharpDX.Direct3D9.EventDescription@)\">\n            <summary>\t\n            <p>Gets a description of a specified animation event.</p>\t\n            </summary>\t\n            <param name=\"hEvent\"><dd>  <p>Event handle to an animation event to describe.</p> </dd></param>\t\n            <param name=\"descRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.EventDescription\"/></strong> structure that contains a description of the animation event.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the following value will be returned: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXAnimationController::GetEventDesc']/*\"/>\t\n            <msdn-id>bb205633</msdn-id>\t\n            <unmanaged>HRESULT ID3DXAnimationController::GetEventDesc([In] unsigned int hEvent,[In] D3DXEVENT_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>ID3DXAnimationController::GetEventDesc</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.AnimationController.CloneAnimationController(System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.AnimationController@)\">\n            <summary>\t\n            <p>Clones, or copies, an animation controller.</p>\t\n            </summary>\t\n            <param name=\"maxNumAnimationOutputs\"><dd>  <p>Maximum number of animation outputs the controller can support.</p> </dd></param>\t\n            <param name=\"maxNumAnimationSets\"><dd>  <p>Maximum number of animation sets the controller can support.</p> </dd></param>\t\n            <param name=\"maxNumTracks\"><dd>  <p>Maximum number of tracks the controller can support.</p> </dd></param>\t\n            <param name=\"maxNumEvents\"><dd>  <p>Maximum number of events the controller can support.</p> </dd></param>\t\n            <param name=\"animControllerOut\"><dd>  <p>Address of a reference to the cloned <strong><see cref=\"T:SharpDX.Direct3D9.AnimationController\"/></strong> animation controller.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the return value can be one of the following  values: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXAnimationController::CloneAnimationController']/*\"/>\t\n            <msdn-id>bb205628</msdn-id>\t\n            <unmanaged>HRESULT ID3DXAnimationController::CloneAnimationController([In] unsigned int MaxNumAnimationOutputs,[In] unsigned int MaxNumAnimationSets,[In] unsigned int MaxNumTracks,[In] unsigned int MaxNumEvents,[In] ID3DXAnimationController** ppAnimController)</unmanaged>\t\n            <unmanaged-short>ID3DXAnimationController::CloneAnimationController</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.AnimationController.MaxNumAnimationOutputs\">\n            <summary>\t\n            <p>Get the maximum number of animation outputs the animation controller can support.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXAnimationController::GetMaxNumAnimationOutputs']/*\"/>\t\n            <msdn-id>bb205634</msdn-id>\t\n            <unmanaged>GetMaxNumAnimationOutputs</unmanaged>\t\n            <unmanaged-short>GetMaxNumAnimationOutputs</unmanaged-short>\t\n            <unmanaged>unsigned int ID3DXAnimationController::GetMaxNumAnimationOutputs()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.AnimationController.MaxNumAnimationSets\">\n            <summary>\t\n            <p>Gets the maximum number of animation sets the animation controller can support.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXAnimationController::GetMaxNumAnimationSets']/*\"/>\t\n            <msdn-id>bb205635</msdn-id>\t\n            <unmanaged>GetMaxNumAnimationSets</unmanaged>\t\n            <unmanaged-short>GetMaxNumAnimationSets</unmanaged-short>\t\n            <unmanaged>unsigned int ID3DXAnimationController::GetMaxNumAnimationSets()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.AnimationController.MaxNumTracks\">\n            <summary>\t\n            <p>Gets the maximum number of tracks in the animation controller.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The maximum number of tracks the controller can manage.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXAnimationController::GetMaxNumTracks']/*\"/>\t\n            <msdn-id>bb205637</msdn-id>\t\n            <unmanaged>GetMaxNumTracks</unmanaged>\t\n            <unmanaged-short>GetMaxNumTracks</unmanaged-short>\t\n            <unmanaged>unsigned int ID3DXAnimationController::GetMaxNumTracks()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.AnimationController.MaxNumEvents\">\n            <summary>\t\n            <p>Gets the maximum number of events the animation controller can support.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXAnimationController::GetMaxNumEvents']/*\"/>\t\n            <msdn-id>bb205636</msdn-id>\t\n            <unmanaged>GetMaxNumEvents</unmanaged>\t\n            <unmanaged-short>GetMaxNumEvents</unmanaged-short>\t\n            <unmanaged>unsigned int ID3DXAnimationController::GetMaxNumEvents()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.AnimationController.NumAnimationSets\">\n            <summary>\t\n            <p>Returns the number of animation sets currently registered in the animation controller.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The controller contains any number of animations sets and tracks. Animation sets can be registered with  <strong>RegisterAnimationOutput</strong>.  An animation controller created by a call  to <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.LoadMeshHierarchyFromXW(System.String,System.Int32,SharpDX.Direct3D9.Device,SharpDX.Direct3D9.IAllocateHierarchy,SharpDX.Direct3D9.ILoadUserData,SharpDX.Direct3D9.Frame@,SharpDX.Direct3D9.AnimationController@)\"/></strong> will automatically register loaded animation sets.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXAnimationController::GetNumAnimationSets']/*\"/>\t\n            <msdn-id>bb205638</msdn-id>\t\n            <unmanaged>GetNumAnimationSets</unmanaged>\t\n            <unmanaged-short>GetNumAnimationSets</unmanaged-short>\t\n            <unmanaged>unsigned int ID3DXAnimationController::GetNumAnimationSets()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.AnimationController.Time\">\n            <summary>\t\n            <p>Gets the global animation time.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Animations are designed using a local animation time and mixed into global time with <strong>AdvanceTime</strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXAnimationController::GetTime']/*\"/>\t\n            <msdn-id>bb205640</msdn-id>\t\n            <unmanaged>GetTime</unmanaged>\t\n            <unmanaged-short>GetTime</unmanaged-short>\t\n            <unmanaged>double ID3DXAnimationController::GetTime()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.AnimationController.PriorityBlend\">\n            <summary>\t\n            <p>Gets or sets the current priority blending weight used by the animation controller.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The priority blending weight is used to blend high and low priority tracks together.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXAnimationController::GetPriorityBlend']/*\"/>\t\n            <msdn-id>bb205639</msdn-id>\t\n            <unmanaged>GetPriorityBlend / SetPriorityBlend</unmanaged>\t\n            <unmanaged-short>GetPriorityBlend</unmanaged-short>\t\n            <unmanaged>float ID3DXAnimationController::GetPriorityBlend()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.AnimationController.CurrentPriorityBlend\">\n            <summary>\t\n            <p>Returns an event handle to a priority blend event that is currently running.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXAnimationController::GetCurrentPriorityBlend']/*\"/>\t\n            <msdn-id>bb205631</msdn-id>\t\n            <unmanaged>GetCurrentPriorityBlend</unmanaged>\t\n            <unmanaged-short>GetCurrentPriorityBlend</unmanaged-short>\t\n            <unmanaged>unsigned int ID3DXAnimationController::GetCurrentPriorityBlend()</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.AnimationSet\">\n            <summary>\t\n            <p>This interface encapsulates the minimum functionality required of an animation set by an animation controller. Advanced users might want to implement this interface themselves to suit their specialized needs; for most users, however, the derived <strong><see cref=\"T:SharpDX.Direct3D9.CompressedAnimationSet\"/></strong> and <strong><see cref=\"T:SharpDX.Direct3D9.KeyframedAnimationSet\"/></strong> interfaces should suffice.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>An animation set consists of animations for many nodes for the same animation.</p><p>The LPD3DXANIMATIONSET type is defined as a reference to this interface. </p><pre><code> typedef interface <see cref=\"T:SharpDX.Direct3D9.AnimationSet\"/> <see cref=\"T:SharpDX.Direct3D9.AnimationSet\"/>;\t\n            typedef interface <see cref=\"T:SharpDX.Direct3D9.AnimationSet\"/> *LPD3DXANIMATIONSET;\t\n            </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXAnimationSet']/*\"/>\t\n            <msdn-id>bb205667</msdn-id>\t\n            <unmanaged>ID3DXAnimationSet</unmanaged>\t\n            <unmanaged-short>ID3DXAnimationSet</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.AnimationSet.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D9.AnimationSet\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.AnimationSet.op_Explicit(System.IntPtr)~SharpDX.Direct3D9.AnimationSet\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D9.AnimationSet\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.AnimationSet.GetName\">\n            <summary>\t\n            <p>Gets the animation set name.</p>\t\n            </summary>\t\n            <returns><p>Name of the animation set.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXAnimationSet::GetName']/*\"/>\t\n            <msdn-id>bb205671</msdn-id>\t\n            <unmanaged>const char* ID3DXAnimationSet::GetName()</unmanaged>\t\n            <unmanaged-short>ID3DXAnimationSet::GetName</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.AnimationSet.GetPeriod\">\n            <summary>\t\n            <p>Gets the period of the animation set.</p>\t\n            </summary>\t\n            <returns><p>Period of the animation set.</p></returns>\t\n            <remarks>\t\n            <p>The period is the range of time that the animation key frames are valid. For looping animations, this is the period of the loop. The time units that the key frames are specified in (for example, seconds) is determined by the application. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXAnimationSet::GetPeriod']/*\"/>\t\n            <msdn-id>bb205673</msdn-id>\t\n            <unmanaged>double ID3DXAnimationSet::GetPeriod()</unmanaged>\t\n            <unmanaged-short>ID3DXAnimationSet::GetPeriod</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.AnimationSet.GetPeriodicPosition(System.Double)\">\n            <summary>\t\n            <p>Returns time position in the local timeframe of an animation set.</p>\t\n            </summary>\t\n            <param name=\"position\"><dd>  <p>Local time of the animation set.</p> </dd></param>\t\n            <returns><p>Time position as measured in the timeframe of the animation set. This value will be bounded by the period of the animation set.</p></returns>\t\n            <remarks>\t\n            <p>The time position returned by this method can be used as the PeriodicPosition parameter of <strong><see cref=\"M:SharpDX.Direct3D9.AnimationSet.GetSRT(System.Double,System.Int32,SharpDX.Vector3@,SharpDX.Quaternion@,SharpDX.Vector3@)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXAnimationSet::GetPeriodicPosition']/*\"/>\t\n            <msdn-id>bb205674</msdn-id>\t\n            <unmanaged>double ID3DXAnimationSet::GetPeriodicPosition([In] double Position)</unmanaged>\t\n            <unmanaged-short>ID3DXAnimationSet::GetPeriodicPosition</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.AnimationSet.GetNumAnimations\">\n            <summary>\t\n            <p>Gets the number of animations in the animation set.</p>\t\n            </summary>\t\n            <returns><p>Number of animations in the animation set.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXAnimationSet::GetNumAnimations']/*\"/>\t\n            <msdn-id>bb205672</msdn-id>\t\n            <unmanaged>unsigned int ID3DXAnimationSet::GetNumAnimations()</unmanaged>\t\n            <unmanaged-short>ID3DXAnimationSet::GetNumAnimations</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.AnimationSet.GetAnimationNameByIndex(System.Int32,System.String)\">\n            <summary>\t\n            <p>Gets the name of an animation, given its index.</p>\t\n            </summary>\t\n            <param name=\"index\"><dd>  <p>Index of the animation.</p> </dd></param>\t\n            <param name=\"nameOut\"><dd>  <p>Address of a reference to a string that receives the animation name.</p> </dd></param>\t\n            <returns><p>The return values of this method are implemented by an application programmer.In general, if no error occurs, program the method to return <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. Otherwise, program the method to return an appropriate error message from D3DERR or <strong>D3DXERR</strong>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXAnimationSet::GetAnimationNameByIndex']/*\"/>\t\n            <msdn-id>bb205669</msdn-id>\t\n            <unmanaged>HRESULT ID3DXAnimationSet::GetAnimationNameByIndex([In] unsigned int Index,[In] const char** ppName)</unmanaged>\t\n            <unmanaged-short>ID3DXAnimationSet::GetAnimationNameByIndex</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.AnimationSet.GetAnimationIndexByName(System.String,System.Int32)\">\n            <summary>\t\n            <p>Gets the index of an animation, given its name.</p>\t\n            </summary>\t\n            <param name=\"nameRef\"><dd>  <p>Name of the animation.</p> </dd></param>\t\n            <param name=\"indexRef\"><dd>  <p>Pointer to the animation index.</p> </dd></param>\t\n            <returns><p>The return values of this method are implemented by an application programmer.In general, if no error occurs, program the method to return <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. Otherwise, program the method to return an appropriate error message from D3DERR or <strong>D3DXERR</strong>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXAnimationSet::GetAnimationIndexByName']/*\"/>\t\n            <msdn-id>bb205668</msdn-id>\t\n            <unmanaged>HRESULT ID3DXAnimationSet::GetAnimationIndexByName([In] const char* pName,[In] unsigned int* pIndex)</unmanaged>\t\n            <unmanaged-short>ID3DXAnimationSet::GetAnimationIndexByName</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.AnimationSet.GetSRT(System.Double,System.Int32,SharpDX.Vector3@,SharpDX.Quaternion@,SharpDX.Vector3@)\">\n            <summary>\t\n            <p>Gets the scale, rotation, and translation values of the animation set.</p>\t\n            </summary>\t\n            <param name=\"periodicPosition\"><dd>  <p>Position of the animation set. The position can be obtained by calling <strong><see cref=\"M:SharpDX.Direct3D9.AnimationSet.GetPeriodicPosition(System.Double)\"/></strong>.</p> </dd></param>\t\n            <param name=\"animation\"><dd>  <p>Animation index.</p> </dd></param>\t\n            <param name=\"scaleRef\"><dd>  <p>Pointer to the <strong><see cref=\"T:SharpDX.Vector3\"/></strong> vector that describes the scale of the animation set.</p> </dd></param>\t\n            <param name=\"rotationRef\"><dd>  <p>Pointer to the <strong><see cref=\"T:SharpDX.Quaternion\"/></strong> quaternion that describes the rotation of the animation set.</p> </dd></param>\t\n            <param name=\"translationRef\"><dd>  <p>Pointer to the <strong><see cref=\"T:SharpDX.Vector3\"/></strong> vector that describes the translation of the animation set.</p> </dd></param>\t\n            <returns><p>The return values of this method are implemented by an application programmer.In general, if no error occurs, program the method to return <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. Otherwise, program the method to return an appropriate error message from D3DERR or <strong>D3DXERR</strong>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXAnimationSet::GetSRT']/*\"/>\t\n            <msdn-id>bb205675</msdn-id>\t\n            <unmanaged>HRESULT ID3DXAnimationSet::GetSRT([In] double PeriodicPosition,[In] unsigned int Animation,[Out] D3DXVECTOR3* pScale,[Out] D3DXQUATERNION* pRotation,[Out] D3DXVECTOR3* pTranslation)</unmanaged>\t\n            <unmanaged-short>ID3DXAnimationSet::GetSRT</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.AnimationSet.GetCallback(System.Double,System.Int32,System.Double@,System.IntPtr)\">\n            <summary>\t\n            <p>Gets information about a specific callback in the animation set.</p>\t\n            </summary>\t\n            <param name=\"position\"><dd>  <p>Position from which to find callbacks.</p> </dd></param>\t\n            <param name=\"flags\"><dd>  <p>Callback search flags. This parameter can be set to a combination of one or more flags from <strong><see cref=\"T:SharpDX.Direct3D9.CallbackSearchFlags\"/></strong>.</p> </dd></param>\t\n            <param name=\"callbackPositionRef\"><dd>  <p>Pointer to the position of the callback.</p> </dd></param>\t\n            <param name=\"callbackDataOut\"><dd>  <p>Address of the callback data reference.</p> </dd></param>\t\n            <returns><p>The return values of this method are implemented by an application programmer.In general, if no error occurs, program the method to return <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. Otherwise, program the method to return an appropriate error message from D3DERR or <strong>D3DXERR</strong>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXAnimationSet::GetCallback']/*\"/>\t\n            <msdn-id>bb205670</msdn-id>\t\n            <unmanaged>HRESULT ID3DXAnimationSet::GetCallback([In] double Position,[In] unsigned int Flags,[Out] double* pCallbackPosition,[In] void** ppCallbackData)</unmanaged>\t\n            <unmanaged-short>ID3DXAnimationSet::GetCallback</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.AnimationSet.Name\">\n            <summary>\t\n            <p>Gets the animation set name.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXAnimationSet::GetName']/*\"/>\t\n            <msdn-id>bb205671</msdn-id>\t\n            <unmanaged>GetName</unmanaged>\t\n            <unmanaged-short>GetName</unmanaged-short>\t\n            <unmanaged>const char* ID3DXAnimationSet::GetName()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.AnimationSet.Period\">\n            <summary>\t\n            <p>Gets the period of the animation set.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The period is the range of time that the animation key frames are valid. For looping animations, this is the period of the loop. The time units that the key frames are specified in (for example, seconds) is determined by the application. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXAnimationSet::GetPeriod']/*\"/>\t\n            <msdn-id>bb205673</msdn-id>\t\n            <unmanaged>GetPeriod</unmanaged>\t\n            <unmanaged-short>GetPeriod</unmanaged-short>\t\n            <unmanaged>double ID3DXAnimationSet::GetPeriod()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.AnimationSet.NumAnimations\">\n            <summary>\t\n            <p>Gets the number of animations in the animation set.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXAnimationSet::GetNumAnimations']/*\"/>\t\n            <msdn-id>bb205672</msdn-id>\t\n            <unmanaged>GetNumAnimations</unmanaged>\t\n            <unmanaged-short>GetNumAnimations</unmanaged-short>\t\n            <unmanaged>unsigned int ID3DXAnimationSet::GetNumAnimations()</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.BaseMesh\">\n            <summary>\t\n            <p>Applications use the methods of the <strong><see cref=\"T:SharpDX.Direct3D9.BaseMesh\"/></strong> interface to manipulate and query mesh and progressive mesh objects.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>A mesh is an object made up of a set of polygonal faces. A mesh defines a set of vertices and a set of faces (the faces are defined in terms of the vertices and normals of the mesh).</p><p>The LPD3DXBASEMESH type is defined as a reference to the <strong><see cref=\"T:SharpDX.Direct3D9.BaseMesh\"/></strong> interface. </p><pre><code> typedef struct <see cref=\"T:SharpDX.Direct3D9.BaseMesh\"/> *LPD3DXBASEMESH;\t\n            </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXBaseMesh']/*\"/>\t\n            <msdn-id>bb205731</msdn-id>\t\n            <unmanaged>ID3DXBaseMesh</unmanaged>\t\n            <unmanaged-short>ID3DXBaseMesh</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseMesh.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D9.BaseMesh\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseMesh.op_Explicit(System.IntPtr)~SharpDX.Direct3D9.BaseMesh\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D9.BaseMesh\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseMesh.DrawSubset(System.Int32)\">\n            <summary>\t\n            <p>Draws a subset of a mesh.</p>\t\n            </summary>\t\n            <param name=\"attribId\"><dd>  <p> DWORD that specifies which subset of the mesh to draw. This value is used to differentiate faces in a mesh as belonging to one or more attribute groups.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>The subset that is specified by AttribId will be rendered by the <strong><see cref=\"M:SharpDX.Direct3D9.Device.DrawIndexedPrimitive(SharpDX.Direct3D9.PrimitiveType,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32)\"/></strong> method, using the <see cref=\"F:SharpDX.Direct3D9.PrimitiveType.TriangleList\"/> primitive type, so an index buffer must be properly initialized.</p><p>An attribute table is used to identify areas of the mesh that need to be drawn with different textures, render states, materials, and so on. In addition, the application can use the attribute table to hide portions of a mesh by not drawing a given attribute identifier (<em>AttribId</em>) when drawing the frame.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXBaseMesh::DrawSubset']/*\"/>\t\n            <msdn-id>bb205736</msdn-id>\t\n            <unmanaged>HRESULT ID3DXBaseMesh::DrawSubset([In] unsigned int AttribId)</unmanaged>\t\n            <unmanaged-short>ID3DXBaseMesh::DrawSubset</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseMesh.GetNumFaces\">\n            <summary>\t\n            <p>Retrieves the number of faces in the mesh.</p>\t\n            </summary>\t\n            <returns><p>Returns the number of faces in the mesh.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXBaseMesh::GetNumFaces']/*\"/>\t\n            <msdn-id>bb205744</msdn-id>\t\n            <unmanaged>unsigned int ID3DXBaseMesh::GetNumFaces()</unmanaged>\t\n            <unmanaged-short>ID3DXBaseMesh::GetNumFaces</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseMesh.GetNumVertices\">\n            <summary>\t\n            <p>Retrieves the number of vertices in the mesh.</p>\t\n            </summary>\t\n            <returns><p>Returns the number of vertices in the mesh.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXBaseMesh::GetNumVertices']/*\"/>\t\n            <msdn-id>bb205745</msdn-id>\t\n            <unmanaged>unsigned int ID3DXBaseMesh::GetNumVertices()</unmanaged>\t\n            <unmanaged-short>ID3DXBaseMesh::GetNumVertices</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseMesh.GetFVF\">\n            <summary>\t\n            <p>Gets the fixed function vertex value.</p>\t\n            </summary>\t\n            <returns><p>Returns the flexible vertex format (FVF) codes.</p></returns>\t\n            <remarks>\t\n            <p>This method can return 0 if the vertex format cannot be mapped directly to an FVF code.  This will occur for a mesh created from a vertex declaration that doesn't have the same order and elements supported by the FVF codes.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXBaseMesh::GetFVF']/*\"/>\t\n            <msdn-id>bb205741</msdn-id>\t\n            <unmanaged>unsigned int ID3DXBaseMesh::GetFVF()</unmanaged>\t\n            <unmanaged-short>ID3DXBaseMesh::GetFVF</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseMesh.GetDeclaration(SharpDX.Direct3D9.VertexElement)\">\n            <summary>\t\n            <p>Retrieves a declaration describing the vertices in the mesh.</p>\t\n            </summary>\t\n            <param name=\"declaration\"><dd>  <p>Array of <strong><see cref=\"T:SharpDX.Direct3D9.VertexElement\"/></strong> elements describing the vertex format of the mesh vertices. The upper limit of this declarator array is <strong><see cref=\"F:SharpDX.Direct3D9.VertexFormatDeclaratorCount.Max\"/></strong>. The vertex element array ends with the <strong>D3DDECL_END</strong> macro. </p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>The array of elements includes the <strong>D3DDECL_END</strong> macro, which ends the declaration.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXBaseMesh::GetDeclaration']/*\"/>\t\n            <msdn-id>bb205739</msdn-id>\t\n            <unmanaged>HRESULT ID3DXBaseMesh::GetDeclaration([In] D3DVERTEXELEMENT9* Declaration)</unmanaged>\t\n            <unmanaged-short>ID3DXBaseMesh::GetDeclaration</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseMesh.GetNumBytesPerVertex\">\n            <summary>\t\n            <p>Gets the number of bytes per vertex.</p>\t\n            </summary>\t\n            <returns><p>Returns the number of bytes per vertex.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXBaseMesh::GetNumBytesPerVertex']/*\"/>\t\n            <msdn-id>bb205743</msdn-id>\t\n            <unmanaged>unsigned int ID3DXBaseMesh::GetNumBytesPerVertex()</unmanaged>\t\n            <unmanaged-short>ID3DXBaseMesh::GetNumBytesPerVertex</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseMesh.GetOptions\">\n            <summary>\t\n            <p>Retrieves the mesh options enabled for this mesh at creation time.</p>\t\n            </summary>\t\n            <returns><p>Returns a combination of one or more of the following flags, indicating the options enabled for this mesh at creation time.</p><table> <tr><th>Value</th><th>Description</th></tr> <tr><td><see cref=\"F:SharpDX.Direct3D9.MeshFlags.Use32Bit\"/></td><td>Use 32-bit indices.</td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D9.MeshFlags.DoNotClip\"/></td><td>Use the <see cref=\"F:SharpDX.Direct3D9.Usage.DoNotClip\"/> usage flag for vertex and index buffers.</td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D9.MeshFlags.Dynamic\"/></td><td>Equivalent to specifying both <see cref=\"F:SharpDX.Direct3D9.MeshFlags.VertexBufferDynamic\"/> and <see cref=\"F:SharpDX.Direct3D9.MeshFlags.IndexBufferDynamic\"/>.</td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D9.MeshFlags.RTPatches\"/></td><td>Use the <see cref=\"F:SharpDX.Direct3D9.Usage.RTPatches\"/> usage flag for vertex and index buffers.</td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D9.MeshFlags.NPatches\"/></td><td>Specifying this flag causes the vertex and index buffer of the mesh to be created with <see cref=\"F:SharpDX.Direct3D9.Usage.NPatches\"/> flag. This is required if the mesh object is to be rendered using N-Patch enhancement.</td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D9.MeshFlags.Managed\"/></td><td>Equivalent to specifying both <see cref=\"F:SharpDX.Direct3D9.MeshFlags.VertexBufferManaged\"/> and <see cref=\"F:SharpDX.Direct3D9.MeshFlags.IndexBufferManaged\"/>.</td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D9.MeshFlags.Points\"/></td><td>Use the <see cref=\"F:SharpDX.Direct3D9.Usage.Points\"/> usage flag for vertex and index buffers.</td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D9.MeshFlags.IndexBufferDynamic\"/></td><td>Use the <see cref=\"F:SharpDX.Direct3D9.Usage.Dynamic\"/> usage flag for index buffers.</td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D9.MeshFlags.IndexBufferManaged\"/></td><td>Use the <see cref=\"F:SharpDX.Direct3D9.Pool.Managed\"/> memory class for index buffers.</td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D9.MeshFlags.IndexBufferSystemMemory\"/></td><td>Use the <see cref=\"F:SharpDX.Direct3D9.Pool.SystemMemory\"/> memory class for index buffers.</td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D9.MeshFlags.IndexBufferWriteOnly\"/></td><td>Use the <see cref=\"F:SharpDX.Direct3D9.Usage.WriteOnly\"/> usage flag for index buffers.</td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D9.MeshFlags.SystemMemory\"/></td><td>Equivalent to specifying both <see cref=\"F:SharpDX.Direct3D9.MeshFlags.VertexBufferSystemMemory\"/> and <see cref=\"F:SharpDX.Direct3D9.MeshFlags.IndexBufferSystemMemory\"/>.</td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D9.MeshFlags.VertexBufferDynamic\"/></td><td>Use the <see cref=\"F:SharpDX.Direct3D9.Usage.Dynamic\"/> usage flag for vertex buffers.</td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D9.MeshFlags.VertexBufferManaged\"/></td><td>Use the <see cref=\"F:SharpDX.Direct3D9.Pool.Managed\"/> memory class for vertex buffers.</td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D9.MeshFlags.VertexBufferSystemMemory\"/></td><td>Use the <see cref=\"F:SharpDX.Direct3D9.Pool.SystemMemory\"/> memory class for vertex buffers.</td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D9.MeshFlags.VertexBufferWriteOnly\"/></td><td>Use the <see cref=\"F:SharpDX.Direct3D9.Usage.WriteOnly\"/> usage flag for vertex buffers.</td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D9.MeshFlags.WriteOnly\"/></td><td>Equivalent to specifying both <see cref=\"F:SharpDX.Direct3D9.MeshFlags.VertexBufferWriteOnly\"/> and <see cref=\"F:SharpDX.Direct3D9.MeshFlags.IndexBufferWriteOnly\"/>.</td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXBaseMesh::GetOptions']/*\"/>\t\n            <msdn-id>bb205746</msdn-id>\t\n            <unmanaged>unsigned int ID3DXBaseMesh::GetOptions()</unmanaged>\t\n            <unmanaged-short>ID3DXBaseMesh::GetOptions</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseMesh.GetDevice(SharpDX.Direct3D9.Device@)\">\n            <summary>\t\n            <p>Retrieves the device associated with the mesh.</p>\t\n            </summary>\t\n            <param name=\"deviceOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface, representing the Direct3D device object associated with the mesh.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>Calling this method will increase the internal reference count on the <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface. Be sure to call <strong><see cref=\"T:SharpDX.ComObject\"/></strong> when you are done using this <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface or you will have a memory leak.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXBaseMesh::GetDevice']/*\"/>\t\n            <msdn-id>bb205740</msdn-id>\t\n            <unmanaged>HRESULT ID3DXBaseMesh::GetDevice([Out] IDirect3DDevice9** ppDevice)</unmanaged>\t\n            <unmanaged-short>ID3DXBaseMesh::GetDevice</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseMesh.CloneMeshFVF(System.Int32,System.Int32,SharpDX.Direct3D9.Device,SharpDX.Direct3D9.Mesh@)\">\n            <summary>\t\n            <p>Clones a mesh using a flexible vertex format (FVF) code.</p>\t\n            </summary>\t\n            <param name=\"options\"><dd>  <p>A combination of one or more <strong>D3DXMESH</strong> flags specifying creation options for the mesh.</p> </dd></param>\t\n            <param name=\"fvf\"><dd>  <p>Combination of FVF codes, which specifies the vertex format for the vertices in the output mesh. For the values of the codes, see <see cref=\"T:SharpDX.Direct3D9.VertexFormat\"/>.</p> </dd></param>\t\n            <param name=\"d3DDeviceRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface representing the device object associated with the mesh.</p> </dd></param>\t\n            <param name=\"cloneMeshOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D9.Mesh\"/></strong> interface, representing the cloned mesh.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p><strong><see cref=\"M:SharpDX.Direct3D9.BaseMesh.CloneMeshFVF(System.Int32,System.Int32,SharpDX.Direct3D9.Device,SharpDX.Direct3D9.Mesh@)\"/></strong> is used to reformat and change the vertex data layout. This is done by creating a new mesh object. For example, use it to to add space for normals, texture coordinates, colors, weights, etc. that were not present before. </p><p> <strong><see cref=\"M:SharpDX.Direct3D9.BaseMesh.UpdateSemantics(SharpDX.Direct3D9.VertexElement)\"/></strong> updates the vertex declaration with different semantic information without changing the layout of the vertex buffer. This method does not modify the contents of the vertex buffer. For example, use it to relabel a 3D texture coordinate as a binormal or tangent or vice versa.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXBaseMesh::CloneMeshFVF']/*\"/>\t\n            <msdn-id>bb205733</msdn-id>\t\n            <unmanaged>HRESULT ID3DXBaseMesh::CloneMeshFVF([In] unsigned int Options,[In] unsigned int FVF,[In] IDirect3DDevice9* pD3DDevice,[In] ID3DXMesh** ppCloneMesh)</unmanaged>\t\n            <unmanaged-short>ID3DXBaseMesh::CloneMeshFVF</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseMesh.CloneMesh(System.Int32,SharpDX.Direct3D9.VertexElement,SharpDX.Direct3D9.Device,SharpDX.Direct3D9.Mesh@)\">\n            <summary>\t\n            <p>Clones a mesh using a declarator.</p>\t\n            </summary>\t\n            <param name=\"options\"><dd>  <p>A combination of one or more <strong>D3DXMESH</strong> flags specifying creation options for the mesh.</p> </dd></param>\t\n            <param name=\"declarationRef\"><dd>  <p>An array of <strong><see cref=\"T:SharpDX.Direct3D9.VertexElement\"/></strong> elements, which specify the vertex format for the vertices in the output mesh.</p> </dd></param>\t\n            <param name=\"d3DDeviceRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface, representing the device object associated with the mesh.</p> </dd></param>\t\n            <param name=\"cloneMeshOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D9.Mesh\"/></strong> interface, representing the cloned mesh.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p><strong><see cref=\"M:SharpDX.Direct3D9.BaseMesh.CloneMesh(System.Int32,SharpDX.Direct3D9.VertexElement,SharpDX.Direct3D9.Device,SharpDX.Direct3D9.Mesh@)\"/></strong> is used to reformat and change the vertex data layout. This is done by creating a new mesh object. For example, use it to add space for normals, texture coordinates, colors, weights, etc. that were not present before. </p><p> <strong><see cref=\"M:SharpDX.Direct3D9.BaseMesh.UpdateSemantics(SharpDX.Direct3D9.VertexElement)\"/></strong> updates the vertex declaration with different semantic information without changing the layout of the vertex buffer. This method does not modify the contents of the vertex buffer. For example, use it to relabel a 3D texture coordinate as a binormal or tangent or vice versa.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXBaseMesh::CloneMesh']/*\"/>\t\n            <msdn-id>Bb205732</msdn-id>\t\n            <unmanaged>HRESULT ID3DXBaseMesh::CloneMesh([In] unsigned int Options,[In] const D3DVERTEXELEMENT9* pDeclaration,[In] IDirect3DDevice9* pD3DDevice,[In] ID3DXMesh** ppCloneMesh)</unmanaged>\t\n            <unmanaged-short>ID3DXBaseMesh::CloneMesh</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseMesh.GetVertexBuffer(SharpDX.Direct3D9.VertexBuffer@)\">\n            <summary>\t\n            <p>Retrieves the vertex buffer associated with the mesh.</p>\t\n            </summary>\t\n            <param name=\"vBOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D9.VertexBuffer\"/></strong> interface, representing the vertex buffer object associated with the mesh.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXBaseMesh::GetVertexBuffer']/*\"/>\t\n            <msdn-id>bb205747</msdn-id>\t\n            <unmanaged>HRESULT ID3DXBaseMesh::GetVertexBuffer([Out] IDirect3DVertexBuffer9** ppVB)</unmanaged>\t\n            <unmanaged-short>ID3DXBaseMesh::GetVertexBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseMesh.GetIndexBuffer(SharpDX.Direct3D9.IndexBuffer@)\">\n            <summary>\t\n            <p>Retrieves the data in an index buffer.</p>\t\n            </summary>\t\n            <param name=\"iBOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D9.IndexBuffer\"/></strong> interface, representing the index buffer object associated with the mesh.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXBaseMesh::GetIndexBuffer']/*\"/>\t\n            <msdn-id>bb205742</msdn-id>\t\n            <unmanaged>HRESULT ID3DXBaseMesh::GetIndexBuffer([Out] IDirect3DIndexBuffer9** ppIB)</unmanaged>\t\n            <unmanaged-short>ID3DXBaseMesh::GetIndexBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseMesh.LockVertexBuffer(System.Int32,System.IntPtr)\">\n            <summary>\t\n            <p>Locks a vertex buffer and obtains a reference to the vertex buffer memory.</p>\t\n            </summary>\t\n            <param name=\"flags\"><dd>  <p>Combination of zero or more locking flags that describe the type of lock to perform. For this method, the valid flags are:  </p> <ul> <li><see cref=\"F:SharpDX.Direct3D9.LockFlags.Discard\"/></li> <li><see cref=\"F:SharpDX.Direct3D9.LockFlags.NoDirtyUpdate\"/></li> <li><see cref=\"F:SharpDX.Direct3D9.LockFlags.NoSystemLock\"/></li> <li><see cref=\"F:SharpDX.Direct3D9.LockFlags.ReadOnly\"/></li> <li><see cref=\"F:SharpDX.Direct3D9.LockFlags.NoOverwrite\"/></li> </ul> <p>For a description of the flags, see <see cref=\"T:SharpDX.Direct3D9.LockFlags\"/>.</p> </dd></param>\t\n            <param name=\"dataOut\"><dd>  <p>VOID* reference to a buffer containing the vertex data.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>When working with vertex buffers, you are allowed to make multiple lock calls; however, you must ensure that the number of lock calls match the number of unlock calls. DrawPrimitive calls will not succeed with any outstanding lock count on any currently set vertex buffer.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXBaseMesh::LockVertexBuffer']/*\"/>\t\n            <msdn-id>bb205749</msdn-id>\t\n            <unmanaged>HRESULT ID3DXBaseMesh::LockVertexBuffer([In] unsigned int Flags,[In] void** ppData)</unmanaged>\t\n            <unmanaged-short>ID3DXBaseMesh::LockVertexBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseMesh.UnlockVertexBuffer\">\n            <summary>\t\n            <p>Unlocks a vertex buffer.</p>\t\n            </summary>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXBaseMesh::UnlockVertexBuffer']/*\"/>\t\n            <msdn-id>bb205751</msdn-id>\t\n            <unmanaged>HRESULT ID3DXBaseMesh::UnlockVertexBuffer()</unmanaged>\t\n            <unmanaged-short>ID3DXBaseMesh::UnlockVertexBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseMesh.LockIndexBuffer(System.Int32,System.IntPtr)\">\n            <summary>\t\n            <p>Locks an index buffer and obtains a reference to the index buffer memory.</p>\t\n            </summary>\t\n            <param name=\"flags\"><dd>  <p>Combination of zero or more locking flags that describe the type of lock to perform. For this method, the valid flags are: </p> <ul> <li><see cref=\"F:SharpDX.Direct3D9.LockFlags.Discard\"/></li> <li><see cref=\"F:SharpDX.Direct3D9.LockFlags.NoDirtyUpdate\"/></li> <li><see cref=\"F:SharpDX.Direct3D9.LockFlags.NoSystemLock\"/></li> <li><see cref=\"F:SharpDX.Direct3D9.LockFlags.ReadOnly\"/></li> </ul> <p>For a description of the flags, see <see cref=\"T:SharpDX.Direct3D9.LockFlags\"/>.</p> </dd></param>\t\n            <param name=\"dataOut\"><dd>  <p>VOID* reference to a buffer containing the index data. The count of indices in this buffer will be equal to <strong><see cref=\"M:SharpDX.Direct3D9.BaseMesh.GetNumFaces\"/></strong> * 3.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>When working with index buffers, you are allowed to make multiple lock calls. However, you must ensure that the number of lock calls match the number of unlock calls. DrawPrimitive calls will not succeed with any outstanding lock count on any currently set index buffer.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXBaseMesh::LockIndexBuffer']/*\"/>\t\n            <msdn-id>bb205748</msdn-id>\t\n            <unmanaged>HRESULT ID3DXBaseMesh::LockIndexBuffer([In] unsigned int Flags,[In] void** ppData)</unmanaged>\t\n            <unmanaged-short>ID3DXBaseMesh::LockIndexBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseMesh.UnlockIndexBuffer\">\n            <summary>\t\n            <p>Unlocks an index buffer.</p>\t\n            </summary>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXBaseMesh::UnlockIndexBuffer']/*\"/>\t\n            <msdn-id>bb205750</msdn-id>\t\n            <unmanaged>HRESULT ID3DXBaseMesh::UnlockIndexBuffer()</unmanaged>\t\n            <unmanaged-short>ID3DXBaseMesh::UnlockIndexBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseMesh.GetAttributeTable(SharpDX.Direct3D9.AttributeRange@,System.Int32@)\">\n            <summary>\t\n            <p>Retrieves either an attribute table for a mesh, or the number of entries stored in an attribute table for a mesh.</p>\t\n            </summary>\t\n            <param name=\"attribTableRef\"><dd>  <p>Pointer to an array of <strong><see cref=\"T:SharpDX.Direct3D9.AttributeRange\"/></strong> structures, representing the entries in the mesh's attribute table. Specify <strong><c>null</c></strong> to retrieve the value for pAttribTableSize.</p> </dd></param>\t\n            <param name=\"attribTableSizeRef\"><dd>  <p>Pointer to either the number of entries stored in pAttribTable or a value to be filled in with the number of entries stored in the attribute table for the mesh.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>An attribute table is created by <strong><see cref=\"M:SharpDX.Direct3D9.Mesh.Optimize(System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D.Blob@,SharpDX.Direct3D9.Mesh@)\"/></strong> and passing <see cref=\"F:SharpDX.Direct3D9.MeshOptimizeFlags.AttributeSort\"/> for the Flags parameter.</p><p>An attribute table is used to identify areas of the mesh that need to be drawn with different textures, render states, materials, and so on. In addition, the application can use the attribute table to hide portions of a mesh by not drawing a given attribute identifier when drawing the frame.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXBaseMesh::GetAttributeTable']/*\"/>\t\n            <msdn-id>bb205738</msdn-id>\t\n            <unmanaged>HRESULT ID3DXBaseMesh::GetAttributeTable([Out] D3DXATTRIBUTERANGE* pAttribTable,[Out] unsigned int* pAttribTableSize)</unmanaged>\t\n            <unmanaged-short>ID3DXBaseMesh::GetAttributeTable</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseMesh.ConvertPointRepsToAdjacency(System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Converts point representative data to mesh adjacency information.</p>\t\n            </summary>\t\n            <param name=\"pRepRef\"><dd>  <p>Pointer to an array of one DWORD per vertex of the mesh that contains point representative data. This parameter is optional. Supplying a <strong><c>null</c></strong> value will cause this parameter to be interpreted as an \"identity\" array.</p> </dd></param>\t\n            <param name=\"adjacencyRef\"><dd>  <p>Pointer to an array of three DWORDs per face that specify the three neighbors for each face in the mesh. The number of bytes in this array must be at least 3 * <strong><see cref=\"M:SharpDX.Direct3D9.BaseMesh.GetNumFaces\"/></strong> * sizeof(DWORD).</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXBaseMesh::ConvertPointRepsToAdjacency']/*\"/>\t\n            <msdn-id>bb205735</msdn-id>\t\n            <unmanaged>HRESULT ID3DXBaseMesh::ConvertPointRepsToAdjacency([In] const unsigned int* pPRep,[In] unsigned int* pAdjacency)</unmanaged>\t\n            <unmanaged-short>ID3DXBaseMesh::ConvertPointRepsToAdjacency</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseMesh.ConvertAdjacencyToPointReps(System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Converts mesh adjacency information to an array of point representatives.</p>\t\n            </summary>\t\n            <param name=\"adjacencyRef\"><dd>  <p>Pointer to an array of three DWORDs per face that specify the three neighbors for each face in the mesh. The number of bytes in this array must be at least 3 * <strong><see cref=\"M:SharpDX.Direct3D9.BaseMesh.GetNumFaces\"/></strong> * sizeof(DWORD).</p> </dd></param>\t\n            <param name=\"pRepRef\"><dd>  <p>Pointer to an array of one DWORD per vertex of the mesh that will be filled with point representative data.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXBaseMesh::ConvertAdjacencyToPointReps']/*\"/>\t\n            <msdn-id>bb205734</msdn-id>\t\n            <unmanaged>HRESULT ID3DXBaseMesh::ConvertAdjacencyToPointReps([In] const unsigned int* pAdjacency,[In] unsigned int* pPRep)</unmanaged>\t\n            <unmanaged-short>ID3DXBaseMesh::ConvertAdjacencyToPointReps</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseMesh.GenerateAdjacency(System.Single,System.Int32)\">\n            <summary>\t\n            <p>Generate a list of mesh edges, as well as a list of faces that share each edge.</p>\t\n            </summary>\t\n            <param name=\"epsilon\"><dd>  <p>Specifies that vertices that differ in position by less than epsilon should be treated as coincident.</p> </dd></param>\t\n            <param name=\"adjacencyRef\"><dd>  <p>Pointer to an array of three DWORDs per face to be filled with the indices of adjacent faces. The number of bytes in this array must be at least 3 * <strong><see cref=\"M:SharpDX.Direct3D9.BaseMesh.GetNumFaces\"/></strong> * sizeof(DWORD).</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>After an application generates adjacency information for a mesh, the mesh data can be optimized for better drawing performance.</p><p>The order of the entries in the adjacency buffer is determined by the order of the vertex indices in the index buffer. The adjacent triangle 0 always corresponds to the edge between the indices of the corners 0 and 1. The adjacent triangle 1 always corresponds to the edge between the indices of the corners 1 and 2 while the adjacent triangle 2 corresponds to the edge between the indices of the corners 2 and 0.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXBaseMesh::GenerateAdjacency']/*\"/>\t\n            <msdn-id>bb205737</msdn-id>\t\n            <unmanaged>HRESULT ID3DXBaseMesh::GenerateAdjacency([In] float Epsilon,[In] unsigned int* pAdjacency)</unmanaged>\t\n            <unmanaged-short>ID3DXBaseMesh::GenerateAdjacency</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.BaseMesh.UpdateSemantics(SharpDX.Direct3D9.VertexElement)\">\n            <summary>\t\n            <p>This method allows the user to change the mesh declaration without changing the data layout of the vertex buffer. The call is valid only if the old and new declaration formats have the same vertex size.</p>\t\n            </summary>\t\n            <param name=\"declaration\"><dd>  <p>An array of <strong><see cref=\"T:SharpDX.Direct3D9.VertexElement\"/></strong> elements, describing the vertex format of the mesh vertices. The upper limit of this declarator array is <strong><see cref=\"F:SharpDX.Direct3D9.VertexFormatDeclaratorCount.Max\"/></strong>.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p> <strong><see cref=\"M:SharpDX.Direct3D9.BaseMesh.CloneMesh(System.Int32,SharpDX.Direct3D9.VertexElement,SharpDX.Direct3D9.Device,SharpDX.Direct3D9.Mesh@)\"/></strong> is used to reformat and change the vertex data layout. For example, use it to to add space for normals, texture coordinates, colors, weights, etc. that were not present before.</p><p><strong><see cref=\"M:SharpDX.Direct3D9.BaseMesh.UpdateSemantics(SharpDX.Direct3D9.VertexElement)\"/></strong> is a method for updating the vertex declaration with different semantic information, without changing the layout of the vertex buffer. For example, use it to relabel a 3D texture coordinate as a binormal or tangent, or vice versa.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXBaseMesh::UpdateSemantics']/*\"/>\t\n            <msdn-id>bb205752</msdn-id>\t\n            <unmanaged>HRESULT ID3DXBaseMesh::UpdateSemantics([In] D3DVERTEXELEMENT9* Declaration)</unmanaged>\t\n            <unmanaged-short>ID3DXBaseMesh::UpdateSemantics</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.BaseMesh.FVF\">\n            <summary>\t\n            <p>Gets the fixed function vertex value.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This method can return 0 if the vertex format cannot be mapped directly to an FVF code.  This will occur for a mesh created from a vertex declaration that doesn't have the same order and elements supported by the FVF codes.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXBaseMesh::GetFVF']/*\"/>\t\n            <msdn-id>bb205741</msdn-id>\t\n            <unmanaged>GetFVF</unmanaged>\t\n            <unmanaged-short>GetFVF</unmanaged-short>\t\n            <unmanaged>unsigned int ID3DXBaseMesh::GetFVF()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.BaseMesh.NumBytesPerVertex\">\n            <summary>\t\n            <p>Gets the number of bytes per vertex.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXBaseMesh::GetNumBytesPerVertex']/*\"/>\t\n            <msdn-id>bb205743</msdn-id>\t\n            <unmanaged>GetNumBytesPerVertex</unmanaged>\t\n            <unmanaged-short>GetNumBytesPerVertex</unmanaged-short>\t\n            <unmanaged>unsigned int ID3DXBaseMesh::GetNumBytesPerVertex()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.BaseMesh.Options\">\n            <summary>\t\n            <p>Retrieves the mesh options enabled for this mesh at creation time.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXBaseMesh::GetOptions']/*\"/>\t\n            <msdn-id>bb205746</msdn-id>\t\n            <unmanaged>GetOptions</unmanaged>\t\n            <unmanaged-short>GetOptions</unmanaged-short>\t\n            <unmanaged>unsigned int ID3DXBaseMesh::GetOptions()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.BaseMesh.Device\">\n            <summary>\t\n            <p>Retrieves the device associated with the mesh.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Calling this method will increase the internal reference count on the <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface. Be sure to call <strong><see cref=\"T:SharpDX.ComObject\"/></strong> when you are done using this <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface or you will have a memory leak.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXBaseMesh::GetDevice']/*\"/>\t\n            <msdn-id>bb205740</msdn-id>\t\n            <unmanaged>GetDevice</unmanaged>\t\n            <unmanaged-short>GetDevice</unmanaged-short>\t\n            <unmanaged>HRESULT ID3DXBaseMesh::GetDevice([Out] IDirect3DDevice9** ppDevice)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.BaseMesh.VertexBuffer\">\n            <summary>\t\n            <p>Retrieves the vertex buffer associated with the mesh.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXBaseMesh::GetVertexBuffer']/*\"/>\t\n            <msdn-id>bb205747</msdn-id>\t\n            <unmanaged>GetVertexBuffer</unmanaged>\t\n            <unmanaged-short>GetVertexBuffer</unmanaged-short>\t\n            <unmanaged>HRESULT ID3DXBaseMesh::GetVertexBuffer([Out] IDirect3DVertexBuffer9** ppVB)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.BaseMesh.IndexBuffer\">\n            <summary>\t\n            <p>Retrieves the data in an index buffer.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXBaseMesh::GetIndexBuffer']/*\"/>\t\n            <msdn-id>bb205742</msdn-id>\t\n            <unmanaged>GetIndexBuffer</unmanaged>\t\n            <unmanaged-short>GetIndexBuffer</unmanaged-short>\t\n            <unmanaged>HRESULT ID3DXBaseMesh::GetIndexBuffer([Out] IDirect3DIndexBuffer9** ppIB)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.CompressedAnimationSet\">\n            <summary>\t\n            <p>An application uses the methods of this interface to implement a key frame animation set stored in a compressed data format.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Create a compressed-format key frame animation set with <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateCompressedAnimationSet(System.String,System.Double,SharpDX.Direct3D9.PlaybackType,SharpDX.Direct3D.Blob,System.Int32,SharpDX.Direct3D9.CallbackKey,SharpDX.Direct3D9.CompressedAnimationSet@)\"/></strong>.</p><p>The LPD3DXCOMPRESSEDANIMATIONSET type is defined as a reference to this interface. </p><pre><code> typedef interface <see cref=\"T:SharpDX.Direct3D9.CompressedAnimationSet\"/> <see cref=\"T:SharpDX.Direct3D9.CompressedAnimationSet\"/>;\t\n            typedef interface <see cref=\"T:SharpDX.Direct3D9.CompressedAnimationSet\"/> *LPD3DXCOMPRESSEDANIMATIONSET;\t\n            </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXCompressedAnimationSet']/*\"/>\t\n            <msdn-id>bb205756</msdn-id>\t\n            <unmanaged>ID3DXCompressedAnimationSet</unmanaged>\t\n            <unmanaged-short>ID3DXCompressedAnimationSet</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.CompressedAnimationSet.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D9.CompressedAnimationSet\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.CompressedAnimationSet.op_Explicit(System.IntPtr)~SharpDX.Direct3D9.CompressedAnimationSet\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D9.CompressedAnimationSet\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.CompressedAnimationSet.GetPlaybackType\">\n            <summary>\t\n            <p>Gets the type of the animation set playback loop.</p>\t\n            </summary>\t\n            <returns><p>Type of the animation set playback loop. See <strong><see cref=\"T:SharpDX.Direct3D9.PlaybackType\"/></strong>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXCompressedAnimationSet::GetPlaybackType']/*\"/>\t\n            <msdn-id>bb205760</msdn-id>\t\n            <unmanaged>D3DXPLAYBACK_TYPE ID3DXCompressedAnimationSet::GetPlaybackType()</unmanaged>\t\n            <unmanaged-short>ID3DXCompressedAnimationSet::GetPlaybackType</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.CompressedAnimationSet.GetSourceTicksPerSecond\">\n            <summary>\t\n            <p>Gets the number of animation key frame ticks that occur per second.</p>\t\n            </summary>\t\n            <returns><p>Number of animation key frame ticks that occur per second.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXCompressedAnimationSet::GetSourceTicksPerSecond']/*\"/>\t\n            <msdn-id>bb205761</msdn-id>\t\n            <unmanaged>double ID3DXCompressedAnimationSet::GetSourceTicksPerSecond()</unmanaged>\t\n            <unmanaged-short>ID3DXCompressedAnimationSet::GetSourceTicksPerSecond</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.CompressedAnimationSet.GetCompressedData(SharpDX.Direct3D.Blob@)\">\n            <summary>\t\n            <p>Gets the data buffer that stores compressed key frame animation data.</p>\t\n            </summary>\t\n            <param name=\"compressedDataOut\"><dd>  <p>Address of a reference to the <strong><see cref=\"T:SharpDX.Direct3D.Blob\"/></strong> data buffer that receives compressed key frame animation data.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the following value will be returned: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXCompressedAnimationSet::GetCompressedData']/*\"/>\t\n            <msdn-id>bb205758</msdn-id>\t\n            <unmanaged>HRESULT ID3DXCompressedAnimationSet::GetCompressedData([Out] ID3DXBuffer** ppCompressedData)</unmanaged>\t\n            <unmanaged-short>ID3DXCompressedAnimationSet::GetCompressedData</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.CompressedAnimationSet.GetNumCallbackKeys\">\n            <summary>\t\n            <p>Gets the number of callback keys in the animation set.</p>\t\n            </summary>\t\n            <returns><p>Number of callback keys in the animation set.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXCompressedAnimationSet::GetNumCallbackKeys']/*\"/>\t\n            <msdn-id>bb205759</msdn-id>\t\n            <unmanaged>unsigned int ID3DXCompressedAnimationSet::GetNumCallbackKeys()</unmanaged>\t\n            <unmanaged-short>ID3DXCompressedAnimationSet::GetNumCallbackKeys</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.CompressedAnimationSet.GetCallbackKeys(SharpDX.Direct3D9.CallbackKey)\">\n            <summary>\t\n            <p>Fills an array with callback key data used for key frame animation.</p>\t\n            </summary>\t\n            <param name=\"callbackKeysRef\"><dd>  <p>Pointer to a user-allocated array of <strong><see cref=\"T:SharpDX.Direct3D9.CallbackKey\"/></strong> structures that the method is to fill with callback data.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the following value will be returned: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXCompressedAnimationSet::GetCallbackKeys']/*\"/>\t\n            <msdn-id>bb205757</msdn-id>\t\n            <unmanaged>HRESULT ID3DXCompressedAnimationSet::GetCallbackKeys([In] D3DXKEY_CALLBACK* pCallbackKeys)</unmanaged>\t\n            <unmanaged-short>ID3DXCompressedAnimationSet::GetCallbackKeys</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.CompressedAnimationSet.PlaybackType\">\n            <summary>\t\n            <p>Gets the type of the animation set playback loop.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXCompressedAnimationSet::GetPlaybackType']/*\"/>\t\n            <msdn-id>bb205760</msdn-id>\t\n            <unmanaged>GetPlaybackType</unmanaged>\t\n            <unmanaged-short>GetPlaybackType</unmanaged-short>\t\n            <unmanaged>D3DXPLAYBACK_TYPE ID3DXCompressedAnimationSet::GetPlaybackType()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.CompressedAnimationSet.SourceTicksPerSecond\">\n            <summary>\t\n            <p>Gets the number of animation key frame ticks that occur per second.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXCompressedAnimationSet::GetSourceTicksPerSecond']/*\"/>\t\n            <msdn-id>bb205761</msdn-id>\t\n            <unmanaged>GetSourceTicksPerSecond</unmanaged>\t\n            <unmanaged-short>GetSourceTicksPerSecond</unmanaged-short>\t\n            <unmanaged>double ID3DXCompressedAnimationSet::GetSourceTicksPerSecond()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.CompressedAnimationSet.CompressedData\">\n            <summary>\t\n            <p>Gets the data buffer that stores compressed key frame animation data.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXCompressedAnimationSet::GetCompressedData']/*\"/>\t\n            <msdn-id>bb205758</msdn-id>\t\n            <unmanaged>GetCompressedData</unmanaged>\t\n            <unmanaged-short>GetCompressedData</unmanaged-short>\t\n            <unmanaged>HRESULT ID3DXCompressedAnimationSet::GetCompressedData([Out] ID3DXBuffer** ppCompressedData)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.CompressedAnimationSet.NumCallbackKeys\">\n            <summary>\t\n            <p>Gets the number of callback keys in the animation set.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXCompressedAnimationSet::GetNumCallbackKeys']/*\"/>\t\n            <msdn-id>bb205759</msdn-id>\t\n            <unmanaged>GetNumCallbackKeys</unmanaged>\t\n            <unmanaged-short>GetNumCallbackKeys</unmanaged-short>\t\n            <unmanaged>unsigned int ID3DXCompressedAnimationSet::GetNumCallbackKeys()</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.EffectStateManager\">\n            <summary>\t\n            <p> This is a user-implemented interface that allows a user to set the device state from an effect. Each of the methods in this interface must be implemented by the user and will then be used as callbacks to the application when either of the following occur: </p><ul> <li>An effect calls <strong><see cref=\"M:SharpDX.Direct3D9.Effect.BeginPass(System.Int32)\"/></strong>.</li> <li>Effect state is dynamically updated by calling the appropriate state change API. See individual method pages for details.</li> </ul><p>When an application uses the state manager to implement custom callbacks, an effect no longer automatically saves and restores state when calling <strong><see cref=\"M:SharpDX.Direct3D9.Effect.BeginPass(System.Int32)\"/></strong> and <strong><see cref=\"M:SharpDX.Direct3D9.Effect.EndPass\"/></strong>. Because the application has implemented a custom save and restore behavior in the callbacks, this automatic behavior is bypassed.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>A user creates an <see cref=\"T:SharpDX.Direct3D9.EffectStateManager\"/> interface by implementing a class that derives from this interface, and implementing all the interface methods. Once the interface is created, you can get or set the state manager within an effect using <strong><see cref=\"M:SharpDX.Direct3D9.Effect.GetStateManager(SharpDX.Direct3D9.EffectStateManager@)\"/></strong> and <strong><see cref=\"M:SharpDX.Direct3D9.Effect.SetStateManager(SharpDX.Direct3D9.EffectStateManager)\"/></strong>.</p><p>The LPD3DXEFFECTSTATEMANAGER type is defined as a reference to this interface.</p><pre><code> typedef interface <see cref=\"T:SharpDX.Direct3D9.EffectStateManager\"/> <see cref=\"T:SharpDX.Direct3D9.EffectStateManager\"/>;\t\n            typedef interface <see cref=\"T:SharpDX.Direct3D9.EffectStateManager\"/> *LPD3DXEFFECTSTATEMANAGER;\t\n            </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXEffectStateManager']/*\"/>\t\n            <msdn-id>bb205795</msdn-id>\t\n            <unmanaged>ID3DXEffectStateManager</unmanaged>\t\n            <unmanaged-short>ID3DXEffectStateManager</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.EffectStateManager.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D9.EffectStateManager\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.EffectStateManager.op_Explicit(System.IntPtr)~SharpDX.Direct3D9.EffectStateManager\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D9.EffectStateManager\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.EffectStateManager.SetTransform(SharpDX.Direct3D9.TransformState,SharpDX.Matrix@)\">\n            <summary>\t\n            <p>A callback function that must be implemented by a user to set a transform.</p>\t\n            </summary>\t\n            <param name=\"state\"><dd>  <p>The type of transform to apply the matrix to. See <strong><see cref=\"T:SharpDX.Direct3D9.TransformState\"/></strong>.</p> </dd></param>\t\n            <param name=\"matrixRef\"><dd>  <p>A transformation matrix. See <strong><see cref=\"T:SharpDX.Matrix\"/></strong>.</p> </dd></param>\t\n            <returns><p>The user-implemented method should return <see cref=\"F:SharpDX.Result.Ok\"/>. If the callback fails when setting the device state, either of the following will occur:</p><ul> <li>The effect will fail during <strong><see cref=\"M:SharpDX.Direct3D9.Effect.BeginPass(System.Int32)\"/></strong>.</li> <li>The dynamic effect state call (such as <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetTransform_(System.Int32,SharpDX.Matrix@)\"/></strong>) will fail.</li> </ul></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXEffectStateManager::SetTransform']/*\"/>\t\n            <msdn-id>bb205809</msdn-id>\t\n            <unmanaged>HRESULT ID3DXEffectStateManager::SetTransform([In] D3DTRANSFORMSTATETYPE State,[In] const D3DMATRIX* pMatrix)</unmanaged>\t\n            <unmanaged-short>ID3DXEffectStateManager::SetTransform</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.EffectStateManager.SetMaterial(SharpDX.Direct3D9.Material@)\">\n            <summary>\t\n            <p>A callback function that must be implemented by a user to set material state.</p>\t\n            </summary>\t\n            <param name=\"materialRef\"><dd>  <p>A reference to the material state. See <strong><see cref=\"T:SharpDX.Direct3D9.Material\"/></strong>.</p> </dd></param>\t\n            <returns><p>The user-implemented method should return <see cref=\"F:SharpDX.Result.Ok\"/>. If the callback fails when setting the device state, either of the following will occur:</p><ul> <li>The effect will fail during <strong><see cref=\"M:SharpDX.Direct3D9.Effect.BeginPass(System.Int32)\"/></strong>.</li> <li>The dynamic effect state call (such as <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetMaterial(SharpDX.Direct3D9.Material@)\"/></strong>) will fail.</li> </ul></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXEffectStateManager::SetMaterial']/*\"/>\t\n            <msdn-id>bb205799</msdn-id>\t\n            <unmanaged>HRESULT ID3DXEffectStateManager::SetMaterial([In] const D3DMATERIAL9* pMaterial)</unmanaged>\t\n            <unmanaged-short>ID3DXEffectStateManager::SetMaterial</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.EffectStateManager.SetLight(System.Int32,SharpDX.Direct3D9.Light@)\">\n            <summary>\t\n            <p>A callback function that must be implemented by a user to set a light.</p>\t\n            </summary>\t\n            <param name=\"index\"><dd>  <p>The zero-based index of the light. This is the same index  in <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetLight(System.Int32,SharpDX.Direct3D9.Light@)\"/></strong>.</p> </dd></param>\t\n            <param name=\"lightRef\"><dd>  <p>The light object. See <strong><see cref=\"T:SharpDX.Direct3D9.Light\"/></strong>.</p> </dd></param>\t\n            <returns><p>The user-implemented method should return <see cref=\"F:SharpDX.Result.Ok\"/>. If the callback fails when setting the device state, either of the following will occur:</p><ul> <li>The effect will fail during <strong><see cref=\"M:SharpDX.Direct3D9.Effect.BeginPass(System.Int32)\"/></strong>.</li> <li>The dynamic effect state call (such as <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetLight(System.Int32,SharpDX.Direct3D9.Light@)\"/></strong>) will fail.</li> </ul></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXEffectStateManager::SetLight']/*\"/>\t\n            <msdn-id>bb205798</msdn-id>\t\n            <unmanaged>HRESULT ID3DXEffectStateManager::SetLight([In] unsigned int Index,[In] const D3DLIGHT9* pLight)</unmanaged>\t\n            <unmanaged-short>ID3DXEffectStateManager::SetLight</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.EffectStateManager.LightEnable(System.Int32,SharpDX.Bool)\">\n            <summary>\t\n            <p>A callback function that must be implemented by a user to enable/disable a light.</p>\t\n            </summary>\t\n            <param name=\"index\"><dd>  <p>The zero-based index of the light. This is the same index in <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetLight(System.Int32,SharpDX.Direct3D9.Light@)\"/></strong>.</p> </dd></param>\t\n            <param name=\"enable\"><dd>  <p>True to enable the light, false otherwise.</p> </dd></param>\t\n            <returns><p>The user-implemented method should return <see cref=\"F:SharpDX.Result.Ok\"/>. If the callback fails when setting the device state, either of the following will occur:</p><ul> <li>The effect will fail during <strong><see cref=\"M:SharpDX.Direct3D9.Effect.BeginPass(System.Int32)\"/></strong>.</li> <li>The dynamic effect state call (such as <strong><see cref=\"M:SharpDX.Direct3D9.Device.EnableLight(System.Int32,SharpDX.Bool)\"/></strong>) will fail.</li> </ul></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXEffectStateManager::LightEnable']/*\"/>\t\n            <msdn-id>bb205796</msdn-id>\t\n            <unmanaged>HRESULT ID3DXEffectStateManager::LightEnable([In] unsigned int Index,[In] BOOL Enable)</unmanaged>\t\n            <unmanaged-short>ID3DXEffectStateManager::LightEnable</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.EffectStateManager.SetRenderState(SharpDX.Direct3D9.RenderState,System.Int32)\">\n            <summary>\t\n            <p>A callback function that must be implemented by a user to set render state.</p>\t\n            </summary>\t\n            <param name=\"state\"><dd>  <p>The render state to set. <strong><see cref=\"T:SharpDX.Direct3D9.RenderState\"/></strong> </p> </dd></param>\t\n            <param name=\"value\"><dd>  <p>The render state value. See Effect States (Direct3D 9).</p> </dd></param>\t\n            <returns><p>The user-implemented method should return <see cref=\"F:SharpDX.Result.Ok\"/>. If the callback fails when setting the device state, either of the following will occur:</p><ul> <li>The effect will fail during <strong><see cref=\"M:SharpDX.Direct3D9.Effect.BeginPass(System.Int32)\"/></strong>.</li> <li>The dynamic effect state call (such as <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetRenderState(SharpDX.Direct3D9.RenderState,System.Boolean)\"/></strong>) will fail.</li> </ul></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXEffectStateManager::SetRenderState']/*\"/>\t\n            <msdn-id>bb205805</msdn-id>\t\n            <unmanaged>HRESULT ID3DXEffectStateManager::SetRenderState([In] D3DRENDERSTATETYPE State,[In] unsigned int Value)</unmanaged>\t\n            <unmanaged-short>ID3DXEffectStateManager::SetRenderState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.EffectStateManager.SetTexture(System.Int32,SharpDX.Direct3D9.BaseTexture)\">\n            <summary>\t\n            <p>A callback function that must be implemented by a user to set a texture.</p>\t\n            </summary>\t\n            <param name=\"stage\"><dd>  <p>The stage to which the texture is assigned. This is the index value in <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetTexture(System.Int32,SharpDX.Direct3D9.BaseTexture)\"/></strong> or <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetTextureStageState(System.Int32,SharpDX.Direct3D9.TextureStage,SharpDX.Direct3D9.TextureArgument)\"/></strong>. </p> </dd></param>\t\n            <param name=\"textureRef\"><dd>  <p>A reference to the texture object. This can be any of the Direct3D texture types (cube, volume, etc.). See <strong><see cref=\"T:SharpDX.Direct3D9.BaseTexture\"/></strong>.</p> </dd></param>\t\n            <returns><p>The user-implemented method should return <see cref=\"F:SharpDX.Result.Ok\"/>. If the callback fails when setting the device state, either of the following will occur:</p><ul> <li>The effect will fail during <strong><see cref=\"M:SharpDX.Direct3D9.Effect.BeginPass(System.Int32)\"/></strong>.</li> <li>The dynamic effect state call (such as <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetTexture(System.Int32,SharpDX.Direct3D9.BaseTexture)\"/></strong>) will fail.</li> </ul></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXEffectStateManager::SetTexture']/*\"/>\t\n            <msdn-id>bb205807</msdn-id>\t\n            <unmanaged>HRESULT ID3DXEffectStateManager::SetTexture([In] unsigned int Stage,[In] IDirect3DBaseTexture9* pTexture)</unmanaged>\t\n            <unmanaged-short>ID3DXEffectStateManager::SetTexture</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.EffectStateManager.SetTextureStageState(System.Int32,SharpDX.Direct3D9.TextureStage,System.Int32)\">\n            <summary>\t\n            <p>A callback function that must be implemented by a user to set the texture stage state.</p>\t\n            </summary>\t\n            <param name=\"stage\"><dd>  <p>The stage that the texture is assigned to. This is the index value in <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetTexture(System.Int32,SharpDX.Direct3D9.BaseTexture)\"/></strong> or <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetTextureStageState(System.Int32,SharpDX.Direct3D9.TextureStage,SharpDX.Direct3D9.TextureArgument)\"/></strong>. </p> </dd></param>\t\n            <param name=\"type\"><dd>  <p>Defines the type of operation that a texture stage will perform. See  <strong><see cref=\"T:SharpDX.Direct3D9.TextureStage\"/></strong>. </p> </dd></param>\t\n            <param name=\"value\"><dd>  <p>Can be either an operation (<strong><see cref=\"T:SharpDX.Direct3D9.TextureOperation\"/></strong>) or an argument value (<see cref=\"T:SharpDX.Direct3D9.TextureArgument\"/>), depending on what is chosen for Type.</p> </dd></param>\t\n            <returns><p>The user-implemented method should return <see cref=\"F:SharpDX.Result.Ok\"/>. If the callback fails when setting the device state, either of the following will occur:</p><ul> <li>The effect will fail during <strong><see cref=\"M:SharpDX.Direct3D9.Effect.BeginPass(System.Int32)\"/></strong>.</li> <li>The dynamic effect state call (such as <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetTextureStageState(System.Int32,SharpDX.Direct3D9.TextureStage,SharpDX.Direct3D9.TextureArgument)\"/></strong>) will fail.</li> </ul></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXEffectStateManager::SetTextureStageState']/*\"/>\t\n            <msdn-id>bb205808</msdn-id>\t\n            <unmanaged>HRESULT ID3DXEffectStateManager::SetTextureStageState([In] unsigned int Stage,[In] D3DTEXTURESTAGESTATETYPE Type,[In] unsigned int Value)</unmanaged>\t\n            <unmanaged-short>ID3DXEffectStateManager::SetTextureStageState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.EffectStateManager.SetSamplerState(System.Int32,SharpDX.Direct3D9.SamplerState,System.Int32)\">\n            <summary>\t\n            <p>A callback function that must be implemented by a user to set a sampler.</p>\t\n            </summary>\t\n            <param name=\"sampler\"><dd>  <p>The zero-based sampler number. </p> </dd></param>\t\n            <param name=\"type\"><dd>  <p>Identifies sampler state, which can specify the filtering, addressing, or the border color. See <strong><see cref=\"T:SharpDX.Direct3D9.SamplerState\"/></strong>.</p> </dd></param>\t\n            <param name=\"value\"><dd>  <p>A value from one of the sampler state types in Type. </p> </dd></param>\t\n            <returns><p>The user-implemented method should return <see cref=\"F:SharpDX.Result.Ok\"/>. If the callback fails when setting the device state, either of the following will occur:</p><ul> <li>The effect will fail during <strong><see cref=\"M:SharpDX.Direct3D9.Effect.BeginPass(System.Int32)\"/></strong>.</li> <li>The dynamic effect state call (such as <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetSamplerState(System.Int32,SharpDX.Direct3D9.SamplerState,SharpDX.Direct3D9.TextureFilter)\"/></strong>) will fail.</li> </ul></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXEffectStateManager::SetSamplerState']/*\"/>\t\n            <msdn-id>bb205806</msdn-id>\t\n            <unmanaged>HRESULT ID3DXEffectStateManager::SetSamplerState([In] unsigned int Sampler,[In] D3DSAMPLERSTATETYPE Type,[In] unsigned int Value)</unmanaged>\t\n            <unmanaged-short>ID3DXEffectStateManager::SetSamplerState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.EffectStateManager.SetNPatchMode(System.Single)\">\n            <summary>\t\n            <p>A callback function that must be implemented by a user to set the number of subdivision segments for N-patches.</p>\t\n            </summary>\t\n            <param name=\"numSegments\"><dd>  <p>Break the surface into this number of subdivisions. This is the same as the number used by <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetNPatchMode(System.Single)\"/></strong>.</p> </dd></param>\t\n            <returns><p>The user-implemented method should return <see cref=\"F:SharpDX.Result.Ok\"/>. If the callback fails when setting the device state, either of the following will occur:</p><ul> <li>The effect will fail during <strong><see cref=\"M:SharpDX.Direct3D9.Effect.BeginPass(System.Int32)\"/></strong>.</li> <li>The dynamic effect state call (such as <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetNPatchMode(System.Single)\"/></strong>) will fail.</li> </ul></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXEffectStateManager::SetNPatchMode']/*\"/>\t\n            <msdn-id>bb205800</msdn-id>\t\n            <unmanaged>HRESULT ID3DXEffectStateManager::SetNPatchMode([In] float NumSegments)</unmanaged>\t\n            <unmanaged-short>ID3DXEffectStateManager::SetNPatchMode</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.EffectStateManager.SetVertexFormat(SharpDX.Direct3D9.VertexFormat)\">\n            <summary>\t\n            <p>A callback function that must be implemented by a user to set a FVF code.</p>\t\n            </summary>\t\n            <param name=\"vertexFormat\"><dd>  <p>The FVF constant, that determines how to interpret vertex data. See <see cref=\"T:SharpDX.Direct3D9.VertexFormat\"/>.</p> </dd></param>\t\n            <returns><p>The user-implemented method should return <see cref=\"F:SharpDX.Result.Ok\"/>. If the callback fails when setting the device state, either of the following will occur:</p><ul> <li>The effect will fail during <strong><see cref=\"M:SharpDX.Direct3D9.Effect.BeginPass(System.Int32)\"/></strong>.</li> <li>The dynamic effect state call (such as <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetVertexFormat(SharpDX.Direct3D9.VertexFormat)\"/></strong>) will fail.</li> </ul></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXEffectStateManager::SetFVF']/*\"/>\t\n            <msdn-id>bb205797</msdn-id>\t\n            <unmanaged>HRESULT ID3DXEffectStateManager::SetFVF([In] D3DFVF FVF)</unmanaged>\t\n            <unmanaged-short>ID3DXEffectStateManager::SetFVF</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.EffectStateManager.SetVertexShader(SharpDX.Direct3D9.VertexShader)\">\n            <summary>\t\n            <p>A callback function that must be implemented by a user to set a vertex shader.</p>\t\n            </summary>\t\n            <param name=\"shaderRef\"><dd>  <p>A reference to a vertex shader object. See <strong><see cref=\"T:SharpDX.Direct3D9.VertexShader\"/></strong>. </p> </dd></param>\t\n            <returns><p>The user-implemented method should return <see cref=\"F:SharpDX.Result.Ok\"/>. If the callback fails when setting the device state, either of the following will occur:</p><ul> <li>The effect will fail during <strong><see cref=\"M:SharpDX.Direct3D9.Effect.BeginPass(System.Int32)\"/></strong>.</li> <li>The dynamic effect state call (such as <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetVertexShader(SharpDX.Direct3D9.VertexShader)\"/></strong>) will fail.</li> </ul></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXEffectStateManager::SetVertexShader']/*\"/>\t\n            <msdn-id>bb205810</msdn-id>\t\n            <unmanaged>HRESULT ID3DXEffectStateManager::SetVertexShader([In] IDirect3DVertexShader9* pShader)</unmanaged>\t\n            <unmanaged-short>ID3DXEffectStateManager::SetVertexShader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.EffectStateManager.SetVertexShaderConstantF(System.Int32,System.Single,System.Int32)\">\n            <summary>\t\n            <p>A callback function that must be implemented by a user to set an array of vertex shader floating-point constants.</p>\t\n            </summary>\t\n            <param name=\"registerIndex\"><dd>  <p>The zero-based index of the first constant register.</p> </dd></param>\t\n            <param name=\"constantDataRef\"><dd>  <p>An array of floating-point constants.</p> </dd></param>\t\n            <param name=\"registerCount\"><dd>  <p>The number of registers in pConstantData.</p> </dd></param>\t\n            <returns><p>The user-implemented method should return <see cref=\"F:SharpDX.Result.Ok\"/>. If the callback fails when setting the device state, either of the following will occur:</p><ul> <li>The effect will fail during <strong><see cref=\"M:SharpDX.Direct3D9.Effect.BeginPass(System.Int32)\"/></strong>.</li> <li>The dynamic effect state call (such as <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetVertexShaderConstantF(System.Int32,System.IntPtr,System.Int32)\"/></strong>) will fail.</li> </ul></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXEffectStateManager::SetVertexShaderConstantF']/*\"/>\t\n            <msdn-id>bb205812</msdn-id>\t\n            <unmanaged>HRESULT ID3DXEffectStateManager::SetVertexShaderConstantF([In] unsigned int RegisterIndex,[In] const float* pConstantData,[In] unsigned int RegisterCount)</unmanaged>\t\n            <unmanaged-short>ID3DXEffectStateManager::SetVertexShaderConstantF</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.EffectStateManager.SetVertexShaderConstantI(System.Int32,System.Int32,System.Int32)\">\n            <summary>\t\n            <p>A callback function that must be implemented by a user to set an array of vertex shader integer constants.</p>\t\n            </summary>\t\n            <param name=\"registerIndex\"><dd>  <p>The zero-based index of the first constant register.</p> </dd></param>\t\n            <param name=\"constantDataRef\"><dd>  <p>An array of integer constants.</p> </dd></param>\t\n            <param name=\"registerCount\"><dd>  <p>The number of registers in pConstantData.</p> </dd></param>\t\n            <returns><p>The user-implemented method should return <see cref=\"F:SharpDX.Result.Ok\"/>. If the callback fails when setting the device state, either of the following will occur:</p><ul> <li>The effect will fail during <strong><see cref=\"M:SharpDX.Direct3D9.Effect.BeginPass(System.Int32)\"/></strong>.</li> <li>The dynamic effect state call (such as <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetVertexShaderConstantI(System.Int32,System.IntPtr,System.Int32)\"/></strong>) will fail.</li> </ul></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXEffectStateManager::SetVertexShaderConstantI']/*\"/>\t\n            <msdn-id>bb205813</msdn-id>\t\n            <unmanaged>HRESULT ID3DXEffectStateManager::SetVertexShaderConstantI([In] unsigned int RegisterIndex,[In] const int* pConstantData,[In] unsigned int RegisterCount)</unmanaged>\t\n            <unmanaged-short>ID3DXEffectStateManager::SetVertexShaderConstantI</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.EffectStateManager.SetVertexShaderConstantB(System.Int32,SharpDX.Bool,System.Int32)\">\n            <summary>\t\n            <p>A callback function that must be implemented by a user to set an array of vertex shader Boolean constants.</p>\t\n            </summary>\t\n            <param name=\"registerIndex\"><dd>  <p>The zero-based index of the first constant register.</p> </dd></param>\t\n            <param name=\"constantDataRef\"><dd>  <p>An array of Boolean constants.</p> </dd></param>\t\n            <param name=\"registerCount\"><dd>  <p>The number of registers in pConstantData.</p> </dd></param>\t\n            <returns><p>The user-implemented method should return <see cref=\"F:SharpDX.Result.Ok\"/>. If the callback fails when setting the device state, either of the following will occur:</p><ul> <li>The effect will fail during <strong><see cref=\"M:SharpDX.Direct3D9.Effect.BeginPass(System.Int32)\"/></strong>.</li> <li>The dynamic effect state call (such as <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetVertexShaderConstantB(System.Int32,System.IntPtr,System.Int32)\"/></strong>) will fail.</li> </ul></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXEffectStateManager::SetVertexShaderConstantB']/*\"/>\t\n            <msdn-id>bb205811</msdn-id>\t\n            <unmanaged>HRESULT ID3DXEffectStateManager::SetVertexShaderConstantB([In] unsigned int RegisterIndex,[In] const BOOL* pConstantData,[In] unsigned int RegisterCount)</unmanaged>\t\n            <unmanaged-short>ID3DXEffectStateManager::SetVertexShaderConstantB</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.EffectStateManager.SetPixelShader(SharpDX.Direct3D9.PixelShader)\">\n            <summary>\t\n            <p>A callback function that must be implemented by a user to set a pixel shader.</p>\t\n            </summary>\t\n            <param name=\"shaderRef\"><dd>  <p>A reference to a pixel shader object. See <strong><see cref=\"T:SharpDX.Direct3D9.PixelShader\"/></strong>. </p> </dd></param>\t\n            <returns><p>The user-implemented method should return <see cref=\"F:SharpDX.Result.Ok\"/>. If the callback fails when setting the device state, either of the following will occur:</p><ul> <li>The effect will fail during <strong><see cref=\"M:SharpDX.Direct3D9.Effect.BeginPass(System.Int32)\"/></strong>.</li> <li>The dynamic effect state call (such as <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetPixelShader(SharpDX.Direct3D9.PixelShader)\"/></strong>) will fail.</li> </ul></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXEffectStateManager::SetPixelShader']/*\"/>\t\n            <msdn-id>bb205801</msdn-id>\t\n            <unmanaged>HRESULT ID3DXEffectStateManager::SetPixelShader([In] IDirect3DPixelShader9* pShader)</unmanaged>\t\n            <unmanaged-short>ID3DXEffectStateManager::SetPixelShader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.EffectStateManager.SetPixelShaderConstantF(System.Int32,System.Single,System.Int32)\">\n            <summary>\t\n            <p>A callback function that must be implemented by a user to set an array of vertex shader floating-point constants.</p>\t\n            </summary>\t\n            <param name=\"registerIndex\"><dd>  <p>The zero-based index of the first constant register.</p> </dd></param>\t\n            <param name=\"constantDataRef\"><dd>  <p>An array of floating-point constants.</p> </dd></param>\t\n            <param name=\"registerCount\"><dd>  <p>The number of registers in pConstantData.</p> </dd></param>\t\n            <returns><p>The user-implemented method should return <see cref=\"F:SharpDX.Result.Ok\"/>. If the callback fails when setting the device state, either of the following will occur:</p><ul> <li>The effect will fail during <strong><see cref=\"M:SharpDX.Direct3D9.Effect.BeginPass(System.Int32)\"/></strong>.</li> <li>The dynamic effect state call (such as <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetPixelShaderConstantF(System.Int32,System.IntPtr,System.Int32)\"/></strong>) will fail.</li> </ul></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXEffectStateManager::SetPixelShaderConstantF']/*\"/>\t\n            <msdn-id>bb205803</msdn-id>\t\n            <unmanaged>HRESULT ID3DXEffectStateManager::SetPixelShaderConstantF([In] unsigned int RegisterIndex,[In] const float* pConstantData,[In] unsigned int RegisterCount)</unmanaged>\t\n            <unmanaged-short>ID3DXEffectStateManager::SetPixelShaderConstantF</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.EffectStateManager.SetPixelShaderConstantI(System.Int32,System.Int32,System.Int32)\">\n            <summary>\t\n            <p>A callback function that must be implemented by a user to set an array of vertex shader integer constants.</p>\t\n            </summary>\t\n            <param name=\"registerIndex\"><dd>  <p>The zero-based index of the first constant register.</p> </dd></param>\t\n            <param name=\"constantDataRef\"><dd>  <p>An array of integer constants.</p> </dd></param>\t\n            <param name=\"registerCount\"><dd>  <p>The number of registers in pConstantData.</p> </dd></param>\t\n            <returns><p>The user-implemented method should return <see cref=\"F:SharpDX.Result.Ok\"/>. If the callback fails when setting the device state, either of the following will occur:</p><ul> <li>The effect will fail during <strong><see cref=\"M:SharpDX.Direct3D9.Effect.BeginPass(System.Int32)\"/></strong>.</li> <li>The dynamic effect state call (such as <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetPixelShaderConstantI(System.Int32,System.IntPtr,System.Int32)\"/></strong>) will fail.</li> </ul></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXEffectStateManager::SetPixelShaderConstantI']/*\"/>\t\n            <msdn-id>bb205804</msdn-id>\t\n            <unmanaged>HRESULT ID3DXEffectStateManager::SetPixelShaderConstantI([In] unsigned int RegisterIndex,[In] const int* pConstantData,[In] unsigned int RegisterCount)</unmanaged>\t\n            <unmanaged-short>ID3DXEffectStateManager::SetPixelShaderConstantI</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.EffectStateManager.SetPixelShaderConstantB(System.Int32,SharpDX.Bool,System.Int32)\">\n            <summary>\t\n            <p>A callback function that must be implemented by a user to set an array of vertex shader Boolean constants.</p>\t\n            </summary>\t\n            <param name=\"registerIndex\"><dd>  <p>The zero-based index of the first constant register.</p> </dd></param>\t\n            <param name=\"constantDataRef\"><dd>  <p>An array of Boolean constants.</p> </dd></param>\t\n            <param name=\"registerCount\"><dd>  <p>The number of registers in pConstantData.</p> </dd></param>\t\n            <returns><p>The user-implemented method should return <see cref=\"F:SharpDX.Result.Ok\"/>. If the callback fails when setting the device state, either of the following will occur:</p><ul> <li>The effect will fail during <strong><see cref=\"M:SharpDX.Direct3D9.Effect.BeginPass(System.Int32)\"/></strong>.</li> <li>The dynamic effect state call (such as <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetPixelShaderConstantB(System.Int32,System.IntPtr,System.Int32)\"/></strong>) will fail.</li> </ul></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXEffectStateManager::SetPixelShaderConstantB']/*\"/>\t\n            <msdn-id>bb205802</msdn-id>\t\n            <unmanaged>HRESULT ID3DXEffectStateManager::SetPixelShaderConstantB([In] unsigned int RegisterIndex,[In] const BOOL* pConstantData,[In] unsigned int RegisterCount)</unmanaged>\t\n            <unmanaged-short>ID3DXEffectStateManager::SetPixelShaderConstantB</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.EffectStateManager.Material\">\n            <summary>\t\n            <p>A callback function that must be implemented by a user to set material state.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXEffectStateManager::SetMaterial']/*\"/>\t\n            <msdn-id>bb205799</msdn-id>\t\n            <unmanaged>SetMaterial</unmanaged>\t\n            <unmanaged-short>SetMaterial</unmanaged-short>\t\n            <unmanaged>HRESULT ID3DXEffectStateManager::SetMaterial([In] const D3DMATERIAL9* pMaterial)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.EffectStateManager.NPatchMode\">\n            <summary>\t\n            <p>A callback function that must be implemented by a user to set the number of subdivision segments for N-patches.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXEffectStateManager::SetNPatchMode']/*\"/>\t\n            <msdn-id>bb205800</msdn-id>\t\n            <unmanaged>SetNPatchMode</unmanaged>\t\n            <unmanaged-short>SetNPatchMode</unmanaged-short>\t\n            <unmanaged>HRESULT ID3DXEffectStateManager::SetNPatchMode([In] float NumSegments)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.EffectStateManager.VertexFormat\">\n            <summary>\t\n            <p>A callback function that must be implemented by a user to set a FVF code.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXEffectStateManager::SetFVF']/*\"/>\t\n            <msdn-id>bb205797</msdn-id>\t\n            <unmanaged>SetFVF</unmanaged>\t\n            <unmanaged-short>SetFVF</unmanaged-short>\t\n            <unmanaged>HRESULT ID3DXEffectStateManager::SetFVF([In] D3DFVF FVF)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.EffectStateManager.VertexShader\">\n            <summary>\t\n            <p>A callback function that must be implemented by a user to set a vertex shader.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXEffectStateManager::SetVertexShader']/*\"/>\t\n            <msdn-id>bb205810</msdn-id>\t\n            <unmanaged>SetVertexShader</unmanaged>\t\n            <unmanaged-short>SetVertexShader</unmanaged-short>\t\n            <unmanaged>HRESULT ID3DXEffectStateManager::SetVertexShader([In] IDirect3DVertexShader9* pShader)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.EffectStateManager.PixelShader\">\n            <summary>\t\n            <p>A callback function that must be implemented by a user to set a pixel shader.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXEffectStateManager::SetPixelShader']/*\"/>\t\n            <msdn-id>bb205801</msdn-id>\t\n            <unmanaged>SetPixelShader</unmanaged>\t\n            <unmanaged-short>SetPixelShader</unmanaged-short>\t\n            <unmanaged>HRESULT ID3DXEffectStateManager::SetPixelShader([In] IDirect3DPixelShader9* pShader)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.IAllocateHierarchy\">\n            <summary>\t\n            <p>This interface is implemented by the application to allocate or free frame and mesh container objects. Methods on this are called during loading and destroying frame hierarchies.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The LPD3DXALLOCATEHIERARCHY type is defined as a reference to this interface. </p><pre><code> typedef interface <see cref=\"T:SharpDX.Direct3D9.IAllocateHierarchy\"/> <see cref=\"T:SharpDX.Direct3D9.IAllocateHierarchy\"/>;\t\n            typedef interface <see cref=\"T:SharpDX.Direct3D9.IAllocateHierarchy\"/> *LPD3DXALLOCATEHIERARCHY;\t\n            </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXAllocateHierarchy']/*\"/>\t\n            <msdn-id>bb205619</msdn-id>\t\n            <unmanaged>ID3DXAllocateHierarchy</unmanaged>\t\n            <unmanaged-short>ID3DXAllocateHierarchy</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.IAllocateHierarchy.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D9.IAllocateHierarchy\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.IAllocateHierarchy.op_Explicit(System.IntPtr)~SharpDX.Direct3D9.IAllocateHierarchy\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D9.IAllocateHierarchy\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.IAllocateHierarchy.CreateFrame(System.String,SharpDX.Direct3D9.Frame@)\">\n            <summary>\t\n            <p>Requests allocation of a frame object.</p>\t\n            </summary>\t\n            <param name=\"name\"><dd>  <p>Name of the frame to be created.</p> </dd></param>\t\n            <param name=\"newFrameOut\"><dd>  <p>Returns the created frame object.</p> </dd></param>\t\n            <returns><p>The return values of this method are implemented by an application programmer. In general, if no error occurs, program the method to return <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. Otherwise, program the method to return an appropriate error message from D3DERR or D3DXERR,  as this will cause <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.LoadMeshHierarchyFromXW(System.String,System.Int32,SharpDX.Direct3D9.Device,SharpDX.Direct3D9.IAllocateHierarchy,SharpDX.Direct3D9.ILoadUserData,SharpDX.Direct3D9.Frame@,SharpDX.Direct3D9.AnimationController@)\"/></strong> to fail also, and return the error.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXAllocateHierarchy::CreateFrame']/*\"/>\t\n            <msdn-id>bb205620</msdn-id>\t\n            <unmanaged>HRESULT ID3DXAllocateHierarchy::CreateFrame([In] const char* Name,[In] D3DXFRAME** ppNewFrame)</unmanaged>\t\n            <unmanaged-short>ID3DXAllocateHierarchy::CreateFrame</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.IAllocateHierarchy.CreateMeshContainer(System.String,SharpDX.Direct3D9.MeshData,SharpDX.Direct3D9.ExtendedMaterial@,SharpDX.Direct3D9.EffectInstance,System.Int32,System.Int32,SharpDX.Direct3D9.SkinInfo,SharpDX.Direct3D9.MeshContainer)\">\n            <summary>\t\n            <p>Requests allocation of a mesh container object.</p>\t\n            </summary>\t\n            <param name=\"name\"><dd>  <p>Name of the mesh.</p> </dd></param>\t\n            <param name=\"meshDataRef\"><dd>  <p>Pointer to the mesh data structure. See <strong><see cref=\"T:SharpDX.Direct3D9.MeshData\"/></strong>.</p> </dd></param>\t\n            <param name=\"materialsRef\"><dd>  <p>Array of materials used in the mesh.</p> </dd></param>\t\n            <param name=\"effectInstancesRef\"><dd>  <p>Array of effect instances used in the mesh. See <strong><see cref=\"T:SharpDX.Direct3D9.EffectInstance\"/></strong>.</p> </dd></param>\t\n            <param name=\"numMaterials\"><dd>  <p>Number of materials in the materials array.</p> </dd></param>\t\n            <param name=\"adjacencyRef\"><dd>  <p>Adjacency array for the mesh.</p> </dd></param>\t\n            <param name=\"skinInfoRef\"><dd>  <p>Pointer to the skin mesh object if skin data is found. See <strong><see cref=\"T:SharpDX.Direct3D9.SkinInfo\"/></strong>.</p> </dd></param>\t\n            <param name=\"newMeshContainerOut\"><dd>  <p>Returns the created mesh container. See <strong><see cref=\"T:SharpDX.Direct3D9.MeshContainer\"/></strong>.</p> </dd></param>\t\n            <returns><p>The return values of this method are implemented by an application programmer. In general, if no error occurs, program the method to return <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. Otherwise, program the method to return an appropriate error message  from D3DERR or D3DXERR, as this will cause <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.LoadMeshHierarchyFromXW(System.String,System.Int32,SharpDX.Direct3D9.Device,SharpDX.Direct3D9.IAllocateHierarchy,SharpDX.Direct3D9.ILoadUserData,SharpDX.Direct3D9.Frame@,SharpDX.Direct3D9.AnimationController@)\"/></strong> to fail also, and return the error.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXAllocateHierarchy::CreateMeshContainer']/*\"/>\t\n            <msdn-id>bb205621</msdn-id>\t\n            <unmanaged>HRESULT ID3DXAllocateHierarchy::CreateMeshContainer([In] const char* Name,[In] const D3DXMESHDATA* pMeshData,[In] const D3DXMATERIAL* pMaterials,[In] const D3DXEFFECTINSTANCE* pEffectInstances,[In] unsigned int NumMaterials,[In] const unsigned int* pAdjacency,[In] ID3DXSkinInfo* pSkinInfo,[In] D3DXMESHCONTAINER** ppNewMeshContainer)</unmanaged>\t\n            <unmanaged-short>ID3DXAllocateHierarchy::CreateMeshContainer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.IAllocateHierarchy.DestroyFrame(SharpDX.Direct3D9.Frame@)\">\n            <summary>\t\n            <p>Requests deallocation of a frame object.</p>\t\n            </summary>\t\n            <param name=\"frameToFreeRef\"><dd>  <p>Pointer to the frame to be deallocated.</p> </dd></param>\t\n            <returns><p>The return values of this method are implemented by an application programmer. In general, if no error occurs, program the method to return <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. Otherwise, program the method to return an appropriate error message  from D3DERR or D3DXERR, as this will cause <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.LoadMeshHierarchyFromXW(System.String,System.Int32,SharpDX.Direct3D9.Device,SharpDX.Direct3D9.IAllocateHierarchy,SharpDX.Direct3D9.ILoadUserData,SharpDX.Direct3D9.Frame@,SharpDX.Direct3D9.AnimationController@)\"/></strong> to fail also, and return the error.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXAllocateHierarchy::DestroyFrame']/*\"/>\t\n            <msdn-id>bb205622</msdn-id>\t\n            <unmanaged>HRESULT ID3DXAllocateHierarchy::DestroyFrame([In] D3DXFRAME* pFrameToFree)</unmanaged>\t\n            <unmanaged-short>ID3DXAllocateHierarchy::DestroyFrame</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.IAllocateHierarchy.DestroyMeshContainer(SharpDX.Direct3D9.MeshContainer)\">\n            <summary>\t\n            <p>Requests deallocation of a mesh container object.</p>\t\n            </summary>\t\n            <param name=\"meshContainerToFreeRef\"><dd>  <p>Pointer to the mesh container object to be deallocated.</p> </dd></param>\t\n            <returns><p>The return values of this method are implemented by an application programmer. In general, if no error occurs, program the method to return <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. Otherwise, program the method to return an appropriate error message  from D3DERR or D3DXERR, as this will cause <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.LoadMeshHierarchyFromXW(System.String,System.Int32,SharpDX.Direct3D9.Device,SharpDX.Direct3D9.IAllocateHierarchy,SharpDX.Direct3D9.ILoadUserData,SharpDX.Direct3D9.Frame@,SharpDX.Direct3D9.AnimationController@)\"/></strong> to fail also, and return the error.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXAllocateHierarchy::DestroyMeshContainer']/*\"/>\t\n            <msdn-id>bb205623</msdn-id>\t\n            <unmanaged>HRESULT ID3DXAllocateHierarchy::DestroyMeshContainer([In] D3DXMESHCONTAINER* pMeshContainerToFree)</unmanaged>\t\n            <unmanaged-short>ID3DXAllocateHierarchy::DestroyMeshContainer</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.ILoadUserData\">\n            <summary>\t\n            <p>This interface is implemented by the application to save any additional user data embedded in .x files. An instance of this interface is passed to <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.LoadMeshHierarchyFromXW(System.String,System.Int32,SharpDX.Direct3D9.Device,SharpDX.Direct3D9.IAllocateHierarchy,SharpDX.Direct3D9.ILoadUserData,SharpDX.Direct3D9.Frame@,SharpDX.Direct3D9.AnimationController@)\"/></strong>, and D3DX calls the appropriate method on this interface every time the appropriate data is encountered. For example, for each frame object in the .x file, <strong><see cref=\"M:SharpDX.Direct3D9.ILoadUserData.LoadFrameChildData(SharpDX.Direct3D9.Frame@,SharpDX.Direct3D9.XFileData)\"/></strong> is called and passed the child data. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The LPD3DXLOADUSERDATA type is defined as a reference to this interface. </p><pre><code> typedef interface <see cref=\"T:SharpDX.Direct3D9.ILoadUserData\"/> <see cref=\"T:SharpDX.Direct3D9.ILoadUserData\"/>;\t\n            typedef interface <see cref=\"T:SharpDX.Direct3D9.ILoadUserData\"/> *LPD3DXLOADUSERDATA;\t\n            </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXLoadUserData']/*\"/>\t\n            <msdn-id>bb174034</msdn-id>\t\n            <unmanaged>ID3DXLoadUserData</unmanaged>\t\n            <unmanaged-short>ID3DXLoadUserData</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ILoadUserData.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D9.ILoadUserData\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ILoadUserData.op_Explicit(System.IntPtr)~SharpDX.Direct3D9.ILoadUserData\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D9.ILoadUserData\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ILoadUserData.LoadTopLevelData(SharpDX.Direct3D9.XFileData)\">\n            <summary>\t\n            <p>Load top level data from a .x file.</p>\t\n            </summary>\t\n            <param name=\"xofChildDataRef\"><dd>  <p>Pointer to a .x file data structure. This is defined in Dxfile.h.</p> </dd></param>\t\n            <returns><p>The return values of this method are implemented by an application programmer.In general, if no error occurs, program the method to return <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. Otherwise, program the method to return an appropriate error message from D3DERR or D3DXERR, as this will cause <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.LoadMeshHierarchyFromXW(System.String,System.Int32,SharpDX.Direct3D9.Device,SharpDX.Direct3D9.IAllocateHierarchy,SharpDX.Direct3D9.ILoadUserData,SharpDX.Direct3D9.Frame@,SharpDX.Direct3D9.AnimationController@)\"/></strong> to fail also, and return the error.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXLoadUserData::LoadTopLevelData']/*\"/>\t\n            <msdn-id>bb174037</msdn-id>\t\n            <unmanaged>HRESULT ID3DXLoadUserData::LoadTopLevelData([In] ID3DXFileData* pXofChildData)</unmanaged>\t\n            <unmanaged-short>ID3DXLoadUserData::LoadTopLevelData</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ILoadUserData.LoadFrameChildData(SharpDX.Direct3D9.Frame@,SharpDX.Direct3D9.XFileData)\">\n            <summary>\t\n            <p>Load frame child data from a .x file.</p>\t\n            </summary>\t\n            <param name=\"frameRef\"><dd>  <p>Pointer to a mesh container. See <strong><see cref=\"T:SharpDX.Direct3D9.Frame\"/></strong>.</p> </dd></param>\t\n            <param name=\"xofChildDataRef\"><dd>  <p>Pointer to a .x file data structure. This is defined in Dxfile.h.</p> </dd></param>\t\n            <returns><p>The return values of this method are implemented by an application programmer.In general, if no error occurs, program the method to return <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. Otherwise, program the method to return an appropriate error message from D3DERR or D3DXERR, as this will cause <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.LoadMeshHierarchyFromXW(System.String,System.Int32,SharpDX.Direct3D9.Device,SharpDX.Direct3D9.IAllocateHierarchy,SharpDX.Direct3D9.ILoadUserData,SharpDX.Direct3D9.Frame@,SharpDX.Direct3D9.AnimationController@)\"/></strong> to fail also, and return the error. </p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXLoadUserData::LoadFrameChildData']/*\"/>\t\n            <msdn-id>bb174035</msdn-id>\t\n            <unmanaged>HRESULT ID3DXLoadUserData::LoadFrameChildData([In] D3DXFRAME* pFrame,[In] ID3DXFileData* pXofChildData)</unmanaged>\t\n            <unmanaged-short>ID3DXLoadUserData::LoadFrameChildData</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ILoadUserData.LoadMeshChildData(SharpDX.Direct3D9.MeshContainer,SharpDX.Direct3D9.XFileData)\">\n            <summary>\t\n            <p>Load mesh child data from a .x file.</p>\t\n            </summary>\t\n            <param name=\"meshContainerRef\"><dd>  <p>Pointer to a mesh container. See <strong><see cref=\"T:SharpDX.Direct3D9.MeshContainer\"/></strong>.</p> </dd></param>\t\n            <param name=\"xofChildDataRef\"><dd>  <p>Pointer to a .x file data structure. This is defined in Dxfile.h.</p> </dd></param>\t\n            <returns><p>The return values of this method are implemented by an application programmer.In general, if no error occurs, program the method to return <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. Otherwise, program the method to return an appropriate error message from D3DERR or D3DXERR, as this will cause <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.LoadMeshHierarchyFromXW(System.String,System.Int32,SharpDX.Direct3D9.Device,SharpDX.Direct3D9.IAllocateHierarchy,SharpDX.Direct3D9.ILoadUserData,SharpDX.Direct3D9.Frame@,SharpDX.Direct3D9.AnimationController@)\"/></strong> to fail also, and return the error.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXLoadUserData::LoadMeshChildData']/*\"/>\t\n            <msdn-id>bb174036</msdn-id>\t\n            <unmanaged>HRESULT ID3DXLoadUserData::LoadMeshChildData([In] D3DXMESHCONTAINER* pMeshContainer,[In] ID3DXFileData* pXofChildData)</unmanaged>\t\n            <unmanaged-short>ID3DXLoadUserData::LoadMeshChildData</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.Include\">\n            <summary>\t\n            <p><see cref=\"T:SharpDX.Direct3D9.Include\"/> is a user-implemented interface to provide callbacks for #include directives during shader compilation. Each of the methods in this interface must be implemented by the user which will then be used as callbacks to the application when one of the following occurs: </p><ul> <li>An HLSL shader that contains a #include is compiled by calling one of the <see cref=\"M:SharpDX.Direct3D9.D3DX9.CompileShader(System.IntPtr,System.Int32,SharpDX.Direct3D9.Macro[],System.IntPtr,System.String,System.String,System.Int32,SharpDX.Direct3D.Blob@,SharpDX.Direct3D.Blob@,SharpDX.Direct3D9.ConstantTable@)\"/>*** functions.</li> <li>An assembly shader #include is assembled by calling any of the <see cref=\"M:SharpDX.Direct3D9.D3DX9.AssembleShader(System.IntPtr,System.Int32,SharpDX.Direct3D9.Macro[],System.IntPtr,System.Int32,SharpDX.Direct3D.Blob@,SharpDX.Direct3D.Blob@)\"/>*** functions.</li> <li>An effect that contains a #include is compiled by by calling any of the <see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateEffect(SharpDX.Direct3D9.Device,System.IntPtr,System.Int32,SharpDX.Direct3D9.Macro[],System.IntPtr,System.Int32,SharpDX.Direct3D9.EffectPool,SharpDX.Direct3D9.Effect@,SharpDX.Direct3D.Blob@)\"/>*** or <see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateEffectCompiler(System.IntPtr,System.Int32,SharpDX.Direct3D9.Macro[],System.IntPtr,System.Int32,SharpDX.Direct3D9.EffectCompiler,SharpDX.Direct3D.Blob@)\"/>*** functions.</li> </ul>\t\n            </summary>\t\n            <remarks>\t\n            <p>A user creates an <see cref=\"T:SharpDX.Direct3D9.Include\"/> interface by implementing a class that derives from this interface, and implementing all the interface methods.</p><p>The LPD3DXINCLUDE type is defined as a reference to this interface. </p><pre><code> typedef interface <see cref=\"T:SharpDX.Direct3D9.Include\"/> <see cref=\"T:SharpDX.Direct3D9.Include\"/>;\t\n            typedef interface <see cref=\"T:SharpDX.Direct3D9.Include\"/> *LPD3DXINCLUDE;\t\n            </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXInclude']/*\"/>\t\n            <msdn-id>bb173986</msdn-id>\t\n            <unmanaged>ID3DXInclude</unmanaged>\t\n            <unmanaged-short>ID3DXInclude</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Include.Open(SharpDX.Direct3D9.IncludeType,System.String,System.IO.Stream)\">\n            <summary>\n            A user-implemented method for opening and reading the contents of a shader #include file.\n            </summary>\n            <param name=\"type\">A <see cref=\"!:SharpDX.D3DCompiler.IncludeType\"/>-typed value that indicates the location of the #include file.</param>\n            <param name=\"fileName\">Name of the #include file.</param>\n            <param name=\"parentStream\">Pointer to the container that includes the #include file.</param>\n            <returns>Stream that is associated with fileName to be read. This reference remains valid until <see cref=\"!:SharpDX.D3DCompiler.Include.Close\"/> is called.</returns>\n            <unmanaged>HRESULT Open([None] D3D_INCLUDE_TYPE IncludeType,[None] const char* pFileName,[None] LPCVOID pParentData,[None] LPCVOID* ppData,[None] UINT* pBytes)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Include.Close(System.IO.Stream)\">\n            <summary>\t\n            A user-implemented method for closing a shader #include file.\t\n            </summary>\t\n            <remarks>\t\n            If <see cref=\"!:SharpDX.D3DCompiler.Include.Open\"/> was successful, Close is guaranteed to be called before the API using the <see cref=\"!:SharpDX.D3DCompiler.Include\"/> interface returns.\t\n            </remarks>\t\n            <param name=\"stream\">This is a reference that was returned by the corresponding <see cref=\"!:SharpDX.D3DCompiler.Include.Open\"/> call.</param>\n            <unmanaged>HRESULT Close([None] LPCVOID pData)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.IndexBuffer\">\n            <summary>\t\n            <p>Applications use the methods of the <see cref=\"T:SharpDX.Direct3D9.IndexBuffer\"/> interface to manipulate an index buffer resource.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The <strong><see cref=\"T:SharpDX.Direct3D9.IndexBuffer\"/></strong> interface is obtained by calling the <strong><see cref=\"M:SharpDX.Direct3D9.Device.CreateIndexBuffer(System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,SharpDX.Direct3D9.IndexBuffer,System.IntPtr)\"/></strong> method.</p><p>This interface inherits additional functionality from the <strong><see cref=\"T:SharpDX.Direct3D9.Resource\"/></strong> interface.</p><p>This interface, like all COM interfaces, inherits from the <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interface.</p><p>The LPDIRECT3DINDEXBUFFER9 and PDIRECT3DINDEXBUFFER9 types are defined as references to the <strong><see cref=\"T:SharpDX.Direct3D9.IndexBuffer\"/></strong> interface. </p><pre><code> typedef struct <see cref=\"T:SharpDX.Direct3D9.IndexBuffer\"/> *LPDIRECT3DINDEXBUFFER9, *PDIRECT3DINDEXBUFFER9;\t\n            </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DIndexBuffer9']/*\"/>\t\n            <msdn-id>bb205865</msdn-id>\t\n            <unmanaged>IDirect3DIndexBuffer9</unmanaged>\t\n            <unmanaged-short>IDirect3DIndexBuffer9</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.IndexBuffer.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D9.IndexBuffer\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.IndexBuffer.op_Explicit(System.IntPtr)~SharpDX.Direct3D9.IndexBuffer\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D9.IndexBuffer\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.IndexBuffer.Lock(System.Int32,System.Int32,System.IntPtr@,SharpDX.Direct3D9.LockFlags)\">\n            <summary>\t\n            <p>Locks a range of index data and obtains a reference to the index buffer memory.</p>\t\n            </summary>\t\n            <param name=\"offsetToLock\"><dd>  <p>Offset into the index data to lock, in bytes. Lock the entire index buffer by specifying 0 for both parameters, SizeToLock and OffsetToLock. </p> </dd></param>\t\n            <param name=\"sizeToLock\"><dd>  <p>Size of the index data to lock, in bytes. Lock the entire index buffer by specifying 0 for both parameters, SizeToLock and OffsetToLock.</p> </dd></param>\t\n            <param name=\"bDataOut\"><dd>  <p>VOID* reference to a memory buffer containing the returned index data. </p> </dd></param>\t\n            <param name=\"flags\"><dd>  <p>Combination of zero or more locking flags that describe the type of lock to perform. For this method, the valid flags are:  </p> <ul> <li><see cref=\"F:SharpDX.Direct3D9.LockFlags.Discard\"/></li> <li><see cref=\"F:SharpDX.Direct3D9.LockFlags.NoDirtyUpdate\"/></li> <li><see cref=\"F:SharpDX.Direct3D9.LockFlags.NoSystemLock\"/></li> <li><see cref=\"F:SharpDX.Direct3D9.LockFlags.ReadOnly\"/></li> <li><see cref=\"F:SharpDX.Direct3D9.LockFlags.NoOverwrite\"/></li> </ul> <p> For a description of the flags, see <see cref=\"T:SharpDX.Direct3D9.LockFlags\"/>. </p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>. </p></returns>\t\n            <remarks>\t\n            <p>As a general rule, do not hold a lock across more than one frame. When working with index buffers, you are allowed to make multiple lock calls. However, you must ensure that the number of lock calls match the number of unlock calls. <strong><see cref=\"M:SharpDX.Direct3D9.Device.DrawIndexedPrimitive(SharpDX.Direct3D9.PrimitiveType,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32)\"/></strong> calls will not succeed with any outstanding lock count on any currently set index buffer. </p><p>The <see cref=\"F:SharpDX.Direct3D9.LockFlags.Discard\"/> and <see cref=\"F:SharpDX.Direct3D9.LockFlags.NoOverwrite\"/> flags are valid only on buffers created with <see cref=\"F:SharpDX.Direct3D9.Usage.Dynamic\"/>.</p><p>See Programming Tips (Direct3D 9) for information about using <see cref=\"F:SharpDX.Direct3D9.LockFlags.Discard\"/> or <see cref=\"F:SharpDX.Direct3D9.LockFlags.NoOverwrite\"/>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DIndexBuffer9::Lock']/*\"/>\t\n            <msdn-id>bb205867</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DIndexBuffer9::Lock([In] unsigned int OffsetToLock,[In] unsigned int SizeToLock,[Out] void** ppbData,[In] D3DLOCK Flags)</unmanaged>\t\n            <unmanaged-short>IDirect3DIndexBuffer9::Lock</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.IndexBuffer.Unlock\">\n            <summary>\t\n            <p>Unlocks index data.</p>\t\n            </summary>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>. </p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DIndexBuffer9::Unlock']/*\"/>\t\n            <msdn-id>bb205868</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DIndexBuffer9::Unlock()</unmanaged>\t\n            <unmanaged-short>IDirect3DIndexBuffer9::Unlock</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.IndexBuffer.GetDescription(SharpDX.Direct3D9.IndexBufferDescription@)\">\n            <summary>\t\n            <p>Retrieves a description of the index buffer resource.</p>\t\n            </summary>\t\n            <param name=\"descRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.IndexBufferDescription\"/></strong> structure, describing the returned index buffer. </p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/> is returned if the argument is invalid.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DIndexBuffer9::GetDesc']/*\"/>\t\n            <msdn-id>bb205866</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DIndexBuffer9::GetDesc([Out] D3DINDEXBUFFER_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>IDirect3DIndexBuffer9::GetDesc</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.IndexBuffer.#ctor(SharpDX.Direct3D9.Device,System.Int32,SharpDX.Direct3D9.Usage,SharpDX.Direct3D9.Pool,System.Boolean)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D9.IndexBuffer\"/> class.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"sizeInBytes\">The size in bytes.</param>\n            <param name=\"usage\">The usage.</param>\n            <param name=\"pool\">The pool.</param>\n            <param name=\"sixteenBit\">if set to <c>true</c> use 16bit index buffer, otherwise, use 32bit index buffer.</param>\n            <msdn-id>bb174357</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::CreateIndexBuffer([In] unsigned int Length,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[Out, Fast] IDirect3DIndexBuffer9** ppIndexBuffer,[In] void** pSharedHandle)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::CreateIndexBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.IndexBuffer.#ctor(SharpDX.Direct3D9.Device,System.Int32,SharpDX.Direct3D9.Usage,SharpDX.Direct3D9.Pool,System.Boolean,System.IntPtr@)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D9.IndexBuffer\"/> class.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"sizeInBytes\">The size in bytes.</param>\n            <param name=\"usage\">The usage.</param>\n            <param name=\"pool\">The pool.</param>\n            <param name=\"sixteenBit\">if set to <c>true</c> use 16bit index buffer, otherwise, use 32bit index buffer.</param>\n            <param name=\"sharedHandle\">The shared handle.</param>\n            <msdn-id>bb174357</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::CreateIndexBuffer([In] unsigned int Length,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[Out, Fast] IDirect3DIndexBuffer9** ppIndexBuffer,[In] void** pSharedHandle)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::CreateIndexBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.IndexBuffer.Lock(System.Int32,System.Int32,SharpDX.Direct3D9.LockFlags)\">\n            <summary>\n            Locks the specified index buffer.\n            </summary>\n            <param name=\"offsetToLock\">The offset in the buffer.</param>\n            <param name=\"sizeToLock\">The size of the buffer to lock.</param>\n            <param name=\"lockFlags\">The lock flags.</param>\n            <returns>A <see cref=\"T:SharpDX.DataStream\"/> containing the locked index buffer.</returns>\n            <msdn-id>bb205867</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DIndexBuffer9::Lock([In] unsigned int OffsetToLock,[In] unsigned int SizeToLock,[Out] void** ppbData,[In] D3DLOCK Flags)</unmanaged>\t\n            <unmanaged-short>IDirect3DIndexBuffer9::Lock</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.IndexBuffer.LockToPointer(System.Int32,System.Int32,SharpDX.Direct3D9.LockFlags)\">\n            <summary>\n            Locks the specified index buffer.\n            </summary>\n            <param name=\"offsetToLock\">The offset in the buffer.</param>\n            <param name=\"sizeToLock\">The size of the buffer to lock.</param>\n            <param name=\"lockFlags\">The lock flags.</param>\n            <returns>A <see cref=\"T:SharpDX.DataStream\"/> containing the locked index buffer.</returns>\n            <msdn-id>bb205867</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DIndexBuffer9::Lock([In] unsigned int OffsetToLock,[In] unsigned int SizeToLock,[Out] void** ppbData,[In] D3DLOCK Flags)</unmanaged>\t\n            <unmanaged-short>IDirect3DIndexBuffer9::Lock</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.IndexBuffer.Description\">\n            <summary>\t\n            <p>Retrieves a description of the index buffer resource.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DIndexBuffer9::GetDesc']/*\"/>\t\n            <msdn-id>bb205866</msdn-id>\t\n            <unmanaged>GetDesc</unmanaged>\t\n            <unmanaged-short>GetDesc</unmanaged-short>\t\n            <unmanaged>HRESULT IDirect3DIndexBuffer9::GetDesc([Out] D3DINDEXBUFFER_DESC* pDesc)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.ISaveUserData\">\n            <summary>\t\n            <p>This interface is implemented by the application to save any additional user data embedded in .x files. An instance of this interface is passed to <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.SaveMeshHierarchyToFileW(System.String,System.Int32,SharpDX.Direct3D9.Frame@,SharpDX.Direct3D9.AnimationController,SharpDX.Direct3D9.ISaveUserData)\"/></strong>, and D3DX calls the appropriate method on this interface every time the appropriate data is encountered. For example, for each frame object in the .x file, <strong><see cref=\"M:SharpDX.Direct3D9.ISaveUserData.AddFrameChildData(SharpDX.Direct3D9.Frame@,SharpDX.Direct3D9.XFileSaveObject,SharpDX.Direct3D9.XFileSaveData)\"/></strong> is called and passed the child data.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The LPD3DXSAVEUSERDATA type is defined as a reference to this interface. </p><pre><code> typedef interface <see cref=\"T:SharpDX.Direct3D9.ISaveUserData\"/> <see cref=\"T:SharpDX.Direct3D9.ISaveUserData\"/>;\t\n            typedef interface <see cref=\"T:SharpDX.Direct3D9.ISaveUserData\"/> *LPD3DXSAVEUSERDATA;\t\n            </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXSaveUserData']/*\"/>\t\n            <msdn-id>bb174199</msdn-id>\t\n            <unmanaged>ID3DXSaveUserData</unmanaged>\t\n            <unmanaged-short>ID3DXSaveUserData</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ISaveUserData.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D9.ISaveUserData\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ISaveUserData.op_Explicit(System.IntPtr)~SharpDX.Direct3D9.ISaveUserData\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D9.ISaveUserData\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ISaveUserData.AddFrameChildData(SharpDX.Direct3D9.Frame@,SharpDX.Direct3D9.XFileSaveObject,SharpDX.Direct3D9.XFileSaveData)\">\n            <summary>\t\n            <p>Add child data to the frame.</p>\t\n            </summary>\t\n            <param name=\"frameRef\"><dd>  <p>Pointer to a mesh container. See <strong><see cref=\"T:SharpDX.Direct3D9.Frame\"/></strong>.</p> </dd></param>\t\n            <param name=\"xofSaveRef\"><dd>  <p>Pointer to a .x file save object. Use the reference to call <strong><see cref=\"M:SharpDX.Direct3D9.XFileSaveObject.AddDataObject(System.Guid,System.String,System.Guid,SharpDX.PointerSize,System.IntPtr,SharpDX.Direct3D9.XFileSaveData@)\"/></strong> to add a child data object. Do not save the data with <strong><see cref=\"M:SharpDX.Direct3D9.XFileSaveObject.Save\"/></strong>.</p> </dd></param>\t\n            <param name=\"xofFrameDataRef\"><dd>  <p>Pointer to a .x file data node. Use the reference to call <strong><see cref=\"M:SharpDX.Direct3D9.XFileSaveData.AddDataObject(System.Guid,System.String,System.Guid,SharpDX.PointerSize,System.IntPtr,SharpDX.Direct3D9.XFileSaveData@)\"/></strong> to add a child data object.</p> </dd></param>\t\n            <returns><p>The return values of this method are implemented by an application programmer. In general, if no error occurs, program the method to return <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. Otherwise, program the method to return an appropriate error message from D3DERR or <strong>D3DXERR</strong>, as this will cause <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.LoadMeshHierarchyFromXW(System.String,System.Int32,SharpDX.Direct3D9.Device,SharpDX.Direct3D9.IAllocateHierarchy,SharpDX.Direct3D9.ILoadUserData,SharpDX.Direct3D9.Frame@,SharpDX.Direct3D9.AnimationController@)\"/></strong> to fail also, and return the error.</p></returns>\t\n            <remarks>\t\n            <p> <strong><see cref=\"M:SharpDX.Direct3D9.ISaveUserData.RegisterTemplates(SharpDX.Direct3D9.XFile)\"/></strong> and <strong><see cref=\"M:SharpDX.Direct3D9.ISaveUserData.SaveTemplates(SharpDX.Direct3D9.XFileSaveObject)\"/></strong> provide a mechanism for adding a template to a .x file for saving user data.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXSaveUserData::AddFrameChildData']/*\"/>\t\n            <msdn-id>bb174200</msdn-id>\t\n            <unmanaged>HRESULT ID3DXSaveUserData::AddFrameChildData([In] const D3DXFRAME* pFrame,[In] ID3DXFileSaveObject* pXofSave,[In] ID3DXFileSaveData* pXofFrameData)</unmanaged>\t\n            <unmanaged-short>ID3DXSaveUserData::AddFrameChildData</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ISaveUserData.AddMeshChildData(SharpDX.Direct3D9.MeshContainer,SharpDX.Direct3D9.XFileSaveObject,SharpDX.Direct3D9.XFileSaveData)\">\n            <summary>\t\n            <p>Add child data to the mesh.</p>\t\n            </summary>\t\n            <param name=\"meshContainerRef\"><dd>  <p>Pointer to a mesh container. See <strong><see cref=\"T:SharpDX.Direct3D9.MeshContainer\"/></strong>.</p> </dd></param>\t\n            <param name=\"xofSaveRef\"><dd>  <p>Pointer to a .x file save object. Use the reference to call <strong><see cref=\"M:SharpDX.Direct3D9.XFileSaveObject.AddDataObject(System.Guid,System.String,System.Guid,SharpDX.PointerSize,System.IntPtr,SharpDX.Direct3D9.XFileSaveData@)\"/></strong> to add a child data object. Do not save the data with <strong><see cref=\"M:SharpDX.Direct3D9.XFileSaveObject.Save\"/></strong>.</p> </dd></param>\t\n            <param name=\"xofMeshDataRef\"><dd>  <p>Pointer to a .x file data node. Use the reference to call <strong><see cref=\"M:SharpDX.Direct3D9.XFileSaveData.AddDataObject(System.Guid,System.String,System.Guid,SharpDX.PointerSize,System.IntPtr,SharpDX.Direct3D9.XFileSaveData@)\"/></strong> to add a child data object.</p> </dd></param>\t\n            <returns><p>The return values of this method are implemented by an application programmer. In general, if no error occurs, program the method to return <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. Otherwise, program the method to return an appropriate error message from D3DERR or <strong>D3DXERR</strong>, as this will cause <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.LoadMeshHierarchyFromXW(System.String,System.Int32,SharpDX.Direct3D9.Device,SharpDX.Direct3D9.IAllocateHierarchy,SharpDX.Direct3D9.ILoadUserData,SharpDX.Direct3D9.Frame@,SharpDX.Direct3D9.AnimationController@)\"/></strong> to fail also, and return the error.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXSaveUserData::AddMeshChildData']/*\"/>\t\n            <msdn-id>bb174201</msdn-id>\t\n            <unmanaged>HRESULT ID3DXSaveUserData::AddMeshChildData([In] const D3DXMESHCONTAINER* pMeshContainer,[In] ID3DXFileSaveObject* pXofSave,[In] ID3DXFileSaveData* pXofMeshData)</unmanaged>\t\n            <unmanaged-short>ID3DXSaveUserData::AddMeshChildData</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ISaveUserData.AddTopLevelDataObjectsPre(SharpDX.Direct3D9.XFileSaveObject)\">\n            <summary>\t\n            <p>Add a top level object before the frame hierarchy.</p>\t\n            </summary>\t\n            <param name=\"xofSaveRef\"><dd>  <p>Pointer to a .x file save object. Use this reference to call <strong>IDirectXFileSaveObject::CreateDataObject</strong> to create the data object to be saved. Then call <strong>IDirectXFileSaveObject::SaveData</strong> to save the data.</p> </dd></param>\t\n            <returns><p>The return values of this method are implemented by an application programmer. In general, if no error occurs, program the method to return <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. Otherwise, program the method to return an appropriate error message from D3DERR or <strong>D3DXERR</strong>, as this will cause <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.LoadMeshHierarchyFromXW(System.String,System.Int32,SharpDX.Direct3D9.Device,SharpDX.Direct3D9.IAllocateHierarchy,SharpDX.Direct3D9.ILoadUserData,SharpDX.Direct3D9.Frame@,SharpDX.Direct3D9.AnimationController@)\"/></strong> to fail also, and return the error.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXSaveUserData::AddTopLevelDataObjectsPre']/*\"/>\t\n            <msdn-id>bb174203</msdn-id>\t\n            <unmanaged>HRESULT ID3DXSaveUserData::AddTopLevelDataObjectsPre([In] ID3DXFileSaveObject* pXofSave)</unmanaged>\t\n            <unmanaged-short>ID3DXSaveUserData::AddTopLevelDataObjectsPre</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ISaveUserData.AddTopLevelDataObjectsPost(SharpDX.Direct3D9.XFileSaveObject)\">\n            <summary>\t\n            <p>Add a top level object after the frame hierarchy.</p>\t\n            </summary>\t\n            <param name=\"xofSaveRef\"><dd>  <p>Pointer to a .x file save object. Use this reference to call <strong>IDirectXFileSaveObject::CreateDataObject</strong> to create the data object to be saved. Then call <strong>IDirectXFileSaveObject::SaveData</strong> to save the data.</p> </dd></param>\t\n            <returns><p>The return values of this method are implemented by an application programmer.In general, if no error occurs, program the method to return <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. Otherwise, program the method to return an appropriate error message from D3DERR or <strong>D3DXERR</strong>, as this will cause <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.LoadMeshHierarchyFromXW(System.String,System.Int32,SharpDX.Direct3D9.Device,SharpDX.Direct3D9.IAllocateHierarchy,SharpDX.Direct3D9.ILoadUserData,SharpDX.Direct3D9.Frame@,SharpDX.Direct3D9.AnimationController@)\"/></strong> to fail also, and return the error.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXSaveUserData::AddTopLevelDataObjectsPost']/*\"/>\t\n            <msdn-id>bb174202</msdn-id>\t\n            <unmanaged>HRESULT ID3DXSaveUserData::AddTopLevelDataObjectsPost([In] ID3DXFileSaveObject* pXofSave)</unmanaged>\t\n            <unmanaged-short>ID3DXSaveUserData::AddTopLevelDataObjectsPost</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ISaveUserData.RegisterTemplates(SharpDX.Direct3D9.XFile)\">\n            <summary>\t\n            <p>A callback for the user to register a .x file template.</p>\t\n            </summary>\t\n            <param name=\"xFileApiRef\"><dd>  <p>Use this reference to register user-defined .x file templates. See <strong><see cref=\"T:SharpDX.Direct3D9.XFile\"/></strong>. Do not use this parameter to add data objects.</p> </dd></param>\t\n            <returns><p>The return values of this method are implemented by an application programmer.In general, if no error occurs, program the method to return <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. Otherwise, program the method to return an appropriate error message from D3DERR or <strong>D3DXERR</strong>, as this will cause <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.LoadMeshHierarchyFromXW(System.String,System.Int32,SharpDX.Direct3D9.Device,SharpDX.Direct3D9.IAllocateHierarchy,SharpDX.Direct3D9.ILoadUserData,SharpDX.Direct3D9.Frame@,SharpDX.Direct3D9.AnimationController@)\"/></strong> to fail also, and return the error.</p></returns>\t\n            <remarks>\t\n            <p><strong><see cref=\"M:SharpDX.Direct3D9.ISaveUserData.RegisterTemplates(SharpDX.Direct3D9.XFile)\"/></strong> and <strong><see cref=\"M:SharpDX.Direct3D9.ISaveUserData.SaveTemplates(SharpDX.Direct3D9.XFileSaveObject)\"/></strong> provide a mechanism for adding a template to a .x file for saving user data.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXSaveUserData::RegisterTemplates']/*\"/>\t\n            <msdn-id>bb174204</msdn-id>\t\n            <unmanaged>HRESULT ID3DXSaveUserData::RegisterTemplates([In] ID3DXFile* pXFileApi)</unmanaged>\t\n            <unmanaged-short>ID3DXSaveUserData::RegisterTemplates</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ISaveUserData.SaveTemplates(SharpDX.Direct3D9.XFileSaveObject)\">\n            <summary>\t\n            <p>A callback for the user to save a .x file template.</p>\t\n            </summary>\t\n            <param name=\"xofSaveRef\"><dd>  <p>Pointer to a .x file save object. Do not use this parameter to add data objects. See <strong><see cref=\"T:SharpDX.Direct3D9.XFileSaveObject\"/></strong>.</p> </dd></param>\t\n            <returns><p>The return values of this method are implemented by an application programmer.In general, if no error occurs, program the method to return <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. Otherwise, program the method to return an appropriate error message from D3DERR or <strong>D3DXERR</strong>, as this will cause <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.LoadMeshHierarchyFromXW(System.String,System.Int32,SharpDX.Direct3D9.Device,SharpDX.Direct3D9.IAllocateHierarchy,SharpDX.Direct3D9.ILoadUserData,SharpDX.Direct3D9.Frame@,SharpDX.Direct3D9.AnimationController@)\"/></strong> to fail also, and return the error.</p></returns>\t\n            <remarks>\t\n            <p> <strong><see cref=\"M:SharpDX.Direct3D9.ISaveUserData.RegisterTemplates(SharpDX.Direct3D9.XFile)\"/></strong> and <strong><see cref=\"M:SharpDX.Direct3D9.ISaveUserData.SaveTemplates(SharpDX.Direct3D9.XFileSaveObject)\"/></strong> provide a mechanism for adding a template to a .x file for saving user data.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXSaveUserData::SaveTemplates']/*\"/>\t\n            <msdn-id>bb174205</msdn-id>\t\n            <unmanaged>HRESULT ID3DXSaveUserData::SaveTemplates([In] ID3DXFileSaveObject* pXofSave)</unmanaged>\t\n            <unmanaged-short>ID3DXSaveUserData::SaveTemplates</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.KeyframedAnimationSet\">\n            <summary>\t\n            <p>An application uses the methods of this interface to implement a key frame animation set.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Create a keyframed animation set with <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateKeyframedAnimationSet(System.String,System.Double,SharpDX.Direct3D9.PlaybackType,System.Int32,System.Int32,SharpDX.Direct3D9.CallbackKey,SharpDX.Direct3D9.KeyframedAnimationSet@)\"/></strong>.</p><p>The LPD3DXKEYFRAMEDANIMATIONSET type is defined as a reference to this interface. </p><pre><code> typedef interface <see cref=\"T:SharpDX.Direct3D9.KeyframedAnimationSet\"/> <see cref=\"T:SharpDX.Direct3D9.KeyframedAnimationSet\"/>;\t\n            typedef interface <see cref=\"T:SharpDX.Direct3D9.KeyframedAnimationSet\"/> *LPD3DXKEYFRAMEDANIMATIONSET;\t\n            </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXKeyframedAnimationSet']/*\"/>\t\n            <msdn-id>bb173989</msdn-id>\t\n            <unmanaged>ID3DXKeyframedAnimationSet</unmanaged>\t\n            <unmanaged-short>ID3DXKeyframedAnimationSet</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.KeyframedAnimationSet.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D9.KeyframedAnimationSet\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.KeyframedAnimationSet.op_Explicit(System.IntPtr)~SharpDX.Direct3D9.KeyframedAnimationSet\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D9.KeyframedAnimationSet\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.KeyframedAnimationSet.GetPlaybackType\">\n            <summary>\t\n            <p>Gets the type of the animation set playback loop.</p>\t\n            </summary>\t\n            <returns><p>Type of the animation set playback loop. See <strong><see cref=\"T:SharpDX.Direct3D9.PlaybackType\"/></strong>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXKeyframedAnimationSet::GetPlaybackType']/*\"/>\t\n            <msdn-id>bb173997</msdn-id>\t\n            <unmanaged>D3DXPLAYBACK_TYPE ID3DXKeyframedAnimationSet::GetPlaybackType()</unmanaged>\t\n            <unmanaged-short>ID3DXKeyframedAnimationSet::GetPlaybackType</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.KeyframedAnimationSet.GetSourceTicksPerSecond\">\n            <summary>\t\n            <p>Gets the number of animation key frame ticks that occur per second.</p>\t\n            </summary>\t\n            <returns><p>Number of animation key frame ticks that occur per second.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXKeyframedAnimationSet::GetSourceTicksPerSecond']/*\"/>\t\n            <msdn-id>bb174004</msdn-id>\t\n            <unmanaged>double ID3DXKeyframedAnimationSet::GetSourceTicksPerSecond()</unmanaged>\t\n            <unmanaged-short>ID3DXKeyframedAnimationSet::GetSourceTicksPerSecond</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.KeyframedAnimationSet.GetNumScaleKeys(System.Int32)\">\n            <summary>\t\n            <p>Gets the number of scale keys in the specified key frame animation.</p>\t\n            </summary>\t\n            <param name=\"animation\"><dd>  <p>Animation index.</p> </dd></param>\t\n            <returns><p>Number of scale keys in the specified key frame animation.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXKeyframedAnimationSet::GetNumScaleKeys']/*\"/>\t\n            <msdn-id>bb173995</msdn-id>\t\n            <unmanaged>unsigned int ID3DXKeyframedAnimationSet::GetNumScaleKeys([In] unsigned int Animation)</unmanaged>\t\n            <unmanaged-short>ID3DXKeyframedAnimationSet::GetNumScaleKeys</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.KeyframedAnimationSet.GetScaleKeys(System.Int32,SharpDX.Direct3D9.ScaleKey)\">\n            <summary>\t\n            <p>Fills an array with scale key data used for key frame animation.</p>\t\n            </summary>\t\n            <param name=\"animation\"><dd>  <p>Animation index.</p> </dd></param>\t\n            <param name=\"scaleKeysRef\"><dd>  <p>Pointer to a user-allocated array of <strong><see cref=\"T:SharpDX.Direct3D9.ScaleKey\"/></strong> vectors that the method is to fill with animation scale data.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the following value will be returned: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXKeyframedAnimationSet::GetScaleKeys']/*\"/>\t\n            <msdn-id>bb174003</msdn-id>\t\n            <unmanaged>HRESULT ID3DXKeyframedAnimationSet::GetScaleKeys([In] unsigned int Animation,[In] D3DXKEY_VECTOR3* pScaleKeys)</unmanaged>\t\n            <unmanaged-short>ID3DXKeyframedAnimationSet::GetScaleKeys</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.KeyframedAnimationSet.GetScaleKey(System.Int32,System.Int32,SharpDX.Direct3D9.ScaleKey)\">\n            <summary>\t\n            <p>Get scale information for a specific key frame in the animation set.</p>\t\n            </summary>\t\n            <param name=\"animation\"><dd>  <p>Animation index.</p> </dd></param>\t\n            <param name=\"key\"><dd>  <p>Key frame.</p> </dd></param>\t\n            <param name=\"scaleKeyRef\"><dd>  <p>Pointer to the scale data. See  <strong><see cref=\"T:SharpDX.Direct3D9.ScaleKey\"/></strong>.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the following value will be returned: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXKeyframedAnimationSet::GetScaleKey']/*\"/>\t\n            <msdn-id>bb174002</msdn-id>\t\n            <unmanaged>HRESULT ID3DXKeyframedAnimationSet::GetScaleKey([In] unsigned int Animation,[In] unsigned int Key,[In] D3DXKEY_VECTOR3* pScaleKey)</unmanaged>\t\n            <unmanaged-short>ID3DXKeyframedAnimationSet::GetScaleKey</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.KeyframedAnimationSet.SetScaleKey(System.Int32,System.Int32,SharpDX.Direct3D9.ScaleKey)\">\n            <summary>\t\n            <p>Set scale information for a specific key frame in the animation set.</p>\t\n            </summary>\t\n            <param name=\"animation\"><dd>  <p>Animation index.</p> </dd></param>\t\n            <param name=\"key\"><dd>  <p>Key frame.</p> </dd></param>\t\n            <param name=\"scaleKeyRef\"><dd>  <p>Pointer to the scale data. See <strong><see cref=\"T:SharpDX.Direct3D9.ScaleKey\"/></strong>.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the following value will be returned: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXKeyframedAnimationSet::SetScaleKey']/*\"/>\t\n            <msdn-id>bb174010</msdn-id>\t\n            <unmanaged>HRESULT ID3DXKeyframedAnimationSet::SetScaleKey([In] unsigned int Animation,[In] unsigned int Key,[In] D3DXKEY_VECTOR3* pScaleKey)</unmanaged>\t\n            <unmanaged-short>ID3DXKeyframedAnimationSet::SetScaleKey</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.KeyframedAnimationSet.GetNumRotationKeys(System.Int32)\">\n            <summary>\t\n            <p>Gets the number of rotation keys in the specified key frame animation.</p>\t\n            </summary>\t\n            <param name=\"animation\"><dd>  <p>Animation index.</p> </dd></param>\t\n            <returns><p>Number of rotation keys in the specified key frame animation.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXKeyframedAnimationSet::GetNumRotationKeys']/*\"/>\t\n            <msdn-id>bb173994</msdn-id>\t\n            <unmanaged>unsigned int ID3DXKeyframedAnimationSet::GetNumRotationKeys([In] unsigned int Animation)</unmanaged>\t\n            <unmanaged-short>ID3DXKeyframedAnimationSet::GetNumRotationKeys</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.KeyframedAnimationSet.GetRotationKeys(System.Int32,SharpDX.Direct3D9.RotationKey@)\">\n            <summary>\t\n            <p>Fills an array with rotational key data used for key frame animation.</p>\t\n            </summary>\t\n            <param name=\"animation\"><dd>  <p>Animation index.</p> </dd></param>\t\n            <param name=\"rotationKeysRef\"><dd>  <p>Pointer to a user-allocated array of <strong><see cref=\"T:SharpDX.Direct3D9.RotationKey\"/></strong> quaternions that the method is to fill with animation rotation data.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the following value will be returned: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXKeyframedAnimationSet::GetRotationKeys']/*\"/>\t\n            <msdn-id>bb174001</msdn-id>\t\n            <unmanaged>HRESULT ID3DXKeyframedAnimationSet::GetRotationKeys([In] unsigned int Animation,[In] D3DXKEY_QUATERNION* pRotationKeys)</unmanaged>\t\n            <unmanaged-short>ID3DXKeyframedAnimationSet::GetRotationKeys</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.KeyframedAnimationSet.GetRotationKey(System.Int32,System.Int32,SharpDX.Direct3D9.RotationKey@)\">\n            <summary>\t\n            <p>Get rotation information for a specific key frame in the animation set.</p>\t\n            </summary>\t\n            <param name=\"animation\"><dd>  <p>Animation index.</p> </dd></param>\t\n            <param name=\"key\"><dd>  <p>Key frame.</p> </dd></param>\t\n            <param name=\"rotationKeyRef\"><dd>  <p>Pointer to the rotation data. See  <strong><see cref=\"T:SharpDX.Direct3D9.RotationKey\"/></strong>.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the following value will be returned: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXKeyframedAnimationSet::GetRotationKey']/*\"/>\t\n            <msdn-id>bb173998</msdn-id>\t\n            <unmanaged>HRESULT ID3DXKeyframedAnimationSet::GetRotationKey([In] unsigned int Animation,[In] unsigned int Key,[In] D3DXKEY_QUATERNION* pRotationKey)</unmanaged>\t\n            <unmanaged-short>ID3DXKeyframedAnimationSet::GetRotationKey</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.KeyframedAnimationSet.SetRotationKey(System.Int32,System.Int32,SharpDX.Direct3D9.RotationKey@)\">\n            <summary>\t\n            <p>Set rotation information for a specific key frame in the animation set.</p>\t\n            </summary>\t\n            <param name=\"animation\"><dd>  <p>Animation index.</p> </dd></param>\t\n            <param name=\"key\"><dd>  <p>Key frame.</p> </dd></param>\t\n            <param name=\"rotationKeyRef\"><dd>  <p>Pointer to the rotation data. See <strong><see cref=\"T:SharpDX.Direct3D9.ScaleKey\"/></strong>.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the following value will be returned: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXKeyframedAnimationSet::SetRotationKey']/*\"/>\t\n            <msdn-id>bb174009</msdn-id>\t\n            <unmanaged>HRESULT ID3DXKeyframedAnimationSet::SetRotationKey([In] unsigned int Animation,[In] unsigned int Key,[In] D3DXKEY_QUATERNION* pRotationKey)</unmanaged>\t\n            <unmanaged-short>ID3DXKeyframedAnimationSet::SetRotationKey</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.KeyframedAnimationSet.GetNumTranslationKeys(System.Int32)\">\n            <summary>\t\n            <p>Gets the number of translation keys in the specified key frame animation.</p>\t\n            </summary>\t\n            <param name=\"animation\"><dd>  <p>Animation index.</p> </dd></param>\t\n            <returns><p>Number of translation keys in the specified key frame animation.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXKeyframedAnimationSet::GetNumTranslationKeys']/*\"/>\t\n            <msdn-id>bb173996</msdn-id>\t\n            <unmanaged>unsigned int ID3DXKeyframedAnimationSet::GetNumTranslationKeys([In] unsigned int Animation)</unmanaged>\t\n            <unmanaged-short>ID3DXKeyframedAnimationSet::GetNumTranslationKeys</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.KeyframedAnimationSet.GetTranslationKeys(System.Int32,SharpDX.Direct3D9.ScaleKey)\">\n            <summary>\t\n            <p>Fills an array with translational key data used for key frame animation.</p>\t\n            </summary>\t\n            <param name=\"animation\"><dd>  <p>Animation index.</p> </dd></param>\t\n            <param name=\"translationKeysRef\"><dd>  <p>Pointer to a user-allocated array of <strong><see cref=\"T:SharpDX.Direct3D9.ScaleKey\"/></strong> vectors that the method is to fill with animation translation data.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the following value will be returned: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXKeyframedAnimationSet::GetTranslationKeys']/*\"/>\t\n            <msdn-id>bb174006</msdn-id>\t\n            <unmanaged>HRESULT ID3DXKeyframedAnimationSet::GetTranslationKeys([In] unsigned int Animation,[In] D3DXKEY_VECTOR3* pTranslationKeys)</unmanaged>\t\n            <unmanaged-short>ID3DXKeyframedAnimationSet::GetTranslationKeys</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.KeyframedAnimationSet.GetTranslationKey(System.Int32,System.Int32,SharpDX.Direct3D9.ScaleKey)\">\n            <summary>\t\n            <p>Get translation information for a specific key frame in the animation set.</p>\t\n            </summary>\t\n            <param name=\"animation\"><dd>  <p>Animation index.</p> </dd></param>\t\n            <param name=\"key\"><dd>  <p>Key Frame.</p> </dd></param>\t\n            <param name=\"translationKeyRef\"><dd>  <p>Pointer to the rotation information. See <strong><see cref=\"T:SharpDX.Direct3D9.ScaleKey\"/></strong>.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the following value will be returned: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXKeyframedAnimationSet::GetTranslationKey']/*\"/>\t\n            <msdn-id>bb174005</msdn-id>\t\n            <unmanaged>HRESULT ID3DXKeyframedAnimationSet::GetTranslationKey([In] unsigned int Animation,[In] unsigned int Key,[In] D3DXKEY_VECTOR3* pTranslationKey)</unmanaged>\t\n            <unmanaged-short>ID3DXKeyframedAnimationSet::GetTranslationKey</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.KeyframedAnimationSet.SetTranslationKey(System.Int32,System.Int32,SharpDX.Direct3D9.ScaleKey)\">\n            <summary>\t\n            <p>Set translation information for a specific key frame in the animation set.</p>\t\n            </summary>\t\n            <param name=\"animation\"><dd>  <p>Animation index.</p> </dd></param>\t\n            <param name=\"key\"><dd>  <p>Key Frame.</p> </dd></param>\t\n            <param name=\"translationKeyRef\"><dd>  <p>Pointer to the translation data. See <strong><see cref=\"T:SharpDX.Direct3D9.ScaleKey\"/></strong>.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the following value will be returned: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXKeyframedAnimationSet::SetTranslationKey']/*\"/>\t\n            <msdn-id>bb174011</msdn-id>\t\n            <unmanaged>HRESULT ID3DXKeyframedAnimationSet::SetTranslationKey([In] unsigned int Animation,[In] unsigned int Key,[In] D3DXKEY_VECTOR3* pTranslationKey)</unmanaged>\t\n            <unmanaged-short>ID3DXKeyframedAnimationSet::SetTranslationKey</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.KeyframedAnimationSet.GetNumCallbackKeys\">\n            <summary>\t\n            <p>Gets the number of callback keys in the animation set.</p>\t\n            </summary>\t\n            <returns><p>Number of callback keys in the animation set.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXKeyframedAnimationSet::GetNumCallbackKeys']/*\"/>\t\n            <msdn-id>bb173993</msdn-id>\t\n            <unmanaged>unsigned int ID3DXKeyframedAnimationSet::GetNumCallbackKeys()</unmanaged>\t\n            <unmanaged-short>ID3DXKeyframedAnimationSet::GetNumCallbackKeys</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.KeyframedAnimationSet.GetCallbackKeys(SharpDX.Direct3D9.CallbackKey)\">\n            <summary>\t\n            <p>Fills an array with callback key data used for key frame animation.</p>\t\n            </summary>\t\n            <param name=\"callbackKeysRef\"><dd>  <p>Pointer to a user-allocated array of <strong><see cref=\"T:SharpDX.Direct3D9.CallbackKey\"/></strong> structures that the method is to fill with callback data.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the following value will be returned: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXKeyframedAnimationSet::GetCallbackKeys']/*\"/>\t\n            <msdn-id>bb173992</msdn-id>\t\n            <unmanaged>HRESULT ID3DXKeyframedAnimationSet::GetCallbackKeys([In] D3DXKEY_CALLBACK* pCallbackKeys)</unmanaged>\t\n            <unmanaged-short>ID3DXKeyframedAnimationSet::GetCallbackKeys</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.KeyframedAnimationSet.GetCallbackKey(System.Int32,SharpDX.Direct3D9.CallbackKey)\">\n            <summary>\t\n            <p>Gets information about a specific callback in the animation set.</p>\t\n            </summary>\t\n            <param name=\"key\"><dd>  <p>Animation index.</p> </dd></param>\t\n            <param name=\"callbackKeyRef\"><dd>  <p>Pointer to the <strong>callback function</strong>.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the following value will be returned: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXKeyframedAnimationSet::GetCallbackKey']/*\"/>\t\n            <msdn-id>bb173991</msdn-id>\t\n            <unmanaged>HRESULT ID3DXKeyframedAnimationSet::GetCallbackKey([In] unsigned int Key,[In] D3DXKEY_CALLBACK* pCallbackKey)</unmanaged>\t\n            <unmanaged-short>ID3DXKeyframedAnimationSet::GetCallbackKey</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.KeyframedAnimationSet.SetCallbackKey(System.Int32,SharpDX.Direct3D9.CallbackKey)\">\n            <summary>\t\n            <p>Sets information about a specific callback in the animation set.</p>\t\n            </summary>\t\n            <param name=\"key\"><dd>  <p>Animation index.</p> </dd></param>\t\n            <param name=\"callbackKeyRef\"><dd>  <p>Pointer to the <strong>callback function</strong>.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the following value will be returned: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXKeyframedAnimationSet::SetCallbackKey']/*\"/>\t\n            <msdn-id>bb174008</msdn-id>\t\n            <unmanaged>HRESULT ID3DXKeyframedAnimationSet::SetCallbackKey([In] unsigned int Key,[In] D3DXKEY_CALLBACK* pCallbackKey)</unmanaged>\t\n            <unmanaged-short>ID3DXKeyframedAnimationSet::SetCallbackKey</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.KeyframedAnimationSet.UnregisterScaleKey(System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Removes the scale data at the specified key frame.</p>\t\n            </summary>\t\n            <param name=\"animation\"><dd>  <p>Animation identifier.</p> </dd></param>\t\n            <param name=\"key\"><dd>  <p>Key frame.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the following value will be returned: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>This method is slow and should not be used after an animation has begun to play.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXKeyframedAnimationSet::UnregisterScaleKey']/*\"/>\t\n            <msdn-id>bb174014</msdn-id>\t\n            <unmanaged>HRESULT ID3DXKeyframedAnimationSet::UnregisterScaleKey([In] unsigned int Animation,[In] unsigned int Key)</unmanaged>\t\n            <unmanaged-short>ID3DXKeyframedAnimationSet::UnregisterScaleKey</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.KeyframedAnimationSet.UnregisterRotationKey(System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Removes the rotation data at the specified key frame.</p>\t\n            </summary>\t\n            <param name=\"animation\"><dd>  <p>Animation identifier.</p> </dd></param>\t\n            <param name=\"key\"><dd>  <p>Key frame.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the following value will be returned: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>This method is slow and should not be used after an animation has begun to play.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXKeyframedAnimationSet::UnregisterRotationKey']/*\"/>\t\n            <msdn-id>bb174013</msdn-id>\t\n            <unmanaged>HRESULT ID3DXKeyframedAnimationSet::UnregisterRotationKey([In] unsigned int Animation,[In] unsigned int Key)</unmanaged>\t\n            <unmanaged-short>ID3DXKeyframedAnimationSet::UnregisterRotationKey</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.KeyframedAnimationSet.UnregisterTranslationKey(System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Removes the translation data at the specified key frame.</p>\t\n            </summary>\t\n            <param name=\"animation\"><dd>  <p>Animation identifier.</p> </dd></param>\t\n            <param name=\"key\"><dd>  <p>Key frame.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the following value will be returned: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>This method is slow and should not be used after an animation has begun to play.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXKeyframedAnimationSet::UnregisterTranslationKey']/*\"/>\t\n            <msdn-id>bb174015</msdn-id>\t\n            <unmanaged>HRESULT ID3DXKeyframedAnimationSet::UnregisterTranslationKey([In] unsigned int Animation,[In] unsigned int Key)</unmanaged>\t\n            <unmanaged-short>ID3DXKeyframedAnimationSet::UnregisterTranslationKey</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.KeyframedAnimationSet.RegisterAnimationSRTKeys(System.String,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.ScaleKey,SharpDX.Direct3D9.RotationKey@,SharpDX.Direct3D9.ScaleKey,System.Int32)\">\n            <summary>\t\n            <p>Register the scale, rotate, and translate (SRT) key frame data for an animation.</p>\t\n            </summary>\t\n            <param name=\"nameRef\"><dd>  <p>Pointer to the animation name.</p> </dd></param>\t\n            <param name=\"numScaleKeys\"><dd>  <p>Number of scale keys.</p> </dd></param>\t\n            <param name=\"numRotationKeys\"><dd>  <p>Number of rotation keys.</p> </dd></param>\t\n            <param name=\"numTranslationKeys\"><dd>  <p>Number of translation keys.</p> </dd></param>\t\n            <param name=\"scaleKeysRef\"><dd>  <p>Address of a reference to a user-allocated array of <strong><see cref=\"T:SharpDX.Direct3D9.ScaleKey\"/></strong> vectors that the method fills with scale data.</p> </dd></param>\t\n            <param name=\"rotationKeysRef\"><dd>  <p>Address of a reference to a user-allocated array of <strong><see cref=\"T:SharpDX.Direct3D9.RotationKey\"/></strong> quaternions that the method fills with rotation data.</p> </dd></param>\t\n            <param name=\"translationKeysRef\"><dd>  <p>Address of a reference to a user-allocated array of <strong><see cref=\"T:SharpDX.Direct3D9.ScaleKey\"/></strong> vectors that the method fills with translation data.</p> </dd></param>\t\n            <param name=\"animationIndexRef\"><dd>  <p>Returns the animation index.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the following value will be returned: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/></p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXKeyframedAnimationSet::RegisterAnimationSRTKeys']/*\"/>\t\n            <msdn-id>bb174007</msdn-id>\t\n            <unmanaged>HRESULT ID3DXKeyframedAnimationSet::RegisterAnimationSRTKeys([In] const char* pName,[In] unsigned int NumScaleKeys,[In] unsigned int NumRotationKeys,[In] unsigned int NumTranslationKeys,[In] const D3DXKEY_VECTOR3* pScaleKeys,[In] const D3DXKEY_QUATERNION* pRotationKeys,[In] const D3DXKEY_VECTOR3* pTranslationKeys,[In] unsigned int* pAnimationIndex)</unmanaged>\t\n            <unmanaged-short>ID3DXKeyframedAnimationSet::RegisterAnimationSRTKeys</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.KeyframedAnimationSet.Compress(System.Int32,System.Single,SharpDX.Direct3D9.Frame@,SharpDX.Direct3D.Blob@)\">\n            <summary>\t\n            <p>Transforms animations in an animation set into a compressed format and returns a reference to the buffer that stores the compressed data.</p>\t\n            </summary>\t\n            <param name=\"flags\"><dd>  <p>One of the <strong><see cref=\"T:SharpDX.Direct3D9.CompressionFlags\"/></strong> values that define the compression mode used for storing compressed animation set data. <see cref=\"F:SharpDX.Direct3D9.CompressionFlags.Default\"/> is the only value currently supported.</p> </dd></param>\t\n            <param name=\"lossiness\"><dd>  <p>Desired compression loss ratio, in the range from 0 to 1.</p> </dd></param>\t\n            <param name=\"hierarchyRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.Frame\"/></strong> transformation frame hierarchy. Can be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"compressedDataOut\"><dd>  <p>Address of a reference to the <strong><see cref=\"T:SharpDX.Direct3D.Blob\"/></strong> compressed animation set.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the return value can be one of the following values: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXKeyframedAnimationSet::Compress']/*\"/>\t\n            <msdn-id>bb173990</msdn-id>\t\n            <unmanaged>HRESULT ID3DXKeyframedAnimationSet::Compress([In] unsigned int Flags,[In] float Lossiness,[In] D3DXFRAME* pHierarchy,[In] ID3DXBuffer** ppCompressedData)</unmanaged>\t\n            <unmanaged-short>ID3DXKeyframedAnimationSet::Compress</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.KeyframedAnimationSet.UnregisterAnimation(System.Int32)\">\n            <summary>\t\n            <p>Remove the animation data from the animation set.</p>\t\n            </summary>\t\n            <param name=\"index\"><dd>  <p>The animation index.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the following value will be returned: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXKeyframedAnimationSet::UnregisterAnimation']/*\"/>\t\n            <msdn-id>bb174012</msdn-id>\t\n            <unmanaged>HRESULT ID3DXKeyframedAnimationSet::UnregisterAnimation([In] unsigned int Index)</unmanaged>\t\n            <unmanaged-short>ID3DXKeyframedAnimationSet::UnregisterAnimation</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.KeyframedAnimationSet.PlaybackType\">\n            <summary>\t\n            <p>Gets the type of the animation set playback loop.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXKeyframedAnimationSet::GetPlaybackType']/*\"/>\t\n            <msdn-id>bb173997</msdn-id>\t\n            <unmanaged>GetPlaybackType</unmanaged>\t\n            <unmanaged-short>GetPlaybackType</unmanaged-short>\t\n            <unmanaged>D3DXPLAYBACK_TYPE ID3DXKeyframedAnimationSet::GetPlaybackType()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.KeyframedAnimationSet.SourceTicksPerSecond\">\n            <summary>\t\n            <p>Gets the number of animation key frame ticks that occur per second.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXKeyframedAnimationSet::GetSourceTicksPerSecond']/*\"/>\t\n            <msdn-id>bb174004</msdn-id>\t\n            <unmanaged>GetSourceTicksPerSecond</unmanaged>\t\n            <unmanaged-short>GetSourceTicksPerSecond</unmanaged-short>\t\n            <unmanaged>double ID3DXKeyframedAnimationSet::GetSourceTicksPerSecond()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.KeyframedAnimationSet.NumCallbackKeys\">\n            <summary>\t\n            <p>Gets the number of callback keys in the animation set.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXKeyframedAnimationSet::GetNumCallbackKeys']/*\"/>\t\n            <msdn-id>bb173993</msdn-id>\t\n            <unmanaged>GetNumCallbackKeys</unmanaged>\t\n            <unmanaged-short>GetNumCallbackKeys</unmanaged-short>\t\n            <unmanaged>unsigned int ID3DXKeyframedAnimationSet::GetNumCallbackKeys()</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.Line\">\n            <summary>\t\n            <p>The <see cref=\"T:SharpDX.Direct3D9.Line\"/> interface implements line drawing using textured triangles.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Create a line drawing object with <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateLine(SharpDX.Direct3D9.Device,SharpDX.Direct3D9.Line)\"/></strong>.</p><p>The LPD3DXLINE type is defined as a reference to the <strong><see cref=\"T:SharpDX.Direct3D9.Line\"/></strong> interface. </p><pre><code> typedef interface <see cref=\"T:SharpDX.Direct3D9.Line\"/> <see cref=\"T:SharpDX.Direct3D9.Line\"/>;\t\n            typedef interface <see cref=\"T:SharpDX.Direct3D9.Line\"/> *LPD3DXLINE;\t\n            </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXLine']/*\"/>\t\n            <msdn-id>bb174016</msdn-id>\t\n            <unmanaged>ID3DXLine</unmanaged>\t\n            <unmanaged-short>ID3DXLine</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Line.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D9.Line\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Line.op_Explicit(System.IntPtr)~SharpDX.Direct3D9.Line\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D9.Line\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Line.GetDevice(SharpDX.Direct3D9.Device@)\">\n            <summary>\t\n            <p>Retrieves the Direct3D device associated with the line object.</p>\t\n            </summary>\t\n            <param name=\"deviceOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface, representing the Direct3D device object associated with the line object.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXLine::GetDevice']/*\"/>\t\n            <msdn-id>bb174022</msdn-id>\t\n            <unmanaged>HRESULT ID3DXLine::GetDevice([Out] IDirect3DDevice9** ppDevice)</unmanaged>\t\n            <unmanaged-short>ID3DXLine::GetDevice</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Line.Begin\">\n            <summary>\t\n            <p>Prepares a device for drawing lines.</p>\t\n            </summary>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA.</p></returns>\t\n            <remarks>\t\n            <p>Calling <strong><see cref=\"M:SharpDX.Direct3D9.Line.Begin\"/></strong> is optional. If called outside of a <see cref=\"M:SharpDX.Direct3D9.Line.Begin\"/>/<see cref=\"M:SharpDX.Direct3D9.Line.End\"/> sequence, the draw functions will internally call <see cref=\"M:SharpDX.Direct3D9.Line.Begin\"/> and <see cref=\"M:SharpDX.Direct3D9.Line.End\"/>. To avoid extra overhead, this method should be used if more than one draw function will be called successively.</p><p>This method must be called from inside an <strong><see cref=\"M:SharpDX.Direct3D9.Device.BeginScene\"/></strong> and <strong><see cref=\"M:SharpDX.Direct3D9.Device.EndScene\"/></strong> sequence.</p><p><see cref=\"M:SharpDX.Direct3D9.Line.Begin\"/> cannot be used as a substitute for either <strong><see cref=\"M:SharpDX.Direct3D9.Device.BeginScene\"/></strong> or <strong><see cref=\"M:SharpDX.Direct3D9.RenderToSurface.BeginScene(SharpDX.Direct3D9.Surface,SharpDX.Viewport)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXLine::Begin']/*\"/>\t\n            <msdn-id>bb174017</msdn-id>\t\n            <unmanaged>HRESULT ID3DXLine::Begin()</unmanaged>\t\n            <unmanaged-short>ID3DXLine::Begin</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Line.Draw(System.IntPtr,System.Int32,SharpDX.ColorBGRA)\">\n            <summary>\t\n            <p>Draws a line strip in screen space. Input is in the form of an array that defines points (of <strong><see cref=\"T:SharpDX.Vector2\"/></strong>) on the line strip.</p>\t\n            </summary>\t\n            <param name=\"vertexListRef\">No documentation.</param>\t\n            <param name=\"dwVertexListCount\">No documentation.</param>\t\n            <param name=\"color\">No documentation.</param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXLine::Draw']/*\"/>\t\n            <msdn-id>bb174018</msdn-id>\t\n            <unmanaged>HRESULT ID3DXLine::Draw([In] const void* pVertexList,[In] unsigned int dwVertexListCount,[In] D3DCOLOR Color)</unmanaged>\t\n            <unmanaged-short>ID3DXLine::Draw</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Line.DrawTransform(System.IntPtr,System.Int32,SharpDX.Matrix@,SharpDX.ColorBGRA)\">\n            <summary>\t\n            <p>Draws a line strip in screen space with a specified input transformation matrix.</p>\t\n            </summary>\t\n            <param name=\"vertexListRef\"><dd>  <p>Array of vertices that make up the line. See <strong><see cref=\"T:SharpDX.Vector3\"/></strong>.</p> </dd></param>\t\n            <param name=\"dwVertexListCount\"><dd>  <p>Number of vertices in the vertex list.</p> </dd></param>\t\n            <param name=\"transformRef\"><dd>  <p>A scale, rotate, and translate (SRT) matrix for transforming the points. See <strong><see cref=\"T:SharpDX.Matrix\"/></strong>. If this matrix is a projection matrix, any stippled lines will be drawn with a perspective-correct stippling pattern. Or, you can transform the vertices and use <strong><see cref=\"M:SharpDX.Direct3D9.Line.Draw(System.IntPtr,System.Int32,SharpDX.ColorBGRA)\"/></strong> to draw the line with a nonperspective-correct stipple pattern.</p> </dd></param>\t\n            <param name=\"color\"><dd>  <p>Color of the line. See <strong><see cref=\"T:SharpDX.ColorBGRA\"/></strong>.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXLine::DrawTransform']/*\"/>\t\n            <msdn-id>bb174019</msdn-id>\t\n            <unmanaged>HRESULT ID3DXLine::DrawTransform([In] const void* pVertexList,[In] unsigned int dwVertexListCount,[In] const D3DXMATRIX* pTransform,[In] D3DCOLOR Color)</unmanaged>\t\n            <unmanaged-short>ID3DXLine::DrawTransform</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Line.SetPattern(System.Int32)\">\n            <summary>\t\n            <p>Applies a stipple pattern to the line.</p>\t\n            </summary>\t\n            <param name=\"dwPattern\"><dd>  <p>Describes the stipple pattern: 1 is opaque, 0 is transparent.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXLine::SetPattern']/*\"/>\t\n            <msdn-id>bb174031</msdn-id>\t\n            <unmanaged>HRESULT ID3DXLine::SetPattern([In] unsigned int dwPattern)</unmanaged>\t\n            <unmanaged-short>ID3DXLine::SetPattern</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Line.GetPattern\">\n            <summary>\t\n            <p>Gets the line stipple pattern.</p>\t\n            </summary>\t\n            <returns><p>Returns the line stipple pattern: 1 is opaque, 0 is transparent.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXLine::GetPattern']/*\"/>\t\n            <msdn-id>bb174024</msdn-id>\t\n            <unmanaged>unsigned int ID3DXLine::GetPattern()</unmanaged>\t\n            <unmanaged-short>ID3DXLine::GetPattern</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Line.SetPatternScale(System.Single)\">\n            <summary>\t\n            <p>Stretches the stipple pattern along the line direction.</p>\t\n            </summary>\t\n            <param name=\"fPatternScale\"><dd>  <p>Stipple pattern scaling value. 1.0f is the default value and represents no scaling. A value less than 1.0f shrinks the pattern, and a value greater than 1.0 stretches the pattern.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXLine::SetPatternScale']/*\"/>\t\n            <msdn-id>bb174032</msdn-id>\t\n            <unmanaged>HRESULT ID3DXLine::SetPatternScale([In] float fPatternScale)</unmanaged>\t\n            <unmanaged-short>ID3DXLine::SetPatternScale</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Line.GetPatternScale\">\n            <summary>\t\n            <p>Gets the stipple-pattern scale value.</p>\t\n            </summary>\t\n            <returns><p>Returns the value used to scale the stipple-pattern. 1.0f is the default value and represents no scaling. A value less than 1.0f shrinks the pattern, and a value greater than 1.0 stretches the pattern.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXLine::GetPatternScale']/*\"/>\t\n            <msdn-id>bb174025</msdn-id>\t\n            <unmanaged>float ID3DXLine::GetPatternScale()</unmanaged>\t\n            <unmanaged-short>ID3DXLine::GetPatternScale</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Line.SetWidth(System.Single)\">\n            <summary>\t\n            <p>Specifies the thickness of the line.</p>\t\n            </summary>\t\n            <param name=\"fWidth\"><dd>  <p>Describes the line width.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXLine::SetWidth']/*\"/>\t\n            <msdn-id>bb174033</msdn-id>\t\n            <unmanaged>HRESULT ID3DXLine::SetWidth([In] float fWidth)</unmanaged>\t\n            <unmanaged-short>ID3DXLine::SetWidth</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Line.GetWidth\">\n            <summary>\t\n            <p>Gets the thickness of the line.</p>\t\n            </summary>\t\n            <returns><p>The line thickness.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXLine::GetWidth']/*\"/>\t\n            <msdn-id>bb174026</msdn-id>\t\n            <unmanaged>float ID3DXLine::GetWidth()</unmanaged>\t\n            <unmanaged-short>ID3DXLine::GetWidth</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Line.SetAntialias(SharpDX.Bool)\">\n            <summary>\t\n            <p>Toggles line antialiasing.</p>\t\n            </summary>\t\n            <param name=\"bAntialias\"><dd>  <p>Toggles antialiasing on and off. <strong>TRUE</strong> turns antialiasing on, and <strong><see cref=\"F:SharpDX.Result.False\"/></strong> turns antialiasing off.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXLine::SetAntialias']/*\"/>\t\n            <msdn-id>bb174029</msdn-id>\t\n            <unmanaged>HRESULT ID3DXLine::SetAntialias([In] BOOL bAntialias)</unmanaged>\t\n            <unmanaged-short>ID3DXLine::SetAntialias</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Line.GetAntialias\">\n            <summary>\t\n            <p>Gets the line antialiasing state.</p>\t\n            </summary>\t\n            <returns><p>Returns the antialiasing switch value. <strong>TRUE</strong> means antialiasing is on, and <strong><see cref=\"F:SharpDX.Result.False\"/></strong> means antialiasing is off.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXLine::GetAntialias']/*\"/>\t\n            <msdn-id>bb174021</msdn-id>\t\n            <unmanaged>BOOL ID3DXLine::GetAntialias()</unmanaged>\t\n            <unmanaged-short>ID3DXLine::GetAntialias</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Line.SetGLLines(SharpDX.Bool)\">\n            <summary>\t\n            <p>Toggles the mode to draw OpenGL-style lines.</p>\t\n            </summary>\t\n            <param name=\"bGLLines\"><dd>  <p>Toggles OpenGL-style line drawing. <strong>TRUE</strong> enables OpenGL-style lines, and <strong><see cref=\"F:SharpDX.Result.False\"/></strong> enables Direct3D-style lines.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXLine::SetGLLines']/*\"/>\t\n            <msdn-id>bb174030</msdn-id>\t\n            <unmanaged>HRESULT ID3DXLine::SetGLLines([In] BOOL bGLLines)</unmanaged>\t\n            <unmanaged-short>ID3DXLine::SetGLLines</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Line.GetGLLines\">\n            <summary>\t\n            <p>Gets the OpenGL-style line-drawing mode.</p>\t\n            </summary>\t\n            <returns><p>Returns <strong>TRUE</strong> if OpenGL-style lines are enabled, and <strong><see cref=\"F:SharpDX.Result.False\"/></strong> if Direct3D-style lines are enabled.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXLine::GetGLLines']/*\"/>\t\n            <msdn-id>bb174023</msdn-id>\t\n            <unmanaged>BOOL ID3DXLine::GetGLLines()</unmanaged>\t\n            <unmanaged-short>ID3DXLine::GetGLLines</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Line.End\">\n            <summary>\t\n            <p>Restores the device state to how it was when <strong><see cref=\"M:SharpDX.Direct3D9.Line.Begin\"/></strong> was called.</p>\t\n            </summary>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA.</p></returns>\t\n            <remarks>\t\n            <p><strong><see cref=\"M:SharpDX.Direct3D9.Line.End\"/></strong> cannot be used as a substitute for either <strong><see cref=\"M:SharpDX.Direct3D9.Device.EndScene\"/></strong> or <strong><see cref=\"M:SharpDX.Direct3D9.RenderToSurface.EndScene(SharpDX.Direct3D9.Filter)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXLine::End']/*\"/>\t\n            <msdn-id>bb174020</msdn-id>\t\n            <unmanaged>HRESULT ID3DXLine::End()</unmanaged>\t\n            <unmanaged-short>ID3DXLine::End</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Line.OnLostDevice\">\n            <summary>\t\n            <p>Use this method to release all references to video memory resources and delete all stateblocks. This method should be called whenever a device is lost, or before resetting a device.</p>\t\n            </summary>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>This method should be called whenever the device is lost or before the user calls <strong><see cref=\"M:SharpDX.Direct3D9.Device.Reset(SharpDX.Direct3D9.PresentParameters[])\"/></strong>. Even if the device was not actually lost, <strong><see cref=\"M:SharpDX.Direct3D9.Line.OnLostDevice\"/></strong> is responsible for freeing stateblocks and other resources that may need to be released before resetting the device. As a result, the font object cannot be used again before calling <strong><see cref=\"M:SharpDX.Direct3D9.Device.Reset(SharpDX.Direct3D9.PresentParameters[])\"/></strong> and then <strong><see cref=\"M:SharpDX.Direct3D9.Line.OnResetDevice\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXLine::OnLostDevice']/*\"/>\t\n            <msdn-id>bb174027</msdn-id>\t\n            <unmanaged>HRESULT ID3DXLine::OnLostDevice()</unmanaged>\t\n            <unmanaged-short>ID3DXLine::OnLostDevice</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Line.OnResetDevice\">\n            <summary>\t\n            <p>Use this method to re-acquire resources and save initial state.</p>\t\n            </summary>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p><strong><see cref=\"M:SharpDX.Direct3D9.Line.OnResetDevice\"/></strong> should be called each time the device is reset (using <strong><see cref=\"M:SharpDX.Direct3D9.Device.Reset(SharpDX.Direct3D9.PresentParameters[])\"/></strong>), before any other methods are called. This is a good place to re-acquire video-memory resources and capture state blocks.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXLine::OnResetDevice']/*\"/>\t\n            <msdn-id>bb174028</msdn-id>\t\n            <unmanaged>HRESULT ID3DXLine::OnResetDevice()</unmanaged>\t\n            <unmanaged-short>ID3DXLine::OnResetDevice</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Line.#ctor(SharpDX.Direct3D9.Device)\">\n            <summary>\t\n            Instantiates a left-handed coordinate system to create a <see cref=\"T:SharpDX.Direct3D9.Line\"/>.\t\n            </summary>\t\n            <param name=\"device\"><para>Pointer to an <see cref=\"T:SharpDX.Direct3D9.Device\"/> interface, representing the device associated with the created box mesh.</para></param>\t\n            <remarks>\t\n            This function creates a mesh with the <see cref=\"F:SharpDX.Direct3D9.MeshFlags.Managed\"/> creation option and <see cref=\"F:SharpDX.Direct3D9.VertexFormat.Position\"/> | <see cref=\"F:SharpDX.Direct3D9.VertexFormat.Normal\"/> Flexible Vertex Format (FVF).\t\n            </remarks>\t\n            <unmanaged>HRESULT D3DXCreateLine([In] IDirect3DDevice9* pDevice,[Out, Fast] ID3DXLine** ppLine)</unmanaged>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Line.Draw(SharpDX.Vector2[],SharpDX.ColorBGRA)\">\n            <summary>\t\n            Draws a line strip in screen space. Input is in the form of an array that defines points (of <see cref=\"T:SharpDX.Vector2\"/>) on the line strip.\t\n            </summary>\t\n            <param name=\"vertices\">No documentation.</param>\t\n            <param name=\"color\">No documentation.</param>\t\n            <unmanaged>HRESULT ID3DXLine::Draw([In] const void* pVertexList,[In] unsigned int dwVertexListCount,[In] D3DCOLOR Color)</unmanaged>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Line.Draw``1(``0[],SharpDX.ColorBGRA)\">\n            <summary>\t\n            Draws a line strip in screen space. Input is in the form of an array that defines points (of <see cref=\"T:SharpDX.Vector2\"/>) on the line strip.\t\n            </summary>\t\n            <param name=\"vertices\">No documentation.</param>\t\n            <param name=\"color\">No documentation.</param>\t\n            <unmanaged>HRESULT ID3DXLine::Draw([In] const void* pVertexList,[In] unsigned int dwVertexListCount,[In] D3DCOLOR Color)</unmanaged>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Line.DrawTransform(SharpDX.Vector3[],SharpDX.Matrix,SharpDX.ColorBGRA)\">\n            <summary>\t\n            Draws a line strip in screen space with a specified input transformation matrix.\t\n            </summary>\t\n            <param name=\"vertices\"><para>Array of vertices that make up the line. See <see cref=\"T:SharpDX.Vector3\"/>.</para></param>\t\n            <param name=\"transform\"><para>A scale, rotate, and translate (SRT) matrix for transforming the points. See <see cref=\"T:SharpDX.Matrix\"/>. If this matrix is a projection matrix, any stippled lines will be drawn with a perspective-correct stippling pattern. Or, you can transform the vertices and use <see cref=\"M:SharpDX.Direct3D9.Line.Draw(System.IntPtr,System.Int32,SharpDX.ColorBGRA)\"/> to draw the line with a nonperspective-correct stipple pattern.</para></param>\t\n            <param name=\"color\"><para>Color of the line. See <see cref=\"T:SharpDX.Color4\"/>.</para></param>\t\n            <returns>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA.</returns>\t\n            <unmanaged>HRESULT ID3DXLine::DrawTransform([In] const void* pVertexList,[In] unsigned int dwVertexListCount,[In] const D3DXMATRIX* pTransform,[In] D3DCOLOR Color)</unmanaged>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Line.DrawTransform``1(``0[],SharpDX.Matrix,SharpDX.ColorBGRA)\">\n            <summary>\t\n            Draws a line strip in screen space with a specified input transformation matrix.\t\n            </summary>\t\n            <param name=\"vertices\"><para>Array of vertices that make up the line. See <see cref=\"T:SharpDX.Vector3\"/>.</para></param>\t\n            <param name=\"transform\"><para>A scale, rotate, and translate (SRT) matrix for transforming the points. See <see cref=\"T:SharpDX.Matrix\"/>. If this matrix is a projection matrix, any stippled lines will be drawn with a perspective-correct stippling pattern. Or, you can transform the vertices and use <see cref=\"M:SharpDX.Direct3D9.Line.Draw(System.IntPtr,System.Int32,SharpDX.ColorBGRA)\"/> to draw the line with a nonperspective-correct stipple pattern.</para></param>\t\n            <param name=\"color\"><para>Color of the line. See <see cref=\"T:SharpDX.Color4\"/>.</para></param>\t\n            <returns>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA.</returns>\t\n            <unmanaged>HRESULT ID3DXLine::DrawTransform([In] const void* pVertexList,[In] unsigned int dwVertexListCount,[In] const D3DXMATRIX* pTransform,[In] D3DCOLOR Color)</unmanaged>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.Line.Device\">\n            <summary>\t\n            <p>Retrieves the Direct3D device associated with the line object.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXLine::GetDevice']/*\"/>\t\n            <msdn-id>bb174022</msdn-id>\t\n            <unmanaged>GetDevice</unmanaged>\t\n            <unmanaged-short>GetDevice</unmanaged-short>\t\n            <unmanaged>HRESULT ID3DXLine::GetDevice([Out] IDirect3DDevice9** ppDevice)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.Line.Pattern\">\n            <summary>\t\n            <p>Gets or sets the line stipple pattern.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXLine::GetPattern']/*\"/>\t\n            <msdn-id>bb174024</msdn-id>\t\n            <unmanaged>GetPattern / SetPattern</unmanaged>\t\n            <unmanaged-short>GetPattern</unmanaged-short>\t\n            <unmanaged>unsigned int ID3DXLine::GetPattern()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.Line.PatternScale\">\n            <summary>\t\n            <p>Gets or sets the stipple-pattern scale value.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXLine::GetPatternScale']/*\"/>\t\n            <msdn-id>bb174025</msdn-id>\t\n            <unmanaged>GetPatternScale / SetPatternScale</unmanaged>\t\n            <unmanaged-short>GetPatternScale</unmanaged-short>\t\n            <unmanaged>float ID3DXLine::GetPatternScale()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.Line.Width\">\n            <summary>\t\n            <p>Gets or sets the thickness of the line.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXLine::GetWidth']/*\"/>\t\n            <msdn-id>bb174026</msdn-id>\t\n            <unmanaged>GetWidth / SetWidth</unmanaged>\t\n            <unmanaged-short>GetWidth</unmanaged-short>\t\n            <unmanaged>float ID3DXLine::GetWidth()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.Line.Antialias\">\n            <summary>\t\n            <p>Gets or sets the line antialiasing state.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXLine::GetAntialias']/*\"/>\t\n            <msdn-id>bb174021</msdn-id>\t\n            <unmanaged>GetAntialias / SetAntialias</unmanaged>\t\n            <unmanaged-short>GetAntialias</unmanaged-short>\t\n            <unmanaged>BOOL ID3DXLine::GetAntialias()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.Line.GLLines\">\n            <summary>\t\n            <p>Gets or sets the OpenGL-style line-drawing mode.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXLine::GetGLLines']/*\"/>\t\n            <msdn-id>bb174023</msdn-id>\t\n            <unmanaged>GetGLLines / SetGLLines</unmanaged>\t\n            <unmanaged-short>GetGLLines</unmanaged-short>\t\n            <unmanaged>BOOL ID3DXLine::GetGLLines()</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.Mesh\">\n            <summary>\t\n            <p>Applications use the methods of the <see cref=\"T:SharpDX.Direct3D9.Mesh\"/> interface to manipulate mesh objects.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>To obtain the <strong><see cref=\"T:SharpDX.Direct3D9.Mesh\"/></strong> interface, call either the <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateMesh(System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.VertexElement,SharpDX.Direct3D9.Device,SharpDX.Direct3D9.Mesh@)\"/></strong> or <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateMeshFVF(System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.VertexFormat,SharpDX.Direct3D9.Device,SharpDX.Direct3D9.Mesh@)\"/></strong> function.</p><p>This interface inherits additional functionality from the <strong><see cref=\"T:SharpDX.Direct3D9.BaseMesh\"/></strong> interface.</p><p>The LPD3DXMESH type is defined as a reference to the <strong><see cref=\"T:SharpDX.Direct3D9.Mesh\"/></strong> interface. </p><pre><code> typedef struct <see cref=\"T:SharpDX.Direct3D9.Mesh\"/> *LPD3DXMESH;\t\n            </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXMesh']/*\"/>\t\n            <msdn-id>bb174069</msdn-id>\t\n            <unmanaged>ID3DXMesh</unmanaged>\t\n            <unmanaged-short>ID3DXMesh</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Mesh.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D9.Mesh\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Mesh.op_Explicit(System.IntPtr)~SharpDX.Direct3D9.Mesh\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D9.Mesh\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Mesh.LockAttributeBuffer(System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Locks the mesh buffer that contains the mesh attribute data, and returns a reference to it.</p>\t\n            </summary>\t\n            <param name=\"flags\"><dd>  <p>Combination of zero or more locking flags that describe the type of lock to perform. For this method, the valid flags are:  </p> <ul> <li><see cref=\"F:SharpDX.Direct3D9.LockFlags.Discard\"/></li> <li><see cref=\"F:SharpDX.Direct3D9.LockFlags.NoDirtyUpdate\"/></li> <li><see cref=\"F:SharpDX.Direct3D9.LockFlags.NoSystemLock\"/></li> <li><see cref=\"F:SharpDX.Direct3D9.LockFlags.ReadOnly\"/></li> </ul> <p>For a description of the flags, see <see cref=\"T:SharpDX.Direct3D9.LockFlags\"/>.</p> </dd></param>\t\n            <param name=\"dataOut\"><dd>  <p>Address of a reference to a buffer containing a DWORD for each face in the mesh.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>If <strong><see cref=\"M:SharpDX.Direct3D9.Mesh.Optimize(System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D.Blob@,SharpDX.Direct3D9.Mesh@)\"/></strong> has been called, the mesh will also have an attribute table that can be accessed using the <strong><see cref=\"M:SharpDX.Direct3D9.BaseMesh.GetAttributeTable(SharpDX.Direct3D9.AttributeRange@,System.Int32@)\"/></strong> method. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXMesh::LockAttributeBuffer']/*\"/>\t\n            <msdn-id>bb174070</msdn-id>\t\n            <unmanaged>HRESULT ID3DXMesh::LockAttributeBuffer([In] unsigned int Flags,[In] unsigned int** ppData)</unmanaged>\t\n            <unmanaged-short>ID3DXMesh::LockAttributeBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Mesh.UnlockAttributeBuffer\">\n            <summary>\t\n            <p>Unlocks an attribute buffer.</p>\t\n            </summary>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXMesh::UnlockAttributeBuffer']/*\"/>\t\n            <msdn-id>bb174074</msdn-id>\t\n            <unmanaged>HRESULT ID3DXMesh::UnlockAttributeBuffer()</unmanaged>\t\n            <unmanaged-short>ID3DXMesh::UnlockAttributeBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Mesh.Optimize(System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D.Blob@,SharpDX.Direct3D9.Mesh@)\">\n            <summary>\t\n            <p>Generates a new mesh with reordered faces and vertices to optimize drawing performance.</p>\t\n            </summary>\t\n            <param name=\"flags\"><dd>  <p>Specifies the type of optimization to perform. This parameter can be set to a combination of one or more flags from <strong>D3DXMESHOPT</strong> and <strong>D3DXMESH</strong> (except <see cref=\"F:SharpDX.Direct3D9.MeshFlags.Use32Bit\"/>, <see cref=\"F:SharpDX.Direct3D9.MeshFlags.IndexBufferWriteOnly\"/>, and <see cref=\"F:SharpDX.Direct3D9.MeshFlags.WriteOnly\"/>).</p> </dd></param>\t\n            <param name=\"adjacencyInRef\"><dd>  <p>Pointer to an array of three DWORDs per face that specifies the three neighbors for each face in the source mesh. If the edge has no adjacent faces, the value is 0xffffffff. See Remarks.</p> </dd></param>\t\n            <param name=\"adjacencyOutRef\"><dd>  <p>Pointer to an array of three DWORDs per face that specifies the three neighbors for each face in the optimized mesh. If the edge has no adjacent faces, the value is 0xffffffff.</p> </dd></param>\t\n            <param name=\"faceRemapRef\"><dd>  <p>An array of DWORDs, one per face, that identifies the original mesh face that corresponds to each face in the optimized mesh. If the value supplied for this argument is <strong><c>null</c></strong>, face remap data is not returned.</p> </dd></param>\t\n            <param name=\"vertexRemapOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D.Blob\"/></strong> interface, which contains a DWORD for each vertex that specifies how the new vertices map to the old vertices. This remap is useful if you need to alter external data based on the new vertex mapping.</p> </dd></param>\t\n            <param name=\"optMeshOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D9.Mesh\"/></strong> interface, representing the optimized mesh.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>This method generates a new mesh. Before running Optimize, an application must generate an adjacency buffer by calling <strong><see cref=\"M:SharpDX.Direct3D9.BaseMesh.GenerateAdjacency(System.Single,System.Int32)\"/></strong>. The adjacency buffer contains adjacency data, such as a list of edges and the faces that are adjacent to each other.</p><p>This method is very similar to the <strong><see cref=\"M:SharpDX.Direct3D9.BaseMesh.CloneMesh(System.Int32,SharpDX.Direct3D9.VertexElement,SharpDX.Direct3D9.Device,SharpDX.Direct3D9.Mesh@)\"/></strong> method, except that it can perform optimization while generating the new clone of the mesh. The output mesh inherits all of the creation parameters of the input mesh.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXMesh::Optimize']/*\"/>\t\n            <msdn-id>bb174071</msdn-id>\t\n            <unmanaged>HRESULT ID3DXMesh::Optimize([In] unsigned int Flags,[In] const unsigned int* pAdjacencyIn,[In] unsigned int* pAdjacencyOut,[In] unsigned int* pFaceRemap,[In] ID3DXBuffer** ppVertexRemap,[In] ID3DXMesh** ppOptMesh)</unmanaged>\t\n            <unmanaged-short>ID3DXMesh::Optimize</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Mesh.OptimizeInplace(System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D.Blob@)\">\n            <summary>\t\n            <p>Generates a mesh with reordered faces and vertices to optimize drawing performance. This method reorders the existing mesh.</p>\t\n            </summary>\t\n            <param name=\"flags\"><dd>  <p>Combination of one or more <strong>D3DXMESHOPT</strong> flags, specifying the type of optimization to perform.</p> </dd></param>\t\n            <param name=\"adjacencyInRef\"><dd>  <p>Pointer to an array of three DWORDs per face that specifies the three neighbors for each face in the source mesh. If the edge has no adjacent faces, the value is 0xffffffff.</p> </dd></param>\t\n            <param name=\"adjacencyOutRef\"><dd>  <p>Pointer to an array of three DWORDs per face that specifies the three neighbors for each face in the optimized mesh. If the edge has no adjacent faces, the value is 0xffffffff. If the value supplied for this argument is <strong><c>null</c></strong>, adjacency data is not returned.</p> </dd></param>\t\n            <param name=\"faceRemapRef\"><dd>  <p>An array of DWORDs, one per face, that identifies the original mesh face that corresponds to each face in the optimized mesh. If the value supplied for this argument is <strong><c>null</c></strong>, face remap data is not returned.</p> </dd></param>\t\n            <param name=\"vertexRemapOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D.Blob\"/></strong> interface, which contains a DWORD for each vertex that specifies how the new vertices map to the old vertices. This remap is useful if you need to alter external data based on the new vertex mapping. If the value supplied for this argument is <strong><c>null</c></strong>, vertex remap data is not returned.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_CANNOTATTRSORT, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>Before running <strong><see cref=\"M:SharpDX.Direct3D9.Mesh.OptimizeInplace(System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D.Blob@)\"/></strong>, an application must generate an adjacency buffer by calling <strong><see cref=\"M:SharpDX.Direct3D9.BaseMesh.GenerateAdjacency(System.Single,System.Int32)\"/></strong>. The adjacency buffer contains adjacency data, such as a list of edges and the faces that are adjacent to each other.</p><p><strong>Note</strong>??This method will fail if the mesh is sharing its vertex buffer with another mesh, unless the <see cref=\"F:SharpDX.Direct3D9.MeshOptimizeFlags.IgnoreVertices\"/> is set in Flags.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXMesh::OptimizeInplace']/*\"/>\t\n            <msdn-id>bb174072</msdn-id>\t\n            <unmanaged>HRESULT ID3DXMesh::OptimizeInplace([In] unsigned int Flags,[In] const unsigned int* pAdjacencyIn,[In] unsigned int* pAdjacencyOut,[In] unsigned int* pFaceRemap,[In] ID3DXBuffer** ppVertexRemap)</unmanaged>\t\n            <unmanaged-short>ID3DXMesh::OptimizeInplace</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Mesh.SetAttributeTable(SharpDX.Direct3D9.AttributeRange@,System.Int32)\">\n            <summary>\t\n            <p>Sets the attribute table for a mesh and the number of entries stored in the table.</p>\t\n            </summary>\t\n            <param name=\"attribTableRef\"><dd>  <p>Pointer to an array of <strong><see cref=\"T:SharpDX.Direct3D9.AttributeRange\"/></strong> structures, representing the entries in the mesh attribute table.</p> </dd></param>\t\n            <param name=\"cAttribTableSize\"><dd>  <p>Number of attributes in the mesh attribute table.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>If an application keeps track of the information in an attribute table, and rearranges the table as a result of changes to attributes or faces, this method allows the application to update the attribute tables instead of calling <strong><see cref=\"M:SharpDX.Direct3D9.Mesh.Optimize(System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D.Blob@,SharpDX.Direct3D9.Mesh@)\"/></strong> again.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXMesh::SetAttributeTable']/*\"/>\t\n            <msdn-id>bb174073</msdn-id>\t\n            <unmanaged>HRESULT ID3DXMesh::SetAttributeTable([In] const D3DXATTRIBUTERANGE* pAttribTable,[In] unsigned int cAttribTableSize)</unmanaged>\t\n            <unmanaged-short>ID3DXMesh::SetAttributeTable</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.PatchMesh\">\n            <summary>\t\n            <p>This interface encapsulates patch mesh functionality.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>A patch mesh is a mesh that consists of a series of patches. </p><p>To obtain the <strong><see cref=\"T:SharpDX.Direct3D9.PatchMesh\"/></strong> interface, call the <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.CreatePatchMesh(SharpDX.Direct3D9.PatchInfo,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.VertexElement[],SharpDX.Direct3D9.Device,SharpDX.Direct3D9.PatchMesh@)\"/></strong> function.</p><p>The LPD3DXPATCHMESH type is defined as a reference to the <strong><see cref=\"T:SharpDX.Direct3D9.PatchMesh\"/></strong> interface, as follows: </p><pre><code> typedef struct <see cref=\"T:SharpDX.Direct3D9.PatchMesh\"/> *LPD3DXPATCHMESH;\t\n            </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXPatchMesh']/*\"/>\t\n            <msdn-id>bb174075</msdn-id>\t\n            <unmanaged>ID3DXPatchMesh</unmanaged>\t\n            <unmanaged-short>ID3DXPatchMesh</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.PatchMesh.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D9.PatchMesh\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.PatchMesh.op_Explicit(System.IntPtr)~SharpDX.Direct3D9.PatchMesh\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D9.PatchMesh\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.PatchMesh.GetNumPatches\">\n            <summary>\t\n            <p>Gets the number of patches in the mesh.</p>\t\n            </summary>\t\n            <returns><p>The number of patches.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXPatchMesh::GetNumPatches']/*\"/>\t\n            <msdn-id>bb174083</msdn-id>\t\n            <unmanaged>unsigned int ID3DXPatchMesh::GetNumPatches()</unmanaged>\t\n            <unmanaged-short>ID3DXPatchMesh::GetNumPatches</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.PatchMesh.GetNumVertices\">\n            <summary>\t\n            <p>Gets the number of vertices in the mesh.</p>\t\n            </summary>\t\n            <returns><p>The number of vertices.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXPatchMesh::GetNumVertices']/*\"/>\t\n            <msdn-id>bb174084</msdn-id>\t\n            <unmanaged>unsigned int ID3DXPatchMesh::GetNumVertices()</unmanaged>\t\n            <unmanaged-short>ID3DXPatchMesh::GetNumVertices</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.PatchMesh.GetDeclaration(SharpDX.Direct3D9.VertexElement)\">\n            <summary>\t\n            <p>Gets the vertex declaration.</p>\t\n            </summary>\t\n            <param name=\"declaration\"><dd>  <p>Array of <strong><see cref=\"T:SharpDX.Direct3D9.VertexElement\"/></strong> elements describing the vertex format of the mesh vertices. The dimension of this declarator array is <strong><see cref=\"F:SharpDX.Direct3D9.VertexFormatDeclaratorCount.Max\"/></strong>. The vertex element array ends with the <strong>D3DDECL_END</strong> macro.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>The array of elements includes the <strong>D3DDECL_END</strong> macro, which ends the declaration.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXPatchMesh::GetDeclaration']/*\"/>\t\n            <msdn-id>bb174079</msdn-id>\t\n            <unmanaged>HRESULT ID3DXPatchMesh::GetDeclaration([In] D3DVERTEXELEMENT9* Declaration)</unmanaged>\t\n            <unmanaged-short>ID3DXPatchMesh::GetDeclaration</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.PatchMesh.GetControlVerticesPerPatch\">\n            <summary>\t\n            <p>Gets the number of control vertices per patch.</p>\t\n            </summary>\t\n            <returns><p>The number of control vertices per patch.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXPatchMesh::GetControlVerticesPerPatch']/*\"/>\t\n            <msdn-id>bb174078</msdn-id>\t\n            <unmanaged>unsigned int ID3DXPatchMesh::GetControlVerticesPerPatch()</unmanaged>\t\n            <unmanaged-short>ID3DXPatchMesh::GetControlVerticesPerPatch</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.PatchMesh.GetOptions\">\n            <summary>\t\n            <p>Gets the type of patch.</p>\t\n            </summary>\t\n            <returns><p>The patch type.</p></returns>\t\n            <remarks>\t\n            <p>For more information about patch types, see <strong><see cref=\"T:SharpDX.Direct3D9.PatchMeshType\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXPatchMesh::GetOptions']/*\"/>\t\n            <msdn-id>bb174085</msdn-id>\t\n            <unmanaged>unsigned int ID3DXPatchMesh::GetOptions()</unmanaged>\t\n            <unmanaged-short>ID3DXPatchMesh::GetOptions</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.PatchMesh.GetDevice(SharpDX.Direct3D9.Device@)\">\n            <summary>\t\n            <p>Gets the device that created the mesh.</p>\t\n            </summary>\t\n            <param name=\"deviceOut\"><dd>  <p>Pointer to the device.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXPatchMesh::GetDevice']/*\"/>\t\n            <msdn-id>bb174080</msdn-id>\t\n            <unmanaged>HRESULT ID3DXPatchMesh::GetDevice([Out] IDirect3DDevice9** ppDevice)</unmanaged>\t\n            <unmanaged-short>ID3DXPatchMesh::GetDevice</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.PatchMesh.GetPatchInfo(SharpDX.Direct3D9.PatchInfo)\">\n            <summary>\t\n            <p>Gets the attributes of the patch.</p>\t\n            </summary>\t\n            <param name=\"patchInfo\"><dd>  <p>Pointer to the structures containing the patch attributes. For more information about patch attributes, see <strong><see cref=\"T:SharpDX.Direct3D9.PatchInfo\"/></strong>.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXPatchMesh::GetPatchInfo']/*\"/>\t\n            <msdn-id>bb174086</msdn-id>\t\n            <unmanaged>HRESULT ID3DXPatchMesh::GetPatchInfo([In] D3DXPATCHINFO* PatchInfo)</unmanaged>\t\n            <unmanaged-short>ID3DXPatchMesh::GetPatchInfo</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.PatchMesh.GetVertexBuffer(SharpDX.Direct3D9.VertexBuffer@)\">\n            <summary>\t\n            <p>Gets the mesh vertex buffer.</p>\t\n            </summary>\t\n            <param name=\"vBOut\"><dd>  <p>Pointer to the vertex buffer.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>This method assumes uniform tessellation.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXPatchMesh::GetVertexBuffer']/*\"/>\t\n            <msdn-id>bb174088</msdn-id>\t\n            <unmanaged>HRESULT ID3DXPatchMesh::GetVertexBuffer([Out] IDirect3DVertexBuffer9** ppVB)</unmanaged>\t\n            <unmanaged-short>ID3DXPatchMesh::GetVertexBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.PatchMesh.GetIndexBuffer(SharpDX.Direct3D9.IndexBuffer@)\">\n            <summary>\t\n            <p>Gets the mesh index buffer.</p>\t\n            </summary>\t\n            <param name=\"iBOut\"><dd>  <p>Pointer to the index buffer.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p> The index buffer contains the vertex ordering in the vertex buffer. The index buffer is used to access the vertex buffer when the mesh is rendered.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXPatchMesh::GetIndexBuffer']/*\"/>\t\n            <msdn-id>bb174082</msdn-id>\t\n            <unmanaged>HRESULT ID3DXPatchMesh::GetIndexBuffer([Out] IDirect3DIndexBuffer9** ppIB)</unmanaged>\t\n            <unmanaged-short>ID3DXPatchMesh::GetIndexBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.PatchMesh.LockVertexBuffer(System.Int32,System.IntPtr)\">\n            <summary>\t\n            <p>Lock the vertex buffer.</p>\t\n            </summary>\t\n            <param name=\"flags\"><dd>  <p>Combination of zero or more locking flags that describe the type of lock to perform. For this method, the valid flags are: </p> <ul> <li><see cref=\"F:SharpDX.Direct3D9.LockFlags.Discard\"/></li> <li><see cref=\"F:SharpDX.Direct3D9.LockFlags.NoDirtyUpdate\"/></li> <li><see cref=\"F:SharpDX.Direct3D9.LockFlags.NoSystemLock\"/></li> <li><see cref=\"F:SharpDX.Direct3D9.LockFlags.ReadOnly\"/></li> <li><see cref=\"F:SharpDX.Direct3D9.LockFlags.NoOverwrite\"/></li> </ul> <p> For a description of the flags, see <see cref=\"T:SharpDX.Direct3D9.LockFlags\"/>.</p> </dd></param>\t\n            <param name=\"dataOut\"><dd>  <p>VOID* reference to a memory buffer containing the returned vertex data.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>The vertex buffer is usually locked, written to, and then unlocked for reading.</p><p>Patch meshes use 16-bit index buffers.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXPatchMesh::LockVertexBuffer']/*\"/>\t\n            <msdn-id>bb174091</msdn-id>\t\n            <unmanaged>HRESULT ID3DXPatchMesh::LockVertexBuffer([In] unsigned int flags,[In] void** ppData)</unmanaged>\t\n            <unmanaged-short>ID3DXPatchMesh::LockVertexBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.PatchMesh.UnlockVertexBuffer\">\n            <summary>\t\n            <p>Unlock the vertex buffer.</p>\t\n            </summary>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>The vertex buffer is usually locked, written to, and then unlocked for reading.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXPatchMesh::UnlockVertexBuffer']/*\"/>\t\n            <msdn-id>bb174098</msdn-id>\t\n            <unmanaged>HRESULT ID3DXPatchMesh::UnlockVertexBuffer()</unmanaged>\t\n            <unmanaged-short>ID3DXPatchMesh::UnlockVertexBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.PatchMesh.LockIndexBuffer(System.Int32,System.IntPtr)\">\n            <summary>\t\n            <p>Lock the index buffer.</p>\t\n            </summary>\t\n            <param name=\"flags\"><dd>  <p>Combination of zero or more locking flags that describe the type of lock to perform. For this method, the valid flags are:  </p> <ul> <li><see cref=\"F:SharpDX.Direct3D9.LockFlags.Discard\"/></li> <li><see cref=\"F:SharpDX.Direct3D9.LockFlags.NoDirtyUpdate\"/></li> <li><see cref=\"F:SharpDX.Direct3D9.LockFlags.NoSystemLock\"/></li> <li><see cref=\"F:SharpDX.Direct3D9.LockFlags.ReadOnly\"/></li> </ul> <p> For a description of the flags, see <see cref=\"T:SharpDX.Direct3D9.LockFlags\"/>.</p> </dd></param>\t\n            <param name=\"dataOut\"><dd>  <p>VOID* reference to a memory buffer containing the returned index data.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>The index buffer is usually locked, written to, and then unlocked for reading. Patch mesh index buffers are 16-bit buffers.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXPatchMesh::LockIndexBuffer']/*\"/>\t\n            <msdn-id>bb174090</msdn-id>\t\n            <unmanaged>HRESULT ID3DXPatchMesh::LockIndexBuffer([In] unsigned int flags,[In] void** ppData)</unmanaged>\t\n            <unmanaged-short>ID3DXPatchMesh::LockIndexBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.PatchMesh.UnlockIndexBuffer\">\n            <summary>\t\n            <p>Unlock the index buffer.</p>\t\n            </summary>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>The index buffer is usually locked, written to, and then unlocked for reading.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXPatchMesh::UnlockIndexBuffer']/*\"/>\t\n            <msdn-id>bb174097</msdn-id>\t\n            <unmanaged>HRESULT ID3DXPatchMesh::UnlockIndexBuffer()</unmanaged>\t\n            <unmanaged-short>ID3DXPatchMesh::UnlockIndexBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.PatchMesh.LockAttributeBuffer(System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Locks the attribute buffer.</p>\t\n            </summary>\t\n            <param name=\"flags\"><dd>  <p>Combination of zero or more locking flags that describe the type of lock to perform. For this method, the valid flags are:  </p> <ul> <li><see cref=\"F:SharpDX.Direct3D9.LockFlags.Discard\"/></li> <li><see cref=\"F:SharpDX.Direct3D9.LockFlags.NoDirtyUpdate\"/></li> <li><see cref=\"F:SharpDX.Direct3D9.LockFlags.NoSystemLock\"/></li> <li><see cref=\"F:SharpDX.Direct3D9.LockFlags.ReadOnly\"/></li> </ul> <p> For a description of the flags, see <see cref=\"T:SharpDX.Direct3D9.LockFlags\"/>.</p> </dd></param>\t\n            <param name=\"dataOut\"><dd>  <p>Address of a reference to a buffer containing a DWORD for each face in the mesh.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>The attribute buffer is usually locked, written to, and then unlocked for reading.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXPatchMesh::LockAttributeBuffer']/*\"/>\t\n            <msdn-id>bb174089</msdn-id>\t\n            <unmanaged>HRESULT ID3DXPatchMesh::LockAttributeBuffer([In] unsigned int flags,[In] unsigned int** ppData)</unmanaged>\t\n            <unmanaged-short>ID3DXPatchMesh::LockAttributeBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.PatchMesh.UnlockAttributeBuffer\">\n            <summary>\t\n            <p>Unlock the attribute buffer.</p>\t\n            </summary>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>The attribute buffer is usually locked, written to, and then unlocked for reading.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXPatchMesh::UnlockAttributeBuffer']/*\"/>\t\n            <msdn-id>bb174096</msdn-id>\t\n            <unmanaged>HRESULT ID3DXPatchMesh::UnlockAttributeBuffer()</unmanaged>\t\n            <unmanaged-short>ID3DXPatchMesh::UnlockAttributeBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.PatchMesh.GetTessSize(System.Single,System.Int32,System.Int32@,System.Int32@)\">\n            <summary>\t\n            <p>Gets the size of the tessellated mesh, given a tessellation level.</p>\t\n            </summary>\t\n            <param name=\"fTessLevel\"><dd>  <p>Tessellation level.</p> </dd></param>\t\n            <param name=\"adaptive\"><dd>  <p>Adaptive tessellation. For adaptive tessellation, set this value to <strong>TRUE</strong> and set fTessLevel to the maximum tessellation value. This will result in the maximum mesh size necessary for adaptive tessellation.</p> </dd></param>\t\n            <param name=\"numTriangles\"><dd>  <p>Pointer to the number of triangles generated by the tessellated mesh.</p> </dd></param>\t\n            <param name=\"numVertices\"><dd>  <p>Pointer to the number of vertices generated by the tessellated mesh.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>This method assumes uniform tessellation.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXPatchMesh::GetTessSize']/*\"/>\t\n            <msdn-id>bb174087</msdn-id>\t\n            <unmanaged>HRESULT ID3DXPatchMesh::GetTessSize([In] float fTessLevel,[In] unsigned int Adaptive,[Out] unsigned int* NumTriangles,[Out] unsigned int* NumVertices)</unmanaged>\t\n            <unmanaged-short>ID3DXPatchMesh::GetTessSize</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.PatchMesh.GenerateAdjacency(System.Single)\">\n            <summary>\t\n            <p>Generate a list of mesh edges and the patches that share each edge.</p>\t\n            </summary>\t\n            <param name=\"tolerance\"><dd>  <p>Specifies that vertices that differ in position by less than the tolerance should be treated as coincident.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>After an application generates adjacency information for a mesh, the mesh data can be optimized for better drawing performance. This method determines which patches are adjacent (within the provided tolerance). This information is used internally to optimize tessellation.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXPatchMesh::GenerateAdjacency']/*\"/>\t\n            <msdn-id>bb174077</msdn-id>\t\n            <unmanaged>HRESULT ID3DXPatchMesh::GenerateAdjacency([In] float Tolerance)</unmanaged>\t\n            <unmanaged-short>ID3DXPatchMesh::GenerateAdjacency</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.PatchMesh.CloneMesh(System.Int32,SharpDX.Direct3D9.VertexElement,SharpDX.Direct3D9.PatchMesh@)\">\n            <summary>\t\n            <p>Creates a new patch mesh with the specified vertex declaration.</p>\t\n            </summary>\t\n            <param name=\"options\"><dd>  <p>Combination of one or more <strong>D3DXMESH</strong> flags that specify creation options for the mesh.</p> </dd></param>\t\n            <param name=\"declRef\"><dd>  <p>Array of <strong><see cref=\"T:SharpDX.Direct3D9.VertexElement\"/></strong> elements that specify the vertex format for the vertices in the output mesh.</p> </dd></param>\t\n            <param name=\"meshRef\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D9.PatchMesh\"/></strong> interface that represents the cloned mesh.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p><strong>CloneMesh</strong> converts the vertex buffer to the new vertex declaration. Entries in the vertex declaration that are new to the original mesh are set to 0. If the current mesh has adjacency, the new mesh will also have adjacency.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXPatchMesh::CloneMesh']/*\"/>\t\n            <msdn-id>bb174076</msdn-id>\t\n            <unmanaged>HRESULT ID3DXPatchMesh::CloneMesh([In] unsigned int Options,[In] const D3DVERTEXELEMENT9* pDecl,[In] ID3DXPatchMesh** pMesh)</unmanaged>\t\n            <unmanaged-short>ID3DXPatchMesh::CloneMesh</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.PatchMesh.Optimize(System.Int32)\">\n            <summary>\t\n            <p>Optimizes the patch mesh for efficient tessellation.</p>\t\n            </summary>\t\n            <param name=\"flags\"><dd>  <p>Currently unused.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_CANNOTATTRSORT.</p></returns>\t\n            <remarks>\t\n            <p>After an application generates adjacency information for a mesh, the mesh data can be optimized (reordered) for better drawing performance. This method determines which patches are adjacent (within the provided tolerance).</p><p>Adjacency information is also used to optimize tessellation. Generate adjacency information once and tessellate repeatedly by calling <strong><see cref=\"M:SharpDX.Direct3D9.PatchMesh.Tessellate(System.Single,SharpDX.Direct3D9.Mesh)\"/></strong>. The optimization performed is independent of the actual tessellation level used. However, if the mesh vertices are changed, you must regenerate the adjacency information.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXPatchMesh::Optimize']/*\"/>\t\n            <msdn-id>bb174092</msdn-id>\t\n            <unmanaged>HRESULT ID3DXPatchMesh::Optimize([In] unsigned int flags)</unmanaged>\t\n            <unmanaged-short>ID3DXPatchMesh::Optimize</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.PatchMesh.SetDisplaceParam(SharpDX.Direct3D9.BaseTexture,SharpDX.Direct3D9.TextureFilter,SharpDX.Direct3D9.TextureFilter,SharpDX.Direct3D9.TextureFilter,SharpDX.Direct3D9.TextureAddress,System.Int32)\">\n            <summary>\t\n            <p>Sets mesh geometry displacement parameters.</p>\t\n            </summary>\t\n            <param name=\"texture\"><dd>  <p>Texture containing the displacement data.</p> </dd></param>\t\n            <param name=\"minFilter\"><dd>  <p>Minification level. For more information, see <strong><see cref=\"T:SharpDX.Direct3D9.TextureFilter\"/></strong>.</p> </dd></param>\t\n            <param name=\"magFilter\"><dd>  <p>Magnification level. For more information, see <strong><see cref=\"T:SharpDX.Direct3D9.TextureFilter\"/></strong>.</p> </dd></param>\t\n            <param name=\"mipFilter\"><dd>  <p>Mip filter level. For more information, see <strong><see cref=\"T:SharpDX.Direct3D9.TextureFilter\"/></strong>.</p> </dd></param>\t\n            <param name=\"wrap\"><dd>  <p>Texture address wrap mode. For more information, see <strong><see cref=\"T:SharpDX.Direct3D9.TextureAddress\"/></strong> </p> </dd></param>\t\n            <param name=\"dwLODBias\"><dd>  <p>Level of detail bias value.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>Displacement maps can only be 2D textures. Mipmapping is ignored for nonadaptive tessellation.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXPatchMesh::SetDisplaceParam']/*\"/>\t\n            <msdn-id>bb174093</msdn-id>\t\n            <unmanaged>HRESULT ID3DXPatchMesh::SetDisplaceParam([In] IDirect3DBaseTexture9* Texture,[In] D3DTEXTUREFILTERTYPE MinFilter,[In] D3DTEXTUREFILTERTYPE MagFilter,[In] D3DTEXTUREFILTERTYPE MipFilter,[In] D3DTEXTUREADDRESS Wrap,[In] unsigned int dwLODBias)</unmanaged>\t\n            <unmanaged-short>ID3DXPatchMesh::SetDisplaceParam</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.PatchMesh.GetDisplaceParam(SharpDX.Direct3D9.BaseTexture@,SharpDX.Direct3D9.TextureFilter@,SharpDX.Direct3D9.TextureFilter@,SharpDX.Direct3D9.TextureFilter@,SharpDX.Direct3D9.TextureAddress@,System.Int32@)\">\n            <summary>\t\n            <p>Gets mesh geometry displacement parameters.</p>\t\n            </summary>\t\n            <param name=\"texture\"><dd>  <p>Texture containing the displacement data.</p> </dd></param>\t\n            <param name=\"minFilter\"><dd>  <p>Minification level. For more information, see <strong><see cref=\"T:SharpDX.Direct3D9.TextureFilter\"/></strong>.</p> </dd></param>\t\n            <param name=\"magFilter\"><dd>  <p>Magnification level. For more information, see <strong><see cref=\"T:SharpDX.Direct3D9.TextureFilter\"/></strong>.</p> </dd></param>\t\n            <param name=\"mipFilter\"><dd>  <p>Mip filter level. For more information, see <strong><see cref=\"T:SharpDX.Direct3D9.TextureFilter\"/></strong>.</p> </dd></param>\t\n            <param name=\"wrap\"><dd>  <p>Texture address wrap mode. For more information, see <strong><see cref=\"T:SharpDX.Direct3D9.TextureAddress\"/></strong>.</p> </dd></param>\t\n            <param name=\"dwLODBias\"><dd>  <p>Level of detail bias value.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>Displacement maps can only be 2D textures. Mipmapping is ignored for nonadaptive tessellation.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXPatchMesh::GetDisplaceParam']/*\"/>\t\n            <msdn-id>bb174081</msdn-id>\t\n            <unmanaged>HRESULT ID3DXPatchMesh::GetDisplaceParam([Out] IDirect3DBaseTexture9** Texture,[Out] D3DTEXTUREFILTERTYPE* MinFilter,[Out] D3DTEXTUREFILTERTYPE* MagFilter,[Out] D3DTEXTUREFILTERTYPE* MipFilter,[Out] D3DTEXTUREADDRESS* Wrap,[Out] unsigned int* dwLODBias)</unmanaged>\t\n            <unmanaged-short>ID3DXPatchMesh::GetDisplaceParam</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.PatchMesh.Tessellate(System.Single,SharpDX.Direct3D9.Mesh)\">\n            <summary>\t\n            <p>Performs uniform tessellation based on the tessellation level.</p>\t\n            </summary>\t\n            <param name=\"fTessLevel\"><dd>  <p>Tessellation level. This is the number of vertices introduced between existing vertices. The range of this float parameter is 0 &lt; fTessLevel &lt;= 32.</p> </dd></param>\t\n            <param name=\"meshRef\"><dd>  <p>Resulting tessellated mesh. See <strong><see cref=\"T:SharpDX.Direct3D9.Mesh\"/></strong>.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>This function will perform more efficiently if the patch mesh has been optimized using <strong><see cref=\"M:SharpDX.Direct3D9.PatchMesh.Optimize(System.Int32)\"/></strong>. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXPatchMesh::Tessellate']/*\"/>\t\n            <msdn-id>bb174094</msdn-id>\t\n            <unmanaged>HRESULT ID3DXPatchMesh::Tessellate([In] float fTessLevel,[In] ID3DXMesh* pMesh)</unmanaged>\t\n            <unmanaged-short>ID3DXPatchMesh::Tessellate</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.PatchMesh.TessellateAdaptive(SharpDX.Vector4,System.Int32,System.Int32,SharpDX.Direct3D9.Mesh)\">\n            <summary>\t\n            <p>Performs adaptive tessellation based on the z-based adaptive tessellation criterion.</p>\t\n            </summary>\t\n            <param name=\"transRef\"><dd>  <p>Specifies a 4D vector that is dotted with the vertices to get the per-vertex adaptive tessellation amount. Each edge is tessellated to the average value of the tessellation levels for the two vertices it connects.</p> </dd></param>\t\n            <param name=\"dwMaxTessLevel\"><dd>  <p>Maximum limit for adaptive tessellation. This is the number of vertices introduced between existing vertices. This integer value can range from 1 to 32, inclusive.</p> </dd></param>\t\n            <param name=\"dwMinTessLevel\"><dd>  <p>Minimum limit for adaptive tessellation. This is the number of vertices introduced between existing vertices. This integer value can range from 1 to 32, inclusive.</p> </dd></param>\t\n            <param name=\"meshRef\"><dd>  <p>Resulting tessellated mesh. See <strong><see cref=\"T:SharpDX.Direct3D9.Mesh\"/></strong>.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>This function will perform more efficiently if the patch mesh has been optimized using <strong><see cref=\"M:SharpDX.Direct3D9.PatchMesh.Optimize(System.Int32)\"/></strong>. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXPatchMesh::TessellateAdaptive']/*\"/>\t\n            <msdn-id>bb174095</msdn-id>\t\n            <unmanaged>HRESULT ID3DXPatchMesh::TessellateAdaptive([In] const D3DXVECTOR4* pTrans,[In] unsigned int dwMaxTessLevel,[In] unsigned int dwMinTessLevel,[In] ID3DXMesh* pMesh)</unmanaged>\t\n            <unmanaged-short>ID3DXPatchMesh::TessellateAdaptive</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.PatchMesh.NumPatches\">\n            <summary>\t\n            <p>Gets the number of patches in the mesh.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXPatchMesh::GetNumPatches']/*\"/>\t\n            <msdn-id>bb174083</msdn-id>\t\n            <unmanaged>GetNumPatches</unmanaged>\t\n            <unmanaged-short>GetNumPatches</unmanaged-short>\t\n            <unmanaged>unsigned int ID3DXPatchMesh::GetNumPatches()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.PatchMesh.NumVertices\">\n            <summary>\t\n            <p>Gets the number of vertices in the mesh.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXPatchMesh::GetNumVertices']/*\"/>\t\n            <msdn-id>bb174084</msdn-id>\t\n            <unmanaged>GetNumVertices</unmanaged>\t\n            <unmanaged-short>GetNumVertices</unmanaged-short>\t\n            <unmanaged>unsigned int ID3DXPatchMesh::GetNumVertices()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.PatchMesh.ControlVerticesPerPatch\">\n            <summary>\t\n            <p>Gets the number of control vertices per patch.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXPatchMesh::GetControlVerticesPerPatch']/*\"/>\t\n            <msdn-id>bb174078</msdn-id>\t\n            <unmanaged>GetControlVerticesPerPatch</unmanaged>\t\n            <unmanaged-short>GetControlVerticesPerPatch</unmanaged-short>\t\n            <unmanaged>unsigned int ID3DXPatchMesh::GetControlVerticesPerPatch()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.PatchMesh.Options\">\n            <summary>\t\n            <p>Gets the type of patch.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>For more information about patch types, see <strong><see cref=\"T:SharpDX.Direct3D9.PatchMeshType\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXPatchMesh::GetOptions']/*\"/>\t\n            <msdn-id>bb174085</msdn-id>\t\n            <unmanaged>GetOptions</unmanaged>\t\n            <unmanaged-short>GetOptions</unmanaged-short>\t\n            <unmanaged>unsigned int ID3DXPatchMesh::GetOptions()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.PatchMesh.Device\">\n            <summary>\t\n            <p>Gets the device that created the mesh.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXPatchMesh::GetDevice']/*\"/>\t\n            <msdn-id>bb174080</msdn-id>\t\n            <unmanaged>GetDevice</unmanaged>\t\n            <unmanaged-short>GetDevice</unmanaged-short>\t\n            <unmanaged>HRESULT ID3DXPatchMesh::GetDevice([Out] IDirect3DDevice9** ppDevice)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.PatchMesh.VertexBuffer\">\n            <summary>\t\n            <p>Gets the mesh vertex buffer.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This method assumes uniform tessellation.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXPatchMesh::GetVertexBuffer']/*\"/>\t\n            <msdn-id>bb174088</msdn-id>\t\n            <unmanaged>GetVertexBuffer</unmanaged>\t\n            <unmanaged-short>GetVertexBuffer</unmanaged-short>\t\n            <unmanaged>HRESULT ID3DXPatchMesh::GetVertexBuffer([Out] IDirect3DVertexBuffer9** ppVB)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.PatchMesh.IndexBuffer\">\n            <summary>\t\n            <p>Gets the mesh index buffer.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p> The index buffer contains the vertex ordering in the vertex buffer. The index buffer is used to access the vertex buffer when the mesh is rendered.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXPatchMesh::GetIndexBuffer']/*\"/>\t\n            <msdn-id>bb174082</msdn-id>\t\n            <unmanaged>GetIndexBuffer</unmanaged>\t\n            <unmanaged-short>GetIndexBuffer</unmanaged-short>\t\n            <unmanaged>HRESULT ID3DXPatchMesh::GetIndexBuffer([Out] IDirect3DIndexBuffer9** ppIB)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.PixelShader\">\n            <summary>\t\n            <p>Applications use the methods of the <see cref=\"T:SharpDX.Direct3D9.PixelShader\"/> interface to encapsulate the functionality of a pixel shader.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The LPDIRECT3DPIXELSHADER9 and PDIRECT3DPIXELSHADER9 types are defined as references to the <strong><see cref=\"T:SharpDX.Direct3D9.PixelShader\"/></strong> interface. </p><pre><code>typedef struct <see cref=\"T:SharpDX.Direct3D9.PixelShader\"/> *LPDIRECT3DPIXELSHADER9, *PDIRECT3DPIXELSHADER9;</code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DPixelShader9']/*\"/>\t\n            <msdn-id>bb205869</msdn-id>\t\n            <unmanaged>IDirect3DPixelShader9</unmanaged>\t\n            <unmanaged-short>IDirect3DPixelShader9</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PixelShader.MaxDynamicFlowControlDepth\">\n            <summary>Constant MaxDynamicFlowControlDepth.</summary>\n            <unmanaged>D3DPS20_MAX_DYNAMICFLOWCONTROLDEPTH</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PixelShader.MinDynamicFlowControlDepth\">\n            <summary>Constant MinDynamicFlowControlDepth.</summary>\n            <unmanaged>D3DPS20_MIN_DYNAMICFLOWCONTROLDEPTH</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PixelShader.MaxTemps\">\n            <summary>Constant MaxTemps.</summary>\n            <unmanaged>D3DPS20_MAX_NUMTEMPS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PixelShader.MinTemps\">\n            <summary>Constant MinTemps.</summary>\n            <unmanaged>D3DPS20_MIN_NUMTEMPS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PixelShader.MaxStaticFlowControlDepth\">\n            <summary>Constant MaxStaticFlowControlDepth.</summary>\n            <unmanaged>D3DPS20_MAX_STATICFLOWCONTROLDEPTH</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PixelShader.MinStaticFlowControlDepth\">\n            <summary>Constant MinStaticFlowControlDepth.</summary>\n            <unmanaged>D3DPS20_MIN_STATICFLOWCONTROLDEPTH</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PixelShader.MaxInstructionSlots\">\n            <summary>Constant MaxInstructionSlots.</summary>\n            <unmanaged>D3DPS20_MAX_NUMINSTRUCTIONSLOTS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PixelShader.MinInstructionSlots\">\n            <summary>Constant MinInstructionSlots.</summary>\n            <unmanaged>D3DPS20_MIN_NUMINSTRUCTIONSLOTS</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.PixelShader.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D9.PixelShader\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.PixelShader.op_Explicit(System.IntPtr)~SharpDX.Direct3D9.PixelShader\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D9.PixelShader\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.PixelShader.GetDevice(SharpDX.Direct3D9.Device@)\">\n            <summary>\t\n            <p>Gets the device.</p>\t\n            </summary>\t\n            <param name=\"deviceOut\"><dd>  <p>Pointer to the <see cref=\"T:SharpDX.Direct3D9.Device\"/> interface that is returned.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DPixelShader9::GetDevice']/*\"/>\t\n            <msdn-id>bb205870</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DPixelShader9::GetDevice([Out] IDirect3DDevice9** ppDevice)</unmanaged>\t\n            <unmanaged-short>IDirect3DPixelShader9::GetDevice</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.PixelShader.GetFunction(System.IntPtr,System.Int32@)\">\n            <summary>\t\n            <p>Gets a reference to the shader data.</p>\t\n            </summary>\t\n            <param name=\"arg0\"><dd>  <p>Pointer to a buffer that contains the shader data. The application needs to allocate enough room for this. </p> </dd></param>\t\n            <param name=\"sizeOfDataRef\"><dd>  <p>Size of the data, in bytes. To get the buffer size that is needed to retrieve the data, set pData = <strong><c>null</c></strong> when calling GetFunction. Then call GetFunction with the returned size, to get the buffer data.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DPixelShader9::GetFunction']/*\"/>\t\n            <msdn-id>bb205871</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DPixelShader9::GetFunction([In] void* arg0,[InOut] unsigned int* pSizeOfData)</unmanaged>\t\n            <unmanaged-short>IDirect3DPixelShader9::GetFunction</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.PixelShader.#ctor(SharpDX.Direct3D9.Device,SharpDX.Direct3D9.ShaderBytecode)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D9.PixelShader\"/> class.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"function\">The function.</param>\n            <unmanaged>HRESULT IDirect3DDevice9::CreatePixelShader([In] const void* pFunction,[Out, Fast] IDirect3DPixelShader9** ppShader)</unmanaged>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.PixelShader.Device\">\n            <summary>\t\n            <p>Gets the device.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DPixelShader9::GetDevice']/*\"/>\t\n            <msdn-id>bb205870</msdn-id>\t\n            <unmanaged>GetDevice</unmanaged>\t\n            <unmanaged-short>GetDevice</unmanaged-short>\t\n            <unmanaged>HRESULT IDirect3DPixelShader9::GetDevice([Out] IDirect3DDevice9** ppDevice)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.PixelShader.Function\">\n            <summary>\n            Gets the bytecode associated to this shader..\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.ProgressiveMesh\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXPMesh']/*\"/>\t\n            <msdn-id>bb281283</msdn-id>\t\n            <unmanaged>ID3DXPMesh</unmanaged>\t\n            <unmanaged-short>ID3DXPMesh</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ProgressiveMesh.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D9.ProgressiveMesh\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ProgressiveMesh.op_Explicit(System.IntPtr)~SharpDX.Direct3D9.ProgressiveMesh\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D9.ProgressiveMesh\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ProgressiveMesh.ClonePMeshFVF(System.Int32,System.Int32,SharpDX.Direct3D9.Device,SharpDX.Direct3D9.ProgressiveMesh@)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"options\">No documentation.</param>\t\n            <param name=\"fvf\">No documentation.</param>\t\n            <param name=\"d3DDeviceRef\">No documentation.</param>\t\n            <param name=\"cloneMeshOut\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXPMesh::ClonePMeshFVF']/*\"/>\t\n            <unmanaged>HRESULT ID3DXPMesh::ClonePMeshFVF([In] unsigned int Options,[In] unsigned int FVF,[In] IDirect3DDevice9* pD3DDevice,[In] ID3DXPMesh** ppCloneMesh)</unmanaged>\t\n            <unmanaged-short>ID3DXPMesh::ClonePMeshFVF</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ProgressiveMesh.ClonePMesh(System.Int32,SharpDX.Direct3D9.VertexElement,SharpDX.Direct3D9.Device,SharpDX.Direct3D9.ProgressiveMesh@)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"options\">No documentation.</param>\t\n            <param name=\"declarationRef\">No documentation.</param>\t\n            <param name=\"d3DDeviceRef\">No documentation.</param>\t\n            <param name=\"cloneMeshOut\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXPMesh::ClonePMesh']/*\"/>\t\n            <unmanaged>HRESULT ID3DXPMesh::ClonePMesh([In] unsigned int Options,[In] const D3DVERTEXELEMENT9* pDeclaration,[In] IDirect3DDevice9* pD3DDevice,[In] ID3DXPMesh** ppCloneMesh)</unmanaged>\t\n            <unmanaged-short>ID3DXPMesh::ClonePMesh</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ProgressiveMesh.SetNumFaces(System.Int32)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"faces\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXPMesh::SetNumFaces']/*\"/>\t\n            <unmanaged>HRESULT ID3DXPMesh::SetNumFaces([In] unsigned int Faces)</unmanaged>\t\n            <unmanaged-short>ID3DXPMesh::SetNumFaces</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ProgressiveMesh.SetNumVertices(System.Int32)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"vertices\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXPMesh::SetNumVertices']/*\"/>\t\n            <unmanaged>HRESULT ID3DXPMesh::SetNumVertices([In] unsigned int Vertices)</unmanaged>\t\n            <unmanaged-short>ID3DXPMesh::SetNumVertices</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ProgressiveMesh.GetMaxFaces\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXPMesh::GetMaxFaces']/*\"/>\t\n            <unmanaged>unsigned int ID3DXPMesh::GetMaxFaces()</unmanaged>\t\n            <unmanaged-short>ID3DXPMesh::GetMaxFaces</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ProgressiveMesh.GetMinFaces\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXPMesh::GetMinFaces']/*\"/>\t\n            <unmanaged>unsigned int ID3DXPMesh::GetMinFaces()</unmanaged>\t\n            <unmanaged-short>ID3DXPMesh::GetMinFaces</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ProgressiveMesh.GetMaxVertices\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXPMesh::GetMaxVertices']/*\"/>\t\n            <unmanaged>unsigned int ID3DXPMesh::GetMaxVertices()</unmanaged>\t\n            <unmanaged-short>ID3DXPMesh::GetMaxVertices</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ProgressiveMesh.GetMinVertices\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXPMesh::GetMinVertices']/*\"/>\t\n            <unmanaged>unsigned int ID3DXPMesh::GetMinVertices()</unmanaged>\t\n            <unmanaged-short>ID3DXPMesh::GetMinVertices</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ProgressiveMesh.Save_(System.IntPtr,SharpDX.Direct3D9.ExtendedMaterial@,SharpDX.Direct3D9.EffectInstance,System.Int32)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"streamRef\">No documentation.</param>\t\n            <param name=\"materialsRef\">No documentation.</param>\t\n            <param name=\"effectInstancesRef\">No documentation.</param>\t\n            <param name=\"numMaterials\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXPMesh::Save']/*\"/>\t\n            <unmanaged>HRESULT ID3DXPMesh::Save([In] IStream* pStream,[In] const D3DXMATERIAL* pMaterials,[In] const D3DXEFFECTINSTANCE* pEffectInstances,[In] unsigned int NumMaterials)</unmanaged>\t\n            <unmanaged-short>ID3DXPMesh::Save</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ProgressiveMesh.Optimize(System.Int32,System.Int32,System.Int32,SharpDX.Direct3D.Blob@,SharpDX.Direct3D9.Mesh@)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"flags\">No documentation.</param>\t\n            <param name=\"adjacencyOutRef\">No documentation.</param>\t\n            <param name=\"faceRemapRef\">No documentation.</param>\t\n            <param name=\"vertexRemapOut\">No documentation.</param>\t\n            <param name=\"optMeshOut\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXPMesh::Optimize']/*\"/>\t\n            <unmanaged>HRESULT ID3DXPMesh::Optimize([In] unsigned int Flags,[In] unsigned int* pAdjacencyOut,[In] unsigned int* pFaceRemap,[In] ID3DXBuffer** ppVertexRemap,[In] ID3DXMesh** ppOptMesh)</unmanaged>\t\n            <unmanaged-short>ID3DXPMesh::Optimize</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ProgressiveMesh.OptimizeBaseLOD(System.Int32,System.Int32)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"flags\">No documentation.</param>\t\n            <param name=\"faceRemapRef\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXPMesh::OptimizeBaseLOD']/*\"/>\t\n            <unmanaged>HRESULT ID3DXPMesh::OptimizeBaseLOD([In] unsigned int Flags,[In] unsigned int* pFaceRemap)</unmanaged>\t\n            <unmanaged-short>ID3DXPMesh::OptimizeBaseLOD</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ProgressiveMesh.TrimByFaces(System.Int32,System.Int32,System.Int32,System.Int32)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"newFacesMin\">No documentation.</param>\t\n            <param name=\"newFacesMax\">No documentation.</param>\t\n            <param name=\"rgiFaceRemap\">No documentation.</param>\t\n            <param name=\"rgiVertRemap\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXPMesh::TrimByFaces']/*\"/>\t\n            <unmanaged>HRESULT ID3DXPMesh::TrimByFaces([In] unsigned int NewFacesMin,[In] unsigned int NewFacesMax,[In] unsigned int* rgiFaceRemap,[In] unsigned int* rgiVertRemap)</unmanaged>\t\n            <unmanaged-short>ID3DXPMesh::TrimByFaces</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ProgressiveMesh.TrimByVertices(System.Int32,System.Int32,System.Int32,System.Int32)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"newVerticesMin\">No documentation.</param>\t\n            <param name=\"newVerticesMax\">No documentation.</param>\t\n            <param name=\"rgiFaceRemap\">No documentation.</param>\t\n            <param name=\"rgiVertRemap\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXPMesh::TrimByVertices']/*\"/>\t\n            <unmanaged>HRESULT ID3DXPMesh::TrimByVertices([In] unsigned int NewVerticesMin,[In] unsigned int NewVerticesMax,[In] unsigned int* rgiFaceRemap,[In] unsigned int* rgiVertRemap)</unmanaged>\t\n            <unmanaged-short>ID3DXPMesh::TrimByVertices</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ProgressiveMesh.GetAdjacency(System.Int32@)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"adjacencyRef\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXPMesh::GetAdjacency']/*\"/>\t\n            <unmanaged>HRESULT ID3DXPMesh::GetAdjacency([Out] unsigned int* pAdjacency)</unmanaged>\t\n            <unmanaged-short>ID3DXPMesh::GetAdjacency</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ProgressiveMesh.GenerateVertexHistory(System.Int32)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"vertexHistoryRef\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXPMesh::GenerateVertexHistory']/*\"/>\t\n            <unmanaged>HRESULT ID3DXPMesh::GenerateVertexHistory([In] unsigned int* pVertexHistory)</unmanaged>\t\n            <unmanaged-short>ID3DXPMesh::GenerateVertexHistory</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.ProgressiveMesh.MaxFaces\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXPMesh::GetMaxFaces']/*\"/>\t\n            <unmanaged>GetMaxFaces</unmanaged>\t\n            <unmanaged-short>GetMaxFaces</unmanaged-short>\t\n            <unmanaged>unsigned int ID3DXPMesh::GetMaxFaces()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.ProgressiveMesh.MinFaces\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXPMesh::GetMinFaces']/*\"/>\t\n            <unmanaged>GetMinFaces</unmanaged>\t\n            <unmanaged-short>GetMinFaces</unmanaged-short>\t\n            <unmanaged>unsigned int ID3DXPMesh::GetMinFaces()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.ProgressiveMesh.MaxVertices\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXPMesh::GetMaxVertices']/*\"/>\t\n            <unmanaged>GetMaxVertices</unmanaged>\t\n            <unmanaged-short>GetMaxVertices</unmanaged-short>\t\n            <unmanaged>unsigned int ID3DXPMesh::GetMaxVertices()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.ProgressiveMesh.MinVertices\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXPMesh::GetMinVertices']/*\"/>\t\n            <unmanaged>GetMinVertices</unmanaged>\t\n            <unmanaged-short>GetMinVertices</unmanaged-short>\t\n            <unmanaged>unsigned int ID3DXPMesh::GetMinVertices()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.ProgressiveMesh.Adjacency\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXPMesh::GetAdjacency']/*\"/>\t\n            <unmanaged>GetAdjacency</unmanaged>\t\n            <unmanaged-short>GetAdjacency</unmanaged-short>\t\n            <unmanaged>HRESULT ID3DXPMesh::GetAdjacency([Out] unsigned int* pAdjacency)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.Query\">\n            <summary>\t\n            <p>Applications use the methods of the <see cref=\"T:SharpDX.Direct3D9.Query\"/> interface to perform asynchronous queries on a driver.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The LPDIRECT3DQUERY9 and PDIRECT3DQUERY9 types are defined as references to the <strong><see cref=\"T:SharpDX.Direct3D9.Query\"/></strong> interface. </p><pre><code>typedef struct <see cref=\"T:SharpDX.Direct3D9.Query\"/> *LPDIRECT3DQUERY9, *PDIRECT3DQUERY9;</code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DQuery9']/*\"/>\t\n            <msdn-id>bb205872</msdn-id>\t\n            <unmanaged>IDirect3DQuery9</unmanaged>\t\n            <unmanaged-short>IDirect3DQuery9</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Query.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D9.Query\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Query.op_Explicit(System.IntPtr)~SharpDX.Direct3D9.Query\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D9.Query\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Query.GetDevice(SharpDX.Direct3D9.Device@)\">\n            <summary>\t\n            <p>Gets the device that is being queried.</p>\t\n            </summary>\t\n            <param name=\"deviceOut\"><dd>  <p>Pointer to the device being queried. See <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong>.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>. </p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DQuery9::GetDevice']/*\"/>\t\n            <msdn-id>bb205875</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DQuery9::GetDevice([Out] IDirect3DDevice9** ppDevice)</unmanaged>\t\n            <unmanaged-short>IDirect3DQuery9::GetDevice</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Query.GetTypeInfo\">\n            <summary>\t\n            <p>Gets the query type.</p>\t\n            </summary>\t\n            <returns><p>Returns the query type. See <strong><see cref=\"T:SharpDX.Direct3D9.QueryType\"/></strong>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DQuery9::GetType']/*\"/>\t\n            <msdn-id>bb205876</msdn-id>\t\n            <unmanaged>D3DQUERYTYPE IDirect3DQuery9::GetType()</unmanaged>\t\n            <unmanaged-short>IDirect3DQuery9::GetType</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Query.GetDataSize\">\n            <summary>\t\n            <p>Gets the number of bytes in the query data.</p>\t\n            </summary>\t\n            <returns><p>Returns the number of bytes of query data.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DQuery9::GetDataSize']/*\"/>\t\n            <msdn-id>bb205874</msdn-id>\t\n            <unmanaged>unsigned int IDirect3DQuery9::GetDataSize()</unmanaged>\t\n            <unmanaged-short>IDirect3DQuery9::GetDataSize</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Query.Issue(SharpDX.Direct3D9.Issue)\">\n            <summary>\t\n            <p>Issue a query.</p>\t\n            </summary>\t\n            <param name=\"dwIssueFlags\"><dd>  <p>Query flags specify the type of state change for the query. See <strong><see cref=\"F:SharpDX.Direct3D9.Issue.Begin\"/></strong> and <strong><see cref=\"F:SharpDX.Direct3D9.Issue.End\"/></strong>.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>. </p></returns>\t\n            <remarks>\t\n            <p>A signaled query means the query has completed, the data is available, and <strong><see cref=\"M:SharpDX.Direct3D9.Query.GetData(System.IntPtr,System.Int32,System.Int32)\"/></strong> will return <see cref=\"F:SharpDX.Result.Ok\"/>. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DQuery9::Issue']/*\"/>\t\n            <msdn-id>bb205877</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DQuery9::Issue([In] D3DISSUE dwIssueFlags)</unmanaged>\t\n            <unmanaged-short>IDirect3DQuery9::Issue</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Query.GetData(System.IntPtr,System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Polls a queried resource to get the query state or a query result. For more information about queries, see Queries (Direct3D 9).</p>\t\n            </summary>\t\n            <param name=\"dataRef\">No documentation.</param>\t\n            <param name=\"dwSize\">No documentation.</param>\t\n            <param name=\"dwGetDataFlags\">No documentation.</param>\t\n            <returns><p>The return type identifies the query state (see Queries (Direct3D 9)). The method returns <see cref=\"F:SharpDX.Result.Ok\"/> if the query data is available and S_FALSE if it is not.  These are considered successful return values. If the method fails when <strong>D3DGETDATA_FLUSH</strong> is used, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.DeviceLost\"/>. </p></returns>\t\n            <remarks>\t\n            <p>It is possible to lose the device while polling for query status. When <strong>D3DGETDATA_FLUSH</strong> is specified, this method will return <see cref=\"F:SharpDX.Direct3D9.ResultCode.DeviceLost\"/> in response to a lost device. This allows an application to prevent threads from endlessly polling due to a lost device (which cannot respond to the query).</p><p>An application must never write code that only invokes GetData ( ... , 0 ), expecting that GetData will eventually return <see cref=\"F:SharpDX.Result.Ok\"/> by itself over time. This is true, even if the application has used the FLUSH flag with GetData in the past. For example:</p><pre><code>// Enables an infinite loop:\t\n            while( pQuery-&gt;GetData( ... , 0 ) == S_FALSE ) ; // Still enables an infinite loop:\t\n            pQuery-&gt;GetData( ... , D3DGETDATA_FLUSH );\t\n            while( pQuery-&gt;GetData( ... , 0 ) == S_FALSE ) ; // Does not enable an infinite loop because eventually the command\t\n            // buffer will fill up and that will cause a flush to occur.\t\n            while( pQuery-&gt;GetData( ..., 0 ) == S_FALSE ) { pDevice-&gt;SetTexture(...); pDevice-&gt;Draw(...);\t\n            }\t\n            </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DQuery9::GetData']/*\"/>\t\n            <msdn-id>bb205873</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DQuery9::GetData([In] void* pData,[In] unsigned int dwSize,[In] unsigned int dwGetDataFlags)</unmanaged>\t\n            <unmanaged-short>IDirect3DQuery9::GetData</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Query.#ctor(SharpDX.Direct3D9.Device,SharpDX.Direct3D9.QueryType)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D9.Query\"/> class.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"type\">The type.</param>\n        </member>\n        <!-- Badly formed XML comment ignored for member \"M:SharpDX.Direct3D9.Query.GetData``1(``0@,System.Boolean)\" -->\n        <member name=\"P:SharpDX.Direct3D9.Query.Device\">\n            <summary>\t\n            <p>Gets the device that is being queried.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DQuery9::GetDevice']/*\"/>\t\n            <msdn-id>bb205875</msdn-id>\t\n            <unmanaged>GetDevice</unmanaged>\t\n            <unmanaged-short>GetDevice</unmanaged-short>\t\n            <unmanaged>HRESULT IDirect3DQuery9::GetDevice([Out] IDirect3DDevice9** ppDevice)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.Query.DataSize\">\n            <summary>\t\n            <p>Gets the number of bytes in the query data.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DQuery9::GetDataSize']/*\"/>\t\n            <msdn-id>bb205874</msdn-id>\t\n            <unmanaged>GetDataSize</unmanaged>\t\n            <unmanaged-short>GetDataSize</unmanaged-short>\t\n            <unmanaged>unsigned int IDirect3DQuery9::GetDataSize()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.Query.Type\">\n            <summary>\n            Gets the type.\n            </summary>\n            <unmanaged>D3DQUERYTYPE IDirect3DQuery9::GetType()</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.RenderToEnvironmentMap\">\n            <summary>\t\n            <p>The <see cref=\"T:SharpDX.Direct3D9.RenderToEnvironmentMap\"/> interface is used to generalize the process of rendering to environment maps.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>An environment map is used to texture-map scene geometry to provide a more sophisticated scene without using complex geometry. This interface supports creating surfaces for the following kinds of geometry: cube, half sphere or hemispheric, parabolic, or sphere.</p><p>The <strong><see cref=\"T:SharpDX.Direct3D9.RenderToEnvironmentMap\"/></strong> interface is obtained by calling the <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateRenderToEnvMap(SharpDX.Direct3D9.Device,System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Bool,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.RenderToEnvironmentMap@)\"/></strong> function.</p><p>The LPD3DXRenderToEnvMap type is defined as a reference to the <strong><see cref=\"T:SharpDX.Direct3D9.RenderToEnvironmentMap\"/></strong> interface. </p><pre><code> typedef interface <see cref=\"T:SharpDX.Direct3D9.RenderToEnvironmentMap\"/> <see cref=\"T:SharpDX.Direct3D9.RenderToEnvironmentMap\"/>;\t\n            typedef interface <see cref=\"T:SharpDX.Direct3D9.RenderToEnvironmentMap\"/> *LPD3DXRenderToEnvMap;\t\n            </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXRenderToEnvMap']/*\"/>\t\n            <msdn-id>bb174181</msdn-id>\t\n            <unmanaged>ID3DXRenderToEnvMap</unmanaged>\t\n            <unmanaged-short>ID3DXRenderToEnvMap</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.RenderToEnvironmentMap.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D9.RenderToEnvironmentMap\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.RenderToEnvironmentMap.op_Explicit(System.IntPtr)~SharpDX.Direct3D9.RenderToEnvironmentMap\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D9.RenderToEnvironmentMap\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.RenderToEnvironmentMap.GetDevice(SharpDX.Direct3D9.Device@)\">\n            <summary>\t\n            <p>Retrieves the Direct3D device associated with the environment map.</p>\t\n            </summary>\t\n            <param name=\"deviceOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface that represents the Direct3D device object associated with the environment map.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>. Calling this method increases the internal reference count on the <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface. Be sure to call <strong><see cref=\"T:SharpDX.ComObject\"/></strong> when you are done using this <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface or you will have a memory leak.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXRenderToEnvMap::GetDevice']/*\"/>\t\n            <msdn-id>bb174189</msdn-id>\t\n            <unmanaged>HRESULT ID3DXRenderToEnvMap::GetDevice([Out] IDirect3DDevice9** ppDevice)</unmanaged>\t\n            <unmanaged-short>ID3DXRenderToEnvMap::GetDevice</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.RenderToEnvironmentMap.GetDescription(SharpDX.Direct3D9.RenderToEnvironmentMapDescription@)\">\n            <summary>\t\n            <p>Retrieves the description of the render surface.</p>\t\n            </summary>\t\n            <param name=\"descRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.RenderToEnvironmentMapDescription\"/></strong> structure that describes the rendering surface.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXRenderToEnvMap::GetDesc']/*\"/>\t\n            <msdn-id>bb174188</msdn-id>\t\n            <unmanaged>HRESULT ID3DXRenderToEnvMap::GetDesc([Out] D3DXRTE_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>ID3DXRenderToEnvMap::GetDesc</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.RenderToEnvironmentMap.BeginCube(SharpDX.Direct3D9.CubeTexture)\">\n            <summary>\t\n            <p>Initiate the rendering of a cubic environment map.</p>\t\n            </summary>\t\n            <param name=\"cubeTexRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.CubeTexture\"/></strong> interface that represents the cube texture to which to render.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>See <strong><see cref=\"M:SharpDX.Direct3D9.RenderToEnvironmentMap.Face(SharpDX.Direct3D9.CubeMapFace,System.Int32)\"/></strong> to draw each of the 6 faces.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXRenderToEnvMap::BeginCube']/*\"/>\t\n            <msdn-id>bb174182</msdn-id>\t\n            <unmanaged>HRESULT ID3DXRenderToEnvMap::BeginCube([In] IDirect3DCubeTexture9* pCubeTex)</unmanaged>\t\n            <unmanaged-short>ID3DXRenderToEnvMap::BeginCube</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.RenderToEnvironmentMap.BeginSphere(SharpDX.Direct3D9.Texture)\">\n            <summary>\t\n            <p>Initiate the rendering of a spherical environment map.</p>\t\n            </summary>\t\n            <param name=\"texRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Texture\"/></strong> interface that represents the texture to which to render.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.E_FAIL</p></returns>\t\n            <remarks>\t\n            <p>See <strong><see cref=\"M:SharpDX.Direct3D9.RenderToEnvironmentMap.Face(SharpDX.Direct3D9.CubeMapFace,System.Int32)\"/></strong> to draw the face.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXRenderToEnvMap::BeginSphere']/*\"/>\t\n            <msdn-id>bb174185</msdn-id>\t\n            <unmanaged>HRESULT ID3DXRenderToEnvMap::BeginSphere([In] IDirect3DTexture9* pTex)</unmanaged>\t\n            <unmanaged-short>ID3DXRenderToEnvMap::BeginSphere</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.RenderToEnvironmentMap.BeginHemisphere(SharpDX.Direct3D9.Texture,SharpDX.Direct3D9.Texture)\">\n            <summary>\t\n            <p>Initiate the rendering of a hemispheric environment map.</p>\t\n            </summary>\t\n            <param name=\"texZPosRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Texture\"/></strong> interface that represents the positive texture render surface.</p> </dd></param>\t\n            <param name=\"texZNegRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Texture\"/></strong> interface that represents the negative texture render surface.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.E_FAIL</p></returns>\t\n            <remarks>\t\n            <p>See <strong><see cref=\"M:SharpDX.Direct3D9.RenderToEnvironmentMap.Face(SharpDX.Direct3D9.CubeMapFace,System.Int32)\"/></strong> to draw the face.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXRenderToEnvMap::BeginHemisphere']/*\"/>\t\n            <msdn-id>bb174183</msdn-id>\t\n            <unmanaged>HRESULT ID3DXRenderToEnvMap::BeginHemisphere([In] IDirect3DTexture9* pTexZPos,[In] IDirect3DTexture9* pTexZNeg)</unmanaged>\t\n            <unmanaged-short>ID3DXRenderToEnvMap::BeginHemisphere</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.RenderToEnvironmentMap.BeginParabolic(SharpDX.Direct3D9.Texture,SharpDX.Direct3D9.Texture)\">\n            <summary>\t\n            <p>Initiate the rendering of a parabolic environment map.</p>\t\n            </summary>\t\n            <param name=\"texZPosRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Texture\"/></strong> interface that represents the positive render texture.</p> </dd></param>\t\n            <param name=\"texZNegRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Texture\"/></strong> interface that represents the negative render texture.</p> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.E_FAIL</p></returns>\t\n            <remarks>\t\n            <p>See <strong><see cref=\"M:SharpDX.Direct3D9.RenderToEnvironmentMap.Face(SharpDX.Direct3D9.CubeMapFace,System.Int32)\"/></strong> to draw the faces.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXRenderToEnvMap::BeginParabolic']/*\"/>\t\n            <msdn-id>bb174184</msdn-id>\t\n            <unmanaged>HRESULT ID3DXRenderToEnvMap::BeginParabolic([In] IDirect3DTexture9* pTexZPos,[In] IDirect3DTexture9* pTexZNeg)</unmanaged>\t\n            <unmanaged-short>ID3DXRenderToEnvMap::BeginParabolic</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.RenderToEnvironmentMap.Face(SharpDX.Direct3D9.CubeMapFace,System.Int32)\">\n            <summary>\t\n            <p>Initiate the drawing of each face of an environment map.</p>\t\n            </summary>\t\n            <param name=\"face\"><dd>  <p>The first face of the environmental cube map. See <strong><see cref=\"T:SharpDX.Direct3D9.CubeMapFace\"/></strong>.</p> </dd></param>\t\n            <param name=\"mipFilter\"><dd>  <p>A valid combination of one or more <see cref=\"T:SharpDX.Direct3D9.Filter\"/> flags.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>This method must be called once for each type of environment map. The only exception is a cubic environment map which requires this method to be called six times, once for each face in <see cref=\"T:SharpDX.Direct3D9.CubeMapFace\"/>. For more information, see Environment Mapping (Direct3D 9). </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXRenderToEnvMap::Face']/*\"/>\t\n            <msdn-id>bb174187</msdn-id>\t\n            <unmanaged>HRESULT ID3DXRenderToEnvMap::Face([In] D3DCUBEMAP_FACES Face,[In] unsigned int MipFilter)</unmanaged>\t\n            <unmanaged-short>ID3DXRenderToEnvMap::Face</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.RenderToEnvironmentMap.End(System.Int32)\">\n            <summary>\t\n            <p>Restore all render targets and, if needed, compose all the rendered faces into the environment map surface.</p>\t\n            </summary>\t\n            <param name=\"mipFilter\"><dd>  <p>A valid combination of one or more <see cref=\"T:SharpDX.Direct3D9.Filter\"/> flags.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXRenderToEnvMap::End']/*\"/>\t\n            <msdn-id>bb174186</msdn-id>\t\n            <unmanaged>HRESULT ID3DXRenderToEnvMap::End([In] unsigned int MipFilter)</unmanaged>\t\n            <unmanaged-short>ID3DXRenderToEnvMap::End</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.RenderToEnvironmentMap.OnLostDevice\">\n            <summary>\t\n            <p>Use this method to release all references to video memory resources and delete all stateblocks. This method should be called whenever a device is lost, or before resetting a device.</p>\t\n            </summary>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>This method should be called whenever the device is lost or before the user calls <strong><see cref=\"M:SharpDX.Direct3D9.Device.Reset(SharpDX.Direct3D9.PresentParameters[])\"/></strong>. Even if the device was not actually lost, <strong><see cref=\"M:SharpDX.Direct3D9.RenderToEnvironmentMap.OnLostDevice\"/></strong> is responsible for freeing stateblocks and other resources that may need to be released before resetting the device. As a result, the font object cannot be used again before calling <strong><see cref=\"M:SharpDX.Direct3D9.Device.Reset(SharpDX.Direct3D9.PresentParameters[])\"/></strong> and then <strong><see cref=\"M:SharpDX.Direct3D9.RenderToEnvironmentMap.OnResetDevice\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXRenderToEnvMap::OnLostDevice']/*\"/>\t\n            <msdn-id>bb174190</msdn-id>\t\n            <unmanaged>HRESULT ID3DXRenderToEnvMap::OnLostDevice()</unmanaged>\t\n            <unmanaged-short>ID3DXRenderToEnvMap::OnLostDevice</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.RenderToEnvironmentMap.OnResetDevice\">\n            <summary>\t\n            <p>Use this method to re-acquire resources and save initial state.</p>\t\n            </summary>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p><strong><see cref=\"M:SharpDX.Direct3D9.RenderToEnvironmentMap.OnResetDevice\"/></strong> should be called each time the device is reset (using <strong><see cref=\"M:SharpDX.Direct3D9.Device.Reset(SharpDX.Direct3D9.PresentParameters[])\"/></strong>), before any other methods are called. This is a good place to re-acquire video-memory resources and capture state blocks.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXRenderToEnvMap::OnResetDevice']/*\"/>\t\n            <msdn-id>bb174191</msdn-id>\t\n            <unmanaged>HRESULT ID3DXRenderToEnvMap::OnResetDevice()</unmanaged>\t\n            <unmanaged-short>ID3DXRenderToEnvMap::OnResetDevice</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.RenderToEnvironmentMap.Device\">\n            <summary>\t\n            <p>Retrieves the Direct3D device associated with the environment map.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXRenderToEnvMap::GetDevice']/*\"/>\t\n            <msdn-id>bb174189</msdn-id>\t\n            <unmanaged>GetDevice</unmanaged>\t\n            <unmanaged-short>GetDevice</unmanaged-short>\t\n            <unmanaged>HRESULT ID3DXRenderToEnvMap::GetDevice([Out] IDirect3DDevice9** ppDevice)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.RenderToEnvironmentMap.Description\">\n            <summary>\t\n            <p>Retrieves the description of the render surface.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXRenderToEnvMap::GetDesc']/*\"/>\t\n            <msdn-id>bb174188</msdn-id>\t\n            <unmanaged>GetDesc</unmanaged>\t\n            <unmanaged-short>GetDesc</unmanaged-short>\t\n            <unmanaged>HRESULT ID3DXRenderToEnvMap::GetDesc([Out] D3DXRTE_DESC* pDesc)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.RenderToSurface\">\n            <summary>\t\n            <p>The <see cref=\"T:SharpDX.Direct3D9.RenderToSurface\"/> interface is used to generalize the process of rendering to surfaces.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Surfaces can be used in a variety of ways including render targets, off-screen rendering, or rendering to textures.</p><p>A surface can be configured using a separate viewport using the <strong><see cref=\"M:SharpDX.Direct3D9.RenderToSurface.BeginScene(SharpDX.Direct3D9.Surface,SharpDX.Viewport)\"/></strong> method, to provide a custom render view. If the surface is not a render target, a compatible render target is used, and the result is copied to the surface at the end of the scene.</p><p>The <strong><see cref=\"T:SharpDX.Direct3D9.RenderToSurface\"/></strong> interface is obtained by calling the <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateRenderToSurface(SharpDX.Direct3D9.Device,System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Bool,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.RenderToSurface)\"/></strong> function.</p><p>The LPD3DXRENDERTOSURFACE type is defined as a reference to the <strong><see cref=\"T:SharpDX.Direct3D9.RenderToSurface\"/></strong> interface.</p><pre><code> typedef interface <see cref=\"T:SharpDX.Direct3D9.RenderToSurface\"/> <see cref=\"T:SharpDX.Direct3D9.RenderToSurface\"/>;\t\n            typedef interface <see cref=\"T:SharpDX.Direct3D9.RenderToSurface\"/> *LPD3DXRENDERTOSURFACE;\t\n            </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXRenderToSurface']/*\"/>\t\n            <msdn-id>bb174192</msdn-id>\t\n            <unmanaged>ID3DXRenderToSurface</unmanaged>\t\n            <unmanaged-short>ID3DXRenderToSurface</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.RenderToSurface.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D9.RenderToSurface\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.RenderToSurface.op_Explicit(System.IntPtr)~SharpDX.Direct3D9.RenderToSurface\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D9.RenderToSurface\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.RenderToSurface.GetDevice(SharpDX.Direct3D9.Device@)\">\n            <summary>\t\n            <p>Retrieves the Direct3D device associated with the render surface.</p>\t\n            </summary>\t\n            <param name=\"deviceOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface, representing the Direct3D device object associated with the render surface.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>. Calling this method will increase the internal reference count on the <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface. Be sure to call <strong><see cref=\"T:SharpDX.ComObject\"/></strong> when you are done using this <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface or you will have a memory leak.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXRenderToSurface::GetDevice']/*\"/>\t\n            <msdn-id>bb174196</msdn-id>\t\n            <unmanaged>HRESULT ID3DXRenderToSurface::GetDevice([Out] IDirect3DDevice9** ppDevice)</unmanaged>\t\n            <unmanaged-short>ID3DXRenderToSurface::GetDevice</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.RenderToSurface.GetDescription(SharpDX.Direct3D9.RenderToSurfaceDescription@)\">\n            <summary>\t\n            <p>Retrieves the parameters of the render surface.</p>\t\n            </summary>\t\n            <param name=\"descRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.RenderToSurfaceDescription\"/></strong> structure, describing the parameters of the render surface.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXRenderToSurface::GetDesc']/*\"/>\t\n            <msdn-id>bb174195</msdn-id>\t\n            <unmanaged>HRESULT ID3DXRenderToSurface::GetDesc([Out] D3DXRTS_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>ID3DXRenderToSurface::GetDesc</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.RenderToSurface.BeginScene(SharpDX.Direct3D9.Surface,SharpDX.Viewport)\">\n            <summary>\t\n            <p>Begins a scene.</p>\t\n            </summary>\t\n            <param name=\"surfaceRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Surface\"/></strong> interface, representing the render surface.</p> </dd></param>\t\n            <param name=\"viewportRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Viewport\"/></strong> structure, describing the viewport for the scene.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.<see cref=\"F:SharpDX.Direct3D9.ResultCode.OutOfVideoMemory\"/> D3DXERR_INVALIDDATA E_OUTOFMEMORY</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXRenderToSurface::BeginScene']/*\"/>\t\n            <msdn-id>bb174193</msdn-id>\t\n            <unmanaged>HRESULT ID3DXRenderToSurface::BeginScene([In] IDirect3DSurface9* pSurface,[In] const D3DVIEWPORT9* pViewport)</unmanaged>\t\n            <unmanaged-short>ID3DXRenderToSurface::BeginScene</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.RenderToSurface.EndScene(SharpDX.Direct3D9.Filter)\">\n            <summary>\t\n            <p>Ends a scene.</p>\t\n            </summary>\t\n            <param name=\"mipFilter\"><dd>  <p>Filter options, enumerated in <see cref=\"T:SharpDX.Direct3D9.Filter\"/>.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXRenderToSurface::EndScene']/*\"/>\t\n            <msdn-id>bb174194</msdn-id>\t\n            <unmanaged>HRESULT ID3DXRenderToSurface::EndScene([In] D3DX_FILTER MipFilter)</unmanaged>\t\n            <unmanaged-short>ID3DXRenderToSurface::EndScene</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.RenderToSurface.OnLostDevice\">\n            <summary>\t\n            <p>Use this method to release all references to video memory resources and delete all stateblocks. This method should be called whenever a device is lost or before resetting a device.</p>\t\n            </summary>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>This method should be called whenever the device is lost or before the user calls <strong><see cref=\"M:SharpDX.Direct3D9.Device.Reset(SharpDX.Direct3D9.PresentParameters[])\"/></strong>. Even if the device was not actually lost, <see cref=\"M:SharpDX.Direct3D9.RenderToSurface.OnLostDevice\"/> is responsible for freeing stateblocks and other resources that may need to be released before resetting the device. As a result, the font object cannot be used again before calling <strong><see cref=\"M:SharpDX.Direct3D9.Device.Reset(SharpDX.Direct3D9.PresentParameters[])\"/></strong> and then <see cref=\"M:SharpDX.Direct3D9.RenderToSurface.OnResetDevice\"/>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXRenderToSurface::OnLostDevice']/*\"/>\t\n            <msdn-id>bb174197</msdn-id>\t\n            <unmanaged>HRESULT ID3DXRenderToSurface::OnLostDevice()</unmanaged>\t\n            <unmanaged-short>ID3DXRenderToSurface::OnLostDevice</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.RenderToSurface.OnResetDevice\">\n            <summary>\t\n            <p>Use this method to re-acquire resources and save initial state.</p>\t\n            </summary>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p><see cref=\"M:SharpDX.Direct3D9.RenderToSurface.OnResetDevice\"/> should be called each time the device is reset (using <strong><see cref=\"M:SharpDX.Direct3D9.Device.Reset(SharpDX.Direct3D9.PresentParameters[])\"/></strong>), before any other methods are called. This is a good place to re-acquire video-memory resources and capture state blocks.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXRenderToSurface::OnResetDevice']/*\"/>\t\n            <msdn-id>bb174198</msdn-id>\t\n            <unmanaged>HRESULT ID3DXRenderToSurface::OnResetDevice()</unmanaged>\t\n            <unmanaged-short>ID3DXRenderToSurface::OnResetDevice</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.RenderToSurface.#ctor(SharpDX.Direct3D9.Device,System.Int32,System.Int32,SharpDX.Direct3D9.Format,System.Boolean,SharpDX.Direct3D9.Format)\">\n            <summary>\t\n            Creates a render surface.\n            </summary>\t\n            <param name=\"device\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface, the device to be associated with the render surface.</p> </dd></param>\t\n            <param name=\"width\"><dd>  <p>Width of the render surface, in pixels.</p> </dd></param>\t\n            <param name=\"height\"><dd>  <p>Height of the render surface, in pixels.</p> </dd></param>\t\n            <param name=\"format\"><dd>  <p>Member of the <see cref=\"T:SharpDX.Direct3D9.Format\"/> enumerated type, describing the pixel format of the render surface.</p> </dd></param>\t\n            <param name=\"depthStencil\"><dd>  <p>If <strong>TRUE</strong>, the render surface supports a depth-stencil surface. Otherwise, this member is set to <strong><see cref=\"F:SharpDX.Result.False\"/></strong>. This function will create a new depth buffer.</p> </dd></param>\t\n            <param name=\"depthStencilFormat\"><dd>  <p>If  <em>DepthStencil</em> is set to <strong>TRUE</strong>, this parameter is a member of the <see cref=\"T:SharpDX.Direct3D9.Format\"/> enumerated type, describing the depth-stencil format of the render surface.</p> </dd></param>\t\n            <msdn-id>bb172791</msdn-id>\t\n            <unmanaged>HRESULT D3DXCreateRenderToSurface([In] IDirect3DDevice9* pDevice,[In] unsigned int Width,[In] unsigned int Height,[In] D3DFORMAT Format,[In] BOOL DepthStencil,[In] D3DFORMAT DepthStencilFormat,[In] ID3DXRenderToSurface** ppRenderToSurface)</unmanaged>\t\n            <unmanaged-short>D3DXCreateRenderToSurface</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.RenderToSurface.Device\">\n            <summary>\t\n            <p>Retrieves the Direct3D device associated with the render surface.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXRenderToSurface::GetDevice']/*\"/>\t\n            <msdn-id>bb174196</msdn-id>\t\n            <unmanaged>GetDevice</unmanaged>\t\n            <unmanaged-short>GetDevice</unmanaged-short>\t\n            <unmanaged>HRESULT ID3DXRenderToSurface::GetDevice([Out] IDirect3DDevice9** ppDevice)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.RenderToSurface.Description\">\n            <summary>\t\n            <p>Retrieves the parameters of the render surface.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXRenderToSurface::GetDesc']/*\"/>\t\n            <msdn-id>bb174195</msdn-id>\t\n            <unmanaged>GetDesc</unmanaged>\t\n            <unmanaged-short>GetDesc</unmanaged-short>\t\n            <unmanaged>HRESULT ID3DXRenderToSurface::GetDesc([Out] D3DXRTS_DESC* pDesc)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.SimplificationMesh\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXSPMesh']/*\"/>\t\n            <msdn-id>bb280438</msdn-id>\t\n            <unmanaged>ID3DXSPMesh</unmanaged>\t\n            <unmanaged-short>ID3DXSPMesh</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.SimplificationMesh.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D9.SimplificationMesh\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.SimplificationMesh.op_Explicit(System.IntPtr)~SharpDX.Direct3D9.SimplificationMesh\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D9.SimplificationMesh\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.SimplificationMesh.GetNumFaces\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXSPMesh::GetNumFaces']/*\"/>\t\n            <unmanaged>unsigned int ID3DXSPMesh::GetNumFaces()</unmanaged>\t\n            <unmanaged-short>ID3DXSPMesh::GetNumFaces</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.SimplificationMesh.GetNumVertices\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXSPMesh::GetNumVertices']/*\"/>\t\n            <unmanaged>unsigned int ID3DXSPMesh::GetNumVertices()</unmanaged>\t\n            <unmanaged-short>ID3DXSPMesh::GetNumVertices</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.SimplificationMesh.GetFVF\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXSPMesh::GetFVF']/*\"/>\t\n            <unmanaged>unsigned int ID3DXSPMesh::GetFVF()</unmanaged>\t\n            <unmanaged-short>ID3DXSPMesh::GetFVF</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.SimplificationMesh.GetDeclaration(SharpDX.Direct3D9.VertexElement)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"declaration\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXSPMesh::GetDeclaration']/*\"/>\t\n            <unmanaged>HRESULT ID3DXSPMesh::GetDeclaration([In] D3DVERTEXELEMENT9* Declaration)</unmanaged>\t\n            <unmanaged-short>ID3DXSPMesh::GetDeclaration</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.SimplificationMesh.GetOptions\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXSPMesh::GetOptions']/*\"/>\t\n            <unmanaged>unsigned int ID3DXSPMesh::GetOptions()</unmanaged>\t\n            <unmanaged-short>ID3DXSPMesh::GetOptions</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.SimplificationMesh.GetDevice(SharpDX.Direct3D9.Device@)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"deviceOut\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXSPMesh::GetDevice']/*\"/>\t\n            <unmanaged>HRESULT ID3DXSPMesh::GetDevice([Out] IDirect3DDevice9** ppDevice)</unmanaged>\t\n            <unmanaged-short>ID3DXSPMesh::GetDevice</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.SimplificationMesh.CloneMeshFVF(System.Int32,System.Int32,SharpDX.Direct3D9.Device,System.Int32,System.Int32,SharpDX.Direct3D9.Mesh@)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"options\">No documentation.</param>\t\n            <param name=\"fvf\">No documentation.</param>\t\n            <param name=\"d3DDeviceRef\">No documentation.</param>\t\n            <param name=\"adjacencyOutRef\">No documentation.</param>\t\n            <param name=\"vertexRemapOutRef\">No documentation.</param>\t\n            <param name=\"cloneMeshOut\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXSPMesh::CloneMeshFVF']/*\"/>\t\n            <unmanaged>HRESULT ID3DXSPMesh::CloneMeshFVF([In] unsigned int Options,[In] unsigned int FVF,[In] IDirect3DDevice9* pD3DDevice,[In] unsigned int* pAdjacencyOut,[In] unsigned int* pVertexRemapOut,[In] ID3DXMesh** ppCloneMesh)</unmanaged>\t\n            <unmanaged-short>ID3DXSPMesh::CloneMeshFVF</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.SimplificationMesh.CloneMesh(System.Int32,SharpDX.Direct3D9.VertexElement,SharpDX.Direct3D9.Device,System.Int32,System.Int32,SharpDX.Direct3D9.Mesh@)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"options\">No documentation.</param>\t\n            <param name=\"declarationRef\">No documentation.</param>\t\n            <param name=\"d3DDeviceRef\">No documentation.</param>\t\n            <param name=\"adjacencyOutRef\">No documentation.</param>\t\n            <param name=\"vertexRemapOutRef\">No documentation.</param>\t\n            <param name=\"cloneMeshOut\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXSPMesh::CloneMesh']/*\"/>\t\n            <unmanaged>HRESULT ID3DXSPMesh::CloneMesh([In] unsigned int Options,[In] const D3DVERTEXELEMENT9* pDeclaration,[In] IDirect3DDevice9* pD3DDevice,[In] unsigned int* pAdjacencyOut,[In] unsigned int* pVertexRemapOut,[In] ID3DXMesh** ppCloneMesh)</unmanaged>\t\n            <unmanaged-short>ID3DXSPMesh::CloneMesh</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.SimplificationMesh.ClonePMeshFVF(System.Int32,System.Int32,SharpDX.Direct3D9.Device,System.Int32,System.Single,SharpDX.Direct3D9.ProgressiveMesh@)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"options\">No documentation.</param>\t\n            <param name=\"fvf\">No documentation.</param>\t\n            <param name=\"d3DDeviceRef\">No documentation.</param>\t\n            <param name=\"vertexRemapOutRef\">No documentation.</param>\t\n            <param name=\"errorsByFaceRef\">No documentation.</param>\t\n            <param name=\"cloneMeshOut\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXSPMesh::ClonePMeshFVF']/*\"/>\t\n            <unmanaged>HRESULT ID3DXSPMesh::ClonePMeshFVF([In] unsigned int Options,[In] unsigned int FVF,[In] IDirect3DDevice9* pD3DDevice,[In] unsigned int* pVertexRemapOut,[In] float* pErrorsByFace,[In] ID3DXPMesh** ppCloneMesh)</unmanaged>\t\n            <unmanaged-short>ID3DXSPMesh::ClonePMeshFVF</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.SimplificationMesh.ClonePMesh(System.Int32,SharpDX.Direct3D9.VertexElement,SharpDX.Direct3D9.Device,System.Int32,System.Single,SharpDX.Direct3D9.ProgressiveMesh@)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"options\">No documentation.</param>\t\n            <param name=\"declarationRef\">No documentation.</param>\t\n            <param name=\"d3DDeviceRef\">No documentation.</param>\t\n            <param name=\"vertexRemapOutRef\">No documentation.</param>\t\n            <param name=\"errorsbyFaceRef\">No documentation.</param>\t\n            <param name=\"cloneMeshOut\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXSPMesh::ClonePMesh']/*\"/>\t\n            <unmanaged>HRESULT ID3DXSPMesh::ClonePMesh([In] unsigned int Options,[In] const D3DVERTEXELEMENT9* pDeclaration,[In] IDirect3DDevice9* pD3DDevice,[In] unsigned int* pVertexRemapOut,[In] float* pErrorsbyFace,[In] ID3DXPMesh** ppCloneMesh)</unmanaged>\t\n            <unmanaged-short>ID3DXSPMesh::ClonePMesh</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.SimplificationMesh.ReduceFaces(System.Int32)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"faces\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXSPMesh::ReduceFaces']/*\"/>\t\n            <unmanaged>HRESULT ID3DXSPMesh::ReduceFaces([In] unsigned int Faces)</unmanaged>\t\n            <unmanaged-short>ID3DXSPMesh::ReduceFaces</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.SimplificationMesh.ReduceVertices(System.Int32)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"vertices\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXSPMesh::ReduceVertices']/*\"/>\t\n            <unmanaged>HRESULT ID3DXSPMesh::ReduceVertices([In] unsigned int Vertices)</unmanaged>\t\n            <unmanaged-short>ID3DXSPMesh::ReduceVertices</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.SimplificationMesh.GetMaxFaces\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXSPMesh::GetMaxFaces']/*\"/>\t\n            <unmanaged>unsigned int ID3DXSPMesh::GetMaxFaces()</unmanaged>\t\n            <unmanaged-short>ID3DXSPMesh::GetMaxFaces</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.SimplificationMesh.GetMaxVertices\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXSPMesh::GetMaxVertices']/*\"/>\t\n            <unmanaged>unsigned int ID3DXSPMesh::GetMaxVertices()</unmanaged>\t\n            <unmanaged-short>ID3DXSPMesh::GetMaxVertices</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.SimplificationMesh.GetVertexAttributeWeights(SharpDX.Direct3D9.AttributeWeights@)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"vertexAttributeWeightsRef\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXSPMesh::GetVertexAttributeWeights']/*\"/>\t\n            <unmanaged>HRESULT ID3DXSPMesh::GetVertexAttributeWeights([In] D3DXATTRIBUTEWEIGHTS* pVertexAttributeWeights)</unmanaged>\t\n            <unmanaged-short>ID3DXSPMesh::GetVertexAttributeWeights</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.SimplificationMesh.GetVertexWeights(System.Single@)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"vertexWeightsRef\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXSPMesh::GetVertexWeights']/*\"/>\t\n            <unmanaged>HRESULT ID3DXSPMesh::GetVertexWeights([Out] float* pVertexWeights)</unmanaged>\t\n            <unmanaged-short>ID3DXSPMesh::GetVertexWeights</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.SimplificationMesh.NumFaces\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXSPMesh::GetNumFaces']/*\"/>\t\n            <unmanaged>GetNumFaces</unmanaged>\t\n            <unmanaged-short>GetNumFaces</unmanaged-short>\t\n            <unmanaged>unsigned int ID3DXSPMesh::GetNumFaces()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.SimplificationMesh.NumVertices\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXSPMesh::GetNumVertices']/*\"/>\t\n            <unmanaged>GetNumVertices</unmanaged>\t\n            <unmanaged-short>GetNumVertices</unmanaged-short>\t\n            <unmanaged>unsigned int ID3DXSPMesh::GetNumVertices()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.SimplificationMesh.FVF\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXSPMesh::GetFVF']/*\"/>\t\n            <unmanaged>GetFVF</unmanaged>\t\n            <unmanaged-short>GetFVF</unmanaged-short>\t\n            <unmanaged>unsigned int ID3DXSPMesh::GetFVF()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.SimplificationMesh.Options\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXSPMesh::GetOptions']/*\"/>\t\n            <unmanaged>GetOptions</unmanaged>\t\n            <unmanaged-short>GetOptions</unmanaged-short>\t\n            <unmanaged>unsigned int ID3DXSPMesh::GetOptions()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.SimplificationMesh.Device\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXSPMesh::GetDevice']/*\"/>\t\n            <unmanaged>GetDevice</unmanaged>\t\n            <unmanaged-short>GetDevice</unmanaged-short>\t\n            <unmanaged>HRESULT ID3DXSPMesh::GetDevice([Out] IDirect3DDevice9** ppDevice)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.SimplificationMesh.MaxFaces\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXSPMesh::GetMaxFaces']/*\"/>\t\n            <unmanaged>GetMaxFaces</unmanaged>\t\n            <unmanaged-short>GetMaxFaces</unmanaged-short>\t\n            <unmanaged>unsigned int ID3DXSPMesh::GetMaxFaces()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.SimplificationMesh.MaxVertices\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXSPMesh::GetMaxVertices']/*\"/>\t\n            <unmanaged>GetMaxVertices</unmanaged>\t\n            <unmanaged-short>GetMaxVertices</unmanaged-short>\t\n            <unmanaged>unsigned int ID3DXSPMesh::GetMaxVertices()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.SimplificationMesh.VertexWeights\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXSPMesh::GetVertexWeights']/*\"/>\t\n            <unmanaged>GetVertexWeights</unmanaged>\t\n            <unmanaged-short>GetVertexWeights</unmanaged-short>\t\n            <unmanaged>HRESULT ID3DXSPMesh::GetVertexWeights([Out] float* pVertexWeights)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.SkinInfo\">\n            <summary>\t\n            <p>Applications use the methods of the <see cref=\"T:SharpDX.Direct3D9.SkinInfo\"/> interface to manipulate bone matrices, which are used to skin vertex data for animation. This interface is no longer strictly tied to <strong><see cref=\"T:SharpDX.Direct3D9.Mesh\"/></strong> and can be used to skin any set of vertex data.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Create a <strong><see cref=\"T:SharpDX.Direct3D9.SkinInfo\"/></strong> interface with <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateSkinInfo(System.Int32,SharpDX.Direct3D9.VertexElement,System.Int32,SharpDX.Direct3D9.SkinInfo@)\"/></strong>, <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateSkinInfoFromBlendedMesh(SharpDX.Direct3D9.BaseMesh,System.Int32,SharpDX.Direct3D9.BoneCombination,SharpDX.Direct3D9.SkinInfo@)\"/></strong>, or <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateSkinInfoFVF(System.Int32,SharpDX.Direct3D9.VertexFormat,System.Int32,SharpDX.Direct3D9.SkinInfo@)\"/></strong>.</p><p>The LPD3DXSKININFO type is defined as a reference to the <strong><see cref=\"T:SharpDX.Direct3D9.SkinInfo\"/></strong> interface. </p><pre><code> typedef struct <see cref=\"T:SharpDX.Direct3D9.SkinInfo\"/> *LPD3DXSKININFO;\t\n            </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXSkinInfo']/*\"/>\t\n            <msdn-id>bb174206</msdn-id>\t\n            <unmanaged>ID3DXSkinInfo</unmanaged>\t\n            <unmanaged-short>ID3DXSkinInfo</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.SkinInfo.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D9.SkinInfo\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.SkinInfo.op_Explicit(System.IntPtr)~SharpDX.Direct3D9.SkinInfo\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D9.SkinInfo\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.SkinInfo.SetBoneInfluence(System.Int32,System.Int32,System.Int32,System.Single)\">\n            <summary>\t\n            <p>Sets the influence value for a bone.</p>\t\n            </summary>\t\n            <param name=\"bone\"><dd>  <p>Bone number.</p> </dd></param>\t\n            <param name=\"numInfluences\"><dd>  <p>Number of influences.</p> </dd></param>\t\n            <param name=\"vertices\"><dd>  <p>The array of vertices influenced by a bone.</p> </dd></param>\t\n            <param name=\"weights\"><dd>  <p>The array of weights influenced by a bone.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXSkinInfo::SetBoneInfluence']/*\"/>\t\n            <msdn-id>bb174224</msdn-id>\t\n            <unmanaged>HRESULT ID3DXSkinInfo::SetBoneInfluence([In] unsigned int bone,[In] unsigned int numInfluences,[In] const unsigned int* vertices,[In] const float* weights)</unmanaged>\t\n            <unmanaged-short>ID3DXSkinInfo::SetBoneInfluence</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.SkinInfo.SetBoneVertexInfluence(System.Int32,System.Int32,System.Single)\">\n            <summary>\t\n            <p>Sets an influence value of a bone on a single vertex.</p>\t\n            </summary>\t\n            <param name=\"boneNum\"><dd>  <p>Index of the bone. Must be between 0 and the number of bones.</p> </dd></param>\t\n            <param name=\"influenceNum\"><dd>  <p>Index of the influence array of the specified bone.</p> </dd></param>\t\n            <param name=\"weight\"><dd>  <p>Blend factor of the specified bone influence.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXSkinInfo::SetBoneVertexInfluence']/*\"/>\t\n            <msdn-id>bb174227</msdn-id>\t\n            <unmanaged>HRESULT ID3DXSkinInfo::SetBoneVertexInfluence([In] unsigned int boneNum,[In] unsigned int influenceNum,[In] float weight)</unmanaged>\t\n            <unmanaged-short>ID3DXSkinInfo::SetBoneVertexInfluence</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.SkinInfo.GetNumBoneInfluences(System.Int32)\">\n            <summary>\t\n            <p>Gets the number of influences for a bone.</p>\t\n            </summary>\t\n            <param name=\"bone\"><dd>  <p>Bone number.</p> </dd></param>\t\n            <returns><p>Returns the number of influences for a bone.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXSkinInfo::GetNumBoneInfluences']/*\"/>\t\n            <msdn-id>bb174220</msdn-id>\t\n            <unmanaged>unsigned int ID3DXSkinInfo::GetNumBoneInfluences([In] unsigned int bone)</unmanaged>\t\n            <unmanaged-short>ID3DXSkinInfo::GetNumBoneInfluences</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.SkinInfo.GetBoneInfluence(System.Int32,System.Int32@,System.Single@)\">\n            <summary>\t\n            <p>Gets the vertices and weights that a bone influences.</p>\t\n            </summary>\t\n            <param name=\"bone\"><dd>  <p>Bone number.</p> </dd></param>\t\n            <param name=\"vertices\"><dd>  <p>Get the array of vertices influenced by a bone.</p> </dd></param>\t\n            <param name=\"weights\"><dd>  <p>Get the array of weights influenced by a bone.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>Use <strong><see cref=\"M:SharpDX.Direct3D9.SkinInfo.GetNumBoneInfluences(System.Int32)\"/></strong> to find out how many vertices the bone influences. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXSkinInfo::GetBoneInfluence']/*\"/>\t\n            <msdn-id>bb174211</msdn-id>\t\n            <unmanaged>HRESULT ID3DXSkinInfo::GetBoneInfluence([In] unsigned int bone,[Out] unsigned int* vertices,[Out] float* weights)</unmanaged>\t\n            <unmanaged-short>ID3DXSkinInfo::GetBoneInfluence</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.SkinInfo.GetBoneVertexInfluence(System.Int32,System.Int32,System.Single@,System.Int32@)\">\n            <summary>\t\n            <p>Retrieves the blend factor and vertex affected by a specified bone influence.</p>\t\n            </summary>\t\n            <param name=\"boneNum\"><dd>  <p>Index of the bone. Must be between 0 and the number of bones.</p> </dd></param>\t\n            <param name=\"influenceNum\"><dd>  <p>Index of the influence array of the specified bone.</p> </dd></param>\t\n            <param name=\"weightRef\"><dd>  <p>Pointer to the blend factor influenced by influenceNum.</p> </dd></param>\t\n            <param name=\"vertexNumRef\"><dd>  <p>Pointer to the vertex influenced by influenceNum.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXSkinInfo::GetBoneVertexInfluence']/*\"/>\t\n            <msdn-id>bb174214</msdn-id>\t\n            <unmanaged>HRESULT ID3DXSkinInfo::GetBoneVertexInfluence([In] unsigned int boneNum,[In] unsigned int influenceNum,[Out] float* pWeight,[Out] unsigned int* pVertexNum)</unmanaged>\t\n            <unmanaged-short>ID3DXSkinInfo::GetBoneVertexInfluence</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.SkinInfo.GetMaxVertexInfluences(System.Int32@)\">\n            <summary>\t\n            <p>Gets the maximum number of influences for any vertex in the mesh.</p>\t\n            </summary>\t\n            <param name=\"maxVertexInfluences\"><dd>  <p>Pointer to the maximum vertex influence.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXSkinInfo::GetMaxVertexInfluences']/*\"/>\t\n            <msdn-id>bb174218</msdn-id>\t\n            <unmanaged>HRESULT ID3DXSkinInfo::GetMaxVertexInfluences([Out] unsigned int* maxVertexInfluences)</unmanaged>\t\n            <unmanaged-short>ID3DXSkinInfo::GetMaxVertexInfluences</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.SkinInfo.GetNumBones\">\n            <summary>\t\n            <p>Gets the number of bones.</p>\t\n            </summary>\t\n            <returns><p>Returns the number of bones.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXSkinInfo::GetNumBones']/*\"/>\t\n            <msdn-id>bb174221</msdn-id>\t\n            <unmanaged>unsigned int ID3DXSkinInfo::GetNumBones()</unmanaged>\t\n            <unmanaged-short>ID3DXSkinInfo::GetNumBones</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.SkinInfo.FindBoneVertexInfluenceIndex(System.Int32,System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Retrieves the index of the bone influence affecting a single vertex.</p>\t\n            </summary>\t\n            <param name=\"boneNum\"><dd>  <p>Index of the bone. Must be between 0 and the number of bones.</p> </dd></param>\t\n            <param name=\"vertexNum\"><dd>  <p>Index of the vertex for which the bone influence is to be found. Must be between 0 and the number of vertices in the mesh.</p> </dd></param>\t\n            <param name=\"influenceIndexRef\"><dd>  <p>Pointer to the index of the bone influence that affects vertexNum.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the specified bone does not influence the given vertex, S_FALSE is returned. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXSkinInfo::FindBoneVertexInfluenceIndex']/*\"/>\t\n            <msdn-id>bb174210</msdn-id>\t\n            <unmanaged>HRESULT ID3DXSkinInfo::FindBoneVertexInfluenceIndex([In] unsigned int boneNum,[In] unsigned int vertexNum,[In] unsigned int* pInfluenceIndex)</unmanaged>\t\n            <unmanaged-short>ID3DXSkinInfo::FindBoneVertexInfluenceIndex</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.SkinInfo.GetMaxFaceInfluences(SharpDX.Direct3D9.IndexBuffer,System.Int32,System.Int32@)\">\n            <summary>\t\n            <p>Gets the maximum face influences in a triangle mesh with the specified index buffer.</p>\t\n            </summary>\t\n            <param name=\"iBRef\"><dd>  <p>Pointer to the index buffer that contains the mesh index data.</p> </dd></param>\t\n            <param name=\"numFaces\"><dd>  <p>Number of faces in the mesh.</p> </dd></param>\t\n            <param name=\"maxFaceInfluences\"><dd>  <p>Pointer to the maximum face influences.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXSkinInfo::GetMaxFaceInfluences']/*\"/>\t\n            <msdn-id>bb174217</msdn-id>\t\n            <unmanaged>HRESULT ID3DXSkinInfo::GetMaxFaceInfluences([In] IDirect3DIndexBuffer9* pIB,[In] unsigned int NumFaces,[Out] unsigned int* maxFaceInfluences)</unmanaged>\t\n            <unmanaged-short>ID3DXSkinInfo::GetMaxFaceInfluences</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.SkinInfo.SetMinBoneInfluence(System.Single)\">\n            <summary>\t\n            <p>Sets the minimum bone influence. Influence values smaller than this are ignored.</p>\t\n            </summary>\t\n            <param name=\"minInfl\"><dd>  <p>Minimum influence value. Influence values smaller than this are ignored.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXSkinInfo::SetMinBoneInfluence']/*\"/>\t\n            <msdn-id>bb174230</msdn-id>\t\n            <unmanaged>HRESULT ID3DXSkinInfo::SetMinBoneInfluence([In] float MinInfl)</unmanaged>\t\n            <unmanaged-short>ID3DXSkinInfo::SetMinBoneInfluence</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.SkinInfo.GetMinBoneInfluence\">\n            <summary>\t\n            <p>Gets the minimum bone influence. Influence values smaller than this are ignored.</p>\t\n            </summary>\t\n            <returns><p>Returns the minimum bone influence value.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXSkinInfo::GetMinBoneInfluence']/*\"/>\t\n            <msdn-id>bb174219</msdn-id>\t\n            <unmanaged>float ID3DXSkinInfo::GetMinBoneInfluence()</unmanaged>\t\n            <unmanaged-short>ID3DXSkinInfo::GetMinBoneInfluence</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.SkinInfo.SetBoneName(System.Int32,System.String)\">\n            <summary>\t\n            <p>Sets the bone name.</p>\t\n            </summary>\t\n            <param name=\"bone\"><dd>  <p>Bone number</p> </dd></param>\t\n            <param name=\"nameRef\"><dd>  <p>Bone name</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>Bone names are returned by <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.LoadMeshFromXof(SharpDX.Direct3D9.XFileData,System.Int32,SharpDX.Direct3D9.Device,SharpDX.Direct3D.Blob@,SharpDX.Direct3D.Blob@,SharpDX.Direct3D.Blob@,System.Int32,SharpDX.Direct3D9.Mesh@)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXSkinInfo::SetBoneName']/*\"/>\t\n            <msdn-id>bb174225</msdn-id>\t\n            <unmanaged>HRESULT ID3DXSkinInfo::SetBoneName([In] unsigned int Bone,[In] const char* pName)</unmanaged>\t\n            <unmanaged-short>ID3DXSkinInfo::SetBoneName</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.SkinInfo.GetBoneName(System.Int32)\">\n            <summary>\t\n            <p>Gets the bone name, from the bone index.</p>\t\n            </summary>\t\n            <param name=\"bone\"><dd>  <p>Bone number.</p> </dd></param>\t\n            <returns><p>Returns the bone name. Do not free this string.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXSkinInfo::GetBoneName']/*\"/>\t\n            <msdn-id>bb174212</msdn-id>\t\n            <unmanaged>const char* ID3DXSkinInfo::GetBoneName([In] unsigned int Bone)</unmanaged>\t\n            <unmanaged-short>ID3DXSkinInfo::GetBoneName</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.SkinInfo.SetBoneOffsetMatrix(System.Int32,SharpDX.Matrix@)\">\n            <summary>\t\n            <p>Sets the bone offset matrix.</p>\t\n            </summary>\t\n            <param name=\"bone\"><dd>  <p>Bone number.</p> </dd></param>\t\n            <param name=\"boneTransformRef\"><dd>  <p>Pointer to the bone offset matrix.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>Bone names are returned by <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.LoadMeshFromXof(SharpDX.Direct3D9.XFileData,System.Int32,SharpDX.Direct3D9.Device,SharpDX.Direct3D.Blob@,SharpDX.Direct3D.Blob@,SharpDX.Direct3D.Blob@,System.Int32,SharpDX.Direct3D9.Mesh@)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXSkinInfo::SetBoneOffsetMatrix']/*\"/>\t\n            <msdn-id>bb174226</msdn-id>\t\n            <unmanaged>HRESULT ID3DXSkinInfo::SetBoneOffsetMatrix([In] unsigned int Bone,[In] const D3DXMATRIX* pBoneTransform)</unmanaged>\t\n            <unmanaged-short>ID3DXSkinInfo::SetBoneOffsetMatrix</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.SkinInfo.GetBoneOffsetMatrix(System.Int32)\">\n            <summary>\t\n            <p>Gets the bone offset matrix.</p>\t\n            </summary>\t\n            <param name=\"bone\"><dd>  <p>Bone number.</p> </dd></param>\t\n            <returns><p>Returns a reference to the bone offset matrix. Do not free this reference.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXSkinInfo::GetBoneOffsetMatrix']/*\"/>\t\n            <msdn-id>bb174213</msdn-id>\t\n            <unmanaged>D3DXMATRIX* ID3DXSkinInfo::GetBoneOffsetMatrix([In] unsigned int Bone)</unmanaged>\t\n            <unmanaged-short>ID3DXSkinInfo::GetBoneOffsetMatrix</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.SkinInfo.Clone(SharpDX.Direct3D9.SkinInfo@)\">\n            <summary>\t\n            <p>Clones a skin info object.</p>\t\n            </summary>\t\n            <param name=\"skinInfoOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D9.SkinInfo\"/></strong> object, which will contain the cloned object if the method is successful.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXSkinInfo::Clone']/*\"/>\t\n            <msdn-id>bb174207</msdn-id>\t\n            <unmanaged>HRESULT ID3DXSkinInfo::Clone([In] ID3DXSkinInfo** ppSkinInfo)</unmanaged>\t\n            <unmanaged-short>ID3DXSkinInfo::Clone</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.SkinInfo.Remap(System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Updates bone influence information to match vertices after they are reordered. This method should be called if the target vertex buffer has been reordered externally.</p>\t\n            </summary>\t\n            <param name=\"numVertices\"><dd>  <p>Number of vertices to remap.</p> </dd></param>\t\n            <param name=\"vertexRemapRef\"><dd>  <p>Array of DWORDS whose length is specified by NumVertices.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>Each element in pVertexRemap specifies the previous vertex index for that position.  For example, if a vertex was in position 3 but has been remapped to position 5, then the fifth element of pVertexRemap should contain 3.  The vertex remap array returned by <strong><see cref=\"M:SharpDX.Direct3D9.Mesh.Optimize(System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D.Blob@,SharpDX.Direct3D9.Mesh@)\"/></strong> can be used.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXSkinInfo::Remap']/*\"/>\t\n            <msdn-id>bb174223</msdn-id>\t\n            <unmanaged>HRESULT ID3DXSkinInfo::Remap([In] unsigned int NumVertices,[In] unsigned int* pVertexRemap)</unmanaged>\t\n            <unmanaged-short>ID3DXSkinInfo::Remap</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.SkinInfo.SetFVF(System.Int32)\">\n            <summary>\t\n            <p>Sets the flexible vertex format (FVF) type.</p>\t\n            </summary>\t\n            <param name=\"fvf\"><dd>  <p>Flexible vertex format. See <see cref=\"T:SharpDX.Direct3D9.VertexFormat\"/>.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXSkinInfo::SetFVF']/*\"/>\t\n            <msdn-id>bb174229</msdn-id>\t\n            <unmanaged>HRESULT ID3DXSkinInfo::SetFVF([In] unsigned int FVF)</unmanaged>\t\n            <unmanaged-short>ID3DXSkinInfo::SetFVF</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.SkinInfo.SetDeclaration(SharpDX.Direct3D9.VertexElement)\">\n            <summary>\t\n            <p>Sets the vertex declaration.</p>\t\n            </summary>\t\n            <param name=\"declarationRef\"><dd>  <p>Pointer to an array of <strong><see cref=\"T:SharpDX.Direct3D9.VertexElement\"/></strong> elements.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXSkinInfo::SetDeclaration']/*\"/>\t\n            <msdn-id>bb174228</msdn-id>\t\n            <unmanaged>HRESULT ID3DXSkinInfo::SetDeclaration([In] const D3DVERTEXELEMENT9* pDeclaration)</unmanaged>\t\n            <unmanaged-short>ID3DXSkinInfo::SetDeclaration</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.SkinInfo.GetFVF\">\n            <summary>\t\n            <p>Gets the fixed function vertex value.</p>\t\n            </summary>\t\n            <returns><p>Returns the flexible vertex format (FVF) codes.</p></returns>\t\n            <remarks>\t\n            <p>This method can return 0 if the vertex format cannot be mapped directly to an FVF code.  This will occur for a mesh created from a vertex declaration that doesn't have the same order and elements supported by the FVF codes.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXSkinInfo::GetFVF']/*\"/>\t\n            <msdn-id>bb174216</msdn-id>\t\n            <unmanaged>unsigned int ID3DXSkinInfo::GetFVF()</unmanaged>\t\n            <unmanaged-short>ID3DXSkinInfo::GetFVF</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.SkinInfo.GetDeclaration(SharpDX.Direct3D9.VertexElement)\">\n            <summary>\t\n            <p>Gets the vertex declaration.</p>\t\n            </summary>\t\n            <param name=\"declaration\"><dd>  <p>Array of <strong><see cref=\"T:SharpDX.Direct3D9.VertexElement\"/></strong> elements describing the vertex format of the mesh vertices. The upper limit of this declarator array is <strong><see cref=\"F:SharpDX.Direct3D9.VertexFormatDeclaratorCount.Max\"/></strong>. The vertex element array ends with the <strong>D3DDECL_END</strong> macro. </p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>The array of elements includes the <strong>D3DDECL_END</strong> macro, which ends the declaration.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXSkinInfo::GetDeclaration']/*\"/>\t\n            <msdn-id>bb174215</msdn-id>\t\n            <unmanaged>HRESULT ID3DXSkinInfo::GetDeclaration([In] D3DVERTEXELEMENT9* Declaration)</unmanaged>\t\n            <unmanaged-short>ID3DXSkinInfo::GetDeclaration</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.SkinInfo.UpdateSkinnedMesh(SharpDX.Matrix@,SharpDX.Matrix@,System.IntPtr,System.IntPtr)\">\n            <summary>\t\n            <p>Applies software skinning to the target vertices based on the current matrices.</p>\t\n            </summary>\t\n            <param name=\"boneTransformsRef\"><dd>  <p>Bone transform matrix.</p> </dd></param>\t\n            <param name=\"boneInvTransposeTransformsRef\"><dd>  <p>Inverse transpose of the bone transform matrix.</p> </dd></param>\t\n            <param name=\"verticesSrcRef\"><dd>  <p>Pointer to the buffer containing the source vertices.</p> </dd></param>\t\n            <param name=\"verticesDstRef\"><dd>  <p>Pointer to the buffer containing the destination vertices.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>When used to skin vertices with two position elements, this method skins the second position element with the inverse of the bone instead of the bone itself.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXSkinInfo::UpdateSkinnedMesh']/*\"/>\t\n            <msdn-id>bb174231</msdn-id>\t\n            <unmanaged>HRESULT ID3DXSkinInfo::UpdateSkinnedMesh([In] const D3DXMATRIX* pBoneTransforms,[In] const D3DXMATRIX* pBoneInvTransposeTransforms,[In] const void* pVerticesSrc,[In] void* pVerticesDst)</unmanaged>\t\n            <unmanaged-short>ID3DXSkinInfo::UpdateSkinnedMesh</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.SkinInfo.ConvertToBlendedMesh(SharpDX.Direct3D9.Mesh,System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D.Blob@,System.Int32,System.Int32,SharpDX.Direct3D.Blob@,SharpDX.Direct3D9.Mesh@)\">\n            <summary>\t\n            <p>Takes a mesh and returns a new mesh with per-vertex blend weights and a bone combination table. The table describes which bones affect which subsets of the mesh.</p>\t\n            </summary>\t\n            <param name=\"meshRef\"><dd>  <p>Input mesh. See <strong><see cref=\"T:SharpDX.Direct3D9.Mesh\"/></strong>.</p> </dd></param>\t\n            <param name=\"options\"><dd>  <p>Currently unused.</p> </dd></param>\t\n            <param name=\"adjacencyInRef\"><dd>  <p>Input mesh adjacency information.</p> </dd></param>\t\n            <param name=\"adjacencyOutRef\"><dd>  <p>Output mesh adjacency information.</p> </dd></param>\t\n            <param name=\"faceRemapRef\"><dd>  <p>An array of DWORDs, one per face, that identifies the original mesh face that corresponds to each face in the blended mesh. If the value supplied for this argument is <strong><c>null</c></strong>, face remap data is not returned.</p> </dd></param>\t\n            <param name=\"vertexRemapOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D.Blob\"/></strong> interface, which contains a DWORD for each vertex that specifies how the new vertices map to the old vertices. This remap is useful if you need to alter external data based on the new vertex mapping. This parameter is optional; <strong><c>null</c></strong> may be used.</p> </dd></param>\t\n            <param name=\"maxFaceInflRef\"><dd>  <p>Pointer to a DWORD that will contain the maximum number of bone influences required per vertex for this skinning method.</p> </dd></param>\t\n            <param name=\"numBoneCombinationsRef\"><dd>  <p>Pointer to the number of bones in the bone combination table.</p> </dd></param>\t\n            <param name=\"boneCombinationTableOut\"><dd>  <p>Pointer to the bone combination table. The data is organized in a <strong><see cref=\"T:SharpDX.Direct3D9.BoneCombination\"/></strong> structure.</p> </dd></param>\t\n            <param name=\"meshOut\"><dd>  <p>Pointer to the new mesh.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>Each element in the remap array specifies the previous index for that position. For example, if a vertex was in position 3 but has been remapped to position 5, then the fifth element of pVertexRemap will contain 3.</p><p>This method does not run on hardware that does not support fixed-function vertex blending.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXSkinInfo::ConvertToBlendedMesh']/*\"/>\t\n            <msdn-id>bb174208</msdn-id>\t\n            <unmanaged>HRESULT ID3DXSkinInfo::ConvertToBlendedMesh([In] ID3DXMesh* pMesh,[In] unsigned int Options,[In] const unsigned int* pAdjacencyIn,[In] unsigned int* pAdjacencyOut,[In] unsigned int* pFaceRemap,[In] ID3DXBuffer** ppVertexRemap,[In] unsigned int* pMaxFaceInfl,[In] unsigned int* pNumBoneCombinations,[In] ID3DXBuffer** ppBoneCombinationTable,[In] ID3DXMesh** ppMesh)</unmanaged>\t\n            <unmanaged-short>ID3DXSkinInfo::ConvertToBlendedMesh</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.SkinInfo.ConvertToIndexedBlendedMesh(SharpDX.Direct3D9.Mesh,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D.Blob@,System.Int32,System.Int32,SharpDX.Direct3D.Blob@,SharpDX.Direct3D9.Mesh@)\">\n            <summary>\t\n            <p>Takes a mesh and returns a new mesh with per-vertex blend weights, indices, and a bone combination table. The table describes which bone palettes affect which subsets of the mesh.</p>\t\n            </summary>\t\n            <param name=\"meshRef\"><dd>  <p>The input mesh. See <strong><see cref=\"T:SharpDX.Direct3D9.Mesh\"/></strong>.</p> </dd></param>\t\n            <param name=\"options\"><dd>  <p>Currently unused.</p> </dd></param>\t\n            <param name=\"paletteSize\"><dd>  <p>Number of bone matrices available for matrix palette skinning.</p> </dd></param>\t\n            <param name=\"adjacencyInRef\"><dd>  <p>Input mesh adjacency information.</p> </dd></param>\t\n            <param name=\"adjacencyOutRef\"><dd>  <p>Output mesh adjacency information.</p> </dd></param>\t\n            <param name=\"faceRemapRef\"><dd>  <p>An array of DWORDs, one per face, that identifies the original mesh face that corresponds to each face in the blended mesh. If the value supplied for this argument is <strong><c>null</c></strong>, face remap data is not returned.</p> </dd></param>\t\n            <param name=\"vertexRemapOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D.Blob\"/></strong> interface, which contains a DWORD for each vertex that specifies how the new vertices map to the old vertices. This remap is useful if you need to alter external data based on the new vertex mapping. This parameter is optional; <strong><c>null</c></strong> may be used.</p> </dd></param>\t\n            <param name=\"maxVertexInflRef\"><dd>  <p>Pointer to a DWORD that will contain the maximum number of bone influences required per vertex for this skinning method.</p> </dd></param>\t\n            <param name=\"numBoneCombinationsRef\"><dd>  <p>Pointer to the number of bones in the bone combination table.</p> </dd></param>\t\n            <param name=\"boneCombinationTableOut\"><dd>  <p>Pointer to the bone combination table. The data is organized in a <strong><see cref=\"T:SharpDX.Direct3D9.BoneCombination\"/></strong> structure.</p> </dd></param>\t\n            <param name=\"meshOut\"><dd>  <p>Pointer to the new mesh.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>Each element in the remap arrays specifies the previous index for that position. For example, if a vertex was in position 3 but has been remapped to position 5, then the fifth element of pVertexRemap will contain 3.</p><p>This method does not run on hardware that does not support fixed-function vertex blending.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXSkinInfo::ConvertToIndexedBlendedMesh']/*\"/>\t\n            <msdn-id>bb174209</msdn-id>\t\n            <unmanaged>HRESULT ID3DXSkinInfo::ConvertToIndexedBlendedMesh([In] ID3DXMesh* pMesh,[In] unsigned int Options,[In] unsigned int paletteSize,[In] const unsigned int* pAdjacencyIn,[In] unsigned int* pAdjacencyOut,[In] unsigned int* pFaceRemap,[In] ID3DXBuffer** ppVertexRemap,[In] unsigned int* pMaxVertexInfl,[In] unsigned int* pNumBoneCombinations,[In] ID3DXBuffer** ppBoneCombinationTable,[In] ID3DXMesh** ppMesh)</unmanaged>\t\n            <unmanaged-short>ID3DXSkinInfo::ConvertToIndexedBlendedMesh</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.SkinInfo.MaxVertexInfluences\">\n            <summary>\t\n            <p>Gets the maximum number of influences for any vertex in the mesh.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXSkinInfo::GetMaxVertexInfluences']/*\"/>\t\n            <msdn-id>bb174218</msdn-id>\t\n            <unmanaged>GetMaxVertexInfluences</unmanaged>\t\n            <unmanaged-short>GetMaxVertexInfluences</unmanaged-short>\t\n            <unmanaged>HRESULT ID3DXSkinInfo::GetMaxVertexInfluences([Out] unsigned int* maxVertexInfluences)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.SkinInfo.NumBones\">\n            <summary>\t\n            <p>Gets the number of bones.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXSkinInfo::GetNumBones']/*\"/>\t\n            <msdn-id>bb174221</msdn-id>\t\n            <unmanaged>GetNumBones</unmanaged>\t\n            <unmanaged-short>GetNumBones</unmanaged-short>\t\n            <unmanaged>unsigned int ID3DXSkinInfo::GetNumBones()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.SkinInfo.MinBoneInfluence\">\n            <summary>\t\n            <p>Gets or sets the minimum bone influence. Influence values smaller than this are ignored.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXSkinInfo::GetMinBoneInfluence']/*\"/>\t\n            <msdn-id>bb174219</msdn-id>\t\n            <unmanaged>GetMinBoneInfluence / SetMinBoneInfluence</unmanaged>\t\n            <unmanaged-short>GetMinBoneInfluence</unmanaged-short>\t\n            <unmanaged>float ID3DXSkinInfo::GetMinBoneInfluence()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.SkinInfo.FVF\">\n            <summary>\t\n            <p>Gets or sets the fixed function vertex value.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This method can return 0 if the vertex format cannot be mapped directly to an FVF code.  This will occur for a mesh created from a vertex declaration that doesn't have the same order and elements supported by the FVF codes.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXSkinInfo::GetFVF']/*\"/>\t\n            <msdn-id>bb174216</msdn-id>\t\n            <unmanaged>GetFVF / SetFVF</unmanaged>\t\n            <unmanaged-short>GetFVF</unmanaged-short>\t\n            <unmanaged>unsigned int ID3DXSkinInfo::GetFVF()</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.Sprite\">\n            <summary>\t\n            <p>The <see cref=\"T:SharpDX.Direct3D9.Sprite\"/> interface provides a set of methods that simplify the process of drawing sprites using Microsoft Direct3D.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The <strong><see cref=\"T:SharpDX.Direct3D9.Sprite\"/></strong> interface is obtained by calling the <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateSprite(SharpDX.Direct3D9.Device,SharpDX.Direct3D9.Sprite)\"/></strong> function.</p><p>The application typically first calls <strong><see cref=\"M:SharpDX.Direct3D9.Sprite.Begin(SharpDX.Direct3D9.SpriteFlags)\"/></strong>, which allows control over the device render state, alpha blending, and sprite transformation and sorting. Then for each sprite to be displayed, call <strong><see cref=\"M:SharpDX.Direct3D9.Sprite.Draw(SharpDX.Direct3D9.Texture,System.IntPtr,System.IntPtr,System.IntPtr,SharpDX.ColorBGRA)\"/></strong>. <strong><see cref=\"M:SharpDX.Direct3D9.Sprite.Draw(SharpDX.Direct3D9.Texture,System.IntPtr,System.IntPtr,System.IntPtr,SharpDX.ColorBGRA)\"/></strong> can be called repeatedly to store any number of sprites. To display the batched sprites to the device, call <strong><see cref=\"M:SharpDX.Direct3D9.Sprite.End\"/></strong> or <strong><see cref=\"M:SharpDX.Direct3D9.Sprite.Flush\"/></strong>.</p><p>The LPD3DXSPRITE type is defined as a reference to the <strong><see cref=\"T:SharpDX.Direct3D9.Sprite\"/></strong> interface.</p><pre><code> typedef interface <see cref=\"T:SharpDX.Direct3D9.Sprite\"/> <see cref=\"T:SharpDX.Direct3D9.Sprite\"/>;\t\n            typedef interface <see cref=\"T:SharpDX.Direct3D9.Sprite\"/> *LPD3DXSPRITE;\t\n            </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXSprite']/*\"/>\t\n            <msdn-id>bb174249</msdn-id>\t\n            <unmanaged>ID3DXSprite</unmanaged>\t\n            <unmanaged-short>ID3DXSprite</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Sprite.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D9.Sprite\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Sprite.op_Explicit(System.IntPtr)~SharpDX.Direct3D9.Sprite\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D9.Sprite\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Sprite.GetDevice(SharpDX.Direct3D9.Device@)\">\n            <summary>\t\n            <p>Retrieves the device associated with the sprite object.</p>\t\n            </summary>\t\n            <param name=\"deviceOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface, representing the Direct3D device object associated with the sprite object.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the following value will be returned.<see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/></p></returns>\t\n            <remarks>\t\n            <p>Calling this method will increase the internal reference count on the <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXSprite::GetDevice']/*\"/>\t\n            <msdn-id>bb174254</msdn-id>\t\n            <unmanaged>HRESULT ID3DXSprite::GetDevice([Out] IDirect3DDevice9** ppDevice)</unmanaged>\t\n            <unmanaged-short>ID3DXSprite::GetDevice</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Sprite.GetTransform(SharpDX.Matrix@)\">\n            <summary>\t\n            <p>Gets the sprite transform.</p>\t\n            </summary>\t\n            <param name=\"transformRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Matrix\"/></strong> that contains a transform of the sprite from the original world space.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the following value will be returned.<see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/></p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXSprite::GetTransform']/*\"/>\t\n            <msdn-id>bb174255</msdn-id>\t\n            <unmanaged>HRESULT ID3DXSprite::GetTransform([Out] D3DXMATRIX* pTransform)</unmanaged>\t\n            <unmanaged-short>ID3DXSprite::GetTransform</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Sprite.SetTransform(SharpDX.Matrix@)\">\n            <summary>\t\n            <p>Sets the sprite transform.</p>\t\n            </summary>\t\n            <param name=\"transformRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Matrix\"/></strong> that contains a transform of the sprite from the original world space. Use this transform to scale, rotate, or transform the sprite.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the following value will be returned.<see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/></p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXSprite::SetTransform']/*\"/>\t\n            <msdn-id>bb174258</msdn-id>\t\n            <unmanaged>HRESULT ID3DXSprite::SetTransform([In] const D3DXMATRIX* pTransform)</unmanaged>\t\n            <unmanaged-short>ID3DXSprite::SetTransform</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Sprite.SetWorldViewRH(SharpDX.Matrix@,SharpDX.Matrix@)\">\n            <summary>\t\n            <p>Sets the right-handed world-view transform for a sprite. A call to this method is required before billboarding or sorting sprites.</p>\t\n            </summary>\t\n            <param name=\"worldRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Matrix\"/></strong> that contains a world transform. If <strong><c>null</c></strong>, the identity matrix is used for the world transform.</p> </dd></param>\t\n            <param name=\"viewRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Matrix\"/></strong> that contains a view transform. If <strong><c>null</c></strong>, the identity matrix is used for the view transform.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the following value will be returned.<see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/></p></returns>\t\n            <remarks>\t\n            <p>A call to this method (or to <strong><see cref=\"M:SharpDX.Direct3D9.Sprite.SetWorldViewLH(SharpDX.Matrix@,SharpDX.Matrix@)\"/></strong>) is required if the sprite will be rendered with the D3DXSprite__BILLBOARD, D3DXSprite__SORT_DEPTH_FRONTTOBACK, or D3DXSprite__SORT_DEPTH_BACKTOFRONT flag value in <strong><see cref=\"M:SharpDX.Direct3D9.Sprite.Begin(SharpDX.Direct3D9.SpriteFlags)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXSprite::SetWorldViewRH']/*\"/>\t\n            <msdn-id>bb174260</msdn-id>\t\n            <unmanaged>HRESULT ID3DXSprite::SetWorldViewRH([In] const D3DXMATRIX* pWorld,[In] const D3DXMATRIX* pView)</unmanaged>\t\n            <unmanaged-short>ID3DXSprite::SetWorldViewRH</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Sprite.SetWorldViewLH(SharpDX.Matrix@,SharpDX.Matrix@)\">\n            <summary>\t\n            <p>Sets the left-handed world-view transform for a sprite. A call to this method is required before billboarding or sorting sprites.</p>\t\n            </summary>\t\n            <param name=\"worldRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Matrix\"/></strong> that contains a world transform. If <strong><c>null</c></strong>, the identity matrix is used for the world transform.</p> </dd></param>\t\n            <param name=\"viewRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Matrix\"/></strong> that contains a view transform. If <strong><c>null</c></strong>, the identity matrix is used for the view transform.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the following value will be returned.<see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/></p></returns>\t\n            <remarks>\t\n            <p>A call to this method (or to <strong><see cref=\"M:SharpDX.Direct3D9.Sprite.SetWorldViewRH(SharpDX.Matrix@,SharpDX.Matrix@)\"/></strong>) is required if the sprite will be rendered with the D3DXSprite__BILLBOARD, D3DXSprite__SORT_DEPTH_FRONTTOBACK, or D3DXSprite__SORT_DEPTH_BACKTOFRONT flag value in <strong><see cref=\"M:SharpDX.Direct3D9.Sprite.Begin(SharpDX.Direct3D9.SpriteFlags)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXSprite::SetWorldViewLH']/*\"/>\t\n            <msdn-id>bb174259</msdn-id>\t\n            <unmanaged>HRESULT ID3DXSprite::SetWorldViewLH([In] const D3DXMATRIX* pWorld,[In] const D3DXMATRIX* pView)</unmanaged>\t\n            <unmanaged-short>ID3DXSprite::SetWorldViewLH</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Sprite.Begin(SharpDX.Direct3D9.SpriteFlags)\">\n            <summary>\t\n            <p>Prepares a device for drawing sprites.</p>\t\n            </summary>\t\n            <param name=\"flags\"><dd>  <p>Combination of zero or more flags that describe sprite rendering options. For this method, the valid flags are:</p> <ul> <li><see cref=\"F:SharpDX.Direct3D9.SpriteFlags.AlphaBlend\"/></li> <li>D3DXSPRITE__BILLBOARD</li> <li><see cref=\"F:SharpDX.Direct3D9.SpriteFlags.DoNotModifyRenderState\"/></li> <li><see cref=\"F:SharpDX.Direct3D9.SpriteFlags.DoNotSaveState\"/></li> <li><see cref=\"F:SharpDX.Direct3D9.SpriteFlags.ObjectSpace\"/></li> <li>D3DXSPRITE__SORT_DEPTH_BACKTOFRONT</li> <li>D3DXSPRITE__SORT_DEPTH_FRONTTOBACK</li> <li>D3DXSPRITE__SORT_TEXTURE</li> </ul> <p> For a description of the flags and for information on how to control device state capture and device view transforms, see <see cref=\"T:SharpDX.Direct3D9.SpriteFlags\"/>.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.OutOfVideoMemory\"/>, D3DXERR_INVALIDDATA, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>This method must be called from inside a <strong><see cref=\"M:SharpDX.Direct3D9.Device.BeginScene\"/></strong> . . . <strong><see cref=\"M:SharpDX.Direct3D9.Device.EndScene\"/></strong> sequence. <strong><see cref=\"M:SharpDX.Direct3D9.Sprite.Begin(SharpDX.Direct3D9.SpriteFlags)\"/></strong> cannot be used as a substitute for either <strong><see cref=\"M:SharpDX.Direct3D9.Device.BeginScene\"/></strong> or <strong><see cref=\"M:SharpDX.Direct3D9.RenderToSurface.BeginScene(SharpDX.Direct3D9.Surface,SharpDX.Viewport)\"/></strong>.</p><p>This method will set the following states on the device.</p><p>Render States:</p><table> <tr><th>Type (<strong><see cref=\"T:SharpDX.Direct3D9.RenderState\"/></strong>)</th><th>Value</th></tr> <tr><td><see cref=\"F:SharpDX.Direct3D9.RenderState.AlphaBlendEnable\"/></td><td>TRUE</td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D9.RenderState.AlphaFunc\"/></td><td><see cref=\"F:SharpDX.Direct3D9.Compare.Greater\"/></td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D9.RenderState.AlphaRef\"/></td><td>0x00</td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D9.RenderState.AlphaTestEnable\"/></td><td>AlphaCmpCaps</td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D9.RenderState.BlendOperation\"/></td><td><see cref=\"F:SharpDX.Direct3D9.BlendOperation.Add\"/></td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D9.RenderState.Clipping\"/></td><td>TRUE</td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D9.RenderState.ClipPlaneEnable\"/></td><td><see cref=\"F:SharpDX.Result.False\"/></td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D9.RenderState.ColorWriteEnable\"/></td><td><see cref=\"F:SharpDX.Direct3D9.ColorWriteEnable.Alpha\"/> | <see cref=\"F:SharpDX.Direct3D9.ColorWriteEnable.Blue\"/> | <see cref=\"F:SharpDX.Direct3D9.ColorWriteEnable.Green\"/> | <see cref=\"F:SharpDX.Direct3D9.ColorWriteEnable.Red\"/></td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D9.RenderState.CullMode\"/></td><td><see cref=\"F:SharpDX.Direct3D9.Cull.None\"/></td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D9.RenderState.DestinationBlend\"/></td><td><see cref=\"F:SharpDX.Direct3D9.Blend.InverseSourceAlpha\"/></td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D9.RenderState.DiffuseMaterialSource\"/></td><td><see cref=\"F:SharpDX.Direct3D9.ColorSource.Color1\"/></td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D9.RenderState.EnableAdaptiveTessellation\"/></td><td><see cref=\"F:SharpDX.Result.False\"/></td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D9.RenderState.FillMode\"/></td><td><see cref=\"F:SharpDX.Direct3D9.FillMode.Solid\"/></td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D9.RenderState.FogEnable\"/></td><td><see cref=\"F:SharpDX.Result.False\"/></td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D9.RenderState.IndexedVertexBlendEnable\"/></td><td><see cref=\"F:SharpDX.Result.False\"/></td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D9.RenderState.Lighting\"/></td><td><see cref=\"F:SharpDX.Result.False\"/></td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D9.RenderState.RangeFogEnable\"/></td><td><see cref=\"F:SharpDX.Result.False\"/></td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D9.RenderState.SeparateAlphaBlendEnable\"/></td><td><see cref=\"F:SharpDX.Result.False\"/></td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D9.RenderState.ShadeMode\"/></td><td><see cref=\"F:SharpDX.Direct3D9.ShadeMode.Gouraud\"/></td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D9.RenderState.SpecularEnable\"/></td><td><see cref=\"F:SharpDX.Result.False\"/></td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D9.RenderState.SourceBlend\"/></td><td><see cref=\"F:SharpDX.Direct3D9.Blend.SourceAlpha\"/></td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D9.RenderState.SrgbWriteEnable\"/></td><td><see cref=\"F:SharpDX.Result.False\"/></td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D9.RenderState.StencilEnable\"/></td><td><see cref=\"F:SharpDX.Result.False\"/></td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D9.RenderState.VertexBlend\"/></td><td><see cref=\"F:SharpDX.Result.False\"/></td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D9.RenderState.Wrap0\"/></td><td>0</td></tr> </table><p>?</p><p>Texture Stage States:</p><table> <tr><th>Stage Identifier</th><th>Type (<strong><see cref=\"T:SharpDX.Direct3D9.TextureStage\"/></strong>)</th><th>Value</th></tr> <tr><td>0</td><td><see cref=\"F:SharpDX.Direct3D9.TextureStage.AlphaArg1\"/></td><td><see cref=\"F:SharpDX.Direct3D9.TextureArgument.Texture\"/></td></tr> <tr><td>0</td><td><see cref=\"F:SharpDX.Direct3D9.TextureStage.AlphaArg2\"/></td><td><see cref=\"F:SharpDX.Direct3D9.TextureArgument.Diffuse\"/></td></tr> <tr><td>0</td><td><see cref=\"F:SharpDX.Direct3D9.TextureStage.AlphaOperation\"/></td><td><see cref=\"F:SharpDX.Direct3D9.TextureOperation.Modulate\"/></td></tr> <tr><td>0</td><td><see cref=\"F:SharpDX.Direct3D9.TextureStage.ColorArg1\"/></td><td><see cref=\"F:SharpDX.Direct3D9.TextureArgument.Texture\"/></td></tr> <tr><td>0</td><td><see cref=\"F:SharpDX.Direct3D9.TextureStage.ColorArg2\"/></td><td><see cref=\"F:SharpDX.Direct3D9.TextureArgument.Diffuse\"/></td></tr> <tr><td>0</td><td><see cref=\"F:SharpDX.Direct3D9.TextureStage.ColorOperation\"/></td><td><see cref=\"F:SharpDX.Direct3D9.TextureOperation.Modulate\"/></td></tr> <tr><td>0</td><td><see cref=\"F:SharpDX.Direct3D9.TextureStage.TexCoordIndex\"/></td><td>0</td></tr> <tr><td>0</td><td><see cref=\"F:SharpDX.Direct3D9.TextureStage.TextureTransformFlags\"/></td><td><see cref=\"F:SharpDX.Direct3D9.TextureTransform.Disable\"/></td></tr> <tr><td>1</td><td><see cref=\"F:SharpDX.Direct3D9.TextureStage.AlphaOperation\"/></td><td><see cref=\"F:SharpDX.Direct3D9.TextureOperation.Disable\"/></td></tr> <tr><td>1</td><td><see cref=\"F:SharpDX.Direct3D9.TextureStage.ColorOperation\"/></td><td><see cref=\"F:SharpDX.Direct3D9.TextureOperation.Disable\"/></td></tr> </table><p>?</p><p>Sampler States:</p><table> <tr><th>Sampler Stage Index</th><th>Type (<strong><see cref=\"T:SharpDX.Direct3D9.SamplerState\"/></strong>)</th><th>Value</th></tr> <tr><td>0</td><td><see cref=\"F:SharpDX.Direct3D9.SamplerState.AddressU\"/></td><td><see cref=\"F:SharpDX.Direct3D9.TextureAddress.Clamp\"/></td></tr> <tr><td>0</td><td><see cref=\"F:SharpDX.Direct3D9.SamplerState.AddressV\"/></td><td><see cref=\"F:SharpDX.Direct3D9.TextureAddress.Clamp\"/></td></tr> <tr><td>0</td><td><see cref=\"F:SharpDX.Direct3D9.SamplerState.MagFilter\"/></td><td><see cref=\"F:SharpDX.Direct3D9.TextureFilter.Anisotropic\"/> if TextureFilterCaps includes <see cref=\"F:SharpDX.Direct3D9.FilterCaps.MagAnisotropic\"/>; otherwise <see cref=\"F:SharpDX.Direct3D9.TextureFilter.Linear\"/></td></tr> <tr><td>0</td><td><see cref=\"F:SharpDX.Direct3D9.SamplerState.MaxMipLevel\"/></td><td>0</td></tr> <tr><td>0</td><td><see cref=\"F:SharpDX.Direct3D9.SamplerState.MaxAnisotropy\"/></td><td>MaxAnisotropy</td></tr> <tr><td>0</td><td><see cref=\"F:SharpDX.Direct3D9.SamplerState.MinFilter\"/></td><td><see cref=\"F:SharpDX.Direct3D9.TextureFilter.Anisotropic\"/> if TextureFilterCaps includes <see cref=\"F:SharpDX.Direct3D9.FilterCaps.MinAnisotropic\"/>; otherwise <see cref=\"F:SharpDX.Direct3D9.TextureFilter.Linear\"/></td></tr> <tr><td>0</td><td><see cref=\"F:SharpDX.Direct3D9.SamplerState.MipFilter\"/></td><td><see cref=\"F:SharpDX.Direct3D9.TextureFilter.Linear\"/> if TextureFilterCaps includes <see cref=\"F:SharpDX.Direct3D9.FilterCaps.MipLinear\"/>; otherwise <see cref=\"F:SharpDX.Direct3D9.TextureFilter.Point\"/></td></tr> <tr><td>0</td><td><see cref=\"F:SharpDX.Direct3D9.SamplerState.MipMapLodBias\"/></td><td>0</td></tr> <tr><td>0</td><td><see cref=\"F:SharpDX.Direct3D9.SamplerState.SrgbTexture\"/></td><td>0</td></tr> </table><p>?</p><p><strong>Note</strong>??This method disables N-patches.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXSprite::Begin']/*\"/>\t\n            <msdn-id>bb174250</msdn-id>\t\n            <unmanaged>HRESULT ID3DXSprite::Begin([In] D3DXSPRITE Flags)</unmanaged>\t\n            <unmanaged-short>ID3DXSprite::Begin</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Sprite.Draw(SharpDX.Direct3D9.Texture,System.IntPtr,System.IntPtr,System.IntPtr,SharpDX.ColorBGRA)\">\n            <summary>\t\n            <p>Adds a sprite to the list of batched sprites.</p>\t\n            </summary>\t\n            <param name=\"textureRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Texture\"/></strong> interface that represents the sprite texture.</p> </dd></param>\t\n            <param name=\"srcRectRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Rectangle\"/></strong> structure that indicates the portion of the source texture to use for the sprite. If this parameter is <strong><c>null</c></strong>, then the entire source image is used for the sprite.</p> </dd></param>\t\n            <param name=\"centerRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Vector3\"/></strong> vector that identifies the center of the sprite. If this argument is <strong><c>null</c></strong>, the point (0,0,0) is used, which is the upper-left corner.</p> </dd></param>\t\n            <param name=\"positionRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Vector3\"/></strong> vector that identifies the position of the sprite. If this argument is <strong><c>null</c></strong>, the point (0,0,0) is used, which is the upper-left corner.</p> </dd></param>\t\n            <param name=\"color\"><dd>  <p> <strong><see cref=\"T:SharpDX.ColorBGRA\"/></strong> type. The color and alpha channels are modulated by this value. A value of 0xFFFFFFFF maintains the original source color and alpha data. Use the <strong>D3DCOLOR_RGBA</strong> macro to help generate this color.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA.</p></returns>\t\n            <remarks>\t\n            <p>To scale, rotate, or translate a sprite, call <strong><see cref=\"M:SharpDX.Direct3D9.Sprite.SetTransform(SharpDX.Matrix@)\"/></strong> with a matrix that contains the scale, rotate, and translate (SRT) values, before calling <see cref=\"M:SharpDX.Direct3D9.Sprite.Draw(SharpDX.Direct3D9.Texture,System.IntPtr,System.IntPtr,System.IntPtr,SharpDX.ColorBGRA)\"/>. For information about setting SRT values in a matrix, see Matrix Transforms.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXSprite::Draw']/*\"/>\t\n            <msdn-id>bb174251</msdn-id>\t\n            <unmanaged>HRESULT ID3DXSprite::Draw([In] IDirect3DTexture9* pTexture,[In] const void* pSrcRect,[In] const void* pCenter,[In] const void* pPosition,[In] D3DCOLOR Color)</unmanaged>\t\n            <unmanaged-short>ID3DXSprite::Draw</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Sprite.Flush\">\n            <summary>\t\n            <p>Forces all batched sprites to be submitted to the device. Device states remain as they were after the last call to <strong><see cref=\"M:SharpDX.Direct3D9.Sprite.Begin(SharpDX.Direct3D9.SpriteFlags)\"/></strong>. The list of batched sprites is then cleared.</p>\t\n            </summary>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the following value will be returned.<see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/></p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXSprite::Flush']/*\"/>\t\n            <msdn-id>bb174253</msdn-id>\t\n            <unmanaged>HRESULT ID3DXSprite::Flush()</unmanaged>\t\n            <unmanaged-short>ID3DXSprite::Flush</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Sprite.End\">\n            <summary>\t\n            <p>Calls <strong><see cref=\"M:SharpDX.Direct3D9.Sprite.Flush\"/></strong> and restores the device state to how it was before <strong><see cref=\"M:SharpDX.Direct3D9.Sprite.Begin(SharpDX.Direct3D9.SpriteFlags)\"/></strong> was called.</p>\t\n            </summary>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the following value will be returned.<see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/></p></returns>\t\n            <remarks>\t\n            <p><strong><see cref=\"M:SharpDX.Direct3D9.Sprite.End\"/></strong> cannot be used as a substitute for either <strong><see cref=\"M:SharpDX.Direct3D9.Device.EndScene\"/></strong> or <strong><see cref=\"M:SharpDX.Direct3D9.RenderToSurface.EndScene(SharpDX.Direct3D9.Filter)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXSprite::End']/*\"/>\t\n            <msdn-id>bb174252</msdn-id>\t\n            <unmanaged>HRESULT ID3DXSprite::End()</unmanaged>\t\n            <unmanaged-short>ID3DXSprite::End</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Sprite.OnLostDevice\">\n            <summary>\t\n            <p>Use this method to release all references to video memory resources and delete all stateblocks. This method should be called whenever a device is lost or before resetting a device.</p>\t\n            </summary>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>This method should be called whenever the device is lost or before the user calls <strong><see cref=\"M:SharpDX.Direct3D9.Device.Reset(SharpDX.Direct3D9.PresentParameters[])\"/></strong>. Even if the device was not actually lost, <strong><see cref=\"M:SharpDX.Direct3D9.Sprite.OnLostDevice\"/></strong> is responsible for freeing stateblocks and other resources that may need to be released before resetting the device. As a result, the font object cannot be used again before calling <strong><see cref=\"M:SharpDX.Direct3D9.Device.Reset(SharpDX.Direct3D9.PresentParameters[])\"/></strong> and then <strong><see cref=\"M:SharpDX.Direct3D9.Sprite.OnResetDevice\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXSprite::OnLostDevice']/*\"/>\t\n            <msdn-id>bb174256</msdn-id>\t\n            <unmanaged>HRESULT ID3DXSprite::OnLostDevice()</unmanaged>\t\n            <unmanaged-short>ID3DXSprite::OnLostDevice</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Sprite.OnResetDevice\">\n            <summary>\t\n            <p>Use this method to re-acquire resources and save initial state.</p>\t\n            </summary>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p><strong><see cref=\"M:SharpDX.Direct3D9.Sprite.OnResetDevice\"/></strong> should be called each time the device is reset (using <strong><see cref=\"M:SharpDX.Direct3D9.Device.Reset(SharpDX.Direct3D9.PresentParameters[])\"/></strong>), before any other methods are called. This is a good place to re-acquire video-memory resources and capture state blocks.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXSprite::OnResetDevice']/*\"/>\t\n            <msdn-id>bb174257</msdn-id>\t\n            <unmanaged>HRESULT ID3DXSprite::OnResetDevice()</unmanaged>\t\n            <unmanaged-short>ID3DXSprite::OnResetDevice</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Sprite.#ctor(SharpDX.Direct3D9.Device)\">\n            <summary>\t\n            Creates a sprite object which is associated with a particular device. Sprite objects are used to draw 2D images to the screen.\t\n            </summary>\t\n            <param name=\"device\">A reference to the device (see <see cref=\"T:SharpDX.Direct3D9.Device\"/>) that will draw the sprite. </param>\n            <remarks>\t\n            This interface can be used to draw two dimensional images in screen space of the associated device.\t\n            </remarks>\t\n            <unmanaged>HRESULT D3DXCreateSprite([In] IDirect3DDevice9* pDevice,[Out, Fast] ID3DXSprite** ppSprite)</unmanaged>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Sprite.Draw(SharpDX.Direct3D9.Texture,SharpDX.ColorBGRA)\">\n            <summary>\t\n            <p>Adds a sprite to the list of batched sprites.</p>\t\n            </summary>\t\n            <param name=\"textureRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Texture\"/></strong> interface that represents the sprite texture.</p> </dd></param>\t\n            <param name=\"color\"><dd>  <p> <strong><see cref=\"T:SharpDX.Color4\"/></strong> type. The color and alpha channels are modulated by this value. A value of 0xFFFFFFFF maintains the original source color and alpha data. Use the <strong>D3DCOLOR_RGBA</strong> macro to help generate this color.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA.</p></returns>\t\n            <remarks>\t\n            <p>To scale, rotate, or translate a sprite, call <strong><see cref=\"M:SharpDX.Direct3D9.Sprite.SetTransform(SharpDX.Matrix@)\"/></strong> with a matrix that contains the scale, rotate, and translate (SRT) values, before calling <see cref=\"M:SharpDX.Direct3D9.Sprite.Draw(SharpDX.Direct3D9.Texture,System.IntPtr,System.IntPtr,System.IntPtr,SharpDX.ColorBGRA)\"/>. For information about setting SRT values in a matrix, see Matrix Transforms.</p>\t\n            </remarks>\t\n            <msdn-id>bb174251</msdn-id>\t\n            <unmanaged>HRESULT ID3DXSprite::Draw([In] IDirect3DTexture9* pTexture,[In] const RECT* pSrcRect,[In] const D3DXVECTOR3* pCenter,[In] const D3DXVECTOR3* pPosition,[In] D3DCOLOR Color)</unmanaged>\t\n            <unmanaged-short>ID3DXSprite::Draw</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Sprite.Draw(SharpDX.Direct3D9.Texture,SharpDX.ColorBGRA,System.Nullable{SharpDX.Rectangle},System.Nullable{SharpDX.Vector3},System.Nullable{SharpDX.Vector3})\">\n            <summary>\t\n            <p>Adds a sprite to the list of batched sprites.</p>\t\n            </summary>\t\n            <param name=\"textureRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Texture\"/></strong> interface that represents the sprite texture.</p> </dd></param>\t\n            <param name=\"srcRectRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Rectangle\"/></strong> structure that indicates the portion of the source texture to use for the sprite. If this parameter is <strong><c>null</c></strong>, then the entire source image is used for the sprite.</p> </dd></param>\t\n            <param name=\"centerRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Vector3\"/></strong> vector that identifies the center of the sprite. If this argument is <strong><c>null</c></strong>, the point (0,0,0) is used, which is the upper-left corner.</p> </dd></param>\t\n            <param name=\"positionRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Vector3\"/></strong> vector that identifies the position of the sprite. If this argument is <strong><c>null</c></strong>, the point (0,0,0) is used, which is the upper-left corner.</p> </dd></param>\t\n            <param name=\"color\"><dd>  <p> <strong><see cref=\"T:SharpDX.Color4\"/></strong> type. The color and alpha channels are modulated by this value. A value of 0xFFFFFFFF maintains the original source color and alpha data. Use the <strong>D3DCOLOR_RGBA</strong> macro to help generate this color.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA.</p></returns>\t\n            <remarks>\t\n            <p>To scale, rotate, or translate a sprite, call <strong><see cref=\"M:SharpDX.Direct3D9.Sprite.SetTransform(SharpDX.Matrix@)\"/></strong> with a matrix that contains the scale, rotate, and translate (SRT) values, before calling <see cref=\"M:SharpDX.Direct3D9.Sprite.Draw(SharpDX.Direct3D9.Texture,System.IntPtr,System.IntPtr,System.IntPtr,SharpDX.ColorBGRA)\"/>. For information about setting SRT values in a matrix, see Matrix Transforms.</p>\t\n            </remarks>\t\n            <msdn-id>bb174251</msdn-id>\t\n            <unmanaged>HRESULT ID3DXSprite::Draw([In] IDirect3DTexture9* pTexture,[In] const RECT* pSrcRect,[In] const D3DXVECTOR3* pCenter,[In] const D3DXVECTOR3* pPosition,[In] D3DCOLOR Color)</unmanaged>\t\n            <unmanaged-short>ID3DXSprite::Draw</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.Sprite.Device\">\n            <summary>\t\n            <p>Retrieves the device associated with the sprite object.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Calling this method will increase the internal reference count on the <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXSprite::GetDevice']/*\"/>\t\n            <msdn-id>bb174254</msdn-id>\t\n            <unmanaged>GetDevice</unmanaged>\t\n            <unmanaged-short>GetDevice</unmanaged-short>\t\n            <unmanaged>HRESULT ID3DXSprite::GetDevice([Out] IDirect3DDevice9** ppDevice)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.Sprite.Transform\">\n            <summary>\t\n            <p>Gets or sets the sprite transform.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXSprite::GetTransform']/*\"/>\t\n            <msdn-id>bb174255</msdn-id>\t\n            <unmanaged>GetTransform / SetTransform</unmanaged>\t\n            <unmanaged-short>GetTransform</unmanaged-short>\t\n            <unmanaged>HRESULT ID3DXSprite::GetTransform([Out] D3DXMATRIX* pTransform)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.StateBlock\">\n            <summary>\t\n            <p>Applications use the methods of the <see cref=\"T:SharpDX.Direct3D9.StateBlock\"/> interface to encapsulate render states.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This interface can be used to save and restore pipeline state. It can also be used to capture the current state.</p><p>The LPDIRECT3DSTATEBLOCK9 and PDIRECT3DSTATEBLOCK9 types are defined as references to the <strong><see cref=\"T:SharpDX.Direct3D9.StateBlock\"/></strong> interface. </p><pre><code>typedef struct <see cref=\"T:SharpDX.Direct3D9.StateBlock\"/> *LPDIRECT3DSTATEBLOCK9, *PDIRECT3DSTATEBLOCK9;</code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DStateBlock9']/*\"/>\t\n            <msdn-id>bb205887</msdn-id>\t\n            <unmanaged>IDirect3DStateBlock9</unmanaged>\t\n            <unmanaged-short>IDirect3DStateBlock9</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.StateBlock.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D9.StateBlock\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.StateBlock.op_Explicit(System.IntPtr)~SharpDX.Direct3D9.StateBlock\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D9.StateBlock\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.StateBlock.GetDevice(SharpDX.Direct3D9.Device@)\">\n            <summary>\t\n            <p>Gets the device.</p>\t\n            </summary>\t\n            <param name=\"deviceOut\"><dd>  <p>Pointer to the <see cref=\"T:SharpDX.Direct3D9.Device\"/> interface that is returned.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DStateBlock9::GetDevice']/*\"/>\t\n            <msdn-id>bb205891</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DStateBlock9::GetDevice([Out] IDirect3DDevice9** ppDevice)</unmanaged>\t\n            <unmanaged-short>IDirect3DStateBlock9::GetDevice</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.StateBlock.Capture\">\n            <summary>\t\n            <p>Capture the current value of states that are included in a stateblock.</p>\t\n            </summary>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails because capture cannot be done while in record mode, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>The Capture method captures current values for states within an existing state block. It does not capture the entire state of the device. For example:</p><pre><code> <see cref=\"T:SharpDX.Direct3D9.StateBlock\"/>* pStateBlock = <c>null</c>; pd3dDevice-&gt;BeginStateBlock();\t\n            // Add the ZENABLE state to the stateblock \t\n            pd3dDevice-&gt;SetRenderState ( <see cref=\"F:SharpDX.Direct3D9.RenderState.ZEnable\"/>, <see cref=\"F:SharpDX.Direct3D9.ZBufferType.UseZBuffer\"/> );\t\n            pd3dDevice-&gt;EndStateBlock ( &amp;pStateBlock ); // Change the current value that is stored in the state block\t\n            pd3dDevice-&gt;SetRenderState ( <see cref=\"F:SharpDX.Direct3D9.RenderState.ZEnable\"/>, <see cref=\"F:SharpDX.Direct3D9.ZBufferType.DontUseZBuffer\"/> );\t\n            pStateBlock-&gt;Capture();\t\t\t pStateBlock-&gt;Release();\t\n            </code></pre><p>Creating an empty stateblock and calling the Capture method does nothing if no states have been set.</p><p>The Capture method  will not capture information for lights that are explicitly or implicitly created after the stateblock is created.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DStateBlock9::Capture']/*\"/>\t\n            <msdn-id>bb205890</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DStateBlock9::Capture()</unmanaged>\t\n            <unmanaged-short>IDirect3DStateBlock9::Capture</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.StateBlock.Apply\">\n            <summary>\t\n            <p>Apply the state block to the current device state.</p>\t\n            </summary>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails while in record mode, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DStateBlock9::Apply']/*\"/>\t\n            <msdn-id>bb205889</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DStateBlock9::Apply()</unmanaged>\t\n            <unmanaged-short>IDirect3DStateBlock9::Apply</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.StateBlock.#ctor(SharpDX.Direct3D9.Device,SharpDX.Direct3D9.StateBlockType)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D9.StateBlock\"/> class.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"type\">The type.</param>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.StateBlock.Device\">\n            <summary>\t\n            <p>Gets the device.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DStateBlock9::GetDevice']/*\"/>\t\n            <msdn-id>bb205891</msdn-id>\t\n            <unmanaged>GetDevice</unmanaged>\t\n            <unmanaged-short>GetDevice</unmanaged-short>\t\n            <unmanaged>HRESULT IDirect3DStateBlock9::GetDevice([Out] IDirect3DDevice9** ppDevice)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.Surface\">\n            <summary>\t\n            <p>Applications use the methods of the <see cref=\"T:SharpDX.Direct3D9.Surface\"/> interface to query and prepare surfaces.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The LPDIRECT3DSURFACE9 and PDIRECT3DSURFACE9 types are defined as references to the <strong><see cref=\"T:SharpDX.Direct3D9.Surface\"/></strong> interface. </p><pre><code> typedef struct <see cref=\"T:SharpDX.Direct3D9.Surface\"/> *LPDIRECT3DSURFACE9, *PDIRECT3DSURFACE9;\t\n            </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DSurface9']/*\"/>\t\n            <msdn-id>bb205892</msdn-id>\t\n            <unmanaged>IDirect3DSurface9</unmanaged>\t\n            <unmanaged-short>IDirect3DSurface9</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Surface.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D9.Surface\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Surface.op_Explicit(System.IntPtr)~SharpDX.Direct3D9.Surface\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D9.Surface\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Surface.GetContainer(System.Guid,System.IntPtr@)\">\n            <summary>\t\n            <p>Provides access to the parent cube texture or texture (mipmap) object, if this surface is a child level of a cube texture or a mipmap. This method can also provide access to the parent swap chain if the surface is a back-buffer child.</p>\t\n            </summary>\t\n            <param name=\"riid\"><dd>  <p>Reference identifier of the container being requested. </p> </dd></param>\t\n            <param name=\"containerOut\"><dd>  <p>Address of a reference to fill with the container reference if the query succeeds. See Remarks. </p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>. </p></returns>\t\n            <remarks>\t\n            <p>If the surface is created using <strong>CreateRenderTarget</strong> or <strong>CreateOffscreenPlainSurface</strong> or <strong>CreateDepthStencilSurface</strong>, the surface is considered stand alone. In this case, <strong>GetContainer</strong> will return the Direct3D device used to create the surface.</p><p>If the call succeeds, the reference count of the container is increased by one.</p><p>Here's an example getting the parent texture of a mip surface.</p><pre><code> // Assumes pSurface is a valid <see cref=\"T:SharpDX.Direct3D9.Surface\"/> reference\t\n            void *pContainer = <c>null</c>;\t\n            <see cref=\"T:SharpDX.Direct3D9.Texture\"/> *pTexture = <c>null</c>;\t\n            <see cref=\"T:SharpDX.Result\"/> hr = pSurface-&gt;GetContainer(IID_IDirect3DTexture9, &amp;pContainer);\t\n            if (SUCCEEDED(hr) &amp;&amp; pContainer)\t\n            { pTexture = (<see cref=\"T:SharpDX.Direct3D9.Texture\"/> *)pContainer;\t\n            }\t\n            </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DSurface9::GetContainer']/*\"/>\t\n            <msdn-id>bb205893</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DSurface9::GetContainer([In] const GUID&amp; riid,[Out] void** ppContainer)</unmanaged>\t\n            <unmanaged-short>IDirect3DSurface9::GetContainer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Surface.GetDescription(SharpDX.Direct3D9.SurfaceDescription@)\">\n            <summary>\t\n            <p>Retrieves a description of the surface.</p>\t\n            </summary>\t\n            <param name=\"descRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.SurfaceDescription\"/></strong> structure, describing the surface. </p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>.</p><p><see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/> is returned if the argument is invalid.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DSurface9::GetDesc']/*\"/>\t\n            <msdn-id>bb205895</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DSurface9::GetDesc([Out] D3DSURFACE_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>IDirect3DSurface9::GetDesc</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Surface.LockRectangle(SharpDX.Direct3D9.LockedRectangle@,System.IntPtr,SharpDX.Direct3D9.LockFlags)\">\n            <summary>\t\n            <p>Locks a rectangle on a surface.</p>\t\n            </summary>\t\n            <param name=\"lockedRectRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.LockedRectangle\"/></strong> structure that describes the locked region. </p> </dd></param>\t\n            <param name=\"rectRef\"><dd>  <p>Pointer to a rectangle to lock. Specified by a reference to a <strong><see cref=\"T:SharpDX.Rectangle\"/></strong> structure. Specifying <strong><c>null</c></strong> for this parameter expands the dirty region to cover the entire surface. </p> </dd></param>\t\n            <param name=\"flags\"><dd>  <p>Combination of zero or more locking flags that describe the type of lock to perform. For this method, the valid flags are:  </p> <ul> <li><see cref=\"F:SharpDX.Direct3D9.LockFlags.Discard\"/></li> <li><see cref=\"F:SharpDX.Direct3D9.LockFlags.DoNotWait\"/></li> <li><see cref=\"F:SharpDX.Direct3D9.LockFlags.NoDirtyUpdate\"/></li> <li><see cref=\"F:SharpDX.Direct3D9.LockFlags.NoSystemLock\"/></li> <li><see cref=\"F:SharpDX.Direct3D9.LockFlags.ReadOnly\"/></li> </ul> <p> You may not specify a subrect when using <see cref=\"F:SharpDX.Direct3D9.LockFlags.Discard\"/>. For a description of the flags, see <see cref=\"T:SharpDX.Direct3D9.LockFlags\"/>. </p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>.</p><p>If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/> or <see cref=\"F:SharpDX.Direct3D9.ResultCode.WasStillDrawing\"/>.</p></returns>\t\n            <remarks>\t\n            <p>If the <see cref=\"F:SharpDX.Direct3D9.LockFlags.DoNotWait\"/> flag is specified and the driver cannot lock the surface immediately, <strong><see cref=\"M:SharpDX.Direct3D9.Surface.LockRectangle(SharpDX.Direct3D9.LockedRectangle@,System.IntPtr,SharpDX.Direct3D9.LockFlags)\"/></strong> will return <see cref=\"F:SharpDX.Direct3D9.ResultCode.WasStillDrawing\"/> so that an application can use the CPU cycles while waiting for the driver to lock the surface.</p><p>The only lockable format for a depth-stencil surface is <see cref=\"F:SharpDX.Direct3D9.Format.D16Lockable\"/>. See <see cref=\"T:SharpDX.Direct3D9.Format\"/>.</p><p>For performance reasons, dirty regions are recorded only for level zero of a texture. Dirty regions are automatically recorded when <strong><see cref=\"M:SharpDX.Direct3D9.Surface.LockRectangle(SharpDX.Direct3D9.LockedRectangle@,System.IntPtr,SharpDX.Direct3D9.LockFlags)\"/></strong> is called without <see cref=\"F:SharpDX.Direct3D9.LockFlags.NoDirtyUpdate\"/> or <see cref=\"F:SharpDX.Direct3D9.LockFlags.ReadOnly\"/>. See <strong><see cref=\"M:SharpDX.Direct3D9.Device.UpdateTexture(SharpDX.Direct3D9.BaseTexture,SharpDX.Direct3D9.BaseTexture)\"/></strong> for more information.</p><p>A multisample back buffer cannot be locked.</p><p>This method cannot retrieve data from a surface that is is contained by a texture resource created with <strong><see cref=\"F:SharpDX.Direct3D9.Usage.RenderTarget\"/></strong> because such a texture must be assigned to <see cref=\"F:SharpDX.Direct3D9.Pool.Default\"/> memory and is therefore not lockable. In this case, use instead <strong><see cref=\"M:SharpDX.Direct3D9.Device.GetRenderTargetData(SharpDX.Direct3D9.Surface,SharpDX.Direct3D9.Surface)\"/></strong> to copy texture data from device memory to system memory.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DSurface9::LockRect']/*\"/>\t\n            <msdn-id>bb205896</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DSurface9::LockRect([Out] D3DLOCKED_RECT* pLockedRect,[In] const void* pRect,[In] D3DLOCK Flags)</unmanaged>\t\n            <unmanaged-short>IDirect3DSurface9::LockRect</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Surface.UnlockRectangle\">\n            <summary>\t\n            <p>Unlocks a rectangle on a surface.</p>\t\n            </summary>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>. </p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DSurface9::UnlockRect']/*\"/>\t\n            <msdn-id>bb205898</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DSurface9::UnlockRect()</unmanaged>\t\n            <unmanaged-short>IDirect3DSurface9::UnlockRect</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Surface.GetDC\">\n            <summary>\t\n            <p>Retrieves a device context.</p>\t\n            </summary>\t\n            <returns><dd>  <p>Pointer to the device context for the surface.</p> </dd></returns>\t\n            <remarks>\t\n            <p>The following restrictions apply.</p><ul> <li><strong><see cref=\"M:SharpDX.Direct3D9.Surface.GetDC\"/></strong> is valid on the following formats only: <see cref=\"F:SharpDX.Direct3D9.Format.R5G6B5\"/>, <see cref=\"F:SharpDX.Direct3D9.Format.X1R5G5B5\"/>, <see cref=\"F:SharpDX.Direct3D9.Format.R8G8B8\"/>, and <see cref=\"F:SharpDX.Direct3D9.Format.X8R8G8B8\"/>. Formats that contain Alpha are not supported because the GDI implementations don't have a well-defined behavior on the alpha channel. For more information about formats, see <see cref=\"T:SharpDX.Direct3D9.Format\"/>.</li> <li>Only one device context per surface can be returned at a time.</li> <li><strong><see cref=\"M:SharpDX.Direct3D9.Surface.GetDC\"/></strong> will fail if the surface is already locked. If the surface is a member of a mipmap or cubemap, <strong><see cref=\"M:SharpDX.Direct3D9.Surface.GetDC\"/></strong> fails if any other mipmap or cubemap member is locked.</li> <li><strong><see cref=\"M:SharpDX.Direct3D9.Surface.GetDC\"/></strong> fails on render targets unless they were created lockable (or, in the case of back buffers, with the <see cref=\"F:SharpDX.Direct3D9.PresentFlags.LockableBackBuffer\"/> flag).</li> <li>For surfaces not created with <strong><see cref=\"M:SharpDX.Direct3D9.Device.CreateOffscreenPlainSurface(System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,System.IntPtr)\"/></strong>, <strong><see cref=\"M:SharpDX.Direct3D9.Surface.GetDC\"/></strong> will fail on default pool (<see cref=\"F:SharpDX.Direct3D9.Pool.Default\"/>) surfaces unless they are dynamic (<see cref=\"F:SharpDX.Direct3D9.Usage.Dynamic\"/>) or are lockable render targets.</li> <li><strong><see cref=\"M:SharpDX.Direct3D9.Surface.GetDC\"/></strong> will fail on <see cref=\"F:SharpDX.Direct3D9.Pool.Scratch\"/> surfaces.</li> </ul><p>When a device context is outstanding on a surface, the application may not call these methods:</p><table> <tr><td><see cref=\"T:SharpDX.Direct3D9.CubeTexture\"/></td><td> <strong><see cref=\"M:SharpDX.Direct3D9.CubeTexture.LockRectangle(SharpDX.Direct3D9.CubeMapFace,System.Int32,SharpDX.Direct3D9.LockFlags)\"/></strong> </td></tr> <tr><td><see cref=\"T:SharpDX.Direct3D9.Device\"/></td><td> <strong><see cref=\"M:SharpDX.Direct3D9.Device.ColorFill(SharpDX.Direct3D9.Surface,SharpDX.ColorBGRA)\"/></strong> </td></tr> <tr><td></td><td> <strong><see cref=\"M:SharpDX.Direct3D9.Device.StretchRectangle(SharpDX.Direct3D9.Surface,SharpDX.Direct3D9.Surface,SharpDX.Direct3D9.TextureFilter)\"/></strong> </td></tr> <tr><td></td><td> <strong><see cref=\"M:SharpDX.Direct3D9.Device.UpdateSurface(SharpDX.Direct3D9.Surface,SharpDX.Direct3D9.Surface)\"/></strong> </td></tr> <tr><td></td><td> <strong><see cref=\"M:SharpDX.Direct3D9.Device.UpdateTexture(SharpDX.Direct3D9.BaseTexture,SharpDX.Direct3D9.BaseTexture)\"/></strong> </td></tr> <tr><td><see cref=\"T:SharpDX.Direct3D9.Surface\"/></td><td> <strong><see cref=\"M:SharpDX.Direct3D9.Surface.LockRectangle(SharpDX.Direct3D9.LockedRectangle@,System.IntPtr,SharpDX.Direct3D9.LockFlags)\"/></strong> </td></tr> <tr><td><see cref=\"T:SharpDX.Direct3D9.SwapChain\"/></td><td> <strong><see cref=\"M:SharpDX.Direct3D9.SwapChain.Present(System.IntPtr,System.IntPtr,System.IntPtr,System.IntPtr,System.Int32)\"/></strong> *</td></tr> <tr><td><see cref=\"T:SharpDX.Direct3D9.Texture\"/></td><td> <strong><see cref=\"M:SharpDX.Direct3D9.Texture.LockRectangle(System.Int32,SharpDX.Direct3D9.LockedRectangle@,System.IntPtr,SharpDX.Direct3D9.LockFlags)\"/></strong> </td></tr> </table><p>?</p><p>* (on a swap chain that contains the surface)</p><p><strong><see cref=\"M:SharpDX.Direct3D9.Surface.GetDC\"/></strong> causes an implicit lock; do not retain the device context for later use. Call <strong><see cref=\"M:SharpDX.Direct3D9.Surface.ReleaseDC(System.IntPtr)\"/></strong> to release it.\t</p><p>It is valid to call <strong><see cref=\"M:SharpDX.Direct3D9.Surface.GetDC\"/></strong>/<strong><see cref=\"M:SharpDX.Direct3D9.Surface.ReleaseDC(System.IntPtr)\"/></strong> on levels of a mipmap or cubemap, however, these calls will be slow to all miplevels except the topmost level, and GDI operations to these miplevels will not be accelerated.</p><p>The hdc provides access to Win32 and GDI functionality.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DSurface9::GetDC']/*\"/>\t\n            <msdn-id>bb205894</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DSurface9::GetDC([Out] HDC* phdc)</unmanaged>\t\n            <unmanaged-short>IDirect3DSurface9::GetDC</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Surface.ReleaseDC(System.IntPtr)\">\n            <summary>\t\n            <p>Release a device context handle.</p>\t\n            </summary>\t\n            <param name=\"hdc\"><dd>  <p>Handle to a device context.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/> is returned if the argument is invalid.</p></returns>\t\n            <remarks>\t\n            <p>An hdc is a Windows resource. It must be released after use so Windows can return it to the pool of available resources.</p><p>This method will release only the device context returned by <strong><see cref=\"M:SharpDX.Direct3D9.Surface.GetDC\"/></strong>. Otherwise, this method will fail.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DSurface9::ReleaseDC']/*\"/>\t\n            <msdn-id>bb205897</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DSurface9::ReleaseDC([In] HDC hdc)</unmanaged>\t\n            <unmanaged-short>IDirect3DSurface9::ReleaseDC</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Surface.CreateDepthStencil(SharpDX.Direct3D9.Device,System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.MultisampleType,System.Int32,System.Boolean)\">\n            <summary>\n            Creates a depth-stencil surface.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"width\">The width.</param>\n            <param name=\"height\">The height.</param>\n            <param name=\"format\">The format.</param>\n            <param name=\"multisampleType\">Type of the multisample.</param>\n            <param name=\"multisampleQuality\">The multisample quality.</param>\n            <param name=\"discard\">if set to <c>true</c> [discard].</param>\n            <returns>A reference to a <see cref=\"T:SharpDX.Direct3D9.Surface\"/>, representing the created depth-stencil surface resource. </returns>\n            <unmanaged>HRESULT IDirect3DDevice9::CreateDepthStencilSurface([In] unsigned int Width,[In] unsigned int Height,[In] D3DFORMAT Format,[In] D3DMULTISAMPLE_TYPE MultiSample,[In] unsigned int MultisampleQuality,[In] BOOL Discard,[Out] IDirect3DSurface9** ppSurface,[In] void** pSharedHandle)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Surface.CreateDepthStencil(SharpDX.Direct3D9.Device,System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.MultisampleType,System.Int32,System.Boolean,System.IntPtr@)\">\n            <summary>\n            Creates a depth-stencil surface.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"width\">The width.</param>\n            <param name=\"height\">The height.</param>\n            <param name=\"format\">The format.</param>\n            <param name=\"multisampleType\">Type of the multisample.</param>\n            <param name=\"multisampleQuality\">The multisample quality.</param>\n            <param name=\"discard\">if set to <c>true</c> [discard].</param>\n            <param name=\"sharedHandle\">The shared handle.</param>\n            <returns>A reference to a <see cref=\"T:SharpDX.Direct3D9.Surface\"/>, representing the created depth-stencil surface resource. </returns>\n            <unmanaged>HRESULT IDirect3DDevice9::CreateDepthStencilSurface([In] unsigned int Width,[In] unsigned int Height,[In] D3DFORMAT Format,[In] D3DMULTISAMPLE_TYPE MultiSample,[In] unsigned int MultisampleQuality,[In] BOOL Discard,[Out] IDirect3DSurface9** ppSurface,[In] void** pSharedHandle)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Surface.CreateDepthStencilEx(SharpDX.Direct3D9.DeviceEx,System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.MultisampleType,System.Int32,System.Boolean,SharpDX.Direct3D9.Usage)\">\n            <summary>\n            Creates a depth-stencil surface.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"width\">The width.</param>\n            <param name=\"height\">The height.</param>\n            <param name=\"format\">The format.</param>\n            <param name=\"multisampleType\">Type of the multisample.</param>\n            <param name=\"multisampleQuality\">The multisample quality.</param>\n            <param name=\"discard\">if set to <c>true</c> [discard].</param>\n            <param name=\"usage\">The usage.</param>\n            <returns>A reference to a <see cref=\"T:SharpDX.Direct3D9.Surface\"/>, representing the created depth-stencil surface resource. </returns>\n            <unmanaged>HRESULT IDirect3DDevice9Ex::CreateDepthStencilSurfaceEx([In] unsigned int Width,[In] unsigned int Height,[In] D3DFORMAT Format,[In] D3DMULTISAMPLE_TYPE MultiSample,[In] unsigned int MultisampleQuality,[In] BOOL Discard,[Out, Fast] IDirect3DSurface9** ppSurface,[In] void** pSharedHandle,[In] unsigned int Usage)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Surface.CreateDepthStencilEx(SharpDX.Direct3D9.DeviceEx,System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.MultisampleType,System.Int32,System.Boolean,SharpDX.Direct3D9.Usage,System.IntPtr@)\">\n            <summary>\n            Creates a depth-stencil surface.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"width\">The width.</param>\n            <param name=\"height\">The height.</param>\n            <param name=\"format\">The format.</param>\n            <param name=\"multisampleType\">Type of the multisample.</param>\n            <param name=\"multisampleQuality\">The multisample quality.</param>\n            <param name=\"discard\">if set to <c>true</c> [discard].</param>\n            <param name=\"usage\">The usage.</param>\n            <param name=\"sharedHandle\">The shared handle.</param>\n            <returns>A reference to a <see cref=\"T:SharpDX.Direct3D9.Surface\"/>, representing the created depth-stencil surface resource. </returns>\n            <unmanaged>HRESULT IDirect3DDevice9Ex::CreateDepthStencilSurfaceEx([In] unsigned int Width,[In] unsigned int Height,[In] D3DFORMAT Format,[In] D3DMULTISAMPLE_TYPE MultiSample,[In] unsigned int MultisampleQuality,[In] BOOL Discard,[Out, Fast] IDirect3DSurface9** ppSurface,[In] void** pSharedHandle,[In] unsigned int Usage)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Surface.CreateOffscreenPlain(SharpDX.Direct3D9.Device,System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool)\">\n            <summary>\n            Create an off-screen surface.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"width\">The width.</param>\n            <param name=\"height\">The height.</param>\n            <param name=\"format\">The format.</param>\n            <param name=\"pool\">The pool.</param>\n            <returns>A <see cref=\"T:SharpDX.Direct3D9.Surface\"/> created.</returns>\n            <unmanaged>HRESULT IDirect3DDevice9::CreateOffscreenPlainSurface([In] unsigned int Width,[In] unsigned int Height,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[Out, Fast] IDirect3DSurface9** ppSurface,[In] void** pSharedHandle)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Surface.CreateOffscreenPlain(SharpDX.Direct3D9.Device,System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,System.IntPtr@)\">\n            <summary>\n            Create an off-screen surface.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"width\">The width.</param>\n            <param name=\"height\">The height.</param>\n            <param name=\"format\">The format.</param>\n            <param name=\"pool\">The pool.</param>\n            <param name=\"sharedHandle\">The shared handle.</param>\n            <returns>A <see cref=\"T:SharpDX.Direct3D9.Surface\"/> created.</returns>\n            <unmanaged>HRESULT IDirect3DDevice9::CreateOffscreenPlainSurface([In] unsigned int Width,[In] unsigned int Height,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[Out, Fast] IDirect3DSurface9** ppSurface,[In] void** pSharedHandle)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Surface.CreateOffscreenPlainEx(SharpDX.Direct3D9.DeviceEx,System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,SharpDX.Direct3D9.Usage)\">\n            <summary>\n            Create an off-screen surface.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"width\">The width.</param>\n            <param name=\"height\">The height.</param>\n            <param name=\"format\">The format.</param>\n            <param name=\"pool\">The pool.</param>\n            <param name=\"usage\">The usage.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Direct3D9.Surface\"/> created.\n            </returns>\n            <unmanaged>HRESULT IDirect3DDevice9Ex::CreateOffscreenPlainSurfaceEx([In] unsigned int Width,[In] unsigned int Height,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[Out] IDirect3DSurface9** ppSurface,[In] void** pSharedHandle,[In] unsigned int Usage)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Surface.CreateOffscreenPlainEx(SharpDX.Direct3D9.DeviceEx,System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,SharpDX.Direct3D9.Usage,System.IntPtr@)\">\n            <summary>\n            Create an off-screen surface.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"width\">The width.</param>\n            <param name=\"height\">The height.</param>\n            <param name=\"format\">The format.</param>\n            <param name=\"pool\">The pool.</param>\n            <param name=\"usage\">The usage.</param>\n            <param name=\"sharedHandle\">The shared handle.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Direct3D9.Surface\"/> created.\n            </returns>\n            <unmanaged>HRESULT IDirect3DDevice9Ex::CreateOffscreenPlainSurfaceEx([In] unsigned int Width,[In] unsigned int Height,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[Out] IDirect3DSurface9** ppSurface,[In] void** pSharedHandle,[In] unsigned int Usage)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Surface.CreateRenderTarget(SharpDX.Direct3D9.Device,System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.MultisampleType,System.Int32,System.Boolean)\">\n            <summary>\n            Creates a render-target surface.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"width\">The width.</param>\n            <param name=\"height\">The height.</param>\n            <param name=\"format\">The format.</param>\n            <param name=\"multisampleType\">Type of the multisample.</param>\n            <param name=\"multisampleQuality\">The multisample quality.</param>\n            <param name=\"lockable\">if set to <c>true</c> [lockable].</param>\n            <returns>\n            A render-target <see cref=\"T:SharpDX.Direct3D9.Surface\"/>.\n            </returns>\n            <unmanaged>HRESULT IDirect3DDevice9::CreateRenderTarget([In] unsigned int Width,[In] unsigned int Height,[In] D3DFORMAT Format,[In] D3DMULTISAMPLE_TYPE MultiSample,[In] unsigned int MultisampleQuality,[In] BOOL Lockable,[Out] IDirect3DSurface9** ppSurface,[In] void** pSharedHandle)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Surface.CreateRenderTarget(SharpDX.Direct3D9.Device,System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.MultisampleType,System.Int32,System.Boolean,System.IntPtr@)\">\n            <summary>\n            Creates a render-target surface.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"width\">The width.</param>\n            <param name=\"height\">The height.</param>\n            <param name=\"format\">The format.</param>\n            <param name=\"multisampleType\">Type of the multisample.</param>\n            <param name=\"multisampleQuality\">The multisample quality.</param>\n            <param name=\"lockable\">if set to <c>true</c> [lockable].</param>\n            <param name=\"sharedHandle\">The shared handle.</param>\n            <returns>\n            A render-target <see cref=\"T:SharpDX.Direct3D9.Surface\"/>.\n            </returns>\n            <unmanaged>HRESULT IDirect3DDevice9::CreateRenderTarget([In] unsigned int Width,[In] unsigned int Height,[In] D3DFORMAT Format,[In] D3DMULTISAMPLE_TYPE MultiSample,[In] unsigned int MultisampleQuality,[In] BOOL Lockable,[Out] IDirect3DSurface9** ppSurface,[In] void** pSharedHandle)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Surface.CreateRenderTargetEx(SharpDX.Direct3D9.DeviceEx,System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.MultisampleType,System.Int32,System.Boolean,SharpDX.Direct3D9.Usage)\">\n            <summary>\n            Creates a render-target surface.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"width\">The width.</param>\n            <param name=\"height\">The height.</param>\n            <param name=\"format\">The format.</param>\n            <param name=\"multisampleType\">Type of the multisample.</param>\n            <param name=\"multisampleQuality\">The multisample quality.</param>\n            <param name=\"lockable\">if set to <c>true</c> [lockable].</param>\n            <param name=\"usage\">The usage.</param>\n            <returns>A render-target <see cref=\"T:SharpDX.Direct3D9.Surface\"/>.</returns>\n            <unmanaged>HRESULT IDirect3DDevice9Ex::CreateRenderTargetEx([In] unsigned int Width,[In] unsigned int Height,[In] D3DFORMAT Format,[In] D3DMULTISAMPLE_TYPE MultiSample,[In] unsigned int MultisampleQuality,[In] BOOL Lockable,[Out] IDirect3DSurface9** ppSurface,[In] void** pSharedHandle,[In] unsigned int Usage)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Surface.CreateRenderTargetEx(SharpDX.Direct3D9.DeviceEx,System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.MultisampleType,System.Int32,System.Boolean,SharpDX.Direct3D9.Usage,System.IntPtr@)\">\n            <summary>\n            Creates a render-target surface.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"width\">The width.</param>\n            <param name=\"height\">The height.</param>\n            <param name=\"format\">The format.</param>\n            <param name=\"multisampleType\">Type of the multisample.</param>\n            <param name=\"multisampleQuality\">The multisample quality.</param>\n            <param name=\"lockable\">if set to <c>true</c> [lockable].</param>\n            <param name=\"usage\">The usage.</param>\n            <param name=\"sharedHandle\">The shared handle.</param>\n            <returns>A render-target <see cref=\"T:SharpDX.Direct3D9.Surface\"/>.</returns>\n            <unmanaged>HRESULT IDirect3DDevice9Ex::CreateRenderTargetEx([In] unsigned int Width,[In] unsigned int Height,[In] D3DFORMAT Format,[In] D3DMULTISAMPLE_TYPE MultiSample,[In] unsigned int MultisampleQuality,[In] BOOL Lockable,[Out] IDirect3DSurface9** ppSurface,[In] void** pSharedHandle,[In] unsigned int Usage)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Surface.FromFile(SharpDX.Direct3D9.Surface,System.String,SharpDX.Direct3D9.Filter,System.Int32)\">\n            <summary>\n            Loads a surface from a file.\n            </summary>\n            <param name=\"surface\">The surface.</param>\n            <param name=\"fileName\">Name of the file.</param>\n            <param name=\"filter\">The filter.</param>\n            <param name=\"colorKey\">The color key.</param>\n            <returns>A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.</returns>\n            <unmanaged>HRESULT D3DXLoadSurfaceFromFileW([In] IDirect3DSurface9* pDestSurface,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestRect,[In] const wchar_t* pSrcFile,[In] const void* pSrcRect,[In] D3DX_FILTER Filter,[In] int ColorKey,[In] void* pSrcInfo)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Surface.FromFile(SharpDX.Direct3D9.Surface,System.String,SharpDX.Direct3D9.Filter,System.Int32,SharpDX.Rectangle,SharpDX.Rectangle)\">\n            <summary>\n            Loads a surface from a file.\n            </summary>\n            <param name=\"surface\">The surface.</param>\n            <param name=\"fileName\">Name of the file.</param>\n            <param name=\"filter\">The filter.</param>\n            <param name=\"colorKey\">The color key.</param>\n            <param name=\"sourceRectangle\">The source rectangle.</param>\n            <param name=\"destinationRectangle\">The destination rectangle.</param>\n            <returns>A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.</returns>\n            <unmanaged>HRESULT D3DXLoadSurfaceFromFileW([In] IDirect3DSurface9* pDestSurface,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestRect,[In] const wchar_t* pSrcFile,[In] const void* pSrcRect,[In] D3DX_FILTER Filter,[In] int ColorKey,[In] void* pSrcInfo)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Surface.FromFile(SharpDX.Direct3D9.Surface,System.String,SharpDX.Direct3D9.Filter,System.Int32,SharpDX.Rectangle,SharpDX.Rectangle,SharpDX.Direct3D9.ImageInformation@)\">\n            <summary>\n            Loads a surface from a file.\n            </summary>\n            <param name=\"surface\">The surface.</param>\n            <param name=\"fileName\">Name of the file.</param>\n            <param name=\"filter\">The filter.</param>\n            <param name=\"colorKey\">The color key.</param>\n            <param name=\"sourceRectangle\">The source rectangle.</param>\n            <param name=\"destinationRectangle\">The destination rectangle.</param>\n            <param name=\"imageInformation\">The image information.</param>\n            <returns>A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.</returns>\n            <unmanaged>HRESULT D3DXLoadSurfaceFromFileW([In] IDirect3DSurface9* pDestSurface,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestRect,[In] const wchar_t* pSrcFile,[In] const void* pSrcRect,[In] D3DX_FILTER Filter,[In] int ColorKey,[In] void* pSrcInfo)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Surface.FromFile(SharpDX.Direct3D9.Surface,System.String,SharpDX.Direct3D9.Filter,System.Int32,SharpDX.Rectangle,SharpDX.Rectangle,SharpDX.Direct3D9.PaletteEntry[],SharpDX.Direct3D9.ImageInformation@)\">\n            <summary>\n            Loads a surface from a file.\n            </summary>\n            <param name=\"surface\">The surface.</param>\n            <param name=\"fileName\">Name of the file.</param>\n            <param name=\"filter\">The filter.</param>\n            <param name=\"colorKey\">The color key.</param>\n            <param name=\"sourceRectangle\">The source rectangle.</param>\n            <param name=\"destinationRectangle\">The destination rectangle.</param>\n            <param name=\"palette\">The palette.</param>\n            <param name=\"imageInformation\">The image information.</param>\n            <returns>A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.</returns>\n            <unmanaged>HRESULT D3DXLoadSurfaceFromFileW([In] IDirect3DSurface9* pDestSurface,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestRect,[In] const wchar_t* pSrcFile,[In] const void* pSrcRect,[In] D3DX_FILTER Filter,[In] int ColorKey,[In] void* pSrcInfo)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Surface.FromFileInMemory(SharpDX.Direct3D9.Surface,System.Byte[],SharpDX.Direct3D9.Filter,System.Int32)\">\n            <summary>\n            Loads a surface from a file in memory.\n            </summary>\n            <param name=\"surface\">The surface.</param>\n            <param name=\"memory\">The memory.</param>\n            <param name=\"filter\">The filter.</param>\n            <param name=\"colorKey\">The color key.</param>\n            <returns>A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.</returns>\n            <unmanaged>HRESULT D3DXLoadSurfaceFromFileInMemory([In] IDirect3DSurface9* pDestSurface,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestRect,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] const void* pSrcRect,[In] D3DX_FILTER Filter,[In] int ColorKey,[In] void* pSrcInfo)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Surface.FromFileInMemory(SharpDX.Direct3D9.Surface,System.Byte[],SharpDX.Direct3D9.Filter,System.Int32,SharpDX.Rectangle,SharpDX.Rectangle)\">\n            <summary>\n            Loads a surface from a file in memory.\n            </summary>\n            <param name=\"surface\">The surface.</param>\n            <param name=\"memory\">The memory.</param>\n            <param name=\"filter\">The filter.</param>\n            <param name=\"colorKey\">The color key.</param>\n            <param name=\"sourceRectangle\">The source rectangle.</param>\n            <param name=\"destinationRectangle\">The destination rectangle.</param>\n            <returns>A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.</returns>\n            <unmanaged>HRESULT D3DXLoadSurfaceFromFileInMemory([In] IDirect3DSurface9* pDestSurface,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestRect,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] const void* pSrcRect,[In] D3DX_FILTER Filter,[In] int ColorKey,[In] void* pSrcInfo)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Surface.FromFileInMemory(SharpDX.Direct3D9.Surface,System.Byte[],SharpDX.Direct3D9.Filter,System.Int32,SharpDX.Rectangle,SharpDX.Rectangle,SharpDX.Direct3D9.ImageInformation@)\">\n            <summary>\n            Loads a surface from a file in memory.\n            </summary>\n            <param name=\"surface\">The surface.</param>\n            <param name=\"memory\">The memory.</param>\n            <param name=\"filter\">The filter.</param>\n            <param name=\"colorKey\">The color key.</param>\n            <param name=\"sourceRectangle\">The source rectangle.</param>\n            <param name=\"destinationRectangle\">The destination rectangle.</param>\n            <param name=\"imageInformation\">The image information.</param>\n            <returns>A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.</returns>\n            <unmanaged>HRESULT D3DXLoadSurfaceFromFileInMemory([In] IDirect3DSurface9* pDestSurface,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestRect,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] const void* pSrcRect,[In] D3DX_FILTER Filter,[In] int ColorKey,[In] void* pSrcInfo)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Surface.FromFileInMemory(SharpDX.Direct3D9.Surface,System.Byte[],SharpDX.Direct3D9.Filter,System.Int32,SharpDX.Rectangle,SharpDX.Rectangle,SharpDX.Direct3D9.PaletteEntry[],SharpDX.Direct3D9.ImageInformation@)\">\n            <summary>\n            Loads a surface from a file in memory.\n            </summary>\n            <param name=\"surface\">The surface.</param>\n            <param name=\"memory\">The memory.</param>\n            <param name=\"filter\">The filter.</param>\n            <param name=\"colorKey\">The color key.</param>\n            <param name=\"sourceRectangle\">The source rectangle.</param>\n            <param name=\"destinationRectangle\">The destination rectangle.</param>\n            <param name=\"palette\">The palette.</param>\n            <param name=\"imageInformation\">The image information.</param>\n            <returns>A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.</returns>\n            <unmanaged>HRESULT D3DXLoadSurfaceFromFileInMemory([In] IDirect3DSurface9* pDestSurface,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestRect,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] const void* pSrcRect,[In] D3DX_FILTER Filter,[In] int ColorKey,[In] void* pSrcInfo)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Surface.FromFileInStream(SharpDX.Direct3D9.Surface,System.IO.Stream,SharpDX.Direct3D9.Filter,System.Int32)\">\n            <summary>\n            Loads a surface from a file in memory.\n            </summary>\n            <param name=\"surface\">The surface.</param>\n            <param name=\"stream\">The stream.</param>\n            <param name=\"filter\">The filter.</param>\n            <param name=\"colorKey\">The color key.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT D3DXLoadSurfaceFromFileInMemory([In] IDirect3DSurface9* pDestSurface,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestRect,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] const void* pSrcRect,[In] D3DX_FILTER Filter,[In] int ColorKey,[In] void* pSrcInfo)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Surface.FromFileInStream(SharpDX.Direct3D9.Surface,System.IO.Stream,SharpDX.Direct3D9.Filter,System.Int32,SharpDX.Rectangle,SharpDX.Rectangle)\">\n            <summary>\n            Loads a surface from a file in memory.\n            </summary>\n            <param name=\"surface\">The surface.</param>\n            <param name=\"stream\">The stream.</param>\n            <param name=\"filter\">The filter.</param>\n            <param name=\"colorKey\">The color key.</param>\n            <param name=\"sourceRectangle\">The source rectangle.</param>\n            <param name=\"destinationRectangle\">The destination rectangle.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT D3DXLoadSurfaceFromFileInMemory([In] IDirect3DSurface9* pDestSurface,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestRect,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] const void* pSrcRect,[In] D3DX_FILTER Filter,[In] int ColorKey,[In] void* pSrcInfo)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Surface.FromFileInStream(SharpDX.Direct3D9.Surface,System.IO.Stream,SharpDX.Direct3D9.Filter,System.Int32,SharpDX.Rectangle,SharpDX.Rectangle,SharpDX.Direct3D9.ImageInformation@)\">\n            <summary>\n            Loads a surface from a file in memory.\n            </summary>\n            <param name=\"surface\">The surface.</param>\n            <param name=\"stream\">The stream.</param>\n            <param name=\"filter\">The filter.</param>\n            <param name=\"colorKey\">The color key.</param>\n            <param name=\"sourceRectangle\">The source rectangle.</param>\n            <param name=\"destinationRectangle\">The destination rectangle.</param>\n            <param name=\"imageInformation\">The image information.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT D3DXLoadSurfaceFromFileInMemory([In] IDirect3DSurface9* pDestSurface,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestRect,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] const void* pSrcRect,[In] D3DX_FILTER Filter,[In] int ColorKey,[In] void* pSrcInfo)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Surface.FromFileInStream(SharpDX.Direct3D9.Surface,System.IO.Stream,SharpDX.Direct3D9.Filter,System.Int32,SharpDX.Rectangle,SharpDX.Rectangle,SharpDX.Direct3D9.PaletteEntry[],SharpDX.Direct3D9.ImageInformation@)\">\n            <summary>\n            Loads a surface from a file in memory.\n            </summary>\n            <param name=\"surface\">The surface.</param>\n            <param name=\"stream\">The stream.</param>\n            <param name=\"filter\">The filter.</param>\n            <param name=\"colorKey\">The color key.</param>\n            <param name=\"sourceRectangle\">The source rectangle.</param>\n            <param name=\"destinationRectangle\">The destination rectangle.</param>\n            <param name=\"palette\">The palette.</param>\n            <param name=\"imageInformation\">The image information.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT D3DXLoadSurfaceFromFileInMemory([In] IDirect3DSurface9* pDestSurface,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestRect,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] const void* pSrcRect,[In] D3DX_FILTER Filter,[In] int ColorKey,[In] void* pSrcInfo)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Surface.CreateFromFileInStream(SharpDX.Direct3D9.Surface,System.IO.Stream,SharpDX.Direct3D9.Filter,System.Int32,SharpDX.Rectangle,SharpDX.Rectangle,SharpDX.Direct3D9.PaletteEntry[],System.IntPtr)\">\n            <summary>\n            Loads a surface from a file in memory.\n            </summary>\n            <param name=\"surface\">The surface.</param>\n            <param name=\"stream\">The stream.</param>\n            <param name=\"filter\">The filter.</param>\n            <param name=\"colorKey\">The color key.</param>\n            <param name=\"sourceRectangle\">The source rectangle.</param>\n            <param name=\"destinationRectangle\">The destination rectangle.</param>\n            <param name=\"palette\">The palette.</param>\n            <param name=\"imageInformation\">The image information.</param>\n            <returns>A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.</returns>\n            <unmanaged>HRESULT D3DXLoadSurfaceFromFileInMemory([In] IDirect3DSurface9* pDestSurface,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestRect,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] const void* pSrcRect,[In] D3DX_FILTER Filter,[In] int ColorKey,[In] void* pSrcInfo)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Surface.FromMemory(SharpDX.Direct3D9.Surface,System.Byte[],SharpDX.Direct3D9.Filter,System.Int32,SharpDX.Direct3D9.Format,System.Int32,SharpDX.Rectangle)\">\n            <summary>\n            Loads a surface from memory.\n            </summary>\n            <param name=\"surface\">The surface.</param>\n            <param name=\"data\">The data.</param>\n            <param name=\"filter\">The filter.</param>\n            <param name=\"colorKey\">The color key.</param>\n            <param name=\"sourceFormat\">The source format.</param>\n            <param name=\"sourcePitch\">The source pitch.</param>\n            <param name=\"sourceRectangle\">The source rectangle.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT D3DXLoadSurfaceFromMemory([In] IDirect3DSurface9* pDestSurface,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestRect,[In] const void* pSrcMemory,[In] D3DFORMAT SrcFormat,[In] unsigned int SrcPitch,[In, Buffer] const PALETTEENTRY* pSrcPalette,[In] const void* pSrcRect,[In] D3DX_FILTER Filter,[In] int ColorKey)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Surface.FromMemory(SharpDX.Direct3D9.Surface,System.Byte[],SharpDX.Direct3D9.Filter,System.Int32,SharpDX.Direct3D9.Format,System.Int32,SharpDX.Rectangle,SharpDX.Rectangle)\">\n            <summary>\n            Loads a surface from memory.\n            </summary>\n            <param name=\"surface\">The surface.</param>\n            <param name=\"data\">The data.</param>\n            <param name=\"filter\">The filter.</param>\n            <param name=\"colorKey\">The color key.</param>\n            <param name=\"sourceFormat\">The source format.</param>\n            <param name=\"sourcePitch\">The source pitch.</param>\n            <param name=\"sourceRectangle\">The source rectangle.</param>\n            <param name=\"destinationRectangle\">The destination rectangle.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT D3DXLoadSurfaceFromMemory([In] IDirect3DSurface9* pDestSurface,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestRect,[In] const void* pSrcMemory,[In] D3DFORMAT SrcFormat,[In] unsigned int SrcPitch,[In, Buffer] const PALETTEENTRY* pSrcPalette,[In] const void* pSrcRect,[In] D3DX_FILTER Filter,[In] int ColorKey)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Surface.FromMemory(SharpDX.Direct3D9.Surface,System.Byte[],SharpDX.Direct3D9.Filter,System.Int32,SharpDX.Direct3D9.Format,System.Int32,SharpDX.Rectangle,SharpDX.Direct3D9.PaletteEntry[],SharpDX.Direct3D9.PaletteEntry[])\">\n            <summary>\n            Loads a surface from memory.\n            </summary>\n            <param name=\"surface\">The surface.</param>\n            <param name=\"data\">The data.</param>\n            <param name=\"filter\">The filter.</param>\n            <param name=\"colorKey\">The color key.</param>\n            <param name=\"sourceFormat\">The source format.</param>\n            <param name=\"sourcePitch\">The source pitch.</param>\n            <param name=\"sourceRectangle\">The source rectangle.</param>\n            <param name=\"sourcePalette\">The source palette.</param>\n            <param name=\"destinationPalette\">The destination palette.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT D3DXLoadSurfaceFromMemory([In] IDirect3DSurface9* pDestSurface,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestRect,[In] const void* pSrcMemory,[In] D3DFORMAT SrcFormat,[In] unsigned int SrcPitch,[In, Buffer] const PALETTEENTRY* pSrcPalette,[In] const void* pSrcRect,[In] D3DX_FILTER Filter,[In] int ColorKey)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Surface.FromMemory(SharpDX.Direct3D9.Surface,System.Byte[],SharpDX.Direct3D9.Filter,System.Int32,SharpDX.Direct3D9.Format,System.Int32,SharpDX.Rectangle,SharpDX.Rectangle,SharpDX.Direct3D9.PaletteEntry[],SharpDX.Direct3D9.PaletteEntry[])\">\n            <summary>\n            Loads a surface from memory.\n            </summary>\n            <param name=\"surface\">The surface.</param>\n            <param name=\"data\">The data.</param>\n            <param name=\"filter\">The filter.</param>\n            <param name=\"colorKey\">The color key.</param>\n            <param name=\"sourceFormat\">The source format.</param>\n            <param name=\"sourcePitch\">The source pitch.</param>\n            <param name=\"sourceRectangle\">The source rectangle.</param>\n            <param name=\"destinationRectangle\">The destination rectangle.</param>\n            <param name=\"sourcePalette\">The source palette.</param>\n            <param name=\"destinationPalette\">The destination palette.</param>\n            <returns>A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.</returns>\n            <unmanaged>HRESULT D3DXLoadSurfaceFromMemory([In] IDirect3DSurface9* pDestSurface,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestRect,[In] const void* pSrcMemory,[In] D3DFORMAT SrcFormat,[In] unsigned int SrcPitch,[In, Buffer] const PALETTEENTRY* pSrcPalette,[In] const void* pSrcRect,[In] D3DX_FILTER Filter,[In] int ColorKey)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Surface.FromStream(SharpDX.Direct3D9.Surface,System.IO.Stream,SharpDX.Direct3D9.Filter,System.Int32,SharpDX.Direct3D9.Format,System.Int32,SharpDX.Rectangle)\">\n            <summary>\n            Loads a surface from memory.\n            </summary>\n            <param name=\"surface\">The surface.</param>\n            <param name=\"stream\">The stream.</param>\n            <param name=\"filter\">The filter.</param>\n            <param name=\"colorKey\">The color key.</param>\n            <param name=\"sourceFormat\">The source format.</param>\n            <param name=\"sourcePitch\">The source pitch.</param>\n            <param name=\"sourceRectangle\">The source rectangle.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT D3DXLoadSurfaceFromMemory([In] IDirect3DSurface9* pDestSurface,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestRect,[In] const void* pSrcMemory,[In] D3DFORMAT SrcFormat,[In] unsigned int SrcPitch,[In, Buffer] const PALETTEENTRY* pSrcPalette,[In] const void* pSrcRect,[In] D3DX_FILTER Filter,[In] int ColorKey)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Surface.FromStream(SharpDX.Direct3D9.Surface,System.IO.Stream,SharpDX.Direct3D9.Filter,System.Int32,SharpDX.Direct3D9.Format,System.Int32,SharpDX.Rectangle,SharpDX.Rectangle)\">\n            <summary>\n            Loads a surface from memory.\n            </summary>\n            <param name=\"surface\">The surface.</param>\n            <param name=\"stream\">The stream.</param>\n            <param name=\"filter\">The filter.</param>\n            <param name=\"colorKey\">The color key.</param>\n            <param name=\"sourceFormat\">The source format.</param>\n            <param name=\"sourcePitch\">The source pitch.</param>\n            <param name=\"sourceRectangle\">The source rectangle.</param>\n            <param name=\"destinationRectangle\">The destination rectangle.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT D3DXLoadSurfaceFromMemory([In] IDirect3DSurface9* pDestSurface,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestRect,[In] const void* pSrcMemory,[In] D3DFORMAT SrcFormat,[In] unsigned int SrcPitch,[In, Buffer] const PALETTEENTRY* pSrcPalette,[In] const void* pSrcRect,[In] D3DX_FILTER Filter,[In] int ColorKey)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Surface.FromStream(SharpDX.Direct3D9.Surface,System.IO.Stream,SharpDX.Direct3D9.Filter,System.Int32,SharpDX.Direct3D9.Format,System.Int32,SharpDX.Rectangle,SharpDX.Direct3D9.PaletteEntry[],SharpDX.Direct3D9.PaletteEntry[])\">\n            <summary>\n            Loads a surface from memory.\n            </summary>\n            <param name=\"surface\">The surface.</param>\n            <param name=\"stream\">The stream.</param>\n            <param name=\"filter\">The filter.</param>\n            <param name=\"colorKey\">The color key.</param>\n            <param name=\"sourceFormat\">The source format.</param>\n            <param name=\"sourcePitch\">The source pitch.</param>\n            <param name=\"sourceRectangle\">The source rectangle.</param>\n            <param name=\"sourcePalette\">The source palette.</param>\n            <param name=\"destinationPalette\">The destination palette.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT D3DXLoadSurfaceFromMemory([In] IDirect3DSurface9* pDestSurface,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestRect,[In] const void* pSrcMemory,[In] D3DFORMAT SrcFormat,[In] unsigned int SrcPitch,[In, Buffer] const PALETTEENTRY* pSrcPalette,[In] const void* pSrcRect,[In] D3DX_FILTER Filter,[In] int ColorKey)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Surface.FromStream(SharpDX.Direct3D9.Surface,System.IO.Stream,SharpDX.Direct3D9.Filter,System.Int32,SharpDX.Direct3D9.Format,System.Int32,SharpDX.Rectangle,SharpDX.Rectangle,SharpDX.Direct3D9.PaletteEntry[],SharpDX.Direct3D9.PaletteEntry[])\">\n            <summary>\n            Loads a surface from memory.\n            </summary>\n            <param name=\"surface\">The surface.</param>\n            <param name=\"stream\">The stream.</param>\n            <param name=\"filter\">The filter.</param>\n            <param name=\"colorKey\">The color key.</param>\n            <param name=\"sourceFormat\">The source format.</param>\n            <param name=\"sourcePitch\">The source pitch.</param>\n            <param name=\"sourceRectangle\">The source rectangle.</param>\n            <param name=\"destinationRectangle\">The destination rectangle.</param>\n            <param name=\"sourcePalette\">The source palette.</param>\n            <param name=\"destinationPalette\">The destination palette.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT D3DXLoadSurfaceFromMemory([In] IDirect3DSurface9* pDestSurface,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestRect,[In] const void* pSrcMemory,[In] D3DFORMAT SrcFormat,[In] unsigned int SrcPitch,[In, Buffer] const PALETTEENTRY* pSrcPalette,[In] const void* pSrcRect,[In] D3DX_FILTER Filter,[In] int ColorKey)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Surface.FromSurface(SharpDX.Direct3D9.Surface,SharpDX.Direct3D9.Surface,SharpDX.Direct3D9.Filter,System.Int32)\">\n            <summary>\n            Loads a surface from a source surface.\n            </summary>\n            <param name=\"destinationSurface\">The destination surface.</param>\n            <param name=\"sourceSurface\">The source surface.</param>\n            <param name=\"filter\">The filter.</param>\n            <param name=\"colorKey\">The color key.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT D3DXLoadSurfaceFromSurface([In] IDirect3DSurface9* pDestSurface,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestRect,[In] IDirect3DSurface9* pSrcSurface,[In, Buffer] const PALETTEENTRY* pSrcPalette,[In] const void* pSrcRect,[In] D3DX_FILTER Filter,[In] int ColorKey)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Surface.FromSurface(SharpDX.Direct3D9.Surface,SharpDX.Direct3D9.Surface,SharpDX.Direct3D9.Filter,System.Int32,SharpDX.Rectangle,SharpDX.Rectangle)\">\n            <summary>\n            Loads a surface from a source surface.\n            </summary>\n            <param name=\"destinationSurface\">The destination surface.</param>\n            <param name=\"sourceSurface\">The source surface.</param>\n            <param name=\"filter\">The filter.</param>\n            <param name=\"colorKey\">The color key.</param>\n            <param name=\"sourceRectangle\">The source rectangle.</param>\n            <param name=\"destinationRectangle\">The destination rectangle.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT D3DXLoadSurfaceFromSurface([In] IDirect3DSurface9* pDestSurface,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestRect,[In] IDirect3DSurface9* pSrcSurface,[In, Buffer] const PALETTEENTRY* pSrcPalette,[In] const void* pSrcRect,[In] D3DX_FILTER Filter,[In] int ColorKey)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Surface.FromSurface(SharpDX.Direct3D9.Surface,SharpDX.Direct3D9.Surface,SharpDX.Direct3D9.Filter,System.Int32,SharpDX.Rectangle,SharpDX.Rectangle,SharpDX.Direct3D9.PaletteEntry[],SharpDX.Direct3D9.PaletteEntry[])\">\n            <summary>\n            Loads a surface from a source surface.\n            </summary>\n            <param name=\"destinationSurface\">The destination surface.</param>\n            <param name=\"sourceSurface\">The source surface.</param>\n            <param name=\"filter\">The filter.</param>\n            <param name=\"colorKey\">The color key.</param>\n            <param name=\"sourceRectangle\">The source rectangle.</param>\n            <param name=\"destinationRectangle\">The destination rectangle.</param>\n            <param name=\"destinationPalette\">The destination palette.</param>\n            <param name=\"sourcePalette\">The source palette.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT D3DXLoadSurfaceFromSurface([In] IDirect3DSurface9* pDestSurface,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestRect,[In] IDirect3DSurface9* pSrcSurface,[In, Buffer] const PALETTEENTRY* pSrcPalette,[In] const void* pSrcRect,[In] D3DX_FILTER Filter,[In] int ColorKey)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Surface.GetContainer``1(System.Guid)\">\n            <summary>\n            Gets the parent cube texture or texture (mipmap) object, if this surface is a child level of a cube texture or a mipmap. \n            This method can also provide access to the parent swap chain if the surface is a back-buffer child.\n            </summary>\n            <typeparam name=\"T\"></typeparam>\n            <param name=\"guid\">The GUID.</param>\n            <returns>The parent container texture.</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Surface.LockRectangle(SharpDX.Direct3D9.LockFlags)\">\n            <summary>\n            Locks a rectangle on a surface.\n            </summary>\n            <param name=\"flags\">The type of lock to perform.</param>\n            <returns>A pointer to the locked region</returns>\n            <unmanaged>HRESULT IDirect3DSurface9::LockRect([Out] D3DLOCKED_RECT* pLockedRect,[In] const void* pRect,[In] D3DLOCK Flags)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Surface.LockRectangle(SharpDX.Rectangle,SharpDX.Direct3D9.LockFlags)\">\n            <summary>\n            Locks a rectangle on a surface.\n            </summary>\n            <param name=\"rect\">The rectangle to lock.</param>\n            <param name=\"flags\">The type of lock to perform.</param>\n            <returns>A pointer to the locked region</returns>\n            <unmanaged>HRESULT IDirect3DSurface9::LockRect([Out] D3DLOCKED_RECT* pLockedRect,[In] const void* pRect,[In] D3DLOCK Flags)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Surface.LockRectangle(SharpDX.Direct3D9.LockFlags,SharpDX.DataStream@)\">\n            <summary>\n            Locks a rectangle on a surface.\n            </summary>\n            <param name=\"flags\">The type of lock to perform.</param>\n            <param name=\"stream\">The stream pointing to the locked region.</param>\n            <returns>A pointer to the locked region</returns>\n            <unmanaged>HRESULT IDirect3DSurface9::LockRect([Out] D3DLOCKED_RECT* pLockedRect,[In] const void* pRect,[In] D3DLOCK Flags)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Surface.LockRectangle(SharpDX.Rectangle,SharpDX.Direct3D9.LockFlags,SharpDX.DataStream@)\">\n            <summary>\n            Locks a rectangle on a surface.\n            </summary>\n            <param name=\"rect\">The rectangle to lock.</param>\n            <param name=\"flags\">The type of lock to perform.</param>\n            <param name=\"stream\">The stream pointing to the locked region.</param>\n            <returns>A pointer to the locked region</returns>\n            <unmanaged>HRESULT IDirect3DSurface9::LockRect([Out] D3DLOCKED_RECT* pLockedRect,[In] const void* pRect,[In] D3DLOCK Flags)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Surface.ToFile(SharpDX.Direct3D9.Surface,System.String,SharpDX.Direct3D9.ImageFileFormat)\">\n            <summary>\n            Saves a surface to a file.\n            </summary>\n            <param name=\"surface\">The surface.</param>\n            <param name=\"fileName\">Name of the file.</param>\n            <param name=\"format\">The format.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT D3DXSaveSurfaceToFileW([In] const wchar_t* pDestFile,[In] D3DXIMAGE_FILEFORMAT DestFormat,[In] IDirect3DSurface9* pSrcSurface,[In, Buffer] const PALETTEENTRY* pSrcPalette,[In] const void* pSrcRect)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Surface.ToFile(SharpDX.Direct3D9.Surface,System.String,SharpDX.Direct3D9.ImageFileFormat,SharpDX.Rectangle)\">\n            <summary>\n            Saves a surface to a file.\n            </summary>\n            <param name=\"surface\">The surface.</param>\n            <param name=\"fileName\">Name of the file.</param>\n            <param name=\"format\">The format.</param>\n            <param name=\"rectangle\">The rectangle.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT D3DXSaveSurfaceToFileW([In] const wchar_t* pDestFile,[In] D3DXIMAGE_FILEFORMAT DestFormat,[In] IDirect3DSurface9* pSrcSurface,[In, Buffer] const PALETTEENTRY* pSrcPalette,[In] const void* pSrcRect)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Surface.ToFile(SharpDX.Direct3D9.Surface,System.String,SharpDX.Direct3D9.ImageFileFormat,SharpDX.Rectangle,SharpDX.Direct3D9.PaletteEntry[])\">\n            <summary>\n            Saves a surface to a file.\n            </summary>\n            <param name=\"surface\">The surface.</param>\n            <param name=\"fileName\">Name of the file.</param>\n            <param name=\"format\">The format.</param>\n            <param name=\"rectangle\">The rectangle.</param>\n            <param name=\"palette\">The palette.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT D3DXSaveSurfaceToFileW([In] const wchar_t* pDestFile,[In] D3DXIMAGE_FILEFORMAT DestFormat,[In] IDirect3DSurface9* pSrcSurface,[In, Buffer] const PALETTEENTRY* pSrcPalette,[In] const void* pSrcRect)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Surface.ToStream(SharpDX.Direct3D9.Surface,SharpDX.Direct3D9.ImageFileFormat)\">\n            <summary>\n            Saves a surface to a stream.\n            </summary>\n            <param name=\"surface\">The surface.</param>\n            <param name=\"format\">The format.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT D3DXSaveSurfaceToFileInMemory([In] ID3DXBuffer** ppDestBuf,[In] D3DXIMAGE_FILEFORMAT DestFormat,[In] IDirect3DSurface9* pSrcSurface,[In, Buffer] const PALETTEENTRY* pSrcPalette,[In] const void* pSrcRect)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Surface.ToStream(SharpDX.Direct3D9.Surface,SharpDX.Direct3D9.ImageFileFormat,SharpDX.Rectangle)\">\n            <summary>\n            Saves a surface to a stream.\n            </summary>\n            <param name=\"surface\">The surface.</param>\n            <param name=\"format\">The format.</param>\n            <param name=\"rectangle\">The rectangle.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT D3DXSaveSurfaceToFileInMemory([In] ID3DXBuffer** ppDestBuf,[In] D3DXIMAGE_FILEFORMAT DestFormat,[In] IDirect3DSurface9* pSrcSurface,[In, Buffer] const PALETTEENTRY* pSrcPalette,[In] const void* pSrcRect)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Surface.ToStream(SharpDX.Direct3D9.Surface,SharpDX.Direct3D9.ImageFileFormat,SharpDX.Rectangle,SharpDX.Direct3D9.PaletteEntry[])\">\n            <summary>\n            Saves a surface to a stream.\n            </summary>\n            <param name=\"surface\">The surface.</param>\n            <param name=\"format\">The format.</param>\n            <param name=\"rectangle\">The rectangle.</param>\n            <param name=\"palette\">The palette.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT D3DXSaveSurfaceToFileInMemory([In] ID3DXBuffer** ppDestBuf,[In] D3DXIMAGE_FILEFORMAT DestFormat,[In] IDirect3DSurface9* pSrcSurface,[In, Buffer] const PALETTEENTRY* pSrcPalette,[In] const void* pSrcRect)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.Surface.Description\">\n            <summary>\t\n            <p>Retrieves a description of the surface.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DSurface9::GetDesc']/*\"/>\t\n            <msdn-id>bb205895</msdn-id>\t\n            <unmanaged>GetDesc</unmanaged>\t\n            <unmanaged-short>GetDesc</unmanaged-short>\t\n            <unmanaged>HRESULT IDirect3DSurface9::GetDesc([Out] D3DSURFACE_DESC* pDesc)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.SwapChain\">\n            <summary>\t\n            <p>Applications use the methods of the <see cref=\"T:SharpDX.Direct3D9.SwapChain\"/> interface to manipulate a swap chain.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>There is always at least one swap chain for each device, known as the implicit swap chain. However, an additional swap chain for rendering multiple views from the same device can be created by calling the <strong><see cref=\"M:SharpDX.Direct3D9.Device.CreateAdditionalSwapChain(SharpDX.Direct3D9.PresentParameters@,SharpDX.Direct3D9.SwapChain)\"/></strong> method.</p><p>This interface, like all COM interfaces, inherits from the <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interface.</p><p>The LPDIRECT3DSWAPCHAIN9 and PDIRECT3DSWAPCHAIN9 types are defined as references to the <strong><see cref=\"T:SharpDX.Direct3D9.SwapChain\"/></strong> interface.  </p><pre><code> typedef struct <see cref=\"T:SharpDX.Direct3D9.SwapChain\"/> *LPDIRECT3DSWAPCHAIN9, *PDIRECT3DSWAPCHAIN9;\t\n            </code></pre><p>Note the application should ensure that its associated device window is visible when its swapchain(s) is in fullscreen mode. Invisible windows cannot receive user mode events and invisible fullscreen windows will interfere with other windowed mode applications' presentation.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DSwapChain9']/*\"/>\t\n            <msdn-id>bb205899</msdn-id>\t\n            <unmanaged>IDirect3DSwapChain9</unmanaged>\t\n            <unmanaged-short>IDirect3DSwapChain9</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.SwapChain.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D9.SwapChain\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.SwapChain.op_Explicit(System.IntPtr)~SharpDX.Direct3D9.SwapChain\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D9.SwapChain\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.SwapChain.Present(System.IntPtr,System.IntPtr,System.IntPtr,System.IntPtr,System.Int32)\">\n            <summary>\t\n            <p>Presents the contents of the next buffer in the sequence of back buffers owned by the swap chain.</p>\t\n            </summary>\t\n            <param name=\"sourceRectRef\"><dd>  <p>Pointer to the source rectangle (see <strong><see cref=\"T:SharpDX.Rectangle\"/></strong>). Use <strong><c>null</c></strong> to present the entire surface. This value must be <strong><c>null</c></strong> unless the swap chain was created with <see cref=\"F:SharpDX.Direct3D9.SwapEffect.Copy\"/>. If the rectangle exceeds the source surface, the rectangle is clipped to the source surface. </p> </dd></param>\t\n            <param name=\"destRectRef\"><dd>  <p>Pointer to the destination rectangle in client coordinates (see <strong><see cref=\"T:SharpDX.Rectangle\"/></strong>). This value must be <strong><c>null</c></strong> unless the swap chain was created with <see cref=\"F:SharpDX.Direct3D9.SwapEffect.Copy\"/>. Use <strong><c>null</c></strong> to fill the entire client area. If the rectangle exceeds the destination client area, the rectangle is clipped to the destination client area. </p> </dd></param>\t\n            <param name=\"hDestWindowOverride\"><dd>  <p>Destination window whose client area is taken as the target for this presentation. If this value is <strong><c>null</c></strong>, the <strong>hWndDeviceWindow</strong> member of <strong><see cref=\"T:SharpDX.Direct3D9.PresentParameters\"/></strong> is taken. </p> </dd></param>\t\n            <param name=\"dirtyRegionRef\"><dd>  <p>This value must be <strong><c>null</c></strong> unless the swap chain was created with <strong><see cref=\"F:SharpDX.Direct3D9.SwapEffect.Copy\"/></strong>. See Flipping Surfaces (Direct3D 9). If this value is non-<strong><c>null</c></strong>, the contained region is expressed in back buffer coordinates. The rectangles within the region are the minimal set of pixels that need to be updated. This method takes these rectangles into account when optimizing the presentation by copying only the pixels within the region, or some suitably expanded set of rectangles. This is an aid to optimization only, and the application should not rely on the region being copied exactly. The implementation may choose to copy the whole source rectangle.</p> </dd></param>\t\n            <param name=\"dwFlags\"><dd>  <p>Allows the application to request that the method return immediately when the driver reports that it cannot schedule a presentation. Valid values are 0, or any combination of <see cref=\"F:SharpDX.Direct3D9.Present.DoNotWait\"/> or <see cref=\"F:SharpDX.Direct3D9.Present.LinearContent\"/>. </p> <ul> <li>If dwFlags = 0, this method behaves as it did prior to Direct3D 9. Present will spin until the hardware is free, without returning an error.</li> <li>If dwFlags = <see cref=\"F:SharpDX.Direct3D9.Present.DoNotWait\"/>, and the hardware is busy processing or waiting for a vertical sync interval, the method will return <see cref=\"F:SharpDX.Direct3D9.ResultCode.WasStillDrawing\"/>.</li> <li>If dwFlags = <see cref=\"F:SharpDX.Direct3D9.Present.LinearContent\"/>, gamma correction is performed from linear space to sRGB for windowed swap chains. This flag will take effect only when the driver exposes <see cref=\"F:SharpDX.Direct3D9.Caps3.LinearToSrgbPresentation\"/> (see Gamma (Direct3D 9)). Appliations should specify this flag if the backbuffer format is 16-bit floating point in order to match windowed mode present to fullscreen gamma behavior.</li> </ul> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.DeviceLost\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.DriverInternalError\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.OutOfVideoMemory\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>The <strong>Present</strong> method is a shortcut to Present. Present has been updated to take a flag allowing the application to request that the method return immediately when the driver reports that it cannot schedule a presentation.</p><p>If necessary, a stretch operation is applied to transfer the pixels within the source rectangle to the destination rectangle in the client area of the target window.</p><p>Present will fail if called between <strong>BeginScene</strong> and <strong>EndScene</strong> pairs unless the render target is not the current render target (such as the back buffer you get from creating an additional swap chain). This is a new behavior for Direct3D 9.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DSwapChain9::Present']/*\"/>\t\n            <msdn-id>bb205908</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DSwapChain9::Present([In, Optional] const void* pSourceRect,[InOut, Optional] const void* pDestRect,[In] HWND hDestWindowOverride,[In] const RGNDATA* pDirtyRegion,[In] unsigned int dwFlags)</unmanaged>\t\n            <unmanaged-short>IDirect3DSwapChain9::Present</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.SwapChain.GetFrontBufferData(SharpDX.Direct3D9.Surface)\">\n            <summary>\t\n            <p>Generates a copy of the swapchain's front buffer and places that copy in a system memory buffer provided by the application.</p>\t\n            </summary>\t\n            <param name=\"destSurfaceRef\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D9.Surface\"/></strong> interface that will receive a copy of the swapchain's front buffer. The data is returned in successive rows with no intervening space, starting from the vertically highest row to the lowest.  For windowed mode, the size of the destination surface should be the size of the desktop. For full screen mode, the size of the destination surface should be the screen size. </p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If BackBuffer exceeds or equals the total number of back buffers, the function fails and returns <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.  </p></returns>\t\n            <remarks>\t\n            <p>Calling this method will increase the internal reference count on the <strong><see cref=\"T:SharpDX.Direct3D9.Surface\"/></strong> interface. Failure to call <strong>IUnknown::Release</strong> when finished using this <strong><see cref=\"T:SharpDX.Direct3D9.Surface\"/></strong> interface results in a memory leak.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DSwapChain9::GetFrontBufferData']/*\"/>\t\n            <msdn-id>bb205905</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DSwapChain9::GetFrontBufferData([In] IDirect3DSurface9* pDestSurface)</unmanaged>\t\n            <unmanaged-short>IDirect3DSwapChain9::GetFrontBufferData</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.SwapChain.GetBackBuffer(System.Int32,SharpDX.Direct3D9.BackBufferType)\">\n            <summary>\t\n            <p>Retrieves a back buffer from the swap chain of the device.</p>\t\n            </summary>\t\n            <param name=\"iBackBuffer\"><dd>  <p>Index of the back buffer object to return. Back buffers are numbered from 0 to the total number of back buffers - 1. A value of 0 returns the first back buffer, not the front buffer. The front buffer is not accessible through this method. Use <strong><see cref=\"M:SharpDX.Direct3D9.SwapChain.GetFrontBufferData(SharpDX.Direct3D9.Surface)\"/></strong> to retrieve a copy of the front buffer.</p> </dd></param>\t\n            <param name=\"type\"><dd>  <p>Stereo view is not supported in Direct3D 9, so the only valid value for this parameter is <see cref=\"F:SharpDX.Direct3D9.BackBufferType.Mono\"/>. </p> </dd></param>\t\n            <returns><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D9.Surface\"/></strong> interface, representing the returned back buffer surface. </p> </dd></returns>\t\n            <remarks>\t\n            <p>Calling this method will increase the internal reference count on the <strong><see cref=\"T:SharpDX.Direct3D9.Surface\"/></strong> interface. Failure to call <strong>IUnknown::Release</strong> when finished using this <strong><see cref=\"T:SharpDX.Direct3D9.Surface\"/></strong> interface results in a memory leak. You must release any surfaces obtained through this method before releasing the swap chain it belongs to.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DSwapChain9::GetBackBuffer']/*\"/>\t\n            <msdn-id>bb205902</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DSwapChain9::GetBackBuffer([In] unsigned int iBackBuffer,[In] D3DBACKBUFFER_TYPE Type,[Out] IDirect3DSurface9** ppBackBuffer)</unmanaged>\t\n            <unmanaged-short>IDirect3DSwapChain9::GetBackBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.SwapChain.GetRasterStatus(SharpDX.Direct3D9.RasterStatus@)\">\n            <summary>\t\n            <p>Returns information describing the raster of the monitor on which the swap chain is presented.</p>\t\n            </summary>\t\n            <param name=\"rasterStatusRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.RasterStatus\"/></strong> structure filled with information about the position or other status of the raster on the monitor driven by this adapter. </p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/> is returned if pRasterStatus is invalid or if the device does not support reading the current scan line. To determine if the device supports reading the scan line, check for the <see cref=\"F:SharpDX.Direct3D9.Caps.ReadScanline\"/> flag in the Caps member of <strong><see cref=\"T:SharpDX.Direct3D9.Capabilities\"/></strong>. </p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DSwapChain9::GetRasterStatus']/*\"/>\t\n            <msdn-id>bb205907</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DSwapChain9::GetRasterStatus([Out] D3DRASTER_STATUS* pRasterStatus)</unmanaged>\t\n            <unmanaged-short>IDirect3DSwapChain9::GetRasterStatus</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.SwapChain.GetDisplayMode(SharpDX.Direct3D9.DisplayMode@)\">\n            <summary>\t\n            <p>Retrieves the display mode's spatial resolution, color resolution, and refresh frequency.</p>\t\n            </summary>\t\n            <param name=\"modeRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.DisplayMode\"/></strong> structure containing data about the display mode of the adapter. As opposed to the display mode of the device, which may not be active if the device does not own full-screen mode. </p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>. </p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DSwapChain9::GetDisplayMode']/*\"/>\t\n            <msdn-id>bb205904</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DSwapChain9::GetDisplayMode([Out] D3DDISPLAYMODE* pMode)</unmanaged>\t\n            <unmanaged-short>IDirect3DSwapChain9::GetDisplayMode</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.SwapChain.GetDevice(SharpDX.Direct3D9.Device@)\">\n            <summary>\t\n            <p>Retrieves the device associated with the swap chain.</p>\t\n            </summary>\t\n            <param name=\"deviceOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface to fill with the device reference, if the query succeeds. </p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>. </p></returns>\t\n            <remarks>\t\n            <p>This method allows navigation to the owning device object.</p><p>Calling this method will increase the internal reference count on the <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface. Failure to call <strong>IUnknown::Release</strong> when finished using this <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface results in a memory leak.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DSwapChain9::GetDevice']/*\"/>\t\n            <msdn-id>bb205903</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DSwapChain9::GetDevice([Out] IDirect3DDevice9** ppDevice)</unmanaged>\t\n            <unmanaged-short>IDirect3DSwapChain9::GetDevice</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.SwapChain.GetPresentParameters(SharpDX.Direct3D9.PresentParameters@)\">\n            <summary>\t\n            <p>Retrieves the presentation parameters associated with a swap chain.</p>\t\n            </summary>\t\n            <param name=\"presentationParametersRef\"><dd>  <p>Pointer to the presentation parameters. See <strong><see cref=\"T:SharpDX.Direct3D9.PresentParameters\"/></strong>.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>. </p></returns>\t\n            <remarks>\t\n            <p>This method can be used to see the presentation parameters of the parent swap chain of a surface (a back buffer, for instance). The parent swap chain can be retrieved with <strong><see cref=\"M:SharpDX.Direct3D9.Surface.GetContainer(System.Guid,System.IntPtr@)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DSwapChain9::GetPresentParameters']/*\"/>\t\n            <msdn-id>bb205906</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DSwapChain9::GetPresentParameters([Out] D3DPRESENT_PARAMETERS* pPresentationParameters)</unmanaged>\t\n            <unmanaged-short>IDirect3DSwapChain9::GetPresentParameters</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.SwapChain.#ctor(SharpDX.Direct3D9.Device,SharpDX.Direct3D9.PresentParameters)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D9.SwapChain\"/> class.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"presentParameters\">The present parameters.</param>\n            <unmanaged>HRESULT IDirect3DDevice9::CreateAdditionalSwapChain([In] D3DPRESENT_PARAMETERS* pPresentationParameters,[In] IDirect3DSwapChain9** pSwapChain)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.SwapChain.GetBackBuffer(System.Int32)\">\n            <summary>\n            Retrieves a back buffer from the swap chain of the device.\n            </summary>\n            <param name=\"iBackBuffer\">The i back buffer.</param>\n            <returns>The back buffer from the swap chain of the device.</returns>\n            <unmanaged>HRESULT IDirect3DSwapChain9::GetBackBuffer([In] unsigned int iBackBuffer,[In] D3DBACKBUFFER_TYPE Type,[Out] IDirect3DSurface9** ppBackBuffer)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.SwapChain.Present(SharpDX.Direct3D9.Present)\">\n            <summary>\n            Presents the contents of the next buffer in the sequence of back buffers to the screen.\n            </summary>\n            <param name=\"presentFlags\">The present flags.</param>\n            <unmanaged>HRESULT IDirect3DSwapChain9::Present([In, Optional] const void* pSourceRect,[InOut, Optional] const void* pDestRect,[In] HWND hDestWindowOverride,[In] const RGNDATA* pDirtyRegion,[In] unsigned int dwFlags)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.SwapChain.Present(SharpDX.Direct3D9.Present,SharpDX.Rectangle,SharpDX.Rectangle)\">\n            <summary>\n            Presents the contents of the next buffer in the sequence of back buffers to the screen.\n            </summary>\n            <param name=\"presentFlags\">The present flags.</param>\n            <param name=\"sourceRectangle\">The area of the back buffer that should be presented.</param>\n            <param name=\"destinationRectangle\">The area of the front buffer that should receive the result of the presentation.</param>\n            <unmanaged>HRESULT IDirect3DSwapChain9::Present([In, Optional] const void* pSourceRect,[InOut, Optional] const void* pDestRect,[In] HWND hDestWindowOverride,[In] const RGNDATA* pDirtyRegion,[In] unsigned int dwFlags)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.SwapChain.Present(SharpDX.Direct3D9.Present,SharpDX.Rectangle,SharpDX.Rectangle,System.IntPtr)\">\n            <summary>\n            Presents the contents of the next buffer in the sequence of back buffers to the screen.\n            </summary>\n            <param name=\"presentFlags\">The present flags.</param>\n            <param name=\"sourceRectangle\">The area of the back buffer that should be presented.</param>\n            <param name=\"destinationRectangle\">The area of the front buffer that should receive the result of the presentation.</param>\n            <param name=\"windowOverride\">The destination window whose client area is taken as the target for this presentation.</param>\n            <unmanaged>HRESULT IDirect3DSwapChain9::Present([In, Optional] const void* pSourceRect,[InOut, Optional] const void* pDestRect,[In] HWND hDestWindowOverride,[In] const RGNDATA* pDirtyRegion,[In] unsigned int dwFlags)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.SwapChain.Present(SharpDX.Direct3D9.Present,SharpDX.Rectangle,SharpDX.Rectangle,System.IntPtr,System.Drawing.Region)\">\n            <summary>\n            Presents the contents of the next buffer in the sequence of back buffers to the screen.\n            </summary>\n            <param name=\"flags\">The flags.</param>\n            <param name=\"sourceRectangle\">The area of the back buffer that should be presented.</param>\n            <param name=\"destinationRectangle\">The area of the front buffer that should receive the result of the presentation.</param>\n            <param name=\"windowOverride\">The destination window whose client area is taken as the target for this presentation.</param>\n            <param name=\"region\">Specifies a region on the back buffer that contains the minimal amount of pixels that need to be updated.</param>\n            <unmanaged>HRESULT IDirect3DSwapChain9::Present([In, Optional] const void* pSourceRect,[InOut, Optional] const void* pDestRect,[In] HWND hDestWindowOverride,[In] const RGNDATA* pDirtyRegion,[In] unsigned int dwFlags)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.SwapChain.RasterStatus\">\n            <summary>\t\n            <p>Returns information describing the raster of the monitor on which the swap chain is presented.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DSwapChain9::GetRasterStatus']/*\"/>\t\n            <msdn-id>bb205907</msdn-id>\t\n            <unmanaged>GetRasterStatus</unmanaged>\t\n            <unmanaged-short>GetRasterStatus</unmanaged-short>\t\n            <unmanaged>HRESULT IDirect3DSwapChain9::GetRasterStatus([Out] D3DRASTER_STATUS* pRasterStatus)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.SwapChain.DisplayMode\">\n            <summary>\t\n            <p>Retrieves the display mode's spatial resolution, color resolution, and refresh frequency.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DSwapChain9::GetDisplayMode']/*\"/>\t\n            <msdn-id>bb205904</msdn-id>\t\n            <unmanaged>GetDisplayMode</unmanaged>\t\n            <unmanaged-short>GetDisplayMode</unmanaged-short>\t\n            <unmanaged>HRESULT IDirect3DSwapChain9::GetDisplayMode([Out] D3DDISPLAYMODE* pMode)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.SwapChain.Device\">\n            <summary>\t\n            <p>Retrieves the device associated with the swap chain.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This method allows navigation to the owning device object.</p><p>Calling this method will increase the internal reference count on the <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface. Failure to call <strong>IUnknown::Release</strong> when finished using this <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface results in a memory leak.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DSwapChain9::GetDevice']/*\"/>\t\n            <msdn-id>bb205903</msdn-id>\t\n            <unmanaged>GetDevice</unmanaged>\t\n            <unmanaged-short>GetDevice</unmanaged-short>\t\n            <unmanaged>HRESULT IDirect3DSwapChain9::GetDevice([Out] IDirect3DDevice9** ppDevice)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.SwapChain.PresentParameters\">\n            <summary>\t\n            <p>Retrieves the presentation parameters associated with a swap chain.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This method can be used to see the presentation parameters of the parent swap chain of a surface (a back buffer, for instance). The parent swap chain can be retrieved with <strong><see cref=\"M:SharpDX.Direct3D9.Surface.GetContainer(System.Guid,System.IntPtr@)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DSwapChain9::GetPresentParameters']/*\"/>\t\n            <msdn-id>bb205906</msdn-id>\t\n            <unmanaged>GetPresentParameters</unmanaged>\t\n            <unmanaged-short>GetPresentParameters</unmanaged-short>\t\n            <unmanaged>HRESULT IDirect3DSwapChain9::GetPresentParameters([Out] D3DPRESENT_PARAMETERS* pPresentationParameters)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.SwapChain9Ex\">\n            <summary>\t\n            <p>Applications use the methods of the <strong><see cref=\"T:SharpDX.Direct3D9.SwapChain9Ex\"/></strong> interface to manipulate a swap chain.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>There is always at least one swap chain for each device, known as the implicit swap chain. However, an additional swap chain for rendering multiple views from the same device can be created by calling the <strong>CreateAdditionalSwapChain</strong> method.</p><p>This interface, like all COM interfaces, inherits from the <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interface.</p><p>The <strong>LPDIRECT3DSWAPCHAIN9</strong> and <strong>PDIRECT3DSWAPCHAIN9</strong> types are defined as references to the <strong><see cref=\"T:SharpDX.Direct3D9.SwapChain\"/></strong> interface.</p><p><strong><see cref=\"T:SharpDX.Direct3D9.SwapChain9Ex\"/></strong> objects are returned as a reference to an <strong><see cref=\"T:SharpDX.Direct3D9.SwapChain\"/></strong> object when <strong>GetSwapChain</strong> is called on an instance of <strong><see cref=\"T:SharpDX.Direct3D9.DeviceEx\"/></strong>.\t\n            The <strong><see cref=\"T:SharpDX.Direct3D9.SwapChain9Ex\"/></strong> interface is obtained by calling <strong>QueryInterface</strong> on the instance of <strong><see cref=\"T:SharpDX.Direct3D9.SwapChain\"/></strong> that was returned by <strong>GetSwapChain</strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DSwapChain9Ex']/*\"/>\t\n            <msdn-id>bb172503</msdn-id>\t\n            <unmanaged>IDirect3DSwapChain9Ex</unmanaged>\t\n            <unmanaged-short>IDirect3DSwapChain9Ex</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.SwapChain9Ex.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D9.SwapChain9Ex\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.SwapChain9Ex.op_Explicit(System.IntPtr)~SharpDX.Direct3D9.SwapChain9Ex\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D9.SwapChain9Ex\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.SwapChain9Ex.GetLastPresentCount(System.Int32@)\">\n            <summary>\t\n            <p>Returns the number of times the swapchain has been processed.</p>\t\n            </summary>\t\n            <param name=\"lastPresentCountRef\"><dd>  <p>Pointer to a UINT to be filled with the number of times the <strong><see cref=\"M:SharpDX.Direct3D9.DeviceEx.PresentEx(SharpDX.Direct3D9.Present)\"/></strong> method has been called. The count will also be incremented by calling some other APIs such as <strong><see cref=\"M:SharpDX.Direct3D9.Device.SetDialogBoxMode(SharpDX.Bool)\"/></strong>.</p> </dd></param>\t\n            <returns><p><see cref=\"F:SharpDX.Result.Ok\"/> the method was successful.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DSwapChain9Ex::GetLastPresentCount']/*\"/>\t\n            <msdn-id>bb205900</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DSwapChain9Ex::GetLastPresentCount([Out] unsigned int* pLastPresentCount)</unmanaged>\t\n            <unmanaged-short>IDirect3DSwapChain9Ex::GetLastPresentCount</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.SwapChain9Ex.GetPresentStats(SharpDX.Direct3D9.PresentationStatistics@)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"presentationStatisticsRef\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DSwapChain9Ex::GetPresentStats']/*\"/>\t\n            <unmanaged>HRESULT IDirect3DSwapChain9Ex::GetPresentStats([Out] D3DPRESENTSTATS* pPresentationStatistics)</unmanaged>\t\n            <unmanaged-short>IDirect3DSwapChain9Ex::GetPresentStats</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.SwapChain9Ex.GetDisplayModeEx(SharpDX.Direct3D9.DisplayModeEx@,SharpDX.Direct3D9.DisplayRotation@)\">\n            <summary>\t\n            <p>Retrieves the display mode's spatial resolution, color resolution, refresh frequency, and rotation settings.</p>\t\n            </summary>\t\n            <param name=\"modeRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.DisplayModeEx\"/></strong> structure containing data about the display mode of the adapter. As opposed to the display mode of the device, which may not be active if the device does not own full-screen mode. </p> </dd></param>\t\n            <param name=\"rotationRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.DisplayRotation\"/></strong> indicating the type of screen rotation the application will do. The value returned through this reference is important when the <see cref=\"F:SharpDX.Direct3D9.PresentFlags.NoAutoRotate\"/> flag is used; otherwise, it can be set to <strong><c>null</c></strong>.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DSwapChain9Ex::GetDisplayModeEx']/*\"/>\t\n            <msdn-id>bb509715</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DSwapChain9Ex::GetDisplayModeEx([Out] D3DDISPLAYMODEEX* pMode,[Out] D3DDISPLAYROTATION* pRotation)</unmanaged>\t\n            <unmanaged-short>IDirect3DSwapChain9Ex::GetDisplayModeEx</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.SwapChain9Ex.LastPresentCount\">\n            <summary>\t\n            <p>Returns the number of times the swapchain has been processed.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DSwapChain9Ex::GetLastPresentCount']/*\"/>\t\n            <msdn-id>bb205900</msdn-id>\t\n            <unmanaged>GetLastPresentCount</unmanaged>\t\n            <unmanaged-short>GetLastPresentCount</unmanaged-short>\t\n            <unmanaged>HRESULT IDirect3DSwapChain9Ex::GetLastPresentCount([Out] unsigned int* pLastPresentCount)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.SwapChain9Ex.PresentStats\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DSwapChain9Ex::GetPresentStats']/*\"/>\t\n            <unmanaged>GetPresentStats</unmanaged>\t\n            <unmanaged-short>GetPresentStats</unmanaged-short>\t\n            <unmanaged>HRESULT IDirect3DSwapChain9Ex::GetPresentStats([Out] D3DPRESENTSTATS* pPresentationStatistics)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.Texture\">\n            <summary>\t\n            <p>Applications use the methods of the <see cref=\"T:SharpDX.Direct3D9.Texture\"/> interface to manipulate a texture resource.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The <strong><see cref=\"T:SharpDX.Direct3D9.Texture\"/></strong> interface can be obtained by calling the <strong><see cref=\"M:SharpDX.Direct3D9.Device.CreateTexture(System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,SharpDX.Direct3D9.Texture,System.IntPtr)\"/></strong> method or one of the <see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateTexture(SharpDX.Direct3D9.Device,System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,SharpDX.Direct3D9.Texture@)\"/><em>xxx</em> functions.</p><p>This interface inherits additional functionality from the <strong><see cref=\"T:SharpDX.Direct3D9.BaseTexture\"/></strong> interface.</p><p>This interface, like all COM interfaces, inherits from the <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interface.</p><p>The LPDIRECT3DTEXTURE9 and PDIRECT3DTEXTURE9 types are defined as references to the <strong><see cref=\"T:SharpDX.Direct3D9.Texture\"/></strong> interface. </p><pre><code> typedef struct <see cref=\"T:SharpDX.Direct3D9.Texture\"/> *LPDIRECT3DTEXTURE9, *PDIRECT3DTEXTURE9;\t\n            </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DTexture9']/*\"/>\t\n            <msdn-id>bb205909</msdn-id>\t\n            <unmanaged>IDirect3DTexture9</unmanaged>\t\n            <unmanaged-short>IDirect3DTexture9</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Texture.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D9.Texture\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Texture.op_Explicit(System.IntPtr)~SharpDX.Direct3D9.Texture\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D9.Texture\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Texture.GetLevelDescription(System.Int32)\">\n            <summary>\t\n            <p>Retrieves a level description of a texture resource.</p>\t\n            </summary>\t\n            <param name=\"level\"><dd>  <p>Identifies a level of the texture resource. This method returns a surface description for the level specified by this parameter. </p> </dd></param>\t\n            <returns><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.SurfaceDescription\"/></strong> structure, describing the returned level. </p> </dd></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DTexture9::GetLevelDesc']/*\"/>\t\n            <msdn-id>bb205911</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DTexture9::GetLevelDesc([In] unsigned int Level,[Out] D3DSURFACE_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>IDirect3DTexture9::GetLevelDesc</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Texture.GetSurfaceLevel(System.Int32)\">\n            <summary>\t\n            <p>Retrieves the specified texture surface level.</p>\t\n            </summary>\t\n            <param name=\"level\"><dd>  <p>Identifies a level of the texture resource. This method returns a surface for the level specified by this parameter. The top-level surface is denoted by 0. </p> </dd></param>\t\n            <returns><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D9.Surface\"/></strong> interface, representing the returned surface. </p> </dd></returns>\t\n            <remarks>\t\n            <p>Calling this method will increase the internal reference count on the <strong><see cref=\"T:SharpDX.Direct3D9.Surface\"/></strong> interface. Failure to call <strong>IUnknown::Release</strong> when finished using this <strong><see cref=\"T:SharpDX.Direct3D9.Surface\"/></strong> interface results in a memory leak.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DTexture9::GetSurfaceLevel']/*\"/>\t\n            <msdn-id>bb205912</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DTexture9::GetSurfaceLevel([In] unsigned int Level,[Out] IDirect3DSurface9** ppSurfaceLevel)</unmanaged>\t\n            <unmanaged-short>IDirect3DTexture9::GetSurfaceLevel</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Texture.LockRectangle(System.Int32,SharpDX.Direct3D9.LockedRectangle@,System.IntPtr,SharpDX.Direct3D9.LockFlags)\">\n            <summary>\t\n            <p>Locks a rectangle on a texture resource.</p>\t\n            </summary>\t\n            <param name=\"level\"><dd>  <p>Specifies the level of the texture resource to lock. </p> </dd></param>\t\n            <param name=\"lockedRectRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.LockedRectangle\"/></strong> structure, describing the locked region. </p> </dd></param>\t\n            <param name=\"rectRef\"><dd>  <p>Pointer to a rectangle to lock. Specified by a reference to a <see cref=\"T:SharpDX.Rectangle\"/> structure. Specifying <strong><c>null</c></strong> for this parameter expands the dirty region to cover the entire texture. </p> </dd></param>\t\n            <param name=\"flags\"><dd>  <p>Combination of zero or more locking flags that describe the type of lock to perform. For this method, the valid flags are:  </p> <ul> <li><see cref=\"F:SharpDX.Direct3D9.LockFlags.Discard\"/></li> <li><see cref=\"F:SharpDX.Direct3D9.LockFlags.NoDirtyUpdate\"/></li> <li><see cref=\"F:SharpDX.Direct3D9.LockFlags.NoSystemLock\"/></li> <li><see cref=\"F:SharpDX.Direct3D9.LockFlags.ReadOnly\"/></li> </ul> <p> You may not specify a subrect when using <see cref=\"F:SharpDX.Direct3D9.LockFlags.Discard\"/>. For a description of the flags, see <see cref=\"T:SharpDX.Direct3D9.LockFlags\"/>. </p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>. </p></returns>\t\n            <remarks>\t\n            <p>Textures created with <see cref=\"F:SharpDX.Direct3D9.Pool.Default\"/> are not lockable. Textures created in video memory are lockable when created with <strong>USAGE_DYNAMIC</strong>.</p><p>For performance reasons, dirty regions are recorded only for level zero of a texture. Dirty regions are automatically recorded when <strong><see cref=\"M:SharpDX.Direct3D9.Texture.LockRectangle(System.Int32,SharpDX.Direct3D9.LockedRectangle@,System.IntPtr,SharpDX.Direct3D9.LockFlags)\"/></strong> is called without <see cref=\"F:SharpDX.Direct3D9.LockFlags.NoDirtyUpdate\"/> or <see cref=\"F:SharpDX.Direct3D9.LockFlags.ReadOnly\"/>. See <strong><see cref=\"M:SharpDX.Direct3D9.Device.UpdateTexture(SharpDX.Direct3D9.BaseTexture,SharpDX.Direct3D9.BaseTexture)\"/></strong> for more information.</p><p>The only lockable format for a depth-stencil texture is D3DLOCK_D16_LOCKABLE.</p><p>Video memory textures cannot be locked, but must be modified by calling <strong><see cref=\"M:SharpDX.Direct3D9.Device.UpdateSurface(SharpDX.Direct3D9.Surface,SharpDX.Direct3D9.Surface)\"/></strong> or <strong><see cref=\"M:SharpDX.Direct3D9.Device.UpdateTexture(SharpDX.Direct3D9.BaseTexture,SharpDX.Direct3D9.BaseTexture)\"/></strong>. There are exceptions for some proprietary driver pixel formats that Direct3D 9 does not recognize. These can be locked.</p><p>This method cannot retrieve data from a texture resource created with <strong><see cref=\"F:SharpDX.Direct3D9.Usage.RenderTarget\"/></strong> because such a texture must be assigned to <see cref=\"F:SharpDX.Direct3D9.Pool.Default\"/> memory and is therefore not lockable. In this case, use instead <strong><see cref=\"M:SharpDX.Direct3D9.Device.GetRenderTargetData(SharpDX.Direct3D9.Surface,SharpDX.Direct3D9.Surface)\"/></strong> to copy texture data from device memory to system memory.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DTexture9::LockRect']/*\"/>\t\n            <msdn-id>bb205913</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DTexture9::LockRect([In] unsigned int Level,[Out] D3DLOCKED_RECT* pLockedRect,[In] const void* pRect,[In] D3DLOCK Flags)</unmanaged>\t\n            <unmanaged-short>IDirect3DTexture9::LockRect</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Texture.UnlockRectangle(System.Int32)\">\n            <summary>\t\n            <p>Unlocks a rectangle on a texture resource.</p>\t\n            </summary>\t\n            <param name=\"level\"><dd>  <p>Specifies the level of the texture resource to unlock. </p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>. </p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DTexture9::UnlockRect']/*\"/>\t\n            <msdn-id>bb205914</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DTexture9::UnlockRect([In] unsigned int Level)</unmanaged>\t\n            <unmanaged-short>IDirect3DTexture9::UnlockRect</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Texture.AddDirtyRectangle(System.IntPtr)\">\n            <summary>\t\n            <p>Adds a dirty region to a texture resource.</p>\t\n            </summary>\t\n            <param name=\"dirtyRectRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Rectangle\"/></strong> structure, specifying the dirty region to add. Specifying <strong><c>null</c></strong> expands the dirty region to cover the entire texture. </p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>. </p></returns>\t\n            <remarks>\t\n            <p>For performance reasons, dirty regions are only recorded for level zero of a texture. For sublevels, it is assumed that the corresponding (scaled) rectangle or box is also dirty. Dirty regions are automatically recorded when <strong><see cref=\"M:SharpDX.Direct3D9.Texture.LockRectangle(System.Int32,SharpDX.Direct3D9.LockedRectangle@,System.IntPtr,SharpDX.Direct3D9.LockFlags)\"/></strong> is called without <see cref=\"F:SharpDX.Direct3D9.LockFlags.NoDirtyUpdate\"/> or <see cref=\"F:SharpDX.Direct3D9.LockFlags.ReadOnly\"/>. The destination surface of <strong><see cref=\"M:SharpDX.Direct3D9.Device.UpdateSurface(SharpDX.Direct3D9.Surface,SharpDX.Direct3D9.Surface)\"/></strong> is also marked dirty automatically.</p><p>Using <see cref=\"F:SharpDX.Direct3D9.LockFlags.NoDirtyUpdate\"/> and explicitly specifying dirty regions can be used to increase the efficiency of <strong><see cref=\"M:SharpDX.Direct3D9.Device.UpdateTexture(SharpDX.Direct3D9.BaseTexture,SharpDX.Direct3D9.BaseTexture)\"/></strong>. Using this method, applications can optimize what subset of a resource is copied by specifying dirty regions on the resource. However, the dirty regions may be expanded to optimize alignment.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DTexture9::AddDirtyRect']/*\"/>\t\n            <msdn-id>bb205910</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DTexture9::AddDirtyRect([In] const void* pDirtyRect)</unmanaged>\t\n            <unmanaged-short>IDirect3DTexture9::AddDirtyRect</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Texture.#ctor(SharpDX.Direct3D9.Device,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Usage,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D9.Texture\"/> class.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"width\">The width.</param>\n            <param name=\"height\">The height.</param>\n            <param name=\"levelCount\">The level count.</param>\n            <param name=\"usage\">The usage.</param>\n            <param name=\"format\">The format.</param>\n            <param name=\"pool\">The pool.</param>\n            <unmanaged>HRESULT IDirect3DDevice9::CreateTexture([In] unsigned int Width,[In] unsigned int Height,[In] unsigned int Levels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[Out, Fast] IDirect3DTexture9** ppTexture,[In] void** pSharedHandle)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Texture.#ctor(SharpDX.Direct3D9.Device,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Usage,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,System.IntPtr@)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D9.Texture\"/> class.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"width\">The width.</param>\n            <param name=\"height\">The height.</param>\n            <param name=\"levelCount\">The level count.</param>\n            <param name=\"usage\">The usage.</param>\n            <param name=\"format\">The format.</param>\n            <param name=\"pool\">The pool.</param>\n            <param name=\"sharedHandle\">The shared handle.</param>\n            <unmanaged>HRESULT IDirect3DDevice9::CreateTexture([In] unsigned int Width,[In] unsigned int Height,[In] unsigned int Levels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[Out, Fast] IDirect3DTexture9** ppTexture,[In] void** pSharedHandle)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Texture.CheckRequirements(SharpDX.Direct3D9.Device,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Usage,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool)\">\n            <summary>\n            Checks texture-creation parameters.\n            </summary>\n            <param name=\"device\">Device associated with the texture.</param>\n            <param name=\"width\">The width.</param>\n            <param name=\"height\">The height.</param>\n            <param name=\"mipLevelCount\">Requested number of mipmap levels for the texture.</param>\n            <param name=\"usage\">The requested usage for the texture.</param>\n            <param name=\"format\">Requested format for the texture.</param>\n            <param name=\"pool\">Memory class where the resource will be placed.</param>\n            <returns>\n            A value type containing the proposed values to pass to the texture creation functions.\n            </returns>\n            <unmanaged>HRESULT D3DXCheckTextureRequirements([In] IDirect3DDevice9* pDevice,[InOut] unsigned int* pWidth,[InOut] unsigned int* pHeight,[InOut] unsigned int* pNumMipLevels,[In] unsigned int Usage,[InOut] D3DFORMAT* pFormat,[In] D3DPOOL Pool)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Texture.ComputeNormalMap(SharpDX.Direct3D9.Texture,SharpDX.Direct3D9.Texture,SharpDX.Direct3D9.NormalMapFlags,SharpDX.Direct3D9.Channel,System.Single)\">\n            <summary>\n            Computes the normal map.\n            </summary>\n            <param name=\"texture\">The texture.</param>\n            <param name=\"sourceTexture\">The source texture.</param>\n            <param name=\"flags\">The flags.</param>\n            <param name=\"channel\">The channel.</param>\n            <param name=\"amplitude\">The amplitude.</param>\n            <returns>A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.</returns>\n            <unmanaged>HRESULT D3DXComputeNormalMap([In] IDirect3DTexture9* pTexture,[In] IDirect3DTexture9* pSrcTexture,[Out, Buffer] const PALETTEENTRY* pSrcPalette,[In] unsigned int Flags,[In] unsigned int Channel,[In] float Amplitude)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Texture.ComputeNormalMap(SharpDX.Direct3D9.Texture,SharpDX.Direct3D9.Texture,SharpDX.Direct3D9.PaletteEntry[],SharpDX.Direct3D9.NormalMapFlags,SharpDX.Direct3D9.Channel,System.Single)\">\n            <summary>\n            Computes the normal map.\n            </summary>\n            <param name=\"texture\">The texture.</param>\n            <param name=\"sourceTexture\">The source texture.</param>\n            <param name=\"palette\">The palette.</param>\n            <param name=\"flags\">The flags.</param>\n            <param name=\"channel\">The channel.</param>\n            <param name=\"amplitude\">The amplitude.</param>\n            <returns>A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.</returns>\n            <unmanaged>HRESULT D3DXComputeNormalMap([In] IDirect3DTexture9* pTexture,[In] IDirect3DTexture9* pSrcTexture,[Out, Buffer] const PALETTEENTRY* pSrcPalette,[In] unsigned int Flags,[In] unsigned int Channel,[In] float Amplitude)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Texture.Fill(SharpDX.Direct3D9.Fill2DCallback)\">\n            <summary>\n            Uses a user-provided function to fill each texel of each mip level of a given texture.\n            </summary>\n            <param name=\"callback\">A function that is used to fill the texture.</param>\n            <returns>A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.</returns>\n            <unmanaged>HRESULT D3DXFillTexture([In] IDirect3DTexture9* pTexture,[In] __function__stdcall* pFunction,[In] void* pData)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Texture.Fill(SharpDX.Direct3D9.TextureShader)\">\n            <summary>\n            Uses a compiled high-level shader language (HLSL) function to fill each texel of each mipmap level of a texture.\n            </summary>\n            <param name=\"shader\">A texture shader object that is used to fill the texture.</param>\n            <returns>A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.</returns>\n            <unmanaged>HRESULT D3DXFillTextureTX([In] IDirect3DTexture9* pTexture,[In] ID3DXTextureShader* pTextureShader)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Texture.LockRectangle(System.Int32,SharpDX.Direct3D9.LockFlags)\">\n            <summary>\n            Locks a rectangle on a texture resource.\n            </summary>\n            <param name=\"level\">The level.</param>\n            <param name=\"flags\">The flags.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.DataRectangle\"/> describing the region locked.\n            </returns>\n            <unmanaged>HRESULT IDirect3DTexture9::LockRect([In] unsigned int Level,[Out] D3DLOCKED_RECT* pLockedRect,[In] const void* pRect,[In] D3DLOCK Flags)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Texture.LockRectangle(System.Int32,SharpDX.Direct3D9.LockFlags,SharpDX.DataStream@)\">\n            <summary>\n            Locks a rectangle on a texture resource.\n            </summary>\n            <param name=\"level\">The level.</param>\n            <param name=\"flags\">The flags.</param>\n            <param name=\"stream\">The stream pointing to the locked region.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.DataRectangle\"/> describing the region locked.\n            </returns>\n            <unmanaged>HRESULT IDirect3DTexture9::LockRect([In] unsigned int Level,[Out] D3DLOCKED_RECT* pLockedRect,[In] const void* pRect,[In] D3DLOCK Flags)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Texture.LockRectangle(System.Int32,SharpDX.Rectangle,SharpDX.Direct3D9.LockFlags)\">\n            <summary>\n            Locks a rectangle on a texture resource.\n            </summary>\n            <param name=\"level\">The level.</param>\n            <param name=\"rectangle\">The rectangle.</param>\n            <param name=\"flags\">The flags.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.DataRectangle\"/> describing the region locked.\n            </returns>\n            <unmanaged>HRESULT IDirect3DTexture9::LockRect([In] D3DCUBEMAP_FACES FaceType,[In] unsigned int Level,[In] D3DLOCKED_RECT* pLockedRect,[In] const void* pRect,[In] D3DLOCK Flags)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Texture.LockRectangle(System.Int32,SharpDX.Rectangle,SharpDX.Direct3D9.LockFlags,SharpDX.DataStream@)\">\n            <summary>\n            Locks a rectangle on a texture resource.\n            </summary>\n            <param name=\"level\">The level.</param>\n            <param name=\"rectangle\">The rectangle.</param>\n            <param name=\"flags\">The flags.</param>\n            <param name=\"stream\">The stream pointing to the locked region.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.DataRectangle\"/> describing the region locked.\n            </returns>\n            <unmanaged>HRESULT IDirect3DTexture9::LockRect([In] D3DCUBEMAP_FACES FaceType,[In] unsigned int Level,[In] D3DLOCKED_RECT* pLockedRect,[In] const void* pRect,[In] D3DLOCK Flags)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Texture.AddDirtyRectangle\">\n            <summary>\n            Adds a dirty region to a texture resource.\n            </summary>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT IDirect3DTexture9::AddDirtyRect([In] const void* pDirtyRect)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Texture.AddDirtyRectangle(SharpDX.Rectangle)\">\n            <summary>\n            Adds a dirty region to a texture resource.\n            </summary>\n            <param name=\"dirtyRectRef\">The dirty rect ref.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT IDirect3DTexture9::AddDirtyRect([In] const void* pDirtyRect)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Texture.FromFile(SharpDX.Direct3D9.Device,System.String)\">\n            <summary>\n            Creates a <see cref=\"T:SharpDX.Direct3D9.Texture\"/> from a file\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"filename\">The filename.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Direct3D9.Texture\"/>\n            </returns>\n            <unmanaged>HRESULT D3DXCreateTextureFromFileExW([In] IDirect3DDevice9* pDevice,[In] const wchar_t* pSrcFile,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[In] void* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DTexture9** ppTexture)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Texture.FromFile(SharpDX.Direct3D9.Device,System.String,SharpDX.Direct3D9.Usage,SharpDX.Direct3D9.Pool)\">\n            <summary>\n            Creates a <see cref=\"T:SharpDX.Direct3D9.Texture\"/> from a file\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"filename\">The filename.</param>\n            <param name=\"usage\">The usage.</param>\n            <param name=\"pool\">The pool.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Direct3D9.Texture\"/>\n            </returns>\n            <unmanaged>HRESULT D3DXCreateTextureFromFileExW([In] IDirect3DDevice9* pDevice,[In] const wchar_t* pSrcFile,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[In] void* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DTexture9** ppTexture)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Texture.FromFile(SharpDX.Direct3D9.Device,System.String,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Usage,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,SharpDX.Direct3D9.Filter,SharpDX.Direct3D9.Filter,System.Int32)\">\n            <summary>\n            Creates a <see cref=\"T:SharpDX.Direct3D9.Texture\"/> from a file\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"filename\">The filename.</param>\n            <param name=\"width\">The width.</param>\n            <param name=\"height\">The height.</param>\n            <param name=\"levelCount\">The level count.</param>\n            <param name=\"usage\">The usage.</param>\n            <param name=\"format\">The format.</param>\n            <param name=\"pool\">The pool.</param>\n            <param name=\"filter\">The filter.</param>\n            <param name=\"mipFilter\">The mip filter.</param>\n            <param name=\"colorKey\">The color key.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Direct3D9.Texture\"/>\n            </returns>\n            <unmanaged>HRESULT D3DXCreateTextureFromFileExW([In] IDirect3DDevice9* pDevice,[In] const wchar_t* pSrcFile,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[In] void* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DTexture9** ppTexture)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Texture.FromFile(SharpDX.Direct3D9.Device,System.String,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Usage,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,SharpDX.Direct3D9.Filter,SharpDX.Direct3D9.Filter,System.Int32,SharpDX.Direct3D9.ImageInformation@)\">\n            <summary>\n            Creates a <see cref=\"T:SharpDX.Direct3D9.Texture\"/> from a file\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"filename\">The filename.</param>\n            <param name=\"width\">The width.</param>\n            <param name=\"height\">The height.</param>\n            <param name=\"levelCount\">The level count.</param>\n            <param name=\"usage\">The usage.</param>\n            <param name=\"format\">The format.</param>\n            <param name=\"pool\">The pool.</param>\n            <param name=\"filter\">The filter.</param>\n            <param name=\"mipFilter\">The mip filter.</param>\n            <param name=\"colorKey\">The color key.</param>\n            <param name=\"imageInformation\">The image information.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Direct3D9.Texture\"/>\n            </returns>\n            <unmanaged>HRESULT D3DXCreateTextureFromFileExW([In] IDirect3DDevice9* pDevice,[In] const wchar_t* pSrcFile,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[In] void* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DTexture9** ppTexture)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Texture.FromFile(SharpDX.Direct3D9.Device,System.String,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Usage,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,SharpDX.Direct3D9.Filter,SharpDX.Direct3D9.Filter,System.Int32,SharpDX.Direct3D9.ImageInformation@,SharpDX.Direct3D9.PaletteEntry[]@)\">\n            <summary>\n            Creates a <see cref=\"T:SharpDX.Direct3D9.Texture\"/> from a file\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"filename\">The filename.</param>\n            <param name=\"width\">The width.</param>\n            <param name=\"height\">The height.</param>\n            <param name=\"levelCount\">The level count.</param>\n            <param name=\"usage\">The usage.</param>\n            <param name=\"format\">The format.</param>\n            <param name=\"pool\">The pool.</param>\n            <param name=\"filter\">The filter.</param>\n            <param name=\"mipFilter\">The mip filter.</param>\n            <param name=\"colorKey\">The color key.</param>\n            <param name=\"imageInformation\">The image information.</param>\n            <param name=\"palette\">The palette.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Direct3D9.Texture\"/>\n            </returns>\n            <unmanaged>HRESULT D3DXCreateTextureFromFileExW([In] IDirect3DDevice9* pDevice,[In] const wchar_t* pSrcFile,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[In] void* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DTexture9** ppTexture)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Texture.FromMemory(SharpDX.Direct3D9.Device,System.Byte[])\">\n            <summary>\n            Creates a <see cref=\"T:SharpDX.Direct3D9.Texture\"/> from a memory buffer.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"buffer\">The buffer.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Direct3D9.Texture\"/>\n            </returns>\n            <unmanaged>HRESULT D3DXCreateTextureFromFileInMemory([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] IDirect3DTexture9** ppTexture)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Texture.FromMemory(SharpDX.Direct3D9.Device,System.Byte[],SharpDX.Direct3D9.Usage,SharpDX.Direct3D9.Pool)\">\n            <summary>\n            Creates a <see cref=\"T:SharpDX.Direct3D9.Texture\"/> from a memory buffer.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"buffer\">The buffer.</param>\n            <param name=\"usage\">The usage.</param>\n            <param name=\"pool\">The pool.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Direct3D9.Texture\"/>\n            </returns>\n            <unmanaged>HRESULT D3DXCreateTextureFromFileInMemoryEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[Out] D3DXIMAGE_INFO* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DTexture9** ppTexture)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Texture.FromMemory(SharpDX.Direct3D9.Device,System.Byte[],System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Usage,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,SharpDX.Direct3D9.Filter,SharpDX.Direct3D9.Filter,System.Int32)\">\n            <summary>\n            Creates a <see cref=\"T:SharpDX.Direct3D9.Texture\"/> from a memory buffer.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"buffer\">The buffer.</param>\n            <param name=\"width\">The width.</param>\n            <param name=\"height\">The height.</param>\n            <param name=\"levelCount\">The level count.</param>\n            <param name=\"usage\">The usage.</param>\n            <param name=\"format\">The format.</param>\n            <param name=\"pool\">The pool.</param>\n            <param name=\"filter\">The filter.</param>\n            <param name=\"mipFilter\">The mip filter.</param>\n            <param name=\"colorKey\">The color key.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Direct3D9.Texture\"/>\n            </returns>\n            <unmanaged>HRESULT D3DXCreateTextureFromFileInMemoryEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[Out] D3DXIMAGE_INFO* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DTexture9** ppTexture)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Texture.FromMemory(SharpDX.Direct3D9.Device,System.Byte[],System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Usage,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,SharpDX.Direct3D9.Filter,SharpDX.Direct3D9.Filter,System.Int32,SharpDX.Direct3D9.ImageInformation@)\">\n            <summary>\n            Creates a <see cref=\"T:SharpDX.Direct3D9.Texture\"/> from a memory buffer.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"buffer\">The buffer.</param>\n            <param name=\"size\">The size.</param>\n            <param name=\"levelCount\">The level count.</param>\n            <param name=\"usage\">The usage.</param>\n            <param name=\"format\">The format.</param>\n            <param name=\"pool\">The pool.</param>\n            <param name=\"filter\">The filter.</param>\n            <param name=\"mipFilter\">The mip filter.</param>\n            <param name=\"colorKey\">The color key.</param>\n            <param name=\"imageInformation\">The image information.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Direct3D9.Texture\"/>\n            </returns>\n            <unmanaged>HRESULT D3DXCreateTextureFromFileInMemoryEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[Out] D3DXIMAGE_INFO* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DTexture9** ppTexture)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Texture.FromMemory(SharpDX.Direct3D9.Device,System.Byte[],System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Usage,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,SharpDX.Direct3D9.Filter,SharpDX.Direct3D9.Filter,System.Int32,SharpDX.Direct3D9.ImageInformation@,SharpDX.Direct3D9.PaletteEntry[]@)\">\n            <summary>\n            Creates a <see cref=\"T:SharpDX.Direct3D9.Texture\"/> from a memory buffer.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"buffer\">The buffer.</param>\n            <param name=\"size\">The size.</param>\n            <param name=\"levelCount\">The level count.</param>\n            <param name=\"usage\">The usage.</param>\n            <param name=\"format\">The format.</param>\n            <param name=\"pool\">The pool.</param>\n            <param name=\"filter\">The filter.</param>\n            <param name=\"mipFilter\">The mip filter.</param>\n            <param name=\"colorKey\">The color key.</param>\n            <param name=\"imageInformation\">The image information.</param>\n            <param name=\"palette\">The palette.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Direct3D9.Texture\"/>\n            </returns>\n            <unmanaged>HRESULT D3DXCreateTextureFromFileInMemoryEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[Out] D3DXIMAGE_INFO* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DTexture9** ppTexture)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Texture.FromStream(SharpDX.Direct3D9.Device,System.IO.Stream)\">\n            <summary>\n            Creates a <see cref=\"T:SharpDX.Direct3D9.Texture\"/> from a stream.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"stream\">The stream.</param>\n            <returns>A <see cref=\"T:SharpDX.Direct3D9.Texture\"/></returns>\n            <unmanaged>HRESULT D3DXCreateTextureFromFileInMemory([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] IDirect3DTexture9** ppTexture)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Texture.FromStream(SharpDX.Direct3D9.Device,System.IO.Stream,SharpDX.Direct3D9.Usage,SharpDX.Direct3D9.Pool)\">\n            <summary>\n            Creates a <see cref=\"T:SharpDX.Direct3D9.Texture\"/> from a stream.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"stream\">The stream.</param>\n            <param name=\"usage\">The usage.</param>\n            <param name=\"pool\">The pool.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Direct3D9.Texture\"/>\n            </returns>\n            <unmanaged>HRESULT D3DXCreateTextureFromFileInMemoryEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[Out] D3DXIMAGE_INFO* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DTexture9** ppTexture)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Texture.FromStream(SharpDX.Direct3D9.Device,System.IO.Stream,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Usage,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,SharpDX.Direct3D9.Filter,SharpDX.Direct3D9.Filter,System.Int32)\">\n            <summary>\n            Creates a <see cref=\"T:SharpDX.Direct3D9.Texture\"/> from a stream.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"stream\">The stream.</param>\n            <param name=\"size\">The size.</param>\n            <param name=\"levelCount\">The level count.</param>\n            <param name=\"usage\">The usage.</param>\n            <param name=\"format\">The format.</param>\n            <param name=\"pool\">The pool.</param>\n            <param name=\"filter\">The filter.</param>\n            <param name=\"mipFilter\">The mip filter.</param>\n            <param name=\"colorKey\">The color key.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Direct3D9.Texture\"/>\n            </returns>\n            <unmanaged>HRESULT D3DXCreateTextureFromFileInMemoryEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[Out] D3DXIMAGE_INFO* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DTexture9** ppTexture)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Texture.FromStream(SharpDX.Direct3D9.Device,System.IO.Stream,System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Usage,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,SharpDX.Direct3D9.Filter,SharpDX.Direct3D9.Filter,System.Int32)\">\n            <summary>\n            Creates a <see cref=\"T:SharpDX.Direct3D9.Texture\"/> from a stream.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"stream\">The stream.</param>\n            <param name=\"sizeBytes\">The size bytes.</param>\n            <param name=\"size\">The size.</param>\n            <param name=\"levelCount\">The level count.</param>\n            <param name=\"usage\">The usage.</param>\n            <param name=\"format\">The format.</param>\n            <param name=\"pool\">The pool.</param>\n            <param name=\"filter\">The filter.</param>\n            <param name=\"mipFilter\">The mip filter.</param>\n            <param name=\"colorKey\">The color key.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Direct3D9.Texture\"/>\n            </returns>\n            <unmanaged>HRESULT D3DXCreateTextureFromFileInMemoryEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[Out] D3DXIMAGE_INFO* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DTexture9** ppTexture)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Texture.FromStream(SharpDX.Direct3D9.Device,System.IO.Stream,System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Usage,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,SharpDX.Direct3D9.Filter,SharpDX.Direct3D9.Filter,System.Int32,SharpDX.Direct3D9.ImageInformation@)\">\n            <summary>\n            Creates a <see cref=\"T:SharpDX.Direct3D9.Texture\"/> from a stream.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"stream\">The stream.</param>\n            <param name=\"sizeBytes\">The size bytes.</param>\n            <param name=\"size\">The size.</param>\n            <param name=\"levelCount\">The level count.</param>\n            <param name=\"usage\">The usage.</param>\n            <param name=\"format\">The format.</param>\n            <param name=\"pool\">The pool.</param>\n            <param name=\"filter\">The filter.</param>\n            <param name=\"mipFilter\">The mip filter.</param>\n            <param name=\"colorKey\">The color key.</param>\n            <param name=\"imageInformation\">The image information.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Direct3D9.Texture\"/>\n            </returns>\n            <unmanaged>HRESULT D3DXCreateTextureFromFileInMemoryEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[Out] D3DXIMAGE_INFO* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DTexture9** ppTexture)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Texture.FromStream(SharpDX.Direct3D9.Device,System.IO.Stream,System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Usage,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,SharpDX.Direct3D9.Filter,SharpDX.Direct3D9.Filter,System.Int32,SharpDX.Direct3D9.ImageInformation@,SharpDX.Direct3D9.PaletteEntry[]@)\">\n            <summary>\n            Creates a <see cref=\"T:SharpDX.Direct3D9.Texture\"/> from a stream.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"stream\">The stream.</param>\n            <param name=\"sizeBytes\">The size bytes.</param>\n            <param name=\"size\">The size.</param>\n            <param name=\"levelCount\">The level count.</param>\n            <param name=\"usage\">The usage.</param>\n            <param name=\"format\">The format.</param>\n            <param name=\"pool\">The pool.</param>\n            <param name=\"filter\">The filter.</param>\n            <param name=\"mipFilter\">The mip filter.</param>\n            <param name=\"colorKey\">The color key.</param>\n            <param name=\"imageInformation\">The image information.</param>\n            <param name=\"palette\">The palette.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Direct3D9.Texture\"/>\n            </returns>\n            <unmanaged>HRESULT D3DXCreateTextureFromFileInMemoryEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[Out] D3DXIMAGE_INFO* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DTexture9** ppTexture)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Texture.CreateFromMemory(SharpDX.Direct3D9.Device,System.Byte[],System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Usage,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,SharpDX.Direct3D9.Filter,SharpDX.Direct3D9.Filter,System.Int32,System.IntPtr,SharpDX.Direct3D9.PaletteEntry[])\">\n            <summary>\n            Creates a <see cref=\"T:SharpDX.Direct3D9.Texture\"/> from a stream.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"buffer\">The buffer.</param>\n            <param name=\"size\">The size.</param>\n            <param name=\"levelCount\">The level count.</param>\n            <param name=\"usage\">The usage.</param>\n            <param name=\"format\">The format.</param>\n            <param name=\"pool\">The pool.</param>\n            <param name=\"filter\">The filter.</param>\n            <param name=\"mipFilter\">The mip filter.</param>\n            <param name=\"colorKey\">The color key.</param>\n            <param name=\"imageInformation\">The image information.</param>\n            <param name=\"palette\">The palette.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Direct3D9.Texture\"/>\n            </returns>\n            <unmanaged>HRESULT D3DXCreateTextureFromFileInMemoryEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[Out] D3DXIMAGE_INFO* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DTexture9** ppTexture)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Texture.CreateFromStream(SharpDX.Direct3D9.Device,System.IO.Stream,System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Usage,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,SharpDX.Direct3D9.Filter,SharpDX.Direct3D9.Filter,System.Int32,System.IntPtr,SharpDX.Direct3D9.PaletteEntry[])\">\n            <summary>\n            Creates a <see cref=\"T:SharpDX.Direct3D9.Texture\"/> from a stream.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"stream\">The stream.</param>\n            <param name=\"sizeBytes\">The size bytes.</param>\n            <param name=\"size\">The size.</param>\n            <param name=\"levelCount\">The level count.</param>\n            <param name=\"usage\">The usage.</param>\n            <param name=\"format\">The format.</param>\n            <param name=\"pool\">The pool.</param>\n            <param name=\"filter\">The filter.</param>\n            <param name=\"mipFilter\">The mip filter.</param>\n            <param name=\"colorKey\">The color key.</param>\n            <param name=\"imageInformation\">The image information.</param>\n            <param name=\"palette\">The palette.</param>\n            <returns>A <see cref=\"T:SharpDX.Direct3D9.Texture\"/></returns>\n            <unmanaged>HRESULT D3DXCreateTextureFromFileInMemoryEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[Out] D3DXIMAGE_INFO* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DTexture9** ppTexture)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Texture.CreateFromPointer(SharpDX.Direct3D9.Device,System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Usage,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,SharpDX.Direct3D9.Filter,SharpDX.Direct3D9.Filter,System.Int32,System.IntPtr,SharpDX.Direct3D9.PaletteEntry[])\">\n            <summary>\n            Creates a <see cref=\"T:SharpDX.Direct3D9.Texture\"/> from a stream.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"pointer\">The pointer.</param>\n            <param name=\"sizeInBytes\">The size in bytes.</param>\n            <param name=\"size\">The size.</param>\n            <param name=\"levelCount\">The level count.</param>\n            <param name=\"usage\">The usage.</param>\n            <param name=\"format\">The format.</param>\n            <param name=\"pool\">The pool.</param>\n            <param name=\"filter\">The filter.</param>\n            <param name=\"mipFilter\">The mip filter.</param>\n            <param name=\"colorKey\">The color key.</param>\n            <param name=\"imageInformation\">The image information.</param>\n            <param name=\"palette\">The palette.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Direct3D9.Texture\"/>\n            </returns>\n            <unmanaged>HRESULT D3DXCreateTextureFromFileInMemoryEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[Out] D3DXIMAGE_INFO* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DTexture9** ppTexture)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Texture.CreateFromFile(SharpDX.Direct3D9.Device,System.String,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Usage,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,SharpDX.Direct3D9.Filter,SharpDX.Direct3D9.Filter,System.Int32,System.IntPtr,SharpDX.Direct3D9.PaletteEntry[])\">\n            <summary>\n            Creates a <see cref=\"T:SharpDX.Direct3D9.Texture\"/> from a stream.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"fileName\">Name of the file.</param>\n            <param name=\"size\">The size.</param>\n            <param name=\"levelCount\">The level count.</param>\n            <param name=\"usage\">The usage.</param>\n            <param name=\"format\">The format.</param>\n            <param name=\"pool\">The pool.</param>\n            <param name=\"filter\">The filter.</param>\n            <param name=\"mipFilter\">The mip filter.</param>\n            <param name=\"colorKey\">The color key.</param>\n            <param name=\"imageInformation\">The image information.</param>\n            <param name=\"palette\">The palette.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Direct3D9.Texture\"/>\n            </returns>\n            <unmanaged>HRESULT D3DXCreateTextureFromFileInMemoryEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[Out] D3DXIMAGE_INFO* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DTexture9** ppTexture)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.TextureShader\">\n            <summary>\t\n            <p>The <see cref=\"T:SharpDX.Direct3D9.TextureShader\"/> interface.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The <strong><see cref=\"T:SharpDX.Direct3D9.TextureShader\"/></strong> interface is obtained by calling the <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateTextureShader(System.Int32,SharpDX.Direct3D9.TextureShader@)\"/></strong> function.</p><p>The <strong><see cref=\"T:SharpDX.Direct3D9.TextureShader\"/></strong> interface, like all COM interfaces, inherits the <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interface.</p><p>The LPD3DXTEXTURESHADER type is defined as a reference to the <strong><see cref=\"T:SharpDX.Direct3D9.TextureShader\"/></strong> interface. </p><pre><code> typedef interface <see cref=\"T:SharpDX.Direct3D9.TextureShader\"/> *LPD3DXTEXTURESHADER;\t\n            </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXTextureShader']/*\"/>\t\n            <msdn-id>bb174276</msdn-id>\t\n            <unmanaged>ID3DXTextureShader</unmanaged>\t\n            <unmanaged-short>ID3DXTextureShader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.TextureShader.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D9.TextureShader\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.TextureShader.op_Explicit(System.IntPtr)~SharpDX.Direct3D9.TextureShader\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D9.TextureShader\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.TextureShader.GetFunction(SharpDX.Direct3D.Blob@)\">\n            <summary>\t\n            <p>Gets a reference to the function DWORD stream.</p>\t\n            </summary>\t\n            <param name=\"functionOut\"><dd>  <p>A reference to the function DWORD stream. See <strong><see cref=\"T:SharpDX.Direct3D.Blob\"/></strong>.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXTextureShader::GetFunction']/*\"/>\t\n            <msdn-id>bb174283</msdn-id>\t\n            <unmanaged>HRESULT ID3DXTextureShader::GetFunction([Out] ID3DXBuffer** ppFunction)</unmanaged>\t\n            <unmanaged-short>ID3DXTextureShader::GetFunction</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.TextureShader.GetConstantBuffer(SharpDX.Direct3D.Blob@)\">\n            <summary>\t\n            <p>Get a reference to the constant table.</p>\t\n            </summary>\t\n            <param name=\"constantBufferOut\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D.Blob\"/></strong> interface, which contains the constants.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXTextureShader::GetConstantBuffer']/*\"/>\t\n            <msdn-id>bb174278</msdn-id>\t\n            <unmanaged>HRESULT ID3DXTextureShader::GetConstantBuffer([Out] ID3DXBuffer** ppConstantBuffer)</unmanaged>\t\n            <unmanaged-short>ID3DXTextureShader::GetConstantBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.TextureShader.GetDescription(SharpDX.Direct3D9.ConstantTableDescription@)\">\n            <summary>\t\n            <p>Gets a description of the constant table.</p>\t\n            </summary>\t\n            <param name=\"descRef\"><dd>  <p>The attributes of the constant table. See <strong><see cref=\"T:SharpDX.Direct3D9.ConstantTableDescription\"/></strong>.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXTextureShader::GetDesc']/*\"/>\t\n            <msdn-id>bb174282</msdn-id>\t\n            <unmanaged>HRESULT ID3DXTextureShader::GetDesc([Out] D3DXCONSTANTTABLE_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>ID3DXTextureShader::GetDesc</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.TextureShader.GetConstantDescription(SharpDX.Direct3D9.EffectHandle,SharpDX.Direct3D9.ConstantDescription[],System.Int32@)\">\n            <summary>\t\n            <p>Gets a reference to the array of constants in the constant table.</p>\t\n            </summary>\t\n            <param name=\"effectHandle\"><dd>  <p>Unique identifier to a constant. See <see cref=\"T:SharpDX.Direct3D9.EffectHandle\"/>.</p> </dd></param>\t\n            <param name=\"constantDescRef\"><dd>  <p>Returns a reference to an array of descriptions. See <strong><see cref=\"T:SharpDX.Direct3D9.ConstantDescription\"/></strong>.</p> </dd></param>\t\n            <param name=\"countRef\"><dd>  <p>The input supplied must be the maximum size of the array. The output is the number of elements that are filled in the array when the function returns.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA.</p></returns>\t\n            <remarks>\t\n            <p>Samplers can appear more than once in a constant table, therefore, this method can return an array of descriptions each with a different register index.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXTextureShader::GetConstantDesc']/*\"/>\t\n            <msdn-id>bb174280</msdn-id>\t\n            <unmanaged>HRESULT ID3DXTextureShader::GetConstantDesc([In] D3DXHANDLE hConstant,[Out, Buffer] D3DXCONSTANT_DESC* pConstantDesc,[InOut] unsigned int* pCount)</unmanaged>\t\n            <unmanaged-short>ID3DXTextureShader::GetConstantDesc</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.TextureShader.GetConstant(SharpDX.Direct3D9.EffectHandle,System.Int32)\">\n            <summary>\t\n            <p>Gets a constant by looking up its index.</p>\t\n            </summary>\t\n            <param name=\"effectHandle\"><dd>  <p>A handle to the parent data structure. If the constant is a top-level parameter (there is no parent data structure), use <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"index\"><dd>  <p>Zero-based index of the constant.</p> </dd></param>\t\n            <returns><p>Returns a unique identifier to the constant.</p></returns>\t\n            <remarks>\t\n            <p>To get a constant from an array of constants, use <strong><see cref=\"M:SharpDX.Direct3D9.TextureShader.GetConstantElement(SharpDX.Direct3D9.EffectHandle,System.Int32)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXTextureShader::GetConstant']/*\"/>\t\n            <msdn-id>bb174277</msdn-id>\t\n            <unmanaged>D3DXHANDLE ID3DXTextureShader::GetConstant([In] D3DXHANDLE hConstant,[In] unsigned int Index)</unmanaged>\t\n            <unmanaged-short>ID3DXTextureShader::GetConstant</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.TextureShader.GetConstantByName(SharpDX.Direct3D9.EffectHandle,System.String)\">\n            <summary>\t\n            <p>Gets a constant by looking up its name.</p>\t\n            </summary>\t\n            <param name=\"effectHandle\"><dd>  <p>A handle to the parent data structure. If the constant is a top-level parameter (there is no parent data structure), use <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"nameRef\"><dd>  <p>A string containing the name of the constant.</p> </dd></param>\t\n            <returns><p>Returns a unique identifier to the constant.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXTextureShader::GetConstantByName']/*\"/>\t\n            <msdn-id>bb174279</msdn-id>\t\n            <unmanaged>D3DXHANDLE ID3DXTextureShader::GetConstantByName([In] D3DXHANDLE hConstant,[In] const char* pName)</unmanaged>\t\n            <unmanaged-short>ID3DXTextureShader::GetConstantByName</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.TextureShader.GetConstantElement(SharpDX.Direct3D9.EffectHandle,System.Int32)\">\n            <summary>\t\n            <p>Get a constant from the constant table.</p>\t\n            </summary>\t\n            <param name=\"effectHandle\"><dd>  <p>A handle to the array of constants.  This value may not be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"index\"><dd>  <p>Zero-based index of the element in the constant table.</p> </dd></param>\t\n            <returns><p>Returns a unique identifier to the constant.</p></returns>\t\n            <remarks>\t\n            <p>To get a constant that is not part of an array, use <strong><see cref=\"M:SharpDX.Direct3D9.TextureShader.GetConstant(SharpDX.Direct3D9.EffectHandle,System.Int32)\"/></strong> or <strong><see cref=\"M:SharpDX.Direct3D9.TextureShader.GetConstantByName(SharpDX.Direct3D9.EffectHandle,System.String)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXTextureShader::GetConstantElement']/*\"/>\t\n            <msdn-id>bb174281</msdn-id>\t\n            <unmanaged>D3DXHANDLE ID3DXTextureShader::GetConstantElement([In] D3DXHANDLE hConstant,[In] unsigned int Index)</unmanaged>\t\n            <unmanaged-short>ID3DXTextureShader::GetConstantElement</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.TextureShader.SetDefaults\">\n            <summary>\t\n            <p>Sets the constants to the default values declared in the shader.</p>\t\n            </summary>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXTextureShader::SetDefaults']/*\"/>\t\n            <msdn-id>bb174286</msdn-id>\t\n            <unmanaged>HRESULT ID3DXTextureShader::SetDefaults()</unmanaged>\t\n            <unmanaged-short>ID3DXTextureShader::SetDefaults</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.TextureShader.SetValue(SharpDX.Direct3D9.EffectHandle,System.IntPtr,System.Int32)\">\n            <summary>\t\n            <p>Sets the constant table with the data in the buffer.</p>\t\n            </summary>\t\n            <param name=\"effectHandle\"><dd>  <p>Unique identifier to a constant. See <see cref=\"T:SharpDX.Direct3D9.EffectHandle\"/>.</p> </dd></param>\t\n            <param name=\"dataRef\"><dd>  <p>A reference to a buffer containing the constant data.</p> </dd></param>\t\n            <param name=\"bytes\"><dd>  <p>Size of the buffer, in bytes.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXTextureShader::SetValue']/*\"/>\t\n            <msdn-id>bb174297</msdn-id>\t\n            <unmanaged>HRESULT ID3DXTextureShader::SetValue([In] D3DXHANDLE hConstant,[In] const void* pData,[In] unsigned int Bytes)</unmanaged>\t\n            <unmanaged-short>ID3DXTextureShader::SetValue</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.TextureShader.SetBool(SharpDX.Direct3D9.EffectHandle,SharpDX.Bool)\">\n            <summary>\t\n            <p>Sets a <see cref=\"T:SharpDX.Bool\"/> value.</p>\t\n            </summary>\t\n            <param name=\"effectHandle\"><dd>  <p>Unique identifier to the constant. See <see cref=\"T:SharpDX.Direct3D9.EffectHandle\"/>.</p> </dd></param>\t\n            <param name=\"b\"><dd>  <p><see cref=\"T:SharpDX.Bool\"/> value.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXTextureShader::SetBool']/*\"/>\t\n            <msdn-id>bb174284</msdn-id>\t\n            <unmanaged>HRESULT ID3DXTextureShader::SetBool([In] D3DXHANDLE hConstant,[In] BOOL b)</unmanaged>\t\n            <unmanaged-short>ID3DXTextureShader::SetBool</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.TextureShader.SetBoolArray(SharpDX.Direct3D9.EffectHandle,SharpDX.Bool,System.Int32)\">\n            <summary>\t\n            <p>Sets an array of <see cref=\"T:SharpDX.Bool\"/> values.</p>\t\n            </summary>\t\n            <param name=\"effectHandle\"><dd>  <p>Unique identifier to the array of constants. See <see cref=\"T:SharpDX.Direct3D9.EffectHandle\"/>.</p> </dd></param>\t\n            <param name=\"bRef\"><dd>  <p>Array of <see cref=\"T:SharpDX.Bool\"/> values.</p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>Number of <see cref=\"T:SharpDX.Bool\"/> values in the array.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXTextureShader::SetBoolArray']/*\"/>\t\n            <msdn-id>bb174285</msdn-id>\t\n            <unmanaged>HRESULT ID3DXTextureShader::SetBoolArray([In] D3DXHANDLE hConstant,[In] const BOOL* pb,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3DXTextureShader::SetBoolArray</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.TextureShader.SetInt(SharpDX.Direct3D9.EffectHandle,System.Int32)\">\n            <summary>\t\n            <p>Sets an integer value.</p>\t\n            </summary>\t\n            <param name=\"effectHandle\"><dd>  <p>Unique identifier to the constant. See <see cref=\"T:SharpDX.Direct3D9.EffectHandle\"/>.</p> </dd></param>\t\n            <param name=\"n\"><dd>  <p>Integer value.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXTextureShader::SetInt']/*\"/>\t\n            <msdn-id>bb174289</msdn-id>\t\n            <unmanaged>HRESULT ID3DXTextureShader::SetInt([In] D3DXHANDLE hConstant,[In] int n)</unmanaged>\t\n            <unmanaged-short>ID3DXTextureShader::SetInt</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.TextureShader.SetIntArray(SharpDX.Direct3D9.EffectHandle,System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Sets an array of integers.</p>\t\n            </summary>\t\n            <param name=\"effectHandle\"><dd>  <p>Unique identifier to the array of constants. See <see cref=\"T:SharpDX.Direct3D9.EffectHandle\"/>.</p> </dd></param>\t\n            <param name=\"nRef\"><dd>  <p>Array of integers.</p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>Number of integers in the array.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXTextureShader::SetIntArray']/*\"/>\t\n            <msdn-id>bb174290</msdn-id>\t\n            <unmanaged>HRESULT ID3DXTextureShader::SetIntArray([In] D3DXHANDLE hConstant,[In] const int* pn,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3DXTextureShader::SetIntArray</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.TextureShader.SetFloat(SharpDX.Direct3D9.EffectHandle,System.Single)\">\n            <summary>\t\n            <p>Sets a floating-point number.</p>\t\n            </summary>\t\n            <param name=\"effectHandle\"><dd>  <p>Unique identifier to the constant. See <see cref=\"T:SharpDX.Direct3D9.EffectHandle\"/>.</p> </dd></param>\t\n            <param name=\"f\"><dd>  <p>Floating-point number.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXTextureShader::SetFloat']/*\"/>\t\n            <msdn-id>bb174287</msdn-id>\t\n            <unmanaged>HRESULT ID3DXTextureShader::SetFloat([In] D3DXHANDLE hConstant,[In] float f)</unmanaged>\t\n            <unmanaged-short>ID3DXTextureShader::SetFloat</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.TextureShader.SetFloatArray(SharpDX.Direct3D9.EffectHandle,System.Single,System.Int32)\">\n            <summary>\t\n            <p>Sets an array of floating-point numbers.</p>\t\n            </summary>\t\n            <param name=\"effectHandle\"><dd>  <p>Unique identifier to the array of constants. See <see cref=\"T:SharpDX.Direct3D9.EffectHandle\"/>.</p> </dd></param>\t\n            <param name=\"fRef\"><dd>  <p>Array of floating-point numbers.</p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>Number of floating-point values in the array.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXTextureShader::SetFloatArray']/*\"/>\t\n            <msdn-id>bb174288</msdn-id>\t\n            <unmanaged>HRESULT ID3DXTextureShader::SetFloatArray([In] D3DXHANDLE hConstant,[In] const float* pf,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3DXTextureShader::SetFloatArray</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.TextureShader.SetVector(SharpDX.Direct3D9.EffectHandle,SharpDX.Vector4)\">\n            <summary>\t\n            <p>Sets a 4D vector.</p>\t\n            </summary>\t\n            <param name=\"effectHandle\"><dd>  <p>Unique identifier to the vector constant. See <see cref=\"T:SharpDX.Direct3D9.EffectHandle\"/>.</p> </dd></param>\t\n            <param name=\"vectorRef\"><dd>  <p>Pointer to a 4D vector. See <strong><see cref=\"T:SharpDX.Vector4\"/></strong>.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXTextureShader::SetVector']/*\"/>\t\n            <msdn-id>bb174298</msdn-id>\t\n            <unmanaged>HRESULT ID3DXTextureShader::SetVector([In] D3DXHANDLE hConstant,[In] const D3DXVECTOR4* pVector)</unmanaged>\t\n            <unmanaged-short>ID3DXTextureShader::SetVector</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.TextureShader.SetVectorArray(SharpDX.Direct3D9.EffectHandle,SharpDX.Vector4,System.Int32)\">\n            <summary>\t\n            <p>Sets an array of 4D vectors.</p>\t\n            </summary>\t\n            <param name=\"effectHandle\"><dd>  <p>Unique identifier to the array of vector constants. See <see cref=\"T:SharpDX.Direct3D9.EffectHandle\"/>.</p> </dd></param>\t\n            <param name=\"vectorRef\"><dd>  <p>Array of 4D vectors. See <strong><see cref=\"T:SharpDX.Vector4\"/></strong>.</p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>Number of vectors in the array.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXTextureShader::SetVectorArray']/*\"/>\t\n            <msdn-id>bb174299</msdn-id>\t\n            <unmanaged>HRESULT ID3DXTextureShader::SetVectorArray([In] D3DXHANDLE hConstant,[In] const D3DXVECTOR4* pVector,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3DXTextureShader::SetVectorArray</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.TextureShader.SetMatrix(SharpDX.Direct3D9.EffectHandle,SharpDX.Matrix@)\">\n            <summary>\t\n            <p>Sets a non-transposed matrix.</p>\t\n            </summary>\t\n            <param name=\"effectHandle\"><dd>  <p>Unique identifier to the matrix of constants. See <see cref=\"T:SharpDX.Direct3D9.EffectHandle\"/>.</p> </dd></param>\t\n            <param name=\"matrixRef\"><dd>  <p>Pointer to a non-transposed matrix. See <strong><see cref=\"T:SharpDX.Matrix\"/></strong>.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>A non-transposed matrix contains row-major data; that is, each vector is contained in a row.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXTextureShader::SetMatrix']/*\"/>\t\n            <msdn-id>bb174291</msdn-id>\t\n            <unmanaged>HRESULT ID3DXTextureShader::SetMatrix([In] D3DXHANDLE hConstant,[In] const D3DXMATRIX* pMatrix)</unmanaged>\t\n            <unmanaged-short>ID3DXTextureShader::SetMatrix</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.TextureShader.SetMatrixArray(SharpDX.Direct3D9.EffectHandle,SharpDX.Matrix@,System.Int32)\">\n            <summary>\t\n            <p>Sets an array of non-transposed matrices.</p>\t\n            </summary>\t\n            <param name=\"effectHandle\"><dd>  <p>Unique identifier to the array of constant matrices. See <see cref=\"T:SharpDX.Direct3D9.EffectHandle\"/>.</p> </dd></param>\t\n            <param name=\"matrixRef\"><dd>  <p>Array of non-transposed matrices. See <strong><see cref=\"T:SharpDX.Matrix\"/></strong>.</p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>Number of matrices in the array.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>A non-transposed matrix contains row-major data; that is, each vector is contained in a row.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXTextureShader::SetMatrixArray']/*\"/>\t\n            <msdn-id>bb174292</msdn-id>\t\n            <unmanaged>HRESULT ID3DXTextureShader::SetMatrixArray([In] D3DXHANDLE hConstant,[In] const D3DXMATRIX* pMatrix,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3DXTextureShader::SetMatrixArray</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.TextureShader.SetMatrixPointerArray(SharpDX.Direct3D9.EffectHandle,SharpDX.Matrix@,System.Int32)\">\n            <summary>\t\n            <p>Sets an array of references to non-transposed matrices.</p>\t\n            </summary>\t\n            <param name=\"effectHandle\"><dd>  <p>Unique identifier to an array of constant matrices. See <see cref=\"T:SharpDX.Direct3D9.EffectHandle\"/>.</p> </dd></param>\t\n            <param name=\"matrixOut\"><dd>  <p>Array of references to non-transposed matrices. See <strong><see cref=\"T:SharpDX.Matrix\"/></strong>.</p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>Number of matrices in the array.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>A non-transposed matrix contains row-major data; that is, each vector is contained in a row.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXTextureShader::SetMatrixPointerArray']/*\"/>\t\n            <msdn-id>bb174293</msdn-id>\t\n            <unmanaged>HRESULT ID3DXTextureShader::SetMatrixPointerArray([In] D3DXHANDLE hConstant,[In] const D3DXMATRIX** ppMatrix,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3DXTextureShader::SetMatrixPointerArray</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.TextureShader.SetMatrixTranspose(SharpDX.Direct3D9.EffectHandle,SharpDX.Matrix@)\">\n            <summary>\t\n            <p>Sets a transposed matrix.</p>\t\n            </summary>\t\n            <param name=\"effectHandle\"><dd>  <p>Unique identifier to the matrix of constants. See <see cref=\"T:SharpDX.Direct3D9.EffectHandle\"/>.</p> </dd></param>\t\n            <param name=\"matrixRef\"><dd>  <p>Pointer to a transposed matrix. See <strong><see cref=\"T:SharpDX.Matrix\"/></strong>.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>A transposed matrix contains column-major data; that is, each vector is contained in a column.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXTextureShader::SetMatrixTranspose']/*\"/>\t\n            <msdn-id>bb174294</msdn-id>\t\n            <unmanaged>HRESULT ID3DXTextureShader::SetMatrixTranspose([In] D3DXHANDLE hConstant,[In] const D3DXMATRIX* pMatrix)</unmanaged>\t\n            <unmanaged-short>ID3DXTextureShader::SetMatrixTranspose</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.TextureShader.SetMatrixTransposeArray(SharpDX.Direct3D9.EffectHandle,SharpDX.Matrix@,System.Int32)\">\n            <summary>\t\n            <p>Sets an array of transposed matrices.</p>\t\n            </summary>\t\n            <param name=\"effectHandle\"><dd>  <p>Unique identifier to the array of matrix constants. See <see cref=\"T:SharpDX.Direct3D9.EffectHandle\"/>.</p> </dd></param>\t\n            <param name=\"matrixRef\"><dd>  <p>Array of transposed matrices. See <strong><see cref=\"T:SharpDX.Matrix\"/></strong>.</p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>Number of matrices in the array.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>A transposed matrix contains column-major data; that is, each vector is contained in a column.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXTextureShader::SetMatrixTransposeArray']/*\"/>\t\n            <msdn-id>bb174295</msdn-id>\t\n            <unmanaged>HRESULT ID3DXTextureShader::SetMatrixTransposeArray([In] D3DXHANDLE hConstant,[In] const D3DXMATRIX* pMatrix,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3DXTextureShader::SetMatrixTransposeArray</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.TextureShader.SetMatrixTransposePointerArray(SharpDX.Direct3D9.EffectHandle,SharpDX.Matrix@,System.Int32)\">\n            <summary>\t\n            <p>Sets an array of references to transposed matrices.</p>\t\n            </summary>\t\n            <param name=\"effectHandle\"><dd>  <p>Unique identifier to the array of matrix constants. See <see cref=\"T:SharpDX.Direct3D9.EffectHandle\"/>.</p> </dd></param>\t\n            <param name=\"matrixOut\"><dd>  <p>Array of references to transposed matrices. See <strong><see cref=\"T:SharpDX.Matrix\"/></strong>.</p> </dd></param>\t\n            <param name=\"count\"><dd>  <p>Number of matrices in the array.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>A transposed matrix contains column-major data; that is, each vector is contained in a column.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXTextureShader::SetMatrixTransposePointerArray']/*\"/>\t\n            <msdn-id>bb174296</msdn-id>\t\n            <unmanaged>HRESULT ID3DXTextureShader::SetMatrixTransposePointerArray([In] D3DXHANDLE hConstant,[In] const D3DXMATRIX** ppMatrix,[In] unsigned int Count)</unmanaged>\t\n            <unmanaged-short>ID3DXTextureShader::SetMatrixTransposePointerArray</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.TextureShader.Function\">\n            <summary>\t\n            <p>Gets a reference to the function DWORD stream.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXTextureShader::GetFunction']/*\"/>\t\n            <msdn-id>bb174283</msdn-id>\t\n            <unmanaged>GetFunction</unmanaged>\t\n            <unmanaged-short>GetFunction</unmanaged-short>\t\n            <unmanaged>HRESULT ID3DXTextureShader::GetFunction([Out] ID3DXBuffer** ppFunction)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.TextureShader.ConstantBuffer\">\n            <summary>\t\n            <p>Get a reference to the constant table.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXTextureShader::GetConstantBuffer']/*\"/>\t\n            <msdn-id>bb174278</msdn-id>\t\n            <unmanaged>GetConstantBuffer</unmanaged>\t\n            <unmanaged-short>GetConstantBuffer</unmanaged-short>\t\n            <unmanaged>HRESULT ID3DXTextureShader::GetConstantBuffer([Out] ID3DXBuffer** ppConstantBuffer)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.TextureShader.Description\">\n            <summary>\t\n            <p>Gets a description of the constant table.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXTextureShader::GetDesc']/*\"/>\t\n            <msdn-id>bb174282</msdn-id>\t\n            <unmanaged>GetDesc</unmanaged>\t\n            <unmanaged-short>GetDesc</unmanaged-short>\t\n            <unmanaged>HRESULT ID3DXTextureShader::GetDesc([Out] D3DXCONSTANTTABLE_DESC* pDesc)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.VertexBuffer\">\n            <summary>\t\n            <p>Applications use the methods of the <see cref=\"T:SharpDX.Direct3D9.VertexBuffer\"/> interface to manipulate vertex buffer resources.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The <strong><see cref=\"T:SharpDX.Direct3D9.VertexBuffer\"/></strong> interface is obtained by calling the <strong><see cref=\"M:SharpDX.Direct3D9.Device.CreateVertexBuffer(System.Int32,SharpDX.Direct3D9.Usage,SharpDX.Direct3D9.VertexFormat,SharpDX.Direct3D9.Pool,SharpDX.Direct3D9.VertexBuffer,System.IntPtr)\"/></strong> method.</p><p>This interface inherits additional functionality from the <strong><see cref=\"T:SharpDX.Direct3D9.Resource\"/></strong> interface.</p><p>This interface, like all COM interfaces, inherits from the <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interface.</p><p>The LPDIRECT3DVERTEXBUFFER9 and PDIRECT3DVERTEXBUFFER9 types are defined as references to the <strong><see cref=\"T:SharpDX.Direct3D9.VertexBuffer\"/></strong> interface. </p><pre><code> typedef struct <see cref=\"T:SharpDX.Direct3D9.VertexBuffer\"/> *LPDIRECT3DVERTEXBUFFER9, *PDIRECT3DVERTEXBUFFER9;\t\n            </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DVertexBuffer9']/*\"/>\t\n            <msdn-id>bb205915</msdn-id>\t\n            <unmanaged>IDirect3DVertexBuffer9</unmanaged>\t\n            <unmanaged-short>IDirect3DVertexBuffer9</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.VertexBuffer.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D9.VertexBuffer\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.VertexBuffer.op_Explicit(System.IntPtr)~SharpDX.Direct3D9.VertexBuffer\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D9.VertexBuffer\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.VertexBuffer.Lock_(System.Int32,System.Int32,System.IntPtr@,SharpDX.Direct3D9.LockFlags)\">\n            <summary>\t\n            <p>Locks a range of vertex data and obtains a reference to the vertex buffer memory.</p>\t\n            </summary>\t\n            <param name=\"offsetToLock\"><dd>  <p>Offset into the vertex data to lock, in bytes. To lock the entire vertex buffer, specify 0 for both parameters, SizeToLock and OffsetToLock.</p> </dd></param>\t\n            <param name=\"sizeToLock\"><dd>  <p>Size of the vertex data to lock, in bytes. To lock the entire vertex buffer, specify 0 for both parameters, SizeToLock and OffsetToLock.</p> </dd></param>\t\n            <param name=\"bDataOut\"><dd>  <p>VOID* reference to a memory buffer containing the returned vertex data. </p> </dd></param>\t\n            <param name=\"lockFlags\"><dd>  <p>Combination of zero or more locking flags that describe the type of lock to perform. For this method, the valid flags are:  </p> <ul> <li><see cref=\"F:SharpDX.Direct3D9.LockFlags.Discard\"/></li> <li><see cref=\"F:SharpDX.Direct3D9.LockFlags.NoDirtyUpdate\"/></li> <li><see cref=\"F:SharpDX.Direct3D9.LockFlags.NoSystemLock\"/></li> <li><see cref=\"F:SharpDX.Direct3D9.LockFlags.ReadOnly\"/></li> <li><see cref=\"F:SharpDX.Direct3D9.LockFlags.NoOverwrite\"/></li> </ul> <p> For a description of the flags, see <see cref=\"T:SharpDX.Direct3D9.LockFlags\"/>. </p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>. </p></returns>\t\n            <remarks>\t\n            <p>As a general rule, do not hold a lock across more than one frame. When working with vertex buffers, you are allowed to make multiple lock calls; however, you must ensure that the number of lock calls match the number of unlock calls. DrawPrimitive calls will not succeed with any outstanding lock count on any currently set vertex buffer.</p><p>The <see cref=\"F:SharpDX.Direct3D9.LockFlags.Discard\"/> and <see cref=\"F:SharpDX.Direct3D9.LockFlags.NoOverwrite\"/> flags are valid only on buffers created with <see cref=\"F:SharpDX.Direct3D9.Usage.Dynamic\"/>.</p><p>For information about using <see cref=\"F:SharpDX.Direct3D9.LockFlags.Discard\"/> or <see cref=\"F:SharpDX.Direct3D9.LockFlags.NoOverwrite\"/> with <strong><see cref=\"M:SharpDX.Direct3D9.VertexBuffer.Lock_(System.Int32,System.Int32,System.IntPtr@,SharpDX.Direct3D9.LockFlags)\"/></strong>, see Using Dynamic Vertex and Index Buffers.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DVertexBuffer9::Lock']/*\"/>\t\n            <msdn-id>bb205917</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DVertexBuffer9::Lock([In] unsigned int OffsetToLock,[In] unsigned int SizeToLock,[Out] void** ppbData,[In] D3DLOCK Flags)</unmanaged>\t\n            <unmanaged-short>IDirect3DVertexBuffer9::Lock</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.VertexBuffer.Unlock\">\n            <summary>\t\n            <p>Unlocks vertex data.</p>\t\n            </summary>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>. </p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DVertexBuffer9::Unlock']/*\"/>\t\n            <msdn-id>bb205918</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DVertexBuffer9::Unlock()</unmanaged>\t\n            <unmanaged-short>IDirect3DVertexBuffer9::Unlock</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.VertexBuffer.GetDescription(SharpDX.Direct3D9.VertexBufferDescription@)\">\n            <summary>\t\n            <p>Retrieves a description of the vertex buffer resource.</p>\t\n            </summary>\t\n            <param name=\"descRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.VertexBufferDescription\"/></strong> structure, describing the returned vertex buffer. </p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/> is returned if the argument is invalid.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DVertexBuffer9::GetDesc']/*\"/>\t\n            <msdn-id>bb205916</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DVertexBuffer9::GetDesc([Out] D3DVERTEXBUFFER_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>IDirect3DVertexBuffer9::GetDesc</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.VertexBuffer.#ctor(SharpDX.Direct3D9.Device,System.Int32,SharpDX.Direct3D9.Usage,SharpDX.Direct3D9.VertexFormat,SharpDX.Direct3D9.Pool)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D9.VertexBuffer\"/> class.\n            </summary>\n            <param name=\"device\">The device that will be used to create the buffer.</param>\n            <param name=\"sizeInBytes\">Size of the buffer, in bytes.</param>\n            <param name=\"usage\">The requested usage of the buffer.</param>\n            <param name=\"format\">The vertex format of the vertices in the buffer. If set to <see cref=\"T:SharpDX.Direct3D9.VertexFormat\"/>.None, the buffer will be a non-FVF buffer.</param>\n            <param name=\"pool\">The memory class into which the resource will be placed.</param>\n            <msdn-id>bb174364</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::CreateVertexBuffer([In] unsigned int Length,[In] D3DUSAGE Usage,[In] D3DFVF FVF,[In] D3DPOOL Pool,[Out, Fast] IDirect3DVertexBuffer9** ppVertexBuffer,[In] void** pSharedHandle)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::CreateVertexBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.VertexBuffer.#ctor(SharpDX.Direct3D9.Device,System.Int32,SharpDX.Direct3D9.Usage,SharpDX.Direct3D9.VertexFormat,SharpDX.Direct3D9.Pool,System.IntPtr@)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D9.VertexBuffer\"/> class.\n            </summary>\n            <param name=\"device\">The device that will be used to create the buffer.</param>\n            <param name=\"sizeInBytes\">Size of the buffer, in bytes.</param>\n            <param name=\"usage\">The requested usage of the buffer.</param>\n            <param name=\"format\">The vertex format of the vertices in the buffer. If set to <see cref=\"T:SharpDX.Direct3D9.VertexFormat\"/>.None, the buffer will be a non-FVF buffer.</param>\n            <param name=\"pool\">The memory class into which the resource will be placed.</param>\n            <param name=\"sharedHandle\">The variable that will receive the shared handle for this resource.</param>\n            <remarks>This method is only available in Direct3D9 Ex.</remarks>\n            <msdn-id>bb174364</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDevice9::CreateVertexBuffer([In] unsigned int Length,[In] D3DUSAGE Usage,[In] D3DFVF FVF,[In] D3DPOOL Pool,[Out, Fast] IDirect3DVertexBuffer9** ppVertexBuffer,[In] void** pSharedHandle)</unmanaged>\t\n            <unmanaged-short>IDirect3DDevice9::CreateVertexBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.VertexBuffer.Lock(System.Int32,System.Int32,SharpDX.Direct3D9.LockFlags)\">\n            <summary>\t\n            Locks a range of vertex data and obtains a pointer to the vertex buffer memory.\t\n            </summary>\t\n            <remarks>\t\n             As a general rule, do not hold a lock across more than one frame. When working with vertex buffers, you are allowed to make multiple lock calls; however, you must ensure that the number of lock calls match the number of unlock calls. DrawPrimitive calls will not succeed with any outstanding lock count on any currently set vertex buffer. The D3DLOCK_DISCARD and D3DLOCK_NOOVERWRITE flags are valid only on buffers created with D3DUSAGE_DYNAMIC. For information about using D3DLOCK_DISCARD or D3DLOCK_NOOVERWRITE with IDirect3DVertexBuffer9::Lock, see {{Using Dynamic Vertex and Index Buffers}}. \t\n            </remarks>\t\n            <param name=\"offsetToLock\"> Offset into the vertex data to lock, in bytes. To lock the entire vertex buffer, specify 0 for both parameters, SizeToLock and OffsetToLock. </param>\n            <param name=\"sizeToLock\"> Size of the vertex data to lock, in bytes. To lock the entire vertex buffer, specify 0 for both parameters, SizeToLock and OffsetToLock. </param>\n            <param name=\"lockFlags\"> Combination of zero or more locking flags that describe the type of lock to perform. For this method, the valid flags are:    D3DLOCK_DISCARD D3DLOCK_NO_DIRTY_UPDATE D3DLOCK_NOSYSLOCK D3DLOCK_READONLY D3DLOCK_NOOVERWRITE   For a description of the flags, see <see cref=\"T:SharpDX.Direct3D9.LockFlags\"/>.  </param>\n            <returns>A <see cref=\"T:SharpDX.DataStream\"/> if the method succeeds.</returns>\n            <msdn-id>bb205917</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DVertexBuffer9::Lock([In] unsigned int OffsetToLock,[In] unsigned int SizeToLock,[Out] void** ppbData,[In] D3DLOCK Flags)</unmanaged>\t\n            <unmanaged-short>IDirect3DVertexBuffer9::Lock</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.VertexBuffer.LockToPointer(System.Int32,System.Int32,SharpDX.Direct3D9.LockFlags)\">\n            <summary>\t\n            Locks a range of vertex data and obtains a pointer to the vertex buffer memory.\t\n            </summary>\t\n            <remarks>\t\n             As a general rule, do not hold a lock across more than one frame. When working with vertex buffers, you are allowed to make multiple lock calls; however, you must ensure that the number of lock calls match the number of unlock calls. DrawPrimitive calls will not succeed with any outstanding lock count on any currently set vertex buffer. The D3DLOCK_DISCARD and D3DLOCK_NOOVERWRITE flags are valid only on buffers created with D3DUSAGE_DYNAMIC. For information about using D3DLOCK_DISCARD or D3DLOCK_NOOVERWRITE with IDirect3DVertexBuffer9::Lock, see {{Using Dynamic Vertex and Index Buffers}}. \t\n            </remarks>\t\n            <param name=\"offsetToLock\"> Offset into the vertex data to lock, in bytes. To lock the entire vertex buffer, specify 0 for both parameters, SizeToLock and OffsetToLock. </param>\n            <param name=\"sizeToLock\"> Size of the vertex data to lock, in bytes. To lock the entire vertex buffer, specify 0 for both parameters, SizeToLock and OffsetToLock. </param>\n            <param name=\"lockFlags\"> Combination of zero or more locking flags that describe the type of lock to perform. For this method, the valid flags are:    D3DLOCK_DISCARD D3DLOCK_NO_DIRTY_UPDATE D3DLOCK_NOSYSLOCK D3DLOCK_READONLY D3DLOCK_NOOVERWRITE   For a description of the flags, see <see cref=\"T:SharpDX.Direct3D9.LockFlags\"/>.  </param>\n            <returns>A <see cref=\"T:System.IntPtr\"/> if the method succeeds.</returns>\n            <msdn-id>bb205917</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DVertexBuffer9::Lock([In] unsigned int OffsetToLock,[In] unsigned int SizeToLock,[Out] void** ppbData,[In] D3DLOCK Flags)</unmanaged>\t\n            <unmanaged-short>IDirect3DVertexBuffer9::Lock</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.VertexBuffer.Description\">\n            <summary>\t\n            <p>Retrieves a description of the vertex buffer resource.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DVertexBuffer9::GetDesc']/*\"/>\t\n            <msdn-id>bb205916</msdn-id>\t\n            <unmanaged>GetDesc</unmanaged>\t\n            <unmanaged-short>GetDesc</unmanaged-short>\t\n            <unmanaged>HRESULT IDirect3DVertexBuffer9::GetDesc([Out] D3DVERTEXBUFFER_DESC* pDesc)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.VertexDeclaration\">\n            <summary>\t\n            <p>Applications use the methods of the <see cref=\"T:SharpDX.Direct3D9.VertexDeclaration\"/> interface to encapsulate the vertex shader declaration.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>A vertex shader declaration is made up of an array of vertex elements.</p><p>The LPDIRECT3DVERTEXDECLARATION9 and PDIRECT3DVERTEXDECLARATION9 types are defined as references to the <strong><see cref=\"T:SharpDX.Direct3D9.VertexDeclaration\"/></strong> interface. </p><pre><code>typedef struct <see cref=\"T:SharpDX.Direct3D9.VertexDeclaration\"/> *LPDIRECT3DVERTEXDECLARATION9, *PDIRECT3DVERTEXDECLARATION9;</code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DVertexDeclaration9']/*\"/>\t\n            <msdn-id>bb205919</msdn-id>\t\n            <unmanaged>IDirect3DVertexDeclaration9</unmanaged>\t\n            <unmanaged-short>IDirect3DVertexDeclaration9</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.VertexDeclaration.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D9.VertexDeclaration\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.VertexDeclaration.op_Explicit(System.IntPtr)~SharpDX.Direct3D9.VertexDeclaration\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D9.VertexDeclaration\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.VertexDeclaration.GetDevice(SharpDX.Direct3D9.Device@)\">\n            <summary>\t\n            <p>Gets the current device.</p>\t\n            </summary>\t\n            <param name=\"deviceOut\"><dd>  <p>Pointer to the <see cref=\"T:SharpDX.Direct3D9.Device\"/> interface that is returned.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DVertexDeclaration9::GetDevice']/*\"/>\t\n            <msdn-id>bb205921</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DVertexDeclaration9::GetDevice([Out] IDirect3DDevice9** ppDevice)</unmanaged>\t\n            <unmanaged-short>IDirect3DVertexDeclaration9::GetDevice</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.VertexDeclaration.GetDeclaration(SharpDX.Direct3D9.VertexElement[],System.Int32@)\">\n            <summary>\t\n            <p>Gets the vertex shader declaration.</p>\t\n            </summary>\t\n            <param name=\"elementRef\"><dd>  <p>Array of vertex elements (see <strong><see cref=\"T:SharpDX.Direct3D9.VertexElement\"/></strong>) that make up a vertex shader declaration. The application needs to allocate enough room for this. The vertex element array ends with the <strong>D3DDECL_END</strong> macro.</p> </dd></param>\t\n            <param name=\"numElementsRef\"><dd>  <p>Number of elements in the array. The application needs to allocate enough room for this. </p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <remarks>\t\n            <p>The number of elements, pNumElements, includes the <strong>D3DDECL_END</strong> macro, which ends the declaration. So the element count is actually one higher than the number of valid vertex elements.</p><p>Here's an example that will return the vertex declaration array of up to 256 elements:</p><pre><code> <see cref=\"T:SharpDX.Direct3D9.VertexElement\"/> decl[MAXD3DDECLLENGTH];\t\n            UINT numElements;\t\n            <see cref=\"T:SharpDX.Result\"/> hr = m_pVertexDeclaration-&gt;GetDeclaration( decl, &amp;numElements);\t\n            </code></pre><p>Specify <strong><c>null</c></strong> for pDeclto get the number of elements in the declaration.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DVertexDeclaration9::GetDeclaration']/*\"/>\t\n            <msdn-id>bb205920</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DVertexDeclaration9::GetDeclaration([Out, Buffer] D3DVERTEXELEMENT9* pElement,[InOut] unsigned int* pNumElements)</unmanaged>\t\n            <unmanaged-short>IDirect3DVertexDeclaration9::GetDeclaration</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.VertexDeclaration.#ctor(SharpDX.Direct3D9.Device,SharpDX.Direct3D9.VertexElement[])\">\n            <summary>\n            Create a vertex shader declaration from the device and the vertex elements.\n            </summary>\n            <remarks>\n             See the {{Vertex Declaration (Direct3D 9)}} page for a detailed description of how to map vertex declarations between different versions of DirectX. \n            </remarks>\n            <param name=\"elements\"> An array of <see cref=\"T:SharpDX.Direct3D9.VertexElement\"/> vertex elements. </param>\n            <returns><see cref=\"T:SharpDX.Direct3D9.VertexDeclaration\"/> If the method succeeds</returns>\n            <unmanaged>HRESULT IDirect3DDevice9::CreateVertexDeclaration([In, Buffer] const D3DVERTEXELEMENT9* pVertexElements,[None] IDirect3DVertexDeclaration9** ppDecl)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.VertexDeclaration.Device\">\n            <summary>\t\n            <p>Gets the current device.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DVertexDeclaration9::GetDevice']/*\"/>\t\n            <msdn-id>bb205921</msdn-id>\t\n            <unmanaged>GetDevice</unmanaged>\t\n            <unmanaged-short>GetDevice</unmanaged-short>\t\n            <unmanaged>HRESULT IDirect3DVertexDeclaration9::GetDevice([Out] IDirect3DDevice9** ppDevice)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.VertexDeclaration.Elements\">\n            <summary>\n            Gets the elements.\n            </summary>\n            <unmanaged>HRESULT IDirect3DVertexDeclaration9::GetDeclaration([Out, Buffer] D3DVERTEXELEMENT9* pElement,[InOut] unsigned int* pNumElements)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.VertexShader\">\n            <summary>\t\n            <p>Applications use the methods of the <see cref=\"T:SharpDX.Direct3D9.VertexShader\"/> interface to encapsulate the functionality of a vertex shader.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The LPDIRECT3DVERTEXSHADER9 and PDIRECT3DVERTEXSHADER9 types are defined as references to the <strong><see cref=\"T:SharpDX.Direct3D9.VertexShader\"/></strong> interface. </p><pre><code>typedef struct <see cref=\"T:SharpDX.Direct3D9.VertexShader\"/> *LPDIRECT3DVERTEXSHADER9, *PDIRECT3DVERTEXSHADER9;</code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DVertexShader9']/*\"/>\t\n            <msdn-id>bb205922</msdn-id>\t\n            <unmanaged>IDirect3DVertexShader9</unmanaged>\t\n            <unmanaged-short>IDirect3DVertexShader9</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VertexShader.MaxDynamicFlowControlDepth\">\n            <summary>Constant MaxDynamicFlowControlDepth.</summary>\n            <unmanaged>D3DVS20_MAX_DYNAMICFLOWCONTROLDEPTH</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VertexShader.MinDynamicFlowControlDepth\">\n            <summary>Constant MinDynamicFlowControlDepth.</summary>\n            <unmanaged>D3DVS20_MIN_DYNAMICFLOWCONTROLDEPTH</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VertexShader.MaxTemps\">\n            <summary>Constant MaxTemps.</summary>\n            <unmanaged>D3DVS20_MAX_NUMTEMPS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VertexShader.MinTemps\">\n            <summary>Constant MinTemps.</summary>\n            <unmanaged>D3DVS20_MIN_NUMTEMPS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VertexShader.MaxStaticFlowControlDepth\">\n            <summary>Constant MaxStaticFlowControlDepth.</summary>\n            <unmanaged>D3DVS20_MAX_STATICFLOWCONTROLDEPTH</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VertexShader.MinStaticFlowControlDepth\">\n            <summary>Constant MinStaticFlowControlDepth.</summary>\n            <unmanaged>D3DVS20_MIN_STATICFLOWCONTROLDEPTH</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.VertexShader.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D9.VertexShader\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.VertexShader.op_Explicit(System.IntPtr)~SharpDX.Direct3D9.VertexShader\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D9.VertexShader\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.VertexShader.GetDevice(SharpDX.Direct3D9.Device@)\">\n            <summary>\t\n            <p>Gets the device.</p>\t\n            </summary>\t\n            <param name=\"deviceOut\"><dd>  <p>Pointer to the <see cref=\"T:SharpDX.Direct3D9.Device\"/> interface that is returned.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DVertexShader9::GetDevice']/*\"/>\t\n            <msdn-id>bb205923</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DVertexShader9::GetDevice([Out] IDirect3DDevice9** ppDevice)</unmanaged>\t\n            <unmanaged-short>IDirect3DVertexShader9::GetDevice</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.VertexShader.GetFunction(System.IntPtr,System.Int32@)\">\n            <summary>\t\n            <p>Gets a reference to the shader data.</p>\t\n            </summary>\t\n            <param name=\"arg0\"><dd>  <p>Pointer to a buffer that contains the shader data. The application needs to allocate enough room for this. </p> </dd></param>\t\n            <param name=\"sizeOfDataRef\"><dd>  <p>Size of the data, in bytes. To get the buffer size that is needed to retrieve the data, set pData = <strong><c>null</c></strong> when calling GetFunction. Then call GetFunction with the returned size, to get the buffer data.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DVertexShader9::GetFunction']/*\"/>\t\n            <msdn-id>bb205924</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DVertexShader9::GetFunction([In] void* arg0,[InOut] unsigned int* pSizeOfData)</unmanaged>\t\n            <unmanaged-short>IDirect3DVertexShader9::GetFunction</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.VertexShader.#ctor(SharpDX.Direct3D9.Device,SharpDX.Direct3D9.ShaderBytecode)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D9.VertexShader\"/> class.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"function\">The function.</param>\n            <unmanaged>HRESULT IDirect3DDevice9::CreateVertexShader([In] const void* pFunction,[Out, Fast] IDirect3DVertexShader9** ppShader)</unmanaged>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.VertexShader.Device\">\n            <summary>\t\n            <p>Gets the device.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DVertexShader9::GetDevice']/*\"/>\t\n            <msdn-id>bb205923</msdn-id>\t\n            <unmanaged>GetDevice</unmanaged>\t\n            <unmanaged-short>GetDevice</unmanaged-short>\t\n            <unmanaged>HRESULT IDirect3DVertexShader9::GetDevice([Out] IDirect3DDevice9** ppDevice)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.VertexShader.Function\">\n            <summary>\n            Gets the bytecode associated to this shader..\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.Volume\">\n            <summary>\t\n            <p>Applications use the methods of the <see cref=\"T:SharpDX.Direct3D9.Volume\"/> interface to manipulate volume resources.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The <strong><see cref=\"T:SharpDX.Direct3D9.Volume\"/></strong> interface is obtained by calling the <strong><see cref=\"M:SharpDX.Direct3D9.VolumeTexture.GetVolumeLevel(System.Int32)\"/></strong> method.</p><p>This interface, like all COM interfaces, inherits from the <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interface.</p><p>The LPDIRECT3DVOLUME9 and PDIRECT3DVOLUME9 types are defined as references to the <strong><see cref=\"T:SharpDX.Direct3D9.Volume\"/></strong> interface. </p><pre><code> typedef struct <see cref=\"T:SharpDX.Direct3D9.Volume\"/> *LPDIRECT3DVOLUME9, *PDIRECT3DVOLUME9;\t\n            </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DVolume9']/*\"/>\t\n            <msdn-id>bb205932</msdn-id>\t\n            <unmanaged>IDirect3DVolume9</unmanaged>\t\n            <unmanaged-short>IDirect3DVolume9</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Volume.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D9.Volume\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Volume.op_Explicit(System.IntPtr)~SharpDX.Direct3D9.Volume\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D9.Volume\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Volume.GetDevice(SharpDX.Direct3D9.Device@)\">\n            <summary>\t\n            <p>Retrieves the device associated with a volume.</p>\t\n            </summary>\t\n            <param name=\"deviceOut\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface to fill with the device reference, if the query succeeds. </p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>. </p></returns>\t\n            <remarks>\t\n            <p>This method allows navigation to the owning device object. </p><p>Calling this method will increase the internal reference count on the <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface. Failure to call <strong>IUnknown::Release</strong> when finished using this <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface results in a memory leak.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DVolume9::GetDevice']/*\"/>\t\n            <msdn-id>bb205936</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DVolume9::GetDevice([Out] IDirect3DDevice9** ppDevice)</unmanaged>\t\n            <unmanaged-short>IDirect3DVolume9::GetDevice</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Volume.SetPrivateData(System.Guid,System.IntPtr,System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Associates data with the volume that is intended for use by the application, not by Direct3D.</p>\t\n            </summary>\t\n            <param name=\"refguid\"><dd>  <p>Reference to the globally unique identifier that identifies the private data to set.</p> </dd></param>\t\n            <param name=\"dataRef\"><dd>  <p>Pointer to a buffer that contains the data to associate with the volume. </p> </dd></param>\t\n            <param name=\"sizeOfData\"><dd>  <p>Size of the buffer at pData in bytes. </p> </dd></param>\t\n            <param name=\"flags\"><dd>  <p>Value that describes the type of data being passed, or indicates to the application that the data should be invalidated when the resource changes. </p> <p></p> <table> <tr><th>Item</th><th>Description</th></tr> <tr><td> <p>(none)</p> </td><td> <p>If no flags are specified, Direct3D allocates memory to hold the data within the buffer and copies the data into the new buffer. The buffer allocated by Direct3D is automatically freed, as appropriate.</p> </td></tr> <tr><td> <p>D3DSPD_IUNKNOWN</p> </td><td> <p>The data at pData is a reference to an <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interface. SizeOfData must be set to the size of a reference to an <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interface, sizeof(<see cref=\"T:SharpDX.ComObject\"/>*). Direct3D automatically calls <strong><see cref=\"T:SharpDX.ComObject\"/></strong> through pData and <see cref=\"T:SharpDX.ComObject\"/> when the private data is destroyed. Private data will be destroyed by a subsequent call to <strong><see cref=\"M:SharpDX.Direct3D9.Volume.SetPrivateData(System.Guid,System.IntPtr,System.Int32,System.Int32)\"/></strong> with the same <see cref=\"T:System.Guid\"/>, a subsequent call to <strong><see cref=\"M:SharpDX.Direct3D9.Volume.FreePrivateData(System.Guid)\"/></strong>, or when the <strong><see cref=\"T:SharpDX.Direct3D9.Direct3D\"/></strong> object is released. For more information, see Remarks.</p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>Direct3D does not manage the memory at pData. If this buffer was dynamically allocated, it is the calling application's responsibility to free the memory.</p><p>Data is passed by value, and multiple sets of data can be associated with a single volume.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DVolume9::SetPrivateData']/*\"/>\t\n            <msdn-id>bb205939</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DVolume9::SetPrivateData([In] const GUID&amp; refguid,[In] const void* pData,[In] unsigned int SizeOfData,[In] unsigned int Flags)</unmanaged>\t\n            <unmanaged-short>IDirect3DVolume9::SetPrivateData</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Volume.GetPrivateData(System.Guid,System.IntPtr,System.Int32@)\">\n            <summary>\t\n            <p>Copies the private data associated with the volume to a provided buffer.</p>\t\n            </summary>\t\n            <param name=\"refguid\"><dd>  <p>Reference to (C++) or address of (C) the globally unique identifier that identifies the private data to retrieve. </p> </dd></param>\t\n            <param name=\"dataRef\"><dd>  <p>Pointer to a previously allocated buffer to fill with the requested private data if the call succeeds. The application calling this method is responsible for allocating and releasing this buffer. If this parameter is <strong><c>null</c></strong>, this method will return the buffer size in pSizeOfData.</p> </dd></param>\t\n            <param name=\"sizeOfDataRef\"><dd>  <p>Pointer to the size of the buffer at  pData, in bytes. If this value is less than the actual size of the private data, such as 0, the method sets this parameter to the required buffer size, and the method returns <see cref=\"F:SharpDX.Direct3D9.ResultCode.MoreData\"/>. </p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.MoreData\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.NotFound\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DVolume9::GetPrivateData']/*\"/>\t\n            <msdn-id>bb205937</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DVolume9::GetPrivateData([In] const GUID&amp; refguid,[In] void* pData,[Out] unsigned int* pSizeOfData)</unmanaged>\t\n            <unmanaged-short>IDirect3DVolume9::GetPrivateData</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Volume.FreePrivateData(System.Guid)\">\n            <summary>\t\n            <p>Frees the specified private data associated with this volume.</p>\t\n            </summary>\t\n            <param name=\"refguid\"><dd>  <p>Reference to the globally unique identifier that identifies the private data to free.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, <see cref=\"F:SharpDX.Direct3D9.ResultCode.NotFound\"/>.</p></returns>\t\n            <remarks>\t\n            <p>Direct3D calls this method automatically when a volume is released. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DVolume9::FreePrivateData']/*\"/>\t\n            <msdn-id>bb205933</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DVolume9::FreePrivateData([In] const GUID&amp; refguid)</unmanaged>\t\n            <unmanaged-short>IDirect3DVolume9::FreePrivateData</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Volume.GetContainer(System.Guid,System.IntPtr)\">\n            <summary>\t\n            <p>Provides access to the parent volume texture object, if this surface is a child level of a volume texture.</p>\t\n            </summary>\t\n            <param name=\"riid\"><dd>  <p>Reference identifier of the volume being requested. </p> </dd></param>\t\n            <param name=\"containerOut\"><dd>  <p>Address of a reference to fill with the container reference, if the query succeeds. </p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>. </p></returns>\t\n            <remarks>\t\n            <p>If the call succeeds, the reference count of the container is increased by one.</p><p>Here's an example getting the parent volume texture of a volume texture.</p><pre><code> // Assumes pSurface is a valid <see cref=\"T:SharpDX.Direct3D9.Volume\"/> reference\t\n            void *pContainer = <c>null</c>;\t\n            <see cref=\"T:SharpDX.Direct3D9.VolumeTexture\"/> *pVolumeTexture = <c>null</c>;\t\n            <see cref=\"T:SharpDX.Result\"/> hr = pVolume-&gt;GetContainer(IID_IDirect3DVolumeTexture9, &amp;pContainer);\t\n            if (SUCCEEDED(hr) &amp;&amp; pContainer)\t\n            { pVolumeTexture = (<see cref=\"T:SharpDX.Direct3D9.VolumeTexture\"/> *)pContainer;\t\n            </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DVolume9::GetContainer']/*\"/>\t\n            <msdn-id>bb205934</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DVolume9::GetContainer([In] const GUID&amp; riid,[In] void** ppContainer)</unmanaged>\t\n            <unmanaged-short>IDirect3DVolume9::GetContainer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Volume.GetDescription(SharpDX.Direct3D9.VolumeDescription@)\">\n            <summary>\t\n            <p>Retrieves a description of the volume.</p>\t\n            </summary>\t\n            <param name=\"descRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.VolumeDescription\"/></strong> structure, describing the volume. </p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/> is returned if the argument is invalid.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DVolume9::GetDesc']/*\"/>\t\n            <msdn-id>bb205935</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DVolume9::GetDesc([Out] D3DVOLUME_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>IDirect3DVolume9::GetDesc</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Volume.LockBox(SharpDX.Direct3D9.LockedBox@,System.IntPtr,SharpDX.Direct3D9.LockFlags)\">\n            <summary>\t\n            <p>Locks a box on a volume resource.</p>\t\n            </summary>\t\n            <param name=\"lockedVolumeRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.LockedBox\"/></strong> structure, describing the locked region. </p> </dd></param>\t\n            <param name=\"boxRef\"><dd>  <p>Pointer to a box to lock. Specified by a reference to a <strong><see cref=\"T:SharpDX.Direct3D9.Box\"/></strong> structure. Specifying <strong><c>null</c></strong> for this parameter locks the entire volume. </p> </dd></param>\t\n            <param name=\"flags\"><dd>  <p>Combination of zero or more locking flags that describe the type of lock to perform. For this method, the valid flags are:  </p> <ul> <li><see cref=\"F:SharpDX.Direct3D9.LockFlags.Discard\"/></li> <li><see cref=\"F:SharpDX.Direct3D9.LockFlags.NoDirtyUpdate\"/></li> <li><see cref=\"F:SharpDX.Direct3D9.LockFlags.NoSystemLock\"/></li> <li><see cref=\"F:SharpDX.Direct3D9.LockFlags.ReadOnly\"/></li> </ul> <p> For a description of the flags, see <see cref=\"T:SharpDX.Direct3D9.LockFlags\"/>. </p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>. </p></returns>\t\n            <remarks>\t\n            <p>For performance reasons, dirty regions are only recorded for level zero of a texture. Dirty regions are automatically recorded when <strong><see cref=\"M:SharpDX.Direct3D9.Volume.LockBox(SharpDX.Direct3D9.LockedBox@,System.IntPtr,SharpDX.Direct3D9.LockFlags)\"/></strong> is called without <see cref=\"F:SharpDX.Direct3D9.LockFlags.NoDirtyUpdate\"/> or <see cref=\"F:SharpDX.Direct3D9.LockFlags.ReadOnly\"/>. See <strong><see cref=\"M:SharpDX.Direct3D9.Device.UpdateTexture(SharpDX.Direct3D9.BaseTexture,SharpDX.Direct3D9.BaseTexture)\"/></strong> for more information.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DVolume9::LockBox']/*\"/>\t\n            <msdn-id>bb205938</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DVolume9::LockBox([Out] D3DLOCKED_BOX* pLockedVolume,[In] const void* pBox,[In] D3DLOCK Flags)</unmanaged>\t\n            <unmanaged-short>IDirect3DVolume9::LockBox</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Volume.UnlockBox\">\n            <summary>\t\n            <p>Unlocks a box on a volume resource.</p>\t\n            </summary>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>. </p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DVolume9::UnlockBox']/*\"/>\t\n            <msdn-id>bb205940</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DVolume9::UnlockBox()</unmanaged>\t\n            <unmanaged-short>IDirect3DVolume9::UnlockBox</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Volume.LoadFromMemory(SharpDX.Direct3D9.PaletteEntry[],System.Nullable{SharpDX.Direct3D9.Box},System.IntPtr,SharpDX.Direct3D9.Format,System.Int32,System.Int32,SharpDX.Direct3D9.PaletteEntry[],SharpDX.Direct3D9.Box,SharpDX.Direct3D9.Filter,SharpDX.ColorBGRA)\">\n            <summary>\t\n            Loads a volume from memory.\t\n            </summary>\t\n            <param name=\"destPaletteRef\"><para>Pointer to a  <see cref=\"T:SharpDX.Direct3D9.PaletteEntry\"/> structure, the destination palette of 256 colors or <c>null</c>.</para></param>\t\n            <param name=\"destBox\"><para>Pointer to a <see cref=\"T:SharpDX.Direct3D9.Box\"/> structure. Specifies the destination box. Set this parameter to <c>null</c> to specify the entire volume.</para></param>\t\n            <param name=\"srcMemoryPointer\"><para>Pointer to the top-left corner of the source volume in memory.</para></param>\t\n            <param name=\"srcFormat\"><para>Member of the <see cref=\"T:SharpDX.Direct3D9.Format\"/> enumerated type, the pixel format of the source volume.</para></param>\t\n            <param name=\"srcRowPitch\"><para>Pitch of source image, in bytes. For DXT formats (compressed texture formats), this number should represent the size of one row of cells, in bytes.</para></param>\t\n            <param name=\"srcSlicePitch\"><para>Pitch of source image, in bytes. For DXT formats (compressed texture formats), this number should represent the size of one slice of cells, in bytes.</para></param>\t\n            <param name=\"srcPaletteRef\"><para>Pointer to a <see cref=\"T:SharpDX.Direct3D9.PaletteEntry\"/> structure, the source palette of 256 colors or <c>null</c>.</para></param>\t\n            <param name=\"srcBox\"><para>Pointer to a <see cref=\"T:SharpDX.Direct3D9.Box\"/> structure. Specifies the source box. <c>null</c> is not a valid value for this parameter.</para></param>\t\n            <param name=\"filter\"><para>A combination of one or more <see cref=\"T:SharpDX.Direct3D9.Filter\"/> controlling how the image is filtered. Specifying D3DX_DEFAULT for this parameter is the equivalent of specifying <see cref=\"F:SharpDX.Direct3D9.Filter.Triangle\"/> | <see cref=\"F:SharpDX.Direct3D9.Filter.Dither\"/>.</para></param>\t\n            <param name=\"colorKey\"><para> <see cref=\"T:SharpDX.Color4\"/> value to replace with transparent black, or 0 to disable the colorkey. This is always a 32-bit ARGB color, independent of the source image format. Alpha is significant and should usually be set to FF for opaque color keys. Thus, for opaque black, the value would be equal to 0xFF000000.</para></param>\t\n            <returns>If the function succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the function fails, the return value can be one of the following values: <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>, D3DXERR_INVALIDDATA.</returns>\t\n            <remarks>\t\n            Writing to a non-level-zero surface of the volume texture will not cause the dirty rectangle to be updated. If <see cref=\"M:SharpDX.Direct3D9.D3DX9.LoadVolumeFromMemory(SharpDX.Direct3D9.Volume,SharpDX.Direct3D9.PaletteEntry[],System.IntPtr,System.IntPtr,SharpDX.Direct3D9.Format,System.Int32,System.Int32,SharpDX.Direct3D9.PaletteEntry[],System.IntPtr,SharpDX.Direct3D9.Filter,System.Int32)\"/> is called and the texture was not already dirty (this is unlikely under normal usage scenarios), the application needs to explicitly call <see cref=\"M:SharpDX.Direct3D9.VolumeTexture.AddDirtyBox(System.IntPtr)\"/> on the volume texture.\t\n            </remarks>\t\n            <unmanaged>HRESULT D3DXLoadVolumeFromMemory([In] IDirect3DVolume9* pDestVolume,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestBox,[In] const void* pSrcMemory,[In] D3DFORMAT SrcFormat,[In] unsigned int SrcRowPitch,[In] unsigned int SrcSlicePitch,[In, Buffer] const PALETTEENTRY* pSrcPalette,[In] const void* pSrcBox,[In] D3DX_FILTER Filter,[In] int ColorKey)</unmanaged>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Volume.FromFile(SharpDX.Direct3D9.Volume,System.String,SharpDX.Direct3D9.Filter,System.Int32)\">\n            <summary>\n            Loads a volume from a file on the disk.\n            </summary>\n            <param name=\"volume\">The volume.</param>\n            <param name=\"fileName\">Name of the file.</param>\n            <param name=\"filter\">The filter.</param>\n            <param name=\"colorKey\">The color key.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT D3DXLoadVolumeFromFileW([In] IDirect3DVolume9* pDestVolume,[In] const PALETTEENTRY* pDestPalette,[In] const D3DBOX* pDestBox,[In] const wchar_t* pSrcFile,[In] const D3DBOX* pSrcBox,[In] unsigned int Filter,[In] D3DCOLOR ColorKey,[In] D3DXIMAGE_INFO* pSrcInfo)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Volume.FromFile(SharpDX.Direct3D9.Volume,System.String,SharpDX.Direct3D9.Filter,System.Int32,SharpDX.Direct3D9.Box,SharpDX.Direct3D9.Box)\">\n            <summary>\n            Loads a volume from a file on the disk.\n            </summary>\n            <param name=\"volume\">The volume.</param>\n            <param name=\"fileName\">Name of the file.</param>\n            <param name=\"filter\">The filter.</param>\n            <param name=\"colorKey\">The color key.</param>\n            <param name=\"sourceBox\">The source box.</param>\n            <param name=\"destinationBox\">The destination box.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT D3DXLoadVolumeFromFileW([In] IDirect3DVolume9* pDestVolume,[In] const PALETTEENTRY* pDestPalette,[In] const D3DBOX* pDestBox,[In] const wchar_t* pSrcFile,[In] const D3DBOX* pSrcBox,[In] unsigned int Filter,[In] D3DCOLOR ColorKey,[In] D3DXIMAGE_INFO* pSrcInfo)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Volume.FromFile(SharpDX.Direct3D9.Volume,System.String,SharpDX.Direct3D9.Filter,System.Int32,SharpDX.Direct3D9.Box,SharpDX.Direct3D9.Box,SharpDX.Direct3D9.ImageInformation@)\">\n            <summary>\n            Loads a volume from a file on the disk.\n            </summary>\n            <param name=\"volume\">The volume.</param>\n            <param name=\"fileName\">Name of the file.</param>\n            <param name=\"filter\">The filter.</param>\n            <param name=\"colorKey\">The color key.</param>\n            <param name=\"sourceBox\">The source box.</param>\n            <param name=\"destinationBox\">The destination box.</param>\n            <param name=\"imageInformation\">The image information.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT D3DXLoadVolumeFromFileW([In] IDirect3DVolume9* pDestVolume,[In] const PALETTEENTRY* pDestPalette,[In] const D3DBOX* pDestBox,[In] const wchar_t* pSrcFile,[In] const D3DBOX* pSrcBox,[In] unsigned int Filter,[In] D3DCOLOR ColorKey,[In] D3DXIMAGE_INFO* pSrcInfo)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Volume.FromFile(SharpDX.Direct3D9.Volume,System.String,SharpDX.Direct3D9.Filter,System.Int32,SharpDX.Direct3D9.Box,SharpDX.Direct3D9.Box,SharpDX.Direct3D9.PaletteEntry[],SharpDX.Direct3D9.ImageInformation@)\">\n            <summary>\n            Loads a volume from a file on the disk.\n            </summary>\n            <param name=\"volume\">The volume.</param>\n            <param name=\"fileName\">Name of the file.</param>\n            <param name=\"filter\">The filter.</param>\n            <param name=\"colorKey\">The color key.</param>\n            <param name=\"sourceBox\">The source box.</param>\n            <param name=\"destinationBox\">The destination box.</param>\n            <param name=\"palette\">The palette.</param>\n            <param name=\"imageInformation\">The image information.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT D3DXLoadVolumeFromFileW([In] IDirect3DVolume9* pDestVolume,[In] const PALETTEENTRY* pDestPalette,[In] const D3DBOX* pDestBox,[In] const wchar_t* pSrcFile,[In] const D3DBOX* pSrcBox,[In] unsigned int Filter,[In] D3DCOLOR ColorKey,[In] D3DXIMAGE_INFO* pSrcInfo)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Volume.FromFileInMemory(SharpDX.Direct3D9.Volume,System.Byte[],SharpDX.Direct3D9.Filter,System.Int32)\">\n            <summary>\n            Loads a volume from a file in memory.\n            </summary>\n            <param name=\"volume\">The volume.</param>\n            <param name=\"memory\">The memory.</param>\n            <param name=\"filter\">The filter.</param>\n            <param name=\"colorKey\">The color key.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT D3DXLoadVolumeFromFileInMemory([In] IDirect3DVolume9* pDestVolume,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestBox,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] const void* pSrcBox,[In] D3DX_FILTER Filter,[In] int ColorKey,[In] void* pSrcInfo)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Volume.FromFileInMemory(SharpDX.Direct3D9.Volume,System.Byte[],SharpDX.Direct3D9.Filter,System.Int32,SharpDX.Direct3D9.Box,SharpDX.Direct3D9.Box)\">\n            <summary>\n            Loads a volume from a file in memory.\n            </summary>\n            <param name=\"volume\">The volume.</param>\n            <param name=\"memory\">The memory.</param>\n            <param name=\"filter\">The filter.</param>\n            <param name=\"colorKey\">The color key.</param>\n            <param name=\"sourceBox\">The source box.</param>\n            <param name=\"destinationBox\">The destination box.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT D3DXLoadVolumeFromFileInMemory([In] IDirect3DVolume9* pDestVolume,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestBox,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] const void* pSrcBox,[In] D3DX_FILTER Filter,[In] int ColorKey,[In] void* pSrcInfo)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Volume.FromFileInMemory(SharpDX.Direct3D9.Volume,System.Byte[],SharpDX.Direct3D9.Filter,System.Int32,SharpDX.Direct3D9.Box,SharpDX.Direct3D9.Box,SharpDX.Direct3D9.ImageInformation@)\">\n            <summary>\n            Loads a volume from a file in memory.\n            </summary>\n            <param name=\"volume\">The volume.</param>\n            <param name=\"memory\">The memory.</param>\n            <param name=\"filter\">The filter.</param>\n            <param name=\"colorKey\">The color key.</param>\n            <param name=\"sourceBox\">The source box.</param>\n            <param name=\"destinationBox\">The destination box.</param>\n            <param name=\"imageInformation\">The image information.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT D3DXLoadVolumeFromFileInMemory([In] IDirect3DVolume9* pDestVolume,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestBox,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] const void* pSrcBox,[In] D3DX_FILTER Filter,[In] int ColorKey,[In] void* pSrcInfo)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Volume.FromFileInMemory(SharpDX.Direct3D9.Volume,System.Byte[],SharpDX.Direct3D9.Filter,System.Int32,SharpDX.Direct3D9.Box,SharpDX.Direct3D9.Box,SharpDX.Direct3D9.PaletteEntry[],SharpDX.Direct3D9.ImageInformation@)\">\n            <summary>\n            Loads a volume from a file in memory.\n            </summary>\n            <param name=\"volume\">The volume.</param>\n            <param name=\"memory\">The memory.</param>\n            <param name=\"filter\">The filter.</param>\n            <param name=\"colorKey\">The color key.</param>\n            <param name=\"sourceBox\">The source box.</param>\n            <param name=\"destinationBox\">The destination box.</param>\n            <param name=\"palette\">The palette.</param>\n            <param name=\"imageInformation\">The image information.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT D3DXLoadVolumeFromFileInMemory([In] IDirect3DVolume9* pDestVolume,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestBox,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] const void* pSrcBox,[In] D3DX_FILTER Filter,[In] int ColorKey,[In] void* pSrcInfo)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Volume.FromFileInStream(SharpDX.Direct3D9.Volume,System.IO.Stream,SharpDX.Direct3D9.Filter,System.Int32)\">\n            <summary>\n            Loads a volume from a file in a strean.\n            </summary>\n            <param name=\"volume\">The volume.</param>\n            <param name=\"stream\">The stream.</param>\n            <param name=\"filter\">The filter.</param>\n            <param name=\"colorKey\">The color key.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT D3DXLoadVolumeFromFileInMemory([In] IDirect3DVolume9* pDestVolume,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestBox,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] const void* pSrcBox,[In] D3DX_FILTER Filter,[In] int ColorKey,[In] void* pSrcInfo)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Volume.FromFileInStream(SharpDX.Direct3D9.Volume,System.IO.Stream,SharpDX.Direct3D9.Filter,System.Int32,SharpDX.Direct3D9.Box,SharpDX.Direct3D9.Box)\">\n            <summary>\n            Loads a volume from a file in a strean.\n            </summary>\n            <param name=\"volume\">The volume.</param>\n            <param name=\"stream\">The stream.</param>\n            <param name=\"filter\">The filter.</param>\n            <param name=\"colorKey\">The color key.</param>\n            <param name=\"sourceBox\">The source box.</param>\n            <param name=\"destinationBox\">The destination box.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT D3DXLoadVolumeFromFileInMemory([In] IDirect3DVolume9* pDestVolume,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestBox,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] const void* pSrcBox,[In] D3DX_FILTER Filter,[In] int ColorKey,[In] void* pSrcInfo)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Volume.FromFileInStream(SharpDX.Direct3D9.Volume,System.IO.Stream,SharpDX.Direct3D9.Filter,System.Int32,SharpDX.Direct3D9.Box,SharpDX.Direct3D9.Box,SharpDX.Direct3D9.ImageInformation@)\">\n            <summary>\n            Loads a volume from a file in a strean.\n            </summary>\n            <param name=\"volume\">The volume.</param>\n            <param name=\"stream\">The stream.</param>\n            <param name=\"filter\">The filter.</param>\n            <param name=\"colorKey\">The color key.</param>\n            <param name=\"sourceBox\">The source box.</param>\n            <param name=\"destinationBox\">The destination box.</param>\n            <param name=\"imageInformation\">The image information.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT D3DXLoadVolumeFromFileInMemory([In] IDirect3DVolume9* pDestVolume,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestBox,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] const void* pSrcBox,[In] D3DX_FILTER Filter,[In] int ColorKey,[In] void* pSrcInfo)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Volume.FromFileInStream(SharpDX.Direct3D9.Volume,System.IO.Stream,SharpDX.Direct3D9.Filter,System.Int32,SharpDX.Direct3D9.Box,SharpDX.Direct3D9.Box,SharpDX.Direct3D9.PaletteEntry[],SharpDX.Direct3D9.ImageInformation@)\">\n            <summary>\n            Loads a volume from a file in a strean.\n            </summary>\n            <param name=\"volume\">The volume.</param>\n            <param name=\"stream\">The stream.</param>\n            <param name=\"filter\">The filter.</param>\n            <param name=\"colorKey\">The color key.</param>\n            <param name=\"sourceBox\">The source box.</param>\n            <param name=\"destinationBox\">The destination box.</param>\n            <param name=\"palette\">The palette.</param>\n            <param name=\"imageInformation\">The image information.</param>\n            <returns>A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.</returns>\n            <unmanaged>HRESULT D3DXLoadVolumeFromFileInMemory([In] IDirect3DVolume9* pDestVolume,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestBox,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] const void* pSrcBox,[In] D3DX_FILTER Filter,[In] int ColorKey,[In] void* pSrcInfo)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Volume.FromVolume(SharpDX.Direct3D9.Volume,SharpDX.Direct3D9.Volume,SharpDX.Direct3D9.Filter,System.Int32)\">\n            <summary>\n            Loads a volume from a source volume.\n            </summary>\n            <param name=\"destinationVolume\">The destination volume.</param>\n            <param name=\"sourceVolume\">The source volume.</param>\n            <param name=\"filter\">The filter.</param>\n            <param name=\"colorKey\">The color key.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT D3DXLoadVolumeFromVolume([In] IDirect3DVolume9* pDestVolume,[In] const PALETTEENTRY* pDestPalette,[In] const D3DBOX* pDestBox,[In] IDirect3DVolume9* pSrcVolume,[In] const PALETTEENTRY* pSrcPalette,[In] const D3DBOX* pSrcBox,[In] unsigned int Filter,[In] D3DCOLOR ColorKey)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Volume.FromVolume(SharpDX.Direct3D9.Volume,SharpDX.Direct3D9.Volume,SharpDX.Direct3D9.Filter,System.Int32,SharpDX.Direct3D9.Box,SharpDX.Direct3D9.Box)\">\n            <summary>\n            Loads a volume from a source volume.\n            </summary>\n            <param name=\"destinationVolume\">The destination volume.</param>\n            <param name=\"sourceVolume\">The source volume.</param>\n            <param name=\"filter\">The filter.</param>\n            <param name=\"colorKey\">The color key.</param>\n            <param name=\"sourceBox\">The source box.</param>\n            <param name=\"destinationBox\">The destination box.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT D3DXLoadVolumeFromVolume([In] IDirect3DVolume9* pDestVolume,[In] const PALETTEENTRY* pDestPalette,[In] const D3DBOX* pDestBox,[In] IDirect3DVolume9* pSrcVolume,[In] const PALETTEENTRY* pSrcPalette,[In] const D3DBOX* pSrcBox,[In] unsigned int Filter,[In] D3DCOLOR ColorKey)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Volume.FromVolume(SharpDX.Direct3D9.Volume,SharpDX.Direct3D9.Volume,SharpDX.Direct3D9.Filter,System.Int32,SharpDX.Direct3D9.Box,SharpDX.Direct3D9.Box,SharpDX.Direct3D9.PaletteEntry[],SharpDX.Direct3D9.PaletteEntry[])\">\n            <summary>\n            Loads a volume from a source volume.\n            </summary>\n            <param name=\"destinationVolume\">The destination volume.</param>\n            <param name=\"sourceVolume\">The source volume.</param>\n            <param name=\"filter\">The filter.</param>\n            <param name=\"colorKey\">The color key.</param>\n            <param name=\"sourceBox\">The source box.</param>\n            <param name=\"destinationBox\">The destination box.</param>\n            <param name=\"destinationPalette\">The destination palette.</param>\n            <param name=\"sourcePalette\">The source palette.</param>\n            <returns>A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.</returns>\n            <unmanaged>HRESULT D3DXLoadVolumeFromVolume([In] IDirect3DVolume9* pDestVolume,[In] const PALETTEENTRY* pDestPalette,[In] const D3DBOX* pDestBox,[In] IDirect3DVolume9* pSrcVolume,[In] const PALETTEENTRY* pSrcPalette,[In] const D3DBOX* pSrcBox,[In] unsigned int Filter,[In] D3DCOLOR ColorKey)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Volume.LockBox(SharpDX.Direct3D9.LockFlags)\">\n            <summary>\n            Locks a box on a volume resource.\n            </summary>\n            <param name=\"flags\">The flags.</param>\n            <returns>\n            The locked region of this resource\n            </returns>\n            <unmanaged>HRESULT IDirect3DVolume9::LockBox([Out] D3DLOCKED_BOX* pLockedVolume,[In] const void* pBox,[In] D3DLOCK Flags)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Volume.LockBox(SharpDX.Direct3D9.Box,SharpDX.Direct3D9.LockFlags)\">\n            <summary>\n            Locks a box on a volume resource.\n            </summary>\n            <param name=\"box\">The box.</param>\n            <param name=\"flags\">The flags.</param>\n            <returns>The locked region of this resource</returns>\n            <unmanaged>HRESULT IDirect3DVolume9::LockBox([Out] D3DLOCKED_BOX* pLockedVolume,[In] const void* pBox,[In] D3DLOCK Flags)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Volume.ToFile(SharpDX.Direct3D9.Volume,System.String,SharpDX.Direct3D9.ImageFileFormat)\">\n            <summary>\n            Saves a volume to a file on disk.\n            </summary>\n            <param name=\"volume\">The volume.</param>\n            <param name=\"fileName\">Name of the file.</param>\n            <param name=\"format\">The format.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT D3DXSaveVolumeToFileW([In] const wchar_t* pDestFile,[In] D3DXIMAGE_FILEFORMAT DestFormat,[In] IDirect3DVolume9* pSrcVolume,[In] const PALETTEENTRY* pSrcPalette,[In] const D3DBOX* pSrcBox)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Volume.ToFile(SharpDX.Direct3D9.Volume,System.String,SharpDX.Direct3D9.ImageFileFormat,SharpDX.Direct3D9.Box)\">\n            <summary>\n            Saves a volume to a file on disk.\n            </summary>\n            <param name=\"volume\">The volume.</param>\n            <param name=\"fileName\">Name of the file.</param>\n            <param name=\"format\">The format.</param>\n            <param name=\"box\">The box.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT D3DXSaveVolumeToFileW([In] const wchar_t* pDestFile,[In] D3DXIMAGE_FILEFORMAT DestFormat,[In] IDirect3DVolume9* pSrcVolume,[In] const PALETTEENTRY* pSrcPalette,[In] const D3DBOX* pSrcBox)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Volume.ToFile(SharpDX.Direct3D9.Volume,System.String,SharpDX.Direct3D9.ImageFileFormat,SharpDX.Direct3D9.Box,SharpDX.Direct3D9.PaletteEntry[])\">\n            <summary>\n            Saves a volume to a file on disk.\n            </summary>\n            <param name=\"volume\">The volume.</param>\n            <param name=\"fileName\">Name of the file.</param>\n            <param name=\"format\">The format.</param>\n            <param name=\"box\">The box.</param>\n            <param name=\"palette\">The palette.</param>\n            <returns>A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.</returns>\n            <unmanaged>HRESULT D3DXSaveVolumeToFileW([In] const wchar_t* pDestFile,[In] D3DXIMAGE_FILEFORMAT DestFormat,[In] IDirect3DVolume9* pSrcVolume,[In] const PALETTEENTRY* pSrcPalette,[In] const D3DBOX* pSrcBox)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Volume.ToStream(SharpDX.Direct3D9.Volume,SharpDX.Direct3D9.ImageFileFormat)\">\n            <summary>\n            Saves a volume to a <see cref=\"T:SharpDX.DataStream\"/>.\n            </summary>\n            <param name=\"volume\">The volume.</param>\n            <param name=\"format\">The format.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT D3DXSaveVolumeToFileInMemory([In] ID3DXBuffer** ppDestBuf,[In] D3DXIMAGE_FILEFORMAT DestFormat,[In] IDirect3DVolume9* pSrcVolume,[In, Buffer] const PALETTEENTRY* pSrcPalette,[In] const void* pSrcBox)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Volume.ToStream(SharpDX.Direct3D9.Volume,SharpDX.Direct3D9.ImageFileFormat,SharpDX.Direct3D9.Box)\">\n            <summary>\n            Saves a volume to a <see cref=\"T:SharpDX.DataStream\"/>.\n            </summary>\n            <param name=\"volume\">The volume.</param>\n            <param name=\"format\">The format.</param>\n            <param name=\"box\">The box.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT D3DXSaveVolumeToFileInMemory([In] ID3DXBuffer** ppDestBuf,[In] D3DXIMAGE_FILEFORMAT DestFormat,[In] IDirect3DVolume9* pSrcVolume,[In, Buffer] const PALETTEENTRY* pSrcPalette,[In] const void* pSrcBox)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Volume.ToStream(SharpDX.Direct3D9.Volume,SharpDX.Direct3D9.ImageFileFormat,SharpDX.Direct3D9.Box,SharpDX.Direct3D9.PaletteEntry[])\">\n            <summary>\n            Saves a volume to a <see cref=\"T:SharpDX.DataStream\"/>. \n            </summary>\n            <param name=\"volume\">The volume.</param>\n            <param name=\"format\">The format.</param>\n            <param name=\"box\">The box.</param>\n            <param name=\"palette\">The palette.</param>\n            <returns>A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.</returns>\n            <unmanaged>HRESULT D3DXSaveVolumeToFileInMemory([In] ID3DXBuffer** ppDestBuf,[In] D3DXIMAGE_FILEFORMAT DestFormat,[In] IDirect3DVolume9* pSrcVolume,[In, Buffer] const PALETTEENTRY* pSrcPalette,[In] const void* pSrcBox)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.Volume.Device\">\n            <summary>\t\n            <p>Retrieves the device associated with a volume.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This method allows navigation to the owning device object. </p><p>Calling this method will increase the internal reference count on the <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface. Failure to call <strong>IUnknown::Release</strong> when finished using this <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface results in a memory leak.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DVolume9::GetDevice']/*\"/>\t\n            <msdn-id>bb205936</msdn-id>\t\n            <unmanaged>GetDevice</unmanaged>\t\n            <unmanaged-short>GetDevice</unmanaged-short>\t\n            <unmanaged>HRESULT IDirect3DVolume9::GetDevice([Out] IDirect3DDevice9** ppDevice)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.Volume.Description\">\n            <summary>\t\n            <p>Retrieves a description of the volume.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DVolume9::GetDesc']/*\"/>\t\n            <msdn-id>bb205935</msdn-id>\t\n            <unmanaged>GetDesc</unmanaged>\t\n            <unmanaged-short>GetDesc</unmanaged-short>\t\n            <unmanaged>HRESULT IDirect3DVolume9::GetDesc([Out] D3DVOLUME_DESC* pDesc)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.VolumeTexture\">\n            <summary>\t\n            <p>Applications use the methods of the <see cref=\"T:SharpDX.Direct3D9.VolumeTexture\"/> interface to manipulate a volume texture resource.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The <strong><see cref=\"T:SharpDX.Direct3D9.VolumeTexture\"/></strong> interface can be obtained by calling the <strong>CreateVolumeTexture</strong> method or one of the <see cref=\"M:SharpDX.Direct3D9.D3DX9.CreateVolumeTexture(SharpDX.Direct3D9.Device,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,SharpDX.Direct3D9.VolumeTexture@)\"/><em>xxx</em> functions.</p><p>This interface inherits additional functionality from the <strong><see cref=\"T:SharpDX.Direct3D9.BaseTexture\"/></strong> interface.</p><p>This interface, like all COM interfaces, inherits from the <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interface.</p><p>The LPDIRECT3DVOLUMETEXTURE9 and PDIRECT3DVOLUMETEXTURE9 types are defined as references to the <strong><see cref=\"T:SharpDX.Direct3D9.VolumeTexture\"/></strong> interface. </p><pre><code> typedef struct <see cref=\"T:SharpDX.Direct3D9.VolumeTexture\"/> *LPDIRECT3DVOLUMETEXTURE9, *PDIRECT3DVOLUMETEXTURE9;\t\n            </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DVolumeTexture9']/*\"/>\t\n            <msdn-id>bb205941</msdn-id>\t\n            <unmanaged>IDirect3DVolumeTexture9</unmanaged>\t\n            <unmanaged-short>IDirect3DVolumeTexture9</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.VolumeTexture.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D9.VolumeTexture\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.VolumeTexture.op_Explicit(System.IntPtr)~SharpDX.Direct3D9.VolumeTexture\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D9.VolumeTexture\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.VolumeTexture.GetLevelDescription(System.Int32)\">\n            <summary>\t\n            <p>Retrieves a level description of a volume texture resource.</p>\t\n            </summary>\t\n            <param name=\"level\"><dd>  <p>Identifies a level of the volume texture resource. This method returns a volume description for the level specified by this parameter. </p> </dd></param>\t\n            <returns><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.VolumeDescription\"/></strong> structure, describing the returned volume texture level. </p> </dd></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DVolumeTexture9::GetLevelDesc']/*\"/>\t\n            <msdn-id>bb205943</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DVolumeTexture9::GetLevelDesc([In] unsigned int Level,[Out] D3DVOLUME_DESC* pDesc)</unmanaged>\t\n            <unmanaged-short>IDirect3DVolumeTexture9::GetLevelDesc</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.VolumeTexture.GetVolumeLevel(System.Int32)\">\n            <summary>\t\n            <p>Retrieves the specified volume texture level.</p>\t\n            </summary>\t\n            <param name=\"level\"><dd>  <p>Identifies a level of the volume texture resource. This method returns a volume for the level specified by this parameter. </p> </dd></param>\t\n            <returns><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D9.Volume\"/></strong> interface, representing the returned volume level. </p> </dd></returns>\t\n            <remarks>\t\n            <p>Calling this method will increase the internal reference count on the <strong><see cref=\"T:SharpDX.Direct3D9.Volume\"/></strong> interface. Failure to call <strong>IUnknown::Release</strong> when finished using this <strong><see cref=\"T:SharpDX.Direct3D9.Volume\"/></strong> interface results in a memory leak.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DVolumeTexture9::GetVolumeLevel']/*\"/>\t\n            <msdn-id>bb205944</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DVolumeTexture9::GetVolumeLevel([In] unsigned int Level,[Out] IDirect3DVolume9** ppVolumeLevel)</unmanaged>\t\n            <unmanaged-short>IDirect3DVolumeTexture9::GetVolumeLevel</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.VolumeTexture.LockBox(System.Int32,SharpDX.Direct3D9.LockedBox@,System.IntPtr,SharpDX.Direct3D9.LockFlags)\">\n            <summary>\t\n            <p>Locks a box on a volume texture resource.</p>\t\n            </summary>\t\n            <param name=\"level\"><dd>  <p>Specifies the level of the volume texture resource to lock. </p> </dd></param>\t\n            <param name=\"lockedVolumeRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.LockedBox\"/></strong> structure, describing the locked region. </p> </dd></param>\t\n            <param name=\"boxRef\"><dd>  <p>Pointer to the volume to lock. This parameter is specified by a reference to a <strong><see cref=\"T:SharpDX.Direct3D9.Box\"/></strong> structure. Specifying <strong><c>null</c></strong> for this parameter locks the entire volume level. </p> </dd></param>\t\n            <param name=\"flags\"><dd>  <p>Combination of zero or more locking flags that describe the type of lock to perform. For this method, the valid flags are:  </p> <ul> <li><see cref=\"F:SharpDX.Direct3D9.LockFlags.Discard\"/></li> <li><see cref=\"F:SharpDX.Direct3D9.LockFlags.NoDirtyUpdate\"/></li> <li><see cref=\"F:SharpDX.Direct3D9.LockFlags.NoSystemLock\"/></li> <li><see cref=\"F:SharpDX.Direct3D9.LockFlags.ReadOnly\"/></li> </ul> <p> For a description of the flags, see <see cref=\"T:SharpDX.Direct3D9.LockFlags\"/>. </p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>. </p></returns>\t\n            <remarks>\t\n            <p>For performance reasons, dirty regions are only recorded for level zero of a texture. Dirty regions are automatically recorded when <strong>LockBox</strong> is called without <see cref=\"F:SharpDX.Direct3D9.LockFlags.NoDirtyUpdate\"/> or <see cref=\"F:SharpDX.Direct3D9.LockFlags.ReadOnly\"/>. For more information, see <strong>UpdateTexture</strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DVolumeTexture9::LockBox']/*\"/>\t\n            <msdn-id>bb205945</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DVolumeTexture9::LockBox([In] unsigned int Level,[Out] D3DLOCKED_BOX* pLockedVolume,[In] const void* pBox,[In] D3DLOCK Flags)</unmanaged>\t\n            <unmanaged-short>IDirect3DVolumeTexture9::LockBox</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.VolumeTexture.UnlockBox(System.Int32)\">\n            <summary>\t\n            <p>Unlocks a box on a volume texture resource.</p>\t\n            </summary>\t\n            <param name=\"level\"><dd>  <p>Specifies the level of the volume texture resource to unlock. </p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>. </p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DVolumeTexture9::UnlockBox']/*\"/>\t\n            <msdn-id>bb205946</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DVolumeTexture9::UnlockBox([In] unsigned int Level)</unmanaged>\t\n            <unmanaged-short>IDirect3DVolumeTexture9::UnlockBox</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.VolumeTexture.AddDirtyBox(System.IntPtr)\">\n            <summary>\t\n            <p>Adds a dirty region to a volume texture resource.</p>\t\n            </summary>\t\n            <param name=\"dirtyBoxRef\"><dd>  <p>Pointer to a <strong><see cref=\"T:SharpDX.Direct3D9.Box\"/></strong> structure, specifying the dirty region to add. Specifying <strong><c>null</c></strong> expands the dirty region to cover the entire volume texture. </p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/>. If the method fails, the return value can be <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>. </p></returns>\t\n            <remarks>\t\n            <p>For performance reasons, dirty regions are only recorded for level zero of a texture. For sublevels, it is assumed that the corresponding (scaled) box is also dirty. Dirty regions are automatically recorded when <strong>LockBox</strong> is called without <see cref=\"F:SharpDX.Direct3D9.LockFlags.NoDirtyUpdate\"/> or <see cref=\"F:SharpDX.Direct3D9.LockFlags.ReadOnly\"/>.</p><p>Using <see cref=\"F:SharpDX.Direct3D9.LockFlags.NoDirtyUpdate\"/> and explicitly specifying dirty regions can be used to increase the efficiency of <strong>UpdateTexture</strong>. Using this method, applications can optimize what subset of a resource is copied by specifying dirty boxes on the resource. However, the dirty regions may be expanded to optimize alignment.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DVolumeTexture9::AddDirtyBox']/*\"/>\t\n            <msdn-id>bb205942</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DVolumeTexture9::AddDirtyBox([In] const void* pDirtyBox)</unmanaged>\t\n            <unmanaged-short>IDirect3DVolumeTexture9::AddDirtyBox</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.VolumeTexture.#ctor(SharpDX.Direct3D9.Device,System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Usage,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D9.VolumeTexture\"/> class.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"width\">The width.</param>\n            <param name=\"height\">The height.</param>\n            <param name=\"depth\">The depth.</param>\n            <param name=\"levelCount\">The level count.</param>\n            <param name=\"usage\">The usage.</param>\n            <param name=\"format\">The format.</param>\n            <param name=\"pool\">The pool.</param>\n            <unmanaged>HRESULT IDirect3DDevice9::CreateVolumeTexture([In] unsigned int Width,[In] unsigned int Height,[In] unsigned int Levels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[Out, Fast] IDirect3DVolumeTexture9** ppVolumeTexture,[In] void** pSharedHandle)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.VolumeTexture.#ctor(SharpDX.Direct3D9.Device,System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Usage,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,System.IntPtr@)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D9.VolumeTexture\"/> class.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"width\">The width.</param>\n            <param name=\"height\">The height.</param>\n            <param name=\"depth\">The depth.</param>\n            <param name=\"levelCount\">The level count.</param>\n            <param name=\"usage\">The usage.</param>\n            <param name=\"format\">The format.</param>\n            <param name=\"pool\">The pool.</param>\n            <param name=\"sharedHandle\">The shared handle.</param>\n            <unmanaged>HRESULT IDirect3DDevice9::CreateVolumeTexture([In] unsigned int Width,[In] unsigned int Height,[In] unsigned int Levels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[Out, Fast] IDirect3DVolumeTexture9** ppVolumeTexture,[In] void** pSharedHandle)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.VolumeTexture.CheckRequirements(SharpDX.Direct3D9.Device,System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Usage,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool)\">\n            <summary>\n            Checks texture-creation parameters.\n            </summary>\n            <param name=\"device\">Device associated with the texture.</param>\n            <param name=\"width\">The width.</param>\n            <param name=\"height\">The height.</param>\n            <param name=\"depth\">The depth.</param>\n            <param name=\"mipLevelCount\">Requested number of mipmap levels for the texture.</param>\n            <param name=\"usage\">The requested usage for the texture.</param>\n            <param name=\"format\">Requested format for the texture.</param>\n            <param name=\"pool\">Memory class where the resource will be placed.</param>\n            <returns>\n            A value type containing the proposed values to pass to the texture creation functions.\n            </returns>\n            <unmanaged>HRESULT D3DXCheckVolumeTextureRequirements([In] IDirect3DDevice9* pDevice,[InOut] unsigned int* pWidth,[InOut] unsigned int* pHeight,[InOut] unsigned int* pDepth,[InOut] unsigned int* pNumMipLevels,[In] unsigned int Usage,[InOut] D3DFORMAT* pFormat,[In] D3DPOOL Pool)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.VolumeTexture.Fill(SharpDX.Direct3D9.Fill3DCallback)\">\n            <summary>\n            Uses a user-provided function to fill each texel of each mip level of a given texture.\n            </summary>\n            <param name=\"callback\">A function that is used to fill the texture.</param>\n            <returns>A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.</returns>\n            <unmanaged>HRESULT D3DXFillVolumeTexture([In] IDirect3DVolumeTexture9* pVolumeTexture,[In] __function__stdcall* pFunction,[In] void* pData)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.VolumeTexture.Fill(SharpDX.Direct3D9.TextureShader)\">\n            <summary>\n            Uses a compiled high-level shader language (HLSL) function to fill each texel of each mipmap level of a texture.\n            </summary>\n            <param name=\"shader\">A texture shader object that is used to fill the texture.</param>\n            <returns>A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.</returns>\n            <unmanaged>HRESULT D3DXFillVolumeTextureTX([In] IDirect3DVolumeTexture9* pVolumeTexture,[In] ID3DXVolumeTextureShader* pVolumeTextureShader)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.VolumeTexture.LockBox(System.Int32,SharpDX.Direct3D9.LockFlags)\">\n            <summary>\n            Locks a box on a volume texture resource.\n            </summary>\n            <param name=\"level\">The level.</param>\n            <param name=\"flags\">The flags.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.DataBox\"/> describing the region locked.\n            </returns>\n            <unmanaged>HRESULT IDirect3DVolumeTexture9::LockBox([In] unsigned int Level,[Out] D3DLOCKED_BOX* pLockedVolume,[In] const void* pBox,[In] D3DLOCK Flags)</unmanaged>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.VolumeTexture.LockBox(System.Int32,SharpDX.Direct3D9.Box,SharpDX.Direct3D9.LockFlags)\">\n            <summary>\n            Locks a box on a volume texture resource.\n            </summary>\n            <param name=\"level\">The level.</param>\n            <param name=\"box\">The box.</param>\n            <param name=\"flags\">The flags.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.DataRectangle\"/> describing the region locked.\n            </returns>\n            <unmanaged>HRESULT IDirect3DVolumeTexture9::LockBox([In] unsigned int Level,[Out] D3DLOCKED_BOX* pLockedVolume,[In] const void* pBox,[In] D3DLOCK Flags)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.VolumeTexture.AddDirtyBox\">\n            <summary>\n            Adds a dirty region to a texture resource.\n            </summary>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT IDirect3DVolumeTexture9::AddDirtyBox([In] const void* pDirtyBox)</unmanaged>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.VolumeTexture.AddDirtyBox(SharpDX.Direct3D9.Box)\">\n            <summary>\n            Adds a dirty region to a texture resource.\n            </summary>\n            <param name=\"directBoxRef\">The direct box ref.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.\n            </returns>\n            <unmanaged>HRESULT IDirect3DVolumeTexture9::AddDirtyBox([In] const void* pDirtyBox)</unmanaged>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.VolumeTexture.FromFile(SharpDX.Direct3D9.Device,System.String)\">\n            <summary>\n            Creates a <see cref=\"T:SharpDX.Direct3D9.VolumeTexture\"/> from a file\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"filename\">The filename.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Direct3D9.VolumeTexture\"/>\n            </returns>\n            <unmanaged>HRESULT D3DXCreateVolumeTextureFromFileExW([In] IDirect3DDevice9* pDevice,[In] const wchar_t* pSrcFile,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[In] void* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DVolumeTexture9** ppVolumeTexture)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.VolumeTexture.FromFile(SharpDX.Direct3D9.Device,System.String,SharpDX.Direct3D9.Usage,SharpDX.Direct3D9.Pool)\">\n            <summary>\n            Creates a <see cref=\"T:SharpDX.Direct3D9.VolumeTexture\"/> from a file\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"filename\">The filename.</param>\n            <param name=\"usage\">The usage.</param>\n            <param name=\"pool\">The pool.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Direct3D9.VolumeTexture\"/>\n            </returns>\n            <unmanaged>HRESULT D3DXCreateVolumeTextureFromFileExW([In] IDirect3DDevice9* pDevice,[In] const wchar_t* pSrcFile,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[In] void* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DVolumeTexture9** ppVolumeTexture)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.VolumeTexture.FromFile(SharpDX.Direct3D9.Device,System.String,System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Usage,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,SharpDX.Direct3D9.Filter,SharpDX.Direct3D9.Filter,System.Int32)\">\n            <summary>\n            Creates a <see cref=\"T:SharpDX.Direct3D9.VolumeTexture\"/> from a file\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"filename\">The filename.</param>\n            <param name=\"width\">The width.</param>\n            <param name=\"height\">The height.</param>\n            <param name=\"levelCount\">The level count.</param>\n            <param name=\"usage\">The usage.</param>\n            <param name=\"format\">The format.</param>\n            <param name=\"pool\">The pool.</param>\n            <param name=\"filter\">The filter.</param>\n            <param name=\"mipFilter\">The mip filter.</param>\n            <param name=\"colorKey\">The color key.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Direct3D9.VolumeTexture\"/>\n            </returns>\n            <unmanaged>HRESULT D3DXCreateVolumeTextureFromFileExW([In] IDirect3DDevice9* pDevice,[In] const wchar_t* pSrcFile,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[In] void* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DVolumeTexture9** ppVolumeTexture)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.VolumeTexture.FromFile(SharpDX.Direct3D9.Device,System.String,System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Usage,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,SharpDX.Direct3D9.Filter,SharpDX.Direct3D9.Filter,System.Int32,SharpDX.Direct3D9.ImageInformation@)\">\n            <summary>\n            Creates a <see cref=\"T:SharpDX.Direct3D9.VolumeTexture\"/> from a file\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"filename\">The filename.</param>\n            <param name=\"width\">The width.</param>\n            <param name=\"height\">The height.</param>\n            <param name=\"levelCount\">The level count.</param>\n            <param name=\"usage\">The usage.</param>\n            <param name=\"format\">The format.</param>\n            <param name=\"pool\">The pool.</param>\n            <param name=\"filter\">The filter.</param>\n            <param name=\"mipFilter\">The mip filter.</param>\n            <param name=\"colorKey\">The color key.</param>\n            <param name=\"imageInformation\">The image information.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Direct3D9.VolumeTexture\"/>\n            </returns>\n            <unmanaged>HRESULT D3DXCreateVolumeTextureFromFileExW([In] IDirect3DDevice9* pDevice,[In] const wchar_t* pSrcFile,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[In] void* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DVolumeTexture9** ppVolumeTexture)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.VolumeTexture.FromFile(SharpDX.Direct3D9.Device,System.String,System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Usage,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,SharpDX.Direct3D9.Filter,SharpDX.Direct3D9.Filter,System.Int32,SharpDX.Direct3D9.ImageInformation@,SharpDX.Direct3D9.PaletteEntry[]@)\">\n            <summary>\n            Creates a <see cref=\"T:SharpDX.Direct3D9.VolumeTexture\"/> from a file\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"filename\">The filename.</param>\n            <param name=\"width\">The width.</param>\n            <param name=\"height\">The height.</param>\n            <param name=\"levelCount\">The level count.</param>\n            <param name=\"usage\">The usage.</param>\n            <param name=\"format\">The format.</param>\n            <param name=\"pool\">The pool.</param>\n            <param name=\"filter\">The filter.</param>\n            <param name=\"mipFilter\">The mip filter.</param>\n            <param name=\"colorKey\">The color key.</param>\n            <param name=\"imageInformation\">The image information.</param>\n            <param name=\"palette\">The palette.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Direct3D9.VolumeTexture\"/>\n            </returns>\n            <unmanaged>HRESULT D3DXCreateVolumeTextureFromFileExW([In] IDirect3DDevice9* pDevice,[In] const wchar_t* pSrcFile,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[In] void* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DVolumeTexture9** ppVolumeTexture)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.VolumeTexture.FromMemory(SharpDX.Direct3D9.Device,System.Byte[])\">\n            <summary>\n            Creates a <see cref=\"T:SharpDX.Direct3D9.VolumeTexture\"/> from a memory buffer.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"buffer\">The buffer.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Direct3D9.VolumeTexture\"/>\n            </returns>\n            <unmanaged>HRESULT D3DXCreateVolumeTextureFromFileInMemory([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] IDirect3DVolumeTexture9** ppVolumeTexture)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.VolumeTexture.FromMemory(SharpDX.Direct3D9.Device,System.Byte[],SharpDX.Direct3D9.Usage,SharpDX.Direct3D9.Pool)\">\n            <summary>\n            Creates a <see cref=\"T:SharpDX.Direct3D9.VolumeTexture\"/> from a memory buffer.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"buffer\">The buffer.</param>\n            <param name=\"usage\">The usage.</param>\n            <param name=\"pool\">The pool.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Direct3D9.VolumeTexture\"/>\n            </returns>\n            <unmanaged>HRESULT D3DXCreateVolumeTextureFromFileInMemoryEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[Out] D3DXIMAGE_INFO* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DVolumeTexture9** ppVolumeTexture)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.VolumeTexture.FromMemory(SharpDX.Direct3D9.Device,System.Byte[],System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Usage,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,SharpDX.Direct3D9.Filter,SharpDX.Direct3D9.Filter,System.Int32)\">\n            <summary>\n            Creates a <see cref=\"T:SharpDX.Direct3D9.VolumeTexture\"/> from a memory buffer.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"buffer\">The buffer.</param>\n            <param name=\"width\">The width.</param>\n            <param name=\"height\">The height.</param>\n            <param name=\"depth\">The depth.</param>\n            <param name=\"levelCount\">The level count.</param>\n            <param name=\"usage\">The usage.</param>\n            <param name=\"format\">The format.</param>\n            <param name=\"pool\">The pool.</param>\n            <param name=\"filter\">The filter.</param>\n            <param name=\"mipFilter\">The mip filter.</param>\n            <param name=\"colorKey\">The color key.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Direct3D9.VolumeTexture\"/>\n            </returns>\n            <unmanaged>HRESULT D3DXCreateVolumeTextureFromFileInMemoryEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[Out] D3DXIMAGE_INFO* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DVolumeTexture9** ppVolumeTexture)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.VolumeTexture.FromMemory(SharpDX.Direct3D9.Device,System.Byte[],System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Usage,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,SharpDX.Direct3D9.Filter,SharpDX.Direct3D9.Filter,System.Int32,SharpDX.Direct3D9.ImageInformation@)\">\n            <summary>\n            Creates a <see cref=\"T:SharpDX.Direct3D9.VolumeTexture\"/> from a memory buffer.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"buffer\">The buffer.</param>\n            <param name=\"width\">The width.</param>\n            <param name=\"height\">The height.</param>\n            <param name=\"depth\">The depth.</param>\n            <param name=\"levelCount\">The level count.</param>\n            <param name=\"usage\">The usage.</param>\n            <param name=\"format\">The format.</param>\n            <param name=\"pool\">The pool.</param>\n            <param name=\"filter\">The filter.</param>\n            <param name=\"mipFilter\">The mip filter.</param>\n            <param name=\"colorKey\">The color key.</param>\n            <param name=\"imageInformation\">The image information.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Direct3D9.VolumeTexture\"/>\n            </returns>\n            <unmanaged>HRESULT D3DXCreateVolumeTextureFromFileInMemoryEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[Out] D3DXIMAGE_INFO* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DVolumeTexture9** ppVolumeTexture)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.VolumeTexture.FromMemory(SharpDX.Direct3D9.Device,System.Byte[],System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Usage,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,SharpDX.Direct3D9.Filter,SharpDX.Direct3D9.Filter,System.Int32,SharpDX.Direct3D9.ImageInformation@,SharpDX.Direct3D9.PaletteEntry[]@)\">\n            <summary>\n            Creates a <see cref=\"T:SharpDX.Direct3D9.VolumeTexture\"/> from a memory buffer.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"buffer\">The buffer.</param>\n            <param name=\"width\">The width.</param>\n            <param name=\"height\">The height.</param>\n            <param name=\"depth\">The depth.</param>\n            <param name=\"levelCount\">The level count.</param>\n            <param name=\"usage\">The usage.</param>\n            <param name=\"format\">The format.</param>\n            <param name=\"pool\">The pool.</param>\n            <param name=\"filter\">The filter.</param>\n            <param name=\"mipFilter\">The mip filter.</param>\n            <param name=\"colorKey\">The color key.</param>\n            <param name=\"imageInformation\">The image information.</param>\n            <param name=\"palette\">The palette.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Direct3D9.VolumeTexture\"/>\n            </returns>\n            <unmanaged>HRESULT D3DXCreateVolumeTextureFromFileInMemoryEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[Out] D3DXIMAGE_INFO* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DVolumeTexture9** ppVolumeTexture)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.VolumeTexture.FromStream(SharpDX.Direct3D9.Device,System.IO.Stream)\">\n            <summary>\n            Creates a <see cref=\"T:SharpDX.Direct3D9.VolumeTexture\"/> from a stream.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"stream\">The stream.</param>\n            <returns>A <see cref=\"T:SharpDX.Direct3D9.VolumeTexture\"/></returns>\n            <unmanaged>HRESULT D3DXCreateVolumeTextureFromFileInMemory([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] IDirect3DVolumeTexture9** ppVolumeTexture)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.VolumeTexture.FromStream(SharpDX.Direct3D9.Device,System.IO.Stream,SharpDX.Direct3D9.Usage,SharpDX.Direct3D9.Pool)\">\n            <summary>\n            Creates a <see cref=\"T:SharpDX.Direct3D9.VolumeTexture\"/> from a stream.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"stream\">The stream.</param>\n            <param name=\"usage\">The usage.</param>\n            <param name=\"pool\">The pool.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Direct3D9.VolumeTexture\"/>\n            </returns>\n            <unmanaged>HRESULT D3DXCreateVolumeTextureFromFileInMemoryEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[Out] D3DXIMAGE_INFO* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DVolumeTexture9** ppVolumeTexture)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.VolumeTexture.FromStream(SharpDX.Direct3D9.Device,System.IO.Stream,System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Usage,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,SharpDX.Direct3D9.Filter,SharpDX.Direct3D9.Filter,System.Int32)\">\n            <summary>\n            Creates a <see cref=\"T:SharpDX.Direct3D9.VolumeTexture\"/> from a stream.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"stream\">The stream.</param>\n            <param name=\"width\">The width.</param>\n            <param name=\"height\">The height.</param>\n            <param name=\"depth\">The depth.</param>\n            <param name=\"levelCount\">The level count.</param>\n            <param name=\"usage\">The usage.</param>\n            <param name=\"format\">The format.</param>\n            <param name=\"pool\">The pool.</param>\n            <param name=\"filter\">The filter.</param>\n            <param name=\"mipFilter\">The mip filter.</param>\n            <param name=\"colorKey\">The color key.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Direct3D9.VolumeTexture\"/>\n            </returns>\n            <unmanaged>HRESULT D3DXCreateVolumeTextureFromFileInMemoryEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[Out] D3DXIMAGE_INFO* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DVolumeTexture9** ppVolumeTexture)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.VolumeTexture.FromStream(SharpDX.Direct3D9.Device,System.IO.Stream,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Usage,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,SharpDX.Direct3D9.Filter,SharpDX.Direct3D9.Filter,System.Int32)\">\n            <summary>\n            Creates a <see cref=\"T:SharpDX.Direct3D9.VolumeTexture\"/> from a stream.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"stream\">The stream.</param>\n            <param name=\"sizeBytes\">The size bytes.</param>\n            <param name=\"size\">The size.</param>\n            <param name=\"levelCount\">The level count.</param>\n            <param name=\"usage\">The usage.</param>\n            <param name=\"format\">The format.</param>\n            <param name=\"pool\">The pool.</param>\n            <param name=\"filter\">The filter.</param>\n            <param name=\"mipFilter\">The mip filter.</param>\n            <param name=\"colorKey\">The color key.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Direct3D9.VolumeTexture\"/>\n            </returns>\n            <unmanaged>HRESULT D3DXCreateVolumeTextureFromFileInMemoryEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[Out] D3DXIMAGE_INFO* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DVolumeTexture9** ppVolumeTexture)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.VolumeTexture.FromStream(SharpDX.Direct3D9.Device,System.IO.Stream,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Usage,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,SharpDX.Direct3D9.Filter,SharpDX.Direct3D9.Filter,System.Int32,SharpDX.Direct3D9.ImageInformation@)\">\n            <summary>\n            Creates a <see cref=\"T:SharpDX.Direct3D9.VolumeTexture\"/> from a stream.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"stream\">The stream.</param>\n            <param name=\"sizeBytes\">The size bytes.</param>\n            <param name=\"size\">The size.</param>\n            <param name=\"levelCount\">The level count.</param>\n            <param name=\"usage\">The usage.</param>\n            <param name=\"format\">The format.</param>\n            <param name=\"pool\">The pool.</param>\n            <param name=\"filter\">The filter.</param>\n            <param name=\"mipFilter\">The mip filter.</param>\n            <param name=\"colorKey\">The color key.</param>\n            <param name=\"imageInformation\">The image information.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Direct3D9.VolumeTexture\"/>\n            </returns>\n            <unmanaged>HRESULT D3DXCreateVolumeTextureFromFileInMemoryEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[Out] D3DXIMAGE_INFO* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DVolumeTexture9** ppVolumeTexture)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.VolumeTexture.FromStream(SharpDX.Direct3D9.Device,System.IO.Stream,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Usage,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,SharpDX.Direct3D9.Filter,SharpDX.Direct3D9.Filter,System.Int32,SharpDX.Direct3D9.ImageInformation@,SharpDX.Direct3D9.PaletteEntry[]@)\">\n            <summary>\n            Creates a <see cref=\"T:SharpDX.Direct3D9.VolumeTexture\"/> from a stream.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"stream\">The stream.</param>\n            <param name=\"sizeBytes\">The size bytes.</param>\n            <param name=\"size\">The size.</param>\n            <param name=\"levelCount\">The level count.</param>\n            <param name=\"usage\">The usage.</param>\n            <param name=\"format\">The format.</param>\n            <param name=\"pool\">The pool.</param>\n            <param name=\"filter\">The filter.</param>\n            <param name=\"mipFilter\">The mip filter.</param>\n            <param name=\"colorKey\">The color key.</param>\n            <param name=\"imageInformation\">The image information.</param>\n            <param name=\"palette\">The palette.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Direct3D9.VolumeTexture\"/>\n            </returns>\n            <unmanaged>HRESULT D3DXCreateVolumeTextureFromFileInMemoryEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[Out] D3DXIMAGE_INFO* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DVolumeTexture9** ppVolumeTexture)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.VolumeTexture.CreateFromMemory(SharpDX.Direct3D9.Device,System.Byte[],System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Usage,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,SharpDX.Direct3D9.Filter,SharpDX.Direct3D9.Filter,System.Int32,System.IntPtr,SharpDX.Direct3D9.PaletteEntry[])\">\n            <summary>\n            Creates a <see cref=\"T:SharpDX.Direct3D9.VolumeTexture\"/> from a stream.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"buffer\">The buffer.</param>\n            <param name=\"size\">The size.</param>\n            <param name=\"levelCount\">The level count.</param>\n            <param name=\"usage\">The usage.</param>\n            <param name=\"format\">The format.</param>\n            <param name=\"pool\">The pool.</param>\n            <param name=\"filter\">The filter.</param>\n            <param name=\"mipFilter\">The mip filter.</param>\n            <param name=\"colorKey\">The color key.</param>\n            <param name=\"imageInformation\">The image information.</param>\n            <param name=\"palette\">The palette.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Direct3D9.VolumeTexture\"/>\n            </returns>\n            <unmanaged>HRESULT D3DXCreateVolumeTextureFromFileInMemoryEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[Out] D3DXIMAGE_INFO* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DVolumeTexture9** ppVolumeTexture)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.VolumeTexture.CreateFromStream(SharpDX.Direct3D9.Device,System.IO.Stream,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Usage,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,SharpDX.Direct3D9.Filter,SharpDX.Direct3D9.Filter,System.Int32,System.IntPtr,SharpDX.Direct3D9.PaletteEntry[])\">\n            <summary>\n            Creates a <see cref=\"T:SharpDX.Direct3D9.VolumeTexture\"/> from a stream.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"stream\">The stream.</param>\n            <param name=\"sizeBytes\">The size bytes.</param>\n            <param name=\"size\">The size.</param>\n            <param name=\"levelCount\">The level count.</param>\n            <param name=\"usage\">The usage.</param>\n            <param name=\"format\">The format.</param>\n            <param name=\"pool\">The pool.</param>\n            <param name=\"filter\">The filter.</param>\n            <param name=\"mipFilter\">The mip filter.</param>\n            <param name=\"colorKey\">The color key.</param>\n            <param name=\"imageInformation\">The image information.</param>\n            <param name=\"palette\">The palette.</param>\n            <returns>A <see cref=\"T:SharpDX.Direct3D9.VolumeTexture\"/></returns>\n            <unmanaged>HRESULT D3DXCreateVolumeTextureFromFileInMemoryEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[Out] D3DXIMAGE_INFO* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DVolumeTexture9** ppVolumeTexture)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.VolumeTexture.CreateFromPointer(SharpDX.Direct3D9.Device,System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Usage,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,SharpDX.Direct3D9.Filter,SharpDX.Direct3D9.Filter,System.Int32,System.IntPtr,SharpDX.Direct3D9.PaletteEntry[])\">\n            <summary>\n            Creates a <see cref=\"T:SharpDX.Direct3D9.VolumeTexture\"/> from a stream.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"pointer\">The pointer.</param>\n            <param name=\"sizeInBytes\">The size in bytes.</param>\n            <param name=\"size\">The size.</param>\n            <param name=\"levelCount\">The level count.</param>\n            <param name=\"usage\">The usage.</param>\n            <param name=\"format\">The format.</param>\n            <param name=\"pool\">The pool.</param>\n            <param name=\"filter\">The filter.</param>\n            <param name=\"mipFilter\">The mip filter.</param>\n            <param name=\"colorKey\">The color key.</param>\n            <param name=\"imageInformation\">The image information.</param>\n            <param name=\"palette\">The palette.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Direct3D9.VolumeTexture\"/>\n            </returns>\n            <unmanaged>HRESULT D3DXCreateVolumeTextureFromFileInMemoryEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[Out] D3DXIMAGE_INFO* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DVolumeTexture9** ppVolumeTexture)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.VolumeTexture.CreateFromFile(SharpDX.Direct3D9.Device,System.String,System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Usage,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,SharpDX.Direct3D9.Filter,SharpDX.Direct3D9.Filter,System.Int32,System.IntPtr,SharpDX.Direct3D9.PaletteEntry[])\">\n            <summary>\n            Creates a <see cref=\"T:SharpDX.Direct3D9.VolumeTexture\"/> from a stream.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"fileName\">Name of the file.</param>\n            <param name=\"size\">The size.</param>\n            <param name=\"levelCount\">The level count.</param>\n            <param name=\"usage\">The usage.</param>\n            <param name=\"format\">The format.</param>\n            <param name=\"pool\">The pool.</param>\n            <param name=\"filter\">The filter.</param>\n            <param name=\"mipFilter\">The mip filter.</param>\n            <param name=\"colorKey\">The color key.</param>\n            <param name=\"imageInformation\">The image information.</param>\n            <param name=\"palette\">The palette.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Direct3D9.VolumeTexture\"/>\n            </returns>\n            <unmanaged>HRESULT D3DXCreateVolumeTextureFromFileInMemoryEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[Out] D3DXIMAGE_INFO* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DVolumeTexture9** ppVolumeTexture)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.XFile\">\n            <summary>\t\n            <p>Applications use the methods of the <see cref=\"T:SharpDX.Direct3D9.XFile\"/> interface to create instances of the <strong><see cref=\"T:SharpDX.Direct3D9.XFileEnumObject\"/></strong> and <strong><see cref=\"T:SharpDX.Direct3D9.XFileSaveObject\"/></strong> interfaces, and to register templates. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>An <see cref=\"T:SharpDX.Direct3D9.XFile\"/> object also contains a local template store. This local storage may be added to only with the <strong><see cref=\"M:SharpDX.Direct3D9.XFile.RegisterEnumTemplates(SharpDX.Direct3D9.XFileEnumObject)\"/></strong> and <strong><see cref=\"M:SharpDX.Direct3D9.XFile.RegisterTemplates(System.IntPtr,SharpDX.PointerSize)\"/></strong> methods.</p><p> <strong><see cref=\"T:SharpDX.Direct3D9.XFileEnumObject\"/></strong> and <strong><see cref=\"T:SharpDX.Direct3D9.XFileSaveObject\"/></strong> objects created with <strong><see cref=\"M:SharpDX.Direct3D9.XFile.CreateEnumObject(System.IntPtr,System.Int32,SharpDX.Direct3D9.XFileEnumObject@)\"/></strong> and <strong><see cref=\"M:SharpDX.Direct3D9.XFile.CreateSaveObject(System.IntPtr,System.Int32,System.Int32,SharpDX.Direct3D9.XFileSaveObject@)\"/></strong> also utilize the template store of the parent <see cref=\"T:SharpDX.Direct3D9.XFile\"/> object.</p><p>The <see cref=\"T:SharpDX.Direct3D9.XFile\"/> interface is obtained by calling the <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.FileCreate(SharpDX.Direct3D9.XFile@)\"/></strong> function.</p><p>The globally unique identifier (<see cref=\"T:System.Guid\"/>) for the <see cref=\"T:SharpDX.Direct3D9.XFile\"/> interface is IID_ID3DXFile.</p><p>The LPD3DXFILE type is defined as a reference to the <see cref=\"T:SharpDX.Direct3D9.XFile\"/> interface.</p><pre><code> typedef interface <see cref=\"T:SharpDX.Direct3D9.XFile\"/> *LPD3DXFILE;\t\n            </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXFile']/*\"/>\t\n            <msdn-id>bb205836</msdn-id>\t\n            <unmanaged>ID3DXFile</unmanaged>\t\n            <unmanaged-short>ID3DXFile</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.XFile.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D9.XFile\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.XFile.op_Explicit(System.IntPtr)~SharpDX.Direct3D9.XFile\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D9.XFile\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.XFile.CreateEnumObject(System.IntPtr,System.Int32,SharpDX.Direct3D9.XFileEnumObject@)\">\n            <summary>\t\n            <p>Creates an enumerator object that will read a .x file.</p>\t\n            </summary>\t\n            <param name=\"arg0\"><dd>  <p>The data source. Either:</p> <ul> <li>A file name</li> <li>A <strong>D3DXF_FILELOADMEMORY</strong> structure</li> <li>A <strong>D3DXF_FILELOADRESOURCE</strong> structure</li> </ul> <p> Depending on the value of loadflags.</p> </dd></param>\t\n            <param name=\"arg1\"><dd>  <p>Value that specifies the source of the data. This value can be one of the D3DXF_FILELOADOPTIONS flags.</p> </dd></param>\t\n            <param name=\"arg2\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D9.XFileEnumObject\"/></strong> interface, representing the created enumerator object. </p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the return value can be one of the following: D3DXFERR_BADVALUE, D3DXFERR_PARSEERROR.</p></returns>\t\n            <remarks>\t\n            <p>After using this method, use one of the <strong><see cref=\"T:SharpDX.Direct3D9.XFileEnumObject\"/></strong> methods to retrieve a data object.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXFile::CreateEnumObject']/*\"/>\t\n            <msdn-id>bb173957</msdn-id>\t\n            <unmanaged>HRESULT ID3DXFile::CreateEnumObject([In] const void* arg0,[In] unsigned int arg1,[In] ID3DXFileEnumObject** arg2)</unmanaged>\t\n            <unmanaged-short>ID3DXFile::CreateEnumObject</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.XFile.CreateSaveObject(System.IntPtr,System.Int32,System.Int32,SharpDX.Direct3D9.XFileSaveObject@)\">\n            <summary>\t\n            <p>Creates a save object that will be used to save data to a .x file.</p>\t\n            </summary>\t\n            <param name=\"arg0\"><dd>  <p>Pointer to the name of the file to use for saving data.</p> </dd></param>\t\n            <param name=\"arg1\"><dd>  <p>Value that specifies the name of the file to which data is to be saved. This value can be one of the File Save Options flags.</p> </dd></param>\t\n            <param name=\"arg2\"><dd>  <p>Indicates the format to use when saving the .x file. This value can be one of the File Formats flags. For more information, see Remarks.</p> </dd></param>\t\n            <param name=\"arg3\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D9.XFileSaveObject\"/></strong> interface, representing the created save object.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the return value can be one of the following: D3DXFERR_BADVALUE, D3DXFERR_PARSEERROR.</p></returns>\t\n            <remarks>\t\n            <p>After using this method, use methods of the <strong><see cref=\"T:SharpDX.Direct3D9.XFileSaveObject\"/></strong> interface to create data objects and to save templates or data.</p><p>For the saved file format <em>dwFileFormat</em>, one of the binary, legacy binary, or text flags in File Formats must be specified. The file can be compressed by using the optional <see cref=\"F:SharpDX.Direct3D9.XFileFormat.Compressed\"/> flag.</p><p>The file format values can be combined in a logical OR to create compressed text or compressed binary files. If you indicate that the file format should be text and compressed, the file will be written out first as text and then compressed. However, compressed text files are not as efficient as binary text files; in most cases, therefore, you will want to indicate binary and compressed.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXFile::CreateSaveObject']/*\"/>\t\n            <msdn-id>bb173958</msdn-id>\t\n            <unmanaged>HRESULT ID3DXFile::CreateSaveObject([In] const void* arg0,[In] unsigned int arg1,[In] unsigned int arg2,[In] ID3DXFileSaveObject** arg3)</unmanaged>\t\n            <unmanaged-short>ID3DXFile::CreateSaveObject</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.XFile.RegisterTemplates(System.IntPtr,SharpDX.PointerSize)\">\n            <summary>\t\n            <p>Registers custom templates.</p>\t\n            </summary>\t\n            <param name=\"arg0\"><dd>  <p>Pointer to a buffer consisting of a .x file in text or binary format that contains templates.</p> </dd></param>\t\n            <param name=\"arg1\"><dd>  <p>Size of the buffer pointed to by pvData, in bytes.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the return value can be one of the following: D3DXFERR_BADVALUE, D3DXFERR_PARSEERROR.</p></returns>\t\n            <remarks>\t\n            <p>The following code fragment provides an example call to <strong>RegisterTemplates</strong> And example contents for the buffer to which <strong>pvData</strong> points.</p><pre><code> #define XSKINEXP_TEMPLATES \\ \"xof 0303txt 0032\\ template XSkinMeshHeader \\ { \\ &lt;3CF169CE-FF7C-44ab-93C0-F78F62D172E2&gt; \\ WORD nMaxSkinWeightsPerVertex; \\ WORD nMaxSkinWeightsPerFace; \\ WORD nBones; \\ } \\ template VertexDuplicationIndices \\ { \\ &lt;B8D65549-D7C9-4995-89CF-53A9A8B031E3&gt; \\ DWORD nIndices; \\ DWORD nOriginalVertices; \\ array DWORD indices[nIndices]; \\ } \\ template SkinWeights \\ { \\ &lt;6F0D123B-BAD2-4167-A0D0-80224F25FABB&gt; \\ STRING transformNodeName;\\ DWORD nWeights; \\ array DWORD vertexIndices[nWeights]; \\ array float weights[nWeights]; \\ Matrix4x4 matrixOffset; \\ }\"\t\n            .\t\n            .\t\n            . LPD3DXFILE pD3DXFile = <c>null</c>; if ( FAILED  (hr = pD3DXFile-&gt;RegisterTemplates(  (LPVOID)XSKINEXP_TEMPLATES, sizeof( XSKINEXP_TEMPLATES ) - 1 ) ) )\t\n            goto End;\t\n            </code></pre><p>All templates must specify a name and a UUID.</p><p>This method calls the <strong>RegisterEnumTemplates</strong> method, obtaining an <strong><see cref=\"T:SharpDX.Direct3D9.XFileEnumObject\"/></strong> interface reference by calling <strong>CreateEnumObject</strong> with <strong>pvData</strong> as the first parameter.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXFile::RegisterTemplates']/*\"/>\t\n            <msdn-id>bb173960</msdn-id>\t\n            <unmanaged>HRESULT ID3DXFile::RegisterTemplates([In] const void* arg0,[In] SIZE_T arg1)</unmanaged>\t\n            <unmanaged-short>ID3DXFile::RegisterTemplates</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.XFile.RegisterEnumTemplates(SharpDX.Direct3D9.XFileEnumObject)\">\n            <summary>\t\n            <p>Registers custom templates, given an <strong><see cref=\"T:SharpDX.Direct3D9.XFileEnumObject\"/></strong> enumeration object.</p>\t\n            </summary>\t\n            <param name=\"arg0\">No documentation.</param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/> .</p><p>If the method fails, the following value will be returned: D3DXFERR_BADVALUE.</p></returns>\t\n            <remarks>\t\n            <p>When this method is called, it copies templates stored with the <see cref=\"T:SharpDX.Direct3D9.XFileEnumObject\"/>, representing the file, to the local template store of the <strong><see cref=\"T:SharpDX.Direct3D9.XFile\"/></strong> object.</p><p>If an <strong><see cref=\"T:SharpDX.Direct3D9.XFileEnumObject\"/></strong> reference is not available, call the <strong>RegisterTemplates</strong> method instead.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXFile::RegisterEnumTemplates']/*\"/>\t\n            <msdn-id>bb173959</msdn-id>\t\n            <unmanaged>HRESULT ID3DXFile::RegisterEnumTemplates([In] ID3DXFileEnumObject* arg0)</unmanaged>\t\n            <unmanaged-short>ID3DXFile::RegisterEnumTemplates</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.XFileData\">\n            <summary>\t\n            <p>Applications use the methods of the <see cref=\"T:SharpDX.Direct3D9.XFileData\"/> interface to build or to access the immediate hierarchy of the data object. Template restrictions determine the hierarchy.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Data types allowed by the template are called optional members. The optional members are not required, but an object might miss important information without them. These optional members are saved as children of the data object. A child can be another data object or a reference to an earlier data object.</p><p>The <see cref=\"T:System.Guid\"/> for the <see cref=\"T:SharpDX.Direct3D9.XFileData\"/> interface is IID_ID3DXFileData.</p><p>The LPD3DXFILEDATA type is defined as a reference to this interface.</p><pre><code> typedef interface <see cref=\"T:SharpDX.Direct3D9.XFileData\"/> *LPD3DXFILEDATA;\t\n            </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXFileData']/*\"/>\t\n            <msdn-id>bb205837</msdn-id>\t\n            <unmanaged>ID3DXFileData</unmanaged>\t\n            <unmanaged-short>ID3DXFileData</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.XFileData.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D9.XFileData\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.XFileData.op_Explicit(System.IntPtr)~SharpDX.Direct3D9.XFileData\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D9.XFileData\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.XFileData.GetEnum(SharpDX.Direct3D9.XFileEnumObject@)\">\n            <summary>\t\n            <p>Retrieves the enumeration object in this file data object.</p>\t\n            </summary>\t\n            <param name=\"arg0\"><dd>  <p>Address of a reference to receive the enumeration object in this file data object.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the following value will be returned: D3DXFERR_BADVALUE.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXFileData::GetEnum']/*\"/>\t\n            <msdn-id>bb205840</msdn-id>\t\n            <unmanaged>HRESULT ID3DXFileData::GetEnum([Out] ID3DXFileEnumObject** arg0)</unmanaged>\t\n            <unmanaged-short>ID3DXFileData::GetEnum</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.XFileData.GetName(System.String,SharpDX.PointerSize@)\">\n            <summary>\t\n            <p>Retrieves the name of this file data object.</p>\t\n            </summary>\t\n            <param name=\"arg0\"><dd>  <p>Address of a reference to receive the name of this file data object. If this parameter is <strong><c>null</c></strong>, then puiSize will return the size of the string. If szName points to valid memory, the name of this file data object will be copied into szName up to the number of characters given by puiSize. </p> </dd></param>\t\n            <param name=\"arg1\"><dd>  <p>Pointer to the size of the string that represents the name of this file data object. This parameter can be <strong><c>null</c></strong> if szName provides a reference to the name. This parameter will return the size of the string if szName is <strong><c>null</c></strong>.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the following value will be returned: D3DXFERR_BADVALUE.</p></returns>\t\n            <remarks>\t\n            <p>For this method to succeed, either szName or <em>puiSize</em> must be non-<strong><c>null</c></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXFileData::GetName']/*\"/>\t\n            <msdn-id>bb205842</msdn-id>\t\n            <unmanaged>HRESULT ID3DXFileData::GetName([In] char* arg0,[Out] SIZE_T* arg1)</unmanaged>\t\n            <unmanaged-short>ID3DXFileData::GetName</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.XFileData.GetId(System.Guid)\">\n            <summary>\t\n            <p>Retrieves the <see cref=\"T:System.Guid\"/> of this file data object.</p>\t\n            </summary>\t\n            <param name=\"arg0\"><dd>  <p>Pointer to a <see cref=\"T:System.Guid\"/> to receive the ID of this file data object. If the file data object has no ID, the returned parameter value will be GUID_NULL.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the following value will be returned: D3DXFERR_BADVALUE.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXFileData::GetId']/*\"/>\t\n            <msdn-id>bb205841</msdn-id>\t\n            <unmanaged>HRESULT ID3DXFileData::GetId([In] GUID* arg0)</unmanaged>\t\n            <unmanaged-short>ID3DXFileData::GetId</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.XFileData.Lock(SharpDX.PointerSize,System.IntPtr)\">\n            <summary>\t\n            <p>Accesses the .x file data.</p>\t\n            </summary>\t\n            <param name=\"arg0\"><dd>  <p>Pointer to the size of the .x file data.</p> </dd></param>\t\n            <param name=\"arg1\"><dd>  <p>Address of a reference to receive the <strong><see cref=\"T:SharpDX.Direct3D9.XFileData\"/></strong> file data object's interface reference. See Remarks.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the following value will be returned: D3DXFERR_BADVALUE.</p></returns>\t\n            <remarks>\t\n            <p>The <em>ppData</em> reference is only valid during a <strong><see cref=\"M:SharpDX.Direct3D9.XFileData.Lock(SharpDX.PointerSize,System.IntPtr)\"/></strong> ... <strong><see cref=\"M:SharpDX.Direct3D9.XFileData.Unlock\"/></strong> sequence. You can make multiple lock calls. However, you must ensure that the number of lock calls matches the number of unlock calls.</p><p>Because file data is not guaranteed to be aligned properly with byte boundaries, you should access <em>ppData</em> with UNALIGNED references.</p><p>Returned parameter values are not guaranteed to be valid due to possible file corruption; therefore, your code should verify the returned parameter values.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXFileData::Lock']/*\"/>\t\n            <msdn-id>bb205845</msdn-id>\t\n            <unmanaged>HRESULT ID3DXFileData::Lock([In] SIZE_T* arg0,[In] const void** arg1)</unmanaged>\t\n            <unmanaged-short>ID3DXFileData::Lock</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.XFileData.Unlock\">\n            <summary>\t\n            <p>Ends the lifespan of the <em>ppData</em> reference returned by <strong><see cref=\"M:SharpDX.Direct3D9.XFileData.Lock(SharpDX.PointerSize,System.IntPtr)\"/></strong>.</p>\t\n            </summary>\t\n            <returns><p>The return value is <see cref=\"F:SharpDX.Result.Ok\"/>.</p></returns>\t\n            <remarks>\t\n            <p>You must ensure that the number of <strong><see cref=\"M:SharpDX.Direct3D9.XFileData.Lock(SharpDX.PointerSize,System.IntPtr)\"/></strong> calls matches the number of <strong><see cref=\"M:SharpDX.Direct3D9.XFileData.Unlock\"/></strong> calls. After calling Unlock, the ppData reference returned by <strong><see cref=\"M:SharpDX.Direct3D9.XFileData.Lock(SharpDX.PointerSize,System.IntPtr)\"/></strong> should no longer be used.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXFileData::Unlock']/*\"/>\t\n            <msdn-id>bb205846</msdn-id>\t\n            <unmanaged>HRESULT ID3DXFileData::Unlock()</unmanaged>\t\n            <unmanaged-short>ID3DXFileData::Unlock</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.XFileData.GetTypeInfo(System.Guid@)\">\n            <summary>\t\n            <p>Retrieves the template ID in this file data object.</p>\t\n            </summary>\t\n            <param name=\"arg0\"><dd>  <p>Pointer to the <see cref=\"T:System.Guid\"/> representing the template in this file data object.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the following value will be returned: D3DXFERR_BADVALUE.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXFileData::GetType']/*\"/>\t\n            <msdn-id>bb205843</msdn-id>\t\n            <unmanaged>HRESULT ID3DXFileData::GetType([Out] GUID* arg0)</unmanaged>\t\n            <unmanaged-short>ID3DXFileData::GetType</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.XFileData.IsReference_\">\n            <summary>\t\n            <p>Indicates whether this file data object is a reference object that points to another child data object.</p>\t\n            </summary>\t\n            <returns><p>Returns <strong>TRUE</strong> if the file data object is a reference object; returns <strong><see cref=\"F:SharpDX.Result.False\"/></strong> otherwise.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXFileData::IsReference']/*\"/>\t\n            <msdn-id>bb205844</msdn-id>\t\n            <unmanaged>BOOL ID3DXFileData::IsReference()</unmanaged>\t\n            <unmanaged-short>ID3DXFileData::IsReference</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.XFileData.GetChildren(SharpDX.PointerSize@)\">\n            <summary>\t\n            <p>Retrieves the number of children in this file data object.</p>\t\n            </summary>\t\n            <param name=\"arg0\"><dd>  <p>Address of a reference to receive the number of children in this file data object.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the following value will be returned: D3DXFERR_BADVALUE.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXFileData::GetChildren']/*\"/>\t\n            <msdn-id>bb205839</msdn-id>\t\n            <unmanaged>HRESULT ID3DXFileData::GetChildren([Out] SIZE_T* arg0)</unmanaged>\t\n            <unmanaged-short>ID3DXFileData::GetChildren</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.XFileData.GetChild(SharpDX.PointerSize,SharpDX.Direct3D9.XFileData@)\">\n            <summary>\t\n            <p>Retrieves a child object in this file data object.</p>\t\n            </summary>\t\n            <param name=\"arg0\"><dd>  <p>ID of the child object to retrieve.</p> </dd></param>\t\n            <param name=\"arg1\"><dd>  <p>Address of a reference to receive the child object's interface reference.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the return value can be one of the following values: D3DXFERR_BADVALUE, D3DXFERR_NOMOREOBJECTS.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXFileData::GetChild']/*\"/>\t\n            <msdn-id>bb205838</msdn-id>\t\n            <unmanaged>HRESULT ID3DXFileData::GetChild([In] SIZE_T arg0,[Out] ID3DXFileData** arg1)</unmanaged>\t\n            <unmanaged-short>ID3DXFileData::GetChild</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.XFileData.Enum\">\n            <summary>\t\n            <p>Retrieves the enumeration object in this file data object.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXFileData::GetEnum']/*\"/>\t\n            <msdn-id>bb205840</msdn-id>\t\n            <unmanaged>GetEnum</unmanaged>\t\n            <unmanaged-short>GetEnum</unmanaged-short>\t\n            <unmanaged>HRESULT ID3DXFileData::GetEnum([Out] ID3DXFileEnumObject** arg0)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.XFileData.TypeInfo\">\n            <summary>\t\n            <p>Retrieves the template ID in this file data object.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXFileData::GetType']/*\"/>\t\n            <msdn-id>bb205843</msdn-id>\t\n            <unmanaged>GetType</unmanaged>\t\n            <unmanaged-short>GetType</unmanaged-short>\t\n            <unmanaged>HRESULT ID3DXFileData::GetType([Out] GUID* arg0)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.XFileData.IsReference\">\n            <summary>\t\n            <p>Indicates whether this file data object is a reference object that points to another child data object.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXFileData::IsReference']/*\"/>\t\n            <msdn-id>bb205844</msdn-id>\t\n            <unmanaged>IsReference</unmanaged>\t\n            <unmanaged-short>IsReference</unmanaged-short>\t\n            <unmanaged>BOOL ID3DXFileData::IsReference()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.XFileData.Children\">\n            <summary>\t\n            <p>Retrieves the number of children in this file data object.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXFileData::GetChildren']/*\"/>\t\n            <msdn-id>bb205839</msdn-id>\t\n            <unmanaged>GetChildren</unmanaged>\t\n            <unmanaged-short>GetChildren</unmanaged-short>\t\n            <unmanaged>HRESULT ID3DXFileData::GetChildren([Out] SIZE_T* arg0)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.XFileEnumObject\">\n            <summary>\t\n            <p>Applications use the methods of the <see cref=\"T:SharpDX.Direct3D9.XFileEnumObject\"/> interface to cycle through the child file data objects in the file and to retrieve a child object by its globally unique identifier (<see cref=\"T:System.Guid\"/>) or by its name.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The <see cref=\"T:System.Guid\"/> for the <see cref=\"T:SharpDX.Direct3D9.XFileEnumObject\"/> interface is IID_ID3DXFileEnumObject.</p><p>The LPD3DXFILEENUMOBJECT type is defined as a reference to this interface.</p><pre><code> typedef interface <see cref=\"T:SharpDX.Direct3D9.XFileEnumObject\"/> *LPD3DXFILEENUMOBJECT;\t\n            </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXFileEnumObject']/*\"/>\t\n            <msdn-id>bb205847</msdn-id>\t\n            <unmanaged>ID3DXFileEnumObject</unmanaged>\t\n            <unmanaged-short>ID3DXFileEnumObject</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.XFileEnumObject.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D9.XFileEnumObject\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.XFileEnumObject.op_Explicit(System.IntPtr)~SharpDX.Direct3D9.XFileEnumObject\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D9.XFileEnumObject\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.XFileEnumObject.GetFile(SharpDX.Direct3D9.XFile@)\">\n            <summary>\t\n            <p>Retrieves the <strong><see cref=\"T:SharpDX.Direct3D9.XFile\"/></strong> object.</p>\t\n            </summary>\t\n            <param name=\"arg0\">No documentation.</param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the following value will be returned: D3DXFERR_BADVALUE.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXFileEnumObject::GetFile']/*\"/>\t\n            <msdn-id>bb205852</msdn-id>\t\n            <unmanaged>HRESULT ID3DXFileEnumObject::GetFile([Out] ID3DXFile** arg0)</unmanaged>\t\n            <unmanaged-short>ID3DXFileEnumObject::GetFile</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.XFileEnumObject.GetChildren(SharpDX.PointerSize@)\">\n            <summary>\t\n            <p>Retrieves the number of child objects in this file data object.</p>\t\n            </summary>\t\n            <param name=\"arg0\"><dd>  <p>Address of a reference to receive the number of child objects in this file data object.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the following value will be returned: D3DXFERR_BADVALUE.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXFileEnumObject::GetChildren']/*\"/>\t\n            <msdn-id>bb205849</msdn-id>\t\n            <unmanaged>HRESULT ID3DXFileEnumObject::GetChildren([Out] SIZE_T* arg0)</unmanaged>\t\n            <unmanaged-short>ID3DXFileEnumObject::GetChildren</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.XFileEnumObject.GetChild(SharpDX.PointerSize,SharpDX.Direct3D9.XFileData@)\">\n            <summary>\t\n            <p>Retrieves a child object in this file data object.</p>\t\n            </summary>\t\n            <param name=\"arg0\"><dd>  <p>ID of the child object to retrieve.</p> </dd></param>\t\n            <param name=\"arg1\"><dd>  <p>Address of a reference to receive the child object's interface reference.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the return value can be one of the following: D3DXFERR_BADVALUE, D3DXFERR_NOMOREOBJECTS.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXFileEnumObject::GetChild']/*\"/>\t\n            <msdn-id>Bb205848</msdn-id>\t\n            <unmanaged>HRESULT ID3DXFileEnumObject::GetChild([In] SIZE_T arg0,[Out] ID3DXFileData** arg1)</unmanaged>\t\n            <unmanaged-short>ID3DXFileEnumObject::GetChild</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.XFileEnumObject.GetDataObjectById(System.Guid,SharpDX.Direct3D9.XFileData@)\">\n            <summary>\t\n            <p>Retrieves the data object that has the specified <see cref=\"T:System.Guid\"/>.</p>\t\n            </summary>\t\n            <param name=\"arg0\"><dd>  <p>Reference to the requested <see cref=\"T:System.Guid\"/>. </p> </dd></param>\t\n            <param name=\"arg1\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D9.XFileData\"/></strong> interface, representing the returned file data object. </p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the return value can be one of the following:DXFILEERR_BADVALUE, DXFILEERR_NOTFOUND.</p></returns>\t\n            <remarks>\t\n            <p>Obtain the <see cref=\"T:System.Guid\"/> rguid of the current file data object with the <strong><see cref=\"M:SharpDX.Direct3D9.XFileData.GetId(System.Guid)\"/></strong> method.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXFileEnumObject::GetDataObjectById']/*\"/>\t\n            <msdn-id>bb205850</msdn-id>\t\n            <unmanaged>HRESULT ID3DXFileEnumObject::GetDataObjectById([In] const GUID&amp; arg0,[In] ID3DXFileData** arg1)</unmanaged>\t\n            <unmanaged-short>ID3DXFileEnumObject::GetDataObjectById</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.XFileEnumObject.GetDataObjectByName(System.String,SharpDX.Direct3D9.XFileData@)\">\n            <summary>\t\n            <p>Retrieves the data object that has the specified name.</p>\t\n            </summary>\t\n            <param name=\"arg0\"><dd>  <p>Pointer to the requested name. </p> </dd></param>\t\n            <param name=\"arg1\"><dd>  <p>Address of a reference to an <strong><see cref=\"T:SharpDX.Direct3D9.XFileData\"/></strong> interface, representing the returned file data object.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the return value can be one of the following:DXFILEERR_BADVALUE, DXFILEERR_NOTFOUND.</p></returns>\t\n            <remarks>\t\n            <p>Obtain the name szName of the current file data object with the <strong><see cref=\"M:SharpDX.Direct3D9.XFileData.GetName(System.String,SharpDX.PointerSize@)\"/></strong> method.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXFileEnumObject::GetDataObjectByName']/*\"/>\t\n            <msdn-id>bb205851</msdn-id>\t\n            <unmanaged>HRESULT ID3DXFileEnumObject::GetDataObjectByName([In] const char* arg0,[In] ID3DXFileData** arg1)</unmanaged>\t\n            <unmanaged-short>ID3DXFileEnumObject::GetDataObjectByName</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.XFileEnumObject.File\">\n            <summary>\t\n            <p>Retrieves the <strong><see cref=\"T:SharpDX.Direct3D9.XFile\"/></strong> object.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXFileEnumObject::GetFile']/*\"/>\t\n            <msdn-id>bb205852</msdn-id>\t\n            <unmanaged>GetFile</unmanaged>\t\n            <unmanaged-short>GetFile</unmanaged-short>\t\n            <unmanaged>HRESULT ID3DXFileEnumObject::GetFile([Out] ID3DXFile** arg0)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.XFileEnumObject.Children\">\n            <summary>\t\n            <p>Retrieves the number of child objects in this file data object.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXFileEnumObject::GetChildren']/*\"/>\t\n            <msdn-id>bb205849</msdn-id>\t\n            <unmanaged>GetChildren</unmanaged>\t\n            <unmanaged-short>GetChildren</unmanaged-short>\t\n            <unmanaged>HRESULT ID3DXFileEnumObject::GetChildren([Out] SIZE_T* arg0)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.XFileSaveData\">\n            <summary>\t\n            <p>Applications use the methods of the <see cref=\"T:SharpDX.Direct3D9.XFileSaveData\"/> interface to add data objects as children of a .x file data node.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The <see cref=\"T:System.Guid\"/> for the <see cref=\"T:SharpDX.Direct3D9.XFileSaveObject\"/> interface is IID_ID3DXFileSaveObject.</p><p>The LPD3DXFileSaveData type is defined as a reference to this interface.</p><pre><code> typedef interface <see cref=\"T:SharpDX.Direct3D9.XFileSaveData\"/> *LPD3DXFILESAVEDATA;\t\n            </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXFileSaveData']/*\"/>\t\n            <msdn-id>bb205853</msdn-id>\t\n            <unmanaged>ID3DXFileSaveData</unmanaged>\t\n            <unmanaged-short>ID3DXFileSaveData</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.XFileSaveData.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D9.XFileSaveData\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.XFileSaveData.op_Explicit(System.IntPtr)~SharpDX.Direct3D9.XFileSaveData\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D9.XFileSaveData\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.XFileSaveData.GetSave(SharpDX.Direct3D9.XFileSaveObject@)\">\n            <summary>\t\n            <p>Retrieves a reference to this <strong><see cref=\"T:SharpDX.Direct3D9.XFileSaveObject\"/></strong> file data node.</p>\t\n            </summary>\t\n            <param name=\"arg0\">No documentation.</param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the following value will be returned: D3DXFERR_BADVALUE.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXFileSaveData::GetSave']/*\"/>\t\n            <msdn-id>bb173951</msdn-id>\t\n            <unmanaged>HRESULT ID3DXFileSaveData::GetSave([Out] ID3DXFileSaveObject** arg0)</unmanaged>\t\n            <unmanaged-short>ID3DXFileSaveData::GetSave</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.XFileSaveData.GetName(System.String,SharpDX.PointerSize@)\">\n            <summary>\t\n            <p>Retrieves the name of this <strong><see cref=\"T:SharpDX.Direct3D9.XFileSaveData\"/></strong> file data node.</p>\t\n            </summary>\t\n            <param name=\"arg0\">No documentation.</param>\t\n            <param name=\"arg1\">No documentation.</param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the following value will be returned: D3DXFERR_BADVALUE.</p></returns>\t\n            <remarks>\t\n            <p>For this method to succeed, either <em>szName</em> or <em>puiSize</em> must be non-<strong><c>null</c></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXFileSaveData::GetName']/*\"/>\t\n            <msdn-id>bb173950</msdn-id>\t\n            <unmanaged>HRESULT ID3DXFileSaveData::GetName([In] char* arg0,[Out] SIZE_T* arg1)</unmanaged>\t\n            <unmanaged-short>ID3DXFileSaveData::GetName</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.XFileSaveData.GetId(System.Guid)\">\n            <summary>\t\n            <p>Retrieves the <see cref=\"T:System.Guid\"/> of this <strong><see cref=\"T:SharpDX.Direct3D9.XFileSaveData\"/></strong> file data node.</p>\t\n            </summary>\t\n            <param name=\"arg0\">No documentation.</param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the following value will be returned: D3DXFERR_BADVALUE.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXFileSaveData::GetId']/*\"/>\t\n            <msdn-id>bb205856</msdn-id>\t\n            <unmanaged>HRESULT ID3DXFileSaveData::GetId([In] GUID* arg0)</unmanaged>\t\n            <unmanaged-short>ID3DXFileSaveData::GetId</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.XFileSaveData.GetTypeInfo(System.Guid@)\">\n            <summary>\t\n            <p>Retrieves the template ID of this file data node.</p>\t\n            </summary>\t\n            <param name=\"arg0\"><dd>  <p>Pointer to the <see cref=\"T:System.Guid\"/> representing the template in this file data node.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the return value can be one of the following: D3DXFERR_BADOBJECT, D3DXFERR_BADVALUE.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXFileSaveData::GetType']/*\"/>\t\n            <msdn-id>bb173952</msdn-id>\t\n            <unmanaged>HRESULT ID3DXFileSaveData::GetType([Out] GUID* arg0)</unmanaged>\t\n            <unmanaged-short>ID3DXFileSaveData::GetType</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.XFileSaveData.AddDataObject(System.Guid,System.String,System.Guid,SharpDX.PointerSize,System.IntPtr,SharpDX.Direct3D9.XFileSaveData@)\">\n            <summary>\t\n            <p>Adds a data object as a child of the <strong><see cref=\"T:SharpDX.Direct3D9.XFileSaveData\"/></strong> file data node.</p>\t\n            </summary>\t\n            <param name=\"arg0\">No documentation.</param>\t\n            <param name=\"arg1\">No documentation.</param>\t\n            <param name=\"arg2\">No documentation.</param>\t\n            <param name=\"arg3\">No documentation.</param>\t\n            <param name=\"arg4\">No documentation.</param>\t\n            <param name=\"arg5\">No documentation.</param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the return value can be one of the following: D3DXFERR_BADOBJECT, D3DXFERR_BADVALUE, E_OUTOFMEMORY.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXFileSaveData::AddDataObject']/*\"/>\t\n            <msdn-id>bb205854</msdn-id>\t\n            <unmanaged>HRESULT ID3DXFileSaveData::AddDataObject([In] const GUID&amp; arg0,[In] const char* arg1,[In] const GUID* arg2,[In] SIZE_T arg3,[In] const void* arg4,[In] ID3DXFileSaveData** arg5)</unmanaged>\t\n            <unmanaged-short>ID3DXFileSaveData::AddDataObject</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.XFileSaveData.AddDataReference(System.String,System.Guid)\">\n            <summary>\t\n            <p>Adds a data reference as a child of this <strong><see cref=\"T:SharpDX.Direct3D9.XFileSaveData\"/></strong> file data node. The data reference points to a file data object.</p>\t\n            </summary>\t\n            <param name=\"arg0\">No documentation.</param>\t\n            <param name=\"arg1\">No documentation.</param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the return value can be one of the following: D3DXFERR_BADOBJECT, D3DXFERR_BADVALUE, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>The file data object being referenced must have either a name or a <see cref=\"T:System.Guid\"/>. The file data object must also derive from a different parent <strong><see cref=\"T:SharpDX.Direct3D9.XFileSaveData\"/></strong> object.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXFileSaveData::AddDataReference']/*\"/>\t\n            <msdn-id>bb205855</msdn-id>\t\n            <unmanaged>HRESULT ID3DXFileSaveData::AddDataReference([In] const char* arg0,[In] const GUID* arg1)</unmanaged>\t\n            <unmanaged-short>ID3DXFileSaveData::AddDataReference</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.XFileSaveData.Save\">\n            <summary>\t\n            <p>Retrieves a reference to this <strong><see cref=\"T:SharpDX.Direct3D9.XFileSaveObject\"/></strong> file data node.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXFileSaveData::GetSave']/*\"/>\t\n            <msdn-id>bb173951</msdn-id>\t\n            <unmanaged>GetSave</unmanaged>\t\n            <unmanaged-short>GetSave</unmanaged-short>\t\n            <unmanaged>HRESULT ID3DXFileSaveData::GetSave([Out] ID3DXFileSaveObject** arg0)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.XFileSaveData.TypeInfo\">\n            <summary>\t\n            <p>Retrieves the template ID of this file data node.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXFileSaveData::GetType']/*\"/>\t\n            <msdn-id>bb173952</msdn-id>\t\n            <unmanaged>GetType</unmanaged>\t\n            <unmanaged-short>GetType</unmanaged-short>\t\n            <unmanaged>HRESULT ID3DXFileSaveData::GetType([Out] GUID* arg0)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.XFileSaveObject\">\n            <summary>\t\n            <p>Applications use the methods of the <see cref=\"T:SharpDX.Direct3D9.XFileSaveObject\"/> interface to write a .x file to disk, and to add and save data objects and templates. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Templates are not required in every file. For example, you could put all templates into a single .x file rather than duplicating them in every .x file.</p><p>The <see cref=\"T:SharpDX.Direct3D9.XFileSaveObject\"/> interface is obtained by calling the <strong><see cref=\"M:SharpDX.Direct3D9.XFile.CreateSaveObject(System.IntPtr,System.Int32,System.Int32,SharpDX.Direct3D9.XFileSaveObject@)\"/></strong> method.</p><p>The globally unique identifier (<see cref=\"T:System.Guid\"/>) for the <see cref=\"T:SharpDX.Direct3D9.XFileSaveObject\"/> interface is IID_ID3DXFileSaveObject.</p><p>The LPD3DXFILESAVEOBJECT type is defined as a reference to this interface.</p><pre><code> typedef interface <see cref=\"T:SharpDX.Direct3D9.XFileSaveObject\"/> *LPD3DXFILESAVEOBJECT;\t\n            </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXFileSaveObject']/*\"/>\t\n            <msdn-id>bb173953</msdn-id>\t\n            <unmanaged>ID3DXFileSaveObject</unmanaged>\t\n            <unmanaged-short>ID3DXFileSaveObject</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.XFileSaveObject.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D9.XFileSaveObject\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.XFileSaveObject.op_Explicit(System.IntPtr)~SharpDX.Direct3D9.XFileSaveObject\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D9.XFileSaveObject\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.XFileSaveObject.GetFile(SharpDX.Direct3D9.XFile@)\">\n            <summary>\t\n            <p>Gets the <strong><see cref=\"T:SharpDX.Direct3D9.XFile\"/></strong> interface of the object that created this <strong><see cref=\"T:SharpDX.Direct3D9.XFileSaveObject\"/></strong> object.</p>\t\n            </summary>\t\n            <param name=\"arg0\">No documentation.</param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the return value can be one of the following: D3DXFERR_BADVALUE, E_NOINTERFACE, E_POINTER.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXFileSaveObject::GetFile']/*\"/>\t\n            <msdn-id>bb173955</msdn-id>\t\n            <unmanaged>HRESULT ID3DXFileSaveObject::GetFile([Out] ID3DXFile** arg0)</unmanaged>\t\n            <unmanaged-short>ID3DXFileSaveObject::GetFile</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.XFileSaveObject.AddDataObject(System.Guid,System.String,System.Guid,SharpDX.PointerSize,System.IntPtr,SharpDX.Direct3D9.XFileSaveData@)\">\n            <summary>\t\n            <p>Adds a data object as a child of the <strong><see cref=\"T:SharpDX.Direct3D9.XFileSaveData\"/></strong> object.</p>\t\n            </summary>\t\n            <param name=\"arg0\">No documentation.</param>\t\n            <param name=\"arg1\">No documentation.</param>\t\n            <param name=\"arg2\">No documentation.</param>\t\n            <param name=\"arg3\">No documentation.</param>\t\n            <param name=\"arg4\">No documentation.</param>\t\n            <param name=\"arg5\">No documentation.</param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the return value can be one of the following: D3DXFERR_BADOBJECT, DXFILEERR_BADVALUE, E_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <p>If a data reference object will reference the data object, either the szName or pId parameter must be non-<strong><c>null</c></strong>.</p><p>Save the created data to disk by using the <strong><see cref=\"M:SharpDX.Direct3D9.XFileSaveObject.Save\"/></strong> method.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXFileSaveObject::AddDataObject']/*\"/>\t\n            <msdn-id>bb173954</msdn-id>\t\n            <unmanaged>HRESULT ID3DXFileSaveObject::AddDataObject([In] const GUID&amp; arg0,[In] const char* arg1,[In] const GUID* arg2,[In] SIZE_T arg3,[In] const void* arg4,[In] ID3DXFileSaveData** arg5)</unmanaged>\t\n            <unmanaged-short>ID3DXFileSaveObject::AddDataObject</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.XFileSaveObject.Save\">\n            <summary>\t\n            <p>Saves a data object and its children to a .x file on disk.</p>\t\n            </summary>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.Result.Ok\"/>. If the method fails, the return value can be the following: D3DXFERR_BADOBJECT.</p></returns>\t\n            <remarks>\t\n            <p>After this method succeeds, <strong><see cref=\"M:SharpDX.Direct3D9.XFileSaveObject.AddDataObject(System.Guid,System.String,System.Guid,SharpDX.PointerSize,System.IntPtr,SharpDX.Direct3D9.XFileSaveData@)\"/></strong>, <strong><see cref=\"M:SharpDX.Direct3D9.XFileSaveData.AddDataObject(System.Guid,System.String,System.Guid,SharpDX.PointerSize,System.IntPtr,SharpDX.Direct3D9.XFileSaveData@)\"/></strong> and <strong><see cref=\"M:SharpDX.Direct3D9.XFileSaveData.AddDataReference(System.String,System.Guid)\"/></strong> can no longer be called until a new <strong><see cref=\"T:SharpDX.Direct3D9.XFile\"/></strong> object is created.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXFileSaveObject::Save']/*\"/>\t\n            <msdn-id>bb173956</msdn-id>\t\n            <unmanaged>HRESULT ID3DXFileSaveObject::Save()</unmanaged>\t\n            <unmanaged-short>ID3DXFileSaveObject::Save</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.XFileSaveObject.File\">\n            <summary>\t\n            <p>Gets the <strong><see cref=\"T:SharpDX.Direct3D9.XFile\"/></strong> interface of the object that created this <strong><see cref=\"T:SharpDX.Direct3D9.XFileSaveObject\"/></strong> object.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3DXFileSaveObject::GetFile']/*\"/>\t\n            <msdn-id>bb173955</msdn-id>\t\n            <unmanaged>GetFile</unmanaged>\t\n            <unmanaged-short>GetFile</unmanaged-short>\t\n            <unmanaged>HRESULT ID3DXFileSaveObject::GetFile([Out] ID3DXFile** arg0)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.AttributeRange\">\n            <summary>\t\n            <p>Stores an attribute table entry.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>An attribute table is used to identify areas of the mesh that need to be drawn with different textures, render states, materials, and so on.  In addition, the application can use the attribute table to hide portions of a mesh by not drawing a given attribute identifier (AttribId) when drawing the frame.</p><p>The LPD3DXATTRIBUTERANGE type is defined as a reference to the <strong><see cref=\"T:SharpDX.Direct3D9.AttributeRange\"/></strong> structure. </p><pre><code> typedef <see cref=\"T:SharpDX.Direct3D9.AttributeRange\"/>* LPD3DXATTRIBUTERANGE;\t\n            </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXATTRIBUTERANGE']/*\"/>\t\n            <msdn-id>bb172710</msdn-id>\t\n            <unmanaged>D3DXATTRIBUTERANGE</unmanaged>\t\n            <unmanaged-short>D3DXATTRIBUTERANGE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.AttributeRange.AttribId\">\n            <summary>\t\n            <dd> <p>Attribute table identifier.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXATTRIBUTERANGE::AttribId']/*\"/>\t\n            <msdn-id>bb172710</msdn-id>\t\n            <unmanaged>unsigned int AttribId</unmanaged>\t\n            <unmanaged-short>unsigned int AttribId</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.AttributeRange.FaceStart\">\n            <summary>\t\n            <dd> <p>Starting face.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXATTRIBUTERANGE::FaceStart']/*\"/>\t\n            <msdn-id>bb172710</msdn-id>\t\n            <unmanaged>unsigned int FaceStart</unmanaged>\t\n            <unmanaged-short>unsigned int FaceStart</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.AttributeRange.FaceCount\">\n            <summary>\t\n            <dd> <p>Face count.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXATTRIBUTERANGE::FaceCount']/*\"/>\t\n            <msdn-id>bb172710</msdn-id>\t\n            <unmanaged>unsigned int FaceCount</unmanaged>\t\n            <unmanaged-short>unsigned int FaceCount</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.AttributeRange.VertexStart\">\n            <summary>\t\n            <dd> <p>Starting vertex.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXATTRIBUTERANGE::VertexStart']/*\"/>\t\n            <msdn-id>bb172710</msdn-id>\t\n            <unmanaged>unsigned int VertexStart</unmanaged>\t\n            <unmanaged-short>unsigned int VertexStart</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.AttributeRange.VertexCount\">\n            <summary>\t\n            <dd> <p>Vertex count.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXATTRIBUTERANGE::VertexCount']/*\"/>\t\n            <msdn-id>bb172710</msdn-id>\t\n            <unmanaged>unsigned int VertexCount</unmanaged>\t\n            <unmanaged-short>unsigned int VertexCount</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.AttributeWeights\">\n            <summary>\t\n            <p>Specifies mesh weight attributes.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure describes how a simplification operation will consider vertex data when calculating relative costs between collapsing edges.  For example, if the Normal field is 0.0, the simplification operation will ignore the vertex normal component when calculating the error for the collapse.  However, if the Normal field is 1.0, the simplification operation will use the vertex normal component. If the Normal field is 2.0, double the amount of errors;  if the Normal field is 4.0, then quadruple the number of errors, and so on.</p><p>The LPD3DXATTRIBUTEWEIGHTS type is defined as a reference to the <strong><see cref=\"T:SharpDX.Direct3D9.AttributeWeights\"/></strong> structure. </p><pre><code> typedef <see cref=\"T:SharpDX.Direct3D9.AttributeWeights\"/>* LPD3DXATTRIBUTEWEIGHTS;\t\n            </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXATTRIBUTEWEIGHTS']/*\"/>\t\n            <msdn-id>bb172711</msdn-id>\t\n            <unmanaged>D3DXATTRIBUTEWEIGHTS</unmanaged>\t\n            <unmanaged-short>D3DXATTRIBUTEWEIGHTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.AttributeWeights.Position\">\n            <summary>\t\n            <dd> <p>Position.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXATTRIBUTEWEIGHTS::Position']/*\"/>\t\n            <msdn-id>bb172711</msdn-id>\t\n            <unmanaged>float Position</unmanaged>\t\n            <unmanaged-short>float Position</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.AttributeWeights.Boundary\">\n            <summary>\t\n            <dd> <p>Blend weight.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXATTRIBUTEWEIGHTS::Boundary']/*\"/>\t\n            <msdn-id>bb172711</msdn-id>\t\n            <unmanaged>float Boundary</unmanaged>\t\n            <unmanaged-short>float Boundary</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.AttributeWeights.Normal\">\n            <summary>\t\n            <dd> <p>Normal.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXATTRIBUTEWEIGHTS::Normal']/*\"/>\t\n            <msdn-id>bb172711</msdn-id>\t\n            <unmanaged>float Normal</unmanaged>\t\n            <unmanaged-short>float Normal</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.AttributeWeights.Diffuse\">\n            <summary>\t\n            <dd> <p>Diffuse lighting value.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXATTRIBUTEWEIGHTS::Diffuse']/*\"/>\t\n            <msdn-id>bb172711</msdn-id>\t\n            <unmanaged>float Diffuse</unmanaged>\t\n            <unmanaged-short>float Diffuse</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.AttributeWeights.Specular\">\n            <summary>\t\n            <dd> <p>Specular lighting value.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXATTRIBUTEWEIGHTS::Specular']/*\"/>\t\n            <msdn-id>bb172711</msdn-id>\t\n            <unmanaged>float Specular</unmanaged>\t\n            <unmanaged-short>float Specular</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.AttributeWeights.Tangent\">\n            <summary>\t\n            <dd> <p>Tangent.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXATTRIBUTEWEIGHTS::Tangent']/*\"/>\t\n            <msdn-id>bb172711</msdn-id>\t\n            <unmanaged>float Tangent</unmanaged>\t\n            <unmanaged-short>float Tangent</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.AttributeWeights.Binormal\">\n            <summary>\t\n            <dd> <p>Binormal.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXATTRIBUTEWEIGHTS::Binormal']/*\"/>\t\n            <msdn-id>bb172711</msdn-id>\t\n            <unmanaged>float Binormal</unmanaged>\t\n            <unmanaged-short>float Binormal</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.AttributeWeights.TextureCoordinate\">\n            <summary>\t\n            <dd> <p>Eight texture coordinates.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXATTRIBUTEWEIGHTS::Texcoord']/*\"/>\t\n            <msdn-id>bb172711</msdn-id>\t\n            <unmanaged>float Texcoord[8]</unmanaged>\t\n            <unmanaged-short>float Texcoord</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.BandwidthTimings\">\n            <summary>\t\n            <p>Throughput metrics for help in understanding the performance of an application.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDEVINFO_D3D9BANDWIDTHTIMINGS']/*\"/>\t\n            <msdn-id>bb172539</msdn-id>\t\n            <unmanaged>D3DDEVINFO_D3D9BANDWIDTHTIMINGS</unmanaged>\t\n            <unmanaged-short>D3DDEVINFO_D3D9BANDWIDTHTIMINGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.BandwidthTimings.MaxBandwidthUtilized\">\n            <summary>\t\n            <dd> <p>The bandwidth or maximum data transfer rate from the host CPU to the GPU. This is typically the bandwidth of the PCI or AGP bus which connects the CPU and the GPU.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDEVINFO_D3D9BANDWIDTHTIMINGS::MaxBandwidthUtilized']/*\"/>\t\n            <msdn-id>bb172539</msdn-id>\t\n            <unmanaged>float MaxBandwidthUtilized</unmanaged>\t\n            <unmanaged-short>float MaxBandwidthUtilized</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.BandwidthTimings.FrontEndUploadMemoryUtilizedPercent\">\n            <summary>\t\n            <dd> <p>Memory utilized percentage when uploading data from the host CPU to the GPU. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDEVINFO_D3D9BANDWIDTHTIMINGS::FrontEndUploadMemoryUtilizedPercent']/*\"/>\t\n            <msdn-id>bb172539</msdn-id>\t\n            <unmanaged>float FrontEndUploadMemoryUtilizedPercent</unmanaged>\t\n            <unmanaged-short>float FrontEndUploadMemoryUtilizedPercent</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.BandwidthTimings.VertexRateUtilizedPercent\">\n            <summary>\t\n            <dd> <p>Vertex throughput percentage. This is the number of vertices processed compared to the theoretical maximum vertex processing rate.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDEVINFO_D3D9BANDWIDTHTIMINGS::VertexRateUtilizedPercent']/*\"/>\t\n            <msdn-id>bb172539</msdn-id>\t\n            <unmanaged>float VertexRateUtilizedPercent</unmanaged>\t\n            <unmanaged-short>float VertexRateUtilizedPercent</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.BandwidthTimings.TriangleSetupRateUtilizedPercent\">\n            <summary>\t\n            <dd> <p>Triangle set-up throughput percentage. This is the number of triangles that are set up for rasterization compared to the theoretical maximum triangle set-up rate.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDEVINFO_D3D9BANDWIDTHTIMINGS::TriangleSetupRateUtilizedPercent']/*\"/>\t\n            <msdn-id>bb172539</msdn-id>\t\n            <unmanaged>float TriangleSetupRateUtilizedPercent</unmanaged>\t\n            <unmanaged-short>float TriangleSetupRateUtilizedPercent</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.BandwidthTimings.FillRateUtilizedPercent\">\n            <summary>\t\n            <dd> <p>Pixel fill throughput percentage. This is the number of pixels that are filled compared to the theoretical pixel fill.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDEVINFO_D3D9BANDWIDTHTIMINGS::FillRateUtilizedPercent']/*\"/>\t\n            <msdn-id>bb172539</msdn-id>\t\n            <unmanaged>float FillRateUtilizedPercent</unmanaged>\t\n            <unmanaged-short>float FillRateUtilizedPercent</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.Box\">\n            <summary>\t\n            <p>Defines a volume.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p><strong><see cref=\"T:SharpDX.Direct3D9.Box\"/></strong> includes the left, top, and front edges; however, the right, bottom, and back edges are not included. For example, a box that is 100 units wide and begins at 0 (thus, including the points up to and including 99) would be expressed with a value of 0 for the Left member and a value of 100 for the Right member. Note that a value of 99 is not used for the Right member.</p><p>The restrictions on side ordering observed for <strong><see cref=\"T:SharpDX.Direct3D9.Box\"/></strong> are left to right, top to bottom, and front to back.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DBOX']/*\"/>\t\n            <msdn-id>bb172510</msdn-id>\t\n            <unmanaged>D3DBOX</unmanaged>\t\n            <unmanaged-short>D3DBOX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Box.Left\">\n            <summary>\t\n            <dd> <p>Position of the left side of the box on the x-axis.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DBOX::Left']/*\"/>\t\n            <msdn-id>bb172510</msdn-id>\t\n            <unmanaged>unsigned int Left</unmanaged>\t\n            <unmanaged-short>unsigned int Left</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Box.Top\">\n            <summary>\t\n            <dd> <p>Position of the top of the box on the y-axis.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DBOX::Top']/*\"/>\t\n            <msdn-id>bb172510</msdn-id>\t\n            <unmanaged>unsigned int Top</unmanaged>\t\n            <unmanaged-short>unsigned int Top</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Box.Right\">\n            <summary>\t\n            <dd> <p>Position of the right side of the box on the x-axis.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DBOX::Right']/*\"/>\t\n            <msdn-id>bb172510</msdn-id>\t\n            <unmanaged>unsigned int Right</unmanaged>\t\n            <unmanaged-short>unsigned int Right</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Box.Bottom\">\n            <summary>\t\n            <dd> <p>Position of the bottom of the box on the y-axis.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DBOX::Bottom']/*\"/>\t\n            <msdn-id>bb172510</msdn-id>\t\n            <unmanaged>unsigned int Bottom</unmanaged>\t\n            <unmanaged-short>unsigned int Bottom</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Box.Front\">\n            <summary>\t\n            <dd> <p>Position of the front of the box on the z-axis.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DBOX::Front']/*\"/>\t\n            <msdn-id>bb172510</msdn-id>\t\n            <unmanaged>unsigned int Front</unmanaged>\t\n            <unmanaged-short>unsigned int Front</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Box.Back\">\n            <summary>\t\n            <dd> <p>Position of the back of the box on the z-axis.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DBOX::Back']/*\"/>\t\n            <msdn-id>bb172510</msdn-id>\t\n            <unmanaged>unsigned int Back</unmanaged>\t\n            <unmanaged-short>unsigned int Back</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.CacheUtilization\">\n            <summary>\t\n            <p>Measure the cache hit rate performance for textures and indexed vertices.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>An efficient cache is typically closer to a 90 percent hit rate, and an inefficient cache is typically closer to a 10 percent hit rate (although a low percentage is not necessarily a problem).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDEVINFO_D3D9CACHEUTILIZATION']/*\"/>\t\n            <msdn-id>bb172540</msdn-id>\t\n            <unmanaged>D3DDEVINFO_D3D9CACHEUTILIZATION</unmanaged>\t\n            <unmanaged-short>D3DDEVINFO_D3D9CACHEUTILIZATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.CacheUtilization.TextureCacheHitRate\">\n            <summary>\t\n            <dd> <p>The hit rate for finding a texture in the texture cache. This assumes there is a texture cache. Increasing the level-of-detail bias to use the most detailed texture, using many large textures, or producing a near random texture access pattern on large textures with custom shader code can dramatically affect the texture cache hit rate.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDEVINFO_D3D9CACHEUTILIZATION::TextureCacheHitRate']/*\"/>\t\n            <msdn-id>bb172540</msdn-id>\t\n            <unmanaged>float TextureCacheHitRate</unmanaged>\t\n            <unmanaged-short>float TextureCacheHitRate</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.CacheUtilization.PostTransformVertexCacheHitRate\">\n            <summary>\t\n            <dd> <p>The hit rate for finding transformed vertices in the vertex cache. The GPU is designed to transform indexed vertices and may store them in a vertex cache. If you are using meshes, <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.OptimizeFaces(System.IntPtr,System.Int32,System.Int32,SharpDX.Bool,System.Int32[])\"/></strong> or <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.OptimizeVertices(System.IntPtr,System.Int32,System.Int32,SharpDX.Bool,System.Int32[])\"/></strong> may result in better vertex cache utilization.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDEVINFO_D3D9CACHEUTILIZATION::PostTransformVertexCacheHitRate']/*\"/>\t\n            <msdn-id>bb172540</msdn-id>\t\n            <unmanaged>float PostTransformVertexCacheHitRate</unmanaged>\t\n            <unmanaged-short>float PostTransformVertexCacheHitRate</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.CallbackKey\">\n            <summary>\t\n            <p>Describes a callback key for use in key frame animation.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXKEY_CALLBACK']/*\"/>\t\n            <msdn-id>bb172886</msdn-id>\t\n            <unmanaged>D3DXKEY_CALLBACK</unmanaged>\t\n            <unmanaged-short>D3DXKEY_CALLBACK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.CallbackKey.Time\">\n            <summary>\t\n            <dd> <p>Key frame time stamp.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXKEY_CALLBACK::Time']/*\"/>\t\n            <msdn-id>bb172886</msdn-id>\t\n            <unmanaged>float Time</unmanaged>\t\n            <unmanaged-short>float Time</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.CallbackKey.Data\">\n            <summary>\t\n            <dd> <p>Pointer to user callback data.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXKEY_CALLBACK::pCallbackData']/*\"/>\t\n            <msdn-id>bb172886</msdn-id>\t\n            <unmanaged>void* pCallbackData</unmanaged>\t\n            <unmanaged-short>void pCallbackData</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.ClipStatus\">\n            <summary>\t\n            <p>Describes the current clip status.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>When clipping is enabled during vertex processing (by <strong>ProcessVertices</strong>, <strong>DrawPrimitive</strong>, or other drawing functions), Direct3D computes a clip code for every vertex. The clip code is a combination of D3DCS_* bits. When a vertex is outside a particular clipping plane, the corresponding bit is set in the clipping code. Direct3D maintains the clip status using <strong><see cref=\"T:SharpDX.Direct3D9.ClipStatus\"/></strong>, which has ClipUnion and ClipIntersection members. ClipUnion is a bitwise OR of all vertex clip codes and ClipIntersection is a bitwise AND of all vertex clip codes. Initial values are zero for ClipUnion and 0xFFFFFFFF for ClipIntersection. When <see cref=\"F:SharpDX.Direct3D9.RenderState.Clipping\"/> is set to <strong><see cref=\"F:SharpDX.Result.False\"/></strong>, ClipUnion and ClipIntersection are set to zero. Direct3D updates the clip status during drawing calls. To compute clip status for a particular object, set ClipUnion and ClipIntersection to their initial value and continue drawing.</p><p> Clip status is not updated by <strong>DrawRectPatch</strong> and <strong>DrawTriPatch</strong> because there is no software emulation for them.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCLIPSTATUS9']/*\"/>\t\n            <msdn-id>bb172516</msdn-id>\t\n            <unmanaged>D3DCLIPSTATUS9</unmanaged>\t\n            <unmanaged-short>D3DCLIPSTATUS9</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ClipStatus.ClipUnion\">\n            <summary>\t\n            <dd> <p>Clip union flags that describe the current clip status. This member can be one or more of the following flags:</p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.Direct3D9.ClipFlags.All\"/></strong></dt> </dl> </td><td> <p>Combination of all clip flags.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.Direct3D9.ClipFlags.Left\"/></strong></dt> </dl> </td><td> <p>All vertices are clipped by the left plane of the viewing frustum.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.Direct3D9.ClipFlags.Right\"/></strong></dt> </dl> </td><td> <p>All vertices are clipped by the right plane of the viewing frustum.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.Direct3D9.ClipFlags.Top\"/></strong></dt> </dl> </td><td> <p>All vertices are clipped by the top plane of the viewing frustum.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.Direct3D9.ClipFlags.Bottom\"/></strong></dt> </dl> </td><td> <p>All vertices are clipped by the bottom plane of the viewing frustum.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.Direct3D9.ClipFlags.Front\"/></strong></dt> </dl> </td><td> <p>All vertices are clipped by the front plane of the viewing frustum.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.Direct3D9.ClipFlags.Back\"/></strong></dt> </dl> </td><td> <p>All vertices are clipped by the back plane of the viewing frustum.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.Direct3D9.ClipFlags.Plane0\"/></strong></dt> </dl> </td><td> <p>Application-defined clipping planes.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.Direct3D9.ClipFlags.Plane1\"/></strong></dt> </dl> </td><td> <p>Application-defined clipping planes.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.Direct3D9.ClipFlags.Plane2\"/></strong></dt> </dl> </td><td> <p>Application-defined clipping planes.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.Direct3D9.ClipFlags.Plane3\"/></strong></dt> </dl> </td><td> <p>Application-defined clipping planes.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.Direct3D9.ClipFlags.Plane4\"/></strong></dt> </dl> </td><td> <p>Application-defined clipping planes.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.Direct3D9.ClipFlags.Plane5\"/></strong></dt> </dl> </td><td> <p>Application-defined clipping planes.</p> </td></tr> </table> <p>?</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCLIPSTATUS9::ClipUnion']/*\"/>\t\n            <msdn-id>bb172516</msdn-id>\t\n            <unmanaged>unsigned int ClipUnion</unmanaged>\t\n            <unmanaged-short>unsigned int ClipUnion</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ClipStatus.ClipIntersection\">\n            <summary>\t\n            <dd> <p>Clip intersection flags that describe the current clip status. This member can take the same flags as ClipUnion. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCLIPSTATUS9::ClipIntersection']/*\"/>\t\n            <msdn-id>bb172516</msdn-id>\t\n            <unmanaged>unsigned int ClipIntersection</unmanaged>\t\n            <unmanaged-short>unsigned int ClipIntersection</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.ConstantDescription\">\n            <summary>\t\n            <p>A description of a constant in a constant table.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCONSTANT_DESC']/*\"/>\t\n            <msdn-id>bb172748</msdn-id>\t\n            <unmanaged>D3DXCONSTANT_DESC</unmanaged>\t\n            <unmanaged-short>D3DXCONSTANT_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ConstantDescription.Name\">\n            <summary>\t\n            <dd> <p>Name of the constant.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCONSTANT_DESC::Name']/*\"/>\t\n            <msdn-id>bb172748</msdn-id>\t\n            <unmanaged>const char* Name</unmanaged>\t\n            <unmanaged-short>char Name</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ConstantDescription.RegisterSet\">\n            <summary>\t\n            <dd> <p>Constant data type. See <strong><see cref=\"T:SharpDX.Direct3D9.RegisterSet\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCONSTANT_DESC::RegisterSet']/*\"/>\t\n            <msdn-id>bb172748</msdn-id>\t\n            <unmanaged>D3DXREGISTER_SET RegisterSet</unmanaged>\t\n            <unmanaged-short>D3DXREGISTER_SET RegisterSet</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ConstantDescription.RegisterIndex\">\n            <summary>\t\n            <dd> <p>Zero-based index of the constant in the table.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCONSTANT_DESC::RegisterIndex']/*\"/>\t\n            <msdn-id>bb172748</msdn-id>\t\n            <unmanaged>unsigned int RegisterIndex</unmanaged>\t\n            <unmanaged-short>unsigned int RegisterIndex</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ConstantDescription.RegisterCount\">\n            <summary>\t\n            <dd> <p>Number of registers that contain data.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCONSTANT_DESC::RegisterCount']/*\"/>\t\n            <msdn-id>bb172748</msdn-id>\t\n            <unmanaged>unsigned int RegisterCount</unmanaged>\t\n            <unmanaged-short>unsigned int RegisterCount</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ConstantDescription.Class\">\n            <summary>\t\n            <dd> <p>Parameter class. See <strong><see cref=\"T:SharpDX.Direct3D9.ParameterClass\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCONSTANT_DESC::Class']/*\"/>\t\n            <msdn-id>bb172748</msdn-id>\t\n            <unmanaged>D3DXPARAMETER_CLASS Class</unmanaged>\t\n            <unmanaged-short>D3DXPARAMETER_CLASS Class</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ConstantDescription.Type\">\n            <summary>\t\n            <dd> <p>Parameter type. See <strong><see cref=\"T:SharpDX.Direct3D9.ParameterType\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCONSTANT_DESC::Type']/*\"/>\t\n            <msdn-id>bb172748</msdn-id>\t\n            <unmanaged>D3DXPARAMETER_TYPE Type</unmanaged>\t\n            <unmanaged-short>D3DXPARAMETER_TYPE Type</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ConstantDescription.Rows\">\n            <summary>\t\n            <dd> <p>Number of rows.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCONSTANT_DESC::Rows']/*\"/>\t\n            <msdn-id>bb172748</msdn-id>\t\n            <unmanaged>unsigned int Rows</unmanaged>\t\n            <unmanaged-short>unsigned int Rows</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ConstantDescription.Columns\">\n            <summary>\t\n            <dd> <p>Number of columns.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCONSTANT_DESC::Columns']/*\"/>\t\n            <msdn-id>bb172748</msdn-id>\t\n            <unmanaged>unsigned int Columns</unmanaged>\t\n            <unmanaged-short>unsigned int Columns</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ConstantDescription.Elements\">\n            <summary>\t\n            <dd> <p>Number of elements in the array.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCONSTANT_DESC::Elements']/*\"/>\t\n            <msdn-id>bb172748</msdn-id>\t\n            <unmanaged>unsigned int Elements</unmanaged>\t\n            <unmanaged-short>unsigned int Elements</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ConstantDescription.StructMembers\">\n            <summary>\t\n            <dd> <p>Number of structure member sub-parameters.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCONSTANT_DESC::StructMembers']/*\"/>\t\n            <msdn-id>bb172748</msdn-id>\t\n            <unmanaged>unsigned int StructMembers</unmanaged>\t\n            <unmanaged-short>unsigned int StructMembers</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ConstantDescription.Bytes\">\n            <summary>\t\n            <dd> <p>Data size in number of bytes.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCONSTANT_DESC::Bytes']/*\"/>\t\n            <msdn-id>bb172748</msdn-id>\t\n            <unmanaged>unsigned int Bytes</unmanaged>\t\n            <unmanaged-short>unsigned int Bytes</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ConstantDescription.DefaultValue\">\n            <summary>\t\n            <dd> <p>Pointer to the default value.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCONSTANT_DESC::DefaultValue']/*\"/>\t\n            <msdn-id>bb172748</msdn-id>\t\n            <unmanaged>const void* DefaultValue</unmanaged>\t\n            <unmanaged-short>void DefaultValue</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.ConstantTableDescription\">\n            <summary>\t\n            <p>A description of the constant table.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCONSTANTTABLE_DESC']/*\"/>\t\n            <msdn-id>bb172747</msdn-id>\t\n            <unmanaged>D3DXCONSTANTTABLE_DESC</unmanaged>\t\n            <unmanaged-short>D3DXCONSTANTTABLE_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ConstantTableDescription.Creator\">\n            <summary>\t\n            <dd> <p>Name of the constant table creator.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCONSTANTTABLE_DESC::Creator']/*\"/>\t\n            <msdn-id>bb172747</msdn-id>\t\n            <unmanaged>const char* Creator</unmanaged>\t\n            <unmanaged-short>char Creator</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ConstantTableDescription.Version\">\n            <summary>\t\n            <dd> <p>Shader version.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCONSTANTTABLE_DESC::Version']/*\"/>\t\n            <msdn-id>bb172747</msdn-id>\t\n            <unmanaged>unsigned int Version</unmanaged>\t\n            <unmanaged-short>unsigned int Version</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ConstantTableDescription.Constants\">\n            <summary>\t\n            <dd> <p>Number of constants in the constant table.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXCONSTANTTABLE_DESC::Constants']/*\"/>\t\n            <msdn-id>bb172747</msdn-id>\t\n            <unmanaged>unsigned int Constants</unmanaged>\t\n            <unmanaged-short>unsigned int Constants</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.CreationParameters\">\n            <summary>\t\n            <p>Describes the creation parameters for a device.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDEVICE_CREATION_PARAMETERS']/*\"/>\t\n            <msdn-id>bb172538</msdn-id>\t\n            <unmanaged>D3DDEVICE_CREATION_PARAMETERS</unmanaged>\t\n            <unmanaged-short>D3DDEVICE_CREATION_PARAMETERS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.CreationParameters.AdapterOrdinal\">\n            <summary>\t\n            <dd> <p>Ordinal number that denotes the display adapter. D3DADAPTER_DEFAULT is always the primary display adapter.  Use this ordinal as the Adapter parameter for any of the <strong><see cref=\"T:SharpDX.Direct3D9.Direct3D\"/></strong> methods. Note that different instances of Direct3D 9.0 objects can use different ordinals. Adapters can enter or leave a system when users, for example, add or remove monitors from a multiple-monitor system or when they hot-swap a laptop. Consequently, use this ordinal only in a Direct3D 9.0 instance known to be valid, that is, either the Direct3D 9.0 that created this <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface or the Direct3D 9.0 returned from <strong>GetDirect3D</strong>, as called through this <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDEVICE_CREATION_PARAMETERS::AdapterOrdinal']/*\"/>\t\n            <msdn-id>bb172538</msdn-id>\t\n            <unmanaged>unsigned int AdapterOrdinal</unmanaged>\t\n            <unmanaged-short>unsigned int AdapterOrdinal</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.CreationParameters.DeviceType\">\n            <summary>\t\n            <dd> <p>Member of the <strong><see cref=\"T:SharpDX.Direct3D9.DeviceType\"/></strong> enumerated type. Denotes the amount of emulated functionality for this device. The value of this parameter mirrors the value passed to the <strong>CreateDevice</strong> call that created this device.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDEVICE_CREATION_PARAMETERS::DeviceType']/*\"/>\t\n            <msdn-id>bb172538</msdn-id>\t\n            <unmanaged>D3DDEVTYPE DeviceType</unmanaged>\t\n            <unmanaged-short>D3DDEVTYPE DeviceType</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.CreationParameters.HFocusWindow\">\n            <summary>\t\n            <dd> <p>Window handle to which focus belongs for this Direct3D device. The value of this parameter mirrors the value passed to the <strong>CreateDevice</strong> call that created this device.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDEVICE_CREATION_PARAMETERS::hFocusWindow']/*\"/>\t\n            <msdn-id>bb172538</msdn-id>\t\n            <unmanaged>HWND hFocusWindow</unmanaged>\t\n            <unmanaged-short>HWND hFocusWindow</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.CreationParameters.BehaviorFlags\">\n            <summary>\t\n            <dd> <p>A combination of one or more <see cref=\"T:SharpDX.Direct3D9.CreateFlags\"/> constants that control global behavior of the device. These constants mirror the constants passed to <strong>CreateDevice</strong> when the device was created.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDEVICE_CREATION_PARAMETERS::BehaviorFlags']/*\"/>\t\n            <msdn-id>bb172538</msdn-id>\t\n            <unmanaged>unsigned int BehaviorFlags</unmanaged>\t\n            <unmanaged-short>unsigned int BehaviorFlags</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.DisplayModeFilter\">\n            <summary>\t\n            <p>Specifies types of display modes to filter out.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDISPLAYMODEFILTER']/*\"/>\t\n            <msdn-id>bb172550</msdn-id>\t\n            <unmanaged>D3DDISPLAYMODEFILTER</unmanaged>\t\n            <unmanaged-short>D3DDISPLAYMODEFILTER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DisplayModeFilter.Size\">\n            <summary>\t\n            <dd> <p>The size of this structure. This should always be set to sizeof(<see cref=\"T:SharpDX.Direct3D9.DisplayModeFilter\"/>).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDISPLAYMODEFILTER::Size']/*\"/>\t\n            <msdn-id>bb172550</msdn-id>\t\n            <unmanaged>unsigned int Size</unmanaged>\t\n            <unmanaged-short>unsigned int Size</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DisplayModeFilter.Format\">\n            <summary>\t\n            <dd> <p>The display mode format to filter out. See <see cref=\"T:SharpDX.Direct3D9.Format\"/>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDISPLAYMODEFILTER::Format']/*\"/>\t\n            <msdn-id>bb172550</msdn-id>\t\n            <unmanaged>D3DFORMAT Format</unmanaged>\t\n            <unmanaged-short>D3DFORMAT Format</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.DisplayModeFilter.ScanLineOrdering\">\n            <summary>\t\n            <dd> <p>Whether the scanline ordering is interlaced or progressive. See <strong><see cref=\"T:SharpDX.Direct3D9.ScanlineOrdering\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDISPLAYMODEFILTER::ScanLineOrdering']/*\"/>\t\n            <msdn-id>bb172550</msdn-id>\t\n            <unmanaged>D3DSCANLINEORDERING ScanLineOrdering</unmanaged>\t\n            <unmanaged-short>D3DSCANLINEORDERING ScanLineOrdering</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.EffectDescription\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXEFFECT_DESC']/*\"/>\t\n            <msdn-id>bb280317</msdn-id>\t\n            <unmanaged>D3DXEFFECT_DESC</unmanaged>\t\n            <unmanaged-short>D3DXEFFECT_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.EffectDescription.Creator\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXEFFECT_DESC::Creator']/*\"/>\t\n            <unmanaged>const char* Creator</unmanaged>\t\n            <unmanaged-short>char Creator</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.EffectDescription.Parameters\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXEFFECT_DESC::Parameters']/*\"/>\t\n            <unmanaged>unsigned int Parameters</unmanaged>\t\n            <unmanaged-short>unsigned int Parameters</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.EffectDescription.Techniques\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXEFFECT_DESC::Techniques']/*\"/>\t\n            <unmanaged>unsigned int Techniques</unmanaged>\t\n            <unmanaged-short>unsigned int Techniques</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.EffectDescription.Functions\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXEFFECT_DESC::Functions']/*\"/>\t\n            <unmanaged>unsigned int Functions</unmanaged>\t\n            <unmanaged-short>unsigned int Functions</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.EventDescription\">\n            <summary>\t\n            <p>Describes an animation event.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXEVENT_DESC']/*\"/>\t\n            <msdn-id>bb172826</msdn-id>\t\n            <unmanaged>D3DXEVENT_DESC</unmanaged>\t\n            <unmanaged-short>D3DXEVENT_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.EventDescription.Type\">\n            <summary>\t\n            <dd> <p>Event type, as defined in <strong><see cref=\"T:SharpDX.Direct3D9.EventType\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXEVENT_DESC::Type']/*\"/>\t\n            <msdn-id>bb172826</msdn-id>\t\n            <unmanaged>D3DXEVENT_TYPE Type</unmanaged>\t\n            <unmanaged-short>D3DXEVENT_TYPE Type</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.EventDescription.Track\">\n            <summary>\t\n            <dd> <p>Event track identifier.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXEVENT_DESC::Track']/*\"/>\t\n            <msdn-id>bb172826</msdn-id>\t\n            <unmanaged>unsigned int Track</unmanaged>\t\n            <unmanaged-short>unsigned int Track</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.EventDescription.StartTime\">\n            <summary>\t\n            <dd> <p>Start time of the event in global time.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXEVENT_DESC::StartTime']/*\"/>\t\n            <msdn-id>bb172826</msdn-id>\t\n            <unmanaged>double StartTime</unmanaged>\t\n            <unmanaged-short>double StartTime</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.EventDescription.Duration\">\n            <summary>\t\n            <dd> <p>Duration of the event in global time.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXEVENT_DESC::Duration']/*\"/>\t\n            <msdn-id>bb172826</msdn-id>\t\n            <unmanaged>double Duration</unmanaged>\t\n            <unmanaged-short>double Duration</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.EventDescription.Transition\">\n            <summary>\t\n            <dd> <p>Transition style of the event, as defined in <strong><see cref=\"T:SharpDX.Direct3D9.TransitionType\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXEVENT_DESC::Transition']/*\"/>\t\n            <msdn-id>bb172826</msdn-id>\t\n            <unmanaged>D3DXTRANSITION_TYPE Transition</unmanaged>\t\n            <unmanaged-short>D3DXTRANSITION_TYPE Transition</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.EventDescription.Weight\">\n            <summary>\t\n            <dd> <p>Track weight for the event.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXEVENT_DESC::Weight']/*\"/>\t\n            <msdn-id>bb172826</msdn-id>\t\n            <unmanaged>float Weight</unmanaged>\t\n            <unmanaged-short>float Weight</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.EventDescription.Speed\">\n            <summary>\t\n            <dd> <p>Track speed for the event.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXEVENT_DESC::Speed']/*\"/>\t\n            <msdn-id>bb172826</msdn-id>\t\n            <unmanaged>float Speed</unmanaged>\t\n            <unmanaged-short>float Speed</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.EventDescription.Position\">\n            <summary>\t\n            <dd> <p>Track position for the event.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXEVENT_DESC::Position']/*\"/>\t\n            <msdn-id>bb172826</msdn-id>\t\n            <unmanaged>double Position</unmanaged>\t\n            <unmanaged-short>double Position</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.EventDescription.Enable\">\n            <summary>\t\n            <dd> <p>Enable flag.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXEVENT_DESC::Enable']/*\"/>\t\n            <msdn-id>bb172826</msdn-id>\t\n            <unmanaged>BOOL Enable</unmanaged>\t\n            <unmanaged-short>BOOL Enable</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.ExtendedMaterial\">\n            <summary>\t\n            <p>Returns material information saved in Direct3D (.x) files.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.LoadMeshFromXW(System.String,System.Int32,SharpDX.Direct3D9.Device,SharpDX.Direct3D.Blob@,SharpDX.Direct3D.Blob@,SharpDX.Direct3D.Blob@,System.Int32,SharpDX.Direct3D9.Mesh@)\"/></strong> and <strong><see cref=\"M:SharpDX.Direct3D9.D3DX9.LoadMeshFromXof(SharpDX.Direct3D9.XFileData,System.Int32,SharpDX.Direct3D9.Device,SharpDX.Direct3D.Blob@,SharpDX.Direct3D.Blob@,SharpDX.Direct3D.Blob@,System.Int32,SharpDX.Direct3D9.Mesh@)\"/></strong> functions return an array of <strong><see cref=\"T:SharpDX.Direct3D9.ExtendedMaterial\"/></strong> structures  that specify the material color and name of the texture for each material in the mesh. The application is then required to load the texture.</p><p>The LPD3DXMATERIAL type is defined as a reference to the <strong><see cref=\"T:SharpDX.Direct3D9.ExtendedMaterial\"/></strong> structure. </p><pre><code> typedef struct <see cref=\"T:SharpDX.Direct3D9.ExtendedMaterial\"/>* LPD3DXMATERIAL;\t\n            </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXMATERIAL']/*\"/>\t\n            <msdn-id>bb172911</msdn-id>\t\n            <unmanaged>D3DXMATERIAL</unmanaged>\t\n            <unmanaged-short>D3DXMATERIAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ExtendedMaterial.MaterialD3D\">\n            <summary>\t\n            <dd> <p> <strong><see cref=\"T:SharpDX.Direct3D9.Material\"/></strong> structure that describes the material properties.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXMATERIAL::MatD3D']/*\"/>\t\n            <msdn-id>bb172911</msdn-id>\t\n            <unmanaged>D3DMATERIAL9 MatD3D</unmanaged>\t\n            <unmanaged-short>D3DMATERIAL9 MatD3D</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ExtendedMaterial.TextureFileName\">\n            <summary>\t\n            <dd> <p>Pointer to a string that specifies the file name of the texture.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXMATERIAL::pTextureFilename']/*\"/>\t\n            <msdn-id>bb172911</msdn-id>\t\n            <unmanaged>char* pTextureFilename</unmanaged>\t\n            <unmanaged-short>char pTextureFilename</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.FontDescription\">\n            <summary>\t\n            <p>Defines the attributes of a font.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The compiler setting also determines the structure type. If Unicode is defined, the <see cref=\"T:SharpDX.Direct3D9.FontDescription\"/> structure type resolves to a <see cref=\"T:SharpDX.Direct3D9.FontDescription\"/>;  otherwise the structure type resolves to a D3DXFONT_DESCA.</p><p>Possible values of the above members are given in the GDI <strong><see cref=\"T:SharpDX.Win32Native.LogFont\"/></strong> structure.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXFONT_DESCW']/*\"/>\t\n            <msdn-id>bb172843</msdn-id>\t\n            <unmanaged>D3DXFONT_DESCW</unmanaged>\t\n            <unmanaged-short>D3DXFONT_DESCW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FontDescription.Height\">\n            <summary>\t\n            <dd> <p>Height, in logical units, of the font's character cell or character.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXFONT_DESCW::Height']/*\"/>\t\n            <msdn-id>bb172843</msdn-id>\t\n            <unmanaged>int Height</unmanaged>\t\n            <unmanaged-short>int Height</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FontDescription.Width\">\n            <summary>\t\n            <dd> <p>Width, in logical units, of characters in the font.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXFONT_DESCW::Width']/*\"/>\t\n            <msdn-id>bb172843</msdn-id>\t\n            <unmanaged>unsigned int Width</unmanaged>\t\n            <unmanaged-short>unsigned int Width</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FontDescription.Weight\">\n            <summary>\t\n            <dd> <p>Weight of the font in the range from 0 through 1000.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXFONT_DESCW::Weight']/*\"/>\t\n            <msdn-id>bb172843</msdn-id>\t\n            <unmanaged>D3DX9_FONT_WEIGHT Weight</unmanaged>\t\n            <unmanaged-short>D3DX9_FONT_WEIGHT Weight</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FontDescription.MipLevels\">\n            <summary>\t\n            <dd> <p>Number of mip levels requested. If this value is zero or D3DX_DEFAULT, a complete mipmap chain is created. If the value is 1, the texture space  is mapped identically to the screen space.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXFONT_DESCW::MipLevels']/*\"/>\t\n            <msdn-id>bb172843</msdn-id>\t\n            <unmanaged>unsigned int MipLevels</unmanaged>\t\n            <unmanaged-short>unsigned int MipLevels</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FontDescription.Italic\">\n            <summary>\t\n            <dd> <p>Set to <strong>TRUE</strong> for an Italic font.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXFONT_DESCW::Italic']/*\"/>\t\n            <msdn-id>bb172843</msdn-id>\t\n            <unmanaged>BOOL Italic</unmanaged>\t\n            <unmanaged-short>BOOL Italic</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FontDescription.CharacterSet\">\n            <summary>\t\n            <dd> <p>Character set.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXFONT_DESCW::CharSet']/*\"/>\t\n            <msdn-id>bb172843</msdn-id>\t\n            <unmanaged>D3DX9_FONT_CHARSET CharSet</unmanaged>\t\n            <unmanaged-short>D3DX9_FONT_CHARSET CharSet</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FontDescription.OutputPrecision\">\n            <summary>\t\n            <dd> <p>Output precision. The output precision defines how closely the output must match the requested font height, width, character orientation,  escapement, pitch, and font type.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXFONT_DESCW::OutputPrecision']/*\"/>\t\n            <msdn-id>bb172843</msdn-id>\t\n            <unmanaged>D3DX9_FONT_PRECISION OutputPrecision</unmanaged>\t\n            <unmanaged-short>D3DX9_FONT_PRECISION OutputPrecision</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FontDescription.Quality\">\n            <summary>\t\n            <dd> <p>Output quality.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXFONT_DESCW::Quality']/*\"/>\t\n            <msdn-id>bb172843</msdn-id>\t\n            <unmanaged>D3DX9_FONT_QUALITY Quality</unmanaged>\t\n            <unmanaged-short>D3DX9_FONT_QUALITY Quality</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FontDescription.PitchAndFamily\">\n            <summary>\t\n            <dd> <p>Pitch and family of the font.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXFONT_DESCW::PitchAndFamily']/*\"/>\t\n            <msdn-id>bb172843</msdn-id>\t\n            <unmanaged>D3DX9_FONT_PITCHFAMILY PitchAndFamily</unmanaged>\t\n            <unmanaged-short>D3DX9_FONT_PITCHFAMILY PitchAndFamily</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FontDescription.FaceName\">\n            <summary>\t\n            <dd> <p>A null-terminated string or characters that specifies the typeface name of the font. The length of the string must not exceed 32 characters,  including the  terminating null character. If FaceName is an empty string, the first font that matches the other specified attributes will be used. If the compiler settings require Unicode, the data type TCHAR resolves to WCHAR; otherwise, the data type resolves to CHAR. See Remarks.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXFONT_DESCW::FaceName']/*\"/>\t\n            <msdn-id>bb172843</msdn-id>\t\n            <unmanaged>wchar_t FaceName[32]</unmanaged>\t\n            <unmanaged-short>wchar_t FaceName</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.Frame\">\n            <summary>\t\n            <p>Encapsulates a transform frame in a transformation frame hierarchy.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>An application can derive from this structure to add other data.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXFRAME']/*\"/>\t\n            <msdn-id>bb172845</msdn-id>\t\n            <unmanaged>D3DXFRAME</unmanaged>\t\n            <unmanaged-short>D3DXFRAME</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Frame.Name\">\n            <summary>\t\n            <dd> <p>Name of the frame.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXFRAME::Name']/*\"/>\t\n            <msdn-id>bb172845</msdn-id>\t\n            <unmanaged>char* Name</unmanaged>\t\n            <unmanaged-short>char Name</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Frame.TransformationMatrix\">\n            <summary>\t\n            <dd> <p>Transformation matrix.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXFRAME::TransformationMatrix']/*\"/>\t\n            <msdn-id>bb172845</msdn-id>\t\n            <unmanaged>D3DXMATRIX TransformationMatrix</unmanaged>\t\n            <unmanaged-short>D3DXMATRIX TransformationMatrix</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Frame.PMeshContainer\">\n            <summary>\t\n            <dd> <p>Pointer to the mesh container.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXFRAME::pMeshContainer']/*\"/>\t\n            <msdn-id>bb172845</msdn-id>\t\n            <unmanaged>D3DXMESHCONTAINER* pMeshContainer</unmanaged>\t\n            <unmanaged-short>D3DXMESHCONTAINER pMeshContainer</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Frame.PFrameSibling\">\n            <summary>\t\n            <dd> <p>Pointer to a sibling frame.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXFRAME::pFrameSibling']/*\"/>\t\n            <msdn-id>bb172845</msdn-id>\t\n            <unmanaged>D3DXFRAME* pFrameSibling</unmanaged>\t\n            <unmanaged-short>D3DXFRAME pFrameSibling</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Frame.PFrameFirstChild\">\n            <summary>\t\n            <dd> <p>Pointer to a child frame.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXFRAME::pFrameFirstChild']/*\"/>\t\n            <msdn-id>bb172845</msdn-id>\t\n            <unmanaged>D3DXFRAME* pFrameFirstChild</unmanaged>\t\n            <unmanaged-short>D3DXFRAME pFrameFirstChild</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.FunctionDescription\">\n            <summary>\t\n            <p>Describes a function used by an effect.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXFUNCTION_DESC']/*\"/>\t\n            <msdn-id>bb172853</msdn-id>\t\n            <unmanaged>D3DXFUNCTION_DESC</unmanaged>\t\n            <unmanaged-short>D3DXFUNCTION_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FunctionDescription.Name\">\n            <summary>\t\n            <dd> <p>Function name.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXFUNCTION_DESC::Name']/*\"/>\t\n            <msdn-id>bb172853</msdn-id>\t\n            <unmanaged>const char* Name</unmanaged>\t\n            <unmanaged-short>char Name</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.FunctionDescription.Annotations\">\n            <summary>\t\n            <dd> <p>Unused. This member will always be set to zero by <strong>GetFunctionDesc</strong>. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXFUNCTION_DESC::Annotations']/*\"/>\t\n            <msdn-id>bb172853</msdn-id>\t\n            <unmanaged>unsigned int Annotations</unmanaged>\t\n            <unmanaged-short>unsigned int Annotations</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.GammaRamp\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DGAMMARAMP']/*\"/>\t\n            <unmanaged>D3DGAMMARAMP</unmanaged>\t\n            <unmanaged-short>D3DGAMMARAMP</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.GammaRamp.Red\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DGAMMARAMP::red']/*\"/>\t\n            <unmanaged>unsigned short red[256]</unmanaged>\t\n            <unmanaged-short>unsigned short red</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.GammaRamp.Green\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DGAMMARAMP::green']/*\"/>\t\n            <unmanaged>unsigned short green[256]</unmanaged>\t\n            <unmanaged-short>unsigned short green</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.GammaRamp.Blue\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DGAMMARAMP::blue']/*\"/>\t\n            <unmanaged>unsigned short blue[256]</unmanaged>\t\n            <unmanaged-short>unsigned short blue</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.ImageInformation\">\n            <summary>\t\n            <p>Returns a description of the original contents of an image file.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXIMAGE_INFO']/*\"/>\t\n            <msdn-id>bb172879</msdn-id>\t\n            <unmanaged>D3DXIMAGE_INFO</unmanaged>\t\n            <unmanaged-short>D3DXIMAGE_INFO</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ImageInformation.Width\">\n            <summary>\t\n            <dd> <p>Width of original image in pixels.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXIMAGE_INFO::Width']/*\"/>\t\n            <msdn-id>bb172879</msdn-id>\t\n            <unmanaged>unsigned int Width</unmanaged>\t\n            <unmanaged-short>unsigned int Width</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ImageInformation.Height\">\n            <summary>\t\n            <dd> <p>Height of original image in pixels.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXIMAGE_INFO::Height']/*\"/>\t\n            <msdn-id>bb172879</msdn-id>\t\n            <unmanaged>unsigned int Height</unmanaged>\t\n            <unmanaged-short>unsigned int Height</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ImageInformation.Depth\">\n            <summary>\t\n            <dd> <p>Depth of original image in pixels.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXIMAGE_INFO::Depth']/*\"/>\t\n            <msdn-id>bb172879</msdn-id>\t\n            <unmanaged>unsigned int Depth</unmanaged>\t\n            <unmanaged-short>unsigned int Depth</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ImageInformation.MipLevels\">\n            <summary>\t\n            <dd> <p>Number of mip levels in original image.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXIMAGE_INFO::MipLevels']/*\"/>\t\n            <msdn-id>bb172879</msdn-id>\t\n            <unmanaged>unsigned int MipLevels</unmanaged>\t\n            <unmanaged-short>unsigned int MipLevels</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ImageInformation.Format\">\n            <summary>\t\n            <dd> <p>A value from the <see cref=\"T:SharpDX.Direct3D9.Format\"/> enumerated type that most closely describes the data in the original image.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXIMAGE_INFO::Format']/*\"/>\t\n            <msdn-id>bb172879</msdn-id>\t\n            <unmanaged>D3DFORMAT Format</unmanaged>\t\n            <unmanaged-short>D3DFORMAT Format</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ImageInformation.ResourceType\">\n            <summary>\t\n            <dd> <p>Represents the type of the texture stored in the file. It is either <see cref=\"F:SharpDX.Direct3D9.ResourceType.Texture\"/>, <see cref=\"F:SharpDX.Direct3D9.ResourceType.VolumeTexture\"/>, or D3DRTYPE_CubeTexture.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXIMAGE_INFO::ResourceType']/*\"/>\t\n            <msdn-id>bb172879</msdn-id>\t\n            <unmanaged>D3DRESOURCETYPE ResourceType</unmanaged>\t\n            <unmanaged-short>D3DRESOURCETYPE ResourceType</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ImageInformation.ImageFileFormat\">\n            <summary>\t\n            <dd> <p>Represents the format of the image file.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXIMAGE_INFO::ImageFileFormat']/*\"/>\t\n            <msdn-id>bb172879</msdn-id>\t\n            <unmanaged>D3DXIMAGE_FILEFORMAT ImageFileFormat</unmanaged>\t\n            <unmanaged-short>D3DXIMAGE_FILEFORMAT ImageFileFormat</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ImageInformation.FromFile(System.String)\">\n            <summary>\n            Retrieves information about a given image file on the disk.\n            </summary>\n            <param name=\"fileName\">The filename.</param>\n            <returns>A <see cref=\"T:SharpDX.Direct3D9.ImageInformation\"/> structure</returns>\n            <unmanaged>HRESULT D3DXGetImageInfoFromFileInMemory([In] const void* pSrcData,[In] unsigned int SrcDataSize,[Out] D3DXIMAGE_INFO* pSrcInfo)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ImageInformation.FromMemory(System.Byte[])\">\n            <summary>\n            Retrieves information about a given image file in memory.\n            </summary>\n            <param name=\"memory\">The memory.</param>\n            <returns>A <see cref=\"T:SharpDX.Direct3D9.ImageInformation\"/> structure</returns>\n            <unmanaged>HRESULT D3DXGetImageInfoFromFileInMemory([In] const void* pSrcData,[In] unsigned int SrcDataSize,[Out] D3DXIMAGE_INFO* pSrcInfo)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ImageInformation.FromStream(System.IO.Stream)\">\n            <summary>\n            Retrieves information about a given image file from a stream.\n            </summary>\n            <param name=\"stream\">The stream.</param>\n            <returns>A <see cref=\"T:SharpDX.Direct3D9.ImageInformation\"/> structure</returns>\n            <remarks>This method keeps the position of the stream</remarks>\n            <unmanaged>HRESULT D3DXGetImageInfoFromFileInMemory([In] const void* pSrcData,[In] unsigned int SrcDataSize,[Out] D3DXIMAGE_INFO* pSrcInfo)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ImageInformation.FromStream(System.IO.Stream,System.Boolean)\">\n            <summary>\n            Retrieves information about a given image file from a stream.\n            </summary>\n            <param name=\"stream\">The stream.</param>\n            <param name=\"keepPosition\">if set to <c>true</c> preserve the stream position; <c>false</c> will move the stream pointer.</param>\n            <returns>A <see cref=\"T:SharpDX.Direct3D9.ImageInformation\"/> structure</returns>\n            <unmanaged>HRESULT D3DXGetImageInfoFromFileInMemory([In] const void* pSrcData,[In] unsigned int SrcDataSize,[Out] D3DXIMAGE_INFO* pSrcInfo)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.IndexBufferDescription\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DINDEXBUFFER_DESC']/*\"/>\t\n            <unmanaged>D3DINDEXBUFFER_DESC</unmanaged>\t\n            <unmanaged-short>D3DINDEXBUFFER_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.IndexBufferDescription.Format\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DINDEXBUFFER_DESC::Format']/*\"/>\t\n            <unmanaged>D3DFORMAT Format</unmanaged>\t\n            <unmanaged-short>D3DFORMAT Format</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.IndexBufferDescription.Type\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DINDEXBUFFER_DESC::Type']/*\"/>\t\n            <unmanaged>D3DRESOURCETYPE Type</unmanaged>\t\n            <unmanaged-short>D3DRESOURCETYPE Type</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.IndexBufferDescription.Usage\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DINDEXBUFFER_DESC::Usage']/*\"/>\t\n            <unmanaged>D3DUSAGE Usage</unmanaged>\t\n            <unmanaged-short>D3DUSAGE Usage</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.IndexBufferDescription.Pool\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DINDEXBUFFER_DESC::Pool']/*\"/>\t\n            <unmanaged>D3DPOOL Pool</unmanaged>\t\n            <unmanaged-short>D3DPOOL Pool</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.IndexBufferDescription.Size\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DINDEXBUFFER_DESC::Size']/*\"/>\t\n            <unmanaged>unsigned int Size</unmanaged>\t\n            <unmanaged-short>unsigned int Size</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.InterfaceTimings\">\n            <summary>\t\n            <p>Percent of time processing data in the driver. These statistics may help identify cases when the driver is waiting for other resources.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>These metrics help identify when a driver is waiting and what it is waiting for. High percentages are not necessarily a problem.</p><p>These system-global metrics may or may not be implemented. Depending on the specific hardware, these metrics may not support multiple queries simultaneously.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDEVINFO_D3D9INTERFACETIMINGS']/*\"/>\t\n            <msdn-id>bb172541</msdn-id>\t\n            <unmanaged>D3DDEVINFO_D3D9INTERFACETIMINGS</unmanaged>\t\n            <unmanaged-short>D3DDEVINFO_D3D9INTERFACETIMINGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.InterfaceTimings.WaitingForGPUToUseApplicationResourceTimePercent\">\n            <summary>\t\n            <dd> <p>Percentage of time the driver spent waiting for the GPU to finish using a locked resource (and <see cref=\"F:SharpDX.Direct3D9.LockFlags.DoNotWait\"/> wasn't specified).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDEVINFO_D3D9INTERFACETIMINGS::WaitingForGPUToUseApplicationResourceTimePercent']/*\"/>\t\n            <msdn-id>bb172541</msdn-id>\t\n            <unmanaged>float WaitingForGPUToUseApplicationResourceTimePercent</unmanaged>\t\n            <unmanaged-short>float WaitingForGPUToUseApplicationResourceTimePercent</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.InterfaceTimings.WaitingForGPUToAcceptMoreCommandsTimePercent\">\n            <summary>\t\n            <dd> <p>Percentage of time the driver spent waiting for the GPU to finish processing some commands before the driver could send more. This indicates the driver has run out of room to send commands to the GPU.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDEVINFO_D3D9INTERFACETIMINGS::WaitingForGPUToAcceptMoreCommandsTimePercent']/*\"/>\t\n            <msdn-id>bb172541</msdn-id>\t\n            <unmanaged>float WaitingForGPUToAcceptMoreCommandsTimePercent</unmanaged>\t\n            <unmanaged-short>float WaitingForGPUToAcceptMoreCommandsTimePercent</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.InterfaceTimings.WaitingForGPUToStayWithinLatencyTimePercent\">\n            <summary>\t\n            <dd> <p>Percentage of time the driver spent waiting for the GPU latency to reduce to less than three rendering frames. </p> <p></p> <p>If an application is GPU-limited, the driver must stall the CPU until the GPU gets within three frames. This prevents an application from queuing up many seconds' worth of rendering calls which may dramatically increase the latency between when the user inputs new data and when the user sees the results of that input. In general, the driver can track the number of times <strong>Present</strong> is called to prevent queuing up more than three frames of rendering work.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDEVINFO_D3D9INTERFACETIMINGS::WaitingForGPUToStayWithinLatencyTimePercent']/*\"/>\t\n            <msdn-id>bb172541</msdn-id>\t\n            <unmanaged>float WaitingForGPUToStayWithinLatencyTimePercent</unmanaged>\t\n            <unmanaged-short>float WaitingForGPUToStayWithinLatencyTimePercent</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.InterfaceTimings.WaitingForGPUExclusiveResourceTimePercent\">\n            <summary>\t\n            <dd> <p>Percentage of time the driver spent waiting for a resource that cannot be pipelined (that is operated in parallel). An application may want to avoid using a non-pipelined resource for performance reasons.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDEVINFO_D3D9INTERFACETIMINGS::WaitingForGPUExclusiveResourceTimePercent']/*\"/>\t\n            <msdn-id>bb172541</msdn-id>\t\n            <unmanaged>float WaitingForGPUExclusiveResourceTimePercent</unmanaged>\t\n            <unmanaged-short>float WaitingForGPUExclusiveResourceTimePercent</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.InterfaceTimings.WaitingForGPUOtherTimePercent\">\n            <summary>\t\n            <dd> <p>Percentage of time the driver spent waiting for other GPU processing.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDEVINFO_D3D9INTERFACETIMINGS::WaitingForGPUOtherTimePercent']/*\"/>\t\n            <msdn-id>bb172541</msdn-id>\t\n            <unmanaged>float WaitingForGPUOtherTimePercent</unmanaged>\t\n            <unmanaged-short>float WaitingForGPUOtherTimePercent</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.Light\">\n            <summary>\t\n            <p>Defines a set of lighting properties.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DLIGHT9']/*\"/>\t\n            <msdn-id>bb172566</msdn-id>\t\n            <unmanaged>D3DLIGHT9</unmanaged>\t\n            <unmanaged-short>D3DLIGHT9</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Light.Type\">\n            <summary>\t\n            <dd> <p>Type of the light source. This value is one of the members of the <strong><see cref=\"T:SharpDX.Direct3D9.LightType\"/></strong> enumerated type. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DLIGHT9::Type']/*\"/>\t\n            <msdn-id>bb172566</msdn-id>\t\n            <unmanaged>D3DLIGHTTYPE Type</unmanaged>\t\n            <unmanaged-short>D3DLIGHTTYPE Type</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Light.Diffuse\">\n            <summary>\t\n            <dd> <p>Diffuse color emitted by the light. This member is a <strong><see cref=\"T:SharpDX.Color4\"/></strong> structure. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DLIGHT9::Diffuse']/*\"/>\t\n            <msdn-id>bb172566</msdn-id>\t\n            <unmanaged>D3DCOLORVALUE Diffuse</unmanaged>\t\n            <unmanaged-short>D3DCOLORVALUE Diffuse</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Light.Specular\">\n            <summary>\t\n            <dd> <p>Specular color emitted by the light. This member is a <strong><see cref=\"T:SharpDX.Color4\"/></strong> structure. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DLIGHT9::Specular']/*\"/>\t\n            <msdn-id>bb172566</msdn-id>\t\n            <unmanaged>D3DCOLORVALUE Specular</unmanaged>\t\n            <unmanaged-short>D3DCOLORVALUE Specular</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Light.Ambient\">\n            <summary>\t\n            <dd> <p>Ambient color emitted by the light. This member is a <strong><see cref=\"T:SharpDX.Color4\"/></strong> structure. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DLIGHT9::Ambient']/*\"/>\t\n            <msdn-id>bb172566</msdn-id>\t\n            <unmanaged>D3DCOLORVALUE Ambient</unmanaged>\t\n            <unmanaged-short>D3DCOLORVALUE Ambient</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Light.Position\">\n            <summary>\t\n            <dd> <p>Position of the light in world space, specified by a <strong><see cref=\"T:SharpDX.Vector3\"/></strong> structure. This member has no meaning for directional lights and is ignored in that case. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DLIGHT9::Position']/*\"/>\t\n            <msdn-id>bb172566</msdn-id>\t\n            <unmanaged>D3DVECTOR Position</unmanaged>\t\n            <unmanaged-short>D3DVECTOR Position</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Light.Direction\">\n            <summary>\t\n            <dd> <p>Direction that the light is pointing in world space, specified by a <strong><see cref=\"T:SharpDX.Vector3\"/></strong> structure. This member has meaning only for directional and spotlights. This vector need not be normalized, but it should have a nonzero length. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DLIGHT9::Direction']/*\"/>\t\n            <msdn-id>bb172566</msdn-id>\t\n            <unmanaged>D3DVECTOR Direction</unmanaged>\t\n            <unmanaged-short>D3DVECTOR Direction</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Light.Range\">\n            <summary>\t\n            <dd> <p>Distance beyond which the light has no effect. The maximum allowable value for this member is the square root of FLT_MAX. This member does not affect directional lights. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DLIGHT9::Range']/*\"/>\t\n            <msdn-id>bb172566</msdn-id>\t\n            <unmanaged>float Range</unmanaged>\t\n            <unmanaged-short>float Range</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Light.Falloff\">\n            <summary>\t\n            <dd> <p>Decrease in illumination between a spotlight's inner cone (the angle specified by  Theta) and the outer edge of the outer cone (the angle specified by Phi). </p> <p>The effect of falloff on the lighting is subtle. Furthermore, a small performance penalty is incurred by shaping the falloff curve. For these reasons, most developers set this value to 1.0.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DLIGHT9::Falloff']/*\"/>\t\n            <msdn-id>bb172566</msdn-id>\t\n            <unmanaged>float Falloff</unmanaged>\t\n            <unmanaged-short>float Falloff</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Light.Attenuation0\">\n            <summary>\t\n            <dd> <p>Value specifying how the light intensity changes over distance. Attenuation values are ignored for directional lights. This member represents an attenuation constant. For information about attenuation, see Light Properties (Direct3D 9). Valid values for this member range from 0.0 to infinity. For non-directional lights, all three attenuation values should not be set to 0.0 at the same time. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DLIGHT9::Attenuation0']/*\"/>\t\n            <msdn-id>bb172566</msdn-id>\t\n            <unmanaged>float Attenuation0</unmanaged>\t\n            <unmanaged-short>float Attenuation0</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Light.Attenuation1\">\n            <summary>\t\n            <dd> <p>Value specifying how the light intensity changes over distance. Attenuation values are ignored for directional lights. This member represents an attenuation constant. For information about attenuation, see Light Properties (Direct3D 9). Valid values for this member range from 0.0 to infinity. For non-directional lights, all three attenuation values should not be set to 0.0 at the same time.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DLIGHT9::Attenuation1']/*\"/>\t\n            <msdn-id>bb172566</msdn-id>\t\n            <unmanaged>float Attenuation1</unmanaged>\t\n            <unmanaged-short>float Attenuation1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Light.Attenuation2\">\n            <summary>\t\n            <dd> <p>Value specifying how the light intensity changes over distance. Attenuation values are ignored for directional lights. This member represents an attenuation constant. For information about attenuation, see Light Properties (Direct3D 9). Valid values for this member range from 0.0 to infinity. For non-directional lights, all three attenuation values should not be set to 0.0 at the same time.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DLIGHT9::Attenuation2']/*\"/>\t\n            <msdn-id>bb172566</msdn-id>\t\n            <unmanaged>float Attenuation2</unmanaged>\t\n            <unmanaged-short>float Attenuation2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Light.Theta\">\n            <summary>\t\n            <dd> <p>Angle, in radians, of a spotlight's inner cone - that is, the fully illuminated spotlight cone. This value must be in the range from 0 through the value specified by Phi.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DLIGHT9::Theta']/*\"/>\t\n            <msdn-id>bb172566</msdn-id>\t\n            <unmanaged>float Theta</unmanaged>\t\n            <unmanaged-short>float Theta</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Light.Phi\">\n            <summary>\t\n            <dd> <p>Angle, in radians, defining the outer edge of the spotlight's outer cone. Points outside this cone are not lit by the spotlight. This value must be between 0 and pi. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DLIGHT9::Phi']/*\"/>\t\n            <msdn-id>bb172566</msdn-id>\t\n            <unmanaged>float Phi</unmanaged>\t\n            <unmanaged-short>float Phi</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.LockedBox\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DLOCKED_BOX']/*\"/>\t\n            <msdn-id>bb280342</msdn-id>\t\n            <unmanaged>D3DLOCKED_BOX</unmanaged>\t\n            <unmanaged-short>D3DLOCKED_BOX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.LockedBox.RowPitch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DLOCKED_BOX::RowPitch']/*\"/>\t\n            <unmanaged>int RowPitch</unmanaged>\t\n            <unmanaged-short>int RowPitch</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.LockedBox.SlicePitch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DLOCKED_BOX::SlicePitch']/*\"/>\t\n            <unmanaged>int SlicePitch</unmanaged>\t\n            <unmanaged-short>int SlicePitch</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.LockedBox.PBits\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DLOCKED_BOX::pBits']/*\"/>\t\n            <unmanaged>void* pBits</unmanaged>\t\n            <unmanaged-short>void pBits</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.LockedRectangle\">\n            <summary>\t\n            <p>Describes a locked rectangular region.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The pitch for DXTn formats is different from what was returned in DirectX 7. It now refers to the number of bytes in a row of blocks. For example, if you have a width of 16, then you will have a pitch of 4 blocks (4*8 for DXT1, 4*16 for DXT2-5.)</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DLOCKED_RECT']/*\"/>\t\n            <msdn-id>bb172570</msdn-id>\t\n            <unmanaged>D3DLOCKED_RECT</unmanaged>\t\n            <unmanaged-short>D3DLOCKED_RECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.LockedRectangle.Pitch\">\n            <summary>\t\n            <dd> <p>Number of bytes in one row of the surface.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DLOCKED_RECT::Pitch']/*\"/>\t\n            <msdn-id>bb172570</msdn-id>\t\n            <unmanaged>int Pitch</unmanaged>\t\n            <unmanaged-short>int Pitch</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.LockedRectangle.PBits\">\n            <summary>\t\n            <dd> <p>Pointer to the locked bits. If a <strong><see cref=\"T:SharpDX.Rectangle\"/></strong> was provided to the <strong>LockRect</strong> call, pBits will be appropriately offset from the start of the surface.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DLOCKED_RECT::pBits']/*\"/>\t\n            <msdn-id>bb172570</msdn-id>\t\n            <unmanaged>void* pBits</unmanaged>\t\n            <unmanaged-short>void pBits</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.Macro\">\n            <summary>\t\n            <p>Describes preprocessor definitions used by an effect object.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>To use <strong><see cref=\"T:SharpDX.Direct3D9.Macro\"/></strong>s in more than one line, prefix each new line character with a backslash (like a #define in the C language). For example:</p><pre><code> sample=\t\n            macro.Name = \"DO_CODE_BLOCK\";\t\n            macro.Definition = \"/* here is a block of code */\\\\\\n\" \"{ do something ... }\\\\\\n\";\t\n            </code></pre><p>Notice the 3 backslash characters at the end of the line. The first two are required to output a single '\\', followed by the newline character \"\\n\". Optionally, you may also want to terminate your lines using \"\\\\\\r\\n\".</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXMACRO']/*\"/>\t\n            <msdn-id>bb172910</msdn-id>\t\n            <unmanaged>D3DXMACRO</unmanaged>\t\n            <unmanaged-short>D3DXMACRO</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Macro.Name\">\n            <summary>\t\n            <dd> <p>Preprocessor name.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXMACRO::Name']/*\"/>\t\n            <msdn-id>bb172910</msdn-id>\t\n            <unmanaged>const char* Name</unmanaged>\t\n            <unmanaged-short>char Name</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Macro.Definition\">\n            <summary>\t\n            <dd> <p>Definition name.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXMACRO::Definition']/*\"/>\t\n            <msdn-id>bb172910</msdn-id>\t\n            <unmanaged>const char* Definition</unmanaged>\t\n            <unmanaged-short>char Definition</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.Macro.#ctor(System.String,System.String)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D9.Macro\"/> struct.\n            </summary>\n            <param name=\"name\">The name.</param>\n            <param name=\"definition\">The definition.</param>\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.Material\">\n            <summary>\t\n            <p>Specifies material properties.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>To turn off specular highlights, set <see cref=\"F:SharpDX.Direct3D9.RenderState.SpecularEnable\"/> to <strong><see cref=\"F:SharpDX.Result.False\"/></strong>, using <strong><see cref=\"T:SharpDX.Direct3D9.RenderState\"/></strong>. This is the fastest option because no specular highlights will be calculated.</p><p>For more information about using the lighting engine to calculate specular lighting, see Specular Lighting (Direct3D 9).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DMATERIAL9']/*\"/>\t\n            <msdn-id>bb172571</msdn-id>\t\n            <unmanaged>D3DMATERIAL9</unmanaged>\t\n            <unmanaged-short>D3DMATERIAL9</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Material.Diffuse\">\n            <summary>\t\n            <dd> <p>Value specifying the diffuse color of the material. See <strong><see cref=\"T:SharpDX.Color4\"/></strong>. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DMATERIAL9::Diffuse']/*\"/>\t\n            <msdn-id>bb172571</msdn-id>\t\n            <unmanaged>D3DCOLORVALUE Diffuse</unmanaged>\t\n            <unmanaged-short>D3DCOLORVALUE Diffuse</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Material.Ambient\">\n            <summary>\t\n            <dd> <p>Value specifying the ambient color of the material. See <strong><see cref=\"T:SharpDX.Color4\"/></strong>. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DMATERIAL9::Ambient']/*\"/>\t\n            <msdn-id>bb172571</msdn-id>\t\n            <unmanaged>D3DCOLORVALUE Ambient</unmanaged>\t\n            <unmanaged-short>D3DCOLORVALUE Ambient</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Material.Specular\">\n            <summary>\t\n            <dd> <p>Value specifying the specular color of the material. See <strong><see cref=\"T:SharpDX.Color4\"/></strong>. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DMATERIAL9::Specular']/*\"/>\t\n            <msdn-id>bb172571</msdn-id>\t\n            <unmanaged>D3DCOLORVALUE Specular</unmanaged>\t\n            <unmanaged-short>D3DCOLORVALUE Specular</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Material.Emissive\">\n            <summary>\t\n            <dd> <p>Value specifying the emissive color of the material. See <strong><see cref=\"T:SharpDX.Color4\"/></strong>. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DMATERIAL9::Emissive']/*\"/>\t\n            <msdn-id>bb172571</msdn-id>\t\n            <unmanaged>D3DCOLORVALUE Emissive</unmanaged>\t\n            <unmanaged-short>D3DCOLORVALUE Emissive</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Material.Power\">\n            <summary>\t\n            <dd> <p>Floating-point value specifying the sharpness of specular highlights. The higher the value, the sharper the highlight.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DMATERIAL9::Power']/*\"/>\t\n            <msdn-id>bb172571</msdn-id>\t\n            <unmanaged>float Power</unmanaged>\t\n            <unmanaged-short>float Power</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.MeshContainer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXMESHCONTAINER']/*\"/>\t\n            <msdn-id>bb280302</msdn-id>\t\n            <unmanaged>D3DXMESHCONTAINER</unmanaged>\t\n            <unmanaged-short>D3DXMESHCONTAINER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.MeshContainer.Name\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXMESHCONTAINER::Name']/*\"/>\t\n            <unmanaged>char* Name</unmanaged>\t\n            <unmanaged-short>char Name</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.MeshContainer.MeshData\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXMESHCONTAINER::MeshData']/*\"/>\t\n            <unmanaged>D3DXMESHDATA MeshData</unmanaged>\t\n            <unmanaged-short>D3DXMESHDATA MeshData</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.MeshContainer.MaterialPointer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXMESHCONTAINER::pMaterials']/*\"/>\t\n            <unmanaged>D3DXMATERIAL* pMaterials</unmanaged>\t\n            <unmanaged-short>D3DXMATERIAL pMaterials</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.MeshContainer.PEffects\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXMESHCONTAINER::pEffects']/*\"/>\t\n            <unmanaged>D3DXEFFECTINSTANCE* pEffects</unmanaged>\t\n            <unmanaged-short>D3DXEFFECTINSTANCE pEffects</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.MeshContainer.MaterialCount\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXMESHCONTAINER::NumMaterials']/*\"/>\t\n            <unmanaged>unsigned int NumMaterials</unmanaged>\t\n            <unmanaged-short>unsigned int NumMaterials</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.MeshContainer.PAdjacency\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXMESHCONTAINER::pAdjacency']/*\"/>\t\n            <unmanaged>unsigned int* pAdjacency</unmanaged>\t\n            <unmanaged-short>unsigned int pAdjacency</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.MeshContainer.PSkinInfo\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXMESHCONTAINER::pSkinInfo']/*\"/>\t\n            <unmanaged>ID3DXSkinInfo* pSkinInfo</unmanaged>\t\n            <unmanaged-short>ID3DXSkinInfo pSkinInfo</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.MeshContainer.PNextMeshContainer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXMESHCONTAINER::pNextMeshContainer']/*\"/>\t\n            <unmanaged>D3DXMESHCONTAINER* pNextMeshContainer</unmanaged>\t\n            <unmanaged-short>D3DXMESHCONTAINER pNextMeshContainer</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.MeshContainer.Materials\">\n            <summary>\n            Gets or sets the materials.\n            </summary>\n            <value>\n            The materials.\n            </value>\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.MeshData\">\n            <summary>\t\n            <p>Mesh data structure.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXMESHDATA']/*\"/>\t\n            <msdn-id>bb205372</msdn-id>\t\n            <unmanaged>D3DXMESHDATA</unmanaged>\t\n            <unmanaged-short>D3DXMESHDATA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.MeshData.Type\">\n            <summary>\t\n            <dd> <p>Defines the mesh data type. See <strong><see cref=\"T:SharpDX.Direct3D9.MeshDataType\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXMESHDATA::Type']/*\"/>\t\n            <msdn-id>bb205372</msdn-id>\t\n            <unmanaged>D3DXMESHDATATYPE Type</unmanaged>\t\n            <unmanaged-short>D3DXMESHDATATYPE Type</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.MeshData.PMesh\">\n            <summary>\t\n            <dd> <p>Pointer to a mesh. See <strong><see cref=\"T:SharpDX.Direct3D9.Mesh\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXMESHDATA::pMesh']/*\"/>\t\n            <msdn-id>bb205372</msdn-id>\t\n            <unmanaged>ID3DXMesh* pMesh</unmanaged>\t\n            <unmanaged-short>ID3DXMesh pMesh</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.MeshData.PPMesh\">\n            <summary>\t\n            <dd> <p>Pointer to a patch mesh. See <strong><see cref=\"T:SharpDX.Direct3D9.PatchMesh\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXMESHDATA::pPMesh']/*\"/>\t\n            <msdn-id>bb205372</msdn-id>\t\n            <unmanaged>ID3DXPMesh* pPMesh</unmanaged>\t\n            <unmanaged-short>ID3DXPMesh pPMesh</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.MeshData.PPatchMesh\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXMESHDATA::pPatchMesh']/*\"/>\t\n            <unmanaged>ID3DXPatchMesh* pPatchMesh</unmanaged>\t\n            <unmanaged-short>ID3DXPatchMesh pPatchMesh</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.ParameterDescription\">\n            <summary>\t\n            <p>Describes a parameter used for an effect object.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXPARAMETER_DESC']/*\"/>\t\n            <msdn-id>bb205379</msdn-id>\t\n            <unmanaged>D3DXPARAMETER_DESC</unmanaged>\t\n            <unmanaged-short>D3DXPARAMETER_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ParameterDescription.Name\">\n            <summary>\t\n            <dd> <p>Name of the parameter.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXPARAMETER_DESC::Name']/*\"/>\t\n            <msdn-id>bb205379</msdn-id>\t\n            <unmanaged>const char* Name</unmanaged>\t\n            <unmanaged-short>char Name</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ParameterDescription.Semantic\">\n            <summary>\t\n            <dd> <p>Semantic meaning, also called the usage.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXPARAMETER_DESC::Semantic']/*\"/>\t\n            <msdn-id>bb205379</msdn-id>\t\n            <unmanaged>const char* Semantic</unmanaged>\t\n            <unmanaged-short>char Semantic</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ParameterDescription.Class\">\n            <summary>\t\n            <dd> <p>Parameter class. Set this to one of the values in <strong><see cref=\"T:SharpDX.Direct3D9.ParameterClass\"/></strong>. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXPARAMETER_DESC::Class']/*\"/>\t\n            <msdn-id>bb205379</msdn-id>\t\n            <unmanaged>D3DXPARAMETER_CLASS Class</unmanaged>\t\n            <unmanaged-short>D3DXPARAMETER_CLASS Class</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ParameterDescription.Type\">\n            <summary>\t\n            <dd> <p>Parameter type. Set this to one of the values in <strong><see cref=\"T:SharpDX.Direct3D9.ParameterType\"/></strong>. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXPARAMETER_DESC::Type']/*\"/>\t\n            <msdn-id>bb205379</msdn-id>\t\n            <unmanaged>D3DXPARAMETER_TYPE Type</unmanaged>\t\n            <unmanaged-short>D3DXPARAMETER_TYPE Type</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ParameterDescription.Rows\">\n            <summary>\t\n            <dd> <p>Number of rows in the array.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXPARAMETER_DESC::Rows']/*\"/>\t\n            <msdn-id>bb205379</msdn-id>\t\n            <unmanaged>unsigned int Rows</unmanaged>\t\n            <unmanaged-short>unsigned int Rows</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ParameterDescription.Columns\">\n            <summary>\t\n            <dd> <p>Number of columns in the array.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXPARAMETER_DESC::Columns']/*\"/>\t\n            <msdn-id>bb205379</msdn-id>\t\n            <unmanaged>unsigned int Columns</unmanaged>\t\n            <unmanaged-short>unsigned int Columns</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ParameterDescription.Elements\">\n            <summary>\t\n            <dd> <p>Number of elements in the array.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXPARAMETER_DESC::Elements']/*\"/>\t\n            <msdn-id>bb205379</msdn-id>\t\n            <unmanaged>unsigned int Elements</unmanaged>\t\n            <unmanaged-short>unsigned int Elements</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ParameterDescription.Annotations\">\n            <summary>\t\n            <dd> <p>Number of annotations.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXPARAMETER_DESC::Annotations']/*\"/>\t\n            <msdn-id>bb205379</msdn-id>\t\n            <unmanaged>unsigned int Annotations</unmanaged>\t\n            <unmanaged-short>unsigned int Annotations</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ParameterDescription.StructMembers\">\n            <summary>\t\n            <dd> <p>Number of structure members.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXPARAMETER_DESC::StructMembers']/*\"/>\t\n            <msdn-id>bb205379</msdn-id>\t\n            <unmanaged>unsigned int StructMembers</unmanaged>\t\n            <unmanaged-short>unsigned int StructMembers</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ParameterDescription.Flags\">\n            <summary>\t\n            <dd> <p>Parameter attributes. See Effect Constants.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXPARAMETER_DESC::Flags']/*\"/>\t\n            <msdn-id>bb205379</msdn-id>\t\n            <unmanaged>unsigned int Flags</unmanaged>\t\n            <unmanaged-short>unsigned int Flags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ParameterDescription.Bytes\">\n            <summary>\t\n            <dd> <p>The size of the parameter, in bytes. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXPARAMETER_DESC::Bytes']/*\"/>\t\n            <msdn-id>bb205379</msdn-id>\t\n            <unmanaged>unsigned int Bytes</unmanaged>\t\n            <unmanaged-short>unsigned int Bytes</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.PassDescription\">\n            <summary>\t\n            <p>Describes a pass for an effect object.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXPASS_DESC']/*\"/>\t\n            <msdn-id>bb205381</msdn-id>\t\n            <unmanaged>D3DXPASS_DESC</unmanaged>\t\n            <unmanaged-short>D3DXPASS_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PassDescription.Name\">\n            <summary>\t\n            <dd> <p>String value used for the pass.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXPASS_DESC::Name']/*\"/>\t\n            <msdn-id>bb205381</msdn-id>\t\n            <unmanaged>const char* Name</unmanaged>\t\n            <unmanaged-short>char Name</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PassDescription.Annotations\">\n            <summary>\t\n            <dd> <p>Annotations are user-specific data that can be attached to any technique, pass, or parameter. See Add Information to Effect Parameters with_Annotations.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXPASS_DESC::Annotations']/*\"/>\t\n            <msdn-id>bb205381</msdn-id>\t\n            <unmanaged>unsigned int Annotations</unmanaged>\t\n            <unmanaged-short>unsigned int Annotations</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PassDescription.PVertexShaderFunction\">\n            <summary>\t\n            <dd> <p>Pointer to the vertex shader function. If an effect is created with <see cref=\"F:SharpDX.Direct3D9.FX.NotCloneable\"/>, this structure will return a <strong><c>null</c></strong> reference when called by <strong>GetPassDesc</strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXPASS_DESC::pVertexShaderFunction']/*\"/>\t\n            <msdn-id>bb205381</msdn-id>\t\n            <unmanaged>const unsigned int* pVertexShaderFunction</unmanaged>\t\n            <unmanaged-short>unsigned int pVertexShaderFunction</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PassDescription.PPixelShaderFunction\">\n            <summary>\t\n            <dd> <p>Pointer to the pixel shader function. If an effect is created with <see cref=\"F:SharpDX.Direct3D9.FX.NotCloneable\"/>, this structure will return a <strong><c>null</c></strong> reference when called by <strong>GetPassDesc</strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXPASS_DESC::pPixelShaderFunction']/*\"/>\t\n            <msdn-id>bb205381</msdn-id>\t\n            <unmanaged>const unsigned int* pPixelShaderFunction</unmanaged>\t\n            <unmanaged-short>unsigned int pPixelShaderFunction</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.PatchInfo\">\n            <summary>\t\n            <p>Structure that contains the attributes of a patch mesh.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>A mesh is a set of faces, each of which is described by a simple polygon. Objects can be created by connecting several meshes together.  A patch mesh is constructed from patches. A patch is a four-sided piece of geometry constructed from curves.  The type of curve used and the order of the curve can be varied so that the patch surface will fit almost any surface shape.</p><p>The following types of patch combinations are supported:</p><table> <tr><th>Patch Type</th><th>Basis</th><th>Degree</th></tr> <tr><td>Rectangle</td><td>Bezier</td><td>2,3,5</td></tr> <tr><td>Rectangle</td><td>B-Spline</td><td>2,3,5</td></tr> <tr><td>Rectangle</td><td>Catmull-Rom</td><td>3</td></tr> <tr><td>Triangle</td><td>Bezier</td><td>2,3,5</td></tr> <tr><td>N-patch</td><td>N/A</td><td>3</td></tr> </table><p>?</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXPATCHINFO']/*\"/>\t\n            <msdn-id>bb205382</msdn-id>\t\n            <unmanaged>D3DXPATCHINFO</unmanaged>\t\n            <unmanaged-short>D3DXPATCHINFO</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PatchInfo.PatchType\">\n            <summary>\t\n            <dd> <p>The patch type. For information about patch types, see <strong><see cref=\"T:SharpDX.Direct3D9.PatchMeshType\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXPATCHINFO::PatchType']/*\"/>\t\n            <msdn-id>bb205382</msdn-id>\t\n            <unmanaged>D3DXPATCHMESHTYPE PatchType</unmanaged>\t\n            <unmanaged-short>D3DXPATCHMESHTYPE PatchType</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PatchInfo.Degree\">\n            <summary>\t\n            <dd> <p>Degree of the curves used to construct the patch. For information about the degrees supported, see <strong><see cref=\"T:SharpDX.Direct3D9.Degree\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXPATCHINFO::Degree']/*\"/>\t\n            <msdn-id>bb205382</msdn-id>\t\n            <unmanaged>D3DDEGREETYPE Degree</unmanaged>\t\n            <unmanaged-short>D3DDEGREETYPE Degree</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PatchInfo.Basis\">\n            <summary>\t\n            <dd> <p>Type of curve used to construct the patch. For information about the basis types supported, see <strong><see cref=\"T:SharpDX.Direct3D9.Basis\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXPATCHINFO::Basis']/*\"/>\t\n            <msdn-id>bb205382</msdn-id>\t\n            <unmanaged>D3DBASISTYPE Basis</unmanaged>\t\n            <unmanaged-short>D3DBASISTYPE Basis</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.PipelineTimings\">\n            <summary>\t\n            <p>Percent of time processing data in the pipeline.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>For best performance, a balanced load is recommended.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDEVINFO_D3D9PIPELINETIMINGS']/*\"/>\t\n            <msdn-id>bb172542</msdn-id>\t\n            <unmanaged>D3DDEVINFO_D3D9PIPELINETIMINGS</unmanaged>\t\n            <unmanaged-short>D3DDEVINFO_D3D9PIPELINETIMINGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PipelineTimings.VertexProcessingTimePercent\">\n            <summary>\t\n            <dd> <p>Percent of time spent running vertex shaders.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDEVINFO_D3D9PIPELINETIMINGS::VertexProcessingTimePercent']/*\"/>\t\n            <msdn-id>bb172542</msdn-id>\t\n            <unmanaged>float VertexProcessingTimePercent</unmanaged>\t\n            <unmanaged-short>float VertexProcessingTimePercent</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PipelineTimings.PixelProcessingTimePercent\">\n            <summary>\t\n            <dd> <p>Percent of time spent running pixel shaders.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDEVINFO_D3D9PIPELINETIMINGS::PixelProcessingTimePercent']/*\"/>\t\n            <msdn-id>bb172542</msdn-id>\t\n            <unmanaged>float PixelProcessingTimePercent</unmanaged>\t\n            <unmanaged-short>float PixelProcessingTimePercent</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PipelineTimings.OtherGPUProcessingTimePercent\">\n            <summary>\t\n            <dd> <p>Percent of time spent doing other processing.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDEVINFO_D3D9PIPELINETIMINGS::OtherGPUProcessingTimePercent']/*\"/>\t\n            <msdn-id>bb172542</msdn-id>\t\n            <unmanaged>float OtherGPUProcessingTimePercent</unmanaged>\t\n            <unmanaged-short>float OtherGPUProcessingTimePercent</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PipelineTimings.GPUIdleTimePercent\">\n            <summary>\t\n            <dd> <p>Percent of time not processing anything.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDEVINFO_D3D9PIPELINETIMINGS::GPUIdleTimePercent']/*\"/>\t\n            <msdn-id>bb172542</msdn-id>\t\n            <unmanaged>float GPUIdleTimePercent</unmanaged>\t\n            <unmanaged-short>float GPUIdleTimePercent</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.PixelShader20Caps\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPSHADERCAPS2_0']/*\"/>\t\n            <msdn-id>bb280337</msdn-id>\t\n            <unmanaged>D3DPSHADERCAPS2_0</unmanaged>\t\n            <unmanaged-short>D3DPSHADERCAPS2_0</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PixelShader20Caps.Caps\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPSHADERCAPS2_0::Caps']/*\"/>\t\n            <unmanaged>D3DPS20CAPS Caps</unmanaged>\t\n            <unmanaged-short>D3DPS20CAPS Caps</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PixelShader20Caps.DynamicFlowControlDepth\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPSHADERCAPS2_0::DynamicFlowControlDepth']/*\"/>\t\n            <unmanaged>int DynamicFlowControlDepth</unmanaged>\t\n            <unmanaged-short>int DynamicFlowControlDepth</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PixelShader20Caps.TempCount\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPSHADERCAPS2_0::NumTemps']/*\"/>\t\n            <unmanaged>int NumTemps</unmanaged>\t\n            <unmanaged-short>int NumTemps</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PixelShader20Caps.StaticFlowControlDepth\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPSHADERCAPS2_0::StaticFlowControlDepth']/*\"/>\t\n            <unmanaged>int StaticFlowControlDepth</unmanaged>\t\n            <unmanaged-short>int StaticFlowControlDepth</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PixelShader20Caps.InstructionSlotCount\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPSHADERCAPS2_0::NumInstructionSlots']/*\"/>\t\n            <unmanaged>int NumInstructionSlots</unmanaged>\t\n            <unmanaged-short>int NumInstructionSlots</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.PresentationStatistics\">\n            <summary>\t\n            <p>Describes swapchain statistics relating to <strong>PresentEx</strong> calls.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>When a 9Ex application adopts Flip Mode present (<see cref=\"F:SharpDX.Direct3D9.SwapEffect.FlipEx\"/>), applications can detect frame dropping by calling GetPresentStatistics  at any point in time.  In effect, they can do the following.</p><ol> <li>Render to the back buffer</li> <li>Call Present</li> <li>Call GetPresentStats and store the resulting <see cref=\"T:SharpDX.Direct3D9.PresentationStatistics\"/> structure</li> <li>Render the next frame to the back buffer</li> <li>Call Present</li> <li>Repeat steps 4 and 5 one or more times</li> <li>Call GetPresentStats and store the resulting <see cref=\"T:SharpDX.Direct3D9.PresentationStatistics\"/> structure </li> <li>Compare the values of PresentRefreshCount from the two stored <see cref=\"T:SharpDX.Direct3D9.PresentationStatistics\"/> structures.  The application can calculate the corresponding PresentRefreshCount of a particular PresentCount parameter based on the assumptions of  PresentRefreshCount increment and PresentCount assignment of frame presents.  If the PresentRefreshCount last sampled does not  match the PresentCount (i.e. if the PresentRefreshCount has incremented but PresentCount has not, then there was frame dropping.)  </li> </ol><p>Applications can determine whether a frame has been dropped by sampling any two instances of PresentCount and  GetPresentStats (by calling GetPresentStats API at any two points in time). For example, a media application that is presenting at the same rate  as the monitor refresh rate (for example, monitor refresh rate is 60Hz, the application presents a frame every 1/60 seconds) wants to present  frames A, B, C, D, E, each corresponding to Present IDs (PresentCount) 1, 2, 3, 7, 8.</p><p>The application code looks like the following sequence.</p><ol> <li>Render frame A to the back buffer</li> <li>Call Present, PresentCount = 1</li> <li>Call GetPresentStats and store the resulting <see cref=\"T:SharpDX.Direct3D9.PresentationStatistics\"/> structure</li> <li>Render the next 4 frames, B, C, D, E, respectively</li> <li>Call Present 4 times, PresentCounts = 2, 3, 7, 8, respectively</li> <li>Call GetPresentStats and store the resulting <see cref=\"T:SharpDX.Direct3D9.PresentationStatistics\"/> structure </li> <li>Compare the values of PresentRefreshCount from the two stored <see cref=\"T:SharpDX.Direct3D9.PresentationStatistics\"/> structures.   If the difference is 2, i.e. 2 vblank intervals has elapsed between the two GetPresentStats API calls,  then the last presented frame should be frame C.  Because the application presents once very vblank interval (the refresh rate of the monitor),  the time elapsed between when frame A is presented and when frame C is presented should be 2 vblanks. </li> <li> Compare the values of PresentCount from the two stored <see cref=\"T:SharpDX.Direct3D9.PresentationStatistics\"/> structures.   If the first PresentCount is 1 (corresponding to frame A) and the second PresentCount is 3 (corresponding to frame C),  then no frames have been dropped.  If the second PresentCount is 3, which corresponds to frame D,  then the application knows that one frame has been dropped.</li> </ol><p>Note that GetPresentStatistics will be processed after it is called, regardless of the state of FLIPEX mode PresentEx  calls.</p><strong>Windows?Vista:??</strong>The Present calls will be queued and then processed before GetPresentStats  call will be processed.<p>When an application detects that the presentation of certain frames are behind, it can skip those frames and correct the presentation to  re-synchronize with the vblank.  To do this, an application can simply not render the late frames and start rendering with the next correct frame  in the queue.  However, if an application has already started the rendering of late frames, it can use a new Present parameter in D3D9Ex called <see cref=\"F:SharpDX.Direct3D9.Present.ForceImmediate\"/>.  The flag will be passed in the parameters of Present API call and indicates to the runtime that the frame  will be processed immediately within the next vblank interval, effectively not visible on screen at all.  Here is the application usage example  after the last step in the previous example.</p><ol> <li>Render the next frame to the back buffer</li> <li>Discover from PresentRefreshCount that the next frame is already late</li> <li>Set Present interval to <see cref=\"F:SharpDX.Direct3D9.Present.ForceImmediate\"/></li> <li>Call Present on the next frame</li> </ol><p>Applications can synchronize video and audio streams in the same manner because the behavior of GetPresentStatistics  does not change in that scenario.</p><p>D3D9Ex Flip Mode provides frame statistics information to windowed applications and full screen 9Ex applications. </p><strong>Windows?Vista:??</strong>Use the DWM APIs for retrieving present statistics.<p>When Desktop Window Manager is turned off, windowed mode 9Ex applications using flip mode will receive present statistics information of  limited accuracy.</p><strong>Windows?Vista:??</strong><p>If an application is not fast enough to keep up with the monitor's refresh rate, possibly due to slow hardware or lack of system resources,  then it can experience a graphics glitch. A glitch is a so-called visual hiccup. If a monitor is set to refresh at 60 Hz, and the application  can only manage 30 fps, then half of the frames will have glitches.</p> <p>Applications can detect a glitch by keeping track of SynchRefreshCount. For example, an application might perform the following sequence of actions.</p> <ol> <li>Render to the back buffer.</li> <li>Call Present. </li> <li>Call GetPresentStats and store the resulting <see cref=\"T:SharpDX.Direct3D9.PresentationStatistics\"/> structure. </li> <li>Render the next frame to the back buffer. </li> <li>Call Present. </li> <li>Call GetPresentStats and store the resulting <see cref=\"T:SharpDX.Direct3D9.PresentationStatistics\"/> structure.</li> <li>Compare the values of SyncRefreshCount from the two stored <see cref=\"T:SharpDX.Direct3D9.PresentationStatistics\"/> structures.  If the difference is greater than one, then a frame was skipped. </li> </ol>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPRESENTSTATS']/*\"/>\t\n            <msdn-id>bb172587</msdn-id>\t\n            <unmanaged>D3DPRESENTSTATS</unmanaged>\t\n            <unmanaged-short>D3DPRESENTSTATS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PresentationStatistics.PresentCount\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPRESENTSTATS::PresentCount']/*\"/>\t\n            <unmanaged>unsigned int PresentCount</unmanaged>\t\n            <unmanaged-short>unsigned int PresentCount</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PresentationStatistics.PresentRefreshCount\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPRESENTSTATS::PresentRefreshCount']/*\"/>\t\n            <unmanaged>unsigned int PresentRefreshCount</unmanaged>\t\n            <unmanaged-short>unsigned int PresentRefreshCount</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PresentationStatistics.SyncRefreshCount\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPRESENTSTATS::SyncRefreshCount']/*\"/>\t\n            <unmanaged>unsigned int SyncRefreshCount</unmanaged>\t\n            <unmanaged-short>unsigned int SyncRefreshCount</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PresentationStatistics.SyncQPCTime\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPRESENTSTATS::SyncQPCTime']/*\"/>\t\n            <unmanaged>LARGE_INTEGER SyncQPCTime</unmanaged>\t\n            <unmanaged-short>LARGE_INTEGER SyncQPCTime</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PresentationStatistics.SyncGPUTime\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPRESENTSTATS::SyncGPUTime']/*\"/>\t\n            <unmanaged>LARGE_INTEGER SyncGPUTime</unmanaged>\t\n            <unmanaged-short>LARGE_INTEGER SyncGPUTime</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.PresentParameters\">\n            <summary>\t\n            <p>Describes the presentation parameters.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPRESENT_PARAMETERS']/*\"/>\t\n            <msdn-id>bb172588</msdn-id>\t\n            <unmanaged>D3DPRESENT_PARAMETERS</unmanaged>\t\n            <unmanaged-short>D3DPRESENT_PARAMETERS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PresentParameters.BackBufferWidth\">\n            <summary>\t\n            <dd> <p>Width of the new swap chain's back buffers, in pixels. If <strong>Windowed</strong> is <strong><see cref=\"F:SharpDX.Result.False\"/></strong> (the presentation is full-screen), this value must equal the width of one of the enumerated display modes found through <strong>EnumAdapterModes</strong>. If <strong>Windowed</strong> is <strong>TRUE</strong> and either <strong>BackBufferWidth</strong> or <strong>BackBufferHeight</strong> is zero, the corresponding dimension of the client area of the <strong>hDeviceWindow</strong> (or the focus window, if <strong>hDeviceWindow</strong> is <strong><c>null</c></strong>) is taken.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPRESENT_PARAMETERS::BackBufferWidth']/*\"/>\t\n            <msdn-id>bb172588</msdn-id>\t\n            <unmanaged>unsigned int BackBufferWidth</unmanaged>\t\n            <unmanaged-short>unsigned int BackBufferWidth</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PresentParameters.BackBufferHeight\">\n            <summary>\t\n            <dd> <p>Height of the new swap chain's back buffers, in pixels. If <strong>Windowed</strong> is <strong><see cref=\"F:SharpDX.Result.False\"/></strong> (the presentation is full-screen), this value must equal the height of one of the enumerated display modes found through <strong>EnumAdapterModes</strong>. If <strong>Windowed</strong> is <strong>TRUE</strong> and either <strong>BackBufferWidth</strong> or <strong>BackBufferHeight</strong> is zero, the corresponding dimension of the client area of the <strong>hDeviceWindow</strong> (or the focus window, if <strong>hDeviceWindow</strong> is <strong><c>null</c></strong>) is taken.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPRESENT_PARAMETERS::BackBufferHeight']/*\"/>\t\n            <msdn-id>bb172588</msdn-id>\t\n            <unmanaged>unsigned int BackBufferHeight</unmanaged>\t\n            <unmanaged-short>unsigned int BackBufferHeight</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PresentParameters.BackBufferFormat\">\n            <summary>\t\n            <dd> <p>The back buffer format. For more information about formats, see <see cref=\"T:SharpDX.Direct3D9.Format\"/>. This value must be one of the render-target formats as validated by <strong>CheckDeviceType</strong>. You can use <strong>GetDisplayMode</strong> to obtain the current format.</p> <p>In fact, <see cref=\"F:SharpDX.Direct3D9.Format.Unknown\"/> can be specified for the <strong>BackBufferFormat</strong> while in windowed mode. This tells the runtime to use the current display-mode format and eliminates the need to call <strong>GetDisplayMode</strong>.</p> <p>For windowed applications, the back buffer format no longer needs to match the display-mode format because color conversion can now be done by the hardware (if the hardware supports color conversion). The set of possible back buffer formats is constrained, but the runtime will allow any valid back buffer format to be presented to any desktop format. (There is the additional requirement that the device be operable in the desktop mode; devices typically do not operate in 8 bits per pixel modes.)</p> <p>Full-screen applications cannot do color conversion.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPRESENT_PARAMETERS::BackBufferFormat']/*\"/>\t\n            <msdn-id>bb172588</msdn-id>\t\n            <unmanaged>D3DFORMAT BackBufferFormat</unmanaged>\t\n            <unmanaged-short>D3DFORMAT BackBufferFormat</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PresentParameters.BackBufferCount\">\n            <summary>\t\n            <dd> <p>This value can be between 0 and <see cref=\"F:SharpDX.Direct3D9.Present.BackBuffersMaximum\"/> (or <see cref=\"F:SharpDX.Direct3D9.Present.BackBuffersMaximumEx\"/> when using Direct3D 9Ex). Values of 0 are treated as 1. If the number of back buffers cannot be created, the runtime will fail the method call and fill this value with the number of back buffers that could be created. As a result, an application can call the method twice with the same <see cref=\"T:SharpDX.Direct3D9.PresentParameters\"/> structure and expect it to work the second time.</p> <p>The method fails if one back buffer cannot be created. The value of <strong>BackBufferCount</strong> influences what set of swap effects are allowed. Specifically, any <see cref=\"F:SharpDX.Direct3D9.SwapEffect.Copy\"/> swap effect requires that there be exactly one back buffer.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPRESENT_PARAMETERS::BackBufferCount']/*\"/>\t\n            <msdn-id>bb172588</msdn-id>\t\n            <unmanaged>unsigned int BackBufferCount</unmanaged>\t\n            <unmanaged-short>unsigned int BackBufferCount</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PresentParameters.MultiSampleType\">\n            <summary>\t\n            <dd> <p>Member of the <strong><see cref=\"T:SharpDX.Direct3D9.MultisampleType\"/></strong> enumerated type. The value must be <see cref=\"F:SharpDX.Direct3D9.MultisampleType.None\"/> unless <strong>SwapEffect</strong> has been set to <see cref=\"F:SharpDX.Direct3D9.SwapEffect.Discard\"/>. Multisampling is supported only if the swap effect is <see cref=\"F:SharpDX.Direct3D9.SwapEffect.Discard\"/>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPRESENT_PARAMETERS::MultiSampleType']/*\"/>\t\n            <msdn-id>bb172588</msdn-id>\t\n            <unmanaged>D3DMULTISAMPLE_TYPE MultiSampleType</unmanaged>\t\n            <unmanaged-short>D3DMULTISAMPLE_TYPE MultiSampleType</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PresentParameters.MultiSampleQuality\">\n            <summary>\t\n            <dd> <p>Quality level. The valid range is between zero and one less than the level returned by pQualityLevels used by  <strong>CheckDeviceMultiSampleType</strong>. Passing a larger value returns the error <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>. Paired values of render targets or of depth stencil surfaces and <strong><see cref=\"T:SharpDX.Direct3D9.MultisampleType\"/></strong> must match.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPRESENT_PARAMETERS::MultiSampleQuality']/*\"/>\t\n            <msdn-id>bb172588</msdn-id>\t\n            <unmanaged>unsigned int MultiSampleQuality</unmanaged>\t\n            <unmanaged-short>unsigned int MultiSampleQuality</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PresentParameters.SwapEffect\">\n            <summary>\t\n            <dd> <p>Member of the <strong><see cref=\"T:SharpDX.Direct3D9.SwapEffect\"/></strong> enumerated type. The runtime will guarantee the implied semantics concerning buffer swap behavior; therefore, if <strong>Windowed</strong> is <strong>TRUE</strong> and <strong>SwapEffect</strong> is set to <see cref=\"F:SharpDX.Direct3D9.SwapEffect.Flip\"/>, the runtime will create one extra back buffer and copy whichever becomes the front buffer at presentation time.</p> <p><see cref=\"F:SharpDX.Direct3D9.SwapEffect.Copy\"/> requires that <strong>BackBufferCount</strong> be set to 1.</p> <p><see cref=\"F:SharpDX.Direct3D9.SwapEffect.Discard\"/> will be enforced in the debug runtime by filling any buffer with noise after it is presented.</p> <table> <tr><td> <p>Differences between Direct3D9 and Direct3D9Ex</p> <p>In Direct3D9Ex, <see cref=\"F:SharpDX.Direct3D9.SwapEffect.FlipEx\"/> is added to designate when an application is adopting flip mode. That is, whan an application's frame is passed in window's mode (instead of copied) to the Desktop Window Manager(DWM) for composition. Flip mode provides more efficient memory bandwidth and enables an application to take advantage of full-screen-present statistics. It does not change full screen behavior. Flip mode behavior is available beginning with Windows 7.</p> </td></tr> </table> <p>?</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPRESENT_PARAMETERS::SwapEffect']/*\"/>\t\n            <msdn-id>bb172588</msdn-id>\t\n            <unmanaged>D3DSWAPEFFECT SwapEffect</unmanaged>\t\n            <unmanaged-short>D3DSWAPEFFECT SwapEffect</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PresentParameters.DeviceWindowHandle\">\n            <summary>\t\n            <dd> <p>The device window determines the location and size of the back buffer on screen. This is used by Direct3D when the back buffer contents are copied to the front buffer during <strong>Present</strong>.</p> <ul> <li> <p>For a full-screen application, this is a handle to the top window (which is the focus window). </p> <p>For applications that use multiple full-screen devices (such as a multimonitor system), exactly one device can use the focus window as the device window. All other devices must have unique device windows.</p> </li> <li>For a windowed-mode application, this handle will be the default target window for <strong>Present</strong>. If this handle is <strong><c>null</c></strong>, the focus window will be taken.</li> </ul> <p>Note that no attempt is made by the runtime to reflect user changes in window size. The back buffer is not implicitly reset when this window is reset. However, the <strong>Present</strong> method does automatically track window position changes.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPRESENT_PARAMETERS::hDeviceWindow']/*\"/>\t\n            <msdn-id>bb172588</msdn-id>\t\n            <unmanaged>HWND hDeviceWindow</unmanaged>\t\n            <unmanaged-short>HWND hDeviceWindow</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PresentParameters.Windowed\">\n            <summary>\t\n            <dd> <p><strong>TRUE</strong> if the application runs windowed; <strong><see cref=\"F:SharpDX.Result.False\"/></strong> if the application runs full-screen.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPRESENT_PARAMETERS::Windowed']/*\"/>\t\n            <msdn-id>bb172588</msdn-id>\t\n            <unmanaged>BOOL Windowed</unmanaged>\t\n            <unmanaged-short>BOOL Windowed</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PresentParameters.EnableAutoDepthStencil\">\n            <summary>\t\n            <dd> <p>If this value is <strong>TRUE</strong>, Direct3D will manage depth buffers for the application. The device will create a depth-stencil buffer when it is created. The depth-stencil buffer will be automatically set as the render target of the device. When the device is reset, the depth-stencil buffer will be automatically destroyed and recreated in the new size.</p> <p>If EnableAutoDepthStencil is <strong>TRUE</strong>, then AutoDepthStencilFormat must be a valid depth-stencil format.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPRESENT_PARAMETERS::EnableAutoDepthStencil']/*\"/>\t\n            <msdn-id>bb172588</msdn-id>\t\n            <unmanaged>BOOL EnableAutoDepthStencil</unmanaged>\t\n            <unmanaged-short>BOOL EnableAutoDepthStencil</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PresentParameters.AutoDepthStencilFormat\">\n            <summary>\t\n            <dd> <p>Member of the <see cref=\"T:SharpDX.Direct3D9.Format\"/> enumerated type. The format of the automatic depth-stencil surface that the device will create. This member is ignored unless <strong>EnableAutoDepthStencil</strong> is <strong>TRUE</strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPRESENT_PARAMETERS::AutoDepthStencilFormat']/*\"/>\t\n            <msdn-id>bb172588</msdn-id>\t\n            <unmanaged>D3DFORMAT AutoDepthStencilFormat</unmanaged>\t\n            <unmanaged-short>D3DFORMAT AutoDepthStencilFormat</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PresentParameters.PresentFlags\">\n            <summary>\t\n            <dd> <p>One of the <see cref=\"T:SharpDX.Direct3D9.PresentFlags\"/> constants.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPRESENT_PARAMETERS::Flags']/*\"/>\t\n            <msdn-id>bb172588</msdn-id>\t\n            <unmanaged>D3DPRESENTFLAG Flags</unmanaged>\t\n            <unmanaged-short>D3DPRESENTFLAG Flags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PresentParameters.FullScreenRefreshRateInHz\">\n            <summary>\t\n            <dd> <p>The rate at which the display adapter refreshes the screen. The value depends on the mode in which the application is running:</p> <ul> <li>For windowed mode, the refresh rate must be 0.</li> <li>For full-screen mode, the refresh rate is one of the refresh rates returned by <strong>EnumAdapterModes</strong>.</li> </ul> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPRESENT_PARAMETERS::FullScreen_RefreshRateInHz']/*\"/>\t\n            <msdn-id>bb172588</msdn-id>\t\n            <unmanaged>unsigned int FullScreen_RefreshRateInHz</unmanaged>\t\n            <unmanaged-short>unsigned int FullScreen_RefreshRateInHz</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PresentParameters.PresentationInterval\">\n            <summary>\t\n            <dd> <p>The maximum rate at which the swap chain's back buffers can be presented to the front buffer. For a detailed explanation of the modes and the intervals that are supported, see <see cref=\"T:SharpDX.Direct3D9.Present\"/>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DPRESENT_PARAMETERS::PresentationInterval']/*\"/>\t\n            <msdn-id>bb172588</msdn-id>\t\n            <unmanaged>D3DPRESENT_INTERVAL PresentationInterval</unmanaged>\t\n            <unmanaged-short>D3DPRESENT_INTERVAL PresentationInterval</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.PresentParameters.#ctor(System.Int32,System.Int32,SharpDX.Direct3D9.Format,System.Int32,SharpDX.Direct3D9.MultisampleType,System.Int32,SharpDX.Direct3D9.SwapEffect,System.IntPtr,System.Boolean,System.Boolean,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.PresentFlags,System.Int32,SharpDX.Direct3D9.PresentInterval)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D9.PresentParameters\"/> struct.\n            </summary>\n            <param name=\"backBufferWidth\">Width of the back buffer.</param>\n            <param name=\"backBufferHeight\">Height of the back buffer.</param>\n            <param name=\"backBufferFormat\">The back buffer format.</param>\n            <param name=\"backBufferCount\">The back buffer count.</param>\n            <param name=\"multiSampleType\">Type of the multi sample.</param>\n            <param name=\"multiSampleQuality\">The multi sample quality.</param>\n            <param name=\"swapEffect\">The swap effect.</param>\n            <param name=\"deviceWindowHandle\">The device window handle.</param>\n            <param name=\"windowed\">if set to <c>true</c> [windowed].</param>\n            <param name=\"enableAutoDepthStencil\">if set to <c>true</c> [enable auto depth stencil].</param>\n            <param name=\"autoDepthStencilFormat\">The auto depth stencil format.</param>\n            <param name=\"presentFlags\">The present flags.</param>\n            <param name=\"fullScreenRefreshRateInHz\">The full screen refresh rate in hz.</param>\n            <param name=\"presentationInterval\">The presentation interval.</param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.PresentParameters.InitDefaults\">\n            <summary>\n            Init this structure to defaults\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.RasterStatus\">\n            <summary>\t\n            <p>Describes the raster status.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRASTER_STATUS']/*\"/>\t\n            <msdn-id>bb172596</msdn-id>\t\n            <unmanaged>D3DRASTER_STATUS</unmanaged>\t\n            <unmanaged-short>D3DRASTER_STATUS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RasterStatus.InVBlank\">\n            <summary>\t\n            <dd> <p><strong>TRUE</strong> if the raster is in the vertical blank period. <strong><see cref=\"F:SharpDX.Result.False\"/></strong> if the raster is not in the vertical blank period. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRASTER_STATUS::InVBlank']/*\"/>\t\n            <msdn-id>bb172596</msdn-id>\t\n            <unmanaged>BOOL InVBlank</unmanaged>\t\n            <unmanaged-short>BOOL InVBlank</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RasterStatus.ScanLine\">\n            <summary>\t\n            <dd> <p>If InVBlank is <strong><see cref=\"F:SharpDX.Result.False\"/></strong>, then this value is an integer roughly corresponding to the current scan line painted by the raster. Scan lines are numbered in the same way as Direct3D surface coordinates: 0 is the top of the primary surface, extending to the value (height of the surface - 1) at the bottom of the display.</p> <p>If InVBlank is <strong>TRUE</strong>, then this value is set to zero and can be ignored.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRASTER_STATUS::ScanLine']/*\"/>\t\n            <msdn-id>bb172596</msdn-id>\t\n            <unmanaged>unsigned int ScanLine</unmanaged>\t\n            <unmanaged-short>unsigned int ScanLine</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.RectanglePatchInfo\">\n            <summary>\t\n            <p>Describes a rectangular high-order patch.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The following diagram identifies the parameters that specify a rectangle patch.</p><p>Each of the vertices in the vertex buffer is shown as a black dot. In this case, the vertex buffer has 20 vertices in it, 16 of which are in the rectangle patch. The stride is the number of vertices in the width of the vertex buffer, in this case five. The x offset to the first vertex is called the StartIndexVertexWidth and is in this case 1. The y offset to the first patch vertex is called the StartIndexVertexHeight and is in this case 0.</p><p>To render a stream of individual rectangular patches (non-mosaic), you should interpret your geometry as a long narrow (1 x N) rectangular patch. The <strong><see cref=\"T:SharpDX.Direct3D9.RectanglePatchInfo\"/></strong> structure for such a strip (cubic B?zier) would be set up in the following manner.</p><pre><code> <see cref=\"T:SharpDX.Direct3D9.RectanglePatchInfo\"/> RectInfo; RectInfo.Width = 4;\t\n            RectInfo.Height = 4;\t\n            RectInfo.Stride = 4;\t\n            RectInfo.Basis = <see cref=\"F:SharpDX.Direct3D9.Basis.Bezier\"/>;\t\n            RectInfo.Order = D3DORDER_CUBIC;\t\n            RectInfo.StartVertexOffsetWidth = 0;\t\n            RectInfo.StartVertexOffsetHeight = 4*i;  // The variable i is the index of the \t\n            //   patch you want to render.\t\n            </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRECTPATCH_INFO']/*\"/>\t\n            <msdn-id>bb172598</msdn-id>\t\n            <unmanaged>D3DRECTPATCH_INFO</unmanaged>\t\n            <unmanaged-short>D3DRECTPATCH_INFO</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RectanglePatchInfo.StartVertexOffsetWidth\">\n            <summary>\t\n            <dd> <p>Starting vertex offset width, in number of vertices. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRECTPATCH_INFO::StartVertexOffsetWidth']/*\"/>\t\n            <msdn-id>bb172598</msdn-id>\t\n            <unmanaged>unsigned int StartVertexOffsetWidth</unmanaged>\t\n            <unmanaged-short>unsigned int StartVertexOffsetWidth</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RectanglePatchInfo.StartVertexOffsetHeight\">\n            <summary>\t\n            <dd> <p>Starting vertex offset height, in number of vertices. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRECTPATCH_INFO::StartVertexOffsetHeight']/*\"/>\t\n            <msdn-id>bb172598</msdn-id>\t\n            <unmanaged>unsigned int StartVertexOffsetHeight</unmanaged>\t\n            <unmanaged-short>unsigned int StartVertexOffsetHeight</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RectanglePatchInfo.Width\">\n            <summary>\t\n            <dd> <p>Width of each vertex, in number of vertices. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRECTPATCH_INFO::Width']/*\"/>\t\n            <msdn-id>bb172598</msdn-id>\t\n            <unmanaged>unsigned int Width</unmanaged>\t\n            <unmanaged-short>unsigned int Width</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RectanglePatchInfo.Height\">\n            <summary>\t\n            <dd> <p>Height of each vertex, in number of vertices. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRECTPATCH_INFO::Height']/*\"/>\t\n            <msdn-id>bb172598</msdn-id>\t\n            <unmanaged>unsigned int Height</unmanaged>\t\n            <unmanaged-short>unsigned int Height</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RectanglePatchInfo.Stride\">\n            <summary>\t\n            <dd> <p>Width of the imaginary two-dimensional vertex array, which occupies the same space as the vertex buffer. For an example, see the diagram below. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRECTPATCH_INFO::Stride']/*\"/>\t\n            <msdn-id>bb172598</msdn-id>\t\n            <unmanaged>unsigned int Stride</unmanaged>\t\n            <unmanaged-short>unsigned int Stride</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RectanglePatchInfo.Basis\">\n            <summary>\t\n            <dd> <p>Member of the <strong><see cref=\"T:SharpDX.Direct3D9.Basis\"/></strong> enumerated type, defining the basis type for the rectangular high-order patch. </p> <table> <tr><th>Value</th><th>Order supported</th><th>Width and height</th></tr> <tr><td><see cref=\"F:SharpDX.Direct3D9.Basis.Bezier\"/></td><td>Linear, cubic, and quintic</td><td>Width = height = (DWORD)order + 1</td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D9.Basis.BSpline\"/></td><td>Linear, cubic, and quintic</td><td>Width = height &gt; (DWORD)order</td></tr> <tr><td>D3DBASIS_INTERPOLATE</td><td>Cubic</td><td>Width = height &gt; (DWORD)order</td></tr> </table> <p>?</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRECTPATCH_INFO::Basis']/*\"/>\t\n            <msdn-id>bb172598</msdn-id>\t\n            <unmanaged>D3DBASISTYPE Basis</unmanaged>\t\n            <unmanaged-short>D3DBASISTYPE Basis</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RectanglePatchInfo.Degree\">\n            <summary>\t\n            <dd> <p>Member of the <strong><see cref=\"T:SharpDX.Direct3D9.Degree\"/></strong> enumerated type, defining the degree for the rectangular patch. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRECTPATCH_INFO::Degree']/*\"/>\t\n            <msdn-id>bb172598</msdn-id>\t\n            <unmanaged>D3DDEGREETYPE Degree</unmanaged>\t\n            <unmanaged-short>D3DDEGREETYPE Degree</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.RenderToEnvironmentMapDescription\">\n            <summary>\t\n            <p>Describes an off-screen render target used by an instance of <strong><see cref=\"T:SharpDX.Direct3D9.RenderToEnvironmentMap\"/></strong>.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This method is used to return the creation parameters used when creating an <strong><see cref=\"T:SharpDX.Direct3D9.RenderToEnvironmentMap\"/></strong> object.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXRTE_DESC']/*\"/>\t\n            <msdn-id>bb205425</msdn-id>\t\n            <unmanaged>D3DXRTE_DESC</unmanaged>\t\n            <unmanaged-short>D3DXRTE_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderToEnvironmentMapDescription.Size\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXRTE_DESC::Size']/*\"/>\t\n            <unmanaged>unsigned int Size</unmanaged>\t\n            <unmanaged-short>unsigned int Size</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderToEnvironmentMapDescription.MipLevels\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXRTE_DESC::MipLevels']/*\"/>\t\n            <unmanaged>unsigned int MipLevels</unmanaged>\t\n            <unmanaged-short>unsigned int MipLevels</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderToEnvironmentMapDescription.Format\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXRTE_DESC::Format']/*\"/>\t\n            <unmanaged>D3DFORMAT Format</unmanaged>\t\n            <unmanaged-short>D3DFORMAT Format</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderToEnvironmentMapDescription.DepthStencil\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXRTE_DESC::DepthStencil']/*\"/>\t\n            <unmanaged>BOOL DepthStencil</unmanaged>\t\n            <unmanaged-short>BOOL DepthStencil</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderToEnvironmentMapDescription.DepthStencilFormat\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXRTE_DESC::DepthStencilFormat']/*\"/>\t\n            <unmanaged>D3DFORMAT DepthStencilFormat</unmanaged>\t\n            <unmanaged-short>D3DFORMAT DepthStencilFormat</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.RenderToSurfaceDescription\">\n            <summary>\t\n            <p>Describes a render surface.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXRTS_DESC']/*\"/>\t\n            <msdn-id>bb205426</msdn-id>\t\n            <unmanaged>D3DXRTS_DESC</unmanaged>\t\n            <unmanaged-short>D3DXRTS_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderToSurfaceDescription.Width\">\n            <summary>\t\n            <dd> <p>Width of the render surface, in pixels.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXRTS_DESC::Width']/*\"/>\t\n            <msdn-id>bb205426</msdn-id>\t\n            <unmanaged>unsigned int Width</unmanaged>\t\n            <unmanaged-short>unsigned int Width</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderToSurfaceDescription.Height\">\n            <summary>\t\n            <dd> <p>Height of the render surface, in pixels.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXRTS_DESC::Height']/*\"/>\t\n            <msdn-id>bb205426</msdn-id>\t\n            <unmanaged>unsigned int Height</unmanaged>\t\n            <unmanaged-short>unsigned int Height</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderToSurfaceDescription.Format\">\n            <summary>\t\n            <dd> <p>Member of the <see cref=\"T:SharpDX.Direct3D9.Format\"/> enumerated type, describing the pixel format of the render surface.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXRTS_DESC::Format']/*\"/>\t\n            <msdn-id>bb205426</msdn-id>\t\n            <unmanaged>D3DFORMAT Format</unmanaged>\t\n            <unmanaged-short>D3DFORMAT Format</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderToSurfaceDescription.DepthStencil\">\n            <summary>\t\n            <dd> <p>If <strong>TRUE</strong>, the render surface supports a depth-stencil surface; otherwise this member is set to <strong><see cref=\"F:SharpDX.Result.False\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXRTS_DESC::DepthStencil']/*\"/>\t\n            <msdn-id>bb205426</msdn-id>\t\n            <unmanaged>BOOL DepthStencil</unmanaged>\t\n            <unmanaged-short>BOOL DepthStencil</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RenderToSurfaceDescription.DepthStencilFormat\">\n            <summary>\t\n            <dd> <p>If DepthStencil is set to <strong>TRUE</strong>, this parameter is a member of the <see cref=\"T:SharpDX.Direct3D9.Format\"/> enumerated type,  describing the depth-stencil format of the render surface.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXRTS_DESC::DepthStencilFormat']/*\"/>\t\n            <msdn-id>bb205426</msdn-id>\t\n            <unmanaged>D3DFORMAT DepthStencilFormat</unmanaged>\t\n            <unmanaged-short>D3DFORMAT DepthStencilFormat</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.ResourceManager\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDEVINFO_RESOURCEMANAGER']/*\"/>\t\n            <msdn-id>bb280347</msdn-id>\t\n            <unmanaged>D3DDEVINFO_RESOURCEMANAGER</unmanaged>\t\n            <unmanaged-short>D3DDEVINFO_RESOURCEMANAGER</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.ResourceManager.Stats\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDEVINFO_RESOURCEMANAGER::stats']/*\"/>\t\n            <unmanaged>D3DRESOURCESTATS stats[8]</unmanaged>\t\n            <unmanaged-short>D3DRESOURCESTATS stats</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.ResourceStats\">\n            <summary>\t\n            <p>Resource statistics gathered by the <strong>D3DDEVINFO_ResourceManager</strong> when using the asynchronous query mechanism.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRESOURCESTATS']/*\"/>\t\n            <msdn-id>Bb172600</msdn-id>\t\n            <unmanaged>D3DRESOURCESTATS</unmanaged>\t\n            <unmanaged-short>D3DRESOURCESTATS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ResourceStats.Thrashing\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRESOURCESTATS::bThrashing']/*\"/>\t\n            <unmanaged>BOOL bThrashing</unmanaged>\t\n            <unmanaged-short>BOOL bThrashing</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ResourceStats.ApproximateBytesDownloaded\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRESOURCESTATS::ApproxBytesDownloaded']/*\"/>\t\n            <unmanaged>unsigned int ApproxBytesDownloaded</unmanaged>\t\n            <unmanaged-short>unsigned int ApproxBytesDownloaded</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ResourceStats.NumberEvicted\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRESOURCESTATS::NumEvicts']/*\"/>\t\n            <unmanaged>unsigned int NumEvicts</unmanaged>\t\n            <unmanaged-short>unsigned int NumEvicts</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ResourceStats.NumberVideoCreated\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRESOURCESTATS::NumVidCreates']/*\"/>\t\n            <unmanaged>unsigned int NumVidCreates</unmanaged>\t\n            <unmanaged-short>unsigned int NumVidCreates</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ResourceStats.LastPriority\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRESOURCESTATS::LastPri']/*\"/>\t\n            <unmanaged>unsigned int LastPri</unmanaged>\t\n            <unmanaged-short>unsigned int LastPri</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ResourceStats.NumberUsed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRESOURCESTATS::NumUsed']/*\"/>\t\n            <unmanaged>unsigned int NumUsed</unmanaged>\t\n            <unmanaged-short>unsigned int NumUsed</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ResourceStats.NumberUsedInVideoMemory\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRESOURCESTATS::NumUsedInVidMem']/*\"/>\t\n            <unmanaged>unsigned int NumUsedInVidMem</unmanaged>\t\n            <unmanaged-short>unsigned int NumUsedInVidMem</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ResourceStats.WorkingSet\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRESOURCESTATS::WorkingSet']/*\"/>\t\n            <unmanaged>unsigned int WorkingSet</unmanaged>\t\n            <unmanaged-short>unsigned int WorkingSet</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ResourceStats.WorkingSetBytes\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRESOURCESTATS::WorkingSetBytes']/*\"/>\t\n            <unmanaged>unsigned int WorkingSetBytes</unmanaged>\t\n            <unmanaged-short>unsigned int WorkingSetBytes</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ResourceStats.TotalManaged\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRESOURCESTATS::TotalManaged']/*\"/>\t\n            <unmanaged>unsigned int TotalManaged</unmanaged>\t\n            <unmanaged-short>unsigned int TotalManaged</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ResourceStats.TotalBytes\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DRESOURCESTATS::TotalBytes']/*\"/>\t\n            <unmanaged>unsigned int TotalBytes</unmanaged>\t\n            <unmanaged-short>unsigned int TotalBytes</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.RotationKey\">\n            <summary>\t\n            <p>Describes a quaternion key for use in key frame animation. A quaternion key is a quaternion value at a given time.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXKEY_QUATERNION']/*\"/>\t\n            <msdn-id>bb172887</msdn-id>\t\n            <unmanaged>D3DXKEY_QUATERNION</unmanaged>\t\n            <unmanaged-short>D3DXKEY_QUATERNION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RotationKey.Time\">\n            <summary>\t\n            <dd> <p>Time value.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXKEY_QUATERNION::Time']/*\"/>\t\n            <msdn-id>bb172887</msdn-id>\t\n            <unmanaged>float Time</unmanaged>\t\n            <unmanaged-short>float Time</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.RotationKey.Value\">\n            <summary>\t\n            <dd> <p> <strong><see cref=\"T:SharpDX.Quaternion\"/></strong> quaternion that supplies rotation values.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXKEY_QUATERNION::Value']/*\"/>\t\n            <msdn-id>bb172887</msdn-id>\t\n            <unmanaged>D3DXQUATERNION Value</unmanaged>\t\n            <unmanaged-short>D3DXQUATERNION Value</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.ScaleKey\">\n            <summary>\t\n            <p>Describes a vector key for use in key frame animation. It specifies a vector at a given time. This is used for scale and translation keys.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXKEY_VECTOR3']/*\"/>\t\n            <msdn-id>bb172889</msdn-id>\t\n            <unmanaged>D3DXKEY_VECTOR3</unmanaged>\t\n            <unmanaged-short>D3DXKEY_VECTOR3</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ScaleKey.Time\">\n            <summary>\t\n            <dd> <p>Key frame time stamp.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXKEY_VECTOR3::Time']/*\"/>\t\n            <msdn-id>bb172889</msdn-id>\t\n            <unmanaged>float Time</unmanaged>\t\n            <unmanaged-short>float Time</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ScaleKey.Value\">\n            <summary>\t\n            <dd> <p> <strong><see cref=\"T:SharpDX.Vector3\"/></strong> 3D vector that supplies scale and/or translation values.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXKEY_VECTOR3::Value']/*\"/>\t\n            <msdn-id>bb172889</msdn-id>\t\n            <unmanaged>D3DXVECTOR3 Value</unmanaged>\t\n            <unmanaged-short>D3DXVECTOR3 Value</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.ShaderConstantInformation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXSHADER_CONSTANTINFO']/*\"/>\t\n            <msdn-id>bb205439</msdn-id>\t\n            <unmanaged>D3DXSHADER_CONSTANTINFO</unmanaged>\t\n            <unmanaged-short>D3DXSHADER_CONSTANTINFO</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ShaderConstantInformation.Name\">\n            <summary>\t\n            <dd> <p>Offset from the beginning of this structure, in bytes, to the string that contains the constant information.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXSHADER_CONSTANTINFO::Name']/*\"/>\t\n            <msdn-id>bb205439</msdn-id>\t\n            <unmanaged>unsigned int Name</unmanaged>\t\n            <unmanaged-short>unsigned int Name</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ShaderConstantInformation.RegisterSet\">\n            <summary>\t\n            <dd> <p>Register set. See <strong><see cref=\"T:SharpDX.Direct3D9.RegisterSet\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXSHADER_CONSTANTINFO::RegisterSet']/*\"/>\t\n            <msdn-id>bb205439</msdn-id>\t\n            <unmanaged>unsigned short RegisterSet</unmanaged>\t\n            <unmanaged-short>unsigned short RegisterSet</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ShaderConstantInformation.RegisterIndex\">\n            <summary>\t\n            <dd> <p>The register index.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXSHADER_CONSTANTINFO::RegisterIndex']/*\"/>\t\n            <msdn-id>bb205439</msdn-id>\t\n            <unmanaged>unsigned short RegisterIndex</unmanaged>\t\n            <unmanaged-short>unsigned short RegisterIndex</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ShaderConstantInformation.RegisterCount\">\n            <summary>\t\n            <dd> <p>Number of registers.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXSHADER_CONSTANTINFO::RegisterCount']/*\"/>\t\n            <msdn-id>bb205439</msdn-id>\t\n            <unmanaged>unsigned short RegisterCount</unmanaged>\t\n            <unmanaged-short>unsigned short RegisterCount</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ShaderConstantInformation.Reserved\">\n            <summary>\t\n            <dd> <p>Reserved.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXSHADER_CONSTANTINFO::Reserved']/*\"/>\t\n            <msdn-id>bb205439</msdn-id>\t\n            <unmanaged>unsigned short Reserved</unmanaged>\t\n            <unmanaged-short>unsigned short Reserved</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ShaderConstantInformation.TypeInfo\">\n            <summary>\t\n            <dd> <p>Offset from the beginning of this structure, in bytes, to the string that contains the <strong>D3DXSHADER_TYPEINFO</strong> information.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXSHADER_CONSTANTINFO::TypeInfo']/*\"/>\t\n            <msdn-id>bb205439</msdn-id>\t\n            <unmanaged>unsigned int TypeInfo</unmanaged>\t\n            <unmanaged-short>unsigned int TypeInfo</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ShaderConstantInformation.DefaultValue\">\n            <summary>\t\n            <dd> <p>Offset from the beginning of this structure, in bytes, to the string that contains the default value.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXSHADER_CONSTANTINFO::DefaultValue']/*\"/>\t\n            <msdn-id>bb205439</msdn-id>\t\n            <unmanaged>unsigned int DefaultValue</unmanaged>\t\n            <unmanaged-short>unsigned int DefaultValue</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.ShaderConstantTable\">\n            <summary>\t\n            <p>Helper structure for managing a shader constant table. This can also be done using <strong><see cref=\"T:SharpDX.Direct3D9.ConstantTable\"/></strong>.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Shader constant information is included in a tab-delimited table of comments.  All offsets are measured in bytes from the beginning of the structure.  Entries in the constant table are sorted by Creator in ascending order.</p><p>A shader constant table can be managed with the <strong><see cref=\"T:SharpDX.Direct3D9.ConstantTable\"/></strong> interfaces.  Alternatively, you can manage the constant table with <strong><see cref=\"T:SharpDX.Direct3D9.ShaderConstantTable\"/></strong>.</p><p>This size member is often initialized using the following:</p><pre><code> <see cref=\"T:SharpDX.Direct3D9.ShaderConstantTable\"/> constantTable;\t\n            constantTable.Size = sizeof(<see cref=\"T:SharpDX.Direct3D9.ShaderConstantTable\"/>)\t\n            </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXSHADER_CONSTANTTABLE']/*\"/>\t\n            <msdn-id>Bb205440</msdn-id>\t\n            <unmanaged>D3DXSHADER_CONSTANTTABLE</unmanaged>\t\n            <unmanaged-short>D3DXSHADER_CONSTANTTABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ShaderConstantTable.Size\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXSHADER_CONSTANTTABLE::Size']/*\"/>\t\n            <unmanaged>unsigned int Size</unmanaged>\t\n            <unmanaged-short>unsigned int Size</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ShaderConstantTable.Creator\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXSHADER_CONSTANTTABLE::Creator']/*\"/>\t\n            <unmanaged>unsigned int Creator</unmanaged>\t\n            <unmanaged-short>unsigned int Creator</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ShaderConstantTable.Version\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXSHADER_CONSTANTTABLE::Version']/*\"/>\t\n            <unmanaged>unsigned int Version</unmanaged>\t\n            <unmanaged-short>unsigned int Version</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ShaderConstantTable.Constants\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXSHADER_CONSTANTTABLE::Constants']/*\"/>\t\n            <unmanaged>unsigned int Constants</unmanaged>\t\n            <unmanaged-short>unsigned int Constants</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ShaderConstantTable.ConstantInfo\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXSHADER_CONSTANTTABLE::ConstantInfo']/*\"/>\t\n            <unmanaged>unsigned int ConstantInfo</unmanaged>\t\n            <unmanaged-short>unsigned int ConstantInfo</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ShaderConstantTable.Flags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXSHADER_CONSTANTTABLE::Flags']/*\"/>\t\n            <unmanaged>unsigned int Flags</unmanaged>\t\n            <unmanaged-short>unsigned int Flags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ShaderConstantTable.Target\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXSHADER_CONSTANTTABLE::Target']/*\"/>\t\n            <unmanaged>unsigned int Target</unmanaged>\t\n            <unmanaged-short>unsigned int Target</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.ShaderSemantic\">\n            <summary>\t\n            <p>Semantics map a parameter to vertex or pixel shader registers. They can also be optional descriptive strings attached to non-register parameters.  </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Semantics are required for vertex and pixel shader, input and output registers.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXSEMANTIC']/*\"/>\t\n            <msdn-id>bb205437</msdn-id>\t\n            <unmanaged>D3DXSEMANTIC</unmanaged>\t\n            <unmanaged-short>D3DXSEMANTIC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ShaderSemantic.Usage\">\n            <summary>\t\n            <dd> <p>Options that identify how resources are used. See <strong><see cref=\"T:SharpDX.Direct3D9.DeclarationUsage\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXSEMANTIC::Usage']/*\"/>\t\n            <msdn-id>bb205437</msdn-id>\t\n            <unmanaged>D3DDECLUSAGE Usage</unmanaged>\t\n            <unmanaged-short>D3DDECLUSAGE Usage</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.ShaderSemantic.UsageIndex\">\n            <summary>\t\n            <dd> <p>Options that modify how the usage is interpreted. The usage and usage index make up a vertex declaration. See Vertex Declaration (Direct3D 9).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXSEMANTIC::UsageIndex']/*\"/>\t\n            <msdn-id>bb205437</msdn-id>\t\n            <unmanaged>unsigned int UsageIndex</unmanaged>\t\n            <unmanaged-short>unsigned int UsageIndex</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.StageTimings\">\n            <summary>\t\n            <p>Percent of time processing shader data.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>For best performance, a balanced load is recommended.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDEVINFO_D3D9STAGETIMINGS']/*\"/>\t\n            <msdn-id>bb172543</msdn-id>\t\n            <unmanaged>D3DDEVINFO_D3D9STAGETIMINGS</unmanaged>\t\n            <unmanaged-short>D3DDEVINFO_D3D9STAGETIMINGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.StageTimings.MemoryProcessingPercent\">\n            <summary>\t\n            <dd> <p>Percent of time in shader spent on memory accesses.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDEVINFO_D3D9STAGETIMINGS::MemoryProcessingPercent']/*\"/>\t\n            <msdn-id>bb172543</msdn-id>\t\n            <unmanaged>float MemoryProcessingPercent</unmanaged>\t\n            <unmanaged-short>float MemoryProcessingPercent</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.StageTimings.ComputationProcessingPercent\">\n            <summary>\t\n            <dd> <p>Percent of time processing (moving data around in registers or doing mathematical operations).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDEVINFO_D3D9STAGETIMINGS::ComputationProcessingPercent']/*\"/>\t\n            <msdn-id>bb172543</msdn-id>\t\n            <unmanaged>float ComputationProcessingPercent</unmanaged>\t\n            <unmanaged-short>float ComputationProcessingPercent</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.SurfaceDescription\">\n            <summary>\t\n            <p>Describes a surface.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DSURFACE_DESC']/*\"/>\t\n            <msdn-id>bb172611</msdn-id>\t\n            <unmanaged>D3DSURFACE_DESC</unmanaged>\t\n            <unmanaged-short>D3DSURFACE_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.SurfaceDescription.Format\">\n            <summary>\t\n            <dd> <p>Member of the <see cref=\"T:SharpDX.Direct3D9.Format\"/> enumerated type, describing the surface format. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DSURFACE_DESC::Format']/*\"/>\t\n            <msdn-id>bb172611</msdn-id>\t\n            <unmanaged>D3DFORMAT Format</unmanaged>\t\n            <unmanaged-short>D3DFORMAT Format</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.SurfaceDescription.Type\">\n            <summary>\t\n            <dd> <p>Member of the <strong><see cref=\"T:SharpDX.Direct3D9.ResourceType\"/></strong> enumerated type, identifying this resource as a surface. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DSURFACE_DESC::Type']/*\"/>\t\n            <msdn-id>bb172611</msdn-id>\t\n            <unmanaged>D3DRESOURCETYPE Type</unmanaged>\t\n            <unmanaged-short>D3DRESOURCETYPE Type</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.SurfaceDescription.Usage\">\n            <summary>\t\n            <dd> <p>Either the <see cref=\"F:SharpDX.Direct3D9.Usage.DepthStencil\"/> or <see cref=\"F:SharpDX.Direct3D9.Usage.RenderTarget\"/> values. For more information, see <strong><see cref=\"T:SharpDX.Direct3D9.Usage\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DSURFACE_DESC::Usage']/*\"/>\t\n            <msdn-id>bb172611</msdn-id>\t\n            <unmanaged>D3DUSAGE Usage</unmanaged>\t\n            <unmanaged-short>D3DUSAGE Usage</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.SurfaceDescription.Pool\">\n            <summary>\t\n            <dd> <p>Member of the <strong><see cref=\"T:SharpDX.Direct3D9.Pool\"/></strong> enumerated type, specifying the class of memory allocated for this surface.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DSURFACE_DESC::Pool']/*\"/>\t\n            <msdn-id>bb172611</msdn-id>\t\n            <unmanaged>D3DPOOL Pool</unmanaged>\t\n            <unmanaged-short>D3DPOOL Pool</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.SurfaceDescription.MultiSampleType\">\n            <summary>\t\n            <dd> <p>Member of the <strong><see cref=\"T:SharpDX.Direct3D9.MultisampleType\"/></strong> enumerated type, specifying the levels of full-scene multisampling supported by the surface.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DSURFACE_DESC::MultiSampleType']/*\"/>\t\n            <msdn-id>bb172611</msdn-id>\t\n            <unmanaged>D3DMULTISAMPLE_TYPE MultiSampleType</unmanaged>\t\n            <unmanaged-short>D3DMULTISAMPLE_TYPE MultiSampleType</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.SurfaceDescription.MultiSampleQuality\">\n            <summary>\t\n            <dd> <p>Quality level. The valid range is between zero and one less than the level returned by pQualityLevels used by  <strong>CheckDeviceMultiSampleType</strong>. Passing a larger value returns the error, <see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/>. The MultisampleQuality values of paired render targets, depth stencil surfaces and the MultiSample type must all match.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DSURFACE_DESC::MultiSampleQuality']/*\"/>\t\n            <msdn-id>bb172611</msdn-id>\t\n            <unmanaged>unsigned int MultiSampleQuality</unmanaged>\t\n            <unmanaged-short>unsigned int MultiSampleQuality</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.SurfaceDescription.Width\">\n            <summary>\t\n            <dd> <p>Width of the surface, in pixels.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DSURFACE_DESC::Width']/*\"/>\t\n            <msdn-id>bb172611</msdn-id>\t\n            <unmanaged>unsigned int Width</unmanaged>\t\n            <unmanaged-short>unsigned int Width</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.SurfaceDescription.Height\">\n            <summary>\t\n            <dd> <p>Height of the surface, in pixels.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DSURFACE_DESC::Height']/*\"/>\t\n            <msdn-id>bb172611</msdn-id>\t\n            <unmanaged>unsigned int Height</unmanaged>\t\n            <unmanaged-short>unsigned int Height</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.TechniqueDescription\">\n            <summary>\t\n            <p>Describes a technique used by an effect.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Some video cards can render two textures in a single pass. However, if a card does not have this capability, it is often possible to render the same effect in two passes, using one texture for each pass.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXTECHNIQUE_DESC']/*\"/>\t\n            <msdn-id>bb205468</msdn-id>\t\n            <unmanaged>D3DXTECHNIQUE_DESC</unmanaged>\t\n            <unmanaged-short>D3DXTECHNIQUE_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TechniqueDescription.Name\">\n            <summary>\t\n            <dd> <p>String that contains the technique name.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXTECHNIQUE_DESC::Name']/*\"/>\t\n            <msdn-id>bb205468</msdn-id>\t\n            <unmanaged>const char* Name</unmanaged>\t\n            <unmanaged-short>char Name</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TechniqueDescription.Passes\">\n            <summary>\t\n            <dd> <p>Number of rendering passes the technique requires. See Remarks.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXTECHNIQUE_DESC::Passes']/*\"/>\t\n            <msdn-id>bb205468</msdn-id>\t\n            <unmanaged>unsigned int Passes</unmanaged>\t\n            <unmanaged-short>unsigned int Passes</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TechniqueDescription.Annotations\">\n            <summary>\t\n            <dd> <p>The number of annotations. See Add Information to Effect Parameters with_Annotations.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXTECHNIQUE_DESC::Annotations']/*\"/>\t\n            <msdn-id>bb205468</msdn-id>\t\n            <unmanaged>unsigned int Annotations</unmanaged>\t\n            <unmanaged-short>unsigned int Annotations</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.TrackDescription\">\n            <summary>\t\n            <p>Describes an animation track and specifies blending weight, speed, and position for the track at a given time.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Tracks with the same priority are blended together, and the two resulting values are then blended using the priority blend factor.  A track must have an animation set (stored separately) associated with it.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXTRACK_DESC']/*\"/>\t\n            <msdn-id>bb205474</msdn-id>\t\n            <unmanaged>D3DXTRACK_DESC</unmanaged>\t\n            <unmanaged-short>D3DXTRACK_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TrackDescription.Priority\">\n            <summary>\t\n            <dd> <p>Priority type, as defined in <strong><see cref=\"T:SharpDX.Direct3D9.TrackPriority\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXTRACK_DESC::Priority']/*\"/>\t\n            <msdn-id>bb205474</msdn-id>\t\n            <unmanaged>D3DXPRIORITY_TYPE Priority</unmanaged>\t\n            <unmanaged-short>D3DXPRIORITY_TYPE Priority</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TrackDescription.Weight\">\n            <summary>\t\n            <dd> <p>Weight value. The weight determines the proportion of this track to blend with other tracks.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXTRACK_DESC::Weight']/*\"/>\t\n            <msdn-id>bb205474</msdn-id>\t\n            <unmanaged>float Weight</unmanaged>\t\n            <unmanaged-short>float Weight</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TrackDescription.Speed\">\n            <summary>\t\n            <dd> <p>Speed value. This is used similarly to a multiplier to scale the period of the track.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXTRACK_DESC::Speed']/*\"/>\t\n            <msdn-id>bb205474</msdn-id>\t\n            <unmanaged>float Speed</unmanaged>\t\n            <unmanaged-short>float Speed</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TrackDescription.Position\">\n            <summary>\t\n            <dd> <p>Time position of the track, in the local timeframe of its current animation set.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXTRACK_DESC::Position']/*\"/>\t\n            <msdn-id>bb205474</msdn-id>\t\n            <unmanaged>double Position</unmanaged>\t\n            <unmanaged-short>double Position</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TrackDescription.Enable\">\n            <summary>\t\n            <dd> <p>Track enable/disable. To enable, set to <strong>TRUE</strong>. To disable, set to <strong><see cref=\"F:SharpDX.Result.False\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXTRACK_DESC::Enable']/*\"/>\t\n            <msdn-id>bb205474</msdn-id>\t\n            <unmanaged>BOOL Enable</unmanaged>\t\n            <unmanaged-short>BOOL Enable</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.TrianglePatchInfo\">\n            <summary>\t\n            <p>Describes a triangular high-order patch.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>For example, the following diagram identifies the vertex order and segment numbers for a cubic B?zier triangle patch. The vertex order determines the segment numbers used by <strong>DrawTriPatch</strong>. The offset is the number of bytes to the first triangle patch vertex in the vertex buffer.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTRIPATCH_INFO']/*\"/>\t\n            <msdn-id>bb172620</msdn-id>\t\n            <unmanaged>D3DTRIPATCH_INFO</unmanaged>\t\n            <unmanaged-short>D3DTRIPATCH_INFO</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TrianglePatchInfo.StartVertexOffset\">\n            <summary>\t\n            <dd> <p>Starting vertex offset, in number of vertices. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTRIPATCH_INFO::StartVertexOffset']/*\"/>\t\n            <msdn-id>bb172620</msdn-id>\t\n            <unmanaged>unsigned int StartVertexOffset</unmanaged>\t\n            <unmanaged-short>unsigned int StartVertexOffset</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TrianglePatchInfo.VertexCount\">\n            <summary>\t\n            <dd> <p>Number of vertices.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTRIPATCH_INFO::NumVertices']/*\"/>\t\n            <msdn-id>bb172620</msdn-id>\t\n            <unmanaged>unsigned int NumVertices</unmanaged>\t\n            <unmanaged-short>unsigned int NumVertices</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TrianglePatchInfo.Basis\">\n            <summary>\t\n            <dd> <p>Member of the <strong><see cref=\"T:SharpDX.Direct3D9.Basis\"/></strong> enumerated type, which defines the basis type for the triangular high-order patch. The only valid value for this member is <see cref=\"F:SharpDX.Direct3D9.Basis.Bezier\"/>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTRIPATCH_INFO::Basis']/*\"/>\t\n            <msdn-id>bb172620</msdn-id>\t\n            <unmanaged>D3DBASISTYPE Basis</unmanaged>\t\n            <unmanaged-short>D3DBASISTYPE Basis</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TrianglePatchInfo.Degree\">\n            <summary>\t\n            <dd> <p>Member of the <strong><see cref=\"T:SharpDX.Direct3D9.Degree\"/></strong> enumerated type, defining the degree type for the triangular high-order patch.</p> <table> <tr><th>Value</th><th>Number of vertices</th></tr> <tr><td><see cref=\"F:SharpDX.Direct3D9.Degree.Cubic\"/></td><td>10</td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D9.Degree.Linear\"/></td><td>3</td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D9.Degree.Quadratic\"/></td><td>N/A</td></tr> <tr><td><see cref=\"F:SharpDX.Direct3D9.Degree.Quintic\"/></td><td>21</td></tr> </table> <p>?</p> <p>N/A - Not available. Not supported.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DTRIPATCH_INFO::Degree']/*\"/>\t\n            <msdn-id>bb172620</msdn-id>\t\n            <unmanaged>D3DDEGREETYPE Degree</unmanaged>\t\n            <unmanaged-short>D3DDEGREETYPE Degree</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.VCache\">\n            <summary>\t\n            <p><strong>DirectX 8.1 and later versions only.</strong></p><p>The <see cref=\"T:SharpDX.Direct3D9.VCache\"/> structure describes vertex-cache information of a device.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p><strong>DirectX 8.1 versions only.</strong>The Direct3D runtime calls a driver's <strong>D3dGetDriverState</strong> function to obtain vertex-cache information from the driver. In this <em>D3dGetDriverState</em> call, the runtime specifies the D3DDEVINFOID_VCACHE flag in the <strong>dwFlags</strong> member of the DD_GETDRIVERSTATEDATA structure that the runtime passes. The driver specifies vertex-cache information in a <see cref=\"T:SharpDX.Direct3D9.VCache\"/> structure and returns it at the <strong>lpdwStates</strong> member of DD_GETDRIVERSTATEDATA.</p><p><strong>DirectX 9.0 and later versions only.</strong>The Direct3D runtime specifies D3DDP2OP_CREATEQUERY and D3DDP2OP_ISSUEQUERY commands in calls to the driver's <strong>D3dDrawPrimitives2</strong> callback to create driver-side resources for the query and then to asynchronously query the driver for vertex-cache information. In the call with the D3DDP2OP_CREATEQUERY command, the runtime specifies the <see cref=\"F:SharpDX.Direct3D9.QueryType.VCache\"/> query type in the <strong>QueryType</strong> member of the <strong>D3DHAL_DP2CREATEQUERY</strong> structure. </p><p>When the driver completes a vertex-cache query, the driver sets the total size of the response buffer in the dwErrorOffset member of the <strong>D3DHAL_DRAWPRIMITIVES2DATA</strong> structure and sets the <strong>ddrval</strong> member of D3DHAL_DRAWPRIMITIVES2DATA to <see cref=\"F:SharpDX.Direct3D9.ResultCode.Success\"/> for successful completion. The driver also overwrites the incoming command buffer with the outgoing response buffer. This response buffer contains a <strong>D3DHAL_DP2RESPONSEQUERY</strong> structure that identifies a response for the vertex-cache query. This D3DHAL_DP2RESPONSEQUERY is followed by the vertex-cache data in the <see cref=\"T:SharpDX.Direct3D9.VCache\"/> structure. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDEVINFO_VCACHE']/*\"/>\t\n            <msdn-id>ff544702</msdn-id>\t\n            <unmanaged>D3DDEVINFO_VCACHE</unmanaged>\t\n            <unmanaged-short>D3DDEVINFO_VCACHE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VCache.Pattern\">\n            <summary>\t\n            <dd> <p>Specifies the bit pattern. The driver must specify the bit pattern as the CACH four-character code (FOURCC) value. The driver can use the MAKEFOURCC macro as follows to specify the FOURCC value as CACH:</p>  <pre><code>MAKEFOURCC('C', 'A', 'C', 'H');</code></pre>  </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDEVINFO_VCACHE::Pattern']/*\"/>\t\n            <msdn-id>ff544702</msdn-id>\t\n            <unmanaged>unsigned int Pattern</unmanaged>\t\n            <unmanaged-short>unsigned int Pattern</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VCache.OptMethod\">\n            <summary>\t\n            <dd> <p>Specifies the method of mesh optimization. The driver can use one of the following values to specify the mesh optimization that it uses: </p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td> <p><see cref=\"F:SharpDX.Direct3D9.MeshOptimizeFlags.StripReorder\"/> (0)</p> </td><td> <p>Longest strips optimization</p> </td></tr> <tr><td> <p>D3DXMESHOPT_VCACHE (1)</p> </td><td> <p>Vertex-cache based optimization</p> </td></tr> </table> <p>?</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDEVINFO_VCACHE::OptMethod']/*\"/>\t\n            <msdn-id>ff544702</msdn-id>\t\n            <unmanaged>unsigned int OptMethod</unmanaged>\t\n            <unmanaged-short>unsigned int OptMethod</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VCache.CacheSize\">\n            <summary>\t\n            <dd> <p>Specifies the effective size, in entries, for which the driver optimizes the vertex cache. The actual cache size is not required to be the size specified in <strong>CacheSize</strong> because in most cases the actual cache size turns out to be larger. The driver only specifies an optimized size in <strong>CacheSize</strong> if it also specifies D3DXMESHOPT_VCACHE in the <strong>OptMethod</strong> member.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDEVINFO_VCACHE::CacheSize']/*\"/>\t\n            <msdn-id>ff544702</msdn-id>\t\n            <unmanaged>unsigned int CacheSize</unmanaged>\t\n            <unmanaged-short>unsigned int CacheSize</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VCache.MagicNumber\">\n            <summary>\t\n            <dd> <p>Specifies the number that should be used as part of a trial-and-error procedure when determining when to restart the strips list. This number can be set from 1 to the value in the <strong>CacheSize</strong> member. Typically, the best values are near <strong>CacheSize</strong>/2. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDEVINFO_VCACHE::MagicNumber']/*\"/>\t\n            <msdn-id>ff544702</msdn-id>\t\n            <unmanaged>unsigned int MagicNumber</unmanaged>\t\n            <unmanaged-short>unsigned int MagicNumber</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.VertexBufferDescription\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DVERTEXBUFFER_DESC']/*\"/>\t\n            <unmanaged>D3DVERTEXBUFFER_DESC</unmanaged>\t\n            <unmanaged-short>D3DVERTEXBUFFER_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VertexBufferDescription.Format\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DVERTEXBUFFER_DESC::Format']/*\"/>\t\n            <unmanaged>D3DFORMAT Format</unmanaged>\t\n            <unmanaged-short>D3DFORMAT Format</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VertexBufferDescription.Type\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DVERTEXBUFFER_DESC::Type']/*\"/>\t\n            <unmanaged>D3DRESOURCETYPE Type</unmanaged>\t\n            <unmanaged-short>D3DRESOURCETYPE Type</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VertexBufferDescription.Usage\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DVERTEXBUFFER_DESC::Usage']/*\"/>\t\n            <unmanaged>D3DUSAGE Usage</unmanaged>\t\n            <unmanaged-short>D3DUSAGE Usage</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VertexBufferDescription.Pool\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DVERTEXBUFFER_DESC::Pool']/*\"/>\t\n            <unmanaged>D3DPOOL Pool</unmanaged>\t\n            <unmanaged-short>D3DPOOL Pool</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VertexBufferDescription.SizeInBytes\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DVERTEXBUFFER_DESC::Size']/*\"/>\t\n            <unmanaged>unsigned int Size</unmanaged>\t\n            <unmanaged-short>unsigned int Size</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VertexBufferDescription.Fvf\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DVERTEXBUFFER_DESC::FVF']/*\"/>\t\n            <unmanaged>D3DFVF FVF</unmanaged>\t\n            <unmanaged-short>D3DFVF FVF</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.VertexElement\">\n            <summary>\t\n            <p>Defines the vertex data layout. Each vertex can contain one or more data types, and each data type is described by a vertex element.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Vertex data is defined using an array of <strong><see cref=\"T:SharpDX.Direct3D9.VertexElement\"/></strong> structures. Use <strong>D3DDECL_END</strong> to declare the last element in the declaration. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DVERTEXELEMENT9']/*\"/>\t\n            <msdn-id>bb172630</msdn-id>\t\n            <unmanaged>D3DVERTEXELEMENT9</unmanaged>\t\n            <unmanaged-short>D3DVERTEXELEMENT9</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VertexElement.Stream\">\n            <summary>\t\n            <dd> <p>Stream number.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DVERTEXELEMENT9::Stream']/*\"/>\t\n            <msdn-id>bb172630</msdn-id>\t\n            <unmanaged>unsigned short Stream</unmanaged>\t\n            <unmanaged-short>unsigned short Stream</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VertexElement.Offset\">\n            <summary>\t\n            <dd> <p>Offset from the beginning of the vertex data to the data associated with the particular data type.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DVERTEXELEMENT9::Offset']/*\"/>\t\n            <msdn-id>bb172630</msdn-id>\t\n            <unmanaged>unsigned short Offset</unmanaged>\t\n            <unmanaged-short>unsigned short Offset</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VertexElement.Type\">\n            <summary>\t\n            <dd> <p>The data type, specified as a <strong><see cref=\"T:SharpDX.Direct3D9.DeclarationType\"/></strong>. One of several predefined types that define the data size. Some methods have an implied type.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DVERTEXELEMENT9::Type']/*\"/>\t\n            <msdn-id>bb172630</msdn-id>\t\n            <unmanaged>D3DDECLTYPE Type</unmanaged>\t\n            <unmanaged-short>D3DDECLTYPE Type</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VertexElement.Method\">\n            <summary>\t\n            <dd> <p>The method specifies the tessellator processing, which determines how the tessellator interprets (or operates on) the vertex data. For more information, see <strong><see cref=\"T:SharpDX.Direct3D9.DeclarationMethod\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DVERTEXELEMENT9::Method']/*\"/>\t\n            <msdn-id>bb172630</msdn-id>\t\n            <unmanaged>D3DDECLMETHOD Method</unmanaged>\t\n            <unmanaged-short>D3DDECLMETHOD Method</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VertexElement.Usage\">\n            <summary>\t\n            <dd> <p>Defines what the data will be used for; that is, the interoperability between vertex data layouts and vertex shaders. Each usage acts to bind a vertex declaration to a vertex shader. In some cases, they have a special interpretation. For example, an element that specifies <see cref=\"F:SharpDX.Direct3D9.DeclarationUsage.Normal\"/> or <see cref=\"F:SharpDX.Direct3D9.DeclarationUsage.Position\"/> is used by the N-patch tessellator to set up tessellation. See <strong><see cref=\"T:SharpDX.Direct3D9.DeclarationUsage\"/></strong> for a list of the available semantics. <see cref=\"F:SharpDX.Direct3D9.DeclarationUsage.TextureCoordinate\"/> can be used for user-defined fields (which don't have an existing usage defined).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DVERTEXELEMENT9::Usage']/*\"/>\t\n            <msdn-id>bb172630</msdn-id>\t\n            <unmanaged>D3DDECLUSAGE Usage</unmanaged>\t\n            <unmanaged-short>D3DDECLUSAGE Usage</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VertexElement.UsageIndex\">\n            <summary>\t\n            <dd> <p>Modifies the usage data to allow the user to specify multiple usage types.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DVERTEXELEMENT9::UsageIndex']/*\"/>\t\n            <msdn-id>bb172630</msdn-id>\t\n            <unmanaged>unsigned char UsageIndex</unmanaged>\t\n            <unmanaged-short>unsigned char UsageIndex</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VertexElement.VertexDeclarationEnd\">\n            <summary>\n            Used for closing a VertexElement declaration.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.VertexElement.#cctor\">\n            <summary>\n            Initializes the <see cref=\"T:SharpDX.Direct3D9.VertexElement\"/> struct.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.VertexElement.#ctor(System.Int16,System.Int16,SharpDX.Direct3D9.DeclarationType,SharpDX.Direct3D9.DeclarationMethod,SharpDX.Direct3D9.DeclarationUsage,System.Byte)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D9.VertexElement\"/> struct.\n            </summary>\n            <param name=\"stream\">The stream.</param>\n            <param name=\"offset\">The offset.</param>\n            <param name=\"type\">The type.</param>\n            <param name=\"method\">The method.</param>\n            <param name=\"usage\">The usage.</param>\n            <param name=\"usageIndex\">Index of the usage.</param>\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.VertexShader20Caps\">\n            <summary>\t\n            <p>Vertex shader caps.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DVSHADERCAPS2_0']/*\"/>\t\n            <msdn-id>bb172635</msdn-id>\t\n            <unmanaged>D3DVSHADERCAPS2_0</unmanaged>\t\n            <unmanaged-short>D3DVSHADERCAPS2_0</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VertexShader20Caps.Caps\">\n            <summary>\t\n            <dd> <p>Instruction predication is supported if this value is nonzero. See setp_comp - vs.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DVSHADERCAPS2_0::Caps']/*\"/>\t\n            <msdn-id>bb172635</msdn-id>\t\n            <unmanaged>D3DVS20CAPS Caps</unmanaged>\t\n            <unmanaged-short>D3DVS20CAPS Caps</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VertexShader20Caps.DynamicFlowControlDepth\">\n            <summary>\t\n            <dd> <p> Either 0 or 24, which represents the depth of the dynamic flow control instruction nesting. See <see cref=\"T:SharpDX.Direct3D9.VertexShaderCaps\"/>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DVSHADERCAPS2_0::DynamicFlowControlDepth']/*\"/>\t\n            <msdn-id>bb172635</msdn-id>\t\n            <unmanaged>int DynamicFlowControlDepth</unmanaged>\t\n            <unmanaged-short>int DynamicFlowControlDepth</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VertexShader20Caps.TempCount\">\n            <summary>\t\n            <dd> <p>The number of temporary registers supported. See <see cref=\"T:SharpDX.Direct3D9.VertexShaderCaps\"/>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DVSHADERCAPS2_0::NumTemps']/*\"/>\t\n            <msdn-id>bb172635</msdn-id>\t\n            <unmanaged>int NumTemps</unmanaged>\t\n            <unmanaged-short>int NumTemps</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VertexShader20Caps.StaticFlowControlDepth\">\n            <summary>\t\n            <dd> <p>The depth of nesting of the loop - vs/rep - vs and call - vs/callnz bool - vs instructions. See <see cref=\"T:SharpDX.Direct3D9.VertexShaderCaps\"/>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DVSHADERCAPS2_0::StaticFlowControlDepth']/*\"/>\t\n            <msdn-id>bb172635</msdn-id>\t\n            <unmanaged>int StaticFlowControlDepth</unmanaged>\t\n            <unmanaged-short>int StaticFlowControlDepth</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.VertexStats\">\n            <summary>\t\n            <p>Reports the number of triangles that have been processed and clipped by the runtime's software vertex processing.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Use the debug runtime and software vertex processing to get the number of non-clipped and clipped primitives for a particular scene. Primitives will typically be clipped based on a guard band (if one is present). The clipping guard band is set with parameters such as GuardBandLeft in <strong><see cref=\"T:SharpDX.Direct3D9.Capabilities\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDEVINFO_D3DVERTEXSTATS']/*\"/>\t\n            <msdn-id>bb172544</msdn-id>\t\n            <unmanaged>D3DDEVINFO_D3DVERTEXSTATS</unmanaged>\t\n            <unmanaged-short>D3DDEVINFO_D3DVERTEXSTATS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VertexStats.NumRenderedTriangles\">\n            <summary>\t\n            <dd> <p>Total number of triangles that are not clipped in this frame.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDEVINFO_D3DVERTEXSTATS::NumRenderedTriangles']/*\"/>\t\n            <msdn-id>bb172544</msdn-id>\t\n            <unmanaged>unsigned int NumRenderedTriangles</unmanaged>\t\n            <unmanaged-short>unsigned int NumRenderedTriangles</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VertexStats.NumExtraClippingTriangles\">\n            <summary>\t\n            <dd> <p>Number of new triangles generated by clipping.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DDEVINFO_D3DVERTEXSTATS::NumExtraClippingTriangles']/*\"/>\t\n            <msdn-id>bb172544</msdn-id>\t\n            <unmanaged>unsigned int NumExtraClippingTriangles</unmanaged>\t\n            <unmanaged-short>unsigned int NumExtraClippingTriangles</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.VolumeDescription\">\n            <summary>\t\n            <p>Describes a volume.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DVOLUME_DESC']/*\"/>\t\n            <msdn-id>bb172633</msdn-id>\t\n            <unmanaged>D3DVOLUME_DESC</unmanaged>\t\n            <unmanaged-short>D3DVOLUME_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VolumeDescription.Format\">\n            <summary>\t\n            <dd> <p>Member of the <see cref=\"T:SharpDX.Direct3D9.Format\"/> enumerated type, describing the surface format of the volume. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DVOLUME_DESC::Format']/*\"/>\t\n            <msdn-id>bb172633</msdn-id>\t\n            <unmanaged>D3DFORMAT Format</unmanaged>\t\n            <unmanaged-short>D3DFORMAT Format</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VolumeDescription.Type\">\n            <summary>\t\n            <dd> <p>Member of the <strong><see cref=\"T:SharpDX.Direct3D9.ResourceType\"/></strong> enumerated type, identifying this resource as a volume. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DVOLUME_DESC::Type']/*\"/>\t\n            <msdn-id>bb172633</msdn-id>\t\n            <unmanaged>D3DRESOURCETYPE Type</unmanaged>\t\n            <unmanaged-short>D3DRESOURCETYPE Type</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VolumeDescription.Usage\">\n            <summary>\t\n            <dd> <p>Currently not used. Always returned as 0. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DVOLUME_DESC::Usage']/*\"/>\t\n            <msdn-id>bb172633</msdn-id>\t\n            <unmanaged>D3DUSAGE Usage</unmanaged>\t\n            <unmanaged-short>D3DUSAGE Usage</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VolumeDescription.Pool\">\n            <summary>\t\n            <dd> <p>Member of the <strong><see cref=\"T:SharpDX.Direct3D9.Pool\"/></strong> enumerated type, specifying the class of memory allocated for this volume. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DVOLUME_DESC::Pool']/*\"/>\t\n            <msdn-id>bb172633</msdn-id>\t\n            <unmanaged>D3DPOOL Pool</unmanaged>\t\n            <unmanaged-short>D3DPOOL Pool</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VolumeDescription.Width\">\n            <summary>\t\n            <dd> <p>Width of the volume, in pixels. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DVOLUME_DESC::Width']/*\"/>\t\n            <msdn-id>bb172633</msdn-id>\t\n            <unmanaged>unsigned int Width</unmanaged>\t\n            <unmanaged-short>unsigned int Width</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VolumeDescription.Height\">\n            <summary>\t\n            <dd> <p>Height of the volume, in pixels. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DVOLUME_DESC::Height']/*\"/>\t\n            <msdn-id>bb172633</msdn-id>\t\n            <unmanaged>unsigned int Height</unmanaged>\t\n            <unmanaged-short>unsigned int Height</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VolumeDescription.Depth\">\n            <summary>\t\n            <dd> <p>Depth of the volume, in pixels. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DVOLUME_DESC::Depth']/*\"/>\t\n            <msdn-id>bb172633</msdn-id>\t\n            <unmanaged>unsigned int Depth</unmanaged>\t\n            <unmanaged-short>unsigned int Depth</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.WeldEpsilons\">\n            <summary>\t\n            <p>Specifies tolerance values for each vertex component when comparing vertices to determine if they are similar enough to be welded together.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The LPD3DXWELDEPSILONS type is defined as a reference to the <strong><see cref=\"T:SharpDX.Direct3D9.WeldEpsilons\"/></strong> structure.</p><pre><code> typedef <see cref=\"T:SharpDX.Direct3D9.WeldEpsilons\"/> *LPD3DXWELDEPSILONS;\t\n            </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXWELDEPSILONS']/*\"/>\t\n            <msdn-id>Bb205560</msdn-id>\t\n            <unmanaged>D3DXWELDEPSILONS</unmanaged>\t\n            <unmanaged-short>D3DXWELDEPSILONS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.WeldEpsilons.Position\">\n            <summary>\t\n            <dd> <p>Position</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXWELDEPSILONS::Position']/*\"/>\t\n            <msdn-id>Bb205560</msdn-id>\t\n            <unmanaged>float Position</unmanaged>\t\n            <unmanaged-short>float Position</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.WeldEpsilons.BlendWeights\">\n            <summary>\t\n            <dd> <p>Blend weight</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXWELDEPSILONS::BlendWeights']/*\"/>\t\n            <msdn-id>Bb205560</msdn-id>\t\n            <unmanaged>float BlendWeights</unmanaged>\t\n            <unmanaged-short>float BlendWeights</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.WeldEpsilons.Normal\">\n            <summary>\t\n            <dd> <p>Normal</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXWELDEPSILONS::Normal']/*\"/>\t\n            <msdn-id>Bb205560</msdn-id>\t\n            <unmanaged>float Normal</unmanaged>\t\n            <unmanaged-short>float Normal</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.WeldEpsilons.PSize\">\n            <summary>\t\n            <dd> <p>Point size value</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXWELDEPSILONS::PSize']/*\"/>\t\n            <msdn-id>Bb205560</msdn-id>\t\n            <unmanaged>float PSize</unmanaged>\t\n            <unmanaged-short>float PSize</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.WeldEpsilons.Specular\">\n            <summary>\t\n            <dd> <p>Specular lighting value</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXWELDEPSILONS::Specular']/*\"/>\t\n            <msdn-id>Bb205560</msdn-id>\t\n            <unmanaged>float Specular</unmanaged>\t\n            <unmanaged-short>float Specular</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.WeldEpsilons.Diffuse\">\n            <summary>\t\n            <dd> <p>Diffuse lighting value</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXWELDEPSILONS::Diffuse']/*\"/>\t\n            <msdn-id>Bb205560</msdn-id>\t\n            <unmanaged>float Diffuse</unmanaged>\t\n            <unmanaged-short>float Diffuse</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.WeldEpsilons.Tangent\">\n            <summary>\t\n            <dd> <p>Tangent</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXWELDEPSILONS::Tangent']/*\"/>\t\n            <msdn-id>Bb205560</msdn-id>\t\n            <unmanaged>float Tangent</unmanaged>\t\n            <unmanaged-short>float Tangent</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.WeldEpsilons.Binormal\">\n            <summary>\t\n            <dd> <p>Binormal</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXWELDEPSILONS::Binormal']/*\"/>\t\n            <msdn-id>Bb205560</msdn-id>\t\n            <unmanaged>float Binormal</unmanaged>\t\n            <unmanaged-short>float Binormal</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.WeldEpsilons.TessFactor\">\n            <summary>\t\n            <dd> <p>Tessellation factor</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXWELDEPSILONS::TessFactor']/*\"/>\t\n            <msdn-id>Bb205560</msdn-id>\t\n            <unmanaged>float TessFactor</unmanaged>\t\n            <unmanaged-short>float TessFactor</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.WeldEpsilons.Texcoord\">\n            <summary>\t\n            <dd> <p>Eight texture coordinates</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DXWELDEPSILONS::Texcoord']/*\"/>\t\n            <msdn-id>Bb205560</msdn-id>\t\n            <unmanaged>float Texcoord[8]</unmanaged>\t\n            <unmanaged-short>float Texcoord</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.Xfilecompressedanimationset\">\n            <summary>\t\n            <p>Identifies compressed key frame animation data.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XFILECOMPRESSEDANIMATIONSET']/*\"/>\t\n            <msdn-id>bb174824</msdn-id>\t\n            <unmanaged>XFILECOMPRESSEDANIMATIONSET</unmanaged>\t\n            <unmanaged-short>XFILECOMPRESSEDANIMATIONSET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Xfilecompressedanimationset.CompressedBlockSize\">\n            <summary>\t\n            <dd> <p>Total size, in bytes, of the compressed data in the compressed key frame animation data buffer.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XFILECOMPRESSEDANIMATIONSET::CompressedBlockSize']/*\"/>\t\n            <msdn-id>bb174824</msdn-id>\t\n            <unmanaged>unsigned int CompressedBlockSize</unmanaged>\t\n            <unmanaged-short>unsigned int CompressedBlockSize</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Xfilecompressedanimationset.TicksPerSec\">\n            <summary>\t\n            <dd> <p>Number of animation key frame ticks that occur per second.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XFILECOMPRESSEDANIMATIONSET::TicksPerSec']/*\"/>\t\n            <msdn-id>bb174824</msdn-id>\t\n            <unmanaged>float TicksPerSec</unmanaged>\t\n            <unmanaged-short>float TicksPerSec</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Xfilecompressedanimationset.PlaybackType\">\n            <summary>\t\n            <dd> <p>Type of the animation set playback loop. See <strong><see cref=\"T:SharpDX.Direct3D9.PlaybackType\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XFILECOMPRESSEDANIMATIONSET::PlaybackType']/*\"/>\t\n            <msdn-id>bb174824</msdn-id>\t\n            <unmanaged>unsigned int PlaybackType</unmanaged>\t\n            <unmanaged-short>unsigned int PlaybackType</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.Xfilecompressedanimationset.BufferLength\">\n            <summary>\t\n            <dd> <p>Minimum buffer size, in bytes, required to hold compressed key frame animation data. Value is equal to ( ( CompressedBlockSize + 3 ) / 4 ).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XFILECOMPRESSEDANIMATIONSET::BufferLength']/*\"/>\t\n            <msdn-id>bb174824</msdn-id>\t\n            <unmanaged>unsigned int BufferLength</unmanaged>\t\n            <unmanaged-short>unsigned int BufferLength</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.IncludeShadow\">\n            <summary>\n            Shadow callback for <see cref=\"T:SharpDX.Direct3D9.Include\"/>.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.IncludeShadow.ToIntPtr(SharpDX.Direct3D9.Include)\">\n            <summary>\n            Return a pointer to the unamanged version of this callback.\n            </summary>\n            <param name=\"callback\">The callback.</param>\n            <returns>A pointer to a shadow c++ callback</returns>\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.IncludeShadow.IncludeVtbl\">\n            <summary>\n            Internal Include Callback\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.IncludeShadow.IncludeVtbl.OpenDelegate\">\n            <summary>\t\n            A user-implemented method for opening and reading the contents of a shader #include file.\t\n            </summary>\n            <param name=\"thisPtr\">This pointer</param>\n            <param name=\"includeType\">A <see cref=\"T:SharpDX.Direct3D9.IncludeType\"/>-typed value that indicates the location of the #include file. </param>\n            <param name=\"fileNameRef\">Name of the #include file.</param>\n            <param name=\"pParentData\">Pointer to the container that includes the #include file.</param>\n            <param name=\"dataRef\">Pointer to the buffer that Open returns that contains the include directives. This pointer remains valid until <see cref=\"M:SharpDX.Direct3D9.Include.Close(System.IO.Stream)\"/> is called.</param>\n            <param name=\"bytesRef\">Pointer to the number of bytes that Open returns in ppData.</param>\n            <returns>The user-implemented method should return S_OK. If Open fails when reading the #include file, the application programming interface (API) that caused Open to be called fails. This failure can occur in one of the following situations:The high-level shader language (HLSL) shader fails one of the D3D10CompileShader*** functions.The effect fails one of the D3D10CreateEffect*** functions.</returns>\n            <unmanaged>HRESULT Open([None] D3D_INCLUDE_TYPE IncludeType,[None] const char* pFileName,[None] LPCVOID pParentData,[None] LPCVOID* ppData,[None] UINT* pBytes)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.IncludeShadow.IncludeVtbl.CloseDelegate\">\n            <summary>\t\n            A user-implemented method for closing a shader #include file.\t\n            </summary>\t\n            <remarks>\t\n            If <see cref=\"M:SharpDX.Direct3D9.Include.Open(SharpDX.Direct3D9.IncludeType,System.String,System.IO.Stream)\"/> was successful, Close is guaranteed to be called before the API using the <see cref=\"T:SharpDX.Direct3D9.Include\"/> interface returns.\t\n            </remarks>\n            <param name=\"thisPtr\">This pointer</param>\n            <param name=\"pData\">Pointer to the buffer that contains the include directives. This is the pointer that was returned by the corresponding <see cref=\"M:SharpDX.Direct3D9.Include.Open(SharpDX.Direct3D9.IncludeType,System.String,System.IO.Stream)\"/> call.</param>\n            <returns>The user-implemented Close method should return S_OK. If Close fails when it closes the #include file, the application programming interface (API) that caused Close to be called fails. This failure can occur in one of the following situations:The high-level shader language (HLSL) shader fails one of the D3D10CompileShader*** functions.The effect fails one of the D3D10CreateEffect*** functions.</returns>\n            <unmanaged>HRESULT Close([None] LPCVOID pData)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.ModuleInit\">\n            <summary>\n            Internal class used to initialize this assembly.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ModuleInit.Setup\">\n            <summary>\n            Initializes this assembly.\n            </summary>\n            <remarks>\n            This method is called when the assembly is loaded.\n            </remarks>\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.NamespaceDoc\">\n            <summary>\n            The <see cref=\"N:SharpDX.Direct3D9\"/> namespace provides a managed Direct3D9 API.\n            </summary>\n            <msdn-id>bb219837</msdn-id>\n            <unmanaged>Direct3D9</unmanaged>\t\n            <unmanaged-short>Direct3D9</unmanaged-short>\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.PaletteEntry\">\n            <summary>The PaletteEntry struct contains the color and usage of an entry in a logical palette. </summary>\n            <unmanaged>PALETTEENTRY</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PaletteEntry.Red\">\n            <summary>\n            The red intensity value for the palette entry.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PaletteEntry.Green\">\n            <summary>\n            The green intensity value for the palette entry.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PaletteEntry.Blue\">\n            <summary>\n            The blue intensity value for the palette entry.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.PaletteEntry.Flags\">\n            <summary>\n            Indicates how the palette entry is to be used. \n            TODO define an enum for flags\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.ShaderBytecode\">\n            <summary>\n              Represents the compiled bytecode of a shader or effect.\n            </summary>\n            <unmanaged>Blob</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ShaderBytecode.#ctor(SharpDX.DataStream)\">\n            <summary>\n              Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D9.ShaderBytecode\"/> class.\n            </summary>\n            <param name=\"data\">A <see cref=\"T:SharpDX.DataStream\"/> containing the compiled bytecode.</param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ShaderBytecode.#ctor(System.IO.Stream)\">\n            <summary>\n              Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D9.ShaderBytecode\"/> class.\n            </summary>\n            <param name=\"data\">A <see cref=\"T:System.IO.Stream\"/> containing the compiled bytecode.</param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ShaderBytecode.#ctor(System.Byte[])\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D9.ShaderBytecode\"/> class.\n            </summary>\n            <param name=\"buffer\">The buffer.</param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ShaderBytecode.#ctor(System.IntPtr,System.Int32)\">\n            <summary>\n              Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D9.ShaderBytecode\"/> class.\n            </summary>\n            <param name=\"buffer\">a pointer to a compiler bytecode</param>\n            <param name=\"sizeInBytes\">size of the bytecode</param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ShaderBytecode.#ctor(SharpDX.Direct3D.Blob)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D9.ShaderBytecode\"/> class.\n            </summary>\n            <param name=\"blob\">The BLOB.</param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ShaderBytecode.GetShaderSize(System.IntPtr)\">\n            <summary>\n            Gets the size of the shader from a function pointer.\n            </summary>\n            <param name=\"shaderFunctionPtr\">The shader function pointer.</param>\n            <returns>Size of the shader</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ShaderBytecode.Assemble(System.Byte[],SharpDX.Direct3D9.ShaderFlags)\">\n            <summary>\n            Assembles a shader from the given source data.\n            </summary>\n            <param name=\"sourceData\">The source shader data.</param>\n            <param name=\"flags\">Compilation options.</param>\n            <returns>A <see cref=\"T:SharpDX.Direct3D9.ShaderBytecode\"/> object representing the raw shader stream.</returns>\n            <unmanaged>HRESULT D3DXAssembleShader([In] const void* pSrcData,[In] unsigned int SrcDataLen,[In, Buffer] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] unsigned int Flags,[In] ID3DXBuffer** ppShader,[In] ID3DXBuffer** ppErrorMsgs)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ShaderBytecode.Assemble(System.String,SharpDX.Direct3D9.ShaderFlags)\">\n            <summary>\n            Assembles a shader from the given source data.\n            </summary>\n            <param name=\"sourceData\">The source shader data.</param>\n            <param name=\"flags\">Compilation options.</param>\n            <returns>A <see cref=\"T:SharpDX.Direct3D9.CompilationResult\"/> object representing the raw shader stream.</returns>\n            <unmanaged>HRESULT D3DXAssembleShader([In] const void* pSrcData,[In] unsigned int SrcDataLen,[In, Buffer] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] unsigned int Flags,[In] ID3DXBuffer** ppShader,[In] ID3DXBuffer** ppErrorMsgs)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ShaderBytecode.Assemble(System.String,SharpDX.Direct3D9.Macro[],SharpDX.Direct3D9.Include,SharpDX.Direct3D9.ShaderFlags)\">\n            <summary>\n            Assembles a shader from the given source data.\n            </summary>\n            <param name=\"sourceData\">The source shader data.</param>\n            <param name=\"defines\">Macro definitions.</param>\n            <param name=\"includeFile\">An <see cref=\"T:SharpDX.Direct3D9.Include\"/> interface to use for handling #include directives.</param>\n            <param name=\"flags\">Compilation options.</param>\n            <returns>A <see cref=\"T:SharpDX.Direct3D9.CompilationResult\"/> object representing the raw shader stream.</returns>\n            <unmanaged>HRESULT D3DXAssembleShader([In] const void* pSrcData,[In] unsigned int SrcDataLen,[In, Buffer] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] unsigned int Flags,[In] ID3DXBuffer** ppShader,[In] ID3DXBuffer** ppErrorMsgs)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ShaderBytecode.Assemble(System.Byte[],SharpDX.Direct3D9.Macro[],SharpDX.Direct3D9.Include,SharpDX.Direct3D9.ShaderFlags)\">\n            <summary>\n            Assembles a shader from the given source data.\n            </summary>\n            <param name=\"sourceData\">The source shader data.</param>\n            <param name=\"defines\">Macro definitions.</param>\n            <param name=\"includeFile\">An <see cref=\"T:SharpDX.Direct3D9.Include\"/> interface to use for handling #include directives.</param>\n            <param name=\"flags\">Compilation options.</param>\n            <returns>A <see cref=\"T:SharpDX.Direct3D9.CompilationResult\"/> object representing the raw shader stream.</returns>\n            <unmanaged>HRESULT D3DXAssembleShader([In] const void* pSrcData,[In] unsigned int SrcDataLen,[In, Buffer] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] unsigned int Flags,[In] ID3DXBuffer** ppShader,[In] ID3DXBuffer** ppErrorMsgs)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ShaderBytecode.AssembleFromFile(System.String,SharpDX.Direct3D9.ShaderFlags)\">\n            <summary>\n            Assembles a shader from file.\n            </summary>\n            <param name=\"fileName\">Name of the shader file.</param>\n            <param name=\"flags\">Compilation options.</param>\n            <returns>A <see cref=\"T:SharpDX.Direct3D9.CompilationResult\"/> object representing the raw shader stream.</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ShaderBytecode.AssembleFromFile(System.String,SharpDX.Direct3D9.Macro[],SharpDX.Direct3D9.Include,SharpDX.Direct3D9.ShaderFlags)\">\n            <summary>\n            Assembles a shader from file.\n            </summary>\n            <param name=\"fileName\">Name of the shader file.</param>\n            <param name=\"defines\">Macro definitions.</param>\n            <param name=\"includeFile\">An <see cref=\"T:SharpDX.Direct3D9.Include\"/> interface to use for handling #include directives.</param>\n            <param name=\"flags\">Compilation options.</param>\n            <returns>\n            A <see cref=\"T:SharpDX.Direct3D9.CompilationResult\"/> object representing the raw shader stream.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ShaderBytecode.Compile(System.String,System.String,SharpDX.Direct3D9.ShaderFlags)\">\n            <summary>\n            Compiles the provided shader or effect source.\n            </summary>\n            <param name=\"shaderSource\">A string containing the source of the shader or effect to compile.</param>\n            <param name=\"profile\">The shader target or set of shader features to compile against.</param>\n            <param name=\"shaderFlags\">Shader compilation options.</param>\n            <returns>\n            The compiled shader bytecode, or <c>null</c> if the method fails.\n            </returns>\n            <unmanaged>HRESULT D3DXCompileShader([In] const char* pSrcData,[In] unsigned int SrcDataLen,[In] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] const char* pFunctionName,[In] const char* pProfile,[In] unsigned int Flags,[In] ID3DXBuffer** ppShader,[In] ID3DXBuffer** ppErrorMsgs,[In] ID3DXConstantTable** ppConstantTable)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ShaderBytecode.Compile(System.Byte[],System.String,SharpDX.Direct3D9.ShaderFlags)\">\n            <summary>\n            Compiles the provided shader or effect source.\n            </summary>\n            <param name=\"shaderSource\">An array of bytes containing the raw source of the shader or effect to compile.</param>\n            <param name=\"profile\">The shader target or set of shader features to compile against.</param>\n            <param name=\"shaderFlags\">Shader compilation options.</param>\n            <returns>\n            The compiled shader bytecode, or <c>null</c> if the method fails.\n            </returns>\n            <unmanaged>HRESULT D3DXCompileShader([In] const char* pSrcData,[In] unsigned int SrcDataLen,[In] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] const char* pFunctionName,[In] const char* pProfile,[In] unsigned int Flags,[In] ID3DXBuffer** ppShader,[In] ID3DXBuffer** ppErrorMsgs,[In] ID3DXConstantTable** ppConstantTable)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ShaderBytecode.Compile(System.String,System.String,System.String,SharpDX.Direct3D9.ShaderFlags)\">\n            <summary>\n            Compiles the provided shader or effect source.\n            </summary>\n            <param name=\"shaderSource\">A string containing the source of the shader or effect to compile.</param>\n            <param name=\"entryPoint\">The name of the shader entry-point function, or <c>null</c> for an effect file.</param>\n            <param name=\"profile\">The shader target or set of shader features to compile against.</param>\n            <param name=\"shaderFlags\">Shader compilation options.</param>\n            <returns>\n            The compiled shader bytecode, or <c>null</c> if the method fails.\n            </returns>\n            <unmanaged>HRESULT D3DXCompileShader([In] const char* pSrcData,[In] unsigned int SrcDataLen,[In] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] const char* pFunctionName,[In] const char* pProfile,[In] unsigned int Flags,[In] ID3DXBuffer** ppShader,[In] ID3DXBuffer** ppErrorMsgs,[In] ID3DXConstantTable** ppConstantTable)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ShaderBytecode.Compile(System.Byte[],System.String,System.String,SharpDX.Direct3D9.ShaderFlags)\">\n            <summary>\n            Compiles the provided shader or effect source.\n            </summary>\n            <param name=\"shaderSource\">An array of bytes containing the raw source of the shader or effect to compile.</param>\n            <param name=\"entryPoint\">The name of the shader entry-point function, or <c>null</c> for an effect file.</param>\n            <param name=\"profile\">The shader target or set of shader features to compile against.</param>\n            <param name=\"shaderFlags\">Shader compilation options.</param>\n            <returns>\n            The compiled shader bytecode, or <c>null</c> if the method fails.\n            </returns>\n            <unmanaged>HRESULT D3DXCompileShader([In] const char* pSrcData,[In] unsigned int SrcDataLen,[In] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] const char* pFunctionName,[In] const char* pProfile,[In] unsigned int Flags,[In] ID3DXBuffer** ppShader,[In] ID3DXBuffer** ppErrorMsgs,[In] ID3DXConstantTable** ppConstantTable)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ShaderBytecode.Compile(System.String,System.String,SharpDX.Direct3D9.ShaderFlags,SharpDX.Direct3D9.Macro[],SharpDX.Direct3D9.Include)\">\n            <summary>\n            Compiles the provided shader or effect source.\n            </summary>\n            <param name=\"shaderSource\">A string containing the source of the shader or effect to compile.</param>\n            <param name=\"profile\">The shader target or set of shader features to compile against.</param>\n            <param name=\"shaderFlags\">Shader compilation options.</param>\n            <param name=\"defines\">A set of macros to define during compilation.</param>\n            <param name=\"include\">An interface for handling include files.</param>\n            <returns>\n            The compiled shader bytecode, or <c>null</c> if the method fails.\n            </returns>\n            <unmanaged>HRESULT D3DXCompileShader([In] const char* pSrcData,[In] unsigned int SrcDataLen,[In] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] const char* pFunctionName,[In] const char* pProfile,[In] unsigned int Flags,[In] ID3DXBuffer** ppShader,[In] ID3DXBuffer** ppErrorMsgs,[In] ID3DXConstantTable** ppConstantTable)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ShaderBytecode.Compile(System.Byte[],System.String,SharpDX.Direct3D9.ShaderFlags,SharpDX.Direct3D9.Macro[],SharpDX.Direct3D9.Include)\">\n            <summary>\n            Compiles the provided shader or effect source.\n            </summary>\n            <param name=\"shaderSource\">An array of bytes containing the raw source of the shader or effect to compile.</param>\n            <param name=\"profile\">The shader target or set of shader features to compile against.</param>\n            <param name=\"shaderFlags\">Shader compilation options.</param>\n            <param name=\"defines\">A set of macros to define during compilation.</param>\n            <param name=\"include\">An interface for handling include files.</param>\n            <returns>\n            The compiled shader bytecode, or <c>null</c> if the method fails.\n            </returns>\n            <unmanaged>HRESULT D3DXCompileShader([In] const char* pSrcData,[In] unsigned int SrcDataLen,[In] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] const char* pFunctionName,[In] const char* pProfile,[In] unsigned int Flags,[In] ID3DXBuffer** ppShader,[In] ID3DXBuffer** ppErrorMsgs,[In] ID3DXConstantTable** ppConstantTable)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ShaderBytecode.Compile(System.String,System.String,System.String,SharpDX.Direct3D9.ShaderFlags,SharpDX.Direct3D9.Macro[],SharpDX.Direct3D9.Include)\">\n            <summary>\n            Compiles the provided shader or effect source.\n            </summary>\n            <param name=\"shaderSource\">A string containing the source of the shader or effect to compile.</param>\n            <param name=\"entryPoint\">The name of the shader entry-point function, or <c>null</c> for an effect file.</param>\n            <param name=\"profile\">The shader target or set of shader features to compile against.</param>\n            <param name=\"shaderFlags\">Shader compilation options.</param>\n            <param name=\"defines\">A set of macros to define during compilation.</param>\n            <param name=\"include\">An interface for handling include files.</param>\n            <returns>\n            The compiled shader bytecode, or <c>null</c> if the method fails.\n            </returns>\n            <unmanaged>HRESULT D3DXCompileShader([In] const char* pSrcData,[In] unsigned int SrcDataLen,[In] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] const char* pFunctionName,[In] const char* pProfile,[In] unsigned int Flags,[In] ID3DXBuffer** ppShader,[In] ID3DXBuffer** ppErrorMsgs,[In] ID3DXConstantTable** ppConstantTable)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ShaderBytecode.CompileFromFile(System.String,System.String,SharpDX.Direct3D9.ShaderFlags,SharpDX.Direct3D9.Macro[],SharpDX.Direct3D9.Include)\">\n            <summary>\n            Compiles a shader or effect from a file on disk.\n            </summary>\n            <param name=\"fileName\">The name of the source file to compile.</param>\n            <param name=\"profile\">The shader target or set of shader features to compile against.</param>\n            <param name=\"shaderFlags\">Shader compilation options.</param>\n            <param name=\"defines\">A set of macros to define during compilation.</param>\n            <param name=\"include\">An interface for handling include files.</param>\n            <returns>\n            The compiled shader bytecode, or <c>null</c> if the method fails.\n            </returns>\n            <unmanaged>HRESULT D3DXCompileShader([In] const char* pSrcData,[In] unsigned int SrcDataLen,[In] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] const char* pFunctionName,[In] const char* pProfile,[In] unsigned int Flags,[In] ID3DXBuffer** ppShader,[In] ID3DXBuffer** ppErrorMsgs,[In] ID3DXConstantTable** ppConstantTable)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ShaderBytecode.CompileFromFile(System.String,System.String,System.String,SharpDX.Direct3D9.ShaderFlags,SharpDX.Direct3D9.Macro[],SharpDX.Direct3D9.Include)\">\n            <summary>\n            Compiles a shader or effect from a file on disk.\n            </summary>\n            <param name=\"fileName\">The name of the source file to compile.</param>\n            <param name=\"entryPoint\">The name of the shader entry-point function, or <c>null</c> for an effect file.</param>\n            <param name=\"profile\">The shader target or set of shader features to compile against.</param>\n            <param name=\"shaderFlags\">Shader compilation options.</param>\n            <param name=\"defines\">A set of macros to define during compilation.</param>\n            <param name=\"include\">An interface for handling include files.</param>\n            <returns>\n            The compiled shader bytecode, or <c>null</c> if the method fails.\n            </returns>\n            <unmanaged>HRESULT D3DXCompileShader([In] const char* pSrcData,[In] unsigned int SrcDataLen,[In] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] const char* pFunctionName,[In] const char* pProfile,[In] unsigned int Flags,[In] ID3DXBuffer** ppShader,[In] ID3DXBuffer** ppErrorMsgs,[In] ID3DXConstantTable** ppConstantTable)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ShaderBytecode.Compile(System.Byte[],System.String,System.String,SharpDX.Direct3D9.ShaderFlags,SharpDX.Direct3D9.Macro[],SharpDX.Direct3D9.Include)\">\n            <summary>\n            Compiles the provided shader or effect source.\n            </summary>\n            <param name=\"shaderSource\">An array of bytes containing the raw source of the shader or effect to compile.</param>\n            <param name=\"entryPoint\">The name of the shader entry-point function, or <c>null</c> for an effect file.</param>\n            <param name=\"profile\">The shader target or set of shader features to compile against.</param>\n            <param name=\"shaderFlags\">Shader compilation options.</param>\n            <param name=\"defines\">A set of macros to define during compilation.</param>\n            <param name=\"include\">An interface for handling include files.</param>\n            <returns>\n            The compiled shader bytecode, or <c>null</c> if the method fails.\n            </returns>\n            <unmanaged>HRESULT D3DXCompileShader([In] const char* pSrcData,[In] unsigned int SrcDataLen,[In] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] const char* pFunctionName,[In] const char* pProfile,[In] unsigned int Flags,[In] ID3DXBuffer** ppShader,[In] ID3DXBuffer** ppErrorMsgs,[In] ID3DXConstantTable** ppConstantTable)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ShaderBytecode.Disassemble\">\n            <summary>\n              Disassembles compiled HLSL code back into textual source.\n            </summary>\n            <returns>The textual source of the shader or effect.</returns>\n            <unmanaged>HRESULT D3DXDisassembleShader([In] const void* pShader,[In] BOOL EnableColorCode,[In] const char* pComments,[In] ID3DXBuffer** ppDisassembly)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ShaderBytecode.Disassemble(System.Boolean)\">\n            <summary>\n            Disassembles compiled HLSL code back into textual source.\n            </summary>\n            <param name=\"enableColorCode\">if set to <c>true</c> [enable color code].</param>\n            <returns>\n            The textual source of the shader or effect.\n            </returns>\n            <unmanaged>HRESULT D3DXDisassembleShader([In] const void* pShader,[In] BOOL EnableColorCode,[In] const char* pComments,[In] ID3DXBuffer** ppDisassembly)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ShaderBytecode.Disassemble(System.Boolean,System.String)\">\n            <summary>\n            Disassembles compiled HLSL code back into textual source.\n            </summary>\n            <param name=\"enableColorCode\">if set to <c>true</c> [enable color code].</param>\n            <param name=\"comments\">Commenting information to embed in the disassembly.</param>\n            <returns>\n            The textual source of the shader or effect.\n            </returns>\n            <unmanaged>HRESULT D3DXDisassembleShader([In] const void* pShader,[In] BOOL EnableColorCode,[In] const char* pComments,[In] ID3DXBuffer** ppDisassembly)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ShaderBytecode.FindComment(SharpDX.Direct3D9.Format)\">\n            <summary>\n            Searches through the shader for the specified comment.\n            </summary>\n            <param name=\"fourCC\">A FOURCC code used to identify the comment.</param>\n            <returns>The comment data.</returns>\n            <unmanaged>HRESULT D3DXFindShaderComment([In] const void* pFunction,[In] unsigned int FourCC,[Out] const void** ppData,[Out] unsigned int* pSizeInBytes)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ShaderBytecode.GetInputSemantics\">\n            <summary>\n            Gets the set of semantics for shader inputs.\n            </summary>\n            <returns>The set of semantics for shader inputs.</returns>\n            <unmanaged>HRESULT D3DXGetShaderInputSemantics([In] const void* pFunction,[In, Out, Buffer] D3DXSEMANTIC* pSemantics,[InOut] unsigned int* pCount)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ShaderBytecode.GetOutputSemantics\">\n            <summary>\n            Gets the set of semantics for shader outputs.\n            </summary>\n            <returns>The set of semantics for shader outputs.</returns>\n            <unmanaged>HRESULT D3DXGetShaderOutputSemantics([In] const void* pFunction,[In, Out, Buffer] D3DXSEMANTIC* pSemantics,[InOut] unsigned int* pCount)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ShaderBytecode.GetSamplers\">\n            <summary>\n            Gets the sampler names references in the shader.\n            </summary>\n            <returns>The set of referenced sampler names.</returns>\n            <unmanaged>HRESULT D3DXGetShaderSamplers([In] const void* pFunction,[In] const char** pSamplers,[In] unsigned int* pCount)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ShaderBytecode.MajorVersion(System.Int32)\">\n            <summary>\n            Extracts the major version component of a shader version number.\n            </summary>\n            <param name=\"version\">The shader version number.</param>\n            <returns>The major version component.</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ShaderBytecode.MinorVersion(System.Int32)\">\n            <summary>\n            Extracts the minor version component of a shader version number.\n            </summary>\n            <param name=\"version\">The shader version number.</param>\n            <returns>The minor version component.</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ShaderBytecode.ParseVersion(System.Int32)\">\n            <summary>\n            Converts a shader version number into a managed <see cref=\"T:System.Version\" /> object.\n            </summary>\n            <param name=\"version\">The shader version number.</param>\n            <returns>The parsed shader version information.</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ShaderBytecode.Load(System.IO.Stream)\">\n            <summary>\n            Loads from the specified stream.\n            </summary>\n            <param name=\"stream\">The stream.</param>\n            <returns>A shader bytecode</returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ShaderBytecode.Save(System.String)\">\n            <summary>\n            Saves to the specified file name.\n            </summary>\n            <param name=\"fileName\">Name of the file.</param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ShaderBytecode.Save(System.IO.Stream)\">\n            <summary>\n            Saves this bycode to the specified stream.\n            </summary>\n            <param name=\"stream\">The stream.</param>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ShaderBytecode.FromPointer(System.IntPtr)\">\n            <summary>\n            Froms the pointer.\n            </summary>\n            <param name=\"pointer\">The pointer.</param>\n            <returns></returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ShaderBytecode.Preprocess(System.String,SharpDX.Direct3D9.Macro[],SharpDX.Direct3D9.Include)\">\n            <summary>\n              Preprocesses the provided shader or effect source.\n            </summary>\n            <param name = \"shaderSource\">A string containing the source of the shader or effect to preprocess.</param>\n            <param name = \"defines\">A set of macros to define during preprocessing.</param>\n            <param name = \"include\">An interface for handling include files.</param>\n            <returns>The preprocessed shader source.</returns>\n            <unmanaged>HRESULT D3DXPreprocessShader([In] const void* pSrcData,[In] unsigned int SrcDataSize,[In, Buffer] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] ID3DXBuffer** ppShaderText,[In] ID3DXBuffer** ppErrorMsgs)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ShaderBytecode.Preprocess(System.Byte[],SharpDX.Direct3D9.Macro[],SharpDX.Direct3D9.Include)\">\n            <summary>\n              Preprocesses the provided shader or effect source.\n            </summary>\n            <param name = \"shaderSource\">An array of bytes containing the raw source of the shader or effect to preprocess.</param>\n            <param name = \"defines\">A set of macros to define during preprocessing.</param>\n            <param name = \"include\">An interface for handling include files.</param>\n            <returns>The preprocessed shader source.</returns>\n            <unmanaged>HRESULT D3DXPreprocessShader([In] const void* pSrcData,[In] unsigned int SrcDataSize,[In, Buffer] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] ID3DXBuffer** ppShaderText,[In] ID3DXBuffer** ppErrorMsgs)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ShaderBytecode.Preprocess(System.Byte[],SharpDX.Direct3D9.Macro[],SharpDX.Direct3D9.Include,System.String@)\">\n            <summary>\n              Preprocesses the provided shader or effect source.\n            </summary>\n            <param name = \"shaderSource\">An array of bytes containing the raw source of the shader or effect to preprocess.</param>\n            <param name = \"defines\">A set of macros to define during preprocessing.</param>\n            <param name = \"include\">An interface for handling include files.</param>\n            <param name = \"compilationErrors\">When the method completes, contains a string of compilation errors, or an empty string if preprocessing succeeded.</param>\n            <returns>The preprocessed shader source.</returns>\n            <unmanaged>HRESULT D3DXPreprocessShader([In] const void* pSrcData,[In] unsigned int SrcDataSize,[In, Buffer] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] ID3DXBuffer** ppShaderText,[In] ID3DXBuffer** ppErrorMsgs)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ShaderBytecode.Preprocess(System.IntPtr,System.Int32,SharpDX.Direct3D9.Macro[],SharpDX.Direct3D9.Include,System.String@)\">\n            <summary>\n            Preprocesses the provided shader or effect source.\n            </summary>\n            <param name=\"shaderSourcePtr\">The shader source PTR.</param>\n            <param name=\"shaderSourceLength\">Length of the shader source.</param>\n            <param name=\"defines\">A set of macros to define during preprocessing.</param>\n            <param name=\"include\">An interface for handling include files.</param>\n            <param name=\"compilationErrors\">When the method completes, contains a string of compilation errors, or an empty string if preprocessing succeeded.</param>\n            <returns>\n            The preprocessed shader source.\n            </returns>\n            <unmanaged>HRESULT D3DXPreprocessShader([In] const void* pSrcData,[In] unsigned int SrcDataSize,[In, Buffer] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] ID3DXBuffer** ppShaderText,[In] ID3DXBuffer** ppErrorMsgs)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ShaderBytecode.Preprocess(System.String,SharpDX.Direct3D9.Macro[],SharpDX.Direct3D9.Include,System.String@)\">\n            <summary>\n              Preprocesses the provided shader or effect source.\n            </summary>\n            <param name = \"shaderSource\">A string containing the source of the shader or effect to preprocess.</param>\n            <param name = \"defines\">A set of macros to define during preprocessing.</param>\n            <param name = \"include\">An interface for handling include files.</param>\n            <param name = \"compilationErrors\">When the method completes, contains a string of compilation errors, or an empty string if preprocessing succeeded.</param>\n            <returns>The preprocessed shader source.</returns>\n            <unmanaged>HRESULT D3DXPreprocessShader([In] const void* pSrcData,[In] unsigned int SrcDataSize,[In, Buffer] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] ID3DXBuffer** ppShaderText,[In] ID3DXBuffer** ppErrorMsgs)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ShaderBytecode.PreprocessFromFile(System.String)\">\n            <summary>\n              Preprocesses a shader or effect from a file on disk.\n            </summary>\n            <param name = \"fileName\">The name of the source file to compile.</param>\n            <returns>The preprocessed shader source.</returns>\n            <unmanaged>HRESULT D3DXPreprocessShader([In] const void* pSrcData,[In] unsigned int SrcDataSize,[In, Buffer] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] ID3DXBuffer** ppShaderText,[In] ID3DXBuffer** ppErrorMsgs)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ShaderBytecode.PreprocessFromFile(System.String,SharpDX.Direct3D9.Macro[],SharpDX.Direct3D9.Include)\">\n            <summary>\n              Preprocesses a shader or effect from a file on disk.\n            </summary>\n            <param name = \"fileName\">The name of the source file to compile.</param>\n            <param name = \"defines\">A set of macros to define during preprocessing.</param>\n            <param name = \"include\">An interface for handling include files.</param>\n            <returns>The preprocessed shader source.</returns>\n            <unmanaged>HRESULT D3DXPreprocessShader([In] const void* pSrcData,[In] unsigned int SrcDataSize,[In, Buffer] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] ID3DXBuffer** ppShaderText,[In] ID3DXBuffer** ppErrorMsgs)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ShaderBytecode.PreprocessFromFile(System.String,SharpDX.Direct3D9.Macro[],SharpDX.Direct3D9.Include,System.String@)\">\n            <summary>\n              Preprocesses a shader or effect from a file on disk.\n            </summary>\n            <param name = \"fileName\">The name of the source file to compile.</param>\n            <param name = \"defines\">A set of macros to define during preprocessing.</param>\n            <param name = \"include\">An interface for handling include files.</param>\n            <param name = \"compilationErrors\">When the method completes, contains a string of compilation errors, or an empty string if preprocessing succeeded.</param>\n            <returns>The preprocessed shader source.</returns>\n            <unmanaged>HRESULT D3DXPreprocessShader([In] const void* pSrcData,[In] unsigned int SrcDataSize,[In, Buffer] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] ID3DXBuffer** ppShaderText,[In] ID3DXBuffer** ppErrorMsgs)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ShaderBytecode.FromStream(System.IO.Stream)\">\n            <summary>\n              Read a compiled shader bytecode from a Stream and return a ShaderBytecode\n            </summary>\n            <param name = \"stream\"></param>\n            <returns></returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.ShaderBytecode.FromFile(System.String)\">\n            <summary>\n              Read a compiled shader bytecode from a Stream and return a ShaderBytecode\n            </summary>\n            <param name = \"fileName\"></param>\n            <returns></returns>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.ShaderBytecode.BufferPointer\">\n            <summary>\n            Gets the buffer pointer.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.ShaderBytecode.BufferSize\">\n            <summary>\n            Gets or sets the size of the buffer.\n            </summary>\n            <value>\n            The size of the buffer.\n            </value>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.ShaderBytecode.ConstantTable\">\n            <summary>\n            Gets the shader constant table.\n            </summary>\n            <unmanaged>HRESULT D3DXGetShaderConstantTable([In] const void* pFunction,[In] ID3DXConstantTable** ppConstantTable)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.ShaderBytecode.Version\">\n            <summary>\n            Gets the version of the shader.\n            </summary>\n            <unmanaged>unsigned int D3DXGetShaderVersion([In] const void* pFunction)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D9.ShaderBytecode.Data\">\n            <summary>\n              Gets the raw data of the compiled bytecode.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureRequirements.Width\">\n            <summary>\n            Width of the texture.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureRequirements.Height\">\n            <summary>\n            Height of the texture.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureRequirements.Format\">\n            <summary>\n            Format of the texture.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.TextureRequirements.MipLevelCount\">\n            <summary>\n            Mip level count of the texture.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.VertexFormatHelper\">\n            <summary>\n            Helper methods to create special <see cref=\"T:SharpDX.Direct3D9.VertexFormat\"/>.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Direct3D9.VertexFormatHelper.TexCoordSize(System.Int32,System.Int32)\">\n            <summary>\n            Calculates a specific TEXCOORDSIZEN <see cref=\"T:SharpDX.Direct3D9.VertexFormat\"/>.\n            </summary>\n            <param name=\"size\">The size of the texcoord. The value must be in the range [1,4] (Number of floating point values)</param>\n            <param name=\"coordIndex\">Index of the coord.</param>\n            <returns>The <see cref=\"T:SharpDX.Direct3D9.VertexFormat\"/></returns>\n            <exception cref=\"T:System.ArgumentException\">If size is not in the range [1,4]</exception>\n            <remarks>\n            </remarks>\n        </member>\n        <member name=\"T:SharpDX.Direct3D9.VolumeTextureRequirements\">\n            <summary>\n            Contains requested texture creation parameters for volume textures.\n            </summary>\n            <unmanaged>None</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VolumeTextureRequirements.Width\">\n            <summary>\n            The requested width of the texture, in pixels.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VolumeTextureRequirements.Height\">\n            <summary>\n            The requested height of the texture, in pixels.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VolumeTextureRequirements.Depth\">\n            <summary>\n            The requested depth of the texture, in pixels.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VolumeTextureRequirements.Format\">\n            <summary>\n            The requested surface format.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Direct3D9.VolumeTextureRequirements.MipLevelCount\">\n            <summary>\n            The requested mip level count.\n            </summary>\n        </member>\n    </members>\n</doc>\n"
  },
  {
    "path": "3rd/SharpDX/SharpDX.DirectInput.xml",
    "content": "<?xml version=\"1.0\"?>\n<doc>\n    <assembly>\n        <name>SharpDX.DirectInput</name>\n    </assembly>\n    <members>\n        <member name=\"T:SharpDX.DirectInput.AssemblyDoc\">\n            <summary>\n            The <see cref=\"A:SharpDX.DirectInput\"/> assembly provides managed DirectInput API.\n            </summary>\n            <msdn-id>ee416842</msdn-id>\n            <unmanaged>DirectInput</unmanaged>\t\n            <unmanaged-short>DirectInput</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectInput.Capabilities\">\n            <summary>\t\n            Describes a DirectInput device's capabilities. This structure is used with theIDirectInputDevice8::GetCapabilitiesmethod.\t\n            </summary>\t\n            <remarks>\t\n            <p>The semantics of version numbers are left to the manufacturer of the device. The only guarantee is that newer versions have larger numbers.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDEVCAPS']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.didevcaps</msdn-id>\t\n            <unmanaged>DIDEVCAPS</unmanaged>\t\n            <unmanaged-short>DIDEVCAPS</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectInput.Capabilities.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectInput.Capabilities\"/> class.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Capabilities.Size\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDEVCAPS::dwSize']/*\"/>\t\n            <unmanaged>unsigned int dwSize</unmanaged>\t\n            <unmanaged-short>unsigned int dwSize</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Capabilities.Flags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDEVCAPS::dwFlags']/*\"/>\t\n            <unmanaged>DIDC dwFlags</unmanaged>\t\n            <unmanaged-short>DIDC dwFlags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Capabilities.RawType\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDEVCAPS::dwDevType']/*\"/>\t\n            <unmanaged>unsigned int dwDevType</unmanaged>\t\n            <unmanaged-short>unsigned int dwDevType</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Capabilities.AxeCount\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDEVCAPS::dwAxes']/*\"/>\t\n            <unmanaged>unsigned int dwAxes</unmanaged>\t\n            <unmanaged-short>unsigned int dwAxes</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Capabilities.ButtonCount\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDEVCAPS::dwButtons']/*\"/>\t\n            <unmanaged>unsigned int dwButtons</unmanaged>\t\n            <unmanaged-short>unsigned int dwButtons</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Capabilities.PovCount\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDEVCAPS::dwPOVs']/*\"/>\t\n            <unmanaged>unsigned int dwPOVs</unmanaged>\t\n            <unmanaged-short>unsigned int dwPOVs</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Capabilities.ForceFeedbackSamplePeriod\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDEVCAPS::dwFFSamplePeriod']/*\"/>\t\n            <unmanaged>unsigned int dwFFSamplePeriod</unmanaged>\t\n            <unmanaged-short>unsigned int dwFFSamplePeriod</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Capabilities.ForceFeedbackMinimumTimeResolution\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDEVCAPS::dwFFMinTimeResolution']/*\"/>\t\n            <unmanaged>unsigned int dwFFMinTimeResolution</unmanaged>\t\n            <unmanaged-short>unsigned int dwFFMinTimeResolution</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Capabilities.FirmwareRevision\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDEVCAPS::dwFirmwareRevision']/*\"/>\t\n            <unmanaged>unsigned int dwFirmwareRevision</unmanaged>\t\n            <unmanaged-short>unsigned int dwFirmwareRevision</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Capabilities.HardwareRevision\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDEVCAPS::dwHardwareRevision']/*\"/>\t\n            <unmanaged>unsigned int dwHardwareRevision</unmanaged>\t\n            <unmanaged-short>unsigned int dwHardwareRevision</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Capabilities.DriverVersion\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDEVCAPS::dwFFDriverVersion']/*\"/>\t\n            <unmanaged>unsigned int dwFFDriverVersion</unmanaged>\t\n            <unmanaged-short>unsigned int dwFFDriverVersion</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.DirectInput.Capabilities.Type\">\n            <summary>\n            Gets the type of this device.\n            </summary>\n            <value>The type.</value>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.Capabilities.Subtype\">\n            <summary>\n            Gets the subtype of the device.\n            </summary>\n            <value>The subtype.</value>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.Capabilities.IsHumanInterfaceDevice\">\n            <summary>\n            Gets a value indicating whether this instance is human interface device.\n            </summary>\n            <value>\n            \t<c>true</c> if this instance is human interface device; otherwise, <c>false</c>.\n            </value>\n        </member>\n        <member name=\"T:SharpDX.DirectInput.ConditionSet\">\n            <summary>\n            This class describes a set of <see cref=\"T:SharpDX.DirectInput.Condition\"/> effect.\n            It is passed in the <see cref=\"P:SharpDX.DirectInput.EffectParameters.Parameters\"/> of the <see cref=\"T:SharpDX.DirectInput.EffectParameters\"/> structure.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.DirectInput.TypeSpecificParameters\">\n            <summary>\n            Custom data stored in <see cref=\"T:SharpDX.DirectInput.EffectParameters\"/>.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.DirectInput.TypeSpecificParameters.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectInput.TypeSpecificParameters\"/> class.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.DirectInput.TypeSpecificParameters.#ctor(System.Int32,System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectInput.TypeSpecificParameters\"/> class.\n            </summary>\n            <param name=\"bufferSize\">Size of the buffer.</param>\n            <param name=\"bufferPointer\">The buffer pointer.</param>\n        </member>\n        <member name=\"M:SharpDX.DirectInput.TypeSpecificParameters.Init(System.Int32,System.IntPtr)\">\n            <summary>\n            Inits this instance from the specified buffer.\n            </summary>\n            <param name=\"bufferSize\">Size of the buffer.</param>\n            <param name=\"bufferPointer\">The buffer pointer.</param>\n        </member>\n        <member name=\"M:SharpDX.DirectInput.TypeSpecificParameters.MarshalFrom(System.Int32,System.IntPtr)\">\n            <summary>\n            Marshal this class from an unamanaged buffer.\n            </summary>\n            <param name=\"bufferSize\">The size of the unmanaged buffer.</param>\n            <param name=\"bufferPointer\">The pointer to the unmanaged buffer.</param>\n            <returns>An instance of TypeSpecificParameters or null</returns>\n        </member>\n        <member name=\"M:SharpDX.DirectInput.TypeSpecificParameters.MarshalFree(System.IntPtr)\">\n            <summary>\n            Free a previously allocated buffer.\n            </summary>\n            <param name=\"bufferPointer\">The buffer pointer.</param>\n        </member>\n        <member name=\"M:SharpDX.DirectInput.TypeSpecificParameters.MarshalTo\">\n            <summary>\n            Marshals this class to its native/unmanaged counterpart.\n            </summary>\n            <returns>A pointer to an allocated buffer containing the unmanaged structure.</returns>\n        </member>\n        <member name=\"M:SharpDX.DirectInput.TypeSpecificParameters.As``1\">\n            <summary>\n            Convert this instance to another typed instance: <see cref=\"T:SharpDX.DirectInput.ConditionSet\"/>, <see cref=\"T:SharpDX.DirectInput.ConstantForce\"/>, <see cref=\"T:SharpDX.DirectInput.CustomForce\"/>, <see cref=\"T:SharpDX.DirectInput.PeriodicForce\"/> <see cref=\"T:SharpDX.DirectInput.RampForce\"/>.\n            </summary>\n            <typeparam name=\"T\">A class <see cref=\"T:SharpDX.DirectInput.TypeSpecificParameters\"/></typeparam>\n            <returns>An instance of the T class</returns>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.TypeSpecificParameters.Size\">\n            <summary>\n            Gets the size of this specific parameter.\n            </summary>\n            <value>The size.</value>\n        </member>\n        <member name=\"M:SharpDX.DirectInput.ConditionSet.MarshalFrom(System.Int32,System.IntPtr)\">\n            <summary>\n            Marshal this class from an unamanaged buffer.\n            </summary>\n            <param name=\"bufferSize\">The size of the unmanaged buffer.</param>\n            <param name=\"bufferPointer\">The pointer to the unmanaged buffer.</param>\n            <returns>An instance of TypeSpecificParameters or null</returns>\n        </member>\n        <member name=\"M:SharpDX.DirectInput.ConditionSet.MarshalTo\">\n            <summary>\n            Marshals this class to its native/unmanaged counterpart.\n            </summary>\n            <returns>A pointer to an allocated buffer containing the unmanaged structure.</returns>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.ConditionSet.Conditions\">\n            <summary>\n            Gets or sets the conditions.\n            </summary>\n            <value>The conditions.</value>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.ConditionSet.Size\">\n            <summary>\n            Gets the size of this specific parameter.\n            </summary>\n            <value>The size.</value>\n        </member>\n        <member name=\"T:SharpDX.DirectInput.ConstantForce\">\n            <summary>\n            This class describes a Constant force effect. \n            It is passed in the <see cref=\"P:SharpDX.DirectInput.EffectParameters.Parameters\"/> of the <see cref=\"T:SharpDX.DirectInput.EffectParameters\"/> structure.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.DirectInput.ConstantForce.MarshalFrom(System.Int32,System.IntPtr)\">\n            <summary>\n            Marshal this class from an unamanaged buffer.\n            </summary>\n            <param name=\"bufferSize\">The size of the unmanaged buffer.</param>\n            <param name=\"bufferPointer\">The pointer to the unmanaged buffer.</param>\n            <returns>An instance of TypeSpecificParameters or null</returns>\n        </member>\n        <member name=\"M:SharpDX.DirectInput.ConstantForce.MarshalTo\">\n            <summary>\n            Marshals this class to its native/unmanaged counterpart.\n            </summary>\n            <returns>A pointer to an allocated buffer containing the unmanaged structure.</returns>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.ConstantForce.Magnitude\">\n            <summary>\n            Gets or sets the magnitude.\n            The magnitude of the effect, in the range from - 10,000 through 10,000. If an envelope is applied to this effect, the value represents the magnitude of the sustain. If no envelope is applied, the value represents the amplitude of the entire effect.\n            </summary>\n            <value>The magnitude.</value>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.ConstantForce.Size\">\n            <summary>\n            Gets the size of this specific parameter.\n            </summary>\n            <value>The size.</value>\n        </member>\n        <member name=\"T:SharpDX.DirectInput.Device\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectInputDevice8W']/*\"/>\t\n            <unmanaged>IDirectInputDevice8W</unmanaged>\t\n            <unmanaged-short>IDirectInputDevice8W</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectInput.Device.#ctor(SharpDX.DirectInput.DirectInput,System.Guid)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectInput.Device\"/> class based on a given globally unique identifier (Guid). \n            </summary>\n            <param name=\"directInput\">The direct input.</param>\n            <param name=\"deviceGuid\">The device GUID.</param>\n        </member>\n        <member name=\"M:SharpDX.DirectInput.Device.Escape(System.Int32,System.Byte[],System.Byte[])\">\n            <summary>\n            Sends a hardware-specific command to the force-feedback driver.\n            </summary>\n            <param name=\"command\">Driver-specific command number. Consult the driver documentation for a list of valid commands. </param>\n            <param name=\"inData\">Buffer containing the data required to perform the operation. </param>\n            <param name=\"outData\">Buffer in which the operation's output data is returned. </param>\n            <returns>Number of bytes written to the output buffer</returns>\n            <remarks>\n            Because each driver implements different escapes, it is the application's responsibility to ensure that it is sending the escape to the correct driver by comparing the value of the guidFFDriver member of the <see cref=\"T:SharpDX.DirectInput.DeviceInstance\"/> structure against the value the application is expecting.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.DirectInput.Device.GetDeviceImages\">\n            <summary>\n            Gets information about a device image for use in a configuration property sheet.\n            </summary>\n            <returns>A structure that receives information about the device image.</returns>\n        </member>\n        <member name=\"M:SharpDX.DirectInput.Device.GetEffects\">\n            <summary>\n            Gets all effects.\n            </summary>\n            <returns>A collection of <see cref=\"T:SharpDX.DirectInput.EffectInfo\"/></returns>\n        </member>\n        <member name=\"M:SharpDX.DirectInput.Device.GetEffects(SharpDX.DirectInput.EffectType)\">\n            <summary>\n            Gets the effects for a particular <see cref=\"T:SharpDX.DirectInput.EffectType\"/>.\n            </summary>\n            <param name=\"effectType\">Effect type.</param>\n            <returns>A collection of <see cref=\"T:SharpDX.DirectInput.EffectInfo\"/></returns>\n        </member>\n        <member name=\"M:SharpDX.DirectInput.Device.GetEffectsInFile(System.String)\">\n            <summary>\n            Gets the effects stored in a RIFF Force Feedback file.\n            </summary>\n            <param name=\"fileName\">Name of the file.</param>\n            <returns>A collection of <see cref=\"T:SharpDX.DirectInput.EffectFile\"/></returns>\n        </member>\n        <member name=\"M:SharpDX.DirectInput.Device.GetEffectsInFile(System.String,SharpDX.DirectInput.EffectFileFlags)\">\n            <summary>\n            Gets the effects stored in a RIFF Force Feedback file.\n            </summary>\n            <param name=\"fileName\">Name of the file.</param>\n            <param name=\"effectFileFlags\">Flags used to filter effects.</param>\n            <returns>A collection of <see cref=\"T:SharpDX.DirectInput.EffectFile\"/></returns>\n        </member>\n        <member name=\"M:SharpDX.DirectInput.Device.GetObjectInfoById(SharpDX.DirectInput.DeviceObjectId)\">\n            <summary>\n            Gets information about a device object, such as a button or axis.\n            </summary>\n            <param name=\"objectId\">The object type/instance identifier. This identifier is returned in the <see cref=\"F:SharpDX.DirectInput.DeviceObjectInstance.ObjectId\"/> member of the <see cref=\"T:SharpDX.DirectInput.DeviceObjectInstance\"/> structure returned from a previous call to the <see cref=\"M:SharpDX.DirectInput.Device.GetObjects\"/> method.</param>\n            <returns>A <see cref=\"T:SharpDX.DirectInput.DeviceObjectInstance\"/> information</returns>\n        </member>\n        <member name=\"M:SharpDX.DirectInput.Device.GetObjectInfoByUsage(System.Int32)\">\n            <summary>\n            Gets information about a device object, such as a button or axis.\n            </summary>\n            <param name=\"usageCode\">the HID Usage Page and Usage values.</param>\n            <returns>A <see cref=\"T:SharpDX.DirectInput.DeviceObjectInstance\"/> information</returns>\n        </member>\n        <member name=\"M:SharpDX.DirectInput.Device.GetObjectPropertiesById(SharpDX.DirectInput.DeviceObjectId)\">\n            <summary>\n            Gets the properties about a device object, such as a button or axis.\n            </summary>\n            <param name=\"objectId\">The object type/instance identifier. This identifier is returned in the <see cref=\"!:DeviceObjectInstance.Type\"/> member of the <see cref=\"T:SharpDX.DirectInput.DeviceObjectInstance\"/> structure returned from a previous call to the <see cref=\"M:SharpDX.DirectInput.Device.GetObjects\"/> method.</param>\n            <returns>an ObjectProperties</returns>\n        </member>\n        <member name=\"M:SharpDX.DirectInput.Device.GetObjectPropertiesByUsage(System.Int32)\">\n            <summary>\n            Gets the properties about a device object, such as a button or axis.\n            </summary>\n            <param name=\"usageCode\">the HID Usage Page and Usage values.</param>\n            <returns>an ObjectProperties</returns>\n        </member>\n        <member name=\"M:SharpDX.DirectInput.Device.GetObjects\">\n            <summary>\n            Retrieves a collection of objects on the device.\n            </summary>\n            <returns>A collection of all device objects on the device.</returns>\n        </member>\n        <member name=\"M:SharpDX.DirectInput.Device.GetObjects(SharpDX.DirectInput.DeviceObjectTypeFlags)\">\n            <summary>\n            Retrieves a collection of objects on the device.\n            </summary>\n            <param name=\"deviceObjectTypeFlag\">A filter for the returned device objects collection.</param>\n            <returns>A collection of device objects matching the specified filter.</returns>\n        </member>\n        <member name=\"M:SharpDX.DirectInput.Device.RunControlPanel\">\n            <summary>\n            Runs the DirectInput control panel associated with this device. If the device does not have a control panel associated with it, the default device control panel is launched.\n            </summary>\n            <returns>A <see cref = \"T:SharpDX.Result\" /> object describing the result of the operation.</returns>\n        </member>\n        <member name=\"M:SharpDX.DirectInput.Device.RunControlPanel(System.Windows.Forms.Control)\">\n            <summary>\n            Runs the DirectInput control panel associated with this device. If the device does not have a control panel associated with it, the default device control panel is launched.\n            </summary>\n            <param name=\"parent\">The parent control.</param>\n            <returns>A <see cref = \"T:SharpDX.Result\" /> object describing the result of the operation.</returns>\n        </member>\n        <member name=\"M:SharpDX.DirectInput.Device.SetCooperativeLevel(System.Windows.Forms.Control,SharpDX.DirectInput.CooperativeLevel)\">\n            <summary>\t\n            Requests the cooperative level for this instance of the inpute device. The cooperative level determines how this instance of the device interacts with other instances of the device and the rest of the system.\t\n            </summary>\t\n            <param name=\"control\">Window control to be associated with the device. This parameter must be a valid top-level window handle that belongs to the process. The window associated with the device must not be destroyed while it is still active in a DirectInput device.</param>\t\n            <param name=\"level\">Flags that specify the cooperative level to associate with the input device.</param>\t\n            <returns>If the method succeeds, the return value is <see cref=\"F:SharpDX.DirectInput.ResultCode.Ok\"/>. If the method fails, a <see cref=\"T:SharpDX.SharpDXException\"/> is raised with the following error code values: <see cref=\"F:SharpDX.DirectInput.ResultCode.InvalidParam\"/>, <see cref=\"F:SharpDX.DirectInput.ResultCode.NotInitialized\"/>, <see cref=\"F:SharpDX.Result.Handle\"/>.</returns>\t\n            <remarks>\t\n            <para>Applications cannot specify <see cref=\"F:SharpDX.DirectInput.CooperativeLevel.Foreground\"/> and <see cref=\"F:SharpDX.DirectInput.CooperativeLevel.Background\"/> at the same time. This apply as well to <see cref=\"F:SharpDX.DirectInput.CooperativeLevel.Exclusive\"/> and <see cref=\"F:SharpDX.DirectInput.CooperativeLevel.NonExclusive\"/>.</para>\n             <para>When the mouse is acquired with exclusive access, the mouse pointer is removed from the screen until the device is unacquired.</para>\t\n             <para>Applications that select the background exclusive mode cooperative level are not guaranteed to retain access to the device if another application requests exclusive access. When a background exclusive mode application loses access, calls to DirectInput device methods will fail and return <see cref=\"F:SharpDX.DirectInput.ResultCode.NotAcquired\"/>. The application can regain access to the device by manually unacquiring the device and reaquiring it.</para>\t\n             <para>Applications must call this method before acquiring the device by using the <see cref=\"T:SharpDX.DirectInput.Device\"/> method.</para>\t\n            </remarks>\t\n            <unmanaged>HRESULT IDirectInputDevice8W::SetCooperativeLevel([In] HWND arg0,[In] DISCL arg1)</unmanaged>\t\n        </member>\n        <member name=\"M:SharpDX.DirectInput.Device.SetNotification(System.Threading.WaitHandle)\">\n            <summary>\n            Specifies an event that is to be set when the device state changes. It is also used to turn off event notification.\n            </summary>\n            <param name=\"eventHandle\">Handle to the event that is to be set when the device state changes. DirectInput uses the Microsoft Win32 SetEvent function on the handle when the state of the device changes. If the eventHandle parameter is null, notification is disabled.</param>\n            <returns>A <see cref = \"T:SharpDX.Result\" /> object describing the result of the operation.</returns>\n        </member>\n        <member name=\"M:SharpDX.DirectInput.Device.WriteEffectsToFile(System.String,SharpDX.DirectInput.EffectFile[])\">\n            <summary>\n            Writes the effects to a file.\n            </summary>\n            <param name=\"fileName\">Name of the file.</param>\n            <param name=\"effects\">The effects.</param>\n            <returns>A <see cref = \"T:SharpDX.Result\" /> object describing the result of the operation.</returns>\n        </member>\n        <member name=\"M:SharpDX.DirectInput.Device.WriteEffectsToFile(System.String,SharpDX.DirectInput.EffectFile[],System.Boolean)\">\n            <summary>\n            Writes the effects to file.\n            </summary>\n            <param name=\"fileName\">Name of the file.</param>\n            <param name=\"effects\">The effects.</param>\n            <param name=\"includeNonstandardEffects\">if set to <c>true</c> [include nonstandard effects].</param>\n            <returns>A <see cref = \"T:SharpDX.Result\" /> object describing the result of the operation.</returns>\n        </member>\n        <member name=\"M:SharpDX.DirectInput.Device.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectInput.Device\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.DirectInput.Device.op_Explicit(System.IntPtr)~SharpDX.DirectInput.Device\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.DirectInput.Device\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.DirectInput.Device.GetCapabilities(SharpDX.DirectInput.Capabilities@)\">\n            <summary>\t\n            Obtains the capabilities of the DirectInputDevice object.\t\n            </summary>\t\n            <param name=\"arg0\"><dd> Address of a <see cref=\"T:SharpDX.DirectInput.Capabilities\"/> structure to be filled with the device capabilities. The dwSize member of this structure must be initialized before calling this method.  </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.DirectInput.ResultCode.Ok\"/>. If the method fails, the return value can be one of the following error values: <see cref=\"F:SharpDX.DirectInput.ResultCode.InvalidParam\"/>, <see cref=\"F:SharpDX.DirectInput.ResultCode.NotInitialized\"/>, E_POINTER.</p></returns>\t\n            <remarks>\t\n            <p>For compatibility with DirectX 3, it is also valid to pass a  DIDEVCAPS_DX3 structure with the  dwSize member initialized to  sizeof(DIDEVCAPS_DX3). </p> <p>The number of objects returned in the <see cref=\"T:SharpDX.DirectInput.Capabilities\"/> structure is the maximum number of objects that could be enumerated.  However, all of these objects are not necessarily returned during a call to <see cref=\"M:SharpDX.DirectInput.Device.EnumObjects(SharpDX.FunctionCallback,System.IntPtr,System.Int32)\"/>.  </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectInputDevice8W::GetCapabilities']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.idirectinputdevice8.idirectinputdevice8.getcapabilities</msdn-id>\t\n            <unmanaged>HRESULT IDirectInputDevice8W::GetCapabilities([Out] DIDEVCAPS* arg0)</unmanaged>\t\n            <unmanaged-short>IDirectInputDevice8W::GetCapabilities</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectInput.Device.EnumObjects(SharpDX.FunctionCallback,System.IntPtr,System.Int32)\">\n            <summary>\t\n            Enumerates the input and output objects available on a device.\t\n            </summary>\t\n            <param name=\"arg0\"><dd> Address of a callback function that receives DirectInputDevice objects. DirectInput provides a prototype of this function as DIEnumDeviceObjectsCallback.  </dd></param>\t\n            <param name=\"arg1\"><dd> Reference data (context) for callback.  </dd></param>\t\n            <param name=\"arg2\"><dd> Flags that specify the types of object to be enumerated. Each of the following values restricts the enumeration to objects of the described type: <dl> <dt><see cref=\"F:SharpDX.DirectInput.DeviceObjectTypeFlags.AbsoluteAxis\"/></dt> <dd>An absolute axis. </dd> <dt><see cref=\"F:SharpDX.DirectInput.DeviceObjectTypeFlags.Alias\"/></dt> <dd>Controls identified by a Human Interface Device (HID) usage alias. This flag applies only to HID-compliant USB devices. </dd> <dt><see cref=\"F:SharpDX.DirectInput.DeviceObjectTypeFlags.All\"/></dt> <dd>All objects. </dd> <dt><see cref=\"F:SharpDX.DirectInput.DeviceObjectTypeFlags.Axis\"/></dt> <dd>An axis, either absolute or relative. </dd> <dt><see cref=\"F:SharpDX.DirectInput.DeviceObjectTypeFlags.Button\"/></dt> <dd>A push button or a toggle button. </dd> <dt><see cref=\"F:SharpDX.DirectInput.DeviceObjectTypeFlags.Collection\"/></dt> <dd>A HID link collection. HID link collections do not generate data of their own. </dd> <dt>DIDFT_ENUMCOLLECTION(n)</dt> <dd>An object that belongs to HID link collection number n. </dd> <dt><see cref=\"F:SharpDX.DirectInput.DeviceObjectTypeFlags.ForceFeedbackActuator\"/></dt> <dd>An object that contains a force-feedback actuator. In other words, forces can be applied to this object.</dd> <dt><see cref=\"F:SharpDX.DirectInput.DeviceObjectTypeFlags.ForceFeedbackEffectTrigger\"/></dt> <dd>An object that can be used to trigger force-feedback effects. </dd> <dt>DIDFT_NOCOLLECTION</dt> <dd>An object that does not belong to any HID link collection; in other words, an object for which the wCollectionNumber member of the <see cref=\"T:SharpDX.DirectInput.DeviceObjectInstance\"/> structure is 0. </dd> <dt><see cref=\"F:SharpDX.DirectInput.DeviceObjectTypeFlags.NoData\"/></dt> <dd>An object that does not generate data. </dd> <dt><see cref=\"F:SharpDX.DirectInput.DeviceObjectTypeFlags.Output\"/></dt> <dd>An object that supports output. For details, see Remarks in <see cref=\"M:SharpDX.DirectInput.Device.SendDeviceData(System.Int32,SharpDX.DirectInput.ObjectData[],System.Int32@,System.Int32)\"/>. </dd> <dt><see cref=\"F:SharpDX.DirectInput.DeviceObjectTypeFlags.PointOfViewController\"/></dt> <dd>A point-of-view controller. </dd> <dt><see cref=\"F:SharpDX.DirectInput.DeviceObjectTypeFlags.PushButton\"/></dt> <dd>A push button. A push button is reported as down when the user presses it, and as up when the user releases it. </dd> <dt><see cref=\"F:SharpDX.DirectInput.DeviceObjectTypeFlags.RelativeAxis\"/></dt> <dd>A relative axis. </dd> <dt><see cref=\"F:SharpDX.DirectInput.DeviceObjectTypeFlags.ToggleButton\"/></dt> <dd>A toggle button. A toggle button is reported as down when the user presses it and remains so until the user presses the button a second time. </dd> <dt><see cref=\"F:SharpDX.DirectInput.DeviceObjectTypeFlags.VendorDefined\"/></dt> <dd>An object of a type defined by the manufacturer. </dd> </dl> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.DirectInput.ResultCode.Ok\"/>. If the method fails, the return value can be one of the following error values:.</p><see cref=\"F:SharpDX.DirectInput.ResultCode.InvalidParam\"/><see cref=\"F:SharpDX.DirectInput.ResultCode.NotInitialized\"/></returns>\t\n            <remarks>\t\n            <p>The <see cref=\"F:SharpDX.DirectInput.DeviceObjectTypeFlags.ForceFeedbackActuator\"/> and <see cref=\"F:SharpDX.DirectInput.DeviceObjectTypeFlags.ForceFeedbackEffectTrigger\"/> flags in the  dwFlags parameter restrict enumeration to objects that meet all the criteria defined by the included flags. For all the other flags, an object is enumerated if it meets the criterion defined by any included flag in this category. For example, (<see cref=\"F:SharpDX.DirectInput.DeviceObjectTypeFlags.ForceFeedbackActuator\"/> | <see cref=\"F:SharpDX.DirectInput.DeviceObjectTypeFlags.ForceFeedbackEffectTrigger\"/>) restricts enumeration to force-feedback trigger objects, and (<see cref=\"F:SharpDX.DirectInput.DeviceObjectTypeFlags.ForceFeedbackEffectTrigger\"/> | <see cref=\"F:SharpDX.DirectInput.DeviceObjectTypeFlags.ToggleButton\"/> | <see cref=\"F:SharpDX.DirectInput.DeviceObjectTypeFlags.PushButton\"/>) restricts enumeration to buttons of any kind that can be used as effect triggers.</p> <p>Applications should not rely on this method to determine whether certain keyboard keys or indicator lights are present, as these objects might be enumerated even though they are not present. Although the basic set of available objects can be determined from the device subtype, there is no reliable way of determining whether extra objects such as the menu key are available.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectInputDevice8W::EnumObjects']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.idirectinputdevice8.idirectinputdevice8.enumobjects</msdn-id>\t\n            <unmanaged>HRESULT IDirectInputDevice8W::EnumObjects([In] __function__stdcall* arg0,[In] void* arg1,[In] unsigned int arg2)</unmanaged>\t\n            <unmanaged-short>IDirectInputDevice8W::EnumObjects</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectInput.Device.GetProperty(System.IntPtr,System.IntPtr)\">\n            <summary>\t\n            Retrieves information about the input device.\t\n            </summary>\t\n            <param name=\"arg0\"><dd> Reference to (C++) or address of (C) the globally unique identifier (<see cref=\"T:System.Guid\"/>) identifying the property to be retrieved. This can be one of the predefined values or a reference to a <see cref=\"T:System.Guid\"/> that identifies the property. The following properties are predefined for an input device.  <dl> <dt><see cref=\"F:SharpDX.DirectInput.PropertyGuids.Appdata\"/></dt> <dd>Retrieves the application-defined value associated with an in-game action, as a  <see cref=\"T:SharpDX.DirectInput.PropertyPointer\"/>.</dd> <dt><see cref=\"F:SharpDX.DirectInput.PropertyGuids.Autocenter\"/></dt> <dd>Determines whether device objects are self centering. The value returned can be DIPROPAUTOCENTER_OFF or DIPROPAUTOCENTER_ON. See <see cref=\"M:SharpDX.DirectInput.Device.SetProperty(System.IntPtr,System.IntPtr)\"/> for more information.</dd> <dt><see cref=\"F:SharpDX.DirectInput.PropertyGuids.Axismode\"/></dt> <dd>Retrieves the axis mode. The retrieved value can be <see cref=\"F:SharpDX.DirectInput.DeviceAxisMode.Absolute\"/> or <see cref=\"F:SharpDX.DirectInput.DeviceAxisMode.Relative\"/>.</dd> <dt><see cref=\"F:SharpDX.DirectInput.PropertyGuids.BufferSize\"/></dt> <dd>Retrieves the input buffer size. The buffer size determines the amount of data that the buffer can hold between calls to the <see cref=\"M:SharpDX.DirectInput.Device.GetDeviceData(System.Int32,System.IntPtr,System.Int32@,System.Int32)\"/> method before data is lost. You can set this value to 0 to indicate that the application does not read buffered data from the device. If the buffer size in the dwData member of the <see cref=\"T:SharpDX.DirectInput.PropertyInt\"/> structure is too large for the device to support it, then the largest possible buffer size is set.  However, this property always returns the buffer size set using the <see cref=\"M:SharpDX.DirectInput.Device.SetProperty(System.IntPtr,System.IntPtr)\"/> method, even if the buffer cannot be supported because it is too large.</dd> <dt><see cref=\"F:SharpDX.DirectInput.PropertyGuids.Calibration\"/></dt> <dd><p>Predefined property that allows the application to access the information that DirectInput uses to manipulate axes that require calibration. This property exists primarily for applications of the control panel type. Normal applications should not need to deal with calibration information.</p> <p>You can access the calibration mode property for a particular axis by setting the dwHow member of the <see cref=\"T:SharpDX.DirectInput.PropertyHeader\"/> structure to <see cref=\"F:SharpDX.DirectInput.PropertyHowType.Byid\"/> or to <see cref=\"F:SharpDX.DirectInput.PropertyHowType.Byoffset\"/> and setting the dwObj member to the object ID or offset, respectively. </p> <p>Control panel applications that set new calibration data must also invoke the IDirectInputJoyConfig::SendNotify method to notify other applications of the change in calibration. For more information about IDirectInputJoyConfig::SendNotify, see the DirectInput Driver Development Kit (DDK). </p></dd> <dt><see cref=\"F:SharpDX.DirectInput.PropertyGuids.Calibrationmode\"/></dt> <dd>For use by device drivers; not used by applications.</dd> <dt><see cref=\"F:SharpDX.DirectInput.PropertyGuids.Cpoints\"/></dt> <dd>This property is unsupported. Retrieves calibration points used for the adjustment of incoming raw data as a DIPROPCPOINTS structure.</dd> <dt><see cref=\"F:SharpDX.DirectInput.PropertyGuids.Deadzone\"/></dt> <dd>Retrieves a value for the dead zone of a joystick, in the range from 0 through 10,000, where 0 indicates that there is no dead zone, 5,000 indicates that the dead zone extends over 50 percent of the physical range of the axis on both sides of center, and 10,000 indicates that the entire physical range of the axis is dead. When the axis is within the dead zone, it is reported as being at the center of its range.</dd> <dt><see cref=\"F:SharpDX.DirectInput.PropertyGuids.Ffgain\"/></dt> <dd>Retrieves the gain of the device. This property always returns <see cref=\"F:SharpDX.DirectInput.ResultCode.Ok\"/> even if the device does not support force feedback.  See <see cref=\"M:SharpDX.DirectInput.Device.SetProperty(System.IntPtr,System.IntPtr)\"/> for more information.</dd> <dt><see cref=\"F:SharpDX.DirectInput.PropertyGuids.Ffload\"/></dt> <dd>Retrieves the memory load for the device. This setting applies to the entire device, rather than to any particular object, so the  dwHow member of the associated <see cref=\"T:SharpDX.DirectInput.PropertyInt\"/> structure must be <see cref=\"F:SharpDX.DirectInput.PropertyHowType.Device\"/>. The retrieved value is in the range from 0 through 100, indicating the percentage of device memory in use. The device must be acquired in exclusive mode. If it is not, the method will fail with a return value of <see cref=\"F:SharpDX.DirectInput.ResultCode.NotExclusiveAcquired\"/>.</dd> <dt><see cref=\"F:SharpDX.DirectInput.PropertyGuids.GetPortdisplayname\"/></dt> <dd>Retrieves the human-readable display name of the port to which this device is connected. Not generally used by applications. </dd> <dt><see cref=\"F:SharpDX.DirectInput.PropertyGuids.Granularity\"/></dt> <dd>Retrieves the input granularity. Granularity represents the smallest distance over which the object reports movement. Most axis objects have a granularity of one; that is, all values are possible. Some axes have a larger granularity. For example, the wheel axis on a mouse can have a granularity of 20; that is, all reported changes in position are multiples of 20. In other words, when the user turns the wheel slowly, the device reports a position of 0, then 20, then 40, and so on. This is a read-only property.</dd> <dt><see cref=\"F:SharpDX.DirectInput.PropertyGuids.Guidandpath\"/></dt> <dd>Retrieves the class <see cref=\"T:System.Guid\"/> and device interface (path) for the device. This property lets advanced applications perform operations on a human interface device that are not supported by DirectInput. For more information, see the <see cref=\"T:SharpDX.DirectInput.PropertyGuidAndPath\"/> structure.</dd> <dt><see cref=\"F:SharpDX.DirectInput.PropertyGuids.InstanceName\"/></dt> <dd>Retrieves the friendly instance name of the device. For more information, see <see cref=\"M:SharpDX.DirectInput.Device.SetProperty(System.IntPtr,System.IntPtr)\"/>.</dd> <dt><see cref=\"F:SharpDX.DirectInput.PropertyGuids.Joystickid\"/></dt> <dd>Retrieves the instance number of a joystick. This property is not implemented for the mouse or keyboard.</dd> <dt><see cref=\"F:SharpDX.DirectInput.PropertyGuids.Keyname\"/></dt> <dd>Retrieves the localized key name for a keyboard key, as a <see cref=\"T:SharpDX.DirectInput.PropertyString\"/>. Using this property on devices other than a keyboard will return unexpected names. </dd> <dt><see cref=\"F:SharpDX.DirectInput.PropertyGuids.LogicalRange\"/></dt> <dd>Retrieves the range of the raw data returned for axes on a human interface device. Devices can return negative values.</dd> <dt><see cref=\"F:SharpDX.DirectInput.PropertyGuids.Physicalrange\"/></dt> <dd>Retrieves the range of data for axes as suggested by the manufacturer of a human interface device. Values can be negative. Normally DirectInput returns values from 0 through 0xFFFF, but the range can be made to conform to the manufacturer's suggested range by using <see cref=\"F:SharpDX.DirectInput.PropertyGuids.Range\"/>.</dd> <dt><see cref=\"F:SharpDX.DirectInput.PropertyGuids.Productname\"/></dt> <dd>Retrieves the friendly product name of the device. For more information, see <see cref=\"M:SharpDX.DirectInput.Device.SetProperty(System.IntPtr,System.IntPtr)\"/>.</dd> <dt><see cref=\"F:SharpDX.DirectInput.PropertyGuids.Range\"/></dt> <dd>Retrieves the range of values an object can possibly report. For some devices, this is a read-only property.</dd> <dt><see cref=\"F:SharpDX.DirectInput.PropertyGuids.Saturation\"/></dt> <dd>Retrieves a value for the saturation zones of a joystick, in the range from 0 through 10,000. The saturation level is the point at which the axis is considered to be at its most extreme position. For example, if the saturation level is set to 9,500, the axis reaches the extreme of its range when it has moved 95 percent of the physical distance from its center position (or from the dead zone).</dd> <dt><see cref=\"F:SharpDX.DirectInput.PropertyGuids.Scancode\"/></dt> <dd>Retrieves the scan code for a keyboard key, as a <see cref=\"T:SharpDX.DirectInput.PropertyInt\"/>. If successful, <see cref=\"F:SharpDX.Result.Ok\"/> is returned.  E_FAIL is returned if the property cannot resolve specialized keys on USB keyboards because they do not exist in scan code form.   For all other failures, E_INVALIDARG is returned.</dd> <dt><see cref=\"F:SharpDX.DirectInput.PropertyGuids.Typename\"/></dt> <dd>Predefined property that retrieves the type name of a device. For most game controllers, this is the registry key name under REGSTR_PATH_JOYOEM from which static device settings can be retrieved, but predefined joystick types have special names consisting of a number sign (&amp;Sharp;) followed by a character dependent on the type. This value might not be available for all devices.</dd> <dt><see cref=\"F:SharpDX.DirectInput.PropertyGuids.Username\"/></dt> <dd>Retrieves the user name for a user currently assigned to a device, as a <see cref=\"T:SharpDX.DirectInput.PropertyString\"/>. User names are set by calling <see cref=\"M:SharpDX.DirectInput.Device.SetActionMap(SharpDX.DirectInput.ActionFormat@,System.String,System.Int32)\"/>. If no user name is set, the method returns S_FALSE.</dd> <dt><see cref=\"F:SharpDX.DirectInput.PropertyGuids.Vidpid\"/></dt> <dd>Read-only device property that retrieves the vendor identity (ID) and product ID of a HID device. This property is of type <see cref=\"T:SharpDX.DirectInput.PropertyInt\"/> and contains both values. These two WORD values are combined in the dwData member of the <see cref=\"T:SharpDX.DirectInput.PropertyInt\"/> structure.  See Examples.  This property applies to the entire device, rather than to any particular object, so the dwHow member of the <see cref=\"T:SharpDX.DirectInput.PropertyHeader\"/> structure must be set to <see cref=\"F:SharpDX.DirectInput.PropertyHowType.Device\"/>.</dd> </dl> </dd></param>\t\n            <param name=\"arg1\"><dd> Address of the <see cref=\"T:SharpDX.DirectInput.PropertyHeader\"/> portion of a larger property-dependent structure that contains the <see cref=\"T:SharpDX.DirectInput.PropertyHeader\"/> structure as a member. The following structures are used for properties: <ul> <li><p><see cref=\"T:SharpDX.DirectInput.PropertyInt\"/> is used for properties represented by a single numerical value.</p></li> <li><p><see cref=\"T:SharpDX.DirectInput.PropertyGuidAndPath\"/> is used for <see cref=\"F:SharpDX.DirectInput.PropertyGuids.Guidandpath\"/>.</p></li> <li><p><see cref=\"T:SharpDX.DirectInput.PropertyRange\"/> is used for properties represented by a pair of numerical values. Currently, the only such property is <see cref=\"F:SharpDX.DirectInput.PropertyGuids.Range\"/>.</p></li> <li><p><see cref=\"T:SharpDX.DirectInput.PropertyString\"/> is used for string properties.</p></li></ul> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.DirectInput.ResultCode.Ok\"/> or S_FALSE. If the method fails, the return value can be one of the following error values: <see cref=\"F:SharpDX.DirectInput.ResultCode.InvalidParam\"/>, <see cref=\"F:SharpDX.DirectInput.ResultCode.NotExclusiveAcquired\"/>, <see cref=\"F:SharpDX.DirectInput.ResultCode.NotInitialized\"/>, <see cref=\"F:SharpDX.DirectInput.ResultCode.ObjectNotFound\"/>, <see cref=\"F:SharpDX.DirectInput.ResultCode.Unsupported\"/>.</p></returns>\t\n            <remarks>\t\n            <p>If rguidProp is set to <see cref=\"F:SharpDX.DirectInput.PropertyGuids.Appdata\"/>, the dwHow member of the <see cref=\"T:SharpDX.DirectInput.PropertyHeader\"/> structure should only be set to <see cref=\"F:SharpDX.DirectInput.PropertyHowType.Byusage\"/> when getting information about input controls, such as buttons or axes. Setting <see cref=\"F:SharpDX.DirectInput.PropertyHowType.Byusage\"/> for other device objects such as a physical interface device (PID) or LED devices can lead to unpredictable results.</p> <p>S_FALSE is always returned when <see cref=\"M:SharpDX.DirectInput.Device.GetProperty(System.IntPtr,System.IntPtr)\"/> is called with rguidProp set to <see cref=\"F:SharpDX.DirectInput.PropertyGuids.GetPortdisplayname\"/>, even if the method succeeds. </p> <p>The scan codes reported in Microsoft DirectX 8.1 are different from the ones reported in DirectX 8.0.  In DirectX 8.0, the property actually reported the single byte <see cref=\"F:SharpDX.DirectInput.Key.W\"/>* constant associated with the key, not the scan code.  In DirectX 8.1 and later releases, the property reports the make scan code as would be reported by a PS/2 keyboard.  In some cases, scan codes are multiple bytes, in which case the scan code bytes are ordered with the first byte in the least significant byte of the DWORD retrieved by the property. </p>  Example <p>The following C example shows how to obtain the value of the <see cref=\"F:SharpDX.DirectInput.PropertyGuids.BufferSize\"/> property.</p> <pre> <see cref=\"T:SharpDX.DirectInput.PropertyInt\"/> dipdw;  // <see cref=\"T:SharpDX.DirectInput.PropertyInt\"/> contains a <see cref=\"T:SharpDX.DirectInput.PropertyHeader\"/> structure. \t\n            <see cref=\"T:SharpDX.Result\"/> hr; \t\n            dipdw.diph.dwSize       = sizeof(<see cref=\"T:SharpDX.DirectInput.PropertyInt\"/>); \t\n            dipdw.diph.dwHeaderSize = sizeof(<see cref=\"T:SharpDX.DirectInput.PropertyHeader\"/>); \t\n            dipdw.diph.dwObj        = 0; // device property \t\n            dipdw.diph.dwHow        = <see cref=\"F:SharpDX.DirectInput.PropertyHowType.Device\"/>;  hr = idirectinputdevice9_GetProperty(pdid, <see cref=\"F:SharpDX.DirectInput.PropertyGuids.BufferSize\"/>, &amp;dipdw.diph); \t\n            if (SUCCEEDED(hr)) {  // The dipdw.dwData member contains the buffer size. \t\n            } \t\n            </pre> <p>The following example shows how to extract the two WORD values from the dwData member of the <see cref=\"T:SharpDX.DirectInput.PropertyInt\"/> structure using the <see cref=\"F:SharpDX.DirectInput.PropertyGuids.Vidpid\"/> property:</p> <pre> wVendorID  = LOWORD(<see cref=\"T:SharpDX.DirectInput.PropertyInt\"/>.dwData);\t\n            wProductID = HIWORD(<see cref=\"T:SharpDX.DirectInput.PropertyInt\"/>.dwData);\t\n            </pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectInputDevice8W::GetProperty']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.idirectinputdevice8.idirectinputdevice8.getproperty</msdn-id>\t\n            <unmanaged>HRESULT IDirectInputDevice8W::GetProperty([In] const void&amp; arg0,[In] void* arg1)</unmanaged>\t\n            <unmanaged-short>IDirectInputDevice8W::GetProperty</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectInput.Device.SetProperty(System.IntPtr,System.IntPtr)\">\n            <summary>\t\n            Sets properties that define the device behavior. These properties include input buffer size and axis mode.\t\n            </summary>\t\n            <param name=\"arg0\"><dd> Reference to (C++) or address of (C) the globally unique identifier (<see cref=\"T:System.Guid\"/>) identifying the property to be set. This can be one of the predefined values, or a reference to a <see cref=\"T:System.Guid\"/> that identifies the property. The following property values are predefined for an input device:  <dl> <dt><see cref=\"F:SharpDX.DirectInput.PropertyGuids.Appdata\"/></dt> <dd>Sets the application-defined value associated with an in-game action, as a  <see cref=\"T:SharpDX.DirectInput.PropertyPointer\"/>. </dd> <dt><see cref=\"F:SharpDX.DirectInput.PropertyGuids.Autocenter\"/></dt> <dd><p>Specifies whether device objects are self centering. This setting applies to the entire device, rather than to any particular object, so the dwHow member of the associated <see cref=\"T:SharpDX.DirectInput.PropertyInt\"/> structure must be <see cref=\"F:SharpDX.DirectInput.PropertyHowType.Device\"/>.</p> <p>The dwData member can be one of the following values. </p> <p>DIPROPAUTOCENTER_OFF: The device should not automatically center when the user releases the device. An application that uses force feedback should disable autocentering before playing effects. </p> <p>DIPROPAUTOCENTER_ON: The device should automatically center when the user releases the device. </p> <p>Not all devices support the autocenter property. </p></dd> <dt><see cref=\"F:SharpDX.DirectInput.PropertyGuids.Axismode\"/></dt> <dd>Sets the axis mode. The value being set (<see cref=\"F:SharpDX.DirectInput.DeviceAxisMode.Absolute\"/> or <see cref=\"F:SharpDX.DirectInput.DeviceAxisMode.Relative\"/>) must be specified in the  dwData member of the associated <see cref=\"T:SharpDX.DirectInput.PropertyInt\"/> structure. See the description of the  pdiph parameter for more information.  This setting applies to the entire device, so the  dwHow member of the associated <see cref=\"T:SharpDX.DirectInput.PropertyInt\"/> structure must be set to <see cref=\"F:SharpDX.DirectInput.PropertyHowType.Device\"/>. </dd> <dt><see cref=\"F:SharpDX.DirectInput.PropertyGuids.BufferSize\"/></dt> <dd>Sets the input buffer size. The value being set must be specified in the dwData member of the associated <see cref=\"T:SharpDX.DirectInput.PropertyInt\"/> structure. See Remarks. This setting applies to the entire device, so the dwHow member of the associated <see cref=\"T:SharpDX.DirectInput.PropertyInt\"/> structure must be set to <see cref=\"F:SharpDX.DirectInput.PropertyHowType.Device\"/>. </dd> <dt><see cref=\"F:SharpDX.DirectInput.PropertyGuids.Calibration\"/></dt> <dd><p>Predefined property that allows the application to access the information that DirectInput uses to manipulate axes that require calibration. This property exists primarily for applications of the control panel type. Normal applications should not need to deal with calibration information.</p> <p>You can access the calibration mode property for an axis by setting the dwHow member of the <see cref=\"T:SharpDX.DirectInput.PropertyHeader\"/> structure to <see cref=\"F:SharpDX.DirectInput.PropertyHowType.Byid\"/> or to <see cref=\"F:SharpDX.DirectInput.PropertyHowType.Byoffset\"/> and setting the dwObj member to the object ID or offset, respectively. </p> <p>Control panel applications that set new calibration data must also invoke the  IDirectInputJoyConfig::SendNotify method to notify other applications of the change in calibration. For more information about  IDirectInputJoyConfig::SendNotify, see the DirectX  Driver Development Kit (DDK). </p></dd> <dt><see cref=\"F:SharpDX.DirectInput.PropertyGuids.Calibrationmode\"/></dt> <dd><p>Enables the application to specify whether DirectInput  should retrieve calibrated or uncalibrated data from an axis. By default, DirectInput retrieves calibrated data.</p> <p>Setting the calibration mode for the entire device is equivalent to setting it for each axis individually. </p> <p>The dwData member of the <see cref=\"T:SharpDX.DirectInput.PropertyInt\"/> structure can be one of the following values: </p> <p>DIPROPCALIBRATIONMODE_COOKED: DirectInput should return data after applying calibration information. This is the default mode. </p> <p>DIPROPCALIBRATIONMODE_RAW: DirectInput should return raw, uncalibrated data. This mode is typically used only by applications of the control panel type. Note that raw data might include negative values. </p> <p>Setting a device into raw mode causes the dead zone, saturation, and range settings to be ignored. </p></dd> <dt><see cref=\"F:SharpDX.DirectInput.PropertyGuids.Cpoints\"/></dt> <dd>This property is unsupported. Sets calibration points used for the adjustment of incoming raw data. The values being set must be specified as CPOINT types in the cp array of the associated DIPROPCPOINTS structure. This setting applies to individual device objects, so the dwHow member of the associated <see cref=\"T:SharpDX.DirectInput.PropertyHeader\"/> structure must be set to either <see cref=\"F:SharpDX.DirectInput.PropertyHowType.Byid\"/> or <see cref=\"F:SharpDX.DirectInput.PropertyHowType.Byoffset\"/>. </dd> <dt><see cref=\"F:SharpDX.DirectInput.PropertyGuids.Deadzone\"/></dt> <dd>Sets the value for the dead zone of a joystick, in the range from 0 through 10,000, where 0 indicates that there is no dead zone, 5,000 indicates that the dead zone extends over 50 percent of the physical range of the axis on both sides of center, and 10,000 indicates that the entire physical range of the axis is dead. When the axis is within the dead zone, it is reported as being at the center of its range. This setting can be applied to either the entire device or to a specific axis. </dd> <dt><see cref=\"F:SharpDX.DirectInput.PropertyGuids.Ffgain\"/></dt> <dd>Sets the gain for the device. This setting applies to the entire device, rather than to any particular object, so the dwHow member of the associated <see cref=\"T:SharpDX.DirectInput.PropertyInt\"/> structure must be <see cref=\"F:SharpDX.DirectInput.PropertyHowType.Device\"/>. <p>The dwData member contains a gain value that is applied to all effects created on the device. The value is an integer in the range from 0 through 10,000, specifying the amount by which effect magnitudes should be scaled for the device. For example, a value of 10,000 indicates that all effect magnitudes are to be taken at face value. A value of 9,000 indicates that all effect magnitudes are to be reduced to 90 percent of their nominal magnitudes. </p> <p>DirectInput always checks the gain value before setting the gain property.  If the gain is outside of the range (less than zero or greater than 10,000), <see cref=\"M:SharpDX.DirectInput.Device.SetProperty(System.IntPtr,System.IntPtr)\"/> will return <see cref=\"F:SharpDX.DirectInput.ResultCode.InvalidParam\"/>.  Otherwise, if successful, it will return <see cref=\"F:SharpDX.DirectInput.ResultCode.Ok\"/>, even if the device does not support force feedback.</p> <p>Setting a gain value is useful when an application wants to scale down the strength of all force-feedback effects uniformly, based on user preferences. </p> <p>Unlike other properties, the gain can be set when the device is in an acquired state. </p></dd> <dt><see cref=\"F:SharpDX.DirectInput.PropertyGuids.InstanceName\"/></dt> <dd><p>This property exists for advanced applications that want to change the friendly instance name of a device (as returned in the tszInstanceName member of the <see cref=\"T:SharpDX.DirectInput.DeviceInstance\"/> structure) to distinguish it from similar devices that are plugged in simultaneously. Most applications should have no need to change the friendly name.</p> <p>This setting applies to the entire device, so the dwHow member of the associated <see cref=\"T:SharpDX.DirectInput.PropertyInt\"/> structure must be set to <see cref=\"F:SharpDX.DirectInput.PropertyHowType.Device\"/>. </p> <p>The pdiph parameter must be a reference to the diph member of a <see cref=\"T:SharpDX.DirectInput.PropertyString\"/> structure. </p></dd> <dt><see cref=\"F:SharpDX.DirectInput.PropertyGuids.Productname\"/></dt> <dd><p>This property exists for advanced applications that want to change the friendly product name of a device (as returned in the tszProductName member of the <see cref=\"T:SharpDX.DirectInput.DeviceInstance\"/> structure) to distinguish it from similar devices which are plugged in simultaneously. Most applications should have no need to change the friendly name.</p> <p>This setting applies to the entire device, so the dwHow member of the associated <see cref=\"T:SharpDX.DirectInput.PropertyInt\"/> structure must be set to <see cref=\"F:SharpDX.DirectInput.PropertyHowType.Device\"/>. </p> <p>The pdiph parameter must be a reference to the diph member of a <see cref=\"T:SharpDX.DirectInput.PropertyString\"/> structure. </p> <p>Setting the product name is only useful for changing the user-defined name of an analog joystick on Microsoft Windows 98, Windows 2000, and Windows Millennium Edition (Windows Me) computers. In other cases, attempting to set this property will still return <see cref=\"F:SharpDX.DirectInput.ResultCode.Ok\"/>.  However, the name is not stored in a location used by <see cref=\"M:SharpDX.DirectInput.Device.GetProperty(System.IntPtr,System.IntPtr)\"/>. </p> </dd> <dt><see cref=\"F:SharpDX.DirectInput.PropertyGuids.Range\"/></dt> <dd>Sets the range of values an object can possibly report. The minimum and maximum values are taken from the lmin and lmax members of the associated <see cref=\"T:SharpDX.DirectInput.PropertyRange\"/> structure. <p>For some devices, this is a read-only property. </p> <p>You cannot set a reverse range; lmax must be greater than lmin. </p></dd> <dt><see cref=\"F:SharpDX.DirectInput.PropertyGuids.Saturation\"/></dt> <dd>Sets the value for the saturation zones of a joystick, in the range from 0 through 10,000. The saturation level is the point at which the axis is considered to be at its most extreme position. For example, if the saturation level is set to 9,500, the axis reaches the extreme of its range when it has moved 95 percent of the physical distance from its center position (or from the dead zone). This setting can be applied to either the entire device or a specific axis. </dd> </dl> </dd></param>\t\n            <param name=\"arg1\"><dd> Address of the <see cref=\"T:SharpDX.DirectInput.PropertyHeader\"/> structure contained within the type-specific property structure.  </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.DirectInput.ResultCode.Ok\"/> or <see cref=\"F:SharpDX.DirectInput.ResultCode.PropertyHadNoEffect\"/>. If the method fails, the return value can be one of the following error values: <see cref=\"F:SharpDX.DirectInput.ResultCode.InvalidParam\"/><see cref=\"F:SharpDX.DirectInput.ResultCode.NotInitialized\"/>, <see cref=\"F:SharpDX.DirectInput.ResultCode.ObjectNotFound\"/>, <see cref=\"F:SharpDX.DirectInput.ResultCode.Unsupported\"/>.</p></returns>\t\n            <remarks>\t\n            <p>The buffer size determines the amount of data that the buffer can hold between calls to the <see cref=\"M:SharpDX.DirectInput.Device.GetDeviceData(System.Int32,System.IntPtr,System.Int32@,System.Int32)\"/> method before data is lost. This value may be set to 0 to indicate that the application does not read buffered data from the device. If the buffer size in the dwData member of the <see cref=\"T:SharpDX.DirectInput.PropertyInt\"/> structure is too large for the device to support it, then the largest possible buffer size is set. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectInputDevice8W::SetProperty']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.idirectinputdevice8.idirectinputdevice8.setproperty</msdn-id>\t\n            <unmanaged>HRESULT IDirectInputDevice8W::SetProperty([In] const void&amp; arg0,[In] const void* arg1)</unmanaged>\t\n            <unmanaged-short>IDirectInputDevice8W::SetProperty</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectInput.Device.Acquire\">\n            <summary>\t\n            Obtains access to the input device.\t\n            </summary>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.DirectInput.ResultCode.Ok\"/>, or S_FALSE if the device was already acquired. If the method fails, the return value can be one of the following error values: <see cref=\"F:SharpDX.DirectInput.ResultCode.InvalidParam\"/>, <see cref=\"F:SharpDX.DirectInput.ResultCode.NotInitialized\"/>, <see cref=\"F:SharpDX.DirectInput.ResultCode.OtherApplicationHasPriority\"/>.</p></returns>\t\n            <remarks>\t\n            <p>Before a device can be acquired, a data format must be set by using the <see cref=\"M:SharpDX.DirectInput.Device.SetDataFormat(SharpDX.DirectInput.DataFormat)\"/> method or <see cref=\"M:SharpDX.DirectInput.Device.SetActionMap(SharpDX.DirectInput.ActionFormat@,System.String,System.Int32)\"/> method. If the data format has not been set, <see cref=\"T:SharpDX.DirectInput.Device\"/> Interface returns <see cref=\"F:SharpDX.DirectInput.ResultCode.InvalidParam\"/>.</p> <p>Devices must be acquired before calling the <see cref=\"M:SharpDX.DirectInput.Device.GetDeviceState(System.Int32,System.IntPtr)\"/> or <see cref=\"M:SharpDX.DirectInput.Device.GetDeviceData(System.Int32,System.IntPtr,System.Int32@,System.Int32)\"/> methods for that device.</p> <p>Device acquisition does not use a reference count. Therefore, if an application calls the  <see cref=\"T:SharpDX.DirectInput.Device\"/> Interface method twice, then calls the <see cref=\"T:SharpDX.DirectInput.Device\"/> Interface method once, the device is unacquired.</p> <p>If <see cref=\"M:SharpDX.DirectInput.Device.BuildActionMap(SharpDX.DirectInput.ActionFormat@,System.String,System.Int32)\"/> succeeds but no actions have been mapped, a subsequent call to <see cref=\"M:SharpDX.DirectInput.Device.SetActionMap(SharpDX.DirectInput.ActionFormat@,System.String,System.Int32)\"/> will return <see cref=\"F:SharpDX.DirectInput.ResultCode.Ok\"/> but a call to <see cref=\"T:SharpDX.DirectInput.Device\"/> Interface will fail with <see cref=\"F:SharpDX.DirectInput.ResultCode.InvalidParam\"/>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectInputDevice8W::Acquire']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.idirectinputdevice8.idirectinputdevice8.acquire</msdn-id>\t\n            <unmanaged>HRESULT IDirectInputDevice8W::Acquire()</unmanaged>\t\n            <unmanaged-short>IDirectInputDevice8W::Acquire</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectInput.Device.Unacquire\">\n            <summary>\t\n            Releases access to the device.\t\n            </summary>\t\n            <returns><p>The return value is <see cref=\"F:SharpDX.DirectInput.ResultCode.Ok\"/> is the device was unacquired, or <see cref=\"F:SharpDX.DirectInput.ResultCode.NoEffect\"/> if the device was not in an acquired state.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectInputDevice8W::Unacquire']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.idirectinputdevice8.idirectinputdevice8.unacquire</msdn-id>\t\n            <unmanaged>HRESULT IDirectInputDevice8W::Unacquire()</unmanaged>\t\n            <unmanaged-short>IDirectInputDevice8W::Unacquire</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectInput.Device.GetDeviceState(System.Int32,System.IntPtr)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"arg0\">No documentation.</param>\t\n            <param name=\"arg1\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectInputDevice8W::GetDeviceState']/*\"/>\t\n            <unmanaged>HRESULT IDirectInputDevice8W::GetDeviceState([In] unsigned int arg0,[In] void* arg1)</unmanaged>\t\n            <unmanaged-short>IDirectInputDevice8W::GetDeviceState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectInput.Device.GetDeviceData(System.Int32,System.IntPtr,System.Int32@,System.Int32)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"arg0\">No documentation.</param>\t\n            <param name=\"arg1\">No documentation.</param>\t\n            <param name=\"arg2\">No documentation.</param>\t\n            <param name=\"arg3\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectInputDevice8W::GetDeviceData']/*\"/>\t\n            <unmanaged>HRESULT IDirectInputDevice8W::GetDeviceData([In] unsigned int arg0,[In, Buffer] void* arg1,[InOut] unsigned int* arg2,[In] unsigned int arg3)</unmanaged>\t\n            <unmanaged-short>IDirectInputDevice8W::GetDeviceData</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectInput.Device.SetDataFormat(SharpDX.DirectInput.DataFormat)\">\n            <summary>\t\n            Sets the data format for the DirectInput  device.\t\n            </summary>\t\n            <param name=\"arg0\"><dd> Address of a structure that describes the format of the data that the DirectInputDevice should return. An application can define its own <see cref=\"T:SharpDX.DirectInput.DataFormat\"/> structure or use one of the following predefined global variables: <ul> <li><p> c_dfDIKeyboard </p></li> <li><p> c_dfDIMouse </p></li> <li><p> c_dfDIMouse2 </p></li> <li><p> c_dfDIJoystick </p></li> <li><p> c_dfDIJoystick2 </p></li> </ul> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.DirectInput.ResultCode.Ok\"/>. If the method fails, the return value can be one of the following error values: <see cref=\"F:SharpDX.DirectInput.ResultCode.Acquired\"/>, <see cref=\"F:SharpDX.DirectInput.ResultCode.InvalidParam\"/>, <see cref=\"F:SharpDX.DirectInput.ResultCode.NotInitialized\"/>.</p></returns>\t\n            <remarks>\t\n            <p>The data format must be set before the device can be acquired by using the <see cref=\"T:SharpDX.DirectInput.Device\"/> Interface method. It is necessary to set the data format only once. The data format cannot be changed while the device is acquired.</p> <p>If the application is using action mapping, the data format is set instead by the call to <see cref=\"M:SharpDX.DirectInput.Device.SetActionMap(SharpDX.DirectInput.ActionFormat@,System.String,System.Int32)\"/>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectInputDevice8W::SetDataFormat']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.idirectinputdevice8.idirectinputdevice8.setdataformat</msdn-id>\t\n            <unmanaged>HRESULT IDirectInputDevice8W::SetDataFormat([In] const DIDATAFORMAT* arg0)</unmanaged>\t\n            <unmanaged-short>IDirectInputDevice8W::SetDataFormat</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectInput.Device.SetEventNotification(System.IntPtr)\">\n            <summary>\t\n            Specifies an event that is to be set when the device state changes. It is also used to turn off event notification.\t\n            </summary>\t\n            <param name=\"arg0\"><dd> Handle to the event that is to be set when the device state changes. DirectInput uses the Microsoft Win32 SetEvent function on the handle when the state of the device changes. If the hEvent parameter is <c>null</c>, notification is disabled.  <p>The application can create the handle as either a manual-reset or autoreset event by using the Win32 CreateEvent function. If the event is created as an autoreset event, the operating system automatically resets the event when a wait has been satisfied. If the event is created as a manual-reset event, it is the application's responsibility to call the Win32 ResetEvent function to reset it. DirectInput does not call the Win32 ResetEvent function for event notification handles. Most applications create the event as an automatic-reset event.</p> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.DirectInput.ResultCode.Ok\"/> or <see cref=\"F:SharpDX.DirectInput.ResultCode.PolledDevice\"/>. If the method fails, the return value can be one of the following error values: <see cref=\"F:SharpDX.DirectInput.ResultCode.Acquired\"/>, <see cref=\"F:SharpDX.DirectInput.ResultCode.HandleExists\"/>, <see cref=\"F:SharpDX.DirectInput.ResultCode.InvalidParam\"/>, <see cref=\"F:SharpDX.DirectInput.ResultCode.NotInitialized\"/>.</p></returns>\t\n            <remarks>\t\n            <p>A device state change is defined as any of the following: </p> <ul> <li><p>A change in the position of an axis </p></li> <li><p>A change in the state (pressed or released) of a button </p></li> <li><p>A change in the direction of a POV control </p></li> <li><p>Loss of acquisition </p></li> </ul> <p>Do not call the Win32 CloseHandle function on the event while it has been selected into a DirectInputDevice object. You must call this method with the hEvent parameter set to <c>null</c>   before closing the event handle.</p> <p>The event notification handle cannot be changed while the device is acquired. If the function is successful, the application can use the event handle like any other Win32 event handle.</p>  Examples <p>The following code example checks whether the handle is currently set without blocking:</p> <pre> dwResult = WaitForSingleObject(hEvent, 0); \t\n            if (dwResult == WAIT_OBJECT_0) {  // Event is set. If the event was created as  // autoreset, it has also been reset. \t\n            } \t\n            </pre> <p>The following code example illustrates blocking indefinitely until the event is set. This behavior is strongly discouraged because the thread does not respond to the system until the wait is satisfied. In particular, the thread does not respond to Microsoft Windows messages.</p> <pre> dwResult = WaitForSingleObject(hEvent, INFINITE); \t\n            if (dwResult == WAIT_OBJECT_0) {  // Event has been set. If the event was created  // as autoreset, it has also been reset. \t\n            }\t\n            </pre> <p>The following code example illustrates a typical application loop for a non-message-based application that uses two events:</p> <pre> HANDLE ah[2] = { hEvent1, hEvent2 };  while (TRUE) {  dwResult = MsgWaitForMultipleObjects(2, ah, <see cref=\"F:SharpDX.Result.False\"/>,  INFINITE, QS_ALLINPUT);  switch (dwResult) {  case WAIT_OBJECT_0:  // Event 1 has been set. If the event was created as // autoreset, it has also been reset.  ProcessInputEvent1();  break;  case WAIT_OBJECT_0 + 1:  // Event 2 has been set. If the event was created as // autoreset, it has also been reset.  ProcessInputEvent2();  break;  case WAIT_OBJECT_0 + 2:  // A Windows message has arrived. Process  // messages until there aren't any more.  while(PeekMessage(&amp;msg, <c>null</c>, 0, 0, PM_REMOVE)){  if (msg.message == WM_QUIT) {  goto exitapp;  }  TranslateMessage(&amp;msg);  DispatchMessage(&amp;msg);  }  break;  default:  // Unexpected error.  Panic();  break;  } \t\n            } \t\n            </pre> <p>The following code example illustrates a typical message loop for a message-based application that uses two events:</p> <pre> HANDLE ah[2] = { hEvent1, hEvent2 }; \t\n            DWORD dwWait = 0;  while (TRUE) {  dwResult = MsgWaitForMultipleObjects(2, ah, <see cref=\"F:SharpDX.Result.False\"/>,  dwWait, QS_ALLINPUT);  dwWait = 0;  switch (dwResult) {  case WAIT_OBJECT_0:  // Event 1 has been set. If the event was  // created as autoreset, it has also  // been reset.  ProcessInputEvent1();  break;  case WAIT_OBJECT_0 + 1:  // Event 2 has been set. If the event was  // created as autoreset, it has also  // been reset.  ProcessInputEvent2();  break;  case WAIT_OBJECT_0 + 2:  // A Windows message has arrived. Process  // messages until there aren't any more.  while(PeekMessage(&amp;msg, <c>null</c>, 0, 0, PM_REMOVE)){  if (msg.message == WM_QUIT) {  goto exitapp;  }  TranslateMessage(&amp;msg);  DispatchMessage(&amp;msg);  }  break;  default:  // No input or messages waiting.  // Do a frame of the game.  // If the game is idle, tell the next wait  // to wait indefinitely for input or a message.  if (!DoGame()) {  dwWait = INFINITE;  }  break;  } \t\n            } \t\n            </pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectInputDevice8W::SetEventNotification']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.idirectinputdevice8.idirectinputdevice8.seteventnotification</msdn-id>\t\n            <unmanaged>HRESULT IDirectInputDevice8W::SetEventNotification([In] void* arg0)</unmanaged>\t\n            <unmanaged-short>IDirectInputDevice8W::SetEventNotification</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectInput.Device.SetCooperativeLevel(System.IntPtr,SharpDX.DirectInput.CooperativeLevel)\">\n            <summary>\t\nRequests the cooperative level for this instance of the inpute device. The cooperative level determines how this instance of the device interacts with other instances of the device and the rest of the system.\t\n</summary><param name=\"arg0\">Window handle to be associated with the device. This parameter must be a valid top-level window handle that belongs to the process. The window associated with the device must not be destroyed while it is still active in a DirectInput device.</param><param name=\"arg1\">Flags that specify the cooperative level to associate with the input device.</param><returns>If the method succeeds, the return value is <see cref=\"F:SharpDX.DirectInput.ResultCode.Ok\"/>. If the method fails, a <see cref=\"T:SharpDX.SharpDXException\"/> is raised with the following error code values: <see cref=\"F:SharpDX.DirectInput.ResultCode.InvalidParam\"/>, <see cref=\"F:SharpDX.DirectInput.ResultCode.NotInitialized\"/>, <see cref=\"F:SharpDX.Result.Handle\"/>.</returns><remarks>\t\n<para>Applications cannot specify <see cref=\"F:SharpDX.DirectInput.CooperativeLevel.Foreground\"/> and <see cref=\"F:SharpDX.DirectInput.CooperativeLevel.Background\"/> at the same time. This apply as well to <see cref=\"F:SharpDX.DirectInput.CooperativeLevel.Exclusive\"/> and <see cref=\"F:SharpDX.DirectInput.CooperativeLevel.NonExclusive\"/>.</para>\n <para>When the mouse is acquired with exclusive access, the mouse pointer is removed from the screen until the device is unacquired.</para>\t\n <para>Applications that select the background exclusive mode cooperative level are not guaranteed to retain access to the device if another application requests exclusive access. When a background exclusive mode application loses access, calls to DirectInput device methods will fail and return <see cref=\"F:SharpDX.DirectInput.ResultCode.NotAcquired\"/>. The application can regain access to the device by manually unacquiring the device and reaquiring it.</para>\t\n <para>Applications must call this method before acquiring the device by using the <see cref=\"T:SharpDX.DirectInput.Device\"/> method.</para>\t\n</remarks>\t\n            <msdn-id>microsoft.directx_sdk.idirectinputdevice8.idirectinputdevice8.setcooperativelevel</msdn-id>\t\n            <unmanaged>HRESULT IDirectInputDevice8W::SetCooperativeLevel([In] HWND arg0,[In] DISCL arg1)</unmanaged>\t\n            <unmanaged-short>IDirectInputDevice8W::SetCooperativeLevel</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectInput.Device.GetObjectInfo(System.Int32,SharpDX.DirectInput.PropertyHowType)\">\n            <summary>\t\n            Retrieves information about a device object, such as a button or axis.\t\n            </summary>\t\n            <param name=\"arg1\"><dd> Value that identifies the object whose information is to be retrieved. The value set for this parameter depends on the value specified in the  dwHow parameter.  </dd></param>\t\n            <param name=\"arg2\"><dd> Value that specifies how the  dwObj parameter should be interpreted. The dwHow value can be one of the following:  <dl> <dt><see cref=\"F:SharpDX.DirectInput.PropertyHowType.Byoffset\"/></dt> <dd>The dwObj parameter is the offset into the current data format of the object whose information is being accessed. </dd> <dt><see cref=\"F:SharpDX.DirectInput.PropertyHowType.Byid\"/></dt> <dd>The dwObj parameter is the object type/instance identifier. This identifier is returned in the  dwType member of the <see cref=\"T:SharpDX.DirectInput.DeviceObjectInstance\"/> structure returned from a previous call to the <see cref=\"M:SharpDX.DirectInput.Device.EnumObjects(SharpDX.FunctionCallback,System.IntPtr,System.Int32)\"/> method. </dd> <dt><see cref=\"F:SharpDX.DirectInput.PropertyHowType.Byusage\"/></dt> <dd>The dwObj parameter contains the HID Usage Page and Usage values of the object, combined by the DIMAKEUSAGEDWORD macro.</dd> </dl> </dd></param>\t\n            <returns><dd> Address of a <see cref=\"T:SharpDX.DirectInput.DeviceObjectInstance\"/> structure to be filled with information about the object. The structure's  dwSize member must be initialized before this method is called.  </dd></returns>\t\n            <remarks>\t\n            <p>For compatibility with DirectX 3, it is also valid to pass a  DIDEVICEOBJECTINSTANCE_DX3 structure with the  dwSize member initialized to  sizeof(DIDEVICEOBJECTINSTANCE_DX3).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectInputDevice8W::GetObjectInfo']/*\"/>\t\n            <msdn-id>ee417906</msdn-id>\t\n            <unmanaged>HRESULT IDirectInputDevice8W::GetObjectInfo([Out] DIDEVICEOBJECTINSTANCEW* arg0,[In] unsigned int arg1,[In] DIPH arg2)</unmanaged>\t\n            <unmanaged-short>IDirectInputDevice8W::GetObjectInfo</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectInput.Device.GetInformation(SharpDX.DirectInput.DeviceInstance@)\">\n            <summary>\t\n            Obtains information about the device's identity.\t\n            </summary>\t\n            <param name=\"arg0\"><dd> Address of a <see cref=\"T:SharpDX.DirectInput.DeviceInstance\"/> structure to be filled with information about the device's identity. An application must initialize the structure's  dwSize member before calling this method.  </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.DirectInput.ResultCode.Ok\"/>. If the method fails, the return value can be one of the following error values: <see cref=\"F:SharpDX.DirectInput.ResultCode.InvalidParam\"/>, <see cref=\"F:SharpDX.DirectInput.ResultCode.NotInitialized\"/>, E_POINTER.</p></returns>\t\n            <remarks>\t\n            <p>For compatibility with DirectX 3, it is also valid to pass a  DIDEVICEINSTANCE_DX3 structure with the  dwSize member initialized to  sizeof(DIDEVICEINSTANCE_DX3).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectInputDevice8W::GetDeviceInfo']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.idirectinputdevice8.idirectinputdevice8.getdeviceinfo</msdn-id>\t\n            <unmanaged>HRESULT IDirectInputDevice8W::GetDeviceInfo([Out] DIDEVICEINSTANCEW* arg0)</unmanaged>\t\n            <unmanaged-short>IDirectInputDevice8W::GetDeviceInfo</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectInput.Device.RunControlPanel(System.IntPtr,System.Int32)\">\n            <summary>\t\n            Runs the DirectInput control panel associated with this device. If the device does not have a control panel associated with it, the default device control panel is launched.\t\n            </summary>\t\n            <param name=\"arg0\"><dd> Parent window handle. If this parameter is <c>null</c>  , no parent window is used.  </dd></param>\t\n            <param name=\"arg1\"><dd> Not currently used. Zero is the only valid value.  </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.DirectInput.ResultCode.Ok\"/>. If the method fails, the return value can be one of the following error values:</p><see cref=\"F:SharpDX.DirectInput.ResultCode.InvalidParam\"/><see cref=\"F:SharpDX.DirectInput.ResultCode.NotInitialized\"/></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectInputDevice8W::RunControlPanel']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.idirectinputdevice8.idirectinputdevice8.runcontrolpanel</msdn-id>\t\n            <unmanaged>HRESULT IDirectInputDevice8W::RunControlPanel([In] HWND arg0,[In] unsigned int arg1)</unmanaged>\t\n            <unmanaged-short>IDirectInputDevice8W::RunControlPanel</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectInput.Device.Initialize(System.IntPtr,System.Int32,System.Guid)\">\n            <summary>\t\n            Initializes a DirectInputDevice object. TheIDirectInput8::CreateDevicemethod automatically initializes a device after creating it; applications normally do not need to call this method.\t\n            </summary>\t\n            <param name=\"arg0\">No documentation.</param>\t\n            <param name=\"arg1\">No documentation.</param>\t\n            <param name=\"arg2\">No documentation.</param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.DirectInput.ResultCode.Ok\"/> or S_FALSE.  If the method returns S_FALSE, the device had already been initialized with the instance <see cref=\"T:System.Guid\"/> passed in though rGUID. If the method fails, the return value can be one of the following error values: <see cref=\"F:SharpDX.DirectInput.ResultCode.Acquired\"/>, <see cref=\"F:SharpDX.DirectInput.ResultCode.DeviceNotRegistered\"/>.</p></returns>\t\n            <remarks>\t\n            <p>If this method fails, the underlying object should be considered to be in an indeterminate state and must be reinitialized before use.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectInputDevice8W::Initialize']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.idirectinputdevice8.idirectinputdevice8.initialize</msdn-id>\t\n            <unmanaged>HRESULT IDirectInputDevice8W::Initialize([In] HINSTANCE arg0,[In] unsigned int arg1,[In] const GUID&amp; arg2)</unmanaged>\t\n            <unmanaged-short>IDirectInputDevice8W::Initialize</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectInput.Device.CreateEffect(System.Guid,SharpDX.DirectInput.EffectParameters,SharpDX.DirectInput.Effect,SharpDX.ComObject)\">\n            <summary>\t\n            Creates and initializes an instance of an effect identified by the effect globally unique identifier (<see cref=\"T:System.Guid\"/>).\t\n            </summary>\t\n            <param name=\"arg0\"><dd> Reference to (C++) or address of (C) the <see cref=\"T:System.Guid\"/> identifying the effect to be created. This can be a predefined effect <see cref=\"T:System.Guid\"/>, or it can be a <see cref=\"T:System.Guid\"/> obtained from <see cref=\"M:SharpDX.DirectInput.Device.EnumEffects(SharpDX.FunctionCallback,System.IntPtr,SharpDX.DirectInput.EffectType)\"/>. The following standard effect GUIDs are defined: <ul> <li><p><see cref=\"F:SharpDX.DirectInput.EffectGuid.ConstantForce\"/> </p></li> <li><p><see cref=\"F:SharpDX.DirectInput.EffectGuid.RampForce\"/> </p></li> <li><p><see cref=\"F:SharpDX.DirectInput.EffectGuid.Square\"/> </p></li> <li><p><see cref=\"F:SharpDX.DirectInput.EffectGuid.Sine\"/> </p></li> <li><p><see cref=\"F:SharpDX.DirectInput.EffectGuid.Triangle\"/> </p></li> <li><p><see cref=\"F:SharpDX.DirectInput.EffectGuid.SawtoothUp\"/> </p></li> <li><p><see cref=\"F:SharpDX.DirectInput.EffectGuid.SawtoothDown\"/> </p></li> <li><p><see cref=\"F:SharpDX.DirectInput.EffectGuid.Spring\"/> </p></li> <li><p><see cref=\"F:SharpDX.DirectInput.EffectGuid.Damper\"/> </p></li> <li><p><see cref=\"F:SharpDX.DirectInput.EffectGuid.Inertia\"/> </p></li> <li><p><see cref=\"F:SharpDX.DirectInput.EffectGuid.Friction\"/> </p></li> <li><p><see cref=\"F:SharpDX.DirectInput.EffectGuid.CustomForce\"/> </p></li> </ul> </dd></param>\t\n            <param name=\"arg1\"><dd> <see cref=\"T:SharpDX.DirectInput.EffectParameters\"/> structure that provides parameters for the created effect. This parameter is optional. If it is <c>null</c>, the effect object is created without parameters. The application must then call the <see cref=\"M:SharpDX.DirectInput.Effect.SetParameters(SharpDX.DirectInput.EffectParameters)\"/> method to set the parameters of the effect before it can download the effect.  </dd></param>\t\n            <param name=\"arg2\"><dd> Address of a variable to receive a reference to the  <see cref=\"T:SharpDX.DirectInput.Effect\"/> Interface interface if successful.  </dd></param>\t\n            <param name=\"arg3\"><dd> Controlling unknown for COM aggregation. The value is <c>null</c> if the interface is not aggregated. Most calling applications pass <c>null</c>.  </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.DirectInput.ResultCode.Ok\"/>. If the method fails, the return value can be one of the following error values: <see cref=\"F:SharpDX.DirectInput.ResultCode.DeviceFull\"/>, <see cref=\"F:SharpDX.DirectInput.ResultCode.DeviceNotRegistered\"/>,<see cref=\"F:SharpDX.DirectInput.ResultCode.InvalidParam\"/>, <see cref=\"F:SharpDX.DirectInput.ResultCode.NotInitialized\"/>.</p></returns>\t\n            <remarks>\t\n            <p>If the return value is <see cref=\"F:SharpDX.Result.Ok\"/>, the effect was created, and the parameters of the effect were updated, but the effect was not necessarily downloaded. For it to be downloaded, the device must be acquired in exclusive mode.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectInputDevice8W::CreateEffect']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.idirectinputdevice8.idirectinputdevice8.createeffect</msdn-id>\t\n            <unmanaged>HRESULT IDirectInputDevice8W::CreateEffect([In] const GUID&amp; arg0,[In] const DIEFFECT* arg1,[Out, Fast] IDirectInputEffect** arg2,[In] IUnknown* arg3)</unmanaged>\t\n            <unmanaged-short>IDirectInputDevice8W::CreateEffect</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectInput.Device.EnumEffects(SharpDX.FunctionCallback,System.IntPtr,SharpDX.DirectInput.EffectType)\">\n            <summary>\t\n            Enumerates all the effects supported by the force-feedback system on the device. The enumerated GUIDs can represent predefined effects, as well as effects peculiar to the device manufacturer.\t\n            </summary>\t\n            <param name=\"arg0\"><dd> Address of an application-defined callback function. The declaration of this function must conform to that of the DIEnumEffectsCallback prototype.  </dd></param>\t\n            <param name=\"arg1\"><dd> A 32-bit application-defined value to be passed to the callback function. This parameter can be any 32-bit type; it is declared as LPVOID for convenience.  </dd></param>\t\n            <param name=\"arg2\"><dd> Effect type filter. Use one of the DIEFT_* values to indicate the effect type to be enumerated, or <see cref=\"F:SharpDX.DirectInput.EffectType.All\"/> to enumerate all effect types. For a list of these values, see DIEffectInfo.  </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.DirectInput.ResultCode.Ok\"/>. If the method fails, the return value can be one of the following error values:</p><see cref=\"F:SharpDX.DirectInput.ResultCode.InvalidParam\"/><see cref=\"F:SharpDX.DirectInput.ResultCode.NotInitialized\"/></returns>\t\n            <remarks>\t\n            <p>If the callback stops the enumeration prematurely, the enumeration is considered to have succeeded.</p> <p>An application can use the dwEffType member of the DIEffectInfo structure to obtain general information about the effect, such as its type and which envelope and condition parameters are supported by the effect.</p> <p>To exploit an effect to its fullest, contact the device manufacturer to obtain information about the semantics of the effect and its effect-specific parameters.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectInputDevice8W::EnumEffects']/*\"/>\t\n            <msdn-id>ee417884</msdn-id>\t\n            <unmanaged>HRESULT IDirectInputDevice8W::EnumEffects([In] __function__stdcall* arg0,[In] void* arg1,[In] DIEFT arg2)</unmanaged>\t\n            <unmanaged-short>IDirectInputDevice8W::EnumEffects</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectInput.Device.GetEffectInfo(System.Guid)\">\n            <summary>\t\n            Obtains information about an effect.\t\n            </summary>\t\n            <param name=\"arg1\"><dd> Reference to (C++) or address of (C) the globally unique identifier (<see cref=\"T:System.Guid\"/>) identifying the effect for which information is being requested.  </dd></param>\t\n            <returns><dd> DIEffectInfo structure that receives information about the effect. The calling application must initialize the dwSize member of the structure before calling this method.  </dd></returns>\t\n            <remarks>\t\n            <table><tr><th>Note </th></tr><tr><td>If this method is called on an non-Force Feedback device, E_POINTER will be returned.</td></tr></table>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectInputDevice8W::GetEffectInfo']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.idirectinputdevice8.idirectinputdevice8.geteffectinfo</msdn-id>\t\n            <unmanaged>HRESULT IDirectInputDevice8W::GetEffectInfo([Out] DIEFFECTINFOW* arg0,[In] const GUID&amp; arg1)</unmanaged>\t\n            <unmanaged-short>IDirectInputDevice8W::GetEffectInfo</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectInput.Device.GetForceFeedbackState\">\n            <summary>\t\n            Retrieves the state of the device's force-feedback system.\t\n            </summary>\t\n            <returns><dd> Location for flags that describe the current state of the device's force-feedback system. <p>The value is a combination of the following constants. </p> <dl> <dt><see cref=\"F:SharpDX.DirectInput.ForceFeedbackState.ActuatorsOff\"/></dt> <dd>The device's force-feedback actuators are disabled. If the device cannot report the actuator state, neither <see cref=\"F:SharpDX.DirectInput.ForceFeedbackState.ActuatorsOn\"/> nor <see cref=\"F:SharpDX.DirectInput.ForceFeedbackState.ActuatorsOff\"/> is returned. </dd> <dt><see cref=\"F:SharpDX.DirectInput.ForceFeedbackState.ActuatorsOn\"/></dt> <dd>The device's force-feedback actuators are enabled. If the device cannot report the actuator state, neither <see cref=\"F:SharpDX.DirectInput.ForceFeedbackState.ActuatorsOn\"/> nor <see cref=\"F:SharpDX.DirectInput.ForceFeedbackState.ActuatorsOff\"/> is returned. </dd> <dt><see cref=\"F:SharpDX.DirectInput.ForceFeedbackState.DeviceLost\"/></dt> <dd>The device suffered an unexpected failure and is in an indeterminate state. It must be reset either by unacquiring and reacquiring the device, or by sending a <see cref=\"F:SharpDX.DirectInput.ForceFeedbackCommand.Reset\"/> command.  </dd> <dt><see cref=\"F:SharpDX.DirectInput.ForceFeedbackState.Empty\"/></dt> <dd>The device has no downloaded effects.  </dd> <dt><see cref=\"F:SharpDX.DirectInput.ForceFeedbackState.Paused\"/></dt> <dd>Playback of all active effects has been paused.  </dd> <dt><see cref=\"F:SharpDX.DirectInput.ForceFeedbackState.PowerOff\"/></dt> <dd>The force-feedback system is not currently available. If the device cannot report the power state, neither <see cref=\"F:SharpDX.DirectInput.ForceFeedbackState.PowerOn\"/> nor <see cref=\"F:SharpDX.DirectInput.ForceFeedbackState.PowerOff\"/> is returned.  </dd> <dt><see cref=\"F:SharpDX.DirectInput.ForceFeedbackState.PowerOn\"/></dt> <dd>Power to the force-feedback system is currently available. If the device cannot report the power state, neither <see cref=\"F:SharpDX.DirectInput.ForceFeedbackState.PowerOn\"/> nor <see cref=\"F:SharpDX.DirectInput.ForceFeedbackState.PowerOff\"/> is returned.  </dd> <dt><see cref=\"F:SharpDX.DirectInput.ForceFeedbackState.SafetySwitchOff\"/></dt> <dd>The safety switch is currently off; that is, the device cannot operate. If the device cannot report the state of the safety switch, neither <see cref=\"F:SharpDX.DirectInput.ForceFeedbackState.SafetySwitchOn\"/> nor <see cref=\"F:SharpDX.DirectInput.ForceFeedbackState.SafetySwitchOff\"/> is returned.  </dd> <dt><see cref=\"F:SharpDX.DirectInput.ForceFeedbackState.SafetySwitchOn\"/></dt> <dd>The safety switch is currently on; that is, the device can operate. If the device cannot report the state of the safety switch, neither <see cref=\"F:SharpDX.DirectInput.ForceFeedbackState.SafetySwitchOn\"/> nor <see cref=\"F:SharpDX.DirectInput.ForceFeedbackState.SafetySwitchOff\"/> is returned.  </dd> <dt><see cref=\"F:SharpDX.DirectInput.ForceFeedbackState.Stopped\"/></dt> <dd>No effects are playing, and the device is not paused.  </dd> <dt><see cref=\"F:SharpDX.DirectInput.ForceFeedbackState.UserSafetySwitchOff\"/></dt> <dd>The user force-feedback switch is currently off; that is, the device cannot operate. If the device cannot report the state of the user force-feedback switch, neither <see cref=\"F:SharpDX.DirectInput.ForceFeedbackState.UserSafetySwitchOn\"/> nor <see cref=\"F:SharpDX.DirectInput.ForceFeedbackState.UserSafetySwitchOff\"/> is returned. </dd> <dt><see cref=\"F:SharpDX.DirectInput.ForceFeedbackState.UserSafetySwitchOn\"/></dt> <dd>The user force-feedback switch is currently on; that is, the device can operate. If the device cannot report the state of the user force-feedback switch, neither <see cref=\"F:SharpDX.DirectInput.ForceFeedbackState.UserSafetySwitchOn\"/> nor <see cref=\"F:SharpDX.DirectInput.ForceFeedbackState.UserSafetySwitchOff\"/> is returned.   </dd> </dl> <p> Applications should ignore any flags that are not currently defined. </p> </dd></returns>\t\n            <remarks>\t\n            <p>The device must be acquired at the exclusive cooperative level for this method to succeed.</p> <p>The <see cref=\"F:SharpDX.DirectInput.ForceFeedbackState.Paused\"/> and <see cref=\"F:SharpDX.DirectInput.ForceFeedbackState.Stopped\"/> flags may not always be reported correctly because there is no mechanism for the drivers to report that they support these flags. </p> <table><tr><th>Note </th></tr><tr><td>When calling <see cref=\"M:SharpDX.DirectInput.Device.GetForceFeedbackState\"/>, it is possible for the state of the device returned not to match the expected state.  This might happen if commands recently sent by <see cref=\"M:SharpDX.DirectInput.Device.SendForceFeedbackCommand(SharpDX.DirectInput.ForceFeedbackCommand)\"/> are still pending.  Wait a short time and then check the device state again. </td></tr></table>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectInputDevice8W::GetForceFeedbackState']/*\"/>\t\n            <msdn-id>ee417902</msdn-id>\t\n            <unmanaged>HRESULT IDirectInputDevice8W::GetForceFeedbackState([Out] DIGFFS* arg0)</unmanaged>\t\n            <unmanaged-short>IDirectInputDevice8W::GetForceFeedbackState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectInput.Device.SendForceFeedbackCommand(SharpDX.DirectInput.ForceFeedbackCommand)\">\n            <summary>\t\n            Sends a command to the device's force-feedback system.\t\n            </summary>\t\n            <param name=\"arg0\"><dd> Single value indicating the desired change in state. The value can be one of the following.  <dl> <dt><see cref=\"F:SharpDX.DirectInput.ForceFeedbackCommand.Continue\"/></dt> <dd>Paused playback of all active effects is to be continued. It is an error to send this command when the device is not in a paused state. </dd> <dt><see cref=\"F:SharpDX.DirectInput.ForceFeedbackCommand.Pause\"/></dt> <dd>Playback of all active effects is to be paused. This command also stops the clock-on effects so that they continue playing to their full duration when restarted. <p>While the device is paused, new effects cannot be started, and existing ones cannot be modified. Doing so can cause the subsequent <see cref=\"F:SharpDX.DirectInput.ForceFeedbackCommand.Continue\"/> command to fail to perform properly. </p> <p>To abandon a pause and stop all effects, use the <see cref=\"F:SharpDX.DirectInput.ForceFeedbackCommand.StopAll\"/> or DISFCC_RESET commands. </p></dd> <dt><see cref=\"F:SharpDX.DirectInput.ForceFeedbackCommand.Reset\"/></dt> <dd>The device's force-feedback system is to be put in its startup state. All effects are removed from the device, are no longer valid, and must be re-created if they are to be used again. The device's actuators are disabled. </dd> <dt><see cref=\"F:SharpDX.DirectInput.ForceFeedbackCommand.SetActuatorsOff\"/></dt> <dd>The device's force-feedback actuators are to be disabled. While the actuators are off, effects continue to play but are ignored by the device. Using the analogy of a sound playback device, they are muted, rather than paused. </dd> <dt><see cref=\"F:SharpDX.DirectInput.ForceFeedbackCommand.SetActuatorsOn\"/></dt> <dd>The device's force-feedback actuators are to be enabled. </dd> <dt><see cref=\"F:SharpDX.DirectInput.ForceFeedbackCommand.StopAll\"/></dt> <dd>Playback of any active effects is to be stopped. All active effects are reset, but are still being maintained by the device and are still valid. If the device is in a paused state, that state is lost. This command is equivalent to calling the <see cref=\"M:SharpDX.DirectInput.Effect.Stop\"/> method for each effect playing. </dd> </dl> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.DirectInput.ResultCode.Ok\"/>. If the method fails, the return value can be one of the following error values: <see cref=\"F:SharpDX.DirectInput.ResultCode.InputLost\"/>, <see cref=\"F:SharpDX.DirectInput.ResultCode.InvalidParam\"/>, <see cref=\"F:SharpDX.DirectInput.ResultCode.NotExclusiveAcquired\"/>, <see cref=\"F:SharpDX.DirectInput.ResultCode.NotInitialized\"/>, <see cref=\"F:SharpDX.DirectInput.ResultCode.Unsupported\"/>.</p></returns>\t\n            <remarks>\t\n            <p>The device must be acquired at the exclusive cooperative level for this method to succeed.</p> <table><tr><th>Note </th></tr><tr><td>When calling <see cref=\"M:SharpDX.DirectInput.Device.GetForceFeedbackState\"/>, it is possible for the state of the device returned not to match the expected state.  This might happen if commands recently sent by <see cref=\"M:SharpDX.DirectInput.Device.SendForceFeedbackCommand(SharpDX.DirectInput.ForceFeedbackCommand)\"/> are still pending.  Wait a short time and then check the device state again. </td></tr></table>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectInputDevice8W::SendForceFeedbackCommand']/*\"/>\t\n            <msdn-id>ee417918</msdn-id>\t\n            <unmanaged>HRESULT IDirectInputDevice8W::SendForceFeedbackCommand([In] DISFFC arg0)</unmanaged>\t\n            <unmanaged-short>IDirectInputDevice8W::SendForceFeedbackCommand</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectInput.Device.EnumCreatedEffectObjects(SharpDX.FunctionCallback,System.IntPtr,System.Int32)\">\n            <summary>\t\n            Enumerates all the currently created effects for this device. Effects created byIDirectInputDevice8::CreateEffectare enumerated.\t\n            </summary>\t\n            <param name=\"arg0\">No documentation.</param>\t\n            <param name=\"arg1\">No documentation.</param>\t\n            <param name=\"arg2\">No documentation.</param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.DirectInput.ResultCode.Ok\"/>. If the method fails, the return value can be one of the following error values: <see cref=\"F:SharpDX.DirectInput.ResultCode.InvalidParam\"/>, <see cref=\"F:SharpDX.DirectInput.ResultCode.NotInitialized\"/>.</p></returns>\t\n            <remarks>\t\n            <p>The results are unpredictable if you create or destroy an effect while an enumeration is in progress. However, the callback function can safely release the effect passed to it.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectInputDevice8W::EnumCreatedEffectObjects']/*\"/>\t\n            <msdn-id>ee417882</msdn-id>\t\n            <unmanaged>HRESULT IDirectInputDevice8W::EnumCreatedEffectObjects([In] __function__stdcall* arg0,[In] void* arg1,[In] unsigned int arg2)</unmanaged>\t\n            <unmanaged-short>IDirectInputDevice8W::EnumCreatedEffectObjects</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectInput.Device.Escape(SharpDX.DirectInput.EffectEscape@)\">\n            <summary>\t\n            Sends a hardware-specific command to the force-feedback driver.\t\n            </summary>\t\n            <param name=\"arg0\"><dd> <see cref=\"T:SharpDX.DirectInput.EffectEscape\"/> structure that describes the command to be sent. On success, the cbOutBuffer member contains the number of bytes of the output buffer actually used.  </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.DirectInput.ResultCode.Ok\"/>. If the method fails, the return value can be one of the following error values: <see cref=\"F:SharpDX.DirectInput.ResultCode.DeviceFull\"/>, <see cref=\"F:SharpDX.DirectInput.ResultCode.NotInitialized\"/>.</p></returns>\t\n            <remarks>\t\n            <p>Other device-specific error codes are also possible. Ask the hardware manufacturer for details.</p> <p>Because each driver implements different escapes, it is the application's responsibility to ensure that it is sending the escape to the correct driver by comparing the value of the guidFFDriver member of the <see cref=\"T:SharpDX.DirectInput.DeviceInstance\"/> structure against the value the application is expecting.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectInputDevice8W::Escape']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.idirectinputdevice8.idirectinputdevice8.escape</msdn-id>\t\n            <unmanaged>HRESULT IDirectInputDevice8W::Escape([In] DIEFFESCAPE* arg0)</unmanaged>\t\n            <unmanaged-short>IDirectInputDevice8W::Escape</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectInput.Device.Poll\">\n            <summary>\t\n            Retrieves data from polled objects on a DirectInput device. If the device does not require polling, calling this method has no effect. If a device that requires polling is not polled periodically, no new data is received from the device. Calling this method causes DirectInput to update the device state, generate input events (if buffered data is enabled), and set notification events (if notification is enabled).\t\n            </summary>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.DirectInput.ResultCode.Ok\"/>, or <see cref=\"F:SharpDX.DirectInput.ResultCode.NoEffect\"/> if the device does not require polling. If the method fails, the return value can be one of the following error values: <see cref=\"F:SharpDX.DirectInput.ResultCode.InputLost\"/>, <see cref=\"F:SharpDX.DirectInput.ResultCode.NotAcquired\"/>, <see cref=\"F:SharpDX.DirectInput.ResultCode.NotInitialized\"/>.</p></returns>\t\n            <remarks>\t\n            <p>Before a device data can be polled, the data format must be set by using the <see cref=\"M:SharpDX.DirectInput.Device.SetDataFormat(SharpDX.DirectInput.DataFormat)\"/> or <see cref=\"M:SharpDX.DirectInput.Device.SetActionMap(SharpDX.DirectInput.ActionFormat@,System.String,System.Int32)\"/> method, and the device must be acquired by using the <see cref=\"T:SharpDX.DirectInput.Device\"/> Interface method.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectInputDevice8W::Poll']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.idirectinputdevice8.idirectinputdevice8.poll</msdn-id>\t\n            <unmanaged>HRESULT IDirectInputDevice8W::Poll()</unmanaged>\t\n            <unmanaged-short>IDirectInputDevice8W::Poll</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectInput.Device.SendDeviceData(System.Int32,SharpDX.DirectInput.ObjectData[],System.Int32@,System.Int32)\">\n            <summary>\t\n            Sends data to a device that accepts output.<table><tr><th>Note </th></tr><tr><td>There are no devices that accept output from <see cref=\"M:SharpDX.DirectInput.Device.SendDeviceData(System.Int32,SharpDX.DirectInput.ObjectData[],System.Int32@,System.Int32)\"/>.  See Remarks.</td></tr></table>\t\n            </summary>\t\n            <param name=\"arg0\">No documentation.</param>\t\n            <param name=\"arg1\">No documentation.</param>\t\n            <param name=\"arg2\">No documentation.</param>\t\n            <param name=\"arg3\">No documentation.</param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.DirectInput.ResultCode.Ok\"/>. If the method fails, the return value can be one of the following error values: <see cref=\"F:SharpDX.DirectInput.ResultCode.InputLost\"/>, <see cref=\"F:SharpDX.DirectInput.ResultCode.NotAcquired\"/>, <see cref=\"F:SharpDX.DirectInput.ResultCode.ReportFull\"/>, <see cref=\"F:SharpDX.DirectInput.ResultCode.Unplugged\"/>.</p></returns>\t\n            <remarks>\t\n            <p>Applications should not use <see cref=\"M:SharpDX.DirectInput.Device.SendDeviceData(System.Int32,SharpDX.DirectInput.ObjectData[],System.Int32@,System.Int32)\"/>.  Force Feedback is the recommended way to send data to a device.  If you want to send other data to a device, such as changing LED or internal device states, the HID application programming interface (API) is the recommended way.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectInputDevice8W::SendDeviceData']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.idirectinputdevice8.idirectinputdevice8.senddevicedata</msdn-id>\t\n            <unmanaged>HRESULT IDirectInputDevice8W::SendDeviceData([In] unsigned int arg0,[In, Buffer] const DIDEVICEOBJECTDATA* arg1,[InOut] unsigned int* arg2,[In] unsigned int arg3)</unmanaged>\t\n            <unmanaged-short>IDirectInputDevice8W::SendDeviceData</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectInput.Device.EnumEffectsInFile(System.String,SharpDX.FunctionCallback,System.IntPtr,SharpDX.DirectInput.EffectFileFlags)\">\n            <summary>\t\n            Enumerates all the effects in a file created by the Force Editor utility or another application using the same file format.\t\n            </summary>\t\n            <param name=\"arg0\"><dd> Name of the RIFF file.  </dd></param>\t\n            <param name=\"arg1\"><dd> Address of an application-defined callback function. The declaration of this function must conform to that of the DIEnumEffectsInFileCallback prototype.  </dd></param>\t\n            <param name=\"arg2\"><dd> Application-defined value to be passed to the callback function. This parameter can be any 32-bit type.  </dd></param>\t\n            <param name=\"arg3\"><dd> Can be <see cref=\"F:SharpDX.DirectInput.EffectFileFlags.None\"/> ( = 0) or one or both of the following values:  <dl> <dt><see cref=\"F:SharpDX.DirectInput.EffectFileFlags.IncludeNonStandard\"/></dt> <dd>Include effect types that are not defined by DirectInput. </dd> <dt><see cref=\"F:SharpDX.DirectInput.EffectFileFlags.ModidyIfNeeded\"/></dt> <dd>Instruct DirectInput to modify the authored effect, if necessary, so that it plays on the current device. For example, by default, an effect authored for two axes does not play on a single-axis device. Setting this flag allows the effect to play on a single axis. The parameters are modified in the <see cref=\"T:SharpDX.DirectInput.EffectParameters\"/> structure pointed to by the lpDiEffect member of the <see cref=\"T:SharpDX.DirectInput.EffectFile\"/> structure passed to the callback. </dd> </dl> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.DirectInput.ResultCode.Ok\"/>. If the method fails, the return value can be one of the following error values:</p><see cref=\"F:SharpDX.DirectInput.ResultCode.InvalidParam\"/><see cref=\"F:SharpDX.DirectInput.ResultCode.NotInitialized\"/></returns>\t\n            <remarks>\t\n            <p>If the callback stops the enumeration prematurely, the enumeration is considered to have succeeded.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectInputDevice8W::EnumEffectsInFile']/*\"/>\t\n            <msdn-id>ee417886</msdn-id>\t\n            <unmanaged>HRESULT IDirectInputDevice8W::EnumEffectsInFile([In] const wchar_t* arg0,[In] __function__stdcall* arg1,[In] void* arg2,[In] DIFEF arg3)</unmanaged>\t\n            <unmanaged-short>IDirectInputDevice8W::EnumEffectsInFile</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectInput.Device.WriteEffectToFile(System.String,System.Int32,SharpDX.DirectInput.EffectFile[],System.Int32)\">\n            <summary>\t\n            Saves information about one or more force-feedback effects to a file that can be read by usingIDirectInputDevice8::EnumEffectsInFile. This method is chiefly of interest to those wanting to write their own force-authoring applications.\t\n            </summary>\t\n            <param name=\"arg0\">No documentation.</param>\t\n            <param name=\"arg1\">No documentation.</param>\t\n            <param name=\"arg2\">No documentation.</param>\t\n            <param name=\"arg3\">No documentation.</param>\t\n            <returns><p>If the method succeeds, it returns <see cref=\"F:SharpDX.DirectInput.ResultCode.Ok\"/>. If it fails, the return value can be <see cref=\"F:SharpDX.DirectInput.ResultCode.InvalidParam\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectInputDevice8W::WriteEffectToFile']/*\"/>\t\n            <msdn-id>ee417933</msdn-id>\t\n            <unmanaged>HRESULT IDirectInputDevice8W::WriteEffectToFile([In] const wchar_t* arg0,[In] unsigned int arg1,[In, Buffer] DIFILEEFFECT* arg2,[In] unsigned int arg3)</unmanaged>\t\n            <unmanaged-short>IDirectInputDevice8W::WriteEffectToFile</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectInput.Device.BuildActionMap(SharpDX.DirectInput.ActionFormat@,System.String,System.Int32)\">\n            <summary>\t\n            Builds an action map for the device and retrieves information about it.\t\n            </summary>\t\n            <param name=\"arg0\"><dd> Address of a <see cref=\"T:SharpDX.DirectInput.ActionFormat\"/> structure that receives information about the action map.  </dd></param>\t\n            <param name=\"arg1\"><dd> Pointer to a string that specifies the name of the user for whom mapping is requested. When using ANSI compiler settings, pass <c>null</c> and DirectInput will assume the current user name. When using Unicode compiler settings, do not pass <c>null</c> because the mappings will not be saved. </dd></param>\t\n            <param name=\"arg2\"><dd> Flags to control the mapping. This can be one of the following values.  <dl> <dt>DIDBAM_DEFAULT</dt> <dd>Overwrite all mappings except application-specified mappings; that is, mappings that have the DIA_APPMAPPED flag in the <see cref=\"T:SharpDX.DirectInput.Action\"/> structure.</dd> <dt>DIDBAM_HWDEFAULTS</dt> <dd>Overwrite all mappings, including application-specified mappings. This flag is similar to DIDBAM_INITIALIZE, but automatically overrides user-mapped actions with the defaults specified by the device driver or DirectInput.</dd> <dt>DIDBAM_INITIALIZE</dt> <dd>Overwrite all mappings, including application-specified mappings.</dd> <dt>DIDBAM_PRESERVE</dt> <dd>Preserve current mappings assigned for this device or any other configured device.</dd> </dl> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.DirectInput.ResultCode.Ok\"/>, <see cref=\"F:SharpDX.DirectInput.ResultCode.NoEffect\"/>, or <see cref=\"F:SharpDX.DirectInput.ResultCode.WriteProtect\"/>&gt;. See Remarks. If the method fails, the return value can be one of the following error values: <see cref=\"F:SharpDX.DirectInput.ResultCode.InvalidParam\"/>, <see cref=\"F:SharpDX.DirectInput.ResultCode.MapFileFail\"/>.</p></returns>\t\n            <remarks>\t\n            <p>The method returns <see cref=\"F:SharpDX.DirectInput.ResultCode.NoEffect\"/> if no mappings were created for the device. For example, a keyboard or mouse will not provide mappings for genre-specific actions.</p> <p>If <see cref=\"F:SharpDX.DirectInput.ResultCode.InvalidParam\"/> is returned, one or more of the mappings was not valid. The  dwHow member of the <see cref=\"T:SharpDX.DirectInput.Action\"/> structure is set to DIAH_ERROR. The application can iterate through the action map to find and correct errors.</p> <p>If DIEFF_MAPFILEFAIL is returned, an error has occurred either reading the vendor supplied file for the device or reading or writing the user configuration file for the device.</p> <p><see cref=\"F:SharpDX.DirectInput.ResultCode.WriteProtect\"/>&gt; is returned if the mappings were not configurable. For example, the buttons on a voice controller cannot be reconfigured because each button causes a specific hardware action to occur. <see cref=\"F:SharpDX.DirectInput.ResultCode.WriteProtect\"/>&gt; overrides other success codes, so a check of the return codes will not reveal if any actions have been mapped.  </p> <p>If <see cref=\"M:SharpDX.DirectInput.Device.BuildActionMap(SharpDX.DirectInput.ActionFormat@,System.String,System.Int32)\"/> succeeds but no actions have been mapped, a subsequent call to <see cref=\"M:SharpDX.DirectInput.Device.SetActionMap(SharpDX.DirectInput.ActionFormat@,System.String,System.Int32)\"/> will return <see cref=\"F:SharpDX.DirectInput.ResultCode.Ok\"/> but a call to <see cref=\"T:SharpDX.DirectInput.Device\"/> Interface will fail with <see cref=\"F:SharpDX.DirectInput.ResultCode.InvalidParam\"/>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectInputDevice8W::BuildActionMap']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.idirectinputdevice8.idirectinputdevice8.buildactionmap</msdn-id>\t\n            <unmanaged>HRESULT IDirectInputDevice8W::BuildActionMap([In] DIACTIONFORMATW* arg0,[In] const wchar_t* arg1,[In] unsigned int arg2)</unmanaged>\t\n            <unmanaged-short>IDirectInputDevice8W::BuildActionMap</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectInput.Device.SetActionMap(SharpDX.DirectInput.ActionFormat@,System.String,System.Int32)\">\n            <summary>\t\n            Sets the data format for a device and maps application-defined actions to device objects. It also sets the buffer size for buffered data.\t\n            </summary>\t\n            <param name=\"arg0\"><dd> Address of a <see cref=\"T:SharpDX.DirectInput.ActionFormat\"/> structure containing information about the action map to be applied.  </dd></param>\t\n            <param name=\"arg1\"><dd> Unicode string that specifies the name of the user for which the action map is being set. A value of <c>null</c> specifies the user currently logged into the system.  </dd></param>\t\n            <param name=\"arg2\"><dd> DWORD value that specifies how the action map is applied. This can be one of the following values.  <dl> <dt>DIDSAM_DEFAULT</dt> <dd> Set the action map for this user. If the map differs from the current map, the new settings are saved to disk. </dd> <dt>DIDSAM_FORCESAVE</dt> <dd> Always save the configuration to disk. </dd> <dt>DIDSAM_NOUSER</dt> <dd> Reset user ownership for this device in the default configuration property sheet. Resetting user ownership does not remove the current action map. </dd> </dl> </dd></param>\t\n            <returns><p>If the method succeeds, the return value can be one of the following error values: <see cref=\"F:SharpDX.DirectInput.ResultCode.Ok\"/>, <see cref=\"F:SharpDX.DirectInput.ResultCode.SettingsNotSaved\"/>, or <see cref=\"F:SharpDX.DirectInput.ResultCode.WriteProtect\"/>. If the method fails, the return value can be one of the following error values: <see cref=\"F:SharpDX.DirectInput.ResultCode.Acquired\"/> or <see cref=\"F:SharpDX.DirectInput.ResultCode.InvalidParam\"/>, <see cref=\"F:SharpDX.DirectInput.ResultCode.SettingsNotSaved\"/>, <see cref=\"F:SharpDX.DirectInput.ResultCode.WriteProtect\"/>, <see cref=\"F:SharpDX.DirectInput.ResultCode.Acquired\"/>, <see cref=\"F:SharpDX.DirectInput.ResultCode.InvalidParam\"/>.</p></returns>\t\n            <remarks>\t\n            <p>This method provides the mechanism to change action-to-control mapping from the device defaults. An application must use this method to map its in-game actions to virtual controls.</p> <p>The user name passed to this method binds a set of action mappings for a device to a specific user. Settings are automatically saved to disk when they differ from the currently applied map. Applications that accept input from multiple users should be very careful when applying action maps to the system mouse or keyboard, as the action maps for each user may conflict.</p> <p>The method can be called only when the device is not acquired.</p> <p>If <see cref=\"M:SharpDX.DirectInput.Device.BuildActionMap(SharpDX.DirectInput.ActionFormat@,System.String,System.Int32)\"/> succeeds but no actions have been mapped, a subsequent call to <see cref=\"M:SharpDX.DirectInput.Device.SetActionMap(SharpDX.DirectInput.ActionFormat@,System.String,System.Int32)\"/> will return <see cref=\"F:SharpDX.DirectInput.ResultCode.Ok\"/> but a call to <see cref=\"T:SharpDX.DirectInput.Device\"/> Interface will fail with <see cref=\"F:SharpDX.DirectInput.ResultCode.InvalidParam\"/>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectInputDevice8W::SetActionMap']/*\"/>\t\n            <msdn-id>ee417919</msdn-id>\t\n            <unmanaged>HRESULT IDirectInputDevice8W::SetActionMap([In] DIACTIONFORMATW* arg0,[In] const wchar_t* arg1,[In] unsigned int arg2)</unmanaged>\t\n            <unmanaged-short>IDirectInputDevice8W::SetActionMap</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectInput.Device.GetImageInfo(SharpDX.DirectInput.DeviceImageHeader)\">\n            <summary>\t\n            Retrieves information about a device image for use in a configuration property sheet.\t\n            </summary>\t\n            <param name=\"arg0\"><dd> Address of a <see cref=\"T:SharpDX.DirectInput.DeviceImageHeader\"/> structure that receives information about the device image.  </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.DirectInput.ResultCode.Ok\"/>. If the method fails, the return value can be one of the following error values: <see cref=\"F:SharpDX.DirectInput.ResultCode.InvalidParam\"/>, <see cref=\"F:SharpDX.DirectInput.ResultCode.MapFileFail\"/>, <see cref=\"F:SharpDX.DirectInput.ResultCode.MoreData\"/>, <see cref=\"F:SharpDX.DirectInput.ResultCode.NotInitialized\"/>, <see cref=\"F:SharpDX.DirectInput.ResultCode.ObjectNotFound\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectInputDevice8W::GetImageInfo']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.idirectinputdevice8.idirectinputdevice8.getimageinfo</msdn-id>\t\n            <unmanaged>HRESULT IDirectInputDevice8W::GetImageInfo([InOut] DIDEVICEIMAGEINFOHEADERW* arg0)</unmanaged>\t\n            <unmanaged-short>IDirectInputDevice8W::GetImageInfo</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.DirectInput.Device.Properties\">\n            <summary>\n            Gets the device properties.\n            </summary>\n            <value>The device properties.</value>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.Device.CreatedEffects\">\n            <summary>\n            Gets the created effects.\n            </summary>\n            <value>The created effects.</value>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.Device.Capabilities\">\n            <summary>\t\n            Obtains the capabilities of the DirectInputDevice object.\t\n            </summary>\t\n            <remarks>\t\n            <p>For compatibility with DirectX 3, it is also valid to pass a  DIDEVCAPS_DX3 structure with the  dwSize member initialized to  sizeof(DIDEVCAPS_DX3). </p> <p>The number of objects returned in the <see cref=\"T:SharpDX.DirectInput.Capabilities\"/> structure is the maximum number of objects that could be enumerated.  However, all of these objects are not necessarily returned during a call to <see cref=\"M:SharpDX.DirectInput.Device.EnumObjects(SharpDX.FunctionCallback,System.IntPtr,System.Int32)\"/>.  </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectInputDevice8W::GetCapabilities']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.idirectinputdevice8.idirectinputdevice8.getcapabilities</msdn-id>\t\n            <unmanaged>GetCapabilities</unmanaged>\t\n            <unmanaged-short>GetCapabilities</unmanaged-short>\t\n            <unmanaged>HRESULT IDirectInputDevice8W::GetCapabilities([Out] DIDEVCAPS* arg0)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.Device.DataFormat\">\n            <summary>\t\n            Sets the data format for the DirectInput  device.\t\n            </summary>\t\n            <remarks>\t\n            <p>The data format must be set before the device can be acquired by using the <see cref=\"T:SharpDX.DirectInput.Device\"/> Interface method. It is necessary to set the data format only once. The data format cannot be changed while the device is acquired.</p> <p>If the application is using action mapping, the data format is set instead by the call to <see cref=\"M:SharpDX.DirectInput.Device.SetActionMap(SharpDX.DirectInput.ActionFormat@,System.String,System.Int32)\"/>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectInputDevice8W::SetDataFormat']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.idirectinputdevice8.idirectinputdevice8.setdataformat</msdn-id>\t\n            <unmanaged>SetDataFormat</unmanaged>\t\n            <unmanaged-short>SetDataFormat</unmanaged-short>\t\n            <unmanaged>HRESULT IDirectInputDevice8W::SetDataFormat([In] const DIDATAFORMAT* arg0)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.Device.EventNotification\">\n            <summary>\t\n            Specifies an event that is to be set when the device state changes. It is also used to turn off event notification.\t\n            </summary>\t\n            <remarks>\t\n            <p>A device state change is defined as any of the following: </p> <ul> <li><p>A change in the position of an axis </p></li> <li><p>A change in the state (pressed or released) of a button </p></li> <li><p>A change in the direction of a POV control </p></li> <li><p>Loss of acquisition </p></li> </ul> <p>Do not call the Win32 CloseHandle function on the event while it has been selected into a DirectInputDevice object. You must call this method with the hEvent parameter set to <c>null</c>   before closing the event handle.</p> <p>The event notification handle cannot be changed while the device is acquired. If the function is successful, the application can use the event handle like any other Win32 event handle.</p>  Examples <p>The following code example checks whether the handle is currently set without blocking:</p> <pre> dwResult = WaitForSingleObject(hEvent, 0); \t\n            if (dwResult == WAIT_OBJECT_0) {  // Event is set. If the event was created as  // autoreset, it has also been reset. \t\n            } \t\n            </pre> <p>The following code example illustrates blocking indefinitely until the event is set. This behavior is strongly discouraged because the thread does not respond to the system until the wait is satisfied. In particular, the thread does not respond to Microsoft Windows messages.</p> <pre> dwResult = WaitForSingleObject(hEvent, INFINITE); \t\n            if (dwResult == WAIT_OBJECT_0) {  // Event has been set. If the event was created  // as autoreset, it has also been reset. \t\n            }\t\n            </pre> <p>The following code example illustrates a typical application loop for a non-message-based application that uses two events:</p> <pre> HANDLE ah[2] = { hEvent1, hEvent2 };  while (TRUE) {  dwResult = MsgWaitForMultipleObjects(2, ah, <see cref=\"F:SharpDX.Result.False\"/>,  INFINITE, QS_ALLINPUT);  switch (dwResult) {  case WAIT_OBJECT_0:  // Event 1 has been set. If the event was created as // autoreset, it has also been reset.  ProcessInputEvent1();  break;  case WAIT_OBJECT_0 + 1:  // Event 2 has been set. If the event was created as // autoreset, it has also been reset.  ProcessInputEvent2();  break;  case WAIT_OBJECT_0 + 2:  // A Windows message has arrived. Process  // messages until there aren't any more.  while(PeekMessage(&amp;msg, <c>null</c>, 0, 0, PM_REMOVE)){  if (msg.message == WM_QUIT) {  goto exitapp;  }  TranslateMessage(&amp;msg);  DispatchMessage(&amp;msg);  }  break;  default:  // Unexpected error.  Panic();  break;  } \t\n            } \t\n            </pre> <p>The following code example illustrates a typical message loop for a message-based application that uses two events:</p> <pre> HANDLE ah[2] = { hEvent1, hEvent2 }; \t\n            DWORD dwWait = 0;  while (TRUE) {  dwResult = MsgWaitForMultipleObjects(2, ah, <see cref=\"F:SharpDX.Result.False\"/>,  dwWait, QS_ALLINPUT);  dwWait = 0;  switch (dwResult) {  case WAIT_OBJECT_0:  // Event 1 has been set. If the event was  // created as autoreset, it has also  // been reset.  ProcessInputEvent1();  break;  case WAIT_OBJECT_0 + 1:  // Event 2 has been set. If the event was  // created as autoreset, it has also  // been reset.  ProcessInputEvent2();  break;  case WAIT_OBJECT_0 + 2:  // A Windows message has arrived. Process  // messages until there aren't any more.  while(PeekMessage(&amp;msg, <c>null</c>, 0, 0, PM_REMOVE)){  if (msg.message == WM_QUIT) {  goto exitapp;  }  TranslateMessage(&amp;msg);  DispatchMessage(&amp;msg);  }  break;  default:  // No input or messages waiting.  // Do a frame of the game.  // If the game is idle, tell the next wait  // to wait indefinitely for input or a message.  if (!DoGame()) {  dwWait = INFINITE;  }  break;  } \t\n            } \t\n            </pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectInputDevice8W::SetEventNotification']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.idirectinputdevice8.idirectinputdevice8.seteventnotification</msdn-id>\t\n            <unmanaged>SetEventNotification</unmanaged>\t\n            <unmanaged-short>SetEventNotification</unmanaged-short>\t\n            <unmanaged>HRESULT IDirectInputDevice8W::SetEventNotification([In] void* arg0)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.Device.Information\">\n            <summary>\t\n            Obtains information about the device's identity.\t\n            </summary>\t\n            <remarks>\t\n            <p>For compatibility with DirectX 3, it is also valid to pass a  DIDEVICEINSTANCE_DX3 structure with the  dwSize member initialized to  sizeof(DIDEVICEINSTANCE_DX3).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectInputDevice8W::GetDeviceInfo']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.idirectinputdevice8.idirectinputdevice8.getdeviceinfo</msdn-id>\t\n            <unmanaged>GetDeviceInfo</unmanaged>\t\n            <unmanaged-short>GetDeviceInfo</unmanaged-short>\t\n            <unmanaged>HRESULT IDirectInputDevice8W::GetDeviceInfo([Out] DIDEVICEINSTANCEW* arg0)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectInput.CustomDevice`3.GetBufferedData\">\n            <summary>\n            Retrieves buffered data from the device.\n            </summary>\n            <returns>A collection of buffered input events.</returns>\n        </member>\n        <member name=\"M:SharpDX.DirectInput.CustomDevice`3.DumpDataFormat(SharpDX.DirectInput.DataFormat)\">\n            <summary>\n            Dumps the DataFormat in native form in order to verify it against the unmanaged version.\n            </summary>\n            <param name=\"format\">The format.</param>\n        </member>\n        <member name=\"T:SharpDX.DirectInput.CustomForce\">\n            <summary>\n            This class describes a Custom force effect. \n            It is passed in the <see cref=\"P:SharpDX.DirectInput.EffectParameters.Parameters\"/> of the <see cref=\"T:SharpDX.DirectInput.EffectParameters\"/> structure.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.DirectInput.CustomForce.MarshalFrom(System.Int32,System.IntPtr)\">\n            <summary>\n            Marshal this class from an unamanaged buffer.\n            </summary>\n            <param name=\"bufferSize\">The size of the unmanaged buffer.</param>\n            <param name=\"bufferPointer\">The pointer to the unmanaged buffer.</param>\n            <returns>An instance of TypeSpecificParameters or null</returns>\n        </member>\n        <member name=\"M:SharpDX.DirectInput.CustomForce.MarshalTo\">\n            <summary>\n            Marshals this class to its native/unmanaged counterpart.\n            </summary>\n            <returns>A pointer to an allocated buffer containing the unmanaged structure.</returns>\n        </member>\n        <member name=\"M:SharpDX.DirectInput.CustomForce.MarshalFree(System.IntPtr)\">\n            <summary>\n            Free a previously allocated buffer.\n            </summary>\n            <param name=\"bufferPointer\">The buffer pointer.</param>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.CustomForce.ChannelCount\">\n            <summary>\n            Gets or sets the number of channels (axes) affected by this force. \n            The first channel is applied to the first axis associated with the effect, the second to the second, and so on. If there are fewer channels than axes, nothing is associated with the extra axes.\n            If there is only a single channel, the effect is rotated in the direction specified by the <see cref=\"P:SharpDX.DirectInput.EffectParameters.Directions\"/> of the <see cref=\"T:SharpDX.DirectInput.EffectParameters\"/> structure. If there is more than one channel, rotation is not allowed.\n            Not all devices support rotation of custom effects. \n            </summary>\n            <value>The channel count.</value>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.CustomForce.SamplePeriod\">\n            <summary>\n            Gets or sets the sample period, in microseconds.\n            </summary>\n            <value>The sample period.</value>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.CustomForce.SampleCount\">\n            <summary>\n            Gets or sets the total number of samples in the <see cref=\"P:SharpDX.DirectInput.CustomForce.ForceData\"/>. It must be an integral multiple of the <see cref=\"P:SharpDX.DirectInput.CustomForce.ChannelCount\"/>. \n            </summary>\n            <value>The sample count.</value>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.CustomForce.ForceData\">\n            <summary>\n            Gets or sets  an array of force values representing the custom force. If multiple channels are provided, the values are interleaved. For example, if <see cref=\"P:SharpDX.DirectInput.CustomForce.ChannelCount\"/> is 3, the first element of the array belongs to the first channel, the second to the second, and the third to the third. \n            </summary>\n            <value>The force data.</value>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.CustomForce.Size\">\n            <summary>\n            Gets the size of this specific parameter.\n            </summary>\n            <value>The size.</value>\n        </member>\n        <member name=\"T:SharpDX.DirectInput.DataFormat\">\n            <summary>\t\n            Describes a device's data format. This structure is used with theIDirectInputDevice8::SetDataFormatmethod.\t\n            </summary>\t\n            <remarks>\t\n            <p>Applications do not typically need to create a <see cref=\"T:SharpDX.DirectInput.DataFormat\"/> structure. An application can use one of the predefined global data format variables,  c_dfDIMouse,  c_dfDIMouse2,  c_dfDIKeyboard,  c_dfDIJoystick, or  c_dfDIJoystick2.</p> <p>Applications that need to create a <see cref=\"T:SharpDX.DirectInput.DataFormat\"/> structure must first call <see cref=\"M:SharpDX.DirectInput.Device.EnumObjects(SharpDX.FunctionCallback,System.IntPtr,System.Int32)\"/> to determine the available objects for the current device. This is because the <see cref=\"M:SharpDX.DirectInput.Device.SetDataFormat(SharpDX.DirectInput.DataFormat)\"/> method will return <see cref=\"F:SharpDX.DirectInput.ResultCode.InvalidParam\"/> if an object is described in the <see cref=\"T:SharpDX.DirectInput.DataFormat\"/> structure but does not exist on the current device.</p> <p>The following code example sets a data format for a device that has an X-axis and a Y-axis:</p> <pre> // Suppose an application uses the following \t\n            // structure to read device data.  typedef struct MYDATA {  LONG  lX;                   // X-axis goes here.  LONG  lY;                   // Y-axis goes here.  BYTE  bButtonA;             // One button goes here.  BYTE  bButtonB;             // Another button goes here.  BYTE  bPadding[2];          // Must be DWORD multiple in size. \t\n            } MYDATA;  // Then, it can use the following data format.  DIOBJECTDATAFORMAT rgodf[ ] = {  { &amp;<see cref=\"F:SharpDX.DirectInput.ObjectGuid.XAxisStr\"/>, FIELD_OFFSET(MYDATA, lX), <see cref=\"F:SharpDX.DirectInput.DeviceObjectTypeFlags.Axis\"/> | <see cref=\"F:SharpDX.DirectInput.DeviceObjectTypeFlags.AnyInstance\"/>, 0, },  { &amp;<see cref=\"F:SharpDX.DirectInput.ObjectGuid.YAxisStr\"/>, FIELD_OFFSET(MYDATA, lY),  <see cref=\"F:SharpDX.DirectInput.DeviceObjectTypeFlags.Axis\"/> | <see cref=\"F:SharpDX.DirectInput.DeviceObjectTypeFlags.AnyInstance\"/>, 0, },  { &amp;<see cref=\"F:SharpDX.DirectInput.ObjectGuid.ButtonStr\"/>, FIELD_OFFSET(MYDATA, bButtonA), <see cref=\"F:SharpDX.DirectInput.DeviceObjectTypeFlags.Button\"/> | <see cref=\"F:SharpDX.DirectInput.DeviceObjectTypeFlags.AnyInstance\"/>, 0, },  { &amp;<see cref=\"F:SharpDX.DirectInput.ObjectGuid.ButtonStr\"/>, FIELD_OFFSET(MYDATA, bButtonB),  <see cref=\"F:SharpDX.DirectInput.DeviceObjectTypeFlags.Button\"/> | <see cref=\"F:SharpDX.DirectInput.DeviceObjectTypeFlags.AnyInstance\"/>, 0, }, \t\n            }; \t\n            #define numObjects (sizeof(rgodf) / sizeof(rgodf[0]))  <see cref=\"T:SharpDX.DirectInput.DataFormat\"/> df = {  sizeof(<see cref=\"T:SharpDX.DirectInput.DataFormat\"/>),       // Size of this structure  sizeof(DIOBJECTDATAFORMAT), // Size of object data format  <see cref=\"F:SharpDX.DirectInput.DataFormatFlag.AbsoluteAxis\"/>,               // Absolute axis coordinates  sizeof(MYDATA),             // Size of device data  numObjects,                 // Number of objects  rgodf,                      // And here they are \t\n            }; </pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDATAFORMAT']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.didataformat</msdn-id>\t\n            <unmanaged>DIDATAFORMAT</unmanaged>\t\n            <unmanaged-short>DIDATAFORMAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DataFormat.Size\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDATAFORMAT::dwSize']/*\"/>\t\n            <unmanaged>unsigned int dwSize</unmanaged>\t\n            <unmanaged-short>unsigned int dwSize</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DataFormat.ObjectSize\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDATAFORMAT::dwObjSize']/*\"/>\t\n            <unmanaged>unsigned int dwObjSize</unmanaged>\t\n            <unmanaged-short>unsigned int dwObjSize</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DataFormat.Flags\">\n            <summary>\t\nFlags describing other attributes of the data format.\n</summary>\t\n            <unmanaged>DIDF dwFlags</unmanaged>\t\n            <unmanaged-short>DIDF dwFlags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DataFormat.DataSize\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDATAFORMAT::dwDataSize']/*\"/>\t\n            <unmanaged>unsigned int dwDataSize</unmanaged>\t\n            <unmanaged-short>unsigned int dwDataSize</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DataFormat.ObjectArrayCount\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDATAFORMAT::dwNumObjs']/*\"/>\t\n            <unmanaged>unsigned int dwNumObjs</unmanaged>\t\n            <unmanaged-short>unsigned int dwNumObjs</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DataFormat.ObjectArrayPointer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDATAFORMAT::rgodf']/*\"/>\t\n            <unmanaged>void* rgodf</unmanaged>\t\n            <unmanaged-short>void rgodf</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectInput.DataFormatAttribute\">\n            <summary>\n            Attributes that describes a device data format specification.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DataFormatAttribute.Flags\">\n            <summary>\n            Gets or sets the dataformat flags.\n            </summary>\n            <value>The flags.</value>\n        </member>\n        <member name=\"T:SharpDX.DirectInput.DataObjectFormatAttribute\">\n            <summary>\n            Attribute to describe a custom format for a field.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DataObjectFormatAttribute.Name\">\n            <summary>\n            Gets or sets the name of the field. Default is using the field name.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DataObjectFormatAttribute.Guid\">\n            <summary>\n            Gets or sets Guid for the axis, button, or other input source. When requesting a data format, making this member empty indicates that any type of object is permissible. \n            </summary>\n            <value>The GUID.</value>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DataObjectFormatAttribute.ArrayCount\">\n            <summary>\n            Gets or sets the array count.\n            </summary>\n            <value>The array count.</value>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DataObjectFormatAttribute.TypeFlags\">\n            <summary>\n            Gets or sets the device type that describes the object. \n            </summary>\n            <value>The type.</value>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DataObjectFormatAttribute.Flags\">\n            <summary>\n            Gets or sets the extra flags used to describe the data format.\n            </summary>\n            <value>The flags.</value>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DataObjectFormatAttribute.InstanceNumber\">\n            <summary>\n            Gets or sets the instance number.\n            </summary>\n            <value>The instance number.</value>\n        </member>\n        <member name=\"T:SharpDX.DirectInput.DeviceDataFormat\">\n            <summary>\n            DirectInput device data format.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.DirectInput.DeviceImageHeader\">\n            <summary>\t\n            Contains information about device images. Used in theIDirectInputDevice8::GetImageInfomethod.\t\n            </summary>\t\n            <remarks>\t\n            <p>The buffer at lprgImageInfoArray must be large enough to hold all required image information structures. Applications can query for the required size by calling the <see cref=\"M:SharpDX.DirectInput.Device.GetImageInfo(SharpDX.DirectInput.DeviceImageHeader)\"/> method with the  dwBufferSize member set to zero. After the call, dwBufferUsed contains the amount of memory, in bytes, that was modified.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDEVICEIMAGEINFOHEADERW']/*\"/>\t\n            <msdn-id>ee416609</msdn-id>\t\n            <unmanaged>DIDEVICEIMAGEINFOHEADERW</unmanaged>\t\n            <unmanaged-short>DIDEVICEIMAGEINFOHEADERW</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectInput.DeviceImageHeader.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectInput.DeviceImageHeader\"/> class.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceImageHeader.Size\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDEVICEIMAGEINFOHEADERW::dwSize']/*\"/>\t\n            <unmanaged>unsigned int dwSize</unmanaged>\t\n            <unmanaged-short>unsigned int dwSize</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceImageHeader.SizeImageInfo\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDEVICEIMAGEINFOHEADERW::dwSizeImageInfo']/*\"/>\t\n            <unmanaged>unsigned int dwSizeImageInfo</unmanaged>\t\n            <unmanaged-short>unsigned int dwSizeImageInfo</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceImageHeader.ViewCount\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDEVICEIMAGEINFOHEADERW::dwcViews']/*\"/>\t\n            <unmanaged>unsigned int dwcViews</unmanaged>\t\n            <unmanaged-short>unsigned int dwcViews</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceImageHeader.ButtonCount\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDEVICEIMAGEINFOHEADERW::dwcButtons']/*\"/>\t\n            <unmanaged>unsigned int dwcButtons</unmanaged>\t\n            <unmanaged-short>unsigned int dwcButtons</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceImageHeader.AxeCount\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDEVICEIMAGEINFOHEADERW::dwcAxes']/*\"/>\t\n            <unmanaged>unsigned int dwcAxes</unmanaged>\t\n            <unmanaged-short>unsigned int dwcAxes</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceImageHeader.PovCount\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDEVICEIMAGEINFOHEADERW::dwcPOVs']/*\"/>\t\n            <unmanaged>unsigned int dwcPOVs</unmanaged>\t\n            <unmanaged-short>unsigned int dwcPOVs</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceImageHeader.BufferSize\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDEVICEIMAGEINFOHEADERW::dwBufferSize']/*\"/>\t\n            <unmanaged>unsigned int dwBufferSize</unmanaged>\t\n            <unmanaged-short>unsigned int dwBufferSize</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceImageHeader.BufferUsed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDEVICEIMAGEINFOHEADERW::dwBufferUsed']/*\"/>\t\n            <unmanaged>unsigned int dwBufferUsed</unmanaged>\t\n            <unmanaged-short>unsigned int dwBufferUsed</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceImageHeader.ImageInfoArrayPointer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDEVICEIMAGEINFOHEADERW::lprgImageInfoArray']/*\"/>\t\n            <unmanaged>DIDEVICEIMAGEINFOW* lprgImageInfoArray</unmanaged>\t\n            <unmanaged-short>DIDEVICEIMAGEINFOW lprgImageInfoArray</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectInput.DeviceInstance\">\n            <summary>\t\n            Describes an instance of a DirectInput device. This structure is used with theIDirectInput8::EnumDevices,IDirectInput8::EnumDevicesBySemantics, andIDirectInputDevice8::GetDeviceInfomethods.\t\n            </summary>\t\n            <remarks>\t\n            <p>The following device types and subtypes are defined for use in the  dwDevType member. </p> <ul> <li><see cref=\"F:SharpDX.DirectInput.DeviceType.FirstPerson\"/> <p>First-person action game device. The following subtypes are defined.</p> <ul> <li><see cref=\"F:SharpDX.DirectInput.DeviceSubtype.FirstPersonLimited\"/> <p>Device that does not provide the minimum number of device objects for action mapping. </p></li> <li><see cref=\"F:SharpDX.DirectInput.DeviceSubtype.FirstPersonShooter\"/> <p>Device designed for first-person shooter games. </p></li> <li><see cref=\"F:SharpDX.DirectInput.DeviceSubtype.FirstPersonSixdof\"/> <p>Device with six degrees of freedom; that is, three lateral axes and three rotational axes. </p></li> <li><see cref=\"F:SharpDX.DirectInput.DeviceSubtype.FirstPersonUnknown\"/> <p>Unknown subtype. </p></li> </ul> </li> <li><see cref=\"F:SharpDX.DirectInput.DeviceType.Device\"/> <p>Device that does not fall into another category. </p></li> <li><see cref=\"F:SharpDX.DirectInput.DeviceType.ControlDevice\"/> <p>Input device used to control another type of device from within the context of the application. The following subtypes are defined.</p> <ul> <li><see cref=\"F:SharpDX.DirectInput.DeviceSubtype.DeviceControlCommsselection\"/> <p>Control used to make communications selections. </p></li> <li><see cref=\"F:SharpDX.DirectInput.DeviceSubtype.DeviceControlCommsselectionHardwired\"/> <p>Device that must use its default configuration and cannot be remapped. </p></li> <li><see cref=\"F:SharpDX.DirectInput.DeviceSubtype.DeviceControlUnknown\"/> <p>Unknown subtype. </p></li> </ul> </li> <li><see cref=\"F:SharpDX.DirectInput.DeviceType.Driving\"/> <p>Device for steering. The following subtypes are defined.</p> <ul> <li><see cref=\"F:SharpDX.DirectInput.DeviceSubtype.DrivingCombinedpedals\"/> <p>Steering device that reports acceleration and brake pedal values from a single axis. </p></li> <li><see cref=\"F:SharpDX.DirectInput.DeviceSubtype.DrivingDualpedals\"/> <p>Steering device that reports acceleration and brake pedal values from separate axes. </p></li> <li><see cref=\"F:SharpDX.DirectInput.DeviceSubtype.DrivingHandheld\"/> <p>Hand-held steering device. </p></li> <li><see cref=\"F:SharpDX.DirectInput.DeviceSubtype.DrivingLimited\"/> <p>Steering device that does not provide the minimum number of device objects for action mapping. </p></li> <li><see cref=\"F:SharpDX.DirectInput.DeviceSubtype.DrivingThreepedals\"/> <p>Steering device that reports acceleration, brake, and clutch pedal values from separate axes. </p></li> </ul> </li> <li><see cref=\"F:SharpDX.DirectInput.DeviceType.Flight\"/> <p>Controller for flight simulation. The following subtypes are defined.</p> <ul> <li><see cref=\"F:SharpDX.DirectInput.DeviceSubtype.FlightLimited\"/> <p>Flight controller that does not provide the minimum number of device objects for action mapping. </p></li> <li><see cref=\"F:SharpDX.DirectInput.DeviceSubtype.FlightRc\"/> <p>Flight device based on a remote control for model aircraft. </p></li> <li><see cref=\"F:SharpDX.DirectInput.DeviceSubtype.FlightStick\"/> <p>Joystick. </p></li> <li><see cref=\"F:SharpDX.DirectInput.DeviceSubtype.FlightYoke\"/> <p>Yoke. </p></li> </ul> </li> <li><see cref=\"F:SharpDX.DirectInput.DeviceType.Gamepad\"/> <p>Gamepad. The following subtypes are defined.</p> <ul> <li><see cref=\"F:SharpDX.DirectInput.DeviceSubtype.GamepadLimited\"/> <p>Gamepad that does not provide the minimum number of device objects for action mapping. </p></li> <li><see cref=\"F:SharpDX.DirectInput.DeviceSubtype.GamepadStandard\"/> <p>Standard gamepad that provides the minimum number of device objects for action mapping. </p></li> <li><see cref=\"F:SharpDX.DirectInput.DeviceSubtype.GamepadTilt\"/> <p>Gamepad that can report x-axis and y-axis data based on the attitude of the controller. </p></li> </ul> </li> <li><see cref=\"F:SharpDX.DirectInput.DeviceType.Joystick\"/> <p>Joystick. The following subtypes are defined.</p> <ul> <li><see cref=\"F:SharpDX.DirectInput.DeviceSubtype.JoystickLimited\"/> <p>Joystick that does not provide the minimum number of device objects for action mapping. </p></li> <li><see cref=\"F:SharpDX.DirectInput.DeviceSubtype.JoystickStandard\"/> <p>Standard joystick that provides the minimum number of device objects for action mapping. </p></li> </ul> </li> <li><see cref=\"F:SharpDX.DirectInput.DeviceType.Keyboard\"/> <p>Keyboard or keyboard-like device. The following subtypes are defined.</p> <ul> <li><see cref=\"F:SharpDX.DirectInput.DeviceSubtype.KeyboardUnknown\"/> <p>Subtype could not be determined. </p></li> <li><see cref=\"F:SharpDX.DirectInput.DeviceSubtype.KeyboardPcxt\"/> <p>IBM PC/XT 83-key keyboard. </p></li> <li><see cref=\"F:SharpDX.DirectInput.DeviceSubtype.KeyboardOlivetti\"/> <p>Olivetti 102-key keyboard. </p></li> <li><see cref=\"F:SharpDX.DirectInput.DeviceSubtype.KeyboardPcat\"/> <p>IBM PC/AT 84-key keyboard. </p></li> <li><see cref=\"F:SharpDX.DirectInput.DeviceSubtype.KeyboardPcenh\"/> <p>IBM PC Enhanced 101/102-key or Microsoft Natural keyboard.</p></li> <li><see cref=\"F:SharpDX.DirectInput.DeviceSubtype.KeyboardNokia1050\"/> <p>Nokia 1050 keyboard. </p></li> <li><see cref=\"F:SharpDX.DirectInput.DeviceSubtype.KeyboardNokia9140\"/> <p>Nokia 9140 keyboard. </p></li> <li><see cref=\"F:SharpDX.DirectInput.DeviceSubtype.KeyboardNec98\"/> <p>Japanese NEC PC98 keyboard. </p></li> <li><see cref=\"F:SharpDX.DirectInput.DeviceSubtype.KeyboardNec98laptop\"/> <p>Japanese NEC PC98 laptop keyboard. </p></li> <li><see cref=\"F:SharpDX.DirectInput.DeviceSubtype.KeyboardNec98106\"/> <p>Japanese NEC PC98 106-key keyboard. </p></li> <li><see cref=\"F:SharpDX.DirectInput.DeviceSubtype.KeyboardJapan106\"/> <p>Japanese 106-key keyboard. </p></li> <li><see cref=\"F:SharpDX.DirectInput.DeviceSubtype.KeyboardJapanax\"/> <p>Japanese AX keyboard. </p></li> <li><see cref=\"F:SharpDX.DirectInput.DeviceSubtype.KeyboardJ3100\"/> <p>Japanese J3100 keyboard. </p></li> </ul> </li> <li><see cref=\"F:SharpDX.DirectInput.DeviceType.Mouse\"/> <p>A mouse or mouse-like device (such as a trackball). The following subtypes are defined. </p> <ul> <li><see cref=\"F:SharpDX.DirectInput.DeviceSubtype.MouseAbsolute\"/> <p>Mouse that returns absolute axis data. </p></li> <li><see cref=\"F:SharpDX.DirectInput.DeviceSubtype.MouseFingerstick\"/> <p>Fingerstick. </p></li> <li><see cref=\"F:SharpDX.DirectInput.DeviceSubtype.MouseTouchpad\"/> <p>Touchpad. </p></li> <li><see cref=\"F:SharpDX.DirectInput.DeviceSubtype.MouseTrackball\"/> <p>Trackball. </p></li> <li><see cref=\"F:SharpDX.DirectInput.DeviceSubtype.MouseTraditional\"/> <p>Traditional mouse. </p></li> <li><see cref=\"F:SharpDX.DirectInput.DeviceSubtype.MouseUnknown\"/> <p>Subtype could not be determined. </p></li> </ul> </li> <li><see cref=\"F:SharpDX.DirectInput.DeviceType.Remote\"/> <p>Remote-control device. The following subtype is defined. </p> <ul> <li><see cref=\"F:SharpDX.DirectInput.DeviceSubtype.RemoteUnknown\"/> <p>Subtype could not be determined. </p></li> </ul> </li> <li><see cref=\"F:SharpDX.DirectInput.DeviceType.ScreenPointer\"/> <p>Screen reference. The following subtypes are defined.</p> <ul> <li><see cref=\"F:SharpDX.DirectInput.DeviceSubtype.ScreenPointerUnknown\"/> <p>Unknown subtype. </p></li> <li><see cref=\"F:SharpDX.DirectInput.DeviceSubtype.ScreenPointerLightgun\"/> <p>Light gun. </p></li> <li><see cref=\"F:SharpDX.DirectInput.DeviceSubtype.ScreenPointerLightpen\"/> <p>Light pen. </p></li> <li><see cref=\"F:SharpDX.DirectInput.DeviceSubtype.ScreenPointerTouch\"/> <p>Touch screen. </p></li> </ul> </li> <li><see cref=\"F:SharpDX.DirectInput.DeviceType.Supplemental\"/> <p>Specialized device with functionality unsuitable for the main control of an application, such as pedals used with a wheel. The following subtypes are defined.</p> <ul> <li><see cref=\"F:SharpDX.DirectInput.DeviceSubtype.Supplemental2ndhandcontroller\"/> <p>Secondary handheld controller. </p></li> <li><see cref=\"F:SharpDX.DirectInput.DeviceSubtype.SupplementalCombinedpedals\"/> <p>Device whose primary function is to report acceleration and brake pedal values from a single axis. </p></li> <li><see cref=\"F:SharpDX.DirectInput.DeviceSubtype.SupplementalDualpedals\"/> <p>Device whose primary function is to report acceleration and brake pedal values from separate axes. </p></li> <li><see cref=\"F:SharpDX.DirectInput.DeviceSubtype.SupplementalHandtracker\"/> <p>Device that tracks hand movement. </p></li> <li><see cref=\"F:SharpDX.DirectInput.DeviceSubtype.SupplementalHeadtracker\"/> <p>Device that tracks head movement. </p></li> <li><see cref=\"F:SharpDX.DirectInput.DeviceSubtype.SupplementalRudderpedals\"/> <p>Device with rudder pedals. </p></li> <li><see cref=\"F:SharpDX.DirectInput.DeviceSubtype.SupplementalShifter\"/> <p>Device that reports gear selection from an axis. </p></li> <li><see cref=\"F:SharpDX.DirectInput.DeviceSubtype.SupplementalShiftstickgate\"/> <p>Device that reports gear selection from button states. </p></li> <li><see cref=\"F:SharpDX.DirectInput.DeviceSubtype.SupplementalSplitthrottle\"/> <p>Device whose primary function is to report at least two throttle values. It may have other controls. </p></li> <li><see cref=\"F:SharpDX.DirectInput.DeviceSubtype.SupplementalThreepedals\"/> <p>Device whose primary function is to report acceleration, brake, and clutch pedal values from separate axes. </p></li> <li><see cref=\"F:SharpDX.DirectInput.DeviceSubtype.SupplementalThrottle\"/> <p>Device whose primary function is to report a single throttle value. It may have other controls. </p></li> <li><see cref=\"F:SharpDX.DirectInput.DeviceSubtype.SupplementalUnknown\"/> <p>Unknown subtype. </p></li> </ul> </li> </ul> <p>Versions of DirectInput earlier than DirectX 8.0 have a somewhat different scheme of device types and subtypes. See the DIDEVTYPExxx defines in Dinput.h.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDEVICEINSTANCEW']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.dideviceinstance</msdn-id>\t\n            <unmanaged>DIDEVICEINSTANCEW</unmanaged>\t\n            <unmanaged-short>DIDEVICEINSTANCEW</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectInput.DeviceInstance.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectInput.Capabilities\"/> class.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceInstance.Size\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDEVICEINSTANCEW::dwSize']/*\"/>\t\n            <unmanaged>unsigned int dwSize</unmanaged>\t\n            <unmanaged-short>unsigned int dwSize</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceInstance.InstanceGuid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDEVICEINSTANCEW::guidInstance']/*\"/>\t\n            <unmanaged>GUID guidInstance</unmanaged>\t\n            <unmanaged-short>GUID guidInstance</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceInstance.ProductGuid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDEVICEINSTANCEW::guidProduct']/*\"/>\t\n            <unmanaged>GUID guidProduct</unmanaged>\t\n            <unmanaged-short>GUID guidProduct</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceInstance.RawType\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDEVICEINSTANCEW::dwDevType']/*\"/>\t\n            <unmanaged>unsigned int dwDevType</unmanaged>\t\n            <unmanaged-short>unsigned int dwDevType</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceInstance.InstanceName\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDEVICEINSTANCEW::tszInstanceName']/*\"/>\t\n            <unmanaged>wchar_t tszInstanceName[260]</unmanaged>\t\n            <unmanaged-short>wchar_t tszInstanceName</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceInstance.ProductName\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDEVICEINSTANCEW::tszProductName']/*\"/>\t\n            <unmanaged>wchar_t tszProductName[260]</unmanaged>\t\n            <unmanaged-short>wchar_t tszProductName</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceInstance.ForceFeedbackDriverGuid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDEVICEINSTANCEW::guidFFDriver']/*\"/>\t\n            <unmanaged>GUID guidFFDriver</unmanaged>\t\n            <unmanaged-short>GUID guidFFDriver</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceInstance.UsagePage\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDEVICEINSTANCEW::wUsagePage']/*\"/>\t\n            <unmanaged>HID_USAGE_PAGE wUsagePage</unmanaged>\t\n            <unmanaged-short>HID_USAGE_PAGE wUsagePage</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceInstance.Usage\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDEVICEINSTANCEW::wUsage']/*\"/>\t\n            <unmanaged>HID_USAGE_ID wUsage</unmanaged>\t\n            <unmanaged-short>HID_USAGE_ID wUsage</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.DirectInput.DeviceInstance.Type\">\n            <summary>\n            Gets the type of this device.\n            </summary>\n            <value>The type.</value>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.DeviceInstance.Subtype\">\n            <summary>\n            Gets the subtype of the device.\n            </summary>\n            <value>The subtype.</value>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.DeviceInstance.IsHumanInterfaceDevice\">\n            <summary>\n            Gets a value indicating whether this instance is human interface device.\n            </summary>\n            <value>\n            \t<c>true</c> if this instance is human interface device; otherwise, <c>false</c>.\n            </value>\n        </member>\n        <member name=\"T:SharpDX.DirectInput.DeviceObjectInstance\">\n            <summary>\t\n            Describes a device object instance. This structure is used with theIDirectInputDevice8::EnumObjectsmethod to provide theDIEnumDeviceObjectsCallbackcallback function with information about a particular object associated with a device, such as an axis or button. It is also used with theIDirectInputDevice8::GetObjectInfomethod to retrieve information about a device object.\t\n            </summary>\t\n            <remarks>\t\n            <table><tr><th>Note </th></tr><tr><td>The value in dwOfs is the offset within the raw data returned by the device, regardless of whether the data format has been set for the device. </td></tr></table> <p>Applications can use the wUsagePage and wUsage members to obtain additional information about how the object was designed to be used. For example, if wUsagePage has the value 0x02 (vehicle controls) and  wUsage has the value 0xB9 (elevator trim), the object was designed to be the elevator trim control on a flight stick. A flight simulator application can use this information to provide more reasonable defaults for objects on the device. HID usage codes are determined by the USB standards committee.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDEVICEOBJECTINSTANCEW']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.dideviceobjectinstance</msdn-id>\t\n            <unmanaged>DIDEVICEOBJECTINSTANCEW</unmanaged>\t\n            <unmanaged-short>DIDEVICEOBJECTINSTANCEW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceObjectInstance.Size\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDEVICEOBJECTINSTANCEW::dwSize']/*\"/>\t\n            <unmanaged>unsigned int dwSize</unmanaged>\t\n            <unmanaged-short>unsigned int dwSize</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceObjectInstance.ObjectType\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDEVICEOBJECTINSTANCEW::guidType']/*\"/>\t\n            <unmanaged>GUID guidType</unmanaged>\t\n            <unmanaged-short>GUID guidType</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceObjectInstance.Offset\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDEVICEOBJECTINSTANCEW::dwOfs']/*\"/>\t\n            <unmanaged>unsigned int dwOfs</unmanaged>\t\n            <unmanaged-short>unsigned int dwOfs</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceObjectInstance.ObjectId\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDEVICEOBJECTINSTANCEW::dwType']/*\"/>\t\n            <unmanaged>DIDFT dwType</unmanaged>\t\n            <unmanaged-short>DIDFT dwType</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceObjectInstance.Aspect\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDEVICEOBJECTINSTANCEW::dwFlags']/*\"/>\t\n            <unmanaged>DIDOI dwFlags</unmanaged>\t\n            <unmanaged-short>DIDOI dwFlags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceObjectInstance.Name\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDEVICEOBJECTINSTANCEW::tszName']/*\"/>\t\n            <unmanaged>wchar_t tszName[260]</unmanaged>\t\n            <unmanaged-short>wchar_t tszName</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceObjectInstance.MaximumForceFeedback\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDEVICEOBJECTINSTANCEW::dwFFMaxForce']/*\"/>\t\n            <unmanaged>unsigned int dwFFMaxForce</unmanaged>\t\n            <unmanaged-short>unsigned int dwFFMaxForce</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceObjectInstance.ForceFeedbackResolution\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDEVICEOBJECTINSTANCEW::dwFFForceResolution']/*\"/>\t\n            <unmanaged>unsigned int dwFFForceResolution</unmanaged>\t\n            <unmanaged-short>unsigned int dwFFForceResolution</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceObjectInstance.CollectionNumber\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDEVICEOBJECTINSTANCEW::wCollectionNumber']/*\"/>\t\n            <unmanaged>unsigned short wCollectionNumber</unmanaged>\t\n            <unmanaged-short>unsigned short wCollectionNumber</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceObjectInstance.DesignatorIndex\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDEVICEOBJECTINSTANCEW::wDesignatorIndex']/*\"/>\t\n            <unmanaged>unsigned short wDesignatorIndex</unmanaged>\t\n            <unmanaged-short>unsigned short wDesignatorIndex</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceObjectInstance.UsagePage\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDEVICEOBJECTINSTANCEW::wUsagePage']/*\"/>\t\n            <unmanaged>unsigned short wUsagePage</unmanaged>\t\n            <unmanaged-short>unsigned short wUsagePage</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceObjectInstance.Usage\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDEVICEOBJECTINSTANCEW::wUsage']/*\"/>\t\n            <unmanaged>unsigned short wUsage</unmanaged>\t\n            <unmanaged-short>unsigned short wUsage</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceObjectInstance.Dimension\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDEVICEOBJECTINSTANCEW::dwDimension']/*\"/>\t\n            <unmanaged>unsigned int dwDimension</unmanaged>\t\n            <unmanaged-short>unsigned int dwDimension</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceObjectInstance.Exponent\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDEVICEOBJECTINSTANCEW::wExponent']/*\"/>\t\n            <unmanaged>unsigned short wExponent</unmanaged>\t\n            <unmanaged-short>unsigned short wExponent</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceObjectInstance.ReportId\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDEVICEOBJECTINSTANCEW::wReportId']/*\"/>\t\n            <unmanaged>unsigned short wReportId</unmanaged>\t\n            <unmanaged-short>unsigned short wReportId</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectInput.DeviceProperties\">\n            <summary>\n            Propertyies for a <see cref=\"T:SharpDX.DirectInput.Device\"/>.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.DirectInput.PropertyAccessor\">\n            <summary>\n            \n            </summary>\n        </member>\n        <member name=\"M:SharpDX.DirectInput.PropertyAccessor.#ctor(SharpDX.DirectInput.Device,System.Int32,SharpDX.DirectInput.PropertyHowType)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectInput.PropertyAccessor\"/> class.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"code\">The code.</param>\n            <param name=\"propertyType\">Howtype.</param>\n        </member>\n        <member name=\"M:SharpDX.DirectInput.PropertyAccessor.#ctor(SharpDX.DirectInput.Device,System.String,System.Type)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectInput.PropertyAccessor\"/> class by offset inside a structure.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"name\">The name of the property inside dataFormat type.</param>\n            <param name=\"dataFormat\">The data format.</param>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.PropertyAccessor.Device\">\n            <summary>\n            Gets or sets the device.\n            </summary>\n            <value>The device.</value>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.PropertyAccessor.ObjectCode\">\n            <summary>\n            Gets or sets the code.\n            </summary>\n            <value>The code.</value>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.PropertyAccessor.PropertyType\">\n            <summary>\n            Gets or sets the how type.\n            </summary>\n            <value>The how type.</value>\n        </member>\n        <member name=\"M:SharpDX.DirectInput.DeviceProperties.GetKeyCode(SharpDX.DirectInput.Key)\">\n            <summary>\n            Gets the key code for a keyboard key. An exception is raised if the property cannot resolve specialized keys on USB keyboards because they do not exist in scan code form. For all other failures, an exception is also returned.\n            </summary>\n            <param name=\"key\">The key id.</param>\n            <returns>The key code</returns>\n        </member>\n        <member name=\"M:SharpDX.DirectInput.DeviceProperties.GetKeyName(SharpDX.DirectInput.Key)\">\n            <summary>\n            Gets the localized key name for a keyboard key. Using this property on devices other than a keyboard will return unexpected names. \n            </summary>\n            <param name=\"key\">The key.</param>\n            <returns></returns>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.DeviceProperties.AutoCenter\">\n            <summary>\n            Gets or sets a value indicating whether device objects are self centering.\n            </summary>\n            <value><c>true</c> if device objects are self centering; otherwise, <c>false</c>.</value>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.DeviceProperties.AxisMode\">\n            <summary>\n            Gets or sets the axis mode.\n            </summary>\n            <value>The axis mode.</value>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.DeviceProperties.BufferSize\">\n            <summary>\n            Gets or sets the input buffer size. The buffer size determines the amount of data that the buffer can hold between calls to the <see cref=\"M:SharpDX.DirectInput.Device.GetDeviceData(System.Int32,System.IntPtr,System.Int32@,System.Int32)\"/> method before data is lost. You can set this value to 0 to indicate that the application does not read buffered data from the device. If the buffer size is too large for the device to support it, then the largest possible buffer size is set. However, this property always returns the buffer size set using the <see cref=\"P:SharpDX.DirectInput.DeviceProperties.BufferSize\"/> property, even if the buffer cannot be supported because it is too large.\n            </summary>\n            <value>The size of the buffer.</value>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.DeviceProperties.ClassGuid\">\n            <summary>\n            Gets the class GUID for the device. This property lets advanced applications perform operations on a human interface device that are not supported by DirectInput. \n            </summary>\n            <value>The class GUID.</value>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.DeviceProperties.DeadZone\">\n            <summary>\n            Gets or sets the dead zone of a joystick, in the range from 0 through 10,000, where 0 indicates that there is no dead zone, 5,000 indicates that the dead zone extends over 50 percent of the physical range of the axis on both sides of center, and 10,000 indicates that the entire physical range of the axis is dead. When the axis is within the dead zone, it is reported as being at the center of its range.\n            </summary>\n            <value>The dead zone.</value>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.DeviceProperties.ForceFeedbackGain\">\n            <summary>\n            Gets or sets the force feedback gain of the device. \n            The gain value is applied to all effects created on the device. The value is an integer in the range from 0 through 10,000, specifying the amount by which effect magnitudes should be scaled for the device. For example, a value of 10,000 indicates that all effect magnitudes are to be taken at face value. A value of 9,000 indicates that all effect magnitudes are to be reduced to 90 percent of their nominal magnitudes.\n            DirectInput always checks the gain value before setting the gain property. If the gain is outside of the range (less than zero or greater than 10,000), setting this propery will raise an exception. Otherwise, no exception if successful, even if the device does not support force feedback.\n            Setting a gain value is useful when an application wants to scale down the strength of all force-feedback effects uniformly, based on user preferences.\n            Unlike other properties, the gain can be set when the device is in an acquired state. \n            </summary>\n            <value>The force feedback gain.</value>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.DeviceProperties.Granularity\">\n            <summary>\n            Gets the input granularity. Granularity represents the smallest distance over which the object reports movement. Most axis objects have a granularity of one; that is, all values are possible. Some axes have a larger granularity. For example, the wheel axis on a mouse can have a granularity of 20; that is, all reported changes in position are multiples of 20. In other words, when the user turns the wheel slowly, the device reports a position of 0, then 20, then 40, and so on. This is a read-only property.\n            </summary>\n            <value>The granularity.</value>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.DeviceProperties.InstanceName\">\n            <summary>\n            Gets or sets the friendly instance name of the device. \n            This property exists for advanced applications that want to change the friendly instance name of a device (as returned in the tszInstanceName member of the <see cref=\"T:SharpDX.DirectInput.DeviceInstance\"/> structure) to distinguish it from similar devices that are plugged in simultaneously. Most applications should have no need to change the friendly name.\n            </summary>\n            <value>The name of the instance.</value>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.DeviceProperties.InterfacePath\">\n            <summary>\n            Gets the device interface path for the device. This property lets advanced applications perform operations on a human interface device that are not supported by DirectInput. \n            </summary>\n            <value>The interface path.</value>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.DeviceProperties.JoystickId\">\n            <summary>\n            Gets the instance number of a joystick. This property is not implemented for the mouse or keyboard.\n            </summary>\n            <value>The joystick id.</value>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.DeviceProperties.MemoryLoad\">\n            <summary>\n            Gets the memory load for the device. This setting applies to the entire device, rather than to any particular object. The retrieved value is in the range from 0 through 100, indicating the percentage of device memory in use. The device must be acquired in exclusive mode. If it is not, the method will fail with an exception.\n            </summary>\n            <value>The memory load.</value>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.DeviceProperties.PortDisplayName\">\n            <summary>\n            Gets the human-readable display name of the port to which this device is connected. Not generally used by applications. \n            </summary>\n            <value>The  human-readable display name of the port to which this device is connected.</value>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.DeviceProperties.ProductId\">\n            <summary>\n            Gets the vendor identity (ID) and product ID of a HID device. This property is of type int and contains both values. These two short values are combined. This property applies to the entire device, rather than to any particular object.\n            </summary>\n            <value>The product id.</value>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.DeviceProperties.ProductName\">\n            <summary>\n            Gets or sets the friendly product name of the device.\n            This property exists for advanced applications that want to change the friendly product name of a device (as returned in the tszProductName member of the <see cref=\"T:SharpDX.DirectInput.DeviceInstance\"/> structure) to distinguish it from similar devices which are plugged in simultaneously. Most applications should have no need to change the friendly name.\n            This setting applies to the entire device.\n            Setting the product name is only useful for changing the user-defined name of an analog joystick on Microsoft Windows 98, Windows 2000, and Windows Millennium Edition (Windows Me) computers. In other cases, attempting to set this property will still return ok. However, the name is not stored in a location used by the getter of this property.\n            </summary>\n            <value>The name of the product.</value>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.DeviceProperties.Range\">\n            <summary>\n            Gets the range of values an object can possibly report.\n            </summary>\n            <value>The range.</value>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.DeviceProperties.Saturation\">\n            <summary>\n            Gets or sets the saturation zones of a joystick, in the range from 0 through 10,000. The saturation level is the point at which the axis is considered to be at its most extreme position. For example, if the saturation level is set to 9,500, the axis reaches the extreme of its range when it has moved 95 percent of the physical distance from its center position (or from the dead zone).\n            </summary>\n            <value>The saturation.</value>\n        </member>\n        <!-- Badly formed XML comment ignored for member \"P:SharpDX.DirectInput.DeviceProperties.TypeName\" -->\n        <member name=\"P:SharpDX.DirectInput.DeviceProperties.UserName\">\n            <summary>\n            Gets the user name for a user currently assigned to a device. User names are set by calling <see cref=\"M:SharpDX.DirectInput.Device.SetActionMap(SharpDX.DirectInput.ActionFormat@,System.String,System.Int32)\"/>. If no user name is set, the method throws an exception.\n            </summary>\n            <value>The name of the user.</value>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.DeviceProperties.VendorId\">\n            <summary>\n            Gets the vendor identity (ID) and product ID of a HID device. This property is of type int and contains both values. These two short values are combined. This property applies to the entire device, rather than to any particular object.\n            </summary>\n            <value>The product id.</value>\n        </member>\n        <member name=\"T:SharpDX.DirectInput.DirectInput\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectInput8W']/*\"/>\t\n            <unmanaged>IDirectInput8W</unmanaged>\t\n            <unmanaged-short>IDirectInput8W</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectInput.DirectInput.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectInput.DirectInput\"/> class.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.DirectInput.DirectInput.GetDevices\">\n            <summary>\n            Gets all devices.\n            </summary>\n            <returns>A collection of <see cref=\"T:SharpDX.DirectInput.DeviceInstance\"/></returns>\n        </member>\n        <member name=\"M:SharpDX.DirectInput.DirectInput.GetDevices(SharpDX.DirectInput.DeviceClass,SharpDX.DirectInput.DeviceEnumerationFlags)\">\n            <summary>\n            Gets the devices for a particular <see cref=\"T:SharpDX.DirectInput.DeviceClass\"/> and <see cref=\"T:SharpDX.DirectInput.DeviceEnumerationFlags\"/>.\n            </summary>\n            <param name=\"deviceClass\">Class of the device.</param>\n            <param name=\"deviceEnumFlags\">The device enum flags.</param>\n            <returns>A collection of <see cref=\"T:SharpDX.DirectInput.DeviceInstance\"/></returns>\n        </member>\n        <member name=\"M:SharpDX.DirectInput.DirectInput.GetDevices(SharpDX.DirectInput.DeviceType,SharpDX.DirectInput.DeviceEnumerationFlags)\">\n            <summary>\n            Gets the devices for a particular <see cref=\"T:SharpDX.DirectInput.DeviceType\"/> and <see cref=\"T:SharpDX.DirectInput.DeviceEnumerationFlags\"/>.\n            </summary>\n            <param name=\"deviceType\">Type of the device.</param>\n            <param name=\"deviceEnumFlags\">The device enum flags.</param>\n            <returns>A collection of <see cref=\"T:SharpDX.DirectInput.DeviceInstance\"/></returns>\n        </member>\n        <member name=\"M:SharpDX.DirectInput.DirectInput.IsDeviceAttached(System.Guid)\">\n            <summary>\n            Determines whether a device with the specified Guid is attached.\n            </summary>\n            <param name=\"deviceGuid\">The device Guid.</param>\n            <returns>\n            \t<c>true</c> if the device with the specified device Guid is attached ; otherwise, <c>false</c>.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.DirectInput.DirectInput.RunControlPanel\">\n            <summary>\n            Runs Control Panel to enable the user to install a new input device or modify configurations.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.DirectInput.DirectInput.RunControlPanel(System.IntPtr)\">\n            <summary>\n            Runs Control Panel to enable the user to install a new input device or modify configurations.\n            </summary>\n            <param name=\"handle\">Handle of the window to be used as the parent window for the subsequent user interface. If this parameter is NULL, no parent window is used.</param>\n        </member>\n        <member name=\"M:SharpDX.DirectInput.DirectInput.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectInput.DirectInput\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.DirectInput.DirectInput.op_Explicit(System.IntPtr)~SharpDX.DirectInput.DirectInput\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.DirectInput.DirectInput\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.DirectInput.DirectInput.CreateDevice(System.Guid,System.IntPtr@,SharpDX.ComObject)\">\n            <summary>\t\n            Creates and initializes an instance of a device based on a given globally unique identifier (<see cref=\"T:System.Guid\"/>), and obtains anIDirectInputDevice8 Interfaceinterface.\t\n            </summary>\t\n            <param name=\"arg0\">No documentation.</param>\t\n            <param name=\"arg1\">No documentation.</param>\t\n            <param name=\"arg2\">No documentation.</param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.DirectInput.ResultCode.Ok\"/>. If the method fails, the return value can be one of the following: <see cref=\"F:SharpDX.DirectInput.ResultCode.DeviceNotRegistered\"/>, <see cref=\"F:SharpDX.DirectInput.ResultCode.InvalidParam\"/>, <see cref=\"F:SharpDX.DirectInput.ResultCode.NoInterface\"/>, <see cref=\"F:SharpDX.DirectInput.ResultCode.NotInitialized\"/>, <see cref=\"F:SharpDX.DirectInput.ResultCode.OutOfMemory\"/>.</p></returns>\t\n            <remarks>\t\n            <p>Calling this method with pUnkOuter = <c>null</c> is equivalent to creating the object by CoCreateInstance (&amp;CLSID_DirectInputDevice, <c>null</c>, CLSCTX_INPROC_SERVER, riid, lplpDirectInputDevice) and then initializing it with Initialize.</p> <p>Calling this method with pUnkOuter != <c>null</c> is equivalent to creating the object by CoCreateInstance (&amp;CLSID_DirectInputDevice, punkOuter, CLSCTX_INPROC_SERVER, &amp;IID_IUnknown, lplpDirectInputDevice). The aggregated object must be initialized manually.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectInput8W::CreateDevice']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.idirectinput8.idirectinput8.createdevice</msdn-id>\t\n            <unmanaged>HRESULT IDirectInput8W::CreateDevice([In] const GUID&amp; arg0,[Out] void** arg1,[In] IUnknown* arg2)</unmanaged>\t\n            <unmanaged-short>IDirectInput8W::CreateDevice</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectInput.DirectInput.EnumDevices(System.Int32,SharpDX.FunctionCallback,System.IntPtr,SharpDX.DirectInput.DeviceEnumerationFlags)\">\n            <summary>\t\n            Enumerates available devices.\t\n            </summary>\t\n            <param name=\"arg0\"><dd> Device type filter. <p>To restrict the enumeration to a particular type of device, set this parameter to a DI8DEVTYPE_* value. See <see cref=\"T:SharpDX.DirectInput.DeviceInstance\"/>. </p> <p>To enumerate a class of devices, use one of the following values. </p> <dl> <dt><see cref=\"F:SharpDX.DirectInput.DeviceClass.All\"/></dt> <dd>All devices.</dd> <dt><see cref=\"F:SharpDX.DirectInput.DeviceClass.Device\"/></dt> <dd>All devices that do not fall into another class.</dd> <dt><see cref=\"F:SharpDX.DirectInput.DeviceClass.GameControl\"/></dt> <dd>All game controllers.</dd> <dt><see cref=\"F:SharpDX.DirectInput.DeviceClass.Keyboard\"/></dt> <dd>All keyboards. Equivalent to <see cref=\"F:SharpDX.DirectInput.DeviceType.Keyboard\"/>.</dd> <dt><see cref=\"F:SharpDX.DirectInput.DeviceClass.Pointer\"/></dt> <dd>All devices of type <see cref=\"F:SharpDX.DirectInput.DeviceType.Mouse\"/> and <see cref=\"F:SharpDX.DirectInput.DeviceType.ScreenPointer\"/>.</dd> </dl> </dd></param>\t\n            <param name=\"arg1\"><dd> Address of a callback function to be called once for each device enumerated. See DIEnumDevicesCallback.  </dd></param>\t\n            <param name=\"arg2\"><dd> Application-defined 32-bit value to be passed to the enumeration callback each time it is called.  </dd></param>\t\n            <param name=\"arg3\"><dd> Flag value that specifies the scope of the enumeration. This parameter can be one or more of the following values: <dl> <dt><see cref=\"F:SharpDX.DirectInput.DeviceEnumerationFlags.AllDevices\"/></dt> <dd>All installed devices are enumerated. This is the default behavior. </dd> <dt><see cref=\"F:SharpDX.DirectInput.DeviceEnumerationFlags.AttachedOnly\"/></dt> <dd>Only attached and installed devices. </dd> <dt><see cref=\"F:SharpDX.DirectInput.DeviceEnumerationFlags.ForceFeedback\"/></dt> <dd>Only devices that support force feedback. </dd> <dt><see cref=\"F:SharpDX.DirectInput.DeviceEnumerationFlags.IncludeAliases\"/></dt> <dd>Include devices that are aliases for other devices. </dd> <dt><see cref=\"F:SharpDX.DirectInput.DeviceEnumerationFlags.IncludeHidden\"/></dt> <dd>Include hidden devices. For more information about hidden devices, see <see cref=\"T:SharpDX.DirectInput.Capabilities\"/>. </dd> <dt><see cref=\"F:SharpDX.DirectInput.DeviceEnumerationFlags.IncludePhantoms\"/></dt> <dd>Include phantom (placeholder) devices. </dd> </dl> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.DirectInput.ResultCode.Ok\"/>. If the method fails, the return value can be one of the following error values: <see cref=\"F:SharpDX.DirectInput.ResultCode.InvalidParam\"/>, <see cref=\"F:SharpDX.DirectInput.ResultCode.NotInitialized\"/>.</p></returns>\t\n            <remarks>\t\n            <p>All installed devices can be enumerated, even if they are not present. For example, a flight stick might be installed on the system but not currently plugged into the computer. Set the  dwFlags parameter to indicate whether only attached or all installed devices should be enumerated. If the <see cref=\"F:SharpDX.DirectInput.DeviceEnumerationFlags.AttachedOnly\"/> flag is not present, all installed devices are enumerated. </p> <p>A preferred device type can be passed as a  dwDevType filter so that only the devices of that type are enumerated.</p> <p>On Microsoft Windows XP, DirectInput enumerates only one mouse and one keyboard device, referred to as the system mouse and the system keyboard.  These devices represent the combined output of all mice and keyboards respectively on a system. For information about how to read from multiple mice or keyboards individually on Windows XP, see the WM_INPUT documentation.</p> <table><tr><th>Note </th></tr><tr><td>The order in which devices are enumerated by DirectInput is not guaranteed.</td></tr></table>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectInput8W::EnumDevices']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.idirectinput8.idirectinput8.enumdevices</msdn-id>\t\n            <unmanaged>HRESULT IDirectInput8W::EnumDevices([In] unsigned int arg0,[In] __function__stdcall* arg1,[In] void* arg2,[In] DIEDFL arg3)</unmanaged>\t\n            <unmanaged-short>IDirectInput8W::EnumDevices</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectInput.DirectInput.GetDeviceStatus(System.Guid)\">\n            <summary>\t\n            Retrieves the status of a specified device.\t\n            </summary>\t\n            <param name=\"arg0\"><dd> Reference to (C++) or address of (C) the globally unique identifier (<see cref=\"T:System.Guid\"/>) identifying the instance of the device whose status is being checked.  </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.DirectInput.ResultCode.Ok\"/> if the device is attached to the system, or <see cref=\"F:SharpDX.DirectInput.ResultCode.NotAttached\"/> otherwise. If the method fails, the return value can be one of the following error values: <see cref=\"F:SharpDX.DirectInput.ResultCode.Generic\"/>, <see cref=\"F:SharpDX.DirectInput.ResultCode.InvalidParam\"/>, <see cref=\"F:SharpDX.DirectInput.ResultCode.NotInitialized\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectInput8W::GetDeviceStatus']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.idirectinput8.idirectinput8.getdevicestatus</msdn-id>\t\n            <unmanaged>HRESULT IDirectInput8W::GetDeviceStatus([In] const GUID&amp; arg0)</unmanaged>\t\n            <unmanaged-short>IDirectInput8W::GetDeviceStatus</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectInput.DirectInput.RunControlPanel(System.IntPtr,System.Int32)\">\n            <summary>\t\n            Runs Control Panel to enable the user to install a new input device or modify configurations.\t\n            </summary>\t\n            <param name=\"arg0\"><dd> Handle of the window to be used as the parent window for the subsequent user interface. If this parameter is <c>null</c>, no parent window is used.  </dd></param>\t\n            <param name=\"arg1\"><dd> Currently not used and must be set to 0.  </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.DirectInput.ResultCode.Ok\"/>. If the method fails, the return value can be one of the following error values: <see cref=\"F:SharpDX.DirectInput.ResultCode.InvalidParam\"/>, <see cref=\"F:SharpDX.DirectInput.ResultCode.NotInitialized\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectInput8W::RunControlPanel']/*\"/>\t\n            <msdn-id>ee417815</msdn-id>\t\n            <unmanaged>HRESULT IDirectInput8W::RunControlPanel([In] HWND arg0,[In] unsigned int arg1)</unmanaged>\t\n            <unmanaged-short>IDirectInput8W::RunControlPanel</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectInput.DirectInput.Initialize(System.IntPtr,System.Int32)\">\n            <summary>\t\n            Initializes a \t\n            DirectInput object. Applications normally do not need to call this method. TheDirectInput8Createfunction automatically initializes the DirectInput object after creating it.\t\n            </summary>\t\n            <param name=\"arg0\">No documentation.</param>\t\n            <param name=\"arg1\">No documentation.</param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.DirectInput.ResultCode.Ok\"/>. If the method fails, the return value can be one of the following error values: <see cref=\"F:SharpDX.DirectInput.ResultCode.BetaDirectInputVersion\"/>, <see cref=\"F:SharpDX.DirectInput.ResultCode.OldDirectInputVersion\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectInput8W::Initialize']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.idirectinput8.idirectinput8.initialize</msdn-id>\t\n            <unmanaged>HRESULT IDirectInput8W::Initialize([In] HINSTANCE arg0,[In] unsigned int arg1)</unmanaged>\t\n            <unmanaged-short>IDirectInput8W::Initialize</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectInput.DirectInput.FindDevice(System.Guid,System.String)\">\n            <summary>\t\n            Retrieves the instance globally unique identifier (<see cref=\"T:System.Guid\"/>) of a device that has been newly attached to the system. It is called in response to a Microsoft Win32  device management notification.\t\n            </summary>\t\n            <param name=\"arg0\"><dd> Unique identifier of the device class for the device that the application is to locate. The application obtains the class <see cref=\"T:System.Guid\"/> from the device arrival notification. For more information, see the documentation on the DBT_DEVICEARRIVAL event in the Microsoft Platform Software Development Kit (SDK).  </dd></param>\t\n            <param name=\"arg1\"><dd> Name of the device. The application obtains the name from the device arrival notification.  </dd></param>\t\n            <returns><dd> Address of a variable to receive the instance <see cref=\"T:System.Guid\"/> for the device, if the device is found. This value can be passed to <see cref=\"M:SharpDX.DirectInput.DirectInput.CreateDevice(System.Guid,System.IntPtr@,SharpDX.ComObject)\"/>.  </dd></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectInput8W::FindDevice']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.idirectinput8.idirectinput8.finddevice</msdn-id>\t\n            <unmanaged>HRESULT IDirectInput8W::FindDevice([In] const GUID&amp; arg0,[In] const wchar_t* arg1,[Out] GUID* arg2)</unmanaged>\t\n            <unmanaged-short>IDirectInput8W::FindDevice</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectInput.DirectInput.EnumDevicesBySemantics(System.String,SharpDX.DirectInput.ActionFormat@,SharpDX.FunctionCallback,System.IntPtr,System.Int32)\">\n            <summary>\t\n            Enumerates devices that most closely match the application-specified action map.\t\n            </summary>\t\n            <param name=\"arg0\"><dd> String identifying the current user, or <c>null</c> to specify the user logged onto the system. The user name is taken into account when enumerating devices. A device with user mappings is preferred to a device without any user mappings. By default, devices in use by other users are not enumerated for this user. </dd></param>\t\n            <param name=\"arg1\"><dd> Address of a <see cref=\"T:SharpDX.DirectInput.ActionFormat\"/> structure that specifies the action map for which suitable devices are enumerated.  </dd></param>\t\n            <param name=\"arg2\"><dd> Address of a callback function to be called once for each device enumerated. See DIEnumDevicesBySemanticsCallback.  </dd></param>\t\n            <param name=\"arg3\"><dd> Application-defined 32-bit value to pass to the enumeration callback each time it is called.  </dd></param>\t\n            <param name=\"arg4\"><dd> Flag value that specifies the scope of the enumeration. This parameter can be one or more of the following values.  <dl> <dt>DIEDBSFL_ATTACHEDONLY</dt> <dd>Only attached and installed devices are enumerated. </dd> <dt>DIEDBSFL_AVAILABLEDEVICES</dt> <dd>Only unowned, installed devices are enumerated. </dd> <dt>DIEDBSFL_FORCEFEEDBACK</dt> <dd>Only devices that support force feedback are enumerated. </dd> <dt>DIEDBSFL_MULTIMICEKEYBOARDS</dt> <dd>Only secondary (non-system) keyboard and mouse devices. </dd> <dt>DIEDBSFL_NONGAMINGDEVICES</dt> <dd>Only HID-compliant devices whose primary purpose is not as a gaming device. Devices such as USB speakers and multimedia buttons on some keyboards would fall within this value. </dd> <dt>DIEDBSFL_THISUSER</dt> <dd>All installed devices for the user identified by  ptszUserName, and all unowned devices, are enumerated. </dd> <dt>DIEDBSFL_VALID</dt> <dd>DIEDBSFL_VALID is also defined in Dinput.h, but is not used by applications. </dd> </dl> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is <see cref=\"F:SharpDX.DirectInput.ResultCode.Ok\"/>. If the method fails, the return value can be one of the following error values: <see cref=\"F:SharpDX.DirectInput.ResultCode.InvalidParam\"/>, <see cref=\"F:SharpDX.DirectInput.ResultCode.NotInitialized\"/>.</p></returns>\t\n            <remarks>\t\n            <p>The keyboard and mouse are enumerated last.</p> <table><tr><th>Note </th></tr><tr><td>The order in which devices are enumerated by DirectInput is not guaranteed.</td></tr></table>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectInput8W::EnumDevicesBySemantics']/*\"/>\t\n            <msdn-id>ee417807</msdn-id>\t\n            <unmanaged>HRESULT IDirectInput8W::EnumDevicesBySemantics([In] const wchar_t* arg0,[In] DIACTIONFORMATW* arg1,[In] __function__stdcall* arg2,[In] void* arg3,[In] unsigned int arg4)</unmanaged>\t\n            <unmanaged-short>IDirectInput8W::EnumDevicesBySemantics</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectInput.Effect\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectInputEffect']/*\"/>\t\n            <unmanaged>IDirectInputEffect</unmanaged>\t\n            <unmanaged-short>IDirectInputEffect</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectInput.Effect.#ctor(SharpDX.DirectInput.Device,System.Guid,SharpDX.DirectInput.EffectParameters)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectInput.Effect\"/> class.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"guid\">The GUID.</param>\n            <param name=\"parameters\">The parameters.</param>\n        </member>\n        <member name=\"M:SharpDX.DirectInput.Effect.Escape(System.Int32,System.Byte[],System.Byte[])\">\n            <summary>\n            Sends a hardware-specific command to the force-feedback driver.\n            </summary>\n            <param name=\"command\">Driver-specific command number. Consult the driver documentation for a list of valid commands. </param>\n            <param name=\"inData\">Buffer containing the data required to perform the operation. </param>\n            <param name=\"outData\">Buffer in which the operation's output data is returned. </param>\n            <returns>Number of bytes written to the output buffer</returns>\n            <remarks>\n            Because each driver implements different escapes, it is the application's responsibility to ensure that it is sending the escape to the correct driver by comparing the value of the guidFFDriver member of the <see cref=\"T:SharpDX.DirectInput.DeviceInstance\"/> structure against the value the application is expecting.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.DirectInput.Effect.GetParameters\">\n            <summary>\n            Gets the characteristics of an effect.\n            </summary>\n            <returns>The current parameters of this effect.</returns>\n        </member>\n        <member name=\"M:SharpDX.DirectInput.Effect.SetParameters(SharpDX.DirectInput.EffectParameters)\">\n            <summary>\n            Sets the characteristics of an effect.\n            </summary>\n            <param name=\"parameters\">The parameters of this effect.</param>\n            <returns>A <see cref = \"T:SharpDX.Result\" /> object describing the result of the operation.</returns>\n        </member>\n        <member name=\"M:SharpDX.DirectInput.Effect.Start\">\n            <summary>\n            Begins playing an effect infinitely. If the effect is already playing, it is restarted from the beginning. If the effect has not been downloaded or has been modified since its last download, it is downloaded before being started. This default behavior can be suppressed by passing the <see cref=\"F:SharpDX.DirectInput.EffectPlayFlags.NoDownload\"/> flag.\n            </summary>\n            <returns>A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.</returns>\n        </member>\n        <member name=\"M:SharpDX.DirectInput.Effect.Start(SharpDX.DirectInput.EffectPlayFlags)\">\n            <summary>\n            Begins playing an effect infinitely. If the effect is already playing, it is restarted from the beginning. If the effect has not been downloaded or has been modified since its last download, it is downloaded before being started. This default behavior can be suppressed by passing the <see cref=\"F:SharpDX.DirectInput.EffectPlayFlags.NoDownload\"/> flag.\n            </summary>\n            <param name=\"flags\">Flags that describe how the effect should be played by the device.</param>\n            <returns>A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.</returns>\n        </member>\n        <member name=\"M:SharpDX.DirectInput.Effect.Start(System.Int32)\">\n            <summary>\n            Begins playing an effect. If the effect is already playing, it is restarted from the beginning. If the effect has not been downloaded or has been modified since its last download, it is downloaded before being started. This default behavior can be suppressed by passing the <see cref=\"F:SharpDX.DirectInput.EffectPlayFlags.NoDownload\"/> flag.\n            </summary>\n            <param name=\"iterations\">Number of times to play the effect in sequence. The envelope is re-articulated with each iteration. To play the effect exactly once, pass 1. To play the effect repeatedly until explicitly stopped, pass -1. To play the effect until explicitly stopped without re-articulating the envelope, modify the effect parameters with the <see cref=\"M:SharpDX.DirectInput.Effect.SetParameters(SharpDX.DirectInput.EffectParameters,SharpDX.DirectInput.EffectParameterFlags)\"/>method, and change the Duration member to -1. </param>\n            <returns>A <see cref=\"T:SharpDX.Result\"/> object describing the result of the operation.</returns>\n        </member>\n        <member name=\"M:SharpDX.DirectInput.Effect.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectInput.Effect\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.DirectInput.Effect.op_Explicit(System.IntPtr)~SharpDX.DirectInput.Effect\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.DirectInput.Effect\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.DirectInput.Effect.Initialize(System.IntPtr,System.Int32,System.Guid)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"arg0\">No documentation.</param>\t\n            <param name=\"arg1\">No documentation.</param>\t\n            <param name=\"arg2\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectInputEffect::Initialize']/*\"/>\t\n            <unmanaged>HRESULT IDirectInputEffect::Initialize([In] HINSTANCE arg0,[In] unsigned int arg1,[In] const GUID&amp; arg2)</unmanaged>\t\n            <unmanaged-short>IDirectInputEffect::Initialize</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectInput.Effect.GetGuid(System.Guid@)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"arg0\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectInputEffect::GetEffectGuid']/*\"/>\t\n            <unmanaged>HRESULT IDirectInputEffect::GetEffectGuid([Out] GUID* arg0)</unmanaged>\t\n            <unmanaged-short>IDirectInputEffect::GetEffectGuid</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectInput.Effect.GetParameters(SharpDX.DirectInput.EffectParameterFlags)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"arg1\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectInputEffect::GetParameters']/*\"/>\t\n            <unmanaged>HRESULT IDirectInputEffect::GetParameters([Out] DIEFFECT* arg0,[In] DIEP arg1)</unmanaged>\t\n            <unmanaged-short>IDirectInputEffect::GetParameters</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectInput.Effect.SetParameters(SharpDX.DirectInput.EffectParameters,SharpDX.DirectInput.EffectParameterFlags)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"arg0\">No documentation.</param>\t\n            <param name=\"arg1\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectInputEffect::SetParameters']/*\"/>\t\n            <unmanaged>HRESULT IDirectInputEffect::SetParameters([In] const DIEFFECT* arg0,[In] DIEP arg1)</unmanaged>\t\n            <unmanaged-short>IDirectInputEffect::SetParameters</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectInput.Effect.Start(System.Int32,SharpDX.DirectInput.EffectPlayFlags)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"arg0\">No documentation.</param>\t\n            <param name=\"arg1\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectInputEffect::Start']/*\"/>\t\n            <unmanaged>HRESULT IDirectInputEffect::Start([In] unsigned int arg0,[In] DIES arg1)</unmanaged>\t\n            <unmanaged-short>IDirectInputEffect::Start</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectInput.Effect.Stop\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectInputEffect::Stop']/*\"/>\t\n            <unmanaged>HRESULT IDirectInputEffect::Stop()</unmanaged>\t\n            <unmanaged-short>IDirectInputEffect::Stop</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectInput.Effect.GetStatus(SharpDX.DirectInput.EffectStatus@)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"arg0\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectInputEffect::GetEffectStatus']/*\"/>\t\n            <unmanaged>HRESULT IDirectInputEffect::GetEffectStatus([Out] DIEGES* arg0)</unmanaged>\t\n            <unmanaged-short>IDirectInputEffect::GetEffectStatus</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectInput.Effect.Download\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectInputEffect::Download']/*\"/>\t\n            <unmanaged>HRESULT IDirectInputEffect::Download()</unmanaged>\t\n            <unmanaged-short>IDirectInputEffect::Download</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectInput.Effect.Unload\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectInputEffect::Unload']/*\"/>\t\n            <unmanaged>HRESULT IDirectInputEffect::Unload()</unmanaged>\t\n            <unmanaged-short>IDirectInputEffect::Unload</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectInput.Effect.Escape(SharpDX.DirectInput.EffectEscape@)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"arg0\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectInputEffect::Escape']/*\"/>\t\n            <unmanaged>HRESULT IDirectInputEffect::Escape([In] DIEFFESCAPE* arg0)</unmanaged>\t\n            <unmanaged-short>IDirectInputEffect::Escape</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.DirectInput.Effect.Guid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectInputEffect::GetEffectGuid']/*\"/>\t\n            <unmanaged>GetEffectGuid</unmanaged>\t\n            <unmanaged-short>GetEffectGuid</unmanaged-short>\t\n            <unmanaged>HRESULT IDirectInputEffect::GetEffectGuid([Out] GUID* arg0)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.Effect.Status\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectInputEffect::GetEffectStatus']/*\"/>\t\n            <unmanaged>GetEffectStatus</unmanaged>\t\n            <unmanaged-short>GetEffectStatus</unmanaged-short>\t\n            <unmanaged>HRESULT IDirectInputEffect::GetEffectStatus([Out] DIEGES* arg0)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectInput.EffectFile\">\n            <summary>\t\n            Describes data for a force-feedback effect stored in a file. It is used in conjunction with theIDirectInputDevice8::EnumEffectsInFileandIDirectInputDevice8::WriteEffectToFilemethods.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIFILEEFFECT']/*\"/>\t\n            <msdn-id>ee416626</msdn-id>\t\n            <unmanaged>DIFILEEFFECT</unmanaged>\t\n            <unmanaged-short>DIFILEEFFECT</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectInput.EffectFile.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectInput.EffectFile\"/> class.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectFile.Size\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIFILEEFFECT::dwSize']/*\"/>\t\n            <unmanaged>unsigned int dwSize</unmanaged>\t\n            <unmanaged-short>unsigned int dwSize</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectFile.Guid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIFILEEFFECT::GuidEffect']/*\"/>\t\n            <unmanaged>GUID GuidEffect</unmanaged>\t\n            <unmanaged-short>GUID GuidEffect</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectFile.EffectParametersPointer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIFILEEFFECT::lpDiEffect']/*\"/>\t\n            <unmanaged>const DIEFFECT* lpDiEffect</unmanaged>\t\n            <unmanaged-short>DIEFFECT lpDiEffect</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectFile.Name\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIFILEEFFECT::szFriendlyName']/*\"/>\t\n            <unmanaged>char szFriendlyName[260]</unmanaged>\t\n            <unmanaged-short>char szFriendlyName</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.DirectInput.EffectFile.Parameters\">\n            <summary>\n            Gets or sets the parameters.\n            </summary>\n            <value>The parameters.</value>\n        </member>\n        <member name=\"T:SharpDX.DirectInput.EffectInfo\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIEFFECTINFOW']/*\"/>\t\n            <unmanaged>DIEFFECTINFOW</unmanaged>\t\n            <unmanaged-short>DIEFFECTINFOW</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectInput.EffectInfo.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectInput.EffectInfo\"/> class.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectInfo.Size\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIEFFECTINFOW::dwSize']/*\"/>\t\n            <unmanaged>unsigned int dwSize</unmanaged>\t\n            <unmanaged-short>unsigned int dwSize</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectInfo.Guid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIEFFECTINFOW::guid']/*\"/>\t\n            <unmanaged>GUID guid</unmanaged>\t\n            <unmanaged-short>GUID guid</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectInfo.Type\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIEFFECTINFOW::dwEffType']/*\"/>\t\n            <unmanaged>DIEFT dwEffType</unmanaged>\t\n            <unmanaged-short>DIEFT dwEffType</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectInfo.StaticParameters\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIEFFECTINFOW::dwStaticParams']/*\"/>\t\n            <unmanaged>DIEP dwStaticParams</unmanaged>\t\n            <unmanaged-short>DIEP dwStaticParams</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectInfo.DynamicParameters\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIEFFECTINFOW::dwDynamicParams']/*\"/>\t\n            <unmanaged>DIEP dwDynamicParams</unmanaged>\t\n            <unmanaged-short>DIEP dwDynamicParams</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectInfo.Name\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIEFFECTINFOW::tszName']/*\"/>\t\n            <unmanaged>wchar_t tszName[260]</unmanaged>\t\n            <unmanaged-short>wchar_t tszName</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectInput.EffectParameters\">\n            <summary>\t\n            Used by theIDirectInputDevice8::CreateEffectmethod to initialize a newIDirectInputEffect Interfaceobject. It is also used by theIDirectInputEffect::SetParametersandIDirectInputEffect::GetParametersmethods.\t\n            </summary>\t\n            <remarks>\t\n            <table><tr><th>Note </th></tr><tr><td>The  <em>rglDirection</em> array must contain  <em>cAxes</em> entries, even if polar or spherical coordinates are given. In these cases, the last element in the  <em>rglDirection</em> array is reserved and must be 0. </td></tr></table>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIEFFECT']/*\"/>\t\n            <msdn-id>ee416616</msdn-id>\t\n            <unmanaged>DIEFFECT</unmanaged>\t\n            <unmanaged-short>DIEFFECT</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectInput.EffectParameters.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectInput.EffectParameters\"/> class.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.DirectInput.EffectParameters.GetAxes(System.Int32[]@,System.Int32[]@)\">\n            <summary>\n            Gets the axes. See <see cref=\"P:SharpDX.DirectInput.EffectParameters.Axes\"/> and <see cref=\"P:SharpDX.DirectInput.EffectParameters.Directions\"/>.\n            </summary>\n            <param name=\"axes\">The axes.</param>\n            <param name=\"directions\">The directions.</param>\n        </member>\n        <member name=\"M:SharpDX.DirectInput.EffectParameters.SetAxes(System.Int32[],System.Int32[])\">\n            <summary>\n            Sets the axes. See <see cref=\"P:SharpDX.DirectInput.EffectParameters.Axes\"/> and <see cref=\"P:SharpDX.DirectInput.EffectParameters.Directions\"/>.\n            </summary>\n            <param name=\"axes\">The axes.</param>\n            <param name=\"directions\">The directions.</param>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectParameters.Size\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIEFFECT::dwSize']/*\"/>\t\n            <unmanaged>unsigned int dwSize</unmanaged>\t\n            <unmanaged-short>unsigned int dwSize</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectParameters.Flags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIEFFECT::dwFlags']/*\"/>\t\n            <unmanaged>DIEFF dwFlags</unmanaged>\t\n            <unmanaged-short>DIEFF dwFlags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectParameters.Duration\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIEFFECT::dwDuration']/*\"/>\t\n            <unmanaged>unsigned int dwDuration</unmanaged>\t\n            <unmanaged-short>unsigned int dwDuration</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectParameters.SamplePeriod\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIEFFECT::dwSamplePeriod']/*\"/>\t\n            <unmanaged>unsigned int dwSamplePeriod</unmanaged>\t\n            <unmanaged-short>unsigned int dwSamplePeriod</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectParameters.Gain\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIEFFECT::dwGain']/*\"/>\t\n            <unmanaged>unsigned int dwGain</unmanaged>\t\n            <unmanaged-short>unsigned int dwGain</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectParameters.TriggerButton\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIEFFECT::dwTriggerButton']/*\"/>\t\n            <unmanaged>unsigned int dwTriggerButton</unmanaged>\t\n            <unmanaged-short>unsigned int dwTriggerButton</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectParameters.TriggerRepeatInterval\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIEFFECT::dwTriggerRepeatInterval']/*\"/>\t\n            <unmanaged>unsigned int dwTriggerRepeatInterval</unmanaged>\t\n            <unmanaged-short>unsigned int dwTriggerRepeatInterval</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectParameters.AxeCount\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIEFFECT::cAxes']/*\"/>\t\n            <unmanaged>unsigned int cAxes</unmanaged>\t\n            <unmanaged-short>unsigned int cAxes</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectParameters.AxePointer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIEFFECT::rgdwAxes']/*\"/>\t\n            <unmanaged>unsigned int* rgdwAxes</unmanaged>\t\n            <unmanaged-short>unsigned int rgdwAxes</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectParameters.DirectionPointer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIEFFECT::rglDirection']/*\"/>\t\n            <unmanaged>int* rglDirection</unmanaged>\t\n            <unmanaged-short>int rglDirection</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectParameters.EnvelopePointer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIEFFECT::lpEnvelope']/*\"/>\t\n            <unmanaged>DIENVELOPE* lpEnvelope</unmanaged>\t\n            <unmanaged-short>DIENVELOPE lpEnvelope</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectParameters.TypeSpecificParamCount\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIEFFECT::cbTypeSpecificParams']/*\"/>\t\n            <unmanaged>unsigned int cbTypeSpecificParams</unmanaged>\t\n            <unmanaged-short>unsigned int cbTypeSpecificParams</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectParameters.TypeSpecificParamPointer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIEFFECT::lpvTypeSpecificParams']/*\"/>\t\n            <unmanaged>void* lpvTypeSpecificParams</unmanaged>\t\n            <unmanaged-short>void lpvTypeSpecificParams</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectParameters.StartDelay\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIEFFECT::dwStartDelay']/*\"/>\t\n            <unmanaged>unsigned int dwStartDelay</unmanaged>\t\n            <unmanaged-short>unsigned int dwStartDelay</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.DirectInput.EffectParameters.Envelope\">\n            <summary>\n            Optional Envelope structure that describes the envelope to be used by this effect. Not all effect types use envelope. If no envelope is to be applied, the member should be set to null. \n            </summary>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.EffectParameters.Axes\">\n            <summary>\n            Gets or sets an array containing identifiers or offsets identifying the axes to which the effect is to be applied. \n            The flags <see cref=\"F:SharpDX.DirectInput.EffectFlags.ObjectIds\"/> and <see cref=\"F:SharpDX.DirectInput.EffectFlags.ObjectOffsets\"/> determine the semantics of the values in the array.\n            The list of axes associated with an effect cannot be changed once it has been set.\n            No more than 32 axes can be associated with a single effect. \n            </summary>\n            <value>The axes.</value>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.EffectParameters.Directions\">\n            <summary>\n            Gets or sets an array containing either Cartesian coordinates, polar coordinates, or spherical coordinates. \n            The flags <see cref=\"F:SharpDX.DirectInput.EffectFlags.Cartesian\"/>, <see cref=\"F:SharpDX.DirectInput.EffectFlags.Polar\"/>, and <see cref=\"F:SharpDX.DirectInput.EffectFlags.Spherical\"/> determine the semantics of the values in the array.\n            If Cartesian, each value in Directions is associated with the corresponding axis in Axes.\n            If polar, the angle is measured in hundredths of degrees from the (0, - 1) direction, rotated in the direction of (1, 0). This usually means that north is away from the user, and east is to the user's right. The last element is not used.\n            If spherical, the first angle is measured in hundredths of a degree from the (1, 0) direction, rotated in the direction of (0, 1). The second angle (if the number of axes is three or more) is measured in hundredths of a degree toward (0, 0, 1). The third angle (if the number of axes is four or more) is measured in hundredths of a degree toward (0, 0, 0, 1), and so on. The last element is not used. \n            </summary>\n            <value>The directions.</value>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.EffectParameters.Parameters\">\n            <summary>\n            Gets or sets the type specific parameter.\n            Reference to a type-specific parameters, or null  if there are no type-specific parameters.\n            If the effect is of type <see cref=\"F:SharpDX.DirectInput.EffectType.Condition\"/>, this member contains an indirect reference to a ConditionSet structures that define the parameters for the condition. A single structure may be used, in which case the condition is applied in the direction specified in the Directions array. Otherwise, there must be one structure for each axis, in the same order as the axes in rgdwAxes array. If a structure is supplied for each axis, the effect should not be rotated; you should use the following values in the Directions array: <see cref=\"F:SharpDX.DirectInput.EffectFlags.Spherical\"/> : 0, 0, ... / <see cref=\"F:SharpDX.DirectInput.EffectFlags.Polar\"/>: 9000, 0, ... / <see cref=\"F:SharpDX.DirectInput.EffectFlags.Cartesian\"/>: 1, 0, ...\n            If the effect is of type <see cref=\"F:SharpDX.DirectInput.EffectType.CustomForce\"/>, this member contains an indirect reference to a <see cref=\"T:SharpDX.DirectInput.CustomForce\"/> that defines the parameters for the custom force.\n            If the effect is of type <see cref=\"F:SharpDX.DirectInput.EffectType.Periodic\"/>, this member contains a pointer to a <see cref=\"T:SharpDX.DirectInput.PeriodicForce\"/> that defines the parameters for the effect.\n            If the effect is of type <see cref=\"F:SharpDX.DirectInput.EffectType.ConstantForce\"/>, this member contains a pointer to a <see cref=\"T:SharpDX.DirectInput.ConstantForce\"/> that defines the parameters for the constant force.\n            If the effect is of type <see cref=\"F:SharpDX.DirectInput.EffectType.RampForce\"/>, this member contains a pointer to a <see cref=\"T:SharpDX.DirectInput.RampForce\"/> that defines the parameters for the ramp force. \n            To gain access to the underlying structure, you need to call the method <see cref=\"M:SharpDX.DirectInput.TypeSpecificParameters.As``1\"/>.\n            </summary>\n            <value>The type specific parameter.</value>\n        </member>\n        <member name=\"T:SharpDX.DirectInput.EnumCreatedEffectsCallback\">\n            <summary>\n            Enumerator callback for DirectInput EnumCreatedEffects.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.DirectInput.EnumCreatedEffectsCallback.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectInput.EnumCreatedEffectsCallback\"/> class.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.EnumCreatedEffectsCallback.NativePointer\">\n            <summary>\n            Natives the pointer.\n            </summary>\n            <returns></returns>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.EnumCreatedEffectsCallback.Effects\">\n            <summary>\n            Gets or sets the informations.\n            </summary>\n            <value>The informations.</value>\n        </member>\n        <member name=\"T:SharpDX.DirectInput.EnumDevicesCallback\">\n            <summary>\n            Enumerator callback for DirectInput EnumDevices.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.DirectInput.EnumDevicesCallback.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectInput.EnumDevicesCallback\"/> class.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.EnumDevicesCallback.NativePointer\">\n            <summary>\n            Natives the pointer.\n            </summary>\n            <returns></returns>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.EnumDevicesCallback.DeviceInstances\">\n            <summary>\n            Gets or sets the informations.\n            </summary>\n            <value>The informations.</value>\n        </member>\n        <member name=\"T:SharpDX.DirectInput.EnumEffectsCallback\">\n            <summary>\n            Enumerator callback for DirectInput EnumEffects.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.DirectInput.EnumEffectsCallback.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectInput.EnumEffectsCallback\"/> class.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.EnumEffectsCallback.NativePointer\">\n            <summary>\n            Natives the pointer.\n            </summary>\n            <returns></returns>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.EnumEffectsCallback.EffectInfos\">\n            <summary>\n            Gets or sets the informations.\n            </summary>\n            <value>The informations.</value>\n        </member>\n        <member name=\"T:SharpDX.DirectInput.EnumEffectsInFileCallback\">\n            <summary>\n            Enumerator callback for DirectInput EnumEffectsInFile.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.DirectInput.EnumEffectsInFileCallback.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectInput.EnumEffectsInFileCallback\"/> class.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.EnumEffectsInFileCallback.NativePointer\">\n            <summary>\n            Natives the pointer.\n            </summary>\n            <returns></returns>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.EnumEffectsInFileCallback.EffectsInFile\">\n            <summary>\n            Gets or sets the informations.\n            </summary>\n            <value>The informations.</value>\n        </member>\n        <member name=\"T:SharpDX.DirectInput.EnumObjectsCallback\">\n            <summary>\n            Enumerator callback for DirectInput EnumObjects.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.DirectInput.EnumObjectsCallback.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectInput.EnumObjectsCallback\"/> class.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.EnumObjectsCallback.NativePointer\">\n            <summary>\n            Natives the pointer.\n            </summary>\n            <returns></returns>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.EnumObjectsCallback.Objects\">\n            <summary>\n            Gets or sets the informations.\n            </summary>\n            <value>The informations.</value>\n        </member>\n        <member name=\"T:SharpDX.DirectInput.Envelope\">\n            <summary>\t\n            Used by theDIEFFECTstructure to specify the optional envelope parameters for an effect. The sustain level for the envelope is represented by the dwMagnitude member of theDIPERIODICstructure and the lMagnitude member of theDICONSTANTFORCEstructure. The sustain time is represented by dwDuration member of theDIEFFECTstructure.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIENVELOPE']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.dienvelope</msdn-id>\t\n            <unmanaged>DIENVELOPE</unmanaged>\t\n            <unmanaged-short>DIENVELOPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Envelope.Size\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIENVELOPE::dwSize']/*\"/>\t\n            <unmanaged>unsigned int dwSize</unmanaged>\t\n            <unmanaged-short>unsigned int dwSize</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Envelope.AttackLevel\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIENVELOPE::dwAttackLevel']/*\"/>\t\n            <unmanaged>unsigned int dwAttackLevel</unmanaged>\t\n            <unmanaged-short>unsigned int dwAttackLevel</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Envelope.AttackTime\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIENVELOPE::dwAttackTime']/*\"/>\t\n            <unmanaged>unsigned int dwAttackTime</unmanaged>\t\n            <unmanaged-short>unsigned int dwAttackTime</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Envelope.FadeLevel\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIENVELOPE::dwFadeLevel']/*\"/>\t\n            <unmanaged>unsigned int dwFadeLevel</unmanaged>\t\n            <unmanaged-short>unsigned int dwFadeLevel</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Envelope.FadeTime\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIENVELOPE::dwFadeTime']/*\"/>\t\n            <unmanaged>unsigned int dwFadeTime</unmanaged>\t\n            <unmanaged-short>unsigned int dwFadeTime</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectInput.CooperativeLevel\">\n            <summary>\t\nFlags that specify the cooperative level to associate with the input device. This flag is used by <see cref=\"M:SharpDX.DirectInput.Device.SetCooperativeLevel(System.Windows.Forms.Control,SharpDX.DirectInput.CooperativeLevel)\"/> method.\n</summary>\t\n            <unmanaged>DISCL</unmanaged>\t\n            <unmanaged-short>DISCL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.CooperativeLevel.Exclusive\">\n            <summary>\t\nThe application is requesting an exclusive access to the device. If the exclusive access is authorized, no other instance of the device can get an exclusive access to the device while it is acquired. Note that non-exclusive access to the input device is always authorized, even when another application has an exclusive access.  In exclusive mode, an application that acquires the mouse or keyboard device must unacquire the input device when it receives a windows event message WM_ENTERSIZEMOVE or WM_ENTERMENULOOP. Otherwise, the user won't be able to access to the menu or move and resize the window.\n</summary>\t\n            <unmanaged>DISCL_EXCLUSIVE</unmanaged>\t\n            <unmanaged-short>DISCL_EXCLUSIVE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.CooperativeLevel.NonExclusive\">\n            <summary>\t\nThe application is requesting a non-exclusive access to the device. There is no interference even if another application is using the same device. \n</summary>\t\n            <unmanaged>DISCL_NONEXCLUSIVE</unmanaged>\t\n            <unmanaged-short>DISCL_NONEXCLUSIVE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.CooperativeLevel.Foreground\">\n            <summary>\t\nThe application is requesting a foreground access to the device. If the foreground access is authorized and the associated window moves to the background, the device is automatically unacquired.\n</summary>\t\n            <unmanaged>DISCL_FOREGROUND</unmanaged>\t\n            <unmanaged-short>DISCL_FOREGROUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.CooperativeLevel.Background\">\n            <summary>\t\nThe application is requesting a background access to the device. If background access is authorized, the device can be acquired even when the associated window is not the active window.\n</summary>\t\n            <unmanaged>DISCL_BACKGROUND</unmanaged>\t\n            <unmanaged-short>DISCL_BACKGROUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.CooperativeLevel.NoWinKey\">\n            <summary>\t\nThe application is requesting to disable the Windows logo key effect. When this flag is set, the user cannot perturbate the application. However, when the default action mapping UI is displayed, the Windows logo key is operating as long as that UI is opened. Consequently, this flag has no effect in this situation.\n</summary>\t\n            <unmanaged>DISCL_NOWINKEY</unmanaged>\t\n            <unmanaged-short>DISCL_NOWINKEY</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectInput.DataFormatFlag\">\n            <summary>\t\nFlags describing other attributes of the <see cref=\"T:SharpDX.DirectInput.DataFormat\"/>.\t\n</summary>\t\n            <unmanaged>DIDF</unmanaged>\t\n            <unmanaged-short>DIDF</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DataFormatFlag.AbsoluteAxis\">\n            <summary>\t\nThe axes are specified in absolute mode. Specifying this flag in <see cref=\"T:SharpDX.DirectInput.DataFormat\"/> equals to manually setting the axis mode property, using the <see cref=\"P:SharpDX.DirectInput.DeviceProperties.AxisMode\"/> property on the <see cref=\"T:SharpDX.DirectInput.Device\"/>. \n<para>xUsage of this flag is exclusive with <see cref=\"F:SharpDX.DirectInput.DataFormatFlag.RelativeAxis\"/> flag.</para>\n</summary>\t\n            <unmanaged>DIDF_ABSAXIS</unmanaged>\t\n            <unmanaged-short>DIDF_ABSAXIS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DataFormatFlag.RelativeAxis\">\n            <summary>\t\nThe axes are specified in relative mode. Specifying this flag in <see cref=\"T:SharpDX.DirectInput.DataFormat\"/> equals to manually setting the axis mode property using the <see cref=\"P:SharpDX.DirectInput.DeviceProperties.AxisMode\"/> property on the <see cref=\"T:SharpDX.DirectInput.Device\"/>. \n<para>Usage of this flag is exclusive with <see cref=\"F:SharpDX.DirectInput.DataFormatFlag.AbsoluteAxis\"/> flag.</para>\n</summary>\t\n            <unmanaged>DIDF_RELAXIS</unmanaged>\t\n            <unmanaged-short>DIDF_RELAXIS</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectInput.DeviceAxisMode\">\n            <summary>\t\nDevice Axis mode. This flag is used by the <see cref=\"P:SharpDX.DirectInput.DeviceProperties.AxisMode\"/> property on the <see cref=\"T:SharpDX.DirectInput.Device\"/>.\n</summary>\t\n            <unmanaged>DIPROPAXISMODE</unmanaged>\t\n            <unmanaged-short>DIPROPAXISMODE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceAxisMode.Absolute\">\n            <summary>\t\nThe axes are specified in absolute mode for the whole device.\n</summary>\t\n            <unmanaged>DIPROPAXISMODE_ABS</unmanaged>\t\n            <unmanaged-short>DIPROPAXISMODE_ABS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceAxisMode.Relative\">\n            <summary>\t\nThe axes are specified in relative mode for the whole device.\n</summary>\t\n            <unmanaged>DIPROPAXISMODE_REL</unmanaged>\t\n            <unmanaged-short>DIPROPAXISMODE_REL</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectInput.DeviceClass\">\n            <summary>\t\nDevice class filter used by <see cref=\"M:SharpDX.DirectInput.DirectInput.GetDevices(SharpDX.DirectInput.DeviceClass,SharpDX.DirectInput.DeviceEnumerationFlags)\"/> method.\n</summary>\t\n            <unmanaged>DI8DEVCLASS</unmanaged>\t\n            <unmanaged-short>DI8DEVCLASS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceClass.All\">\n            <summary>\t\nAll devices.\n</summary>\t\n            <unmanaged>DI8DEVCLASS_ALL</unmanaged>\t\n            <unmanaged-short>DI8DEVCLASS_ALL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceClass.Device\">\n            <summary>\t\nAll devices that do not fall into another class.\n</summary>\t\n            <unmanaged>DI8DEVCLASS_DEVICE</unmanaged>\t\n            <unmanaged-short>DI8DEVCLASS_DEVICE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceClass.Pointer\">\n            <summary>\t\nAll devices of type <see cref=\"F:SharpDX.DirectInput.DeviceType.Mouse\"/> and <see cref=\"F:SharpDX.DirectInput.DeviceType.ScreenPointer\"/>.\n</summary>\t\n            <unmanaged>DI8DEVCLASS_POINTER</unmanaged>\t\n            <unmanaged-short>DI8DEVCLASS_POINTER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceClass.Keyboard\">\n            <summary>\t\nAll keyboards. Equivalent to <see cref=\"F:SharpDX.DirectInput.DeviceType.Keyboard\"/>.\n</summary>\t\n            <unmanaged>DI8DEVCLASS_KEYBOARD</unmanaged>\t\n            <unmanaged-short>DI8DEVCLASS_KEYBOARD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceClass.GameControl\">\n            <summary>\t\nAll game controllers.\n</summary>\t\n            <unmanaged>DI8DEVCLASS_GAMECTRL</unmanaged>\t\n            <unmanaged-short>DI8DEVCLASS_GAMECTRL</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectInput.DeviceEnumerationFlags\">\n            <summary>\t\nFlags that refine the scope of the enumeration used by <see cref=\"M:SharpDX.DirectInput.DirectInput.GetDevices(SharpDX.DirectInput.DeviceClass,SharpDX.DirectInput.DeviceEnumerationFlags)\"/> \nand <see cref=\"M:SharpDX.DirectInput.DirectInput.GetDevices(SharpDX.DirectInput.DeviceType,SharpDX.DirectInput.DeviceEnumerationFlags)\"/> methods.\n</summary>\t\n            <unmanaged>DIEDFL</unmanaged>\t\n            <unmanaged-short>DIEDFL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceEnumerationFlags.AllDevices\">\n            <summary>\t\nAll installed devices are enumerated. This is the default behavior.\n</summary>\t\n            <unmanaged>DIEDFL_ALLDEVICES</unmanaged>\t\n            <unmanaged-short>DIEDFL_ALLDEVICES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceEnumerationFlags.AttachedOnly\">\n            <summary>\t\nOnly attached and installed devices.\n</summary>\t\n            <unmanaged>DIEDFL_ATTACHEDONLY</unmanaged>\t\n            <unmanaged-short>DIEDFL_ATTACHEDONLY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceEnumerationFlags.ForceFeedback\">\n            <summary>\t\nOnly devices that support force feedback.\n</summary>\t\n            <unmanaged>DIEDFL_FORCEFEEDBACK</unmanaged>\t\n            <unmanaged-short>DIEDFL_FORCEFEEDBACK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceEnumerationFlags.IncludeAliases\">\n            <summary>\t\nInclude devices that are aliases for other devices. \n</summary>\t\n            <unmanaged>DIEDFL_INCLUDEALIASES</unmanaged>\t\n            <unmanaged-short>DIEDFL_INCLUDEALIASES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceEnumerationFlags.IncludePhantoms\">\n            <summary>\t\nInclude hidden devices. For more information about hidden devices, see <see cref=\"T:SharpDX.DirectInput.Capabilities\"/>.\n</summary>\t\n            <unmanaged>DIEDFL_INCLUDEPHANTOMS</unmanaged>\t\n            <unmanaged-short>DIEDFL_INCLUDEPHANTOMS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceEnumerationFlags.IncludeHidden\">\n            <summary>\t\nInclude phantom (placeholder) devices.\n</summary>\t\n            <unmanaged>DIEDFL_INCLUDEHIDDEN</unmanaged>\t\n            <unmanaged-short>DIEDFL_INCLUDEHIDDEN</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectInput.DeviceFlags\">\n            <summary>\t\nFlags associated with the device.\n</summary>\t\n            <unmanaged>DIDC</unmanaged>\t\n            <unmanaged-short>DIDC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceFlags.Attached\">\n            <summary>\t\nThe device is physically attached to the user's computer. \n</summary>\t\n            <unmanaged>DIDC_ATTACHED</unmanaged>\t\n            <unmanaged-short>DIDC_ATTACHED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceFlags.PolledDevice\">\n            <summary>\t\nAt least one object on the device is polled, rather than interrupt-driven. For these objects, the application must explicitly call the <see cref=\"T:SharpDX.DirectInput.Device\"/> Interface method to obtain data. HID devices can contain a mixture of polled and nonpolled objects. \n</summary>\t\n            <unmanaged>DIDC_POLLEDDEVICE</unmanaged>\t\n            <unmanaged-short>DIDC_POLLEDDEVICE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceFlags.Emulated\">\n            <summary>\t\nIf this flag is set, the data is coming from a user mode device interface, such as a Human Interface Device (human interface device), or by some other ring 3 means. If it is not set, the data is coming directly from a kernel mode driver.\n</summary>\t\n            <unmanaged>DIDC_EMULATED</unmanaged>\t\n            <unmanaged-short>DIDC_EMULATED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceFlags.PolledDataFormat\">\n            <summary>\t\nAt least one object in the current data format is polled, rather than interrupt-driven. For these objects, the application must explicitly call the <see cref=\"T:SharpDX.DirectInput.Device\"/> Interface method to obtain data. \n</summary>\t\n            <unmanaged>DIDC_POLLEDDATAFORMAT</unmanaged>\t\n            <unmanaged-short>DIDC_POLLEDDATAFORMAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceFlags.ForceFeedback\">\n            <summary>\t\nThe device supports force feedback. \n</summary>\t\n            <unmanaged>DIDC_FORCEFEEDBACK</unmanaged>\t\n            <unmanaged-short>DIDC_FORCEFEEDBACK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceFlags.ForwardFeedbackAttack\">\n            <summary>\t\nThe force-feedback system supports the attack parameter for at least one effect. \n<para>If the device does not support attack, the attack level and attack time members of the <see cref=\"T:SharpDX.DirectInput.Envelope\"/> structure are ignored by the device. </para>\n<para>After a call to the <see cref=\"M:SharpDX.DirectInput.Device.GetEffectInfo(System.Guid)\"/> method, an individual effect sets the <see cref=\"F:SharpDX.DirectInput.EffectType.Attack\"/> flag if attack is supported for that effect.</para>\n</summary>\t\n            <unmanaged>DIDC_FFATTACK</unmanaged>\t\n            <unmanaged-short>DIDC_FFATTACK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceFlags.ForceFeedbackDate\">\n            <summary>\t\nThe force-feedback system supports the fade parameter for at least one effect. \n<para>If the device does not support fade, the fade level and fade time members of the <see cref=\"T:SharpDX.DirectInput.Envelope\"/> structure are ignored by the device. </para>\n<para>After a call to the <see cref=\"M:SharpDX.DirectInput.Device.GetEffectInfo(System.Guid)\"/> method, an individual effect sets the <see cref=\"F:SharpDX.DirectInput.EffectType.Fade\"/> flag if fade is supported for that effect.</para>\n</summary>\t\n            <unmanaged>DIDC_FFFADE</unmanaged>\t\n            <unmanaged-short>DIDC_FFFADE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceFlags.Saturation\">\n            <summary>\t\nThe force-feedback system supports the saturation of condition effects for at least one condition. If the device does not support saturation, the force generated by a condition is limited only by the maximum force that the device can generate.\n<para>After a call to the <see cref=\"M:SharpDX.DirectInput.Device.GetEffectInfo(System.Guid)\"/> method, an individual condition sets the <see cref=\"F:SharpDX.DirectInput.EffectType.Saturation\"/> flag if saturation is supported for that condition.</para>\n</summary>\t\n            <unmanaged>DIDC_SATURATION</unmanaged>\t\n            <unmanaged-short>DIDC_SATURATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceFlags.PositiveNegativeCoeeficients\">\n            <summary>\t\nThe force-feedback system supports two coefficient values for conditions (one for the positive displacement of the axis and one for the negative displacement of the axis) for at least one condition. If the device does not support both coefficients, the negative coefficient in the <see cref=\"T:SharpDX.DirectInput.Condition\"/> structure is ignored.\n<para>After a call to the <see cref=\"M:SharpDX.DirectInput.Device.GetEffectInfo(System.Guid)\"/> method, an individual condition sets the <see cref=\"F:SharpDX.DirectInput.EffectType.TwoCoefficients\"/> flag if separate positive and negative coefficients are supported for that condition.</para>\n</summary>\t\n            <unmanaged>DIDC_POSNEGCOEFFICIENTS</unmanaged>\t\n            <unmanaged-short>DIDC_POSNEGCOEFFICIENTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceFlags.PositiveNegativeSaturation\">\n            <summary>\t\nThe force-feedback system supports a maximum saturation for both positive and negative force output for at least one condition. If the device does not support both saturation values, the negative saturation in the <see cref=\"T:SharpDX.DirectInput.Condition\"/> structure is ignored.\n<para>After a call to the IDirectInputDevice8::GetEffectInfo method, an individual condition sets the <see cref=\"F:SharpDX.DirectInput.EffectType.TwoSaturations\"/> flag if separate positive and negative saturation are supported for that condition.</para>\n</summary>\t\n            <unmanaged>DIDC_POSNEGSATURATION</unmanaged>\t\n            <unmanaged-short>DIDC_POSNEGSATURATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceFlags.DeadBand\">\n            <summary>\t\nThe device supports deadband for at least one force-feedback condition. \n</summary>\t\n            <unmanaged>DIDC_DEADBAND</unmanaged>\t\n            <unmanaged-short>DIDC_DEADBAND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceFlags.StartDelay\">\n            <summary>\t\nThe force-feedback system supports the start delay parameter for at least one effect. If the device does not support start delays, the <see cref=\"F:SharpDX.DirectInput.EffectParameters.StartDelay\"/> member of the <see cref=\"T:SharpDX.DirectInput.EffectParameters\"/> structure is ignored. \n</summary>\t\n            <unmanaged>DIDC_STARTDELAY</unmanaged>\t\n            <unmanaged-short>DIDC_STARTDELAY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceFlags.Alias\">\n            <summary>\t\nThe device is a alias to another DirectInput device. Alias devices are by default not returned by <see cref=\"M:SharpDX.DirectInput.DirectInput.GetDevices\"/>.\n</summary>\t\n            <unmanaged>DIDC_ALIAS</unmanaged>\t\n            <unmanaged-short>DIDC_ALIAS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceFlags.Phantom\">\n            <summary>\t\nPlaceholder. Phantom devices are by default not enumerated by <see cref=\"M:SharpDX.DirectInput.DirectInput.GetDevices\"/>. \n</summary>\t\n            <unmanaged>DIDC_PHANTOM</unmanaged>\t\n            <unmanaged-short>DIDC_PHANTOM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceFlags.Hidden\">\n            <summary>\t\nFictitious device created by a device driver so that it can generate keyboard and mouse events. Such devices are not normally returned by <see cref=\"M:SharpDX.DirectInput.DirectInput.GetDevices\"/>. \n</summary>\t\n            <unmanaged>DIDC_HIDDEN</unmanaged>\t\n            <unmanaged-short>DIDC_HIDDEN</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectInput.DeviceObjectTypeFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDFT_FLAGS']/*\"/>\t\n            <unmanaged>DIDFT_FLAGS</unmanaged>\t\n            <unmanaged-short>DIDFT_FLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceObjectTypeFlags.All\">\n            <summary>\t\nAll objects.\n</summary>\t\n            <unmanaged>DIDFT_ALL</unmanaged>\t\n            <unmanaged-short>DIDFT_ALL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceObjectTypeFlags.RelativeAxis\">\n            <summary>\t\nA relative axis.\n</summary>\t\n            <unmanaged>DIDFT_RELAXIS</unmanaged>\t\n            <unmanaged-short>DIDFT_RELAXIS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceObjectTypeFlags.AbsoluteAxis\">\n            <summary>\t\nAn absolute axis.\n</summary>\t\n            <unmanaged>DIDFT_ABSAXIS</unmanaged>\t\n            <unmanaged-short>DIDFT_ABSAXIS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceObjectTypeFlags.Axis\">\n            <summary>\t\nAn axis, either absolute or relative.\n</summary>\t\n            <unmanaged>DIDFT_AXIS</unmanaged>\t\n            <unmanaged-short>DIDFT_AXIS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceObjectTypeFlags.PushButton\">\n            <summary>\t\nA push button. A push button is reported as down when the user presses it, and as up when the user releases it.\n</summary>\t\n            <unmanaged>DIDFT_PSHBUTTON</unmanaged>\t\n            <unmanaged-short>DIDFT_PSHBUTTON</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceObjectTypeFlags.ToggleButton\">\n            <summary>\t\nA toggle button. A toggle button is reported as down when the user presses it and remains so until the user presses the button a second time.\n</summary>\t\n            <unmanaged>DIDFT_TGLBUTTON</unmanaged>\t\n            <unmanaged-short>DIDFT_TGLBUTTON</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceObjectTypeFlags.Button\">\n            <summary>\t\nA push button or a toggle button.\n</summary>\t\n            <unmanaged>DIDFT_BUTTON</unmanaged>\t\n            <unmanaged-short>DIDFT_BUTTON</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceObjectTypeFlags.PointOfViewController\">\n            <summary>\t\nA point-of-view controller.\n</summary>\t\n            <unmanaged>DIDFT_POV</unmanaged>\t\n            <unmanaged-short>DIDFT_POV</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceObjectTypeFlags.Collection\">\n            <summary>\t\nA HID link collection. HID link collections do not generate data of their own.\n</summary>\t\n            <unmanaged>DIDFT_COLLECTION</unmanaged>\t\n            <unmanaged-short>DIDFT_COLLECTION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceObjectTypeFlags.NoData\">\n            <summary>\t\nAn object that does not generate any data.\n</summary>\t\n            <unmanaged>DIDFT_NODATA</unmanaged>\t\n            <unmanaged-short>DIDFT_NODATA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceObjectTypeFlags.AnyInstance\">\n            <summary>\t\nAny instance mask.\n</summary>\t\n            <unmanaged>DIDFT_ANYINSTANCE</unmanaged>\t\n            <unmanaged-short>DIDFT_ANYINSTANCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceObjectTypeFlags.ForceFeedbackActuator\">\n            <summary>\t\nAn object that contains a force-feedback actuator. In other words, forces can be applied to this object.\n</summary>\t\n            <unmanaged>DIDFT_FFACTUATOR</unmanaged>\t\n            <unmanaged-short>DIDFT_FFACTUATOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceObjectTypeFlags.ForceFeedbackEffectTrigger\">\n            <summary>\t\nAn object that can be used to trigger force-feedback effects.\n</summary>\t\n            <unmanaged>DIDFT_FFEFFECTTRIGGER</unmanaged>\t\n            <unmanaged-short>DIDFT_FFEFFECTTRIGGER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceObjectTypeFlags.Output\">\n            <summary>\t\nAn object that supports output. Not supported.\n</summary>\t\n            <unmanaged>DIDFT_OUTPUT</unmanaged>\t\n            <unmanaged-short>DIDFT_OUTPUT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceObjectTypeFlags.VendorDefined\">\n            <summary>\t\nAn object of a type defined by the manufacturer.\n</summary>\t\n            <unmanaged>DIDFT_VENDORDEFINED</unmanaged>\t\n            <unmanaged-short>DIDFT_VENDORDEFINED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceObjectTypeFlags.Alias\">\n            <summary>\t\nControls identified by a Human Interface Device <see cref=\"!:UsageId\"/> alias. This flag applies only to HID-compliant USB devices.\n</summary>\t\n            <unmanaged>DIDFT_ALIAS</unmanaged>\t\n            <unmanaged-short>DIDFT_ALIAS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceObjectTypeFlags.Optional\">\n            <summary>\t\nSpecify that this type is optional.\n</summary>\t\n            <unmanaged>DIDFT_OPTIONAL</unmanaged>\t\n            <unmanaged-short>DIDFT_OPTIONAL</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectInput.DeviceType\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DI8DEVTYPE']/*\"/>\t\n            <unmanaged>DI8DEVTYPE</unmanaged>\t\n            <unmanaged-short>DI8DEVTYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceType.Device\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DI8DEVTYPE_DEVICE']/*\"/>\t\n            <unmanaged>DI8DEVTYPE_DEVICE</unmanaged>\t\n            <unmanaged-short>DI8DEVTYPE_DEVICE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceType.Mouse\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DI8DEVTYPE_MOUSE']/*\"/>\t\n            <unmanaged>DI8DEVTYPE_MOUSE</unmanaged>\t\n            <unmanaged-short>DI8DEVTYPE_MOUSE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceType.Keyboard\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DI8DEVTYPE_KEYBOARD']/*\"/>\t\n            <unmanaged>DI8DEVTYPE_KEYBOARD</unmanaged>\t\n            <unmanaged-short>DI8DEVTYPE_KEYBOARD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceType.Joystick\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DI8DEVTYPE_JOYSTICK']/*\"/>\t\n            <unmanaged>DI8DEVTYPE_JOYSTICK</unmanaged>\t\n            <unmanaged-short>DI8DEVTYPE_JOYSTICK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceType.Gamepad\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DI8DEVTYPE_GAMEPAD']/*\"/>\t\n            <unmanaged>DI8DEVTYPE_GAMEPAD</unmanaged>\t\n            <unmanaged-short>DI8DEVTYPE_GAMEPAD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceType.Driving\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DI8DEVTYPE_DRIVING']/*\"/>\t\n            <unmanaged>DI8DEVTYPE_DRIVING</unmanaged>\t\n            <unmanaged-short>DI8DEVTYPE_DRIVING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceType.Flight\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DI8DEVTYPE_FLIGHT']/*\"/>\t\n            <unmanaged>DI8DEVTYPE_FLIGHT</unmanaged>\t\n            <unmanaged-short>DI8DEVTYPE_FLIGHT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceType.FirstPerson\">\n            <summary>\t\nFirst-person action game device. The following subtypes are defined.\n</summary>\t\n            <unmanaged>DI8DEVTYPE_1STPERSON</unmanaged>\t\n            <unmanaged-short>DI8DEVTYPE_1STPERSON</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceType.ControlDevice\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DI8DEVTYPE_DEVICECTRL']/*\"/>\t\n            <unmanaged>DI8DEVTYPE_DEVICECTRL</unmanaged>\t\n            <unmanaged-short>DI8DEVTYPE_DEVICECTRL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceType.ScreenPointer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DI8DEVTYPE_SCREENPOINTER']/*\"/>\t\n            <unmanaged>DI8DEVTYPE_SCREENPOINTER</unmanaged>\t\n            <unmanaged-short>DI8DEVTYPE_SCREENPOINTER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceType.Remote\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DI8DEVTYPE_REMOTE']/*\"/>\t\n            <unmanaged>DI8DEVTYPE_REMOTE</unmanaged>\t\n            <unmanaged-short>DI8DEVTYPE_REMOTE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceType.Supplemental\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DI8DEVTYPE_SUPPLEMENTAL']/*\"/>\t\n            <unmanaged>DI8DEVTYPE_SUPPLEMENTAL</unmanaged>\t\n            <unmanaged-short>DI8DEVTYPE_SUPPLEMENTAL</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectInput.EffectFileFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIFEF']/*\"/>\t\n            <unmanaged>DIFEF</unmanaged>\t\n            <unmanaged-short>DIFEF</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectFileFlags.None\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIFEF_DEFAULT']/*\"/>\t\n            <unmanaged>DIFEF_DEFAULT</unmanaged>\t\n            <unmanaged-short>DIFEF_DEFAULT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectFileFlags.IncludeNonStandard\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIFEF_INCLUDENONSTANDARD']/*\"/>\t\n            <unmanaged>DIFEF_INCLUDENONSTANDARD</unmanaged>\t\n            <unmanaged-short>DIFEF_INCLUDENONSTANDARD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectFileFlags.ModidyIfNeeded\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIFEF_MODIFYIFNEEDED']/*\"/>\t\n            <unmanaged>DIFEF_MODIFYIFNEEDED</unmanaged>\t\n            <unmanaged-short>DIFEF_MODIFYIFNEEDED</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectInput.EffectFlags\">\n            <summary>\t\n            Used by theIDirectInputDevice8::CreateEffectmethod to initialize a newIDirectInputEffect Interfaceobject. It is also used by theIDirectInputEffect::SetParametersandIDirectInputEffect::GetParametersmethods.\t\n            </summary>\t\n            <remarks>\t\n            <table><tr><th>Note </th></tr><tr><td>The  <em>rglDirection</em> array must contain  <em>cAxes</em> entries, even if polar or spherical coordinates are given. In these cases, the last element in the  <em>rglDirection</em> array is reserved and must be 0. </td></tr></table>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIEFF']/*\"/>\t\n            <msdn-id>ee416616</msdn-id>\t\n            <unmanaged>DIEFF</unmanaged>\t\n            <unmanaged-short>DIEFF</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectFlags.ObjectIds\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIEFF_OBJECTIDS']/*\"/>\t\n            <unmanaged>DIEFF_OBJECTIDS</unmanaged>\t\n            <unmanaged-short>DIEFF_OBJECTIDS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectFlags.ObjectOffsets\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIEFF_OBJECTOFFSETS']/*\"/>\t\n            <unmanaged>DIEFF_OBJECTOFFSETS</unmanaged>\t\n            <unmanaged-short>DIEFF_OBJECTOFFSETS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectFlags.Cartesian\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIEFF_CARTESIAN']/*\"/>\t\n            <unmanaged>DIEFF_CARTESIAN</unmanaged>\t\n            <unmanaged-short>DIEFF_CARTESIAN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectFlags.Polar\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIEFF_POLAR']/*\"/>\t\n            <unmanaged>DIEFF_POLAR</unmanaged>\t\n            <unmanaged-short>DIEFF_POLAR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectFlags.Spherical\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIEFF_SPHERICAL']/*\"/>\t\n            <unmanaged>DIEFF_SPHERICAL</unmanaged>\t\n            <unmanaged-short>DIEFF_SPHERICAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectInput.EffectParameterFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIEP']/*\"/>\t\n            <unmanaged>DIEP</unmanaged>\t\n            <unmanaged-short>DIEP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectParameterFlags.Duration\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIEP_DURATION']/*\"/>\t\n            <unmanaged>DIEP_DURATION</unmanaged>\t\n            <unmanaged-short>DIEP_DURATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectParameterFlags.SamplePeriod\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIEP_SAMPLEPERIOD']/*\"/>\t\n            <unmanaged>DIEP_SAMPLEPERIOD</unmanaged>\t\n            <unmanaged-short>DIEP_SAMPLEPERIOD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectParameterFlags.Gain\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIEP_GAIN']/*\"/>\t\n            <unmanaged>DIEP_GAIN</unmanaged>\t\n            <unmanaged-short>DIEP_GAIN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectParameterFlags.TriggerButton\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIEP_TRIGGERBUTTON']/*\"/>\t\n            <unmanaged>DIEP_TRIGGERBUTTON</unmanaged>\t\n            <unmanaged-short>DIEP_TRIGGERBUTTON</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectParameterFlags.TriggerRepeatInterval\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIEP_TRIGGERREPEATINTERVAL']/*\"/>\t\n            <unmanaged>DIEP_TRIGGERREPEATINTERVAL</unmanaged>\t\n            <unmanaged-short>DIEP_TRIGGERREPEATINTERVAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectParameterFlags.Axes\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIEP_AXES']/*\"/>\t\n            <unmanaged>DIEP_AXES</unmanaged>\t\n            <unmanaged-short>DIEP_AXES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectParameterFlags.Direction\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIEP_DIRECTION']/*\"/>\t\n            <unmanaged>DIEP_DIRECTION</unmanaged>\t\n            <unmanaged-short>DIEP_DIRECTION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectParameterFlags.Envelope\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIEP_ENVELOPE']/*\"/>\t\n            <unmanaged>DIEP_ENVELOPE</unmanaged>\t\n            <unmanaged-short>DIEP_ENVELOPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectParameterFlags.TypeSpecificParameters\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIEP_TYPESPECIFICPARAMS']/*\"/>\t\n            <unmanaged>DIEP_TYPESPECIFICPARAMS</unmanaged>\t\n            <unmanaged-short>DIEP_TYPESPECIFICPARAMS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectParameterFlags.StartDelay\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIEP_STARTDELAY']/*\"/>\t\n            <unmanaged>DIEP_STARTDELAY</unmanaged>\t\n            <unmanaged-short>DIEP_STARTDELAY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectParameterFlags.AllExceptDelay\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIEP_ALLPARAMS_DX5']/*\"/>\t\n            <unmanaged>DIEP_ALLPARAMS_DX5</unmanaged>\t\n            <unmanaged-short>DIEP_ALLPARAMS_DX5</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectParameterFlags.All\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIEP_ALLPARAMS']/*\"/>\t\n            <unmanaged>DIEP_ALLPARAMS</unmanaged>\t\n            <unmanaged-short>DIEP_ALLPARAMS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectParameterFlags.Start\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIEP_START']/*\"/>\t\n            <unmanaged>DIEP_START</unmanaged>\t\n            <unmanaged-short>DIEP_START</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectParameterFlags.NoRestart\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIEP_NORESTART']/*\"/>\t\n            <unmanaged>DIEP_NORESTART</unmanaged>\t\n            <unmanaged-short>DIEP_NORESTART</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectParameterFlags.NoDownload\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIEP_NODOWNLOAD']/*\"/>\t\n            <unmanaged>DIEP_NODOWNLOAD</unmanaged>\t\n            <unmanaged-short>DIEP_NODOWNLOAD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectParameterFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectInput.EffectPlayFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIES']/*\"/>\t\n            <unmanaged>DIES</unmanaged>\t\n            <unmanaged-short>DIES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectPlayFlags.Solo\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIES_SOLO']/*\"/>\t\n            <unmanaged>DIES_SOLO</unmanaged>\t\n            <unmanaged-short>DIES_SOLO</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectPlayFlags.NoDownload\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIES_NODOWNLOAD']/*\"/>\t\n            <unmanaged>DIES_NODOWNLOAD</unmanaged>\t\n            <unmanaged-short>DIES_NODOWNLOAD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectPlayFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectInput.EffectStatus\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIEGES']/*\"/>\t\n            <unmanaged>DIEGES</unmanaged>\t\n            <unmanaged-short>DIEGES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectStatus.Playing\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIEGES_PLAYING']/*\"/>\t\n            <unmanaged>DIEGES_PLAYING</unmanaged>\t\n            <unmanaged-short>DIEGES_PLAYING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectStatus.Emulated\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIEGES_EMULATED']/*\"/>\t\n            <unmanaged>DIEGES_EMULATED</unmanaged>\t\n            <unmanaged-short>DIEGES_EMULATED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectStatus.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectInput.EffectType\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIEFT']/*\"/>\t\n            <unmanaged>DIEFT</unmanaged>\t\n            <unmanaged-short>DIEFT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectType.All\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIEFT_ALL']/*\"/>\t\n            <unmanaged>DIEFT_ALL</unmanaged>\t\n            <unmanaged-short>DIEFT_ALL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectType.ConstantForce\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIEFT_CONSTANTFORCE']/*\"/>\t\n            <unmanaged>DIEFT_CONSTANTFORCE</unmanaged>\t\n            <unmanaged-short>DIEFT_CONSTANTFORCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectType.RampForce\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIEFT_RAMPFORCE']/*\"/>\t\n            <unmanaged>DIEFT_RAMPFORCE</unmanaged>\t\n            <unmanaged-short>DIEFT_RAMPFORCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectType.Periodic\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIEFT_PERIODIC']/*\"/>\t\n            <unmanaged>DIEFT_PERIODIC</unmanaged>\t\n            <unmanaged-short>DIEFT_PERIODIC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectType.Condition\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIEFT_CONDITION']/*\"/>\t\n            <unmanaged>DIEFT_CONDITION</unmanaged>\t\n            <unmanaged-short>DIEFT_CONDITION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectType.CustomForce\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIEFT_CUSTOMFORCE']/*\"/>\t\n            <unmanaged>DIEFT_CUSTOMFORCE</unmanaged>\t\n            <unmanaged-short>DIEFT_CUSTOMFORCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectType.Hardware\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIEFT_HARDWARE']/*\"/>\t\n            <unmanaged>DIEFT_HARDWARE</unmanaged>\t\n            <unmanaged-short>DIEFT_HARDWARE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectType.Attack\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIEFT_FFATTACK']/*\"/>\t\n            <unmanaged>DIEFT_FFATTACK</unmanaged>\t\n            <unmanaged-short>DIEFT_FFATTACK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectType.Fade\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIEFT_FFFADE']/*\"/>\t\n            <unmanaged>DIEFT_FFFADE</unmanaged>\t\n            <unmanaged-short>DIEFT_FFFADE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectType.Saturation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIEFT_SATURATION']/*\"/>\t\n            <unmanaged>DIEFT_SATURATION</unmanaged>\t\n            <unmanaged-short>DIEFT_SATURATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectType.TwoCoefficients\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIEFT_POSNEGCOEFFICIENTS']/*\"/>\t\n            <unmanaged>DIEFT_POSNEGCOEFFICIENTS</unmanaged>\t\n            <unmanaged-short>DIEFT_POSNEGCOEFFICIENTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectType.TwoSaturations\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIEFT_POSNEGSATURATION']/*\"/>\t\n            <unmanaged>DIEFT_POSNEGSATURATION</unmanaged>\t\n            <unmanaged-short>DIEFT_POSNEGSATURATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectType.DeadBand\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIEFT_DEADBAND']/*\"/>\t\n            <unmanaged>DIEFT_DEADBAND</unmanaged>\t\n            <unmanaged-short>DIEFT_DEADBAND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectType.StartDelay\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIEFT_STARTDELAY']/*\"/>\t\n            <unmanaged>DIEFT_STARTDELAY</unmanaged>\t\n            <unmanaged-short>DIEFT_STARTDELAY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectType.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectInput.ForceFeedbackCommand\">\n            <summary>\n      Sends a command to the device's force-feedback system. The device must be acquired at the exclusive cooperative level for this method to succeed.\n      This flag is used by <see cref=\"M:SharpDX.DirectInput.Device.SendForceFeedbackCommand(SharpDX.DirectInput.ForceFeedbackCommand)\"/> method.\n    </summary>\t\n            <unmanaged>DISFFC</unmanaged>\t\n            <unmanaged-short>DISFFC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ForceFeedbackCommand.Reset\">\n            <summary>\n      Paused playback of all active effects is to be continued. It is an error to send this command when the device is not in a paused state.\n    </summary>\t\n            <unmanaged>DISFFC_RESET</unmanaged>\t\n            <unmanaged-short>DISFFC_RESET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ForceFeedbackCommand.StopAll\">\n            <summary>\n      Paused playback of all active effects is to be continued. It is an error to send this command when the device is not in a paused state.\n    </summary>\t\n            <unmanaged>DISFFC_STOPALL</unmanaged>\t\n            <unmanaged-short>DISFFC_STOPALL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ForceFeedbackCommand.Pause\">\n            <summary>\n      Paused playback of all active effects is to be continued. It is an error to send this command when the device is not in a paused state.\n    </summary>\t\n            <unmanaged>DISFFC_PAUSE</unmanaged>\t\n            <unmanaged-short>DISFFC_PAUSE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ForceFeedbackCommand.Continue\">\n            <summary>\n      Paused playback of all active effects is to be continued. It is an error to send this command when the device is not in a paused state.\n    </summary>\t\n            <unmanaged>DISFFC_CONTINUE</unmanaged>\t\n            <unmanaged-short>DISFFC_CONTINUE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ForceFeedbackCommand.SetActuatorsOn\">\n            <summary>\n      Paused playback of all active effects is to be continued. It is an error to send this command when the device is not in a paused state.\n    </summary>\t\n            <unmanaged>DISFFC_SETACTUATORSON</unmanaged>\t\n            <unmanaged-short>DISFFC_SETACTUATORSON</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ForceFeedbackCommand.SetActuatorsOff\">\n            <summary>\n      Paused playback of all active effects is to be continued. It is an error to send this command when the device is not in a paused state.\n    </summary>\t\n            <unmanaged>DISFFC_SETACTUATORSOFF</unmanaged>\t\n            <unmanaged-short>DISFFC_SETACTUATORSOFF</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectInput.ForceFeedbackState\">\n            <summary>\n      Retrieves the state of the device's force-feedback system.  The device must be acquired at the exclusive cooperative level for this method to succeed.\n      The method <see cref=\"M:SharpDX.DirectInput.Device.GetForceFeedbackState\"/> can return any valid combination of these flags.\n    </summary>\t\n            <unmanaged>DIGFFS</unmanaged>\t\n            <unmanaged-short>DIGFFS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ForceFeedbackState.Empty\">\n            <summary>\n      The device has no downloaded effects.\n    </summary>\t\n            <unmanaged>DIGFFS_EMPTY</unmanaged>\t\n            <unmanaged-short>DIGFFS_EMPTY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ForceFeedbackState.Stopped\">\n            <summary>\n      No effects are playing, and the device is not paused.\n    </summary>\t\n            <unmanaged>DIGFFS_STOPPED</unmanaged>\t\n            <unmanaged-short>DIGFFS_STOPPED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ForceFeedbackState.Paused\">\n            <summary>\n      Playback of all active effects has been paused.\n    </summary>\t\n            <unmanaged>DIGFFS_PAUSED</unmanaged>\t\n            <unmanaged-short>DIGFFS_PAUSED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ForceFeedbackState.ActuatorsOn\">\n            <summary>\n      The device's force-feedback actuators are enabled. If the device cannot report the actuator state, neither <see cref=\"F:SharpDX.DirectInput.ForceFeedbackState.ActuatorsOff\"/> nor <see cref=\"F:SharpDX.DirectInput.ForceFeedbackState.ActuatorsOn\"/> is returned.\n    </summary>\t\n            <unmanaged>DIGFFS_ACTUATORSON</unmanaged>\t\n            <unmanaged-short>DIGFFS_ACTUATORSON</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ForceFeedbackState.ActuatorsOff\">\n            <summary>\n      The device's force-feedback actuators are disabled. If the device cannot report the actuator state, neither <see cref=\"F:SharpDX.DirectInput.ForceFeedbackState.ActuatorsOff\"/> nor <see cref=\"F:SharpDX.DirectInput.ForceFeedbackState.ActuatorsOn\"/> is returned.\n    </summary>\t\n            <unmanaged>DIGFFS_ACTUATORSOFF</unmanaged>\t\n            <unmanaged-short>DIGFFS_ACTUATORSOFF</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ForceFeedbackState.PowerOn\">\n            <summary>\n      Power to the force-feedback system is currently available. If the device cannot report the power state, neither <see cref=\"F:SharpDX.DirectInput.ForceFeedbackState.PowerOn\"/> nor <see cref=\"F:SharpDX.DirectInput.ForceFeedbackState.PowerOff\"/> is returned.\n    </summary>\t\n            <unmanaged>DIGFFS_POWERON</unmanaged>\t\n            <unmanaged-short>DIGFFS_POWERON</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ForceFeedbackState.PowerOff\">\n            <summary>\n      The force-feedback system is not currently available. If the device cannot report the power state, neither <see cref=\"F:SharpDX.DirectInput.ForceFeedbackState.PowerOn\"/> nor <see cref=\"F:SharpDX.DirectInput.ForceFeedbackState.PowerOff\"/> is returned.\n    </summary>\t\n            <unmanaged>DIGFFS_POWEROFF</unmanaged>\t\n            <unmanaged-short>DIGFFS_POWEROFF</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ForceFeedbackState.SafetySwitchOn\">\n            <summary>\n      The safety switch is currently on; that is, the device can operate. If the device cannot report the state of the safety switch, neither <see cref=\"F:SharpDX.DirectInput.ForceFeedbackState.SafetySwitchOn\"/> nor <see cref=\"F:SharpDX.DirectInput.ForceFeedbackState.SafetySwitchOff\"/> is returned.\n    </summary>\t\n            <unmanaged>DIGFFS_SAFETYSWITCHON</unmanaged>\t\n            <unmanaged-short>DIGFFS_SAFETYSWITCHON</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ForceFeedbackState.SafetySwitchOff\">\n            <summary>\n      The safety switch is currently off; that is, the device cannot operate. If the device cannot report the state of the safety switch, neither <see cref=\"F:SharpDX.DirectInput.ForceFeedbackState.SafetySwitchOn\"/> nor <see cref=\"F:SharpDX.DirectInput.ForceFeedbackState.SafetySwitchOff\"/> is returned.\n    </summary>\t\n            <unmanaged>DIGFFS_SAFETYSWITCHOFF</unmanaged>\t\n            <unmanaged-short>DIGFFS_SAFETYSWITCHOFF</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ForceFeedbackState.UserSafetySwitchOn\">\n            <summary>\n      The user force-feedback switch is currently off; that is, the device cannot operate. If the device cannot report the state of the user force-feedback switch, neither <see cref=\"F:SharpDX.DirectInput.ForceFeedbackState.UserSafetySwitchOn\"/>\n      nor <see cref=\"F:SharpDX.DirectInput.ForceFeedbackState.UserSafetySwitchOff\"/> is returned.\n    </summary>\t\n            <unmanaged>DIGFFS_USERFFSWITCHON</unmanaged>\t\n            <unmanaged-short>DIGFFS_USERFFSWITCHON</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ForceFeedbackState.UserSafetySwitchOff\">\n            <summary>\n      The user force-feedback switch is currently off; that is, the device cannot operate. If the device cannot report the state of the user force-feedback switch, neither <see cref=\"F:SharpDX.DirectInput.ForceFeedbackState.UserSafetySwitchOn\"/>\n      nor <see cref=\"F:SharpDX.DirectInput.ForceFeedbackState.UserSafetySwitchOff\"/> is returned.\n    </summary>\t\n            <unmanaged>DIGFFS_USERFFSWITCHOFF</unmanaged>\t\n            <unmanaged-short>DIGFFS_USERFFSWITCHOFF</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ForceFeedbackState.DeviceLost\">\n            <summary>\n      The device suffered an unexpected failure and is in an indeterminate state. It must be reset either by unacquiring and reacquiring the device, or by sending a <see cref=\"F:SharpDX.DirectInput.ForceFeedbackCommand.Reset\"/> command.\n    </summary>\t\n            <unmanaged>DIGFFS_DEVICELOST</unmanaged>\t\n            <unmanaged-short>DIGFFS_DEVICELOST</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectInput.ImageUsage\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDIFT']/*\"/>\t\n            <unmanaged>DIDIFT</unmanaged>\t\n            <unmanaged-short>DIDIFT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ImageUsage.Configuration\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDIFT_CONFIGURATION']/*\"/>\t\n            <unmanaged>DIDIFT_CONFIGURATION</unmanaged>\t\n            <unmanaged-short>DIDIFT_CONFIGURATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ImageUsage.Overlay\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDIFT_OVERLAY']/*\"/>\t\n            <unmanaged>DIDIFT_OVERLAY</unmanaged>\t\n            <unmanaged-short>DIDIFT_OVERLAY</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectInput.JoystickOffsets\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIJOFS']/*\"/>\t\n            <unmanaged>DIJOFS</unmanaged>\t\n            <unmanaged-short>DIJOFS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.JoystickOffsets.XAxis\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIJOFS_X']/*\"/>\t\n            <unmanaged>DIJOFS_X</unmanaged>\t\n            <unmanaged-short>DIJOFS_X</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.JoystickOffsets.YAxis\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIJOFS_Y']/*\"/>\t\n            <unmanaged>DIJOFS_Y</unmanaged>\t\n            <unmanaged-short>DIJOFS_Y</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.JoystickOffsets.ZAxis\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIJOFS_Z']/*\"/>\t\n            <unmanaged>DIJOFS_Z</unmanaged>\t\n            <unmanaged-short>DIJOFS_Z</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.JoystickOffsets.XAxisRotation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIJOFS_RX']/*\"/>\t\n            <unmanaged>DIJOFS_RX</unmanaged>\t\n            <unmanaged-short>DIJOFS_RX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.JoystickOffsets.YAxisRotation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIJOFS_RY']/*\"/>\t\n            <unmanaged>DIJOFS_RY</unmanaged>\t\n            <unmanaged-short>DIJOFS_RY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.JoystickOffsets.ZAxisRotation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIJOFS_RZ']/*\"/>\t\n            <unmanaged>DIJOFS_RZ</unmanaged>\t\n            <unmanaged-short>DIJOFS_RZ</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.JoystickOffsets.Button0\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIJOFS_BUTTON0']/*\"/>\t\n            <unmanaged>DIJOFS_BUTTON0</unmanaged>\t\n            <unmanaged-short>DIJOFS_BUTTON0</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.JoystickOffsets.Button1\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIJOFS_BUTTON1']/*\"/>\t\n            <unmanaged>DIJOFS_BUTTON1</unmanaged>\t\n            <unmanaged-short>DIJOFS_BUTTON1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.JoystickOffsets.Button2\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIJOFS_BUTTON2']/*\"/>\t\n            <unmanaged>DIJOFS_BUTTON2</unmanaged>\t\n            <unmanaged-short>DIJOFS_BUTTON2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.JoystickOffsets.Button3\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIJOFS_BUTTON3']/*\"/>\t\n            <unmanaged>DIJOFS_BUTTON3</unmanaged>\t\n            <unmanaged-short>DIJOFS_BUTTON3</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.JoystickOffsets.Button4\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIJOFS_BUTTON4']/*\"/>\t\n            <unmanaged>DIJOFS_BUTTON4</unmanaged>\t\n            <unmanaged-short>DIJOFS_BUTTON4</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.JoystickOffsets.Button5\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIJOFS_BUTTON5']/*\"/>\t\n            <unmanaged>DIJOFS_BUTTON5</unmanaged>\t\n            <unmanaged-short>DIJOFS_BUTTON5</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.JoystickOffsets.Button6\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIJOFS_BUTTON6']/*\"/>\t\n            <unmanaged>DIJOFS_BUTTON6</unmanaged>\t\n            <unmanaged-short>DIJOFS_BUTTON6</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.JoystickOffsets.Button7\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIJOFS_BUTTON7']/*\"/>\t\n            <unmanaged>DIJOFS_BUTTON7</unmanaged>\t\n            <unmanaged-short>DIJOFS_BUTTON7</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.JoystickOffsets.Button8\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIJOFS_BUTTON8']/*\"/>\t\n            <unmanaged>DIJOFS_BUTTON8</unmanaged>\t\n            <unmanaged-short>DIJOFS_BUTTON8</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.JoystickOffsets.Button9\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIJOFS_BUTTON9']/*\"/>\t\n            <unmanaged>DIJOFS_BUTTON9</unmanaged>\t\n            <unmanaged-short>DIJOFS_BUTTON9</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.JoystickOffsets.Button10\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIJOFS_BUTTON10']/*\"/>\t\n            <unmanaged>DIJOFS_BUTTON10</unmanaged>\t\n            <unmanaged-short>DIJOFS_BUTTON10</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.JoystickOffsets.Button11\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIJOFS_BUTTON11']/*\"/>\t\n            <unmanaged>DIJOFS_BUTTON11</unmanaged>\t\n            <unmanaged-short>DIJOFS_BUTTON11</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.JoystickOffsets.Button12\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIJOFS_BUTTON12']/*\"/>\t\n            <unmanaged>DIJOFS_BUTTON12</unmanaged>\t\n            <unmanaged-short>DIJOFS_BUTTON12</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.JoystickOffsets.Button13\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIJOFS_BUTTON13']/*\"/>\t\n            <unmanaged>DIJOFS_BUTTON13</unmanaged>\t\n            <unmanaged-short>DIJOFS_BUTTON13</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.JoystickOffsets.Button14\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIJOFS_BUTTON14']/*\"/>\t\n            <unmanaged>DIJOFS_BUTTON14</unmanaged>\t\n            <unmanaged-short>DIJOFS_BUTTON14</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.JoystickOffsets.Button15\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIJOFS_BUTTON15']/*\"/>\t\n            <unmanaged>DIJOFS_BUTTON15</unmanaged>\t\n            <unmanaged-short>DIJOFS_BUTTON15</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.JoystickOffsets.Button16\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIJOFS_BUTTON16']/*\"/>\t\n            <unmanaged>DIJOFS_BUTTON16</unmanaged>\t\n            <unmanaged-short>DIJOFS_BUTTON16</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.JoystickOffsets.Button17\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIJOFS_BUTTON17']/*\"/>\t\n            <unmanaged>DIJOFS_BUTTON17</unmanaged>\t\n            <unmanaged-short>DIJOFS_BUTTON17</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.JoystickOffsets.Button18\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIJOFS_BUTTON18']/*\"/>\t\n            <unmanaged>DIJOFS_BUTTON18</unmanaged>\t\n            <unmanaged-short>DIJOFS_BUTTON18</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.JoystickOffsets.Button19\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIJOFS_BUTTON19']/*\"/>\t\n            <unmanaged>DIJOFS_BUTTON19</unmanaged>\t\n            <unmanaged-short>DIJOFS_BUTTON19</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.JoystickOffsets.Button20\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIJOFS_BUTTON20']/*\"/>\t\n            <unmanaged>DIJOFS_BUTTON20</unmanaged>\t\n            <unmanaged-short>DIJOFS_BUTTON20</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.JoystickOffsets.Button21\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIJOFS_BUTTON21']/*\"/>\t\n            <unmanaged>DIJOFS_BUTTON21</unmanaged>\t\n            <unmanaged-short>DIJOFS_BUTTON21</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.JoystickOffsets.Button22\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIJOFS_BUTTON22']/*\"/>\t\n            <unmanaged>DIJOFS_BUTTON22</unmanaged>\t\n            <unmanaged-short>DIJOFS_BUTTON22</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.JoystickOffsets.Button23\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIJOFS_BUTTON23']/*\"/>\t\n            <unmanaged>DIJOFS_BUTTON23</unmanaged>\t\n            <unmanaged-short>DIJOFS_BUTTON23</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.JoystickOffsets.Button24\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIJOFS_BUTTON24']/*\"/>\t\n            <unmanaged>DIJOFS_BUTTON24</unmanaged>\t\n            <unmanaged-short>DIJOFS_BUTTON24</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.JoystickOffsets.Button25\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIJOFS_BUTTON25']/*\"/>\t\n            <unmanaged>DIJOFS_BUTTON25</unmanaged>\t\n            <unmanaged-short>DIJOFS_BUTTON25</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.JoystickOffsets.Button26\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIJOFS_BUTTON26']/*\"/>\t\n            <unmanaged>DIJOFS_BUTTON26</unmanaged>\t\n            <unmanaged-short>DIJOFS_BUTTON26</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.JoystickOffsets.Button27\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIJOFS_BUTTON27']/*\"/>\t\n            <unmanaged>DIJOFS_BUTTON27</unmanaged>\t\n            <unmanaged-short>DIJOFS_BUTTON27</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.JoystickOffsets.Button28\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIJOFS_BUTTON28']/*\"/>\t\n            <unmanaged>DIJOFS_BUTTON28</unmanaged>\t\n            <unmanaged-short>DIJOFS_BUTTON28</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.JoystickOffsets.Button29\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIJOFS_BUTTON29']/*\"/>\t\n            <unmanaged>DIJOFS_BUTTON29</unmanaged>\t\n            <unmanaged-short>DIJOFS_BUTTON29</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.JoystickOffsets.Button30\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIJOFS_BUTTON30']/*\"/>\t\n            <unmanaged>DIJOFS_BUTTON30</unmanaged>\t\n            <unmanaged-short>DIJOFS_BUTTON30</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.JoystickOffsets.Button31\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIJOFS_BUTTON31']/*\"/>\t\n            <unmanaged>DIJOFS_BUTTON31</unmanaged>\t\n            <unmanaged-short>DIJOFS_BUTTON31</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.JoystickOffsets.Slider0\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIJOFS_SLIDER0']/*\"/>\t\n            <unmanaged>DIJOFS_SLIDER0</unmanaged>\t\n            <unmanaged-short>DIJOFS_SLIDER0</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.JoystickOffsets.Slider1\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIJOFS_SLIDER1']/*\"/>\t\n            <unmanaged>DIJOFS_SLIDER1</unmanaged>\t\n            <unmanaged-short>DIJOFS_SLIDER1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.JoystickOffsets.PointOfView0\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIJOFS_POINT_OF_VIEW0']/*\"/>\t\n            <unmanaged>DIJOFS_POINT_OF_VIEW0</unmanaged>\t\n            <unmanaged-short>DIJOFS_POINT_OF_VIEW0</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.JoystickOffsets.PointOfView1\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIJOFS_POINT_OF_VIEW1']/*\"/>\t\n            <unmanaged>DIJOFS_POINT_OF_VIEW1</unmanaged>\t\n            <unmanaged-short>DIJOFS_POINT_OF_VIEW1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.JoystickOffsets.PointOfView2\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIJOFS_POINT_OF_VIEW2']/*\"/>\t\n            <unmanaged>DIJOFS_POINT_OF_VIEW2</unmanaged>\t\n            <unmanaged-short>DIJOFS_POINT_OF_VIEW2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.JoystickOffsets.PointOfView3\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIJOFS_POINT_OF_VIEW3']/*\"/>\t\n            <unmanaged>DIJOFS_POINT_OF_VIEW3</unmanaged>\t\n            <unmanaged-short>DIJOFS_POINT_OF_VIEW3</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectInput.Key\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK']/*\"/>\t\n            <unmanaged>DIK</unmanaged>\t\n            <unmanaged-short>DIK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.Escape\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_ESCAPE']/*\"/>\t\n            <unmanaged>DIK_ESCAPE</unmanaged>\t\n            <unmanaged-short>DIK_ESCAPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.D1\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_1']/*\"/>\t\n            <unmanaged>DIK_1</unmanaged>\t\n            <unmanaged-short>DIK_1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.D2\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_2']/*\"/>\t\n            <unmanaged>DIK_2</unmanaged>\t\n            <unmanaged-short>DIK_2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.D3\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_3']/*\"/>\t\n            <unmanaged>DIK_3</unmanaged>\t\n            <unmanaged-short>DIK_3</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.D4\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_4']/*\"/>\t\n            <unmanaged>DIK_4</unmanaged>\t\n            <unmanaged-short>DIK_4</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.D5\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_5']/*\"/>\t\n            <unmanaged>DIK_5</unmanaged>\t\n            <unmanaged-short>DIK_5</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.D6\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_6']/*\"/>\t\n            <unmanaged>DIK_6</unmanaged>\t\n            <unmanaged-short>DIK_6</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.D7\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_7']/*\"/>\t\n            <unmanaged>DIK_7</unmanaged>\t\n            <unmanaged-short>DIK_7</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.D8\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_8']/*\"/>\t\n            <unmanaged>DIK_8</unmanaged>\t\n            <unmanaged-short>DIK_8</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.D9\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_9']/*\"/>\t\n            <unmanaged>DIK_9</unmanaged>\t\n            <unmanaged-short>DIK_9</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.D0\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_0']/*\"/>\t\n            <unmanaged>DIK_0</unmanaged>\t\n            <unmanaged-short>DIK_0</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.Minus\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_MINUS']/*\"/>\t\n            <unmanaged>DIK_MINUS</unmanaged>\t\n            <unmanaged-short>DIK_MINUS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.Equals\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_EQUALS']/*\"/>\t\n            <unmanaged>DIK_EQUALS</unmanaged>\t\n            <unmanaged-short>DIK_EQUALS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.Back\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_BACK']/*\"/>\t\n            <unmanaged>DIK_BACK</unmanaged>\t\n            <unmanaged-short>DIK_BACK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.Tab\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_TAB']/*\"/>\t\n            <unmanaged>DIK_TAB</unmanaged>\t\n            <unmanaged-short>DIK_TAB</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.Q\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_Q']/*\"/>\t\n            <unmanaged>DIK_Q</unmanaged>\t\n            <unmanaged-short>DIK_Q</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.W\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_W']/*\"/>\t\n            <unmanaged>DIK_W</unmanaged>\t\n            <unmanaged-short>DIK_W</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.E\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_E']/*\"/>\t\n            <unmanaged>DIK_E</unmanaged>\t\n            <unmanaged-short>DIK_E</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.R\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_R']/*\"/>\t\n            <unmanaged>DIK_R</unmanaged>\t\n            <unmanaged-short>DIK_R</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.T\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_T']/*\"/>\t\n            <unmanaged>DIK_T</unmanaged>\t\n            <unmanaged-short>DIK_T</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.Y\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_Y']/*\"/>\t\n            <unmanaged>DIK_Y</unmanaged>\t\n            <unmanaged-short>DIK_Y</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.U\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_U']/*\"/>\t\n            <unmanaged>DIK_U</unmanaged>\t\n            <unmanaged-short>DIK_U</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.I\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_I']/*\"/>\t\n            <unmanaged>DIK_I</unmanaged>\t\n            <unmanaged-short>DIK_I</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.O\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_O']/*\"/>\t\n            <unmanaged>DIK_O</unmanaged>\t\n            <unmanaged-short>DIK_O</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.P\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_P']/*\"/>\t\n            <unmanaged>DIK_P</unmanaged>\t\n            <unmanaged-short>DIK_P</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.LeftBracket\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_LBRACKET']/*\"/>\t\n            <unmanaged>DIK_LBRACKET</unmanaged>\t\n            <unmanaged-short>DIK_LBRACKET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.RightBracket\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_RBRACKET']/*\"/>\t\n            <unmanaged>DIK_RBRACKET</unmanaged>\t\n            <unmanaged-short>DIK_RBRACKET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.Return\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_RETURN']/*\"/>\t\n            <unmanaged>DIK_RETURN</unmanaged>\t\n            <unmanaged-short>DIK_RETURN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.LeftControl\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_LCONTROL']/*\"/>\t\n            <unmanaged>DIK_LCONTROL</unmanaged>\t\n            <unmanaged-short>DIK_LCONTROL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.A\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_A']/*\"/>\t\n            <unmanaged>DIK_A</unmanaged>\t\n            <unmanaged-short>DIK_A</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.S\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_S']/*\"/>\t\n            <unmanaged>DIK_S</unmanaged>\t\n            <unmanaged-short>DIK_S</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.D\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_D']/*\"/>\t\n            <unmanaged>DIK_D</unmanaged>\t\n            <unmanaged-short>DIK_D</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.F\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_F']/*\"/>\t\n            <unmanaged>DIK_F</unmanaged>\t\n            <unmanaged-short>DIK_F</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.G\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_G']/*\"/>\t\n            <unmanaged>DIK_G</unmanaged>\t\n            <unmanaged-short>DIK_G</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.H\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_H']/*\"/>\t\n            <unmanaged>DIK_H</unmanaged>\t\n            <unmanaged-short>DIK_H</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.J\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_J']/*\"/>\t\n            <unmanaged>DIK_J</unmanaged>\t\n            <unmanaged-short>DIK_J</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.K\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_K']/*\"/>\t\n            <unmanaged>DIK_K</unmanaged>\t\n            <unmanaged-short>DIK_K</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.L\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_L']/*\"/>\t\n            <unmanaged>DIK_L</unmanaged>\t\n            <unmanaged-short>DIK_L</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.Semicolon\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_SEMICOLON']/*\"/>\t\n            <unmanaged>DIK_SEMICOLON</unmanaged>\t\n            <unmanaged-short>DIK_SEMICOLON</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.Apostrophe\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_APOSTROPHE']/*\"/>\t\n            <unmanaged>DIK_APOSTROPHE</unmanaged>\t\n            <unmanaged-short>DIK_APOSTROPHE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.Grave\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_GRAVE']/*\"/>\t\n            <unmanaged>DIK_GRAVE</unmanaged>\t\n            <unmanaged-short>DIK_GRAVE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.LeftShift\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_LSHIFT']/*\"/>\t\n            <unmanaged>DIK_LSHIFT</unmanaged>\t\n            <unmanaged-short>DIK_LSHIFT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.Backslash\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_BACKSLASH']/*\"/>\t\n            <unmanaged>DIK_BACKSLASH</unmanaged>\t\n            <unmanaged-short>DIK_BACKSLASH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.Z\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_Z']/*\"/>\t\n            <unmanaged>DIK_Z</unmanaged>\t\n            <unmanaged-short>DIK_Z</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.X\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_X']/*\"/>\t\n            <unmanaged>DIK_X</unmanaged>\t\n            <unmanaged-short>DIK_X</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.C\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_C']/*\"/>\t\n            <unmanaged>DIK_C</unmanaged>\t\n            <unmanaged-short>DIK_C</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.V\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_V']/*\"/>\t\n            <unmanaged>DIK_V</unmanaged>\t\n            <unmanaged-short>DIK_V</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.B\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_B']/*\"/>\t\n            <unmanaged>DIK_B</unmanaged>\t\n            <unmanaged-short>DIK_B</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.N\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_N']/*\"/>\t\n            <unmanaged>DIK_N</unmanaged>\t\n            <unmanaged-short>DIK_N</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.M\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_M']/*\"/>\t\n            <unmanaged>DIK_M</unmanaged>\t\n            <unmanaged-short>DIK_M</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.Comma\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_COMMA']/*\"/>\t\n            <unmanaged>DIK_COMMA</unmanaged>\t\n            <unmanaged-short>DIK_COMMA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.Period\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_PERIOD']/*\"/>\t\n            <unmanaged>DIK_PERIOD</unmanaged>\t\n            <unmanaged-short>DIK_PERIOD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.Slash\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_SLASH']/*\"/>\t\n            <unmanaged>DIK_SLASH</unmanaged>\t\n            <unmanaged-short>DIK_SLASH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.RightShift\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_RSHIFT']/*\"/>\t\n            <unmanaged>DIK_RSHIFT</unmanaged>\t\n            <unmanaged-short>DIK_RSHIFT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.Multiply\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_MULTIPLY']/*\"/>\t\n            <unmanaged>DIK_MULTIPLY</unmanaged>\t\n            <unmanaged-short>DIK_MULTIPLY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.LeftAlt\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_LMENU']/*\"/>\t\n            <unmanaged>DIK_LMENU</unmanaged>\t\n            <unmanaged-short>DIK_LMENU</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.Space\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_SPACE']/*\"/>\t\n            <unmanaged>DIK_SPACE</unmanaged>\t\n            <unmanaged-short>DIK_SPACE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.Capital\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_CAPITAL']/*\"/>\t\n            <unmanaged>DIK_CAPITAL</unmanaged>\t\n            <unmanaged-short>DIK_CAPITAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.F1\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_F1']/*\"/>\t\n            <unmanaged>DIK_F1</unmanaged>\t\n            <unmanaged-short>DIK_F1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.F2\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_F2']/*\"/>\t\n            <unmanaged>DIK_F2</unmanaged>\t\n            <unmanaged-short>DIK_F2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.F3\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_F3']/*\"/>\t\n            <unmanaged>DIK_F3</unmanaged>\t\n            <unmanaged-short>DIK_F3</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.F4\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_F4']/*\"/>\t\n            <unmanaged>DIK_F4</unmanaged>\t\n            <unmanaged-short>DIK_F4</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.F5\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_F5']/*\"/>\t\n            <unmanaged>DIK_F5</unmanaged>\t\n            <unmanaged-short>DIK_F5</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.F6\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_F6']/*\"/>\t\n            <unmanaged>DIK_F6</unmanaged>\t\n            <unmanaged-short>DIK_F6</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.F7\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_F7']/*\"/>\t\n            <unmanaged>DIK_F7</unmanaged>\t\n            <unmanaged-short>DIK_F7</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.F8\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_F8']/*\"/>\t\n            <unmanaged>DIK_F8</unmanaged>\t\n            <unmanaged-short>DIK_F8</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.F9\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_F9']/*\"/>\t\n            <unmanaged>DIK_F9</unmanaged>\t\n            <unmanaged-short>DIK_F9</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.F10\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_F10']/*\"/>\t\n            <unmanaged>DIK_F10</unmanaged>\t\n            <unmanaged-short>DIK_F10</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.NumberLock\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_NUMLOCK']/*\"/>\t\n            <unmanaged>DIK_NUMLOCK</unmanaged>\t\n            <unmanaged-short>DIK_NUMLOCK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.ScrollLock\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_SCROLL']/*\"/>\t\n            <unmanaged>DIK_SCROLL</unmanaged>\t\n            <unmanaged-short>DIK_SCROLL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.NumberPad7\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_NUMPAD7']/*\"/>\t\n            <unmanaged>DIK_NUMPAD7</unmanaged>\t\n            <unmanaged-short>DIK_NUMPAD7</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.NumberPad8\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_NUMPAD8']/*\"/>\t\n            <unmanaged>DIK_NUMPAD8</unmanaged>\t\n            <unmanaged-short>DIK_NUMPAD8</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.NumberPad9\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_NUMPAD9']/*\"/>\t\n            <unmanaged>DIK_NUMPAD9</unmanaged>\t\n            <unmanaged-short>DIK_NUMPAD9</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.Subtract\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_SUBTRACT']/*\"/>\t\n            <unmanaged>DIK_SUBTRACT</unmanaged>\t\n            <unmanaged-short>DIK_SUBTRACT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.NumberPad4\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_NUMPAD4']/*\"/>\t\n            <unmanaged>DIK_NUMPAD4</unmanaged>\t\n            <unmanaged-short>DIK_NUMPAD4</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.NumberPad5\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_NUMPAD5']/*\"/>\t\n            <unmanaged>DIK_NUMPAD5</unmanaged>\t\n            <unmanaged-short>DIK_NUMPAD5</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.NumberPad6\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_NUMPAD6']/*\"/>\t\n            <unmanaged>DIK_NUMPAD6</unmanaged>\t\n            <unmanaged-short>DIK_NUMPAD6</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.Add\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_ADD']/*\"/>\t\n            <unmanaged>DIK_ADD</unmanaged>\t\n            <unmanaged-short>DIK_ADD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.NumberPad1\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_NUMPAD1']/*\"/>\t\n            <unmanaged>DIK_NUMPAD1</unmanaged>\t\n            <unmanaged-short>DIK_NUMPAD1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.NumberPad2\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_NUMPAD2']/*\"/>\t\n            <unmanaged>DIK_NUMPAD2</unmanaged>\t\n            <unmanaged-short>DIK_NUMPAD2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.NumberPad3\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_NUMPAD3']/*\"/>\t\n            <unmanaged>DIK_NUMPAD3</unmanaged>\t\n            <unmanaged-short>DIK_NUMPAD3</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.NumberPad0\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_NUMPAD0']/*\"/>\t\n            <unmanaged>DIK_NUMPAD0</unmanaged>\t\n            <unmanaged-short>DIK_NUMPAD0</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.Decimal\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_DECIMAL']/*\"/>\t\n            <unmanaged>DIK_DECIMAL</unmanaged>\t\n            <unmanaged-short>DIK_DECIMAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.Oem102\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_OEM_102']/*\"/>\t\n            <unmanaged>DIK_OEM_102</unmanaged>\t\n            <unmanaged-short>DIK_OEM_102</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.F11\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_F11']/*\"/>\t\n            <unmanaged>DIK_F11</unmanaged>\t\n            <unmanaged-short>DIK_F11</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.F12\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_F12']/*\"/>\t\n            <unmanaged>DIK_F12</unmanaged>\t\n            <unmanaged-short>DIK_F12</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.F13\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_F13']/*\"/>\t\n            <unmanaged>DIK_F13</unmanaged>\t\n            <unmanaged-short>DIK_F13</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.F14\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_F14']/*\"/>\t\n            <unmanaged>DIK_F14</unmanaged>\t\n            <unmanaged-short>DIK_F14</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.F15\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_F15']/*\"/>\t\n            <unmanaged>DIK_F15</unmanaged>\t\n            <unmanaged-short>DIK_F15</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.Kana\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_KANA']/*\"/>\t\n            <unmanaged>DIK_KANA</unmanaged>\t\n            <unmanaged-short>DIK_KANA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.AbntC1\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_ABNT_C1']/*\"/>\t\n            <unmanaged>DIK_ABNT_C1</unmanaged>\t\n            <unmanaged-short>DIK_ABNT_C1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.Convert\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_CONVERT']/*\"/>\t\n            <unmanaged>DIK_CONVERT</unmanaged>\t\n            <unmanaged-short>DIK_CONVERT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.NoConvert\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_NOCONVERT']/*\"/>\t\n            <unmanaged>DIK_NOCONVERT</unmanaged>\t\n            <unmanaged-short>DIK_NOCONVERT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.Yen\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_YEN']/*\"/>\t\n            <unmanaged>DIK_YEN</unmanaged>\t\n            <unmanaged-short>DIK_YEN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.AbntC2\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_ABNT_C2']/*\"/>\t\n            <unmanaged>DIK_ABNT_C2</unmanaged>\t\n            <unmanaged-short>DIK_ABNT_C2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.NumberPadEquals\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_NUMPADEQUALS']/*\"/>\t\n            <unmanaged>DIK_NUMPADEQUALS</unmanaged>\t\n            <unmanaged-short>DIK_NUMPADEQUALS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.PreviousTrack\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_PREVTRACK']/*\"/>\t\n            <unmanaged>DIK_PREVTRACK</unmanaged>\t\n            <unmanaged-short>DIK_PREVTRACK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.AT\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_AT']/*\"/>\t\n            <unmanaged>DIK_AT</unmanaged>\t\n            <unmanaged-short>DIK_AT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.Colon\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_COLON']/*\"/>\t\n            <unmanaged>DIK_COLON</unmanaged>\t\n            <unmanaged-short>DIK_COLON</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.Underline\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_UNDERLINE']/*\"/>\t\n            <unmanaged>DIK_UNDERLINE</unmanaged>\t\n            <unmanaged-short>DIK_UNDERLINE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.Kanji\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_KANJI']/*\"/>\t\n            <unmanaged>DIK_KANJI</unmanaged>\t\n            <unmanaged-short>DIK_KANJI</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.Stop\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_STOP']/*\"/>\t\n            <unmanaged>DIK_STOP</unmanaged>\t\n            <unmanaged-short>DIK_STOP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.AX\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_AX']/*\"/>\t\n            <unmanaged>DIK_AX</unmanaged>\t\n            <unmanaged-short>DIK_AX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.Unlabeled\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_UNLABELED']/*\"/>\t\n            <unmanaged>DIK_UNLABELED</unmanaged>\t\n            <unmanaged-short>DIK_UNLABELED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.NextTrack\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_NEXTTRACK']/*\"/>\t\n            <unmanaged>DIK_NEXTTRACK</unmanaged>\t\n            <unmanaged-short>DIK_NEXTTRACK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.NumberPadEnter\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_NUMPADENTER']/*\"/>\t\n            <unmanaged>DIK_NUMPADENTER</unmanaged>\t\n            <unmanaged-short>DIK_NUMPADENTER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.RightControl\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_RCONTROL']/*\"/>\t\n            <unmanaged>DIK_RCONTROL</unmanaged>\t\n            <unmanaged-short>DIK_RCONTROL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.Mute\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_MUTE']/*\"/>\t\n            <unmanaged>DIK_MUTE</unmanaged>\t\n            <unmanaged-short>DIK_MUTE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.Calculator\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_CALCULATOR']/*\"/>\t\n            <unmanaged>DIK_CALCULATOR</unmanaged>\t\n            <unmanaged-short>DIK_CALCULATOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.PlayPause\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_PLAYPAUSE']/*\"/>\t\n            <unmanaged>DIK_PLAYPAUSE</unmanaged>\t\n            <unmanaged-short>DIK_PLAYPAUSE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.MediaStop\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_MEDIASTOP']/*\"/>\t\n            <unmanaged>DIK_MEDIASTOP</unmanaged>\t\n            <unmanaged-short>DIK_MEDIASTOP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.VolumeDown\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_VOLUMEDOWN']/*\"/>\t\n            <unmanaged>DIK_VOLUMEDOWN</unmanaged>\t\n            <unmanaged-short>DIK_VOLUMEDOWN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.VolumeUp\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_VOLUMEUP']/*\"/>\t\n            <unmanaged>DIK_VOLUMEUP</unmanaged>\t\n            <unmanaged-short>DIK_VOLUMEUP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.WebHome\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_WEBHOME']/*\"/>\t\n            <unmanaged>DIK_WEBHOME</unmanaged>\t\n            <unmanaged-short>DIK_WEBHOME</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.NumberPadComma\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_NUMPADCOMMA']/*\"/>\t\n            <unmanaged>DIK_NUMPADCOMMA</unmanaged>\t\n            <unmanaged-short>DIK_NUMPADCOMMA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.Divide\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_DIVIDE']/*\"/>\t\n            <unmanaged>DIK_DIVIDE</unmanaged>\t\n            <unmanaged-short>DIK_DIVIDE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.PrintScreen\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_SYSRQ']/*\"/>\t\n            <unmanaged>DIK_SYSRQ</unmanaged>\t\n            <unmanaged-short>DIK_SYSRQ</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.RightAlt\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_RMENU']/*\"/>\t\n            <unmanaged>DIK_RMENU</unmanaged>\t\n            <unmanaged-short>DIK_RMENU</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.Pause\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_PAUSE']/*\"/>\t\n            <unmanaged>DIK_PAUSE</unmanaged>\t\n            <unmanaged-short>DIK_PAUSE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.Home\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_HOME']/*\"/>\t\n            <unmanaged>DIK_HOME</unmanaged>\t\n            <unmanaged-short>DIK_HOME</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.Up\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_UP']/*\"/>\t\n            <unmanaged>DIK_UP</unmanaged>\t\n            <unmanaged-short>DIK_UP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.PageUp\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_PRIOR']/*\"/>\t\n            <unmanaged>DIK_PRIOR</unmanaged>\t\n            <unmanaged-short>DIK_PRIOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.Left\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_LEFT']/*\"/>\t\n            <unmanaged>DIK_LEFT</unmanaged>\t\n            <unmanaged-short>DIK_LEFT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.Right\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_RIGHT']/*\"/>\t\n            <unmanaged>DIK_RIGHT</unmanaged>\t\n            <unmanaged-short>DIK_RIGHT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.End\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_END']/*\"/>\t\n            <unmanaged>DIK_END</unmanaged>\t\n            <unmanaged-short>DIK_END</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.Down\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_DOWN']/*\"/>\t\n            <unmanaged>DIK_DOWN</unmanaged>\t\n            <unmanaged-short>DIK_DOWN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.PageDown\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_NEXT']/*\"/>\t\n            <unmanaged>DIK_NEXT</unmanaged>\t\n            <unmanaged-short>DIK_NEXT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.Insert\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_INSERT']/*\"/>\t\n            <unmanaged>DIK_INSERT</unmanaged>\t\n            <unmanaged-short>DIK_INSERT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.Delete\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_DELETE']/*\"/>\t\n            <unmanaged>DIK_DELETE</unmanaged>\t\n            <unmanaged-short>DIK_DELETE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.LeftWindowsKey\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_LWIN']/*\"/>\t\n            <unmanaged>DIK_LWIN</unmanaged>\t\n            <unmanaged-short>DIK_LWIN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.RightWindowsKey\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_RWIN']/*\"/>\t\n            <unmanaged>DIK_RWIN</unmanaged>\t\n            <unmanaged-short>DIK_RWIN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.Applications\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_APPS']/*\"/>\t\n            <unmanaged>DIK_APPS</unmanaged>\t\n            <unmanaged-short>DIK_APPS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.Power\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_POWER']/*\"/>\t\n            <unmanaged>DIK_POWER</unmanaged>\t\n            <unmanaged-short>DIK_POWER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.Sleep\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_SLEEP']/*\"/>\t\n            <unmanaged>DIK_SLEEP</unmanaged>\t\n            <unmanaged-short>DIK_SLEEP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.Wake\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_WAKE']/*\"/>\t\n            <unmanaged>DIK_WAKE</unmanaged>\t\n            <unmanaged-short>DIK_WAKE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.WebSearch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_WEBSEARCH']/*\"/>\t\n            <unmanaged>DIK_WEBSEARCH</unmanaged>\t\n            <unmanaged-short>DIK_WEBSEARCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.WebFavorites\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_WEBFAVORITES']/*\"/>\t\n            <unmanaged>DIK_WEBFAVORITES</unmanaged>\t\n            <unmanaged-short>DIK_WEBFAVORITES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.WebRefresh\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_WEBREFRESH']/*\"/>\t\n            <unmanaged>DIK_WEBREFRESH</unmanaged>\t\n            <unmanaged-short>DIK_WEBREFRESH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.WebStop\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_WEBSTOP']/*\"/>\t\n            <unmanaged>DIK_WEBSTOP</unmanaged>\t\n            <unmanaged-short>DIK_WEBSTOP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.WebForward\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_WEBFORWARD']/*\"/>\t\n            <unmanaged>DIK_WEBFORWARD</unmanaged>\t\n            <unmanaged-short>DIK_WEBFORWARD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.WebBack\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_WEBBACK']/*\"/>\t\n            <unmanaged>DIK_WEBBACK</unmanaged>\t\n            <unmanaged-short>DIK_WEBBACK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.MyComputer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_MYCOMPUTER']/*\"/>\t\n            <unmanaged>DIK_MYCOMPUTER</unmanaged>\t\n            <unmanaged-short>DIK_MYCOMPUTER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.Mail\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_MAIL']/*\"/>\t\n            <unmanaged>DIK_MAIL</unmanaged>\t\n            <unmanaged-short>DIK_MAIL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.MediaSelect\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_MEDIASELECT']/*\"/>\t\n            <unmanaged>DIK_MEDIASELECT</unmanaged>\t\n            <unmanaged-short>DIK_MEDIASELECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Key.Unknown\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIK_UNKNOWN']/*\"/>\t\n            <unmanaged>DIK_UNKNOWN</unmanaged>\t\n            <unmanaged-short>DIK_UNKNOWN</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectInput.MouseOffsets\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIMOFS']/*\"/>\t\n            <unmanaged>DIMOFS</unmanaged>\t\n            <unmanaged-short>DIMOFS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.MouseOffsets.X\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIMOFS_X']/*\"/>\t\n            <unmanaged>DIMOFS_X</unmanaged>\t\n            <unmanaged-short>DIMOFS_X</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.MouseOffsets.Y\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIMOFS_Y']/*\"/>\t\n            <unmanaged>DIMOFS_Y</unmanaged>\t\n            <unmanaged-short>DIMOFS_Y</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.MouseOffsets.Z\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIMOFS_Z']/*\"/>\t\n            <unmanaged>DIMOFS_Z</unmanaged>\t\n            <unmanaged-short>DIMOFS_Z</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.MouseOffsets.Button0\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIMOFS_BUTTON0']/*\"/>\t\n            <unmanaged>DIMOFS_BUTTON0</unmanaged>\t\n            <unmanaged-short>DIMOFS_BUTTON0</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.MouseOffsets.Button1\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIMOFS_BUTTON1']/*\"/>\t\n            <unmanaged>DIMOFS_BUTTON1</unmanaged>\t\n            <unmanaged-short>DIMOFS_BUTTON1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.MouseOffsets.Button2\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIMOFS_BUTTON2']/*\"/>\t\n            <unmanaged>DIMOFS_BUTTON2</unmanaged>\t\n            <unmanaged-short>DIMOFS_BUTTON2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.MouseOffsets.Button3\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIMOFS_BUTTON3']/*\"/>\t\n            <unmanaged>DIMOFS_BUTTON3</unmanaged>\t\n            <unmanaged-short>DIMOFS_BUTTON3</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.MouseOffsets.Button4\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIMOFS_BUTTON4']/*\"/>\t\n            <unmanaged>DIMOFS_BUTTON4</unmanaged>\t\n            <unmanaged-short>DIMOFS_BUTTON4</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.MouseOffsets.Button5\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIMOFS_BUTTON5']/*\"/>\t\n            <unmanaged>DIMOFS_BUTTON5</unmanaged>\t\n            <unmanaged-short>DIMOFS_BUTTON5</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.MouseOffsets.Button6\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIMOFS_BUTTON6']/*\"/>\t\n            <unmanaged>DIMOFS_BUTTON6</unmanaged>\t\n            <unmanaged-short>DIMOFS_BUTTON6</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.MouseOffsets.Button7\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIMOFS_BUTTON7']/*\"/>\t\n            <unmanaged>DIMOFS_BUTTON7</unmanaged>\t\n            <unmanaged-short>DIMOFS_BUTTON7</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectInput.ObjectAspect\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDOI']/*\"/>\t\n            <unmanaged>DIDOI</unmanaged>\t\n            <unmanaged-short>DIDOI</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ObjectAspect.ForceFeedbackActuator\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDOI_FFACTUATOR']/*\"/>\t\n            <unmanaged>DIDOI_FFACTUATOR</unmanaged>\t\n            <unmanaged-short>DIDOI_FFACTUATOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ObjectAspect.ForceFeedbackTrigger\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDOI_FFEFFECTTRIGGER']/*\"/>\t\n            <unmanaged>DIDOI_FFEFFECTTRIGGER</unmanaged>\t\n            <unmanaged-short>DIDOI_FFEFFECTTRIGGER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ObjectAspect.Polled\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDOI_POLLED']/*\"/>\t\n            <unmanaged>DIDOI_POLLED</unmanaged>\t\n            <unmanaged-short>DIDOI_POLLED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ObjectAspect.Position\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDOI_ASPECTPOSITION']/*\"/>\t\n            <unmanaged>DIDOI_ASPECTPOSITION</unmanaged>\t\n            <unmanaged-short>DIDOI_ASPECTPOSITION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ObjectAspect.Velocity\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDOI_ASPECTVELOCITY']/*\"/>\t\n            <unmanaged>DIDOI_ASPECTVELOCITY</unmanaged>\t\n            <unmanaged-short>DIDOI_ASPECTVELOCITY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ObjectAspect.Acceleration\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDOI_ASPECTACCEL']/*\"/>\t\n            <unmanaged>DIDOI_ASPECTACCEL</unmanaged>\t\n            <unmanaged-short>DIDOI_ASPECTACCEL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ObjectAspect.Force\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDOI_ASPECTFORCE']/*\"/>\t\n            <unmanaged>DIDOI_ASPECTFORCE</unmanaged>\t\n            <unmanaged-short>DIDOI_ASPECTFORCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ObjectAspect.Mask\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDOI_ASPECTMASK']/*\"/>\t\n            <unmanaged>DIDOI_ASPECTMASK</unmanaged>\t\n            <unmanaged-short>DIDOI_ASPECTMASK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ObjectAspect.GuidIsUsage\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDOI_GUIDISUSAGE']/*\"/>\t\n            <unmanaged>DIDOI_GUIDISUSAGE</unmanaged>\t\n            <unmanaged-short>DIDOI_GUIDISUSAGE</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectInput.PropertyHowType\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIPH']/*\"/>\t\n            <unmanaged>DIPH</unmanaged>\t\n            <unmanaged-short>DIPH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.PropertyHowType.Device\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIPH_DEVICE']/*\"/>\t\n            <unmanaged>DIPH_DEVICE</unmanaged>\t\n            <unmanaged-short>DIPH_DEVICE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.PropertyHowType.Byoffset\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIPH_BYOFFSET']/*\"/>\t\n            <unmanaged>DIPH_BYOFFSET</unmanaged>\t\n            <unmanaged-short>DIPH_BYOFFSET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.PropertyHowType.Byid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIPH_BYID']/*\"/>\t\n            <unmanaged>DIPH_BYID</unmanaged>\t\n            <unmanaged-short>DIPH_BYID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.PropertyHowType.Byusage\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIPH_BYUSAGE']/*\"/>\t\n            <unmanaged>DIPH_BYUSAGE</unmanaged>\t\n            <unmanaged-short>DIPH_BYUSAGE</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectInput.TextAlignment\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDAL']/*\"/>\t\n            <unmanaged>DIDAL</unmanaged>\t\n            <unmanaged-short>DIDAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.TextAlignment.Centered\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDAL_CENTERED']/*\"/>\t\n            <unmanaged>DIDAL_CENTERED</unmanaged>\t\n            <unmanaged-short>DIDAL_CENTERED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.TextAlignment.Left\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDAL_LEFTALIGNED']/*\"/>\t\n            <unmanaged>DIDAL_LEFTALIGNED</unmanaged>\t\n            <unmanaged-short>DIDAL_LEFTALIGNED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.TextAlignment.Right\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDAL_RIGHTALIGNED']/*\"/>\t\n            <unmanaged>DIDAL_RIGHTALIGNED</unmanaged>\t\n            <unmanaged-short>DIDAL_RIGHTALIGNED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.TextAlignment.Middle\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDAL_MIDDLE']/*\"/>\t\n            <unmanaged>DIDAL_MIDDLE</unmanaged>\t\n            <unmanaged-short>DIDAL_MIDDLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.TextAlignment.Top\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDAL_TOPALIGNED']/*\"/>\t\n            <unmanaged>DIDAL_TOPALIGNED</unmanaged>\t\n            <unmanaged-short>DIDAL_TOPALIGNED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.TextAlignment.Bottom\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDAL_BOTTOMALIGNED']/*\"/>\t\n            <unmanaged>DIDAL_BOTTOMALIGNED</unmanaged>\t\n            <unmanaged-short>DIDAL_BOTTOMALIGNED</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectInput.AirCombatControls\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.DirectInput.AirCombatControls']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.AirCombatControls.AirCombatGenre\">\n            <summary>Constant AirCombatGenre.</summary>\n            <unmanaged>DIVIRTUAL_FLYING_MILITARY</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.AirCombatControls.Flaps\">\n            <summary>Constant Flaps.</summary>\n            <unmanaged>DIAXIS_FLYINGM_FLAPS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.AirCombatControls.Rudder\">\n            <summary>Constant Rudder.</summary>\n            <unmanaged>DIAXIS_FLYINGM_RUDDER</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.AirCombatControls.Throttle\">\n            <summary>Constant Throttle.</summary>\n            <unmanaged>DIAXIS_FLYINGM_THROTTLE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.AirCombatControls.Bank\">\n            <summary>Constant Bank.</summary>\n            <unmanaged>DIAXIS_FLYINGM_BANK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.AirCombatControls.Pitch\">\n            <summary>Constant Pitch.</summary>\n            <unmanaged>DIAXIS_FLYINGM_PITCH</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.AirCombatControls.Brake\">\n            <summary>Constant Brake.</summary>\n            <unmanaged>DIAXIS_FLYINGM_BRAKE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.AirCombatControls.FireSecondary\">\n            <summary>Constant FireSecondary.</summary>\n            <unmanaged>DIBUTTON_FLYINGM_FIRESECONDARY</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.AirCombatControls.Display\">\n            <summary>Constant Display.</summary>\n            <unmanaged>DIBUTTON_FLYINGM_DISPLAY</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.AirCombatControls.Pause\">\n            <summary>Constant Pause.</summary>\n            <unmanaged>DIBUTTON_FLYINGM_PAUSE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.AirCombatControls.Gear\">\n            <summary>Constant Gear.</summary>\n            <unmanaged>DIBUTTON_FLYINGM_GEAR</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.AirCombatControls.Fire\">\n            <summary>Constant Fire.</summary>\n            <unmanaged>DIBUTTON_FLYINGM_FIRE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.AirCombatControls.Menu\">\n            <summary>Constant Menu.</summary>\n            <unmanaged>DIBUTTON_FLYINGM_MENU</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.AirCombatControls.GlanceDownLink\">\n            <summary>Constant GlanceDownLink.</summary>\n            <unmanaged>DIBUTTON_FLYINGM_GLANCE_DOWN_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.AirCombatControls.FasterLink\">\n            <summary>Constant FasterLink.</summary>\n            <unmanaged>DIBUTTON_FLYINGM_FASTER_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.AirCombatControls.Target\">\n            <summary>Constant Target.</summary>\n            <unmanaged>DIBUTTON_FLYINGM_TARGET</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.AirCombatControls.Counter\">\n            <summary>Constant Counter.</summary>\n            <unmanaged>DIBUTTON_FLYINGM_COUNTER</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.AirCombatControls.Flapsup\">\n            <summary>Constant Flapsup.</summary>\n            <unmanaged>DIBUTTON_FLYINGM_FLAPSUP</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.AirCombatControls.GlanceUpLink\">\n            <summary>Constant GlanceUpLink.</summary>\n            <unmanaged>DIBUTTON_FLYINGM_GLANCE_UP_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.AirCombatControls.Weapons\">\n            <summary>Constant Weapons.</summary>\n            <unmanaged>DIBUTTON_FLYINGM_WEAPONS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.AirCombatControls.View\">\n            <summary>Constant View.</summary>\n            <unmanaged>DIBUTTON_FLYINGM_VIEW</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.AirCombatControls.Device\">\n            <summary>Constant Device.</summary>\n            <unmanaged>DIBUTTON_FLYINGM_DEVICE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.AirCombatControls.Flapsdown\">\n            <summary>Constant Flapsdown.</summary>\n            <unmanaged>DIBUTTON_FLYINGM_FLAPSDOWN</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.AirCombatControls.GlanceLeftLink\">\n            <summary>Constant GlanceLeftLink.</summary>\n            <unmanaged>DIBUTTON_FLYINGM_GLANCE_LEFT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.AirCombatControls.BrakeLink\">\n            <summary>Constant BrakeLink.</summary>\n            <unmanaged>DIBUTTON_FLYINGM_BRAKE_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.AirCombatControls.SlowerLink\">\n            <summary>Constant SlowerLink.</summary>\n            <unmanaged>DIBUTTON_FLYINGM_SLOWER_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.AirCombatControls.GlanceRightLink\">\n            <summary>Constant GlanceRightLink.</summary>\n            <unmanaged>DIBUTTON_FLYINGM_GLANCE_RIGHT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.AirCombatControls.Glance\">\n            <summary>Constant Glance.</summary>\n            <unmanaged>DIHATSWITCH_FLYINGM_GLANCE</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectInput.AnyControls\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.DirectInput.AnyControls']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.AnyControls.XAxis1\">\n            <summary>Constant XAxis1.</summary>\n            <unmanaged>DIAXIS_ANY_X_1</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.AnyControls.XAxis2\">\n            <summary>Constant XAxis2.</summary>\n            <unmanaged>DIAXIS_ANY_X_2</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.AnyControls.YAxis1\">\n            <summary>Constant YAxis1.</summary>\n            <unmanaged>DIAXIS_ANY_Y_1</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.AnyControls.YAxis2\">\n            <summary>Constant YAxis2.</summary>\n            <unmanaged>DIAXIS_ANY_Y_2</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.AnyControls.ZAxis1\">\n            <summary>Constant ZAxis1.</summary>\n            <unmanaged>DIAXIS_ANY_Z_1</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.AnyControls.ZAxis2\">\n            <summary>Constant ZAxis2.</summary>\n            <unmanaged>DIAXIS_ANY_Z_2</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.AnyControls.RAxis1\">\n            <summary>Constant RAxis1.</summary>\n            <unmanaged>DIAXIS_ANY_R_1</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.AnyControls.RAxis2\">\n            <summary>Constant RAxis2.</summary>\n            <unmanaged>DIAXIS_ANY_R_2</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.AnyControls.UAxis1\">\n            <summary>Constant UAxis1.</summary>\n            <unmanaged>DIAXIS_ANY_U_1</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.AnyControls.UAxis2\">\n            <summary>Constant UAxis2.</summary>\n            <unmanaged>DIAXIS_ANY_U_2</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.AnyControls.VAxis1\">\n            <summary>Constant VAxis1.</summary>\n            <unmanaged>DIAXIS_ANY_V_1</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.AnyControls.VAxis2\">\n            <summary>Constant VAxis2.</summary>\n            <unmanaged>DIAXIS_ANY_V_2</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.AnyControls.Accelerator1\">\n            <summary>Constant Accelerator1.</summary>\n            <unmanaged>DIAXIS_ANY_A_1</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.AnyControls.Accelerator2\">\n            <summary>Constant Accelerator2.</summary>\n            <unmanaged>DIAXIS_ANY_A_2</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.AnyControls.Brake1\">\n            <summary>Constant Brake1.</summary>\n            <unmanaged>DIAXIS_ANY_B_1</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.AnyControls.Brake2\">\n            <summary>Constant Brake2.</summary>\n            <unmanaged>DIAXIS_ANY_B_2</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.AnyControls.Clutch1\">\n            <summary>Constant Clutch1.</summary>\n            <unmanaged>DIAXIS_ANY_C_1</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.AnyControls.Clutch2\">\n            <summary>Constant Clutch2.</summary>\n            <unmanaged>DIAXIS_ANY_C_2</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.AnyControls.SAxis1\">\n            <summary>Constant SAxis1.</summary>\n            <unmanaged>DIAXIS_ANY_S_1</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.AnyControls.SAxis2\">\n            <summary>Constant SAxis2.</summary>\n            <unmanaged>DIAXIS_ANY_S_2</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.AnyControls.Axis1\">\n            <summary>Constant Axis1.</summary>\n            <unmanaged>DIAXIS_ANY_1</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.AnyControls.Axis2\">\n            <summary>Constant Axis2.</summary>\n            <unmanaged>DIAXIS_ANY_2</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.AnyControls.Axis3\">\n            <summary>Constant Axis3.</summary>\n            <unmanaged>DIAXIS_ANY_3</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.AnyControls.Axis4\">\n            <summary>Constant Axis4.</summary>\n            <unmanaged>DIAXIS_ANY_4</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.AnyControls.PointOfView1\">\n            <summary>Constant PointOfView1.</summary>\n            <unmanaged>DIPOV_ANY_1</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.AnyControls.PointOfView2\">\n            <summary>Constant PointOfView2.</summary>\n            <unmanaged>DIPOV_ANY_2</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.AnyControls.PointOfView3\">\n            <summary>Constant PointOfView3.</summary>\n            <unmanaged>DIPOV_ANY_3</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.AnyControls.PointOfView4\">\n            <summary>Constant PointOfView4.</summary>\n            <unmanaged>DIPOV_ANY_4</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectInput.BaseballBattingControls\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.DirectInput.BaseballBattingControls']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BaseballBattingControls.BaseballBattingGenre\">\n            <summary>Constant BaseballBattingGenre.</summary>\n            <unmanaged>DIVIRTUAL_SPORTS_BASEBALL_BAT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BaseballBattingControls.Lateral\">\n            <summary>Constant Lateral.</summary>\n            <unmanaged>DIAXIS_BASEBALLB_LATERAL</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BaseballBattingControls.Move\">\n            <summary>Constant Move.</summary>\n            <unmanaged>DIAXIS_BASEBALLB_MOVE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BaseballBattingControls.RightLink\">\n            <summary>Constant RightLink.</summary>\n            <unmanaged>DIBUTTON_BASEBALLB_RIGHT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BaseballBattingControls.LeftLink\">\n            <summary>Constant LeftLink.</summary>\n            <unmanaged>DIBUTTON_BASEBALLB_LEFT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BaseballBattingControls.Bunt\">\n            <summary>Constant Bunt.</summary>\n            <unmanaged>DIBUTTON_BASEBALLB_BUNT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BaseballBattingControls.Nosteal\">\n            <summary>Constant Nosteal.</summary>\n            <unmanaged>DIBUTTON_BASEBALLB_NOSTEAL</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BaseballBattingControls.Power\">\n            <summary>Constant Power.</summary>\n            <unmanaged>DIBUTTON_BASEBALLB_POWER</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BaseballBattingControls.Select\">\n            <summary>Constant Select.</summary>\n            <unmanaged>DIBUTTON_BASEBALLB_SELECT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BaseballBattingControls.Box\">\n            <summary>Constant Box.</summary>\n            <unmanaged>DIBUTTON_BASEBALLB_BOX</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BaseballBattingControls.Device\">\n            <summary>Constant Device.</summary>\n            <unmanaged>DIBUTTON_BASEBALLB_DEVICE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BaseballBattingControls.Slide\">\n            <summary>Constant Slide.</summary>\n            <unmanaged>DIBUTTON_BASEBALLB_SLIDE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BaseballBattingControls.Pause\">\n            <summary>Constant Pause.</summary>\n            <unmanaged>DIBUTTON_BASEBALLB_PAUSE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BaseballBattingControls.BackLink\">\n            <summary>Constant BackLink.</summary>\n            <unmanaged>DIBUTTON_BASEBALLB_BACK_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BaseballBattingControls.Burst\">\n            <summary>Constant Burst.</summary>\n            <unmanaged>DIBUTTON_BASEBALLB_BURST</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BaseballBattingControls.Normal\">\n            <summary>Constant Normal.</summary>\n            <unmanaged>DIBUTTON_BASEBALLB_NORMAL</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BaseballBattingControls.Contact\">\n            <summary>Constant Contact.</summary>\n            <unmanaged>DIBUTTON_BASEBALLB_CONTACT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BaseballBattingControls.Menu\">\n            <summary>Constant Menu.</summary>\n            <unmanaged>DIBUTTON_BASEBALLB_MENU</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BaseballBattingControls.Steal\">\n            <summary>Constant Steal.</summary>\n            <unmanaged>DIBUTTON_BASEBALLB_STEAL</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BaseballBattingControls.ForwardLink\">\n            <summary>Constant ForwardLink.</summary>\n            <unmanaged>DIBUTTON_BASEBALLB_FORWARD_LINK</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectInput.BaseballFieldingControls\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.DirectInput.BaseballFieldingControls']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BaseballFieldingControls.BaseballFieldingGenre\">\n            <summary>Constant BaseballFieldingGenre.</summary>\n            <unmanaged>DIVIRTUAL_SPORTS_BASEBALL_FIELD</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BaseballFieldingControls.Move\">\n            <summary>Constant Move.</summary>\n            <unmanaged>DIAXIS_BASEBALLF_MOVE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BaseballFieldingControls.Lateral\">\n            <summary>Constant Lateral.</summary>\n            <unmanaged>DIAXIS_BASEBALLF_LATERAL</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BaseballFieldingControls.AimLeftLink\">\n            <summary>Constant AimLeftLink.</summary>\n            <unmanaged>DIBUTTON_BASEBALLF_AIM_LEFT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BaseballFieldingControls.AimRightLink\">\n            <summary>Constant AimRightLink.</summary>\n            <unmanaged>DIBUTTON_BASEBALLF_AIM_RIGHT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BaseballFieldingControls.Throw1\">\n            <summary>Constant Throw1.</summary>\n            <unmanaged>DIBUTTON_BASEBALLF_THROW1</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BaseballFieldingControls.ForwardLink\">\n            <summary>Constant ForwardLink.</summary>\n            <unmanaged>DIBUTTON_BASEBALLF_FORWARD_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BaseballFieldingControls.Jump\">\n            <summary>Constant Jump.</summary>\n            <unmanaged>DIBUTTON_BASEBALLF_JUMP</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BaseballFieldingControls.Nearest\">\n            <summary>Constant Nearest.</summary>\n            <unmanaged>DIBUTTON_BASEBALLF_NEAREST</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BaseballFieldingControls.Dive\">\n            <summary>Constant Dive.</summary>\n            <unmanaged>DIBUTTON_BASEBALLF_DIVE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BaseballFieldingControls.BackLink\">\n            <summary>Constant BackLink.</summary>\n            <unmanaged>DIBUTTON_BASEBALLF_BACK_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BaseballFieldingControls.Shiftin\">\n            <summary>Constant Shiftin.</summary>\n            <unmanaged>DIBUTTON_BASEBALLF_SHIFTIN</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BaseballFieldingControls.Device\">\n            <summary>Constant Device.</summary>\n            <unmanaged>DIBUTTON_BASEBALLF_DEVICE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BaseballFieldingControls.Shiftout\">\n            <summary>Constant Shiftout.</summary>\n            <unmanaged>DIBUTTON_BASEBALLF_SHIFTOUT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BaseballFieldingControls.Pause\">\n            <summary>Constant Pause.</summary>\n            <unmanaged>DIBUTTON_BASEBALLF_PAUSE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BaseballFieldingControls.Throw2\">\n            <summary>Constant Throw2.</summary>\n            <unmanaged>DIBUTTON_BASEBALLF_THROW2</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BaseballFieldingControls.Burst\">\n            <summary>Constant Burst.</summary>\n            <unmanaged>DIBUTTON_BASEBALLF_BURST</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BaseballFieldingControls.Menu\">\n            <summary>Constant Menu.</summary>\n            <unmanaged>DIBUTTON_BASEBALLF_MENU</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectInput.BaseballPitchingControls\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.DirectInput.BaseballPitchingControls']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BaseballPitchingControls.BaseballPitchingGenre\">\n            <summary>Constant BaseballPitchingGenre.</summary>\n            <unmanaged>DIVIRTUAL_SPORTS_BASEBALL_PITCH</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BaseballPitchingControls.Move\">\n            <summary>Constant Move.</summary>\n            <unmanaged>DIAXIS_BASEBALLP_MOVE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BaseballPitchingControls.Lateral\">\n            <summary>Constant Lateral.</summary>\n            <unmanaged>DIAXIS_BASEBALLP_LATERAL</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BaseballPitchingControls.Base\">\n            <summary>Constant Base.</summary>\n            <unmanaged>DIBUTTON_BASEBALLP_BASE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BaseballPitchingControls.Fake\">\n            <summary>Constant Fake.</summary>\n            <unmanaged>DIBUTTON_BASEBALLP_FAKE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BaseballPitchingControls.ForwardLink\">\n            <summary>Constant ForwardLink.</summary>\n            <unmanaged>DIBUTTON_BASEBALLP_FORWARD_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BaseballPitchingControls.Pause\">\n            <summary>Constant Pause.</summary>\n            <unmanaged>DIBUTTON_BASEBALLP_PAUSE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BaseballPitchingControls.Throw\">\n            <summary>Constant Throw.</summary>\n            <unmanaged>DIBUTTON_BASEBALLP_THROW</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BaseballPitchingControls.BackLink\">\n            <summary>Constant BackLink.</summary>\n            <unmanaged>DIBUTTON_BASEBALLP_BACK_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BaseballPitchingControls.Walk\">\n            <summary>Constant Walk.</summary>\n            <unmanaged>DIBUTTON_BASEBALLP_WALK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BaseballPitchingControls.Menu\">\n            <summary>Constant Menu.</summary>\n            <unmanaged>DIBUTTON_BASEBALLP_MENU</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BaseballPitchingControls.Select\">\n            <summary>Constant Select.</summary>\n            <unmanaged>DIBUTTON_BASEBALLP_SELECT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BaseballPitchingControls.Device\">\n            <summary>Constant Device.</summary>\n            <unmanaged>DIBUTTON_BASEBALLP_DEVICE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BaseballPitchingControls.Pitch\">\n            <summary>Constant Pitch.</summary>\n            <unmanaged>DIBUTTON_BASEBALLP_PITCH</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BaseballPitchingControls.LeftLink\">\n            <summary>Constant LeftLink.</summary>\n            <unmanaged>DIBUTTON_BASEBALLP_LEFT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BaseballPitchingControls.Look\">\n            <summary>Constant Look.</summary>\n            <unmanaged>DIBUTTON_BASEBALLP_LOOK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BaseballPitchingControls.RightLink\">\n            <summary>Constant RightLink.</summary>\n            <unmanaged>DIBUTTON_BASEBALLP_RIGHT_LINK</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectInput.BasketballDefenseControls\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.DirectInput.BasketballDefenseControls']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BasketballDefenseControls.BasketballDefenseGenre\">\n            <summary>Constant BasketballDefenseGenre.</summary>\n            <unmanaged>DIVIRTUAL_SPORTS_BASKETBALL_DEFENSE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BasketballDefenseControls.Move\">\n            <summary>Constant Move.</summary>\n            <unmanaged>DIAXIS_BBALLD_MOVE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BasketballDefenseControls.Lateral\">\n            <summary>Constant Lateral.</summary>\n            <unmanaged>DIAXIS_BBALLD_LATERAL</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BasketballDefenseControls.Play\">\n            <summary>Constant Play.</summary>\n            <unmanaged>DIBUTTON_BBALLD_PLAY</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BasketballDefenseControls.Timeout\">\n            <summary>Constant Timeout.</summary>\n            <unmanaged>DIBUTTON_BBALLD_TIMEOUT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BasketballDefenseControls.Player\">\n            <summary>Constant Player.</summary>\n            <unmanaged>DIBUTTON_BBALLD_PLAYER</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BasketballDefenseControls.Burst\">\n            <summary>Constant Burst.</summary>\n            <unmanaged>DIBUTTON_BBALLD_BURST</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BasketballDefenseControls.Fake\">\n            <summary>Constant Fake.</summary>\n            <unmanaged>DIBUTTON_BBALLD_FAKE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BasketballDefenseControls.Steal\">\n            <summary>Constant Steal.</summary>\n            <unmanaged>DIBUTTON_BBALLD_STEAL</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BasketballDefenseControls.Special\">\n            <summary>Constant Special.</summary>\n            <unmanaged>DIBUTTON_BBALLD_SPECIAL</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BasketballDefenseControls.LeftLink\">\n            <summary>Constant LeftLink.</summary>\n            <unmanaged>DIBUTTON_BBALLD_LEFT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BasketballDefenseControls.SubStitute\">\n            <summary>Constant SubStitute.</summary>\n            <unmanaged>DIBUTTON_BBALLD_SUBSTITUTE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BasketballDefenseControls.BackLink\">\n            <summary>Constant BackLink.</summary>\n            <unmanaged>DIBUTTON_BBALLD_BACK_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BasketballDefenseControls.RightLink\">\n            <summary>Constant RightLink.</summary>\n            <unmanaged>DIBUTTON_BBALLD_RIGHT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BasketballDefenseControls.Menu\">\n            <summary>Constant Menu.</summary>\n            <unmanaged>DIBUTTON_BBALLD_MENU</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BasketballDefenseControls.ForwardLink\">\n            <summary>Constant ForwardLink.</summary>\n            <unmanaged>DIBUTTON_BBALLD_FORWARD_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BasketballDefenseControls.Device\">\n            <summary>Constant Device.</summary>\n            <unmanaged>DIBUTTON_BBALLD_DEVICE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BasketballDefenseControls.Jump\">\n            <summary>Constant Jump.</summary>\n            <unmanaged>DIBUTTON_BBALLD_JUMP</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BasketballDefenseControls.Pause\">\n            <summary>Constant Pause.</summary>\n            <unmanaged>DIBUTTON_BBALLD_PAUSE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BasketballDefenseControls.Glance\">\n            <summary>Constant Glance.</summary>\n            <unmanaged>DIHATSWITCH_BBALLD_GLANCE</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectInput.BasketballOffenseControls\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.DirectInput.BasketballOffenseControls']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BasketballOffenseControls.BasketballOffenseGenre\">\n            <summary>Constant BasketballOffenseGenre.</summary>\n            <unmanaged>DIVIRTUAL_SPORTS_BASKETBALL_OFFENSE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BasketballOffenseControls.Lateral\">\n            <summary>Constant Lateral.</summary>\n            <unmanaged>DIAXIS_BBALLO_LATERAL</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BasketballOffenseControls.Move\">\n            <summary>Constant Move.</summary>\n            <unmanaged>DIAXIS_BBALLO_MOVE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BasketballOffenseControls.RightLink\">\n            <summary>Constant RightLink.</summary>\n            <unmanaged>DIBUTTON_BBALLO_RIGHT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BasketballOffenseControls.Shoot\">\n            <summary>Constant Shoot.</summary>\n            <unmanaged>DIBUTTON_BBALLO_SHOOT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BasketballOffenseControls.ForwardLink\">\n            <summary>Constant ForwardLink.</summary>\n            <unmanaged>DIBUTTON_BBALLO_FORWARD_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BasketballOffenseControls.Timeout\">\n            <summary>Constant Timeout.</summary>\n            <unmanaged>DIBUTTON_BBALLO_TIMEOUT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BasketballOffenseControls.Post\">\n            <summary>Constant Post.</summary>\n            <unmanaged>DIBUTTON_BBALLO_POST</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BasketballOffenseControls.Device\">\n            <summary>Constant Device.</summary>\n            <unmanaged>DIBUTTON_BBALLO_DEVICE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BasketballOffenseControls.Player\">\n            <summary>Constant Player.</summary>\n            <unmanaged>DIBUTTON_BBALLO_PLAYER</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BasketballOffenseControls.Screen\">\n            <summary>Constant Screen.</summary>\n            <unmanaged>DIBUTTON_BBALLO_SCREEN</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BasketballOffenseControls.Special\">\n            <summary>Constant Special.</summary>\n            <unmanaged>DIBUTTON_BBALLO_SPECIAL</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BasketballOffenseControls.BackLink\">\n            <summary>Constant BackLink.</summary>\n            <unmanaged>DIBUTTON_BBALLO_BACK_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BasketballOffenseControls.Call\">\n            <summary>Constant Call.</summary>\n            <unmanaged>DIBUTTON_BBALLO_CALL</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BasketballOffenseControls.Pause\">\n            <summary>Constant Pause.</summary>\n            <unmanaged>DIBUTTON_BBALLO_PAUSE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BasketballOffenseControls.Burst\">\n            <summary>Constant Burst.</summary>\n            <unmanaged>DIBUTTON_BBALLO_BURST</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BasketballOffenseControls.Pass\">\n            <summary>Constant Pass.</summary>\n            <unmanaged>DIBUTTON_BBALLO_PASS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BasketballOffenseControls.Fake\">\n            <summary>Constant Fake.</summary>\n            <unmanaged>DIBUTTON_BBALLO_FAKE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BasketballOffenseControls.Play\">\n            <summary>Constant Play.</summary>\n            <unmanaged>DIBUTTON_BBALLO_PLAY</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BasketballOffenseControls.Dunk\">\n            <summary>Constant Dunk.</summary>\n            <unmanaged>DIBUTTON_BBALLO_DUNK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BasketballOffenseControls.Jab\">\n            <summary>Constant Jab.</summary>\n            <unmanaged>DIBUTTON_BBALLO_JAB</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BasketballOffenseControls.Menu\">\n            <summary>Constant Menu.</summary>\n            <unmanaged>DIBUTTON_BBALLO_MENU</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BasketballOffenseControls.LeftLink\">\n            <summary>Constant LeftLink.</summary>\n            <unmanaged>DIBUTTON_BBALLO_LEFT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BasketballOffenseControls.SubStitute\">\n            <summary>Constant SubStitute.</summary>\n            <unmanaged>DIBUTTON_BBALLO_SUBSTITUTE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BasketballOffenseControls.Glance\">\n            <summary>Constant Glance.</summary>\n            <unmanaged>DIHATSWITCH_BBALLO_GLANCE</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectInput.BrowserControls\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.DirectInput.BrowserControls']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BrowserControls.BrowserGenre\">\n            <summary>Constant BrowserGenre.</summary>\n            <unmanaged>DIVIRTUAL_BROWSER_CONTROL</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BrowserControls.Lateral\">\n            <summary>Constant Lateral.</summary>\n            <unmanaged>DIAXIS_BROWSER_LATERAL</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BrowserControls.Move\">\n            <summary>Constant Move.</summary>\n            <unmanaged>DIAXIS_BROWSER_MOVE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BrowserControls.View\">\n            <summary>Constant View.</summary>\n            <unmanaged>DIAXIS_BROWSER_VIEW</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BrowserControls.Print\">\n            <summary>Constant Print.</summary>\n            <unmanaged>DIBUTTON_BROWSER_PRINT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BrowserControls.Pause\">\n            <summary>Constant Pause.</summary>\n            <unmanaged>DIBUTTON_BROWSER_PAUSE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BrowserControls.Select\">\n            <summary>Constant Select.</summary>\n            <unmanaged>DIBUTTON_BROWSER_SELECT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BrowserControls.Menu\">\n            <summary>Constant Menu.</summary>\n            <unmanaged>DIBUTTON_BROWSER_MENU</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BrowserControls.History\">\n            <summary>Constant History.</summary>\n            <unmanaged>DIBUTTON_BROWSER_HISTORY</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BrowserControls.Next\">\n            <summary>Constant Next.</summary>\n            <unmanaged>DIBUTTON_BROWSER_NEXT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BrowserControls.Home\">\n            <summary>Constant Home.</summary>\n            <unmanaged>DIBUTTON_BROWSER_HOME</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BrowserControls.Favorites\">\n            <summary>Constant Favorites.</summary>\n            <unmanaged>DIBUTTON_BROWSER_FAVORITES</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BrowserControls.Stop\">\n            <summary>Constant Stop.</summary>\n            <unmanaged>DIBUTTON_BROWSER_STOP</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BrowserControls.Refresh\">\n            <summary>Constant Refresh.</summary>\n            <unmanaged>DIBUTTON_BROWSER_REFRESH</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BrowserControls.Previous\">\n            <summary>Constant Previous.</summary>\n            <unmanaged>DIBUTTON_BROWSER_PREVIOUS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BrowserControls.Search\">\n            <summary>Constant Search.</summary>\n            <unmanaged>DIBUTTON_BROWSER_SEARCH</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.BrowserControls.Device\">\n            <summary>Constant Device.</summary>\n            <unmanaged>DIBUTTON_BROWSER_DEVICE</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectInput.CivilianFlightControls\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.DirectInput.CivilianFlightControls']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.CivilianFlightControls.CivilianFlightGenre\">\n            <summary>Constant CivilianFlightGenre.</summary>\n            <unmanaged>DIVIRTUAL_FLYING_CIVILIAN</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.CivilianFlightControls.Pitch\">\n            <summary>Constant Pitch.</summary>\n            <unmanaged>DIAXIS_FLYINGC_PITCH</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.CivilianFlightControls.Brake\">\n            <summary>Constant Brake.</summary>\n            <unmanaged>DIAXIS_FLYINGC_BRAKE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.CivilianFlightControls.Flaps\">\n            <summary>Constant Flaps.</summary>\n            <unmanaged>DIAXIS_FLYINGC_FLAPS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.CivilianFlightControls.Throttle\">\n            <summary>Constant Throttle.</summary>\n            <unmanaged>DIAXIS_FLYINGC_THROTTLE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.CivilianFlightControls.Bank\">\n            <summary>Constant Bank.</summary>\n            <unmanaged>DIAXIS_FLYINGC_BANK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.CivilianFlightControls.Rudder\">\n            <summary>Constant Rudder.</summary>\n            <unmanaged>DIAXIS_FLYINGC_RUDDER</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.CivilianFlightControls.SlowerLink\">\n            <summary>Constant SlowerLink.</summary>\n            <unmanaged>DIBUTTON_FLYINGC_SLOWER_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.CivilianFlightControls.FasterLink\">\n            <summary>Constant FasterLink.</summary>\n            <unmanaged>DIBUTTON_FLYINGC_FASTER_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.CivilianFlightControls.BrakeLink\">\n            <summary>Constant BrakeLink.</summary>\n            <unmanaged>DIBUTTON_FLYINGC_BRAKE_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.CivilianFlightControls.Gear\">\n            <summary>Constant Gear.</summary>\n            <unmanaged>DIBUTTON_FLYINGC_GEAR</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.CivilianFlightControls.View\">\n            <summary>Constant View.</summary>\n            <unmanaged>DIBUTTON_FLYINGC_VIEW</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.CivilianFlightControls.Display\">\n            <summary>Constant Display.</summary>\n            <unmanaged>DIBUTTON_FLYINGC_DISPLAY</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.CivilianFlightControls.Flapsdown\">\n            <summary>Constant Flapsdown.</summary>\n            <unmanaged>DIBUTTON_FLYINGC_FLAPSDOWN</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.CivilianFlightControls.GlanceDownLink\">\n            <summary>Constant GlanceDownLink.</summary>\n            <unmanaged>DIBUTTON_FLYINGC_GLANCE_DOWN_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.CivilianFlightControls.GlanceLeftLink\">\n            <summary>Constant GlanceLeftLink.</summary>\n            <unmanaged>DIBUTTON_FLYINGC_GLANCE_LEFT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.CivilianFlightControls.GlanceRightLink\">\n            <summary>Constant GlanceRightLink.</summary>\n            <unmanaged>DIBUTTON_FLYINGC_GLANCE_RIGHT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.CivilianFlightControls.Pause\">\n            <summary>Constant Pause.</summary>\n            <unmanaged>DIBUTTON_FLYINGC_PAUSE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.CivilianFlightControls.GlanceUpLink\">\n            <summary>Constant GlanceUpLink.</summary>\n            <unmanaged>DIBUTTON_FLYINGC_GLANCE_UP_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.CivilianFlightControls.Menu\">\n            <summary>Constant Menu.</summary>\n            <unmanaged>DIBUTTON_FLYINGC_MENU</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.CivilianFlightControls.Device\">\n            <summary>Constant Device.</summary>\n            <unmanaged>DIBUTTON_FLYINGC_DEVICE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.CivilianFlightControls.Flapsup\">\n            <summary>Constant Flapsup.</summary>\n            <unmanaged>DIBUTTON_FLYINGC_FLAPSUP</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.CivilianFlightControls.Glance\">\n            <summary>Constant Glance.</summary>\n            <unmanaged>DIHATSWITCH_FLYINGC_GLANCE</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectInput.CombatRacingControls\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.DirectInput.CombatRacingControls']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.CombatRacingControls.AirCombatGenre\">\n            <summary>Constant AirCombatGenre.</summary>\n            <unmanaged>DIVIRTUAL_DRIVING_COMBAT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.CombatRacingControls.Steer\">\n            <summary>Constant Steer.</summary>\n            <unmanaged>DIAXIS_DRIVINGC_STEER</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.CombatRacingControls.Accelerate\">\n            <summary>Constant Accelerate.</summary>\n            <unmanaged>DIAXIS_DRIVINGC_ACCELERATE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.CombatRacingControls.BrakeAxis\">\n            <summary>Constant BrakeAxis.</summary>\n            <unmanaged>DIAXIS_DRIVINGC_BRAKE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.CombatRacingControls.AccelerateAndBrake\">\n            <summary>Constant AccelerateAndBrake.</summary>\n            <unmanaged>DIAXIS_DRIVINGC_ACCEL_AND_BRAKE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.CombatRacingControls.Fire\">\n            <summary>Constant Fire.</summary>\n            <unmanaged>DIBUTTON_DRIVINGC_FIRE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.CombatRacingControls.GlanceRightLink\">\n            <summary>Constant GlanceRightLink.</summary>\n            <unmanaged>DIBUTTON_DRIVINGC_GLANCE_RIGHT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.CombatRacingControls.Menu\">\n            <summary>Constant Menu.</summary>\n            <unmanaged>DIBUTTON_DRIVINGC_MENU</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.CombatRacingControls.Weapons\">\n            <summary>Constant Weapons.</summary>\n            <unmanaged>DIBUTTON_DRIVINGC_WEAPONS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.CombatRacingControls.Pause\">\n            <summary>Constant Pause.</summary>\n            <unmanaged>DIBUTTON_DRIVINGC_PAUSE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.CombatRacingControls.Shiftdown\">\n            <summary>Constant Shiftdown.</summary>\n            <unmanaged>DIBUTTON_DRIVINGC_SHIFTDOWN</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.CombatRacingControls.SteerRightLink\">\n            <summary>Constant SteerRightLink.</summary>\n            <unmanaged>DIBUTTON_DRIVINGC_STEER_RIGHT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.CombatRacingControls.GlanceLeftLink\">\n            <summary>Constant GlanceLeftLink.</summary>\n            <unmanaged>DIBUTTON_DRIVINGC_GLANCE_LEFT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.CombatRacingControls.Aids\">\n            <summary>Constant Aids.</summary>\n            <unmanaged>DIBUTTON_DRIVINGC_AIDS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.CombatRacingControls.Dashboard\">\n            <summary>Constant Dashboard.</summary>\n            <unmanaged>DIBUTTON_DRIVINGC_DASHBOARD</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.CombatRacingControls.Target\">\n            <summary>Constant Target.</summary>\n            <unmanaged>DIBUTTON_DRIVINGC_TARGET</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.CombatRacingControls.Shiftup\">\n            <summary>Constant Shiftup.</summary>\n            <unmanaged>DIBUTTON_DRIVINGC_SHIFTUP</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.CombatRacingControls.SteerLeftLink\">\n            <summary>Constant SteerLeftLink.</summary>\n            <unmanaged>DIBUTTON_DRIVINGC_STEER_LEFT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.CombatRacingControls.AccelerateLink\">\n            <summary>Constant AccelerateLink.</summary>\n            <unmanaged>DIBUTTON_DRIVINGC_ACCELERATE_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.CombatRacingControls.Firesecondary\">\n            <summary>Constant Firesecondary.</summary>\n            <unmanaged>DIBUTTON_DRIVINGC_FIRESECONDARY</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.CombatRacingControls.Brake\">\n            <summary>Constant Brake.</summary>\n            <unmanaged>DIBUTTON_DRIVINGC_BRAKE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.CombatRacingControls.Device\">\n            <summary>Constant Device.</summary>\n            <unmanaged>DIBUTTON_DRIVINGC_DEVICE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.CombatRacingControls.Glance\">\n            <summary>Constant Glance.</summary>\n            <unmanaged>DIHATSWITCH_DRIVINGC_GLANCE</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectInput.DeviceGuid\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.DirectInput.DeviceGuid']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceGuid.SysMouse\">\n            <summary>Constant SysMouse.</summary>\n            <unmanaged>GUID_SysMouse</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceGuid.SysKeyboard\">\n            <summary>Constant SysKeyboard.</summary>\n            <unmanaged>GUID_SysKeyboard</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceGuid.Joystick\">\n            <summary>Constant Joystick.</summary>\n            <unmanaged>GUID_Joystick</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceGuid.SysMouseEm\">\n            <summary>Constant SysMouseEm.</summary>\n            <unmanaged>GUID_SysMouseEm</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceGuid.SysMouseEm2\">\n            <summary>Constant SysMouseEm2.</summary>\n            <unmanaged>GUID_SysMouseEm2</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceGuid.SysKeyboardEm\">\n            <summary>Constant SysKeyboardEm.</summary>\n            <unmanaged>GUID_SysKeyboardEm</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceGuid.SysKeyboardEm2\">\n            <summary>Constant SysKeyboardEm2.</summary>\n            <unmanaged>GUID_SysKeyboardEm2</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectInput.DeviceSubtype\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.DirectInput.DeviceSubtype']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceSubtype.MouseUnknown\">\n            <summary>Constant MouseUnknown.</summary>\n            <unmanaged>DI8DEVTYPEMOUSE_UNKNOWN</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceSubtype.MouseAbsolute\">\n            <summary>Constant MouseAbsolute.</summary>\n            <unmanaged>DI8DEVTYPEMOUSE_ABSOLUTE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceSubtype.MouseTrackball\">\n            <summary>Constant MouseTrackball.</summary>\n            <unmanaged>DI8DEVTYPEMOUSE_TRACKBALL</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceSubtype.MouseTraditional\">\n            <summary>Constant MouseTraditional.</summary>\n            <unmanaged>DI8DEVTYPEMOUSE_TRADITIONAL</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceSubtype.MouseTouchpad\">\n            <summary>Constant MouseTouchpad.</summary>\n            <unmanaged>DI8DEVTYPEMOUSE_TOUCHPAD</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceSubtype.MouseFingerstick\">\n            <summary>Constant MouseFingerstick.</summary>\n            <unmanaged>DI8DEVTYPEMOUSE_FINGERSTICK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceSubtype.KeyboardNec98106\">\n            <summary>Constant KeyboardNec98106.</summary>\n            <unmanaged>DI8DEVTYPEKEYBOARD_NEC98106</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceSubtype.KeyboardJapanax\">\n            <summary>Constant KeyboardJapanax.</summary>\n            <unmanaged>DI8DEVTYPEKEYBOARD_JAPANAX</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceSubtype.KeyboardJapan106\">\n            <summary>Constant KeyboardJapan106.</summary>\n            <unmanaged>DI8DEVTYPEKEYBOARD_JAPAN106</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceSubtype.KeyboardPcxt\">\n            <summary>Constant KeyboardPcxt.</summary>\n            <unmanaged>DI8DEVTYPEKEYBOARD_PCXT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceSubtype.KeyboardNokia9140\">\n            <summary>Constant KeyboardNokia9140.</summary>\n            <unmanaged>DI8DEVTYPEKEYBOARD_NOKIA9140</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceSubtype.KeyboardNec98laptop\">\n            <summary>Constant KeyboardNec98laptop.</summary>\n            <unmanaged>DI8DEVTYPEKEYBOARD_NEC98LAPTOP</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceSubtype.KeyboardOlivetti\">\n            <summary>Constant KeyboardOlivetti.</summary>\n            <unmanaged>DI8DEVTYPEKEYBOARD_OLIVETTI</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceSubtype.KeyboardNec98\">\n            <summary>Constant KeyboardNec98.</summary>\n            <unmanaged>DI8DEVTYPEKEYBOARD_NEC98</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceSubtype.KeyboardPcat\">\n            <summary>Constant KeyboardPcat.</summary>\n            <unmanaged>DI8DEVTYPEKEYBOARD_PCAT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceSubtype.KeyboardPcenh\">\n            <summary>Constant KeyboardPcenh.</summary>\n            <unmanaged>DI8DEVTYPEKEYBOARD_PCENH</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceSubtype.KeyboardUnknown\">\n            <summary>Constant KeyboardUnknown.</summary>\n            <unmanaged>DI8DEVTYPEKEYBOARD_UNKNOWN</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceSubtype.KeyboardNokia1050\">\n            <summary>Constant KeyboardNokia1050.</summary>\n            <unmanaged>DI8DEVTYPEKEYBOARD_NOKIA1050</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceSubtype.KeyboardJ3100\">\n            <summary>Constant KeyboardJ3100.</summary>\n            <unmanaged>DI8DEVTYPEKEYBOARD_J3100</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceSubtype.JoystickStandard\">\n            <summary>Constant JoystickStandard.</summary>\n            <unmanaged>DI8DEVTYPEJOYSTICK_STANDARD</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceSubtype.JoystickLimited\">\n            <summary>Constant JoystickLimited.</summary>\n            <unmanaged>DI8DEVTYPEJOYSTICK_LIMITED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceSubtype.GamepadLimited\">\n            <summary>Constant GamepadLimited.</summary>\n            <unmanaged>DI8DEVTYPEGAMEPAD_LIMITED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceSubtype.GamepadStandard\">\n            <summary>Constant GamepadStandard.</summary>\n            <unmanaged>DI8DEVTYPEGAMEPAD_STANDARD</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceSubtype.GamepadTilt\">\n            <summary>Constant GamepadTilt.</summary>\n            <unmanaged>DI8DEVTYPEGAMEPAD_TILT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceSubtype.DrivingHandheld\">\n            <summary>Constant DrivingHandheld.</summary>\n            <unmanaged>DI8DEVTYPEDRIVING_HANDHELD</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceSubtype.DrivingThreepedals\">\n            <summary>Constant DrivingThreepedals.</summary>\n            <unmanaged>DI8DEVTYPEDRIVING_THREEPEDALS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceSubtype.DrivingCombinedpedals\">\n            <summary>Constant DrivingCombinedpedals.</summary>\n            <unmanaged>DI8DEVTYPEDRIVING_COMBINEDPEDALS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceSubtype.DrivingDualpedals\">\n            <summary>Constant DrivingDualpedals.</summary>\n            <unmanaged>DI8DEVTYPEDRIVING_DUALPEDALS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceSubtype.DrivingLimited\">\n            <summary>Constant DrivingLimited.</summary>\n            <unmanaged>DI8DEVTYPEDRIVING_LIMITED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceSubtype.FlightLimited\">\n            <summary>Constant FlightLimited.</summary>\n            <unmanaged>DI8DEVTYPEFLIGHT_LIMITED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceSubtype.FlightYoke\">\n            <summary>Constant FlightYoke.</summary>\n            <unmanaged>DI8DEVTYPEFLIGHT_YOKE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceSubtype.FlightStick\">\n            <summary>Constant FlightStick.</summary>\n            <unmanaged>DI8DEVTYPEFLIGHT_STICK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceSubtype.FlightRc\">\n            <summary>Constant FlightRc.</summary>\n            <unmanaged>DI8DEVTYPEFLIGHT_RC</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceSubtype.FirstPersonLimited\">\n            <summary>Constant FirstPersonLimited.</summary>\n            <unmanaged>DI8DEVTYPE1STPERSON_LIMITED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceSubtype.FirstPersonSixdof\">\n            <summary>Constant FirstPersonSixdof.</summary>\n            <unmanaged>DI8DEVTYPE1STPERSON_SIXDOF</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceSubtype.FirstPersonUnknown\">\n            <summary>Constant FirstPersonUnknown.</summary>\n            <unmanaged>DI8DEVTYPE1STPERSON_UNKNOWN</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceSubtype.FirstPersonShooter\">\n            <summary>Constant FirstPersonShooter.</summary>\n            <unmanaged>DI8DEVTYPE1STPERSON_SHOOTER</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceSubtype.ScreenPointerLightgun\">\n            <summary>Constant ScreenPointerLightgun.</summary>\n            <unmanaged>DI8DEVTYPESCREENPTR_LIGHTGUN</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceSubtype.ScreenPointerUnknown\">\n            <summary>Constant ScreenPointerUnknown.</summary>\n            <unmanaged>DI8DEVTYPESCREENPTR_UNKNOWN</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceSubtype.ScreenPointerLightpen\">\n            <summary>Constant ScreenPointerLightpen.</summary>\n            <unmanaged>DI8DEVTYPESCREENPTR_LIGHTPEN</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceSubtype.ScreenPointerTouch\">\n            <summary>Constant ScreenPointerTouch.</summary>\n            <unmanaged>DI8DEVTYPESCREENPTR_TOUCH</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceSubtype.RemoteUnknown\">\n            <summary>Constant RemoteUnknown.</summary>\n            <unmanaged>DI8DEVTYPEREMOTE_UNKNOWN</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceSubtype.DeviceControlCommsselection\">\n            <summary>Constant DeviceControlCommsselection.</summary>\n            <unmanaged>DI8DEVTYPEDEVICECTRL_COMMSSELECTION</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceSubtype.DeviceControlUnknown\">\n            <summary>Constant DeviceControlUnknown.</summary>\n            <unmanaged>DI8DEVTYPEDEVICECTRL_UNKNOWN</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceSubtype.DeviceControlCommsselectionHardwired\">\n            <summary>Constant DeviceControlCommsselectionHardwired.</summary>\n            <unmanaged>DI8DEVTYPEDEVICECTRL_COMMSSELECTION_HARDWIRED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceSubtype.SupplementalHandtracker\">\n            <summary>Constant SupplementalHandtracker.</summary>\n            <unmanaged>DI8DEVTYPESUPPLEMENTAL_HANDTRACKER</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceSubtype.SupplementalDualpedals\">\n            <summary>Constant SupplementalDualpedals.</summary>\n            <unmanaged>DI8DEVTYPESUPPLEMENTAL_DUALPEDALS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceSubtype.SupplementalHeadtracker\">\n            <summary>Constant SupplementalHeadtracker.</summary>\n            <unmanaged>DI8DEVTYPESUPPLEMENTAL_HEADTRACKER</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceSubtype.Supplemental2ndhandcontroller\">\n            <summary>Constant Supplemental2ndhandcontroller.</summary>\n            <unmanaged>DI8DEVTYPESUPPLEMENTAL_2NDHANDCONTROLLER</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceSubtype.SupplementalShifter\">\n            <summary>Constant SupplementalShifter.</summary>\n            <unmanaged>DI8DEVTYPESUPPLEMENTAL_SHIFTER</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceSubtype.SupplementalShiftstickgate\">\n            <summary>Constant SupplementalShiftstickgate.</summary>\n            <unmanaged>DI8DEVTYPESUPPLEMENTAL_SHIFTSTICKGATE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceSubtype.SupplementalCombinedpedals\">\n            <summary>Constant SupplementalCombinedpedals.</summary>\n            <unmanaged>DI8DEVTYPESUPPLEMENTAL_COMBINEDPEDALS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceSubtype.SupplementalSplitthrottle\">\n            <summary>Constant SupplementalSplitthrottle.</summary>\n            <unmanaged>DI8DEVTYPESUPPLEMENTAL_SPLITTHROTTLE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceSubtype.SupplementalRudderpedals\">\n            <summary>Constant SupplementalRudderpedals.</summary>\n            <unmanaged>DI8DEVTYPESUPPLEMENTAL_RUDDERPEDALS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceSubtype.SupplementalUnknown\">\n            <summary>Constant SupplementalUnknown.</summary>\n            <unmanaged>DI8DEVTYPESUPPLEMENTAL_UNKNOWN</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceSubtype.SupplementalThreepedals\">\n            <summary>Constant SupplementalThreepedals.</summary>\n            <unmanaged>DI8DEVTYPESUPPLEMENTAL_THREEPEDALS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceSubtype.SupplementalThrottle\">\n            <summary>Constant SupplementalThrottle.</summary>\n            <unmanaged>DI8DEVTYPESUPPLEMENTAL_THROTTLE</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectInput.DInput\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.DirectInput.DInput']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DInput.SdkVersion\">\n            <summary>Constant SdkVersion.</summary>\n            <unmanaged>DIRECTINPUT_VERSION</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectInput.DInput.DirectInput8Create(System.IntPtr,System.Int32,System.Guid,System.IntPtr@,SharpDX.ComObject)\">\n            <summary>\t\n            Creates a DirectInput object and returns anIDirectInput8 Interfaceor later interface.\t\n            </summary>\t\n            <param name=\"hinst\">No documentation.</param>\t\n            <param name=\"dwVersion\">No documentation.</param>\t\n            <param name=\"riidltf\">No documentation.</param>\t\n            <param name=\"vOutOut\">No documentation.</param>\t\n            <param name=\"unkOuterRef\">No documentation.</param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.DirectInput.ResultCode.Ok\"/>. If the function fails, the return value can be one of the following error values: <see cref=\"F:SharpDX.DirectInput.ResultCode.BetaDirectInputVersion\"/>, <see cref=\"F:SharpDX.DirectInput.ResultCode.InvalidParam\"/>, <see cref=\"F:SharpDX.DirectInput.ResultCode.OldDirectInputVersion\"/>, <see cref=\"F:SharpDX.DirectInput.ResultCode.OutOfMemory\"/>.</p></returns>\t\n            <remarks>\t\n            <p>The DirectInput object created by this function is implemented in Dinput8.dll. Versions of interfaces earlier than DirectX 8.0 cannot be obtained in this implementation.</p> <p>To create a DirectX 8.x interface with the latest DirectX SDK without using CoCreateInstance:</p> <ol> <li> <p>Set \"#define <see cref=\"F:SharpDX.DirectInput.DInput.SdkVersion\"/> 0x0800\" before the include statement for Dinput8.h.</p> </li> <li> <p>Call DirectInput8Create instead of DirectInputCreateEx.</p> </li> <li> <p>Link to the Dinput8.lib library instead of Dinput.lib.</p> </li> </ol> <p>To create a DirectX 8.x interface with the DirectX 8.x SDK without using CoCreateInstance:</p> <ol> <li> <p>Call DirectInput8Create instead of DirectInputCreateEx.</p> </li> <li> <p>Link to the Dinput8.lib library instead of Dinput.lib.</p> </li> </ol> <p>To create a DirectX 7.0 interface from the DirectX 8.x or latest DirectX SDK without using CoCreateInstance:</p> <ol> <li> <p>Set \"#define <see cref=\"F:SharpDX.DirectInput.DInput.SdkVersion\"/> 0x0700\" before the include statement for dinput.h.</p> </li> <li> <p>Call DirectInputCreateEx instead of DirectInput8Create.</p> </li> <li> <p>Link to the Dinput.lib library instead of Dinput8.lib.</p> </li> </ol> <p>To create a DirectX 7.0 interface from the DirectX 8.x or latest DirectX SDK using CoCreateInstance:</p> <ol> <li> <p>Call CoInitializeEx.</p> </li> <li> <p>Call CoCreateInstance using CLISID_DirectInput.</p> </li> <li> <p>Use IDirectInput7::Initialize to initialize the DirectInput object.</p> </li> </ol> <p>To create a DirectX 8.x or DirectX 9.0 interface from the DirectX 8.x or latest DirectX SDK using CoCreateInstance:</p> <ol> <li> <p>Call CoInitializeEx.</p> </li> <li> <p>Call CoCreateInstance using CLISID_DirectInput8.</p> </li> <li> <p>Use <see cref=\"M:SharpDX.DirectInput.DirectInput.Initialize(System.IntPtr,System.Int32)\"/> to initialize the DirectInput object.</p> </li> </ol> <p>Calling the function with pUnkOuter = <c>null</c> is equivalent to creating the object through CoCreateInstance( &amp;CLSID_DirectInput8, punkOuter, CLSCTX_INPROC_SERVER, &amp;IID_IDirectInput8W, lplpDirectInput), then initializing it with <see cref=\"M:SharpDX.DirectInput.DirectInput.Initialize(System.IntPtr,System.Int32)\"/>.</p> <p>Calling the function with pUnkOuter != <c>null</c> is equivalent to creating the object through CoCreateInstance( &amp;CLSID_DirectInput8, punkOuter, CLSCTX_INPROC_SERVER, &amp;IID_IUnknown, lplpDirectInput). The aggregated object must be initialized manually.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DirectInput8Create']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.directinput8create</msdn-id>\t\n            <unmanaged>HRESULT DirectInput8Create([In] HINSTANCE hinst,[In] unsigned int dwVersion,[In] const GUID&amp; riidltf,[Out] void** ppvOut,[In] IUnknown* punkOuter)</unmanaged>\t\n            <unmanaged-short>DirectInput8Create</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectInput.EffectGuid\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.DirectInput.EffectGuid']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectGuid.ConstantForce\">\n            <summary>Constant ConstantForce.</summary>\n            <unmanaged>GUID_ConstantForce</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectGuid.RampForce\">\n            <summary>Constant RampForce.</summary>\n            <unmanaged>GUID_RampForce</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectGuid.Square\">\n            <summary>Constant Square.</summary>\n            <unmanaged>GUID_Square</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectGuid.Sine\">\n            <summary>Constant Sine.</summary>\n            <unmanaged>GUID_Sine</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectGuid.Triangle\">\n            <summary>Constant Triangle.</summary>\n            <unmanaged>GUID_Triangle</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectGuid.SawtoothUp\">\n            <summary>Constant SawtoothUp.</summary>\n            <unmanaged>GUID_SawtoothUp</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectGuid.SawtoothDown\">\n            <summary>Constant SawtoothDown.</summary>\n            <unmanaged>GUID_SawtoothDown</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectGuid.Spring\">\n            <summary>Constant Spring.</summary>\n            <unmanaged>GUID_Spring</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectGuid.Damper\">\n            <summary>Constant Damper.</summary>\n            <unmanaged>GUID_Damper</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectGuid.Inertia\">\n            <summary>Constant Inertia.</summary>\n            <unmanaged>GUID_Inertia</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectGuid.Friction\">\n            <summary>Constant Friction.</summary>\n            <unmanaged>GUID_Friction</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectGuid.CustomForce\">\n            <summary>Constant CustomForce.</summary>\n            <unmanaged>GUID_CustomForce</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectInput.FishingControls\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.DirectInput.FishingControls']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.FishingControls.FishingGenre\">\n            <summary>Constant FishingGenre.</summary>\n            <unmanaged>DIVIRTUAL_SPORTS_FISHING</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.FishingControls.Lateral\">\n            <summary>Constant Lateral.</summary>\n            <unmanaged>DIAXIS_FISHING_LATERAL</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.FishingControls.Move\">\n            <summary>Constant Move.</summary>\n            <unmanaged>DIAXIS_FISHING_MOVE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.FishingControls.Rotate\">\n            <summary>Constant Rotate.</summary>\n            <unmanaged>DIAXIS_FISHING_ROTATE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.FishingControls.Glance\">\n            <summary>Constant Glance.</summary>\n            <unmanaged>DIHATSWITCH_FISHING_GLANCE</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectInput.FootballDefenseControls\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.DirectInput.FootballDefenseControls']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.FootballDefenseControls.FootballDefenseGenre\">\n            <summary>Constant FootballDefenseGenre.</summary>\n            <unmanaged>DIVIRTUAL_SPORTS_FOOTBALL_DEFENSE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.FootballDefenseControls.Move\">\n            <summary>Constant Move.</summary>\n            <unmanaged>DIAXIS_FOOTBALLD_MOVE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.FootballDefenseControls.Lateral\">\n            <summary>Constant Lateral.</summary>\n            <unmanaged>DIAXIS_FOOTBALLD_LATERAL</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.FootballDefenseControls.Audible\">\n            <summary>Constant Audible.</summary>\n            <unmanaged>DIBUTTON_FOOTBALLD_AUDIBLE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.FootballDefenseControls.Menu\">\n            <summary>Constant Menu.</summary>\n            <unmanaged>DIBUTTON_FOOTBALLD_MENU</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.FootballDefenseControls.LeftLink\">\n            <summary>Constant LeftLink.</summary>\n            <unmanaged>DIBUTTON_FOOTBALLD_LEFT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.FootballDefenseControls.SubStitute\">\n            <summary>Constant SubStitute.</summary>\n            <unmanaged>DIBUTTON_FOOTBALLD_SUBSTITUTE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.FootballDefenseControls.BackLink\">\n            <summary>Constant BackLink.</summary>\n            <unmanaged>DIBUTTON_FOOTBALLD_BACK_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.FootballDefenseControls.RightLink\">\n            <summary>Constant RightLink.</summary>\n            <unmanaged>DIBUTTON_FOOTBALLD_RIGHT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.FootballDefenseControls.ForwardLink\">\n            <summary>Constant ForwardLink.</summary>\n            <unmanaged>DIBUTTON_FOOTBALLD_FORWARD_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.FootballDefenseControls.Zoom\">\n            <summary>Constant Zoom.</summary>\n            <unmanaged>DIBUTTON_FOOTBALLD_ZOOM</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.FootballDefenseControls.Spin\">\n            <summary>Constant Spin.</summary>\n            <unmanaged>DIBUTTON_FOOTBALLD_SPIN</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.FootballDefenseControls.Tackle\">\n            <summary>Constant Tackle.</summary>\n            <unmanaged>DIBUTTON_FOOTBALLD_TACKLE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.FootballDefenseControls.Jump\">\n            <summary>Constant Jump.</summary>\n            <unmanaged>DIBUTTON_FOOTBALLD_JUMP</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.FootballDefenseControls.Play\">\n            <summary>Constant Play.</summary>\n            <unmanaged>DIBUTTON_FOOTBALLD_PLAY</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.FootballDefenseControls.Supertackle\">\n            <summary>Constant Supertackle.</summary>\n            <unmanaged>DIBUTTON_FOOTBALLD_SUPERTACKLE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.FootballDefenseControls.Swim\">\n            <summary>Constant Swim.</summary>\n            <unmanaged>DIBUTTON_FOOTBALLD_SWIM</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.FootballDefenseControls.Pause\">\n            <summary>Constant Pause.</summary>\n            <unmanaged>DIBUTTON_FOOTBALLD_PAUSE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.FootballDefenseControls.Select\">\n            <summary>Constant Select.</summary>\n            <unmanaged>DIBUTTON_FOOTBALLD_SELECT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.FootballDefenseControls.Rip\">\n            <summary>Constant Rip.</summary>\n            <unmanaged>DIBUTTON_FOOTBALLD_RIP</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.FootballDefenseControls.Fake\">\n            <summary>Constant Fake.</summary>\n            <unmanaged>DIBUTTON_FOOTBALLD_FAKE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.FootballDefenseControls.Device\">\n            <summary>Constant Device.</summary>\n            <unmanaged>DIBUTTON_FOOTBALLD_DEVICE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.FootballDefenseControls.Bullrush\">\n            <summary>Constant Bullrush.</summary>\n            <unmanaged>DIBUTTON_FOOTBALLD_BULLRUSH</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectInput.FootballOffenseControls\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.DirectInput.FootballOffenseControls']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.FootballOffenseControls.FootballOffenseGenre\">\n            <summary>Constant FootballOffenseGenre.</summary>\n            <unmanaged>DIVIRTUAL_SPORTS_FOOTBALL_OFFENSE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.FootballOffenseControls.Move\">\n            <summary>Constant Move.</summary>\n            <unmanaged>DIAXIS_FOOTBALLO_MOVE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.FootballOffenseControls.Lateral\">\n            <summary>Constant Lateral.</summary>\n            <unmanaged>DIAXIS_FOOTBALLO_LATERAL</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.FootballOffenseControls.BackLink\">\n            <summary>Constant BackLink.</summary>\n            <unmanaged>DIBUTTON_FOOTBALLO_BACK_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.FootballOffenseControls.Pause\">\n            <summary>Constant Pause.</summary>\n            <unmanaged>DIBUTTON_FOOTBALLO_PAUSE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.FootballOffenseControls.Throw\">\n            <summary>Constant Throw.</summary>\n            <unmanaged>DIBUTTON_FOOTBALLO_THROW</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.FootballOffenseControls.Turbo\">\n            <summary>Constant Turbo.</summary>\n            <unmanaged>DIBUTTON_FOOTBALLO_TURBO</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.FootballOffenseControls.Device\">\n            <summary>Constant Device.</summary>\n            <unmanaged>DIBUTTON_FOOTBALLO_DEVICE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.FootballOffenseControls.Juke\">\n            <summary>Constant Juke.</summary>\n            <unmanaged>DIBUTTON_FOOTBALLO_JUKE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.FootballOffenseControls.Menu\">\n            <summary>Constant Menu.</summary>\n            <unmanaged>DIBUTTON_FOOTBALLO_MENU</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.FootballOffenseControls.Shoulder\">\n            <summary>Constant Shoulder.</summary>\n            <unmanaged>DIBUTTON_FOOTBALLO_SHOULDER</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.FootballOffenseControls.SubStitute\">\n            <summary>Constant SubStitute.</summary>\n            <unmanaged>DIBUTTON_FOOTBALLO_SUBSTITUTE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.FootballOffenseControls.Leftarm\">\n            <summary>Constant Leftarm.</summary>\n            <unmanaged>DIBUTTON_FOOTBALLO_LEFTARM</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.FootballOffenseControls.Zoom\">\n            <summary>Constant Zoom.</summary>\n            <unmanaged>DIBUTTON_FOOTBALLO_ZOOM</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.FootballOffenseControls.Spin\">\n            <summary>Constant Spin.</summary>\n            <unmanaged>DIBUTTON_FOOTBALLO_SPIN</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.FootballOffenseControls.Jump\">\n            <summary>Constant Jump.</summary>\n            <unmanaged>DIBUTTON_FOOTBALLO_JUMP</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.FootballOffenseControls.RightLink\">\n            <summary>Constant RightLink.</summary>\n            <unmanaged>DIBUTTON_FOOTBALLO_RIGHT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.FootballOffenseControls.LeftLink\">\n            <summary>Constant LeftLink.</summary>\n            <unmanaged>DIBUTTON_FOOTBALLO_LEFT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.FootballOffenseControls.Dive\">\n            <summary>Constant Dive.</summary>\n            <unmanaged>DIBUTTON_FOOTBALLO_DIVE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.FootballOffenseControls.Rightarm\">\n            <summary>Constant Rightarm.</summary>\n            <unmanaged>DIBUTTON_FOOTBALLO_RIGHTARM</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.FootballOffenseControls.ForwardLink\">\n            <summary>Constant ForwardLink.</summary>\n            <unmanaged>DIBUTTON_FOOTBALLO_FORWARD_LINK</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectInput.FootballPlayControls\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.DirectInput.FootballPlayControls']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.FootballPlayControls.FootballPlayGenre\">\n            <summary>Constant FootballPlayGenre.</summary>\n            <unmanaged>DIVIRTUAL_SPORTS_FOOTBALL_FIELD</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.FootballPlayControls.Pause\">\n            <summary>Constant Pause.</summary>\n            <unmanaged>DIBUTTON_FOOTBALLP_PAUSE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.FootballPlayControls.Help\">\n            <summary>Constant Help.</summary>\n            <unmanaged>DIBUTTON_FOOTBALLP_HELP</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.FootballPlayControls.Select\">\n            <summary>Constant Select.</summary>\n            <unmanaged>DIBUTTON_FOOTBALLP_SELECT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.FootballPlayControls.Device\">\n            <summary>Constant Device.</summary>\n            <unmanaged>DIBUTTON_FOOTBALLP_DEVICE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.FootballPlayControls.Menu\">\n            <summary>Constant Menu.</summary>\n            <unmanaged>DIBUTTON_FOOTBALLP_MENU</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.FootballPlayControls.Play\">\n            <summary>Constant Play.</summary>\n            <unmanaged>DIBUTTON_FOOTBALLP_PLAY</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectInput.FootballQuarterbackControls\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.DirectInput.FootballQuarterbackControls']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.FootballQuarterbackControls.FootballQuarterbackGenre\">\n            <summary>Constant FootballQuarterbackGenre.</summary>\n            <unmanaged>DIVIRTUAL_SPORTS_FOOTBALL_QBCK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.FootballQuarterbackControls.Lateral\">\n            <summary>Constant Lateral.</summary>\n            <unmanaged>DIAXIS_FOOTBALLQ_LATERAL</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.FootballQuarterbackControls.Move\">\n            <summary>Constant Move.</summary>\n            <unmanaged>DIAXIS_FOOTBALLQ_MOVE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.FootballQuarterbackControls.BackLink\">\n            <summary>Constant BackLink.</summary>\n            <unmanaged>DIBUTTON_FOOTBALLQ_BACK_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.FootballQuarterbackControls.Pass\">\n            <summary>Constant Pass.</summary>\n            <unmanaged>DIBUTTON_FOOTBALLQ_PASS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.FootballQuarterbackControls.Fake\">\n            <summary>Constant Fake.</summary>\n            <unmanaged>DIBUTTON_FOOTBALLQ_FAKE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.FootballQuarterbackControls.Snap\">\n            <summary>Constant Snap.</summary>\n            <unmanaged>DIBUTTON_FOOTBALLQ_SNAP</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.FootballQuarterbackControls.ForwardLink\">\n            <summary>Constant ForwardLink.</summary>\n            <unmanaged>DIBUTTON_FOOTBALLQ_FORWARD_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.FootballQuarterbackControls.Menu\">\n            <summary>Constant Menu.</summary>\n            <unmanaged>DIBUTTON_FOOTBALLQ_MENU</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.FootballQuarterbackControls.Fakesnap\">\n            <summary>Constant Fakesnap.</summary>\n            <unmanaged>DIBUTTON_FOOTBALLQ_FAKESNAP</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.FootballQuarterbackControls.Motion\">\n            <summary>Constant Motion.</summary>\n            <unmanaged>DIBUTTON_FOOTBALLQ_MOTION</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.FootballQuarterbackControls.RightLink\">\n            <summary>Constant RightLink.</summary>\n            <unmanaged>DIBUTTON_FOOTBALLQ_RIGHT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.FootballQuarterbackControls.Audible\">\n            <summary>Constant Audible.</summary>\n            <unmanaged>DIBUTTON_FOOTBALLQ_AUDIBLE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.FootballQuarterbackControls.Jump\">\n            <summary>Constant Jump.</summary>\n            <unmanaged>DIBUTTON_FOOTBALLQ_JUMP</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.FootballQuarterbackControls.Slide\">\n            <summary>Constant Slide.</summary>\n            <unmanaged>DIBUTTON_FOOTBALLQ_SLIDE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.FootballQuarterbackControls.Select\">\n            <summary>Constant Select.</summary>\n            <unmanaged>DIBUTTON_FOOTBALLQ_SELECT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.FootballQuarterbackControls.Pause\">\n            <summary>Constant Pause.</summary>\n            <unmanaged>DIBUTTON_FOOTBALLQ_PAUSE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.FootballQuarterbackControls.LeftLink\">\n            <summary>Constant LeftLink.</summary>\n            <unmanaged>DIBUTTON_FOOTBALLQ_LEFT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.FootballQuarterbackControls.Device\">\n            <summary>Constant Device.</summary>\n            <unmanaged>DIBUTTON_FOOTBALLQ_DEVICE</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectInput.GolfControls\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.DirectInput.GolfControls']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.GolfControls.GolfGenre\">\n            <summary>Constant GolfGenre.</summary>\n            <unmanaged>DIVIRTUAL_SPORTS_GOLF</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.GolfControls.Lateral\">\n            <summary>Constant Lateral.</summary>\n            <unmanaged>DIAXIS_GOLF_LATERAL</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.GolfControls.Move\">\n            <summary>Constant Move.</summary>\n            <unmanaged>DIAXIS_GOLF_MOVE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.GolfControls.Terrain\">\n            <summary>Constant Terrain.</summary>\n            <unmanaged>DIBUTTON_GOLF_TERRAIN</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.GolfControls.BackLink\">\n            <summary>Constant BackLink.</summary>\n            <unmanaged>DIBUTTON_GOLF_BACK_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.GolfControls.Device\">\n            <summary>Constant Device.</summary>\n            <unmanaged>DIBUTTON_GOLF_DEVICE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.GolfControls.Menu\">\n            <summary>Constant Menu.</summary>\n            <unmanaged>DIBUTTON_GOLF_MENU</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.GolfControls.Timeout\">\n            <summary>Constant Timeout.</summary>\n            <unmanaged>DIBUTTON_GOLF_TIMEOUT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.GolfControls.ForwardLink\">\n            <summary>Constant ForwardLink.</summary>\n            <unmanaged>DIBUTTON_GOLF_FORWARD_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.GolfControls.Down\">\n            <summary>Constant Down.</summary>\n            <unmanaged>DIBUTTON_GOLF_DOWN</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.GolfControls.Zoom\">\n            <summary>Constant Zoom.</summary>\n            <unmanaged>DIBUTTON_GOLF_ZOOM</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.GolfControls.SubStitute\">\n            <summary>Constant SubStitute.</summary>\n            <unmanaged>DIBUTTON_GOLF_SUBSTITUTE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.GolfControls.Swing\">\n            <summary>Constant Swing.</summary>\n            <unmanaged>DIBUTTON_GOLF_SWING</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.GolfControls.RightLink\">\n            <summary>Constant RightLink.</summary>\n            <unmanaged>DIBUTTON_GOLF_RIGHT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.GolfControls.Select\">\n            <summary>Constant Select.</summary>\n            <unmanaged>DIBUTTON_GOLF_SELECT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.GolfControls.Flyby\">\n            <summary>Constant Flyby.</summary>\n            <unmanaged>DIBUTTON_GOLF_FLYBY</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.GolfControls.Up\">\n            <summary>Constant Up.</summary>\n            <unmanaged>DIBUTTON_GOLF_UP</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.GolfControls.LeftLink\">\n            <summary>Constant LeftLink.</summary>\n            <unmanaged>DIBUTTON_GOLF_LEFT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.GolfControls.Pause\">\n            <summary>Constant Pause.</summary>\n            <unmanaged>DIBUTTON_GOLF_PAUSE</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectInput.HandToHandControls\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.DirectInput.HandToHandControls']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HandToHandControls.HandToHandGenre\">\n            <summary>Constant HandToHandGenre.</summary>\n            <unmanaged>DIVIRTUAL_FIGHTING_HAND2HAND</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HandToHandControls.Move\">\n            <summary>Constant Move.</summary>\n            <unmanaged>DIAXIS_FIGHTINGH_MOVE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HandToHandControls.Rotate\">\n            <summary>Constant Rotate.</summary>\n            <unmanaged>DIAXIS_FIGHTINGH_ROTATE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HandToHandControls.Lateral\">\n            <summary>Constant Lateral.</summary>\n            <unmanaged>DIAXIS_FIGHTINGH_LATERAL</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HandToHandControls.Device\">\n            <summary>Constant Device.</summary>\n            <unmanaged>DIBUTTON_FIGHTINGH_DEVICE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HandToHandControls.Jump\">\n            <summary>Constant Jump.</summary>\n            <unmanaged>DIBUTTON_FIGHTINGH_JUMP</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HandToHandControls.LeftLink\">\n            <summary>Constant LeftLink.</summary>\n            <unmanaged>DIBUTTON_FIGHTINGH_LEFT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HandToHandControls.Display\">\n            <summary>Constant Display.</summary>\n            <unmanaged>DIBUTTON_FIGHTINGH_DISPLAY</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HandToHandControls.RightLink\">\n            <summary>Constant RightLink.</summary>\n            <unmanaged>DIBUTTON_FIGHTINGH_RIGHT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HandToHandControls.BackwardLink\">\n            <summary>Constant BackwardLink.</summary>\n            <unmanaged>DIBUTTON_FIGHTINGH_BACKWARD_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HandToHandControls.Crouch\">\n            <summary>Constant Crouch.</summary>\n            <unmanaged>DIBUTTON_FIGHTINGH_CROUCH</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HandToHandControls.Dodge\">\n            <summary>Constant Dodge.</summary>\n            <unmanaged>DIBUTTON_FIGHTINGH_DODGE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HandToHandControls.Pause\">\n            <summary>Constant Pause.</summary>\n            <unmanaged>DIBUTTON_FIGHTINGH_PAUSE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HandToHandControls.Block\">\n            <summary>Constant Block.</summary>\n            <unmanaged>DIBUTTON_FIGHTINGH_BLOCK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HandToHandControls.ForwardLink\">\n            <summary>Constant ForwardLink.</summary>\n            <unmanaged>DIBUTTON_FIGHTINGH_FORWARD_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HandToHandControls.Menu\">\n            <summary>Constant Menu.</summary>\n            <unmanaged>DIBUTTON_FIGHTINGH_MENU</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HandToHandControls.Punch\">\n            <summary>Constant Punch.</summary>\n            <unmanaged>DIBUTTON_FIGHTINGH_PUNCH</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HandToHandControls.Kick\">\n            <summary>Constant Kick.</summary>\n            <unmanaged>DIBUTTON_FIGHTINGH_KICK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HandToHandControls.Special1\">\n            <summary>Constant Special1.</summary>\n            <unmanaged>DIBUTTON_FIGHTINGH_SPECIAL1</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HandToHandControls.Special2\">\n            <summary>Constant Special2.</summary>\n            <unmanaged>DIBUTTON_FIGHTINGH_SPECIAL2</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HandToHandControls.Select\">\n            <summary>Constant Select.</summary>\n            <unmanaged>DIBUTTON_FIGHTINGH_SELECT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HandToHandControls.Slide\">\n            <summary>Constant Slide.</summary>\n            <unmanaged>DIHATSWITCH_FIGHTINGH_SLIDE</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectInput.HelicopterCombatControls\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.DirectInput.HelicopterCombatControls']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HelicopterCombatControls.HelicopterCombatGenre\">\n            <summary>Constant HelicopterCombatGenre.</summary>\n            <unmanaged>DIVIRTUAL_FLYING_HELICOPTER</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HelicopterCombatControls.Torque\">\n            <summary>Constant Torque.</summary>\n            <unmanaged>DIAXIS_FLYINGH_TORQUE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HelicopterCombatControls.Pitch\">\n            <summary>Constant Pitch.</summary>\n            <unmanaged>DIAXIS_FLYINGH_PITCH</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HelicopterCombatControls.Collective\">\n            <summary>Constant Collective.</summary>\n            <unmanaged>DIAXIS_FLYINGH_COLLECTIVE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HelicopterCombatControls.Bank\">\n            <summary>Constant Bank.</summary>\n            <unmanaged>DIAXIS_FLYINGH_BANK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HelicopterCombatControls.Throttle\">\n            <summary>Constant Throttle.</summary>\n            <unmanaged>DIAXIS_FLYINGH_THROTTLE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HelicopterCombatControls.FasterLink\">\n            <summary>Constant FasterLink.</summary>\n            <unmanaged>DIBUTTON_FLYINGH_FASTER_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HelicopterCombatControls.GlanceDownLink\">\n            <summary>Constant GlanceDownLink.</summary>\n            <unmanaged>DIBUTTON_FLYINGH_GLANCE_DOWN_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HelicopterCombatControls.GlanceRightLink\">\n            <summary>Constant GlanceRightLink.</summary>\n            <unmanaged>DIBUTTON_FLYINGH_GLANCE_RIGHT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HelicopterCombatControls.GlanceUpLink\">\n            <summary>Constant GlanceUpLink.</summary>\n            <unmanaged>DIBUTTON_FLYINGH_GLANCE_UP_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HelicopterCombatControls.Menu\">\n            <summary>Constant Menu.</summary>\n            <unmanaged>DIBUTTON_FLYINGH_MENU</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HelicopterCombatControls.Counter\">\n            <summary>Constant Counter.</summary>\n            <unmanaged>DIBUTTON_FLYINGH_COUNTER</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HelicopterCombatControls.Device\">\n            <summary>Constant Device.</summary>\n            <unmanaged>DIBUTTON_FLYINGH_DEVICE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HelicopterCombatControls.Gear\">\n            <summary>Constant Gear.</summary>\n            <unmanaged>DIBUTTON_FLYINGH_GEAR</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HelicopterCombatControls.Fire\">\n            <summary>Constant Fire.</summary>\n            <unmanaged>DIBUTTON_FLYINGH_FIRE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HelicopterCombatControls.Firesecondary\">\n            <summary>Constant Firesecondary.</summary>\n            <unmanaged>DIBUTTON_FLYINGH_FIRESECONDARY</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HelicopterCombatControls.SlowerLink\">\n            <summary>Constant SlowerLink.</summary>\n            <unmanaged>DIBUTTON_FLYINGH_SLOWER_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HelicopterCombatControls.GlanceLeftLink\">\n            <summary>Constant GlanceLeftLink.</summary>\n            <unmanaged>DIBUTTON_FLYINGH_GLANCE_LEFT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HelicopterCombatControls.View\">\n            <summary>Constant View.</summary>\n            <unmanaged>DIBUTTON_FLYINGH_VIEW</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HelicopterCombatControls.Pause\">\n            <summary>Constant Pause.</summary>\n            <unmanaged>DIBUTTON_FLYINGH_PAUSE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HelicopterCombatControls.Weapons\">\n            <summary>Constant Weapons.</summary>\n            <unmanaged>DIBUTTON_FLYINGH_WEAPONS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HelicopterCombatControls.Target\">\n            <summary>Constant Target.</summary>\n            <unmanaged>DIBUTTON_FLYINGH_TARGET</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HelicopterCombatControls.Glance\">\n            <summary>Constant Glance.</summary>\n            <unmanaged>DIHATSWITCH_FLYINGH_GLANCE</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectInput.HockeyDefenseControls\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.DirectInput.HockeyDefenseControls']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HockeyDefenseControls.HockeyDefenseGenre\">\n            <summary>Constant HockeyDefenseGenre.</summary>\n            <unmanaged>DIVIRTUAL_SPORTS_HOCKEY_DEFENSE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HockeyDefenseControls.Move\">\n            <summary>Constant Move.</summary>\n            <unmanaged>DIAXIS_HOCKEYD_MOVE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HockeyDefenseControls.Lateral\">\n            <summary>Constant Lateral.</summary>\n            <unmanaged>DIAXIS_HOCKEYD_LATERAL</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HockeyDefenseControls.Device\">\n            <summary>Constant Device.</summary>\n            <unmanaged>DIBUTTON_HOCKEYD_DEVICE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HockeyDefenseControls.Menu\">\n            <summary>Constant Menu.</summary>\n            <unmanaged>DIBUTTON_HOCKEYD_MENU</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HockeyDefenseControls.Timeout\">\n            <summary>Constant Timeout.</summary>\n            <unmanaged>DIBUTTON_HOCKEYD_TIMEOUT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HockeyDefenseControls.LeftLink\">\n            <summary>Constant LeftLink.</summary>\n            <unmanaged>DIBUTTON_HOCKEYD_LEFT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HockeyDefenseControls.SubStitute\">\n            <summary>Constant SubStitute.</summary>\n            <unmanaged>DIBUTTON_HOCKEYD_SUBSTITUTE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HockeyDefenseControls.Zoom\">\n            <summary>Constant Zoom.</summary>\n            <unmanaged>DIBUTTON_HOCKEYD_ZOOM</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HockeyDefenseControls.Pause\">\n            <summary>Constant Pause.</summary>\n            <unmanaged>DIBUTTON_HOCKEYD_PAUSE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HockeyDefenseControls.RightLink\">\n            <summary>Constant RightLink.</summary>\n            <unmanaged>DIBUTTON_HOCKEYD_RIGHT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HockeyDefenseControls.Block\">\n            <summary>Constant Block.</summary>\n            <unmanaged>DIBUTTON_HOCKEYD_BLOCK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HockeyDefenseControls.Burst\">\n            <summary>Constant Burst.</summary>\n            <unmanaged>DIBUTTON_HOCKEYD_BURST</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HockeyDefenseControls.Strategy\">\n            <summary>Constant Strategy.</summary>\n            <unmanaged>DIBUTTON_HOCKEYD_STRATEGY</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HockeyDefenseControls.BackLink\">\n            <summary>Constant BackLink.</summary>\n            <unmanaged>DIBUTTON_HOCKEYD_BACK_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HockeyDefenseControls.Fake\">\n            <summary>Constant Fake.</summary>\n            <unmanaged>DIBUTTON_HOCKEYD_FAKE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HockeyDefenseControls.Steal\">\n            <summary>Constant Steal.</summary>\n            <unmanaged>DIBUTTON_HOCKEYD_STEAL</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HockeyDefenseControls.ForwardLink\">\n            <summary>Constant ForwardLink.</summary>\n            <unmanaged>DIBUTTON_HOCKEYD_FORWARD_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HockeyDefenseControls.Player\">\n            <summary>Constant Player.</summary>\n            <unmanaged>DIBUTTON_HOCKEYD_PLAYER</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HockeyDefenseControls.Scroll\">\n            <summary>Constant Scroll.</summary>\n            <unmanaged>DIHATSWITCH_HOCKEYD_SCROLL</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectInput.HockeyGoalieControls\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.DirectInput.HockeyGoalieControls']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HockeyGoalieControls.HockeyGoalieGenre\">\n            <summary>Constant HockeyGoalieGenre.</summary>\n            <unmanaged>DIVIRTUAL_SPORTS_HOCKEY_GOALIE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HockeyGoalieControls.Move\">\n            <summary>Constant Move.</summary>\n            <unmanaged>DIAXIS_HOCKEYG_MOVE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HockeyGoalieControls.Lateral\">\n            <summary>Constant Lateral.</summary>\n            <unmanaged>DIAXIS_HOCKEYG_LATERAL</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HockeyGoalieControls.Block\">\n            <summary>Constant Block.</summary>\n            <unmanaged>DIBUTTON_HOCKEYG_BLOCK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HockeyGoalieControls.Zoom\">\n            <summary>Constant Zoom.</summary>\n            <unmanaged>DIBUTTON_HOCKEYG_ZOOM</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HockeyGoalieControls.RightLink\">\n            <summary>Constant RightLink.</summary>\n            <unmanaged>DIBUTTON_HOCKEYG_RIGHT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HockeyGoalieControls.Strategy\">\n            <summary>Constant Strategy.</summary>\n            <unmanaged>DIBUTTON_HOCKEYG_STRATEGY</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HockeyGoalieControls.LeftLink\">\n            <summary>Constant LeftLink.</summary>\n            <unmanaged>DIBUTTON_HOCKEYG_LEFT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HockeyGoalieControls.Steal\">\n            <summary>Constant Steal.</summary>\n            <unmanaged>DIBUTTON_HOCKEYG_STEAL</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HockeyGoalieControls.Timeout\">\n            <summary>Constant Timeout.</summary>\n            <unmanaged>DIBUTTON_HOCKEYG_TIMEOUT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HockeyGoalieControls.Pass\">\n            <summary>Constant Pass.</summary>\n            <unmanaged>DIBUTTON_HOCKEYG_PASS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HockeyGoalieControls.Device\">\n            <summary>Constant Device.</summary>\n            <unmanaged>DIBUTTON_HOCKEYG_DEVICE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HockeyGoalieControls.BackLink\">\n            <summary>Constant BackLink.</summary>\n            <unmanaged>DIBUTTON_HOCKEYG_BACK_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HockeyGoalieControls.Pause\">\n            <summary>Constant Pause.</summary>\n            <unmanaged>DIBUTTON_HOCKEYG_PAUSE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HockeyGoalieControls.ForwardLink\">\n            <summary>Constant ForwardLink.</summary>\n            <unmanaged>DIBUTTON_HOCKEYG_FORWARD_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HockeyGoalieControls.Poke\">\n            <summary>Constant Poke.</summary>\n            <unmanaged>DIBUTTON_HOCKEYG_POKE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HockeyGoalieControls.SubStitute\">\n            <summary>Constant SubStitute.</summary>\n            <unmanaged>DIBUTTON_HOCKEYG_SUBSTITUTE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HockeyGoalieControls.Menu\">\n            <summary>Constant Menu.</summary>\n            <unmanaged>DIBUTTON_HOCKEYG_MENU</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HockeyGoalieControls.Scroll\">\n            <summary>Constant Scroll.</summary>\n            <unmanaged>DIHATSWITCH_HOCKEYG_SCROLL</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectInput.HockeyOffenseControls\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.DirectInput.HockeyOffenseControls']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HockeyOffenseControls.HockeyOffenseGenre\">\n            <summary>Constant HockeyOffenseGenre.</summary>\n            <unmanaged>DIVIRTUAL_SPORTS_HOCKEY_OFFENSE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HockeyOffenseControls.Lateral\">\n            <summary>Constant Lateral.</summary>\n            <unmanaged>DIAXIS_HOCKEYO_LATERAL</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HockeyOffenseControls.Move\">\n            <summary>Constant Move.</summary>\n            <unmanaged>DIAXIS_HOCKEYO_MOVE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HockeyOffenseControls.Pass\">\n            <summary>Constant Pass.</summary>\n            <unmanaged>DIBUTTON_HOCKEYO_PASS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HockeyOffenseControls.Fake\">\n            <summary>Constant Fake.</summary>\n            <unmanaged>DIBUTTON_HOCKEYO_FAKE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HockeyOffenseControls.LeftLink\">\n            <summary>Constant LeftLink.</summary>\n            <unmanaged>DIBUTTON_HOCKEYO_LEFT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HockeyOffenseControls.Timeout\">\n            <summary>Constant Timeout.</summary>\n            <unmanaged>DIBUTTON_HOCKEYO_TIMEOUT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HockeyOffenseControls.ForwardLink\">\n            <summary>Constant ForwardLink.</summary>\n            <unmanaged>DIBUTTON_HOCKEYO_FORWARD_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HockeyOffenseControls.Strategy\">\n            <summary>Constant Strategy.</summary>\n            <unmanaged>DIBUTTON_HOCKEYO_STRATEGY</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HockeyOffenseControls.Menu\">\n            <summary>Constant Menu.</summary>\n            <unmanaged>DIBUTTON_HOCKEYO_MENU</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HockeyOffenseControls.Special\">\n            <summary>Constant Special.</summary>\n            <unmanaged>DIBUTTON_HOCKEYO_SPECIAL</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HockeyOffenseControls.BackLink\">\n            <summary>Constant BackLink.</summary>\n            <unmanaged>DIBUTTON_HOCKEYO_BACK_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HockeyOffenseControls.Shoot\">\n            <summary>Constant Shoot.</summary>\n            <unmanaged>DIBUTTON_HOCKEYO_SHOOT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HockeyOffenseControls.Zoom\">\n            <summary>Constant Zoom.</summary>\n            <unmanaged>DIBUTTON_HOCKEYO_ZOOM</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HockeyOffenseControls.SubStitute\">\n            <summary>Constant SubStitute.</summary>\n            <unmanaged>DIBUTTON_HOCKEYO_SUBSTITUTE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HockeyOffenseControls.RightLink\">\n            <summary>Constant RightLink.</summary>\n            <unmanaged>DIBUTTON_HOCKEYO_RIGHT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HockeyOffenseControls.Pause\">\n            <summary>Constant Pause.</summary>\n            <unmanaged>DIBUTTON_HOCKEYO_PAUSE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HockeyOffenseControls.Device\">\n            <summary>Constant Device.</summary>\n            <unmanaged>DIBUTTON_HOCKEYO_DEVICE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HockeyOffenseControls.Burst\">\n            <summary>Constant Burst.</summary>\n            <unmanaged>DIBUTTON_HOCKEYO_BURST</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HockeyOffenseControls.Scroll\">\n            <summary>Constant Scroll.</summary>\n            <unmanaged>DIHATSWITCH_HOCKEYO_SCROLL</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectInput.HuntingControls\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.DirectInput.HuntingControls']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HuntingControls.HuntingGenre\">\n            <summary>Constant HuntingGenre.</summary>\n            <unmanaged>DIVIRTUAL_SPORTS_HUNTING</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HuntingControls.Move\">\n            <summary>Constant Move.</summary>\n            <unmanaged>DIAXIS_HUNTING_MOVE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HuntingControls.Rotate\">\n            <summary>Constant Rotate.</summary>\n            <unmanaged>DIAXIS_HUNTING_ROTATE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HuntingControls.Lateral\">\n            <summary>Constant Lateral.</summary>\n            <unmanaged>DIAXIS_HUNTING_LATERAL</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HuntingControls.BackLink\">\n            <summary>Constant BackLink.</summary>\n            <unmanaged>DIBUTTON_HUNTING_BACK_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HuntingControls.RightLink\">\n            <summary>Constant RightLink.</summary>\n            <unmanaged>DIBUTTON_HUNTING_RIGHT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HuntingControls.Pause\">\n            <summary>Constant Pause.</summary>\n            <unmanaged>DIBUTTON_HUNTING_PAUSE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HuntingControls.Crouch\">\n            <summary>Constant Crouch.</summary>\n            <unmanaged>DIBUTTON_HUNTING_CROUCH</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HuntingControls.Fire\">\n            <summary>Constant Fire.</summary>\n            <unmanaged>DIBUTTON_HUNTING_FIRE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HuntingControls.Binocular\">\n            <summary>Constant Binocular.</summary>\n            <unmanaged>DIBUTTON_HUNTING_BINOCULAR</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HuntingControls.Menu\">\n            <summary>Constant Menu.</summary>\n            <unmanaged>DIBUTTON_HUNTING_MENU</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HuntingControls.ForwardLink\">\n            <summary>Constant ForwardLink.</summary>\n            <unmanaged>DIBUTTON_HUNTING_FORWARD_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HuntingControls.RotateLeftLink\">\n            <summary>Constant RotateLeftLink.</summary>\n            <unmanaged>DIBUTTON_HUNTING_ROTATE_LEFT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HuntingControls.Map\">\n            <summary>Constant Map.</summary>\n            <unmanaged>DIBUTTON_HUNTING_MAP</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HuntingControls.Jump\">\n            <summary>Constant Jump.</summary>\n            <unmanaged>DIBUTTON_HUNTING_JUMP</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HuntingControls.Display\">\n            <summary>Constant Display.</summary>\n            <unmanaged>DIBUTTON_HUNTING_DISPLAY</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HuntingControls.Weapon\">\n            <summary>Constant Weapon.</summary>\n            <unmanaged>DIBUTTON_HUNTING_WEAPON</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HuntingControls.Special\">\n            <summary>Constant Special.</summary>\n            <unmanaged>DIBUTTON_HUNTING_SPECIAL</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HuntingControls.Firesecondary\">\n            <summary>Constant Firesecondary.</summary>\n            <unmanaged>DIBUTTON_HUNTING_FIRESECONDARY</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HuntingControls.Call\">\n            <summary>Constant Call.</summary>\n            <unmanaged>DIBUTTON_HUNTING_CALL</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HuntingControls.LeftLink\">\n            <summary>Constant LeftLink.</summary>\n            <unmanaged>DIBUTTON_HUNTING_LEFT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HuntingControls.Device\">\n            <summary>Constant Device.</summary>\n            <unmanaged>DIBUTTON_HUNTING_DEVICE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HuntingControls.Aim\">\n            <summary>Constant Aim.</summary>\n            <unmanaged>DIBUTTON_HUNTING_AIM</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HuntingControls.RotateRightLink\">\n            <summary>Constant RotateRightLink.</summary>\n            <unmanaged>DIBUTTON_HUNTING_ROTATE_RIGHT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.HuntingControls.Glance\">\n            <summary>Constant Glance.</summary>\n            <unmanaged>DIHATSWITCH_HUNTING_GLANCE</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectInput.MechanicalFightingControls\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.DirectInput.MechanicalFightingControls']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.MechanicalFightingControls.MechanicalFightingGenre\">\n            <summary>Constant MechanicalFightingGenre.</summary>\n            <unmanaged>DIVIRTUAL_DRIVING_MECHA</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.MechanicalFightingControls.Torso\">\n            <summary>Constant Torso.</summary>\n            <unmanaged>DIAXIS_MECHA_TORSO</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.MechanicalFightingControls.Throttle\">\n            <summary>Constant Throttle.</summary>\n            <unmanaged>DIAXIS_MECHA_THROTTLE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.MechanicalFightingControls.Steer\">\n            <summary>Constant Steer.</summary>\n            <unmanaged>DIAXIS_MECHA_STEER</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.MechanicalFightingControls.Rotate\">\n            <summary>Constant Rotate.</summary>\n            <unmanaged>DIAXIS_MECHA_ROTATE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.MechanicalFightingControls.FasterLink\">\n            <summary>Constant FasterLink.</summary>\n            <unmanaged>DIBUTTON_MECHA_FASTER_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.MechanicalFightingControls.Zoom\">\n            <summary>Constant Zoom.</summary>\n            <unmanaged>DIBUTTON_MECHA_ZOOM</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.MechanicalFightingControls.ForwardLink\">\n            <summary>Constant ForwardLink.</summary>\n            <unmanaged>DIBUTTON_MECHA_FORWARD_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.MechanicalFightingControls.Jump\">\n            <summary>Constant Jump.</summary>\n            <unmanaged>DIBUTTON_MECHA_JUMP</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.MechanicalFightingControls.Reverse\">\n            <summary>Constant Reverse.</summary>\n            <unmanaged>DIBUTTON_MECHA_REVERSE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.MechanicalFightingControls.Menu\">\n            <summary>Constant Menu.</summary>\n            <unmanaged>DIBUTTON_MECHA_MENU</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.MechanicalFightingControls.Pause\">\n            <summary>Constant Pause.</summary>\n            <unmanaged>DIBUTTON_MECHA_PAUSE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.MechanicalFightingControls.Center\">\n            <summary>Constant Center.</summary>\n            <unmanaged>DIBUTTON_MECHA_CENTER</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.MechanicalFightingControls.RotateRightLink\">\n            <summary>Constant RotateRightLink.</summary>\n            <unmanaged>DIBUTTON_MECHA_ROTATE_RIGHT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.MechanicalFightingControls.Target\">\n            <summary>Constant Target.</summary>\n            <unmanaged>DIBUTTON_MECHA_TARGET</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.MechanicalFightingControls.RightLink\">\n            <summary>Constant RightLink.</summary>\n            <unmanaged>DIBUTTON_MECHA_RIGHT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.MechanicalFightingControls.View\">\n            <summary>Constant View.</summary>\n            <unmanaged>DIBUTTON_MECHA_VIEW</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.MechanicalFightingControls.LeftLink\">\n            <summary>Constant LeftLink.</summary>\n            <unmanaged>DIBUTTON_MECHA_LEFT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.MechanicalFightingControls.SlowerLink\">\n            <summary>Constant SlowerLink.</summary>\n            <unmanaged>DIBUTTON_MECHA_SLOWER_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.MechanicalFightingControls.Weapons\">\n            <summary>Constant Weapons.</summary>\n            <unmanaged>DIBUTTON_MECHA_WEAPONS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.MechanicalFightingControls.Fire\">\n            <summary>Constant Fire.</summary>\n            <unmanaged>DIBUTTON_MECHA_FIRE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.MechanicalFightingControls.Device\">\n            <summary>Constant Device.</summary>\n            <unmanaged>DIBUTTON_MECHA_DEVICE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.MechanicalFightingControls.Firesecondary\">\n            <summary>Constant Firesecondary.</summary>\n            <unmanaged>DIBUTTON_MECHA_FIRESECONDARY</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.MechanicalFightingControls.BackLink\">\n            <summary>Constant BackLink.</summary>\n            <unmanaged>DIBUTTON_MECHA_BACK_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.MechanicalFightingControls.RotateLeftLink\">\n            <summary>Constant RotateLeftLink.</summary>\n            <unmanaged>DIBUTTON_MECHA_ROTATE_LEFT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.MechanicalFightingControls.Glance\">\n            <summary>Constant Glance.</summary>\n            <unmanaged>DIHATSWITCH_MECHA_GLANCE</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectInput.Models3DControls\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.DirectInput.Models3DControls']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Models3DControls.Models3DGenre\">\n            <summary>Constant Models3DGenre.</summary>\n            <unmanaged>DIVIRTUAL_CAD_MODEL</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Models3DControls.Inout\">\n            <summary>Constant Inout.</summary>\n            <unmanaged>DIAXIS_CADM_INOUT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Models3DControls.Move\">\n            <summary>Constant Move.</summary>\n            <unmanaged>DIAXIS_CADM_MOVE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Models3DControls.Rotatez\">\n            <summary>Constant Rotatez.</summary>\n            <unmanaged>DIAXIS_CADM_ROTATEZ</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Models3DControls.Rotatey\">\n            <summary>Constant Rotatey.</summary>\n            <unmanaged>DIAXIS_CADM_ROTATEY</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Models3DControls.Rotatex\">\n            <summary>Constant Rotatex.</summary>\n            <unmanaged>DIAXIS_CADM_ROTATEX</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Models3DControls.Lateral\">\n            <summary>Constant Lateral.</summary>\n            <unmanaged>DIAXIS_CADM_LATERAL</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Models3DControls.Pause\">\n            <summary>Constant Pause.</summary>\n            <unmanaged>DIBUTTON_CADM_PAUSE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Models3DControls.Special2\">\n            <summary>Constant Special2.</summary>\n            <unmanaged>DIBUTTON_CADM_SPECIAL2</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Models3DControls.Display\">\n            <summary>Constant Display.</summary>\n            <unmanaged>DIBUTTON_CADM_DISPLAY</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Models3DControls.Special\">\n            <summary>Constant Special.</summary>\n            <unmanaged>DIBUTTON_CADM_SPECIAL</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Models3DControls.Special1\">\n            <summary>Constant Special1.</summary>\n            <unmanaged>DIBUTTON_CADM_SPECIAL1</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Models3DControls.Select\">\n            <summary>Constant Select.</summary>\n            <unmanaged>DIBUTTON_CADM_SELECT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Models3DControls.Device\">\n            <summary>Constant Device.</summary>\n            <unmanaged>DIBUTTON_CADM_DEVICE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Models3DControls.Menu\">\n            <summary>Constant Menu.</summary>\n            <unmanaged>DIBUTTON_CADM_MENU</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Models3DControls.Hatswitch\">\n            <summary>Constant Hatswitch.</summary>\n            <unmanaged>DIHATSWITCH_CADM_HATSWITCH</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectInput.MountainBikingControls\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.DirectInput.MountainBikingControls']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.MountainBikingControls.MountainBikingGenre\">\n            <summary>Constant MountainBikingGenre.</summary>\n            <unmanaged>DIVIRTUAL_SPORTS_BIKING_MOUNTAIN</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.MountainBikingControls.Pedal\">\n            <summary>Constant Pedal.</summary>\n            <unmanaged>DIAXIS_BIKINGM_PEDAL</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.MountainBikingControls.Brake\">\n            <summary>Constant Brake.</summary>\n            <unmanaged>DIAXIS_BIKINGM_BRAKE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.MountainBikingControls.Turn\">\n            <summary>Constant Turn.</summary>\n            <unmanaged>DIAXIS_BIKINGM_TURN</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.MountainBikingControls.Special1\">\n            <summary>Constant Special1.</summary>\n            <unmanaged>DIBUTTON_BIKINGM_SPECIAL1</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.MountainBikingControls.BrakeButtonLink\">\n            <summary>Constant BrakeButtonLink.</summary>\n            <unmanaged>DIBUTTON_BIKINGM_BRAKE_BUTTON_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.MountainBikingControls.Pause\">\n            <summary>Constant Pause.</summary>\n            <unmanaged>DIBUTTON_BIKINGM_PAUSE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.MountainBikingControls.RightLink\">\n            <summary>Constant RightLink.</summary>\n            <unmanaged>DIBUTTON_BIKINGM_RIGHT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.MountainBikingControls.SlowerLink\">\n            <summary>Constant SlowerLink.</summary>\n            <unmanaged>DIBUTTON_BIKINGM_SLOWER_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.MountainBikingControls.Menu\">\n            <summary>Constant Menu.</summary>\n            <unmanaged>DIBUTTON_BIKINGM_MENU</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.MountainBikingControls.Camera\">\n            <summary>Constant Camera.</summary>\n            <unmanaged>DIBUTTON_BIKINGM_CAMERA</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.MountainBikingControls.Special2\">\n            <summary>Constant Special2.</summary>\n            <unmanaged>DIBUTTON_BIKINGM_SPECIAL2</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.MountainBikingControls.Zoom\">\n            <summary>Constant Zoom.</summary>\n            <unmanaged>DIBUTTON_BIKINGM_ZOOM</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.MountainBikingControls.Jump\">\n            <summary>Constant Jump.</summary>\n            <unmanaged>DIBUTTON_BIKINGM_JUMP</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.MountainBikingControls.Select\">\n            <summary>Constant Select.</summary>\n            <unmanaged>DIBUTTON_BIKINGM_SELECT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.MountainBikingControls.Device\">\n            <summary>Constant Device.</summary>\n            <unmanaged>DIBUTTON_BIKINGM_DEVICE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.MountainBikingControls.LeftLink\">\n            <summary>Constant LeftLink.</summary>\n            <unmanaged>DIBUTTON_BIKINGM_LEFT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.MountainBikingControls.FasterLink\">\n            <summary>Constant FasterLink.</summary>\n            <unmanaged>DIBUTTON_BIKINGM_FASTER_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.MountainBikingControls.Scroll\">\n            <summary>Constant Scroll.</summary>\n            <unmanaged>DIHATSWITCH_BIKINGM_SCROLL</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectInput.Navigation3DControls\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.DirectInput.Navigation3DControls']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Navigation3DControls.Navigation3DGenre\">\n            <summary>Constant Navigation3DGenre.</summary>\n            <unmanaged>DIVIRTUAL_CAD_FLYBY</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Navigation3DControls.Rotatey\">\n            <summary>Constant Rotatey.</summary>\n            <unmanaged>DIAXIS_CADF_ROTATEY</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Navigation3DControls.Inout\">\n            <summary>Constant Inout.</summary>\n            <unmanaged>DIAXIS_CADF_INOUT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Navigation3DControls.Rotatex\">\n            <summary>Constant Rotatex.</summary>\n            <unmanaged>DIAXIS_CADF_ROTATEX</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Navigation3DControls.Move\">\n            <summary>Constant Move.</summary>\n            <unmanaged>DIAXIS_CADF_MOVE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Navigation3DControls.Lateral\">\n            <summary>Constant Lateral.</summary>\n            <unmanaged>DIAXIS_CADF_LATERAL</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Navigation3DControls.Rotatez\">\n            <summary>Constant Rotatez.</summary>\n            <unmanaged>DIAXIS_CADF_ROTATEZ</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Navigation3DControls.Pause\">\n            <summary>Constant Pause.</summary>\n            <unmanaged>DIBUTTON_CADF_PAUSE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Navigation3DControls.Special2\">\n            <summary>Constant Special2.</summary>\n            <unmanaged>DIBUTTON_CADF_SPECIAL2</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Navigation3DControls.Menu\">\n            <summary>Constant Menu.</summary>\n            <unmanaged>DIBUTTON_CADF_MENU</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Navigation3DControls.Special1\">\n            <summary>Constant Special1.</summary>\n            <unmanaged>DIBUTTON_CADF_SPECIAL1</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Navigation3DControls.Display\">\n            <summary>Constant Display.</summary>\n            <unmanaged>DIBUTTON_CADF_DISPLAY</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Navigation3DControls.Special\">\n            <summary>Constant Special.</summary>\n            <unmanaged>DIBUTTON_CADF_SPECIAL</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Navigation3DControls.Device\">\n            <summary>Constant Device.</summary>\n            <unmanaged>DIBUTTON_CADF_DEVICE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Navigation3DControls.Select\">\n            <summary>Constant Select.</summary>\n            <unmanaged>DIBUTTON_CADF_SELECT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Navigation3DControls.Hatswitch\">\n            <summary>Constant Hatswitch.</summary>\n            <unmanaged>DIHATSWITCH_CADF_HATSWITCH</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectInput.ObjectGuid\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.DirectInput.ObjectGuid']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ObjectGuid.XAxisStr\">\n            <summary>Constant XAxisStr.</summary>\n            <unmanaged>GUID_XAxis</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ObjectGuid.YAxisStr\">\n            <summary>Constant YAxisStr.</summary>\n            <unmanaged>GUID_YAxis</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ObjectGuid.ZAxisStr\">\n            <summary>Constant ZAxisStr.</summary>\n            <unmanaged>GUID_ZAxis</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ObjectGuid.RxAxisStr\">\n            <summary>Constant RxAxisStr.</summary>\n            <unmanaged>GUID_RxAxis</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ObjectGuid.RyAxisStr\">\n            <summary>Constant RyAxisStr.</summary>\n            <unmanaged>GUID_RyAxis</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ObjectGuid.RzAxisStr\">\n            <summary>Constant RzAxisStr.</summary>\n            <unmanaged>GUID_RzAxis</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ObjectGuid.ButtonStr\">\n            <summary>Constant ButtonStr.</summary>\n            <unmanaged>GUID_Button</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ObjectGuid.KeyStr\">\n            <summary>Constant KeyStr.</summary>\n            <unmanaged>GUID_Key</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ObjectGuid.SliderStr\">\n            <summary>Constant SliderStr.</summary>\n            <unmanaged>GUID_Slider</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ObjectGuid.PovControllerStr\">\n            <summary>Constant PovControllerStr.</summary>\n            <unmanaged>GUID_POV</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ObjectGuid.UnknownStr\">\n            <summary>Constant UnknownStr.</summary>\n            <unmanaged>GUID_Unknown</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ObjectGuid.XAxis\">\n            <summary>Constant XAxis.</summary>\n            <unmanaged>GUID_XAxis</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ObjectGuid.YAxis\">\n            <summary>Constant YAxis.</summary>\n            <unmanaged>GUID_YAxis</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ObjectGuid.ZAxis\">\n            <summary>Constant ZAxis.</summary>\n            <unmanaged>GUID_ZAxis</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ObjectGuid.RxAxis\">\n            <summary>Constant RxAxis.</summary>\n            <unmanaged>GUID_RxAxis</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ObjectGuid.RyAxis\">\n            <summary>Constant RyAxis.</summary>\n            <unmanaged>GUID_RyAxis</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ObjectGuid.RzAxis\">\n            <summary>Constant RzAxis.</summary>\n            <unmanaged>GUID_RzAxis</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ObjectGuid.Button\">\n            <summary>Constant Button.</summary>\n            <unmanaged>GUID_Button</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ObjectGuid.Key\">\n            <summary>Constant Key.</summary>\n            <unmanaged>GUID_Key</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ObjectGuid.Slider\">\n            <summary>Constant Slider.</summary>\n            <unmanaged>GUID_Slider</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ObjectGuid.PovController\">\n            <summary>Constant PovController.</summary>\n            <unmanaged>GUID_POV</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ObjectGuid.Unknown\">\n            <summary>Constant Unknown.</summary>\n            <unmanaged>GUID_Unknown</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectInput.Objects2DControls\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.DirectInput.Objects2DControls']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Objects2DControls.Objects2DGenre\">\n            <summary>Constant Objects2DGenre.</summary>\n            <unmanaged>DIVIRTUAL_CAD_2DCONTROL</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Objects2DControls.Lateral\">\n            <summary>Constant Lateral.</summary>\n            <unmanaged>DIAXIS_2DCONTROL_LATERAL</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Objects2DControls.Inout\">\n            <summary>Constant Inout.</summary>\n            <unmanaged>DIAXIS_2DCONTROL_INOUT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Objects2DControls.Move\">\n            <summary>Constant Move.</summary>\n            <unmanaged>DIAXIS_2DCONTROL_MOVE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Objects2DControls.Rotatez\">\n            <summary>Constant Rotatez.</summary>\n            <unmanaged>DIAXIS_2DCONTROL_ROTATEZ</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Objects2DControls.Special2\">\n            <summary>Constant Special2.</summary>\n            <unmanaged>DIBUTTON_2DCONTROL_SPECIAL2</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Objects2DControls.Select\">\n            <summary>Constant Select.</summary>\n            <unmanaged>DIBUTTON_2DCONTROL_SELECT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Objects2DControls.Device\">\n            <summary>Constant Device.</summary>\n            <unmanaged>DIBUTTON_2DCONTROL_DEVICE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Objects2DControls.Special1\">\n            <summary>Constant Special1.</summary>\n            <unmanaged>DIBUTTON_2DCONTROL_SPECIAL1</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Objects2DControls.Menu\">\n            <summary>Constant Menu.</summary>\n            <unmanaged>DIBUTTON_2DCONTROL_MENU</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Objects2DControls.Display\">\n            <summary>Constant Display.</summary>\n            <unmanaged>DIBUTTON_2DCONTROL_DISPLAY</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Objects2DControls.Special\">\n            <summary>Constant Special.</summary>\n            <unmanaged>DIBUTTON_2DCONTROL_SPECIAL</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Objects2DControls.Pause\">\n            <summary>Constant Pause.</summary>\n            <unmanaged>DIBUTTON_2DCONTROL_PAUSE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Objects2DControls.Hatswitch\">\n            <summary>Constant Hatswitch.</summary>\n            <unmanaged>DIHATSWITCH_2DCONTROL_HATSWITCH</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectInput.Objects3DControls\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.DirectInput.Objects3DControls']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Objects3DControls.Objects3DGenre\">\n            <summary>Constant Objects3DGenre.</summary>\n            <unmanaged>DIVIRTUAL_CAD_3DCONTROL</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Objects3DControls.Rotatex\">\n            <summary>Constant Rotatex.</summary>\n            <unmanaged>DIAXIS_3DCONTROL_ROTATEX</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Objects3DControls.Rotatez\">\n            <summary>Constant Rotatez.</summary>\n            <unmanaged>DIAXIS_3DCONTROL_ROTATEZ</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Objects3DControls.Inout\">\n            <summary>Constant Inout.</summary>\n            <unmanaged>DIAXIS_3DCONTROL_INOUT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Objects3DControls.Rotatey\">\n            <summary>Constant Rotatey.</summary>\n            <unmanaged>DIAXIS_3DCONTROL_ROTATEY</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Objects3DControls.Lateral\">\n            <summary>Constant Lateral.</summary>\n            <unmanaged>DIAXIS_3DCONTROL_LATERAL</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Objects3DControls.Move\">\n            <summary>Constant Move.</summary>\n            <unmanaged>DIAXIS_3DCONTROL_MOVE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Objects3DControls.Special1\">\n            <summary>Constant Special1.</summary>\n            <unmanaged>DIBUTTON_3DCONTROL_SPECIAL1</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Objects3DControls.Pause\">\n            <summary>Constant Pause.</summary>\n            <unmanaged>DIBUTTON_3DCONTROL_PAUSE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Objects3DControls.Select\">\n            <summary>Constant Select.</summary>\n            <unmanaged>DIBUTTON_3DCONTROL_SELECT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Objects3DControls.Display\">\n            <summary>Constant Display.</summary>\n            <unmanaged>DIBUTTON_3DCONTROL_DISPLAY</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Objects3DControls.Special\">\n            <summary>Constant Special.</summary>\n            <unmanaged>DIBUTTON_3DCONTROL_SPECIAL</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Objects3DControls.Device\">\n            <summary>Constant Device.</summary>\n            <unmanaged>DIBUTTON_3DCONTROL_DEVICE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Objects3DControls.Special2\">\n            <summary>Constant Special2.</summary>\n            <unmanaged>DIBUTTON_3DCONTROL_SPECIAL2</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Objects3DControls.Menu\">\n            <summary>Constant Menu.</summary>\n            <unmanaged>DIBUTTON_3DCONTROL_MENU</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Objects3DControls.Hatswitch\">\n            <summary>Constant Hatswitch.</summary>\n            <unmanaged>DIHATSWITCH_3DCONTROL_HATSWITCH</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectInput.PlatformControls\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.DirectInput.PlatformControls']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.PlatformControls.PlatformGenre\">\n            <summary>Constant PlatformGenre.</summary>\n            <unmanaged>DIVIRTUAL_ARCADE_PLATFORM</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.PlatformControls.Lateral\">\n            <summary>Constant Lateral.</summary>\n            <unmanaged>DIAXIS_ARCADEP_LATERAL</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.PlatformControls.Move\">\n            <summary>Constant Move.</summary>\n            <unmanaged>DIAXIS_ARCADEP_MOVE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.PlatformControls.Special\">\n            <summary>Constant Special.</summary>\n            <unmanaged>DIBUTTON_ARCADEP_SPECIAL</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.PlatformControls.Fire\">\n            <summary>Constant Fire.</summary>\n            <unmanaged>DIBUTTON_ARCADEP_FIRE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.PlatformControls.Menu\">\n            <summary>Constant Menu.</summary>\n            <unmanaged>DIBUTTON_ARCADEP_MENU</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.PlatformControls.BackLink\">\n            <summary>Constant BackLink.</summary>\n            <unmanaged>DIBUTTON_ARCADEP_BACK_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.PlatformControls.Jump\">\n            <summary>Constant Jump.</summary>\n            <unmanaged>DIBUTTON_ARCADEP_JUMP</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.PlatformControls.Select\">\n            <summary>Constant Select.</summary>\n            <unmanaged>DIBUTTON_ARCADEP_SELECT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.PlatformControls.RightLink\">\n            <summary>Constant RightLink.</summary>\n            <unmanaged>DIBUTTON_ARCADEP_RIGHT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.PlatformControls.Device\">\n            <summary>Constant Device.</summary>\n            <unmanaged>DIBUTTON_ARCADEP_DEVICE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.PlatformControls.ViewLeftLink\">\n            <summary>Constant ViewLeftLink.</summary>\n            <unmanaged>DIBUTTON_ARCADEP_VIEW_LEFT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.PlatformControls.LeftLink\">\n            <summary>Constant LeftLink.</summary>\n            <unmanaged>DIBUTTON_ARCADEP_LEFT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.PlatformControls.Firesecondary\">\n            <summary>Constant Firesecondary.</summary>\n            <unmanaged>DIBUTTON_ARCADEP_FIRESECONDARY</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.PlatformControls.ForwardLink\">\n            <summary>Constant ForwardLink.</summary>\n            <unmanaged>DIBUTTON_ARCADEP_FORWARD_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.PlatformControls.ViewUpLink\">\n            <summary>Constant ViewUpLink.</summary>\n            <unmanaged>DIBUTTON_ARCADEP_VIEW_UP_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.PlatformControls.Pause\">\n            <summary>Constant Pause.</summary>\n            <unmanaged>DIBUTTON_ARCADEP_PAUSE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.PlatformControls.Crouch\">\n            <summary>Constant Crouch.</summary>\n            <unmanaged>DIBUTTON_ARCADEP_CROUCH</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.PlatformControls.ViewRightLink\">\n            <summary>Constant ViewRightLink.</summary>\n            <unmanaged>DIBUTTON_ARCADEP_VIEW_RIGHT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.PlatformControls.ViewDownLink\">\n            <summary>Constant ViewDownLink.</summary>\n            <unmanaged>DIBUTTON_ARCADEP_VIEW_DOWN_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.PlatformControls.View\">\n            <summary>Constant View.</summary>\n            <unmanaged>DIHATSWITCH_ARCADEP_VIEW</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectInput.PropertyGuids\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.DirectInput.PropertyGuids']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.PropertyGuids.LogicalRange\">\n            <summary>Constant LogicalRange.</summary>\n            <unmanaged>DIPROP_LOGICALRANGE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.PropertyGuids.Appdata\">\n            <summary>Constant Appdata.</summary>\n            <unmanaged>DIPROP_APPDATA</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.PropertyGuids.Ffgain\">\n            <summary>Constant Ffgain.</summary>\n            <unmanaged>DIPROP_FFGAIN</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.PropertyGuids.GetPortdisplayname\">\n            <summary>Constant GetPortdisplayname.</summary>\n            <unmanaged>DIPROP_GETPORTDISPLAYNAME</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.PropertyGuids.Keyname\">\n            <summary>Constant Keyname.</summary>\n            <unmanaged>DIPROP_KEYNAME</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.PropertyGuids.Ffload\">\n            <summary>Constant Ffload.</summary>\n            <unmanaged>DIPROP_FFLOAD</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.PropertyGuids.Physicalrange\">\n            <summary>Constant Physicalrange.</summary>\n            <unmanaged>DIPROP_PHYSICALRANGE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.PropertyGuids.Autocenter\">\n            <summary>Constant Autocenter.</summary>\n            <unmanaged>DIPROP_AUTOCENTER</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.PropertyGuids.Scancode\">\n            <summary>Constant Scancode.</summary>\n            <unmanaged>DIPROP_SCANCODE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.PropertyGuids.Calibrationmode\">\n            <summary>Constant Calibrationmode.</summary>\n            <unmanaged>DIPROP_CALIBRATIONMODE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.PropertyGuids.Saturation\">\n            <summary>Constant Saturation.</summary>\n            <unmanaged>DIPROP_SATURATION</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.PropertyGuids.Calibration\">\n            <summary>Constant Calibration.</summary>\n            <unmanaged>DIPROP_CALIBRATION</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.PropertyGuids.Productname\">\n            <summary>Constant Productname.</summary>\n            <unmanaged>DIPROP_PRODUCTNAME</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.PropertyGuids.Vidpid\">\n            <summary>Constant Vidpid.</summary>\n            <unmanaged>DIPROP_VIDPID</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.PropertyGuids.BufferSize\">\n            <summary>Constant BufferSize.</summary>\n            <unmanaged>DIPROP_BUFFERSIZE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.PropertyGuids.Range\">\n            <summary>Constant Range.</summary>\n            <unmanaged>DIPROP_RANGE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.PropertyGuids.Cpoints\">\n            <summary>Constant Cpoints.</summary>\n            <unmanaged>DIPROP_CPOINTS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.PropertyGuids.Joystickid\">\n            <summary>Constant Joystickid.</summary>\n            <unmanaged>DIPROP_JOYSTICKID</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.PropertyGuids.Granularity\">\n            <summary>Constant Granularity.</summary>\n            <unmanaged>DIPROP_GRANULARITY</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.PropertyGuids.Username\">\n            <summary>Constant Username.</summary>\n            <unmanaged>DIPROP_USERNAME</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.PropertyGuids.InstanceName\">\n            <summary>Constant InstanceName.</summary>\n            <unmanaged>DIPROP_INSTANCENAME</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.PropertyGuids.Deadzone\">\n            <summary>Constant Deadzone.</summary>\n            <unmanaged>DIPROP_DEADZONE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.PropertyGuids.Guidandpath\">\n            <summary>Constant Guidandpath.</summary>\n            <unmanaged>DIPROP_GUIDANDPATH</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.PropertyGuids.Axismode\">\n            <summary>Constant Axismode.</summary>\n            <unmanaged>DIPROP_AXISMODE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.PropertyGuids.Typename\">\n            <summary>Constant Typename.</summary>\n            <unmanaged>DIPROP_TYPENAME</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectInput.RacingControls\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.DirectInput.RacingControls']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RacingControls.RacingGenre\">\n            <summary>Constant RacingGenre.</summary>\n            <unmanaged>DIVIRTUAL_DRIVING_RACE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RacingControls.Steer\">\n            <summary>Constant Steer.</summary>\n            <unmanaged>DIAXIS_DRIVINGR_STEER</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RacingControls.Accelerate\">\n            <summary>Constant Accelerate.</summary>\n            <unmanaged>DIAXIS_DRIVINGR_ACCELERATE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RacingControls.BrakeAxis\">\n            <summary>Constant BrakeAxis.</summary>\n            <unmanaged>DIAXIS_DRIVINGR_BRAKE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RacingControls.AccelerateAndBrake\">\n            <summary>Constant AccelerateAndBrake.</summary>\n            <unmanaged>DIAXIS_DRIVINGR_ACCEL_AND_BRAKE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RacingControls.Map\">\n            <summary>Constant Map.</summary>\n            <unmanaged>DIBUTTON_DRIVINGR_MAP</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RacingControls.Shiftdown\">\n            <summary>Constant Shiftdown.</summary>\n            <unmanaged>DIBUTTON_DRIVINGR_SHIFTDOWN</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RacingControls.SteerRightLink\">\n            <summary>Constant SteerRightLink.</summary>\n            <unmanaged>DIBUTTON_DRIVINGR_STEER_RIGHT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RacingControls.View\">\n            <summary>Constant View.</summary>\n            <unmanaged>DIBUTTON_DRIVINGR_VIEW</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RacingControls.Dashboard\">\n            <summary>Constant Dashboard.</summary>\n            <unmanaged>DIBUTTON_DRIVINGR_DASHBOARD</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RacingControls.Pit\">\n            <summary>Constant Pit.</summary>\n            <unmanaged>DIBUTTON_DRIVINGR_PIT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RacingControls.Shiftup\">\n            <summary>Constant Shiftup.</summary>\n            <unmanaged>DIBUTTON_DRIVINGR_SHIFTUP</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RacingControls.Boost\">\n            <summary>Constant Boost.</summary>\n            <unmanaged>DIBUTTON_DRIVINGR_BOOST</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RacingControls.Pause\">\n            <summary>Constant Pause.</summary>\n            <unmanaged>DIBUTTON_DRIVINGR_PAUSE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RacingControls.GlanceLeftLink\">\n            <summary>Constant GlanceLeftLink.</summary>\n            <unmanaged>DIBUTTON_DRIVINGR_GLANCE_LEFT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RacingControls.Device\">\n            <summary>Constant Device.</summary>\n            <unmanaged>DIBUTTON_DRIVINGR_DEVICE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RacingControls.Menu\">\n            <summary>Constant Menu.</summary>\n            <unmanaged>DIBUTTON_DRIVINGR_MENU</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RacingControls.AccelerateLink\">\n            <summary>Constant AccelerateLink.</summary>\n            <unmanaged>DIBUTTON_DRIVINGR_ACCELERATE_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RacingControls.Brake\">\n            <summary>Constant Brake.</summary>\n            <unmanaged>DIBUTTON_DRIVINGR_BRAKE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RacingControls.SteerLeftLink\">\n            <summary>Constant SteerLeftLink.</summary>\n            <unmanaged>DIBUTTON_DRIVINGR_STEER_LEFT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RacingControls.GlanceRightLink\">\n            <summary>Constant GlanceRightLink.</summary>\n            <unmanaged>DIBUTTON_DRIVINGR_GLANCE_RIGHT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RacingControls.Aids\">\n            <summary>Constant Aids.</summary>\n            <unmanaged>DIBUTTON_DRIVINGR_AIDS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RacingControls.Glance\">\n            <summary>Constant Glance.</summary>\n            <unmanaged>DIHATSWITCH_DRIVINGR_GLANCE</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectInput.RacquetControls\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.DirectInput.RacquetControls']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RacquetControls.RacquetGenre\">\n            <summary>Constant RacquetGenre.</summary>\n            <unmanaged>DIVIRTUAL_SPORTS_RACQUET</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RacquetControls.Lateral\">\n            <summary>Constant Lateral.</summary>\n            <unmanaged>DIAXIS_RACQUET_LATERAL</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RacquetControls.Move\">\n            <summary>Constant Move.</summary>\n            <unmanaged>DIAXIS_RACQUET_MOVE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RacquetControls.Pause\">\n            <summary>Constant Pause.</summary>\n            <unmanaged>DIBUTTON_RACQUET_PAUSE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RacquetControls.Menu\">\n            <summary>Constant Menu.</summary>\n            <unmanaged>DIBUTTON_RACQUET_MENU</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RacquetControls.RightLink\">\n            <summary>Constant RightLink.</summary>\n            <unmanaged>DIBUTTON_RACQUET_RIGHT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RacquetControls.BackLink\">\n            <summary>Constant BackLink.</summary>\n            <unmanaged>DIBUTTON_RACQUET_BACK_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RacquetControls.SubStitute\">\n            <summary>Constant SubStitute.</summary>\n            <unmanaged>DIBUTTON_RACQUET_SUBSTITUTE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RacquetControls.LeftLink\">\n            <summary>Constant LeftLink.</summary>\n            <unmanaged>DIBUTTON_RACQUET_LEFT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RacquetControls.Select\">\n            <summary>Constant Select.</summary>\n            <unmanaged>DIBUTTON_RACQUET_SELECT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RacquetControls.Device\">\n            <summary>Constant Device.</summary>\n            <unmanaged>DIBUTTON_RACQUET_DEVICE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RacquetControls.Timeout\">\n            <summary>Constant Timeout.</summary>\n            <unmanaged>DIBUTTON_RACQUET_TIMEOUT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RacquetControls.Smash\">\n            <summary>Constant Smash.</summary>\n            <unmanaged>DIBUTTON_RACQUET_SMASH</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RacquetControls.ForwardLink\">\n            <summary>Constant ForwardLink.</summary>\n            <unmanaged>DIBUTTON_RACQUET_FORWARD_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RacquetControls.Backswing\">\n            <summary>Constant Backswing.</summary>\n            <unmanaged>DIBUTTON_RACQUET_BACKSWING</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RacquetControls.Swing\">\n            <summary>Constant Swing.</summary>\n            <unmanaged>DIBUTTON_RACQUET_SWING</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RacquetControls.Special\">\n            <summary>Constant Special.</summary>\n            <unmanaged>DIBUTTON_RACQUET_SPECIAL</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RacquetControls.Glance\">\n            <summary>Constant Glance.</summary>\n            <unmanaged>DIHATSWITCH_RACQUET_GLANCE</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectInput.RemoteControls\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.DirectInput.RemoteControls']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RemoteControls.RacquetGenre\">\n            <summary>Constant RacquetGenre.</summary>\n            <unmanaged>DIVIRTUAL_REMOTE_CONTROL</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RemoteControls.Slider2\">\n            <summary>Constant Slider2.</summary>\n            <unmanaged>DIAXIS_REMOTE_SLIDER2</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RemoteControls.Slider\">\n            <summary>Constant Slider.</summary>\n            <unmanaged>DIAXIS_REMOTE_SLIDER</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RemoteControls.ReverseIew\">\n            <summary>Constant ReverseIew.</summary>\n            <unmanaged>DIBUTTON_REMOTE_REVIEW</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RemoteControls.Play\">\n            <summary>Constant Play.</summary>\n            <unmanaged>DIBUTTON_REMOTE_PLAY</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RemoteControls.Cd\">\n            <summary>Constant Cd.</summary>\n            <unmanaged>DIBUTTON_REMOTE_CD</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RemoteControls.Select\">\n            <summary>Constant Select.</summary>\n            <unmanaged>DIBUTTON_REMOTE_SELECT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RemoteControls.Digit9\">\n            <summary>Constant Digit9.</summary>\n            <unmanaged>DIBUTTON_REMOTE_DIGIT9</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RemoteControls.Digit6\">\n            <summary>Constant Digit6.</summary>\n            <unmanaged>DIBUTTON_REMOTE_DIGIT6</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RemoteControls.Device\">\n            <summary>Constant Device.</summary>\n            <unmanaged>DIBUTTON_REMOTE_DEVICE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RemoteControls.Digit3\">\n            <summary>Constant Digit3.</summary>\n            <unmanaged>DIBUTTON_REMOTE_DIGIT3</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RemoteControls.Digit0\">\n            <summary>Constant Digit0.</summary>\n            <unmanaged>DIBUTTON_REMOTE_DIGIT0</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RemoteControls.Pause\">\n            <summary>Constant Pause.</summary>\n            <unmanaged>DIBUTTON_REMOTE_PAUSE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RemoteControls.Cable\">\n            <summary>Constant Cable.</summary>\n            <unmanaged>DIBUTTON_REMOTE_CABLE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RemoteControls.Cue\">\n            <summary>Constant Cue.</summary>\n            <unmanaged>DIBUTTON_REMOTE_CUE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RemoteControls.Mute\">\n            <summary>Constant Mute.</summary>\n            <unmanaged>DIBUTTON_REMOTE_MUTE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RemoteControls.Digit8\">\n            <summary>Constant Digit8.</summary>\n            <unmanaged>DIBUTTON_REMOTE_DIGIT8</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RemoteControls.Digit5\">\n            <summary>Constant Digit5.</summary>\n            <unmanaged>DIBUTTON_REMOTE_DIGIT5</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RemoteControls.Digit2\">\n            <summary>Constant Digit2.</summary>\n            <unmanaged>DIBUTTON_REMOTE_DIGIT2</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RemoteControls.Tv\">\n            <summary>Constant Tv.</summary>\n            <unmanaged>DIBUTTON_REMOTE_TV</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RemoteControls.Vcr\">\n            <summary>Constant Vcr.</summary>\n            <unmanaged>DIBUTTON_REMOTE_VCR</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RemoteControls.Adjust\">\n            <summary>Constant Adjust.</summary>\n            <unmanaged>DIBUTTON_REMOTE_ADJUST</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RemoteControls.Menu\">\n            <summary>Constant Menu.</summary>\n            <unmanaged>DIBUTTON_REMOTE_MENU</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RemoteControls.Record\">\n            <summary>Constant Record.</summary>\n            <unmanaged>DIBUTTON_REMOTE_RECORD</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RemoteControls.Change\">\n            <summary>Constant Change.</summary>\n            <unmanaged>DIBUTTON_REMOTE_CHANGE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RemoteControls.Digit7\">\n            <summary>Constant Digit7.</summary>\n            <unmanaged>DIBUTTON_REMOTE_DIGIT7</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RemoteControls.Digit4\">\n            <summary>Constant Digit4.</summary>\n            <unmanaged>DIBUTTON_REMOTE_DIGIT4</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RemoteControls.Digit1\">\n            <summary>Constant Digit1.</summary>\n            <unmanaged>DIBUTTON_REMOTE_DIGIT1</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RemoteControls.Tuner\">\n            <summary>Constant Tuner.</summary>\n            <unmanaged>DIBUTTON_REMOTE_TUNER</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RemoteControls.Dvd\">\n            <summary>Constant Dvd.</summary>\n            <unmanaged>DIBUTTON_REMOTE_DVD</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectInput.ResultCode\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.DirectInput.ResultCode']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ResultCode.Ok\">\n            <summary>Constant Ok.</summary>\n            <unmanaged>DI_OK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ResultCode.NotAttached\">\n            <summary>Constant NotAttached.</summary>\n            <unmanaged>DI_NOTATTACHED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ResultCode.BufferOverflow\">\n            <summary>Constant BufferOverflow.</summary>\n            <unmanaged>DI_BUFFEROVERFLOW</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ResultCode.PropertyHadNoEffect\">\n            <summary>Constant PropertyHadNoEffect.</summary>\n            <unmanaged>DI_PROPNOEFFECT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ResultCode.NoEffect\">\n            <summary>Constant NoEffect.</summary>\n            <unmanaged>DI_NOEFFECT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ResultCode.PolledDevice\">\n            <summary>Constant PolledDevice.</summary>\n            <unmanaged>DI_POLLEDDEVICE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ResultCode.DownloadSkipped\">\n            <summary>Constant DownloadSkipped.</summary>\n            <unmanaged>DI_DOWNLOADSKIPPED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ResultCode.EffectRestarted\">\n            <summary>Constant EffectRestarted.</summary>\n            <unmanaged>DI_EFFECTRESTARTED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ResultCode.Truncated\">\n            <summary>Constant Truncated.</summary>\n            <unmanaged>DI_TRUNCATED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ResultCode.SettingsNotSaved\">\n            <summary>Constant SettingsNotSaved.</summary>\n            <unmanaged>DI_SETTINGSNOTSAVED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ResultCode.TruncatedAndRestarted\">\n            <summary>Constant TruncatedAndRestarted.</summary>\n            <unmanaged>DI_TRUNCATEDANDRESTARTED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ResultCode.WriteProtect\">\n            <summary>Constant WriteProtect.</summary>\n            <unmanaged>DI_WRITEPROTECT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ResultCode.ReadOnly\">\n            <summary>Constant ReadOnly.</summary>\n            <unmanaged>DIERR_READONLY</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ResultCode.NotFound\">\n            <summary>Constant NotFound.</summary>\n            <unmanaged>DIERR_NOTFOUND</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ResultCode.MapFileFail\">\n            <summary>Constant MapFileFail.</summary>\n            <unmanaged>DIERR_MAPFILEFAIL</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ResultCode.AlreadyInitialized\">\n            <summary>Constant AlreadyInitialized.</summary>\n            <unmanaged>DIERR_ALREADYINITIALIZED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ResultCode.IncompleteEffect\">\n            <summary>Constant IncompleteEffect.</summary>\n            <unmanaged>DIERR_INCOMPLETEEFFECT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ResultCode.InvalidParam\">\n            <summary>Constant InvalidParam.</summary>\n            <unmanaged>DIERR_INVALIDPARAM</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ResultCode.EffectPlaying\">\n            <summary>Constant EffectPlaying.</summary>\n            <unmanaged>DIERR_EFFECTPLAYING</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ResultCode.NotInitialized\">\n            <summary>Constant NotInitialized.</summary>\n            <unmanaged>DIERR_NOTINITIALIZED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ResultCode.NotAcquired\">\n            <summary>Constant NotAcquired.</summary>\n            <unmanaged>DIERR_NOTACQUIRED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ResultCode.HandleExists\">\n            <summary>Constant HandleExists.</summary>\n            <unmanaged>DIERR_HANDLEEXISTS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ResultCode.HasEffects\">\n            <summary>Constant HasEffects.</summary>\n            <unmanaged>DIERR_HASEFFECTS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ResultCode.OldDirectInputVersion\">\n            <summary>Constant OldDirectInputVersion.</summary>\n            <unmanaged>DIERR_OLDDIRECTINPUTVERSION</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ResultCode.NoAggregation\">\n            <summary>Constant NoAggregation.</summary>\n            <unmanaged>DIERR_NOAGGREGATION</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ResultCode.MoreData\">\n            <summary>Constant MoreData.</summary>\n            <unmanaged>DIERR_MOREDATA</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ResultCode.DeviceFull\">\n            <summary>Constant DeviceFull.</summary>\n            <unmanaged>DIERR_DEVICEFULL</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ResultCode.ReportFull\">\n            <summary>Constant ReportFull.</summary>\n            <unmanaged>DIERR_REPORTFULL</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ResultCode.NotDownloaded\">\n            <summary>Constant NotDownloaded.</summary>\n            <unmanaged>DIERR_NOTDOWNLOADED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ResultCode.NotBuffered\">\n            <summary>Constant NotBuffered.</summary>\n            <unmanaged>DIERR_NOTBUFFERED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ResultCode.ObjectNotFound\">\n            <summary>Constant ObjectNotFound.</summary>\n            <unmanaged>DIERR_OBJECTNOTFOUND</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ResultCode.InsufficientPrivileges\">\n            <summary>Constant InsufficientPrivileges.</summary>\n            <unmanaged>DIERR_INSUFFICIENTPRIVS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ResultCode.NoInterface\">\n            <summary>Constant NoInterface.</summary>\n            <unmanaged>DIERR_NOINTERFACE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ResultCode.OutOfMemory\">\n            <summary>Constant OutOfMemory.</summary>\n            <unmanaged>DIERR_OUTOFMEMORY</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ResultCode.DeviceNotRegistered\">\n            <summary>Constant DeviceNotRegistered.</summary>\n            <unmanaged>DIERR_DEVICENOTREG</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ResultCode.Generic\">\n            <summary>Constant Generic.</summary>\n            <unmanaged>DIERR_GENERIC</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ResultCode.OtherApplicationHasPriority\">\n            <summary>Constant OtherApplicationHasPriority.</summary>\n            <unmanaged>DIERR_OTHERAPPHASPRIO</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ResultCode.NotExclusiveAcquired\">\n            <summary>Constant NotExclusiveAcquired.</summary>\n            <unmanaged>DIERR_NOTEXCLUSIVEACQUIRED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ResultCode.InputLost\">\n            <summary>Constant InputLost.</summary>\n            <unmanaged>DIERR_INPUTLOST</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ResultCode.BetaDirectInputVersion\">\n            <summary>Constant BetaDirectInputVersion.</summary>\n            <unmanaged>DIERR_BETADIRECTINPUTVERSION</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ResultCode.BadDriverVersion\">\n            <summary>Constant BadDriverVersion.</summary>\n            <unmanaged>DIERR_BADDRIVERVER</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ResultCode.Acquired\">\n            <summary>Constant Acquired.</summary>\n            <unmanaged>DIERR_ACQUIRED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ResultCode.Unplugged\">\n            <summary>Constant Unplugged.</summary>\n            <unmanaged>DIERR_UNPLUGGED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ResultCode.Unsupported\">\n            <summary>Constant Unsupported.</summary>\n            <unmanaged>DIERR_UNSUPPORTED</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectInput.RolePlayingControls\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.DirectInput.RolePlayingControls']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RolePlayingControls.RolePlayingGenre\">\n            <summary>Constant RolePlayingGenre.</summary>\n            <unmanaged>DIVIRTUAL_STRATEGY_ROLEPLAYING</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RolePlayingControls.Lateral\">\n            <summary>Constant Lateral.</summary>\n            <unmanaged>DIAXIS_STRATEGYR_LATERAL</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RolePlayingControls.Move\">\n            <summary>Constant Move.</summary>\n            <unmanaged>DIAXIS_STRATEGYR_MOVE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RolePlayingControls.Rotate\">\n            <summary>Constant Rotate.</summary>\n            <unmanaged>DIAXIS_STRATEGYR_ROTATE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RolePlayingControls.Map\">\n            <summary>Constant Map.</summary>\n            <unmanaged>DIBUTTON_STRATEGYR_MAP</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RolePlayingControls.Crouch\">\n            <summary>Constant Crouch.</summary>\n            <unmanaged>DIBUTTON_STRATEGYR_CROUCH</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RolePlayingControls.Cast\">\n            <summary>Constant Cast.</summary>\n            <unmanaged>DIBUTTON_STRATEGYR_CAST</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RolePlayingControls.Get\">\n            <summary>Constant Get.</summary>\n            <unmanaged>DIBUTTON_STRATEGYR_GET</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RolePlayingControls.RotateLeftLink\">\n            <summary>Constant RotateLeftLink.</summary>\n            <unmanaged>DIBUTTON_STRATEGYR_ROTATE_LEFT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RolePlayingControls.Display\">\n            <summary>Constant Display.</summary>\n            <unmanaged>DIBUTTON_STRATEGYR_DISPLAY</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RolePlayingControls.ForwardLink\">\n            <summary>Constant ForwardLink.</summary>\n            <unmanaged>DIBUTTON_STRATEGYR_FORWARD_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RolePlayingControls.LeftLink\">\n            <summary>Constant LeftLink.</summary>\n            <unmanaged>DIBUTTON_STRATEGYR_LEFT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RolePlayingControls.RightLink\">\n            <summary>Constant RightLink.</summary>\n            <unmanaged>DIBUTTON_STRATEGYR_RIGHT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RolePlayingControls.Pause\">\n            <summary>Constant Pause.</summary>\n            <unmanaged>DIBUTTON_STRATEGYR_PAUSE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RolePlayingControls.Select\">\n            <summary>Constant Select.</summary>\n            <unmanaged>DIBUTTON_STRATEGYR_SELECT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RolePlayingControls.RotateRightLink\">\n            <summary>Constant RotateRightLink.</summary>\n            <unmanaged>DIBUTTON_STRATEGYR_ROTATE_RIGHT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RolePlayingControls.Device\">\n            <summary>Constant Device.</summary>\n            <unmanaged>DIBUTTON_STRATEGYR_DEVICE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RolePlayingControls.BackLink\">\n            <summary>Constant BackLink.</summary>\n            <unmanaged>DIBUTTON_STRATEGYR_BACK_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RolePlayingControls.Menu\">\n            <summary>Constant Menu.</summary>\n            <unmanaged>DIBUTTON_STRATEGYR_MENU</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RolePlayingControls.Attack\">\n            <summary>Constant Attack.</summary>\n            <unmanaged>DIBUTTON_STRATEGYR_ATTACK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RolePlayingControls.Jump\">\n            <summary>Constant Jump.</summary>\n            <unmanaged>DIBUTTON_STRATEGYR_JUMP</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RolePlayingControls.Apply\">\n            <summary>Constant Apply.</summary>\n            <unmanaged>DIBUTTON_STRATEGYR_APPLY</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RolePlayingControls.Glance\">\n            <summary>Constant Glance.</summary>\n            <unmanaged>DIHATSWITCH_STRATEGYR_GLANCE</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectInput.ShootingControls\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.DirectInput.ShootingControls']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ShootingControls.Sidestep\">\n            <summary>Constant Sidestep.</summary>\n            <unmanaged>DIAXIS_FPS_SIDESTEP</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ShootingControls.Rotate\">\n            <summary>Constant Rotate.</summary>\n            <unmanaged>DIAXIS_FPS_ROTATE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ShootingControls.Lookupdown\">\n            <summary>Constant Lookupdown.</summary>\n            <unmanaged>DIAXIS_FPS_LOOKUPDOWN</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ShootingControls.Move\">\n            <summary>Constant Move.</summary>\n            <unmanaged>DIAXIS_FPS_MOVE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ShootingControls.GlanceDownLink\">\n            <summary>Constant GlanceDownLink.</summary>\n            <unmanaged>DIBUTTON_FPS_GLANCE_DOWN_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ShootingControls.StepRightLink\">\n            <summary>Constant StepRightLink.</summary>\n            <unmanaged>DIBUTTON_FPS_STEP_RIGHT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ShootingControls.Jump\">\n            <summary>Constant Jump.</summary>\n            <unmanaged>DIBUTTON_FPS_JUMP</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ShootingControls.Crouch\">\n            <summary>Constant Crouch.</summary>\n            <unmanaged>DIBUTTON_FPS_CROUCH</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ShootingControls.Strafe\">\n            <summary>Constant Strafe.</summary>\n            <unmanaged>DIBUTTON_FPS_STRAFE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ShootingControls.GlanceUpLink\">\n            <summary>Constant GlanceUpLink.</summary>\n            <unmanaged>DIBUTTON_FPS_GLANCE_UP_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ShootingControls.BackwardLink\">\n            <summary>Constant BackwardLink.</summary>\n            <unmanaged>DIBUTTON_FPS_BACKWARD_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ShootingControls.Dodge\">\n            <summary>Constant Dodge.</summary>\n            <unmanaged>DIBUTTON_FPS_DODGE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ShootingControls.Apply\">\n            <summary>Constant Apply.</summary>\n            <unmanaged>DIBUTTON_FPS_APPLY</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ShootingControls.StepLeftLink\">\n            <summary>Constant StepLeftLink.</summary>\n            <unmanaged>DIBUTTON_FPS_STEP_LEFT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ShootingControls.Firesecondary\">\n            <summary>Constant Firesecondary.</summary>\n            <unmanaged>DIBUTTON_FPS_FIRESECONDARY</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ShootingControls.Pause\">\n            <summary>Constant Pause.</summary>\n            <unmanaged>DIBUTTON_FPS_PAUSE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ShootingControls.Glancer\">\n            <summary>Constant Glancer.</summary>\n            <unmanaged>DIBUTTON_FPS_GLANCER</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ShootingControls.Weapons\">\n            <summary>Constant Weapons.</summary>\n            <unmanaged>DIBUTTON_FPS_WEAPONS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ShootingControls.RotateLeftLink\">\n            <summary>Constant RotateLeftLink.</summary>\n            <unmanaged>DIBUTTON_FPS_ROTATE_LEFT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ShootingControls.Glancel\">\n            <summary>Constant Glancel.</summary>\n            <unmanaged>DIBUTTON_FPS_GLANCEL</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ShootingControls.ForwardLink\">\n            <summary>Constant ForwardLink.</summary>\n            <unmanaged>DIBUTTON_FPS_FORWARD_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ShootingControls.Select\">\n            <summary>Constant Select.</summary>\n            <unmanaged>DIBUTTON_FPS_SELECT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ShootingControls.Fire\">\n            <summary>Constant Fire.</summary>\n            <unmanaged>DIBUTTON_FPS_FIRE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ShootingControls.Device\">\n            <summary>Constant Device.</summary>\n            <unmanaged>DIBUTTON_FPS_DEVICE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ShootingControls.Menu\">\n            <summary>Constant Menu.</summary>\n            <unmanaged>DIBUTTON_FPS_MENU</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ShootingControls.Display\">\n            <summary>Constant Display.</summary>\n            <unmanaged>DIBUTTON_FPS_DISPLAY</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ShootingControls.RotateRightLink\">\n            <summary>Constant RotateRightLink.</summary>\n            <unmanaged>DIBUTTON_FPS_ROTATE_RIGHT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ShootingControls.Glance\">\n            <summary>Constant Glance.</summary>\n            <unmanaged>DIHATSWITCH_FPS_GLANCE</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectInput.SideToSideControls\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.DirectInput.SideToSideControls']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SideToSideControls.SideToSideGenre\">\n            <summary>Constant SideToSideGenre.</summary>\n            <unmanaged>DIVIRTUAL_ARCADE_SIDE2SIDE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SideToSideControls.Lateral\">\n            <summary>Constant Lateral.</summary>\n            <unmanaged>DIAXIS_ARCADES_LATERAL</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SideToSideControls.Move\">\n            <summary>Constant Move.</summary>\n            <unmanaged>DIAXIS_ARCADES_MOVE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SideToSideControls.ViewDownLink\">\n            <summary>Constant ViewDownLink.</summary>\n            <unmanaged>DIBUTTON_ARCADES_VIEW_DOWN_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SideToSideControls.Carry\">\n            <summary>Constant Carry.</summary>\n            <unmanaged>DIBUTTON_ARCADES_CARRY</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SideToSideControls.LeftLink\">\n            <summary>Constant LeftLink.</summary>\n            <unmanaged>DIBUTTON_ARCADES_LEFT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SideToSideControls.Select\">\n            <summary>Constant Select.</summary>\n            <unmanaged>DIBUTTON_ARCADES_SELECT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SideToSideControls.ViewRightLink\">\n            <summary>Constant ViewRightLink.</summary>\n            <unmanaged>DIBUTTON_ARCADES_VIEW_RIGHT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SideToSideControls.Device\">\n            <summary>Constant Device.</summary>\n            <unmanaged>DIBUTTON_ARCADES_DEVICE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SideToSideControls.Pause\">\n            <summary>Constant Pause.</summary>\n            <unmanaged>DIBUTTON_ARCADES_PAUSE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SideToSideControls.BackLink\">\n            <summary>Constant BackLink.</summary>\n            <unmanaged>DIBUTTON_ARCADES_BACK_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SideToSideControls.ForwardLink\">\n            <summary>Constant ForwardLink.</summary>\n            <unmanaged>DIBUTTON_ARCADES_FORWARD_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SideToSideControls.Attack\">\n            <summary>Constant Attack.</summary>\n            <unmanaged>DIBUTTON_ARCADES_ATTACK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SideToSideControls.ViewUpLink\">\n            <summary>Constant ViewUpLink.</summary>\n            <unmanaged>DIBUTTON_ARCADES_VIEW_UP_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SideToSideControls.ViewLeftLink\">\n            <summary>Constant ViewLeftLink.</summary>\n            <unmanaged>DIBUTTON_ARCADES_VIEW_LEFT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SideToSideControls.Special\">\n            <summary>Constant Special.</summary>\n            <unmanaged>DIBUTTON_ARCADES_SPECIAL</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SideToSideControls.RightLink\">\n            <summary>Constant RightLink.</summary>\n            <unmanaged>DIBUTTON_ARCADES_RIGHT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SideToSideControls.Throw\">\n            <summary>Constant Throw.</summary>\n            <unmanaged>DIBUTTON_ARCADES_THROW</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SideToSideControls.Menu\">\n            <summary>Constant Menu.</summary>\n            <unmanaged>DIBUTTON_ARCADES_MENU</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SideToSideControls.View\">\n            <summary>Constant View.</summary>\n            <unmanaged>DIHATSWITCH_ARCADES_VIEW</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectInput.SkiingControls\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.DirectInput.SkiingControls']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SkiingControls.SkiingGenre\">\n            <summary>Constant SkiingGenre.</summary>\n            <unmanaged>DIVIRTUAL_SPORTS_SKIING</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SkiingControls.Speed\">\n            <summary>Constant Speed.</summary>\n            <unmanaged>DIAXIS_SKIING_SPEED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SkiingControls.Turn\">\n            <summary>Constant Turn.</summary>\n            <unmanaged>DIAXIS_SKIING_TURN</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SkiingControls.Device\">\n            <summary>Constant Device.</summary>\n            <unmanaged>DIBUTTON_SKIING_DEVICE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SkiingControls.Menu\">\n            <summary>Constant Menu.</summary>\n            <unmanaged>DIBUTTON_SKIING_MENU</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SkiingControls.SlowerLink\">\n            <summary>Constant SlowerLink.</summary>\n            <unmanaged>DIBUTTON_SKIING_SLOWER_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SkiingControls.Pause\">\n            <summary>Constant Pause.</summary>\n            <unmanaged>DIBUTTON_SKIING_PAUSE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SkiingControls.Crouch\">\n            <summary>Constant Crouch.</summary>\n            <unmanaged>DIBUTTON_SKIING_CROUCH</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SkiingControls.Special2\">\n            <summary>Constant Special2.</summary>\n            <unmanaged>DIBUTTON_SKIING_SPECIAL2</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SkiingControls.RightLink\">\n            <summary>Constant RightLink.</summary>\n            <unmanaged>DIBUTTON_SKIING_RIGHT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SkiingControls.Zoom\">\n            <summary>Constant Zoom.</summary>\n            <unmanaged>DIBUTTON_SKIING_ZOOM</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SkiingControls.Camera\">\n            <summary>Constant Camera.</summary>\n            <unmanaged>DIBUTTON_SKIING_CAMERA</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SkiingControls.Jump\">\n            <summary>Constant Jump.</summary>\n            <unmanaged>DIBUTTON_SKIING_JUMP</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SkiingControls.LeftLink\">\n            <summary>Constant LeftLink.</summary>\n            <unmanaged>DIBUTTON_SKIING_LEFT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SkiingControls.FasterLink\">\n            <summary>Constant FasterLink.</summary>\n            <unmanaged>DIBUTTON_SKIING_FASTER_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SkiingControls.Select\">\n            <summary>Constant Select.</summary>\n            <unmanaged>DIBUTTON_SKIING_SELECT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SkiingControls.Special1\">\n            <summary>Constant Special1.</summary>\n            <unmanaged>DIBUTTON_SKIING_SPECIAL1</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SkiingControls.Glance\">\n            <summary>Constant Glance.</summary>\n            <unmanaged>DIHATSWITCH_SKIING_GLANCE</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectInput.SoccerDefenseControls\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.DirectInput.SoccerDefenseControls']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SoccerDefenseControls.SoccerDefenseGenre\">\n            <summary>Constant SoccerDefenseGenre.</summary>\n            <unmanaged>DIVIRTUAL_SPORTS_SOCCER_DEFENSE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SoccerDefenseControls.Move\">\n            <summary>Constant Move.</summary>\n            <unmanaged>DIAXIS_SOCCERD_MOVE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SoccerDefenseControls.Lateral\">\n            <summary>Constant Lateral.</summary>\n            <unmanaged>DIAXIS_SOCCERD_LATERAL</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SoccerDefenseControls.Head\">\n            <summary>Constant Head.</summary>\n            <unmanaged>DIBUTTON_SOCCERD_HEAD</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SoccerDefenseControls.Slide\">\n            <summary>Constant Slide.</summary>\n            <unmanaged>DIBUTTON_SOCCERD_SLIDE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SoccerDefenseControls.Foul\">\n            <summary>Constant Foul.</summary>\n            <unmanaged>DIBUTTON_SOCCERD_FOUL</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SoccerDefenseControls.Steal\">\n            <summary>Constant Steal.</summary>\n            <unmanaged>DIBUTTON_SOCCERD_STEAL</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SoccerDefenseControls.Pause\">\n            <summary>Constant Pause.</summary>\n            <unmanaged>DIBUTTON_SOCCERD_PAUSE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SoccerDefenseControls.LeftLink\">\n            <summary>Constant LeftLink.</summary>\n            <unmanaged>DIBUTTON_SOCCERD_LEFT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SoccerDefenseControls.SubStitute\">\n            <summary>Constant SubStitute.</summary>\n            <unmanaged>DIBUTTON_SOCCERD_SUBSTITUTE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SoccerDefenseControls.Block\">\n            <summary>Constant Block.</summary>\n            <unmanaged>DIBUTTON_SOCCERD_BLOCK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SoccerDefenseControls.Select\">\n            <summary>Constant Select.</summary>\n            <unmanaged>DIBUTTON_SOCCERD_SELECT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SoccerDefenseControls.Clear\">\n            <summary>Constant Clear.</summary>\n            <unmanaged>DIBUTTON_SOCCERD_CLEAR</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SoccerDefenseControls.Device\">\n            <summary>Constant Device.</summary>\n            <unmanaged>DIBUTTON_SOCCERD_DEVICE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SoccerDefenseControls.RightLink\">\n            <summary>Constant RightLink.</summary>\n            <unmanaged>DIBUTTON_SOCCERD_RIGHT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SoccerDefenseControls.Fake\">\n            <summary>Constant Fake.</summary>\n            <unmanaged>DIBUTTON_SOCCERD_FAKE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SoccerDefenseControls.Goaliecharge\">\n            <summary>Constant Goaliecharge.</summary>\n            <unmanaged>DIBUTTON_SOCCERD_GOALIECHARGE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SoccerDefenseControls.BackLink\">\n            <summary>Constant BackLink.</summary>\n            <unmanaged>DIBUTTON_SOCCERD_BACK_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SoccerDefenseControls.Player\">\n            <summary>Constant Player.</summary>\n            <unmanaged>DIBUTTON_SOCCERD_PLAYER</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SoccerDefenseControls.ForwardLink\">\n            <summary>Constant ForwardLink.</summary>\n            <unmanaged>DIBUTTON_SOCCERD_FORWARD_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SoccerDefenseControls.Menu\">\n            <summary>Constant Menu.</summary>\n            <unmanaged>DIBUTTON_SOCCERD_MENU</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SoccerDefenseControls.Special\">\n            <summary>Constant Special.</summary>\n            <unmanaged>DIBUTTON_SOCCERD_SPECIAL</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SoccerDefenseControls.Glance\">\n            <summary>Constant Glance.</summary>\n            <unmanaged>DIHATSWITCH_SOCCERD_GLANCE</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectInput.SoccerOffenceControls\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.DirectInput.SoccerOffenceControls']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SoccerOffenceControls.SoccerOffenceGenre\">\n            <summary>Constant SoccerOffenceGenre.</summary>\n            <unmanaged>DIVIRTUAL_SPORTS_SOCCER_OFFENSE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SoccerOffenceControls.Lateral\">\n            <summary>Constant Lateral.</summary>\n            <unmanaged>DIAXIS_SOCCERO_LATERAL</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SoccerOffenceControls.Move\">\n            <summary>Constant Move.</summary>\n            <unmanaged>DIAXIS_SOCCERO_MOVE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SoccerOffenceControls.Bend\">\n            <summary>Constant Bend.</summary>\n            <unmanaged>DIAXIS_SOCCERO_BEND</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SoccerOffenceControls.LeftLink\">\n            <summary>Constant LeftLink.</summary>\n            <unmanaged>DIBUTTON_SOCCERO_LEFT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SoccerOffenceControls.Player\">\n            <summary>Constant Player.</summary>\n            <unmanaged>DIBUTTON_SOCCERO_PLAYER</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SoccerOffenceControls.Sprint\">\n            <summary>Constant Sprint.</summary>\n            <unmanaged>DIBUTTON_SOCCERO_SPRINT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SoccerOffenceControls.ForwardLink\">\n            <summary>Constant ForwardLink.</summary>\n            <unmanaged>DIBUTTON_SOCCERO_FORWARD_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SoccerOffenceControls.Shootlow\">\n            <summary>Constant Shootlow.</summary>\n            <unmanaged>DIBUTTON_SOCCERO_SHOOTLOW</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SoccerOffenceControls.Control\">\n            <summary>Constant Control.</summary>\n            <unmanaged>DIBUTTON_SOCCERO_CONTROL</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SoccerOffenceControls.Shoot\">\n            <summary>Constant Shoot.</summary>\n            <unmanaged>DIBUTTON_SOCCERO_SHOOT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SoccerOffenceControls.RightLink\">\n            <summary>Constant RightLink.</summary>\n            <unmanaged>DIBUTTON_SOCCERO_RIGHT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SoccerOffenceControls.BackLink\">\n            <summary>Constant BackLink.</summary>\n            <unmanaged>DIBUTTON_SOCCERO_BACK_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SoccerOffenceControls.Pass\">\n            <summary>Constant Pass.</summary>\n            <unmanaged>DIBUTTON_SOCCERO_PASS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SoccerOffenceControls.SubStitute\">\n            <summary>Constant SubStitute.</summary>\n            <unmanaged>DIBUTTON_SOCCERO_SUBSTITUTE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SoccerOffenceControls.Fake\">\n            <summary>Constant Fake.</summary>\n            <unmanaged>DIBUTTON_SOCCERO_FAKE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SoccerOffenceControls.Head\">\n            <summary>Constant Head.</summary>\n            <unmanaged>DIBUTTON_SOCCERO_HEAD</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SoccerOffenceControls.Pause\">\n            <summary>Constant Pause.</summary>\n            <unmanaged>DIBUTTON_SOCCERO_PAUSE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SoccerOffenceControls.Passthru\">\n            <summary>Constant Passthru.</summary>\n            <unmanaged>DIBUTTON_SOCCERO_PASSTHRU</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SoccerOffenceControls.Shoothigh\">\n            <summary>Constant Shoothigh.</summary>\n            <unmanaged>DIBUTTON_SOCCERO_SHOOTHIGH</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SoccerOffenceControls.Select\">\n            <summary>Constant Select.</summary>\n            <unmanaged>DIBUTTON_SOCCERO_SELECT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SoccerOffenceControls.Special1\">\n            <summary>Constant Special1.</summary>\n            <unmanaged>DIBUTTON_SOCCERO_SPECIAL1</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SoccerOffenceControls.Device\">\n            <summary>Constant Device.</summary>\n            <unmanaged>DIBUTTON_SOCCERO_DEVICE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SoccerOffenceControls.Menu\">\n            <summary>Constant Menu.</summary>\n            <unmanaged>DIBUTTON_SOCCERO_MENU</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SoccerOffenceControls.Glance\">\n            <summary>Constant Glance.</summary>\n            <unmanaged>DIHATSWITCH_SOCCERO_GLANCE</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectInput.SpaceCombatControls\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.DirectInput.SpaceCombatControls']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SpaceCombatControls.SpaceCombatGenre\">\n            <summary>Constant SpaceCombatGenre.</summary>\n            <unmanaged>DIVIRTUAL_SPACESIM</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SpaceCombatControls.Rotate\">\n            <summary>Constant Rotate.</summary>\n            <unmanaged>DIAXIS_SPACESIM_ROTATE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SpaceCombatControls.Throttle\">\n            <summary>Constant Throttle.</summary>\n            <unmanaged>DIAXIS_SPACESIM_THROTTLE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SpaceCombatControls.Lateral\">\n            <summary>Constant Lateral.</summary>\n            <unmanaged>DIAXIS_SPACESIM_LATERAL</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SpaceCombatControls.Climb\">\n            <summary>Constant Climb.</summary>\n            <unmanaged>DIAXIS_SPACESIM_CLIMB</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SpaceCombatControls.Move\">\n            <summary>Constant Move.</summary>\n            <unmanaged>DIAXIS_SPACESIM_MOVE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SpaceCombatControls.SlowerLink\">\n            <summary>Constant SlowerLink.</summary>\n            <unmanaged>DIBUTTON_SPACESIM_SLOWER_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SpaceCombatControls.Gear\">\n            <summary>Constant Gear.</summary>\n            <unmanaged>DIBUTTON_SPACESIM_GEAR</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SpaceCombatControls.Fire\">\n            <summary>Constant Fire.</summary>\n            <unmanaged>DIBUTTON_SPACESIM_FIRE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SpaceCombatControls.RightLink\">\n            <summary>Constant RightLink.</summary>\n            <unmanaged>DIBUTTON_SPACESIM_RIGHT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SpaceCombatControls.Device\">\n            <summary>Constant Device.</summary>\n            <unmanaged>DIBUTTON_SPACESIM_DEVICE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SpaceCombatControls.GlanceDownLink\">\n            <summary>Constant GlanceDownLink.</summary>\n            <unmanaged>DIBUTTON_SPACESIM_GLANCE_DOWN_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SpaceCombatControls.GlanceLeftLink\">\n            <summary>Constant GlanceLeftLink.</summary>\n            <unmanaged>DIBUTTON_SPACESIM_GLANCE_LEFT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SpaceCombatControls.Menu\">\n            <summary>Constant Menu.</summary>\n            <unmanaged>DIBUTTON_SPACESIM_MENU</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SpaceCombatControls.TurnRightLink\">\n            <summary>Constant TurnRightLink.</summary>\n            <unmanaged>DIBUTTON_SPACESIM_TURN_RIGHT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SpaceCombatControls.Pause\">\n            <summary>Constant Pause.</summary>\n            <unmanaged>DIBUTTON_SPACESIM_PAUSE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SpaceCombatControls.Lower\">\n            <summary>Constant Lower.</summary>\n            <unmanaged>DIBUTTON_SPACESIM_LOWER</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SpaceCombatControls.GlanceRightLink\">\n            <summary>Constant GlanceRightLink.</summary>\n            <unmanaged>DIBUTTON_SPACESIM_GLANCE_RIGHT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SpaceCombatControls.BackwardLink\">\n            <summary>Constant BackwardLink.</summary>\n            <unmanaged>DIBUTTON_SPACESIM_BACKWARD_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SpaceCombatControls.TurnLeftLink\">\n            <summary>Constant TurnLeftLink.</summary>\n            <unmanaged>DIBUTTON_SPACESIM_TURN_LEFT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SpaceCombatControls.LeftLink\">\n            <summary>Constant LeftLink.</summary>\n            <unmanaged>DIBUTTON_SPACESIM_LEFT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SpaceCombatControls.FasterLink\">\n            <summary>Constant FasterLink.</summary>\n            <unmanaged>DIBUTTON_SPACESIM_FASTER_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SpaceCombatControls.Display\">\n            <summary>Constant Display.</summary>\n            <unmanaged>DIBUTTON_SPACESIM_DISPLAY</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SpaceCombatControls.GlanceUpLink\">\n            <summary>Constant GlanceUpLink.</summary>\n            <unmanaged>DIBUTTON_SPACESIM_GLANCE_UP_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SpaceCombatControls.Weapons\">\n            <summary>Constant Weapons.</summary>\n            <unmanaged>DIBUTTON_SPACESIM_WEAPONS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SpaceCombatControls.View\">\n            <summary>Constant View.</summary>\n            <unmanaged>DIBUTTON_SPACESIM_VIEW</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SpaceCombatControls.ForwardLink\">\n            <summary>Constant ForwardLink.</summary>\n            <unmanaged>DIBUTTON_SPACESIM_FORWARD_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SpaceCombatControls.Firesecondary\">\n            <summary>Constant Firesecondary.</summary>\n            <unmanaged>DIBUTTON_SPACESIM_FIRESECONDARY</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SpaceCombatControls.Raise\">\n            <summary>Constant Raise.</summary>\n            <unmanaged>DIBUTTON_SPACESIM_RAISE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SpaceCombatControls.Target\">\n            <summary>Constant Target.</summary>\n            <unmanaged>DIBUTTON_SPACESIM_TARGET</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.SpaceCombatControls.Glance\">\n            <summary>Constant Glance.</summary>\n            <unmanaged>DIHATSWITCH_SPACESIM_GLANCE</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectInput.TankDrivingControls\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.DirectInput.TankDrivingControls']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.TankDrivingControls.TankDrivingGenre\">\n            <summary>Constant TankDrivingGenre.</summary>\n            <unmanaged>DIVIRTUAL_DRIVING_TANK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.TankDrivingControls.BrakeAxis\">\n            <summary>Constant BrakeAxis.</summary>\n            <unmanaged>DIAXIS_DRIVINGT_BRAKE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.TankDrivingControls.AccelerateAndBrake\">\n            <summary>Constant AccelerateAndBrake.</summary>\n            <unmanaged>DIAXIS_DRIVINGT_ACCEL_AND_BRAKE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.TankDrivingControls.Accelerate\">\n            <summary>Constant Accelerate.</summary>\n            <unmanaged>DIAXIS_DRIVINGT_ACCELERATE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.TankDrivingControls.Rotate\">\n            <summary>Constant Rotate.</summary>\n            <unmanaged>DIAXIS_DRIVINGT_ROTATE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.TankDrivingControls.Steer\">\n            <summary>Constant Steer.</summary>\n            <unmanaged>DIAXIS_DRIVINGT_STEER</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.TankDrivingControls.Barrel\">\n            <summary>Constant Barrel.</summary>\n            <unmanaged>DIAXIS_DRIVINGT_BARREL</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.TankDrivingControls.BarrelDownLink\">\n            <summary>Constant BarrelDownLink.</summary>\n            <unmanaged>DIBUTTON_DRIVINGT_BARREL_DOWN_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.TankDrivingControls.GlanceRightLink\">\n            <summary>Constant GlanceRightLink.</summary>\n            <unmanaged>DIBUTTON_DRIVINGT_GLANCE_RIGHT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.TankDrivingControls.Dashboard\">\n            <summary>Constant Dashboard.</summary>\n            <unmanaged>DIBUTTON_DRIVINGT_DASHBOARD</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.TankDrivingControls.Device\">\n            <summary>Constant Device.</summary>\n            <unmanaged>DIBUTTON_DRIVINGT_DEVICE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.TankDrivingControls.SteerLeftLink\">\n            <summary>Constant SteerLeftLink.</summary>\n            <unmanaged>DIBUTTON_DRIVINGT_STEER_LEFT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.TankDrivingControls.View\">\n            <summary>Constant View.</summary>\n            <unmanaged>DIBUTTON_DRIVINGT_VIEW</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.TankDrivingControls.AccelerateLink\">\n            <summary>Constant AccelerateLink.</summary>\n            <unmanaged>DIBUTTON_DRIVINGT_ACCELERATE_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.TankDrivingControls.Weapons\">\n            <summary>Constant Weapons.</summary>\n            <unmanaged>DIBUTTON_DRIVINGT_WEAPONS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.TankDrivingControls.BarrelUpLink\">\n            <summary>Constant BarrelUpLink.</summary>\n            <unmanaged>DIBUTTON_DRIVINGT_BARREL_UP_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.TankDrivingControls.Brake\">\n            <summary>Constant Brake.</summary>\n            <unmanaged>DIBUTTON_DRIVINGT_BRAKE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.TankDrivingControls.SteerRightLink\">\n            <summary>Constant SteerRightLink.</summary>\n            <unmanaged>DIBUTTON_DRIVINGT_STEER_RIGHT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.TankDrivingControls.RotateLeftLink\">\n            <summary>Constant RotateLeftLink.</summary>\n            <unmanaged>DIBUTTON_DRIVINGT_ROTATE_LEFT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.TankDrivingControls.Firesecondary\">\n            <summary>Constant Firesecondary.</summary>\n            <unmanaged>DIBUTTON_DRIVINGT_FIRESECONDARY</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.TankDrivingControls.Fire\">\n            <summary>Constant Fire.</summary>\n            <unmanaged>DIBUTTON_DRIVINGT_FIRE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.TankDrivingControls.RotateRightLink\">\n            <summary>Constant RotateRightLink.</summary>\n            <unmanaged>DIBUTTON_DRIVINGT_ROTATE_RIGHT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.TankDrivingControls.Pause\">\n            <summary>Constant Pause.</summary>\n            <unmanaged>DIBUTTON_DRIVINGT_PAUSE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.TankDrivingControls.Menu\">\n            <summary>Constant Menu.</summary>\n            <unmanaged>DIBUTTON_DRIVINGT_MENU</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.TankDrivingControls.GlanceLeftLink\">\n            <summary>Constant GlanceLeftLink.</summary>\n            <unmanaged>DIBUTTON_DRIVINGT_GLANCE_LEFT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.TankDrivingControls.Target\">\n            <summary>Constant Target.</summary>\n            <unmanaged>DIBUTTON_DRIVINGT_TARGET</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.TankDrivingControls.Glance\">\n            <summary>Constant Glance.</summary>\n            <unmanaged>DIHATSWITCH_DRIVINGT_GLANCE</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectInput.ThirdPersonControls\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.DirectInput.ThirdPersonControls']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ThirdPersonControls.TankDrivingGenre\">\n            <summary>Constant TankDrivingGenre.</summary>\n            <unmanaged>DIVIRTUAL_FIGHTING_THIRDPERSON</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ThirdPersonControls.Turn\">\n            <summary>Constant Turn.</summary>\n            <unmanaged>DIAXIS_TPS_TURN</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ThirdPersonControls.Step\">\n            <summary>Constant Step.</summary>\n            <unmanaged>DIAXIS_TPS_STEP</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ThirdPersonControls.Move\">\n            <summary>Constant Move.</summary>\n            <unmanaged>DIAXIS_TPS_MOVE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ThirdPersonControls.TurnLeftLink\">\n            <summary>Constant TurnLeftLink.</summary>\n            <unmanaged>DIBUTTON_TPS_TURN_LEFT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ThirdPersonControls.Dodge\">\n            <summary>Constant Dodge.</summary>\n            <unmanaged>DIBUTTON_TPS_DODGE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ThirdPersonControls.Action\">\n            <summary>Constant Action.</summary>\n            <unmanaged>DIBUTTON_TPS_ACTION</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ThirdPersonControls.Menu\">\n            <summary>Constant Menu.</summary>\n            <unmanaged>DIBUTTON_TPS_MENU</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ThirdPersonControls.InverseEntory\">\n            <summary>Constant InverseEntory.</summary>\n            <unmanaged>DIBUTTON_TPS_INVENTORY</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ThirdPersonControls.ForwardLink\">\n            <summary>Constant ForwardLink.</summary>\n            <unmanaged>DIBUTTON_TPS_FORWARD_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ThirdPersonControls.GlanceRightLink\">\n            <summary>Constant GlanceRightLink.</summary>\n            <unmanaged>DIBUTTON_TPS_GLANCE_RIGHT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ThirdPersonControls.GlanceUpLink\">\n            <summary>Constant GlanceUpLink.</summary>\n            <unmanaged>DIBUTTON_TPS_GLANCE_UP_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ThirdPersonControls.Stepleft\">\n            <summary>Constant Stepleft.</summary>\n            <unmanaged>DIBUTTON_TPS_STEPLEFT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ThirdPersonControls.Pause\">\n            <summary>Constant Pause.</summary>\n            <unmanaged>DIBUTTON_TPS_PAUSE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ThirdPersonControls.GlanceLeftLink\">\n            <summary>Constant GlanceLeftLink.</summary>\n            <unmanaged>DIBUTTON_TPS_GLANCE_LEFT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ThirdPersonControls.Run\">\n            <summary>Constant Run.</summary>\n            <unmanaged>DIBUTTON_TPS_RUN</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ThirdPersonControls.Jump\">\n            <summary>Constant Jump.</summary>\n            <unmanaged>DIBUTTON_TPS_JUMP</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ThirdPersonControls.BackwardLink\">\n            <summary>Constant BackwardLink.</summary>\n            <unmanaged>DIBUTTON_TPS_BACKWARD_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ThirdPersonControls.Use\">\n            <summary>Constant Use.</summary>\n            <unmanaged>DIBUTTON_TPS_USE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ThirdPersonControls.TurnRightLink\">\n            <summary>Constant TurnRightLink.</summary>\n            <unmanaged>DIBUTTON_TPS_TURN_RIGHT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ThirdPersonControls.View\">\n            <summary>Constant View.</summary>\n            <unmanaged>DIBUTTON_TPS_VIEW</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ThirdPersonControls.Select\">\n            <summary>Constant Select.</summary>\n            <unmanaged>DIBUTTON_TPS_SELECT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ThirdPersonControls.Stepright\">\n            <summary>Constant Stepright.</summary>\n            <unmanaged>DIBUTTON_TPS_STEPRIGHT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ThirdPersonControls.Device\">\n            <summary>Constant Device.</summary>\n            <unmanaged>DIBUTTON_TPS_DEVICE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ThirdPersonControls.GlanceDownLink\">\n            <summary>Constant GlanceDownLink.</summary>\n            <unmanaged>DIBUTTON_TPS_GLANCE_DOWN_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ThirdPersonControls.Glance\">\n            <summary>Constant Glance.</summary>\n            <unmanaged>DIHATSWITCH_TPS_GLANCE</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectInput.TurnBasedControls\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.DirectInput.TurnBasedControls']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.TurnBasedControls.TankDrivingGenre\">\n            <summary>Constant TankDrivingGenre.</summary>\n            <unmanaged>DIVIRTUAL_STRATEGY_TURN</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.TurnBasedControls.Lateral\">\n            <summary>Constant Lateral.</summary>\n            <unmanaged>DIAXIS_STRATEGYT_LATERAL</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.TurnBasedControls.Move\">\n            <summary>Constant Move.</summary>\n            <unmanaged>DIAXIS_STRATEGYT_MOVE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.TurnBasedControls.Zoom\">\n            <summary>Constant Zoom.</summary>\n            <unmanaged>DIBUTTON_STRATEGYT_ZOOM</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.TurnBasedControls.RightLink\">\n            <summary>Constant RightLink.</summary>\n            <unmanaged>DIBUTTON_STRATEGYT_RIGHT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.TurnBasedControls.Display\">\n            <summary>Constant Display.</summary>\n            <unmanaged>DIBUTTON_STRATEGYT_DISPLAY</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.TurnBasedControls.Device\">\n            <summary>Constant Device.</summary>\n            <unmanaged>DIBUTTON_STRATEGYT_DEVICE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.TurnBasedControls.LeftLink\">\n            <summary>Constant LeftLink.</summary>\n            <unmanaged>DIBUTTON_STRATEGYT_LEFT_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.TurnBasedControls.Pause\">\n            <summary>Constant Pause.</summary>\n            <unmanaged>DIBUTTON_STRATEGYT_PAUSE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.TurnBasedControls.Select\">\n            <summary>Constant Select.</summary>\n            <unmanaged>DIBUTTON_STRATEGYT_SELECT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.TurnBasedControls.Team\">\n            <summary>Constant Team.</summary>\n            <unmanaged>DIBUTTON_STRATEGYT_TEAM</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.TurnBasedControls.BackLink\">\n            <summary>Constant BackLink.</summary>\n            <unmanaged>DIBUTTON_STRATEGYT_BACK_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.TurnBasedControls.Apply\">\n            <summary>Constant Apply.</summary>\n            <unmanaged>DIBUTTON_STRATEGYT_APPLY</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.TurnBasedControls.ForwardLink\">\n            <summary>Constant ForwardLink.</summary>\n            <unmanaged>DIBUTTON_STRATEGYT_FORWARD_LINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.TurnBasedControls.Menu\">\n            <summary>Constant Menu.</summary>\n            <unmanaged>DIBUTTON_STRATEGYT_MENU</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.TurnBasedControls.Map\">\n            <summary>Constant Map.</summary>\n            <unmanaged>DIBUTTON_STRATEGYT_MAP</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.TurnBasedControls.Instruct\">\n            <summary>Constant Instruct.</summary>\n            <unmanaged>DIBUTTON_STRATEGYT_INSTRUCT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.TurnBasedControls.Turn\">\n            <summary>Constant Turn.</summary>\n            <unmanaged>DIBUTTON_STRATEGYT_TURN</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.IDataFormatProvider.Flags\">\n            <summary>\n            Gets or sets the dataformat flags.\n            </summary>\n            <value>The flags.</value>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.IDataFormatProvider.ObjectsFormat\">\n            <summary>\n            Gets the defined dataformat objects.\n            </summary>\n            <value>The objects.</value>\n        </member>\n        <member name=\"T:SharpDX.DirectInput.JoystickOffset\">\n            <summary>\n            Enumeration of identifiers for Joystick updatable objects.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.DirectInput.ModuleInit\">\n            <summary>\n            Internal class used to initialize this assembly.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.DirectInput.ModuleInit.Setup\">\n            <summary>\n            Initializes this assembly.\n            </summary>\n            <remarks>\n            This method is called when the assembly is loaded.\n            </remarks>\n        </member>\n        <member name=\"T:SharpDX.DirectInput.MouseState\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <unmanaged>DIMOUSESTATE2</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectInput.JoystickState\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <unmanaged>DIJOYSTATE2</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.JoystickState.X\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <unmanaged>int lX</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.JoystickState.Y\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <unmanaged>int lY</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.JoystickState.Z\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <unmanaged>int lZ</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.JoystickState.RotationX\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <unmanaged>int lRx</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.JoystickState.RotationY\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <unmanaged>int lRy</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.JoystickState.RotationZ\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <unmanaged>int lRz</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.JoystickState.Sliders\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <unmanaged>int rglSlider[2]</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.JoystickState.PointOfViewControllers\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <unmanaged>unsigned int rgdwPOV[4]</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.JoystickState.Buttons\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <unmanaged>unsigned char rgbButtons[128]</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.JoystickState.VelocityX\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <unmanaged>int lVX</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.JoystickState.VelocityY\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <unmanaged>int lVY</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.JoystickState.VelocityZ\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <unmanaged>int lVZ</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.JoystickState.AngularVelocityX\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <unmanaged>int lVRx</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.JoystickState.AngularVelocityY\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <unmanaged>int lVRy</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.JoystickState.AngularVelocityZ\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <unmanaged>int lVRz</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.JoystickState.VelocitySliders\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <unmanaged>int rglVSlider[2]</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.JoystickState.AccelerationX\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <unmanaged>int lAX</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.JoystickState.AccelerationY\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <unmanaged>int lAY</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.JoystickState.AccelerationZ\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <unmanaged>int lAZ</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.JoystickState.AngularAccelerationX\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <unmanaged>int lARx</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.JoystickState.AngularAccelerationY\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <unmanaged>int lARy</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.JoystickState.AngularAccelerationZ\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <unmanaged>int lARz</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.JoystickState.AccelerationSliders\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <unmanaged>int rglASlider[2]</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.JoystickState.ForceX\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <unmanaged>int lFX</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.JoystickState.ForceY\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <unmanaged>int lFY</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.JoystickState.ForceZ\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <unmanaged>int lFZ</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.JoystickState.TorqueX\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <unmanaged>int lFRx</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.JoystickState.TorqueY\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <unmanaged>int lFRy</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.JoystickState.TorqueZ\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <unmanaged>int lFRz</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.JoystickState.ForceSliders\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <unmanaged>int rglFSlider[2]</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectInput.Action\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIACTIONW']/*\"/>\t\n            <unmanaged>DIACTIONW</unmanaged>\t\n            <unmanaged-short>DIACTIONW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Action.AppData\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIACTIONW::uAppData']/*\"/>\t\n            <unmanaged>UINT_PTR uAppData</unmanaged>\t\n            <unmanaged-short>UINT_PTR uAppData</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Action.Semantic\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIACTIONW::dwSemantic']/*\"/>\t\n            <unmanaged>unsigned int dwSemantic</unmanaged>\t\n            <unmanaged-short>unsigned int dwSemantic</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Action.Flags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIACTIONW::dwFlags']/*\"/>\t\n            <unmanaged>unsigned int dwFlags</unmanaged>\t\n            <unmanaged-short>unsigned int dwFlags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Action.ActionName\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIACTIONW::lptszActionName']/*\"/>\t\n            <unmanaged>const void* lptszActionName</unmanaged>\t\n            <unmanaged-short>void lptszActionName</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Action.GuidInstance\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIACTIONW::guidInstance']/*\"/>\t\n            <unmanaged>GUID guidInstance</unmanaged>\t\n            <unmanaged-short>GUID guidInstance</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Action.ObjID\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIACTIONW::dwObjID']/*\"/>\t\n            <unmanaged>unsigned int dwObjID</unmanaged>\t\n            <unmanaged-short>unsigned int dwObjID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Action.How\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIACTIONW::dwHow']/*\"/>\t\n            <unmanaged>unsigned int dwHow</unmanaged>\t\n            <unmanaged-short>unsigned int dwHow</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectInput.ActionFormat\">\n            <summary>\t\n            Contains information about the calling application and acts as a container for an array ofDIACTIONstructures that define action-to-control mappings for a genre.\t\n            </summary>\t\n            <remarks>\t\n            <p>The ftTimeStamp member can contain special values that apply to new and unused devices. New devices have never been enumerated for this application and have never had an action map applied to them. Unused devices have been enumerated for the application before but have never had an action map applied. New devices always have DIAFTS_NEWDEVICELOW and DIAFTS_NEWDEVICEHIGH in the low and high  DWORDs respectively of the  <see cref=\"T:System.Int64\"/> structure. Unused devices have DIAFTS_UNUSEDDEVICELOW and DIAFTS_UNUSEDDEVICEHIGH in these positions.</p> <p>Applications should not use  ftTimeStamp to check for new devices. Instead, they should look for the DIEDBS_RECENTDEVICE and DIEDBS_NEWDEVICE flags in the enumeration callback. For more information, see DIEnumDevicesBySemanticsCallback.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIACTIONFORMATW']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.diactionformat</msdn-id>\t\n            <unmanaged>DIACTIONFORMATW</unmanaged>\t\n            <unmanaged-short>DIACTIONFORMATW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ActionFormat.Size\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIACTIONFORMATW::dwSize']/*\"/>\t\n            <unmanaged>unsigned int dwSize</unmanaged>\t\n            <unmanaged-short>unsigned int dwSize</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ActionFormat.ActionSize\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIACTIONFORMATW::dwActionSize']/*\"/>\t\n            <unmanaged>unsigned int dwActionSize</unmanaged>\t\n            <unmanaged-short>unsigned int dwActionSize</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ActionFormat.DataSize\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIACTIONFORMATW::dwDataSize']/*\"/>\t\n            <unmanaged>unsigned int dwDataSize</unmanaged>\t\n            <unmanaged-short>unsigned int dwDataSize</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ActionFormat.NumActions\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIACTIONFORMATW::dwNumActions']/*\"/>\t\n            <unmanaged>unsigned int dwNumActions</unmanaged>\t\n            <unmanaged-short>unsigned int dwNumActions</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ActionFormat.RgoAction\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIACTIONFORMATW::rgoAction']/*\"/>\t\n            <unmanaged>DIACTIONW* rgoAction</unmanaged>\t\n            <unmanaged-short>DIACTIONW rgoAction</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ActionFormat.GuidActionMap\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIACTIONFORMATW::guidActionMap']/*\"/>\t\n            <unmanaged>GUID guidActionMap</unmanaged>\t\n            <unmanaged-short>GUID guidActionMap</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ActionFormat.Genre\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIACTIONFORMATW::dwGenre']/*\"/>\t\n            <unmanaged>unsigned int dwGenre</unmanaged>\t\n            <unmanaged-short>unsigned int dwGenre</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ActionFormat.BufferSize\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIACTIONFORMATW::dwBufferSize']/*\"/>\t\n            <unmanaged>unsigned int dwBufferSize</unmanaged>\t\n            <unmanaged-short>unsigned int dwBufferSize</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ActionFormat.AxisMin\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIACTIONFORMATW::lAxisMin']/*\"/>\t\n            <unmanaged>int lAxisMin</unmanaged>\t\n            <unmanaged-short>int lAxisMin</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ActionFormat.AxisMax\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIACTIONFORMATW::lAxisMax']/*\"/>\t\n            <unmanaged>int lAxisMax</unmanaged>\t\n            <unmanaged-short>int lAxisMax</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ActionFormat.HInstString\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIACTIONFORMATW::hInstString']/*\"/>\t\n            <unmanaged>HINSTANCE hInstString</unmanaged>\t\n            <unmanaged-short>HINSTANCE hInstString</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ActionFormat.FtTimeStamp\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIACTIONFORMATW::ftTimeStamp']/*\"/>\t\n            <unmanaged>FILETIME ftTimeStamp</unmanaged>\t\n            <unmanaged-short>FILETIME ftTimeStamp</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ActionFormat.CRC\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIACTIONFORMATW::dwCRC']/*\"/>\t\n            <unmanaged>unsigned int dwCRC</unmanaged>\t\n            <unmanaged-short>unsigned int dwCRC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ActionFormat.ActionMap\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIACTIONFORMATW::tszActionMap']/*\"/>\t\n            <unmanaged>wchar_t tszActionMap[260]</unmanaged>\t\n            <unmanaged-short>wchar_t tszActionMap</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectInput.Condition\">\n            <summary>\t\n            Contains type-specific information for effects that are marked as <see cref=\"F:SharpDX.DirectInput.EffectType.Condition\"/>.<p>A reference to an array of <see cref=\"T:SharpDX.DirectInput.Condition\"/> structures for an effect is passed in the lpvTypeSpecificParams member of the <see cref=\"T:SharpDX.DirectInput.EffectParameters\"/> structure. The number of elements in the array must be either one, or equal to the number of axes associated with the effect.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Different types of conditions interpret the parameters differently, but the basic idea is that force resulting from a condition is equal to  A(q - q0) where  A is a scaling coefficient,  q is some metric, and  q0 is the neutral value for that metric.</p> <p>The preceding simplified formula must be adjusted if a nonzero deadband is provided. If the metric is less than lOffset - lDeadBand, the resulting force is given by the following formula:</p> <p> force =  lNegativeCoefficient * ( q - ( lOffset -  lDeadBand))</p> <p>Similarly, if the metric is greater than  lOffset +  lDeadBand, the resulting force is given by the following formula:</p> <p> force =  lPositiveCoefficient * ( q - ( lOffset +  lDeadBand))</p> <p>A spring condition uses axis position as the metric.</p> <p>A damper condition uses axis velocity as the metric.</p> <p>An inertia condition uses axis acceleration as the metric.</p> <p>If the number of <see cref=\"T:SharpDX.DirectInput.Condition\"/> structures in the array is equal to the number of axes for the effect, the first structure applies to the first axis, the second applies to the second axis, and so on. For example, a two-axis spring condition with  lOffset set to 0 in both <see cref=\"T:SharpDX.DirectInput.Condition\"/> structures would have the same effect as the joystick self-centering spring. When a condition is defined for each axis in this way, the effect must not be rotated.</p> <p>If there is a single <see cref=\"T:SharpDX.DirectInput.Condition\"/> structure for an effect with more than one axis, the direction along which the parameters of the <see cref=\"T:SharpDX.DirectInput.Condition\"/> structure are in effect is determined by the direction parameters passed in the rglDirection field of the <see cref=\"T:SharpDX.DirectInput.EffectParameters\"/> structure. For example, a friction condition rotated 45 degrees (in polar coordinates) would resist joystick motion in the northeast-southwest direction but would have no effect on joystick motion in the northwest-southeast direction. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DICONDITION']/*\"/>\t\n            <msdn-id>ee416601</msdn-id>\t\n            <unmanaged>DICONDITION</unmanaged>\t\n            <unmanaged-short>DICONDITION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Condition.Offset\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DICONDITION::lOffset']/*\"/>\t\n            <unmanaged>int lOffset</unmanaged>\t\n            <unmanaged-short>int lOffset</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Condition.PositiveCoefficient\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DICONDITION::lPositiveCoefficient']/*\"/>\t\n            <unmanaged>int lPositiveCoefficient</unmanaged>\t\n            <unmanaged-short>int lPositiveCoefficient</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Condition.NegativeCoefficient\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DICONDITION::lNegativeCoefficient']/*\"/>\t\n            <unmanaged>int lNegativeCoefficient</unmanaged>\t\n            <unmanaged-short>int lNegativeCoefficient</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Condition.PositiveSaturation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DICONDITION::dwPositiveSaturation']/*\"/>\t\n            <unmanaged>unsigned int dwPositiveSaturation</unmanaged>\t\n            <unmanaged-short>unsigned int dwPositiveSaturation</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Condition.NegativeSaturation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DICONDITION::dwNegativeSaturation']/*\"/>\t\n            <unmanaged>unsigned int dwNegativeSaturation</unmanaged>\t\n            <unmanaged-short>unsigned int dwNegativeSaturation</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.Condition.DeadBand\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DICONDITION::lDeadBand']/*\"/>\t\n            <unmanaged>int lDeadBand</unmanaged>\t\n            <unmanaged-short>int lDeadBand</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectInput.DeviceImage\">\n            <summary>\t\n            Carries information required to display a device image or an overlay image with a callout. This structure is passed to theIDirectInputDevice8::GetImageInfomethod as an array within aDIDEVICEIMAGEINFOHEADERstructure.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDEVICEIMAGEINFOW']/*\"/>\t\n            <msdn-id>ee416608</msdn-id>\t\n            <unmanaged>DIDEVICEIMAGEINFOW</unmanaged>\t\n            <unmanaged-short>DIDEVICEIMAGEINFOW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceImage.ImagePath\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDEVICEIMAGEINFOW::tszImagePath']/*\"/>\t\n            <unmanaged>wchar_t tszImagePath[260]</unmanaged>\t\n            <unmanaged-short>wchar_t tszImagePath</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceImage.Flags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDEVICEIMAGEINFOW::dwFlags']/*\"/>\t\n            <unmanaged>unsigned int dwFlags</unmanaged>\t\n            <unmanaged-short>unsigned int dwFlags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceImage.ViewID\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDEVICEIMAGEINFOW::dwViewID']/*\"/>\t\n            <unmanaged>unsigned int dwViewID</unmanaged>\t\n            <unmanaged-short>unsigned int dwViewID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceImage.RcOverlay\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDEVICEIMAGEINFOW::rcOverlay']/*\"/>\t\n            <unmanaged>RECT rcOverlay</unmanaged>\t\n            <unmanaged-short>RECT rcOverlay</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceImage.ObjID\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDEVICEIMAGEINFOW::dwObjID']/*\"/>\t\n            <unmanaged>unsigned int dwObjID</unmanaged>\t\n            <unmanaged-short>unsigned int dwObjID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceImage.ValidPts\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDEVICEIMAGEINFOW::dwcValidPts']/*\"/>\t\n            <unmanaged>unsigned int dwcValidPts</unmanaged>\t\n            <unmanaged-short>unsigned int dwcValidPts</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceImage.RcCalloutRect\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDEVICEIMAGEINFOW::rcCalloutRect']/*\"/>\t\n            <unmanaged>RECT rcCalloutRect</unmanaged>\t\n            <unmanaged-short>RECT rcCalloutRect</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.DeviceImage.TextAlign\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDEVICEIMAGEINFOW::dwTextAlign']/*\"/>\t\n            <unmanaged>unsigned int dwTextAlign</unmanaged>\t\n            <unmanaged-short>unsigned int dwTextAlign</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.DirectInput.DeviceImage.RgptCalloutLine\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDEVICEIMAGEINFOW::rgptCalloutLine']/*\"/>\t\n            <unmanaged>POINT rgptCalloutLine[5]</unmanaged>\t\n            <unmanaged-short>POINT rgptCalloutLine</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectInput.EffectEscape\">\n            <summary>\t\n            Used by theIDirectInputDevice8::EscapeandIDirectInputEffect::Escapemethods to pass hardware-specific data directly to the device driver.\t\n            </summary>\t\n            <remarks>\t\n            <p>Because each driver implements different escapes, it is the application's responsibility to ensure that it is talking to the correct driver by comparing the guidFFDriver member in the <see cref=\"T:SharpDX.DirectInput.DeviceInstance\"/> structure against the value the application is expecting.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIEFFESCAPE']/*\"/>\t\n            <msdn-id>ee416618</msdn-id>\t\n            <unmanaged>DIEFFESCAPE</unmanaged>\t\n            <unmanaged-short>DIEFFESCAPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectEscape.Size\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIEFFESCAPE::dwSize']/*\"/>\t\n            <unmanaged>unsigned int dwSize</unmanaged>\t\n            <unmanaged-short>unsigned int dwSize</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectEscape.Command\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIEFFESCAPE::dwCommand']/*\"/>\t\n            <unmanaged>unsigned int dwCommand</unmanaged>\t\n            <unmanaged-short>unsigned int dwCommand</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectEscape.InBufferPointer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIEFFESCAPE::lpvInBuffer']/*\"/>\t\n            <unmanaged>void* lpvInBuffer</unmanaged>\t\n            <unmanaged-short>void lpvInBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectEscape.InBufferSize\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIEFFESCAPE::cbInBuffer']/*\"/>\t\n            <unmanaged>unsigned int cbInBuffer</unmanaged>\t\n            <unmanaged-short>unsigned int cbInBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectEscape.OutBufferPointer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIEFFESCAPE::lpvOutBuffer']/*\"/>\t\n            <unmanaged>void* lpvOutBuffer</unmanaged>\t\n            <unmanaged-short>void lpvOutBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.EffectEscape.OutBufferSize\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIEFFESCAPE::cbOutBuffer']/*\"/>\t\n            <unmanaged>unsigned int cbOutBuffer</unmanaged>\t\n            <unmanaged-short>unsigned int cbOutBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectInput.ObjectData\">\n            <summary>\t\n            Contains buffered device information. This structure is used with theIDirectInputDevice8::GetDeviceDataand theIDirectInputDevice8::SendDeviceDatamethods.\t\n            </summary>\t\n            <remarks>\t\n            <p>The system time returned in <em>dwTimeStamp</em> comes from the same clock used by the Microsoft Win32 GetTickCount or timeGetTime functions, but it produces potentially more precise values. For example, on Microsoft Windows 95, the GetTickCount timer is updated only every 55 milliseconds, but the <em>dwTimeStamp</em> value is accurate to within 1 millisecond. Therefore, if you call GetTickCount and it returns n, and you then receive an event with a timestamp of n + n1, you cannot assume that the event took place exactly n1 milliseconds after the call to GetTickCount.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDEVICEOBJECTDATA']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.dideviceobjectdata</msdn-id>\t\n            <unmanaged>DIDEVICEOBJECTDATA</unmanaged>\t\n            <unmanaged-short>DIDEVICEOBJECTDATA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ObjectData.Offset\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDEVICEOBJECTDATA::dwOfs']/*\"/>\t\n            <unmanaged>unsigned int dwOfs</unmanaged>\t\n            <unmanaged-short>unsigned int dwOfs</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ObjectData.Data\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDEVICEOBJECTDATA::dwData']/*\"/>\t\n            <unmanaged>unsigned int dwData</unmanaged>\t\n            <unmanaged-short>unsigned int dwData</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ObjectData.TimeStamp\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDEVICEOBJECTDATA::dwTimeStamp']/*\"/>\t\n            <unmanaged>unsigned int dwTimeStamp</unmanaged>\t\n            <unmanaged-short>unsigned int dwTimeStamp</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ObjectData.Sequence\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDEVICEOBJECTDATA::dwSequence']/*\"/>\t\n            <unmanaged>unsigned int dwSequence</unmanaged>\t\n            <unmanaged-short>unsigned int dwSequence</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ObjectData.AppDataPointer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIDEVICEOBJECTDATA::uAppData']/*\"/>\t\n            <unmanaged>UINT_PTR uAppData</unmanaged>\t\n            <unmanaged-short>UINT_PTR uAppData</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectInput.PropertyCalibration\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIPROPCAL']/*\"/>\t\n            <unmanaged>DIPROPCAL</unmanaged>\t\n            <unmanaged-short>DIPROPCAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.PropertyCalibration.Header\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIPROPCAL::diph']/*\"/>\t\n            <unmanaged>DIPROPHEADER diph</unmanaged>\t\n            <unmanaged-short>DIPROPHEADER diph</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.PropertyCalibration.Min\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIPROPCAL::lMin']/*\"/>\t\n            <unmanaged>int lMin</unmanaged>\t\n            <unmanaged-short>int lMin</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.PropertyCalibration.Center\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIPROPCAL::lCenter']/*\"/>\t\n            <unmanaged>int lCenter</unmanaged>\t\n            <unmanaged-short>int lCenter</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.PropertyCalibration.Max\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIPROPCAL::lMax']/*\"/>\t\n            <unmanaged>int lMax</unmanaged>\t\n            <unmanaged-short>int lMax</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectInput.PropertyGuidAndPath\">\n            <summary>\t\n            Used to access properties whose values represent a globally unique identifier (<see cref=\"T:System.Guid\"/>) and a path.\t\n            </summary>\t\n            <remarks>\t\n            <p>The diph member must be initialized as follows:</p> <table> <tr><th>Member \t\n            </th><th>Value \t\n            </th></tr> <tr><td> dwSize \t\n            </td><td> sizeof(<see cref=\"T:SharpDX.DirectInput.PropertyGuidAndPath\"/>). \t\n            </td></tr> <tr><td> dwHeaderSize \t\n            </td><td> sizeof(<see cref=\"T:SharpDX.DirectInput.PropertyHeader\"/>). \t\n            </td></tr> <tr><td> dwObj \t\n            </td><td>For this structure, this member must be set to 0.\t\n            </td></tr> <tr><td> dwHow \t\n            </td><td>Specifies how the  dwObj member should be interpreted. For this structure,  dwHow should be <see cref=\"F:SharpDX.DirectInput.PropertyHowType.Device\"/>. \t\n            </td></tr> </table> <p>The <see cref=\"F:SharpDX.DirectInput.PropertyGuids.Guidandpath\"/> property associated with the <see cref=\"T:SharpDX.DirectInput.PropertyGuidAndPath\"/> structure enables advanced applications to perform operations on a Human Interface Device (human interface device) that are not supported by DirectInput.</p> <p>The application calls the <see cref=\"M:SharpDX.DirectInput.Device.GetProperty(System.IntPtr,System.IntPtr)\"/> method with <see cref=\"F:SharpDX.DirectInput.PropertyGuids.Guidandpath\"/> as the rguidProp parameter. The class <see cref=\"T:System.Guid\"/> of the device is returned in the guidClass member of the <see cref=\"T:SharpDX.DirectInput.PropertyGuidAndPath\"/> structure, and the device interface path is returned in the wszPath member. The application can then call the CreateFile function on this path to access the device directly.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIPROPGUIDANDPATH']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.dipropguidandpath</msdn-id>\t\n            <unmanaged>DIPROPGUIDANDPATH</unmanaged>\t\n            <unmanaged-short>DIPROPGUIDANDPATH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.PropertyGuidAndPath.Header\">\n            <summary>\t\n            <dd> <see cref=\"T:SharpDX.DirectInput.PropertyHeader\"/> structure. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIPROPGUIDANDPATH::diph']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.dipropguidandpath</msdn-id>\t\n            <unmanaged>DIPROPHEADER diph</unmanaged>\t\n            <unmanaged-short>DIPROPHEADER diph</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.PropertyGuidAndPath.GuidClass\">\n            <summary>\t\n            <dd> Class <see cref=\"T:System.Guid\"/> for the object.  </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIPROPGUIDANDPATH::guidClass']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.dipropguidandpath</msdn-id>\t\n            <unmanaged>GUID guidClass</unmanaged>\t\n            <unmanaged-short>GUID guidClass</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.PropertyGuidAndPath.Path\">\n            <summary>\t\n            <dd> Returned path for the object. This is a Unicode string.  </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIPROPGUIDANDPATH::wszPath']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.dipropguidandpath</msdn-id>\t\n            <unmanaged>wchar_t wszPath[260]</unmanaged>\t\n            <unmanaged-short>wchar_t wszPath</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectInput.PropertyHeader\">\n            <summary>\t\n            Serves as a header for all property structures.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIPROPHEADER']/*\"/>\t\n            <msdn-id>ee416638</msdn-id>\t\n            <unmanaged>DIPROPHEADER</unmanaged>\t\n            <unmanaged-short>DIPROPHEADER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.PropertyHeader.Size\">\n            <summary>\t\n            <dd> Size of the enclosing structure. This member must be initialized before the structure is used.  </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIPROPHEADER::dwSize']/*\"/>\t\n            <msdn-id>ee416638</msdn-id>\t\n            <unmanaged>unsigned int dwSize</unmanaged>\t\n            <unmanaged-short>unsigned int dwSize</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.PropertyHeader.HeaderSize\">\n            <summary>\t\n            <dd> Size of the <see cref=\"T:SharpDX.DirectInput.PropertyHeader\"/> structure.  </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIPROPHEADER::dwHeaderSize']/*\"/>\t\n            <msdn-id>ee416638</msdn-id>\t\n            <unmanaged>unsigned int dwHeaderSize</unmanaged>\t\n            <unmanaged-short>unsigned int dwHeaderSize</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.PropertyHeader.Obj\">\n            <summary>\t\n            <dd> Object for which the property is to be accessed. The value set for this member depends on the value specified in the dwHow member. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIPROPHEADER::dwObj']/*\"/>\t\n            <msdn-id>ee416638</msdn-id>\t\n            <unmanaged>unsigned int dwObj</unmanaged>\t\n            <unmanaged-short>unsigned int dwObj</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.PropertyHeader.Type\">\n            <summary>\t\n            <dd> Value that specifies how the dwObj member should be interpreted. This value can be one of the following: <dl> <dt><see cref=\"F:SharpDX.DirectInput.PropertyHowType.Device\"/></dt> <dd>The dwObj member must be 0. </dd> <dt><see cref=\"F:SharpDX.DirectInput.PropertyHowType.Byoffset\"/></dt> <dd>The dwObj member is the offset into the current data format of the object whose property is being accessed. </dd> <dt><see cref=\"F:SharpDX.DirectInput.PropertyHowType.Byusage\"/></dt> <dd>The dwObj member is the human interface device usage page and usage values in packed form. </dd> <dt><see cref=\"F:SharpDX.DirectInput.PropertyHowType.Byid\"/></dt> <dd>The dwObj member is the object type/instance identifier. This identifier is returned in the dwType member of the <see cref=\"T:SharpDX.DirectInput.DeviceObjectInstance\"/> structure returned from a previous call to the <see cref=\"M:SharpDX.DirectInput.Device.EnumObjects(SharpDX.FunctionCallback,System.IntPtr,System.Int32)\"/> member. </dd> </dl> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIPROPHEADER::dwHow']/*\"/>\t\n            <msdn-id>ee416638</msdn-id>\t\n            <unmanaged>DIPH dwHow</unmanaged>\t\n            <unmanaged-short>DIPH dwHow</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectInput.PropertyInt\">\n            <summary>\t\n            Used to access \t\n            DWORD properties.\t\n            </summary>\t\n            <remarks>\t\n            <p>The diph member must be initialized as follows: </p> <table> <tr><th>Member \t\n            </th><th>Value \t\n            </th></tr> <tr><td> dwSize \t\n            </td><td> sizeof(<see cref=\"T:SharpDX.DirectInput.PropertyInt\"/>) \t\n            </td></tr> <tr><td> dwHeaderSize \t\n            </td><td> sizeof(<see cref=\"T:SharpDX.DirectInput.PropertyHeader\"/>) \t\n            </td></tr> <tr><td> dwObj \t\n            </td><td><p>If the dwHow member is <see cref=\"F:SharpDX.DirectInput.PropertyHowType.Device\"/>, this member must be 0.</p> <p>If the dwHow member is <see cref=\"F:SharpDX.DirectInput.PropertyHowType.Byid\"/>, this member must be the identifier for the object whose property setting is to be set or retrieved. </p> <p>If the dwHow member is <see cref=\"F:SharpDX.DirectInput.PropertyHowType.Byoffset\"/>, this member must be a data format offset for the object whose property setting is to be set or retrieved. For example, if the c_dfDIMouse data format is selected, it must be one of the DIMOFS_* values.</p> <p>If the dwHow member is <see cref=\"F:SharpDX.DirectInput.PropertyHowType.Byusage\"/>, the device must be a Human Interface Device (human interface device). The device object will be identified by the HID usage page and usage values in packed form. </p> </td></tr> <tr><td> dwHow \t\n            </td><td>Specifies how the  dwObj member should be interpreted. See the preceding description of the  dwObj member for details.\t\n            </td></tr> </table>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIPROPDWORD']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.dipropdword</msdn-id>\t\n            <unmanaged>DIPROPDWORD</unmanaged>\t\n            <unmanaged-short>DIPROPDWORD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.PropertyInt.Header\">\n            <summary>\t\n            <dd> <see cref=\"T:SharpDX.DirectInput.PropertyHeader\"/> structure. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIPROPDWORD::diph']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.dipropdword</msdn-id>\t\n            <unmanaged>DIPROPHEADER diph</unmanaged>\t\n            <unmanaged-short>DIPROPHEADER diph</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.PropertyInt.Data\">\n            <summary>\t\n            <dd> Property-specific value being set or retrieved.  </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIPROPDWORD::dwData']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.dipropdword</msdn-id>\t\n            <unmanaged>unsigned int dwData</unmanaged>\t\n            <unmanaged-short>unsigned int dwData</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectInput.PropertyPointer\">\n            <summary>\t\n            Used in setting and retrieving data values of type <see cref=\"T:System.IntPtr\"/>. This is typically a value associated with an application-specific action associated with a device object in an action map, but can also be a function reference.\t\n            </summary>\t\n            <remarks>\t\n            <p>The diph member must be initialized as follows: </p> <table> <tr><th>Member \t\n            </th><th>Value \t\n            </th></tr> <tr><td> dwSize \t\n            </td><td> sizeof(<see cref=\"T:SharpDX.DirectInput.PropertyPointer\"/>) \t\n            </td></tr> <tr><td> dwHeaderSize \t\n            </td><td> sizeof(<see cref=\"T:SharpDX.DirectInput.PropertyHeader\"/>) \t\n            </td></tr> <tr><td> dwObj \t\n            </td><td><p>If the dwHow member is <see cref=\"F:SharpDX.DirectInput.PropertyHowType.Device\"/>, this member must be 0.</p> <p>If the dwHow member is <see cref=\"F:SharpDX.DirectInput.PropertyHowType.Byid\"/>, this member must be the identifier for the object whose property setting is to be set or retrieved. </p> <p>If the dwHow member is <see cref=\"F:SharpDX.DirectInput.PropertyHowType.Byoffset\"/>, this member must be a data format offset for the object whose property setting is to be set or retrieved. For example, if the c_dfDIMouse data format is selected, it must be one of the DIMOFS_* values.</p> <p>If the dwHow member is <see cref=\"F:SharpDX.DirectInput.PropertyHowType.Byusage\"/>, the device must be a Human Interface Device (human interface device). The device object will be identified by the HID usage page and usage values in packed form. </p> </td></tr> <tr><td> dwHow \t\n            </td><td>Specifies how the  dwObj member should be interpreted. See the preceding description of the  dwObj member for details. \t\n            </td></tr> </table>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIPROPPOINTER']/*\"/>\t\n            <msdn-id>ee416639</msdn-id>\t\n            <unmanaged>DIPROPPOINTER</unmanaged>\t\n            <unmanaged-short>DIPROPPOINTER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.PropertyPointer.Header\">\n            <summary>\t\n            <dd> <see cref=\"T:SharpDX.DirectInput.PropertyHeader\"/> structure. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIPROPPOINTER::diph']/*\"/>\t\n            <msdn-id>ee416639</msdn-id>\t\n            <unmanaged>DIPROPHEADER diph</unmanaged>\t\n            <unmanaged-short>DIPROPHEADER diph</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.PropertyPointer.Data\">\n            <summary>\t\n            <dd> Application-defined value of type <see cref=\"T:System.IntPtr\"/>, which represents the uAppData value (from an action map) that is associated with a device control.  </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIPROPPOINTER::uData']/*\"/>\t\n            <msdn-id>ee416639</msdn-id>\t\n            <unmanaged>UINT_PTR uData</unmanaged>\t\n            <unmanaged-short>UINT_PTR uData</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectInput.PropertyRange\">\n            <summary>\t\n            Contains information about the range of an object within a device. This structure is used with the <see cref=\"F:SharpDX.DirectInput.PropertyGuids.Range\"/> flag set in theIDirectInputDevice8::GetPropertyandIDirectInputDevice8::SetPropertymethods.\t\n            </summary>\t\n            <remarks>\t\n            <p>The diph member must be initialized as follows:</p> <table> <tr><th>Member\t\n            </th><th>Value\t\n            </th></tr> <tr><td> dwSize \t\n            </td><td> sizeof(<see cref=\"T:SharpDX.DirectInput.PropertyRange\"/>) \t\n            </td></tr> <tr><td> dwHeaderSize \t\n            </td><td> sizeof(<see cref=\"T:SharpDX.DirectInput.PropertyHeader\"/>) \t\n            </td></tr> <tr><td> dwObj \t\n            </td><td><p>If the dwHow member is <see cref=\"F:SharpDX.DirectInput.PropertyHowType.Device\"/>, this member must be 0.</p> <p>If the dwHow member is <see cref=\"F:SharpDX.DirectInput.PropertyHowType.Byid\"/>, this member must be the identifier for the object whose property setting is to be set or retrieved. </p> <p>If the dwHow member is <see cref=\"F:SharpDX.DirectInput.PropertyHowType.Byoffset\"/>, this member must be a data format offset for the object whose property setting is to be set or retrieved. For example, if the c_dfDIMouse data format is selected, it must be one of the DIMOFS_* values.Identifier of the object whose property is being retrieved or set. </p> <p>If the dwHow member is <see cref=\"F:SharpDX.DirectInput.PropertyHowType.Byusage\"/>, the device must be a Human Interface Device (human interface device). The device object will be identified by the HID usage page and usage values in packed form. </p> </td></tr> <tr><td> dwHow \t\n            </td><td>Specifies how the  dwObj member should be interpreted. See the preceding description of the  dwObj member for details.\t\n            </td></tr> </table> <p>The range values for devices whose ranges are unrestricted wraparound.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIPROPRANGE']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.diproprange</msdn-id>\t\n            <unmanaged>DIPROPRANGE</unmanaged>\t\n            <unmanaged-short>DIPROPRANGE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.PropertyRange.Header\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIPROPRANGE::diph']/*\"/>\t\n            <unmanaged>DIPROPHEADER diph</unmanaged>\t\n            <unmanaged-short>DIPROPHEADER diph</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.PropertyRange.Min\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIPROPRANGE::lMin']/*\"/>\t\n            <unmanaged>int lMin</unmanaged>\t\n            <unmanaged-short>int lMin</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.PropertyRange.Max\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIPROPRANGE::lMax']/*\"/>\t\n            <unmanaged>int lMax</unmanaged>\t\n            <unmanaged-short>int lMax</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectInput.PropertyString\">\n            <summary>\t\n            Gets and retrieves properties as strings.\t\n            </summary>\t\n            <remarks>\t\n            <p>The diph member must be initialized as follows:</p> <table> <tr><th>Member\t\n            </th><th>Value\t\n            </th></tr> <tr><td> dwSize \t\n            </td><td> sizeof(<see cref=\"T:SharpDX.DirectInput.PropertyString\"/>) \t\n            </td></tr> <tr><td> dwHeaderSize \t\n            </td><td> sizeof(<see cref=\"T:SharpDX.DirectInput.PropertyHeader\"/>) \t\n            </td></tr> <tr><td> dwObj \t\n            </td><td><p>If the dwHow member is <see cref=\"F:SharpDX.DirectInput.PropertyHowType.Device\"/>, this member must be 0.</p> <p>If the dwHow member is <see cref=\"F:SharpDX.DirectInput.PropertyHowType.Byid\"/>, this member must be the identifier for the object whose property setting is to be set or retrieved. </p> <p>If the dwHow member is <see cref=\"F:SharpDX.DirectInput.PropertyHowType.Byoffset\"/>, this member must be a data format offset for the object whose property setting is to be set or retrieved. For example, if the c_dfDIMouse data format is selected, it must be one of the DIMOFS_* values.</p> <p>If the dwHow member is <see cref=\"F:SharpDX.DirectInput.PropertyHowType.Byusage\"/>, the device must be a Human Interface Device (human interface device). The device object will be identified by the HID usage page and usage values in packed form. </p> </td></tr> <tr><td> dwHow \t\n            </td><td>Specifies how the  dwObj member should be interpreted. See the preceding description of the  dwObj member for details. \t\n            </td></tr> </table> <p>The <see cref=\"F:SharpDX.DirectInput.PropertyGuids.InstanceName\"/> and <see cref=\"F:SharpDX.DirectInput.PropertyGuids.Productname\"/> properties associated with the <see cref=\"T:SharpDX.DirectInput.PropertyString\"/> structure enable advanced applications to perform operations on a Human Interface Device (HID) that are not supported by DirectInput.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIPROPSTRING']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.dipropstring</msdn-id>\t\n            <unmanaged>DIPROPSTRING</unmanaged>\t\n            <unmanaged-short>DIPROPSTRING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.PropertyString.Header\">\n            <summary>\t\n            <dd> <see cref=\"T:SharpDX.DirectInput.PropertyHeader\"/> structure.  </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIPROPSTRING::diph']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.dipropstring</msdn-id>\t\n            <unmanaged>DIPROPHEADER diph</unmanaged>\t\n            <unmanaged-short>DIPROPHEADER diph</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.PropertyString.Text\">\n            <summary>\t\n            <dd> Unicode string that specifies or retrieves the property.  </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIPROPSTRING::wsz']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.dipropstring</msdn-id>\t\n            <unmanaged>wchar_t wsz[260]</unmanaged>\t\n            <unmanaged-short>wchar_t wsz</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectInput.RawConstantForce\">\n            <summary>\t\n            Contains type-specific information for effects that are marked as <see cref=\"F:SharpDX.DirectInput.EffectType.ConstantForce\"/>.<p>The structure describes a constant force effect.</p><p>A reference to a single <see cref=\"T:SharpDX.DirectInput.RawConstantForce\"/> structure for an effect is passed in the lpvTypeSpecificParams member of the <see cref=\"T:SharpDX.DirectInput.EffectParameters\"/> structure.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DICONSTANTFORCE']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.diconstantforce</msdn-id>\t\n            <unmanaged>DICONSTANTFORCE</unmanaged>\t\n            <unmanaged-short>DICONSTANTFORCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RawConstantForce.Magnitude\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DICONSTANTFORCE::lMagnitude']/*\"/>\t\n            <unmanaged>int lMagnitude</unmanaged>\t\n            <unmanaged-short>int lMagnitude</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectInput.RawCustomForce\">\n            <summary>\t\n            Contains type-specific information for effects that are marked as <see cref=\"F:SharpDX.DirectInput.EffectType.CustomForce\"/>.<p>The structure describes a custom or user-defined force.</p><p>A reference to a <see cref=\"T:SharpDX.DirectInput.RawCustomForce\"/> structure for an effect is passed in the lpvTypeSpecificParams member of the <see cref=\"T:SharpDX.DirectInput.EffectParameters\"/> structure.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DICUSTOMFORCE']/*\"/>\t\n            <msdn-id>ee416605</msdn-id>\t\n            <unmanaged>DICUSTOMFORCE</unmanaged>\t\n            <unmanaged-short>DICUSTOMFORCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RawCustomForce.Channels\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DICUSTOMFORCE::cChannels']/*\"/>\t\n            <unmanaged>unsigned int cChannels</unmanaged>\t\n            <unmanaged-short>unsigned int cChannels</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RawCustomForce.SamplePeriod\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DICUSTOMFORCE::dwSamplePeriod']/*\"/>\t\n            <unmanaged>unsigned int dwSamplePeriod</unmanaged>\t\n            <unmanaged-short>unsigned int dwSamplePeriod</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RawCustomForce.Samples\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DICUSTOMFORCE::cSamples']/*\"/>\t\n            <unmanaged>unsigned int cSamples</unmanaged>\t\n            <unmanaged-short>unsigned int cSamples</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RawCustomForce.ForceDataPointer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DICUSTOMFORCE::rglForceData']/*\"/>\t\n            <unmanaged>int* rglForceData</unmanaged>\t\n            <unmanaged-short>int rglForceData</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectInput.RawPeriodicForce\">\n            <summary>\t\n            Contains type-specific information for effects that are marked as <see cref=\"F:SharpDX.DirectInput.EffectType.Periodic\"/>.<p>The structure describes a periodic effect.</p><p>A reference to a single <see cref=\"T:SharpDX.DirectInput.RawPeriodicForce\"/> structure for an effect is passed in the lpvTypeSpecificParams member of the <see cref=\"T:SharpDX.DirectInput.EffectParameters\"/> structure.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>A device driver cannot provide support for all values in the  dwPhase member. In this case, the value is rounded off to the nearest supported value.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIPERIODIC']/*\"/>\t\n            <msdn-id>ee416634</msdn-id>\t\n            <unmanaged>DIPERIODIC</unmanaged>\t\n            <unmanaged-short>DIPERIODIC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RawPeriodicForce.Magnitude\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIPERIODIC::dwMagnitude']/*\"/>\t\n            <unmanaged>unsigned int dwMagnitude</unmanaged>\t\n            <unmanaged-short>unsigned int dwMagnitude</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RawPeriodicForce.Offset\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIPERIODIC::lOffset']/*\"/>\t\n            <unmanaged>int lOffset</unmanaged>\t\n            <unmanaged-short>int lOffset</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RawPeriodicForce.Phase\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIPERIODIC::dwPhase']/*\"/>\t\n            <unmanaged>unsigned int dwPhase</unmanaged>\t\n            <unmanaged-short>unsigned int dwPhase</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RawPeriodicForce.Period\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIPERIODIC::dwPeriod']/*\"/>\t\n            <unmanaged>unsigned int dwPeriod</unmanaged>\t\n            <unmanaged-short>unsigned int dwPeriod</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectInput.RawRampForce\">\n            <summary>\t\n            Contains type-specific information for effects that are marked as <see cref=\"F:SharpDX.DirectInput.EffectType.RampForce\"/>. The structure describes a ramp force effect.<p>A reference to a single <see cref=\"T:SharpDX.DirectInput.RawRampForce\"/> structure for an effect is passed in the lpvTypeSpecificParams member of the <see cref=\"T:SharpDX.DirectInput.EffectParameters\"/> structure.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The dwDuration for a ramp force effect cannot be INFINITE.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIRAMPFORCE']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.dirampforce</msdn-id>\t\n            <unmanaged>DIRAMPFORCE</unmanaged>\t\n            <unmanaged-short>DIRAMPFORCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RawRampForce.Start\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIRAMPFORCE::lStart']/*\"/>\t\n            <unmanaged>int lStart</unmanaged>\t\n            <unmanaged-short>int lStart</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectInput.RawRampForce.End\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DIRAMPFORCE::lEnd']/*\"/>\t\n            <unmanaged>int lEnd</unmanaged>\t\n            <unmanaged-short>int lEnd</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectInput.InputRange\">\n            <summary>\n            Structure that describes a range value between a minimum and a maximum\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.InputRange.Minimum\">\n            <summary>\n            Minimum value of this range\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.InputRange.Maximum\">\n            <summary>\n            Maximum value of this range\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.DataObjectFormat.Name\">\n            <summary>\n            Name of this DataObjectFormat. Default is using field name.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.DataObjectFormat.Guid\">\n            <summary>\n            Gets or sets Guid for the axis, button, or other input source. When requesting a data format, making this member empty indicates that any type of object is permissible. \n            </summary>\n            <value>The GUID.</value>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.DataObjectFormat.Offset\">\n            <summary>\n            Gets or sets the field offset. This is used internally.\n            </summary>\n            <value>The offset.</value>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.DataObjectFormat.TypeFlags\">\n            <summary>\n            Gets or sets the device type that describes the object. \n            </summary>\n            <value>The type.</value>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.DataObjectFormat.InstanceNumber\">\n            <summary>\n            Gets or sets the instance number. Setting -1 is applied to any object instance.\n            </summary>\n            <value>The instance number.</value>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.DataObjectFormat.Flags\">\n            <summary>\n            Gets or sets the extra flags used to describe the data format.\n            </summary>\n            <value>The flags.</value>\n        </member>\n        <member name=\"T:SharpDX.DirectInput.NamespaceDoc\">\n            <summary>\n            The <see cref=\"N:SharpDX.DirectInput\"/> namespace provides a managed DirectInput API.\n            </summary>\n            <msdn-id>ee416842</msdn-id>\n            <unmanaged>DirectInput</unmanaged>\t\n            <unmanaged-short>DirectInput</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectInput.ObjectDataFormatFlags\">\n            <summary>\n            Flags for a dataformat.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ObjectDataFormatFlags.None\">\n            <summary>\n            The dataformat doesn't report any specific information.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ObjectDataFormatFlags.Acceleration\">\n            <summary>\n            The dataformat must report acceleration information.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ObjectDataFormatFlags.Force\">\n            <summary>\n            The dataformat must report force information.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ObjectDataFormatFlags.Position\">\n            <summary>\n            The dataformat must report position information.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectInput.ObjectDataFormatFlags.Velocity\">\n            <summary>\n            The dataformat must report velocity information.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.DirectInput.ObjectProperties\">\n            <summary>\n            Properties associated to an Object.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.ObjectProperties.DeadZone\">\n            <summary>\n            Gets or sets the dead zone of a joystick, in the range from 0 through 10,000, where 0 indicates that there is no dead zone, 5,000 indicates that the dead zone extends over 50 percent of the physical range of the axis on both sides of center, and 10,000 indicates that the entire physical range of the axis is dead. When the axis is within the dead zone, it is reported as being at the center of its range.\n            </summary>\n            <value>The dead zone.</value>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.ObjectProperties.Granularity\">\n            <summary>\n            Gets the input granularity. Granularity represents the smallest distance over which the object reports movement. Most axis objects have a granularity of one; that is, all values are possible. Some axes have a larger granularity. For example, the wheel axis on a mouse can have a granularity of 20; that is, all reported changes in position are multiples of 20. In other words, when the user turns the wheel slowly, the device reports a position of 0, then 20, then 40, and so on. This is a read-only property.\n            </summary>\n            <value>The granularity.</value>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.ObjectProperties.LogicalRange\">\n            <summary>\n            Gets the range of the raw data returned for axes on a human interface device. Devices can return negative values.\n            </summary>\n            <value>The logical range.</value>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.ObjectProperties.PhysicalRange\">\n            <summary>\n            Gets Retrieves the range of data for axes as suggested by the manufacturer of a human interface device. Values can be negative. Normally DirectInput returns values from 0 through 0xFFFF, but the range can be made to conform to the manufacturer's suggested range by using <see cref=\"P:SharpDX.DirectInput.ObjectProperties.Range\"/>.\n            </summary>\n            <value>The physical range.</value>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.ObjectProperties.Range\">\n            <summary>\n            Gets the range of values an object can possibly report. For some devices, this is a read-only property.\n            </summary>\n            <value>The range.</value>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.ObjectProperties.Saturation\">\n            <summary>\n            Gets or sets the saturation zones of a joystick, in the range from 0 through 10,000. The saturation level is the point at which the axis is considered to be at its most extreme position. For example, if the saturation level is set to 9,500, the axis reaches the extreme of its range when it has moved 95 percent of the physical distance from its center position (or from the dead zone).\n            </summary>\n            <value>The saturation.</value>\n        </member>\n        <member name=\"T:SharpDX.DirectInput.PeriodicForce\">\n            <summary>\n            This class describes a Periodic force effect. \n            It is passed in the <see cref=\"P:SharpDX.DirectInput.EffectParameters.Parameters\"/> of the <see cref=\"T:SharpDX.DirectInput.EffectParameters\"/> structure.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.DirectInput.PeriodicForce.MarshalFrom(System.Int32,System.IntPtr)\">\n            <summary>\n            Marshal this class from an unamanaged buffer.\n            </summary>\n            <param name=\"bufferSize\">The size of the unmanaged buffer.</param>\n            <param name=\"bufferPointer\">The pointer to the unmanaged buffer.</param>\n            <returns>An instance of TypeSpecificParameters or null</returns>\n        </member>\n        <member name=\"M:SharpDX.DirectInput.PeriodicForce.MarshalTo\">\n            <summary>\n            Marshals this class to its native/unmanaged counterpart.\n            </summary>\n            <returns>A pointer to an allocated buffer containing the unmanaged structure.</returns>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.PeriodicForce.Magnitude\">\n            <summary>\n            Gets or sets the magnitude.\n            Magnitude of the effect, in the range from 0 through 10,000. If an envelope is applied to this effect, the value represents the magnitude of the sustain. If no envelope is applied, the value represents the amplitude of the entire effect. \n            </summary>\n            <value>The magnitude.</value>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.PeriodicForce.Offset\">\n            <summary>\n            Gets or sets the offset of the effect.\n            The range of forces generated by the effect is lOffset minus dwMagnitude to lOffset plus dwMagnitude. The value of the lOffset member is also the baseline for any envelope that is applied to the effect.\n            </summary>\n            <value>The offset.</value>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.PeriodicForce.Phase\">\n            <summary>\n            Gets or sets the phase.\n            Position in the cycle of the periodic effect at which playback begins, in the range from 0 through 35,999. A device driver cannot provide support for all values in the dwPhase member. In this case, the value is rounded off to the nearest supported value. \n            </summary>\n            <value>The phase.</value>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.PeriodicForce.Period\">\n            <summary>\n            Gets or sets the period of the effect, in microseconds. \n            </summary>\n            <value>The period.</value>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.PeriodicForce.Size\">\n            <summary>\n            Gets the size of this specific parameter.\n            </summary>\n            <value>The size.</value>\n        </member>\n        <member name=\"T:SharpDX.DirectInput.RampForce\">\n            <summary>\n            This class describes a Ramp force effect. \n            It is passed in the <see cref=\"P:SharpDX.DirectInput.EffectParameters.Parameters\"/> of the <see cref=\"T:SharpDX.DirectInput.EffectParameters\"/> structure.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.DirectInput.RampForce.MarshalFrom(System.Int32,System.IntPtr)\">\n            <summary>\n            Marshal this class from an unamanaged buffer.\n            </summary>\n            <param name=\"bufferSize\">The size of the unmanaged buffer.</param>\n            <param name=\"bufferPointer\">The pointer to the unmanaged buffer.</param>\n            <returns>An instance of TypeSpecificParameters or null</returns>\n        </member>\n        <member name=\"M:SharpDX.DirectInput.RampForce.MarshalTo\">\n            <summary>\n            Marshals this class to its native/unmanaged counterpart.\n            </summary>\n            <returns>A pointer to an allocated buffer containing the unmanaged structure.</returns>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.RampForce.Start\">\n            <summary>\n            Gets or sets the magnitude at the start of the effect, in the range from - 10,000 through 10,000. \n            </summary>\n            <value>The start.</value>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.RampForce.End\">\n            <summary>\n            Gets or sets the magnitude at the end of the effect, in the range from - 10,000 through 10,000. \n            </summary>\n            <value>The end.</value>\n        </member>\n        <member name=\"P:SharpDX.DirectInput.RampForce.Size\">\n            <summary>\n            Gets the size of this specific parameter.\n            </summary>\n            <value>The size.</value>\n        </member>\n    </members>\n</doc>\n"
  },
  {
    "path": "3rd/SharpDX/SharpDX.DirectSound.xml",
    "content": "<?xml version=\"1.0\"?>\n<doc>\n    <assembly>\n        <name>SharpDX.DirectSound</name>\n    </assembly>\n    <members>\n        <member name=\"T:SharpDX.DirectSound.AssemblyDoc\">\n            <summary>\n            The <see cref=\"A:SharpDX.DirectSound\"/> assembly provides managed DirectSound API.\n            </summary>\n            <msdn-id>ee416960</msdn-id>\n            <unmanaged>DirectSound</unmanaged>\t\n            <unmanaged-short>DirectSound</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectSound.Buffer3DSettings\">\n            <summary>\t\n            The <see cref=\"T:SharpDX.DirectSound.Buffer3DSettings\"/> structure contains all information necessary to uniquely describe the location, orientation, and motion of a 3D sound buffer. This structure is used with theIDirectSound3DBuffer8::GetAllParametersandIDirectSound3DBuffer8::SetAllParametersmethods.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DS3DBUFFER']/*\"/>\t\n            <msdn-id>ee416816</msdn-id>\t\n            <unmanaged>DS3DBUFFER</unmanaged>\t\n            <unmanaged-short>DS3DBUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.Buffer3DSettings.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectSound.Buffer3DSettings\"/> class.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Buffer3DSettings.Size\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DS3DBUFFER::dwSize']/*\"/>\t\n            <unmanaged>unsigned int dwSize</unmanaged>\t\n            <unmanaged-short>unsigned int dwSize</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Buffer3DSettings.Position\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DS3DBUFFER::vPosition']/*\"/>\t\n            <unmanaged>D3DVECTOR vPosition</unmanaged>\t\n            <unmanaged-short>D3DVECTOR vPosition</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Buffer3DSettings.Velocity\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DS3DBUFFER::vVelocity']/*\"/>\t\n            <unmanaged>D3DVECTOR vVelocity</unmanaged>\t\n            <unmanaged-short>D3DVECTOR vVelocity</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Buffer3DSettings.InsideConeAngle\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DS3DBUFFER::dwInsideConeAngle']/*\"/>\t\n            <unmanaged>unsigned int dwInsideConeAngle</unmanaged>\t\n            <unmanaged-short>unsigned int dwInsideConeAngle</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Buffer3DSettings.OutsideConeAngle\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DS3DBUFFER::dwOutsideConeAngle']/*\"/>\t\n            <unmanaged>unsigned int dwOutsideConeAngle</unmanaged>\t\n            <unmanaged-short>unsigned int dwOutsideConeAngle</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Buffer3DSettings.ConeOrientation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DS3DBUFFER::vConeOrientation']/*\"/>\t\n            <unmanaged>D3DVECTOR vConeOrientation</unmanaged>\t\n            <unmanaged-short>D3DVECTOR vConeOrientation</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Buffer3DSettings.ConeOutsideVolume\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DS3DBUFFER::lConeOutsideVolume']/*\"/>\t\n            <unmanaged>int lConeOutsideVolume</unmanaged>\t\n            <unmanaged-short>int lConeOutsideVolume</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Buffer3DSettings.MinDistance\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DS3DBUFFER::flMinDistance']/*\"/>\t\n            <unmanaged>float flMinDistance</unmanaged>\t\n            <unmanaged-short>float flMinDistance</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Buffer3DSettings.MaxDistance\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DS3DBUFFER::flMaxDistance']/*\"/>\t\n            <unmanaged>float flMaxDistance</unmanaged>\t\n            <unmanaged-short>float flMaxDistance</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Buffer3DSettings.Mode\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DS3DBUFFER::dwMode']/*\"/>\t\n            <unmanaged>unsigned int dwMode</unmanaged>\t\n            <unmanaged-short>unsigned int dwMode</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectSound.Capabilities\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCAPS']/*\"/>\t\n            <unmanaged>DSCAPS</unmanaged>\t\n            <unmanaged-short>DSCAPS</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.Capabilities.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectSound.Capabilities\"/> class.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Capabilities.Size\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCAPS::dwSize']/*\"/>\t\n            <unmanaged>unsigned int dwSize</unmanaged>\t\n            <unmanaged-short>unsigned int dwSize</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Capabilities.Flags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCAPS::dwFlags']/*\"/>\t\n            <unmanaged>DSCAPS_FLAGS dwFlags</unmanaged>\t\n            <unmanaged-short>DSCAPS_FLAGS dwFlags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Capabilities.MinSecondarySampleRate\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCAPS::dwMinSecondarySampleRate']/*\"/>\t\n            <unmanaged>unsigned int dwMinSecondarySampleRate</unmanaged>\t\n            <unmanaged-short>unsigned int dwMinSecondarySampleRate</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Capabilities.MaxSecondarySampleRate\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCAPS::dwMaxSecondarySampleRate']/*\"/>\t\n            <unmanaged>unsigned int dwMaxSecondarySampleRate</unmanaged>\t\n            <unmanaged-short>unsigned int dwMaxSecondarySampleRate</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Capabilities.PrimaryBuffers\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCAPS::dwPrimaryBuffers']/*\"/>\t\n            <unmanaged>unsigned int dwPrimaryBuffers</unmanaged>\t\n            <unmanaged-short>unsigned int dwPrimaryBuffers</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Capabilities.MaxHardwareMixingAllBuffers\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCAPS::dwMaxHwMixingAllBuffers']/*\"/>\t\n            <unmanaged>unsigned int dwMaxHwMixingAllBuffers</unmanaged>\t\n            <unmanaged-short>unsigned int dwMaxHwMixingAllBuffers</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Capabilities.MaxHardwareMixingStaticBuffers\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCAPS::dwMaxHwMixingStaticBuffers']/*\"/>\t\n            <unmanaged>unsigned int dwMaxHwMixingStaticBuffers</unmanaged>\t\n            <unmanaged-short>unsigned int dwMaxHwMixingStaticBuffers</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Capabilities.MaxHardwareMixingStreamingBuffers\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCAPS::dwMaxHwMixingStreamingBuffers']/*\"/>\t\n            <unmanaged>unsigned int dwMaxHwMixingStreamingBuffers</unmanaged>\t\n            <unmanaged-short>unsigned int dwMaxHwMixingStreamingBuffers</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Capabilities.FreeHardwareMixingAllBuffers\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCAPS::dwFreeHwMixingAllBuffers']/*\"/>\t\n            <unmanaged>unsigned int dwFreeHwMixingAllBuffers</unmanaged>\t\n            <unmanaged-short>unsigned int dwFreeHwMixingAllBuffers</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Capabilities.FreeHardwareMixingStaticBuffers\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCAPS::dwFreeHwMixingStaticBuffers']/*\"/>\t\n            <unmanaged>unsigned int dwFreeHwMixingStaticBuffers</unmanaged>\t\n            <unmanaged-short>unsigned int dwFreeHwMixingStaticBuffers</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Capabilities.FreeHardwareMixingStreamingBuffers\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCAPS::dwFreeHwMixingStreamingBuffers']/*\"/>\t\n            <unmanaged>unsigned int dwFreeHwMixingStreamingBuffers</unmanaged>\t\n            <unmanaged-short>unsigned int dwFreeHwMixingStreamingBuffers</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Capabilities.MaxHardware3DAllBuffers\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCAPS::dwMaxHw3DAllBuffers']/*\"/>\t\n            <unmanaged>unsigned int dwMaxHw3DAllBuffers</unmanaged>\t\n            <unmanaged-short>unsigned int dwMaxHw3DAllBuffers</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Capabilities.MaxHardware3DStaticBuffers\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCAPS::dwMaxHw3DStaticBuffers']/*\"/>\t\n            <unmanaged>unsigned int dwMaxHw3DStaticBuffers</unmanaged>\t\n            <unmanaged-short>unsigned int dwMaxHw3DStaticBuffers</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Capabilities.MaxHardware3DStreamingBuffers\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCAPS::dwMaxHw3DStreamingBuffers']/*\"/>\t\n            <unmanaged>unsigned int dwMaxHw3DStreamingBuffers</unmanaged>\t\n            <unmanaged-short>unsigned int dwMaxHw3DStreamingBuffers</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Capabilities.FreeHardware3DAllBuffers\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCAPS::dwFreeHw3DAllBuffers']/*\"/>\t\n            <unmanaged>unsigned int dwFreeHw3DAllBuffers</unmanaged>\t\n            <unmanaged-short>unsigned int dwFreeHw3DAllBuffers</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Capabilities.FreeHardware3DStaticBuffers\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCAPS::dwFreeHw3DStaticBuffers']/*\"/>\t\n            <unmanaged>unsigned int dwFreeHw3DStaticBuffers</unmanaged>\t\n            <unmanaged-short>unsigned int dwFreeHw3DStaticBuffers</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Capabilities.FreeHardware3DStreamingBuffers\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCAPS::dwFreeHw3DStreamingBuffers']/*\"/>\t\n            <unmanaged>unsigned int dwFreeHw3DStreamingBuffers</unmanaged>\t\n            <unmanaged-short>unsigned int dwFreeHw3DStreamingBuffers</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Capabilities.TotalHardwareMemBytes\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCAPS::dwTotalHwMemBytes']/*\"/>\t\n            <unmanaged>unsigned int dwTotalHwMemBytes</unmanaged>\t\n            <unmanaged-short>unsigned int dwTotalHwMemBytes</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Capabilities.FreeHardwareMemBytes\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCAPS::dwFreeHwMemBytes']/*\"/>\t\n            <unmanaged>unsigned int dwFreeHwMemBytes</unmanaged>\t\n            <unmanaged-short>unsigned int dwFreeHwMemBytes</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Capabilities.MaxContigFreeHardwareMemBytes\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCAPS::dwMaxContigFreeHwMemBytes']/*\"/>\t\n            <unmanaged>unsigned int dwMaxContigFreeHwMemBytes</unmanaged>\t\n            <unmanaged-short>unsigned int dwMaxContigFreeHwMemBytes</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Capabilities.UnlockTransferRateHardwareBuffers\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCAPS::dwUnlockTransferRateHwBuffers']/*\"/>\t\n            <unmanaged>unsigned int dwUnlockTransferRateHwBuffers</unmanaged>\t\n            <unmanaged-short>unsigned int dwUnlockTransferRateHwBuffers</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Capabilities.PlayCpuOverheadSwBuffers\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCAPS::dwPlayCpuOverheadSwBuffers']/*\"/>\t\n            <unmanaged>unsigned int dwPlayCpuOverheadSwBuffers</unmanaged>\t\n            <unmanaged-short>unsigned int dwPlayCpuOverheadSwBuffers</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Capabilities.Reserved1\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCAPS::dwReserved1']/*\"/>\t\n            <unmanaged>unsigned int dwReserved1</unmanaged>\t\n            <unmanaged-short>unsigned int dwReserved1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Capabilities.Reserved2\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCAPS::dwReserved2']/*\"/>\t\n            <unmanaged>unsigned int dwReserved2</unmanaged>\t\n            <unmanaged-short>unsigned int dwReserved2</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectSound.CaptureBuffer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundCaptureBuffer8']/*\"/>\t\n            <unmanaged>IDirectSoundCaptureBuffer8</unmanaged>\t\n            <unmanaged-short>IDirectSoundCaptureBuffer8</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectSound.CaptureBufferBase\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundCaptureBuffer']/*\"/>\t\n            <unmanaged>IDirectSoundCaptureBuffer</unmanaged>\t\n            <unmanaged-short>IDirectSoundCaptureBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.CaptureBufferBase.Lock(System.Int32,System.Int32,SharpDX.DirectSound.LockFlags,SharpDX.DataStream@)\">\n            <summary>\t\n            The Lock method locks a portion of the buffer. Locking the buffer returns references into the buffer, allowing the application to read or write audio data into memory.\t\n            </summary>\t\n            <param name=\"offset\">Offset, in bytes, from the start of the buffer to the point where the lock begins. </param>\n            <param name=\"sizeBytes\">Size, in bytes, of the portion of the buffer to lock. Because the buffer is conceptually circular, this number can exceed the number of bytes between dwOffset and the end of the buffer. </param>\n            <param name=\"flags\"> Flags modifying the lock event. The following flags are defined:  ValueDescription DSBLOCK_FROMWRITECURSORStart the lock at the write cursor. The dwOffset parameter is ignored. DSBLOCK_ENTIREBUFFERLock the entire buffer. The dwBytes parameter is ignored.  </param>\n            <param name=\"secondPart\"> Address of a variable that receives a pointer to the second locked part of the capture buffer. If NULL is returned, the ppvAudioPtr1 parameter points to the entire locked portion of the capture buffer. </param>\n            <returns>Address of a variable that receives a pointer to the first locked part of the buffer.</returns>\n            <unmanaged>HRESULT IDirectSoundCaptureBuffer::Lock([None] int dwOffset,[None] int dwBytes,[Out] void** ppvAudioPtr1,[Out] int* pdwAudioBytes1,[Out] void** ppvAudioPtr2,[Out, Optional] int* pdwAudioBytes2,[None] int dwFlags)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectSound.CaptureBufferBase.Unlock(SharpDX.DataStream,SharpDX.DataStream)\">\n            <summary>\t\n            The Unlock method releases a locked sound buffer.\t\n            </summary>\t\n            <param name=\"dataPart1\"> Address of the value retrieved in the ppvAudioPtr1 parameter of the {{Lock}} method. </param>\n            <param name=\"dataPart2\"> Address of the value retrieved in the ppvAudioPtr2 parameter of the IDirectSoundBuffer8::Lock method. </param>\n            <returns>No documentation.</returns>\n            <unmanaged>HRESULT IDirectSoundBuffer::Unlock([In, Buffer] void* pvAudioPtr1,[None] int dwAudioBytes1,[In, Buffer, Optional] void* pvAudioPtr2,[None] int dwAudioBytes2)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectSound.CaptureBufferBase.Read``1(``0[],System.Int32,SharpDX.DirectSound.LockFlags)\">\n            <summary>\n            Writes data to the buffer.\n            </summary>\n            <returns />\n        </member>\n        <member name=\"M:SharpDX.DirectSound.CaptureBufferBase.Read``1(``0[],System.Int32,System.Int32,System.Int32,SharpDX.DirectSound.LockFlags)\">\n            <summary>\n            Writes data to the buffer.\n            </summary>\n            <returns />\n        </member>\n        <member name=\"M:SharpDX.DirectSound.CaptureBufferBase.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectSound.CaptureBufferBase\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.CaptureBufferBase.op_Explicit(System.IntPtr)~SharpDX.DirectSound.CaptureBufferBase\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.DirectSound.CaptureBufferBase\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.DirectSound.CaptureBufferBase.GetCapabilities(SharpDX.DirectSound.CaptureBufferCapabilities@)\">\n            <summary>\t\n            The GetCaps method retrieves the capabilities of the buffer.\t\n            </summary>\t\n            <param name=\"dSCBCapsRef\"><dd> Pointer to a <see cref=\"T:SharpDX.DirectSound.CaptureBufferCapabilities\"/> structure that receives information about the capture buffer. On input, the dwSize member must specify the size of the structure in bytes. </dd></param>\t\n            <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be one of the following error values: </p> <table> <tr><td>Return code</td></tr> <tr><td>DSERR_INVALIDPARAM </td></tr> <tr><td>DSERR_UNSUPPORTED </td></tr> <tr><td>DSERR_OUTOFMEMORY </td></tr> </table></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundCaptureBuffer::GetCaps']/*\"/>\t\n            <msdn-id>ee418164</msdn-id>\t\n            <unmanaged>HRESULT IDirectSoundCaptureBuffer::GetCaps([Out] DSCBCAPS* pDSCBCaps)</unmanaged>\t\n            <unmanaged-short>IDirectSoundCaptureBuffer::GetCaps</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.CaptureBufferBase.GetCurrentPosition(System.Int32@,System.Int32@)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"apturePositionRef\">No documentation.</param>\t\n            <param name=\"eadPositionRef\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundCaptureBuffer::GetCurrentPosition']/*\"/>\t\n            <unmanaged>HRESULT IDirectSoundCaptureBuffer::GetCurrentPosition([Out, Optional] unsigned int* pdwCapturePosition,[Out, Optional] unsigned int* pdwReadPosition)</unmanaged>\t\n            <unmanaged-short>IDirectSoundCaptureBuffer::GetCurrentPosition</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.CaptureBufferBase.GetFormat(System.IntPtr,System.Int32,System.Int32@)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"wfxFormatRef\">No documentation.</param>\t\n            <param name=\"sizeAllocated\">No documentation.</param>\t\n            <param name=\"izeWrittenRef\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundCaptureBuffer::GetFormat']/*\"/>\t\n            <unmanaged>HRESULT IDirectSoundCaptureBuffer::GetFormat([In] void* pwfxFormat,[In] unsigned int dwSizeAllocated,[Out, Optional] unsigned int* pdwSizeWritten)</unmanaged>\t\n            <unmanaged-short>IDirectSoundCaptureBuffer::GetFormat</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.CaptureBufferBase.GetCaptureStatus(SharpDX.DirectSound.CaptureBufferStatusFlags@)\">\n            <summary>\t\n            The GetStatus method retrieves the status of the capture buffer.\t\n            </summary>\t\n            <param name=\"tatusRef\"><dd> Address of a variable that receives the status of the capture buffer. The status can be set to one or more of the following:<table> <tr><td>Value</td><td>Description</td></tr> <tr><td><see cref=\"F:SharpDX.DirectSound.CaptureBufferStatusFlags.Capturing\"/></td><td>The buffer is capturing audio data.</td></tr> <tr><td><see cref=\"F:SharpDX.DirectSound.CaptureBufferStatusFlags.Looping\"/></td><td>The buffer is looping.</td></tr> </table> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be DSERR_INVALIDPARAM.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundCaptureBuffer::GetStatus']/*\"/>\t\n            <msdn-id>ee418174</msdn-id>\t\n            <unmanaged>HRESULT IDirectSoundCaptureBuffer::GetStatus([Out] DSCBSTATUS_FLAGS* pdwStatus)</unmanaged>\t\n            <unmanaged-short>IDirectSoundCaptureBuffer::GetStatus</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.CaptureBufferBase.Lock(System.Int32,System.Int32,System.IntPtr@,System.Int32@,System.IntPtr@,System.Int32@,System.Int32)\">\n            <summary>\t\n            The Lock method locks a portion of the buffer. Locking the buffer returns references into the buffer, allowing the application to read or write audio data into memory.\t\n            </summary>\t\n            <param name=\"offset\"><dd> Offset, in bytes, from the start of the buffer to the point where the lock begins. </dd></param>\t\n            <param name=\"bytes\"><dd> Size, in bytes, of the portion of the buffer to lock. Because the buffer is conceptually circular, this number can exceed the number of bytes between dwOffset and the end of the buffer. </dd></param>\t\n            <param name=\"dioPtr1Out\"><dd> Address of a variable that receives a reference to the first locked part of the buffer. </dd></param>\t\n            <param name=\"udioBytes1Ref\"><dd> Address of a variable that receives the number of bytes in the block at ppvAudioPtr1. If this value is less than dwBytes, the lock has wrapped and ppvAudioPtr2 points to a second block of data at the beginning of the buffer. </dd></param>\t\n            <param name=\"dioPtr2Out\"><dd> Address of a variable that receives a reference to the second locked part of the capture buffer. If <c>null</c> is returned, the ppvAudioPtr1 parameter points to the entire locked portion of the capture buffer. </dd></param>\t\n            <param name=\"udioBytes2Ref\"><dd> Address of a variable that receives the number of bytes in the block at ppvAudioPtr2. If ppvAudioPtr2 is <c>null</c>, this value is zero. </dd></param>\t\n            <param name=\"flags\"><dd> Flags modifying the lock event. This value can be zero or the following flag:<table> <tr><td>Value</td><td>Description</td></tr> <tr><td>DSCBLOCK_ENTIREBUFFER</td><td>Ignore dwBytes and lock the entire capture buffer.</td></tr> </table> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be one of the following values:</p> <table> <tr><td>Return code</td></tr> <tr><td>DSERR_INVALIDPARAM </td></tr> <tr><td>DSERR_INVALIDCALL </td></tr> </table></returns>\t\n            <remarks>\t\n            <p>This method accepts an offset and a byte count, and returns two read references and their associated sizes. If the locked portion does not extend to the end of the buffer and wrap to the beginning, the second reference, ppvAudioBytes2, receives <c>null</c>. If the lock does wrap, ppvAudioBytes2 points to the beginning of the buffer.</p> <p>If the application passes <c>null</c> for the ppvAudioPtr2 and pdwAudioBytes2 parameters, the lock extends no further than the end of the buffer and does not wrap.</p> <p>The application should read data from the references returned by this method and then immediately call Unlock. The sound buffer should not remain locked while it is running; if it does, the capture cursor will reach the locked bytes and audio problems may result.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundCaptureBuffer::Lock']/*\"/>\t\n            <msdn-id>ee418179</msdn-id>\t\n            <unmanaged>HRESULT IDirectSoundCaptureBuffer::Lock([In] unsigned int dwOffset,[In] unsigned int dwBytes,[Out] void** ppvAudioPtr1,[Out] unsigned int* pdwAudioBytes1,[Out] void** ppvAudioPtr2,[Out, Optional] unsigned int* pdwAudioBytes2,[In] unsigned int dwFlags)</unmanaged>\t\n            <unmanaged-short>IDirectSoundCaptureBuffer::Lock</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.CaptureBufferBase.Start(SharpDX.Bool)\">\n            <summary>\t\n            The Start method begins capturing data into the buffer. If the buffer is already capturing, the method has no effect.\t\n            </summary>\t\n            <param name=\"flags\"><dd> Flags that specify the behavior of the buffer when capturing sound data. The following flag is defined:  <table> <tr><td>Value</td><td>Description</td></tr> <tr><td>DSCBSTART_LOOPING</td><td>After the end of the buffer is reached, capture restarts at the beginning and continues until explicitly stopped.</td></tr> </table> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be one of the following error values: </p> <table> <tr><td>Return code</td></tr> <tr><td>DSERR_INVALIDPARAM </td></tr> <tr><td>DSERR_NODRIVER </td></tr> <tr><td>DSERR_OUTOFMEMORY </td></tr> </table></returns>\t\n            <remarks>\t\n            <p>If the buffer is already capturing, a call to this method using a different value in dwFlags might not change the value returned by GetStatus.</p> <p>If the application is multithreaded, the thread that starts the buffer must continue to exist as long as the buffer is capturing. Buffers created on WDM drivers stop capturing when the thread is terminated.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundCaptureBuffer::Start']/*\"/>\t\n            <msdn-id>ee418181</msdn-id>\t\n            <unmanaged>HRESULT IDirectSoundCaptureBuffer::Start([In] BOOL dwFlags)</unmanaged>\t\n            <unmanaged-short>IDirectSoundCaptureBuffer::Start</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.CaptureBufferBase.Stop\">\n            <summary>\t\n            The Stop method stops the buffer so that it is no longer capturing data. If the buffer is not capturing, the method has no effect.\t\n            </summary>\t\n            <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be one of the following error values: </p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundCaptureBuffer::Stop']/*\"/>\t\n            <msdn-id>ee418183</msdn-id>\t\n            <unmanaged>HRESULT IDirectSoundCaptureBuffer::Stop()</unmanaged>\t\n            <unmanaged-short>IDirectSoundCaptureBuffer::Stop</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.CaptureBufferBase.Unlock(System.IntPtr,System.Int32,System.IntPtr,System.Int32)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"vAudioPtr1Ref\">No documentation.</param>\t\n            <param name=\"audioBytes1\">No documentation.</param>\t\n            <param name=\"vAudioPtr2Ref\">No documentation.</param>\t\n            <param name=\"audioBytes2\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundCaptureBuffer::Unlock']/*\"/>\t\n            <unmanaged>HRESULT IDirectSoundCaptureBuffer::Unlock([In, Buffer] void* pvAudioPtr1,[In] unsigned int dwAudioBytes1,[In, Buffer, Optional] void* pvAudioPtr2,[In] unsigned int dwAudioBytes2)</unmanaged>\t\n            <unmanaged-short>IDirectSoundCaptureBuffer::Unlock</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.DirectSound.CaptureBufferBase.Capturing\">\n            <summary>\n            True if the buffer is currently capturing.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.DirectSound.CaptureBufferBase.CurrentCapturePosition\">\n            <summary>\n            The offset from the start of the buffer, in bytes, of the capture cursor.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.DirectSound.CaptureBufferBase.CurrentRealPosition\">\n            <summary>\n            The offset from the start of the buffer, in bytes, of the read cursor.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.DirectSound.CaptureBufferBase.Looping\">\n            <summary>\n            True if the capture buffer is looping.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.DirectSound.CaptureBufferBase.Format\">\n            <summary>\n            Gets the waveform format of the capture buffer.\n            </summary>\n            <value>The format.</value>\n        </member>\n        <member name=\"P:SharpDX.DirectSound.CaptureBufferBase.Capabilities\">\n            <summary>\t\n            The GetCaps method retrieves the capabilities of the buffer.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundCaptureBuffer::GetCaps']/*\"/>\t\n            <msdn-id>ee418164</msdn-id>\t\n            <unmanaged>GetCaps</unmanaged>\t\n            <unmanaged-short>GetCaps</unmanaged-short>\t\n            <unmanaged>HRESULT IDirectSoundCaptureBuffer::GetCaps([Out] DSCBCAPS* pDSCBCaps)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectSound.CaptureBufferBase.CaptureStatus\">\n            <summary>\t\n            The GetStatus method retrieves the status of the capture buffer.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundCaptureBuffer::GetStatus']/*\"/>\t\n            <msdn-id>ee418174</msdn-id>\t\n            <unmanaged>GetStatus</unmanaged>\t\n            <unmanaged-short>GetStatus</unmanaged-short>\t\n            <unmanaged>HRESULT IDirectSoundCaptureBuffer::GetStatus([Out] DSCBSTATUS_FLAGS* pdwStatus)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectSound.CaptureBuffer.#ctor(SharpDX.DirectSound.DirectSoundCapture,SharpDX.DirectSound.CaptureBufferDescription)\">\n            <summary>\t\n            Creates a buffer for capturing waveform audio.\t\n            </summary>\n            <param name=\"capture\">a reference to an instance of <see cref=\"T:SharpDX.DirectSound.DirectSoundCapture\"/></param>\n            <param name=\"description\">a <see cref=\"T:SharpDX.DirectSound.CaptureBufferDescription\"/> structure containing values for the capture buffer being created. </param>\n            <returns>No documentation.</returns>\n            <unmanaged>HRESULT IDirectSoundCapture::CreateCaptureBuffer([In] LPCDSCBUFFERDESC pcDSCBufferDesc,[Out] LPDIRECTSOUNDCAPTUREBUFFER* ppDSCBuffer,[None] IUnknown* pUnkOuter)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectSound.CaptureBuffer.GetEffect``1(System.Int32)\">\n            <summary>\t\n            Retrieves an interface to an effect object associated with the buffer.\t\n            </summary>\t\n            <param name=\"index\">Index of the object within objects of that class in the path. See Remarks.  </param>\n            <returns>an effect object associated with the buffer</returns>\n            <unmanaged>HRESULT IDirectSoundCaptureBuffer8::GetObjectInPath([In] GUID* rguidObject,[None] int dwIndex,[In] GUID* rguidInterface,[Out] void** ppObject)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectSound.CaptureBuffer.GetEffectStatus(System.Int32)\">\n            <summary>\n            Retrieves the status of capture effects.\n            </summary>\n            <param name=\"effectCount\" />\n            <returns />\n        </member>\n        <member name=\"M:SharpDX.DirectSound.CaptureBuffer.SetNotificationPositions(SharpDX.DirectSound.NotificationPosition[])\">\n            <summary>\n            Sets the notification positions.\n            </summary>\n            <param name=\"positions\">The positions.</param>\n            <returns></returns>\n        </member>\n        <member name=\"M:SharpDX.DirectSound.CaptureBuffer.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectSound.CaptureBuffer\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.CaptureBuffer.op_Explicit(System.IntPtr)~SharpDX.DirectSound.CaptureBuffer\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.DirectSound.CaptureBuffer\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.DirectSound.CaptureBuffer.GetEffect(System.Guid,System.Int32,System.Guid,System.IntPtr@)\">\n            <summary>\t\n            The GetObjectInPath method retrieves an interface to an effect object associated with the buffer.\t\n            </summary>\t\n            <param name=\"rguidObject\"><dd> Value of type REFGUID that specifies the unique class identifier of the object being searched for, such as <see cref=\"F:SharpDX.DirectSound.CaptureEffectGuid.AcousticEchoCancellationCaptureEffect\"/>. </dd></param>\t\n            <param name=\"index\"><dd> Index of the object within objects of that class in the path. See Remarks.  </dd></param>\t\n            <param name=\"rguidInterface\"><dd> Unique identifier of the desired interface, such as IID_IDirectSoundCaptureFXAec8. </dd></param>\t\n            <param name=\"objectOut\"><dd> Address of a variable that receives the desired interface reference. </dd></param>\t\n            <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be one of the following error values:</p> <table> <tr><td>Return code</td></tr> <tr><td>DSERR_CONTROLUNAVAIL </td></tr> <tr><td>DSERR_INVALIDPARAM </td></tr> <tr><td>DSERR_OBJECTNOTFOUND </td></tr> </table></returns>\t\n            <remarks>\t\n            <p>The value in dwIndex is the index of the object within the array of effects in the <see cref=\"T:SharpDX.DirectSound.CaptureBufferDescription\"/> structure passed to DirectSoundFullDuplexCreate8 or IDirectSoundCapture8::CreateCaptureBuffer.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundCaptureBuffer8::GetObjectInPath']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.idirectsoundcapturebuffer8.idirectsoundcapturebuffer8.getobjectinpath</msdn-id>\t\n            <unmanaged>HRESULT IDirectSoundCaptureBuffer8::GetObjectInPath([In] const GUID&amp; rguidObject,[In] unsigned int dwIndex,[In] const GUID&amp; rguidInterface,[Out] void** ppObject)</unmanaged>\t\n            <unmanaged-short>IDirectSoundCaptureBuffer8::GetObjectInPath</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.CaptureBuffer.GetEffectStatus(System.Int32,SharpDX.DirectSound.CaptureEffectResult[])\">\n            <summary>\t\n            The GetFXStatus method retrieves the status of capture effects.\t\n            </summary>\t\n            <param name=\"effectsCount\"><dd> Number of elements in the pdwFXStatus array.  </dd></param>\t\n            <param name=\"xStatusRef\"><dd> Address of an array of DWORD variables that receive the status of each effect. This should contain the same number of elements as the array passed in the dwFXCount member of the <see cref=\"T:SharpDX.DirectSound.CaptureBufferDescription\"/> structure passed to DirectSoundFullDuplexCreate8 or IDirectSoundCapture8::CreateCaptureBuffer. The possible values returned in the array are as follows:<table> <tr><td>Value</td><td>Description</td></tr> <tr><td>DSCFXR_LOCHARDWARE</td><td>Effect is instantiated in hardware.</td></tr> <tr><td>DSCFXR_LOCSOFTWARE</td><td>Effect is instantiated in software.</td></tr> </table> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be DSERR_INVALIDPARAM.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundCaptureBuffer8::GetFXStatus']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.idirectsoundcapturebuffer8.idirectsoundcapturebuffer8.getfxstatus</msdn-id>\t\n            <unmanaged>HRESULT IDirectSoundCaptureBuffer8::GetFXStatus([In] unsigned int dwEffectsCount,[Out, Buffer] DSCFX_ENUM* pdwFXStatus)</unmanaged>\t\n            <unmanaged-short>IDirectSoundCaptureBuffer8::GetFXStatus</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectSound.CaptureBufferCapabilities\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCBCAPS']/*\"/>\t\n            <unmanaged>DSCBCAPS</unmanaged>\t\n            <unmanaged-short>DSCBCAPS</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.CaptureBufferCapabilities.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectSound.CaptureBufferCapabilities\"/> class.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.CaptureBufferCapabilities.Size\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCBCAPS::dwSize']/*\"/>\t\n            <unmanaged>unsigned int dwSize</unmanaged>\t\n            <unmanaged-short>unsigned int dwSize</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.CaptureBufferCapabilities.Flags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCBCAPS::dwFlags']/*\"/>\t\n            <unmanaged>DSCBCAPS_FLAGS dwFlags</unmanaged>\t\n            <unmanaged-short>DSCBCAPS_FLAGS dwFlags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.CaptureBufferCapabilities.BufferBytes\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCBCAPS::dwBufferBytes']/*\"/>\t\n            <unmanaged>unsigned int dwBufferBytes</unmanaged>\t\n            <unmanaged-short>unsigned int dwBufferBytes</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.CaptureBufferCapabilities.Reserved\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCBCAPS::dwReserved']/*\"/>\t\n            <unmanaged>unsigned int dwReserved</unmanaged>\t\n            <unmanaged-short>unsigned int dwReserved</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectSound.CaptureBufferDescription\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCBUFFERDESC']/*\"/>\t\n            <unmanaged>DSCBUFFERDESC</unmanaged>\t\n            <unmanaged-short>DSCBUFFERDESC</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.CaptureBufferDescription.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectSound.CaptureBufferDescription\"/> class.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.CaptureBufferDescription.Size\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCBUFFERDESC::dwSize']/*\"/>\t\n            <unmanaged>unsigned int dwSize</unmanaged>\t\n            <unmanaged-short>unsigned int dwSize</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.CaptureBufferDescription.Flags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCBUFFERDESC::dwFlags']/*\"/>\t\n            <unmanaged>DSCBCAPS_FLAGS dwFlags</unmanaged>\t\n            <unmanaged-short>DSCBCAPS_FLAGS dwFlags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.CaptureBufferDescription.BufferBytes\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCBUFFERDESC::dwBufferBytes']/*\"/>\t\n            <unmanaged>unsigned int dwBufferBytes</unmanaged>\t\n            <unmanaged-short>unsigned int dwBufferBytes</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.CaptureBufferDescription.Reserved\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCBUFFERDESC::dwReserved']/*\"/>\t\n            <unmanaged>unsigned int dwReserved</unmanaged>\t\n            <unmanaged-short>unsigned int dwReserved</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.CaptureBufferDescription.FormatPointer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCBUFFERDESC::lpwfxFormat']/*\"/>\t\n            <unmanaged>WAVEFORMATEX* lpwfxFormat</unmanaged>\t\n            <unmanaged-short>WAVEFORMATEX lpwfxFormat</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.CaptureBufferDescription.EffectCount\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCBUFFERDESC::dwFXCount']/*\"/>\t\n            <unmanaged>unsigned int dwFXCount</unmanaged>\t\n            <unmanaged-short>unsigned int dwFXCount</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.CaptureBufferDescription.EffectDescriptionPointer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCBUFFERDESC::lpDSCFXDesc']/*\"/>\t\n            <unmanaged>DSCEFFECTDESC* lpDSCFXDesc</unmanaged>\t\n            <unmanaged-short>DSCEFFECTDESC lpDSCFXDesc</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.DirectSound.CaptureBufferDescription.WaveMapped\">\n            <summary>\n            Gets a value indicating whether [wave mapped].\n            </summary>\n            <value><c>true</c> if [wave mapped]; otherwise, <c>false</c>.</value>\n        </member>\n        <member name=\"P:SharpDX.DirectSound.CaptureBufferDescription.ControlEffects\">\n            <summary>\n            Gets a value indicating whether [control effects].\n            </summary>\n            <value><c>true</c> if [control effects]; otherwise, <c>false</c>.</value>\n        </member>\n        <member name=\"P:SharpDX.DirectSound.CaptureBufferDescription.Format\">\n            <summary>\n            Gets or sets the format.\n            </summary>\n            <value>The format.</value>\n        </member>\n        <member name=\"P:SharpDX.DirectSound.CaptureBufferDescription.EffectDescriptions\">\n            <summary>\n            Describes effects supported by hardware for the buffer.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.DirectSound.CaptureCapabilities\">\n            <summary>\t\n            The <see cref=\"T:SharpDX.DirectSound.CaptureCapabilities\"/> structure describes the capabilities of the capture device. It is used by theIDirectSoundCapture8::GetCapsmethod.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCCAPS']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.dsccaps</msdn-id>\t\n            <unmanaged>DSCCAPS</unmanaged>\t\n            <unmanaged-short>DSCCAPS</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.CaptureCapabilities.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectSound.CaptureCapabilities\"/> class.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.CaptureCapabilities.Size\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCCAPS::dwSize']/*\"/>\t\n            <unmanaged>unsigned int dwSize</unmanaged>\t\n            <unmanaged-short>unsigned int dwSize</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.CaptureCapabilities.Flags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCCAPS::dwFlags']/*\"/>\t\n            <unmanaged>unsigned int dwFlags</unmanaged>\t\n            <unmanaged-short>unsigned int dwFlags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.CaptureCapabilities.Formats\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCCAPS::dwFormats']/*\"/>\t\n            <unmanaged>unsigned int dwFormats</unmanaged>\t\n            <unmanaged-short>unsigned int dwFormats</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.CaptureCapabilities.Channels\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCCAPS::dwChannels']/*\"/>\t\n            <unmanaged>unsigned int dwChannels</unmanaged>\t\n            <unmanaged-short>unsigned int dwChannels</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectSound.CaptureEffectDescription\">\n            <summary>\t\n            The <see cref=\"T:SharpDX.DirectSound.CaptureEffectDescription\"/> structure contains parameters for an effect associated with a capture buffer.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCEFFECTDESC']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.dsceffectdesc</msdn-id>\t\n            <unmanaged>DSCEFFECTDESC</unmanaged>\t\n            <unmanaged-short>DSCEFFECTDESC</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.CaptureEffectDescription.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectSound.CaptureEffectDescription\"/> class.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.CaptureEffectDescription.Size\">\n            <summary>\t\n            <dd> Size of the structure, in bytes. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCEFFECTDESC::dwSize']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.dsceffectdesc</msdn-id>\t\n            <unmanaged>unsigned int dwSize</unmanaged>\t\n            <unmanaged-short>unsigned int dwSize</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.CaptureEffectDescription.Flags\">\n            <summary>\t\n            <dd> Flags that specify desired parameters of the effect. When this structure is passed to DirectSoundFullDuplexCreate8, or IDirectSoundCapture8::CreateCaptureBuffer, this member must be one of the values shown in the following table.\t\n            <table> <tr><th>Value\t\n            </th><th>Description\t\n            </th></tr> <tr><td><see cref=\"F:SharpDX.DirectSound.CaptureEffectResult.LocatedInHardware\"/>\t\n            </td><td>Effect specified by guidDSCFXInstance must be in hardware.\t\n            </td></tr> <tr><td><see cref=\"F:SharpDX.DirectSound.CaptureEffectResult.LocatedInSoftware\"/>\t\n            </td><td>Effect specified by guidDSCFXInstance must be in software.\t\n            </td></tr> </table> <p>On return, this member can contain one of the values shown in the following table.</p> <table> <tr><th>Value\t\n            </th><th>Description\t\n            </th></tr> <tr><td><see cref=\"F:SharpDX.DirectSound.CaptureEffectResult.LocatedInHardware\"/>\t\n            </td><td>Effect was created in hardware.\t\n            </td></tr> <tr><td><see cref=\"F:SharpDX.DirectSound.CaptureEffectResult.LocatedInSoftware\"/>\t\n            </td><td>Effect was created in software.\t\n            </td></tr> </table> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCEFFECTDESC::dwFlags']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.dsceffectdesc</msdn-id>\t\n            <unmanaged>DSCFX_ENUM dwFlags</unmanaged>\t\n            <unmanaged-short>DSCFX_ENUM dwFlags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.CaptureEffectDescription.CaptureEffectClass\">\n            <summary>\t\n            <dd> Value of type <see cref=\"T:System.Guid\"/> that specifies the class identifier of the effect. The following standard identifiers are defined.\t\n            <table> <tr><th>Value\t\n            </th><th>Description\t\n            </th></tr> <tr><td><see cref=\"F:SharpDX.DirectSound.CaptureEffectGuid.AcousticEchoCancellationCaptureEffect\"/>\t\n            </td><td>Acoustic echo cancellation.\t\n            </td></tr> <tr><td><see cref=\"F:SharpDX.DirectSound.CaptureEffectGuid.NoiseSuppressionCaptureEffect\"/>\t\n            </td><td>Noise suppression.\t\n            </td></tr> </table> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCEFFECTDESC::guidDSCFXClass']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.dsceffectdesc</msdn-id>\t\n            <unmanaged>GUID guidDSCFXClass</unmanaged>\t\n            <unmanaged-short>GUID guidDSCFXClass</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.CaptureEffectDescription.CaptureEffectInstance\">\n            <summary>\t\n            <dd> Value of type <see cref=\"T:System.Guid\"/> that specifies the unique identifier of the preferred effect. The following standard identifiers are defined.\t\n            <table> <tr><th>Value\t\n            </th><th>Description\t\n            </th></tr> <tr><td><see cref=\"F:SharpDX.DirectSound.CaptureEffectGuid.MicrosoftAcousticEchoCancellationCaptureEffect\"/>\t\n            </td><td>Microsoft acoustic echo cancellation. Available in software only.\t\n            </td></tr> <tr><td><see cref=\"F:SharpDX.DirectSound.CaptureEffectGuid.MicrosoftNoiseSuppressionCaptureEffect\"/>\t\n            </td><td>Microsoft noise suppression. Available in software only.\t\n            </td></tr> <tr><td><see cref=\"F:SharpDX.DirectSound.CaptureEffectGuid.SystemAcousticEchoCancellationCaptureEffect\"/>\t\n            </td><td>System default acoustic echo cancellation.\t\n            </td></tr> <tr><td><see cref=\"F:SharpDX.DirectSound.CaptureEffectGuid.SystemNoiseSuppressionCaptureEffect\"/>\t\n            </td><td>System default noise suppression.\t\n            </td></tr> </table> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCEFFECTDESC::guidDSCFXInstance']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.dsceffectdesc</msdn-id>\t\n            <unmanaged>GUID guidDSCFXInstance</unmanaged>\t\n            <unmanaged-short>GUID guidDSCFXInstance</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.CaptureEffectDescription.Reserved1\">\n            <summary>\t\n            <dd> Reserved. Must be zero. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCEFFECTDESC::dwReserved1']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.dsceffectdesc</msdn-id>\t\n            <unmanaged>unsigned int dwReserved1</unmanaged>\t\n            <unmanaged-short>unsigned int dwReserved1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.CaptureEffectDescription.Reserved2\">\n            <summary>\t\n            <dd> Reserved. Must be zero. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCEFFECTDESC::dwReserved2']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.dsceffectdesc</msdn-id>\t\n            <unmanaged>unsigned int dwReserved2</unmanaged>\t\n            <unmanaged-short>unsigned int dwReserved2</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectSound.Chorus\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundFXChorus']/*\"/>\t\n            <unmanaged>IDirectSoundFXChorus</unmanaged>\t\n            <unmanaged-short>IDirectSoundFXChorus</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Chorus.DelayDefault\">\n            <summary>\n            Default number of milliseconds the input is delayed before it is played back. The default value is 50. \n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Chorus.DelayMax\">\n            <summary>\n            Maximum number of milliseconds the input is delayed before it is played back. \n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Chorus.DelayMin\">\n            <summary>\n            Minimum number of milliseconds the input is delayed before it is played back. \n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Chorus.DepthDefault\">\n            <summary>\n            Default percentage by which the delay time is modulated by the low-frequency oscillator, in hundredths of a percentage point. The default value is 10.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Chorus.DepthMax\">\n            <summary>\n            Maximum percentage by which the delay time is modulated by the low-frequency oscillator, in hundredths of a percentage point.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Chorus.DepthMin\">\n            <summary>\n            Minimum percentage by which the delay time is modulated by the low-frequency oscillator, in hundredths of a percentage point.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Chorus.FeedbackDefault\">\n            <summary>\n            Default percentage of output signal to feed back into the effect's input. The default value is 25.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Chorus.FeedbackMax\">\n            <summary>\n            Maximum percentage of output signal to feed back into the effect's input.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Chorus.FeedbackMin\">\n            <summary>\n            Minimum percentage of output signal to feed back into the effect's input.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Chorus.FrequencyDefault\">\n            <summary>\n            Default frequency of the LFO. The default value is 1.1. \n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Chorus.FrequencyMax\">\n            <summary>\n            Maximum frequency of the LFO.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Chorus.FrequencyMin\">\n            <summary>\n            Minimum frequency of the LFO.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Chorus.Phase180\">\n            <summary>\n            Positive 180 phase differential between left and right LFOs.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Chorus.Phase90\">\n            <summary>\n            Positive 90 phase differential between left and right LFOs.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Chorus.PhaseDefault\">\n            <summary>\n            Default phase differential between left and right LFOs. The default value is Phase90.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Chorus.PhaseMax\">\n            <summary>\n            Maximum phase differential between left and right LFOs.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Chorus.PhaseMin\">\n            <summary>\n            Minimum phase differential between left and right LFOs.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Chorus.PhaseNegative180\">\n            <summary>\n            Negative 180 phase differential between left and right LFOs.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Chorus.PhaseNegative90\">\n            <summary>\n            Negative 90 phase differential between left and right LFOs.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Chorus.PhaseZero\">\n            <summary>\n            Zero phase differential between left and right LFOs.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Chorus.WaveformDefault\">\n            <summary>\n            Default waveform shape of the LFO. By default, the waveform is a sine.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Chorus.WaveformSin\">\n            <summary>\n            Sine waveform shape of the LFO.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Chorus.WaveformTriangle\">\n            <summary>\n            Triangle waveform shape of the LFO.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Chorus.WetDryMixDefault\">\n            <summary>\n            Default ratio of wet (processed) signal to dry (unprocessed) signal.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Chorus.WetDryMixMax\">\n            <summary>\n            Maximum ratio of wet (processed) signal to dry (unprocessed) signal.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Chorus.WetDryMixMin\">\n            <summary>\n            Minimum ratio of wet (processed) signal to dry (unprocessed) signal.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.DirectSound.Chorus.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectSound.Chorus\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.Chorus.op_Explicit(System.IntPtr)~SharpDX.DirectSound.Chorus\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.DirectSound.Chorus\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.DirectSound.Chorus.SetAllParameters(SharpDX.DirectSound.ChorusSettings@)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"cDsFxChorusRef\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundFXChorus::SetAllParameters']/*\"/>\t\n            <unmanaged>HRESULT IDirectSoundFXChorus::SetAllParameters([In] const DSFXChorus* pcDsFxChorus)</unmanaged>\t\n            <unmanaged-short>IDirectSoundFXChorus::SetAllParameters</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.Chorus.GetAllParameters(SharpDX.DirectSound.ChorusSettings@)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"dsFxChorusRef\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundFXChorus::GetAllParameters']/*\"/>\t\n            <unmanaged>HRESULT IDirectSoundFXChorus::GetAllParameters([Out] DSFXChorus* pDsFxChorus)</unmanaged>\t\n            <unmanaged-short>IDirectSoundFXChorus::GetAllParameters</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.DirectSound.Chorus.AllParameters\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundFXChorus::GetAllParameters']/*\"/>\t\n            <unmanaged>GetAllParameters / SetAllParameters</unmanaged>\t\n            <unmanaged-short>GetAllParameters</unmanaged-short>\t\n            <unmanaged>HRESULT IDirectSoundFXChorus::GetAllParameters([Out] DSFXChorus* pDsFxChorus)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectSound.Compressor\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundFXCompressor']/*\"/>\t\n            <unmanaged>IDirectSoundFXCompressor</unmanaged>\t\n            <unmanaged-short>IDirectSoundFXCompressor</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Compressor.AttackDefault\">\n            <summary>\n            Default time before compression reaches its full value, in decibels (dB). The default value is 10 ms.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Compressor.AttackMax\">\n            <summary>\n            Maximum time before compression reaches its full value, in decibels (dB).\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Compressor.AttackMin\">\n            <summary>\n            Minimum time before compression reaches its full value, in decibels (dB).\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Compressor.GainDefault\">\n            <summary>\n            Default output gain of signal after compression, in decibels (dB). The default value is 0 dB. \n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Compressor.GainMax\">\n            <summary>\n            Maximum output gain of signal after compression, in decibels (dB). \n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Compressor.GainMin\">\n            <summary>\n            Minimum output gain of signal after compression, in decibels (dB). \n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Compressor.PreDelayDefault\">\n            <summary>\n            Default time after threshold is reached before attack phase is started, in milliseconds. The default value is 4 ms. \n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Compressor.PreDelayMax\">\n            <summary>\n            Maximum time after threshold is reached before attack phase is started, in milliseconds. \n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Compressor.PreDelayMin\">\n            <summary>\n            Minimum time after threshold is reached before attack phase is started, in milliseconds. \n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Compressor.RatioDefault\">\n            <summary>\n            Default compression ratio. The default value is 3, which means 3:1 compression. \n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Compressor.RatioMax\">\n            <summary>\n            Maximum compression ratio.  \n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Compressor.RatioMin\">\n            <summary>\n            Minimum compression ratio. \n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Compressor.ReleaseDefault\">\n            <summary>\n            Default speed at which compression is stopped after input drops below Threshold, in miliseconds. The default value is 200 ms.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Compressor.ReleaseMax\">\n            <summary>\n            Maximum speed at which compression is stopped after input drops below Threshold, in miliseconds. \n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Compressor.ReleaseMin\">\n            <summary>\n            Minimum speed at which compression is stopped after input drops below Threshold, in miliseconds. \n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Compressor.ThresholdDefault\">\n            <summary>\n            Default point at which compression begins, in decibels, in decibels (dB). The default value is -20 dB.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Compressor.ThresholdMax\">\n            <summary>\n            Maximum point at which compression begins, in decibels, in decibels (dB). \n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Compressor.ThresholdMin\">\n            <summary>\n            Minimum point at which compression begins, in decibels, in decibels (dB).\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.DirectSound.Compressor.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectSound.Compressor\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.Compressor.op_Explicit(System.IntPtr)~SharpDX.DirectSound.Compressor\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.DirectSound.Compressor\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.DirectSound.Compressor.SetAllParameters(SharpDX.DirectSound.CompressorSettings@)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"cDsFxCompressorRef\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundFXCompressor::SetAllParameters']/*\"/>\t\n            <unmanaged>HRESULT IDirectSoundFXCompressor::SetAllParameters([In] const DSFXCompressor* pcDsFxCompressor)</unmanaged>\t\n            <unmanaged-short>IDirectSoundFXCompressor::SetAllParameters</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.Compressor.GetAllParameters(SharpDX.DirectSound.CompressorSettings@)\">\n            <summary>\t\n            The GetAllParameters method retrieves the compression parameters of a buffer.\t\n            </summary>\t\n            <param name=\"dsFxCompressorRef\"><dd> Address of a <see cref=\"T:SharpDX.DirectSound.CompressorSettings\"/> structure that receives the effect parameters. </dd></param>\t\n            <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be DSERR_INVALIDPARAM.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundFXCompressor::GetAllParameters']/*\"/>\t\n            <msdn-id>ee418216</msdn-id>\t\n            <unmanaged>HRESULT IDirectSoundFXCompressor::GetAllParameters([Out] DSFXCompressor* pDsFxCompressor)</unmanaged>\t\n            <unmanaged-short>IDirectSoundFXCompressor::GetAllParameters</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.DirectSound.Compressor.AllParameters\">\n            <summary>\t\n            The GetAllParameters method retrieves the compression parameters of a buffer.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundFXCompressor::GetAllParameters']/*\"/>\t\n            <msdn-id>ee418216</msdn-id>\t\n            <unmanaged>GetAllParameters / SetAllParameters</unmanaged>\t\n            <unmanaged-short>GetAllParameters</unmanaged-short>\t\n            <unmanaged>HRESULT IDirectSoundFXCompressor::GetAllParameters([Out] DSFXCompressor* pDsFxCompressor)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectSound.DeviceInformation\">\n            <summary>\n            Contains information about a DirectSound device.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.DirectSound.DeviceInformation.#ctor(System.Guid,System.String,System.String)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectSound.DeviceInformation\"/> class.\n            </summary>\n            <param name=\"driverGuid\">The driver GUID.</param>\n            <param name=\"description\">The description.</param>\n            <param name=\"moduleName\">Name of the module.</param>\n        </member>\n        <member name=\"P:SharpDX.DirectSound.DeviceInformation.DriverGuid\">\n            <summary>\n            Identifies the DirectSound driver being enumerated\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.DirectSound.DeviceInformation.Description\">\n            <summary>\n            String that provides a textual description of the DirectSound device.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.DirectSound.DeviceInformation.ModuleName\">\n            <summary>\n            String that specifies the module name of the DirectSound driver corresponding to this device.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.DirectSound.DirectSound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSound8']/*\"/>\t\n            <unmanaged>IDirectSound8</unmanaged>\t\n            <unmanaged-short>IDirectSound8</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectSound.DirectSoundBase\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSound']/*\"/>\t\n            <unmanaged>IDirectSound</unmanaged>\t\n            <unmanaged-short>IDirectSound</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.DirectSoundBase.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectSound.DirectSoundBase\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.DirectSoundBase.op_Explicit(System.IntPtr)~SharpDX.DirectSound.DirectSoundBase\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.DirectSound.DirectSoundBase\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.DirectSound.DirectSoundBase.CreateSoundBuffer(SharpDX.DirectSound.SoundBufferDescription,System.IntPtr@,SharpDX.ComObject)\">\n            <summary>\t\n            The CreateSoundBuffer method creates a sound buffer object to manage audio samples.\t\n            </summary>\t\n            <param name=\"cDSBufferDescRef\"><dd> Address of a <see cref=\"T:SharpDX.DirectSound.SoundBufferDescription\"/> structure that describes the sound buffer to create. </dd></param>\t\n            <param name=\"dSBufferOut\"><dd> Address of a variable that receives the <see cref=\"T:SharpDX.DirectSound.SoundBuffer\"/> interface of the new buffer object. Use QueryInterface to obtain <see cref=\"T:SharpDX.DirectSound.SecondarySoundBuffer\"/>. <see cref=\"T:SharpDX.DirectSound.SecondarySoundBuffer\"/> is not available for the primary buffer. </dd></param>\t\n            <param name=\"unkOuterRef\"><dd> Address of the controlling object's <see cref=\"T:SharpDX.ComObject\"/> interface for COM aggregation. Must be <c>null</c>. </dd></param>\t\n            <returns><p>If the method succeeds, the return value is DS_OK, or DS_NO_VIRTUALIZATION if a requested 3D algorithm was not available and stereo panning was substituted. See the description of the guid3DAlgorithm member of <see cref=\"T:SharpDX.DirectSound.SoundBufferDescription\"/>. If the method fails, the return value may be one of the error values shown in the following table.</p> <table> <tr><td>Return code</td></tr> <tr><td>DSERR_ALLOCATED </td></tr> <tr><td>DSERR_BADFORMAT </td></tr> <tr><td>DSERR_BUFFERTOOSMALL </td></tr> <tr><td>DSERR_CONTROLUNAVAIL </td></tr> <tr><td>DSERR_DS8_REQUIRED </td></tr> <tr><td>DSERR_INVALIDCALL </td></tr> <tr><td>DSERR_INVALIDPARAM </td></tr> <tr><td>DSERR_NOAGGREGATION </td></tr> <tr><td>DSERR_OUTOFMEMORY </td></tr> <tr><td>DSERR_UNINITIALIZED </td></tr> <tr><td>DSERR_UNSUPPORTED </td></tr> </table></returns>\t\n            <remarks>\t\n            <p>DirectSound does not initialize the contents of the buffer, and the application cannot assume that it contains silence.</p> <p>If an attempt is made to create a buffer with the <see cref=\"F:SharpDX.DirectSound.BufferFlags.Hardware\"/> flag on a system where hardware acceleration is not available, the method fails with either DSERR_CONTROLUNAVAIL or DSERR_INVALIDCALL, depending on the operating system.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSound::CreateSoundBuffer']/*\"/>\t\n            <msdn-id>ee418039</msdn-id>\t\n            <unmanaged>HRESULT IDirectSound::CreateSoundBuffer([In] const DSBUFFERDESC* pcDSBufferDesc,[Out] void** ppDSBuffer,[In] IUnknown* pUnkOuter)</unmanaged>\t\n            <unmanaged-short>IDirectSound::CreateSoundBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.DirectSoundBase.GetCapabilities(SharpDX.DirectSound.Capabilities@)\">\n            <summary>\t\n            The GetCaps method retrieves the capabilities of the hardware device that is represented by the device object.\t\n            </summary>\t\n            <param name=\"dSCapsRef\"><dd> Address of a <see cref=\"T:SharpDX.DirectSound.Capabilities\"/> structure that receives the capabilities of this sound device. </dd></param>\t\n            <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be one of the error values shown in the following table.</p> <table> <tr><td>Return code</td></tr> <tr><td>DSERR_GENERIC </td></tr> <tr><td>DSERR_INVALIDPARAM </td></tr> <tr><td>DSERR_UNINITIALIZED </td></tr> </table></returns>\t\n            <remarks>\t\n            <p>Information retrieved in the <see cref=\"T:SharpDX.DirectSound.Capabilities\"/> structure describes the maximum capabilities of the sound device and those currently available, such as the number of hardware mixing channels and the amount of on-board sound memory. You can use this information to fine-tune performance and optimize resource allocation.</p> <p>Because of resource-sharing requirements, the maximum capabilities in one area might be available only at the cost of another area.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSound::GetCaps']/*\"/>\t\n            <msdn-id>ee418043</msdn-id>\t\n            <unmanaged>HRESULT IDirectSound::GetCaps([Out] DSCAPS* pDSCaps)</unmanaged>\t\n            <unmanaged-short>IDirectSound::GetCaps</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.DirectSoundBase.DuplicateSoundBuffer(SharpDX.DirectSound.SoundBuffer,System.IntPtr@)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"dSBufferOriginalRef\">No documentation.</param>\t\n            <param name=\"dSBufferDuplicateOut\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSound::DuplicateSoundBuffer']/*\"/>\t\n            <unmanaged>HRESULT IDirectSound::DuplicateSoundBuffer([In] IDirectSoundBuffer* pDSBufferOriginal,[Out] void** ppDSBufferDuplicate)</unmanaged>\t\n            <unmanaged-short>IDirectSound::DuplicateSoundBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.DirectSoundBase.SetCooperativeLevel(System.IntPtr,SharpDX.DirectSound.CooperativeLevel)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"hwnd\">No documentation.</param>\t\n            <param name=\"level\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSound::SetCooperativeLevel']/*\"/>\t\n            <unmanaged>HRESULT IDirectSound::SetCooperativeLevel([In] HWND hwnd,[In] DSSCL_ENUM dwLevel)</unmanaged>\t\n            <unmanaged-short>IDirectSound::SetCooperativeLevel</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.DirectSoundBase.Compact\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSound::Compact']/*\"/>\t\n            <unmanaged>HRESULT IDirectSound::Compact()</unmanaged>\t\n            <unmanaged-short>IDirectSound::Compact</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.DirectSoundBase.GetSpeakerConfiguration(System.Int32@)\">\n            <summary>\t\n            The GetSpeakerConfig method retrieves the speaker configuration.\t\n            </summary>\t\n            <param name=\"peakerConfigRef\"><dd> Address of the speaker configuration (see remarks in IDirectSound8::SetSpeakerConfig). </dd></param>\t\n            <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be one of the error values shown in the following table.</p> <table> <tr><th>Return code</th></tr> <tr><td>DSERR_INVALIDPARAM </td></tr> <tr><td>DSERR_UNINITIALIZED </td></tr> </table></returns>\t\n            <remarks>\t\n            <p>The value returned at pdwSpeakerConfig can be a packed DWORD containing both configuration and geometry information. Use the DSSPEAKER_CONFIG and DSSPEAKER_GEOMETRY macros to unpack the DWORD, as in the following example:</p> <pre> if (DSSPEAKER_CONFIG(dwSpeakerConfig) == <see cref=\"F:SharpDX.DirectSound.SpeakerConfiguration.Stereo\"/>) { if (DSSPEAKER_GEOMETRY(dwSpeakerConfig) == <see cref=\"F:SharpDX.DirectSound.SpeakerGeometry.Wide\"/>) { // Configuration is wide stereo. ...} } </pre> <p>To use #defines implemented in Windows Vista, set the DIRECTSOUND_VERSION to 0x1000 before including dsound.h.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSound::GetSpeakerConfig']/*\"/>\t\n            <msdn-id>ee418045</msdn-id>\t\n            <unmanaged>HRESULT IDirectSound::GetSpeakerConfig([Out] unsigned int* pdwSpeakerConfig)</unmanaged>\t\n            <unmanaged-short>IDirectSound::GetSpeakerConfig</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.DirectSoundBase.SetSpeakerConfiguration(System.Int32)\">\n            <summary>\t\n            The<strong>SetSpeakerConfig</strong>method specifies the speaker configuration of the device.\t\n            </summary>\t\n            <param name=\"speakerConfig\"><dd> The speaker configuration. See the following remarks. </dd></param>\t\n            <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be one of the error values shown in the following table.</p> <table> <tr><th>Return code</th></tr> <tr><td>DSERR_INVALIDPARAM </td></tr> <tr><td>DSERR_UNINITIALIZED </td></tr> </table></returns>\t\n            <remarks>\t\n            <p>In Windows Vista and later versions of Windows, <strong>SetSpeakerConfig</strong> is a NOP.  For Windows Vista and later versions, the speaker  configuration is a system setting that should not be modified by an application. End users can set the speaker configuration  through control panels.</p>  Speaker Configurations <p>These tables contain the possible speaker configurations.</p> <table> <tr><th>Value\t\n            </th><th>Description\t\n            </th></tr> <tr><td><see cref=\"F:SharpDX.DirectSound.SpeakerConfiguration.FivePointOneBack\"/>\t\n            </td><td>The audio is played through a speaker arrangement of five surround speakers with a subwoofer. (<see cref=\"F:SharpDX.DirectSound.SpeakerConfiguration.FivePointOne\"/> is still defined, but is obsolete as of Windows Vista. Use <see cref=\"F:SharpDX.DirectSound.SpeakerConfiguration.FivePointOneBack\"/> instead.)\t\n            </td></tr> <tr><td><see cref=\"F:SharpDX.DirectSound.SpeakerConfiguration.FivePointOneSurround\"/>\t\n            </td><td>The audio is played through a home theater speaker arrangement of five surround speakers with a subwoofer. This value applies to Windows Vista or later.\t\n            </td></tr> <tr><td><see cref=\"F:SharpDX.DirectSound.SpeakerConfiguration.DirectOut\"/>\t\n            </td><td>The audio is passed through directly, without being configured for speakers.\t\n            </td></tr> <tr><td><see cref=\"F:SharpDX.DirectSound.SpeakerConfiguration.Headphone\"/>\t\n            </td><td>The audio is played through headphones.\t\n            </td></tr> <tr><td><see cref=\"F:SharpDX.DirectSound.SpeakerConfiguration.Mono\"/>\t\n            </td><td>The audio is played through a single speaker.\t\n            </td></tr> <tr><td><see cref=\"F:SharpDX.DirectSound.SpeakerConfiguration.Quadrophonic\"/>\t\n            </td><td>The audio is played through quadraphonic speakers.\t\n            </td></tr> <tr><td><see cref=\"F:SharpDX.DirectSound.SpeakerConfiguration.Stereo\"/>\t\n            </td><td>The audio is played through stereo speakers (default value).\t\n            </td></tr> <tr><td><see cref=\"F:SharpDX.DirectSound.SpeakerConfiguration.Surround\"/>\t\n            </td><td>The audio is played through surround speakers.\t\n            </td></tr> <tr><td><see cref=\"F:SharpDX.DirectSound.SpeakerConfiguration.SevenPointOneWide\"/>\t\n            </td><td>The audio is played through a wide speaker arrangement of seven surround speakers with a subwoofer. (<see cref=\"F:SharpDX.DirectSound.SpeakerConfiguration.SevenPointOne\"/> is still defined, but is obsolete as of Windows XP SP 2. Use <see cref=\"F:SharpDX.DirectSound.SpeakerConfiguration.SevenPointOneWide\"/> instead.)\t\n            </td></tr> <tr><td><see cref=\"F:SharpDX.DirectSound.SpeakerConfiguration.SevenPointOneSurround\"/>\t\n            </td><td>The audio is played through a home theater speaker arrangement of seven surround speakers with a subwoofer. This value applies to Windows XP SP2 or later.\t\n            </td></tr> </table> <p><see cref=\"F:SharpDX.DirectSound.SpeakerConfiguration.Stereo\"/> can be combined with one of the values shown in the following table.</p> <table> <tr><th>Value\t\n            </th><th>Description\t\n            </th></tr> <tr><td><see cref=\"F:SharpDX.DirectSound.SpeakerGeometry.Wide\"/>\t\n            </td><td>The speakers are directed over an arc of 20 degrees.\t\n            </td></tr> <tr><td><see cref=\"F:SharpDX.DirectSound.SpeakerGeometry.Narrow\"/>\t\n            </td><td>The speakers are directed over an arc of 10 degrees.\t\n            </td></tr> <tr><td><see cref=\"F:SharpDX.DirectSound.SpeakerGeometry.Minimum\"/>\t\n            </td><td>The speakers are directed over an arc of 5 degrees.\t\n            </td></tr> <tr><td><see cref=\"F:SharpDX.DirectSound.SpeakerGeometry.Maximum\"/>\t\n            </td><td>The speakers are directed over an arc of 180 degrees.\t\n            </td></tr> </table>  <p>If a geometry value is to be used, it must be packed in a DWORD along with the <see cref=\"F:SharpDX.DirectSound.SpeakerConfiguration.Stereo\"/> flag. This can be done by using the DSSPEAKER_COMBINED macro, as in the following C++ example:</p> <pre> lpds-&gt;SetSpeakerConfig(DSSPEAKER_COMBINED( <see cref=\"F:SharpDX.DirectSound.SpeakerConfiguration.Stereo\"/>, <see cref=\"F:SharpDX.DirectSound.SpeakerGeometry.Wide\"/>)); </pre> <p>To use #defines implemented in Windows Vista, set the DIRECTSOUND_VERSION to 0x1000 before including dsound.h.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSound::SetSpeakerConfig']/*\"/>\t\n            <msdn-id>ee418050</msdn-id>\t\n            <unmanaged>HRESULT IDirectSound::SetSpeakerConfig([In] unsigned int dwSpeakerConfig)</unmanaged>\t\n            <unmanaged-short>IDirectSound::SetSpeakerConfig</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.DirectSound.DirectSoundBase.Capabilities\">\n            <summary>\t\n            The GetCaps method retrieves the capabilities of the hardware device that is represented by the device object.\t\n            </summary>\t\n            <remarks>\t\n            <p>Information retrieved in the <see cref=\"T:SharpDX.DirectSound.Capabilities\"/> structure describes the maximum capabilities of the sound device and those currently available, such as the number of hardware mixing channels and the amount of on-board sound memory. You can use this information to fine-tune performance and optimize resource allocation.</p> <p>Because of resource-sharing requirements, the maximum capabilities in one area might be available only at the cost of another area.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSound::GetCaps']/*\"/>\t\n            <msdn-id>ee418043</msdn-id>\t\n            <unmanaged>GetCaps</unmanaged>\t\n            <unmanaged-short>GetCaps</unmanaged-short>\t\n            <unmanaged>HRESULT IDirectSound::GetCaps([Out] DSCAPS* pDSCaps)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectSound.DirectSound.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectSound.DirectSound\"/> class.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.DirectSound.DirectSound.#ctor(System.Guid)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectSound.DirectSound\"/> class.\n            </summary>\n            <param name=\"driverGuid\">The driver GUID.</param>\n        </member>\n        <member name=\"M:SharpDX.DirectSound.DirectSound.GetSpeakerConfiguration(SharpDX.DirectSound.SpeakerConfiguration@,SharpDX.DirectSound.SpeakerGeometry@)\">\n            <summary>\n            Retrieves the speaker configuration of the device.\n            </summary>\n            <param name=\"speakerSet\" />\n            <param name=\"geometry\" />\n        </member>\n        <member name=\"M:SharpDX.DirectSound.DirectSound.SetSpeakerConfiguration(SharpDX.DirectSound.SpeakerConfiguration,SharpDX.DirectSound.SpeakerGeometry)\">\n            <summary>\n            Sets the speaker configuration of the device.\n            </summary>\n            <param name=\"speakerSet\" />\n            <param name=\"geometry\" />\n        </member>\n        <member name=\"M:SharpDX.DirectSound.DirectSound.GetDevices\">\n            <summary>\n            Enumerates the DirectSound devices installed in the system.\n            </summary>\n            <returns>A collection of the devices found.</returns>\n        </member>\n        <member name=\"M:SharpDX.DirectSound.DirectSound.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectSound.DirectSound\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.DirectSound.op_Explicit(System.IntPtr)~SharpDX.DirectSound.DirectSound\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.DirectSound.DirectSound\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.DirectSound.DirectSound.VerifyCertification(System.Int32@)\">\n            <summary>\t\n            The VerifyCertification method ascertains whether the device driver is certified for DirectX.\t\n            </summary>\t\n            <param name=\"ertifiedRef\"><dd> Address of a DWORD variable that receives one of the values shown in the following table.<table> <tr><td>Value</td><td>Description</td></tr> <tr><td>DS_CERTIFIED</td><td>Driver is certified for DirectSound.</td></tr> <tr><td>DS_UNCERTIFIED</td><td>Driver is not certified for DirectSound.</td></tr> </table> </dd></param>\t\n            <returns><p>If the function succeeds, the return value is DS_OK.</p> <p>If the function fails, the return value may be one of the error values shown in the following table.</p> <table> <tr><td>Return code</td></tr> <tr><td>DSERR_INVALIDPARAM </td></tr> <tr><td>DSERR_UNSUPPORTED </td></tr> </table></returns>\t\n            <remarks>\t\n            <p>This method may attempt to retrieve certification information from the Internet.</p> <p>On emulated devices, the method returns DSERR_UNSUPPORTED. Emulated devices are identified by the <see cref=\"F:SharpDX.DirectSound.CapabilitiesFlags.EmulatedDriver\"/> flag in the dwFlags member of <see cref=\"T:SharpDX.DirectSound.Capabilities\"/>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSound8::VerifyCertification']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.idirectsound8.idirectsound8.verifycertification</msdn-id>\t\n            <unmanaged>HRESULT IDirectSound8::VerifyCertification([Out] unsigned int* pdwCertified)</unmanaged>\t\n            <unmanaged-short>IDirectSound8::VerifyCertification</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.DirectSound.DirectSound.IsCertified\">\n            <summary>\n            Verifies the certification.\n            </summary>\n            <returns>Return true if the driver is certified</returns>\n        </member>\n        <member name=\"T:SharpDX.DirectSound.DirectSoundCapture\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundCapture']/*\"/>\t\n            <unmanaged>IDirectSoundCapture</unmanaged>\t\n            <unmanaged-short>IDirectSoundCapture</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.DirectSoundCapture.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectSound.DirectSoundCapture\" /> class.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.DirectSound.DirectSoundCapture.#ctor(System.Guid)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectSound.DirectSoundCapture\" /> class.\n            </summary>\n            <param name=\"device\" />\n            <returns />\n        </member>\n        <member name=\"M:SharpDX.DirectSound.DirectSoundCapture.GetDevices\">\n            <summary>\n            Enumerates the DirectSoundCapture devices installed in the system.\n            </summary>\n            <returns>A collection of the devices found.</returns>\n        </member>\n        <member name=\"M:SharpDX.DirectSound.DirectSoundCapture.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectSound.DirectSoundCapture\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.DirectSoundCapture.op_Explicit(System.IntPtr)~SharpDX.DirectSound.DirectSoundCapture\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.DirectSound.DirectSoundCapture\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.DirectSound.DirectSoundCapture.CreateCaptureBuffer(SharpDX.DirectSound.CaptureBufferDescription,SharpDX.DirectSound.CaptureBufferBase@,SharpDX.ComObject)\">\n            <summary>\t\n            The CreateCaptureBuffer method creates a buffer for capturing waveform audio.\t\n            </summary>\t\n            <param name=\"cDSCBufferDescRef\"><dd> Pointer to a <see cref=\"T:SharpDX.DirectSound.CaptureBufferDescription\"/> structure containing values for the capture buffer being created. </dd></param>\t\n            <param name=\"dSCBufferOut\"><dd> Address of a variable that receives an <see cref=\"T:SharpDX.DirectSound.CaptureBufferBase\"/> interface reference. Use QueryInterface to obtain <see cref=\"T:SharpDX.DirectSound.CaptureBuffer\"/>. See Remarks. </dd></param>\t\n            <param name=\"unkOuterRef\"><dd> Address of the controlling object's <see cref=\"T:SharpDX.ComObject\"/> interface for COM aggregation. Must be <c>null</c>. </dd></param>\t\n            <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be one of the following error values.</p> <table> <tr><td>Return code</td></tr> <tr><td>DSERR_INVALIDPARAM </td></tr> <tr><td>DSERR_BADFORMAT </td></tr> <tr><td>DSERR_GENERIC </td></tr> <tr><td>DSERR_NODRIVER </td></tr> <tr><td>DSERR_OUTOFMEMORY </td></tr> <tr><td>DSERR_UNINITIALIZED </td></tr> </table></returns>\t\n            <remarks>\t\n            <p>On Microsoft Windows98 and Windows2000, each capture device supports a single buffer.</p> <p>The <see cref=\"T:SharpDX.DirectSound.CaptureBuffer\"/> interface is supported only on buffers created by an object of class CLSID_DirectSoundCapture8. If the IDirectSoundCapture8 interface was obtained from DirectSoundCaptureCreate8, <see cref=\"T:SharpDX.DirectSound.CaptureBuffer\"/> is supported. If IDirectSoundCapture8 was obtained from the earlier DirectSoundCaptureCreate function, only <see cref=\"T:SharpDX.DirectSound.CaptureBufferBase\"/> is supported.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundCapture::CreateCaptureBuffer']/*\"/>\t\n            <msdn-id>ee418156</msdn-id>\t\n            <unmanaged>HRESULT IDirectSoundCapture::CreateCaptureBuffer([In] const DSCBUFFERDESC* pcDSCBufferDesc,[Out] IDirectSoundCaptureBuffer** ppDSCBuffer,[In] IUnknown* pUnkOuter)</unmanaged>\t\n            <unmanaged-short>IDirectSoundCapture::CreateCaptureBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.DirectSoundCapture.GetCapabilities(SharpDX.DirectSound.CaptureCapabilities@)\">\n            <summary>\t\n            The GetCaps method retrieves the capabilities of the capture device.\t\n            </summary>\t\n            <param name=\"dSCCapsRef\"><dd> Pointer to a <see cref=\"T:SharpDX.DirectSound.CaptureCapabilities\"/> structure to be receive information about the capture device. When the method is called, the dwSize member must specify the size of the structure in bytes. </dd></param>\t\n            <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be one of the following error values: </p> <table> <tr><td>Return code</td></tr> <tr><td>DSERR_INVALIDPARAM </td></tr> <tr><td>DSERR_UNSUPPORTED </td></tr> <tr><td>DSERR_NODRIVER </td></tr> <tr><td>DSERR_OUTOFMEMORY </td></tr> <tr><td>DSERR_UNINITIALIZED </td></tr> </table></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundCapture::GetCaps']/*\"/>\t\n            <msdn-id>ee418158</msdn-id>\t\n            <unmanaged>HRESULT IDirectSoundCapture::GetCaps([Out] DSCCAPS* pDSCCaps)</unmanaged>\t\n            <unmanaged-short>IDirectSoundCapture::GetCaps</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.DirectSound.DirectSoundCapture.Capabilities\">\n            <summary>\t\n            The GetCaps method retrieves the capabilities of the capture device.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundCapture::GetCaps']/*\"/>\t\n            <msdn-id>ee418158</msdn-id>\t\n            <unmanaged>GetCaps</unmanaged>\t\n            <unmanaged-short>GetCaps</unmanaged-short>\t\n            <unmanaged>HRESULT IDirectSoundCapture::GetCaps([Out] DSCCAPS* pDSCCaps)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectSound.Distortion\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundFXDistortion']/*\"/>\t\n            <unmanaged>IDirectSoundFXDistortion</unmanaged>\t\n            <unmanaged-short>IDirectSoundFXDistortion</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Distortion.EdgeDefault\">\n            <summary>\n            Default percentage of distortion intensity.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Distortion.EdgeMax\">\n            <summary>\n            Maximum percentage of distortion intensity.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Distortion.EdgeMin\">\n            <summary>\n            Minimum percentage of distortion intensity.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Distortion.GainDefault\">\n            <summary>\n            Default amount of signal change after distortion.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Distortion.GainMax\">\n            <summary>\n            Maximum amount of signal change after distortion.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Distortion.GainMin\">\n            <summary>\n            Minimum amount of signal change after distortion.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Distortion.PostEQBandwidthDefault\">\n            <summary>\n            Default width of frequency band that determines range of harmonic content addition.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Distortion.PostEQBandwidthMax\">\n            <summary>\n            Maximum width of frequency band that determines range of harmonic content addition.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Distortion.PostEQBandwidthMin\">\n            <summary>\n            Minimum width of frequency band that determines range of harmonic content addition.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Distortion.PostEQCenterFrequencyDefault\">\n            <summary>\n            Default center frequency of harmonic content addition.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Distortion.PostEQCenterFrequencyMax\">\n            <summary>\n            Maximum center frequency of harmonic content addition.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Distortion.PostEQCenterFrequencyMin\">\n            <summary>\n            Minimum center frequency of harmonic content addition.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Distortion.PreLowPassCutoffDefault\">\n            <summary>\n            Default filter cutoff for high-frequency harmonics attenuation.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Distortion.PreLowPassCutoffMax\">\n            <summary>\n            Maximum filter cutoff for high-frequency harmonics attenuation.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Distortion.PreLowPassCutoffMin\">\n            <summary>\n            Minimum filter cutoff for high-frequency harmonics attenuation.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.DirectSound.Distortion.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectSound.Distortion\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.Distortion.op_Explicit(System.IntPtr)~SharpDX.DirectSound.Distortion\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.DirectSound.Distortion\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.DirectSound.Distortion.SetAllParameters(SharpDX.DirectSound.DistortionSettings@)\">\n            <summary>\t\n            The SetAllParameters method sets the distortion parameters of a buffer.\t\n            </summary>\t\n            <param name=\"cDsFxDistortionRef\"><dd> Address of a <see cref=\"T:SharpDX.DirectSound.DistortionSettings\"/> structure that specifies the effect parameters. </dd></param>\t\n            <returns><p>If the method succeeds, the return value is DS_OK or S_FALSE. See the Remarks for <see cref=\"T:SharpDX.DirectSound.DistortionSettings\"/>. If the method fails, the return value may be DSERR_INVALIDPARAM.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundFXDistortion::SetAllParameters']/*\"/>\t\n            <msdn-id>ee418220</msdn-id>\t\n            <unmanaged>HRESULT IDirectSoundFXDistortion::SetAllParameters([In] const DSFXDistortion* pcDsFxDistortion)</unmanaged>\t\n            <unmanaged-short>IDirectSoundFXDistortion::SetAllParameters</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.Distortion.GetAllParameters(SharpDX.DirectSound.DistortionSettings@)\">\n            <summary>\t\n            The GetAllParameters method retrieves the distortion parameters of a buffer.\t\n            </summary>\t\n            <param name=\"dsFxDistortionRef\"><dd> Address of a <see cref=\"T:SharpDX.DirectSound.DistortionSettings\"/> structure that receives the effect parameters. </dd></param>\t\n            <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be DSERR_INVALIDPARAM.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundFXDistortion::GetAllParameters']/*\"/>\t\n            <msdn-id>ee418219</msdn-id>\t\n            <unmanaged>HRESULT IDirectSoundFXDistortion::GetAllParameters([Out] DSFXDistortion* pDsFxDistortion)</unmanaged>\t\n            <unmanaged-short>IDirectSoundFXDistortion::GetAllParameters</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.DirectSound.Distortion.AllParameters\">\n            <summary>\t\n            The GetAllParameters method retrieves the distortion parameters of a buffer.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundFXDistortion::GetAllParameters']/*\"/>\t\n            <msdn-id>ee418219</msdn-id>\t\n            <unmanaged>GetAllParameters / SetAllParameters</unmanaged>\t\n            <unmanaged-short>GetAllParameters</unmanaged-short>\t\n            <unmanaged>HRESULT IDirectSoundFXDistortion::GetAllParameters([Out] DSFXDistortion* pDsFxDistortion)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectSound.Echo\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundFXEcho']/*\"/>\t\n            <unmanaged>IDirectSoundFXEcho</unmanaged>\t\n            <unmanaged-short>IDirectSoundFXEcho</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Echo.FeedbackDefault\">\n            <summary>\n            Default percentage of output fed back into input.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Echo.FeedbackMax\">\n            <summary>\n            Maximum percentage of output fed back into input.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Echo.FeedbackMin\">\n            <summary>\n            Minimum percentage of output fed back into input.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Echo.LeftDelayDefault\">\n            <summary>\n            Default delay for left channel, in milliseconds.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Echo.LeftDelayMax\">\n            <summary>\n            Maximum delay for left channel, in milliseconds.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Echo.LeftDelayMin\">\n            <summary>\n            Minimum delay for left channel, in milliseconds.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Echo.PanDelayDefault\">\n            <summary>\n            Default value that specifies whether to swap left and right delays with each successive echo. The default value is zero, meaning no swap.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Echo.PanDelayMax\">\n            <summary>\n            Maximum value that specifies whether to swap left and right delays with each successive echo. The default value is zero, meaning no swap.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Echo.PanDelayMin\">\n            <summary>\n            Minimum value that specifies whether to swap left and right delays with each successive echo. The default value is zero, meaning no swap.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Echo.RightDelayDefault\">\n            <summary>\n            Default delay for right channel, in milliseconds.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Echo.RightDelayMax\">\n            <summary>\n            Maximum delay for right channel, in milliseconds.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Echo.RightDelayMin\">\n            <summary>\n            Minimum delay for right channel, in milliseconds.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Echo.WetDryMixDefault\">\n            <summary>\n            Default ratio of wet (processed) signal to dry (unprocessed) signal.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Echo.WetDryMixMax\">\n            <summary>\n            Maximum ratio of wet (processed) signal to dry (unprocessed) signal.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Echo.WetDryMixMin\">\n            <summary>\n            Minimum ratio of wet (processed) signal to dry (unprocessed) signal.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.DirectSound.Echo.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectSound.Echo\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.Echo.op_Explicit(System.IntPtr)~SharpDX.DirectSound.Echo\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.DirectSound.Echo\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.DirectSound.Echo.SetAllParameters(SharpDX.DirectSound.EchoSettings@)\">\n            <summary>\t\n            The SetAllParameters method sets the echo parameters of a buffer.\t\n            </summary>\t\n            <param name=\"cDsFxEchoRef\"><dd> Address of a <see cref=\"T:SharpDX.DirectSound.EchoSettings\"/> structure that specifies the effect parameters. </dd></param>\t\n            <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be DSERR_INVALIDPARAM.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundFXEcho::SetAllParameters']/*\"/>\t\n            <msdn-id>ee418224</msdn-id>\t\n            <unmanaged>HRESULT IDirectSoundFXEcho::SetAllParameters([In] const DSFXEcho* pcDsFxEcho)</unmanaged>\t\n            <unmanaged-short>IDirectSoundFXEcho::SetAllParameters</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.Echo.GetAllParameters(SharpDX.DirectSound.EchoSettings@)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"dsFxEchoRef\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundFXEcho::GetAllParameters']/*\"/>\t\n            <unmanaged>HRESULT IDirectSoundFXEcho::GetAllParameters([Out] DSFXEcho* pDsFxEcho)</unmanaged>\t\n            <unmanaged-short>IDirectSoundFXEcho::GetAllParameters</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.DirectSound.Echo.AllParameters\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundFXEcho::GetAllParameters']/*\"/>\t\n            <unmanaged>GetAllParameters / SetAllParameters</unmanaged>\t\n            <unmanaged-short>GetAllParameters</unmanaged-short>\t\n            <unmanaged>HRESULT IDirectSoundFXEcho::GetAllParameters([Out] DSFXEcho* pDsFxEcho)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectSound.NamespaceDoc\">\n            <summary>\n            The <see cref=\"N:SharpDX.DirectSound\"/> namespace provides a managed DirectSound API.\n            </summary>\n            <msdn-id>ee416960</msdn-id>\n            <unmanaged>DirectSound</unmanaged>\t\n            <unmanaged-short>DirectSound</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectSound.SoundBuffer3D\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSound3DBuffer']/*\"/>\t\n            <unmanaged>IDirectSound3DBuffer</unmanaged>\t\n            <unmanaged-short>IDirectSound3DBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.SoundBuffer3D.DefaultConeAngle\">\n            <summary>\n            Default cone angle, in degrees.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.SoundBuffer3D.DefaultConeOutsideVolume\">\n            <summary>\n            Default outside cone volume. Volume levels are expressed as attenuation, in hundredths of a decibel.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.SoundBuffer3D.DefaultMaxDistance\">\n            <summary>\n            Default maximum distance, in meters.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.SoundBuffer3D.DefaultMinDistance\">\n            <summary>\n            Default minimum distance, in meters.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.SoundBuffer3D.MaxConeAngle\">\n            <summary>\n            Maximum cone angle, in degrees.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.SoundBuffer3D.MinConeAngle\">\n            <summary>\n            Minimum cone angle, in degrees.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.DirectSound.SoundBuffer3D.#ctor(SharpDX.DirectSound.SoundBuffer)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectSound.SoundBuffer3D\" /> class.\n            </summary>\n            <param name=\"soundBuffer\" />\n            <returns />\n        </member>\n        <member name=\"M:SharpDX.DirectSound.SoundBuffer3D.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectSound.SoundBuffer3D\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.SoundBuffer3D.op_Explicit(System.IntPtr)~SharpDX.DirectSound.SoundBuffer3D\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.DirectSound.SoundBuffer3D\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.DirectSound.SoundBuffer3D.GetAllParameters(SharpDX.DirectSound.Buffer3DSettings@)\">\n            <summary>\t\n            The GetAllParameters method retrieves the 3D properties of the sound buffer.\t\n            </summary>\t\n            <param name=\"ds3dBufferRef\"><dd> Address of a <see cref=\"T:SharpDX.DirectSound.Buffer3DSettings\"/> structure that receives the information describing the 3D characteristics of the sound buffer. </dd></param>\t\n            <returns><p>If the method succeeds, the return value is DS_OK.</p> <p>If the method fails, the return value may be DSERR_INVALIDPARAM.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSound3DBuffer::GetAllParameters']/*\"/>\t\n            <msdn-id>ee417963</msdn-id>\t\n            <unmanaged>HRESULT IDirectSound3DBuffer::GetAllParameters([Out] DS3DBUFFER* pDs3dBuffer)</unmanaged>\t\n            <unmanaged-short>IDirectSound3DBuffer::GetAllParameters</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.SoundBuffer3D.GetConeAngles(System.Int32@,System.Int32@)\">\n            <summary>\t\n            The GetConeAngles method retrieves the inside and outside angles of the sound projection cone.\t\n            </summary>\t\n            <param name=\"nsideConeAngleRef\"><dd> Addresses of a variable that receives the inside angle of the sound projection cone, in degrees. This is the angle within which the sound is at its normal volume. </dd></param>\t\n            <param name=\"utsideConeAngleRef\"><dd> Addresses of a variable that receives the outside angle of the sound projection cone, in degrees. This is the angle outside of which the sound is at its outside volume. </dd></param>\t\n            <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be DSERR_INVALIDPARAM.</p></returns>\t\n            <remarks>\t\n            <p>The minimum, maximum, and default cone angles are defined in Dsound.h as DS3D_MINCONEANGLE, DS3D_MAXCONEANGLE, and DS3D_DEFAULTCONEANGLE.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSound3DBuffer::GetConeAngles']/*\"/>\t\n            <msdn-id>ee417965</msdn-id>\t\n            <unmanaged>HRESULT IDirectSound3DBuffer::GetConeAngles([Out] unsigned int* pdwInsideConeAngle,[Out] unsigned int* pdwOutsideConeAngle)</unmanaged>\t\n            <unmanaged-short>IDirectSound3DBuffer::GetConeAngles</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.SoundBuffer3D.GetConeOrientation(SharpDX.Vector3@)\">\n            <summary>\t\n            The GetConeOrientation method retrieves the orientation of the sound projection cone.\t\n            </summary>\t\n            <param name=\"vOrientationRef\"><dd> Address of a <see cref=\"T:SharpDX.Vector3\"/> structure that receives the orientation of the sound projection cone. The vector information represents the center of the sound cone. </dd></param>\t\n            <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be DSERR_INVALIDPARAM.</p></returns>\t\n            <remarks>\t\n            <p>The values returned are not necessarily the same as those set by using the SetConeOrientation method. DirectSound normalizes orientation vectors so that all axes have a magnitude of less than or equal to 1.0.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSound3DBuffer::GetConeOrientation']/*\"/>\t\n            <msdn-id>ee417966</msdn-id>\t\n            <unmanaged>HRESULT IDirectSound3DBuffer::GetConeOrientation([Out] D3DVECTOR* pvOrientation)</unmanaged>\t\n            <unmanaged-short>IDirectSound3DBuffer::GetConeOrientation</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.SoundBuffer3D.GetConeOutsideVolume(System.Int32@)\">\n            <summary>\t\n            The GetConeOutsideVolume method retrieves the volume of the sound outside the outside angle of the sound projection cone.\t\n            </summary>\t\n            <param name=\"lConeOutsideVolumeRef\"><dd> Address of a variable that receives the cone outside volume for this buffer. </dd></param>\t\n            <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be DSERR_INVALIDPARAM.</p></returns>\t\n            <remarks>\t\n            <p>Volume levels are expressed as attenuation, in hundredths of a decibel. Allowable values are between DSBVOLUME_MAX (no attenuation) and DSBVOLUME_MIN (silence). The default value is DS3D_DEFAULTCONEOUTSIDEVOLUME (no attenuation). These values are defined in Dsound.h. DirectSound does not support amplification.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSound3DBuffer::GetConeOutsideVolume']/*\"/>\t\n            <msdn-id>ee417969</msdn-id>\t\n            <unmanaged>HRESULT IDirectSound3DBuffer::GetConeOutsideVolume([Out] int* plConeOutsideVolume)</unmanaged>\t\n            <unmanaged-short>IDirectSound3DBuffer::GetConeOutsideVolume</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.SoundBuffer3D.GetMaxDistance(System.Single@)\">\n            <summary>\t\n            The GetMaxDistance method retrieves the maximum distance, which is the distance from the listener beyond which sounds in this buffer are no longer attenuated.\t\n            </summary>\t\n            <param name=\"flMaxDistanceRef\"><dd> Address of a variable that receives the maximum distance, in meters by default. D3DVALUE is defined as float.  </dd></param>\t\n            <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be DSERR_INVALIDPARAM.</p></returns>\t\n            <remarks>\t\n            <p>The default maximum distance, defined as DS3D_DEFAULTMAXDISTANCE, is effectively infinite.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSound3DBuffer::GetMaxDistance']/*\"/>\t\n            <msdn-id>ee417971</msdn-id>\t\n            <unmanaged>HRESULT IDirectSound3DBuffer::GetMaxDistance([Out] float* pflMaxDistance)</unmanaged>\t\n            <unmanaged-short>IDirectSound3DBuffer::GetMaxDistance</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.SoundBuffer3D.GetMinDistance(System.Single@)\">\n            <summary>\t\n            The GetMinDistance method retrieves the minimum distance, which is the distance from the listener at which sounds in this buffer begin to be attenuated.\t\n            </summary>\t\n            <param name=\"flMinDistanceRef\"><dd> Address of a variable that receives the minimum distance, in meters by default. D3DVALUE is defined as float.  </dd></param>\t\n            <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be DSERR_INVALIDPARAM.</p></returns>\t\n            <remarks>\t\n            <p>By default, the minimum distance value is DS3D_DEFAULTMINDISTANCE, defined as 1.0 (corresponding to 1.0 meter at the default distance factor of 1.0 meters per unit).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSound3DBuffer::GetMinDistance']/*\"/>\t\n            <msdn-id>ee417973</msdn-id>\t\n            <unmanaged>HRESULT IDirectSound3DBuffer::GetMinDistance([Out] float* pflMinDistance)</unmanaged>\t\n            <unmanaged-short>IDirectSound3DBuffer::GetMinDistance</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.SoundBuffer3D.GetMode(System.Int32@)\">\n            <summary>\t\n            The GetMode method retrieves the operation mode for 3D sound processing.\t\n            </summary>\t\n            <param name=\"odeRef\"><dd> Address of a variable that receives the mode setting. This value will be one of those in the following table. <table> <tr><td>Value</td><td>Description</td></tr> <tr><td><see cref=\"F:SharpDX.DirectSound.Mode3D.Disable\"/></td><td>Processing of 3D sound is disabled. The sound seems to originate from the center of the listener's head.</td></tr> <tr><td><see cref=\"F:SharpDX.DirectSound.Mode3D.HeadRelative\"/></td><td>Sound parameters (position, velocity, and orientation) are relative to the listener's parameters. In this mode, the absolute parameters of the sound are updated automatically as the listener's parameters change, so that the relative parameters remain constant.</td></tr> <tr><td><see cref=\"F:SharpDX.DirectSound.Mode3D.Normal\"/></td><td>Normal processing. This is the default mode.</td></tr> </table> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be DSERR_INVALIDPARAM.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSound3DBuffer::GetMode']/*\"/>\t\n            <msdn-id>ee417975</msdn-id>\t\n            <unmanaged>HRESULT IDirectSound3DBuffer::GetMode([Out] unsigned int* pdwMode)</unmanaged>\t\n            <unmanaged-short>IDirectSound3DBuffer::GetMode</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.SoundBuffer3D.GetPosition(SharpDX.Vector3@)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"vPositionRef\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSound3DBuffer::GetPosition']/*\"/>\t\n            <unmanaged>HRESULT IDirectSound3DBuffer::GetPosition([Out] D3DVECTOR* pvPosition)</unmanaged>\t\n            <unmanaged-short>IDirectSound3DBuffer::GetPosition</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.SoundBuffer3D.GetVelocity(SharpDX.Vector3@)\">\n            <summary>\t\n            The GetVelocity method retrieves the velocity of the sound source.\t\n            </summary>\t\n            <param name=\"vVelocityRef\"><dd> Address of a <see cref=\"T:SharpDX.Vector3\"/> structure that receives the sound buffer's velocity, in meters per second by default. </dd></param>\t\n            <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be DSERR_INVALIDPARAM.</p></returns>\t\n            <remarks>\t\n            <p>Velocity is used for Doppler effects only. It does not actually move the buffer. For more information, see Doppler Effect.</p> <p>The default unit of measurement is meters per second, but this can be changed by using the SetDistanceFactor method.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSound3DBuffer::GetVelocity']/*\"/>\t\n            <msdn-id>ee417979</msdn-id>\t\n            <unmanaged>HRESULT IDirectSound3DBuffer::GetVelocity([Out] D3DVECTOR* pvVelocity)</unmanaged>\t\n            <unmanaged-short>IDirectSound3DBuffer::GetVelocity</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.SoundBuffer3D.SetAllParameters(SharpDX.DirectSound.Buffer3DSettings,System.Int32)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"cDs3dBufferRef\">No documentation.</param>\t\n            <param name=\"apply\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSound3DBuffer::SetAllParameters']/*\"/>\t\n            <unmanaged>HRESULT IDirectSound3DBuffer::SetAllParameters([In] const DS3DBUFFER* pcDs3dBuffer,[In] unsigned int dwApply)</unmanaged>\t\n            <unmanaged-short>IDirectSound3DBuffer::SetAllParameters</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.SoundBuffer3D.SetConeAngles(System.Int32,System.Int32,System.Int32)\">\n            <summary>\t\n            The SetConeAngles method sets the inside and outside angles of the sound projection cone.\t\n            </summary>\t\n            <param name=\"insideConeAngle\"><dd> Inside cone angle, in degrees. This is the angle within which the sound is at its normal volume. </dd></param>\t\n            <param name=\"outsideConeAngle\"><dd> Outside cone angle, in degrees. This is the angle outside of which the sound is at its outside volume. </dd></param>\t\n            <param name=\"apply\"><dd> Value that indicates when the setting should be applied. Must be one of the following: <table> <tr><td>Value</td><td>Description</td></tr> <tr><td>DS3D_DEFERRED</td><td>Settings are not applied until the application calls the CommitDeferredSettings method. This allows the application to change several settings and generate a single recalculation.</td></tr> <tr><td>DS3D_IMMEDIATE</td><td>Settings are applied immediately, causing the system to recalculate the 3D coordinates for all 3D sound buffers.</td></tr> </table> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be DSERR_INVALIDPARAM.</p></returns>\t\n            <remarks>\t\n            <p>The minimum, maximum, and default cone angles are defined in Dsound.h as DS3D_MINCONEANGLE, DS3D_MAXCONEANGLE, and DS3D_DEFAULTCONEANGLE. Each angle must be in the range of 0 degrees (no cone) to 360 degrees (the full sphere). The default value is 360.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSound3DBuffer::SetConeAngles']/*\"/>\t\n            <msdn-id>ee417984</msdn-id>\t\n            <unmanaged>HRESULT IDirectSound3DBuffer::SetConeAngles([In] unsigned int dwInsideConeAngle,[In] unsigned int dwOutsideConeAngle,[In] unsigned int dwApply)</unmanaged>\t\n            <unmanaged-short>IDirectSound3DBuffer::SetConeAngles</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.SoundBuffer3D.SetConeOrientation(System.Single,System.Single,System.Single,System.Int32)\">\n            <summary>\t\n            The SetConeOrientation method sets the orientation of the sound projection cone.\t\n            </summary>\t\n            <param name=\"x\"><dd> Value that specifies the x coordinate of the sound cone orientation vector. D3DVALUE is defined as float.  </dd></param>\t\n            <param name=\"y\"><dd> Value that specifies the y coordinate of the sound cone orientation vector. D3DVALUE is defined as float.   </dd></param>\t\n            <param name=\"z\"><dd> Value that specifies the z coordinate of the sound cone orientation vector. D3DVALUE is defined as float.  \t </dd></param>\t\n            <param name=\"apply\"><dd> Value that specifies when the setting should be applied. This value must be one of the following: <table> <tr><td>Value</td><td>Description</td></tr> <tr><td>DS3D_DEFERRED</td><td>Settings are not applied until the application calls the CommitDeferredSettings method. This allows the application to change several settings and generate a single recalculation.</td></tr> <tr><td>DS3D_IMMEDIATE</td><td>Settings are applied immediately, causing the system to recalculate the 3D coordinates for all 3D sound buffers.</td></tr> </table> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be DSERR_INVALIDPARAM.</p></returns>\t\n            <remarks>\t\n            <p>This method has no effect unless the cone angle and cone outside volume have also been set to values other than the default.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSound3DBuffer::SetConeOrientation']/*\"/>\t\n            <msdn-id>ee417986</msdn-id>\t\n            <unmanaged>HRESULT IDirectSound3DBuffer::SetConeOrientation([In] float x,[In] float y,[In] float z,[In] unsigned int dwApply)</unmanaged>\t\n            <unmanaged-short>IDirectSound3DBuffer::SetConeOrientation</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.SoundBuffer3D.SetConeOutsideVolume(System.Int32,System.Int32)\">\n            <summary>\t\n            The SetConeOutsideVolume method sets the volume of the sound outside the outside angle of the sound projection cone.\t\n            </summary>\t\n            <param name=\"coneOutsideVolume\"><dd> Cone outside volume, in hundredths of a decibel. </dd></param>\t\n            <param name=\"apply\"><dd> Value that specifies when the setting should be applied. This value must be one of the those shown in the following table.<table> <tr><td>Value</td><td>Description</td></tr> <tr><td>DS3D_DEFERRED</td><td>Settings are not applied until the application calls the CommitDeferredSettings method. This allows the application to change several settings and generate a single recalculation.</td></tr> <tr><td>DS3D_IMMEDIATE</td><td>Settings are applied immediately, causing the system to recalculate the 3D coordinates for all 3D sound buffers.</td></tr> </table> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be DSERR_INVALIDPARAM.</p></returns>\t\n            <remarks>\t\n            <p>Volume levels are represented by attenuation. Allowable values are between DSBVOLUME_MAX (no attenuation) and DSBVOLUME_MIN (silence). The default value is DS3D_DEFAULTCONEOUTSIDEVOLUME (no attenuation). These values are defined in Dsound.h. DirectSound does not support amplification.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSound3DBuffer::SetConeOutsideVolume']/*\"/>\t\n            <msdn-id>ee417987</msdn-id>\t\n            <unmanaged>HRESULT IDirectSound3DBuffer::SetConeOutsideVolume([In] int lConeOutsideVolume,[In] unsigned int dwApply)</unmanaged>\t\n            <unmanaged-short>IDirectSound3DBuffer::SetConeOutsideVolume</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.SoundBuffer3D.SetMaxDistance(System.Single,System.Int32)\">\n            <summary>\t\n            The SetMaxDistance method sets the maximum distance, which is the distance from the listener beyond which sounds in this buffer are no longer attenuated.\t\n            </summary>\t\n            <param name=\"maxDistance\"><dd> Maximum distance, in meters by default. D3DVALUE is defined as float.  </dd></param>\t\n            <param name=\"apply\"><dd> Value that specifies when the setting should be applied. This value must be one of the following: <table> <tr><td>Value</td><td>Description</td></tr> <tr><td>DS3D_DEFERRED</td><td>Settings are not applied until the application calls the CommitDeferredSettings method. This allows the application to change several settings and generate a single recalculation.</td></tr> <tr><td>DS3D_IMMEDIATE</td><td>Settings are applied immediately, causing the system to recalculate the 3D coordinates for all 3D sound buffers.</td></tr> </table> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be DSERR_INVALIDPARAM.</p></returns>\t\n            <remarks>\t\n            <p>The default maximum distance, defined as DS3D_DEFAULTMAXDISTANCE, is effectively infinite.</p> <p>The default unit of measurement is meters, but this can be changed by using the SetDistanceFactor method.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSound3DBuffer::SetMaxDistance']/*\"/>\t\n            <msdn-id>ee417989</msdn-id>\t\n            <unmanaged>HRESULT IDirectSound3DBuffer::SetMaxDistance([In] float flMaxDistance,[In] unsigned int dwApply)</unmanaged>\t\n            <unmanaged-short>IDirectSound3DBuffer::SetMaxDistance</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.SoundBuffer3D.SetMinDistance(System.Single,System.Int32)\">\n            <summary>\t\n            The SetMinDistance method sets the minimum distance, which is the distance from the listener at which sounds in this buffer begin to be attenuated.\t\n            </summary>\t\n            <param name=\"minDistance\"><dd> Minimum distance, in meters by default. D3DVALUE is defined as float.  </dd></param>\t\n            <param name=\"apply\"><dd> Value that specifies when the setting should be applied. This value must be one of the following: <table> <tr><td>Value</td><td>Description</td></tr> <tr><td>DS3D_DEFERRED</td><td>Settings are not applied until the application calls the CommitDeferredSettings method. This allows the application to change several settings and generate a single recalculation.</td></tr> <tr><td>DS3D_IMMEDIATE</td><td>Settings are applied immediately, causing the system to recalculate the 3D coordinates for all 3D sound buffers.</td></tr> </table> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be DSERR_INVALIDPARAM.</p></returns>\t\n            <remarks>\t\n            <p>By default, the minimum distance value is DS3D_DEFAULTMINDISTANCE, defined as 1.0 (corresponding to 1.0 meter at the default distance factor of 1.0 meters per unit).</p> <p>The default unit of measurement is meters, but this can be changed by using the SetDistanceFactor method.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSound3DBuffer::SetMinDistance']/*\"/>\t\n            <msdn-id>ee417991</msdn-id>\t\n            <unmanaged>HRESULT IDirectSound3DBuffer::SetMinDistance([In] float flMinDistance,[In] unsigned int dwApply)</unmanaged>\t\n            <unmanaged-short>IDirectSound3DBuffer::SetMinDistance</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.SoundBuffer3D.SetMode(System.Int32,System.Int32)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"mode\">No documentation.</param>\t\n            <param name=\"apply\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSound3DBuffer::SetMode']/*\"/>\t\n            <unmanaged>HRESULT IDirectSound3DBuffer::SetMode([In] unsigned int dwMode,[In] unsigned int dwApply)</unmanaged>\t\n            <unmanaged-short>IDirectSound3DBuffer::SetMode</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.SoundBuffer3D.SetPosition(System.Single,System.Single,System.Single,System.Int32)\">\n            <summary>\t\n            The SetPosition method sets the position of the sound source.\t\n            </summary>\t\n            <param name=\"x\"><dd> Value that specifies the x coordinate of the position vector. DirectSound may adjust these values to prevent floating-point overflow. D3DVALUE is defined as float.  </dd></param>\t\n            <param name=\"y\"><dd> Value that specifies the y coordinate of the position vector. DirectSound may adjust these values to prevent floating-point overflow. D3DVALUE is defined as float.  </dd></param>\t\n            <param name=\"z\"><dd> Value that specifies the z coordinate of the position vector. DirectSound may adjust these values to prevent floating-point overflow. D3DVALUE is defined as float.  </dd></param>\t\n            <param name=\"apply\"><dd> Value that specifies when the setting should be applied. This value must be one of the following:  <table> <tr><td>Value</td><td>Description</td></tr> <tr><td>DS3D_DEFERRED</td><td>Settings are not applied until the application calls the CommitDeferredSettings method. This allows the application to change several settings and generate a single recalculation.</td></tr> <tr><td>DS3D_IMMEDIATE</td><td>Settings are applied immediately, causing the system to recalculate the 3D coordinates for all 3D sound buffers.</td></tr> </table> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be DSERR_INVALIDPARAM.</p></returns>\t\n            <remarks>\t\n            <p>The default unit of measurement is meters, but this can be changed by using the SetDistanceFactor method.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSound3DBuffer::SetPosition']/*\"/>\t\n            <msdn-id>ee417996</msdn-id>\t\n            <unmanaged>HRESULT IDirectSound3DBuffer::SetPosition([In] float x,[In] float y,[In] float z,[In] unsigned int dwApply)</unmanaged>\t\n            <unmanaged-short>IDirectSound3DBuffer::SetPosition</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.SoundBuffer3D.SetVelocity(System.Single,System.Single,System.Single,System.Int32)\">\n            <summary>\t\n            The SetVelocity method sets the velocity of the sound source.\t\n            </summary>\t\n            <param name=\"x\"><dd> Value that specifies the x coordinate of the velocity vector, in meters per second by default. DirectSound may adjust these values to prevent floating-point overflow. D3DVALUE is defined as float.  </dd></param>\t\n            <param name=\"y\"><dd> Value that specifies the y coordinate of the velocity vector, in meters per second by default. DirectSound may adjust these values to prevent floating-point overflow. D3DVALUE is defined as float.  </dd></param>\t\n            <param name=\"z\"><dd> Value that specifies the z coordinate of the velocity vector, in meters per second by default. DirectSound may adjust these values to prevent floating-point overflow. D3DVALUE is defined as float.  </dd></param>\t\n            <param name=\"apply\"><dd> Value that specifies when the setting should be applied. This value must be one of the following:  <table> <tr><td>Value</td><td>Description</td></tr> <tr><td>DS3D_DEFERRED</td><td>Settings are not applied until the application calls the CommitDeferredSettings method. This allows the application to change several settings and generate a single recalculation.</td></tr> <tr><td>DS3D_IMMEDIATE</td><td>Settings are applied immediately, causing the system to recalculate the 3D coordinates for all 3D sound buffers.</td></tr> </table> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be DSERR_INVALIDPARAM.</p></returns>\t\n            <remarks>\t\n            <p>Velocity is used only for calculating Doppler effect. It does not change the position of the buffer. For more information, see Doppler Effect.</p> <p>The default unit of measurement is meters per second, but this can be changed by using the SetDistanceFactor method.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSound3DBuffer::SetVelocity']/*\"/>\t\n            <msdn-id>ee418001</msdn-id>\t\n            <unmanaged>HRESULT IDirectSound3DBuffer::SetVelocity([In] float x,[In] float y,[In] float z,[In] unsigned int dwApply)</unmanaged>\t\n            <unmanaged-short>IDirectSound3DBuffer::SetVelocity</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.DirectSound.SoundBuffer3D.AllParameters\">\n            <summary>\n            Gets or sets all the  parameters of a buffer\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.DirectSound.SoundBuffer3D.ConeOrientation\">\n            <summary>\n            The orientation of the sound projection cone.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.DirectSound.SoundBuffer3D.ConeOutsideVolume\">\n            <summary>\n            The volume of the sound outside the outside angle of the sound projection cone.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.DirectSound.SoundBuffer3D.Deferred\">\n            <summary>\n            Settings are not applied until the application calls the SoundListener3D.CommitDeferredSettings() if true.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.DirectSound.SoundBuffer3D.InsideConeAngle\">\n            <summary>\n            The inside angle of the sound projection cone.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.DirectSound.SoundBuffer3D.MaxDistance\">\n            <summary>\n            The maximum distance, which is the distance from the listener beyond which sounds in this buffer are no longer attenuated.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.DirectSound.SoundBuffer3D.MinDistance\">\n            <summary>\n            The minimum distance, which is the distance from the listener at which sounds in this buffer begin to be attenuated.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.DirectSound.SoundBuffer3D.Mode\">\n            <summary>\n            The operation mode for 3-D sound processing.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.DirectSound.SoundBuffer3D.OutsideConeAngle\">\n            <summary>\n            The outside angle of the sound projection cone.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.DirectSound.SoundBuffer3D.Position\">\n            <summary>\n            The position of the sound source.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.DirectSound.SoundBuffer3D.Velocity\">\n            <summary>\n            The velocity of the sound source.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.DirectSound.SoundBufferEffectDescription\">\n            <summary>\t\n            The <see cref=\"T:SharpDX.DirectSound.SoundBufferEffectDescription\"/> structure describes an effect associated with a buffer.\t\n            </summary>\t\n            <remarks>\t\n            <p>Custom effects can be implemented as DMOs. Effect DMOs must implement the <see cref=\"!:SharpDX.MediaFoundation.IMediaObject\"/> and <see cref=\"!:SharpDX.MediaFoundation.IMediaObjectInPlace\"/> interfaces.</p> <p>If dwFlags is zero, the effect is placed in hardware if possible. If the hardware does not support the effect (always the case since DirectX 9.0), software is used. If the effect is not available at all, the call to SetFX fails.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSEFFECTDESC']/*\"/>\t\n            <msdn-id>ee416828</msdn-id>\t\n            <unmanaged>DSEFFECTDESC</unmanaged>\t\n            <unmanaged-short>DSEFFECTDESC</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.SoundBufferEffectDescription.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectSound.SoundBufferEffectDescription\"/> class.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.SoundBufferEffectDescription.Size\">\n            <summary>\t\n            <dd> Size of the structure, in bytes. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSEFFECTDESC::dwSize']/*\"/>\t\n            <msdn-id>ee416828</msdn-id>\t\n            <unmanaged>unsigned int dwSize</unmanaged>\t\n            <unmanaged-short>unsigned int dwSize</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.SoundBufferEffectDescription.Flags\">\n            <summary>\t\n            <dd> Flags. Can be zero or one of the following values. <table> <tr><th>Value\t\n            </th><th>Description\t\n            </th></tr> <tr><td>DSFX_LOCHARDWARE\t\n            </td><td>Effect must be in hardware. If the effect is not available in hardware, <see cref=\"M:SharpDX.DirectSound.SecondarySoundBuffer.SetEffect(System.Int32,SharpDX.DirectSound.SoundBufferEffectDescription[],SharpDX.DirectSound.SoundEffectResult[])\"/> raises an error. Since DirectX 9.0, DirectX does not support hardware acceleration of effects, so this flag should not be used.\t\n            </td></tr> <tr><td>DSFX_LOCSOFTWARE\t\n            </td><td>Effect must be in software, even if the hardware supports acceleration of guidDSFXClass. If the effect is not available in software, SetFX raises an error. Since DirectX 9.0, all effects are in software regardless of whether this flag is set.\t\n            </td></tr> </table> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSEFFECTDESC::dwFlags']/*\"/>\t\n            <msdn-id>ee416828</msdn-id>\t\n            <unmanaged>unsigned int dwFlags</unmanaged>\t\n            <unmanaged-short>unsigned int dwFlags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.SoundBufferEffectDescription.idDSFXClass\">\n            <summary>\t\n            <dd> Class identifier of the effect. The following standard effect classes are defined. <table> <tr><th>Value\t\n            </th><th>Description\t\n            </th></tr> <tr><td><see cref=\"F:SharpDX.DirectSound.SoundEffectGuid.StandardChorus\"/>\t\n            </td><td>Chorus\t\n            </td></tr> <tr><td><see cref=\"F:SharpDX.DirectSound.SoundEffectGuid.StandardCompressor\"/>\t\n            </td><td>Compressor\t\n            </td></tr> <tr><td><see cref=\"F:SharpDX.DirectSound.SoundEffectGuid.StandardDistortion\"/>\t\n            </td><td>Distortion\t\n            </td></tr> <tr><td><see cref=\"F:SharpDX.DirectSound.SoundEffectGuid.StandardEcho\"/>\t\n            </td><td>Echo\t\n            </td></tr> <tr><td><see cref=\"F:SharpDX.DirectSound.SoundEffectGuid.StandardFlanger\"/>\t\n            </td><td>Flanger\t\n            </td></tr> <tr><td><see cref=\"F:SharpDX.DirectSound.SoundEffectGuid.StandardGargle\"/>\t\n            </td><td>Gargle\t\n            </td></tr> <tr><td><see cref=\"F:SharpDX.DirectSound.SoundEffectGuid.StandardI3DL2REVERB\"/>\t\n            </td><td>Interactive 3D Level 2 reverb\t\n            </td></tr> <tr><td><see cref=\"F:SharpDX.DirectSound.SoundEffectGuid.StandardParameq\"/>\t\n            </td><td>Parametric equalizer\t\n            </td></tr> <tr><td><see cref=\"F:SharpDX.DirectSound.SoundEffectGuid.WavesReverb\"/>\t\n            </td><td>Waves reverb\t\n            </td></tr> </table> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSEFFECTDESC::guidDSFXClass']/*\"/>\t\n            <msdn-id>ee416828</msdn-id>\t\n            <unmanaged>GUID guidDSFXClass</unmanaged>\t\n            <unmanaged-short>GUID guidDSFXClass</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.SoundBufferEffectDescription.Reserved1\">\n            <summary>\t\n            <dd> Reserved for future use. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSEFFECTDESC::dwReserved1']/*\"/>\t\n            <msdn-id>ee416828</msdn-id>\t\n            <unmanaged>ULONG_PTR dwReserved1</unmanaged>\t\n            <unmanaged-short>ULONG_PTR dwReserved1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.SoundBufferEffectDescription.Reserved2\">\n            <summary>\t\n            <dd> Reserved for future use. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSEFFECTDESC::dwReserved2']/*\"/>\t\n            <msdn-id>ee416828</msdn-id>\t\n            <unmanaged>ULONG_PTR dwReserved2</unmanaged>\t\n            <unmanaged-short>ULONG_PTR dwReserved2</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectSound.EnumDelegateCallback\">\n            <summary>\n            Enumerator callback for DirectSound and DirectCaptureSound.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.DirectSound.EnumDelegateCallback.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectSound.EnumDelegateCallback\"/> class.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.DirectSound.EnumDelegateCallback.NativePointer\">\n            <summary>\n            Natives the pointer.\n            </summary>\n            <returns></returns>\n        </member>\n        <member name=\"P:SharpDX.DirectSound.EnumDelegateCallback.Informations\">\n            <summary>\n            Gets or sets the informations.\n            </summary>\n            <value>The informations.</value>\n        </member>\n        <member name=\"T:SharpDX.DirectSound.Flanger\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundFXFlanger']/*\"/>\t\n            <unmanaged>IDirectSoundFXFlanger</unmanaged>\t\n            <unmanaged-short>IDirectSoundFXFlanger</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Flanger.DelayDefault\">\n            <summary>\n            Default number of milliseconds the input is delayed before it is played back.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Flanger.DelayMax\">\n            <summary>\n            Maximum number of milliseconds the input is delayed before it is played back.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Flanger.DelayMin\">\n            <summary>\n            Minimum number of milliseconds the input is delayed before it is played back.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Flanger.DepthDefault\">\n            <summary>\n            Default percentage by which the delay time is modulated by the low-frequency oscillator (LFO), in hundredths of a percentage point.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Flanger.DepthMax\">\n            <summary>\n            Maximum percentage by which the delay time is modulated by the low-frequency oscillator (LFO), in hundredths of a percentage point.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Flanger.DepthMin\">\n            <summary>\n            Minimum percentage by which the delay time is modulated by the low-frequency oscillator (LFO), in hundredths of a percentage point.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Flanger.FeedbackDefault\">\n            <summary>\n            Default percentage of output signal to feed back into the effect's input.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Flanger.FeedbackMax\">\n            <summary>\n            Maximum percentage of output signal to feed back into the effect's input.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Flanger.FeedbackMin\">\n            <summary>\n            Minimum percentage of output signal to feed back into the effect's input.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Flanger.FrequencyDefault\">\n            <summary>\n            Default frequency of the LFO(low-frequency oscillator).\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Flanger.FrequencyMax\">\n            <summary>\n            Maximum frequency of the LFO(low-frequency oscillator).\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Flanger.FrequencyMin\">\n            <summary>\n            Minimum frequency of the LFO(low-frequency oscillator).\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Flanger.Phase180\">\n            <summary>\n            Positive 180 phase differential between left and right LFOs.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Flanger.Phase90\">\n            <summary>\n            Positive 90 phase differential between left and right LFOs.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Flanger.PhaseDefault\">\n            <summary>\n            Default phase differential between left and right LFOs.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Flanger.PhaseMax\">\n            <summary>\n            Maximum phase differential between left and right LFOs.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Flanger.PhaseMin\">\n            <summary>\n            Minimum phase differential between left and right LFOs.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Flanger.PhaseNegative180\">\n            <summary>\n            Negative 180 phase differential between left and right LFOs.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Flanger.PhaseNegative90\">\n            <summary>\n            Negative 90 phase differential between left and right LFOs.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Flanger.PhaseZero\">\n            <summary>\n            Zero phase differential between left and right LFOs.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Flanger.WaveformDefault\">\n            <summary>\n            Default waveform shape of the LFO. By default, the waveform is a sine.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Flanger.WaveformSin\">\n            <summary>\n            Sine waveform shape of the LFO. By default, the waveform is a sine.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Flanger.WaveformTriangle\">\n            <summary>\n            Triangular waveform shape of the LFO. By default, the waveform is a sine.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Flanger.WetDryMixDefault\">\n            <summary>\n            Default ratio of wet (processed) signal to dry (unprocessed) signal.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Flanger.WetDryMixMax\">\n            <summary>\n            Maximum ratio of wet (processed) signal to dry (unprocessed) signal.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Flanger.WetDryMixMin\">\n            <summary>\n            Minimum ratio of wet (processed) signal to dry (unprocessed) signal.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.DirectSound.Flanger.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectSound.Flanger\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.Flanger.op_Explicit(System.IntPtr)~SharpDX.DirectSound.Flanger\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.DirectSound.Flanger\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.DirectSound.Flanger.SetAllParameters(SharpDX.DirectSound.FlangerSettings@)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"cDsFxFlangerRef\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundFXFlanger::SetAllParameters']/*\"/>\t\n            <unmanaged>HRESULT IDirectSoundFXFlanger::SetAllParameters([In] const DSFXFlanger* pcDsFxFlanger)</unmanaged>\t\n            <unmanaged-short>IDirectSoundFXFlanger::SetAllParameters</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.Flanger.GetAllParameters(SharpDX.DirectSound.FlangerSettings@)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"dsFxFlangerRef\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundFXFlanger::GetAllParameters']/*\"/>\t\n            <unmanaged>HRESULT IDirectSoundFXFlanger::GetAllParameters([Out] DSFXFlanger* pDsFxFlanger)</unmanaged>\t\n            <unmanaged-short>IDirectSoundFXFlanger::GetAllParameters</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.DirectSound.Flanger.AllParameters\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundFXFlanger::GetAllParameters']/*\"/>\t\n            <unmanaged>GetAllParameters / SetAllParameters</unmanaged>\t\n            <unmanaged-short>GetAllParameters</unmanaged-short>\t\n            <unmanaged>HRESULT IDirectSoundFXFlanger::GetAllParameters([Out] DSFXFlanger* pDsFxFlanger)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectSound.FullDuplex\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundFullDuplex']/*\"/>\t\n            <unmanaged>IDirectSoundFullDuplex</unmanaged>\t\n            <unmanaged-short>IDirectSoundFullDuplex</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.FullDuplex.#ctor(System.Guid,System.Guid,SharpDX.DirectSound.CaptureBufferDescription,SharpDX.DirectSound.SoundBufferDescription,System.IntPtr,SharpDX.DirectSound.CooperativeLevel,SharpDX.DirectSound.CaptureBuffer@,SharpDX.DirectSound.SecondarySoundBuffer@)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectSound.FullDuplex\" /> class.\n            </summary>\n            <param name=\"captureDevice\" />\n            <param name=\"playbackDevice\" />\n            <param name=\"captureDescription\" />\n            <param name=\"bufferDescription\" />\n            <param name=\"windowHandle\" />\n            <param name=\"level\" />\n            <param name=\"captureBuffer\" />\n            <param name=\"secondaryBuffer\" />\n        </member>\n        <member name=\"M:SharpDX.DirectSound.FullDuplex.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectSound.FullDuplex\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.FullDuplex.op_Explicit(System.IntPtr)~SharpDX.DirectSound.FullDuplex\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.DirectSound.FullDuplex\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"T:SharpDX.DirectSound.Gargle\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundFXGargle']/*\"/>\t\n            <unmanaged>IDirectSoundFXGargle</unmanaged>\t\n            <unmanaged-short>IDirectSoundFXGargle</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Gargle.RateDefault\">\n            <summary>\n            Default rate of modulation, in Hertz.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Gargle.RateMax\">\n            <summary>\n            Maximum rate of modulation, in Hertz.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Gargle.RateMin\">\n            <summary>\n            Minimum rate of modulation, in Hertz.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Gargle.WaveShapeDefault\">\n            <summary>\n            Default shape of the modulation waveform.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Gargle.WaveShapeSquare\">\n            <summary>\n            Square shape of the modulation waveform.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Gargle.WaveShapeTriangle\">\n            <summary>\n            Triangular shape of the modulation waveform.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.DirectSound.Gargle.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectSound.Gargle\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.Gargle.op_Explicit(System.IntPtr)~SharpDX.DirectSound.Gargle\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.DirectSound.Gargle\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.DirectSound.Gargle.SetAllParameters(SharpDX.DirectSound.GargleSettings)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"cDsFxGargleRef\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundFXGargle::SetAllParameters']/*\"/>\t\n            <unmanaged>HRESULT IDirectSoundFXGargle::SetAllParameters([In] const DSFXGargle* pcDsFxGargle)</unmanaged>\t\n            <unmanaged-short>IDirectSoundFXGargle::SetAllParameters</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.Gargle.GetAllParameters(SharpDX.DirectSound.GargleSettings@)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"dsFxGargleRef\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundFXGargle::GetAllParameters']/*\"/>\t\n            <unmanaged>HRESULT IDirectSoundFXGargle::GetAllParameters([Out] DSFXGargle* pDsFxGargle)</unmanaged>\t\n            <unmanaged-short>IDirectSoundFXGargle::GetAllParameters</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.DirectSound.Gargle.AllParameters\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundFXGargle::GetAllParameters']/*\"/>\t\n            <unmanaged>GetAllParameters / SetAllParameters</unmanaged>\t\n            <unmanaged-short>GetAllParameters</unmanaged-short>\t\n            <unmanaged>HRESULT IDirectSoundFXGargle::GetAllParameters([Out] DSFXGargle* pDsFxGargle)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectSound.AcousticEchoCancelMode\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCFX_AEC_MODE']/*\"/>\t\n            <unmanaged>DSCFX_AEC_MODE</unmanaged>\t\n            <unmanaged-short>DSCFX_AEC_MODE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.AcousticEchoCancelMode.PassThrough\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCFX_AEC_MODE_PASS_THROUGH']/*\"/>\t\n            <unmanaged>DSCFX_AEC_MODE_PASS_THROUGH</unmanaged>\t\n            <unmanaged-short>DSCFX_AEC_MODE_PASS_THROUGH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.AcousticEchoCancelMode.HalfDuplex\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCFX_AEC_MODE_HALF_DUPLEX']/*\"/>\t\n            <unmanaged>DSCFX_AEC_MODE_HALF_DUPLEX</unmanaged>\t\n            <unmanaged-short>DSCFX_AEC_MODE_HALF_DUPLEX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.AcousticEchoCancelMode.FullDuplex\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCFX_AEC_MODE_FULL_DUPLEX']/*\"/>\t\n            <unmanaged>DSCFX_AEC_MODE_FULL_DUPLEX</unmanaged>\t\n            <unmanaged-short>DSCFX_AEC_MODE_FULL_DUPLEX</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectSound.AcousticEchoCancelStatus\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCFX_AEC_STATUS']/*\"/>\t\n            <unmanaged>DSCFX_AEC_STATUS</unmanaged>\t\n            <unmanaged-short>DSCFX_AEC_STATUS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.AcousticEchoCancelStatus.HistoryUninitialized\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCFX_AEC_STATUS_HISTORY_UNINITIALIZED']/*\"/>\t\n            <unmanaged>DSCFX_AEC_STATUS_HISTORY_UNINITIALIZED</unmanaged>\t\n            <unmanaged-short>DSCFX_AEC_STATUS_HISTORY_UNINITIALIZED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.AcousticEchoCancelStatus.HistoryContinuouslyConverged\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCFX_AEC_STATUS_HISTORY_CONTINUOUSLY_CONVERGED']/*\"/>\t\n            <unmanaged>DSCFX_AEC_STATUS_HISTORY_CONTINUOUSLY_CONVERGED</unmanaged>\t\n            <unmanaged-short>DSCFX_AEC_STATUS_HISTORY_CONTINUOUSLY_CONVERGED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.AcousticEchoCancelStatus.HistoryPreviouslyDiverged\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCFX_AEC_STATUS_HISTORY_PREVIOUSLY_DIVERGED']/*\"/>\t\n            <unmanaged>DSCFX_AEC_STATUS_HISTORY_PREVIOUSLY_DIVERGED</unmanaged>\t\n            <unmanaged-short>DSCFX_AEC_STATUS_HISTORY_PREVIOUSLY_DIVERGED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.AcousticEchoCancelStatus.CurrentlyConverged\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCFX_AEC_STATUS_CURRENTLY_CONVERGED']/*\"/>\t\n            <unmanaged>DSCFX_AEC_STATUS_CURRENTLY_CONVERGED</unmanaged>\t\n            <unmanaged-short>DSCFX_AEC_STATUS_CURRENTLY_CONVERGED</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectSound.BufferFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSBCAPS_FLAGS']/*\"/>\t\n            <unmanaged>DSBCAPS_FLAGS</unmanaged>\t\n            <unmanaged-short>DSBCAPS_FLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.BufferFlags.PrimaryBuffer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSBCAPS_PRIMARYBUFFER']/*\"/>\t\n            <unmanaged>DSBCAPS_PRIMARYBUFFER</unmanaged>\t\n            <unmanaged-short>DSBCAPS_PRIMARYBUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.BufferFlags.Static\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSBCAPS_STATIC']/*\"/>\t\n            <unmanaged>DSBCAPS_STATIC</unmanaged>\t\n            <unmanaged-short>DSBCAPS_STATIC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.BufferFlags.Hardware\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSBCAPS_LOCHARDWARE']/*\"/>\t\n            <unmanaged>DSBCAPS_LOCHARDWARE</unmanaged>\t\n            <unmanaged-short>DSBCAPS_LOCHARDWARE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.BufferFlags.Software\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSBCAPS_LOCSOFTWARE']/*\"/>\t\n            <unmanaged>DSBCAPS_LOCSOFTWARE</unmanaged>\t\n            <unmanaged-short>DSBCAPS_LOCSOFTWARE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.BufferFlags.Control3D\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSBCAPS_CTRL3D']/*\"/>\t\n            <unmanaged>DSBCAPS_CTRL3D</unmanaged>\t\n            <unmanaged-short>DSBCAPS_CTRL3D</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.BufferFlags.ControlFrequency\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSBCAPS_CTRLFREQUENCY']/*\"/>\t\n            <unmanaged>DSBCAPS_CTRLFREQUENCY</unmanaged>\t\n            <unmanaged-short>DSBCAPS_CTRLFREQUENCY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.BufferFlags.ControlPan\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSBCAPS_CTRLPAN']/*\"/>\t\n            <unmanaged>DSBCAPS_CTRLPAN</unmanaged>\t\n            <unmanaged-short>DSBCAPS_CTRLPAN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.BufferFlags.ControlVolume\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSBCAPS_CTRLVOLUME']/*\"/>\t\n            <unmanaged>DSBCAPS_CTRLVOLUME</unmanaged>\t\n            <unmanaged-short>DSBCAPS_CTRLVOLUME</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.BufferFlags.ControlPositionNotify\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSBCAPS_CTRLPOSITIONNOTIFY']/*\"/>\t\n            <unmanaged>DSBCAPS_CTRLPOSITIONNOTIFY</unmanaged>\t\n            <unmanaged-short>DSBCAPS_CTRLPOSITIONNOTIFY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.BufferFlags.ControlEffects\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSBCAPS_CTRLFX']/*\"/>\t\n            <unmanaged>DSBCAPS_CTRLFX</unmanaged>\t\n            <unmanaged-short>DSBCAPS_CTRLFX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.BufferFlags.StickyFocus\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSBCAPS_STICKYFOCUS']/*\"/>\t\n            <unmanaged>DSBCAPS_STICKYFOCUS</unmanaged>\t\n            <unmanaged-short>DSBCAPS_STICKYFOCUS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.BufferFlags.GlobalFocus\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSBCAPS_GLOBALFOCUS']/*\"/>\t\n            <unmanaged>DSBCAPS_GLOBALFOCUS</unmanaged>\t\n            <unmanaged-short>DSBCAPS_GLOBALFOCUS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.BufferFlags.GetCurrentPosition2\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSBCAPS_GETCURRENTPOSITION2']/*\"/>\t\n            <unmanaged>DSBCAPS_GETCURRENTPOSITION2</unmanaged>\t\n            <unmanaged-short>DSBCAPS_GETCURRENTPOSITION2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.BufferFlags.Mute3DAtMaxDistance\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSBCAPS_MUTE3DATMAXDISTANCE']/*\"/>\t\n            <unmanaged>DSBCAPS_MUTE3DATMAXDISTANCE</unmanaged>\t\n            <unmanaged-short>DSBCAPS_MUTE3DATMAXDISTANCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.BufferFlags.Defer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSBCAPS_LOCDEFER']/*\"/>\t\n            <unmanaged>DSBCAPS_LOCDEFER</unmanaged>\t\n            <unmanaged-short>DSBCAPS_LOCDEFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.BufferFlags.Trueplayposition\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSBCAPS_TRUEPLAYPOSITION']/*\"/>\t\n            <unmanaged>DSBCAPS_TRUEPLAYPOSITION</unmanaged>\t\n            <unmanaged-short>DSBCAPS_TRUEPLAYPOSITION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.BufferFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectSound.BufferStatus\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSBSTATUS_FLAGS']/*\"/>\t\n            <unmanaged>DSBSTATUS_FLAGS</unmanaged>\t\n            <unmanaged-short>DSBSTATUS_FLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.BufferStatus.Playing\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSBSTATUS_PLAYING']/*\"/>\t\n            <unmanaged>DSBSTATUS_PLAYING</unmanaged>\t\n            <unmanaged-short>DSBSTATUS_PLAYING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.BufferStatus.BufferLost\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSBSTATUS_BUFFERLOST']/*\"/>\t\n            <unmanaged>DSBSTATUS_BUFFERLOST</unmanaged>\t\n            <unmanaged-short>DSBSTATUS_BUFFERLOST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.BufferStatus.Looping\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSBSTATUS_LOOPING']/*\"/>\t\n            <unmanaged>DSBSTATUS_LOOPING</unmanaged>\t\n            <unmanaged-short>DSBSTATUS_LOOPING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.BufferStatus.Hardware\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSBSTATUS_LOCHARDWARE']/*\"/>\t\n            <unmanaged>DSBSTATUS_LOCHARDWARE</unmanaged>\t\n            <unmanaged-short>DSBSTATUS_LOCHARDWARE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.BufferStatus.Software\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSBSTATUS_LOCSOFTWARE']/*\"/>\t\n            <unmanaged>DSBSTATUS_LOCSOFTWARE</unmanaged>\t\n            <unmanaged-short>DSBSTATUS_LOCSOFTWARE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.BufferStatus.Terminated\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSBSTATUS_TERMINATED']/*\"/>\t\n            <unmanaged>DSBSTATUS_TERMINATED</unmanaged>\t\n            <unmanaged-short>DSBSTATUS_TERMINATED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.BufferStatus.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectSound.CapabilitiesFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCAPS_FLAGS']/*\"/>\t\n            <unmanaged>DSCAPS_FLAGS</unmanaged>\t\n            <unmanaged-short>DSCAPS_FLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.CapabilitiesFlags.PrimaryBufferMono\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCAPS_PRIMARYMONO']/*\"/>\t\n            <unmanaged>DSCAPS_PRIMARYMONO</unmanaged>\t\n            <unmanaged-short>DSCAPS_PRIMARYMONO</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.CapabilitiesFlags.PrimaryBufferStereo\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCAPS_PRIMARYSTEREO']/*\"/>\t\n            <unmanaged>DSCAPS_PRIMARYSTEREO</unmanaged>\t\n            <unmanaged-short>DSCAPS_PRIMARYSTEREO</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.CapabilitiesFlags.PrimaryBuffer8Bit\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCAPS_PRIMARY8BIT']/*\"/>\t\n            <unmanaged>DSCAPS_PRIMARY8BIT</unmanaged>\t\n            <unmanaged-short>DSCAPS_PRIMARY8BIT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.CapabilitiesFlags.PrimaryBuffer16Bit\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCAPS_PRIMARY16BIT']/*\"/>\t\n            <unmanaged>DSCAPS_PRIMARY16BIT</unmanaged>\t\n            <unmanaged-short>DSCAPS_PRIMARY16BIT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.CapabilitiesFlags.ContinousRate\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCAPS_CONTINUOUSRATE']/*\"/>\t\n            <unmanaged>DSCAPS_CONTINUOUSRATE</unmanaged>\t\n            <unmanaged-short>DSCAPS_CONTINUOUSRATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.CapabilitiesFlags.EmulatedDriver\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCAPS_EMULDRIVER']/*\"/>\t\n            <unmanaged>DSCAPS_EMULDRIVER</unmanaged>\t\n            <unmanaged-short>DSCAPS_EMULDRIVER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.CapabilitiesFlags.Certified\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCAPS_CERTIFIED']/*\"/>\t\n            <unmanaged>DSCAPS_CERTIFIED</unmanaged>\t\n            <unmanaged-short>DSCAPS_CERTIFIED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.CapabilitiesFlags.SecondaryBufferMono\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCAPS_SECONDARYMONO']/*\"/>\t\n            <unmanaged>DSCAPS_SECONDARYMONO</unmanaged>\t\n            <unmanaged-short>DSCAPS_SECONDARYMONO</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.CapabilitiesFlags.SecondaryBufferStereo\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCAPS_SECONDARYSTEREO']/*\"/>\t\n            <unmanaged>DSCAPS_SECONDARYSTEREO</unmanaged>\t\n            <unmanaged-short>DSCAPS_SECONDARYSTEREO</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.CapabilitiesFlags.SecondaryBufer8Bit\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCAPS_SECONDARY8BIT']/*\"/>\t\n            <unmanaged>DSCAPS_SECONDARY8BIT</unmanaged>\t\n            <unmanaged-short>DSCAPS_SECONDARY8BIT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.CapabilitiesFlags.SecondaryBufer16Bit\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCAPS_SECONDARY16BIT']/*\"/>\t\n            <unmanaged>DSCAPS_SECONDARY16BIT</unmanaged>\t\n            <unmanaged-short>DSCAPS_SECONDARY16BIT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.CapabilitiesFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectSound.CaptureBufferCapabilitiesFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCBCAPS_FLAGS']/*\"/>\t\n            <unmanaged>DSCBCAPS_FLAGS</unmanaged>\t\n            <unmanaged-short>DSCBCAPS_FLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.CaptureBufferCapabilitiesFlags.WaveMapped\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCBCAPS_WAVEMAPPED']/*\"/>\t\n            <unmanaged>DSCBCAPS_WAVEMAPPED</unmanaged>\t\n            <unmanaged-short>DSCBCAPS_WAVEMAPPED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.CaptureBufferCapabilitiesFlags.ControlEffects\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCBCAPS_CTRLFX']/*\"/>\t\n            <unmanaged>DSCBCAPS_CTRLFX</unmanaged>\t\n            <unmanaged-short>DSCBCAPS_CTRLFX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.CaptureBufferCapabilitiesFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectSound.CaptureBufferStatusFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCBSTATUS_FLAGS']/*\"/>\t\n            <unmanaged>DSCBSTATUS_FLAGS</unmanaged>\t\n            <unmanaged-short>DSCBSTATUS_FLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.CaptureBufferStatusFlags.Capturing\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCBSTATUS_CAPTURING']/*\"/>\t\n            <unmanaged>DSCBSTATUS_CAPTURING</unmanaged>\t\n            <unmanaged-short>DSCBSTATUS_CAPTURING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.CaptureBufferStatusFlags.Looping\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCBSTATUS_LOOPING']/*\"/>\t\n            <unmanaged>DSCBSTATUS_LOOPING</unmanaged>\t\n            <unmanaged-short>DSCBSTATUS_LOOPING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.CaptureBufferStatusFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectSound.CaptureCapabilitiesFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCCAPS_FLAGS']/*\"/>\t\n            <unmanaged>DSCCAPS_FLAGS</unmanaged>\t\n            <unmanaged-short>DSCCAPS_FLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.CaptureCapabilitiesFlags.EmulateDriver\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCCAPS_EMULDRIVER']/*\"/>\t\n            <unmanaged>DSCCAPS_EMULDRIVER</unmanaged>\t\n            <unmanaged-short>DSCCAPS_EMULDRIVER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.CaptureCapabilitiesFlags.Certified\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCCAPS_CERTIFIED']/*\"/>\t\n            <unmanaged>DSCCAPS_CERTIFIED</unmanaged>\t\n            <unmanaged-short>DSCCAPS_CERTIFIED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.CaptureCapabilitiesFlags.MultipleCapture\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCCAPS_MULTIPLECAPTURE']/*\"/>\t\n            <unmanaged>DSCCAPS_MULTIPLECAPTURE</unmanaged>\t\n            <unmanaged-short>DSCCAPS_MULTIPLECAPTURE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.CaptureCapabilitiesFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectSound.CaptureEffectResult\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCFX_ENUM']/*\"/>\t\n            <unmanaged>DSCFX_ENUM</unmanaged>\t\n            <unmanaged-short>DSCFX_ENUM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.CaptureEffectResult.LocatedInHardware\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCFX_LOCHARDWARE']/*\"/>\t\n            <unmanaged>DSCFX_LOCHARDWARE</unmanaged>\t\n            <unmanaged-short>DSCFX_LOCHARDWARE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.CaptureEffectResult.LocatedInSoftware\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCFX_LOCSOFTWARE']/*\"/>\t\n            <unmanaged>DSCFX_LOCSOFTWARE</unmanaged>\t\n            <unmanaged-short>DSCFX_LOCSOFTWARE</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectSound.CooperativeLevel\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSSCL_ENUM']/*\"/>\t\n            <unmanaged>DSSCL_ENUM</unmanaged>\t\n            <unmanaged-short>DSSCL_ENUM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.CooperativeLevel.Normal\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSSCL_NORMAL']/*\"/>\t\n            <unmanaged>DSSCL_NORMAL</unmanaged>\t\n            <unmanaged-short>DSSCL_NORMAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.CooperativeLevel.Priority\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSSCL_PRIORITY']/*\"/>\t\n            <unmanaged>DSSCL_PRIORITY</unmanaged>\t\n            <unmanaged-short>DSSCL_PRIORITY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.CooperativeLevel.Exclusive\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSSCL_EXCLUSIVE']/*\"/>\t\n            <unmanaged>DSSCL_EXCLUSIVE</unmanaged>\t\n            <unmanaged-short>DSSCL_EXCLUSIVE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.CooperativeLevel.WritePrimary\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSSCL_WRITEPRIMARY']/*\"/>\t\n            <unmanaged>DSSCL_WRITEPRIMARY</unmanaged>\t\n            <unmanaged-short>DSSCL_WRITEPRIMARY</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectSound.I3DL2MaterialPreset\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSOUND_ENUM_1']/*\"/>\t\n            <unmanaged>DSOUND_ENUM_1</unmanaged>\t\n            <unmanaged-short>DSOUND_ENUM_1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2MaterialPreset.Default\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFX_I3DL2_ENVIRONMENT_PRESET_DEFAULT']/*\"/>\t\n            <unmanaged>DSFX_I3DL2_ENVIRONMENT_PRESET_DEFAULT</unmanaged>\t\n            <unmanaged-short>DSFX_I3DL2_ENVIRONMENT_PRESET_DEFAULT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2MaterialPreset.Generic\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFX_I3DL2_ENVIRONMENT_PRESET_GENERIC']/*\"/>\t\n            <unmanaged>DSFX_I3DL2_ENVIRONMENT_PRESET_GENERIC</unmanaged>\t\n            <unmanaged-short>DSFX_I3DL2_ENVIRONMENT_PRESET_GENERIC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2MaterialPreset.PaddedCell\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFX_I3DL2_ENVIRONMENT_PRESET_PADDEDCELL']/*\"/>\t\n            <unmanaged>DSFX_I3DL2_ENVIRONMENT_PRESET_PADDEDCELL</unmanaged>\t\n            <unmanaged-short>DSFX_I3DL2_ENVIRONMENT_PRESET_PADDEDCELL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2MaterialPreset.Room\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFX_I3DL2_ENVIRONMENT_PRESET_ROOM']/*\"/>\t\n            <unmanaged>DSFX_I3DL2_ENVIRONMENT_PRESET_ROOM</unmanaged>\t\n            <unmanaged-short>DSFX_I3DL2_ENVIRONMENT_PRESET_ROOM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2MaterialPreset.Bathroom\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFX_I3DL2_ENVIRONMENT_PRESET_BATHROOM']/*\"/>\t\n            <unmanaged>DSFX_I3DL2_ENVIRONMENT_PRESET_BATHROOM</unmanaged>\t\n            <unmanaged-short>DSFX_I3DL2_ENVIRONMENT_PRESET_BATHROOM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2MaterialPreset.LivingRoom\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFX_I3DL2_ENVIRONMENT_PRESET_LIVINGROOM']/*\"/>\t\n            <unmanaged>DSFX_I3DL2_ENVIRONMENT_PRESET_LIVINGROOM</unmanaged>\t\n            <unmanaged-short>DSFX_I3DL2_ENVIRONMENT_PRESET_LIVINGROOM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2MaterialPreset.StoneRoom\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFX_I3DL2_ENVIRONMENT_PRESET_STONEROOM']/*\"/>\t\n            <unmanaged>DSFX_I3DL2_ENVIRONMENT_PRESET_STONEROOM</unmanaged>\t\n            <unmanaged-short>DSFX_I3DL2_ENVIRONMENT_PRESET_STONEROOM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2MaterialPreset.Auditorium\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFX_I3DL2_ENVIRONMENT_PRESET_AUDITORIUM']/*\"/>\t\n            <unmanaged>DSFX_I3DL2_ENVIRONMENT_PRESET_AUDITORIUM</unmanaged>\t\n            <unmanaged-short>DSFX_I3DL2_ENVIRONMENT_PRESET_AUDITORIUM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2MaterialPreset.ConcertHall\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFX_I3DL2_ENVIRONMENT_PRESET_CONCERTHALL']/*\"/>\t\n            <unmanaged>DSFX_I3DL2_ENVIRONMENT_PRESET_CONCERTHALL</unmanaged>\t\n            <unmanaged-short>DSFX_I3DL2_ENVIRONMENT_PRESET_CONCERTHALL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2MaterialPreset.Cave\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFX_I3DL2_ENVIRONMENT_PRESET_CAVE']/*\"/>\t\n            <unmanaged>DSFX_I3DL2_ENVIRONMENT_PRESET_CAVE</unmanaged>\t\n            <unmanaged-short>DSFX_I3DL2_ENVIRONMENT_PRESET_CAVE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2MaterialPreset.Arena\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFX_I3DL2_ENVIRONMENT_PRESET_ARENA']/*\"/>\t\n            <unmanaged>DSFX_I3DL2_ENVIRONMENT_PRESET_ARENA</unmanaged>\t\n            <unmanaged-short>DSFX_I3DL2_ENVIRONMENT_PRESET_ARENA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2MaterialPreset.Hangar\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFX_I3DL2_ENVIRONMENT_PRESET_HANGAR']/*\"/>\t\n            <unmanaged>DSFX_I3DL2_ENVIRONMENT_PRESET_HANGAR</unmanaged>\t\n            <unmanaged-short>DSFX_I3DL2_ENVIRONMENT_PRESET_HANGAR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2MaterialPreset.CarpetedHallway\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFX_I3DL2_ENVIRONMENT_PRESET_CARPETEDHALLWAY']/*\"/>\t\n            <unmanaged>DSFX_I3DL2_ENVIRONMENT_PRESET_CARPETEDHALLWAY</unmanaged>\t\n            <unmanaged-short>DSFX_I3DL2_ENVIRONMENT_PRESET_CARPETEDHALLWAY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2MaterialPreset.Hallway\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFX_I3DL2_ENVIRONMENT_PRESET_HALLWAY']/*\"/>\t\n            <unmanaged>DSFX_I3DL2_ENVIRONMENT_PRESET_HALLWAY</unmanaged>\t\n            <unmanaged-short>DSFX_I3DL2_ENVIRONMENT_PRESET_HALLWAY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2MaterialPreset.StoneCorridor\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFX_I3DL2_ENVIRONMENT_PRESET_STONECORRIDOR']/*\"/>\t\n            <unmanaged>DSFX_I3DL2_ENVIRONMENT_PRESET_STONECORRIDOR</unmanaged>\t\n            <unmanaged-short>DSFX_I3DL2_ENVIRONMENT_PRESET_STONECORRIDOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2MaterialPreset.Alley\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFX_I3DL2_ENVIRONMENT_PRESET_ALLEY']/*\"/>\t\n            <unmanaged>DSFX_I3DL2_ENVIRONMENT_PRESET_ALLEY</unmanaged>\t\n            <unmanaged-short>DSFX_I3DL2_ENVIRONMENT_PRESET_ALLEY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2MaterialPreset.Forest\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFX_I3DL2_ENVIRONMENT_PRESET_FOREST']/*\"/>\t\n            <unmanaged>DSFX_I3DL2_ENVIRONMENT_PRESET_FOREST</unmanaged>\t\n            <unmanaged-short>DSFX_I3DL2_ENVIRONMENT_PRESET_FOREST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2MaterialPreset.City\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFX_I3DL2_ENVIRONMENT_PRESET_CITY']/*\"/>\t\n            <unmanaged>DSFX_I3DL2_ENVIRONMENT_PRESET_CITY</unmanaged>\t\n            <unmanaged-short>DSFX_I3DL2_ENVIRONMENT_PRESET_CITY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2MaterialPreset.Mountains\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFX_I3DL2_ENVIRONMENT_PRESET_MOUNTAINS']/*\"/>\t\n            <unmanaged>DSFX_I3DL2_ENVIRONMENT_PRESET_MOUNTAINS</unmanaged>\t\n            <unmanaged-short>DSFX_I3DL2_ENVIRONMENT_PRESET_MOUNTAINS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2MaterialPreset.Quarry\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFX_I3DL2_ENVIRONMENT_PRESET_QUARRY']/*\"/>\t\n            <unmanaged>DSFX_I3DL2_ENVIRONMENT_PRESET_QUARRY</unmanaged>\t\n            <unmanaged-short>DSFX_I3DL2_ENVIRONMENT_PRESET_QUARRY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2MaterialPreset.Plain\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFX_I3DL2_ENVIRONMENT_PRESET_PLAIN']/*\"/>\t\n            <unmanaged>DSFX_I3DL2_ENVIRONMENT_PRESET_PLAIN</unmanaged>\t\n            <unmanaged-short>DSFX_I3DL2_ENVIRONMENT_PRESET_PLAIN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2MaterialPreset.ParkingLot\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFX_I3DL2_ENVIRONMENT_PRESET_PARKINGLOT']/*\"/>\t\n            <unmanaged>DSFX_I3DL2_ENVIRONMENT_PRESET_PARKINGLOT</unmanaged>\t\n            <unmanaged-short>DSFX_I3DL2_ENVIRONMENT_PRESET_PARKINGLOT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2MaterialPreset.SewerPipe\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFX_I3DL2_ENVIRONMENT_PRESET_SEWERPIPE']/*\"/>\t\n            <unmanaged>DSFX_I3DL2_ENVIRONMENT_PRESET_SEWERPIPE</unmanaged>\t\n            <unmanaged-short>DSFX_I3DL2_ENVIRONMENT_PRESET_SEWERPIPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2MaterialPreset.Underwater\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFX_I3DL2_ENVIRONMENT_PRESET_UNDERWATER']/*\"/>\t\n            <unmanaged>DSFX_I3DL2_ENVIRONMENT_PRESET_UNDERWATER</unmanaged>\t\n            <unmanaged-short>DSFX_I3DL2_ENVIRONMENT_PRESET_UNDERWATER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2MaterialPreset.SmallRoom\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFX_I3DL2_ENVIRONMENT_PRESET_SMALLROOM']/*\"/>\t\n            <unmanaged>DSFX_I3DL2_ENVIRONMENT_PRESET_SMALLROOM</unmanaged>\t\n            <unmanaged-short>DSFX_I3DL2_ENVIRONMENT_PRESET_SMALLROOM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2MaterialPreset.MediumRoom\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFX_I3DL2_ENVIRONMENT_PRESET_MEDIUMROOM']/*\"/>\t\n            <unmanaged>DSFX_I3DL2_ENVIRONMENT_PRESET_MEDIUMROOM</unmanaged>\t\n            <unmanaged-short>DSFX_I3DL2_ENVIRONMENT_PRESET_MEDIUMROOM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2MaterialPreset.LargeRoom\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFX_I3DL2_ENVIRONMENT_PRESET_LARGEROOM']/*\"/>\t\n            <unmanaged>DSFX_I3DL2_ENVIRONMENT_PRESET_LARGEROOM</unmanaged>\t\n            <unmanaged-short>DSFX_I3DL2_ENVIRONMENT_PRESET_LARGEROOM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2MaterialPreset.MediumHall\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFX_I3DL2_ENVIRONMENT_PRESET_MEDIUMHALL']/*\"/>\t\n            <unmanaged>DSFX_I3DL2_ENVIRONMENT_PRESET_MEDIUMHALL</unmanaged>\t\n            <unmanaged-short>DSFX_I3DL2_ENVIRONMENT_PRESET_MEDIUMHALL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2MaterialPreset.LargeHall\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFX_I3DL2_ENVIRONMENT_PRESET_LARGEHALL']/*\"/>\t\n            <unmanaged>DSFX_I3DL2_ENVIRONMENT_PRESET_LARGEHALL</unmanaged>\t\n            <unmanaged-short>DSFX_I3DL2_ENVIRONMENT_PRESET_LARGEHALL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2MaterialPreset.Plate\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFX_I3DL2_ENVIRONMENT_PRESET_PLATE']/*\"/>\t\n            <unmanaged>DSFX_I3DL2_ENVIRONMENT_PRESET_PLATE</unmanaged>\t\n            <unmanaged-short>DSFX_I3DL2_ENVIRONMENT_PRESET_PLATE</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectSound.I3DL2ReverbPreset\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSOUND_ENUM_2']/*\"/>\t\n            <unmanaged>DSOUND_ENUM_2</unmanaged>\t\n            <unmanaged-short>DSOUND_ENUM_2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2ReverbPreset.Singlewindow\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFX_I3DL2_MATERIAL_PRESET_SINGLEWINDOW']/*\"/>\t\n            <unmanaged>DSFX_I3DL2_MATERIAL_PRESET_SINGLEWINDOW</unmanaged>\t\n            <unmanaged-short>DSFX_I3DL2_MATERIAL_PRESET_SINGLEWINDOW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2ReverbPreset.DoubleWindow\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFX_I3DL2_MATERIAL_PRESET_DOUBLEWINDOW']/*\"/>\t\n            <unmanaged>DSFX_I3DL2_MATERIAL_PRESET_DOUBLEWINDOW</unmanaged>\t\n            <unmanaged-short>DSFX_I3DL2_MATERIAL_PRESET_DOUBLEWINDOW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2ReverbPreset.Thindoor\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFX_I3DL2_MATERIAL_PRESET_THINDOOR']/*\"/>\t\n            <unmanaged>DSFX_I3DL2_MATERIAL_PRESET_THINDOOR</unmanaged>\t\n            <unmanaged-short>DSFX_I3DL2_MATERIAL_PRESET_THINDOOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2ReverbPreset.Thickdoor\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFX_I3DL2_MATERIAL_PRESET_THICKDOOR']/*\"/>\t\n            <unmanaged>DSFX_I3DL2_MATERIAL_PRESET_THICKDOOR</unmanaged>\t\n            <unmanaged-short>DSFX_I3DL2_MATERIAL_PRESET_THICKDOOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2ReverbPreset.Woodwall\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFX_I3DL2_MATERIAL_PRESET_WOODWALL']/*\"/>\t\n            <unmanaged>DSFX_I3DL2_MATERIAL_PRESET_WOODWALL</unmanaged>\t\n            <unmanaged-short>DSFX_I3DL2_MATERIAL_PRESET_WOODWALL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2ReverbPreset.Brickwall\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFX_I3DL2_MATERIAL_PRESET_BRICKWALL']/*\"/>\t\n            <unmanaged>DSFX_I3DL2_MATERIAL_PRESET_BRICKWALL</unmanaged>\t\n            <unmanaged-short>DSFX_I3DL2_MATERIAL_PRESET_BRICKWALL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2ReverbPreset.Stonewall\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFX_I3DL2_MATERIAL_PRESET_STONEWALL']/*\"/>\t\n            <unmanaged>DSFX_I3DL2_MATERIAL_PRESET_STONEWALL</unmanaged>\t\n            <unmanaged-short>DSFX_I3DL2_MATERIAL_PRESET_STONEWALL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2ReverbPreset.Curtain\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFX_I3DL2_MATERIAL_PRESET_CURTAIN']/*\"/>\t\n            <unmanaged>DSFX_I3DL2_MATERIAL_PRESET_CURTAIN</unmanaged>\t\n            <unmanaged-short>DSFX_I3DL2_MATERIAL_PRESET_CURTAIN</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectSound.LockFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSBLOCK_ENUM']/*\"/>\t\n            <unmanaged>DSBLOCK_ENUM</unmanaged>\t\n            <unmanaged-short>DSBLOCK_ENUM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.LockFlags.FromWriteCursor\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSBLOCK_FROMWRITECURSOR']/*\"/>\t\n            <unmanaged>DSBLOCK_FROMWRITECURSOR</unmanaged>\t\n            <unmanaged-short>DSBLOCK_FROMWRITECURSOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.LockFlags.EntireBuffer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSBLOCK_ENTIREBUFFER']/*\"/>\t\n            <unmanaged>DSBLOCK_ENTIREBUFFER</unmanaged>\t\n            <unmanaged-short>DSBLOCK_ENTIREBUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.LockFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectSound.Mode3D\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DS3DMODE']/*\"/>\t\n            <unmanaged>DS3DMODE</unmanaged>\t\n            <unmanaged-short>DS3DMODE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Mode3D.Normal\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DS3DMODE_NORMAL']/*\"/>\t\n            <unmanaged>DS3DMODE_NORMAL</unmanaged>\t\n            <unmanaged-short>DS3DMODE_NORMAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Mode3D.HeadRelative\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DS3DMODE_HEADRELATIVE']/*\"/>\t\n            <unmanaged>DS3DMODE_HEADRELATIVE</unmanaged>\t\n            <unmanaged-short>DS3DMODE_HEADRELATIVE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Mode3D.Disable\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DS3DMODE_DISABLE']/*\"/>\t\n            <unmanaged>DS3DMODE_DISABLE</unmanaged>\t\n            <unmanaged-short>DS3DMODE_DISABLE</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectSound.PlayFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSBPLAY_FLAGS']/*\"/>\t\n            <unmanaged>DSBPLAY_FLAGS</unmanaged>\t\n            <unmanaged-short>DSBPLAY_FLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.PlayFlags.Looping\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSBPLAY_LOOPING']/*\"/>\t\n            <unmanaged>DSBPLAY_LOOPING</unmanaged>\t\n            <unmanaged-short>DSBPLAY_LOOPING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.PlayFlags.Hardware\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSBPLAY_LOCHARDWARE']/*\"/>\t\n            <unmanaged>DSBPLAY_LOCHARDWARE</unmanaged>\t\n            <unmanaged-short>DSBPLAY_LOCHARDWARE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.PlayFlags.Software\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSBPLAY_LOCSOFTWARE']/*\"/>\t\n            <unmanaged>DSBPLAY_LOCSOFTWARE</unmanaged>\t\n            <unmanaged-short>DSBPLAY_LOCSOFTWARE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.PlayFlags.TerminateByTime\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSBPLAY_TERMINATEBY_TIME']/*\"/>\t\n            <unmanaged>DSBPLAY_TERMINATEBY_TIME</unmanaged>\t\n            <unmanaged-short>DSBPLAY_TERMINATEBY_TIME</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.PlayFlags.TerminateByDistance\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSBPLAY_TERMINATEBY_DISTANCE']/*\"/>\t\n            <unmanaged>DSBPLAY_TERMINATEBY_DISTANCE</unmanaged>\t\n            <unmanaged-short>DSBPLAY_TERMINATEBY_DISTANCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.PlayFlags.TerminateByPriority\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSBPLAY_TERMINATEBY_PRIORITY']/*\"/>\t\n            <unmanaged>DSBPLAY_TERMINATEBY_PRIORITY</unmanaged>\t\n            <unmanaged-short>DSBPLAY_TERMINATEBY_PRIORITY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.PlayFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectSound.SoundEffectResult\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSOUND_ENUM_0']/*\"/>\t\n            <unmanaged>DSOUND_ENUM_0</unmanaged>\t\n            <unmanaged-short>DSOUND_ENUM_0</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.SoundEffectResult.Present\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFXR_PRESENT']/*\"/>\t\n            <unmanaged>DSFXR_PRESENT</unmanaged>\t\n            <unmanaged-short>DSFXR_PRESENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.SoundEffectResult.LocatedInHardware\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFXR_LOCHARDWARE']/*\"/>\t\n            <unmanaged>DSFXR_LOCHARDWARE</unmanaged>\t\n            <unmanaged-short>DSFXR_LOCHARDWARE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.SoundEffectResult.LocatedInSoftware\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFXR_LOCSOFTWARE']/*\"/>\t\n            <unmanaged>DSFXR_LOCSOFTWARE</unmanaged>\t\n            <unmanaged-short>DSFXR_LOCSOFTWARE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.SoundEffectResult.Unallocated\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFXR_UNALLOCATED']/*\"/>\t\n            <unmanaged>DSFXR_UNALLOCATED</unmanaged>\t\n            <unmanaged-short>DSFXR_UNALLOCATED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.SoundEffectResult.Failed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFXR_FAILED']/*\"/>\t\n            <unmanaged>DSFXR_FAILED</unmanaged>\t\n            <unmanaged-short>DSFXR_FAILED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.SoundEffectResult.Unknown\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFXR_UNKNOWN']/*\"/>\t\n            <unmanaged>DSFXR_UNKNOWN</unmanaged>\t\n            <unmanaged-short>DSFXR_UNKNOWN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.SoundEffectResult.SendLoop\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFXR_SENDLOOP']/*\"/>\t\n            <unmanaged>DSFXR_SENDLOOP</unmanaged>\t\n            <unmanaged-short>DSFXR_SENDLOOP</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectSound.SpeakerConfiguration\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSSPEAKER_ENUM']/*\"/>\t\n            <unmanaged>DSSPEAKER_ENUM</unmanaged>\t\n            <unmanaged-short>DSSPEAKER_ENUM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.SpeakerConfiguration.DirectOut\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSSPEAKER_DIRECTOUT']/*\"/>\t\n            <unmanaged>DSSPEAKER_DIRECTOUT</unmanaged>\t\n            <unmanaged-short>DSSPEAKER_DIRECTOUT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.SpeakerConfiguration.Headphone\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSSPEAKER_HEADPHONE']/*\"/>\t\n            <unmanaged>DSSPEAKER_HEADPHONE</unmanaged>\t\n            <unmanaged-short>DSSPEAKER_HEADPHONE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.SpeakerConfiguration.Mono\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSSPEAKER_MONO']/*\"/>\t\n            <unmanaged>DSSPEAKER_MONO</unmanaged>\t\n            <unmanaged-short>DSSPEAKER_MONO</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.SpeakerConfiguration.Quadrophonic\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSSPEAKER_QUAD']/*\"/>\t\n            <unmanaged>DSSPEAKER_QUAD</unmanaged>\t\n            <unmanaged-short>DSSPEAKER_QUAD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.SpeakerConfiguration.Stereo\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSSPEAKER_STEREO']/*\"/>\t\n            <unmanaged>DSSPEAKER_STEREO</unmanaged>\t\n            <unmanaged-short>DSSPEAKER_STEREO</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.SpeakerConfiguration.Surround\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSSPEAKER_SURROUND']/*\"/>\t\n            <unmanaged>DSSPEAKER_SURROUND</unmanaged>\t\n            <unmanaged-short>DSSPEAKER_SURROUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.SpeakerConfiguration.FivePointOne\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSSPEAKER_5POINT1']/*\"/>\t\n            <unmanaged>DSSPEAKER_5POINT1</unmanaged>\t\n            <unmanaged-short>DSSPEAKER_5POINT1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.SpeakerConfiguration.SevenPointOne\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSSPEAKER_7POINT1']/*\"/>\t\n            <unmanaged>DSSPEAKER_7POINT1</unmanaged>\t\n            <unmanaged-short>DSSPEAKER_7POINT1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.SpeakerConfiguration.SevenPointOneSurround\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSSPEAKER_7POINT1_SURROUND']/*\"/>\t\n            <unmanaged>DSSPEAKER_7POINT1_SURROUND</unmanaged>\t\n            <unmanaged-short>DSSPEAKER_7POINT1_SURROUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.SpeakerConfiguration.FivePointOneSurround\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSSPEAKER_5POINT1_SURROUND']/*\"/>\t\n            <unmanaged>DSSPEAKER_5POINT1_SURROUND</unmanaged>\t\n            <unmanaged-short>DSSPEAKER_5POINT1_SURROUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.SpeakerConfiguration.SevenPointOneWide\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSSPEAKER_7POINT1_WIDE']/*\"/>\t\n            <unmanaged>DSSPEAKER_7POINT1_WIDE</unmanaged>\t\n            <unmanaged-short>DSSPEAKER_7POINT1_WIDE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.SpeakerConfiguration.FivePointOneBack\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSSPEAKER_5POINT1_BACK']/*\"/>\t\n            <unmanaged>DSSPEAKER_5POINT1_BACK</unmanaged>\t\n            <unmanaged-short>DSSPEAKER_5POINT1_BACK</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectSound.SpeakerGeometry\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSSPEAKER_GEOMETRY_ENUM']/*\"/>\t\n            <unmanaged>DSSPEAKER_GEOMETRY_ENUM</unmanaged>\t\n            <unmanaged-short>DSSPEAKER_GEOMETRY_ENUM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.SpeakerGeometry.Minimum\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSSPEAKER_GEOMETRY_MIN']/*\"/>\t\n            <unmanaged>DSSPEAKER_GEOMETRY_MIN</unmanaged>\t\n            <unmanaged-short>DSSPEAKER_GEOMETRY_MIN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.SpeakerGeometry.Narrow\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSSPEAKER_GEOMETRY_NARROW']/*\"/>\t\n            <unmanaged>DSSPEAKER_GEOMETRY_NARROW</unmanaged>\t\n            <unmanaged-short>DSSPEAKER_GEOMETRY_NARROW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.SpeakerGeometry.Wide\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSSPEAKER_GEOMETRY_WIDE']/*\"/>\t\n            <unmanaged>DSSPEAKER_GEOMETRY_WIDE</unmanaged>\t\n            <unmanaged-short>DSSPEAKER_GEOMETRY_WIDE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.SpeakerGeometry.Maximum\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSSPEAKER_GEOMETRY_MAX']/*\"/>\t\n            <unmanaged>DSSPEAKER_GEOMETRY_MAX</unmanaged>\t\n            <unmanaged-short>DSSPEAKER_GEOMETRY_MAX</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectSound.CaptureEffectGuid\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.DirectSound.CaptureEffectGuid']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.CaptureEffectGuid.AcousticEchoCancellationCaptureEffect\">\n            <summary>Constant AcousticEchoCancellationCaptureEffect.</summary>\n            <unmanaged>GUID_DSCFX_CLASS_AEC</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.CaptureEffectGuid.MicrosoftAcousticEchoCancellationCaptureEffect\">\n            <summary>Constant MicrosoftAcousticEchoCancellationCaptureEffect.</summary>\n            <unmanaged>GUID_DSCFX_MS_AEC</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.CaptureEffectGuid.SystemAcousticEchoCancellationCaptureEffect\">\n            <summary>Constant SystemAcousticEchoCancellationCaptureEffect.</summary>\n            <unmanaged>GUID_DSCFX_SYSTEM_AEC</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.CaptureEffectGuid.NoiseSuppressionCaptureEffect\">\n            <summary>Constant NoiseSuppressionCaptureEffect.</summary>\n            <unmanaged>GUID_DSCFX_CLASS_NS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.CaptureEffectGuid.MicrosoftNoiseSuppressionCaptureEffect\">\n            <summary>Constant MicrosoftNoiseSuppressionCaptureEffect.</summary>\n            <unmanaged>GUID_DSCFX_MS_NS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.CaptureEffectGuid.SystemNoiseSuppressionCaptureEffect\">\n            <summary>Constant SystemNoiseSuppressionCaptureEffect.</summary>\n            <unmanaged>GUID_DSCFX_SYSTEM_NS</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectSound.DirectSound3DAlgorithmGuid\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.DirectSound.DirectSound3DAlgorithmGuid']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.DirectSound3DAlgorithmGuid.FullHrt3DAlgorithm\">\n            <summary>Constant FullHrt3DAlgorithm.</summary>\n            <unmanaged>DS3DALG_HRTF_FULL</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.DirectSound3DAlgorithmGuid.LightHrt3DAlgorithm\">\n            <summary>Constant LightHrt3DAlgorithm.</summary>\n            <unmanaged>DS3DALG_HRTF_LIGHT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.DirectSound3DAlgorithmGuid.NoVirtualization3DAlgorithm\">\n            <summary>Constant NoVirtualization3DAlgorithm.</summary>\n            <unmanaged>DS3DALG_NO_VIRTUALIZATION</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectSound.DSound\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.DirectSound.DSound']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.DSound.AllObjects\">\n            <summary>Constant AllObjects.</summary>\n            <unmanaged>GUID_All_Objects</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectSound.DSound.GetDeviceID(System.Nullable{System.Guid},System.Guid@)\">\n            <summary>\t\n            The GetDeviceID function retrieves the unique device identifier of the default playback and capture devices selected by the user in Control Panel.\t\n            </summary>\t\n            <param name=\"guidSrcRef\"><dd> Address of a variable that specifies a valid device identifier, or the address of one of the following predefined variables.<table> <tr><th>Value</th><th>Description</th></tr> <tr><td>DSDEVID_DefaultPlayback</td><td>System-wide default audio playback device.</td></tr> <tr><td>DSDEVID_DefaultCapture</td><td>System-wide default audio capture device.</td></tr> <tr><td>DSDEVID_DefaultVoicePlayback</td><td>Default voice playback device.</td></tr> <tr><td>DSDEVID_DefaultVoiceCapture</td><td>Default voice capture device.</td></tr> </table> </dd></param>\t\n            <param name=\"guidDestRef\"><dd> Address of a variable that receives the unique identifier of the device. </dd></param>\t\n            <returns><p>If the function succeeds, it returns DS_OK. If it fails, the return value may be DSERR_INVALIDPARAM.</p></returns>\t\n            <remarks>\t\n            <p>If pGuidSrc points to a valid device identifier, the same value is returned in pGuidDest. If pGuidSrc is one of the listed constants, pGuidDest returns the address of the corresponding device <see cref=\"T:System.Guid\"/>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='GetDeviceID']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.getdeviceid</msdn-id>\t\n            <unmanaged>HRESULT GetDeviceID([In, Optional] const GUID* pGuidSrc,[Out] GUID* pGuidDest)</unmanaged>\t\n            <unmanaged-short>GetDeviceID</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.DSound.CaptureCreate8(System.Nullable{System.Guid},SharpDX.DirectSound.DirectSoundCapture,SharpDX.ComObject)\">\n            <summary>\t\n            The DirectSoundCaptureCreate8 function creates and initializes an object that supports the IDirectSoundCapture8 interface. Although the older<strong>DirectSoundCaptureCreate</strong>function can also be used to obtain theIDirectSoundCapture8interface, the object created by that function cannot be used to create capture buffers that support theIDirectSoundCaptureBuffer8interface.\t\n            </summary>\t\n            <param name=\"cGuidDeviceRef\">No documentation.</param>\t\n            <param name=\"dSC8Out\">No documentation.</param>\t\n            <param name=\"unkOuterRef\">No documentation.</param>\t\n            <returns><p>If the function succeeds, it returns DS_OK. If it fails, the return value may be one of the following values.</p> <table> <tr><th>Return Code</th></tr> <tr><td>DSERR_ALLOCATED</td></tr> <tr><td>DSERR_INVALIDPARAM</td></tr> <tr><td>DSERR_NOAGGREGATION</td></tr> <tr><td>DSERR_OUTOFMEMORY</td></tr> </table></returns>\t\n            <remarks>\t\n            <p>On sound cards that do not support full duplex, this method will fail and return DSERR_ALLOCATED.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DirectSoundCaptureCreate8']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.directsoundcapturecreate8</msdn-id>\t\n            <unmanaged>HRESULT DirectSoundCaptureCreate8([In, Optional] const GUID* pcGuidDevice,[Out, Fast] IDirectSoundCapture** ppDSC8,[In] IUnknown* pUnkOuter)</unmanaged>\t\n            <unmanaged-short>DirectSoundCaptureCreate8</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.DSound.EnumerateA(SharpDX.FunctionCallback,System.IntPtr)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"dSEnumCallbackRef\">No documentation.</param>\t\n            <param name=\"contextRef\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DirectSoundEnumerateA']/*\"/>\t\n            <unmanaged>HRESULT DirectSoundEnumerateA([In] __function__stdcall* pDSEnumCallback,[In, Optional] void* pContext)</unmanaged>\t\n            <unmanaged-short>DirectSoundEnumerateA</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.DSound.EnumerateW(SharpDX.FunctionCallback,System.IntPtr)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"dSEnumCallbackRef\">No documentation.</param>\t\n            <param name=\"contextRef\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DirectSoundEnumerateW']/*\"/>\t\n            <unmanaged>HRESULT DirectSoundEnumerateW([In] __function__stdcall* pDSEnumCallback,[In, Optional] void* pContext)</unmanaged>\t\n            <unmanaged-short>DirectSoundEnumerateW</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.DSound.CaptureCreate(System.Nullable{System.Guid},SharpDX.DirectSound.DirectSoundCapture@,SharpDX.ComObject)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"cGuidDeviceRef\">No documentation.</param>\t\n            <param name=\"dSCOut\">No documentation.</param>\t\n            <param name=\"unkOuterRef\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DirectSoundCaptureCreate']/*\"/>\t\n            <unmanaged>HRESULT DirectSoundCaptureCreate([In, Optional] const GUID* pcGuidDevice,[Out] IDirectSoundCapture** ppDSC,[In] IUnknown* pUnkOuter)</unmanaged>\t\n            <unmanaged-short>DirectSoundCaptureCreate</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.DSound.FullDuplexCreate(System.Nullable{System.Guid},System.Nullable{System.Guid},SharpDX.DirectSound.CaptureBufferDescription,SharpDX.DirectSound.SoundBufferDescription,System.IntPtr,System.Int32,SharpDX.DirectSound.FullDuplex,SharpDX.DirectSound.CaptureBuffer@,SharpDX.DirectSound.SecondarySoundBuffer@,SharpDX.ComObject)\">\n            <summary>\t\n            <p>The <strong>DirectSoundFullDuplexCreate</strong> function is documented under a different name. For complete documentation of this function, see DirectSoundFullDuplexCreate8. </p>\t\n            </summary>\t\n            <param name=\"cGuidCaptureDeviceRef\">No documentation.</param>\t\n            <param name=\"cGuidRenderDeviceRef\">No documentation.</param>\t\n            <param name=\"cDSCBufferDescRef\">No documentation.</param>\t\n            <param name=\"cDSBufferDescRef\">No documentation.</param>\t\n            <param name=\"hWnd\">No documentation.</param>\t\n            <param name=\"dwLevel\">No documentation.</param>\t\n            <param name=\"dSFDOut\">No documentation.</param>\t\n            <param name=\"dSCBuffer8Out\">No documentation.</param>\t\n            <param name=\"dSBuffer8Out\">No documentation.</param>\t\n            <param name=\"unkOuterRef\">No documentation.</param>\t\n            <returns><p>If this function succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DirectSoundFullDuplexCreate']/*\"/>\t\n            <msdn-id>bb432248</msdn-id>\t\n            <unmanaged>HRESULT DirectSoundFullDuplexCreate([In, Optional] const GUID* pcGuidCaptureDevice,[In, Optional] const GUID* pcGuidRenderDevice,[In] const DSCBUFFERDESC* pcDSCBufferDesc,[In] const DSBUFFERDESC* pcDSBufferDesc,[In] HWND hWnd,[In] unsigned int dwLevel,[Out, Fast] IDirectSoundFullDuplex** ppDSFD,[Out] IDirectSoundCaptureBuffer8** ppDSCBuffer8,[Out] IDirectSoundBuffer8** ppDSBuffer8,[In] IUnknown* pUnkOuter)</unmanaged>\t\n            <unmanaged-short>DirectSoundFullDuplexCreate</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.DSound.Create8(System.Nullable{System.Guid},SharpDX.DirectSound.DirectSound,SharpDX.ComObject)\">\n            <summary>\t\n            The DirectSoundCreate8 function creates and initializes an object that supports theIDirectSound8interface.\t\n            </summary>\t\n            <param name=\"cGuidDeviceRef\">No documentation.</param>\t\n            <param name=\"dS8Out\">No documentation.</param>\t\n            <param name=\"unkOuterRef\">No documentation.</param>\t\n            <returns><p>If the function succeeds, it returns DS_OK. If it fails, the return value may be one of the following.</p> <table> <tr><th>Return Code</th></tr> <tr><td>DSERR_ALLOCATED</td></tr> <tr><td>DSERR_INVALIDPARAM</td></tr> <tr><td>DSERR_NOAGGREGATION</td></tr> <tr><td>DSERR_NODRIVER</td></tr> <tr><td>DSERR_OUTOFMEMORY</td></tr> </table></returns>\t\n            <remarks>\t\n            <p>The application must call the IDirectSound8::SetCooperativeLevel method immediately after creating a device object.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DirectSoundCreate8']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.directsoundcreate8</msdn-id>\t\n            <unmanaged>HRESULT DirectSoundCreate8([In, Optional] const GUID* pcGuidDevice,[Out, Fast] IDirectSound8** ppDS8,[In] IUnknown* pUnkOuter)</unmanaged>\t\n            <unmanaged-short>DirectSoundCreate8</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.DSound.CaptureEnumerateA(SharpDX.FunctionCallback,System.IntPtr)\">\n            <summary>\t\n            The DirectSoundCaptureEnumerate function enumerates the DirectSoundCapture objects installed in the system.\t\n            </summary>\t\n            <param name=\"dSEnumCallbackRef\"><dd> Address of the DSEnumCallback function that will be called for each DirectSoundCapture object installed in the system. </dd></param>\t\n            <param name=\"contextRef\"><dd> Address of the user-defined context passed to the enumeration callback function every time that function is called. </dd></param>\t\n            <returns><p>If the function succeeds, it returns DS_OK. If it fails, the return value may be DSERR_INVALIDPARAM.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DirectSoundCaptureEnumerateA']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.directsoundcaptureenumerate</msdn-id>\t\n            <unmanaged>HRESULT DirectSoundCaptureEnumerateA([In] __function__stdcall* pDSEnumCallback,[In, Optional] void* pContext)</unmanaged>\t\n            <unmanaged-short>DirectSoundCaptureEnumerateA</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.DSound.CaptureEnumerateW(SharpDX.FunctionCallback,System.IntPtr)\">\n            <summary>\t\n            The DirectSoundCaptureEnumerate function enumerates the DirectSoundCapture objects installed in the system.\t\n            </summary>\t\n            <param name=\"dSEnumCallbackRef\"><dd> Address of the DSEnumCallback function that will be called for each DirectSoundCapture object installed in the system. </dd></param>\t\n            <param name=\"contextRef\"><dd> Address of the user-defined context passed to the enumeration callback function every time that function is called. </dd></param>\t\n            <returns><p>If the function succeeds, it returns DS_OK. If it fails, the return value may be DSERR_INVALIDPARAM.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DirectSoundCaptureEnumerateW']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.directsoundcaptureenumerate</msdn-id>\t\n            <unmanaged>HRESULT DirectSoundCaptureEnumerateW([In] __function__stdcall* pDSEnumCallback,[In, Optional] void* pContext)</unmanaged>\t\n            <unmanaged-short>DirectSoundCaptureEnumerateW</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.DSound.Create(System.Nullable{System.Guid},SharpDX.DirectSound.DirectSoundBase@,SharpDX.ComObject)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"cGuidDeviceRef\">No documentation.</param>\t\n            <param name=\"dSOut\">No documentation.</param>\t\n            <param name=\"unkOuterRef\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DirectSoundCreate']/*\"/>\t\n            <unmanaged>HRESULT DirectSoundCreate([In, Optional] const GUID* pcGuidDevice,[Out] IDirectSound** ppDS,[In] IUnknown* pUnkOuter)</unmanaged>\t\n            <unmanaged-short>DirectSoundCreate</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectSound.SoundEffectGuid\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.DirectSound.SoundEffectGuid']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.SoundEffectGuid.StandardI3DL2REVERB\">\n            <summary>Constant StandardI3DL2REVERB.</summary>\n            <unmanaged>GUID_DSFX_STANDARD_I3DL2REVERB</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.SoundEffectGuid.StandardDistortion\">\n            <summary>Constant StandardDistortion.</summary>\n            <unmanaged>GUID_DSFX_STANDARD_DISTORTION</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.SoundEffectGuid.StandardFlanger\">\n            <summary>Constant StandardFlanger.</summary>\n            <unmanaged>GUID_DSFX_STANDARD_FLANGER</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.SoundEffectGuid.StandardChorus\">\n            <summary>Constant StandardChorus.</summary>\n            <unmanaged>GUID_DSFX_STANDARD_CHORUS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.SoundEffectGuid.StandardCompressor\">\n            <summary>Constant StandardCompressor.</summary>\n            <unmanaged>GUID_DSFX_STANDARD_COMPRESSOR</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.SoundEffectGuid.WavesReverb\">\n            <summary>Constant WavesReverb.</summary>\n            <unmanaged>GUID_DSFX_WAVES_REVERB</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.SoundEffectGuid.StandardEcho\">\n            <summary>Constant StandardEcho.</summary>\n            <unmanaged>GUID_DSFX_STANDARD_ECHO</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.SoundEffectGuid.StandardParameq\">\n            <summary>Constant StandardParameq.</summary>\n            <unmanaged>GUID_DSFX_STANDARD_PARAMEQ</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.SoundEffectGuid.StandardGargle\">\n            <summary>Constant StandardGargle.</summary>\n            <unmanaged>GUID_DSFX_STANDARD_GARGLE</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectSound.AcousticEchoCancel\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundCaptureFXAec']/*\"/>\t\n            <unmanaged>IDirectSoundCaptureFXAec</unmanaged>\t\n            <unmanaged-short>IDirectSoundCaptureFXAec</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.AcousticEchoCancel.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectSound.AcousticEchoCancel\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.AcousticEchoCancel.op_Explicit(System.IntPtr)~SharpDX.DirectSound.AcousticEchoCancel\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.DirectSound.AcousticEchoCancel\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.DirectSound.AcousticEchoCancel.SetAllParameters(SharpDX.DirectSound.AcousticEchoCancelSettings)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"dscFxAecRef\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundCaptureFXAec::SetAllParameters']/*\"/>\t\n            <unmanaged>HRESULT IDirectSoundCaptureFXAec::SetAllParameters([In] const DSCFXAec* pDscFxAec)</unmanaged>\t\n            <unmanaged-short>IDirectSoundCaptureFXAec::SetAllParameters</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.AcousticEchoCancel.GetAllParameters(SharpDX.DirectSound.AcousticEchoCancelSettings@)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"dscFxAecRef\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundCaptureFXAec::GetAllParameters']/*\"/>\t\n            <unmanaged>HRESULT IDirectSoundCaptureFXAec::GetAllParameters([Out] DSCFXAec* pDscFxAec)</unmanaged>\t\n            <unmanaged-short>IDirectSoundCaptureFXAec::GetAllParameters</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.AcousticEchoCancel.GetStatus(SharpDX.DirectSound.AcousticEchoCancelStatus@)\">\n            <summary>\t\n            The IDirectSoundCaptureFXAec8::GetStatus method retrieves the status of the effect.\t\n            </summary>\t\n            <param name=\"tatusRef\"><dd> Address of a DWORD variable to receive the status. The following flags are defined. See Remarks. <table> <tr><td>Constant</td><td>Value</td></tr> <tr><td><see cref=\"F:SharpDX.DirectSound.AcousticEchoCancelStatus.HistoryUninitialized\"/></td><td>0x0</td></tr> <tr><td><see cref=\"F:SharpDX.DirectSound.AcousticEchoCancelStatus.HistoryContinuouslyConverged\"/></td><td>0x1</td></tr> <tr><td><see cref=\"F:SharpDX.DirectSound.AcousticEchoCancelStatus.HistoryPreviouslyDiverged\"/></td><td>0x2</td></tr> <tr><td><see cref=\"F:SharpDX.DirectSound.AcousticEchoCancelStatus.CurrentlyConverged\"/></td><td>0x8</td></tr> </table> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be one of the following values.</p> <table> <tr><td>Return code</td></tr> <tr><td>DSERR_INVALIDPARAM </td></tr> <tr><td>DSERR_OUTOFMEMORY </td></tr> </table></returns>\t\n            <remarks>\t\n            <table><tr><th>Windows </th></tr><tr><td><p>Important Note for Windows Vista</p> <p>Existing applications that access Windows XP Acoustic Echo Cancellation (AEC) features via the DirectSound API will no longer obtain AEC when running on Windows Vista. These applications will still run, but their calls to AEC-specific DirectSound API calls will have no effect on the captured audio.</p><p>To learn how to obtain AEC in Windows Vista, See the Windows Vista AEC topics in the Windows SDK.</p></td></tr></table> <p>The three least significant bits in *pdwStatus describe the convergence history; that is, the success of the effect in canceling the echo. The convergence history can be used by the application to determine if the algorithm has converged and remained in the converged state since it started processing data.</p> <p>Initially, the AEC algorithm sets the three lower bits to 0 for the uninitialized state (<see cref=\"F:SharpDX.DirectSound.AcousticEchoCancelStatus.HistoryUninitialized\"/>). When the AEC algorithm has converged, the convergence history is switched to the <see cref=\"F:SharpDX.DirectSound.AcousticEchoCancelStatus.HistoryContinuouslyConverged\"/> state. If the AEC algorithm ever loses convergence, the convergence history is then transitioned to the <see cref=\"F:SharpDX.DirectSound.AcousticEchoCancelStatus.HistoryPreviouslyDiverged\"/> state. A transition from <see cref=\"F:SharpDX.DirectSound.AcousticEchoCancelStatus.HistoryUninitialized\"/> to <see cref=\"F:SharpDX.DirectSound.AcousticEchoCancelStatus.HistoryPreviouslyDiverged\"/> is also possible. The convergence history remains in the <see cref=\"F:SharpDX.DirectSound.AcousticEchoCancelStatus.HistoryPreviouslyDiverged\"/> state until the algorithm is reset or timely data is no longer arriving on the capture or render stream.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundCaptureFXAec::GetStatus']/*\"/>\t\n            <msdn-id>ee418190</msdn-id>\t\n            <unmanaged>HRESULT IDirectSoundCaptureFXAec::GetStatus([Out] DSCFX_AEC_STATUS* pdwStatus)</unmanaged>\t\n            <unmanaged-short>IDirectSoundCaptureFXAec::GetStatus</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.AcousticEchoCancel.Reset\">\n            <summary>\t\n            The IDirectSoundCaptureFXAec8::Reset method resets the effect to its initial state.\t\n            </summary>\t\n            <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be DSERR_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <table><tr><th>Windows </th></tr><tr><td><p>Important Note for Windows Vista</p> <p>Existing applications that access Windows XP Acoustic Echo Cancellation (AEC) features via the DirectSound API will no longer obtain AEC when running on Windows Vista. These applications will still run, but their calls to AEC-specific DirectSound API calls will have no effect on the captured audio.</p><p>To learn how to obtain AEC in Windows Vista, See the Windows Vista AEC topics in the Windows SDK.</p></td></tr></table> <p>Applications should not reset an effect except when necessary because it has entered an incorrect state. This might be done in response to user input. An effect must not be reset arbitrarily at startup, because another application might be using the same effect.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundCaptureFXAec::Reset']/*\"/>\t\n            <msdn-id>ee418192</msdn-id>\t\n            <unmanaged>HRESULT IDirectSoundCaptureFXAec::Reset()</unmanaged>\t\n            <unmanaged-short>IDirectSoundCaptureFXAec::Reset</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.DirectSound.AcousticEchoCancel.AllParameters\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundCaptureFXAec::GetAllParameters']/*\"/>\t\n            <unmanaged>GetAllParameters / SetAllParameters</unmanaged>\t\n            <unmanaged-short>GetAllParameters</unmanaged-short>\t\n            <unmanaged>HRESULT IDirectSoundCaptureFXAec::GetAllParameters([Out] DSCFXAec* pDscFxAec)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectSound.AcousticEchoCancel.Status\">\n            <summary>\t\n            The IDirectSoundCaptureFXAec8::GetStatus method retrieves the status of the effect.\t\n            </summary>\t\n            <remarks>\t\n            <table><tr><th>Windows </th></tr><tr><td><p>Important Note for Windows Vista</p> <p>Existing applications that access Windows XP Acoustic Echo Cancellation (AEC) features via the DirectSound API will no longer obtain AEC when running on Windows Vista. These applications will still run, but their calls to AEC-specific DirectSound API calls will have no effect on the captured audio.</p><p>To learn how to obtain AEC in Windows Vista, See the Windows Vista AEC topics in the Windows SDK.</p></td></tr></table> <p>The three least significant bits in *pdwStatus describe the convergence history; that is, the success of the effect in canceling the echo. The convergence history can be used by the application to determine if the algorithm has converged and remained in the converged state since it started processing data.</p> <p>Initially, the AEC algorithm sets the three lower bits to 0 for the uninitialized state (<see cref=\"F:SharpDX.DirectSound.AcousticEchoCancelStatus.HistoryUninitialized\"/>). When the AEC algorithm has converged, the convergence history is switched to the <see cref=\"F:SharpDX.DirectSound.AcousticEchoCancelStatus.HistoryContinuouslyConverged\"/> state. If the AEC algorithm ever loses convergence, the convergence history is then transitioned to the <see cref=\"F:SharpDX.DirectSound.AcousticEchoCancelStatus.HistoryPreviouslyDiverged\"/> state. A transition from <see cref=\"F:SharpDX.DirectSound.AcousticEchoCancelStatus.HistoryUninitialized\"/> to <see cref=\"F:SharpDX.DirectSound.AcousticEchoCancelStatus.HistoryPreviouslyDiverged\"/> is also possible. The convergence history remains in the <see cref=\"F:SharpDX.DirectSound.AcousticEchoCancelStatus.HistoryPreviouslyDiverged\"/> state until the algorithm is reset or timely data is no longer arriving on the capture or render stream.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundCaptureFXAec::GetStatus']/*\"/>\t\n            <msdn-id>ee418190</msdn-id>\t\n            <unmanaged>GetStatus</unmanaged>\t\n            <unmanaged-short>GetStatus</unmanaged-short>\t\n            <unmanaged>HRESULT IDirectSoundCaptureFXAec::GetStatus([Out] DSCFX_AEC_STATUS* pdwStatus)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectSound.I3DL2Reverb\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundFXI3DL2Reverb']/*\"/>\t\n            <msdn-id>bb280379</msdn-id>\t\n            <unmanaged>IDirectSoundFXI3DL2Reverb</unmanaged>\t\n            <unmanaged-short>IDirectSoundFXI3DL2Reverb</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2Reverb.DecayHFRatioDefault\">\n            <summary>\n            Default ratio of the decay time at high frequencies to the decay time at low frequencies.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2Reverb.DecayHFRatioMax\">\n            <summary>\n            Maximum ratio of the decay time at high frequencies to the decay time at low frequencies.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2Reverb.DecayHFRatioMin\">\n            <summary>\n            Minimum ratio of the decay time at high frequencies to the decay time at low frequencies.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2Reverb.DecayTimeDefault\">\n            <summary>\n            Default decay time, in seconds.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2Reverb.DecayTimeMax\">\n            <summary>\n            Maximum decay time, in seconds.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2Reverb.DecayTimeMin\">\n            <summary>\n            Minimum decay time, in seconds.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2Reverb.DensityDefault\">\n            <summary>\n            Default modal density in the late reverberation decay, in percent.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2Reverb.DensityMax\">\n            <summary>\n            Maximum modal density in the late reverberation decay, in percent.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2Reverb.DensityMin\">\n            <summary>\n            Minimum modal density in the late reverberation decay, in percent.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2Reverb.DiffusionDefault\">\n            <summary>\n            Default echo density in the late reverberation decay, in percent.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2Reverb.DiffusionMax\">\n            <summary>\n            Maximum echo density in the late reverberation decay, in percent.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2Reverb.DiffusionMin\">\n            <summary>\n            Minimum echo density in the late reverberation decay, in percent.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2Reverb.HFReferenceDefault\">\n            <summary>\n            Default reference high frequency, in hertz.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2Reverb.HFReferenceMax\">\n            <summary>\n            Maximum reference high frequency, in hertz.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2Reverb.HFReferenceMin\">\n            <summary>\n            Minimum reference high frequency, in hertz.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2Reverb.ReflectionsDefault\">\n            <summary>\n            Default attenuation of early reflections relative to Room, in mB.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2Reverb.ReflectionsDelayDefault\">\n            <summary>\n            Default delay time of the first reflection relative to the direct path, in seconds.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2Reverb.ReflectionsDelayMax\">\n            <summary>\n            Maximum delay time of the first reflection relative to the direct path, in seconds.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2Reverb.ReflectionsDelayMin\">\n            <summary>\n            Minimum delay time of the first reflection relative to the direct path, in seconds.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2Reverb.ReflectionsMax\">\n            <summary>\n            Maximum attenuation of early reflections relative to Room, in mB.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2Reverb.ReflectionsMin\">\n            <summary>\n            Minimum attenuation of early reflections relative to Room, in mB.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2Reverb.ReverbDefault\">\n            <summary>\n            Default attenuation of late reverberation relative to Room, in mB.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2Reverb.ReverbDelayDefault\">\n            <summary>\n            Default time limit between the early reflections and the late reverberation relative to the time of the first reflection, in seconds.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2Reverb.ReverbDelayMax\">\n            <summary>\n            Maximum time limit between the early reflections and the late reverberation relative to the time of the first reflection, in seconds.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2Reverb.ReverbDelayMin\">\n            <summary>\n            Minimum time limit between the early reflections and the late reverberation relative to the time of the first reflection, in seconds.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2Reverb.ReverbMax\">\n            <summary>\n            Maximum attenuation of late reverberation relative to Room, in mB.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2Reverb.ReverbMin\">\n            <summary>\n            Minimum attenuation of late reverberation relative to Room, in mB.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2Reverb.RoomDefault\">\n            <summary>\n            Default attenuation of the room effect, in millibels (mB).\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2Reverb.RoomHFDefault\">\n            <summary>\n            Default attenuation of the room high-frequency effect, in mB.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2Reverb.RoomHFMax\">\n            <summary>\n            Maximum attenuation of the room high-frequency effect, in mB.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2Reverb.RoomHFMin\">\n            <summary>\n            Minimum attenuation of the room high-frequency effect, in mB.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2Reverb.RoomMax\">\n            <summary>\n            Maximum attenuation of the room effect, in millibels (mB).\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2Reverb.RoomMin\">\n            <summary>\n            Minimum attenuation of the room effect, in millibels (mB).\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2Reverb.RoomRolloffFactorDefault\">\n            <summary>\n            Default rolloff factor for the reflected signals. The rolloff factor for the direct path is controlled by the DirectSound listener.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2Reverb.RoomRolloffFactorMax\">\n            <summary>\n            Maximum rolloff factor for the reflected signals. The rolloff factor for the direct path is controlled by the DirectSound listener.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2Reverb.RoomRolloffFactorMin\">\n            <summary>\n            Minimum rolloff factor for the reflected signals. The rolloff factor for the direct path is controlled by the DirectSound listener.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.DirectSound.I3DL2Reverb.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectSound.I3DL2Reverb\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.I3DL2Reverb.op_Explicit(System.IntPtr)~SharpDX.DirectSound.I3DL2Reverb\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.DirectSound.I3DL2Reverb\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.DirectSound.I3DL2Reverb.SetAllParameters(SharpDX.DirectSound.I3DL2ReverbSettings@)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"cDsFxI3DL2ReverbRef\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundFXI3DL2Reverb::SetAllParameters']/*\"/>\t\n            <unmanaged>HRESULT IDirectSoundFXI3DL2Reverb::SetAllParameters([In] const DSFXI3DL2Reverb* pcDsFxI3DL2Reverb)</unmanaged>\t\n            <unmanaged-short>IDirectSoundFXI3DL2Reverb::SetAllParameters</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.I3DL2Reverb.GetAllParameters(SharpDX.DirectSound.I3DL2ReverbSettings@)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"dsFxI3DL2ReverbRef\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundFXI3DL2Reverb::GetAllParameters']/*\"/>\t\n            <unmanaged>HRESULT IDirectSoundFXI3DL2Reverb::GetAllParameters([Out] DSFXI3DL2Reverb* pDsFxI3DL2Reverb)</unmanaged>\t\n            <unmanaged-short>IDirectSoundFXI3DL2Reverb::GetAllParameters</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.I3DL2Reverb.SetPreset(System.Int32)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"preset\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundFXI3DL2Reverb::SetPreset']/*\"/>\t\n            <unmanaged>HRESULT IDirectSoundFXI3DL2Reverb::SetPreset([In] unsigned int dwPreset)</unmanaged>\t\n            <unmanaged-short>IDirectSoundFXI3DL2Reverb::SetPreset</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.I3DL2Reverb.GetPreset(System.Int32@)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"resetRef\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundFXI3DL2Reverb::GetPreset']/*\"/>\t\n            <unmanaged>HRESULT IDirectSoundFXI3DL2Reverb::GetPreset([Out] unsigned int* pdwPreset)</unmanaged>\t\n            <unmanaged-short>IDirectSoundFXI3DL2Reverb::GetPreset</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.I3DL2Reverb.SetQuality(System.Int32)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"quality\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundFXI3DL2Reverb::SetQuality']/*\"/>\t\n            <unmanaged>HRESULT IDirectSoundFXI3DL2Reverb::SetQuality([In] int lQuality)</unmanaged>\t\n            <unmanaged-short>IDirectSoundFXI3DL2Reverb::SetQuality</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.I3DL2Reverb.GetQuality(System.Int32@)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"lQualityRef\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundFXI3DL2Reverb::GetQuality']/*\"/>\t\n            <unmanaged>HRESULT IDirectSoundFXI3DL2Reverb::GetQuality([Out] int* plQuality)</unmanaged>\t\n            <unmanaged-short>IDirectSoundFXI3DL2Reverb::GetQuality</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.DirectSound.I3DL2Reverb.AllParameters\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundFXI3DL2Reverb::GetAllParameters']/*\"/>\t\n            <unmanaged>GetAllParameters / SetAllParameters</unmanaged>\t\n            <unmanaged-short>GetAllParameters</unmanaged-short>\t\n            <unmanaged>HRESULT IDirectSoundFXI3DL2Reverb::GetAllParameters([Out] DSFXI3DL2Reverb* pDsFxI3DL2Reverb)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectSound.I3DL2Reverb.Preset\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundFXI3DL2Reverb::GetPreset']/*\"/>\t\n            <unmanaged>GetPreset / SetPreset</unmanaged>\t\n            <unmanaged-short>GetPreset</unmanaged-short>\t\n            <unmanaged>HRESULT IDirectSoundFXI3DL2Reverb::GetPreset([Out] unsigned int* pdwPreset)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectSound.I3DL2Reverb.Quality\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundFXI3DL2Reverb::GetQuality']/*\"/>\t\n            <unmanaged>GetQuality / SetQuality</unmanaged>\t\n            <unmanaged-short>GetQuality</unmanaged-short>\t\n            <unmanaged>HRESULT IDirectSoundFXI3DL2Reverb::GetQuality([Out] int* plQuality)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectSound.NoiseSuppress\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundCaptureFXNoiseSuppress']/*\"/>\t\n            <unmanaged>IDirectSoundCaptureFXNoiseSuppress</unmanaged>\t\n            <unmanaged-short>IDirectSoundCaptureFXNoiseSuppress</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.NoiseSuppress.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectSound.NoiseSuppress\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.NoiseSuppress.op_Explicit(System.IntPtr)~SharpDX.DirectSound.NoiseSuppress\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.DirectSound.NoiseSuppress\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.DirectSound.NoiseSuppress.SetAllParameters(SharpDX.DirectSound.NoiseSuppressSettings)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"cDscFxNoiseSuppressRef\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundCaptureFXNoiseSuppress::SetAllParameters']/*\"/>\t\n            <unmanaged>HRESULT IDirectSoundCaptureFXNoiseSuppress::SetAllParameters([In] const DSCFXNoiseSuppress* pcDscFxNoiseSuppress)</unmanaged>\t\n            <unmanaged-short>IDirectSoundCaptureFXNoiseSuppress::SetAllParameters</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.NoiseSuppress.GetAllParameters(SharpDX.DirectSound.NoiseSuppressSettings@)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"dscFxNoiseSuppressRef\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundCaptureFXNoiseSuppress::GetAllParameters']/*\"/>\t\n            <unmanaged>HRESULT IDirectSoundCaptureFXNoiseSuppress::GetAllParameters([Out] DSCFXNoiseSuppress* pDscFxNoiseSuppress)</unmanaged>\t\n            <unmanaged-short>IDirectSoundCaptureFXNoiseSuppress::GetAllParameters</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.NoiseSuppress.Reset\">\n            <summary>\t\n            The IDirectSoundCaptureFXNoiseSuppress8::Reset method resets the effect to its initial state.\t\n            </summary>\t\n            <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be DSERR_OUTOFMEMORY.</p></returns>\t\n            <remarks>\t\n            <table><tr><th>Windows </th></tr><tr><td><p>Important Note for Windows Vista</p> <p>Existing applications that access Windows XP Acoustic Echo Cancellation (AEC) features via the DirectSound API will no longer obtain AEC when running on Windows Vista. These applications will still run, but their calls to AEC-specific DirectSound API calls will have no effect on the captured audio.</p><p>To learn how to obtain AEC in Windows Vista, See the Windows Vista AEC topics in the Windows SDK.</p></td></tr></table> <p>Applications should not reset an effect except when necessary because it has entered an incorrect state. This might be done in response to user input. An effect must not be reset arbitrarily at startup, because another application might be using the same effect.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundCaptureFXNoiseSuppress::Reset']/*\"/>\t\n            <msdn-id>ee418201</msdn-id>\t\n            <unmanaged>HRESULT IDirectSoundCaptureFXNoiseSuppress::Reset()</unmanaged>\t\n            <unmanaged-short>IDirectSoundCaptureFXNoiseSuppress::Reset</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.DirectSound.NoiseSuppress.AllParameters\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundCaptureFXNoiseSuppress::GetAllParameters']/*\"/>\t\n            <unmanaged>GetAllParameters / SetAllParameters</unmanaged>\t\n            <unmanaged-short>GetAllParameters</unmanaged-short>\t\n            <unmanaged>HRESULT IDirectSoundCaptureFXNoiseSuppress::GetAllParameters([Out] DSCFXNoiseSuppress* pDscFxNoiseSuppress)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectSound.NoiseSuppress.Enabled\">\n            <summary>\n            Gets or sets he noise suppression parameters of a buffer.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.DirectSound.ParametricEqualizer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundFXParamEq']/*\"/>\t\n            <unmanaged>IDirectSoundFXParamEq</unmanaged>\t\n            <unmanaged-short>IDirectSoundFXParamEq</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.ParametricEqualizer.BandwidthDefault\">\n            <summary>\n            Default bandwidth, in semitones.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.ParametricEqualizer.BandwidthMax\">\n            <summary>\n            Maximum bandwidth, in semitones.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.ParametricEqualizer.BandwidthMin\">\n            <summary>\n            Minimum bandwidth, in semitones.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.ParametricEqualizer.CenterDefault\">\n            <summary>\n            Default center frequency, in hertz.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.ParametricEqualizer.CenterMax\">\n            <summary>\n            Maximum center frequency, in hertz.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.ParametricEqualizer.CenterMin\">\n            <summary>\n            Minimum center frequency, in hertz.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.ParametricEqualizer.GainDefault\">\n            <summary>\n            Default gain.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.ParametricEqualizer.GainMax\">\n            <summary>\n            Maximum gain.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.ParametricEqualizer.GainMin\">\n            <summary>\n            Minimum gain.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.DirectSound.ParametricEqualizer.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectSound.ParametricEqualizer\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.ParametricEqualizer.op_Explicit(System.IntPtr)~SharpDX.DirectSound.ParametricEqualizer\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.DirectSound.ParametricEqualizer\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.DirectSound.ParametricEqualizer.SetAllParameters(SharpDX.DirectSound.ParametricEqualizerSettings)\">\n            <summary>\t\n            The SetAllParameters method sets the parametric equalizer parameters of a buffer.\t\n            </summary>\t\n            <param name=\"cDsFxParamEqRef\"><dd> Address of a <see cref=\"T:SharpDX.DirectSound.ParametricEqualizerSettings\"/> structure that specifies the effect parameters. </dd></param>\t\n            <returns><p>If the method succeeds, the return value is DS_OK or S_FALSE. See the Remarks for <see cref=\"T:SharpDX.DirectSound.ParametricEqualizerSettings\"/>. If the method fails, the return value may be DSERR_INVALIDPARAM.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundFXParamEq::SetAllParameters']/*\"/>\t\n            <msdn-id>ee418240</msdn-id>\t\n            <unmanaged>HRESULT IDirectSoundFXParamEq::SetAllParameters([In] const DSFXParamEq* pcDsFxParamEq)</unmanaged>\t\n            <unmanaged-short>IDirectSoundFXParamEq::SetAllParameters</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.ParametricEqualizer.GetAllParameters(SharpDX.DirectSound.ParametricEqualizerSettings@)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"dsFxParamEqRef\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundFXParamEq::GetAllParameters']/*\"/>\t\n            <unmanaged>HRESULT IDirectSoundFXParamEq::GetAllParameters([Out] DSFXParamEq* pDsFxParamEq)</unmanaged>\t\n            <unmanaged-short>IDirectSoundFXParamEq::GetAllParameters</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.DirectSound.ParametricEqualizer.AllParameters\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundFXParamEq::GetAllParameters']/*\"/>\t\n            <unmanaged>GetAllParameters / SetAllParameters</unmanaged>\t\n            <unmanaged-short>GetAllParameters</unmanaged-short>\t\n            <unmanaged>HRESULT IDirectSoundFXParamEq::GetAllParameters([Out] DSFXParamEq* pDsFxParamEq)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectSound.SecondarySoundBuffer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundBuffer8']/*\"/>\t\n            <unmanaged>IDirectSoundBuffer8</unmanaged>\t\n            <unmanaged-short>IDirectSoundBuffer8</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectSound.SoundBuffer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundBuffer']/*\"/>\t\n            <unmanaged>IDirectSoundBuffer</unmanaged>\t\n            <unmanaged-short>IDirectSoundBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.SoundBuffer.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectSound.SoundBuffer\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.SoundBuffer.op_Explicit(System.IntPtr)~SharpDX.DirectSound.SoundBuffer\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.DirectSound.SoundBuffer\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.DirectSound.SoundBuffer.GetCapabilities(SharpDX.DirectSound.BufferCapabilities@)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"dSBufferCapsRef\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundBuffer::GetCaps']/*\"/>\t\n            <unmanaged>HRESULT IDirectSoundBuffer::GetCaps([Out] DSBCAPS* pDSBufferCaps)</unmanaged>\t\n            <unmanaged-short>IDirectSoundBuffer::GetCaps</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.SoundBuffer.GetCurrentPosition(System.Int32@,System.Int32@)\">\n            <summary>\t\n            The GetCurrentPosition method retrieves the position of the play and write cursors in the sound buffer.\t\n            </summary>\t\n            <param name=\"urrentPlayCursorRef\"><dd> Address of a variable that receives the offset, in bytes, of the play cursor. This parameter can be <c>null</c> if the value is not wanted. </dd></param>\t\n            <param name=\"urrentWriteCursorRef\"><dd> Address of a variable that receives the offset, in bytes, of the write cursor. This parameter can be <c>null</c> if the value is not wanted. </dd></param>\t\n            <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be one of the following error values: </p> <table> <tr><td>Return code</td></tr> <tr><td>DSERR_INVALIDPARAM </td></tr> <tr><td>DSERR_PRIOLEVELNEEDED </td></tr> </table></returns>\t\n            <remarks>\t\n            <p>The write cursor is the point in the buffer ahead of which it is safe to write data to the buffer. Data should not be written to the part of the buffer after the play cursor and before the write cursor.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundBuffer::GetCurrentPosition']/*\"/>\t\n            <msdn-id>ee418062</msdn-id>\t\n            <unmanaged>HRESULT IDirectSoundBuffer::GetCurrentPosition([Out, Optional] unsigned int* pdwCurrentPlayCursor,[Out, Optional] unsigned int* pdwCurrentWriteCursor)</unmanaged>\t\n            <unmanaged-short>IDirectSoundBuffer::GetCurrentPosition</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.SoundBuffer.GetFormat(SharpDX.Multimedia.WaveFormat[],System.Int32,System.Int32@)\">\n            <summary>\t\n            The GetFormat method retrieves a description of the format of the sound data in the buffer, or the buffer size needed to retrieve the format description.\t\n            </summary>\t\n            <param name=\"wfxFormatRef\"><dd> Address of a <see cref=\"T:SharpDX.Multimedia.WaveFormat\"/> or <see cref=\"T:SharpDX.Multimedia.WaveFormatExtensible\"/> structure that receives a description of the sound data in the buffer. To retrieve the buffer size needed to contain the format description, specify <c>null</c>. In this case the variable at pdwSizeWritten receives the size of the structure needed to receive the data. </dd></param>\t\n            <param name=\"sizeAllocated\"><dd> Size, in bytes, of the structure at pwfxFormat. If pwfxFormat is not <c>null</c>, this value must be equal to or greater than the size of the expected data. </dd></param>\t\n            <param name=\"izeWrittenRef\"><dd> Address of a variable that receives the number of bytes written to the structure at pwfxFormat. This parameter can be <c>null</c>. </dd></param>\t\n            <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be DSERR_INVALIDPARAM.</p></returns>\t\n            <remarks>\t\n            <p>The format structure can have a variable length that depends on the format. Before retrieving the format description, the application should query the buffer object for the size of the format by calling this method and specifying <c>null</c> for the pwfxFormat parameter. The necessary size of the structure is returned in the pdwSizeWritten parameter. The application can then allocate sufficient memory and call GetFormat again to retrieve the format description.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundBuffer::GetFormat']/*\"/>\t\n            <msdn-id>ee418064</msdn-id>\t\n            <unmanaged>HRESULT IDirectSoundBuffer::GetFormat([Out, Buffer, Optional] WAVEFORMATEX* pwfxFormat,[In] unsigned int dwSizeAllocated,[Out, Optional] unsigned int* pdwSizeWritten)</unmanaged>\t\n            <unmanaged-short>IDirectSoundBuffer::GetFormat</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.SoundBuffer.GetVolume(System.Int32@)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"lVolumeRef\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundBuffer::GetVolume']/*\"/>\t\n            <unmanaged>HRESULT IDirectSoundBuffer::GetVolume([Out] int* plVolume)</unmanaged>\t\n            <unmanaged-short>IDirectSoundBuffer::GetVolume</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.SoundBuffer.GetPan(System.Int32@)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"lPanRef\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundBuffer::GetPan']/*\"/>\t\n            <unmanaged>HRESULT IDirectSoundBuffer::GetPan([Out] int* plPan)</unmanaged>\t\n            <unmanaged-short>IDirectSoundBuffer::GetPan</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.SoundBuffer.GetFrequency(System.Int32@)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"requencyRef\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundBuffer::GetFrequency']/*\"/>\t\n            <unmanaged>HRESULT IDirectSoundBuffer::GetFrequency([Out] unsigned int* pdwFrequency)</unmanaged>\t\n            <unmanaged-short>IDirectSoundBuffer::GetFrequency</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.SoundBuffer.GetStatus(System.Int32@)\">\n            <summary>\t\n            The GetStatus method retrieves the status of the sound buffer.\t\n            </summary>\t\n            <param name=\"tatusRef\"><dd> Address of a variable that receives the status of the sound buffer. The status can be a combination of the following flags:  <table> <tr><td>Value</td><td>Description</td></tr> <tr><td><see cref=\"F:SharpDX.DirectSound.BufferStatus.BufferLost\"/></td><td>The buffer is lost and must be restored before it can be played or locked.</td></tr> <tr><td><see cref=\"F:SharpDX.DirectSound.BufferStatus.Looping\"/></td><td>The buffer is being looped. If this value is not set, the buffer will stop when it reaches the end of the sound data. This value is returned only in combination with <see cref=\"F:SharpDX.DirectSound.BufferStatus.Playing\"/>.</td></tr> <tr><td><see cref=\"F:SharpDX.DirectSound.BufferStatus.Playing\"/></td><td>The buffer is playing. If this value is not set, the buffer is stopped.</td></tr> <tr><td><see cref=\"F:SharpDX.DirectSound.BufferStatus.Software\"/></td><td>The buffer is playing in software. Set only for buffers created with the <see cref=\"F:SharpDX.DirectSound.BufferFlags.Defer\"/> flag.</td></tr> <tr><td><see cref=\"F:SharpDX.DirectSound.BufferStatus.Hardware\"/></td><td>The buffer is playing in hardware. Set only for buffers created with the <see cref=\"F:SharpDX.DirectSound.BufferFlags.Defer\"/> flag.</td></tr> <tr><td><see cref=\"F:SharpDX.DirectSound.BufferStatus.Terminated\"/></td><td>The buffer was prematurely terminated by the voice manager and is not playing. Set only for buffers created with the <see cref=\"F:SharpDX.DirectSound.BufferFlags.Defer\"/> flag.</td></tr> </table> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be DSERR_INVALIDPARAM.</p></returns>\t\n            <remarks>\t\n            <p><see cref=\"F:SharpDX.DirectSound.BufferStatus.Playing\"/> is set if the buffer is being heard. Because of latency, a call to Play or Stop might not immediately change the status.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundBuffer::GetStatus']/*\"/>\t\n            <msdn-id>ee418070</msdn-id>\t\n            <unmanaged>HRESULT IDirectSoundBuffer::GetStatus([Out] unsigned int* pdwStatus)</unmanaged>\t\n            <unmanaged-short>IDirectSoundBuffer::GetStatus</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.SoundBuffer.Initialize(SharpDX.DirectSound.DirectSoundBase,SharpDX.DirectSound.SoundBufferDescription)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"directSoundRef\">No documentation.</param>\t\n            <param name=\"cDSBufferDescRef\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundBuffer::Initialize']/*\"/>\t\n            <unmanaged>HRESULT IDirectSoundBuffer::Initialize([In] IDirectSound* pDirectSound,[In] const DSBUFFERDESC* pcDSBufferDesc)</unmanaged>\t\n            <unmanaged-short>IDirectSoundBuffer::Initialize</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.SoundBuffer.Lock(System.Int32,System.Int32,System.IntPtr@,System.Int32@,System.IntPtr@,System.Int32@,SharpDX.DirectSound.LockFlags)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"offset\">No documentation.</param>\t\n            <param name=\"bytes\">No documentation.</param>\t\n            <param name=\"dioPtr1Out\">No documentation.</param>\t\n            <param name=\"udioBytes1Ref\">No documentation.</param>\t\n            <param name=\"dioPtr2Out\">No documentation.</param>\t\n            <param name=\"udioBytes2Ref\">No documentation.</param>\t\n            <param name=\"flags\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundBuffer::Lock']/*\"/>\t\n            <unmanaged>HRESULT IDirectSoundBuffer::Lock([In] unsigned int dwOffset,[In] unsigned int dwBytes,[Out] void** ppvAudioPtr1,[Out] unsigned int* pdwAudioBytes1,[Out] void** ppvAudioPtr2,[Out, Optional] unsigned int* pdwAudioBytes2,[In] DSBLOCK_ENUM dwFlags)</unmanaged>\t\n            <unmanaged-short>IDirectSoundBuffer::Lock</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.SoundBuffer.Play(System.Int32,System.Int32,SharpDX.DirectSound.PlayFlags)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"reserved1\">No documentation.</param>\t\n            <param name=\"priority\">No documentation.</param>\t\n            <param name=\"flags\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundBuffer::Play']/*\"/>\t\n            <unmanaged>HRESULT IDirectSoundBuffer::Play([In] unsigned int dwReserved1,[In] unsigned int dwPriority,[In] DSBPLAY_FLAGS dwFlags)</unmanaged>\t\n            <unmanaged-short>IDirectSoundBuffer::Play</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.SoundBuffer.SetCurrentPosition(System.Int32)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"newPosition\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundBuffer::SetCurrentPosition']/*\"/>\t\n            <unmanaged>HRESULT IDirectSoundBuffer::SetCurrentPosition([In] unsigned int dwNewPosition)</unmanaged>\t\n            <unmanaged-short>IDirectSoundBuffer::SetCurrentPosition</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.SoundBuffer.SetFormat(System.IntPtr)\">\n            <summary>\t\n            The SetFormat method sets the format of the primary buffer. Whenever this application has the input focus, DirectSound will set the primary buffer to the specified format.\t\n            </summary>\t\n            <param name=\"cfxFormatRef\"><dd> Address of a <see cref=\"T:SharpDX.Multimedia.WaveFormat\"/> structure that describes the new format for the primary sound buffer. </dd></param>\t\n            <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be one of the following error values:</p> <table> <tr><td>Return code</td></tr> <tr><td>DSERR_BADFORMAT </td></tr> <tr><td>DSERR_INVALIDCALL </td></tr> <tr><td>DSERR_INVALIDPARAM </td></tr> <tr><td>DSERR_OUTOFMEMORY </td></tr> <tr><td>DSERR_PRIOLEVELNEEDED </td></tr> <tr><td>DSERR_UNSUPPORTED </td></tr> </table></returns>\t\n            <remarks>\t\n            <p>The format of the primary buffer should be set before secondary buffers are created.</p> <p>The method fails if the application has the <see cref=\"F:SharpDX.DirectSound.CooperativeLevel.Normal\"/> cooperative level.</p> <p>If the application is using DirectSound at the <see cref=\"F:SharpDX.DirectSound.CooperativeLevel.WritePrimary\"/> cooperative level, and the format is not supported, the method fails.</p> <p>If the cooperative level is <see cref=\"F:SharpDX.DirectSound.CooperativeLevel.Priority\"/>, DirectSound stops the primary buffer, changes the format, and restarts the buffer. The method succeeds even if the hardware does not support the requested format; DirectSound sets the buffer to the closest supported format. To determine whether this has happened, an application can call the GetFormat method for the primary buffer and compare the result with the format that was requested with the SetFormat method.</p> <p>This method is not available for secondary sound buffers. If a new format is required, the application must create a new DirectSoundBuffer object.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundBuffer::SetFormat']/*\"/>\t\n            <msdn-id>ee418077</msdn-id>\t\n            <unmanaged>HRESULT IDirectSoundBuffer::SetFormat([In] const void* pcfxFormat)</unmanaged>\t\n            <unmanaged-short>IDirectSoundBuffer::SetFormat</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.SoundBuffer.SetVolume(System.Int32)\">\n            <summary>\t\n            The SetVolume method sets the attenuation of the sound.\t\n            </summary>\t\n            <param name=\"volume\"><dd> Attenuation, in hundredths of a decibel (dB). </dd></param>\t\n            <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be one of the following error values:</p> <table> <tr><td>Return code</td></tr> <tr><td>DSERR_CONTROLUNAVAIL </td></tr> <tr><td>DSERR_GENERIC </td></tr> <tr><td>DSERR_INVALIDPARAM </td></tr> <tr><td>DSERR_PRIOLEVELNEEDED </td></tr> </table></returns>\t\n            <remarks>\t\n            <p>Allowable values are between DSBVOLUME_MAX (no attenuation) and DSBVOLUME_MIN (silence). These values are defined in Dsound.h as 0 and ?10,000 respectively. The value DSBVOLUME_MAX represents the original, unadjusted volume of the stream. The value DSBVOLUME_MIN indicates an audio volume attenuated by 100 dB, which, for all practical purposes, is silence. DirectSound does not support amplification.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundBuffer::SetVolume']/*\"/>\t\n            <msdn-id>ee418150</msdn-id>\t\n            <unmanaged>HRESULT IDirectSoundBuffer::SetVolume([In] int lVolume)</unmanaged>\t\n            <unmanaged-short>IDirectSoundBuffer::SetVolume</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.SoundBuffer.SetPan(System.Int32)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"pan\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundBuffer::SetPan']/*\"/>\t\n            <unmanaged>HRESULT IDirectSoundBuffer::SetPan([In] int lPan)</unmanaged>\t\n            <unmanaged-short>IDirectSoundBuffer::SetPan</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.SoundBuffer.SetFrequency(System.Int32)\">\n            <summary>\t\n            The SetFrequency method sets the frequency at which the audio samples are played.\t\n            </summary>\t\n            <param name=\"frequency\"><dd> Frequency, in hertz (Hz), at which to play the audio samples. A value of DSBFREQUENCY_ORIGINAL resets the frequency to the default value of the buffer format. </dd></param>\t\n            <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be one of the following error values:</p> <table> <tr><td>Return code</td></tr> <tr><td>DSERR_CONTROLUNAVAIL </td></tr> <tr><td>DSERR_GENERIC </td></tr> <tr><td>DSERR_INVALIDPARAM </td></tr> <tr><td>DSERR_PRIOLEVELNEEDED </td></tr> </table></returns>\t\n            <remarks>\t\n            <p>Increasing or decreasing the frequency changes the perceived pitch of the audio data. This method does not affect the format of the buffer.</p> <p>Before setting the frequency, you should ascertain whether the frequency is supported by checking the dwMinSecondarySampleRate and dwMaxSecondarySampleRate members of the <see cref=\"T:SharpDX.DirectSound.Capabilities\"/> structure for the device. Some operating systems do not support frequencies greater than 100,000 Hz.</p> <p>This method is not valid for the primary buffer.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundBuffer::SetFrequency']/*\"/>\t\n            <msdn-id>ee418143</msdn-id>\t\n            <unmanaged>HRESULT IDirectSoundBuffer::SetFrequency([In] unsigned int dwFrequency)</unmanaged>\t\n            <unmanaged-short>IDirectSoundBuffer::SetFrequency</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.SoundBuffer.Stop\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundBuffer::Stop']/*\"/>\t\n            <unmanaged>HRESULT IDirectSoundBuffer::Stop()</unmanaged>\t\n            <unmanaged-short>IDirectSoundBuffer::Stop</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.SoundBuffer.Unlock(System.IntPtr,System.Int32,System.IntPtr,System.Int32)\">\n            <summary>\t\n            The Unlock method releases a locked sound buffer.\t\n            </summary>\t\n            <param name=\"vAudioPtr1Ref\"><dd> Address of the value retrieved in the ppvAudioPtr1 parameter of the Lock method. </dd></param>\t\n            <param name=\"audioBytes1\"><dd> Number of bytes written to the portion of the buffer at pvAudioPtr1. See Remarks. </dd></param>\t\n            <param name=\"vAudioPtr2Ref\"><dd> Address of the value retrieved in the ppvAudioPtr2 parameter of the IDirectSoundBuffer8::Lock method. </dd></param>\t\n            <param name=\"audioBytes2\"><dd> Number of bytes written to the portion of the buffer at pvAudioPtr2. See Remarks. </dd></param>\t\n            <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be one of the following error values:</p> <table> <tr><td>Return code</td></tr> <tr><td>DSERR_INVALIDCALL </td></tr> <tr><td>DSERR_INVALIDPARAM </td></tr> <tr><td>DSERR_PRIOLEVELNEEDED </td></tr> </table></returns>\t\n            <remarks>\t\n            <p>An application must pass both references, pvAudioPtr1 and pvAudioPtr2, returned by the IDirectSoundBuffer8::Lock method to ensure the correct pairing of IDirectSoundBuffer8::Lock and IDirectSoundBuffer8::Unlock. The second reference is needed even if nothing was written to the second reference.</p> <p>The values in dwAudioBytes1 and dwAudioBytes2 must specify the number of bytes actually written to each part of the buffer, which might be less than the size of the lock. DirectSound uses these values to determine how much data to commit to the device.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundBuffer::Unlock']/*\"/>\t\n            <msdn-id>ee418153</msdn-id>\t\n            <unmanaged>HRESULT IDirectSoundBuffer::Unlock([In, Buffer] void* pvAudioPtr1,[In] unsigned int dwAudioBytes1,[In, Buffer, Optional] void* pvAudioPtr2,[In] unsigned int dwAudioBytes2)</unmanaged>\t\n            <unmanaged-short>IDirectSoundBuffer::Unlock</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.SoundBuffer.Restore\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundBuffer::Restore']/*\"/>\t\n            <unmanaged>HRESULT IDirectSoundBuffer::Restore()</unmanaged>\t\n            <unmanaged-short>IDirectSoundBuffer::Restore</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.SoundBuffer.Play(System.Int32,SharpDX.DirectSound.PlayFlags)\">\n            <unmanaged>HRESULT IDirectSoundBuffer::Play([None] int dwReserved1,[None] int dwPriority,[None] int dwFlags)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectSound.SoundBuffer.Lock(System.Int32,System.Int32,SharpDX.DirectSound.LockFlags,SharpDX.DataStream@)\">\n            <summary>\t\n            The Lock method readies all or part of the buffer for a data write and returns pointers to which data can be written.\t\n            </summary>\t\n            <param name=\"offset\"> Offset, in bytes, from the start of the buffer to the point where the lock begins. This parameter is ignored if DSBLOCK_FROMWRITECURSOR is specified in the dwFlags parameter. </param>\n            <param name=\"sizeBytes\"> Size, in bytes, of the portion of the buffer to lock. The buffer is conceptually circular, so this number can exceed the number of bytes between dwOffset and the end of the buffer. </param>\n            <param name=\"flags\"> Flags modifying the lock event. The following flags are defined:  ValueDescription DSBLOCK_FROMWRITECURSORStart the lock at the write cursor. The dwOffset parameter is ignored. DSBLOCK_ENTIREBUFFERLock the entire buffer. The dwBytes parameter is ignored.  </param>\n            <param name=\"secondPart\"> Address of a variable that receives a pointer to the second locked part of the capture buffer. If NULL is returned, the ppvAudioPtr1 parameter points to the entire locked portion of the capture buffer. </param>\n            <returns>Address of a variable that receives a pointer to the first locked part of the buffer.</returns>\n            <unmanaged>HRESULT IDirectSoundBuffer::Lock([None] int dwOffset,[None] int dwBytes,[Out] void** ppvAudioPtr1,[Out] int* pdwAudioBytes1,[Out] void** ppvAudioPtr2,[Out, Optional] int* pdwAudioBytes2,[None] int dwFlags)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectSound.SoundBuffer.Unlock(SharpDX.DataStream,SharpDX.DataStream)\">\n            <summary>\t\n            The Unlock method releases a locked sound buffer.\t\n            </summary>\t\n            <param name=\"dataPart1\"> Address of the value retrieved in the ppvAudioPtr1 parameter of the {{Lock}} method. </param>\n            <param name=\"dataPart2\"> Address of the value retrieved in the ppvAudioPtr2 parameter of the IDirectSoundBuffer8::Lock method. </param>\n            <returns>No documentation.</returns>\n            <unmanaged>HRESULT IDirectSoundBuffer::Unlock([In, Buffer] void* pvAudioPtr1,[None] int dwAudioBytes1,[In, Buffer, Optional] void* pvAudioPtr2,[None] int dwAudioBytes2)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectSound.SoundBuffer.Write``1(``0[],System.Int32,SharpDX.DirectSound.LockFlags)\">\n            <summary>\n            Writes data to the buffer.\n            </summary>\n            <typeparam name=\"T\"></typeparam>\n            <param name=\"data\">The data.</param>\n            <param name=\"bufferOffset\">The buffer offset.</param>\n            <param name=\"flags\">The flags.</param>\n        </member>\n        <member name=\"M:SharpDX.DirectSound.SoundBuffer.Write``1(``0[],System.Int32,System.Int32,System.Int32,SharpDX.DirectSound.LockFlags)\">\n            <summary>\n            Writes data to the buffer.\n            </summary>\n            <typeparam name=\"T\"></typeparam>\n            <param name=\"data\">The data.</param>\n            <param name=\"startIndex\">The start index.</param>\n            <param name=\"count\">The count.</param>\n            <param name=\"bufferOffset\">The buffer offset.</param>\n            <param name=\"flags\">The flags.</param>\n        </member>\n        <member name=\"M:SharpDX.DirectSound.SoundBuffer.SetNotificationPositions(SharpDX.DirectSound.NotificationPosition[])\">\n            <summary>\n            Sets the notification positions.\n            </summary>\n            <param name=\"positions\">The positions.</param>\n            <returns></returns>\n        </member>\n        <member name=\"P:SharpDX.DirectSound.SoundBuffer.Capabilities\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundBuffer::GetCaps']/*\"/>\t\n            <unmanaged>GetCaps</unmanaged>\t\n            <unmanaged-short>GetCaps</unmanaged-short>\t\n            <unmanaged>HRESULT IDirectSoundBuffer::GetCaps([Out] DSBCAPS* pDSBufferCaps)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectSound.SoundBuffer.Volume\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundBuffer::GetVolume']/*\"/>\t\n            <unmanaged>GetVolume / SetVolume</unmanaged>\t\n            <unmanaged-short>GetVolume</unmanaged-short>\t\n            <unmanaged>HRESULT IDirectSoundBuffer::GetVolume([Out] int* plVolume)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectSound.SoundBuffer.Pan\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundBuffer::GetPan']/*\"/>\t\n            <unmanaged>GetPan / SetPan</unmanaged>\t\n            <unmanaged-short>GetPan</unmanaged-short>\t\n            <unmanaged>HRESULT IDirectSoundBuffer::GetPan([Out] int* plPan)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectSound.SoundBuffer.Frequency\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundBuffer::GetFrequency']/*\"/>\t\n            <unmanaged>GetFrequency / SetFrequency</unmanaged>\t\n            <unmanaged-short>GetFrequency</unmanaged-short>\t\n            <unmanaged>HRESULT IDirectSoundBuffer::GetFrequency([Out] unsigned int* pdwFrequency)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectSound.SoundBuffer.Status\">\n            <summary>\t\n            The GetStatus method retrieves the status of the sound buffer.\t\n            </summary>\t\n            <remarks>\t\n            <p><see cref=\"F:SharpDX.DirectSound.BufferStatus.Playing\"/> is set if the buffer is being heard. Because of latency, a call to Play or Stop might not immediately change the status.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundBuffer::GetStatus']/*\"/>\t\n            <msdn-id>ee418070</msdn-id>\t\n            <unmanaged>GetStatus</unmanaged>\t\n            <unmanaged-short>GetStatus</unmanaged-short>\t\n            <unmanaged>HRESULT IDirectSoundBuffer::GetStatus([Out] unsigned int* pdwStatus)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectSound.SoundBuffer.CurrentPosition\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundBuffer::SetCurrentPosition']/*\"/>\t\n            <unmanaged>SetCurrentPosition</unmanaged>\t\n            <unmanaged-short>SetCurrentPosition</unmanaged-short>\t\n            <unmanaged>HRESULT IDirectSoundBuffer::SetCurrentPosition([In] unsigned int dwNewPosition)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.DirectSound.SoundBuffer.Format\">\n            <summary>\n            Sets the new format for the primary sound buffer.\n            </summary>\n            <value>\n            The wave format.\n            </value>\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundBuffer::SetFormat']/*\"/>\n            <unmanaged>HRESULT IDirectSoundBuffer::SetFormat([In] const WAVEFORMATEX* pcfxFormat)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectSound.SecondarySoundBuffer.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectSound.SecondarySoundBuffer\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.SecondarySoundBuffer.op_Explicit(System.IntPtr)~SharpDX.DirectSound.SecondarySoundBuffer\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.DirectSound.SecondarySoundBuffer\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.DirectSound.SecondarySoundBuffer.SetEffect(System.Int32,SharpDX.DirectSound.SoundBufferEffectDescription[],SharpDX.DirectSound.SoundEffectResult[])\">\n            <summary>\t\n            The SetFX method enables effects on a buffer.<p>For this method to succeed, CoInitialize must have been called.  Additionally, the buffer must not be playing or locked.</p>\t\n            </summary>\t\n            <param name=\"effectsCount\"><dd> Number of elements in the pDSFXDesc and pdwResultCodes arrays. If this value is 0, pDSFXDesc and pdwResultCodes must both be <c>null</c>. Set to 0 to remove all effects from the buffer. </dd></param>\t\n            <param name=\"dSFXDescRef\"><dd> Address of an array of <see cref=\"T:SharpDX.DirectSound.SoundBufferEffectDescription\"/> structures, of size dwEffectsCount, that specifies the effects wanted on the buffer. Must be <c>null</c> if dwEffectsCount is 0. </dd></param>\t\n            <param name=\"esultCodesRef\"><dd> Address of an array of DWORD elements, of size <em>dwEffectsCount</em>. Each element receives one of the values shown in the following table, indicating the result of the attempt to create the corresponding effect in the <em>pDSFXDesc</em> array. <table><tr><th>Note </th></tr><tr><td>This parameter must be <c>null</c> if <em>dwEffectsCount</em> is 0, or can be <c>null</c> if results are not wanted.</td></tr></table> <table> <tr><th>Value</th><th>Description</th></tr> <tr><td><see cref=\"F:SharpDX.DirectSound.SoundEffectResult.LocatedInHardware\"/></td><td>Effect is instantiated in hardware.</td></tr> <tr><td><see cref=\"F:SharpDX.DirectSound.SoundEffectResult.LocatedInSoftware\"/></td><td>Effect is instantiated in software.</td></tr> <tr><td><see cref=\"F:SharpDX.DirectSound.SoundEffectResult.Unallocated\"/></td><td>Effect has not yet been assigned to hardware or software. This value is returned if the buffer was created with the <see cref=\"F:SharpDX.DirectSound.BufferFlags.Defer\"/> flag in <see cref=\"T:SharpDX.DirectSound.SoundBufferDescription\"/>.</td></tr> <tr><td><see cref=\"F:SharpDX.DirectSound.SoundEffectResult.Failed\"/></td><td>No effect was created because resources weren't available.</td></tr> <tr><td><see cref=\"F:SharpDX.DirectSound.SoundEffectResult.Present\"/></td><td>Effect is available but was not created because one of the other effects requested could not be created. If any of the effects requested cannot be created, none of them are, and the call fails.</td></tr> <tr><td><see cref=\"F:SharpDX.DirectSound.SoundEffectResult.Unknown\"/></td><td>Effect is not registered on the system, and the method failed as a result.</td></tr> </table> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is DS_OK or DS_INCOMPLETE. If the method fails, the return value may be one of the error values shown in the following table.</p> <table> <tr><th>Return code</th></tr> <tr><td>CO_E_NOTINITIALIZED</td></tr> <tr><td>DSERR_CONTROLUNAVAIL </td></tr> <tr><td>DSERR_GENERIC </td></tr> <tr><td>DSERR_INVALIDPARAM </td></tr> <tr><td>DSERR_INVALIDCALL </td></tr> <tr><td>DSERR_NOINTERFACE </td></tr> <tr><td>DSERR_PRIOLEVELNEEDED </td></tr> </table> <p>In addition, the method can return an error value from DMO methods, including <see cref=\"!:SharpDX.MediaFoundation.IMediaObject.SetInputType\"/> and <see cref=\"!:SharpDX.MediaFoundation.IMediaObject.SetOutputType\"/>. See the DirectShow documentation for possible error values.</p></returns>\t\n            <remarks>\t\n            <p>If the method fails, the value for each effect in pdwResultCodes is either DSFXF_PRESENT or <see cref=\"F:SharpDX.DirectSound.SoundEffectResult.Unknown\"/>. Check these values to determine which effects caused the failure.</p> <p>For the method to succeed, the buffer must have been created with the <see cref=\"F:SharpDX.DirectSound.BufferFlags.ControlEffects\"/> flag and must not be playing or locked.</p> <p>If the method returns DSERR_NOINTERFACE or another COM error, check the result code array for <see cref=\"F:SharpDX.DirectSound.SoundEffectResult.Present\"/> or <see cref=\"F:SharpDX.DirectSound.SoundEffectResult.Unknown\"/> to ascertain which effect caused the error. If the method returns DSERR_INVALIDPARAM, check the result codes for <see cref=\"F:SharpDX.DirectSound.SoundEffectResult.Failed\"/> to see which effects failed to acquire resources.</p> <p>An effect must be set on a buffer before the effect interface can be obtained. To obtain the effect interface, use GetObjectInPath.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundBuffer8::SetFX']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.idirectsoundbuffer8.idirectsoundbuffer8.setfx</msdn-id>\t\n            <unmanaged>HRESULT IDirectSoundBuffer8::SetFX([In] unsigned int dwEffectsCount,[In, Buffer, Optional] DSEFFECTDESC* pDSFXDesc,[InOut, Buffer] DSOUND_ENUM_0* pdwResultCodes)</unmanaged>\t\n            <unmanaged-short>IDirectSoundBuffer8::SetFX</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.SecondarySoundBuffer.AcquireResources(System.Int32,System.Int32,System.Int32[])\">\n            <summary>\t\n            The AcquireResources method allocates resources for a buffer that was created with the <see cref=\"F:SharpDX.DirectSound.BufferFlags.Defer\"/> flag in theDSBUFFERDESCstructure.\t\n            </summary>\t\n            <param name=\"flags\">No documentation.</param>\t\n            <param name=\"effectsCount\">No documentation.</param>\t\n            <param name=\"esultCodesRef\">No documentation.</param>\t\n            <returns><p>If the method succeeds, the return value is DS_OK or DS_INCOMPLETE. If the method fails, the return value may be one of the error values shown in the following table.</p> <table> <tr><th>Return code</th></tr> <tr><td>DSERR_CONTROLUNAVAIL </td></tr> <tr><td>DSERR_INVALIDCALL </td></tr> <tr><td>DSERR_INVALIDPARAM </td></tr> </table></returns>\t\n            <remarks>\t\n            <p>Normally, buffers created with <see cref=\"F:SharpDX.DirectSound.BufferFlags.Defer\"/> are not allocated resources until Play is called. <see cref=\"M:SharpDX.DirectSound.SecondarySoundBuffer.AcquireResources(System.Int32,System.Int32,System.Int32[])\"/> can be used to allocate resources for a deferred buffer before it is played. By doing so, the application can retrieve information about effects processing and set effect parameters. If the method fails, check the values in pdwResultCodes to determine which effects caused the failure.</p> <p>A buffer with acquired resources that is not yet playing is not a candidate for premature termination by the voice management flags passed to the Play method.</p> <p>Resources that have been acquired by AcquireResources are released when playback is stopped.</p> <p>If the method is called on a buffer on which it has already been called, the status of the effects is returned but no additional resources are allocated.</p> <p>The dwEffectsCount parameter to this function must be the same as the one passed in the call to SetFX.</p> <p>If an attempt is made to acquire resources for a buffer with the <see cref=\"F:SharpDX.DirectSound.BufferFlags.Hardware\"/> flag on a system where hardware acceleration is not available, the method fails with either DSERR_CONTROLUNAVAIL or DSERR_INVALIDCALL, depending on the operating system.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundBuffer8::AcquireResources']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.idirectsoundbuffer8.idirectsoundbuffer8.acquireresources</msdn-id>\t\n            <unmanaged>HRESULT IDirectSoundBuffer8::AcquireResources([In] unsigned int dwFlags,[In] unsigned int dwEffectsCount,[Out, Buffer] unsigned int* pdwResultCodes)</unmanaged>\t\n            <unmanaged-short>IDirectSoundBuffer8::AcquireResources</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.SecondarySoundBuffer.GetEffect(System.Guid,System.Int32,System.Guid,System.IntPtr@)\">\n            <summary>\t\n            The GetObjectInPath method retrieves an interface for an effect object associated with the buffer.\t\n            </summary>\t\n            <param name=\"rguidObject\"><dd> Unique class identifier of the object being searched for, such as <see cref=\"F:SharpDX.DirectSound.SoundEffectGuid.StandardEcho\"/>. Set this parameter to <see cref=\"F:SharpDX.DirectSound.DSound.AllObjects\"/> to search for objects of any class. </dd></param>\t\n            <param name=\"index\"><dd> Index of the object within objects of that class in the path. See Remarks.  </dd></param>\t\n            <param name=\"rguidInterface\"><dd> Unique identifier of the desired interface. See Remarks. </dd></param>\t\n            <param name=\"objectOut\"><dd> Address of a variable that receives the desired interface reference. </dd></param>\t\n            <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be one of the following error values:</p> <table> <tr><td>Return code</td></tr> <tr><td>DSERR_CONTROLUNAVAIL </td></tr> <tr><td>DSERR_INVALIDPARAM </td></tr> <tr><td>DSERR_OBJECTNOTFOUND </td></tr> </table></returns>\t\n            <remarks>\t\n            <p>Any DMO that has been set on a buffer by using SetFX can be retrieved, even it has not been allocated resources.</p> <p>The following interfaces can be retrieved for the various DMOs supplied with DirectX.</p> <table> <tr><td>rguidInterface\t\n            </td><td>*ppObject\t\n            </td></tr> <tr><td>IID_IDirectSoundFXGargle8\t\n            </td><td>IDirectSoundFXGargle8 </td></tr> <tr><td>IID_IDirectSoundFXChorus8\t\n            </td><td>IDirectSoundFXChorus8 </td></tr> <tr><td>IID_IDirectSoundFXFlanger8\t\n            </td><td>IDirectSoundFXFlanger8 </td></tr> <tr><td>IID_IDirectSoundFXEcho8\t\n            </td><td>IDirectSoundFXEcho8 </td></tr> <tr><td>IID_IDirectSoundFXDistortion8\t\n            </td><td>IDirectSoundFXDistortion8 </td></tr> <tr><td>IID_IDirectSoundFXCompressor8\t\n            </td><td>IDirectSoundFXCompressor8 </td></tr> <tr><td>IID_IDirectSoundFXParamEq8\t\n            </td><td>IDirectSoundFXParamEq8 </td></tr> <tr><td>IID_IDirectSoundFXWavesReverb8\t\n            </td><td>IDirectSoundFXWavesReverb8 </td></tr> <tr><td>IID_IDirectSoundFXI3DL2Reverb8\t\n            </td><td>IDirectSoundFXI3DL2Reverb8 </td></tr> </table> <p>In addition, the following interfaces are available for any of the standard DMOs. For information on these interfaces, see the Help for DirectX Media Objects.</p> <table> <tr><td>rguidInterface\t\n            </td><td>*ppObject\t\n            </td></tr> <tr><td>IID_IMediaObject\t\n            </td><td><see cref=\"!:SharpDX.MediaFoundation.IMediaObject\"/>\t\n            </td></tr> <tr><td>IID_IMediaObjectInPlace\t\n            </td><td><see cref=\"!:SharpDX.MediaFoundation.IMediaObjectInPlace\"/>\t\n            </td></tr> <tr><td>IID_IMediaParams\t\n            </td><td>IMediaParams\t\n            </td></tr> </table> <p>NoteWhen the DirectSound API is used to play buffers, parameter curves (envelopes) set by using the IMediaParams interface do not work, because DirectSound does not timestamp the DMO buffers.</p> <p>The value in dwIndex is the index of the object within the array of effects passed to SetFX. This is not necessarily the actual position of the object in the effects chain, because some effects might not have been created.</p> <p>An object is returned solely on the basis of whether it matches rguidObject and dwIndex. It is up to the application to ensure that rguidInterface specifies an interface that can be expected to be found on the object.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundBuffer8::GetObjectInPath']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.idirectsoundbuffer8.idirectsoundbuffer8.getobjectinpath</msdn-id>\t\n            <unmanaged>HRESULT IDirectSoundBuffer8::GetObjectInPath([In] const GUID&amp; rguidObject,[In] unsigned int dwIndex,[In] const GUID&amp; rguidInterface,[Out] void** ppObject)</unmanaged>\t\n            <unmanaged-short>IDirectSoundBuffer8::GetObjectInPath</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.SecondarySoundBuffer.#ctor(SharpDX.DirectSound.DirectSound,SharpDX.DirectSound.SoundBufferDescription)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectSound.SecondarySoundBuffer\"/> class.\n            </summary>\n            <param name=\"dSound\">an instance of the <see cref=\"T:SharpDX.DirectSound.DirectSound\"/></param>\n            <param name=\"bufferDescription\">The buffer description.</param>\n        </member>\n        <member name=\"M:SharpDX.DirectSound.SecondarySoundBuffer.GetEffect``1(System.Int32)\">\n            <summary>\t\n            Retrieves an interface to an effect object associated with the buffer.\t\n            </summary>\t\n            <param name=\"index\">Index of the object within objects of that class in the path. See Remarks.  </param>\n            <returns>an effect object associated with the buffer</returns>\n            <unmanaged>HRESULT IDirectSoundCaptureBuffer8::GetObjectInPath([In] GUID* rguidObject,[None] int dwIndex,[In] GUID* rguidInterface,[Out] void** ppObject)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.DirectSound.SecondarySoundBuffer.SetEffect(System.Guid[])\">\n            <summary>\t\n            Enables effects on a buffer.\t\n            </summary>\t\n            <param name=\"effects\">Effects guids</param>\n            <returns>No documentation.</returns>\n            <unmanaged>HRESULT IDirectSoundBuffer8::SetFX([None] int dwEffectsCount,[In, Buffer, Optional] LPDSEFFECTDESC pDSFXDesc,[Out, Buffer, Optional] int* pdwResultCodes)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectSound.SoundBufferNotifier\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundNotify']/*\"/>\t\n            <unmanaged>IDirectSoundNotify</unmanaged>\t\n            <unmanaged-short>IDirectSoundNotify</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.SoundBufferNotifier.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectSound.SoundBufferNotifier\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.SoundBufferNotifier.op_Explicit(System.IntPtr)~SharpDX.DirectSound.SoundBufferNotifier\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.DirectSound.SoundBufferNotifier\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.DirectSound.SoundBufferNotifier.SetNotificationPositions(System.Int32,SharpDX.DirectSound.NotificationPosition[])\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"positionNotifies\">No documentation.</param>\t\n            <param name=\"cPositionNotifiesRef\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundNotify::SetNotificationPositions']/*\"/>\t\n            <unmanaged>HRESULT IDirectSoundNotify::SetNotificationPositions([In] unsigned int dwPositionNotifies,[In, Buffer] const DSBPOSITIONNOTIFY* pcPositionNotifies)</unmanaged>\t\n            <unmanaged-short>IDirectSoundNotify::SetNotificationPositions</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectSound.SoundListener3D\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSound3DListener']/*\"/>\t\n            <unmanaged>IDirectSound3DListener</unmanaged>\t\n            <unmanaged-short>IDirectSound3DListener</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.SoundListener3D.DefaultDistanceFactor\">\n            <summary>\n            Default distance factor. The default value is (1.0).\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.SoundListener3D.DefaultDopplerFactor\">\n            <summary>\n            Default Doppler factor. The default value is (1.0).\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.SoundListener3D.DefaultRolloffFactor\">\n            <summary>\n            Default rolloff factor. The default value is (1.0).\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.SoundListener3D.MaxDistanceFactor\">\n            <summary>\n            Maximum distance factor. The default value is (1.0).\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.SoundListener3D.MaxDopplerFactor\">\n            <summary>\n            Maximum Doppler factor. The default value is (1.0).\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.SoundListener3D.MaxRolloffFactor\">\n            <summary>\n            Maximum rolloff factor. The default value is (1.0).\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.SoundListener3D.MinDistanceFactor\">\n            <summary>\n            Minimum distance factor. The default value is (1.0).\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.SoundListener3D.MinDopplerFactor\">\n            <summary>\n            Minimum Doppler factor. The default value is (1.0).\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.SoundListener3D.MinRolloffFactor\">\n            <summary>\n            Minimum rolloff factor. The default value is (1.0).\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.DirectSound.SoundListener3D.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectSound.SoundListener3D\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.SoundListener3D.op_Explicit(System.IntPtr)~SharpDX.DirectSound.SoundListener3D\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.DirectSound.SoundListener3D\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.DirectSound.SoundListener3D.GetAllParameters(SharpDX.DirectSound.Listener3DSettings@)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"listenerRef\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSound3DListener::GetAllParameters']/*\"/>\t\n            <unmanaged>HRESULT IDirectSound3DListener::GetAllParameters([Out] DS3DLISTENER* pListener)</unmanaged>\t\n            <unmanaged-short>IDirectSound3DListener::GetAllParameters</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.SoundListener3D.GetDistanceFactor(System.Single@)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"flDistanceFactorRef\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSound3DListener::GetDistanceFactor']/*\"/>\t\n            <unmanaged>HRESULT IDirectSound3DListener::GetDistanceFactor([Out] float* pflDistanceFactor)</unmanaged>\t\n            <unmanaged-short>IDirectSound3DListener::GetDistanceFactor</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.SoundListener3D.GetDopplerFactor(System.Single@)\">\n            <summary>\t\n            The GetDopplerFactor method retrieves the multiplier for the Doppler effect.\t\n            </summary>\t\n            <param name=\"flDopplerFactorRef\"><dd> Address of a variable that receives the Doppler factor value. D3DVALUE is defined as float.  </dd></param>\t\n            <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be DSERR_INVALIDPARAM.</p></returns>\t\n            <remarks>\t\n            <p>The Doppler factor has a range of DS3D_MINDOPPLERFACTOR (no Doppler effects) to DS3D_MAXDOPPLERFACTOR (defined as 10 times the Doppler effects found in the real world). The default value is DS3D_DEFAULTDOPPLERFACTOR (1.0).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSound3DListener::GetDopplerFactor']/*\"/>\t\n            <msdn-id>ee418010</msdn-id>\t\n            <unmanaged>HRESULT IDirectSound3DListener::GetDopplerFactor([Out] float* pflDopplerFactor)</unmanaged>\t\n            <unmanaged-short>IDirectSound3DListener::GetDopplerFactor</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.SoundListener3D.GetOrientation(SharpDX.Vector3@,SharpDX.Vector3@)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"vOrientFrontRef\">No documentation.</param>\t\n            <param name=\"vOrientTopRef\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSound3DListener::GetOrientation']/*\"/>\t\n            <unmanaged>HRESULT IDirectSound3DListener::GetOrientation([Out] D3DVECTOR* pvOrientFront,[Out] D3DVECTOR* pvOrientTop)</unmanaged>\t\n            <unmanaged-short>IDirectSound3DListener::GetOrientation</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.SoundListener3D.GetPosition(SharpDX.Vector3@)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"vPositionRef\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSound3DListener::GetPosition']/*\"/>\t\n            <unmanaged>HRESULT IDirectSound3DListener::GetPosition([Out] D3DVECTOR* pvPosition)</unmanaged>\t\n            <unmanaged-short>IDirectSound3DListener::GetPosition</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.SoundListener3D.GetRolloffFactor(System.Single@)\">\n            <summary>\t\n            The GetRolloffFactor method retrieves the rolloff factor, which determines the rate of attenuation over distance.\t\n            </summary>\t\n            <param name=\"flRolloffFactorRef\"><dd> Address of a variable that receives the rolloff factor. D3DVALUE is defined as float.  </dd></param>\t\n            <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be DSERR_INVALIDPARAM.</p></returns>\t\n            <remarks>\t\n            <p>The rolloff factor has a range of DS3D_MINROLLOFFFACTOR (no rolloff) to DS3D_MAXROLLOFFFACTOR (defined as 10 times the rolloff found in the real world). The default value is DS3D_DEFAULTROLLOFFFACTOR (1.0). For more information, see Rolloff Factor.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSound3DListener::GetRolloffFactor']/*\"/>\t\n            <msdn-id>ee418016</msdn-id>\t\n            <unmanaged>HRESULT IDirectSound3DListener::GetRolloffFactor([Out] float* pflRolloffFactor)</unmanaged>\t\n            <unmanaged-short>IDirectSound3DListener::GetRolloffFactor</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.SoundListener3D.GetVelocity(SharpDX.Vector3@)\">\n            <summary>\t\n            The GetVelocity method retrieves the listener's velocity.\t\n            </summary>\t\n            <param name=\"vVelocityRef\"><dd> Address of a <see cref=\"T:SharpDX.Vector3\"/> structure that receives the listener's velocity. </dd></param>\t\n            <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be DSERR_INVALIDPARAM.</p></returns>\t\n            <remarks>\t\n            <p>Velocity is used only for calculating Doppler effect. It does not change the listener's position. To move the listener, use the SetPosition method.</p> <p>The default velocity is (0,0,0).</p> <p>By default, measurement units are meters per second, but this can be changed by calling the SetDistanceFactor method.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSound3DListener::GetVelocity']/*\"/>\t\n            <msdn-id>ee418018</msdn-id>\t\n            <unmanaged>HRESULT IDirectSound3DListener::GetVelocity([Out] D3DVECTOR* pvVelocity)</unmanaged>\t\n            <unmanaged-short>IDirectSound3DListener::GetVelocity</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.SoundListener3D.SetAllParameters(SharpDX.DirectSound.Listener3DSettings,System.Int32)\">\n            <summary>\t\n            The SetAllParameters method sets all 3D parameters of the sound environment and the listener.\t\n            </summary>\t\n            <param name=\"cListenerRef\"><dd> Address of a <see cref=\"T:SharpDX.DirectSound.Listener3DSettings\"/> structure that contains information describing all 3D listener parameters. </dd></param>\t\n            <param name=\"apply\"><dd> Value that specifies when the setting should be applied. This value must be one of the following: <table> <tr><td>Value</td><td>Description</td></tr> <tr><td>DS3D_DEFERRED</td><td>Settings are not applied until the application calls the CommitDeferredSettings method. This allows the application to change several settings and generate a single recalculation.</td></tr> <tr><td>DS3D_IMMEDIATE</td><td>Settings are applied immediately, causing the system to recalculate the 3D coordinates for all 3D sound buffers.</td></tr> </table> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be DSERR_INVALIDPARAM.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSound3DListener::SetAllParameters']/*\"/>\t\n            <msdn-id>ee418020</msdn-id>\t\n            <unmanaged>HRESULT IDirectSound3DListener::SetAllParameters([In] const DS3DLISTENER* pcListener,[In] unsigned int dwApply)</unmanaged>\t\n            <unmanaged-short>IDirectSound3DListener::SetAllParameters</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.SoundListener3D.SetDistanceFactor(System.Single,System.Int32)\">\n            <summary>\t\n            The SetDistanceFactor method sets the distance factor, which is the number of meters in a vector unit.\t\n            </summary>\t\n            <param name=\"distanceFactor\"><dd> Distance factor. D3DVALUE is defined as float.  </dd></param>\t\n            <param name=\"apply\"><dd> Value that specifies when the setting should be applied. This value must be one of the following: <table> <tr><td>Value</td><td>Description</td></tr> <tr><td>DS3D_DEFERRED</td><td>Settings are not applied until the application calls the CommitDeferredSettings method. This allows the application to change several settings and generate a single recalculation.</td></tr> <tr><td>DS3D_IMMEDIATE</td><td>Settings are applied immediately, causing the system to recalculate the 3D coordinates for all 3D sound buffers.</td></tr> </table> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be DSERR_INVALIDPARAM.</p></returns>\t\n            <remarks>\t\n            <p>The distance factor has a range of DS3D_MINDISTANCEFACTOR to DS3D_MAXDISTANCEFACTOR, defined in Dsound.h as FLT_MIN and FLT_MAX respectively. The default value is DS3D_DEFAULTDISTANCEFACTOR, or 1.0.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSound3DListener::SetDistanceFactor']/*\"/>\t\n            <msdn-id>ee418022</msdn-id>\t\n            <unmanaged>HRESULT IDirectSound3DListener::SetDistanceFactor([In] float flDistanceFactor,[In] unsigned int dwApply)</unmanaged>\t\n            <unmanaged-short>IDirectSound3DListener::SetDistanceFactor</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.SoundListener3D.SetDopplerFactor(System.Single,System.Int32)\">\n            <summary>\t\n            The SetDopplerFactor method sets the multiplier for the Doppler effect.\t\n            </summary>\t\n            <param name=\"dopplerFactor\"><dd> Doppler factor. D3DVALUE is defined as float.  </dd></param>\t\n            <param name=\"apply\"><dd> Value that specifies when the setting should be applied. This value must be one of the following: <table> <tr><td>Value</td><td>Description</td></tr> <tr><td>DS3D_DEFERRED</td><td>Settings are not applied until the application calls the CommitDeferredSettings method. This allows the application to change several settings and generate a single recalculation.</td></tr> <tr><td>DS3D_IMMEDIATE</td><td>Settings are applied immediately, causing the system to recalculate the 3D coordinates for all 3D sound buffers.</td></tr> </table> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be DSERR_INVALIDPARAM.</p></returns>\t\n            <remarks>\t\n            <p>The Doppler factor has a range of DS3D_MINDOPPLERFACTOR (no Doppler effects) to DS3D_MAXDOPPLERFACTOR (defined as 10 times the Doppler effects found in the real world). The default value is DS3D_DEFAULTDOPPLERFACTOR (1.0).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSound3DListener::SetDopplerFactor']/*\"/>\t\n            <msdn-id>ee418024</msdn-id>\t\n            <unmanaged>HRESULT IDirectSound3DListener::SetDopplerFactor([In] float flDopplerFactor,[In] unsigned int dwApply)</unmanaged>\t\n            <unmanaged-short>IDirectSound3DListener::SetDopplerFactor</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.SoundListener3D.SetOrientation(System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Int32)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"xFront\">No documentation.</param>\t\n            <param name=\"yFront\">No documentation.</param>\t\n            <param name=\"zFront\">No documentation.</param>\t\n            <param name=\"xTop\">No documentation.</param>\t\n            <param name=\"yTop\">No documentation.</param>\t\n            <param name=\"zTop\">No documentation.</param>\t\n            <param name=\"apply\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSound3DListener::SetOrientation']/*\"/>\t\n            <unmanaged>HRESULT IDirectSound3DListener::SetOrientation([In] float xFront,[In] float yFront,[In] float zFront,[In] float xTop,[In] float yTop,[In] float zTop,[In] unsigned int dwApply)</unmanaged>\t\n            <unmanaged-short>IDirectSound3DListener::SetOrientation</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.SoundListener3D.SetPosition(System.Single,System.Single,System.Single,System.Int32)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"x\">No documentation.</param>\t\n            <param name=\"y\">No documentation.</param>\t\n            <param name=\"z\">No documentation.</param>\t\n            <param name=\"apply\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSound3DListener::SetPosition']/*\"/>\t\n            <unmanaged>HRESULT IDirectSound3DListener::SetPosition([In] float x,[In] float y,[In] float z,[In] unsigned int dwApply)</unmanaged>\t\n            <unmanaged-short>IDirectSound3DListener::SetPosition</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.SoundListener3D.SetRolloffFactor(System.Single,System.Int32)\">\n            <summary>\t\n            The SetRolloffFactor method sets the rolloff factor, which determines the rate of attenuation over distance.\t\n            </summary>\t\n            <param name=\"rolloffFactor\"><dd> Rolloff factor. D3DVALUE is defined as float.  </dd></param>\t\n            <param name=\"apply\"><dd> Value that specifies when the setting should be applied. This value must be one of the following:  <table> <tr><td>Value</td><td>Description</td></tr> <tr><td>DS3D_DEFERRED</td><td>Settings are not applied until the application calls the CommitDeferredSettings method. This allows the application to change several settings and generate a single recalculation.</td></tr> <tr><td>DS3D_IMMEDIATE</td><td>Settings are applied immediately, causing the system to recalculate the 3D coordinates for all 3D sound buffers.</td></tr> </table> </dd></param>\t\n            <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be DSERR_INVALIDPARAM.</p></returns>\t\n            <remarks>\t\n            <p>The rolloff factor has a range of DS3D_MINROLLOFFFACTOR (no rolloff) to DS3D_MAXROLLOFFFACTOR (defined as 10 times the rolloff found in the real world). The default value is DS3D_DEFAULTROLLOFFFACTOR (1.0). For more information, see Rolloff Factor.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSound3DListener::SetRolloffFactor']/*\"/>\t\n            <msdn-id>ee418030</msdn-id>\t\n            <unmanaged>HRESULT IDirectSound3DListener::SetRolloffFactor([In] float flRolloffFactor,[In] unsigned int dwApply)</unmanaged>\t\n            <unmanaged-short>IDirectSound3DListener::SetRolloffFactor</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.SoundListener3D.SetVelocity(System.Single,System.Single,System.Single,System.Int32)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"x\">No documentation.</param>\t\n            <param name=\"y\">No documentation.</param>\t\n            <param name=\"z\">No documentation.</param>\t\n            <param name=\"apply\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSound3DListener::SetVelocity']/*\"/>\t\n            <unmanaged>HRESULT IDirectSound3DListener::SetVelocity([In] float x,[In] float y,[In] float z,[In] unsigned int dwApply)</unmanaged>\t\n            <unmanaged-short>IDirectSound3DListener::SetVelocity</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.SoundListener3D.CommitDeferredSettings\">\n            <summary>\t\n            The CommitDeferredSettings method commits any deferred settings made since the last call to this method.\t\n            </summary>\t\n            <returns><p>If the method succeeds, the return value is DS_OK.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSound3DListener::CommitDeferredSettings']/*\"/>\t\n            <msdn-id>ee418006</msdn-id>\t\n            <unmanaged>HRESULT IDirectSound3DListener::CommitDeferredSettings()</unmanaged>\t\n            <unmanaged-short>IDirectSound3DListener::CommitDeferredSettings</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.SoundListener3D.#ctor(SharpDX.DirectSound.SoundBuffer)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectSound.SoundListener3D\" /> class\n            with a previously created sound buffer.\n            </summary>\n            <param name=\"soundBuffer\">The SlimDX::DirectSound::SoundBuffer object.</param>\n        </member>\n        <member name=\"P:SharpDX.DirectSound.SoundListener3D.Deferred\">\n            <summary>\n            Determines if settings are set immediately or deferred.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.DirectSound.SoundListener3D.DistanceFactor\">\n            <summary>\n            Gets or sets the distance factor, which is the number of meters in a vector unit.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.DirectSound.SoundListener3D.DopplerFactor\">\n            <summary>\n            Gets or sets the multiplier for the Doppler effect.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.DirectSound.SoundListener3D.FrontOrientation\">\n            <summary>\n            Describes the listener's front orientation.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.DirectSound.SoundListener3D.Position\">\n            <summary>\n            Gets or sets the listener's position.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.DirectSound.SoundListener3D.RolloffFactor\">\n            <summary>\n            Gets or sets the rolloff factor, which determines the rate of attenuation over distance.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.DirectSound.SoundListener3D.TopOrientation\">\n            <summary>\n            Describes the listener's top orientation.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.DirectSound.SoundListener3D.Velocity\">\n            <summary>\n            Gets or sets the listener's velocity.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.DirectSound.WavesReverb\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundFXWavesReverb']/*\"/>\t\n            <unmanaged>IDirectSoundFXWavesReverb</unmanaged>\t\n            <unmanaged-short>IDirectSoundFXWavesReverb</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.WavesReverb.HighFrequencyRTRatioDefault\">\n            <summary>\n            Default high-frequency reverb time ratio.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.WavesReverb.HighFrequencyRTRatioMax\">\n            <summary>\n            Maximum high-frequency reverb time ratio.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.WavesReverb.HighFrequencyRTRatioMin\">\n            <summary>\n            Minimum high-frequency reverb time ratio.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.WavesReverb.InGainDefault\">\n            <summary>\n            Default input gain of signal, in decibels (dB).\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.WavesReverb.InGainMax\">\n            <summary>\n            Maximum input gain of signal, in decibels (dB).\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.WavesReverb.InGainMin\">\n            <summary>\n            Minimum input gain of signal, in decibels (dB).\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.WavesReverb.ReverbMixDefault\">\n            <summary>\n            Default reverb mix, in dB.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.WavesReverb.ReverbMixMax\">\n            <summary>\n            Maximum reverb mix, in dB.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.WavesReverb.ReverbMixMin\">\n            <summary>\n            Minimum reverb mix, in dB.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.WavesReverb.ReverbTimeDefault\">\n            <summary>\n            Default reverb time, in milliseconds.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.WavesReverb.ReverbTimeMax\">\n            <summary>\n            Maximum reverb time, in milliseconds.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.WavesReverb.ReverbTimeMin\">\n            <summary>\n            Minimum reverb time, in milliseconds.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.DirectSound.WavesReverb.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectSound.WavesReverb\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.WavesReverb.op_Explicit(System.IntPtr)~SharpDX.DirectSound.WavesReverb\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.DirectSound.WavesReverb\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.DirectSound.WavesReverb.SetAllParameters(SharpDX.DirectSound.WavesReverbSettings)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"cDsFxWavesReverbRef\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundFXWavesReverb::SetAllParameters']/*\"/>\t\n            <unmanaged>HRESULT IDirectSoundFXWavesReverb::SetAllParameters([In] const DSFXWavesReverb* pcDsFxWavesReverb)</unmanaged>\t\n            <unmanaged-short>IDirectSoundFXWavesReverb::SetAllParameters</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.WavesReverb.GetAllParameters(SharpDX.DirectSound.WavesReverbSettings@)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"dsFxWavesReverbRef\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundFXWavesReverb::GetAllParameters']/*\"/>\t\n            <unmanaged>HRESULT IDirectSoundFXWavesReverb::GetAllParameters([Out] DSFXWavesReverb* pDsFxWavesReverb)</unmanaged>\t\n            <unmanaged-short>IDirectSoundFXWavesReverb::GetAllParameters</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.DirectSound.WavesReverb.AllParameters\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectSoundFXWavesReverb::GetAllParameters']/*\"/>\t\n            <unmanaged>GetAllParameters / SetAllParameters</unmanaged>\t\n            <unmanaged-short>GetAllParameters</unmanaged-short>\t\n            <unmanaged>HRESULT IDirectSoundFXWavesReverb::GetAllParameters([Out] DSFXWavesReverb* pDsFxWavesReverb)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DirectSound.AcousticEchoCancelSettings\">\n            <summary>\t\n            The <see cref=\"T:SharpDX.DirectSound.AcousticEchoCancelSettings\"/> structure contains parameters for acoustic echo cancellation in a capture buffer.\t\n            </summary>\t\n            <remarks>\t\n            <p>The dwMode member is ignored when this structure is passed to IDirectSoundCaptureFXAec8::SetAllParameters.</p> <table><tr><th>Windows </th></tr><tr><td><p>Important Note for Windows Vista</p> <p>Existing applications that access Windows XP Acoustic Echo Cancellation (AEC) features via the DirectSound API will no longer obtain AEC when running on Windows Vista. These applications will still run, but their calls to AEC-specific DirectSound API calls will have no effect on the captured audio.</p><p>To learn how to obtain AEC in Windows Vista, See the Windows Vista AEC topics in the Windows SDK.</p></td></tr></table>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCFXAec']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.dscfxaec</msdn-id>\t\n            <unmanaged>DSCFXAec</unmanaged>\t\n            <unmanaged-short>DSCFXAec</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.AcousticEchoCancelSettings.Enable\">\n            <summary>\t\n            <dd> Boolean value that specifies whether the effect is enabled. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCFXAec::fEnable']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.dscfxaec</msdn-id>\t\n            <unmanaged>BOOL fEnable</unmanaged>\t\n            <unmanaged-short>BOOL fEnable</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.AcousticEchoCancelSettings.NoiseFill\">\n            <summary>\t\n            <dd> Boolean value that specifies whether to enable background comfort noise, which makes the capture signal sound more natural by preventing periods of dead silence. By default, background comfort noise is not enabled. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCFXAec::fNoiseFill']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.dscfxaec</msdn-id>\t\n            <unmanaged>BOOL fNoiseFill</unmanaged>\t\n            <unmanaged-short>BOOL fNoiseFill</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.AcousticEchoCancelSettings.Mode\">\n            <summary>\t\n            <dd> Operation mode. This member contains one of the following values. <table> <tr><th>Value\t\n            </th><th>Description\t\n            </th></tr> <tr><td><see cref=\"F:SharpDX.DirectSound.AcousticEchoCancelMode.PassThrough\"/>\t\n            </td><td>The effect is passing capture and render data through without modifying it.\t\n            </td></tr> <tr><td><see cref=\"F:SharpDX.DirectSound.AcousticEchoCancelMode.HalfDuplex\"/>\t\n            </td><td>The effect is running in half duplex mode. Not presently supported.\t\n            </td></tr> <tr><td><see cref=\"F:SharpDX.DirectSound.AcousticEchoCancelMode.FullDuplex\"/>\t\n            </td><td>The effect is running in full duplex mode.\t\n            </td></tr> </table> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCFXAec::dwMode']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.dscfxaec</msdn-id>\t\n            <unmanaged>DSCFX_AEC_MODE dwMode</unmanaged>\t\n            <unmanaged-short>DSCFX_AEC_MODE dwMode</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectSound.BufferCapabilities\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSBCAPS']/*\"/>\t\n            <unmanaged>DSBCAPS</unmanaged>\t\n            <unmanaged-short>DSBCAPS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.BufferCapabilities.Size\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSBCAPS::dwSize']/*\"/>\t\n            <unmanaged>unsigned int dwSize</unmanaged>\t\n            <unmanaged-short>unsigned int dwSize</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.BufferCapabilities.Flags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSBCAPS::dwFlags']/*\"/>\t\n            <unmanaged>DSBCAPS_FLAGS dwFlags</unmanaged>\t\n            <unmanaged-short>DSBCAPS_FLAGS dwFlags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.BufferCapabilities.BufferBytes\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSBCAPS::dwBufferBytes']/*\"/>\t\n            <unmanaged>unsigned int dwBufferBytes</unmanaged>\t\n            <unmanaged-short>unsigned int dwBufferBytes</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.BufferCapabilities.UnlockTransferRate\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSBCAPS::dwUnlockTransferRate']/*\"/>\t\n            <unmanaged>unsigned int dwUnlockTransferRate</unmanaged>\t\n            <unmanaged-short>unsigned int dwUnlockTransferRate</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.BufferCapabilities.PlayCpuOverhead\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSBCAPS::dwPlayCpuOverhead']/*\"/>\t\n            <unmanaged>unsigned int dwPlayCpuOverhead</unmanaged>\t\n            <unmanaged-short>unsigned int dwPlayCpuOverhead</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.BufferCapabilities.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectSound.BufferCapabilities\"/> class.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.DirectSound.CompressorSettings\">\n            <summary>\t\n            The <see cref=\"T:SharpDX.DirectSound.CompressorSettings\"/> structure contains parameters for a compression effect.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFXCompressor']/*\"/>\t\n            <msdn-id>ee416833</msdn-id>\t\n            <unmanaged>DSFXCompressor</unmanaged>\t\n            <unmanaged-short>DSFXCompressor</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.CompressorSettings.Gain\">\n            <summary>\t\n            <dd> Output gain of signal after compression, in the range from DSFXCOMPRESSOR_GAIN_MIN to DSFXCOMPRESSOR_GAIN_MAX. The default value is 0 dB. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFXCompressor::fGain']/*\"/>\t\n            <msdn-id>ee416833</msdn-id>\t\n            <unmanaged>float fGain</unmanaged>\t\n            <unmanaged-short>float fGain</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.CompressorSettings.Attack\">\n            <summary>\t\n            <dd> Time before compression reaches its full value, in the range from DSFXCOMPRESSOR_ATTACK_MIN to DSFXCOMPRESSOR_ATTACK_MAX. The default value is 10 ms. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFXCompressor::fAttack']/*\"/>\t\n            <msdn-id>ee416833</msdn-id>\t\n            <unmanaged>float fAttack</unmanaged>\t\n            <unmanaged-short>float fAttack</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.CompressorSettings.Release\">\n            <summary>\t\n            <dd> Speed at which compression is stopped after input drops below fThreshold, in the range from DSFXCOMPRESSOR_RELEASE_MIN to DSFXCOMPRESSOR_RELEASE_MAX. The default value is 200 ms. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFXCompressor::fRelease']/*\"/>\t\n            <msdn-id>ee416833</msdn-id>\t\n            <unmanaged>float fRelease</unmanaged>\t\n            <unmanaged-short>float fRelease</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.CompressorSettings.Threshold\">\n            <summary>\t\n            <dd> Point at which compression begins, in decibels, in the range from DSFXCOMPRESSOR_THRESHOLD_MIN to DSFXCOMPRESSOR_THRESHOLD_MAX. The default value is -20 dB. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFXCompressor::fThreshold']/*\"/>\t\n            <msdn-id>ee416833</msdn-id>\t\n            <unmanaged>float fThreshold</unmanaged>\t\n            <unmanaged-short>float fThreshold</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.CompressorSettings.Ratio\">\n            <summary>\t\n            <dd> Compression ratio, in the range from DSFXCOMPRESSOR_RATIO_MIN to DSFXCOMPRESSOR_RATIO_MAX. The default value is 3, which means 3:1 compression. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFXCompressor::fRatio']/*\"/>\t\n            <msdn-id>ee416833</msdn-id>\t\n            <unmanaged>float fRatio</unmanaged>\t\n            <unmanaged-short>float fRatio</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.CompressorSettings.Predelay\">\n            <summary>\t\n            <dd> Time after lThreshold is reached before attack phase is started, in milliseconds, in the range from DSFXCOMPRESSOR_PREDELAY_MIN to DSFXCOMPRESSOR_PREDELAY_MAX. The default value is 4 ms. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFXCompressor::fPredelay']/*\"/>\t\n            <msdn-id>ee416833</msdn-id>\t\n            <unmanaged>float fPredelay</unmanaged>\t\n            <unmanaged-short>float fPredelay</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectSound.DistortionSettings\">\n            <summary>\t\n            The <see cref=\"T:SharpDX.DirectSound.DistortionSettings\"/> structure contains parameters for a distortion effect.\t\n            </summary>\t\n            <remarks>\t\n            <p>The values in fPostEQBandwidth, fPostEQCenterFrequency, and fPreLowpassCutoff cannot exceed one-third of the frequency of the buffer. If an attempt is made to set a value greater than this, but within the range of accepted values, the parameter is set to the nearest supported value and S_FALSE is returned by IDirectSoundFXDistortion8::SetAllParameters.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFXDistortion']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.dsfxdistortion</msdn-id>\t\n            <unmanaged>DSFXDistortion</unmanaged>\t\n            <unmanaged-short>DSFXDistortion</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.DistortionSettings.Gain\">\n            <summary>\t\n            <dd> Amount of signal change after distortion, in the range from DSFXDISTORTION_GAIN_MIN through DSFXDISTORTION_GAIN_MAX. The default value is -18 dB. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFXDistortion::fGain']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.dsfxdistortion</msdn-id>\t\n            <unmanaged>float fGain</unmanaged>\t\n            <unmanaged-short>float fGain</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.DistortionSettings.Edge\">\n            <summary>\t\n            <dd> Percentage of distortion intensity, in the range in the range from DSFXDISTORTION_EDGE_MIN through DSFXDISTORTION_EDGE_MAX. The default value is 15 percent. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFXDistortion::fEdge']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.dsfxdistortion</msdn-id>\t\n            <unmanaged>float fEdge</unmanaged>\t\n            <unmanaged-short>float fEdge</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.DistortionSettings.PostEQCenterFrequency\">\n            <summary>\t\n            <dd> Center frequency of harmonic content addition, in the range from DSFXDISTORTION_POSTEQCENTERFREQUENCY_MIN through DSFXDISTORTION_POSTEQCENTERFREQUENCY_MAX. The default value is 2400 Hz. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFXDistortion::fPostEQCenterFrequency']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.dsfxdistortion</msdn-id>\t\n            <unmanaged>float fPostEQCenterFrequency</unmanaged>\t\n            <unmanaged-short>float fPostEQCenterFrequency</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.DistortionSettings.PostEQBandwidth\">\n            <summary>\t\n            <dd> Width of frequency band that determines range of harmonic content addition, in the range from DSFXDISTORTION_POSTEQBANDWIDTH_MIN through DSFXDISTORTION_POSTEQBANDWIDTH_MAX. The default value is 2400 Hz. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFXDistortion::fPostEQBandwidth']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.dsfxdistortion</msdn-id>\t\n            <unmanaged>float fPostEQBandwidth</unmanaged>\t\n            <unmanaged-short>float fPostEQBandwidth</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.DistortionSettings.PreLowpassCutoff\">\n            <summary>\t\n            <dd> Filter cutoff for high-frequency harmonics attenuation, in the range from DSFXDISTORTION_PRELOWPASSCUTOFF_MIN through DSFXDISTORTION_PRELOWPASSCUTOFF_MAX. The default value is 8000 Hz. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFXDistortion::fPreLowpassCutoff']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.dsfxdistortion</msdn-id>\t\n            <unmanaged>float fPreLowpassCutoff</unmanaged>\t\n            <unmanaged-short>float fPreLowpassCutoff</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectSound.EchoSettings\">\n            <summary>\t\n            The <see cref=\"T:SharpDX.DirectSound.EchoSettings\"/> structure contains parameters for an echo effect.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFXEcho']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.dsfxecho</msdn-id>\t\n            <unmanaged>DSFXEcho</unmanaged>\t\n            <unmanaged-short>DSFXEcho</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.EchoSettings.WetDryMix\">\n            <summary>\t\n            <dd> Ratio of wet (processed) signal to dry (unprocessed) signal. Must be in the range from DSFXECHO_WETDRYMIX_MIN through DSFXECHO_WETDRYMIX_MAX (all wet). The default value is 50.  </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFXEcho::fWetDryMix']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.dsfxecho</msdn-id>\t\n            <unmanaged>float fWetDryMix</unmanaged>\t\n            <unmanaged-short>float fWetDryMix</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.EchoSettings.Feedback\">\n            <summary>\t\n            <dd> Percentage of output fed back into input, in the range from DSFXECHO_FEEDBACK_MIN through DSFXECHO_FEEDBACK_MAX. The default value is 50. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFXEcho::fFeedback']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.dsfxecho</msdn-id>\t\n            <unmanaged>float fFeedback</unmanaged>\t\n            <unmanaged-short>float fFeedback</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.EchoSettings.LeftDelay\">\n            <summary>\t\n            <dd> Delay for left channel, in milliseconds, in the range from DSFXECHO_LEFTDELAY_MIN through DSFXECHO_LEFTDELAY_MAX. The default value is 500 ms. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFXEcho::fLeftDelay']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.dsfxecho</msdn-id>\t\n            <unmanaged>float fLeftDelay</unmanaged>\t\n            <unmanaged-short>float fLeftDelay</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.EchoSettings.RightDelay\">\n            <summary>\t\n            <dd> Delay for right channel, in milliseconds, in the range from DSFXECHO_RIGHTDELAY_MIN through DSFXECHO_RIGHTDELAY_MAX. The default value is 500 ms. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFXEcho::fRightDelay']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.dsfxecho</msdn-id>\t\n            <unmanaged>float fRightDelay</unmanaged>\t\n            <unmanaged-short>float fRightDelay</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.EchoSettings.PanDelay\">\n            <summary>\t\n            <dd> Value that specifies whether to swap left and right delays with each successive echo. The default value is zero, meaning no swap. Possible values are defined as DSFXECHO_PANDELAY_MIN (equivalent to <see cref=\"F:SharpDX.Result.False\"/>) and DSFXECHO_PANDELAY_MAX (equivalent to TRUE). </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFXEcho::lPanDelay']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.dsfxecho</msdn-id>\t\n            <unmanaged>int lPanDelay</unmanaged>\t\n            <unmanaged-short>int lPanDelay</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectSound.FlangerSettings\">\n            <summary>\t\n            The <see cref=\"T:SharpDX.DirectSound.FlangerSettings\"/> structure contains parameters for a flange effect.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFXFlanger']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.dsfxflanger</msdn-id>\t\n            <unmanaged>DSFXFlanger</unmanaged>\t\n            <unmanaged-short>DSFXFlanger</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.FlangerSettings.WetDryMix\">\n            <summary>\t\n            <dd> Ratio of wet (processed) signal to dry (unprocessed) signal. Must be in the range from DSFXFLANGER_WETDRYMIX_MIN through DSFXFLANGER_WETDRYMIX_MAX (all wet). The default value is 50. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFXFlanger::fWetDryMix']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.dsfxflanger</msdn-id>\t\n            <unmanaged>float fWetDryMix</unmanaged>\t\n            <unmanaged-short>float fWetDryMix</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.FlangerSettings.Depth\">\n            <summary>\t\n            <dd> Percentage by which the delay time is modulated by the low-frequency oscillator (LFO), in hundredths of a percentage point. Must be in the range from DSFXFLANGER_DEPTH_MIN through DSFXFLANGER_DEPTH_MAX. The default value is 100. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFXFlanger::fDepth']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.dsfxflanger</msdn-id>\t\n            <unmanaged>float fDepth</unmanaged>\t\n            <unmanaged-short>float fDepth</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.FlangerSettings.Feedback\">\n            <summary>\t\n            <dd> Percentage of output signal to feed back into the effect's input, in the range from DSFXFLANGER_FEEDBACK_MIN to DSFXFLANGER_FEEDBACK_MAX. The default value is -50. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFXFlanger::fFeedback']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.dsfxflanger</msdn-id>\t\n            <unmanaged>float fFeedback</unmanaged>\t\n            <unmanaged-short>float fFeedback</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.FlangerSettings.Frequency\">\n            <summary>\t\n            <dd> Frequency of the LFO, in the range from DSFXFLANGER_FREQUENCY_MIN to DSFXFLANGER_FREQUENCY_MAX. The default value is 0.25. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFXFlanger::fFrequency']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.dsfxflanger</msdn-id>\t\n            <unmanaged>float fFrequency</unmanaged>\t\n            <unmanaged-short>float fFrequency</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.FlangerSettings.Waveform\">\n            <summary>\t\n            <dd> Waveform shape of the LFO. By default, the waveform is a sine. Possible values are defined in the following table.\t\n            <table> <tr><th>Value\t\n            </th><th>Description\t\n            </th></tr> <tr><td>DSFXFLANGER_WAVE_TRIANGLE\t\n            </td><td>Triangle.\t\n            </td></tr> <tr><td>DSFXFLANGER_WAVE_SIN\t\n            </td><td>Sine.\t\n            </td></tr> </table> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFXFlanger::lWaveform']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.dsfxflanger</msdn-id>\t\n            <unmanaged>int lWaveform</unmanaged>\t\n            <unmanaged-short>int lWaveform</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.FlangerSettings.Delay\">\n            <summary>\t\n            <dd> Number of milliseconds the input is delayed before it is played back, in the range from DSFXFLANGER_DELAY_MIN to DSFXFLANGER_DELAY_MAX. The default value is 2 ms. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFXFlanger::fDelay']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.dsfxflanger</msdn-id>\t\n            <unmanaged>float fDelay</unmanaged>\t\n            <unmanaged-short>float fDelay</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.FlangerSettings.Phase\">\n            <summary>\t\n            <dd> Phase differential between left and right LFOs, in the range from DSFXFLANGER_PHASE_MIN through DSFXFLANGER_PHASE_MAX. Possible values are defined in the following table.\t\n            <table> <tr><th>Value\t\n            </th></tr> <tr><td>DSFXFLANGER_PHASE_NEG_180\t\n            </td></tr> <tr><td>DSFXFLANGER_PHASE_NEG_90\t\n            </td></tr> <tr><td>DSFXFLANGER_PHASE_ZERO\t\n            </td></tr> <tr><td>DSFXFLANGER_PHASE_90\t\n            </td></tr> <tr><td>DSFXFLANGER_PHASE_180\t\n            </td></tr> </table> <p>The default value is DSFXFLANGER_PHASE_ZERO.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFXFlanger::lPhase']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.dsfxflanger</msdn-id>\t\n            <unmanaged>int lPhase</unmanaged>\t\n            <unmanaged-short>int lPhase</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectSound.GargleSettings\">\n            <summary>\t\n            The <see cref=\"T:SharpDX.DirectSound.GargleSettings\"/> structure contains parameters for an amplitude modulation effect.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFXGargle']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.dsfxgargle</msdn-id>\t\n            <unmanaged>DSFXGargle</unmanaged>\t\n            <unmanaged-short>DSFXGargle</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.GargleSettings.RateHz\">\n            <summary>\t\n            <dd> Rate of modulation, in Hertz. Must be in the range from DSFXGARGLE_RATEHZ_MIN through DSFXGARGLE_RATEHZ_MAX. The default value is 20. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFXGargle::dwRateHz']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.dsfxgargle</msdn-id>\t\n            <unmanaged>unsigned int dwRateHz</unmanaged>\t\n            <unmanaged-short>unsigned int dwRateHz</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.GargleSettings.WaveShape\">\n            <summary>\t\n            <dd> Shape of the modulation waveform. The following values are defined. <table> <tr><th>Value\t\n            </th><th>Description\t\n            </th></tr> <tr><td>DSFXGARGLE_WAVE_TRIANGLE\t\n            </td><td>Triangular waveform.\t\n            </td></tr> <tr><td>DSFXGARGLE_WAVE_SQUARE\t\n            </td><td>Square waveform.\t\n            </td></tr> </table> <p>The default value is DSFXGARGLE_WAVE_TRIANGLE.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFXGargle::dwWaveShape']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.dsfxgargle</msdn-id>\t\n            <unmanaged>unsigned int dwWaveShape</unmanaged>\t\n            <unmanaged-short>unsigned int dwWaveShape</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectSound.ChorusSettings\">\n            <summary>\t\n            The <see cref=\"T:SharpDX.DirectSound.ChorusSettings\"/> structure contains parameters for a chorus effect.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFXChorus']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.dsfxchorus</msdn-id>\t\n            <unmanaged>DSFXChorus</unmanaged>\t\n            <unmanaged-short>DSFXChorus</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.ChorusSettings.WetDryMix\">\n            <summary>\t\n            <dd> Ratio of wet (processed) signal to dry (unprocessed) signal. Must be in the range from DSFXCHORUS_WETDRYMIX_MIN through DSFXCHORUS_WETDRYMIX_MAX (all wet). The default value is 50. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFXChorus::fWetDryMix']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.dsfxchorus</msdn-id>\t\n            <unmanaged>float fWetDryMix</unmanaged>\t\n            <unmanaged-short>float fWetDryMix</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.ChorusSettings.Depth\">\n            <summary>\t\n            <dd> Percentage by which the delay time is modulated by the low-frequency oscillator, in hundredths of a percentage point. Must be in the range from DSFXCHORUS_DEPTH_MIN through DSFXCHORUS_DEPTH_MAX. The default value is 10. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFXChorus::fDepth']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.dsfxchorus</msdn-id>\t\n            <unmanaged>float fDepth</unmanaged>\t\n            <unmanaged-short>float fDepth</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.ChorusSettings.Feedback\">\n            <summary>\t\n            <dd> Percentage of output signal to feed back into the effect's input, in the range from DSFXCHORUS_FEEDBACK_MIN to DSFXCHORUS_FEEDBACK_MAX. The default value is 25. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFXChorus::fFeedback']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.dsfxchorus</msdn-id>\t\n            <unmanaged>float fFeedback</unmanaged>\t\n            <unmanaged-short>float fFeedback</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.ChorusSettings.Frequency\">\n            <summary>\t\n            <dd> Frequency of the LFO, in the range from DSFXCHORUS_FREQUENCY_MIN to DSFXCHORUS_FREQUENCY_MAX. The default value is 1.1. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFXChorus::fFrequency']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.dsfxchorus</msdn-id>\t\n            <unmanaged>float fFrequency</unmanaged>\t\n            <unmanaged-short>float fFrequency</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.ChorusSettings.Waveform\">\n            <summary>\t\n            <dd> Waveform shape of the LFO. Defined values are DSFXCHORUS_WAVE_TRIANGLE and DSFXCHORUS_WAVE_SIN. By default, the waveform is a sine.  </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFXChorus::lWaveform']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.dsfxchorus</msdn-id>\t\n            <unmanaged>int lWaveform</unmanaged>\t\n            <unmanaged-short>int lWaveform</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.ChorusSettings.Delay\">\n            <summary>\t\n            <dd> Number of milliseconds the input is delayed before it is played back, in the range from DSFXCHORUS_DELAY_MIN to DSFXCHORUS_DELAY_MAX. The default value is 16 ms. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFXChorus::fDelay']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.dsfxchorus</msdn-id>\t\n            <unmanaged>float fDelay</unmanaged>\t\n            <unmanaged-short>float fDelay</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.ChorusSettings.Phase\">\n            <summary>\t\n            <dd> Phase differential between left and right LFOs, in the range from DSFXCHORUS_PHASE_MIN through DSFXCHORUS_PHASE_MAX. Possible values are defined as follows.\t\n            <table> <tr><th>Value\t\n            </th></tr> <tr><td>DSFXCHORUS_PHASE_NEG_180\t\n            </td></tr> <tr><td>DSFXCHORUS_PHASE_NEG_90\t\n            </td></tr> <tr><td>DSFXCHORUS_PHASE_ZERO\t\n            </td></tr> <tr><td>DSFXCHORUS_PHASE_90\t\n            </td></tr> <tr><td>DSFXCHORUS_PHASE_180\t\n            </td></tr> </table> <p>The default value is DSFXCHORUS_PHASE_90.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFXChorus::lPhase']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.dsfxchorus</msdn-id>\t\n            <unmanaged>int lPhase</unmanaged>\t\n            <unmanaged-short>int lPhase</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectSound.I3DL2ReverbSettings\">\n            <summary>\t\n            The <see cref=\"T:SharpDX.DirectSound.I3DL2ReverbSettings\"/> structure contains parameters for an I3DL2 (Interactive 3D Audio Level 2) reverberation effect.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFXI3DL2Reverb']/*\"/>\t\n            <msdn-id>ee416838</msdn-id>\t\n            <unmanaged>DSFXI3DL2Reverb</unmanaged>\t\n            <unmanaged-short>DSFXI3DL2Reverb</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2ReverbSettings.Room\">\n            <summary>\t\n            <dd> Attenuation of the room effect, in millibels (mB), in the range from DSFX_I3DL2REVERB_ROOM_MIN to DSFX_I3DL2REVERB_ROOM_MAX. The default value is DSFX_I3DL2REVERB_ROOM_DEFAULT, or -1000 mB. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFXI3DL2Reverb::lRoom']/*\"/>\t\n            <msdn-id>ee416838</msdn-id>\t\n            <unmanaged>int lRoom</unmanaged>\t\n            <unmanaged-short>int lRoom</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2ReverbSettings.RoomHF\">\n            <summary>\t\n            <dd> Attenuation of the room high-frequency effect, in mB, in the range from DSFX_I3DL2REVERB_ROOMHF_MIN to DSFX_I3DL2REVERB_ROOMHF_MAX. The default value is DSFX_I3DL2REVERB_ROOMHF_DEFAULT, or -100 mB. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFXI3DL2Reverb::lRoomHF']/*\"/>\t\n            <msdn-id>ee416838</msdn-id>\t\n            <unmanaged>int lRoomHF</unmanaged>\t\n            <unmanaged-short>int lRoomHF</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2ReverbSettings.RoomRolloffFactor\">\n            <summary>\t\n            <dd> Rolloff factor for the reflected signals, in the range from DSFX_I3DL2REVERB_ROOMROLLOFFFACTOR_MIN to DSFX_I3DL2REVERB_ROOMROLLOFFFACTOR_MAX. The default value is DSFX_I3DL2REVERB_ROOMROLLOFFFACTOR_DEFAULT, or 0.0. The rolloff factor for the direct path is controlled by the DirectSound listener. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFXI3DL2Reverb::flRoomRolloffFactor']/*\"/>\t\n            <msdn-id>ee416838</msdn-id>\t\n            <unmanaged>float flRoomRolloffFactor</unmanaged>\t\n            <unmanaged-short>float flRoomRolloffFactor</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2ReverbSettings.DecayTime\">\n            <summary>\t\n            <dd> Decay time, in seconds, in the range from DSFX_I3DL2REVERB_DECAYTIME_MIN to DSFX_I3DL2REVERB_DECAYTIME_MAX. The default value is DSFX_I3DL2REVERB_DECAYTIME_DEFAULT, or 1.49 second. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFXI3DL2Reverb::flDecayTime']/*\"/>\t\n            <msdn-id>ee416838</msdn-id>\t\n            <unmanaged>float flDecayTime</unmanaged>\t\n            <unmanaged-short>float flDecayTime</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2ReverbSettings.DecayHFRatio\">\n            <summary>\t\n            <dd> Ratio of the decay time at high frequencies to the decay time at low frequencies, in the range from DSFX_I3DL2REVERB_DECAYHFRATIO_MIN to DSFX_I3DL2REVERB_DECAYHFRATIO_MAX. The default value is DSFX_I3DL2REVERB_DECAYHFRATIO_DEFAULT, or 0.83. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFXI3DL2Reverb::flDecayHFRatio']/*\"/>\t\n            <msdn-id>ee416838</msdn-id>\t\n            <unmanaged>float flDecayHFRatio</unmanaged>\t\n            <unmanaged-short>float flDecayHFRatio</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2ReverbSettings.Reflections\">\n            <summary>\t\n            <dd> Attenuation of early reflections relative to lRoom, in mB, in the range from DSFX_I3DL2REVERB_REFLECTIONS_MIN to DSFX_I3DL2REVERB_REFLECTIONS_MAX. The default value is DSFX_I3DL2REVERB_REFLECTIONS_DEFAULT, or -2602 mB. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFXI3DL2Reverb::lReflections']/*\"/>\t\n            <msdn-id>ee416838</msdn-id>\t\n            <unmanaged>int lReflections</unmanaged>\t\n            <unmanaged-short>int lReflections</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2ReverbSettings.ReflectionsDelay\">\n            <summary>\t\n            <dd> Delay time of the first reflection relative to the direct path, in seconds, in the range from DSFX_I3DL2REVERB_REFLECTIONSDELAY_MIN to DSFX_I3DL2REVERB_REFLECTIONSDELAY_DEFAULT. The default value is 0.007 seconds. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFXI3DL2Reverb::flReflectionsDelay']/*\"/>\t\n            <msdn-id>ee416838</msdn-id>\t\n            <unmanaged>float flReflectionsDelay</unmanaged>\t\n            <unmanaged-short>float flReflectionsDelay</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2ReverbSettings.Reverb\">\n            <summary>\t\n            <dd> Attenuation of late reverberation relative to lRoom, in mB, in the range -from DSFX_I3DL2REVERB_REVERB_MIN to DSFX_I3DL2REVERB_REVERB_MAX. The default value is DSFX_I3DL2REVERB_REVERB_DEFAULT, or 200 mB. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFXI3DL2Reverb::lReverb']/*\"/>\t\n            <msdn-id>ee416838</msdn-id>\t\n            <unmanaged>int lReverb</unmanaged>\t\n            <unmanaged-short>int lReverb</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2ReverbSettings.ReverbDelay\">\n            <summary>\t\n            <dd> Time limit between the early reflections and the late reverberation relative to the time of the first reflection, in seconds, in the range from DSFX_I3DL2REVERB_REVERBDELAY_MIN to DSFX_I3DL2REVERB_REVERBDELAY_MAX. The default value is DSFX_I3DL2REVERB_REVERBDELAY_DEFAULT, or 0.011 seconds. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFXI3DL2Reverb::flReverbDelay']/*\"/>\t\n            <msdn-id>ee416838</msdn-id>\t\n            <unmanaged>float flReverbDelay</unmanaged>\t\n            <unmanaged-short>float flReverbDelay</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2ReverbSettings.Diffusion\">\n            <summary>\t\n            <dd> Echo density in the late reverberation decay, in percent, in the range from DSFX_I3DL2REVERB_DIFFUSION_MIN to DSFX_I3DL2REVERB_DIFFUSION_MAX. The default value is DSFX_I3DL2REVERB_DIFFUSION_DEFAULT, or 100.0 percent. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFXI3DL2Reverb::flDiffusion']/*\"/>\t\n            <msdn-id>ee416838</msdn-id>\t\n            <unmanaged>float flDiffusion</unmanaged>\t\n            <unmanaged-short>float flDiffusion</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2ReverbSettings.Density\">\n            <summary>\t\n            <dd> Modal density in the late reverberation decay, in percent, in the range from DSFX_I3DL2REVERB_DENSITY_MIN to DSFX_I3DL2REVERB_DENSITY_MAX. The default value is DSFX_I3DL2REVERB_DENSITY_DEFAULT, or 100.0 percent. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFXI3DL2Reverb::flDensity']/*\"/>\t\n            <msdn-id>ee416838</msdn-id>\t\n            <unmanaged>float flDensity</unmanaged>\t\n            <unmanaged-short>float flDensity</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.I3DL2ReverbSettings.HFReference\">\n            <summary>\t\n            <dd> Reference high frequency, in hertz, in the range from DSFX_I3DL2REVERB_HFREFERENCE_MIN to DSFX_I3DL2REVERB_HFREFERENCE_MAX. The default value is DSFX_I3DL2REVERB_HFREFERENCE_DEFAULT, or 5000.0 Hz. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFXI3DL2Reverb::flHFReference']/*\"/>\t\n            <msdn-id>ee416838</msdn-id>\t\n            <unmanaged>float flHFReference</unmanaged>\t\n            <unmanaged-short>float flHFReference</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectSound.Listener3DSettings\">\n            <summary>\t\n            The <see cref=\"T:SharpDX.DirectSound.Listener3DSettings\"/> structure describes the 3D world parameters and the position of the listener. This structure is used with theIDirectSound3DListener8::GetAllParametersandIDirectSound3DListener8::SetAllParametersmethods.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DS3DLISTENER']/*\"/>\t\n            <msdn-id>ee416817</msdn-id>\t\n            <unmanaged>DS3DLISTENER</unmanaged>\t\n            <unmanaged-short>DS3DLISTENER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Listener3DSettings.Size\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DS3DLISTENER::dwSize']/*\"/>\t\n            <unmanaged>unsigned int dwSize</unmanaged>\t\n            <unmanaged-short>unsigned int dwSize</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Listener3DSettings.Position\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DS3DLISTENER::vPosition']/*\"/>\t\n            <unmanaged>D3DVECTOR vPosition</unmanaged>\t\n            <unmanaged-short>D3DVECTOR vPosition</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Listener3DSettings.Velocity\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DS3DLISTENER::vVelocity']/*\"/>\t\n            <unmanaged>D3DVECTOR vVelocity</unmanaged>\t\n            <unmanaged-short>D3DVECTOR vVelocity</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Listener3DSettings.OrientFront\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DS3DLISTENER::vOrientFront']/*\"/>\t\n            <unmanaged>D3DVECTOR vOrientFront</unmanaged>\t\n            <unmanaged-short>D3DVECTOR vOrientFront</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Listener3DSettings.OrientTop\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DS3DLISTENER::vOrientTop']/*\"/>\t\n            <unmanaged>D3DVECTOR vOrientTop</unmanaged>\t\n            <unmanaged-short>D3DVECTOR vOrientTop</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Listener3DSettings.DistanceFactor\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DS3DLISTENER::flDistanceFactor']/*\"/>\t\n            <unmanaged>float flDistanceFactor</unmanaged>\t\n            <unmanaged-short>float flDistanceFactor</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Listener3DSettings.RolloffFactor\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DS3DLISTENER::flRolloffFactor']/*\"/>\t\n            <unmanaged>float flRolloffFactor</unmanaged>\t\n            <unmanaged-short>float flRolloffFactor</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.Listener3DSettings.DopplerFactor\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DS3DLISTENER::flDopplerFactor']/*\"/>\t\n            <unmanaged>float flDopplerFactor</unmanaged>\t\n            <unmanaged-short>float flDopplerFactor</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.Listener3DSettings.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectSound.Listener3DSettings\"/> class.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.DirectSound.NoiseSuppressSettings\">\n            <summary>\t\n            The <see cref=\"T:SharpDX.DirectSound.NoiseSuppressSettings\"/> structure contains parameters for noise suppression in a capture buffer.\t\n            </summary>\t\n            <remarks>\t\n            <table><tr><th>Windows </th></tr><tr><td><p>Important Note for Windows Vista</p> <p>Existing applications that access Windows XP Acoustic Echo Cancellation (AEC) features via the DirectSound API will no longer obtain AEC when running on Windows Vista. These applications will still run, but their calls to AEC-specific DirectSound API calls will have no effect on the captured audio.</p><p>To learn how to obtain AEC in Windows Vista, See the Windows Vista AEC topics in the Windows SDK.</p></td></tr></table>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCFXNoiseSuppress']/*\"/>\t\n            <msdn-id>ee416827</msdn-id>\t\n            <unmanaged>DSCFXNoiseSuppress</unmanaged>\t\n            <unmanaged-short>DSCFXNoiseSuppress</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.NoiseSuppressSettings.Enable\">\n            <summary>\t\n            <dd> Boolean value that specifies whether the effect is enabled. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSCFXNoiseSuppress::fEnable']/*\"/>\t\n            <msdn-id>ee416827</msdn-id>\t\n            <unmanaged>BOOL fEnable</unmanaged>\t\n            <unmanaged-short>BOOL fEnable</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectSound.NotificationPosition\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSBPOSITIONNOTIFY']/*\"/>\t\n            <unmanaged>DSBPOSITIONNOTIFY</unmanaged>\t\n            <unmanaged-short>DSBPOSITIONNOTIFY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.NotificationPosition.Offset\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSBPOSITIONNOTIFY::dwOffset']/*\"/>\t\n            <unmanaged>unsigned int dwOffset</unmanaged>\t\n            <unmanaged-short>unsigned int dwOffset</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.NotificationPosition.EventNotifyHandlerPointer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSBPOSITIONNOTIFY::hEventNotify']/*\"/>\t\n            <unmanaged>void* hEventNotify</unmanaged>\t\n            <unmanaged-short>void hEventNotify</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.DirectSound.NotificationPosition.WaitHandle\">\n            <summary>\n            Gets or sets the wait handle.\n            </summary>\n            <value>The wait handle.</value>\n        </member>\n        <member name=\"T:SharpDX.DirectSound.ParametricEqualizerSettings\">\n            <summary>\t\n            The <see cref=\"T:SharpDX.DirectSound.ParametricEqualizerSettings\"/> structure contains parameters for a parametric equalizer effect.\t\n            </summary>\t\n            <remarks>\t\n            <p>The value in fCenter cannot exceed one-third of the sampling frequency of the buffer. If an attempt is made to set a value greater than this, but within the range of accepted values, the parameter is set to the nearest supported value and S_FALSE is returned by IDirectSoundFXParamEq8::SetAllParameters.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFXParamEq']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.dsfxparameq</msdn-id>\t\n            <unmanaged>DSFXParamEq</unmanaged>\t\n            <unmanaged-short>DSFXParamEq</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.ParametricEqualizerSettings.Center\">\n            <summary>\t\n            <dd> Center frequency, in hertz, in the range from DSFXPARAMEQ_CENTER_MIN to DSFXPARAMEQ_CENTER_MAX. The default value is 8000. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFXParamEq::fCenter']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.dsfxparameq</msdn-id>\t\n            <unmanaged>float fCenter</unmanaged>\t\n            <unmanaged-short>float fCenter</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.ParametricEqualizerSettings.Bandwidth\">\n            <summary>\t\n            <dd> Bandwidth, in semitones, in the range from DSFXPARAMEQ_BANDWIDTH_MIN to DSFXPARAMEQ_BANDWIDTH_MAX. The default value is 12. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFXParamEq::fBandwidth']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.dsfxparameq</msdn-id>\t\n            <unmanaged>float fBandwidth</unmanaged>\t\n            <unmanaged-short>float fBandwidth</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.ParametricEqualizerSettings.Gain\">\n            <summary>\t\n            <dd> Gain, in the range from DSFXPARAMEQ_GAIN_MIN to DSFXPARAMEQ_GAIN_MAX. The default value is 0. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFXParamEq::fGain']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.dsfxparameq</msdn-id>\t\n            <unmanaged>float fGain</unmanaged>\t\n            <unmanaged-short>float fGain</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectSound.SoundBufferDescription\">\n            <summary>\t\n            The <see cref=\"T:SharpDX.DirectSound.SoundBufferDescription\"/> structure describes the characteristics of a new buffer object. It is used by theIDirectSound8::CreateSoundBuffermethod and by theDirectSoundFullDuplexCreate8function.<p>An earlier version of this structure, DSBUFFERDESC1, is maintained in Dsound.h for compatibility with DirectX 7 and earlier.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>When creating a primary buffer, applications must set the dwBufferBytes member to zero. DirectSound will determine the best buffer size for the particular sound device in use. To determine the size of a created primary buffer, call IDirectSoundBuffer8::GetCaps.</p> <p>The DSBCAPS_CTRLDEFAULT flag is no longer supported. This flag was defined as <see cref=\"F:SharpDX.DirectSound.BufferFlags.ControlPan\"/> | <see cref=\"F:SharpDX.DirectSound.BufferFlags.ControlVolume\"/> | <see cref=\"F:SharpDX.DirectSound.BufferFlags.ControlFrequency\"/>. By specifying only the flags you need, you cut down on unnecessary resource usage.</p> <p>On VXD drivers, a sound buffer created with <see cref=\"F:SharpDX.DirectSound.BufferFlags.ControlPositionNotify\"/> is always a software buffer, because the VXD driver model does not support notifications. With WDM drivers, a notification-enabled buffer can be in hardware, if hardware resources are available.</p> <p>The <see cref=\"F:SharpDX.DirectSound.BufferFlags.Hardware\"/> and <see cref=\"F:SharpDX.DirectSound.BufferFlags.Software\"/> flags are optional and mutually exclusive. <see cref=\"F:SharpDX.DirectSound.BufferFlags.Hardware\"/> forces the buffer to reside in hardware, meaning that it will be mixed by the sound card. <see cref=\"F:SharpDX.DirectSound.BufferFlags.Software\"/> forces the buffer to reside in software, where it is mixed by the CPU. These flags are also defined for the dwFlags member <see cref=\"T:SharpDX.DirectSound.BufferCapabilities\"/>.</p> <p>The 3D algorithms represent selection of the software emulation layer only: that is, the software algorithm that is used when no hardware is present for acceleration. In order to maximize hardware utilization, <see cref=\"F:SharpDX.DirectSound.DirectSound3DAlgorithmGuid.NoVirtualization3DAlgorithm\"/> is treated as a special case. If no free 3D hardware voices are available, the buffer is then treated as a 2D buffer, but with 3D control. Specifically, when a sound buffer is created with <see cref=\"F:SharpDX.DirectSound.DirectSound3DAlgorithmGuid.NoVirtualization3DAlgorithm\"/>, or when the buffer is played if the buffer was created with DSBPLAY_LOCDEFER, the following procedure is followed:</p> <ol> <li><p>If a free hardware 3D voice is available, that 3D hardware voice is used.</p></li> <li><p>If no free hardware 3D voices are available and a 2D hardware voice is available, that 2D hardware voice will be used. This is possible because the <see cref=\"F:SharpDX.DirectSound.DirectSound3DAlgorithmGuid.NoVirtualization3DAlgorithm\"/> algorithm is a simple stereo pan algorithm</p></li> <li><p>If no free 2D or 3D hardware voices are available, the voice will be played in software using the <see cref=\"F:SharpDX.DirectSound.DirectSound3DAlgorithmGuid.NoVirtualization3DAlgorithm\"/> algorithm.</p></li> </ol> <p>If a speaker configuration other than <see cref=\"F:SharpDX.DirectSound.SpeakerConfiguration.Headphone\"/> or <see cref=\"F:SharpDX.DirectSound.SpeakerConfiguration.Stereo\"/> is in effect, the processing will be done as if for a two-speaker configuration.</p> <p>If a buffer is created using one of the HRTF algorithms, and the HRTF algorithm is not available on the system (for example, a non-WDM system), a success code, DS_NO_VIRTUALIZATION, is returned. The sound buffer created will use <see cref=\"F:SharpDX.DirectSound.DirectSound3DAlgorithmGuid.NoVirtualization3DAlgorithm\"/> instead. For this reason, applications should use the SUCCEEDED or FAILED macros rather than checking explicitly for DS_OK when calling CreateSoundBuffer.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSBUFFERDESC']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.dsbufferdesc</msdn-id>\t\n            <unmanaged>DSBUFFERDESC</unmanaged>\t\n            <unmanaged-short>DSBUFFERDESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.SoundBufferDescription.Size\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSBUFFERDESC::dwSize']/*\"/>\t\n            <unmanaged>unsigned int dwSize</unmanaged>\t\n            <unmanaged-short>unsigned int dwSize</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.SoundBufferDescription.Flags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSBUFFERDESC::dwFlags']/*\"/>\t\n            <unmanaged>DSBCAPS_FLAGS dwFlags</unmanaged>\t\n            <unmanaged-short>DSBCAPS_FLAGS dwFlags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.SoundBufferDescription.BufferBytes\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSBUFFERDESC::dwBufferBytes']/*\"/>\t\n            <unmanaged>unsigned int dwBufferBytes</unmanaged>\t\n            <unmanaged-short>unsigned int dwBufferBytes</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.SoundBufferDescription.Reserved\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSBUFFERDESC::dwReserved']/*\"/>\t\n            <unmanaged>unsigned int dwReserved</unmanaged>\t\n            <unmanaged-short>unsigned int dwReserved</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.SoundBufferDescription.pFormat\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSBUFFERDESC::lpwfxFormat']/*\"/>\t\n            <unmanaged>WAVEFORMATEX* lpwfxFormat</unmanaged>\t\n            <unmanaged-short>WAVEFORMATEX lpwfxFormat</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.SoundBufferDescription.AlgorithmFor3D\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSBUFFERDESC::guid3DAlgorithm']/*\"/>\t\n            <unmanaged>GUID guid3DAlgorithm</unmanaged>\t\n            <unmanaged-short>GUID guid3DAlgorithm</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.DirectSound.SoundBufferDescription.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectSound.SoundBufferDescription\"/> class.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DirectSound.SoundBufferDescription.Format\">\n            <summary>\n            WaveFormat of this sound buffer description\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.DirectSound.WavesReverbSettings\">\n            <summary>\t\n            The <see cref=\"T:SharpDX.DirectSound.WavesReverbSettings\"/> structure contains parameters for a Waves reverberation effect.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFXWavesReverb']/*\"/>\t\n            <msdn-id>ee416840</msdn-id>\t\n            <unmanaged>DSFXWavesReverb</unmanaged>\t\n            <unmanaged-short>DSFXWavesReverb</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.WavesReverbSettings.InGain\">\n            <summary>\t\n            <dd> Input gain of signal, in decibels (dB), in the range from DSFX_WAVESREVERB_INGAIN_MIN through DSFX_WAVESREVERB_INGAIN_MAX. The default value is DSFX_WAVESREVERB_INGAIN_DEFAULT, or 0 dB. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFXWavesReverb::fInGain']/*\"/>\t\n            <msdn-id>ee416840</msdn-id>\t\n            <unmanaged>float fInGain</unmanaged>\t\n            <unmanaged-short>float fInGain</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.WavesReverbSettings.ReverbMix\">\n            <summary>\t\n            <dd> Reverb mix, in dB, in the range from DSFX_WAVESREVERB_REVERBMIX_MIN through DSFX_WAVESREVERB_REVERBMIX_MAX. The default value is DSFX_WAVESREVERB_REVERBMIX_DEFAULT, or 0 dB. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFXWavesReverb::fReverbMix']/*\"/>\t\n            <msdn-id>ee416840</msdn-id>\t\n            <unmanaged>float fReverbMix</unmanaged>\t\n            <unmanaged-short>float fReverbMix</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.WavesReverbSettings.ReverbTime\">\n            <summary>\t\n            <dd> Reverb time, in milliseconds, in the range from DSFX_WAVESREVERB_REVERBTIME_MIN through DSFX_WAVESREVERB_REVERBTIME_MAX. The default value is DSFX_WAVESREVERB_REVERBTIME_DEFAULT, or 1000. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFXWavesReverb::fReverbTime']/*\"/>\t\n            <msdn-id>ee416840</msdn-id>\t\n            <unmanaged>float fReverbTime</unmanaged>\t\n            <unmanaged-short>float fReverbTime</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.DirectSound.WavesReverbSettings.HighFreqRTRatio\">\n            <summary>\t\n            <dd> High-frequency reverb time ratio, in the range from DSFX_WAVESREVERB_HIGHFREQRTRATIO_MIN through DSFX_WAVESREVERB_HIGHFREQRTRATIO_MAX. The default value is DSFX_WAVESREVERB_HIGHFREQRTRATIO_DEFAULT, or 0.001. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DSFXWavesReverb::fHighFreqRTRatio']/*\"/>\t\n            <msdn-id>ee416840</msdn-id>\t\n            <unmanaged>float fHighFreqRTRatio</unmanaged>\t\n            <unmanaged-short>float fHighFreqRTRatio</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.DirectSound.PrimarySoundBuffer\">\n            <summary>\n            A Primary DirectSound Buffer.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.DirectSound.PrimarySoundBuffer.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectSound.PrimarySoundBuffer\"/> class.\n            </summary>\n            <param name=\"basePtr\">The base PTR.</param>\n        </member>\n        <member name=\"M:SharpDX.DirectSound.PrimarySoundBuffer.#ctor(SharpDX.DirectSound.DirectSound,SharpDX.DirectSound.SoundBufferDescription)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DirectSound.PrimarySoundBuffer\"/> class.\n            </summary>\n            <param name=\"dSound\">an instance of the <see cref=\"T:SharpDX.DirectSound.DirectSound\"/></param>\n            <param name=\"bufferDescription\">The buffer description.</param>\n        </member>\n    </members>\n</doc>\n"
  },
  {
    "path": "3rd/SharpDX/SharpDX.MediaFoundation.xml",
    "content": "<?xml version=\"1.0\"?>\n<doc>\n    <assembly>\n        <name>SharpDX.MediaFoundation</name>\n    </assembly>\n    <members>\n        <member name=\"T:SharpDX.MediaFoundation.AssemblyDoc\">\n            <summary>\n            The <see cref=\"A:SharpDX.MediaFoundation\"/> assembly provides managed MediaFoundation API.\n            </summary>\n            <msdn-id></msdn-id>\n            <unmanaged>MediaFoundation</unmanaged>\t\n            <unmanaged-short>MediaFoundation</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.AudioDecoder\">\n            <summary>\n            Decoder from compressed audio (mp3, wma...etc.) to PCM.\n            </summary>\n            <remarks>\n            This class was developed following the <a href=\"http://msdn.microsoft.com/en-us/library/windows/desktop/dd757929%28v=vs.85%29.aspx\">\"Tutorial: Decoding Audio\"</a>\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.AudioDecoder.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.AudioDecoder\"/> class.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.AudioDecoder.#ctor(System.IO.Stream)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.AudioDecoder\"/> class.\n            </summary>\n            <param name=\"stream\">The stream to read the compressed audio.</param>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.AudioDecoder.SetSourceStream(System.IO.Stream)\">\n            <summary>\n            Gets or sets the source stream. See remarks.\n            </summary>\n            <value>The source.</value>\n            <remarks>\n            The source must be set before calling <see cref=\"M:SharpDX.MediaFoundation.AudioDecoder.GetSamples\"/>\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.AudioDecoder.GetSamples\">\n            <summary>\n            Gets the decoded PCM samples. See remarks.\n            </summary>\n            <returns>An enumerator of pointer to PCM decoded data with the same format as returned by <see cref=\"P:SharpDX.MediaFoundation.AudioDecoder.WaveFormat\"/>.</returns>\n            <remarks>\n            This method is only working as a single enumerator at a time.\n            </remarks>\n            <remarks>\n            The <see cref=\"!:Source\"/> must be set before calling <see cref=\"M:SharpDX.MediaFoundation.AudioDecoder.GetSamples\"/>\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.AudioDecoder.GetSamples(System.TimeSpan)\">\n            <summary>\n            Gets the decoded PCM samples. See remarks.\n            </summary>\n            <param name=\"startingPositionInSeconds\">The starting position in seconds.</param>\n            <returns>An enumerator of pointer to PCM decoded data with the same format as returned by <see cref=\"P:SharpDX.MediaFoundation.AudioDecoder.WaveFormat\"/>.</returns>\n            <remarks>\n            This method is only working as a single enumerator at a time.\n            The <see cref=\"M:SharpDX.MediaFoundation.AudioDecoder.SetSourceStream(System.IO.Stream)\"/> must be set before calling <see cref=\"M:SharpDX.MediaFoundation.AudioDecoder.GetSamples\"/>\n            </remarks>\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.AudioDecoder.Duration\">\n            <summary>\n            Gets the total duration in seconds.\n            </summary>\n            <value>The duration.</value>\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.AudioDecoder.WaveFormat\">\n            <summary>\n            Gets the PCM wave format outputed by this decoder.\n            </summary>\n            <value>The wave format.</value>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.ByteStream\">\n            <summary>\n            ByteStream class used \n            </summary>\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Represents a byte stream from some data source, which might be a local file, a network file, or some other source. The <strong><see cref=\"T:SharpDX.MediaFoundation.IByteStream\"/></strong> interface supports the typical stream operations, such as reading, writing, and seeking. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p> The following functions return <strong><see cref=\"T:SharpDX.MediaFoundation.IByteStream\"/></strong> references for local files: </p><ul> <li> <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.BeginCreateFile(SharpDX.MediaFoundation.FileAccessMode,SharpDX.MediaFoundation.FileOpenMode,SharpDX.MediaFoundation.FileFlags,System.String,SharpDX.MediaFoundation.AsyncCallback,SharpDX.ComObject,SharpDX.ComObject@)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateFile(SharpDX.MediaFoundation.FileAccessMode,SharpDX.MediaFoundation.FileOpenMode,SharpDX.MediaFoundation.FileFlags,System.String,SharpDX.MediaFoundation.IByteStream@)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateTempFile(SharpDX.MediaFoundation.FileAccessMode,SharpDX.MediaFoundation.FileOpenMode,SharpDX.MediaFoundation.FileFlags,SharpDX.MediaFoundation.IByteStream@)\"/></strong> </li> </ul><p> A byte stream for a media souce can be opened with read access. A byte stream for an archive media sink should be opened with both read and write access. (Read access may be required, because the archive sink might need to read portions of the file as it writes.) </p><p>Some implementations of this interface also expose one or more of the following interfaces:</p><ul> <li> <strong><see cref=\"T:SharpDX.MediaFoundation.MediaAttributes\"/></strong> </li> <li> <strong><see cref=\"T:SharpDX.MediaFoundation.ByteStreamBuffering\"/></strong> </li> <li> <strong><see cref=\"T:SharpDX.MediaFoundation.ByteStreamCacheControl\"/></strong> </li> <li> <strong><see cref=\"T:SharpDX.MediaFoundation.ServiceProvider\"/></strong> </li> <li> <strong><see cref=\"T:SharpDX.MediaFoundation.MediaEventGenerator\"/></strong> </li> </ul><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFByteStream']/*\"/>\t\n            <msdn-id>ms698720</msdn-id>\t\n            <unmanaged>IMFByteStream</unmanaged>\t\n            <unmanaged-short>IMFByteStream</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.IByteStream\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Represents a byte stream from some data source, which might be a local file, a network file, or some other source. The <strong><see cref=\"T:SharpDX.MediaFoundation.IByteStream\"/></strong> interface supports the typical stream operations, such as reading, writing, and seeking. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p> The following functions return <strong><see cref=\"T:SharpDX.MediaFoundation.IByteStream\"/></strong> references for local files: </p><ul> <li> <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.BeginCreateFile(SharpDX.MediaFoundation.FileAccessMode,SharpDX.MediaFoundation.FileOpenMode,SharpDX.MediaFoundation.FileFlags,System.String,SharpDX.MediaFoundation.AsyncCallback,SharpDX.ComObject,SharpDX.ComObject@)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateFile(SharpDX.MediaFoundation.FileAccessMode,SharpDX.MediaFoundation.FileOpenMode,SharpDX.MediaFoundation.FileFlags,System.String,SharpDX.MediaFoundation.IByteStream@)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateTempFile(SharpDX.MediaFoundation.FileAccessMode,SharpDX.MediaFoundation.FileOpenMode,SharpDX.MediaFoundation.FileFlags,SharpDX.MediaFoundation.IByteStream@)\"/></strong> </li> </ul><p> A byte stream for a media souce can be opened with read access. A byte stream for an archive media sink should be opened with both read and write access. (Read access may be required, because the archive sink might need to read portions of the file as it writes.) </p><p>Some implementations of this interface also expose one or more of the following interfaces:</p><ul> <li> <strong><see cref=\"T:SharpDX.MediaFoundation.MediaAttributes\"/></strong> </li> <li> <strong><see cref=\"T:SharpDX.MediaFoundation.ByteStreamBuffering\"/></strong> </li> <li> <strong><see cref=\"T:SharpDX.MediaFoundation.ByteStreamCacheControl\"/></strong> </li> <li> <strong><see cref=\"T:SharpDX.MediaFoundation.ServiceProvider\"/></strong> </li> <li> <strong><see cref=\"T:SharpDX.MediaFoundation.MediaEventGenerator\"/></strong> </li> </ul><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFByteStream']/*\"/>\t\n            <msdn-id>ms698720</msdn-id>\t\n            <unmanaged>IMFByteStream</unmanaged>\t\n            <unmanaged-short>IMFByteStream</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.IByteStream.Read(System.Byte[],System.Int32,System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Reads data from the stream. </p>\t\n            </summary>\t\n            <param name=\"bRef\"><dd> <p> Pointer to a buffer that receives the data. The caller must allocate the buffer. </p> </dd></param>\t\n            <param name=\"count\"><dd> <p> Size of the buffer in bytes. </p> </dd></param>\t\n            <returns>The number of bytes that are copied into the buffer</returns>\t\n            <remarks>\t\n            <p> This method reads at most <em>cb</em> bytes from the current position in the stream and copies them into the buffer provided by the caller. The number of bytes that were read is returned in the <em>pcbRead</em> parameter. The method does not return an error code on reaching the end of the file, so the application should check the value in <em>pcbRead</em> after the method returns. </p><p> This method is synchronous. It blocks until the read operation completes. </p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <msdn-id>ms698913</msdn-id>\t\n            <unmanaged>HRESULT IMFByteStream::Read([Out, Buffer] unsigned char* pb,[In] unsigned int cb,[Out] unsigned int* pcbRead)</unmanaged>\t\n            <unmanaged-short>IMFByteStream::Read</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.IByteStream.BeginRead(System.Byte[],System.Int32,System.Int32,SharpDX.MediaFoundation.AsyncCallback,System.Object)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Begins an asynchronous read operation from the stream. </p>\t\n            </summary>\t\n            <param name=\"bRef\"><dd> <p> Pointer to a buffer that receives the data. The caller must allocate the buffer. </p> </dd></param>\t\n            <param name=\"cb\"><dd> <p> Size of the buffer in bytes. </p> </dd></param>\t\n            <param name=\"callbackRef\"><dd> <p> Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.AsyncCallback\"/></strong> interface of a callback object. The caller must implement this interface. </p> </dd></param>\t\n            <param name=\"unkStateRef\"><dd> <p> Pointer to the <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interface of a state object, defined by the caller. This parameter can be <strong><c>null</c></strong>. You can use this object to hold state information. The object is returned to the caller when the callback is invoked. </p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p> When all of the data has been read into the buffer, the callback object's <strong><see cref=\"M:SharpDX.MediaFoundation.AsyncCallback.Invoke(SharpDX.MediaFoundation.AsyncResult)\"/></strong> method is called. At that point, the application should call <strong><see cref=\"M:SharpDX.MediaFoundation.IByteStream.EndRead(SharpDX.MediaFoundation.AsyncResult)\"/></strong> to complete the asynchronous request. </p><p> Do not read from, write to, free, or reallocate the buffer while an asynchronous read is pending. </p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <msdn-id>ms704810</msdn-id>\t\n            <unmanaged>HRESULT IMFByteStream::BeginRead([Out, Buffer] unsigned char* pb,[In] unsigned int cb,[In] IMFAsyncCallback* pCallback,[In] IUnknown* punkState)</unmanaged>\t\n            <unmanaged-short>IMFByteStream::BeginRead</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.IByteStream.EndRead(SharpDX.MediaFoundation.AsyncResult)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Completes an asynchronous read operation. </p>\t\n            </summary>\t\n            <param name=\"resultRef\"><dd> <p> Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.AsyncResult\"/></strong> interface. Pass in the same reference that your callback object received in the <strong><see cref=\"M:SharpDX.MediaFoundation.AsyncCallback.Invoke(SharpDX.MediaFoundation.AsyncResult)\"/></strong> method. </p> </dd></param>\t\n            <returns>The number of bytes that were read</returns>\t\n            <remarks>\t\n            <p> Call this method after the <strong><see cref=\"M:SharpDX.MediaFoundation.IByteStream.BeginRead(System.Byte[],System.Int32,System.Int32,SharpDX.MediaFoundation.AsyncCallback,System.Object)\"/></strong> method completes asynchronously. </p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <msdn-id>ms704042</msdn-id>\t\n            <unmanaged>HRESULT IMFByteStream::EndRead([In] IMFAsyncResult* pResult,[Out] unsigned int* pcbRead)</unmanaged>\t\n            <unmanaged-short>IMFByteStream::EndRead</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.IByteStream.Write(System.Byte[],System.Int32,System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Writes data to the stream.</p>\t\n            </summary>\t\n            <param name=\"bRef\"><dd> <p> Pointer to a buffer that contains the data to write. </p> </dd></param>\t\n            <param name=\"cb\"><dd> <p> Size of the buffer in bytes. </p> </dd></param>\t\n            <param name=\"cbWrittenRef\"><dd> <p> Receives the number of bytes that are written. </p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p> This method writes the contents of the <em>pb</em> buffer to the stream, starting at the current stream position. The number of bytes that were written is returned in the <em>pcbWritten</em> parameter. </p><p> This method is synchronous. It blocks until the write operation completes. </p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <msdn-id>ms703843</msdn-id>\t\n            <unmanaged>HRESULT IMFByteStream::Write([In, Buffer] const unsigned char* pb,[In] unsigned int cb,[Out] unsigned int* pcbWritten)</unmanaged>\t\n            <unmanaged-short>IMFByteStream::Write</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.IByteStream.BeginWrite(System.Byte[],System.Int32,System.Int32,SharpDX.MediaFoundation.AsyncCallback,System.Object)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Begins an asynchronous write operation to the stream. </p>\t\n            </summary>\t\n            <param name=\"bRef\"><dd> <p> Pointer to a buffer containing the data to write. </p> </dd></param>\t\n            <param name=\"cb\"><dd> <p> Size of the buffer in bytes. </p> </dd></param>\t\n            <param name=\"callbackRef\"><dd> <p> Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.AsyncCallback\"/></strong> interface of a callback object. The caller must implement this interface. </p> </dd></param>\t\n            <param name=\"unkStateRef\"><dd> <p> Pointer to the <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interface of a state object, defined by the caller. This parameter can be <strong><c>null</c></strong>. You can use this object to hold state information. The object is returned to the caller when the callback is invoked. </p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p> When all of the data has been written to the stream, the callback object's <strong><see cref=\"M:SharpDX.MediaFoundation.AsyncCallback.Invoke(SharpDX.MediaFoundation.AsyncResult)\"/></strong> method is called. At that point, the application should call <strong><see cref=\"M:SharpDX.MediaFoundation.IByteStream.EndWrite(SharpDX.MediaFoundation.AsyncResult)\"/></strong> to complete the asynchronous request. </p><p> Do not reallocate, free, or write to the buffer while an asynchronous write is still pending. </p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <msdn-id>ms694005</msdn-id>\t\n            <unmanaged>HRESULT IMFByteStream::BeginWrite([In, Buffer] const unsigned char* pb,[In] unsigned int cb,[In] IMFAsyncCallback* pCallback,[In] IUnknown* punkState)</unmanaged>\t\n            <unmanaged-short>IMFByteStream::BeginWrite</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.IByteStream.EndWrite(SharpDX.MediaFoundation.AsyncResult)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Completes an asynchronous write operation.</p>\t\n            </summary>\t\n            <param name=\"resultRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.AsyncResult\"/></strong> interface. Pass in the same reference that your callback object received in the <strong><see cref=\"M:SharpDX.MediaFoundation.AsyncCallback.Invoke(SharpDX.MediaFoundation.AsyncResult)\"/></strong> method.</p> </dd></param>\t\n            <returns>The number of bytes that were written</returns>\t\n            <remarks>\t\n            <p> Call this method when the <strong><see cref=\"M:SharpDX.MediaFoundation.IByteStream.BeginWrite(System.Byte[],System.Int32,System.Int32,SharpDX.MediaFoundation.AsyncCallback,System.Object)\"/></strong> method completes asynchronously. </p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <msdn-id>ms703863</msdn-id>\t\n            <unmanaged>HRESULT IMFByteStream::EndWrite([In] IMFAsyncResult* pResult,[Out] unsigned int* pcbWritten)</unmanaged>\t\n            <unmanaged-short>IMFByteStream::EndWrite</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.IByteStream.Seek(SharpDX.MediaFoundation.ByteStreamSeekOrigin,System.Int64,System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Moves the current position in the stream by a specified offset.</p>\t\n            </summary>\t\n            <param name=\"seekOrigin\"><dd> <p> Specifies the origin of the seek as a member of the <strong><see cref=\"!:SharpDX.MediaFoundation.BytestreamSeekOrigin\"/></strong> enumeration. The offset is calculated relative to this position. </p> </dd></param>\t\n            <param name=\"llSeekOffset\"><dd> <p> Specifies the new position, as a byte offset from the seek origin. </p> </dd></param>\t\n            <param name=\"dwSeekFlags\"><dd> <p> Specifies zero or more flags. The following flags are defined. </p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td><dl> <dt><strong>MFBYTESTREAM_SEEK_FLAG_CANCEL_PENDING_IO</strong></dt> </dl> </td><td> <p> All pending I/O requests are canceled after the seek request completes successfully. </p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <returns>The new position after the seek</returns>\t\n            <remarks>\t\n            <p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <msdn-id>ms697053</msdn-id>\t\n            <unmanaged>HRESULT IMFByteStream::Seek([In] MFBYTESTREAM_SEEK_ORIGIN SeekOrigin,[In] longlong llSeekOffset,[In] unsigned int dwSeekFlags,[Out] unsigned longlong* pqwCurrentPosition)</unmanaged>\t\n            <unmanaged-short>IMFByteStream::Seek</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.IByteStream.Flush\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Clears any internal buffers used by the stream. If you are writing to the stream, the buffered data is written to the underlying file or device. </p>\t\n            </summary>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p> If the byte stream is read-only, this method has no effect.</p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <msdn-id>ms694833</msdn-id>\t\n            <unmanaged>HRESULT IMFByteStream::Flush()</unmanaged>\t\n            <unmanaged-short>IMFByteStream::Flush</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.IByteStream.Close\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Closes the stream and releases any resources associated with the stream, such as sockets or file handles. This method also cancels any pending asynchronous I/O requests. </p>\t\n            </summary>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <msdn-id>ms703909</msdn-id>\t\n            <unmanaged>HRESULT IMFByteStream::Close()</unmanaged>\t\n            <unmanaged-short>IMFByteStream::Close</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.IByteStream.Capabilities\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Retrieves the characteristics of the byte stream. </p>\t\n            </summary>\t\n            <returns>The capabilities of the stream.</returns>\t\n            <remarks>\t\n            <p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <msdn-id>ms698962</msdn-id>\t\n            <unmanaged>HRESULT IMFByteStream::GetCapabilities([Out] unsigned int* pdwCapabilities)</unmanaged>\t\n            <unmanaged-short>IMFByteStream::GetCapabilities</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.IByteStream.Length\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Retrieves the length of the stream. </p>\t\n            </summary>\t\n            <returns>The length of the stream, in bytes. If the length is unknown, this value is -1.</returns>\t\n            <remarks>\t\n            <p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <msdn-id>ms698941</msdn-id>\t\n            <unmanaged>HRESULT IMFByteStream::GetLength([Out] unsigned longlong* pqwLength)</unmanaged>\t\n            <unmanaged-short>IMFByteStream::GetLength</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.IByteStream.CurrentPosition\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Retrieves the current read or write position in the stream. </p>\t\n            </summary>\t\n            <returns>The current position, in bytes.</returns>\t\n            <remarks>\t\n            <p> The methods that update the current position are <strong>Read</strong>, <strong>BeginRead</strong>, <strong>Write</strong>, <strong>BeginWrite</strong>, <strong>SetCurrentPosition</strong>, and <strong>Seek</strong>. </p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <msdn-id>ms704059</msdn-id>\t\n            <unmanaged>HRESULT IMFByteStream::GetCurrentPosition([Out] unsigned longlong* pqwPosition)</unmanaged>\t\n            <unmanaged-short>IMFByteStream::GetCurrentPosition</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.IByteStream.IsEndOfStream\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Queries whether the current position has reached the end of the stream.</p>\t\n            </summary>\t\n            <returns>true if the end of the stream has been reached</returns>\t\n            <remarks>\t\n            <p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <msdn-id>ms697369</msdn-id>\t\n            <unmanaged>HRESULT IMFByteStream::IsEndOfStream([Out] BOOL* pfEndOfStream)</unmanaged>\t\n            <unmanaged-short>IMFByteStream::IsEndOfStream</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ByteStream.#ctor(System.IO.Stream)\">\n            <summary>\n            Instantiates a new instance <see cref=\"T:SharpDX.MediaFoundation.ByteStream\"/> from a <see cref=\"T:System.IO.Stream\"/>.\n            </summary>\n            <msdn-id>hh162754</msdn-id>\t\n            <unmanaged>HRESULT MFCreateMFByteStreamOnStreamEx([In] IUnknown* punkStream,[Out] IMFByteStream** ppByteStream)</unmanaged>\t\n            <unmanaged-short>MFCreateMFByteStreamOnStreamEx</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ByteStream.#ctor(System.Byte[])\">\n            <summary>\n            Instantiates a new instance <see cref=\"T:SharpDX.MediaFoundation.ByteStream\"/> from a <see cref=\"T:System.IO.Stream\"/>.\n            </summary>\n            <msdn-id>hh162754</msdn-id>\t\n            <unmanaged>HRESULT MFCreateMFByteStreamOnStreamEx([In] IUnknown* punkStream,[Out] IMFByteStream** ppByteStream)</unmanaged>\t\n            <unmanaged-short>MFCreateMFByteStreamOnStreamEx</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ByteStream.#ctor(SharpDX.Win32.ComStream)\">\n            <summary>\n            Instantiates a new instance <see cref=\"T:SharpDX.MediaFoundation.ByteStream\"/> from a <see cref=\"T:System.IO.Stream\"/>.\n            </summary>\n            <msdn-id>hh162754</msdn-id>\t\n            <unmanaged>HRESULT MFCreateMFByteStreamOnStreamEx([In] IUnknown* punkStream,[Out] IMFByteStream** ppByteStream)</unmanaged>\t\n            <unmanaged-short>MFCreateMFByteStreamOnStreamEx</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ByteStream.Read(System.Byte[],System.Int32,System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Reads data from the stream. </p>\t\n            </summary>\t\n            <param name=\"bRef\"><dd> <p> Pointer to a buffer that receives the data. The caller must allocate the buffer. </p> </dd></param>\n            <param name=\"offset\">Offset into the buffer.</param>\n            <param name=\"count\"><dd> <p> Size of the buffer in bytes. </p> </dd></param>\t\n            <returns>The number of bytes that are copied into the buffer</returns>\t\n            <remarks>\t\n            <p> This method reads at most <em>cb</em> bytes from the current position in the stream and copies them into the buffer provided by the caller. The number of bytes that were read is returned in the <em>pcbRead</em> parameter. The method does not return an error code on reaching the end of the file, so the application should check the value in <em>pcbRead</em> after the method returns. </p><p> This method is synchronous. It blocks until the read operation completes. </p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <msdn-id>ms698913</msdn-id>\t\n            <unmanaged>HRESULT IMFByteStream::Read([Out, Buffer] unsigned char* pb,[In] unsigned int cb,[Out] unsigned int* pcbRead)</unmanaged>\t\n            <unmanaged-short>IMFByteStream::Read</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ByteStream.BeginRead(System.Byte[],System.Int32,System.Int32,SharpDX.MediaFoundation.AsyncCallback,System.Object)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Begins an asynchronous read operation from the stream. </p>\t\n            </summary>\t\n            <param name=\"bRef\"><dd> <p> Pointer to a buffer that receives the data. The caller must allocate the buffer. </p> </dd></param>\t\n            <param name=\"cb\"><dd> <p> Size of the buffer in bytes. </p> </dd></param>\t\n            <param name=\"callbackRef\"><dd> <p> Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.AsyncCallback\"/></strong> interface of a callback object. The caller must implement this interface. </p> </dd></param>\t\n            <param name=\"context\"><dd> <p> Pointer to the <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interface of a state object, defined by the caller. This parameter can be <strong><c>null</c></strong>. You can use this object to hold state information. The object is returned to the caller when the callback is invoked. </p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p> When all of the data has been read into the buffer, the callback object's <strong><see cref=\"M:SharpDX.MediaFoundation.AsyncCallback.Invoke(SharpDX.MediaFoundation.AsyncResult)\"/></strong> method is called. At that point, the application should call <strong><see cref=\"M:SharpDX.MediaFoundation.IByteStream.EndRead(SharpDX.MediaFoundation.AsyncResult)\"/></strong> to complete the asynchronous request. </p><p> Do not read from, write to, free, or reallocate the buffer while an asynchronous read is pending. </p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <msdn-id>ms704810</msdn-id>\t\n            <unmanaged>HRESULT IMFByteStream::BeginRead([Out, Buffer] unsigned char* pb,[In] unsigned int cb,[In] IMFAsyncCallback* pCallback,[In] IUnknown* punkState)</unmanaged>\t\n            <unmanaged-short>IMFByteStream::BeginRead</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ByteStream.EndRead(SharpDX.MediaFoundation.AsyncResult)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Completes an asynchronous read operation. </p>\t\n            </summary>\t\n            <param name=\"resultRef\"><dd> <p> Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.AsyncResult\"/></strong> interface. Pass in the same reference that your callback object received in the <strong><see cref=\"M:SharpDX.MediaFoundation.AsyncCallback.Invoke(SharpDX.MediaFoundation.AsyncResult)\"/></strong> method. </p> </dd></param>\t\n            <returns>The number of bytes that were read</returns>\t\n            <remarks>\t\n            <p> Call this method after the <strong><see cref=\"M:SharpDX.MediaFoundation.IByteStream.BeginRead(System.Byte[],System.Int32,System.Int32,SharpDX.MediaFoundation.AsyncCallback,System.Object)\"/></strong> method completes asynchronously. </p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <msdn-id>ms704042</msdn-id>\t\n            <unmanaged>HRESULT IMFByteStream::EndRead([In] IMFAsyncResult* pResult,[Out] unsigned int* pcbRead)</unmanaged>\t\n            <unmanaged-short>IMFByteStream::EndRead</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ByteStream.Write(System.Byte[],System.Int32,System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Writes data to the stream.</p>\t\n            </summary>\t\n            <param name=\"bRef\"><dd> <p> Pointer to a buffer that contains the data to write. </p> </dd></param>\t\n            <param name=\"cb\"><dd> <p> Size of the buffer in bytes. </p> </dd></param>\t\n            <returns>The number of bytes that are written.</returns>\t\n            <remarks>\t\n            <p> This method writes the contents of the <em>pb</em> buffer to the stream, starting at the current stream position. The number of bytes that were written is returned in the <em>pcbWritten</em> parameter. </p><p> This method is synchronous. It blocks until the write operation completes. </p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <msdn-id>ms703843</msdn-id>\t\n            <unmanaged>HRESULT IMFByteStream::Write([In, Buffer] const unsigned char* pb,[In] unsigned int cb,[Out] unsigned int* pcbWritten)</unmanaged>\t\n            <unmanaged-short>IMFByteStream::Write</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ByteStream.BeginWrite(System.Byte[],System.Int32,System.Int32,SharpDX.MediaFoundation.AsyncCallback,System.Object)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Begins an asynchronous write operation to the stream. </p>\t\n            </summary>\t\n            <param name=\"bRef\"><dd> <p> Pointer to a buffer containing the data to write. </p> </dd></param>\t\n            <param name=\"cb\"><dd> <p> Size of the buffer in bytes. </p> </dd></param>\t\n            <param name=\"callbackRef\"><dd> <p> Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.AsyncCallback\"/></strong> interface of a callback object. The caller must implement this interface. </p> </dd></param>\t\n            <param name=\"context\"><dd> <p> Pointer to the <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interface of a state object, defined by the caller. This parameter can be <strong><c>null</c></strong>. You can use this object to hold state information. The object is returned to the caller when the callback is invoked. </p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p> When all of the data has been written to the stream, the callback object's <strong><see cref=\"M:SharpDX.MediaFoundation.AsyncCallback.Invoke(SharpDX.MediaFoundation.AsyncResult)\"/></strong> method is called. At that point, the application should call <strong><see cref=\"M:SharpDX.MediaFoundation.IByteStream.EndWrite(SharpDX.MediaFoundation.AsyncResult)\"/></strong> to complete the asynchronous request. </p><p> Do not reallocate, free, or write to the buffer while an asynchronous write is still pending. </p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <msdn-id>ms694005</msdn-id>\t\n            <unmanaged>HRESULT IMFByteStream::BeginWrite([In, Buffer] const unsigned char* pb,[In] unsigned int cb,[In] IMFAsyncCallback* pCallback,[In] IUnknown* punkState)</unmanaged>\t\n            <unmanaged-short>IMFByteStream::BeginWrite</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ByteStream.EndWrite(SharpDX.MediaFoundation.AsyncResult)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Completes an asynchronous write operation.</p>\t\n            </summary>\t\n            <param name=\"resultRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.AsyncResult\"/></strong> interface. Pass in the same reference that your callback object received in the <strong><see cref=\"M:SharpDX.MediaFoundation.AsyncCallback.Invoke(SharpDX.MediaFoundation.AsyncResult)\"/></strong> method.</p> </dd></param>\t\n            <returns>The number of bytes that were written</returns>\t\n            <remarks>\t\n            <p> Call this method when the <strong><see cref=\"M:SharpDX.MediaFoundation.IByteStream.BeginWrite(System.Byte[],System.Int32,System.Int32,SharpDX.MediaFoundation.AsyncCallback,System.Object)\"/></strong> method completes asynchronously. </p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <msdn-id>ms703863</msdn-id>\t\n            <unmanaged>HRESULT IMFByteStream::EndWrite([In] IMFAsyncResult* pResult,[Out] unsigned int* pcbWritten)</unmanaged>\t\n            <unmanaged-short>IMFByteStream::EndWrite</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ByteStream.Seek(SharpDX.MediaFoundation.ByteStreamSeekOrigin,System.Int64,System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Moves the current position in the stream by a specified offset.</p>\t\n            </summary>\t\n            <param name=\"seekOrigin\"><dd> <p> Specifies the origin of the seek as a member of the <strong><see cref=\"!:SharpDX.MediaFoundation.BytestreamSeekOrigin\"/></strong> enumeration. The offset is calculated relative to this position. </p> </dd></param>\t\n            <param name=\"llSeekOffset\"><dd> <p> Specifies the new position, as a byte offset from the seek origin. </p> </dd></param>\t\n            <param name=\"dwSeekFlags\"><dd> <p> Specifies zero or more flags. The following flags are defined. </p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td><dl> <dt><strong>MFBYTESTREAM_SEEK_FLAG_CANCEL_PENDING_IO</strong></dt> </dl> </td><td> <p> All pending I/O requests are canceled after the seek request completes successfully. </p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <returns>The new position after the seek</returns>\t\n            <remarks>\t\n            <p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <msdn-id>ms697053</msdn-id>\t\n            <unmanaged>HRESULT IMFByteStream::Seek([In] MFBYTESTREAM_SEEK_ORIGIN SeekOrigin,[In] longlong llSeekOffset,[In] unsigned int dwSeekFlags,[Out] unsigned longlong* pqwCurrentPosition)</unmanaged>\t\n            <unmanaged-short>IMFByteStream::Seek</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ByteStream.Flush\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Clears any internal buffers used by the stream. If you are writing to the stream, the buffered data is written to the underlying file or device. </p>\t\n            </summary>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p> If the byte stream is read-only, this method has no effect.</p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <msdn-id>ms694833</msdn-id>\t\n            <unmanaged>HRESULT IMFByteStream::Flush()</unmanaged>\t\n            <unmanaged-short>IMFByteStream::Flush</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ByteStream.Close\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Closes the stream and releases any resources associated with the stream, such as sockets or file handles. This method also cancels any pending asynchronous I/O requests. </p>\t\n            </summary>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <msdn-id>ms703909</msdn-id>\t\n            <unmanaged>HRESULT IMFByteStream::Close()</unmanaged>\t\n            <unmanaged-short>IMFByteStream::Close</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ByteStream.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.ByteStream\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ByteStream.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.ByteStream\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.ByteStream\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ByteStream.GetCapabilities_(System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Retrieves the characteristics of the byte stream. </p>\t\n            </summary>\t\n            <param name=\"dwCapabilitiesRef\"><dd> <p>Receives a bitwise <strong>OR</strong> of zero or more flags. The following flags are defined.</p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td><dl> <dt><strong>MFBYTESTREAM_IS_READABLE</strong></dt> <dt>0x00000001</dt> </dl> </td><td> <p> The byte stream can be read. </p> </td></tr> <tr><td><dl> <dt><strong>MFBYTESTREAM_IS_WRITABLE</strong></dt> <dt>0x00000002</dt> </dl> </td><td> <p> The byte stream can be written to. </p> </td></tr> <tr><td><dl> <dt><strong>MFBYTESTREAM_IS_SEEKABLE</strong></dt> <dt>0x00000004</dt> </dl> </td><td> <p> The byte stream can be seeked. </p> </td></tr> <tr><td><dl> <dt><strong>MFBYTESTREAM_IS_REMOTE</strong></dt> <dt>0x00000008</dt> </dl> </td><td> <p> The byte stream is from a remote source, such as a network. </p> </td></tr> <tr><td><dl> <dt><strong>MFBYTESTREAM_IS_DIRECTORY</strong></dt> <dt>0x00000080</dt> </dl> </td><td> <p> The byte stream represents a file directory. </p> </td></tr> <tr><td><dl> <dt><strong>MFBYTESTREAM_HAS_SLOW_SEEK</strong></dt> <dt>0x00000100</dt> </dl> </td><td> <p> Seeking within this stream might be slow. For example, the byte stream might download from a network.</p> </td></tr> <tr><td><dl> <dt><strong>MFBYTESTREAM_IS_PARTIALLY_DOWNLOADED</strong></dt> <dt>0x00000200</dt> </dl> </td><td> <p>The byte stream is currently downloading data to a local cache. Read operations on the byte stream might take longer until the data is completely downloaded.</p> <p>This flag is cleared after all of the data has been downloaded.</p> <p>If the <strong>MFBYTESTREAM_HAS_SLOW_SEEK</strong> flag is also set, it means the byte stream must download the entire file sequentially. Otherwise, the byte stream can respond to seek requests by restarting the download from a new point in the stream.</p> </td></tr> <tr><td><dl> <dt><strong>MFBYTESTREAM_SHARE_WRITE</strong></dt> <dt>0x00000400</dt> </dl> </td><td> <p>Another thread or process can open this byte stream for writing. If this flag is present, the length of thebyte stream could change while it is being read. </p> <p>This flag can affect the behavior of byte-stream handlers. For more information, see <see cref=\"F:SharpDX.MediaFoundation.ByteStreamAttributeKeys.HandlerAcceptsShareWrite\"/>.</p> <p><strong>Note</strong>??Requires Windows?7 or later.</p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFByteStream::GetCapabilities']/*\"/>\t\n            <msdn-id>ms698962</msdn-id>\t\n            <unmanaged>HRESULT IMFByteStream::GetCapabilities([Out] unsigned int* pdwCapabilities)</unmanaged>\t\n            <unmanaged-short>IMFByteStream::GetCapabilities</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ByteStream.GetLength_(System.Int64@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Retrieves the length of the stream. </p>\t\n            </summary>\t\n            <param name=\"qwLengthRef\"><dd> <p> Receives the length of the stream, in bytes. If the length is unknown, this value is -1. </p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFByteStream::GetLength']/*\"/>\t\n            <msdn-id>ms698941</msdn-id>\t\n            <unmanaged>HRESULT IMFByteStream::GetLength([Out] unsigned longlong* pqwLength)</unmanaged>\t\n            <unmanaged-short>IMFByteStream::GetLength</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ByteStream.SetLength_(System.Int64)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Sets the length of the stream.</p>\t\n            </summary>\t\n            <param name=\"qwLength\"><dd> <p> Length of the stream in bytes. </p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFByteStream::SetLength']/*\"/>\t\n            <msdn-id>ms697225</msdn-id>\t\n            <unmanaged>HRESULT IMFByteStream::SetLength([In] unsigned longlong qwLength)</unmanaged>\t\n            <unmanaged-short>IMFByteStream::SetLength</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ByteStream.GetCurrentPosition_(System.Int64@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Retrieves the current read or write position in the stream. </p>\t\n            </summary>\t\n            <param name=\"qwPositionRef\"><dd> <p> Receives the current position, in bytes. </p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p> The methods that update the current position are <strong>Read</strong>, <strong>BeginRead</strong>, <strong>Write</strong>, <strong>BeginWrite</strong>, <strong>SetCurrentPosition</strong>, and <strong>Seek</strong>. </p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFByteStream::GetCurrentPosition']/*\"/>\t\n            <msdn-id>ms704059</msdn-id>\t\n            <unmanaged>HRESULT IMFByteStream::GetCurrentPosition([Out] unsigned longlong* pqwPosition)</unmanaged>\t\n            <unmanaged-short>IMFByteStream::GetCurrentPosition</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ByteStream.SetCurrentPosition_(System.Int64)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Sets the current read or write position.</p>\t\n            </summary>\t\n            <param name=\"qwPosition\"><dd> <p>New position in the stream, as a byte offset from the start of the stream.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded. </p> </td></tr> <tr><td> <dl> <dt><strong>E_INVALIDARG</strong></dt> </dl> </td><td> <p> Invalid argument. </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> If the new position is larger than the length of the stream, the method returns E_INVALIDARG. </p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFByteStream::SetCurrentPosition']/*\"/>\t\n            <msdn-id>ms695238</msdn-id>\t\n            <unmanaged>HRESULT IMFByteStream::SetCurrentPosition([In] unsigned longlong qwPosition)</unmanaged>\t\n            <unmanaged-short>IMFByteStream::SetCurrentPosition</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ByteStream.IsEndOfStream_(SharpDX.Bool@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Queries whether the current position has reached the end of the stream.</p>\t\n            </summary>\t\n            <param name=\"fEndOfStreamRef\"><dd> <p> Receives the value <strong>TRUE</strong> if the end of the stream has been reached, or <strong><see cref=\"F:SharpDX.Result.False\"/></strong> otherwise. </p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFByteStream::IsEndOfStream']/*\"/>\t\n            <msdn-id>ms697369</msdn-id>\t\n            <unmanaged>HRESULT IMFByteStream::IsEndOfStream([Out] BOOL* pfEndOfStream)</unmanaged>\t\n            <unmanaged-short>IMFByteStream::IsEndOfStream</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ByteStream.Read_(System.IntPtr,System.Int32,System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Reads data from the stream. </p>\t\n            </summary>\t\n            <param name=\"bRef\"><dd> <p> Pointer to a buffer that receives the data. The caller must allocate the buffer. </p> </dd></param>\t\n            <param name=\"cb\"><dd> <p> Size of the buffer in bytes. </p> </dd></param>\t\n            <param name=\"cbReadRef\"><dd> <p> Receives the number of bytes that are copied into the buffer. This parameter cannot be <strong><c>null</c></strong>. </p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p> This method reads at most <em>cb</em> bytes from the current position in the stream and copies them into the buffer provided by the caller. The number of bytes that were read is returned in the <em>pcbRead</em> parameter. The method does not return an error code on reaching the end of the file, so the application should check the value in <em>pcbRead</em> after the method returns. </p><p> This method is synchronous. It blocks until the read operation completes. </p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFByteStream::Read']/*\"/>\t\n            <msdn-id>ms698913</msdn-id>\t\n            <unmanaged>HRESULT IMFByteStream::Read([In] void* pb,[In] unsigned int cb,[Out] unsigned int* pcbRead)</unmanaged>\t\n            <unmanaged-short>IMFByteStream::Read</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ByteStream.BeginRead_(System.IntPtr,System.Int32,SharpDX.MediaFoundation.AsyncCallback,System.IntPtr)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Begins an asynchronous read operation from the stream. </p>\t\n            </summary>\t\n            <param name=\"bRef\"><dd> <p> Pointer to a buffer that receives the data. The caller must allocate the buffer. </p> </dd></param>\t\n            <param name=\"cb\"><dd> <p> Size of the buffer in bytes. </p> </dd></param>\t\n            <param name=\"callbackRef\"><dd> <p> Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.AsyncCallback\"/></strong> interface of a callback object. The caller must implement this interface. </p> </dd></param>\t\n            <param name=\"unkStateRef\"><dd> <p> Pointer to the <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interface of a state object, defined by the caller. This parameter can be <strong><c>null</c></strong>. You can use this object to hold state information. The object is returned to the caller when the callback is invoked. </p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p> When all of the data has been read into the buffer, the callback object's <strong><see cref=\"M:SharpDX.MediaFoundation.AsyncCallback.Invoke(SharpDX.MediaFoundation.AsyncResult)\"/></strong> method is called. At that point, the application should call <strong><see cref=\"M:SharpDX.MediaFoundation.IByteStream.EndRead(SharpDX.MediaFoundation.AsyncResult)\"/></strong> to complete the asynchronous request. </p><p> Do not read from, write to, free, or reallocate the buffer while an asynchronous read is pending. </p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFByteStream::BeginRead']/*\"/>\t\n            <msdn-id>ms704810</msdn-id>\t\n            <unmanaged>HRESULT IMFByteStream::BeginRead([In] void* pb,[In] unsigned int cb,[In] IMFAsyncCallback* pCallback,[In] void* punkState)</unmanaged>\t\n            <unmanaged-short>IMFByteStream::BeginRead</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ByteStream.EndRead_(SharpDX.MediaFoundation.AsyncResult,System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Completes an asynchronous read operation. </p>\t\n            </summary>\t\n            <param name=\"resultRef\"><dd> <p> Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.AsyncResult\"/></strong> interface. Pass in the same reference that your callback object received in the <strong><see cref=\"M:SharpDX.MediaFoundation.AsyncCallback.Invoke(SharpDX.MediaFoundation.AsyncResult)\"/></strong> method. </p> </dd></param>\t\n            <param name=\"cbReadRef\"><dd> <p> Receives the number of bytes that were read. </p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p> Call this method after the <strong><see cref=\"M:SharpDX.MediaFoundation.IByteStream.BeginRead(System.Byte[],System.Int32,System.Int32,SharpDX.MediaFoundation.AsyncCallback,System.Object)\"/></strong> method completes asynchronously. </p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFByteStream::EndRead']/*\"/>\t\n            <msdn-id>ms704042</msdn-id>\t\n            <unmanaged>HRESULT IMFByteStream::EndRead([In] IMFAsyncResult* pResult,[Out] unsigned int* pcbRead)</unmanaged>\t\n            <unmanaged-short>IMFByteStream::EndRead</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ByteStream.Write_(System.IntPtr,System.Int32,System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Writes data to the stream.</p>\t\n            </summary>\t\n            <param name=\"bRef\"><dd> <p> Pointer to a buffer that contains the data to write. </p> </dd></param>\t\n            <param name=\"cb\"><dd> <p> Size of the buffer in bytes. </p> </dd></param>\t\n            <param name=\"cbWrittenRef\"><dd> <p> Receives the number of bytes that are written. </p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p> This method writes the contents of the <em>pb</em> buffer to the stream, starting at the current stream position. The number of bytes that were written is returned in the <em>pcbWritten</em> parameter. </p><p> This method is synchronous. It blocks until the write operation completes. </p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFByteStream::Write']/*\"/>\t\n            <msdn-id>ms703843</msdn-id>\t\n            <unmanaged>HRESULT IMFByteStream::Write([In] const void* pb,[In] unsigned int cb,[Out] unsigned int* pcbWritten)</unmanaged>\t\n            <unmanaged-short>IMFByteStream::Write</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ByteStream.BeginWrite_(System.IntPtr,System.Int32,SharpDX.MediaFoundation.AsyncCallback,System.IntPtr)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Begins an asynchronous write operation to the stream. </p>\t\n            </summary>\t\n            <param name=\"bRef\"><dd> <p> Pointer to a buffer containing the data to write. </p> </dd></param>\t\n            <param name=\"cb\"><dd> <p> Size of the buffer in bytes. </p> </dd></param>\t\n            <param name=\"callbackRef\"><dd> <p> Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.AsyncCallback\"/></strong> interface of a callback object. The caller must implement this interface. </p> </dd></param>\t\n            <param name=\"unkStateRef\"><dd> <p> Pointer to the <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interface of a state object, defined by the caller. This parameter can be <strong><c>null</c></strong>. You can use this object to hold state information. The object is returned to the caller when the callback is invoked. </p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p> When all of the data has been written to the stream, the callback object's <strong><see cref=\"M:SharpDX.MediaFoundation.AsyncCallback.Invoke(SharpDX.MediaFoundation.AsyncResult)\"/></strong> method is called. At that point, the application should call <strong><see cref=\"M:SharpDX.MediaFoundation.IByteStream.EndWrite(SharpDX.MediaFoundation.AsyncResult)\"/></strong> to complete the asynchronous request. </p><p> Do not reallocate, free, or write to the buffer while an asynchronous write is still pending. </p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFByteStream::BeginWrite']/*\"/>\t\n            <msdn-id>ms694005</msdn-id>\t\n            <unmanaged>HRESULT IMFByteStream::BeginWrite([In] const void* pb,[In] unsigned int cb,[In] IMFAsyncCallback* pCallback,[In] void* punkState)</unmanaged>\t\n            <unmanaged-short>IMFByteStream::BeginWrite</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ByteStream.EndWrite_(SharpDX.MediaFoundation.AsyncResult,System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Completes an asynchronous write operation.</p>\t\n            </summary>\t\n            <param name=\"resultRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.AsyncResult\"/></strong> interface. Pass in the same reference that your callback object received in the <strong><see cref=\"M:SharpDX.MediaFoundation.AsyncCallback.Invoke(SharpDX.MediaFoundation.AsyncResult)\"/></strong> method.</p> </dd></param>\t\n            <param name=\"cbWrittenRef\"><dd> <p> Receives the number of bytes that were written. </p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p> Call this method when the <strong><see cref=\"M:SharpDX.MediaFoundation.IByteStream.BeginWrite(System.Byte[],System.Int32,System.Int32,SharpDX.MediaFoundation.AsyncCallback,System.Object)\"/></strong> method completes asynchronously. </p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFByteStream::EndWrite']/*\"/>\t\n            <msdn-id>ms703863</msdn-id>\t\n            <unmanaged>HRESULT IMFByteStream::EndWrite([In] IMFAsyncResult* pResult,[Out] unsigned int* pcbWritten)</unmanaged>\t\n            <unmanaged-short>IMFByteStream::EndWrite</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ByteStream.Seek_(SharpDX.MediaFoundation.ByteStreamSeekOrigin,System.Int64,System.Int32,System.Int64@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Moves the current position in the stream by a specified offset.</p>\t\n            </summary>\t\n            <param name=\"seekOrigin\"><dd> <p> Specifies the origin of the seek as a member of the <strong><see cref=\"T:SharpDX.MediaFoundation.ByteStreamSeekOrigin\"/></strong> enumeration. The offset is calculated relative to this position. </p> </dd></param>\t\n            <param name=\"llSeekOffset\"><dd> <p> Specifies the new position, as a byte offset from the seek origin. </p> </dd></param>\t\n            <param name=\"dwSeekFlags\"><dd> <p> Specifies zero or more flags. The following flags are defined. </p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td><dl> <dt><strong>MFBYTESTREAM_SEEK_FLAG_CANCEL_PENDING_IO</strong></dt> </dl> </td><td> <p> All pending I/O requests are canceled after the seek request completes successfully. </p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <param name=\"qwCurrentPositionRef\"><dd> <p> Receives the new position after the seek. </p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFByteStream::Seek']/*\"/>\t\n            <msdn-id>ms697053</msdn-id>\t\n            <unmanaged>HRESULT IMFByteStream::Seek([In] MFBYTESTREAM_SEEK_ORIGIN SeekOrigin,[In] longlong llSeekOffset,[In] unsigned int dwSeekFlags,[Out, Optional] unsigned longlong* pqwCurrentPosition)</unmanaged>\t\n            <unmanaged-short>IMFByteStream::Seek</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ByteStream.Flush_\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Clears any internal buffers used by the stream. If you are writing to the stream, the buffered data is written to the underlying file or device. </p>\t\n            </summary>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p> If the byte stream is read-only, this method has no effect.</p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFByteStream::Flush']/*\"/>\t\n            <msdn-id>ms694833</msdn-id>\t\n            <unmanaged>HRESULT IMFByteStream::Flush()</unmanaged>\t\n            <unmanaged-short>IMFByteStream::Flush</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ByteStream.Close_\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Closes the stream and releases any resources associated with the stream, such as sockets or file handles. This method also cancels any pending asynchronous I/O requests. </p>\t\n            </summary>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFByteStream::Close']/*\"/>\t\n            <msdn-id>ms703909</msdn-id>\t\n            <unmanaged>HRESULT IMFByteStream::Close()</unmanaged>\t\n            <unmanaged-short>IMFByteStream::Close</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.ByteStream.Capabilities\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Retrieves the characteristics of the byte stream. </p>\t\n            </summary>\t\n            <returns>The capabilities of the stream.</returns>\t\n            <remarks>\t\n            <p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <msdn-id>ms698962</msdn-id>\t\n            <unmanaged>HRESULT IMFByteStream::GetCapabilities([Out] unsigned int* pdwCapabilities)</unmanaged>\t\n            <unmanaged-short>IMFByteStream::GetCapabilities</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.ByteStream.Length\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Retrieves the length of the stream. </p>\t\n            </summary>\t\n            <returns>The length of the stream, in bytes. If the length is unknown, this value is -1.</returns>\t\n            <remarks>\t\n            <p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <msdn-id>ms698941</msdn-id>\t\n            <unmanaged>HRESULT IMFByteStream::GetLength([Out] unsigned longlong* pqwLength)</unmanaged>\t\n            <unmanaged-short>IMFByteStream::GetLength</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.ByteStream.CurrentPosition\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Retrieves the current read or write position in the stream. </p>\t\n            </summary>\t\n            <returns>The current position, in bytes.</returns>\t\n            <remarks>\t\n            <p> The methods that update the current position are <strong>Read</strong>, <strong>BeginRead</strong>, <strong>Write</strong>, <strong>BeginWrite</strong>, <strong>SetCurrentPosition</strong>, and <strong>Seek</strong>. </p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <msdn-id>ms704059</msdn-id>\t\n            <unmanaged>HRESULT IMFByteStream::GetCurrentPosition([Out] unsigned longlong* pqwPosition)</unmanaged>\t\n            <unmanaged-short>IMFByteStream::GetCurrentPosition</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.ByteStream.IsEndOfStream\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Queries whether the current position has reached the end of the stream.</p>\t\n            </summary>\t\n            <returns>true if the end of the stream has been reached</returns>\t\n            <remarks>\t\n            <p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <msdn-id>ms697369</msdn-id>\t\n            <unmanaged>HRESULT IMFByteStream::IsEndOfStream([Out] BOOL* pfEndOfStream)</unmanaged>\t\n            <unmanaged-short>IMFByteStream::IsEndOfStream</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.NamespaceDoc\">\n            <summary>\n            The <see cref=\"N:SharpDX.MediaFoundation.DirectX\"/> namespace provides a managed MediaFoundation for DirectX integration API.\n            </summary>\n            <msdn-id></msdn-id>\n            <unmanaged>MediaFoundation</unmanaged>\t\n            <unmanaged-short>MediaFoundation</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.AlphaFillMode\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Specifies how the output alpha values are calculated for Microsoft DirectX Video Acceleration High Definition (DXVA-HD) blit operations.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The <strong>Mode</strong> member of the <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.BlitStateAlphaFillData\"/></strong> structure has this enumeration type. That member specifies the alpha-fill mode for the input stream identified by the <strong>StreamNumber</strong> member of the same structure. To set the alpha-fill mode, call  <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.HDVideoProcessor.SetVideoProcessBltState(SharpDX.MediaFoundation.DirectX.BlitState,System.Int32,System.IntPtr)\"/></strong>.</p><p>To find out which modes the device supports, call the <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.HDDevice.GetVideoProcessorDeviceCaps(SharpDX.MediaFoundation.DirectX.Vpdevcaps@)\"/></strong> method. If the device sets the <strong><see cref=\"F:SharpDX.MediaFoundation.DirectX.FeatureCaps.AlphaFill\"/></strong> flag in the <strong>FeatureCaps</strong> member of the <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.Vpdevcaps\"/></strong> structure, the DXVA-HD device supports any of the modes listed here. Otherwise, the alpha-fill mode must be <strong><see cref=\"F:SharpDX.MediaFoundation.DirectX.AlphaFillMode.Opaque\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_ALPHA_FILL_MODE']/*\"/>\t\n            <msdn-id>dd318388</msdn-id>\t\n            <unmanaged>DXVAHD_ALPHA_FILL_MODE</unmanaged>\t\n            <unmanaged-short>DXVAHD_ALPHA_FILL_MODE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.AlphaFillMode.Opaque\">\n            <summary>\t\n            <dd> <p>Alpha values inside the target rectangle are set to opaque.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_ALPHA_FILL_MODE_OPAQUE']/*\"/>\t\n            <msdn-id>dd318388</msdn-id>\t\n            <unmanaged>DXVAHD_ALPHA_FILL_MODE_OPAQUE</unmanaged>\t\n            <unmanaged-short>DXVAHD_ALPHA_FILL_MODE_OPAQUE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.AlphaFillMode.Background\">\n            <summary>\t\n            <dd> <p>Alpha values inside the target rectangle are set to the alpha value specified in the background color. See <strong><see cref=\"F:SharpDX.MediaFoundation.DirectX.BlitState.BackgroundColor\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_ALPHA_FILL_MODE_BACKGROUND']/*\"/>\t\n            <msdn-id>dd318388</msdn-id>\t\n            <unmanaged>DXVAHD_ALPHA_FILL_MODE_BACKGROUND</unmanaged>\t\n            <unmanaged-short>DXVAHD_ALPHA_FILL_MODE_BACKGROUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.AlphaFillMode.Destination\">\n            <summary>\t\n            <dd> <p>Existing alpha values remain unchanged in the output surface.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_ALPHA_FILL_MODE_DESTINATION']/*\"/>\t\n            <msdn-id>dd318388</msdn-id>\t\n            <unmanaged>DXVAHD_ALPHA_FILL_MODE_DESTINATION</unmanaged>\t\n            <unmanaged-short>DXVAHD_ALPHA_FILL_MODE_DESTINATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.AlphaFillMode.SourceStream\">\n            <summary>\t\n            <dd> <p>Alpha values from the input stream  are scaled and copied to the corresponding destination rectangle for that stream. If the input stream does not have alpha data, the DXVA-HD device sets the alpha values in the target rectangle to an opaque value. If the input stream is disabled or the source rectangle is empty, the alpha values in the target rectangle are not modified.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_ALPHA_FILL_MODE_SOURCE_STREAM']/*\"/>\t\n            <msdn-id>dd318388</msdn-id>\t\n            <unmanaged>DXVAHD_ALPHA_FILL_MODE_SOURCE_STREAM</unmanaged>\t\n            <unmanaged-short>DXVAHD_ALPHA_FILL_MODE_SOURCE_STREAM</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.BlitState\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Specifies whether the output is downsampled in a  blit operation, when using Microsoft DirectX Video Acceleration High Definition (DXVA-HD).</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>If the <strong>Enable</strong> member is <strong>TRUE</strong>, the device downsamples the composed target rectangle  to the size given in the <strong>Size</strong> member, and then scales it back to the size of the target rectangle.</p><p>The width and height of <strong>Size</strong> must be greater than zero. If the size is larger than the target rectangle, downsampling does not occur.</p><p>To use this state, the device must support downsampling, indicated by the <strong><see cref=\"F:SharpDX.MediaFoundation.DirectX.FeatureCaps.Constriction\"/></strong> capability flag. To query for this capability, call <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.HDDevice.GetVideoProcessorDeviceCaps(SharpDX.MediaFoundation.DirectX.Vpdevcaps@)\"/></strong>. If the device supports downsampling, it sets the <strong><see cref=\"F:SharpDX.MediaFoundation.DirectX.FeatureCaps.Constriction\"/></strong> flag in the <strong>FeatureCaps</strong> member of the <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.Vpdevcaps\"/></strong> structure. </p><p>If the device does not support downsampling, the <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.HDVideoProcessor.SetVideoProcessBltState(SharpDX.MediaFoundation.DirectX.BlitState,System.Int32,System.IntPtr)\"/></strong> method fails for this state.</p><p>Downsampling is sometimes used to reduce the quality of premium content when other forms of content protection are not available.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_BLT_STATE']/*\"/>\t\n            <msdn-id>dd318394</msdn-id>\t\n            <unmanaged>DXVAHD_BLT_STATE</unmanaged>\t\n            <unmanaged-short>DXVAHD_BLT_STATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.BlitState.TargetRectangle\">\n            <summary>\t\n            <dd> <p>If <strong>TRUE</strong>, downsampling is enabled<strong></strong>. Otherwise, downsampling is disabled and the <strong>Size</strong> member is ignored. The default state value is <strong><see cref=\"F:SharpDX.Result.False\"/></strong> (downsampling is disabled).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_BLT_STATE_TARGET_RECT']/*\"/>\t\n            <msdn-id>dd318394</msdn-id>\t\n            <unmanaged>DXVAHD_BLT_STATE_TARGET_RECT</unmanaged>\t\n            <unmanaged-short>DXVAHD_BLT_STATE_TARGET_RECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.BlitState.BackgroundColor\">\n            <summary>\t\n            <dd> <p>The sampling size. The default value is (1,1).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_BLT_STATE_BACKGROUND_COLOR']/*\"/>\t\n            <msdn-id>dd318394</msdn-id>\t\n            <unmanaged>DXVAHD_BLT_STATE_BACKGROUND_COLOR</unmanaged>\t\n            <unmanaged-short>DXVAHD_BLT_STATE_BACKGROUND_COLOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.BlitState.OutputColorSpace\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_BLT_STATE_OUTPUT_COLOR_SPACE']/*\"/>\t\n            <unmanaged>DXVAHD_BLT_STATE_OUTPUT_COLOR_SPACE</unmanaged>\t\n            <unmanaged-short>DXVAHD_BLT_STATE_OUTPUT_COLOR_SPACE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.BlitState.AlphaFill\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_BLT_STATE_ALPHA_FILL']/*\"/>\t\n            <unmanaged>DXVAHD_BLT_STATE_ALPHA_FILL</unmanaged>\t\n            <unmanaged-short>DXVAHD_BLT_STATE_ALPHA_FILL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.BlitState.Constriction\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_BLT_STATE_CONSTRICTION']/*\"/>\t\n            <unmanaged>DXVAHD_BLT_STATE_CONSTRICTION</unmanaged>\t\n            <unmanaged-short>DXVAHD_BLT_STATE_CONSTRICTION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.BlitState.Private\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_BLT_STATE_PRIVATE']/*\"/>\t\n            <unmanaged>DXVAHD_BLT_STATE_PRIVATE</unmanaged>\t\n            <unmanaged-short>DXVAHD_BLT_STATE_PRIVATE</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.CompressedBufferType\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='__MIDL___MIDL_itf_dxva2api_0000_0000_0012']/*\"/>\t\n            <unmanaged>__MIDL___MIDL_itf_dxva2api_0000_0000_0012</unmanaged>\t\n            <unmanaged-short>__MIDL___MIDL_itf_dxva2api_0000_0000_0012</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.CompressedBufferType.PictureParameters\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_PictureParametersBufferType']/*\"/>\t\n            <unmanaged>DXVA2_PictureParametersBufferType</unmanaged>\t\n            <unmanaged-short>DXVA2_PictureParametersBufferType</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.CompressedBufferType.MacroBlockControl\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_MacroBlockControlBufferType']/*\"/>\t\n            <unmanaged>DXVA2_MacroBlockControlBufferType</unmanaged>\t\n            <unmanaged-short>DXVA2_MacroBlockControlBufferType</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.CompressedBufferType.ResidualDifference\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_ResidualDifferenceBufferType']/*\"/>\t\n            <unmanaged>DXVA2_ResidualDifferenceBufferType</unmanaged>\t\n            <unmanaged-short>DXVA2_ResidualDifferenceBufferType</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.CompressedBufferType.DeblockingControl\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_DeblockingControlBufferType']/*\"/>\t\n            <unmanaged>DXVA2_DeblockingControlBufferType</unmanaged>\t\n            <unmanaged-short>DXVA2_DeblockingControlBufferType</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.CompressedBufferType.InverseQuantizationMatrix\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_InverseQuantizationMatrixBufferType']/*\"/>\t\n            <unmanaged>DXVA2_InverseQuantizationMatrixBufferType</unmanaged>\t\n            <unmanaged-short>DXVA2_InverseQuantizationMatrixBufferType</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.CompressedBufferType.SliceControl\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_SliceControlBufferType']/*\"/>\t\n            <unmanaged>DXVA2_SliceControlBufferType</unmanaged>\t\n            <unmanaged-short>DXVA2_SliceControlBufferType</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.CompressedBufferType.BitStreamDate\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_BitStreamDateBufferType']/*\"/>\t\n            <unmanaged>DXVA2_BitStreamDateBufferType</unmanaged>\t\n            <unmanaged-short>DXVA2_BitStreamDateBufferType</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.CompressedBufferType.Dxva2MotionVectorBuffer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_MotionVectorBuffer']/*\"/>\t\n            <unmanaged>DXVA2_MotionVectorBuffer</unmanaged>\t\n            <unmanaged-short>DXVA2_MotionVectorBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.CompressedBufferType.Dxva2FilmGrainBuffer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_FilmGrainBuffer']/*\"/>\t\n            <unmanaged>DXVA2_FilmGrainBuffer</unmanaged>\t\n            <unmanaged-short>DXVA2_FilmGrainBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.DeinterlaceTechnology\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='__MIDL___MIDL_itf_dxva2api_0000_0000_0003']/*\"/>\t\n            <unmanaged>__MIDL___MIDL_itf_dxva2api_0000_0000_0003</unmanaged>\t\n            <unmanaged-short>__MIDL___MIDL_itf_dxva2api_0000_0000_0003</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.DeinterlaceTechnology.Unknown\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_DeinterlaceTech_Unknown']/*\"/>\t\n            <unmanaged>DXVA2_DeinterlaceTech_Unknown</unmanaged>\t\n            <unmanaged-short>DXVA2_DeinterlaceTech_Unknown</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.DeinterlaceTechnology.BOBLineReplicate\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_DeinterlaceTech_BOBLineReplicate']/*\"/>\t\n            <unmanaged>DXVA2_DeinterlaceTech_BOBLineReplicate</unmanaged>\t\n            <unmanaged-short>DXVA2_DeinterlaceTech_BOBLineReplicate</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.DeinterlaceTechnology.BOBVerticalStretch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_DeinterlaceTech_BOBVerticalStretch']/*\"/>\t\n            <unmanaged>DXVA2_DeinterlaceTech_BOBVerticalStretch</unmanaged>\t\n            <unmanaged-short>DXVA2_DeinterlaceTech_BOBVerticalStretch</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.DeinterlaceTechnology.BOBVerticalStretch4Tap\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_DeinterlaceTech_BOBVerticalStretch4Tap']/*\"/>\t\n            <unmanaged>DXVA2_DeinterlaceTech_BOBVerticalStretch4Tap</unmanaged>\t\n            <unmanaged-short>DXVA2_DeinterlaceTech_BOBVerticalStretch4Tap</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.DeinterlaceTechnology.MedianFiltering\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_DeinterlaceTech_MedianFiltering']/*\"/>\t\n            <unmanaged>DXVA2_DeinterlaceTech_MedianFiltering</unmanaged>\t\n            <unmanaged-short>DXVA2_DeinterlaceTech_MedianFiltering</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.DeinterlaceTechnology.EdgeFiltering\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_DeinterlaceTech_EdgeFiltering']/*\"/>\t\n            <unmanaged>DXVA2_DeinterlaceTech_EdgeFiltering</unmanaged>\t\n            <unmanaged-short>DXVA2_DeinterlaceTech_EdgeFiltering</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.DeinterlaceTechnology.FieldAdaptive\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_DeinterlaceTech_FieldAdaptive']/*\"/>\t\n            <unmanaged>DXVA2_DeinterlaceTech_FieldAdaptive</unmanaged>\t\n            <unmanaged-short>DXVA2_DeinterlaceTech_FieldAdaptive</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.DeinterlaceTechnology.PixelAdaptive\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_DeinterlaceTech_PixelAdaptive']/*\"/>\t\n            <unmanaged>DXVA2_DeinterlaceTech_PixelAdaptive</unmanaged>\t\n            <unmanaged-short>DXVA2_DeinterlaceTech_PixelAdaptive</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.DeinterlaceTechnology.MotionVectorSteered\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_DeinterlaceTech_MotionVectorSteered']/*\"/>\t\n            <unmanaged>DXVA2_DeinterlaceTech_MotionVectorSteered</unmanaged>\t\n            <unmanaged-short>DXVA2_DeinterlaceTech_MotionVectorSteered</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.DeinterlaceTechnology.InverseTelecine\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_DeinterlaceTech_InverseTelecine']/*\"/>\t\n            <unmanaged>DXVA2_DeinterlaceTech_InverseTelecine</unmanaged>\t\n            <unmanaged-short>DXVA2_DeinterlaceTech_InverseTelecine</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.DetailFilterTechnology\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='__MIDL___MIDL_itf_dxva2api_0000_0000_0006']/*\"/>\t\n            <unmanaged>__MIDL___MIDL_itf_dxva2api_0000_0000_0006</unmanaged>\t\n            <unmanaged-short>__MIDL___MIDL_itf_dxva2api_0000_0000_0006</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.DetailFilterTechnology.DetailTechUnsupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_DetailFilterTech_Unsupported']/*\"/>\t\n            <unmanaged>DXVA2_DetailFilterTech_Unsupported</unmanaged>\t\n            <unmanaged-short>DXVA2_DetailFilterTech_Unsupported</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.DetailFilterTechnology.DetailTechUnknown\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_DetailFilterTech_Unknown']/*\"/>\t\n            <unmanaged>DXVA2_DetailFilterTech_Unknown</unmanaged>\t\n            <unmanaged-short>DXVA2_DetailFilterTech_Unknown</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.DetailFilterTechnology.DetailTechEdge\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_DetailFilterTech_Edge']/*\"/>\t\n            <unmanaged>DXVA2_DetailFilterTech_Edge</unmanaged>\t\n            <unmanaged-short>DXVA2_DetailFilterTech_Edge</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.DetailFilterTechnology.DetailTechSharpening\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_DetailFilterTech_Sharpening']/*\"/>\t\n            <unmanaged>DXVA2_DetailFilterTech_Sharpening</unmanaged>\t\n            <unmanaged-short>DXVA2_DetailFilterTech_Sharpening</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.DeviceCaps\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Defines video processing capabilities for a Microsoft DirectX Video Acceleration High Definition (DXVA-HD) device.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_DEVICE_CAPS']/*\"/>\t\n            <msdn-id>dd318415</msdn-id>\t\n            <unmanaged>DXVAHD_DEVICE_CAPS</unmanaged>\t\n            <unmanaged-short>DXVAHD_DEVICE_CAPS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.DeviceCaps.LinearSpace\">\n            <summary>\t\n            <dd> <p>The device can blend video content in linear color space. Most video content is gamma corrected, resulting in nonlinear values. If the DXVA-HD device sets this flag, it means the device converts colors to linear space before blending, which produces better results.\t\n            </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_DEVICE_CAPS_LINEAR_SPACE']/*\"/>\t\n            <msdn-id>dd318415</msdn-id>\t\n            <unmanaged>DXVAHD_DEVICE_CAPS_LINEAR_SPACE</unmanaged>\t\n            <unmanaged-short>DXVAHD_DEVICE_CAPS_LINEAR_SPACE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.DeviceCaps.XvYCC\">\n            <summary>\t\n            <dd> <p>The device supports the xvYCC color space for YCbCr data.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_DEVICE_CAPS_xvYCC']/*\"/>\t\n            <msdn-id>dd318415</msdn-id>\t\n            <unmanaged>DXVAHD_DEVICE_CAPS_xvYCC</unmanaged>\t\n            <unmanaged-short>DXVAHD_DEVICE_CAPS_xvYCC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.DeviceCaps.RgbRangeConversion\">\n            <summary>\t\n            <dd> <p>The device can perform range conversion when the input and output are both RGB but use different color ranges (0-255 or 16-235, for 8-bit RGB).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_DEVICE_CAPS_RGB_RANGE_CONVERSION']/*\"/>\t\n            <msdn-id>dd318415</msdn-id>\t\n            <unmanaged>DXVAHD_DEVICE_CAPS_RGB_RANGE_CONVERSION</unmanaged>\t\n            <unmanaged-short>DXVAHD_DEVICE_CAPS_RGB_RANGE_CONVERSION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.DeviceCaps.YCbCrMatrixConversion\">\n            <summary>\t\n            <dd> <p>The device can apply a matrix conversion to YCbCr values when the input and output are both YCbCr. For example, the driver can convert colors from BT.601 to BT.709.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_DEVICE_CAPS_YCbCr_MATRIX_CONVERSION']/*\"/>\t\n            <msdn-id>dd318415</msdn-id>\t\n            <unmanaged>DXVAHD_DEVICE_CAPS_YCbCr_MATRIX_CONVERSION</unmanaged>\t\n            <unmanaged-short>DXVAHD_DEVICE_CAPS_YCbCr_MATRIX_CONVERSION</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.DeviceType\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Specifies the type of Microsoft DirectX Video Acceleration High Definition (DXVA-HD) device.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_DEVICE_TYPE']/*\"/>\t\n            <msdn-id>dd318417</msdn-id>\t\n            <unmanaged>DXVAHD_DEVICE_TYPE</unmanaged>\t\n            <unmanaged-short>DXVAHD_DEVICE_TYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.DeviceType.Hardware\">\n            <summary>\t\n            <dd> <p>Hardware device. Video processing is performed in the GPU by the driver.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_DEVICE_TYPE_HARDWARE']/*\"/>\t\n            <msdn-id>dd318417</msdn-id>\t\n            <unmanaged>DXVAHD_DEVICE_TYPE_HARDWARE</unmanaged>\t\n            <unmanaged-short>DXVAHD_DEVICE_TYPE_HARDWARE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.DeviceType.Software\">\n            <summary>\t\n            <dd> <p>Software device. Video processing is performed in the CPU by a software plug-in.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_DEVICE_TYPE_SOFTWARE']/*\"/>\t\n            <msdn-id>dd318417</msdn-id>\t\n            <unmanaged>DXVAHD_DEVICE_TYPE_SOFTWARE</unmanaged>\t\n            <unmanaged-short>DXVAHD_DEVICE_TYPE_SOFTWARE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.DeviceType.Reference\">\n            <summary>\t\n            <dd> <p>Reference device. Video processing is performed in the CPU by a software plug-in.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_DEVICE_TYPE_REFERENCE']/*\"/>\t\n            <msdn-id>dd318417</msdn-id>\t\n            <unmanaged>DXVAHD_DEVICE_TYPE_REFERENCE</unmanaged>\t\n            <unmanaged-short>DXVAHD_DEVICE_TYPE_REFERENCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.DeviceType.Other\">\n            <summary>\t\n            <dd> <p>Other. The device is neither a hardware device nor a software plug-in.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_DEVICE_TYPE_OTHER']/*\"/>\t\n            <msdn-id>dd318417</msdn-id>\t\n            <unmanaged>DXVAHD_DEVICE_TYPE_OTHER</unmanaged>\t\n            <unmanaged-short>DXVAHD_DEVICE_TYPE_OTHER</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.DeviceUsage\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Specifies the intended use for a Microsoft DirectX Video Acceleration High Definition (DXVA-HD) device.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The graphics driver uses one of these enumeration constants as a hint when it creates the DXVA-HD device.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_DEVICE_USAGE']/*\"/>\t\n            <msdn-id>dd318420</msdn-id>\t\n            <unmanaged>DXVAHD_DEVICE_USAGE</unmanaged>\t\n            <unmanaged-short>DXVAHD_DEVICE_USAGE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.DeviceUsage.PlaybackNormal\">\n            <summary>\t\n            <dd> <p>Normal video playback. The graphics driver should expose a set of capabilities that are appropriate for real-time video playback.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_DEVICE_USAGE_PLAYBACK_NORMAL']/*\"/>\t\n            <msdn-id>dd318420</msdn-id>\t\n            <unmanaged>DXVAHD_DEVICE_USAGE_PLAYBACK_NORMAL</unmanaged>\t\n            <unmanaged-short>DXVAHD_DEVICE_USAGE_PLAYBACK_NORMAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.DeviceUsage.OptimalSpeed\">\n            <summary>\t\n            <dd> <p>Optimal speed.  The graphics driver should expose a minimal set of capabilities that are optimized for performance.</p> <p>Use this setting if you want better performance and can accept some reduction in video quality. For example, you might use this setting in power-saving mode or to play video thumbnails.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_DEVICE_USAGE_OPTIMAL_SPEED']/*\"/>\t\n            <msdn-id>dd318420</msdn-id>\t\n            <unmanaged>DXVAHD_DEVICE_USAGE_OPTIMAL_SPEED</unmanaged>\t\n            <unmanaged-short>DXVAHD_DEVICE_USAGE_OPTIMAL_SPEED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.DeviceUsage.OptimalQuality\">\n            <summary>\t\n            <dd> <p>Optimal quality. The grahics driver should expose its maximum set of capabilities.</p> <p>Specify this setting to get the best video quality possible. It is appropriate for tasks such as video editing, when quality is more important than speed. It is not appropriate for real-time playback.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_DEVICE_USAGE_OPTIMAL_QUALITY']/*\"/>\t\n            <msdn-id>dd318420</msdn-id>\t\n            <unmanaged>DXVAHD_DEVICE_USAGE_OPTIMAL_QUALITY</unmanaged>\t\n            <unmanaged-short>DXVAHD_DEVICE_USAGE_OPTIMAL_QUALITY</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.FeatureCaps\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Defines features that a Microsoft DirectX Video Acceleration High Definition (DXVA-HD) device can support.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_FEATURE_CAPS']/*\"/>\t\n            <msdn-id>dd318422</msdn-id>\t\n            <unmanaged>DXVAHD_FEATURE_CAPS</unmanaged>\t\n            <unmanaged-short>DXVAHD_FEATURE_CAPS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.FeatureCaps.AlphaFill\">\n            <summary>\t\n            <dd> <p>The device can set the alpha values on the video output. See <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.BlitStateAlphaFillData\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_FEATURE_CAPS_ALPHA_FILL']/*\"/>\t\n            <msdn-id>dd318422</msdn-id>\t\n            <unmanaged>DXVAHD_FEATURE_CAPS_ALPHA_FILL</unmanaged>\t\n            <unmanaged-short>DXVAHD_FEATURE_CAPS_ALPHA_FILL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.FeatureCaps.Constriction\">\n            <summary>\t\n            <dd> <p>The device can downsample the video output. See <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.BlitStateConstrictionData\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_FEATURE_CAPS_CONSTRICTION']/*\"/>\t\n            <msdn-id>dd318422</msdn-id>\t\n            <unmanaged>DXVAHD_FEATURE_CAPS_CONSTRICTION</unmanaged>\t\n            <unmanaged-short>DXVAHD_FEATURE_CAPS_CONSTRICTION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.FeatureCaps.LumaKey\">\n            <summary>\t\n            <dd> <p>The device can perform luma keying. See <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.StreamStateLumaKeyData\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_FEATURE_CAPS_LUMA_KEY']/*\"/>\t\n            <msdn-id>dd318422</msdn-id>\t\n            <unmanaged>DXVAHD_FEATURE_CAPS_LUMA_KEY</unmanaged>\t\n            <unmanaged-short>DXVAHD_FEATURE_CAPS_LUMA_KEY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.FeatureCaps.AlphaPalette\">\n            <summary>\t\n            <dd> <p>The device can apply alpha values from color palette entries. See <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.StreamStateAlphaData\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_FEATURE_CAPS_ALPHA_PALETTE']/*\"/>\t\n            <msdn-id>dd318422</msdn-id>\t\n            <unmanaged>DXVAHD_FEATURE_CAPS_ALPHA_PALETTE</unmanaged>\t\n            <unmanaged-short>DXVAHD_FEATURE_CAPS_ALPHA_PALETTE</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.Filter\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Defines the range of supported values for an image filter.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The multiplier enables the filter range to have a fractional step value.</p><p>For example, a hue filter might have an actual range of [-180.0 ... +180.0] with a step size of 0.25. The device would report the following range and multiplier:</p><ul> <li>Minimum: -720</li> <li>Maximum: +720</li> <li>Multiplier: 0.25</li> </ul><p>In this case,  a filter value of 2 would be interpreted by the device as 0.50 (or 2 ? 0.25).</p><p>The device should use  a multiplier that can be represented exactly as a base-2 fraction.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_FILTER']/*\"/>\t\n            <msdn-id>dd318428</msdn-id>\t\n            <unmanaged>DXVAHD_FILTER</unmanaged>\t\n            <unmanaged-short>DXVAHD_FILTER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.Filter.Brightness\">\n            <summary>\t\n            <dd> <p>The minimum value of the filter.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_FILTER_BRIGHTNESS']/*\"/>\t\n            <msdn-id>dd318428</msdn-id>\t\n            <unmanaged>DXVAHD_FILTER_BRIGHTNESS</unmanaged>\t\n            <unmanaged-short>DXVAHD_FILTER_BRIGHTNESS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.Filter.Contrast\">\n            <summary>\t\n            <dd> <p>The maximum value of the filter.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_FILTER_CONTRAST']/*\"/>\t\n            <msdn-id>dd318428</msdn-id>\t\n            <unmanaged>DXVAHD_FILTER_CONTRAST</unmanaged>\t\n            <unmanaged-short>DXVAHD_FILTER_CONTRAST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.Filter.Hue\">\n            <summary>\t\n            <dd> <p>The default value of the filter.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_FILTER_HUE']/*\"/>\t\n            <msdn-id>dd318428</msdn-id>\t\n            <unmanaged>DXVAHD_FILTER_HUE</unmanaged>\t\n            <unmanaged-short>DXVAHD_FILTER_HUE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.Filter.Saturation\">\n            <summary>\t\n            <dd> <p>A multiplier. Use the following formula to translate the filter setting into the actual filter value: <em>Actual Value</em> = <em>Set Value</em>???<em>Multiplier</em>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_FILTER_SATURATION']/*\"/>\t\n            <msdn-id>dd318428</msdn-id>\t\n            <unmanaged>DXVAHD_FILTER_SATURATION</unmanaged>\t\n            <unmanaged-short>DXVAHD_FILTER_SATURATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.Filter.NoiseReduction\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_FILTER_NOISE_REDUCTION']/*\"/>\t\n            <unmanaged>DXVAHD_FILTER_NOISE_REDUCTION</unmanaged>\t\n            <unmanaged-short>DXVAHD_FILTER_NOISE_REDUCTION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.Filter.EdgeEnhancement\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_FILTER_EDGE_ENHANCEMENT']/*\"/>\t\n            <unmanaged>DXVAHD_FILTER_EDGE_ENHANCEMENT</unmanaged>\t\n            <unmanaged-short>DXVAHD_FILTER_EDGE_ENHANCEMENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.Filter.AnamorphicScaling\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_FILTER_ANAMORPHIC_SCALING']/*\"/>\t\n            <unmanaged>DXVAHD_FILTER_ANAMORPHIC_SCALING</unmanaged>\t\n            <unmanaged-short>DXVAHD_FILTER_ANAMORPHIC_SCALING</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.FilterCaps\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Defines capabilities related to image adjustment and filtering for a Microsoft DirectX Video Acceleration High Definition (DXVA-HD) device.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_FILTER_CAPS']/*\"/>\t\n            <msdn-id>dd318426</msdn-id>\t\n            <unmanaged>DXVAHD_FILTER_CAPS</unmanaged>\t\n            <unmanaged-short>DXVAHD_FILTER_CAPS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.FilterCaps.Brightness\">\n            <summary>\t\n            <dd> <p>The device can adjust the brightness level.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_FILTER_CAPS_BRIGHTNESS']/*\"/>\t\n            <msdn-id>dd318426</msdn-id>\t\n            <unmanaged>DXVAHD_FILTER_CAPS_BRIGHTNESS</unmanaged>\t\n            <unmanaged-short>DXVAHD_FILTER_CAPS_BRIGHTNESS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.FilterCaps.Contrast\">\n            <summary>\t\n            <dd> <p>The device can adjust the contrast level.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_FILTER_CAPS_CONTRAST']/*\"/>\t\n            <msdn-id>dd318426</msdn-id>\t\n            <unmanaged>DXVAHD_FILTER_CAPS_CONTRAST</unmanaged>\t\n            <unmanaged-short>DXVAHD_FILTER_CAPS_CONTRAST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.FilterCaps.Hue\">\n            <summary>\t\n            <dd> <p>The device can adjust hue.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_FILTER_CAPS_HUE']/*\"/>\t\n            <msdn-id>dd318426</msdn-id>\t\n            <unmanaged>DXVAHD_FILTER_CAPS_HUE</unmanaged>\t\n            <unmanaged-short>DXVAHD_FILTER_CAPS_HUE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.FilterCaps.Saturation\">\n            <summary>\t\n            <dd> <p>The device can adjust the saturation level.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_FILTER_CAPS_SATURATION']/*\"/>\t\n            <msdn-id>dd318426</msdn-id>\t\n            <unmanaged>DXVAHD_FILTER_CAPS_SATURATION</unmanaged>\t\n            <unmanaged-short>DXVAHD_FILTER_CAPS_SATURATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.FilterCaps.NoiseReduction\">\n            <summary>\t\n            <dd> <p>The device can perform noise reduction.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_FILTER_CAPS_NOISE_REDUCTION']/*\"/>\t\n            <msdn-id>dd318426</msdn-id>\t\n            <unmanaged>DXVAHD_FILTER_CAPS_NOISE_REDUCTION</unmanaged>\t\n            <unmanaged-short>DXVAHD_FILTER_CAPS_NOISE_REDUCTION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.FilterCaps.EdgeEnhancement\">\n            <summary>\t\n            <dd> <p>The device can perform edge enhancement.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_FILTER_CAPS_EDGE_ENHANCEMENT']/*\"/>\t\n            <msdn-id>dd318426</msdn-id>\t\n            <unmanaged>DXVAHD_FILTER_CAPS_EDGE_ENHANCEMENT</unmanaged>\t\n            <unmanaged-short>DXVAHD_FILTER_CAPS_EDGE_ENHANCEMENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.FilterCaps.AnamorphicScaling\">\n            <summary>\t\n            <dd> <p>The device can perform <em>anamorphic scaling</em>. Anamorphic scaling can be used to stretch 4:3 content to a widescreen 16:9 aspect ratio.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_FILTER_CAPS_ANAMORPHIC_SCALING']/*\"/>\t\n            <msdn-id>dd318426</msdn-id>\t\n            <unmanaged>DXVAHD_FILTER_CAPS_ANAMORPHIC_SCALING</unmanaged>\t\n            <unmanaged-short>DXVAHD_FILTER_CAPS_ANAMORPHIC_SCALING</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.FrameFormat\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Describes how a video stream is interlaced.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_FRAME_FORMAT']/*\"/>\t\n            <msdn-id>dd318431</msdn-id>\t\n            <unmanaged>DXVAHD_FRAME_FORMAT</unmanaged>\t\n            <unmanaged-short>DXVAHD_FRAME_FORMAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.FrameFormat.Progressive\">\n            <summary>\t\n            <dd> <p>Frames are progressive.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_FRAME_FORMAT_PROGRESSIVE']/*\"/>\t\n            <msdn-id>dd318431</msdn-id>\t\n            <unmanaged>DXVAHD_FRAME_FORMAT_PROGRESSIVE</unmanaged>\t\n            <unmanaged-short>DXVAHD_FRAME_FORMAT_PROGRESSIVE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.FrameFormat.InterlacedTopFieldFirst\">\n            <summary>\t\n            <dd> <p>Frames are interlaced. The top field of each frame is displayed first.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_FRAME_FORMAT_INTERLACED_TOP_FIELD_FIRST']/*\"/>\t\n            <msdn-id>dd318431</msdn-id>\t\n            <unmanaged>DXVAHD_FRAME_FORMAT_INTERLACED_TOP_FIELD_FIRST</unmanaged>\t\n            <unmanaged-short>DXVAHD_FRAME_FORMAT_INTERLACED_TOP_FIELD_FIRST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.FrameFormat.InterlacedBottomFieldFirst\">\n            <summary>\t\n            <dd> <p>Frame are interlaced. The bottom field of each frame is displayed first.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_FRAME_FORMAT_INTERLACED_BOTTOM_FIELD_FIRST']/*\"/>\t\n            <msdn-id>dd318431</msdn-id>\t\n            <unmanaged>DXVAHD_FRAME_FORMAT_INTERLACED_BOTTOM_FIELD_FIRST</unmanaged>\t\n            <unmanaged-short>DXVAHD_FRAME_FORMAT_INTERLACED_BOTTOM_FIELD_FIRST</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.InputFormatCaps\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Defines capabilities related to input formats for a Microsoft DirectX Video Acceleration High Definition (DXVA-HD) device.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>These flags define video processing capabilities that are usually not needed, and therefore are not required for DXVA-HD devices to support.</p><p>The first three flags relate to RGB support for functions that are normally applied to YCbCr video: deinterlacing, color adjustment, and luma keying. A DXVA-HD device that supports these functions for YCbCr is not required  to support them for RGB input. Supporting RGB input for these functions  is  an additional capability, reflected by these constants. The driver might convert the input to another color space, perform the indicated function, and then convert the result back to RGB.</p><p>Similarly, a device that supports de-interlacing is not required to support deinterlacing of palettized formats. This capability is indicated by the <strong><see cref=\"F:SharpDX.MediaFoundation.DirectX.InputFormatCaps.PaletteInterlaced\"/></strong> flag.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_INPUT_FORMAT_CAPS']/*\"/>\t\n            <msdn-id>dd318433</msdn-id>\t\n            <unmanaged>DXVAHD_INPUT_FORMAT_CAPS</unmanaged>\t\n            <unmanaged-short>DXVAHD_INPUT_FORMAT_CAPS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.InputFormatCaps.RgbInterlaced\">\n            <summary>\t\n            <dd> <p>The device can deinterlace an input stream that contains interlaced RGB video.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_INPUT_FORMAT_CAPS_RGB_INTERLACED']/*\"/>\t\n            <msdn-id>dd318433</msdn-id>\t\n            <unmanaged>DXVAHD_INPUT_FORMAT_CAPS_RGB_INTERLACED</unmanaged>\t\n            <unmanaged-short>DXVAHD_INPUT_FORMAT_CAPS_RGB_INTERLACED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.InputFormatCaps.RgbProcamp\">\n            <summary>\t\n            <dd> <p>The device can perform color adjustment on RGB video.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_INPUT_FORMAT_CAPS_RGB_PROCAMP']/*\"/>\t\n            <msdn-id>dd318433</msdn-id>\t\n            <unmanaged>DXVAHD_INPUT_FORMAT_CAPS_RGB_PROCAMP</unmanaged>\t\n            <unmanaged-short>DXVAHD_INPUT_FORMAT_CAPS_RGB_PROCAMP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.InputFormatCaps.RgbLumaKey\">\n            <summary>\t\n            <dd> <p>The device can perform luma keying on RGB video.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_INPUT_FORMAT_CAPS_RGB_LUMA_KEY']/*\"/>\t\n            <msdn-id>dd318433</msdn-id>\t\n            <unmanaged>DXVAHD_INPUT_FORMAT_CAPS_RGB_LUMA_KEY</unmanaged>\t\n            <unmanaged-short>DXVAHD_INPUT_FORMAT_CAPS_RGB_LUMA_KEY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.InputFormatCaps.PaletteInterlaced\">\n            <summary>\t\n            <dd> <p>The device can deinterlace input streams with palettized color formats.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_INPUT_FORMAT_CAPS_PALETTE_INTERLACED']/*\"/>\t\n            <msdn-id>dd318433</msdn-id>\t\n            <unmanaged>DXVAHD_INPUT_FORMAT_CAPS_PALETTE_INTERLACED</unmanaged>\t\n            <unmanaged-short>DXVAHD_INPUT_FORMAT_CAPS_PALETTE_INTERLACED</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.ItelecineCaps\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Specifies the inverse telecine (IVTC) capabilities of a Microsoft DirectX Video Acceleration High Definition (DXVA-HD) video processor.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_ITELECINE_CAPS']/*\"/>\t\n            <msdn-id>dd318435</msdn-id>\t\n            <unmanaged>DXVAHD_ITELECINE_CAPS</unmanaged>\t\n            <unmanaged-short>DXVAHD_ITELECINE_CAPS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.ItelecineCaps.Reverse32\">\n            <summary>\t\n            <dd> <p>The video processor can reverse 3:2 pulldown.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_ITELECINE_CAPS_32']/*\"/>\t\n            <msdn-id>dd318435</msdn-id>\t\n            <unmanaged>DXVAHD_ITELECINE_CAPS_32</unmanaged>\t\n            <unmanaged-short>DXVAHD_ITELECINE_CAPS_32</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.ItelecineCaps.Reverse22\">\n            <summary>\t\n            <dd> <p>The video processor can reverse 2:2 pulldown.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_ITELECINE_CAPS_22']/*\"/>\t\n            <msdn-id>dd318435</msdn-id>\t\n            <unmanaged>DXVAHD_ITELECINE_CAPS_22</unmanaged>\t\n            <unmanaged-short>DXVAHD_ITELECINE_CAPS_22</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.ItelecineCaps.Reverse2224\">\n            <summary>\t\n            <dd> <p>The video processor can reverse 2:2:2:4 pulldown.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_ITELECINE_CAPS_2224']/*\"/>\t\n            <msdn-id>dd318435</msdn-id>\t\n            <unmanaged>DXVAHD_ITELECINE_CAPS_2224</unmanaged>\t\n            <unmanaged-short>DXVAHD_ITELECINE_CAPS_2224</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.ItelecineCaps.Reverse2332\">\n            <summary>\t\n            <dd> <p>The video processor can reverse 2:3:3:2 pulldown.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_ITELECINE_CAPS_2332']/*\"/>\t\n            <msdn-id>dd318435</msdn-id>\t\n            <unmanaged>DXVAHD_ITELECINE_CAPS_2332</unmanaged>\t\n            <unmanaged-short>DXVAHD_ITELECINE_CAPS_2332</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.ItelecineCaps.Reverse32322\">\n            <summary>\t\n            <dd> <p>The video processor can reverse 3:2:3:2:2 pulldown.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_ITELECINE_CAPS_32322']/*\"/>\t\n            <msdn-id>dd318435</msdn-id>\t\n            <unmanaged>DXVAHD_ITELECINE_CAPS_32322</unmanaged>\t\n            <unmanaged-short>DXVAHD_ITELECINE_CAPS_32322</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.ItelecineCaps.Reverse55\">\n            <summary>\t\n            <dd> <p>The video processor can reverse 5:5 pulldown.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_ITELECINE_CAPS_55']/*\"/>\t\n            <msdn-id>dd318435</msdn-id>\t\n            <unmanaged>DXVAHD_ITELECINE_CAPS_55</unmanaged>\t\n            <unmanaged-short>DXVAHD_ITELECINE_CAPS_55</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.ItelecineCaps.Reverse64\">\n            <summary>\t\n            <dd> <p>The video processor can reverse 6:4 pulldown.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_ITELECINE_CAPS_64']/*\"/>\t\n            <msdn-id>dd318435</msdn-id>\t\n            <unmanaged>DXVAHD_ITELECINE_CAPS_64</unmanaged>\t\n            <unmanaged-short>DXVAHD_ITELECINE_CAPS_64</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.ItelecineCaps.Reverse87\">\n            <summary>\t\n            <dd> <p>The video processor can reverse 8:7 pulldown.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_ITELECINE_CAPS_87']/*\"/>\t\n            <msdn-id>dd318435</msdn-id>\t\n            <unmanaged>DXVAHD_ITELECINE_CAPS_87</unmanaged>\t\n            <unmanaged-short>DXVAHD_ITELECINE_CAPS_87</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.ItelecineCaps.Reverse222222222223\">\n            <summary>\t\n            <dd> <p>The video processor can reverse 2:2:2:2:2:2:2:2:2:2:2:3 pulldown.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_ITELECINE_CAPS_222222222223']/*\"/>\t\n            <msdn-id>dd318435</msdn-id>\t\n            <unmanaged>DXVAHD_ITELECINE_CAPS_222222222223</unmanaged>\t\n            <unmanaged-short>DXVAHD_ITELECINE_CAPS_222222222223</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.ItelecineCaps.ReverseOTHER\">\n            <summary>\t\n            <dd> <p>The video processor can reverse other telecine modes not listed here.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_ITELECINE_CAPS_OTHER']/*\"/>\t\n            <msdn-id>dd318435</msdn-id>\t\n            <unmanaged>DXVAHD_ITELECINE_CAPS_OTHER</unmanaged>\t\n            <unmanaged-short>DXVAHD_ITELECINE_CAPS_OTHER</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.NoiseDetailFilter\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='__MIDL___MIDL_itf_dxva2api_0000_0000_0004']/*\"/>\t\n            <unmanaged>__MIDL___MIDL_itf_dxva2api_0000_0000_0004</unmanaged>\t\n            <unmanaged-short>__MIDL___MIDL_itf_dxva2api_0000_0000_0004</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.NoiseDetailFilter.NoiseLumaLevel\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_NoiseFilterLumaLevel']/*\"/>\t\n            <unmanaged>DXVA2_NoiseFilterLumaLevel</unmanaged>\t\n            <unmanaged-short>DXVA2_NoiseFilterLumaLevel</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.NoiseDetailFilter.NoiseLumaThreshold\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_NoiseFilterLumaThreshold']/*\"/>\t\n            <unmanaged>DXVA2_NoiseFilterLumaThreshold</unmanaged>\t\n            <unmanaged-short>DXVA2_NoiseFilterLumaThreshold</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.NoiseDetailFilter.NoiseLumaRadius\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_NoiseFilterLumaRadius']/*\"/>\t\n            <unmanaged>DXVA2_NoiseFilterLumaRadius</unmanaged>\t\n            <unmanaged-short>DXVA2_NoiseFilterLumaRadius</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.NoiseDetailFilter.NoiseChromaLevel\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_NoiseFilterChromaLevel']/*\"/>\t\n            <unmanaged>DXVA2_NoiseFilterChromaLevel</unmanaged>\t\n            <unmanaged-short>DXVA2_NoiseFilterChromaLevel</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.NoiseDetailFilter.NoiseChromaThreshold\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_NoiseFilterChromaThreshold']/*\"/>\t\n            <unmanaged>DXVA2_NoiseFilterChromaThreshold</unmanaged>\t\n            <unmanaged-short>DXVA2_NoiseFilterChromaThreshold</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.NoiseDetailFilter.NoiseChromaRadius\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_NoiseFilterChromaRadius']/*\"/>\t\n            <unmanaged>DXVA2_NoiseFilterChromaRadius</unmanaged>\t\n            <unmanaged-short>DXVA2_NoiseFilterChromaRadius</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.NoiseDetailFilter.DetailLumaLevel\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_DetailFilterLumaLevel']/*\"/>\t\n            <unmanaged>DXVA2_DetailFilterLumaLevel</unmanaged>\t\n            <unmanaged-short>DXVA2_DetailFilterLumaLevel</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.NoiseDetailFilter.DetailLumaThreshold\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_DetailFilterLumaThreshold']/*\"/>\t\n            <unmanaged>DXVA2_DetailFilterLumaThreshold</unmanaged>\t\n            <unmanaged-short>DXVA2_DetailFilterLumaThreshold</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.NoiseDetailFilter.DetailLumaRadius\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_DetailFilterLumaRadius']/*\"/>\t\n            <unmanaged>DXVA2_DetailFilterLumaRadius</unmanaged>\t\n            <unmanaged-short>DXVA2_DetailFilterLumaRadius</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.NoiseDetailFilter.DetailChromaLevel\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_DetailFilterChromaLevel']/*\"/>\t\n            <unmanaged>DXVA2_DetailFilterChromaLevel</unmanaged>\t\n            <unmanaged-short>DXVA2_DetailFilterChromaLevel</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.NoiseDetailFilter.DetailChromaThreshold\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_DetailFilterChromaThreshold']/*\"/>\t\n            <unmanaged>DXVA2_DetailFilterChromaThreshold</unmanaged>\t\n            <unmanaged-short>DXVA2_DetailFilterChromaThreshold</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.NoiseDetailFilter.DetailChromaRadius\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_DetailFilterChromaRadius']/*\"/>\t\n            <unmanaged>DXVA2_DetailFilterChromaRadius</unmanaged>\t\n            <unmanaged-short>DXVA2_DetailFilterChromaRadius</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.NoiseFilterTechnology\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='__MIDL___MIDL_itf_dxva2api_0000_0000_0005']/*\"/>\t\n            <unmanaged>__MIDL___MIDL_itf_dxva2api_0000_0000_0005</unmanaged>\t\n            <unmanaged-short>__MIDL___MIDL_itf_dxva2api_0000_0000_0005</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.NoiseFilterTechnology.Unsupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_NoiseFilterTech_Unsupported']/*\"/>\t\n            <unmanaged>DXVA2_NoiseFilterTech_Unsupported</unmanaged>\t\n            <unmanaged-short>DXVA2_NoiseFilterTech_Unsupported</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.NoiseFilterTechnology.Unknown\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_NoiseFilterTech_Unknown']/*\"/>\t\n            <unmanaged>DXVA2_NoiseFilterTech_Unknown</unmanaged>\t\n            <unmanaged-short>DXVA2_NoiseFilterTech_Unknown</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.NoiseFilterTechnology.Median\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_NoiseFilterTech_Median']/*\"/>\t\n            <unmanaged>DXVA2_NoiseFilterTech_Median</unmanaged>\t\n            <unmanaged-short>DXVA2_NoiseFilterTech_Median</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.NoiseFilterTechnology.Temporal\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_NoiseFilterTech_Temporal']/*\"/>\t\n            <unmanaged>DXVA2_NoiseFilterTech_Temporal</unmanaged>\t\n            <unmanaged-short>DXVA2_NoiseFilterTech_Temporal</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.NoiseFilterTechnology.BlockNoise\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_NoiseFilterTech_BlockNoise']/*\"/>\t\n            <unmanaged>DXVA2_NoiseFilterTech_BlockNoise</unmanaged>\t\n            <unmanaged-short>DXVA2_NoiseFilterTech_BlockNoise</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.NoiseFilterTechnology.MosquitoNoise\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_NoiseFilterTech_MosquitoNoise']/*\"/>\t\n            <unmanaged>DXVA2_NoiseFilterTech_MosquitoNoise</unmanaged>\t\n            <unmanaged-short>DXVA2_NoiseFilterTech_MosquitoNoise</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.NominalRange\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Describes how to map color data to a normalized [0...1] range. </p><p>These flags are used in the <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.ExtendedFormat\"/></strong> structure. They indicate whether the range of color values includes headroom (values above 100% white) and toeroom (values below reference black). </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>For YUV colors, these flags specify how to convert between Y'CbCr and Y'PbPr. The Y'PbPr color space has a range of [0..1] for Y' (luma) and [-0.5...0.5] for Pb/Pr (chroma).</p><table> <tr><th>Value</th><th>Description</th></tr> <tr><td><see cref=\"F:SharpDX.MediaFoundation.DirectX.NominalRange.Range0_255\"/></td><td>Should not be used for YUV data.</td></tr> <tr><td><see cref=\"F:SharpDX.MediaFoundation.DirectX.NominalRange.Range16_235\"/></td><td> <p>For 8-bit Y'CbCr components:</p> <ul> <li> <p>Y' range of [0...1] maps to [16..235] for 8-bit Y' values.</p> </li> <li> <p>Pb/Pr ranges of [-0.5...0.5] map to [16...240] for 8-bit Cb/Cr values.</p> </li> </ul> <p>For samples with <em>n</em> bits of precision, the general equations are:</p> <ul> <li> <p> Y' = (Y' * 219 + 16) * 2 ^ (n-8) </p> </li> <li> <p> Cb = (Pb * 224 + 128) * 2 ^ (n-8) </p> </li> <li> <p> Cr = (Pr * 224 + 128) * 2 ^ (n-8) </p> </li> </ul> <p>The inverse equations to convert from Y'CbCr to Y'PbPr are:</p> <ul> <li> <p> Y' = (Y' / 2 ^ (n-8) - 16) / 219 </p> </li> <li> <p> Pb = (Cb / 2 ^ (n-8) - 128) / 224 </p> </li> <li> <p> Pr = (Cr / 2 ^ (n-8) - 128) / 224 </p> </li> </ul> </td></tr> <tr><td><see cref=\"F:SharpDX.MediaFoundation.DirectX.NominalRange.Range48_208\"/></td><td>For 8-bit Y'CbCr values, Y' range of [0..1] maps to [48...208].</td></tr> </table><p>?</p><p>For RGB colors, the flags differentiate various RGB spaces.</p><table> <tr><th>Value</th><th>Description</th></tr> <tr><td><see cref=\"F:SharpDX.MediaFoundation.DirectX.NominalRange.Range0_255\"/></td><td>sRGB</td></tr> <tr><td><see cref=\"F:SharpDX.MediaFoundation.DirectX.NominalRange.Range16_235\"/></td><td>Studio RGB; ITU-R BT.709</td></tr> <tr><td><see cref=\"F:SharpDX.MediaFoundation.DirectX.NominalRange.Range48_208\"/></td><td>ITU-R BT.1361 RGB</td></tr> </table><p>?</p><p>Video data might contain values above or below the nominal range.</p><p><strong>Note</strong>??The values named  <see cref=\"F:SharpDX.MediaFoundation.DirectX.NominalRange.Normal\"/> and <see cref=\"F:SharpDX.MediaFoundation.DirectX.NominalRange.Wide\"/> are a potential source of confusion. <em>Wide</em> refers to the possible range of <em>analog</em> values that can be represented, by mapping the nominal range [0...1] into a narrower range of <em>digital</em> values. Because the meaning of <em>wide</em> in this context is ambiguous, the equivalent values named <see cref=\"F:SharpDX.MediaFoundation.DirectX.NominalRange.Range0_255\"/> and <see cref=\"F:SharpDX.MediaFoundation.DirectX.NominalRange.Range16_235\"/> are preferred. These names explicitly convey the meaning of the enumeration, and are less likely to be misinterpreted.</p><p>This enumeration is equivalent to the <strong>DXVA_NominalRange</strong> enumeration used in DXVA 1.0, although it defines additional values.</p><p>If you are using the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaType\"/></strong> interface to describe the video format, the nominal range is specified in the <strong><see cref=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.VideoNominalRange\"/></strong> attribute.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_NominalRange']/*\"/>\t\n            <msdn-id>bb970561</msdn-id>\t\n            <unmanaged>DXVA2_NominalRange</unmanaged>\t\n            <unmanaged-short>DXVA2_NominalRange</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.NominalRange.Mask\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_NominalRangeMask']/*\"/>\t\n            <unmanaged>DXVA2_NominalRangeMask</unmanaged>\t\n            <unmanaged-short>DXVA2_NominalRangeMask</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.NominalRange.Unknown\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_NominalRange_Unknown']/*\"/>\t\n            <unmanaged>DXVA2_NominalRange_Unknown</unmanaged>\t\n            <unmanaged-short>DXVA2_NominalRange_Unknown</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.NominalRange.Normal\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_NominalRange_Normal']/*\"/>\t\n            <unmanaged>DXVA2_NominalRange_Normal</unmanaged>\t\n            <unmanaged-short>DXVA2_NominalRange_Normal</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.NominalRange.Wide\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_NominalRange_Wide']/*\"/>\t\n            <unmanaged>DXVA2_NominalRange_Wide</unmanaged>\t\n            <unmanaged-short>DXVA2_NominalRange_Wide</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.NominalRange.Range0_255\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_NominalRange_0_255']/*\"/>\t\n            <unmanaged>DXVA2_NominalRange_0_255</unmanaged>\t\n            <unmanaged-short>DXVA2_NominalRange_0_255</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.NominalRange.Range16_235\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_NominalRange_16_235']/*\"/>\t\n            <unmanaged>DXVA2_NominalRange_16_235</unmanaged>\t\n            <unmanaged-short>DXVA2_NominalRange_16_235</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.NominalRange.Range48_208\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_NominalRange_48_208']/*\"/>\t\n            <unmanaged>DXVA2_NominalRange_48_208</unmanaged>\t\n            <unmanaged-short>DXVA2_NominalRange_48_208</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.OutputRate\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Specifies the output frame rates for an input stream, when using Microsoft DirectX Video Acceleration High Definition (DXVA-HD).</p><p>This enumeration type is used in the <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.StreamStateOutputRateData\"/></strong> structure.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_OUTPUT_RATE']/*\"/>\t\n            <msdn-id>dd318437</msdn-id>\t\n            <unmanaged>DXVAHD_OUTPUT_RATE</unmanaged>\t\n            <unmanaged-short>DXVAHD_OUTPUT_RATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.OutputRate.Normal\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_OUTPUT_RATE_NORMAL']/*\"/>\t\n            <unmanaged>DXVAHD_OUTPUT_RATE_NORMAL</unmanaged>\t\n            <unmanaged-short>DXVAHD_OUTPUT_RATE_NORMAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.OutputRate.Half\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_OUTPUT_RATE_HALF']/*\"/>\t\n            <unmanaged>DXVAHD_OUTPUT_RATE_HALF</unmanaged>\t\n            <unmanaged-short>DXVAHD_OUTPUT_RATE_HALF</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.OutputRate.Custom\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_OUTPUT_RATE_CUSTOM']/*\"/>\t\n            <unmanaged>DXVAHD_OUTPUT_RATE_CUSTOM</unmanaged>\t\n            <unmanaged-short>DXVAHD_OUTPUT_RATE_CUSTOM</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.ProcessorCaps\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Specifies the processing capabilities of a Microsoft DirectX Video Acceleration High Definition (DXVA-HD) video processor.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_PROCESSOR_CAPS']/*\"/>\t\n            <msdn-id>dd318439</msdn-id>\t\n            <unmanaged>DXVAHD_PROCESSOR_CAPS</unmanaged>\t\n            <unmanaged-short>DXVAHD_PROCESSOR_CAPS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.ProcessorCaps.DeinterlaceBlend\">\n            <summary>\t\n            <dd> <p>The video processor can perform blend deinterlacing.</p> <p> In <em>blend deinterlacing</em>, the two fields from an interlaced frame are blended into a single progressive frame. A video processor uses blend deinterlacing when it deinterlaces at half rate, as when converting 60i to 30p. Blend deinterlacing does not require reference frames.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_PROCESSOR_CAPS_DEINTERLACE_BLEND']/*\"/>\t\n            <msdn-id>dd318439</msdn-id>\t\n            <unmanaged>DXVAHD_PROCESSOR_CAPS_DEINTERLACE_BLEND</unmanaged>\t\n            <unmanaged-short>DXVAHD_PROCESSOR_CAPS_DEINTERLACE_BLEND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.ProcessorCaps.DeinterlaceBob\">\n            <summary>\t\n            <dd> <p>The video processor can perform bob deinterlacing. </p> <p>In <em>bob deinterlacing</em>, missing field lines are interpolated from the lines above and below. Bob deinterlacing does not require reference frames.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_PROCESSOR_CAPS_DEINTERLACE_BOB']/*\"/>\t\n            <msdn-id>dd318439</msdn-id>\t\n            <unmanaged>DXVAHD_PROCESSOR_CAPS_DEINTERLACE_BOB</unmanaged>\t\n            <unmanaged-short>DXVAHD_PROCESSOR_CAPS_DEINTERLACE_BOB</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.ProcessorCaps.DeinterlaceAdaptive\">\n            <summary>\t\n            <dd> <p>The video processor can perform adaptive deinterlacing.</p> <p><em>Adaptive deinterlacing</em> uses spatial or temporal interpolation, and switches between the two on a field-by-field basis, depending on the amount of motion. If the video processor does not receive enough reference frames to perform adaptive deinterlacing, it falls back to bob deinterlacing.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_PROCESSOR_CAPS_DEINTERLACE_ADAPTIVE']/*\"/>\t\n            <msdn-id>dd318439</msdn-id>\t\n            <unmanaged>DXVAHD_PROCESSOR_CAPS_DEINTERLACE_ADAPTIVE</unmanaged>\t\n            <unmanaged-short>DXVAHD_PROCESSOR_CAPS_DEINTERLACE_ADAPTIVE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.ProcessorCaps.DeinterlaceMotionCompensation\">\n            <summary>\t\n            <dd> <p>The video processor  can perform motion-compensated deinterlacing.</p> <p><em>Motion-compensated deinterlacing</em> uses motion vectors to recreate missing lines. If the video processor does not receive enough reference frames to perform motion-compensated deinterlacing, it falls back to bob deinterlacing.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_PROCESSOR_CAPS_DEINTERLACE_MOTION_COMPENSATION']/*\"/>\t\n            <msdn-id>dd318439</msdn-id>\t\n            <unmanaged>DXVAHD_PROCESSOR_CAPS_DEINTERLACE_MOTION_COMPENSATION</unmanaged>\t\n            <unmanaged-short>DXVAHD_PROCESSOR_CAPS_DEINTERLACE_MOTION_COMPENSATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.ProcessorCaps.InverseTelecine\">\n            <summary>\t\n            <dd> <p>The video processor can perform inverse telecine (IVTC).</p> <p> If the video processor supports this capability, the <strong>ITelecineCaps</strong> member of the <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.Vpcaps\"/></strong> structure specifies which IVTC modes are supported.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_PROCESSOR_CAPS_INVERSE_TELECINE']/*\"/>\t\n            <msdn-id>dd318439</msdn-id>\t\n            <unmanaged>DXVAHD_PROCESSOR_CAPS_INVERSE_TELECINE</unmanaged>\t\n            <unmanaged-short>DXVAHD_PROCESSOR_CAPS_INVERSE_TELECINE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.ProcessorCaps.FrameRateConversion\">\n            <summary>\t\n            <dd> <p>The video processor can convert the frame rate by interpolating frames.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_PROCESSOR_CAPS_FRAME_RATE_CONVERSION']/*\"/>\t\n            <msdn-id>dd318439</msdn-id>\t\n            <unmanaged>DXVAHD_PROCESSOR_CAPS_FRAME_RATE_CONVERSION</unmanaged>\t\n            <unmanaged-short>DXVAHD_PROCESSOR_CAPS_FRAME_RATE_CONVERSION</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.RenderTargetType\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='__MIDL___MIDL_itf_dxva2api_0000_0000_0013']/*\"/>\t\n            <unmanaged>__MIDL___MIDL_itf_dxva2api_0000_0000_0013</unmanaged>\t\n            <unmanaged-short>__MIDL___MIDL_itf_dxva2api_0000_0000_0013</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.RenderTargetType.VideoDecoder\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoDecoderRenderTarget']/*\"/>\t\n            <unmanaged>DXVA2_VideoDecoderRenderTarget</unmanaged>\t\n            <unmanaged-short>DXVA2_VideoDecoderRenderTarget</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.RenderTargetType.VideoProcessor\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoProcessorRenderTarget']/*\"/>\t\n            <unmanaged>DXVA2_VideoProcessorRenderTarget</unmanaged>\t\n            <unmanaged-short>DXVA2_VideoProcessorRenderTarget</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.RenderTargetType.VideoSoftware\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoSoftwareRenderTarget']/*\"/>\t\n            <unmanaged>DXVA2_VideoSoftwareRenderTarget</unmanaged>\t\n            <unmanaged-short>DXVA2_VideoSoftwareRenderTarget</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.SampleData\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='__MIDL___MIDL_itf_dxva2api_0000_0000_0010']/*\"/>\t\n            <unmanaged>__MIDL___MIDL_itf_dxva2api_0000_0000_0010</unmanaged>\t\n            <unmanaged-short>__MIDL___MIDL_itf_dxva2api_0000_0000_0010</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.SampleData.RepeatFirstFieldBit\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_SampleData_RFF']/*\"/>\t\n            <unmanaged>DXVA2_SampleData_RFF</unmanaged>\t\n            <unmanaged-short>DXVA2_SampleData_RFF</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.SampleData.TopFieldFirstBit\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_SampleData_TFF']/*\"/>\t\n            <unmanaged>DXVA2_SampleData_TFF</unmanaged>\t\n            <unmanaged-short>DXVA2_SampleData_TFF</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.SampleData.Both\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_SampleData_RFF_TFF_Present']/*\"/>\t\n            <unmanaged>DXVA2_SampleData_RFF_TFF_Present</unmanaged>\t\n            <unmanaged-short>DXVA2_SampleData_RFF_TFF_Present</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.SampleFormat\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Describes the content of a video sample. These flags are used in the <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.ExtendedFormat\"/></strong> structure.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This enumeration is equivalent to the <strong>DXVA_SampleFormat</strong> enumeration used in DXVA 1.0.</p><p>The following table shows the mapping from <strong><see cref=\"T:SharpDX.MediaFoundation.VideoInterlaceMode\"/></strong> enumeration values, which are used in Media Foundation media types, to <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.SampleFormat\"/></strong> values.</p><table> <tr><th><see cref=\"T:SharpDX.MediaFoundation.VideoInterlaceMode\"/> Value</th><th><see cref=\"T:SharpDX.MediaFoundation.DirectX.SampleFormat\"/> Value</th></tr> <tr><td><see cref=\"F:SharpDX.MediaFoundation.VideoInterlaceMode.Unknown\"/></td><td><see cref=\"F:SharpDX.MediaFoundation.DirectX.SampleFormat.Unknown\"/>.</td></tr> <tr><td><see cref=\"F:SharpDX.MediaFoundation.VideoInterlaceMode.Progressive\"/></td><td><see cref=\"F:SharpDX.MediaFoundation.DirectX.SampleFormat.ProgressiveFrame\"/>.</td></tr> <tr><td><see cref=\"F:SharpDX.MediaFoundation.VideoInterlaceMode.FieldInterleavedUpperFirst\"/></td><td><see cref=\"F:SharpDX.MediaFoundation.DirectX.SampleFormat.FieldInterleavedEvenFirst\"/></td></tr> <tr><td><see cref=\"F:SharpDX.MediaFoundation.VideoInterlaceMode.FieldInterleavedLowerFirst\"/></td><td><see cref=\"F:SharpDX.MediaFoundation.DirectX.SampleFormat.FieldInterleavedOddFirst\"/>.</td></tr> <tr><td><see cref=\"F:SharpDX.MediaFoundation.VideoInterlaceMode.FieldSingleUpper\"/></td><td><see cref=\"F:SharpDX.MediaFoundation.DirectX.SampleFormat.FieldSingleEven\"/>.</td></tr> <tr><td><see cref=\"F:SharpDX.MediaFoundation.VideoInterlaceMode.FieldSingleLower\"/></td><td><see cref=\"F:SharpDX.MediaFoundation.DirectX.SampleFormat.FieldSingleOdd\"/>.</td></tr> <tr><td><see cref=\"F:SharpDX.MediaFoundation.VideoInterlaceMode.MixedInterlaceOrProgressive\"/></td><td>No exact match. Use <see cref=\"F:SharpDX.MediaFoundation.DirectX.SampleFormat.FieldInterleavedEvenFirst\"/> as an initial value, then use the interlace flags from the media samples. For more information, see Video Interlacing.</td></tr> </table><p>?</p><p>With the exception of <see cref=\"F:SharpDX.MediaFoundation.VideoInterlaceMode.MixedInterlaceOrProgressive\"/>, each pair of corresponding enumeration values has the same numeric value.</p><p>The value <see cref=\"F:SharpDX.MediaFoundation.DirectX.SampleFormat.SubStream\"/> has no equivalent in the <strong><see cref=\"T:SharpDX.MediaFoundation.VideoInterlaceMode\"/></strong> enumeration.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_SampleFormat']/*\"/>\t\n            <msdn-id>ms699834</msdn-id>\t\n            <unmanaged>DXVA2_SampleFormat</unmanaged>\t\n            <unmanaged-short>DXVA2_SampleFormat</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.SampleFormat.FormatMask\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_SampleFormatMask']/*\"/>\t\n            <unmanaged>DXVA2_SampleFormatMask</unmanaged>\t\n            <unmanaged-short>DXVA2_SampleFormatMask</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.SampleFormat.Unknown\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_SampleUnknown']/*\"/>\t\n            <unmanaged>DXVA2_SampleUnknown</unmanaged>\t\n            <unmanaged-short>DXVA2_SampleUnknown</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.SampleFormat.ProgressiveFrame\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_SampleProgressiveFrame']/*\"/>\t\n            <unmanaged>DXVA2_SampleProgressiveFrame</unmanaged>\t\n            <unmanaged-short>DXVA2_SampleProgressiveFrame</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.SampleFormat.FieldInterleavedEvenFirst\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_SampleFieldInterleavedEvenFirst']/*\"/>\t\n            <unmanaged>DXVA2_SampleFieldInterleavedEvenFirst</unmanaged>\t\n            <unmanaged-short>DXVA2_SampleFieldInterleavedEvenFirst</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.SampleFormat.FieldInterleavedOddFirst\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_SampleFieldInterleavedOddFirst']/*\"/>\t\n            <unmanaged>DXVA2_SampleFieldInterleavedOddFirst</unmanaged>\t\n            <unmanaged-short>DXVA2_SampleFieldInterleavedOddFirst</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.SampleFormat.FieldSingleEven\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_SampleFieldSingleEven']/*\"/>\t\n            <unmanaged>DXVA2_SampleFieldSingleEven</unmanaged>\t\n            <unmanaged-short>DXVA2_SampleFieldSingleEven</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.SampleFormat.FieldSingleOdd\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_SampleFieldSingleOdd']/*\"/>\t\n            <unmanaged>DXVA2_SampleFieldSingleOdd</unmanaged>\t\n            <unmanaged-short>DXVA2_SampleFieldSingleOdd</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.SampleFormat.SubStream\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_SampleSubStream']/*\"/>\t\n            <unmanaged>DXVA2_SampleSubStream</unmanaged>\t\n            <unmanaged-short>DXVA2_SampleSubStream</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.StreamState\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Specifies the luma key for an input stream, when using Microsoft DirectX Video Acceleration High Definition (DXVA-HD).</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>To use this state, the device must support luma keying, indicated by the <strong><see cref=\"F:SharpDX.MediaFoundation.DirectX.FeatureCaps.LumaKey\"/></strong> capability flag. To query for this capability, call <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.HDDevice.GetVideoProcessorDeviceCaps(SharpDX.MediaFoundation.DirectX.Vpdevcaps@)\"/></strong>. If the device supports luma keying, it sets the  <strong><see cref=\"F:SharpDX.MediaFoundation.DirectX.FeatureCaps.LumaKey\"/></strong> flag in the <strong>FeatureCaps</strong> member of the <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.Vpdevcaps\"/></strong> structure.</p><p>If the device does not support luma keying, the <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.HDVideoProcessor.SetVideoProcessStreamState(System.Int32,SharpDX.MediaFoundation.DirectX.StreamState,System.Int32,System.IntPtr)\"/></strong> method fails for this state.</p><p>If the input format is RGB, the device must also support the <strong><see cref=\"F:SharpDX.MediaFoundation.DirectX.InputFormatCaps.RgbLumaKey\"/></strong> capability. This capability flag is set in the <strong>InputFormatCaps</strong> member of the <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.Vpdevcaps\"/></strong> structure. If the flag is not present, the device ignores the luma key value for RGB input.</p><p>The values of <strong>Lower</strong> and <strong>Upper</strong> give the lower and upper bounds of the luma key, using a nominal range of [0...1]. Given a format with <em>n</em> bits per channel, these values are converted to luma values as follows:</p><p><code>val = f * ((1 &lt;&lt; n)-1)</code></p><p>Any pixel whose luma value falls within the upper and lower bounds (inclusive) is treated as transparent.</p><p>For example, if the pixel format uses 8-bit luma, the upper bound is calculated as follows:</p><p><code>BYTE Y = BYTE(max(min(1.0, Upper), 0.0) * 255.0)</code></p><p>Note that the value is clamped to the range [0...1] before multiplying by 255.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_STREAM_STATE']/*\"/>\t\n            <msdn-id>dd318766</msdn-id>\t\n            <unmanaged>DXVAHD_STREAM_STATE</unmanaged>\t\n            <unmanaged-short>DXVAHD_STREAM_STATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.StreamState.D3DFORMAT\">\n            <summary>\t\n            <dd> <p> If <strong>TRUE</strong>, luma keying is enabled. Otherwise, luma keying is disabled. The default value is <strong><see cref=\"F:SharpDX.Result.False\"/></strong>. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_STREAM_STATE_D3DFORMAT']/*\"/>\t\n            <msdn-id>dd318766</msdn-id>\t\n            <unmanaged>DXVAHD_STREAM_STATE_D3DFORMAT</unmanaged>\t\n            <unmanaged-short>DXVAHD_STREAM_STATE_D3DFORMAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.StreamState.FrameFormat\">\n            <summary>\t\n            <dd> <p>The lower bound for the luma key. The range is [0?1]. The default state value is 0.0. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_STREAM_STATE_FRAME_FORMAT']/*\"/>\t\n            <msdn-id>dd318766</msdn-id>\t\n            <unmanaged>DXVAHD_STREAM_STATE_FRAME_FORMAT</unmanaged>\t\n            <unmanaged-short>DXVAHD_STREAM_STATE_FRAME_FORMAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.StreamState.InputColorSpace\">\n            <summary>\t\n            <dd> <p>The upper bound for the luma key. The range is [0?1]. The default state value is 0.0. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_STREAM_STATE_INPUT_COLOR_SPACE']/*\"/>\t\n            <msdn-id>dd318766</msdn-id>\t\n            <unmanaged>DXVAHD_STREAM_STATE_INPUT_COLOR_SPACE</unmanaged>\t\n            <unmanaged-short>DXVAHD_STREAM_STATE_INPUT_COLOR_SPACE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.StreamState.OutputRate\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_STREAM_STATE_OUTPUT_RATE']/*\"/>\t\n            <unmanaged>DXVAHD_STREAM_STATE_OUTPUT_RATE</unmanaged>\t\n            <unmanaged-short>DXVAHD_STREAM_STATE_OUTPUT_RATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.StreamState.SourceRectangle\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_STREAM_STATE_SOURCE_RECT']/*\"/>\t\n            <unmanaged>DXVAHD_STREAM_STATE_SOURCE_RECT</unmanaged>\t\n            <unmanaged-short>DXVAHD_STREAM_STATE_SOURCE_RECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.StreamState.DestinationRectangle\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_STREAM_STATE_DESTINATION_RECT']/*\"/>\t\n            <unmanaged>DXVAHD_STREAM_STATE_DESTINATION_RECT</unmanaged>\t\n            <unmanaged-short>DXVAHD_STREAM_STATE_DESTINATION_RECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.StreamState.Alpha\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_STREAM_STATE_ALPHA']/*\"/>\t\n            <unmanaged>DXVAHD_STREAM_STATE_ALPHA</unmanaged>\t\n            <unmanaged-short>DXVAHD_STREAM_STATE_ALPHA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.StreamState.Palette\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_STREAM_STATE_PALETTE']/*\"/>\t\n            <unmanaged>DXVAHD_STREAM_STATE_PALETTE</unmanaged>\t\n            <unmanaged-short>DXVAHD_STREAM_STATE_PALETTE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.StreamState.LumaKey\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_STREAM_STATE_LUMA_KEY']/*\"/>\t\n            <unmanaged>DXVAHD_STREAM_STATE_LUMA_KEY</unmanaged>\t\n            <unmanaged-short>DXVAHD_STREAM_STATE_LUMA_KEY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.StreamState.AspectRatio\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_STREAM_STATE_ASPECT_RATIO']/*\"/>\t\n            <unmanaged>DXVAHD_STREAM_STATE_ASPECT_RATIO</unmanaged>\t\n            <unmanaged-short>DXVAHD_STREAM_STATE_ASPECT_RATIO</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.StreamState.FilterBrightness\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_STREAM_STATE_FILTER_BRIGHTNESS']/*\"/>\t\n            <unmanaged>DXVAHD_STREAM_STATE_FILTER_BRIGHTNESS</unmanaged>\t\n            <unmanaged-short>DXVAHD_STREAM_STATE_FILTER_BRIGHTNESS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.StreamState.FilterContrast\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_STREAM_STATE_FILTER_CONTRAST']/*\"/>\t\n            <unmanaged>DXVAHD_STREAM_STATE_FILTER_CONTRAST</unmanaged>\t\n            <unmanaged-short>DXVAHD_STREAM_STATE_FILTER_CONTRAST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.StreamState.FilterHue\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_STREAM_STATE_FILTER_HUE']/*\"/>\t\n            <unmanaged>DXVAHD_STREAM_STATE_FILTER_HUE</unmanaged>\t\n            <unmanaged-short>DXVAHD_STREAM_STATE_FILTER_HUE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.StreamState.FilterSaturation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_STREAM_STATE_FILTER_SATURATION']/*\"/>\t\n            <unmanaged>DXVAHD_STREAM_STATE_FILTER_SATURATION</unmanaged>\t\n            <unmanaged-short>DXVAHD_STREAM_STATE_FILTER_SATURATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.StreamState.FilterNoiseReduction\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_STREAM_STATE_FILTER_NOISE_REDUCTION']/*\"/>\t\n            <unmanaged>DXVAHD_STREAM_STATE_FILTER_NOISE_REDUCTION</unmanaged>\t\n            <unmanaged-short>DXVAHD_STREAM_STATE_FILTER_NOISE_REDUCTION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.StreamState.FilterEdgeEnhancement\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_STREAM_STATE_FILTER_EDGE_ENHANCEMENT']/*\"/>\t\n            <unmanaged>DXVAHD_STREAM_STATE_FILTER_EDGE_ENHANCEMENT</unmanaged>\t\n            <unmanaged-short>DXVAHD_STREAM_STATE_FILTER_EDGE_ENHANCEMENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.StreamState.FilterAnamorphicScaling\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_STREAM_STATE_FILTER_ANAMORPHIC_SCALING']/*\"/>\t\n            <unmanaged>DXVAHD_STREAM_STATE_FILTER_ANAMORPHIC_SCALING</unmanaged>\t\n            <unmanaged-short>DXVAHD_STREAM_STATE_FILTER_ANAMORPHIC_SCALING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.StreamState.Private\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_STREAM_STATE_PRIVATE']/*\"/>\t\n            <unmanaged>DXVAHD_STREAM_STATE_PRIVATE</unmanaged>\t\n            <unmanaged-short>DXVAHD_STREAM_STATE_PRIVATE</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.SurfaceType\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Describes a DirectX surface type for DirectX Video Acceleration (DXVA).</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_SurfaceType']/*\"/>\t\n            <msdn-id>ms699850</msdn-id>\t\n            <unmanaged>DXVA2_SurfaceType</unmanaged>\t\n            <unmanaged-short>DXVA2_SurfaceType</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.SurfaceType.SurfaceType_Decoder\">\n            <summary>\t\n            <dd> <p>The surface is a decoder render target.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_SurfaceType_DecoderRenderTarget']/*\"/>\t\n            <msdn-id>ms699850</msdn-id>\t\n            <unmanaged>DXVA2_SurfaceType_DecoderRenderTarget</unmanaged>\t\n            <unmanaged-short>DXVA2_SurfaceType_DecoderRenderTarget</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.SurfaceType.SurfaceType_Processor\">\n            <summary>\t\n            <dd> <p>The surface is a video processor render target.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_SurfaceType_ProcessorRenderTarget']/*\"/>\t\n            <msdn-id>ms699850</msdn-id>\t\n            <unmanaged>DXVA2_SurfaceType_ProcessorRenderTarget</unmanaged>\t\n            <unmanaged-short>DXVA2_SurfaceType_ProcessorRenderTarget</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.SurfaceType.D3DRenderTargetTexture\">\n            <summary>\t\n            <dd> <p>The surface is a Direct3D texture render target.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_SurfaceType_D3DRenderTargetTexture']/*\"/>\t\n            <msdn-id>ms699850</msdn-id>\t\n            <unmanaged>DXVA2_SurfaceType_D3DRenderTargetTexture</unmanaged>\t\n            <unmanaged-short>DXVA2_SurfaceType_D3DRenderTargetTexture</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.SurfaceTypeHD\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Specifies the type of video surface created by a Microsoft DirectX Video Acceleration High Definition (DXVA-HD) device.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>If the DXVA-HD device is a software plug-in and the surface type is <strong><see cref=\"F:SharpDX.MediaFoundation.DirectX.SurfaceTypeHD.VideoInputPrivate\"/></strong>, the device can support format types that are not supported natively by the graphics driver. For example, if the application requests an AYUV surface, the device could allocate a surface with a surface type of <strong><see cref=\"F:SharpDX.Direct3D9.Format.A8R8G8B8\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_SURFACE_TYPE']/*\"/>\t\n            <msdn-id>dd318772</msdn-id>\t\n            <unmanaged>DXVAHD_SURFACE_TYPE</unmanaged>\t\n            <unmanaged-short>DXVAHD_SURFACE_TYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.SurfaceTypeHD.VideoInput\">\n            <summary>\t\n            <dd> <p>A surface for an input stream. This surface type is equivalent to an off-screen plain surface in Microsoft Direct3D. The application can use the surface in Direct3D calls.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_SURFACE_TYPE_VIDEO_INPUT']/*\"/>\t\n            <msdn-id>dd318772</msdn-id>\t\n            <unmanaged>DXVAHD_SURFACE_TYPE_VIDEO_INPUT</unmanaged>\t\n            <unmanaged-short>DXVAHD_SURFACE_TYPE_VIDEO_INPUT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.SurfaceTypeHD.VideoInputPrivate\">\n            <summary>\t\n            <dd> <p>A private surface for an input stream. This surface type is equivalent to an off-screen plain surface, except that the application cannot use the surface in Direct3D calls.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_SURFACE_TYPE_VIDEO_INPUT_PRIVATE']/*\"/>\t\n            <msdn-id>dd318772</msdn-id>\t\n            <unmanaged>DXVAHD_SURFACE_TYPE_VIDEO_INPUT_PRIVATE</unmanaged>\t\n            <unmanaged-short>DXVAHD_SURFACE_TYPE_VIDEO_INPUT_PRIVATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.SurfaceTypeHD.VideoOutput\">\n            <summary>\t\n            <dd> <p>A surface for an output stream. This surface type is equivalent to an off-screen plain surface in Direct3D. The application can use the surface in Direct3D calls. </p> <p>This surface type is recommended for video processing applications that need to lock the surface and access the surface memory. For video playback with optimal performance, a render-target surface or swap chain is recommended instead.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_SURFACE_TYPE_VIDEO_OUTPUT']/*\"/>\t\n            <msdn-id>dd318772</msdn-id>\t\n            <unmanaged>DXVAHD_SURFACE_TYPE_VIDEO_OUTPUT</unmanaged>\t\n            <unmanaged-short>DXVAHD_SURFACE_TYPE_VIDEO_OUTPUT</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.VideoDeviceCapabilities\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='__MIDL___MIDL_itf_dxva2api_0000_0000_0009']/*\"/>\t\n            <unmanaged>__MIDL___MIDL_itf_dxva2api_0000_0000_0009</unmanaged>\t\n            <unmanaged-short>__MIDL___MIDL_itf_dxva2api_0000_0000_0009</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoDeviceCapabilities.HardwareDevice\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VPDev_HardwareDevice']/*\"/>\t\n            <unmanaged>DXVA2_VPDev_HardwareDevice</unmanaged>\t\n            <unmanaged-short>DXVA2_VPDev_HardwareDevice</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoDeviceCapabilities.EmulatedDXVA1\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VPDev_EmulatedDXVA1']/*\"/>\t\n            <unmanaged>DXVA2_VPDev_EmulatedDXVA1</unmanaged>\t\n            <unmanaged-short>DXVA2_VPDev_EmulatedDXVA1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoDeviceCapabilities.SoftwareDevice\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VPDev_SoftwareDevice']/*\"/>\t\n            <unmanaged>DXVA2_VPDev_SoftwareDevice</unmanaged>\t\n            <unmanaged-short>DXVA2_VPDev_SoftwareDevice</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.VideoChromaSubSampling\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Contains flags that define the chroma encoding scheme for Y'Cb'Cr' data.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>These flags are used with the <strong><see cref=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.VideoChromaSiting\"/></strong> attribute.</p><p>For more information about these values, see the remarks for the <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.VideoChromaSubSampling\"/></strong> enumeration, which is the DirectX Video Acceleration (DXVA) equivalent of this enumeration.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoChromaSubSampling']/*\"/>\t\n            <msdn-id>ms698989</msdn-id>\t\n            <unmanaged>DXVA2_VideoChromaSubSampling</unmanaged>\t\n            <unmanaged-short>DXVA2_VideoChromaSubSampling</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoChromaSubSampling.SamplingMask\">\n            <summary>\t\n            <dd> <p>Unknown encoding scheme.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoChromaSubsamplingMask']/*\"/>\t\n            <msdn-id>ms698989</msdn-id>\t\n            <unmanaged>DXVA2_VideoChromaSubsamplingMask</unmanaged>\t\n            <unmanaged-short>DXVA2_VideoChromaSubsamplingMask</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoChromaSubSampling.SamplingUnknown\">\n            <summary>\t\n            <dd> <p>Chroma should be reconstructed as if the underlying video was progressive content, rather than skipping fields or applying chroma filtering to minimize artifacts from reconstructing 4:2:0 interlaced chroma.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoChromaSubsampling_Unknown']/*\"/>\t\n            <msdn-id>ms698989</msdn-id>\t\n            <unmanaged>DXVA2_VideoChromaSubsampling_Unknown</unmanaged>\t\n            <unmanaged-short>DXVA2_VideoChromaSubsampling_Unknown</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoChromaSubSampling.SamplingProgressiveChroma\">\n            <summary>\t\n            <dd> <p>Chroma samples are aligned horizontally with the luma samples, or with multiples of the luma samples. If this flag is not set, chroma samples are located 1/2 pixel to the right of the corresponding luma sample.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoChromaSubsampling_ProgressiveChroma']/*\"/>\t\n            <msdn-id>ms698989</msdn-id>\t\n            <unmanaged>DXVA2_VideoChromaSubsampling_ProgressiveChroma</unmanaged>\t\n            <unmanaged-short>DXVA2_VideoChromaSubsampling_ProgressiveChroma</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoChromaSubSampling.SamplingHorizontallyCosited\">\n            <summary>\t\n            <dd> <p>Chroma samples are aligned vertically with the luma samples, or with multiples of the luma samples. If this flag is not set, chroma samples are located 1/2 pixel down from the corresponding luma sample.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoChromaSubsampling_Horizontally_Cosited']/*\"/>\t\n            <msdn-id>ms698989</msdn-id>\t\n            <unmanaged>DXVA2_VideoChromaSubsampling_Horizontally_Cosited</unmanaged>\t\n            <unmanaged-short>DXVA2_VideoChromaSubsampling_Horizontally_Cosited</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoChromaSubSampling.SamplingVerticallyCosited\">\n            <summary>\t\n            <dd> <p>The U and V planes are aligned vertically. If this flag is not set, the chroma planes are assumed to be out of phase by 1/2 chroma sample, alternating between a line of U followed by a line of V.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoChromaSubsampling_Vertically_Cosited']/*\"/>\t\n            <msdn-id>ms698989</msdn-id>\t\n            <unmanaged>DXVA2_VideoChromaSubsampling_Vertically_Cosited</unmanaged>\t\n            <unmanaged-short>DXVA2_VideoChromaSubsampling_Vertically_Cosited</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoChromaSubSampling.SamplingVerticallyAlignedChromaPlanes\">\n            <summary>\t\n            <dd> <p>Specifies the chroma encoding scheme for MPEG-2 video. Chroma samples are aligned horizontally with the luma samples, but are not aligned vertically. The U and V planes are aligned vertically.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoChromaSubsampling_Vertically_AlignedChromaPlanes']/*\"/>\t\n            <msdn-id>ms698989</msdn-id>\t\n            <unmanaged>DXVA2_VideoChromaSubsampling_Vertically_AlignedChromaPlanes</unmanaged>\t\n            <unmanaged-short>DXVA2_VideoChromaSubsampling_Vertically_AlignedChromaPlanes</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoChromaSubSampling.SamplingMpeg2\">\n            <summary>\t\n            <dd> <p>Specifies the chroma encoding scheme for MPEG-1 video.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoChromaSubsampling_MPEG2']/*\"/>\t\n            <msdn-id>ms698989</msdn-id>\t\n            <unmanaged>DXVA2_VideoChromaSubsampling_MPEG2</unmanaged>\t\n            <unmanaged-short>DXVA2_VideoChromaSubsampling_MPEG2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoChromaSubSampling.SamplingMpeg1\">\n            <summary>\t\n            <dd> <p>Specifies the chroma encoding scheme for PAL DV video.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoChromaSubsampling_MPEG1']/*\"/>\t\n            <msdn-id>ms698989</msdn-id>\t\n            <unmanaged>DXVA2_VideoChromaSubsampling_MPEG1</unmanaged>\t\n            <unmanaged-short>DXVA2_VideoChromaSubsampling_MPEG1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoChromaSubSampling.SamplingDvPal\">\n            <summary>\t\n            <dd> <p>Chroma samples are aligned vertically and horizontally with the luma samples. YUV formats such as 4:4:4, 4:2:2, and 4:1:1 are always cosited in both directions and should use this flag.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoChromaSubsampling_DV_PAL']/*\"/>\t\n            <msdn-id>ms698989</msdn-id>\t\n            <unmanaged>DXVA2_VideoChromaSubsampling_DV_PAL</unmanaged>\t\n            <unmanaged-short>DXVA2_VideoChromaSubsampling_DV_PAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoChromaSubSampling.SamplingCosited\">\n            <summary>\t\n            <dd> <p>Reserved.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoChromaSubsampling_Cosited']/*\"/>\t\n            <msdn-id>ms698989</msdn-id>\t\n            <unmanaged>DXVA2_VideoChromaSubsampling_Cosited</unmanaged>\t\n            <unmanaged-short>DXVA2_VideoChromaSubsampling_Cosited</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.VideoLighting\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Describes the intended lighting conditions for viewing video content. These flags are used in the <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.ExtendedFormat\"/></strong> structure.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This enumeration is equivalent to the <strong>DXVA_VideoLighting</strong> enumeration used in DXVA 1.0.</p><p>If you are using the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaType\"/></strong> interface to describe the video format, the video lighting is specified in the <strong><see cref=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.VideoLighting\"/></strong> attribute.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoLighting']/*\"/>\t\n            <msdn-id>ms703932</msdn-id>\t\n            <unmanaged>DXVA2_VideoLighting</unmanaged>\t\n            <unmanaged-short>DXVA2_VideoLighting</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoLighting.Mask\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoLightingMask']/*\"/>\t\n            <unmanaged>DXVA2_VideoLightingMask</unmanaged>\t\n            <unmanaged-short>DXVA2_VideoLightingMask</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoLighting.Unknown\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoLighting_Unknown']/*\"/>\t\n            <unmanaged>DXVA2_VideoLighting_Unknown</unmanaged>\t\n            <unmanaged-short>DXVA2_VideoLighting_Unknown</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoLighting.Bright\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoLighting_bright']/*\"/>\t\n            <unmanaged>DXVA2_VideoLighting_bright</unmanaged>\t\n            <unmanaged-short>DXVA2_VideoLighting_bright</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoLighting.Office\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoLighting_office']/*\"/>\t\n            <unmanaged>DXVA2_VideoLighting_office</unmanaged>\t\n            <unmanaged-short>DXVA2_VideoLighting_office</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoLighting.Dim\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoLighting_dim']/*\"/>\t\n            <unmanaged>DXVA2_VideoLighting_dim</unmanaged>\t\n            <unmanaged-short>DXVA2_VideoLighting_dim</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoLighting.Dark\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoLighting_dark']/*\"/>\t\n            <unmanaged>DXVA2_VideoLighting_dark</unmanaged>\t\n            <unmanaged-short>DXVA2_VideoLighting_dark</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.VideoPrimaries\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Specifies the color primaries of a video source. These flags are used in the <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.ExtendedFormat\"/></strong> structure.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Color primaries define how to convert RGB colors into the CIE XYZ color space, and can be used to translate colors between different RGB color spaces. An RGB color space is defined by the chromaticity coordinates (x,y) of the RGB primaries plus the white point, as listed in the following table.</p><table> <tr><th>Color space</th><th>(Rx, Ry)</th><th>(Gx, Gy)</th><th>(Bx, By)</th><th>White point (Wx, Wy)</th></tr> <tr><td>BT.709</td><td>(0.64, 0.33)</td><td>(0.30, 0.60)</td><td>(0.15, 0.06)</td><td> D65 (0.3127, 0.3290) </td></tr> <tr><td> BT.470-2 System M; EBU 3212 </td><td>(0.64, 0.33)</td><td>(0.29, 0.60)</td><td>(0.15, 0.06)</td><td> D65 (0.3127, 0.3290) </td></tr> <tr><td>BT.470-4 System B,G</td><td>(0.67, 0.33)</td><td>(0.21, 0.71)</td><td>(0.14, 0.08)</td><td> CIE III.C (0.310, 0.316) </td></tr> <tr><td> SMPTE 170M; SMPTE 240M; SMPTE C </td><td>(0.63, 0.34)</td><td>(0.31, 0.595)</td><td>(0.155, 0.07)</td><td> D65 (0.3127, 0.3291) </td></tr> </table><p>?</p><p>The z coordinates can be derived from x and y as follows: z = 1 - x - y. To convert between RGB colors to CIE XYZ tristimulus values, compute a matrix <em>T</em> as follows:</p><p>Given <em>T</em>, you can use the following formulas to convert between an RGB color value and a CIE XYZ tristimulus value. These formulas assume that the RGB components are linear (not gamma corrected) and are normalized to the range [0...1].</p><p>To convert colors directly from one RGB color space to another, use the following formula, where <em>T1</em> is the matrix for color space RGB1, and <em>T2</em> is the matrix for color space RGB2.</p><p>For a derivation of these formulas, refer to Charles Poynton, Digital Video and HDTV Algorithms and Interfaces (Morgan Kaufmann, 2003).</p><p> This enumeration is equivalent to the <strong>DXVA_VideoPrimaries</strong> enumeration used in DXVA 1.0. </p><p> If you are using the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaType\"/></strong> interface to describe the video format, the color primaries are specified in the <strong><see cref=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.VideoPrimaries\"/></strong> attribute. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoPrimaries']/*\"/>\t\n            <msdn-id>ms696997</msdn-id>\t\n            <unmanaged>DXVA2_VideoPrimaries</unmanaged>\t\n            <unmanaged-short>DXVA2_VideoPrimaries</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoPrimaries.Mask\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoPrimariesMask']/*\"/>\t\n            <unmanaged>DXVA2_VideoPrimariesMask</unmanaged>\t\n            <unmanaged-short>DXVA2_VideoPrimariesMask</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoPrimaries.Unknown\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoPrimaries_Unknown']/*\"/>\t\n            <unmanaged>DXVA2_VideoPrimaries_Unknown</unmanaged>\t\n            <unmanaged-short>DXVA2_VideoPrimaries_Unknown</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoPrimaries.Reserved\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoPrimaries_reserved']/*\"/>\t\n            <unmanaged>DXVA2_VideoPrimaries_reserved</unmanaged>\t\n            <unmanaged-short>DXVA2_VideoPrimaries_reserved</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoPrimaries.Bt709\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoPrimaries_BT709']/*\"/>\t\n            <unmanaged>DXVA2_VideoPrimaries_BT709</unmanaged>\t\n            <unmanaged-short>DXVA2_VideoPrimaries_BT709</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoPrimaries.Bt4702SysM\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoPrimaries_BT470_2_SysM']/*\"/>\t\n            <unmanaged>DXVA2_VideoPrimaries_BT470_2_SysM</unmanaged>\t\n            <unmanaged-short>DXVA2_VideoPrimaries_BT470_2_SysM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoPrimaries.Bt4702SysBG\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoPrimaries_BT470_2_SysBG']/*\"/>\t\n            <unmanaged>DXVA2_VideoPrimaries_BT470_2_SysBG</unmanaged>\t\n            <unmanaged-short>DXVA2_VideoPrimaries_BT470_2_SysBG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoPrimaries.Smpte170m\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoPrimaries_SMPTE170M']/*\"/>\t\n            <unmanaged>DXVA2_VideoPrimaries_SMPTE170M</unmanaged>\t\n            <unmanaged-short>DXVA2_VideoPrimaries_SMPTE170M</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoPrimaries.Smpte240m\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoPrimaries_SMPTE240M']/*\"/>\t\n            <unmanaged>DXVA2_VideoPrimaries_SMPTE240M</unmanaged>\t\n            <unmanaged-short>DXVA2_VideoPrimaries_SMPTE240M</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoPrimaries.Ebu3213\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoPrimaries_EBU3213']/*\"/>\t\n            <unmanaged>DXVA2_VideoPrimaries_EBU3213</unmanaged>\t\n            <unmanaged-short>DXVA2_VideoPrimaries_EBU3213</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoPrimaries.SmpteC\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoPrimaries_SMPTE_C']/*\"/>\t\n            <unmanaged>DXVA2_VideoPrimaries_SMPTE_C</unmanaged>\t\n            <unmanaged-short>DXVA2_VideoPrimaries_SMPTE_C</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.VideoProcessorOperations\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='__MIDL___MIDL_itf_dxva2api_0000_0000_0008']/*\"/>\t\n            <unmanaged>__MIDL___MIDL_itf_dxva2api_0000_0000_0008</unmanaged>\t\n            <unmanaged-short>__MIDL___MIDL_itf_dxva2api_0000_0000_0008</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoProcessorOperations.None\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoProcess_None']/*\"/>\t\n            <unmanaged>DXVA2_VideoProcess_None</unmanaged>\t\n            <unmanaged-short>DXVA2_VideoProcess_None</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoProcessorOperations.Yuv2rgb\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoProcess_YUV2RGB']/*\"/>\t\n            <unmanaged>DXVA2_VideoProcess_YUV2RGB</unmanaged>\t\n            <unmanaged-short>DXVA2_VideoProcess_YUV2RGB</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoProcessorOperations.StretchX\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoProcess_StretchX']/*\"/>\t\n            <unmanaged>DXVA2_VideoProcess_StretchX</unmanaged>\t\n            <unmanaged-short>DXVA2_VideoProcess_StretchX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoProcessorOperations.StretchY\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoProcess_StretchY']/*\"/>\t\n            <unmanaged>DXVA2_VideoProcess_StretchY</unmanaged>\t\n            <unmanaged-short>DXVA2_VideoProcess_StretchY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoProcessorOperations.AlphaBlend\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoProcess_AlphaBlend']/*\"/>\t\n            <unmanaged>DXVA2_VideoProcess_AlphaBlend</unmanaged>\t\n            <unmanaged-short>DXVA2_VideoProcess_AlphaBlend</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoProcessorOperations.SubRects\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoProcess_SubRects']/*\"/>\t\n            <unmanaged>DXVA2_VideoProcess_SubRects</unmanaged>\t\n            <unmanaged-short>DXVA2_VideoProcess_SubRects</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoProcessorOperations.SubStreams\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoProcess_SubStreams']/*\"/>\t\n            <unmanaged>DXVA2_VideoProcess_SubStreams</unmanaged>\t\n            <unmanaged-short>DXVA2_VideoProcess_SubStreams</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoProcessorOperations.SubStreamsExtended\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoProcess_SubStreamsExtended']/*\"/>\t\n            <unmanaged>DXVA2_VideoProcess_SubStreamsExtended</unmanaged>\t\n            <unmanaged-short>DXVA2_VideoProcess_SubStreamsExtended</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoProcessorOperations.YUV2RGBExtended\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoProcess_YUV2RGBExtended']/*\"/>\t\n            <unmanaged>DXVA2_VideoProcess_YUV2RGBExtended</unmanaged>\t\n            <unmanaged-short>DXVA2_VideoProcess_YUV2RGBExtended</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoProcessorOperations.AlphaBlendExtended\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoProcess_AlphaBlendExtended']/*\"/>\t\n            <unmanaged>DXVA2_VideoProcess_AlphaBlendExtended</unmanaged>\t\n            <unmanaged-short>DXVA2_VideoProcess_AlphaBlendExtended</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoProcessorOperations.Constriction\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoProcess_Constriction']/*\"/>\t\n            <unmanaged>DXVA2_VideoProcess_Constriction</unmanaged>\t\n            <unmanaged-short>DXVA2_VideoProcess_Constriction</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoProcessorOperations.NoiseFilter\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoProcess_NoiseFilter']/*\"/>\t\n            <unmanaged>DXVA2_VideoProcess_NoiseFilter</unmanaged>\t\n            <unmanaged-short>DXVA2_VideoProcess_NoiseFilter</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoProcessorOperations.DetailFilter\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoProcess_DetailFilter']/*\"/>\t\n            <unmanaged>DXVA2_VideoProcess_DetailFilter</unmanaged>\t\n            <unmanaged-short>DXVA2_VideoProcess_DetailFilter</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoProcessorOperations.PlanarAlpha\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoProcess_PlanarAlpha']/*\"/>\t\n            <unmanaged>DXVA2_VideoProcess_PlanarAlpha</unmanaged>\t\n            <unmanaged-short>DXVA2_VideoProcess_PlanarAlpha</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoProcessorOperations.LinearScaling\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoProcess_LinearScaling']/*\"/>\t\n            <unmanaged>DXVA2_VideoProcess_LinearScaling</unmanaged>\t\n            <unmanaged-short>DXVA2_VideoProcess_LinearScaling</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoProcessorOperations.GammaCompensated\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoProcess_GammaCompensated']/*\"/>\t\n            <unmanaged>DXVA2_VideoProcess_GammaCompensated</unmanaged>\t\n            <unmanaged-short>DXVA2_VideoProcess_GammaCompensated</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoProcessorOperations.MaintainsOriginalFieldData\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoProcess_MaintainsOriginalFieldData']/*\"/>\t\n            <unmanaged>DXVA2_VideoProcess_MaintainsOriginalFieldData</unmanaged>\t\n            <unmanaged-short>DXVA2_VideoProcess_MaintainsOriginalFieldData</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.VideoProcessorSettings\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='__MIDL___MIDL_itf_dxva2api_0000_0000_0007']/*\"/>\t\n            <unmanaged>__MIDL___MIDL_itf_dxva2api_0000_0000_0007</unmanaged>\t\n            <unmanaged-short>__MIDL___MIDL_itf_dxva2api_0000_0000_0007</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoProcessorSettings.None\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_ProcAmp_None']/*\"/>\t\n            <unmanaged>DXVA2_ProcAmp_None</unmanaged>\t\n            <unmanaged-short>DXVA2_ProcAmp_None</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoProcessorSettings.Brightness\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_ProcAmp_Brightness']/*\"/>\t\n            <unmanaged>DXVA2_ProcAmp_Brightness</unmanaged>\t\n            <unmanaged-short>DXVA2_ProcAmp_Brightness</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoProcessorSettings.Contrast\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_ProcAmp_Contrast']/*\"/>\t\n            <unmanaged>DXVA2_ProcAmp_Contrast</unmanaged>\t\n            <unmanaged-short>DXVA2_ProcAmp_Contrast</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoProcessorSettings.Hue\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_ProcAmp_Hue']/*\"/>\t\n            <unmanaged>DXVA2_ProcAmp_Hue</unmanaged>\t\n            <unmanaged-short>DXVA2_ProcAmp_Hue</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoProcessorSettings.Saturation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_ProcAmp_Saturation']/*\"/>\t\n            <unmanaged>DXVA2_ProcAmp_Saturation</unmanaged>\t\n            <unmanaged-short>DXVA2_ProcAmp_Saturation</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.VideoTransferFunction\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Specifies the conversion function from linear RGB to non-linear RGB (R'G'B'). These flags are used in the <see cref=\"T:SharpDX.MediaFoundation.DirectX.ExtendedFormat\"/> Structure. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The following table shows the formulas for the most common transfer functions. In these formulas, L is the linear value and L' is the non-linear (gamma corrected) value. These values are relative to a normalized range [0...1].</p><table> <tr><th>Color space</th><th>Transfer function</th></tr> <tr><td>sRGB (8-bit)</td><td> <p>L' = 12.92L, for L &lt; 0.031308</p> <p>L' = 1.055L^1/2.4? 0.055, for L &gt;= 0.031308</p> </td></tr> <tr><td>BT.470-2 System B, G</td><td>L' = L^0.36</td></tr> <tr><td>BT.470-2 System M</td><td>L' = L^0.45</td></tr> <tr><td>BT.709</td><td> <p>L' = 4.50L, for L &lt; 0.018</p> <p>L' = 1.099L^0.45? 0.099, for L &gt;= 0.018</p> </td></tr> <tr><td>scRGB</td><td>L' = L</td></tr> <tr><td>SMPTE 240M</td><td> <p>L' = 4.0L, for L &lt; 0.0228</p> <p>L' = 1.1115L^0.45? 0.01115, for L &gt;= 0.0228</p> </td></tr> </table><p>?</p><p>The following table shows the inverse formulas to obtain the original gamma-corrected values:</p><table> <tr><th>Color space</th><th>Transfer function</th></tr> <tr><td>sRGB (8-bit)</td><td> <p>L = 1/12.92L', for L' &lt; 0.03928</p> <p>L = ((L' + 0.055)/1055)^2.4, for L' &gt;= 0.03928</p> </td></tr> <tr><td>BT.470-2 System B, G</td><td>L = L'^1/0.36</td></tr> <tr><td>BT.470-2 System M</td><td>L = L'^1/0.45</td></tr> <tr><td>BT.709</td><td> <p>L = L'/4.50, for L' &lt; 0.081</p> <p>L = ((L' + 0.099) / 1.099)^1/0.45, for L' &gt;= 0.081</p> </td></tr> <tr><td>scRGB</td><td>L = L'</td></tr> <tr><td>SMPTE 240M</td><td> <p>L = L'/4.0, for L' &lt; 0.0913</p> <p>L= ((L' + 0.1115)/1.1115)^1/0.45, for L' &gt;= 0.0913</p> </td></tr> </table><p>?</p><p>This enumeration is equivalent to the <strong>DXVA_VideoTransferFunction</strong> enumeration used in DXVA 1.0.</p><p>If you are using the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaType\"/></strong> interface to describe the video format, the transfer function is specified in the <strong><see cref=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.TransferFunction\"/></strong> attribute.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoTransferFunction']/*\"/>\t\n            <msdn-id>bb970392</msdn-id>\t\n            <unmanaged>DXVA2_VideoTransferFunction</unmanaged>\t\n            <unmanaged-short>DXVA2_VideoTransferFunction</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoTransferFunction.FuncMask\">\n            <summary>\t\n            <dd> <p> Bitmask to validate flag values. This value is not a valid flag. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoTransFuncMask']/*\"/>\t\n            <msdn-id>bb970392</msdn-id>\t\n            <unmanaged>DXVA2_VideoTransFuncMask</unmanaged>\t\n            <unmanaged-short>DXVA2_VideoTransFuncMask</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoTransferFunction.FuncUnknown\">\n            <summary>\t\n            <dd> <p> Unknown. Treat as <see cref=\"F:SharpDX.MediaFoundation.DirectX.VideoTransferFunction.Func709\"/>. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoTransFunc_Unknown']/*\"/>\t\n            <msdn-id>bb970392</msdn-id>\t\n            <unmanaged>DXVA2_VideoTransFunc_Unknown</unmanaged>\t\n            <unmanaged-short>DXVA2_VideoTransFunc_Unknown</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoTransferFunction.Func10\">\n            <summary>\t\n            <dd> <p> Linear RGB (gamma = 1.0). </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoTransFunc_10']/*\"/>\t\n            <msdn-id>bb970392</msdn-id>\t\n            <unmanaged>DXVA2_VideoTransFunc_10</unmanaged>\t\n            <unmanaged-short>DXVA2_VideoTransFunc_10</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoTransferFunction.Func18\">\n            <summary>\t\n            <dd> <p> True 1.8 gamma, L' = L^1/1.8. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoTransFunc_18']/*\"/>\t\n            <msdn-id>bb970392</msdn-id>\t\n            <unmanaged>DXVA2_VideoTransFunc_18</unmanaged>\t\n            <unmanaged-short>DXVA2_VideoTransFunc_18</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoTransferFunction.Func20\">\n            <summary>\t\n            <dd> <p> True 2.0 gamma, L' = L^1/2.0. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoTransFunc_20']/*\"/>\t\n            <msdn-id>bb970392</msdn-id>\t\n            <unmanaged>DXVA2_VideoTransFunc_20</unmanaged>\t\n            <unmanaged-short>DXVA2_VideoTransFunc_20</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoTransferFunction.Func22\">\n            <summary>\t\n            <dd> <p> True 2.2 gamma, L' = L^1/2.2. This transfer function is used in ITU-R BT.470-2 System M (NTSC). </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoTransFunc_22']/*\"/>\t\n            <msdn-id>bb970392</msdn-id>\t\n            <unmanaged>DXVA2_VideoTransFunc_22</unmanaged>\t\n            <unmanaged-short>DXVA2_VideoTransFunc_22</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoTransferFunction.Func709\">\n            <summary>\t\n            <dd> <p>ITU-R BT.709 transfer function. Gamma 2.2 curve with a linear segment in the lower range. This transfer function is used in BT.709, BT.601, SMPTE 296M, SMPTE 170M, BT.470, and SMPTE 274M. In addition BT-1361 uses this function within the range [0...1].</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoTransFunc_709']/*\"/>\t\n            <msdn-id>bb970392</msdn-id>\t\n            <unmanaged>DXVA2_VideoTransFunc_709</unmanaged>\t\n            <unmanaged-short>DXVA2_VideoTransFunc_709</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoTransferFunction.Func240m\">\n            <summary>\t\n            <dd> <p> SMPTE 240M transfer function. Gamma 2.2 curve with a linear segment in the lower range. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoTransFunc_240M']/*\"/>\t\n            <msdn-id>bb970392</msdn-id>\t\n            <unmanaged>DXVA2_VideoTransFunc_240M</unmanaged>\t\n            <unmanaged-short>DXVA2_VideoTransFunc_240M</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoTransferFunction.FuncSRGB\">\n            <summary>\t\n            <dd> <p> sRGB transfer function. Gamma 2.4 curve with a linear segment in the lower range. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoTransFunc_sRGB']/*\"/>\t\n            <msdn-id>bb970392</msdn-id>\t\n            <unmanaged>DXVA2_VideoTransFunc_sRGB</unmanaged>\t\n            <unmanaged-short>DXVA2_VideoTransFunc_sRGB</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoTransferFunction.Func28\">\n            <summary>\t\n            <dd> <p> True 2.8 gamma. L' = L^1/2.8. This transfer function is used in ITU-R BT.470-2 System B, G (PAL). </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoTransFunc_28']/*\"/>\t\n            <msdn-id>bb970392</msdn-id>\t\n            <unmanaged>DXVA2_VideoTransFunc_28</unmanaged>\t\n            <unmanaged-short>DXVA2_VideoTransFunc_28</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.VideoTransferMatrix\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Describes the conversion matrices between Y'PbPr (component video) and studio R'G'B'. These flags are used in the <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.ExtendedFormat\"/></strong> structure.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The transfer matrices are defined as follows.</p><p>BT.709 transfer matrices:</p><code>Y'        0.212600    0.715200    0.072200       R' \t\n            Pb   =   -0.114572   -0.385428    0.500000   x   G' \t\n            Pr        0.500000   -0.454153   -0.045847       B'  R'        1.000000    0.000000    1.574800       Y' \t\n            G'   =    1.000000   -0.187324   -0.468124   x   Pb \t\n            B'        1.000000    1.855600    0.000000       Pr \t\n            </code><p>BT.601 transfer matrices:</p><code>Y'        0.299000    0.587000    0.114000       R' \t\n            Pb   =   -0.168736   -0.331264    0.500000   x   G' \t\n            Pr        0.500000   -0.418688   -0.081312       B'  R'        1.000000    0.000000    1.402000       Y' \t\n            G'   =    1.000000   -0.344136   -0.714136   x   Pb \t\n            B'        1.000000    1.772000    0.000000       Pr \t\n            </code><p>SMPTE 240M (SMPTE RP 145) transfer matrices:</p><code>Y'        0.212000    0.701000    0.087000       R' \t\n            Pb   =   -0.116000   -0.384000    0.500000   x   G' \t\n            Pr        0.500000   -0.445000   -0.055000       B'  R'        1.000000   -0.000000    1.576000       Y' \t\n            G'   =    1.000000   -0.227000   -0.477000   x   Pb \t\n            B'        1.000000    1.826000    0.000000       Pr \t\n            </code><p>This enumeration is equivalent to the <strong>DXVA_VideoTransferMatrix</strong> enumeration used in DXVA 1.0.</p><p>If you are using the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaType\"/></strong> interface to describe the video format, the video transfer matrix is specified in the <strong><see cref=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.YuvMatrix\"/></strong> attribute.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoTransferMatrix']/*\"/>\t\n            <msdn-id>ms698715</msdn-id>\t\n            <unmanaged>DXVA2_VideoTransferMatrix</unmanaged>\t\n            <unmanaged-short>DXVA2_VideoTransferMatrix</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoTransferMatrix.Mask\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoTransferMatrixMask']/*\"/>\t\n            <unmanaged>DXVA2_VideoTransferMatrixMask</unmanaged>\t\n            <unmanaged-short>DXVA2_VideoTransferMatrixMask</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoTransferMatrix.Unknown\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoTransferMatrix_Unknown']/*\"/>\t\n            <unmanaged>DXVA2_VideoTransferMatrix_Unknown</unmanaged>\t\n            <unmanaged-short>DXVA2_VideoTransferMatrix_Unknown</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoTransferMatrix.Bt709\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoTransferMatrix_BT709']/*\"/>\t\n            <unmanaged>DXVA2_VideoTransferMatrix_BT709</unmanaged>\t\n            <unmanaged-short>DXVA2_VideoTransferMatrix_BT709</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoTransferMatrix.Bt601\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoTransferMatrix_BT601']/*\"/>\t\n            <unmanaged>DXVA2_VideoTransferMatrix_BT601</unmanaged>\t\n            <unmanaged-short>DXVA2_VideoTransferMatrix_BT601</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoTransferMatrix.Smpte240m\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoTransferMatrix_SMPTE240M']/*\"/>\t\n            <unmanaged>DXVA2_VideoTransferMatrix_SMPTE240M</unmanaged>\t\n            <unmanaged-short>DXVA2_VideoTransferMatrix_SMPTE240M</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.DXVAFactory\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.MediaFoundation.DirectX.DXVAFactory']/*\"/>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.DirectX.DXVAFactory.CreateDirect3DDeviceManager9(System.Int32@,SharpDX.MediaFoundation.DirectX.IDirect3DDeviceManager9@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Creates an instance of the Direct3D Device Manager. </p>\t\n            </summary>\t\n            <param name=\"resetTokenRef\">No documentation.</param>\t\n            <param name=\"deviceManagerOut\">No documentation.</param>\t\n            <returns><p>If this function succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2CreateDirect3DDeviceManager9']/*\"/>\t\n            <msdn-id>bb970490</msdn-id>\t\n            <unmanaged>HRESULT DXVA2CreateDirect3DDeviceManager9([Out] unsigned int* pResetToken,[Out] IDirect3DDeviceManager9** ppDeviceManager)</unmanaged>\t\n            <unmanaged-short>DXVA2CreateDirect3DDeviceManager9</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.DirectX.DXVAFactory.CreateVideoService(SharpDX.Direct3D9.Device,System.Guid,System.IntPtr@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Creates a DirectX Video Acceleration (DXVA) services object. Call this function if your application uses DXVA directly, without using DirectShow or Media Foundation. </p>\t\n            </summary>\t\n            <param name=\"dDRef\"><dd> <p> A reference to the <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface of a Direct3D device. </p> </dd></param>\t\n            <param name=\"riid\"><dd> <p> The interface identifier (IID) of the requested interface. Any of the following interfaces might be supported by the Direct3D device: </p> <ul> <li> <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.VideoAccelerationService\"/></strong> </li> <li> <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.VideoDecoderService\"/></strong> </li> <li> <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.VideoProcessorService\"/></strong> </li> </ul> </dd></param>\t\n            <param name=\"serviceOut\"><dd> <p> Receives a reference to the interface. The caller must release the interface. </p> </dd></param>\t\n            <returns><p>If this function succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2CreateVideoService']/*\"/>\t\n            <msdn-id>ms704721</msdn-id>\t\n            <unmanaged>HRESULT DXVA2CreateVideoService([In] IDirect3DDevice9* pDD,[In] const GUID&amp; riid,[Out] void** ppService)</unmanaged>\t\n            <unmanaged-short>DXVA2CreateVideoService</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.DirectX.DXVAFactory.CreateDevice(SharpDX.Direct3D9.DeviceEx,SharpDX.MediaFoundation.DirectX.ContentDescription@,SharpDX.MediaFoundation.DirectX.DeviceUsage,SharpDX.FunctionCallback,SharpDX.MediaFoundation.DirectX.HDDevice@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Creates a Microsoft DirectX Video Acceleration High Definition (DXVA-HD) device.</p>\t\n            </summary>\t\n            <param name=\"d3DDeviceRef\"><dd> <p>A reference to the <strong><see cref=\"T:SharpDX.Direct3D9.DeviceEx\"/></strong> interface of a Direct3D 9 device.</p> </dd></param>\t\n            <param name=\"contentDescRef\"><dd> <p>A reference to a <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.ContentDescription\"/></strong> structure that describes the video content. The driver uses this information as a hint when it creates the device.</p> </dd></param>\t\n            <param name=\"usage\"><dd> <p>A member of the <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.DeviceUsage\"/></strong> enumeration, describing how the device will be used. The value indicates the desired trade-off between speed and video quality. The driver uses this flag as a hint when it creates the device.</p> </dd></param>\t\n            <param name=\"pluginRef\"><dd> <p>A reference to an initialization function for a software device. Set this reference if you are using a software plug-in device. Otherwise, set this parameter to <strong><c>null</c></strong>. If the value is <strong><c>null</c></strong>, the driver creates the DXVA-HD device.</p> <p>The function reference type is <strong>PDXVAHDSW_Plugin</strong>.</p> </dd></param>\t\n            <param name=\"deviceOut\"><dd> <p>Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.HDDevice\"/></strong> interface. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong>E_NOINTERFACE</strong></dt> </dl> </td><td> <p>The Direct3D device does not support DXVA-HD.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> Use the <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.HDDevice\"/></strong> interface to get the device capabilities, create the video processor, and allocate video surfaces. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_CreateDevice']/*\"/>\t\n            <msdn-id>dd318412</msdn-id>\t\n            <unmanaged>HRESULT DXVAHD_CreateDevice([In] IDirect3DDevice9Ex* pD3DDevice,[In] const DXVAHD_CONTENT_DESC* pContentDesc,[In] DXVAHD_DEVICE_USAGE Usage,[In, Optional] __function__stdcall* pPlugin,[Out] IDXVAHD_Device** ppDevice)</unmanaged>\t\n            <unmanaged-short>DXVAHD_CreateDevice</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.HDDevice\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Gets the range of values for an image filter that the Microsoft DirectX Video Acceleration High Definition (DXVA-HD) device supports. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>To find out which image filters the device supports, check the <strong>FilterCaps</strong> member of the <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.Vpdevcaps\"/></strong> structure. Call the <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.HDDevice.GetVideoProcessorDeviceCaps(SharpDX.MediaFoundation.DirectX.Vpdevcaps@)\"/></strong> method to get this value.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXVAHD_Device']/*\"/>\t\n            <msdn-id>dd373915</msdn-id>\t\n            <unmanaged>IDXVAHD_Device</unmanaged>\t\n            <unmanaged-short>IDXVAHD_Device</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.DirectX.HDDevice.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.DirectX.HDDevice\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.DirectX.HDDevice.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.DirectX.HDDevice\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.DirectX.HDDevice\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.DirectX.HDDevice.CreateVideoSurface(System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,System.Int32,SharpDX.MediaFoundation.DirectX.SurfaceTypeHD,System.Int32,SharpDX.Direct3D9.Surface[],System.IntPtr)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Creates one or more Microsoft Direct3D video surfaces.</p>\t\n            </summary>\t\n            <param name=\"width\"><dd> <p>The width of each surface, in pixels.</p> </dd></param>\t\n            <param name=\"height\"><dd> <p>The height of each surface, in pixels.</p> </dd></param>\t\n            <param name=\"format\"><dd> <p>The pixel format, specified as a <strong><see cref=\"T:SharpDX.Direct3D9.Format\"/></strong> value or FOURCC code. For more information, see Video FOURCCs.</p> </dd></param>\t\n            <param name=\"pool\"><dd> <p>The memory pool in which the surface is  created. This parameter must equal the <strong>InputPool</strong> member of the <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.Vpdevcaps\"/></strong> structure. Call the <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.HDDevice.GetVideoProcessorDeviceCaps(SharpDX.MediaFoundation.DirectX.Vpdevcaps@)\"/></strong> method to get this value.</p> </dd></param>\t\n            <param name=\"usage\"><dd> <p>Reserved. Set to 0.</p> </dd></param>\t\n            <param name=\"type\"><dd> <p>The type of surface to create, specified as a member of the <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.SurfaceTypeHD\"/></strong> enumeration.</p> </dd></param>\t\n            <param name=\"numSurfaces\"><dd> <p>The number of surfaces to create.</p> </dd></param>\t\n            <param name=\"surfacesOut\"><dd> <p>A reference to an array of <strong><see cref=\"T:SharpDX.Direct3D9.Surface\"/></strong> references. The <em>NumSurfaces</em> parameter specifies the number of elements in the array. The method fills the array with references to the new video surfaces. The caller must release the references.</p> </dd></param>\t\n            <param name=\"sharedHandleRef\"><dd> <p>Reserved. Set to <strong><c>null</c></strong>.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXVAHD_Device::CreateVideoSurface']/*\"/>\t\n            <msdn-id>dd373911</msdn-id>\t\n            <unmanaged>HRESULT IDXVAHD_Device::CreateVideoSurface([In] unsigned int Width,[In] unsigned int Height,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Usage,[In] DXVAHD_SURFACE_TYPE Type,[In] unsigned int NumSurfaces,[Out, Buffer] IDirect3DSurface9** ppSurfaces,[InOut, Optional] void** pSharedHandle)</unmanaged>\t\n            <unmanaged-short>IDXVAHD_Device::CreateVideoSurface</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.DirectX.HDDevice.GetVideoProcessorDeviceCaps(SharpDX.MediaFoundation.DirectX.Vpdevcaps@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Gets the capabilities of the Microsoft DirectX Video Acceleration High Definition (DXVA-HD) device.</p>\t\n            </summary>\t\n            <param name=\"capsRef\"><dd> <p>A reference to a <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.Vpdevcaps\"/></strong> structure that receives the device capabilities.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXVAHD_Device::GetVideoProcessorDeviceCaps']/*\"/>\t\n            <msdn-id>dd373914</msdn-id>\t\n            <unmanaged>HRESULT IDXVAHD_Device::GetVideoProcessorDeviceCaps([Out] DXVAHD_VPDEVCAPS* pCaps)</unmanaged>\t\n            <unmanaged-short>IDXVAHD_Device::GetVideoProcessorDeviceCaps</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.DirectX.HDDevice.GetVideoProcessorOutputFormats(System.Int32,SharpDX.Direct3D9.Format[])\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Gets a list of the output formats supported by the Microsoft DirectX Video Acceleration High Definition (DXVA-HD) device.</p>\t\n            </summary>\t\n            <param name=\"count\"><dd> <p>The number of formats to retrieve. This parameter must equal the <strong>OutputFormatCount</strong> member of the <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.Vpdevcaps\"/></strong> structure. Call the <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.HDDevice.GetVideoProcessorDeviceCaps(SharpDX.MediaFoundation.DirectX.Vpdevcaps@)\"/></strong> method to get this value.</p> </dd></param>\t\n            <param name=\"formatsRef\"><dd> <p>A reference to an array of <strong><see cref=\"T:SharpDX.Direct3D9.Format\"/></strong> values. The <em>Count</em> parameter specifies the number of elements in the array. The method fills the array with a list of output formats.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p> The list of formats can include both <strong><see cref=\"T:SharpDX.Direct3D9.Format\"/></strong> values, such as <strong><see cref=\"F:SharpDX.Direct3D9.Format.X8R8G8B8\"/></strong>, and FOURCC codes, such as 'NV12'. For more information, see Video FOURCCs. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXVAHD_Device::GetVideoProcessorOutputFormats']/*\"/>\t\n            <msdn-id>dd373917</msdn-id>\t\n            <unmanaged>HRESULT IDXVAHD_Device::GetVideoProcessorOutputFormats([In] unsigned int Count,[Out, Buffer] D3DFORMAT* pFormats)</unmanaged>\t\n            <unmanaged-short>IDXVAHD_Device::GetVideoProcessorOutputFormats</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.DirectX.HDDevice.GetVideoProcessorInputFormats(System.Int32,SharpDX.Direct3D9.Format[])\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"count\">No documentation.</param>\t\n            <param name=\"formatsRef\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXVAHD_Device::GetVideoProcessorInputFormats']/*\"/>\t\n            <unmanaged>HRESULT IDXVAHD_Device::GetVideoProcessorInputFormats([In] unsigned int Count,[Out, Buffer] D3DFORMAT* pFormats)</unmanaged>\t\n            <unmanaged-short>IDXVAHD_Device::GetVideoProcessorInputFormats</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.DirectX.HDDevice.GetVideoProcessorCaps(System.Int32,SharpDX.MediaFoundation.DirectX.Vpcaps[])\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Gets the capabilities of one or more Microsoft DirectX Video Acceleration High Definition (DXVA-HD) video processors.</p>\t\n            </summary>\t\n            <param name=\"count\"><dd> <p>The number of elements in the <em>pCaps</em> array. This parameter must equal the <strong>VideoProcessorCount</strong> member of the <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.Vpdevcaps\"/></strong> structure. Call the <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.HDDevice.GetVideoProcessorDeviceCaps(SharpDX.MediaFoundation.DirectX.Vpdevcaps@)\"/></strong> method to get this value.</p> </dd></param>\t\n            <param name=\"capsRef\"><dd> <p>A reference to an array of <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.Vpcaps\"/></strong> structures. The method fills the structures with the capabilities of the video processors supported by the driver.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXVAHD_Device::GetVideoProcessorCaps']/*\"/>\t\n            <msdn-id>dd373912</msdn-id>\t\n            <unmanaged>HRESULT IDXVAHD_Device::GetVideoProcessorCaps([In] unsigned int Count,[Out, Buffer] DXVAHD_VPCAPS* pCaps)</unmanaged>\t\n            <unmanaged-short>IDXVAHD_Device::GetVideoProcessorCaps</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.DirectX.HDDevice.GetVideoProcessorCustomRates(System.Guid,System.Int32,SharpDX.MediaFoundation.DirectX.CustomRateData[])\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Gets a list of custom rates that a Microsoft DirectX Video Acceleration High Definition (DXVA-HD) video processor supports. Custom rates are used for frame-rate conversion and inverse telecine (IVTC).</p>\t\n            </summary>\t\n            <param name=\"vPGuidRef\"><dd> <p>A <see cref=\"T:System.Guid\"/> that identifies the video processor to query. This <see cref=\"T:System.Guid\"/> must equal the valud of the <strong>VPGuid</strong> member from one of the <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.Vpcaps\"/></strong> structures retrieved by the <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.HDDevice.GetVideoProcessorCaps(System.Int32,SharpDX.MediaFoundation.DirectX.Vpcaps[])\"/></strong> method.</p> </dd></param>\t\n            <param name=\"count\"><dd> <p>The number of rates to retrieve. This parameter must equal the <strong>CustomRateCount</strong> member of the <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.Vpcaps\"/></strong> structure for the video processor. </p> </dd></param>\t\n            <param name=\"ratesRef\"><dd> <p>A reference to an array of <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.CustomRateData\"/></strong> structures. The <em>Count</em> parameter specifies the number of elements in the array. The method fills the array with a list of custom rates.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXVAHD_Device::GetVideoProcessorCustomRates']/*\"/>\t\n            <msdn-id>dd373913</msdn-id>\t\n            <unmanaged>HRESULT IDXVAHD_Device::GetVideoProcessorCustomRates([In] const GUID* pVPGuid,[In] unsigned int Count,[Out, Buffer] DXVAHD_CUSTOM_RATE_DATA* pRates)</unmanaged>\t\n            <unmanaged-short>IDXVAHD_Device::GetVideoProcessorCustomRates</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.DirectX.HDDevice.GetVideoProcessorFilterRange(SharpDX.MediaFoundation.DirectX.Filter,SharpDX.MediaFoundation.DirectX.FilterRangeData@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Gets the range of values for an image filter that the Microsoft DirectX Video Acceleration High Definition (DXVA-HD) device supports. </p>\t\n            </summary>\t\n            <param name=\"filter\"><dd> <p>The type of image filter, specified as a member of the <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.Filter\"/></strong> enumeration.</p> </dd></param>\t\n            <param name=\"rangeRef\"><dd> <p>A reference to a <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.FilterRangeData\"/></strong> structure. The method fills the structure with the range of values for the specified filter.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong>E_INVALIDARG</strong></dt> </dl> </td><td> <p>The <em>Filter</em> parameter is invalid or the device does not support the specified filter.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>To find out which image filters the device supports, check the <strong>FilterCaps</strong> member of the <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.Vpdevcaps\"/></strong> structure. Call the <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.HDDevice.GetVideoProcessorDeviceCaps(SharpDX.MediaFoundation.DirectX.Vpdevcaps@)\"/></strong> method to get this value.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXVAHD_Device::GetVideoProcessorFilterRange']/*\"/>\t\n            <msdn-id>dd373915</msdn-id>\t\n            <unmanaged>HRESULT IDXVAHD_Device::GetVideoProcessorFilterRange([In] DXVAHD_FILTER Filter,[Out] DXVAHD_FILTER_RANGE_DATA* pRange)</unmanaged>\t\n            <unmanaged-short>IDXVAHD_Device::GetVideoProcessorFilterRange</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.DirectX.HDDevice.CreateVideoProcessor(System.Guid,SharpDX.MediaFoundation.DirectX.HDVideoProcessor@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Creates a Microsoft DirectX Video Acceleration High Definition (DXVA-HD) video processor.</p>\t\n            </summary>\t\n            <param name=\"vPGuidRef\"><dd> <p>A <see cref=\"T:System.Guid\"/> that identifies the video processor to create. This <see cref=\"T:System.Guid\"/> must equal the value of the <strong>VPGuid</strong> member from one of the <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.Vpcaps\"/></strong> structures retrieved by the <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.HDDevice.GetVideoProcessorCaps(System.Int32,SharpDX.MediaFoundation.DirectX.Vpcaps[])\"/></strong> method.</p> </dd></param>\t\n            <param name=\"videoProcessorOut\"><dd> <p>Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.HDVideoProcessor\"/></strong> interface. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXVAHD_Device::CreateVideoProcessor']/*\"/>\t\n            <msdn-id>dd373910</msdn-id>\t\n            <unmanaged>HRESULT IDXVAHD_Device::CreateVideoProcessor([In] const GUID* pVPGuid,[Out] IDXVAHD_VideoProcessor** ppVideoProcessor)</unmanaged>\t\n            <unmanaged-short>IDXVAHD_Device::CreateVideoProcessor</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.DirectX.HDDevice.VideoProcessorDeviceCaps\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Gets the capabilities of the Microsoft DirectX Video Acceleration High Definition (DXVA-HD) device.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXVAHD_Device::GetVideoProcessorDeviceCaps']/*\"/>\t\n            <msdn-id>dd373914</msdn-id>\t\n            <unmanaged>GetVideoProcessorDeviceCaps</unmanaged>\t\n            <unmanaged-short>GetVideoProcessorDeviceCaps</unmanaged-short>\t\n            <unmanaged>HRESULT IDXVAHD_Device::GetVideoProcessorDeviceCaps([Out] DXVAHD_VPDEVCAPS* pCaps)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.HDVideoProcessor\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Represents a Microsoft DirectX Video Acceleration High Definition (DXVA-HD) video processor. </p><p>To get a reference to this interface, call the <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.HDDevice.CreateVideoProcessor(System.Guid,SharpDX.MediaFoundation.DirectX.HDVideoProcessor@)\"/></strong> method.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXVAHD_VideoProcessor']/*\"/>\t\n            <msdn-id>dd373918</msdn-id>\t\n            <unmanaged>IDXVAHD_VideoProcessor</unmanaged>\t\n            <unmanaged-short>IDXVAHD_VideoProcessor</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.DirectX.HDVideoProcessor.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.DirectX.HDVideoProcessor\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.DirectX.HDVideoProcessor.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.DirectX.HDVideoProcessor\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.DirectX.HDVideoProcessor\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.DirectX.HDVideoProcessor.SetVideoProcessBltState(SharpDX.MediaFoundation.DirectX.BlitState,System.Int32,System.IntPtr)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Sets a state parameter for a blit operation by a Microsoft DirectX Video Acceleration High Definition (DXVA-HD) device.</p>\t\n            </summary>\t\n            <param name=\"state\"><dd> <p>The state parameter to set, specified as a member of the <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.BlitState\"/></strong> enumeration.</p> </dd></param>\t\n            <param name=\"dataSize\"><dd> <p>The size, in bytes, of the buffer pointed to by <em>pData</em>.</p> </dd></param>\t\n            <param name=\"dataRef\"><dd> <p>A reference to a buffer that contains the state data. The meaning of the data depends on the <em>State</em> parameter. Each state has a corresponding data structure; for more information, see <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.BlitState\"/></strong>. The caller allocates the buffer and fills in the parameter data before calling this method.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXVAHD_VideoProcessor::SetVideoProcessBltState']/*\"/>\t\n            <msdn-id>dd373921</msdn-id>\t\n            <unmanaged>HRESULT IDXVAHD_VideoProcessor::SetVideoProcessBltState([In] DXVAHD_BLT_STATE State,[In] unsigned int DataSize,[In, Buffer] const void* pData)</unmanaged>\t\n            <unmanaged-short>IDXVAHD_VideoProcessor::SetVideoProcessBltState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.DirectX.HDVideoProcessor.GetVideoProcessBltState(SharpDX.MediaFoundation.DirectX.BlitState,System.Int32,System.IntPtr)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Gets the value of a state parameter for blit operations performed by a Microsoft DirectX Video Acceleration High Definition (DXVA-HD) device.</p>\t\n            </summary>\t\n            <param name=\"state\"><dd> <p>The state parameter to query, specified as a member of the <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.BlitState\"/></strong> enumeration.</p> </dd></param>\t\n            <param name=\"dataSize\"><dd> <p>The size, in bytes, of the buffer pointed to by <em>pData</em>.</p> </dd></param>\t\n            <param name=\"dataRef\"><dd> <p>A reference to a buffer allocated by the caller. The method copies the state data into the buffer. The buffer must be large enough to hold the data structure that corresponds to the state parameter. For more information, see <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.BlitState\"/></strong>.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXVAHD_VideoProcessor::GetVideoProcessBltState']/*\"/>\t\n            <msdn-id>dd373919</msdn-id>\t\n            <unmanaged>HRESULT IDXVAHD_VideoProcessor::GetVideoProcessBltState([In] DXVAHD_BLT_STATE State,[In] unsigned int DataSize,[Out, Buffer] void* pData)</unmanaged>\t\n            <unmanaged-short>IDXVAHD_VideoProcessor::GetVideoProcessBltState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.DirectX.HDVideoProcessor.SetVideoProcessStreamState(System.Int32,SharpDX.MediaFoundation.DirectX.StreamState,System.Int32,System.IntPtr)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Sets a state parameter for an input stream on a  Microsoft DirectX Video Acceleration High Definition (DXVA-HD) device.</p>\t\n            </summary>\t\n            <param name=\"streamNumber\"><dd> <p>The zero-based index of the input stream. To get the maximum number of streams, call <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.HDDevice.GetVideoProcessorDeviceCaps(SharpDX.MediaFoundation.DirectX.Vpdevcaps@)\"/></strong> and check the <strong>MaxStreamStates</strong> member of the <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.Vpdevcaps\"/></strong> structure.</p> </dd></param>\t\n            <param name=\"state\"><dd> <p>The state parameter to set, specified as a member of the <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.StreamState\"/></strong> enumeration.</p> </dd></param>\t\n            <param name=\"dataSize\"><dd> <p>The size, in bytes, of the buffer pointed to by <em>pData</em>.</p> </dd></param>\t\n            <param name=\"dataRef\"><dd> <p>A reference to a buffer that contains the state data. The meaning of the data depends on the <em>State</em> parameter. Each state has a corresponding data structure; for more information, see <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.StreamState\"/></strong>. The caller allocates the buffer and fills in the parameter data before calling this method.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p> Call this method to set state parameters that apply to individual input streams.  </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXVAHD_VideoProcessor::SetVideoProcessStreamState']/*\"/>\t\n            <msdn-id>dd373922</msdn-id>\t\n            <unmanaged>HRESULT IDXVAHD_VideoProcessor::SetVideoProcessStreamState([In] unsigned int StreamNumber,[In] DXVAHD_STREAM_STATE State,[In] unsigned int DataSize,[In, Buffer] const void* pData)</unmanaged>\t\n            <unmanaged-short>IDXVAHD_VideoProcessor::SetVideoProcessStreamState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.DirectX.HDVideoProcessor.GetVideoProcessStreamState(System.Int32,SharpDX.MediaFoundation.DirectX.StreamState,System.Int32,System.IntPtr)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Gets the value of a state parameter for an input stream on a  Microsoft DirectX Video Acceleration High Definition (DXVA-HD) device.</p>\t\n            </summary>\t\n            <param name=\"streamNumber\"><dd> <p>The zero-based index of the input stream. To get the maximum number of streams, call <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.HDDevice.GetVideoProcessorDeviceCaps(SharpDX.MediaFoundation.DirectX.Vpdevcaps@)\"/></strong> and check the <strong>MaxStreamStates</strong> member of the <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.Vpdevcaps\"/></strong> structure.</p> </dd></param>\t\n            <param name=\"state\"><dd> <p>The state parameter to query, specified as a member of the <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.StreamState\"/></strong> enumeration.</p> </dd></param>\t\n            <param name=\"dataSize\"><dd> <p>The size, in bytes, of the buffer pointed to by <em>pData</em>.</p> </dd></param>\t\n            <param name=\"dataRef\"><dd> <p>A reference to a buffer allocated by the caller. The method copies the state data into the buffer. The buffer must be large enough to hold the data structure that corresponds to the state parameter. For more information, see <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.StreamState\"/></strong>. </p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXVAHD_VideoProcessor::GetVideoProcessStreamState']/*\"/>\t\n            <msdn-id>dd373920</msdn-id>\t\n            <unmanaged>HRESULT IDXVAHD_VideoProcessor::GetVideoProcessStreamState([In] unsigned int StreamNumber,[In] DXVAHD_STREAM_STATE State,[In] unsigned int DataSize,[Out, Buffer] void* pData)</unmanaged>\t\n            <unmanaged-short>IDXVAHD_VideoProcessor::GetVideoProcessStreamState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.DirectX.HDVideoProcessor.VideoProcessBltHD(SharpDX.Direct3D9.Surface,System.Int32,System.Int32,SharpDX.MediaFoundation.DirectX.StreamData[])\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Performs a video processing blit on one or more input samples and writes the result to a Microsoft Direct3D surface.</p>\t\n            </summary>\t\n            <param name=\"outputSurfaceRef\"><dd> <p>A reference to the <strong><see cref=\"T:SharpDX.Direct3D9.Surface\"/></strong> interface of a Direct3D surface. The output of the video processing operation will be written to this surface. The following surface types can be used:</p> <ul> <li>A video surface of type <strong><see cref=\"F:SharpDX.MediaFoundation.DirectX.SurfaceTypeHD.VideoOutput\"/></strong>. See <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.HDDevice.CreateVideoSurface(System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,System.Int32,SharpDX.MediaFoundation.DirectX.SurfaceTypeHD,System.Int32,SharpDX.Direct3D9.Surface[],System.IntPtr)\"/></strong>. </li> <li>A render-target surface or texture surface created with <see cref=\"F:SharpDX.Direct3D9.Usage.RenderTarget\"/> usage.</li> <li>A swap chain.</li> <li>A swap chain with overlay support (<strong><see cref=\"F:SharpDX.Direct3D9.SwapEffect.Overlay\"/></strong>).</li> </ul> </dd></param>\t\n            <param name=\"outputFrame\"><dd> <p>Frame number of the output video frame, indexed from zero.</p> </dd></param>\t\n            <param name=\"streamCount\"><dd> <p>Number of input streams to process. </p> </dd></param>\t\n            <param name=\"streamsRef\"><dd> <p>Pointer to an array of <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.StreamData\"/></strong> structures that contain information about the input streams. The caller allocates the array and fills in each structure. The number of elements in the array is given in the <em>StreamCount</em> parameter.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>The maximum value of <em>StreamCount</em> is given in the <strong>MaxStreamStates</strong> member of the <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.Vpdevcaps\"/></strong> structure. The maximum numbr of streams that can be enabled at one time is given in the <strong>MaxInputStreams</strong> member of that structure.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDXVAHD_VideoProcessor::VideoProcessBltHD']/*\"/>\t\n            <msdn-id>dd373923</msdn-id>\t\n            <unmanaged>HRESULT IDXVAHD_VideoProcessor::VideoProcessBltHD([In] IDirect3DSurface9* pOutputSurface,[In] unsigned int OutputFrame,[In] unsigned int StreamCount,[In, Buffer] const DXVAHD_STREAM_DATA* pStreams)</unmanaged>\t\n            <unmanaged-short>IDXVAHD_VideoProcessor::VideoProcessBltHD</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.IDirect3DDeviceManager9\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Enables two threads to share the same Direct3D 9 device, and provides access to the DirectX Video Acceleration (DXVA) features of the device.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This interface is exposed by the Direct3D Device Manager. To create the Direct3D device manager, call <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.DXVAFactory.CreateDirect3DDeviceManager9(System.Int32@,SharpDX.MediaFoundation.DirectX.IDirect3DDeviceManager9@)\"/></strong>.</p><p>To get this interface from the Enhanced Video Renderer (EVR), call <strong><see cref=\"M:SharpDX.MediaFoundation.ServiceProvider.GetService(System.Guid,System.Guid,System.IntPtr@)\"/></strong>. The service <see cref=\"T:System.Guid\"/> is <strong>MR_VIDEO_ACCELERATION_SERVICE</strong>. For the DirectShow EVR filter, call <strong>GetService</strong> on the filter's pins.</p><p>The Direct3D Device Manager supports Direct3D 9 devices only. It does not support DXGI devices.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDeviceManager9']/*\"/>\t\n            <msdn-id>ms704727</msdn-id>\t\n            <unmanaged>IDirect3DDeviceManager9</unmanaged>\t\n            <unmanaged-short>IDirect3DDeviceManager9</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.DirectX.IDirect3DDeviceManager9.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.DirectX.IDirect3DDeviceManager9\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.DirectX.IDirect3DDeviceManager9.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.DirectX.IDirect3DDeviceManager9\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.DirectX.IDirect3DDeviceManager9\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.DirectX.IDirect3DDeviceManager9.ResetDevice(SharpDX.Direct3D9.Device,System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Sets the Direct3D device or notifies the device manager that the Direct3D device was reset.</p>\t\n            </summary>\t\n            <param name=\"deviceRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface of the Direct3D device.</p> </dd></param>\t\n            <param name=\"resetToken\"><dd> <p>Token received in the <em>pResetToken</em> parameter of the <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.DXVAFactory.CreateDirect3DDeviceManager9(System.Int32@,SharpDX.MediaFoundation.DirectX.IDirect3DDeviceManager9@)\"/></strong> function.</p> </dd></param>\t\n            <returns><p>The method returns an <see cref=\"T:SharpDX.Result\"/>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong>E_INVALIDARG</strong></dt> </dl> </td><td> <p>Invalid token</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/></strong></dt> </dl> </td><td> <p>Direct3D device error.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>When you first create the Direct3D device manager, call this method with a reference to the Direct3D device. The device manager does not create the device; the caller must provide the device reference initially.</p><p>Also call this method if the Direct3D device becomes lost and you need to reset the device or create a new device. This occurs if <strong><see cref=\"M:SharpDX.Direct3D9.Device.TestCooperativeLevel\"/></strong> returns <see cref=\"F:SharpDX.Direct3D9.ResultCode.DeviceLost\"/> or <see cref=\"F:SharpDX.Direct3D9.ResultCode.DeviceNotReset\"/>. For more information about lost devices, see the Direct3D documentation.</p><p>The <em>resetToken</em> parameter ensures that only the component which originally created the device manager can invalidate the current device.</p><p>If this method succeeds, all open device handles become invalid.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDeviceManager9::ResetDevice']/*\"/>\t\n            <msdn-id>ms693525</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDeviceManager9::ResetDevice([In] IDirect3DDevice9* pDevice,[In] unsigned int resetToken)</unmanaged>\t\n            <unmanaged-short>IDirect3DDeviceManager9::ResetDevice</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.DirectX.IDirect3DDeviceManager9.OpenDeviceHandle(System.IntPtr@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Gets a handle to the Direct3D device. </p>\t\n            </summary>\t\n            <param name=\"hDeviceRef\"><dd> <p>Receives the device handle.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong>DXVA2_E_NOT_INITIALIZED</strong></dt> </dl> </td><td> <p>The Direct3D device manager was not initialized. The owner of the device must call <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.IDirect3DDeviceManager9.ResetDevice(SharpDX.Direct3D9.Device,System.Int32)\"/></strong>.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>To get the Direct3D device's <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> reference, call <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.IDirect3DDeviceManager9.LockDevice(System.IntPtr,SharpDX.Direct3D9.Device@,SharpDX.Bool)\"/></strong> with the handle returned in <em>phDevice</em>. Close the device handle when you are done using it, by calling <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.IDirect3DDeviceManager9.CloseDeviceHandle(System.IntPtr)\"/></strong>.</p><p>To test whether a device handle is still valid, call <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.IDirect3DDeviceManager9.TestDevice(System.IntPtr)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDeviceManager9::OpenDeviceHandle']/*\"/>\t\n            <msdn-id>ms698976</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDeviceManager9::OpenDeviceHandle([Out] void** phDevice)</unmanaged>\t\n            <unmanaged-short>IDirect3DDeviceManager9::OpenDeviceHandle</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.DirectX.IDirect3DDeviceManager9.CloseDeviceHandle(System.IntPtr)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Closes a Direct3D device handle. Call this method to release a device handle retrieved by the <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.IDirect3DDeviceManager9.OpenDeviceHandle(System.IntPtr@)\"/></strong> method. </p>\t\n            </summary>\t\n            <param name=\"hDevice\">No documentation.</param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong>E_HANDLE</strong></dt> </dl> </td><td> <p>Invalid handle.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDeviceManager9::CloseDeviceHandle']/*\"/>\t\n            <msdn-id>ms697332</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDeviceManager9::CloseDeviceHandle([In] void* hDevice)</unmanaged>\t\n            <unmanaged-short>IDirect3DDeviceManager9::CloseDeviceHandle</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.DirectX.IDirect3DDeviceManager9.TestDevice(System.IntPtr)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Tests whether a Direct3D device handle is valid. </p>\t\n            </summary>\t\n            <param name=\"hDevice\"><dd> <p>Handle to a Direct3D device. To get a device handle, call <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.IDirect3DDeviceManager9.OpenDeviceHandle(System.IntPtr@)\"/></strong>.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The device handle is valid.</p> </td></tr> <tr><td> <dl> <dt><strong>E_HANDLE</strong></dt> </dl> </td><td> <p>The specified handle is not a Direct3D device handle.</p> </td></tr> <tr><td> <dl> <dt><strong>DXVA2_E_NEW_VIDEO_DEVICE</strong></dt> </dl> </td><td> <p>The device handle is invalid.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>If the method returns DXVA2_E_NEW_VIDEO_DEVICE, call <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.IDirect3DDeviceManager9.CloseDeviceHandle(System.IntPtr)\"/></strong> to close the handle and then call <strong>OpenDeviceHandle</strong> again to get a new handle. The <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.IDirect3DDeviceManager9.ResetDevice(SharpDX.Direct3D9.Device,System.Int32)\"/></strong> method invalidates all open device handles.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDeviceManager9::TestDevice']/*\"/>\t\n            <msdn-id>ms704778</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDeviceManager9::TestDevice([In] void* hDevice)</unmanaged>\t\n            <unmanaged-short>IDirect3DDeviceManager9::TestDevice</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.DirectX.IDirect3DDeviceManager9.LockDevice(System.IntPtr,SharpDX.Direct3D9.Device@,SharpDX.Bool)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Gives the caller exclusive access to the Direct3D device. </p>\t\n            </summary>\t\n            <param name=\"hDevice\"><dd> <p>A handle to the Direct3D device. To get the device handle, call <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.IDirect3DDeviceManager9.OpenDeviceHandle(System.IntPtr@)\"/></strong>. </p> </dd></param>\t\n            <param name=\"deviceOut\"><dd> <p> Receives a reference to the device's <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface. </p> </dd></param>\t\n            <param name=\"fBlock\"><dd> <p> Specifies whether to wait for the device lock. If the device is already locked and this parameter is <strong>TRUE</strong>, the method blocks until the device is unlocked. Otherwise, if the device is locked and this parmater is <strong><see cref=\"F:SharpDX.Result.False\"/></strong>, the method returns immediately with the error code <strong>DXVA2_E_VIDEO_DEVICE_LOCKED</strong>. </p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded. </p> </td></tr> <tr><td> <dl> <dt><strong>DXVA2_E_NEW_VIDEO_DEVICE</strong></dt> </dl> </td><td> <p> The device handle is invalid. </p> </td></tr> <tr><td> <dl> <dt><strong>DXVA2_E_NOT_INITIALIZED</strong></dt> </dl> </td><td> <p> The Direct3D device manager was not initialized. The owner of the device must call <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.IDirect3DDeviceManager9.ResetDevice(SharpDX.Direct3D9.Device,System.Int32)\"/></strong>. </p> </td></tr> <tr><td> <dl> <dt><strong>DXVA2_E_VIDEO_DEVICE_LOCKED</strong></dt> </dl> </td><td> <p> The device is locked and <em>fBlock</em> is <strong><see cref=\"F:SharpDX.Result.False\"/></strong>. </p> </td></tr> <tr><td> <dl> <dt><strong>E_HANDLE</strong></dt> </dl> </td><td> <p> The specified handle is not a Direct3D device handle. </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> When you are done using the Direct3D device, call <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.IDirect3DDeviceManager9.UnlockDevice(System.IntPtr,SharpDX.Bool)\"/></strong> to unlock to the device. </p><p> If the method returns <strong>DXVA2_E_NEW_VIDEO_DEVICE</strong>, call <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.IDirect3DDeviceManager9.CloseDeviceHandle(System.IntPtr)\"/></strong> to close the handle and then call <strong>OpenDeviceHandle</strong> again to get a new handle. The <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.IDirect3DDeviceManager9.ResetDevice(SharpDX.Direct3D9.Device,System.Int32)\"/></strong> method invalidates all open device handles. </p><p> If <em>fBlock</em> is <strong>TRUE</strong>, this method can potentially deadlock. For example, it will deadlock if a thread calls <strong>LockDevice</strong> and then waits on another thread that calls <strong>LockDevice</strong>. It will also deadlock if a thread calls <strong>LockDevice</strong> twice without calling <strong>UnlockDevice</strong> in between. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDeviceManager9::LockDevice']/*\"/>\t\n            <msdn-id>ms697056</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDeviceManager9::LockDevice([In] void* hDevice,[Out] IDirect3DDevice9** ppDevice,[In] BOOL fBlock)</unmanaged>\t\n            <unmanaged-short>IDirect3DDeviceManager9::LockDevice</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.DirectX.IDirect3DDeviceManager9.UnlockDevice(System.IntPtr,SharpDX.Bool)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Unlocks the Direct3D device. Call this method to release the device after calling <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.IDirect3DDeviceManager9.LockDevice(System.IntPtr,SharpDX.Direct3D9.Device@,SharpDX.Bool)\"/></strong>.</p>\t\n            </summary>\t\n            <param name=\"hDevice\">No documentation.</param>\t\n            <param name=\"fSaveState\">No documentation.</param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong>E_INVALIDARG</strong></dt> </dl> </td><td> <p>The specified device handle is not locked, or is not a valid handle.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDeviceManager9::UnlockDevice']/*\"/>\t\n            <msdn-id>ms704707</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDeviceManager9::UnlockDevice([In] void* hDevice,[In] BOOL fSaveState)</unmanaged>\t\n            <unmanaged-short>IDirect3DDeviceManager9::UnlockDevice</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.DirectX.IDirect3DDeviceManager9.GetVideoService(System.IntPtr,System.Guid,System.IntPtr@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Gets a DirectX Video Acceleration (DXVA) service interface. </p>\t\n            </summary>\t\n            <param name=\"hDevice\"><dd> <p> A handle to a Direct3D device. To get a device handle, call <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.IDirect3DDeviceManager9.OpenDeviceHandle(System.IntPtr@)\"/></strong>. </p> </dd></param>\t\n            <param name=\"riid\"><dd> <p> The interface identifier (IID) of the requested interface. The Direct3D device might support the following DXVA service interfaces: </p> <ul> <li> <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.VideoDecoderService\"/></strong> </li> <li> <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.VideoProcessorService\"/></strong> </li> </ul> </dd></param>\t\n            <param name=\"serviceOut\"><dd> <p> Receives a reference to the requested interface. The caller must release the interface. </p> </dd></param>\t\n            <returns><p> The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table. </p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded. </p> </td></tr> <tr><td> <dl> <dt><strong>DXVA2_E_NEW_VIDEO_DEVICE</strong></dt> </dl> </td><td> <p> The device handle is invalid. </p> </td></tr> <tr><td> <dl> <dt><strong>DXVA2_E_NOT_AVAILABLE</strong></dt> </dl> </td><td> <p> The Direct3D device does not support video acceleration. </p> </td></tr> <tr><td> <dl> <dt><strong>DXVA2_E_NOT_INITIALIZED</strong></dt> </dl> </td><td> <p> The Direct3D device manager was not initialized. The owner of the device must call <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.IDirect3DDeviceManager9.ResetDevice(SharpDX.Direct3D9.Device,System.Int32)\"/></strong>. </p> </td></tr> <tr><td> <dl> <dt><strong>E_HANDLE</strong></dt> </dl> </td><td> <p> The specified handle is not a Direct3D device handle. </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>If the method returns <strong>DXVA2_E_NEW_VIDEO_DEVICE</strong>, call <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.IDirect3DDeviceManager9.CloseDeviceHandle(System.IntPtr)\"/></strong> to close the handle and then call <strong>OpenDeviceHandle</strong> again to get a new handle. The <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.IDirect3DDeviceManager9.ResetDevice(SharpDX.Direct3D9.Device,System.Int32)\"/></strong> method invalidates all open device handles.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirect3DDeviceManager9::GetVideoService']/*\"/>\t\n            <msdn-id>ms696198</msdn-id>\t\n            <unmanaged>HRESULT IDirect3DDeviceManager9::GetVideoService([In] void* hDevice,[In] const GUID&amp; riid,[Out] void** ppService)</unmanaged>\t\n            <unmanaged-short>IDirect3DDeviceManager9::GetVideoService</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.VideoAccelerationService\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Provides DirectX Video Acceleration (DXVA) services from a Direct3D device. To get a reference to this interface, call <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.IDirect3DDeviceManager9.GetVideoService(System.IntPtr,System.Guid,System.IntPtr@)\"/></strong> or <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.DXVAFactory.CreateVideoService(SharpDX.Direct3D9.Device,System.Guid,System.IntPtr@)\"/></strong>.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This is the base interface for DXVA services. The Direct3D device can support any of the following DXVA services, which derive from <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.VideoAccelerationService\"/></strong>:</p><ul> <li> Video decoding: <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.VideoDecoderService\"/></strong> </li> <li> Video processing: <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.VideoProcessorService\"/></strong> </li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectXVideoAccelerationService']/*\"/>\t\n            <msdn-id>ms697049</msdn-id>\t\n            <unmanaged>IDirectXVideoAccelerationService</unmanaged>\t\n            <unmanaged-short>IDirectXVideoAccelerationService</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.DirectX.VideoAccelerationService.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.DirectX.VideoAccelerationService\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.DirectX.VideoAccelerationService.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.DirectX.VideoAccelerationService\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.DirectX.VideoAccelerationService\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.DirectX.VideoAccelerationService.CreateSurface(System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,System.Int32,System.Int32,SharpDX.Direct3D9.Surface[],System.IntPtr)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Creates a DirectX Video Acceleration (DXVA) video processor or DXVA decoder render target. </p>\t\n            </summary>\t\n            <param name=\"width\"><dd> <p>The width of the surface, in pixels. </p> </dd></param>\t\n            <param name=\"height\"><dd> <p>The height of the surface, in pixels. </p> </dd></param>\t\n            <param name=\"backBuffers\"><dd> <p>The number of back buffers. The method creates <em>BackBuffers</em> + 1 surfaces. </p> </dd></param>\t\n            <param name=\"format\"><dd> <p>The pixel format, specified as a <strong><see cref=\"T:SharpDX.Direct3D9.Format\"/></strong> value or FOURCC code. For more information, see the Direct3D documentation. </p> </dd></param>\t\n            <param name=\"pool\"><dd> <p>The memory pool in which to create the surface, specified as a <strong><see cref=\"T:SharpDX.Direct3D9.Pool\"/></strong> value. For more information, see the Direct3D documentation. Decoders should generally use the value <see cref=\"F:SharpDX.Direct3D9.Pool.Default\"/>. </p> </dd></param>\t\n            <param name=\"usage\"><dd> <p>Reserved. Set this value to zero. </p> </dd></param>\t\n            <param name=\"dxvaType\"><dd> <p>The type of surface to create. Use one of the following values. </p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.DirectX.RenderTargetType.VideoDecoder\"/></strong></dt> </dl> </td><td> <p>Video decoder render target. </p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.DirectX.RenderTargetType.VideoProcessor\"/></strong></dt> </dl> </td><td> <p>Video processor render target. Used for <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.VideoProcessor.VideoProcessBlt(SharpDX.Direct3D9.Surface,SharpDX.MediaFoundation.DirectX.VideoProcessBltParams@,SharpDX.MediaFoundation.DirectX.VideoSample[],System.Int32,System.IntPtr)\"/></strong> operations. </p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.DirectX.RenderTargetType.VideoSoftware\"/></strong></dt> </dl> </td><td> <p>Software render target. This surface type is for use with software DXVA devices. </p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <param name=\"surfaceOut\"><dd> <p>The address of an array of <strong><see cref=\"T:SharpDX.Direct3D9.Surface\"/></strong> references allocated by the caller. The size of the array must be 1 + <em>BackBuffers</em> (enough for the back buffers plus one front buffer). The method fills the array with <strong><see cref=\"T:SharpDX.Direct3D9.Surface\"/></strong> references. The caller must release all of the interface references. In addition, the front buffer holds a reference count on each of the back buffers. Therefore, the back buffers are never deleted until the front buffer is deleted. </p> </dd></param>\t\n            <param name=\"sharedHandleRef\"><dd> <p>A reference to a handle that is used to share the surfaces between Direct3D devices. Set this parameter to <strong><c>null</c></strong>. </p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/></strong></dt> </dl> </td><td> <p> Invalid parameter </p> </td></tr> <tr><td> <dl> <dt><strong>E_FAIL</strong></dt> </dl> </td><td> <p> The DirectX Video Acceleration Manager is not initialized. </p> </td></tr> <tr><td> <dl> <dt><strong>E_POINTER</strong></dt> </dl> </td><td> <p><strong><c>null</c></strong> reference argument. </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>If the method returns <strong>E_FAIL</strong>, try calling <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.IDirect3DDeviceManager9.ResetDevice(SharpDX.Direct3D9.Device,System.Int32)\"/></strong> to reset the DirectX Video Acceleration Manager.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectXVideoAccelerationService::CreateSurface']/*\"/>\t\n            <msdn-id>ms696227</msdn-id>\t\n            <unmanaged>HRESULT IDirectXVideoAccelerationService::CreateSurface([In] unsigned int Width,[In] unsigned int Height,[In] unsigned int BackBuffers,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Usage,[In] unsigned int DxvaType,[Out, Buffer] IDirect3DSurface9** ppSurface,[InOut, Optional] void** pSharedHandle)</unmanaged>\t\n            <unmanaged-short>IDirectXVideoAccelerationService::CreateSurface</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.VideoDecoder\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Represents a DirectX Video Acceleration (DXVA) video decoder device.</p><p> To get a reference to this interface, call <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.VideoDecoderService.CreateVideoDecoder(System.Guid,SharpDX.MediaFoundation.DirectX.VideoDesc@,SharpDX.MediaFoundation.DirectX.ConfigPictureDecode@,SharpDX.Direct3D9.Surface[],System.Int32,SharpDX.MediaFoundation.DirectX.VideoDecoder@)\"/></strong>. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.VideoDecoder\"/></strong> methods make calls to the Direct3D device. Therefore, the <strong><see cref=\"T:SharpDX.Direct3D9.CreateFlags\"/></strong> flags that you specify  when creating the device can affect the behavior of this interface. For example, if you specify the <strong><see cref=\"F:SharpDX.Direct3D9.CreateFlags.Multithreaded\"/></strong> flag, the Direct3D global critical section will be held during decode operations.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectXVideoDecoder']/*\"/>\t\n            <msdn-id>ms694281</msdn-id>\t\n            <unmanaged>IDirectXVideoDecoder</unmanaged>\t\n            <unmanaged-short>IDirectXVideoDecoder</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.DirectX.VideoDecoder.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.DirectX.VideoDecoder\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.DirectX.VideoDecoder.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.DirectX.VideoDecoder\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.DirectX.VideoDecoder\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.DirectX.VideoDecoder.GetVideoDecoderService(SharpDX.MediaFoundation.DirectX.VideoDecoderService@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Retrieves the DirectX Video Acceleration (DXVA) decoder service that created this decoder device. </p>\t\n            </summary>\t\n            <param name=\"serviceOut\"><dd> <p>Receives a reference to <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.VideoDecoderService\"/></strong> interface. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectXVideoDecoder::GetVideoDecoderService']/*\"/>\t\n            <msdn-id>ms694049</msdn-id>\t\n            <unmanaged>HRESULT IDirectXVideoDecoder::GetVideoDecoderService([Out] IDirectXVideoDecoderService** ppService)</unmanaged>\t\n            <unmanaged-short>IDirectXVideoDecoder::GetVideoDecoderService</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.DirectX.VideoDecoder.GetCreationParameters(System.Guid@,SharpDX.MediaFoundation.DirectX.VideoDesc@,SharpDX.MediaFoundation.DirectX.ConfigPictureDecode@,SharpDX.Direct3D9.Surface[],System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Retrieves the parameters that were used to create this device. </p>\t\n            </summary>\t\n            <param name=\"deviceGuidRef\"><dd> <p>Receives the device <see cref=\"T:System.Guid\"/>. This parameter can be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"videoDescRef\"><dd> <p>Pointer to a <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.VideoDesc\"/></strong> structure that receives a description of the video format. This parameter can be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"configRef\"><dd> <p>Pointer to a <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.ConfigPictureDecode\"/></strong> structure structure that receives the decoder configuration. This parameter can be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"decoderRenderTargetsRef\"><dd> <p>Receives an array of <strong><see cref=\"T:SharpDX.Direct3D9.Surface\"/></strong> interface references. These references represent the decoder render targets. The method allocates the memory for the array and calls <strong>AddRef</strong> on each of the references. The caller must release the references and call <strong>CoTaskMemFree</strong> to free the memory for the array. This parameter can be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"numSurfacesRef\"><dd> <p>Receives the number of elements in the <em>pppDecoderRenderTargets</em> array. This parameter can be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong>E_INVALIDARG</strong></dt> </dl> </td><td> <p>Invalid argument. At least one parameter must be non-<strong><c>null</c></strong>.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>You can set any parameter to <strong><c>null</c></strong> if you are not interested in the result. At least one parameter must be non-<strong><c>null</c></strong>.</p><p>If you specify a non-<strong><c>null</c></strong> value for <em>pppDecoderRenderTargets</em> (to receive the render target surfaces), then <em>pNumSurfaces</em> cannot be <strong><c>null</c></strong>, because it receives the size of the array returned in <em>pppDecoderRenderTargets</em>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectXVideoDecoder::GetCreationParameters']/*\"/>\t\n            <msdn-id>ms697355</msdn-id>\t\n            <unmanaged>HRESULT IDirectXVideoDecoder::GetCreationParameters([Out, Optional] GUID* pDeviceGuid,[Out, Optional] DXVA2_VideoDesc* pVideoDesc,[Out, Optional] DXVA2_ConfigPictureDecode* pConfig,[Out, Buffer] IDirect3DSurface9*** pDecoderRenderTargets,[Out, Optional] unsigned int* pNumSurfaces)</unmanaged>\t\n            <unmanaged-short>IDirectXVideoDecoder::GetCreationParameters</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.DirectX.VideoDecoder.GetBuffer(System.Int32,System.IntPtr@,System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Retrieves a reference to a DirectX Video Acceleration (DXVA) decoder buffer. </p>\t\n            </summary>\t\n            <param name=\"bufferType\"><dd> <p>Type of buffer to retrieve. Use one of the following values.</p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.DirectX.CompressedBufferType.PictureParameters\"/></strong></dt> </dl> </td><td> <p>Picture decoding parameter buffer.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.DirectX.CompressedBufferType.MacroBlockControl\"/></strong></dt> </dl> </td><td> <p>Macroblock control command buffer.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.DirectX.CompressedBufferType.ResidualDifference\"/></strong></dt> </dl> </td><td> <p>Residual difference block data buffer.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.DirectX.CompressedBufferType.DeblockingControl\"/></strong></dt> </dl> </td><td> <p>Deblocking filter control command buffer.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.DirectX.CompressedBufferType.InverseQuantizationMatrix\"/></strong></dt> </dl> </td><td> <p>Inverse quantization matrix buffer.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.DirectX.CompressedBufferType.SliceControl\"/></strong></dt> </dl> </td><td> <p>Slice-control buffer.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.DirectX.CompressedBufferType.BitStreamDate\"/></strong></dt> </dl> </td><td> <p>Bitstream data buffer.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.DirectX.CompressedBufferType.Dxva2MotionVectorBuffer\"/></strong></dt> </dl> </td><td> <p>Motion vector buffer.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.DirectX.CompressedBufferType.Dxva2FilmGrainBuffer\"/></strong></dt> </dl> </td><td> <p>Film grain synthesis data buffer.</p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <param name=\"bufferOut\"><dd> <p>Receives a reference to the start of the memory buffer.</p> </dd></param>\t\n            <param name=\"bufferSizeRef\"><dd> <p>Receives the size of the buffer, in bytes.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>The method locks the Direct3D surface that contains the buffer. When you are done using the buffer, call <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.VideoDecoder.ReleaseBuffer(System.Int32)\"/></strong> to unlock the surface.</p><p>This method might block if too many operations have been queued on the GPU. The method unblocks when a free buffer becomes available.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectXVideoDecoder::GetBuffer']/*\"/>\t\n            <msdn-id>ms703992</msdn-id>\t\n            <unmanaged>HRESULT IDirectXVideoDecoder::GetBuffer([In] unsigned int BufferType,[Out] void** ppBuffer,[Out] unsigned int* pBufferSize)</unmanaged>\t\n            <unmanaged-short>IDirectXVideoDecoder::GetBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.DirectX.VideoDecoder.ReleaseBuffer(System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Releases a buffer that was obtained by calling <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.VideoDecoder.GetBuffer(System.Int32,System.IntPtr@,System.Int32@)\"/></strong>. </p>\t\n            </summary>\t\n            <param name=\"bufferType\">No documentation.</param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectXVideoDecoder::ReleaseBuffer']/*\"/>\t\n            <msdn-id>ms704764</msdn-id>\t\n            <unmanaged>HRESULT IDirectXVideoDecoder::ReleaseBuffer([In] unsigned int BufferType)</unmanaged>\t\n            <unmanaged-short>IDirectXVideoDecoder::ReleaseBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.DirectX.VideoDecoder.BeginFrame(SharpDX.Direct3D9.Surface,System.IntPtr)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Starts the decoding operation. </p>\t\n            </summary>\t\n            <param name=\"renderTargetRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.Direct3D9.Surface\"/></strong> interface of the render target where the decoded frame will be written.</p> </dd></param>\t\n            <param name=\"vPVPDataRef\"><dd> <p>Reserved; set to <strong><c>null</c></strong>.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong>E_INVALIDARG</strong></dt> </dl> </td><td> <p>Invalid surface type. See Remarks.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>After this method is called, call <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.VideoDecoder.Execute(SharpDX.MediaFoundation.DirectX.DecodeExecuteParams)\"/></strong> to perform decoding operations. When all decoding operations have been executed, call <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.VideoDecoder.EndFrame(System.IntPtr)\"/></strong>.</p><p>Each call to <strong>BeginFrame</strong> must have a matching call to <strong>EndFrame</strong>, and <strong>BeginFrame</strong> calls cannot be nested.</p><p>DXVA 1.0 migration note: Unlike the <strong>IAMVideoAccelerator::BeginFrame</strong> method, which specifies the buffer as an index, this method takes a reference directly to the uncompressed buffer.</p><p>The surface pointed to by <em>pRenderTarget</em> must be created by calling <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.VideoAccelerationService.CreateSurface(System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,System.Int32,System.Int32,SharpDX.Direct3D9.Surface[],System.IntPtr)\"/></strong> with the value <see cref=\"F:SharpDX.MediaFoundation.DirectX.RenderTargetType.VideoDecoder\"/> for <em>DxvaType</em>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectXVideoDecoder::BeginFrame']/*\"/>\t\n            <msdn-id>ms694840</msdn-id>\t\n            <unmanaged>HRESULT IDirectXVideoDecoder::BeginFrame([In] IDirect3DSurface9* pRenderTarget,[In, Optional] void* pvPVPData)</unmanaged>\t\n            <unmanaged-short>IDirectXVideoDecoder::BeginFrame</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.DirectX.VideoDecoder.EndFrame(System.IntPtr)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Signals the end of the decoding operation. </p>\t\n            </summary>\t\n            <param name=\"handleCompleteRef\"><dd> <p>Reserved.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectXVideoDecoder::EndFrame']/*\"/>\t\n            <msdn-id>ms697031</msdn-id>\t\n            <unmanaged>HRESULT IDirectXVideoDecoder::EndFrame([InOut, Optional] void** pHandleComplete)</unmanaged>\t\n            <unmanaged-short>IDirectXVideoDecoder::EndFrame</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.DirectX.VideoDecoder.Execute(SharpDX.MediaFoundation.DirectX.DecodeExecuteParams)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Executes a decoding operation on the current frame. </p>\t\n            </summary>\t\n            <param name=\"executeParamsRef\"><dd> <p>Pointer to a <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.DecodeExecuteParams\"/></strong> structure that contains the information needed for the decoding operation.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>You must call <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.VideoDecoder.BeginFrame(SharpDX.Direct3D9.Surface,System.IntPtr)\"/></strong> before calling this method.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectXVideoDecoder::Execute']/*\"/>\t\n            <msdn-id>ms696258</msdn-id>\t\n            <unmanaged>HRESULT IDirectXVideoDecoder::Execute([In] const DXVA2_DecodeExecuteParams* pExecuteParams)</unmanaged>\t\n            <unmanaged-short>IDirectXVideoDecoder::Execute</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.DirectX.VideoDecoder.VideoDecoderService\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Retrieves the DirectX Video Acceleration (DXVA) decoder service that created this decoder device. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectXVideoDecoder::GetVideoDecoderService']/*\"/>\t\n            <msdn-id>ms694049</msdn-id>\t\n            <unmanaged>GetVideoDecoderService</unmanaged>\t\n            <unmanaged-short>GetVideoDecoderService</unmanaged-short>\t\n            <unmanaged>HRESULT IDirectXVideoDecoder::GetVideoDecoderService([Out] IDirectXVideoDecoderService** ppService)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.VideoDecoderService\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Provides access to DirectX Video Acceleration (DXVA) decoder services. Use this interface to query which hardware-accelerated decoding operations are available and to create DXVA video decoder devices. </p><p>To get a reference to this interface, call <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.IDirect3DDeviceManager9.GetVideoService(System.IntPtr,System.Guid,System.IntPtr@)\"/></strong> or <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.DXVAFactory.CreateVideoService(SharpDX.Direct3D9.Device,System.Guid,System.IntPtr@)\"/></strong> with the interface identifier IID_IDirectXVideoDecoderService.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectXVideoDecoderService']/*\"/>\t\n            <msdn-id>ms704820</msdn-id>\t\n            <unmanaged>IDirectXVideoDecoderService</unmanaged>\t\n            <unmanaged-short>IDirectXVideoDecoderService</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.DirectX.VideoDecoderService.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.DirectX.VideoDecoderService\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.DirectX.VideoDecoderService.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.DirectX.VideoDecoderService\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.DirectX.VideoDecoderService\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.DirectX.VideoDecoderService.GetDecoderDeviceGuids(System.Int32@,System.Guid[])\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves an array of GUIDs that identifies the decoder devices supported by the graphics hardware.</p>\t\n            </summary>\t\n            <param name=\"countRef\"><dd> <p>Receives the number of GUIDs.</p> </dd></param>\t\n            <param name=\"guidsRef\"><dd> <p>Receives an array of GUIDs. The size of the array is retrieved in the <em>Count</em> parameter. The method allocates the memory for the array. The caller must free the memory by calling <strong>CoTaskMemFree</strong>.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/></strong></dt> </dl> </td><td> <p>Error from the Direct3D device.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>The following decoder GUIDs are defined. Some of these GUIDs have alternate names, shown in parentheses.</p><table> <tr><th><see cref=\"T:System.Guid\"/></th><th>Description</th></tr> <tr><td>DXVA2_ModeH264_A (DXVA2_ModeH264_MoComp_NoFGT)</td><td>H.264 motion compensation (MoComp), no film grain technology (FGT).</td></tr> <tr><td>DXVA2_ModeH264_B (DXVA2_ModeH264_MoComp_FGT)</td><td>H.264 MoComp, FGT.</td></tr> <tr><td>DXVA2_ModeH264_C (DXVA2_ModeH264_IDCT_NoFGT)</td><td>H.264 inverse discrete cosine transform (IDCT), no FGT.</td></tr> <tr><td>DXVA2_ModeH264_D (DXVA2_ModeH264_IDCT_FGT)</td><td>H.264 IDCT, FGT.</td></tr> <tr><td>DXVA2_ModeH264_E (DXVA2_ModeH264_VLD_NoFGT)</td><td>H.264 VLD, no FGT.</td></tr> <tr><td>DXVA2_ModeH264_F (DXVA2_ModeH264_VLD_FGT)</td><td>H.264 variable-length decoder (VLD), FGT.</td></tr> <tr><td>DXVA2_ModeMPEG2_IDCT</td><td>MPEG-2 IDCT.</td></tr> <tr><td>DXVA2_ModeMPEG2_MoComp</td><td>MPEG-2 MoComp.</td></tr> <tr><td>DXVA2_ModeMPEG2_VLD</td><td>MPEG-2 VLD.</td></tr> <tr><td>DXVA2_ModeVC1_A (DXVA2_ModeVC1_PostProc)</td><td>VC-1 post processing.</td></tr> <tr><td>DXVA2_ModeVC1_B (DXVA2_ModeVC1_MoComp)</td><td>VC-1 MoComp.</td></tr> <tr><td>DXVA2_ModeVC1_C (DXVA2_ModeVC1_IDCT)</td><td>VC-1 IDCT.</td></tr> <tr><td>DXVA2_ModeVC1_D (DXVA2_ModeVC1_VLD)</td><td>VC-1 VLD.</td></tr> <tr><td>DXVA2_ModeWMV8_A (DXVA2_ModeWMV8_PostProc)</td><td>Windows Media Video 8 post processing.</td></tr> <tr><td>DXVA2_ModeWMV8_B (DXVA2_ModeWMV8_MoComp)</td><td>Windows Media Video 8 MoComp.</td></tr> <tr><td>DXVA2_ModeWMV9_A (DXVA2_ModeWMV9_PostProc)</td><td>Windows Media Video 9 post processing.</td></tr> <tr><td>DXVA2_ModeWMV9_B (DXVA2_ModeWMV9_MoComp)</td><td>Windows Media Video 9 MoComp.</td></tr> <tr><td>DXVA2_ModeWMV9_C (DXVA2_ModeWMV9_IDCT)</td><td>Windows Media Video 9 IDCT.</td></tr> </table><p>?</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectXVideoDecoderService::GetDecoderDeviceGuids']/*\"/>\t\n            <msdn-id>ms697067</msdn-id>\t\n            <unmanaged>HRESULT IDirectXVideoDecoderService::GetDecoderDeviceGuids([Out] unsigned int* pCount,[Out, Buffer, Optional] GUID** pGuids)</unmanaged>\t\n            <unmanaged-short>IDirectXVideoDecoderService::GetDecoderDeviceGuids</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.DirectX.VideoDecoderService.GetDecoderRenderTargets(System.Guid,System.Int32@,SharpDX.Direct3D9.Format[])\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the supported render targets for a specified decoder device.</p>\t\n            </summary>\t\n            <param name=\"guid\"><dd> <p><see cref=\"T:System.Guid\"/> that identifies the decoder device. To get the available device GUIDs, call <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.VideoDecoderService.GetDecoderDeviceGuids(System.Int32@,System.Guid[])\"/></strong>.</p> </dd></param>\t\n            <param name=\"countRef\"><dd> <p>Receives the number of formats.</p> </dd></param>\t\n            <param name=\"formatsRef\"><dd> <p>Receives an array of formats, specified as <strong><see cref=\"T:SharpDX.Direct3D9.Format\"/></strong> values. The size of the array is retrieved in the <em>pCount</em> parameter. The method allocates the memory for the array. The caller must free the memory by calling <strong>CoTaskMemFree</strong>.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectXVideoDecoderService::GetDecoderRenderTargets']/*\"/>\t\n            <msdn-id>ms703193</msdn-id>\t\n            <unmanaged>HRESULT IDirectXVideoDecoderService::GetDecoderRenderTargets([In] const GUID&amp; Guid,[Out] unsigned int* pCount,[Out, Buffer, Optional] D3DFORMAT** pFormats)</unmanaged>\t\n            <unmanaged-short>IDirectXVideoDecoderService::GetDecoderRenderTargets</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.DirectX.VideoDecoderService.GetDecoderConfigurations(System.Guid,SharpDX.MediaFoundation.DirectX.VideoDesc@,System.IntPtr,System.Int32@,SharpDX.MediaFoundation.DirectX.ConfigPictureDecode[])\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Gets the configurations that are available for a decoder device. </p>\t\n            </summary>\t\n            <param name=\"guid\"><dd> <p>A <see cref=\"T:System.Guid\"/> that identifies the decoder device. To get the available device GUIDs, call <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.VideoDecoderService.GetDecoderDeviceGuids(System.Int32@,System.Guid[])\"/></strong>. </p> </dd></param>\t\n            <param name=\"videoDescRef\"><dd> <p>A reference to a <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.VideoDesc\"/></strong> structure that describes the video content. </p> </dd></param>\t\n            <param name=\"reservedRef\"><dd> <p>Reserved. Set to <strong><c>null</c></strong>. </p> </dd></param>\t\n            <param name=\"countRef\"><dd> <p>Receives the number of configurations. </p> </dd></param>\t\n            <param name=\"configsOut\"><dd> <p>Receives an array of <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.ConfigPictureDecode\"/></strong> structures. The size of the array is retrieved in the <em>pCount</em> parameter. The caller must free the memory for the array by calling <strong>CoTaskMemFree</strong>. This parameter can be <strong><c>null</c></strong> if you simply want the number of configurations (returned in <em>pCount</em>) but not the GUIDs. </p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectXVideoDecoderService::GetDecoderConfigurations']/*\"/>\t\n            <msdn-id>ms699833</msdn-id>\t\n            <unmanaged>HRESULT IDirectXVideoDecoderService::GetDecoderConfigurations([In] const GUID&amp; Guid,[In] const DXVA2_VideoDesc* pVideoDesc,[In] void* pReserved,[Out] unsigned int* pCount,[Out, Buffer, Optional] DXVA2_ConfigPictureDecode** ppConfigs)</unmanaged>\t\n            <unmanaged-short>IDirectXVideoDecoderService::GetDecoderConfigurations</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.DirectX.VideoDecoderService.CreateVideoDecoder(System.Guid,SharpDX.MediaFoundation.DirectX.VideoDesc@,SharpDX.MediaFoundation.DirectX.ConfigPictureDecode@,SharpDX.Direct3D9.Surface[],System.Int32,SharpDX.MediaFoundation.DirectX.VideoDecoder@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Creates a video decoder device.</p>\t\n            </summary>\t\n            <param name=\"guid\"><dd> <p><see cref=\"T:System.Guid\"/> that specifies the decoder device to create. To get the available device GUIDs, call <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.VideoDecoderService.GetDecoderDeviceGuids(System.Int32@,System.Guid[])\"/></strong>.</p> </dd></param>\t\n            <param name=\"videoDescRef\"><dd> <p>Pointer to a <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.VideoDesc\"/></strong> structure that describes the video content.</p> </dd></param>\t\n            <param name=\"configRef\"><dd> <p>Pointer to a <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.ConfigPictureDecode\"/></strong> structure that specifies the decoder configuration.</p> </dd></param>\t\n            <param name=\"decoderRenderTargetsOut\"><dd> <p>Pointer to an array of <strong><see cref=\"T:SharpDX.Direct3D9.Surface\"/></strong> references containing references to the decoder render targets. To create these surfaces, call <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.VideoAccelerationService.CreateSurface(System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,System.Int32,System.Int32,SharpDX.Direct3D9.Surface[],System.IntPtr)\"/></strong>. Specify <see cref=\"F:SharpDX.MediaFoundation.DirectX.RenderTargetType.VideoDecoder\"/> for the <em>DxvaType</em> parameter.</p> </dd></param>\t\n            <param name=\"numRenderTargets\"><dd> <p>Size of the <em>ppDecoderRenderTargets</em> array. This value cannot be zero.</p> </dd></param>\t\n            <param name=\"decodeOut\"><dd> <p>Receives a reference to the decoder's <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.VideoDecoder\"/></strong> interface. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectXVideoDecoderService::CreateVideoDecoder']/*\"/>\t\n            <msdn-id>ms696175</msdn-id>\t\n            <unmanaged>HRESULT IDirectXVideoDecoderService::CreateVideoDecoder([In] const GUID&amp; Guid,[In] const DXVA2_VideoDesc* pVideoDesc,[In] const DXVA2_ConfigPictureDecode* pConfig,[In, Buffer] IDirect3DSurface9** ppDecoderRenderTargets,[In] unsigned int NumRenderTargets,[Out] IDirectXVideoDecoder** ppDecode)</unmanaged>\t\n            <unmanaged-short>IDirectXVideoDecoderService::CreateVideoDecoder</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.DirectX.VideoDecoderService.CreateVideoDecoder(System.Guid,SharpDX.MediaFoundation.DirectX.VideoDesc@,SharpDX.MediaFoundation.DirectX.ConfigPictureDecode@,SharpDX.ComArray{SharpDX.Direct3D9.Surface},System.Int32,SharpDX.MediaFoundation.DirectX.VideoDecoder@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Creates a video decoder device.</p>\t\n            </summary>\t\n            <param name=\"guid\"><dd> <p><see cref=\"T:System.Guid\"/> that specifies the decoder device to create. To get the available device GUIDs, call <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.VideoDecoderService.GetDecoderDeviceGuids(System.Int32@,System.Guid[])\"/></strong>.</p> </dd></param>\t\n            <param name=\"videoDescRef\"><dd> <p>Pointer to a <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.VideoDesc\"/></strong> structure that describes the video content.</p> </dd></param>\t\n            <param name=\"configRef\"><dd> <p>Pointer to a <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.ConfigPictureDecode\"/></strong> structure that specifies the decoder configuration.</p> </dd></param>\t\n            <param name=\"decoderRenderTargetsOut\"><dd> <p>Pointer to an array of <strong><see cref=\"T:SharpDX.Direct3D9.Surface\"/></strong> references containing references to the decoder render targets. To create these surfaces, call <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.VideoAccelerationService.CreateSurface(System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,System.Int32,System.Int32,SharpDX.Direct3D9.Surface[],System.IntPtr)\"/></strong>. Specify <see cref=\"F:SharpDX.MediaFoundation.DirectX.RenderTargetType.VideoDecoder\"/> for the <em>DxvaType</em> parameter.</p> </dd></param>\t\n            <param name=\"numRenderTargets\"><dd> <p>Size of the <em>ppDecoderRenderTargets</em> array. This value cannot be zero.</p> </dd></param>\t\n            <param name=\"decodeOut\"><dd> <p>Receives a reference to the decoder's <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.VideoDecoder\"/></strong> interface. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectXVideoDecoderService::CreateVideoDecoder']/*\"/>\t\n            <msdn-id>ms696175</msdn-id>\t\n            <unmanaged>HRESULT IDirectXVideoDecoderService::CreateVideoDecoder([In] const GUID&amp; Guid,[In] const DXVA2_VideoDesc* pVideoDesc,[In] const DXVA2_ConfigPictureDecode* pConfig,[In, Buffer] IDirect3DSurface9** ppDecoderRenderTargets,[In] unsigned int NumRenderTargets,[Out] IDirectXVideoDecoder** ppDecode)</unmanaged>\t\n            <unmanaged-short>IDirectXVideoDecoderService::CreateVideoDecoder</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.VideoMemoryConfiguration\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Sets the type of video memory for uncompressed video surfaces. This interface is used by video decoders and transforms.</p><p>The DirectShow enhanced video renderer (EVR) filter exposes this interface as a service on the filter's input pins. To obtain a reference to this interface, call <strong><see cref=\"M:SharpDX.MediaFoundation.ServiceProvider.GetService(System.Guid,System.Guid,System.IntPtr@)\"/></strong> with the service identifier MR_VIDEO_ACCELERATION_SERVICE.</p><p>A video decoder can use this interface to enumerate the EVR filter's preferred surface types and then select the surface type. The decoder should then create surfaces of that type to hold the results of the decoding operation.</p><p>This interface does not define a way to clear the surface type. In the case of DirectShow, disconnecting two filters invalidates the surface type.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectXVideoMemoryConfiguration']/*\"/>\t\n            <msdn-id>ms703164</msdn-id>\t\n            <unmanaged>IDirectXVideoMemoryConfiguration</unmanaged>\t\n            <unmanaged-short>IDirectXVideoMemoryConfiguration</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.DirectX.VideoMemoryConfiguration.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.DirectX.VideoMemoryConfiguration\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.DirectX.VideoMemoryConfiguration.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.DirectX.VideoMemoryConfiguration\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.DirectX.VideoMemoryConfiguration\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.DirectX.VideoMemoryConfiguration.GetAvailableSurfaceTypeByIndex(System.Int32,SharpDX.MediaFoundation.DirectX.SurfaceType@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves a supported video surface type.</p>\t\n            </summary>\t\n            <param name=\"dwTypeIndex\"><dd> <p>Zero-based index of the surface type to retrieve. Surface types are indexed in order of preference, starting with the most preferred type.</p> </dd></param>\t\n            <param name=\"dwTypeRef\"><dd> <p>Receives a member of the <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.SurfaceType\"/></strong> enumeration that specifies the surface type.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.NoMoreTypes\"/></strong></dt> </dl> </td><td> <p>The index was out of range.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectXVideoMemoryConfiguration::GetAvailableSurfaceTypeByIndex']/*\"/>\t\n            <msdn-id>ms697493</msdn-id>\t\n            <unmanaged>HRESULT IDirectXVideoMemoryConfiguration::GetAvailableSurfaceTypeByIndex([In] unsigned int dwTypeIndex,[Out] DXVA2_SurfaceType* pdwType)</unmanaged>\t\n            <unmanaged-short>IDirectXVideoMemoryConfiguration::GetAvailableSurfaceTypeByIndex</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.DirectX.VideoMemoryConfiguration.SetSurfaceType(SharpDX.MediaFoundation.DirectX.SurfaceType)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Sets the video surface type that a decoder will use for DirectX Video Acceleration (DVXA) 2.0.</p>\t\n            </summary>\t\n            <param name=\"dwType\"><dd> <p>Member of the <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.SurfaceType\"/></strong> enumeration specifying the surface type. Currently, the only supported value is <see cref=\"F:SharpDX.MediaFoundation.DirectX.SurfaceType.SurfaceType_Decoder\"/>.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Win32.ErrorCode.UnsupportedType\"/></strong></dt> </dl> </td><td> <p>The renderer does not support the specified surface type.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>By calling this method, the caller agrees to create surfaces of the type specified in the <em>dwType</em> parameter.</p><p>In DirectShow, during pin connection, a video decoder that supports DVXA 2.0 should call <strong>SetSurface</strong> with the value <see cref=\"F:SharpDX.MediaFoundation.DirectX.SurfaceType.SurfaceType_Decoder\"/>. This notifies the video renderer that the decoder will provide the allocator and will create the Direct3D surfaces for decoding. For more information, see Supporting DXVA 2.0 in DirectShow.</p><p>The only way to undo the setting is to break the pin connection.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectXVideoMemoryConfiguration::SetSurfaceType']/*\"/>\t\n            <msdn-id>ms693977</msdn-id>\t\n            <unmanaged>HRESULT IDirectXVideoMemoryConfiguration::SetSurfaceType([In] DXVA2_SurfaceType dwType)</unmanaged>\t\n            <unmanaged-short>IDirectXVideoMemoryConfiguration::SetSurfaceType</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.DirectX.VideoMemoryConfiguration.SurfaceType\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Sets the video surface type that a decoder will use for DirectX Video Acceleration (DVXA) 2.0.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>By calling this method, the caller agrees to create surfaces of the type specified in the <em>dwType</em> parameter.</p><p>In DirectShow, during pin connection, a video decoder that supports DVXA 2.0 should call <strong>SetSurface</strong> with the value <see cref=\"F:SharpDX.MediaFoundation.DirectX.SurfaceType.SurfaceType_Decoder\"/>. This notifies the video renderer that the decoder will provide the allocator and will create the Direct3D surfaces for decoding. For more information, see Supporting DXVA 2.0 in DirectShow.</p><p>The only way to undo the setting is to break the pin connection.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectXVideoMemoryConfiguration::SetSurfaceType']/*\"/>\t\n            <msdn-id>ms693977</msdn-id>\t\n            <unmanaged>SetSurfaceType</unmanaged>\t\n            <unmanaged-short>SetSurfaceType</unmanaged-short>\t\n            <unmanaged>HRESULT IDirectXVideoMemoryConfiguration::SetSurfaceType([In] DXVA2_SurfaceType dwType)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.VideoProcessor\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the parameters that were used to create this device.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>You can set any parameter to <strong><c>null</c></strong> if you are not interested in the result. At least one parameter must be non-<strong><c>null</c></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectXVideoProcessor']/*\"/>\t\n            <msdn-id>ms704783</msdn-id>\t\n            <unmanaged>IDirectXVideoProcessor</unmanaged>\t\n            <unmanaged-short>IDirectXVideoProcessor</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.DirectX.VideoProcessor.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.DirectX.VideoProcessor\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.DirectX.VideoProcessor.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.DirectX.VideoProcessor\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.DirectX.VideoProcessor\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.DirectX.VideoProcessor.GetVideoProcessorService(SharpDX.MediaFoundation.DirectX.VideoProcessorService@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the DirectX Video Acceleration (DXVA) video processor service that created this video processor device.</p>\t\n            </summary>\t\n            <param name=\"serviceOut\"><dd> <p>Receives a reference to <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.VideoProcessorService\"/></strong> interface. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectXVideoProcessor::GetVideoProcessorService']/*\"/>\t\n            <msdn-id>ms700812</msdn-id>\t\n            <unmanaged>HRESULT IDirectXVideoProcessor::GetVideoProcessorService([Out] IDirectXVideoProcessorService** ppService)</unmanaged>\t\n            <unmanaged-short>IDirectXVideoProcessor::GetVideoProcessorService</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.DirectX.VideoProcessor.GetCreationParameters(System.Guid@,SharpDX.MediaFoundation.DirectX.VideoDesc@,SharpDX.Direct3D9.Format@,System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the parameters that were used to create this device.</p>\t\n            </summary>\t\n            <param name=\"deviceGuidRef\"><dd> <p>Receives the device <see cref=\"T:System.Guid\"/>. This parameter can be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"videoDescRef\"><dd> <p>Pointer to a <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.VideoDesc\"/></strong> structure allocated by the caller. The method fills the structure with a description of the video format. This parameter can be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"renderTargetFormatRef\"><dd> <p>Receives the render target format, specified as a <strong><see cref=\"T:SharpDX.Direct3D9.Format\"/></strong> value. For more information, see the Direct3D documentation. This parameter can be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"maxNumSubStreamsRef\"><dd> <p>Receives the maximum number of streams supported by the device. This parameter can be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong>E_INVALIDARG</strong></dt> </dl> </td><td> <p>Invalid argument. At least one parameter must be non-<strong><c>null</c></strong>.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>You can set any parameter to <strong><c>null</c></strong> if you are not interested in the result. At least one parameter must be non-<strong><c>null</c></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectXVideoProcessor::GetCreationParameters']/*\"/>\t\n            <msdn-id>ms704783</msdn-id>\t\n            <unmanaged>HRESULT IDirectXVideoProcessor::GetCreationParameters([Out, Optional] GUID* pDeviceGuid,[Out, Optional] DXVA2_VideoDesc* pVideoDesc,[Out, Optional] D3DFORMAT* pRenderTargetFormat,[Out, Optional] unsigned int* pMaxNumSubStreams)</unmanaged>\t\n            <unmanaged-short>IDirectXVideoProcessor::GetCreationParameters</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.DirectX.VideoProcessor.GetVideoProcessorCaps(SharpDX.MediaFoundation.DirectX.VideoProcessorCaps@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the capabilities of the video processor device.</p>\t\n            </summary>\t\n            <param name=\"capsRef\"><dd> <p>Pointer to a <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.VideoProcessorCaps\"/></strong> structure that receives the video processor capabilities.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectXVideoProcessor::GetVideoProcessorCaps']/*\"/>\t\n            <msdn-id>ms704831</msdn-id>\t\n            <unmanaged>HRESULT IDirectXVideoProcessor::GetVideoProcessorCaps([Out] DXVA2_VideoProcessorCaps* pCaps)</unmanaged>\t\n            <unmanaged-short>IDirectXVideoProcessor::GetVideoProcessorCaps</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.DirectX.VideoProcessor.GetProcAmpRange(System.Int32,SharpDX.MediaFoundation.DirectX.ValueRange@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the range of values for a video processor (ProcAmp) setting on this video processor device.</p>\t\n            </summary>\t\n            <param name=\"procAmpCap\"><dd> <p>The ProcAmp setting to query. See ProcAmp Settings.</p> </dd></param>\t\n            <param name=\"rangeRef\"><dd> <p>Pointer to a <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.ValueRange\"/></strong> structure that receives the range of values for the setting specified in <em>ProcAmpCaps</em>.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectXVideoProcessor::GetProcAmpRange']/*\"/>\t\n            <msdn-id>ms704610</msdn-id>\t\n            <unmanaged>HRESULT IDirectXVideoProcessor::GetProcAmpRange([In] unsigned int ProcAmpCap,[Out] DXVA2_ValueRange* pRange)</unmanaged>\t\n            <unmanaged-short>IDirectXVideoProcessor::GetProcAmpRange</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.DirectX.VideoProcessor.GetFilterPropertyRange(System.Int32,SharpDX.MediaFoundation.DirectX.ValueRange@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the range of values for an image filter supported by this device.</p>\t\n            </summary>\t\n            <param name=\"filterSetting\"><dd> <p>Filter setting to query. For more information, see DXVA Image Filter Settings.</p> </dd></param>\t\n            <param name=\"rangeRef\"><dd> <p>Pointer to a <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.ValueRange\"/></strong> structure that receives the range of values for the setting specified in <em>FilterSetting</em>.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectXVideoProcessor::GetFilterPropertyRange']/*\"/>\t\n            <msdn-id>ms697209</msdn-id>\t\n            <unmanaged>HRESULT IDirectXVideoProcessor::GetFilterPropertyRange([In] unsigned int FilterSetting,[Out] DXVA2_ValueRange* pRange)</unmanaged>\t\n            <unmanaged-short>IDirectXVideoProcessor::GetFilterPropertyRange</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.DirectX.VideoProcessor.VideoProcessBlt(SharpDX.Direct3D9.Surface,SharpDX.MediaFoundation.DirectX.VideoProcessBltParams@,SharpDX.MediaFoundation.DirectX.VideoSample[],System.Int32,System.IntPtr)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Performs a video process operation on one or more input samples and writes the result to a Direct3D9 surface. </p>\t\n            </summary>\t\n            <param name=\"renderTargetRef\"><dd> <p> A reference to the <strong><see cref=\"T:SharpDX.Direct3D9.Surface\"/></strong> interface of a Direct3D surface. The output of the video processing operation will be written to this surface. The surface may be any of the following types: </p> <ul> <li> A surface created by calling <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.VideoAccelerationService.CreateSurface(System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,System.Int32,System.Int32,SharpDX.Direct3D9.Surface[],System.IntPtr)\"/></strong> with the <strong>DXVA2_VideoProcessRenderTarget</strong> flag. You can also use the <strong><see cref=\"F:SharpDX.MediaFoundation.DirectX.RenderTargetType.VideoSoftware\"/></strong> flag, but only when the device <see cref=\"T:System.Guid\"/> is <strong>DXVA2_VideoProcSoftwareDevice</strong> (software video processing device). </li> <li> A surface created from a Direct3D device with the <strong><see cref=\"F:SharpDX.Direct3D9.Usage.RenderTarget\"/></strong> usage flag. </li> <li> A Direct3D swap chain. </li> </ul> </dd></param>\t\n            <param name=\"bltParamsRef\"><dd> <p>A reference to a <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.VideoProcessBltParams\"/></strong> structure that describes the video processing operation to perform. </p> </dd></param>\t\n            <param name=\"samplesRef\"><dd> <p>A reference to an array of <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.VideoSample\"/></strong> structures that contain the input samples. There must be at least one element in the array.</p> <p>The maximum number of input samples is given by the constant <strong>MAX_DEINTERLACE_SURFACES</strong>, defined in the header file dxva2api.h.</p> </dd></param>\t\n            <param name=\"numSamples\"><dd> <p>The number of elements in the <em>pSamples</em> array. </p> </dd></param>\t\n            <param name=\"handleCompleteRef\"><dd> <p>Reserved; set to <strong><c>null</c></strong>. </p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Direct3D9.ResultCode.DriverInternalError\"/></strong></dt> </dl> </td><td> <p>Internal driver error.</p> </td></tr> <tr><td> <dl> <dt><strong>E_INVALIDARG</strong></dt> </dl> </td><td> <p> Invalid arguments.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> When the method returns, the operation might not be complete. </p><p>If the method returns <strong>E_INVALIDARG</strong>, check for the following:</p><ul> <li>The number of input samples (<em>NumSamples</em>) must be less than or equal to <strong>MAX_DEINTERLACE_SURFACES</strong>. </li> <li>The Direct3D surface must be a valid target for <strong>VideoProcessBlt</strong>. See the description of the <em>pRT</em> parameter for details.</li> <li>The presentation time (<strong>TargetFrame</strong>) given in <em>pBltParams</em> must match the start and end times for the current picture from the primary stream. Specifically, it must be less than the end time and greater than or equal to the start time. Note that the first sample in <em>pSamples</em> might not be the current picture, if the <em>pSamples</em> array contains backward reference pictures. For more information, see Input Sample Order.</li> <li>The target rectangle (<strong>TargetRect</strong>) given in <em>pBltParams</em> cannot be larger than the destination surface (<em>pRT</em>).</li> <li>The  constriction size (<strong>ConstrictionSize</strong>) given in <em>pBltParams</em> cannot be less than zero or larger than the target rectangle.</li> <li>The alpha component of the background color must be opqaue.</li> <li>The ProcAmp values given in <em>pBltParams</em> must be valid. For any ProcAmp settings that are supported by the driver, these values must fall within the ranges returned by the <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.VideoProcessor.GetProcAmpRange(System.Int32,SharpDX.MediaFoundation.DirectX.ValueRange@)\"/></strong> method.</li> <li>The noise and detail filters given in <em>pBltParams</em> must be valid. For any filters that are supported by the driver, these values must fall within the ranges returned by the <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.VideoProcessor.GetFilterPropertyRange(System.Int32,SharpDX.MediaFoundation.DirectX.ValueRange@)\"/></strong> method.</li> <li>The alpha value given in <em>pBltParams</em> must be in the range [0...1] inclusive.</li> <li>For each input sample given in <em>pSamples</em>:<ul> <li>The start time cannot be greater than the end time.</li> <li>A valid <strong><see cref=\"T:SharpDX.Direct3D9.Surface\"/></strong> reference must be provided.</li> <li>The source rectangle cannot be larger than the input surface.</li> <li>The destination rectangle cannot be larger than than the destination surface.</li> <li>The planar alpha must be in the range [0...1] inclusive.</li> </ul> </li> <li> For all rectangles (source, destination, and target),  the rectangle cannot be inverted (left &gt; right or top &gt; bottom) or have negative values.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectXVideoProcessor::VideoProcessBlt']/*\"/>\t\n            <msdn-id>ms697022</msdn-id>\t\n            <unmanaged>HRESULT IDirectXVideoProcessor::VideoProcessBlt([In] IDirect3DSurface9* pRenderTarget,[In] const DXVA2_VideoProcessBltParams* pBltParams,[In, Buffer] const DXVA2_VideoSample* pSamples,[In] unsigned int NumSamples,[InOut, Optional] void** pHandleComplete)</unmanaged>\t\n            <unmanaged-short>IDirectXVideoProcessor::VideoProcessBlt</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.DirectX.VideoProcessor.VideoProcessorService\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the DirectX Video Acceleration (DXVA) video processor service that created this video processor device.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectXVideoProcessor::GetVideoProcessorService']/*\"/>\t\n            <msdn-id>ms700812</msdn-id>\t\n            <unmanaged>GetVideoProcessorService</unmanaged>\t\n            <unmanaged-short>GetVideoProcessorService</unmanaged-short>\t\n            <unmanaged>HRESULT IDirectXVideoProcessor::GetVideoProcessorService([Out] IDirectXVideoProcessorService** ppService)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.DirectX.VideoProcessor.VideoProcessorCaps\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the capabilities of the video processor device.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectXVideoProcessor::GetVideoProcessorCaps']/*\"/>\t\n            <msdn-id>ms704831</msdn-id>\t\n            <unmanaged>GetVideoProcessorCaps</unmanaged>\t\n            <unmanaged-short>GetVideoProcessorCaps</unmanaged-short>\t\n            <unmanaged>HRESULT IDirectXVideoProcessor::GetVideoProcessorCaps([Out] DXVA2_VideoProcessorCaps* pCaps)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.VideoProcessorService\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Provides access to DirectX Video Acceleration (DXVA) video processing services.</p><p>Use this interface to query which hardware-accelerated video processing operations are available and to create DXVA video processor devices. To obtain a reference to this interface, call <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.IDirect3DDeviceManager9.GetVideoService(System.IntPtr,System.Guid,System.IntPtr@)\"/></strong> or <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.DXVAFactory.CreateVideoService(SharpDX.Direct3D9.Device,System.Guid,System.IntPtr@)\"/></strong> with the interface identifier <strong>IID_IDirectXVideoProcessorService</strong>.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectXVideoProcessorService']/*\"/>\t\n            <msdn-id>ms705631</msdn-id>\t\n            <unmanaged>IDirectXVideoProcessorService</unmanaged>\t\n            <unmanaged-short>IDirectXVideoProcessorService</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.DirectX.VideoProcessorService.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.DirectX.VideoProcessorService\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.DirectX.VideoProcessorService.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.DirectX.VideoProcessorService\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.DirectX.VideoProcessorService\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.DirectX.VideoProcessorService.RegisterVideoProcessorSoftwareDevice(System.IntPtr)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Registers a software video processing device.</p>\t\n            </summary>\t\n            <param name=\"callbacksRef\"><dd> <p>Pointer to an initialization function.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectXVideoProcessorService::RegisterVideoProcessorSoftwareDevice']/*\"/>\t\n            <msdn-id>ms696262</msdn-id>\t\n            <unmanaged>HRESULT IDirectXVideoProcessorService::RegisterVideoProcessorSoftwareDevice([In] void* pCallbacks)</unmanaged>\t\n            <unmanaged-short>IDirectXVideoProcessorService::RegisterVideoProcessorSoftwareDevice</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.DirectX.VideoProcessorService.GetVideoProcessorDeviceGuids(SharpDX.MediaFoundation.DirectX.VideoDesc@,System.Int32@,System.Guid[])\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Gets an array of GUIDs which identify the video processors supported by the graphics hardware. </p>\t\n            </summary>\t\n            <param name=\"videoDescRef\"><dd> <p> Pointer to a <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.VideoDesc\"/></strong> structure that describes the video content. </p> </dd></param>\t\n            <param name=\"countRef\"><dd> <p> Receives the number of GUIDs. </p> </dd></param>\t\n            <param name=\"guidsRef\"><dd> <p> Receives an array of GUIDs. The size of the array is retrieved in the <em>pCount</em> parameter. The method allocates the memory for the array. The caller must free the memory by calling <strong>CoTaskMemFree</strong>. </p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>The following video processor GUIDs are predefined.</p><table> <tr><th><see cref=\"T:System.Guid\"/></th><th>Description</th></tr> <tr><td><strong>DXVA2_VideoProcBobDevice</strong></td><td>Bob deinterlace device. This device uses a \"bob\" algorithm to deinterlace the video. Bob algorithms create missing field lines by interpolating the lines in a single field.</td></tr> <tr><td><strong>DXVA2_VideoProcProgressiveDevice</strong></td><td>Progressive video device. This device is available for progressive video, which does not require a deinterlace algorithm.</td></tr> <tr><td><strong>DXVA2_VideoProcSoftwareDevice</strong></td><td>Reference (software) device.</td></tr> </table><p>?</p><p>The graphics device may define additional vendor-specific GUIDs. The driver provides the list of GUIDs in descending quality order. The mode with the highest quality is first in the list. To get the capabilities of each mode, call <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.VideoProcessorService.GetVideoProcessorCaps(System.Guid,SharpDX.MediaFoundation.DirectX.VideoDesc@,SharpDX.Direct3D9.Format,SharpDX.MediaFoundation.DirectX.VideoProcessorCaps@)\"/></strong> and pass in the <see cref=\"T:System.Guid\"/> for the mode.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectXVideoProcessorService::GetVideoProcessorDeviceGuids']/*\"/>\t\n            <msdn-id>ms695370</msdn-id>\t\n            <unmanaged>HRESULT IDirectXVideoProcessorService::GetVideoProcessorDeviceGuids([In] const DXVA2_VideoDesc* pVideoDesc,[Out] unsigned int* pCount,[Out, Buffer, Optional] GUID** pGuids)</unmanaged>\t\n            <unmanaged-short>IDirectXVideoProcessorService::GetVideoProcessorDeviceGuids</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.DirectX.VideoProcessorService.GetVideoProcessorRenderTargets(System.Guid,SharpDX.MediaFoundation.DirectX.VideoDesc@,System.Int32@,SharpDX.Direct3D9.Format[])\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Gets the render target formats that a video processor device supports. The list may include RGB and YUV formats. </p>\t\n            </summary>\t\n            <param name=\"videoProcDeviceGuid\"><dd> <p> A <see cref=\"T:System.Guid\"/> that identifies the video processor device. To get the list of video processor GUIDs, call <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.VideoProcessorService.GetVideoProcessorDeviceGuids(SharpDX.MediaFoundation.DirectX.VideoDesc@,System.Int32@,System.Guid[])\"/></strong>.</p> </dd></param>\t\n            <param name=\"videoDescRef\"><dd> <p> A reference to a <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.VideoDesc\"/></strong> structure that describes the video content. </p> </dd></param>\t\n            <param name=\"countRef\"><dd> <p> Receives the number of formats. </p> </dd></param>\t\n            <param name=\"formatsRef\"><dd> <p> Receives an array of formats, specified as <strong><see cref=\"T:SharpDX.Direct3D9.Format\"/></strong> values. The size of the array is retrieved in the <em>pCount</em> parameter. The method allocates the memory for the array. The caller must free the memory by calling <strong>CoTaskMemFree</strong>. </p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectXVideoProcessorService::GetVideoProcessorRenderTargets']/*\"/>\t\n            <msdn-id>ms702118</msdn-id>\t\n            <unmanaged>HRESULT IDirectXVideoProcessorService::GetVideoProcessorRenderTargets([In] const GUID&amp; VideoProcDeviceGuid,[In] const DXVA2_VideoDesc* pVideoDesc,[Out] unsigned int* pCount,[Out, Buffer, Optional] D3DFORMAT** pFormats)</unmanaged>\t\n            <unmanaged-short>IDirectXVideoProcessorService::GetVideoProcessorRenderTargets</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.DirectX.VideoProcessorService.GetVideoProcessorSubStreamFormats(System.Guid,SharpDX.MediaFoundation.DirectX.VideoDesc@,SharpDX.Direct3D9.Format,System.Int32@,SharpDX.Direct3D9.Format[])\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Gets a list of substream formats supported by a specified video processor device. </p>\t\n            </summary>\t\n            <param name=\"videoProcDeviceGuid\"><dd> <p> A <see cref=\"T:System.Guid\"/> that identifies the video processor device.  To get the list of video processor GUIDs, call <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.VideoProcessorService.GetVideoProcessorDeviceGuids(SharpDX.MediaFoundation.DirectX.VideoDesc@,System.Int32@,System.Guid[])\"/></strong>.</p> </dd></param>\t\n            <param name=\"videoDescRef\"><dd> <p> A reference to a <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.VideoDesc\"/></strong> structure that describes the video content. </p> </dd></param>\t\n            <param name=\"renderTargetFormat\"><dd> <p> The format of the render target surface, specified as a <strong><see cref=\"T:SharpDX.Direct3D9.Format\"/></strong> value. For more information, see the Direct3D documentation. You can also use a FOURCC code to specify a format that is not defined in the <strong><see cref=\"T:SharpDX.Direct3D9.Format\"/></strong> enumeration. See Video FOURCCs. </p> </dd></param>\t\n            <param name=\"countRef\"><dd> <p> Receives the number of elements returned in the <em>ppFormats</em> array. </p> </dd></param>\t\n            <param name=\"formatsRef\"><dd> <p> Receives an array of <strong><see cref=\"T:SharpDX.Direct3D9.Format\"/></strong> values. The caller must free the array by calling <strong>CoTaskMemFree</strong>. The array can contain both RGB and YUB pixel formats. </p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectXVideoProcessorService::GetVideoProcessorSubStreamFormats']/*\"/>\t\n            <msdn-id>ms694271</msdn-id>\t\n            <unmanaged>HRESULT IDirectXVideoProcessorService::GetVideoProcessorSubStreamFormats([In] const GUID&amp; VideoProcDeviceGuid,[In] const DXVA2_VideoDesc* pVideoDesc,[In] D3DFORMAT RenderTargetFormat,[Out] unsigned int* pCount,[Out, Buffer, Optional] D3DFORMAT** pFormats)</unmanaged>\t\n            <unmanaged-short>IDirectXVideoProcessorService::GetVideoProcessorSubStreamFormats</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.DirectX.VideoProcessorService.GetVideoProcessorCaps(System.Guid,SharpDX.MediaFoundation.DirectX.VideoDesc@,SharpDX.Direct3D9.Format,SharpDX.MediaFoundation.DirectX.VideoProcessorCaps@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Gets the capabilities of a specified video processor device. </p>\t\n            </summary>\t\n            <param name=\"videoProcDeviceGuid\"><dd> <p> A <see cref=\"T:System.Guid\"/> that identifies the video processor device. To get the list of video processor GUIDs, call <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.VideoProcessorService.GetVideoProcessorDeviceGuids(SharpDX.MediaFoundation.DirectX.VideoDesc@,System.Int32@,System.Guid[])\"/></strong>.</p> </dd></param>\t\n            <param name=\"videoDescRef\"><dd> <p> A reference to a <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.VideoDesc\"/></strong> structure that describes the video content. </p> </dd></param>\t\n            <param name=\"renderTargetFormat\"><dd> <p> The format of the render target surface, specified as a <strong><see cref=\"T:SharpDX.Direct3D9.Format\"/></strong> value. For more information, see the Direct3D documentation. You can also use a FOURCC code to specify a format that is not defined in the <strong><see cref=\"T:SharpDX.Direct3D9.Format\"/></strong> enumeration. See Video FOURCCs. </p> </dd></param>\t\n            <param name=\"capsRef\"><dd> <p> A reference to a <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.VideoProcessorCaps\"/></strong> structure that receives the video processor capabilities. </p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectXVideoProcessorService::GetVideoProcessorCaps']/*\"/>\t\n            <msdn-id>ms702988</msdn-id>\t\n            <unmanaged>HRESULT IDirectXVideoProcessorService::GetVideoProcessorCaps([In] const GUID&amp; VideoProcDeviceGuid,[In] const DXVA2_VideoDesc* pVideoDesc,[In] D3DFORMAT RenderTargetFormat,[Out] DXVA2_VideoProcessorCaps* pCaps)</unmanaged>\t\n            <unmanaged-short>IDirectXVideoProcessorService::GetVideoProcessorCaps</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.DirectX.VideoProcessorService.GetProcAmpRange(System.Guid,SharpDX.MediaFoundation.DirectX.VideoDesc@,SharpDX.Direct3D9.Format,System.Int32,SharpDX.MediaFoundation.DirectX.ValueRange@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Gets the range of values for a video processor (ProcAmp) setting. </p>\t\n            </summary>\t\n            <param name=\"videoProcDeviceGuid\"><dd> <p>A  <see cref=\"T:System.Guid\"/> that identifies the video processor device. To get the list of video processor GUIDs, call <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.VideoProcessorService.GetVideoProcessorDeviceGuids(SharpDX.MediaFoundation.DirectX.VideoDesc@,System.Int32@,System.Guid[])\"/></strong>.</p> </dd></param>\t\n            <param name=\"videoDescRef\"><dd> <p> A reference to a <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.VideoDesc\"/></strong> structure that describes the video content. </p> </dd></param>\t\n            <param name=\"renderTargetFormat\"><dd> <p> The format of the render target surface, specified as a <strong><see cref=\"T:SharpDX.Direct3D9.Format\"/></strong> value. For more information, see the Direct3D documentation. You can also use a FOURCC code to specify a format that is not defined in the <strong><see cref=\"T:SharpDX.Direct3D9.Format\"/></strong> enumeration. See Video FOURCCs. </p> </dd></param>\t\n            <param name=\"procAmpCap\"><dd> <p>The  ProcAmp setting to query. See ProcAmp Settings. </p> </dd></param>\t\n            <param name=\"rangeRef\"><dd> <p> A reference to a <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.ValueRange\"/></strong> structure that receives the range of values for the setting specified in <em>ProcAmpCaps</em>. </p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectXVideoProcessorService::GetProcAmpRange']/*\"/>\t\n            <msdn-id>ms702244</msdn-id>\t\n            <unmanaged>HRESULT IDirectXVideoProcessorService::GetProcAmpRange([In] const GUID&amp; VideoProcDeviceGuid,[In] const DXVA2_VideoDesc* pVideoDesc,[In] D3DFORMAT RenderTargetFormat,[In] unsigned int ProcAmpCap,[Out] DXVA2_ValueRange* pRange)</unmanaged>\t\n            <unmanaged-short>IDirectXVideoProcessorService::GetProcAmpRange</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.DirectX.VideoProcessorService.GetFilterPropertyRange(System.Guid,SharpDX.MediaFoundation.DirectX.VideoDesc@,SharpDX.Direct3D9.Format,System.Int32,SharpDX.MediaFoundation.DirectX.ValueRange@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Retrieves the range of values for an image filter supported by a video processor device. </p>\t\n            </summary>\t\n            <param name=\"videoProcDeviceGuid\"><dd> <p> A <see cref=\"T:System.Guid\"/> that identifies the video processor device. To get the list of video processor GUIDs, call <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.VideoProcessorService.GetVideoProcessorDeviceGuids(SharpDX.MediaFoundation.DirectX.VideoDesc@,System.Int32@,System.Guid[])\"/></strong>.</p> </dd></param>\t\n            <param name=\"videoDescRef\"><dd> <p> A reference to a <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.VideoDesc\"/></strong> structure that describes the video content. </p> </dd></param>\t\n            <param name=\"renderTargetFormat\"><dd> <p> The format of the render target surface, specified as a <strong><see cref=\"T:SharpDX.Direct3D9.Format\"/></strong> value. For more information, see the Direct3D documentation. You can also use a FOURCC code to specify a format that is not defined in the <strong><see cref=\"T:SharpDX.Direct3D9.Format\"/></strong> enumeration. See Video FOURCCs. </p> </dd></param>\t\n            <param name=\"filterSetting\"><dd> <p>The filter setting to query. See DXVA Image Filter Settings. </p> </dd></param>\t\n            <param name=\"rangeRef\"><dd> <p> A reference to a <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.ValueRange\"/></strong> structure that receives range of values for the image filter setting specified in <em>FilterSetting</em>. </p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectXVideoProcessorService::GetFilterPropertyRange']/*\"/>\t\n            <msdn-id>ms694173</msdn-id>\t\n            <unmanaged>HRESULT IDirectXVideoProcessorService::GetFilterPropertyRange([In] const GUID&amp; VideoProcDeviceGuid,[In] const DXVA2_VideoDesc* pVideoDesc,[In] D3DFORMAT RenderTargetFormat,[In] unsigned int FilterSetting,[Out] DXVA2_ValueRange* pRange)</unmanaged>\t\n            <unmanaged-short>IDirectXVideoProcessorService::GetFilterPropertyRange</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.DirectX.VideoProcessorService.CreateVideoProcessor(System.Guid,SharpDX.MediaFoundation.DirectX.VideoDesc@,SharpDX.Direct3D9.Format,System.Int32,SharpDX.MediaFoundation.DirectX.VideoProcessor@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Creates a video processor device. </p>\t\n            </summary>\t\n            <param name=\"videoProcDeviceGuid\"><dd> <p>A <see cref=\"T:System.Guid\"/> that specifies the video processor to create. To get the list of video processor GUIDs, call <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.VideoProcessorService.GetVideoProcessorDeviceGuids(SharpDX.MediaFoundation.DirectX.VideoDesc@,System.Int32@,System.Guid[])\"/></strong>.</p> </dd></param>\t\n            <param name=\"videoDescRef\"><dd> <p> A reference to a <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.VideoDesc\"/></strong> structure that describes the video content. </p> </dd></param>\t\n            <param name=\"renderTargetFormat\"><dd> <p>The format of the render target surface, specified as a <strong><see cref=\"T:SharpDX.Direct3D9.Format\"/></strong> value. For more information, see the Direct3D documentation. You can also use a FOURCC code to specify a format that is not defined in the <strong><see cref=\"T:SharpDX.Direct3D9.Format\"/></strong> enumeration. See Video FOURCCs.</p> </dd></param>\t\n            <param name=\"maxNumSubStreams\"><dd> <p> The maximum number of substreams that will be used with this device. </p> </dd></param>\t\n            <param name=\"vidProcessOut\"><dd> <p> Receives a reference to the video processor's <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.VideoProcessor\"/></strong> interface. The caller must release the interface. </p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDirectXVideoProcessorService::CreateVideoProcessor']/*\"/>\t\n            <msdn-id>ms694848</msdn-id>\t\n            <unmanaged>HRESULT IDirectXVideoProcessorService::CreateVideoProcessor([In] const GUID&amp; VideoProcDeviceGuid,[In] const DXVA2_VideoDesc* pVideoDesc,[In] D3DFORMAT RenderTargetFormat,[In] unsigned int MaxNumSubStreams,[Out] IDirectXVideoProcessor** ppVidProcess)</unmanaged>\t\n            <unmanaged-short>IDirectXVideoProcessorService::CreateVideoProcessor</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.AesCtrIv\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Contains an initialization vector (IV) for 128-bit Advanced Encryption Standard CTR mode (AES-CTR) block cipher encryption.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>For AES-CTR encyption, the <strong>pvPVPState</strong> member of the <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.DecodeBufferDesc\"/></strong> structure points to a <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.AesCtrIv\"/></strong> structure.</p><p>The <strong>D3DAES_CTR_IV</strong> structure and the <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.AesCtrIv\"/></strong> structure are equivalent.</p>Sequential Counts<p>If the <strong>IDirect3DDevice9Video::GetContentProtectionCaps</strong> method returns the <strong>D3DCPCAPS_SEQUENTIAL_CTR_IV</strong> flag, the caller should keep <strong>IV</strong> unchanged when submitting multiple buffers for the same video frame, and <strong>Count</strong> should be in sequential order of the previous submission for the frame.</p><p>Example: Suppose the software decoder submits three buffers for a single frame, and that each buffer contains three 128-bit blocks.  For the first buffer, <strong>IV</strong> can be any value. For the next two buffers, the same value of <strong>IV</strong> must be used. The value of  <strong>Count</strong> starts at 1. For the second buffer, <strong>Count</strong> equals 4 (1 + 3 blocks from the first submission). For the third buffer, <strong>Count</strong> equals 7 (4 + 3 blocks from the second submission).</p><p>When the <strong>D3DCPCAPS_SEQUENTIAL_CTR_IV</strong> capability is present, it is recommended to submit data in 128-bit blocks.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_AES_CTR_IV']/*\"/>\t\n            <msdn-id>ff728850</msdn-id>\t\n            <unmanaged>DXVA2_AES_CTR_IV</unmanaged>\t\n            <unmanaged-short>DXVA2_AES_CTR_IV</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.AesCtrIv.Iv\">\n            <summary>\t\n            <dd> <p>The IV, in big-endian format.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_AES_CTR_IV::IV']/*\"/>\t\n            <msdn-id>ff728850</msdn-id>\t\n            <unmanaged>unsigned longlong IV</unmanaged>\t\n            <unmanaged-short>unsigned longlong IV</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.AesCtrIv.Count\">\n            <summary>\t\n            <dd> <p>The block count, in big-endian format.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_AES_CTR_IV::Count']/*\"/>\t\n            <msdn-id>ff728850</msdn-id>\t\n            <unmanaged>unsigned longlong Count</unmanaged>\t\n            <unmanaged-short>unsigned longlong Count</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.AYUVSample16\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Contains parameters for the <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.VideoProcessor.VideoProcessBlt(SharpDX.Direct3D9.Surface,SharpDX.MediaFoundation.DirectX.VideoProcessBltParams@,SharpDX.MediaFoundation.DirectX.VideoSample[],System.Int32,System.IntPtr)\"/></strong> method.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_AYUVSample16']/*\"/>\t\n            <msdn-id>ms698741</msdn-id>\t\n            <unmanaged>DXVA2_AYUVSample16</unmanaged>\t\n            <unmanaged-short>DXVA2_AYUVSample16</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.AYUVSample16.Cr\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_AYUVSample16::Cr']/*\"/>\t\n            <unmanaged>unsigned short Cr</unmanaged>\t\n            <unmanaged-short>unsigned short Cr</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.AYUVSample16.Cb\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_AYUVSample16::Cb']/*\"/>\t\n            <unmanaged>unsigned short Cb</unmanaged>\t\n            <unmanaged-short>unsigned short Cb</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.AYUVSample16.Y\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_AYUVSample16::Y']/*\"/>\t\n            <unmanaged>unsigned short Y</unmanaged>\t\n            <unmanaged-short>unsigned short Y</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.AYUVSample16.Alpha\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_AYUVSample16::Alpha']/*\"/>\t\n            <unmanaged>unsigned short Alpha</unmanaged>\t\n            <unmanaged-short>unsigned short Alpha</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.AYUVSample8\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Specifies an input sample for the <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.VideoProcessor.VideoProcessBlt(SharpDX.Direct3D9.Surface,SharpDX.MediaFoundation.DirectX.VideoProcessBltParams@,SharpDX.MediaFoundation.DirectX.VideoSample[],System.Int32,System.IntPtr)\"/></strong> method.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_AYUVSample8']/*\"/>\t\n            <msdn-id>ms693598</msdn-id>\t\n            <unmanaged>DXVA2_AYUVSample8</unmanaged>\t\n            <unmanaged-short>DXVA2_AYUVSample8</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.AYUVSample8.Cr\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_AYUVSample8::Cr']/*\"/>\t\n            <unmanaged>unsigned char Cr</unmanaged>\t\n            <unmanaged-short>unsigned char Cr</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.AYUVSample8.Cb\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_AYUVSample8::Cb']/*\"/>\t\n            <unmanaged>unsigned char Cb</unmanaged>\t\n            <unmanaged-short>unsigned char Cb</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.AYUVSample8.Y\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_AYUVSample8::Y']/*\"/>\t\n            <unmanaged>unsigned char Y</unmanaged>\t\n            <unmanaged-short>unsigned char Y</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.AYUVSample8.Alpha\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_AYUVSample8::Alpha']/*\"/>\t\n            <unmanaged>unsigned char Alpha</unmanaged>\t\n            <unmanaged-short>unsigned char Alpha</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.BlitStateAlphaFillData\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Specifies the planar alpha value for an input stream, when using Microsoft DirectX Video Acceleration High Definition (DXVA-HD).</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>For each pixel, the destination color value is computed as follows:</p><p><code>Cd = Cs * (As * Ap * Ae) + Cd * (1.0 - As * Ap * Ae)</code></p><p>where</p><ul> <li><code>Cd</code> = Color value of the destination pixel.</li> <li><code>Cs</code> = Color value of source pixel.</li> <li><code>As</code> = Per-pixel source alpha.</li> <li><code>Ap</code> = Planar alpha value.</li> <li><code>Ae</code> = Palette-entry alpha value, or 1.0 (see Note).</li> </ul><p><strong>Note</strong>??Palette-entry alpha values apply only to palettized color formats, and only when the device supports the <strong><see cref=\"F:SharpDX.MediaFoundation.DirectX.FeatureCaps.AlphaPalette\"/></strong> capability. Otherwise, this factor equals 1.0. </p><p>The destination alpha value is computed according to the <strong><see cref=\"F:SharpDX.MediaFoundation.DirectX.BlitState.AlphaFill\"/></strong> state. For more information, see <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.BlitStateAlphaFillData\"/></strong>.</p><p>To get the device capabilities, call <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.HDDevice.GetVideoProcessorDeviceCaps(SharpDX.MediaFoundation.DirectX.Vpdevcaps@)\"/></strong> and check the <strong>FeatureCaps</strong> member of the <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.Vpdevcaps\"/></strong> structure.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_BLT_STATE_ALPHA_FILL_DATA']/*\"/>\t\n            <msdn-id>dd318759</msdn-id>\t\n            <unmanaged>DXVAHD_BLT_STATE_ALPHA_FILL_DATA</unmanaged>\t\n            <unmanaged-short>DXVAHD_BLT_STATE_ALPHA_FILL_DATA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.BlitStateAlphaFillData.Mode\">\n            <summary>\t\n            <dd> <p><strong>If TRUE</strong>, alpha blending is enabled. Otherwise, alpha blending is disabled. The default state value is <strong><see cref=\"F:SharpDX.Result.False\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_BLT_STATE_ALPHA_FILL_DATA::Mode']/*\"/>\t\n            <msdn-id>dd318759</msdn-id>\t\n            <unmanaged>DXVAHD_ALPHA_FILL_MODE Mode</unmanaged>\t\n            <unmanaged-short>DXVAHD_ALPHA_FILL_MODE Mode</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.BlitStateAlphaFillData.StreamNumber\">\n            <summary>\t\n            <dd> <p>Specifies the planar alpha value as a floating-point number from 0.0 (transparent) to 1.0 (opaque). </p> <p>If the <strong>Enable</strong> member is <strong><see cref=\"F:SharpDX.Result.False\"/></strong>, this member is ignored.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_BLT_STATE_ALPHA_FILL_DATA::StreamNumber']/*\"/>\t\n            <msdn-id>dd318759</msdn-id>\t\n            <unmanaged>unsigned int StreamNumber</unmanaged>\t\n            <unmanaged-short>unsigned int StreamNumber</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.BlitStateBackgroundColorData\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Contains the response to a <strong>D3DAUTHENTICATEDQUERY_OUTPUTIDCOUNT</strong> query.</p><p>To send this query, call <strong>IDirect3DAuthenticatedChannel9::Query</strong>.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_BLT_STATE_BACKGROUND_COLOR_DATA']/*\"/>\t\n            <msdn-id>dd318319</msdn-id>\t\n            <unmanaged>DXVAHD_BLT_STATE_BACKGROUND_COLOR_DATA</unmanaged>\t\n            <unmanaged-short>DXVAHD_BLT_STATE_BACKGROUND_COLOR_DATA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.BlitStateBackgroundColorData.YCbCr\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_BLT_STATE_BACKGROUND_COLOR_DATA::YCbCr']/*\"/>\t\n            <unmanaged>BOOL YCbCr</unmanaged>\t\n            <unmanaged-short>BOOL YCbCr</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.BlitStateBackgroundColorData.BackgroundColor\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_BLT_STATE_BACKGROUND_COLOR_DATA::BackgroundColor']/*\"/>\t\n            <unmanaged>DXVAHD_COLOR BackgroundColor</unmanaged>\t\n            <unmanaged-short>DXVAHD_COLOR BackgroundColor</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.BlitStateConstrictionData\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Specifies whether the output is downsampled in a  blit operation, when using Microsoft DirectX Video Acceleration High Definition (DXVA-HD).</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>If the <strong>Enable</strong> member is <strong>TRUE</strong>, the device downsamples the composed target rectangle  to the size given in the <strong>Size</strong> member, and then scales it back to the size of the target rectangle.</p><p>The width and height of <strong>Size</strong> must be greater than zero. If the size is larger than the target rectangle, downsampling does not occur.</p><p>To use this state, the device must support downsampling, indicated by the <strong><see cref=\"F:SharpDX.MediaFoundation.DirectX.FeatureCaps.Constriction\"/></strong> capability flag. To query for this capability, call <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.HDDevice.GetVideoProcessorDeviceCaps(SharpDX.MediaFoundation.DirectX.Vpdevcaps@)\"/></strong>. If the device supports downsampling, it sets the <strong><see cref=\"F:SharpDX.MediaFoundation.DirectX.FeatureCaps.Constriction\"/></strong> flag in the <strong>FeatureCaps</strong> member of the <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.Vpdevcaps\"/></strong> structure. </p><p>If the device does not support downsampling, the <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.HDVideoProcessor.SetVideoProcessBltState(SharpDX.MediaFoundation.DirectX.BlitState,System.Int32,System.IntPtr)\"/></strong> method fails for this state.</p><p>Downsampling is sometimes used to reduce the quality of premium content when other forms of content protection are not available.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_BLT_STATE_CONSTRICTION_DATA']/*\"/>\t\n            <msdn-id>dd318394</msdn-id>\t\n            <unmanaged>DXVAHD_BLT_STATE_CONSTRICTION_DATA</unmanaged>\t\n            <unmanaged-short>DXVAHD_BLT_STATE_CONSTRICTION_DATA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.BlitStateConstrictionData.Enable\">\n            <summary>\t\n            <dd> <p>If <strong>TRUE</strong>, downsampling is enabled<strong></strong>. Otherwise, downsampling is disabled and the <strong>Size</strong> member is ignored. The default state value is <strong><see cref=\"F:SharpDX.Result.False\"/></strong> (downsampling is disabled).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_BLT_STATE_CONSTRICTION_DATA::Enable']/*\"/>\t\n            <msdn-id>dd318394</msdn-id>\t\n            <unmanaged>BOOL Enable</unmanaged>\t\n            <unmanaged-short>BOOL Enable</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.BlitStateConstrictionData.Size\">\n            <summary>\t\n            <dd> <p>The sampling size. The default value is (1,1).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_BLT_STATE_CONSTRICTION_DATA::Size']/*\"/>\t\n            <msdn-id>dd318394</msdn-id>\t\n            <unmanaged>SIZE Size</unmanaged>\t\n            <unmanaged-short>SIZE Size</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.BlitStateOutputColorSpaceData\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Specifies the output color space for blit operations, when using Microsoft DirectX Video Acceleration High Definition (DXVA-HD).</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The <strong>RGB_Range</strong> member applies to RGB output, while the <strong>YCbCr_Matrix</strong> and <strong>YCbCr_xvYCC</strong> members apply to YCbCr (YUV) output. If the device performs color-space conversion on the background color, it uses the values that apply to  both color spaces.</p><p>Extended YCbCr can be used with either transfer matrix. Extended YCbCr does not change the black point or white point?the black point is still 16 and the white point is still 235. However, extended YCbCr explicitly allows blacker-than-black values in the range 1?15, and whiter-than-white values in the range 236?254. When extended YCbCr is used, the driver should not clip the luma values to the nominal 16?235 range.</p><p>If the device supports extended YCbCr, it sets the <strong><see cref=\"F:SharpDX.MediaFoundation.DirectX.DeviceCaps.XvYCC\"/></strong> capability flag in the <strong>DeviceCaps</strong> member of the <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.Vpdevcaps\"/></strong> structure. Otherwise, the device ignores the value of the <strong>YCbCr_xvYCC</strong> member and treats all YCbCr output as conventional YCbCr. To get the device's capabilities, call <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.HDDevice.GetVideoProcessorDeviceCaps(SharpDX.MediaFoundation.DirectX.Vpdevcaps@)\"/></strong>.</p><p>If the output format is a wide-gamut RGB format, output might fall outside the nominal [0...1] range of sRGB. This is particularly true if one or more input streams use extended YCbCr.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_BLT_STATE_OUTPUT_COLOR_SPACE_DATA']/*\"/>\t\n            <msdn-id>dd318395</msdn-id>\t\n            <unmanaged>DXVAHD_BLT_STATE_OUTPUT_COLOR_SPACE_DATA</unmanaged>\t\n            <unmanaged-short>DXVAHD_BLT_STATE_OUTPUT_COLOR_SPACE_DATA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.BlitStateOutputColorSpaceData.Value\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_BLT_STATE_OUTPUT_COLOR_SPACE_DATA::Value']/*\"/>\t\n            <unmanaged>unsigned int Value</unmanaged>\t\n            <unmanaged-short>unsigned int Value</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.DirectX.BlitStateOutputColorSpaceData.Usage\">\n            <summary>\t\n            <dd> <p>Specifies whether the output is intended for playback or video processing (such as editing or authoring). The device can optimize the processing based on the type. The default state value is 0 (playback). </p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td> <dl> <dt>0</dt> </dl> </td><td> <p>Playback.</p> </td></tr> <tr><td> <dl> <dt>1</dt> </dl> </td><td> <p>Video processing.</p> </td></tr> </table> <p>?</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_BLT_STATE_OUTPUT_COLOR_SPACE_DATA::Usage']/*\"/>\t\n            <msdn-id>dd318395</msdn-id>\t\n            <unmanaged>unsigned int Usage</unmanaged>\t\n            <unmanaged-short>unsigned int Usage</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.DirectX.BlitStateOutputColorSpaceData.RgbRange\">\n            <summary>\t\n            <dd> <p>Specifies the RGB color range. The default state value is 0 (full range).</p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td> <dl> <dt>0</dt> </dl> </td><td> <p>Full range (0-255).</p> </td></tr> <tr><td> <dl> <dt>1</dt> </dl> </td><td> <p>Limited range (16-235).</p> </td></tr> </table> <p>?</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_BLT_STATE_OUTPUT_COLOR_SPACE_DATA::RGB_Range']/*\"/>\t\n            <msdn-id>dd318395</msdn-id>\t\n            <unmanaged>unsigned int RGB_Range</unmanaged>\t\n            <unmanaged-short>unsigned int RGB_Range</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.DirectX.BlitStateOutputColorSpaceData.YCbCrMatrix\">\n            <summary>\t\n            <dd> <p>Specifies the YCbCr transfer matrix. The default state value is 0 (BT.601).</p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td> <dl> <dt>0</dt> </dl> </td><td> <p>ITU-R BT.601.</p> </td></tr> <tr><td> <dl> <dt>1</dt> </dl> </td><td> <p>ITU-R BT.709.</p> </td></tr> </table> <p>?</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_BLT_STATE_OUTPUT_COLOR_SPACE_DATA::YCbCr_Matrix']/*\"/>\t\n            <msdn-id>dd318395</msdn-id>\t\n            <unmanaged>unsigned int YCbCr_Matrix</unmanaged>\t\n            <unmanaged-short>unsigned int YCbCr_Matrix</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.DirectX.BlitStateOutputColorSpaceData.YCbCrXvYCC\">\n            <summary>\t\n            <dd> <p>Specifies whether the output uses conventional YCbCr or extended YCbCr (xvYCC). The default state value is zero (conventional YCbCr).</p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td> <dl> <dt>0</dt> </dl> </td><td> <p>Conventional YCbCr.</p> </td></tr> <tr><td> <dl> <dt>1</dt> </dl> </td><td> <p>Extended YCbCr (xvYCC).</p> </td></tr> </table> <p>?</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_BLT_STATE_OUTPUT_COLOR_SPACE_DATA::YCbCr_xvYCC']/*\"/>\t\n            <msdn-id>dd318395</msdn-id>\t\n            <unmanaged>unsigned int YCbCr_xvYCC</unmanaged>\t\n            <unmanaged-short>unsigned int YCbCr_xvYCC</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.DirectX.BlitStateOutputColorSpaceData.Reserved\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_BLT_STATE_OUTPUT_COLOR_SPACE_DATA::Reserved']/*\"/>\t\n            <unmanaged>unsigned int Reserved</unmanaged>\t\n            <unmanaged-short>unsigned int Reserved</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.BlitStatePrivateData\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Contains the response to a <strong>D3DAUTHENTICATEDQUERY_OUTPUTIDCOUNT</strong> query.</p><p>To send this query, call <strong>IDirect3DAuthenticatedChannel9::Query</strong>.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_BLT_STATE_PRIVATE_DATA']/*\"/>\t\n            <msdn-id>dd318319</msdn-id>\t\n            <unmanaged>DXVAHD_BLT_STATE_PRIVATE_DATA</unmanaged>\t\n            <unmanaged-short>DXVAHD_BLT_STATE_PRIVATE_DATA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.BlitStatePrivateData.Guid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_BLT_STATE_PRIVATE_DATA::Guid']/*\"/>\t\n            <unmanaged>GUID Guid</unmanaged>\t\n            <unmanaged-short>GUID Guid</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.BlitStatePrivateData.DataSize\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_BLT_STATE_PRIVATE_DATA::DataSize']/*\"/>\t\n            <unmanaged>unsigned int DataSize</unmanaged>\t\n            <unmanaged-short>unsigned int DataSize</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.BlitStatePrivateData.PData\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_BLT_STATE_PRIVATE_DATA::pData']/*\"/>\t\n            <unmanaged>void* pData</unmanaged>\t\n            <unmanaged-short>void pData</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.BlitStateTargetRectangleData\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Specifies the target rectangle for blitting, when using Microsoft DirectX Video Acceleration High Definition (DXVA-HD).</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_BLT_STATE_TARGET_RECT_DATA']/*\"/>\t\n            <msdn-id>dd318400</msdn-id>\t\n            <unmanaged>DXVAHD_BLT_STATE_TARGET_RECT_DATA</unmanaged>\t\n            <unmanaged-short>DXVAHD_BLT_STATE_TARGET_RECT_DATA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.BlitStateTargetRectangleData.Enable\">\n            <summary>\t\n            <dd> <p>Specifies whether to use the target rectangle. The default state value is <strong><see cref=\"F:SharpDX.Result.False\"/></strong>.</p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td><dl> <dt><strong>TRUE</strong></dt> </dl> </td><td> <p>Use the target rectangle specified by the <strong>TargetRect</strong> member.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.Result.False\"/></strong></dt> </dl> </td><td> <p>Use the entire destination surface as the target rectangle. Ignore the <strong>TargetRect</strong> member.</p> </td></tr> </table> <p>?</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_BLT_STATE_TARGET_RECT_DATA::Enable']/*\"/>\t\n            <msdn-id>dd318400</msdn-id>\t\n            <unmanaged>BOOL Enable</unmanaged>\t\n            <unmanaged-short>BOOL Enable</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.BlitStateTargetRectangleData.TargetRect\">\n            <summary>\t\n            <dd> <p>Specifies the <em>target rectangle</em>. The target rectangle is the area within the destination surface where the output will be drawn. The target rectangle is given in pixel coordinates, relative to the destination surface. The default state value is an empty rectangle, (0, 0, 0, 0).</p> <p>If the <strong>Enable</strong> member is <strong><see cref=\"F:SharpDX.Result.False\"/></strong>, the <strong>TargetRect</strong> member is ignored. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_BLT_STATE_TARGET_RECT_DATA::TargetRect']/*\"/>\t\n            <msdn-id>dd318400</msdn-id>\t\n            <unmanaged>RECT TargetRect</unmanaged>\t\n            <unmanaged-short>RECT TargetRect</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.Color\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Specifies a YCbCr color value.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Values have a nominal range of [0...1]. Given a format with  <em>n</em> bits per channel, the value of each color component is calculated as follows:</p><p><code>val = f * ((1 &lt;&lt; n)-1)</code></p><p>For example, for 8-bit YUV formats, <code>val = BYTE(f * 255.0)</code>.</p><p>Reference black is (0.0625, 0.5, 0.5), which corresponds to (16, 128, 128) in an 8-bit representation.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_COLOR']/*\"/>\t\n            <msdn-id>dd318407</msdn-id>\t\n            <unmanaged>DXVAHD_COLOR</unmanaged>\t\n            <unmanaged-short>DXVAHD_COLOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.Color.Rgb\">\n            <summary>\t\n            <dd> <p>The Y (luma) value.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_COLOR::RGB']/*\"/>\t\n            <msdn-id>dd318407</msdn-id>\t\n            <unmanaged>DXVAHD_COLOR_RGBA RGB</unmanaged>\t\n            <unmanaged-short>DXVAHD_COLOR_RGBA RGB</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.Color.YCbCr\">\n            <summary>\t\n            <dd> <p>The Cb chroma value.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_COLOR::YCbCr']/*\"/>\t\n            <msdn-id>dd318407</msdn-id>\t\n            <unmanaged>DXVAHD_COLOR_YCbCrA YCbCr</unmanaged>\t\n            <unmanaged-short>DXVAHD_COLOR_YCbCrA YCbCr</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.ColorRgba\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Specifies an RGB color value.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The RGB values have a nominal range of [0...1]. For an RGB format with  <em>n</em> bits per channel, the value of each color component is calculated as follows:</p><p><code>val = f * ((1 &lt;&lt; n)-1)</code></p><p>For example, for RGB-32 (8 bits per channel), <code>val = BYTE(f * 255.0)</code>.</p><p>For full-range RGB, reference black is (0.0, 0.0, 0.0), which corresponds to (0, 0, 0) in an 8-bit representation. For limited-range RGB, reference black is (0.0625, 0.0625, 0.0625), which corresponds to (16, 16, 16) in an 8-bit representation. For wide-gamut formats, the values might fall outside of the [0...1] range.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_COLOR_RGBA']/*\"/>\t\n            <msdn-id>dd318405</msdn-id>\t\n            <unmanaged>DXVAHD_COLOR_RGBA</unmanaged>\t\n            <unmanaged-short>DXVAHD_COLOR_RGBA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.ColorRgba.R\">\n            <summary>\t\n            <dd> <p>The red value.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_COLOR_RGBA::R']/*\"/>\t\n            <msdn-id>dd318405</msdn-id>\t\n            <unmanaged>float R</unmanaged>\t\n            <unmanaged-short>float R</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.ColorRgba.G\">\n            <summary>\t\n            <dd> <p>The green value.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_COLOR_RGBA::G']/*\"/>\t\n            <msdn-id>dd318405</msdn-id>\t\n            <unmanaged>float G</unmanaged>\t\n            <unmanaged-short>float G</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.ColorRgba.B\">\n            <summary>\t\n            <dd> <p>The blue value.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_COLOR_RGBA::B']/*\"/>\t\n            <msdn-id>dd318405</msdn-id>\t\n            <unmanaged>float B</unmanaged>\t\n            <unmanaged-short>float B</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.ColorRgba.A\">\n            <summary>\t\n            <dd> <p>The alpha value. Values range from 0 (transparent) to 1 (opaque).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_COLOR_RGBA::A']/*\"/>\t\n            <msdn-id>dd318405</msdn-id>\t\n            <unmanaged>float A</unmanaged>\t\n            <unmanaged-short>float A</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.ColorYCbCrA\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_COLOR_YCbCrA']/*\"/>\t\n            <unmanaged>DXVAHD_COLOR_YCbCrA</unmanaged>\t\n            <unmanaged-short>DXVAHD_COLOR_YCbCrA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.ColorYCbCrA.Y\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_COLOR_YCbCrA::Y']/*\"/>\t\n            <unmanaged>float Y</unmanaged>\t\n            <unmanaged-short>float Y</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.ColorYCbCrA.Cb\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_COLOR_YCbCrA::Cb']/*\"/>\t\n            <unmanaged>float Cb</unmanaged>\t\n            <unmanaged-short>float Cb</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.ColorYCbCrA.Cr\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_COLOR_YCbCrA::Cr']/*\"/>\t\n            <unmanaged>float Cr</unmanaged>\t\n            <unmanaged-short>float Cr</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.ColorYCbCrA.A\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_COLOR_YCbCrA::A']/*\"/>\t\n            <unmanaged>float A</unmanaged>\t\n            <unmanaged-short>float A</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.ConfigPictureDecode\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Describes the configuration of a DXVA decoder device. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_ConfigPictureDecode']/*\"/>\t\n            <msdn-id>ms694823</msdn-id>\t\n            <unmanaged>DXVA2_ConfigPictureDecode</unmanaged>\t\n            <unmanaged-short>DXVA2_ConfigPictureDecode</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.ConfigPictureDecode.GuidConfigBitstreamEncryption\">\n            <summary>\t\n            <dd> <p> Defines the encryption protocol type for bit-stream data buffers. If no encryption is applied, the value is DXVA_NoEncrypt. If <strong>ConfigBitstreamRaw</strong> is 0, the value must be DXVA_NoEncrypt. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_ConfigPictureDecode::guidConfigBitstreamEncryption']/*\"/>\t\n            <msdn-id>ms694823</msdn-id>\t\n            <unmanaged>GUID guidConfigBitstreamEncryption</unmanaged>\t\n            <unmanaged-short>GUID guidConfigBitstreamEncryption</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.ConfigPictureDecode.GuidConfigMBcontrolEncryption\">\n            <summary>\t\n            <dd> <p>Defines the encryption protocol type for macroblock control data buffers. If no encryption is applied, the value is DXVA_NoEncrypt. If <strong>ConfigBitstreamRaw</strong> is 1, the value must be DXVA_NoEncrypt. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_ConfigPictureDecode::guidConfigMBcontrolEncryption']/*\"/>\t\n            <msdn-id>ms694823</msdn-id>\t\n            <unmanaged>GUID guidConfigMBcontrolEncryption</unmanaged>\t\n            <unmanaged-short>GUID guidConfigMBcontrolEncryption</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.ConfigPictureDecode.GuidConfigResidDiffEncryption\">\n            <summary>\t\n            <dd> <p>Defines the encryption protocol type for residual difference decoding data buffers (buffers containing spatial-domain data or sets of transform-domain coefficients for accelerator-based IDCT). If no encryption is applied, the value is DXVA_NoEncrypt. If <strong>ConfigBitstreamRaw</strong> is 1, the value must be DXVA_NoEncrypt. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_ConfigPictureDecode::guidConfigResidDiffEncryption']/*\"/>\t\n            <msdn-id>ms694823</msdn-id>\t\n            <unmanaged>GUID guidConfigResidDiffEncryption</unmanaged>\t\n            <unmanaged-short>GUID guidConfigResidDiffEncryption</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.ConfigPictureDecode.ConfigBitstreamRaw\">\n            <summary>\t\n            <dd> <p>Indicates whether the host-decoder sends raw bit-stream data. If the value is 1, the data for the pictures will be sent in bit-stream buffers as raw bit-stream content. If the value is 0, picture data will be sent using macroblock control command buffers. If either <strong>ConfigResidDiffHost</strong> or <strong>ConfigResidDiffAccelerator</strong> is 1, the value must be 0. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_ConfigPictureDecode::ConfigBitstreamRaw']/*\"/>\t\n            <msdn-id>ms694823</msdn-id>\t\n            <unmanaged>unsigned int ConfigBitstreamRaw</unmanaged>\t\n            <unmanaged-short>unsigned int ConfigBitstreamRaw</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.ConfigPictureDecode.ConfigMBcontrolRasterOrder\">\n            <summary>\t\n            <dd> <p>Specifies whether macroblock control commands are in raster scan order or in arbitrary order. If the value is 1, the macroblock control commands within each macroblock control command buffer are in raster-scan order. If the value is 0, the order is arbitrary. For some types of bit streams, forcing raster order either greatly increases the number of required macroblock control buffers that must be processed, or requires host reordering of the control information. Therefore, supporting arbitrary order can be more efficient. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_ConfigPictureDecode::ConfigMBcontrolRasterOrder']/*\"/>\t\n            <msdn-id>ms694823</msdn-id>\t\n            <unmanaged>unsigned int ConfigMBcontrolRasterOrder</unmanaged>\t\n            <unmanaged-short>unsigned int ConfigMBcontrolRasterOrder</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.ConfigPictureDecode.ConfigResidDiffHost\">\n            <summary>\t\n            <dd> <p>Contains the host residual difference configuration. If the value is 1, some residual difference decoding data may be sent as blocks in the spatial domain from the host. If the value is 0, spatial domain data will not be sent. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_ConfigPictureDecode::ConfigResidDiffHost']/*\"/>\t\n            <msdn-id>ms694823</msdn-id>\t\n            <unmanaged>unsigned int ConfigResidDiffHost</unmanaged>\t\n            <unmanaged-short>unsigned int ConfigResidDiffHost</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.ConfigPictureDecode.ConfigSpatialResid8\">\n            <summary>\t\n            <dd> <p>Indicates the word size used to represent residual difference spatial-domain blocks for predicted (non-intra) pictures when using host-based residual difference decoding. </p> <p>If <strong>ConfigResidDiffHost</strong> is 1 and <strong>ConfigSpatialResid8</strong> is 1, the host will send residual difference spatial-domain blocks for non-intra macroblocks using 8-bit signed samples and for intra macroblocks in predicted (non-intra) pictures in a format that depends on the value of <strong>ConfigIntraResidUnsigned</strong>: </p> <ul> <li> If <strong>ConfigIntraResidUnsigned</strong> is 0, spatial-domain blocks for intra macroblocks are sent as 8-bit signed integer values relative to a constant reference value of 2^(BPP?1). </li> <li> If <strong>ConfigIntraResidUnsigned</strong> is 1, spatial-domain blocks for intra macroblocks are sent as 8-bit unsigned integer values relative to a constant reference value of 0. </li> </ul> <p> If <strong>ConfigResidDiffHost</strong> is 1 and <strong>ConfigSpatialResid8</strong> is 0, the host will send residual difference spatial-domain blocks of data for non-intra macroblocks using 16- bit signed samples and for intra macroblocks in predicted (non-intra) pictures in a format that depends on the value of <strong>ConfigIntraResidUnsigned</strong>: </p> <ul> <li> If <strong>ConfigIntraResidUnsigned</strong> is 0, spatial domain blocks for intra macroblocks are sent as 16-bit signed integer values relative to a constant reference value of 2^(BPP?1). </li> <li> If <strong>ConfigIntraResidUnsigned</strong> is 1, spatial domain blocks for intra macroblocks are sent as 16-bit unsigned integer values relative to a constant reference value of 0. </li> </ul> <p> If <strong>ConfigResidDiffHost</strong> is 0, <strong>ConfigSpatialResid8</strong> must be 0. </p> <p> For intra pictures, spatial-domain blocks must be sent using 8-bit samples if bits-per-pixel (BPP) is 8, and using 16-bit samples if BPP &gt; 8. If <strong>ConfigIntraResidUnsigned</strong> is 0, these samples are sent as signed integer values relative to a constant reference value of 2^(BPP?1), and if <strong>ConfigIntraResidUnsigned</strong> is 1, these samples are sent as unsigned integer values relative to a constant reference value of 0. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_ConfigPictureDecode::ConfigSpatialResid8']/*\"/>\t\n            <msdn-id>ms694823</msdn-id>\t\n            <unmanaged>unsigned int ConfigSpatialResid8</unmanaged>\t\n            <unmanaged-short>unsigned int ConfigSpatialResid8</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.ConfigPictureDecode.ConfigResid8Subtraction\">\n            <summary>\t\n            <dd> <p> If the value is 1, 8-bit difference overflow blocks are subtracted rather than added. The value must be 0 unless <strong>ConfigSpatialResid8</strong> is 1. </p> <p> The ability to subtract differences rather than add them enables 8-bit difference decoding to be fully compliant with the full ?255 range of values required in video decoder specifications, because +255 cannot be represented as the addition of two signed 8-bit numbers, but any number in the range ?255 can be represented as the difference between two signed 8-bit numbers (+255 = +127 minus ?128).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_ConfigPictureDecode::ConfigResid8Subtraction']/*\"/>\t\n            <msdn-id>ms694823</msdn-id>\t\n            <unmanaged>unsigned int ConfigResid8Subtraction</unmanaged>\t\n            <unmanaged-short>unsigned int ConfigResid8Subtraction</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.ConfigPictureDecode.ConfigSpatialHost8or9Clipping\">\n            <summary>\t\n            <dd> <p> If the value is 1, spatial-domain blocks for intra macroblocks must be clipped to an 8-bit range on the host and spatial-domain blocks for non-intra macroblocks must be clipped to a 9-bit range on the host. If the value is 0, no such clipping is necessary by the host. </p> <p> The value must be 0 unless <strong>ConfigSpatialResid8</strong> is 0 and <strong>ConfigResidDiffHost</strong> is 1. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_ConfigPictureDecode::ConfigSpatialHost8or9Clipping']/*\"/>\t\n            <msdn-id>ms694823</msdn-id>\t\n            <unmanaged>unsigned int ConfigSpatialHost8or9Clipping</unmanaged>\t\n            <unmanaged-short>unsigned int ConfigSpatialHost8or9Clipping</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.ConfigPictureDecode.ConfigSpatialResidInterleaved\">\n            <summary>\t\n            <dd> <p> If the value is 1, any spatial-domain residual difference data must be sent in a chrominance-interleaved form matching the YUV format chrominance interleaving pattern. The value must be 0 unless <strong>ConfigResidDiffHost</strong> is 1 and the YUV format is NV12 or NV21. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_ConfigPictureDecode::ConfigSpatialResidInterleaved']/*\"/>\t\n            <msdn-id>ms694823</msdn-id>\t\n            <unmanaged>unsigned int ConfigSpatialResidInterleaved</unmanaged>\t\n            <unmanaged-short>unsigned int ConfigSpatialResidInterleaved</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.ConfigPictureDecode.ConfigIntraResidUnsigned\">\n            <summary>\t\n            <dd> <p> Indicates the method of representation of spatial-domain blocks of residual difference data for intra blocks when using host-based difference decoding. </p> <p> If <strong>ConfigResidDiffHost</strong> is 1 and <strong>ConfigIntraResidUnsigned</strong> is 0, spatial-domain residual difference data blocks for intra macroblocks must be sent as follows: </p> <ul> <li> In a non-intra picture, if <strong>ConfigSpatialResid8</strong> is 0, the spatial-domain residual difference data blocks for intra macroblocks are sent as 16-bit signed integer values relative to a constant reference value of 2^(BPP?1). </li> <li> In a non-intra picture, if <strong>ConfigSpatialResid8</strong> is 1, the spatial-domain residual difference data blocks for intra macroblocks are sent as 8-bit signed integer values relative to a constant reference value of 2^(BPP?1). </li> <li> In an intra picture, if BPP is 8, the spatial-domain residual difference data blocks for intra macroblocks are sent as 8-bit signed integer values relative to a constant reference value of 2^(BPP?1), regardless of the value of <strong>ConfigSpatialResid8</strong>. </li> </ul> <p> If <strong>ConfigResidDiffHost</strong> is 1 and <strong>ConfigIntraResidUnsigned</strong> is 1, spatial-domain residual difference data blocks for intra macroblocks must be sent as follows: </p> <ul> <li> In a non-intra picture, if <strong>ConfigSpatialResid8</strong> is 0, the spatial-domain residual difference data blocks for intra macroblocks must be sent as 16-bit unsigned integer values relative to a constant reference value of 0. </li> <li> In a non-intra picture, if <strong>ConfigSpatialResid8</strong> is 1, the spatial-domain residual difference data blocks for intra macroblocks are sent as 8-bit unsigned integer values relative to a constant reference value of 0. </li> <li> In an intra picture, if BPP is 8, the spatial-domain residual difference data blocks for intra macroblocks are sent as 8-bit unsigned integer values relative to a constant reference value of 0, regardless of the value of <strong>ConfigSpatialResid8</strong>. </li> </ul> <p> The value of the member must be 0 unless <strong>ConfigResidDiffHost</strong> is 1. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_ConfigPictureDecode::ConfigIntraResidUnsigned']/*\"/>\t\n            <msdn-id>ms694823</msdn-id>\t\n            <unmanaged>unsigned int ConfigIntraResidUnsigned</unmanaged>\t\n            <unmanaged-short>unsigned int ConfigIntraResidUnsigned</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.ConfigPictureDecode.ConfigResidDiffAccelerator\">\n            <summary>\t\n            <dd> <p> If the value is 1, transform-domain blocks of coefficient data may be sent from the host for accelerator-based IDCT. If the value is 0, accelerator-based IDCT will not be used. If both <strong>ConfigResidDiffHost</strong> and <strong>ConfigResidDiffAccelerator</strong> are 1, this indicates that some residual difference decoding will be done on the host and some on the accelerator, as indicated by macroblock-level control commands. </p> <p> The value must be 0 if <strong>ConfigBitstreamRaw</strong> is 1. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_ConfigPictureDecode::ConfigResidDiffAccelerator']/*\"/>\t\n            <msdn-id>ms694823</msdn-id>\t\n            <unmanaged>unsigned int ConfigResidDiffAccelerator</unmanaged>\t\n            <unmanaged-short>unsigned int ConfigResidDiffAccelerator</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.ConfigPictureDecode.ConfigHostInverseScan\">\n            <summary>\t\n            <dd> <p> If the value is 1, the inverse scan for transform-domain block processing will be performed on the host, and absolute indices will be sent instead for any transform coefficients. If the value is 0, the inverse scan will be performed on the accelerator. </p> <p> The value must be 0 if <strong>ConfigResidDiffAccelerator</strong> is 0 or if <strong>Config4GroupedCoefs</strong> is 1. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_ConfigPictureDecode::ConfigHostInverseScan']/*\"/>\t\n            <msdn-id>ms694823</msdn-id>\t\n            <unmanaged>unsigned int ConfigHostInverseScan</unmanaged>\t\n            <unmanaged-short>unsigned int ConfigHostInverseScan</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.ConfigPictureDecode.ConfigSpecificIDCT\">\n            <summary>\t\n            <dd> <p> If the value is 1, the IDCT specified in Annex W of ITU-T Recommendation H.263 is used. If the value is 0, any compliant IDCT can be used for off-host IDCT. </p> <p> The H.263 annex does not comply with the IDCT requirements of MPEG-2 corrigendum 2, so the value must not be 1 for use with MPEG-2 video. </p> <p> The value must be 0 if <strong>ConfigResidDiffAccelerator</strong> is 0, indicating purely host-based residual difference decoding. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_ConfigPictureDecode::ConfigSpecificIDCT']/*\"/>\t\n            <msdn-id>ms694823</msdn-id>\t\n            <unmanaged>unsigned int ConfigSpecificIDCT</unmanaged>\t\n            <unmanaged-short>unsigned int ConfigSpecificIDCT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.ConfigPictureDecode.Config4GroupedCoefs\">\n            <summary>\t\n            <dd> <p> If the value is 1, transform coefficients for off-host IDCT will be sent using the <strong>DXVA_TCoef4Group</strong> structure. If the value is 0, the <strong>DXVA_TCoefSingle</strong> structure is used. The value must be 0 if <strong>ConfigResidDiffAccelerator</strong> is 0 or if <strong>ConfigHostInverseScan</strong> is 1. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_ConfigPictureDecode::Config4GroupedCoefs']/*\"/>\t\n            <msdn-id>ms694823</msdn-id>\t\n            <unmanaged>unsigned int Config4GroupedCoefs</unmanaged>\t\n            <unmanaged-short>unsigned int Config4GroupedCoefs</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.ConfigPictureDecode.ConfigMinRenderTargetBuffCount\">\n            <summary>\t\n            <dd> <p> Specifies how many frames the decoder device processes at any one time. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_ConfigPictureDecode::ConfigMinRenderTargetBuffCount']/*\"/>\t\n            <msdn-id>ms694823</msdn-id>\t\n            <unmanaged>unsigned short ConfigMinRenderTargetBuffCount</unmanaged>\t\n            <unmanaged-short>unsigned short ConfigMinRenderTargetBuffCount</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.ConfigPictureDecode.ConfigDecoderSpecific\">\n            <summary>\t\n            <dd> <p> Contains decoder-specific configuration information. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_ConfigPictureDecode::ConfigDecoderSpecific']/*\"/>\t\n            <msdn-id>ms694823</msdn-id>\t\n            <unmanaged>unsigned short ConfigDecoderSpecific</unmanaged>\t\n            <unmanaged-short>unsigned short ConfigDecoderSpecific</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.ContentDescription\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Describes a video stream for a Microsoft DirectX Video Acceleration High Definition (DXVA-HD) video processor.</p><p>The display driver can use the information in this structure to optimize the capabilities of the video processor. For example, some capabilities might not be exposed for high-definition (HD) content, for performance reasons. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p> Frame rates are expressed as ratios. For example, 30 frames per second (fps) is expressed as 30:1, and 29.97 fps is expressed as 30000/1001. For interlaced content, a frame consists of two fields, so that the frame rate is half the field rate. </p><p> If the application will composite two or more input streams, use the largest stream for the values of <strong>InputWidth</strong> and <strong>InputHeight</strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_CONTENT_DESC']/*\"/>\t\n            <msdn-id>dd318409</msdn-id>\t\n            <unmanaged>DXVAHD_CONTENT_DESC</unmanaged>\t\n            <unmanaged-short>DXVAHD_CONTENT_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.ContentDescription.InputFrameFormat\">\n            <summary>\t\n            <dd> <p>A member of the <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.FrameFormat\"/></strong> enumeration that describes how the video stream is interlaced.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_CONTENT_DESC::InputFrameFormat']/*\"/>\t\n            <msdn-id>dd318409</msdn-id>\t\n            <unmanaged>DXVAHD_FRAME_FORMAT InputFrameFormat</unmanaged>\t\n            <unmanaged-short>DXVAHD_FRAME_FORMAT InputFrameFormat</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.ContentDescription.InputFrameRate\">\n            <summary>\t\n            <dd> <p>The frame rate of the input video stream, specified as a <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.Rational\"/></strong> structure.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_CONTENT_DESC::InputFrameRate']/*\"/>\t\n            <msdn-id>dd318409</msdn-id>\t\n            <unmanaged>DXVAHD_RATIONAL InputFrameRate</unmanaged>\t\n            <unmanaged-short>DXVAHD_RATIONAL InputFrameRate</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.ContentDescription.InputWidth\">\n            <summary>\t\n            <dd> <p>The width of the input frames, in pixels.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_CONTENT_DESC::InputWidth']/*\"/>\t\n            <msdn-id>dd318409</msdn-id>\t\n            <unmanaged>unsigned int InputWidth</unmanaged>\t\n            <unmanaged-short>unsigned int InputWidth</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.ContentDescription.InputHeight\">\n            <summary>\t\n            <dd> <p>The height of the input frames, in pixels.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_CONTENT_DESC::InputHeight']/*\"/>\t\n            <msdn-id>dd318409</msdn-id>\t\n            <unmanaged>unsigned int InputHeight</unmanaged>\t\n            <unmanaged-short>unsigned int InputHeight</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.ContentDescription.OutputFrameRate\">\n            <summary>\t\n            <dd> <p>The frame rate of the output video stream, specified as a <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.Rational\"/></strong> structure.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_CONTENT_DESC::OutputFrameRate']/*\"/>\t\n            <msdn-id>dd318409</msdn-id>\t\n            <unmanaged>DXVAHD_RATIONAL OutputFrameRate</unmanaged>\t\n            <unmanaged-short>DXVAHD_RATIONAL OutputFrameRate</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.ContentDescription.OutputWidth\">\n            <summary>\t\n            <dd> <p>The width of the output frames, in pixels.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_CONTENT_DESC::OutputWidth']/*\"/>\t\n            <msdn-id>dd318409</msdn-id>\t\n            <unmanaged>unsigned int OutputWidth</unmanaged>\t\n            <unmanaged-short>unsigned int OutputWidth</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.ContentDescription.OutputHeight\">\n            <summary>\t\n            <dd> <p>The height of the output frames, in pixels.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_CONTENT_DESC::OutputHeight']/*\"/>\t\n            <msdn-id>dd318409</msdn-id>\t\n            <unmanaged>unsigned int OutputHeight</unmanaged>\t\n            <unmanaged-short>unsigned int OutputHeight</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.CustomRateData\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Contains the response to a <strong>D3DAUTHENTICATEDQUERY_OUTPUTIDCOUNT</strong> query.</p><p>To send this query, call <strong>IDirect3DAuthenticatedChannel9::Query</strong>.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_CUSTOM_RATE_DATA']/*\"/>\t\n            <msdn-id>dd318319</msdn-id>\t\n            <unmanaged>DXVAHD_CUSTOM_RATE_DATA</unmanaged>\t\n            <unmanaged-short>DXVAHD_CUSTOM_RATE_DATA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.CustomRateData.CustomRate\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_CUSTOM_RATE_DATA::CustomRate']/*\"/>\t\n            <unmanaged>DXVAHD_RATIONAL CustomRate</unmanaged>\t\n            <unmanaged-short>DXVAHD_RATIONAL CustomRate</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.CustomRateData.OutputFrames\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_CUSTOM_RATE_DATA::OutputFrames']/*\"/>\t\n            <unmanaged>unsigned int OutputFrames</unmanaged>\t\n            <unmanaged-short>unsigned int OutputFrames</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.CustomRateData.InputInterlaced\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_CUSTOM_RATE_DATA::InputInterlaced']/*\"/>\t\n            <unmanaged>BOOL InputInterlaced</unmanaged>\t\n            <unmanaged-short>BOOL InputInterlaced</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.CustomRateData.InputFramesOrFields\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_CUSTOM_RATE_DATA::InputFramesOrFields']/*\"/>\t\n            <unmanaged>unsigned int InputFramesOrFields</unmanaged>\t\n            <unmanaged-short>unsigned int InputFramesOrFields</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.DecodeBufferDesc\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Contains an initialization vector (IV) for 128-bit Advanced Encryption Standard CTR mode (AES-CTR) block cipher encryption.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>For AES-CTR encyption, the <strong>pvPVPState</strong> member of the <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.DecodeBufferDesc\"/></strong> structure points to a <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.AesCtrIv\"/></strong> structure.</p><p>The <strong>D3DAES_CTR_IV</strong> structure and the <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.AesCtrIv\"/></strong> structure are equivalent.</p>Sequential Counts<p>If the <strong>IDirect3DDevice9Video::GetContentProtectionCaps</strong> method returns the <strong>D3DCPCAPS_SEQUENTIAL_CTR_IV</strong> flag, the caller should keep <strong>IV</strong> unchanged when submitting multiple buffers for the same video frame, and <strong>Count</strong> should be in sequential order of the previous submission for the frame.</p><p>Example: Suppose the software decoder submits three buffers for a single frame, and that each buffer contains three 128-bit blocks.  For the first buffer, <strong>IV</strong> can be any value. For the next two buffers, the same value of <strong>IV</strong> must be used. The value of  <strong>Count</strong> starts at 1. For the second buffer, <strong>Count</strong> equals 4 (1 + 3 blocks from the first submission). For the third buffer, <strong>Count</strong> equals 7 (4 + 3 blocks from the second submission).</p><p>When the <strong>D3DCPCAPS_SEQUENTIAL_CTR_IV</strong> capability is present, it is recommended to submit data in 128-bit blocks.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_DecodeBufferDesc']/*\"/>\t\n            <msdn-id>ff728850</msdn-id>\t\n            <unmanaged>DXVA2_DecodeBufferDesc</unmanaged>\t\n            <unmanaged-short>DXVA2_DecodeBufferDesc</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.DecodeBufferDesc.CompressedBufferType\">\n            <summary>\t\n            <dd> <p>The IV, in big-endian format.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_DecodeBufferDesc::CompressedBufferType']/*\"/>\t\n            <msdn-id>ff728850</msdn-id>\t\n            <unmanaged>unsigned int CompressedBufferType</unmanaged>\t\n            <unmanaged-short>unsigned int CompressedBufferType</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.DecodeBufferDesc.BufferIndex\">\n            <summary>\t\n            <dd> <p>The block count, in big-endian format.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_DecodeBufferDesc::BufferIndex']/*\"/>\t\n            <msdn-id>ff728850</msdn-id>\t\n            <unmanaged>unsigned int BufferIndex</unmanaged>\t\n            <unmanaged-short>unsigned int BufferIndex</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.DecodeBufferDesc.DataOffset\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_DecodeBufferDesc::DataOffset']/*\"/>\t\n            <unmanaged>unsigned int DataOffset</unmanaged>\t\n            <unmanaged-short>unsigned int DataOffset</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.DecodeBufferDesc.DataSize\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_DecodeBufferDesc::DataSize']/*\"/>\t\n            <unmanaged>unsigned int DataSize</unmanaged>\t\n            <unmanaged-short>unsigned int DataSize</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.DecodeBufferDesc.FirstMBaddress\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_DecodeBufferDesc::FirstMBaddress']/*\"/>\t\n            <unmanaged>unsigned int FirstMBaddress</unmanaged>\t\n            <unmanaged-short>unsigned int FirstMBaddress</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.DecodeBufferDesc.NumMBsInBuffer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_DecodeBufferDesc::NumMBsInBuffer']/*\"/>\t\n            <unmanaged>unsigned int NumMBsInBuffer</unmanaged>\t\n            <unmanaged-short>unsigned int NumMBsInBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.DecodeBufferDesc.Width\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_DecodeBufferDesc::Width']/*\"/>\t\n            <unmanaged>unsigned int Width</unmanaged>\t\n            <unmanaged-short>unsigned int Width</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.DecodeBufferDesc.Height\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_DecodeBufferDesc::Height']/*\"/>\t\n            <unmanaged>unsigned int Height</unmanaged>\t\n            <unmanaged-short>unsigned int Height</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.DecodeBufferDesc.Stride\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_DecodeBufferDesc::Stride']/*\"/>\t\n            <unmanaged>unsigned int Stride</unmanaged>\t\n            <unmanaged-short>unsigned int Stride</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.DecodeBufferDesc.ReservedBits\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_DecodeBufferDesc::ReservedBits']/*\"/>\t\n            <unmanaged>unsigned int ReservedBits</unmanaged>\t\n            <unmanaged-short>unsigned int ReservedBits</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.DecodeBufferDesc.PvPVPState\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_DecodeBufferDesc::pvPVPState']/*\"/>\t\n            <unmanaged>void* pvPVPState</unmanaged>\t\n            <unmanaged-short>void pvPVPState</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.DecodeExecuteParams\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Executes a decoding operation on the current frame. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>You must call <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.VideoDecoder.BeginFrame(SharpDX.Direct3D9.Surface,System.IntPtr)\"/></strong> before calling this method.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_DecodeExecuteParams']/*\"/>\t\n            <msdn-id>ms696258</msdn-id>\t\n            <unmanaged>DXVA2_DecodeExecuteParams</unmanaged>\t\n            <unmanaged-short>DXVA2_DecodeExecuteParams</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.DecodeExecuteParams.NumCompBuffers\">\n            <summary>\t\n            <dd> <p>Pointer to a <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.DecodeExecuteParams\"/></strong> structure that contains the information needed for the decoding operation.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_DecodeExecuteParams::NumCompBuffers']/*\"/>\t\n            <msdn-id>ms696258</msdn-id>\t\n            <unmanaged>unsigned int NumCompBuffers</unmanaged>\t\n            <unmanaged-short>unsigned int NumCompBuffers</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.DecodeExecuteParams.PCompressedBuffers\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_DecodeExecuteParams::pCompressedBuffers']/*\"/>\t\n            <unmanaged>DXVA2_DecodeBufferDesc* pCompressedBuffers</unmanaged>\t\n            <unmanaged-short>DXVA2_DecodeBufferDesc pCompressedBuffers</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.DecodeExecuteParams.PExtensionData\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_DecodeExecuteParams::pExtensionData']/*\"/>\t\n            <unmanaged>DXVA2_DecodeExtensionData* pExtensionData</unmanaged>\t\n            <unmanaged-short>DXVA2_DecodeExtensionData pExtensionData</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.DecodeExtensionData\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Contains private data for the <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.VideoDecoder.Execute(SharpDX.MediaFoundation.DirectX.DecodeExecuteParams)\"/></strong> method.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure corresponds to parameters of the <strong>IAMVideoAccelerator::Execute</strong> method in DirectX Video Acceleration (DXVA) version 1.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_DecodeExtensionData']/*\"/>\t\n            <msdn-id>ms696173</msdn-id>\t\n            <unmanaged>DXVA2_DecodeExtensionData</unmanaged>\t\n            <unmanaged-short>DXVA2_DecodeExtensionData</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.DecodeExtensionData.Function\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_DecodeExtensionData::Function']/*\"/>\t\n            <unmanaged>unsigned int Function</unmanaged>\t\n            <unmanaged-short>unsigned int Function</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.DecodeExtensionData.PPrivateInputData\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_DecodeExtensionData::pPrivateInputData']/*\"/>\t\n            <unmanaged>void* pPrivateInputData</unmanaged>\t\n            <unmanaged-short>void pPrivateInputData</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.DecodeExtensionData.PrivateInputDataSize\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_DecodeExtensionData::PrivateInputDataSize']/*\"/>\t\n            <unmanaged>unsigned int PrivateInputDataSize</unmanaged>\t\n            <unmanaged-short>unsigned int PrivateInputDataSize</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.DecodeExtensionData.PPrivateOutputData\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_DecodeExtensionData::pPrivateOutputData']/*\"/>\t\n            <unmanaged>void* pPrivateOutputData</unmanaged>\t\n            <unmanaged-short>void pPrivateOutputData</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.DecodeExtensionData.PrivateOutputDataSize\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_DecodeExtensionData::PrivateOutputDataSize']/*\"/>\t\n            <unmanaged>unsigned int PrivateOutputDataSize</unmanaged>\t\n            <unmanaged-short>unsigned int PrivateOutputDataSize</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.EtwCreateVideoProcessor\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHDETW_CREATEVIDEOPROCESSOR']/*\"/>\t\n            <unmanaged>DXVAHDETW_CREATEVIDEOPROCESSOR</unmanaged>\t\n            <unmanaged-short>DXVAHDETW_CREATEVIDEOPROCESSOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.EtwCreateVideoProcessor.PObject\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHDETW_CREATEVIDEOPROCESSOR::pObject']/*\"/>\t\n            <unmanaged>unsigned longlong pObject</unmanaged>\t\n            <unmanaged-short>unsigned longlong pObject</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.EtwCreateVideoProcessor.PD3D9Ex\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHDETW_CREATEVIDEOPROCESSOR::pD3D9Ex']/*\"/>\t\n            <unmanaged>unsigned longlong pD3D9Ex</unmanaged>\t\n            <unmanaged-short>unsigned longlong pD3D9Ex</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.EtwCreateVideoProcessor.VPGuid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHDETW_CREATEVIDEOPROCESSOR::VPGuid']/*\"/>\t\n            <unmanaged>GUID VPGuid</unmanaged>\t\n            <unmanaged-short>GUID VPGuid</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.EtwDestroyVideoProcessor\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHDETW_DESTROYVIDEOPROCESSOR']/*\"/>\t\n            <unmanaged>DXVAHDETW_DESTROYVIDEOPROCESSOR</unmanaged>\t\n            <unmanaged-short>DXVAHDETW_DESTROYVIDEOPROCESSOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.EtwDestroyVideoProcessor.PObject\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHDETW_DESTROYVIDEOPROCESSOR::pObject']/*\"/>\t\n            <unmanaged>unsigned longlong pObject</unmanaged>\t\n            <unmanaged-short>unsigned longlong pObject</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.EtwVideoProcessblthd\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHDETW_VIDEOPROCESSBLTHD']/*\"/>\t\n            <unmanaged>DXVAHDETW_VIDEOPROCESSBLTHD</unmanaged>\t\n            <unmanaged-short>DXVAHDETW_VIDEOPROCESSBLTHD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.EtwVideoProcessblthd.PObject\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHDETW_VIDEOPROCESSBLTHD::pObject']/*\"/>\t\n            <unmanaged>unsigned longlong pObject</unmanaged>\t\n            <unmanaged-short>unsigned longlong pObject</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.EtwVideoProcessblthd.POutputSurface\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHDETW_VIDEOPROCESSBLTHD::pOutputSurface']/*\"/>\t\n            <unmanaged>unsigned longlong pOutputSurface</unmanaged>\t\n            <unmanaged-short>unsigned longlong pOutputSurface</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.EtwVideoProcessblthd.TargetRect\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHDETW_VIDEOPROCESSBLTHD::TargetRect']/*\"/>\t\n            <unmanaged>RECT TargetRect</unmanaged>\t\n            <unmanaged-short>RECT TargetRect</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.EtwVideoProcessblthd.OutputFormat\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHDETW_VIDEOPROCESSBLTHD::OutputFormat']/*\"/>\t\n            <unmanaged>D3DFORMAT OutputFormat</unmanaged>\t\n            <unmanaged-short>D3DFORMAT OutputFormat</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.EtwVideoProcessblthd.ColorSpace\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHDETW_VIDEOPROCESSBLTHD::ColorSpace']/*\"/>\t\n            <unmanaged>unsigned int ColorSpace</unmanaged>\t\n            <unmanaged-short>unsigned int ColorSpace</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.EtwVideoProcessblthd.OutputFrame\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHDETW_VIDEOPROCESSBLTHD::OutputFrame']/*\"/>\t\n            <unmanaged>unsigned int OutputFrame</unmanaged>\t\n            <unmanaged-short>unsigned int OutputFrame</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.EtwVideoProcessblthd.StreamCount\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHDETW_VIDEOPROCESSBLTHD::StreamCount']/*\"/>\t\n            <unmanaged>unsigned int StreamCount</unmanaged>\t\n            <unmanaged-short>unsigned int StreamCount</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.EtwVideoProcessblthd.Enter\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHDETW_VIDEOPROCESSBLTHD::Enter']/*\"/>\t\n            <unmanaged>BOOL Enter</unmanaged>\t\n            <unmanaged-short>BOOL Enter</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.EtwVideoProcessblthdStream\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHDETW_VIDEOPROCESSBLTHD_STREAM']/*\"/>\t\n            <unmanaged>DXVAHDETW_VIDEOPROCESSBLTHD_STREAM</unmanaged>\t\n            <unmanaged-short>DXVAHDETW_VIDEOPROCESSBLTHD_STREAM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.EtwVideoProcessblthdStream.PObject\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHDETW_VIDEOPROCESSBLTHD_STREAM::pObject']/*\"/>\t\n            <unmanaged>unsigned longlong pObject</unmanaged>\t\n            <unmanaged-short>unsigned longlong pObject</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.EtwVideoProcessblthdStream.PInputSurface\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHDETW_VIDEOPROCESSBLTHD_STREAM::pInputSurface']/*\"/>\t\n            <unmanaged>unsigned longlong pInputSurface</unmanaged>\t\n            <unmanaged-short>unsigned longlong pInputSurface</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.EtwVideoProcessblthdStream.SourceRect\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHDETW_VIDEOPROCESSBLTHD_STREAM::SourceRect']/*\"/>\t\n            <unmanaged>RECT SourceRect</unmanaged>\t\n            <unmanaged-short>RECT SourceRect</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.EtwVideoProcessblthdStream.DestinationRect\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHDETW_VIDEOPROCESSBLTHD_STREAM::DestinationRect']/*\"/>\t\n            <unmanaged>RECT DestinationRect</unmanaged>\t\n            <unmanaged-short>RECT DestinationRect</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.EtwVideoProcessblthdStream.InputFormat\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHDETW_VIDEOPROCESSBLTHD_STREAM::InputFormat']/*\"/>\t\n            <unmanaged>D3DFORMAT InputFormat</unmanaged>\t\n            <unmanaged-short>D3DFORMAT InputFormat</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.EtwVideoProcessblthdStream.FrameFormat\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHDETW_VIDEOPROCESSBLTHD_STREAM::FrameFormat']/*\"/>\t\n            <unmanaged>DXVAHD_FRAME_FORMAT FrameFormat</unmanaged>\t\n            <unmanaged-short>DXVAHD_FRAME_FORMAT FrameFormat</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.EtwVideoProcessblthdStream.ColorSpace\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHDETW_VIDEOPROCESSBLTHD_STREAM::ColorSpace']/*\"/>\t\n            <unmanaged>unsigned int ColorSpace</unmanaged>\t\n            <unmanaged-short>unsigned int ColorSpace</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.EtwVideoProcessblthdStream.StreamNumber\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHDETW_VIDEOPROCESSBLTHD_STREAM::StreamNumber']/*\"/>\t\n            <unmanaged>unsigned int StreamNumber</unmanaged>\t\n            <unmanaged-short>unsigned int StreamNumber</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.EtwVideoProcessblthdStream.OutputIndex\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHDETW_VIDEOPROCESSBLTHD_STREAM::OutputIndex']/*\"/>\t\n            <unmanaged>unsigned int OutputIndex</unmanaged>\t\n            <unmanaged-short>unsigned int OutputIndex</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.EtwVideoProcessblthdStream.InputFrameOrField\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHDETW_VIDEOPROCESSBLTHD_STREAM::InputFrameOrField']/*\"/>\t\n            <unmanaged>unsigned int InputFrameOrField</unmanaged>\t\n            <unmanaged-short>unsigned int InputFrameOrField</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.EtwVideoProcessblthdStream.PastFrames\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHDETW_VIDEOPROCESSBLTHD_STREAM::PastFrames']/*\"/>\t\n            <unmanaged>unsigned int PastFrames</unmanaged>\t\n            <unmanaged-short>unsigned int PastFrames</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.EtwVideoProcessblthdStream.FutureFrames\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHDETW_VIDEOPROCESSBLTHD_STREAM::FutureFrames']/*\"/>\t\n            <unmanaged>unsigned int FutureFrames</unmanaged>\t\n            <unmanaged-short>unsigned int FutureFrames</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.EtwVideoProcessbltstate\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHDETW_VIDEOPROCESSBLTSTATE']/*\"/>\t\n            <unmanaged>DXVAHDETW_VIDEOPROCESSBLTSTATE</unmanaged>\t\n            <unmanaged-short>DXVAHDETW_VIDEOPROCESSBLTSTATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.EtwVideoProcessbltstate.PObject\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHDETW_VIDEOPROCESSBLTSTATE::pObject']/*\"/>\t\n            <unmanaged>unsigned longlong pObject</unmanaged>\t\n            <unmanaged-short>unsigned longlong pObject</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.EtwVideoProcessbltstate.State\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHDETW_VIDEOPROCESSBLTSTATE::State']/*\"/>\t\n            <unmanaged>DXVAHD_BLT_STATE State</unmanaged>\t\n            <unmanaged-short>DXVAHD_BLT_STATE State</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.EtwVideoProcessbltstate.DataSize\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHDETW_VIDEOPROCESSBLTSTATE::DataSize']/*\"/>\t\n            <unmanaged>unsigned int DataSize</unmanaged>\t\n            <unmanaged-short>unsigned int DataSize</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.EtwVideoProcessbltstate.SetState\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHDETW_VIDEOPROCESSBLTSTATE::SetState']/*\"/>\t\n            <unmanaged>BOOL SetState</unmanaged>\t\n            <unmanaged-short>BOOL SetState</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.EtwVideoProcessstreamstate\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHDETW_VIDEOPROCESSSTREAMSTATE']/*\"/>\t\n            <unmanaged>DXVAHDETW_VIDEOPROCESSSTREAMSTATE</unmanaged>\t\n            <unmanaged-short>DXVAHDETW_VIDEOPROCESSSTREAMSTATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.EtwVideoProcessstreamstate.PObject\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHDETW_VIDEOPROCESSSTREAMSTATE::pObject']/*\"/>\t\n            <unmanaged>unsigned longlong pObject</unmanaged>\t\n            <unmanaged-short>unsigned longlong pObject</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.EtwVideoProcessstreamstate.StreamNumber\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHDETW_VIDEOPROCESSSTREAMSTATE::StreamNumber']/*\"/>\t\n            <unmanaged>unsigned int StreamNumber</unmanaged>\t\n            <unmanaged-short>unsigned int StreamNumber</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.EtwVideoProcessstreamstate.State\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHDETW_VIDEOPROCESSSTREAMSTATE::State']/*\"/>\t\n            <unmanaged>DXVAHD_STREAM_STATE State</unmanaged>\t\n            <unmanaged-short>DXVAHD_STREAM_STATE State</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.EtwVideoProcessstreamstate.DataSize\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHDETW_VIDEOPROCESSSTREAMSTATE::DataSize']/*\"/>\t\n            <unmanaged>unsigned int DataSize</unmanaged>\t\n            <unmanaged-short>unsigned int DataSize</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.EtwVideoProcessstreamstate.SetState\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHDETW_VIDEOPROCESSSTREAMSTATE::SetState']/*\"/>\t\n            <unmanaged>BOOL SetState</unmanaged>\t\n            <unmanaged-short>BOOL SetState</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.ExtendedFormat\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Describes the format of a video stream. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Most of the values in this structure can be translated directly to and from <strong><see cref=\"T:SharpDX.MediaFoundation.MediaType\"/></strong> attributes. For a code example that fills in the values from an <strong><see cref=\"T:SharpDX.MediaFoundation.MediaType\"/></strong> reference, see <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.VideoDesc\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_ExtendedFormat']/*\"/>\t\n            <msdn-id>ms704798</msdn-id>\t\n            <unmanaged>DXVA2_ExtendedFormat</unmanaged>\t\n            <unmanaged-short>DXVA2_ExtendedFormat</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.ExtendedFormat.Value\">\n            <summary>\t\n            <dd> <p>Use this member to access all of the bits in the union.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_ExtendedFormat::value']/*\"/>\t\n            <msdn-id>ms704798</msdn-id>\t\n            <unmanaged>unsigned int value</unmanaged>\t\n            <unmanaged-short>unsigned int value</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.DirectX.ExtendedFormat.SampleFormat\">\n            <summary>\t\n            <dd> <p>Describes the interlacing of the video frames. Contains a value from the <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.SampleFormat\"/></strong> enumeration.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_ExtendedFormat::SampleFormat']/*\"/>\t\n            <msdn-id>ms704798</msdn-id>\t\n            <unmanaged>unsigned int SampleFormat</unmanaged>\t\n            <unmanaged-short>unsigned int SampleFormat</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.DirectX.ExtendedFormat.VideoChromaSubsampling\">\n            <summary>\t\n            <dd> <p>Describes the chroma siting. Contains a value from the <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.VideoChromaSubSampling\"/></strong> enumeration.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_ExtendedFormat::VideoChromaSubsampling']/*\"/>\t\n            <msdn-id>ms704798</msdn-id>\t\n            <unmanaged>unsigned int VideoChromaSubsampling</unmanaged>\t\n            <unmanaged-short>unsigned int VideoChromaSubsampling</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.DirectX.ExtendedFormat.NominalRange\">\n            <summary>\t\n            <dd> <p>Describes the nominal range of the Y'CbCr or RGB color data. Contains a value from the <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.NominalRange\"/></strong> enumeration.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_ExtendedFormat::NominalRange']/*\"/>\t\n            <msdn-id>ms704798</msdn-id>\t\n            <unmanaged>unsigned int NominalRange</unmanaged>\t\n            <unmanaged-short>unsigned int NominalRange</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.DirectX.ExtendedFormat.VideoTransferMatrix\">\n            <summary>\t\n            <dd> <p>Describes the transform from Y'PbPr (component video) to studio R'G'B'. Contains a value from the <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.VideoTransferMatrix\"/></strong> enumeration.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_ExtendedFormat::VideoTransferMatrix']/*\"/>\t\n            <msdn-id>ms704798</msdn-id>\t\n            <unmanaged>unsigned int VideoTransferMatrix</unmanaged>\t\n            <unmanaged-short>unsigned int VideoTransferMatrix</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.DirectX.ExtendedFormat.VideoLighting\">\n            <summary>\t\n            <dd> <p>Describes the intended viewing conditions. Contains a value from the <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.VideoLighting\"/></strong> enumeration.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_ExtendedFormat::VideoLighting']/*\"/>\t\n            <msdn-id>ms704798</msdn-id>\t\n            <unmanaged>unsigned int VideoLighting</unmanaged>\t\n            <unmanaged-short>unsigned int VideoLighting</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.DirectX.ExtendedFormat.VideoPrimaries\">\n            <summary>\t\n            <dd> <p>Describes the color primaries. Contains a value from the <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.VideoPrimaries\"/></strong> enumeration.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_ExtendedFormat::VideoPrimaries']/*\"/>\t\n            <msdn-id>ms704798</msdn-id>\t\n            <unmanaged>unsigned int VideoPrimaries</unmanaged>\t\n            <unmanaged-short>unsigned int VideoPrimaries</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.DirectX.ExtendedFormat.VideoTransferFunction\">\n            <summary>\t\n            <dd> <p>Describes the gamma correction transfer function. Contains a value from the <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.VideoTransferFunction\"/></strong> enumeration.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_ExtendedFormat::VideoTransferFunction']/*\"/>\t\n            <msdn-id>ms704798</msdn-id>\t\n            <unmanaged>unsigned int VideoTransferFunction</unmanaged>\t\n            <unmanaged-short>unsigned int VideoTransferFunction</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.FilterRangeData\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Defines the range of supported values for an image filter.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The multiplier enables the filter range to have a fractional step value.</p><p>For example, a hue filter might have an actual range of [-180.0 ... +180.0] with a step size of 0.25. The device would report the following range and multiplier:</p><ul> <li>Minimum: -720</li> <li>Maximum: +720</li> <li>Multiplier: 0.25</li> </ul><p>In this case,  a filter value of 2 would be interpreted by the device as 0.50 (or 2 ? 0.25).</p><p>The device should use  a multiplier that can be represented exactly as a base-2 fraction.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_FILTER_RANGE_DATA']/*\"/>\t\n            <msdn-id>dd318428</msdn-id>\t\n            <unmanaged>DXVAHD_FILTER_RANGE_DATA</unmanaged>\t\n            <unmanaged-short>DXVAHD_FILTER_RANGE_DATA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.FilterRangeData.Minimum\">\n            <summary>\t\n            <dd> <p>The minimum value of the filter.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_FILTER_RANGE_DATA::Minimum']/*\"/>\t\n            <msdn-id>dd318428</msdn-id>\t\n            <unmanaged>int Minimum</unmanaged>\t\n            <unmanaged-short>int Minimum</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.FilterRangeData.Maximum\">\n            <summary>\t\n            <dd> <p>The maximum value of the filter.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_FILTER_RANGE_DATA::Maximum']/*\"/>\t\n            <msdn-id>dd318428</msdn-id>\t\n            <unmanaged>int Maximum</unmanaged>\t\n            <unmanaged-short>int Maximum</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.FilterRangeData.Default\">\n            <summary>\t\n            <dd> <p>The default value of the filter.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_FILTER_RANGE_DATA::Default']/*\"/>\t\n            <msdn-id>dd318428</msdn-id>\t\n            <unmanaged>int Default</unmanaged>\t\n            <unmanaged-short>int Default</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.FilterRangeData.Multiplier\">\n            <summary>\t\n            <dd> <p>A multiplier. Use the following formula to translate the filter setting into the actual filter value: <em>Actual Value</em> = <em>Set Value</em>???<em>Multiplier</em>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_FILTER_RANGE_DATA::Multiplier']/*\"/>\t\n            <msdn-id>dd318428</msdn-id>\t\n            <unmanaged>float Multiplier</unmanaged>\t\n            <unmanaged-short>float Multiplier</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.FilterValues\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Contains parameters for the <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.VideoProcessor.VideoProcessBlt(SharpDX.Direct3D9.Surface,SharpDX.MediaFoundation.DirectX.VideoProcessBltParams@,SharpDX.MediaFoundation.DirectX.VideoSample[],System.Int32,System.IntPtr)\"/></strong> method.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_FilterValues']/*\"/>\t\n            <msdn-id>ms698741</msdn-id>\t\n            <unmanaged>DXVA2_FilterValues</unmanaged>\t\n            <unmanaged-short>DXVA2_FilterValues</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.FilterValues.Level\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_FilterValues::Level']/*\"/>\t\n            <unmanaged>DXVA2_Fixed32 Level</unmanaged>\t\n            <unmanaged-short>DXVA2_Fixed32 Level</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.FilterValues.Threshold\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_FilterValues::Threshold']/*\"/>\t\n            <unmanaged>DXVA2_Fixed32 Threshold</unmanaged>\t\n            <unmanaged-short>DXVA2_Fixed32 Threshold</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.FilterValues.Radius\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_FilterValues::Radius']/*\"/>\t\n            <unmanaged>DXVA2_Fixed32 Radius</unmanaged>\t\n            <unmanaged-short>DXVA2_Fixed32 Radius</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.Fixed32\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Returns a <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.Fixed32\"/></strong> structure that contains an opaque alpha value.</p><p>You can use this function for DirectX Video Acceleration (DXVA) operations that require alpha values expressed as fixed-point numbers.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_Fixed32']/*\"/>\t\n            <msdn-id>aa473831</msdn-id>\t\n            <unmanaged>DXVA2_Fixed32</unmanaged>\t\n            <unmanaged-short>DXVA2_Fixed32</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.Fixed32.Fraction\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_Fixed32::Fraction']/*\"/>\t\n            <unmanaged>unsigned short Fraction</unmanaged>\t\n            <unmanaged-short>unsigned short Fraction</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.Fixed32.Value\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_Fixed32::Value']/*\"/>\t\n            <unmanaged>short Value</unmanaged>\t\n            <unmanaged-short>short Value</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.Fixed32.Ll\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_Fixed32::ll']/*\"/>\t\n            <unmanaged>int ll</unmanaged>\t\n            <unmanaged-short>int ll</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.Frequency\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Defines a video frequency.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The value 0/0 indicates an unknown frequency. Values of the form <em>n</em>/0, where <em>n</em> is not zero, are invalid. Values of the form 0/<em>n</em>, where <em>n</em> is not zero, indicate a frequency of zero.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_Frequency']/*\"/>\t\n            <msdn-id>ms693574</msdn-id>\t\n            <unmanaged>DXVA2_Frequency</unmanaged>\t\n            <unmanaged-short>DXVA2_Frequency</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.Frequency.Numerator\">\n            <summary>\t\n            <dd> <p>Numerator of the frequency.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_Frequency::Numerator']/*\"/>\t\n            <msdn-id>ms693574</msdn-id>\t\n            <unmanaged>unsigned int Numerator</unmanaged>\t\n            <unmanaged-short>unsigned int Numerator</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.Frequency.Denominator\">\n            <summary>\t\n            <dd> <p>Denominator of the frequency.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_Frequency::Denominator']/*\"/>\t\n            <msdn-id>ms693574</msdn-id>\t\n            <unmanaged>unsigned int Denominator</unmanaged>\t\n            <unmanaged-short>unsigned int Denominator</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.ProcAmpValues\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Sets one or more color adjustment (ProcAmp) settings.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Before calling this method, set the video processor mode. To select a video processor mode, call <strong><see cref=\"M:SharpDX.MediaFoundation.VideoProcessor.SetVideoProcessorMode(System.Guid)\"/></strong>. Otherwise, the EVR automatically selects a mode when streaming begins.</p><p>To find out which ProcAmp settings the driver supports, call <strong><see cref=\"M:SharpDX.MediaFoundation.VideoProcessor.GetVideoProcessorCaps(System.Guid,SharpDX.MediaFoundation.DirectX.VideoProcessorCaps@)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_ProcAmpValues']/*\"/>\t\n            <msdn-id>bb970441</msdn-id>\t\n            <unmanaged>DXVA2_ProcAmpValues</unmanaged>\t\n            <unmanaged-short>DXVA2_ProcAmpValues</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.ProcAmpValues.Brightness\">\n            <summary>\t\n            <dd> <p>Bitwise <strong>OR</strong> of one or more flags, specifying which ProcAmp values to set. For a list of flags, see ProcAmp Settings.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_ProcAmpValues::Brightness']/*\"/>\t\n            <msdn-id>bb970441</msdn-id>\t\n            <unmanaged>DXVA2_Fixed32 Brightness</unmanaged>\t\n            <unmanaged-short>DXVA2_Fixed32 Brightness</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.ProcAmpValues.Contrast\">\n            <summary>\t\n            <dd> <p>Pointer to a <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.ProcAmpValues\"/></strong> structure. For each flag that you set in <em>dwFlags</em>, set the corresponding structure member to the desired value. To get the valid range of values for each operation, call <strong><see cref=\"M:SharpDX.MediaFoundation.VideoProcessor.GetProcAmpRange(System.Int32,SharpDX.MediaFoundation.DirectX.ValueRange@)\"/></strong>. The method ignores any structure members for which the corresponding flag is not set in <em>dwFlags</em>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_ProcAmpValues::Contrast']/*\"/>\t\n            <msdn-id>bb970441</msdn-id>\t\n            <unmanaged>DXVA2_Fixed32 Contrast</unmanaged>\t\n            <unmanaged-short>DXVA2_Fixed32 Contrast</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.ProcAmpValues.Hue\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_ProcAmpValues::Hue']/*\"/>\t\n            <unmanaged>DXVA2_Fixed32 Hue</unmanaged>\t\n            <unmanaged-short>DXVA2_Fixed32 Hue</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.ProcAmpValues.Saturation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_ProcAmpValues::Saturation']/*\"/>\t\n            <unmanaged>DXVA2_Fixed32 Saturation</unmanaged>\t\n            <unmanaged-short>DXVA2_Fixed32 Saturation</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.Rational\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Specifies the pixel aspect ratio (PAR) for the source and destination rectangles.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Pixel aspect ratios of the form 0/<em>n</em> and <em>n</em>/0 are not valid.</p><p>If the <strong>Enable</strong> member is <strong><see cref=\"F:SharpDX.Result.False\"/></strong>, the device ignores the values of <strong>SourceAspectRatio</strong> and <strong>DestinationAspectRatio</strong>. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_RATIONAL']/*\"/>\t\n            <msdn-id>dd318760</msdn-id>\t\n            <unmanaged>DXVAHD_RATIONAL</unmanaged>\t\n            <unmanaged-short>DXVAHD_RATIONAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.Rational.Numerator\">\n            <summary>\t\n            <dd> <p><strong>If TRUE</strong>, the <strong>SourceAspectRatio</strong> and <strong>DestinationAspectRatio</strong> members contain valid values<strong></strong>. Otherwise, the pixel aspect ratios are unspecified.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_RATIONAL::Numerator']/*\"/>\t\n            <msdn-id>dd318760</msdn-id>\t\n            <unmanaged>unsigned int Numerator</unmanaged>\t\n            <unmanaged-short>unsigned int Numerator</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.Rational.Denominator\">\n            <summary>\t\n            <dd> <p>A <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.Rational\"/></strong> structure that contains the source PAR. The default state value is 1:1 (square pixels).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_RATIONAL::Denominator']/*\"/>\t\n            <msdn-id>dd318760</msdn-id>\t\n            <unmanaged>unsigned int Denominator</unmanaged>\t\n            <unmanaged-short>unsigned int Denominator</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.StreamData\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Contains per-stream data for the <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.HDVideoProcessor.VideoProcessBltHD(SharpDX.Direct3D9.Surface,System.Int32,System.Int32,SharpDX.MediaFoundation.DirectX.StreamData[])\"/></strong> method.</p>\t\n            </summary>\t\n            <remarks>\t\n            Input Surfaces<p>The Direct3D surfaces must be allocated in the memory pool specified by the <strong>InputPool</strong> member of the <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.Vpdevcaps\"/></strong> structure. The following surface types can be used:\t\n            </p><ul> <li>A video surface of type <strong><see cref=\"F:SharpDX.MediaFoundation.DirectX.SurfaceTypeHD.VideoInput\"/></strong> or <strong><see cref=\"F:SharpDX.MediaFoundation.DirectX.SurfaceTypeHD.VideoInputPrivate\"/></strong>. See <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.HDDevice.CreateVideoSurface(System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,System.Int32,SharpDX.MediaFoundation.DirectX.SurfaceTypeHD,System.Int32,SharpDX.Direct3D9.Surface[],System.IntPtr)\"/></strong>.</li> <li>A decoder render-target surface of type <strong><see cref=\"F:SharpDX.MediaFoundation.DirectX.RenderTargetType.VideoDecoder\"/></strong>. See <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.VideoAccelerationService.CreateSurface(System.Int32,System.Int32,System.Int32,SharpDX.Direct3D9.Format,SharpDX.Direct3D9.Pool,System.Int32,System.Int32,SharpDX.Direct3D9.Surface[],System.IntPtr)\"/></strong>.</li> <li>An off-screen plain surface.</li> </ul><p>The past and future reference frames must be placed in the arrays in temporal order, from oldest to newest. For example, if <em>T</em> is the current input frame, the arrays would be ordered as follows:</p><ul> <li><strong>ppPastSurfaces</strong>: { ?, <em>T</em>-3, <em>T</em>-2, <em>T</em>-1 }</li> <li><strong>ppInputSurface</strong>: <em>T</em></li> <li><strong>ppFutureSurfaces</strong>: { <em>T</em>+1, <em>T</em>+2, <em>T</em>+3, ? }</li> </ul><p>The <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.Vpcaps\"/></strong> structure specifies the number of reference frames required to get the best deinterlacing quality. If the application provides fewer reference frames, the device will fall back to simpler deinterlacing algorithms. If no reference frames are provided, the device can use bob deinterlacing. Here are some cases where an application might provide fewer reference frames:</p><ul> <li>At the beginning or end of the video sequence</li> <li>With progressive input</li> <li>During a transition between progressive and interlaced input</li> <li>For a substream that does not require high deinterlacing quality</li> <li>While dropping frames</li> </ul>Input and Output Indexes<p>The <strong>OutputIndex</strong> and <strong>InputFrameOrField</strong> members are used to correlate input frames or fields with output frames. The value of the <strong>OutputIndex</strong> member is cyclic and resets to zero after each cycle.</p><p>Here are some example patterns:</p><ul> <li>Progressive video at normal rate. Each input frame produces one output frame.<ul> <li>Output index: 0, 0, 0, 0, ?</li> <li>Input index: 0, 1, 2, 3, ?</li> </ul> </li> <li>Interlaced video at normal rate. Each interlaced frame (two fields) produces two output frames.<ul> <li>Output index: 0, 1, 0, 1, ?</li> <li>Input index: 0, 1, 2, 3, ?</li> </ul> </li> <li>Progressive video at 2/1 output rate. Each input frame produces one output frame.<ul> <li>Output index: 0, 1, 0, 1, ?</li> <li>Input index: 0, 1, 2, 3, ?</li> </ul> </li> <li>Interlaced video at 1/2 output rate. Each interlaced frame produces one output frame. (The two fields are blended to create one frame.)<ul> <li>Output index: 0, 0, 0, 0, ?</li> <li>Input index: 0, 2, 4, 6, ?</li> </ul> </li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_STREAM_DATA']/*\"/>\t\n            <msdn-id>dd318757</msdn-id>\t\n            <unmanaged>DXVAHD_STREAM_DATA</unmanaged>\t\n            <unmanaged-short>DXVAHD_STREAM_DATA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.StreamData.Enable\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_STREAM_DATA::Enable']/*\"/>\t\n            <unmanaged>BOOL Enable</unmanaged>\t\n            <unmanaged-short>BOOL Enable</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.StreamData.OutputIndex\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_STREAM_DATA::OutputIndex']/*\"/>\t\n            <unmanaged>unsigned int OutputIndex</unmanaged>\t\n            <unmanaged-short>unsigned int OutputIndex</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.StreamData.InputFrameOrField\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_STREAM_DATA::InputFrameOrField']/*\"/>\t\n            <unmanaged>unsigned int InputFrameOrField</unmanaged>\t\n            <unmanaged-short>unsigned int InputFrameOrField</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.StreamData.PastFrames\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_STREAM_DATA::PastFrames']/*\"/>\t\n            <unmanaged>unsigned int PastFrames</unmanaged>\t\n            <unmanaged-short>unsigned int PastFrames</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.StreamData.FutureFrames\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_STREAM_DATA::FutureFrames']/*\"/>\t\n            <unmanaged>unsigned int FutureFrames</unmanaged>\t\n            <unmanaged-short>unsigned int FutureFrames</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.StreamData.PpPastSurfaces\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_STREAM_DATA::ppPastSurfaces']/*\"/>\t\n            <unmanaged>IDirect3DSurface9** ppPastSurfaces</unmanaged>\t\n            <unmanaged-short>IDirect3DSurface9 ppPastSurfaces</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.StreamData.PInputSurface\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_STREAM_DATA::pInputSurface']/*\"/>\t\n            <unmanaged>IDirect3DSurface9* pInputSurface</unmanaged>\t\n            <unmanaged-short>IDirect3DSurface9 pInputSurface</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.StreamData.PpFutureSurfaces\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_STREAM_DATA::ppFutureSurfaces']/*\"/>\t\n            <unmanaged>IDirect3DSurface9** ppFutureSurfaces</unmanaged>\t\n            <unmanaged-short>IDirect3DSurface9 ppFutureSurfaces</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.StreamStateAlphaData\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Specifies the planar alpha value for an input stream, when using Microsoft DirectX Video Acceleration High Definition (DXVA-HD).</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>For each pixel, the destination color value is computed as follows:</p><p><code>Cd = Cs * (As * Ap * Ae) + Cd * (1.0 - As * Ap * Ae)</code></p><p>where</p><ul> <li><code>Cd</code> = Color value of the destination pixel.</li> <li><code>Cs</code> = Color value of source pixel.</li> <li><code>As</code> = Per-pixel source alpha.</li> <li><code>Ap</code> = Planar alpha value.</li> <li><code>Ae</code> = Palette-entry alpha value, or 1.0 (see Note).</li> </ul><p><strong>Note</strong>??Palette-entry alpha values apply only to palettized color formats, and only when the device supports the <strong><see cref=\"F:SharpDX.MediaFoundation.DirectX.FeatureCaps.AlphaPalette\"/></strong> capability. Otherwise, this factor equals 1.0. </p><p>The destination alpha value is computed according to the <strong><see cref=\"F:SharpDX.MediaFoundation.DirectX.BlitState.AlphaFill\"/></strong> state. For more information, see <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.BlitStateAlphaFillData\"/></strong>.</p><p>To get the device capabilities, call <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.HDDevice.GetVideoProcessorDeviceCaps(SharpDX.MediaFoundation.DirectX.Vpdevcaps@)\"/></strong> and check the <strong>FeatureCaps</strong> member of the <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.Vpdevcaps\"/></strong> structure.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_STREAM_STATE_ALPHA_DATA']/*\"/>\t\n            <msdn-id>dd318759</msdn-id>\t\n            <unmanaged>DXVAHD_STREAM_STATE_ALPHA_DATA</unmanaged>\t\n            <unmanaged-short>DXVAHD_STREAM_STATE_ALPHA_DATA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.StreamStateAlphaData.Enable\">\n            <summary>\t\n            <dd> <p><strong>If TRUE</strong>, alpha blending is enabled. Otherwise, alpha blending is disabled. The default state value is <strong><see cref=\"F:SharpDX.Result.False\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_STREAM_STATE_ALPHA_DATA::Enable']/*\"/>\t\n            <msdn-id>dd318759</msdn-id>\t\n            <unmanaged>BOOL Enable</unmanaged>\t\n            <unmanaged-short>BOOL Enable</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.StreamStateAlphaData.Alpha\">\n            <summary>\t\n            <dd> <p>Specifies the planar alpha value as a floating-point number from 0.0 (transparent) to 1.0 (opaque). </p> <p>If the <strong>Enable</strong> member is <strong><see cref=\"F:SharpDX.Result.False\"/></strong>, this member is ignored.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_STREAM_STATE_ALPHA_DATA::Alpha']/*\"/>\t\n            <msdn-id>dd318759</msdn-id>\t\n            <unmanaged>float Alpha</unmanaged>\t\n            <unmanaged-short>float Alpha</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.StreamStateAspectRatioData\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Specifies the pixel aspect ratio (PAR) for the source and destination rectangles.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Pixel aspect ratios of the form 0/<em>n</em> and <em>n</em>/0 are not valid.</p><p>If the <strong>Enable</strong> member is <strong><see cref=\"F:SharpDX.Result.False\"/></strong>, the device ignores the values of <strong>SourceAspectRatio</strong> and <strong>DestinationAspectRatio</strong>. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_STREAM_STATE_ASPECT_RATIO_DATA']/*\"/>\t\n            <msdn-id>dd318760</msdn-id>\t\n            <unmanaged>DXVAHD_STREAM_STATE_ASPECT_RATIO_DATA</unmanaged>\t\n            <unmanaged-short>DXVAHD_STREAM_STATE_ASPECT_RATIO_DATA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.StreamStateAspectRatioData.Enable\">\n            <summary>\t\n            <dd> <p><strong>If TRUE</strong>, the <strong>SourceAspectRatio</strong> and <strong>DestinationAspectRatio</strong> members contain valid values<strong></strong>. Otherwise, the pixel aspect ratios are unspecified.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_STREAM_STATE_ASPECT_RATIO_DATA::Enable']/*\"/>\t\n            <msdn-id>dd318760</msdn-id>\t\n            <unmanaged>BOOL Enable</unmanaged>\t\n            <unmanaged-short>BOOL Enable</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.StreamStateAspectRatioData.SourceAspectRatio\">\n            <summary>\t\n            <dd> <p>A <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.Rational\"/></strong> structure that contains the source PAR. The default state value is 1:1 (square pixels).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_STREAM_STATE_ASPECT_RATIO_DATA::SourceAspectRatio']/*\"/>\t\n            <msdn-id>dd318760</msdn-id>\t\n            <unmanaged>DXVAHD_RATIONAL SourceAspectRatio</unmanaged>\t\n            <unmanaged-short>DXVAHD_RATIONAL SourceAspectRatio</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.StreamStateAspectRatioData.DestinationAspectRatio\">\n            <summary>\t\n            <dd> <p>A <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.Rational\"/></strong> structure that contains the destination PAR. The default state value is 1:1 (square pixels).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_STREAM_STATE_ASPECT_RATIO_DATA::DestinationAspectRatio']/*\"/>\t\n            <msdn-id>dd318760</msdn-id>\t\n            <unmanaged>DXVAHD_RATIONAL DestinationAspectRatio</unmanaged>\t\n            <unmanaged-short>DXVAHD_RATIONAL DestinationAspectRatio</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.StreamStateD3DFORMATData\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Specifies the format for an input stream, when using Microsoft DirectX Video Acceleration High Definition (DXVA-HD).</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_STREAM_STATE_D3DFORMAT_DATA']/*\"/>\t\n            <msdn-id>dd318761</msdn-id>\t\n            <unmanaged>DXVAHD_STREAM_STATE_D3DFORMAT_DATA</unmanaged>\t\n            <unmanaged-short>DXVAHD_STREAM_STATE_D3DFORMAT_DATA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.StreamStateD3DFORMATData.Format\">\n            <summary>\t\n            <dd> <p>The surface format, specified as a <strong><see cref=\"T:SharpDX.Direct3D9.Format\"/></strong> value. You can also use a FOURCC code to specify a format that is not defined in the <strong><see cref=\"T:SharpDX.Direct3D9.Format\"/></strong> enumeration. For more information, see Video FOURCCs.</p> <p>The default state value is <strong><see cref=\"F:SharpDX.Direct3D9.Format.Unknown\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_STREAM_STATE_D3DFORMAT_DATA::Format']/*\"/>\t\n            <msdn-id>dd318761</msdn-id>\t\n            <unmanaged>D3DFORMAT Format</unmanaged>\t\n            <unmanaged-short>D3DFORMAT Format</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.StreamStateDestinationRectangleData\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Specifies the destination rectangle for an input stream, when using Microsoft DirectX Video Acceleration High Definition (DXVA-HD).</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_STREAM_STATE_DESTINATION_RECT_DATA']/*\"/>\t\n            <msdn-id>dd318762</msdn-id>\t\n            <unmanaged>DXVAHD_STREAM_STATE_DESTINATION_RECT_DATA</unmanaged>\t\n            <unmanaged-short>DXVAHD_STREAM_STATE_DESTINATION_RECT_DATA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.StreamStateDestinationRectangleData.Enable\">\n            <summary>\t\n            <dd> <p>Specifies whether to use the destination rectangle, or use the entire output surface. The default state value is <strong><see cref=\"F:SharpDX.Result.False\"/></strong>.</p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td><dl> <dt><strong>TRUE</strong></dt> </dl> </td><td> <p>Use the destination rectangle given in the <strong>DestinationRect</strong> member.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.Result.False\"/></strong></dt> </dl> </td><td> <p>Use the entire output surface as the destination rectangle.</p> </td></tr> </table> <p>?</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_STREAM_STATE_DESTINATION_RECT_DATA::Enable']/*\"/>\t\n            <msdn-id>dd318762</msdn-id>\t\n            <unmanaged>BOOL Enable</unmanaged>\t\n            <unmanaged-short>BOOL Enable</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.StreamStateDestinationRectangleData.DestinationRect\">\n            <summary>\t\n            <dd> <p>The <em>destination rectangle</em>, which defines the portion of the output surface where the source rectangle is blitted. The destination rectangle is given in pixel coordinates, relative to the output surface. The default value is an empty rectangle, (0, 0, 0, 0).</p> <p>If the <strong>Enable</strong> member is <strong><see cref=\"F:SharpDX.Result.False\"/></strong>, the <strong>DestinationRect</strong> member is ignored.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_STREAM_STATE_DESTINATION_RECT_DATA::DestinationRect']/*\"/>\t\n            <msdn-id>dd318762</msdn-id>\t\n            <unmanaged>RECT DestinationRect</unmanaged>\t\n            <unmanaged-short>RECT DestinationRect</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.StreamStateFilterData\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Specifies the level for a filtering operation on a Microsoft DirectX Video Acceleration High Definition (DXVA-HD) input stream.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>For a list of image filters that are defined for DXVA-HD, see <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.Filter\"/></strong>. The device might not support every type of image filter. To find out whether the device supports a particular filter, call the <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.HDDevice.GetVideoProcessorDeviceCaps(SharpDX.MediaFoundation.DirectX.Vpdevcaps@)\"/></strong> method and check the <strong>FilterCaps</strong> member of the <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.Vpdevcaps\"/></strong> structure.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_STREAM_STATE_FILTER_DATA']/*\"/>\t\n            <msdn-id>dd318763</msdn-id>\t\n            <unmanaged>DXVAHD_STREAM_STATE_FILTER_DATA</unmanaged>\t\n            <unmanaged-short>DXVAHD_STREAM_STATE_FILTER_DATA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.StreamStateFilterData.Enable\">\n            <summary>\t\n            <dd> <p><strong>If TRUE</strong>, the filter is enabled. Otherwise, <strong>the filter is disabled</strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_STREAM_STATE_FILTER_DATA::Enable']/*\"/>\t\n            <msdn-id>dd318763</msdn-id>\t\n            <unmanaged>BOOL Enable</unmanaged>\t\n            <unmanaged-short>BOOL Enable</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.StreamStateFilterData.Level\">\n            <summary>\t\n            <dd> <p>The level for the filter. The meaning of this value depends on the implementation. To get the range and default value of a particular filter, call the <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.HDDevice.GetVideoProcessorFilterRange(SharpDX.MediaFoundation.DirectX.Filter,SharpDX.MediaFoundation.DirectX.FilterRangeData@)\"/></strong> method.</p> <p>If the <strong>Enable</strong> member is <strong><see cref=\"F:SharpDX.Result.False\"/></strong>, the <strong>Level</strong> member is ignored. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_STREAM_STATE_FILTER_DATA::Level']/*\"/>\t\n            <msdn-id>dd318763</msdn-id>\t\n            <unmanaged>int Level</unmanaged>\t\n            <unmanaged-short>int Level</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.StreamStateFrameFormatData\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Specifies the target rectangle for blitting, when using Microsoft DirectX Video Acceleration High Definition (DXVA-HD).</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_STREAM_STATE_FRAME_FORMAT_DATA']/*\"/>\t\n            <msdn-id>dd318400</msdn-id>\t\n            <unmanaged>DXVAHD_STREAM_STATE_FRAME_FORMAT_DATA</unmanaged>\t\n            <unmanaged-short>DXVAHD_STREAM_STATE_FRAME_FORMAT_DATA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.StreamStateFrameFormatData.FrameFormat\">\n            <summary>\t\n            <dd> <p>Specifies whether to use the target rectangle. The default state value is <strong><see cref=\"F:SharpDX.Result.False\"/></strong>.</p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td><dl> <dt><strong>TRUE</strong></dt> </dl> </td><td> <p>Use the target rectangle specified by the <strong>TargetRect</strong> member.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.Result.False\"/></strong></dt> </dl> </td><td> <p>Use the entire destination surface as the target rectangle. Ignore the <strong>TargetRect</strong> member.</p> </td></tr> </table> <p>?</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_STREAM_STATE_FRAME_FORMAT_DATA::FrameFormat']/*\"/>\t\n            <msdn-id>dd318400</msdn-id>\t\n            <unmanaged>DXVAHD_FRAME_FORMAT FrameFormat</unmanaged>\t\n            <unmanaged-short>DXVAHD_FRAME_FORMAT FrameFormat</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.StreamStateInputColorSpaceData\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Specifies the color space for a Microsoft DirectX Video Acceleration High Definition (DXVA-HD) input stream.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The <strong>RGB_Range</strong> member applies to RGB input, while the <strong>YCbCr_Matrix</strong> and <strong>YCbCr_xvYCC</strong> members apply to YCbCr (YUV) input.</p><p>In some situations, the device might perform an intermediate color conversion on the input stream. If so, it uses the flags that apply to  both color spaces. For example, suppose the device converts from RGB to YCbCr. If the <strong>RGB_Range</strong> member is 0 and the <strong>YCbCr_Matrix</strong> member is 1, the device will convert from full-range RGB to BT.709 YCbCr.</p><p>If the device supports xvYCC, it returns the <strong><see cref=\"F:SharpDX.MediaFoundation.DirectX.DeviceCaps.XvYCC\"/></strong> capability flag in the <strong>DeviceCaps</strong> member of the <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.Vpdevcaps\"/></strong> structure. Otherwise, the device ignores the value of <strong>YCbCr_xvYCC</strong> and treats all YCbCr input as conventional YCbCr. To get the device's capabilities, call <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.HDDevice.GetVideoProcessorDeviceCaps(SharpDX.MediaFoundation.DirectX.Vpdevcaps@)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_STREAM_STATE_INPUT_COLOR_SPACE_DATA']/*\"/>\t\n            <msdn-id>dd318765</msdn-id>\t\n            <unmanaged>DXVAHD_STREAM_STATE_INPUT_COLOR_SPACE_DATA</unmanaged>\t\n            <unmanaged-short>DXVAHD_STREAM_STATE_INPUT_COLOR_SPACE_DATA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.StreamStateInputColorSpaceData.Value\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_STREAM_STATE_INPUT_COLOR_SPACE_DATA::Value']/*\"/>\t\n            <unmanaged>unsigned int Value</unmanaged>\t\n            <unmanaged-short>unsigned int Value</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.DirectX.StreamStateInputColorSpaceData.Type\">\n            <summary>\t\n            <dd> <p>Specifies whether the input stream contains video or graphics. The device can optimize the processing based on the type. The default state value is 0 (video).</p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td> <dl> <dt>0</dt> </dl> </td><td> <p>Video.</p> </td></tr> <tr><td> <dl> <dt>1</dt> </dl> </td><td> <p>Graphics.</p> </td></tr> </table> <p>?</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_STREAM_STATE_INPUT_COLOR_SPACE_DATA::Type']/*\"/>\t\n            <msdn-id>dd318765</msdn-id>\t\n            <unmanaged>unsigned int Type</unmanaged>\t\n            <unmanaged-short>unsigned int Type</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.DirectX.StreamStateInputColorSpaceData.RgbRange\">\n            <summary>\t\n            <dd> <p>Specifies the RGB color range. The default state value is 0 (full range).</p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td> <dl> <dt>0</dt> </dl> </td><td> <p>Full range (0-255).</p> </td></tr> <tr><td> <dl> <dt>1</dt> </dl> </td><td> <p>Limited range (16-235).</p> </td></tr> </table> <p>?</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_STREAM_STATE_INPUT_COLOR_SPACE_DATA::RGB_Range']/*\"/>\t\n            <msdn-id>dd318765</msdn-id>\t\n            <unmanaged>unsigned int RGB_Range</unmanaged>\t\n            <unmanaged-short>unsigned int RGB_Range</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.DirectX.StreamStateInputColorSpaceData.YCbCrMatrix\">\n            <summary>\t\n            <dd> <p>Specifies the YCbCr transfer matrix. The default state value is 0 (BT.601).</p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td> <dl> <dt>0</dt> </dl> </td><td> <p>ITU-R BT.601.</p> </td></tr> <tr><td> <dl> <dt>1</dt> </dl> </td><td> <p>ITU-R BT.709.</p> </td></tr> </table> <p>?</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_STREAM_STATE_INPUT_COLOR_SPACE_DATA::YCbCr_Matrix']/*\"/>\t\n            <msdn-id>dd318765</msdn-id>\t\n            <unmanaged>unsigned int YCbCr_Matrix</unmanaged>\t\n            <unmanaged-short>unsigned int YCbCr_Matrix</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.DirectX.StreamStateInputColorSpaceData.YCbCrXvYCC\">\n            <summary>\t\n            <dd> <p>Specifies whether the input stream uses conventional YCbCr or extended YCbCr (xvYCC). The default state value is 0 (conventional YCbCr).</p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td> <dl> <dt>0</dt> </dl> </td><td> <p>Conventional YCbCr.</p> </td></tr> <tr><td> <dl> <dt>1</dt> </dl> </td><td> <p>Extended YCbCr (xvYCC).</p> </td></tr> </table> <p>?</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_STREAM_STATE_INPUT_COLOR_SPACE_DATA::YCbCr_xvYCC']/*\"/>\t\n            <msdn-id>dd318765</msdn-id>\t\n            <unmanaged>unsigned int YCbCr_xvYCC</unmanaged>\t\n            <unmanaged-short>unsigned int YCbCr_xvYCC</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.DirectX.StreamStateInputColorSpaceData.Reserved\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_STREAM_STATE_INPUT_COLOR_SPACE_DATA::Reserved']/*\"/>\t\n            <unmanaged>unsigned int Reserved</unmanaged>\t\n            <unmanaged-short>unsigned int Reserved</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.StreamStateLumaKeyData\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Specifies the luma key for an input stream, when using Microsoft DirectX Video Acceleration High Definition (DXVA-HD).</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>To use this state, the device must support luma keying, indicated by the <strong><see cref=\"F:SharpDX.MediaFoundation.DirectX.FeatureCaps.LumaKey\"/></strong> capability flag. To query for this capability, call <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.HDDevice.GetVideoProcessorDeviceCaps(SharpDX.MediaFoundation.DirectX.Vpdevcaps@)\"/></strong>. If the device supports luma keying, it sets the  <strong><see cref=\"F:SharpDX.MediaFoundation.DirectX.FeatureCaps.LumaKey\"/></strong> flag in the <strong>FeatureCaps</strong> member of the <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.Vpdevcaps\"/></strong> structure.</p><p>If the device does not support luma keying, the <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.HDVideoProcessor.SetVideoProcessStreamState(System.Int32,SharpDX.MediaFoundation.DirectX.StreamState,System.Int32,System.IntPtr)\"/></strong> method fails for this state.</p><p>If the input format is RGB, the device must also support the <strong><see cref=\"F:SharpDX.MediaFoundation.DirectX.InputFormatCaps.RgbLumaKey\"/></strong> capability. This capability flag is set in the <strong>InputFormatCaps</strong> member of the <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.Vpdevcaps\"/></strong> structure. If the flag is not present, the device ignores the luma key value for RGB input.</p><p>The values of <strong>Lower</strong> and <strong>Upper</strong> give the lower and upper bounds of the luma key, using a nominal range of [0...1]. Given a format with <em>n</em> bits per channel, these values are converted to luma values as follows:</p><p><code>val = f * ((1 &lt;&lt; n)-1)</code></p><p>Any pixel whose luma value falls within the upper and lower bounds (inclusive) is treated as transparent.</p><p>For example, if the pixel format uses 8-bit luma, the upper bound is calculated as follows:</p><p><code>BYTE Y = BYTE(max(min(1.0, Upper), 0.0) * 255.0)</code></p><p>Note that the value is clamped to the range [0...1] before multiplying by 255.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_STREAM_STATE_LUMA_KEY_DATA']/*\"/>\t\n            <msdn-id>dd318766</msdn-id>\t\n            <unmanaged>DXVAHD_STREAM_STATE_LUMA_KEY_DATA</unmanaged>\t\n            <unmanaged-short>DXVAHD_STREAM_STATE_LUMA_KEY_DATA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.StreamStateLumaKeyData.Enable\">\n            <summary>\t\n            <dd> <p> If <strong>TRUE</strong>, luma keying is enabled. Otherwise, luma keying is disabled. The default value is <strong><see cref=\"F:SharpDX.Result.False\"/></strong>. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_STREAM_STATE_LUMA_KEY_DATA::Enable']/*\"/>\t\n            <msdn-id>dd318766</msdn-id>\t\n            <unmanaged>BOOL Enable</unmanaged>\t\n            <unmanaged-short>BOOL Enable</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.StreamStateLumaKeyData.Lower\">\n            <summary>\t\n            <dd> <p>The lower bound for the luma key. The range is [0?1]. The default state value is 0.0. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_STREAM_STATE_LUMA_KEY_DATA::Lower']/*\"/>\t\n            <msdn-id>dd318766</msdn-id>\t\n            <unmanaged>float Lower</unmanaged>\t\n            <unmanaged-short>float Lower</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.StreamStateLumaKeyData.Upper\">\n            <summary>\t\n            <dd> <p>The upper bound for the luma key. The range is [0?1]. The default state value is 0.0. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_STREAM_STATE_LUMA_KEY_DATA::Upper']/*\"/>\t\n            <msdn-id>dd318766</msdn-id>\t\n            <unmanaged>float Upper</unmanaged>\t\n            <unmanaged-short>float Upper</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.StreamStateOutputRateData\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Specifies the output frame rate for an input stream when using Microsoft DirectX Video Acceleration High Definition (DXVA-HD).</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The output rate might require the device to convert the frame rate of the input stream. If so, the value of <strong>RepeatFrame</strong> controls whether the device creates interpolated frames or simply repeats input frames.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_STREAM_STATE_OUTPUT_RATE_DATA']/*\"/>\t\n            <msdn-id>dd318767</msdn-id>\t\n            <unmanaged>DXVAHD_STREAM_STATE_OUTPUT_RATE_DATA</unmanaged>\t\n            <unmanaged-short>DXVAHD_STREAM_STATE_OUTPUT_RATE_DATA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.StreamStateOutputRateData.RepeatFrame\">\n            <summary>\t\n            <dd> <p>Specifies how the device performs frame-rate conversion, if required. The default state value is <strong><see cref=\"F:SharpDX.Result.False\"/></strong> (interpolation).</p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td><dl> <dt><strong>TRUE</strong></dt> </dl> </td><td> <p>The device repeats frames.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.Result.False\"/></strong></dt> </dl> </td><td> <p>The device interpolates frames.</p> </td></tr> </table> <p>?</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_STREAM_STATE_OUTPUT_RATE_DATA::RepeatFrame']/*\"/>\t\n            <msdn-id>dd318767</msdn-id>\t\n            <unmanaged>BOOL RepeatFrame</unmanaged>\t\n            <unmanaged-short>BOOL RepeatFrame</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.StreamStateOutputRateData.OutputRate\">\n            <summary>\t\n            <dd> <p>Specifies the output rate, as a member of the <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.OutputRate\"/></strong> enumeration.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_STREAM_STATE_OUTPUT_RATE_DATA::OutputRate']/*\"/>\t\n            <msdn-id>dd318767</msdn-id>\t\n            <unmanaged>DXVAHD_OUTPUT_RATE OutputRate</unmanaged>\t\n            <unmanaged-short>DXVAHD_OUTPUT_RATE OutputRate</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.StreamStateOutputRateData.CustomRate\">\n            <summary>\t\n            <dd> <p>Specifies a custom output rate, as a <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.Rational\"/></strong> structure. This member is ignored unless <strong>OutputRate</strong> equals <strong><see cref=\"F:SharpDX.MediaFoundation.DirectX.OutputRate.Custom\"/></strong>. The default state value is 1/1.</p> <p>To get the list of custom rates supported by the video processor, call <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.HDDevice.GetVideoProcessorCustomRates(System.Guid,System.Int32,SharpDX.MediaFoundation.DirectX.CustomRateData[])\"/></strong>. If a custom rate is used, it must be taken from this list.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_STREAM_STATE_OUTPUT_RATE_DATA::CustomRate']/*\"/>\t\n            <msdn-id>dd318767</msdn-id>\t\n            <unmanaged>DXVAHD_RATIONAL CustomRate</unmanaged>\t\n            <unmanaged-short>DXVAHD_RATIONAL CustomRate</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.StreamStatePaletteData\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Contains the response to a <strong>D3DAUTHENTICATEDQUERY_OUTPUTIDCOUNT</strong> query.</p><p>To send this query, call <strong>IDirect3DAuthenticatedChannel9::Query</strong>.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_STREAM_STATE_PALETTE_DATA']/*\"/>\t\n            <msdn-id>dd318319</msdn-id>\t\n            <unmanaged>DXVAHD_STREAM_STATE_PALETTE_DATA</unmanaged>\t\n            <unmanaged-short>DXVAHD_STREAM_STATE_PALETTE_DATA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.StreamStatePaletteData.Count\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_STREAM_STATE_PALETTE_DATA::Count']/*\"/>\t\n            <unmanaged>unsigned int Count</unmanaged>\t\n            <unmanaged-short>unsigned int Count</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.StreamStatePaletteData.PEntries\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_STREAM_STATE_PALETTE_DATA::pEntries']/*\"/>\t\n            <unmanaged>void* pEntries</unmanaged>\t\n            <unmanaged-short>void pEntries</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.StreamStatePrivateData\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Contains the response to a <strong>D3DAUTHENTICATEDQUERY_OUTPUTIDCOUNT</strong> query.</p><p>To send this query, call <strong>IDirect3DAuthenticatedChannel9::Query</strong>.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_STREAM_STATE_PRIVATE_DATA']/*\"/>\t\n            <msdn-id>dd318319</msdn-id>\t\n            <unmanaged>DXVAHD_STREAM_STATE_PRIVATE_DATA</unmanaged>\t\n            <unmanaged-short>DXVAHD_STREAM_STATE_PRIVATE_DATA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.StreamStatePrivateData.Guid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_STREAM_STATE_PRIVATE_DATA::Guid']/*\"/>\t\n            <unmanaged>GUID Guid</unmanaged>\t\n            <unmanaged-short>GUID Guid</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.StreamStatePrivateData.DataSize\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_STREAM_STATE_PRIVATE_DATA::DataSize']/*\"/>\t\n            <unmanaged>unsigned int DataSize</unmanaged>\t\n            <unmanaged-short>unsigned int DataSize</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.StreamStatePrivateData.PData\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_STREAM_STATE_PRIVATE_DATA::pData']/*\"/>\t\n            <unmanaged>void* pData</unmanaged>\t\n            <unmanaged-short>void pData</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.StreamStatePrivateIvtcData\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Contains the response to a <strong>D3DAUTHENTICATEDQUERY_OUTPUTIDCOUNT</strong> query.</p><p>To send this query, call <strong>IDirect3DAuthenticatedChannel9::Query</strong>.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_STREAM_STATE_PRIVATE_IVTC_DATA']/*\"/>\t\n            <msdn-id>dd318319</msdn-id>\t\n            <unmanaged>DXVAHD_STREAM_STATE_PRIVATE_IVTC_DATA</unmanaged>\t\n            <unmanaged-short>DXVAHD_STREAM_STATE_PRIVATE_IVTC_DATA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.StreamStatePrivateIvtcData.Enable\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_STREAM_STATE_PRIVATE_IVTC_DATA::Enable']/*\"/>\t\n            <unmanaged>BOOL Enable</unmanaged>\t\n            <unmanaged-short>BOOL Enable</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.StreamStatePrivateIvtcData.ITelecineFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_STREAM_STATE_PRIVATE_IVTC_DATA::ITelecineFlags']/*\"/>\t\n            <unmanaged>unsigned int ITelecineFlags</unmanaged>\t\n            <unmanaged-short>unsigned int ITelecineFlags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.StreamStatePrivateIvtcData.Frames\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_STREAM_STATE_PRIVATE_IVTC_DATA::Frames']/*\"/>\t\n            <unmanaged>unsigned int Frames</unmanaged>\t\n            <unmanaged-short>unsigned int Frames</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.StreamStatePrivateIvtcData.InputField\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_STREAM_STATE_PRIVATE_IVTC_DATA::InputField']/*\"/>\t\n            <unmanaged>unsigned int InputField</unmanaged>\t\n            <unmanaged-short>unsigned int InputField</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.StreamStateSourceRectangleData\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Specifies the source rectangle for an input stream when using Microsoft DirectX Video Acceleration High Definition (DXVA-HD)</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_STREAM_STATE_SOURCE_RECT_DATA']/*\"/>\t\n            <msdn-id>dd318771</msdn-id>\t\n            <unmanaged>DXVAHD_STREAM_STATE_SOURCE_RECT_DATA</unmanaged>\t\n            <unmanaged-short>DXVAHD_STREAM_STATE_SOURCE_RECT_DATA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.StreamStateSourceRectangleData.Enable\">\n            <summary>\t\n            <dd> <p><strong></strong>Specifies whether to blit the entire input surface or just the source rectangle. The default state value is <strong><see cref=\"F:SharpDX.Result.False\"/></strong>.</p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td><dl> <dt><strong>TRUE</strong></dt> </dl> </td><td> <p>Use the source rectangle specified in the <strong>SourceRect</strong> member.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.Result.False\"/></strong></dt> </dl> </td><td> <p>Blit the entire input surface. Ignore the <strong>SourceRect</strong> member.</p> </td></tr> </table> <p>?</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_STREAM_STATE_SOURCE_RECT_DATA::Enable']/*\"/>\t\n            <msdn-id>dd318771</msdn-id>\t\n            <unmanaged>BOOL Enable</unmanaged>\t\n            <unmanaged-short>BOOL Enable</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.StreamStateSourceRectangleData.SourceRect\">\n            <summary>\t\n            <dd> <p>The <em>source rectangle</em>, which defines the portion of the input sample that is blitted to the destination surface. The source rectangle is given in pixel coordinates, relative to the input surface. The default state value is an empty rectangle, (0, 0, 0, 0).</p> <p>If the <strong>Enable</strong> member is <strong><see cref=\"F:SharpDX.Result.False\"/></strong>, the <strong>SourceRect</strong> member is ignored.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_STREAM_STATE_SOURCE_RECT_DATA::SourceRect']/*\"/>\t\n            <msdn-id>dd318771</msdn-id>\t\n            <unmanaged>RECT SourceRect</unmanaged>\t\n            <unmanaged-short>RECT SourceRect</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.SwCallbacks\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Contains the response to a <strong>D3DAUTHENTICATEDQUERY_OUTPUTIDCOUNT</strong> query.</p><p>To send this query, call <strong>IDirect3DAuthenticatedChannel9::Query</strong>.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHDSW_CALLBACKS']/*\"/>\t\n            <msdn-id>dd318319</msdn-id>\t\n            <unmanaged>DXVAHDSW_CALLBACKS</unmanaged>\t\n            <unmanaged-short>DXVAHDSW_CALLBACKS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.SwCallbacks.CreateDevice\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHDSW_CALLBACKS::CreateDevice']/*\"/>\t\n            <unmanaged>__function__stdcall* CreateDevice</unmanaged>\t\n            <unmanaged-short>__function__stdcall CreateDevice</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.SwCallbacks.ProposeVideoPrivateFormat\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHDSW_CALLBACKS::ProposeVideoPrivateFormat']/*\"/>\t\n            <unmanaged>__function__stdcall* ProposeVideoPrivateFormat</unmanaged>\t\n            <unmanaged-short>__function__stdcall ProposeVideoPrivateFormat</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.SwCallbacks.GetVideoProcessorDeviceCaps\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHDSW_CALLBACKS::GetVideoProcessorDeviceCaps']/*\"/>\t\n            <unmanaged>__function__stdcall* GetVideoProcessorDeviceCaps</unmanaged>\t\n            <unmanaged-short>__function__stdcall GetVideoProcessorDeviceCaps</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.SwCallbacks.GetVideoProcessorOutputFormats\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHDSW_CALLBACKS::GetVideoProcessorOutputFormats']/*\"/>\t\n            <unmanaged>__function__stdcall* GetVideoProcessorOutputFormats</unmanaged>\t\n            <unmanaged-short>__function__stdcall GetVideoProcessorOutputFormats</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.SwCallbacks.GetVideoProcessorInputFormats\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHDSW_CALLBACKS::GetVideoProcessorInputFormats']/*\"/>\t\n            <unmanaged>__function__stdcall* GetVideoProcessorInputFormats</unmanaged>\t\n            <unmanaged-short>__function__stdcall GetVideoProcessorInputFormats</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.SwCallbacks.GetVideoProcessorCaps\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHDSW_CALLBACKS::GetVideoProcessorCaps']/*\"/>\t\n            <unmanaged>__function__stdcall* GetVideoProcessorCaps</unmanaged>\t\n            <unmanaged-short>__function__stdcall GetVideoProcessorCaps</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.SwCallbacks.GetVideoProcessorCustomRates\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHDSW_CALLBACKS::GetVideoProcessorCustomRates']/*\"/>\t\n            <unmanaged>__function__stdcall* GetVideoProcessorCustomRates</unmanaged>\t\n            <unmanaged-short>__function__stdcall GetVideoProcessorCustomRates</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.SwCallbacks.GetVideoProcessorFilterRange\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHDSW_CALLBACKS::GetVideoProcessorFilterRange']/*\"/>\t\n            <unmanaged>__function__stdcall* GetVideoProcessorFilterRange</unmanaged>\t\n            <unmanaged-short>__function__stdcall GetVideoProcessorFilterRange</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.SwCallbacks.DestroyDevice\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHDSW_CALLBACKS::DestroyDevice']/*\"/>\t\n            <unmanaged>__function__stdcall* DestroyDevice</unmanaged>\t\n            <unmanaged-short>__function__stdcall DestroyDevice</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.SwCallbacks.CreateVideoProcessor\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHDSW_CALLBACKS::CreateVideoProcessor']/*\"/>\t\n            <unmanaged>__function__stdcall* CreateVideoProcessor</unmanaged>\t\n            <unmanaged-short>__function__stdcall CreateVideoProcessor</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.SwCallbacks.SetVideoProcessBltState\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHDSW_CALLBACKS::SetVideoProcessBltState']/*\"/>\t\n            <unmanaged>__function__stdcall* SetVideoProcessBltState</unmanaged>\t\n            <unmanaged-short>__function__stdcall SetVideoProcessBltState</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.SwCallbacks.GetVideoProcessBltStatePrivate\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHDSW_CALLBACKS::GetVideoProcessBltStatePrivate']/*\"/>\t\n            <unmanaged>__function__stdcall* GetVideoProcessBltStatePrivate</unmanaged>\t\n            <unmanaged-short>__function__stdcall GetVideoProcessBltStatePrivate</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.SwCallbacks.SetVideoProcessStreamState\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHDSW_CALLBACKS::SetVideoProcessStreamState']/*\"/>\t\n            <unmanaged>__function__stdcall* SetVideoProcessStreamState</unmanaged>\t\n            <unmanaged-short>__function__stdcall SetVideoProcessStreamState</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.SwCallbacks.GetVideoProcessStreamStatePrivate\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHDSW_CALLBACKS::GetVideoProcessStreamStatePrivate']/*\"/>\t\n            <unmanaged>__function__stdcall* GetVideoProcessStreamStatePrivate</unmanaged>\t\n            <unmanaged-short>__function__stdcall GetVideoProcessStreamStatePrivate</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.SwCallbacks.VideoProcessBltHD\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHDSW_CALLBACKS::VideoProcessBltHD']/*\"/>\t\n            <unmanaged>__function__stdcall* VideoProcessBltHD</unmanaged>\t\n            <unmanaged-short>__function__stdcall VideoProcessBltHD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.SwCallbacks.DestroyVideoProcessor\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHDSW_CALLBACKS::DestroyVideoProcessor']/*\"/>\t\n            <unmanaged>__function__stdcall* DestroyVideoProcessor</unmanaged>\t\n            <unmanaged-short>__function__stdcall DestroyVideoProcessor</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.ValueRange\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Contains private data for the <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.VideoDecoder.Execute(SharpDX.MediaFoundation.DirectX.DecodeExecuteParams)\"/></strong> method.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure corresponds to parameters of the <strong>IAMVideoAccelerator::Execute</strong> method in DirectX Video Acceleration (DXVA) version 1.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_ValueRange']/*\"/>\t\n            <msdn-id>ms696173</msdn-id>\t\n            <unmanaged>DXVA2_ValueRange</unmanaged>\t\n            <unmanaged-short>DXVA2_ValueRange</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.ValueRange.MinValue\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_ValueRange::MinValue']/*\"/>\t\n            <unmanaged>DXVA2_Fixed32 MinValue</unmanaged>\t\n            <unmanaged-short>DXVA2_Fixed32 MinValue</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.ValueRange.MaxValue\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_ValueRange::MaxValue']/*\"/>\t\n            <unmanaged>DXVA2_Fixed32 MaxValue</unmanaged>\t\n            <unmanaged-short>DXVA2_Fixed32 MaxValue</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.ValueRange.DefaultValue\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_ValueRange::DefaultValue']/*\"/>\t\n            <unmanaged>DXVA2_Fixed32 DefaultValue</unmanaged>\t\n            <unmanaged-short>DXVA2_Fixed32 DefaultValue</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.ValueRange.StepSize\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_ValueRange::StepSize']/*\"/>\t\n            <unmanaged>DXVA2_Fixed32 StepSize</unmanaged>\t\n            <unmanaged-short>DXVA2_Fixed32 StepSize</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.VideoDesc\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Describes a video stream for a DXVA decoder device or video processor device. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The <strong>InputSampleFreq</strong> member gives the frame rate of the decoded video stream, as received by the video renderer. The <strong>OutputFrameFreq</strong> member gives the frame rate of the video that is displayed after deinterlacing. If the input video is interlaced and the samples contain interleaved fields, the output frame rate is twice the input frame rate. If the input video is progressive or contains single fields, the output frame rate is the same as the input frame rate.</p><p>Decoders should set the values of <strong>InputSampleFreq</strong> and <strong>OutputFrameFreq</strong> if the frame rate is known. Otherwise, set these members to 0/0 to indicate an unknown frame rate.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoDesc']/*\"/>\t\n            <msdn-id>ms694235</msdn-id>\t\n            <unmanaged>DXVA2_VideoDesc</unmanaged>\t\n            <unmanaged-short>DXVA2_VideoDesc</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoDesc.SampleWidth\">\n            <summary>\t\n            <dd> <p> Width of the video frame, in pixels. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoDesc::SampleWidth']/*\"/>\t\n            <msdn-id>ms694235</msdn-id>\t\n            <unmanaged>unsigned int SampleWidth</unmanaged>\t\n            <unmanaged-short>unsigned int SampleWidth</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoDesc.SampleHeight\">\n            <summary>\t\n            <dd> <p> Height of the video frame, in pixels. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoDesc::SampleHeight']/*\"/>\t\n            <msdn-id>ms694235</msdn-id>\t\n            <unmanaged>unsigned int SampleHeight</unmanaged>\t\n            <unmanaged-short>unsigned int SampleHeight</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoDesc.SampleFormat\">\n            <summary>\t\n            <dd> <p> Additional details about the video format, specified as a <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.ExtendedFormat\"/></strong> structure. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoDesc::SampleFormat']/*\"/>\t\n            <msdn-id>ms694235</msdn-id>\t\n            <unmanaged>DXVA2_ExtendedFormat SampleFormat</unmanaged>\t\n            <unmanaged-short>DXVA2_ExtendedFormat SampleFormat</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoDesc.Format\">\n            <summary>\t\n            <dd> <p> Surface format, specified as a <strong><see cref=\"T:SharpDX.Direct3D9.Format\"/></strong> value or FOURCC code. A FOURCC code can be constructed using the <strong><see cref=\"T:SharpDX.Direct3D9.Format\"/></strong> or <strong>MAKEFOURCC</strong> macros. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoDesc::Format']/*\"/>\t\n            <msdn-id>ms694235</msdn-id>\t\n            <unmanaged>D3DFORMAT Format</unmanaged>\t\n            <unmanaged-short>D3DFORMAT Format</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoDesc.InputSampleFreq\">\n            <summary>\t\n            <dd> <p> Frame rate of the input video stream, specified as a <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.Frequency\"/></strong> structure. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoDesc::InputSampleFreq']/*\"/>\t\n            <msdn-id>ms694235</msdn-id>\t\n            <unmanaged>DXVA2_Frequency InputSampleFreq</unmanaged>\t\n            <unmanaged-short>DXVA2_Frequency InputSampleFreq</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoDesc.OutputFrameFreq\">\n            <summary>\t\n            <dd> <p> Frame rate of the output video, specified as a <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.Frequency\"/></strong> structure. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoDesc::OutputFrameFreq']/*\"/>\t\n            <msdn-id>ms694235</msdn-id>\t\n            <unmanaged>DXVA2_Frequency OutputFrameFreq</unmanaged>\t\n            <unmanaged-short>DXVA2_Frequency OutputFrameFreq</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoDesc.UABProtectionLevel\">\n            <summary>\t\n            <dd> <p> Level of data protection required when the user accessible bus (UAB) is present. If <strong>TRUE</strong>, the video must be protected when a UAB is present. If <strong><see cref=\"F:SharpDX.Result.False\"/></strong>, the video is not required to be protected. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoDesc::UABProtectionLevel']/*\"/>\t\n            <msdn-id>ms694235</msdn-id>\t\n            <unmanaged>unsigned int UABProtectionLevel</unmanaged>\t\n            <unmanaged-short>unsigned int UABProtectionLevel</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoDesc.Reserved\">\n            <summary>\t\n            <dd> <p> Reserved. Must be zero. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoDesc::Reserved']/*\"/>\t\n            <msdn-id>ms694235</msdn-id>\t\n            <unmanaged>unsigned int Reserved</unmanaged>\t\n            <unmanaged-short>unsigned int Reserved</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.VideoProcessBltParams\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Contains parameters for the <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.VideoProcessor.VideoProcessBlt(SharpDX.Direct3D9.Surface,SharpDX.MediaFoundation.DirectX.VideoProcessBltParams@,SharpDX.MediaFoundation.DirectX.VideoSample[],System.Int32,System.IntPtr)\"/></strong> method.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoProcessBltParams']/*\"/>\t\n            <msdn-id>ms698741</msdn-id>\t\n            <unmanaged>DXVA2_VideoProcessBltParams</unmanaged>\t\n            <unmanaged-short>DXVA2_VideoProcessBltParams</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoProcessBltParams.TargetFrame\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoProcessBltParams::TargetFrame']/*\"/>\t\n            <unmanaged>longlong TargetFrame</unmanaged>\t\n            <unmanaged-short>longlong TargetFrame</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoProcessBltParams.TargetRect\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoProcessBltParams::TargetRect']/*\"/>\t\n            <unmanaged>RECT TargetRect</unmanaged>\t\n            <unmanaged-short>RECT TargetRect</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoProcessBltParams.ConstrictionSize\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoProcessBltParams::ConstrictionSize']/*\"/>\t\n            <unmanaged>SIZE ConstrictionSize</unmanaged>\t\n            <unmanaged-short>SIZE ConstrictionSize</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoProcessBltParams.StreamingFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoProcessBltParams::StreamingFlags']/*\"/>\t\n            <unmanaged>unsigned int StreamingFlags</unmanaged>\t\n            <unmanaged-short>unsigned int StreamingFlags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoProcessBltParams.BackgroundColor\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoProcessBltParams::BackgroundColor']/*\"/>\t\n            <unmanaged>DXVA2_AYUVSample16 BackgroundColor</unmanaged>\t\n            <unmanaged-short>DXVA2_AYUVSample16 BackgroundColor</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoProcessBltParams.DestFormat\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoProcessBltParams::DestFormat']/*\"/>\t\n            <unmanaged>DXVA2_ExtendedFormat DestFormat</unmanaged>\t\n            <unmanaged-short>DXVA2_ExtendedFormat DestFormat</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoProcessBltParams.ProcAmpValues\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoProcessBltParams::ProcAmpValues']/*\"/>\t\n            <unmanaged>DXVA2_ProcAmpValues ProcAmpValues</unmanaged>\t\n            <unmanaged-short>DXVA2_ProcAmpValues ProcAmpValues</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoProcessBltParams.Alpha\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoProcessBltParams::Alpha']/*\"/>\t\n            <unmanaged>DXVA2_Fixed32 Alpha</unmanaged>\t\n            <unmanaged-short>DXVA2_Fixed32 Alpha</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoProcessBltParams.NoiseFilterLuma\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoProcessBltParams::NoiseFilterLuma']/*\"/>\t\n            <unmanaged>DXVA2_FilterValues NoiseFilterLuma</unmanaged>\t\n            <unmanaged-short>DXVA2_FilterValues NoiseFilterLuma</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoProcessBltParams.NoiseFilterChroma\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoProcessBltParams::NoiseFilterChroma']/*\"/>\t\n            <unmanaged>DXVA2_FilterValues NoiseFilterChroma</unmanaged>\t\n            <unmanaged-short>DXVA2_FilterValues NoiseFilterChroma</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoProcessBltParams.DetailFilterLuma\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoProcessBltParams::DetailFilterLuma']/*\"/>\t\n            <unmanaged>DXVA2_FilterValues DetailFilterLuma</unmanaged>\t\n            <unmanaged-short>DXVA2_FilterValues DetailFilterLuma</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoProcessBltParams.DetailFilterChroma\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoProcessBltParams::DetailFilterChroma']/*\"/>\t\n            <unmanaged>DXVA2_FilterValues DetailFilterChroma</unmanaged>\t\n            <unmanaged-short>DXVA2_FilterValues DetailFilterChroma</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoProcessBltParams.DestData\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoProcessBltParams::DestData']/*\"/>\t\n            <unmanaged>unsigned int DestData</unmanaged>\t\n            <unmanaged-short>unsigned int DestData</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.VideoProcessorCaps\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Describes the capabilities of a DirectX Video Acceleration (DVXA) video processor mode.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoProcessorCaps']/*\"/>\t\n            <msdn-id>ms703795</msdn-id>\t\n            <unmanaged>DXVA2_VideoProcessorCaps</unmanaged>\t\n            <unmanaged-short>DXVA2_VideoProcessorCaps</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoProcessorCaps.DeviceCaps\">\n            <summary>\t\n            <dd> <p>Identifies the type of device. The following values are defined.</p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.DirectX.VideoDeviceCapabilities.EmulatedDXVA1\"/></strong></dt> </dl> </td><td> <p>DXVA 2.0 video processing is emulated by using DXVA 1.0. An emulated device may be missing significant processing capabilities and have lower image quality and performance.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.DirectX.VideoDeviceCapabilities.HardwareDevice\"/></strong></dt> </dl> </td><td> <p>Hardware device.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.DirectX.VideoDeviceCapabilities.SoftwareDevice\"/></strong></dt> </dl> </td><td> <p>Software device.</p> </td></tr> </table> <p>?</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoProcessorCaps::DeviceCaps']/*\"/>\t\n            <msdn-id>ms703795</msdn-id>\t\n            <unmanaged>unsigned int DeviceCaps</unmanaged>\t\n            <unmanaged-short>unsigned int DeviceCaps</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoProcessorCaps.InputPool\">\n            <summary>\t\n            <dd> <p>The Direct3D memory pool used by the device.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoProcessorCaps::InputPool']/*\"/>\t\n            <msdn-id>ms703795</msdn-id>\t\n            <unmanaged>D3DPOOL InputPool</unmanaged>\t\n            <unmanaged-short>D3DPOOL InputPool</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoProcessorCaps.NumForwardRefSamples\">\n            <summary>\t\n            <dd> <p>Number of forward reference samples the device needs to perform deinterlacing. For the bob, progressive scan, and software devices, the value is zero.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoProcessorCaps::NumForwardRefSamples']/*\"/>\t\n            <msdn-id>ms703795</msdn-id>\t\n            <unmanaged>unsigned int NumForwardRefSamples</unmanaged>\t\n            <unmanaged-short>unsigned int NumForwardRefSamples</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoProcessorCaps.NumBackwardRefSamples\">\n            <summary>\t\n            <dd> <p>Number of backward reference samples the device needs to perform deinterlacing. For the bob, progressive scan, and software devices, the value is zero.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoProcessorCaps::NumBackwardRefSamples']/*\"/>\t\n            <msdn-id>ms703795</msdn-id>\t\n            <unmanaged>unsigned int NumBackwardRefSamples</unmanaged>\t\n            <unmanaged-short>unsigned int NumBackwardRefSamples</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoProcessorCaps.Reserved\">\n            <summary>\t\n            <dd> <p>Reserved. Must be zero.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoProcessorCaps::Reserved']/*\"/>\t\n            <msdn-id>ms703795</msdn-id>\t\n            <unmanaged>unsigned int Reserved</unmanaged>\t\n            <unmanaged-short>unsigned int Reserved</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoProcessorCaps.DeinterlaceTechnology\">\n            <summary>\t\n            <dd> <p>Identifies the deinteracing technique used by the device. This value is a bitwise <strong>OR</strong> of one or more of the following flags.</p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.DirectX.DeinterlaceTechnology.Unknown\"/></strong></dt> </dl> </td><td> <p>The algorithm is unknown or proprietary.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.DirectX.DeinterlaceTechnology.BOBLineReplicate\"/></strong></dt> </dl> </td><td> <p>The algorithm creates missing lines by repeating the line either above or below the missing line. This algorithm produces a jagged image and is not recommended.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.DirectX.DeinterlaceTechnology.BOBVerticalStretch\"/></strong></dt> </dl> </td><td> <p>The algorithm creates missing lines by averaging two lines. Slight vertical adjustments are made so that the resulting image does not bob up and down.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.DirectX.DeinterlaceTechnology.BOBVerticalStretch4Tap\"/></strong></dt> </dl> </td><td> <p>The algorithm creates missing lines by applying a [?1, 9, 9, ?1]/16 filter across four lines. Slight vertical adjustments are made so that the resulting image does not bob up and down.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.DirectX.DeinterlaceTechnology.MedianFiltering\"/></strong></dt> </dl> </td><td> <p>The algorithm uses median filtering to recreate the pixels in the missing lines.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.DirectX.DeinterlaceTechnology.EdgeFiltering\"/></strong></dt> </dl> </td><td> <p>The algorithm uses an edge filter to create the missing lines. In this process, spatial directional filters are applied to determine the orientation of edges in the picture content. Missing pixels are created by filtering along (rather than across) the detected edges.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.DirectX.DeinterlaceTechnology.FieldAdaptive\"/></strong></dt> </dl> </td><td> <p>The algorithm uses spatial or temporal interpolation, switching between the two on a field-by-field basis, depending on the amount of motion.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.DirectX.DeinterlaceTechnology.PixelAdaptive\"/></strong></dt> </dl> </td><td> <p>The algorithm uses spatial or temporal interpolation, switching between the two on a pixel-by-pixel basis, depending on the amount of motion.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.DirectX.DeinterlaceTechnology.MotionVectorSteered\"/></strong></dt> </dl> </td><td> <p>The algorithm identifies objects within a sequence of video fields. Before it recreates the missing pixels, it aligns the movement axes of the individual objects in the scene to make them parallel with the time axis.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.DirectX.DeinterlaceTechnology.InverseTelecine\"/></strong></dt> </dl> </td><td> <p>The device can undo the 3:2 pulldown process used in telecine.</p> </td></tr> </table> <p>?</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoProcessorCaps::DeinterlaceTechnology']/*\"/>\t\n            <msdn-id>ms703795</msdn-id>\t\n            <unmanaged>unsigned int DeinterlaceTechnology</unmanaged>\t\n            <unmanaged-short>unsigned int DeinterlaceTechnology</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoProcessorCaps.ProcAmpControlCaps\">\n            <summary>\t\n            <dd> <p>Specifies the available video processor (ProcAmp) operations. The value is a bitwise OR of <strong>ProcAmp Settings</strong> constants.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoProcessorCaps::ProcAmpControlCaps']/*\"/>\t\n            <msdn-id>ms703795</msdn-id>\t\n            <unmanaged>unsigned int ProcAmpControlCaps</unmanaged>\t\n            <unmanaged-short>unsigned int ProcAmpControlCaps</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoProcessorCaps.VideoProcessorOperations\">\n            <summary>\t\n            <dd> <p>Specifies operations that the device can perform concurrently with the <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.VideoProcessor.VideoProcessBlt(SharpDX.Direct3D9.Surface,SharpDX.MediaFoundation.DirectX.VideoProcessBltParams@,SharpDX.MediaFoundation.DirectX.VideoSample[],System.Int32,System.IntPtr)\"/></strong> operation. The value is a bitwise <strong>OR</strong> of the following flags.</p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.DirectX.VideoProcessorOperations.Yuv2rgb\"/></strong></dt> </dl> </td><td> <p>The device can convert the video from YUV color space to RGB color space, with at least 8 bits of precision for each RGB component.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.DirectX.VideoProcessorOperations.StretchX\"/></strong></dt> </dl> </td><td> <p>The device can stretch or shrink the video horizontally. If this capability is present, aspect ratio correction can be performed at the same time as deinterlacing.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.DirectX.VideoProcessorOperations.StretchY\"/></strong></dt> </dl> </td><td> <p>The device can stretch or shrink the video vertically. If this capability is present, image resizing and aspect ratio correction can be performed at the same time.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.DirectX.VideoProcessorOperations.AlphaBlend\"/></strong></dt> </dl> </td><td> <p>The device can alpha blend the video.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.DirectX.VideoProcessorOperations.SubRects\"/></strong></dt> </dl> </td><td> <p>The device can operate on a subrectangle of the video frame. If this capability is present, source images can be cropped before further processing occurs.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.DirectX.VideoProcessorOperations.SubStreams\"/></strong></dt> </dl> </td><td> <p>The device can accept substreams in addition to the primary video stream, and can composite them.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.DirectX.VideoProcessorOperations.SubStreamsExtended\"/></strong></dt> </dl> </td><td> <p>The device can perform color adjustments on the primary video stream and substreams, at the same time that it deinterlaces the video and composites the substreams. The destination color space is defined in the <strong>DestFormat</strong> member of the <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.VideoProcessBltParams\"/></strong> structure. The source color space for each stream is defined in the SampleFormat member of the <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.VideoSample\"/></strong> structure.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.DirectX.VideoProcessorOperations.YUV2RGBExtended\"/></strong></dt> </dl> </td><td> <p>The device can convert the video from YUV to RGB color space when it writes the deinterlaced and composited pixels to the destination surface.</p> <p>An RGB destination surface could be an off-screen surface, texture, Direct3D render target, or combined texture/render target surface. An RGB destination surface must use at least 8 bits for each color channel.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.DirectX.VideoProcessorOperations.AlphaBlendExtended\"/></strong></dt> </dl> </td><td> <p>The device can perform an alpha blend operation with the destination surface when it writes the deinterlaced and composited pixels to the destination surface.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.DirectX.VideoProcessorOperations.Constriction\"/></strong></dt> </dl> </td><td> <p>The device can downsample the output frame, as specified by the <strong>ConstrictionSize</strong> member of the <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.VideoProcessBltParams\"/></strong> structure.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.DirectX.VideoProcessorOperations.NoiseFilter\"/></strong></dt> </dl> </td><td> <p>The device can perform noise filtering.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.DirectX.VideoProcessorOperations.DetailFilter\"/></strong></dt> </dl> </td><td> <p>The device can perform detail filtering.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.DirectX.VideoProcessorOperations.PlanarAlpha\"/></strong></dt> </dl> </td><td> <p>The device can perform a constant alpha blend to the entire video stream when it composites the video stream and substreams.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.DirectX.VideoProcessorOperations.LinearScaling\"/></strong></dt> </dl> </td><td> <p>The device can perform accurate linear RGB scaling, rather than performing them in nonlinear gamma space.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.DirectX.VideoProcessorOperations.GammaCompensated\"/></strong></dt> </dl> </td><td> <p>The device can correct the image to compensate for artifacts introduced when performing scaling in nonlinear gamma space.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.DirectX.VideoProcessorOperations.MaintainsOriginalFieldData\"/></strong></dt> </dl> </td><td> <p>The deinterlacing algorithm preserves the original field lines from the interlaced field picture, unless scaling is also applied.</p> <p>For example, in deinterlacing algorithms such as bob and median filtering, the device copies the original field into every other scan line and then applies a filter to reconstruct the missing scan lines. As a result, the original field can be recovered by discarding the scan lines that were interpolated.</p> <p>If the image is scaled vertically, however, the original field lines cannot be recovered. If the image is scaled horizontally (but not vertically), the resulting field lines will be equivalent to scaling the original field picture. (In other words, discarding the interpolated scan lines will yield the same result as stretching the original picture without deinterlacing.)</p> </td></tr> </table> <p>?</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoProcessorCaps::VideoProcessorOperations']/*\"/>\t\n            <msdn-id>ms703795</msdn-id>\t\n            <unmanaged>unsigned int VideoProcessorOperations</unmanaged>\t\n            <unmanaged-short>unsigned int VideoProcessorOperations</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoProcessorCaps.NoiseFilterTechnology\">\n            <summary>\t\n            <dd> <p>Specifies the supported noise filters. The value is a bitwise <strong>OR</strong> of the following flags.</p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.DirectX.NoiseFilterTechnology.Unsupported\"/></strong></dt> </dl> </td><td> <p>Noise filtering is not supported.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.DirectX.NoiseFilterTechnology.Unknown\"/></strong></dt> </dl> </td><td> <p>Unknown or proprietary filter.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.DirectX.NoiseFilterTechnology.Median\"/></strong></dt> </dl> </td><td> <p>Median filter.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.DirectX.NoiseFilterTechnology.Temporal\"/></strong></dt> </dl> </td><td> <p>Temporal filter.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.DirectX.NoiseFilterTechnology.BlockNoise\"/></strong></dt> </dl> </td><td> <p>Block noise filter.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.DirectX.NoiseFilterTechnology.MosquitoNoise\"/></strong></dt> </dl> </td><td> <p>Mosquito noise filter.</p> </td></tr> </table> <p>?</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoProcessorCaps::NoiseFilterTechnology']/*\"/>\t\n            <msdn-id>ms703795</msdn-id>\t\n            <unmanaged>unsigned int NoiseFilterTechnology</unmanaged>\t\n            <unmanaged-short>unsigned int NoiseFilterTechnology</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoProcessorCaps.DetailFilterTechnology\">\n            <summary>\t\n            <dd> <p>Specifies the supported detail filters. The value is a bitwise <strong>OR</strong> of the following flags.</p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.DirectX.DetailFilterTechnology.DetailTechUnsupported\"/></strong></dt> </dl> </td><td> <p>Detail filtering is not supported.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.DirectX.DetailFilterTechnology.DetailTechUnknown\"/></strong></dt> </dl> </td><td> <p>Unknown or proprietary filter.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.DirectX.DetailFilterTechnology.DetailTechEdge\"/></strong></dt> </dl> </td><td> <p>Edge filter.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.DirectX.DetailFilterTechnology.DetailTechSharpening\"/></strong></dt> </dl> </td><td> <p>Sharpen filter.</p> </td></tr> </table> <p>?</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoProcessorCaps::DetailFilterTechnology']/*\"/>\t\n            <msdn-id>ms703795</msdn-id>\t\n            <unmanaged>unsigned int DetailFilterTechnology</unmanaged>\t\n            <unmanaged-short>unsigned int DetailFilterTechnology</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.VideoSample\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Specifies an input sample for the <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.VideoProcessor.VideoProcessBlt(SharpDX.Direct3D9.Surface,SharpDX.MediaFoundation.DirectX.VideoProcessBltParams@,SharpDX.MediaFoundation.DirectX.VideoSample[],System.Int32,System.IntPtr)\"/></strong> method.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoSample']/*\"/>\t\n            <msdn-id>ms693598</msdn-id>\t\n            <unmanaged>DXVA2_VideoSample</unmanaged>\t\n            <unmanaged-short>DXVA2_VideoSample</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoSample.Start\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoSample::Start']/*\"/>\t\n            <unmanaged>longlong Start</unmanaged>\t\n            <unmanaged-short>longlong Start</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoSample.End\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoSample::End']/*\"/>\t\n            <unmanaged>longlong End</unmanaged>\t\n            <unmanaged-short>longlong End</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoSample.SampleFormat\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoSample::SampleFormat']/*\"/>\t\n            <unmanaged>DXVA2_ExtendedFormat SampleFormat</unmanaged>\t\n            <unmanaged-short>DXVA2_ExtendedFormat SampleFormat</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoSample.SrcSurface\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoSample::SrcSurface']/*\"/>\t\n            <unmanaged>IDirect3DSurface9* SrcSurface</unmanaged>\t\n            <unmanaged-short>IDirect3DSurface9 SrcSurface</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoSample.SrcRect\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoSample::SrcRect']/*\"/>\t\n            <unmanaged>RECT SrcRect</unmanaged>\t\n            <unmanaged-short>RECT SrcRect</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoSample.DstRect\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoSample::DstRect']/*\"/>\t\n            <unmanaged>RECT DstRect</unmanaged>\t\n            <unmanaged-short>RECT DstRect</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoSample.PlanarAlpha\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoSample::PlanarAlpha']/*\"/>\t\n            <unmanaged>DXVA2_Fixed32 PlanarAlpha</unmanaged>\t\n            <unmanaged-short>DXVA2_Fixed32 PlanarAlpha</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.VideoSample.SampleData\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoSample::SampleData']/*\"/>\t\n            <unmanaged>unsigned int SampleData</unmanaged>\t\n            <unmanaged-short>unsigned int SampleData</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.DirectX.VideoSample.Pal\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVA2_VideoSample::Pal']/*\"/>\t\n            <unmanaged>DXVA2_AYUVSample8 Pal[16]</unmanaged>\t\n            <unmanaged-short>DXVA2_AYUVSample8 Pal</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.Vpcaps\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Gets the capabilities of one or more Microsoft DirectX Video Acceleration High Definition (DXVA-HD) video processors.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_VPCAPS']/*\"/>\t\n            <msdn-id>dd373912</msdn-id>\t\n            <unmanaged>DXVAHD_VPCAPS</unmanaged>\t\n            <unmanaged-short>DXVAHD_VPCAPS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.Vpcaps.VPGuid\">\n            <summary>\t\n            <dd> <p>The number of elements in the <em>pCaps</em> array. This parameter must equal the <strong>VideoProcessorCount</strong> member of the <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.Vpdevcaps\"/></strong> structure. Call the <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.HDDevice.GetVideoProcessorDeviceCaps(SharpDX.MediaFoundation.DirectX.Vpdevcaps@)\"/></strong> method to get this value.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_VPCAPS::VPGuid']/*\"/>\t\n            <msdn-id>dd373912</msdn-id>\t\n            <unmanaged>GUID VPGuid</unmanaged>\t\n            <unmanaged-short>GUID VPGuid</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.Vpcaps.PastFrames\">\n            <summary>\t\n            <dd> <p>A reference to an array of <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.Vpcaps\"/></strong> structures. The method fills the structures with the capabilities of the video processors supported by the driver.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_VPCAPS::PastFrames']/*\"/>\t\n            <msdn-id>dd373912</msdn-id>\t\n            <unmanaged>unsigned int PastFrames</unmanaged>\t\n            <unmanaged-short>unsigned int PastFrames</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.Vpcaps.FutureFrames\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_VPCAPS::FutureFrames']/*\"/>\t\n            <unmanaged>unsigned int FutureFrames</unmanaged>\t\n            <unmanaged-short>unsigned int FutureFrames</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.Vpcaps.ProcessorCaps\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_VPCAPS::ProcessorCaps']/*\"/>\t\n            <unmanaged>unsigned int ProcessorCaps</unmanaged>\t\n            <unmanaged-short>unsigned int ProcessorCaps</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.Vpcaps.ITelecineCaps\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_VPCAPS::ITelecineCaps']/*\"/>\t\n            <unmanaged>unsigned int ITelecineCaps</unmanaged>\t\n            <unmanaged-short>unsigned int ITelecineCaps</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.Vpcaps.CustomRateCount\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_VPCAPS::CustomRateCount']/*\"/>\t\n            <unmanaged>unsigned int CustomRateCount</unmanaged>\t\n            <unmanaged-short>unsigned int CustomRateCount</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DirectX.Vpdevcaps\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Specifies the capabilities of a Microsoft DirectX Video Acceleration High Definition (DXVA-HD) device.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>In DXVA-HD, the device stores state information for each input stream. These states persist between blits. With each blit, the application selects which streams to enable or disable. Disabling a stream does not affect the state information for that stream. </p><p>The <strong>MaxStreamStates</strong> member gives the maximum number of stream states that can be set by the application. The <strong>MaxInputStreams</strong> member gives the maximum number of streams that can be enabled during a blit. These two values can differ.</p><p>To set the state data for a stream, call <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.HDVideoProcessor.SetVideoProcessStreamState(System.Int32,SharpDX.MediaFoundation.DirectX.StreamState,System.Int32,System.IntPtr)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_VPDEVCAPS']/*\"/>\t\n            <msdn-id>dd318774</msdn-id>\t\n            <unmanaged>DXVAHD_VPDEVCAPS</unmanaged>\t\n            <unmanaged-short>DXVAHD_VPDEVCAPS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.Vpdevcaps.DeviceType\">\n            <summary>\t\n            <dd> <p>Specifies the device type, as a member of the <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.DeviceType\"/></strong> enumeration.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_VPDEVCAPS::DeviceType']/*\"/>\t\n            <msdn-id>dd318774</msdn-id>\t\n            <unmanaged>DXVAHD_DEVICE_TYPE DeviceType</unmanaged>\t\n            <unmanaged-short>DXVAHD_DEVICE_TYPE DeviceType</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.Vpdevcaps.DeviceCaps\">\n            <summary>\t\n            <dd> <p>A bitwise <strong>OR</strong> of zero or more flags from the <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.DeviceCaps\"/></strong> enumeration.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_VPDEVCAPS::DeviceCaps']/*\"/>\t\n            <msdn-id>dd318774</msdn-id>\t\n            <unmanaged>unsigned int DeviceCaps</unmanaged>\t\n            <unmanaged-short>unsigned int DeviceCaps</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.Vpdevcaps.FeatureCaps\">\n            <summary>\t\n            <dd> <p>A bitwise <strong>OR</strong> of zero or more flags from the <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.FeatureCaps\"/></strong> enumeration.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_VPDEVCAPS::FeatureCaps']/*\"/>\t\n            <msdn-id>dd318774</msdn-id>\t\n            <unmanaged>unsigned int FeatureCaps</unmanaged>\t\n            <unmanaged-short>unsigned int FeatureCaps</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.Vpdevcaps.FilterCaps\">\n            <summary>\t\n            <dd> <p>A bitwise <strong>OR</strong> of zero or more flags from the <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.FilterCaps\"/></strong> enumeration.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_VPDEVCAPS::FilterCaps']/*\"/>\t\n            <msdn-id>dd318774</msdn-id>\t\n            <unmanaged>unsigned int FilterCaps</unmanaged>\t\n            <unmanaged-short>unsigned int FilterCaps</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.Vpdevcaps.InputFormatCaps\">\n            <summary>\t\n            <dd> <p>A bitwise <strong>OR</strong> of zero or more flags from the <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.InputFormatCaps\"/></strong> enumeration.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_VPDEVCAPS::InputFormatCaps']/*\"/>\t\n            <msdn-id>dd318774</msdn-id>\t\n            <unmanaged>unsigned int InputFormatCaps</unmanaged>\t\n            <unmanaged-short>unsigned int InputFormatCaps</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.Vpdevcaps.InputPool\">\n            <summary>\t\n            <dd> <p>The memory pool that is required for the input video surfaces.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_VPDEVCAPS::InputPool']/*\"/>\t\n            <msdn-id>dd318774</msdn-id>\t\n            <unmanaged>D3DPOOL InputPool</unmanaged>\t\n            <unmanaged-short>D3DPOOL InputPool</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.Vpdevcaps.OutputFormatCount\">\n            <summary>\t\n            <dd> <p>The number of supported output formats. To get the list of output formats, call the <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.HDDevice.GetVideoProcessorOutputFormats(System.Int32,SharpDX.Direct3D9.Format[])\"/></strong> method.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_VPDEVCAPS::OutputFormatCount']/*\"/>\t\n            <msdn-id>dd318774</msdn-id>\t\n            <unmanaged>unsigned int OutputFormatCount</unmanaged>\t\n            <unmanaged-short>unsigned int OutputFormatCount</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.Vpdevcaps.InputFormatCount\">\n            <summary>\t\n            <dd> <p>The number of supported input formats. To get the list of input formats, call the <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.HDDevice.GetVideoProcessorInputFormats(System.Int32,SharpDX.Direct3D9.Format[])\"/></strong> method.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_VPDEVCAPS::InputFormatCount']/*\"/>\t\n            <msdn-id>dd318774</msdn-id>\t\n            <unmanaged>unsigned int InputFormatCount</unmanaged>\t\n            <unmanaged-short>unsigned int InputFormatCount</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.Vpdevcaps.VideoProcessorCount\">\n            <summary>\t\n            <dd> <p>The number of video processors. Each video processor represents a  distinct set of processing capabilities. To get the capabilities of each video processor, call the <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.HDDevice.GetVideoProcessorCaps(System.Int32,SharpDX.MediaFoundation.DirectX.Vpcaps[])\"/></strong> method. To create a video processor, call the <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.HDDevice.CreateVideoProcessor(System.Guid,SharpDX.MediaFoundation.DirectX.HDVideoProcessor@)\"/></strong> method. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_VPDEVCAPS::VideoProcessorCount']/*\"/>\t\n            <msdn-id>dd318774</msdn-id>\t\n            <unmanaged>unsigned int VideoProcessorCount</unmanaged>\t\n            <unmanaged-short>unsigned int VideoProcessorCount</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.Vpdevcaps.MaxInputStreams\">\n            <summary>\t\n            <dd> <p>The maximum number of input streams that can be enabled at the same time.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_VPDEVCAPS::MaxInputStreams']/*\"/>\t\n            <msdn-id>dd318774</msdn-id>\t\n            <unmanaged>unsigned int MaxInputStreams</unmanaged>\t\n            <unmanaged-short>unsigned int MaxInputStreams</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DirectX.Vpdevcaps.MaxStreamStates\">\n            <summary>\t\n            <dd> <p>The maximum number of input streams for which the device can store state data. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DXVAHD_VPDEVCAPS::MaxStreamStates']/*\"/>\t\n            <msdn-id>dd318774</msdn-id>\t\n            <unmanaged>unsigned int MaxStreamStates</unmanaged>\t\n            <unmanaged-short>unsigned int MaxStreamStates</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.ActivateCustomMixerFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='__MIDL___MIDL_itf_mfidl_0000_0020_0001']/*\"/>\t\n            <unmanaged>__MIDL___MIDL_itf_mfidl_0000_0020_0001</unmanaged>\t\n            <unmanaged-short>__MIDL___MIDL_itf_mfidl_0000_0020_0001</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ActivateCustomMixerFlags.AllowFail\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_ACTIVATE_CUSTOM_MIXER_ALLOWFAIL']/*\"/>\t\n            <unmanaged>MF_ACTIVATE_CUSTOM_MIXER_ALLOWFAIL</unmanaged>\t\n            <unmanaged-short>MF_ACTIVATE_CUSTOM_MIXER_ALLOWFAIL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ActivateCustomMixerFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.ActivateCustomPresenterFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='__MIDL___MIDL_itf_mfidl_0000_0020_0002']/*\"/>\t\n            <unmanaged>__MIDL___MIDL_itf_mfidl_0000_0020_0002</unmanaged>\t\n            <unmanaged-short>__MIDL___MIDL_itf_mfidl_0000_0020_0002</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ActivateCustomPresenterFlags.AllowFail\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_ACTIVATE_CUSTOM_PRESENTER_ALLOWFAIL']/*\"/>\t\n            <unmanaged>MF_ACTIVATE_CUSTOM_PRESENTER_ALLOWFAIL</unmanaged>\t\n            <unmanaged-short>MF_ACTIVATE_CUSTOM_PRESENTER_ALLOWFAIL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ActivateCustomPresenterFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.AsfIndexerFlags\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Defines the ASF indexer options.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFASF_INDEXERFLAGS']/*\"/>\t\n            <msdn-id>ms704695</msdn-id>\t\n            <unmanaged>MFASF_INDEXERFLAGS</unmanaged>\t\n            <unmanaged-short>MFASF_INDEXERFLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.AsfIndexerFlags.WriteNewIndex\">\n            <summary>\t\n            <dd> <p>The indexer creates a new index object.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFASF_INDEXER_WRITE_NEW_INDEX']/*\"/>\t\n            <msdn-id>ms704695</msdn-id>\t\n            <unmanaged>MFASF_INDEXER_WRITE_NEW_INDEX</unmanaged>\t\n            <unmanaged-short>MFASF_INDEXER_WRITE_NEW_INDEX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.AsfIndexerFlags.ReadForReversePlayback\">\n            <summary>\t\n            <dd> <p>The indexer returns values for reverse playback.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFASF_INDEXER_READ_FOR_REVERSEPLAYBACK']/*\"/>\t\n            <msdn-id>ms704695</msdn-id>\t\n            <unmanaged>MFASF_INDEXER_READ_FOR_REVERSEPLAYBACK</unmanaged>\t\n            <unmanaged-short>MFASF_INDEXER_READ_FOR_REVERSEPLAYBACK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.AsfIndexerFlags.WriteForLiveread\">\n            <summary>\t\n            <dd> <p>The indexer creates an index object for a live ASF stream.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFASF_INDEXER_WRITE_FOR_LIVEREAD']/*\"/>\t\n            <msdn-id>ms704695</msdn-id>\t\n            <unmanaged>MFASF_INDEXER_WRITE_FOR_LIVEREAD</unmanaged>\t\n            <unmanaged-short>MFASF_INDEXER_WRITE_FOR_LIVEREAD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.AsfIndexerFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.AsfMultiplexerflags\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Specifies how the credential manager should obtain user credentials. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The application implements the credential manager, which must expose the <strong><see cref=\"T:SharpDX.MediaFoundation.NetCredentialManager\"/></strong> interface. If the <strong><see cref=\"F:SharpDX.MediaFoundation.NetCredentialRequirements.RequirePrompt\"/></strong> flag is set, the credential manager should prompt the user for his or her name and password.</p><p>The credential cache object sets the <strong><see cref=\"F:SharpDX.MediaFoundation.NetCredentialRequirements.RequirePrompt\"/></strong> flag if the cache does not yet contain valid credentials. It also sets this flag if the credentials will be sent as plain text, unless the credential manager previously set the <strong><see cref=\"F:SharpDX.MediaFoundation.NetCredentialOptions.MfnetCredentialAllowClearText\"/></strong> option. (See <strong><see cref=\"M:SharpDX.MediaFoundation.NetCredentialCache.SetUserOptions(SharpDX.MediaFoundation.NetCredential,System.Int32)\"/></strong>.)</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFASF_MULTIPLEXERFLAGS']/*\"/>\t\n            <msdn-id>ms700813</msdn-id>\t\n            <unmanaged>MFASF_MULTIPLEXERFLAGS</unmanaged>\t\n            <unmanaged-short>MFASF_MULTIPLEXERFLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.AsfMultiplexerflags.AutoadjustBitRate\">\n            <summary>\t\n            <dd> <p> The credential manager should prompt the user to provide the credentials. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFASF_MULTIPLEXER_AUTOADJUST_BITRATE']/*\"/>\t\n            <msdn-id>ms700813</msdn-id>\t\n            <unmanaged>MFASF_MULTIPLEXER_AUTOADJUST_BITRATE</unmanaged>\t\n            <unmanaged-short>MFASF_MULTIPLEXER_AUTOADJUST_BITRATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.AsfMultiplexerflags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.AsfSelectionStatus\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Describes the current status of a call to the <strong><see cref=\"M:SharpDX.MediaFoundation.Shutdownable.Shutdown\"/></strong> method.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ASF_SELECTION_STATUS']/*\"/>\t\n            <msdn-id>ms701630</msdn-id>\t\n            <unmanaged>ASF_SELECTION_STATUS</unmanaged>\t\n            <unmanaged-short>ASF_SELECTION_STATUS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.AsfSelectionStatus.NotSelected\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ASF_STATUS_NOTSELECTED']/*\"/>\t\n            <unmanaged>ASF_STATUS_NOTSELECTED</unmanaged>\t\n            <unmanaged-short>ASF_STATUS_NOTSELECTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.AsfSelectionStatus.CleanPointsOnly\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ASF_STATUS_CLEANPOINTSONLY']/*\"/>\t\n            <unmanaged>ASF_STATUS_CLEANPOINTSONLY</unmanaged>\t\n            <unmanaged-short>ASF_STATUS_CLEANPOINTSONLY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.AsfSelectionStatus.AllDataUnits\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ASF_STATUS_ALLDATAUNITS']/*\"/>\t\n            <unmanaged>ASF_STATUS_ALLDATAUNITS</unmanaged>\t\n            <unmanaged-short>ASF_STATUS_ALLDATAUNITS</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.AsfSplitterflags\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Specifies how the credential manager should obtain user credentials. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The application implements the credential manager, which must expose the <strong><see cref=\"T:SharpDX.MediaFoundation.NetCredentialManager\"/></strong> interface. If the <strong><see cref=\"F:SharpDX.MediaFoundation.NetCredentialRequirements.RequirePrompt\"/></strong> flag is set, the credential manager should prompt the user for his or her name and password.</p><p>The credential cache object sets the <strong><see cref=\"F:SharpDX.MediaFoundation.NetCredentialRequirements.RequirePrompt\"/></strong> flag if the cache does not yet contain valid credentials. It also sets this flag if the credentials will be sent as plain text, unless the credential manager previously set the <strong><see cref=\"F:SharpDX.MediaFoundation.NetCredentialOptions.MfnetCredentialAllowClearText\"/></strong> option. (See <strong><see cref=\"M:SharpDX.MediaFoundation.NetCredentialCache.SetUserOptions(SharpDX.MediaFoundation.NetCredential,System.Int32)\"/></strong>.)</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFASF_SPLITTERFLAGS']/*\"/>\t\n            <msdn-id>ms700813</msdn-id>\t\n            <unmanaged>MFASF_SPLITTERFLAGS</unmanaged>\t\n            <unmanaged-short>MFASF_SPLITTERFLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.AsfSplitterflags.Reverse\">\n            <summary>\t\n            <dd> <p> The credential manager should prompt the user to provide the credentials. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFASF_SPLITTER_REVERSE']/*\"/>\t\n            <msdn-id>ms700813</msdn-id>\t\n            <unmanaged>MFASF_SPLITTER_REVERSE</unmanaged>\t\n            <unmanaged-short>MFASF_SPLITTER_REVERSE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.AsfSplitterflags.Wmdrm\">\n            <summary>\t\n            <dd> <p> </p><p><strong>Note</strong>??Requires Windows?7 or later.</p> <p>The credentials are saved to persistent storage. This flag acts as a hint for the application's UI. If the application prompts the user for credentials, the UI can indicate that the credentials have already been saved.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFASF_SPLITTER_WMDRM']/*\"/>\t\n            <msdn-id>ms700813</msdn-id>\t\n            <unmanaged>MFASF_SPLITTER_WMDRM</unmanaged>\t\n            <unmanaged-short>MFASF_SPLITTER_WMDRM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.AsfSplitterflags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.AsfStatusflags\">\n            <summary>\t\n            <p>[This documentation is preliminary and is subject to change.]</p><p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Specifies a type of capture device.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ASF_STATUSFLAGS']/*\"/>\t\n            <msdn-id>hh162811</msdn-id>\t\n            <unmanaged>ASF_STATUSFLAGS</unmanaged>\t\n            <unmanaged-short>ASF_STATUSFLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.AsfStatusflags.Incomplete\">\n            <summary>\t\n            <dd> <p>An audio capture device, such as a microphone.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ASF_STATUSFLAGS_INCOMPLETE']/*\"/>\t\n            <msdn-id>hh162811</msdn-id>\t\n            <unmanaged>ASF_STATUSFLAGS_INCOMPLETE</unmanaged>\t\n            <unmanaged-short>ASF_STATUSFLAGS_INCOMPLETE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.AsfStatusflags.NonfatalError\">\n            <summary>\t\n            <dd> <p>A video capture device, such as a webcam.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ASF_STATUSFLAGS_NONFATAL_ERROR']/*\"/>\t\n            <msdn-id>hh162811</msdn-id>\t\n            <unmanaged>ASF_STATUSFLAGS_NONFATAL_ERROR</unmanaged>\t\n            <unmanaged-short>ASF_STATUSFLAGS_NONFATAL_ERROR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.AsfStatusflags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.AsfStreamSelectorFlags\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Defines the ASF stream selector options.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFASF_STREAMSELECTORFLAGS']/*\"/>\t\n            <msdn-id>ms696200</msdn-id>\t\n            <unmanaged>MFASF_STREAMSELECTORFLAGS</unmanaged>\t\n            <unmanaged-short>MFASF_STREAMSELECTORFLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.AsfStreamSelectorFlags.DisableThinning\">\n            <summary>\t\n            <dd> <p>The stream selector will not set thinning. Thinning is the process of removing samples from a stream to reduce the bit rate.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFASF_STREAMSELECTOR_DISABLE_THINNING']/*\"/>\t\n            <msdn-id>ms696200</msdn-id>\t\n            <unmanaged>MFASF_STREAMSELECTOR_DISABLE_THINNING</unmanaged>\t\n            <unmanaged-short>MFASF_STREAMSELECTOR_DISABLE_THINNING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.AsfStreamSelectorFlags.UseAverageBitRate\">\n            <summary>\t\n            <dd> <p>The stream selector will use the average bit rate of streams when selecting streams.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFASF_STREAMSELECTOR_USE_AVERAGE_BITRATE']/*\"/>\t\n            <msdn-id>ms696200</msdn-id>\t\n            <unmanaged>MFASF_STREAMSELECTOR_USE_AVERAGE_BITRATE</unmanaged>\t\n            <unmanaged-short>MFASF_STREAMSELECTOR_USE_AVERAGE_BITRATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.AsfStreamSelectorFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.AsyncWorkqueueType\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Creates a new work queue. This function extends the capabilities of the  <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.AllocateWorkQueue(System.Int32@)\"/></strong> function by making it possible to create a  work queue that has a message loop.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>When you are done using the work queue, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.UnlockWorkQueue(System.Int32)\"/></strong>.</p><p>The <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.AllocateWorkQueue(System.Int32@)\"/></strong> function is equivalent to calling <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.AllocateWorkQueueEx(SharpDX.MediaFoundation.AsyncWorkqueueType,System.Int32@)\"/></strong> with the value <see cref=\"F:SharpDX.MediaFoundation.AsyncWorkqueueType.MfStandardWorkqueue\"/> for the <em>WorkQueueType</em> parameter.</p><p>This function is available on Windows?Vista if Platform Update Supplement for Windows?Vista is installed.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFASYNC_WORKQUEUE_TYPE']/*\"/>\t\n            <msdn-id>dd375150</msdn-id>\t\n            <unmanaged>MFASYNC_WORKQUEUE_TYPE</unmanaged>\t\n            <unmanaged-short>MFASYNC_WORKQUEUE_TYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.AsyncWorkqueueType.MfStandardWorkqueue\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_STANDARD_WORKQUEUE']/*\"/>\t\n            <unmanaged>MF_STANDARD_WORKQUEUE</unmanaged>\t\n            <unmanaged-short>MF_STANDARD_WORKQUEUE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.AsyncWorkqueueType.MfWindowWorkqueue\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_WINDOW_WORKQUEUE']/*\"/>\t\n            <unmanaged>MF_WINDOW_WORKQUEUE</unmanaged>\t\n            <unmanaged-short>MF_WINDOW_WORKQUEUE</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.AttributeSerializeOptions\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Defines flags for serializing and deserializing attribute stores.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_ATTRIBUTE_SERIALIZE_OPTIONS']/*\"/>\t\n            <msdn-id>ms704675</msdn-id>\t\n            <unmanaged>MF_ATTRIBUTE_SERIALIZE_OPTIONS</unmanaged>\t\n            <unmanaged-short>MF_ATTRIBUTE_SERIALIZE_OPTIONS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.AttributeSerializeOptions.UnknownByref\">\n            <summary>\t\n            <dd> <p>If this flag is set, <strong><see cref=\"T:SharpDX.ComObject\"/></strong> references in the attribute store are marshaled to and from the stream. If this flag is absent, <strong><see cref=\"T:SharpDX.ComObject\"/></strong> references in the attribute store are not marshaled or serialized.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_ATTRIBUTE_SERIALIZE_UNKNOWN_BYREF']/*\"/>\t\n            <msdn-id>ms704675</msdn-id>\t\n            <unmanaged>MF_ATTRIBUTE_SERIALIZE_UNKNOWN_BYREF</unmanaged>\t\n            <unmanaged-short>MF_ATTRIBUTE_SERIALIZE_UNKNOWN_BYREF</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.AttributesMatchType\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Specifies how to compare the attributes on two objects.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_ATTRIBUTES_MATCH_TYPE']/*\"/>\t\n            <msdn-id>ms703793</msdn-id>\t\n            <unmanaged>MF_ATTRIBUTES_MATCH_TYPE</unmanaged>\t\n            <unmanaged-short>MF_ATTRIBUTES_MATCH_TYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.AttributesMatchType.OurItems\">\n            <summary>\t\n            <dd> <p>Check whether all the attributes in <em>pThis</em> exist in <em>pTheirs</em> and have the same data, where <em>pThis</em> is the object whose <strong>Compare</strong> method is being called and <em>pTheirs</em> is the object given in the <em>pTheirs</em> parameter.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_ATTRIBUTES_MATCH_OUR_ITEMS']/*\"/>\t\n            <msdn-id>ms703793</msdn-id>\t\n            <unmanaged>MF_ATTRIBUTES_MATCH_OUR_ITEMS</unmanaged>\t\n            <unmanaged-short>MF_ATTRIBUTES_MATCH_OUR_ITEMS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.AttributesMatchType.TheirItems\">\n            <summary>\t\n            <dd> <p>Check whether all the attributes in <em>pTheirs</em> exist in <em>pThis</em> and have the same data, where <em>pThis</em> is the object whose <strong>Compare</strong> method is being called and <em>pTheirs</em> is the object given in the <em>pTheirs</em> parameter.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_ATTRIBUTES_MATCH_THEIR_ITEMS']/*\"/>\t\n            <msdn-id>ms703793</msdn-id>\t\n            <unmanaged>MF_ATTRIBUTES_MATCH_THEIR_ITEMS</unmanaged>\t\n            <unmanaged-short>MF_ATTRIBUTES_MATCH_THEIR_ITEMS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.AttributesMatchType.AllItems\">\n            <summary>\t\n            <dd> <p>Check whether both objects have identical attributes with the same data.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_ATTRIBUTES_MATCH_ALL_ITEMS']/*\"/>\t\n            <msdn-id>ms703793</msdn-id>\t\n            <unmanaged>MF_ATTRIBUTES_MATCH_ALL_ITEMS</unmanaged>\t\n            <unmanaged-short>MF_ATTRIBUTES_MATCH_ALL_ITEMS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.AttributesMatchType.Intersection\">\n            <summary>\t\n            <dd> <p>Check whether the attributes that exist in both objects have the same data.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_ATTRIBUTES_MATCH_INTERSECTION']/*\"/>\t\n            <msdn-id>ms703793</msdn-id>\t\n            <unmanaged>MF_ATTRIBUTES_MATCH_INTERSECTION</unmanaged>\t\n            <unmanaged-short>MF_ATTRIBUTES_MATCH_INTERSECTION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.AttributesMatchType.Smaller\">\n            <summary>\t\n            <dd> <p>Find the object with the fewest number of attributes, and check if those attributes exist in the other object and have the same data.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_ATTRIBUTES_MATCH_SMALLER']/*\"/>\t\n            <msdn-id>ms703793</msdn-id>\t\n            <unmanaged>MF_ATTRIBUTES_MATCH_SMALLER</unmanaged>\t\n            <unmanaged-short>MF_ATTRIBUTES_MATCH_SMALLER</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.AttributeType\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Defines the data type for a key/value pair.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_ATTRIBUTE_TYPE']/*\"/>\t\n            <msdn-id>ms694854</msdn-id>\t\n            <unmanaged>MF_ATTRIBUTE_TYPE</unmanaged>\t\n            <unmanaged-short>MF_ATTRIBUTE_TYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.AttributeType.UInt32\">\n            <summary>\t\n            <dd> <p>Unsigned 32-bit integer.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_ATTRIBUTE_UINT32']/*\"/>\t\n            <msdn-id>ms694854</msdn-id>\t\n            <unmanaged>MF_ATTRIBUTE_UINT32</unmanaged>\t\n            <unmanaged-short>MF_ATTRIBUTE_UINT32</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.AttributeType.UInt64\">\n            <summary>\t\n            <dd> <p>Unsigned 64-bit integer.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_ATTRIBUTE_UINT64']/*\"/>\t\n            <msdn-id>ms694854</msdn-id>\t\n            <unmanaged>MF_ATTRIBUTE_UINT64</unmanaged>\t\n            <unmanaged-short>MF_ATTRIBUTE_UINT64</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.AttributeType.Double\">\n            <summary>\t\n            <dd> <p>Floating-point number.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_ATTRIBUTE_DOUBLE']/*\"/>\t\n            <msdn-id>ms694854</msdn-id>\t\n            <unmanaged>MF_ATTRIBUTE_DOUBLE</unmanaged>\t\n            <unmanaged-short>MF_ATTRIBUTE_DOUBLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.AttributeType.Guid\">\n            <summary>\t\n            <dd> <p><strong><see cref=\"T:System.Guid\"/></strong> value.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_ATTRIBUTE_GUID']/*\"/>\t\n            <msdn-id>ms694854</msdn-id>\t\n            <unmanaged>MF_ATTRIBUTE_GUID</unmanaged>\t\n            <unmanaged-short>MF_ATTRIBUTE_GUID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.AttributeType.String\">\n            <summary>\t\n            <dd> <p><c>null</c>-terminated wide-character string.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_ATTRIBUTE_STRING']/*\"/>\t\n            <msdn-id>ms694854</msdn-id>\t\n            <unmanaged>MF_ATTRIBUTE_STRING</unmanaged>\t\n            <unmanaged-short>MF_ATTRIBUTE_STRING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.AttributeType.Blob\">\n            <summary>\t\n            <dd> <p>Byte array.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_ATTRIBUTE_BLOB']/*\"/>\t\n            <msdn-id>ms694854</msdn-id>\t\n            <unmanaged>MF_ATTRIBUTE_BLOB</unmanaged>\t\n            <unmanaged-short>MF_ATTRIBUTE_BLOB</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.AttributeType.IUnknown\">\n            <summary>\t\n            <dd> <p><strong><see cref=\"T:SharpDX.ComObject\"/></strong> reference.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_ATTRIBUTE_IUNKNOWN']/*\"/>\t\n            <msdn-id>ms694854</msdn-id>\t\n            <unmanaged>MF_ATTRIBUTE_IUNKNOWN</unmanaged>\t\n            <unmanaged-short>MF_ATTRIBUTE_IUNKNOWN</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.ByteStreamSeekOrigin\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Specifies the origin for a seek request.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFBYTESTREAM_SEEK_ORIGIN']/*\"/>\t\n            <msdn-id>ms702091</msdn-id>\t\n            <unmanaged>MFBYTESTREAM_SEEK_ORIGIN</unmanaged>\t\n            <unmanaged-short>MFBYTESTREAM_SEEK_ORIGIN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ByteStreamSeekOrigin.MsoBegin\">\n            <summary>\t\n            <dd> <p>The seek position is specified relative to the start of the stream.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='msoBegin']/*\"/>\t\n            <msdn-id>ms702091</msdn-id>\t\n            <unmanaged>msoBegin</unmanaged>\t\n            <unmanaged-short>msoBegin</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ByteStreamSeekOrigin.MsoCurrent\">\n            <summary>\t\n            <dd> <p>The seek position is specified relative to the current read/write position in the stream.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='msoCurrent']/*\"/>\t\n            <msdn-id>ms702091</msdn-id>\t\n            <unmanaged>msoCurrent</unmanaged>\t\n            <unmanaged-short>msoCurrent</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.ClockCharacteristicsFlags\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Specifies how the credential manager should obtain user credentials. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The application implements the credential manager, which must expose the <strong><see cref=\"T:SharpDX.MediaFoundation.NetCredentialManager\"/></strong> interface. If the <strong><see cref=\"F:SharpDX.MediaFoundation.NetCredentialRequirements.RequirePrompt\"/></strong> flag is set, the credential manager should prompt the user for his or her name and password.</p><p>The credential cache object sets the <strong><see cref=\"F:SharpDX.MediaFoundation.NetCredentialRequirements.RequirePrompt\"/></strong> flag if the cache does not yet contain valid credentials. It also sets this flag if the credentials will be sent as plain text, unless the credential manager previously set the <strong><see cref=\"F:SharpDX.MediaFoundation.NetCredentialOptions.MfnetCredentialAllowClearText\"/></strong> option. (See <strong><see cref=\"M:SharpDX.MediaFoundation.NetCredentialCache.SetUserOptions(SharpDX.MediaFoundation.NetCredential,System.Int32)\"/></strong>.)</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCLOCK_CHARACTERISTICS_FLAGS']/*\"/>\t\n            <msdn-id>ms700813</msdn-id>\t\n            <unmanaged>MFCLOCK_CHARACTERISTICS_FLAGS</unmanaged>\t\n            <unmanaged-short>MFCLOCK_CHARACTERISTICS_FLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ClockCharacteristicsFlags.Frequency10mhz\">\n            <summary>\t\n            <dd> <p> The credential manager should prompt the user to provide the credentials. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCLOCK_CHARACTERISTICS_FLAG_FREQUENCY_10MHZ']/*\"/>\t\n            <msdn-id>ms700813</msdn-id>\t\n            <unmanaged>MFCLOCK_CHARACTERISTICS_FLAG_FREQUENCY_10MHZ</unmanaged>\t\n            <unmanaged-short>MFCLOCK_CHARACTERISTICS_FLAG_FREQUENCY_10MHZ</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ClockCharacteristicsFlags.AlwaysRunning\">\n            <summary>\t\n            <dd> <p> </p><p><strong>Note</strong>??Requires Windows?7 or later.</p> <p>The credentials are saved to persistent storage. This flag acts as a hint for the application's UI. If the application prompts the user for credentials, the UI can indicate that the credentials have already been saved.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCLOCK_CHARACTERISTICS_FLAG_ALWAYS_RUNNING']/*\"/>\t\n            <msdn-id>ms700813</msdn-id>\t\n            <unmanaged>MFCLOCK_CHARACTERISTICS_FLAG_ALWAYS_RUNNING</unmanaged>\t\n            <unmanaged-short>MFCLOCK_CHARACTERISTICS_FLAG_ALWAYS_RUNNING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ClockCharacteristicsFlags.IsSystemClock\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCLOCK_CHARACTERISTICS_FLAG_IS_SYSTEM_CLOCK']/*\"/>\t\n            <unmanaged>MFCLOCK_CHARACTERISTICS_FLAG_IS_SYSTEM_CLOCK</unmanaged>\t\n            <unmanaged-short>MFCLOCK_CHARACTERISTICS_FLAG_IS_SYSTEM_CLOCK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ClockCharacteristicsFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.ClockRelationalFlags\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Specifies how the credential manager should obtain user credentials. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The application implements the credential manager, which must expose the <strong><see cref=\"T:SharpDX.MediaFoundation.NetCredentialManager\"/></strong> interface. If the <strong><see cref=\"F:SharpDX.MediaFoundation.NetCredentialRequirements.RequirePrompt\"/></strong> flag is set, the credential manager should prompt the user for his or her name and password.</p><p>The credential cache object sets the <strong><see cref=\"F:SharpDX.MediaFoundation.NetCredentialRequirements.RequirePrompt\"/></strong> flag if the cache does not yet contain valid credentials. It also sets this flag if the credentials will be sent as plain text, unless the credential manager previously set the <strong><see cref=\"F:SharpDX.MediaFoundation.NetCredentialOptions.MfnetCredentialAllowClearText\"/></strong> option. (See <strong><see cref=\"M:SharpDX.MediaFoundation.NetCredentialCache.SetUserOptions(SharpDX.MediaFoundation.NetCredential,System.Int32)\"/></strong>.)</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCLOCK_RELATIONAL_FLAGS']/*\"/>\t\n            <msdn-id>ms700813</msdn-id>\t\n            <unmanaged>MFCLOCK_RELATIONAL_FLAGS</unmanaged>\t\n            <unmanaged-short>MFCLOCK_RELATIONAL_FLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ClockRelationalFlags.JitterNeverAhead\">\n            <summary>\t\n            <dd> <p> The credential manager should prompt the user to provide the credentials. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCLOCK_RELATIONAL_FLAG_JITTER_NEVER_AHEAD']/*\"/>\t\n            <msdn-id>ms700813</msdn-id>\t\n            <unmanaged>MFCLOCK_RELATIONAL_FLAG_JITTER_NEVER_AHEAD</unmanaged>\t\n            <unmanaged-short>MFCLOCK_RELATIONAL_FLAG_JITTER_NEVER_AHEAD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ClockRelationalFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.ClockState\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Specifies how the credential manager should obtain user credentials. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The application implements the credential manager, which must expose the <strong><see cref=\"T:SharpDX.MediaFoundation.NetCredentialManager\"/></strong> interface. If the <strong><see cref=\"F:SharpDX.MediaFoundation.NetCredentialRequirements.RequirePrompt\"/></strong> flag is set, the credential manager should prompt the user for his or her name and password.</p><p>The credential cache object sets the <strong><see cref=\"F:SharpDX.MediaFoundation.NetCredentialRequirements.RequirePrompt\"/></strong> flag if the cache does not yet contain valid credentials. It also sets this flag if the credentials will be sent as plain text, unless the credential manager previously set the <strong><see cref=\"F:SharpDX.MediaFoundation.NetCredentialOptions.MfnetCredentialAllowClearText\"/></strong> option. (See <strong><see cref=\"M:SharpDX.MediaFoundation.NetCredentialCache.SetUserOptions(SharpDX.MediaFoundation.NetCredential,System.Int32)\"/></strong>.)</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCLOCK_STATE']/*\"/>\t\n            <msdn-id>ms700813</msdn-id>\t\n            <unmanaged>MFCLOCK_STATE</unmanaged>\t\n            <unmanaged-short>MFCLOCK_STATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ClockState.Invalid\">\n            <summary>\t\n            <dd> <p> The credential manager should prompt the user to provide the credentials. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCLOCK_STATE_INVALID']/*\"/>\t\n            <msdn-id>ms700813</msdn-id>\t\n            <unmanaged>MFCLOCK_STATE_INVALID</unmanaged>\t\n            <unmanaged-short>MFCLOCK_STATE_INVALID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ClockState.Running\">\n            <summary>\t\n            <dd> <p> </p><p><strong>Note</strong>??Requires Windows?7 or later.</p> <p>The credentials are saved to persistent storage. This flag acts as a hint for the application's UI. If the application prompts the user for credentials, the UI can indicate that the credentials have already been saved.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCLOCK_STATE_RUNNING']/*\"/>\t\n            <msdn-id>ms700813</msdn-id>\t\n            <unmanaged>MFCLOCK_STATE_RUNNING</unmanaged>\t\n            <unmanaged-short>MFCLOCK_STATE_RUNNING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ClockState.Stopped\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCLOCK_STATE_STOPPED']/*\"/>\t\n            <unmanaged>MFCLOCK_STATE_STOPPED</unmanaged>\t\n            <unmanaged-short>MFCLOCK_STATE_STOPPED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ClockState.Paused\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCLOCK_STATE_PAUSED']/*\"/>\t\n            <unmanaged>MFCLOCK_STATE_PAUSED</unmanaged>\t\n            <unmanaged-short>MFCLOCK_STATE_PAUSED</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.ConnectMethod\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Specifies how the topology loader connects a topology node. This enumeration is used with the <strong><see cref=\"F:SharpDX.MediaFoundation.TopologyNodeAttributeKeys.ConnectMethod\"/></strong> attribute. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_CONNECT_METHOD']/*\"/>\t\n            <msdn-id>ms700178</msdn-id>\t\n            <unmanaged>MF_CONNECT_METHOD</unmanaged>\t\n            <unmanaged-short>MF_CONNECT_METHOD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ConnectMethod.Direct\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_CONNECT_DIRECT']/*\"/>\t\n            <unmanaged>MF_CONNECT_DIRECT</unmanaged>\t\n            <unmanaged-short>MF_CONNECT_DIRECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ConnectMethod.AllowConverter\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_CONNECT_ALLOW_CONVERTER']/*\"/>\t\n            <unmanaged>MF_CONNECT_ALLOW_CONVERTER</unmanaged>\t\n            <unmanaged-short>MF_CONNECT_ALLOW_CONVERTER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ConnectMethod.AllowDecoder\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_CONNECT_ALLOW_DECODER']/*\"/>\t\n            <unmanaged>MF_CONNECT_ALLOW_DECODER</unmanaged>\t\n            <unmanaged-short>MF_CONNECT_ALLOW_DECODER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ConnectMethod.ResolveIndependentOutputTypes\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_CONNECT_RESOLVE_INDEPENDENT_OUTPUTTYPES']/*\"/>\t\n            <unmanaged>MF_CONNECT_RESOLVE_INDEPENDENT_OUTPUTTYPES</unmanaged>\t\n            <unmanaged-short>MF_CONNECT_RESOLVE_INDEPENDENT_OUTPUTTYPES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ConnectMethod.AsOptional\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_CONNECT_AS_OPTIONAL']/*\"/>\t\n            <unmanaged>MF_CONNECT_AS_OPTIONAL</unmanaged>\t\n            <unmanaged-short>MF_CONNECT_AS_OPTIONAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ConnectMethod.AsOptionalBranch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_CONNECT_AS_OPTIONAL_BRANCH']/*\"/>\t\n            <unmanaged>MF_CONNECT_AS_OPTIONAL_BRANCH</unmanaged>\t\n            <unmanaged-short>MF_CONNECT_AS_OPTIONAL_BRANCH</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DmoInplaceProcessFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='_DMO_INPLACE_PROCESS_FLAGS']/*\"/>\t\n            <unmanaged>_DMO_INPLACE_PROCESS_FLAGS</unmanaged>\t\n            <unmanaged-short>_DMO_INPLACE_PROCESS_FLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DmoInplaceProcessFlags.DmoInplaceNormal\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DMO_INPLACE_NORMAL']/*\"/>\t\n            <unmanaged>DMO_INPLACE_NORMAL</unmanaged>\t\n            <unmanaged-short>DMO_INPLACE_NORMAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DmoInplaceProcessFlags.DmoInplaceZero\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DMO_INPLACE_ZERO']/*\"/>\t\n            <unmanaged>DMO_INPLACE_ZERO</unmanaged>\t\n            <unmanaged-short>DMO_INPLACE_ZERO</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DmoInplaceProcessFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DmoInputDataBufferFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='_DMO_INPUT_DATA_BUFFER_FLAGS']/*\"/>\t\n            <unmanaged>_DMO_INPUT_DATA_BUFFER_FLAGS</unmanaged>\t\n            <unmanaged-short>_DMO_INPUT_DATA_BUFFER_FLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DmoInputDataBufferFlags.DmoInputDataBufferFSyncpoint\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DMO_INPUT_DATA_BUFFERF_SYNCPOINT']/*\"/>\t\n            <unmanaged>DMO_INPUT_DATA_BUFFERF_SYNCPOINT</unmanaged>\t\n            <unmanaged-short>DMO_INPUT_DATA_BUFFERF_SYNCPOINT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DmoInputDataBufferFlags.DmoInputDataBufferFTime\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DMO_INPUT_DATA_BUFFERF_TIME']/*\"/>\t\n            <unmanaged>DMO_INPUT_DATA_BUFFERF_TIME</unmanaged>\t\n            <unmanaged-short>DMO_INPUT_DATA_BUFFERF_TIME</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DmoInputDataBufferFlags.DmoInputDataBufferFTimelength\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DMO_INPUT_DATA_BUFFERF_TIMELENGTH']/*\"/>\t\n            <unmanaged>DMO_INPUT_DATA_BUFFERF_TIMELENGTH</unmanaged>\t\n            <unmanaged-short>DMO_INPUT_DATA_BUFFERF_TIMELENGTH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DmoInputDataBufferFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DmoInputStatusFlags\">\n            <summary>\t\n            <p>Media Foundation transforms (MFTs) are an evolution of the transform model first introduced with DirectX Media Objects (DMOs). This topic summarizes the main ways in which MFTs differ from DMOs. Read this topic if you are already familiar with the DMO interfaces, or if you want to convert an existing DMO into an MFT.</p><p>This topic contains the following sections:</p><p> </p><ul> <li>Number</li> <li>Format</li> <li>Streaming<ul> <li>Allocating Resources</li> <li>Processing Data</li> <li>Flushing</li> <li>Stream Discontinuities</li> </ul> </li> <li>Miscellaneous</li> <li>Flags<ul> <li>ProcessInput Flags</li> <li>ProcessOutput Flags</li> <li>GetInputStatus Flags</li> <li>GetOutputStatus Flags</li> <li>GetInputStreamInfo Flags</li> <li>GetOutputStreamInfo Flags</li> <li>SetInputType/SetOutputType Flags</li> </ul> </li> <li>Error</li> <li>Creating</li> <li>Related</li> </ul>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='_DMO_INPUT_STATUS_FLAGS']/*\"/>\t\n            <msdn-id>bb250374</msdn-id>\t\n            <unmanaged>_DMO_INPUT_STATUS_FLAGS</unmanaged>\t\n            <unmanaged-short>_DMO_INPUT_STATUS_FLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DmoInputStatusFlags.DmoInputStatusfAcceptData\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DMO_INPUT_STATUSF_ACCEPT_DATA']/*\"/>\t\n            <unmanaged>DMO_INPUT_STATUSF_ACCEPT_DATA</unmanaged>\t\n            <unmanaged-short>DMO_INPUT_STATUSF_ACCEPT_DATA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DmoInputStatusFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DmoInputStreamInformationFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='_DMO_INPUT_STREAM_INFO_FLAGS']/*\"/>\t\n            <unmanaged>_DMO_INPUT_STREAM_INFO_FLAGS</unmanaged>\t\n            <unmanaged-short>_DMO_INPUT_STREAM_INFO_FLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DmoInputStreamInformationFlags.DmoInputStreamFWholeSamples\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DMO_INPUT_STREAMF_WHOLE_SAMPLES']/*\"/>\t\n            <unmanaged>DMO_INPUT_STREAMF_WHOLE_SAMPLES</unmanaged>\t\n            <unmanaged-short>DMO_INPUT_STREAMF_WHOLE_SAMPLES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DmoInputStreamInformationFlags.DmoInputStreamFSingleSamplePerBuffer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DMO_INPUT_STREAMF_SINGLE_SAMPLE_PER_BUFFER']/*\"/>\t\n            <unmanaged>DMO_INPUT_STREAMF_SINGLE_SAMPLE_PER_BUFFER</unmanaged>\t\n            <unmanaged-short>DMO_INPUT_STREAMF_SINGLE_SAMPLE_PER_BUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DmoInputStreamInformationFlags.DmoInputStreamFFixedSampleSize\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DMO_INPUT_STREAMF_FIXED_SAMPLE_SIZE']/*\"/>\t\n            <unmanaged>DMO_INPUT_STREAMF_FIXED_SAMPLE_SIZE</unmanaged>\t\n            <unmanaged-short>DMO_INPUT_STREAMF_FIXED_SAMPLE_SIZE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DmoInputStreamInformationFlags.DmoInputStreamFHoldsBuffers\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DMO_INPUT_STREAMF_HOLDS_BUFFERS']/*\"/>\t\n            <unmanaged>DMO_INPUT_STREAMF_HOLDS_BUFFERS</unmanaged>\t\n            <unmanaged-short>DMO_INPUT_STREAMF_HOLDS_BUFFERS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DmoInputStreamInformationFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DmoOutputDataBufferFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='_DMO_OUTPUT_DATA_BUFFER_FLAGS']/*\"/>\t\n            <unmanaged>_DMO_OUTPUT_DATA_BUFFER_FLAGS</unmanaged>\t\n            <unmanaged-short>_DMO_OUTPUT_DATA_BUFFER_FLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DmoOutputDataBufferFlags.DmoOutputDataBufferFSyncpoint\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DMO_OUTPUT_DATA_BUFFERF_SYNCPOINT']/*\"/>\t\n            <unmanaged>DMO_OUTPUT_DATA_BUFFERF_SYNCPOINT</unmanaged>\t\n            <unmanaged-short>DMO_OUTPUT_DATA_BUFFERF_SYNCPOINT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DmoOutputDataBufferFlags.DmoOutputDataBufferFTime\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DMO_OUTPUT_DATA_BUFFERF_TIME']/*\"/>\t\n            <unmanaged>DMO_OUTPUT_DATA_BUFFERF_TIME</unmanaged>\t\n            <unmanaged-short>DMO_OUTPUT_DATA_BUFFERF_TIME</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DmoOutputDataBufferFlags.DmoOutputDataBufferFTimelength\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DMO_OUTPUT_DATA_BUFFERF_TIMELENGTH']/*\"/>\t\n            <unmanaged>DMO_OUTPUT_DATA_BUFFERF_TIMELENGTH</unmanaged>\t\n            <unmanaged-short>DMO_OUTPUT_DATA_BUFFERF_TIMELENGTH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DmoOutputDataBufferFlags.DmoOutputDataBufferFIncomplete\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DMO_OUTPUT_DATA_BUFFERF_INCOMPLETE']/*\"/>\t\n            <unmanaged>DMO_OUTPUT_DATA_BUFFERF_INCOMPLETE</unmanaged>\t\n            <unmanaged-short>DMO_OUTPUT_DATA_BUFFERF_INCOMPLETE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DmoOutputDataBufferFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DmoOutputStreamInformationFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='_DMO_OUTPUT_STREAM_INFO_FLAGS']/*\"/>\t\n            <unmanaged>_DMO_OUTPUT_STREAM_INFO_FLAGS</unmanaged>\t\n            <unmanaged-short>_DMO_OUTPUT_STREAM_INFO_FLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DmoOutputStreamInformationFlags.DmoOutputStreamFWholeSamples\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DMO_OUTPUT_STREAMF_WHOLE_SAMPLES']/*\"/>\t\n            <unmanaged>DMO_OUTPUT_STREAMF_WHOLE_SAMPLES</unmanaged>\t\n            <unmanaged-short>DMO_OUTPUT_STREAMF_WHOLE_SAMPLES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DmoOutputStreamInformationFlags.DmoOutputStreamFSingleSamplePerBuffer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DMO_OUTPUT_STREAMF_SINGLE_SAMPLE_PER_BUFFER']/*\"/>\t\n            <unmanaged>DMO_OUTPUT_STREAMF_SINGLE_SAMPLE_PER_BUFFER</unmanaged>\t\n            <unmanaged-short>DMO_OUTPUT_STREAMF_SINGLE_SAMPLE_PER_BUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DmoOutputStreamInformationFlags.DmoOutputStreamFFixedSampleSize\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DMO_OUTPUT_STREAMF_FIXED_SAMPLE_SIZE']/*\"/>\t\n            <unmanaged>DMO_OUTPUT_STREAMF_FIXED_SAMPLE_SIZE</unmanaged>\t\n            <unmanaged-short>DMO_OUTPUT_STREAMF_FIXED_SAMPLE_SIZE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DmoOutputStreamInformationFlags.DmoOutputStreamFDiscardable\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DMO_OUTPUT_STREAMF_DISCARDABLE']/*\"/>\t\n            <unmanaged>DMO_OUTPUT_STREAMF_DISCARDABLE</unmanaged>\t\n            <unmanaged-short>DMO_OUTPUT_STREAMF_DISCARDABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DmoOutputStreamInformationFlags.DmoOutputStreamFOptional\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DMO_OUTPUT_STREAMF_OPTIONAL']/*\"/>\t\n            <unmanaged>DMO_OUTPUT_STREAMF_OPTIONAL</unmanaged>\t\n            <unmanaged-short>DMO_OUTPUT_STREAMF_OPTIONAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DmoOutputStreamInformationFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DmoProcessOutputFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='_DMO_PROCESS_OUTPUT_FLAGS']/*\"/>\t\n            <unmanaged>_DMO_PROCESS_OUTPUT_FLAGS</unmanaged>\t\n            <unmanaged-short>_DMO_PROCESS_OUTPUT_FLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DmoProcessOutputFlags.DmoProcessOutputDiscardWhenNoBuffer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DMO_PROCESS_OUTPUT_DISCARD_WHEN_NO_BUFFER']/*\"/>\t\n            <unmanaged>DMO_PROCESS_OUTPUT_DISCARD_WHEN_NO_BUFFER</unmanaged>\t\n            <unmanaged-short>DMO_PROCESS_OUTPUT_DISCARD_WHEN_NO_BUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DmoProcessOutputFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DmoQualityStatusFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='_DMO_QUALITY_STATUS_FLAGS']/*\"/>\t\n            <unmanaged>_DMO_QUALITY_STATUS_FLAGS</unmanaged>\t\n            <unmanaged-short>_DMO_QUALITY_STATUS_FLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DmoQualityStatusFlags.DmoQualityStatusEnabled\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DMO_QUALITY_STATUS_ENABLED']/*\"/>\t\n            <unmanaged>DMO_QUALITY_STATUS_ENABLED</unmanaged>\t\n            <unmanaged-short>DMO_QUALITY_STATUS_ENABLED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DmoQualityStatusFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DmoSetTypeFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='_DMO_SET_TYPE_FLAGS']/*\"/>\t\n            <unmanaged>_DMO_SET_TYPE_FLAGS</unmanaged>\t\n            <unmanaged-short>_DMO_SET_TYPE_FLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DmoSetTypeFlags.DmoSetTypefTestOnly\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DMO_SET_TYPEF_TEST_ONLY']/*\"/>\t\n            <unmanaged>DMO_SET_TYPEF_TEST_ONLY</unmanaged>\t\n            <unmanaged-short>DMO_SET_TYPEF_TEST_ONLY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DmoSetTypeFlags.DmoSetTypefClear\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DMO_SET_TYPEF_CLEAR']/*\"/>\t\n            <unmanaged>DMO_SET_TYPEF_CLEAR</unmanaged>\t\n            <unmanaged-short>DMO_SET_TYPEF_CLEAR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DmoSetTypeFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DmoVideoOutputStreamFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='_DMO_VIDEO_OUTPUT_STREAM_FLAGS']/*\"/>\t\n            <unmanaged>_DMO_VIDEO_OUTPUT_STREAM_FLAGS</unmanaged>\t\n            <unmanaged-short>_DMO_VIDEO_OUTPUT_STREAM_FLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DmoVideoOutputStreamFlags.DmoVosfNeedsPreviousSample\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DMO_VOSF_NEEDS_PREVIOUS_SAMPLE']/*\"/>\t\n            <unmanaged>DMO_VOSF_NEEDS_PREVIOUS_SAMPLE</unmanaged>\t\n            <unmanaged-short>DMO_VOSF_NEEDS_PREVIOUS_SAMPLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DmoVideoOutputStreamFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.EAllocationType\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='EAllocationType']/*\"/>\t\n            <unmanaged>EAllocationType</unmanaged>\t\n            <unmanaged-short>EAllocationType</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.EAllocationType.EAllocationTypeDynamic\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='eAllocationTypeDynamic']/*\"/>\t\n            <unmanaged>eAllocationTypeDynamic</unmanaged>\t\n            <unmanaged-short>eAllocationTypeDynamic</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.EAllocationType.EAllocationTypeRT\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='eAllocationTypeRT']/*\"/>\t\n            <unmanaged>eAllocationTypeRT</unmanaged>\t\n            <unmanaged-short>eAllocationTypeRT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.EAllocationType.EAllocationTypePageable\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='eAllocationTypePageable']/*\"/>\t\n            <unmanaged>eAllocationTypePageable</unmanaged>\t\n            <unmanaged-short>eAllocationTypePageable</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.EAllocationType.EAllocationTypeIgnore\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='eAllocationTypeIgnore']/*\"/>\t\n            <unmanaged>eAllocationTypeIgnore</unmanaged>\t\n            <unmanaged-short>eAllocationTypeIgnore</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.EVRFilterConfigPrefs\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Contains flags that are used to configure the Microsoft DirectShow enhanced video renderer (EVR) filter.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='EVRFilterConfigPrefs']/*\"/>\t\n            <msdn-id>dd318789</msdn-id>\t\n            <unmanaged>EVRFilterConfigPrefs</unmanaged>\t\n            <unmanaged-short>EVRFilterConfigPrefs</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.EVRFilterConfigPrefs.EnableQoS\">\n            <summary>\t\n            <dd> <p>Enables dynamic adjustments to video quality during playback.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='EVRFilterConfigPrefs_EnableQoS']/*\"/>\t\n            <msdn-id>dd318789</msdn-id>\t\n            <unmanaged>EVRFilterConfigPrefs_EnableQoS</unmanaged>\t\n            <unmanaged-short>EVRFilterConfigPrefs_EnableQoS</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.FileAccessMode\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Specifies the requested access mode for opening a file.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_FILE_ACCESSMODE']/*\"/>\t\n            <msdn-id>ms696239</msdn-id>\t\n            <unmanaged>MF_FILE_ACCESSMODE</unmanaged>\t\n            <unmanaged-short>MF_FILE_ACCESSMODE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.FileAccessMode.MfAccessModeRead\">\n            <summary>\t\n            <dd> <p>Read mode.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_ACCESSMODE_READ']/*\"/>\t\n            <msdn-id>ms696239</msdn-id>\t\n            <unmanaged>MF_ACCESSMODE_READ</unmanaged>\t\n            <unmanaged-short>MF_ACCESSMODE_READ</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.FileAccessMode.MfAccessModeWrite\">\n            <summary>\t\n            <dd> <p>Write mode.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_ACCESSMODE_WRITE']/*\"/>\t\n            <msdn-id>ms696239</msdn-id>\t\n            <unmanaged>MF_ACCESSMODE_WRITE</unmanaged>\t\n            <unmanaged-short>MF_ACCESSMODE_WRITE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.FileAccessMode.MfAccessModeReadwrite\">\n            <summary>\t\n            <dd> <p>Read and write mode.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_ACCESSMODE_READWRITE']/*\"/>\t\n            <msdn-id>ms696239</msdn-id>\t\n            <unmanaged>MF_ACCESSMODE_READWRITE</unmanaged>\t\n            <unmanaged-short>MF_ACCESSMODE_READWRITE</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.FileFlags\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Specifies the behavior when opening a file. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_FILE_FLAGS']/*\"/>\t\n            <msdn-id>ms694926</msdn-id>\t\n            <unmanaged>MF_FILE_FLAGS</unmanaged>\t\n            <unmanaged-short>MF_FILE_FLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.FileFlags.FlagsNone\">\n            <summary>\t\n            <dd> <p> Use the default behavior. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_FILEFLAGS_NONE']/*\"/>\t\n            <msdn-id>ms694926</msdn-id>\t\n            <unmanaged>MF_FILEFLAGS_NONE</unmanaged>\t\n            <unmanaged-short>MF_FILEFLAGS_NONE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.FileFlags.FlagsNobuffering\">\n            <summary>\t\n            <dd> <p> Open the file with no system caching. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_FILEFLAGS_NOBUFFERING']/*\"/>\t\n            <msdn-id>ms694926</msdn-id>\t\n            <unmanaged>MF_FILEFLAGS_NOBUFFERING</unmanaged>\t\n            <unmanaged-short>MF_FILEFLAGS_NOBUFFERING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.FileFlags.FlagsAllowWriteSharing\">\n            <summary>\t\n            <dd> <p>Subsequent open operations can have write access to the file. </p> <p><strong>Note</strong>??Requires Windows?7 or later.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_FILEFLAGS_ALLOW_WRITE_SHARING']/*\"/>\t\n            <msdn-id>ms694926</msdn-id>\t\n            <unmanaged>MF_FILEFLAGS_ALLOW_WRITE_SHARING</unmanaged>\t\n            <unmanaged-short>MF_FILEFLAGS_ALLOW_WRITE_SHARING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.FileFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.FileOpenMode\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Creates a byte stream that is backed by a temporary local file. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p> This function creates a file in the system temporary folder, and then returns a byte stream object for that file. The full path name of the file is storted in the <strong><see cref=\"F:SharpDX.MediaFoundation.ByteStreamAttributeKeys.OriginName\"/></strong> attribute. The file is created with the <strong>FILE_FLAG_DELETE_ON_CLOSE</strong> flag, and is deleted after the byte stream is released.</p><p>This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_FILE_OPENMODE']/*\"/>\t\n            <msdn-id>ms695209</msdn-id>\t\n            <unmanaged>MF_FILE_OPENMODE</unmanaged>\t\n            <unmanaged-short>MF_FILE_OPENMODE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.FileOpenMode.MfOpenModeFailIfNotExist\">\n            <summary>\t\n            <dd> <p> The requested access mode, specified as a member of the <strong><see cref=\"T:SharpDX.MediaFoundation.FileAccessMode\"/></strong> enumeration. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_OPENMODE_FAIL_IF_NOT_EXIST']/*\"/>\t\n            <msdn-id>ms695209</msdn-id>\t\n            <unmanaged>MF_OPENMODE_FAIL_IF_NOT_EXIST</unmanaged>\t\n            <unmanaged-short>MF_OPENMODE_FAIL_IF_NOT_EXIST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.FileOpenMode.MfOpenModeFailIfExist\">\n            <summary>\t\n            <dd> <p> The behavior of the function if the file already exists or does not exist, specified as a member of the <strong><see cref=\"T:SharpDX.MediaFoundation.FileOpenMode\"/></strong> enumeration. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_OPENMODE_FAIL_IF_EXIST']/*\"/>\t\n            <msdn-id>ms695209</msdn-id>\t\n            <unmanaged>MF_OPENMODE_FAIL_IF_EXIST</unmanaged>\t\n            <unmanaged-short>MF_OPENMODE_FAIL_IF_EXIST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.FileOpenMode.MfOpenModeResetIfExist\">\n            <summary>\t\n            <dd> <p> Bitwise <strong>OR</strong> of values from the <strong><see cref=\"T:SharpDX.MediaFoundation.FileFlags\"/></strong> enumeration. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_OPENMODE_RESET_IF_EXIST']/*\"/>\t\n            <msdn-id>ms695209</msdn-id>\t\n            <unmanaged>MF_OPENMODE_RESET_IF_EXIST</unmanaged>\t\n            <unmanaged-short>MF_OPENMODE_RESET_IF_EXIST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.FileOpenMode.MfOpenModeAppendIfExist\">\n            <summary>\t\n            <dd> <p> Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.IByteStream\"/></strong> interface of the byte stream. The caller must release the interface. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_OPENMODE_APPEND_IF_EXIST']/*\"/>\t\n            <msdn-id>ms695209</msdn-id>\t\n            <unmanaged>MF_OPENMODE_APPEND_IF_EXIST</unmanaged>\t\n            <unmanaged-short>MF_OPENMODE_APPEND_IF_EXIST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.FileOpenMode.MfOpenModeDeleteIfExist\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_OPENMODE_DELETE_IF_EXIST']/*\"/>\t\n            <unmanaged>MF_OPENMODE_DELETE_IF_EXIST</unmanaged>\t\n            <unmanaged-short>MF_OPENMODE_DELETE_IF_EXIST</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.MediaEventTypes\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='__MIDL___MIDL_itf_mfobjects_0000_0009_0001']/*\"/>\t\n            <unmanaged>__MIDL___MIDL_itf_mfobjects_0000_0009_0001</unmanaged>\t\n            <unmanaged-short>__MIDL___MIDL_itf_mfobjects_0000_0009_0001</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.Unknown\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MEUnknown']/*\"/>\t\n            <unmanaged>MEUnknown</unmanaged>\t\n            <unmanaged-short>MEUnknown</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.Error\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MEError']/*\"/>\t\n            <unmanaged>MEError</unmanaged>\t\n            <unmanaged-short>MEError</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.ExtendedType\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MEExtendedType']/*\"/>\t\n            <unmanaged>MEExtendedType</unmanaged>\t\n            <unmanaged-short>MEExtendedType</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.NonFatalError\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MENonFatalError']/*\"/>\t\n            <unmanaged>MENonFatalError</unmanaged>\t\n            <unmanaged-short>MENonFatalError</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.GenericV1Anchor\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MEGenericV1Anchor']/*\"/>\t\n            <unmanaged>MEGenericV1Anchor</unmanaged>\t\n            <unmanaged-short>MEGenericV1Anchor</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.SessionUnknown\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MESessionUnknown']/*\"/>\t\n            <unmanaged>MESessionUnknown</unmanaged>\t\n            <unmanaged-short>MESessionUnknown</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.SessionTopologySet\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MESessionTopologySet']/*\"/>\t\n            <unmanaged>MESessionTopologySet</unmanaged>\t\n            <unmanaged-short>MESessionTopologySet</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.SessionTopologiesCleared\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MESessionTopologiesCleared']/*\"/>\t\n            <unmanaged>MESessionTopologiesCleared</unmanaged>\t\n            <unmanaged-short>MESessionTopologiesCleared</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.SessionStarted\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MESessionStarted']/*\"/>\t\n            <unmanaged>MESessionStarted</unmanaged>\t\n            <unmanaged-short>MESessionStarted</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.SessionPaused\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MESessionPaused']/*\"/>\t\n            <unmanaged>MESessionPaused</unmanaged>\t\n            <unmanaged-short>MESessionPaused</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.SessionStopped\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MESessionStopped']/*\"/>\t\n            <unmanaged>MESessionStopped</unmanaged>\t\n            <unmanaged-short>MESessionStopped</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.SessionClosed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MESessionClosed']/*\"/>\t\n            <unmanaged>MESessionClosed</unmanaged>\t\n            <unmanaged-short>MESessionClosed</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.SessionEnded\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MESessionEnded']/*\"/>\t\n            <unmanaged>MESessionEnded</unmanaged>\t\n            <unmanaged-short>MESessionEnded</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.SessionRateChanged\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MESessionRateChanged']/*\"/>\t\n            <unmanaged>MESessionRateChanged</unmanaged>\t\n            <unmanaged-short>MESessionRateChanged</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.SessionScrubSampleComplete\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MESessionScrubSampleComplete']/*\"/>\t\n            <unmanaged>MESessionScrubSampleComplete</unmanaged>\t\n            <unmanaged-short>MESessionScrubSampleComplete</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.SessionCapabilitiesChanged\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MESessionCapabilitiesChanged']/*\"/>\t\n            <unmanaged>MESessionCapabilitiesChanged</unmanaged>\t\n            <unmanaged-short>MESessionCapabilitiesChanged</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.SessionTopologyStatus\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MESessionTopologyStatus']/*\"/>\t\n            <unmanaged>MESessionTopologyStatus</unmanaged>\t\n            <unmanaged-short>MESessionTopologyStatus</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.SessionNotifyPresentationTime\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MESessionNotifyPresentationTime']/*\"/>\t\n            <unmanaged>MESessionNotifyPresentationTime</unmanaged>\t\n            <unmanaged-short>MESessionNotifyPresentationTime</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.NewPresentation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MENewPresentation']/*\"/>\t\n            <unmanaged>MENewPresentation</unmanaged>\t\n            <unmanaged-short>MENewPresentation</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.LicenseAcquisitionStart\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MELicenseAcquisitionStart']/*\"/>\t\n            <unmanaged>MELicenseAcquisitionStart</unmanaged>\t\n            <unmanaged-short>MELicenseAcquisitionStart</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.LicenseAcquisitionCompleted\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MELicenseAcquisitionCompleted']/*\"/>\t\n            <unmanaged>MELicenseAcquisitionCompleted</unmanaged>\t\n            <unmanaged-short>MELicenseAcquisitionCompleted</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.IndividualizationStart\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MEIndividualizationStart']/*\"/>\t\n            <unmanaged>MEIndividualizationStart</unmanaged>\t\n            <unmanaged-short>MEIndividualizationStart</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.IndividualizationCompleted\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MEIndividualizationCompleted']/*\"/>\t\n            <unmanaged>MEIndividualizationCompleted</unmanaged>\t\n            <unmanaged-short>MEIndividualizationCompleted</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.EnablerProgress\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MEEnablerProgress']/*\"/>\t\n            <unmanaged>MEEnablerProgress</unmanaged>\t\n            <unmanaged-short>MEEnablerProgress</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.EnablerCompleted\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MEEnablerCompleted']/*\"/>\t\n            <unmanaged>MEEnablerCompleted</unmanaged>\t\n            <unmanaged-short>MEEnablerCompleted</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.PolicyError\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MEPolicyError']/*\"/>\t\n            <unmanaged>MEPolicyError</unmanaged>\t\n            <unmanaged-short>MEPolicyError</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.PolicyReport\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MEPolicyReport']/*\"/>\t\n            <unmanaged>MEPolicyReport</unmanaged>\t\n            <unmanaged-short>MEPolicyReport</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.BufferingStarted\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MEBufferingStarted']/*\"/>\t\n            <unmanaged>MEBufferingStarted</unmanaged>\t\n            <unmanaged-short>MEBufferingStarted</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.BufferingStopped\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MEBufferingStopped']/*\"/>\t\n            <unmanaged>MEBufferingStopped</unmanaged>\t\n            <unmanaged-short>MEBufferingStopped</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.ConnectStart\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MEConnectStart']/*\"/>\t\n            <unmanaged>MEConnectStart</unmanaged>\t\n            <unmanaged-short>MEConnectStart</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.ConnectEnd\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MEConnectEnd']/*\"/>\t\n            <unmanaged>MEConnectEnd</unmanaged>\t\n            <unmanaged-short>MEConnectEnd</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.ReconnectStart\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MEReconnectStart']/*\"/>\t\n            <unmanaged>MEReconnectStart</unmanaged>\t\n            <unmanaged-short>MEReconnectStart</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.ReconnectEnd\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MEReconnectEnd']/*\"/>\t\n            <unmanaged>MEReconnectEnd</unmanaged>\t\n            <unmanaged-short>MEReconnectEnd</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.RendererEvent\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MERendererEvent']/*\"/>\t\n            <unmanaged>MERendererEvent</unmanaged>\t\n            <unmanaged-short>MERendererEvent</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.SessionStreamSinkFormatChanged\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MESessionStreamSinkFormatChanged']/*\"/>\t\n            <unmanaged>MESessionStreamSinkFormatChanged</unmanaged>\t\n            <unmanaged-short>MESessionStreamSinkFormatChanged</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.SessionV1Anchor\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MESessionV1Anchor']/*\"/>\t\n            <unmanaged>MESessionV1Anchor</unmanaged>\t\n            <unmanaged-short>MESessionV1Anchor</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.SourceUnknown\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MESourceUnknown']/*\"/>\t\n            <unmanaged>MESourceUnknown</unmanaged>\t\n            <unmanaged-short>MESourceUnknown</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.SourceStarted\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MESourceStarted']/*\"/>\t\n            <unmanaged>MESourceStarted</unmanaged>\t\n            <unmanaged-short>MESourceStarted</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.StreamStarted\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MEStreamStarted']/*\"/>\t\n            <unmanaged>MEStreamStarted</unmanaged>\t\n            <unmanaged-short>MEStreamStarted</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.SourceSeeked\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MESourceSeeked']/*\"/>\t\n            <unmanaged>MESourceSeeked</unmanaged>\t\n            <unmanaged-short>MESourceSeeked</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.StreamSeeked\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MEStreamSeeked']/*\"/>\t\n            <unmanaged>MEStreamSeeked</unmanaged>\t\n            <unmanaged-short>MEStreamSeeked</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.NewStream\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MENewStream']/*\"/>\t\n            <unmanaged>MENewStream</unmanaged>\t\n            <unmanaged-short>MENewStream</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.UpdatedStream\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MEUpdatedStream']/*\"/>\t\n            <unmanaged>MEUpdatedStream</unmanaged>\t\n            <unmanaged-short>MEUpdatedStream</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.SourceStopped\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MESourceStopped']/*\"/>\t\n            <unmanaged>MESourceStopped</unmanaged>\t\n            <unmanaged-short>MESourceStopped</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.StreamStopped\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MEStreamStopped']/*\"/>\t\n            <unmanaged>MEStreamStopped</unmanaged>\t\n            <unmanaged-short>MEStreamStopped</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.SourcePaused\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MESourcePaused']/*\"/>\t\n            <unmanaged>MESourcePaused</unmanaged>\t\n            <unmanaged-short>MESourcePaused</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.StreamPaused\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MEStreamPaused']/*\"/>\t\n            <unmanaged>MEStreamPaused</unmanaged>\t\n            <unmanaged-short>MEStreamPaused</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.EndOfPresentation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MEEndOfPresentation']/*\"/>\t\n            <unmanaged>MEEndOfPresentation</unmanaged>\t\n            <unmanaged-short>MEEndOfPresentation</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.EndOfStream\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MEEndOfStream']/*\"/>\t\n            <unmanaged>MEEndOfStream</unmanaged>\t\n            <unmanaged-short>MEEndOfStream</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.MediaSample\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MEMediaSample']/*\"/>\t\n            <unmanaged>MEMediaSample</unmanaged>\t\n            <unmanaged-short>MEMediaSample</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.StreamTick\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MEStreamTick']/*\"/>\t\n            <unmanaged>MEStreamTick</unmanaged>\t\n            <unmanaged-short>MEStreamTick</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.StreamThinMode\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MEStreamThinMode']/*\"/>\t\n            <unmanaged>MEStreamThinMode</unmanaged>\t\n            <unmanaged-short>MEStreamThinMode</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.StreamFormatChanged\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MEStreamFormatChanged']/*\"/>\t\n            <unmanaged>MEStreamFormatChanged</unmanaged>\t\n            <unmanaged-short>MEStreamFormatChanged</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.SourceRateChanged\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MESourceRateChanged']/*\"/>\t\n            <unmanaged>MESourceRateChanged</unmanaged>\t\n            <unmanaged-short>MESourceRateChanged</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.EndOfPresentationSegment\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MEEndOfPresentationSegment']/*\"/>\t\n            <unmanaged>MEEndOfPresentationSegment</unmanaged>\t\n            <unmanaged-short>MEEndOfPresentationSegment</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.SourceCharacteristicsChanged\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MESourceCharacteristicsChanged']/*\"/>\t\n            <unmanaged>MESourceCharacteristicsChanged</unmanaged>\t\n            <unmanaged-short>MESourceCharacteristicsChanged</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.SourceRateChangeRequested\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MESourceRateChangeRequested']/*\"/>\t\n            <unmanaged>MESourceRateChangeRequested</unmanaged>\t\n            <unmanaged-short>MESourceRateChangeRequested</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.SourceMetadataChanged\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MESourceMetadataChanged']/*\"/>\t\n            <unmanaged>MESourceMetadataChanged</unmanaged>\t\n            <unmanaged-short>MESourceMetadataChanged</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.SequencerSourceTopologyUpdated\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MESequencerSourceTopologyUpdated']/*\"/>\t\n            <unmanaged>MESequencerSourceTopologyUpdated</unmanaged>\t\n            <unmanaged-short>MESequencerSourceTopologyUpdated</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.SourceV1Anchor\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MESourceV1Anchor']/*\"/>\t\n            <unmanaged>MESourceV1Anchor</unmanaged>\t\n            <unmanaged-short>MESourceV1Anchor</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.SinkUnknown\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MESinkUnknown']/*\"/>\t\n            <unmanaged>MESinkUnknown</unmanaged>\t\n            <unmanaged-short>MESinkUnknown</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.StreamSinkStarted\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MEStreamSinkStarted']/*\"/>\t\n            <unmanaged>MEStreamSinkStarted</unmanaged>\t\n            <unmanaged-short>MEStreamSinkStarted</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.StreamSinkStopped\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MEStreamSinkStopped']/*\"/>\t\n            <unmanaged>MEStreamSinkStopped</unmanaged>\t\n            <unmanaged-short>MEStreamSinkStopped</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.StreamSinkPaused\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MEStreamSinkPaused']/*\"/>\t\n            <unmanaged>MEStreamSinkPaused</unmanaged>\t\n            <unmanaged-short>MEStreamSinkPaused</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.StreamSinkRateChanged\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MEStreamSinkRateChanged']/*\"/>\t\n            <unmanaged>MEStreamSinkRateChanged</unmanaged>\t\n            <unmanaged-short>MEStreamSinkRateChanged</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.StreamSinkRequestSample\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MEStreamSinkRequestSample']/*\"/>\t\n            <unmanaged>MEStreamSinkRequestSample</unmanaged>\t\n            <unmanaged-short>MEStreamSinkRequestSample</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.StreamSinkMarker\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MEStreamSinkMarker']/*\"/>\t\n            <unmanaged>MEStreamSinkMarker</unmanaged>\t\n            <unmanaged-short>MEStreamSinkMarker</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.StreamSinkPrerolled\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MEStreamSinkPrerolled']/*\"/>\t\n            <unmanaged>MEStreamSinkPrerolled</unmanaged>\t\n            <unmanaged-short>MEStreamSinkPrerolled</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.StreamSinkScrubSampleComplete\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MEStreamSinkScrubSampleComplete']/*\"/>\t\n            <unmanaged>MEStreamSinkScrubSampleComplete</unmanaged>\t\n            <unmanaged-short>MEStreamSinkScrubSampleComplete</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.StreamSinkFormatChanged\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MEStreamSinkFormatChanged']/*\"/>\t\n            <unmanaged>MEStreamSinkFormatChanged</unmanaged>\t\n            <unmanaged-short>MEStreamSinkFormatChanged</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.StreamSinkDeviceChanged\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MEStreamSinkDeviceChanged']/*\"/>\t\n            <unmanaged>MEStreamSinkDeviceChanged</unmanaged>\t\n            <unmanaged-short>MEStreamSinkDeviceChanged</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.QualityNotify\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MEQualityNotify']/*\"/>\t\n            <unmanaged>MEQualityNotify</unmanaged>\t\n            <unmanaged-short>MEQualityNotify</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.SinkInvalidated\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MESinkInvalidated']/*\"/>\t\n            <unmanaged>MESinkInvalidated</unmanaged>\t\n            <unmanaged-short>MESinkInvalidated</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.AudioSessionNameChanged\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MEAudioSessionNameChanged']/*\"/>\t\n            <unmanaged>MEAudioSessionNameChanged</unmanaged>\t\n            <unmanaged-short>MEAudioSessionNameChanged</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.AudioSessionVolumeChanged\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MEAudioSessionVolumeChanged']/*\"/>\t\n            <unmanaged>MEAudioSessionVolumeChanged</unmanaged>\t\n            <unmanaged-short>MEAudioSessionVolumeChanged</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.AudioSessionDeviceRemoved\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MEAudioSessionDeviceRemoved']/*\"/>\t\n            <unmanaged>MEAudioSessionDeviceRemoved</unmanaged>\t\n            <unmanaged-short>MEAudioSessionDeviceRemoved</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.AudioSessionServerShutdown\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MEAudioSessionServerShutdown']/*\"/>\t\n            <unmanaged>MEAudioSessionServerShutdown</unmanaged>\t\n            <unmanaged-short>MEAudioSessionServerShutdown</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.AudioSessionGroupingParamChanged\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MEAudioSessionGroupingParamChanged']/*\"/>\t\n            <unmanaged>MEAudioSessionGroupingParamChanged</unmanaged>\t\n            <unmanaged-short>MEAudioSessionGroupingParamChanged</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.AudioSessionIconChanged\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MEAudioSessionIconChanged']/*\"/>\t\n            <unmanaged>MEAudioSessionIconChanged</unmanaged>\t\n            <unmanaged-short>MEAudioSessionIconChanged</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.AudioSessionFormatChanged\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MEAudioSessionFormatChanged']/*\"/>\t\n            <unmanaged>MEAudioSessionFormatChanged</unmanaged>\t\n            <unmanaged-short>MEAudioSessionFormatChanged</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.AudioSessionDisconnected\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MEAudioSessionDisconnected']/*\"/>\t\n            <unmanaged>MEAudioSessionDisconnected</unmanaged>\t\n            <unmanaged-short>MEAudioSessionDisconnected</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.AudioSessionExclusiveModeOverride\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MEAudioSessionExclusiveModeOverride']/*\"/>\t\n            <unmanaged>MEAudioSessionExclusiveModeOverride</unmanaged>\t\n            <unmanaged-short>MEAudioSessionExclusiveModeOverride</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.SinkV1Anchor\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MESinkV1Anchor']/*\"/>\t\n            <unmanaged>MESinkV1Anchor</unmanaged>\t\n            <unmanaged-short>MESinkV1Anchor</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.TrustUnknown\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='METrustUnknown']/*\"/>\t\n            <unmanaged>METrustUnknown</unmanaged>\t\n            <unmanaged-short>METrustUnknown</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.PolicyChanged\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MEPolicyChanged']/*\"/>\t\n            <unmanaged>MEPolicyChanged</unmanaged>\t\n            <unmanaged-short>MEPolicyChanged</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.ContentProtectionMessage\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MEContentProtectionMessage']/*\"/>\t\n            <unmanaged>MEContentProtectionMessage</unmanaged>\t\n            <unmanaged-short>MEContentProtectionMessage</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.PolicySet\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MEPolicySet']/*\"/>\t\n            <unmanaged>MEPolicySet</unmanaged>\t\n            <unmanaged-short>MEPolicySet</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.TrustV1Anchor\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='METrustV1Anchor']/*\"/>\t\n            <unmanaged>METrustV1Anchor</unmanaged>\t\n            <unmanaged-short>METrustV1Anchor</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.WindowsMediaDRMLicenseBackupCompleted\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MEWMDRMLicenseBackupCompleted']/*\"/>\t\n            <unmanaged>MEWMDRMLicenseBackupCompleted</unmanaged>\t\n            <unmanaged-short>MEWMDRMLicenseBackupCompleted</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.WindowsMediaDRMLicenseBackupProgress\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MEWMDRMLicenseBackupProgress']/*\"/>\t\n            <unmanaged>MEWMDRMLicenseBackupProgress</unmanaged>\t\n            <unmanaged-short>MEWMDRMLicenseBackupProgress</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.WindowsMediaDRMLicenseRestoreCompleted\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MEWMDRMLicenseRestoreCompleted']/*\"/>\t\n            <unmanaged>MEWMDRMLicenseRestoreCompleted</unmanaged>\t\n            <unmanaged-short>MEWMDRMLicenseRestoreCompleted</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.WindowsMediaDRMLicenseRestoreProgress\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MEWMDRMLicenseRestoreProgress']/*\"/>\t\n            <unmanaged>MEWMDRMLicenseRestoreProgress</unmanaged>\t\n            <unmanaged-short>MEWMDRMLicenseRestoreProgress</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.WindowsMediaDRMLicenseAcquisitionCompleted\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MEWMDRMLicenseAcquisitionCompleted']/*\"/>\t\n            <unmanaged>MEWMDRMLicenseAcquisitionCompleted</unmanaged>\t\n            <unmanaged-short>MEWMDRMLicenseAcquisitionCompleted</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.WindowsMediaDRMIndividualizationCompleted\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MEWMDRMIndividualizationCompleted']/*\"/>\t\n            <unmanaged>MEWMDRMIndividualizationCompleted</unmanaged>\t\n            <unmanaged-short>MEWMDRMIndividualizationCompleted</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.WindowsMediaDRMIndividualizationProgress\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MEWMDRMIndividualizationProgress']/*\"/>\t\n            <unmanaged>MEWMDRMIndividualizationProgress</unmanaged>\t\n            <unmanaged-short>MEWMDRMIndividualizationProgress</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.WindowsMediaDRMProximityCompleted\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MEWMDRMProximityCompleted']/*\"/>\t\n            <unmanaged>MEWMDRMProximityCompleted</unmanaged>\t\n            <unmanaged-short>MEWMDRMProximityCompleted</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.WindowsMediaDRMLicenseStoreCleaned\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MEWMDRMLicenseStoreCleaned']/*\"/>\t\n            <unmanaged>MEWMDRMLicenseStoreCleaned</unmanaged>\t\n            <unmanaged-short>MEWMDRMLicenseStoreCleaned</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.WindowsMediaDRMRevocationDownloadCompleted\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MEWMDRMRevocationDownloadCompleted']/*\"/>\t\n            <unmanaged>MEWMDRMRevocationDownloadCompleted</unmanaged>\t\n            <unmanaged-short>MEWMDRMRevocationDownloadCompleted</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.WindowsMediaDRMV1Anchor\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MEWMDRMV1Anchor']/*\"/>\t\n            <unmanaged>MEWMDRMV1Anchor</unmanaged>\t\n            <unmanaged-short>MEWMDRMV1Anchor</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.TransformUnknown\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='METransformUnknown']/*\"/>\t\n            <unmanaged>METransformUnknown</unmanaged>\t\n            <unmanaged-short>METransformUnknown</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.TransformNeedInput\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='METransformNeedInput']/*\"/>\t\n            <unmanaged>METransformNeedInput</unmanaged>\t\n            <unmanaged-short>METransformNeedInput</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.TransformHaveOutput\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='METransformHaveOutput']/*\"/>\t\n            <unmanaged>METransformHaveOutput</unmanaged>\t\n            <unmanaged-short>METransformHaveOutput</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.TransformDrainComplete\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='METransformDrainComplete']/*\"/>\t\n            <unmanaged>METransformDrainComplete</unmanaged>\t\n            <unmanaged-short>METransformDrainComplete</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.TransformMarker\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='METransformMarker']/*\"/>\t\n            <unmanaged>METransformMarker</unmanaged>\t\n            <unmanaged-short>METransformMarker</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaEventTypes.ReservedMax\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MEReservedMax']/*\"/>\t\n            <unmanaged>MEReservedMax</unmanaged>\t\n            <unmanaged-short>MEReservedMax</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.MediaSourceCharacteristics\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Defines the characteristics of a media source. These flags are retrieved by the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaSource.GetCharacteristics(System.Int32@)\"/></strong> method.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>To skip forward or backward in a playlist, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaSource.Start(SharpDX.MediaFoundation.PresentationDescriptor,System.Nullable{System.Guid},System.Nullable{SharpDX.Win32.Variant})\"/></strong> or <strong><see cref=\"M:SharpDX.MediaFoundation.MediaSession.Start(System.Nullable{System.Guid},System.Nullable{SharpDX.Win32.Variant})\"/></strong> with the <strong>MF_TIME_FORMAT_ENTRY_RELATIVE</strong> time-format <see cref=\"T:System.Guid\"/>. This capability applies only when the <strong><see cref=\"F:SharpDX.MediaFoundation.MediaSourceCharacteristics.HasMultiplePresentations\"/></strong> flag is present.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFMEDIASOURCE_CHARACTERISTICS']/*\"/>\t\n            <msdn-id>ms694277</msdn-id>\t\n            <unmanaged>MFMEDIASOURCE_CHARACTERISTICS</unmanaged>\t\n            <unmanaged-short>MFMEDIASOURCE_CHARACTERISTICS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaSourceCharacteristics.IsLive\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFMEDIASOURCE_IS_LIVE']/*\"/>\t\n            <unmanaged>MFMEDIASOURCE_IS_LIVE</unmanaged>\t\n            <unmanaged-short>MFMEDIASOURCE_IS_LIVE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaSourceCharacteristics.CanSeek\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFMEDIASOURCE_CAN_SEEK']/*\"/>\t\n            <unmanaged>MFMEDIASOURCE_CAN_SEEK</unmanaged>\t\n            <unmanaged-short>MFMEDIASOURCE_CAN_SEEK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaSourceCharacteristics.CanPause\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFMEDIASOURCE_CAN_PAUSE']/*\"/>\t\n            <unmanaged>MFMEDIASOURCE_CAN_PAUSE</unmanaged>\t\n            <unmanaged-short>MFMEDIASOURCE_CAN_PAUSE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaSourceCharacteristics.HasSlowSeek\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFMEDIASOURCE_HAS_SLOW_SEEK']/*\"/>\t\n            <unmanaged>MFMEDIASOURCE_HAS_SLOW_SEEK</unmanaged>\t\n            <unmanaged-short>MFMEDIASOURCE_HAS_SLOW_SEEK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaSourceCharacteristics.HasMultiplePresentations\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFMEDIASOURCE_HAS_MULTIPLE_PRESENTATIONS']/*\"/>\t\n            <unmanaged>MFMEDIASOURCE_HAS_MULTIPLE_PRESENTATIONS</unmanaged>\t\n            <unmanaged-short>MFMEDIASOURCE_HAS_MULTIPLE_PRESENTATIONS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaSourceCharacteristics.CanSkipforward\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFMEDIASOURCE_CAN_SKIPFORWARD']/*\"/>\t\n            <unmanaged>MFMEDIASOURCE_CAN_SKIPFORWARD</unmanaged>\t\n            <unmanaged-short>MFMEDIASOURCE_CAN_SKIPFORWARD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaSourceCharacteristics.CanSkipbackward\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFMEDIASOURCE_CAN_SKIPBACKWARD']/*\"/>\t\n            <unmanaged>MFMEDIASOURCE_CAN_SKIPBACKWARD</unmanaged>\t\n            <unmanaged-short>MFMEDIASOURCE_CAN_SKIPBACKWARD</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.MfpCreationOptions\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Contains flags that define the behavior of the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreatePMPMediaSession(System.Int32,SharpDX.MediaFoundation.MediaAttributes,SharpDX.MediaFoundation.MediaSession@,SharpDX.MediaFoundation.Activate@)\"/></strong> function. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='_MFP_CREATION_OPTIONS']/*\"/>\t\n            <msdn-id>ms697495</msdn-id>\t\n            <unmanaged>_MFP_CREATION_OPTIONS</unmanaged>\t\n            <unmanaged-short>_MFP_CREATION_OPTIONS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MfpCreationOptions.MfpOptionNone\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_OPTION_NONE']/*\"/>\t\n            <unmanaged>MFP_OPTION_NONE</unmanaged>\t\n            <unmanaged-short>MFP_OPTION_NONE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MfpCreationOptions.MfpOptionFreeThreadedCallback\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_OPTION_FREE_THREADED_CALLBACK']/*\"/>\t\n            <unmanaged>MFP_OPTION_FREE_THREADED_CALLBACK</unmanaged>\t\n            <unmanaged-short>MFP_OPTION_FREE_THREADED_CALLBACK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MfpCreationOptions.MfpOptionNoMmcss\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_OPTION_NO_MMCSS']/*\"/>\t\n            <unmanaged>MFP_OPTION_NO_MMCSS</unmanaged>\t\n            <unmanaged-short>MFP_OPTION_NO_MMCSS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MfpCreationOptions.MfpOptionNoRemoteDesktopOptimization\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_OPTION_NO_REMOTE_DESKTOP_OPTIMIZATION']/*\"/>\t\n            <unmanaged>MFP_OPTION_NO_REMOTE_DESKTOP_OPTIMIZATION</unmanaged>\t\n            <unmanaged-short>MFP_OPTION_NO_REMOTE_DESKTOP_OPTIMIZATION</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.MfpCredentialFlags\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Contains flags that define the behavior of the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreatePMPMediaSession(System.Int32,SharpDX.MediaFoundation.MediaAttributes,SharpDX.MediaFoundation.MediaSession@,SharpDX.MediaFoundation.Activate@)\"/></strong> function. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='_MFP_CREDENTIAL_FLAGS']/*\"/>\t\n            <msdn-id>ms697495</msdn-id>\t\n            <unmanaged>_MFP_CREDENTIAL_FLAGS</unmanaged>\t\n            <unmanaged-short>_MFP_CREDENTIAL_FLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MfpCredentialFlags.MfpCredentialPrompt\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_CREDENTIAL_PROMPT']/*\"/>\t\n            <unmanaged>MFP_CREDENTIAL_PROMPT</unmanaged>\t\n            <unmanaged-short>MFP_CREDENTIAL_PROMPT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MfpCredentialFlags.MfpCredentialSave\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_CREDENTIAL_SAVE']/*\"/>\t\n            <unmanaged>MFP_CREDENTIAL_SAVE</unmanaged>\t\n            <unmanaged-short>MFP_CREDENTIAL_SAVE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MfpCredentialFlags.MfpCredentialDoNotCache\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_CREDENTIAL_DO_NOT_CACHE']/*\"/>\t\n            <unmanaged>MFP_CREDENTIAL_DO_NOT_CACHE</unmanaged>\t\n            <unmanaged-short>MFP_CREDENTIAL_DO_NOT_CACHE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MfpCredentialFlags.MfpCredentialClearText\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_CREDENTIAL_CLEAR_TEXT']/*\"/>\t\n            <unmanaged>MFP_CREDENTIAL_CLEAR_TEXT</unmanaged>\t\n            <unmanaged-short>MFP_CREDENTIAL_CLEAR_TEXT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MfpCredentialFlags.MfpCredentialProxy\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_CREDENTIAL_PROXY']/*\"/>\t\n            <unmanaged>MFP_CREDENTIAL_PROXY</unmanaged>\t\n            <unmanaged-short>MFP_CREDENTIAL_PROXY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MfpCredentialFlags.MfpCredentialLoggedOnUser\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_CREDENTIAL_LOGGED_ON_USER']/*\"/>\t\n            <unmanaged>MFP_CREDENTIAL_LOGGED_ON_USER</unmanaged>\t\n            <unmanaged-short>MFP_CREDENTIAL_LOGGED_ON_USER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MfpCredentialFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.MfpMediaItemCharacteristics\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Defines the characteristics of a media source. These flags are retrieved by the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaSource.GetCharacteristics(System.Int32@)\"/></strong> method.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>To skip forward or backward in a playlist, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaSource.Start(SharpDX.MediaFoundation.PresentationDescriptor,System.Nullable{System.Guid},System.Nullable{SharpDX.Win32.Variant})\"/></strong> or <strong><see cref=\"M:SharpDX.MediaFoundation.MediaSession.Start(System.Nullable{System.Guid},System.Nullable{SharpDX.Win32.Variant})\"/></strong> with the <strong>MF_TIME_FORMAT_ENTRY_RELATIVE</strong> time-format <see cref=\"T:System.Guid\"/>. This capability applies only when the <strong><see cref=\"F:SharpDX.MediaFoundation.MediaSourceCharacteristics.HasMultiplePresentations\"/></strong> flag is present.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='_MFP_MEDIAITEM_CHARACTERISTICS']/*\"/>\t\n            <msdn-id>ms694277</msdn-id>\t\n            <unmanaged>_MFP_MEDIAITEM_CHARACTERISTICS</unmanaged>\t\n            <unmanaged-short>_MFP_MEDIAITEM_CHARACTERISTICS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MfpMediaItemCharacteristics.MfpMediaItemIsLive\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_MEDIAITEM_IS_LIVE']/*\"/>\t\n            <unmanaged>MFP_MEDIAITEM_IS_LIVE</unmanaged>\t\n            <unmanaged-short>MFP_MEDIAITEM_IS_LIVE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MfpMediaItemCharacteristics.MfpMediaItemCanSeek\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_MEDIAITEM_CAN_SEEK']/*\"/>\t\n            <unmanaged>MFP_MEDIAITEM_CAN_SEEK</unmanaged>\t\n            <unmanaged-short>MFP_MEDIAITEM_CAN_SEEK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MfpMediaItemCharacteristics.MfpMediaItemCanPause\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_MEDIAITEM_CAN_PAUSE']/*\"/>\t\n            <unmanaged>MFP_MEDIAITEM_CAN_PAUSE</unmanaged>\t\n            <unmanaged-short>MFP_MEDIAITEM_CAN_PAUSE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MfpMediaItemCharacteristics.MfpMediaItemHasSlowSeek\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_MEDIAITEM_HAS_SLOW_SEEK']/*\"/>\t\n            <unmanaged>MFP_MEDIAITEM_HAS_SLOW_SEEK</unmanaged>\t\n            <unmanaged-short>MFP_MEDIAITEM_HAS_SLOW_SEEK</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.MftDrainType\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Defines messages for an enhanced video renderer (EVR) presenter. This enumeration is used with the <strong><see cref=\"M:SharpDX.MediaFoundation.VideoPresenter.ProcessMessage(SharpDX.MediaFoundation.VpMessageType,System.IntPtr)\"/></strong> method.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='_MFT_DRAIN_TYPE']/*\"/>\t\n            <msdn-id>ms698964</msdn-id>\t\n            <unmanaged>_MFT_DRAIN_TYPE</unmanaged>\t\n            <unmanaged-short>_MFT_DRAIN_TYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MftDrainType.MftDrainProduceTails\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFT_DRAIN_PRODUCE_TAILS']/*\"/>\t\n            <unmanaged>MFT_DRAIN_PRODUCE_TAILS</unmanaged>\t\n            <unmanaged-short>MFT_DRAIN_PRODUCE_TAILS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MftDrainType.MftDrainNoTails\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFT_DRAIN_NO_TAILS']/*\"/>\t\n            <unmanaged>MFT_DRAIN_NO_TAILS</unmanaged>\t\n            <unmanaged-short>MFT_DRAIN_NO_TAILS</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.MftInputDataBufferFlags\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Defines flags for the <strong><see cref=\"M:SharpDX.MediaFoundation.Transform.ProcessOutput(SharpDX.MediaFoundation.TransformProcessOutputFlags,System.Int32,SharpDX.MediaFoundation.TOutputDataBuffer,SharpDX.MediaFoundation.TransformProcessOutputStatus@)\"/></strong> method. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The values in this enumeration are not bit flags, so they should not be combined with a bitwise <strong>OR</strong>. Also, the caller should test for these flags with the equality operator, not a bitwise <strong>AND</strong>:</p><code>// Correct.\t\n            if (Buffer.dwStatus == <see cref=\"F:SharpDX.MediaFoundation.MftOutputDataBufferFlags.MftOutputDataBufferStreamEnd\"/>)\t\n            { ...\t\n            } // Incorrect.\t\n            if ((Buffer.dwStatus &amp; <see cref=\"F:SharpDX.MediaFoundation.MftOutputDataBufferFlags.MftOutputDataBufferStreamEnd\"/>) != 0)\t\n            { ...\t\n            }\t\n            </code>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='_MFT_INPUT_DATA_BUFFER_FLAGS']/*\"/>\t\n            <msdn-id>ms702281</msdn-id>\t\n            <unmanaged>_MFT_INPUT_DATA_BUFFER_FLAGS</unmanaged>\t\n            <unmanaged-short>_MFT_INPUT_DATA_BUFFER_FLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MftInputDataBufferFlags.MftInputDataBufferPlaceholder\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFT_INPUT_DATA_BUFFER_PLACEHOLDER']/*\"/>\t\n            <unmanaged>MFT_INPUT_DATA_BUFFER_PLACEHOLDER</unmanaged>\t\n            <unmanaged-short>MFT_INPUT_DATA_BUFFER_PLACEHOLDER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MftInputDataBufferFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.MftInputStatusFlags\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Describes the current status of a call to the <strong><see cref=\"M:SharpDX.MediaFoundation.Shutdownable.Shutdown\"/></strong> method.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='_MFT_INPUT_STATUS_FLAGS']/*\"/>\t\n            <msdn-id>ms701630</msdn-id>\t\n            <unmanaged>_MFT_INPUT_STATUS_FLAGS</unmanaged>\t\n            <unmanaged-short>_MFT_INPUT_STATUS_FLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MftInputStatusFlags.MftInputStatusAcceptData\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFT_INPUT_STATUS_ACCEPT_DATA']/*\"/>\t\n            <unmanaged>MFT_INPUT_STATUS_ACCEPT_DATA</unmanaged>\t\n            <unmanaged-short>MFT_INPUT_STATUS_ACCEPT_DATA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MftInputStatusFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.MftInputStreamInformationFlags\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Defines flags for the <strong><see cref=\"M:SharpDX.MediaFoundation.Transform.ProcessOutput(SharpDX.MediaFoundation.TransformProcessOutputFlags,System.Int32,SharpDX.MediaFoundation.TOutputDataBuffer,SharpDX.MediaFoundation.TransformProcessOutputStatus@)\"/></strong> method. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The values in this enumeration are not bit flags, so they should not be combined with a bitwise <strong>OR</strong>. Also, the caller should test for these flags with the equality operator, not a bitwise <strong>AND</strong>:</p><code>// Correct.\t\n            if (Buffer.dwStatus == <see cref=\"F:SharpDX.MediaFoundation.MftOutputDataBufferFlags.MftOutputDataBufferStreamEnd\"/>)\t\n            { ...\t\n            } // Incorrect.\t\n            if ((Buffer.dwStatus &amp; <see cref=\"F:SharpDX.MediaFoundation.MftOutputDataBufferFlags.MftOutputDataBufferStreamEnd\"/>) != 0)\t\n            { ...\t\n            }\t\n            </code>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='_MFT_INPUT_STREAM_INFO_FLAGS']/*\"/>\t\n            <msdn-id>ms702281</msdn-id>\t\n            <unmanaged>_MFT_INPUT_STREAM_INFO_FLAGS</unmanaged>\t\n            <unmanaged-short>_MFT_INPUT_STREAM_INFO_FLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MftInputStreamInformationFlags.MftInputStreamWholeSamples\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFT_INPUT_STREAM_WHOLE_SAMPLES']/*\"/>\t\n            <unmanaged>MFT_INPUT_STREAM_WHOLE_SAMPLES</unmanaged>\t\n            <unmanaged-short>MFT_INPUT_STREAM_WHOLE_SAMPLES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MftInputStreamInformationFlags.MftInputStreamSingleSamplePerBuffer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFT_INPUT_STREAM_SINGLE_SAMPLE_PER_BUFFER']/*\"/>\t\n            <unmanaged>MFT_INPUT_STREAM_SINGLE_SAMPLE_PER_BUFFER</unmanaged>\t\n            <unmanaged-short>MFT_INPUT_STREAM_SINGLE_SAMPLE_PER_BUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MftInputStreamInformationFlags.MftInputStreamFixedSampleSize\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFT_INPUT_STREAM_FIXED_SAMPLE_SIZE']/*\"/>\t\n            <unmanaged>MFT_INPUT_STREAM_FIXED_SAMPLE_SIZE</unmanaged>\t\n            <unmanaged-short>MFT_INPUT_STREAM_FIXED_SAMPLE_SIZE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MftInputStreamInformationFlags.MftInputStreamHoldsBuffers\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFT_INPUT_STREAM_HOLDS_BUFFERS']/*\"/>\t\n            <unmanaged>MFT_INPUT_STREAM_HOLDS_BUFFERS</unmanaged>\t\n            <unmanaged-short>MFT_INPUT_STREAM_HOLDS_BUFFERS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MftInputStreamInformationFlags.MftInputStreamDoesNotAddref\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFT_INPUT_STREAM_DOES_NOT_ADDREF']/*\"/>\t\n            <unmanaged>MFT_INPUT_STREAM_DOES_NOT_ADDREF</unmanaged>\t\n            <unmanaged-short>MFT_INPUT_STREAM_DOES_NOT_ADDREF</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MftInputStreamInformationFlags.MftInputStreamRemovable\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFT_INPUT_STREAM_REMOVABLE']/*\"/>\t\n            <unmanaged>MFT_INPUT_STREAM_REMOVABLE</unmanaged>\t\n            <unmanaged-short>MFT_INPUT_STREAM_REMOVABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MftInputStreamInformationFlags.MftInputStreamOptional\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFT_INPUT_STREAM_OPTIONAL']/*\"/>\t\n            <unmanaged>MFT_INPUT_STREAM_OPTIONAL</unmanaged>\t\n            <unmanaged-short>MFT_INPUT_STREAM_OPTIONAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MftInputStreamInformationFlags.MftInputStreamProcessesInPlace\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFT_INPUT_STREAM_PROCESSES_IN_PLACE']/*\"/>\t\n            <unmanaged>MFT_INPUT_STREAM_PROCESSES_IN_PLACE</unmanaged>\t\n            <unmanaged-short>MFT_INPUT_STREAM_PROCESSES_IN_PLACE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MftInputStreamInformationFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.MftOutputDataBufferFlags\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Defines flags for the <strong><see cref=\"M:SharpDX.MediaFoundation.Transform.ProcessOutput(SharpDX.MediaFoundation.TransformProcessOutputFlags,System.Int32,SharpDX.MediaFoundation.TOutputDataBuffer,SharpDX.MediaFoundation.TransformProcessOutputStatus@)\"/></strong> method. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The values in this enumeration are not bit flags, so they should not be combined with a bitwise <strong>OR</strong>. Also, the caller should test for these flags with the equality operator, not a bitwise <strong>AND</strong>:</p><code>// Correct.\t\n            if (Buffer.dwStatus == <see cref=\"F:SharpDX.MediaFoundation.MftOutputDataBufferFlags.MftOutputDataBufferStreamEnd\"/>)\t\n            { ...\t\n            } // Incorrect.\t\n            if ((Buffer.dwStatus &amp; <see cref=\"F:SharpDX.MediaFoundation.MftOutputDataBufferFlags.MftOutputDataBufferStreamEnd\"/>) != 0)\t\n            { ...\t\n            }\t\n            </code>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='_MFT_OUTPUT_DATA_BUFFER_FLAGS']/*\"/>\t\n            <msdn-id>ms702281</msdn-id>\t\n            <unmanaged>_MFT_OUTPUT_DATA_BUFFER_FLAGS</unmanaged>\t\n            <unmanaged-short>_MFT_OUTPUT_DATA_BUFFER_FLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MftOutputDataBufferFlags.MftOutputDataBufferIncomplete\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFT_OUTPUT_DATA_BUFFER_INCOMPLETE']/*\"/>\t\n            <unmanaged>MFT_OUTPUT_DATA_BUFFER_INCOMPLETE</unmanaged>\t\n            <unmanaged-short>MFT_OUTPUT_DATA_BUFFER_INCOMPLETE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MftOutputDataBufferFlags.MftOutputDataBufferFormatChange\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFT_OUTPUT_DATA_BUFFER_FORMAT_CHANGE']/*\"/>\t\n            <unmanaged>MFT_OUTPUT_DATA_BUFFER_FORMAT_CHANGE</unmanaged>\t\n            <unmanaged-short>MFT_OUTPUT_DATA_BUFFER_FORMAT_CHANGE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MftOutputDataBufferFlags.MftOutputDataBufferStreamEnd\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFT_OUTPUT_DATA_BUFFER_STREAM_END']/*\"/>\t\n            <unmanaged>MFT_OUTPUT_DATA_BUFFER_STREAM_END</unmanaged>\t\n            <unmanaged-short>MFT_OUTPUT_DATA_BUFFER_STREAM_END</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MftOutputDataBufferFlags.MftOutputDataBufferNoSample\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFT_OUTPUT_DATA_BUFFER_NO_SAMPLE']/*\"/>\t\n            <unmanaged>MFT_OUTPUT_DATA_BUFFER_NO_SAMPLE</unmanaged>\t\n            <unmanaged-short>MFT_OUTPUT_DATA_BUFFER_NO_SAMPLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MftOutputDataBufferFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.MftOutputStatusFlags\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Indicates whether a Media Foundation transform (MFT) can produce output data.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='_MFT_OUTPUT_STATUS_FLAGS']/*\"/>\t\n            <msdn-id>ms701553</msdn-id>\t\n            <unmanaged>_MFT_OUTPUT_STATUS_FLAGS</unmanaged>\t\n            <unmanaged-short>_MFT_OUTPUT_STATUS_FLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MftOutputStatusFlags.MftOutputStatusSampleReady\">\n            <summary>\t\n            <dd> <p>There is a sample available for at least one output stream. To retrieve the available output samples, call <strong><see cref=\"M:SharpDX.MediaFoundation.Transform.ProcessOutput(SharpDX.MediaFoundation.TransformProcessOutputFlags,System.Int32,SharpDX.MediaFoundation.TOutputDataBuffer,SharpDX.MediaFoundation.TransformProcessOutputStatus@)\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFT_OUTPUT_STATUS_SAMPLE_READY']/*\"/>\t\n            <msdn-id>ms701553</msdn-id>\t\n            <unmanaged>MFT_OUTPUT_STATUS_SAMPLE_READY</unmanaged>\t\n            <unmanaged-short>MFT_OUTPUT_STATUS_SAMPLE_READY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MftOutputStatusFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.MftOutputStreamInformationFlags\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Describes an output stream on a Media Foundation transform (MFT).</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Before the client sets the media types on the MFT, the only flag guaranteed to be accurate is the <see cref=\"F:SharpDX.MediaFoundation.MftOutputStreamInformationFlags.MftOutputStreamOptional\"/> flag. For all other flags, the client should first set the media type on every non-optional stream.</p><p>The <see cref=\"F:SharpDX.MediaFoundation.MftOutputStreamInformationFlags.MftOutputStreamDiscardable\"/> and <see cref=\"F:SharpDX.MediaFoundation.MftOutputStreamInformationFlags.MftOutputStreamLazyRead\"/> flags define different behaviors for how the MFT can discard output data.</p><ul> <li> <p>MFT_OUTPUT_STREAM_DISCARDABLE: The MFT discards output data only if the client calls <strong>ProcessOutput</strong> with the <see cref=\"F:SharpDX.MediaFoundation.TransformProcessOutputFlags.MftProcessOutputDiscardWhenNoBuffer\"/> flag. The MFT never discards data when the client calls <strong>ProcessInput</strong>.</p> </li> <li> <p>MFT_OUTPUT_STREAM_LAZY_READ: If the client continues to call <strong>ProcessInput</strong> without collecting the output from this stream, the MFT eventually discards the output. If all output streams have the <see cref=\"F:SharpDX.MediaFoundation.MftOutputStreamInformationFlags.MftOutputStreamLazyRead\"/> flag, the MFT never refuses more input data.</p> </li> </ul><p>If neither of these flags is set, the MFT never discards output data.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='_MFT_OUTPUT_STREAM_INFO_FLAGS']/*\"/>\t\n            <msdn-id>ms705618</msdn-id>\t\n            <unmanaged>_MFT_OUTPUT_STREAM_INFO_FLAGS</unmanaged>\t\n            <unmanaged-short>_MFT_OUTPUT_STREAM_INFO_FLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MftOutputStreamInformationFlags.MftOutputStreamWholeSamples\">\n            <summary>\t\n            <dd> <p>Each media sample (<strong><see cref=\"T:SharpDX.MediaFoundation.Sample\"/></strong> interface) of output data from the MFT contains complete, unbroken units of data. The definition of a <em>unit of data</em> depends on the media type: For uncompressed video, a video frame; for compressed data, a compressed packet; for uncompressed audio, a single audio frame.</p> <p>For uncompressed audio formats, this flag is always implied. (It is valid to set the flag, but not required.) An uncompressed audio frame should never span more than one media sample.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFT_OUTPUT_STREAM_WHOLE_SAMPLES']/*\"/>\t\n            <msdn-id>ms705618</msdn-id>\t\n            <unmanaged>MFT_OUTPUT_STREAM_WHOLE_SAMPLES</unmanaged>\t\n            <unmanaged-short>MFT_OUTPUT_STREAM_WHOLE_SAMPLES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MftOutputStreamInformationFlags.MftOutputStreamSingleSamplePerBuffer\">\n            <summary>\t\n            <dd> <p>Each output sample contains exactly one unit of data, as defined for the <see cref=\"F:SharpDX.MediaFoundation.MftOutputStreamInformationFlags.MftOutputStreamWholeSamples\"/> flag.</p> <p>If this flag is present, the <see cref=\"F:SharpDX.MediaFoundation.MftOutputStreamInformationFlags.MftOutputStreamWholeSamples\"/> flag must also be present.</p> <p>An MFT that outputs uncompressed audio should not set this flag. For efficiency, it should output more than one audio frame at a time.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFT_OUTPUT_STREAM_SINGLE_SAMPLE_PER_BUFFER']/*\"/>\t\n            <msdn-id>ms705618</msdn-id>\t\n            <unmanaged>MFT_OUTPUT_STREAM_SINGLE_SAMPLE_PER_BUFFER</unmanaged>\t\n            <unmanaged-short>MFT_OUTPUT_STREAM_SINGLE_SAMPLE_PER_BUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MftOutputStreamInformationFlags.MftOutputStreamFixedSampleSize\">\n            <summary>\t\n            <dd> <p>All output samples are the same size.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFT_OUTPUT_STREAM_FIXED_SAMPLE_SIZE']/*\"/>\t\n            <msdn-id>ms705618</msdn-id>\t\n            <unmanaged>MFT_OUTPUT_STREAM_FIXED_SAMPLE_SIZE</unmanaged>\t\n            <unmanaged-short>MFT_OUTPUT_STREAM_FIXED_SAMPLE_SIZE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MftOutputStreamInformationFlags.MftOutputStreamDiscardable\">\n            <summary>\t\n            <dd> <p>The MFT can discard the output data from this output stream, if requested by the client. To discard the output, set the <see cref=\"F:SharpDX.MediaFoundation.TransformProcessOutputFlags.MftProcessOutputDiscardWhenNoBuffer\"/> flag in the <strong><see cref=\"M:SharpDX.MediaFoundation.Transform.ProcessOutput(SharpDX.MediaFoundation.TransformProcessOutputFlags,System.Int32,SharpDX.MediaFoundation.TOutputDataBuffer,SharpDX.MediaFoundation.TransformProcessOutputStatus@)\"/></strong> method.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFT_OUTPUT_STREAM_DISCARDABLE']/*\"/>\t\n            <msdn-id>ms705618</msdn-id>\t\n            <unmanaged>MFT_OUTPUT_STREAM_DISCARDABLE</unmanaged>\t\n            <unmanaged-short>MFT_OUTPUT_STREAM_DISCARDABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MftOutputStreamInformationFlags.MftOutputStreamOptional\">\n            <summary>\t\n            <dd> <p>This output stream is optional. The client can deselect the stream by not setting a media type or by setting a <strong><c>null</c></strong> media type. When an optional stream is deselected, it does not produce any output data.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFT_OUTPUT_STREAM_OPTIONAL']/*\"/>\t\n            <msdn-id>ms705618</msdn-id>\t\n            <unmanaged>MFT_OUTPUT_STREAM_OPTIONAL</unmanaged>\t\n            <unmanaged-short>MFT_OUTPUT_STREAM_OPTIONAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MftOutputStreamInformationFlags.MftOutputStreamProvidesSamples\">\n            <summary>\t\n            <dd> <p>The MFT provides the output samples for this stream, either by allocating them internally or by operating directly on the input samples. The MFT cannot use output samples provided by the client for this stream.</p> <p>If this flag is not set, the MFT must set <strong>cbSize</strong> to a nonzero value in the <strong><see cref=\"T:SharpDX.MediaFoundation.TOutputStreamInformation\"/></strong> structure, so that the client can allocate the correct buffer size. For more information, see <strong><see cref=\"M:SharpDX.MediaFoundation.Transform.GetOutputStreamInfo(System.Int32,SharpDX.MediaFoundation.TOutputStreamInformation@)\"/></strong>. This flag cannot be combined with the <see cref=\"F:SharpDX.MediaFoundation.MftOutputStreamInformationFlags.MftOutputStreamCanProvideSamples\"/> flag.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFT_OUTPUT_STREAM_PROVIDES_SAMPLES']/*\"/>\t\n            <msdn-id>ms705618</msdn-id>\t\n            <unmanaged>MFT_OUTPUT_STREAM_PROVIDES_SAMPLES</unmanaged>\t\n            <unmanaged-short>MFT_OUTPUT_STREAM_PROVIDES_SAMPLES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MftOutputStreamInformationFlags.MftOutputStreamCanProvideSamples\">\n            <summary>\t\n            <dd> <p>The MFT can either provide output samples for this stream or it can use samples that the client allocates. This flag cannot be combined with the <see cref=\"F:SharpDX.MediaFoundation.MftOutputStreamInformationFlags.MftOutputStreamProvidesSamples\"/> flag.</p> <p>If the MFT does not set this flag or the <see cref=\"F:SharpDX.MediaFoundation.MftOutputStreamInformationFlags.MftOutputStreamProvidesSamples\"/> flag, the client must allocate the samples for this output stream. The MFT will not provide its own samples.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFT_OUTPUT_STREAM_CAN_PROVIDE_SAMPLES']/*\"/>\t\n            <msdn-id>ms705618</msdn-id>\t\n            <unmanaged>MFT_OUTPUT_STREAM_CAN_PROVIDE_SAMPLES</unmanaged>\t\n            <unmanaged-short>MFT_OUTPUT_STREAM_CAN_PROVIDE_SAMPLES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MftOutputStreamInformationFlags.MftOutputStreamLazyRead\">\n            <summary>\t\n            <dd> <p>The MFT does not require the client to process the output for this stream. If the client continues to send input data without getting the output from this stream, the MFT simply discards the previous input.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFT_OUTPUT_STREAM_LAZY_READ']/*\"/>\t\n            <msdn-id>ms705618</msdn-id>\t\n            <unmanaged>MFT_OUTPUT_STREAM_LAZY_READ</unmanaged>\t\n            <unmanaged-short>MFT_OUTPUT_STREAM_LAZY_READ</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MftOutputStreamInformationFlags.MftOutputStreamRemovable\">\n            <summary>\t\n            <dd> <p>The MFT might remove this output stream during streaming. This flag typically applies to demultiplexers, where the input data contains multiple streams that can start and stop during streaming. For more information, see <strong><see cref=\"M:SharpDX.MediaFoundation.Transform.ProcessOutput(SharpDX.MediaFoundation.TransformProcessOutputFlags,System.Int32,SharpDX.MediaFoundation.TOutputDataBuffer,SharpDX.MediaFoundation.TransformProcessOutputStatus@)\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFT_OUTPUT_STREAM_REMOVABLE']/*\"/>\t\n            <msdn-id>ms705618</msdn-id>\t\n            <unmanaged>MFT_OUTPUT_STREAM_REMOVABLE</unmanaged>\t\n            <unmanaged-short>MFT_OUTPUT_STREAM_REMOVABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MftOutputStreamInformationFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.MftSetTypeFlags\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Defines flags for the setting or testing the media type on a Media Foundation transform (MFT).</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='_MFT_SET_TYPE_FLAGS']/*\"/>\t\n            <msdn-id>ms704051</msdn-id>\t\n            <unmanaged>_MFT_SET_TYPE_FLAGS</unmanaged>\t\n            <unmanaged-short>_MFT_SET_TYPE_FLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MftSetTypeFlags.MftSetTypeTestOnly\">\n            <summary>\t\n            <dd> <p>Test the proposed media type, but do not set it.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFT_SET_TYPE_TEST_ONLY']/*\"/>\t\n            <msdn-id>ms704051</msdn-id>\t\n            <unmanaged>MFT_SET_TYPE_TEST_ONLY</unmanaged>\t\n            <unmanaged-short>MFT_SET_TYPE_TEST_ONLY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MftSetTypeFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.NetAuthenticationFlags\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Specifies how the credential manager should obtain user credentials. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The application implements the credential manager, which must expose the <strong><see cref=\"T:SharpDX.MediaFoundation.NetCredentialManager\"/></strong> interface. If the <strong><see cref=\"F:SharpDX.MediaFoundation.NetCredentialRequirements.RequirePrompt\"/></strong> flag is set, the credential manager should prompt the user for his or her name and password.</p><p>The credential cache object sets the <strong><see cref=\"F:SharpDX.MediaFoundation.NetCredentialRequirements.RequirePrompt\"/></strong> flag if the cache does not yet contain valid credentials. It also sets this flag if the credentials will be sent as plain text, unless the credential manager previously set the <strong><see cref=\"F:SharpDX.MediaFoundation.NetCredentialOptions.MfnetCredentialAllowClearText\"/></strong> option. (See <strong><see cref=\"M:SharpDX.MediaFoundation.NetCredentialCache.SetUserOptions(SharpDX.MediaFoundation.NetCredential,System.Int32)\"/></strong>.)</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFNetAuthenticationFlags']/*\"/>\t\n            <msdn-id>ms700813</msdn-id>\t\n            <unmanaged>MFNetAuthenticationFlags</unmanaged>\t\n            <unmanaged-short>MFNetAuthenticationFlags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.NetAuthenticationFlags.MfnetAuthenticationProxy\">\n            <summary>\t\n            <dd> <p> The credential manager should prompt the user to provide the credentials. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFNET_AUTHENTICATION_PROXY']/*\"/>\t\n            <msdn-id>ms700813</msdn-id>\t\n            <unmanaged>MFNET_AUTHENTICATION_PROXY</unmanaged>\t\n            <unmanaged-short>MFNET_AUTHENTICATION_PROXY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.NetAuthenticationFlags.MfnetAuthenticationClearText\">\n            <summary>\t\n            <dd> <p> </p><p><strong>Note</strong>??Requires Windows?7 or later.</p> <p>The credentials are saved to persistent storage. This flag acts as a hint for the application's UI. If the application prompts the user for credentials, the UI can indicate that the credentials have already been saved.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFNET_AUTHENTICATION_CLEAR_TEXT']/*\"/>\t\n            <msdn-id>ms700813</msdn-id>\t\n            <unmanaged>MFNET_AUTHENTICATION_CLEAR_TEXT</unmanaged>\t\n            <unmanaged-short>MFNET_AUTHENTICATION_CLEAR_TEXT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.NetAuthenticationFlags.MfnetAuthenticationLoggedOnUser\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFNET_AUTHENTICATION_LOGGED_ON_USER']/*\"/>\t\n            <unmanaged>MFNET_AUTHENTICATION_LOGGED_ON_USER</unmanaged>\t\n            <unmanaged-short>MFNET_AUTHENTICATION_LOGGED_ON_USER</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.NetCredentialOptions\">\n            <summary>\t\n            <p>Media Foundation provides a default implementation of the <strong><see cref=\"T:SharpDX.MediaFoundation.NetCredentialCache\"/></strong> interface. An application that implements the <strong><see cref=\"T:SharpDX.MediaFoundation.NetCredentialManager\"/></strong> interface can use the default credential cache object to store the user's credentials.</p><p>To create the default credential cache object, call the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateCredentialCache(SharpDX.MediaFoundation.NetCredentialCache@)\"/></strong> function.</p><pre><code><see cref=\"T:SharpDX.Result\"/> hr = <see cref=\"F:SharpDX.Result.Ok\"/>;\t\n            <see cref=\"T:SharpDX.MediaFoundation.NetCredentialCache\"/> *pCredentialCache = <c>null</c>;\t\n            hr = <see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateCredentialCache(SharpDX.MediaFoundation.NetCredentialCache@)\"/>(&amp;pCredentialCache);\t\n            </code></pre><p>After the credential cache is created, the application can use the following methods to get a credential object, set user credentials, and specify the caching options.</p><ul> <li> <p>To get the credential object for a URL, call <strong><see cref=\"M:SharpDX.MediaFoundation.NetCredentialCache.GetCredential(System.String,System.String,System.Int32,SharpDX.MediaFoundation.NetCredential@,System.Int32@)\"/></strong>.</p>  <pre><code>hr = pCredentialCache-&gt; GetCredential( pszUrl, pszRealm, dwAuthenticationFlags, &amp;pCredential, &amp;dwRequirementsFlags);\t\n            </code></pre>  <p>If the credentials for the specified URL do not exist in the credential cache, <strong>GetCredential</strong> creates a new credential object with empty user name and password values.</p> </li> <li> To set the user name and password on the credential object, call <strong><see cref=\"M:SharpDX.MediaFoundation.NetCredential.SetUser(System.Byte[],System.Int32,SharpDX.Bool)\"/></strong> and <strong><see cref=\"M:SharpDX.MediaFoundation.NetCredential.SetPassword(System.Byte[],System.Int32,SharpDX.Bool)\"/></strong>. </li> <li> <p>To set the caching options on the credential object, call <strong><see cref=\"M:SharpDX.MediaFoundation.NetCredentialCache.SetUserOptions(SharpDX.MediaFoundation.NetCredential,System.Int32)\"/></strong>.</p>  <pre><code>hr = pCredentialCache-&gt; SetUserOptions(  pCredentialCache, <see cref=\"F:SharpDX.MediaFoundation.NetCredentialOptions.MfnetCredentialSave\"/>);\t\n            </code></pre>  <p>The <em>dwOptionsFlags</em> parameter values are defined in the <strong><see cref=\"T:SharpDX.MediaFoundation.NetCredentialOptions\"/></strong> enumeration. To save user credentials for a URL in a persistent storage, set the <see cref=\"F:SharpDX.MediaFoundation.NetCredentialOptions.MfnetCredentialSave\"/> flag. If the <strong>SetUserOptions</strong> call completes successfully, then the subsequent call to <strong>GetCredential</strong> searches for the credentials in the persistent storage. If a match is found, this method returns a reference to the credential object that contains the information.</p> <p>By default, user credentials sent over the network are encrypted. To change this to clear text, set the <see cref=\"F:SharpDX.MediaFoundation.NetCredentialOptions.MfnetCredentialAllowClearText\"/> flag.</p> <p>To remove information from the registry, call <strong>GetCredential</strong> to get the credential object, and then call <strong>SetUserOption</strong> and set <em>dwOptionsFlags</em> to <see cref=\"F:SharpDX.MediaFoundation.NetCredentialOptions.MfnetCredentialDontCache\"/>.</p> </li> </ul>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFNetCredentialOptions']/*\"/>\t\n            <msdn-id>ee318418</msdn-id>\t\n            <unmanaged>MFNetCredentialOptions</unmanaged>\t\n            <unmanaged-short>MFNetCredentialOptions</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.NetCredentialOptions.MfnetCredentialSave\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFNET_CREDENTIAL_SAVE']/*\"/>\t\n            <unmanaged>MFNET_CREDENTIAL_SAVE</unmanaged>\t\n            <unmanaged-short>MFNET_CREDENTIAL_SAVE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.NetCredentialOptions.MfnetCredentialDontCache\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFNET_CREDENTIAL_DONT_CACHE']/*\"/>\t\n            <unmanaged>MFNET_CREDENTIAL_DONT_CACHE</unmanaged>\t\n            <unmanaged-short>MFNET_CREDENTIAL_DONT_CACHE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.NetCredentialOptions.MfnetCredentialAllowClearText\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFNET_CREDENTIAL_ALLOW_CLEAR_TEXT']/*\"/>\t\n            <unmanaged>MFNET_CREDENTIAL_ALLOW_CLEAR_TEXT</unmanaged>\t\n            <unmanaged-short>MFNET_CREDENTIAL_ALLOW_CLEAR_TEXT</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.NetCredentialRequirements\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Specifies how the credential manager should obtain user credentials. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The application implements the credential manager, which must expose the <strong><see cref=\"T:SharpDX.MediaFoundation.NetCredentialManager\"/></strong> interface. If the <strong><see cref=\"F:SharpDX.MediaFoundation.NetCredentialRequirements.RequirePrompt\"/></strong> flag is set, the credential manager should prompt the user for his or her name and password.</p><p>The credential cache object sets the <strong><see cref=\"F:SharpDX.MediaFoundation.NetCredentialRequirements.RequirePrompt\"/></strong> flag if the cache does not yet contain valid credentials. It also sets this flag if the credentials will be sent as plain text, unless the credential manager previously set the <strong><see cref=\"F:SharpDX.MediaFoundation.NetCredentialOptions.MfnetCredentialAllowClearText\"/></strong> option. (See <strong><see cref=\"M:SharpDX.MediaFoundation.NetCredentialCache.SetUserOptions(SharpDX.MediaFoundation.NetCredential,System.Int32)\"/></strong>.)</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFNetCredentialRequirements']/*\"/>\t\n            <msdn-id>ms700813</msdn-id>\t\n            <unmanaged>MFNetCredentialRequirements</unmanaged>\t\n            <unmanaged-short>MFNetCredentialRequirements</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.NetCredentialRequirements.RequirePrompt\">\n            <summary>\t\n            <dd> <p> The credential manager should prompt the user to provide the credentials. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='REQUIRE_PROMPT']/*\"/>\t\n            <msdn-id>ms700813</msdn-id>\t\n            <unmanaged>REQUIRE_PROMPT</unmanaged>\t\n            <unmanaged-short>REQUIRE_PROMPT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.NetCredentialRequirements.RequireSaveSelected\">\n            <summary>\t\n            <dd> <p> </p><p><strong>Note</strong>??Requires Windows?7 or later.</p> <p>The credentials are saved to persistent storage. This flag acts as a hint for the application's UI. If the application prompts the user for credentials, the UI can indicate that the credentials have already been saved.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='REQUIRE_SAVE_SELECTED']/*\"/>\t\n            <msdn-id>ms700813</msdn-id>\t\n            <unmanaged>REQUIRE_SAVE_SELECTED</unmanaged>\t\n            <unmanaged-short>REQUIRE_SAVE_SELECTED</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.NetProxysettings\">\n            <summary>\t\n            <p>This topic describes the configuration settings for the default proxy locator. For information about creating the proxy locator with custom configuration settings, see How to Configure the Proxy Locator.</p><p>The proxy locator can be configured to operate in three modes: <em>manual mode</em>, <em>auto-detect mode</em>, and <em>browser mode</em>. The values are defined in <strong><see cref=\"T:SharpDX.MediaFoundation.NetProxysettings\"/></strong> enumeration. The application can configure the mode by setting the <strong>MFNETSOURCE_PROXYSETTINGS</strong> property. The proxy locator can also be configured not to use a proxy server by setting this property to <strong><see cref=\"F:SharpDX.MediaFoundation.NetProxysettings.None\"/></strong>. The proxy server is not used if the media server is a local host or the application requests a class A address (127.x.x.x)?reserved for loopback tests.</p><p><strong>Caution</strong>??A proxy server is a security barrier between your intranet and the Internet. Not using a proxy server can expose the network to security threats.</p><ul> <li> <p>Manual Mode. The application sets this mode by setting the <strong>MFNETSOURCE_PROXYSETTING</strong> property to <strong><see cref=\"F:SharpDX.MediaFoundation.NetProxysettings.Manual\"/></strong>. The application must specify the following connection information:</p> <ul> <li> Hostname of the proxy server: <strong>MFNETSOURCE_PROXYHOSTNAME</strong> property. </li> <li> Port number: <strong>MFNETSOURCE_PROXYPORT</strong> property. </li> <li> <p>Whether to use a proxy server for local addresses: <strong>MFNETSOURCE_PROXYBYPASSFORLOCAL</strong> property. This setting is optional. If this is not specified, then the proxy locator uses a default value of <strong><see cref=\"F:SharpDX.Result.False\"/></strong>.</p> <p><strong>Note</strong>??By bypassing the proxy server, the application might be able to connect to media servers on the intranet faster.</p> </li> <li> List of media server addresses that do not require a proxy server to establish a connection:  <strong>MFNETSOURCE_PROXYEXCEPTIONLIST</strong> property. This setting is optional. </li> </ul> </li> <li> <p>Auto-Detect Mode. The application sets this mode by setting the <strong>MFNETSOURCE_PROXYSETTING</strong> property to <strong><see cref=\"F:SharpDX.MediaFoundation.NetProxysettings.Auto\"/></strong>. In this mode, the proxy locator uses the WinHTTP AutoProxy mechanism to get the hostname and the port number for the proxy server. This connection information is retrieved by using the WPAD auto proxy script, which is configured by the domain administrator. For more information about this mechanism, see the Microsoft website.</p> <p>The proxy locator caches the connection information in the registry. In subsequent proxy detection calls, the proxy locator reads proxy information from the registry cache to reduce the overhead involved in auto detection. However, the application can force auto proxy redetection by setting the <strong>MFNETSOURCE_PROXYRERUNAUTODETECTION</strong> property.</p> </li> <li> Browser Mode. The application sets this mode by setting the <strong>MFNETSOURCE_PROXYSETTING</strong> property to <strong><see cref=\"F:SharpDX.MediaFoundation.NetProxysettings.Browser\"/></strong>. In this mode, the proxy locator uses the proxy settings of the browser application. This mode is set by default if the protocol is HTTP or HTTPD. </li> </ul>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFNET_PROXYSETTINGS']/*\"/>\t\n            <msdn-id>aa374814</msdn-id>\t\n            <unmanaged>MFNET_PROXYSETTINGS</unmanaged>\t\n            <unmanaged-short>MFNET_PROXYSETTINGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.NetProxysettings.None\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFNET_PROXYSETTING_NONE']/*\"/>\t\n            <unmanaged>MFNET_PROXYSETTING_NONE</unmanaged>\t\n            <unmanaged-short>MFNET_PROXYSETTING_NONE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.NetProxysettings.Manual\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFNET_PROXYSETTING_MANUAL']/*\"/>\t\n            <unmanaged>MFNET_PROXYSETTING_MANUAL</unmanaged>\t\n            <unmanaged-short>MFNET_PROXYSETTING_MANUAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.NetProxysettings.Auto\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFNET_PROXYSETTING_AUTO']/*\"/>\t\n            <unmanaged>MFNET_PROXYSETTING_AUTO</unmanaged>\t\n            <unmanaged-short>MFNET_PROXYSETTING_AUTO</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.NetProxysettings.Browser\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFNET_PROXYSETTING_BROWSER']/*\"/>\t\n            <unmanaged>MFNET_PROXYSETTING_BROWSER</unmanaged>\t\n            <unmanaged-short>MFNET_PROXYSETTING_BROWSER</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.NetsourceCacheState\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Defines the status of the cache for a media file or entry.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFNETSOURCE_CACHE_STATE']/*\"/>\t\n            <msdn-id>ms705647</msdn-id>\t\n            <unmanaged>MFNETSOURCE_CACHE_STATE</unmanaged>\t\n            <unmanaged-short>MFNETSOURCE_CACHE_STATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.NetsourceCacheState.Unavailable\">\n            <summary>\t\n            <dd> <p>The cache for a file or entry does not exist.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFNETSOURCE_CACHE_UNAVAILABLE']/*\"/>\t\n            <msdn-id>ms705647</msdn-id>\t\n            <unmanaged>MFNETSOURCE_CACHE_UNAVAILABLE</unmanaged>\t\n            <unmanaged-short>MFNETSOURCE_CACHE_UNAVAILABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.NetsourceCacheState.ActiveWriting\">\n            <summary>\t\n            <dd> <p>The cache for a file or entry is growing.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFNETSOURCE_CACHE_ACTIVE_WRITING']/*\"/>\t\n            <msdn-id>ms705647</msdn-id>\t\n            <unmanaged>MFNETSOURCE_CACHE_ACTIVE_WRITING</unmanaged>\t\n            <unmanaged-short>MFNETSOURCE_CACHE_ACTIVE_WRITING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.NetsourceCacheState.ActiveComplete\">\n            <summary>\t\n            <dd> <p>The cache for a file or entry is completed.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFNETSOURCE_CACHE_ACTIVE_COMPLETE']/*\"/>\t\n            <msdn-id>ms705647</msdn-id>\t\n            <unmanaged>MFNETSOURCE_CACHE_ACTIVE_COMPLETE</unmanaged>\t\n            <unmanaged-short>MFNETSOURCE_CACHE_ACTIVE_COMPLETE</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.NetsourceProtocolType\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves a supported protocol by index</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFNETSOURCE_PROTOCOL_TYPE']/*\"/>\t\n            <msdn-id>ms697058</msdn-id>\t\n            <unmanaged>MFNETSOURCE_PROTOCOL_TYPE</unmanaged>\t\n            <unmanaged-short>MFNETSOURCE_PROTOCOL_TYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.NetsourceProtocolType.Undefined\">\n            <summary>\t\n            <dd> <p>Zero-based index of the protocol to retrieve. To get the number of supported protocols, call <strong><see cref=\"M:SharpDX.MediaFoundation.NetSchemeHandlerConfig.GetNumberOfSupportedProtocols(System.Int32@)\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFNETSOURCE_UNDEFINED']/*\"/>\t\n            <msdn-id>ms697058</msdn-id>\t\n            <unmanaged>MFNETSOURCE_UNDEFINED</unmanaged>\t\n            <unmanaged-short>MFNETSOURCE_UNDEFINED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.NetsourceProtocolType.Http\">\n            <summary>\t\n            <dd> <p>Receives a member of the <strong><see cref=\"T:SharpDX.MediaFoundation.NetsourceProtocolType\"/></strong> enumeration.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFNETSOURCE_HTTP']/*\"/>\t\n            <msdn-id>ms697058</msdn-id>\t\n            <unmanaged>MFNETSOURCE_HTTP</unmanaged>\t\n            <unmanaged-short>MFNETSOURCE_HTTP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.NetsourceProtocolType.Rtsp\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFNETSOURCE_RTSP']/*\"/>\t\n            <unmanaged>MFNETSOURCE_RTSP</unmanaged>\t\n            <unmanaged-short>MFNETSOURCE_RTSP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.NetsourceProtocolType.File\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFNETSOURCE_FILE']/*\"/>\t\n            <unmanaged>MFNETSOURCE_FILE</unmanaged>\t\n            <unmanaged-short>MFNETSOURCE_FILE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.NetsourceProtocolType.Multicast\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFNETSOURCE_MULTICAST']/*\"/>\t\n            <unmanaged>MFNETSOURCE_MULTICAST</unmanaged>\t\n            <unmanaged-short>MFNETSOURCE_MULTICAST</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.NetsourceStatisticsIds\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Defines statistics collected by the network source. The values in this enumeration define property identifiers (PIDs) for the <strong>MFNETSOURCE_STATISTICS</strong> property.</p><p>To retrieve statistics from the network source, call <strong><see cref=\"M:SharpDX.MediaFoundation.ServiceProvider.GetService(System.Guid,System.Guid,System.IntPtr@)\"/></strong> with the service identifier <strong>MFNETSOURCE_STATISTICS_SERVICE</strong> and the interface identifier IID_IPropertyStore. The retrieved reference is an <strong><see cref=\"T:SharpDX.ComObject\"/></strong> reference. To get the value of a network statistic, construct a <strong>PROPERTYKEY</strong> with <strong>fmtid</strong> equal to <strong>MFNETSOURCE_STATISTICS</strong> and <strong>pid</strong> equal to a value from this enumeration. Then call <strong>IPropertyStore::GetValue</strong> with the property key to retrieve the value of the statistic as a <strong><see cref=\"T:SharpDX.Win32.Variant\"/></strong>. </p><p>In the descriptions that follow, the data type and value-type tag for the <strong><see cref=\"T:SharpDX.Win32.Variant\"/></strong> are listed in parentheses.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFNETSOURCE_STATISTICS_IDS']/*\"/>\t\n            <msdn-id>ms697019</msdn-id>\t\n            <unmanaged>MFNETSOURCE_STATISTICS_IDS</unmanaged>\t\n            <unmanaged-short>MFNETSOURCE_STATISTICS_IDS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.NetsourceStatisticsIds.RecvpacketsId\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFNETSOURCE_RECVPACKETS_ID']/*\"/>\t\n            <unmanaged>MFNETSOURCE_RECVPACKETS_ID</unmanaged>\t\n            <unmanaged-short>MFNETSOURCE_RECVPACKETS_ID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.NetsourceStatisticsIds.LostpacketsId\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFNETSOURCE_LOSTPACKETS_ID']/*\"/>\t\n            <unmanaged>MFNETSOURCE_LOSTPACKETS_ID</unmanaged>\t\n            <unmanaged-short>MFNETSOURCE_LOSTPACKETS_ID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.NetsourceStatisticsIds.ResendsrequestedId\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFNETSOURCE_RESENDSREQUESTED_ID']/*\"/>\t\n            <unmanaged>MFNETSOURCE_RESENDSREQUESTED_ID</unmanaged>\t\n            <unmanaged-short>MFNETSOURCE_RESENDSREQUESTED_ID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.NetsourceStatisticsIds.ResendsreceivedId\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFNETSOURCE_RESENDSRECEIVED_ID']/*\"/>\t\n            <unmanaged>MFNETSOURCE_RESENDSRECEIVED_ID</unmanaged>\t\n            <unmanaged-short>MFNETSOURCE_RESENDSRECEIVED_ID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.NetsourceStatisticsIds.RecoveredbyeccpacketsId\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFNETSOURCE_RECOVEREDBYECCPACKETS_ID']/*\"/>\t\n            <unmanaged>MFNETSOURCE_RECOVEREDBYECCPACKETS_ID</unmanaged>\t\n            <unmanaged-short>MFNETSOURCE_RECOVEREDBYECCPACKETS_ID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.NetsourceStatisticsIds.RecoveredbyrtxpacketsId\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFNETSOURCE_RECOVEREDBYRTXPACKETS_ID']/*\"/>\t\n            <unmanaged>MFNETSOURCE_RECOVEREDBYRTXPACKETS_ID</unmanaged>\t\n            <unmanaged-short>MFNETSOURCE_RECOVEREDBYRTXPACKETS_ID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.NetsourceStatisticsIds.OutpacketsId\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFNETSOURCE_OUTPACKETS_ID']/*\"/>\t\n            <unmanaged>MFNETSOURCE_OUTPACKETS_ID</unmanaged>\t\n            <unmanaged-short>MFNETSOURCE_OUTPACKETS_ID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.NetsourceStatisticsIds.RecvrateId\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFNETSOURCE_RECVRATE_ID']/*\"/>\t\n            <unmanaged>MFNETSOURCE_RECVRATE_ID</unmanaged>\t\n            <unmanaged-short>MFNETSOURCE_RECVRATE_ID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.NetsourceStatisticsIds.AvgbandwidthbpsId\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFNETSOURCE_AVGBANDWIDTHBPS_ID']/*\"/>\t\n            <unmanaged>MFNETSOURCE_AVGBANDWIDTHBPS_ID</unmanaged>\t\n            <unmanaged-short>MFNETSOURCE_AVGBANDWIDTHBPS_ID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.NetsourceStatisticsIds.BytesReceivedId\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFNETSOURCE_BYTESRECEIVED_ID']/*\"/>\t\n            <unmanaged>MFNETSOURCE_BYTESRECEIVED_ID</unmanaged>\t\n            <unmanaged-short>MFNETSOURCE_BYTESRECEIVED_ID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.NetsourceStatisticsIds.ProtocolId\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFNETSOURCE_PROTOCOL_ID']/*\"/>\t\n            <unmanaged>MFNETSOURCE_PROTOCOL_ID</unmanaged>\t\n            <unmanaged-short>MFNETSOURCE_PROTOCOL_ID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.NetsourceStatisticsIds.TransportId\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFNETSOURCE_TRANSPORT_ID']/*\"/>\t\n            <unmanaged>MFNETSOURCE_TRANSPORT_ID</unmanaged>\t\n            <unmanaged-short>MFNETSOURCE_TRANSPORT_ID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.NetsourceStatisticsIds.CacheStateId\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFNETSOURCE_CACHE_STATE_ID']/*\"/>\t\n            <unmanaged>MFNETSOURCE_CACHE_STATE_ID</unmanaged>\t\n            <unmanaged-short>MFNETSOURCE_CACHE_STATE_ID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.NetsourceStatisticsIds.LinkbandwidthId\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFNETSOURCE_LINKBANDWIDTH_ID']/*\"/>\t\n            <unmanaged>MFNETSOURCE_LINKBANDWIDTH_ID</unmanaged>\t\n            <unmanaged-short>MFNETSOURCE_LINKBANDWIDTH_ID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.NetsourceStatisticsIds.ContentbitrateId\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFNETSOURCE_CONTENTBITRATE_ID']/*\"/>\t\n            <unmanaged>MFNETSOURCE_CONTENTBITRATE_ID</unmanaged>\t\n            <unmanaged-short>MFNETSOURCE_CONTENTBITRATE_ID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.NetsourceStatisticsIds.SpeedfactorId\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFNETSOURCE_SPEEDFACTOR_ID']/*\"/>\t\n            <unmanaged>MFNETSOURCE_SPEEDFACTOR_ID</unmanaged>\t\n            <unmanaged-short>MFNETSOURCE_SPEEDFACTOR_ID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.NetsourceStatisticsIds.BufferSizeId\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFNETSOURCE_BUFFERSIZE_ID']/*\"/>\t\n            <unmanaged>MFNETSOURCE_BUFFERSIZE_ID</unmanaged>\t\n            <unmanaged-short>MFNETSOURCE_BUFFERSIZE_ID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.NetsourceStatisticsIds.BufferProgressId\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFNETSOURCE_BUFFERPROGRESS_ID']/*\"/>\t\n            <unmanaged>MFNETSOURCE_BUFFERPROGRESS_ID</unmanaged>\t\n            <unmanaged-short>MFNETSOURCE_BUFFERPROGRESS_ID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.NetsourceStatisticsIds.LastBwswitchtsId\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFNETSOURCE_LASTBWSWITCHTS_ID']/*\"/>\t\n            <unmanaged>MFNETSOURCE_LASTBWSWITCHTS_ID</unmanaged>\t\n            <unmanaged-short>MFNETSOURCE_LASTBWSWITCHTS_ID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.NetsourceStatisticsIds.SeekrangestartId\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFNETSOURCE_SEEKRANGESTART_ID']/*\"/>\t\n            <unmanaged>MFNETSOURCE_SEEKRANGESTART_ID</unmanaged>\t\n            <unmanaged-short>MFNETSOURCE_SEEKRANGESTART_ID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.NetsourceStatisticsIds.SeekrangeendId\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFNETSOURCE_SEEKRANGEEND_ID']/*\"/>\t\n            <unmanaged>MFNETSOURCE_SEEKRANGEEND_ID</unmanaged>\t\n            <unmanaged-short>MFNETSOURCE_SEEKRANGEEND_ID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.NetsourceStatisticsIds.BufferingCountId\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFNETSOURCE_BUFFERINGCOUNT_ID']/*\"/>\t\n            <unmanaged>MFNETSOURCE_BUFFERINGCOUNT_ID</unmanaged>\t\n            <unmanaged-short>MFNETSOURCE_BUFFERINGCOUNT_ID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.NetsourceStatisticsIds.IncorrectlysignedpacketsId\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFNETSOURCE_INCORRECTLYSIGNEDPACKETS_ID']/*\"/>\t\n            <unmanaged>MFNETSOURCE_INCORRECTLYSIGNEDPACKETS_ID</unmanaged>\t\n            <unmanaged-short>MFNETSOURCE_INCORRECTLYSIGNEDPACKETS_ID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.NetsourceStatisticsIds.SignedsessionId\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFNETSOURCE_SIGNEDSESSION_ID']/*\"/>\t\n            <unmanaged>MFNETSOURCE_SIGNEDSESSION_ID</unmanaged>\t\n            <unmanaged-short>MFNETSOURCE_SIGNEDSESSION_ID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.NetsourceStatisticsIds.MaximumBitRateId\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFNETSOURCE_MAXBITRATE_ID']/*\"/>\t\n            <unmanaged>MFNETSOURCE_MAXBITRATE_ID</unmanaged>\t\n            <unmanaged-short>MFNETSOURCE_MAXBITRATE_ID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.NetsourceStatisticsIds.ReceptionQualityId\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFNETSOURCE_RECEPTION_QUALITY_ID']/*\"/>\t\n            <unmanaged>MFNETSOURCE_RECEPTION_QUALITY_ID</unmanaged>\t\n            <unmanaged-short>MFNETSOURCE_RECEPTION_QUALITY_ID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.NetsourceStatisticsIds.RecoveredpacketsId\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFNETSOURCE_RECOVEREDPACKETS_ID']/*\"/>\t\n            <unmanaged>MFNETSOURCE_RECOVEREDPACKETS_ID</unmanaged>\t\n            <unmanaged-short>MFNETSOURCE_RECOVEREDPACKETS_ID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.NetsourceStatisticsIds.VariableBitRateId\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFNETSOURCE_VBR_ID']/*\"/>\t\n            <unmanaged>MFNETSOURCE_VBR_ID</unmanaged>\t\n            <unmanaged-short>MFNETSOURCE_VBR_ID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.NetsourceStatisticsIds.DownloadProgressId\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFNETSOURCE_DOWNLOADPROGRESS_ID']/*\"/>\t\n            <unmanaged>MFNETSOURCE_DOWNLOADPROGRESS_ID</unmanaged>\t\n            <unmanaged-short>MFNETSOURCE_DOWNLOADPROGRESS_ID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.NetsourceStatisticsIds.UnpredefinedprotocolnameId\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFNETSOURCE_UNPREDEFINEDPROTOCOLNAME_ID']/*\"/>\t\n            <unmanaged>MFNETSOURCE_UNPREDEFINEDPROTOCOLNAME_ID</unmanaged>\t\n            <unmanaged-short>MFNETSOURCE_UNPREDEFINEDPROTOCOLNAME_ID</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.NetsourceTransportType\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Defines statistics collected by the network source. The values in this enumeration define property identifiers (PIDs) for the <strong>MFNETSOURCE_STATISTICS</strong> property.</p><p>To retrieve statistics from the network source, call <strong><see cref=\"M:SharpDX.MediaFoundation.ServiceProvider.GetService(System.Guid,System.Guid,System.IntPtr@)\"/></strong> with the service identifier <strong>MFNETSOURCE_STATISTICS_SERVICE</strong> and the interface identifier IID_IPropertyStore. The retrieved reference is an <strong><see cref=\"T:SharpDX.ComObject\"/></strong> reference. To get the value of a network statistic, construct a <strong>PROPERTYKEY</strong> with <strong>fmtid</strong> equal to <strong>MFNETSOURCE_STATISTICS</strong> and <strong>pid</strong> equal to a value from this enumeration. Then call <strong>IPropertyStore::GetValue</strong> with the property key to retrieve the value of the statistic as a <strong><see cref=\"T:SharpDX.Win32.Variant\"/></strong>. </p><p>In the descriptions that follow, the data type and value-type tag for the <strong><see cref=\"T:SharpDX.Win32.Variant\"/></strong> are listed in parentheses.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFNETSOURCE_TRANSPORT_TYPE']/*\"/>\t\n            <msdn-id>ms697019</msdn-id>\t\n            <unmanaged>MFNETSOURCE_TRANSPORT_TYPE</unmanaged>\t\n            <unmanaged-short>MFNETSOURCE_TRANSPORT_TYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.NetsourceTransportType.Udp\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFNETSOURCE_UDP']/*\"/>\t\n            <unmanaged>MFNETSOURCE_UDP</unmanaged>\t\n            <unmanaged-short>MFNETSOURCE_UDP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.NetsourceTransportType.Tcp\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFNETSOURCE_TCP']/*\"/>\t\n            <unmanaged>MFNETSOURCE_TCP</unmanaged>\t\n            <unmanaged-short>MFNETSOURCE_TCP</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.NominalRange\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Specifies how the credential manager should obtain user credentials. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The application implements the credential manager, which must expose the <strong><see cref=\"T:SharpDX.MediaFoundation.NetCredentialManager\"/></strong> interface. If the <strong><see cref=\"F:SharpDX.MediaFoundation.NetCredentialRequirements.RequirePrompt\"/></strong> flag is set, the credential manager should prompt the user for his or her name and password.</p><p>The credential cache object sets the <strong><see cref=\"F:SharpDX.MediaFoundation.NetCredentialRequirements.RequirePrompt\"/></strong> flag if the cache does not yet contain valid credentials. It also sets this flag if the credentials will be sent as plain text, unless the credential manager previously set the <strong><see cref=\"F:SharpDX.MediaFoundation.NetCredentialOptions.MfnetCredentialAllowClearText\"/></strong> option. (See <strong><see cref=\"M:SharpDX.MediaFoundation.NetCredentialCache.SetUserOptions(SharpDX.MediaFoundation.NetCredential,System.Int32)\"/></strong>.)</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFNominalRange']/*\"/>\t\n            <msdn-id>ms700813</msdn-id>\t\n            <unmanaged>MFNominalRange</unmanaged>\t\n            <unmanaged-short>MFNominalRange</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.NominalRange.Unknown\">\n            <summary>\t\n            <dd> <p> The credential manager should prompt the user to provide the credentials. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFNominalRange_Unknown']/*\"/>\t\n            <msdn-id>ms700813</msdn-id>\t\n            <unmanaged>MFNominalRange_Unknown</unmanaged>\t\n            <unmanaged-short>MFNominalRange_Unknown</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.NominalRange.Normal\">\n            <summary>\t\n            <dd> <p> </p><p><strong>Note</strong>??Requires Windows?7 or later.</p> <p>The credentials are saved to persistent storage. This flag acts as a hint for the application's UI. If the application prompts the user for credentials, the UI can indicate that the credentials have already been saved.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFNominalRange_Normal']/*\"/>\t\n            <msdn-id>ms700813</msdn-id>\t\n            <unmanaged>MFNominalRange_Normal</unmanaged>\t\n            <unmanaged-short>MFNominalRange_Normal</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.NominalRange.Wide\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFNominalRange_Wide']/*\"/>\t\n            <unmanaged>MFNominalRange_Wide</unmanaged>\t\n            <unmanaged-short>MFNominalRange_Wide</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.NominalRange.Range0_255\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFNominalRange_0_255']/*\"/>\t\n            <unmanaged>MFNominalRange_0_255</unmanaged>\t\n            <unmanaged-short>MFNominalRange_0_255</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.NominalRange.Range16_235\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFNominalRange_16_235']/*\"/>\t\n            <unmanaged>MFNominalRange_16_235</unmanaged>\t\n            <unmanaged-short>MFNominalRange_16_235</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.NominalRange.Range48_208\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFNominalRange_48_208']/*\"/>\t\n            <unmanaged>MFNominalRange_48_208</unmanaged>\t\n            <unmanaged-short>MFNominalRange_48_208</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.NominalRange.Range64_127\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFNominalRange_64_127']/*\"/>\t\n            <unmanaged>MFNominalRange_64_127</unmanaged>\t\n            <unmanaged-short>MFNominalRange_64_127</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.NominalRange.Last\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFNominalRange_Last']/*\"/>\t\n            <unmanaged>MFNominalRange_Last</unmanaged>\t\n            <unmanaged-short>MFNominalRange_Last</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.NominalRange.ForceDWORD\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFNominalRange_ForceDWORD']/*\"/>\t\n            <unmanaged>MFNominalRange_ForceDWORD</unmanaged>\t\n            <unmanaged-short>MFNominalRange_ForceDWORD</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.ObjectType\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Defines the object types that are created by the source resolver.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_OBJECT_TYPE']/*\"/>\t\n            <msdn-id>ms704771</msdn-id>\t\n            <unmanaged>MF_OBJECT_TYPE</unmanaged>\t\n            <unmanaged-short>MF_OBJECT_TYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ObjectType.MediaSource\">\n            <summary>\t\n            <dd> <p>Media source. You can query the object for the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaSource\"/></strong> interface.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_OBJECT_MEDIASOURCE']/*\"/>\t\n            <msdn-id>ms704771</msdn-id>\t\n            <unmanaged>MF_OBJECT_MEDIASOURCE</unmanaged>\t\n            <unmanaged-short>MF_OBJECT_MEDIASOURCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ObjectType.ByteStream\">\n            <summary>\t\n            <dd> <p>Byte stream. You can query the object for the <strong><see cref=\"T:SharpDX.MediaFoundation.IByteStream\"/></strong> interface.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_OBJECT_BYTESTREAM']/*\"/>\t\n            <msdn-id>ms704771</msdn-id>\t\n            <unmanaged>MF_OBJECT_BYTESTREAM</unmanaged>\t\n            <unmanaged-short>MF_OBJECT_BYTESTREAM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ObjectType.Invalid\">\n            <summary>\t\n            <dd> <p>Invalid type.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_OBJECT_INVALID']/*\"/>\t\n            <msdn-id>ms704771</msdn-id>\t\n            <unmanaged>MF_OBJECT_INVALID</unmanaged>\t\n            <unmanaged-short>MF_OBJECT_INVALID</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.PEventType\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Important</strong>??Deprecated. This API may be removed from future releases of Windows. Applications should use the Media Session for playback.</p><p>Defines event types for the <strong><see cref=\"T:SharpDX.MediaFoundation.PMediaPlayerCallback\"/></strong> interface.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>For each event type, the <strong><see cref=\"M:SharpDX.MediaFoundation.PMediaPlayerCallback.OnMediaPlayerEvent(SharpDX.MediaFoundation.PEventHeader@)\"/></strong> callback receives a reference to a data structure. The first part of the data structure is always an <strong><see cref=\"T:SharpDX.MediaFoundation.PEventHeader\"/></strong> structure. The following table lists the data structure for each event type.</p><p>In your implementation of <strong>OnMediaPlayerEvent</strong>, you must cast the <em>pEventHeader</em> parameter to the correct structure type. A set of macros is defined for this purpose. These macros check the value of the event type and return <strong><c>null</c></strong> if there is a mismatch; otherwise they return a reference to the correct structure type.</p><table> <tr><th>Event type</th><th>Event structure</th><th>Pointer cast macro</th></tr> <tr><td><see cref=\"F:SharpDX.MediaFoundation.PEventType.Play\"/></td><td> <strong><see cref=\"T:SharpDX.MediaFoundation.PPlayEvent\"/></strong> </td><td> <strong>MFP_GET_PLAY_EVENT</strong> </td></tr> <tr><td><see cref=\"F:SharpDX.MediaFoundation.PEventType.Pause\"/></td><td> <strong><see cref=\"T:SharpDX.MediaFoundation.PPauseEvent\"/></strong> </td><td> <strong>MFP_GET_PAUSE_EVENT</strong> </td></tr> <tr><td><see cref=\"F:SharpDX.MediaFoundation.PEventType.Stop\"/></td><td> <strong><see cref=\"T:SharpDX.MediaFoundation.PStopEvent\"/></strong> </td><td> <strong>MFP_GET_STOP_EVENT</strong> </td></tr> <tr><td><see cref=\"F:SharpDX.MediaFoundation.PEventType.PositionSet\"/></td><td> <strong><see cref=\"T:SharpDX.MediaFoundation.PPositionSetEvent\"/></strong> </td><td> <strong>MFP_GET_POSITION_SET_EVENT</strong> </td></tr> <tr><td><see cref=\"F:SharpDX.MediaFoundation.PEventType.RateSet\"/></td><td> <strong><see cref=\"T:SharpDX.MediaFoundation.PRateSetEvent\"/></strong> </td><td> <strong>MFP_GET_RATE_SET_EVENT</strong> </td></tr> <tr><td><see cref=\"F:SharpDX.MediaFoundation.PEventType.MediaItemCreateD\"/></td><td> <strong><see cref=\"T:SharpDX.MediaFoundation.PMediaItemCreateDEvent\"/></strong> </td><td> <strong>MFP_GET_MEDIAITEM_CREATED_EVENT</strong> </td></tr> <tr><td><see cref=\"F:SharpDX.MediaFoundation.PEventType.MediaItemSet\"/></td><td> <strong><see cref=\"T:SharpDX.MediaFoundation.PMediaItemSetEvent\"/></strong> </td><td> <strong>MFP_GET_MEDIAITEM_SET_EVENT</strong> </td></tr> <tr><td><see cref=\"F:SharpDX.MediaFoundation.PEventType.FrameStep\"/></td><td> <strong><see cref=\"T:SharpDX.MediaFoundation.PFrameStepEvent\"/></strong> </td><td> <strong>MFP_GET_FRAME_STEP_EVENT</strong> </td></tr> <tr><td><see cref=\"F:SharpDX.MediaFoundation.PEventType.MediaItemCleared\"/></td><td> <strong><see cref=\"T:SharpDX.MediaFoundation.PMediaItemClearedEvent\"/></strong> </td><td> <strong>MFP_GET_MEDIAITEM_CLEARED_EVENT</strong> </td></tr> <tr><td><see cref=\"F:SharpDX.MediaFoundation.PEventType.Mf\"/></td><td> <strong><see cref=\"T:SharpDX.MediaFoundation.PMfEvent\"/></strong> </td><td> <strong>MFP_GET_MF_EVENT</strong> </td></tr> <tr><td><see cref=\"F:SharpDX.MediaFoundation.PEventType.Error\"/></td><td> <strong><see cref=\"T:SharpDX.MediaFoundation.PErrorEvent\"/></strong> </td><td> <strong>MFP_GET_ERROR_EVENT</strong> </td></tr> <tr><td><see cref=\"F:SharpDX.MediaFoundation.PEventType.PlaybackEnded\"/></td><td> <strong><see cref=\"T:SharpDX.MediaFoundation.PPlaybackEndedEvent\"/></strong> </td><td> <strong>MFP_GET_PLAYBACK_ENDED_EVENT</strong> </td></tr> <tr><td><see cref=\"F:SharpDX.MediaFoundation.PEventType.AcquireUserCredential\"/></td><td> <strong><see cref=\"T:SharpDX.MediaFoundation.PAcquireUserCredentialEvent\"/></strong> </td><td> <strong>MFP_GET_ACQUIRE_USER_CREDENTIAL_EVENT</strong> </td></tr> </table><p>?</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_EVENT_TYPE']/*\"/>\t\n            <msdn-id>dd375532</msdn-id>\t\n            <unmanaged>MFP_EVENT_TYPE</unmanaged>\t\n            <unmanaged-short>MFP_EVENT_TYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PEventType.Play\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_EVENT_TYPE_PLAY']/*\"/>\t\n            <unmanaged>MFP_EVENT_TYPE_PLAY</unmanaged>\t\n            <unmanaged-short>MFP_EVENT_TYPE_PLAY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PEventType.Pause\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_EVENT_TYPE_PAUSE']/*\"/>\t\n            <unmanaged>MFP_EVENT_TYPE_PAUSE</unmanaged>\t\n            <unmanaged-short>MFP_EVENT_TYPE_PAUSE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PEventType.Stop\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_EVENT_TYPE_STOP']/*\"/>\t\n            <unmanaged>MFP_EVENT_TYPE_STOP</unmanaged>\t\n            <unmanaged-short>MFP_EVENT_TYPE_STOP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PEventType.PositionSet\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_EVENT_TYPE_POSITION_SET']/*\"/>\t\n            <unmanaged>MFP_EVENT_TYPE_POSITION_SET</unmanaged>\t\n            <unmanaged-short>MFP_EVENT_TYPE_POSITION_SET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PEventType.RateSet\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_EVENT_TYPE_RATE_SET']/*\"/>\t\n            <unmanaged>MFP_EVENT_TYPE_RATE_SET</unmanaged>\t\n            <unmanaged-short>MFP_EVENT_TYPE_RATE_SET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PEventType.MediaItemCreateD\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_EVENT_TYPE_MEDIAITEM_CREATED']/*\"/>\t\n            <unmanaged>MFP_EVENT_TYPE_MEDIAITEM_CREATED</unmanaged>\t\n            <unmanaged-short>MFP_EVENT_TYPE_MEDIAITEM_CREATED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PEventType.MediaItemSet\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_EVENT_TYPE_MEDIAITEM_SET']/*\"/>\t\n            <unmanaged>MFP_EVENT_TYPE_MEDIAITEM_SET</unmanaged>\t\n            <unmanaged-short>MFP_EVENT_TYPE_MEDIAITEM_SET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PEventType.FrameStep\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_EVENT_TYPE_FRAME_STEP']/*\"/>\t\n            <unmanaged>MFP_EVENT_TYPE_FRAME_STEP</unmanaged>\t\n            <unmanaged-short>MFP_EVENT_TYPE_FRAME_STEP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PEventType.MediaItemCleared\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_EVENT_TYPE_MEDIAITEM_CLEARED']/*\"/>\t\n            <unmanaged>MFP_EVENT_TYPE_MEDIAITEM_CLEARED</unmanaged>\t\n            <unmanaged-short>MFP_EVENT_TYPE_MEDIAITEM_CLEARED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PEventType.Mf\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_EVENT_TYPE_MF']/*\"/>\t\n            <unmanaged>MFP_EVENT_TYPE_MF</unmanaged>\t\n            <unmanaged-short>MFP_EVENT_TYPE_MF</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PEventType.Error\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_EVENT_TYPE_ERROR']/*\"/>\t\n            <unmanaged>MFP_EVENT_TYPE_ERROR</unmanaged>\t\n            <unmanaged-short>MFP_EVENT_TYPE_ERROR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PEventType.PlaybackEnded\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_EVENT_TYPE_PLAYBACK_ENDED']/*\"/>\t\n            <unmanaged>MFP_EVENT_TYPE_PLAYBACK_ENDED</unmanaged>\t\n            <unmanaged-short>MFP_EVENT_TYPE_PLAYBACK_ENDED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PEventType.AcquireUserCredential\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_EVENT_TYPE_ACQUIRE_USER_CREDENTIAL']/*\"/>\t\n            <unmanaged>MFP_EVENT_TYPE_ACQUIRE_USER_CREDENTIAL</unmanaged>\t\n            <unmanaged-short>MFP_EVENT_TYPE_ACQUIRE_USER_CREDENTIAL</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.PluginType\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Adds a class identifier (CLSID) to the preferred list or removes a CLSID from the list.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The preferred list is global to the caller's process. Calling this method does not affect the list in other process.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_Plugin_Type']/*\"/>\t\n            <msdn-id>dd374308</msdn-id>\t\n            <unmanaged>MF_Plugin_Type</unmanaged>\t\n            <unmanaged-short>MF_Plugin_Type</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PluginType.Mft\">\n            <summary>\t\n            <dd> <p>Member of the <strong><see cref=\"T:SharpDX.MediaFoundation.PluginType\"/></strong> enumeration, specifying the type of object.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_Plugin_Type_MFT']/*\"/>\t\n            <msdn-id>dd374308</msdn-id>\t\n            <unmanaged>MF_Plugin_Type_MFT</unmanaged>\t\n            <unmanaged-short>MF_Plugin_Type_MFT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PluginType.MediaSource\">\n            <summary>\t\n            <dd> <p>The key name for the CLSID. For more information about the format of key names, see the Remarks section of <strong><see cref=\"T:SharpDX.MediaFoundation.PluginControl\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_Plugin_Type_MediaSource']/*\"/>\t\n            <msdn-id>dd374308</msdn-id>\t\n            <unmanaged>MF_Plugin_Type_MediaSource</unmanaged>\t\n            <unmanaged-short>MF_Plugin_Type_MediaSource</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.PMediaPlayerState\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Important</strong>??Deprecated. This API may be removed from future releases of Windows. Applications should use the Media Session for playback.</p><p>Specifies the current playback state.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_MEDIAPLAYER_STATE']/*\"/>\t\n            <msdn-id>dd375562</msdn-id>\t\n            <unmanaged>MFP_MEDIAPLAYER_STATE</unmanaged>\t\n            <unmanaged-short>MFP_MEDIAPLAYER_STATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PMediaPlayerState.Empty\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_MEDIAPLAYER_STATE_EMPTY']/*\"/>\t\n            <unmanaged>MFP_MEDIAPLAYER_STATE_EMPTY</unmanaged>\t\n            <unmanaged-short>MFP_MEDIAPLAYER_STATE_EMPTY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PMediaPlayerState.Stopped\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_MEDIAPLAYER_STATE_STOPPED']/*\"/>\t\n            <unmanaged>MFP_MEDIAPLAYER_STATE_STOPPED</unmanaged>\t\n            <unmanaged-short>MFP_MEDIAPLAYER_STATE_STOPPED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PMediaPlayerState.Playing\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_MEDIAPLAYER_STATE_PLAYING']/*\"/>\t\n            <unmanaged>MFP_MEDIAPLAYER_STATE_PLAYING</unmanaged>\t\n            <unmanaged-short>MFP_MEDIAPLAYER_STATE_PLAYING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PMediaPlayerState.Paused\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_MEDIAPLAYER_STATE_PAUSED']/*\"/>\t\n            <unmanaged>MFP_MEDIAPLAYER_STATE_PAUSED</unmanaged>\t\n            <unmanaged-short>MFP_MEDIAPLAYER_STATE_PAUSED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PMediaPlayerState.Shutdown\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_MEDIAPLAYER_STATE_SHUTDOWN']/*\"/>\t\n            <unmanaged>MFP_MEDIAPLAYER_STATE_SHUTDOWN</unmanaged>\t\n            <unmanaged-short>MFP_MEDIAPLAYER_STATE_SHUTDOWN</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.PmpsessionCreationFlags\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Contains flags that define the behavior of the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreatePMPMediaSession(System.Int32,SharpDX.MediaFoundation.MediaAttributes,SharpDX.MediaFoundation.MediaSession@,SharpDX.MediaFoundation.Activate@)\"/></strong> function. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFPMPSESSION_CREATION_FLAGS']/*\"/>\t\n            <msdn-id>ms697495</msdn-id>\t\n            <unmanaged>MFPMPSESSION_CREATION_FLAGS</unmanaged>\t\n            <unmanaged-short>MFPMPSESSION_CREATION_FLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PmpsessionCreationFlags.UnprotectedProcess\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFPMPSESSION_UNPROTECTED_PROCESS']/*\"/>\t\n            <unmanaged>MFPMPSESSION_UNPROTECTED_PROCESS</unmanaged>\t\n            <unmanaged-short>MFPMPSESSION_UNPROTECTED_PROCESS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PmpsessionCreationFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.PolicymanagerAction\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Defines actions that can be performed on a stream.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFPOLICYMANAGER_ACTION']/*\"/>\t\n            <msdn-id>ms698977</msdn-id>\t\n            <unmanaged>MFPOLICYMANAGER_ACTION</unmanaged>\t\n            <unmanaged-short>MFPOLICYMANAGER_ACTION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PolicymanagerAction.PeactionNo\">\n            <summary>\t\n            <dd> <p>No action.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='PEACTION_NO']/*\"/>\t\n            <msdn-id>ms698977</msdn-id>\t\n            <unmanaged>PEACTION_NO</unmanaged>\t\n            <unmanaged-short>PEACTION_NO</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PolicymanagerAction.PeactionPlay\">\n            <summary>\t\n            <dd> <p>Play the stream.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='PEACTION_PLAY']/*\"/>\t\n            <msdn-id>ms698977</msdn-id>\t\n            <unmanaged>PEACTION_PLAY</unmanaged>\t\n            <unmanaged-short>PEACTION_PLAY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PolicymanagerAction.PeactionCopy\">\n            <summary>\t\n            <dd> <p>Copy the stream.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='PEACTION_COPY']/*\"/>\t\n            <msdn-id>ms698977</msdn-id>\t\n            <unmanaged>PEACTION_COPY</unmanaged>\t\n            <unmanaged-short>PEACTION_COPY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PolicymanagerAction.PeactionExport\">\n            <summary>\t\n            <dd> <p>Export the stream to another format.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='PEACTION_EXPORT']/*\"/>\t\n            <msdn-id>ms698977</msdn-id>\t\n            <unmanaged>PEACTION_EXPORT</unmanaged>\t\n            <unmanaged-short>PEACTION_EXPORT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PolicymanagerAction.PeactionExtract\">\n            <summary>\t\n            <dd> <p>Extract the data from the stream and pass it to the application. For example, acoustic echo cancellation requires this action.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='PEACTION_EXTRACT']/*\"/>\t\n            <msdn-id>ms698977</msdn-id>\t\n            <unmanaged>PEACTION_EXTRACT</unmanaged>\t\n            <unmanaged-short>PEACTION_EXTRACT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PolicymanagerAction.PeactionReserved1\">\n            <summary>\t\n            <dd> <p>Reserved.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='PEACTION_RESERVED1']/*\"/>\t\n            <msdn-id>ms698977</msdn-id>\t\n            <unmanaged>PEACTION_RESERVED1</unmanaged>\t\n            <unmanaged-short>PEACTION_RESERVED1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PolicymanagerAction.PeactionReserved2\">\n            <summary>\t\n            <dd> <p>Reserved.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='PEACTION_RESERVED2']/*\"/>\t\n            <msdn-id>ms698977</msdn-id>\t\n            <unmanaged>PEACTION_RESERVED2</unmanaged>\t\n            <unmanaged-short>PEACTION_RESERVED2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PolicymanagerAction.PeactionReserved3\">\n            <summary>\t\n            <dd> <p>Reserved.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='PEACTION_RESERVED3']/*\"/>\t\n            <msdn-id>ms698977</msdn-id>\t\n            <unmanaged>PEACTION_RESERVED3</unmanaged>\t\n            <unmanaged-short>PEACTION_RESERVED3</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PolicymanagerAction.PeactionLast\">\n            <summary>\t\n            <dd> <p>Last member of the enumeration.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='PEACTION_LAST']/*\"/>\t\n            <msdn-id>ms698977</msdn-id>\t\n            <unmanaged>PEACTION_LAST</unmanaged>\t\n            <unmanaged-short>PEACTION_LAST</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.QualityAdviseFlags\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Contains flags for the <strong><see cref=\"M:SharpDX.MediaFoundation.QualityAdvise2.NotifyQualityEvent(SharpDX.MediaFoundation.MediaEvent,System.Int32@)\"/></strong> method.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>If the decoder sets the <strong><see cref=\"F:SharpDX.MediaFoundation.QualityAdviseFlags.CannotKeepUp\"/></strong> flag, the quality manager tries to reduce latency through the media source and the media sink. For example, it might request the Enhanced Video Renderer (EVR) to drop frames. During this period, the quality manager stops calling the decoder's <strong><see cref=\"M:SharpDX.MediaFoundation.QualityAdvise2.NotifyQualityEvent(SharpDX.MediaFoundation.MediaEvent,System.Int32@)\"/></strong> method, until samples are no longer arriving late at the sink. At that point, the quality manager resumes calling <strong>NotifyQualityEvent</strong> on the decoder.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_QUALITY_ADVISE_FLAGS']/*\"/>\t\n            <msdn-id>dd743824</msdn-id>\t\n            <unmanaged>MF_QUALITY_ADVISE_FLAGS</unmanaged>\t\n            <unmanaged-short>MF_QUALITY_ADVISE_FLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.QualityAdviseFlags.CannotKeepUp\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_QUALITY_CANNOT_KEEP_UP']/*\"/>\t\n            <unmanaged>MF_QUALITY_CANNOT_KEEP_UP</unmanaged>\t\n            <unmanaged-short>MF_QUALITY_CANNOT_KEEP_UP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.QualityAdviseFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.QualityDropMode\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Specifies how aggressively a pipeline component should drop samples.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>In drop mode, a component drops samples, more or less aggressively depending on the level of the drop mode. The specific algorithm used depends on the component. Mode 1 is the least aggressive mode, and mode 5 is the most aggressive. A component is not required to implement all five levels.</p><p>For example, suppose an encoded video stream has three B-frames between each pair of P-frames. A decoder might implement the following drop modes:</p><ul> <li> <p>Mode 1: Drop one out of every three B frames.</p> </li> <li> <p>Mode 2: Drop one out of every two B frames.</p> </li> <li> <p>Mode 3: Drop all delta frames.</p> </li> <li> <p>Modes 4 and 5: Unsupported.</p> </li> </ul><p>The enhanced video renderer (EVR) can drop video frames before sending them to the EVR mixer.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_QUALITY_DROP_MODE']/*\"/>\t\n            <msdn-id>ms704659</msdn-id>\t\n            <unmanaged>MF_QUALITY_DROP_MODE</unmanaged>\t\n            <unmanaged-short>MF_QUALITY_DROP_MODE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.QualityDropMode.MfDropModeNone\">\n            <summary>\t\n            <dd> <p>Normal processing of samples. Drop mode is disabled.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_DROP_MODE_NONE']/*\"/>\t\n            <msdn-id>ms704659</msdn-id>\t\n            <unmanaged>MF_DROP_MODE_NONE</unmanaged>\t\n            <unmanaged-short>MF_DROP_MODE_NONE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.QualityDropMode.MfDropMode1\">\n            <summary>\t\n            <dd> <p>First drop mode (least aggressive).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_DROP_MODE_1']/*\"/>\t\n            <msdn-id>ms704659</msdn-id>\t\n            <unmanaged>MF_DROP_MODE_1</unmanaged>\t\n            <unmanaged-short>MF_DROP_MODE_1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.QualityDropMode.MfDropMode2\">\n            <summary>\t\n            <dd> <p>Second drop mode.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_DROP_MODE_2']/*\"/>\t\n            <msdn-id>ms704659</msdn-id>\t\n            <unmanaged>MF_DROP_MODE_2</unmanaged>\t\n            <unmanaged-short>MF_DROP_MODE_2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.QualityDropMode.MfDropMode3\">\n            <summary>\t\n            <dd> <p>Third drop mode.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_DROP_MODE_3']/*\"/>\t\n            <msdn-id>ms704659</msdn-id>\t\n            <unmanaged>MF_DROP_MODE_3</unmanaged>\t\n            <unmanaged-short>MF_DROP_MODE_3</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.QualityDropMode.MfDropMode4\">\n            <summary>\t\n            <dd> <p>Fourth drop mode.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_DROP_MODE_4']/*\"/>\t\n            <msdn-id>ms704659</msdn-id>\t\n            <unmanaged>MF_DROP_MODE_4</unmanaged>\t\n            <unmanaged-short>MF_DROP_MODE_4</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.QualityDropMode.MfDropMode5\">\n            <summary>\t\n            <dd> <p>Fifth drop mode (most aggressive, if it is supported; see Remarks).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_DROP_MODE_5']/*\"/>\t\n            <msdn-id>ms704659</msdn-id>\t\n            <unmanaged>MF_DROP_MODE_5</unmanaged>\t\n            <unmanaged-short>MF_DROP_MODE_5</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.QualityDropMode.MfNumDropModes\">\n            <summary>\t\n            <dd> <p>Maximum number of drop modes. This value is not a valid flag.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_NUM_DROP_MODES']/*\"/>\t\n            <msdn-id>ms704659</msdn-id>\t\n            <unmanaged>MF_NUM_DROP_MODES</unmanaged>\t\n            <unmanaged-short>MF_NUM_DROP_MODES</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.QualityLevel\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Specifies the quality level for a pipeline component. The quality level determines how the component consumes or produces samples.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p> Each successive quality level decreases the amount of processing that is needed, while also reducing the resulting quality of the audio or video. The specific algorithm used to reduce quality depends on the component. Mode 1 is the least aggressive mode, and mode 5 is the most aggressive. A component is not required to implement all five levels. Also, the same quality level might not be comparable between two different components. </p><p> Video decoders can often reduce quality by leaving out certain post-processing steps. The enhanced video renderer (EVR) can sometimes reduce quality by switching to a different deinterlacing mode. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_QUALITY_LEVEL']/*\"/>\t\n            <msdn-id>ms698949</msdn-id>\t\n            <unmanaged>MF_QUALITY_LEVEL</unmanaged>\t\n            <unmanaged-short>MF_QUALITY_LEVEL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.QualityLevel.MfQualityNormal\">\n            <summary>\t\n            <dd> <p> Normal quality. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_QUALITY_NORMAL']/*\"/>\t\n            <msdn-id>ms698949</msdn-id>\t\n            <unmanaged>MF_QUALITY_NORMAL</unmanaged>\t\n            <unmanaged-short>MF_QUALITY_NORMAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.QualityLevel.MfQualityNormalMinus1\">\n            <summary>\t\n            <dd> <p> One level below normal quality. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_QUALITY_NORMAL_MINUS_1']/*\"/>\t\n            <msdn-id>ms698949</msdn-id>\t\n            <unmanaged>MF_QUALITY_NORMAL_MINUS_1</unmanaged>\t\n            <unmanaged-short>MF_QUALITY_NORMAL_MINUS_1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.QualityLevel.MfQualityNormalMinus2\">\n            <summary>\t\n            <dd> <p> Two levels below normal quality. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_QUALITY_NORMAL_MINUS_2']/*\"/>\t\n            <msdn-id>ms698949</msdn-id>\t\n            <unmanaged>MF_QUALITY_NORMAL_MINUS_2</unmanaged>\t\n            <unmanaged-short>MF_QUALITY_NORMAL_MINUS_2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.QualityLevel.MfQualityNormalMinus3\">\n            <summary>\t\n            <dd> <p> Three levels below normal quality. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_QUALITY_NORMAL_MINUS_3']/*\"/>\t\n            <msdn-id>ms698949</msdn-id>\t\n            <unmanaged>MF_QUALITY_NORMAL_MINUS_3</unmanaged>\t\n            <unmanaged-short>MF_QUALITY_NORMAL_MINUS_3</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.QualityLevel.MfQualityNormalMinus4\">\n            <summary>\t\n            <dd> <p> Four levels below normal quality. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_QUALITY_NORMAL_MINUS_4']/*\"/>\t\n            <msdn-id>ms698949</msdn-id>\t\n            <unmanaged>MF_QUALITY_NORMAL_MINUS_4</unmanaged>\t\n            <unmanaged-short>MF_QUALITY_NORMAL_MINUS_4</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.QualityLevel.MfQualityNormalMinus5\">\n            <summary>\t\n            <dd> <p> Five levels below normal quality. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_QUALITY_NORMAL_MINUS_5']/*\"/>\t\n            <msdn-id>ms698949</msdn-id>\t\n            <unmanaged>MF_QUALITY_NORMAL_MINUS_5</unmanaged>\t\n            <unmanaged-short>MF_QUALITY_NORMAL_MINUS_5</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.QualityLevel.MfNumQualityLevels\">\n            <summary>\t\n            <dd> <p> Maximum number of quality levels. This value is not a valid flag. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_NUM_QUALITY_LEVELS']/*\"/>\t\n            <msdn-id>ms698949</msdn-id>\t\n            <unmanaged>MF_NUM_QUALITY_LEVELS</unmanaged>\t\n            <unmanaged-short>MF_NUM_QUALITY_LEVELS</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.RateDirection\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Specifies how the credential manager should obtain user credentials. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The application implements the credential manager, which must expose the <strong><see cref=\"T:SharpDX.MediaFoundation.NetCredentialManager\"/></strong> interface. If the <strong><see cref=\"F:SharpDX.MediaFoundation.NetCredentialRequirements.RequirePrompt\"/></strong> flag is set, the credential manager should prompt the user for his or her name and password.</p><p>The credential cache object sets the <strong><see cref=\"F:SharpDX.MediaFoundation.NetCredentialRequirements.RequirePrompt\"/></strong> flag if the cache does not yet contain valid credentials. It also sets this flag if the credentials will be sent as plain text, unless the credential manager previously set the <strong><see cref=\"F:SharpDX.MediaFoundation.NetCredentialOptions.MfnetCredentialAllowClearText\"/></strong> option. (See <strong><see cref=\"M:SharpDX.MediaFoundation.NetCredentialCache.SetUserOptions(SharpDX.MediaFoundation.NetCredential,System.Int32)\"/></strong>.)</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFRATE_DIRECTION']/*\"/>\t\n            <msdn-id>ms700813</msdn-id>\t\n            <unmanaged>MFRATE_DIRECTION</unmanaged>\t\n            <unmanaged-short>MFRATE_DIRECTION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.RateDirection.Forward\">\n            <summary>\t\n            <dd> <p> The credential manager should prompt the user to provide the credentials. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFRATE_FORWARD']/*\"/>\t\n            <msdn-id>ms700813</msdn-id>\t\n            <unmanaged>MFRATE_FORWARD</unmanaged>\t\n            <unmanaged-short>MFRATE_FORWARD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.RateDirection.Reverse\">\n            <summary>\t\n            <dd> <p> </p><p><strong>Note</strong>??Requires Windows?7 or later.</p> <p>The credentials are saved to persistent storage. This flag acts as a hint for the application's UI. If the application prompts the user for credentials, the UI can indicate that the credentials have already been saved.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFRATE_REVERSE']/*\"/>\t\n            <msdn-id>ms700813</msdn-id>\t\n            <unmanaged>MFRATE_REVERSE</unmanaged>\t\n            <unmanaged-short>MFRATE_REVERSE</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.SampleProtectionVersion\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves the sample protection certificate.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>For certain version numbers of sample protection, the downstream component must provide a certificate. Components that do not support these version numbers can return E_NOTIMPL.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SAMPLE_PROTECTION_VERSION']/*\"/>\t\n            <msdn-id>bb970503</msdn-id>\t\n            <unmanaged>SAMPLE_PROTECTION_VERSION</unmanaged>\t\n            <unmanaged-short>SAMPLE_PROTECTION_VERSION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.SampleProtectionVersion.No\">\n            <summary>\t\n            <dd> <p>Specifies the version number of the sample protection scheme for which to receive a certificate. The version number is specified as a <strong><see cref=\"T:SharpDX.MediaFoundation.SampleProtectionVersion\"/></strong> enumeration value.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SAMPLE_PROTECTION_VERSION_NO']/*\"/>\t\n            <msdn-id>bb970503</msdn-id>\t\n            <unmanaged>SAMPLE_PROTECTION_VERSION_NO</unmanaged>\t\n            <unmanaged-short>SAMPLE_PROTECTION_VERSION_NO</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.SampleProtectionVersion.BasicLoki\">\n            <summary>\t\n            <dd> <p>Receives a reference to a buffer containing the certificate. The caller must free the memory for the buffer by calling <strong>CoTaskMemFree</strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SAMPLE_PROTECTION_VERSION_BASIC_LOKI']/*\"/>\t\n            <msdn-id>bb970503</msdn-id>\t\n            <unmanaged>SAMPLE_PROTECTION_VERSION_BASIC_LOKI</unmanaged>\t\n            <unmanaged-short>SAMPLE_PROTECTION_VERSION_BASIC_LOKI</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.SampleProtectionVersion.Scatter\">\n            <summary>\t\n            <dd> <p>Receives the size of the <em>ppCert</em> buffer, in bytes.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SAMPLE_PROTECTION_VERSION_SCATTER']/*\"/>\t\n            <msdn-id>bb970503</msdn-id>\t\n            <unmanaged>SAMPLE_PROTECTION_VERSION_SCATTER</unmanaged>\t\n            <unmanaged-short>SAMPLE_PROTECTION_VERSION_SCATTER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.SampleProtectionVersion.Rc4\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SAMPLE_PROTECTION_VERSION_RC4']/*\"/>\t\n            <unmanaged>SAMPLE_PROTECTION_VERSION_RC4</unmanaged>\t\n            <unmanaged-short>SAMPLE_PROTECTION_VERSION_RC4</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.SequencerTopologyFlags\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Specifies how the credential manager should obtain user credentials. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The application implements the credential manager, which must expose the <strong><see cref=\"T:SharpDX.MediaFoundation.NetCredentialManager\"/></strong> interface. If the <strong><see cref=\"F:SharpDX.MediaFoundation.NetCredentialRequirements.RequirePrompt\"/></strong> flag is set, the credential manager should prompt the user for his or her name and password.</p><p>The credential cache object sets the <strong><see cref=\"F:SharpDX.MediaFoundation.NetCredentialRequirements.RequirePrompt\"/></strong> flag if the cache does not yet contain valid credentials. It also sets this flag if the credentials will be sent as plain text, unless the credential manager previously set the <strong><see cref=\"F:SharpDX.MediaFoundation.NetCredentialOptions.MfnetCredentialAllowClearText\"/></strong> option. (See <strong><see cref=\"M:SharpDX.MediaFoundation.NetCredentialCache.SetUserOptions(SharpDX.MediaFoundation.NetCredential,System.Int32)\"/></strong>.)</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFSequencerTopologyFlags']/*\"/>\t\n            <msdn-id>ms700813</msdn-id>\t\n            <unmanaged>MFSequencerTopologyFlags</unmanaged>\t\n            <unmanaged-short>MFSequencerTopologyFlags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.SequencerTopologyFlags.SequencerTopologyFlagsLast\">\n            <summary>\t\n            <dd> <p> The credential manager should prompt the user to provide the credentials. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SequencerTopologyFlags_Last']/*\"/>\t\n            <msdn-id>ms700813</msdn-id>\t\n            <unmanaged>SequencerTopologyFlags_Last</unmanaged>\t\n            <unmanaged-short>SequencerTopologyFlags_Last</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.ServiceLookupType\">\n            <summary>\t\n            <p>Retrieves an interface from the enhanced video renderer (EVR), or from the video mixer or video presenter.</p>  <see cref=\"T:SharpDX.Result\"/> LookupService( <see cref=\"T:SharpDX.MediaFoundation.ServiceLookupType\"/>  Type, DWORD  dwIndex, REFGUID  guidService, REFIID  riid, LPVOID*  ppvObjects, DWORD* pnObjects\t\n            );\t\n            <p></p>Parameters <p> Type </p> <p>[in] Specifies the scope of the search. Currently this parameter is ignored. Use the value <see cref=\"F:SharpDX.MediaFoundation.ServiceLookupType.Global\"/>.</p> <p> dwIndex </p> <p>[in] Reserved, must be zero.</p> <p> guidService </p> <p>[in] Service <see cref=\"T:System.Guid\"/> of the requested interface.</p> <p> riid </p> <p>[in] Interface identifier of the requested interface.</p> <p> ppvObjects </p> <p>[out]  Array of interface references. If the method succeeds, each member of the array is initialized to the requested interface. The caller must release the interface references when the EVR calls <see cref=\"M:SharpDX.MediaFoundation.TopologyServiceLookupClient.ReleaseServicePointers\"/>.</p> <p> pnObjects </p> <p>[in, out] On input, a reference to a value that specifies the size of the ppvObjects array. The value must be at least 1. On output, receives the number of valid references copied into the ppvObjects array. In the current implementation, there is no particular reason to specify an array size larger than one element.</p>  <p>The method returns an <see cref=\"T:SharpDX.Result\"/>. Possible values include, but are not limited to, those in the following table.</p> <table><tr> <th> Return code </th> <th> Description </th> </tr><tr> <td> <p><see cref=\"F:SharpDX.Result.Ok\"/></p> </td> <td> <p>The method succeeded.</p> </td> </tr><tr> <td> <p>E_INVALIDARG</p> </td> <td> <p>Invalid argument. </p> </td> </tr><tr> <td> <p>E_NOINTERFACE</p> </td> <td> <p>The requested interface is not available.</p> </td> </tr><tr> <td> <p><see cref=\"F:SharpDX.MediaFoundation.ResultCode.NotAccepting\"/></p> </td> <td> <p>The method was not called from inside the InitServicePointers method. See Remarks.</p> </td> </tr><tr> <td> <p><see cref=\"F:SharpDX.MediaFoundation.ResultCode.UnsupportedService\"/></p> </td> <td> <p>The object does not support the specified service <see cref=\"T:System.Guid\"/>.</p> </td> </tr></table>  <p>This method can be called only from inside the <see cref=\"M:SharpDX.MediaFoundation.TopologyServiceLookupClient.InitServicePointers(SharpDX.MediaFoundation.TopologyServiceLookup)\"/> method. At any other time, the method returns <see cref=\"F:SharpDX.MediaFoundation.ResultCode.NotAccepting\"/>.</p> <p>The presenter can use this method to query the EVR and the mixer. The mixer can use it to query the EVR and the presenter. Which objects are queried depends on the caller and the service <see cref=\"T:System.Guid\"/>, as shown in the following table. </p> <table><tr> <th> Caller </th> <th> Service <see cref=\"T:System.Guid\"/> </th> <th> Objects queried </th> </tr><tr> <td> <p>Presenter</p> </td> <td> <p>MR_VIDEO_RENDER_SERVICE</p> </td> <td> <p>EVR</p> </td> </tr><tr> <td> <p>Presenter</p> </td> <td> <p>MR_VIDEO_MIXER_SERVICE</p> </td> <td> <p>Mixer</p> </td> </tr><tr> <td> <p>Mixer</p> </td> <td> <p>MR_VIDEO_RENDER_SERVICE</p> </td> <td> <p>Presenter and EVR</p> </td> </tr></table> <p>The following interfaces are available from the EVR:</p> <ul><li> <p> IMediaEventSink Interface</p> </li><li> <p> <see cref=\"T:SharpDX.MediaFoundation.Clock\"/> Interface </p> </li><li> <p> <see cref=\"T:SharpDX.MediaFoundation.Timer\"/> Interface </p> </li><li> <p> <see cref=\"T:SharpDX.MediaFoundation.PresentationClock\"/> Interface </p> </li></ul> <p>The IMediaEventSink interface is documented in the DirectShow SDK documentation.</p> <p>The following interfaces are available from the mixer:</p> <ul><li> <p> <see cref=\"T:SharpDX.MediaFoundation.Transform\"/> Interface </p> </li><li> <p> <see cref=\"T:SharpDX.MediaFoundation.VideoDeviceID\"/> Interface </p> </li></ul>  <p> Client: Requires Windows Vista.</p> <p> Header: Include evr.h.</p> <p> Library: Use strmiids.lib.</p> ReferenceIMFTopologyServiceLookup InterfaceConceptsHow to Write an EVR Presenter\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_SERVICE_LOOKUP_TYPE']/*\"/>\t\n            <msdn-id>ms702184</msdn-id>\t\n            <unmanaged>MF_SERVICE_LOOKUP_TYPE</unmanaged>\t\n            <unmanaged-short>MF_SERVICE_LOOKUP_TYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ServiceLookupType.Upstream\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_SERVICE_LOOKUP_UPSTREAM']/*\"/>\t\n            <unmanaged>MF_SERVICE_LOOKUP_UPSTREAM</unmanaged>\t\n            <unmanaged-short>MF_SERVICE_LOOKUP_UPSTREAM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ServiceLookupType.UpstreamDirect\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_SERVICE_LOOKUP_UPSTREAM_DIRECT']/*\"/>\t\n            <unmanaged>MF_SERVICE_LOOKUP_UPSTREAM_DIRECT</unmanaged>\t\n            <unmanaged-short>MF_SERVICE_LOOKUP_UPSTREAM_DIRECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ServiceLookupType.Downstream\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_SERVICE_LOOKUP_DOWNSTREAM']/*\"/>\t\n            <unmanaged>MF_SERVICE_LOOKUP_DOWNSTREAM</unmanaged>\t\n            <unmanaged-short>MF_SERVICE_LOOKUP_DOWNSTREAM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ServiceLookupType.DownstreamDirect\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_SERVICE_LOOKUP_DOWNSTREAM_DIRECT']/*\"/>\t\n            <unmanaged>MF_SERVICE_LOOKUP_DOWNSTREAM_DIRECT</unmanaged>\t\n            <unmanaged-short>MF_SERVICE_LOOKUP_DOWNSTREAM_DIRECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ServiceLookupType.All\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_SERVICE_LOOKUP_ALL']/*\"/>\t\n            <unmanaged>MF_SERVICE_LOOKUP_ALL</unmanaged>\t\n            <unmanaged-short>MF_SERVICE_LOOKUP_ALL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ServiceLookupType.Global\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_SERVICE_LOOKUP_GLOBAL']/*\"/>\t\n            <unmanaged>MF_SERVICE_LOOKUP_GLOBAL</unmanaged>\t\n            <unmanaged-short>MF_SERVICE_LOOKUP_GLOBAL</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.SessionGetFullTopologyFlags\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Specifies how the credential manager should obtain user credentials. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The application implements the credential manager, which must expose the <strong><see cref=\"T:SharpDX.MediaFoundation.NetCredentialManager\"/></strong> interface. If the <strong><see cref=\"F:SharpDX.MediaFoundation.NetCredentialRequirements.RequirePrompt\"/></strong> flag is set, the credential manager should prompt the user for his or her name and password.</p><p>The credential cache object sets the <strong><see cref=\"F:SharpDX.MediaFoundation.NetCredentialRequirements.RequirePrompt\"/></strong> flag if the cache does not yet contain valid credentials. It also sets this flag if the credentials will be sent as plain text, unless the credential manager previously set the <strong><see cref=\"F:SharpDX.MediaFoundation.NetCredentialOptions.MfnetCredentialAllowClearText\"/></strong> option. (See <strong><see cref=\"M:SharpDX.MediaFoundation.NetCredentialCache.SetUserOptions(SharpDX.MediaFoundation.NetCredential,System.Int32)\"/></strong>.)</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFSESSION_GETFULLTOPOLOGY_FLAGS']/*\"/>\t\n            <msdn-id>ms700813</msdn-id>\t\n            <unmanaged>MFSESSION_GETFULLTOPOLOGY_FLAGS</unmanaged>\t\n            <unmanaged-short>MFSESSION_GETFULLTOPOLOGY_FLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.SessionGetFullTopologyFlags.Current\">\n            <summary>\t\n            <dd> <p> The credential manager should prompt the user to provide the credentials. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFSESSION_GETFULLTOPOLOGY_CURRENT']/*\"/>\t\n            <msdn-id>ms700813</msdn-id>\t\n            <unmanaged>MFSESSION_GETFULLTOPOLOGY_CURRENT</unmanaged>\t\n            <unmanaged-short>MFSESSION_GETFULLTOPOLOGY_CURRENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.SessionGetFullTopologyFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.SessionSetTopologyFlags\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Defines the behavior of the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaSession.SetTopology(System.Int32,SharpDX.MediaFoundation.Topology)\"/></strong> method.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p> These flags are optional, and are not mutually exclusive. If no flags are set, the Media Session resolves the topology and then adds it to the queue of pending presentations. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFSESSION_SETTOPOLOGY_FLAGS']/*\"/>\t\n            <msdn-id>ms696169</msdn-id>\t\n            <unmanaged>MFSESSION_SETTOPOLOGY_FLAGS</unmanaged>\t\n            <unmanaged-short>MFSESSION_SETTOPOLOGY_FLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.SessionSetTopologyFlags.Immediate\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFSESSION_SETTOPOLOGY_IMMEDIATE']/*\"/>\t\n            <unmanaged>MFSESSION_SETTOPOLOGY_IMMEDIATE</unmanaged>\t\n            <unmanaged-short>MFSESSION_SETTOPOLOGY_IMMEDIATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.SessionSetTopologyFlags.Noresolution\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFSESSION_SETTOPOLOGY_NORESOLUTION']/*\"/>\t\n            <unmanaged>MFSESSION_SETTOPOLOGY_NORESOLUTION</unmanaged>\t\n            <unmanaged-short>MFSESSION_SETTOPOLOGY_NORESOLUTION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.SessionSetTopologyFlags.ClearCurrent\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFSESSION_SETTOPOLOGY_CLEAR_CURRENT']/*\"/>\t\n            <unmanaged>MFSESSION_SETTOPOLOGY_CLEAR_CURRENT</unmanaged>\t\n            <unmanaged-short>MFSESSION_SETTOPOLOGY_CLEAR_CURRENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.SessionSetTopologyFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.ShutdownStatus\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Describes the current status of a call to the <strong><see cref=\"M:SharpDX.MediaFoundation.Shutdownable.Shutdown\"/></strong> method.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFSHUTDOWN_STATUS']/*\"/>\t\n            <msdn-id>ms701630</msdn-id>\t\n            <unmanaged>MFSHUTDOWN_STATUS</unmanaged>\t\n            <unmanaged-short>MFSHUTDOWN_STATUS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ShutdownStatus.Initiated\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFSHUTDOWN_INITIATED']/*\"/>\t\n            <unmanaged>MFSHUTDOWN_INITIATED</unmanaged>\t\n            <unmanaged-short>MFSHUTDOWN_INITIATED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ShutdownStatus.Completed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFSHUTDOWN_COMPLETED']/*\"/>\t\n            <unmanaged>MFSHUTDOWN_COMPLETED</unmanaged>\t\n            <unmanaged-short>MFSHUTDOWN_COMPLETED</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.SinkWmdrmaction\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Specifies how the credential manager should obtain user credentials. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The application implements the credential manager, which must expose the <strong><see cref=\"T:SharpDX.MediaFoundation.NetCredentialManager\"/></strong> interface. If the <strong><see cref=\"F:SharpDX.MediaFoundation.NetCredentialRequirements.RequirePrompt\"/></strong> flag is set, the credential manager should prompt the user for his or her name and password.</p><p>The credential cache object sets the <strong><see cref=\"F:SharpDX.MediaFoundation.NetCredentialRequirements.RequirePrompt\"/></strong> flag if the cache does not yet contain valid credentials. It also sets this flag if the credentials will be sent as plain text, unless the credential manager previously set the <strong><see cref=\"F:SharpDX.MediaFoundation.NetCredentialOptions.MfnetCredentialAllowClearText\"/></strong> option. (See <strong><see cref=\"M:SharpDX.MediaFoundation.NetCredentialCache.SetUserOptions(SharpDX.MediaFoundation.NetCredential,System.Int32)\"/></strong>.)</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFSINK_WMDRMACTION']/*\"/>\t\n            <msdn-id>ms700813</msdn-id>\t\n            <unmanaged>MFSINK_WMDRMACTION</unmanaged>\t\n            <unmanaged-short>MFSINK_WMDRMACTION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.SinkWmdrmaction.Undefined\">\n            <summary>\t\n            <dd> <p> The credential manager should prompt the user to provide the credentials. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFSINK_WMDRMACTION_UNDEFINED']/*\"/>\t\n            <msdn-id>ms700813</msdn-id>\t\n            <unmanaged>MFSINK_WMDRMACTION_UNDEFINED</unmanaged>\t\n            <unmanaged-short>MFSINK_WMDRMACTION_UNDEFINED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.SinkWmdrmaction.Encode\">\n            <summary>\t\n            <dd> <p> </p><p><strong>Note</strong>??Requires Windows?7 or later.</p> <p>The credentials are saved to persistent storage. This flag acts as a hint for the application's UI. If the application prompts the user for credentials, the UI can indicate that the credentials have already been saved.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFSINK_WMDRMACTION_ENCODE']/*\"/>\t\n            <msdn-id>ms700813</msdn-id>\t\n            <unmanaged>MFSINK_WMDRMACTION_ENCODE</unmanaged>\t\n            <unmanaged-short>MFSINK_WMDRMACTION_ENCODE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.SinkWmdrmaction.Transcode\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFSINK_WMDRMACTION_TRANSCODE']/*\"/>\t\n            <unmanaged>MFSINK_WMDRMACTION_TRANSCODE</unmanaged>\t\n            <unmanaged-short>MFSINK_WMDRMACTION_TRANSCODE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.SinkWmdrmaction.Transcrypt\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFSINK_WMDRMACTION_TRANSCRYPT']/*\"/>\t\n            <unmanaged>MFSINK_WMDRMACTION_TRANSCRYPT</unmanaged>\t\n            <unmanaged-short>MFSINK_WMDRMACTION_TRANSCRYPT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.SinkWmdrmaction.Last\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFSINK_WMDRMACTION_LAST']/*\"/>\t\n            <unmanaged>MFSINK_WMDRMACTION_LAST</unmanaged>\t\n            <unmanaged-short>MFSINK_WMDRMACTION_LAST</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.SinkWriterIndex\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='__MIDL___MIDL_itf_mfreadwrite_0000_0003_0001']/*\"/>\t\n            <unmanaged>__MIDL___MIDL_itf_mfreadwrite_0000_0003_0001</unmanaged>\t\n            <unmanaged-short>__MIDL___MIDL_itf_mfreadwrite_0000_0003_0001</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.SinkWriterIndex.InvalidStreamIndex\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_SINK_WRITER_INVALID_STREAM_INDEX']/*\"/>\t\n            <unmanaged>MF_SINK_WRITER_INVALID_STREAM_INDEX</unmanaged>\t\n            <unmanaged-short>MF_SINK_WRITER_INVALID_STREAM_INDEX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.SinkWriterIndex.AllStreams\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_SINK_WRITER_ALL_STREAMS']/*\"/>\t\n            <unmanaged>MF_SINK_WRITER_ALL_STREAMS</unmanaged>\t\n            <unmanaged-short>MF_SINK_WRITER_ALL_STREAMS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.SinkWriterIndex.MediaSink\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_SINK_WRITER_MEDIASINK']/*\"/>\t\n            <unmanaged>MF_SINK_WRITER_MEDIASINK</unmanaged>\t\n            <unmanaged-short>MF_SINK_WRITER_MEDIASINK</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.SourceReaderControlFlags\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Contains flags for the <strong><see cref=\"M:SharpDX.MediaFoundation.SourceReader.ReadSample(System.Int32,SharpDX.MediaFoundation.SourceReaderControlFlags,System.Int32@,SharpDX.MediaFoundation.SourceReaderFlags@,System.Int64@)\"/></strong> method.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_SOURCE_READER_CONTROL_FLAG']/*\"/>\t\n            <msdn-id>dd375771</msdn-id>\t\n            <unmanaged>MF_SOURCE_READER_CONTROL_FLAG</unmanaged>\t\n            <unmanaged-short>MF_SOURCE_READER_CONTROL_FLAG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.SourceReaderControlFlags.ControlfDrain\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_SOURCE_READER_CONTROLF_DRAIN']/*\"/>\t\n            <unmanaged>MF_SOURCE_READER_CONTROLF_DRAIN</unmanaged>\t\n            <unmanaged-short>MF_SOURCE_READER_CONTROLF_DRAIN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.SourceReaderControlFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.SourceReaderFlags\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Contains flags that indicate the status of the <strong><see cref=\"M:SharpDX.MediaFoundation.SourceReader.ReadSample(System.Int32,SharpDX.MediaFoundation.SourceReaderControlFlags,System.Int32@,SharpDX.MediaFoundation.SourceReaderFlags@,System.Int64@)\"/></strong> method.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_SOURCE_READER_FLAG']/*\"/>\t\n            <msdn-id>dd375773</msdn-id>\t\n            <unmanaged>MF_SOURCE_READER_FLAG</unmanaged>\t\n            <unmanaged-short>MF_SOURCE_READER_FLAG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.SourceReaderFlags.Error\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_SOURCE_READERF_ERROR']/*\"/>\t\n            <unmanaged>MF_SOURCE_READERF_ERROR</unmanaged>\t\n            <unmanaged-short>MF_SOURCE_READERF_ERROR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.SourceReaderFlags.Endofstream\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_SOURCE_READERF_ENDOFSTREAM']/*\"/>\t\n            <unmanaged>MF_SOURCE_READERF_ENDOFSTREAM</unmanaged>\t\n            <unmanaged-short>MF_SOURCE_READERF_ENDOFSTREAM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.SourceReaderFlags.Newstream\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_SOURCE_READERF_NEWSTREAM']/*\"/>\t\n            <unmanaged>MF_SOURCE_READERF_NEWSTREAM</unmanaged>\t\n            <unmanaged-short>MF_SOURCE_READERF_NEWSTREAM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.SourceReaderFlags.Nativemediatypechanged\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_SOURCE_READERF_NATIVEMEDIATYPECHANGED']/*\"/>\t\n            <unmanaged>MF_SOURCE_READERF_NATIVEMEDIATYPECHANGED</unmanaged>\t\n            <unmanaged-short>MF_SOURCE_READERF_NATIVEMEDIATYPECHANGED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.SourceReaderFlags.Currentmediatypechanged\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_SOURCE_READERF_CURRENTMEDIATYPECHANGED']/*\"/>\t\n            <unmanaged>MF_SOURCE_READERF_CURRENTMEDIATYPECHANGED</unmanaged>\t\n            <unmanaged-short>MF_SOURCE_READERF_CURRENTMEDIATYPECHANGED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.SourceReaderFlags.StreamTick\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_SOURCE_READERF_STREAMTICK']/*\"/>\t\n            <unmanaged>MF_SOURCE_READERF_STREAMTICK</unmanaged>\t\n            <unmanaged-short>MF_SOURCE_READERF_STREAMTICK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.SourceReaderFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.SourceReaderIndex\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='__MIDL___MIDL_itf_mfreadwrite_0000_0001_0001']/*\"/>\t\n            <unmanaged>__MIDL___MIDL_itf_mfreadwrite_0000_0001_0001</unmanaged>\t\n            <unmanaged-short>__MIDL___MIDL_itf_mfreadwrite_0000_0001_0001</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.SourceReaderIndex.InvalidStreamIndex\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_SOURCE_READER_INVALID_STREAM_INDEX']/*\"/>\t\n            <unmanaged>MF_SOURCE_READER_INVALID_STREAM_INDEX</unmanaged>\t\n            <unmanaged-short>MF_SOURCE_READER_INVALID_STREAM_INDEX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.SourceReaderIndex.AllStreams\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_SOURCE_READER_ALL_STREAMS']/*\"/>\t\n            <unmanaged>MF_SOURCE_READER_ALL_STREAMS</unmanaged>\t\n            <unmanaged-short>MF_SOURCE_READER_ALL_STREAMS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.SourceReaderIndex.AnyStream\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_SOURCE_READER_ANY_STREAM']/*\"/>\t\n            <unmanaged>MF_SOURCE_READER_ANY_STREAM</unmanaged>\t\n            <unmanaged-short>MF_SOURCE_READER_ANY_STREAM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.SourceReaderIndex.FirstAudioStream\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_SOURCE_READER_FIRST_AUDIO_STREAM']/*\"/>\t\n            <unmanaged>MF_SOURCE_READER_FIRST_AUDIO_STREAM</unmanaged>\t\n            <unmanaged-short>MF_SOURCE_READER_FIRST_AUDIO_STREAM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.SourceReaderIndex.FirstVideoStream\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_SOURCE_READER_FIRST_VIDEO_STREAM']/*\"/>\t\n            <unmanaged>MF_SOURCE_READER_FIRST_VIDEO_STREAM</unmanaged>\t\n            <unmanaged-short>MF_SOURCE_READER_FIRST_VIDEO_STREAM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.SourceReaderIndex.MediaSource\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_SOURCE_READER_MEDIASOURCE']/*\"/>\t\n            <unmanaged>MF_SOURCE_READER_MEDIASOURCE</unmanaged>\t\n            <unmanaged-short>MF_SOURCE_READER_MEDIASOURCE</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.SourceResolverFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='__MIDL___MIDL_itf_mfidl_0000_0001_0001']/*\"/>\t\n            <unmanaged>__MIDL___MIDL_itf_mfidl_0000_0001_0001</unmanaged>\t\n            <unmanaged-short>__MIDL___MIDL_itf_mfidl_0000_0001_0001</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.SourceResolverFlags.MediaSource\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_RESOLUTION_MEDIASOURCE']/*\"/>\t\n            <unmanaged>MF_RESOLUTION_MEDIASOURCE</unmanaged>\t\n            <unmanaged-short>MF_RESOLUTION_MEDIASOURCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.SourceResolverFlags.ByteStream\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_RESOLUTION_BYTESTREAM']/*\"/>\t\n            <unmanaged>MF_RESOLUTION_BYTESTREAM</unmanaged>\t\n            <unmanaged-short>MF_RESOLUTION_BYTESTREAM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.SourceResolverFlags.ContentDoesNotHaveToMatchExtensionOrMimeType\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_RESOLUTION_CONTENT_DOES_NOT_HAVE_TO_MATCH_EXTENSION_OR_MIME_TYPE']/*\"/>\t\n            <unmanaged>MF_RESOLUTION_CONTENT_DOES_NOT_HAVE_TO_MATCH_EXTENSION_OR_MIME_TYPE</unmanaged>\t\n            <unmanaged-short>MF_RESOLUTION_CONTENT_DOES_NOT_HAVE_TO_MATCH_EXTENSION_OR_MIME_TYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.SourceResolverFlags.KeepByteStreamAliveOnFail\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_RESOLUTION_KEEP_BYTE_STREAM_ALIVE_ON_FAIL']/*\"/>\t\n            <unmanaged>MF_RESOLUTION_KEEP_BYTE_STREAM_ALIVE_ON_FAIL</unmanaged>\t\n            <unmanaged-short>MF_RESOLUTION_KEEP_BYTE_STREAM_ALIVE_ON_FAIL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.SourceResolverFlags.Read\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_RESOLUTION_READ']/*\"/>\t\n            <unmanaged>MF_RESOLUTION_READ</unmanaged>\t\n            <unmanaged-short>MF_RESOLUTION_READ</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.SourceResolverFlags.Write\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_RESOLUTION_WRITE']/*\"/>\t\n            <unmanaged>MF_RESOLUTION_WRITE</unmanaged>\t\n            <unmanaged-short>MF_RESOLUTION_WRITE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.SourceResolverFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.StandardVideoFormat\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Specifies how the credential manager should obtain user credentials. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The application implements the credential manager, which must expose the <strong><see cref=\"T:SharpDX.MediaFoundation.NetCredentialManager\"/></strong> interface. If the <strong><see cref=\"F:SharpDX.MediaFoundation.NetCredentialRequirements.RequirePrompt\"/></strong> flag is set, the credential manager should prompt the user for his or her name and password.</p><p>The credential cache object sets the <strong><see cref=\"F:SharpDX.MediaFoundation.NetCredentialRequirements.RequirePrompt\"/></strong> flag if the cache does not yet contain valid credentials. It also sets this flag if the credentials will be sent as plain text, unless the credential manager previously set the <strong><see cref=\"F:SharpDX.MediaFoundation.NetCredentialOptions.MfnetCredentialAllowClearText\"/></strong> option. (See <strong><see cref=\"M:SharpDX.MediaFoundation.NetCredentialCache.SetUserOptions(SharpDX.MediaFoundation.NetCredential,System.Int32)\"/></strong>.)</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFStandardVideoFormat']/*\"/>\t\n            <msdn-id>ms700813</msdn-id>\t\n            <unmanaged>MFStandardVideoFormat</unmanaged>\t\n            <unmanaged-short>MFStandardVideoFormat</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.StandardVideoFormat.DVideoFormatReserved\">\n            <summary>\t\n            <dd> <p> The credential manager should prompt the user to provide the credentials. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFStdVideoFormat_reserved']/*\"/>\t\n            <msdn-id>ms700813</msdn-id>\t\n            <unmanaged>MFStdVideoFormat_reserved</unmanaged>\t\n            <unmanaged-short>MFStdVideoFormat_reserved</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.StandardVideoFormat.DVideoFormatNtsc\">\n            <summary>\t\n            <dd> <p> </p><p><strong>Note</strong>??Requires Windows?7 or later.</p> <p>The credentials are saved to persistent storage. This flag acts as a hint for the application's UI. If the application prompts the user for credentials, the UI can indicate that the credentials have already been saved.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFStdVideoFormat_NTSC']/*\"/>\t\n            <msdn-id>ms700813</msdn-id>\t\n            <unmanaged>MFStdVideoFormat_NTSC</unmanaged>\t\n            <unmanaged-short>MFStdVideoFormat_NTSC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.StandardVideoFormat.DVideoFormatPal\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFStdVideoFormat_PAL']/*\"/>\t\n            <unmanaged>MFStdVideoFormat_PAL</unmanaged>\t\n            <unmanaged-short>MFStdVideoFormat_PAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.StandardVideoFormat.DVideoFormatDvdNtsc\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFStdVideoFormat_DVD_NTSC']/*\"/>\t\n            <unmanaged>MFStdVideoFormat_DVD_NTSC</unmanaged>\t\n            <unmanaged-short>MFStdVideoFormat_DVD_NTSC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.StandardVideoFormat.DVideoFormatDvdPal\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFStdVideoFormat_DVD_PAL']/*\"/>\t\n            <unmanaged>MFStdVideoFormat_DVD_PAL</unmanaged>\t\n            <unmanaged-short>MFStdVideoFormat_DVD_PAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.StandardVideoFormat.DVideoFormatDvPal\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFStdVideoFormat_DV_PAL']/*\"/>\t\n            <unmanaged>MFStdVideoFormat_DV_PAL</unmanaged>\t\n            <unmanaged-short>MFStdVideoFormat_DV_PAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.StandardVideoFormat.DVideoFormatDvNtsc\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFStdVideoFormat_DV_NTSC']/*\"/>\t\n            <unmanaged>MFStdVideoFormat_DV_NTSC</unmanaged>\t\n            <unmanaged-short>MFStdVideoFormat_DV_NTSC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.StandardVideoFormat.DVideoFormatAtscSD480i\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFStdVideoFormat_ATSC_SD480i']/*\"/>\t\n            <unmanaged>MFStdVideoFormat_ATSC_SD480i</unmanaged>\t\n            <unmanaged-short>MFStdVideoFormat_ATSC_SD480i</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.StandardVideoFormat.DVideoFormatAtscHD1080i\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFStdVideoFormat_ATSC_HD1080i']/*\"/>\t\n            <unmanaged>MFStdVideoFormat_ATSC_HD1080i</unmanaged>\t\n            <unmanaged-short>MFStdVideoFormat_ATSC_HD1080i</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.StandardVideoFormat.DVideoFormatAtscHD720p\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFStdVideoFormat_ATSC_HD720p']/*\"/>\t\n            <unmanaged>MFStdVideoFormat_ATSC_HD720p</unmanaged>\t\n            <unmanaged-short>MFStdVideoFormat_ATSC_HD720p</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.StreamsInkMarkerType\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Places a marker in the stream. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This method causes the stream sink to send an <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.StreamSinkMarker\"/> event after the stream sink consumes all of the samples that were delivered up to this point (before the call to <strong>PlaceMarker</strong>).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFSTREAMSINK_MARKER_TYPE']/*\"/>\t\n            <msdn-id>ms703026</msdn-id>\t\n            <unmanaged>MFSTREAMSINK_MARKER_TYPE</unmanaged>\t\n            <unmanaged-short>MFSTREAMSINK_MARKER_TYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.StreamsInkMarkerType.Default\">\n            <summary>\t\n            <dd> <p> Specifies the marker type, as a member of the <strong><see cref=\"T:SharpDX.MediaFoundation.StreamsInkMarkerType\"/></strong> enumeration. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFSTREAMSINK_MARKER_DEFAULT']/*\"/>\t\n            <msdn-id>ms703026</msdn-id>\t\n            <unmanaged>MFSTREAMSINK_MARKER_DEFAULT</unmanaged>\t\n            <unmanaged-short>MFSTREAMSINK_MARKER_DEFAULT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.StreamsInkMarkerType.Endofsegment\">\n            <summary>\t\n            <dd> <p> Optional reference to a <strong><see cref=\"T:SharpDX.Win32.Variant\"/></strong> that contains additional information related to the marker. The meaning of this value depends on the marker type. This parameter can be <strong><c>null</c></strong>. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFSTREAMSINK_MARKER_ENDOFSEGMENT']/*\"/>\t\n            <msdn-id>ms703026</msdn-id>\t\n            <unmanaged>MFSTREAMSINK_MARKER_ENDOFSEGMENT</unmanaged>\t\n            <unmanaged-short>MFSTREAMSINK_MARKER_ENDOFSEGMENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.StreamsInkMarkerType.Tick\">\n            <summary>\t\n            <dd> <p> Optional reference to a <strong><see cref=\"T:SharpDX.Win32.Variant\"/></strong> that is attached to the <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.StreamSinkMarker\"/> event. Call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaEvent.GetValue(SharpDX.Win32.Variant@)\"/></strong> to get this value from the event. The caller can use this information for any purpose. This parameter can be <strong><c>null</c></strong>. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFSTREAMSINK_MARKER_TICK']/*\"/>\t\n            <msdn-id>ms703026</msdn-id>\t\n            <unmanaged>MFSTREAMSINK_MARKER_TICK</unmanaged>\t\n            <unmanaged-short>MFSTREAMSINK_MARKER_TICK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.StreamsInkMarkerType.Event\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFSTREAMSINK_MARKER_EVENT']/*\"/>\t\n            <unmanaged>MFSTREAMSINK_MARKER_EVENT</unmanaged>\t\n            <unmanaged-short>MFSTREAMSINK_MARKER_EVENT</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.TimerFlags\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Specifies how the credential manager should obtain user credentials. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The application implements the credential manager, which must expose the <strong><see cref=\"T:SharpDX.MediaFoundation.NetCredentialManager\"/></strong> interface. If the <strong><see cref=\"F:SharpDX.MediaFoundation.NetCredentialRequirements.RequirePrompt\"/></strong> flag is set, the credential manager should prompt the user for his or her name and password.</p><p>The credential cache object sets the <strong><see cref=\"F:SharpDX.MediaFoundation.NetCredentialRequirements.RequirePrompt\"/></strong> flag if the cache does not yet contain valid credentials. It also sets this flag if the credentials will be sent as plain text, unless the credential manager previously set the <strong><see cref=\"F:SharpDX.MediaFoundation.NetCredentialOptions.MfnetCredentialAllowClearText\"/></strong> option. (See <strong><see cref=\"M:SharpDX.MediaFoundation.NetCredentialCache.SetUserOptions(SharpDX.MediaFoundation.NetCredential,System.Int32)\"/></strong>.)</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFTIMER_FLAGS']/*\"/>\t\n            <msdn-id>ms700813</msdn-id>\t\n            <unmanaged>MFTIMER_FLAGS</unmanaged>\t\n            <unmanaged-short>MFTIMER_FLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TimerFlags.Relative\">\n            <summary>\t\n            <dd> <p> The credential manager should prompt the user to provide the credentials. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFTIMER_RELATIVE']/*\"/>\t\n            <msdn-id>ms700813</msdn-id>\t\n            <unmanaged>MFTIMER_RELATIVE</unmanaged>\t\n            <unmanaged-short>MFTIMER_RELATIVE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TimerFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.TMessageType\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Sends a message to the Media Foundation transform (MFT). </p>\t\n            </summary>\t\n            <remarks>\t\n            <p> Before calling this method, set the media types on all input and output streams. </p><p> The MFT might ignore certain message types. If so, the method returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. An error code indicates that the transform handles this message type but was unable to process the message in this instance. </p><p>If <strong>MFT_UNIQUE_METHOD_NAMES</strong> is defined before including mftransform.h, this method is renamed <strong>MFTProcessMessage</strong>. See Creating Hybrid DMO/MFT Objects.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFT_MESSAGE_TYPE']/*\"/>\t\n            <msdn-id>ms701863</msdn-id>\t\n            <unmanaged>MFT_MESSAGE_TYPE</unmanaged>\t\n            <unmanaged-short>MFT_MESSAGE_TYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TMessageType.CommandFlush\">\n            <summary>\t\n            <dd> <p> The message to send, specified as a member of the <strong><see cref=\"T:SharpDX.MediaFoundation.TMessageType\"/></strong> enumeration. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFT_MESSAGE_COMMAND_FLUSH']/*\"/>\t\n            <msdn-id>ms701863</msdn-id>\t\n            <unmanaged>MFT_MESSAGE_COMMAND_FLUSH</unmanaged>\t\n            <unmanaged-short>MFT_MESSAGE_COMMAND_FLUSH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TMessageType.CommandDrain\">\n            <summary>\t\n            <dd> <p> Message parameter. The meaning of this parameter depends on the message type. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFT_MESSAGE_COMMAND_DRAIN']/*\"/>\t\n            <msdn-id>ms701863</msdn-id>\t\n            <unmanaged>MFT_MESSAGE_COMMAND_DRAIN</unmanaged>\t\n            <unmanaged-short>MFT_MESSAGE_COMMAND_DRAIN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TMessageType.SetD3DManager\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFT_MESSAGE_SET_D3D_MANAGER']/*\"/>\t\n            <unmanaged>MFT_MESSAGE_SET_D3D_MANAGER</unmanaged>\t\n            <unmanaged-short>MFT_MESSAGE_SET_D3D_MANAGER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TMessageType.DropSamples\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFT_MESSAGE_DROP_SAMPLES']/*\"/>\t\n            <unmanaged>MFT_MESSAGE_DROP_SAMPLES</unmanaged>\t\n            <unmanaged-short>MFT_MESSAGE_DROP_SAMPLES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TMessageType.NotifyBeginStreaming\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFT_MESSAGE_NOTIFY_BEGIN_STREAMING']/*\"/>\t\n            <unmanaged>MFT_MESSAGE_NOTIFY_BEGIN_STREAMING</unmanaged>\t\n            <unmanaged-short>MFT_MESSAGE_NOTIFY_BEGIN_STREAMING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TMessageType.NotifyEndStreaming\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFT_MESSAGE_NOTIFY_END_STREAMING']/*\"/>\t\n            <unmanaged>MFT_MESSAGE_NOTIFY_END_STREAMING</unmanaged>\t\n            <unmanaged-short>MFT_MESSAGE_NOTIFY_END_STREAMING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TMessageType.NotifyEndOfStream\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFT_MESSAGE_NOTIFY_END_OF_STREAM']/*\"/>\t\n            <unmanaged>MFT_MESSAGE_NOTIFY_END_OF_STREAM</unmanaged>\t\n            <unmanaged-short>MFT_MESSAGE_NOTIFY_END_OF_STREAM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TMessageType.NotifyStartOfStream\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFT_MESSAGE_NOTIFY_START_OF_STREAM']/*\"/>\t\n            <unmanaged>MFT_MESSAGE_NOTIFY_START_OF_STREAM</unmanaged>\t\n            <unmanaged-short>MFT_MESSAGE_NOTIFY_START_OF_STREAM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TMessageType.CommandMarker\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFT_MESSAGE_COMMAND_MARKER']/*\"/>\t\n            <unmanaged>MFT_MESSAGE_COMMAND_MARKER</unmanaged>\t\n            <unmanaged-short>MFT_MESSAGE_COMMAND_MARKER</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.TopologyDxvaMode\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Specifies whether the topology loader enables Microsoft DirectX Video Acceleration (DXVA) in the topology.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This enumeration is used with the <see cref=\"F:SharpDX.MediaFoundation.TopologyAttributeKeys.DXVAMode\"/> topology attribute.</p><p>If an MFT supports DXVA, the MFT must return <strong>TRUE</strong> for the <strong><see cref=\"F:SharpDX.MediaFoundation.TransformAttributeKeys.D3DAware\"/></strong> attribute. To enable DXVA, the topology loader calls <strong><see cref=\"M:SharpDX.MediaFoundation.Transform.ProcessMessage(SharpDX.MediaFoundation.TMessageType,System.IntPtr)\"/></strong> on the MFT, passing the MFT a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.IDirect3DDeviceManager9\"/></strong> interface. The topology loader gets the <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.IDirect3DDeviceManager9\"/></strong> reference from the media sink for the video stream. Typically the enhanced video renderer (EVR) is the media sink.</p><p>Previous versions of Microsoft Media Foundation supported DXVA only for decoders.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFTOPOLOGY_DXVA_MODE']/*\"/>\t\n            <msdn-id>dd388653</msdn-id>\t\n            <unmanaged>MFTOPOLOGY_DXVA_MODE</unmanaged>\t\n            <unmanaged-short>MFTOPOLOGY_DXVA_MODE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TopologyDxvaMode.Default\">\n            <summary>\t\n            <dd> <p>The topology loader enables DXVA\t\n            on the decoder if possible, and drops optional Media Foundation transforms (MFTs) that do not support DXVA.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFTOPOLOGY_DXVA_DEFAULT']/*\"/>\t\n            <msdn-id>dd388653</msdn-id>\t\n            <unmanaged>MFTOPOLOGY_DXVA_DEFAULT</unmanaged>\t\n            <unmanaged-short>MFTOPOLOGY_DXVA_DEFAULT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TopologyDxvaMode.None\">\n            <summary>\t\n            <dd> <p>The topology loader disables all video acceleration. This setting forces software processing, even when the decoder supports DXVA.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFTOPOLOGY_DXVA_NONE']/*\"/>\t\n            <msdn-id>dd388653</msdn-id>\t\n            <unmanaged>MFTOPOLOGY_DXVA_NONE</unmanaged>\t\n            <unmanaged-short>MFTOPOLOGY_DXVA_NONE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TopologyDxvaMode.Full\">\n            <summary>\t\n            <dd> <p>The topology loader enables DXVA on every MFT that supports it.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFTOPOLOGY_DXVA_FULL']/*\"/>\t\n            <msdn-id>dd388653</msdn-id>\t\n            <unmanaged>MFTOPOLOGY_DXVA_FULL</unmanaged>\t\n            <unmanaged-short>MFTOPOLOGY_DXVA_FULL</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.TopologyHardwareMode\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Specifies whether the topology loader will insert hardware-based Media Foundation transforms (MFTs) into the topology.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p> This enumeration is used with the <see cref=\"F:SharpDX.MediaFoundation.TopologyAttributeKeys.HardwareMode\"/> topology attribute. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFTOPOLOGY_HARDWARE_MODE']/*\"/>\t\n            <msdn-id>dd388654</msdn-id>\t\n            <unmanaged>MFTOPOLOGY_HARDWARE_MODE</unmanaged>\t\n            <unmanaged-short>MFTOPOLOGY_HARDWARE_MODE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TopologyHardwareMode.WmodeSoftwareOnly\">\n            <summary>\t\n            <dd> <p>Use only software  MFTs. Do not use hardware-based MFTs. This mode is the default, for backward compatibility with existing applications.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFTOPOLOGY_HWMODE_SOFTWARE_ONLY']/*\"/>\t\n            <msdn-id>dd388654</msdn-id>\t\n            <unmanaged>MFTOPOLOGY_HWMODE_SOFTWARE_ONLY</unmanaged>\t\n            <unmanaged-short>MFTOPOLOGY_HWMODE_SOFTWARE_ONLY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TopologyHardwareMode.WmodeUseHardware\">\n            <summary>\t\n            <dd> <p>Use hardware-based MFTs when possible, and software MFTs otherwise. This mode is the recommended one.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFTOPOLOGY_HWMODE_USE_HARDWARE']/*\"/>\t\n            <msdn-id>dd388654</msdn-id>\t\n            <unmanaged>MFTOPOLOGY_HWMODE_USE_HARDWARE</unmanaged>\t\n            <unmanaged-short>MFTOPOLOGY_HWMODE_USE_HARDWARE</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.TopologyResolutionStatusFlags\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Defines status flags for the <strong><see cref=\"F:SharpDX.MediaFoundation.TopologyAttributeKeys.ResolutionStatus\"/></strong> attribute.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_TOPOLOGY_RESOLUTION_STATUS_FLAGS']/*\"/>\t\n            <msdn-id>ms704637</msdn-id>\t\n            <unmanaged>MF_TOPOLOGY_RESOLUTION_STATUS_FLAGS</unmanaged>\t\n            <unmanaged-short>MF_TOPOLOGY_RESOLUTION_STATUS_FLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TopologyResolutionStatusFlags.MfTopologyResolutionSucceeded\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_TOPOLOGY_RESOLUTION_SUCCEEDED']/*\"/>\t\n            <unmanaged>MF_TOPOLOGY_RESOLUTION_SUCCEEDED</unmanaged>\t\n            <unmanaged-short>MF_TOPOLOGY_RESOLUTION_SUCCEEDED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TopologyResolutionStatusFlags.MfOptionalNodeRejectedMediaType\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_OPTIONAL_NODE_REJECTED_MEDIA_TYPE']/*\"/>\t\n            <unmanaged>MF_OPTIONAL_NODE_REJECTED_MEDIA_TYPE</unmanaged>\t\n            <unmanaged-short>MF_OPTIONAL_NODE_REJECTED_MEDIA_TYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TopologyResolutionStatusFlags.MfOptionalNodeRejectedProtectedProcess\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_OPTIONAL_NODE_REJECTED_PROTECTED_PROCESS']/*\"/>\t\n            <unmanaged>MF_OPTIONAL_NODE_REJECTED_PROTECTED_PROCESS</unmanaged>\t\n            <unmanaged-short>MF_OPTIONAL_NODE_REJECTED_PROTECTED_PROCESS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TopologyResolutionStatusFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.TopologyType\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Defines the type of a topology node.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_TOPOLOGY_TYPE']/*\"/>\t\n            <msdn-id>ms698973</msdn-id>\t\n            <unmanaged>MF_TOPOLOGY_TYPE</unmanaged>\t\n            <unmanaged-short>MF_TOPOLOGY_TYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TopologyType.OutputNode\">\n            <summary>\t\n            <dd> <p>Output node. Represents a media sink in the topology.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_TOPOLOGY_OUTPUT_NODE']/*\"/>\t\n            <msdn-id>ms698973</msdn-id>\t\n            <unmanaged>MF_TOPOLOGY_OUTPUT_NODE</unmanaged>\t\n            <unmanaged-short>MF_TOPOLOGY_OUTPUT_NODE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TopologyType.SourceStreamNode\">\n            <summary>\t\n            <dd> <p>Source node. Represents a media stream in the topology.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_TOPOLOGY_SOURCESTREAM_NODE']/*\"/>\t\n            <msdn-id>ms698973</msdn-id>\t\n            <unmanaged>MF_TOPOLOGY_SOURCESTREAM_NODE</unmanaged>\t\n            <unmanaged-short>MF_TOPOLOGY_SOURCESTREAM_NODE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TopologyType.TransformNode\">\n            <summary>\t\n            <dd> <p>Transform node. Represents a Media Foundation Transform (MFT) in the topology.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_TOPOLOGY_TRANSFORM_NODE']/*\"/>\t\n            <msdn-id>ms698973</msdn-id>\t\n            <unmanaged>MF_TOPOLOGY_TRANSFORM_NODE</unmanaged>\t\n            <unmanaged-short>MF_TOPOLOGY_TRANSFORM_NODE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TopologyType.TeeNode\">\n            <summary>\t\n            <dd> <p>Tee node. A tee node does not hold a reference to an object. Instead, it represents a fork in the stream. A tee node has one input and multiple outputs, and samples from the upstream node are delivered to all of the downstream nodes.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_TOPOLOGY_TEE_NODE']/*\"/>\t\n            <msdn-id>ms698973</msdn-id>\t\n            <unmanaged>MF_TOPOLOGY_TEE_NODE</unmanaged>\t\n            <unmanaged-short>MF_TOPOLOGY_TEE_NODE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TopologyType.Maximum\">\n            <summary>\t\n            <dd> <p>Reserved.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_TOPOLOGY_MAX']/*\"/>\t\n            <msdn-id>ms698973</msdn-id>\t\n            <unmanaged>MF_TOPOLOGY_MAX</unmanaged>\t\n            <unmanaged-short>MF_TOPOLOGY_MAX</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.ToponodeDrainMode\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Defines at what times a transform in a topology is drained.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_TOPONODE_DRAIN_MODE']/*\"/>\t\n            <msdn-id>aa370822</msdn-id>\t\n            <unmanaged>MF_TOPONODE_DRAIN_MODE</unmanaged>\t\n            <unmanaged-short>MF_TOPONODE_DRAIN_MODE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ToponodeDrainMode.Default\">\n            <summary>\t\n            <dd> <p>The transform is drained when the end of a stream is reached. It is not drained when markout is reached at the end of a segment.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_TOPONODE_DRAIN_DEFAULT']/*\"/>\t\n            <msdn-id>aa370822</msdn-id>\t\n            <unmanaged>MF_TOPONODE_DRAIN_DEFAULT</unmanaged>\t\n            <unmanaged-short>MF_TOPONODE_DRAIN_DEFAULT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ToponodeDrainMode.Always\">\n            <summary>\t\n            <dd> <p>The transform is drained whenever a topology ends.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_TOPONODE_DRAIN_ALWAYS']/*\"/>\t\n            <msdn-id>aa370822</msdn-id>\t\n            <unmanaged>MF_TOPONODE_DRAIN_ALWAYS</unmanaged>\t\n            <unmanaged-short>MF_TOPONODE_DRAIN_ALWAYS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ToponodeDrainMode.Never\">\n            <summary>\t\n            <dd> <p>The transform is never drained.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_TOPONODE_DRAIN_NEVER']/*\"/>\t\n            <msdn-id>aa370822</msdn-id>\t\n            <unmanaged>MF_TOPONODE_DRAIN_NEVER</unmanaged>\t\n            <unmanaged-short>MF_TOPONODE_DRAIN_NEVER</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.ToponodeFlushMode\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Defines when a transform in a topology is flushed.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_TOPONODE_FLUSH_MODE']/*\"/>\t\n            <msdn-id>ms704760</msdn-id>\t\n            <unmanaged>MF_TOPONODE_FLUSH_MODE</unmanaged>\t\n            <unmanaged-short>MF_TOPONODE_FLUSH_MODE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ToponodeFlushMode.Always\">\n            <summary>\t\n            <dd> <p>The transform is flushed whenever the stream changes, including seeks and new segments.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_TOPONODE_FLUSH_ALWAYS']/*\"/>\t\n            <msdn-id>ms704760</msdn-id>\t\n            <unmanaged>MF_TOPONODE_FLUSH_ALWAYS</unmanaged>\t\n            <unmanaged-short>MF_TOPONODE_FLUSH_ALWAYS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ToponodeFlushMode.Seek\">\n            <summary>\t\n            <dd> <p>The transform is flushed when seeking is performed on the stream.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_TOPONODE_FLUSH_SEEK']/*\"/>\t\n            <msdn-id>ms704760</msdn-id>\t\n            <unmanaged>MF_TOPONODE_FLUSH_SEEK</unmanaged>\t\n            <unmanaged-short>MF_TOPONODE_FLUSH_SEEK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ToponodeFlushMode.Never\">\n            <summary>\t\n            <dd> <p>The transform is never flushed during streaming. It is flushed only when the object is released.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_TOPONODE_FLUSH_NEVER']/*\"/>\t\n            <msdn-id>ms704760</msdn-id>\t\n            <unmanaged>MF_TOPONODE_FLUSH_NEVER</unmanaged>\t\n            <unmanaged-short>MF_TOPONODE_FLUSH_NEVER</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.Topostatus\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Specifies the status of a topology during playback. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p> This enumeration is used with the <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.SessionTopologyStatus\"/> event. The <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.SessionTopologyStatus\"/> event always has an <strong><see cref=\"F:SharpDX.MediaFoundation.EventAttributeKeys.TopologyStatus\"/></strong> attribute whose value is a member of this enumeration. </p><p> For a single topology, the Media Session sends these status flags in numerical order, starting with <strong><see cref=\"F:SharpDX.MediaFoundation.Topostatus.Ready\"/></strong>. However, there is no guarantee about the ordering of the events across two different topologies. For example, you might get <strong><see cref=\"F:SharpDX.MediaFoundation.Topostatus.Ready\"/></strong> for a topology before you get <strong><see cref=\"F:SharpDX.MediaFoundation.Topostatus.Ended\"/></strong> for the previous topology. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_TOPOSTATUS']/*\"/>\t\n            <msdn-id>aa370812</msdn-id>\t\n            <unmanaged>MF_TOPOSTATUS</unmanaged>\t\n            <unmanaged-short>MF_TOPOSTATUS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.Topostatus.Invalid\">\n            <summary>\t\n            <dd> <p> This value is not used. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_TOPOSTATUS_INVALID']/*\"/>\t\n            <msdn-id>aa370812</msdn-id>\t\n            <unmanaged>MF_TOPOSTATUS_INVALID</unmanaged>\t\n            <unmanaged-short>MF_TOPOSTATUS_INVALID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.Topostatus.Ready\">\n            <summary>\t\n            <dd> <p> The topology is ready to start. After this status flag is received, you can use the Media Session's <strong><see cref=\"M:SharpDX.MediaFoundation.ServiceProvider.GetService(System.Guid,System.Guid,System.IntPtr@)\"/></strong> method to query the topology for services, such as rate control. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_TOPOSTATUS_READY']/*\"/>\t\n            <msdn-id>aa370812</msdn-id>\t\n            <unmanaged>MF_TOPOSTATUS_READY</unmanaged>\t\n            <unmanaged-short>MF_TOPOSTATUS_READY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.Topostatus.StartedSource\">\n            <summary>\t\n            <dd> <p> The Media Session has started to read data from the media sources in the topology. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_TOPOSTATUS_STARTED_SOURCE']/*\"/>\t\n            <msdn-id>aa370812</msdn-id>\t\n            <unmanaged>MF_TOPOSTATUS_STARTED_SOURCE</unmanaged>\t\n            <unmanaged-short>MF_TOPOSTATUS_STARTED_SOURCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.Topostatus.DynamicChanged\">\n            <summary>\t\n            <dd> <p>The Media Session modified the topology, because the format of a stream changed.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_TOPOSTATUS_DYNAMIC_CHANGED']/*\"/>\t\n            <msdn-id>aa370812</msdn-id>\t\n            <unmanaged>MF_TOPOSTATUS_DYNAMIC_CHANGED</unmanaged>\t\n            <unmanaged-short>MF_TOPOSTATUS_DYNAMIC_CHANGED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.Topostatus.SinkSwitched\">\n            <summary>\t\n            <dd> <p> The media sinks have switched from the previous topology to this topology. This status value is not sent for the first topology that is played. For the first topology, the <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.SessionStarted\"/> event indicates that the media sinks have started receiving data. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_TOPOSTATUS_SINK_SWITCHED']/*\"/>\t\n            <msdn-id>aa370812</msdn-id>\t\n            <unmanaged>MF_TOPOSTATUS_SINK_SWITCHED</unmanaged>\t\n            <unmanaged-short>MF_TOPOSTATUS_SINK_SWITCHED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.Topostatus.Ended\">\n            <summary>\t\n            <dd> <p> Playback of this topology is complete. The Media Session might still use the topology internally. The Media Session does not completely release the topology until it sends the next <strong><see cref=\"F:SharpDX.MediaFoundation.Topostatus.StartedSource\"/></strong> status event or the <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.SessionEnded\"/> event. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_TOPOSTATUS_ENDED']/*\"/>\t\n            <msdn-id>aa370812</msdn-id>\t\n            <unmanaged>MF_TOPOSTATUS_ENDED</unmanaged>\t\n            <unmanaged-short>MF_TOPOSTATUS_ENDED</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.TranscodeAdjustProfileFlags\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Defines the profile flags that are set in the <see cref=\"F:SharpDX.MediaFoundation.TranscodeAttributeKeys.TranscodeAdjustProfile\"/> attribute.</p><p>These flags are checked by <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateTranscodeTopology(SharpDX.MediaFoundation.MediaSource,System.String,SharpDX.MediaFoundation.TranscodeProfile,SharpDX.MediaFoundation.Topology@)\"/></strong> during topology building. Based on these flags, <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateTranscodeTopology(SharpDX.MediaFoundation.MediaSource,System.String,SharpDX.MediaFoundation.TranscodeProfile,SharpDX.MediaFoundation.Topology@)\"/></strong> adjusts the  transcode profile by modifying the configuration settings for the streams according to the input requirements of the encoder used in the topology. </p><p>For more information about the stream settings that an application can specify, see Using the Transcode API.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>If the <strong><see cref=\"F:SharpDX.MediaFoundation.TranscodeAdjustProfileFlags.Default\"/></strong> flag is specified, the following changes are made for the video stream:</p><ul> <li>If the frame rate of the media source specified in the <em>pSrc</em> parameter of  <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateTranscodeTopology(SharpDX.MediaFoundation.MediaSource,System.String,SharpDX.MediaFoundation.TranscodeProfile,SharpDX.MediaFoundation.Topology@)\"/></strong> and the frame rate specified by the application in the <strong><see cref=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.FrameRate\"/></strong> attribute differ by less than 1/1000, the profile uses the media source frame rate. This is because the pipeline considers the difference to be negligible.</li> <li>If the application does not specify an interlaced mode by setting the <strong><see cref=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.InterlaceMode\"/></strong> attribute, the profile is changed to use progressive frames.</li> </ul><p>The <strong><see cref=\"F:SharpDX.MediaFoundation.TranscodeAdjustProfileFlags.Default\"/></strong> flag must be accompanied with the required audio and video stream attributes provided by the application. For the audio stream, the required attributes are as follows:</p><ul> <li> <strong><see cref=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.AudioNumChannels\"/></strong> </li> <li> <strong><see cref=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.AudioSamplesPerSecond\"/></strong> </li> <li> <strong><see cref=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.AudioBlockAlignment\"/></strong> </li> <li> <strong><see cref=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.AudioAvgBytesPerSecond\"/></strong> </li> <li> <strong><see cref=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.AudioBitsPerSample\"/></strong> </li> </ul><p> For the video stream, the required attributes are as follows:</p><ul> <li><strong><see cref=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.FrameRate\"/></strong></li> <li> <strong><see cref=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.FrameSize\"/></strong> </li> <li> <strong><see cref=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.AvgBitrate\"/></strong> </li> <li> <strong><see cref=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.PixelAspectRatio\"/></strong> </li> </ul><p> If these attributes are not set, <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateTranscodeTopology(SharpDX.MediaFoundation.MediaSource,System.String,SharpDX.MediaFoundation.TranscodeProfile,SharpDX.MediaFoundation.Topology@)\"/></strong> creates the topology but Media Session fails to generate the encoded file. The failure code depends on the MFT node in the topology. For example, if the application does not set the frame size, the WMV encoder fails to encode the content and application gets the <see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidMediaType\"/> error code through the Media Session.  </p><p>Use the <strong><see cref=\"F:SharpDX.MediaFoundation.TranscodeAdjustProfileFlags.UseSourceAttributes\"/></strong> flag when you want to transcode the file by using the input stream attributes. The input source stream attributes are copied to the output media type before the MFT node is inserted in the topology. If you set additional stream attributes, this flag does not overwrite the set values. Only the missing attributes are filled with the input source's attribute values. This flag is useful in remux scenario where you want to generate the output file in the same format as the input source. If you want to perform format conversion, make sure you set the <strong><see cref=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.Subtype\"/></strong> attribute for the stream to specify the encoder that topology builder must use. The transform node is added in the topology unless <see cref=\"F:SharpDX.MediaFoundation.TranscodeAttributeKeys.TranscodeDonotInsertEncoder\"/> is set. In this case, and the content is not encoded. Instead, if permitted by the container, the content is embedded in the specified container. </p><p>For example, assume that your input source is an MP3 file.  You set the container to be <strong>MFTranscodeContainerType_ASF</strong>, you do not set any stream attributes, and you set the <strong><see cref=\"F:SharpDX.MediaFoundation.TranscodeAdjustProfileFlags.UseSourceAttributes\"/></strong> flag. In this case, the generated output file is an ASF file (.wma)  containing MP3 media data. Note that if you use this flag, certain input stream attributes and the container type might not be compatible. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_TRANSCODE_ADJUST_PROFILE_FLAGS']/*\"/>\t\n            <msdn-id>dd388918</msdn-id>\t\n            <unmanaged>MF_TRANSCODE_ADJUST_PROFILE_FLAGS</unmanaged>\t\n            <unmanaged-short>MF_TRANSCODE_ADJUST_PROFILE_FLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TranscodeAdjustProfileFlags.Default\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_TRANSCODE_ADJUST_PROFILE_DEFAULT']/*\"/>\t\n            <unmanaged>MF_TRANSCODE_ADJUST_PROFILE_DEFAULT</unmanaged>\t\n            <unmanaged-short>MF_TRANSCODE_ADJUST_PROFILE_DEFAULT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TranscodeAdjustProfileFlags.UseSourceAttributes\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_TRANSCODE_ADJUST_PROFILE_USE_SOURCE_ATTRIBUTES']/*\"/>\t\n            <unmanaged>MF_TRANSCODE_ADJUST_PROFILE_USE_SOURCE_ATTRIBUTES</unmanaged>\t\n            <unmanaged-short>MF_TRANSCODE_ADJUST_PROFILE_USE_SOURCE_ATTRIBUTES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TranscodeAdjustProfileFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.TranscodeTopologymodeFlags\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Defines flags for the <see cref=\"F:SharpDX.MediaFoundation.TranscodeAttributeKeys.TranscodeTopologymode\"/> attribute.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_TRANSCODE_TOPOLOGYMODE_FLAGS']/*\"/>\t\n            <msdn-id>dd388926</msdn-id>\t\n            <unmanaged>MF_TRANSCODE_TOPOLOGYMODE_FLAGS</unmanaged>\t\n            <unmanaged-short>MF_TRANSCODE_TOPOLOGYMODE_FLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TranscodeTopologymodeFlags.SoftwareOnly\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_TRANSCODE_TOPOLOGYMODE_SOFTWARE_ONLY']/*\"/>\t\n            <unmanaged>MF_TRANSCODE_TOPOLOGYMODE_SOFTWARE_ONLY</unmanaged>\t\n            <unmanaged-short>MF_TRANSCODE_TOPOLOGYMODE_SOFTWARE_ONLY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TranscodeTopologymodeFlags.HardwareAllowEd\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_TRANSCODE_TOPOLOGYMODE_HARDWARE_ALLOWED']/*\"/>\t\n            <unmanaged>MF_TRANSCODE_TOPOLOGYMODE_HARDWARE_ALLOWED</unmanaged>\t\n            <unmanaged-short>MF_TRANSCODE_TOPOLOGYMODE_HARDWARE_ALLOWED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TranscodeTopologymodeFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.TransformEnumFlag\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Contains flags for registering and enumeration Media Foundation transforms (MFTs).</p><p>These flags are used in the following functions:</p><ul> <li> <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.TEnumEx(System.Guid,System.Int32,System.Nullable{SharpDX.MediaFoundation.TRegisterTypeInformation},System.Nullable{SharpDX.MediaFoundation.TRegisterTypeInformation},System.IntPtr@,System.Int32@)\"/></strong>: These flags control which Media Foundation transforms (MFTs) are enumerated, as well as the enumeration order.</li> <li> <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.TRegister(System.Guid,System.Guid,System.String,System.Int32,System.Int32,SharpDX.MediaFoundation.TRegisterTypeInformation[],System.Int32,SharpDX.MediaFoundation.TRegisterTypeInformation[],SharpDX.MediaFoundation.MediaAttributes)\"/></strong>: A subset of these flags are used when registering an MFT.</li> </ul>\t\n            </summary>\t\n            <remarks>\t\n            <p>For registration, these flags describe the MFT that is being registered. Some flags do not apply in that context. For enumeration, these flags control which MFTs are selected in the enumeration. For more details about the precise meaning of these flags, see the reference topics for <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.TRegister(System.Guid,System.Guid,System.String,System.Int32,System.Int32,SharpDX.MediaFoundation.TRegisterTypeInformation[],System.Int32,SharpDX.MediaFoundation.TRegisterTypeInformation[],SharpDX.MediaFoundation.MediaAttributes)\"/></strong> and <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.TEnumEx(System.Guid,System.Int32,System.Nullable{SharpDX.MediaFoundation.TRegisterTypeInformation},System.Nullable{SharpDX.MediaFoundation.TRegisterTypeInformation},System.IntPtr@,System.Int32@)\"/></strong> </p><p>For registration, the <strong><see cref=\"F:SharpDX.MediaFoundation.TransformEnumFlag.Syncmft\"/></strong>,  <strong><see cref=\"F:SharpDX.MediaFoundation.TransformEnumFlag.Asyncmft\"/></strong>, and <strong><see cref=\"F:SharpDX.MediaFoundation.TransformEnumFlag.Hardware\"/></strong> flags are mutually exclusive. For enumeration, these three flags can be combined.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='_MFT_ENUM_FLAG']/*\"/>\t\n            <msdn-id>dd389302</msdn-id>\t\n            <unmanaged>_MFT_ENUM_FLAG</unmanaged>\t\n            <unmanaged-short>_MFT_ENUM_FLAG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TransformEnumFlag.Syncmft\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFT_ENUM_FLAG_SYNCMFT']/*\"/>\t\n            <unmanaged>MFT_ENUM_FLAG_SYNCMFT</unmanaged>\t\n            <unmanaged-short>MFT_ENUM_FLAG_SYNCMFT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TransformEnumFlag.Asyncmft\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFT_ENUM_FLAG_ASYNCMFT']/*\"/>\t\n            <unmanaged>MFT_ENUM_FLAG_ASYNCMFT</unmanaged>\t\n            <unmanaged-short>MFT_ENUM_FLAG_ASYNCMFT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TransformEnumFlag.Hardware\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFT_ENUM_FLAG_HARDWARE']/*\"/>\t\n            <unmanaged>MFT_ENUM_FLAG_HARDWARE</unmanaged>\t\n            <unmanaged-short>MFT_ENUM_FLAG_HARDWARE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TransformEnumFlag.Fieldofuse\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFT_ENUM_FLAG_FIELDOFUSE']/*\"/>\t\n            <unmanaged>MFT_ENUM_FLAG_FIELDOFUSE</unmanaged>\t\n            <unmanaged-short>MFT_ENUM_FLAG_FIELDOFUSE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TransformEnumFlag.Localmft\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFT_ENUM_FLAG_LOCALMFT']/*\"/>\t\n            <unmanaged>MFT_ENUM_FLAG_LOCALMFT</unmanaged>\t\n            <unmanaged-short>MFT_ENUM_FLAG_LOCALMFT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TransformEnumFlag.TranscodeOnly\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFT_ENUM_FLAG_TRANSCODE_ONLY']/*\"/>\t\n            <unmanaged>MFT_ENUM_FLAG_TRANSCODE_ONLY</unmanaged>\t\n            <unmanaged-short>MFT_ENUM_FLAG_TRANSCODE_ONLY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TransformEnumFlag.SortAndFilter\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFT_ENUM_FLAG_SORTANDFILTER']/*\"/>\t\n            <unmanaged>MFT_ENUM_FLAG_SORTANDFILTER</unmanaged>\t\n            <unmanaged-short>MFT_ENUM_FLAG_SORTANDFILTER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TransformEnumFlag.All\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFT_ENUM_FLAG_ALL']/*\"/>\t\n            <unmanaged>MFT_ENUM_FLAG_ALL</unmanaged>\t\n            <unmanaged-short>MFT_ENUM_FLAG_ALL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TransformEnumFlag.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.TransformProcessOutputFlags\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Defines flags for the <strong><see cref=\"M:SharpDX.MediaFoundation.Transform.ProcessOutput(SharpDX.MediaFoundation.TransformProcessOutputFlags,System.Int32,SharpDX.MediaFoundation.TOutputDataBuffer,SharpDX.MediaFoundation.TransformProcessOutputStatus@)\"/></strong> method. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The values in this enumeration are not bit flags, so they should not be combined with a bitwise <strong>OR</strong>. Also, the caller should test for these flags with the equality operator, not a bitwise <strong>AND</strong>:</p><code>// Correct.\t\n            if (Buffer.dwStatus == <see cref=\"F:SharpDX.MediaFoundation.MftOutputDataBufferFlags.MftOutputDataBufferStreamEnd\"/>)\t\n            { ...\t\n            } // Incorrect.\t\n            if ((Buffer.dwStatus &amp; <see cref=\"F:SharpDX.MediaFoundation.MftOutputDataBufferFlags.MftOutputDataBufferStreamEnd\"/>) != 0)\t\n            { ...\t\n            }\t\n            </code>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='_MFT_PROCESS_OUTPUT_FLAGS']/*\"/>\t\n            <msdn-id>ms702281</msdn-id>\t\n            <unmanaged>_MFT_PROCESS_OUTPUT_FLAGS</unmanaged>\t\n            <unmanaged-short>_MFT_PROCESS_OUTPUT_FLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TransformProcessOutputFlags.MftProcessOutputDiscardWhenNoBuffer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFT_PROCESS_OUTPUT_DISCARD_WHEN_NO_BUFFER']/*\"/>\t\n            <unmanaged>MFT_PROCESS_OUTPUT_DISCARD_WHEN_NO_BUFFER</unmanaged>\t\n            <unmanaged-short>MFT_PROCESS_OUTPUT_DISCARD_WHEN_NO_BUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TransformProcessOutputFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.TransformProcessOutputStatus\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Indicates the status of a call to <strong><see cref=\"M:SharpDX.MediaFoundation.Transform.ProcessOutput(SharpDX.MediaFoundation.TransformProcessOutputFlags,System.Int32,SharpDX.MediaFoundation.TOutputDataBuffer,SharpDX.MediaFoundation.TransformProcessOutputStatus@)\"/></strong>.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>If the MFT sets this flag, the <strong>ProcessOutput</strong> method returns <see cref=\"F:SharpDX.MediaFoundation.ResultCode.TransformStreamChange\"/> and no output data is produced. The client should respond as follows:</p><ol> <li> <p>Call <strong><see cref=\"M:SharpDX.MediaFoundation.Transform.GetStreamCount(System.Int32@,System.Int32@)\"/></strong> to get the new number of streams.</p> </li> <li> <p>Call <strong><see cref=\"M:SharpDX.MediaFoundation.Transform.GetStreamIDs(System.Int32,System.Int32[],System.Int32,System.Int32[])\"/></strong> to get the new stream identifiers.</p> </li> <li> <p>Call <strong><see cref=\"M:SharpDX.MediaFoundation.Transform.GetOutputAvailableType(System.Int32,System.Int32,SharpDX.MediaFoundation.MediaType@)\"/></strong> and <strong><see cref=\"M:SharpDX.MediaFoundation.Transform.SetOutputType(System.Int32,SharpDX.MediaFoundation.MediaType,System.Int32)\"/></strong> to set the media types on the new streams.</p> </li> </ol><p>Until these steps are completed, all further calls to <strong>ProcessOutput</strong> return <see cref=\"F:SharpDX.MediaFoundation.ResultCode.TransformStreamChange\"/>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='_MFT_PROCESS_OUTPUT_STATUS']/*\"/>\t\n            <msdn-id>ms699875</msdn-id>\t\n            <unmanaged>_MFT_PROCESS_OUTPUT_STATUS</unmanaged>\t\n            <unmanaged-short>_MFT_PROCESS_OUTPUT_STATUS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TransformProcessOutputStatus.MftProcessOutputStatusNewStreams\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFT_PROCESS_OUTPUT_STATUS_NEW_STREAMS']/*\"/>\t\n            <unmanaged>MFT_PROCESS_OUTPUT_STATUS_NEW_STREAMS</unmanaged>\t\n            <unmanaged-short>MFT_PROCESS_OUTPUT_STATUS_NEW_STREAMS</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.UrlTrustStatus\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves a URL for performing a manual content enabling action.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>If the enabling action can be performed by navigating to a URL, this method returns the URL. If no such URL exists, the method returns a failure code.</p><p>The purpose of the URL depends on the content enabler type, which is obtained by calling <strong><see cref=\"M:SharpDX.MediaFoundation.ContentEnabler.GetEnableType(System.Guid@)\"/></strong>.</p><table> <tr><th>Enable type</th><th>Purpose of URL</th></tr> <tr><td>Individualization</td><td>Not applicable.</td></tr> <tr><td>License acquisition</td><td>URL to obtain the license. Call <strong><see cref=\"M:SharpDX.MediaFoundation.ContentEnabler.GetEnableData(System.Byte[],System.Int32@)\"/></strong> and submit the data to the URL as an HTTP POST request. To receive notification when the license is acquired, call <strong><see cref=\"M:SharpDX.MediaFoundation.ContentEnabler.MonitorEnable\"/></strong>.</td></tr> <tr><td>Revocation</td><td>URL to a webpage where the user can download and install an updated component.</td></tr> </table><p>?</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_URL_TRUST_STATUS']/*\"/>\t\n            <msdn-id>bb970345</msdn-id>\t\n            <unmanaged>MF_URL_TRUST_STATUS</unmanaged>\t\n            <unmanaged-short>MF_URL_TRUST_STATUS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.UrlTrustStatus.MfLicenseUrlUntrusted\">\n            <summary>\t\n            <dd> <p>Receives a reference to a buffer that contains the URL. The caller must release the memory for the buffer by calling <strong>CoTaskMemFree</strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_LICENSE_URL_UNTRUSTED']/*\"/>\t\n            <msdn-id>bb970345</msdn-id>\t\n            <unmanaged>MF_LICENSE_URL_UNTRUSTED</unmanaged>\t\n            <unmanaged-short>MF_LICENSE_URL_UNTRUSTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.UrlTrustStatus.MfLicenseUrlTrusted\">\n            <summary>\t\n            <dd> <p>Receives the number of characters returned in <em>ppwszURL</em>, including the terminating <c>null</c> character.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_LICENSE_URL_TRUSTED']/*\"/>\t\n            <msdn-id>bb970345</msdn-id>\t\n            <unmanaged>MF_LICENSE_URL_TRUSTED</unmanaged>\t\n            <unmanaged-short>MF_LICENSE_URL_TRUSTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.UrlTrustStatus.MfLicenseUrlTampered\">\n            <summary>\t\n            <dd> <p>Receives a member of the <strong><see cref=\"T:SharpDX.MediaFoundation.UrlTrustStatus\"/></strong> enumeration indicating whether the URL is trusted.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_LICENSE_URL_TAMPERED']/*\"/>\t\n            <msdn-id>bb970345</msdn-id>\t\n            <unmanaged>MF_LICENSE_URL_TAMPERED</unmanaged>\t\n            <unmanaged-short>MF_LICENSE_URL_TAMPERED</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.VideoAlphaBitmapFlags\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Specifies how the credential manager should obtain user credentials. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The application implements the credential manager, which must expose the <strong><see cref=\"T:SharpDX.MediaFoundation.NetCredentialManager\"/></strong> interface. If the <strong><see cref=\"F:SharpDX.MediaFoundation.NetCredentialRequirements.RequirePrompt\"/></strong> flag is set, the credential manager should prompt the user for his or her name and password.</p><p>The credential cache object sets the <strong><see cref=\"F:SharpDX.MediaFoundation.NetCredentialRequirements.RequirePrompt\"/></strong> flag if the cache does not yet contain valid credentials. It also sets this flag if the credentials will be sent as plain text, unless the credential manager previously set the <strong><see cref=\"F:SharpDX.MediaFoundation.NetCredentialOptions.MfnetCredentialAllowClearText\"/></strong> option. (See <strong><see cref=\"M:SharpDX.MediaFoundation.NetCredentialCache.SetUserOptions(SharpDX.MediaFoundation.NetCredential,System.Int32)\"/></strong>.)</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoAlphaBitmapFlags']/*\"/>\t\n            <msdn-id>ms700813</msdn-id>\t\n            <unmanaged>MFVideoAlphaBitmapFlags</unmanaged>\t\n            <unmanaged-short>MFVideoAlphaBitmapFlags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoAlphaBitmapFlags.EntireDDS\">\n            <summary>\t\n            <dd> <p> The credential manager should prompt the user to provide the credentials. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoAlphaBitmap_EntireDDS']/*\"/>\t\n            <msdn-id>ms700813</msdn-id>\t\n            <unmanaged>MFVideoAlphaBitmap_EntireDDS</unmanaged>\t\n            <unmanaged-short>MFVideoAlphaBitmap_EntireDDS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoAlphaBitmapFlags.SrcColorKey\">\n            <summary>\t\n            <dd> <p> </p><p><strong>Note</strong>??Requires Windows?7 or later.</p> <p>The credentials are saved to persistent storage. This flag acts as a hint for the application's UI. If the application prompts the user for credentials, the UI can indicate that the credentials have already been saved.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoAlphaBitmap_SrcColorKey']/*\"/>\t\n            <msdn-id>ms700813</msdn-id>\t\n            <unmanaged>MFVideoAlphaBitmap_SrcColorKey</unmanaged>\t\n            <unmanaged-short>MFVideoAlphaBitmap_SrcColorKey</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoAlphaBitmapFlags.SrcRect\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoAlphaBitmap_SrcRect']/*\"/>\t\n            <unmanaged>MFVideoAlphaBitmap_SrcRect</unmanaged>\t\n            <unmanaged-short>MFVideoAlphaBitmap_SrcRect</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoAlphaBitmapFlags.DestRect\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoAlphaBitmap_DestRect']/*\"/>\t\n            <unmanaged>MFVideoAlphaBitmap_DestRect</unmanaged>\t\n            <unmanaged-short>MFVideoAlphaBitmap_DestRect</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoAlphaBitmapFlags.FilterMode\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoAlphaBitmap_FilterMode']/*\"/>\t\n            <unmanaged>MFVideoAlphaBitmap_FilterMode</unmanaged>\t\n            <unmanaged-short>MFVideoAlphaBitmap_FilterMode</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoAlphaBitmapFlags.Alpha\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoAlphaBitmap_Alpha']/*\"/>\t\n            <unmanaged>MFVideoAlphaBitmap_Alpha</unmanaged>\t\n            <unmanaged-short>MFVideoAlphaBitmap_Alpha</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoAlphaBitmapFlags.BitMask\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoAlphaBitmap_BitMask']/*\"/>\t\n            <unmanaged>MFVideoAlphaBitmap_BitMask</unmanaged>\t\n            <unmanaged-short>MFVideoAlphaBitmap_BitMask</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.VideoAspectRatioMode\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Specifies the aspect-ratio mode.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoAspectRatioMode']/*\"/>\t\n            <msdn-id>ms703040</msdn-id>\t\n            <unmanaged>MFVideoAspectRatioMode</unmanaged>\t\n            <unmanaged-short>MFVideoAspectRatioMode</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoAspectRatioMode.RModeNone\">\n            <summary>\t\n            <dd> <p>Do not maintain the aspect ratio of the video. Stretch the video to fit the output rectangle.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoARMode_None']/*\"/>\t\n            <msdn-id>ms703040</msdn-id>\t\n            <unmanaged>MFVideoARMode_None</unmanaged>\t\n            <unmanaged-short>MFVideoARMode_None</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoAspectRatioMode.RModePreservePicture\">\n            <summary>\t\n            <dd> <p>Preserve the aspect ratio of the video by letterboxing or within the output rectangle.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoARMode_PreservePicture']/*\"/>\t\n            <msdn-id>ms703040</msdn-id>\t\n            <unmanaged>MFVideoARMode_PreservePicture</unmanaged>\t\n            <unmanaged-short>MFVideoARMode_PreservePicture</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoAspectRatioMode.RModePreservePixel\">\n            <summary>\t\n            <dd> <p><strong>Note</strong>??Currently the EVR ignores this flag.</p> <p>Correct the aspect ratio if the physical size of the display device does not match the display resolution. For example, if the native resolution of the monitor is 1600 by 1200 (4:3) but the display resolution is 1280 by 1024 (5:4), the monitor will display non-square pixels.</p> <p>If this flag is set, you must also set the <strong><see cref=\"F:SharpDX.MediaFoundation.VideoAspectRatioMode.RModePreservePicture\"/></strong> flag.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoARMode_PreservePixel']/*\"/>\t\n            <msdn-id>ms703040</msdn-id>\t\n            <unmanaged>MFVideoARMode_PreservePixel</unmanaged>\t\n            <unmanaged-short>MFVideoARMode_PreservePixel</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoAspectRatioMode.RModeNonLinearStretch\">\n            <summary>\t\n            <dd> <p>Apply a non-linear horizontal stretch if the aspect ratio of the destination rectangle does not match the aspect ratio of the source rectangle.</p> <p>The non-linear stretch algorithm preserves the aspect ratio in the middle of the picture and stretches (or shrinks) the image progressively more toward the left and right. This mode is useful when viewing 4:3 content full-screen on a 16:9 display, instead of pillar-boxing. Non-linear vertical stretch is not supported, because the visual results are generally poor.</p> <p>This mode may cause performance degradation.</p> <p>If this flag is set, you must also set the <strong><see cref=\"F:SharpDX.MediaFoundation.VideoAspectRatioMode.RModePreservePixel\"/></strong> and <strong><see cref=\"F:SharpDX.MediaFoundation.VideoAspectRatioMode.RModePreservePicture\"/></strong> flags.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoARMode_NonLinearStretch']/*\"/>\t\n            <msdn-id>ms703040</msdn-id>\t\n            <unmanaged>MFVideoARMode_NonLinearStretch</unmanaged>\t\n            <unmanaged-short>MFVideoARMode_NonLinearStretch</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.VideoDRMFlags\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Specifies how the credential manager should obtain user credentials. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The application implements the credential manager, which must expose the <strong><see cref=\"T:SharpDX.MediaFoundation.NetCredentialManager\"/></strong> interface. If the <strong><see cref=\"F:SharpDX.MediaFoundation.NetCredentialRequirements.RequirePrompt\"/></strong> flag is set, the credential manager should prompt the user for his or her name and password.</p><p>The credential cache object sets the <strong><see cref=\"F:SharpDX.MediaFoundation.NetCredentialRequirements.RequirePrompt\"/></strong> flag if the cache does not yet contain valid credentials. It also sets this flag if the credentials will be sent as plain text, unless the credential manager previously set the <strong><see cref=\"F:SharpDX.MediaFoundation.NetCredentialOptions.MfnetCredentialAllowClearText\"/></strong> option. (See <strong><see cref=\"M:SharpDX.MediaFoundation.NetCredentialCache.SetUserOptions(SharpDX.MediaFoundation.NetCredential,System.Int32)\"/></strong>.)</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoDRMFlags']/*\"/>\t\n            <msdn-id>ms700813</msdn-id>\t\n            <unmanaged>MFVideoDRMFlags</unmanaged>\t\n            <unmanaged-short>MFVideoDRMFlags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoDRMFlags.None\">\n            <summary>\t\n            <dd> <p> The credential manager should prompt the user to provide the credentials. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoDRMFlag_None']/*\"/>\t\n            <msdn-id>ms700813</msdn-id>\t\n            <unmanaged>MFVideoDRMFlag_None</unmanaged>\t\n            <unmanaged-short>MFVideoDRMFlag_None</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoDRMFlags.AnalogProtected\">\n            <summary>\t\n            <dd> <p> </p><p><strong>Note</strong>??Requires Windows?7 or later.</p> <p>The credentials are saved to persistent storage. This flag acts as a hint for the application's UI. If the application prompts the user for credentials, the UI can indicate that the credentials have already been saved.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoDRMFlag_AnalogProtected']/*\"/>\t\n            <msdn-id>ms700813</msdn-id>\t\n            <unmanaged>MFVideoDRMFlag_AnalogProtected</unmanaged>\t\n            <unmanaged-short>MFVideoDRMFlag_AnalogProtected</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoDRMFlags.DigitallyProtected\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoDRMFlag_DigitallyProtected']/*\"/>\t\n            <unmanaged>MFVideoDRMFlag_DigitallyProtected</unmanaged>\t\n            <unmanaged-short>MFVideoDRMFlag_DigitallyProtected</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.VideoFlags\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Creates a video media type from a <strong><see cref=\"T:SharpDX.Win32.BitmapInfoHeader\"/></strong> structure.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoFlags']/*\"/>\t\n            <msdn-id>dd388121</msdn-id>\t\n            <unmanaged>MFVideoFlags</unmanaged>\t\n            <unmanaged-short>MFVideoFlags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoFlags.PadToNone\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoFlag_PAD_TO_None']/*\"/>\t\n            <unmanaged>MFVideoFlag_PAD_TO_None</unmanaged>\t\n            <unmanaged-short>MFVideoFlag_PAD_TO_None</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoFlags.PadTo4x3\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoFlag_PAD_TO_4x3']/*\"/>\t\n            <unmanaged>MFVideoFlag_PAD_TO_4x3</unmanaged>\t\n            <unmanaged-short>MFVideoFlag_PAD_TO_4x3</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoFlags.PadTo16x9\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoFlag_PAD_TO_16x9']/*\"/>\t\n            <unmanaged>MFVideoFlag_PAD_TO_16x9</unmanaged>\t\n            <unmanaged-short>MFVideoFlag_PAD_TO_16x9</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoFlags.SrcContentHintMask\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoFlag_SrcContentHintMask']/*\"/>\t\n            <unmanaged>MFVideoFlag_SrcContentHintMask</unmanaged>\t\n            <unmanaged-short>MFVideoFlag_SrcContentHintMask</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoFlags.SrcContentHintNone\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoFlag_SrcContentHintNone']/*\"/>\t\n            <unmanaged>MFVideoFlag_SrcContentHintNone</unmanaged>\t\n            <unmanaged-short>MFVideoFlag_SrcContentHintNone</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoFlags.SrcContentHint16x9\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoFlag_SrcContentHint16x9']/*\"/>\t\n            <unmanaged>MFVideoFlag_SrcContentHint16x9</unmanaged>\t\n            <unmanaged-short>MFVideoFlag_SrcContentHint16x9</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoFlags.SrcContentHint2351\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoFlag_SrcContentHint235_1']/*\"/>\t\n            <unmanaged>MFVideoFlag_SrcContentHint235_1</unmanaged>\t\n            <unmanaged-short>MFVideoFlag_SrcContentHint235_1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoFlags.AnalogProtected\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoFlag_AnalogProtected']/*\"/>\t\n            <unmanaged>MFVideoFlag_AnalogProtected</unmanaged>\t\n            <unmanaged-short>MFVideoFlag_AnalogProtected</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoFlags.DigitallyProtected\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoFlag_DigitallyProtected']/*\"/>\t\n            <unmanaged>MFVideoFlag_DigitallyProtected</unmanaged>\t\n            <unmanaged-short>MFVideoFlag_DigitallyProtected</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoFlags.ProgressiveContent\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoFlag_ProgressiveContent']/*\"/>\t\n            <unmanaged>MFVideoFlag_ProgressiveContent</unmanaged>\t\n            <unmanaged-short>MFVideoFlag_ProgressiveContent</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoFlags.FieldRepeatCountMask\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoFlag_FieldRepeatCountMask']/*\"/>\t\n            <unmanaged>MFVideoFlag_FieldRepeatCountMask</unmanaged>\t\n            <unmanaged-short>MFVideoFlag_FieldRepeatCountMask</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoFlags.FieldRepeatCountShift\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoFlag_FieldRepeatCountShift']/*\"/>\t\n            <unmanaged>MFVideoFlag_FieldRepeatCountShift</unmanaged>\t\n            <unmanaged-short>MFVideoFlag_FieldRepeatCountShift</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoFlags.ProgressiveSeqReset\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoFlag_ProgressiveSeqReset']/*\"/>\t\n            <unmanaged>MFVideoFlag_ProgressiveSeqReset</unmanaged>\t\n            <unmanaged-short>MFVideoFlag_ProgressiveSeqReset</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoFlags.PanScanEnabled\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoFlag_PanScanEnabled']/*\"/>\t\n            <unmanaged>MFVideoFlag_PanScanEnabled</unmanaged>\t\n            <unmanaged-short>MFVideoFlag_PanScanEnabled</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoFlags.LowerFieldFirst\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoFlag_LowerFieldFirst']/*\"/>\t\n            <unmanaged>MFVideoFlag_LowerFieldFirst</unmanaged>\t\n            <unmanaged-short>MFVideoFlag_LowerFieldFirst</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoFlags.BottomUpLinearRep\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoFlag_BottomUpLinearRep']/*\"/>\t\n            <unmanaged>MFVideoFlag_BottomUpLinearRep</unmanaged>\t\n            <unmanaged-short>MFVideoFlag_BottomUpLinearRep</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoFlags.SDXVASurface\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoFlags_DXVASurface']/*\"/>\t\n            <unmanaged>MFVideoFlags_DXVASurface</unmanaged>\t\n            <unmanaged-short>MFVideoFlags_DXVASurface</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoFlags.SRenderTargetSurface\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoFlags_RenderTargetSurface']/*\"/>\t\n            <unmanaged>MFVideoFlags_RenderTargetSurface</unmanaged>\t\n            <unmanaged-short>MFVideoFlags_RenderTargetSurface</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoFlags.SForceQWORD\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoFlags_ForceQWORD']/*\"/>\t\n            <unmanaged>MFVideoFlags_ForceQWORD</unmanaged>\t\n            <unmanaged-short>MFVideoFlags_ForceQWORD</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.VideoChromaSubsampling\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Contains flags that define the chroma encoding scheme for Y'Cb'Cr' data.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>These flags are used with the <strong><see cref=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.VideoChromaSiting\"/></strong> attribute.</p><p>For more information about these values, see the remarks for the <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.VideoChromaSubSampling\"/></strong> enumeration, which is the DirectX Video Acceleration (DXVA) equivalent of this enumeration.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoChromaSubsampling']/*\"/>\t\n            <msdn-id>ms698989</msdn-id>\t\n            <unmanaged>MFVideoChromaSubsampling</unmanaged>\t\n            <unmanaged-short>MFVideoChromaSubsampling</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoChromaSubsampling.Unknown\">\n            <summary>\t\n            <dd> <p>Unknown encoding scheme.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoChromaSubsampling_Unknown']/*\"/>\t\n            <msdn-id>ms698989</msdn-id>\t\n            <unmanaged>MFVideoChromaSubsampling_Unknown</unmanaged>\t\n            <unmanaged-short>MFVideoChromaSubsampling_Unknown</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoChromaSubsampling.ProgressiveChroma\">\n            <summary>\t\n            <dd> <p>Chroma should be reconstructed as if the underlying video was progressive content, rather than skipping fields or applying chroma filtering to minimize artifacts from reconstructing 4:2:0 interlaced chroma.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoChromaSubsampling_ProgressiveChroma']/*\"/>\t\n            <msdn-id>ms698989</msdn-id>\t\n            <unmanaged>MFVideoChromaSubsampling_ProgressiveChroma</unmanaged>\t\n            <unmanaged-short>MFVideoChromaSubsampling_ProgressiveChroma</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoChromaSubsampling.HorizontallyCosited\">\n            <summary>\t\n            <dd> <p>Chroma samples are aligned horizontally with the luma samples, or with multiples of the luma samples. If this flag is not set, chroma samples are located 1/2 pixel to the right of the corresponding luma sample.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoChromaSubsampling_Horizontally_Cosited']/*\"/>\t\n            <msdn-id>ms698989</msdn-id>\t\n            <unmanaged>MFVideoChromaSubsampling_Horizontally_Cosited</unmanaged>\t\n            <unmanaged-short>MFVideoChromaSubsampling_Horizontally_Cosited</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoChromaSubsampling.VerticallyCosited\">\n            <summary>\t\n            <dd> <p>Chroma samples are aligned vertically with the luma samples, or with multiples of the luma samples. If this flag is not set, chroma samples are located 1/2 pixel down from the corresponding luma sample.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoChromaSubsampling_Vertically_Cosited']/*\"/>\t\n            <msdn-id>ms698989</msdn-id>\t\n            <unmanaged>MFVideoChromaSubsampling_Vertically_Cosited</unmanaged>\t\n            <unmanaged-short>MFVideoChromaSubsampling_Vertically_Cosited</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoChromaSubsampling.VerticallyAlignedChromaPlanes\">\n            <summary>\t\n            <dd> <p>The U and V planes are aligned vertically. If this flag is not set, the chroma planes are assumed to be out of phase by 1/2 chroma sample, alternating between a line of U followed by a line of V.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoChromaSubsampling_Vertically_AlignedChromaPlanes']/*\"/>\t\n            <msdn-id>ms698989</msdn-id>\t\n            <unmanaged>MFVideoChromaSubsampling_Vertically_AlignedChromaPlanes</unmanaged>\t\n            <unmanaged-short>MFVideoChromaSubsampling_Vertically_AlignedChromaPlanes</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoChromaSubsampling.Mpeg2\">\n            <summary>\t\n            <dd> <p>Specifies the chroma encoding scheme for MPEG-2 video. Chroma samples are aligned horizontally with the luma samples, but are not aligned vertically. The U and V planes are aligned vertically.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoChromaSubsampling_MPEG2']/*\"/>\t\n            <msdn-id>ms698989</msdn-id>\t\n            <unmanaged>MFVideoChromaSubsampling_MPEG2</unmanaged>\t\n            <unmanaged-short>MFVideoChromaSubsampling_MPEG2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoChromaSubsampling.Mpeg1\">\n            <summary>\t\n            <dd> <p>Specifies the chroma encoding scheme for MPEG-1 video.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoChromaSubsampling_MPEG1']/*\"/>\t\n            <msdn-id>ms698989</msdn-id>\t\n            <unmanaged>MFVideoChromaSubsampling_MPEG1</unmanaged>\t\n            <unmanaged-short>MFVideoChromaSubsampling_MPEG1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoChromaSubsampling.DvPal\">\n            <summary>\t\n            <dd> <p>Specifies the chroma encoding scheme for PAL DV video.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoChromaSubsampling_DV_PAL']/*\"/>\t\n            <msdn-id>ms698989</msdn-id>\t\n            <unmanaged>MFVideoChromaSubsampling_DV_PAL</unmanaged>\t\n            <unmanaged-short>MFVideoChromaSubsampling_DV_PAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoChromaSubsampling.Cosited\">\n            <summary>\t\n            <dd> <p>Chroma samples are aligned vertically and horizontally with the luma samples. YUV formats such as 4:4:4, 4:2:2, and 4:1:1 are always cosited in both directions and should use this flag.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoChromaSubsampling_Cosited']/*\"/>\t\n            <msdn-id>ms698989</msdn-id>\t\n            <unmanaged>MFVideoChromaSubsampling_Cosited</unmanaged>\t\n            <unmanaged-short>MFVideoChromaSubsampling_Cosited</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoChromaSubsampling.Last\">\n            <summary>\t\n            <dd> <p>Reserved.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoChromaSubsampling_Last']/*\"/>\t\n            <msdn-id>ms698989</msdn-id>\t\n            <unmanaged>MFVideoChromaSubsampling_Last</unmanaged>\t\n            <unmanaged-short>MFVideoChromaSubsampling_Last</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoChromaSubsampling.ForceDWORD\">\n            <summary>\t\n            <dd> <p>Reserved. This member forces the enumeration type to compile as a <strong>DWORD</strong> value.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoChromaSubsampling_ForceDWORD']/*\"/>\t\n            <msdn-id>ms698989</msdn-id>\t\n            <unmanaged>MFVideoChromaSubsampling_ForceDWORD</unmanaged>\t\n            <unmanaged-short>MFVideoChromaSubsampling_ForceDWORD</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.VideoInterlaceMode\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Specifies how a video stream is interlaced.</p><p>In the descriptions that follow, upper field refers to the field that contains the leading half scan line. Lower field refers to the field that contains the first full scan line.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Scan lines in the lower field are 0.5 scan line lower than those in the upper field. In NTSC television, a frame consists of a lower field followed by an upper field. In PAL television, a frame consists of an upper field followed by a lower field.</p><p>The upper field is also called the even field, the top field, or field 2. The lower field is also called the odd field, the bottom field, or field 1.</p><p>If the interlace mode is <see cref=\"F:SharpDX.MediaFoundation.VideoInterlaceMode.FieldSingleUpper\"/> or <see cref=\"F:SharpDX.MediaFoundation.VideoInterlaceMode.FieldSingleLower\"/>, each sample contains a single field, so each buffer contains only half the number of field lines given in the media type.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoInterlaceMode']/*\"/>\t\n            <msdn-id>ms694269</msdn-id>\t\n            <unmanaged>MFVideoInterlaceMode</unmanaged>\t\n            <unmanaged-short>MFVideoInterlaceMode</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoInterlaceMode.Unknown\">\n            <summary>\t\n            <dd> <p> The type of interlacing is not known. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoInterlace_Unknown']/*\"/>\t\n            <msdn-id>ms694269</msdn-id>\t\n            <unmanaged>MFVideoInterlace_Unknown</unmanaged>\t\n            <unmanaged-short>MFVideoInterlace_Unknown</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoInterlaceMode.Progressive\">\n            <summary>\t\n            <dd> <p> Progressive frames. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoInterlace_Progressive']/*\"/>\t\n            <msdn-id>ms694269</msdn-id>\t\n            <unmanaged>MFVideoInterlace_Progressive</unmanaged>\t\n            <unmanaged-short>MFVideoInterlace_Progressive</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoInterlaceMode.FieldInterleavedUpperFirst\">\n            <summary>\t\n            <dd> <p> Interlaced frames. Each frame contains two fields. The field lines are interleaved, with the upper field appearing on the first line. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoInterlace_FieldInterleavedUpperFirst']/*\"/>\t\n            <msdn-id>ms694269</msdn-id>\t\n            <unmanaged>MFVideoInterlace_FieldInterleavedUpperFirst</unmanaged>\t\n            <unmanaged-short>MFVideoInterlace_FieldInterleavedUpperFirst</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoInterlaceMode.FieldInterleavedLowerFirst\">\n            <summary>\t\n            <dd> <p> Interlaced frames. Each frame contains two fields. The field lines are interleaved, with the lower field appearing on the first line. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoInterlace_FieldInterleavedLowerFirst']/*\"/>\t\n            <msdn-id>ms694269</msdn-id>\t\n            <unmanaged>MFVideoInterlace_FieldInterleavedLowerFirst</unmanaged>\t\n            <unmanaged-short>MFVideoInterlace_FieldInterleavedLowerFirst</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoInterlaceMode.FieldSingleUpper\">\n            <summary>\t\n            <dd> <p> Interlaced frames. Each frame contains one field, with the upper field appearing first. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoInterlace_FieldSingleUpper']/*\"/>\t\n            <msdn-id>ms694269</msdn-id>\t\n            <unmanaged>MFVideoInterlace_FieldSingleUpper</unmanaged>\t\n            <unmanaged-short>MFVideoInterlace_FieldSingleUpper</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoInterlaceMode.FieldSingleLower\">\n            <summary>\t\n            <dd> <p> Interlaced frames. Each frame contains one field, with the lower field appearing first. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoInterlace_FieldSingleLower']/*\"/>\t\n            <msdn-id>ms694269</msdn-id>\t\n            <unmanaged>MFVideoInterlace_FieldSingleLower</unmanaged>\t\n            <unmanaged-short>MFVideoInterlace_FieldSingleLower</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoInterlaceMode.MixedInterlaceOrProgressive\">\n            <summary>\t\n            <dd> <p> The stream contains a mix of interlaced and progressive modes. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoInterlace_MixedInterlaceOrProgressive']/*\"/>\t\n            <msdn-id>ms694269</msdn-id>\t\n            <unmanaged>MFVideoInterlace_MixedInterlaceOrProgressive</unmanaged>\t\n            <unmanaged-short>MFVideoInterlace_MixedInterlaceOrProgressive</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoInterlaceMode.Last\">\n            <summary>\t\n            <dd> <p> Reserved. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoInterlace_Last']/*\"/>\t\n            <msdn-id>ms694269</msdn-id>\t\n            <unmanaged>MFVideoInterlace_Last</unmanaged>\t\n            <unmanaged-short>MFVideoInterlace_Last</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoInterlaceMode.ForceDWORD\">\n            <summary>\t\n            <dd> <p> Reserved. This member forces the enumeration type to compile as a <strong>DWORD</strong> value. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoInterlace_ForceDWORD']/*\"/>\t\n            <msdn-id>ms694269</msdn-id>\t\n            <unmanaged>MFVideoInterlace_ForceDWORD</unmanaged>\t\n            <unmanaged-short>MFVideoInterlace_ForceDWORD</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.VideoLighting\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Specifies how the credential manager should obtain user credentials. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The application implements the credential manager, which must expose the <strong><see cref=\"T:SharpDX.MediaFoundation.NetCredentialManager\"/></strong> interface. If the <strong><see cref=\"F:SharpDX.MediaFoundation.NetCredentialRequirements.RequirePrompt\"/></strong> flag is set, the credential manager should prompt the user for his or her name and password.</p><p>The credential cache object sets the <strong><see cref=\"F:SharpDX.MediaFoundation.NetCredentialRequirements.RequirePrompt\"/></strong> flag if the cache does not yet contain valid credentials. It also sets this flag if the credentials will be sent as plain text, unless the credential manager previously set the <strong><see cref=\"F:SharpDX.MediaFoundation.NetCredentialOptions.MfnetCredentialAllowClearText\"/></strong> option. (See <strong><see cref=\"M:SharpDX.MediaFoundation.NetCredentialCache.SetUserOptions(SharpDX.MediaFoundation.NetCredential,System.Int32)\"/></strong>.)</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoLighting']/*\"/>\t\n            <msdn-id>ms700813</msdn-id>\t\n            <unmanaged>MFVideoLighting</unmanaged>\t\n            <unmanaged-short>MFVideoLighting</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoLighting.Unknown\">\n            <summary>\t\n            <dd> <p> The credential manager should prompt the user to provide the credentials. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoLighting_Unknown']/*\"/>\t\n            <msdn-id>ms700813</msdn-id>\t\n            <unmanaged>MFVideoLighting_Unknown</unmanaged>\t\n            <unmanaged-short>MFVideoLighting_Unknown</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoLighting.Bright\">\n            <summary>\t\n            <dd> <p> </p><p><strong>Note</strong>??Requires Windows?7 or later.</p> <p>The credentials are saved to persistent storage. This flag acts as a hint for the application's UI. If the application prompts the user for credentials, the UI can indicate that the credentials have already been saved.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoLighting_bright']/*\"/>\t\n            <msdn-id>ms700813</msdn-id>\t\n            <unmanaged>MFVideoLighting_bright</unmanaged>\t\n            <unmanaged-short>MFVideoLighting_bright</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoLighting.Office\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoLighting_office']/*\"/>\t\n            <unmanaged>MFVideoLighting_office</unmanaged>\t\n            <unmanaged-short>MFVideoLighting_office</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoLighting.Dim\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoLighting_dim']/*\"/>\t\n            <unmanaged>MFVideoLighting_dim</unmanaged>\t\n            <unmanaged-short>MFVideoLighting_dim</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoLighting.Dark\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoLighting_dark']/*\"/>\t\n            <unmanaged>MFVideoLighting_dark</unmanaged>\t\n            <unmanaged-short>MFVideoLighting_dark</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoLighting.Last\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoLighting_Last']/*\"/>\t\n            <unmanaged>MFVideoLighting_Last</unmanaged>\t\n            <unmanaged-short>MFVideoLighting_Last</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoLighting.ForceDWORD\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoLighting_ForceDWORD']/*\"/>\t\n            <unmanaged>MFVideoLighting_ForceDWORD</unmanaged>\t\n            <unmanaged-short>MFVideoLighting_ForceDWORD</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.VideoMixPrefs\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Contains flags that are used to configure how the enhanced video renderer (EVR) performs  deinterlacing.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>To set these flags, call the <strong><see cref=\"M:SharpDX.MediaFoundation.VideoMixerControl2.SetMixingPrefs(System.Int32)\"/></strong> method.</p><p>These flags control some trade-offs between video quality and rendering speed. The constants named \"MFVideoMixPrefs_Allow...\" enable lower-quality settings, but only when the quality manager requests a drop in quality.  The constants named \"MFVideoMixPrefs_Force...\" force the EVR to use lower-quality settings regardless of  what the quality manager requests. (For more information about the quality manager, see <strong><see cref=\"T:SharpDX.MediaFoundation.QualityAdvise\"/></strong>.)</p><p>Currently two lower-quality modes are supported, as described in the following table. Either is preferable to dropping an entire frame.</p><p></p><table> <tr><th>Mode</th><th>Description</th></tr> <tr><td> <p>Half interface</p> </td><td> <p>The EVR's video mixer skips the second field (relative to temporal order) of each interlaced frame. The video mixer still deinterlaces the first field, and this operation typically interpolates data from the second field. The overall frame rate is unaffected.</p> </td></tr> <tr><td> <p>Bob deinterlacing</p> </td><td> <p>The video mixer uses bob deinterlacing, even if the driver supports  a higher-quality deinterlacing algorithm.</p> </td></tr> </table><p>?</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoMixPrefs']/*\"/>\t\n            <msdn-id>dd388675</msdn-id>\t\n            <unmanaged>MFVideoMixPrefs</unmanaged>\t\n            <unmanaged-short>MFVideoMixPrefs</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoMixPrefs.ForceHalfInterlace\">\n            <summary>\t\n            <dd> <p>Force the EVR  to skip the second field (in temporal order) of every interlaced frame. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoMixPrefs_ForceHalfInterlace']/*\"/>\t\n            <msdn-id>dd388675</msdn-id>\t\n            <unmanaged>MFVideoMixPrefs_ForceHalfInterlace</unmanaged>\t\n            <unmanaged-short>MFVideoMixPrefs_ForceHalfInterlace</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoMixPrefs.AllowDropToHalfInterlace\">\n            <summary>\t\n            <dd> <p>If the EVR is falling behind, allow it to skip the second field (in temporal order) of every interlaced frame.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoMixPrefs_AllowDropToHalfInterlace']/*\"/>\t\n            <msdn-id>dd388675</msdn-id>\t\n            <unmanaged>MFVideoMixPrefs_AllowDropToHalfInterlace</unmanaged>\t\n            <unmanaged-short>MFVideoMixPrefs_AllowDropToHalfInterlace</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoMixPrefs.AllowDropToBob\">\n            <summary>\t\n            <dd> <p>If the EVR is falling behind, allow it to use bob deinterlacing, even if the driver supports a higher-quality deinterlacing mode.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoMixPrefs_AllowDropToBob']/*\"/>\t\n            <msdn-id>dd388675</msdn-id>\t\n            <unmanaged>MFVideoMixPrefs_AllowDropToBob</unmanaged>\t\n            <unmanaged-short>MFVideoMixPrefs_AllowDropToBob</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoMixPrefs.ForceBob\">\n            <summary>\t\n            <dd> <p>Force the EVR to use bob deinterlacing, even if the driver supports a higher-quality mode.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoMixPrefs_ForceBob']/*\"/>\t\n            <msdn-id>dd388675</msdn-id>\t\n            <unmanaged>MFVideoMixPrefs_ForceBob</unmanaged>\t\n            <unmanaged-short>MFVideoMixPrefs_ForceBob</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.VideoPadFlags\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Specifies how the credential manager should obtain user credentials. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The application implements the credential manager, which must expose the <strong><see cref=\"T:SharpDX.MediaFoundation.NetCredentialManager\"/></strong> interface. If the <strong><see cref=\"F:SharpDX.MediaFoundation.NetCredentialRequirements.RequirePrompt\"/></strong> flag is set, the credential manager should prompt the user for his or her name and password.</p><p>The credential cache object sets the <strong><see cref=\"F:SharpDX.MediaFoundation.NetCredentialRequirements.RequirePrompt\"/></strong> flag if the cache does not yet contain valid credentials. It also sets this flag if the credentials will be sent as plain text, unless the credential manager previously set the <strong><see cref=\"F:SharpDX.MediaFoundation.NetCredentialOptions.MfnetCredentialAllowClearText\"/></strong> option. (See <strong><see cref=\"M:SharpDX.MediaFoundation.NetCredentialCache.SetUserOptions(SharpDX.MediaFoundation.NetCredential,System.Int32)\"/></strong>.)</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoPadFlags']/*\"/>\t\n            <msdn-id>ms700813</msdn-id>\t\n            <unmanaged>MFVideoPadFlags</unmanaged>\t\n            <unmanaged-short>MFVideoPadFlags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoPadFlags.PadToNone\">\n            <summary>\t\n            <dd> <p> The credential manager should prompt the user to provide the credentials. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoPadFlag_PAD_TO_None']/*\"/>\t\n            <msdn-id>ms700813</msdn-id>\t\n            <unmanaged>MFVideoPadFlag_PAD_TO_None</unmanaged>\t\n            <unmanaged-short>MFVideoPadFlag_PAD_TO_None</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoPadFlags.PadTo4x3\">\n            <summary>\t\n            <dd> <p> </p><p><strong>Note</strong>??Requires Windows?7 or later.</p> <p>The credentials are saved to persistent storage. This flag acts as a hint for the application's UI. If the application prompts the user for credentials, the UI can indicate that the credentials have already been saved.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoPadFlag_PAD_TO_4x3']/*\"/>\t\n            <msdn-id>ms700813</msdn-id>\t\n            <unmanaged>MFVideoPadFlag_PAD_TO_4x3</unmanaged>\t\n            <unmanaged-short>MFVideoPadFlag_PAD_TO_4x3</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoPadFlags.PadTo16x9\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoPadFlag_PAD_TO_16x9']/*\"/>\t\n            <unmanaged>MFVideoPadFlag_PAD_TO_16x9</unmanaged>\t\n            <unmanaged-short>MFVideoPadFlag_PAD_TO_16x9</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.VideoPrimaries\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Specifies how the credential manager should obtain user credentials. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The application implements the credential manager, which must expose the <strong><see cref=\"T:SharpDX.MediaFoundation.NetCredentialManager\"/></strong> interface. If the <strong><see cref=\"F:SharpDX.MediaFoundation.NetCredentialRequirements.RequirePrompt\"/></strong> flag is set, the credential manager should prompt the user for his or her name and password.</p><p>The credential cache object sets the <strong><see cref=\"F:SharpDX.MediaFoundation.NetCredentialRequirements.RequirePrompt\"/></strong> flag if the cache does not yet contain valid credentials. It also sets this flag if the credentials will be sent as plain text, unless the credential manager previously set the <strong><see cref=\"F:SharpDX.MediaFoundation.NetCredentialOptions.MfnetCredentialAllowClearText\"/></strong> option. (See <strong><see cref=\"M:SharpDX.MediaFoundation.NetCredentialCache.SetUserOptions(SharpDX.MediaFoundation.NetCredential,System.Int32)\"/></strong>.)</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoPrimaries']/*\"/>\t\n            <msdn-id>ms700813</msdn-id>\t\n            <unmanaged>MFVideoPrimaries</unmanaged>\t\n            <unmanaged-short>MFVideoPrimaries</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoPrimaries.Unknown\">\n            <summary>\t\n            <dd> <p> The credential manager should prompt the user to provide the credentials. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoPrimaries_Unknown']/*\"/>\t\n            <msdn-id>ms700813</msdn-id>\t\n            <unmanaged>MFVideoPrimaries_Unknown</unmanaged>\t\n            <unmanaged-short>MFVideoPrimaries_Unknown</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoPrimaries.Reserved\">\n            <summary>\t\n            <dd> <p> </p><p><strong>Note</strong>??Requires Windows?7 or later.</p> <p>The credentials are saved to persistent storage. This flag acts as a hint for the application's UI. If the application prompts the user for credentials, the UI can indicate that the credentials have already been saved.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoPrimaries_reserved']/*\"/>\t\n            <msdn-id>ms700813</msdn-id>\t\n            <unmanaged>MFVideoPrimaries_reserved</unmanaged>\t\n            <unmanaged-short>MFVideoPrimaries_reserved</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoPrimaries.Bt709\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoPrimaries_BT709']/*\"/>\t\n            <unmanaged>MFVideoPrimaries_BT709</unmanaged>\t\n            <unmanaged-short>MFVideoPrimaries_BT709</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoPrimaries.Bt4702SysM\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoPrimaries_BT470_2_SysM']/*\"/>\t\n            <unmanaged>MFVideoPrimaries_BT470_2_SysM</unmanaged>\t\n            <unmanaged-short>MFVideoPrimaries_BT470_2_SysM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoPrimaries.Bt4702SysBG\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoPrimaries_BT470_2_SysBG']/*\"/>\t\n            <unmanaged>MFVideoPrimaries_BT470_2_SysBG</unmanaged>\t\n            <unmanaged-short>MFVideoPrimaries_BT470_2_SysBG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoPrimaries.Smpte170m\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoPrimaries_SMPTE170M']/*\"/>\t\n            <unmanaged>MFVideoPrimaries_SMPTE170M</unmanaged>\t\n            <unmanaged-short>MFVideoPrimaries_SMPTE170M</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoPrimaries.Smpte240m\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoPrimaries_SMPTE240M']/*\"/>\t\n            <unmanaged>MFVideoPrimaries_SMPTE240M</unmanaged>\t\n            <unmanaged-short>MFVideoPrimaries_SMPTE240M</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoPrimaries.Ebu3213\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoPrimaries_EBU3213']/*\"/>\t\n            <unmanaged>MFVideoPrimaries_EBU3213</unmanaged>\t\n            <unmanaged-short>MFVideoPrimaries_EBU3213</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoPrimaries.SmpteC\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoPrimaries_SMPTE_C']/*\"/>\t\n            <unmanaged>MFVideoPrimaries_SMPTE_C</unmanaged>\t\n            <unmanaged-short>MFVideoPrimaries_SMPTE_C</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoPrimaries.Last\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoPrimaries_Last']/*\"/>\t\n            <unmanaged>MFVideoPrimaries_Last</unmanaged>\t\n            <unmanaged-short>MFVideoPrimaries_Last</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoPrimaries.ForceDWORD\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoPrimaries_ForceDWORD']/*\"/>\t\n            <unmanaged>MFVideoPrimaries_ForceDWORD</unmanaged>\t\n            <unmanaged-short>MFVideoPrimaries_ForceDWORD</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.VideoRenderPrefs\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Contains flags that define how the enhanced video renderer (EVR) displays the video.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>To set these flags, call <strong><see cref=\"M:SharpDX.MediaFoundation.VideoDisplayControl.SetRenderingPrefs(System.Int32)\"/></strong>.</p><p>The flags named \"MFVideoRenderPrefs_Allow...\" cause the EVR to use lower-quality settings only when requested by the quality manager. (For more information, see <strong><see cref=\"T:SharpDX.MediaFoundation.QualityAdvise\"/></strong>.) The flags named \"MFVideoRenderPrefs_Force...\" cause the video mixer to use lower-quality settings regardless of the quality manager. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoRenderPrefs']/*\"/>\t\n            <msdn-id>ms701834</msdn-id>\t\n            <unmanaged>MFVideoRenderPrefs</unmanaged>\t\n            <unmanaged-short>MFVideoRenderPrefs</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoRenderPrefs.DoNotRenderBorder\">\n            <summary>\t\n            <dd> <p> If this flag is set, the EVR does not draw the border color. By default, the EVR draws a border on areas of the destination rectangle that have no video. See <strong><see cref=\"M:SharpDX.MediaFoundation.VideoDisplayControl.SetBorderColor(SharpDX.Color4)\"/></strong>. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoRenderPrefs_DoNotRenderBorder']/*\"/>\t\n            <msdn-id>ms701834</msdn-id>\t\n            <unmanaged>MFVideoRenderPrefs_DoNotRenderBorder</unmanaged>\t\n            <unmanaged-short>MFVideoRenderPrefs_DoNotRenderBorder</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoRenderPrefs.DoNotClipToDevice\">\n            <summary>\t\n            <dd> <p> If this flag is set, the EVR does not clip the video when the video window straddles two monitors. By default, if the video window straddles two monitors, the EVR clips the video to the monitor that contains the largest area of video. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoRenderPrefs_DoNotClipToDevice']/*\"/>\t\n            <msdn-id>ms701834</msdn-id>\t\n            <unmanaged>MFVideoRenderPrefs_DoNotClipToDevice</unmanaged>\t\n            <unmanaged-short>MFVideoRenderPrefs_DoNotClipToDevice</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoRenderPrefs.AllowOutputThrottling\">\n            <summary>\t\n            <dd> <p> </p><p><strong>Note</strong>??Requires Windows?7 or later.</p> <p>Allow the EVR to limit its output to match GPU bandwidth.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoRenderPrefs_AllowOutputThrottling']/*\"/>\t\n            <msdn-id>ms701834</msdn-id>\t\n            <unmanaged>MFVideoRenderPrefs_AllowOutputThrottling</unmanaged>\t\n            <unmanaged-short>MFVideoRenderPrefs_AllowOutputThrottling</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoRenderPrefs.ForceOutputThrottling\">\n            <summary>\t\n            <dd> <p> </p><p><strong>Note</strong>??Requires Windows?7 or later.</p> <p>Force the EVR to limit its output to match GPU bandwidth.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoRenderPrefs_ForceOutputThrottling']/*\"/>\t\n            <msdn-id>ms701834</msdn-id>\t\n            <unmanaged>MFVideoRenderPrefs_ForceOutputThrottling</unmanaged>\t\n            <unmanaged-short>MFVideoRenderPrefs_ForceOutputThrottling</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoRenderPrefs.ForceBatching\">\n            <summary>\t\n            <dd> <p> </p><p><strong>Note</strong>??Requires Windows?7 or later.</p> <p>Force the EVR to batch Direct3D <strong>Present</strong> calls. This optimization enables the system to enter to idle states more frequently, which can reduce power consumption. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoRenderPrefs_ForceBatching']/*\"/>\t\n            <msdn-id>ms701834</msdn-id>\t\n            <unmanaged>MFVideoRenderPrefs_ForceBatching</unmanaged>\t\n            <unmanaged-short>MFVideoRenderPrefs_ForceBatching</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoRenderPrefs.AllowBatching\">\n            <summary>\t\n            <dd> <p> </p><p><strong>Note</strong>??Requires Windows?7 or later.</p> <p>Allow the EVR to batch Direct3D <strong>Present</strong> calls.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoRenderPrefs_AllowBatching']/*\"/>\t\n            <msdn-id>ms701834</msdn-id>\t\n            <unmanaged>MFVideoRenderPrefs_AllowBatching</unmanaged>\t\n            <unmanaged-short>MFVideoRenderPrefs_AllowBatching</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoRenderPrefs.ForceScaling\">\n            <summary>\t\n            <dd> <p> </p><p><strong>Note</strong>??Requires Windows?7 or later.</p> <p>Force the EVR to mix the video inside a rectangle that is smaller than the output rectangle. The EVR will then scale the result to the correct output size. The effective resolution will be lower if this setting is applied.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoRenderPrefs_ForceScaling']/*\"/>\t\n            <msdn-id>ms701834</msdn-id>\t\n            <unmanaged>MFVideoRenderPrefs_ForceScaling</unmanaged>\t\n            <unmanaged-short>MFVideoRenderPrefs_ForceScaling</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoRenderPrefs.AllowScaling\">\n            <summary>\t\n            <dd> <p> </p><p><strong>Note</strong>??Requires Windows?7 or later.</p> <p>Allow the EVR to mix the video inside a rectangle that is smaller than the output rectangle. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoRenderPrefs_AllowScaling']/*\"/>\t\n            <msdn-id>ms701834</msdn-id>\t\n            <unmanaged>MFVideoRenderPrefs_AllowScaling</unmanaged>\t\n            <unmanaged-short>MFVideoRenderPrefs_AllowScaling</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoRenderPrefs.DoNotRepaintOnStop\">\n            <summary>\t\n            <dd> <p> </p><p><strong>Note</strong>??Requires Windows?7 or later.</p> <p>Prevent the EVR from repainting the video window after a stop command. By default, the EVR repaints the video window black after a stop command.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoRenderPrefs_DoNotRepaintOnStop']/*\"/>\t\n            <msdn-id>ms701834</msdn-id>\t\n            <unmanaged>MFVideoRenderPrefs_DoNotRepaintOnStop</unmanaged>\t\n            <unmanaged-short>MFVideoRenderPrefs_DoNotRepaintOnStop</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.VideoSrcContentHintFlags\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Specifies how the credential manager should obtain user credentials. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The application implements the credential manager, which must expose the <strong><see cref=\"T:SharpDX.MediaFoundation.NetCredentialManager\"/></strong> interface. If the <strong><see cref=\"F:SharpDX.MediaFoundation.NetCredentialRequirements.RequirePrompt\"/></strong> flag is set, the credential manager should prompt the user for his or her name and password.</p><p>The credential cache object sets the <strong><see cref=\"F:SharpDX.MediaFoundation.NetCredentialRequirements.RequirePrompt\"/></strong> flag if the cache does not yet contain valid credentials. It also sets this flag if the credentials will be sent as plain text, unless the credential manager previously set the <strong><see cref=\"F:SharpDX.MediaFoundation.NetCredentialOptions.MfnetCredentialAllowClearText\"/></strong> option. (See <strong><see cref=\"M:SharpDX.MediaFoundation.NetCredentialCache.SetUserOptions(SharpDX.MediaFoundation.NetCredential,System.Int32)\"/></strong>.)</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoSrcContentHintFlags']/*\"/>\t\n            <msdn-id>ms700813</msdn-id>\t\n            <unmanaged>MFVideoSrcContentHintFlags</unmanaged>\t\n            <unmanaged-short>MFVideoSrcContentHintFlags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoSrcContentHintFlags.None\">\n            <summary>\t\n            <dd> <p> The credential manager should prompt the user to provide the credentials. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoSrcContentHintFlag_None']/*\"/>\t\n            <msdn-id>ms700813</msdn-id>\t\n            <unmanaged>MFVideoSrcContentHintFlag_None</unmanaged>\t\n            <unmanaged-short>MFVideoSrcContentHintFlag_None</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoSrcContentHintFlags.Hint16x9\">\n            <summary>\t\n            <dd> <p> </p><p><strong>Note</strong>??Requires Windows?7 or later.</p> <p>The credentials are saved to persistent storage. This flag acts as a hint for the application's UI. If the application prompts the user for credentials, the UI can indicate that the credentials have already been saved.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoSrcContentHintFlag_16x9']/*\"/>\t\n            <msdn-id>ms700813</msdn-id>\t\n            <unmanaged>MFVideoSrcContentHintFlag_16x9</unmanaged>\t\n            <unmanaged-short>MFVideoSrcContentHintFlag_16x9</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoSrcContentHintFlags.Hint235_1\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoSrcContentHintFlag_235_1']/*\"/>\t\n            <unmanaged>MFVideoSrcContentHintFlag_235_1</unmanaged>\t\n            <unmanaged-short>MFVideoSrcContentHintFlag_235_1</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.VideoTransferFunction\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Specifies how the credential manager should obtain user credentials. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The application implements the credential manager, which must expose the <strong><see cref=\"T:SharpDX.MediaFoundation.NetCredentialManager\"/></strong> interface. If the <strong><see cref=\"F:SharpDX.MediaFoundation.NetCredentialRequirements.RequirePrompt\"/></strong> flag is set, the credential manager should prompt the user for his or her name and password.</p><p>The credential cache object sets the <strong><see cref=\"F:SharpDX.MediaFoundation.NetCredentialRequirements.RequirePrompt\"/></strong> flag if the cache does not yet contain valid credentials. It also sets this flag if the credentials will be sent as plain text, unless the credential manager previously set the <strong><see cref=\"F:SharpDX.MediaFoundation.NetCredentialOptions.MfnetCredentialAllowClearText\"/></strong> option. (See <strong><see cref=\"M:SharpDX.MediaFoundation.NetCredentialCache.SetUserOptions(SharpDX.MediaFoundation.NetCredential,System.Int32)\"/></strong>.)</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoTransferFunction']/*\"/>\t\n            <msdn-id>ms700813</msdn-id>\t\n            <unmanaged>MFVideoTransferFunction</unmanaged>\t\n            <unmanaged-short>MFVideoTransferFunction</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoTransferFunction.FuncUnknown\">\n            <summary>\t\n            <dd> <p> The credential manager should prompt the user to provide the credentials. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoTransFunc_Unknown']/*\"/>\t\n            <msdn-id>ms700813</msdn-id>\t\n            <unmanaged>MFVideoTransFunc_Unknown</unmanaged>\t\n            <unmanaged-short>MFVideoTransFunc_Unknown</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoTransferFunction.Func10\">\n            <summary>\t\n            <dd> <p> </p><p><strong>Note</strong>??Requires Windows?7 or later.</p> <p>The credentials are saved to persistent storage. This flag acts as a hint for the application's UI. If the application prompts the user for credentials, the UI can indicate that the credentials have already been saved.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoTransFunc_10']/*\"/>\t\n            <msdn-id>ms700813</msdn-id>\t\n            <unmanaged>MFVideoTransFunc_10</unmanaged>\t\n            <unmanaged-short>MFVideoTransFunc_10</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoTransferFunction.Func18\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoTransFunc_18']/*\"/>\t\n            <unmanaged>MFVideoTransFunc_18</unmanaged>\t\n            <unmanaged-short>MFVideoTransFunc_18</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoTransferFunction.Func20\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoTransFunc_20']/*\"/>\t\n            <unmanaged>MFVideoTransFunc_20</unmanaged>\t\n            <unmanaged-short>MFVideoTransFunc_20</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoTransferFunction.Func22\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoTransFunc_22']/*\"/>\t\n            <unmanaged>MFVideoTransFunc_22</unmanaged>\t\n            <unmanaged-short>MFVideoTransFunc_22</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoTransferFunction.Func709\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoTransFunc_709']/*\"/>\t\n            <unmanaged>MFVideoTransFunc_709</unmanaged>\t\n            <unmanaged-short>MFVideoTransFunc_709</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoTransferFunction.Func240m\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoTransFunc_240M']/*\"/>\t\n            <unmanaged>MFVideoTransFunc_240M</unmanaged>\t\n            <unmanaged-short>MFVideoTransFunc_240M</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoTransferFunction.FuncSRGB\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoTransFunc_sRGB']/*\"/>\t\n            <unmanaged>MFVideoTransFunc_sRGB</unmanaged>\t\n            <unmanaged-short>MFVideoTransFunc_sRGB</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoTransferFunction.Func28\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoTransFunc_28']/*\"/>\t\n            <unmanaged>MFVideoTransFunc_28</unmanaged>\t\n            <unmanaged-short>MFVideoTransFunc_28</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoTransferFunction.FuncLog100\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoTransFunc_Log_100']/*\"/>\t\n            <unmanaged>MFVideoTransFunc_Log_100</unmanaged>\t\n            <unmanaged-short>MFVideoTransFunc_Log_100</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoTransferFunction.FuncLog316\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoTransFunc_Log_316']/*\"/>\t\n            <unmanaged>MFVideoTransFunc_Log_316</unmanaged>\t\n            <unmanaged-short>MFVideoTransFunc_Log_316</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoTransferFunction.Func709Sym\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoTransFunc_709_sym']/*\"/>\t\n            <unmanaged>MFVideoTransFunc_709_sym</unmanaged>\t\n            <unmanaged-short>MFVideoTransFunc_709_sym</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoTransferFunction.FuncLast\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoTransFunc_Last']/*\"/>\t\n            <unmanaged>MFVideoTransFunc_Last</unmanaged>\t\n            <unmanaged-short>MFVideoTransFunc_Last</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoTransferFunction.FuncForceDWORD\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoTransFunc_ForceDWORD']/*\"/>\t\n            <unmanaged>MFVideoTransFunc_ForceDWORD</unmanaged>\t\n            <unmanaged-short>MFVideoTransFunc_ForceDWORD</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.VideoTransferMatrix\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Specifies how the credential manager should obtain user credentials. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The application implements the credential manager, which must expose the <strong><see cref=\"T:SharpDX.MediaFoundation.NetCredentialManager\"/></strong> interface. If the <strong><see cref=\"F:SharpDX.MediaFoundation.NetCredentialRequirements.RequirePrompt\"/></strong> flag is set, the credential manager should prompt the user for his or her name and password.</p><p>The credential cache object sets the <strong><see cref=\"F:SharpDX.MediaFoundation.NetCredentialRequirements.RequirePrompt\"/></strong> flag if the cache does not yet contain valid credentials. It also sets this flag if the credentials will be sent as plain text, unless the credential manager previously set the <strong><see cref=\"F:SharpDX.MediaFoundation.NetCredentialOptions.MfnetCredentialAllowClearText\"/></strong> option. (See <strong><see cref=\"M:SharpDX.MediaFoundation.NetCredentialCache.SetUserOptions(SharpDX.MediaFoundation.NetCredential,System.Int32)\"/></strong>.)</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoTransferMatrix']/*\"/>\t\n            <msdn-id>ms700813</msdn-id>\t\n            <unmanaged>MFVideoTransferMatrix</unmanaged>\t\n            <unmanaged-short>MFVideoTransferMatrix</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoTransferMatrix.Unknown\">\n            <summary>\t\n            <dd> <p> The credential manager should prompt the user to provide the credentials. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoTransferMatrix_Unknown']/*\"/>\t\n            <msdn-id>ms700813</msdn-id>\t\n            <unmanaged>MFVideoTransferMatrix_Unknown</unmanaged>\t\n            <unmanaged-short>MFVideoTransferMatrix_Unknown</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoTransferMatrix.Bt709\">\n            <summary>\t\n            <dd> <p> </p><p><strong>Note</strong>??Requires Windows?7 or later.</p> <p>The credentials are saved to persistent storage. This flag acts as a hint for the application's UI. If the application prompts the user for credentials, the UI can indicate that the credentials have already been saved.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoTransferMatrix_BT709']/*\"/>\t\n            <msdn-id>ms700813</msdn-id>\t\n            <unmanaged>MFVideoTransferMatrix_BT709</unmanaged>\t\n            <unmanaged-short>MFVideoTransferMatrix_BT709</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoTransferMatrix.Bt601\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoTransferMatrix_BT601']/*\"/>\t\n            <unmanaged>MFVideoTransferMatrix_BT601</unmanaged>\t\n            <unmanaged-short>MFVideoTransferMatrix_BT601</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoTransferMatrix.Smpte240m\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoTransferMatrix_SMPTE240M']/*\"/>\t\n            <unmanaged>MFVideoTransferMatrix_SMPTE240M</unmanaged>\t\n            <unmanaged-short>MFVideoTransferMatrix_SMPTE240M</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoTransferMatrix.Last\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoTransferMatrix_Last']/*\"/>\t\n            <unmanaged>MFVideoTransferMatrix_Last</unmanaged>\t\n            <unmanaged-short>MFVideoTransferMatrix_Last</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoTransferMatrix.ForceDWORD\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoTransferMatrix_ForceDWORD']/*\"/>\t\n            <unmanaged>MFVideoTransferMatrix_ForceDWORD</unmanaged>\t\n            <unmanaged-short>MFVideoTransferMatrix_ForceDWORD</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.VpMessageType\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Defines messages for an enhanced video renderer (EVR) presenter. This enumeration is used with the <strong><see cref=\"M:SharpDX.MediaFoundation.VideoPresenter.ProcessMessage(SharpDX.MediaFoundation.VpMessageType,System.IntPtr)\"/></strong> method.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVP_MESSAGE_TYPE']/*\"/>\t\n            <msdn-id>ms698964</msdn-id>\t\n            <unmanaged>MFVP_MESSAGE_TYPE</unmanaged>\t\n            <unmanaged-short>MFVP_MESSAGE_TYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VpMessageType.Flush\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVP_MESSAGE_FLUSH']/*\"/>\t\n            <unmanaged>MFVP_MESSAGE_FLUSH</unmanaged>\t\n            <unmanaged-short>MFVP_MESSAGE_FLUSH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VpMessageType.InvalidateMediaType\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVP_MESSAGE_INVALIDATEMEDIATYPE']/*\"/>\t\n            <unmanaged>MFVP_MESSAGE_INVALIDATEMEDIATYPE</unmanaged>\t\n            <unmanaged-short>MFVP_MESSAGE_INVALIDATEMEDIATYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VpMessageType.Processinputnotify\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVP_MESSAGE_PROCESSINPUTNOTIFY']/*\"/>\t\n            <unmanaged>MFVP_MESSAGE_PROCESSINPUTNOTIFY</unmanaged>\t\n            <unmanaged-short>MFVP_MESSAGE_PROCESSINPUTNOTIFY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VpMessageType.Beginstreaming\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVP_MESSAGE_BEGINSTREAMING']/*\"/>\t\n            <unmanaged>MFVP_MESSAGE_BEGINSTREAMING</unmanaged>\t\n            <unmanaged-short>MFVP_MESSAGE_BEGINSTREAMING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VpMessageType.Endstreaming\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVP_MESSAGE_ENDSTREAMING']/*\"/>\t\n            <unmanaged>MFVP_MESSAGE_ENDSTREAMING</unmanaged>\t\n            <unmanaged-short>MFVP_MESSAGE_ENDSTREAMING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VpMessageType.Endofstream\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVP_MESSAGE_ENDOFSTREAM']/*\"/>\t\n            <unmanaged>MFVP_MESSAGE_ENDOFSTREAM</unmanaged>\t\n            <unmanaged-short>MFVP_MESSAGE_ENDOFSTREAM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VpMessageType.Step\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVP_MESSAGE_STEP']/*\"/>\t\n            <unmanaged>MFVP_MESSAGE_STEP</unmanaged>\t\n            <unmanaged-short>MFVP_MESSAGE_STEP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VpMessageType.Cancelstep\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVP_MESSAGE_CANCELSTEP']/*\"/>\t\n            <unmanaged>MFVP_MESSAGE_CANCELSTEP</unmanaged>\t\n            <unmanaged-short>MFVP_MESSAGE_CANCELSTEP</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.WaveFormatExConvertFlags\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Specifies how the credential manager should obtain user credentials. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The application implements the credential manager, which must expose the <strong><see cref=\"T:SharpDX.MediaFoundation.NetCredentialManager\"/></strong> interface. If the <strong><see cref=\"F:SharpDX.MediaFoundation.NetCredentialRequirements.RequirePrompt\"/></strong> flag is set, the credential manager should prompt the user for his or her name and password.</p><p>The credential cache object sets the <strong><see cref=\"F:SharpDX.MediaFoundation.NetCredentialRequirements.RequirePrompt\"/></strong> flag if the cache does not yet contain valid credentials. It also sets this flag if the credentials will be sent as plain text, unless the credential manager previously set the <strong><see cref=\"F:SharpDX.MediaFoundation.NetCredentialOptions.MfnetCredentialAllowClearText\"/></strong> option. (See <strong><see cref=\"M:SharpDX.MediaFoundation.NetCredentialCache.SetUserOptions(SharpDX.MediaFoundation.NetCredential,System.Int32)\"/></strong>.)</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFWaveFormatExConvertFlags']/*\"/>\t\n            <msdn-id>ms700813</msdn-id>\t\n            <unmanaged>MFWaveFormatExConvertFlags</unmanaged>\t\n            <unmanaged-short>MFWaveFormatExConvertFlags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.WaveFormatExConvertFlags.Normal\">\n            <summary>\t\n            <dd> <p> The credential manager should prompt the user to provide the credentials. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFWaveFormatExConvertFlag_Normal']/*\"/>\t\n            <msdn-id>ms700813</msdn-id>\t\n            <unmanaged>MFWaveFormatExConvertFlag_Normal</unmanaged>\t\n            <unmanaged-short>MFWaveFormatExConvertFlag_Normal</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.WaveFormatExConvertFlags.ForceExtensible\">\n            <summary>\t\n            <dd> <p> </p><p><strong>Note</strong>??Requires Windows?7 or later.</p> <p>The credentials are saved to persistent storage. This flag acts as a hint for the application's UI. If the application prompts the user for credentials, the UI can indicate that the credentials have already been saved.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFWaveFormatExConvertFlag_ForceExtensible']/*\"/>\t\n            <msdn-id>ms700813</msdn-id>\t\n            <unmanaged>MFWaveFormatExConvertFlag_ForceExtensible</unmanaged>\t\n            <unmanaged-short>MFWaveFormatExConvertFlag_ForceExtensible</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.AsfProfileAttributeKeys\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.MediaFoundation.AsfProfileAttributeKeys']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.AsfProfileAttributeKeys.Maxpacketsize\">\n            <summary>Constant Maxpacketsize.</summary>\n            <unmanaged>MF_ASFPROFILE_MAXPACKETSIZE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.AsfProfileAttributeKeys.Minpacketsize\">\n            <summary>Constant Minpacketsize.</summary>\n            <unmanaged>MF_ASFPROFILE_MINPACKETSIZE</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.AsfSplitterAttributeKeys\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.MediaFoundation.AsfSplitterAttributeKeys']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.AsfSplitterAttributeKeys.PacketBoundary\">\n            <summary>Constant PacketBoundary.</summary>\n            <unmanaged>MFASFSPLITTER_PACKET_BOUNDARY</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.AsfStreamConfigAttributeKeys\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.MediaFoundation.AsfStreamConfigAttributeKeys']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.AsfStreamConfigAttributeKeys.LeakyBucket1\">\n            <summary>Constant LeakyBucket1.</summary>\n            <unmanaged>MF_ASFSTREAMCONFIG_LEAKYBUCKET1</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.AsfStreamConfigAttributeKeys.LeakyBucket2\">\n            <summary>Constant LeakyBucket2.</summary>\n            <unmanaged>MF_ASFSTREAMCONFIG_LEAKYBUCKET2</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.AudioFormatGuids\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.MediaFoundation.AudioFormatGuids']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.AudioFormatGuids.MultisampledP1\">\n            <summary>Constant MultisampledP1.</summary>\n            <unmanaged>MFAudioFormat_MSP1</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.AudioFormatGuids.Drm\">\n            <summary>Constant Drm.</summary>\n            <unmanaged>MFAudioFormat_DRM</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.AudioFormatGuids.Dts\">\n            <summary>Constant Dts.</summary>\n            <unmanaged>MFAudioFormat_DTS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.AudioFormatGuids.Wmaspdif\">\n            <summary>Constant Wmaspdif.</summary>\n            <unmanaged>MFAudioFormat_WMASPDIF</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.AudioFormatGuids.DolbyAc3Spdif\">\n            <summary>Constant DolbyAc3Spdif.</summary>\n            <unmanaged>MFAudioFormat_Dolby_AC3_SPDIF</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.AudioFormatGuids.Pcm\">\n            <summary>Constant Pcm.</summary>\n            <unmanaged>MFAudioFormat_PCM</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.AudioFormatGuids.Mp3\">\n            <summary>Constant Mp3.</summary>\n            <unmanaged>MFAudioFormat_MP3</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.AudioFormatGuids.WMAudioLossless\">\n            <summary>Constant WMAudioLossless.</summary>\n            <unmanaged>MFAudioFormat_WMAudio_Lossless</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.AudioFormatGuids.Aac\">\n            <summary>Constant Aac.</summary>\n            <unmanaged>MFAudioFormat_AAC</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.AudioFormatGuids.Float\">\n            <summary>Constant Float.</summary>\n            <unmanaged>MFAudioFormat_Float</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.AudioFormatGuids.WMAudioV8\">\n            <summary>Constant WMAudioV8.</summary>\n            <unmanaged>MFAudioFormat_WMAudioV8</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.AudioFormatGuids.WMAudioV9\">\n            <summary>Constant WMAudioV9.</summary>\n            <unmanaged>MFAudioFormat_WMAudioV9</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.AudioFormatGuids.Base\">\n            <summary>Constant Base.</summary>\n            <unmanaged>MFAudioFormat_Base</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.AudioFormatGuids.Adts\">\n            <summary>Constant Adts.</summary>\n            <unmanaged>MFAudioFormat_ADTS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.AudioFormatGuids.Mpeg\">\n            <summary>Constant Mpeg.</summary>\n            <unmanaged>MFAudioFormat_MPEG</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.AudioRendererAttributeKeys\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.MediaFoundation.AudioRendererAttributeKeys']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.AudioRendererAttributeKeys.EndpointId\">\n            <summary>Constant EndpointId.</summary>\n            <unmanaged>MF_AUDIO_RENDERER_ATTRIBUTE_ENDPOINT_ID</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.AudioRendererAttributeKeys.EndpointRole\">\n            <summary>Constant EndpointRole.</summary>\n            <unmanaged>MF_AUDIO_RENDERER_ATTRIBUTE_ENDPOINT_ROLE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.AudioRendererAttributeKeys.Flags\">\n            <summary>Constant Flags.</summary>\n            <unmanaged>MF_AUDIO_RENDERER_ATTRIBUTE_FLAGS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.AudioRendererAttributeKeys.SessionId\">\n            <summary>Constant SessionId.</summary>\n            <unmanaged>MF_AUDIO_RENDERER_ATTRIBUTE_SESSION_ID</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.ByteStreamAttributeKeys\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.MediaFoundation.ByteStreamAttributeKeys']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ByteStreamAttributeKeys.ContentType\">\n            <summary>Constant ContentType.</summary>\n            <unmanaged>MF_BYTESTREAM_CONTENT_TYPE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ByteStreamAttributeKeys.Duration\">\n            <summary>Constant Duration.</summary>\n            <unmanaged>MF_BYTESTREAM_DURATION</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ByteStreamAttributeKeys.IfoFileUri\">\n            <summary>Constant IfoFileUri.</summary>\n            <unmanaged>MF_BYTESTREAM_IFO_FILE_URI</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ByteStreamAttributeKeys.LastModifiedTime\">\n            <summary>Constant LastModifiedTime.</summary>\n            <unmanaged>MF_BYTESTREAM_LAST_MODIFIED_TIME</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ByteStreamAttributeKeys.OriginName\">\n            <summary>Constant OriginName.</summary>\n            <unmanaged>MF_BYTESTREAM_ORIGIN_NAME</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ByteStreamAttributeKeys.HandlerAcceptsShareWrite\">\n            <summary>Constant HandlerAcceptsShareWrite.</summary>\n            <unmanaged>MF_BYTESTREAMHANDLER_ACCEPTS_SHARE_WRITE</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.CaptureDeviceAttributeKeys\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.MediaFoundation.CaptureDeviceAttributeKeys']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.CaptureDeviceAttributeKeys.SourceTypeVideoCapture\">\n            <summary>Constant SourceTypeVideoCapture.</summary>\n            <unmanaged>MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_VIDCAP_GUID</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.CaptureDeviceAttributeKeys.SourceTypeAudioCapture\">\n            <summary>Constant SourceTypeAudioCapture.</summary>\n            <unmanaged>MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_AUDCAP_GUID</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.CaptureDeviceAttributeKeys.FriendlyName\">\n            <summary>Constant FriendlyName.</summary>\n            <unmanaged>MF_DEVSOURCE_ATTRIBUTE_FRIENDLY_NAME</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.CaptureDeviceAttributeKeys.MediaType\">\n            <summary>Constant MediaType.</summary>\n            <unmanaged>MF_DEVSOURCE_ATTRIBUTE_MEDIA_TYPE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.CaptureDeviceAttributeKeys.SourceType\">\n            <summary>Constant SourceType.</summary>\n            <unmanaged>MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.CaptureDeviceAttributeKeys.SourceTypeAudcapEndpointId\">\n            <summary>Constant SourceTypeAudcapEndpointId.</summary>\n            <unmanaged>MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_AUDCAP_ENDPOINT_ID</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.CaptureDeviceAttributeKeys.SourceTypeAudcapRole\">\n            <summary>Constant SourceTypeAudcapRole.</summary>\n            <unmanaged>MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_AUDCAP_ROLE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.CaptureDeviceAttributeKeys.SourceTypeVidcapCategory\">\n            <summary>Constant SourceTypeVidcapCategory.</summary>\n            <unmanaged>MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_VIDCAP_CATEGORY</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.CaptureDeviceAttributeKeys.SourceTypeVidcapHwSource\">\n            <summary>Constant SourceTypeVidcapHwSource.</summary>\n            <unmanaged>MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_VIDCAP_HW_SOURCE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.CaptureDeviceAttributeKeys.SourceTypeVidcapMaxBuffers\">\n            <summary>Constant SourceTypeVidcapMaxBuffers.</summary>\n            <unmanaged>MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_VIDCAP_MAX_BUFFERS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.CaptureDeviceAttributeKeys.SourceTypeVidcapSymbolicLink\">\n            <summary>Constant SourceTypeVidcapSymbolicLink.</summary>\n            <unmanaged>MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_VIDCAP_SYMBOLIC_LINK</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DLNAMediaSinkAttributeKeys\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.MediaFoundation.DLNAMediaSinkAttributeKeys']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DLNAMediaSinkAttributeKeys.AudioBitRate\">\n            <summary>Constant AudioBitRate.</summary>\n            <unmanaged>MF_MP2DLNA_AUDIO_BIT_RATE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DLNAMediaSinkAttributeKeys.EncodeQuality\">\n            <summary>Constant EncodeQuality.</summary>\n            <unmanaged>MF_MP2DLNA_ENCODE_QUALITY</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DLNAMediaSinkAttributeKeys.Statistics\">\n            <summary>Constant Statistics.</summary>\n            <unmanaged>MF_MP2DLNA_STATISTICS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DLNAMediaSinkAttributeKeys.UseMmcss\">\n            <summary>Constant UseMmcss.</summary>\n            <unmanaged>MF_MP2DLNA_USE_MMCSS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DLNAMediaSinkAttributeKeys.VideoBitRate\">\n            <summary>Constant VideoBitRate.</summary>\n            <unmanaged>MF_MP2DLNA_VIDEO_BIT_RATE</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.EventAttributeKeys\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.MediaFoundation.EventAttributeKeys']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.EventAttributeKeys.DoThinning\">\n            <summary>Constant DoThinning.</summary>\n            <unmanaged>MF_EVENT_DO_THINNING</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.EventAttributeKeys.TransformContext\">\n            <summary>Constant TransformContext.</summary>\n            <unmanaged>MF_EVENT_MFT_CONTEXT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.EventAttributeKeys.TransformInputStreamId\">\n            <summary>Constant TransformInputStreamId.</summary>\n            <unmanaged>MF_EVENT_MFT_INPUT_STREAM_ID</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.EventAttributeKeys.OutputNode\">\n            <summary>Constant OutputNode.</summary>\n            <unmanaged>MF_EVENT_OUTPUT_NODE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.EventAttributeKeys.PresentationTimeOffset\">\n            <summary>Constant PresentationTimeOffset.</summary>\n            <unmanaged>MF_EVENT_PRESENTATION_TIME_OFFSET</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.EventAttributeKeys.ScrubsampleTime\">\n            <summary>Constant ScrubsampleTime.</summary>\n            <unmanaged>MF_EVENT_SCRUBSAMPLE_TIME</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.EventAttributeKeys.Sessioncaps\">\n            <summary>Constant Sessioncaps.</summary>\n            <unmanaged>MF_EVENT_SESSIONCAPS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.EventAttributeKeys.SessioncapsDelta\">\n            <summary>Constant SessioncapsDelta.</summary>\n            <unmanaged>MF_EVENT_SESSIONCAPS_DELTA</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.EventAttributeKeys.SourceActualStart\">\n            <summary>Constant SourceActualStart.</summary>\n            <unmanaged>MF_EVENT_SOURCE_ACTUAL_START</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.EventAttributeKeys.SourceCharacteristics\">\n            <summary>Constant SourceCharacteristics.</summary>\n            <unmanaged>MF_EVENT_SOURCE_CHARACTERISTICS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.EventAttributeKeys.SourceCharacteristicsOld\">\n            <summary>Constant SourceCharacteristicsOld.</summary>\n            <unmanaged>MF_EVENT_SOURCE_CHARACTERISTICS_OLD</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.EventAttributeKeys.SourceFakeStart\">\n            <summary>Constant SourceFakeStart.</summary>\n            <unmanaged>MF_EVENT_SOURCE_FAKE_START</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.EventAttributeKeys.SourceProjectstart\">\n            <summary>Constant SourceProjectstart.</summary>\n            <unmanaged>MF_EVENT_SOURCE_PROJECTSTART</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.EventAttributeKeys.SourceTopologyCanceled\">\n            <summary>Constant SourceTopologyCanceled.</summary>\n            <unmanaged>MF_EVENT_SOURCE_TOPOLOGY_CANCELED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.EventAttributeKeys.StartPresentationTime\">\n            <summary>Constant StartPresentationTime.</summary>\n            <unmanaged>MF_EVENT_START_PRESENTATION_TIME</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.EventAttributeKeys.StartPresentationTimeAtOutput\">\n            <summary>Constant StartPresentationTimeAtOutput.</summary>\n            <unmanaged>MF_EVENT_START_PRESENTATION_TIME_AT_OUTPUT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.EventAttributeKeys.TopologyStatus\">\n            <summary>Constant TopologyStatus.</summary>\n            <unmanaged>MF_EVENT_TOPOLOGY_STATUS</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.EVRAttributeKeys\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.MediaFoundation.EVRAttributeKeys']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.EVRAttributeKeys.SaRequiredSampleCount\">\n            <summary>Constant SaRequiredSampleCount.</summary>\n            <unmanaged>MF_SA_REQUIRED_SAMPLE_COUNT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.EVRAttributeKeys.VideoZoomRect\">\n            <summary>Constant VideoZoomRect.</summary>\n            <unmanaged>VIDEO_ZOOM_RECT</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.EVRConfigAttributeKeys\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.MediaFoundation.EVRConfigAttributeKeys']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.EVRConfigAttributeKeys.AllowBatching\">\n            <summary>Constant AllowBatching.</summary>\n            <unmanaged>EVRConfig_AllowBatching</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.EVRConfigAttributeKeys.AllowDropToBob\">\n            <summary>Constant AllowDropToBob.</summary>\n            <unmanaged>EVRConfig_AllowDropToBob</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.EVRConfigAttributeKeys.AllowDropToHalfInterlace\">\n            <summary>Constant AllowDropToHalfInterlace.</summary>\n            <unmanaged>EVRConfig_AllowDropToHalfInterlace</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.EVRConfigAttributeKeys.AllowDropToThrottle\">\n            <summary>Constant AllowDropToThrottle.</summary>\n            <unmanaged>EVRConfig_AllowDropToThrottle</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.EVRConfigAttributeKeys.AllowScaling\">\n            <summary>Constant AllowScaling.</summary>\n            <unmanaged>EVRConfig_AllowScaling</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.EVRConfigAttributeKeys.ForceBatching\">\n            <summary>Constant ForceBatching.</summary>\n            <unmanaged>EVRConfig_ForceBatching</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.EVRConfigAttributeKeys.ForceBob\">\n            <summary>Constant ForceBob.</summary>\n            <unmanaged>EVRConfig_ForceBob</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.EVRConfigAttributeKeys.ForceHalfInterlace\">\n            <summary>Constant ForceHalfInterlace.</summary>\n            <unmanaged>EVRConfig_ForceHalfInterlace</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.EVRConfigAttributeKeys.ForceScaling\">\n            <summary>Constant ForceScaling.</summary>\n            <unmanaged>EVRConfig_ForceScaling</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.EVRConfigAttributeKeys.ForceThrottle\">\n            <summary>Constant ForceThrottle.</summary>\n            <unmanaged>EVRConfig_ForceThrottle</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.EVRCustomVideoAttributeKeys\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.MediaFoundation.EVRCustomVideoAttributeKeys']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.EVRCustomVideoAttributeKeys.MixerActivate\">\n            <summary>Constant MixerActivate.</summary>\n            <unmanaged>MF_ACTIVATE_CUSTOM_VIDEO_MIXER_ACTIVATE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.EVRCustomVideoAttributeKeys.MixerClsid\">\n            <summary>Constant MixerClsid.</summary>\n            <unmanaged>MF_ACTIVATE_CUSTOM_VIDEO_MIXER_CLSID</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.EVRCustomVideoAttributeKeys.MixerFlags\">\n            <summary>Constant MixerFlags.</summary>\n            <unmanaged>MF_ACTIVATE_CUSTOM_VIDEO_MIXER_FLAGS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.EVRCustomVideoAttributeKeys.PresenterActivate\">\n            <summary>Constant PresenterActivate.</summary>\n            <unmanaged>MF_ACTIVATE_CUSTOM_VIDEO_PRESENTER_ACTIVATE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.EVRCustomVideoAttributeKeys.PresenterClsid\">\n            <summary>Constant PresenterClsid.</summary>\n            <unmanaged>MF_ACTIVATE_CUSTOM_VIDEO_PRESENTER_CLSID</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.EVRCustomVideoAttributeKeys.PresenterFlags\">\n            <summary>Constant PresenterFlags.</summary>\n            <unmanaged>MF_ACTIVATE_CUSTOM_VIDEO_PRESENTER_FLAGS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.EVRCustomVideoAttributeKeys.ActivateVideoWindow\">\n            <summary>Constant ActivateVideoWindow.</summary>\n            <unmanaged>MF_ACTIVATE_VIDEO_WINDOW</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.MediaFactory\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.MediaFoundation.MediaFactory']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaFactory.Version\">\n            <summary>Constant Version.</summary>\n            <unmanaged>MF_VERSION</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CreateVideoSampleFromSurface(SharpDX.ComObject,SharpDX.MediaFoundation.Sample@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Creates a media sample that manages a Direct3D surface. </p>\t\n            </summary>\t\n            <param name=\"unkSurfaceRef\"><dd> <p> A reference to the <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interface of the Direct3D surface. This parameter can be <strong><c>null</c></strong>. </p> </dd></param>\t\n            <param name=\"sampleOut\"><dd> <p> Receives a reference to the sample's <strong><see cref=\"T:SharpDX.MediaFoundation.Sample\"/></strong> interface. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>If this function succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>The media sample created by this function exposes the following interfaces in addition to <strong><see cref=\"T:SharpDX.MediaFoundation.Sample\"/></strong>:</p><ul> <li> <strong><see cref=\"T:SharpDX.MediaFoundation.DesiredSample\"/></strong> </li> <li> <strong><see cref=\"T:SharpDX.MediaFoundation.TrackedSample\"/></strong> </li> </ul><p>If <em>pUnkSurface</em> is non-<strong><c>null</c></strong>, the sample contains a single media buffer, which holds a reference to the Direct3D surface. To get the Direct3D surface from the media buffer, call <strong><see cref=\"M:SharpDX.MediaFoundation.ServiceProvider.GetService(System.Guid,System.Guid,System.IntPtr@)\"/></strong> on the buffer, using the service identifier MR_BUFFER_SERVICE. The media buffer does not implement <strong><see cref=\"T:SharpDX.MediaFoundation.Buffer2D\"/></strong>, nor does it implement the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaBuffer.Lock(System.Int32@,System.Int32@)\"/></strong> and <strong>Unlock</strong> methods.</p><p>Alternatively, you can set <em>pUnkSurface</em> to <strong><c>null</c></strong>, and later add a DirectX surface buffer to the sample by calling <strong><see cref=\"M:SharpDX.MediaFoundation.Sample.AddBuffer(SharpDX.MediaFoundation.MediaBuffer)\"/></strong>. To create a DirectX surface buffer, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateDXSurfaceBuffer(System.Guid,SharpDX.ComObject,SharpDX.Bool,SharpDX.MediaFoundation.MediaBuffer@)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCreateVideoSampleFromSurface']/*\"/>\t\n            <msdn-id>ms703859</msdn-id>\t\n            <unmanaged>HRESULT MFCreateVideoSampleFromSurface([In, Optional] IUnknown* pUnkSurface,[Out, Optional] IMFSample** ppSample)</unmanaged>\t\n            <unmanaged-short>MFCreateVideoSampleFromSurface</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CreateVideoPresenter(SharpDX.ComObject,System.Guid,System.Guid,System.IntPtr@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Initializes Microsoft Media Foundation.</p>\t\n            </summary>\t\n            <param name=\"ownerRef\"><dd> <p>Version number. Use the value <strong><see cref=\"F:SharpDX.MediaFoundation.MediaFactory.Version\"/></strong>, defined in mfapi.h.</p> </dd></param>\t\n            <param name=\"riidDevice\"><dd> <p>This parameter is optional when using C++ but required in C. The value must be one of the following flags: </p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td> <dl> <dt>MFSTARTUP_NOSOCKET</dt> </dl> </td><td> <p> Do not initialize the sockets library. </p> </td></tr> <tr><td> <dl> <dt>MFSTARTUP_LITE</dt> </dl> </td><td> <p> Equivalent to MFSTARTUP_NOSOCKET. </p> </td></tr> <tr><td> <dl> <dt>MFSTARTUP_FULL</dt> </dl> </td><td> <p> Initialize the entire Media Foundation platform. This is the default value when <em>dwFlags</em> is not specified. </p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <param name=\"riid\">No documentation.</param>\t\n            <param name=\"videoPresenterOut\">No documentation.</param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.BadStartupVersion\"/></strong></dt> </dl> </td><td> <p> The <em>Version</em> parameter requires a newer version of Media Foundation than the version that is running.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.DisabledInSafemode\"/></strong></dt> </dl> </td><td> <p> The Media Foundation platform is disabled because the system was started in \"Safe Mode\" (fail-safe boot). </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> An application must call this function before using Media Foundation. Before your application quits, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> once for every previous call to <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong>. </p><p> Do not call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong> or <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> from work queue threads. For more information about work queues, see Work Queues. </p><p>This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCreateVideoPresenter']/*\"/>\t\n            <msdn-id>ms702238</msdn-id>\t\n            <unmanaged>HRESULT MFCreateVideoPresenter([In, Optional] IUnknown* pOwner,[In] const GUID&amp; riidDevice,[In] const GUID&amp; riid,[Out, Optional] void** ppVideoPresenter)</unmanaged>\t\n            <unmanaged-short>MFCreateVideoPresenter</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CreateVideoMixer(SharpDX.ComObject,System.Guid,System.Guid,System.IntPtr@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Initializes Microsoft Media Foundation.</p>\t\n            </summary>\t\n            <param name=\"ownerRef\"><dd> <p>Version number. Use the value <strong><see cref=\"F:SharpDX.MediaFoundation.MediaFactory.Version\"/></strong>, defined in mfapi.h.</p> </dd></param>\t\n            <param name=\"riidDevice\"><dd> <p>This parameter is optional when using C++ but required in C. The value must be one of the following flags: </p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td> <dl> <dt>MFSTARTUP_NOSOCKET</dt> </dl> </td><td> <p> Do not initialize the sockets library. </p> </td></tr> <tr><td> <dl> <dt>MFSTARTUP_LITE</dt> </dl> </td><td> <p> Equivalent to MFSTARTUP_NOSOCKET. </p> </td></tr> <tr><td> <dl> <dt>MFSTARTUP_FULL</dt> </dl> </td><td> <p> Initialize the entire Media Foundation platform. This is the default value when <em>dwFlags</em> is not specified. </p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <param name=\"riid\">No documentation.</param>\t\n            <param name=\"videoMixerOut\">No documentation.</param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.BadStartupVersion\"/></strong></dt> </dl> </td><td> <p> The <em>Version</em> parameter requires a newer version of Media Foundation than the version that is running.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.DisabledInSafemode\"/></strong></dt> </dl> </td><td> <p> The Media Foundation platform is disabled because the system was started in \"Safe Mode\" (fail-safe boot). </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> An application must call this function before using Media Foundation. Before your application quits, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> once for every previous call to <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong>. </p><p> Do not call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong> or <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> from work queue threads. For more information about work queues, see Work Queues. </p><p>This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCreateVideoMixer']/*\"/>\t\n            <msdn-id>ms702238</msdn-id>\t\n            <unmanaged>HRESULT MFCreateVideoMixer([In, Optional] IUnknown* pOwner,[In] const GUID&amp; riidDevice,[In] const GUID&amp; riid,[Out, Optional] void** ppVideoMixer)</unmanaged>\t\n            <unmanaged-short>MFCreateVideoMixer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CreateVideoRenderer(System.Guid,System.IntPtr@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Creates an instance of the enhanced video renderer (EVR) media sink.</p>\t\n            </summary>\t\n            <param name=\"riidRenderer\"><dd> <p>Interface identifier (IID) of the requested interface on the EVR.</p> </dd></param>\t\n            <param name=\"videoRendererOut\"><dd> <p>Receives a reference to the requested interface. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>This function creates the Media Foundation version of the EVR. To create the DirectShow EVR filter, call <strong>CoCreateInstance</strong> with the class identifier CLSID_EnhancedVideoRenderer.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCreateVideoRenderer']/*\"/>\t\n            <msdn-id>ms703814</msdn-id>\t\n            <unmanaged>HRESULT MFCreateVideoRenderer([In] const GUID&amp; riidRenderer,[Out, Optional] void** ppVideoRenderer)</unmanaged>\t\n            <unmanaged-short>MFCreateVideoRenderer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CreateVideoMixerAndPresenter(SharpDX.ComObject,SharpDX.ComObject,System.Guid,System.IntPtr@,System.Guid,System.IntPtr@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Creates the default video mixer and video presenter for the enhanced video renderer (EVR).</p>\t\n            </summary>\t\n            <param name=\"mixerOwnerRef\"><dd> <p>Pointer to the owner of the video mixer. If the mixer is aggregated, pass a reference to the aggregating object's <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interface. Otherwise, set this parameter to <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"presenterOwnerRef\"><dd> <p>Pointer to the owner of the video presenter. If the presenter is aggregated, pass a reference to the aggregating object's <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interface. Otherwise, set this parameter to <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"riidMixer\"><dd> <p>Interface identifier (IID) of the requested interface on the video mixer. The video mixer exposes the <strong><see cref=\"T:SharpDX.MediaFoundation.Transform\"/></strong> interface.</p> </dd></param>\t\n            <param name=\"vVideoMixerOut\"><dd> <p>Receives a reference to the requested interface on the video mixer. The caller must release the interface.</p> </dd></param>\t\n            <param name=\"riidPresenter\"><dd> <p>IID of the requested interface on the video presenter. The video presenter exposes the <strong><see cref=\"T:SharpDX.MediaFoundation.VideoPresenter\"/></strong> interface.</p> </dd></param>\t\n            <param name=\"vVideoPresenterOut\"><dd> <p>Receives a reference to the requested interface on the video presenter. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded. </p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCreateVideoMixerAndPresenter']/*\"/>\t\n            <msdn-id>ms694842</msdn-id>\t\n            <unmanaged>HRESULT MFCreateVideoMixerAndPresenter([In, Optional] IUnknown* pMixerOwner,[In, Optional] IUnknown* pPresenterOwner,[In] const GUID&amp; riidMixer,[Out] void** ppvVideoMixer,[In] const GUID&amp; riidPresenter,[Out] void** ppvVideoPresenter)</unmanaged>\t\n            <unmanaged-short>MFCreateVideoMixerAndPresenter</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.PCreateMediaPlayer(System.String,SharpDX.Bool,System.Int32,SharpDX.MediaFoundation.PMediaPlayerCallback,System.IntPtr,SharpDX.MediaFoundation.PMediaPlayer@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Important</strong>??Deprecated. This API may be removed from future releases of Windows. Applications should use the Media Session for playback.</p><p>Creates a new instance of the MFPlay player object.</p>\t\n            </summary>\t\n            <param name=\"wszURLRef\">No documentation.</param>\t\n            <param name=\"fStartPlayback\">No documentation.</param>\t\n            <param name=\"creationOptions\">No documentation.</param>\t\n            <param name=\"callbackRef\">No documentation.</param>\t\n            <param name=\"hWnd\">No documentation.</param>\t\n            <param name=\"mediaPlayerOut\">No documentation.</param>\t\n            <returns><p>If this function succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>Before calling this function, call <strong>CoIntialize(Ex)</strong> from the same thread to initialize the COM library.</p><p>Internally, <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.PCreateMediaPlayer(System.String,SharpDX.Bool,System.Int32,SharpDX.MediaFoundation.PMediaPlayerCallback,System.IntPtr,SharpDX.MediaFoundation.PMediaPlayer@)\"/></strong> calls <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong> to initialize the Microsoft Media Foundation platform. When the player object is destroyed, it calls  <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> to shut down the platform. It is not necessary for an application to call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong> or <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> when using MFPlay.</p><p><strong>Note</strong>??If you use other Media Foundation APIs outside the life time of the player object, then your application should call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong> and <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFPCreateMediaPlayer']/*\"/>\t\n            <msdn-id>dd375520</msdn-id>\t\n            <unmanaged>HRESULT MFPCreateMediaPlayer([In, Optional] const wchar_t* pwszURL,[In] BOOL fStartPlayback,[In, Optional] unsigned int creationOptions,[In, Optional] IMFPMediaPlayerCallback* pCallback,[In, Optional] HWND hWnd,[Out, Optional] IMFPMediaPlayer** ppMediaPlayer)</unmanaged>\t\n            <unmanaged-short>MFPCreateMediaPlayer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CreateSinkWriterFromURL(System.String,System.IntPtr,SharpDX.MediaFoundation.MediaAttributes,SharpDX.MediaFoundation.SinkWriter@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Creates the sink writer from a URL or byte stream.</p>\t\n            </summary>\t\n            <param name=\"wszOutputURLRef\"><dd> <p>A null-terminated string that contains the URL of the output file. This parameter can be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"byteStreamRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.IByteStream\"/></strong> interface of a byte stream. This parameter can be <strong><c>null</c></strong>.</p> <p>If this parameter is a valid reference, the sink writer writes to the provided byte stream. (The byte stream must be writable.) Otherwise, if <em>pByteStream</em> is <strong><c>null</c></strong>, the sink writer creates a new file named <em>pwszOutputURL</em>.</p> </dd></param>\t\n            <param name=\"attributesRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaAttributes\"/></strong> interface. You can use this parameter to configure the sink writer. For more information, see Sink Writer Attributes. This parameter can be <strong><c>null</c></strong>. </p> </dd></param>\t\n            <param name=\"sinkWriterOut\"><dd> <p>Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.SinkWriter\"/></strong> interface. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>This function can return one of these values.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>Success.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.NotFound\"/></strong></dt> </dl> </td><td> <p>The specified URL was not found.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>Call <strong>CoInitialize(Ex)</strong> and <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong> before calling this function.</p><p>The first three parameters to this function can be <strong><c>null</c></strong>; however, only certain combinations are valid:</p><p> </p><table> <tr><th>Description</th><th><em>pwszOutputURL</em></th><th><em>pByteStream</em></th><th><em>pAttributes</em></th></tr> <tr><td>Specify a byte stream, with no URL.</td><td><strong><c>null</c></strong></td><td>non-<strong><c>null</c></strong></td><td>Required (must not be <strong><c>null</c></strong>).</td></tr> <tr><td>Specify a URL, with no byte stream.</td><td>not <strong><c>null</c></strong></td><td><strong><c>null</c></strong></td><td>Optional (may be <strong><c>null</c></strong>).</td></tr> <tr><td>Specify both a URL and a byte stream.</td><td>non-<strong><c>null</c></strong></td><td>non-<strong><c>null</c></strong></td><td>Optional (may be <strong><c>null</c></strong>).</td></tr> </table><p>?</p><p>The <em>pAttributes</em> parameter is required in the first case and optional in the others.</p><ul> <li>Case 1: Specify a byte stream without a URL. The <em>pAttributes</em> parameter must point to an attribute store that contains the <see cref=\"F:SharpDX.MediaFoundation.TranscodeAttributeKeys.TranscodeContainertype\"/> attribute. The sink writer uses the  <see cref=\"F:SharpDX.MediaFoundation.TranscodeAttributeKeys.TranscodeContainertype\"/> attribute to determine the type of file container to write, such as ASF or MP4.</li> <li>Case 2: Specify a URL without a byte stream. The sink writer creates a new file named <em>pwszOutputURL</em>. If <em>pAttributes</em> specifies an attribute store with the <see cref=\"F:SharpDX.MediaFoundation.TranscodeAttributeKeys.TranscodeContainertype\"/> attribute, the sink writer uses that attribute to determine the type of file container. Otherwise, if the <see cref=\"F:SharpDX.MediaFoundation.TranscodeAttributeKeys.TranscodeContainertype\"/> attribute is absent or <em>pAttributes</em> is <strong><c>null</c></strong>, the sink writer uses the file name extension to select the container type; for example, \".asf\" for an ASF file.</li> <li>Case 3: Specify both a URL and a byte stream. The sink writer writes to the byte stream. The URL provided in <em>pwszOutputURL</em> is informational only; the sink writer does not create a new file. If <em>pAttributes</em> specifies an attribute store with the <see cref=\"F:SharpDX.MediaFoundation.TranscodeAttributeKeys.TranscodeContainertype\"/> attribute, the sink writer uses that attribute to determine the type of file container. Otherwise, the sink writer uses the file name extension to select the container type. The <see cref=\"F:SharpDX.MediaFoundation.TranscodeAttributeKeys.TranscodeContainertype\"/> attribute overrides the URL file name extension in this case.</li> </ul><p>This function is available on Windows?Vista if Platform Update Supplement for Windows?Vista is installed.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCreateSinkWriterFromURL']/*\"/>\t\n            <msdn-id>dd388105</msdn-id>\t\n            <unmanaged>HRESULT MFCreateSinkWriterFromURL([In, Optional] const wchar_t* pwszOutputURL,[In, Optional] IMFByteStream* pByteStream,[In, Optional] IMFAttributes* pAttributes,[Out] IMFSinkWriter** ppSinkWriter)</unmanaged>\t\n            <unmanaged-short>MFCreateSinkWriterFromURL</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CreateSourceReaderFromURL(System.String,SharpDX.MediaFoundation.MediaAttributes,SharpDX.MediaFoundation.SourceReader)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Creates the source reader from a URL.</p>\t\n            </summary>\t\n            <param name=\"wszURLRef\"><dd> <p>The URL  of a media file to open.</p> </dd></param>\t\n            <param name=\"attributesRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaAttributes\"/></strong> interface. You can use this parameter to configure the source reader. For more information, see Source Reader Attributes. This parameter can be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"sourceReaderOut\"><dd> <p>Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.SourceReader\"/></strong> interface. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>If this function succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>Call <strong>CoInitialize(Ex)</strong> and <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong> before calling this function.</p><p> Internally, the source reader calls the <strong><see cref=\"M:SharpDX.MediaFoundation.SourceResolver.CreateObjectFromURL(System.String,System.Int32,SharpDX.ComObject,SharpDX.MediaFoundation.ObjectType@,SharpDX.ComObject@)\"/></strong> method to create a media source from the URL. </p><p>This function is available on Windows?Vista if Platform Update Supplement for Windows?Vista is installed.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCreateSourceReaderFromURL']/*\"/>\t\n            <msdn-id>dd388110</msdn-id>\t\n            <unmanaged>HRESULT MFCreateSourceReaderFromURL([In] const wchar_t* pwszURL,[In, Optional] IMFAttributes* pAttributes,[Out, Fast] IMFSourceReader** ppSourceReader)</unmanaged>\t\n            <unmanaged-short>MFCreateSourceReaderFromURL</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CreateSourceReaderFromMediaSource(SharpDX.MediaFoundation.MediaSource,SharpDX.MediaFoundation.MediaAttributes,SharpDX.MediaFoundation.SourceReader)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Creates the source reader from a media source.</p>\t\n            </summary>\t\n            <param name=\"mediaSourceRef\"><dd> <p>A reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaSource\"/></strong> interface of a media source.</p> </dd></param>\t\n            <param name=\"attributesRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaAttributes\"/></strong> interface. You can use this parameter to configure the source reader. For more information, see Source Reader Attributes. This parameter can be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"sourceReaderOut\"><dd> <p>Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.SourceReader\"/></strong> interface. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.DrmUnsupported\"/></strong></strong></dt> </dl> </td><td> <p>The source contains protected content.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>Call <strong>CoInitialize(Ex)</strong> and <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong> before calling this function.</p><p>By default, when the application releases the source reader, the source reader shuts down the media source by calling <strong><see cref=\"M:SharpDX.MediaFoundation.MediaSource.Shutdown\"/></strong> on the media source. At that point, the application can no longer use the media source.</p><p>To change this default behavior, set the <see cref=\"F:SharpDX.MediaFoundation.SourceReaderAttributeKeys.DisconnectMediasourceOnShutdown\"/> attribute in the <em>pAttributes</em> parameter. If this attribute is <strong>TRUE</strong>, the application is responsible for  shutting down the media source.</p><p>When using the Source Reader, do not call any of the following methods on the media source:</p><ul> <li> <strong><see cref=\"M:SharpDX.MediaFoundation.MediaSource.Pause\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.MediaFoundation.MediaSource.Start(SharpDX.MediaFoundation.PresentationDescriptor,System.Nullable{System.Guid},System.Nullable{SharpDX.Win32.Variant})\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.MediaFoundation.MediaSource.Stop\"/></strong> </li> <li>All <strong><see cref=\"T:SharpDX.MediaFoundation.MediaEventGenerator\"/></strong> methods</li> </ul><p>This function is available on Windows?Vista if Platform Update Supplement for Windows?Vista is installed.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCreateSourceReaderFromMediaSource']/*\"/>\t\n            <msdn-id>dd388108</msdn-id>\t\n            <unmanaged>HRESULT MFCreateSourceReaderFromMediaSource([In] IMFMediaSource* pMediaSource,[In, Optional] IMFAttributes* pAttributes,[Out, Fast] IMFSourceReader** ppSourceReader)</unmanaged>\t\n            <unmanaged-short>MFCreateSourceReaderFromMediaSource</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CreateSinkWriterFromMediaSink(SharpDX.MediaFoundation.MediaSink,SharpDX.MediaFoundation.MediaAttributes,SharpDX.MediaFoundation.SinkWriter@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Creates the sink writer from a media sink.</p>\t\n            </summary>\t\n            <param name=\"mediaSinkRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaSink\"/></strong> interface of a media sink. </p> </dd></param>\t\n            <param name=\"attributesRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaAttributes\"/></strong> interface. You can use this parameter to configure the sink writer. For more information, see Sink Writer Attributes. This parameter can be <strong><c>null</c></strong>. </p> </dd></param>\t\n            <param name=\"sinkWriterOut\"><dd> <p>Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.SinkWriter\"/></strong> interface. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>If this function succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>Call <strong>CoInitialize(Ex)</strong> and <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong> before calling this function.</p><p>When you are done using the media sink, call the media sink's <strong><see cref=\"M:SharpDX.MediaFoundation.MediaSink.Shutdown\"/></strong> method. (The sink writer does not shut down the media sink.) Release the sink writer before calling <strong>Shutdown</strong> on the media sink.</p><p>This function is available on Windows?Vista if Platform Update Supplement for Windows?Vista is installed.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCreateSinkWriterFromMediaSink']/*\"/>\t\n            <msdn-id>dd388103</msdn-id>\t\n            <unmanaged>HRESULT MFCreateSinkWriterFromMediaSink([In] IMFMediaSink* pMediaSink,[In, Optional] IMFAttributes* pAttributes,[Out] IMFSinkWriter** ppSinkWriter)</unmanaged>\t\n            <unmanaged-short>MFCreateSinkWriterFromMediaSink</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CreateSourceReaderFromByteStream(System.IntPtr,SharpDX.MediaFoundation.MediaAttributes,SharpDX.MediaFoundation.SourceReader)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Creates the source reader from a byte stream.</p>\t\n            </summary>\t\n            <param name=\"byteStreamRef\"><dd> <p>A reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.IByteStream\"/></strong> interface of a byte stream. This byte stream will provide the source data for the source reader.</p> </dd></param>\t\n            <param name=\"attributesRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaAttributes\"/></strong> interface. You can use this parameter to configure the source reader. For more information, see Source Reader Attributes. This parameter can be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"sourceReaderOut\"><dd> <p>Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.SourceReader\"/></strong> interface. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>If this function succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>Call <strong>CoInitialize(Ex)</strong> and <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong> before calling this function.</p><p> Internally, the source reader calls the <strong><see cref=\"M:SharpDX.MediaFoundation.SourceResolver.CreateObjectFromByteStream_(System.IntPtr,System.String,System.Int32,SharpDX.ComObject,SharpDX.MediaFoundation.ObjectType@,SharpDX.ComObject@)\"/></strong> method to create a media source from the byte stream. Therefore, a byte-stream handler must be registered for the byte stream. For more information about byte-stream handlers, see Scheme Handlers and Byte-Stream Handlers. </p><p>This function is available on Windows?Vista if Platform Update Supplement for Windows?Vista is installed.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCreateSourceReaderFromByteStream']/*\"/>\t\n            <msdn-id>dd388106</msdn-id>\t\n            <unmanaged>HRESULT MFCreateSourceReaderFromByteStream([In] IMFByteStream* pByteStream,[In, Optional] IMFAttributes* pAttributes,[Out, Fast] IMFSourceReader** ppSourceReader)</unmanaged>\t\n            <unmanaged-short>MFCreateSourceReaderFromByteStream</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CreateASFProfile(SharpDX.MediaFoundation.ASFProfile@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Manages an Advanced Systems Format (ASF) profile. A profile is a collection of information that describes the configuration of streams that will be included in an ASF file. Information about the relationships between streams is also included in the profile.</p><p>An <strong><see cref=\"T:SharpDX.MediaFoundation.ASFProfile\"/></strong> interface exists for every ASF profile object. To create an ASF profile object, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateASFProfile(SharpDX.MediaFoundation.ASFProfile@)\"/></strong> or <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateASFProfileFromPresentationDescriptor(SharpDX.MediaFoundation.PresentationDescriptor,SharpDX.MediaFoundation.ASFProfile@)\"/></strong>.</p>\t\n            </summary>\t\n            <param name=\"iProfileOut\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCreateASFProfile']/*\"/>\t\n            <msdn-id>ms705658</msdn-id>\t\n            <unmanaged>HRESULT MFCreateASFProfile([In] IMFASFProfile** ppIProfile)</unmanaged>\t\n            <unmanaged-short>MFCreateASFProfile</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CreateASFStreamingMediaSinkActivate(SharpDX.MediaFoundation.Activate,SharpDX.MediaFoundation.ASFContentInfo,SharpDX.MediaFoundation.Activate@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Creates an activation object for the ASF streaming sink.</p><p>The  ASF streaming sink enables  an application to write streaming Advanced Systems Format (ASF)  packets to an HTTP byte stream. The activation object can be used to create the ASF streaming sink in another process.</p>\t\n            </summary>\t\n            <param name=\"byteStreamActivateRef\"><dd> <p>A reference to the  <strong><see cref=\"T:SharpDX.MediaFoundation.Activate\"/></strong> interface of an activation object. The caller  implements this interface.  The <strong><see cref=\"M:SharpDX.MediaFoundation.Activate.ActivateObject(System.Guid,System.IntPtr@)\"/></strong> method of the activation object must create a byte-stream object. The byte stream exposes the <strong><see cref=\"T:SharpDX.MediaFoundation.IByteStream\"/></strong> interface. The ASF streaming sink will write data to this byte stream.</p> </dd></param>\t\n            <param name=\"contentInfoRef\"><dd> <p>A reference to an ASF ContentInfo Object that contains the properties that describe the ASF content. These  settings can contain  stream settings, encoding properties, and metadata. For more information about these properties, see Setting Properties in the ContentInfo Object.</p> </dd></param>\t\n            <param name=\"iActivateOut\"><dd> <p>Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.Activate\"/></strong> interface of the activation object that is used to create the ASF streaming-media sink. To create the media sink, the application must call <strong><see cref=\"M:SharpDX.MediaFoundation.Activate.ActivateObject(System.Guid,System.IntPtr@)\"/></strong> by using the received reference. The <strong>ActivateObject</strong> method also calls   <strong>IMFActivate::Activate</strong> on the byte stream activate object specified by  <em>pByteStreamActivate</em>, to create it so that the media sink can write streamed content in the byte stream. The caller must release the <strong><see cref=\"T:SharpDX.MediaFoundation.Activate\"/></strong> interface reference of the media sink activation object received in <em>ppIActivate</em>.</p> </dd></param>\t\n            <returns><p>If this function succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>Starting in Windows?7, Media Foundation provides an ASF streaming  sink that writes the content in  a live streaming scenario. This function should be used in secure transcode scenarios where this  media sink needs to be created and configured in the remote\t\n            process. Like the ASF file sink, the new media sink performs ASF related tasks such as writing the ASF header, generating data packets (muxing). The content is written to a caller-implemented byte stream such as an HTTP byte stream.\t\n            The caller must also provide an activation object that media sink can use to create the byte stream remotely.  </p><p>In addition, it performs transcryption for streaming protected content. It hosts the Windows Media Digital Rights Management (DRM) for Network Devices Output Trust Authority (OTA) that handles the license request and response. For more information, see <strong><see cref=\"T:SharpDX.MediaFoundation.DRMNetHelper\"/></strong> interface.</p><p>The new media sink does not perform any time adjustments.  If the clock seeks, the timestamps are not changed.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCreateASFStreamingMediaSinkActivate']/*\"/>\t\n            <msdn-id>dd388090</msdn-id>\t\n            <unmanaged>HRESULT MFCreateASFStreamingMediaSinkActivate([In] IMFActivate* pByteStreamActivate,[In] IMFASFContentInfo* pContentInfo,[In] IMFActivate** ppIActivate)</unmanaged>\t\n            <unmanaged-short>MFCreateASFStreamingMediaSinkActivate</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CreateASFSplitter(SharpDX.MediaFoundation.ASFSplitter@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Initializes Microsoft Media Foundation.</p>\t\n            </summary>\t\n            <param name=\"iSplitterOut\"><dd> <p>Version number. Use the value <strong><see cref=\"F:SharpDX.MediaFoundation.MediaFactory.Version\"/></strong>, defined in mfapi.h.</p> </dd></param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.BadStartupVersion\"/></strong></dt> </dl> </td><td> <p> The <em>Version</em> parameter requires a newer version of Media Foundation than the version that is running.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.DisabledInSafemode\"/></strong></dt> </dl> </td><td> <p> The Media Foundation platform is disabled because the system was started in \"Safe Mode\" (fail-safe boot). </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> An application must call this function before using Media Foundation. Before your application quits, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> once for every previous call to <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong>. </p><p> Do not call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong> or <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> from work queue threads. For more information about work queues, see Work Queues. </p><p>This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCreateASFSplitter']/*\"/>\t\n            <msdn-id>ms702238</msdn-id>\t\n            <unmanaged>HRESULT MFCreateASFSplitter([In] IMFASFSplitter** ppISplitter)</unmanaged>\t\n            <unmanaged-short>MFCreateASFSplitter</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CreateASFMediaSinkActivate(System.String,SharpDX.MediaFoundation.ASFContentInfo,SharpDX.MediaFoundation.Activate@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Initializes Microsoft Media Foundation.</p>\t\n            </summary>\t\n            <param name=\"wszFileNameRef\"><dd> <p>Version number. Use the value <strong><see cref=\"F:SharpDX.MediaFoundation.MediaFactory.Version\"/></strong>, defined in mfapi.h.</p> </dd></param>\t\n            <param name=\"contentInfoRef\"><dd> <p>This parameter is optional when using C++ but required in C. The value must be one of the following flags: </p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td> <dl> <dt>MFSTARTUP_NOSOCKET</dt> </dl> </td><td> <p> Do not initialize the sockets library. </p> </td></tr> <tr><td> <dl> <dt>MFSTARTUP_LITE</dt> </dl> </td><td> <p> Equivalent to MFSTARTUP_NOSOCKET. </p> </td></tr> <tr><td> <dl> <dt>MFSTARTUP_FULL</dt> </dl> </td><td> <p> Initialize the entire Media Foundation platform. This is the default value when <em>dwFlags</em> is not specified. </p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <param name=\"iActivateOut\">No documentation.</param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.BadStartupVersion\"/></strong></dt> </dl> </td><td> <p> The <em>Version</em> parameter requires a newer version of Media Foundation than the version that is running.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.DisabledInSafemode\"/></strong></dt> </dl> </td><td> <p> The Media Foundation platform is disabled because the system was started in \"Safe Mode\" (fail-safe boot). </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> An application must call this function before using Media Foundation. Before your application quits, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> once for every previous call to <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong>. </p><p> Do not call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong> or <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> from work queue threads. For more information about work queues, see Work Queues. </p><p>This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCreateASFMediaSinkActivate']/*\"/>\t\n            <msdn-id>ms702238</msdn-id>\t\n            <unmanaged>HRESULT MFCreateASFMediaSinkActivate([In] const wchar_t* pwszFileName,[In] IMFASFContentInfo* pContentInfo,[In] IMFActivate** ppIActivate)</unmanaged>\t\n            <unmanaged-short>MFCreateASFMediaSinkActivate</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CreateASFStreamingMediaSink(System.IntPtr,SharpDX.MediaFoundation.MediaSink@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Creates an activation object for the ASF streaming sink.</p><p>The  ASF streaming sink enables  an application to write streaming Advanced Systems Format (ASF)  packets to an HTTP byte stream. </p>\t\n            </summary>\t\n            <param name=\"iByteStreamRef\"><dd> <p> A reference to a byte stream object in which the ASF media sink writes the streamed content.</p> </dd></param>\t\n            <param name=\"iMediaSinkOut\"><dd> <p>Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaSink\"/></strong> interface of the ASF streaming-media sink object. To create the media sink, the application must call <strong><see cref=\"M:SharpDX.MediaFoundation.Activate.ActivateObject(System.Guid,System.IntPtr@)\"/></strong> on the received reference. The caller must release the interface reference.</p> </dd></param>\t\n            <returns><p>If this function succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>To create the ASF streaming sink in another process, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateASFStreamingMediaSinkActivate(SharpDX.MediaFoundation.Activate,SharpDX.MediaFoundation.ASFContentInfo,SharpDX.MediaFoundation.Activate@)\"/></strong>. </p><p>An application can get a reference to the ASF ContentInfo Object by calling <strong>IUnknown::QueryInterface</strong> on the media sink object received in the <em>ppIMediaSink</em> parameter. The ContentInfo object is used to set the encoder configuration settings, provide stream properties supplied by an ASF profile, and add metadata information. These configuration settings populate the various ASF header objects of the encoded ASF file. For more information, see  \t\n            Setting Properties in the ContentInfo Object.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCreateASFStreamingMediaSink']/*\"/>\t\n            <msdn-id>dd388087</msdn-id>\t\n            <unmanaged>HRESULT MFCreateASFStreamingMediaSink([In] IMFByteStream* pIByteStream,[In] IMFMediaSink** ppIMediaSink)</unmanaged>\t\n            <unmanaged-short>MFCreateASFStreamingMediaSink</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CreateASFMultiplexer(SharpDX.MediaFoundation.ASFMultiplexer@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Initializes Microsoft Media Foundation.</p>\t\n            </summary>\t\n            <param name=\"iMultiplexerOut\"><dd> <p>Version number. Use the value <strong><see cref=\"F:SharpDX.MediaFoundation.MediaFactory.Version\"/></strong>, defined in mfapi.h.</p> </dd></param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.BadStartupVersion\"/></strong></dt> </dl> </td><td> <p> The <em>Version</em> parameter requires a newer version of Media Foundation than the version that is running.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.DisabledInSafemode\"/></strong></dt> </dl> </td><td> <p> The Media Foundation platform is disabled because the system was started in \"Safe Mode\" (fail-safe boot). </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> An application must call this function before using Media Foundation. Before your application quits, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> once for every previous call to <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong>. </p><p> Do not call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong> or <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> from work queue threads. For more information about work queues, see Work Queues. </p><p>This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCreateASFMultiplexer']/*\"/>\t\n            <msdn-id>ms702238</msdn-id>\t\n            <unmanaged>HRESULT MFCreateASFMultiplexer([In] IMFASFMultiplexer** ppIMultiplexer)</unmanaged>\t\n            <unmanaged-short>MFCreateASFMultiplexer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CreatePresentationDescriptorFromASFProfile(SharpDX.MediaFoundation.ASFProfile,SharpDX.MediaFoundation.PresentationDescriptor@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Initializes Microsoft Media Foundation.</p>\t\n            </summary>\t\n            <param name=\"iProfileRef\"><dd> <p>Version number. Use the value <strong><see cref=\"F:SharpDX.MediaFoundation.MediaFactory.Version\"/></strong>, defined in mfapi.h.</p> </dd></param>\t\n            <param name=\"iPDOut\"><dd> <p>This parameter is optional when using C++ but required in C. The value must be one of the following flags: </p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td> <dl> <dt>MFSTARTUP_NOSOCKET</dt> </dl> </td><td> <p> Do not initialize the sockets library. </p> </td></tr> <tr><td> <dl> <dt>MFSTARTUP_LITE</dt> </dl> </td><td> <p> Equivalent to MFSTARTUP_NOSOCKET. </p> </td></tr> <tr><td> <dl> <dt>MFSTARTUP_FULL</dt> </dl> </td><td> <p> Initialize the entire Media Foundation platform. This is the default value when <em>dwFlags</em> is not specified. </p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.BadStartupVersion\"/></strong></dt> </dl> </td><td> <p> The <em>Version</em> parameter requires a newer version of Media Foundation than the version that is running.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.DisabledInSafemode\"/></strong></dt> </dl> </td><td> <p> The Media Foundation platform is disabled because the system was started in \"Safe Mode\" (fail-safe boot). </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> An application must call this function before using Media Foundation. Before your application quits, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> once for every previous call to <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong>. </p><p> Do not call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong> or <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> from work queue threads. For more information about work queues, see Work Queues. </p><p>This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCreatePresentationDescriptorFromASFProfile']/*\"/>\t\n            <msdn-id>ms702238</msdn-id>\t\n            <unmanaged>HRESULT MFCreatePresentationDescriptorFromASFProfile([In] IMFASFProfile* pIProfile,[In] IMFPresentationDescriptor** ppIPD)</unmanaged>\t\n            <unmanaged-short>MFCreatePresentationDescriptorFromASFProfile</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CreateASFProfileFromPresentationDescriptor(SharpDX.MediaFoundation.PresentationDescriptor,SharpDX.MediaFoundation.ASFProfile@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Creates an activation object for the ASF streaming sink.</p><p>The  ASF streaming sink enables  an application to write streaming Advanced Systems Format (ASF)  packets to an HTTP byte stream. </p>\t\n            </summary>\t\n            <param name=\"iPDRef\"><dd> <p> A reference to a byte stream object in which the ASF media sink writes the streamed content.</p> </dd></param>\t\n            <param name=\"iProfileOut\"><dd> <p>Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaSink\"/></strong> interface of the ASF streaming-media sink object. To create the media sink, the application must call <strong><see cref=\"M:SharpDX.MediaFoundation.Activate.ActivateObject(System.Guid,System.IntPtr@)\"/></strong> on the received reference. The caller must release the interface reference.</p> </dd></param>\t\n            <returns><p>If this function succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>To create the ASF streaming sink in another process, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateASFStreamingMediaSinkActivate(SharpDX.MediaFoundation.Activate,SharpDX.MediaFoundation.ASFContentInfo,SharpDX.MediaFoundation.Activate@)\"/></strong>. </p><p>An application can get a reference to the ASF ContentInfo Object by calling <strong>IUnknown::QueryInterface</strong> on the media sink object received in the <em>ppIMediaSink</em> parameter. The ContentInfo object is used to set the encoder configuration settings, provide stream properties supplied by an ASF profile, and add metadata information. These configuration settings populate the various ASF header objects of the encoded ASF file. For more information, see  \t\n            Setting Properties in the ContentInfo Object.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCreateASFProfileFromPresentationDescriptor']/*\"/>\t\n            <msdn-id>dd388087</msdn-id>\t\n            <unmanaged>HRESULT MFCreateASFProfileFromPresentationDescriptor([In] IMFPresentationDescriptor* pIPD,[In] IMFASFProfile** ppIProfile)</unmanaged>\t\n            <unmanaged-short>MFCreateASFProfileFromPresentationDescriptor</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CreateWMVEncoderActivate(SharpDX.MediaFoundation.MediaType,SharpDX.ComObject,SharpDX.MediaFoundation.Activate@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Initializes Microsoft Media Foundation.</p>\t\n            </summary>\t\n            <param name=\"mediaTypeRef\"><dd> <p>Version number. Use the value <strong><see cref=\"F:SharpDX.MediaFoundation.MediaFactory.Version\"/></strong>, defined in mfapi.h.</p> </dd></param>\t\n            <param name=\"encodingConfigurationPropertiesRef\"><dd> <p>This parameter is optional when using C++ but required in C. The value must be one of the following flags: </p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td> <dl> <dt>MFSTARTUP_NOSOCKET</dt> </dl> </td><td> <p> Do not initialize the sockets library. </p> </td></tr> <tr><td> <dl> <dt>MFSTARTUP_LITE</dt> </dl> </td><td> <p> Equivalent to MFSTARTUP_NOSOCKET. </p> </td></tr> <tr><td> <dl> <dt>MFSTARTUP_FULL</dt> </dl> </td><td> <p> Initialize the entire Media Foundation platform. This is the default value when <em>dwFlags</em> is not specified. </p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <param name=\"activateOut\">No documentation.</param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.BadStartupVersion\"/></strong></dt> </dl> </td><td> <p> The <em>Version</em> parameter requires a newer version of Media Foundation than the version that is running.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.DisabledInSafemode\"/></strong></dt> </dl> </td><td> <p> The Media Foundation platform is disabled because the system was started in \"Safe Mode\" (fail-safe boot). </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> An application must call this function before using Media Foundation. Before your application quits, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> once for every previous call to <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong>. </p><p> Do not call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong> or <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> from work queue threads. For more information about work queues, see Work Queues. </p><p>This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCreateWMVEncoderActivate']/*\"/>\t\n            <msdn-id>ms702238</msdn-id>\t\n            <unmanaged>HRESULT MFCreateWMVEncoderActivate([In] IMFMediaType* pMediaType,[In] IPropertyStore* pEncodingConfigurationProperties,[In] IMFActivate** ppActivate)</unmanaged>\t\n            <unmanaged-short>MFCreateWMVEncoderActivate</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CreateASFIndexerByteStream(System.IntPtr,System.Int64,SharpDX.MediaFoundation.IByteStream@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Initializes Microsoft Media Foundation.</p>\t\n            </summary>\t\n            <param name=\"iContentByteStreamRef\"><dd> <p>Version number. Use the value <strong><see cref=\"F:SharpDX.MediaFoundation.MediaFactory.Version\"/></strong>, defined in mfapi.h.</p> </dd></param>\t\n            <param name=\"cbIndexStartOffset\"><dd> <p>This parameter is optional when using C++ but required in C. The value must be one of the following flags: </p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td> <dl> <dt>MFSTARTUP_NOSOCKET</dt> </dl> </td><td> <p> Do not initialize the sockets library. </p> </td></tr> <tr><td> <dl> <dt>MFSTARTUP_LITE</dt> </dl> </td><td> <p> Equivalent to MFSTARTUP_NOSOCKET. </p> </td></tr> <tr><td> <dl> <dt>MFSTARTUP_FULL</dt> </dl> </td><td> <p> Initialize the entire Media Foundation platform. This is the default value when <em>dwFlags</em> is not specified. </p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <param name=\"iIndexByteStreamRef\">No documentation.</param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.BadStartupVersion\"/></strong></dt> </dl> </td><td> <p> The <em>Version</em> parameter requires a newer version of Media Foundation than the version that is running.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.DisabledInSafemode\"/></strong></dt> </dl> </td><td> <p> The Media Foundation platform is disabled because the system was started in \"Safe Mode\" (fail-safe boot). </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> An application must call this function before using Media Foundation. Before your application quits, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> once for every previous call to <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong>. </p><p> Do not call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong> or <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> from work queue threads. For more information about work queues, see Work Queues. </p><p>This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCreateASFIndexerByteStream']/*\"/>\t\n            <msdn-id>ms702238</msdn-id>\t\n            <unmanaged>HRESULT MFCreateASFIndexerByteStream([In] IMFByteStream* pIContentByteStream,[In] unsigned longlong cbIndexStartOffset,[In] IMFByteStream** pIIndexByteStream)</unmanaged>\t\n            <unmanaged-short>MFCreateASFIndexerByteStream</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CreateASFStreamSelector(SharpDX.MediaFoundation.ASFProfile,SharpDX.MediaFoundation.ASFStreamSelector@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Initializes Microsoft Media Foundation.</p>\t\n            </summary>\t\n            <param name=\"iASFProfileRef\"><dd> <p>Version number. Use the value <strong><see cref=\"F:SharpDX.MediaFoundation.MediaFactory.Version\"/></strong>, defined in mfapi.h.</p> </dd></param>\t\n            <param name=\"selectorOut\"><dd> <p>This parameter is optional when using C++ but required in C. The value must be one of the following flags: </p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td> <dl> <dt>MFSTARTUP_NOSOCKET</dt> </dl> </td><td> <p> Do not initialize the sockets library. </p> </td></tr> <tr><td> <dl> <dt>MFSTARTUP_LITE</dt> </dl> </td><td> <p> Equivalent to MFSTARTUP_NOSOCKET. </p> </td></tr> <tr><td> <dl> <dt>MFSTARTUP_FULL</dt> </dl> </td><td> <p> Initialize the entire Media Foundation platform. This is the default value when <em>dwFlags</em> is not specified. </p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.BadStartupVersion\"/></strong></dt> </dl> </td><td> <p> The <em>Version</em> parameter requires a newer version of Media Foundation than the version that is running.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.DisabledInSafemode\"/></strong></dt> </dl> </td><td> <p> The Media Foundation platform is disabled because the system was started in \"Safe Mode\" (fail-safe boot). </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> An application must call this function before using Media Foundation. Before your application quits, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> once for every previous call to <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong>. </p><p> Do not call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong> or <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> from work queue threads. For more information about work queues, see Work Queues. </p><p>This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCreateASFStreamSelector']/*\"/>\t\n            <msdn-id>ms702238</msdn-id>\t\n            <unmanaged>HRESULT MFCreateASFStreamSelector([In] IMFASFProfile* pIASFProfile,[In] IMFASFStreamSelector** ppSelector)</unmanaged>\t\n            <unmanaged-short>MFCreateASFStreamSelector</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CreateWMAEncoderActivate(SharpDX.MediaFoundation.MediaType,SharpDX.ComObject,SharpDX.MediaFoundation.Activate@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Creates an activation object that can be used to create a Windows Media Audio (WMA) encoder. </p>\t\n            </summary>\t\n            <param name=\"mediaTypeRef\"><dd> <p> A reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaType\"/></strong> interface. This parameter specifies the encoded output format.</p> </dd></param>\t\n            <param name=\"encodingConfigurationPropertiesRef\"><dd> <p> A reference to the <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interface of a property store that contains encoding parameters. Encoding parameters for the WMV encoder are defined in the header file wmcodecdsp.h. If you have an ASF ContentInfo object that contains an ASF profile object with all the streams for the output file, you can get the property store by calling <strong><see cref=\"M:SharpDX.MediaFoundation.ASFContentInfo.GetEncodingConfigurationPropertyStore(System.Int16,SharpDX.ComObject@)\"/></strong>. </p> </dd></param>\t\n            <param name=\"activateOut\"><dd> <p> Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.Activate\"/></strong> interface. Use this interface to create the encoder. The caller must release the interface. </p> </dd></param>\t\n            <returns><p>If this function succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCreateWMAEncoderActivate']/*\"/>\t\n            <msdn-id>ms702208</msdn-id>\t\n            <unmanaged>HRESULT MFCreateWMAEncoderActivate([In] IMFMediaType* pMediaType,[In] IPropertyStore* pEncodingConfigurationProperties,[In] IMFActivate** ppActivate)</unmanaged>\t\n            <unmanaged-short>MFCreateWMAEncoderActivate</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CreateASFIndexer(SharpDX.MediaFoundation.ASFIndexer@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Initializes Microsoft Media Foundation.</p>\t\n            </summary>\t\n            <param name=\"iIndexerOut\"><dd> <p>Version number. Use the value <strong><see cref=\"F:SharpDX.MediaFoundation.MediaFactory.Version\"/></strong>, defined in mfapi.h.</p> </dd></param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.BadStartupVersion\"/></strong></dt> </dl> </td><td> <p> The <em>Version</em> parameter requires a newer version of Media Foundation than the version that is running.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.DisabledInSafemode\"/></strong></dt> </dl> </td><td> <p> The Media Foundation platform is disabled because the system was started in \"Safe Mode\" (fail-safe boot). </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> An application must call this function before using Media Foundation. Before your application quits, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> once for every previous call to <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong>. </p><p> Do not call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong> or <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> from work queue threads. For more information about work queues, see Work Queues. </p><p>This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCreateASFIndexer']/*\"/>\t\n            <msdn-id>ms702238</msdn-id>\t\n            <unmanaged>HRESULT MFCreateASFIndexer([In] IMFASFIndexer** ppIIndexer)</unmanaged>\t\n            <unmanaged-short>MFCreateASFIndexer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CreateASFContentInfo(SharpDX.MediaFoundation.ASFContentInfo@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Initializes Microsoft Media Foundation.</p>\t\n            </summary>\t\n            <param name=\"iContentInfoOut\"><dd> <p>Version number. Use the value <strong><see cref=\"F:SharpDX.MediaFoundation.MediaFactory.Version\"/></strong>, defined in mfapi.h.</p> </dd></param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.BadStartupVersion\"/></strong></dt> </dl> </td><td> <p> The <em>Version</em> parameter requires a newer version of Media Foundation than the version that is running.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.DisabledInSafemode\"/></strong></dt> </dl> </td><td> <p> The Media Foundation platform is disabled because the system was started in \"Safe Mode\" (fail-safe boot). </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> An application must call this function before using Media Foundation. Before your application quits, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> once for every previous call to <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong>. </p><p> Do not call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong> or <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> from work queue threads. For more information about work queues, see Work Queues. </p><p>This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCreateASFContentInfo']/*\"/>\t\n            <msdn-id>ms702238</msdn-id>\t\n            <unmanaged>HRESULT MFCreateASFContentInfo([In] IMFASFContentInfo** ppIContentInfo)</unmanaged>\t\n            <unmanaged-short>MFCreateASFContentInfo</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CreateASFMediaSink(System.IntPtr,SharpDX.MediaFoundation.MediaSink@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Creates the ASF media sink.</p>\t\n            </summary>\t\n            <param name=\"iByteStreamRef\"><dd> <p>Pointer to a byte stream that will be used to write the ASF stream.</p> </dd></param>\t\n            <param name=\"iMediaSinkOut\"><dd> <p>Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaSink\"/></strong> interface. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The function succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCreateASFMediaSink']/*\"/>\t\n            <msdn-id>ms703955</msdn-id>\t\n            <unmanaged>HRESULT MFCreateASFMediaSink([In] IMFByteStream* pIByteStream,[In] IMFMediaSink** ppIMediaSink)</unmanaged>\t\n            <unmanaged-short>MFCreateASFMediaSink</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Initializes Microsoft Media Foundation.</p>\t\n            </summary>\t\n            <param name=\"version\"><dd> <p>Version number. Use the value <strong><see cref=\"F:SharpDX.MediaFoundation.MediaFactory.Version\"/></strong>, defined in mfapi.h.</p> </dd></param>\t\n            <param name=\"dwFlags\"><dd> <p>This parameter is optional when using C++ but required in C. The value must be one of the following flags: </p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td> <dl> <dt>MFSTARTUP_NOSOCKET</dt> </dl> </td><td> <p> Do not initialize the sockets library. </p> </td></tr> <tr><td> <dl> <dt>MFSTARTUP_LITE</dt> </dl> </td><td> <p> Equivalent to MFSTARTUP_NOSOCKET. </p> </td></tr> <tr><td> <dl> <dt>MFSTARTUP_FULL</dt> </dl> </td><td> <p> Initialize the entire Media Foundation platform. This is the default value when <em>dwFlags</em> is not specified. </p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.BadStartupVersion\"/></strong></dt> </dl> </td><td> <p> The <em>Version</em> parameter requires a newer version of Media Foundation than the version that is running.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.DisabledInSafemode\"/></strong></dt> </dl> </td><td> <p> The Media Foundation platform is disabled because the system was started in \"Safe Mode\" (fail-safe boot). </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> An application must call this function before using Media Foundation. Before your application quits, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> once for every previous call to <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong>. </p><p> Do not call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong> or <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> from work queue threads. For more information about work queues, see Work Queues. </p><p>This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFStartup']/*\"/>\t\n            <msdn-id>ms702238</msdn-id>\t\n            <unmanaged>HRESULT MFStartup([In] unsigned int Version,[In] unsigned int dwFlags)</unmanaged>\t\n            <unmanaged-short>MFStartup</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CreateAudioMediaType(SharpDX.Multimedia.WaveFormat@,SharpDX.MediaFoundation.AudioMediaType@)\">\n            <summary>\t\n            <p>[This API is not supported and may be altered or unavailable in the future.]</p><p><strong>Applies to: </strong>desktop apps only</p><p>Creates an audio media type from a <strong><see cref=\"T:SharpDX.Multimedia.WaveFormat\"/></strong> structure.</p>\t\n            </summary>\t\n            <param name=\"audioFormatRef\"><dd> <p>Pointer to a <strong><see cref=\"T:SharpDX.Multimedia.WaveFormat\"/></strong> structure that describes the audio format.</p> </dd></param>\t\n            <param name=\"iAudioMediaTypeOut\"><dd> <p>Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.AudioMediaType\"/></strong> interface. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>If this function succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p> The <strong><see cref=\"T:SharpDX.MediaFoundation.AudioMediaType\"/></strong> interface is deprecrated, so applications should avoid using this function. To create a media type from a <strong><see cref=\"T:SharpDX.Multimedia.WaveFormat\"/></strong> structure, do the following: </p><ol> <li> Call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateMediaType(SharpDX.MediaFoundation.MediaType)\"/></strong>. This function returns a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaType\"/></strong> interface. The returned media type object is initially empty. </li> <li> Call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.InitMediaTypeFromWaveFormatEx(SharpDX.MediaFoundation.MediaType,SharpDX.Multimedia.WaveFormat[],System.Int32)\"/></strong> to populate the media type from the <strong><see cref=\"T:SharpDX.Multimedia.WaveFormat\"/></strong> structure. </li> </ol><p> Alternatively, you can call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateMediaType(SharpDX.MediaFoundation.MediaType)\"/></strong> and then set the media type attributes directly. </p><p>This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCreateAudioMediaType']/*\"/>\t\n            <msdn-id>aa473812</msdn-id>\t\n            <unmanaged>HRESULT MFCreateAudioMediaType([In] const WAVEFORMATEX* pAudioFormat,[Out] IMFAudioMediaType** ppIAudioMediaType)</unmanaged>\t\n            <unmanaged-short>MFCreateAudioMediaType</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.RemovePeriodicCallback(System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Cancels a callback function that was set by the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.AddPeriodicCallback(SharpDX.FunctionCallback,SharpDX.ComObject,System.Int32@)\"/></strong> function.</p>\t\n            </summary>\t\n            <param name=\"dwKey\">No documentation.</param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The function succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>The callback is dispatched on another thread, and this function does not attempt to synchronize with the callback thread. Therefore, it is possible for the callback to be invoked after this function returns.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFRemovePeriodicCallback']/*\"/>\t\n            <msdn-id>ms704741</msdn-id>\t\n            <unmanaged>HRESULT MFRemovePeriodicCallback([In] unsigned int dwKey)</unmanaged>\t\n            <unmanaged-short>MFRemovePeriodicCallback</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.FrameRateToAverageTimePerFrame(System.Int32,System.Int32,System.Int64@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Converts a video frame rate into a frame duration.</p>\t\n            </summary>\t\n            <param name=\"unNumerator\"><dd> <p>The numerator of the frame rate. </p> </dd></param>\t\n            <param name=\"unDenominator\"><dd> <p> The denominator of the frame rate. </p> </dd></param>\t\n            <param name=\"unAverageTimePerFrameRef\"><dd> <p> Receives the average duration of a video frame, in 100-nanosecond units. </p> </dd></param>\t\n            <returns><p>If this function succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>This function is useful for calculating time stamps on a sample, given the frame rate.</p><p>Also, average time per frame is used in the older <strong><see cref=\"!:SharpDX.Win32.Unsupported.VideoInfoHeader\"/></strong> and <strong><see cref=\"!:SharpDX.MediaFoundation.VideoInformationHeader2\"/></strong> format structures. This function provides a standard conversion so that all components in the pipeline can use consistent values, if they need to translate between the older format structures and the media type attributes used in Media Foundation.</p><p> For certain common frame rates, the function gets the frame duration from a look-up table:</p><table> <tr><th>Frames per second (floating point)</th><th>Frames per second (fractional)</th><th>Average time per frame</th></tr> <tr><td>59.94</td><td>60000/1001</td><td>166833</td></tr> <tr><td>29.97</td><td>30000/1001</td><td>333667</td></tr> <tr><td>23.976</td><td>24000/1001</td><td>417188</td></tr> <tr><td>60</td><td>60/1</td><td>166667</td></tr> <tr><td>30</td><td>30/1</td><td>333333</td></tr> <tr><td>50</td><td>50/1</td><td>200000</td></tr> <tr><td>25</td><td>25/1</td><td>400000</td></tr> <tr><td>24</td><td>24/1</td><td>416667</td></tr> </table><p>?</p><p> Most video content uses one of the frame rates listed here. For other frame rates, the function calculates the duration.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFFrameRateToAverageTimePerFrame']/*\"/>\t\n            <msdn-id>aa370467</msdn-id>\t\n            <unmanaged>HRESULT MFFrameRateToAverageTimePerFrame([In] unsigned int unNumerator,[In] unsigned int unDenominator,[Out] unsigned longlong* punAverageTimePerFrame)</unmanaged>\t\n            <unmanaged-short>MFFrameRateToAverageTimePerFrame</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CreateVideoMediaTypeFromBitMapInfoHeader(SharpDX.Win32.BitmapInfoHeader@,System.Int32,System.Int32,SharpDX.MediaFoundation.VideoInterlaceMode,System.Int64,System.Int64,System.Int64,System.Int32,SharpDX.MediaFoundation.VideoMediaType@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> This function is not implemented.</p>\t\n            </summary>\t\n            <param name=\"bmihBitMapInfoHeaderRef\"><dd> <p>Reserved.</p> </dd></param>\t\n            <param name=\"dwPixelAspectRatioX\"><dd> <p>Reserved.</p> </dd></param>\t\n            <param name=\"dwPixelAspectRatioY\"><dd> <p>Reserved.</p> </dd></param>\t\n            <param name=\"interlaceMode\"><dd> <p>Reserved.</p> </dd></param>\t\n            <param name=\"videoFlags\"><dd> <p>Reserved.</p> </dd></param>\t\n            <param name=\"qwFramesPerSecondNumerator\"><dd> <p>Reserved.</p> </dd></param>\t\n            <param name=\"qwFramesPerSecondDenominator\"><dd> <p>Reserved.</p> </dd></param>\t\n            <param name=\"dwMaxBitRate\"><dd> <p>Reserved.</p> </dd></param>\t\n            <param name=\"iVideoMediaTypeOut\"><dd> <p>Reserved.</p> </dd></param>\t\n            <returns><p>Returns <strong>E_FAIL</strong>.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??Prior to Windows?7, this function was exported from evr.dll. Starting in Windows?7, this function is exported from mfplat.dll, and evr.dll exports a stub function that calls into mfplat.dll. For more information, see Library Changes in Windows?7.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCreateVideoMediaTypeFromBitMapInfoHeader']/*\"/>\t\n            <msdn-id>aa473801</msdn-id>\t\n            <unmanaged>HRESULT MFCreateVideoMediaTypeFromBitMapInfoHeader([In] const BITMAPINFOHEADER* pbmihBitMapInfoHeader,[In] unsigned int dwPixelAspectRatioX,[In] unsigned int dwPixelAspectRatioY,[In] MFVideoInterlaceMode InterlaceMode,[In] unsigned longlong VideoFlags,[In] unsigned longlong qwFramesPerSecondNumerator,[In] unsigned longlong qwFramesPerSecondDenominator,[In] unsigned int dwMaxBitRate,[Out] IMFVideoMediaType** ppIVideoMediaType)</unmanaged>\t\n            <unmanaged-short>MFCreateVideoMediaTypeFromBitMapInfoHeader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.ConvertFromFP16Array(System.Single[],System.Int16[],System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Initializes Microsoft Media Foundation.</p>\t\n            </summary>\t\n            <param name=\"destRef\"><dd> <p>Version number. Use the value <strong><see cref=\"F:SharpDX.MediaFoundation.MediaFactory.Version\"/></strong>, defined in mfapi.h.</p> </dd></param>\t\n            <param name=\"srcRef\"><dd> <p>This parameter is optional when using C++ but required in C. The value must be one of the following flags: </p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td> <dl> <dt>MFSTARTUP_NOSOCKET</dt> </dl> </td><td> <p> Do not initialize the sockets library. </p> </td></tr> <tr><td> <dl> <dt>MFSTARTUP_LITE</dt> </dl> </td><td> <p> Equivalent to MFSTARTUP_NOSOCKET. </p> </td></tr> <tr><td> <dl> <dt>MFSTARTUP_FULL</dt> </dl> </td><td> <p> Initialize the entire Media Foundation platform. This is the default value when <em>dwFlags</em> is not specified. </p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <param name=\"dwCount\">No documentation.</param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.BadStartupVersion\"/></strong></dt> </dl> </td><td> <p> The <em>Version</em> parameter requires a newer version of Media Foundation than the version that is running.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.DisabledInSafemode\"/></strong></dt> </dl> </td><td> <p> The Media Foundation platform is disabled because the system was started in \"Safe Mode\" (fail-safe boot). </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> An application must call this function before using Media Foundation. Before your application quits, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> once for every previous call to <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong>. </p><p> Do not call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong> or <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> from work queue threads. For more information about work queues, see Work Queues. </p><p>This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFConvertFromFP16Array']/*\"/>\t\n            <msdn-id>ms702238</msdn-id>\t\n            <unmanaged>HRESULT MFConvertFromFP16Array([Out, Buffer] float* pDest,[In, Buffer] const unsigned short* pSrc,[In] unsigned int dwCount)</unmanaged>\t\n            <unmanaged-short>MFConvertFromFP16Array</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CreateWaveFormatExFromMFMediaType(SharpDX.MediaFoundation.MediaType,System.IntPtr@,System.Int32@,System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Converts a Media Foundation audio media type to a <strong><see cref=\"T:SharpDX.Multimedia.WaveFormat\"/></strong> structure.</p>\t\n            </summary>\t\n            <param name=\"mFTypeRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaType\"/></strong> interface of the media type.</p> </dd></param>\t\n            <param name=\"wFOut\"><dd> <p>Receives a reference to the <strong><see cref=\"T:SharpDX.Multimedia.WaveFormat\"/></strong> structure. The caller must release the memory allocated for the structure by calling <strong>CoTaskMemFree</strong>.</p> </dd></param>\t\n            <param name=\"cbSizeRef\"><dd> <p>Receives the size of the <strong><see cref=\"T:SharpDX.Multimedia.WaveFormat\"/></strong> structure.</p> </dd></param>\t\n            <param name=\"flags\"><dd> <p>Contains a flag from the <strong><see cref=\"T:SharpDX.MediaFoundation.WaveFormatExConvertFlags\"/></strong> enumeration.</p> </dd></param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The function succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>If the <strong>wFormatTag</strong> member of the returned structure is <strong><see cref=\"F:SharpDX.Multimedia.WaveFormatEncoding.Extensible\"/></strong>, you can cast the reference to a <strong><see cref=\"T:SharpDX.Multimedia.WaveFormatExtensible\"/></strong> structure.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCreateWaveFormatExFromMFMediaType']/*\"/>\t\n            <msdn-id>ms702177</msdn-id>\t\n            <unmanaged>HRESULT MFCreateWaveFormatExFromMFMediaType([In] IMFMediaType* pMFType,[Out] void** ppWF,[Out, Optional] unsigned int* pcbSize,[In] unsigned int Flags)</unmanaged>\t\n            <unmanaged-short>MFCreateWaveFormatExFromMFMediaType</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.GetUncompressedVideoFormat(SharpDX.MediaFoundation.VideoFormat@)\">\n            <summary>\t\n            <p>[This API is not supported and may be altered or unavailable in the future. Applications should avoid using the <strong><see cref=\"T:SharpDX.MediaFoundation.VideoFormat\"/></strong> structure, and use media type attributes instead. For more information, see Video Media Types.]</p><p><strong>Applies to: </strong>desktop apps only</p><p>Returns the FOURCC or <strong><see cref=\"T:SharpDX.Direct3D9.Format\"/></strong> value for an uncompressed video format.</p>\t\n            </summary>\t\n            <param name=\"videoFormatRef\">No documentation.</param>\t\n            <returns><p>Returns a FOURCC or <strong><see cref=\"T:SharpDX.Direct3D9.Format\"/></strong> value that identifies the video format. If the video format is compressed or not recognized, the return value is <see cref=\"F:SharpDX.Direct3D9.Format.Unknown\"/>.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??Prior to Windows?7, this function was exported from evr.dll. Starting in Windows?7, this function is exported from mfplat.dll, and evr.dll exports a stub function that calls into mfplat.dll. For more information, see Library Changes in Windows?7.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFGetUncompressedVideoFormat']/*\"/>\t\n            <msdn-id>aa473806</msdn-id>\t\n            <unmanaged>unsigned int MFGetUncompressedVideoFormat([In] const MFVIDEOFORMAT* pVideoFormat)</unmanaged>\t\n            <unmanaged-short>MFGetUncompressedVideoFormat</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.BeginUnregisterWorkQueueWithMMCSS(System.Int32,SharpDX.MediaFoundation.AsyncCallback,SharpDX.ComObject)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Initializes Microsoft Media Foundation.</p>\t\n            </summary>\t\n            <param name=\"dwWorkQueueId\"><dd> <p>Version number. Use the value <strong><see cref=\"F:SharpDX.MediaFoundation.MediaFactory.Version\"/></strong>, defined in mfapi.h.</p> </dd></param>\t\n            <param name=\"doneCallbackRef\"><dd> <p>This parameter is optional when using C++ but required in C. The value must be one of the following flags: </p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td> <dl> <dt>MFSTARTUP_NOSOCKET</dt> </dl> </td><td> <p> Do not initialize the sockets library. </p> </td></tr> <tr><td> <dl> <dt>MFSTARTUP_LITE</dt> </dl> </td><td> <p> Equivalent to MFSTARTUP_NOSOCKET. </p> </td></tr> <tr><td> <dl> <dt>MFSTARTUP_FULL</dt> </dl> </td><td> <p> Initialize the entire Media Foundation platform. This is the default value when <em>dwFlags</em> is not specified. </p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <param name=\"doneStateRef\">No documentation.</param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.BadStartupVersion\"/></strong></dt> </dl> </td><td> <p> The <em>Version</em> parameter requires a newer version of Media Foundation than the version that is running.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.DisabledInSafemode\"/></strong></dt> </dl> </td><td> <p> The Media Foundation platform is disabled because the system was started in \"Safe Mode\" (fail-safe boot). </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> An application must call this function before using Media Foundation. Before your application quits, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> once for every previous call to <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong>. </p><p> Do not call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong> or <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> from work queue threads. For more information about work queues, see Work Queues. </p><p>This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFBeginUnregisterWorkQueueWithMMCSS']/*\"/>\t\n            <msdn-id>ms702238</msdn-id>\t\n            <unmanaged>HRESULT MFBeginUnregisterWorkQueueWithMMCSS([In] unsigned int dwWorkQueueId,[In] IMFAsyncCallback* pDoneCallback,[In] IUnknown* pDoneState)</unmanaged>\t\n            <unmanaged-short>MFBeginUnregisterWorkQueueWithMMCSS</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.TRegisterLocalByCLSID(System.Guid,System.Guid,System.String,System.Int32,System.Int32,SharpDX.MediaFoundation.TRegisterTypeInformation[],System.Int32,SharpDX.MediaFoundation.TRegisterTypeInformation[])\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Registers a Media Foundation transform (MFT) in the caller's process.</p>\t\n            </summary>\t\n            <param name=\"clisdMFT\"><dd> <p>The class identifier (CLSID) of the MFT.</p> </dd></param>\t\n            <param name=\"guidCategory\"><dd> <p>A <see cref=\"T:System.Guid\"/> that specifies the category of the MFT. For a list of MFT categories, see <strong>MFT_CATEGORY</strong>.</p> </dd></param>\t\n            <param name=\"szNameRef\"><dd> <p>A wide-character null-terminated string that contains the friendly name of the MFT.</p> </dd></param>\t\n            <param name=\"flags\"><dd> <p>A bitwise <strong>OR</strong> of zero or more flags from the <strong>_MFT_ENUM_FLAG</strong> enumeration.</p> </dd></param>\t\n            <param name=\"cInputTypes\"><dd> <p>The number of elements in the <em>pInputTypes</em> array.</p> </dd></param>\t\n            <param name=\"inputTypesRef\"><dd> <p>A reference to an array of <strong><see cref=\"T:SharpDX.MediaFoundation.TRegisterTypeInformation\"/></strong> structures. Each member of the array specifies an input format that the MFT supports. This parameter can be <strong><c>null</c></strong> if <em>cInputTypes</em> is zero.</p> </dd></param>\t\n            <param name=\"cOutputTypes\"><dd> <p>The number of elements in the <em>pOutputTypes</em> array.</p> </dd></param>\t\n            <param name=\"outputTypesRef\"><dd> <p>A reference to an array of <strong><see cref=\"T:SharpDX.MediaFoundation.TRegisterTypeInformation\"/></strong> structures. Each member of the array defines an output format that the MFT supports. This parameter can be <strong><c>null</c></strong> if <em>cOutputTypes</em> is zero.</p> </dd></param>\t\n            <returns><p>If this function succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>The primary purpose of this function is to make an MFT available for automatic topology resolution without making the MFT available to other processes or applications.</p><p>After you call this function, the MFT can be enumerated by calling the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.TEnumEx(System.Guid,System.Int32,System.Nullable{SharpDX.MediaFoundation.TRegisterTypeInformation},System.Nullable{SharpDX.MediaFoundation.TRegisterTypeInformation},System.IntPtr@,System.Int32@)\"/></strong> function with the <strong><see cref=\"F:SharpDX.MediaFoundation.TransformEnumFlag.Localmft\"/></strong> flag. The MFT can be enumerated from within the same process, but is not visible to other processes.</p><p>To unregister the MFT from the current process, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.TUnregisterLocalByCLSID(System.Guid)\"/></strong>.</p><p>If you need to register an MFT in the Protected Media Path (PMP) process, use the <strong><see cref=\"T:SharpDX.MediaFoundation.LocalMFTRegistration\"/></strong> interface.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFTRegisterLocalByCLSID']/*\"/>\t\n            <msdn-id>dd388657</msdn-id>\t\n            <unmanaged>HRESULT MFTRegisterLocalByCLSID([In] const GUID&amp; clisdMFT,[In] const GUID&amp; guidCategory,[In] const wchar_t* pszName,[In] unsigned int Flags,[In] unsigned int cInputTypes,[In, Buffer, Optional] const MFT_REGISTER_TYPE_INFO* pInputTypes,[In] unsigned int cOutputTypes,[In, Buffer, Optional] const MFT_REGISTER_TYPE_INFO* pOutputTypes)</unmanaged>\t\n            <unmanaged-short>MFTRegisterLocalByCLSID</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.TEnum(System.Guid,System.Int32,System.Nullable{SharpDX.MediaFoundation.TRegisterTypeInformation},System.Nullable{SharpDX.MediaFoundation.TRegisterTypeInformation},SharpDX.MediaFoundation.MediaAttributes,System.Guid[],System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Enumerates Media Foundation transforms (MFTs) in the registry. </p><p>Starting in Windows?7, applications should use the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.TEnumEx(System.Guid,System.Int32,System.Nullable{SharpDX.MediaFoundation.TRegisterTypeInformation},System.Nullable{SharpDX.MediaFoundation.TRegisterTypeInformation},System.IntPtr@,System.Int32@)\"/></strong> function instead.</p>\t\n            </summary>\t\n            <param name=\"guidCategory\">No documentation.</param>\t\n            <param name=\"flags\">No documentation.</param>\t\n            <param name=\"inputTypeRef\">No documentation.</param>\t\n            <param name=\"outputTypeRef\">No documentation.</param>\t\n            <param name=\"attributesRef\">No documentation.</param>\t\n            <param name=\"clsidMFTOut\">No documentation.</param>\t\n            <param name=\"cMFTsRef\">No documentation.</param>\t\n            <returns><p>If this function succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p> This function returns a list of all the MFTs in the specified category that match the search criteria given by the <em>pInputType</em>, <em>pOutputType</em>, and <em>pAttributes</em> parameters. Any of those parameters can be <strong><c>null</c></strong>. </p><p> If no MFTs match the criteria, the method succeeds but returns the value zero in <em>pcMFTs</em>. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFTEnum']/*\"/>\t\n            <msdn-id>ms701774</msdn-id>\t\n            <unmanaged>HRESULT MFTEnum([In] GUID guidCategory,[In] unsigned int Flags,[In, Optional] MFT_REGISTER_TYPE_INFO* pInputType,[In, Optional] MFT_REGISTER_TYPE_INFO* pOutputType,[In, Optional] IMFAttributes* pAttributes,[Out, Buffer] GUID** ppclsidMFT,[Out] unsigned int* pcMFTs)</unmanaged>\t\n            <unmanaged-short>MFTEnum</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.PutWorkItemEx(System.Int32,SharpDX.MediaFoundation.AsyncResult)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Puts an asynchronous operation on a work queue. </p>\t\n            </summary>\t\n            <param name=\"dwQueue\"><dd> <p>The identifier for the work queue. This value can specify one of the standard Media Foundation work queues, or a work queue created by the application. For list of standard Media Foundation work queues, see <strong>Work Queue Identifiers</strong>. To create a new work queue, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.AllocateWorkQueue(System.Int32@)\"/></strong> or <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.AllocateWorkQueueEx(SharpDX.MediaFoundation.AsyncWorkqueueType,System.Int32@)\"/></strong>. </p> </dd></param>\t\n            <param name=\"resultRef\"><dd> <p>A reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.AsyncResult\"/></strong> interface of an asynchronous result object. To create the result object, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateAsyncResult(SharpDX.ComObject,SharpDX.MediaFoundation.AsyncCallback,SharpDX.ComObject,SharpDX.MediaFoundation.AsyncResult@)\"/></strong>. </p> </dd></param>\t\n            <returns><p> Returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> value. Possible values include the following.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></strong></dt> </dl> </td><td> <p> Success.</p> </td></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidWorkqueue\"/></strong></strong></dt> </dl> </td><td> <p>Invalid work queue identifier. For more information, see <strong><see cref=\"M:SharpDX.MediaFoundation.AsyncCallback.GetParameters(System.Int32@,System.Int32@)\"/></strong>.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/></strong></dt> </dl> </td><td> <p>The <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong> function was not called, or <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> was called.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> To invoke the work-item, this function passes <em>pResult</em> to the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.InvokeCallback(SharpDX.MediaFoundation.AsyncResult)\"/></strong> function. The callback is specified when you create the result object specified by <em>pResult</em>. </p><p>This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFPutWorkItemEx']/*\"/>\t\n            <msdn-id>ms697572</msdn-id>\t\n            <unmanaged>HRESULT MFPutWorkItemEx([In] unsigned int dwQueue,[In] IMFAsyncResult* pResult)</unmanaged>\t\n            <unmanaged-short>MFPutWorkItemEx</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.GetMFTMerit(SharpDX.ComObject,System.Int32,System.Byte[],System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Initializes Microsoft Media Foundation.</p>\t\n            </summary>\t\n            <param name=\"mFTRef\"><dd> <p>Version number. Use the value <strong><see cref=\"F:SharpDX.MediaFoundation.MediaFactory.Version\"/></strong>, defined in mfapi.h.</p> </dd></param>\t\n            <param name=\"cbVerifier\"><dd> <p>This parameter is optional when using C++ but required in C. The value must be one of the following flags: </p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td> <dl> <dt>MFSTARTUP_NOSOCKET</dt> </dl> </td><td> <p> Do not initialize the sockets library. </p> </td></tr> <tr><td> <dl> <dt>MFSTARTUP_LITE</dt> </dl> </td><td> <p> Equivalent to MFSTARTUP_NOSOCKET. </p> </td></tr> <tr><td> <dl> <dt>MFSTARTUP_FULL</dt> </dl> </td><td> <p> Initialize the entire Media Foundation platform. This is the default value when <em>dwFlags</em> is not specified. </p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <param name=\"verifier\">No documentation.</param>\t\n            <param name=\"merit\">No documentation.</param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.BadStartupVersion\"/></strong></dt> </dl> </td><td> <p> The <em>Version</em> parameter requires a newer version of Media Foundation than the version that is running.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.DisabledInSafemode\"/></strong></dt> </dl> </td><td> <p> The Media Foundation platform is disabled because the system was started in \"Safe Mode\" (fail-safe boot). </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> An application must call this function before using Media Foundation. Before your application quits, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> once for every previous call to <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong>. </p><p> Do not call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong> or <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> from work queue threads. For more information about work queues, see Work Queues. </p><p>This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFGetMFTMerit']/*\"/>\t\n            <msdn-id>ms702238</msdn-id>\t\n            <unmanaged>HRESULT MFGetMFTMerit([InOut] IUnknown* pMFT,[In] unsigned int cbVerifier,[In, Buffer] const unsigned char* verifier,[Out] unsigned int* merit)</unmanaged>\t\n            <unmanaged-short>MFGetMFTMerit</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CreateMFVideoFormatFromMFMediaType(SharpDX.MediaFoundation.MediaType,SharpDX.MediaFoundation.VideoFormat@,System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Initializes Microsoft Media Foundation.</p>\t\n            </summary>\t\n            <param name=\"mFTypeRef\"><dd> <p>Version number. Use the value <strong><see cref=\"F:SharpDX.MediaFoundation.MediaFactory.Version\"/></strong>, defined in mfapi.h.</p> </dd></param>\t\n            <param name=\"mFVFOut\"><dd> <p>This parameter is optional when using C++ but required in C. The value must be one of the following flags: </p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td> <dl> <dt>MFSTARTUP_NOSOCKET</dt> </dl> </td><td> <p> Do not initialize the sockets library. </p> </td></tr> <tr><td> <dl> <dt>MFSTARTUP_LITE</dt> </dl> </td><td> <p> Equivalent to MFSTARTUP_NOSOCKET. </p> </td></tr> <tr><td> <dl> <dt>MFSTARTUP_FULL</dt> </dl> </td><td> <p> Initialize the entire Media Foundation platform. This is the default value when <em>dwFlags</em> is not specified. </p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <param name=\"cbSizeRef\">No documentation.</param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.BadStartupVersion\"/></strong></dt> </dl> </td><td> <p> The <em>Version</em> parameter requires a newer version of Media Foundation than the version that is running.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.DisabledInSafemode\"/></strong></dt> </dl> </td><td> <p> The Media Foundation platform is disabled because the system was started in \"Safe Mode\" (fail-safe boot). </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> An application must call this function before using Media Foundation. Before your application quits, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> once for every previous call to <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong>. </p><p> Do not call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong> or <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> from work queue threads. For more information about work queues, see Work Queues. </p><p>This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCreateMFVideoFormatFromMFMediaType']/*\"/>\t\n            <msdn-id>ms702238</msdn-id>\t\n            <unmanaged>HRESULT MFCreateMFVideoFormatFromMFMediaType([In] IMFMediaType* pMFType,[Out] MFVIDEOFORMAT** ppMFVF,[Out, Optional] unsigned int* pcbSize)</unmanaged>\t\n            <unmanaged-short>MFCreateMFVideoFormatFromMFMediaType</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CreateMediaBufferWrapper(SharpDX.MediaFoundation.MediaBuffer,System.Int32,System.Int32,SharpDX.MediaFoundation.MediaBuffer@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Creates a media buffer that wraps an existing media buffer. The new media buffer points to the same memory as the original media buffer, or to an offset from the start of the memory.</p>\t\n            </summary>\t\n            <param name=\"bufferRef\"><dd> <p>A reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaBuffer\"/></strong> interface of the original media buffer. </p> </dd></param>\t\n            <param name=\"cbOffset\"><dd> <p>The start of the new buffer, as an offset in bytes from the start of the original buffer. </p> </dd></param>\t\n            <param name=\"dwLength\"><dd> <p>The size of the new buffer. The value of <em>cbOffset</em> + <em>dwLength</em> must be less than or equal to the size of valid data the original buffer. (The size of the valid data is returned by the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaBuffer.GetCurrentLength(System.Int32@)\"/></strong> method.) </p> </dd></param>\t\n            <param name=\"bufferOut\"><dd> <p>Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaBuffer\"/></strong> interface. The caller must release the interface. </p> </dd></param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The function succeeded. </p> </td></tr> <tr><td> <dl> <dt><strong>E_INVALIDARG</strong></dt> </dl> </td><td> <p> The requested offset or the requested length is not valid. </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>The maximum size of the wrapper buffer is limited to the size of the valid data in the original buffer. This might be less than the allocated size of the original buffer. To set the size of the valid data, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaBuffer.SetCurrentLength(System.Int32)\"/></strong>.</p><p>This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCreateMediaBufferWrapper']/*\"/>\t\n            <msdn-id>aa370450</msdn-id>\t\n            <unmanaged>HRESULT MFCreateMediaBufferWrapper([In] IMFMediaBuffer* pBuffer,[In] unsigned int cbOffset,[In] unsigned int dwLength,[Out] IMFMediaBuffer** ppBuffer)</unmanaged>\t\n            <unmanaged-short>MFCreateMediaBufferWrapper</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.IsFormatYUV(System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Initializes Microsoft Media Foundation.</p>\t\n            </summary>\t\n            <param name=\"format\"><dd> <p>Version number. Use the value <strong><see cref=\"F:SharpDX.MediaFoundation.MediaFactory.Version\"/></strong>, defined in mfapi.h.</p> </dd></param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.BadStartupVersion\"/></strong></dt> </dl> </td><td> <p> The <em>Version</em> parameter requires a newer version of Media Foundation than the version that is running.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.DisabledInSafemode\"/></strong></dt> </dl> </td><td> <p> The Media Foundation platform is disabled because the system was started in \"Safe Mode\" (fail-safe boot). </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> An application must call this function before using Media Foundation. Before your application quits, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> once for every previous call to <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong>. </p><p> Do not call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong> or <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> from work queue threads. For more information about work queues, see Work Queues. </p><p>This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFIsFormatYUV']/*\"/>\t\n            <msdn-id>ms702238</msdn-id>\t\n            <unmanaged>BOOL MFIsFormatYUV([In] unsigned int Format)</unmanaged>\t\n            <unmanaged-short>MFIsFormatYUV</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.EndRegisterWorkQueueWithMMCSS(SharpDX.MediaFoundation.AsyncResult,System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Initializes Microsoft Media Foundation.</p>\t\n            </summary>\t\n            <param name=\"resultRef\"><dd> <p>Version number. Use the value <strong><see cref=\"F:SharpDX.MediaFoundation.MediaFactory.Version\"/></strong>, defined in mfapi.h.</p> </dd></param>\t\n            <param name=\"dwTaskIdRef\"><dd> <p>This parameter is optional when using C++ but required in C. The value must be one of the following flags: </p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td> <dl> <dt>MFSTARTUP_NOSOCKET</dt> </dl> </td><td> <p> Do not initialize the sockets library. </p> </td></tr> <tr><td> <dl> <dt>MFSTARTUP_LITE</dt> </dl> </td><td> <p> Equivalent to MFSTARTUP_NOSOCKET. </p> </td></tr> <tr><td> <dl> <dt>MFSTARTUP_FULL</dt> </dl> </td><td> <p> Initialize the entire Media Foundation platform. This is the default value when <em>dwFlags</em> is not specified. </p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.BadStartupVersion\"/></strong></dt> </dl> </td><td> <p> The <em>Version</em> parameter requires a newer version of Media Foundation than the version that is running.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.DisabledInSafemode\"/></strong></dt> </dl> </td><td> <p> The Media Foundation platform is disabled because the system was started in \"Safe Mode\" (fail-safe boot). </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> An application must call this function before using Media Foundation. Before your application quits, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> once for every previous call to <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong>. </p><p> Do not call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong> or <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> from work queue threads. For more information about work queues, see Work Queues. </p><p>This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFEndRegisterWorkQueueWithMMCSS']/*\"/>\t\n            <msdn-id>ms702238</msdn-id>\t\n            <unmanaged>HRESULT MFEndRegisterWorkQueueWithMMCSS([In] IMFAsyncResult* pResult,[Out] unsigned int* pdwTaskId)</unmanaged>\t\n            <unmanaged-short>MFEndRegisterWorkQueueWithMMCSS</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.UnwrapMediaType(SharpDX.MediaFoundation.MediaType,SharpDX.MediaFoundation.MediaType@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Creates a media type that wraps another media type. </p>\t\n            </summary>\t\n            <param name=\"wrapRef\"><dd> <p> A reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaType\"/></strong> interface of the media type to wrap in a new media type. </p> </dd></param>\t\n            <param name=\"origOut\"><dd> <p>A  <see cref=\"T:System.Guid\"/> that specifies the major type for the new media type. For a list of possible values, see Major Media Types. </p> </dd></param>\t\n            <returns><p>If this function succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p> The original media type (<em>pOrig</em>) is stored in the new media type under the <strong><see cref=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.WrappedType\"/></strong> attribute. To extract the original media type, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.UnwrapMediaType(SharpDX.MediaFoundation.MediaType,SharpDX.MediaFoundation.MediaType@)\"/></strong>. </p><p>This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFUnwrapMediaType']/*\"/>\t\n            <msdn-id>ms701782</msdn-id>\t\n            <unmanaged>HRESULT MFUnwrapMediaType([In] IMFMediaType* pWrap,[Out] IMFMediaType** ppOrig)</unmanaged>\t\n            <unmanaged-short>MFUnwrapMediaType</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.GetAttributesAsBlob(SharpDX.MediaFoundation.MediaAttributes,System.Byte[],System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves the size of the buffer needed for the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.GetAttributesAsBlob(SharpDX.MediaFoundation.MediaAttributes,System.Byte[],System.Int32)\"/></strong> function.</p>\t\n            </summary>\t\n            <param name=\"attributesRef\">No documentation.</param>\t\n            <param name=\"bufRef\">No documentation.</param>\t\n            <param name=\"cbBufSize\">No documentation.</param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The function succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>Use this function to find the size of the array that is needed for the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.GetAttributesAsBlob(SharpDX.MediaFoundation.MediaAttributes,System.Byte[],System.Int32)\"/></strong> function.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFGetAttributesAsBlob']/*\"/>\t\n            <msdn-id>ms697064</msdn-id>\t\n            <unmanaged>HRESULT MFGetAttributesAsBlob([In] IMFAttributes* pAttributes,[Out, Buffer] unsigned char* pBuf,[In] unsigned int cbBufSize)</unmanaged>\t\n            <unmanaged-short>MFGetAttributesAsBlob</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CopyImage(System.Byte[],System.Int32,System.Byte[],System.Int32,System.Int32,System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Copies an image or image plane from one buffer to another. </p>\t\n            </summary>\t\n            <param name=\"destRef\"><dd> <p> Pointer to the start of the first row of pixels in the destination buffer. </p> </dd></param>\t\n            <param name=\"lDestStride\"><dd> <p> Stride of the destination buffer, in bytes. </p> </dd></param>\t\n            <param name=\"srcRef\"><dd> <p> Pointer to the start of the first row of pixels in the source image. </p> </dd></param>\t\n            <param name=\"lSrcStride\"><dd> <p> Stride of the source image, in bytes. </p> </dd></param>\t\n            <param name=\"dwWidthInBytes\"><dd> <p> Width of the image, in bytes. </p> </dd></param>\t\n            <param name=\"dwLines\"><dd> <p> Number of rows of pixels to copy. </p> </dd></param>\t\n            <returns><p>If this function succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p> This function copies a single plane of the image. For planar YUV formats, you must call the function once for each plane. In this case, <em>pDest</em> and <em>pSrc</em> must point to the start of each plane. </p><p> This function is optimized if the MMX, SSE, or SSE2 instruction sets are available on the processor. The function performs a non-temporal store (the data is written to memory directly without polluting the cache). </p><p><strong>Note</strong>??Prior to Windows?7, this function was exported from evr.dll. Starting in Windows?7, this function is exported from mfplat.dll, and evr.dll exports a stub function that calls into mfplat.dll. For more information, see Library Changes in Windows?7.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCopyImage']/*\"/>\t\n            <msdn-id>bb970554</msdn-id>\t\n            <unmanaged>HRESULT MFCopyImage([Out, Buffer] unsigned char* pDest,[In] int lDestStride,[In, Buffer] const unsigned char* pSrc,[In] int lSrcStride,[In] unsigned int dwWidthInBytes,[In] unsigned int dwLines)</unmanaged>\t\n            <unmanaged-short>MFCopyImage</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CreateVideoMediaType(SharpDX.MediaFoundation.VideoFormat@,SharpDX.MediaFoundation.VideoMediaType@)\">\n            <summary>\t\n            <p>[This API is not supported and may be altered or unavailable in the future. Applications should avoid using the <strong><see cref=\"T:SharpDX.MediaFoundation.VideoFormat\"/></strong> structure, and use media type attributes instead. For more information, see Video Media Types.]</p><p><strong>Applies to: </strong>desktop apps only</p><p> Creates a video media type from an <strong><see cref=\"T:SharpDX.MediaFoundation.VideoFormat\"/></strong> structure. </p>\t\n            </summary>\t\n            <param name=\"videoFormatRef\">No documentation.</param>\t\n            <param name=\"iVideoMediaTypeOut\">No documentation.</param>\t\n            <returns><p>If this function succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p> Instead of using the <strong><see cref=\"T:SharpDX.MediaFoundation.VideoFormat\"/></strong> structure to initialize a video media type, you can call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateMediaType(SharpDX.MediaFoundation.MediaType)\"/></strong> and set the media type attributes directly. </p><p><strong>Note</strong>??Prior to Windows?7, this function was exported from evr.dll. Starting in Windows?7, this function is exported from mfplat.dll, and evr.dll exports a stub function that calls into mfplat.dll. For more information, see Library Changes in Windows?7.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCreateVideoMediaType']/*\"/>\t\n            <msdn-id>aa473781</msdn-id>\t\n            <unmanaged>HRESULT MFCreateVideoMediaType([In] const MFVIDEOFORMAT* pVideoFormat,[Out] IMFVideoMediaType** ppIVideoMediaType)</unmanaged>\t\n            <unmanaged-short>MFCreateVideoMediaType</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.TGetInfo(System.Guid,System.IntPtr,SharpDX.MediaFoundation.TRegisterTypeInformation[],System.Int32@,SharpDX.MediaFoundation.TRegisterTypeInformation[],System.Int32@,SharpDX.MediaFoundation.MediaAttributes@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Gets information from the registry about a Media Foundation transform (MFT). </p>\t\n            </summary>\t\n            <param name=\"clsidMFT\"><dd> <p> The CLSID of the MFT. </p> </dd></param>\t\n            <param name=\"szNameRef\"><dd> <p> Receives a reference to a wide-character string containing the friendly name of the MFT. The caller must free the string by calling <strong>CoTaskMemFree</strong>. This parameter can be <strong><c>null</c></strong>. </p> </dd></param>\t\n            <param name=\"inputTypesOut\"><dd> <p> Receives a reference to an array of <strong><see cref=\"T:SharpDX.MediaFoundation.TRegisterTypeInformation\"/></strong> structures. Each member of the array describes an input format that the MFT supports. The caller must free the array by calling <strong>CoTaskMemFree</strong>. This parameter can be <strong><c>null</c></strong>. </p> </dd></param>\t\n            <param name=\"cInputTypesRef\"><dd> <p> Receives the number of elements in the <em>ppInputTypes</em> array. If <em>ppInputTypes</em> is <strong><c>null</c></strong>, this parameter is ignored and can be <strong><c>null</c></strong>. </p> </dd></param>\t\n            <param name=\"outputTypesOut\"><dd> <p> Receives a reference to an array of <strong><see cref=\"T:SharpDX.MediaFoundation.TRegisterTypeInformation\"/></strong> structures. Each member of the array describes an output format that the MFT supports. The caller must free the array by calling <strong>CoTaskMemFree</strong>. This parameter can be <strong><c>null</c></strong>. </p> </dd></param>\t\n            <param name=\"cOutputTypesRef\"><dd> <p> Receives the number of elements in the <em>ppOutputType</em> array. If <em>ppOutputTypes</em> is <strong><c>null</c></strong>, this parameter is ignored and can be <strong><c>null</c></strong>. </p> </dd></param>\t\n            <param name=\"attributesOut\"><dd> <p>Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaAttributes\"/></strong> interface of an attribute store. The caller must release the interface. The attribute store might contain attributes that are stored in the registry for the specified MFT. (For more information, see <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.TRegister(System.Guid,System.Guid,System.String,System.Int32,System.Int32,SharpDX.MediaFoundation.TRegisterTypeInformation[],System.Int32,SharpDX.MediaFoundation.TRegisterTypeInformation[],SharpDX.MediaFoundation.MediaAttributes)\"/></strong>.)  If no attributes are stored in the registry for this MFT, the attribute store is empty. </p> <p>This parameter can be <strong><c>null</c></strong>. </p> </dd></param>\t\n            <returns><p>If this function succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFTGetInfo']/*\"/>\t\n            <msdn-id>ms703830</msdn-id>\t\n            <unmanaged>HRESULT MFTGetInfo([In] GUID clsidMFT,[Out, Optional] wchar_t** pszName,[Out, Buffer, Optional] MFT_REGISTER_TYPE_INFO** ppInputTypes,[Out, Optional] unsigned int* pcInputTypes,[Out, Buffer, Optional] MFT_REGISTER_TYPE_INFO** ppOutputTypes,[Out, Optional] unsigned int* pcOutputTypes,[Out, Optional] IMFAttributes** ppAttributes)</unmanaged>\t\n            <unmanaged-short>MFTGetInfo</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.BeginCreateFile(SharpDX.MediaFoundation.FileAccessMode,SharpDX.MediaFoundation.FileOpenMode,SharpDX.MediaFoundation.FileFlags,System.String,SharpDX.MediaFoundation.AsyncCallback,SharpDX.ComObject,SharpDX.ComObject@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Begins an asynchronous request to create a byte stream from a file.</p>\t\n            </summary>\t\n            <param name=\"accessMode\"><dd> <p>The requested access mode, specified as a member of the <strong><see cref=\"T:SharpDX.MediaFoundation.FileAccessMode\"/></strong> enumeration.</p> </dd></param>\t\n            <param name=\"openMode\"><dd> <p>The behavior of the function if the file already exists or does not exist, specified as a member of the <strong><see cref=\"T:SharpDX.MediaFoundation.FileOpenMode\"/></strong> enumeration.</p> </dd></param>\t\n            <param name=\"fFlags\"><dd> <p>Bitwise <strong>OR</strong> of values from the <strong><see cref=\"T:SharpDX.MediaFoundation.FileFlags\"/></strong> enumeration.</p> </dd></param>\t\n            <param name=\"wszFilePathRef\"><dd> <p>Pointer to a null-terminated string containing the file name.</p> </dd></param>\t\n            <param name=\"callbackRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.AsyncCallback\"/></strong> interface of a callback object. The caller must implement this interface</p> </dd></param>\t\n            <param name=\"stateRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interface of a state object, defined by the caller. This parameter can be <strong><c>null</c></strong>. You can use this object to hold state information. The object is returned to the caller when the callback is invoked.</p> </dd></param>\t\n            <param name=\"cancelCookieOut\"><dd> <p>Receives an <strong><see cref=\"T:SharpDX.ComObject\"/></strong> reference or the value <strong><c>null</c></strong>. If the value is not <strong><c>null</c></strong>, you can cancel the asynchronous operation by passing this reference to the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CancelCreateFile(SharpDX.ComObject)\"/></strong> function. The caller must release the interface. This parameter is optional and can be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The function succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>When the request is completed, the callback object's <strong><see cref=\"M:SharpDX.MediaFoundation.AsyncCallback.Invoke(SharpDX.MediaFoundation.AsyncResult)\"/></strong> method is called. The callback object should then call the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.EndCreateFile(SharpDX.MediaFoundation.AsyncResult,SharpDX.MediaFoundation.IByteStream@)\"/></strong> function to get a reference to the byte stream.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFBeginCreateFile']/*\"/>\t\n            <msdn-id>ms702074</msdn-id>\t\n            <unmanaged>HRESULT MFBeginCreateFile([In] MF_FILE_ACCESSMODE AccessMode,[In] MF_FILE_OPENMODE OpenMode,[In] MF_FILE_FLAGS fFlags,[In] const wchar_t* pwszFilePath,[In] IMFAsyncCallback* pCallback,[In] IUnknown* pState,[Out] IUnknown** ppCancelCookie)</unmanaged>\t\n            <unmanaged-short>MFBeginCreateFile</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.ConvertColorInfoFromDXVA(SharpDX.MediaFoundation.VideoFormat@,System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Initializes Microsoft Media Foundation.</p>\t\n            </summary>\t\n            <param name=\"toFormatRef\"><dd> <p>Version number. Use the value <strong><see cref=\"F:SharpDX.MediaFoundation.MediaFactory.Version\"/></strong>, defined in mfapi.h.</p> </dd></param>\t\n            <param name=\"dwFromDXVA\"><dd> <p>This parameter is optional when using C++ but required in C. The value must be one of the following flags: </p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td> <dl> <dt>MFSTARTUP_NOSOCKET</dt> </dl> </td><td> <p> Do not initialize the sockets library. </p> </td></tr> <tr><td> <dl> <dt>MFSTARTUP_LITE</dt> </dl> </td><td> <p> Equivalent to MFSTARTUP_NOSOCKET. </p> </td></tr> <tr><td> <dl> <dt>MFSTARTUP_FULL</dt> </dl> </td><td> <p> Initialize the entire Media Foundation platform. This is the default value when <em>dwFlags</em> is not specified. </p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.BadStartupVersion\"/></strong></dt> </dl> </td><td> <p> The <em>Version</em> parameter requires a newer version of Media Foundation than the version that is running.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.DisabledInSafemode\"/></strong></dt> </dl> </td><td> <p> The Media Foundation platform is disabled because the system was started in \"Safe Mode\" (fail-safe boot). </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> An application must call this function before using Media Foundation. Before your application quits, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> once for every previous call to <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong>. </p><p> Do not call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong> or <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> from work queue threads. For more information about work queues, see Work Queues. </p><p>This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFConvertColorInfoFromDXVA']/*\"/>\t\n            <msdn-id>ms702238</msdn-id>\t\n            <unmanaged>HRESULT MFConvertColorInfoFromDXVA([InOut] MFVIDEOFORMAT* pToFormat,[In] unsigned int dwFromDXVA)</unmanaged>\t\n            <unmanaged-short>MFConvertColorInfoFromDXVA</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.LockWorkQueue(System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Locks a work queue.</p>\t\n            </summary>\t\n            <param name=\"dwWorkQueue\"><dd> <p>The identifier for the work queue. The identifier is returned by the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.AllocateWorkQueue(System.Int32@)\"/></strong> function. </p> </dd></param>\t\n            <returns><p>If this function succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>This function prevents the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> function from shutting down the work queue. Use this function to ensure that asynchronous operations on the work queue complete gracefully before the platform shuts down. The <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> function blocks until the work queue is unlocked, or until a fixed wait period has elapsed. (The wait period is a few seconds.)</p><p>Call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.UnlockWorkQueue(System.Int32)\"/></strong> to unlock the work queue. Each call to <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.LockWorkQueue(System.Int32)\"/></strong> must be matched by a corresponding call to <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.UnlockWorkQueue(System.Int32)\"/></strong>.</p><p> </p><p><strong>Note</strong>??The <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.AllocateWorkQueue(System.Int32@)\"/></strong> function implicitly locks the work queue that it creates.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFLockWorkQueue']/*\"/>\t\n            <msdn-id>aa367740</msdn-id>\t\n            <unmanaged>HRESULT MFLockWorkQueue([In] unsigned int dwWorkQueue)</unmanaged>\t\n            <unmanaged-short>MFLockWorkQueue</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.EndCreateFile(SharpDX.MediaFoundation.AsyncResult,SharpDX.MediaFoundation.IByteStream@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Begins an asynchronous request to create a byte stream from a file.</p>\t\n            </summary>\t\n            <param name=\"resultRef\"><dd> <p>The requested access mode, specified as a member of the <strong><see cref=\"T:SharpDX.MediaFoundation.FileAccessMode\"/></strong> enumeration.</p> </dd></param>\t\n            <param name=\"fileOut\"><dd> <p>The behavior of the function if the file already exists or does not exist, specified as a member of the <strong><see cref=\"T:SharpDX.MediaFoundation.FileOpenMode\"/></strong> enumeration.</p> </dd></param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The function succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>When the request is completed, the callback object's <strong><see cref=\"M:SharpDX.MediaFoundation.AsyncCallback.Invoke(SharpDX.MediaFoundation.AsyncResult)\"/></strong> method is called. The callback object should then call the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.EndCreateFile(SharpDX.MediaFoundation.AsyncResult,SharpDX.MediaFoundation.IByteStream@)\"/></strong> function to get a reference to the byte stream.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFEndCreateFile']/*\"/>\t\n            <msdn-id>ms702074</msdn-id>\t\n            <unmanaged>HRESULT MFEndCreateFile([In] IMFAsyncResult* pResult,[Out] IMFByteStream** ppFile)</unmanaged>\t\n            <unmanaged-short>MFEndCreateFile</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.TUnregisterLocalByCLSID(System.Guid)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Unregisters a Media Foundation transform (MFT) from the caller's process.</p>\t\n            </summary>\t\n            <param name=\"clsidMFT\"><dd> <p>The class identifier (CLSID) of the MFT.</p> </dd></param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong>HRESULT_FROM_WIN32(<strong><see cref=\"F:SharpDX.Win32.ErrorCode.NotFound\"/></strong>)</strong></dt> </dl> </td><td> <p>The MFT specified by the <em>clsidMFT</em> parameter was not registered in this process.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>Use this function to unregister a local MFT that was previously registered through the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.TRegisterLocalByCLSID(System.Guid,System.Guid,System.String,System.Int32,System.Int32,SharpDX.MediaFoundation.TRegisterTypeInformation[],System.Int32,SharpDX.MediaFoundation.TRegisterTypeInformation[])\"/></strong> function.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFTUnregisterLocalByCLSID']/*\"/>\t\n            <msdn-id>dd388659</msdn-id>\t\n            <unmanaged>HRESULT MFTUnregisterLocalByCLSID([In] GUID clsidMFT)</unmanaged>\t\n            <unmanaged-short>MFTUnregisterLocalByCLSID</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CreateVideoMediaTypeFromBitMapInfoHeaderEx(SharpDX.Win32.BitmapInfoHeader[],System.Int32,System.Int32,System.Int32,SharpDX.MediaFoundation.VideoInterlaceMode,System.Int64,System.Int32,System.Int32,System.Int32,SharpDX.MediaFoundation.VideoMediaType@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Creates a video media type from a <strong><see cref=\"T:SharpDX.Win32.BitmapInfoHeader\"/></strong> structure.</p>\t\n            </summary>\t\n            <param name=\"bmihBitMapInfoHeaderRef\">No documentation.</param>\t\n            <param name=\"cbBitMapInfoHeader\">No documentation.</param>\t\n            <param name=\"dwPixelAspectRatioX\">No documentation.</param>\t\n            <param name=\"dwPixelAspectRatioY\">No documentation.</param>\t\n            <param name=\"interlaceMode\">No documentation.</param>\t\n            <param name=\"videoFlags\">No documentation.</param>\t\n            <param name=\"dwFramesPerSecondNumerator\">No documentation.</param>\t\n            <param name=\"dwFramesPerSecondDenominator\">No documentation.</param>\t\n            <param name=\"dwMaxBitRate\">No documentation.</param>\t\n            <param name=\"iVideoMediaTypeOut\">No documentation.</param>\t\n            <returns><p>If the function succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCreateVideoMediaTypeFromBitMapInfoHeaderEx']/*\"/>\t\n            <msdn-id>dd388121</msdn-id>\t\n            <unmanaged>HRESULT MFCreateVideoMediaTypeFromBitMapInfoHeaderEx([In, Buffer] const BITMAPINFOHEADER* pbmihBitMapInfoHeader,[In] unsigned int cbBitMapInfoHeader,[In] unsigned int dwPixelAspectRatioX,[In] unsigned int dwPixelAspectRatioY,[In] MFVideoInterlaceMode InterlaceMode,[In] unsigned longlong VideoFlags,[In] unsigned int dwFramesPerSecondNumerator,[In] unsigned int dwFramesPerSecondDenominator,[In] unsigned int dwMaxBitRate,[Out] IMFVideoMediaType** ppIVideoMediaType)</unmanaged>\t\n            <unmanaged-short>MFCreateVideoMediaTypeFromBitMapInfoHeaderEx</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.InitMediaTypeFromWaveFormatEx(SharpDX.MediaFoundation.MediaType,SharpDX.Multimedia.WaveFormat[],System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Initializes a media type from a <strong><see cref=\"T:SharpDX.Multimedia.WaveFormat\"/></strong> structure. </p>\t\n            </summary>\t\n            <param name=\"mFTypeRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaType\"/></strong> interface of the media type to initialize. To create the uninitialized media type object, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateMediaType(SharpDX.MediaFoundation.MediaType)\"/></strong>.</p> </dd></param>\t\n            <param name=\"waveFormatRef\"><dd> <p>Pointer to a <strong><see cref=\"T:SharpDX.Multimedia.WaveFormat\"/></strong> structure that describes the media type. The caller must fill in the structure members before calling this function.</p> </dd></param>\t\n            <param name=\"cbBufSize\"><dd> <p>Size of the <strong><see cref=\"T:SharpDX.Multimedia.WaveFormat\"/></strong> structure, in bytes.</p> </dd></param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The function succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFInitMediaTypeFromWaveFormatEx']/*\"/>\t\n            <msdn-id>ms700801</msdn-id>\t\n            <unmanaged>HRESULT MFInitMediaTypeFromWaveFormatEx([In] IMFMediaType* pMFType,[In, Buffer] const WAVEFORMATEX* pWaveFormat,[In] unsigned int cbBufSize)</unmanaged>\t\n            <unmanaged-short>MFInitMediaTypeFromWaveFormatEx</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.ConvertColorInfoToDXVA(System.Int32@,SharpDX.MediaFoundation.VideoFormat@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Initializes Microsoft Media Foundation.</p>\t\n            </summary>\t\n            <param name=\"dwToDXVARef\"><dd> <p>Version number. Use the value <strong><see cref=\"F:SharpDX.MediaFoundation.MediaFactory.Version\"/></strong>, defined in mfapi.h.</p> </dd></param>\t\n            <param name=\"fromFormatRef\"><dd> <p>This parameter is optional when using C++ but required in C. The value must be one of the following flags: </p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td> <dl> <dt>MFSTARTUP_NOSOCKET</dt> </dl> </td><td> <p> Do not initialize the sockets library. </p> </td></tr> <tr><td> <dl> <dt>MFSTARTUP_LITE</dt> </dl> </td><td> <p> Equivalent to MFSTARTUP_NOSOCKET. </p> </td></tr> <tr><td> <dl> <dt>MFSTARTUP_FULL</dt> </dl> </td><td> <p> Initialize the entire Media Foundation platform. This is the default value when <em>dwFlags</em> is not specified. </p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.BadStartupVersion\"/></strong></dt> </dl> </td><td> <p> The <em>Version</em> parameter requires a newer version of Media Foundation than the version that is running.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.DisabledInSafemode\"/></strong></dt> </dl> </td><td> <p> The Media Foundation platform is disabled because the system was started in \"Safe Mode\" (fail-safe boot). </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> An application must call this function before using Media Foundation. Before your application quits, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> once for every previous call to <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong>. </p><p> Do not call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong> or <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> from work queue threads. For more information about work queues, see Work Queues. </p><p>This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFConvertColorInfoToDXVA']/*\"/>\t\n            <msdn-id>ms702238</msdn-id>\t\n            <unmanaged>HRESULT MFConvertColorInfoToDXVA([Out] unsigned int* pdwToDXVA,[In] const MFVIDEOFORMAT* pFromFormat)</unmanaged>\t\n            <unmanaged-short>MFConvertColorInfoToDXVA</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CreateTempFile(SharpDX.MediaFoundation.FileAccessMode,SharpDX.MediaFoundation.FileOpenMode,SharpDX.MediaFoundation.FileFlags,SharpDX.MediaFoundation.IByteStream@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Creates a byte stream that is backed by a temporary local file. </p>\t\n            </summary>\t\n            <param name=\"accessMode\"><dd> <p> The requested access mode, specified as a member of the <strong><see cref=\"T:SharpDX.MediaFoundation.FileAccessMode\"/></strong> enumeration. </p> </dd></param>\t\n            <param name=\"openMode\"><dd> <p> The behavior of the function if the file already exists or does not exist, specified as a member of the <strong><see cref=\"T:SharpDX.MediaFoundation.FileOpenMode\"/></strong> enumeration. </p> </dd></param>\t\n            <param name=\"fFlags\"><dd> <p> Bitwise <strong>OR</strong> of values from the <strong><see cref=\"T:SharpDX.MediaFoundation.FileFlags\"/></strong> enumeration. </p> </dd></param>\t\n            <param name=\"iByteStreamOut\"><dd> <p> Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.IByteStream\"/></strong> interface of the byte stream. The caller must release the interface. </p> </dd></param>\t\n            <returns><p>If this function succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p> This function creates a file in the system temporary folder, and then returns a byte stream object for that file. The full path name of the file is storted in the <strong><see cref=\"F:SharpDX.MediaFoundation.ByteStreamAttributeKeys.OriginName\"/></strong> attribute. The file is created with the <strong>FILE_FLAG_DELETE_ON_CLOSE</strong> flag, and is deleted after the byte stream is released.</p><p>This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCreateTempFile']/*\"/>\t\n            <msdn-id>ms695209</msdn-id>\t\n            <unmanaged>HRESULT MFCreateTempFile([In] MF_FILE_ACCESSMODE AccessMode,[In] MF_FILE_OPENMODE OpenMode,[In] MF_FILE_FLAGS fFlags,[Out] IMFByteStream** ppIByteStream)</unmanaged>\t\n            <unmanaged-short>MFCreateTempFile</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CancelWorkItem(System.Int64)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Attempts to cancel an asynchronous operation that was scheduled with <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.ScheduleWorkItem(SharpDX.MediaFoundation.AsyncCallback,SharpDX.ComObject,System.Int64,System.Int64@)\"/></strong> or <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.ScheduleWorkItemEx(SharpDX.MediaFoundation.AsyncResult,System.Int64,System.Int64@)\"/></strong>.</p>\t\n            </summary>\t\n            <param name=\"key\">No documentation.</param>\t\n            <returns><p>If this function succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>Because work items are asynchronous, the  work-item callback might still be invoked after <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CancelWorkItem(System.Int64)\"/></strong> is called.</p><p>This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCancelWorkItem']/*\"/>\t\n            <msdn-id>ms701633</msdn-id>\t\n            <unmanaged>HRESULT MFCancelWorkItem([In] unsigned longlong Key)</unmanaged>\t\n            <unmanaged-short>MFCancelWorkItem</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.GetPluginControl(SharpDX.MediaFoundation.PluginControl@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Gets a reference to the Microsoft Media Foundation plug-in manager.</p>\t\n            </summary>\t\n            <param name=\"pluginControlOut\"><dd> <p>Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.PluginControl\"/></strong> interface. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>If this function succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFGetPluginControl']/*\"/>\t\n            <msdn-id>dd388507</msdn-id>\t\n            <unmanaged>HRESULT MFGetPluginControl([Out] IMFPluginControl** ppPluginControl)</unmanaged>\t\n            <unmanaged-short>MFGetPluginControl</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.AllocateWorkQueue(System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Creates a new work queue.</p>\t\n            </summary>\t\n            <param name=\"dwWorkQueueRef\"><dd> <p>Receives an identifier for the work queue.</p> </dd></param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The function succeeded. </p> </td></tr> <tr><td> <dl> <dt><strong>E_FAIL</strong></dt> </dl> </td><td> <p> The application exceeded the maximum number of work queues. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/></strong></dt> </dl> </td><td> <p> The application did not call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong>, or the application has already called <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong>. </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>When you are done using the work queue, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.UnlockWorkQueue(System.Int32)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFAllocateWorkQueue']/*\"/>\t\n            <msdn-id>ms700204</msdn-id>\t\n            <unmanaged>HRESULT MFAllocateWorkQueue([Out] unsigned int* pdwWorkQueue)</unmanaged>\t\n            <unmanaged-short>MFAllocateWorkQueue</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.InitVideoFormatRgb(SharpDX.MediaFoundation.VideoFormat@,System.Int32,System.Int32,System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Initializes Microsoft Media Foundation.</p>\t\n            </summary>\t\n            <param name=\"videoFormatRef\"><dd> <p>Version number. Use the value <strong><see cref=\"F:SharpDX.MediaFoundation.MediaFactory.Version\"/></strong>, defined in mfapi.h.</p> </dd></param>\t\n            <param name=\"dwWidth\"><dd> <p>This parameter is optional when using C++ but required in C. The value must be one of the following flags: </p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td> <dl> <dt>MFSTARTUP_NOSOCKET</dt> </dl> </td><td> <p> Do not initialize the sockets library. </p> </td></tr> <tr><td> <dl> <dt>MFSTARTUP_LITE</dt> </dl> </td><td> <p> Equivalent to MFSTARTUP_NOSOCKET. </p> </td></tr> <tr><td> <dl> <dt>MFSTARTUP_FULL</dt> </dl> </td><td> <p> Initialize the entire Media Foundation platform. This is the default value when <em>dwFlags</em> is not specified. </p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <param name=\"dwHeight\">No documentation.</param>\t\n            <param name=\"d3Dfmt\">No documentation.</param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.BadStartupVersion\"/></strong></dt> </dl> </td><td> <p> The <em>Version</em> parameter requires a newer version of Media Foundation than the version that is running.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.DisabledInSafemode\"/></strong></dt> </dl> </td><td> <p> The Media Foundation platform is disabled because the system was started in \"Safe Mode\" (fail-safe boot). </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> An application must call this function before using Media Foundation. Before your application quits, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> once for every previous call to <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong>. </p><p> Do not call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong> or <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> from work queue threads. For more information about work queues, see Work Queues. </p><p>This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFInitVideoFormat_RGB']/*\"/>\t\n            <msdn-id>ms702238</msdn-id>\t\n            <unmanaged>HRESULT MFInitVideoFormat_RGB([In] MFVIDEOFORMAT* pVideoFormat,[In] unsigned int dwWidth,[In] unsigned int dwHeight,[In] unsigned int D3Dfmt)</unmanaged>\t\n            <unmanaged-short>MFInitVideoFormat_RGB</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.InitMediaTypeFromMFVideoFormat(SharpDX.MediaFoundation.MediaType,SharpDX.MediaFoundation.VideoFormat[],System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Initializes Microsoft Media Foundation.</p>\t\n            </summary>\t\n            <param name=\"mFTypeRef\"><dd> <p>Version number. Use the value <strong><see cref=\"F:SharpDX.MediaFoundation.MediaFactory.Version\"/></strong>, defined in mfapi.h.</p> </dd></param>\t\n            <param name=\"mFVFRef\"><dd> <p>This parameter is optional when using C++ but required in C. The value must be one of the following flags: </p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td> <dl> <dt>MFSTARTUP_NOSOCKET</dt> </dl> </td><td> <p> Do not initialize the sockets library. </p> </td></tr> <tr><td> <dl> <dt>MFSTARTUP_LITE</dt> </dl> </td><td> <p> Equivalent to MFSTARTUP_NOSOCKET. </p> </td></tr> <tr><td> <dl> <dt>MFSTARTUP_FULL</dt> </dl> </td><td> <p> Initialize the entire Media Foundation platform. This is the default value when <em>dwFlags</em> is not specified. </p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <param name=\"cbBufSize\">No documentation.</param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.BadStartupVersion\"/></strong></dt> </dl> </td><td> <p> The <em>Version</em> parameter requires a newer version of Media Foundation than the version that is running.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.DisabledInSafemode\"/></strong></dt> </dl> </td><td> <p> The Media Foundation platform is disabled because the system was started in \"Safe Mode\" (fail-safe boot). </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> An application must call this function before using Media Foundation. Before your application quits, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> once for every previous call to <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong>. </p><p> Do not call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong> or <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> from work queue threads. For more information about work queues, see Work Queues. </p><p>This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFInitMediaTypeFromMFVideoFormat']/*\"/>\t\n            <msdn-id>ms702238</msdn-id>\t\n            <unmanaged>HRESULT MFInitMediaTypeFromMFVideoFormat([In] IMFMediaType* pMFType,[In, Buffer] const MFVIDEOFORMAT* pMFVF,[In] unsigned int cbBufSize)</unmanaged>\t\n            <unmanaged-short>MFInitMediaTypeFromMFVideoFormat</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.ConvertToFP16Array(System.Int16[],System.Single[],System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Initializes Microsoft Media Foundation.</p>\t\n            </summary>\t\n            <param name=\"destRef\"><dd> <p>Version number. Use the value <strong><see cref=\"F:SharpDX.MediaFoundation.MediaFactory.Version\"/></strong>, defined in mfapi.h.</p> </dd></param>\t\n            <param name=\"srcRef\"><dd> <p>This parameter is optional when using C++ but required in C. The value must be one of the following flags: </p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td> <dl> <dt>MFSTARTUP_NOSOCKET</dt> </dl> </td><td> <p> Do not initialize the sockets library. </p> </td></tr> <tr><td> <dl> <dt>MFSTARTUP_LITE</dt> </dl> </td><td> <p> Equivalent to MFSTARTUP_NOSOCKET. </p> </td></tr> <tr><td> <dl> <dt>MFSTARTUP_FULL</dt> </dl> </td><td> <p> Initialize the entire Media Foundation platform. This is the default value when <em>dwFlags</em> is not specified. </p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <param name=\"dwCount\">No documentation.</param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.BadStartupVersion\"/></strong></dt> </dl> </td><td> <p> The <em>Version</em> parameter requires a newer version of Media Foundation than the version that is running.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.DisabledInSafemode\"/></strong></dt> </dl> </td><td> <p> The Media Foundation platform is disabled because the system was started in \"Safe Mode\" (fail-safe boot). </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> An application must call this function before using Media Foundation. Before your application quits, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> once for every previous call to <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong>. </p><p> Do not call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong> or <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> from work queue threads. For more information about work queues, see Work Queues. </p><p>This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFConvertToFP16Array']/*\"/>\t\n            <msdn-id>ms702238</msdn-id>\t\n            <unmanaged>HRESULT MFConvertToFP16Array([Out, Buffer] unsigned short* pDest,[In, Buffer] const float* pSrc,[In] unsigned int dwCount)</unmanaged>\t\n            <unmanaged-short>MFConvertToFP16Array</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.AddPeriodicCallback(SharpDX.FunctionCallback,SharpDX.ComObject,System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Cancels a callback function that was set by the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.AddPeriodicCallback(SharpDX.FunctionCallback,SharpDX.ComObject,System.Int32@)\"/></strong> function.</p>\t\n            </summary>\t\n            <param name=\"callback\">No documentation.</param>\t\n            <param name=\"contextRef\">No documentation.</param>\t\n            <param name=\"dwKeyRef\">No documentation.</param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The function succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>The callback is dispatched on another thread, and this function does not attempt to synchronize with the callback thread. Therefore, it is possible for the callback to be invoked after this function returns.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFAddPeriodicCallback']/*\"/>\t\n            <msdn-id>ms704741</msdn-id>\t\n            <unmanaged>HRESULT MFAddPeriodicCallback([In] __function__stdcall* Callback,[In] IUnknown* pContext,[Out, Optional] unsigned int* pdwKey)</unmanaged>\t\n            <unmanaged-short>MFAddPeriodicCallback</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.PutWorkItem(System.Int32,SharpDX.MediaFoundation.AsyncCallback,SharpDX.ComObject)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Puts an asynchronous operation on a work queue.</p>\t\n            </summary>\t\n            <param name=\"dwQueue\"><dd> <p> The identifier for the work queue. This value can specify one of the standard Media Foundation work queues, or a work queue created by the application. For list of standard Media Foundation work queues, see <strong>Work Queue Identifiers</strong>. To create a new work queue, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.AllocateWorkQueue(System.Int32@)\"/></strong> or <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.AllocateWorkQueueEx(SharpDX.MediaFoundation.AsyncWorkqueueType,System.Int32@)\"/></strong>. </p> </dd></param>\t\n            <param name=\"callbackRef\"><dd> <p> A reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.AsyncCallback\"/></strong> interface. The caller must implement this interface. </p> </dd></param>\t\n            <param name=\"stateRef\"><dd> <p>A reference to the <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interface of a state object, defined by the caller. This parameter can be <strong><c>null</c></strong>. You can use this object to hold state information. The object is returned to the caller when the callback is invoked. </p> </dd></param>\t\n            <returns><p>Returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> value. Possible values include the following.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></strong></dt> </dl> </td><td> <p>Success.</p> </td></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidWorkqueue\"/></strong></strong></dt> </dl> </td><td> <p>Invalid work queue. For more information, see <strong><see cref=\"M:SharpDX.MediaFoundation.AsyncCallback.GetParameters(System.Int32@,System.Int32@)\"/></strong>.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/></strong></dt> </dl> </td><td> <p>The <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong> function was not called, or <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> was called.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> This function creates an asynchronous result object and puts the result object on the work queue. The work queue calls the <strong><see cref=\"M:SharpDX.MediaFoundation.AsyncCallback.Invoke(SharpDX.MediaFoundation.AsyncResult)\"/></strong> method specified by <em>pCallback</em>. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFPutWorkItem']/*\"/>\t\n            <msdn-id>ms702164</msdn-id>\t\n            <unmanaged>HRESULT MFPutWorkItem([In] unsigned int dwQueue,[In] IMFAsyncCallback* pCallback,[In] IUnknown* pState)</unmanaged>\t\n            <unmanaged-short>MFPutWorkItem</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.GetWorkQueueMMCSSTaskId(System.Int32,System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Initializes Microsoft Media Foundation.</p>\t\n            </summary>\t\n            <param name=\"dwWorkQueueId\"><dd> <p>Version number. Use the value <strong><see cref=\"F:SharpDX.MediaFoundation.MediaFactory.Version\"/></strong>, defined in mfapi.h.</p> </dd></param>\t\n            <param name=\"dwTaskIdRef\"><dd> <p>This parameter is optional when using C++ but required in C. The value must be one of the following flags: </p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td> <dl> <dt>MFSTARTUP_NOSOCKET</dt> </dl> </td><td> <p> Do not initialize the sockets library. </p> </td></tr> <tr><td> <dl> <dt>MFSTARTUP_LITE</dt> </dl> </td><td> <p> Equivalent to MFSTARTUP_NOSOCKET. </p> </td></tr> <tr><td> <dl> <dt>MFSTARTUP_FULL</dt> </dl> </td><td> <p> Initialize the entire Media Foundation platform. This is the default value when <em>dwFlags</em> is not specified. </p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.BadStartupVersion\"/></strong></dt> </dl> </td><td> <p> The <em>Version</em> parameter requires a newer version of Media Foundation than the version that is running.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.DisabledInSafemode\"/></strong></dt> </dl> </td><td> <p> The Media Foundation platform is disabled because the system was started in \"Safe Mode\" (fail-safe boot). </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> An application must call this function before using Media Foundation. Before your application quits, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> once for every previous call to <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong>. </p><p> Do not call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong> or <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> from work queue threads. For more information about work queues, see Work Queues. </p><p>This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFGetWorkQueueMMCSSTaskId']/*\"/>\t\n            <msdn-id>ms702238</msdn-id>\t\n            <unmanaged>HRESULT MFGetWorkQueueMMCSSTaskId([In] unsigned int dwWorkQueueId,[Out] unsigned int* pdwTaskId)</unmanaged>\t\n            <unmanaged-short>MFGetWorkQueueMMCSSTaskId</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CreateLegacyMediaBufferOnMFMediaBuffer(SharpDX.MediaFoundation.Sample,SharpDX.MediaFoundation.MediaBuffer,System.Int32,SharpDX.MediaFoundation.IMediaBuffer@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Initializes Microsoft Media Foundation.</p>\t\n            </summary>\t\n            <param name=\"sampleRef\"><dd> <p>Version number. Use the value <strong><see cref=\"F:SharpDX.MediaFoundation.MediaFactory.Version\"/></strong>, defined in mfapi.h.</p> </dd></param>\t\n            <param name=\"mFMediaBufferRef\"><dd> <p>This parameter is optional when using C++ but required in C. The value must be one of the following flags: </p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td> <dl> <dt>MFSTARTUP_NOSOCKET</dt> </dl> </td><td> <p> Do not initialize the sockets library. </p> </td></tr> <tr><td> <dl> <dt>MFSTARTUP_LITE</dt> </dl> </td><td> <p> Equivalent to MFSTARTUP_NOSOCKET. </p> </td></tr> <tr><td> <dl> <dt>MFSTARTUP_FULL</dt> </dl> </td><td> <p> Initialize the entire Media Foundation platform. This is the default value when <em>dwFlags</em> is not specified. </p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <param name=\"cbOffset\">No documentation.</param>\t\n            <param name=\"mediaBufferOut\">No documentation.</param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.BadStartupVersion\"/></strong></dt> </dl> </td><td> <p> The <em>Version</em> parameter requires a newer version of Media Foundation than the version that is running.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.DisabledInSafemode\"/></strong></dt> </dl> </td><td> <p> The Media Foundation platform is disabled because the system was started in \"Safe Mode\" (fail-safe boot). </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> An application must call this function before using Media Foundation. Before your application quits, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> once for every previous call to <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong>. </p><p> Do not call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong> or <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> from work queue threads. For more information about work queues, see Work Queues. </p><p>This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCreateLegacyMediaBufferOnMFMediaBuffer']/*\"/>\t\n            <msdn-id>ms702238</msdn-id>\t\n            <unmanaged>HRESULT MFCreateLegacyMediaBufferOnMFMediaBuffer([In, Optional] IMFSample* pSample,[In] IMFMediaBuffer* pMFMediaBuffer,[In] unsigned int cbOffset,[Out] IMediaBuffer** ppMediaBuffer)</unmanaged>\t\n            <unmanaged-short>MFCreateLegacyMediaBufferOnMFMediaBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.WrapMediaType(SharpDX.MediaFoundation.MediaType,System.Guid,System.Guid,SharpDX.MediaFoundation.MediaType@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Creates a media type that wraps another media type. </p>\t\n            </summary>\t\n            <param name=\"origRef\"><dd> <p> A reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaType\"/></strong> interface of the media type to wrap in a new media type. </p> </dd></param>\t\n            <param name=\"majorType\"><dd> <p>A  <see cref=\"T:System.Guid\"/> that specifies the major type for the new media type. For a list of possible values, see Major Media Types. </p> </dd></param>\t\n            <param name=\"subType\"><dd> <p>A  <see cref=\"T:System.Guid\"/> that specifies the subtype for the new media type. For possible values, see:</p> <ul> <li> <strong>Audio Subtypes</strong> </li> <li> Video Subtypes </li> </ul> <p>Applications can define custom subtype GUIDs.</p> </dd></param>\t\n            <param name=\"wrapOut\"><dd> <p> Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaType\"/></strong> interface of the new media type that wraps the original media type. The caller must release the interface. </p> </dd></param>\t\n            <returns><p>If this function succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p> The original media type (<em>pOrig</em>) is stored in the new media type under the <strong><see cref=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.WrappedType\"/></strong> attribute. To extract the original media type, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.UnwrapMediaType(SharpDX.MediaFoundation.MediaType,SharpDX.MediaFoundation.MediaType@)\"/></strong>. </p><p>This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFWrapMediaType']/*\"/>\t\n            <msdn-id>ms701782</msdn-id>\t\n            <unmanaged>HRESULT MFWrapMediaType([In] IMFMediaType* pOrig,[In] const GUID&amp; MajorType,[In] const GUID&amp; SubType,[Out] IMFMediaType** ppWrap)</unmanaged>\t\n            <unmanaged-short>MFWrapMediaType</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.TUnregister(System.Guid)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Unregisters a Media Foundation transform (MFT) from the caller's process.</p>\t\n            </summary>\t\n            <param name=\"clsidMFT\"><dd> <p>The class identifier (CLSID) of the MFT.</p> </dd></param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong>HRESULT_FROM_WIN32(<strong><see cref=\"F:SharpDX.Win32.ErrorCode.NotFound\"/></strong>)</strong></dt> </dl> </td><td> <p>The MFT specified by the <em>clsidMFT</em> parameter was not registered in this process.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>Use this function to unregister a local MFT that was previously registered through the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.TRegisterLocalByCLSID(System.Guid,System.Guid,System.String,System.Int32,System.Int32,SharpDX.MediaFoundation.TRegisterTypeInformation[],System.Int32,SharpDX.MediaFoundation.TRegisterTypeInformation[])\"/></strong> function.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFTUnregister']/*\"/>\t\n            <msdn-id>dd388659</msdn-id>\t\n            <unmanaged>HRESULT MFTUnregister([In] GUID clsidMFT)</unmanaged>\t\n            <unmanaged-short>MFTUnregister</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.UnlockPlatform\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Unlocks the Media Foundation platform after it was locked by a call to the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.LockPlatform\"/></strong> function.</p>\t\n            </summary>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The function succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>The application must call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.UnlockPlatform\"/></strong> once for every call to <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.LockPlatform\"/></strong>.</p><p>This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFUnlockPlatform']/*\"/>\t\n            <msdn-id>ms703879</msdn-id>\t\n            <unmanaged>HRESULT MFUnlockPlatform()</unmanaged>\t\n            <unmanaged-short>MFUnlockPlatform</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CalculateBitmapImageSize(SharpDX.Win32.BitmapInfoHeader[],System.Int32,System.Int32@,SharpDX.Bool@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Retrieves the image size for a video format. Given a <strong><see cref=\"T:SharpDX.Win32.BitmapInfoHeader\"/></strong> structure, this function calculates the correct value of the <strong>biSizeImage</strong> member. </p>\t\n            </summary>\t\n            <param name=\"bMIHRef\">No documentation.</param>\t\n            <param name=\"cbBufSize\">No documentation.</param>\t\n            <param name=\"cbImageSizeRef\">No documentation.</param>\t\n            <param name=\"bKnownRef\">No documentation.</param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The function succeeded. </p> </td></tr> <tr><td> <dl> <dt><strong>E_INVALIDARG</strong></dt> </dl> </td><td> <p> The <strong><see cref=\"T:SharpDX.Win32.BitmapInfoHeader\"/></strong> structure is not valid, or the value of <em>cbBufSize</em> is too small. </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> Before calling this function, you must set at least the following members of the <strong><see cref=\"T:SharpDX.Win32.BitmapInfoHeader\"/></strong> structure:</p><ul> <li><strong>biCompression</strong></li> <li><strong>biBitCount</strong></li> <li><strong>biWidth</strong></li> <li><strong>biHeight</strong></li> </ul><p>Also, if <strong>biCompression</strong> is <strong>BI_BITFIELDS</strong>, the <strong><see cref=\"T:SharpDX.Win32.BitmapInfoHeader\"/></strong> structure must be followed by an array of color masks. </p><p> This function fails if the <strong><see cref=\"T:SharpDX.Win32.BitmapInfoHeader\"/></strong> structure describes a format that is not a video format. For example, it fails if <strong>biCompresson</strong> is <strong>BI_JPEG</strong> or <strong>BI_PNG</strong> .</p><p>This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCalculateBitmapImageSize']/*\"/>\t\n            <msdn-id>ms697582</msdn-id>\t\n            <unmanaged>HRESULT MFCalculateBitmapImageSize([In, Buffer] const BITMAPINFOHEADER* pBMIH,[In] unsigned int cbBufSize,[Out] unsigned int* pcbImageSize,[Out, Optional] BOOL* pbKnown)</unmanaged>\t\n            <unmanaged-short>MFCalculateBitmapImageSize</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CreateEventQueue(SharpDX.MediaFoundation.MediaEventQueue@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Creates an event queue.</p>\t\n            </summary>\t\n            <param name=\"mediaEventQueueOut\"><dd> <p>Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaEventQueue\"/></strong> interface of the event queue. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The function succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>This function creates a helper object that you can use to implement the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaEventGenerator\"/></strong> interface.</p><p>This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCreateEventQueue']/*\"/>\t\n            <msdn-id>ms695252</msdn-id>\t\n            <unmanaged>HRESULT MFCreateEventQueue([Out] IMFMediaEventQueue** ppMediaEventQueue)</unmanaged>\t\n            <unmanaged-short>MFCreateEventQueue</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CreateDXSurfaceBuffer(System.Guid,SharpDX.ComObject,SharpDX.Bool,SharpDX.MediaFoundation.MediaBuffer@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Creates a media buffer object that manages a Direct3D 9 surface. </p>\t\n            </summary>\t\n            <param name=\"riid\"><dd> <p> Identifies the type of Direct3D 9 surface. Currently this value must be <strong>IID_IDirect3DSurface9</strong>. </p> </dd></param>\t\n            <param name=\"unkSurfaceRef\"><dd> <p> A reference to the <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interface of the DirectX surface. </p> </dd></param>\t\n            <param name=\"fBottomUpWhenLinear\"><dd> <p> If <strong>TRUE</strong>, the buffer's <strong><see cref=\"M:SharpDX.MediaFoundation.Buffer2D.ContiguousCopyTo(System.Byte[],System.Int32)\"/></strong> method copies the buffer into a bottom-up format. The bottom-up format is compatible with GDI for uncompressed RGB images. If this parameter is <strong><see cref=\"F:SharpDX.Result.False\"/></strong>, the <strong>ContiguousCopyTo</strong> method copies the buffer into a top-down format, which is compatible with DirectX. </p> <p>For more information about top-down versus bottom-up images, see Image Stride.</p> </dd></param>\t\n            <param name=\"bufferOut\"><dd> <p> Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaBuffer\"/></strong> interface. The caller must release the buffer. </p> </dd></param>\t\n            <returns><p> The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table. </p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded. </p> </td></tr> <tr><td> <dl> <dt><strong>E_INVALIDARG</strong></dt> </dl> </td><td> <p>Invalid argument.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>This function creates a media buffer object that holds a reference to the Direct3D surface specified in <em>punkSurface</em>. Locking the buffer gives the caller access to the surface memory. When the buffer object is destroyed, it releases the surface. For more information about media buffers, see Media Buffers.</p><p><strong>Note</strong>??This function does not allocate the Direct3D surface itself.</p><p> The buffer object created by this function also exposes the <strong><see cref=\"T:SharpDX.MediaFoundation.Buffer2D\"/></strong> interface. For more information, see DirectX Surface Buffer. </p><p>This function does not support DXGI surfaces.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCreateDXSurfaceBuffer']/*\"/>\t\n            <msdn-id>ms703840</msdn-id>\t\n            <unmanaged>HRESULT MFCreateDXSurfaceBuffer([In] const GUID&amp; riid,[In] IUnknown* punkSurface,[In] BOOL fBottomUpWhenLinear,[Out] IMFMediaBuffer** ppBuffer)</unmanaged>\t\n            <unmanaged-short>MFCreateDXSurfaceBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.BeginRegisterWorkQueueWithMMCSS(System.Int32,System.String,System.Int32,SharpDX.MediaFoundation.AsyncCallback,SharpDX.ComObject)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Initializes Microsoft Media Foundation.</p>\t\n            </summary>\t\n            <param name=\"dwWorkQueueId\"><dd> <p>Version number. Use the value <strong><see cref=\"F:SharpDX.MediaFoundation.MediaFactory.Version\"/></strong>, defined in mfapi.h.</p> </dd></param>\t\n            <param name=\"wszClass\"><dd> <p>This parameter is optional when using C++ but required in C. The value must be one of the following flags: </p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td> <dl> <dt>MFSTARTUP_NOSOCKET</dt> </dl> </td><td> <p> Do not initialize the sockets library. </p> </td></tr> <tr><td> <dl> <dt>MFSTARTUP_LITE</dt> </dl> </td><td> <p> Equivalent to MFSTARTUP_NOSOCKET. </p> </td></tr> <tr><td> <dl> <dt>MFSTARTUP_FULL</dt> </dl> </td><td> <p> Initialize the entire Media Foundation platform. This is the default value when <em>dwFlags</em> is not specified. </p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <param name=\"dwTaskId\">No documentation.</param>\t\n            <param name=\"doneCallbackRef\">No documentation.</param>\t\n            <param name=\"doneStateRef\">No documentation.</param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.BadStartupVersion\"/></strong></dt> </dl> </td><td> <p> The <em>Version</em> parameter requires a newer version of Media Foundation than the version that is running.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.DisabledInSafemode\"/></strong></dt> </dl> </td><td> <p> The Media Foundation platform is disabled because the system was started in \"Safe Mode\" (fail-safe boot). </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> An application must call this function before using Media Foundation. Before your application quits, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> once for every previous call to <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong>. </p><p> Do not call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong> or <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> from work queue threads. For more information about work queues, see Work Queues. </p><p>This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFBeginRegisterWorkQueueWithMMCSS']/*\"/>\t\n            <msdn-id>ms702238</msdn-id>\t\n            <unmanaged>HRESULT MFBeginRegisterWorkQueueWithMMCSS([In] unsigned int dwWorkQueueId,[In] const wchar_t* wszClass,[In] unsigned int dwTaskId,[In] IMFAsyncCallback* pDoneCallback,[In] IUnknown* pDoneState)</unmanaged>\t\n            <unmanaged-short>MFBeginRegisterWorkQueueWithMMCSS</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.UnlockWorkQueue(System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Unlocks a work queue.</p>\t\n            </summary>\t\n            <param name=\"dwWorkQueue\"><dd> <p>Identifier for the work queue to be unlocked. The identifier is returned by the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.AllocateWorkQueue(System.Int32@)\"/></strong> function.</p> </dd></param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The function succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>The application must call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.UnlockWorkQueue(System.Int32)\"/></strong> once for every call to <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.AllocateWorkQueue(System.Int32@)\"/></strong> and then once for every call to <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.LockWorkQueue(System.Int32)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFUnlockWorkQueue']/*\"/>\t\n            <msdn-id>aa372543</msdn-id>\t\n            <unmanaged>HRESULT MFUnlockWorkQueue([In] unsigned int dwWorkQueue)</unmanaged>\t\n            <unmanaged-short>MFUnlockWorkQueue</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CreateVideoMediaTypeFromSubtype(System.Guid,SharpDX.MediaFoundation.VideoMediaType@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Initializes Microsoft Media Foundation.</p>\t\n            </summary>\t\n            <param name=\"aMSubtypeRef\"><dd> <p>Version number. Use the value <strong><see cref=\"F:SharpDX.MediaFoundation.MediaFactory.Version\"/></strong>, defined in mfapi.h.</p> </dd></param>\t\n            <param name=\"iVideoMediaTypeOut\"><dd> <p>This parameter is optional when using C++ but required in C. The value must be one of the following flags: </p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td> <dl> <dt>MFSTARTUP_NOSOCKET</dt> </dl> </td><td> <p> Do not initialize the sockets library. </p> </td></tr> <tr><td> <dl> <dt>MFSTARTUP_LITE</dt> </dl> </td><td> <p> Equivalent to MFSTARTUP_NOSOCKET. </p> </td></tr> <tr><td> <dl> <dt>MFSTARTUP_FULL</dt> </dl> </td><td> <p> Initialize the entire Media Foundation platform. This is the default value when <em>dwFlags</em> is not specified. </p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.BadStartupVersion\"/></strong></dt> </dl> </td><td> <p> The <em>Version</em> parameter requires a newer version of Media Foundation than the version that is running.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.DisabledInSafemode\"/></strong></dt> </dl> </td><td> <p> The Media Foundation platform is disabled because the system was started in \"Safe Mode\" (fail-safe boot). </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> An application must call this function before using Media Foundation. Before your application quits, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> once for every previous call to <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong>. </p><p> Do not call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong> or <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> from work queue threads. For more information about work queues, see Work Queues. </p><p>This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCreateVideoMediaTypeFromSubtype']/*\"/>\t\n            <msdn-id>ms702238</msdn-id>\t\n            <unmanaged>HRESULT MFCreateVideoMediaTypeFromSubtype([In] const GUID* pAMSubtype,[Out] IMFVideoMediaType** ppIVideoMediaType)</unmanaged>\t\n            <unmanaged-short>MFCreateVideoMediaTypeFromSubtype</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CreateSample(SharpDX.MediaFoundation.Sample@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Creates an empty media sample.</p>\t\n            </summary>\t\n            <param name=\"iMFSampleOut\"><dd> <p>Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.Sample\"/></strong> interface of the media sample. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The function succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>Initially the sample does not contain any media buffers.</p><p>This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCreateSample']/*\"/>\t\n            <msdn-id>ms702276</msdn-id>\t\n            <unmanaged>HRESULT MFCreateSample([Out] IMFSample** ppIMFSample)</unmanaged>\t\n            <unmanaged-short>MFCreateSample</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CreateMediaTypeFromRepresentation(System.Guid,System.IntPtr,SharpDX.MediaFoundation.MediaType@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Creates a Media Foundation media type from another format representation.</p>\t\n            </summary>\t\n            <param name=\"guidRepresentation\"><dd> <p><see cref=\"T:System.Guid\"/> that specifies which format representation to convert. The following value is defined.</p> <table> <tr><th><see cref=\"T:System.Guid\"/></th><th>Description</th></tr> <tr><td>AM_MEDIA_TYPE_REPRESENTATION</td><td>Convert a DirectShow <strong><see cref=\"!:SharpDX.Win32.Unsupported.AMMediaType\"/></strong> structure.</td></tr> </table> <p>?</p> </dd></param>\t\n            <param name=\"vRepresentationRef\"><dd> <p>Pointer to a buffer that contains the format representation to convert. The layout of the buffer depends on the value of <em>guidRepresentation</em>.</p> </dd></param>\t\n            <param name=\"iMediaTypeOut\"><dd> <p>Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaType\"/></strong> interface. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The function succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.UnsupportedRepresentation\"/></strong></dt> </dl> </td><td> <p>The <see cref=\"T:System.Guid\"/> specified in <em>guidRepresentation</em> is not supported.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>If the original format is a DirectShow audio media type, and the format type is not recognized, the function sets the following attributes on the converted media type.</p><table> <tr><th>Attribute</th><th>Description</th></tr> <tr><td> <strong><see cref=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.AmFormatType\"/></strong> </td><td>Contains the format type <see cref=\"T:System.Guid\"/>.</td></tr> <tr><td> <strong><see cref=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.UserData\"/></strong> </td><td>Contains the format block.</td></tr> </table><p>?</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCreateMediaTypeFromRepresentation']/*\"/>\t\n            <msdn-id>aa369931</msdn-id>\t\n            <unmanaged>HRESULT MFCreateMediaTypeFromRepresentation([In] GUID guidRepresentation,[In] void* pvRepresentation,[Out] IMFMediaType** ppIMediaType)</unmanaged>\t\n            <unmanaged-short>MFCreateMediaTypeFromRepresentation</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CreateAttributes(SharpDX.MediaFoundation.MediaAttributes,System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Creates an empty attribute store. </p>\t\n            </summary>\t\n            <param name=\"mFAttributesOut\"><dd> <p>Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaAttributes\"/></strong> interface. The caller must release the interface. </p> </dd></param>\t\n            <param name=\"cInitialSize\"><dd> <p>The initial number of elements allocated for the attribute store. The attribute store grows as needed. </p> </dd></param>\t\n            <returns><p>If this function succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>Attributes are used throughout Microsoft Media Foundation to configure objects, describe media formats, query object properties, and other purposes. For more information, see Attributes in Media Foundation.</p><p>For a complete list of all the defined attribute GUIDs in Media Foundation, see Media Foundation Attributes.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCreateAttributes']/*\"/>\t\n            <msdn-id>ms701878</msdn-id>\t\n            <unmanaged>HRESULT MFCreateAttributes([Out, Fast] IMFAttributes** ppMFAttributes,[In] unsigned int cInitialSize)</unmanaged>\t\n            <unmanaged-short>MFCreateAttributes</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.GetStrideForBitmapInfoHeader(System.Int32,System.Int32,System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Calculates the minimum surface stride for a video format. </p>\t\n            </summary>\t\n            <param name=\"format\"><dd> <p>FOURCC code or <strong><see cref=\"T:SharpDX.Direct3D9.Format\"/></strong> value that specifies the video format. If you have a video subtype <see cref=\"T:System.Guid\"/>, you can use the first <strong>DWORD</strong> of the subtype.</p> </dd></param>\t\n            <param name=\"dwWidth\"><dd> <p>Width of the image, in pixels.</p> </dd></param>\t\n            <param name=\"strideRef\"><dd> <p>Receives the minimum surface stride, in pixels.</p> </dd></param>\t\n            <returns><p>If this function succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p> This function calculates the minimum stride needed to hold the image in memory. Use this function if you are allocating buffers in system memory. Surfaces allocated in video memory might require a larger stride, depending on the graphics card. </p><p> If you are working with a DirectX surface buffer, use the <strong><see cref=\"M:SharpDX.MediaFoundation.Buffer2D.Lock2D(System.Byte@,System.Int32)\"/></strong> method to find the surface stride. </p><p> For planar YUV formats, this function returns the stride for the Y plane. Depending on the format, the chroma planes might have a different stride. </p><p><strong>Note</strong>??Prior to Windows?7, this function was exported from evr.dll. Starting in Windows?7, this function is exported from mfplat.dll, and evr.dll exports a stub function that calls into mfplat.dll. For more information, see Library Changes in Windows?7.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFGetStrideForBitmapInfoHeader']/*\"/>\t\n            <msdn-id>aa473720</msdn-id>\t\n            <unmanaged>HRESULT MFGetStrideForBitmapInfoHeader([In] unsigned int format,[In] unsigned int dwWidth,[Out] int* pStride)</unmanaged>\t\n            <unmanaged-short>MFGetStrideForBitmapInfoHeader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.HeapFree(System.IntPtr)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Initializes Microsoft Media Foundation.</p>\t\n            </summary>\t\n            <param name=\"vRef\"><dd> <p>Version number. Use the value <strong><see cref=\"F:SharpDX.MediaFoundation.MediaFactory.Version\"/></strong>, defined in mfapi.h.</p> </dd></param>\t\n            <remarks>\t\n            <p> An application must call this function before using Media Foundation. Before your application quits, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> once for every previous call to <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong>. </p><p> Do not call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong> or <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> from work queue threads. For more information about work queues, see Work Queues. </p><p>This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFHeapFree']/*\"/>\t\n            <msdn-id>ms702238</msdn-id>\t\n            <unmanaged>void MFHeapFree([In] void* pv)</unmanaged>\t\n            <unmanaged-short>MFHeapFree</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.HeapAlloc(System.Int32,System.Int32,System.String,System.Int32,SharpDX.MediaFoundation.EAllocationType)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Initializes Microsoft Media Foundation.</p>\t\n            </summary>\t\n            <param name=\"nSize\"><dd> <p>Version number. Use the value <strong><see cref=\"F:SharpDX.MediaFoundation.MediaFactory.Version\"/></strong>, defined in mfapi.h.</p> </dd></param>\t\n            <param name=\"dwFlags\"><dd> <p>This parameter is optional when using C++ but required in C. The value must be one of the following flags: </p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td> <dl> <dt>MFSTARTUP_NOSOCKET</dt> </dl> </td><td> <p> Do not initialize the sockets library. </p> </td></tr> <tr><td> <dl> <dt>MFSTARTUP_LITE</dt> </dl> </td><td> <p> Equivalent to MFSTARTUP_NOSOCKET. </p> </td></tr> <tr><td> <dl> <dt>MFSTARTUP_FULL</dt> </dl> </td><td> <p> Initialize the entire Media Foundation platform. This is the default value when <em>dwFlags</em> is not specified. </p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <param name=\"szFileRef\">No documentation.</param>\t\n            <param name=\"line\">No documentation.</param>\t\n            <param name=\"eat\">No documentation.</param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.BadStartupVersion\"/></strong></dt> </dl> </td><td> <p> The <em>Version</em> parameter requires a newer version of Media Foundation than the version that is running.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.DisabledInSafemode\"/></strong></dt> </dl> </td><td> <p> The Media Foundation platform is disabled because the system was started in \"Safe Mode\" (fail-safe boot). </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> An application must call this function before using Media Foundation. Before your application quits, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> once for every previous call to <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong>. </p><p> Do not call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong> or <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> from work queue threads. For more information about work queues, see Work Queues. </p><p>This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFHeapAlloc']/*\"/>\t\n            <msdn-id>ms702238</msdn-id>\t\n            <unmanaged>void* MFHeapAlloc([In] unsigned int nSize,[In] unsigned int dwFlags,[In, Optional] char* pszFile,[In] int line,[In] EAllocationType eat)</unmanaged>\t\n            <unmanaged-short>MFHeapAlloc</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CreateCollection(SharpDX.MediaFoundation.Collection@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Creates an empty collection object.</p>\t\n            </summary>\t\n            <param name=\"iMFCollectionOut\"><dd> <p>Receives a reference to the collection object's <strong><see cref=\"T:SharpDX.MediaFoundation.Collection\"/></strong> interface. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCreateCollection']/*\"/>\t\n            <msdn-id>ms698852</msdn-id>\t\n            <unmanaged>HRESULT MFCreateCollection([Out] IMFCollection** ppIMFCollection)</unmanaged>\t\n            <unmanaged-short>MFCreateCollection</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.ScheduleWorkItem(SharpDX.MediaFoundation.AsyncCallback,SharpDX.ComObject,System.Int64,System.Int64@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Schedules an asynchronous operation to be completed after a specified interval.</p>\t\n            </summary>\t\n            <param name=\"callbackRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.AsyncCallback\"/></strong> interface. The caller must implement this interface.</p> </dd></param>\t\n            <param name=\"stateRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interface of a state object, defined by the caller. This parameter can be <strong><c>null</c></strong>. You can use this object to hold state information. The object is returned to the caller when the callback is invoked.</p> </dd></param>\t\n            <param name=\"timeout\"><dd> <p>Time-out interval, in milliseconds. Set this parameter to a negative value. The callback is invoked after ?<em>Timeout</em> milliseconds. For example, if <em>Timeout</em> is ?5000, the callback is invoked after 5000 milliseconds.</p> </dd></param>\t\n            <param name=\"keyRef\"><dd> <p>Receives a key that can be used to cancel the timer. To cancel the timer, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CancelWorkItem(System.Int64)\"/></strong> and pass this key in the <em>Key</em> parameter.</p> </dd></param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The function succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>This function creates an asynchronous result object. When the timer interval elapses, the <strong><see cref=\"M:SharpDX.MediaFoundation.AsyncCallback.Invoke(SharpDX.MediaFoundation.AsyncResult)\"/></strong> method specified by <em>pCallback</em> is called.</p><p>This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFScheduleWorkItem']/*\"/>\t\n            <msdn-id>ms703045</msdn-id>\t\n            <unmanaged>HRESULT MFScheduleWorkItem([In] IMFAsyncCallback* pCallback,[In] IUnknown* pState,[In] longlong Timeout,[Out, Optional] unsigned longlong* pKey)</unmanaged>\t\n            <unmanaged-short>MFScheduleWorkItem</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.AverageTimePerFrameToFrameRate(System.Int64,System.Int32@,System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Converts a video frame rate into a frame duration.</p>\t\n            </summary>\t\n            <param name=\"unAverageTimePerFrame\"><dd> <p>The numerator of the frame rate. </p> </dd></param>\t\n            <param name=\"unNumeratorRef\"><dd> <p> The denominator of the frame rate. </p> </dd></param>\t\n            <param name=\"unDenominatorRef\"><dd> <p> Receives the average duration of a video frame, in 100-nanosecond units. </p> </dd></param>\t\n            <returns><p>If this function succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>This function is useful for calculating time stamps on a sample, given the frame rate.</p><p>Also, average time per frame is used in the older <strong><see cref=\"!:SharpDX.Win32.Unsupported.VideoInfoHeader\"/></strong> and <strong><see cref=\"!:SharpDX.MediaFoundation.VideoInformationHeader2\"/></strong> format structures. This function provides a standard conversion so that all components in the pipeline can use consistent values, if they need to translate between the older format structures and the media type attributes used in Media Foundation.</p><p> For certain common frame rates, the function gets the frame duration from a look-up table:</p><table> <tr><th>Frames per second (floating point)</th><th>Frames per second (fractional)</th><th>Average time per frame</th></tr> <tr><td>59.94</td><td>60000/1001</td><td>166833</td></tr> <tr><td>29.97</td><td>30000/1001</td><td>333667</td></tr> <tr><td>23.976</td><td>24000/1001</td><td>417188</td></tr> <tr><td>60</td><td>60/1</td><td>166667</td></tr> <tr><td>30</td><td>30/1</td><td>333333</td></tr> <tr><td>50</td><td>50/1</td><td>200000</td></tr> <tr><td>25</td><td>25/1</td><td>400000</td></tr> <tr><td>24</td><td>24/1</td><td>416667</td></tr> </table><p>?</p><p> Most video content uses one of the frame rates listed here. For other frame rates, the function calculates the duration.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFAverageTimePerFrameToFrameRate']/*\"/>\t\n            <msdn-id>aa370467</msdn-id>\t\n            <unmanaged>HRESULT MFAverageTimePerFrameToFrameRate([In] unsigned longlong unAverageTimePerFrame,[Out] unsigned int* punNumerator,[Out] unsigned int* punDenominator)</unmanaged>\t\n            <unmanaged-short>MFAverageTimePerFrameToFrameRate</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.TRegisterLocal(SharpDX.ComObject,System.Guid,System.String,System.Int32,System.Int32,SharpDX.MediaFoundation.TRegisterTypeInformation[],System.Int32,SharpDX.MediaFoundation.TRegisterTypeInformation[])\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Registers a Media Foundation transform (MFT) in the caller's process.</p>\t\n            </summary>\t\n            <param name=\"classFactoryRef\"><dd> <p>A reference to the <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interface of a class factory object. The class factory creates the MFT.</p> </dd></param>\t\n            <param name=\"guidCategory\"><dd> <p>A <see cref=\"T:System.Guid\"/> that specifies the category of the MFT. For a list of MFT categories, see <strong>MFT_CATEGORY</strong>.</p> </dd></param>\t\n            <param name=\"szNameRef\"><dd> <p>A wide-character null-terminated string that contains the friendly name of the MFT.</p> </dd></param>\t\n            <param name=\"flags\"><dd> <p>A bitwise <strong>OR</strong> of zero or more flags from the <strong>_MFT_ENUM_FLAG</strong> enumeration.</p> </dd></param>\t\n            <param name=\"cInputTypes\"><dd> <p>The number of elements in the <em>pInputTypes</em> array.</p> </dd></param>\t\n            <param name=\"inputTypesRef\"><dd> <p>A reference to an array of <strong><see cref=\"T:SharpDX.MediaFoundation.TRegisterTypeInformation\"/></strong> structures. Each member of the array specifies an input format that the MFT supports. This parameter can be <strong><c>null</c></strong> if <em>cInputTypes</em> is zero.</p> </dd></param>\t\n            <param name=\"cOutputTypes\"><dd> <p>The number of elements in the <em>pOutputTypes</em> array.</p> </dd></param>\t\n            <param name=\"outputTypesRef\"><dd> <p>A reference to an array of <strong><see cref=\"T:SharpDX.MediaFoundation.TRegisterTypeInformation\"/></strong> structures. Each member of the array defines an output format that the MFT supports. This parameter can be <strong><c>null</c></strong> if <em>cOutputTypes</em> is zero.</p> </dd></param>\t\n            <returns><p>If this function succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>The primary purpose of this function is to make an MFT available for automatic topology resolution without making the MFT available to other processes or applications.</p><p>After you call this function, the MFT can be enumerated by calling the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.TEnumEx(System.Guid,System.Int32,System.Nullable{SharpDX.MediaFoundation.TRegisterTypeInformation},System.Nullable{SharpDX.MediaFoundation.TRegisterTypeInformation},System.IntPtr@,System.Int32@)\"/></strong> function with the <strong><see cref=\"F:SharpDX.MediaFoundation.TransformEnumFlag.Localmft\"/></strong> flag. The MFT can be enumerated from within the same process, but is not visible to other processes.</p><p>The <em>pClassFactory</em> parameter specifies a class factory object that creates the MFT. The class factory's <strong>IClassFactory::CreateInstance</strong> method must return an object that supports the <strong><see cref=\"T:SharpDX.MediaFoundation.Transform\"/></strong> interface.</p><p><strong>Note</strong>??The <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.TEnumEx(System.Guid,System.Int32,System.Nullable{SharpDX.MediaFoundation.TRegisterTypeInformation},System.Nullable{SharpDX.MediaFoundation.TRegisterTypeInformation},System.IntPtr@,System.Int32@)\"/></strong> function retrieves a list of <strong><see cref=\"T:SharpDX.MediaFoundation.Activate\"/></strong> references. However, the class factory does not need to support the <strong><see cref=\"T:SharpDX.MediaFoundation.Activate\"/></strong> interface. Instead, the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.TEnumEx(System.Guid,System.Int32,System.Nullable{SharpDX.MediaFoundation.TRegisterTypeInformation},System.Nullable{SharpDX.MediaFoundation.TRegisterTypeInformation},System.IntPtr@,System.Int32@)\"/></strong> function provides an implementation of <strong><see cref=\"T:SharpDX.MediaFoundation.Activate\"/></strong> that wraps the class factory.</p><p>To unregister the MFT from the current process, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.TUnregisterLocal(SharpDX.ComObject)\"/></strong>.</p><p>If you need to register an MFT in the Protected Media Path (PMP) process, use the <strong><see cref=\"T:SharpDX.MediaFoundation.LocalMFTRegistration\"/></strong> interface.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFTRegisterLocal']/*\"/>\t\n            <msdn-id>dd388656</msdn-id>\t\n            <unmanaged>HRESULT MFTRegisterLocal([In] IClassFactory* pClassFactory,[In] const GUID&amp; guidCategory,[In] const wchar_t* pszName,[In] unsigned int Flags,[In] unsigned int cInputTypes,[In, Buffer, Optional] const MFT_REGISTER_TYPE_INFO* pInputTypes,[In] unsigned int cOutputTypes,[In, Buffer, Optional] const MFT_REGISTER_TYPE_INFO* pOutputTypes)</unmanaged>\t\n            <unmanaged-short>MFTRegisterLocal</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.AllocateWorkQueueEx(SharpDX.MediaFoundation.AsyncWorkqueueType,System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Creates a new work queue. This function extends the capabilities of the  <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.AllocateWorkQueue(System.Int32@)\"/></strong> function by making it possible to create a  work queue that has a message loop.</p>\t\n            </summary>\t\n            <param name=\"workQueueType\">No documentation.</param>\t\n            <param name=\"dwWorkQueueRef\">No documentation.</param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The function succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong>E_FAIL</strong></dt> </dl> </td><td> <p>The application exceeded the maximum number of work queues.</p> </td></tr> <tr><td> <dl> <dt><strong>E_INVALIDARG</strong></dt> </dl> </td><td> <p>Invalid argument.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/></strong></dt> </dl> </td><td> <p>The application did not call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong>, or the application has already called <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong>.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>When you are done using the work queue, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.UnlockWorkQueue(System.Int32)\"/></strong>.</p><p>The <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.AllocateWorkQueue(System.Int32@)\"/></strong> function is equivalent to calling <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.AllocateWorkQueueEx(SharpDX.MediaFoundation.AsyncWorkqueueType,System.Int32@)\"/></strong> with the value <see cref=\"F:SharpDX.MediaFoundation.AsyncWorkqueueType.MfStandardWorkqueue\"/> for the <em>WorkQueueType</em> parameter.</p><p>This function is available on Windows?Vista if Platform Update Supplement for Windows?Vista is installed.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFAllocateWorkQueueEx']/*\"/>\t\n            <msdn-id>dd375150</msdn-id>\t\n            <unmanaged>HRESULT MFAllocateWorkQueueEx([In] MFASYNC_WORKQUEUE_TYPE WorkQueueType,[Out] unsigned int* pdwWorkQueue)</unmanaged>\t\n            <unmanaged-short>MFAllocateWorkQueueEx</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.GetWorkQueueMMCSSClass(System.Int32,System.IntPtr,System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Initializes Microsoft Media Foundation.</p>\t\n            </summary>\t\n            <param name=\"dwWorkQueueId\"><dd> <p>Version number. Use the value <strong><see cref=\"F:SharpDX.MediaFoundation.MediaFactory.Version\"/></strong>, defined in mfapi.h.</p> </dd></param>\t\n            <param name=\"wszClassRef\"><dd> <p>This parameter is optional when using C++ but required in C. The value must be one of the following flags: </p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td> <dl> <dt>MFSTARTUP_NOSOCKET</dt> </dl> </td><td> <p> Do not initialize the sockets library. </p> </td></tr> <tr><td> <dl> <dt>MFSTARTUP_LITE</dt> </dl> </td><td> <p> Equivalent to MFSTARTUP_NOSOCKET. </p> </td></tr> <tr><td> <dl> <dt>MFSTARTUP_FULL</dt> </dl> </td><td> <p> Initialize the entire Media Foundation platform. This is the default value when <em>dwFlags</em> is not specified. </p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <param name=\"cchClassRef\">No documentation.</param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.BadStartupVersion\"/></strong></dt> </dl> </td><td> <p> The <em>Version</em> parameter requires a newer version of Media Foundation than the version that is running.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.DisabledInSafemode\"/></strong></dt> </dl> </td><td> <p> The Media Foundation platform is disabled because the system was started in \"Safe Mode\" (fail-safe boot). </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> An application must call this function before using Media Foundation. Before your application quits, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> once for every previous call to <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong>. </p><p> Do not call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong> or <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> from work queue threads. For more information about work queues, see Work Queues. </p><p>This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFGetWorkQueueMMCSSClass']/*\"/>\t\n            <msdn-id>ms702238</msdn-id>\t\n            <unmanaged>HRESULT MFGetWorkQueueMMCSSClass([In] unsigned int dwWorkQueueId,[Out, Buffer, Optional] wchar_t* pwszClass,[InOut] unsigned int* pcchClass)</unmanaged>\t\n            <unmanaged-short>MFGetWorkQueueMMCSSClass</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CreateAsyncResult(SharpDX.ComObject,SharpDX.MediaFoundation.AsyncCallback,SharpDX.ComObject,SharpDX.MediaFoundation.AsyncResult@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Creates an asynchronous result object. Use this function if you are implementing an asynchronous method.</p>\t\n            </summary>\t\n            <param name=\"unkObjectRef\"><dd> <p>Pointer to the object stored in the asynchronous result. This reference is returned by the <strong><see cref=\"M:SharpDX.MediaFoundation.AsyncResult.GetObjectW(SharpDX.ComObject@)\"/></strong> method. This parameter can be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"callbackRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.AsyncCallback\"/></strong> interface. This interface is implemented by the caller of the asynchronous method.</p> </dd></param>\t\n            <param name=\"unkStateRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interface of a state object. This value is provided by the caller of the asynchronous method. This parameter can be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"asyncResultOut\"><dd> <p>Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.AsyncResult\"/></strong> interface. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The function succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>To invoke the callback specified in <em>pCallback</em>, call the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.InvokeCallback(SharpDX.MediaFoundation.AsyncResult)\"/></strong> function.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCreateAsyncResult']/*\"/>\t\n            <msdn-id>ms698952</msdn-id>\t\n            <unmanaged>HRESULT MFCreateAsyncResult([In] IUnknown* punkObject,[In] IMFAsyncCallback* pCallback,[In] IUnknown* punkState,[Out] IMFAsyncResult** ppAsyncResult)</unmanaged>\t\n            <unmanaged-short>MFCreateAsyncResult</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.GetPlaneSize(System.Int32,System.Int32,System.Int32,System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Initializes Microsoft Media Foundation.</p>\t\n            </summary>\t\n            <param name=\"format\"><dd> <p>Version number. Use the value <strong><see cref=\"F:SharpDX.MediaFoundation.MediaFactory.Version\"/></strong>, defined in mfapi.h.</p> </dd></param>\t\n            <param name=\"dwWidth\"><dd> <p>This parameter is optional when using C++ but required in C. The value must be one of the following flags: </p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td> <dl> <dt>MFSTARTUP_NOSOCKET</dt> </dl> </td><td> <p> Do not initialize the sockets library. </p> </td></tr> <tr><td> <dl> <dt>MFSTARTUP_LITE</dt> </dl> </td><td> <p> Equivalent to MFSTARTUP_NOSOCKET. </p> </td></tr> <tr><td> <dl> <dt>MFSTARTUP_FULL</dt> </dl> </td><td> <p> Initialize the entire Media Foundation platform. This is the default value when <em>dwFlags</em> is not specified. </p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <param name=\"dwHeight\">No documentation.</param>\t\n            <param name=\"dwPlaneSizeRef\">No documentation.</param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.BadStartupVersion\"/></strong></dt> </dl> </td><td> <p> The <em>Version</em> parameter requires a newer version of Media Foundation than the version that is running.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.DisabledInSafemode\"/></strong></dt> </dl> </td><td> <p> The Media Foundation platform is disabled because the system was started in \"Safe Mode\" (fail-safe boot). </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> An application must call this function before using Media Foundation. Before your application quits, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> once for every previous call to <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong>. </p><p> Do not call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong> or <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> from work queue threads. For more information about work queues, see Work Queues. </p><p>This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFGetPlaneSize']/*\"/>\t\n            <msdn-id>ms702238</msdn-id>\t\n            <unmanaged>HRESULT MFGetPlaneSize([In] unsigned int format,[In] unsigned int dwWidth,[In] unsigned int dwHeight,[Out] unsigned int* pdwPlaneSize)</unmanaged>\t\n            <unmanaged-short>MFGetPlaneSize</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.InvokeCallback(SharpDX.MediaFoundation.AsyncResult)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Invokes a callback method to complete an asynchronous operation. </p>\t\n            </summary>\t\n            <param name=\"asyncResultRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.AsyncResult\"/></strong> interface. To create this object, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateAsyncResult(SharpDX.ComObject,SharpDX.MediaFoundation.AsyncCallback,SharpDX.ComObject,SharpDX.MediaFoundation.AsyncResult@)\"/></strong>.</p> </dd></param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></strong></dt> </dl> </td><td> <p> The function succeeded. </p> </td></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidWorkqueue\"/></strong></strong></dt> </dl> </td><td> <p>Invalid work queue. For more information, see <strong><see cref=\"M:SharpDX.MediaFoundation.AsyncCallback.GetParameters(System.Int32@,System.Int32@)\"/></strong>.</p> </td></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/></strong></strong></dt> </dl> </td><td> <p>The <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> function was called to shut down the Media Foundation platform.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> If you are implementing an asynchronous method, use this function to invoke the caller's <strong><see cref=\"M:SharpDX.MediaFoundation.AsyncCallback.Invoke(SharpDX.MediaFoundation.AsyncResult)\"/></strong> method.</p><p>The callback is invoked from a Media Foundation work queue. For more information, see Writing an Asynchronous Method.</p><p>The <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> function shuts down the work queue threads, so the callback is not guaranteed to be invoked after <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> is called.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFInvokeCallback']/*\"/>\t\n            <msdn-id>ms695400</msdn-id>\t\n            <unmanaged>HRESULT MFInvokeCallback([In] IMFAsyncResult* pAsyncResult)</unmanaged>\t\n            <unmanaged-short>MFInvokeCallback</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CreateFile(SharpDX.MediaFoundation.FileAccessMode,SharpDX.MediaFoundation.FileOpenMode,SharpDX.MediaFoundation.FileFlags,System.String,SharpDX.MediaFoundation.IByteStream@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Creates a byte stream from a file. </p>\t\n            </summary>\t\n            <param name=\"accessMode\"><dd> <p> The requested access mode, specified as a member of the <strong><see cref=\"T:SharpDX.MediaFoundation.FileAccessMode\"/></strong> enumeration. </p> </dd></param>\t\n            <param name=\"openMode\"><dd> <p> The behavior of the function if the file already exists or does not exist, specified as a member of the <strong><see cref=\"T:SharpDX.MediaFoundation.FileOpenMode\"/></strong> enumeration. </p> </dd></param>\t\n            <param name=\"fFlags\"><dd> <p> Bitwise <strong>OR</strong> of values from the <strong><see cref=\"T:SharpDX.MediaFoundation.FileFlags\"/></strong> enumeration. </p> </dd></param>\t\n            <param name=\"wszFileURLRef\"><dd> <p> Pointer to a null-terminated string that contains the file name. </p> </dd></param>\t\n            <param name=\"iByteStreamOut\"><dd> <p> Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.IByteStream\"/></strong> interface of the byte stream. The caller must release the interface. </p> </dd></param>\t\n            <returns><p>If this function succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCreateFile']/*\"/>\t\n            <msdn-id>ms696166</msdn-id>\t\n            <unmanaged>HRESULT MFCreateFile([In] MF_FILE_ACCESSMODE AccessMode,[In] MF_FILE_OPENMODE OpenMode,[In] MF_FILE_FLAGS fFlags,[In] const wchar_t* pwszFileURL,[Out] IMFByteStream** ppIByteStream)</unmanaged>\t\n            <unmanaged-short>MFCreateFile</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.LlMulDiv(System.Int64,System.Int64,System.Int64,System.Int64)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Calculates ((a * b) + d) / c, where each term is a 64-bit signed value.</p>\t\n            </summary>\t\n            <param name=\"a\"><dd> <p>A multiplier.</p> </dd></param>\t\n            <param name=\"b\"><dd> <p>Another multiplier.</p> </dd></param>\t\n            <param name=\"c\"><dd> <p>The divisor.</p> </dd></param>\t\n            <param name=\"d\"><dd> <p>The rounding factor.</p> </dd></param>\t\n            <returns><p>Returns the result of the calculation. If numeric overflow occurs, the function returns _I64_MAX (positive overflow) or LLONG_MIN (negative overflow). If Mfplat.dll cannot be loaded, the function returns _I64_MAX.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??A previous version of this topic described the parameters incorrectly. The divisor is <em>c</em> and the rounding factor is <em>d</em>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFllMulDiv']/*\"/>\t\n            <msdn-id>dd388510</msdn-id>\t\n            <unmanaged>longlong MFllMulDiv([In] longlong a,[In] longlong b,[In] longlong c,[In] longlong d)</unmanaged>\t\n            <unmanaged-short>MFllMulDiv</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Shuts down the Microsoft Media Foundation platform. Call this function once for every call to <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong>. Do not call this function from work queue threads.</p>\t\n            </summary>\t\n            <returns><p>If this function succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFShutdown']/*\"/>\t\n            <msdn-id>ms694273</msdn-id>\t\n            <unmanaged>HRESULT MFShutdown()</unmanaged>\t\n            <unmanaged-short>MFShutdown</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.EndUnregisterWorkQueueWithMMCSS(SharpDX.MediaFoundation.AsyncResult)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Initializes Microsoft Media Foundation.</p>\t\n            </summary>\t\n            <param name=\"resultRef\"><dd> <p>Version number. Use the value <strong><see cref=\"F:SharpDX.MediaFoundation.MediaFactory.Version\"/></strong>, defined in mfapi.h.</p> </dd></param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.BadStartupVersion\"/></strong></dt> </dl> </td><td> <p> The <em>Version</em> parameter requires a newer version of Media Foundation than the version that is running.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.DisabledInSafemode\"/></strong></dt> </dl> </td><td> <p> The Media Foundation platform is disabled because the system was started in \"Safe Mode\" (fail-safe boot). </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> An application must call this function before using Media Foundation. Before your application quits, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> once for every previous call to <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong>. </p><p> Do not call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong> or <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> from work queue threads. For more information about work queues, see Work Queues. </p><p>This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFEndUnregisterWorkQueueWithMMCSS']/*\"/>\t\n            <msdn-id>ms702238</msdn-id>\t\n            <unmanaged>HRESULT MFEndUnregisterWorkQueueWithMMCSS([In] IMFAsyncResult* pResult)</unmanaged>\t\n            <unmanaged-short>MFEndUnregisterWorkQueueWithMMCSS</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CalculateImageSize(System.Guid,System.Int32,System.Int32,System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Initializes Microsoft Media Foundation.</p>\t\n            </summary>\t\n            <param name=\"guidSubtype\"><dd> <p>Version number. Use the value <strong><see cref=\"F:SharpDX.MediaFoundation.MediaFactory.Version\"/></strong>, defined in mfapi.h.</p> </dd></param>\t\n            <param name=\"unWidth\"><dd> <p>This parameter is optional when using C++ but required in C. The value must be one of the following flags: </p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td> <dl> <dt>MFSTARTUP_NOSOCKET</dt> </dl> </td><td> <p> Do not initialize the sockets library. </p> </td></tr> <tr><td> <dl> <dt>MFSTARTUP_LITE</dt> </dl> </td><td> <p> Equivalent to MFSTARTUP_NOSOCKET. </p> </td></tr> <tr><td> <dl> <dt>MFSTARTUP_FULL</dt> </dl> </td><td> <p> Initialize the entire Media Foundation platform. This is the default value when <em>dwFlags</em> is not specified. </p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <param name=\"unHeight\">No documentation.</param>\t\n            <param name=\"cbImageSizeRef\">No documentation.</param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.BadStartupVersion\"/></strong></dt> </dl> </td><td> <p> The <em>Version</em> parameter requires a newer version of Media Foundation than the version that is running.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.DisabledInSafemode\"/></strong></dt> </dl> </td><td> <p> The Media Foundation platform is disabled because the system was started in \"Safe Mode\" (fail-safe boot). </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> An application must call this function before using Media Foundation. Before your application quits, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> once for every previous call to <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong>. </p><p> Do not call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong> or <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> from work queue threads. For more information about work queues, see Work Queues. </p><p>This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCalculateImageSize']/*\"/>\t\n            <msdn-id>ms702238</msdn-id>\t\n            <unmanaged>HRESULT MFCalculateImageSize([In] const GUID&amp; guidSubtype,[In] unsigned int unWidth,[In] unsigned int unHeight,[Out] unsigned int* pcbImageSize)</unmanaged>\t\n            <unmanaged-short>MFCalculateImageSize</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CreateAlignedMemoryBuffer(System.Int32,System.Int32,SharpDX.MediaFoundation.MediaBuffer@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Allocates system memory with a specified byte alignment and creates a media buffer to manage the memory. </p>\t\n            </summary>\t\n            <param name=\"cbMaxLength\"><dd> <p>Size of the buffer, in bytes.</p> </dd></param>\t\n            <param name=\"cbAligment\"><dd> <p> Specifies the memory alignment for the buffer. Use one of the following constants. </p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td><dl> <dt><strong>MF_1_BYTE_ALIGNMENT</strong></dt> <dt>0x00000000</dt> </dl> </td><td> <p> Align to 1 bytes. </p> </td></tr> <tr><td><dl> <dt><strong>MF_2_BYTE_ALIGNMENT</strong></dt> <dt>0x00000001</dt> </dl> </td><td> <p> Align to 2 bytes. </p> </td></tr> <tr><td><dl> <dt><strong>MF_4_BYTE_ALIGNMENT</strong></dt> <dt>0x00000003</dt> </dl> </td><td> <p> Align to 4 bytes. </p> </td></tr> <tr><td><dl> <dt><strong>MF_8_BYTE_ALIGNMENT</strong></dt> <dt>0x00000007</dt> </dl> </td><td> <p> Align to 8 bytes. </p> </td></tr> <tr><td><dl> <dt><strong>MF_16_BYTE_ALIGNMENT</strong></dt> <dt>0x0000000F</dt> </dl> </td><td> <p> Align to 16 bytes. </p> </td></tr> <tr><td><dl> <dt><strong>MF_32_BYTE_ALIGNMENT</strong></dt> <dt>0x0000001F</dt> </dl> </td><td> <p> Align to 32 bytes. </p> </td></tr> <tr><td><dl> <dt><strong>MF_64_BYTE_ALIGNMENT</strong></dt> <dt>0x0000003F</dt> </dl> </td><td> <p> Align to 64 bytes. </p> </td></tr> <tr><td><dl> <dt><strong>MF_128_BYTE_ALIGNMENT</strong></dt> <dt>0x0000007F</dt> </dl> </td><td> <p> Align to 128 bytes. </p> </td></tr> <tr><td><dl> <dt><strong>MF_256_BYTE_ALIGNMENT</strong></dt> <dt>0x000000FF</dt> </dl> </td><td> <p> Align to 256 bytes. </p> </td></tr> <tr><td><dl> <dt><strong>MF_512_BYTE_ALIGNMENT</strong></dt> <dt>0x000001FF</dt> </dl> </td><td> <p> Align to 512 bytes. </p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <param name=\"bufferOut\"><dd> <p> Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaBuffer\"/></strong> interface of the media buffer. The caller must release the interface. </p> </dd></param>\t\n            <returns><p> The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table. </p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></strong></dt> </dl> </td><td> <p> The function succeeded. </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> When the media buffer object is destroyed, it releases the allocated memory. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCreateAlignedMemoryBuffer']/*\"/>\t\n            <msdn-id>bb970523</msdn-id>\t\n            <unmanaged>HRESULT MFCreateAlignedMemoryBuffer([In] unsigned int cbMaxLength,[In] unsigned int cbAligment,[Out] IMFMediaBuffer** ppBuffer)</unmanaged>\t\n            <unmanaged-short>MFCreateAlignedMemoryBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.GetTimerPeriodicity(System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Initializes Microsoft Media Foundation.</p>\t\n            </summary>\t\n            <param name=\"periodicity\"><dd> <p>Version number. Use the value <strong><see cref=\"F:SharpDX.MediaFoundation.MediaFactory.Version\"/></strong>, defined in mfapi.h.</p> </dd></param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.BadStartupVersion\"/></strong></dt> </dl> </td><td> <p> The <em>Version</em> parameter requires a newer version of Media Foundation than the version that is running.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.DisabledInSafemode\"/></strong></dt> </dl> </td><td> <p> The Media Foundation platform is disabled because the system was started in \"Safe Mode\" (fail-safe boot). </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> An application must call this function before using Media Foundation. Before your application quits, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> once for every previous call to <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong>. </p><p> Do not call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong> or <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> from work queue threads. For more information about work queues, see Work Queues. </p><p>This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFGetTimerPeriodicity']/*\"/>\t\n            <msdn-id>ms702238</msdn-id>\t\n            <unmanaged>HRESULT MFGetTimerPeriodicity([Out] unsigned int* Periodicity)</unmanaged>\t\n            <unmanaged-short>MFGetTimerPeriodicity</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.ValidateMediaTypeSize(System.Guid,System.Byte[],System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Validates the size of a buffer for a video format block. </p>\t\n            </summary>\t\n            <param name=\"formatType\"><dd> <p><see cref=\"T:System.Guid\"/> that specifies the type of format block. It must be one of the following values:</p> <dl> <dt><strong>FORMAT_DvInfo</strong></dt> <dt><strong>FORMAT_MFVideoFormat</strong></dt> <dt><strong>FORMAT_MPEG2Video</strong></dt> <dt><strong>FORMAT_MPEGStreams</strong></dt> <dt><strong>FORMAT_MPEGVideo</strong></dt> <dt><strong>FORMAT_VideoInfo</strong></dt> <dt><strong>FORMAT_VideoInfo2</strong></dt> <dt><strong>FORMAT_WaveFormatEx</strong></dt> </dl> </dd></param>\t\n            <param name=\"blockRef\"><dd> <p> Pointer to a buffer that contains the format block. </p> </dd></param>\t\n            <param name=\"cbSize\"><dd> <p> Size of the <em>pBlock</em> buffer, in bytes. </p> </dd></param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The buffer that contains the format block is large enough. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidMediaType\"/></strong></dt> </dl> </td><td> <p> The buffer that contains the format block is too small, or the format block is not valid. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.UnsupportedFormat\"/></strong></dt> </dl> </td><td> <p> This function does not support the specified format type. </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFValidateMediaTypeSize']/*\"/>\t\n            <msdn-id>ms698993</msdn-id>\t\n            <unmanaged>HRESULT MFValidateMediaTypeSize([In] GUID FormatType,[In, Buffer, Optional] unsigned char* pBlock,[In] unsigned int cbSize)</unmanaged>\t\n            <unmanaged-short>MFValidateMediaTypeSize</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.GetAttributesAsBlobSize(SharpDX.MediaFoundation.MediaAttributes,System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves the size of the buffer needed for the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.GetAttributesAsBlob(SharpDX.MediaFoundation.MediaAttributes,System.Byte[],System.Int32)\"/></strong> function.</p>\t\n            </summary>\t\n            <param name=\"attributesRef\">No documentation.</param>\t\n            <param name=\"cbBufSizeRef\">No documentation.</param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The function succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>Use this function to find the size of the array that is needed for the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.GetAttributesAsBlob(SharpDX.MediaFoundation.MediaAttributes,System.Byte[],System.Int32)\"/></strong> function.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFGetAttributesAsBlobSize']/*\"/>\t\n            <msdn-id>ms697064</msdn-id>\t\n            <unmanaged>HRESULT MFGetAttributesAsBlobSize([In] IMFAttributes* pAttributes,[Out] unsigned int* pcbBufSize)</unmanaged>\t\n            <unmanaged-short>MFGetAttributesAsBlobSize</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.ScheduleWorkItemEx(SharpDX.MediaFoundation.AsyncResult,System.Int64,System.Int64@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Attempts to cancel an asynchronous operation that was scheduled with <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.ScheduleWorkItem(SharpDX.MediaFoundation.AsyncCallback,SharpDX.ComObject,System.Int64,System.Int64@)\"/></strong> or <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.ScheduleWorkItemEx(SharpDX.MediaFoundation.AsyncResult,System.Int64,System.Int64@)\"/></strong>.</p>\t\n            </summary>\t\n            <param name=\"resultRef\">No documentation.</param>\t\n            <param name=\"timeout\">No documentation.</param>\t\n            <param name=\"keyRef\">No documentation.</param>\t\n            <returns><p>If this function succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>Because work items are asynchronous, the  work-item callback might still be invoked after <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CancelWorkItem(System.Int64)\"/></strong> is called.</p><p>This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFScheduleWorkItemEx']/*\"/>\t\n            <msdn-id>ms701633</msdn-id>\t\n            <unmanaged>HRESULT MFScheduleWorkItemEx([In] IMFAsyncResult* pResult,[In] longlong Timeout,[Out, Optional] unsigned longlong* pKey)</unmanaged>\t\n            <unmanaged-short>MFScheduleWorkItemEx</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CreateMediaEvent(System.Int32,System.Guid,SharpDX.Result,System.Nullable{SharpDX.Win32.Variant},SharpDX.MediaFoundation.MediaEvent@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Creates a media event object.</p>\t\n            </summary>\t\n            <param name=\"met\"><dd> <p>The event type. See <strong><see cref=\"M:SharpDX.MediaFoundation.MediaEvent.GetTypeInfo(System.Int32@)\"/></strong>. For a list of event types, see Media Foundation Events.</p> </dd></param>\t\n            <param name=\"guidExtendedType\"><dd> <p>The extended type. See <strong><see cref=\"M:SharpDX.MediaFoundation.MediaEvent.GetExtendedType(System.Guid@)\"/></strong>. If the event type does not have an extended type, use the value GUID_NULL.</p> </dd></param>\t\n            <param name=\"hrStatus\"><dd> <p>The event status. See <strong><see cref=\"M:SharpDX.MediaFoundation.MediaEvent.GetStatus(SharpDX.Result@)\"/></strong> </p> </dd></param>\t\n            <param name=\"vValueRef\"><dd> <p>The value associated with the event, if any. See <strong><see cref=\"M:SharpDX.MediaFoundation.MediaEvent.GetValue(SharpDX.Win32.Variant@)\"/></strong>. This parameter can be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"eventOut\"><dd> <p>Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaEvent\"/></strong> interface. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCreateMediaEvent']/*\"/>\t\n            <msdn-id>ms697521</msdn-id>\t\n            <unmanaged>HRESULT MFCreateMediaEvent([In] unsigned int met,[In] const GUID&amp; guidExtendedType,[In] HRESULT hrStatus,[In, Optional] const PROPVARIANT* pvValue,[Out] IMFMediaEvent** ppEvent)</unmanaged>\t\n            <unmanaged-short>MFCreateMediaEvent</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CompareFullToPartialMediaType(SharpDX.MediaFoundation.MediaType,SharpDX.MediaFoundation.MediaType)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Creates the source resolver, which is used to create a media source from a URL or byte stream. </p>\t\n            </summary>\t\n            <param name=\"mFTypeFullRef\"><dd> <p>Receives a reference to the source resolver's <strong><see cref=\"T:SharpDX.MediaFoundation.SourceResolver\"/></strong> interface. The caller must release the interface.</p> </dd></param>\t\n            <param name=\"mFTypePartialRef\">No documentation.</param>\t\n            <returns><p>If this function succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??Prior to Windows?7, this function was exported from mf.dll. Starting in Windows?7, this function is exported from mfplat.dll, and mf.dll exports a stub function that calls into mfplat.dll. For more information, see Library Changes in Windows?7.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCompareFullToPartialMediaType']/*\"/>\t\n            <msdn-id>ms697433</msdn-id>\t\n            <unmanaged>BOOL MFCompareFullToPartialMediaType([In] IMFMediaType* pMFTypeFull,[In] IMFMediaType* pMFTypePartial)</unmanaged>\t\n            <unmanaged-short>MFCompareFullToPartialMediaType</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.InitVideoFormat(SharpDX.MediaFoundation.VideoFormat@,SharpDX.MediaFoundation.StandardVideoFormat)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Initializes Microsoft Media Foundation.</p>\t\n            </summary>\t\n            <param name=\"videoFormatRef\"><dd> <p>Version number. Use the value <strong><see cref=\"F:SharpDX.MediaFoundation.MediaFactory.Version\"/></strong>, defined in mfapi.h.</p> </dd></param>\t\n            <param name=\"type\"><dd> <p>This parameter is optional when using C++ but required in C. The value must be one of the following flags: </p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td> <dl> <dt>MFSTARTUP_NOSOCKET</dt> </dl> </td><td> <p> Do not initialize the sockets library. </p> </td></tr> <tr><td> <dl> <dt>MFSTARTUP_LITE</dt> </dl> </td><td> <p> Equivalent to MFSTARTUP_NOSOCKET. </p> </td></tr> <tr><td> <dl> <dt>MFSTARTUP_FULL</dt> </dl> </td><td> <p> Initialize the entire Media Foundation platform. This is the default value when <em>dwFlags</em> is not specified. </p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.BadStartupVersion\"/></strong></dt> </dl> </td><td> <p> The <em>Version</em> parameter requires a newer version of Media Foundation than the version that is running.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.DisabledInSafemode\"/></strong></dt> </dl> </td><td> <p> The Media Foundation platform is disabled because the system was started in \"Safe Mode\" (fail-safe boot). </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> An application must call this function before using Media Foundation. Before your application quits, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> once for every previous call to <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong>. </p><p> Do not call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong> or <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> from work queue threads. For more information about work queues, see Work Queues. </p><p>This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFInitVideoFormat']/*\"/>\t\n            <msdn-id>ms702238</msdn-id>\t\n            <unmanaged>HRESULT MFInitVideoFormat([In] MFVIDEOFORMAT* pVideoFormat,[In] MFStandardVideoFormat type)</unmanaged>\t\n            <unmanaged-short>MFInitVideoFormat</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.LockPlatform\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Blocks the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> function.</p>\t\n            </summary>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The function succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>This function prevents work queue threads from being shut down when <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> is called. Use this function to ensure that asynchronous operations complete gracefully before the platform shuts down.</p><p>This function holds a lock on the Media Foundation platform. To unlock the platform, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.UnlockPlatform\"/></strong>. The application must call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.UnlockPlatform\"/></strong> once for every call to <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.LockPlatform\"/></strong>.</p><p>The <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> function blocks until the platform is unlocked, or until a fixed wait period has elapsed. (The wait period is a few seconds.) To avoid memory leaks, the application should unlock the platform before the wait period ends. For example, cancel any asynchronous operations that are waiting to complete and are holding a lock on the platform.</p><p>The default implementation of the <strong><see cref=\"T:SharpDX.MediaFoundation.AsyncResult\"/></strong> interface automatically locks the Media Foundation platform when the result object is created. Releasing the interface unlocks the platform. Therefore, in most cases your application does not need to lock the platform directly. For more information, see Work Queues.</p><p>This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFLockPlatform']/*\"/>\t\n            <msdn-id>ms693588</msdn-id>\t\n            <unmanaged>HRESULT MFLockPlatform()</unmanaged>\t\n            <unmanaged-short>MFLockPlatform</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CreateMemoryBuffer(System.Int32,SharpDX.MediaFoundation.MediaBuffer@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Allocates system memory and creates a media buffer to manage it.</p>\t\n            </summary>\t\n            <param name=\"cbMaxLength\"><dd> <p>Size of the buffer, in bytes.</p> </dd></param>\t\n            <param name=\"bufferOut\"><dd> <p>Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaBuffer\"/></strong> interface of the media buffer. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The function succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong>E_OUTOFMEMORY</strong></dt> </dl> </td><td> <p>Insufficient memory.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>The function allocates a buffer with a 1-byte memory alignment. To allocate a buffer that is aligned to a larger memory boundary, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateAlignedMemoryBuffer(System.Int32,System.Int32,SharpDX.MediaFoundation.MediaBuffer@)\"/></strong>.</p><p>When the media buffer object is destroyed, it releases the allocated memory.</p><p>This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCreateMemoryBuffer']/*\"/>\t\n            <msdn-id>ms695212</msdn-id>\t\n            <unmanaged>HRESULT MFCreateMemoryBuffer([In] unsigned int cbMaxLength,[Out] IMFMediaBuffer** ppBuffer)</unmanaged>\t\n            <unmanaged-short>MFCreateMemoryBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.TRegister(System.Guid,System.Guid,System.String,System.Int32,System.Int32,SharpDX.MediaFoundation.TRegisterTypeInformation[],System.Int32,SharpDX.MediaFoundation.TRegisterTypeInformation[],SharpDX.MediaFoundation.MediaAttributes)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Adds information about a Media Foundation transform (MFT) to the registry. </p><p>Applications can enumerate the MFT by calling the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.TEnum(System.Guid,System.Int32,System.Nullable{SharpDX.MediaFoundation.TRegisterTypeInformation},System.Nullable{SharpDX.MediaFoundation.TRegisterTypeInformation},SharpDX.MediaFoundation.MediaAttributes,System.Guid[],System.Int32@)\"/></strong> or <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.TEnumEx(System.Guid,System.Int32,System.Nullable{SharpDX.MediaFoundation.TRegisterTypeInformation},System.Nullable{SharpDX.MediaFoundation.TRegisterTypeInformation},System.IntPtr@,System.Int32@)\"/></strong> function.</p>\t\n            </summary>\t\n            <param name=\"clsidMFT\">No documentation.</param>\t\n            <param name=\"guidCategory\">No documentation.</param>\t\n            <param name=\"szNameRef\">No documentation.</param>\t\n            <param name=\"flags\">No documentation.</param>\t\n            <param name=\"cInputTypes\">No documentation.</param>\t\n            <param name=\"inputTypesRef\">No documentation.</param>\t\n            <param name=\"cOutputTypes\">No documentation.</param>\t\n            <param name=\"outputTypesRef\">No documentation.</param>\t\n            <param name=\"attributesRef\">No documentation.</param>\t\n            <returns><p>If this function succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p> The registry entries created by this function are read by the following functions: </p><table> <tr><th>Function</th><th>Description</th></tr> <tr><td> <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.TEnum(System.Guid,System.Int32,System.Nullable{SharpDX.MediaFoundation.TRegisterTypeInformation},System.Nullable{SharpDX.MediaFoundation.TRegisterTypeInformation},SharpDX.MediaFoundation.MediaAttributes,System.Guid[],System.Int32@)\"/></strong> </td><td>Enumerates MFTs by media type and category.</td></tr> <tr><td> <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.TEnumEx(System.Guid,System.Int32,System.Nullable{SharpDX.MediaFoundation.TRegisterTypeInformation},System.Nullable{SharpDX.MediaFoundation.TRegisterTypeInformation},System.IntPtr@,System.Int32@)\"/></strong> </td><td>Extended version of <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.TEnum(System.Guid,System.Int32,System.Nullable{SharpDX.MediaFoundation.TRegisterTypeInformation},System.Nullable{SharpDX.MediaFoundation.TRegisterTypeInformation},SharpDX.MediaFoundation.MediaAttributes,System.Guid[],System.Int32@)\"/></strong>.</td></tr> <tr><td> <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.TGetInfo(System.Guid,System.IntPtr,SharpDX.MediaFoundation.TRegisterTypeInformation[],System.Int32@,SharpDX.MediaFoundation.TRegisterTypeInformation[],System.Int32@,SharpDX.MediaFoundation.MediaAttributes@)\"/></strong> </td><td>Looks up an MFT by CLSID and retrieves the registry information.</td></tr> </table><p>?</p><p>This function does not register the CLSID of the MFT for the <strong>CoCreateInstance</strong> or <strong>CoGetClassObject</strong> functions. </p><p> To remove the entries from the registry, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.TUnregister(System.Guid)\"/></strong>. If you remove an MFT from the system, you should always call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.TUnregister(System.Guid)\"/></strong>.</p><p> The formats given in the <em>pInputTypes</em> and <em>pOutputTypes</em> parameters are intended to help applications search for MFTs by format. Applications can use the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.TEnum(System.Guid,System.Int32,System.Nullable{SharpDX.MediaFoundation.TRegisterTypeInformation},System.Nullable{SharpDX.MediaFoundation.TRegisterTypeInformation},SharpDX.MediaFoundation.MediaAttributes,System.Guid[],System.Int32@)\"/></strong> or <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.TEnumEx(System.Guid,System.Int32,System.Nullable{SharpDX.MediaFoundation.TRegisterTypeInformation},System.Nullable{SharpDX.MediaFoundation.TRegisterTypeInformation},System.IntPtr@,System.Int32@)\"/></strong> functions to enumerate MFTs that match a particular set of formats.</p><p>It is recommended  to specify at least one input type in <em>pInputTypes</em> and one output type in the <em>pOutputTypes</em> parameter. Otherwise, the MFT might be skipped in the enumeration.</p><p>On 64-bit Windows, the 32-bit version of this function registers the MFT in the 32-bit node of the registry. For more information, see 32-bit and 64-bit Application Data in the Registry.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFTRegister']/*\"/>\t\n            <msdn-id>ms705640</msdn-id>\t\n            <unmanaged>HRESULT MFTRegister([In] GUID clsidMFT,[In] GUID guidCategory,[In] wchar_t* pszName,[In] unsigned int Flags,[In] unsigned int cInputTypes,[In, Buffer, Optional] MFT_REGISTER_TYPE_INFO* pInputTypes,[In] unsigned int cOutputTypes,[In, Buffer, Optional] MFT_REGISTER_TYPE_INFO* pOutputTypes,[In, Optional] IMFAttributes* pAttributes)</unmanaged>\t\n            <unmanaged-short>MFTRegister</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.TUnregisterLocal(SharpDX.ComObject)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Unregisters one or more Media Foundation transforms (MFTs) from the caller's process.</p>\t\n            </summary>\t\n            <param name=\"classFactoryRef\"><dd> <p>A reference to the <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interface of a class factory object. This parameter can be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong>HRESULT_FROM_WIN32(<strong><see cref=\"F:SharpDX.Win32.ErrorCode.NotFound\"/></strong>)</strong></dt> </dl> </td><td> <p>The MFT specified by the <em>pClassFactory</em> parameter was not registered in this process.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>Use this function to unregister a local MFT that was previously registered through the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.TRegisterLocal(SharpDX.ComObject,System.Guid,System.String,System.Int32,System.Int32,SharpDX.MediaFoundation.TRegisterTypeInformation[],System.Int32,SharpDX.MediaFoundation.TRegisterTypeInformation[])\"/></strong> function.</p><p>If the <em>pClassFactory</em> parameter is <strong><c>null</c></strong>, all local MFTs in the process are unregistered. Otherwise, the function unregisters the MFT associated with the class factory specified by the <em>pClassFactory</em> parameter. In that case, the <em>pClassFactory</em> parameter should equal a reference value that was previously passed to  the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.TRegisterLocal(SharpDX.ComObject,System.Guid,System.String,System.Int32,System.Int32,SharpDX.MediaFoundation.TRegisterTypeInformation[],System.Int32,SharpDX.MediaFoundation.TRegisterTypeInformation[])\"/></strong> function.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFTUnregisterLocal']/*\"/>\t\n            <msdn-id>dd388658</msdn-id>\t\n            <unmanaged>HRESULT MFTUnregisterLocal([In, Optional] IClassFactory* pClassFactory)</unmanaged>\t\n            <unmanaged-short>MFTUnregisterLocal</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CancelCreateFile(SharpDX.ComObject)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Begins an asynchronous request to create a byte stream from a file.</p>\t\n            </summary>\t\n            <param name=\"cancelCookieRef\"><dd> <p>The requested access mode, specified as a member of the <strong><see cref=\"T:SharpDX.MediaFoundation.FileAccessMode\"/></strong> enumeration.</p> </dd></param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The function succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>When the request is completed, the callback object's <strong><see cref=\"M:SharpDX.MediaFoundation.AsyncCallback.Invoke(SharpDX.MediaFoundation.AsyncResult)\"/></strong> method is called. The callback object should then call the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.EndCreateFile(SharpDX.MediaFoundation.AsyncResult,SharpDX.MediaFoundation.IByteStream@)\"/></strong> function to get a reference to the byte stream.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCancelCreateFile']/*\"/>\t\n            <msdn-id>ms702074</msdn-id>\t\n            <unmanaged>HRESULT MFCancelCreateFile([In] IUnknown* pCancelCookie)</unmanaged>\t\n            <unmanaged-short>MFCancelCreateFile</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.InitAttributesFromBlob(SharpDX.MediaFoundation.MediaAttributes,System.Byte[],System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Initializes Microsoft Media Foundation.</p>\t\n            </summary>\t\n            <param name=\"attributesRef\"><dd> <p>Version number. Use the value <strong><see cref=\"F:SharpDX.MediaFoundation.MediaFactory.Version\"/></strong>, defined in mfapi.h.</p> </dd></param>\t\n            <param name=\"bufRef\"><dd> <p>This parameter is optional when using C++ but required in C. The value must be one of the following flags: </p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td> <dl> <dt>MFSTARTUP_NOSOCKET</dt> </dl> </td><td> <p> Do not initialize the sockets library. </p> </td></tr> <tr><td> <dl> <dt>MFSTARTUP_LITE</dt> </dl> </td><td> <p> Equivalent to MFSTARTUP_NOSOCKET. </p> </td></tr> <tr><td> <dl> <dt>MFSTARTUP_FULL</dt> </dl> </td><td> <p> Initialize the entire Media Foundation platform. This is the default value when <em>dwFlags</em> is not specified. </p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <param name=\"cbBufSize\">No documentation.</param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.BadStartupVersion\"/></strong></dt> </dl> </td><td> <p> The <em>Version</em> parameter requires a newer version of Media Foundation than the version that is running.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.DisabledInSafemode\"/></strong></dt> </dl> </td><td> <p> The Media Foundation platform is disabled because the system was started in \"Safe Mode\" (fail-safe boot). </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> An application must call this function before using Media Foundation. Before your application quits, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> once for every previous call to <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong>. </p><p> Do not call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong> or <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> from work queue threads. For more information about work queues, see Work Queues. </p><p>This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFInitAttributesFromBlob']/*\"/>\t\n            <msdn-id>ms702238</msdn-id>\t\n            <unmanaged>HRESULT MFInitAttributesFromBlob([In] IMFAttributes* pAttributes,[In, Buffer] const unsigned char* pBuf,[In] unsigned int cbBufSize)</unmanaged>\t\n            <unmanaged-short>MFInitAttributesFromBlob</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CreateMediaType(SharpDX.MediaFoundation.MediaType)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Creates an empty media type.</p>\t\n            </summary>\t\n            <param name=\"mFTypeOut\"><dd> <p> Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaType\"/></strong> interface. The caller must release the interface. </p> </dd></param>\t\n            <returns><p>If this function succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p> The media type is created without any attributes. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCreateMediaType']/*\"/>\t\n            <msdn-id>ms693861</msdn-id>\t\n            <unmanaged>HRESULT MFCreateMediaType([Out, Fast] IMFMediaType** ppMFType)</unmanaged>\t\n            <unmanaged-short>MFCreateMediaType</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.TEnumEx(System.Guid,System.Int32,System.Nullable{SharpDX.MediaFoundation.TRegisterTypeInformation},System.Nullable{SharpDX.MediaFoundation.TRegisterTypeInformation},System.IntPtr@,System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Gets a list of Microsoft Media Foundation transforms (MFTs) that match specified search criteria. This function extends the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.TEnum(System.Guid,System.Int32,System.Nullable{SharpDX.MediaFoundation.TRegisterTypeInformation},System.Nullable{SharpDX.MediaFoundation.TRegisterTypeInformation},SharpDX.MediaFoundation.MediaAttributes,System.Guid[],System.Int32@)\"/></strong> function.</p>\t\n            </summary>\t\n            <param name=\"guidCategory\">No documentation.</param>\t\n            <param name=\"flags\">No documentation.</param>\t\n            <param name=\"inputTypeRef\">No documentation.</param>\t\n            <param name=\"outputTypeRef\">No documentation.</param>\t\n            <param name=\"pMFTActivateOut\">No documentation.</param>\t\n            <param name=\"numMFTActivateRef\">No documentation.</param>\t\n            <returns><p>If this function succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>The <em>Flags</em> parameter controls which MFTs are enumerated, and the order in which they are returned. The flags for this parameter fall into several groups.</p><p> </p><p>The first set of flags specifies how an MFT processes data.</p><table> <tr><th>Flag</th><th>Description</th></tr> <tr><td> <p><see cref=\"F:SharpDX.MediaFoundation.TransformEnumFlag.Syncmft\"/></p> </td><td> <p>The MFT performs synchronous data processing in software. This is the original MFT processing model, and is  compatible with Windows?Vista.</p> </td></tr> <tr><td> <p><see cref=\"F:SharpDX.MediaFoundation.TransformEnumFlag.Asyncmft\"/></p> </td><td> <p>The MFT performs asynchronous data processing in software. This processing model requires Windows?7. For more information, see Asynchronous MFTs.</p> </td></tr> <tr><td> <p><see cref=\"F:SharpDX.MediaFoundation.TransformEnumFlag.Hardware\"/></p> </td><td> <p>The MFT performs hardware-based data processing, using either the AVStream driver or a GPU-based proxy MFT. MFTs in this category always process data asynchronously. For more information, see Hardware MFTs.</p> </td></tr> </table><p>?</p><p>Every MFT falls into exactly one of these categories.  To enumerate a category, set the corresponding flag in the <em>Flags</em> parameter. You can combine these flags to enumerate more than one category. If none of these flags is specified, the default category is synchronous MFTs (<strong><see cref=\"F:SharpDX.MediaFoundation.TransformEnumFlag.Syncmft\"/></strong>).</p><p> </p><p> </p><p>Next, the following flags include MFTs that are otherwise  excluded from the results. By default, flags that match these criteria are excluded from the results. Use any these flags to include them.</p><table> <tr><th>Flag</th><th>Description</th></tr> <tr><td> <p><strong><see cref=\"F:SharpDX.MediaFoundation.TransformEnumFlag.Fieldofuse\"/></strong></p> </td><td> <p>Include MFTs that must be unlocked by the application.</p> </td></tr> <tr><td> <p><strong><see cref=\"F:SharpDX.MediaFoundation.TransformEnumFlag.Localmft\"/></strong></p> </td><td> <p>Include MFTs that are registered in the caller's process through either the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.TRegisterLocal(SharpDX.ComObject,System.Guid,System.String,System.Int32,System.Int32,SharpDX.MediaFoundation.TRegisterTypeInformation[],System.Int32,SharpDX.MediaFoundation.TRegisterTypeInformation[])\"/></strong> or <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.TRegisterLocalByCLSID(System.Guid,System.Guid,System.String,System.Int32,System.Int32,SharpDX.MediaFoundation.TRegisterTypeInformation[],System.Int32,SharpDX.MediaFoundation.TRegisterTypeInformation[])\"/></strong> function.</p> </td></tr> <tr><td> <p><strong><see cref=\"F:SharpDX.MediaFoundation.TransformEnumFlag.TranscodeOnly\"/></strong></p> </td><td> <p>Include MFTs that are optimized for transcoding rather than playback.</p> </td></tr> </table><p>?</p><p> </p><p> </p><p>The last flag is used to sort and filter the results:</p><table> <tr><th>Flag</th><th>Description</th></tr> <tr><td> <p><strong><see cref=\"F:SharpDX.MediaFoundation.TransformEnumFlag.SortAndFilter\"/></strong></p> </td><td> <p>Sort and filter the results.</p> </td></tr> </table><p>?</p><p>If the <strong><see cref=\"F:SharpDX.MediaFoundation.TransformEnumFlag.SortAndFilter\"/></strong> flag is set, the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.TEnumEx(System.Guid,System.Int32,System.Nullable{SharpDX.MediaFoundation.TRegisterTypeInformation},System.Nullable{SharpDX.MediaFoundation.TRegisterTypeInformation},System.IntPtr@,System.Int32@)\"/></strong> function sorts the results as follows:</p><ul> <li>Local: If the <strong><see cref=\"F:SharpDX.MediaFoundation.TransformEnumFlag.Localmft\"/></strong> flag is set, local MFTs appear first in the list. To register a local MFT, call the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.TRegisterLocal(SharpDX.ComObject,System.Guid,System.String,System.Int32,System.Int32,SharpDX.MediaFoundation.TRegisterTypeInformation[],System.Int32,SharpDX.MediaFoundation.TRegisterTypeInformation[])\"/></strong> or <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.TRegisterLocalByCLSID(System.Guid,System.Guid,System.String,System.Int32,System.Int32,SharpDX.MediaFoundation.TRegisterTypeInformation[],System.Int32,SharpDX.MediaFoundation.TRegisterTypeInformation[])\"/></strong> function.</li> <li>Merit: MFTs with a merit value appear next on the list, in order of merit value (highest to lowest). For more information about merit, see <see cref=\"F:SharpDX.MediaFoundation.TransformAttributeKeys.MftCodecMeritAttribute\"/>. </li> <li>Preferred: If an MFT is listed in the plug-in control's preferred list, it appears next in the list. For more information about the plug-in control, see <strong><see cref=\"T:SharpDX.MediaFoundation.PluginControl\"/></strong>.</li> <li>If an MFT appears on the blocked list, it is excluded from the results. For more information about the blocked list, see <strong><see cref=\"M:SharpDX.MediaFoundation.PluginControl.IsDisabled(System.Int32,System.Guid)\"/></strong>.</li> <li>Any other MFTs that match the search criteria appear at the end of the list, unsorted.</li> </ul><p>If you do not set the <strong><see cref=\"F:SharpDX.MediaFoundation.TransformEnumFlag.SortAndFilter\"/></strong> flag, the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.TEnumEx(System.Guid,System.Int32,System.Nullable{SharpDX.MediaFoundation.TRegisterTypeInformation},System.Nullable{SharpDX.MediaFoundation.TRegisterTypeInformation},System.IntPtr@,System.Int32@)\"/></strong> function returns an unsorted list.</p><p>Setting the <em>Flags</em> parameter to zero is equivalent to using the value <strong><see cref=\"F:SharpDX.MediaFoundation.TransformEnumFlag.Syncmft\"/></strong> | <strong><see cref=\"F:SharpDX.MediaFoundation.TransformEnumFlag.Localmft\"/></strong> | <strong><see cref=\"F:SharpDX.MediaFoundation.TransformEnumFlag.SortAndFilter\"/></strong>.</p><p>Setting <em>Flags</em> to <strong><see cref=\"F:SharpDX.MediaFoundation.TransformEnumFlag.Syncmft\"/></strong> is equivalent to calling the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.TEnum(System.Guid,System.Int32,System.Nullable{SharpDX.MediaFoundation.TRegisterTypeInformation},System.Nullable{SharpDX.MediaFoundation.TRegisterTypeInformation},SharpDX.MediaFoundation.MediaAttributes,System.Guid[],System.Int32@)\"/></strong> function.</p><p>If no MFTs match the search criteria, the function returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>, unless some other error occurs. Therefore, always check the count received in the <em>pcMFTActivate</em> parameter before you dereference the <em>pppMFTActivate</em> reference.</p><p><strong>Note</strong>??There is no way to enumerate just local MFTs and nothing else. Setting <em>Flags</em> equal to <strong><see cref=\"F:SharpDX.MediaFoundation.TransformEnumFlag.Localmft\"/></strong> is equivalent to  including the <strong><see cref=\"F:SharpDX.MediaFoundation.TransformEnumFlag.Syncmft\"/></strong> flag. However, if you also sort the results by specifying the <strong><see cref=\"F:SharpDX.MediaFoundation.TransformEnumFlag.SortAndFilter\"/></strong> flag, local MFTs appear first in the list.</p>Creating the MFT<p>If at least one MFT matches the search criteria, the <em>pppMFTActivate</em> parameter receives an array of <strong><see cref=\"T:SharpDX.MediaFoundation.Activate\"/></strong> references. One reference is returned for each matching MFT. Each reference represents an <em>activation object</em> for the MFT. For more information, see Activation Objects.</p><p>Additional information about each MFT is stored as attributes on the activation objects. For a list of the possible attributes, see Transform Attributes.</p><p>To create an instance of the MFT, call <strong><see cref=\"M:SharpDX.MediaFoundation.Activate.ActivateObject(System.Guid,System.IntPtr@)\"/></strong>.</p>Hardware Codecs<p>Hardware codecs are excluded from the enumeration results if the following registry keys are set to zero:</p><p>Decoders: </p><p><strong>HKEY_LOCAL_MACHINE</strong>\\<strong>SOFTWARE</strong>\\<strong>Microsoft</strong>\\<strong>Windows Media Foundation</strong>\\<strong>HardwareMFT</strong>\\<strong>EnableDecoders</strong></p><p>Encoders: </p><p><strong>HKEY_LOCAL_MACHINE</strong>\\<strong>SOFTWARE</strong>\\<strong>Microsoft</strong>\\<strong>Windows Media Foundation</strong>\\<strong>HardwareMFT</strong>\\<strong>EnableEncoders</strong></p><p>Video processors: </p><p><strong>HKEY_LOCAL_MACHINE</strong>\\<strong>SOFTWARE</strong>\\<strong>Microsoft</strong>\\<strong>Windows Media Foundation</strong>\\<strong>HardwareMFT</strong>\\<strong>EnableVideoProcessors</strong></p><p>These keys are intended for OEMs, and should not be used by applications.</p><p>For hardware codecs, the <em>guidCategory</em> parameter of <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.TEnumEx(System.Guid,System.Int32,System.Nullable{SharpDX.MediaFoundation.TRegisterTypeInformation},System.Nullable{SharpDX.MediaFoundation.TRegisterTypeInformation},System.IntPtr@,System.Int32@)\"/></strong> can also specify one of the following kernel streaming (KS) device categories:</p><ul> <li><strong>KSCATEGORY_DATACOMPRESSOR</strong></li> <li><strong>KSCATEGORY_DATADECOMPRESSOR</strong></li> </ul><p>Hardware codecs should also be registered under an <strong>MFT_CATEGORY</strong> <see cref=\"T:System.Guid\"/>, so applications should generally use those categories instead of the KS device categories.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFTEnumEx']/*\"/>\t\n            <msdn-id>dd388652</msdn-id>\t\n            <unmanaged>HRESULT MFTEnumEx([In] GUID guidCategory,[In] unsigned int Flags,[In, Optional] const MFT_REGISTER_TYPE_INFO* pInputType,[In, Optional] const MFT_REGISTER_TYPE_INFO* pOutputType,[Out] void*** pppMFTActivate,[Out] unsigned int* pnumMFTActivate)</unmanaged>\t\n            <unmanaged-short>MFTEnumEx</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CreatePresentationClock(SharpDX.MediaFoundation.PresentationClock@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Initializes Microsoft Media Foundation.</p>\t\n            </summary>\t\n            <param name=\"presentationClockOut\"><dd> <p>Version number. Use the value <strong><see cref=\"F:SharpDX.MediaFoundation.MediaFactory.Version\"/></strong>, defined in mfapi.h.</p> </dd></param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.BadStartupVersion\"/></strong></dt> </dl> </td><td> <p> The <em>Version</em> parameter requires a newer version of Media Foundation than the version that is running.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.DisabledInSafemode\"/></strong></dt> </dl> </td><td> <p> The Media Foundation platform is disabled because the system was started in \"Safe Mode\" (fail-safe boot). </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> An application must call this function before using Media Foundation. Before your application quits, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> once for every previous call to <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong>. </p><p> Do not call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong> or <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> from work queue threads. For more information about work queues, see Work Queues. </p><p>This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCreatePresentationClock']/*\"/>\t\n            <msdn-id>ms702238</msdn-id>\t\n            <unmanaged>HRESULT MFCreatePresentationClock([Out] IMFPresentationClock** ppPresentationClock)</unmanaged>\t\n            <unmanaged-short>MFCreatePresentationClock</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CreateSystemTimeSource(SharpDX.MediaFoundation.PresentationTimeSource@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Creates a presentation time source that is based on the system time.</p>\t\n            </summary>\t\n            <param name=\"systemTimeSourceOut\"><dd> <p>Receives a reference to the object's <strong><see cref=\"T:SharpDX.MediaFoundation.PresentationTimeSource\"/></strong> interface. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The function succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCreateSystemTimeSource']/*\"/>\t\n            <msdn-id>ms705610</msdn-id>\t\n            <unmanaged>HRESULT MFCreateSystemTimeSource([Out] IMFPresentationTimeSource** ppSystemTimeSource)</unmanaged>\t\n            <unmanaged-short>MFCreateSystemTimeSource</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.EnumDeviceSources(SharpDX.MediaFoundation.MediaAttributes,SharpDX.MediaFoundation.Activate[],System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Enumerates a list of audio or video capture devices.</p>\t\n            </summary>\t\n            <param name=\"attributesRef\"><dd> <p>Pointer to an attribute store that contains search criteria. To create the attribute store, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateAttributes(SharpDX.MediaFoundation.MediaAttributes,System.Int32)\"/></strong>. Set one or more of the following attributes on the attribute store:</p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.CaptureDeviceAttributeKeys.SourceType\"/></strong></dt> </dl> </td><td> <p>Specifies whether to enumerate audio or video devices. (Required.)</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.CaptureDeviceAttributeKeys.SourceTypeAudcapRole\"/></strong></dt> </dl> </td><td> <p>For audio capture devices, specifies the device role. (Optional.)</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.CaptureDeviceAttributeKeys.SourceTypeVidcapCategory\"/></strong></dt> </dl> </td><td> <p>For video capture devices, specifies the device category. (Optional.)</p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <param name=\"pSourceActivateOut\"><dd> <p>Receives an array of <strong><see cref=\"T:SharpDX.MediaFoundation.Activate\"/></strong> interface references. Each reference represents an activation object for a media source. The function allocates the memory for the array. The caller must release the references in the array and call <strong>CoTaskMemFree</strong> to free the memory for the array.</p> </dd></param>\t\n            <param name=\"cSourceActivateRef\"><dd> <p>Receives the number of elements in the <em>pppSourceActivate</em> array. If no capture devices match the search criteria, this parameter receives the value 0.</p> </dd></param>\t\n            <returns><p>If this function succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>Each returned <strong><see cref=\"T:SharpDX.MediaFoundation.Activate\"/></strong> reference represents a capture device, and can be used to create a media source for that device. You can also use the <strong><see cref=\"T:SharpDX.MediaFoundation.Activate\"/></strong> reference to query for attributes that describe the device. The following attributes might be set:</p><table> <tr><th>Attribute</th><th>Description</th></tr> <tr><td> <see cref=\"F:SharpDX.MediaFoundation.CaptureDeviceAttributeKeys.FriendlyName\"/> </td><td>The display name of the device.</td></tr> <tr><td> <see cref=\"F:SharpDX.MediaFoundation.CaptureDeviceAttributeKeys.MediaType\"/> </td><td>The major type and subtype GUIDs that describe the device's output format.</td></tr> <tr><td> <see cref=\"F:SharpDX.MediaFoundation.CaptureDeviceAttributeKeys.SourceType\"/> </td><td>The type of capture device (audio or video).</td></tr> <tr><td> <see cref=\"F:SharpDX.MediaFoundation.CaptureDeviceAttributeKeys.SourceTypeAudcapEndpointId\"/> </td><td>The audio endpoint ID string. (Audio devices only.)</td></tr> <tr><td> <see cref=\"F:SharpDX.MediaFoundation.CaptureDeviceAttributeKeys.SourceTypeVidcapCategory\"/> </td><td>The device category. (Video devices only.)</td></tr> <tr><td> <see cref=\"F:SharpDX.MediaFoundation.CaptureDeviceAttributeKeys.SourceTypeVidcapHwSource\"/> </td><td> Whether a device is a hardware or software device. (Video devices only.)</td></tr> <tr><td> <see cref=\"F:SharpDX.MediaFoundation.CaptureDeviceAttributeKeys.SourceTypeVidcapSymbolicLink\"/> </td><td>The symbolic link for the device driver. (Video devices only.)</td></tr> </table><p>?</p><p>To create a media source from an <strong><see cref=\"T:SharpDX.MediaFoundation.Activate\"/></strong> reference, call the <strong><see cref=\"M:SharpDX.MediaFoundation.Activate.ActivateObject(System.Guid,System.IntPtr@)\"/></strong> method.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFEnumDeviceSources']/*\"/>\t\n            <msdn-id>dd388503</msdn-id>\t\n            <unmanaged>HRESULT MFEnumDeviceSources([In] IMFAttributes* pAttributes,[Out, Buffer] IMFActivate*** pppSourceActivate,[Out] unsigned int* pcSourceActivate)</unmanaged>\t\n            <unmanaged-short>MFEnumDeviceSources</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CreateTranscodeProfile(SharpDX.MediaFoundation.TranscodeProfile@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Creates an empty transcode profile object.</p><p>The transcode profile stores configuration settings for the output file. These configuration settings are specified by the caller, and include audio and video stream properties, encoder settings, and  container settings. To set these properties, the caller must call the appropriate <strong><see cref=\"T:SharpDX.MediaFoundation.TranscodeProfile\"/></strong> methods.</p><p>The configured transcode profile is passed to the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateTranscodeTopology(SharpDX.MediaFoundation.MediaSource,System.String,SharpDX.MediaFoundation.TranscodeProfile,SharpDX.MediaFoundation.Topology@)\"/></strong> function.  The underlying topology builder uses these settings to build the transcode topology.</p>\t\n            </summary>\t\n            <param name=\"transcodeProfileOut\">No documentation.</param>\t\n            <returns><p>If this function succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>The <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateTranscodeProfile(SharpDX.MediaFoundation.TranscodeProfile@)\"/></strong> function creates an empty transcode profile. You must configure the transcode profile setting attributes that define the media types and the container properties. Use the following methods to configure the profile:</p><ul> <li> <strong><see cref=\"M:SharpDX.MediaFoundation.TranscodeProfile.SetAudioAttributes(SharpDX.MediaFoundation.MediaAttributes)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.MediaFoundation.TranscodeProfile.SetVideoAttributes(SharpDX.MediaFoundation.MediaAttributes)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.MediaFoundation.TranscodeProfile.SetContainerAttributes(SharpDX.MediaFoundation.MediaAttributes)\"/></strong> </li> </ul><p>For example code that uses this function, see the following topics:</p><ul> <li> Tutorial: Encoding an MP4 File </li> <li> Tutorial: Encoding a WMA File </li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCreateTranscodeProfile']/*\"/>\t\n            <msdn-id>dd388113</msdn-id>\t\n            <unmanaged>HRESULT MFCreateTranscodeProfile([Out] IMFTranscodeProfile** ppTranscodeProfile)</unmanaged>\t\n            <unmanaged-short>MFCreateTranscodeProfile</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CreateCredentialCache(SharpDX.MediaFoundation.NetCredentialCache@)\">\n            <summary>\t\n            <p>Media Foundation provides a default implementation of the <strong><see cref=\"T:SharpDX.MediaFoundation.NetCredentialCache\"/></strong> interface. An application that implements the <strong><see cref=\"T:SharpDX.MediaFoundation.NetCredentialManager\"/></strong> interface can use the default credential cache object to store the user's credentials.</p><p>To create the default credential cache object, call the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateCredentialCache(SharpDX.MediaFoundation.NetCredentialCache@)\"/></strong> function.</p><pre><code><see cref=\"T:SharpDX.Result\"/> hr = <see cref=\"F:SharpDX.Result.Ok\"/>;\t\n            <see cref=\"T:SharpDX.MediaFoundation.NetCredentialCache\"/> *pCredentialCache = <c>null</c>;\t\n            hr = <see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateCredentialCache(SharpDX.MediaFoundation.NetCredentialCache@)\"/>(&amp;pCredentialCache);\t\n            </code></pre><p>After the credential cache is created, the application can use the following methods to get a credential object, set user credentials, and specify the caching options.</p><ul> <li> <p>To get the credential object for a URL, call <strong><see cref=\"M:SharpDX.MediaFoundation.NetCredentialCache.GetCredential(System.String,System.String,System.Int32,SharpDX.MediaFoundation.NetCredential@,System.Int32@)\"/></strong>.</p>  <pre><code>hr = pCredentialCache-&gt; GetCredential( pszUrl, pszRealm, dwAuthenticationFlags, &amp;pCredential, &amp;dwRequirementsFlags);\t\n            </code></pre>  <p>If the credentials for the specified URL do not exist in the credential cache, <strong>GetCredential</strong> creates a new credential object with empty user name and password values.</p> </li> <li> To set the user name and password on the credential object, call <strong><see cref=\"M:SharpDX.MediaFoundation.NetCredential.SetUser(System.Byte[],System.Int32,SharpDX.Bool)\"/></strong> and <strong><see cref=\"M:SharpDX.MediaFoundation.NetCredential.SetPassword(System.Byte[],System.Int32,SharpDX.Bool)\"/></strong>. </li> <li> <p>To set the caching options on the credential object, call <strong><see cref=\"M:SharpDX.MediaFoundation.NetCredentialCache.SetUserOptions(SharpDX.MediaFoundation.NetCredential,System.Int32)\"/></strong>.</p>  <pre><code>hr = pCredentialCache-&gt; SetUserOptions(  pCredentialCache, <see cref=\"F:SharpDX.MediaFoundation.NetCredentialOptions.MfnetCredentialSave\"/>);\t\n            </code></pre>  <p>The <em>dwOptionsFlags</em> parameter values are defined in the <strong><see cref=\"T:SharpDX.MediaFoundation.NetCredentialOptions\"/></strong> enumeration. To save user credentials for a URL in a persistent storage, set the <see cref=\"F:SharpDX.MediaFoundation.NetCredentialOptions.MfnetCredentialSave\"/> flag. If the <strong>SetUserOptions</strong> call completes successfully, then the subsequent call to <strong>GetCredential</strong> searches for the credentials in the persistent storage. If a match is found, this method returns a reference to the credential object that contains the information.</p> <p>By default, user credentials sent over the network are encrypted. To change this to clear text, set the <see cref=\"F:SharpDX.MediaFoundation.NetCredentialOptions.MfnetCredentialAllowClearText\"/> flag.</p> <p>To remove information from the registry, call <strong>GetCredential</strong> to get the credential object, and then call <strong>SetUserOption</strong> and set <em>dwOptionsFlags</em> to <see cref=\"F:SharpDX.MediaFoundation.NetCredentialOptions.MfnetCredentialDontCache\"/>.</p> </li> </ul>\t\n            </summary>\t\n            <param name=\"cacheOut\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCreateCredentialCache']/*\"/>\t\n            <msdn-id>ee318418</msdn-id>\t\n            <unmanaged>HRESULT MFCreateCredentialCache([Out] IMFNetCredentialCache** ppCache)</unmanaged>\t\n            <unmanaged-short>MFCreateCredentialCache</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CreateSequencerSource(SharpDX.ComObject,SharpDX.MediaFoundation.SequencerSource@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Creates the sequencer source.</p>\t\n            </summary>\t\n            <param name=\"reservedRef\"><dd> <p>Reserved. Must be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"sequencerSourceOut\"><dd> <p>Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.SequencerSource\"/></strong> interface of the sequencer source. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The function succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCreateSequencerSource']/*\"/>\t\n            <msdn-id>ms704663</msdn-id>\t\n            <unmanaged>HRESULT MFCreateSequencerSource([In] IUnknown* pReserved,[Out] IMFSequencerSource** ppSequencerSource)</unmanaged>\t\n            <unmanaged-short>MFCreateSequencerSource</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CreateMFByteStreamOnStream(System.IntPtr,SharpDX.MediaFoundation.IByteStream@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Creates a Microsoft Media Foundation byte stream that wraps an <strong><see cref=\"T:SharpDX.Win32.IStream\"/></strong> reference.</p>\t\n            </summary>\t\n            <param name=\"streamRef\"><dd> <p>A reference to the <strong><see cref=\"T:SharpDX.Win32.IStream\"/></strong> interface.</p> </dd></param>\t\n            <param name=\"byteStreamOut\"><dd> <p>Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.IByteStream\"/></strong> interface. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>Returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> value.</p></returns>\t\n            <remarks>\t\n            <p>This function enables applications to pass an <strong><see cref=\"T:SharpDX.Win32.IStream\"/></strong> object to a Media Foundation API that takes an <strong><see cref=\"T:SharpDX.MediaFoundation.IByteStream\"/></strong> reference.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCreateMFByteStreamOnStream']/*\"/>\t\n            <msdn-id>dd388095</msdn-id>\t\n            <unmanaged>HRESULT MFCreateMFByteStreamOnStream([In] IStream* pStream,[Out] IMFByteStream** ppByteStream)</unmanaged>\t\n            <unmanaged-short>MFCreateMFByteStreamOnStream</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CreateProxyLocator(System.String,SharpDX.ComObject,SharpDX.MediaFoundation.NetProxyLocator@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Initializes Microsoft Media Foundation.</p>\t\n            </summary>\t\n            <param name=\"szProtocolRef\"><dd> <p>Version number. Use the value <strong><see cref=\"F:SharpDX.MediaFoundation.MediaFactory.Version\"/></strong>, defined in mfapi.h.</p> </dd></param>\t\n            <param name=\"proxyConfigRef\"><dd> <p>This parameter is optional when using C++ but required in C. The value must be one of the following flags: </p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td> <dl> <dt>MFSTARTUP_NOSOCKET</dt> </dl> </td><td> <p> Do not initialize the sockets library. </p> </td></tr> <tr><td> <dl> <dt>MFSTARTUP_LITE</dt> </dl> </td><td> <p> Equivalent to MFSTARTUP_NOSOCKET. </p> </td></tr> <tr><td> <dl> <dt>MFSTARTUP_FULL</dt> </dl> </td><td> <p> Initialize the entire Media Foundation platform. This is the default value when <em>dwFlags</em> is not specified. </p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <param name=\"proxyLocatorOut\">No documentation.</param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.BadStartupVersion\"/></strong></dt> </dl> </td><td> <p> The <em>Version</em> parameter requires a newer version of Media Foundation than the version that is running.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.DisabledInSafemode\"/></strong></dt> </dl> </td><td> <p> The Media Foundation platform is disabled because the system was started in \"Safe Mode\" (fail-safe boot). </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> An application must call this function before using Media Foundation. Before your application quits, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> once for every previous call to <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong>. </p><p> Do not call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong> or <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> from work queue threads. For more information about work queues, see Work Queues. </p><p>This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCreateProxyLocator']/*\"/>\t\n            <msdn-id>ms702238</msdn-id>\t\n            <unmanaged>HRESULT MFCreateProxyLocator([In] const wchar_t* pszProtocol,[In] IPropertyStore* pProxyConfig,[Out] IMFNetProxyLocator** ppProxyLocator)</unmanaged>\t\n            <unmanaged-short>MFCreateProxyLocator</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CreateSampleGrabberSinkActivate(SharpDX.MediaFoundation.MediaType,SharpDX.MediaFoundation.SampleGrabberSinkCallback,SharpDX.MediaFoundation.Activate@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Creates an activation object for the sample grabber media sink.</p>\t\n            </summary>\t\n            <param name=\"iMFMediaTypeRef\"><dd> <p> Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaType\"/></strong> interface, defining the media type for the sample grabber's input stream. </p> </dd></param>\t\n            <param name=\"iMFSampleGrabberSinkCallbackRef\"><dd> <p> Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.SampleGrabberSinkCallback\"/></strong> interface of a callback object. The caller must implement this interface. </p> </dd></param>\t\n            <param name=\"iActivateOut\"><dd> <p> Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.Activate\"/></strong> interface. Use this interface to complete the creation of the sample grabber. The caller must release the interface. </p> </dd></param>\t\n            <returns><p>If this function succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>To create the sample grabber sink, call <strong><see cref=\"M:SharpDX.MediaFoundation.Activate.ActivateObject(System.Guid,System.IntPtr@)\"/></strong> on the reference received in the <em>ppIActivate</em> parameter.</p><p>Before calling <strong>ActivateObject</strong>, you can configure the sample grabber by setting any of the following attributes on the <em>ppIActivate</em> reference:</p><ul> <li> <see cref=\"F:SharpDX.MediaFoundation.SampleGrabberSinkAttributeKeys.IgnoreClock\"/> </li> <li> <strong><see cref=\"F:SharpDX.MediaFoundation.SampleGrabberSinkAttributeKeys.SampleTimeOffset\"/></strong> </li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCreateSampleGrabberSinkActivate']/*\"/>\t\n            <msdn-id>ms702068</msdn-id>\t\n            <unmanaged>HRESULT MFCreateSampleGrabberSinkActivate([In] IMFMediaType* pIMFMediaType,[In] IMFSampleGrabberSinkCallback* pIMFSampleGrabberSinkCallback,[Out] IMFActivate** ppIActivate)</unmanaged>\t\n            <unmanaged-short>MFCreateSampleGrabberSinkActivate</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CreateMPEG4MediaSink(System.IntPtr,SharpDX.MediaFoundation.MediaType,SharpDX.MediaFoundation.MediaType,SharpDX.MediaFoundation.MediaSink@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Creates a media sink for authoring MP4 files.</p>\t\n            </summary>\t\n            <param name=\"iByteStreamRef\"><dd> <p>A reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.IByteStream\"/></strong> interface of a byte stream.  The media sink writes the MP4 file to this byte stream. The byte stream must be writable and support seeking.</p> </dd></param>\t\n            <param name=\"videoMediaTypeRef\"><dd> <p>A reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaType\"/></strong> interface of a video media type. This type specifies the format of the video stream.</p> <p>This parameter can be <strong><c>null</c></strong>, but not if <em>pAudioMediaType</em> is <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"audioMediaTypeRef\"><dd> <p>A reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaType\"/></strong> interface of an audio media type. This type specifies the format of the audio stream.</p> <p>This parameter can be <strong><c>null</c></strong>, but not if <em>pVideoMediaType</em> is <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"iMediaSinkOut\"><dd> <p>Receives a reference to the MP4 media sink's <strong><see cref=\"T:SharpDX.MediaFoundation.MediaSink\"/></strong> interface. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>If this function succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>The MP4 media sink supports a maximum of one video stream and one audio stream. The initial stream formats are given in the <em>pVideoMediaType</em> and <em>pAudioMediaType</em> parameters. To create an MP4 file with one stream, set the other stream type to <strong><c>null</c></strong>. For example, to create an audio-only file, set <em>pVideoMediaType</em> to <strong><c>null</c></strong>. </p><p>The number of streams is fixed when you create the media sink. The sink does not support the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaSink.AddStreamSink(System.Int32,SharpDX.MediaFoundation.MediaType,SharpDX.MediaFoundation.StreamSink@)\"/></strong> method.</p><p>To author 3GP files, use the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Create3GPMediaSink(System.IntPtr,SharpDX.MediaFoundation.MediaType,SharpDX.MediaFoundation.MediaType,SharpDX.MediaFoundation.MediaSink@)\"/></strong> function.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCreateMPEG4MediaSink']/*\"/>\t\n            <msdn-id>dd388100</msdn-id>\t\n            <unmanaged>HRESULT MFCreateMPEG4MediaSink([In] IMFByteStream* pIByteStream,[In, Optional] IMFMediaType* pVideoMediaType,[In, Optional] IMFMediaType* pAudioMediaType,[Out] IMFMediaSink** ppIMediaSink)</unmanaged>\t\n            <unmanaged-short>MFCreateMPEG4MediaSink</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CreateTranscodeSinkActivate(SharpDX.MediaFoundation.Activate@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Creates the transcode sink activation object.</p><p>The transcode sink activation object can be used to create any of the following file sinks:</p><ul> <li>3GP file sink</li> <li>MP3 file sink</li> <li>MP4 file sink</li> </ul><p>The transcode sink activation object exposes the <strong><see cref=\"T:SharpDX.MediaFoundation.TranscodeSinkInfoProvider\"/></strong> interface.</p>\t\n            </summary>\t\n            <param name=\"activateOut\">No documentation.</param>\t\n            <returns><p>If this function succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCreateTranscodeSinkActivate']/*\"/>\t\n            <msdn-id>dd388115</msdn-id>\t\n            <unmanaged>HRESULT MFCreateTranscodeSinkActivate([Out] IMFActivate** ppActivate)</unmanaged>\t\n            <unmanaged-short>MFCreateTranscodeSinkActivate</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.GetService(SharpDX.ComObject,System.Guid,System.Guid,System.IntPtr@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Queries an object for a specified service interface.</p><p>This function is a helper function that wraps the <strong><see cref=\"M:SharpDX.MediaFoundation.ServiceProvider.GetService(System.Guid,System.Guid,System.IntPtr@)\"/></strong> method. The function queries the object for the <strong><see cref=\"T:SharpDX.MediaFoundation.ServiceProvider\"/></strong> interface and, if successful, calls <strong>GetService</strong> on the object.</p>\t\n            </summary>\t\n            <param name=\"unkObjectRef\">No documentation.</param>\t\n            <param name=\"guidService\">No documentation.</param>\t\n            <param name=\"riid\">No documentation.</param>\t\n            <param name=\"vObjectOut\">No documentation.</param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.UnsupportedService\"/></strong></dt> </dl> </td><td> <p> The service requested cannot be found in the object represented by <em>punkObject</em>. </p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFGetService']/*\"/>\t\n            <msdn-id>ms694284</msdn-id>\t\n            <unmanaged>HRESULT MFGetService([In] IUnknown* punkObject,[In] const GUID&amp; guidService,[In] const GUID&amp; riid,[Out] void** ppvObject)</unmanaged>\t\n            <unmanaged-short>MFGetService</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.GetSupportedMimeTypes(SharpDX.Win32.Variant@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Initializes Microsoft Media Foundation.</p>\t\n            </summary>\t\n            <param name=\"propVarMimeTypeArrayRef\"><dd> <p>Version number. Use the value <strong><see cref=\"F:SharpDX.MediaFoundation.MediaFactory.Version\"/></strong>, defined in mfapi.h.</p> </dd></param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.BadStartupVersion\"/></strong></dt> </dl> </td><td> <p> The <em>Version</em> parameter requires a newer version of Media Foundation than the version that is running.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.DisabledInSafemode\"/></strong></dt> </dl> </td><td> <p> The Media Foundation platform is disabled because the system was started in \"Safe Mode\" (fail-safe boot). </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> An application must call this function before using Media Foundation. Before your application quits, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> once for every previous call to <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong>. </p><p> Do not call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong> or <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> from work queue threads. For more information about work queues, see Work Queues. </p><p>This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFGetSupportedMimeTypes']/*\"/>\t\n            <msdn-id>ms702238</msdn-id>\t\n            <unmanaged>HRESULT MFGetSupportedMimeTypes([Out] PROPVARIANT* pPropVarMimeTypeArray)</unmanaged>\t\n            <unmanaged-short>MFGetSupportedMimeTypes</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.Create3GPMediaSink(System.IntPtr,SharpDX.MediaFoundation.MediaType,SharpDX.MediaFoundation.MediaType,SharpDX.MediaFoundation.MediaSink@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Creates a media sink for authoring 3GP files.</p>\t\n            </summary>\t\n            <param name=\"iByteStreamRef\"><dd> <p>A reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.IByteStream\"/></strong> interface of a byte stream.  The media sink writes the 3GP file to this byte stream. The byte stream must be writable and support seeking.</p> </dd></param>\t\n            <param name=\"videoMediaTypeRef\"><dd> <p>A reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaType\"/></strong> interface of a video media type. This type specifies the format of the video stream.</p> <p>This parameter can be <strong><c>null</c></strong>, but not if <em>pAudioMediaType</em> is <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"audioMediaTypeRef\"><dd> <p>A reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaType\"/></strong> interface of an audio media type. This type specifies the format of the audio stream.</p> <p>This parameter can be <strong><c>null</c></strong>, but not if <em>pVideoMediaType</em> is <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"iMediaSinkOut\"><dd> <p>Receives a reference to the 3GP media sink's <strong><see cref=\"T:SharpDX.MediaFoundation.MediaSink\"/></strong> interface. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>If this function succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>The 3GP media sink supports a maximum of one video stream and one audio stream. The initial stream formats are given in the <em>pVideoMediaType</em> and <em>pAudioMediaType</em> parameters. To create an MP4 file with one stream, set the other stream type to <strong><c>null</c></strong>. For example, to create an audio-only file, set <em>pVideoMediaType</em> to <strong><c>null</c></strong>. </p><p>The number of streams is fixed when you create the media sink. The sink does not support the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaSink.AddStreamSink(System.Int32,SharpDX.MediaFoundation.MediaType,SharpDX.MediaFoundation.StreamSink@)\"/></strong> method.</p><p>To author MP4 files, use the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateMPEG4MediaSink(System.IntPtr,SharpDX.MediaFoundation.MediaType,SharpDX.MediaFoundation.MediaType,SharpDX.MediaFoundation.MediaSink@)\"/></strong> function.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCreate3GPMediaSink']/*\"/>\t\n            <msdn-id>dd388084</msdn-id>\t\n            <unmanaged>HRESULT MFCreate3GPMediaSink([In] IMFByteStream* pIByteStream,[In, Optional] IMFMediaType* pVideoMediaType,[In, Optional] IMFMediaType* pAudioMediaType,[Out] IMFMediaSink** ppIMediaSink)</unmanaged>\t\n            <unmanaged-short>MFCreate3GPMediaSink</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CreateTranscodeTopology(SharpDX.MediaFoundation.MediaSource,System.String,SharpDX.MediaFoundation.TranscodeProfile,SharpDX.MediaFoundation.Topology@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Creates a partial transcode topology.</p><p>The underlying topology builder creates a partial topology by connecting the required pipeline objects:\t\n            source, encoder, and sink. The encoder and the sink are configured according to the settings specified by the caller in the transcode profile. </p><p>To create the transcode profile object, call the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateTranscodeProfile(SharpDX.MediaFoundation.TranscodeProfile@)\"/></strong> function and set the required attributes by calling the appropriate the <strong><see cref=\"T:SharpDX.MediaFoundation.TranscodeProfile\"/></strong> methods. </p><p>The configured transcode profile is passed to the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateTranscodeTopology(SharpDX.MediaFoundation.MediaSource,System.String,SharpDX.MediaFoundation.TranscodeProfile,SharpDX.MediaFoundation.Topology@)\"/></strong> function, which creates the transcode topology with the appropriate settings. The caller can then set this topology on the Media Session and start the session to begin the encoding process. When the Media Session ends, the transcoded file is generated.</p>\t\n            </summary>\t\n            <param name=\"srcRef\">No documentation.</param>\t\n            <param name=\"wszOutputFilePathRef\">No documentation.</param>\t\n            <param name=\"profileRef\">No documentation.</param>\t\n            <param name=\"transcodeTopoOut\">No documentation.</param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table. </p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The function call succeeded, and <em>ppTranscodeTopo</em> receives a reference to the transcode topology.</p> </td></tr> <tr><td> <dl> <dt><strong>E_INVALIDARG</strong></dt> </dl> </td><td> <p><em>pwszOutputFilePath</em> contains invalid characters.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.MediaSourceNoStreamsSelected\"/></strong></dt> </dl> </td><td> <p>No streams are selected in the media source.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.TranscodeNoContainertype\"/></strong></dt> </dl> </td><td> <p>The profile does not contain the <see cref=\"F:SharpDX.MediaFoundation.TranscodeAttributeKeys.TranscodeContainertype\"/> attribute.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.TranscodeNoMatchingEncoder\"/></strong></dt> </dl> </td><td> <p>For one or more streams, cannot find an encoder that accepts the media type given in the profile.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.TranscodeProfileNoMatchingStreams\"/></strong></dt> </dl> </td><td> <p>The profile does not specify a media type for any of the selected streams on the media source.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>For example code that uses this function, see the following topics:</p><ul> <li> Tutorial: Encoding an MP4 File </li> <li> Tutorial: Encoding a WMA File </li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCreateTranscodeTopology']/*\"/>\t\n            <msdn-id>dd388118</msdn-id>\t\n            <unmanaged>HRESULT MFCreateTranscodeTopology([In] IMFMediaSource* pSrc,[In] const wchar_t* pwszOutputFilePath,[In] IMFTranscodeProfile* pProfile,[Out] IMFTopology** ppTranscodeTopo)</unmanaged>\t\n            <unmanaged-short>MFCreateTranscodeTopology</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CreateNetSchemePlugin(System.Guid,System.IntPtr)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Creates the scheme handler for the network source.</p>\t\n            </summary>\t\n            <param name=\"riid\"><dd> <p>Interface identifier (IID) of the interface to retrieve.</p> </dd></param>\t\n            <param name=\"vHandlerOut\"><dd> <p>Receives a reference to the requested interface. The caller must release the interface. The scheme handler exposes the <strong><see cref=\"T:SharpDX.MediaFoundation.SchemeHandler\"/></strong> interface.</p> </dd></param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The function succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCreateNetSchemePlugin']/*\"/>\t\n            <msdn-id>aa378396</msdn-id>\t\n            <unmanaged>HRESULT MFCreateNetSchemePlugin([In] const GUID&amp; riid,[In] void** ppvHandler)</unmanaged>\t\n            <unmanaged-short>MFCreateNetSchemePlugin</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CreatePMPMediaSession(System.Int32,SharpDX.MediaFoundation.MediaAttributes,SharpDX.MediaFoundation.MediaSession@,SharpDX.MediaFoundation.Activate@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Creates an instance of the Media Session inside a Protected Media Path (PMP) process. </p>\t\n            </summary>\t\n            <param name=\"dwCreationFlags\">No documentation.</param>\t\n            <param name=\"configurationRef\">No documentation.</param>\t\n            <param name=\"mediaSessionOut\">No documentation.</param>\t\n            <param name=\"enablerActivateOut\">No documentation.</param>\t\n            <returns><p> The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table. </p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The function succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>You can use the <em>pConfiguration</em> parameter to set any of the following attributes:</p><ul> <li> <strong><see cref=\"F:SharpDX.MediaFoundation.MediaSessionAttributeKeys.ContentProtectionManager\"/></strong> </li> <li> <strong><see cref=\"F:SharpDX.MediaFoundation.MediaSessionAttributeKeys.GlobalTime\"/></strong> </li> <li> <strong><see cref=\"F:SharpDX.MediaFoundation.MediaSessionAttributeKeys.QualityManager\"/></strong> </li> <li> <strong><see cref=\"F:SharpDX.MediaFoundation.MediaSessionAttributeKeys.RemoteSourceMode\"/></strong> </li> <li> <strong><see cref=\"F:SharpDX.MediaFoundation.MediaSessionAttributeKeys.ServerContext\"/></strong> </li> <li> <strong><see cref=\"F:SharpDX.MediaFoundation.MediaSessionAttributeKeys.Topoloader\"/></strong> </li> </ul><p>If this function cannot create the PMP Media Session because a trusted binary was revoked, the <em>ppEnablerActivate</em> parameter receives an <strong><see cref=\"T:SharpDX.MediaFoundation.Activate\"/></strong> interface reference. The application can use this reference to create a content enabler object, which can then be used to download an updated binary:</p><ol> <li> Call <strong><see cref=\"M:SharpDX.MediaFoundation.Activate.ActivateObject(System.Guid,System.IntPtr@)\"/></strong> with the interface identifier IID_IMFContentEnabler to get an <strong><see cref=\"T:SharpDX.MediaFoundation.ContentEnabler\"/></strong> interface reference. </li> <li> Use that interface to download the updated binary. </li> <li> Call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreatePMPMediaSession(System.Int32,SharpDX.MediaFoundation.MediaAttributes,SharpDX.MediaFoundation.MediaSession@,SharpDX.MediaFoundation.Activate@)\"/></strong> again. </li> </ol><p>If the function successfully creates the PMP Media Session, the <em>ppEnablerActivate</em> parameter receives the value <strong><c>null</c></strong>.</p><p>Do not make calls to the PMP Media Session from a thread that is processing a window message sent from another thread. To test whether the current thread falls into this category, call <strong>InSendMessage</strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCreatePMPMediaSession']/*\"/>\t\n            <msdn-id>ms703144</msdn-id>\t\n            <unmanaged>HRESULT MFCreatePMPMediaSession([In] unsigned int dwCreationFlags,[In] IMFAttributes* pConfiguration,[Out] IMFMediaSession** ppMediaSession,[Out, Optional] IMFActivate** ppEnablerActivate)</unmanaged>\t\n            <unmanaged-short>MFCreatePMPMediaSession</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CreatePropertyStore(SharpDX.ComObject@)\">\n            <summary>\t\n            <p>[This API is not supported and may be altered or unavailable in the future. Instead, applications should use the <strong>PSCreateMemoryPropertyStore</strong> function to create property stores.]</p><p><strong>Applies to: </strong>desktop apps only</p><p> Creates an empty property store object.</p>\t\n            </summary>\t\n            <param name=\"storeOut\"><dd> <p> Receives a reference to the <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interface. The caller must release the interface. </p> </dd></param>\t\n            <returns><p>If this function succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='CreatePropertyStore']/*\"/>\t\n            <msdn-id>ms702984</msdn-id>\t\n            <unmanaged>HRESULT CreatePropertyStore([Out] IPropertyStore** ppStore)</unmanaged>\t\n            <unmanaged-short>CreatePropertyStore</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CreateAudioRendererActivate(SharpDX.MediaFoundation.Activate@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Creates an activation object for the Streaming Audio Renderer.</p>\t\n            </summary>\t\n            <param name=\"activateOut\">No documentation.</param>\t\n            <returns><p>If this function succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>To create the audio renderer, call <strong><see cref=\"M:SharpDX.MediaFoundation.Activate.ActivateObject(System.Guid,System.IntPtr@)\"/></strong> on the retrieved <strong><see cref=\"T:SharpDX.MediaFoundation.Activate\"/></strong> reference.</p><p><strong>Note</strong>??To avoid a memory leak, call <strong><see cref=\"M:SharpDX.MediaFoundation.Activate.ShutdownObject\"/></strong> before releasing the final reference to the audio renderer or the audio renderer activate object.</p><p>To configure the audio renderer, set any of the following attributes on the <strong><see cref=\"T:SharpDX.MediaFoundation.Activate\"/></strong> object before calling <strong>ActivateObject</strong>. (If you are using the Media Session, the Media Session automatically calls <strong>ActivateObject</strong> when you queue the topology.)</p><table> <tr><th>Attribute</th><th>Description</th></tr> <tr><td> <strong><see cref=\"F:SharpDX.MediaFoundation.AudioRendererAttributeKeys.EndpointId\"/></strong> </td><td>The audio endpoint device identifier.</td></tr> <tr><td> <strong><see cref=\"F:SharpDX.MediaFoundation.AudioRendererAttributeKeys.EndpointRole\"/></strong> </td><td>The audio endpoint role.</td></tr> <tr><td> <strong><see cref=\"F:SharpDX.MediaFoundation.AudioRendererAttributeKeys.Flags\"/></strong> </td><td>Miscellaneous configuration flags.</td></tr> <tr><td> <strong><see cref=\"F:SharpDX.MediaFoundation.AudioRendererAttributeKeys.SessionId\"/></strong> </td><td>The audio policy class.</td></tr> <tr><td> MF_AUDIO_RENDERER_ATTRIBUTE_STREAM_CATEGORY </td><td>The audio stream category.</td></tr> <tr><td> MF_LOW_LATENCY </td><td>Enables low-latency audio streaming.</td></tr> </table><p>?</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCreateAudioRendererActivate']/*\"/>\t\n            <msdn-id>ms702998</msdn-id>\t\n            <unmanaged>HRESULT MFCreateAudioRendererActivate([Out] IMFActivate** ppActivate)</unmanaged>\t\n            <unmanaged-short>MFCreateAudioRendererActivate</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CreateDeviceSource(SharpDX.MediaFoundation.MediaAttributes,SharpDX.MediaFoundation.MediaSource@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Creates a media source for a hardware capture device.</p>\t\n            </summary>\t\n            <param name=\"attributesRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaAttributes\"/></strong> interface of an attribute store, which is used to select the device. See Remarks.</p> </dd></param>\t\n            <param name=\"sourceOut\"><dd> <p>Receives a reference to the media source's <strong><see cref=\"T:SharpDX.MediaFoundation.MediaSource\"/></strong> interface. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>If this function succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>The <em>pAttributes</em> parameter specifies an attribute store. To create the attribute store, call the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateAttributes(SharpDX.MediaFoundation.MediaAttributes,System.Int32)\"/></strong> function.  You must set the <see cref=\"F:SharpDX.MediaFoundation.CaptureDeviceAttributeKeys.SourceType\"/> attribute, which specifies the type of device (audio or video).</p><p>For audio capture devices, optionally set one of the following attributes:</p><p></p><table> <tr><th>Attribute</th><th>Description</th></tr> <tr><td> <p> <see cref=\"F:SharpDX.MediaFoundation.CaptureDeviceAttributeKeys.SourceTypeAudcapEndpointId\"/> </p> </td><td> <p>Specifies the audio endpoint ID of the audio capture device.</p> </td></tr> <tr><td> <p> <see cref=\"F:SharpDX.MediaFoundation.CaptureDeviceAttributeKeys.SourceTypeAudcapRole\"/> </p> </td><td> <p>Specifies the device role. If this attribute is set, the function uses the default audio capture device for that device role.</p> <p>Do not combine this attribute with the <see cref=\"F:SharpDX.MediaFoundation.CaptureDeviceAttributeKeys.SourceTypeAudcapEndpointId\"/> attribute.</p> </td></tr> </table><p>?</p><p>If neither attribute is specified, the function selects the default audio capture device for the <strong>eCommunications</strong> role.</p><p>For video capture devices, you must set the following attribute:</p><p></p><table> <tr><th>Attribute</th><th>Description</th></tr> <tr><td> <p> <see cref=\"F:SharpDX.MediaFoundation.CaptureDeviceAttributeKeys.SourceTypeVidcapSymbolicLink\"/> </p> </td><td> <p>Specifies the symbolic link to the device.</p> </td></tr> </table><p>?</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCreateDeviceSource']/*\"/>\t\n            <msdn-id>dd388091</msdn-id>\t\n            <unmanaged>HRESULT MFCreateDeviceSource([In] IMFAttributes* pAttributes,[Out] IMFMediaSource** ppSource)</unmanaged>\t\n            <unmanaged-short>MFCreateDeviceSource</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CreatePresentationDescriptor(System.Int32,SharpDX.MediaFoundation.StreamDescriptor[],SharpDX.MediaFoundation.PresentationDescriptor@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Creates a presentation descriptor.</p>\t\n            </summary>\t\n            <param name=\"cStreamDescriptors\"><dd> <p>Number of elements in the <em>apStreamDescriptors</em> array.</p> </dd></param>\t\n            <param name=\"apStreamDescriptors\"><dd> <p>Array of <strong><see cref=\"T:SharpDX.MediaFoundation.StreamDescriptor\"/></strong> interface references. Each reference represents a stream descriptor for one stream in the presentation.</p> </dd></param>\t\n            <param name=\"presentationDescriptorOut\"><dd> <p>Receives a reference to an <strong><see cref=\"T:SharpDX.MediaFoundation.PresentationDescriptor\"/></strong> interface of the presentation descriptor. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>If this function succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p> If you are writing a custom media source, you can use this function to create the source presentation descriptor. The presentation descriptor is created with no streams selected. Generally, a media source should select at least one stream by default. To select a stream, call <strong><see cref=\"M:SharpDX.MediaFoundation.PresentationDescriptor.SelectStream(System.Int32)\"/></strong>. </p><p>This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCreatePresentationDescriptor']/*\"/>\t\n            <msdn-id>ms695404</msdn-id>\t\n            <unmanaged>HRESULT MFCreatePresentationDescriptor([In] unsigned int cStreamDescriptors,[In, Buffer, Optional] IMFStreamDescriptor** apStreamDescriptors,[Out] IMFPresentationDescriptor** ppPresentationDescriptor)</unmanaged>\t\n            <unmanaged-short>MFCreatePresentationDescriptor</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.GetSupportedSchemes(SharpDX.Win32.Variant@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Enumerates a list of audio or video capture devices.</p>\t\n            </summary>\t\n            <param name=\"propVarSchemeArrayRef\"><dd> <p>Pointer to an attribute store that contains search criteria. To create the attribute store, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateAttributes(SharpDX.MediaFoundation.MediaAttributes,System.Int32)\"/></strong>. Set one or more of the following attributes on the attribute store:</p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.CaptureDeviceAttributeKeys.SourceType\"/></strong></dt> </dl> </td><td> <p>Specifies whether to enumerate audio or video devices. (Required.)</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.CaptureDeviceAttributeKeys.SourceTypeAudcapRole\"/></strong></dt> </dl> </td><td> <p>For audio capture devices, specifies the device role. (Optional.)</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.CaptureDeviceAttributeKeys.SourceTypeVidcapCategory\"/></strong></dt> </dl> </td><td> <p>For video capture devices, specifies the device category. (Optional.)</p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <returns><p>If this function succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>Each returned <strong><see cref=\"T:SharpDX.MediaFoundation.Activate\"/></strong> reference represents a capture device, and can be used to create a media source for that device. You can also use the <strong><see cref=\"T:SharpDX.MediaFoundation.Activate\"/></strong> reference to query for attributes that describe the device. The following attributes might be set:</p><table> <tr><th>Attribute</th><th>Description</th></tr> <tr><td> <see cref=\"F:SharpDX.MediaFoundation.CaptureDeviceAttributeKeys.FriendlyName\"/> </td><td>The display name of the device.</td></tr> <tr><td> <see cref=\"F:SharpDX.MediaFoundation.CaptureDeviceAttributeKeys.MediaType\"/> </td><td>The major type and subtype GUIDs that describe the device's output format.</td></tr> <tr><td> <see cref=\"F:SharpDX.MediaFoundation.CaptureDeviceAttributeKeys.SourceType\"/> </td><td>The type of capture device (audio or video).</td></tr> <tr><td> <see cref=\"F:SharpDX.MediaFoundation.CaptureDeviceAttributeKeys.SourceTypeAudcapEndpointId\"/> </td><td>The audio endpoint ID string. (Audio devices only.)</td></tr> <tr><td> <see cref=\"F:SharpDX.MediaFoundation.CaptureDeviceAttributeKeys.SourceTypeVidcapCategory\"/> </td><td>The device category. (Video devices only.)</td></tr> <tr><td> <see cref=\"F:SharpDX.MediaFoundation.CaptureDeviceAttributeKeys.SourceTypeVidcapHwSource\"/> </td><td> Whether a device is a hardware or software device. (Video devices only.)</td></tr> <tr><td> <see cref=\"F:SharpDX.MediaFoundation.CaptureDeviceAttributeKeys.SourceTypeVidcapSymbolicLink\"/> </td><td>The symbolic link for the device driver. (Video devices only.)</td></tr> </table><p>?</p><p>To create a media source from an <strong><see cref=\"T:SharpDX.MediaFoundation.Activate\"/></strong> reference, call the <strong><see cref=\"M:SharpDX.MediaFoundation.Activate.ActivateObject(System.Guid,System.IntPtr@)\"/></strong> method.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFGetSupportedSchemes']/*\"/>\t\n            <msdn-id>dd388503</msdn-id>\t\n            <unmanaged>HRESULT MFGetSupportedSchemes([Out] PROPVARIANT* pPropVarSchemeArray)</unmanaged>\t\n            <unmanaged-short>MFGetSupportedSchemes</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.TranscodeGetAudioOutputAvailableTypes(System.Guid,System.Int32,SharpDX.MediaFoundation.MediaAttributes,SharpDX.MediaFoundation.Collection@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Gets a list of output formats from an audio encoder.</p>\t\n            </summary>\t\n            <param name=\"guidSubType\"><dd> <p>Specifies the subtype of the output media. The encoder uses this value as a filter when it is enumerating the available output types. For information about the audio subtypes, see  <strong>Audio Subtype GUIDs</strong>. </p> </dd></param>\t\n            <param name=\"dwMFTFlags\"><dd> <p>Bitwise <strong>OR</strong> of zero or more flags from the <strong>_MFT_ENUM_FLAG</strong> enumeration. </p> </dd></param>\t\n            <param name=\"codecConfigRef\"><dd> <p>A reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaAttributes\"/></strong> interface of an attribute store. The attribute store specifies the encoder configuration settings. This parameter can be <strong><c>null</c></strong>. The attribute store can hold any of the following attributes.</p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.TransformAttributeKeys.MftFieldofuseUnlockAttribute\"/></strong></dt> </dl> </td><td> <p>Set this attribute to unlock an encoder that has field-of-use descriptions.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.TranscodeAttributeKeys.TranscodeEncodingprofile\"/></strong></dt> </dl> </td><td> <p>Specifies a device conformance profile for a Windows Media encoder.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.TranscodeAttributeKeys.TranscodeQualityvsspeed\"/></strong></dt> </dl> </td><td> <p>Sets the tradeoff between encoding quality and encoding speed.</p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <param name=\"availableTypesOut\"><dd> <p>Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.Collection\"/></strong> interface of a collection object that contains a list of preferred audio media types. The collection contains <strong><see cref=\"T:SharpDX.MediaFoundation.MediaType\"/></strong> references. The caller must release the interface reference.</p> </dd></param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table. </p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The function call succeeded. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.TranscodeNoMatchingEncoder\"/></strong></dt> </dl> </td><td> <p>Failed to find an encoder that matches the specified configuration settings.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>This function assumes the encoder will be used in its default encoding mode, which is typically constant bit-rate (CBR) encoding. Therefore, the types returned by the function might not work with other modes, such as variable bit-rate (VBR) encoding.</p><p>Internally, this function works by calling <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.TEnumEx(System.Guid,System.Int32,System.Nullable{SharpDX.MediaFoundation.TRegisterTypeInformation},System.Nullable{SharpDX.MediaFoundation.TRegisterTypeInformation},System.IntPtr@,System.Int32@)\"/></strong> to find a matching encoder, and then calling <strong><see cref=\"M:SharpDX.MediaFoundation.Transform.GetOutputAvailableType(System.Int32,System.Int32,SharpDX.MediaFoundation.MediaType@)\"/></strong> to get the encoder's output types.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFTranscodeGetAudioOutputAvailableTypes']/*\"/>\t\n            <msdn-id>dd388655</msdn-id>\t\n            <unmanaged>HRESULT MFTranscodeGetAudioOutputAvailableTypes([In] const GUID&amp; guidSubType,[In] unsigned int dwMFTFlags,[In, Optional] IMFAttributes* pCodecConfig,[Out] IMFCollection** ppAvailableTypes)</unmanaged>\t\n            <unmanaged-short>MFTranscodeGetAudioOutputAvailableTypes</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CreateSampleCopierMFT(SharpDX.MediaFoundation.Transform@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Creates an instance of the sample copier transform.</p>\t\n            </summary>\t\n            <param name=\"copierMFTOut\"><dd> <p>Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.Transform\"/></strong> interface. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>If this function succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>The sample copier is a Media Foundation transform (MFT) that copies data from input samples to output samples without modifying the data. The following data is copied from the sample:</p><ul> <li>All Sample Attributes.</li> <li>The time stamp and duration.</li> <li>Sample flags (see <strong><see cref=\"M:SharpDX.MediaFoundation.Sample.SetSampleFlags(System.Int32)\"/></strong>).</li> <li>The data in the media buffers. If the input sample contains multiple buffers, the data is copied into a single buffer on the output sample.</li> </ul><p>This MFT is useful in the following situation:</p><ul> <li>One pipeline object, such as a media source, allocates media samples for output.</li> <li>Another pipeline object, such as a media sink, allocates its own media samples for input. For example, the object might require buffers allocated from a special memory pool, such as video memory.</li> </ul><p>The following diagram shows this situation with a media source and a media sink.</p><p></p><p>In order for the media sink to receive data from the media source, the data must be copied into the media samples owned by the media sink. The sample copier can be used for this purpose.</p><p>A specific example of such a media sink is the  Enhanced Video Renderer (EVR). The EVR allocates samples that contain Direct3D surface buffers, so it cannot receive video samples directly from a media source. Starting in Windows?7, the topology loader automatically handles this case by inserting the sample copier between the media source and the EVR.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCreateSampleCopierMFT']/*\"/>\t\n            <msdn-id>dd388101</msdn-id>\t\n            <unmanaged>HRESULT MFCreateSampleCopierMFT([Out] IMFTransform** ppCopierMFT)</unmanaged>\t\n            <unmanaged-short>MFCreateSampleCopierMFT</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CreateTopologyNode(SharpDX.MediaFoundation.TopologyType,SharpDX.MediaFoundation.TopologyNode@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Creates a topology node.</p>\t\n            </summary>\t\n            <param name=\"nodeType\"><dd> <p> The type of node to create, specified as a member of the <strong><see cref=\"T:SharpDX.MediaFoundation.TopologyType\"/></strong> enumeration.</p> </dd></param>\t\n            <param name=\"nodeOut\"><dd> <p> Receives a reference to the node's <strong><see cref=\"T:SharpDX.MediaFoundation.TopologyNode\"/></strong> interface. The caller must release the interface. </p> </dd></param>\t\n            <returns><p>If this function succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCreateTopologyNode']/*\"/>\t\n            <msdn-id>ms697574</msdn-id>\t\n            <unmanaged>HRESULT MFCreateTopologyNode([In] MF_TOPOLOGY_TYPE NodeType,[Out] IMFTopologyNode** ppNode)</unmanaged>\t\n            <unmanaged-short>MFCreateTopologyNode</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CreateSourceResolver(SharpDX.MediaFoundation.SourceResolver@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Creates the source resolver, which is used to create a media source from a URL or byte stream. </p>\t\n            </summary>\t\n            <param name=\"iSourceResolverOut\"><dd> <p>Receives a reference to the source resolver's <strong><see cref=\"T:SharpDX.MediaFoundation.SourceResolver\"/></strong> interface. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>If this function succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p><strong>Note</strong>??Prior to Windows?7, this function was exported from mf.dll. Starting in Windows?7, this function is exported from mfplat.dll, and mf.dll exports a stub function that calls into mfplat.dll. For more information, see Library Changes in Windows?7.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCreateSourceResolver']/*\"/>\t\n            <msdn-id>ms697433</msdn-id>\t\n            <unmanaged>HRESULT MFCreateSourceResolver([Out] IMFSourceResolver** ppISourceResolver)</unmanaged>\t\n            <unmanaged-short>MFCreateSourceResolver</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CreateVideoRendererActivate(System.IntPtr,SharpDX.MediaFoundation.Activate@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Creates an activation object for the enhanced video renderer (EVR) media sink.</p>\t\n            </summary>\t\n            <param name=\"hwndVideo\"><dd> <p>Handle to the window where the video will be displayed.</p> </dd></param>\t\n            <param name=\"activateOut\"><dd> <p>Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.Activate\"/></strong> interface. Use this interface to create the EVR. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>To create the EVR, call <strong><see cref=\"M:SharpDX.MediaFoundation.Activate.ActivateObject(System.Guid,System.IntPtr@)\"/></strong> on the retrieved <strong><see cref=\"T:SharpDX.MediaFoundation.Activate\"/></strong> reference. (If you are using the Media Session, the Media Session automatically calls <strong>ActivateObject</strong> when you queue the topology.)</p><p>To configure the EVR, set any of the following attributes on the <strong><see cref=\"T:SharpDX.MediaFoundation.Activate\"/></strong> object before calling <strong>ActivateObject</strong>.</p><table> <tr><th>Attribute</th><th>Description</th></tr> <tr><td> <strong><see cref=\"F:SharpDX.MediaFoundation.EVRCustomVideoAttributeKeys.MixerActivate\"/></strong> </td><td>Activation object for a custom mixer.</td></tr> <tr><td> <strong><see cref=\"F:SharpDX.MediaFoundation.EVRCustomVideoAttributeKeys.MixerClsid\"/></strong> </td><td>CLSID for a custom mixer.</td></tr> <tr><td> <strong><see cref=\"F:SharpDX.MediaFoundation.EVRCustomVideoAttributeKeys.MixerFlags\"/></strong> </td><td>Flags for creating a custom mixer.</td></tr> <tr><td> <strong><see cref=\"F:SharpDX.MediaFoundation.EVRCustomVideoAttributeKeys.PresenterActivate\"/></strong> </td><td>Activation object for a custom presenter.</td></tr> <tr><td> <strong><see cref=\"F:SharpDX.MediaFoundation.EVRCustomVideoAttributeKeys.PresenterClsid\"/></strong> </td><td>CLSID for a custom presenter.</td></tr> <tr><td> <strong><see cref=\"F:SharpDX.MediaFoundation.EVRCustomVideoAttributeKeys.PresenterFlags\"/></strong> </td><td>Flags for creating a custom presenter.</td></tr> </table><p>?</p><p>When <strong><see cref=\"M:SharpDX.MediaFoundation.Activate.ActivateObject(System.Guid,System.IntPtr@)\"/></strong> is called, the activation objects sets the video window on the EVR by calling <strong><see cref=\"M:SharpDX.MediaFoundation.VideoDisplayControl.SetVideoPosition(System.Nullable{SharpDX.MediaFoundation.VideoNormalizedRect},System.Nullable{SharpDX.Rectangle})\"/></strong>. Passing <strong><c>null</c></strong> for the <em>hwndVideo</em> parameter is not an error, but no video will render unless the EVR has a valid video window.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCreateVideoRendererActivate']/*\"/>\t\n            <msdn-id>ms693543</msdn-id>\t\n            <unmanaged>HRESULT MFCreateVideoRendererActivate([In] HWND hwndVideo,[Out] IMFActivate** ppActivate)</unmanaged>\t\n            <unmanaged-short>MFCreateVideoRendererActivate</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CreateTopology(SharpDX.MediaFoundation.Topology@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Creates a topology object.</p>\t\n            </summary>\t\n            <param name=\"topoOut\"><dd> <p>Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.Topology\"/></strong> interface of the topology object. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The function succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCreateTopology']/*\"/>\t\n            <msdn-id>ms701584</msdn-id>\t\n            <unmanaged>HRESULT MFCreateTopology([Out] IMFTopology** ppTopo)</unmanaged>\t\n            <unmanaged-short>MFCreateTopology</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.GetTopoNodeCurrentType(SharpDX.MediaFoundation.TopologyNode,System.Int32,SharpDX.Bool,SharpDX.MediaFoundation.MediaType@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Initializes Microsoft Media Foundation.</p>\t\n            </summary>\t\n            <param name=\"nodeRef\"><dd> <p>Version number. Use the value <strong><see cref=\"F:SharpDX.MediaFoundation.MediaFactory.Version\"/></strong>, defined in mfapi.h.</p> </dd></param>\t\n            <param name=\"dwStreamIndex\"><dd> <p>This parameter is optional when using C++ but required in C. The value must be one of the following flags: </p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td> <dl> <dt>MFSTARTUP_NOSOCKET</dt> </dl> </td><td> <p> Do not initialize the sockets library. </p> </td></tr> <tr><td> <dl> <dt>MFSTARTUP_LITE</dt> </dl> </td><td> <p> Equivalent to MFSTARTUP_NOSOCKET. </p> </td></tr> <tr><td> <dl> <dt>MFSTARTUP_FULL</dt> </dl> </td><td> <p> Initialize the entire Media Foundation platform. This is the default value when <em>dwFlags</em> is not specified. </p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <param name=\"fOutput\">No documentation.</param>\t\n            <param name=\"typeOut\">No documentation.</param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.BadStartupVersion\"/></strong></dt> </dl> </td><td> <p> The <em>Version</em> parameter requires a newer version of Media Foundation than the version that is running.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.DisabledInSafemode\"/></strong></dt> </dl> </td><td> <p> The Media Foundation platform is disabled because the system was started in \"Safe Mode\" (fail-safe boot). </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> An application must call this function before using Media Foundation. Before your application quits, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> once for every previous call to <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong>. </p><p> Do not call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong> or <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> from work queue threads. For more information about work queues, see Work Queues. </p><p>This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFGetTopoNodeCurrentType']/*\"/>\t\n            <msdn-id>ms702238</msdn-id>\t\n            <unmanaged>HRESULT MFGetTopoNodeCurrentType([In] IMFTopologyNode* pNode,[In] unsigned int dwStreamIndex,[In] BOOL fOutput,[Out] IMFMediaType** ppType)</unmanaged>\t\n            <unmanaged-short>MFGetTopoNodeCurrentType</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CreateSimpleTypeHandler(SharpDX.MediaFoundation.MediaTypeHandler@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Initializes Microsoft Media Foundation.</p>\t\n            </summary>\t\n            <param name=\"handlerOut\"><dd> <p>Version number. Use the value <strong><see cref=\"F:SharpDX.MediaFoundation.MediaFactory.Version\"/></strong>, defined in mfapi.h.</p> </dd></param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.BadStartupVersion\"/></strong></dt> </dl> </td><td> <p> The <em>Version</em> parameter requires a newer version of Media Foundation than the version that is running.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.DisabledInSafemode\"/></strong></dt> </dl> </td><td> <p> The Media Foundation platform is disabled because the system was started in \"Safe Mode\" (fail-safe boot). </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> An application must call this function before using Media Foundation. Before your application quits, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> once for every previous call to <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong>. </p><p> Do not call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong> or <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> from work queue threads. For more information about work queues, see Work Queues. </p><p>This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCreateSimpleTypeHandler']/*\"/>\t\n            <msdn-id>ms702238</msdn-id>\t\n            <unmanaged>HRESULT MFCreateSimpleTypeHandler([Out] IMFMediaTypeHandler** ppHandler)</unmanaged>\t\n            <unmanaged-short>MFCreateSimpleTypeHandler</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CreateSequencerSegmentOffset(System.Int32,System.Int64,SharpDX.Win32.Variant@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Initializes Microsoft Media Foundation.</p>\t\n            </summary>\t\n            <param name=\"dwId\"><dd> <p>Version number. Use the value <strong><see cref=\"F:SharpDX.MediaFoundation.MediaFactory.Version\"/></strong>, defined in mfapi.h.</p> </dd></param>\t\n            <param name=\"hnsOffset\"><dd> <p>This parameter is optional when using C++ but required in C. The value must be one of the following flags: </p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td> <dl> <dt>MFSTARTUP_NOSOCKET</dt> </dl> </td><td> <p> Do not initialize the sockets library. </p> </td></tr> <tr><td> <dl> <dt>MFSTARTUP_LITE</dt> </dl> </td><td> <p> Equivalent to MFSTARTUP_NOSOCKET. </p> </td></tr> <tr><td> <dl> <dt>MFSTARTUP_FULL</dt> </dl> </td><td> <p> Initialize the entire Media Foundation platform. This is the default value when <em>dwFlags</em> is not specified. </p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <param name=\"varSegmentOffsetRef\">No documentation.</param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.BadStartupVersion\"/></strong></dt> </dl> </td><td> <p> The <em>Version</em> parameter requires a newer version of Media Foundation than the version that is running.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.DisabledInSafemode\"/></strong></dt> </dl> </td><td> <p> The Media Foundation platform is disabled because the system was started in \"Safe Mode\" (fail-safe boot). </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> An application must call this function before using Media Foundation. Before your application quits, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> once for every previous call to <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong>. </p><p> Do not call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong> or <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> from work queue threads. For more information about work queues, see Work Queues. </p><p>This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCreateSequencerSegmentOffset']/*\"/>\t\n            <msdn-id>ms702238</msdn-id>\t\n            <unmanaged>HRESULT MFCreateSequencerSegmentOffset([In] unsigned int dwId,[In] longlong hnsOffset,[Out] PROPVARIANT* pvarSegmentOffset)</unmanaged>\t\n            <unmanaged-short>MFCreateSequencerSegmentOffset</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.ShutdownObject(SharpDX.ComObject)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Initializes Microsoft Media Foundation.</p>\t\n            </summary>\t\n            <param name=\"unkRef\"><dd> <p>Version number. Use the value <strong><see cref=\"F:SharpDX.MediaFoundation.MediaFactory.Version\"/></strong>, defined in mfapi.h.</p> </dd></param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.BadStartupVersion\"/></strong></dt> </dl> </td><td> <p> The <em>Version</em> parameter requires a newer version of Media Foundation than the version that is running.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.DisabledInSafemode\"/></strong></dt> </dl> </td><td> <p> The Media Foundation platform is disabled because the system was started in \"Safe Mode\" (fail-safe boot). </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> An application must call this function before using Media Foundation. Before your application quits, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> once for every previous call to <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong>. </p><p> Do not call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong> or <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> from work queue threads. For more information about work queues, see Work Queues. </p><p>This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFShutdownObject']/*\"/>\t\n            <msdn-id>ms702238</msdn-id>\t\n            <unmanaged>HRESULT MFShutdownObject([In] IUnknown* pUnk)</unmanaged>\t\n            <unmanaged-short>MFShutdownObject</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CreateRemoteDesktopPlugin(SharpDX.MediaFoundation.RemoteDesktopPlugin@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Creates the remote desktop plug-in object. Use this object if the application is running in a Terminal Services client session.</p>\t\n            </summary>\t\n            <param name=\"pluginOut\"><dd> <p>Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.RemoteDesktopPlugin\"/></strong> interface of the plug-in object. The caller must release the interface.</p> </dd></param>\t\n            <returns><p> The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table. </p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The function succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong>E_ACCESSDENIED</strong></dt> </dl> </td><td> <p>Remote desktop connections are not allowed by the current session policy.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCreateRemoteDesktopPlugin']/*\"/>\t\n            <msdn-id>ms703133</msdn-id>\t\n            <unmanaged>HRESULT MFCreateRemoteDesktopPlugin([Out] IMFRemoteDesktopPlugin** ppPlugin)</unmanaged>\t\n            <unmanaged-short>MFCreateRemoteDesktopPlugin</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CreateTopoLoader(SharpDX.MediaFoundation.TopoLoader@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Creates a new instance of the topology loader.</p>\t\n            </summary>\t\n            <param name=\"objOut\"><dd> <p>Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.TopoLoader\"/></strong> interface of the topology loader. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The function succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCreateTopoLoader']/*\"/>\t\n            <msdn-id>ms694159</msdn-id>\t\n            <unmanaged>HRESULT MFCreateTopoLoader([Out] IMFTopoLoader** ppObj)</unmanaged>\t\n            <unmanaged-short>MFCreateTopoLoader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CreateStreamDescriptor(System.Int32,System.Int32,SharpDX.MediaFoundation.MediaType[],SharpDX.MediaFoundation.StreamDescriptor@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Creates a stream descriptor. </p>\t\n            </summary>\t\n            <param name=\"dwStreamIdentifier\"><dd> <p> Stream identifier. </p> </dd></param>\t\n            <param name=\"cMediaTypes\"><dd> <p> Number of elements in the <em>apMediaTypes</em> array. </p> </dd></param>\t\n            <param name=\"apMediaTypes\"><dd> <p> Pointer to an array of <strong><see cref=\"T:SharpDX.MediaFoundation.MediaType\"/></strong> interface references. These references are used to initialize the media type handler for the stream descriptor. </p> </dd></param>\t\n            <param name=\"descriptorOut\"><dd> <p> Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.StreamDescriptor\"/></strong> interface of the new stream descriptor. The caller must release the interface. </p> </dd></param>\t\n            <returns><p>If this function succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p> If you are writing a custom media source, you can use this function to create stream descriptors for the source. This function automatically creates the stream descriptor media type handler and initializes it with the list of types given in <em>apMediaTypes</em>. The function does not set the current media type on the handler, however. To set the type, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaTypeHandler.SetCurrentMediaType(SharpDX.MediaFoundation.MediaType)\"/></strong>. </p><p>This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCreateStreamDescriptor']/*\"/>\t\n            <msdn-id>ms698990</msdn-id>\t\n            <unmanaged>HRESULT MFCreateStreamDescriptor([In] unsigned int dwStreamIdentifier,[In] unsigned int cMediaTypes,[In, Buffer] IMFMediaType** apMediaTypes,[Out] IMFStreamDescriptor** ppDescriptor)</unmanaged>\t\n            <unmanaged-short>MFCreateStreamDescriptor</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.GetSystemTime\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Returns the system time. </p>\t\n            </summary>\t\n            <returns><p> Returns the system time, in 100-nanosecond units. </p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFGetSystemTime']/*\"/>\t\n            <msdn-id>ms704625</msdn-id>\t\n            <unmanaged>longlong MFGetSystemTime()</unmanaged>\t\n            <unmanaged-short>MFGetSystemTime</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CreateMP3MediaSink(System.IntPtr,SharpDX.MediaFoundation.MediaSink@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Creates the MP3 media sink.</p>\t\n            </summary>\t\n            <param name=\"targetByteStreamRef\"><dd> <p>A reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.IByteStream\"/></strong> interface of a byte stream.  The media sink writes the MP3 file to this byte stream. The byte stream must be writable.</p> </dd></param>\t\n            <param name=\"mediaSinkOut\"><dd> <p>Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaSink\"/></strong> interface of the MP3 media sink.. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>If this function succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p> The MP3  media sink takes compressed MP3\t\n            audio samples as input, and writes an MP3 file with ID3 headers as output. The MP3 media sink does not perform MP3 audio encoding. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCreateMP3MediaSink']/*\"/>\t\n            <msdn-id>dd388098</msdn-id>\t\n            <unmanaged>HRESULT MFCreateMP3MediaSink([In] IMFByteStream* pTargetByteStream,[Out] IMFMediaSink** ppMediaSink)</unmanaged>\t\n            <unmanaged-short>MFCreateMP3MediaSink</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CreateDeviceSourceActivate(SharpDX.MediaFoundation.MediaAttributes,SharpDX.MediaFoundation.Activate@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Initializes Microsoft Media Foundation.</p>\t\n            </summary>\t\n            <param name=\"attributesRef\"><dd> <p>Version number. Use the value <strong><see cref=\"F:SharpDX.MediaFoundation.MediaFactory.Version\"/></strong>, defined in mfapi.h.</p> </dd></param>\t\n            <param name=\"activateOut\"><dd> <p>This parameter is optional when using C++ but required in C. The value must be one of the following flags: </p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td> <dl> <dt>MFSTARTUP_NOSOCKET</dt> </dl> </td><td> <p> Do not initialize the sockets library. </p> </td></tr> <tr><td> <dl> <dt>MFSTARTUP_LITE</dt> </dl> </td><td> <p> Equivalent to MFSTARTUP_NOSOCKET. </p> </td></tr> <tr><td> <dl> <dt>MFSTARTUP_FULL</dt> </dl> </td><td> <p> Initialize the entire Media Foundation platform. This is the default value when <em>dwFlags</em> is not specified. </p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.BadStartupVersion\"/></strong></dt> </dl> </td><td> <p> The <em>Version</em> parameter requires a newer version of Media Foundation than the version that is running.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.DisabledInSafemode\"/></strong></dt> </dl> </td><td> <p> The Media Foundation platform is disabled because the system was started in \"Safe Mode\" (fail-safe boot). </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> An application must call this function before using Media Foundation. Before your application quits, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> once for every previous call to <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong>. </p><p> Do not call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong> or <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> from work queue threads. For more information about work queues, see Work Queues. </p><p>This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCreateDeviceSourceActivate']/*\"/>\t\n            <msdn-id>ms702238</msdn-id>\t\n            <unmanaged>HRESULT MFCreateDeviceSourceActivate([In] IMFAttributes* pAttributes,[Out] IMFActivate** ppActivate)</unmanaged>\t\n            <unmanaged-short>MFCreateDeviceSourceActivate</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.DeserializePresentationDescriptor(System.Int32,System.Byte[],SharpDX.MediaFoundation.PresentationDescriptor@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Initializes Microsoft Media Foundation.</p>\t\n            </summary>\t\n            <param name=\"cbData\"><dd> <p>Version number. Use the value <strong><see cref=\"F:SharpDX.MediaFoundation.MediaFactory.Version\"/></strong>, defined in mfapi.h.</p> </dd></param>\t\n            <param name=\"bDataRef\"><dd> <p>This parameter is optional when using C++ but required in C. The value must be one of the following flags: </p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td> <dl> <dt>MFSTARTUP_NOSOCKET</dt> </dl> </td><td> <p> Do not initialize the sockets library. </p> </td></tr> <tr><td> <dl> <dt>MFSTARTUP_LITE</dt> </dl> </td><td> <p> Equivalent to MFSTARTUP_NOSOCKET. </p> </td></tr> <tr><td> <dl> <dt>MFSTARTUP_FULL</dt> </dl> </td><td> <p> Initialize the entire Media Foundation platform. This is the default value when <em>dwFlags</em> is not specified. </p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <param name=\"pDOut\">No documentation.</param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.BadStartupVersion\"/></strong></dt> </dl> </td><td> <p> The <em>Version</em> parameter requires a newer version of Media Foundation than the version that is running.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.DisabledInSafemode\"/></strong></dt> </dl> </td><td> <p> The Media Foundation platform is disabled because the system was started in \"Safe Mode\" (fail-safe boot). </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> An application must call this function before using Media Foundation. Before your application quits, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> once for every previous call to <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong>. </p><p> Do not call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong> or <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> from work queue threads. For more information about work queues, see Work Queues. </p><p>This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFDeserializePresentationDescriptor']/*\"/>\t\n            <msdn-id>ms702238</msdn-id>\t\n            <unmanaged>HRESULT MFDeserializePresentationDescriptor([In] unsigned int cbData,[In, Buffer] unsigned char* pbData,[Out] IMFPresentationDescriptor** ppPD)</unmanaged>\t\n            <unmanaged-short>MFDeserializePresentationDescriptor</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CreateNamedPropertyStore(SharpDX.ComObject@)\">\n            <summary>\t\n            <p>[This API is not supported and may be altered or unavailable in the future. Instead, applications should use the <strong>PSCreateMemoryPropertyStore</strong> function to create named property stores.]</p><p><strong>Applies to: </strong>desktop apps only</p><p>Creates an empty property store to hold name/value pairs.</p>\t\n            </summary>\t\n            <param name=\"storeOut\"><dd> <p>Receives a reference to the <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interface. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The function succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='CreateNamedPropertyStore']/*\"/>\t\n            <msdn-id>aa367379</msdn-id>\t\n            <unmanaged>HRESULT CreateNamedPropertyStore([Out] INamedPropertyStore** ppStore)</unmanaged>\t\n            <unmanaged-short>CreateNamedPropertyStore</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CreateMediaSession(SharpDX.MediaFoundation.MediaAttributes,SharpDX.MediaFoundation.MediaSession@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Creates the Media Session in the application's process.</p>\t\n            </summary>\t\n            <param name=\"configurationRef\">No documentation.</param>\t\n            <param name=\"mediaSessionOut\">No documentation.</param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The function succeeded. </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> If your application does not play protected content, you can use this function to create the Media Session in the application's process. To use the Media Session for protected content, you must call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreatePMPMediaSession(System.Int32,SharpDX.MediaFoundation.MediaAttributes,SharpDX.MediaFoundation.MediaSession@,SharpDX.MediaFoundation.Activate@)\"/></strong>. </p><p> You can use the <em>pConfiguration</em> parameter to specify any of the following attributes: </p><ul> <li> <strong><see cref=\"F:SharpDX.MediaFoundation.MediaSessionAttributeKeys.GlobalTime\"/></strong> </li> <li> <strong><see cref=\"F:SharpDX.MediaFoundation.MediaSessionAttributeKeys.QualityManager\"/></strong> </li> <li> <strong><see cref=\"F:SharpDX.MediaFoundation.MediaSessionAttributeKeys.Topoloader\"/></strong> </li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCreateMediaSession']/*\"/>\t\n            <msdn-id>ms700174</msdn-id>\t\n            <unmanaged>HRESULT MFCreateMediaSession([In] IMFAttributes* pConfiguration,[Out] IMFMediaSession** ppMediaSession)</unmanaged>\t\n            <unmanaged-short>MFCreateMediaSession</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CreateAggregateSource(SharpDX.MediaFoundation.Collection,SharpDX.MediaFoundation.MediaSource@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Creates a media source that aggregates a collection of media sources. </p>\t\n            </summary>\t\n            <param name=\"sourceCollectionRef\"><dd> <p>A reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.Collection\"/></strong> interface of the collection object that contains a list of media sources. </p> </dd></param>\t\n            <param name=\"aggSourceOut\"><dd> <p>Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaSource\"/></strong> interface of the aggregated media source. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table. </p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong>E_INVALIDARG</strong></dt> </dl> </td><td> <p> The <em>pSourceCollection</em> collection does not contain any elements.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>The aggregated media source is useful for combining  streams from separate media sources. For example, you can use it to  combine a video capture source and an audio capture source. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCreateAggregateSource']/*\"/>\t\n            <msdn-id>dd388085</msdn-id>\t\n            <unmanaged>HRESULT MFCreateAggregateSource([In] IMFCollection* pSourceCollection,[Out] IMFMediaSource** ppAggSource)</unmanaged>\t\n            <unmanaged-short>MFCreateAggregateSource</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CreatePMPServer(System.Int32,SharpDX.MediaFoundation.PMPServer@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Creates the protected media path (PMP) server object.</p>\t\n            </summary>\t\n            <param name=\"dwCreationFlags\"><dd> <p>A member of the <strong><see cref=\"T:SharpDX.MediaFoundation.PmpsessionCreationFlags\"/></strong> enumeration that specifies how to create the PMP session.</p> </dd></param>\t\n            <param name=\"pMPServerOut\"><dd> <p>Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.PMPServer\"/></strong> interface. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The function succeeded. </p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCreatePMPServer']/*\"/>\t\n            <msdn-id>ms696183</msdn-id>\t\n            <unmanaged>HRESULT MFCreatePMPServer([In] unsigned int dwCreationFlags,[Out] IMFPMPServer** ppPMPServer)</unmanaged>\t\n            <unmanaged-short>MFCreatePMPServer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.SerializePresentationDescriptor(SharpDX.MediaFoundation.PresentationDescriptor,System.Int32@,System.Byte[])\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Initializes Microsoft Media Foundation.</p>\t\n            </summary>\t\n            <param name=\"pDRef\"><dd> <p>Version number. Use the value <strong><see cref=\"F:SharpDX.MediaFoundation.MediaFactory.Version\"/></strong>, defined in mfapi.h.</p> </dd></param>\t\n            <param name=\"cbDataRef\"><dd> <p>This parameter is optional when using C++ but required in C. The value must be one of the following flags: </p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td> <dl> <dt>MFSTARTUP_NOSOCKET</dt> </dl> </td><td> <p> Do not initialize the sockets library. </p> </td></tr> <tr><td> <dl> <dt>MFSTARTUP_LITE</dt> </dl> </td><td> <p> Equivalent to MFSTARTUP_NOSOCKET. </p> </td></tr> <tr><td> <dl> <dt>MFSTARTUP_FULL</dt> </dl> </td><td> <p> Initialize the entire Media Foundation platform. This is the default value when <em>dwFlags</em> is not specified. </p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <param name=\"bDataOut\">No documentation.</param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.BadStartupVersion\"/></strong></dt> </dl> </td><td> <p> The <em>Version</em> parameter requires a newer version of Media Foundation than the version that is running.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.DisabledInSafemode\"/></strong></dt> </dl> </td><td> <p> The Media Foundation platform is disabled because the system was started in \"Safe Mode\" (fail-safe boot). </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> An application must call this function before using Media Foundation. Before your application quits, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> once for every previous call to <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong>. </p><p> Do not call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong> or <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> from work queue threads. For more information about work queues, see Work Queues. </p><p>This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFSerializePresentationDescriptor']/*\"/>\t\n            <msdn-id>ms702238</msdn-id>\t\n            <unmanaged>HRESULT MFSerializePresentationDescriptor([In] IMFPresentationDescriptor* pPD,[Out] unsigned int* pcbData,[Out, Buffer] unsigned char** ppbData)</unmanaged>\t\n            <unmanaged-short>MFSerializePresentationDescriptor</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.RequireProtectedEnvironment(SharpDX.MediaFoundation.PresentationDescriptor)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Queries whether a media presentation requires the Protected Media Path (PMP).</p>\t\n            </summary>\t\n            <param name=\"presentationDescriptorRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.PresentationDescriptor\"/></strong> interface of a presentation descriptor. The presentation descriptor is created by the media source, and describes the presentation.</p> </dd></param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></strong></dt> </dl> </td><td> <p>This presentation requires a protected environment.</p> </td></tr> <tr><td> <dl> <dt><strong><strong>S_FALSE</strong></strong></dt> </dl> </td><td> <p>This presentation does not require a protected environment.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>If this function returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>, it means the PMP is required for this presentation. Call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreatePMPMediaSession(System.Int32,SharpDX.MediaFoundation.MediaAttributes,SharpDX.MediaFoundation.MediaSession@,SharpDX.MediaFoundation.Activate@)\"/></strong> to create the PMP session object.</p><p>If the function returns <strong>S_FALSE</strong>, you can use the unprotected pipeline. Call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateMediaSession(SharpDX.MediaFoundation.MediaAttributes,SharpDX.MediaFoundation.MediaSession@)\"/></strong> to create the regular Media Session object.</p><p>Internally, this function checks whether any of the stream descriptors in the presentation have the <strong><see cref=\"F:SharpDX.MediaFoundation.StreamDescriptorAttributeKeys.Protected\"/></strong> attribute with the value <strong>TRUE</strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFRequireProtectedEnvironment']/*\"/>\t\n            <msdn-id>ms697052</msdn-id>\t\n            <unmanaged>HRESULT MFRequireProtectedEnvironment([In] IMFPresentationDescriptor* pPresentationDescriptor)</unmanaged>\t\n            <unmanaged-short>MFRequireProtectedEnvironment</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CreateStandardQualityManager(SharpDX.MediaFoundation.QualityManager@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Initializes Microsoft Media Foundation.</p>\t\n            </summary>\t\n            <param name=\"qualityManagerOut\"><dd> <p>Version number. Use the value <strong><see cref=\"F:SharpDX.MediaFoundation.MediaFactory.Version\"/></strong>, defined in mfapi.h.</p> </dd></param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.BadStartupVersion\"/></strong></dt> </dl> </td><td> <p> The <em>Version</em> parameter requires a newer version of Media Foundation than the version that is running.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.DisabledInSafemode\"/></strong></dt> </dl> </td><td> <p> The Media Foundation platform is disabled because the system was started in \"Safe Mode\" (fail-safe boot). </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> An application must call this function before using Media Foundation. Before your application quits, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> once for every previous call to <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong>. </p><p> Do not call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong> or <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> from work queue threads. For more information about work queues, see Work Queues. </p><p>This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCreateStandardQualityManager']/*\"/>\t\n            <msdn-id>ms702238</msdn-id>\t\n            <unmanaged>HRESULT MFCreateStandardQualityManager([Out] IMFQualityManager** ppQualityManager)</unmanaged>\t\n            <unmanaged-short>MFCreateStandardQualityManager</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CreateAudioRenderer(SharpDX.MediaFoundation.MediaAttributes,SharpDX.MediaFoundation.MediaSink@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Creates the Streaming Audio Renderer. </p>\t\n            </summary>\t\n            <param name=\"audioAttributesRef\">No documentation.</param>\t\n            <param name=\"sinkOut\">No documentation.</param>\t\n            <returns><p>If this function succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>To configure the audio renderer, set any of the following attributes on the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaAttributes\"/></strong> interface specified in the <em>pAudioAttributes</em> parameter.</p><table> <tr><th>Attribute</th><th>Description</th></tr> <tr><td> <strong><see cref=\"F:SharpDX.MediaFoundation.AudioRendererAttributeKeys.EndpointId\"/></strong> </td><td>The audio endpoint device identifier.</td></tr> <tr><td> <strong><see cref=\"F:SharpDX.MediaFoundation.AudioRendererAttributeKeys.EndpointRole\"/></strong> </td><td>The audio endpoint role.</td></tr> <tr><td> <strong><see cref=\"F:SharpDX.MediaFoundation.AudioRendererAttributeKeys.Flags\"/></strong> </td><td>Miscellaneous configuration flags.</td></tr> <tr><td> <strong><see cref=\"F:SharpDX.MediaFoundation.AudioRendererAttributeKeys.SessionId\"/></strong> </td><td>The audio policy class.</td></tr> <tr><td> MF_AUDIO_RENDERER_ATTRIBUTE_STREAM_CATEGORY </td><td>The audio stream category.</td></tr> <tr><td> MF_LOW_LATENCY </td><td>Enables low-latency audio streaming.</td></tr> </table><p>?</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCreateAudioRenderer']/*\"/>\t\n            <msdn-id>ms701557</msdn-id>\t\n            <unmanaged>HRESULT MFCreateAudioRenderer([In] IMFAttributes* pAudioAttributes,[Out] IMFMediaSink** ppSink)</unmanaged>\t\n            <unmanaged-short>MFCreateAudioRenderer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.DeserializeAttributesFromStream(SharpDX.MediaFoundation.MediaAttributes,System.Int32,System.IntPtr)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Loads attributes from a stream into an attribute store.</p>\t\n            </summary>\t\n            <param name=\"attrRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaAttributes\"/></strong> interface of the attribute store.</p> </dd></param>\t\n            <param name=\"dwOptions\"><dd> <p>Bitwise <strong>OR</strong> of zero or more flags from the <strong><see cref=\"T:SharpDX.MediaFoundation.AttributeSerializeOptions\"/></strong> enumeration.</p> </dd></param>\t\n            <param name=\"stmRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.Win32.IStream\"/></strong> interface of the stream from which to read the attributes.</p> </dd></param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>Use this function to deserialize an attribute store that was serialized with the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.SerializeAttributesToStream(SharpDX.MediaFoundation.MediaAttributes,System.Int32,System.IntPtr)\"/></strong> function.</p><p>If <em>dwOptions</em> contains the <see cref=\"F:SharpDX.MediaFoundation.AttributeSerializeOptions.UnknownByref\"/> flag, the function deserializes <strong><see cref=\"T:SharpDX.ComObject\"/></strong> references from the stream, as follows:</p><ul> <li> <p>If the <strong><see cref=\"T:SharpDX.Win32.IStream\"/></strong> reference exposes the <strong><see cref=\"T:SharpDX.MediaFoundation.ObjectReferenceStream\"/></strong> interface (through <strong>QueryInterface</strong>), the function calls <strong><see cref=\"M:SharpDX.MediaFoundation.ObjectReferenceStream.LoadReference(System.Guid,System.IntPtr)\"/></strong> to deserialize each reference.</p> </li> <li> <p>Otherwise, the function calls <strong>CoUnmarshalInterface</strong> to deserialize a proxy for the object.</p> </li> </ul><p>This function deletes any attributes that were previously stored in <em>pAttr</em>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFDeserializeAttributesFromStream']/*\"/>\t\n            <msdn-id>ms703162</msdn-id>\t\n            <unmanaged>HRESULT MFDeserializeAttributesFromStream([In] IMFAttributes* pAttr,[In] unsigned int dwOptions,[In] IStream* pStm)</unmanaged>\t\n            <unmanaged-short>MFDeserializeAttributesFromStream</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.SerializeAttributesToStream(SharpDX.MediaFoundation.MediaAttributes,System.Int32,System.IntPtr)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Loads attributes from a stream into an attribute store.</p>\t\n            </summary>\t\n            <param name=\"attrRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaAttributes\"/></strong> interface of the attribute store.</p> </dd></param>\t\n            <param name=\"dwOptions\"><dd> <p>Bitwise <strong>OR</strong> of zero or more flags from the <strong><see cref=\"T:SharpDX.MediaFoundation.AttributeSerializeOptions\"/></strong> enumeration.</p> </dd></param>\t\n            <param name=\"stmRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.Win32.IStream\"/></strong> interface of the stream from which to read the attributes.</p> </dd></param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>Use this function to deserialize an attribute store that was serialized with the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.SerializeAttributesToStream(SharpDX.MediaFoundation.MediaAttributes,System.Int32,System.IntPtr)\"/></strong> function.</p><p>If <em>dwOptions</em> contains the <see cref=\"F:SharpDX.MediaFoundation.AttributeSerializeOptions.UnknownByref\"/> flag, the function deserializes <strong><see cref=\"T:SharpDX.ComObject\"/></strong> references from the stream, as follows:</p><ul> <li> <p>If the <strong><see cref=\"T:SharpDX.Win32.IStream\"/></strong> reference exposes the <strong><see cref=\"T:SharpDX.MediaFoundation.ObjectReferenceStream\"/></strong> interface (through <strong>QueryInterface</strong>), the function calls <strong><see cref=\"M:SharpDX.MediaFoundation.ObjectReferenceStream.LoadReference(System.Guid,System.IntPtr)\"/></strong> to deserialize each reference.</p> </li> <li> <p>Otherwise, the function calls <strong>CoUnmarshalInterface</strong> to deserialize a proxy for the object.</p> </li> </ul><p>This function deletes any attributes that were previously stored in <em>pAttr</em>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFSerializeAttributesToStream']/*\"/>\t\n            <msdn-id>ms703162</msdn-id>\t\n            <unmanaged>HRESULT MFSerializeAttributesToStream([In] IMFAttributes* pAttr,[In] unsigned int dwOptions,[In] IStream* pStm)</unmanaged>\t\n            <unmanaged-short>MFSerializeAttributesToStream</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.CreateTransformActivate(SharpDX.MediaFoundation.Activate@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Initializes Microsoft Media Foundation.</p>\t\n            </summary>\t\n            <param name=\"activateOut\"><dd> <p>Version number. Use the value <strong><see cref=\"F:SharpDX.MediaFoundation.MediaFactory.Version\"/></strong>, defined in mfapi.h.</p> </dd></param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.BadStartupVersion\"/></strong></dt> </dl> </td><td> <p> The <em>Version</em> parameter requires a newer version of Media Foundation than the version that is running.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.DisabledInSafemode\"/></strong></dt> </dl> </td><td> <p> The Media Foundation platform is disabled because the system was started in \"Safe Mode\" (fail-safe boot). </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> An application must call this function before using Media Foundation. Before your application quits, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> once for every previous call to <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong>. </p><p> Do not call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong> or <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> from work queue threads. For more information about work queues, see Work Queues. </p><p>This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCreateTransformActivate']/*\"/>\t\n            <msdn-id>ms702238</msdn-id>\t\n            <unmanaged>HRESULT MFCreateTransformActivate([Out] IMFActivate** ppActivate)</unmanaged>\t\n            <unmanaged-short>MFCreateTransformActivate</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaFactory.FindTransform(System.Guid,SharpDX.MediaFoundation.TransformEnumFlag,System.Nullable{SharpDX.MediaFoundation.TRegisterTypeInformation},System.Nullable{SharpDX.MediaFoundation.TRegisterTypeInformation})\">\n            <summary>\n            Gets a list of Microsoft Media Foundation transforms (MFTs) that match specified search criteria. This function extends the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.TEnum(System.Guid,System.Int32,System.Nullable{SharpDX.MediaFoundation.TRegisterTypeInformation},System.Nullable{SharpDX.MediaFoundation.TRegisterTypeInformation},SharpDX.MediaFoundation.MediaAttributes,System.Guid[],System.Int32@)\"/></strong> function.\n            </summary>\n            <param name=\"guidCategory\">A GUID that specifies the category of MFTs to enumerate. For a list of MFT categories, see <strong><see cref=\"T:SharpDX.MediaFoundation.TransformCategoryGuids\"/></strong>.</param>\n            <param name=\"enumFlags\">The bitwise OR of zero or more flags from the <strong><see cref=\"T:SharpDX.MediaFoundation.TransformEnumFlag\"/></strong> enumeration.</param>\n            <param name=\"inputTypeRef\">A pointer to an <strong><see cref=\"T:SharpDX.MediaFoundation.TRegisterTypeInformation\"/></strong> structure that specifies an input media type to match.<para>This parameter can be NULL. If NULL, all input types are matched.</para></param>\n            <param name=\"outputTypeRef\">A pointer to an <strong><see cref=\"T:SharpDX.MediaFoundation.TRegisterTypeInformation\"/></strong> structure that specifies an output media type to match.<para>This parameter can be NULL. If NULL, all output types are matched.</para></param>\n            <returns>Returnss an array of <strong><see cref=\"T:SharpDX.MediaFoundation.Activate\"/></strong> objects. Each object represents an activation object for an MFT that matches the search criteria. The function allocates the memory for the array. The caller must release the pointers and call the Dispose for each element in the array.</returns>\n            <msdn-id>dd388652</msdn-id>\t\n            <unmanaged>HRESULT MFTEnumEx([In] GUID guidCategory,[In] unsigned int Flags,[In, Optional] const MFT_REGISTER_TYPE_INFO* pInputType,[In, Optional] const MFT_REGISTER_TYPE_INFO* pOutputType,[Out, Buffer] IMFActivate*** pppMFTActivate,[Out] unsigned int* pnumMFTActivate)</unmanaged>\t\n            <unmanaged-short>MFTEnumEx</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.MediaSessionAttributeKeys\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.MediaFoundation.MediaSessionAttributeKeys']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaSessionAttributeKeys.ApproxEventOccurrenceTime\">\n            <summary>Constant ApproxEventOccurrenceTime.</summary>\n            <unmanaged>MF_SESSION_APPROX_EVENT_OCCURRENCE_TIME</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaSessionAttributeKeys.ContentProtectionManager\">\n            <summary>Constant ContentProtectionManager.</summary>\n            <unmanaged>MF_SESSION_CONTENT_PROTECTION_MANAGER</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaSessionAttributeKeys.GlobalTime\">\n            <summary>Constant GlobalTime.</summary>\n            <unmanaged>MF_SESSION_GLOBAL_TIME</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaSessionAttributeKeys.QualityManager\">\n            <summary>Constant QualityManager.</summary>\n            <unmanaged>MF_SESSION_QUALITY_MANAGER</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaSessionAttributeKeys.RemoteSourceMode\">\n            <summary>Constant RemoteSourceMode.</summary>\n            <unmanaged>MF_SESSION_REMOTE_SOURCE_MODE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaSessionAttributeKeys.ServerContext\">\n            <summary>Constant ServerContext.</summary>\n            <unmanaged>MF_SESSION_SERVER_CONTEXT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaSessionAttributeKeys.Topoloader\">\n            <summary>Constant Topoloader.</summary>\n            <unmanaged>MF_SESSION_TOPOLOADER</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.MediaTypeAttributeKeys\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.MediaFoundation.MediaTypeAttributeKeys']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.AacAudioProfileLevelIndication\">\n            <summary>Constant AacAudioProfileLevelIndication.</summary>\n            <unmanaged>MF_MT_AAC_AUDIO_PROFILE_LEVEL_INDICATION</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.AacPayloadType\">\n            <summary>Constant AacPayloadType.</summary>\n            <unmanaged>MF_MT_AAC_PAYLOAD_TYPE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.AllSamplesIndependent\">\n            <summary>Constant AllSamplesIndependent.</summary>\n            <unmanaged>MF_MT_ALL_SAMPLES_INDEPENDENT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.AmFormatType\">\n            <summary>Constant AmFormatType.</summary>\n            <unmanaged>MF_MT_AM_FORMAT_TYPE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.ArbitraryFormat\">\n            <summary>Constant ArbitraryFormat.</summary>\n            <unmanaged>MF_MT_ARBITRARY_FORMAT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.ArbitraryHeader\">\n            <summary>Constant ArbitraryHeader.</summary>\n            <unmanaged>MF_MT_ARBITRARY_HEADER</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.AudioAvgBytesPerSecond\">\n            <summary>Constant AudioAvgBytesPerSecond.</summary>\n            <unmanaged>MF_MT_AUDIO_AVG_BYTES_PER_SECOND</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.AudioBitsPerSample\">\n            <summary>Constant AudioBitsPerSample.</summary>\n            <unmanaged>MF_MT_AUDIO_BITS_PER_SAMPLE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.AudioBlockAlignment\">\n            <summary>Constant AudioBlockAlignment.</summary>\n            <unmanaged>MF_MT_AUDIO_BLOCK_ALIGNMENT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.AudioChannelMask\">\n            <summary>Constant AudioChannelMask.</summary>\n            <unmanaged>MF_MT_AUDIO_CHANNEL_MASK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.AudioFloatSamplesPerSecond\">\n            <summary>Constant AudioFloatSamplesPerSecond.</summary>\n            <unmanaged>MF_MT_AUDIO_FLOAT_SAMPLES_PER_SECOND</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.AudioFolddownMatrix\">\n            <summary>Constant AudioFolddownMatrix.</summary>\n            <unmanaged>MF_MT_AUDIO_FOLDDOWN_MATRIX</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.AudioNumChannels\">\n            <summary>Constant AudioNumChannels.</summary>\n            <unmanaged>MF_MT_AUDIO_NUM_CHANNELS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.AudioPreferWaveformatex\">\n            <summary>Constant AudioPreferWaveformatex.</summary>\n            <unmanaged>MF_MT_AUDIO_PREFER_WAVEFORMATEX</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.AudioSamplesPerBlock\">\n            <summary>Constant AudioSamplesPerBlock.</summary>\n            <unmanaged>MF_MT_AUDIO_SAMPLES_PER_BLOCK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.AudioSamplesPerSecond\">\n            <summary>Constant AudioSamplesPerSecond.</summary>\n            <unmanaged>MF_MT_AUDIO_SAMPLES_PER_SECOND</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.AudioValidBitsPerSample\">\n            <summary>Constant AudioValidBitsPerSample.</summary>\n            <unmanaged>MF_MT_AUDIO_VALID_BITS_PER_SAMPLE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.AudioWmadrcAvgref\">\n            <summary>Constant AudioWmadrcAvgref.</summary>\n            <unmanaged>MF_MT_AUDIO_WMADRC_AVGREF</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.AudioWmadrcAvgtarget\">\n            <summary>Constant AudioWmadrcAvgtarget.</summary>\n            <unmanaged>MF_MT_AUDIO_WMADRC_AVGTARGET</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.AudioWmadrcPeakref\">\n            <summary>Constant AudioWmadrcPeakref.</summary>\n            <unmanaged>MF_MT_AUDIO_WMADRC_PEAKREF</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.AudioWmadrcPeaktarget\">\n            <summary>Constant AudioWmadrcPeaktarget.</summary>\n            <unmanaged>MF_MT_AUDIO_WMADRC_PEAKTARGET</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.AvgBitErrorRate\">\n            <summary>Constant AvgBitErrorRate.</summary>\n            <unmanaged>MF_MT_AVG_BIT_ERROR_RATE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.AvgBitrate\">\n            <summary>Constant AvgBitrate.</summary>\n            <unmanaged>MF_MT_AVG_BITRATE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.Compressed\">\n            <summary>Constant Compressed.</summary>\n            <unmanaged>MF_MT_COMPRESSED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.CustomVideoPrimaries\">\n            <summary>Constant CustomVideoPrimaries.</summary>\n            <unmanaged>MF_MT_CUSTOM_VIDEO_PRIMARIES</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.DefaultStride\">\n            <summary>Constant DefaultStride.</summary>\n            <unmanaged>MF_MT_DEFAULT_STRIDE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.DrmFlags\">\n            <summary>Constant DrmFlags.</summary>\n            <unmanaged>MF_MT_DRM_FLAGS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.DvAauxCtrlPack0\">\n            <summary>Constant DvAauxCtrlPack0.</summary>\n            <unmanaged>MF_MT_DV_AAUX_CTRL_PACK_0</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.DvAauxCtrlPack1\">\n            <summary>Constant DvAauxCtrlPack1.</summary>\n            <unmanaged>MF_MT_DV_AAUX_CTRL_PACK_1</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.DvAauxSrcPack0\">\n            <summary>Constant DvAauxSrcPack0.</summary>\n            <unmanaged>MF_MT_DV_AAUX_SRC_PACK_0</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.DvAauxSrcPack1\">\n            <summary>Constant DvAauxSrcPack1.</summary>\n            <unmanaged>MF_MT_DV_AAUX_SRC_PACK_1</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.DvVauxCtrlPack\">\n            <summary>Constant DvVauxCtrlPack.</summary>\n            <unmanaged>MF_MT_DV_VAUX_CTRL_PACK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.DvVauxSrcPack\">\n            <summary>Constant DvVauxSrcPack.</summary>\n            <unmanaged>MF_MT_DV_VAUX_SRC_PACK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.FixedSizeSamples\">\n            <summary>Constant FixedSizeSamples.</summary>\n            <unmanaged>MF_MT_FIXED_SIZE_SAMPLES</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.FrameRate\">\n            <summary>Constant FrameRate.</summary>\n            <unmanaged>MF_MT_FRAME_RATE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.FrameRateRangeMax\">\n            <summary>Constant FrameRateRangeMax.</summary>\n            <unmanaged>MF_MT_FRAME_RATE_RANGE_MAX</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.FrameRateRangeMin\">\n            <summary>Constant FrameRateRangeMin.</summary>\n            <unmanaged>MF_MT_FRAME_RATE_RANGE_MIN</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.FrameSize\">\n            <summary>Constant FrameSize.</summary>\n            <unmanaged>MF_MT_FRAME_SIZE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.GeometricAperture\">\n            <summary>Constant GeometricAperture.</summary>\n            <unmanaged>MF_MT_GEOMETRIC_APERTURE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.ImageLossTolerant\">\n            <summary>Constant ImageLossTolerant.</summary>\n            <unmanaged>MF_MT_IMAGE_LOSS_TOLERANT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.InterlaceMode\">\n            <summary>Constant InterlaceMode.</summary>\n            <unmanaged>MF_MT_INTERLACE_MODE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.MajorType\">\n            <summary>Constant MajorType.</summary>\n            <unmanaged>MF_MT_MAJOR_TYPE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.MaxKeyframeSpacing\">\n            <summary>Constant MaxKeyframeSpacing.</summary>\n            <unmanaged>MF_MT_MAX_KEYFRAME_SPACING</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.MinimumDisplayAperture\">\n            <summary>Constant MinimumDisplayAperture.</summary>\n            <unmanaged>MF_MT_MINIMUM_DISPLAY_APERTURE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.MpegSequenceHeader\">\n            <summary>Constant MpegSequenceHeader.</summary>\n            <unmanaged>MF_MT_MPEG_SEQUENCE_HEADER</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.MpegStartTimeCode\">\n            <summary>Constant MpegStartTimeCode.</summary>\n            <unmanaged>MF_MT_MPEG_START_TIME_CODE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.Mpeg2Flags\">\n            <summary>Constant Mpeg2Flags.</summary>\n            <unmanaged>MF_MT_MPEG2_FLAGS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.Mpeg2Level\">\n            <summary>Constant Mpeg2Level.</summary>\n            <unmanaged>MF_MT_MPEG2_LEVEL</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.Mpeg2Profile\">\n            <summary>Constant Mpeg2Profile.</summary>\n            <unmanaged>MF_MT_MPEG2_PROFILE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.Mpeg4CurrentSampleEntry\">\n            <summary>Constant Mpeg4CurrentSampleEntry.</summary>\n            <unmanaged>MF_MT_MPEG4_CURRENT_SAMPLE_ENTRY</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.Mpeg4SampleDescription\">\n            <summary>Constant Mpeg4SampleDescription.</summary>\n            <unmanaged>MF_MT_MPEG4_SAMPLE_DESCRIPTION</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.Original4cc\">\n            <summary>Constant Original4cc.</summary>\n            <unmanaged>MF_MT_ORIGINAL_4CC</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.OriginalWaveFormatTag\">\n            <summary>Constant OriginalWaveFormatTag.</summary>\n            <unmanaged>MF_MT_ORIGINAL_WAVE_FORMAT_TAG</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.PadControlFlags\">\n            <summary>Constant PadControlFlags.</summary>\n            <unmanaged>MF_MT_PAD_CONTROL_FLAGS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.Palette\">\n            <summary>Constant Palette.</summary>\n            <unmanaged>MF_MT_PALETTE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.PanScanAperture\">\n            <summary>Constant PanScanAperture.</summary>\n            <unmanaged>MF_MT_PAN_SCAN_APERTURE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.PanScanEnabled\">\n            <summary>Constant PanScanEnabled.</summary>\n            <unmanaged>MF_MT_PAN_SCAN_ENABLED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.PixelAspectRatio\">\n            <summary>Constant PixelAspectRatio.</summary>\n            <unmanaged>MF_MT_PIXEL_ASPECT_RATIO</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.SampleSize\">\n            <summary>Constant SampleSize.</summary>\n            <unmanaged>MF_MT_SAMPLE_SIZE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.SourceContentHint\">\n            <summary>Constant SourceContentHint.</summary>\n            <unmanaged>MF_MT_SOURCE_CONTENT_HINT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.Subtype\">\n            <summary>Constant Subtype.</summary>\n            <unmanaged>MF_MT_SUBTYPE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.TransferFunction\">\n            <summary>Constant TransferFunction.</summary>\n            <unmanaged>MF_MT_TRANSFER_FUNCTION</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.UserData\">\n            <summary>Constant UserData.</summary>\n            <unmanaged>MF_MT_USER_DATA</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.VideoChromaSiting\">\n            <summary>Constant VideoChromaSiting.</summary>\n            <unmanaged>MF_MT_VIDEO_CHROMA_SITING</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.VideoLighting\">\n            <summary>Constant VideoLighting.</summary>\n            <unmanaged>MF_MT_VIDEO_LIGHTING</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.VideoNominalRange\">\n            <summary>Constant VideoNominalRange.</summary>\n            <unmanaged>MF_MT_VIDEO_NOMINAL_RANGE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.VideoPrimaries\">\n            <summary>Constant VideoPrimaries.</summary>\n            <unmanaged>MF_MT_VIDEO_PRIMARIES</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.WrappedType\">\n            <summary>Constant WrappedType.</summary>\n            <unmanaged>MF_MT_WRAPPED_TYPE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.YuvMatrix\">\n            <summary>Constant YuvMatrix.</summary>\n            <unmanaged>MF_MT_YUV_MATRIX</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.MediaTypeGuids\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.MediaFoundation.MediaTypeGuids']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaTypeGuids.Html\">\n            <summary>Constant Html.</summary>\n            <unmanaged>MFMediaType_HTML</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaTypeGuids.Image\">\n            <summary>Constant Image.</summary>\n            <unmanaged>MFMediaType_Image</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaTypeGuids.Protected\">\n            <summary>Constant Protected.</summary>\n            <unmanaged>MFMediaType_Protected</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaTypeGuids.Audio\">\n            <summary>Constant Audio.</summary>\n            <unmanaged>MFMediaType_Audio</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaTypeGuids.Video\">\n            <summary>Constant Video.</summary>\n            <unmanaged>MFMediaType_Video</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaTypeGuids.Sami\">\n            <summary>Constant Sami.</summary>\n            <unmanaged>MFMediaType_SAMI</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaTypeGuids.Script\">\n            <summary>Constant Script.</summary>\n            <unmanaged>MFMediaType_Script</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaTypeGuids.FileTransfer\">\n            <summary>Constant FileTransfer.</summary>\n            <unmanaged>MFMediaType_FileTransfer</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaTypeGuids.Binary\">\n            <summary>Constant Binary.</summary>\n            <unmanaged>MFMediaType_Binary</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MediaTypeGuids.Default\">\n            <summary>Constant Default.</summary>\n            <unmanaged>MFMediaType_Default</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.PresentationDescriptionAttributeKeys\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.MediaFoundation.PresentationDescriptionAttributeKeys']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PresentationDescriptionAttributeKeys.AppContext\">\n            <summary>Constant AppContext.</summary>\n            <unmanaged>MF_PD_APP_CONTEXT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PresentationDescriptionAttributeKeys.AsfCodeclist\">\n            <summary>Constant AsfCodeclist.</summary>\n            <unmanaged>MF_PD_ASF_CODECLIST</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PresentationDescriptionAttributeKeys.AsfContentencryptionKeyid\">\n            <summary>Constant AsfContentencryptionKeyid.</summary>\n            <unmanaged>MF_PD_ASF_CONTENTENCRYPTION_KEYID</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PresentationDescriptionAttributeKeys.AsfContentencryptionLicenseUrl\">\n            <summary>Constant AsfContentencryptionLicenseUrl.</summary>\n            <unmanaged>MF_PD_ASF_CONTENTENCRYPTION_LICENSE_URL</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PresentationDescriptionAttributeKeys.AsfContentencryptionSecretData\">\n            <summary>Constant AsfContentencryptionSecretData.</summary>\n            <unmanaged>MF_PD_ASF_CONTENTENCRYPTION_SECRET_DATA</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PresentationDescriptionAttributeKeys.AsfContentencryptionType\">\n            <summary>Constant AsfContentencryptionType.</summary>\n            <unmanaged>MF_PD_ASF_CONTENTENCRYPTION_TYPE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PresentationDescriptionAttributeKeys.AsfContentencryptionexEncryptionData\">\n            <summary>Constant AsfContentencryptionexEncryptionData.</summary>\n            <unmanaged>MF_PD_ASF_CONTENTENCRYPTIONEX_ENCRYPTION_DATA</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PresentationDescriptionAttributeKeys.AsfDataLength\">\n            <summary>Constant AsfDataLength.</summary>\n            <unmanaged>MF_PD_ASF_DATA_LENGTH</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PresentationDescriptionAttributeKeys.AsfDataStartOffset\">\n            <summary>Constant AsfDataStartOffset.</summary>\n            <unmanaged>MF_PD_ASF_DATA_START_OFFSET</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PresentationDescriptionAttributeKeys.AsfFilepropertiesCreationTime\">\n            <summary>Constant AsfFilepropertiesCreationTime.</summary>\n            <unmanaged>MF_PD_ASF_FILEPROPERTIES_CREATION_TIME</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PresentationDescriptionAttributeKeys.AsfFilepropertiesFileId\">\n            <summary>Constant AsfFilepropertiesFileId.</summary>\n            <unmanaged>MF_PD_ASF_FILEPROPERTIES_FILE_ID</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PresentationDescriptionAttributeKeys.AsfFilepropertiesFlags\">\n            <summary>Constant AsfFilepropertiesFlags.</summary>\n            <unmanaged>MF_PD_ASF_FILEPROPERTIES_FLAGS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PresentationDescriptionAttributeKeys.AsfFilepropertiesMaxBitrate\">\n            <summary>Constant AsfFilepropertiesMaxBitrate.</summary>\n            <unmanaged>MF_PD_ASF_FILEPROPERTIES_MAX_BITRATE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PresentationDescriptionAttributeKeys.AsfFilepropertiesMaxPacketSize\">\n            <summary>Constant AsfFilepropertiesMaxPacketSize.</summary>\n            <unmanaged>MF_PD_ASF_FILEPROPERTIES_MAX_PACKET_SIZE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PresentationDescriptionAttributeKeys.AsfFilepropertiesMinPacketSize\">\n            <summary>Constant AsfFilepropertiesMinPacketSize.</summary>\n            <unmanaged>MF_PD_ASF_FILEPROPERTIES_MIN_PACKET_SIZE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PresentationDescriptionAttributeKeys.AsfFilepropertiesPackets\">\n            <summary>Constant AsfFilepropertiesPackets.</summary>\n            <unmanaged>MF_PD_ASF_FILEPROPERTIES_PACKETS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PresentationDescriptionAttributeKeys.AsfFilepropertiesPlayDuration\">\n            <summary>Constant AsfFilepropertiesPlayDuration.</summary>\n            <unmanaged>MF_PD_ASF_FILEPROPERTIES_PLAY_DURATION</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PresentationDescriptionAttributeKeys.AsfFilepropertiesPreroll\">\n            <summary>Constant AsfFilepropertiesPreroll.</summary>\n            <unmanaged>MF_PD_ASF_FILEPROPERTIES_PREROLL</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PresentationDescriptionAttributeKeys.AsfFilepropertiesSendDuration\">\n            <summary>Constant AsfFilepropertiesSendDuration.</summary>\n            <unmanaged>MF_PD_ASF_FILEPROPERTIES_SEND_DURATION</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PresentationDescriptionAttributeKeys.AsfInfoHasAudio\">\n            <summary>Constant AsfInfoHasAudio.</summary>\n            <unmanaged>MF_PD_ASF_INFO_HAS_AUDIO</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PresentationDescriptionAttributeKeys.AsfInfoHasNonAudioVideo\">\n            <summary>Constant AsfInfoHasNonAudioVideo.</summary>\n            <unmanaged>MF_PD_ASF_INFO_HAS_NON_AUDIO_VIDEO</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PresentationDescriptionAttributeKeys.AsfInfoHasVideo\">\n            <summary>Constant AsfInfoHasVideo.</summary>\n            <unmanaged>MF_PD_ASF_INFO_HAS_VIDEO</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PresentationDescriptionAttributeKeys.AsfLanglist\">\n            <summary>Constant AsfLanglist.</summary>\n            <unmanaged>MF_PD_ASF_LANGLIST</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PresentationDescriptionAttributeKeys.AsfLanglistLegacyorder\">\n            <summary>Constant AsfLanglistLegacyorder.</summary>\n            <unmanaged>MF_PD_ASF_LANGLIST_LEGACYORDER</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PresentationDescriptionAttributeKeys.AsfMarker\">\n            <summary>Constant AsfMarker.</summary>\n            <unmanaged>MF_PD_ASF_MARKER</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PresentationDescriptionAttributeKeys.AsfMetadataIsVbr\">\n            <summary>Constant AsfMetadataIsVbr.</summary>\n            <unmanaged>MF_PD_ASF_METADATA_IS_VBR</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PresentationDescriptionAttributeKeys.AsfMetadataLeakyBucketPairs\">\n            <summary>Constant AsfMetadataLeakyBucketPairs.</summary>\n            <unmanaged>MF_PD_ASF_METADATA_LEAKY_BUCKET_PAIRS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PresentationDescriptionAttributeKeys.AsfMetadataV8Bufferaverage\">\n            <summary>Constant AsfMetadataV8Bufferaverage.</summary>\n            <unmanaged>MF_PD_ASF_METADATA_V8_BUFFERAVERAGE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PresentationDescriptionAttributeKeys.AsfMetadataV8Vbrpeak\">\n            <summary>Constant AsfMetadataV8Vbrpeak.</summary>\n            <unmanaged>MF_PD_ASF_METADATA_V8_VBRPEAK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PresentationDescriptionAttributeKeys.AsfScript\">\n            <summary>Constant AsfScript.</summary>\n            <unmanaged>MF_PD_ASF_SCRIPT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PresentationDescriptionAttributeKeys.AudioEncodingBitrate\">\n            <summary>Constant AudioEncodingBitrate.</summary>\n            <unmanaged>MF_PD_AUDIO_ENCODING_BITRATE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PresentationDescriptionAttributeKeys.AudioIsvariablebitrate\">\n            <summary>Constant AudioIsvariablebitrate.</summary>\n            <unmanaged>MF_PD_AUDIO_ISVARIABLEBITRATE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PresentationDescriptionAttributeKeys.Duration\">\n            <summary>Constant Duration.</summary>\n            <unmanaged>MF_PD_DURATION</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PresentationDescriptionAttributeKeys.LastModifiedTime\">\n            <summary>Constant LastModifiedTime.</summary>\n            <unmanaged>MF_PD_LAST_MODIFIED_TIME</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PresentationDescriptionAttributeKeys.MimeType\">\n            <summary>Constant MimeType.</summary>\n            <unmanaged>MF_PD_MIME_TYPE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PresentationDescriptionAttributeKeys.PlaybackBoundaryTime\">\n            <summary>Constant PlaybackBoundaryTime.</summary>\n            <unmanaged>MF_PD_PLAYBACK_BOUNDARY_TIME</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PresentationDescriptionAttributeKeys.PlaybackElementId\">\n            <summary>Constant PlaybackElementId.</summary>\n            <unmanaged>MF_PD_PLAYBACK_ELEMENT_ID</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PresentationDescriptionAttributeKeys.PmphostContext\">\n            <summary>Constant PmphostContext.</summary>\n            <unmanaged>MF_PD_PMPHOST_CONTEXT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PresentationDescriptionAttributeKeys.PreferredLanguage\">\n            <summary>Constant PreferredLanguage.</summary>\n            <unmanaged>MF_PD_PREFERRED_LANGUAGE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PresentationDescriptionAttributeKeys.SamiStylelist\">\n            <summary>Constant SamiStylelist.</summary>\n            <unmanaged>MF_PD_SAMI_STYLELIST</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PresentationDescriptionAttributeKeys.TotalFileSize\">\n            <summary>Constant TotalFileSize.</summary>\n            <unmanaged>MF_PD_TOTAL_FILE_SIZE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PresentationDescriptionAttributeKeys.VideoEncodingBitrate\">\n            <summary>Constant VideoEncodingBitrate.</summary>\n            <unmanaged>MF_PD_VIDEO_ENCODING_BITRATE</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.ResultCode\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.MediaFoundation.ResultCode']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.NetRead\">\n            <summary>Constant NetRead.</summary>\n            <unmanaged>MF_E_NET_READ</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.CannotCreateSink\">\n            <summary>Constant CannotCreateSink.</summary>\n            <unmanaged>MF_E_CANNOT_CREATE_SINK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.NetManualssNotSupported\">\n            <summary>Constant NetManualssNotSupported.</summary>\n            <unmanaged>MF_E_NET_MANUALSS_NOT_SUPPORTED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.GrlUnrecognizedFormat\">\n            <summary>Constant GrlUnrecognizedFormat.</summary>\n            <unmanaged>MF_E_GRL_UNRECOGNIZED_FORMAT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.ByteStreamNotSeekable\">\n            <summary>Constant ByteStreamNotSeekable.</summary>\n            <unmanaged>MF_E_BYTESTREAM_NOT_SEEKABLE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.AllProcessRestartRequired\">\n            <summary>Constant AllProcessRestartRequired.</summary>\n            <unmanaged>MF_E_ALL_PROCESS_RESTART_REQUIRED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.NetResourceGone\">\n            <summary>Constant NetResourceGone.</summary>\n            <unmanaged>MF_E_NET_RESOURCE_GONE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.StreamsInksOutOfSync\">\n            <summary>Constant StreamsInksOutOfSync.</summary>\n            <unmanaged>MF_E_STREAMSINKS_OUT_OF_SYNC</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.RtTooManyClassEs\">\n            <summary>Constant RtTooManyClassEs.</summary>\n            <unmanaged>MF_E_RT_TOO_MANY_CLASSES</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.NetTimeout\">\n            <summary>Constant NetTimeout.</summary>\n            <unmanaged>MF_E_NET_TIMEOUT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.RtUnavailable\">\n            <summary>Constant RtUnavailable.</summary>\n            <unmanaged>MF_E_RT_UNAVAILABLE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.AsfIndexNotLoaded\">\n            <summary>Constant AsfIndexNotLoaded.</summary>\n            <unmanaged>MF_E_ASF_INDEXNOTLOADED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.VideoRenSurfaceNotShared\">\n            <summary>Constant VideoRenSurfaceNotShared.</summary>\n            <unmanaged>MF_E_VIDEO_REN_SURFACE_NOT_SHARED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.SignatureVerificationFailed\">\n            <summary>Constant SignatureVerificationFailed.</summary>\n            <unmanaged>MF_E_SIGNATURE_VERIFICATION_FAILED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.NoMoreDropModes\">\n            <summary>Constant NoMoreDropModes.</summary>\n            <unmanaged>MF_E_NO_MORE_DROP_MODES</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.Mp3NotSupported\">\n            <summary>Constant Mp3NotSupported.</summary>\n            <unmanaged>MF_E_MP3_NOTSUPPORTED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.NetEol\">\n            <summary>Constant NetEol.</summary>\n            <unmanaged>MF_E_NET_EOL</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.StateTransitionPending\">\n            <summary>Constant StateTransitionPending.</summary>\n            <unmanaged>MF_E_STATE_TRANSITION_PENDING</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.NetCachestreamNotFound\">\n            <summary>Constant NetCachestreamNotFound.</summary>\n            <unmanaged>MF_E_NET_CACHESTREAM_NOT_FOUND</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.PropertyVectorNotAllowEd\">\n            <summary>Constant PropertyVectorNotAllowEd.</summary>\n            <unmanaged>MF_E_PROPERTY_VECTOR_NOT_ALLOWED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.NetStreamGroupsNotSupported\">\n            <summary>Constant NetStreamGroupsNotSupported.</summary>\n            <unmanaged>MF_E_NET_STREAMGROUPS_NOT_SUPPORTED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.WmdrmotaActionMismatch\">\n            <summary>Constant WmdrmotaActionMismatch.</summary>\n            <unmanaged>MF_E_WMDRMOTA_ACTION_MISMATCH</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.NoDuration\">\n            <summary>Constant NoDuration.</summary>\n            <unmanaged>MF_E_NO_DURATION</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.AlreadyInitializeD\">\n            <summary>Constant AlreadyInitializeD.</summary>\n            <unmanaged>MF_E_ALREADY_INITIALIZED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.AsfParsingincomplete\">\n            <summary>Constant AsfParsingincomplete.</summary>\n            <unmanaged>MF_E_ASF_PARSINGINCOMPLETE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.HighSecurityLevelContentNotAllowEd\">\n            <summary>Constant HighSecurityLevelContentNotAllowEd.</summary>\n            <unmanaged>MF_E_HIGH_SECURITY_LEVEL_CONTENT_NOT_ALLOWED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.InvalidName\">\n            <summary>Constant InvalidName.</summary>\n            <unmanaged>MF_E_INVALIDNAME</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.NetInvalidPresentationDescriptor\">\n            <summary>Constant NetInvalidPresentationDescriptor.</summary>\n            <unmanaged>MF_E_NET_INVALID_PRESENTATION_DESCRIPTOR</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.TransformAsyncLocked\">\n            <summary>Constant TransformAsyncLocked.</summary>\n            <unmanaged>MF_E_TRANSFORM_ASYNC_LOCKED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.MultipleSubScribers\">\n            <summary>Constant MultipleSubScribers.</summary>\n            <unmanaged>MF_E_MULTIPLE_SUBSCRIBERS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.HwStreamNotConnected\">\n            <summary>Constant HwStreamNotConnected.</summary>\n            <unmanaged>MF_E_HW_STREAM_NOT_CONNECTED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.FlushNeeded\">\n            <summary>Constant FlushNeeded.</summary>\n            <unmanaged>MF_E_FLUSH_NEEDED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.TransformNeedMoreInput\">\n            <summary>Constant TransformNeedMoreInput.</summary>\n            <unmanaged>MF_E_TRANSFORM_NEED_MORE_INPUT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.InvalidStateTransition\">\n            <summary>Constant InvalidStateTransition.</summary>\n            <unmanaged>MF_E_INVALID_STATE_TRANSITION</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.NetRequireInput\">\n            <summary>Constant NetRequireInput.</summary>\n            <unmanaged>MF_E_NET_REQUIRE_INPUT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.DroptimeNotSupported\">\n            <summary>Constant DroptimeNotSupported.</summary>\n            <unmanaged>MF_E_DROPTIME_NOT_SUPPORTED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.NetSessionNotFound\">\n            <summary>Constant NetSessionNotFound.</summary>\n            <unmanaged>MF_E_NET_SESSION_NOT_FOUND</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.ProcessRestartRequired\">\n            <summary>Constant ProcessRestartRequired.</summary>\n            <unmanaged>MF_E_PROCESS_RESTART_REQUIRED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.NoAudioPlaybackDevice\">\n            <summary>Constant NoAudioPlaybackDevice.</summary>\n            <unmanaged>MF_E_NO_AUDIO_PLAYBACK_DEVICE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.AsfNoindex\">\n            <summary>Constant AsfNoindex.</summary>\n            <unmanaged>MF_E_ASF_NOINDEX</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.NetServerAccessDenied\">\n            <summary>Constant NetServerAccessDenied.</summary>\n            <unmanaged>MF_E_NET_SERVER_ACCESSDENIED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.ItaUnrecognizedDigitalVideoOutput\">\n            <summary>Constant ItaUnrecognizedDigitalVideoOutput.</summary>\n            <unmanaged>MF_E_ITA_UNRECOGNIZED_DIGITAL_VIDEO_OUTPUT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.RtWorkqueueClassNotSpecified\">\n            <summary>Constant RtWorkqueueClassNotSpecified.</summary>\n            <unmanaged>MF_E_RT_WORKQUEUE_CLASS_NOT_SPECIFIED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.SequencerUnknownSegmentId\">\n            <summary>Constant SequencerUnknownSegmentId.</summary>\n            <unmanaged>MF_E_SEQUENCER_UNKNOWN_SEGMENT_ID</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.TransformPropertyArrayValueWrongNumDim\">\n            <summary>Constant TransformPropertyArrayValueWrongNumDim.</summary>\n            <unmanaged>MF_E_TRANSFORM_PROPERTY_ARRAY_VALUE_WRONG_NUM_DIM</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.DrmUnsupported\">\n            <summary>Constant DrmUnsupported.</summary>\n            <unmanaged>MF_E_DRM_UNSUPPORTED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.NetInvalidPushTemplate\">\n            <summary>Constant NetInvalidPushTemplate.</summary>\n            <unmanaged>MF_E_NET_INVALID_PUSH_TEMPLATE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.AsfFilesinkBitRateUnknown\">\n            <summary>Constant AsfFilesinkBitRateUnknown.</summary>\n            <unmanaged>MF_E_ASF_FILESINK_BITRATE_UNKNOWN</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.InvalidFileFormat\">\n            <summary>Constant InvalidFileFormat.</summary>\n            <unmanaged>MF_E_INVALID_FILE_FORMAT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.AllOcatorNotCommited\">\n            <summary>Constant AllOcatorNotCommited.</summary>\n            <unmanaged>MF_E_ALLOCATOR_NOT_COMMITED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.WmdrmotaDrmHeaderNotAvailable\">\n            <summary>Constant WmdrmotaDrmHeaderNotAvailable.</summary>\n            <unmanaged>MF_E_WMDRMOTA_DRM_HEADER_NOT_AVAILABLE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.MultipleBegin\">\n            <summary>Constant MultipleBegin.</summary>\n            <unmanaged>MF_E_MULTIPLE_BEGIN</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.InsufficientBuffer\">\n            <summary>Constant InsufficientBuffer.</summary>\n            <unmanaged>MF_E_INSUFFICIENT_BUFFER</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.NetTooMuchData\">\n            <summary>Constant NetTooMuchData.</summary>\n            <unmanaged>MF_E_NET_TOO_MUCH_DATA</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.EndOfStream\">\n            <summary>Constant EndOfStream.</summary>\n            <unmanaged>MF_E_END_OF_STREAM</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.SourceResolverMutuallyExclusiveFlags\">\n            <summary>Constant SourceResolverMutuallyExclusiveFlags.</summary>\n            <unmanaged>MF_E_SOURCERESOLVER_MUTUALLY_EXCLUSIVE_FLAGS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.NetServerUnavailable\">\n            <summary>Constant NetServerUnavailable.</summary>\n            <unmanaged>MF_E_NET_SERVER_UNAVAILABLE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.AsfOpaquePacket\">\n            <summary>Constant AsfOpaquePacket.</summary>\n            <unmanaged>MF_E_ASF_OPAQUEPACKET</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.TopoMissingStreamDescriptor\">\n            <summary>Constant TopoMissingStreamDescriptor.</summary>\n            <unmanaged>MF_E_TOPO_MISSING_STREAM_DESCRIPTOR</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.UnsupportedRate\">\n            <summary>Constant UnsupportedRate.</summary>\n            <unmanaged>MF_E_UNSUPPORTED_RATE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.NoSampleTimestamp\">\n            <summary>Constant NoSampleTimestamp.</summary>\n            <unmanaged>MF_E_NO_SAMPLE_TIMESTAMP</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.InvalidMediaType\">\n            <summary>Constant InvalidMediaType.</summary>\n            <unmanaged>MF_E_INVALIDMEDIATYPE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.RebootRequired\">\n            <summary>Constant RebootRequired.</summary>\n            <unmanaged>MF_E_REBOOT_REQUIRED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.GrlExtensibleEntryNotFound\">\n            <summary>Constant GrlExtensibleEntryNotFound.</summary>\n            <unmanaged>MF_E_GRL_EXTENSIBLE_ENTRY_NOT_FOUND</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.TopoMissingPresentationDescriptor\">\n            <summary>Constant TopoMissingPresentationDescriptor.</summary>\n            <unmanaged>MF_E_TOPO_MISSING_PRESENTATION_DESCRIPTOR</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.ComponentRevoked\">\n            <summary>Constant ComponentRevoked.</summary>\n            <unmanaged>MF_E_COMPONENT_REVOKED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\">\n            <summary>Constant Shutdown.</summary>\n            <unmanaged>MF_E_SHUTDOWN</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.MediaSourceNotStarted\">\n            <summary>Constant MediaSourceNotStarted.</summary>\n            <unmanaged>MF_E_MEDIA_SOURCE_NOT_STARTED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.TopoStreamDescriptorNotSelected\">\n            <summary>Constant TopoStreamDescriptorNotSelected.</summary>\n            <unmanaged>MF_E_TOPO_STREAM_DESCRIPTOR_NOT_SELECTED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.TransformCannotInitializeAcmDriver\">\n            <summary>Constant TransformCannotInitializeAcmDriver.</summary>\n            <unmanaged>MF_E_TRANSFORM_CANNOT_INITIALIZE_ACM_DRIVER</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.NetUnsupportedConfiguration\">\n            <summary>Constant NetUnsupportedConfiguration.</summary>\n            <unmanaged>MF_E_NET_UNSUPPORTED_CONFIGURATION</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.InvalidStreamNumber\">\n            <summary>Constant InvalidStreamNumber.</summary>\n            <unmanaged>MF_E_INVALIDSTREAMNUMBER</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.TopoInvalidOptionalNode\">\n            <summary>Constant TopoInvalidOptionalNode.</summary>\n            <unmanaged>MF_E_TOPO_INVALID_OPTIONAL_NODE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.UnsupportedFormat\">\n            <summary>Constant UnsupportedFormat.</summary>\n            <unmanaged>MF_E_UNSUPPORTED_FORMAT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.NetBadRequest\">\n            <summary>Constant NetBadRequest.</summary>\n            <unmanaged>MF_E_NET_BAD_REQUEST</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.SampleallocatorCanceled\">\n            <summary>Constant SampleallocatorCanceled.</summary>\n            <unmanaged>MF_E_SAMPLEALLOCATOR_CANCELED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.NetIncompatibleServer\">\n            <summary>Constant NetIncompatibleServer.</summary>\n            <unmanaged>MF_E_NET_INCOMPATIBLE_SERVER</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.NetBusy\">\n            <summary>Constant NetBusy.</summary>\n            <unmanaged>MF_E_NET_BUSY</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.TopologyVerificationFailed\">\n            <summary>Constant TopologyVerificationFailed.</summary>\n            <unmanaged>MF_E_TOPOLOGY_VERIFICATION_FAILED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.AsfMissingData\">\n            <summary>Constant AsfMissingData.</summary>\n            <unmanaged>MF_E_ASF_MISSINGDATA</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.UnsupportedRepresentation\">\n            <summary>Constant UnsupportedRepresentation.</summary>\n            <unmanaged>MF_E_UNSUPPORTED_REPRESENTATION</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.InvalidStreamState\">\n            <summary>Constant InvalidStreamState.</summary>\n            <unmanaged>MF_E_INVALID_STREAM_STATE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.OperationCancelled\">\n            <summary>Constant OperationCancelled.</summary>\n            <unmanaged>MF_E_OPERATION_CANCELLED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.NetRedirect\">\n            <summary>Constant NetRedirect.</summary>\n            <unmanaged>MF_E_NET_REDIRECT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.Mp3BadCrc\">\n            <summary>Constant Mp3BadCrc.</summary>\n            <unmanaged>MF_E_MP3_BAD_CRC</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.SampleHasTooManyBuffers\">\n            <summary>Constant SampleHasTooManyBuffers.</summary>\n            <unmanaged>MF_E_SAMPLE_HAS_TOO_MANY_BUFFERS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.NonPeProcess\">\n            <summary>Constant NonPeProcess.</summary>\n            <unmanaged>MF_E_NON_PE_PROCESS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.Mp3NotMp3\">\n            <summary>Constant Mp3NotMp3.</summary>\n            <unmanaged>MF_E_MP3_NOTMP3</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.StreamsInkExists\">\n            <summary>Constant StreamsInkExists.</summary>\n            <unmanaged>MF_E_STREAMSINK_EXISTS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.NetUdpBlocked\">\n            <summary>Constant NetUdpBlocked.</summary>\n            <unmanaged>MF_E_NET_UDP_BLOCKED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.MediaSourceNoStreamsSelected\">\n            <summary>Constant MediaSourceNoStreamsSelected.</summary>\n            <unmanaged>MF_E_MEDIA_SOURCE_NO_STREAMS_SELECTED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.VideoRenNoProcampHw\">\n            <summary>Constant VideoRenNoProcampHw.</summary>\n            <unmanaged>MF_E_VIDEO_REN_NO_PROCAMP_HW</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.OperationLNotSupported\">\n            <summary>Constant OperationLNotSupported.</summary>\n            <unmanaged>MF_E_OPL_NOT_SUPPORTED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.TransformNotPossibleForCurrentSpkrConfig\">\n            <summary>Constant TransformNotPossibleForCurrentSpkrConfig.</summary>\n            <unmanaged>MF_E_TRANSFORM_NOT_POSSIBLE_FOR_CURRENT_SPKR_CONFIG</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.TransformTypeNotSet\">\n            <summary>Constant TransformTypeNotSet.</summary>\n            <unmanaged>MF_E_TRANSFORM_TYPE_NOT_SET</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.ClockInvalidContinuityKey\">\n            <summary>Constant ClockInvalidContinuityKey.</summary>\n            <unmanaged>MF_E_CLOCK_INVALID_CONTINUITY_KEY</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.InvalidType\">\n            <summary>Constant InvalidType.</summary>\n            <unmanaged>MF_E_INVALIDTYPE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.NoClock\">\n            <summary>Constant NoClock.</summary>\n            <unmanaged>MF_E_NO_CLOCK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.NotInitializeD\">\n            <summary>Constant NotInitializeD.</summary>\n            <unmanaged>MF_E_NOT_INITIALIZED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.HwMftFailedStartStreaming\">\n            <summary>Constant HwMftFailedStartStreaming.</summary>\n            <unmanaged>MF_E_HW_MFT_FAILED_START_STREAMING</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.GrlInvalidFormat\">\n            <summary>Constant GrlInvalidFormat.</summary>\n            <unmanaged>MF_E_GRL_INVALID_FORMAT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.TopoInvalidTimeAttributes\">\n            <summary>Constant TopoInvalidTimeAttributes.</summary>\n            <unmanaged>MF_E_TOPO_INVALID_TIME_ATTRIBUTES</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.NoContentProtectionManager\">\n            <summary>Constant NoContentProtectionManager.</summary>\n            <unmanaged>MF_E_NO_CONTENT_PROTECTION_MANAGER</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.TransformPropertyValueIncompatible\">\n            <summary>Constant TransformPropertyValueIncompatible.</summary>\n            <unmanaged>MF_E_TRANSFORM_PROPERTY_VALUE_INCOMPATIBLE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.NetNoconnection\">\n            <summary>Constant NetNoconnection.</summary>\n            <unmanaged>MF_E_NET_NOCONNECTION</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.SinkNoSamplesProcessed\">\n            <summary>Constant SinkNoSamplesProcessed.</summary>\n            <unmanaged>MF_E_SINK_NO_SAMPLES_PROCESSED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.InvalidWorkqueue\">\n            <summary>Constant InvalidWorkqueue.</summary>\n            <unmanaged>MF_E_INVALID_WORKQUEUE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.DebuggingNotAllowEd\">\n            <summary>Constant DebuggingNotAllowEd.</summary>\n            <unmanaged>MF_E_DEBUGGING_NOT_ALLOWED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.AudioPlaybackDeviceInUse\">\n            <summary>Constant AudioPlaybackDeviceInUse.</summary>\n            <unmanaged>MF_E_AUDIO_PLAYBACK_DEVICE_IN_USE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.NoBitpump\">\n            <summary>Constant NoBitpump.</summary>\n            <unmanaged>MF_E_NO_BITPUMP</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.BufferTooSmall\">\n            <summary>Constant BufferTooSmall.</summary>\n            <unmanaged>MF_E_BUFFERTOOSMALL</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.ByteStreamUnknownLength\">\n            <summary>Constant ByteStreamUnknownLength.</summary>\n            <unmanaged>MF_E_BYTESTREAM_UNKNOWN_LENGTH</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.NetSessionInvalid\">\n            <summary>Constant NetSessionInvalid.</summary>\n            <unmanaged>MF_E_NET_SESSION_INVALID</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.CannotParseByteStream\">\n            <summary>Constant CannotParseByteStream.</summary>\n            <unmanaged>MF_E_CANNOT_PARSE_BYTESTREAM</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.NetProxyAccessDenied\">\n            <summary>Constant NetProxyAccessDenied.</summary>\n            <unmanaged>MF_E_NET_PROXY_ACCESSDENIED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.PlatformNotInitializeD\">\n            <summary>Constant PlatformNotInitializeD.</summary>\n            <unmanaged>MF_E_PLATFORM_NOT_INITIALIZED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.LateSample\">\n            <summary>Constant LateSample.</summary>\n            <unmanaged>MF_E_LATE_SAMPLE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.MediaProcWrongState\">\n            <summary>Constant MediaProcWrongState.</summary>\n            <unmanaged>MF_E_MEDIAPROC_WRONGSTATE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.PeauthUntrusted\">\n            <summary>Constant PeauthUntrusted.</summary>\n            <unmanaged>MF_E_PEAUTH_UNTRUSTED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.ReverseUnsupported\">\n            <summary>Constant ReverseUnsupported.</summary>\n            <unmanaged>MF_E_REVERSE_UNSUPPORTED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.ThinningUnsupported\">\n            <summary>Constant ThinningUnsupported.</summary>\n            <unmanaged>MF_E_THINNING_UNSUPPORTED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.NetErrorFromProxy\">\n            <summary>Constant NetErrorFromProxy.</summary>\n            <unmanaged>MF_E_NET_ERROR_FROM_PROXY</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.ItaUnsupportedAction\">\n            <summary>Constant ItaUnsupportedAction.</summary>\n            <unmanaged>MF_E_ITA_UNSUPPORTED_ACTION</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.InvalidCodecMerit\">\n            <summary>Constant InvalidCodecMerit.</summary>\n            <unmanaged>MF_E_INVALID_CODEC_MERIT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.UnsupportedRateTransition\">\n            <summary>Constant UnsupportedRateTransition.</summary>\n            <unmanaged>MF_E_UNSUPPORTED_RATE_TRANSITION</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.TransformProfileInvalidOrCorrupt\">\n            <summary>Constant TransformProfileInvalidOrCorrupt.</summary>\n            <unmanaged>MF_E_TRANSFORM_PROFILE_INVALID_OR_CORRUPT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.DrmHardwareInconsistent\">\n            <summary>Constant DrmHardwareInconsistent.</summary>\n            <unmanaged>MF_E_DRM_HARDWARE_INCONSISTENT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.UsermodeUntrusted\">\n            <summary>Constant UsermodeUntrusted.</summary>\n            <unmanaged>MF_E_USERMODE_UNTRUSTED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.PolicyUnsupported\">\n            <summary>Constant PolicyUnsupported.</summary>\n            <unmanaged>MF_E_POLICY_UNSUPPORTED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.TopoUnsupported\">\n            <summary>Constant TopoUnsupported.</summary>\n            <unmanaged>MF_E_TOPO_UNSUPPORTED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.TopoLoopsInTopology\">\n            <summary>Constant TopoLoopsInTopology.</summary>\n            <unmanaged>MF_E_TOPO_LOOPS_IN_TOPOLOGY</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.StreamsInkRemoved\">\n            <summary>Constant StreamsInkRemoved.</summary>\n            <unmanaged>MF_E_STREAMSINK_REMOVED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.NetUnsafeUrl\">\n            <summary>Constant NetUnsafeUrl.</summary>\n            <unmanaged>MF_E_NET_UNSAFE_URL</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.QmInvalidState\">\n            <summary>Constant QmInvalidState.</summary>\n            <unmanaged>MF_E_QM_INVALIDSTATE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.InvalidAsfStreamId\">\n            <summary>Constant InvalidAsfStreamId.</summary>\n            <unmanaged>MF_E_INVALID_ASF_STREAMID</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.Attributenotfound\">\n            <summary>Constant Attributenotfound.</summary>\n            <unmanaged>MF_E_ATTRIBUTENOTFOUND</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.MissingAsfLeakybucket\">\n            <summary>Constant MissingAsfLeakybucket.</summary>\n            <unmanaged>MF_E_MISSING_ASF_LEAKYBUCKET</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.NetWrite\">\n            <summary>Constant NetWrite.</summary>\n            <unmanaged>MF_E_NET_WRITE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.PropertyReadOnly\">\n            <summary>Constant PropertyReadOnly.</summary>\n            <unmanaged>MF_E_PROPERTY_READ_ONLY</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.InvalidKey\">\n            <summary>Constant InvalidKey.</summary>\n            <unmanaged>MF_E_INVALID_KEY</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.PropertyNotEmpty\">\n            <summary>Constant PropertyNotEmpty.</summary>\n            <unmanaged>MF_E_PROPERTY_NOT_EMPTY</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.PropertyEmpty\">\n            <summary>Constant PropertyEmpty.</summary>\n            <unmanaged>MF_E_PROPERTY_EMPTY</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.TopoCodecNotFound\">\n            <summary>Constant TopoCodecNotFound.</summary>\n            <unmanaged>MF_E_TOPO_CODEC_NOT_FOUND</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.PeauthPublickeyRevoked\">\n            <summary>Constant PeauthPublickeyRevoked.</summary>\n            <unmanaged>MF_E_PEAUTH_PUBLICKEY_REVOKED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.VideoDeviceLocked\">\n            <summary>Constant VideoDeviceLocked.</summary>\n            <unmanaged>MF_E_VIDEO_DEVICE_LOCKED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.LicenseRestoreNoRights\">\n            <summary>Constant LicenseRestoreNoRights.</summary>\n            <unmanaged>MF_E_LICENSE_RESTORE_NO_RIGHTS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.NoSourceInCache\">\n            <summary>Constant NoSourceInCache.</summary>\n            <unmanaged>MF_E_NO_SOURCE_IN_CACHE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.RtWouldblock\">\n            <summary>Constant RtWouldblock.</summary>\n            <unmanaged>MF_E_RT_WOULDBLOCK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.UnsupportedStateTransition\">\n            <summary>Constant UnsupportedStateTransition.</summary>\n            <unmanaged>MF_E_UNSUPPORTED_STATE_TRANSITION</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.TransformNotPossibleForCurrentInputMediaType\">\n            <summary>Constant TransformNotPossibleForCurrentInputMediaType.</summary>\n            <unmanaged>MF_E_TRANSFORM_NOT_POSSIBLE_FOR_CURRENT_INPUT_MEDIATYPE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.PropertyTypeNotAllowEd\">\n            <summary>Constant PropertyTypeNotAllowEd.</summary>\n            <unmanaged>MF_E_PROPERTY_TYPE_NOT_ALLOWED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.BadStartupVersion\">\n            <summary>Constant BadStartupVersion.</summary>\n            <unmanaged>MF_E_BAD_STARTUP_VERSION</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.NoSampleDuration\">\n            <summary>Constant NoSampleDuration.</summary>\n            <unmanaged>MF_E_NO_SAMPLE_DURATION</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.TransformPropertyValueSizeWrong\">\n            <summary>Constant TransformPropertyValueSizeWrong.</summary>\n            <unmanaged>MF_E_TRANSFORM_PROPERTY_VALUE_SIZE_WRONG</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.TransformNotPossibleForCurrentOutputMediaType\">\n            <summary>Constant TransformNotPossibleForCurrentOutputMediaType.</summary>\n            <unmanaged>MF_E_TRANSFORM_NOT_POSSIBLE_FOR_CURRENT_OUTPUT_MEDIATYPE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.TranscodeNoContainertype\">\n            <summary>Constant TranscodeNoContainertype.</summary>\n            <unmanaged>MF_E_TRANSCODE_NO_CONTAINERTYPE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.TransformConflictsWithOtherCurrentlyEnabledFeatures\">\n            <summary>Constant TransformConflictsWithOtherCurrentlyEnabledFeatures.</summary>\n            <unmanaged>MF_E_TRANSFORM_CONFLICTS_WITH_OTHER_CURRENTLY_ENABLED_FEATURES</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.LicenseIncorrectRights\">\n            <summary>Constant LicenseIncorrectRights.</summary>\n            <unmanaged>MF_E_LICENSE_INCORRECT_RIGHTS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.QualityknobWaitLonger\">\n            <summary>Constant QualityknobWaitLonger.</summary>\n            <unmanaged>MF_E_QUALITYKNOB_WAIT_LONGER</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.NoEventsAvailable\">\n            <summary>Constant NoEventsAvailable.</summary>\n            <unmanaged>MF_E_NO_EVENTS_AVAILABLE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.NetRequireAsync\">\n            <summary>Constant NetRequireAsync.</summary>\n            <unmanaged>MF_E_NET_REQUIRE_ASYNC</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.AsfUnsupportedStreamType\">\n            <summary>Constant AsfUnsupportedStreamType.</summary>\n            <unmanaged>MF_E_ASF_UNSUPPORTED_STREAM_TYPE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.TestSignedComponentsNotAllowEd\">\n            <summary>Constant TestSignedComponentsNotAllowEd.</summary>\n            <unmanaged>MF_E_TEST_SIGNED_COMPONENTS_NOT_ALLOWED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.OutOfRange\">\n            <summary>Constant OutOfRange.</summary>\n            <unmanaged>MF_E_OUT_OF_RANGE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.CannotFindKeyframeSample\">\n            <summary>Constant CannotFindKeyframeSample.</summary>\n            <unmanaged>MF_E_CANNOT_FIND_KEYFRAME_SAMPLE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.StreamError\">\n            <summary>Constant StreamError.</summary>\n            <unmanaged>MF_E_STREAM_ERROR</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.WmdrmotaActionAlreadySet\">\n            <summary>Constant WmdrmotaActionAlreadySet.</summary>\n            <unmanaged>MF_E_WMDRMOTA_ACTION_ALREADY_SET</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.NotProtected\">\n            <summary>Constant NotProtected.</summary>\n            <unmanaged>MF_E_NOT_PROTECTED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.AsfDroppedPacket\">\n            <summary>Constant AsfDroppedPacket.</summary>\n            <unmanaged>MF_E_ASF_DROPPED_PACKET</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.PolicyMgrActionOufOfBounds\">\n            <summary>Constant PolicyMgrActionOufOfBounds.</summary>\n            <unmanaged>MF_E_POLICY_MGR_ACTION_OUTOFBOUNDS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.TranscodeProfileNoMatchingStreams\">\n            <summary>Constant TranscodeProfileNoMatchingStreams.</summary>\n            <unmanaged>MF_E_TRANSCODE_PROFILE_NO_MATCHING_STREAMS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.InvalidFormat\">\n            <summary>Constant InvalidFormat.</summary>\n            <unmanaged>MF_E_INVALID_FORMAT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.CannotIndexInPlace\">\n            <summary>Constant CannotIndexInPlace.</summary>\n            <unmanaged>MF_E_CANNOT_INDEX_IN_PLACE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.NetCacheNoData\">\n            <summary>Constant NetCacheNoData.</summary>\n            <unmanaged>MF_E_NET_CACHE_NO_DATA</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.RtThroughputNotAvailable\">\n            <summary>Constant RtThroughputNotAvailable.</summary>\n            <unmanaged>MF_E_RT_THROUGHPUT_NOT_AVAILABLE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.TransformPropertyNotWriteAble\">\n            <summary>Constant TransformPropertyNotWriteAble.</summary>\n            <unmanaged>MF_E_TRANSFORM_PROPERTY_NOT_WRITEABLE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.PropertyVectorRequired\">\n            <summary>Constant PropertyVectorRequired.</summary>\n            <unmanaged>MF_E_PROPERTY_VECTOR_REQUIRED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.NetProtocolDisabled\">\n            <summary>Constant NetProtocolDisabled.</summary>\n            <unmanaged>MF_E_NET_PROTOCOL_DISABLED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.NetTooManyRedirects\">\n            <summary>Constant NetTooManyRedirects.</summary>\n            <unmanaged>MF_E_NET_TOO_MANY_REDIRECTS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.SinkNoStreams\">\n            <summary>Constant SinkNoStreams.</summary>\n            <unmanaged>MF_E_SINK_NO_STREAMS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.NetConnectionFailure\">\n            <summary>Constant NetConnectionFailure.</summary>\n            <unmanaged>MF_E_NET_CONNECTION_FAILURE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.NoMoreQualityLevels\">\n            <summary>Constant NoMoreQualityLevels.</summary>\n            <unmanaged>MF_E_NO_MORE_QUALITY_LEVELS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.WmdrmotaInvalidPolicy\">\n            <summary>Constant WmdrmotaInvalidPolicy.</summary>\n            <unmanaged>MF_E_WMDRMOTA_INVALID_POLICY</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.UnsupportedService\">\n            <summary>Constant UnsupportedService.</summary>\n            <unmanaged>MF_E_UNSUPPORTED_SERVICE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.VideoRenNoDeinterlaceHw\">\n            <summary>Constant VideoRenNoDeinterlaceHw.</summary>\n            <unmanaged>MF_E_VIDEO_REN_NO_DEINTERLACE_HW</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.TransformStreamChange\">\n            <summary>Constant TransformStreamChange.</summary>\n            <unmanaged>MF_E_TRANSFORM_STREAM_CHANGE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.SampleNotWritable\">\n            <summary>Constant SampleNotWritable.</summary>\n            <unmanaged>MF_E_SAMPLE_NOT_WRITABLE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.InvalidProfile\">\n            <summary>Constant InvalidProfile.</summary>\n            <unmanaged>MF_E_INVALID_PROFILE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.ItaOperationLDataNotInitializeD\">\n            <summary>Constant ItaOperationLDataNotInitializeD.</summary>\n            <unmanaged>MF_E_ITA_OPL_DATA_NOT_INITIALIZED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.IndexNotCommitted\">\n            <summary>Constant IndexNotCommitted.</summary>\n            <unmanaged>MF_E_INDEX_NOT_COMMITTED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.Mp3NotFound\">\n            <summary>Constant Mp3NotFound.</summary>\n            <unmanaged>MF_E_MP3_NOTFOUND</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.NotAvailable\">\n            <summary>Constant NotAvailable.</summary>\n            <unmanaged>MF_E_NOT_AVAILABLE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.WmdrmotaNoAction\">\n            <summary>Constant WmdrmotaNoAction.</summary>\n            <unmanaged>MF_E_WMDRMOTA_NO_ACTION</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.TransformProfileTruncated\">\n            <summary>Constant TransformProfileTruncated.</summary>\n            <unmanaged>MF_E_TRANSFORM_PROFILE_TRUNCATED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.TopoCannotFindDecrementYptor\">\n            <summary>Constant TopoCannotFindDecrementYptor.</summary>\n            <unmanaged>MF_E_TOPO_CANNOT_FIND_DECRYPTOR</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.BackupRestrictedLicense\">\n            <summary>Constant BackupRestrictedLicense.</summary>\n            <unmanaged>MF_E_BACKUP_RESTRICTED_LICENSE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.ItaErrorParsingSapParameters\">\n            <summary>Constant ItaErrorParsingSapParameters.</summary>\n            <unmanaged>MF_E_ITA_ERROR_PARSING_SAP_PARAMETERS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.TrustDisabled\">\n            <summary>Constant TrustDisabled.</summary>\n            <unmanaged>MF_E_TRUST_DISABLED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.NetRedirectToProxy\">\n            <summary>Constant NetRedirectToProxy.</summary>\n            <unmanaged>MF_E_NET_REDIRECT_TO_PROXY</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.VideoRenCopyProtFailed\">\n            <summary>Constant VideoRenCopyProtFailed.</summary>\n            <unmanaged>MF_E_VIDEO_REN_COPYPROT_FAILED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.PeauthSessionNotStarted\">\n            <summary>Constant PeauthSessionNotStarted.</summary>\n            <unmanaged>MF_E_PEAUTH_SESSION_NOT_STARTED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.UnsupportedTimeFormat\">\n            <summary>Constant UnsupportedTimeFormat.</summary>\n            <unmanaged>MF_E_UNSUPPORTED_TIME_FORMAT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.InvalidPosition\">\n            <summary>Constant InvalidPosition.</summary>\n            <unmanaged>MF_E_INVALID_POSITION</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.MediaSourceWrongState\">\n            <summary>Constant MediaSourceWrongState.</summary>\n            <unmanaged>MF_E_MEDIA_SOURCE_WRONGSTATE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.UnsupportedScheme\">\n            <summary>Constant UnsupportedScheme.</summary>\n            <unmanaged>MF_E_UNSUPPORTED_SCHEME</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.ItaUnrecognizedAnalogVideoOutput\">\n            <summary>Constant ItaUnrecognizedAnalogVideoOutput.</summary>\n            <unmanaged>MF_E_ITA_UNRECOGNIZED_ANALOG_VIDEO_OUTPUT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.DisabledInSafemode\">\n            <summary>Constant DisabledInSafemode.</summary>\n            <unmanaged>MF_E_DISABLED_IN_SAFEMODE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.RtOufOfMemory\">\n            <summary>Constant RtOufOfMemory.</summary>\n            <unmanaged>MF_E_RT_OUTOFMEMORY</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.NetRequireNetwork\">\n            <summary>Constant NetRequireNetwork.</summary>\n            <unmanaged>MF_E_NET_REQUIRE_NETWORK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.NetInternalServerError\">\n            <summary>Constant NetInternalServerError.</summary>\n            <unmanaged>MF_E_NET_INTERNAL_SERVER_ERROR</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.NetClientClose\">\n            <summary>Constant NetClientClose.</summary>\n            <unmanaged>MF_E_NET_CLIENT_CLOSE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.TransformPropertyPidNotRecognized\">\n            <summary>Constant TransformPropertyPidNotRecognized.</summary>\n            <unmanaged>MF_E_TRANSFORM_PROPERTY_PID_NOT_RECOGNIZED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.UnrecoverableErrorOccurred\">\n            <summary>Constant UnrecoverableErrorOccurred.</summary>\n            <unmanaged>MF_E_UNRECOVERABLE_ERROR_OCCURRED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.UnsupportedCaption\">\n            <summary>Constant UnsupportedCaption.</summary>\n            <unmanaged>MF_E_UNSUPPORTED_CAPTION</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.PeUntrusted\">\n            <summary>Constant PeUntrusted.</summary>\n            <unmanaged>MF_E_PE_UNTRUSTED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.GrlAbsent\">\n            <summary>Constant GrlAbsent.</summary>\n            <unmanaged>MF_E_GRL_ABSENT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.ClockStateAlreadySet\">\n            <summary>Constant ClockStateAlreadySet.</summary>\n            <unmanaged>MF_E_CLOCK_STATE_ALREADY_SET</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.SampleallocatorEmpty\">\n            <summary>Constant SampleallocatorEmpty.</summary>\n            <unmanaged>MF_E_SAMPLEALLOCATOR_EMPTY</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.OfflineMode\">\n            <summary>Constant OfflineMode.</summary>\n            <unmanaged>MF_E_OFFLINE_MODE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.Unexpected\">\n            <summary>Constant Unexpected.</summary>\n            <unmanaged>MF_E_UNEXPECTED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.UnsupportedByteStreamType\">\n            <summary>Constant UnsupportedByteStreamType.</summary>\n            <unmanaged>MF_E_UNSUPPORTED_BYTESTREAM_TYPE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.TimerOrphaned\">\n            <summary>Constant TimerOrphaned.</summary>\n            <unmanaged>MF_E_TIMER_ORPHANED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.IncompatibleSampleProtection\">\n            <summary>Constant IncompatibleSampleProtection.</summary>\n            <unmanaged>MF_E_INCOMPATIBLE_SAMPLE_PROTECTION</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.AsfTooManyPayloads\">\n            <summary>Constant AsfTooManyPayloads.</summary>\n            <unmanaged>MF_E_ASF_TOO_MANY_PAYLOADS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.AsfOufOfRange\">\n            <summary>Constant AsfOufOfRange.</summary>\n            <unmanaged>MF_E_ASF_OUTOFRANGE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.AudioPlaybackDeviceInvalidated\">\n            <summary>Constant AudioPlaybackDeviceInvalidated.</summary>\n            <unmanaged>MF_E_AUDIO_PLAYBACK_DEVICE_INVALIDATED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.MetadataTooLong\">\n            <summary>Constant MetadataTooLong.</summary>\n            <unmanaged>MF_E_METADATA_TOO_LONG</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.NetInvalidPushPublishingPoint\">\n            <summary>Constant NetInvalidPushPublishingPoint.</summary>\n            <unmanaged>MF_E_NET_INVALID_PUSH_PUBLISHING_POINT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.TopoSinkActivatesUnsupported\">\n            <summary>Constant TopoSinkActivatesUnsupported.</summary>\n            <unmanaged>MF_E_TOPO_SINK_ACTIVATES_UNSUPPORTED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.NoIndex\">\n            <summary>Constant NoIndex.</summary>\n            <unmanaged>MF_E_NO_INDEX</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.TransformNotPossibleForCurrentMediaTypeCombination\">\n            <summary>Constant TransformNotPossibleForCurrentMediaTypeCombination.</summary>\n            <unmanaged>MF_E_TRANSFORM_NOT_POSSIBLE_FOR_CURRENT_MEDIATYPE_COMBINATION</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.TransformInputRemaining\">\n            <summary>Constant TransformInputRemaining.</summary>\n            <unmanaged>MF_E_TRANSFORM_INPUT_REMAINING</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.NetProxyTimeout\">\n            <summary>Constant NetProxyTimeout.</summary>\n            <unmanaged>MF_E_NET_PROXY_TIMEOUT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.BadOperationLStructureFormat\">\n            <summary>Constant BadOperationLStructureFormat.</summary>\n            <unmanaged>MF_E_BAD_OPL_STRUCTURE_FORMAT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.TransformPropertyValueOutOfRange\">\n            <summary>Constant TransformPropertyValueOutOfRange.</summary>\n            <unmanaged>MF_E_TRANSFORM_PROPERTY_VALUE_OUT_OF_RANGE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.PropertyNotFound\">\n            <summary>Constant PropertyNotFound.</summary>\n            <unmanaged>MF_E_PROPERTY_NOT_FOUND</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.TopoMissingSource\">\n            <summary>Constant TopoMissingSource.</summary>\n            <unmanaged>MF_E_TOPO_MISSING_SOURCE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.ItaUnrecognizedAnalogVideoProtectionGuid\">\n            <summary>Constant ItaUnrecognizedAnalogVideoProtectionGuid.</summary>\n            <unmanaged>MF_E_ITA_UNRECOGNIZED_ANALOG_VIDEO_PROTECTION_GUID</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.TransformProfileMissing\">\n            <summary>Constant TransformProfileMissing.</summary>\n            <unmanaged>MF_E_TRANSFORM_PROFILE_MISSING</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.NotAccepting\">\n            <summary>Constant NotAccepting.</summary>\n            <unmanaged>MF_E_NOTACCEPTING</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.NetBadControlData\">\n            <summary>Constant NetBadControlData.</summary>\n            <unmanaged>MF_E_NET_BAD_CONTROL_DATA</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.LicenseRequired\">\n            <summary>Constant LicenseRequired.</summary>\n            <unmanaged>MF_E_LICENSE_REQUIRED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.AllOcatorAlreadyCommited\">\n            <summary>Constant AllOcatorAlreadyCommited.</summary>\n            <unmanaged>MF_E_ALLOCATOR_ALREADY_COMMITED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.StreamsInksFixed\">\n            <summary>Constant StreamsInksFixed.</summary>\n            <unmanaged>MF_E_STREAMSINKS_FIXED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.NotFound\">\n            <summary>Constant NotFound.</summary>\n            <unmanaged>MF_E_NOT_FOUND</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.NoVideoSampleAvailable\">\n            <summary>Constant NoVideoSampleAvailable.</summary>\n            <unmanaged>MF_E_NO_VIDEO_SAMPLE_AVAILABLE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.PropertyTypeNotSupported\">\n            <summary>Constant PropertyTypeNotSupported.</summary>\n            <unmanaged>MF_E_PROPERTY_TYPE_NOT_SUPPORTED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.ClockNoTimeSource\">\n            <summary>Constant ClockNoTimeSource.</summary>\n            <unmanaged>MF_E_CLOCK_NO_TIME_SOURCE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.AudioServiceNotRunning\">\n            <summary>Constant AudioServiceNotRunning.</summary>\n            <unmanaged>MF_E_AUDIO_SERVICE_NOT_RUNNING</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.AsfInvalidData\">\n            <summary>Constant AsfInvalidData.</summary>\n            <unmanaged>MF_E_ASF_INVALIDDATA</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.SessionPausewhilestopped\">\n            <summary>Constant SessionPausewhilestopped.</summary>\n            <unmanaged>MF_E_SESSION_PAUSEWHILESTOPPED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.RateChangePreempted\">\n            <summary>Constant RateChangePreempted.</summary>\n            <unmanaged>MF_E_RATE_CHANGE_PREEMPTED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.AllOcatorNotInitializeD\">\n            <summary>Constant AllOcatorNotInitializeD.</summary>\n            <unmanaged>MF_E_ALLOCATOR_NOT_INITIALIZED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.UnsupportedD3DType\">\n            <summary>Constant UnsupportedD3DType.</summary>\n            <unmanaged>MF_E_UNSUPPORTED_D3D_TYPE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.NewVideoDevice\">\n            <summary>Constant NewVideoDevice.</summary>\n            <unmanaged>MF_E_NEW_VIDEO_DEVICE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.KernelUntrusted\">\n            <summary>Constant KernelUntrusted.</summary>\n            <unmanaged>MF_E_KERNEL_UNTRUSTED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.NetIncompatiblePushserver\">\n            <summary>Constant NetIncompatiblePushserver.</summary>\n            <unmanaged>MF_E_NET_INCOMPATIBLE_PUSHSERVER</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.TranscodeNoMatchingEncoder\">\n            <summary>Constant TranscodeNoMatchingEncoder.</summary>\n            <unmanaged>MF_E_TRANSCODE_NO_MATCHING_ENCODER</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.TopoCannotConnect\">\n            <summary>Constant TopoCannotConnect.</summary>\n            <unmanaged>MF_E_TOPO_CANNOT_CONNECT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.CodeExpired\">\n            <summary>Constant CodeExpired.</summary>\n            <unmanaged>MF_E_CODE_EXPIRED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.TransformPropertyVariantTypeWrong\">\n            <summary>Constant TransformPropertyVariantTypeWrong.</summary>\n            <unmanaged>MF_E_TRANSFORM_PROPERTY_VARIANT_TYPE_WRONG</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.NetBwlevelNotSupported\">\n            <summary>Constant NetBwlevelNotSupported.</summary>\n            <unmanaged>MF_E_NET_BWLEVEL_NOT_SUPPORTED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.Unauthorized\">\n            <summary>Constant Unauthorized.</summary>\n            <unmanaged>MF_E_UNAUTHORIZED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.Mp3OufOfData\">\n            <summary>Constant Mp3OufOfData.</summary>\n            <unmanaged>MF_E_MP3_OUTOFDATA</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.NoMoreTypes\">\n            <summary>Constant NoMoreTypes.</summary>\n            <unmanaged>MF_E_NO_MORE_TYPES</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.PeSessionsMaximumEd\">\n            <summary>Constant PeSessionsMaximumEd.</summary>\n            <unmanaged>MF_E_PE_SESSIONS_MAXED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.NetworkResourceFailure\">\n            <summary>Constant NetworkResourceFailure.</summary>\n            <unmanaged>MF_E_NETWORK_RESOURCE_FAILURE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.InvalidIndex\">\n            <summary>Constant InvalidIndex.</summary>\n            <unmanaged>MF_E_INVALIDINDEX</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.FormatChangeNotSupported\">\n            <summary>Constant FormatChangeNotSupported.</summary>\n            <unmanaged>MF_E_FORMAT_CHANGE_NOT_SUPPORTED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.SinkAlreadystopped\">\n            <summary>Constant SinkAlreadystopped.</summary>\n            <unmanaged>MF_E_SINK_ALREADYSTOPPED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.GrlVersionTooLow\">\n            <summary>Constant GrlVersionTooLow.</summary>\n            <unmanaged>MF_E_GRL_VERSION_TOO_LOW</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.InvalidStreamData\">\n            <summary>Constant InvalidStreamData.</summary>\n            <unmanaged>MF_E_INVALID_STREAM_DATA</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.InvalidTimestamp\">\n            <summary>Constant InvalidTimestamp.</summary>\n            <unmanaged>MF_E_INVALID_TIMESTAMP</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.ClockNotSimple\">\n            <summary>Constant ClockNotSimple.</summary>\n            <unmanaged>MF_E_CLOCK_NOT_SIMPLE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.TransformCannotChangeMediaTypeWhileProcessing\">\n            <summary>Constant TransformCannotChangeMediaTypeWhileProcessing.</summary>\n            <unmanaged>MF_E_TRANSFORM_CANNOT_CHANGE_MEDIATYPE_WHILE_PROCESSING</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.BandwidthOverrun\">\n            <summary>Constant BandwidthOverrun.</summary>\n            <unmanaged>MF_E_BANDWIDTH_OVERRUN</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.NoPmpHost\">\n            <summary>Constant NoPmpHost.</summary>\n            <unmanaged>MF_E_NO_PMP_HOST</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.WmdrmotaDrmEncryptionSchemeNotSupported\">\n            <summary>Constant WmdrmotaDrmEncryptionSchemeNotSupported.</summary>\n            <unmanaged>MF_E_WMDRMOTA_DRM_ENCRYPTION_SCHEME_NOT_SUPPORTED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.GrlRenewalNotFound\">\n            <summary>Constant GrlRenewalNotFound.</summary>\n            <unmanaged>MF_E_GRL_RENEWAL_NOT_FOUND</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.LicenseRestoreNeedsIndividualization\">\n            <summary>Constant LicenseRestoreNeedsIndividualization.</summary>\n            <unmanaged>MF_E_LICENSE_RESTORE_NEEDS_INDIVIDUALIZATION</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.PropertyNotAllowEd\">\n            <summary>Constant PropertyNotAllowEd.</summary>\n            <unmanaged>MF_E_PROPERTY_NOT_ALLOWED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.InvalidRequest\">\n            <summary>Constant InvalidRequest.</summary>\n            <unmanaged>MF_E_INVALIDREQUEST</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.NetCannotconnect\">\n            <summary>Constant NetCannotconnect.</summary>\n            <unmanaged>MF_E_NET_CANNOTCONNECT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.LicenseOufOfDate\">\n            <summary>Constant LicenseOufOfDate.</summary>\n            <unmanaged>MF_E_LICENSE_OUTOFDATE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResultCode.PeauthNotStarted\">\n            <summary>Constant PeauthNotStarted.</summary>\n            <unmanaged>MF_E_PEAUTH_NOT_STARTED</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.SampleAttributeKeys\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.MediaFoundation.SampleAttributeKeys']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.SampleAttributeKeys.BottomFieldFirst\">\n            <summary>Constant BottomFieldFirst.</summary>\n            <unmanaged>MFSampleExtension_BottomFieldFirst</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.SampleAttributeKeys.CleanPoint\">\n            <summary>Constant CleanPoint.</summary>\n            <unmanaged>MFSampleExtension_CleanPoint</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.SampleAttributeKeys.DerivedFromTopField\">\n            <summary>Constant DerivedFromTopField.</summary>\n            <unmanaged>MFSampleExtension_DerivedFromTopField</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.SampleAttributeKeys.DeviceTimestamp\">\n            <summary>Constant DeviceTimestamp.</summary>\n            <unmanaged>MFSampleExtension_DeviceTimestamp</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.SampleAttributeKeys.Discontinuity\">\n            <summary>Constant Discontinuity.</summary>\n            <unmanaged>MFSampleExtension_Discontinuity</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.SampleAttributeKeys.Interlaced\">\n            <summary>Constant Interlaced.</summary>\n            <unmanaged>MFSampleExtension_Interlaced</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.SampleAttributeKeys.PacketCrossOffsets\">\n            <summary>Constant PacketCrossOffsets.</summary>\n            <unmanaged>MFSampleExtension_PacketCrossOffsets</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.SampleAttributeKeys.RepeatFirstField\">\n            <summary>Constant RepeatFirstField.</summary>\n            <unmanaged>MFSampleExtension_RepeatFirstField</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.SampleAttributeKeys.SingleField\">\n            <summary>Constant SingleField.</summary>\n            <unmanaged>MFSampleExtension_SingleField</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.SampleAttributeKeys.Token\">\n            <summary>Constant Token.</summary>\n            <unmanaged>MFSampleExtension_Token</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.SampleAttributeKeys.DescrambleData\">\n            <summary>Constant DescrambleData.</summary>\n            <unmanaged>MFSampleExtension_DescrambleData</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.SampleAttributeKeys.SampleKeyID\">\n            <summary>Constant SampleKeyID.</summary>\n            <unmanaged>MFSampleExtension_SampleKeyID</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.SampleAttributeKeys.GenKeyFunc\">\n            <summary>Constant GenKeyFunc.</summary>\n            <unmanaged>MFSampleExtension_GenKeyFunc</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.SampleAttributeKeys.GenKeyCtx\">\n            <summary>Constant GenKeyCtx.</summary>\n            <unmanaged>MFSampleExtension_GenKeyCtx</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.SampleGrabberSinkAttributeKeys\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.MediaFoundation.SampleGrabberSinkAttributeKeys']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.SampleGrabberSinkAttributeKeys.IgnoreClock\">\n            <summary>Constant IgnoreClock.</summary>\n            <unmanaged>MF_SAMPLEGRABBERSINK_IGNORE_CLOCK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.SampleGrabberSinkAttributeKeys.SampleTimeOffset\">\n            <summary>Constant SampleTimeOffset.</summary>\n            <unmanaged>MF_SAMPLEGRABBERSINK_SAMPLE_TIME_OFFSET</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.SinkWriterAttributeKeys\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.MediaFoundation.SinkWriterAttributeKeys']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.SinkWriterAttributeKeys.ReadwriteDisableConverters\">\n            <summary>Constant ReadwriteDisableConverters.</summary>\n            <unmanaged>MF_READWRITE_DISABLE_CONVERTERS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.SinkWriterAttributeKeys.ReadwriteEnableHardwareTransforms\">\n            <summary>Constant ReadwriteEnableHardwareTransforms.</summary>\n            <unmanaged>MF_READWRITE_ENABLE_HARDWARE_TRANSFORMS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.SinkWriterAttributeKeys.AsyncCallback\">\n            <summary>Constant AsyncCallback.</summary>\n            <unmanaged>MF_SINK_WRITER_ASYNC_CALLBACK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.SinkWriterAttributeKeys.DisableThrottling\">\n            <summary>Constant DisableThrottling.</summary>\n            <unmanaged>MF_SINK_WRITER_DISABLE_THROTTLING</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.SourceReaderAttributeKeys\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.MediaFoundation.SourceReaderAttributeKeys']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.SourceReaderAttributeKeys.AsyncCallback\">\n            <summary>Constant AsyncCallback.</summary>\n            <unmanaged>MF_SOURCE_READER_ASYNC_CALLBACK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.SourceReaderAttributeKeys.D3DManager\">\n            <summary>Constant D3DManager.</summary>\n            <unmanaged>MF_SOURCE_READER_D3D_MANAGER</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.SourceReaderAttributeKeys.DisableDxva\">\n            <summary>Constant DisableDxva.</summary>\n            <unmanaged>MF_SOURCE_READER_DISABLE_DXVA</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.SourceReaderAttributeKeys.DisconnectMediasourceOnShutdown\">\n            <summary>Constant DisconnectMediasourceOnShutdown.</summary>\n            <unmanaged>MF_SOURCE_READER_DISCONNECT_MEDIASOURCE_ON_SHUTDOWN</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.SourceReaderAttributeKeys.EnableVideoProcessing\">\n            <summary>Constant EnableVideoProcessing.</summary>\n            <unmanaged>MF_SOURCE_READER_ENABLE_VIDEO_PROCESSING</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.SourceReaderAttributeKeys.MediaSourceCharacteristics\">\n            <summary>Constant MediaSourceCharacteristics.</summary>\n            <unmanaged>MF_SOURCE_READER_MEDIASOURCE_CHARACTERISTICS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.SourceReaderAttributeKeys.MediaSourceConfig\">\n            <summary>Constant MediaSourceConfig.</summary>\n            <unmanaged>MF_SOURCE_READER_MEDIASOURCE_CONFIG</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.StreamDescriptorAttributeKeys\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.MediaFoundation.StreamDescriptorAttributeKeys']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.StreamDescriptorAttributeKeys.AsfExtstrmpropAvgBuffersize\">\n            <summary>Constant AsfExtstrmpropAvgBuffersize.</summary>\n            <unmanaged>MF_SD_ASF_EXTSTRMPROP_AVG_BUFFERSIZE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.StreamDescriptorAttributeKeys.AsfExtstrmpropAvgDataBitrate\">\n            <summary>Constant AsfExtstrmpropAvgDataBitrate.</summary>\n            <unmanaged>MF_SD_ASF_EXTSTRMPROP_AVG_DATA_BITRATE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.StreamDescriptorAttributeKeys.AsfExtstrmpropLanguageIdIndex\">\n            <summary>Constant AsfExtstrmpropLanguageIdIndex.</summary>\n            <unmanaged>MF_SD_ASF_EXTSTRMPROP_LANGUAGE_ID_INDEX</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.StreamDescriptorAttributeKeys.AsfExtstrmpropMaxBuffersize\">\n            <summary>Constant AsfExtstrmpropMaxBuffersize.</summary>\n            <unmanaged>MF_SD_ASF_EXTSTRMPROP_MAX_BUFFERSIZE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.StreamDescriptorAttributeKeys.AsfExtstrmpropMaxDataBitrate\">\n            <summary>Constant AsfExtstrmpropMaxDataBitrate.</summary>\n            <unmanaged>MF_SD_ASF_EXTSTRMPROP_MAX_DATA_BITRATE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.StreamDescriptorAttributeKeys.AsfMetadataDeviceConformanceTemplate\">\n            <summary>Constant AsfMetadataDeviceConformanceTemplate.</summary>\n            <unmanaged>MF_SD_ASF_METADATA_DEVICE_CONFORMANCE_TEMPLATE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.StreamDescriptorAttributeKeys.AsfStreambitratesBitrate\">\n            <summary>Constant AsfStreambitratesBitrate.</summary>\n            <unmanaged>MF_SD_ASF_STREAMBITRATES_BITRATE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.StreamDescriptorAttributeKeys.Language\">\n            <summary>Constant Language.</summary>\n            <unmanaged>MF_SD_LANGUAGE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.StreamDescriptorAttributeKeys.MutuallyExclusive\">\n            <summary>Constant MutuallyExclusive.</summary>\n            <unmanaged>MF_SD_MUTUALLY_EXCLUSIVE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.StreamDescriptorAttributeKeys.Protected\">\n            <summary>Constant Protected.</summary>\n            <unmanaged>MF_SD_PROTECTED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.StreamDescriptorAttributeKeys.SamiLanguage\">\n            <summary>Constant SamiLanguage.</summary>\n            <unmanaged>MF_SD_SAMI_LANGUAGE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.StreamDescriptorAttributeKeys.StreamName\">\n            <summary>Constant StreamName.</summary>\n            <unmanaged>MF_SD_STREAM_NAME</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.TopologyAttributeKeys\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.MediaFoundation.TopologyAttributeKeys']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TopologyAttributeKeys.DXVAMode\">\n            <summary>Constant DXVAMode.</summary>\n            <unmanaged>MF_TOPOLOGY_DXVA_MODE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TopologyAttributeKeys.DynamicChangeNotAllowed\">\n            <summary>Constant DynamicChangeNotAllowed.</summary>\n            <unmanaged>MF_TOPOLOGY_DYNAMIC_CHANGE_NOT_ALLOWED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TopologyAttributeKeys.EnumerateSourceTypes\">\n            <summary>Constant EnumerateSourceTypes.</summary>\n            <unmanaged>MF_TOPOLOGY_ENUMERATE_SOURCE_TYPES</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TopologyAttributeKeys.HardwareMode\">\n            <summary>Constant HardwareMode.</summary>\n            <unmanaged>MF_TOPOLOGY_HARDWARE_MODE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TopologyAttributeKeys.NoMarkinMarkout\">\n            <summary>Constant NoMarkinMarkout.</summary>\n            <unmanaged>MF_TOPOLOGY_NO_MARKIN_MARKOUT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TopologyAttributeKeys.PlaybackFramerate\">\n            <summary>Constant PlaybackFramerate.</summary>\n            <unmanaged>MF_TOPOLOGY_PLAYBACK_FRAMERATE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TopologyAttributeKeys.PlaybackMaxDimensions\">\n            <summary>Constant PlaybackMaxDimensions.</summary>\n            <unmanaged>MF_TOPOLOGY_PLAYBACK_MAX_DIMS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TopologyAttributeKeys.ProjectStart\">\n            <summary>Constant ProjectStart.</summary>\n            <unmanaged>MF_TOPOLOGY_PROJECTSTART</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TopologyAttributeKeys.ProjectStop\">\n            <summary>Constant ProjectStop.</summary>\n            <unmanaged>MF_TOPOLOGY_PROJECTSTOP</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TopologyAttributeKeys.ResolutionStatus\">\n            <summary>Constant ResolutionStatus.</summary>\n            <unmanaged>MF_TOPOLOGY_RESOLUTION_STATUS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TopologyAttributeKeys.StartTimeOnPresentationSwitch\">\n            <summary>Constant StartTimeOnPresentationSwitch.</summary>\n            <unmanaged>MF_TOPOLOGY_START_TIME_ON_PRESENTATION_SWITCH</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TopologyAttributeKeys.StaticPlaybackOptimizations\">\n            <summary>Constant StaticPlaybackOptimizations.</summary>\n            <unmanaged>MF_TOPOLOGY_STATIC_PLAYBACK_OPTIMIZATIONS</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.TopologyNodeAttributeKeys\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.MediaFoundation.TopologyNodeAttributeKeys']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TopologyNodeAttributeKeys.ConnectMethod\">\n            <summary>Constant ConnectMethod.</summary>\n            <unmanaged>MF_TOPONODE_CONNECT_METHOD</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TopologyNodeAttributeKeys.D3DAWARE\">\n            <summary>Constant D3DAWARE.</summary>\n            <unmanaged>MF_TOPONODE_D3DAWARE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TopologyNodeAttributeKeys.Decoder\">\n            <summary>Constant Decoder.</summary>\n            <unmanaged>MF_TOPONODE_DECODER</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TopologyNodeAttributeKeys.Decryptor\">\n            <summary>Constant Decryptor.</summary>\n            <unmanaged>MF_TOPONODE_DECRYPTOR</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TopologyNodeAttributeKeys.DisablePreroll\">\n            <summary>Constant DisablePreroll.</summary>\n            <unmanaged>MF_TOPONODE_DISABLE_PREROLL</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TopologyNodeAttributeKeys.Discardable\">\n            <summary>Constant Discardable.</summary>\n            <unmanaged>MF_TOPONODE_DISCARDABLE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TopologyNodeAttributeKeys.Drain\">\n            <summary>Constant Drain.</summary>\n            <unmanaged>MF_TOPONODE_DRAIN</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TopologyNodeAttributeKeys.ErrorMajortype\">\n            <summary>Constant ErrorMajortype.</summary>\n            <unmanaged>MF_TOPONODE_ERROR_MAJORTYPE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TopologyNodeAttributeKeys.ErrorSubtype\">\n            <summary>Constant ErrorSubtype.</summary>\n            <unmanaged>MF_TOPONODE_ERROR_SUBTYPE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TopologyNodeAttributeKeys.Errorcode\">\n            <summary>Constant Errorcode.</summary>\n            <unmanaged>MF_TOPONODE_ERRORCODE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TopologyNodeAttributeKeys.Flush\">\n            <summary>Constant Flush.</summary>\n            <unmanaged>MF_TOPONODE_FLUSH</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TopologyNodeAttributeKeys.Locked\">\n            <summary>Constant Locked.</summary>\n            <unmanaged>MF_TOPONODE_LOCKED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TopologyNodeAttributeKeys.MarkinHere\">\n            <summary>Constant MarkinHere.</summary>\n            <unmanaged>MF_TOPONODE_MARKIN_HERE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TopologyNodeAttributeKeys.MarkoutHere\">\n            <summary>Constant MarkoutHere.</summary>\n            <unmanaged>MF_TOPONODE_MARKOUT_HERE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TopologyNodeAttributeKeys.Mediastart\">\n            <summary>Constant Mediastart.</summary>\n            <unmanaged>MF_TOPONODE_MEDIASTART</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TopologyNodeAttributeKeys.Mediastop\">\n            <summary>Constant Mediastop.</summary>\n            <unmanaged>MF_TOPONODE_MEDIASTOP</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TopologyNodeAttributeKeys.NoshutdownOnRemove\">\n            <summary>Constant NoshutdownOnRemove.</summary>\n            <unmanaged>MF_TOPONODE_NOSHUTDOWN_ON_REMOVE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TopologyNodeAttributeKeys.PresentationDescriptor\">\n            <summary>Constant PresentationDescriptor.</summary>\n            <unmanaged>MF_TOPONODE_PRESENTATION_DESCRIPTOR</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TopologyNodeAttributeKeys.Primaryoutput\">\n            <summary>Constant Primaryoutput.</summary>\n            <unmanaged>MF_TOPONODE_PRIMARYOUTPUT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TopologyNodeAttributeKeys.Rateless\">\n            <summary>Constant Rateless.</summary>\n            <unmanaged>MF_TOPONODE_RATELESS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TopologyNodeAttributeKeys.SequenceElementid\">\n            <summary>Constant SequenceElementid.</summary>\n            <unmanaged>MF_TOPONODE_SEQUENCE_ELEMENTID</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TopologyNodeAttributeKeys.Source\">\n            <summary>Constant Source.</summary>\n            <unmanaged>MF_TOPONODE_SOURCE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TopologyNodeAttributeKeys.StreamDescriptor\">\n            <summary>Constant StreamDescriptor.</summary>\n            <unmanaged>MF_TOPONODE_STREAM_DESCRIPTOR</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TopologyNodeAttributeKeys.Streamid\">\n            <summary>Constant Streamid.</summary>\n            <unmanaged>MF_TOPONODE_STREAMID</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TopologyNodeAttributeKeys.TransformObjectid\">\n            <summary>Constant TransformObjectid.</summary>\n            <unmanaged>MF_TOPONODE_TRANSFORM_OBJECTID</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TopologyNodeAttributeKeys.WorkqueueId\">\n            <summary>Constant WorkqueueId.</summary>\n            <unmanaged>MF_TOPONODE_WORKQUEUE_ID</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TopologyNodeAttributeKeys.WorkqueueMmcssClass\">\n            <summary>Constant WorkqueueMmcssClass.</summary>\n            <unmanaged>MF_TOPONODE_WORKQUEUE_MMCSS_CLASS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TopologyNodeAttributeKeys.WorkqueueMmcssTaskid\">\n            <summary>Constant WorkqueueMmcssTaskid.</summary>\n            <unmanaged>MF_TOPONODE_WORKQUEUE_MMCSS_TASKID</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.TranscodeAttributeKeys\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.MediaFoundation.TranscodeAttributeKeys']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TranscodeAttributeKeys.TranscodeAdjustProfile\">\n            <summary>Constant TranscodeAdjustProfile.</summary>\n            <unmanaged>MF_TRANSCODE_ADJUST_PROFILE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TranscodeAttributeKeys.TranscodeContainertype\">\n            <summary>Constant TranscodeContainertype.</summary>\n            <unmanaged>MF_TRANSCODE_CONTAINERTYPE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TranscodeAttributeKeys.TranscodeDonotInsertEncoder\">\n            <summary>Constant TranscodeDonotInsertEncoder.</summary>\n            <unmanaged>MF_TRANSCODE_DONOT_INSERT_ENCODER</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TranscodeAttributeKeys.TranscodeEncodingprofile\">\n            <summary>Constant TranscodeEncodingprofile.</summary>\n            <unmanaged>MF_TRANSCODE_ENCODINGPROFILE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TranscodeAttributeKeys.TranscodeQualityvsspeed\">\n            <summary>Constant TranscodeQualityvsspeed.</summary>\n            <unmanaged>MF_TRANSCODE_QUALITYVSSPEED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TranscodeAttributeKeys.TranscodeSkipMetadataTransfer\">\n            <summary>Constant TranscodeSkipMetadataTransfer.</summary>\n            <unmanaged>MF_TRANSCODE_SKIP_METADATA_TRANSFER</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TranscodeAttributeKeys.TranscodeTopologymode\">\n            <summary>Constant TranscodeTopologymode.</summary>\n            <unmanaged>MF_TRANSCODE_TOPOLOGYMODE</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.TransformAttributeKeys\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.MediaFoundation.TransformAttributeKeys']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TransformAttributeKeys.ActivateMftLocked\">\n            <summary>Constant ActivateMftLocked.</summary>\n            <unmanaged>MF_ACTIVATE_MFT_LOCKED</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TransformAttributeKeys.D3DAware\">\n            <summary>Constant D3DAware.</summary>\n            <unmanaged>MF_SA_D3D_AWARE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TransformAttributeKeys.TransformAsync\">\n            <summary>Constant TransformAsync.</summary>\n            <unmanaged>MF_TRANSFORM_ASYNC</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TransformAttributeKeys.TransformAsyncUnlock\">\n            <summary>Constant TransformAsyncUnlock.</summary>\n            <unmanaged>MF_TRANSFORM_ASYNC_UNLOCK</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TransformAttributeKeys.TransformCategoryAttribute\">\n            <summary>Constant TransformCategoryAttribute.</summary>\n            <unmanaged>MF_TRANSFORM_CATEGORY_Attribute</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TransformAttributeKeys.TransformFlagsAttribute\">\n            <summary>Constant TransformFlagsAttribute.</summary>\n            <unmanaged>MF_TRANSFORM_FLAGS_Attribute</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TransformAttributeKeys.MftCodecMeritAttribute\">\n            <summary>Constant MftCodecMeritAttribute.</summary>\n            <unmanaged>MFT_CODEC_MERIT_Attribute</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TransformAttributeKeys.MftConnectedStreamAttribute\">\n            <summary>Constant MftConnectedStreamAttribute.</summary>\n            <unmanaged>MFT_CONNECTED_STREAM_ATTRIBUTE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TransformAttributeKeys.MftConnectedToHwStream\">\n            <summary>Constant MftConnectedToHwStream.</summary>\n            <unmanaged>MFT_CONNECTED_TO_HW_STREAM</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TransformAttributeKeys.MftEnumHardwareUrlAttribute\">\n            <summary>Constant MftEnumHardwareUrlAttribute.</summary>\n            <unmanaged>MFT_ENUM_HARDWARE_URL_Attribute</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TransformAttributeKeys.MftEnumTranscodeOnlyAttribute\">\n            <summary>Constant MftEnumTranscodeOnlyAttribute.</summary>\n            <unmanaged>MFT_ENUM_TRANSCODE_ONLY_ATTRIBUTE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TransformAttributeKeys.MftFieldofuseUnlockAttribute\">\n            <summary>Constant MftFieldofuseUnlockAttribute.</summary>\n            <unmanaged>MFT_FIELDOFUSE_UNLOCK_Attribute</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TransformAttributeKeys.MftFriendlyNameAttribute\">\n            <summary>Constant MftFriendlyNameAttribute.</summary>\n            <unmanaged>MFT_FRIENDLY_NAME_Attribute</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TransformAttributeKeys.MftHwTimestampWithQpcAttribute\">\n            <summary>Constant MftHwTimestampWithQpcAttribute.</summary>\n            <unmanaged>MFT_HW_TIMESTAMP_WITH_QPC_Attribute</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TransformAttributeKeys.MftInputTypesAttributes\">\n            <summary>Constant MftInputTypesAttributes.</summary>\n            <unmanaged>MFT_INPUT_TYPES_Attributes</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TransformAttributeKeys.MftOutputTypesAttributes\">\n            <summary>Constant MftOutputTypesAttributes.</summary>\n            <unmanaged>MFT_OUTPUT_TYPES_Attributes</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TransformAttributeKeys.MftPreferredEncoderProfile\">\n            <summary>Constant MftPreferredEncoderProfile.</summary>\n            <unmanaged>MFT_PREFERRED_ENCODER_PROFILE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TransformAttributeKeys.MftPreferredOutputtypeAttribute\">\n            <summary>Constant MftPreferredOutputtypeAttribute.</summary>\n            <unmanaged>MFT_PREFERRED_OUTPUTTYPE_Attribute</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TransformAttributeKeys.MftProcessLocalAttribute\">\n            <summary>Constant MftProcessLocalAttribute.</summary>\n            <unmanaged>MFT_PROCESS_LOCAL_Attribute</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TransformAttributeKeys.MftSupportDynamicFormatChange\">\n            <summary>Constant MftSupportDynamicFormatChange.</summary>\n            <unmanaged>MFT_SUPPORT_DYNAMIC_FORMAT_CHANGE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TransformAttributeKeys.MftTransformClsidAttribute\">\n            <summary>Constant MftTransformClsidAttribute.</summary>\n            <unmanaged>MFT_TRANSFORM_CLSID_Attribute</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.TransformCategoryGuids\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.MediaFoundation.TransformCategoryGuids']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TransformCategoryGuids.AudioDecoder\">\n            <summary>Constant AudioDecoder.</summary>\n            <unmanaged>MFT_CATEGORY_AUDIO_DECODER</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TransformCategoryGuids.Other\">\n            <summary>Constant Other.</summary>\n            <unmanaged>MFT_CATEGORY_OTHER</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TransformCategoryGuids.AudioEncoder\">\n            <summary>Constant AudioEncoder.</summary>\n            <unmanaged>MFT_CATEGORY_AUDIO_ENCODER</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TransformCategoryGuids.VideoProcessor\">\n            <summary>Constant VideoProcessor.</summary>\n            <unmanaged>MFT_CATEGORY_VIDEO_PROCESSOR</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TransformCategoryGuids.Multiplexer\">\n            <summary>Constant Multiplexer.</summary>\n            <unmanaged>MFT_CATEGORY_MULTIPLEXER</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TransformCategoryGuids.Demultiplexer\">\n            <summary>Constant Demultiplexer.</summary>\n            <unmanaged>MFT_CATEGORY_DEMULTIPLEXER</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TransformCategoryGuids.AudioEffect\">\n            <summary>Constant AudioEffect.</summary>\n            <unmanaged>MFT_CATEGORY_AUDIO_EFFECT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TransformCategoryGuids.VideoDecoder\">\n            <summary>Constant VideoDecoder.</summary>\n            <unmanaged>MFT_CATEGORY_VIDEO_DECODER</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TransformCategoryGuids.VideoEffect\">\n            <summary>Constant VideoEffect.</summary>\n            <unmanaged>MFT_CATEGORY_VIDEO_EFFECT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TransformCategoryGuids.VideoEncoder\">\n            <summary>Constant VideoEncoder.</summary>\n            <unmanaged>MFT_CATEGORY_VIDEO_ENCODER</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.Activate\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Creates the object associated with this activation object. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Some Microsoft Media Foundation objects must be shut down before being released. If so, the caller is responsible for shutting down the object that is returned in <em>ppv</em>. To shut down the object, do one of the following:</p><ul> <li>Call <strong><see cref=\"M:SharpDX.MediaFoundation.Activate.ShutdownObject\"/></strong> on the activation object, or</li> <li>Call the object-specific shutdown method. This method will depend on the type of object. Possibilities include:<ul> <li>Media sources: Call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaSource.Shutdown\"/></strong>.</li> <li>Media sinks: Call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaSink.Shutdown\"/></strong>.</li> <li>Any object that supports the <strong><see cref=\"T:SharpDX.MediaFoundation.Shutdownable\"/></strong> interface: Call <strong><see cref=\"M:SharpDX.MediaFoundation.Shutdownable.Shutdown\"/></strong>.</li> </ul> </li> </ul><p>The <strong><see cref=\"M:SharpDX.MediaFoundation.Activate.ShutdownObject\"/></strong> method is generic to all object types. If the object does not require a shutdown method, <strong>ShutdownObject</strong> succeeds and has no effect. If you do not know the specific shutdown method for the object (or do not know the object type), call <strong><see cref=\"M:SharpDX.MediaFoundation.Activate.ShutdownObject\"/></strong>.</p><p> After the first call to <strong>ActivateObject</strong>, subsequent calls return a reference to the same instance, until the client calls either <strong>ShutdownObject</strong> or <strong><see cref=\"M:SharpDX.MediaFoundation.Activate.DetachObject\"/></strong>. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFActivate']/*\"/>\t\n            <msdn-id>ms694292</msdn-id>\t\n            <unmanaged>IMFActivate</unmanaged>\t\n            <unmanaged-short>IMFActivate</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.MediaAttributes\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Provides a generic way to store key/value pairs on an object. The keys are <strong><see cref=\"T:System.Guid\"/></strong>s, and the values can be any of the following data types: <strong>UINT32</strong>, <strong>UINT64</strong>, <strong>double</strong>, <strong><see cref=\"T:System.Guid\"/></strong>, wide-character string, byte array, or <strong><see cref=\"T:SharpDX.ComObject\"/></strong> reference. The standard implementation of this interface holds a thread lock while values are added, deleted, or retrieved.</p><p>For a list of predefined attribute <strong><see cref=\"T:System.Guid\"/></strong>s, see Media Foundation Attributes. Each attribute <strong><see cref=\"T:System.Guid\"/></strong> has an expected data type. The various \"set\" methods in <strong><see cref=\"T:SharpDX.MediaFoundation.MediaAttributes\"/></strong> do not validate the type against the attribute <strong><see cref=\"T:System.Guid\"/></strong>. It is the application's responsibility to set the correct type for the attribute.</p><p>To create an empty attribute store, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateAttributes(SharpDX.MediaFoundation.MediaAttributes,System.Int32)\"/></strong>.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFAttributes']/*\"/>\t\n            <msdn-id>ms704598</msdn-id>\t\n            <unmanaged>IMFAttributes</unmanaged>\t\n            <unmanaged-short>IMFAttributes</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaAttributes.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.MediaAttributes\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaAttributes.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.MediaAttributes\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.MediaAttributes\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaAttributes.GetItem(System.Guid,System.IntPtr)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"guidKey\">No documentation.</param>\t\n            <param name=\"valueRef\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFAttributes::GetItem']/*\"/>\t\n            <unmanaged>HRESULT IMFAttributes::GetItem([In] const GUID&amp; guidKey,[In] void* pValue)</unmanaged>\t\n            <unmanaged-short>IMFAttributes::GetItem</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaAttributes.GetItemType(System.Guid)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"guidKey\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFAttributes::GetItemType']/*\"/>\t\n            <unmanaged>HRESULT IMFAttributes::GetItemType([In] const GUID&amp; guidKey,[Out] MF_ATTRIBUTE_TYPE* pType)</unmanaged>\t\n            <unmanaged-short>IMFAttributes::GetItemType</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaAttributes.CompareItem(System.Guid,SharpDX.Win32.Variant)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"guidKey\">No documentation.</param>\t\n            <param name=\"value\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFAttributes::CompareItem']/*\"/>\t\n            <unmanaged>HRESULT IMFAttributes::CompareItem([In] const GUID&amp; guidKey,[In] const PROPVARIANT&amp; Value,[Out] BOOL* pbResult)</unmanaged>\t\n            <unmanaged-short>IMFAttributes::CompareItem</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaAttributes.Compare(SharpDX.MediaFoundation.MediaAttributes,SharpDX.MediaFoundation.AttributesMatchType)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Compares the attributes on this object with the attributes on another object.</p>\t\n            </summary>\t\n            <param name=\"theirsRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaAttributes\"/></strong> interface of the object to compare with this object.</p> </dd></param>\t\n            <param name=\"matchType\"><dd> <p>Member of the <strong><see cref=\"T:SharpDX.MediaFoundation.AttributesMatchType\"/></strong> enumeration, specifying the type of comparison to make.</p> </dd></param>\t\n            <returns><dd> <p>Receives a Boolean value. The value is <strong>TRUE</strong> if the two sets of attributes match in the way specified by the <em>MatchType</em> parameter. Otherwise, the value is <strong><see cref=\"F:SharpDX.Result.False\"/></strong>.</p> </dd></returns>\t\n            <remarks>\t\n            <p>If <em>pThis</em> is the object whose <strong>Compare</strong> method is called, and <em>pTheirs</em> is the object passed in as the <em>pTheirs</em> parameter, the following comparisons are defined by <em>MatchType</em>.</p><table> <tr><th>Match type</th><th>Returns <strong>TRUE</strong> if and only if</th></tr> <tr><td><strong><see cref=\"F:SharpDX.MediaFoundation.AttributesMatchType.OurItems\"/></strong></td><td>For every attribute in <em>pThis</em>, an attribute with the same key and value exists in <em>pTheirs</em>.</td></tr> <tr><td><strong><see cref=\"F:SharpDX.MediaFoundation.AttributesMatchType.TheirItems\"/></strong></td><td>For every attribute in <em>pTheirs</em>, an attribute with the same key and value exists in <em>pThis</em>.</td></tr> <tr><td><strong><see cref=\"F:SharpDX.MediaFoundation.AttributesMatchType.AllItems\"/></strong></td><td>The key/value pairs are identical in both objects.</td></tr> <tr><td><strong><see cref=\"F:SharpDX.MediaFoundation.AttributesMatchType.Intersection\"/></strong></td><td>Take the intersection of the keys in <em>pThis</em> and the keys in <em>pTheirs</em>. The values associated with those keys are identical in both <em>pThis</em> and <em>pTheirs</em>.</td></tr> <tr><td><strong><see cref=\"F:SharpDX.MediaFoundation.AttributesMatchType.Smaller\"/></strong></td><td>Take the object with the smallest number of attributes. For every attribute in that object, an attribute with the same key and value exists in the other object.</td></tr> </table><p>?</p><p>The <em>pTheirs</em> and <em>pbResult</em> parameters must not be <strong><c>null</c></strong>. If either parameter is <strong><c>null</c></strong>, an access violation occurs.</p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFAttributes::Compare']/*\"/>\t\n            <msdn-id>bb970349</msdn-id>\t\n            <unmanaged>HRESULT IMFAttributes::Compare([In, Optional] IMFAttributes* pTheirs,[In] MF_ATTRIBUTES_MATCH_TYPE MatchType,[Out] BOOL* pbResult)</unmanaged>\t\n            <unmanaged-short>IMFAttributes::Compare</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaAttributes.GetInt(System.Guid)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves a <strong>UINT32</strong> value associated with a key.</p>\t\n            </summary>\t\n            <param name=\"guidKey\"><dd> <p><see cref=\"T:System.Guid\"/> that identifies which value to retrieve. The attribute type must be <strong><see cref=\"F:SharpDX.MediaFoundation.AttributeType.UInt32\"/></strong>.</p> </dd></param>\t\n            <returns><dd> <p>Receives a <strong>UINT32</strong> value. If the key is found and the data type is <strong>UINT32</strong>, the method copies the value into this parameter. Otherwise, the original value of this parameter is not changed.</p> </dd></returns>\t\n            <remarks>\t\n            <p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFAttributes::GetUINT32']/*\"/>\t\n            <msdn-id>bb970551</msdn-id>\t\n            <unmanaged>HRESULT IMFAttributes::GetUINT32([In] const GUID&amp; guidKey,[Out] unsigned int* punValue)</unmanaged>\t\n            <unmanaged-short>IMFAttributes::GetUINT32</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaAttributes.GetLong(System.Guid)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves a <strong>UINT64</strong> value associated with a key.</p>\t\n            </summary>\t\n            <param name=\"guidKey\"><dd> <p><see cref=\"T:System.Guid\"/> that identifies which value to retrieve. The attribute type must be <strong><see cref=\"F:SharpDX.MediaFoundation.AttributeType.UInt64\"/></strong>.</p> </dd></param>\t\n            <returns><dd> <p>Receives a <strong>UINT64</strong> value. If the key is found and the data type is <strong>UINT64</strong>, the method copies the value into this parameter. Otherwise, the original value of this parameter is not changed.</p> </dd></returns>\t\n            <remarks>\t\n            <p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFAttributes::GetUINT64']/*\"/>\t\n            <msdn-id>bb970569</msdn-id>\t\n            <unmanaged>HRESULT IMFAttributes::GetUINT64([In] const GUID&amp; guidKey,[Out] unsigned longlong* punValue)</unmanaged>\t\n            <unmanaged-short>IMFAttributes::GetUINT64</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaAttributes.GetDouble(System.Guid)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves a <strong>double</strong> value associated with a key.</p>\t\n            </summary>\t\n            <param name=\"guidKey\"><dd> <p><see cref=\"T:System.Guid\"/> that identifies which value to retrieve. The attribute type must be <strong><see cref=\"F:SharpDX.MediaFoundation.AttributeType.Double\"/></strong>.</p> </dd></param>\t\n            <returns><dd> <p>Receives a <strong>double</strong> value. If the key is found and the data type is <strong>double</strong>, the method copies the value into this parameter. Otherwise, the original value of this parameter is not changed.</p> </dd></returns>\t\n            <remarks>\t\n            <p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFAttributes::GetDouble']/*\"/>\t\n            <msdn-id>bb970418</msdn-id>\t\n            <unmanaged>HRESULT IMFAttributes::GetDouble([In] const GUID&amp; guidKey,[Out] double* pfValue)</unmanaged>\t\n            <unmanaged-short>IMFAttributes::GetDouble</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaAttributes.GetGUID(System.Guid)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves a <see cref=\"T:System.Guid\"/> value associated with a key.</p>\t\n            </summary>\t\n            <param name=\"guidKey\"><dd> <p><see cref=\"T:System.Guid\"/> that identifies which value to retrieve. The attribute type must be <strong><see cref=\"F:SharpDX.MediaFoundation.AttributeType.Guid\"/></strong>.</p> </dd></param>\t\n            <returns><dd> <p>Receives a <see cref=\"T:System.Guid\"/> value. If the key is found and the data type is <see cref=\"T:System.Guid\"/>, the method copies the value into this parameter. Otherwise, the original value of this parameter is not changed.</p> </dd></returns>\t\n            <remarks>\t\n            <p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFAttributes::GetGUID']/*\"/>\t\n            <msdn-id>bb970426</msdn-id>\t\n            <unmanaged>HRESULT IMFAttributes::GetGUID([In] const GUID&amp; guidKey,[Out] GUID* pguidValue)</unmanaged>\t\n            <unmanaged-short>IMFAttributes::GetGUID</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaAttributes.GetStringLength(System.Guid)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves the length of a string value associated with a key.</p>\t\n            </summary>\t\n            <param name=\"guidKey\"><dd> <p><see cref=\"T:System.Guid\"/> that identifies which value to retrieve. The attribute type must be <strong><see cref=\"F:SharpDX.MediaFoundation.AttributeType.String\"/></strong>.</p> </dd></param>\t\n            <returns><dd> <p>If the key is found and the value is a string type, this parameter receives the number of characters in the string, not including the terminating <strong><c>null</c></strong> character. To get the string value, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaAttributes.GetString(System.Guid,System.IntPtr,System.Int32,System.IntPtr)\"/></strong>.</p> </dd></returns>\t\n            <remarks>\t\n            <p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFAttributes::GetStringLength']/*\"/>\t\n            <msdn-id>bb970425</msdn-id>\t\n            <unmanaged>HRESULT IMFAttributes::GetStringLength([In] const GUID&amp; guidKey,[Out] unsigned int* pcchLength)</unmanaged>\t\n            <unmanaged-short>IMFAttributes::GetStringLength</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaAttributes.GetString(System.Guid,System.IntPtr,System.Int32,System.IntPtr)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves a wide-character string associated with a key.</p>\t\n            </summary>\t\n            <param name=\"guidKey\"><dd> <p><see cref=\"T:System.Guid\"/> that identifies which value to retrieve. The attribute type must be <strong><see cref=\"F:SharpDX.MediaFoundation.AttributeType.String\"/></strong>.</p> </dd></param>\t\n            <param name=\"wszValueRef\"><dd> <p>Pointer to a wide-character array allocated by the caller. The array must be large enough to hold the string, including the terminating <strong><c>null</c></strong> character. If the key is found and the value is a string type, the method copies the string into this buffer. To find the length of the string, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaAttributes.GetStringLength(System.Guid)\"/></strong>.</p> </dd></param>\t\n            <param name=\"cchBufSize\"><dd> <p>The size of the <em>pwszValue</em> array, in characters. This value includes the terminating <c>null</c> character.</p> </dd></param>\t\n            <param name=\"cchLengthRef\"><dd> <p>Receives the number of characters in the string, excluding the terminating <strong><c>null</c></strong> character. This parameter can be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong>E_OUTOFMEMORY</strong></dt> </dl> </td><td> <p>The length of the string is too large to fit in a <strong>UINT32</strong> value.</p> </td></tr> <tr><td> <dl> <dt><strong>E_NOT_SUFFICIENT_BUFFER</strong></dt> </dl> </td><td> <p>The buffer is not large enough to hold the string.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Attributenotfound\"/></strong></dt> </dl> </td><td> <p>The specified key was not found.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidType\"/></strong></dt> </dl> </td><td> <p>The attribute value is not a string.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>You can also use the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaAttributes.GetAllocatedString(System.Guid,System.IntPtr,System.Int32@)\"/></strong> method, which allocates the buffer to hold the string.</p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFAttributes::GetString']/*\"/>\t\n            <msdn-id>bb970430</msdn-id>\t\n            <unmanaged>HRESULT IMFAttributes::GetString([In] const GUID&amp; guidKey,[Out, Buffer] wchar_t* pwszValue,[In] unsigned int cchBufSize,[InOut, Optional] unsigned int* pcchLength)</unmanaged>\t\n            <unmanaged-short>IMFAttributes::GetString</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaAttributes.GetAllocatedString(System.Guid,System.IntPtr,System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Gets a wide-character string associated with a key. This method allocates the memory for the string. </p>\t\n            </summary>\t\n            <param name=\"guidKey\"><dd> <p>A <see cref=\"T:System.Guid\"/> that identifies which value to retrieve. The attribute type must be <strong><see cref=\"F:SharpDX.MediaFoundation.AttributeType.String\"/></strong>. </p> </dd></param>\t\n            <param name=\"wszValueOut\"><dd> <p>If the key is found and the value is a string type, this parameter receives a copy of the string. The caller must free the memory for the string by calling <strong>CoTaskMemFree</strong>. </p> </dd></param>\t\n            <param name=\"cchLengthRef\"><dd> <p> Receives the number of characters in the string, excluding the terminating <strong><c>null</c></strong> character. This parameter must not be <strong><c>null</c></strong>. </p> </dd></param>\t\n            <returns><p> The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table. </p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Attributenotfound\"/></strong></dt> </dl> </td><td> <p> The specified key was not found. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidType\"/></strong></dt> </dl> </td><td> <p> The attribute value is not a string. </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>To copy a string value into a caller-allocated buffer, use the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaAttributes.GetString(System.Guid,System.IntPtr,System.Int32,System.IntPtr)\"/></strong> method.</p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul><p><strong>Note</strong>??An earlier version of the documentation incorrectly stated that the <em>pcchLength</em> parameter can be <strong><c>null</c></strong>. Setting this parameter to <strong><c>null</c></strong> might succeed in some cases, but is not guaranteed. The caller must pass a non-<strong><c>null</c></strong> reference for this parameter.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFAttributes::GetAllocatedString']/*\"/>\t\n            <msdn-id>bb970406</msdn-id>\t\n            <unmanaged>HRESULT IMFAttributes::GetAllocatedString([In] const GUID&amp; guidKey,[Out, Buffer, Optional] wchar_t** ppwszValue,[Out] unsigned int* pcchLength)</unmanaged>\t\n            <unmanaged-short>IMFAttributes::GetAllocatedString</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaAttributes.GetBlobSize(System.Guid)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves the length of a byte array associated with a key.</p>\t\n            </summary>\t\n            <param name=\"guidKey\"><dd> <p><see cref=\"T:System.Guid\"/> that identifies which value to retrieve. The attribute type must be <strong><see cref=\"F:SharpDX.MediaFoundation.AttributeType.Blob\"/></strong>.</p> </dd></param>\t\n            <returns><dd> <p>If the key is found and the value is a byte array, this parameter receives the size of the array, in bytes.</p> </dd></returns>\t\n            <remarks>\t\n            <p>To get the byte array, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaAttributes.GetBlob(System.Guid,System.IntPtr,System.Int32,System.IntPtr)\"/></strong>.</p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFAttributes::GetBlobSize']/*\"/>\t\n            <msdn-id>bb970459</msdn-id>\t\n            <unmanaged>HRESULT IMFAttributes::GetBlobSize([In] const GUID&amp; guidKey,[Out] unsigned int* pcbBlobSize)</unmanaged>\t\n            <unmanaged-short>IMFAttributes::GetBlobSize</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaAttributes.GetBlob(System.Guid,System.IntPtr,System.Int32,System.IntPtr)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves a byte array associated with a key. This method copies the array into a caller-allocated buffer.</p>\t\n            </summary>\t\n            <param name=\"guidKey\"><dd> <p><see cref=\"T:System.Guid\"/> that identifies which value to retrieve. The attribute type must be <strong><see cref=\"F:SharpDX.MediaFoundation.AttributeType.Blob\"/></strong>.</p> </dd></param>\t\n            <param name=\"bufRef\"><dd> <p>Pointer to a buffer allocated by the caller. If the key is found and the value is a byte array, the method copies the array into this buffer. To find the required size of the buffer, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaAttributes.GetBlobSize(System.Guid)\"/></strong>.</p> </dd></param>\t\n            <param name=\"cbBufSize\"><dd> <p>The size of the <em>pBuf</em> buffer, in bytes.</p> </dd></param>\t\n            <param name=\"cbBlobSizeRef\"><dd> <p>Receives the size of the byte array. This parameter can be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><strong>E_NOT_SUFFICIENT_BUFFER</strong></strong></dt> </dl> </td><td> <p>The buffer is not large enough to the array.</p> </td></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Attributenotfound\"/></strong></strong></dt> </dl> </td><td> <p>The specified key was not found.</p> </td></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidType\"/></strong></strong></dt> </dl> </td><td> <p>The attribute value is not a byte array.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>You can also use the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaAttributes.GetAllocatedBlob(System.Guid,System.Byte[],System.Int32@)\"/></strong> method, which allocates the buffer to hold the byte array.</p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFAttributes::GetBlob']/*\"/>\t\n            <msdn-id>bb970421</msdn-id>\t\n            <unmanaged>HRESULT IMFAttributes::GetBlob([In] const GUID&amp; guidKey,[In] void* pBuf,[In] unsigned int cbBufSize,[InOut, Optional] unsigned int* pcbBlobSize)</unmanaged>\t\n            <unmanaged-short>IMFAttributes::GetBlob</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaAttributes.GetAllocatedBlob(System.Guid,System.Byte[],System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves a byte array associated with a key. This method allocates the memory for the array.</p>\t\n            </summary>\t\n            <param name=\"guidKey\"><dd> <p><see cref=\"T:System.Guid\"/> that identifies which value to retrieve. The attribute type must be <strong><see cref=\"F:SharpDX.MediaFoundation.AttributeType.Blob\"/></strong>.</p> </dd></param>\t\n            <param name=\"bufOut\"><dd> <p>If the key is found and the value is a byte array, this parameter receives a copy of the array. The caller must free the memory for the array by calling <strong>CoTaskMemFree</strong>.</p> </dd></param>\t\n            <param name=\"cbSizeRef\"><dd> <p>Receives the size of the array, in bytes.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Attributenotfound\"/></strong></dt> </dl> </td><td> <p>The specified key was not found.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidType\"/></strong></dt> </dl> </td><td> <p>The attribute value is not a byte array.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>To copy a byte array value into a caller-allocated buffer, use the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaAttributes.GetBlob(System.Guid,System.IntPtr,System.Int32,System.IntPtr)\"/></strong> method.</p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFAttributes::GetAllocatedBlob']/*\"/>\t\n            <msdn-id>bb970382</msdn-id>\t\n            <unmanaged>HRESULT IMFAttributes::GetAllocatedBlob([In] const GUID&amp; guidKey,[Out, Buffer, Optional] unsigned char** ppBuf,[Out] unsigned int* pcbSize)</unmanaged>\t\n            <unmanaged-short>IMFAttributes::GetAllocatedBlob</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaAttributes.GetUnknown(System.Guid,System.Guid,System.IntPtr@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves an interface reference associated with a key.</p>\t\n            </summary>\t\n            <param name=\"guidKey\"><dd> <p><see cref=\"T:System.Guid\"/> that identifies which value to retrieve. The attribute type must be <strong><see cref=\"F:SharpDX.MediaFoundation.AttributeType.IUnknown\"/></strong>.</p> </dd></param>\t\n            <param name=\"riid\"><dd> <p>Interface identifier (IID) of the interface to retrieve.</p> </dd></param>\t\n            <param name=\"vOut\"><dd> <p>Receives a reference to the requested interface. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong>E_NOINTERFACE</strong></dt> </dl> </td><td> <p>The attribute value is an <strong><see cref=\"T:SharpDX.ComObject\"/></strong> reference but does not support requested interface.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Attributenotfound\"/></strong></dt> </dl> </td><td> <p>The specified key was not found.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidType\"/></strong></dt> </dl> </td><td> <p>The attribute value is not an <strong><see cref=\"T:SharpDX.ComObject\"/></strong> reference.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFAttributes::GetUnknown']/*\"/>\t\n            <msdn-id>bb970481</msdn-id>\t\n            <unmanaged>HRESULT IMFAttributes::GetUnknown([In] const GUID&amp; guidKey,[In] const GUID&amp; riid,[Out] void** ppv)</unmanaged>\t\n            <unmanaged-short>IMFAttributes::GetUnknown</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaAttributes.Set(System.Guid,SharpDX.Win32.Variant)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Adds an attribute value with a specified key. </p>\t\n            </summary>\t\n            <param name=\"guidKey\"><dd> <p> A <see cref=\"T:System.Guid\"/> that identifies the value to set. If this key already exists, the method overwrites the old value. </p> </dd></param>\t\n            <param name=\"value\"><dd> <p> A <strong><see cref=\"T:SharpDX.Win32.Variant\"/></strong> that contains the attribute value. The method copies the value. The <strong><see cref=\"T:SharpDX.Win32.Variant\"/></strong> type must be one of the types listed in the <strong><see cref=\"T:SharpDX.MediaFoundation.AttributeType\"/></strong> enumeration. </p> </dd></param>\t\n            <returns><p> The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table. </p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded. </p> </td></tr> <tr><td> <dl> <dt><strong>E_OUTOFMEMORY</strong></dt> </dl> </td><td> <p> Insufficient memory. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidType\"/></strong></dt> </dl> </td><td> <p> Invalid attribute type. </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> This method checks whether the <strong><see cref=\"T:SharpDX.Win32.Variant\"/></strong> type is one of the attribute types defined in <strong><see cref=\"T:SharpDX.MediaFoundation.AttributeType\"/></strong>, and fails if an unsupported type is used. However, this method does not check whether the <strong><see cref=\"T:SharpDX.Win32.Variant\"/></strong> is the correct type for the specified attribute <see cref=\"T:System.Guid\"/>. (There is no programmatic way to associate attribute GUIDs with property types.) For a list of Media Foundation attributes and their data types, see Media Foundation Attributes. </p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFAttributes::SetItem']/*\"/>\t\n            <msdn-id>bb970346</msdn-id>\t\n            <unmanaged>HRESULT IMFAttributes::SetItem([In] const GUID&amp; guidKey,[In] const PROPVARIANT&amp; Value)</unmanaged>\t\n            <unmanaged-short>IMFAttributes::SetItem</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaAttributes.DeleteItem(System.Guid)\">\n            <summary>\t\n            <p>Removes a key/value pair from the object's attribute list. </p>  <see cref=\"T:SharpDX.Result\"/> DeleteItem( REFGUID  guidKey\t\n            );\t\n            <p></p>Parameters <p> guidKey </p> <p>[in] <see cref=\"T:System.Guid\"/> that identifies the value to delete.</p>  <p>The method returns an <see cref=\"T:SharpDX.Result\"/>. Possible values include, but are not limited to, those in the following table.</p> <table><tr> <th> Return code  </th> <th> Description  </th> </tr><tr> <td> <p><see cref=\"F:SharpDX.Result.Ok\"/></p> </td> <td> <p>The method succeeded.</p> </td> </tr></table>  <p>If the specified key does not exist, the method returns <see cref=\"F:SharpDX.Result.Ok\"/>.</p>  <p> Client: Requires Windows Vista.</p> <p> Header: Defined in mfobjects.h; include mfidl.h.</p> <p> Library: Use mfuuid.lib.</p> ReferenceIMFAttributes Interface\t\n            </summary>\t\n            <param name=\"guidKey\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFAttributes::DeleteItem']/*\"/>\t\n            <msdn-id>ms701993</msdn-id>\t\n            <unmanaged>HRESULT IMFAttributes::DeleteItem([In] const GUID&amp; guidKey)</unmanaged>\t\n            <unmanaged-short>IMFAttributes::DeleteItem</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaAttributes.DeleteAllItems\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Removes all key/value pairs from the object's attribute list.</p>\t\n            </summary>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFAttributes::DeleteAllItems']/*\"/>\t\n            <msdn-id>ms700200</msdn-id>\t\n            <unmanaged>HRESULT IMFAttributes::DeleteAllItems()</unmanaged>\t\n            <unmanaged-short>IMFAttributes::DeleteAllItems</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaAttributes.Set(System.Guid,System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Associates a <strong>UINT32</strong> value with a key.</p>\t\n            </summary>\t\n            <param name=\"guidKey\"><dd> <p><see cref=\"T:System.Guid\"/> that identifies the value to set. If this key already exists, the method overwrites the old value.</p> </dd></param>\t\n            <param name=\"unValue\"><dd> <p>New value for this key.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>To retrieve the <strong>UINT32</strong> value, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaAttributes.GetInt(System.Guid)\"/></strong>.</p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFAttributes::SetUINT32']/*\"/>\t\n            <msdn-id>bb970467</msdn-id>\t\n            <unmanaged>HRESULT IMFAttributes::SetUINT32([In] const GUID&amp; guidKey,[In] unsigned int unValue)</unmanaged>\t\n            <unmanaged-short>IMFAttributes::SetUINT32</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaAttributes.Set(System.Guid,System.Int64)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Associates a <strong>UINT64</strong> value with a key.</p>\t\n            </summary>\t\n            <param name=\"guidKey\"><dd> <p><see cref=\"T:System.Guid\"/> that identifies the value to set. If this key already exists, the method overwrites the old value.</p> </dd></param>\t\n            <param name=\"unValue\"><dd> <p>New value for this key.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>To retrieve the <strong>UINT64</strong> value, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaAttributes.GetLong(System.Guid)\"/></strong>.</p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFAttributes::SetUINT64']/*\"/>\t\n            <msdn-id>bb970439</msdn-id>\t\n            <unmanaged>HRESULT IMFAttributes::SetUINT64([In] const GUID&amp; guidKey,[In] unsigned longlong unValue)</unmanaged>\t\n            <unmanaged-short>IMFAttributes::SetUINT64</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaAttributes.Set(System.Guid,System.Double)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Associates a <strong>double</strong> value with a key.</p>\t\n            </summary>\t\n            <param name=\"guidKey\"><dd> <p><see cref=\"T:System.Guid\"/> that identifies the value to set. If this key already exists, the method overwrites the old value.</p> </dd></param>\t\n            <param name=\"fValue\"><dd> <p>New value for this key.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>To retrieve the double value, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaAttributes.GetDouble(System.Guid)\"/></strong>.</p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFAttributes::SetDouble']/*\"/>\t\n            <msdn-id>bb970505</msdn-id>\t\n            <unmanaged>HRESULT IMFAttributes::SetDouble([In] const GUID&amp; guidKey,[In] double fValue)</unmanaged>\t\n            <unmanaged-short>IMFAttributes::SetDouble</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaAttributes.Set(System.Guid,System.Guid)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Associates a <see cref=\"T:System.Guid\"/> value with a key.</p>\t\n            </summary>\t\n            <param name=\"guidKey\"><dd> <p><see cref=\"T:System.Guid\"/> that identifies the value to set. If this key already exists, the method overwrites the old value.</p> </dd></param>\t\n            <param name=\"guidValue\"><dd> <p>New value for this key.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong>E_OUTOFMEMORY</strong></dt> </dl> </td><td> <p>Insufficient memory.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>To retrieve the <see cref=\"T:System.Guid\"/> value, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaAttributes.GetGUID(System.Guid)\"/></strong>.</p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFAttributes::SetGUID']/*\"/>\t\n            <msdn-id>bb970530</msdn-id>\t\n            <unmanaged>HRESULT IMFAttributes::SetGUID([In] const GUID&amp; guidKey,[In] const GUID&amp; guidValue)</unmanaged>\t\n            <unmanaged-short>IMFAttributes::SetGUID</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaAttributes.Set(System.Guid,System.String)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Associates a wide-character string with a key.</p>\t\n            </summary>\t\n            <param name=\"guidKey\"><dd> <p><see cref=\"T:System.Guid\"/> that identifies the value to set. If this key already exists, the method overwrites the old value.</p> </dd></param>\t\n            <param name=\"wszValue\"><dd> <p>Null-terminated wide-character string to associate with this key. The method stores a copy of the string.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>To retrieve the string, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaAttributes.GetString(System.Guid,System.IntPtr,System.Int32,System.IntPtr)\"/></strong> or <strong><see cref=\"M:SharpDX.MediaFoundation.MediaAttributes.GetAllocatedString(System.Guid,System.IntPtr,System.Int32@)\"/></strong>.</p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFAttributes::SetString']/*\"/>\t\n            <msdn-id>bb970404</msdn-id>\t\n            <unmanaged>HRESULT IMFAttributes::SetString([In] const GUID&amp; guidKey,[In, Buffer] const wchar_t* wszValue)</unmanaged>\t\n            <unmanaged-short>IMFAttributes::SetString</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaAttributes.SetBlob(System.Guid,System.IntPtr,System.Int32)\">\n            <summary>\t\n            <p>Associates a byte array with a key. </p>  <see cref=\"T:SharpDX.Result\"/> SetString( REFGUID  guidKey, const UINT8*  pBuf, UINT32  cbBufSize\t\n            );<p></p>Parameters <p> guidKey </p> <p>[in]  <see cref=\"T:System.Guid\"/> that identifies the value to set. If this key already exists, the method overwrites the old value.</p> <p> pBuf </p> <p>[in] Pointer to a byte array to associate with this key. The method stores a copy of the array.</p> <p> cbBufSize </p> <p>[in] Size of the array, in bytes.</p>  <p>The method returns an <see cref=\"T:SharpDX.Result\"/>. Possible values include, but are not limited to, those in the following table.</p> <table><tr> <th> Return code              </th> <th> Description              </th> </tr><tr> <td> <p>E_OUTOFMEMORY</p> </td> <td> <p>Insufficient memory.</p> </td> </tr><tr> <td> <p><see cref=\"F:SharpDX.Result.Ok\"/></p> </td> <td> <p>The method succeeded.</p> </td> </tr></table>  <p> Client: Requires Windows Vista.</p> <p> Header: Defined in mfobjects.h; include mfidl.h.</p> <p> Library: Use mfuuid.lib.</p> ReferenceIMFAttributes Interface\t\n            </summary>\t\n            <param name=\"guidKey\">No documentation.</param>\t\n            <param name=\"bufRef\">No documentation.</param>\t\n            <param name=\"cbBufSize\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFAttributes::SetBlob']/*\"/>\t\n            <msdn-id>ms694230</msdn-id>\t\n            <unmanaged>HRESULT IMFAttributes::SetBlob([In] const GUID&amp; guidKey,[In] const void* pBuf,[In] unsigned int cbBufSize)</unmanaged>\t\n            <unmanaged-short>IMFAttributes::SetBlob</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaAttributes.Set(System.Guid,SharpDX.ComObject)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"guidKey\">No documentation.</param>\t\n            <param name=\"unknownRef\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFAttributes::SetUnknown']/*\"/>\t\n            <unmanaged>HRESULT IMFAttributes::SetUnknown([In] const GUID&amp; guidKey,[In, Optional] IUnknown* pUnknown)</unmanaged>\t\n            <unmanaged-short>IMFAttributes::SetUnknown</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaAttributes.LockStore\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Locks the attribute store so that no other thread can access it. If the attribute store is already locked by another thread, this method blocks until the other thread unlocks the object. After calling this method, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaAttributes.UnlockStore\"/></strong> to unlock the object.</p>\t\n            </summary>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>This method can cause a deadlock if a thread that calls <strong>LockStore</strong> waits on a thread that calls any other <strong><see cref=\"T:SharpDX.MediaFoundation.MediaAttributes\"/></strong> methods on the same object.</p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFAttributes::LockStore']/*\"/>\t\n            <msdn-id>ms698926</msdn-id>\t\n            <unmanaged>HRESULT IMFAttributes::LockStore()</unmanaged>\t\n            <unmanaged-short>IMFAttributes::LockStore</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaAttributes.UnlockStore\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Unlocks the attribute store after a call to the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaAttributes.LockStore\"/></strong> method. While the object is unlocked, multiple threads can access the object's attributes.</p>\t\n            </summary>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFAttributes::UnlockStore']/*\"/>\t\n            <msdn-id>ms697545</msdn-id>\t\n            <unmanaged>HRESULT IMFAttributes::UnlockStore()</unmanaged>\t\n            <unmanaged-short>IMFAttributes::UnlockStore</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaAttributes.GetCount(System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves the number of attributes that are set on this object.</p>\t\n            </summary>\t\n            <param name=\"cItemsRef\"><dd> <p>Receives the number of attributes. This parameter must not be <strong><c>null</c></strong>. If this parameter is <strong><c>null</c></strong>, an access violation occurs.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>To enumerate all of the attributes, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaAttributes.GetItemByIndex(System.Int32,System.Guid@,System.IntPtr)\"/></strong> for each index value.</p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFAttributes::GetCount']/*\"/>\t\n            <msdn-id>bb970413</msdn-id>\t\n            <unmanaged>HRESULT IMFAttributes::GetCount([Out] unsigned int* pcItems)</unmanaged>\t\n            <unmanaged-short>IMFAttributes::GetCount</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaAttributes.GetItemByIndex(System.Int32,System.Guid@,System.IntPtr)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves an attribute at the specified index.</p>\t\n            </summary>\t\n            <param name=\"unIndex\"><dd> <p>Index of the attribute to retrieve. To get the number of attributes, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaAttributes.GetCount(System.Int32@)\"/></strong>.</p> </dd></param>\t\n            <param name=\"guidKeyRef\"><dd> <p>Receives the <see cref=\"T:System.Guid\"/> that identifies this attribute.</p> </dd></param>\t\n            <param name=\"valueRef\"><dd> <p>Pointer to a <strong><see cref=\"T:SharpDX.Win32.Variant\"/></strong> that receives the value. This parameter can be <strong><c>null</c></strong>. If it is not <strong><c>null</c></strong>, the method fills the <strong><see cref=\"T:SharpDX.Win32.Variant\"/></strong> with a copy of the attribute value. Call <strong>PropVariantClear</strong> to free the memory allocated by this method.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong>E_INVALIDARG</strong></dt> </dl> </td><td> <p>Invalid index.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>To enumerate all of an object's attributes in a thread-safe way, do the following:</p><ol> <li> <p>Call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaAttributes.LockStore\"/></strong> to prevent another thread from adding or deleting attributes.</p> </li> <li> <p>Call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaAttributes.GetCount(System.Int32@)\"/></strong> to find the number of attributes.</p> </li> <li> <p>Call <strong>GetItemByIndex</strong> to get each attribute by index.</p> </li> <li> <p>Call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaAttributes.UnlockStore\"/></strong> to unlock the attribute store.</p> </li> </ol><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFAttributes::GetItemByIndex']/*\"/>\t\n            <msdn-id>bb970331</msdn-id>\t\n            <unmanaged>HRESULT IMFAttributes::GetItemByIndex([In] unsigned int unIndex,[Out] GUID* pguidKey,[InOut, Optional] PROPVARIANT* pValue)</unmanaged>\t\n            <unmanaged-short>IMFAttributes::GetItemByIndex</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaAttributes.CopyAllItems(SharpDX.MediaFoundation.MediaAttributes)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Copies all of the attributes from this object into another attribute store. </p>\t\n            </summary>\t\n            <param name=\"destRef\"><dd> <p> A reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaAttributes\"/></strong> interface of the attribute store that receives the copy. </p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p> This method deletes all of the attributes originally stored in <em>pDest</em>. </p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFAttributes::CopyAllItems']/*\"/>\t\n            <msdn-id>bb970330</msdn-id>\t\n            <unmanaged>HRESULT IMFAttributes::CopyAllItems([In, Optional] IMFAttributes* pDest)</unmanaged>\t\n            <unmanaged-short>IMFAttributes::CopyAllItems</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaAttributes.#ctor(System.Int32)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.MediaAttributes\"/> class.\n            </summary>\n            <param name=\"initialSizeInBytes\">The initial number of elements allocated for the attribute store. The attribute store grows as needed. Default is 0</param>\n            <remarks>\t\n            <p>Attributes are used throughout Microsoft Media Foundation to configure objects, describe media formats, query object properties, and other purposes. For more information, see Attributes in Media Foundation.</p><p>For a complete list of all the defined attribute GUIDs in Media Foundation, see Media Foundation Attributes.</p>\t\n            </remarks>\t\n            <msdn-id>ms701878</msdn-id>\n            <unmanaged>HRESULT MFCreateAttributes([Out] IMFAttributes** ppMFAttributes,[In] unsigned int cInitialSize)</unmanaged>\n            <unmanaged-short>MFCreateAttributes</unmanaged-short>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaAttributes.Get(System.Guid)\">\n            <summary>\t\n            Gets an item value\n            </summary>\t\n            <param name=\"guidKey\">GUID of the key.</param>\t\n            <returns>The value associated to this key.</returns>\t\n            <msdn-id>ms704598</msdn-id>\t\n            <unmanaged>HRESULT IMFAttributes::GetItem([In] const GUID&amp; guidKey,[In] void* pValue)</unmanaged>\t\n            <unmanaged-short>IMFAttributes::GetItem</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaAttributes.GetByIndex(System.Int32,System.Guid@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves an attribute at the specified index.</p>\t\n            </summary>\t\n            <param name=\"index\"><dd> <p>Index of the attribute to retrieve. To get the number of attributes, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaAttributes.GetCount(System.Int32@)\"/></strong>.</p> </dd></param>\t\n            <param name=\"guidKey\"><dd> <p>Receives the <see cref=\"T:System.Guid\"/> that identifies this attribute.</p> </dd></param>\t\n            <returns>The value associated to this index</returns>\t\n            <remarks>\t\n            <p>To enumerate all of an object's attributes in a thread-safe way, do the following:</p><ol> <li> <p>Call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaAttributes.LockStore\"/></strong> to prevent another thread from adding or deleting attributes.</p> </li> <li> <p>Call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaAttributes.GetCount(System.Int32@)\"/></strong> to find the number of attributes.</p> </li> <li> <p>Call <strong>GetItemByIndex</strong> to get each attribute by index.</p> </li> <li> <p>Call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaAttributes.UnlockStore\"/></strong> to unlock the attribute store.</p> </li> </ol><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <msdn-id>bb970331</msdn-id>\t\n            <unmanaged>HRESULT IMFAttributes::GetItemByIndex([In] unsigned int unIndex,[Out] GUID* pguidKey,[InOut, Optional] PROPVARIANT* pValue)</unmanaged>\t\n            <unmanaged-short>IMFAttributes::GetItemByIndex</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaAttributes.Get``1(System.Guid)\">\n            <summary>\t\n            Gets an item value\n            </summary>\t\n            <param name=\"guidKey\">GUID of the key.</param>\t\n            <returns>The value associated to this key.</returns>\t\n            <msdn-id>ms704598</msdn-id>\t\n            <unmanaged>HRESULT IMFAttributes::GetItem([In] const GUID&amp; guidKey,[In] void* pValue)</unmanaged>\t\n            <unmanaged-short>IMFAttributes::GetItem</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaAttributes.Get``1(SharpDX.MediaFoundation.MediaAttributeKey{``0})\">\n            <summary>\t\n            Gets an item value\n            </summary>\t\n            <param name=\"guidKey\">GUID of the key.</param>\t\n            <returns>The value associated to this key.</returns>\t\n            <msdn-id>ms704598</msdn-id>\t\n            <unmanaged>HRESULT IMFAttributes::GetItem([In] const GUID&amp; guidKey,[In] void* pValue)</unmanaged>\t\n            <unmanaged-short>IMFAttributes::GetItem</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaAttributes.Set``1(System.Guid,``0)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Adds an attribute value with a specified key. </p>\t\n            </summary>\t\n            <param name=\"guidKey\"><dd> <p> A <see cref=\"T:System.Guid\"/> that identifies the value to set. If this key already exists, the method overwrites the old value. </p> </dd></param>\t\n            <param name=\"value\"><dd> <p> A <strong><see cref=\"T:SharpDX.Win32.Variant\"/></strong> that contains the attribute value. The method copies the value. The <strong><see cref=\"T:SharpDX.Win32.Variant\"/></strong> type must be one of the types listed in the <strong><see cref=\"T:SharpDX.MediaFoundation.AttributeType\"/></strong> enumeration. </p> </dd></param>\t\n            <returns><p> The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table. </p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded. </p> </td></tr> <tr><td> <dl> <dt><strong>E_OUTOFMEMORY</strong></dt> </dl> </td><td> <p> Insufficient memory. </p> </td></tr> <tr><td> <dl> <dt><strong>MF_E_INVALIDTYPE</strong></dt> </dl> </td><td> <p> Invalid attribute type. </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> This method checks whether the <strong><see cref=\"T:SharpDX.Win32.Variant\"/></strong> type is one of the attribute types defined in <strong><see cref=\"T:SharpDX.MediaFoundation.AttributeType\"/></strong>, and fails if an unsupported type is used. However, this method does not check whether the <strong><see cref=\"T:SharpDX.Win32.Variant\"/></strong> is the correct type for the specified attribute <see cref=\"T:System.Guid\"/>. (There is no programmatic way to associate attribute GUIDs with property types.) For a list of Media Foundation attributes and their data types, see Media Foundation Attributes. </p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <msdn-id>bb970346</msdn-id>\t\n            <unmanaged>HRESULT IMFAttributes::SetItem([In] const GUID&amp; guidKey,[In] const PROPVARIANT&amp; Value)</unmanaged>\t\n            <unmanaged-short>IMFAttributes::SetItem</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaAttributes.Set``1(SharpDX.MediaFoundation.MediaAttributeKey{``0},``0)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Adds an attribute value with a specified key. </p>\t\n            </summary>\t\n            <param name=\"guidKey\"><dd> <p> A <see cref=\"T:System.Guid\"/> that identifies the value to set. If this key already exists, the method overwrites the old value. </p> </dd></param>\t\n            <param name=\"value\"><dd> <p> A <strong><see cref=\"T:SharpDX.Win32.Variant\"/></strong> that contains the attribute value. The method copies the value. The <strong><see cref=\"T:SharpDX.Win32.Variant\"/></strong> type must be one of the types listed in the <strong><see cref=\"T:SharpDX.MediaFoundation.AttributeType\"/></strong> enumeration. </p> </dd></param>\t\n            <returns><p> The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table. </p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded. </p> </td></tr> <tr><td> <dl> <dt><strong>E_OUTOFMEMORY</strong></dt> </dl> </td><td> <p> Insufficient memory. </p> </td></tr> <tr><td> <dl> <dt><strong>MF_E_INVALIDTYPE</strong></dt> </dl> </td><td> <p> Invalid attribute type. </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> This method checks whether the <strong><see cref=\"T:SharpDX.Win32.Variant\"/></strong> type is one of the attribute types defined in <strong><see cref=\"T:SharpDX.MediaFoundation.AttributeType\"/></strong>, and fails if an unsupported type is used. However, this method does not check whether the <strong><see cref=\"T:SharpDX.Win32.Variant\"/></strong> is the correct type for the specified attribute <see cref=\"T:System.Guid\"/>. (There is no programmatic way to associate attribute GUIDs with property types.) For a list of Media Foundation attributes and their data types, see Media Foundation Attributes. </p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <msdn-id>bb970346</msdn-id>\t\n            <unmanaged>HRESULT IMFAttributes::SetItem([In] const GUID&amp; guidKey,[In] const PROPVARIANT&amp; Value)</unmanaged>\t\n            <unmanaged-short>IMFAttributes::SetItem</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.MediaAttributes.Count\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves the number of attributes that are set on this object.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>To enumerate all of the attributes, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaAttributes.GetItemByIndex(System.Int32,System.Guid@,System.IntPtr)\"/></strong> for each index value.</p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFAttributes::GetCount']/*\"/>\t\n            <msdn-id>bb970413</msdn-id>\t\n            <unmanaged>GetCount</unmanaged>\t\n            <unmanaged-short>GetCount</unmanaged-short>\t\n            <unmanaged>HRESULT IMFAttributes::GetCount([Out] unsigned int* pcItems)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Activate.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.Activate\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Activate.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.Activate\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.Activate\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Activate.ActivateObject(System.Guid,System.IntPtr@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Creates the object associated with this activation object. </p>\t\n            </summary>\t\n            <param name=\"riid\"><dd> <p> Interface identifier (IID) of the requested interface. </p> </dd></param>\t\n            <param name=\"vOut\"><dd> <p> Receives a reference to the requested interface. The caller must release the interface. </p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>Some Microsoft Media Foundation objects must be shut down before being released. If so, the caller is responsible for shutting down the object that is returned in <em>ppv</em>. To shut down the object, do one of the following:</p><ul> <li>Call <strong><see cref=\"M:SharpDX.MediaFoundation.Activate.ShutdownObject\"/></strong> on the activation object, or</li> <li>Call the object-specific shutdown method. This method will depend on the type of object. Possibilities include:<ul> <li>Media sources: Call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaSource.Shutdown\"/></strong>.</li> <li>Media sinks: Call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaSink.Shutdown\"/></strong>.</li> <li>Any object that supports the <strong><see cref=\"T:SharpDX.MediaFoundation.Shutdownable\"/></strong> interface: Call <strong><see cref=\"M:SharpDX.MediaFoundation.Shutdownable.Shutdown\"/></strong>.</li> </ul> </li> </ul><p>The <strong><see cref=\"M:SharpDX.MediaFoundation.Activate.ShutdownObject\"/></strong> method is generic to all object types. If the object does not require a shutdown method, <strong>ShutdownObject</strong> succeeds and has no effect. If you do not know the specific shutdown method for the object (or do not know the object type), call <strong><see cref=\"M:SharpDX.MediaFoundation.Activate.ShutdownObject\"/></strong>.</p><p> After the first call to <strong>ActivateObject</strong>, subsequent calls return a reference to the same instance, until the client calls either <strong>ShutdownObject</strong> or <strong><see cref=\"M:SharpDX.MediaFoundation.Activate.DetachObject\"/></strong>. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFActivate::ActivateObject']/*\"/>\t\n            <msdn-id>ms694292</msdn-id>\t\n            <unmanaged>HRESULT IMFActivate::ActivateObject([In] const GUID&amp; riid,[Out] void** ppv)</unmanaged>\t\n            <unmanaged-short>IMFActivate::ActivateObject</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Activate.ShutdownObject\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Shuts down the created object.</p>\t\n            </summary>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>If you create an object by calling <strong><see cref=\"M:SharpDX.MediaFoundation.Activate.ActivateObject(System.Guid,System.IntPtr@)\"/></strong>, call <strong>ShutdownObject</strong> when you are done using the object.</p><p>The component that calls <strong>ActivateObject</strong>?not the component that creates the activation object?is responsible for calling <strong>ShutdownObject</strong>. For example, in a typical playback application, the application creates activation objects for the media sinks, but the Media Session calls <strong>ActivateObject</strong>. Therefore the Media Session, not the application, calls <strong>ShutdownObject</strong>.</p><p>After <strong>ShutdownObject</strong> is called, the activation object releases all of its internal references to the created object. If you call <strong>ActivateObject</strong> again, the activation object will create a new instance of the other object.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFActivate::ShutdownObject']/*\"/>\t\n            <msdn-id>ms695228</msdn-id>\t\n            <unmanaged>HRESULT IMFActivate::ShutdownObject()</unmanaged>\t\n            <unmanaged-short>IMFActivate::ShutdownObject</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Activate.DetachObject\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Detaches the created object from the activation object.</p>\t\n            </summary>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong>E_NOTIMPL</strong></dt> </dl> </td><td> <p>Not implemented.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>The activation object releases all of its internal references to the created object. If you call <strong>ActivateObject</strong> again, the activation object will create a new instance of the other object.</p><p>The <strong>DetachObject</strong> method does not shut down the created object. If the <strong>DetachObject</strong> method succeeds, the client must shut down the created object. This rule applies only to objects that have a shutdown method or that support the <strong><see cref=\"T:SharpDX.MediaFoundation.Shutdownable\"/></strong> interface. See the remarks for <strong><see cref=\"M:SharpDX.MediaFoundation.Activate.ActivateObject(System.Guid,System.IntPtr@)\"/></strong>.</p><p>Implementation of this method is optional. If the activation object does not support this method, the method returns E_NOTIMPL.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFActivate::DetachObject']/*\"/>\t\n            <msdn-id>aa367342</msdn-id>\t\n            <unmanaged>HRESULT IMFActivate::DetachObject()</unmanaged>\t\n            <unmanaged-short>IMFActivate::DetachObject</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.ASFContentInfo\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Provides methods to work with the header section of files conforming to the Advanced Systems Format (ASF) specification. </p><p>The ASF ContentInfo Object exposes this interface. To create the get a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.ASFContentInfo\"/></strong> interface, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateASFContentInfo(SharpDX.MediaFoundation.ASFContentInfo@)\"/></strong>. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFContentInfo']/*\"/>\t\n            <msdn-id>ms701620</msdn-id>\t\n            <unmanaged>IMFASFContentInfo</unmanaged>\t\n            <unmanaged-short>IMFASFContentInfo</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFContentInfo.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.ASFContentInfo\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFContentInfo.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.ASFContentInfo\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.ASFContentInfo\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFContentInfo.GetHeaderSize(SharpDX.MediaFoundation.MediaBuffer,System.Int64)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Retrieves the size of the header section of an Advanced Systems Format (ASF) file. </p>\t\n            </summary>\t\n            <param name=\"iStartOfContentRef\"><dd> <p>The <strong><see cref=\"T:SharpDX.MediaFoundation.MediaBuffer\"/></strong> interface of a buffer object containing the beginning of ASF content. The size of the valid data in the buffer must be at least MFASF_MIN_HEADER_BYTES in bytes.</p> </dd></param>\t\n            <param name=\"cbHeaderSize\"><dd> <p>Receives the size, in bytes, of the header section of the content. The value includes the size of the ASF Header Object plus the size of the header section of the Data Object. Therefore, the resulting value is the offset to the start of the data packets in the ASF Data Object.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.AsfInvalidData\"/></strong></dt> </dl> </td><td> <p> The buffer does not contain valid ASF data. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.BufferTooSmall\"/></strong></dt> </dl> </td><td> <p> The buffer does not contain enough valid data. </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>The header of an ASF file or stream can be passed to the <strong><see cref=\"M:SharpDX.MediaFoundation.ASFContentInfo.ParseHeader(SharpDX.MediaFoundation.MediaBuffer,System.Int64)\"/></strong> method to populate the ContentInfo object with the header information.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFContentInfo::GetHeaderSize']/*\"/>\t\n            <msdn-id>ms703043</msdn-id>\t\n            <unmanaged>HRESULT IMFASFContentInfo::GetHeaderSize([In] IMFMediaBuffer* pIStartOfContent,[In] unsigned longlong* cbHeaderSize)</unmanaged>\t\n            <unmanaged-short>IMFASFContentInfo::GetHeaderSize</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFContentInfo.ParseHeader(SharpDX.MediaFoundation.MediaBuffer,System.Int64)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Parses the information in an ASF header and uses that information to set values in the ContentInfo object. You can pass the entire header in a single buffer or send it in several pieces.</p>\t\n            </summary>\t\n            <param name=\"iHeaderBufferRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaBuffer\"/></strong> interface of a buffer object containing some or all of the header. The buffer must contain at least 30 bytes, which is the size of the Header Object, not including the objects contained in the Header Object (that is, everything up to and including the Reserved2 field in the Header Object).</p> </dd></param>\t\n            <param name=\"cbOffsetWithinHeader\"><dd> <p>Offset, in bytes, of the first byte in the buffer relative to the beginning of the header.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The header is completely parsed and validated.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.AsfInvalidData\"/></strong></dt> </dl> </td><td> <p>The input buffer does not contain valid ASF data.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.BufferTooSmall\"/></strong></dt> </dl> </td><td> <p>The input buffer is to small.</p> </td></tr> <tr><td> <dl> <dt><strong>MF_S_ASF_PARSEINPROGRESS</strong></dt> </dl> </td><td> <p>The method succeeded, but the header passed was incomplete. This is the successful return code for all calls but the last one when passing the header in pieces.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>If you pass the header in pieces, the ContentInfo object will keep references to the buffer objects until the entire header is parsed. Therefore, do not write over the buffers passed into this method.</p><p>The start of the Header object has the following layout in memory:</p><table> <tr><th>Field Name</th><th>Size in bytes</th></tr> <tr><td>Object ID</td><td>16</td></tr> <tr><td>Object Size</td><td>8</td></tr> <tr><td>Number of Header Objects</td><td>4</td></tr> <tr><td>Reserved1</td><td>1</td></tr> <tr><td>Reserved2</td><td>1</td></tr> </table><p>?</p><p>The first call to <strong>ParseHeader</strong> reads everything up to and including Rerserved2, so it requires a minimum of 30 bytes. (Note that the <strong><see cref=\"M:SharpDX.MediaFoundation.ASFContentInfo.GetHeaderSize(SharpDX.MediaFoundation.MediaBuffer,System.Int64)\"/></strong> method reads only the Object ID and Object Size fields, so that method requires a minimum of 24 bytes.)</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFContentInfo::ParseHeader']/*\"/>\t\n            <msdn-id>ms694306</msdn-id>\t\n            <unmanaged>HRESULT IMFASFContentInfo::ParseHeader([In] IMFMediaBuffer* pIHeaderBuffer,[In] unsigned longlong cbOffsetWithinHeader)</unmanaged>\t\n            <unmanaged-short>IMFASFContentInfo::ParseHeader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFContentInfo.GenerateHeader(SharpDX.MediaFoundation.MediaBuffer,System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Encodes the data in the <strong>MFASFContentInfo</strong> object into a binary Advanced Systems Format (ASF) header.</p>\t\n            </summary>\t\n            <param name=\"iHeaderRef\"><dd> <p> A reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaBuffer\"/></strong> interface of the buffer object that will receive the encoded header. Set to <strong><c>null</c></strong> to retrieve the size of the header. </p> </dd></param>\t\n            <param name=\"cbHeaderRef\"><dd> <p> Size of the encoded ASF header in bytes. If <em>pIHeader</em> is <strong><c>null</c></strong>, this value is set to the buffer size required to hold the encoded header. </p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidRequest\"/></strong></dt> </dl> </td><td> <p> The ASF Header Objects do not exist for the media that the ContentInfo object holds reference to. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.AsfInvalidData\"/></strong></dt> </dl> </td><td> <p> The ASF Header Object size exceeds 10 MB. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.BufferTooSmall\"/></strong></dt> </dl> </td><td> <p> The buffer passed in <em>pIHeader</em> is not large enough to hold the ASF Header Object information. </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>The size received in the <em>pcbHeader</em> parameter includes the padding size. The content information shrinks or expands the padding data depending on the size of the ASF Header Objects.</p><p>During this call, the stream properties are set based on the encoding properties of the profile. These properties are available through the <strong><see cref=\"T:SharpDX.MediaFoundation.Metadata\"/></strong> interface.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFContentInfo::GenerateHeader']/*\"/>\t\n            <msdn-id>ms701575</msdn-id>\t\n            <unmanaged>HRESULT IMFASFContentInfo::GenerateHeader([In] IMFMediaBuffer* pIHeader,[In] unsigned int* pcbHeader)</unmanaged>\t\n            <unmanaged-short>IMFASFContentInfo::GenerateHeader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFContentInfo.GetProfile(SharpDX.MediaFoundation.ASFProfile@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves an Advanced Systems Format (ASF) profile that describes the ASF content.</p>\t\n            </summary>\t\n            <param name=\"iProfileOut\"><dd> <p>Receives an <strong><see cref=\"T:SharpDX.MediaFoundation.ASFProfile\"/></strong> interface reference. The caller must release the interface. If the object does not have an ASF profile, this parameter receives the value <strong><c>null</c></strong>.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>The profile is set by calling either <strong><see cref=\"M:SharpDX.MediaFoundation.ASFContentInfo.SetProfile(SharpDX.MediaFoundation.ASFProfile)\"/></strong> or <strong><see cref=\"M:SharpDX.MediaFoundation.ASFContentInfo.ParseHeader(SharpDX.MediaFoundation.MediaBuffer,System.Int64)\"/></strong>.</p><p>The ASF profile object returned by this method does not include any of the <strong>MF_PD_ASF_xxx</strong> attributes (see Presentation Descriptor Attributes). To get these attributes, do the following:</p><ol> <li> <p>Call <strong><see cref=\"M:SharpDX.MediaFoundation.ASFContentInfo.GeneratePresentationDescriptor(SharpDX.MediaFoundation.PresentationDescriptor@)\"/></strong> to get the ASF presentation descriptor. You can query the presentation descriptor for the <strong>MF_PD_ASF_xxx</strong> attributes.</p> </li> <li> <p>(Optional.) Call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateASFProfileFromPresentationDescriptor(SharpDX.MediaFoundation.PresentationDescriptor,SharpDX.MediaFoundation.ASFProfile@)\"/></strong> to convert the presentation descriptor into an ASF profile. The profile object created by this function contains the <strong>MF_PD_ASF_xxx</strong> attributes.</p> </li> </ol><p>An ASF profile is a template for file encoding, and is intended mainly for creating ASF content. If you are reading an existing ASF file, it is recommended that you use the presentation descriptor to get information about the file. One exception is that the profile contains the mutual exclusion and stream prioritization objects, which are not exposed directly from the presentation descriptor.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFContentInfo::GetProfile']/*\"/>\t\n            <msdn-id>ms698931</msdn-id>\t\n            <unmanaged>HRESULT IMFASFContentInfo::GetProfile([In] IMFASFProfile** ppIProfile)</unmanaged>\t\n            <unmanaged-short>IMFASFContentInfo::GetProfile</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFContentInfo.SetProfile(SharpDX.MediaFoundation.ASFProfile)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Uses profile data from a profile object to configure settings in the ContentInfo object.</p>\t\n            </summary>\t\n            <param name=\"iProfileRef\"><dd> <p>The <strong><see cref=\"T:SharpDX.MediaFoundation.ASFProfile\"/></strong> interface of the profile object.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>If there is already information in the ContentInfo object when this method is called, it is replaced by the information from the profile object.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFContentInfo::SetProfile']/*\"/>\t\n            <msdn-id>ms699846</msdn-id>\t\n            <unmanaged>HRESULT IMFASFContentInfo::SetProfile([In] IMFASFProfile* pIProfile)</unmanaged>\t\n            <unmanaged-short>IMFASFContentInfo::SetProfile</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFContentInfo.GeneratePresentationDescriptor(SharpDX.MediaFoundation.PresentationDescriptor@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Creates a presentation descriptor for ASF content.</p>\t\n            </summary>\t\n            <param name=\"iPresentationDescriptorOut\"><dd> <p>Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.PresentationDescriptor\"/></strong> interface. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFContentInfo::GeneratePresentationDescriptor']/*\"/>\t\n            <msdn-id>ms704860</msdn-id>\t\n            <unmanaged>HRESULT IMFASFContentInfo::GeneratePresentationDescriptor([In] IMFPresentationDescriptor** ppIPresentationDescriptor)</unmanaged>\t\n            <unmanaged-short>IMFASFContentInfo::GeneratePresentationDescriptor</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFContentInfo.GetEncodingConfigurationPropertyStore(System.Int16,SharpDX.ComObject@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves a property store that can be used to set encoding properties.</p>\t\n            </summary>\t\n            <param name=\"wStreamNumber\"><dd> <p>Stream number to configure. Set to zero to configure file-level encoding properties.</p> </dd></param>\t\n            <param name=\"iStoreOut\"><dd> <p>Receives a reference to the <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interface. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFContentInfo::GetEncodingConfigurationPropertyStore']/*\"/>\t\n            <msdn-id>ms704750</msdn-id>\t\n            <unmanaged>HRESULT IMFASFContentInfo::GetEncodingConfigurationPropertyStore([In] unsigned short wStreamNumber,[In] IPropertyStore** ppIStore)</unmanaged>\t\n            <unmanaged-short>IMFASFContentInfo::GetEncodingConfigurationPropertyStore</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.ASFContentInfo.Profile\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves an Advanced Systems Format (ASF) profile that describes the ASF content.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The profile is set by calling either <strong><see cref=\"M:SharpDX.MediaFoundation.ASFContentInfo.SetProfile(SharpDX.MediaFoundation.ASFProfile)\"/></strong> or <strong><see cref=\"M:SharpDX.MediaFoundation.ASFContentInfo.ParseHeader(SharpDX.MediaFoundation.MediaBuffer,System.Int64)\"/></strong>.</p><p>The ASF profile object returned by this method does not include any of the <strong>MF_PD_ASF_xxx</strong> attributes (see Presentation Descriptor Attributes). To get these attributes, do the following:</p><ol> <li> <p>Call <strong><see cref=\"M:SharpDX.MediaFoundation.ASFContentInfo.GeneratePresentationDescriptor(SharpDX.MediaFoundation.PresentationDescriptor@)\"/></strong> to get the ASF presentation descriptor. You can query the presentation descriptor for the <strong>MF_PD_ASF_xxx</strong> attributes.</p> </li> <li> <p>(Optional.) Call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateASFProfileFromPresentationDescriptor(SharpDX.MediaFoundation.PresentationDescriptor,SharpDX.MediaFoundation.ASFProfile@)\"/></strong> to convert the presentation descriptor into an ASF profile. The profile object created by this function contains the <strong>MF_PD_ASF_xxx</strong> attributes.</p> </li> </ol><p>An ASF profile is a template for file encoding, and is intended mainly for creating ASF content. If you are reading an existing ASF file, it is recommended that you use the presentation descriptor to get information about the file. One exception is that the profile contains the mutual exclusion and stream prioritization objects, which are not exposed directly from the presentation descriptor.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFContentInfo::GetProfile']/*\"/>\t\n            <msdn-id>ms698931</msdn-id>\t\n            <unmanaged>GetProfile / SetProfile</unmanaged>\t\n            <unmanaged-short>GetProfile</unmanaged-short>\t\n            <unmanaged>HRESULT IMFASFContentInfo::GetProfile([In] IMFASFProfile** ppIProfile)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.ASFIndexer\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Provides methods to work with indexes in Systems Format (ASF) files. The ASF indexer object exposes this interface. To create the ASF indexer, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateASFIndexer(SharpDX.MediaFoundation.ASFIndexer@)\"/></strong>.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>You can use the indexer object to read an existing ASF index or write a new index. The index object has two mutually exclusive modes: read mode and write mode. To set the mode, call <strong>SetFlags</strong>. </p><p>Use the following methods to configure the indexer object  (both modes):</p><ul> <li> <strong>Initialize</strong> </li> <li> <strong>SetFlags</strong> </li> <li> <strong>SetIndexByteStreams</strong> </li> </ul><p>Use the following methods to read an existing index:</p><ul> <li> <strong>GetFlags</strong> </li> <li> <strong>GetIndexByteStreamCount</strong> </li> <li> <strong>GetIndexPosition</strong> </li> <li> <strong>GetIndexStatus</strong> </li> <li> <strong>GetSeekPositionForValue</strong> </li> </ul><p>Use the following methods to write an index:</p><ul> <li> <strong>CommitIndex</strong> </li> <li> <strong>GenerateIndexEntries</strong> </li> <li> <strong>GetCompletedIndex</strong> </li> <li> <strong>GetIndexWriteSpace</strong> </li> <li> <strong>SetIndexStatus</strong> </li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFIndexer']/*\"/>\t\n            <msdn-id>ms700820</msdn-id>\t\n            <unmanaged>IMFASFIndexer</unmanaged>\t\n            <unmanaged-short>IMFASFIndexer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFIndexer.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.ASFIndexer\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFIndexer.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.ASFIndexer\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.ASFIndexer\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFIndexer.SetFlags(System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Sets indexer options.</p>\t\n            </summary>\t\n            <param name=\"dwFlags\"><dd> <p>Bitwise OR of zero or more flags from the <strong>MFASF_INDEXER_FLAGS</strong> enumeration specifying the indexer options to use.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidRequest\"/></strong></dt> </dl> </td><td> <p>The indexer object was  initialized before setting flags for it.  For more information, see Remarks.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p><strong><see cref=\"M:SharpDX.MediaFoundation.ASFIndexer.SetFlags(System.Int32)\"/></strong> must be called before <strong><see cref=\"M:SharpDX.MediaFoundation.ASFIndexer.Initialize(SharpDX.MediaFoundation.ASFContentInfo)\"/></strong>. Attempting to call <strong>SetFlags</strong> after <strong>Initialize</strong> will return <see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidRequest\"/> as a result.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFIndexer::SetFlags']/*\"/>\t\n            <msdn-id>ms699840</msdn-id>\t\n            <unmanaged>HRESULT IMFASFIndexer::SetFlags([In] unsigned int dwFlags)</unmanaged>\t\n            <unmanaged-short>IMFASFIndexer::SetFlags</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFIndexer.GetFlags(System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the flags that indicate the selected indexer options.</p>\t\n            </summary>\t\n            <param name=\"dwFlagsRef\"><dd> <p>Receives a bitwise OR of zero or more flags from the <strong>MFASF_INDEXER_FLAGS</strong> enumeration.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong>E_INVALIDARG</strong></dt> </dl> </td><td> <p><em>pdwFlags</em> is <strong><c>null</c></strong>.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>You must call this method before initializing the indexer object with <strong><see cref=\"M:SharpDX.MediaFoundation.ASFIndexer.Initialize(SharpDX.MediaFoundation.ASFContentInfo)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFIndexer::GetFlags']/*\"/>\t\n            <msdn-id>ms701578</msdn-id>\t\n            <unmanaged>HRESULT IMFASFIndexer::GetFlags([In] unsigned int* pdwFlags)</unmanaged>\t\n            <unmanaged-short>IMFASFIndexer::GetFlags</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFIndexer.Initialize(SharpDX.MediaFoundation.ASFContentInfo)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Initializes the indexer object. This method reads information in a ContentInfo object about the configuration of the content and the properties of the existing index, if present. Use this method before using the indexer for either writing or reading an index. You must make this call before using any of the other methods of the <strong><see cref=\"T:SharpDX.MediaFoundation.ASFIndexer\"/></strong> interface.</p>\t\n            </summary>\t\n            <param name=\"iContentInfoRef\">No documentation.</param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.AsfInvalidData\"/></strong></dt> </dl> </td><td> <p>Invalid ASF data.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Unexpected\"/></strong></dt> </dl> </td><td> <p>Unexpected error.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>The indexer needs to examine the data in the ContentInfo object to properly write or read the index for the content. The indexer will not make changes to the content information and will not hold any references to the <strong><see cref=\"T:SharpDX.MediaFoundation.ASFContentInfo\"/></strong> interface.</p><p>In the ASF header, the maximum data-packet size must equal the minimum data-packet size. Otherwise, the method returns <strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Unexpected\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFIndexer::Initialize']/*\"/>\t\n            <msdn-id>ms703030</msdn-id>\t\n            <unmanaged>HRESULT IMFASFIndexer::Initialize([In] IMFASFContentInfo* pIContentInfo)</unmanaged>\t\n            <unmanaged-short>IMFASFIndexer::Initialize</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFIndexer.GetIndexPosition(SharpDX.MediaFoundation.ASFContentInfo,System.Int64)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the offset of the index object from the start of the content.</p>\t\n            </summary>\t\n            <param name=\"iContentInfoRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.ASFContentInfo\"/></strong> interface of the ContentInfo object that describes the content.</p> </dd></param>\t\n            <param name=\"cbIndexOffsetRef\"><dd> <p>Receives the offset of the index relative to the beginning of the content described by the ContentInfo object. This is the position relative to the beginning of the ASF file.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong>E_INVALIDARG</strong></dt> </dl> </td><td> <p><em>pIContentInfo</em> is <strong><c>null</c></strong> or <em>pcbIndexOffset</em> is <strong><c>null</c></strong></p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>The index continues from the offset retrieved by this method to the end of the file.</p><p>You must call <strong><see cref=\"M:SharpDX.MediaFoundation.ASFIndexer.Initialize(SharpDX.MediaFoundation.ASFContentInfo)\"/></strong> to set up the indexer before calling this method.</p><p>If the index is retrieved by using more than one call to <strong><see cref=\"M:SharpDX.MediaFoundation.ASFIndexer.GetCompletedIndex(SharpDX.MediaFoundation.MediaBuffer,System.Int64)\"/></strong>, the position of individual index portions is equal to the index offset plus the offset of the portion within the index.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFIndexer::GetIndexPosition']/*\"/>\t\n            <msdn-id>ms699858</msdn-id>\t\n            <unmanaged>HRESULT IMFASFIndexer::GetIndexPosition([In] IMFASFContentInfo* pIContentInfo,[In] unsigned longlong* pcbIndexOffset)</unmanaged>\t\n            <unmanaged-short>IMFASFIndexer::GetIndexPosition</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFIndexer.SetIndexByteStreams(SharpDX.MediaFoundation.IByteStream@,System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Adds byte streams to be indexed.</p>\t\n            </summary>\t\n            <param name=\"iByteStreamsOut\"><dd> <p>An array of <strong><see cref=\"T:SharpDX.MediaFoundation.IByteStream\"/></strong> interface references. To get the byte stream, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateASFIndexerByteStream(System.IntPtr,System.Int64,SharpDX.MediaFoundation.IByteStream@)\"/></strong>.</p> </dd></param>\t\n            <param name=\"cByteStreams\"><dd> <p>The number of references in the <em>ppIByteStreams</em> array.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.AlreadyInitializeD\"/></strong></dt> </dl> </td><td> <p>The indexer object has already been initialized and it  has packets which have been indexed.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>For a reading scenario, only one byte stream should be used by the indexer object. For an index generating scenario, it depends how many index objects are needed to be generated. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFIndexer::SetIndexByteStreams']/*\"/>\t\n            <msdn-id>ms704843</msdn-id>\t\n            <unmanaged>HRESULT IMFASFIndexer::SetIndexByteStreams([In] IMFByteStream** ppIByteStreams,[In] unsigned int cByteStreams)</unmanaged>\t\n            <unmanaged-short>IMFASFIndexer::SetIndexByteStreams</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFIndexer.GetIndexByteStreamCount(System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the number of byte streams that are  in use by the  indexer object.</p>\t\n            </summary>\t\n            <param name=\"cByteStreamsRef\"><dd> <p>Receives the number of byte streams that are  in use by the indexer object.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong>E_INVALIDARG</strong></dt> </dl> </td><td> <p><em>pcByteStreams</em> is <strong><c>null</c></strong>.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFIndexer::GetIndexByteStreamCount']/*\"/>\t\n            <msdn-id>ms701789</msdn-id>\t\n            <unmanaged>HRESULT IMFASFIndexer::GetIndexByteStreamCount([In] unsigned int* pcByteStreams)</unmanaged>\t\n            <unmanaged-short>IMFASFIndexer::GetIndexByteStreamCount</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFIndexer.GetIndexStatus(SharpDX.MediaFoundation.AsfIndexIdentifier@,SharpDX.Bool,System.Byte,System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the index settings for a specified stream and index type.</p>\t\n            </summary>\t\n            <param name=\"indexIdentifierRef\"><dd> <p>Pointer to an <strong><see cref=\"T:SharpDX.MediaFoundation.AsfIndexIdentifier\"/></strong> structure that contains the stream number and index type for which to get the status.</p> </dd></param>\t\n            <param name=\"fIsIndexedRef\"><dd> <p>A variable that retrieves a Boolean value specifying whether the index described by <em>pIndexIdentifier</em> has been created.</p> </dd></param>\t\n            <param name=\"bIndexDescriptorRef\"><dd> <p>A buffer that receives the index descriptor. The index descriptor consists of an <strong><see cref=\"T:SharpDX.MediaFoundation.AsfIndexDescriptor\"/></strong> structure, optionally followed by index-specific data.</p> </dd></param>\t\n            <param name=\"cbIndexDescriptorRef\"><dd> <p>On input, specifies the size, in bytes, of the buffer that <em>pbIndexDescriptor</em> points to. The value can be zero if <em>pbIndexDescriptor</em> is <strong><c>null</c></strong>. On output, receives the size of the index descriptor, in bytes.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.BufferTooSmall\"/></strong></dt> </dl> </td><td> <p>The buffer size specified in <em>pcbIndexDescriptor</em> is too small.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>To read an existing ASF index, call <strong><see cref=\"M:SharpDX.MediaFoundation.ASFIndexer.SetIndexByteStreams(SharpDX.MediaFoundation.IByteStream@,System.Int32)\"/></strong> before calling this method.</p><p>If an index exists for the stream and the value passed into <em>pcbIndexDescriptor</em> is smaller than the required size of the <em>pbIndexDescriptor</em> buffer, the method returns <see cref=\"F:SharpDX.MediaFoundation.ResultCode.BufferTooSmall\"/>. The required buffer size is returned in the <em>pcbIndexDescriptor</em> parameter.</p><p>If there is no index for the specified stream, the method returns <strong><see cref=\"F:SharpDX.Result.False\"/></strong> in the <em>pfIsIndexed</em> parameter.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFIndexer::GetIndexStatus']/*\"/>\t\n            <msdn-id>ms704012</msdn-id>\t\n            <unmanaged>HRESULT IMFASFIndexer::GetIndexStatus([In] ASF_INDEX_IDENTIFIER* pIndexIdentifier,[In] BOOL* pfIsIndexed,[In] unsigned char* pbIndexDescriptor,[In] unsigned int* pcbIndexDescriptor)</unmanaged>\t\n            <unmanaged-short>IMFASFIndexer::GetIndexStatus</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFIndexer.SetIndexStatus(System.Byte,System.Int32,SharpDX.Bool)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Configures the index for a stream.</p>\t\n            </summary>\t\n            <param name=\"bIndexDescriptorRef\"><dd> <p>The index descriptor to set. The index descriptor is an <strong><see cref=\"T:SharpDX.MediaFoundation.AsfIndexDescriptor\"/></strong> structure, optionally followed by index-specific data.</p> </dd></param>\t\n            <param name=\"cbIndexDescriptor\"><dd> <p>The size, in bytes, of the index descriptor.</p> </dd></param>\t\n            <param name=\"fGenerateIndex\"><dd> <p>A Boolean value. Set to <strong>TRUE</strong> to have the indexer create an index of the type specified for the stream specified in the index descriptor.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidRequest\"/></strong></dt> </dl> </td><td> <p>At attempt was made to change the index status in a seek-only scenario. For more information, see Remarks.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>You must make all calls to <strong>SetIndexStatus</strong> before making any calls to <strong><see cref=\"M:SharpDX.MediaFoundation.ASFIndexer.GenerateIndexEntries(SharpDX.MediaFoundation.Sample)\"/></strong>.</p><p>The indexer object is configured to create temporal indexes for each stream by default. Call this method only if you want to override the default settings.</p><p>You cannot use this method in an index reading scenario.  You can only use this method when writing indexes.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFIndexer::SetIndexStatus']/*\"/>\t\n            <msdn-id>ms702981</msdn-id>\t\n            <unmanaged>HRESULT IMFASFIndexer::SetIndexStatus([In] unsigned char* pbIndexDescriptor,[In] unsigned int cbIndexDescriptor,[In] BOOL fGenerateIndex)</unmanaged>\t\n            <unmanaged-short>IMFASFIndexer::SetIndexStatus</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFIndexer.GetSeekPositionForValue(SharpDX.Win32.Variant,SharpDX.MediaFoundation.AsfIndexIdentifier@,System.Int64,System.Int64,System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Given a desired seek time, gets the offset from which the client should start reading data. </p>\t\n            </summary>\t\n            <param name=\"varValueRef\"><dd> <p> The value of the index entry for which to get the position. The format of this value varies depending on the type of index, which is specified in the index identifier. For time-based indexing, the variant type is <strong>VT_I8</strong> and the value is the desired seek time, in 100-nanosecond units. </p> </dd></param>\t\n            <param name=\"indexIdentifierRef\"><dd> <p> Pointer to an <strong><see cref=\"T:SharpDX.MediaFoundation.AsfIndexIdentifier\"/></strong> structure that identifies the stream number and index type. </p> </dd></param>\t\n            <param name=\"cbOffsetWithinDataRef\"><dd> <p> Receives the offset within the data segment of the ASF Data Object. The offset is in bytes, and is relative to the start of packet 0. The offset gives the starting location from which the client should begin reading from the stream. This location might not correspond exactly to the requested seek time. </p> <p> For reverse playback, if no key frame exists after the desired seek position, this parameter receives the value <strong>MFASFINDEXER_READ_FOR_REVERSEPLAYBACK_OUTOFDATASEGMENT</strong>. In that case, the seek position should be 1 byte pass the end of the data segment. </p> </dd></param>\t\n            <param name=\"hnsApproxTimeRef\"><dd> <p> Receives the approximate time stamp of the data that is located at the offset returned in the <em>pcbOffsetWithinData</em> parameter. The accuracy of this value is equal to the indexing interval of the ASF index, typically about 1 second. </p> <ul> <li> If the index type specified in <em>pIndexIdentifier</em> is <strong>GUID_NULL</strong> (time indexing), this parameter can be <strong><c>null</c></strong>. </li> <li> For all other index types, this parameter must be <strong><c>null</c></strong>. </li> </ul> <p> If the approximate time stamp cannot be determined, this parameter receives the value <strong>MFASFINDEXER_APPROX_SEEK_TIME_UNKNOWN</strong>. </p> </dd></param>\t\n            <param name=\"dwPayloadNumberOfStreamWithinPacketRef\"><dd> <p> Receives the payload number of the payload that contains the information for the specified stream. Packets can contain multiple payloads, each containing data for a different stream. This parameter can be <strong><c>null</c></strong>. </p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.AsfOufOfRange\"/></strong></dt> </dl> </td><td> <p> The requested seek time is out of range. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.NoIndex\"/></strong></dt> </dl> </td><td> <p> No index exists of the specified type for the specified stream. </p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFIndexer::GetSeekPositionForValue']/*\"/>\t\n            <msdn-id>ms703125</msdn-id>\t\n            <unmanaged>HRESULT IMFASFIndexer::GetSeekPositionForValue([In] const PROPVARIANT* pvarValue,[In] ASF_INDEX_IDENTIFIER* pIndexIdentifier,[In] unsigned longlong* pcbOffsetWithinData,[In] longlong* phnsApproxTime,[In] unsigned int* pdwPayloadNumberOfStreamWithinPacket)</unmanaged>\t\n            <unmanaged-short>IMFASFIndexer::GetSeekPositionForValue</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFIndexer.GenerateIndexEntries(SharpDX.MediaFoundation.Sample)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Accepts an ASF packet for the file and creates index entries for them.</p>\t\n            </summary>\t\n            <param name=\"iASFPacketSampleRef\"><dd> <p> Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.Sample\"/></strong> interface of a media sample that contains the ASF packet. </p> </dd></param>\t\n            <returns><p> The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table. </p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded. </p> </td></tr> <tr><td> <dl> <dt><strong>E_INVALIDARG</strong></dt> </dl> </td><td> <p>The argument passed in is <strong><c>null</c></strong>.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.NotInitializeD\"/></strong></dt> </dl> </td><td> <p>The indexer is not initialized.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>The ASF indexer creates indexes for a file internally. You can get the completed index for all data packets sent to the indexer by committing the index with <strong><see cref=\"M:SharpDX.MediaFoundation.ASFIndexer.CommitIndex(SharpDX.MediaFoundation.ASFContentInfo)\"/></strong> and then calling <strong><see cref=\"M:SharpDX.MediaFoundation.ASFIndexer.GetCompletedIndex(SharpDX.MediaFoundation.MediaBuffer,System.Int64)\"/></strong> to write the index entries into a media buffer. To determine the size of the index so you can allocate a buffer large enough to hold the index, call <strong><see cref=\"M:SharpDX.MediaFoundation.ASFIndexer.GetIndexWriteSpace(System.Int64)\"/></strong>.</p><p> When this method creates index entries, they are immediately available for use by <strong><see cref=\"M:SharpDX.MediaFoundation.ASFIndexer.GetSeekPositionForValue(SharpDX.Win32.Variant,SharpDX.MediaFoundation.AsfIndexIdentifier@,System.Int64,System.Int64,System.Int32)\"/></strong>. </p><p> The media sample specified in   <em>pIASFPacketSample</em> must hold a buffer that contains a single ASF packet. Get the sample from the  ASF multiplexer by calling the <strong><see cref=\"M:SharpDX.MediaFoundation.ASFMultiplexer.GetNextPacket(SharpDX.MediaFoundation.AsfStatusflags@,SharpDX.MediaFoundation.Sample@)\"/></strong> method. </p><p>You cannot use this method while reading an index, only when writing an index.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFIndexer::GenerateIndexEntries']/*\"/>\t\n            <msdn-id>ms705660</msdn-id>\t\n            <unmanaged>HRESULT IMFASFIndexer::GenerateIndexEntries([In] IMFSample* pIASFPacketSample)</unmanaged>\t\n            <unmanaged-short>IMFASFIndexer::GenerateIndexEntries</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFIndexer.CommitIndex(SharpDX.MediaFoundation.ASFContentInfo)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Adds information about a new index to the ContentInfo object associated with ASF content. You must call this method before copying the index to the content so that the index will be readable by the indexer later.</p>\t\n            </summary>\t\n            <param name=\"iContentInfoRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.ASFContentInfo\"/></strong> interface of the ContentInfo object that describes the content.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidRequest\"/></strong></dt> </dl> </td><td> <p>The caller made an invalid request. For more information, see Remarks.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>For the index to function properly, you must call this method after all ASF packets in the file have been passed to the indexer by using the <strong><see cref=\"M:SharpDX.MediaFoundation.ASFIndexer.GenerateIndexEntries(SharpDX.MediaFoundation.Sample)\"/></strong> method. After you call this method, you must retrieve the indexes by calling <strong>GetCompletedIndex</strong> and write them to the appropriate location in the file. Finally, you must generate a new ASF header by calling the <strong><see cref=\"M:SharpDX.MediaFoundation.ASFContentInfo.GenerateHeader(SharpDX.MediaFoundation.MediaBuffer,System.Int32)\"/></strong> method of the ASF ContentInfo object.</p><p> An application must use the <strong>CommitIndex</strong> method only when writing a new index otherwise <strong>CommitIndex</strong> may return <see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidRequest\"/> as a result. For example, <see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidRequest\"/> is returned if the application has flags other than <see cref=\"F:SharpDX.MediaFoundation.AsfIndexerFlags.WriteNewIndex\"/>  set on the indexer object. <strong>CommitIndex</strong> can also return <see cref=\"F:SharpDX.MediaFoundation.AsfIndexerFlags.WriteNewIndex\"/> if the index entries have already been committed through an earlier <strong>CommitIndex</strong> call.</p><p>You cannot use this method in an index reading scenario.  You can only use this method when writing indexes.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFIndexer::CommitIndex']/*\"/>\t\n            <msdn-id>ms696994</msdn-id>\t\n            <unmanaged>HRESULT IMFASFIndexer::CommitIndex([In] IMFASFContentInfo* pIContentInfo)</unmanaged>\t\n            <unmanaged-short>IMFASFIndexer::CommitIndex</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFIndexer.GetIndexWriteSpace(System.Int64)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the size, in bytes, of the buffer required to store the completed index.</p>\t\n            </summary>\t\n            <param name=\"cbIndexWriteSpaceRef\"><dd> <p>Receives the size of the index, in bytes</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.IndexNotCommitted\"/></strong></dt> </dl> </td><td> <p>The index has not been committed. For more information; see Remarks.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>Use this method to get the size of the index and then allocate a buffer big enough to hold it. </p><p>The index must be committed with a call to<strong><see cref=\"M:SharpDX.MediaFoundation.ASFIndexer.CommitIndex(SharpDX.MediaFoundation.ASFContentInfo)\"/></strong> before calling <strong><see cref=\"M:SharpDX.MediaFoundation.ASFIndexer.GetIndexWriteSpace(System.Int64)\"/></strong>.  If the index is not committed before <strong>GetIndexWriteSpace</strong> is called, then <see cref=\"F:SharpDX.MediaFoundation.ResultCode.IndexNotCommitted\"/> will be returned as a result. </p><p>Call <strong><see cref=\"M:SharpDX.MediaFoundation.ASFIndexer.GetCompletedIndex(SharpDX.MediaFoundation.MediaBuffer,System.Int64)\"/></strong> to write the completed index into a media buffer.</p><p>You cannot use this method in a reading scenario.  You can only use this method when writing indexes.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFIndexer::GetIndexWriteSpace']/*\"/>\t\n            <msdn-id>ms700198</msdn-id>\t\n            <unmanaged>HRESULT IMFASFIndexer::GetIndexWriteSpace([In] unsigned longlong* pcbIndexWriteSpace)</unmanaged>\t\n            <unmanaged-short>IMFASFIndexer::GetIndexWriteSpace</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFIndexer.GetCompletedIndex(SharpDX.MediaFoundation.MediaBuffer,System.Int64)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the completed index from the ASF indexer object.</p>\t\n            </summary>\t\n            <param name=\"iIndexBufferRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaBuffer\"/></strong> interface of a media buffer that receives the index data.</p> </dd></param>\t\n            <param name=\"cbOffsetWithinIndex\"><dd> <p>The offset of the data to be retrieved, in bytes from the start of the index data. Set to 0 for the first call. If subsequent calls are needed (the buffer is not large enough to hold the entire index), set to the byte following the last one retrieved.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.IndexNotCommitted\"/></strong></dt> </dl> </td><td> <p>The index was not committed before attempting to get the completed index. For more information, see Remarks.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>This method uses as much of the buffer as possible, and updates the length of the buffer appropriately.</p><p>If <em>pIIndexBuffer</em> is large enough to contain the entire buffer, <em>cbOffsetWithinIndex</em> should be 0, and the call needs to be made only once. Otherwise, there should be no gaps between successive buffers.</p><p>The user must write this data to the content at <em>cbOffsetFromIndexStart</em> bytes after the end of the ASF data object. You can call <strong><see cref=\"M:SharpDX.MediaFoundation.ASFIndexer.GetIndexPosition(SharpDX.MediaFoundation.ASFContentInfo,System.Int64)\"/></strong> to determine the start position of the ASF index.</p><p>This call will not succeed unless <strong><see cref=\"M:SharpDX.MediaFoundation.ASFIndexer.CommitIndex(SharpDX.MediaFoundation.ASFContentInfo)\"/></strong> has been called. After calling <strong>GetCompletedIndex</strong>, the caller must call <strong><see cref=\"M:SharpDX.MediaFoundation.ASFContentInfo.GenerateHeader(SharpDX.MediaFoundation.MediaBuffer,System.Int32)\"/></strong> and overwrite the existing ASF header with the new header; otherwise, the ASF header will not match the content, and the file is not guaranteed to play correctly.</p><p>You cannot use this method in an index reading scenario.  You can only use this method when writing indexes.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFIndexer::GetCompletedIndex']/*\"/>\t\n            <msdn-id>ms702077</msdn-id>\t\n            <unmanaged>HRESULT IMFASFIndexer::GetCompletedIndex([In] IMFMediaBuffer* pIIndexBuffer,[In] unsigned longlong cbOffsetWithinIndex)</unmanaged>\t\n            <unmanaged-short>IMFASFIndexer::GetCompletedIndex</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.ASFMultiplexer\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Provides methods to create Advanced Systems Format (ASF) data packets. The methods of this interface process input samples into the packets that make up an ASF data section. The ASF multiplexer exposes this interface. To create the ASF multiplexer, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateASFMultiplexer(SharpDX.MediaFoundation.ASFMultiplexer@)\"/></strong>.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFMultiplexer']/*\"/>\t\n            <msdn-id>ms703009</msdn-id>\t\n            <unmanaged>IMFASFMultiplexer</unmanaged>\t\n            <unmanaged-short>IMFASFMultiplexer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFMultiplexer.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.ASFMultiplexer\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFMultiplexer.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.ASFMultiplexer\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.ASFMultiplexer\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFMultiplexer.Initialize(SharpDX.MediaFoundation.ASFContentInfo)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Initializes the multiplexer with the data from an ASF ContentInfo object.</p>\t\n            </summary>\t\n            <param name=\"iContentInfoRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.ASFContentInfo\"/></strong> interface of the <strong>MFASFContentInfo</strong> object that contains the header information of the new ASF file. The multiplexer will generate data packets for this file.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>This call must be made once at the beginning of encoding, with <em>pIContentInfo</em> pointing to the ASF ContentInfo object that describes the content to be encoded. This enables the ASF multiplexer to see, among other things, which streams will be present in the encoding session. This call typically does not affect the data in the ASF ContentInfo object.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFMultiplexer::Initialize']/*\"/>\t\n            <msdn-id>ms697469</msdn-id>\t\n            <unmanaged>HRESULT IMFASFMultiplexer::Initialize([In] IMFASFContentInfo* pIContentInfo)</unmanaged>\t\n            <unmanaged-short>IMFASFMultiplexer::Initialize</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFMultiplexer.SetFlags(System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Sets multiplexer options.</p>\t\n            </summary>\t\n            <param name=\"dwFlags\"><dd> <p>Bitwise <strong>OR</strong> of zero or more members of the <strong><see cref=\"T:SharpDX.MediaFoundation.AsfMultiplexerflags\"/></strong> enumeration. These flags specify which multiplexer options to use. For more information, see \"Multiplexer Initialization and Leaky Bucket Settings\" in Creating the Multiplexer Object.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFMultiplexer::SetFlags']/*\"/>\t\n            <msdn-id>ms703986</msdn-id>\t\n            <unmanaged>HRESULT IMFASFMultiplexer::SetFlags([In] unsigned int dwFlags)</unmanaged>\t\n            <unmanaged-short>IMFASFMultiplexer::SetFlags</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFMultiplexer.GetFlags(System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves flags indicating the configured multiplexer options.</p>\t\n            </summary>\t\n            <param name=\"dwFlagsRef\"><dd> <p>Receives a bitwise <strong>OR</strong> of zero or more values from the <strong><see cref=\"T:SharpDX.MediaFoundation.AsfMultiplexerflags\"/></strong> enumeration. To set these flags, call <strong><see cref=\"M:SharpDX.MediaFoundation.ASFMultiplexer.SetFlags(System.Int32)\"/></strong>.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFMultiplexer::GetFlags']/*\"/>\t\n            <msdn-id>ms702166</msdn-id>\t\n            <unmanaged>HRESULT IMFASFMultiplexer::GetFlags([In] unsigned int* pdwFlags)</unmanaged>\t\n            <unmanaged-short>IMFASFMultiplexer::GetFlags</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFMultiplexer.ProcessSample(System.Int16,SharpDX.MediaFoundation.Sample,System.Int64)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Delivers input samples to the multiplexer. </p>\t\n            </summary>\t\n            <param name=\"wStreamNumber\"><dd> <p> The stream number of the stream to which the sample belongs. </p> </dd></param>\t\n            <param name=\"iSampleRef\"><dd> <p> Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.Sample\"/></strong> interface of the input sample. The input sample contains the media data to be converted to ASF data packets. When possible, the time stamp of this sample should be accurate. </p> </dd></param>\t\n            <param name=\"hnsTimestampAdjust\"><dd> <p> The adjustment to apply to the time stamp of the sample. This parameter is used if the caller wants to shift the sample time on <em>pISample</em>. This value should be positive if the time stamp should be pushed ahead and negative if the time stamp should be pushed back. This time stamp is added to sample time on <em>pISample</em>, and the resulting time is used by the multiplexer instead of the original sample time. If no adjustment is needed, set this value to 0. </p> </dd></param>\t\n            <returns><p> The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table. </p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.NotAccepting\"/></strong></dt> </dl> </td><td> <p> There are too many packets waiting to be retrieved from the multiplexer. Call <strong><see cref=\"M:SharpDX.MediaFoundation.ASFMultiplexer.GetNextPacket(SharpDX.MediaFoundation.AsfStatusflags@,SharpDX.MediaFoundation.Sample@)\"/></strong> to get the packets.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.BandwidthOverrun\"/></strong></dt> </dl> </td><td> <p> The sample that was processed violates the bandwidth limitations specified for the stream in the ASF ContentInfo object. When this error is generated, the sample is dropped. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidStreamNumber\"/></strong></dt> </dl> </td><td> <p> The value passed in <em>wStreamNumber</em> is invalid. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.LateSample\"/></strong></dt> </dl> </td><td> <p> The presentation time of the input media sample is earlier than the send time. </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> The application passes samples to <strong>ProcessSample</strong>, and the ASF multiplexer queues them internally until they are ready to be placed into ASF packets. Call <strong><see cref=\"M:SharpDX.MediaFoundation.ASFMultiplexer.GetNextPacket(SharpDX.MediaFoundation.AsfStatusflags@,SharpDX.MediaFoundation.Sample@)\"/></strong> to get the ASF data packet. </p><p>After each call to <strong>ProcessSample</strong>, call <strong>GetNextPacket</strong> in a loop to get all of the available data packets. For a code example, see Generating New ASF Data Packets.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFMultiplexer::ProcessSample']/*\"/>\t\n            <msdn-id>ms696206</msdn-id>\t\n            <unmanaged>HRESULT IMFASFMultiplexer::ProcessSample([In] unsigned short wStreamNumber,[In] IMFSample* pISample,[In] longlong hnsTimestampAdjust)</unmanaged>\t\n            <unmanaged-short>IMFASFMultiplexer::ProcessSample</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFMultiplexer.GetNextPacket(SharpDX.MediaFoundation.AsfStatusflags@,SharpDX.MediaFoundation.Sample@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the next output ASF packet from the multiplexer.</p>\t\n            </summary>\t\n            <param name=\"dwStatusFlagsRef\"><dd> <p> Receives zero or more status flags. If more than one packet is waiting, the method sets the <strong><see cref=\"F:SharpDX.MediaFoundation.AsfStatusflags.Incomplete\"/></strong> flag. </p> </dd></param>\t\n            <param name=\"iPacketOut\"><dd> <p> Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.Sample\"/></strong> interface of the first output sample of the data packet. The caller must release the interface. </p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded. </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> The client needs to call this method, ideally after every call to <strong><see cref=\"M:SharpDX.MediaFoundation.ASFMultiplexer.ProcessSample(System.Int16,SharpDX.MediaFoundation.Sample,System.Int64)\"/></strong>, to get the output ASF packets. Call this method in a loop as long as the <strong><see cref=\"F:SharpDX.MediaFoundation.AsfStatusflags.Incomplete\"/></strong> flag is received. </p><p>If no packets are ready, the method returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong> but does not return a sample in <em>ppIPacket</em>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFMultiplexer::GetNextPacket']/*\"/>\t\n            <msdn-id>ms696243</msdn-id>\t\n            <unmanaged>HRESULT IMFASFMultiplexer::GetNextPacket([Out] ASF_STATUSFLAGS* pdwStatusFlags,[In] IMFSample** ppIPacket)</unmanaged>\t\n            <unmanaged-short>IMFASFMultiplexer::GetNextPacket</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFMultiplexer.Flush\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Signals the multiplexer to process all queued output media samples. Call this method after passing the last sample to the multiplexer.</p>\t\n            </summary>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>You must call <strong>Flush</strong> after the last sample has been passed into the ASF multiplexer and before you call <strong><see cref=\"M:SharpDX.MediaFoundation.ASFMultiplexer.End(SharpDX.MediaFoundation.ASFContentInfo)\"/></strong>. This causes all output media samples in progress to be completed. After calling <strong>Flush</strong>, call <strong><see cref=\"M:SharpDX.MediaFoundation.ASFMultiplexer.GetNextPacket(SharpDX.MediaFoundation.AsfStatusflags@,SharpDX.MediaFoundation.Sample@)\"/></strong> in a loop until all the pending media samples have been packetized.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFMultiplexer::Flush']/*\"/>\t\n            <msdn-id>ms696991</msdn-id>\t\n            <unmanaged>HRESULT IMFASFMultiplexer::Flush()</unmanaged>\t\n            <unmanaged-short>IMFASFMultiplexer::Flush</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFMultiplexer.End(SharpDX.MediaFoundation.ASFContentInfo)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Collects data from the multiplexer and updates the ASF ContentInfo object to include that information in the ASF Header Object.</p>\t\n            </summary>\t\n            <param name=\"iContentInfoRef\"><dd> <p>Pointer to the  <strong><see cref=\"T:SharpDX.MediaFoundation.ASFContentInfo\"/></strong> interface of the ContentInfo object. This must be the same object that was used to initialize the multiplexer. The ContentInfo object represents the ASF Header Object of the file for which the multiplexer generated data packets.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.FlushNeeded\"/></strong></dt> </dl> </td><td> <p>There are pending output media samples waiting in the multiplexer. Call <strong><see cref=\"M:SharpDX.MediaFoundation.ASFMultiplexer.Flush\"/></strong> to force the media samples to be packetized.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>For non-live encoding scenarios (such as encoding to a file), the user should call <strong>End</strong> to update the specified ContentInfo object, adding data that the multiplexer has collected during the packet generation process. The user should then call <strong><see cref=\"M:SharpDX.MediaFoundation.ASFContentInfo.GenerateHeader(SharpDX.MediaFoundation.MediaBuffer,System.Int32)\"/></strong> and write the output header at the beginning of the ASF file (overwriting the header obtained at the beginning of the encoding session). For more information, see Writing an ASF Header Object for a New File.</p><p>During live encoding, it is usually not possible to rewrite the header, so this call is not required for live encoding. (The header in those cases will simply lack some of the information that was not available until the end of the encoding session.)</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFMultiplexer::End']/*\"/>\t\n            <msdn-id>ms696172</msdn-id>\t\n            <unmanaged>HRESULT IMFASFMultiplexer::End([In] IMFASFContentInfo* pIContentInfo)</unmanaged>\t\n            <unmanaged-short>IMFASFMultiplexer::End</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFMultiplexer.GetStatistics(System.Int16,SharpDX.MediaFoundation.AsfMuxStatistics)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves multiplexer statistics.</p>\t\n            </summary>\t\n            <param name=\"wStreamNumber\"><dd> <p>The stream number for which to obtain statistics.</p> </dd></param>\t\n            <param name=\"muxStatsRef\"><dd> <p>Pointer to an <strong><see cref=\"T:SharpDX.MediaFoundation.AsfMuxStatistics\"/></strong> structure that receives the statistics.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFMultiplexer::GetStatistics']/*\"/>\t\n            <msdn-id>ms697232</msdn-id>\t\n            <unmanaged>HRESULT IMFASFMultiplexer::GetStatistics([In] unsigned short wStreamNumber,[In] ASF_MUX_STATISTICS* pMuxStats)</unmanaged>\t\n            <unmanaged-short>IMFASFMultiplexer::GetStatistics</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFMultiplexer.SetSyncTolerance(System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Sets the maximum time by which samples from various streams can be out of synchronization. The multiplexer will not accept a sample with a time stamp that is out of synchronization with the latest samples from any other stream by an amount that exceeds the synchronization tolerance.</p>\t\n            </summary>\t\n            <param name=\"msSyncTolerance\"><dd> <p>Synchronization tolerance in milliseconds.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>The synchronization tolerance is the maximum difference in presentation times at any given point between samples of different streams that the ASF multiplexer can accommodate. That is, if the synchronization tolerance is 3 seconds, no stream can be more than 3 seconds behind any other stream in the time stamps passed to the multiplexer. The multiplexer determines a default synchronization tolerance to use, but this method overrides it (usually to increase it). More tolerance means the potential for greater latency in the multiplexer. If the time stamps are synchronized among the streams, actual latency will be much lower than <em>msSyncTolerance</em>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFMultiplexer::SetSyncTolerance']/*\"/>\t\n            <msdn-id>ms697206</msdn-id>\t\n            <unmanaged>HRESULT IMFASFMultiplexer::SetSyncTolerance([In] unsigned int msSyncTolerance)</unmanaged>\t\n            <unmanaged-short>IMFASFMultiplexer::SetSyncTolerance</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.ASFMultiplexer.SyncTolerance\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Sets the maximum time by which samples from various streams can be out of synchronization. The multiplexer will not accept a sample with a time stamp that is out of synchronization with the latest samples from any other stream by an amount that exceeds the synchronization tolerance.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The synchronization tolerance is the maximum difference in presentation times at any given point between samples of different streams that the ASF multiplexer can accommodate. That is, if the synchronization tolerance is 3 seconds, no stream can be more than 3 seconds behind any other stream in the time stamps passed to the multiplexer. The multiplexer determines a default synchronization tolerance to use, but this method overrides it (usually to increase it). More tolerance means the potential for greater latency in the multiplexer. If the time stamps are synchronized among the streams, actual latency will be much lower than <em>msSyncTolerance</em>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFMultiplexer::SetSyncTolerance']/*\"/>\t\n            <msdn-id>ms697206</msdn-id>\t\n            <unmanaged>SetSyncTolerance</unmanaged>\t\n            <unmanaged-short>SetSyncTolerance</unmanaged-short>\t\n            <unmanaged>HRESULT IMFASFMultiplexer::SetSyncTolerance([In] unsigned int msSyncTolerance)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.ASFMutualExclusion\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Adds a stream number to a record in the Advanced Systems Format mutual exclusion object.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Each record includes one or more streams. Every stream in a record is mutually exclusive of all streams in every other record.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFMutualExclusion']/*\"/>\t\n            <msdn-id>ms703794</msdn-id>\t\n            <unmanaged>IMFASFMutualExclusion</unmanaged>\t\n            <unmanaged-short>IMFASFMutualExclusion</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFMutualExclusion.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.ASFMutualExclusion\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFMutualExclusion.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.ASFMutualExclusion\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.ASFMutualExclusion\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFMutualExclusion.GetTypeInfo(System.Guid)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the type of mutual exclusion represented by the Advanced Systems Format (ASF) mutual exclusion object.</p>\t\n            </summary>\t\n            <param name=\"guidTypeRef\"><dd> <p>A variable that receives the type identifier. For a list of predefined mutual exclusion type constants, see ASF Mutual Exclusion Type GUIDs.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>Sometimes, content must be made mutually exclusive in more than one way. For example, a video file might contain audio streams of several bit rates for each of several languages. To handle this type of complex mutual exclusion, you must configure more than one ASF mutual exclusion object. For more information, see <strong><see cref=\"M:SharpDX.MediaFoundation.ASFMutualExclusion.AddRecord(System.Int32)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFMutualExclusion::GetType']/*\"/>\t\n            <msdn-id>ms703095</msdn-id>\t\n            <unmanaged>HRESULT IMFASFMutualExclusion::GetType([In] GUID* pguidType)</unmanaged>\t\n            <unmanaged-short>IMFASFMutualExclusion::GetType</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFMutualExclusion.SetType(System.Guid)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Sets the type of mutual exclusion that is represented by the Advanced Systems Format (ASF) mutual exclusion object.</p>\t\n            </summary>\t\n            <param name=\"guidType\"><dd> <p>The type of mutual exclusion that is represented by the ASF mutual exclusion object. For a list of predefined mutual exclusion type constants, see ASF Mutual Exclusion Type GUIDs.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>Sometimes, content must be made mutually exclusive in more than one way. For example, a video file might contain audio streams in several bit rates for each of several languages. To handle this type of complex mutual exclusion, you must configure more than one ASF mutual exclusion object. For more information, see <strong><see cref=\"M:SharpDX.MediaFoundation.ASFMutualExclusion.AddRecord(System.Int32)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFMutualExclusion::SetType']/*\"/>\t\n            <msdn-id>ms697261</msdn-id>\t\n            <unmanaged>HRESULT IMFASFMutualExclusion::SetType([In] const GUID&amp; guidType)</unmanaged>\t\n            <unmanaged-short>IMFASFMutualExclusion::SetType</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFMutualExclusion.GetRecordCount(System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the number of records in the Advanced Systems Format mutual exclusion object.</p>\t\n            </summary>\t\n            <param name=\"dwRecordCountRef\"><dd> <p>Receives the count of records.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>Each record includes one or more streams. Every stream in a record is mutually exclusive of streams in every other record.</p><p>Use this method in conjunction with <strong><see cref=\"M:SharpDX.MediaFoundation.ASFMutualExclusion.GetStreamsForRecord(System.Int32,System.Int16,System.Int32)\"/></strong> to retrieve the streams that are included in each record.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFMutualExclusion::GetRecordCount']/*\"/>\t\n            <msdn-id>ms700201</msdn-id>\t\n            <unmanaged>HRESULT IMFASFMutualExclusion::GetRecordCount([In] unsigned int* pdwRecordCount)</unmanaged>\t\n            <unmanaged-short>IMFASFMutualExclusion::GetRecordCount</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFMutualExclusion.GetStreamsForRecord(System.Int32,System.Int16,System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the stream numbers contained in a record in the Advanced Systems Format mutual exclusion object.</p>\t\n            </summary>\t\n            <param name=\"dwRecordNumber\"><dd> <p>The number of the record for which to retrieve the stream numbers.</p> </dd></param>\t\n            <param name=\"wStreamNumArrayRef\"><dd> <p>An array that receives the stream numbers. Set to <strong><c>null</c></strong> to get the number of elements required, which is indicated by the value of <em>pcStreams</em> on return. If this parameter is not <strong><c>null</c></strong>, the method will copy as many stream numbers to the array as there are elements indicated by the value of <em>pcStreams</em>.</p> </dd></param>\t\n            <param name=\"cStreamsRef\"><dd> <p>On input, the number of elements in the array referenced by <em>pwStreamNumArray</em>. On output, the method sets this value to the count of stream numbers in the record. You can call <strong>GetStreamsForRecord</strong> with <em>pwStreamNumArray</em> set to <strong><c>null</c></strong> to retrieve the number of elements required to hold all of the stream numbers.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFMutualExclusion::GetStreamsForRecord']/*\"/>\t\n            <msdn-id>ms703200</msdn-id>\t\n            <unmanaged>HRESULT IMFASFMutualExclusion::GetStreamsForRecord([In] unsigned int dwRecordNumber,[In] unsigned short* pwStreamNumArray,[In] unsigned int* pcStreams)</unmanaged>\t\n            <unmanaged-short>IMFASFMutualExclusion::GetStreamsForRecord</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFMutualExclusion.AddStreamForRecord(System.Int32,System.Int16)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Adds a stream number to a record in the Advanced Systems Format mutual exclusion object.</p>\t\n            </summary>\t\n            <param name=\"dwRecordNumber\"><dd> <p>The record number to which the stream is added. A record number is set by the <strong><see cref=\"M:SharpDX.MediaFoundation.ASFMutualExclusion.AddRecord(System.Int32)\"/></strong> method.</p> </dd></param>\t\n            <param name=\"wStreamNumber\"><dd> <p>The stream number to add to the record.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidRequest\"/></strong></dt> </dl> </td><td> <p>The specified stream number is already associated with the record.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>Each record includes one or more streams. Every stream in a record is mutually exclusive of all streams in every other record.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFMutualExclusion::AddStreamForRecord']/*\"/>\t\n            <msdn-id>ms703794</msdn-id>\t\n            <unmanaged>HRESULT IMFASFMutualExclusion::AddStreamForRecord([In] unsigned int dwRecordNumber,[In] unsigned short wStreamNumber)</unmanaged>\t\n            <unmanaged-short>IMFASFMutualExclusion::AddStreamForRecord</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFMutualExclusion.RemoveStreamFromRecord(System.Int32,System.Int16)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Removes a stream number from a record in the Advanced Systems Format mutual exclusion object.</p>\t\n            </summary>\t\n            <param name=\"dwRecordNumber\"><dd> <p>The record number from which to remove the stream number.</p> </dd></param>\t\n            <param name=\"wStreamNumber\"><dd> <p>The stream number to remove from the record.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidRequest\"/></strong></dt> </dl> </td><td> <p>The stream number is not listed for the specified record.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFMutualExclusion::RemoveStreamFromRecord']/*\"/>\t\n            <msdn-id>ms703971</msdn-id>\t\n            <unmanaged>HRESULT IMFASFMutualExclusion::RemoveStreamFromRecord([In] unsigned int dwRecordNumber,[In] unsigned short wStreamNumber)</unmanaged>\t\n            <unmanaged-short>IMFASFMutualExclusion::RemoveStreamFromRecord</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFMutualExclusion.RemoveRecord(System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Removes a record from the Advanced Systems Format (ASF) mutual exclusion object.</p>\t\n            </summary>\t\n            <param name=\"dwRecordNumber\"><dd> <p>The index of the record to remove.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>When a record is removed, the ASF mutual exclusion object indexes the remaining records so that they are sequential starting with zero. You should enumerate the records to ensure that you have the correct index for each record. If the record removed is the one with the highest index, removing it has no effect on the other indexes.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFMutualExclusion::RemoveRecord']/*\"/>\t\n            <msdn-id>ms704808</msdn-id>\t\n            <unmanaged>HRESULT IMFASFMutualExclusion::RemoveRecord([In] unsigned int dwRecordNumber)</unmanaged>\t\n            <unmanaged-short>IMFASFMutualExclusion::RemoveRecord</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFMutualExclusion.AddRecord(System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Adds a record to the mutual exclusion object. A record specifies streams that are mutually exclusive with the streams in all other records.</p>\t\n            </summary>\t\n            <param name=\"dwRecordNumberRef\"><dd> <p>Receives the index assigned to the new record. Record indexes are zero-based and sequential.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>A record can include one or more stream numbers. All of the streams in a record are mutually exclusive with all the streams in all other records in the ASF mutual exclusion object.</p><p>You can use records to create complex mutual exclusion scenarios by using multiple ASF mutual exclusion objects.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFMutualExclusion::AddRecord']/*\"/>\t\n            <msdn-id>ms705615</msdn-id>\t\n            <unmanaged>HRESULT IMFASFMutualExclusion::AddRecord([In] unsigned int* pdwRecordNumber)</unmanaged>\t\n            <unmanaged-short>IMFASFMutualExclusion::AddRecord</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFMutualExclusion.Clone(SharpDX.MediaFoundation.ASFMutualExclusion@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Creates a copy of the Advanced Systems Format mutual exclusion object.</p>\t\n            </summary>\t\n            <param name=\"iMutexOut\"><dd> <p>Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.ASFMutualExclusion\"/></strong> interface of the new object. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>The cloned object is a new object, completely independent of the object from which it was cloned.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFMutualExclusion::Clone']/*\"/>\t\n            <msdn-id>ms696217</msdn-id>\t\n            <unmanaged>HRESULT IMFASFMutualExclusion::Clone([In] IMFASFMutualExclusion** ppIMutex)</unmanaged>\t\n            <unmanaged-short>IMFASFMutualExclusion::Clone</unmanaged-short>\t\n        </member>\n        <!-- Badly formed XML comment ignored for member \"P:SharpDX.MediaFoundation.ASFMutualExclusion.Type\" -->\n        <member name=\"T:SharpDX.MediaFoundation.ASFProfile\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Manages an Advanced Systems Format (ASF) profile. A profile is a collection of information that describes the configuration of streams that will be included in an ASF file. Information about the relationships between streams is also included in the profile.</p><p>An <strong><see cref=\"T:SharpDX.MediaFoundation.ASFProfile\"/></strong> interface exists for every ASF profile object. To create an ASF profile object, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateASFProfile(SharpDX.MediaFoundation.ASFProfile@)\"/></strong> or <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateASFProfileFromPresentationDescriptor(SharpDX.MediaFoundation.PresentationDescriptor,SharpDX.MediaFoundation.ASFProfile@)\"/></strong>.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFProfile']/*\"/>\t\n            <msdn-id>ms705658</msdn-id>\t\n            <unmanaged>IMFASFProfile</unmanaged>\t\n            <unmanaged-short>IMFASFProfile</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFProfile.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.ASFProfile\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFProfile.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.ASFProfile\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.ASFProfile\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFProfile.GetStreamCount(System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the number of streams in the profile.</p>\t\n            </summary>\t\n            <param name=\"cStreamsRef\"><dd> <p>Receives the number of streams in the profile.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFProfile::GetStreamCount']/*\"/>\t\n            <msdn-id>ms703024</msdn-id>\t\n            <unmanaged>HRESULT IMFASFProfile::GetStreamCount([In] unsigned int* pcStreams)</unmanaged>\t\n            <unmanaged-short>IMFASFProfile::GetStreamCount</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFProfile.GetStream(System.Int32,System.Int16,SharpDX.MediaFoundation.ASFStreamConfig@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves a stream from the profile by stream index, and/or retrieves the stream number for a stream index.</p>\t\n            </summary>\t\n            <param name=\"dwStreamIndex\"><dd> <p>The index of the stream to retrieve. Stream indexes are sequential and zero-based. You can get the number of streams that are in the profile by calling the <strong><see cref=\"M:SharpDX.MediaFoundation.ASFProfile.GetStreamCount(System.Int32)\"/></strong> method.</p> </dd></param>\t\n            <param name=\"wStreamNumberRef\"><dd> <p>Receives the stream number of the requested stream. Stream numbers are one-based and are not necessarily sequential. This parameter can be set to <strong><c>null</c></strong> if the stream number is not required.</p> </dd></param>\t\n            <param name=\"iStreamOut\"><dd> <p>Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.ASFStreamConfig\"/></strong> interface of the ASF stream configuration object. The caller must release the interface. This parameter can be <strong><c>null</c></strong> if you want to retrieve the stream number without accessing the stream configuration.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>This method does not create a copy of the stream configuration object. The reference that is retrieved points to the object within the profile object. You must not make any changes to the stream configuration object using this reference, because doing so can affect the profile object in unexpected ways.</p><p>To change the configuration of the stream configuration object in the profile, you must first clone the stream configuration object by calling <strong><see cref=\"M:SharpDX.MediaFoundation.ASFStreamConfig.Clone(SharpDX.MediaFoundation.ASFStreamConfig@)\"/></strong>. Make whatever changes are required to the clone of the object and then add the updated object by calling the <strong><see cref=\"M:SharpDX.MediaFoundation.ASFProfile.SetStream(SharpDX.MediaFoundation.ASFStreamConfig)\"/></strong> method.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFProfile::GetStream']/*\"/>\t\n            <msdn-id>ms700799</msdn-id>\t\n            <unmanaged>HRESULT IMFASFProfile::GetStream([In] unsigned int dwStreamIndex,[In] unsigned short* pwStreamNumber,[In] IMFASFStreamConfig** ppIStream)</unmanaged>\t\n            <unmanaged-short>IMFASFProfile::GetStream</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFProfile.GetStreamByNumber(System.Int16,SharpDX.MediaFoundation.ASFStreamConfig@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves an Advanced Systems Format (ASF) stream configuration object for a stream in the profile. This method references the stream by stream number instead of stream index.</p>\t\n            </summary>\t\n            <param name=\"wStreamNumber\"><dd> <p>The stream number for which to obtain the interface reference.</p> </dd></param>\t\n            <param name=\"iStreamOut\"><dd> <p>Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.ASFStreamConfig\"/></strong> interface of the ASF stream configuration object. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>This method does not create a copy of the stream configuration object. The reference that is retrieved points to the object within the profile object. You must not make any changes to the stream configuration object using this reference, because doing so can affect the profile object in unexpected ways.</p><p>To change the configuration of the stream configuration object in the profile, you must first clone the stream configuration object by calling <strong><see cref=\"M:SharpDX.MediaFoundation.ASFStreamConfig.Clone(SharpDX.MediaFoundation.ASFStreamConfig@)\"/></strong>. Make whatever changes are required to the clone of the object and then add the updated object by calling the <strong><see cref=\"M:SharpDX.MediaFoundation.ASFProfile.SetStream(SharpDX.MediaFoundation.ASFStreamConfig)\"/></strong> method.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFProfile::GetStreamByNumber']/*\"/>\t\n            <msdn-id>ms694981</msdn-id>\t\n            <unmanaged>HRESULT IMFASFProfile::GetStreamByNumber([In] unsigned short wStreamNumber,[In] IMFASFStreamConfig** ppIStream)</unmanaged>\t\n            <unmanaged-short>IMFASFProfile::GetStreamByNumber</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFProfile.SetStream(SharpDX.MediaFoundation.ASFStreamConfig)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Adds a stream to the profile or reconfigures an existing stream.</p>\t\n            </summary>\t\n            <param name=\"iStreamRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.ASFStreamConfig\"/></strong> interface of a configured ASF stream configuration object.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>If the stream number in the ASF stream configuration object is already included in the profile, the information in the new object replaces the old one. If the profile does not contain a stream for the stream number, the ASF stream configuration object is added as a new stream.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFProfile::SetStream']/*\"/>\t\n            <msdn-id>ms703051</msdn-id>\t\n            <unmanaged>HRESULT IMFASFProfile::SetStream([In] IMFASFStreamConfig* pIStream)</unmanaged>\t\n            <unmanaged-short>IMFASFProfile::SetStream</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFProfile.RemoveStream(System.Int16)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Removes a stream from the Advanced Systems Format (ASF) profile object.</p>\t\n            </summary>\t\n            <param name=\"wStreamNumber\"><dd> <p>Stream number of the stream to remove.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>After a stream is removed, the ASF profile object reassigns stream indexes so that the index values are sequential starting from zero. Any previously stored stream index numbers are no longer valid after deleting a stream.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFProfile::RemoveStream']/*\"/>\t\n            <msdn-id>ms704569</msdn-id>\t\n            <unmanaged>HRESULT IMFASFProfile::RemoveStream([In] unsigned short wStreamNumber)</unmanaged>\t\n            <unmanaged-short>IMFASFProfile::RemoveStream</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFProfile.CreateStream(SharpDX.MediaFoundation.MediaType,SharpDX.MediaFoundation.ASFStreamConfig@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Creates an Advanced Systems Format (ASF) stream configuration object.</p>\t\n            </summary>\t\n            <param name=\"iMediaTypeRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaType\"/></strong> interface of a configured media type.</p> </dd></param>\t\n            <param name=\"iStreamOut\"><dd> <p>Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.ASFStreamConfig\"/></strong> interface of the new ASF stream configuration object. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong>E_INVALIDARG</strong></dt> </dl> </td><td> <p><em>ppIStream</em> is <strong><c>null</c></strong>.</p> </td></tr> <tr><td> <dl> <dt><strong>E_OUTOFMEMORY</strong></dt> </dl> </td><td> <p>stream configuration object could not be created due to insufficient memory.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>The ASF stream configuration object created by this method is not included in the profile. To include the stream, you must first configure the stream configuration and then call <strong><see cref=\"M:SharpDX.MediaFoundation.ASFProfile.SetStream(SharpDX.MediaFoundation.ASFStreamConfig)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFProfile::CreateStream']/*\"/>\t\n            <msdn-id>ms696264</msdn-id>\t\n            <unmanaged>HRESULT IMFASFProfile::CreateStream([In] IMFMediaType* pIMediaType,[In] IMFASFStreamConfig** ppIStream)</unmanaged>\t\n            <unmanaged-short>IMFASFProfile::CreateStream</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFProfile.GetMutualExclusionCount(System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the number of Advanced Systems Format (ASF) mutual exclusion objects that are associated with the profile.</p>\t\n            </summary>\t\n            <param name=\"cMutexsRef\"><dd> <p>Receives the number of mutual exclusion objects.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>Multiple mutual exclusion objects may be required for streams that are mutually exclusive in more than one way. For more information, see <strong><see cref=\"M:SharpDX.MediaFoundation.ASFMutualExclusion.AddRecord(System.Int32)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFProfile::GetMutualExclusionCount']/*\"/>\t\n            <msdn-id>ms697361</msdn-id>\t\n            <unmanaged>HRESULT IMFASFProfile::GetMutualExclusionCount([In] unsigned int* pcMutexs)</unmanaged>\t\n            <unmanaged-short>IMFASFProfile::GetMutualExclusionCount</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFProfile.GetMutualExclusion(System.Int32,SharpDX.MediaFoundation.ASFMutualExclusion@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves an Advanced Systems Format (ASF) mutual exclusion object from the profile.</p>\t\n            </summary>\t\n            <param name=\"dwMutexIndex\"><dd> <p>Index of the mutual exclusion object in the profile.</p> </dd></param>\t\n            <param name=\"iMutexOut\"><dd> <p>Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.ASFMutualExclusion\"/></strong> interface of the ASF mutual exclusion object. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>This method does not create a copy of the mutual exclusion object. The returned reference refers to the mutual exclusion contained in the profile object. You must not make any changes to the mutual exclusion object using this reference, because doing so can affect the profile object in unexpected ways.</p><p>To change the configuration of the mutual exclusion object in the profile, you must first clone the mutual exclusion object by calling <strong><see cref=\"M:SharpDX.MediaFoundation.ASFMutualExclusion.Clone(SharpDX.MediaFoundation.ASFMutualExclusion@)\"/></strong>. Make whatever changes are required to the clone of the object, remove the old mutual exclusion object from the profile by calling the <strong><see cref=\"M:SharpDX.MediaFoundation.ASFProfile.RemoveMutualExclusion(System.Int32)\"/></strong> method, and then add the updated object by calling the <strong><see cref=\"M:SharpDX.MediaFoundation.ASFProfile.AddMutualExclusion(SharpDX.MediaFoundation.ASFMutualExclusion)\"/></strong> method.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFProfile::GetMutualExclusion']/*\"/>\t\n            <msdn-id>ms701598</msdn-id>\t\n            <unmanaged>HRESULT IMFASFProfile::GetMutualExclusion([In] unsigned int dwMutexIndex,[In] IMFASFMutualExclusion** ppIMutex)</unmanaged>\t\n            <unmanaged-short>IMFASFProfile::GetMutualExclusion</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFProfile.AddMutualExclusion(SharpDX.MediaFoundation.ASFMutualExclusion)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Adds a configured Advanced Systems Format (ASF) mutual exclusion object to the profile.</p>\t\n            </summary>\t\n            <param name=\"iMutexRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.ASFMutualExclusion\"/></strong> interface of a configured ASF mutual exclusion object.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>You can create a mutual exclusion object by calling the <strong><see cref=\"M:SharpDX.MediaFoundation.ASFProfile.CreateMutualExclusion(SharpDX.MediaFoundation.ASFMutualExclusion@)\"/></strong> method.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFProfile::AddMutualExclusion']/*\"/>\t\n            <msdn-id>ms703965</msdn-id>\t\n            <unmanaged>HRESULT IMFASFProfile::AddMutualExclusion([In] IMFASFMutualExclusion* pIMutex)</unmanaged>\t\n            <unmanaged-short>IMFASFProfile::AddMutualExclusion</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFProfile.RemoveMutualExclusion(System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Removes an Advanced Systems Format (ASF) mutual exclusion object from the profile.</p>\t\n            </summary>\t\n            <param name=\"dwMutexIndex\"><dd> <p>The index of the mutual exclusion object to remove from the profile.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>When a mutual exclusion object is removed from the profile, the ASF profile object reassigns the mutual exclusion indexes so that they are sequential starting with zero. Any previously stored indexes are no longer valid after calling this method.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFProfile::RemoveMutualExclusion']/*\"/>\t\n            <msdn-id>ms704007</msdn-id>\t\n            <unmanaged>HRESULT IMFASFProfile::RemoveMutualExclusion([In] unsigned int dwMutexIndex)</unmanaged>\t\n            <unmanaged-short>IMFASFProfile::RemoveMutualExclusion</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFProfile.CreateMutualExclusion(SharpDX.MediaFoundation.ASFMutualExclusion@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Creates a new Advanced Systems Format (ASF) mutual exclusion object. Mutual exclusion objects can be added to a profile by calling the <strong>AddMutualExclusion</strong> method.</p>\t\n            </summary>\t\n            <param name=\"iMutexOut\">No documentation.</param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>The ASF mutual exclusion object created by this method is not associated with the profile. Call <strong><see cref=\"M:SharpDX.MediaFoundation.ASFProfile.AddMutualExclusion(SharpDX.MediaFoundation.ASFMutualExclusion)\"/></strong> after configuring the object to make this association.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFProfile::CreateMutualExclusion']/*\"/>\t\n            <msdn-id>ms697002</msdn-id>\t\n            <unmanaged>HRESULT IMFASFProfile::CreateMutualExclusion([In] IMFASFMutualExclusion** ppIMutex)</unmanaged>\t\n            <unmanaged-short>IMFASFProfile::CreateMutualExclusion</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFProfile.GetStreamPrioritization(SharpDX.MediaFoundation.ASFStreamPrioritization@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p><strong>Note</strong>??This method is not supported.</p>\t\n            </summary>\t\n            <param name=\"iStreamPrioritizationOut\"><dd> <p>Reserved.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFProfile::GetStreamPrioritization']/*\"/>\t\n            <msdn-id>ms695410</msdn-id>\t\n            <unmanaged>HRESULT IMFASFProfile::GetStreamPrioritization([In] IMFASFStreamPrioritization** ppIStreamPrioritization)</unmanaged>\t\n            <unmanaged-short>IMFASFProfile::GetStreamPrioritization</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFProfile.AddStreamPrioritization(SharpDX.MediaFoundation.ASFStreamPrioritization)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p><strong>Note</strong>??This method is not supported.</p>\t\n            </summary>\t\n            <param name=\"iStreamPrioritizationRef\"><dd> <p>Reserved. </p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFProfile::AddStreamPrioritization']/*\"/>\t\n            <msdn-id>ms697516</msdn-id>\t\n            <unmanaged>HRESULT IMFASFProfile::AddStreamPrioritization([In] IMFASFStreamPrioritization* pIStreamPrioritization)</unmanaged>\t\n            <unmanaged-short>IMFASFProfile::AddStreamPrioritization</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFProfile.RemoveStreamPrioritization\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p><strong>Note</strong>??This method is not supported.</p>\t\n            </summary>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFProfile::RemoveStreamPrioritization']/*\"/>\t\n            <msdn-id>ms701838</msdn-id>\t\n            <unmanaged>HRESULT IMFASFProfile::RemoveStreamPrioritization()</unmanaged>\t\n            <unmanaged-short>IMFASFProfile::RemoveStreamPrioritization</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFProfile.CreateStreamPrioritization(SharpDX.MediaFoundation.ASFStreamPrioritization@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p><strong>Note</strong>??This method is not implemented.</p>\t\n            </summary>\t\n            <param name=\"iStreamPrioritizationOut\"><dd> <p>Reserved. </p> </dd></param>\t\n            <returns><p> Returns <strong>E_NOTIMPL</strong>. </p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFProfile::CreateStreamPrioritization']/*\"/>\t\n            <msdn-id>ms694914</msdn-id>\t\n            <unmanaged>HRESULT IMFASFProfile::CreateStreamPrioritization([In] IMFASFStreamPrioritization** ppIStreamPrioritization)</unmanaged>\t\n            <unmanaged-short>IMFASFProfile::CreateStreamPrioritization</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFProfile.Clone(SharpDX.MediaFoundation.ASFProfile@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Creates a copy of the Advanced Systems Format profile object.</p>\t\n            </summary>\t\n            <param name=\"iProfileOut\"><dd> <p>Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.ASFProfile\"/></strong> interface of the new object. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>The cloned object is completely independent of the original.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFProfile::Clone']/*\"/>\t\n            <msdn-id>ms704773</msdn-id>\t\n            <unmanaged>HRESULT IMFASFProfile::Clone([In] IMFASFProfile** ppIProfile)</unmanaged>\t\n            <unmanaged-short>IMFASFProfile::Clone</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.ASFProfile.Stream\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Adds a stream to the profile or reconfigures an existing stream.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>If the stream number in the ASF stream configuration object is already included in the profile, the information in the new object replaces the old one. If the profile does not contain a stream for the stream number, the ASF stream configuration object is added as a new stream.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFProfile::SetStream']/*\"/>\t\n            <msdn-id>ms703051</msdn-id>\t\n            <unmanaged>SetStream</unmanaged>\t\n            <unmanaged-short>SetStream</unmanaged-short>\t\n            <unmanaged>HRESULT IMFASFProfile::SetStream([In] IMFASFStreamConfig* pIStream)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.ASFProfile.StreamPrioritization\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p><strong>Note</strong>??This method is not supported.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFProfile::GetStreamPrioritization']/*\"/>\t\n            <msdn-id>ms695410</msdn-id>\t\n            <unmanaged>GetStreamPrioritization</unmanaged>\t\n            <unmanaged-short>GetStreamPrioritization</unmanaged-short>\t\n            <unmanaged>HRESULT IMFASFProfile::GetStreamPrioritization([In] IMFASFStreamPrioritization** ppIStreamPrioritization)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.ASFSplitter\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves a sample from the Advanced Systems Format (ASF) splitter after the data has been parsed.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Before calling this method, call <strong><see cref=\"M:SharpDX.MediaFoundation.ASFSplitter.ParseData(SharpDX.MediaFoundation.MediaBuffer,System.Int32,System.Int32)\"/></strong> to give input data to the splitter. If the input does not contain enough data for a complete sample, the <strong>GetNextSample</strong> method succeeds but returns <strong><c>null</c></strong> in the <em>ppISample</em> parameter.</p><p>The ASF splitter skips samples for unselected streams. To select streams, call <strong><see cref=\"M:SharpDX.MediaFoundation.ASFSplitter.SelectStreams(System.Int16,System.Int16)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFSplitter']/*\"/>\t\n            <msdn-id>ms700167</msdn-id>\t\n            <unmanaged>IMFASFSplitter</unmanaged>\t\n            <unmanaged-short>IMFASFSplitter</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFSplitter.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.ASFSplitter\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFSplitter.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.ASFSplitter\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.ASFSplitter\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFSplitter.Initialize(SharpDX.MediaFoundation.ASFContentInfo)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Resets the Advanced Systems Format (ASF) splitter and configures it to parse data from an ASF data section.</p>\t\n            </summary>\t\n            <param name=\"iContentInfoRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.ASFContentInfo\"/></strong> interface of a ContentInfo object that describes the data to be parsed.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong>E_INVALIDARG</strong></dt> </dl> </td><td> <p>The <em>pIContentInfo</em> parameter is <strong><c>null</c></strong>.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFSplitter::Initialize']/*\"/>\t\n            <msdn-id>ms704048</msdn-id>\t\n            <unmanaged>HRESULT IMFASFSplitter::Initialize([In] IMFASFContentInfo* pIContentInfo)</unmanaged>\t\n            <unmanaged-short>IMFASFSplitter::Initialize</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFSplitter.SetFlags(System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Sets option flags on the Advanced Systems Format (ASF) splitter.</p>\t\n            </summary>\t\n            <param name=\"dwFlags\"><dd> <p>A bitwise combination of zero or more members of the <strong><see cref=\"T:SharpDX.MediaFoundation.AsfSplitterflags\"/></strong> enumeration.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.NotInitializeD\"/></strong></dt> </dl> </td><td> <p>The splitter is not initialized.</p> </td></tr> <tr><td> <dl> <dt><strong>E_INVALIDARG</strong></dt> </dl> </td><td> <p>The <em>dwFlags</em> parameter does not contain a valid flag.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidRequest\"/></strong></dt> </dl> </td><td> <p>The <see cref=\"F:SharpDX.MediaFoundation.AsfSplitterflags.Reverse\"/> flag is set, but the content cannot be parsed in reverse.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>This method can only be called after the splitter is initialized.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFSplitter::SetFlags']/*\"/>\t\n            <msdn-id>ms697337</msdn-id>\t\n            <unmanaged>HRESULT IMFASFSplitter::SetFlags([In] unsigned int dwFlags)</unmanaged>\t\n            <unmanaged-short>IMFASFSplitter::SetFlags</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFSplitter.GetFlags(System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the option flags that are set on the ASF splitter.</p>\t\n            </summary>\t\n            <param name=\"dwFlagsRef\"><dd> <p>Receives the option flags. This value is a bitwise <strong>OR</strong> of zero or more members of the <strong><see cref=\"T:SharpDX.MediaFoundation.AsfSplitterflags\"/></strong> enumeration.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong>E_INVALIDARG</strong></dt> </dl> </td><td> <p><em>pdwFlags</em> is <strong><c>null</c></strong>.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFSplitter::GetFlags']/*\"/>\t\n            <msdn-id>ms702288</msdn-id>\t\n            <unmanaged>HRESULT IMFASFSplitter::GetFlags([In] unsigned int* pdwFlags)</unmanaged>\t\n            <unmanaged-short>IMFASFSplitter::GetFlags</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFSplitter.SelectStreams(System.Int16,System.Int16)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Sets the streams to be parsed by the Advanced Systems Format (ASF) splitter.</p>\t\n            </summary>\t\n            <param name=\"wStreamNumbersRef\"><dd> <p>An array of variables containing the list of stream numbers to select.</p> </dd></param>\t\n            <param name=\"wNumStreams\"><dd> <p>The number of valid elements in the stream number array.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong>E_INVALIDARG</strong></dt> </dl> </td><td> <p><em>pwStreamNumbers</em> is <strong><c>null</c></strong> and <em>wNumStreams</em> contains a value greater than zero.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidStreamNumber\"/></strong></dt> </dl> </td><td> <p>Invalid stream number was passed in the array.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>Calling this method supersedes any previous stream selections; only the streams specified in the <em>pwStreamNumbers</em> array will be selected.</p><p>By default, no streams are selected by the splitter.</p><p>You can obtain a list of the currently selected streams by calling the <strong><see cref=\"M:SharpDX.MediaFoundation.ASFSplitter.GetSelectedStreams(System.Int16,System.Int16)\"/></strong> method.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFSplitter::SelectStreams']/*\"/>\t\n            <msdn-id>ms701631</msdn-id>\t\n            <unmanaged>HRESULT IMFASFSplitter::SelectStreams([In] unsigned short* pwStreamNumbers,[In] unsigned short wNumStreams)</unmanaged>\t\n            <unmanaged-short>IMFASFSplitter::SelectStreams</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFSplitter.GetSelectedStreams(System.Int16,System.Int16)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Gets a list of currently selected streams. </p>\t\n            </summary>\t\n            <param name=\"wStreamNumbersRef\"><dd> <p> The address of an array of <strong>WORDs</strong>. This array receives the stream numbers of the selected streams. This parameter can be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"wNumStreamsRef\"><dd> <p>On input, points to a variable that contains the number of elements in the <em>pwStreamNumbers</em> array. Set the variable to zero if <em>pwStreamNumbers</em> is <strong><c>null</c></strong>. </p> <p>On output, receives the number of elements that were copied into <em>pwStreamNumbers</em>. Each element is the identifier of a selected stream.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded. </p> </td></tr> <tr><td> <dl> <dt><strong>E_INVALIDARG</strong></dt> </dl> </td><td> <p> Invalid argument. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.BufferTooSmall\"/></strong></dt> </dl> </td><td> <p> The <em>pwStreamNumbers</em> array is smaller than the number of selected streams. See Remarks.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>To get the number of selected streams, set <em>pwStreamNumbers</em> to <strong><c>null</c></strong>. The method will return <strong>MF_E_BUFFERTOSMALL</strong> but will also set the value of <code>*pwNumStreams</code> equal  to the number of selected streams. Then allocate an array of that size and call the method again, passing the array in the <em>pwStreamNumbers</em> parameter.</p><p>The following code shows these steps:</p><pre><see cref=\"T:SharpDX.Result\"/> DisplaySelectedStreams(<see cref=\"T:SharpDX.MediaFoundation.ASFSplitter\"/> *pSplitter)\t\n            { WORD count = 0; <see cref=\"T:SharpDX.Result\"/> hr = pSplitter-&gt;GetSelectedStreams(<c>null</c>, &amp;count); if (hr == <see cref=\"F:SharpDX.MediaFoundation.ResultCode.BufferTooSmall\"/>) { WORD *pStreamIds = new (std::nothrow) WORD[count]; if (pStreamIds) { hr = pSplitter-&gt;GetSelectedStreams(pStreamIds, &amp;count); if (SUCCEEDED(hr)) { for (WORD i = 0; i &lt; count; i++) { printf(\"Selected stream ID: %d\\n\", pStreamIds[i]); } } delete [] pStreamIds; } else { hr = E_OUTOFMEMORY; } } return hr;\t\n            }\t\n            </pre><p>Alternatively, you can allocate an array that is equal to the total number of streams and pass that to <em>pwStreamNumbers</em>.</p><p>Before calling this method, initialize <code>*pwNumStreams</code> to the number of elements in <em>pwStreamNumbers</em>. If <em>pwStreamNumbers</em> is <strong><c>null</c></strong>, set <code>*pwNumStreams</code> to zero.</p><p> By default, no streams are selected by the splitter. Select streams by calling the <strong><see cref=\"M:SharpDX.MediaFoundation.ASFSplitter.SelectStreams(System.Int16,System.Int16)\"/></strong> method. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFSplitter::GetSelectedStreams']/*\"/>\t\n            <msdn-id>ms705602</msdn-id>\t\n            <unmanaged>HRESULT IMFASFSplitter::GetSelectedStreams([In] unsigned short* pwStreamNumbers,[In] unsigned short* pwNumStreams)</unmanaged>\t\n            <unmanaged-short>IMFASFSplitter::GetSelectedStreams</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFSplitter.ParseData(SharpDX.MediaFoundation.MediaBuffer,System.Int32,System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Sends packetized Advanced Systems Format (ASF) data to the ASF splitter for processing.</p>\t\n            </summary>\t\n            <param name=\"iBufferRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaBuffer\"/></strong> interface of a buffer object containing data to be parsed.</p> </dd></param>\t\n            <param name=\"cbBufferOffset\"><dd> <p>The offset into the data buffer where the splitter should begin parsing. This value is typically set to 0.</p> </dd></param>\t\n            <param name=\"cbLength\"><dd> <p>The length, in bytes, of the data to parse. This value is measured from the offset specified by <em>cbBufferOffset</em>. Set to 0 to process to the end of the buffer.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong>E_INVALIDARG</strong></dt> </dl> </td><td> <p>The <em>pIBuffer</em> parameter is <strong><c>null</c></strong>.</p> <p>The specified offset value in <em>cbBufferOffset</em> is greater than the length of the buffer.</p> <p>The total value of <em>cbBufferOffset</em> and <em>cbLength</em> is greater than the length of the buffer.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.NotInitializeD\"/></strong></dt> </dl> </td><td> <p>The <strong><see cref=\"M:SharpDX.MediaFoundation.ASFSplitter.Initialize(SharpDX.MediaFoundation.ASFContentInfo)\"/></strong> method was not called or the call failed.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.NotAccepting\"/></strong></dt> </dl> </td><td> <p>The splitter cannot process more input at this time.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>After using this method to parse data, you must call <strong><see cref=\"M:SharpDX.MediaFoundation.ASFSplitter.GetNextSample(System.Int32,System.Int16,SharpDX.MediaFoundation.Sample@)\"/></strong> to retrieve parsed media samples.</p><p>If your ASF data contains variable-sized packets, you must set the <strong><see cref=\"F:SharpDX.MediaFoundation.AsfSplitterAttributeKeys.PacketBoundary\"/></strong> attribute on the buffers to indicate the sample boundaries, and the buffers cannot span multiple packets.</p><p>If the method returns ME_E_NOTACCEPTING, call <strong>GetNextSample</strong> to get the output samples, or call <strong><see cref=\"M:SharpDX.MediaFoundation.ASFSplitter.Flush\"/></strong> to clear the splitter.</p><p>The splitter might hold a reference count on the input buffer. Therefore, do not write over the valid data in the buffer after calling this method.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFSplitter::ParseData']/*\"/>\t\n            <msdn-id>ms694299</msdn-id>\t\n            <unmanaged>HRESULT IMFASFSplitter::ParseData([In] IMFMediaBuffer* pIBuffer,[In] unsigned int cbBufferOffset,[In] unsigned int cbLength)</unmanaged>\t\n            <unmanaged-short>IMFASFSplitter::ParseData</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFSplitter.GetNextSample(System.Int32,System.Int16,SharpDX.MediaFoundation.Sample@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves a sample from the Advanced Systems Format (ASF) splitter after the data has been parsed.</p>\t\n            </summary>\t\n            <param name=\"dwStatusFlagsRef\"><dd> <p>Receives one of the following values.</p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.AsfStatusflags.Incomplete\"/></strong></dt> </dl> </td><td> <p>More samples are ready to be retrieved. Call <strong>GetNextSample</strong> in a loop until the <em>pdwStatusFlags</em> parameter receives the value zero.</p> </td></tr> <tr><td><dl> <dt><strong>Zero</strong></dt> </dl> </td><td> <p>No additional samples are ready. Call <strong><see cref=\"M:SharpDX.MediaFoundation.ASFSplitter.ParseData(SharpDX.MediaFoundation.MediaBuffer,System.Int32,System.Int32)\"/></strong> to give more input data to the splitter.</p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <param name=\"wStreamNumberRef\"><dd> <p>If the method returns a sample in the <em>ppISample</em> parameter, this parameter receives the number of the stream to which the sample belongs.</p> </dd></param>\t\n            <param name=\"iSampleOut\"><dd> <p>Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.Sample\"/></strong> interface of the parsed sample. The caller must release the interface. If no samples are ready, this parameter receives the value <strong><c>null</c></strong>.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.AsfInvalidData\"/></strong></dt> </dl> </td><td> <p>The ASF data in the buffer is invalid.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.AsfMissingData\"/></strong></dt> </dl> </td><td> <p>There is a gap in the ASF data.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>Before calling this method, call <strong><see cref=\"M:SharpDX.MediaFoundation.ASFSplitter.ParseData(SharpDX.MediaFoundation.MediaBuffer,System.Int32,System.Int32)\"/></strong> to give input data to the splitter. If the input does not contain enough data for a complete sample, the <strong>GetNextSample</strong> method succeeds but returns <strong><c>null</c></strong> in the <em>ppISample</em> parameter.</p><p>The ASF splitter skips samples for unselected streams. To select streams, call <strong><see cref=\"M:SharpDX.MediaFoundation.ASFSplitter.SelectStreams(System.Int16,System.Int16)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFSplitter::GetNextSample']/*\"/>\t\n            <msdn-id>ms700167</msdn-id>\t\n            <unmanaged>HRESULT IMFASFSplitter::GetNextSample([In] unsigned int* pdwStatusFlags,[In] unsigned short* pwStreamNumber,[In] IMFSample** ppISample)</unmanaged>\t\n            <unmanaged-short>IMFASFSplitter::GetNextSample</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFSplitter.Flush\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Resets the Advanced Systems Format (ASF) splitter and releases all pending samples.</p>\t\n            </summary>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>Any samples waiting to be retrieved when <strong>Flush</strong> is called are lost.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFSplitter::Flush']/*\"/>\t\n            <msdn-id>ms703013</msdn-id>\t\n            <unmanaged>HRESULT IMFASFSplitter::Flush()</unmanaged>\t\n            <unmanaged-short>IMFASFSplitter::Flush</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFSplitter.GetLastSendTime(System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the send time of the last sample received.</p>\t\n            </summary>\t\n            <param name=\"dwLastSendTimeRef\"><dd> <p>Receives the send time of the last sample received.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong>E_INVALIDARG</strong></dt> </dl> </td><td> <p><em>pdwLastSendTime</em> is <strong><c>null</c></strong>.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFSplitter::GetLastSendTime']/*\"/>\t\n            <msdn-id>ms697272</msdn-id>\t\n            <unmanaged>HRESULT IMFASFSplitter::GetLastSendTime([In] unsigned int* pdwLastSendTime)</unmanaged>\t\n            <unmanaged-short>IMFASFSplitter::GetLastSendTime</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.ASFStreamConfig\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Configures the settings of a stream in an ASF file. The ASF stream configuration object exposes this interface. To obtain a reference to this interface, call the <strong><see cref=\"M:SharpDX.MediaFoundation.ASFProfile.CreateStream(SharpDX.MediaFoundation.MediaType,SharpDX.MediaFoundation.ASFStreamConfig@)\"/></strong> method.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFStreamConfig']/*\"/>\t\n            <msdn-id>ms699010</msdn-id>\t\n            <unmanaged>IMFASFStreamConfig</unmanaged>\t\n            <unmanaged-short>IMFASFStreamConfig</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFStreamConfig.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.ASFStreamConfig\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFStreamConfig.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.ASFStreamConfig\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.ASFStreamConfig\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFStreamConfig.GetStreamType(System.Guid)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Gets the major media type of the stream. </p>\t\n            </summary>\t\n            <param name=\"guidStreamTypeRef\"><dd> <p>Receives the major media type for the stream. For a list of possible values, see Major Media Types. </p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFStreamConfig::GetStreamType']/*\"/>\t\n            <msdn-id>ms697390</msdn-id>\t\n            <unmanaged>HRESULT IMFASFStreamConfig::GetStreamType([In] GUID* pguidStreamType)</unmanaged>\t\n            <unmanaged-short>IMFASFStreamConfig::GetStreamType</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFStreamConfig.GetStreamNumber\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the stream number of the stream.</p>\t\n            </summary>\t\n            <returns><p>The method returns the  stream number.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFStreamConfig::GetStreamNumber']/*\"/>\t\n            <msdn-id>ms703172</msdn-id>\t\n            <unmanaged>unsigned short IMFASFStreamConfig::GetStreamNumber()</unmanaged>\t\n            <unmanaged-short>IMFASFStreamConfig::GetStreamNumber</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFStreamConfig.SetStreamNumber(System.Int16)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Assigns a stream number to the stream.</p>\t\n            </summary>\t\n            <param name=\"wStreamNum\"><dd> <p>The number to assign to the stream.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>Stream numbers start from 1 and do not need to be sequential.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFStreamConfig::SetStreamNumber']/*\"/>\t\n            <msdn-id>ms697298</msdn-id>\t\n            <unmanaged>HRESULT IMFASFStreamConfig::SetStreamNumber([In] unsigned short wStreamNum)</unmanaged>\t\n            <unmanaged-short>IMFASFStreamConfig::SetStreamNumber</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFStreamConfig.GetMediaType(SharpDX.MediaFoundation.MediaType@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the media type of the stream.</p>\t\n            </summary>\t\n            <param name=\"iMediaTypeOut\"><dd> <p>Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaType\"/></strong> interface of the media type object associated with the stream. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>To reduce unnecessary copying, the method returns a reference to the media type  that is stored internally by the object. Do not modify the returned media type,  as the results are not defined.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFStreamConfig::GetMediaType']/*\"/>\t\n            <msdn-id>ms697489</msdn-id>\t\n            <unmanaged>HRESULT IMFASFStreamConfig::GetMediaType([In] IMFMediaType** ppIMediaType)</unmanaged>\t\n            <unmanaged-short>IMFASFStreamConfig::GetMediaType</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFStreamConfig.SetMediaType(SharpDX.MediaFoundation.MediaType)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Sets the media type for the Advanced Systems Format (ASF) stream configuration object.</p>\t\n            </summary>\t\n            <param name=\"iMediaTypeRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaType\"/></strong> interface of a configured media type object.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>Some validation of the media type is performed by this method. However, a media type can be successfully set, but cause an error when the stream is added to the profile.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFStreamConfig::SetMediaType']/*\"/>\t\n            <msdn-id>ms697185</msdn-id>\t\n            <unmanaged>HRESULT IMFASFStreamConfig::SetMediaType([In] IMFMediaType* pIMediaType)</unmanaged>\t\n            <unmanaged-short>IMFASFStreamConfig::SetMediaType</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFStreamConfig.GetPayloadExtensionCount(System.Int16)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the number of payload extensions that are configured for the stream.</p>\t\n            </summary>\t\n            <param name=\"cPayloadExtensionsRef\"><dd> <p>Receives the number of payload extensions.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFStreamConfig::GetPayloadExtensionCount']/*\"/>\t\n            <msdn-id>ms696251</msdn-id>\t\n            <unmanaged>HRESULT IMFASFStreamConfig::GetPayloadExtensionCount([In] unsigned short* pcPayloadExtensions)</unmanaged>\t\n            <unmanaged-short>IMFASFStreamConfig::GetPayloadExtensionCount</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFStreamConfig.GetPayloadExtension(System.Int16,System.Guid,System.Int16,System.Byte,System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves information about an existing payload extension.</p>\t\n            </summary>\t\n            <param name=\"wPayloadExtensionNumber\"><dd> <p>The payload extension index. Valid indexes range from 0, to one less than the number of extensions obtained by calling <strong><see cref=\"M:SharpDX.MediaFoundation.ASFStreamConfig.GetPayloadExtensionCount(System.Int16)\"/></strong>.</p> </dd></param>\t\n            <param name=\"guidExtensionSystemIDRef\"><dd> <p>Receives a <see cref=\"T:System.Guid\"/> that identifies the payload extension. For a list of predefined payload extensions, see ASF Payload Extension GUIDs. Applications can also define custom payload extensions.</p> </dd></param>\t\n            <param name=\"cbExtensionDataSizeRef\"><dd> <p>Receives the number of bytes added to each sample for the extension.</p> </dd></param>\t\n            <param name=\"bExtensionSystemInfoRef\"><dd> <p>Pointer to a buffer that receives information about this extension system. This information is the same for all samples and is stored in the content header (not in each sample). This parameter can be <strong><c>null</c></strong>. To find the required size of the buffer, set this parameter to <strong><c>null</c></strong>; the size is returned in <em>pcbExtensionSystemInfo</em>.</p> </dd></param>\t\n            <param name=\"cbExtensionSystemInfoRef\"><dd> <p>On input, specifies the size of the buffer pointed to by <em>pbExtensionSystemInfo</em>. On output, receives the required size of the <em>pbExtensionSystemInfo</em> buffer in bytes.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong>E_INVALIDARG</strong></dt> </dl> </td><td> <p>Invalid argument.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.BufferTooSmall\"/></strong></dt> </dl> </td><td> <p>The buffer specified in <em>pbExtensionSystemInfo</em> is too small.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidIndex\"/></strong></dt> </dl> </td><td> <p>The <em>wPayloadExtensionNumber</em> parameter is out of range.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFStreamConfig::GetPayloadExtension']/*\"/>\t\n            <msdn-id>ms697305</msdn-id>\t\n            <unmanaged>HRESULT IMFASFStreamConfig::GetPayloadExtension([In] unsigned short wPayloadExtensionNumber,[In] GUID* pguidExtensionSystemID,[In] unsigned short* pcbExtensionDataSize,[In] unsigned char* pbExtensionSystemInfo,[In] unsigned int* pcbExtensionSystemInfo)</unmanaged>\t\n            <unmanaged-short>IMFASFStreamConfig::GetPayloadExtension</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFStreamConfig.AddPayloadExtension(System.Guid,System.Int16,System.Byte,System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Configures a payload extension for the stream.</p>\t\n            </summary>\t\n            <param name=\"guidExtensionSystemID\"><dd> <p>Pointer to a <see cref=\"T:System.Guid\"/> that identifies the payload extension. For a list of predefined payload extensions, see ASF Payload Extension GUIDs. Applications can also define custom payload extensions.</p> </dd></param>\t\n            <param name=\"cbExtensionDataSize\"><dd> <p>Number of bytes added to each sample for the extension.</p> </dd></param>\t\n            <param name=\"bExtensionSystemInfoRef\"><dd> <p>A reference to a buffer that contains information about this extension system. This information is the same for all samples and is stored in the content header (not with each sample). This parameter can be <strong><c>null</c></strong> if <em>cbExtensionSystemInfo</em> is 0.</p> </dd></param>\t\n            <param name=\"cbExtensionSystemInfo\"><dd> <p>Amount of data, in bytes, that describes this extension system. If this value is 0, then <em>pbExtensionSystemInfo</em> can be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFStreamConfig::AddPayloadExtension']/*\"/>\t\n            <msdn-id>ms697229</msdn-id>\t\n            <unmanaged>HRESULT IMFASFStreamConfig::AddPayloadExtension([In] GUID guidExtensionSystemID,[In] unsigned short cbExtensionDataSize,[In] unsigned char* pbExtensionSystemInfo,[In] unsigned int cbExtensionSystemInfo)</unmanaged>\t\n            <unmanaged-short>IMFASFStreamConfig::AddPayloadExtension</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFStreamConfig.RemoveAllPayloadExtensions\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Removes all payload extensions that are configured for the stream.</p>\t\n            </summary>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>None.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFStreamConfig::RemoveAllPayloadExtensions']/*\"/>\t\n            <msdn-id>ms699009</msdn-id>\t\n            <unmanaged>HRESULT IMFASFStreamConfig::RemoveAllPayloadExtensions()</unmanaged>\t\n            <unmanaged-short>IMFASFStreamConfig::RemoveAllPayloadExtensions</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFStreamConfig.Clone(SharpDX.MediaFoundation.ASFStreamConfig@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Creates a copy of the Advanced Systems Format (ASF) stream configuration object.</p>\t\n            </summary>\t\n            <param name=\"iStreamConfigOut\"><dd> <p>Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.ASFStreamConfig\"/></strong> interface of the new object. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>The cloned object is completely independent of the original.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFStreamConfig::Clone']/*\"/>\t\n            <msdn-id>ms703117</msdn-id>\t\n            <unmanaged>HRESULT IMFASFStreamConfig::Clone([In] IMFASFStreamConfig** ppIStreamConfig)</unmanaged>\t\n            <unmanaged-short>IMFASFStreamConfig::Clone</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.ASFStreamConfig.StreamNumber\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the stream number of the stream.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFStreamConfig::GetStreamNumber']/*\"/>\t\n            <msdn-id>ms703172</msdn-id>\t\n            <unmanaged>GetStreamNumber / SetStreamNumber</unmanaged>\t\n            <unmanaged-short>GetStreamNumber</unmanaged-short>\t\n            <unmanaged>unsigned short IMFASFStreamConfig::GetStreamNumber()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.ASFStreamConfig.MediaType\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the media type of the stream.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>To reduce unnecessary copying, the method returns a reference to the media type  that is stored internally by the object. Do not modify the returned media type,  as the results are not defined.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFStreamConfig::GetMediaType']/*\"/>\t\n            <msdn-id>ms697489</msdn-id>\t\n            <unmanaged>GetMediaType / SetMediaType</unmanaged>\t\n            <unmanaged-short>GetMediaType</unmanaged-short>\t\n            <unmanaged>HRESULT IMFASFStreamConfig::GetMediaType([In] IMFMediaType** ppIMediaType)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.ASFStreamPrioritization\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Note</strong>??This interface is not implemented in this version of Media Foundation.</p><p>Retrieves the stream number of a stream in the stream priority list.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFStreamPrioritization']/*\"/>\t\n            <msdn-id>ms697005</msdn-id>\t\n            <unmanaged>IMFASFStreamPrioritization</unmanaged>\t\n            <unmanaged-short>IMFASFStreamPrioritization</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFStreamPrioritization.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.ASFStreamPrioritization\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFStreamPrioritization.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.ASFStreamPrioritization\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.ASFStreamPrioritization\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFStreamPrioritization.GetStreamCount(System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Note</strong>??This interface is not implemented in this version of Media Foundation.</p><p>Retrieves the number of entries in the stream priority list.</p>\t\n            </summary>\t\n            <param name=\"dwStreamCountRef\"><dd> <p>Receives the number of streams in the stream priority list.</p> </dd></param>\t\n            <returns><p>The method returns an <see cref=\"T:SharpDX.Result\"/>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFStreamPrioritization::GetStreamCount']/*\"/>\t\n            <msdn-id>bb970449</msdn-id>\t\n            <unmanaged>HRESULT IMFASFStreamPrioritization::GetStreamCount([In] unsigned int* pdwStreamCount)</unmanaged>\t\n            <unmanaged-short>IMFASFStreamPrioritization::GetStreamCount</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFStreamPrioritization.GetStream(System.Int32,System.Int16,System.Int16)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Note</strong>??This interface is not implemented in this version of Media Foundation.</p><p>Retrieves the stream number of a stream in the stream priority list.</p>\t\n            </summary>\t\n            <param name=\"dwStreamIndex\"><dd> <p>Zero-based index of the entry to retrieve from the stream priority list. To get the number of entries in the priority list, call <strong><see cref=\"M:SharpDX.MediaFoundation.ASFStreamPrioritization.GetStreamCount(System.Int32)\"/></strong>.</p> </dd></param>\t\n            <param name=\"wStreamNumberRef\"><dd> <p>Receives the stream number of the stream priority entry.</p> </dd></param>\t\n            <param name=\"wStreamFlagsRef\"><dd> <p>Receives a Boolean value. If <strong>TRUE</strong>, the stream is mandatory.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong>E_INVALIDARG</strong></dt> </dl> </td><td> <p><strong><c>null</c></strong> reference argument or the <em>dwStreamIndex</em> parameter is out of range.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFStreamPrioritization::GetStream']/*\"/>\t\n            <msdn-id>ms697005</msdn-id>\t\n            <unmanaged>HRESULT IMFASFStreamPrioritization::GetStream([In] unsigned int dwStreamIndex,[In] unsigned short* pwStreamNumber,[In] unsigned short* pwStreamFlags)</unmanaged>\t\n            <unmanaged-short>IMFASFStreamPrioritization::GetStream</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFStreamPrioritization.AddStream(System.Int16,System.Int16)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Note</strong>??This interface is not implemented in this version of Media Foundation.</p><p>Adds a stream to the stream priority list.</p>\t\n            </summary>\t\n            <param name=\"wStreamNumber\"><dd> <p>Stream number of the stream to add.</p> </dd></param>\t\n            <param name=\"wStreamFlags\"><dd> <p>If <strong>TRUE</strong>, the stream is mandatory.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidRequest\"/></strong></dt> </dl> </td><td> <p>Invalid stream number.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>The stream priority list is built by appending entries to the list with each call to <strong>AddStream</strong>. The list is evaluated in descending order of importance. The most important stream should be added first, and the least important should be added last.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFStreamPrioritization::AddStream']/*\"/>\t\n            <msdn-id>ms696987</msdn-id>\t\n            <unmanaged>HRESULT IMFASFStreamPrioritization::AddStream([In] unsigned short wStreamNumber,[In] unsigned short wStreamFlags)</unmanaged>\t\n            <unmanaged-short>IMFASFStreamPrioritization::AddStream</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFStreamPrioritization.RemoveStream(System.Int32)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"dwStreamIndex\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFStreamPrioritization::RemoveStream']/*\"/>\t\n            <unmanaged>HRESULT IMFASFStreamPrioritization::RemoveStream([In] unsigned int dwStreamIndex)</unmanaged>\t\n            <unmanaged-short>IMFASFStreamPrioritization::RemoveStream</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFStreamPrioritization.Clone(SharpDX.MediaFoundation.ASFStreamPrioritization@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Note</strong>??This interface is not implemented in this version of Media Foundation.</p><p>Creates a copy of the ASF stream prioritization object.</p>\t\n            </summary>\t\n            <param name=\"iStreamPrioritizationOut\"><dd> <p>Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.ASFStreamPrioritization\"/></strong> interface of the new object. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>The new object is completely independent of the original.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFStreamPrioritization::Clone']/*\"/>\t\n            <msdn-id>ms704679</msdn-id>\t\n            <unmanaged>HRESULT IMFASFStreamPrioritization::Clone([In] IMFASFStreamPrioritization** ppIStreamPrioritization)</unmanaged>\t\n            <unmanaged-short>IMFASFStreamPrioritization::Clone</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.ASFStreamSelector\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Selects streams in an Advanced Systems Format (ASF) file, based on the mutual exclusion information in the ASF header. The ASF stream selector object exposes this interface. To create the ASF stream selector, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateASFStreamSelector(SharpDX.MediaFoundation.ASFProfile,SharpDX.MediaFoundation.ASFStreamSelector@)\"/></strong>.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFStreamSelector']/*\"/>\t\n            <msdn-id>ms703857</msdn-id>\t\n            <unmanaged>IMFASFStreamSelector</unmanaged>\t\n            <unmanaged-short>IMFASFStreamSelector</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFStreamSelector.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.ASFStreamSelector\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFStreamSelector.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.ASFStreamSelector\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.ASFStreamSelector\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFStreamSelector.GetStreamCount(System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the number of streams that are in the Advanced Systems Format (ASF) content.</p>\t\n            </summary>\t\n            <param name=\"cStreamsRef\"><dd> <p>Receives the number of streams in the content.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFStreamSelector::GetStreamCount']/*\"/>\t\n            <msdn-id>ms704621</msdn-id>\t\n            <unmanaged>HRESULT IMFASFStreamSelector::GetStreamCount([In] unsigned int* pcStreams)</unmanaged>\t\n            <unmanaged-short>IMFASFStreamSelector::GetStreamCount</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFStreamSelector.GetOutputCount(System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the number of outputs for the Advanced Systems Format (ASF) content.</p>\t\n            </summary>\t\n            <param name=\"cOutputsRef\"><dd> <p>Receives the number of outputs.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>Outputs are streams in the ASF data section that will be parsed.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFStreamSelector::GetOutputCount']/*\"/>\t\n            <msdn-id>ms694076</msdn-id>\t\n            <unmanaged>HRESULT IMFASFStreamSelector::GetOutputCount([In] unsigned int* pcOutputs)</unmanaged>\t\n            <unmanaged-short>IMFASFStreamSelector::GetOutputCount</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFStreamSelector.GetOutputStreamCount(System.Int32,System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the number of streams associated with an output.</p>\t\n            </summary>\t\n            <param name=\"dwOutputNum\"><dd> <p>The output number for which to retrieve the stream count.</p> </dd></param>\t\n            <param name=\"cStreamsRef\"><dd> <p>Receives the number of streams associated with the output.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidRequest\"/></strong></dt> </dl> </td><td> <p>Invalid output number.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>An output is a stream in an ASF data section that will be parsed. If mutual exclusion is used, mutually exclusive streams share the same output.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFStreamSelector::GetOutputStreamCount']/*\"/>\t\n            <msdn-id>ms700815</msdn-id>\t\n            <unmanaged>HRESULT IMFASFStreamSelector::GetOutputStreamCount([In] unsigned int dwOutputNum,[In] unsigned int* pcStreams)</unmanaged>\t\n            <unmanaged-short>IMFASFStreamSelector::GetOutputStreamCount</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFStreamSelector.GetOutputStreamNumbers(System.Int32,System.Int16)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the stream numbers for all of the streams that are associated with an output.</p>\t\n            </summary>\t\n            <param name=\"dwOutputNum\"><dd> <p>The output number for which to retrieve stream numbers.</p> </dd></param>\t\n            <param name=\"rgwStreamNumbers\"><dd> <p>Address of an array that receives the stream numbers associated with the output. The caller allocates the array. The array size must be at least as large as the value returned by the <strong><see cref=\"M:SharpDX.MediaFoundation.ASFStreamSelector.GetOutputStreamCount(System.Int32,System.Int32)\"/></strong> method.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidRequest\"/></strong></dt> </dl> </td><td> <p>Invalid output number.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>An output is a stream in an ASF data section that will be parsed. If mutual exclusion is used, mutually exclusive streams share the same output.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFStreamSelector::GetOutputStreamNumbers']/*\"/>\t\n            <msdn-id>ms697025</msdn-id>\t\n            <unmanaged>HRESULT IMFASFStreamSelector::GetOutputStreamNumbers([In] unsigned int dwOutputNum,[In] unsigned short* rgwStreamNumbers)</unmanaged>\t\n            <unmanaged-short>IMFASFStreamSelector::GetOutputStreamNumbers</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFStreamSelector.GetOutputFromStream(System.Int16,System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the output number associated with a stream.</p>\t\n            </summary>\t\n            <param name=\"wStreamNum\"><dd> <p>The stream number for which to retrieve an output number.</p> </dd></param>\t\n            <param name=\"dwOutputRef\"><dd> <p>Receives the output number.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidRequest\"/></strong></dt> </dl> </td><td> <p>Invalid stream number.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>Outputs are streams in the ASF data section that will be parsed.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFStreamSelector::GetOutputFromStream']/*\"/>\t\n            <msdn-id>ms701979</msdn-id>\t\n            <unmanaged>HRESULT IMFASFStreamSelector::GetOutputFromStream([In] unsigned short wStreamNum,[In] unsigned int* pdwOutput)</unmanaged>\t\n            <unmanaged-short>IMFASFStreamSelector::GetOutputFromStream</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFStreamSelector.GetOutputOverride(System.Int32,SharpDX.MediaFoundation.AsfSelectionStatus)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the manual output override selection that is set for a stream.</p>\t\n            </summary>\t\n            <param name=\"dwOutputNum\"><dd> <p>Stream number for which to retrieve the output override selection.</p> </dd></param>\t\n            <param name=\"selectionRef\"><dd> <p>Receives the output override selection. The value is a member of the <strong><see cref=\"T:SharpDX.MediaFoundation.AsfSelectionStatus\"/></strong> enumeration.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFStreamSelector::GetOutputOverride']/*\"/>\t\n            <msdn-id>ms697510</msdn-id>\t\n            <unmanaged>HRESULT IMFASFStreamSelector::GetOutputOverride([In] unsigned int dwOutputNum,[In] ASF_SELECTION_STATUS* pSelection)</unmanaged>\t\n            <unmanaged-short>IMFASFStreamSelector::GetOutputOverride</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFStreamSelector.SetOutputOverride(System.Int32,SharpDX.MediaFoundation.AsfSelectionStatus)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Sets the selection status of an output, overriding other selection criteria.</p>\t\n            </summary>\t\n            <param name=\"dwOutputNum\"><dd> <p>Output number for which to set selection.</p> </dd></param>\t\n            <param name=\"selection\"><dd> <p>Member of the <strong><see cref=\"T:SharpDX.MediaFoundation.AsfSelectionStatus\"/></strong> enumeration specifying the level of selection for the output.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFStreamSelector::SetOutputOverride']/*\"/>\t\n            <msdn-id>ms703122</msdn-id>\t\n            <unmanaged>HRESULT IMFASFStreamSelector::SetOutputOverride([In] unsigned int dwOutputNum,[In] ASF_SELECTION_STATUS Selection)</unmanaged>\t\n            <unmanaged-short>IMFASFStreamSelector::SetOutputOverride</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFStreamSelector.GetOutputMutexCount(System.Int32,System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the number of mutual exclusion objects associated with an output.</p>\t\n            </summary>\t\n            <param name=\"dwOutputNum\"><dd> <p>Output number for which to retrieve the count of mutually exclusive relationships.</p> </dd></param>\t\n            <param name=\"cMutexesRef\"><dd> <p>Receives the number of mutual exclusions.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFStreamSelector::GetOutputMutexCount']/*\"/>\t\n            <msdn-id>ms703918</msdn-id>\t\n            <unmanaged>HRESULT IMFASFStreamSelector::GetOutputMutexCount([In] unsigned int dwOutputNum,[In] unsigned int* pcMutexes)</unmanaged>\t\n            <unmanaged-short>IMFASFStreamSelector::GetOutputMutexCount</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFStreamSelector.GetOutputMutex(System.Int32,System.Int32,SharpDX.ComObject@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves a mutual exclusion object for an output.</p>\t\n            </summary>\t\n            <param name=\"dwOutputNum\"><dd> <p>Output number for which to retrieve a mutual exclusion object.</p> </dd></param>\t\n            <param name=\"dwMutexNum\"><dd> <p>Mutual exclusion number. This is an index of mutually exclusive relationships associated with the output. Set to a number between 0, and 1 less than the number of mutual exclusion objects retrieved by calling <strong><see cref=\"M:SharpDX.MediaFoundation.ASFStreamSelector.GetOutputMutexCount(System.Int32,System.Int32)\"/></strong>.</p> </dd></param>\t\n            <param name=\"mutexOut\"><dd> <p>Receives a reference to the mutual exclusion object's <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interface. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>Outputs are streams in the ASF data section that will be parsed.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFStreamSelector::GetOutputMutex']/*\"/>\t\n            <msdn-id>ms703819</msdn-id>\t\n            <unmanaged>HRESULT IMFASFStreamSelector::GetOutputMutex([In] unsigned int dwOutputNum,[In] unsigned int dwMutexNum,[In] IUnknown** ppMutex)</unmanaged>\t\n            <unmanaged-short>IMFASFStreamSelector::GetOutputMutex</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFStreamSelector.SetOutputMutexSelection(System.Int32,System.Int32,System.Int16)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Selects a mutual exclusion record to use for a mutual exclusion object associated with an output.</p>\t\n            </summary>\t\n            <param name=\"dwOutputNum\"><dd> <p>The output number for which to set a stream.</p> </dd></param>\t\n            <param name=\"dwMutexNum\"><dd> <p>Index of the mutual exclusion for which to select.</p> </dd></param>\t\n            <param name=\"wSelectedRecord\"><dd> <p>Record of the specified mutual exclusion to select.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>An output is a stream in an Advanced Systems Format (ASF) data section that will be parsed. If mutual exclusion is used, mutually exclusive streams share the same output.</p><p>An ASF file can contain multiple mutually exclusive relationships, such as a file with both language based and bit-rate based mutual exclusion. If an output is involved in multiple mutually exclusive relationships, a record from each must be selected.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFStreamSelector::SetOutputMutexSelection']/*\"/>\t\n            <msdn-id>ms704822</msdn-id>\t\n            <unmanaged>HRESULT IMFASFStreamSelector::SetOutputMutexSelection([In] unsigned int dwOutputNum,[In] unsigned int dwMutexNum,[In] unsigned short wSelectedRecord)</unmanaged>\t\n            <unmanaged-short>IMFASFStreamSelector::SetOutputMutexSelection</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFStreamSelector.GetBandwidthStepCount(System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the number of bandwidth steps that exist for the content. This method is used for multiple bit rate (MBR) content.</p>\t\n            </summary>\t\n            <param name=\"cStepCountRef\"><dd> <p>Receives the number of bandwidth steps.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>Bandwidth steps are bandwidth levels used for multiple bit rate (MBR) content. If you stream MBR content, you can choose the bandwidth step that matches the network conditions to avoid interruptions during playback.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFStreamSelector::GetBandwidthStepCount']/*\"/>\t\n            <msdn-id>ms698868</msdn-id>\t\n            <unmanaged>HRESULT IMFASFStreamSelector::GetBandwidthStepCount([In] unsigned int* pcStepCount)</unmanaged>\t\n            <unmanaged-short>IMFASFStreamSelector::GetBandwidthStepCount</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFStreamSelector.GetBandwidthStep(System.Int32,System.Int32,System.Int16,SharpDX.MediaFoundation.AsfSelectionStatus)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the stream numbers that apply to a bandwidth step. This method is used for multiple bit rate (MBR) content.</p>\t\n            </summary>\t\n            <param name=\"dwStepNum\"><dd> <p>Bandwidth step number for which to retrieve information. Set this value to a number between 0, and 1 less than the number of bandwidth steps returned by <strong><see cref=\"M:SharpDX.MediaFoundation.ASFStreamSelector.GetBandwidthStepCount(System.Int32)\"/></strong>.</p> </dd></param>\t\n            <param name=\"dwBitrateRef\"><dd> <p>Receives the bit rate associated with the bandwidth step.</p> </dd></param>\t\n            <param name=\"rgwStreamNumbers\"><dd> <p>Address of an array that receives the stream numbers. The caller allocates the array. The array size must be at least as large as the value returned by the <strong><see cref=\"M:SharpDX.MediaFoundation.ASFStreamSelector.GetStreamCount(System.Int32)\"/></strong> method.</p> </dd></param>\t\n            <param name=\"rgSelections\"><dd> <p>Address of an array that receives the selection status of each stream, as an <strong><see cref=\"T:SharpDX.MediaFoundation.AsfSelectionStatus\"/></strong> value. The members of this array correspond to the members of the <em>rgwStreamNumbers</em> array by index. The caller allocates the array. The array size must be at least as large as the value returned by the <strong><see cref=\"M:SharpDX.MediaFoundation.ASFStreamSelector.GetStreamCount(System.Int32)\"/></strong> method.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>Bandwidth steps are bandwidth levels used for MBR content. If you stream MBR content, you can choose the bandwidth step that matches the network conditions to avoid interruptions during playback.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFStreamSelector::GetBandwidthStep']/*\"/>\t\n            <msdn-id>ms700131</msdn-id>\t\n            <unmanaged>HRESULT IMFASFStreamSelector::GetBandwidthStep([In] unsigned int dwStepNum,[In] unsigned int* pdwBitrate,[In] unsigned short* rgwStreamNumbers,[In] ASF_SELECTION_STATUS* rgSelections)</unmanaged>\t\n            <unmanaged-short>IMFASFStreamSelector::GetBandwidthStep</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFStreamSelector.BitrateToStepNumber(System.Int32,System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the index of a bandwidth step that is appropriate for a specified bit rate. This method is used for multiple bit rate (MBR) content.</p>\t\n            </summary>\t\n            <param name=\"dwBitrate\"><dd> <p>The bit rate to find a bandwidth step for.</p> </dd></param>\t\n            <param name=\"dwStepNumRef\"><dd> <p>Receives the step number. Use this number to retrieve information about the step by calling <strong><see cref=\"M:SharpDX.MediaFoundation.ASFStreamSelector.GetBandwidthStep(System.Int32,System.Int32,System.Int16,SharpDX.MediaFoundation.AsfSelectionStatus)\"/></strong>.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>In a streaming multiple bit rate (MBR) scenario, call this method with the current data rate of the network connection to determine the correct step to use. You can also call this method periodically throughout streaming to ensure that the best step is used.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFStreamSelector::BitrateToStepNumber']/*\"/>\t\n            <msdn-id>ms704645</msdn-id>\t\n            <unmanaged>HRESULT IMFASFStreamSelector::BitrateToStepNumber([In] unsigned int dwBitrate,[In] unsigned int* pdwStepNum)</unmanaged>\t\n            <unmanaged-short>IMFASFStreamSelector::BitrateToStepNumber</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ASFStreamSelector.SetStreamSelectorFlags(System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Sets options for the stream selector.</p>\t\n            </summary>\t\n            <param name=\"dwStreamSelectorFlags\"><dd> <p>Bitwise <strong>OR</strong> of zero or more members of the <strong>MFASF_STREAMSELECTOR_FLAGS</strong> enumeration specifying the options to use.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFStreamSelector::SetStreamSelectorFlags']/*\"/>\t\n            <msdn-id>ms701635</msdn-id>\t\n            <unmanaged>HRESULT IMFASFStreamSelector::SetStreamSelectorFlags([In] unsigned int dwStreamSelectorFlags)</unmanaged>\t\n            <unmanaged-short>IMFASFStreamSelector::SetStreamSelectorFlags</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.ASFStreamSelector.StreamSelectorFlags\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Sets options for the stream selector.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFASFStreamSelector::SetStreamSelectorFlags']/*\"/>\t\n            <msdn-id>ms701635</msdn-id>\t\n            <unmanaged>SetStreamSelectorFlags</unmanaged>\t\n            <unmanaged-short>SetStreamSelectorFlags</unmanaged-short>\t\n            <unmanaged>HRESULT IMFASFStreamSelector::SetStreamSelectorFlags([In] unsigned int dwStreamSelectorFlags)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.AsyncCallback\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Callback interface to notify the application when an asynchronous method completes. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p> For more information about asynchronous methods in Microsoft Media Foundation, see Asynchronous Callback Methods. </p><p>This interface is also used to perform  a work item in a Media Foundation work-queue. For more information, see Work Queues. </p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFAsyncCallback']/*\"/>\t\n            <msdn-id>ms699856</msdn-id>\t\n            <unmanaged>IMFAsyncCallback</unmanaged>\t\n            <unmanaged-short>IMFAsyncCallback</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.AsyncCallback.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.AsyncCallback\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.AsyncCallback.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.AsyncCallback\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.AsyncCallback\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.AsyncCallback.GetParameters(System.Int32@,System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Provides configuration information to the dispatching thread for a callback.</p>\t\n            </summary>\t\n            <param name=\"dwFlagsRef\"><dd> <p>Receives a flag indicating the behavior of the callback object's <strong><see cref=\"M:SharpDX.MediaFoundation.AsyncCallback.Invoke(SharpDX.MediaFoundation.AsyncResult)\"/></strong> method. The following values are defined. The default value is zero.</p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td><dl> <dt><strong>Zero</strong></dt> </dl> </td><td> <p>The callback does not take a long time to complete, but has no specific restrictions on what system calls it makes. The callback generally takes less than 30 milliseconds to complete.</p> </td></tr> <tr><td><dl> <dt><strong><strong>MFASYNC_FAST_IO_PROCESSING_CALLBACK</strong></strong></dt> </dl> </td><td> <p>The callback does very minimal processing. It takes less than 1 millisecond to complete.</p> <p>The callback must be invoked from one of the following work queues:</p> <ul> <li><strong>MFASYNC_CALLBACK_QUEUE_IO</strong></li> <li><strong>MFASYNC_CALLBACK_QUEUE_TIMER</strong></li> </ul> </td></tr> <tr><td><dl> <dt><strong><strong>MFASYNC_SIGNAL_CALLBACK</strong></strong></dt> </dl> </td><td> <p>Implies <strong>MFASYNC_FAST_IO_PROCESSING_CALLBACK</strong>, with the additional restriction that the callback does no processing (less than 50 microseconds), and the only system call it makes is <strong>SetEvent</strong>.</p> <p>The callback must be invoked from one of the following work queues:</p> <ul> <li><strong>MFASYNC_CALLBACK_QUEUE_IO</strong></li> <li><strong>MFASYNC_CALLBACK_QUEUE_TIMER</strong></li> </ul> </td></tr> <tr><td><dl> <dt><strong><strong>MFASYNC_BLOCKING_CALLBACK</strong></strong></dt> </dl> </td><td> <p>Blocking callback.</p> </td></tr> <tr><td><dl> <dt><strong><strong>MFASYNC_REPLY_CALLBACK</strong></strong></dt> </dl> </td><td> <p>Reply callback.</p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <param name=\"dwQueueRef\"><dd> <p> Receives the identifier of the work queue on which the callback is dispatched.  </p> <p>This value can specify one of the standard Media Foundation work queues, or a work queue created by the application. For list of standard Media Foundation work queues, see <strong>Work Queue Identifiers</strong>. To create a new work queue, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.AllocateWorkQueue(System.Int32@)\"/></strong>. The default value is <strong>MFASYNC_CALLBACK_QUEUE_STANDARD</strong>.</p> <p>If the work queue is not compatible with the value returned in <em>pdwFlags</em>, the Media Foundation platform returns <strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidWorkqueue\"/></strong> when it tries to dispatch the callback. (See <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.PutWorkItem(System.Int32,SharpDX.MediaFoundation.AsyncCallback,SharpDX.ComObject)\"/></strong>.)</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></strong></dt> </dl> </td><td> <p> The method succeeded. </p> </td></tr> <tr><td> <dl> <dt><strong><strong>E_NOTIMPL</strong></strong></dt> </dl> </td><td> <p> Not implemented. Assume the default behavior. </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> The <strong>GetParameters</strong> method returns information about the callback so that the dispatching thread can optimize the process that it uses to invoke the callback. </p><p> If the method returns a value other than zero in the <em>pdwFlags</em> parameter, your <strong>Invoke</strong> method must meet the requirements described here. Otherwise, the callback might delay the pipeline.</p><p> If you want default values for both parameters, return <strong>E_NOTIMPL</strong>. The default values are given in the parameter descriptions on this page.</p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFAsyncCallback::GetParameters']/*\"/>\t\n            <msdn-id>bb970381</msdn-id>\t\n            <unmanaged>HRESULT IMFAsyncCallback::GetParameters([Out] unsigned int* pdwFlags,[Out] unsigned int* pdwQueue)</unmanaged>\t\n            <unmanaged-short>IMFAsyncCallback::GetParameters</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.AsyncCallback.Invoke(SharpDX.MediaFoundation.AsyncResult)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Called when an asynchronous operation is completed.</p>\t\n            </summary>\t\n            <param name=\"asyncResultRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.AsyncResult\"/></strong> interface. Pass this reference to the asynchronous <strong>End...</strong> method to complete the asynchronous call.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>Within your implementation of <strong>Invoke</strong>, call the corresponding <strong>End...</strong> method.</p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFAsyncCallback::Invoke']/*\"/>\t\n            <msdn-id>bb970360</msdn-id>\t\n            <unmanaged>HRESULT IMFAsyncCallback::Invoke([In, Optional] IMFAsyncResult* pAsyncResult)</unmanaged>\t\n            <unmanaged-short>IMFAsyncCallback::Invoke</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.AsyncResult\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Provides information about the result of an asynchronous operation. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Use this interface to complete an asynchronous operation. You get a reference to this interface when your callback object's <strong><see cref=\"M:SharpDX.MediaFoundation.AsyncCallback.Invoke(SharpDX.MediaFoundation.AsyncResult)\"/></strong> method is called. To complete the operation, pass the <strong><see cref=\"T:SharpDX.MediaFoundation.AsyncResult\"/></strong> reference to the <strong>End...</strong> method that corresponds to the <strong>Begin...</strong> method that starts the operation. For example, if the asynchronous method is named <strong>BeginRead</strong>, call the <strong>EndRead</strong> method. For more information, see Calling Asynchronous Methods.</p><p>If you are implementing an asynchronous method, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateAsyncResult(SharpDX.ComObject,SharpDX.MediaFoundation.AsyncCallback,SharpDX.ComObject,SharpDX.MediaFoundation.AsyncResult@)\"/></strong> to create an instance of this object. For more information, see Writing an Asynchronous Method.</p><p>Any custom implementation of this interface must inherit the <strong><see cref=\"T:SharpDX.MediaFoundation.Mfasyncresult\"/></strong> structure.</p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFAsyncResult']/*\"/>\t\n            <msdn-id>ms700196</msdn-id>\t\n            <unmanaged>IMFAsyncResult</unmanaged>\t\n            <unmanaged-short>IMFAsyncResult</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.AsyncResult.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.AsyncResult\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.AsyncResult.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.AsyncResult\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.AsyncResult\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.AsyncResult.GetState(SharpDX.ComObject@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Returns the state object specified by the caller in the asynchronous <strong>Begin</strong> method.</p>\t\n            </summary>\t\n            <param name=\"unkStateOut\"><dd> <p>Receives a reference to the state object's <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interface. If the value is not <strong><c>null</c></strong>, the caller must release the interface.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong>E_POINTER</strong></dt> </dl> </td><td> <p>There is no state object associated with this asynchronous result.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>The caller of the asynchronous method specifies the state object, and can use it for any caller-defined purpose. The state object can be <strong><c>null</c></strong>. If the state object is <strong><c>null</c></strong>, <strong>GetState</strong> returns <strong>E_POINTER</strong>.</p><p>If you are implementing an asynchronous method, set the state object on the through the <em>punkState</em> parameter of the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateAsyncResult(SharpDX.ComObject,SharpDX.MediaFoundation.AsyncCallback,SharpDX.ComObject,SharpDX.MediaFoundation.AsyncResult@)\"/></strong> function.</p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFAsyncResult::GetState']/*\"/>\t\n            <msdn-id>bb970576</msdn-id>\t\n            <unmanaged>HRESULT IMFAsyncResult::GetState([Out] IUnknown** ppunkState)</unmanaged>\t\n            <unmanaged-short>IMFAsyncResult::GetState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.AsyncResult.GetStatus\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Returns the status of the asynchronous operation.</p>\t\n            </summary>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The operation completed successfully.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFAsyncResult::GetStatus']/*\"/>\t\n            <msdn-id>ms702095</msdn-id>\t\n            <unmanaged>HRESULT IMFAsyncResult::GetStatus()</unmanaged>\t\n            <unmanaged-short>IMFAsyncResult::GetStatus</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.AsyncResult.SetStatus(SharpDX.Result)\">\n            <summary>\t\n            <p>Sets the status of the asynchronous operation.</p>  <see cref=\"T:SharpDX.Result\"/> SetStatus( <see cref=\"T:SharpDX.Result\"/> hrStatus\t\n            );<p></p>Parameters <p> hrStatus </p> <p>The status of the asynchronous operation.</p>  <p>The method returns an <see cref=\"T:SharpDX.Result\"/>. Possible values include, but are not limited to, those in the following table.</p> <table><tr> <th> Return code              </th> <th> Description              </th> </tr><tr> <td> <p><see cref=\"F:SharpDX.Result.Ok\"/></p> </td> <td> <p>The method succeeded.</p> </td> </tr></table>  <p>If you implement an asynchronous method, call SetStatus to set the status code for the operation. </p>  <p> Client: Requires Windows Vista.</p> <p> Header: Defined in mfobjects.h; include mfidl.h.</p> <p> Library: Use mfuuid.lib.</p> ReferenceIMFAsyncResult InterfaceConceptsAsynchronous Callback Methods\t\n            </summary>\t\n            <param name=\"hrStatus\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFAsyncResult::SetStatus']/*\"/>\t\n            <msdn-id>ms697440</msdn-id>\t\n            <unmanaged>HRESULT IMFAsyncResult::SetStatus([In] HRESULT hrStatus)</unmanaged>\t\n            <unmanaged-short>IMFAsyncResult::SetStatus</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.AsyncResult.GetObjectW(SharpDX.ComObject@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Returns an object associated with the asynchronous operation. The type of object, if any, depends on the asynchronous method that was called.</p>\t\n            </summary>\t\n            <param name=\"objectOut\"><dd> <p>Receives a reference to the object's <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interface. If no object is associated with the operation, this parameter receives the value <strong><c>null</c></strong>. If the value is not <strong><c>null</c></strong>, the caller must release the interface.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong>E_POINTER</strong></dt> </dl> </td><td> <p>There is no object associated with this asynchronous result.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>Typically, this object is used by the component that implements the asynchronous method. It provides a way for the function that invokes the callback to pass information to the asynchronous <strong>End...</strong> method that completes the operation.</p><p>If you are implementing an asynchronous method, you can set the object through the <em>punkObject</em> parameter of the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateAsyncResult(SharpDX.ComObject,SharpDX.MediaFoundation.AsyncCallback,SharpDX.ComObject,SharpDX.MediaFoundation.AsyncResult@)\"/></strong> function.</p><p>If the asynchronous result object's internal <strong><see cref=\"T:SharpDX.ComObject\"/></strong> reference is <strong><c>null</c></strong>, the method returns <strong>E_POINTER</strong>.</p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFAsyncResult::GetObjectW']/*\"/>\t\n            <msdn-id>bb970500</msdn-id>\t\n            <unmanaged>HRESULT IMFAsyncResult::GetObjectW([Out] IUnknown** ppObject)</unmanaged>\t\n            <unmanaged-short>IMFAsyncResult::GetObjectW</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.AsyncResult.GetStateNoAddRef\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Returns the state object specified by the caller in the asynchronous <strong>Begin</strong> method, without incrementing the object's reference count.</p>\t\n            </summary>\t\n            <returns><p>Returns a reference to the state object's <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interface, or <strong><c>null</c></strong> if no object was set. This reference does not have an outstanding reference count. If you store this reference, you must call <strong>AddRef</strong> on the reference.</p></returns>\t\n            <remarks>\t\n            <p>This method cannot be called remotely.</p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFAsyncResult::GetStateNoAddRef']/*\"/>\t\n            <msdn-id>ms696238</msdn-id>\t\n            <unmanaged>IUnknown* IMFAsyncResult::GetStateNoAddRef()</unmanaged>\t\n            <unmanaged-short>IMFAsyncResult::GetStateNoAddRef</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.AsyncResult.State\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Returns the state object specified by the caller in the asynchronous <strong>Begin</strong> method.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The caller of the asynchronous method specifies the state object, and can use it for any caller-defined purpose. The state object can be <strong><c>null</c></strong>. If the state object is <strong><c>null</c></strong>, <strong>GetState</strong> returns <strong>E_POINTER</strong>.</p><p>If you are implementing an asynchronous method, set the state object on the through the <em>punkState</em> parameter of the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateAsyncResult(SharpDX.ComObject,SharpDX.MediaFoundation.AsyncCallback,SharpDX.ComObject,SharpDX.MediaFoundation.AsyncResult@)\"/></strong> function.</p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFAsyncResult::GetState']/*\"/>\t\n            <msdn-id>bb970576</msdn-id>\t\n            <unmanaged>GetState</unmanaged>\t\n            <unmanaged-short>GetState</unmanaged-short>\t\n            <unmanaged>HRESULT IMFAsyncResult::GetState([Out] IUnknown** ppunkState)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.AsyncResult.Status\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Returns the status of the asynchronous operation.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFAsyncResult::GetStatus']/*\"/>\t\n            <msdn-id>ms702095</msdn-id>\t\n            <unmanaged>GetStatus / SetStatus</unmanaged>\t\n            <unmanaged-short>GetStatus</unmanaged-short>\t\n            <unmanaged>HRESULT IMFAsyncResult::GetStatus()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.AsyncResult.ObjectW\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Returns an object associated with the asynchronous operation. The type of object, if any, depends on the asynchronous method that was called.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Typically, this object is used by the component that implements the asynchronous method. It provides a way for the function that invokes the callback to pass information to the asynchronous <strong>End...</strong> method that completes the operation.</p><p>If you are implementing an asynchronous method, you can set the object through the <em>punkObject</em> parameter of the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateAsyncResult(SharpDX.ComObject,SharpDX.MediaFoundation.AsyncCallback,SharpDX.ComObject,SharpDX.MediaFoundation.AsyncResult@)\"/></strong> function.</p><p>If the asynchronous result object's internal <strong><see cref=\"T:SharpDX.ComObject\"/></strong> reference is <strong><c>null</c></strong>, the method returns <strong>E_POINTER</strong>.</p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFAsyncResult::GetObjectW']/*\"/>\t\n            <msdn-id>bb970500</msdn-id>\t\n            <unmanaged>GetObjectW</unmanaged>\t\n            <unmanaged-short>GetObjectW</unmanaged-short>\t\n            <unmanaged>HRESULT IMFAsyncResult::GetObjectW([Out] IUnknown** ppObject)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.AsyncResult.StateNoAddRef\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Returns the state object specified by the caller in the asynchronous <strong>Begin</strong> method, without incrementing the object's reference count.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This method cannot be called remotely.</p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFAsyncResult::GetStateNoAddRef']/*\"/>\t\n            <msdn-id>ms696238</msdn-id>\t\n            <unmanaged>GetStateNoAddRef</unmanaged>\t\n            <unmanaged-short>GetStateNoAddRef</unmanaged-short>\t\n            <unmanaged>IUnknown* IMFAsyncResult::GetStateNoAddRef()</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.AudioMediaType\">\n            <summary>\t\n            <p>[<strong><see cref=\"T:SharpDX.MediaFoundation.AudioMediaType\"/></strong> is no longer available for use as of Windows?7. Instead, use the media type attributes to get the properties of the audio format.]</p><p><strong>Applies to: </strong>desktop apps only</p><p> Represents a description of an audio format.</p>\t\n            </summary>\t\n            <remarks>\t\n            <strong>Windows Server?2008 and Windows?Vista:??</strong>If the major type of a media type is <strong><see cref=\"F:SharpDX.MediaFoundation.MediaTypeGuids.Audio\"/></strong>, you can query the media type object for the <strong><see cref=\"T:SharpDX.MediaFoundation.AudioMediaType\"/></strong> interface.<p> To convert an audio media type into a <strong><see cref=\"T:SharpDX.Multimedia.WaveFormat\"/></strong> structure, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateWaveFormatExFromMFMediaType(SharpDX.MediaFoundation.MediaType,System.IntPtr@,System.Int32@,System.Int32)\"/></strong>.</p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFAudioMediaType']/*\"/>\t\n            <msdn-id>aa473793</msdn-id>\t\n            <unmanaged>IMFAudioMediaType</unmanaged>\t\n            <unmanaged-short>IMFAudioMediaType</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.MediaType\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Represents a description of a media format. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p> To create a new media type, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateMediaType(SharpDX.MediaFoundation.MediaType)\"/></strong>. </p><p> All of the information in a media type is stored as attributes. To clone a media type, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaAttributes.CopyAllItems(SharpDX.MediaFoundation.MediaAttributes)\"/></strong>. </p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaType']/*\"/>\t\n            <msdn-id>ms704850</msdn-id>\t\n            <unmanaged>IMFMediaType</unmanaged>\t\n            <unmanaged-short>IMFMediaType</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaType.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.MediaType\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaType.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.MediaType\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.MediaType\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaType.GetMajorType(System.Guid@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Gets the major type of the format. </p>\t\n            </summary>\t\n            <param name=\"guidMajorTypeRef\"><dd> <p>Receives the major type <strong><see cref=\"T:System.Guid\"/></strong>. The major type describes the broad category of the format, such as audio or video. For a list of possible values, see Major Media Types. </p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table. </p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Attributenotfound\"/></strong></dt> </dl> </td><td> <p> The major type is not set. </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> This method is equivalent to getting the <strong><see cref=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.MajorType\"/></strong> attribute from the media type. </p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaType::GetMajorType']/*\"/>\t\n            <msdn-id>ms701588</msdn-id>\t\n            <unmanaged>HRESULT IMFMediaType::GetMajorType([Out] GUID* pguidMajorType)</unmanaged>\t\n            <unmanaged-short>IMFMediaType::GetMajorType</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaType.IsCompressedFormat_(SharpDX.Bool@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Queries whether the media type is a temporally compressed format. Temporal compression uses information from previously decoded samples when decompressing the current sample.</p>\t\n            </summary>\t\n            <param name=\"fCompressedRef\"><dd> <p>Receives a Boolean value. The value is <strong>TRUE</strong> if the format uses temporal compression, or <strong><see cref=\"F:SharpDX.Result.False\"/></strong> if the format does not use temporal compression.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p> This method returns <strong><see cref=\"F:SharpDX.Result.False\"/></strong> in <em>pfCompressed</em> if the media type's <strong><see cref=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.AllSamplesIndependent\"/></strong> attribute is <strong>TRUE</strong>. If the <strong><see cref=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.AllSamplesIndependent\"/></strong> attribute is <strong><see cref=\"F:SharpDX.Result.False\"/></strong> or not set, the method returns <strong>TRUE</strong>. </p><p> If the method returns <strong>TRUE</strong> in <em>pfCompressed</em>, it is a hint that the format has temporal compression applied to it. If the method returns <strong><see cref=\"F:SharpDX.Result.False\"/></strong>, the format does not use temporal compression, although it might use intra-frame compression. </p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaType::IsCompressedFormat']/*\"/>\t\n            <msdn-id>ms703821</msdn-id>\t\n            <unmanaged>HRESULT IMFMediaType::IsCompressedFormat([Out] BOOL* pfCompressed)</unmanaged>\t\n            <unmanaged-short>IMFMediaType::IsCompressedFormat</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaType.IsEqual(SharpDX.MediaFoundation.MediaType,System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Compares two media types and determines whether they are identical. If they are not identical, the method indicates how the two formats differ. </p>\t\n            </summary>\t\n            <param name=\"iMediaTypeRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaType\"/></strong> interface of the media type to compare.</p> </dd></param>\t\n            <param name=\"dwFlagsRef\"><dd> <p>Receives a bitwise <strong>OR</strong> of zero or more flags, indicating the degree of similarity between the two media types. The following flags are defined.</p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td><dl> <dt><strong>MF_MEDIATYPE_EQUAL_MAJOR_TYPES</strong></dt> <dt>0x00000001</dt> </dl> </td><td> <p>The major types are the same. The major type is specified by the <strong><see cref=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.MajorType\"/></strong> attribute.</p> </td></tr> <tr><td><dl> <dt><strong>MF_MEDIATYPE_EQUAL_FORMAT_TYPES</strong></dt> <dt>0x00000002</dt> </dl> </td><td> <p>The subtypes are the same, or neither media type has a subtype. The subtype is specified by the <strong><see cref=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.Subtype\"/></strong> attribute.</p> </td></tr> <tr><td><dl> <dt><strong>MF_MEDIATYPE_EQUAL_FORMAT_DATA</strong></dt> <dt>0x00000004</dt> </dl> </td><td> <p>The attributes in one of the media types are a  subset of the attributes in the other, and the values of these attributes match, excluding the value of the <strong><see cref=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.UserData\"/></strong> attribute.</p> <p>Specifically, the method takes the media type with the smaller number of attributes and checks whether each attribute from that type is present in the other media type and has the same value (not including <strong><see cref=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.UserData\"/></strong>). </p> <p>To perform other comparisons, use the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaAttributes.Compare(SharpDX.MediaFoundation.MediaAttributes,SharpDX.MediaFoundation.AttributesMatchType)\"/></strong> method. For example, the <strong>Compare</strong> method can test for identical attributes, or test the intersection of the two attribute sets. For more information, see <strong><see cref=\"T:SharpDX.MediaFoundation.AttributesMatchType\"/></strong>.</p> </td></tr> <tr><td><dl> <dt><strong>MF_MEDIATYPE_EQUAL_FORMAT_USER_DATA</strong></dt> <dt>0x00000008</dt> </dl> </td><td> <p>The user data is identical, or neither media type contains user data. User data is specified by the <strong><see cref=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.UserData\"/></strong> attribute.</p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong>S_FALSE</strong></dt> </dl> </td><td> <p> The types are not equal. Examine the <em>pdwFlags</em> parameter to determine how the types differ. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The types are equal. </p> </td></tr> <tr><td> <dl> <dt><strong>E_INVALIDARG</strong></dt> </dl> </td><td> <p> One or both media types are invalid. </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> Both of the media types must have a major type, or the method returns <strong>E_INVALIDARG</strong>. </p><p> If the method succeeds and all of the comparison flags are set in <em>pdwFlags</em>, the return value is <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. If the method succeeds but one or more comparison flags are not set, the method returns <strong>S_FALSE</strong>. </p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaType::IsEqual']/*\"/>\t\n            <msdn-id>ms696980</msdn-id>\t\n            <unmanaged>HRESULT IMFMediaType::IsEqual([In] IMFMediaType* pIMediaType,[Out] unsigned int* pdwFlags)</unmanaged>\t\n            <unmanaged-short>IMFMediaType::IsEqual</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaType.GetRepresentation(System.Guid,System.IntPtr@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves an alternative representation of the media type. Currently only the DirectShow <strong><see cref=\"!:SharpDX.Win32.Unsupported.AMMediaType\"/></strong> structure is supported.</p>\t\n            </summary>\t\n            <param name=\"guidRepresentation\"><dd> <p> <see cref=\"T:System.Guid\"/> that specifies the representation to retrieve. The following values are defined. </p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td><dl> <dt><strong>AM_MEDIA_TYPE_REPRESENTATION</strong></dt> </dl> </td><td> <p> Convert the media type to a DirectShow <strong><see cref=\"!:SharpDX.Win32.Unsupported.AMMediaType\"/></strong> structure. The method selects the most appropriate format structure (<strong>pbFormat</strong>). </p> </td></tr> <tr><td><dl> <dt><strong>FORMAT_MFVideoFormat</strong></dt> </dl> </td><td> <p> Convert the media type to a DirectShow <strong><see cref=\"!:SharpDX.Win32.Unsupported.AMMediaType\"/></strong> structure with an <strong><see cref=\"T:SharpDX.MediaFoundation.VideoFormat\"/></strong> format structure. </p> </td></tr> <tr><td><dl> <dt><strong>FORMAT_VideoInfo</strong></dt> </dl> </td><td> <p> Convert the media type to a DirectShow <strong><see cref=\"!:SharpDX.Win32.Unsupported.AMMediaType\"/></strong> structure with a <strong><see cref=\"!:SharpDX.Win32.Unsupported.VideoInfoHeader\"/></strong> format structure. </p> </td></tr> <tr><td><dl> <dt><strong>FORMAT_VideoInfo2</strong></dt> </dl> </td><td> <p> Convert the media type to a DirectShow <strong><see cref=\"!:SharpDX.Win32.Unsupported.AMMediaType\"/></strong> structure with a <strong><see cref=\"!:SharpDX.MediaFoundation.VideoInformationHeader2\"/></strong> format structure. </p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <param name=\"vRepresentationOut\"><dd> <p> Receives a reference to a structure that contains the representation. The method allocates the memory for the structure. The caller must release the memory by calling <strong><see cref=\"M:SharpDX.MediaFoundation.MediaType.FreeRepresentation(System.Guid,System.IntPtr)\"/></strong>. </p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Attributenotfound\"/></strong></dt> </dl> </td><td> <p> The details of the media type do not match the requested representation. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidMediaType\"/></strong></dt> </dl> </td><td> <p> The media type is not valid. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.UnsupportedRepresentation\"/></strong></dt> </dl> </td><td> <p> The media type does not support the requested representation. </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> If you request a specific format structure in the <em>guidRepresentation</em> parameter, such as <strong><see cref=\"!:SharpDX.Win32.Unsupported.VideoInfoHeader\"/></strong>, you might lose some of the format information. </p><p> You can also use the <strong>MFInitAMMediaTypeFromMFMediaType</strong> function to convert a Media Foundation media type into a DirectShow media type. </p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaType::GetRepresentation']/*\"/>\t\n            <msdn-id>ms695248</msdn-id>\t\n            <unmanaged>HRESULT IMFMediaType::GetRepresentation([In] GUID guidRepresentation,[Out] void** ppvRepresentation)</unmanaged>\t\n            <unmanaged-short>IMFMediaType::GetRepresentation</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaType.FreeRepresentation(System.Guid,System.IntPtr)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Frees memory that was allocated by the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaType.GetRepresentation(System.Guid,System.IntPtr@)\"/></strong> method.</p>\t\n            </summary>\t\n            <param name=\"guidRepresentation\">No documentation.</param>\t\n            <param name=\"vRepresentationRef\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaType::FreeRepresentation']/*\"/>\t\n            <msdn-id>ms703846</msdn-id>\t\n            <unmanaged>HRESULT IMFMediaType::FreeRepresentation([In] GUID guidRepresentation,[In] void* pvRepresentation)</unmanaged>\t\n            <unmanaged-short>IMFMediaType::FreeRepresentation</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaType.#ctor\">\n            <summary>\t\n            Creates an empty media type.\t\n            </summary>\t\n            <remarks>\t\n            <p> The media type is created without any attributes. </p>\t\n            </remarks>\t\n            <msdn-id>ms693861</msdn-id>\t\n            <unmanaged>HRESULT MFCreateMediaType([Out] IMFMediaType** ppMFType)</unmanaged>\t\n            <unmanaged-short>MFCreateMediaType</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaType.ExtracttWaveFormat(System.Int32@,SharpDX.MediaFoundation.WaveFormatExConvertFlags)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Converts a Media Foundation audio media type to a <strong><see cref=\"T:SharpDX.Multimedia.WaveFormat\"/></strong> structure.</p>\t\n            </summary>\t\n            <param name=\"bufferSize\"><dd> <p>Receives the size of the <strong><see cref=\"T:SharpDX.Multimedia.WaveFormat\"/></strong> structure.</p> </dd></param>\t\n            <param name=\"flags\"><dd> <p>Contains a flag from the <strong><see cref=\"T:SharpDX.MediaFoundation.WaveFormatExConvertFlags\"/></strong> enumeration.</p> </dd></param>\t\n            <returns>a reference to the <strong><see cref=\"T:SharpDX.Multimedia.WaveFormat\"/></strong> structure.</returns>\t\n            <remarks>\t\n            <p>If the <strong>wFormatTag</strong> member of the returned structure is <strong><see cref=\"F:SharpDX.Multimedia.WaveFormatEncoding.Extensible\"/></strong>, you can cast the reference to a <strong><see cref=\"T:SharpDX.Multimedia.WaveFormatExtensible\"/></strong> structure.</p>\t\n            </remarks>\t\n            <msdn-id>ms702177</msdn-id>\t\n            <unmanaged>HRESULT MFCreateWaveFormatExFromMFMediaType([In] IMFMediaType* pMFType,[Out] void** ppWF,[Out, Optional] unsigned int* pcbSize,[In] unsigned int Flags)</unmanaged>\t\n            <unmanaged-short>MFCreateWaveFormatExFromMFMediaType</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.MediaType.MajorType\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Gets the major type of the format. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p> This method is equivalent to getting the <strong><see cref=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.MajorType\"/></strong> attribute from the media type. </p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaType::GetMajorType']/*\"/>\t\n            <msdn-id>ms701588</msdn-id>\t\n            <unmanaged>GetMajorType</unmanaged>\t\n            <unmanaged-short>GetMajorType</unmanaged-short>\t\n            <unmanaged>HRESULT IMFMediaType::GetMajorType([Out] GUID* pguidMajorType)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.MediaType.IsCompressedFormat\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Queries whether the media type is a temporally compressed format. Temporal compression uses information from previously decoded samples when decompressing the current sample.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p> This method returns <strong><see cref=\"F:SharpDX.Result.False\"/></strong> in <em>pfCompressed</em> if the media type's <strong><see cref=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.AllSamplesIndependent\"/></strong> attribute is <strong>TRUE</strong>. If the <strong><see cref=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.AllSamplesIndependent\"/></strong> attribute is <strong><see cref=\"F:SharpDX.Result.False\"/></strong> or not set, the method returns <strong>TRUE</strong>. </p><p> If the method returns <strong>TRUE</strong> in <em>pfCompressed</em>, it is a hint that the format has temporal compression applied to it. If the method returns <strong><see cref=\"F:SharpDX.Result.False\"/></strong>, the format does not use temporal compression, although it might use intra-frame compression. </p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaType::IsCompressedFormat']/*\"/>\t\n            <msdn-id>ms703821</msdn-id>\t\n            <unmanaged>IsCompressedFormat</unmanaged>\t\n            <unmanaged-short>IsCompressedFormat</unmanaged-short>\t\n            <unmanaged>HRESULT IMFMediaType::IsCompressedFormat([Out] BOOL* pfCompressed)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.AudioMediaType.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.AudioMediaType\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.AudioMediaType.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.AudioMediaType\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.AudioMediaType\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.AudioMediaType.GetAudioFormat\">\n            <summary>\t\n            <p>[<strong>GetAudioFormat</strong> is no longer available for use as of Windows?7. Instead, use the media type attributes to get the properties of the audio format.]</p><p><strong>Applies to: </strong>desktop apps only</p><p> Returns a reference to a <strong><see cref=\"T:SharpDX.Multimedia.WaveFormat\"/></strong> structure that describes the audio format.</p>\t\n            </summary>\t\n            <returns><p> This method returns a reference to a <strong><see cref=\"T:SharpDX.Multimedia.WaveFormat\"/></strong> structure.</p></returns>\t\n            <remarks>\t\n            <p>If you need to convert the media type into a <strong><see cref=\"T:SharpDX.Multimedia.WaveFormat\"/></strong> structure, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateWaveFormatExFromMFMediaType(SharpDX.MediaFoundation.MediaType,System.IntPtr@,System.Int32@,System.Int32)\"/></strong>.</p><p> There are no guarantees about how long the returned reference is valid.</p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFAudioMediaType::GetAudioFormat']/*\"/>\t\n            <msdn-id>aa473803</msdn-id>\t\n            <unmanaged>const WAVEFORMATEX* IMFAudioMediaType::GetAudioFormat()</unmanaged>\t\n            <unmanaged-short>IMFAudioMediaType::GetAudioFormat</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.AudioMediaType.AudioFormat\">\n            <summary>\t\n            <p>[<strong>GetAudioFormat</strong> is no longer available for use as of Windows?7. Instead, use the media type attributes to get the properties of the audio format.]</p><p><strong>Applies to: </strong>desktop apps only</p><p> Returns a reference to a <strong><see cref=\"T:SharpDX.Multimedia.WaveFormat\"/></strong> structure that describes the audio format.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>If you need to convert the media type into a <strong><see cref=\"T:SharpDX.Multimedia.WaveFormat\"/></strong> structure, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateWaveFormatExFromMFMediaType(SharpDX.MediaFoundation.MediaType,System.IntPtr@,System.Int32@,System.Int32)\"/></strong>.</p><p> There are no guarantees about how long the returned reference is valid.</p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFAudioMediaType::GetAudioFormat']/*\"/>\t\n            <msdn-id>aa473803</msdn-id>\t\n            <unmanaged>GetAudioFormat</unmanaged>\t\n            <unmanaged-short>GetAudioFormat</unmanaged-short>\t\n            <unmanaged>const WAVEFORMATEX* IMFAudioMediaType::GetAudioFormat()</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.AudioPolicy\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Sets the display name of the audio session. The Windows volume control displays this name.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>If the application does not set a display name, Windows creates one.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFAudioPolicy']/*\"/>\t\n            <msdn-id>ms697038</msdn-id>\t\n            <unmanaged>IMFAudioPolicy</unmanaged>\t\n            <unmanaged-short>IMFAudioPolicy</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.AudioPolicy.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.AudioPolicy\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.AudioPolicy.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.AudioPolicy\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.AudioPolicy\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.AudioPolicy.SetGroupingParam(System.Guid)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Assigns the audio session to a group of sessions.</p>\t\n            </summary>\t\n            <param name=\"rguidClass\"><dd> <p>A <strong><see cref=\"T:System.Guid\"/></strong> that identifies the session group. Groups are application-defined. To create a new session group, assign a new <see cref=\"T:System.Guid\"/>.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>If two or more audio sessions share the same group, the Windows volume control displays one slider control for the entire group. Otherwise, it displays a slider for each session. For more information, see <strong>IAudioSessionControl::SetGroupingParam</strong> in the core audio API documentation.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFAudioPolicy::SetGroupingParam']/*\"/>\t\n            <msdn-id>ms696185</msdn-id>\t\n            <unmanaged>HRESULT IMFAudioPolicy::SetGroupingParam([In] const GUID&amp; rguidClass)</unmanaged>\t\n            <unmanaged-short>IMFAudioPolicy::SetGroupingParam</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.AudioPolicy.GetGroupingParam(System.Guid@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the group of sessions to which this audio session belongs.</p>\t\n            </summary>\t\n            <param name=\"guidClassRef\"><dd> <p>Receives a <see cref=\"T:System.Guid\"/> that identifies the session group.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>If two or more audio sessions share the same group, the Windows volume control displays one slider control for the entire group. Otherwise, it displays a slider for each session. For more information, see <strong>IAudioSessionControl::SetGroupingParam</strong> in the core audio API documentation.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFAudioPolicy::GetGroupingParam']/*\"/>\t\n            <msdn-id>ms698967</msdn-id>\t\n            <unmanaged>HRESULT IMFAudioPolicy::GetGroupingParam([Out] GUID* pguidClass)</unmanaged>\t\n            <unmanaged-short>IMFAudioPolicy::GetGroupingParam</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.AudioPolicy.SetDisplayName(System.String)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Sets the display name of the audio session. The Windows volume control displays this name.</p>\t\n            </summary>\t\n            <param name=\"szNameRef\"><dd> <p>A null-terminated wide-character string that contains the display name.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>If the application does not set a display name, Windows creates one.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFAudioPolicy::SetDisplayName']/*\"/>\t\n            <msdn-id>ms697038</msdn-id>\t\n            <unmanaged>HRESULT IMFAudioPolicy::SetDisplayName([In] const wchar_t* pszName)</unmanaged>\t\n            <unmanaged-short>IMFAudioPolicy::SetDisplayName</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.AudioPolicy.GetDisplayName(System.IntPtr)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the display name of the audio session. The Windows volume control displays this name.</p>\t\n            </summary>\t\n            <param name=\"szNameRef\"><dd> <p>Receives a reference to the display name string. The caller must free the memory allocated for the string by calling <strong>CoTaskMemFree</strong>.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>If the application does not set a display name, Windows creates one.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFAudioPolicy::GetDisplayName']/*\"/>\t\n            <msdn-id>ms698992</msdn-id>\t\n            <unmanaged>HRESULT IMFAudioPolicy::GetDisplayName([Out] wchar_t** pszName)</unmanaged>\t\n            <unmanaged-short>IMFAudioPolicy::GetDisplayName</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.AudioPolicy.SetIconPath(System.String)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Sets the icon resource for the audio session. The Windows volume control displays this icon. </p>\t\n            </summary>\t\n            <param name=\"szPathRef\"><dd> <p>A wide-character string that specifies the icon. See Remarks.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>The icon path has the format \"path,index\" or \"path,-id\", where <em>path</em> is the fully qualified path to a DLL, executable file, or icon file; <em>index</em> is the zero-based index of the icon within the file; and <em>id</em> is a resource identifier. Note that resource identifiers are preceded by a minus sign (-) to distinguish them from indexes. The path can contain environment variables, such as \"%windir%\". For more information, see <strong>IAudioSessionControl::SetIconPath</strong> in the Windows SDK.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFAudioPolicy::SetIconPath']/*\"/>\t\n            <msdn-id>ms694065</msdn-id>\t\n            <unmanaged>HRESULT IMFAudioPolicy::SetIconPath([In] const wchar_t* pszPath)</unmanaged>\t\n            <unmanaged-short>IMFAudioPolicy::SetIconPath</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.AudioPolicy.GetIconPath(System.IntPtr)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the icon resource for the audio session. The Windows volume control displays this icon.</p>\t\n            </summary>\t\n            <param name=\"szPathRef\"><dd> <p>Receives a reference to a wide-character string that specifies a shell resource. The format of the string is described in the topic <strong><see cref=\"M:SharpDX.MediaFoundation.AudioPolicy.SetIconPath(System.String)\"/></strong>. The caller must free the memory allocated for the string by calling <strong>CoTaskMemFree</strong>.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>If the application did not set an icon path, the method returns an empty string (\"\").</p><p>For more information, see <strong>IAudioSessionControl::GetIconPath</strong> in the core audio API documentation.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFAudioPolicy::GetIconPath']/*\"/>\t\n            <msdn-id>ms704858</msdn-id>\t\n            <unmanaged>HRESULT IMFAudioPolicy::GetIconPath([Out] wchar_t** pszPath)</unmanaged>\t\n            <unmanaged-short>IMFAudioPolicy::GetIconPath</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.AudioPolicy.GroupingParam\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the group of sessions to which this audio session belongs.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>If two or more audio sessions share the same group, the Windows volume control displays one slider control for the entire group. Otherwise, it displays a slider for each session. For more information, see <strong>IAudioSessionControl::SetGroupingParam</strong> in the core audio API documentation.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFAudioPolicy::GetGroupingParam']/*\"/>\t\n            <msdn-id>ms698967</msdn-id>\t\n            <unmanaged>GetGroupingParam / SetGroupingParam</unmanaged>\t\n            <unmanaged-short>GetGroupingParam</unmanaged-short>\t\n            <unmanaged>HRESULT IMFAudioPolicy::GetGroupingParam([Out] GUID* pguidClass)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.AudioStreamVolume\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Controls the volume levels of individual audio channels.</p><p>The streaming audio renderer (SAR) exposes this interface as a service. To get a reference to the interface, call <strong><see cref=\"M:SharpDX.MediaFoundation.ServiceProvider.GetService(System.Guid,System.Guid,System.IntPtr@)\"/></strong> with the service identifier <strong>MR_STREAM_VOLUME_SERVICE</strong>. You can call <strong>GetService</strong> directly on the SAR or call it on the Media Session.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>If your application does not require channel-level volume control, you can use the <strong><see cref=\"T:SharpDX.MediaFoundation.SimpleAudioVolume\"/></strong> interface to control the master volume level of the audio session.</p><p>Volume is expressed as an attenuation level, where 0.0 indicates silence and 1.0 indicates full volume (no attenuation). For each channel, the attenuation level is the product of:</p><ul> <li> The master volume level of the audio session. </li> <li> The volume level of the channel. </li> </ul><p>For example, if the master volume is 0.8 and the channel volume is 0.5, the attenuation for that channel is 0.8 ? 0.5 = 0.4. Volume levels can exceed 1.0 (positive gain), but the audio engine clips any audio samples that exceed zero decibels.</p><p>Use the following formula to convert the volume level to the decibel (dB) scale:</p><p>Attenuation (dB) = 20 * log10(<em>Level</em>)</p><p>For example, a volume level of 0.50 represents 6.02 dB of attenuation.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFAudioStreamVolume']/*\"/>\t\n            <msdn-id>aa378344</msdn-id>\t\n            <unmanaged>IMFAudioStreamVolume</unmanaged>\t\n            <unmanaged-short>IMFAudioStreamVolume</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.AudioStreamVolume.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.AudioStreamVolume\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.AudioStreamVolume.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.AudioStreamVolume\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.AudioStreamVolume\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.AudioStreamVolume.GetChannelCount(System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the number of channels in the audio stream.</p>\t\n            </summary>\t\n            <param name=\"dwCountRef\"><dd> <p>Receives the number of channels in the audio stream.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFAudioStreamVolume::GetChannelCount']/*\"/>\t\n            <msdn-id>aa373760</msdn-id>\t\n            <unmanaged>HRESULT IMFAudioStreamVolume::GetChannelCount([Out] unsigned int* pdwCount)</unmanaged>\t\n            <unmanaged-short>IMFAudioStreamVolume::GetChannelCount</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.AudioStreamVolume.SetChannelVolume(System.Int32,System.Single)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Sets the volume level for a specified channel in the audio stream.</p>\t\n            </summary>\t\n            <param name=\"dwIndex\"><dd> <p>Zero-based index of the audio channel. To get the number of channels, call <strong><see cref=\"M:SharpDX.MediaFoundation.AudioStreamVolume.GetChannelCount(System.Int32@)\"/></strong>.</p> </dd></param>\t\n            <param name=\"fLevel\"><dd> <p>Volume level for the channel.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFAudioStreamVolume::SetChannelVolume']/*\"/>\t\n            <msdn-id>aa370771</msdn-id>\t\n            <unmanaged>HRESULT IMFAudioStreamVolume::SetChannelVolume([In] unsigned int dwIndex,[In] const float fLevel)</unmanaged>\t\n            <unmanaged-short>IMFAudioStreamVolume::SetChannelVolume</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.AudioStreamVolume.GetChannelVolume(System.Int32,System.Single@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the volume level for a specified channel in the audio stream.</p>\t\n            </summary>\t\n            <param name=\"dwIndex\"><dd> <p>Zero-based index of the audio channel. To get the number of channels, call <strong><see cref=\"M:SharpDX.MediaFoundation.AudioStreamVolume.GetChannelCount(System.Int32@)\"/></strong>.</p> </dd></param>\t\n            <param name=\"fLevelRef\"><dd> <p>Receives the volume level for the channel.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFAudioStreamVolume::GetChannelVolume']/*\"/>\t\n            <msdn-id>aa369737</msdn-id>\t\n            <unmanaged>HRESULT IMFAudioStreamVolume::GetChannelVolume([In] unsigned int dwIndex,[Out] float* pfLevel)</unmanaged>\t\n            <unmanaged-short>IMFAudioStreamVolume::GetChannelVolume</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.AudioStreamVolume.SetAllVolumes(System.Int32,System.Single[])\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Sets the individual volume levels for all of the channels in the audio stream.</p>\t\n            </summary>\t\n            <param name=\"dwCount\"><dd> <p>Number of elements in the <em>pfVolumes</em> array. The value must equal the number of channels. To get the number of channels, call <strong><see cref=\"M:SharpDX.MediaFoundation.AudioStreamVolume.GetChannelCount(System.Int32@)\"/></strong>.</p> </dd></param>\t\n            <param name=\"fVolumesRef\"><dd> <p>Address of an array of size <em>dwCount</em>, allocated by the caller. The array specifies the volume levels for all of the channels. Before calling the method, set each element of the array to the desired volume level for the channel.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFAudioStreamVolume::SetAllVolumes']/*\"/>\t\n            <msdn-id>aa370454</msdn-id>\t\n            <unmanaged>HRESULT IMFAudioStreamVolume::SetAllVolumes([In] unsigned int dwCount,[In, Buffer] const float* pfVolumes)</unmanaged>\t\n            <unmanaged-short>IMFAudioStreamVolume::SetAllVolumes</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.AudioStreamVolume.GetAllVolumes(System.Int32,System.Single[])\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the volume levels for all of the channels in the audio stream.</p>\t\n            </summary>\t\n            <param name=\"dwCount\"><dd> <p>Number of elements in the <em>pfVolumes</em> array. The value must equal the number of channels. To get the number of channels, call <strong><see cref=\"M:SharpDX.MediaFoundation.AudioStreamVolume.GetChannelCount(System.Int32@)\"/></strong>.</p> </dd></param>\t\n            <param name=\"fVolumesRef\"><dd> <p>Address of an array of size <em>dwCount</em>, allocated by the caller. The method fills the array with the volume level for each channel in the stream.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFAudioStreamVolume::GetAllVolumes']/*\"/>\t\n            <msdn-id>aa373642</msdn-id>\t\n            <unmanaged>HRESULT IMFAudioStreamVolume::GetAllVolumes([In] unsigned int dwCount,[Out, Buffer] float* pfVolumes)</unmanaged>\t\n            <unmanaged-short>IMFAudioStreamVolume::GetAllVolumes</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.AudioStreamVolume.ChannelCount\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the number of channels in the audio stream.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFAudioStreamVolume::GetChannelCount']/*\"/>\t\n            <msdn-id>aa373760</msdn-id>\t\n            <unmanaged>GetChannelCount</unmanaged>\t\n            <unmanaged-short>GetChannelCount</unmanaged-short>\t\n            <unmanaged>HRESULT IMFAudioStreamVolume::GetChannelCount([Out] unsigned int* pdwCount)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.Buffer2D\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Represents a buffer that contains a two-dimensional surface, such as a video frame. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>To get a reference to this interface, call <strong>QueryInterface</strong> on the media buffer.</p><p>To use a 2-D buffer, it is important to know the <em>stride</em>, which is the number of bytes needed to go from one row of pixels to the next. The stride may be larger than the image width, because the surface may contain padding bytes after each row of pixels. Stride can also be negative, if the pixels are oriented bottom-up in memory. For more information, see Image Stride.</p><p>Every video format defines a <em>contiguous</em> or <em>packed</em> representation. This representation is compatible with the standard layout of a DirectX surface in system memory, with no additional padding. For RGB video, the contiguous representation has a pitch equal to the image width in bytes, rounded up to the nearest <strong>DWORD</strong> boundary. For YUV video, the layout of the contiguous representation depends on the YUV format. For planar YUV formats, the Y plane might have a different pitch than the U and V planes.</p><p>If a media buffer supports the <strong><see cref=\"T:SharpDX.MediaFoundation.Buffer2D\"/></strong> interface, the underlying buffer is not guaranteed to have a contiguous representation, because there might be additional padding bytes after each row of pixels. When a buffer is non-contiguous, the <strong>Lock</strong> and <strong>Lock2D</strong> methods have different behaviors:</p><ul> <li> The <strong>Lock2D</strong> method returns a reference to the underlying buffer. The buffer might not be contiguous. </li> <li> The <strong>Lock</strong> method returns a buffer that is guaranteed to be contiguous. If the underlying buffer is not contiguous, the method copies the data into a new buffer, and the <strong>Unlock</strong> method copies it back into the original buffer. </li> </ul><p>Call the <strong>Lock2D</strong> method to access the 2-D buffer in its native format. The native format might not be contiguous. The buffer's <strong><see cref=\"M:SharpDX.MediaFoundation.MediaBuffer.Lock(System.Int32@,System.Int32@)\"/></strong> method returns a contiguous representation of the buffer. However, this might require an internal copy from the native format. For 2-D buffers, therefore, you should use the <strong>Lock2D</strong> method and avoid the <strong>Lock</strong> method. Because the <strong>Lock</strong> method might cause up to two buffer copies, the <strong>Lock2D</strong> method is generally more efficient and should be used when possible. To find out if the underlying buffer is contiguous, call <strong><see cref=\"M:SharpDX.MediaFoundation.Buffer2D.IsContiguousFormat_(SharpDX.Bool@)\"/></strong>.</p><p>For uncompressed images, the amount of valid data in the buffer is determined by the width, height, and pixel layout of the image. For this reason, if you call <strong>Lock2D</strong> to access the buffer, do not rely on the values returned by <strong><see cref=\"M:SharpDX.MediaFoundation.MediaBuffer.GetCurrentLength(System.Int32@)\"/></strong> or <strong><see cref=\"M:SharpDX.MediaFoundation.MediaBuffer.GetMaxLength(System.Int32@)\"/></strong>. Similarly, if you modify the data in the buffer, you do not have to call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaBuffer.SetCurrentLength(System.Int32)\"/></strong> to update the size. Generally, you should avoid mixing calls to <strong><see cref=\"T:SharpDX.MediaFoundation.Buffer2D\"/></strong> and <strong><see cref=\"T:SharpDX.MediaFoundation.MediaBuffer\"/></strong> methods on the same media buffer.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMF2DBuffer']/*\"/>\t\n            <msdn-id>ms699894</msdn-id>\t\n            <unmanaged>IMF2DBuffer</unmanaged>\t\n            <unmanaged-short>IMF2DBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Buffer2D.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.Buffer2D\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Buffer2D.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.Buffer2D\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.Buffer2D\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Buffer2D.Lock2D(System.Byte@,System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Gives the caller access to the memory in the buffer.</p>\t\n            </summary>\t\n            <param name=\"bScanline0Ref\"><dd> <p>Receives a reference to the first byte of the top row of pixels in the image. The top row is defined as the top row when the image is presented to the viewer, and might not be the first row in memory.</p> </dd></param>\t\n            <param name=\"lPitchRef\"><dd> <p>Receives the surface stride, in bytes. The stride might be negative, indicating that the image is oriented from the bottom up in memory.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/></strong></dt> </dl> </td><td> <p>Cannot lock the Direct3D surface.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidRequest\"/></strong></dt> </dl> </td><td> <p>The buffer cannot be locked at this time.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>If <em>p</em> is a reference to the first byte in a row of pixels, <em>p</em> + (*<em>plPitch</em>) points to the first byte in the next row of pixels. A buffer might contain padding after each row of pixels, so the stride might be wider than the width of the image in bytes. Do not access the memory that is reserved for padding bytes, because it might not be read-accessible or write-accessible. For more information, see Image Stride.</p><p>The reference returned in <em>pbScanline0</em> remains valid as long as the caller holds the lock. When you are done accessing the memory, call <strong><see cref=\"M:SharpDX.MediaFoundation.Buffer2D.Unlock2D\"/></strong> to unlock the buffer. You must call <strong>Unlock2D</strong> once for each call to <strong>Lock2D</strong>. After you unlock the buffer, the reference returned in <em>pbScanline0</em> is no longer valid and should not be used. Generally, it is best to call <strong>Lock2D</strong> only when you need to access the buffer memory, and not earlier.</p><p>The values returned by the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaBuffer.GetCurrentLength(System.Int32@)\"/></strong> and <strong><see cref=\"M:SharpDX.MediaFoundation.MediaBuffer.GetMaxLength(System.Int32@)\"/></strong> methods do not apply to the buffer that is returned by the <strong>Lock2D</strong> method. For the same reason, you do not need to call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaBuffer.SetCurrentLength(System.Int32)\"/></strong> after manipulating the data in the buffer returned by the <strong>Lock2D</strong> method.</p><p>The <strong><see cref=\"M:SharpDX.MediaFoundation.MediaBuffer.Lock(System.Int32@,System.Int32@)\"/></strong> method fails while the <strong>Lock2D</strong> lock is held, and vice-versa. Applications should use only one of these methods at a time.</p><p>When the underlying buffer is a Direct3D surface, the method fails if the surface is not lockable.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMF2DBuffer::Lock2D']/*\"/>\t\n            <msdn-id>ms700182</msdn-id>\t\n            <unmanaged>HRESULT IMF2DBuffer::Lock2D([Out] unsigned char** pbScanline0,[In] int* plPitch)</unmanaged>\t\n            <unmanaged-short>IMF2DBuffer::Lock2D</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Buffer2D.Unlock2D\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Unlocks a buffer that was previously locked. Call this method once for each call to <strong><see cref=\"M:SharpDX.MediaFoundation.Buffer2D.Lock2D(System.Byte@,System.Int32)\"/></strong>.</p>\t\n            </summary>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMF2DBuffer::Unlock2D']/*\"/>\t\n            <msdn-id>ms697066</msdn-id>\t\n            <unmanaged>HRESULT IMF2DBuffer::Unlock2D()</unmanaged>\t\n            <unmanaged-short>IMF2DBuffer::Unlock2D</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Buffer2D.GetScanline0AndPitch(System.Byte@,System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves a reference to the buffer memory and the surface stride.</p>\t\n            </summary>\t\n            <param name=\"bScanline0Ref\"><dd> <p>Receives a reference to the first byte of the top row of pixels in the image.</p> </dd></param>\t\n            <param name=\"lPitchRef\"><dd> <p>Receives the stride, in bytes. For more information, see Image Stride.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Win32.ErrorCode.InvalidFunction\"/></strong></dt> </dl> </td><td> <p>You must lock the buffer before calling this method.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>Before calling this method, you must lock the buffer by calling <strong><see cref=\"M:SharpDX.MediaFoundation.Buffer2D.Lock2D(System.Byte@,System.Int32)\"/></strong>. The reference returned in <em>plPitch</em> is valid only while the buffer remains locked.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMF2DBuffer::GetScanline0AndPitch']/*\"/>\t\n            <msdn-id>ms694042</msdn-id>\t\n            <unmanaged>HRESULT IMF2DBuffer::GetScanline0AndPitch([Out] unsigned char** pbScanline0,[Out] int* plPitch)</unmanaged>\t\n            <unmanaged-short>IMF2DBuffer::GetScanline0AndPitch</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Buffer2D.IsContiguousFormat_(SharpDX.Bool@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Queries whether the buffer is contiguous in its native format.</p>\t\n            </summary>\t\n            <param name=\"fIsContiguousRef\"><dd> <p>Receives a Boolean value. The value is <strong>TRUE</strong> if the buffer is contiguous, and <strong><see cref=\"F:SharpDX.Result.False\"/></strong> otherwise.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>For a definition of contiguous as it applies to 2-D buffers, see the Remarks section in <strong><see cref=\"T:SharpDX.MediaFoundation.Buffer2D\"/></strong> interface. For non-contiguous buffers, the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaBuffer.Lock(System.Int32@,System.Int32@)\"/></strong> method must perform an internal copy.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMF2DBuffer::IsContiguousFormat']/*\"/>\t\n            <msdn-id>ms701629</msdn-id>\t\n            <unmanaged>HRESULT IMF2DBuffer::IsContiguousFormat([Out] BOOL* pfIsContiguous)</unmanaged>\t\n            <unmanaged-short>IMF2DBuffer::IsContiguousFormat</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Buffer2D.GetContiguousLength(System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves the number of bytes needed to store the contents of the buffer in contiguous format.</p>\t\n            </summary>\t\n            <param name=\"cbLengthRef\"><dd> <p>Receives the number of bytes needed to store the contents of the buffer in contiguous format.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>For a definition of contiguous as it applies to 2-D buffers, see the Remarks section in <strong><see cref=\"T:SharpDX.MediaFoundation.Buffer2D\"/></strong> interface.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMF2DBuffer::GetContiguousLength']/*\"/>\t\n            <msdn-id>ms696971</msdn-id>\t\n            <unmanaged>HRESULT IMF2DBuffer::GetContiguousLength([Out] unsigned int* pcbLength)</unmanaged>\t\n            <unmanaged-short>IMF2DBuffer::GetContiguousLength</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Buffer2D.ContiguousCopyTo(System.Byte[],System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Copies this buffer into the caller's buffer, converting the data to contiguous format.</p>\t\n            </summary>\t\n            <param name=\"bDestBufferRef\"><dd> <p>Pointer to the destination buffer where the data will be copied. The caller allocates the buffer.</p> </dd></param>\t\n            <param name=\"cbDestBuffer\"><dd> <p>Size of the destination buffer, in bytes. To get the required size, call <strong><see cref=\"M:SharpDX.MediaFoundation.Buffer2D.GetContiguousLength(System.Int32@)\"/></strong>.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong>E_INVALIDARG</strong></dt> </dl> </td><td> <p>Invalid size specified in <em>pbDestBuffer</em>.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>If the original buffer is not contiguous, this method converts the contents into contiguous format during the copy. For a definition of contiguous as it applies to 2-D buffers, see the Remarks section in <strong><see cref=\"T:SharpDX.MediaFoundation.Buffer2D\"/></strong> interface.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMF2DBuffer::ContiguousCopyTo']/*\"/>\t\n            <msdn-id>ms696215</msdn-id>\t\n            <unmanaged>HRESULT IMF2DBuffer::ContiguousCopyTo([Out, Buffer] unsigned char* pbDestBuffer,[In] unsigned int cbDestBuffer)</unmanaged>\t\n            <unmanaged-short>IMF2DBuffer::ContiguousCopyTo</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Buffer2D.ContiguousCopyFrom(System.Byte[],System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Copies data to this buffer from a buffer that has a contiguous format.</p>\t\n            </summary>\t\n            <param name=\"bSrcBufferRef\"><dd> <p>Pointer to the source buffer. The caller allocates the buffer.</p> </dd></param>\t\n            <param name=\"cbSrcBuffer\"><dd> <p>Size of the source buffer, in bytes. To get the maximum size of the buffer, call <strong><see cref=\"M:SharpDX.MediaFoundation.Buffer2D.GetContiguousLength(System.Int32@)\"/></strong>.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>This method copies the contents of the source buffer into the buffer that is managed by this <strong><see cref=\"T:SharpDX.MediaFoundation.Buffer2D\"/></strong> object. The source buffer must be in contiguous format. While copying, the method converts the contents into the destination buffer's native format, correcting for the buffer's pitch if necessary.</p><p>For a definition of contiguous as it applies to 2-D buffers, see the Remarks section in the <strong><see cref=\"T:SharpDX.MediaFoundation.Buffer2D\"/></strong> interface topic.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMF2DBuffer::ContiguousCopyFrom']/*\"/>\t\n            <msdn-id>ms700162</msdn-id>\t\n            <unmanaged>HRESULT IMF2DBuffer::ContiguousCopyFrom([In, Buffer] const unsigned char* pbSrcBuffer,[In] unsigned int cbSrcBuffer)</unmanaged>\t\n            <unmanaged-short>IMF2DBuffer::ContiguousCopyFrom</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.Buffer2D.IsContiguousFormat\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Queries whether the buffer is contiguous in its native format.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>For a definition of contiguous as it applies to 2-D buffers, see the Remarks section in <strong><see cref=\"T:SharpDX.MediaFoundation.Buffer2D\"/></strong> interface. For non-contiguous buffers, the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaBuffer.Lock(System.Int32@,System.Int32@)\"/></strong> method must perform an internal copy.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMF2DBuffer::IsContiguousFormat']/*\"/>\t\n            <msdn-id>ms701629</msdn-id>\t\n            <unmanaged>IsContiguousFormat</unmanaged>\t\n            <unmanaged-short>IsContiguousFormat</unmanaged-short>\t\n            <unmanaged>HRESULT IMF2DBuffer::IsContiguousFormat([Out] BOOL* pfIsContiguous)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.Buffer2D.ContiguousLength\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves the number of bytes needed to store the contents of the buffer in contiguous format.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>For a definition of contiguous as it applies to 2-D buffers, see the Remarks section in <strong><see cref=\"T:SharpDX.MediaFoundation.Buffer2D\"/></strong> interface.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMF2DBuffer::GetContiguousLength']/*\"/>\t\n            <msdn-id>ms696971</msdn-id>\t\n            <unmanaged>GetContiguousLength</unmanaged>\t\n            <unmanaged-short>GetContiguousLength</unmanaged-short>\t\n            <unmanaged>HRESULT IMF2DBuffer::GetContiguousLength([Out] unsigned int* pcbLength)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.ByteStreamBuffering\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Controls how a byte stream buffers data from a network. </p><p>To get a reference to this interface, call <strong>QueryInterface</strong> on the byte stream object.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p> If a byte stream implements this interface, a media source can use it to control how the byte stream buffers data. This interface is designed for byte streams that read data from a network. </p><p> A byte stream that implements this interface should also implement the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaEventGenerator\"/></strong> interface. When the byte stream starts buffering, it sends an <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.BufferingStarted\"/> event. When it stops buffering, it sends an <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.BufferingStopped\"/> event. </p><p> The byte stream must send a matching <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.BufferingStopped\"/> event for every <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.BufferingStarted\"/> event. The byte stream must not send <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.BufferingStarted\"/> events unless the media source has enabled buffering by calling <strong>EnableBuffering</strong> with the value <strong>TRUE</strong>. </p><p> After the byte stream sends an <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.BufferingStarted\"/> event, it should send <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.BufferingStopped\"/> if any of the following occur: </p><ul> <li> The byte stream finishes buffering data. </li> <li> The byte stream reaches the end of the stream. </li> <li> The media source calls <strong>EnableBuffering</strong> with the value <strong><see cref=\"F:SharpDX.Result.False\"/></strong>. </li> <li> The media source calls <strong>StopBuffering</strong>. </li> </ul><p> The byte stream should not send any more buffering events after it reaches the end of the file. </p><p> If buffering is disabled, the byte stream does not send any buffering events. Internally, however, it might still buffer data while it waits for I/O requests to complete. Therefore, <strong><see cref=\"T:SharpDX.MediaFoundation.IByteStream\"/></strong> methods might take an indefinite length of time to complete. </p><p> If the byte stream is buffering data internally and the media source calls <strong>EnableBuffering</strong> with the value <strong>TRUE</strong>, the byte stream can send <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.BufferingStarted\"/> immediately. </p><p> After the presentation has started, the media source should forward and <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.BufferingStarted\"/> and <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.BufferingStopped\"/> events that it receives while started. The Media Session will pause the presentation clock while buffering is progress and restart the presentation clock when buffering completes. The media source should only forward these events while the presentation is playing. The purpose of sending these events to the Media Session is to pause the presentation time while the source buffers data. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFByteStreamBuffering']/*\"/>\t\n            <msdn-id>aa372548</msdn-id>\t\n            <unmanaged>IMFByteStreamBuffering</unmanaged>\t\n            <unmanaged-short>IMFByteStreamBuffering</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ByteStreamBuffering.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.ByteStreamBuffering\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ByteStreamBuffering.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.ByteStreamBuffering\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.ByteStreamBuffering\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ByteStreamBuffering.SetBufferingParams(SharpDX.MediaFoundation.ByteStreamBufferingParameters@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Sets the buffering parameters.</p>\t\n            </summary>\t\n            <param name=\"paramsRef\"><dd> <p>Pointer to an <strong><see cref=\"T:SharpDX.MediaFoundation.ByteStreamBufferingParameters\"/></strong> structure that contains the buffering parameters. The byte stream uses this information to calculate how much data to buffer from the network.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFByteStreamBuffering::SetBufferingParams']/*\"/>\t\n            <msdn-id>aa366520</msdn-id>\t\n            <unmanaged>HRESULT IMFByteStreamBuffering::SetBufferingParams([In] MFBYTESTREAM_BUFFERING_PARAMS* pParams)</unmanaged>\t\n            <unmanaged-short>IMFByteStreamBuffering::SetBufferingParams</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ByteStreamBuffering.EnableBuffering(SharpDX.Bool)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Enables or disables buffering.</p>\t\n            </summary>\t\n            <param name=\"fEnable\"><dd> <p>Specifies whether the byte stream buffers data. If <strong>TRUE</strong>, buffering is enabled. If <strong><see cref=\"F:SharpDX.Result.False\"/></strong>, buffering is disabled.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>Before calling this method, call <strong><see cref=\"M:SharpDX.MediaFoundation.ByteStreamBuffering.SetBufferingParams(SharpDX.MediaFoundation.ByteStreamBufferingParameters@)\"/></strong> to set the buffering parameters on the byte stream.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFByteStreamBuffering::EnableBuffering']/*\"/>\t\n            <msdn-id>aa369933</msdn-id>\t\n            <unmanaged>HRESULT IMFByteStreamBuffering::EnableBuffering([In] BOOL fEnable)</unmanaged>\t\n            <unmanaged-short>IMFByteStreamBuffering::EnableBuffering</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ByteStreamBuffering.StopBuffering\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Stops any buffering that is in progress.</p>\t\n            </summary>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The byte stream successfully stopped buffering.</p> </td></tr> <tr><td> <dl> <dt><strong>S_FALSE</strong></dt> </dl> </td><td> <p>No buffering was in progress.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>If the byte stream is currently buffering data, it stops and sends an <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.BufferingStopped\"/> event. If the byte stream is not currently buffering, this method has no effect.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFByteStreamBuffering::StopBuffering']/*\"/>\t\n            <msdn-id>aa375256</msdn-id>\t\n            <unmanaged>HRESULT IMFByteStreamBuffering::StopBuffering()</unmanaged>\t\n            <unmanaged-short>IMFByteStreamBuffering::StopBuffering</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.ByteStreamBuffering.BufferingParams\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Sets the buffering parameters.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFByteStreamBuffering::SetBufferingParams']/*\"/>\t\n            <msdn-id>aa366520</msdn-id>\t\n            <unmanaged>SetBufferingParams</unmanaged>\t\n            <unmanaged-short>SetBufferingParams</unmanaged-short>\t\n            <unmanaged>HRESULT IMFByteStreamBuffering::SetBufferingParams([In] MFBYTESTREAM_BUFFERING_PARAMS* pParams)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.ByteStreamCacheControl\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Stops the background transfer of data to the local cache.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The byte stream resumes transferring data to the cache if the application does one of the following:</p><ul> <li>Reads data from the byte stream.</li> <li>Calls the byte stream's <strong><see cref=\"M:SharpDX.MediaFoundation.ByteStreamBuffering.EnableBuffering(SharpDX.Bool)\"/></strong> method.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFByteStreamCacheControl']/*\"/>\t\n            <msdn-id>dd368786</msdn-id>\t\n            <unmanaged>IMFByteStreamCacheControl</unmanaged>\t\n            <unmanaged-short>IMFByteStreamCacheControl</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ByteStreamCacheControl.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.ByteStreamCacheControl\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ByteStreamCacheControl.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.ByteStreamCacheControl\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.ByteStreamCacheControl\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ByteStreamCacheControl.StopBackgroundTransfer\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Stops the background transfer of data to the local cache.</p>\t\n            </summary>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>The byte stream resumes transferring data to the cache if the application does one of the following:</p><ul> <li>Reads data from the byte stream.</li> <li>Calls the byte stream's <strong><see cref=\"M:SharpDX.MediaFoundation.ByteStreamBuffering.EnableBuffering(SharpDX.Bool)\"/></strong> method.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFByteStreamCacheControl::StopBackgroundTransfer']/*\"/>\t\n            <msdn-id>dd368786</msdn-id>\t\n            <unmanaged>HRESULT IMFByteStreamCacheControl::StopBackgroundTransfer()</unmanaged>\t\n            <unmanaged-short>IMFByteStreamCacheControl::StopBackgroundTransfer</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.ByteStreamHandler\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Creates a media source from a byte stream. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Applications do not use this interface directly. This interface is exposed by byte-stream handlers, which are used by the source resolver. When the byte-stream handler is given a byte stream, it parses the stream and creates a media source. Byte-stream handlers are registered by file name extension or MIME type.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFByteStreamHandler']/*\"/>\t\n            <msdn-id>ms699886</msdn-id>\t\n            <unmanaged>IMFByteStreamHandler</unmanaged>\t\n            <unmanaged-short>IMFByteStreamHandler</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ByteStreamHandler.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.ByteStreamHandler\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ByteStreamHandler.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.ByteStreamHandler\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.ByteStreamHandler\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ByteStreamHandler.BeginCreateObject_(System.IntPtr,System.String,System.Int32,SharpDX.ComObject,SharpDX.ComObject@,SharpDX.MediaFoundation.AsyncCallback,SharpDX.ComObject)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Begins an asynchronous request to create a media source from a byte stream.</p>\t\n            </summary>\t\n            <param name=\"byteStreamRef\"><dd> <p>Pointer to the byte stream's <strong><see cref=\"T:SharpDX.MediaFoundation.IByteStream\"/></strong> interface.</p> </dd></param>\t\n            <param name=\"wszURLRef\"><dd> <p>String that contains the original URL of the byte stream. This parameter can be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"dwFlags\"><dd> <p>Bitwise OR of zero or more flags. See <strong>Source Resolver Flags</strong>.</p> </dd></param>\t\n            <param name=\"propsRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interface of a property store. The byte-stream handler can use this property store to configure the object. This parameter can be <strong><c>null</c></strong>. For more information, see Configuring a Media Source.</p> </dd></param>\t\n            <param name=\"iUnknownCancelCookieOut\"><dd> <p>Receives an <strong><see cref=\"T:SharpDX.ComObject\"/></strong> reference or the value <strong><c>null</c></strong>. If the value is not <strong><c>null</c></strong>, you can cancel the asynchronous operation by passing this reference to the <strong><see cref=\"M:SharpDX.MediaFoundation.ByteStreamHandler.CancelObjectCreation(SharpDX.ComObject)\"/></strong> method. The caller must release the interface. This parameter can be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"callbackRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.AsyncCallback\"/></strong> interface of a callback object. The caller must implement this interface.</p> </dd></param>\t\n            <param name=\"unkStateRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interface of a state object, defined by the caller. This parameter can be <strong><c>null</c></strong>. You can use this object to hold state information. The object is returned to the caller when the callback is invoked.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.CannotParseByteStream\"/></strong></dt> </dl> </td><td> <p>Unable to parse the byte stream.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>The <em>dwFlags</em> parameter must contain the <see cref=\"F:SharpDX.MediaFoundation.SourceResolverFlags.MediaSource\"/> flag and should not contain the <see cref=\"F:SharpDX.MediaFoundation.SourceResolverFlags.ByteStream\"/> flag.</p><p>The byte-stream handler is responsible for parsing the stream and validating the contents. If the stream is not valid or the byte stream handler cannot parse the stream, the handler should return a failure code. The byte stream is not guaranteed to match the type of stream that the byte handler is designed to parse.</p><p>If the <em>pwszURL</em> parameter is not <strong><c>null</c></strong>, the byte-stream handler might use the URL during the resolution process. (For example, it might use the file name extension, if present.) Also, the byte stream might contain the <strong><see cref=\"F:SharpDX.MediaFoundation.ByteStreamAttributeKeys.ContentType\"/></strong> attribute, specifying the MIME type.</p><p>When the operation completes, the byte-stream handler calls the <strong><see cref=\"M:SharpDX.MediaFoundation.AsyncCallback.Invoke(SharpDX.MediaFoundation.AsyncResult)\"/></strong> method. The <strong>Invoke</strong> method should call <strong><see cref=\"M:SharpDX.MediaFoundation.ByteStreamHandler.EndCreateObject(SharpDX.MediaFoundation.AsyncResult,SharpDX.MediaFoundation.ObjectType@,SharpDX.ComObject@)\"/></strong> to get a reference to the media source.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFByteStreamHandler::BeginCreateObject']/*\"/>\t\n            <msdn-id>ms696214</msdn-id>\t\n            <unmanaged>HRESULT IMFByteStreamHandler::BeginCreateObject([In] IMFByteStream* pByteStream,[In] const wchar_t* pwszURL,[In] unsigned int dwFlags,[In] IPropertyStore* pProps,[Out, Optional] IUnknown** ppIUnknownCancelCookie,[In] IMFAsyncCallback* pCallback,[In] IUnknown* punkState)</unmanaged>\t\n            <unmanaged-short>IMFByteStreamHandler::BeginCreateObject</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ByteStreamHandler.EndCreateObject(SharpDX.MediaFoundation.AsyncResult,SharpDX.MediaFoundation.ObjectType@,SharpDX.ComObject@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Completes an asynchronous request to create a media source.</p>\t\n            </summary>\t\n            <param name=\"resultRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.AsyncResult\"/></strong> interface. Pass in the same reference that your callback object received in the <strong>Invoke</strong> method.</p> </dd></param>\t\n            <param name=\"objectTypeRef\"><dd> <p>Receives a member of the <strong><see cref=\"T:SharpDX.MediaFoundation.ObjectType\"/></strong> enumeration, specifying the type of object that was created.</p> </dd></param>\t\n            <param name=\"objectOut\"><dd> <p>Receives a reference to the <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interface of the media source. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong>E_ABORT</strong></dt> </dl> </td><td> <p>The operation was canceled. See <strong><see cref=\"M:SharpDX.MediaFoundation.ByteStreamHandler.CancelObjectCreation(SharpDX.ComObject)\"/></strong>.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.CannotParseByteStream\"/></strong></dt> </dl> </td><td> <p>Unable to parse the byte stream.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>Call this method from inside the <strong><see cref=\"M:SharpDX.MediaFoundation.AsyncCallback.Invoke(SharpDX.MediaFoundation.AsyncResult)\"/></strong> method.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFByteStreamHandler::EndCreateObject']/*\"/>\t\n            <msdn-id>ms700217</msdn-id>\t\n            <unmanaged>HRESULT IMFByteStreamHandler::EndCreateObject([In] IMFAsyncResult* pResult,[Out] MF_OBJECT_TYPE* pObjectType,[Out] IUnknown** ppObject)</unmanaged>\t\n            <unmanaged-short>IMFByteStreamHandler::EndCreateObject</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ByteStreamHandler.CancelObjectCreation(SharpDX.ComObject)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Cancels the current request to create a media source.</p>\t\n            </summary>\t\n            <param name=\"iUnknownCancelCookieRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interface that was returned in the <em>ppIUnknownCancelCookie</em> parameter of the <strong><see cref=\"M:SharpDX.MediaFoundation.ByteStreamHandler.BeginCreateObject_(System.IntPtr,System.String,System.Int32,SharpDX.ComObject,SharpDX.ComObject@,SharpDX.MediaFoundation.AsyncCallback,SharpDX.ComObject)\"/></strong> method.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>You can use this method to cancel a previous call to <strong>BeginCreateObject</strong>. Because that method is asynchronous, however, it might be completed before the operation can be canceled. Therefore, your callback might still be invoked after you call this method.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFByteStreamHandler::CancelObjectCreation']/*\"/>\t\n            <msdn-id>ms701576</msdn-id>\t\n            <unmanaged>HRESULT IMFByteStreamHandler::CancelObjectCreation([In] IUnknown* pIUnknownCancelCookie)</unmanaged>\t\n            <unmanaged-short>IMFByteStreamHandler::CancelObjectCreation</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ByteStreamHandler.GetMaxNumberOfBytesRequiredForResolution(System.Int64@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the maximum number of bytes needed to create the media source or determine that the byte stream handler cannot parse this stream.</p>\t\n            </summary>\t\n            <param name=\"qwBytesRef\"><dd> <p>Receives the maximum number of bytes that are required.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFByteStreamHandler::GetMaxNumberOfBytesRequiredForResolution']/*\"/>\t\n            <msdn-id>ms704770</msdn-id>\t\n            <unmanaged>HRESULT IMFByteStreamHandler::GetMaxNumberOfBytesRequiredForResolution([Out] unsigned longlong* pqwBytes)</unmanaged>\t\n            <unmanaged-short>IMFByteStreamHandler::GetMaxNumberOfBytesRequiredForResolution</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.ByteStreamHandler.MaxNumberOfBytesRequiredForResolution\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the maximum number of bytes needed to create the media source or determine that the byte stream handler cannot parse this stream.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFByteStreamHandler::GetMaxNumberOfBytesRequiredForResolution']/*\"/>\t\n            <msdn-id>ms704770</msdn-id>\t\n            <unmanaged>GetMaxNumberOfBytesRequiredForResolution</unmanaged>\t\n            <unmanaged-short>GetMaxNumberOfBytesRequiredForResolution</unmanaged-short>\t\n            <unmanaged>HRESULT IMFByteStreamHandler::GetMaxNumberOfBytesRequiredForResolution([Out] unsigned longlong* pqwBytes)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.Clock\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Retrieves the last clock time that was correlated with system time. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>At some fixed interval, a clock correlates its internal clock ticks with the system time. (The system time is the time returned by the high-resolution performance counter.) This method returns:</p><ul> <li> The most recent clock time that was correlated with system time. </li> <li> The system time when the correlation was performed. </li> </ul><p> The clock time is returned in the <em>pllClockTime</em> parameter and is expressed in units of the clock's frequency. If the clock's <strong><see cref=\"M:SharpDX.MediaFoundation.Clock.GetClockCharacteristics(System.Int32@)\"/></strong> method returns the <strong><see cref=\"F:SharpDX.MediaFoundation.ClockCharacteristicsFlags.Frequency10mhz\"/></strong> flag, the clock's frequency is 10 MHz (each clock tick is 100 nanoseconds). Otherwise, you can get the clock's frequency by calling <strong><see cref=\"M:SharpDX.MediaFoundation.Clock.GetProperties(SharpDX.MediaFoundation.ClockProperties@)\"/></strong>. The frequency is given in the <strong>qwClockFrequency</strong> member of the <strong><see cref=\"T:SharpDX.MediaFoundation.ClockProperties\"/></strong> structure returned by that method. </p><p> The system time is returned in the <em>phnsSystemTime</em> parameter, and is always expressed in 100-nanosecond units. </p><p> To find out how often the clock correlates its clock time with the system time, call <strong>GetProperties</strong>. The correlation interval is given in the <strong>qwCorrelationRate</strong> member of the <strong><see cref=\"T:SharpDX.MediaFoundation.ClockProperties\"/></strong> structure. If <strong>qwCorrelationRate</strong> is zero, it means the clock performs the correlation whenever <strong>GetCorrelatedTime</strong> is called. Otherwise, you can calculate the current clock time by extrapolating from the last correlated time. </p><p> Some clocks support rate changes through the <strong><see cref=\"T:SharpDX.MediaFoundation.RateControl\"/></strong> interface. If so, the clock time advances at a speed of frequency ? current rate. If a clock does not expose the <strong><see cref=\"T:SharpDX.MediaFoundation.RateControl\"/></strong> interface, the rate is always 1.0. </p><p>For the presentation clock, the clock time is the presentation time, and is always relative to the starting time specified in <strong><see cref=\"M:SharpDX.MediaFoundation.PresentationClock.Start(System.Int64)\"/></strong>. You can also get the presentation time by calling <strong><see cref=\"M:SharpDX.MediaFoundation.PresentationClock.GetTime(System.Int64@)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFClock']/*\"/>\t\n            <msdn-id>ms694122</msdn-id>\t\n            <unmanaged>IMFClock</unmanaged>\t\n            <unmanaged-short>IMFClock</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Clock.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.Clock\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Clock.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.Clock\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.Clock\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Clock.GetClockCharacteristics(System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves the characteristics of the clock.</p>\t\n            </summary>\t\n            <param name=\"dwCharacteristicsRef\"><dd> <p>Receives a bitwise OR of values from the <strong><see cref=\"T:SharpDX.MediaFoundation.ClockCharacteristicsFlags\"/></strong> enumeration indicating the characteristics of the clock.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFClock::GetClockCharacteristics']/*\"/>\t\n            <msdn-id>ms697050</msdn-id>\t\n            <unmanaged>HRESULT IMFClock::GetClockCharacteristics([Out] unsigned int* pdwCharacteristics)</unmanaged>\t\n            <unmanaged-short>IMFClock::GetClockCharacteristics</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Clock.GetCorrelatedTime(System.Int32,System.Int64@,System.Int64@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Retrieves the last clock time that was correlated with system time. </p>\t\n            </summary>\t\n            <param name=\"dwReserved\"><dd> <p> Reserved, must be zero. </p> </dd></param>\t\n            <param name=\"llClockTimeRef\"><dd> <p> Receives the last known clock time, in units of the clock's frequency. </p> </dd></param>\t\n            <param name=\"hnsSystemTimeRef\"><dd> <p> Receives the system time that corresponds to the clock time returned in <em>pllClockTime</em>, in 100-nanosecond units. </p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.ClockNoTimeSource\"/></strong></dt> </dl> </td><td> <p> The clock does not have a time source. </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>At some fixed interval, a clock correlates its internal clock ticks with the system time. (The system time is the time returned by the high-resolution performance counter.) This method returns:</p><ul> <li> The most recent clock time that was correlated with system time. </li> <li> The system time when the correlation was performed. </li> </ul><p> The clock time is returned in the <em>pllClockTime</em> parameter and is expressed in units of the clock's frequency. If the clock's <strong><see cref=\"M:SharpDX.MediaFoundation.Clock.GetClockCharacteristics(System.Int32@)\"/></strong> method returns the <strong><see cref=\"F:SharpDX.MediaFoundation.ClockCharacteristicsFlags.Frequency10mhz\"/></strong> flag, the clock's frequency is 10 MHz (each clock tick is 100 nanoseconds). Otherwise, you can get the clock's frequency by calling <strong><see cref=\"M:SharpDX.MediaFoundation.Clock.GetProperties(SharpDX.MediaFoundation.ClockProperties@)\"/></strong>. The frequency is given in the <strong>qwClockFrequency</strong> member of the <strong><see cref=\"T:SharpDX.MediaFoundation.ClockProperties\"/></strong> structure returned by that method. </p><p> The system time is returned in the <em>phnsSystemTime</em> parameter, and is always expressed in 100-nanosecond units. </p><p> To find out how often the clock correlates its clock time with the system time, call <strong>GetProperties</strong>. The correlation interval is given in the <strong>qwCorrelationRate</strong> member of the <strong><see cref=\"T:SharpDX.MediaFoundation.ClockProperties\"/></strong> structure. If <strong>qwCorrelationRate</strong> is zero, it means the clock performs the correlation whenever <strong>GetCorrelatedTime</strong> is called. Otherwise, you can calculate the current clock time by extrapolating from the last correlated time. </p><p> Some clocks support rate changes through the <strong><see cref=\"T:SharpDX.MediaFoundation.RateControl\"/></strong> interface. If so, the clock time advances at a speed of frequency ? current rate. If a clock does not expose the <strong><see cref=\"T:SharpDX.MediaFoundation.RateControl\"/></strong> interface, the rate is always 1.0. </p><p>For the presentation clock, the clock time is the presentation time, and is always relative to the starting time specified in <strong><see cref=\"M:SharpDX.MediaFoundation.PresentationClock.Start(System.Int64)\"/></strong>. You can also get the presentation time by calling <strong><see cref=\"M:SharpDX.MediaFoundation.PresentationClock.GetTime(System.Int64@)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFClock::GetCorrelatedTime']/*\"/>\t\n            <msdn-id>ms694122</msdn-id>\t\n            <unmanaged>HRESULT IMFClock::GetCorrelatedTime([In] unsigned int dwReserved,[Out] longlong* pllClockTime,[Out] longlong* phnsSystemTime)</unmanaged>\t\n            <unmanaged-short>IMFClock::GetCorrelatedTime</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Clock.GetContinuityKey(System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves the clock's continuity key. (Not supported.)</p>\t\n            </summary>\t\n            <param name=\"dwContinuityKeyRef\"><dd> <p>Receives the continuity key.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>Continuity keys are currently not supported in Media Foundation. Clocks must return the value zero in the <em>pdwContinuityKey</em> parameter.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFClock::GetContinuityKey']/*\"/>\t\n            <msdn-id>ms700188</msdn-id>\t\n            <unmanaged>HRESULT IMFClock::GetContinuityKey([Out] unsigned int* pdwContinuityKey)</unmanaged>\t\n            <unmanaged-short>IMFClock::GetContinuityKey</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Clock.GetState(System.Int32,SharpDX.MediaFoundation.ClockState@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves the current state of the clock.</p>\t\n            </summary>\t\n            <param name=\"dwReserved\"><dd> <p>Reserved, must be zero.</p> </dd></param>\t\n            <param name=\"eClockStateRef\"><dd> <p>Receives the clock state, as a member of the <strong><see cref=\"T:SharpDX.MediaFoundation.ClockState\"/></strong> enumeration.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFClock::GetState']/*\"/>\t\n            <msdn-id>ms700206</msdn-id>\t\n            <unmanaged>HRESULT IMFClock::GetState([In] unsigned int dwReserved,[Out] MFCLOCK_STATE* peClockState)</unmanaged>\t\n            <unmanaged-short>IMFClock::GetState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Clock.GetProperties(SharpDX.MediaFoundation.ClockProperties@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves the properties of the clock.</p>\t\n            </summary>\t\n            <param name=\"clockPropertiesRef\"><dd> <p>Pointer to an <strong><see cref=\"T:SharpDX.MediaFoundation.ClockProperties\"/></strong> structure that receives the properties.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFClock::GetProperties']/*\"/>\t\n            <msdn-id>ms701613</msdn-id>\t\n            <unmanaged>HRESULT IMFClock::GetProperties([Out] MFCLOCK_PROPERTIES* pClockProperties)</unmanaged>\t\n            <unmanaged-short>IMFClock::GetProperties</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.Clock.ClockCharacteristics\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves the characteristics of the clock.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFClock::GetClockCharacteristics']/*\"/>\t\n            <msdn-id>ms697050</msdn-id>\t\n            <unmanaged>GetClockCharacteristics</unmanaged>\t\n            <unmanaged-short>GetClockCharacteristics</unmanaged-short>\t\n            <unmanaged>HRESULT IMFClock::GetClockCharacteristics([Out] unsigned int* pdwCharacteristics)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.Clock.ContinuityKey\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves the clock's continuity key. (Not supported.)</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Continuity keys are currently not supported in Media Foundation. Clocks must return the value zero in the <em>pdwContinuityKey</em> parameter.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFClock::GetContinuityKey']/*\"/>\t\n            <msdn-id>ms700188</msdn-id>\t\n            <unmanaged>GetContinuityKey</unmanaged>\t\n            <unmanaged-short>GetContinuityKey</unmanaged-short>\t\n            <unmanaged>HRESULT IMFClock::GetContinuityKey([Out] unsigned int* pdwContinuityKey)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.Clock.Properties\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves the properties of the clock.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFClock::GetProperties']/*\"/>\t\n            <msdn-id>ms701613</msdn-id>\t\n            <unmanaged>GetProperties</unmanaged>\t\n            <unmanaged-short>GetProperties</unmanaged-short>\t\n            <unmanaged>HRESULT IMFClock::GetProperties([Out] MFCLOCK_PROPERTIES* pClockProperties)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.ClockStateSink\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Receives state-change notifications from the presentation clock. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>To receive state-change notifications from the presentation clock, implement this interface and call <strong><see cref=\"M:SharpDX.MediaFoundation.PresentationClock.AddClockStateSink(SharpDX.MediaFoundation.ClockStateSink)\"/></strong> on the presentation clock.</p><p>This interface must be implemented by:</p><ul> <li> <p>Presentation time sources. The presentation clock uses this interface to request change states from the time source.</p> </li> <li> <p>Media sinks. Media sinks use this interface to get notifications when the presentation clock changes.</p> </li> </ul><p>Other objects that need to be notified can implement this interface.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFClockStateSink']/*\"/>\t\n            <msdn-id>ms701593</msdn-id>\t\n            <unmanaged>IMFClockStateSink</unmanaged>\t\n            <unmanaged-short>IMFClockStateSink</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ClockStateSink.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.ClockStateSink\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ClockStateSink.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.ClockStateSink\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.ClockStateSink\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ClockStateSink.OnClockStart(System.Int64,System.Int64)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Called when the presentation clock starts. </p>\t\n            </summary>\t\n            <param name=\"hnsSystemTime\"><dd> <p> The system time when the clock started, in 100-nanosecond units. </p> </dd></param>\t\n            <param name=\"llClockStartOffset\"><dd> <p> The new starting time for the clock, in 100-nanosecond units. This parameter can also equal <strong>PRESENTATION_CURRENT_POSITION</strong>, indicating the clock has started or restarted from its current position. </p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>This method is called whe the presentation clock's <strong><see cref=\"M:SharpDX.MediaFoundation.PresentationClock.Start(System.Int64)\"/></strong> method is called, with the following exception: If the clock is paused and <strong>Start</strong> is called with the value <strong>PRESENTATION_CURRENT_POSITION</strong>, <strong><see cref=\"M:SharpDX.MediaFoundation.ClockStateSink.OnClockRestart(System.Int64)\"/></strong> is called instead of <strong>OnClockStart</strong>.</p><p>The clock notifies the presentation time source by calling the time source's <strong>OnClockStart</strong> method. This call occurs synchronously within the <strong>Start</strong> method. If the time source returns an error from <strong>OnClockStart</strong>, the presentation clock's <strong>Start</strong> method returns an error and the state change does not take place.</p><p>For any object that is not the presentation time source, the <strong>OnClockStart</strong> method is called asynchronously, after the state change is completed. In that case, the return value from this method is ignored.</p><p>The value given in <em>llClockStartOffset</em> is the presentation time when the clock starts, so it is relative to the start of the presentation. Media sinks should not render any data with a presentation time earlier than <em>llClockStartOffSet</em>. If a sample straddles the offset?that is, if the offset falls between the sample's start and stop times?the sink should either trim the sample so that only data after <em>llClockStartOffset</em> is rendered, or else simply drop the sample.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFClockStateSink::OnClockStart']/*\"/>\t\n            <msdn-id>ms694879</msdn-id>\t\n            <unmanaged>HRESULT IMFClockStateSink::OnClockStart([In] longlong hnsSystemTime,[In] longlong llClockStartOffset)</unmanaged>\t\n            <unmanaged-short>IMFClockStateSink::OnClockStart</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ClockStateSink.OnClockStop(System.Int64)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Called when the presentation clock stops. </p>\t\n            </summary>\t\n            <param name=\"hnsSystemTime\"><dd> <p> The system time when the clock stopped, in 100-nanosecond units. </p> </dd></param>\t\n            <returns><p> The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table. </p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.SinkAlreadystopped\"/></strong></dt> </dl> </td><td> <p>Deprecated. Do not use this error code.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> When the presentation clock's <strong><see cref=\"M:SharpDX.MediaFoundation.PresentationClock.Stop\"/></strong> method is called, the clock notifies the presentation time source by calling the presentation time source's <strong>OnClockStop</strong> method. This call occurs synchronously within the <strong>Stop</strong> method. If the time source returns an error from <strong>OnClockStop</strong>, the presentation clock's <strong>Stop</strong> method returns an error and the state change does not take place. </p><p> For any object that is not the presentation time source, the <strong>OnClockStop</strong> method is called asynchronously, after the state change is completed. </p><p>If an object is already stopped, it should return <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong> from <strong>OnClockStop</strong>. It should not return an error code. </p><p><strong>Note</strong>??Although the header file mferror.h defines an error code named <strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.SinkAlreadystopped\"/></strong>, it should not be returned in this situation.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFClockStateSink::OnClockStop']/*\"/>\t\n            <msdn-id>ms697009</msdn-id>\t\n            <unmanaged>HRESULT IMFClockStateSink::OnClockStop([In] longlong hnsSystemTime)</unmanaged>\t\n            <unmanaged-short>IMFClockStateSink::OnClockStop</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ClockStateSink.OnClockPause(System.Int64)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Called when the presentation clock pauses. </p>\t\n            </summary>\t\n            <param name=\"hnsSystemTime\"><dd> <p> The system time when the clock was paused, in 100-nanosecond units. </p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>When the presentation clock's <strong><see cref=\"M:SharpDX.MediaFoundation.PresentationClock.Pause\"/></strong> method is called, the clock notifies the presentation time source by calling the time source's <strong>OnClockPause</strong> method. This call occurs synchronously within the <strong>Pause</strong> method. If the time source returns an error from <strong>OnClockPause</strong>, the presentation clock's <strong>Pause</strong> method returns an error and the state change does not take place.</p><p>For any object that is not the presentation time source, the <strong>OnClockPause</strong> method is called asynchronously, after the state change is completed. In that case, the return value from this method is ignored.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFClockStateSink::OnClockPause']/*\"/>\t\n            <msdn-id>ms703882</msdn-id>\t\n            <unmanaged>HRESULT IMFClockStateSink::OnClockPause([In] longlong hnsSystemTime)</unmanaged>\t\n            <unmanaged-short>IMFClockStateSink::OnClockPause</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ClockStateSink.OnClockRestart(System.Int64)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Called when the presentation clock restarts from the same position while paused. </p>\t\n            </summary>\t\n            <param name=\"hnsSystemTime\"><dd> <p> The system time when the clock restarted, in 100-nanosecond units. </p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p> This method is called if the presentation clock is paused and the <strong><see cref=\"M:SharpDX.MediaFoundation.PresentationClock.Start(System.Int64)\"/></strong> method is called with the value <strong>PRESENTATION_CURRENT_POSITION</strong>. </p><p> The clock notifies the presentation time source by calling the time source's <strong>OnClockRestart</strong> method. This call occurs synchronously within the <strong>Start</strong> method. If the time source returns an error from <strong>OnClockRestart</strong>, the presentation clock's <strong>Start</strong> method returns an error and the state change does not take place. </p><p> For any object that is not the presentation time source, the <strong>OnClockRestart</strong> method is called asynchronously, after the state change is completed. In that case, the return value from this method is ignored. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFClockStateSink::OnClockRestart']/*\"/>\t\n            <msdn-id>ms697215</msdn-id>\t\n            <unmanaged>HRESULT IMFClockStateSink::OnClockRestart([In] longlong hnsSystemTime)</unmanaged>\t\n            <unmanaged-short>IMFClockStateSink::OnClockRestart</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ClockStateSink.OnClockSetRate(System.Int64,System.Single)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Called when the rate changes on the presentation clock. </p>\t\n            </summary>\t\n            <param name=\"hnsSystemTime\"><dd> <p> The system time when the rate was set, in 100-nanosecond units. </p> </dd></param>\t\n            <param name=\"flRate\"><dd> <p> The new rate, as a multiplier of the normal playback rate. </p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p> When the presentation clock's <strong><see cref=\"M:SharpDX.MediaFoundation.RateControl.SetRate(SharpDX.Bool,System.Single)\"/></strong> method is called, the clock notifies the presentation time source by calling the time source's <strong>OnClockSetRate</strong> method. This call occurs synchronously within the <strong>SetRate</strong> method. If the time source returns an error from <strong>OnClockSetRate</strong>, the presentation clock's <strong>SetRate</strong> method returns an error and the state change does not take place. </p><p> For any object that is not the presentation time source, the <strong>OnClockSetRate</strong> method is called asynchronously, after the state change is completed. In that case, the return value from this method is ignored. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFClockStateSink::OnClockSetRate']/*\"/>\t\n            <msdn-id>ms702979</msdn-id>\t\n            <unmanaged>HRESULT IMFClockStateSink::OnClockSetRate([In] longlong hnsSystemTime,[In] float flRate)</unmanaged>\t\n            <unmanaged-short>IMFClockStateSink::OnClockSetRate</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.Collection\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves the number of objects in the collection.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFCollection']/*\"/>\t\n            <msdn-id>ms697034</msdn-id>\t\n            <unmanaged>IMFCollection</unmanaged>\t\n            <unmanaged-short>IMFCollection</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Collection.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.Collection\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Collection.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.Collection\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.Collection\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Collection.GetElementCount(System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves the number of objects in the collection.</p>\t\n            </summary>\t\n            <param name=\"cElementsRef\"><dd> <p>Receives the number of objects in the collection.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFCollection::GetElementCount']/*\"/>\t\n            <msdn-id>ms697034</msdn-id>\t\n            <unmanaged>HRESULT IMFCollection::GetElementCount([Out] unsigned int* pcElements)</unmanaged>\t\n            <unmanaged-short>IMFCollection::GetElementCount</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Collection.GetElement(System.Int32,SharpDX.ComObject@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves an object in the collection.</p>\t\n            </summary>\t\n            <param name=\"dwElementIndex\"><dd> <p> Zero-based index of the object to retrieve. Objects are indexed in the order in which they were added to the collection. </p> </dd></param>\t\n            <param name=\"unkElementOut\"><dd> <p> Receives a reference to the object's <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interface. The caller must release the interface. The retrieved reference value might be <strong><c>null</c></strong>. </p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p> This method does not remove the object from the collection. To remove an object, call <strong><see cref=\"M:SharpDX.MediaFoundation.Collection.RemoveElement(System.Int32,SharpDX.ComObject@)\"/></strong>. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFCollection::GetElement']/*\"/>\t\n            <msdn-id>ms701793</msdn-id>\t\n            <unmanaged>HRESULT IMFCollection::GetElement([In] unsigned int dwElementIndex,[Out] IUnknown** ppUnkElement)</unmanaged>\t\n            <unmanaged-short>IMFCollection::GetElement</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Collection.AddElement(SharpDX.ComObject)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Adds an object to the collection.</p>\t\n            </summary>\t\n            <param name=\"unkElementRef\"><dd> <p>Pointer to the object's <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interface.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>If <em>pUnkElement</em> is <strong><c>null</c></strong>, a <strong><c>null</c></strong> reference is added to the collection.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFCollection::AddElement']/*\"/>\t\n            <msdn-id>ms695202</msdn-id>\t\n            <unmanaged>HRESULT IMFCollection::AddElement([In, Optional] IUnknown* pUnkElement)</unmanaged>\t\n            <unmanaged-short>IMFCollection::AddElement</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Collection.RemoveElement(System.Int32,SharpDX.ComObject@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Removes an object from the collection.</p>\t\n            </summary>\t\n            <param name=\"dwElementIndex\"><dd> <p>Zero-based index of the object to remove. Objects are indexed in the order in which they were added to the collection.</p> </dd></param>\t\n            <param name=\"unkElementOut\"><dd> <p>Receives a reference to the <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interface of the object. The caller must release the interface. This parameter cannot be <strong><c>null</c></strong>, but the retrieved reference value might be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFCollection::RemoveElement']/*\"/>\t\n            <msdn-id>ms697010</msdn-id>\t\n            <unmanaged>HRESULT IMFCollection::RemoveElement([In] unsigned int dwElementIndex,[Out] IUnknown** ppUnkElement)</unmanaged>\t\n            <unmanaged-short>IMFCollection::RemoveElement</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Collection.InsertElementAt(System.Int32,SharpDX.ComObject)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Adds an object at the specified index in the collection.</p>\t\n            </summary>\t\n            <param name=\"dwIndex\"><dd> <p>The zero-based index where the object will be added to the collection.</p> </dd></param>\t\n            <param name=\"unknownRef\"><dd> <p>The object to insert.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFCollection::InsertElementAt']/*\"/>\t\n            <msdn-id>ms703963</msdn-id>\t\n            <unmanaged>HRESULT IMFCollection::InsertElementAt([In] unsigned int dwIndex,[In, Optional] IUnknown* pUnknown)</unmanaged>\t\n            <unmanaged-short>IMFCollection::InsertElementAt</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Collection.RemoveAllElements\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Removes all items from the collection.</p>\t\n            </summary>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFCollection::RemoveAllElements']/*\"/>\t\n            <msdn-id>ms700194</msdn-id>\t\n            <unmanaged>HRESULT IMFCollection::RemoveAllElements()</unmanaged>\t\n            <unmanaged-short>IMFCollection::RemoveAllElements</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.Collection.ElementCount\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves the number of objects in the collection.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFCollection::GetElementCount']/*\"/>\t\n            <msdn-id>ms697034</msdn-id>\t\n            <unmanaged>GetElementCount</unmanaged>\t\n            <unmanaged-short>GetElementCount</unmanaged-short>\t\n            <unmanaged>HRESULT IMFCollection::GetElementCount([Out] unsigned int* pcElements)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.ContentEnabler\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves a URL for performing a manual content enabling action.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>If the enabling action can be performed by navigating to a URL, this method returns the URL. If no such URL exists, the method returns a failure code.</p><p>The purpose of the URL depends on the content enabler type, which is obtained by calling <strong><see cref=\"M:SharpDX.MediaFoundation.ContentEnabler.GetEnableType(System.Guid@)\"/></strong>.</p><table> <tr><th>Enable type</th><th>Purpose of URL</th></tr> <tr><td>Individualization</td><td>Not applicable.</td></tr> <tr><td>License acquisition</td><td>URL to obtain the license. Call <strong><see cref=\"M:SharpDX.MediaFoundation.ContentEnabler.GetEnableData(System.Byte[],System.Int32@)\"/></strong> and submit the data to the URL as an HTTP POST request. To receive notification when the license is acquired, call <strong><see cref=\"M:SharpDX.MediaFoundation.ContentEnabler.MonitorEnable\"/></strong>.</td></tr> <tr><td>Revocation</td><td>URL to a webpage where the user can download and install an updated component.</td></tr> </table><p>?</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFContentEnabler']/*\"/>\t\n            <msdn-id>bb970345</msdn-id>\t\n            <unmanaged>IMFContentEnabler</unmanaged>\t\n            <unmanaged-short>IMFContentEnabler</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ContentEnabler.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.ContentEnabler\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ContentEnabler.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.ContentEnabler\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.ContentEnabler\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ContentEnabler.GetEnableType(System.Guid@)\">\n            <summary>\t\n            <p>Retrieves the type of operation that this content enabler performs.</p>  <see cref=\"T:SharpDX.Result\"/> GetEnableType( <see cref=\"T:System.Guid\"/>*  pType\t\n            );<p></p>Parameters <p> pType </p> <p>[out]  Receives a <see cref=\"T:System.Guid\"/> that identifies the type of operation. An application can tailor its user interface (UI) strings for known operation types. See Remarks.</p>  <p>The method returns an <see cref=\"T:SharpDX.Result\"/>. Possible values include, but are not limited to, those in the following table.</p> <table><tr> <th> Return code              </th> <th> Description              </th> </tr><tr> <td> <p><see cref=\"F:SharpDX.Result.Ok\"/></p> </td> <td> <p>The method succeeded.</p> </td> </tr></table>  <p>The following GUIDs are defined for the pType parameter.</p> <table><tr> <th> Value </th> <th> Description </th> </tr><tr> <td> <p>MFENABLETYPE_MF_RebootRequired</p> </td> <td> <p>The user must reboot his or her computer.</p> </td> </tr><tr> <td> <p>MFENABLETYPE_MF_UpdateRevocationInformation</p> </td> <td> <p>Update revocation information.</p> </td> </tr><tr> <td> <p>MFENABLETYPE_MF_UpdateUntrustedComponent</p> </td> <td> <p>Update untrusted components.</p> </td> </tr><tr> <td> <p>MFENABLETYPE_WMDRMV1_LicenseAcquisition</p> </td> <td> <p>License acquisition for Windows Media Digital Rights Management (DRM) version 1.</p> </td> </tr><tr> <td> <p>MFENABLETYPE_WMDRMV7_Individualization</p> </td> <td> <p>Individualization.</p> </td> </tr><tr> <td> <p>MFENABLETYPE_WMDRMV7_LicenseAcquisition</p> </td> <td> <p>License acquisition for Windows Media DRM version 7 or later.</p> </td> </tr></table>  <p> Client: Requires Windows Vista.</p> <p> Header: Include mfidl.h.</p> <p> Library: Use mfuuid.lib.</p> ReferenceIMFContentEnabler InterfaceConceptsHow to Play Protected Media Files\t\n            </summary>\t\n            <param name=\"typeRef\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFContentEnabler::GetEnableType']/*\"/>\t\n            <msdn-id>ms700192</msdn-id>\t\n            <unmanaged>HRESULT IMFContentEnabler::GetEnableType([Out] GUID* pType)</unmanaged>\t\n            <unmanaged-short>IMFContentEnabler::GetEnableType</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ContentEnabler.GetEnableURL(System.IntPtr,System.Int32@,System.IntPtr)\">\n            <summary>\t\n            <p>Retrieves a URL for performing a manual content enabling action.</p>  <see cref=\"T:SharpDX.Result\"/> GetEnableURL( LPWSTR*  ppwszURL, DWORD*  pcchURL, <see cref=\"T:SharpDX.MediaFoundation.UrlTrustStatus\"/>*  pTrustStatus\t\n            );<p></p>Parameters <p> ppwszURL </p> <p>[out]  Receives a reference to a buffer that contains the URL. The caller must release the memory for the buffer by calling CoTaskMemFree.</p> <p> pcchURL </p> <p>[out]  Receives the length of the string retrieved in ppwszURL, including the terminating <c>null</c> character.</p> <p> pTrustStatus </p> <p>[in, out]  Receives a member of the <see cref=\"T:SharpDX.MediaFoundation.UrlTrustStatus\"/> Enumeration indicating whether the URL is trusted. </p>  <p>The method returns an <see cref=\"T:SharpDX.Result\"/>. Possible values include, but are not limited to, those in the following table.</p> <table><tr> <th> Return code              </th> <th> Description              </th> </tr><tr> <td> <p><see cref=\"F:SharpDX.Result.Ok\"/></p> </td> <td> <p>The method succeeded.</p> </td> </tr><tr> <td> <p><see cref=\"F:SharpDX.MediaFoundation.ResultCode.NotAvailable\"/></p> </td> <td> <p>No URL is available.</p> </td> </tr></table>  <p>If the enabling action can be performed by navigating to a URL, this method returns the URL. If no such URL exists, the method returns a failure code.</p> <p>The purpose of the URL depends on the content enabler type, which is obtained by calling <see cref=\"M:SharpDX.MediaFoundation.ContentEnabler.GetEnableType(System.Guid@)\"/>.</p> <table><tr> <th> Enable type </th> <th> Purpose of URL </th> </tr><tr> <td> <p>Individualization</p> </td> <td> <p>Not applicable.</p> </td> </tr><tr> <td> <p>License acquisition</p> </td> <td> <p>URL to obtain the license. Call <see cref=\"M:SharpDX.MediaFoundation.ContentEnabler.GetEnableData(System.Byte[],System.Int32@)\"/> and submit the data to the URL as an HTTP POST request. To receive notification when the license is acquired, call <see cref=\"M:SharpDX.MediaFoundation.ContentEnabler.MonitorEnable\"/>.</p> </td> </tr><tr> <td> <p>Revocation</p> </td> <td> <p>URL to a Web page where the user can download and install an updated component.</p> </td> </tr></table>  <p> Client: Requires Windows Vista.</p> <p> Header: Include mfidl.h.</p> <p> Library: Use mfuuid.lib.</p> ReferenceIMFContentEnabler InterfaceConceptsHow to Play Protected Media Files\t\n            </summary>\t\n            <param name=\"wszURLOut\">No documentation.</param>\t\n            <param name=\"cchURLRef\">No documentation.</param>\t\n            <param name=\"trustStatusRef\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFContentEnabler::GetEnableURL']/*\"/>\t\n            <msdn-id>ms702214</msdn-id>\t\n            <unmanaged>HRESULT IMFContentEnabler::GetEnableURL([Out, Buffer, Optional] wchar_t** ppwszURL,[Out] unsigned int* pcchURL,[InOut, Optional] MF_URL_TRUST_STATUS* pTrustStatus)</unmanaged>\t\n            <unmanaged-short>IMFContentEnabler::GetEnableURL</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ContentEnabler.GetEnableData(System.Byte[],System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves the data for a manual content enabling action.</p>\t\n            </summary>\t\n            <param name=\"bDataOut\"><dd> <p>Receives a reference to a buffer that contains the data. The caller must free the buffer by calling <strong>CoTaskMemFree</strong>.</p> </dd></param>\t\n            <param name=\"cbDataRef\"><dd> <p>Receives the size of the <em>ppbData</em> buffer.</p> </dd></param>\t\n            <returns><p>The method returns an <see cref=\"T:SharpDX.Result\"/>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.NotAvailable\"/></strong></dt> </dl> </td><td> <p>No data is available.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>The purpose of the data depends on the content enabler type, which is obtained by calling <strong><see cref=\"M:SharpDX.MediaFoundation.ContentEnabler.GetEnableType(System.Guid@)\"/></strong>.</p><table> <tr><th>Enable type</th><th>Purpose of data</th></tr> <tr><td>Individualization</td><td>Not applicable.</td></tr> <tr><td>License acquisition</td><td>HTTP POST data.</td></tr> <tr><td>Revocation</td><td> <strong><see cref=\"T:SharpDX.MediaFoundation.RrComponents\"/></strong> structure.</td></tr> </table><p>?</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFContentEnabler::GetEnableData']/*\"/>\t\n            <msdn-id>bb970525</msdn-id>\t\n            <unmanaged>HRESULT IMFContentEnabler::GetEnableData([Out, Buffer, Optional] unsigned char** ppbData,[Out] unsigned int* pcbData)</unmanaged>\t\n            <unmanaged-short>IMFContentEnabler::GetEnableData</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ContentEnabler.IsAutomaticSupported_(SharpDX.Bool@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Queries whether the content enabler can perform all of its actions automatically.</p>\t\n            </summary>\t\n            <param name=\"fAutomaticRef\"><dd> <p>Receives a Boolean value. If <strong>TRUE</strong>, the content enabler can perform the enabing action automatically.</p> </dd></param>\t\n            <returns><p>The method returns an <see cref=\"T:SharpDX.Result\"/>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>If this method returns <strong>TRUE</strong> in the <em>pfAutomatic</em> parameter, call the <strong><see cref=\"M:SharpDX.MediaFoundation.ContentEnabler.AutomaticEnable\"/></strong> method to perform the enabling action.</p><p>If this method returns <strong><see cref=\"F:SharpDX.Result.False\"/></strong> in the <em>pfAutomatic</em> parameter, the application must use manual enabling. To do so, call <strong><see cref=\"M:SharpDX.MediaFoundation.ContentEnabler.GetEnableURL(System.IntPtr,System.Int32@,System.IntPtr)\"/></strong> and <strong><see cref=\"M:SharpDX.MediaFoundation.ContentEnabler.GetEnableData(System.Byte[],System.Int32@)\"/></strong> to get the URL and data needed for manual enabling.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFContentEnabler::IsAutomaticSupported']/*\"/>\t\n            <msdn-id>bb970334</msdn-id>\t\n            <unmanaged>HRESULT IMFContentEnabler::IsAutomaticSupported([Out] BOOL* pfAutomatic)</unmanaged>\t\n            <unmanaged-short>IMFContentEnabler::IsAutomaticSupported</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ContentEnabler.AutomaticEnable\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Performs a content enabling action without any user interaction.</p>\t\n            </summary>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>This method is asynchronous. When the operation is complete, the content enabler sends an <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.EnablerCompleted\"/> event. While the operation is in progress, the content enabler might send <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.EnablerProgress\"/> events.</p><p>To find out whether the content enabler supports this method, call <strong><see cref=\"M:SharpDX.MediaFoundation.ContentEnabler.IsAutomaticSupported_(SharpDX.Bool@)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFContentEnabler::AutomaticEnable']/*\"/>\t\n            <msdn-id>ms699012</msdn-id>\t\n            <unmanaged>HRESULT IMFContentEnabler::AutomaticEnable()</unmanaged>\t\n            <unmanaged-short>IMFContentEnabler::AutomaticEnable</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ContentEnabler.MonitorEnable\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Requests notification when the enabling action is completed.</p>\t\n            </summary>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong>S_FALSE</strong></dt> </dl> </td><td> <p>The method succeeded and no action was required.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>If you use a manual enabling action, call this method to be notified when the operation completes. If this method returns <see cref=\"F:SharpDX.Result.Ok\"/>, the content enabler will send an <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.EnablerCompleted\"/> event when the operation is completed. If the application cancels the operatation before completing it, call <strong><see cref=\"M:SharpDX.MediaFoundation.ContentEnabler.Cancel\"/></strong>.</p><p>You do not have to call <strong>MonitorEnable</strong> when you use automatic enabling by calling <strong><see cref=\"M:SharpDX.MediaFoundation.ContentEnabler.AutomaticEnable\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFContentEnabler::MonitorEnable']/*\"/>\t\n            <msdn-id>ms698997</msdn-id>\t\n            <unmanaged>HRESULT IMFContentEnabler::MonitorEnable()</unmanaged>\t\n            <unmanaged-short>IMFContentEnabler::MonitorEnable</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ContentEnabler.Cancel\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Cancels a pending content enabling action.</p>\t\n            </summary>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>The content enabler sends an <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.EnablerCompleted\"/> event with a status code of E_CANCEL.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFContentEnabler::Cancel']/*\"/>\t\n            <msdn-id>ms704633</msdn-id>\t\n            <unmanaged>HRESULT IMFContentEnabler::Cancel()</unmanaged>\t\n            <unmanaged-short>IMFContentEnabler::Cancel</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.ContentEnabler.EnableType\">\n            <summary>\t\n            <p>Retrieves the type of operation that this content enabler performs.</p>  <see cref=\"T:SharpDX.Result\"/> GetEnableType( <see cref=\"T:System.Guid\"/>*  pType\t\n            );<p></p>Parameters <p> pType </p> <p>[out]  Receives a <see cref=\"T:System.Guid\"/> that identifies the type of operation. An application can tailor its user interface (UI) strings for known operation types. See Remarks.</p>  <p>The method returns an <see cref=\"T:SharpDX.Result\"/>. Possible values include, but are not limited to, those in the following table.</p> <table><tr> <th> Return code              </th> <th> Description              </th> </tr><tr> <td> <p><see cref=\"F:SharpDX.Result.Ok\"/></p> </td> <td> <p>The method succeeded.</p> </td> </tr></table>  <p>The following GUIDs are defined for the pType parameter.</p> <table><tr> <th> Value </th> <th> Description </th> </tr><tr> <td> <p>MFENABLETYPE_MF_RebootRequired</p> </td> <td> <p>The user must reboot his or her computer.</p> </td> </tr><tr> <td> <p>MFENABLETYPE_MF_UpdateRevocationInformation</p> </td> <td> <p>Update revocation information.</p> </td> </tr><tr> <td> <p>MFENABLETYPE_MF_UpdateUntrustedComponent</p> </td> <td> <p>Update untrusted components.</p> </td> </tr><tr> <td> <p>MFENABLETYPE_WMDRMV1_LicenseAcquisition</p> </td> <td> <p>License acquisition for Windows Media Digital Rights Management (DRM) version 1.</p> </td> </tr><tr> <td> <p>MFENABLETYPE_WMDRMV7_Individualization</p> </td> <td> <p>Individualization.</p> </td> </tr><tr> <td> <p>MFENABLETYPE_WMDRMV7_LicenseAcquisition</p> </td> <td> <p>License acquisition for Windows Media DRM version 7 or later.</p> </td> </tr></table>  <p> Client: Requires Windows Vista.</p> <p> Header: Include mfidl.h.</p> <p> Library: Use mfuuid.lib.</p> ReferenceIMFContentEnabler InterfaceConceptsHow to Play Protected Media Files\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFContentEnabler::GetEnableType']/*\"/>\t\n            <msdn-id>ms700192</msdn-id>\t\n            <unmanaged>GetEnableType</unmanaged>\t\n            <unmanaged-short>GetEnableType</unmanaged-short>\t\n            <unmanaged>HRESULT IMFContentEnabler::GetEnableType([Out] GUID* pType)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.ContentEnabler.IsAutomaticSupported\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Queries whether the content enabler can perform all of its actions automatically.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>If this method returns <strong>TRUE</strong> in the <em>pfAutomatic</em> parameter, call the <strong><see cref=\"M:SharpDX.MediaFoundation.ContentEnabler.AutomaticEnable\"/></strong> method to perform the enabling action.</p><p>If this method returns <strong><see cref=\"F:SharpDX.Result.False\"/></strong> in the <em>pfAutomatic</em> parameter, the application must use manual enabling. To do so, call <strong><see cref=\"M:SharpDX.MediaFoundation.ContentEnabler.GetEnableURL(System.IntPtr,System.Int32@,System.IntPtr)\"/></strong> and <strong><see cref=\"M:SharpDX.MediaFoundation.ContentEnabler.GetEnableData(System.Byte[],System.Int32@)\"/></strong> to get the URL and data needed for manual enabling.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFContentEnabler::IsAutomaticSupported']/*\"/>\t\n            <msdn-id>bb970334</msdn-id>\t\n            <unmanaged>IsAutomaticSupported</unmanaged>\t\n            <unmanaged-short>IsAutomaticSupported</unmanaged-short>\t\n            <unmanaged>HRESULT IMFContentEnabler::IsAutomaticSupported([Out] BOOL* pfAutomatic)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.ContentProtectionManager\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Enables playback of protected content by providing the application with a reference to a content enabler object.</p><p>Applications that play protected content should implement this interface.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>A <em>content enabler</em> is an object that performs some action that is required to play a piece of protected content. For example, the action might be obtaining a DRM license. Content enablers expose the <strong><see cref=\"T:SharpDX.MediaFoundation.ContentEnabler\"/></strong> interface, which defines a generic mechanism for content enabler. Content enablers are created inside the protected media path (PMP) process. However, they must be invoked from the application process. Therefore, the <strong><see cref=\"T:SharpDX.MediaFoundation.ContentProtectionManager\"/></strong> interface provides a way for the PMP Media Session to notify the application.</p><p>To use this interface, do the following:</p><ol> <li> <p>Implement the interface in your application.</p> </li> <li> <p>Create an attribute store by calling <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateAttributes(SharpDX.MediaFoundation.MediaAttributes,System.Int32)\"/></strong>.</p> </li> <li> <p>Set the <strong><see cref=\"F:SharpDX.MediaFoundation.MediaSessionAttributeKeys.ContentProtectionManager\"/></strong> attribute on the attribute store. The attribute value is a reference to your <strong><see cref=\"T:SharpDX.MediaFoundation.ContentProtectionManager\"/></strong> implementation.</p> </li> <li> <p>Call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreatePMPMediaSession(System.Int32,SharpDX.MediaFoundation.MediaAttributes,SharpDX.MediaFoundation.MediaSession@,SharpDX.MediaFoundation.Activate@)\"/></strong> and pass the attribute store in the <em>pConfiguration</em> parameter.</p> </li> </ol><p>If the content requires a content enabler, the application's <strong>BeginEnableContent</strong> method is called. Usually this method called during the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaSession.SetTopology(System.Int32,SharpDX.MediaFoundation.Topology)\"/></strong> operation, before the Media Session raises the <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.SessionTopologySet\"/> event. The application might receive multiple <strong>BeginEnableContent</strong> calls for a single piece of content. The <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.SessionTopologySet\"/> event signals that the content-enabling process is complete for the current topology. The <strong>BeginEnableContent</strong> method can also be called outside of the <strong>SetTopology</strong> operation, but less commonly.</p><p>Many content enablers send machine-specific data to the network, which can have privacy implications. One of the purposes of the <strong><see cref=\"T:SharpDX.MediaFoundation.ContentProtectionManager\"/></strong> interface is to give applications an opportunity to display information to the user and enable to user to opt in or out of the process.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFContentProtectionManager']/*\"/>\t\n            <msdn-id>ms694217</msdn-id>\t\n            <unmanaged>IMFContentProtectionManager</unmanaged>\t\n            <unmanaged-short>IMFContentProtectionManager</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ContentProtectionManager.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.ContentProtectionManager\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ContentProtectionManager.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.ContentProtectionManager\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.ContentProtectionManager\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ContentProtectionManager.BeginEnableContent(SharpDX.MediaFoundation.Activate,SharpDX.MediaFoundation.Topology,SharpDX.MediaFoundation.AsyncCallback,SharpDX.ComObject)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Ends an asynchronous request to perform a content enabling action. This method is called by the protected media path (PMP) to complete an asynchronous call to <strong><see cref=\"M:SharpDX.MediaFoundation.ContentProtectionManager.BeginEnableContent(SharpDX.MediaFoundation.Activate,SharpDX.MediaFoundation.Topology,SharpDX.MediaFoundation.AsyncCallback,SharpDX.ComObject)\"/></strong>.</p>\t\n            </summary>\t\n            <param name=\"enablerActivateRef\">No documentation.</param>\t\n            <param name=\"topoRef\">No documentation.</param>\t\n            <param name=\"callbackRef\">No documentation.</param>\t\n            <param name=\"unkStateRef\">No documentation.</param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>When the <strong>BeginEnableContent</strong> method completes asynchronously, the application notifies the PMP by invoking the asynchronous callback. The PMP calls <strong>EndEnableContent</strong> on the application to get the result code. This method is called on the application's thread from inside the callback method. Therefore, it must not block the thread that invoked the callback.</p><p>The application must return the success or failure code of the asynchronous processing that followed the call to <strong>BeginEnableContent</strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFContentProtectionManager::BeginEnableContent']/*\"/>\t\n            <msdn-id>ms694267</msdn-id>\t\n            <unmanaged>HRESULT IMFContentProtectionManager::BeginEnableContent([In] IMFActivate* pEnablerActivate,[In] IMFTopology* pTopo,[In] IMFAsyncCallback* pCallback,[In] IUnknown* punkState)</unmanaged>\t\n            <unmanaged-short>IMFContentProtectionManager::BeginEnableContent</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ContentProtectionManager.EndEnableContent(SharpDX.MediaFoundation.AsyncResult)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Ends an asynchronous request to perform a content enabling action. This method is called by the protected media path (PMP) to complete an asynchronous call to <strong><see cref=\"M:SharpDX.MediaFoundation.ContentProtectionManager.BeginEnableContent(SharpDX.MediaFoundation.Activate,SharpDX.MediaFoundation.Topology,SharpDX.MediaFoundation.AsyncCallback,SharpDX.ComObject)\"/></strong>.</p>\t\n            </summary>\t\n            <param name=\"resultRef\">No documentation.</param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>When the <strong>BeginEnableContent</strong> method completes asynchronously, the application notifies the PMP by invoking the asynchronous callback. The PMP calls <strong>EndEnableContent</strong> on the application to get the result code. This method is called on the application's thread from inside the callback method. Therefore, it must not block the thread that invoked the callback.</p><p>The application must return the success or failure code of the asynchronous processing that followed the call to <strong>BeginEnableContent</strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFContentProtectionManager::EndEnableContent']/*\"/>\t\n            <msdn-id>ms694267</msdn-id>\t\n            <unmanaged>HRESULT IMFContentProtectionManager::EndEnableContent([In] IMFAsyncResult* pResult)</unmanaged>\t\n            <unmanaged-short>IMFContentProtectionManager::EndEnableContent</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DesiredSample\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Enables the presenter for the enhanced video renderer (EVR) to request a specific frame from the video mixer.</p><p>The sample objects created by the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateVideoSampleFromSurface(SharpDX.ComObject,SharpDX.MediaFoundation.Sample@)\"/></strong> function implement this interface. To retrieve a reference to this interface, call <strong>QueryInterface</strong> on the sample.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFDesiredSample']/*\"/>\t\n            <msdn-id>ms696237</msdn-id>\t\n            <unmanaged>IMFDesiredSample</unmanaged>\t\n            <unmanaged-short>IMFDesiredSample</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.DesiredSample.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.DesiredSample\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.DesiredSample.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.DesiredSample\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.DesiredSample\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.DesiredSample.GetDesiredSampleTimeAndDuration(System.Int64@,System.Int64@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Called by the mixer to get the time and duration of the sample requested by the presenter.</p>\t\n            </summary>\t\n            <param name=\"hnsSampleTimeRef\"><dd> <p>Receives the desired sample time that should be mixed.</p> </dd></param>\t\n            <param name=\"hnsSampleDurationRef\"><dd> <p>Receives the sample duration that should be mixed.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.NotAvailable\"/></strong></dt> </dl> </td><td> <p>No time stamp was set for this sample. See <strong><see cref=\"M:SharpDX.MediaFoundation.DesiredSample.Clear\"/></strong>.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFDesiredSample::GetDesiredSampleTimeAndDuration']/*\"/>\t\n            <msdn-id>ms694058</msdn-id>\t\n            <unmanaged>HRESULT IMFDesiredSample::GetDesiredSampleTimeAndDuration([Out] longlong* phnsSampleTime,[Out] longlong* phnsSampleDuration)</unmanaged>\t\n            <unmanaged-short>IMFDesiredSample::GetDesiredSampleTimeAndDuration</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.DesiredSample.SetDesiredSampleTimeAndDuration(System.Int64,System.Int64)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Called by the presenter to set the time and duration of the sample that it requests from the mixer.</p>\t\n            </summary>\t\n            <param name=\"hnsSampleTime\"><dd> <p>The time of the requested sample.</p> </dd></param>\t\n            <param name=\"hnsSampleDuration\"><dd> <p>The duration of the requested sample.</p> </dd></param>\t\n            <remarks>\t\n            <p>This value should be set prior to passing the buffer to the mixer for a Mix operation. The mixer sets the actual start and duration times on the sample before sending it back.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFDesiredSample::SetDesiredSampleTimeAndDuration']/*\"/>\t\n            <msdn-id>ms694296</msdn-id>\t\n            <unmanaged>void IMFDesiredSample::SetDesiredSampleTimeAndDuration([In] longlong hnsSampleTime,[In] longlong hnsSampleDuration)</unmanaged>\t\n            <unmanaged-short>IMFDesiredSample::SetDesiredSampleTimeAndDuration</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.DesiredSample.Clear\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Clears the time stamps previously set by a call to <strong><see cref=\"M:SharpDX.MediaFoundation.DesiredSample.SetDesiredSampleTimeAndDuration(System.Int64,System.Int64)\"/></strong>.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>After this method is called, the <strong><see cref=\"M:SharpDX.MediaFoundation.DesiredSample.GetDesiredSampleTimeAndDuration(System.Int64@,System.Int64@)\"/></strong> method returns <see cref=\"F:SharpDX.MediaFoundation.ResultCode.NotAvailable\"/>.</p><p>This method also clears the time stamp and duration and removes all attributes from the sample.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFDesiredSample::Clear']/*\"/>\t\n            <msdn-id>ms703903</msdn-id>\t\n            <unmanaged>void IMFDesiredSample::Clear()</unmanaged>\t\n            <unmanaged-short>IMFDesiredSample::Clear</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DLNASinkInit\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Initializes the Digital Living Network Alliance (DLNA) media sink. </p><p>The DLNA media sink exposes this interface. To get a reference to this interface, call <strong>CoCreateInstance</strong>. The CLSID is <strong>CLSID_MPEG2DLNASink</strong>.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFDLNASinkInit']/*\"/>\t\n            <msdn-id>dd368787</msdn-id>\t\n            <unmanaged>IMFDLNASinkInit</unmanaged>\t\n            <unmanaged-short>IMFDLNASinkInit</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.DLNASinkInit.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.DLNASinkInit\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.DLNASinkInit.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.DLNASinkInit\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.DLNASinkInit\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.DLNASinkInit.Initialize_(System.IntPtr,SharpDX.Bool)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Initializes the Digital Living Network Alliance (DLNA) media sink.</p>\t\n            </summary>\t\n            <param name=\"byteStreamRef\"><dd> <p>Pointer to a byte stream. The DLNA media sink writes data to this byte stream. The byte stream must be writable.</p> </dd></param>\t\n            <param name=\"fPal\"><dd> <p>If <strong>TRUE</strong>, the DLNA media sink accepts PAL video formats. Otherwise, it accepts NTSC video  formats.</p> </dd></param>\t\n            <returns><p>This method can return one of these values.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.AlreadyInitializeD\"/></strong></strong></dt> </dl> </td><td> <p>The method was already called.</p> </td></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/></strong></strong></dt> </dl> </td><td> <p>The media sink's <strong><see cref=\"M:SharpDX.MediaFoundation.MediaSink.Shutdown\"/></strong> method was called.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFDLNASinkInit::Initialize']/*\"/>\t\n            <msdn-id>dd368788</msdn-id>\t\n            <unmanaged>HRESULT IMFDLNASinkInit::Initialize([In] IMFByteStream* pByteStream,[In] BOOL fPal)</unmanaged>\t\n            <unmanaged-short>IMFDLNASinkInit::Initialize</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DRMNetHelper\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Configures Windows Media Digital Rights Management (DRM) for Network Devices on a network sink.</p><p> The Advanced Systems Format (ASF) streaming media sink exposes this interface. To get a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.DRMNetHelper\"/></strong> interface, perform the following tasks.</p><ol> <li>Get the activation object for the ASF streaming media sink by calling <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateASFStreamingMediaSinkActivate(SharpDX.MediaFoundation.Activate,SharpDX.MediaFoundation.ASFContentInfo,SharpDX.MediaFoundation.Activate@)\"/></strong>.</li> <li>Create the media sink by calling  the activation object <strong>ActivateObject</strong> method.</li> <li>Get an <strong><see cref=\"T:SharpDX.MediaFoundation.DRMNetHelper\"/></strong> reference by calling <strong>QueryInterface</strong> on the media sink.</li> </ol><p>For more information, see Remarks.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>To stream protected content over a network, the <em>ASF streaming media sink</em> provides an output trust authority (OTA) that supports  Windows Media DRM for Network Devices and implements the <strong><see cref=\"T:SharpDX.MediaFoundation.DRMNetHelper\"/></strong> interface. For this OTA,  encryption occurs on each frame before multiplexing. The license request and response process takes place in the media sink.</p><p>The application gets a reference to <strong><see cref=\"T:SharpDX.MediaFoundation.DRMNetHelper\"/></strong> and uses the methods to handle the license request and response. The application is also responsible for sending the license to the client.</p><p>To stream the content, the application does the following:</p><ol> <li>Provide the HTTP byte stream to which the media sink writes the streamed content. <p>To stream DRM-protected content over a network from a server to a client, an application must use the Microsoft Media Foundation Protected Media Path (PMP). The media sink and the application-provided HTTP byte stream exist in  mfpmp.exe. Therefore, the byte stream must expose the <strong><see cref=\"T:SharpDX.MediaFoundation.Activate\"/></strong> interface so that it can be created out-of-process.</p><p><strong>Note</strong>??This might affect how the code is packaged. The DLL that contains the HTTP byte stream and other dependent DLLs must be signed for the Protected Environment (PE-signed).  </p> </li> <li>Set the <strong>MFPKEY_ASFMEDIASINK_DRMACTION</strong> property to <strong><see cref=\"F:SharpDX.MediaFoundation.SinkWmdrmaction.Transcrypt\"/></strong>. The media sink's property store is available to the application through the ASF ContentInfo. To get the property store, call <strong><see cref=\"M:SharpDX.MediaFoundation.ASFContentInfo.GetEncodingConfigurationPropertyStore(System.Int16,SharpDX.ComObject@)\"/></strong>.</li> <li>Get a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.DRMNetHelper\"/></strong> interface by querying the media sink.</li> <li>To make a license request, call <strong><see cref=\"M:SharpDX.MediaFoundation.DRMNetHelper.ProcessLicenseRequest(System.Byte[],System.Int32,System.Byte[],System.Int32@,System.IntPtr)\"/></strong>. This method calls into the OTA implementation and retrieves the license.<p>When the clock starts for the first time or restarts , the encrypter that is used for encrypting samples is retrieved, and   the license response is cached.</p> </li> <li>To get the cached license response, call <strong><see cref=\"M:SharpDX.MediaFoundation.DRMNetHelper.GetChainedLicenseResponse(System.Byte[],System.Int32@)\"/></strong>.</li> </ol>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFDRMNetHelper']/*\"/>\t\n            <msdn-id>dd368789</msdn-id>\t\n            <unmanaged>IMFDRMNetHelper</unmanaged>\t\n            <unmanaged-short>IMFDRMNetHelper</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.DRMNetHelper.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.DRMNetHelper\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.DRMNetHelper.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.DRMNetHelper\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.DRMNetHelper\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.DRMNetHelper.ProcessLicenseRequest(System.Byte[],System.Int32,System.Byte[],System.Int32@,System.IntPtr)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Gets the license response for the specified request.</p>\t\n            </summary>\t\n            <param name=\"licenseRequestRef\"><dd> <p>Pointer to a byte array that contains the license request.</p> </dd></param>\t\n            <param name=\"cbLicenseRequest\"><dd> <p>Size, in bytes, of the license request.</p> </dd></param>\t\n            <param name=\"licenseResponseOut\"><dd> <p>Receives a reference to a byte array that contains the license response. The caller must free the array by calling <strong>CoTaskMemFree</strong>.</p> </dd></param>\t\n            <param name=\"cbLicenseResponseRef\"><dd> <p>Receives the size, in bytes, of the license response.</p> </dd></param>\t\n            <param name=\"bstrKIDRef\"><dd> <p>Receives the key identifier. The caller must release the string by calling <strong>SysFreeString</strong>.</p> </dd></param>\t\n            <returns><p>The function returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/></strong></dt> </dl> </td><td> <p>The media sink was shut down.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFDRMNetHelper::ProcessLicenseRequest']/*\"/>\t\n            <msdn-id>dd368791</msdn-id>\t\n            <unmanaged>HRESULT IMFDRMNetHelper::ProcessLicenseRequest([In, Buffer] unsigned char* pLicenseRequest,[In] unsigned int cbLicenseRequest,[Out, Buffer, Optional] unsigned char** ppLicenseResponse,[Out] unsigned int* pcbLicenseResponse,[Out] wchar_t** pbstrKID)</unmanaged>\t\n            <unmanaged-short>IMFDRMNetHelper::ProcessLicenseRequest</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.DRMNetHelper.GetChainedLicenseResponse(System.Byte[],System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Not implemented in this release.</p>\t\n            </summary>\t\n            <param name=\"licenseResponseOut\"><dd> <p>Receives a reference to a byte array that contains the license response. The caller must free the array by calling <strong>CoTaskMemFree</strong>.</p> </dd></param>\t\n            <param name=\"cbLicenseResponseRef\"><dd> <p>Receives the size, in bytes, of the license response.</p> </dd></param>\t\n            <returns><p>The method returns <strong>E_NOTIMPL</strong>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFDRMNetHelper::GetChainedLicenseResponse']/*\"/>\t\n            <msdn-id>dd368790</msdn-id>\t\n            <unmanaged>HRESULT IMFDRMNetHelper::GetChainedLicenseResponse([Out, Buffer, Optional] unsigned char** ppLicenseResponse,[Out] unsigned int* pcbLicenseResponse)</unmanaged>\t\n            <unmanaged-short>IMFDRMNetHelper::GetChainedLicenseResponse</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.FieldOfUseMFTUnlock\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Enables an application to use a Media Foundation transform (MFT) that has restrictions on its use.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>If you register an MFT that requires unlocking, include the <strong><see cref=\"F:SharpDX.MediaFoundation.TransformEnumFlag.Fieldofuse\"/></strong> flag when you call the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.TRegister(System.Guid,System.Guid,System.String,System.Int32,System.Int32,SharpDX.MediaFoundation.TRegisterTypeInformation[],System.Int32,SharpDX.MediaFoundation.TRegisterTypeInformation[],SharpDX.MediaFoundation.MediaAttributes)\"/></strong> function.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFFieldOfUseMFTUnlock']/*\"/>\t\n            <msdn-id>dd368792</msdn-id>\t\n            <unmanaged>IMFFieldOfUseMFTUnlock</unmanaged>\t\n            <unmanaged-short>IMFFieldOfUseMFTUnlock</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.FieldOfUseMFTUnlock.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.FieldOfUseMFTUnlock\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.FieldOfUseMFTUnlock.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.FieldOfUseMFTUnlock\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.FieldOfUseMFTUnlock\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.FieldOfUseMFTUnlock.Unlock(SharpDX.ComObject)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Unlocks a Media Foundation transform (MFT) so that the application can use it.</p>\t\n            </summary>\t\n            <param name=\"unkMFTRef\"><dd> <p>A reference to the <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interface of the MFT.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>This method authenticates the caller, using a private communication channel between the MFT and the object that implements the <strong><see cref=\"T:SharpDX.MediaFoundation.FieldOfUseMFTUnlock\"/></strong> interface. The details of the communication depend entirely on the implementation.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFFieldOfUseMFTUnlock::Unlock']/*\"/>\t\n            <msdn-id>dd368793</msdn-id>\t\n            <unmanaged>HRESULT IMFFieldOfUseMFTUnlock::Unlock([In, Optional] IUnknown* pUnkMFT)</unmanaged>\t\n            <unmanaged-short>IMFFieldOfUseMFTUnlock::Unlock</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.FilterConfig\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Sets the number of input pins on the DirectShow <strong>Enhanced Video Renderer</strong> (EVR) filter. To get a reference to this interface, call <strong>QueryInterface</strong> on the DirectShow EVR filter.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The DirectShow EVR filter starts with one input pin, which corresponds to the reference stream. To create additional pins for video substreams, call <strong>SetNumberOfStreams</strong>.</p><p>The EVR media sink for Media Foundation does not support this interface. To add new streams to the EVR media sink, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaSink.AddStreamSink(System.Int32,SharpDX.MediaFoundation.MediaType,SharpDX.MediaFoundation.StreamSink@)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IEVRFilterConfig']/*\"/>\t\n            <msdn-id>ms694298</msdn-id>\t\n            <unmanaged>IEVRFilterConfig</unmanaged>\t\n            <unmanaged-short>IEVRFilterConfig</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.FilterConfig.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.FilterConfig\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.FilterConfig.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.FilterConfig\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.FilterConfig\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.FilterConfig.SetNumberOfStreams(System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Sets the number of input pins on the EVR filter.</p>\t\n            </summary>\t\n            <param name=\"dwMaxStreams\"><dd> <p>Specifies the total number of input pins on the EVR filter. This value includes the input pin for the reference stream, which is created by default. For example, to mix one substream plus the reference stream, set this parameter to 2.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong>E_INVALIDARG</strong></dt> </dl> </td><td> <p>Invalid number of streams. The minimum is one, and the maximum is 16.</p> </td></tr> <tr><td> <dl> <dt><strong>VFW_E_WRONG_STATE</strong></dt> </dl> </td><td> <p>This method has already been called, or at least one pin is already connected.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>After this method has been called, it cannot be called a second time on the same instance of the EVR filter. Also, the method fails if any input pins are connected.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IEVRFilterConfig::SetNumberOfStreams']/*\"/>\t\n            <msdn-id>ms698968</msdn-id>\t\n            <unmanaged>HRESULT IEVRFilterConfig::SetNumberOfStreams([In] unsigned int dwMaxStreams)</unmanaged>\t\n            <unmanaged-short>IEVRFilterConfig::SetNumberOfStreams</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.FilterConfig.GetNumberOfStreams(System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the number of input pins on the EVR filter. The EVR filter always has at least one input pin, which corresponds to the reference stream.</p>\t\n            </summary>\t\n            <param name=\"dwMaxStreamsRef\"><dd> <p>Receives the number of streams.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IEVRFilterConfig::GetNumberOfStreams']/*\"/>\t\n            <msdn-id>ms701550</msdn-id>\t\n            <unmanaged>HRESULT IEVRFilterConfig::GetNumberOfStreams([Out] unsigned int* pdwMaxStreams)</unmanaged>\t\n            <unmanaged-short>IEVRFilterConfig::GetNumberOfStreams</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.FilterConfig.NumberOfStreams\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the number of input pins on the EVR filter. The EVR filter always has at least one input pin, which corresponds to the reference stream.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IEVRFilterConfig::GetNumberOfStreams']/*\"/>\t\n            <msdn-id>ms701550</msdn-id>\t\n            <unmanaged>GetNumberOfStreams / SetNumberOfStreams</unmanaged>\t\n            <unmanaged-short>GetNumberOfStreams</unmanaged-short>\t\n            <unmanaged>HRESULT IEVRFilterConfig::GetNumberOfStreams([Out] unsigned int* pdwMaxStreams)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.FilterConfigEx\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Configures the DirectShow <strong>Enhanced Video Renderer</strong> (EVR) filter.  To get a reference to this interface, call <strong>QueryInterface</strong> on the  EVR filter.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IEVRFilterConfigEx']/*\"/>\t\n            <msdn-id>dd373924</msdn-id>\t\n            <unmanaged>IEVRFilterConfigEx</unmanaged>\t\n            <unmanaged-short>IEVRFilterConfigEx</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.FilterConfigEx.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.FilterConfigEx\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.FilterConfigEx.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.FilterConfigEx\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.FilterConfigEx\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.FilterConfigEx.SetConfigPrefs(System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Sets the configuration parameters for the Microsoft DirectShow <strong>Enhanced Video Renderer Filter</strong> (EVR).</p>\t\n            </summary>\t\n            <param name=\"dwConfigFlags\">No documentation.</param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong>E_INVALIDARG</strong></dt> </dl> </td><td> <p>Invalid argument.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IEVRFilterConfigEx::SetConfigPrefs']/*\"/>\t\n            <msdn-id>dd373926</msdn-id>\t\n            <unmanaged>HRESULT IEVRFilterConfigEx::SetConfigPrefs([In] unsigned int dwConfigFlags)</unmanaged>\t\n            <unmanaged-short>IEVRFilterConfigEx::SetConfigPrefs</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.FilterConfigEx.GetConfigPrefs(System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Gets the configuration parameters for the Microsoft DirectShow <strong>Enhanced Video Renderer Filter</strong> filter.</p>\t\n            </summary>\t\n            <param name=\"dwConfigFlagsRef\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IEVRFilterConfigEx::GetConfigPrefs']/*\"/>\t\n            <msdn-id>dd373925</msdn-id>\t\n            <unmanaged>HRESULT IEVRFilterConfigEx::GetConfigPrefs([Out] unsigned int* pdwConfigFlags)</unmanaged>\t\n            <unmanaged-short>IEVRFilterConfigEx::GetConfigPrefs</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.FilterConfigEx.ConfigPrefs\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Gets the configuration parameters for the Microsoft DirectShow <strong>Enhanced Video Renderer Filter</strong> filter.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IEVRFilterConfigEx::GetConfigPrefs']/*\"/>\t\n            <msdn-id>dd373925</msdn-id>\t\n            <unmanaged>GetConfigPrefs / SetConfigPrefs</unmanaged>\t\n            <unmanaged-short>GetConfigPrefs</unmanaged-short>\t\n            <unmanaged>HRESULT IEVRFilterConfigEx::GetConfigPrefs([Out] unsigned int* pdwConfigFlags)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.FinalizableMediaSink\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Notifies the media sink to asynchronously take any steps it needs to finish its tasks.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Many archive media sinks have steps they need to do at the end of archiving to complete their file operations, such as updating the header (for some formats) or flushing all pending writes to disk. In some cases, this may include expensive operations such as indexing the content. <strong>BeginFinalize</strong> is an asynchronous way to initiate final tasks.</p><p>When the finalize operation is complete, the callback object's <strong><see cref=\"M:SharpDX.MediaFoundation.AsyncCallback.Invoke(SharpDX.MediaFoundation.AsyncResult)\"/></strong> method is called. At that point, the application should call <strong><see cref=\"M:SharpDX.MediaFoundation.FinalizableMediaSink.EndFinalize(SharpDX.MediaFoundation.AsyncResult)\"/></strong> to complete the asynchronous request.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFFinalizableMediaSink']/*\"/>\t\n            <msdn-id>ms705643</msdn-id>\t\n            <unmanaged>IMFFinalizableMediaSink</unmanaged>\t\n            <unmanaged-short>IMFFinalizableMediaSink</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.MediaSink\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Implemented by media sink objects. This interface is the base interface for all Media Foundation media sinks. Stream sinks handle the actual processing of data on each stream.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaSink']/*\"/>\t\n            <msdn-id>ms694262</msdn-id>\t\n            <unmanaged>IMFMediaSink</unmanaged>\t\n            <unmanaged-short>IMFMediaSink</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaSink.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.MediaSink\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaSink.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.MediaSink\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.MediaSink\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaSink.GetCharacteristics(System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Gets the characteristics of the media sink.</p>\t\n            </summary>\t\n            <param name=\"dwCharacteristicsRef\"><dd> <p> Receives a bitwise <strong>OR</strong> of zero or more flags. The following flags are defined: </p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td><dl> <dt><strong><strong>MEDIASINK_FIXED_STREAMS</strong></strong></dt> <dt>0x00000001</dt> </dl> </td><td> <p> The media sink has a fixed number of streams. It does not support the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaSink.AddStreamSink(System.Int32,SharpDX.MediaFoundation.MediaType,SharpDX.MediaFoundation.StreamSink@)\"/></strong> and <strong><see cref=\"M:SharpDX.MediaFoundation.MediaSink.RemoveStreamSink(System.Int32)\"/></strong> methods. This flag is a hint to the application. </p> </td></tr> <tr><td><dl> <dt><strong><strong>MEDIASINK_CANNOT_MATCH_CLOCK</strong></strong></dt> <dt>0x00000002</dt> </dl> </td><td> <p>The media sink cannot match rates with an external clock.</p> <p>For best results, this media sink should be used as the time source for the presentation clock. If any other time source is used, the media sink cannot match rates with the clock, with poor results (for example, glitching).</p> <p>This flag should be used sparingly, because it limits how the pipeline can be configured.</p> <p>For more information about the presentation clock, see Presentation Clock.</p> </td></tr> <tr><td><dl> <dt><strong><strong>MEDIASINK_RATELESS</strong></strong></dt> <dt>0x00000004</dt> </dl> </td><td> <p>The media sink is rateless. It consumes samples as quickly as possible, and does not synchronize itself to a presentation clock.</p> <p>Most archiving sinks are rateless.</p> </td></tr> <tr><td><dl> <dt><strong><strong>MEDIASINK_CLOCK_REQUIRED</strong></strong></dt> <dt>0x00000008</dt> </dl> </td><td> <p>The media sink requires a presentation clock. The presentation clock is set by calling the media sink's <strong><see cref=\"M:SharpDX.MediaFoundation.MediaSink.SetPresentationClock(SharpDX.MediaFoundation.PresentationClock)\"/></strong> method.</p> <p>This flag is obsolete, because all media sinks must support the <strong>SetPresentationClock</strong> method, even if the media sink ignores the clock (as in a rateless media sink).</p> </td></tr> <tr><td><dl> <dt><strong><strong>MEDIASINK_CAN_PREROLL</strong></strong></dt> <dt>0x00000010</dt> </dl> </td><td> <p> The media sink can accept preroll samples before the presentation clock starts. The media sink exposes the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaSinkPreroll\"/></strong> interface. </p> </td></tr> <tr><td><dl> <dt><strong><strong>MEDIASINK_REQUIRE_REFERENCE_MEDIATYPE</strong></strong></dt> <dt>0x00000020</dt> </dl> </td><td> <p>The first stream sink (index 0) is a reference stream. The reference stream must have a media type before the media types can be set on the other stream sinks.</p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></strong></dt> </dl> </td><td> <p> The method succeeded. </p> </td></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/></strong></strong></dt> </dl> </td><td> <p> The media sink's <strong>Shutdown</strong> method has been called. </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> The characteristics of a media sink are fixed throughout the life time of the sink. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaSink::GetCharacteristics']/*\"/>\t\n            <msdn-id>ms701973</msdn-id>\t\n            <unmanaged>HRESULT IMFMediaSink::GetCharacteristics([Out] unsigned int* pdwCharacteristics)</unmanaged>\t\n            <unmanaged-short>IMFMediaSink::GetCharacteristics</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaSink.AddStreamSink(System.Int32,SharpDX.MediaFoundation.MediaType,SharpDX.MediaFoundation.StreamSink@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Adds a new stream sink to the media sink.</p>\t\n            </summary>\t\n            <param name=\"dwStreamSinkIdentifier\"><dd> <p>Identifier for the new stream. The value is arbitrary but must be unique.</p> </dd></param>\t\n            <param name=\"mediaTypeRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaType\"/></strong> interface, specifying the media type for the stream. This parameter can be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"streamSinkOut\"><dd> <p>Receives a reference to the new stream sink's <strong><see cref=\"T:SharpDX.MediaFoundation.StreamSink\"/></strong> interface. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidStreamNumber\"/></strong></dt> </dl> </td><td> <p>The specified stream identifier is not valid.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/></strong></dt> </dl> </td><td> <p>The media sink's <strong>Shutdown</strong> method has been called.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.StreamsInkExists\"/></strong></dt> </dl> </td><td> <p>There is already a stream sink with the same stream identifier.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.StreamsInksFixed\"/></strong></dt> </dl> </td><td> <p>This media sink has a fixed set of stream sinks. New stream sinks cannot be added.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>Not all media sinks support this method. If the media sink does not support this method, the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaSink.GetCharacteristics(System.Int32@)\"/></strong> method returns the MEDIASINK_FIXED_STREAMS flag.</p><p>If <em>pMediaType</em> is <strong><c>null</c></strong>, use the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaTypeHandler\"/></strong> interface to set the media type. Call <strong><see cref=\"M:SharpDX.MediaFoundation.StreamSink.GetMediaTypeHandler(SharpDX.MediaFoundation.MediaTypeHandler@)\"/></strong> to get a reference to the interface.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaSink::AddStreamSink']/*\"/>\t\n            <msdn-id>ms694890</msdn-id>\t\n            <unmanaged>HRESULT IMFMediaSink::AddStreamSink([In] unsigned int dwStreamSinkIdentifier,[In, Optional] IMFMediaType* pMediaType,[Out] IMFStreamSink** ppStreamSink)</unmanaged>\t\n            <unmanaged-short>IMFMediaSink::AddStreamSink</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaSink.RemoveStreamSink(System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Removes a stream sink from the media sink.</p>\t\n            </summary>\t\n            <param name=\"dwStreamSinkIdentifier\"><dd> <p>Identifier of the stream to remove. The stream identifier is defined when you call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaSink.AddStreamSink(System.Int32,SharpDX.MediaFoundation.MediaType,SharpDX.MediaFoundation.StreamSink@)\"/></strong> to add the stream sink.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong>E_INVALIDARG</strong></dt> </dl> </td><td> <p>This particular stream sink cannot be removed.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidStreamNumber\"/></strong></dt> </dl> </td><td> <p>The stream number is not valid.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.NotInitializeD\"/></strong></dt> </dl> </td><td> <p>The media sink has not been initialized.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/></strong></dt> </dl> </td><td> <p>The media sink's <strong>Shutdown</strong> method has been called.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.StreamsInksFixed\"/></strong></dt> </dl> </td><td> <p>This media sink has a fixed set of stream sinks. Stream sinks cannot be removed.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>After this method is called, the corresponding stream sink object is no longer valid. The <strong><see cref=\"M:SharpDX.MediaFoundation.MediaSink.GetStreamSinkByIndex(System.Int32,SharpDX.MediaFoundation.StreamSink@)\"/></strong> and <strong><see cref=\"M:SharpDX.MediaFoundation.MediaSink.GetStreamSinkById(System.Int32,SharpDX.MediaFoundation.StreamSink@)\"/></strong> methods will no longer return that stream sink. You can re-use the stream identifier if you add another stream (by calling <strong>AddStreamSink</strong>).</p><p>Not all media sinks support this method. If the media sink does not support this method, the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaSink.GetCharacteristics(System.Int32@)\"/></strong> method returns the MEDIASINK_FIXED_STREAMS flag.</p><p>In some cases, the media sink supports this method but does not allow every stream sink to be removed. (For example, it might not allow stream 0 to be removed.)</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaSink::RemoveStreamSink']/*\"/>\t\n            <msdn-id>ms705627</msdn-id>\t\n            <unmanaged>HRESULT IMFMediaSink::RemoveStreamSink([In] unsigned int dwStreamSinkIdentifier)</unmanaged>\t\n            <unmanaged-short>IMFMediaSink::RemoveStreamSink</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaSink.GetStreamSinkCount(System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Gets the number of stream sinks on this media sink.</p>\t\n            </summary>\t\n            <param name=\"cStreamSinkCountRef\"><dd> <p>Receives the number of stream sinks.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/></strong></dt> </dl> </td><td> <p>The media sink's <strong>Shutdown</strong> method has been called.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaSink::GetStreamSinkCount']/*\"/>\t\n            <msdn-id>ms703020</msdn-id>\t\n            <unmanaged>HRESULT IMFMediaSink::GetStreamSinkCount([Out] unsigned int* pcStreamSinkCount)</unmanaged>\t\n            <unmanaged-short>IMFMediaSink::GetStreamSinkCount</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaSink.GetStreamSinkByIndex(System.Int32,SharpDX.MediaFoundation.StreamSink@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Gets a stream sink, specified by index.</p>\t\n            </summary>\t\n            <param name=\"dwIndex\"><dd> <p>Zero-based index of the stream. To get the number of streams, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaSink.GetStreamSinkCount(System.Int32@)\"/></strong>.</p> </dd></param>\t\n            <param name=\"streamSinkOut\"><dd> <p>Receives a reference to the stream's <strong><see cref=\"T:SharpDX.MediaFoundation.StreamSink\"/></strong> interface. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidIndex\"/></strong></dt> </dl> </td><td> <p>Invalid index.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/></strong></dt> </dl> </td><td> <p>The media sink's <strong>Shutdown</strong> method has been called.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>Enumerating stream sinks is not a thread-safe operation, because stream sinks can be added or removed between calls to this method.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaSink::GetStreamSinkByIndex']/*\"/>\t\n            <msdn-id>ms693512</msdn-id>\t\n            <unmanaged>HRESULT IMFMediaSink::GetStreamSinkByIndex([In] unsigned int dwIndex,[Out] IMFStreamSink** ppStreamSink)</unmanaged>\t\n            <unmanaged-short>IMFMediaSink::GetStreamSinkByIndex</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaSink.GetStreamSinkById(System.Int32,SharpDX.MediaFoundation.StreamSink@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Gets a stream sink, specified by stream identifier.</p>\t\n            </summary>\t\n            <param name=\"dwStreamSinkIdentifier\"><dd> <p>Stream identifier of the stream sink.</p> </dd></param>\t\n            <param name=\"streamSinkOut\"><dd> <p>Receives a reference to the stream's <strong><see cref=\"T:SharpDX.MediaFoundation.StreamSink\"/></strong> interface. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidStreamNumber\"/></strong></dt> </dl> </td><td> <p>The stream identifier is not valid.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/></strong></dt> </dl> </td><td> <p>The media sink's <strong>Shutdown</strong> method has been called.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>If you add a stream sink by calling the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaSink.AddStreamSink(System.Int32,SharpDX.MediaFoundation.MediaType,SharpDX.MediaFoundation.StreamSink@)\"/></strong> method, the stream identifier is specified in the <em>dwStreamSinkIdentifier</em> parameter of that method. If the media sink has a fixed set of streams, the media sink assigns the stream identifiers.</p><p>To enumerate the streams by index number instead of stream identifier, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaSink.GetStreamSinkByIndex(System.Int32,SharpDX.MediaFoundation.StreamSink@)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaSink::GetStreamSinkById']/*\"/>\t\n            <msdn-id>ms695360</msdn-id>\t\n            <unmanaged>HRESULT IMFMediaSink::GetStreamSinkById([In] unsigned int dwStreamSinkIdentifier,[Out] IMFStreamSink** ppStreamSink)</unmanaged>\t\n            <unmanaged-short>IMFMediaSink::GetStreamSinkById</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaSink.SetPresentationClock(SharpDX.MediaFoundation.PresentationClock)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Sets the presentation clock on the media sink.</p>\t\n            </summary>\t\n            <param name=\"presentationClockRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.PresentationClock\"/></strong> interface of the presentation clock, or <strong><c>null</c></strong>. If the value is <strong><c>null</c></strong>, the media sink stops listening to the presentaton clock that was previously set, if any.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.ClockNoTimeSource\"/></strong></dt> </dl> </td><td> <p>The presentation clock does not have a time source. Call <strong>SetTimeSource</strong> on the presentation clock.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/></strong></dt> </dl> </td><td> <p>The media sink's <strong>Shutdown</strong> method has been called.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>During streaming, the media sink attempts to match rates with the presentation clock. Ideally, the media sink presents samples at the correct time according to the presentation clock and does not fall behind. Rateless media sinks are an exception to this rule, as they consume samples as quickly as possible and ignore the clock. If the sink is rateless, the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaSink.GetCharacteristics(System.Int32@)\"/></strong> method returns the MEDIASINK_RATELESS flag.</p><p>The presentation clock must have a time source. Before calling this method, call <strong><see cref=\"M:SharpDX.MediaFoundation.PresentationClock.SetTimeSource(SharpDX.MediaFoundation.PresentationTimeSource)\"/></strong> on the presentation clock to set the presentation time source. Some media sinks provide time sources; therefore, the media sink might be the time source for its own presentation clock. Regardless of what object provides the time source, however, the media sink must attempt to match rates with the clock specified in <em>pPresentationClock</em>. If a media sink cannot match rates with an external time source, the media sink's <strong><see cref=\"M:SharpDX.MediaFoundation.MediaSink.GetCharacteristics(System.Int32@)\"/></strong> method retrieves the MEDIASINK_CANNOT_MATCH_CLOCK flag. In this case, <strong>SetPresentationClock</strong> will still succeed, but the results will not be optimal. The sink might not render samples quickly enough to match rates with the presentation clock.</p><p>If <em>pPresentationClock</em> is non-<strong><c>null</c></strong>, the media sink must register for clock state notifications, by calling <strong><see cref=\"M:SharpDX.MediaFoundation.PresentationClock.AddClockStateSink(SharpDX.MediaFoundation.ClockStateSink)\"/></strong> on the presentation clock. If the method is called again with a new presentation clock, or if <em>pPresentationClock</em> is <strong><c>null</c></strong>, the media sink must call <strong><see cref=\"M:SharpDX.MediaFoundation.PresentationClock.RemoveClockStateSink(SharpDX.MediaFoundation.ClockStateSink)\"/></strong> to deregister itself from the previous clock.</p><p>All media sinks must support this method.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaSink::SetPresentationClock']/*\"/>\t\n            <msdn-id>ms700160</msdn-id>\t\n            <unmanaged>HRESULT IMFMediaSink::SetPresentationClock([In, Optional] IMFPresentationClock* pPresentationClock)</unmanaged>\t\n            <unmanaged-short>IMFMediaSink::SetPresentationClock</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaSink.GetPresentationClock(SharpDX.MediaFoundation.PresentationClock@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Gets the presentation clock that was set on the media sink.</p>\t\n            </summary>\t\n            <param name=\"presentationClockOut\"><dd> <p>Receives a reference to the presentation clock's <strong><see cref=\"T:SharpDX.MediaFoundation.PresentationClock\"/></strong> interface. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.NoClock\"/></strong></dt> </dl> </td><td> <p>No clock has been set. To set the presentation clock, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaSink.SetPresentationClock(SharpDX.MediaFoundation.PresentationClock)\"/></strong>.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/></strong></dt> </dl> </td><td> <p>The media sink's <strong>Shutdown</strong> method has been called.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaSink::GetPresentationClock']/*\"/>\t\n            <msdn-id>ms705665</msdn-id>\t\n            <unmanaged>HRESULT IMFMediaSink::GetPresentationClock([Out] IMFPresentationClock** ppPresentationClock)</unmanaged>\t\n            <unmanaged-short>IMFMediaSink::GetPresentationClock</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaSink.Shutdown\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Shuts down the media sink and releases the resources it is using.</p>\t\n            </summary>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/></strong></dt> </dl> </td><td> <p>The media sink was shut down.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>If the application creates the media sink, it is responsible for calling <strong>Shutdown</strong> to avoid memory or resource leaks. In most applications, however, the application creates an activation object for the media sink, and the Media Session uses that object to create the media sink. In that case, the Media Session ? not the application ? shuts down the media sink. (For more information, see Activation Objects.)</p><p>After this method returns, all methods on the media sink return <see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/>,  except for <strong><see cref=\"T:SharpDX.ComObject\"/></strong> methods and <strong><see cref=\"T:SharpDX.MediaFoundation.MediaEventGenerator\"/></strong> methods. The sink will not raise any events after this method is called.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaSink::Shutdown']/*\"/>\t\n            <msdn-id>ms702084</msdn-id>\t\n            <unmanaged>HRESULT IMFMediaSink::Shutdown()</unmanaged>\t\n            <unmanaged-short>IMFMediaSink::Shutdown</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.MediaSink.Characteristics\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Gets the characteristics of the media sink.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p> The characteristics of a media sink are fixed throughout the life time of the sink. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaSink::GetCharacteristics']/*\"/>\t\n            <msdn-id>ms701973</msdn-id>\t\n            <unmanaged>GetCharacteristics</unmanaged>\t\n            <unmanaged-short>GetCharacteristics</unmanaged-short>\t\n            <unmanaged>HRESULT IMFMediaSink::GetCharacteristics([Out] unsigned int* pdwCharacteristics)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.MediaSink.StreamSinkCount\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Gets the number of stream sinks on this media sink.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaSink::GetStreamSinkCount']/*\"/>\t\n            <msdn-id>ms703020</msdn-id>\t\n            <unmanaged>GetStreamSinkCount</unmanaged>\t\n            <unmanaged-short>GetStreamSinkCount</unmanaged-short>\t\n            <unmanaged>HRESULT IMFMediaSink::GetStreamSinkCount([Out] unsigned int* pcStreamSinkCount)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.MediaSink.PresentationClock\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Gets the presentation clock that was set on the media sink.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaSink::GetPresentationClock']/*\"/>\t\n            <msdn-id>ms705665</msdn-id>\t\n            <unmanaged>GetPresentationClock / SetPresentationClock</unmanaged>\t\n            <unmanaged-short>GetPresentationClock</unmanaged-short>\t\n            <unmanaged>HRESULT IMFMediaSink::GetPresentationClock([Out] IMFPresentationClock** ppPresentationClock)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.FinalizableMediaSink.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.FinalizableMediaSink\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.FinalizableMediaSink.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.FinalizableMediaSink\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.FinalizableMediaSink\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.FinalizableMediaSink.BeginFinalize(SharpDX.MediaFoundation.AsyncCallback,SharpDX.ComObject)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Notifies the media sink to asynchronously take any steps it needs to finish its tasks.</p>\t\n            </summary>\t\n            <param name=\"callbackRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.AsyncCallback\"/></strong> interface of an asynchronous object. The caller must implement this interface.</p> </dd></param>\t\n            <param name=\"unkStateRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interface of a state object, defined by the caller. This parameter can be <strong><c>null</c></strong>. You can use this object to hold state information. The object is returned to the caller when the callback is invoked.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>Many archive media sinks have steps they need to do at the end of archiving to complete their file operations, such as updating the header (for some formats) or flushing all pending writes to disk. In some cases, this may include expensive operations such as indexing the content. <strong>BeginFinalize</strong> is an asynchronous way to initiate final tasks.</p><p>When the finalize operation is complete, the callback object's <strong><see cref=\"M:SharpDX.MediaFoundation.AsyncCallback.Invoke(SharpDX.MediaFoundation.AsyncResult)\"/></strong> method is called. At that point, the application should call <strong><see cref=\"M:SharpDX.MediaFoundation.FinalizableMediaSink.EndFinalize(SharpDX.MediaFoundation.AsyncResult)\"/></strong> to complete the asynchronous request.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFFinalizableMediaSink::BeginFinalize']/*\"/>\t\n            <msdn-id>ms705643</msdn-id>\t\n            <unmanaged>HRESULT IMFFinalizableMediaSink::BeginFinalize([In] IMFAsyncCallback* pCallback,[In] IUnknown* punkState)</unmanaged>\t\n            <unmanaged-short>IMFFinalizableMediaSink::BeginFinalize</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.FinalizableMediaSink.EndFinalize(SharpDX.MediaFoundation.AsyncResult)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Completes an asynchronous finalize operation.</p>\t\n            </summary>\t\n            <param name=\"resultRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.AsyncResult\"/></strong> interface. Pass in the same reference that your callback object received in the <strong><see cref=\"M:SharpDX.MediaFoundation.AsyncCallback.Invoke(SharpDX.MediaFoundation.AsyncResult)\"/></strong> method.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>Call this method after the <strong><see cref=\"M:SharpDX.MediaFoundation.FinalizableMediaSink.BeginFinalize(SharpDX.MediaFoundation.AsyncCallback,SharpDX.ComObject)\"/></strong> method completes asynchronously.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFFinalizableMediaSink::EndFinalize']/*\"/>\t\n            <msdn-id>ms694891</msdn-id>\t\n            <unmanaged>HRESULT IMFFinalizableMediaSink::EndFinalize([In] IMFAsyncResult* pResult)</unmanaged>\t\n            <unmanaged-short>IMFFinalizableMediaSink::EndFinalize</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.IDMOQualityControl\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDMOQualityControl']/*\"/>\t\n            <unmanaged>IDMOQualityControl</unmanaged>\t\n            <unmanaged-short>IDMOQualityControl</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.IDMOQualityControl.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.IDMOQualityControl\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.IDMOQualityControl.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.IDMOQualityControl\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.IDMOQualityControl\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.IDMOQualityControl.SetNow(System.Int64)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"rtNow\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDMOQualityControl::SetNow']/*\"/>\t\n            <unmanaged>HRESULT IDMOQualityControl::SetNow([In] longlong rtNow)</unmanaged>\t\n            <unmanaged-short>IDMOQualityControl::SetNow</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.IDMOQualityControl.SetStatus(System.Int32)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"dwFlags\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDMOQualityControl::SetStatus']/*\"/>\t\n            <unmanaged>HRESULT IDMOQualityControl::SetStatus([In] unsigned int dwFlags)</unmanaged>\t\n            <unmanaged-short>IDMOQualityControl::SetStatus</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.IDMOQualityControl.GetStatus(System.Int32@)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"dwFlagsRef\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDMOQualityControl::GetStatus']/*\"/>\t\n            <unmanaged>HRESULT IDMOQualityControl::GetStatus([Out] unsigned int* pdwFlags)</unmanaged>\t\n            <unmanaged-short>IDMOQualityControl::GetStatus</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.IDMOQualityControl.Now\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDMOQualityControl::SetNow']/*\"/>\t\n            <unmanaged>SetNow</unmanaged>\t\n            <unmanaged-short>SetNow</unmanaged-short>\t\n            <unmanaged>HRESULT IDMOQualityControl::SetNow([In] longlong rtNow)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.IDMOQualityControl.Status\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDMOQualityControl::GetStatus']/*\"/>\t\n            <unmanaged>GetStatus / SetStatus</unmanaged>\t\n            <unmanaged-short>GetStatus</unmanaged-short>\t\n            <unmanaged>HRESULT IDMOQualityControl::GetStatus([Out] unsigned int* pdwFlags)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.IDMOVideoOutputOptimizations\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDMOVideoOutputOptimizations']/*\"/>\t\n            <unmanaged>IDMOVideoOutputOptimizations</unmanaged>\t\n            <unmanaged-short>IDMOVideoOutputOptimizations</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.IDMOVideoOutputOptimizations.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.IDMOVideoOutputOptimizations\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.IDMOVideoOutputOptimizations.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.IDMOVideoOutputOptimizations\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.IDMOVideoOutputOptimizations\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.IDMOVideoOutputOptimizations.QueryOperationModePreferences(System.Int32,System.Int32@)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"ulOutputStreamIndex\">No documentation.</param>\t\n            <param name=\"dwRequestedCapabilitiesRef\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDMOVideoOutputOptimizations::QueryOperationModePreferences']/*\"/>\t\n            <unmanaged>HRESULT IDMOVideoOutputOptimizations::QueryOperationModePreferences([In] unsigned int ulOutputStreamIndex,[Out] unsigned int* pdwRequestedCapabilities)</unmanaged>\t\n            <unmanaged-short>IDMOVideoOutputOptimizations::QueryOperationModePreferences</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.IDMOVideoOutputOptimizations.SetOperationMode(System.Int32,System.Int32)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"ulOutputStreamIndex\">No documentation.</param>\t\n            <param name=\"dwEnabledFeatures\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDMOVideoOutputOptimizations::SetOperationMode']/*\"/>\t\n            <unmanaged>HRESULT IDMOVideoOutputOptimizations::SetOperationMode([In] unsigned int ulOutputStreamIndex,[In] unsigned int dwEnabledFeatures)</unmanaged>\t\n            <unmanaged-short>IDMOVideoOutputOptimizations::SetOperationMode</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.IDMOVideoOutputOptimizations.GetCurrentOperationMode(System.Int32,System.Int32@)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"ulOutputStreamIndex\">No documentation.</param>\t\n            <param name=\"dwEnabledFeaturesRef\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDMOVideoOutputOptimizations::GetCurrentOperationMode']/*\"/>\t\n            <unmanaged>HRESULT IDMOVideoOutputOptimizations::GetCurrentOperationMode([In] unsigned int ulOutputStreamIndex,[Out] unsigned int* pdwEnabledFeatures)</unmanaged>\t\n            <unmanaged-short>IDMOVideoOutputOptimizations::GetCurrentOperationMode</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.IDMOVideoOutputOptimizations.GetCurrentSampleRequirements(System.Int32,System.Int32@)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"ulOutputStreamIndex\">No documentation.</param>\t\n            <param name=\"dwRequestedFeaturesRef\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IDMOVideoOutputOptimizations::GetCurrentSampleRequirements']/*\"/>\t\n            <unmanaged>HRESULT IDMOVideoOutputOptimizations::GetCurrentSampleRequirements([In] unsigned int ulOutputStreamIndex,[Out] unsigned int* pdwRequestedFeatures)</unmanaged>\t\n            <unmanaged-short>IDMOVideoOutputOptimizations::GetCurrentSampleRequirements</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.IEnumDMO\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>The <code><see cref=\"T:SharpDX.MediaFoundation.IEnumDMO\"/></code> interface provides methods for enumerating Microsoft DirectX Media Objects (DMOs). It is based on the OLE enumeration interfaces. For more information, see the <em>IEnumXXXX</em> topic in the Platform SDK.</p><p>To enumerate registered DMOs, call the <strong>DMOEnum</strong> function.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IEnumDMO']/*\"/>\t\n            <msdn-id>dd376585</msdn-id>\t\n            <unmanaged>IEnumDMO</unmanaged>\t\n            <unmanaged-short>IEnumDMO</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.IEnumDMO.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.IEnumDMO\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.IEnumDMO.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.IEnumDMO\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.IEnumDMO\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.IEnumDMO.Next(System.Int32,System.Guid[],System.IntPtr,System.Int32@)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"cItemsToFetch\">No documentation.</param>\t\n            <param name=\"cLSIDRef\">No documentation.</param>\t\n            <param name=\"names\">No documentation.</param>\t\n            <param name=\"cItemsFetchedRef\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IEnumDMO::Next']/*\"/>\t\n            <msdn-id>ms785641</msdn-id>\t\n            <unmanaged>HRESULT IEnumDMO::Next([In] unsigned int cItemsToFetch,[Out, Buffer] GUID* pCLSID,[Out, Buffer] wchar_t** Names,[Out] unsigned int* pcItemsFetched)</unmanaged>\t\n            <unmanaged-short>IEnumDMO::Next</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.IEnumDMO.Skip(System.Int32)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"cItemsToSkip\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IEnumDMO::Skip']/*\"/>\t\n            <unmanaged>HRESULT IEnumDMO::Skip([In] unsigned int cItemsToSkip)</unmanaged>\t\n            <unmanaged-short>IEnumDMO::Skip</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.IEnumDMO.Reset\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IEnumDMO::Reset']/*\"/>\t\n            <unmanaged>HRESULT IEnumDMO::Reset()</unmanaged>\t\n            <unmanaged-short>IEnumDMO::Reset</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.IEnumDMO.Clone(SharpDX.MediaFoundation.IEnumDMO@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>This method is not implemented.</p>\t\n            </summary>\t\n            <param name=\"enumOut\"><dd> <p>Reserved.</p> </dd></param>\t\n            <returns><p>Returns E_NOTIMPL.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IEnumDMO::Clone']/*\"/>\t\n            <msdn-id>dd376586</msdn-id>\t\n            <unmanaged>HRESULT IEnumDMO::Clone([Out] IEnumDMO** ppEnum)</unmanaged>\t\n            <unmanaged-short>IEnumDMO::Clone</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.IMediaBuffer\">\n            <summary>\t\n            <p>In the default DMO streaming model, buffers are managed through the <strong><see cref=\"T:SharpDX.MediaFoundation.IMediaBuffer\"/></strong> interface. The client of the DMO is responsible for implementing an object that exposes this interface. The <strong><see cref=\"T:SharpDX.MediaFoundation.IMediaBuffer\"/></strong> interface has three methods:</p><ul> <li><strong>GetBufferAndLength</strong> returns the address of the buffer (that is, the actual block of memory that holds the data) and the size of any valid data in the buffer.</li> <li><strong>GetMaxLength</strong> returns the size of the buffer.</li> <li><strong>SetLength</strong> specifies the length of the valid data in the buffer.</li> </ul><p>In-place processing does not require the <strong><see cref=\"T:SharpDX.MediaFoundation.IMediaBuffer\"/></strong> interface. The following code shows a minimal implementation of <strong><see cref=\"T:SharpDX.MediaFoundation.IMediaBuffer\"/></strong>:</p><pre><code> //  CMediaBuffer class.\t\n            #include &lt;dmo.h&gt;\t\n            class CMediaBuffer : public <see cref=\"T:SharpDX.MediaFoundation.IMediaBuffer\"/>\t\n            {\t\n            private: DWORD        m_cbLength; const DWORD  m_cbMaxLength; LONG         m_nRefCount;  // Reference count BYTE         *m_pbData; CMediaBuffer(DWORD cbMaxLength, <see cref=\"T:SharpDX.Result\"/>&amp; hr) : m_nRefCount(1), m_cbMaxLength(cbMaxLength), m_cbLength(0), m_pbData(<c>null</c>) { m_pbData = new BYTE[cbMaxLength]; if (!m_pbData)  { hr = E_OUTOFMEMORY; } } ~CMediaBuffer() { if (m_pbData)  { delete [] m_pbData; } } public: // Function to create a new <see cref=\"T:SharpDX.MediaFoundation.IMediaBuffer\"/> object and return  // an AddRef'd interface reference. static <see cref=\"T:SharpDX.Result\"/> Create(long cbMaxLen, <see cref=\"T:SharpDX.MediaFoundation.IMediaBuffer\"/> **ppBuffer) { <see cref=\"T:SharpDX.Result\"/> hr = <see cref=\"F:SharpDX.Result.Ok\"/>; CMediaBuffer *pBuffer = <c>null</c>; if (ppBuffer == <c>null</c>) { return E_POINTER; } pBuffer = new CMediaBuffer(cbMaxLen, hr); if (pBuffer == <c>null</c>) { hr = E_OUTOFMEMORY; } if (SUCCEEDED(hr)) { *ppBuffer = pBuffer; (*ppBuffer)-&gt;AddRef(); } if (pBuffer) { pBuffer-&gt;Release(); } return hr; } // <see cref=\"T:SharpDX.ComObject\"/> methods. STDMETHODIMP QueryInterface(REFIID riid, void **ppv) { if (ppv == <c>null</c>)  { return E_POINTER; } else if (riid == IID_IMediaBuffer || riid == IID_IUnknown)  { *ppv = static_cast&lt;<see cref=\"T:SharpDX.MediaFoundation.IMediaBuffer\"/> *&gt;(this); AddRef(); return <see cref=\"F:SharpDX.Result.Ok\"/>; } else { *ppv = <c>null</c>; return E_NOINTERFACE; } } STDMETHODIMP_(ULONG) AddRef() { return InterlockedIncrement(&amp;m_nRefCount); } STDMETHODIMP_(ULONG) Release() { LONG lRef = InterlockedDecrement(&amp;m_nRefCount); if (lRef == 0)  { delete this; // m_cRef is no longer valid! Return lRef. } return lRef;   } // <see cref=\"T:SharpDX.MediaFoundation.IMediaBuffer\"/> methods. STDMETHODIMP SetLength(DWORD cbLength) { if (cbLength &gt; m_cbMaxLength)  { return E_INVALIDARG; } m_cbLength = cbLength; return <see cref=\"F:SharpDX.Result.Ok\"/>; } STDMETHODIMP GetMaxLength(DWORD *pcbMaxLength) { if (pcbMaxLength == <c>null</c>)  { return E_POINTER; } *pcbMaxLength = m_cbMaxLength; return <see cref=\"F:SharpDX.Result.Ok\"/>; } STDMETHODIMP GetBufferAndLength(BYTE **ppbBuffer, DWORD *pcbLength) { // Either parameter can be <c>null</c>, but not both. if (ppbBuffer == <c>null</c> &amp;&amp; pcbLength == <c>null</c>)  { return E_POINTER; } if (ppbBuffer)  { *ppbBuffer = m_pbData; } if (pcbLength)  { *pcbLength = m_cbLength; } return <see cref=\"F:SharpDX.Result.Ok\"/>; }\t\n            }; </code></pre>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMediaBuffer']/*\"/>\t\n            <msdn-id>dd376684</msdn-id>\t\n            <unmanaged>IMediaBuffer</unmanaged>\t\n            <unmanaged-short>IMediaBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.IMediaBuffer.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.IMediaBuffer\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.IMediaBuffer.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.IMediaBuffer\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.IMediaBuffer\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.IMediaBuffer.SetLength(System.Int32)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"cbLength\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMediaBuffer::SetLength']/*\"/>\t\n            <unmanaged>HRESULT IMediaBuffer::SetLength([In] unsigned int cbLength)</unmanaged>\t\n            <unmanaged-short>IMediaBuffer::SetLength</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.IMediaBuffer.GetMaxLength(System.Int32@)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"cbMaxLengthRef\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMediaBuffer::GetMaxLength']/*\"/>\t\n            <unmanaged>HRESULT IMediaBuffer::GetMaxLength([Out] unsigned int* pcbMaxLength)</unmanaged>\t\n            <unmanaged-short>IMediaBuffer::GetMaxLength</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.IMediaBuffer.GetBufferAndLength(System.Byte[],System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>The <code>GetBufferAndLength</code> method retrieves the buffer and the size of the valid data in the buffer.</p>\t\n            </summary>\t\n            <param name=\"bufferOut\"><dd> <p>Address of a reference that receives the buffer array. Can be <strong><c>null</c></strong> if <em>pcbLength</em> is not <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"cbLengthRef\"><dd> <p>Pointer to a variable that receives the size of the valid data, in bytes. Can be <strong><c>null</c></strong> if <em>ppBuffer</em> is not <strong><c>null</c></strong>.</p> </dd></param>\t\n            <returns><p>Returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> value. Possible values include those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong>E_POINTER</strong></dt> </dl> </td><td> <p><strong><c>null</c></strong> reference argument</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>Success</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>Either parameter can be <strong><c>null</c></strong>, in which case it does not receive a value. At least one parameter must be non-<strong><c>null</c></strong>. If both parameters are <strong><c>null</c></strong>, the method returns E_POINTER.</p><p>The value returned in the <em>pcbLength</em> parameter is the size of the valid data in the buffer, not the buffer's allocated size. To obtain the buffer's allocated size, call the <strong><see cref=\"M:SharpDX.MediaFoundation.IMediaBuffer.GetMaxLength(System.Int32@)\"/></strong> method.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMediaBuffer::GetBufferAndLength']/*\"/>\t\n            <msdn-id>dd390167</msdn-id>\t\n            <unmanaged>HRESULT IMediaBuffer::GetBufferAndLength([Out, Buffer, Optional] unsigned char** ppBuffer,[Out, Optional] unsigned int* pcbLength)</unmanaged>\t\n            <unmanaged-short>IMediaBuffer::GetBufferAndLength</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.IMediaBuffer.Length\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMediaBuffer::SetLength']/*\"/>\t\n            <unmanaged>SetLength</unmanaged>\t\n            <unmanaged-short>SetLength</unmanaged-short>\t\n            <unmanaged>HRESULT IMediaBuffer::SetLength([In] unsigned int cbLength)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.IMediaBuffer.MaxLength\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMediaBuffer::GetMaxLength']/*\"/>\t\n            <unmanaged>GetMaxLength</unmanaged>\t\n            <unmanaged-short>GetMaxLength</unmanaged-short>\t\n            <unmanaged>HRESULT IMediaBuffer::GetMaxLength([Out] unsigned int* pcbMaxLength)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.IMediaObject\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>The <code><see cref=\"T:SharpDX.MediaFoundation.IMediaObject\"/></code> interface provides methods for manipulating a Microsoft DirectX Media Object (DMO).</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMediaObject']/*\"/>\t\n            <msdn-id>dd406926</msdn-id>\t\n            <unmanaged>IMediaObject</unmanaged>\t\n            <unmanaged-short>IMediaObject</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.IMediaObject.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.IMediaObject\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.IMediaObject.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.IMediaObject\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.IMediaObject\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.IMediaObject.GetStreamCount(System.Int32@,System.Int32@)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"cInputStreamsRef\">No documentation.</param>\t\n            <param name=\"cOutputStreamsRef\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMediaObject::GetStreamCount']/*\"/>\t\n            <unmanaged>HRESULT IMediaObject::GetStreamCount([Out] unsigned int* pcInputStreams,[Out] unsigned int* pcOutputStreams)</unmanaged>\t\n            <unmanaged-short>IMediaObject::GetStreamCount</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.IMediaObject.GetInputStreamInfo(System.Int32,System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>The <code>GetInputStreamInfo</code> method retrieves information about an input stream, such as any restrictions on the number of samples per buffer, and whether the stream performs lookahead on the input data. This information never changes.</p>\t\n            </summary>\t\n            <param name=\"dwInputStreamIndex\"><dd> <p>Zero-based index of an input stream on the DMO.</p> </dd></param>\t\n            <param name=\"dwFlagsRef\"><dd> <p>Pointer to a variable that receives a bitwise combination of zero or more <strong>DMO_INPUT_STREAM_INFO_FLAGS</strong> flags.</p> </dd></param>\t\n            <returns><p>Returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> value. Possible values include those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong>DMO_E_INVALIDSTREAMINDEX</strong></dt> </dl> </td><td> <p>Invalid stream index</p> </td></tr> <tr><td> <dl> <dt><strong>E_POINTER</strong></dt> </dl> </td><td> <p><strong><c>null</c></strong> reference argument</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>Success</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>The <see cref=\"F:SharpDX.MediaFoundation.DmoInputStreamInformationFlags.DmoInputStreamFHoldsBuffers\"/> flag indicates that the DMO performs lookahead on the incoming data.</p><p>The application must be sure to allocate sufficient buffers for the DMO to process the input. Call the <strong><see cref=\"M:SharpDX.MediaFoundation.IMediaObject.GetInputSizeInfo(System.Int32,System.Int32@,System.Int32@,System.Int32@)\"/></strong> method to determine the buffer requirements.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMediaObject::GetInputStreamInfo']/*\"/>\t\n            <msdn-id>dd406951</msdn-id>\t\n            <unmanaged>HRESULT IMediaObject::GetInputStreamInfo([In] unsigned int dwInputStreamIndex,[Out] unsigned int* pdwFlags)</unmanaged>\t\n            <unmanaged-short>IMediaObject::GetInputStreamInfo</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.IMediaObject.GetOutputStreamInfo(System.Int32,System.Int32@)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"dwOutputStreamIndex\">No documentation.</param>\t\n            <param name=\"dwFlagsRef\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMediaObject::GetOutputStreamInfo']/*\"/>\t\n            <unmanaged>HRESULT IMediaObject::GetOutputStreamInfo([In] unsigned int dwOutputStreamIndex,[Out] unsigned int* pdwFlags)</unmanaged>\t\n            <unmanaged-short>IMediaObject::GetOutputStreamInfo</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.IMediaObject.GetInputType(System.Int32,System.Int32,SharpDX.MediaFoundation.DmoMediaType@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>The <code>GetInputType</code> method retrieves a preferred media type for a specified input stream.</p>\t\n            </summary>\t\n            <param name=\"dwInputStreamIndex\"><dd> <p>Zero-based index of an input stream on the DMO.</p> </dd></param>\t\n            <param name=\"dwTypeIndex\"><dd> <p>Zero-based index on the set of acceptable media types.</p> </dd></param>\t\n            <param name=\"mtRef\"><dd> <p>Pointer to a <strong><see cref=\"T:SharpDX.MediaFoundation.DmoMediaType\"/></strong> structure allocated by the caller, or <strong><c>null</c></strong>. If this parameter is non-<strong><c>null</c></strong>, the method fills the structure with the media type. You can use the value <strong><c>null</c></strong> to test whether the type index is in range, by checking the return code.</p> </dd></param>\t\n            <returns><p>Returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> value. Possible values include those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong>DMO_E_INVALIDSTREAMINDEX</strong></dt> </dl> </td><td> <p>Invalid stream index.</p> </td></tr> <tr><td> <dl> <dt><strong>DMO_E_NO_MORE_ITEMS</strong></dt> </dl> </td><td> <p>Type index is out of range.</p> </td></tr> <tr><td> <dl> <dt><strong>E_OUTOFMEMORY</strong></dt> </dl> </td><td> <p>Insufficient memory.</p> </td></tr> <tr><td> <dl> <dt><strong>E_POINTER</strong></dt> </dl> </td><td> <p><strong><c>null</c></strong> reference argument.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>Success.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>Call this method to enumerate an input stream's preferred media types. The DMO assigns each media type an index value in order of preference. The most preferred type has an index of zero. To enumerate all the types, make successive calls while incrementing the type index until the method returns DMO_E_NO_MORE_ITEMS. The DMO is not guaranteed to enumerate every media type that it supports.</p><p>The format block in the returned type might be <strong><c>null</c></strong>. If so, the format type is GUID_NULL. Check the format type before dereferencing the format block.</p><p>If the method succeeds, call <strong>MoFreeMediaType</strong> to free the format block. (This function is also safe to call when the format block is <strong><c>null</c></strong>.)</p><p>To set the media type, call the <strong><see cref=\"M:SharpDX.MediaFoundation.IMediaObject.SetInputType(System.Int32,System.Nullable{SharpDX.MediaFoundation.DmoMediaType},System.Int32)\"/></strong> method. Setting the media type on one stream can change another stream's preferred types. In fact, a stream might not have a preferred type until the type is set on another stream. For example, a decoder might not have a preferred output type until the input type is set. However, the DMO is not required to update its preferred types dynamically in this fashion. Thus, the types returned by this method are not guaranteed to be valid; they might fail when used in the <strong>SetInputType</strong> method.</p><p>To test whether a particular media type is acceptable, call <strong>SetInputType</strong> with the <see cref=\"F:SharpDX.MediaFoundation.DmoSetTypeFlags.DmoSetTypefTestOnly\"/> flag.</p><p>To test whether the <em>dwTypeIndex</em> parameter is in range, set <em>pmt</em> to <strong><c>null</c></strong>. The method returns <see cref=\"F:SharpDX.Result.Ok\"/> if the index is in range, or DMO_E_NO_MORE_ITEMS if the index is out of range.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMediaObject::GetInputType']/*\"/>\t\n            <msdn-id>dd406952</msdn-id>\t\n            <unmanaged>HRESULT IMediaObject::GetInputType([In] unsigned int dwInputStreamIndex,[In] unsigned int dwTypeIndex,[Out, Optional] DMO_MEDIA_TYPE* pmt)</unmanaged>\t\n            <unmanaged-short>IMediaObject::GetInputType</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.IMediaObject.GetOutputType(System.Int32,System.Int32,SharpDX.MediaFoundation.DmoMediaType@)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"dwOutputStreamIndex\">No documentation.</param>\t\n            <param name=\"dwTypeIndex\">No documentation.</param>\t\n            <param name=\"mtRef\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMediaObject::GetOutputType']/*\"/>\t\n            <unmanaged>HRESULT IMediaObject::GetOutputType([In] unsigned int dwOutputStreamIndex,[In] unsigned int dwTypeIndex,[Out, Optional] DMO_MEDIA_TYPE* pmt)</unmanaged>\t\n            <unmanaged-short>IMediaObject::GetOutputType</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.IMediaObject.SetInputType(System.Int32,System.Nullable{SharpDX.MediaFoundation.DmoMediaType},System.Int32)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"dwInputStreamIndex\">No documentation.</param>\t\n            <param name=\"mtRef\">No documentation.</param>\t\n            <param name=\"dwFlags\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMediaObject::SetInputType']/*\"/>\t\n            <unmanaged>HRESULT IMediaObject::SetInputType([In] unsigned int dwInputStreamIndex,[In, Optional] const DMO_MEDIA_TYPE* pmt,[In] unsigned int dwFlags)</unmanaged>\t\n            <unmanaged-short>IMediaObject::SetInputType</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.IMediaObject.SetOutputType(System.Int32,System.Nullable{SharpDX.MediaFoundation.DmoMediaType},System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>The <code>SetOutputType</code> method sets the media type on an output stream, or tests whether a media type is acceptable.</p>\t\n            </summary>\t\n            <param name=\"dwOutputStreamIndex\"><dd> <p>Zero-based index of an output stream on the DMO.</p> </dd></param>\t\n            <param name=\"mtRef\"><dd> <p>Pointer to a <strong><see cref=\"T:SharpDX.MediaFoundation.DmoMediaType\"/></strong> structure that specifies the media type.</p> </dd></param>\t\n            <param name=\"dwFlags\"><dd> <p>Bitwise combination of zero or more flags from the <strong>DMO_SET_TYPE_FLAGS</strong> enumeration.</p> </dd></param>\t\n            <returns><p>Returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> value. Possible values include those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong>DMO_E_INVALIDSTREAMINDEX</strong></dt> </dl> </td><td> <p>Invalid stream index</p> </td></tr> <tr><td> <dl> <dt><strong>DMO_E_TYPE_NOT_ACCEPTED</strong></dt> </dl> </td><td> <p>Media type was not accepted</p> </td></tr> <tr><td> <dl> <dt><strong>S_FALSE</strong></dt> </dl> </td><td> <p>Media type is not acceptable</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>Media type was set successfully, or is acceptable</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>Call this method to test, set, or clear the media type on an output stream:</p><ul> <li>To test the media type without setting it, use the <see cref=\"F:SharpDX.MediaFoundation.DmoSetTypeFlags.DmoSetTypefTestOnly\"/> flag. If the media type is not acceptable, the method returns S_FALSE.</li> <li>To set the media type, set <em>dwFlags</em> to zero. If the media type is not acceptable, the method returns DMO_E_TYPE_NOT_ACCEPTED.</li> <li>To clear the current media type (if any), use the <see cref=\"F:SharpDX.MediaFoundation.DmoSetTypeFlags.DmoSetTypefClear\"/> flag and set <em>pmt</em> to <strong><c>null</c></strong>. When the method returns, the stream no longer has a media type. The DMO cannot process samples until the application sets a new media type, unless the stream is optional.</li> </ul><p>The media types that are currently set on other streams can affect whether the media type is acceptable.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMediaObject::SetOutputType']/*\"/>\t\n            <msdn-id>dd406963</msdn-id>\t\n            <unmanaged>HRESULT IMediaObject::SetOutputType([In] unsigned int dwOutputStreamIndex,[In, Optional] const DMO_MEDIA_TYPE* pmt,[In] unsigned int dwFlags)</unmanaged>\t\n            <unmanaged-short>IMediaObject::SetOutputType</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.IMediaObject.GetInputCurrentType(System.Int32,SharpDX.MediaFoundation.DmoMediaType@)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"dwInputStreamIndex\">No documentation.</param>\t\n            <param name=\"mtRef\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMediaObject::GetInputCurrentType']/*\"/>\t\n            <unmanaged>HRESULT IMediaObject::GetInputCurrentType([In] unsigned int dwInputStreamIndex,[Out] DMO_MEDIA_TYPE* pmt)</unmanaged>\t\n            <unmanaged-short>IMediaObject::GetInputCurrentType</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.IMediaObject.GetOutputCurrentType(System.Int32,SharpDX.MediaFoundation.DmoMediaType@)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"dwOutputStreamIndex\">No documentation.</param>\t\n            <param name=\"mtRef\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMediaObject::GetOutputCurrentType']/*\"/>\t\n            <unmanaged>HRESULT IMediaObject::GetOutputCurrentType([In] unsigned int dwOutputStreamIndex,[Out] DMO_MEDIA_TYPE* pmt)</unmanaged>\t\n            <unmanaged-short>IMediaObject::GetOutputCurrentType</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.IMediaObject.GetInputSizeInfo(System.Int32,System.Int32@,System.Int32@,System.Int32@)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"dwInputStreamIndex\">No documentation.</param>\t\n            <param name=\"cbSizeRef\">No documentation.</param>\t\n            <param name=\"cbMaxLookaheadRef\">No documentation.</param>\t\n            <param name=\"cbAlignmentRef\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMediaObject::GetInputSizeInfo']/*\"/>\t\n            <unmanaged>HRESULT IMediaObject::GetInputSizeInfo([In] unsigned int dwInputStreamIndex,[Out] unsigned int* pcbSize,[Out] unsigned int* pcbMaxLookahead,[Out] unsigned int* pcbAlignment)</unmanaged>\t\n            <unmanaged-short>IMediaObject::GetInputSizeInfo</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.IMediaObject.GetOutputSizeInfo(System.Int32,System.Int32@,System.Int32@)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"dwOutputStreamIndex\">No documentation.</param>\t\n            <param name=\"cbSizeRef\">No documentation.</param>\t\n            <param name=\"cbAlignmentRef\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMediaObject::GetOutputSizeInfo']/*\"/>\t\n            <unmanaged>HRESULT IMediaObject::GetOutputSizeInfo([In] unsigned int dwOutputStreamIndex,[Out] unsigned int* pcbSize,[Out] unsigned int* pcbAlignment)</unmanaged>\t\n            <unmanaged-short>IMediaObject::GetOutputSizeInfo</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.IMediaObject.GetInputMaxLatency(System.Int32,System.Int64@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>The <code>GetInputMaxLatency</code> method retrieves the maximum latency on a specified input stream.</p>\t\n            </summary>\t\n            <param name=\"dwInputStreamIndex\"><dd> <p>Zero-based index of an input stream on the DMO.</p> </dd></param>\t\n            <param name=\"rtMaxLatencyRef\"><dd> <p>Pointer to a variable that receives the maximum latency.</p> </dd></param>\t\n            <returns><p>Returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> value. Possible values include those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong>DMO_E_INVALIDSTREAMINDEX</strong></dt> </dl> </td><td> <p>Invalid stream index.</p> </td></tr> <tr><td> <dl> <dt><strong>E_FAIL</strong></dt> </dl> </td><td> <p>Failure.</p> </td></tr> <tr><td> <dl> <dt><strong>E_NOTIMPL</strong></dt> </dl> </td><td> <p>Not implemented. Assume zero latency.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>Success.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>The latency is the difference between a time stamp on the input stream and the corresponding time stamp on the output stream. The maximum latency is the largest possible difference in the time stamps. For a DMO, determine the maximum latency as follows:</p><ul> <li>Process input buffers until the DMO can produce output. </li> <li>Process as many output buffers as possible. </li> <li>The maximum latency is the largest delta between input time stamps and output time stamps (taken as an absolute value). </li> </ul><p>Under this definition, latency does not include the time that it takes to process samples. Nor does it include any latency introduced by the size of the input buffer.</p><p>For the special case where a DMO processes exactly one sample at a time, the maximum latency is simply the difference in time stamps.</p><p>Latency is defined only when samples have time stamps, and the time stamps increase or decrease monotonically. Maximum latency might depend on the media types for the input and output streams.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMediaObject::GetInputMaxLatency']/*\"/>\t\n            <msdn-id>dd406948</msdn-id>\t\n            <unmanaged>HRESULT IMediaObject::GetInputMaxLatency([In] unsigned int dwInputStreamIndex,[Out] longlong* prtMaxLatency)</unmanaged>\t\n            <unmanaged-short>IMediaObject::GetInputMaxLatency</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.IMediaObject.SetInputMaxLatency(System.Int32,System.Int64)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"dwInputStreamIndex\">No documentation.</param>\t\n            <param name=\"rtMaxLatency\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMediaObject::SetInputMaxLatency']/*\"/>\t\n            <unmanaged>HRESULT IMediaObject::SetInputMaxLatency([In] unsigned int dwInputStreamIndex,[In] longlong rtMaxLatency)</unmanaged>\t\n            <unmanaged-short>IMediaObject::SetInputMaxLatency</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.IMediaObject.Flush\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMediaObject::Flush']/*\"/>\t\n            <unmanaged>HRESULT IMediaObject::Flush()</unmanaged>\t\n            <unmanaged-short>IMediaObject::Flush</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.IMediaObject.Discontinuity(System.Int32)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"dwInputStreamIndex\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMediaObject::Discontinuity']/*\"/>\t\n            <unmanaged>HRESULT IMediaObject::Discontinuity([In] unsigned int dwInputStreamIndex)</unmanaged>\t\n            <unmanaged-short>IMediaObject::Discontinuity</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.IMediaObject.AllocateStreamingResources\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMediaObject::AllocateStreamingResources']/*\"/>\t\n            <unmanaged>HRESULT IMediaObject::AllocateStreamingResources()</unmanaged>\t\n            <unmanaged-short>IMediaObject::AllocateStreamingResources</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.IMediaObject.FreeStreamingResources\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>The <code>FreeStreamingResources</code> method frees resources allocated by the DMO. Calling this method is always optional.</p>\t\n            </summary>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful. Otherwise, returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> value indicating the cause of the error.</p></returns>\t\n            <remarks>\t\n            <p>This method releases any resources that the <strong><see cref=\"M:SharpDX.MediaFoundation.IMediaObject.AllocateStreamingResources\"/></strong> method initializes.</p><p>If the DMO does not support this method, the method returns <see cref=\"F:SharpDX.Result.Ok\"/>. If you call this method during streaming, the method fails and the DMO does not release any resources.</p><p>Regardless of whether the method fails or succeeds, the application can continue to call other methods on the DMO. The DMO might need to re-initialize resources that were previously freed.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMediaObject::FreeStreamingResources']/*\"/>\t\n            <msdn-id>dd406946</msdn-id>\t\n            <unmanaged>HRESULT IMediaObject::FreeStreamingResources()</unmanaged>\t\n            <unmanaged-short>IMediaObject::FreeStreamingResources</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.IMediaObject.GetInputStatus(System.Int32,System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>The <code>GetInputStatus</code> method queries whether an input stream can accept more input data.</p>\t\n            </summary>\t\n            <param name=\"dwInputStreamIndex\"><dd> <p>Zero-based index of an input stream on the DMO.</p> </dd></param>\t\n            <param name=\"dwFlags\"><dd> <p>Pointer to a variable that receives either zero or <see cref=\"F:SharpDX.MediaFoundation.DmoInputStatusFlags.DmoInputStatusfAcceptData\"/>.</p> </dd></param>\t\n            <returns><p>Returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> value. Possible values include those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong>DMO_E_INVALIDSTREAMINDEX</strong></dt> </dl> </td><td> <p>Invalid stream index</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>Success</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>If the input stream will accept more data, the method returns the <see cref=\"F:SharpDX.MediaFoundation.DmoInputStatusFlags.DmoInputStatusfAcceptData\"/> flag in the <em>dwFlags</em> parameter. Otherwise, it sets this parameter to zero. If the stream will accept more data, the application can call the <strong><see cref=\"M:SharpDX.MediaFoundation.IMediaObject.ProcessInput(System.Int32,SharpDX.MediaFoundation.IMediaBuffer,System.Int32,System.Int64,System.Int64)\"/></strong> method.</p><p>The status of an input stream can change only as the result of one of the following method calls.</p><table> <tr><th> Method </th><th> Description </th></tr> <tr><td> <strong><see cref=\"M:SharpDX.MediaFoundation.IMediaObject.Discontinuity(System.Int32)\"/></strong> </td><td>Signals a discontinuity on the specified input stream.</td></tr> <tr><td> <strong><see cref=\"M:SharpDX.MediaFoundation.IMediaObject.Flush\"/></strong> </td><td>Flushes all internally buffered data.</td></tr> <tr><td> <strong><see cref=\"M:SharpDX.MediaFoundation.IMediaObject.ProcessInput(System.Int32,SharpDX.MediaFoundation.IMediaBuffer,System.Int32,System.Int64,System.Int64)\"/></strong> </td><td>Delivers a buffer to the specified input stream.</td></tr> <tr><td> <strong><see cref=\"M:SharpDX.MediaFoundation.IMediaObject.ProcessOutput(System.Int32,System.Int32,SharpDX.MediaFoundation.DmoOutputDataBuffer[],System.Int32@)\"/></strong> </td><td>Generates output from the current input data.</td></tr> </table><p>?</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMediaObject::GetInputStatus']/*\"/>\t\n            <msdn-id>dd406950</msdn-id>\t\n            <unmanaged>HRESULT IMediaObject::GetInputStatus([In] unsigned int dwInputStreamIndex,[Out] unsigned int* dwFlags)</unmanaged>\t\n            <unmanaged-short>IMediaObject::GetInputStatus</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.IMediaObject.ProcessInput(System.Int32,SharpDX.MediaFoundation.IMediaBuffer,System.Int32,System.Int64,System.Int64)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>The <code>ProcessInput</code> method delivers a buffer to the specified input stream.</p>\t\n            </summary>\t\n            <param name=\"dwInputStreamIndex\"><dd> <p>Zero-based index of an input stream on the DMO.</p> </dd></param>\t\n            <param name=\"bufferRef\"><dd> <p>Pointer to the buffer's <strong><see cref=\"T:SharpDX.MediaFoundation.IMediaBuffer\"/></strong> interface.</p> </dd></param>\t\n            <param name=\"dwFlags\"><dd> <p>Bitwise combination of zero or more flags from the <strong>DMO_INPUT_DATA_BUFFER_FLAGS</strong> enumeration.</p> </dd></param>\t\n            <param name=\"rtTimestamp\"><dd> <p>Time stamp that specifies the start time of the data in the buffer. If the buffer has a valid time stamp, set the <see cref=\"F:SharpDX.MediaFoundation.DmoInputDataBufferFlags.DmoInputDataBufferFTime\"/> flag in the <em>dwFlags</em> parameter. Otherwise, the DMO ignores this value.</p> </dd></param>\t\n            <param name=\"rtTimelength\"><dd> <p>Reference time specifying the duration of the data in the buffer. If this value is valid, set the <see cref=\"F:SharpDX.MediaFoundation.DmoInputDataBufferFlags.DmoInputDataBufferFTimelength\"/> flag in the <em>dwFlags</em> parameter. Otherwise, the DMO ignores this value.</p> </dd></param>\t\n            <returns><p>Returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> value. Possible values include those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong>DMO_E_INVALIDSTREAMINDEX</strong></dt> </dl> </td><td> <p>Invalid stream index.</p> </td></tr> <tr><td> <dl> <dt><strong>DMO_E_NOTACCEPTING</strong></dt> </dl> </td><td> <p>Data cannot be accepted.</p> </td></tr> <tr><td> <dl> <dt><strong>S_FALSE</strong></dt> </dl> </td><td> <p>No output to process.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>Success.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>The input buffer specified in the <em>pBuffer</em> parameter is read-only. The DMO will not modify the data in this buffer. All write operations occur on the output buffers, which are given in a separate call to the <strong><see cref=\"M:SharpDX.MediaFoundation.IMediaObject.ProcessOutput(System.Int32,System.Int32,SharpDX.MediaFoundation.DmoOutputDataBuffer[],System.Int32@)\"/></strong> method.</p><p>If the DMO does not process all the data in the buffer, it keeps a reference count on the buffer. It releases the buffer once it has generated all the output, unless it needs to perform lookahead on the data. (To determine whether a DMO performs lookahead, call the <strong><see cref=\"M:SharpDX.MediaFoundation.IMediaObject.GetInputStreamInfo(System.Int32,System.Int32@)\"/></strong> method.)</p><p>If this method returns DMO_E_NOTACCEPTING, call <strong>ProcessOutput</strong> until the input stream can accept more data. To determine whether the stream can accept more data, call the <strong><see cref=\"M:SharpDX.MediaFoundation.IMediaObject.GetInputStatus(System.Int32,System.Int32@)\"/></strong> method.</p><p>If the method returns S_FALSE, no output was generated from this input and the application does not need to call <strong>ProcessOutput</strong>. However, a DMO is not required to return S_FALSE in this situation; it might return <see cref=\"F:SharpDX.Result.Ok\"/>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMediaObject::ProcessInput']/*\"/>\t\n            <msdn-id>dd406959</msdn-id>\t\n            <unmanaged>HRESULT IMediaObject::ProcessInput([In] unsigned int dwInputStreamIndex,[In] IMediaBuffer* pBuffer,[In] unsigned int dwFlags,[In] longlong rtTimestamp,[In] longlong rtTimelength)</unmanaged>\t\n            <unmanaged-short>IMediaObject::ProcessInput</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.IMediaObject.ProcessOutput(System.Int32,System.Int32,SharpDX.MediaFoundation.DmoOutputDataBuffer[],System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>The <code>ProcessOutput</code> method generates output from the current input data.</p>\t\n            </summary>\t\n            <param name=\"dwFlags\"><dd> <p>Bitwise combination of zero or more flags from the <strong>DMO_PROCESS_OUTPUT_FLAGS</strong> enumeration.</p> </dd></param>\t\n            <param name=\"cOutputBufferCount\"><dd> <p>Number of output buffers.</p> </dd></param>\t\n            <param name=\"outputBuffersRef\"><dd> <p>Pointer to an array of <strong><see cref=\"T:SharpDX.MediaFoundation.DmoOutputDataBuffer\"/></strong> structures containing the output buffers. Specify the size of the array in the <em>cOutputBufferCount</em> parameter.</p> </dd></param>\t\n            <param name=\"dwStatusRef\"><dd> <p>Pointer to a variable that receives a reserved value (zero). The application should ignore this value.</p> </dd></param>\t\n            <returns><p>Returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> value. Possible values include those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong>E_FAIL</strong></dt> </dl> </td><td> <p>Failure</p> </td></tr> <tr><td> <dl> <dt><strong>E_INVALIDARG</strong></dt> </dl> </td><td> <p>Invalid argument</p> </td></tr> <tr><td> <dl> <dt><strong>E_POINTER</strong></dt> </dl> </td><td> <p><strong><c>null</c></strong> reference argument</p> </td></tr> <tr><td> <dl> <dt><strong>S_FALSE</strong></dt> </dl> </td><td> <p>No output was generated</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>Success</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>The <em>pOutputBuffers</em> parameter points to an array of <strong><see cref=\"T:SharpDX.MediaFoundation.DmoOutputDataBuffer\"/></strong> structures. The application must allocate one structure for each output stream. To determine the number of output streams, call the <strong><see cref=\"M:SharpDX.MediaFoundation.IMediaObject.GetStreamCount(System.Int32@,System.Int32@)\"/></strong> method. Set the <em>cOutputBufferCount</em> parameter to this number.</p><p>Each <strong><see cref=\"T:SharpDX.MediaFoundation.DmoOutputDataBuffer\"/></strong> structure contains a reference to a buffer's <strong><see cref=\"T:SharpDX.MediaFoundation.IMediaBuffer\"/></strong> interface. The application allocates these buffers. The other members of the structure are status fields. The DMO sets these fields if the method succeeds. If the method fails, their values are undefined.</p><p>When the application calls <code>ProcessOutput</code>, the DMO processes as much input data as possible. It writes the output data to the output buffers, starting from the end of the data in each buffer. (To find the end of the data, call the <strong><see cref=\"M:SharpDX.MediaFoundation.IMediaBuffer.GetBufferAndLength(System.Byte[],System.Int32@)\"/></strong> method.) The DMO never holds a reference count on an output buffer.</p><p>If the DMO fills an entire output buffer and still has input data to process, the DMO returns the <see cref=\"F:SharpDX.MediaFoundation.DmoOutputDataBufferFlags.DmoOutputDataBufferFIncomplete\"/> flag in the <strong><see cref=\"T:SharpDX.MediaFoundation.DmoOutputDataBuffer\"/></strong> structure. The application should check for this flag by testing the <strong>dwStatus</strong> member of each structure.</p><p>If the method returns S_FALSE, no output was generated. However, a DMO is not required to return S_FALSE in this situation; it might return <see cref=\"F:SharpDX.Result.Ok\"/>.</p><p><strong>Discarding data:</strong></p><p>You can discard data from a stream by setting the <see cref=\"F:SharpDX.MediaFoundation.DmoProcessOutputFlags.DmoProcessOutputDiscardWhenNoBuffer\"/> flag in the <em>dwFlags</em> parameter. For each stream that you want to discard, set the <strong>pBuffer</strong> member of the <strong><see cref=\"T:SharpDX.MediaFoundation.DmoOutputDataBuffer\"/></strong> structure to <strong><c>null</c></strong>.</p><p>For each stream in which <strong>pBuffer</strong> is <strong><c>null</c></strong>:</p><ul> <li>If the <see cref=\"F:SharpDX.MediaFoundation.DmoProcessOutputFlags.DmoProcessOutputDiscardWhenNoBuffer\"/> flag is set, and the stream is discardable or optional, the DMO discards the data.</li> <li>If the flag is set but the stream is neither discardable nor optional, the DMO discards the data if possible. It is not guaranteed to discard the data.</li> <li>If the flag is not set, the DMO does not produce output data for that stream, but does not discard the data.</li> </ul><p>To check whether a stream is discardable or optional, call the <strong><see cref=\"M:SharpDX.MediaFoundation.IMediaObject.GetOutputStreamInfo(System.Int32,System.Int32@)\"/></strong> method.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMediaObject::ProcessOutput']/*\"/>\t\n            <msdn-id>dd406960</msdn-id>\t\n            <unmanaged>HRESULT IMediaObject::ProcessOutput([In] unsigned int dwFlags,[In] unsigned int cOutputBufferCount,[Out, Buffer] DMO_OUTPUT_DATA_BUFFER* pOutputBuffers,[Out] unsigned int* pdwStatus)</unmanaged>\t\n            <unmanaged-short>IMediaObject::ProcessOutput</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.IMediaObject.Lock(System.Int32)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"bLock\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMediaObject::Lock']/*\"/>\t\n            <unmanaged>HRESULT IMediaObject::Lock([In] int bLock)</unmanaged>\t\n            <unmanaged-short>IMediaObject::Lock</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.IMediaObjectInPlace\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMediaObjectInPlace']/*\"/>\t\n            <unmanaged>IMediaObjectInPlace</unmanaged>\t\n            <unmanaged-short>IMediaObjectInPlace</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.IMediaObjectInPlace.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.IMediaObjectInPlace\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.IMediaObjectInPlace.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.IMediaObjectInPlace\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.IMediaObjectInPlace\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.IMediaObjectInPlace.Process(System.Int32,System.Byte[],System.Int64,System.Int32)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"ulSize\">No documentation.</param>\t\n            <param name=\"dataRef\">No documentation.</param>\t\n            <param name=\"refTimeStart\">No documentation.</param>\t\n            <param name=\"dwFlags\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMediaObjectInPlace::Process']/*\"/>\t\n            <unmanaged>HRESULT IMediaObjectInPlace::Process([In] unsigned int ulSize,[Out, Buffer] unsigned char* pData,[In] longlong refTimeStart,[In] unsigned int dwFlags)</unmanaged>\t\n            <unmanaged-short>IMediaObjectInPlace::Process</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.IMediaObjectInPlace.Clone(SharpDX.MediaFoundation.IMediaObjectInPlace@)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"mediaObjectOut\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMediaObjectInPlace::Clone']/*\"/>\t\n            <unmanaged>HRESULT IMediaObjectInPlace::Clone([Out] IMediaObjectInPlace** ppMediaObject)</unmanaged>\t\n            <unmanaged-short>IMediaObjectInPlace::Clone</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.IMediaObjectInPlace.GetLatency(System.Int64@)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"latencyTimeRef\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMediaObjectInPlace::GetLatency']/*\"/>\t\n            <unmanaged>HRESULT IMediaObjectInPlace::GetLatency([Out] longlong* pLatencyTime)</unmanaged>\t\n            <unmanaged-short>IMediaObjectInPlace::GetLatency</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.IMediaObjectInPlace.Latency\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMediaObjectInPlace::GetLatency']/*\"/>\t\n            <unmanaged>GetLatency</unmanaged>\t\n            <unmanaged-short>GetLatency</unmanaged-short>\t\n            <unmanaged>HRESULT IMediaObjectInPlace::GetLatency([Out] longlong* pLatencyTime)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.InputTrustAuthority\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Requests permission to perform a specified action on the stream.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This method verifies whether the user has permission to perform a specified action on the stream. The ITA does any work needed to verify the user's right to perform the action, such as checking licenses.</p><p>To verify the user's rights, the ITA might need to perform additional steps that require interaction with the user or consent from the user. For example, it might need to acquire a new license or individualize a DRM component. In that case, the ITA creates an activation object for a content enabler and returns the activation object's <strong><see cref=\"T:SharpDX.MediaFoundation.Activate\"/></strong> interface in the <em>ppContentEnablerActivate</em> parameter. The activation object is responsible for creating a content enabler that exposes the <strong><see cref=\"T:SharpDX.MediaFoundation.ContentEnabler\"/></strong> interface. The content enabler is used as follows:</p><ol> <li> <p>The Media Session returns the <strong><see cref=\"T:SharpDX.MediaFoundation.Activate\"/></strong> reference to the application.</p> </li> <li> <p>The application calls <strong><see cref=\"M:SharpDX.MediaFoundation.Activate.ActivateObject(System.Guid,System.IntPtr@)\"/></strong> to activate the content enabler.</p> </li> <li> <p>The application calls <strong><see cref=\"T:SharpDX.MediaFoundation.ContentEnabler\"/></strong> methods to perform whatever actions are needed, such as individualization or obtaining a license. The content enabler object must encapsulate this functionality through the <strong><see cref=\"T:SharpDX.MediaFoundation.ContentEnabler\"/></strong> interface.</p> </li> <li> <p>The Media Session calls <strong>RequestAccess</strong> again.</p> </li> </ol><p>The return value signals whether the user has permission to perform the action:</p><ul> <li> <p>If the user already has permission to perform the action, the method returns <see cref=\"F:SharpDX.Result.Ok\"/> and sets *<em>ppContentEnablerActivate</em> to <strong><c>null</c></strong>.</p> </li> <li> <p>If the user does not have permission, the method returns a failure code and sets *<em>ppContentEnablerActivate</em> to <strong><c>null</c></strong>.</p> </li> <li> <p>If the ITA must perform additional steps that require interaction with the user, the method returns a failure code and returns the content enabler's <strong><see cref=\"T:SharpDX.MediaFoundation.Activate\"/></strong> reference in <em>ppContentEnablerActivate</em>.</p> </li> </ul><p>The Media Session will not allow the action unless this method returns <see cref=\"F:SharpDX.Result.Ok\"/>. However, a return value of <see cref=\"F:SharpDX.Result.Ok\"/> does not guarantee that the action will be performed, because some other failure might occur after this method is called. When the action is definitely about to happen, the Media Session calls <strong><see cref=\"M:SharpDX.MediaFoundation.InputTrustAuthority.BindAccess(SharpDX.MediaFoundation.InputTrustauthorityAccessParameters@)\"/></strong>.</p><p>A stream can go to multiple outputs, so this method might be called multiple times with different actions, once for every output.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFInputTrustAuthority']/*\"/>\t\n            <msdn-id>bb970453</msdn-id>\t\n            <unmanaged>IMFInputTrustAuthority</unmanaged>\t\n            <unmanaged-short>IMFInputTrustAuthority</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.InputTrustAuthority.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.InputTrustAuthority\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.InputTrustAuthority.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.InputTrustAuthority\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.InputTrustAuthority\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.InputTrustAuthority.GetDecrypter(System.Guid,System.IntPtr@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves a decrypter transform.</p>\t\n            </summary>\t\n            <param name=\"riid\"><dd> <p>Interface identifier (IID) of the interface being requested. Currently this value must be IID_IMFTransform, which requests the <strong><see cref=\"T:SharpDX.MediaFoundation.Transform\"/></strong> interface.</p> </dd></param>\t\n            <param name=\"vOut\"><dd> <p>Receives a reference to the interface. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>The method returns an <see cref=\"T:SharpDX.Result\"/>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong>E_NOINTERFACE</strong></dt> </dl> </td><td> <p>The decrypter does not support the requested interface.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.NotProtected\"/></strong></dt> </dl> </td><td> <p>This input trust authority (ITA) does not provide a decrypter.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>The decrypter should be created in a disabled state, where any calls to <strong><see cref=\"M:SharpDX.MediaFoundation.Transform.ProcessOutput(SharpDX.MediaFoundation.TransformProcessOutputFlags,System.Int32,SharpDX.MediaFoundation.TOutputDataBuffer,SharpDX.MediaFoundation.TransformProcessOutputStatus@)\"/></strong> automatically fail. After the input trust authority (ITA) has verified that it is running inside the protected media path (PMP), the ITA should enable the decrypter.</p><p>An ITA is not required to provide a decrypter. If the source content is not encrypted, the method should return <see cref=\"F:SharpDX.MediaFoundation.ResultCode.NotProtected\"/>. The PMP will then proceed without using a decrypter for that stream.</p><p>The ITA must create a new instance of its decrypter for each call to <strong>GetDecrypter</strong>. Do not return multiple references to the same decrypter. They must be separate instances because the Media Session might place them in two different branches of the topology.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFInputTrustAuthority::GetDecrypter']/*\"/>\t\n            <msdn-id>bb970385</msdn-id>\t\n            <unmanaged>HRESULT IMFInputTrustAuthority::GetDecrypter([In] const GUID&amp; riid,[Out] void** ppv)</unmanaged>\t\n            <unmanaged-short>IMFInputTrustAuthority::GetDecrypter</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.InputTrustAuthority.RequestAccess(SharpDX.MediaFoundation.PolicymanagerAction,SharpDX.MediaFoundation.Activate@)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"action\">No documentation.</param>\t\n            <param name=\"contentEnablerActivateOut\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFInputTrustAuthority::RequestAccess']/*\"/>\t\n            <unmanaged>HRESULT IMFInputTrustAuthority::RequestAccess([In] MFPOLICYMANAGER_ACTION Action,[Out] IMFActivate** ppContentEnablerActivate)</unmanaged>\t\n            <unmanaged-short>IMFInputTrustAuthority::RequestAccess</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.InputTrustAuthority.GetPolicy(SharpDX.MediaFoundation.PolicymanagerAction,SharpDX.MediaFoundation.OutputPolicy@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves the policy that defines which output protection systems are allowed for this stream, and the configuration data for each protection system.</p>\t\n            </summary>\t\n            <param name=\"action\"><dd> <p>The action that will be performed on this stream, specified as a member of the <strong><see cref=\"T:SharpDX.MediaFoundation.PolicymanagerAction\"/></strong> enumeration.</p> </dd></param>\t\n            <param name=\"policyOut\"><dd> <p>Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.OutputPolicy\"/></strong> interface. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>The method returns an <see cref=\"T:SharpDX.Result\"/>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFInputTrustAuthority::GetPolicy']/*\"/>\t\n            <msdn-id>bb970400</msdn-id>\t\n            <unmanaged>HRESULT IMFInputTrustAuthority::GetPolicy([In] MFPOLICYMANAGER_ACTION Action,[Out] IMFOutputPolicy** ppPolicy)</unmanaged>\t\n            <unmanaged-short>IMFInputTrustAuthority::GetPolicy</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.InputTrustAuthority.BindAccess(SharpDX.MediaFoundation.InputTrustauthorityAccessParameters@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Notifies the input trust authority (ITA) that a requested action is about to be performed.</p>\t\n            </summary>\t\n            <param name=\"paramRef\"><dd> <p>Pointer to an <strong><see cref=\"T:SharpDX.MediaFoundation.InputTrustauthorityAccessParameters\"/></strong> structure that contains parameters for the <strong>BindAccess</strong> action.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>Before calling this method, the Media Session calls <strong><see cref=\"M:SharpDX.MediaFoundation.InputTrustAuthority.RequestAccess(SharpDX.MediaFoundation.PolicymanagerAction,SharpDX.MediaFoundation.Activate@)\"/></strong> to request an action. The <strong>BindAccess</strong> method notifies the ITA that the action is definitely about to occur, so that the ITA can update its internal state as needed. If the method returns a failure code, the Media Session cancels the action.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFInputTrustAuthority::BindAccess']/*\"/>\t\n            <msdn-id>ms701551</msdn-id>\t\n            <unmanaged>HRESULT IMFInputTrustAuthority::BindAccess([In] MFINPUTTRUSTAUTHORITY_ACCESS_PARAMS* pParam)</unmanaged>\t\n            <unmanaged-short>IMFInputTrustAuthority::BindAccess</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.InputTrustAuthority.UpdateAccess(SharpDX.MediaFoundation.InputTrustauthorityAccessParameters@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Notifies the input trust authority (ITA) when the number of output trust authorities (OTAs) that will perform a specified action has changed.</p>\t\n            </summary>\t\n            <param name=\"paramRef\"><dd> <p>Pointer to an <strong><see cref=\"T:SharpDX.MediaFoundation.InputTrustauthorityAccessParameters\"/></strong> structure that contains parameters for the <strong>UpdateAccess</strong> action.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>The ITA can update its internal state if needed. If the method returns a failure code, the Media Session cancels the action.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFInputTrustAuthority::UpdateAccess']/*\"/>\t\n            <msdn-id>ms697037</msdn-id>\t\n            <unmanaged>HRESULT IMFInputTrustAuthority::UpdateAccess([In] MFINPUTTRUSTAUTHORITY_ACCESS_PARAMS* pParam)</unmanaged>\t\n            <unmanaged-short>IMFInputTrustAuthority::UpdateAccess</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.InputTrustAuthority.Reset\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Resets the input trust authority (ITA) to its initial state.</p>\t\n            </summary>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>When this method is called, the ITA should disable any decrypter that was returned in the <strong><see cref=\"M:SharpDX.MediaFoundation.InputTrustAuthority.GetDecrypter(System.Guid,System.IntPtr@)\"/></strong> method.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFInputTrustAuthority::Reset']/*\"/>\t\n            <msdn-id>ms703015</msdn-id>\t\n            <unmanaged>HRESULT IMFInputTrustAuthority::Reset()</unmanaged>\t\n            <unmanaged-short>IMFInputTrustAuthority::Reset</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.LocalMFTRegistration\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Registers one or more Media Foundation transforms (MFTs) in the caller's process.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This method is similar to the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.TRegisterLocalByCLSID(System.Guid,System.Guid,System.String,System.Int32,System.Int32,SharpDX.MediaFoundation.TRegisterTypeInformation[],System.Int32,SharpDX.MediaFoundation.TRegisterTypeInformation[])\"/></strong> function. It registers one or more MFTs in the caller's process. These MFTs can be enumerated by calling the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.TEnumEx(System.Guid,System.Int32,System.Nullable{SharpDX.MediaFoundation.TRegisterTypeInformation},System.Nullable{SharpDX.MediaFoundation.TRegisterTypeInformation},System.IntPtr@,System.Int32@)\"/></strong> function with the <strong><see cref=\"F:SharpDX.MediaFoundation.TransformEnumFlag.Localmft\"/></strong> flag.</p><p>Unlike <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.TRegisterLocalByCLSID(System.Guid,System.Guid,System.String,System.Int32,System.Int32,SharpDX.MediaFoundation.TRegisterTypeInformation[],System.Int32,SharpDX.MediaFoundation.TRegisterTypeInformation[])\"/></strong>, however, this method also makes the MFT available in the Protected Media Path (PMP) process, and is therefore useful if you are using the Media Session inside the PMP. For more information, see the following topics:</p><ul> <li> <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreatePMPMediaSession(System.Int32,SharpDX.MediaFoundation.MediaAttributes,SharpDX.MediaFoundation.MediaSession@,SharpDX.MediaFoundation.Activate@)\"/></strong> </li> <li> Protected Media Path </li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFLocalMFTRegistration']/*\"/>\t\n            <msdn-id>dd374223</msdn-id>\t\n            <unmanaged>IMFLocalMFTRegistration</unmanaged>\t\n            <unmanaged-short>IMFLocalMFTRegistration</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.LocalMFTRegistration.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.LocalMFTRegistration\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.LocalMFTRegistration.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.LocalMFTRegistration\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.LocalMFTRegistration\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.LocalMFTRegistration.RegisterMFTs(SharpDX.MediaFoundation.TRegistrationInformation[],System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Registers one or more Media Foundation transforms (MFTs) in the caller's process.</p>\t\n            </summary>\t\n            <param name=\"mFTsRef\"><dd> <p>A reference to an array of <strong><see cref=\"T:SharpDX.MediaFoundation.TRegistrationInformation\"/></strong> structures.</p> </dd></param>\t\n            <param name=\"cMFTs\"><dd> <p>The number of elements in the <em>pMFTs</em> array.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>This method is similar to the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.TRegisterLocalByCLSID(System.Guid,System.Guid,System.String,System.Int32,System.Int32,SharpDX.MediaFoundation.TRegisterTypeInformation[],System.Int32,SharpDX.MediaFoundation.TRegisterTypeInformation[])\"/></strong> function. It registers one or more MFTs in the caller's process. These MFTs can be enumerated by calling the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.TEnumEx(System.Guid,System.Int32,System.Nullable{SharpDX.MediaFoundation.TRegisterTypeInformation},System.Nullable{SharpDX.MediaFoundation.TRegisterTypeInformation},System.IntPtr@,System.Int32@)\"/></strong> function with the <strong><see cref=\"F:SharpDX.MediaFoundation.TransformEnumFlag.Localmft\"/></strong> flag.</p><p>Unlike <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.TRegisterLocalByCLSID(System.Guid,System.Guid,System.String,System.Int32,System.Int32,SharpDX.MediaFoundation.TRegisterTypeInformation[],System.Int32,SharpDX.MediaFoundation.TRegisterTypeInformation[])\"/></strong>, however, this method also makes the MFT available in the Protected Media Path (PMP) process, and is therefore useful if you are using the Media Session inside the PMP. For more information, see the following topics:</p><ul> <li> <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreatePMPMediaSession(System.Int32,SharpDX.MediaFoundation.MediaAttributes,SharpDX.MediaFoundation.MediaSession@,SharpDX.MediaFoundation.Activate@)\"/></strong> </li> <li> Protected Media Path </li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFLocalMFTRegistration::RegisterMFTs']/*\"/>\t\n            <msdn-id>dd374223</msdn-id>\t\n            <unmanaged>HRESULT IMFLocalMFTRegistration::RegisterMFTs([In, Buffer] MFT_REGISTRATION_INFO* pMFTs,[In] unsigned int cMFTs)</unmanaged>\t\n            <unmanaged-short>IMFLocalMFTRegistration::RegisterMFTs</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.MediaBuffer\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Represents a block of memory that contains media data. Use this interface to access the data in the buffer.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>If the buffer contains 2-D image data (such as an uncompressed video frame), you should query the buffer for the <strong><see cref=\"T:SharpDX.MediaFoundation.Buffer2D\"/></strong> interface. The methods on <strong><see cref=\"T:SharpDX.MediaFoundation.Buffer2D\"/></strong> are optimized for 2-D data.</p><p>To get a buffer from a media sample, call one of the following <strong><see cref=\"T:SharpDX.MediaFoundation.Sample\"/></strong> methods:</p><ul> <li> <p> <strong><see cref=\"M:SharpDX.MediaFoundation.Sample.ConvertToContiguousBuffer\"/></strong> </p> </li> <li> <p> <strong><see cref=\"M:SharpDX.MediaFoundation.Sample.GetBufferByIndex(System.Int32)\"/></strong> </p> </li> </ul><p>To create a new buffer object, use one of the following functions.</p><table> <tr><th>Function</th><th>Description</th></tr> <tr><td> <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateMemoryBuffer(System.Int32,SharpDX.MediaFoundation.MediaBuffer@)\"/></strong> </td><td>Creates a buffer and allocates system memory.</td></tr> <tr><td> <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateMediaBufferWrapper(SharpDX.MediaFoundation.MediaBuffer,System.Int32,System.Int32,SharpDX.MediaFoundation.MediaBuffer@)\"/></strong> </td><td>Creates a media buffer that wraps an existing media buffer.</td></tr> <tr><td> <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateDXSurfaceBuffer(System.Guid,SharpDX.ComObject,SharpDX.Bool,SharpDX.MediaFoundation.MediaBuffer@)\"/></strong> </td><td>Creates a buffer that manages a DirectX surface.</td></tr> <tr><td> <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateAlignedMemoryBuffer(System.Int32,System.Int32,SharpDX.MediaFoundation.MediaBuffer@)\"/></strong> </td><td>Creates a buffer and allocates system memory with a specified alignment.</td></tr> </table><p>?</p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaBuffer']/*\"/>\t\n            <msdn-id>ms696261</msdn-id>\t\n            <unmanaged>IMFMediaBuffer</unmanaged>\t\n            <unmanaged-short>IMFMediaBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaBuffer.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.MediaBuffer\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaBuffer.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.MediaBuffer\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.MediaBuffer\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaBuffer.Lock(System.Int32@,System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Gives the caller access to the memory in the buffer, for reading or writing</p>\t\n            </summary>\t\n            <param name=\"cbMaxLengthRef\"><dd> <p>Receives the maximum amount of data that can be written to the buffer. This parameter can be <strong><c>null</c></strong>. The same value is returned by the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaBuffer.GetMaxLength(System.Int32@)\"/></strong> method.</p> </dd></param>\t\n            <param name=\"cbCurrentLengthRef\"><dd> <p>Receives the length of the valid data in the buffer, in bytes. This parameter can be <strong><c>null</c></strong>. The same value is returned by the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaBuffer.GetCurrentLength(System.Int32@)\"/></strong> method.</p> </dd></param>\t\n            <returns><dd> <p>Receives a reference to the start of the buffer.</p> </dd></returns>\t\n            <remarks>\t\n            <p>This method gives the caller access to the entire buffer, up to the maximum size returned in the <em>pcbMaxLength</em> parameter. The value returned in <em>pcbCurrentLength</em> is the size of any valid data already in the buffer, which might be less than the total buffer size.</p><p>The reference returned in <em>ppbBuffer</em> is guaranteed to be valid, and can safely be accessed across the entire buffer for as long as the lock is held. When you are done accessing the buffer, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaBuffer.Unlock\"/></strong> to unlock the buffer. You must call <strong>Unlock</strong> once for each call to <strong>Lock</strong>. After you unlock the buffer, the reference returned in <em>ppbBuffer</em> is no longer valid, and should not be used. Generally, it is best to call <strong>Lock</strong> only when you need to access the buffer memory, and not earlier.</p><p>Locking the buffer does not prevent other threads from calling <strong>Lock</strong>, so you should not rely on this method to synchronize threads.</p><p>This method does not allocate any memory, or transfer ownership of the memory to the caller. Do not release or free the memory; the media buffer will free the memory when the media buffer is destroyed.</p><p>If you modify the contents of the buffer, update the current length by calling <strong><see cref=\"M:SharpDX.MediaFoundation.MediaBuffer.SetCurrentLength(System.Int32)\"/></strong>.</p><p>If the buffer supports the <strong><see cref=\"T:SharpDX.MediaFoundation.Buffer2D\"/></strong> interface, you should use the <strong><see cref=\"M:SharpDX.MediaFoundation.Buffer2D.Lock2D(System.Byte@,System.Int32)\"/></strong> method to lock the buffer. For 2-D buffers, the <strong>Lock2D</strong> method is more efficient than the <strong>Lock</strong> method. If the buffer is locked using <strong>Lock2D</strong>, the Lock method might return <strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidRequest\"/></strong>.</p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaBuffer::Lock']/*\"/>\t\n            <msdn-id>bb970366</msdn-id>\t\n            <unmanaged>HRESULT IMFMediaBuffer::Lock([Out] void** ppbBuffer,[Out, Optional] unsigned int* pcbMaxLength,[Out, Optional] unsigned int* pcbCurrentLength)</unmanaged>\t\n            <unmanaged-short>IMFMediaBuffer::Lock</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaBuffer.Unlock\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Unlocks a buffer that was previously locked. Call this method once for every call to <strong><see cref=\"M:SharpDX.MediaFoundation.MediaBuffer.Lock(System.Int32@,System.Int32@)\"/></strong>.</p>\t\n            </summary>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/></strong></dt> </dl> </td><td> <p>For Direct3D surface buffers, an error occurred when unlocking the surface.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>It is an error to call <strong>Unlock</strong> if you did not call <strong>Lock</strong> previously.</p><p>After calling this method, do not use the reference returned by the <strong>Lock</strong> method. It is no longer guaranteed to be valid.</p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaBuffer::Unlock']/*\"/>\t\n            <msdn-id>ms696259</msdn-id>\t\n            <unmanaged>HRESULT IMFMediaBuffer::Unlock()</unmanaged>\t\n            <unmanaged-short>IMFMediaBuffer::Unlock</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaBuffer.GetCurrentLength(System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves the length of the valid data in the buffer.</p>\t\n            </summary>\t\n            <param name=\"cbCurrentLengthRef\"><dd> <p>Receives the length of the valid data, in bytes. If the buffer does not contain any valid data, the value is zero.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaBuffer::GetCurrentLength']/*\"/>\t\n            <msdn-id>ms698987</msdn-id>\t\n            <unmanaged>HRESULT IMFMediaBuffer::GetCurrentLength([Out] unsigned int* pcbCurrentLength)</unmanaged>\t\n            <unmanaged-short>IMFMediaBuffer::GetCurrentLength</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaBuffer.SetCurrentLength(System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Sets the length of the valid data in the buffer.</p>\t\n            </summary>\t\n            <param name=\"cbCurrentLength\"><dd> <p>Length of the valid data, in bytes. This value cannot be greater than the allocated size of the buffer, which is returned by the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaBuffer.GetMaxLength(System.Int32@)\"/></strong> method.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong>E_INVALIDARG</strong></dt> </dl> </td><td> <p>The specified length is greater than the maximum size of the buffer.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>Call this method if you write data into the buffer.</p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaBuffer::SetCurrentLength']/*\"/>\t\n            <msdn-id>ms703202</msdn-id>\t\n            <unmanaged>HRESULT IMFMediaBuffer::SetCurrentLength([In] unsigned int cbCurrentLength)</unmanaged>\t\n            <unmanaged-short>IMFMediaBuffer::SetCurrentLength</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaBuffer.GetMaxLength(System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves the allocated size of the buffer.</p>\t\n            </summary>\t\n            <param name=\"cbMaxLengthRef\"><dd> <p>Receives the allocated size of the buffer, in bytes.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>The buffer might or might not contain any valid data, and if there is valid data in the buffer, it might be smaller than the buffer's allocated size. To get the length of the valid data, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaBuffer.GetCurrentLength(System.Int32@)\"/></strong>.</p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaBuffer::GetMaxLength']/*\"/>\t\n            <msdn-id>ms704840</msdn-id>\t\n            <unmanaged>HRESULT IMFMediaBuffer::GetMaxLength([Out] unsigned int* pcbMaxLength)</unmanaged>\t\n            <unmanaged-short>IMFMediaBuffer::GetMaxLength</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.MediaBuffer.CurrentLength\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves the length of the valid data in the buffer.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaBuffer::GetCurrentLength']/*\"/>\t\n            <msdn-id>ms698987</msdn-id>\t\n            <unmanaged>GetCurrentLength / SetCurrentLength</unmanaged>\t\n            <unmanaged-short>GetCurrentLength</unmanaged-short>\t\n            <unmanaged>HRESULT IMFMediaBuffer::GetCurrentLength([Out] unsigned int* pcbCurrentLength)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.MediaBuffer.MaxLength\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves the allocated size of the buffer.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The buffer might or might not contain any valid data, and if there is valid data in the buffer, it might be smaller than the buffer's allocated size. To get the length of the valid data, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaBuffer.GetCurrentLength(System.Int32@)\"/></strong>.</p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaBuffer::GetMaxLength']/*\"/>\t\n            <msdn-id>ms704840</msdn-id>\t\n            <unmanaged>GetMaxLength</unmanaged>\t\n            <unmanaged-short>GetMaxLength</unmanaged-short>\t\n            <unmanaged>HRESULT IMFMediaBuffer::GetMaxLength([Out] unsigned int* pcbMaxLength)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.MediaEvent\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves an <strong><see cref=\"T:SharpDX.Result\"/></strong> that specifies the event status.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaEvent']/*\"/>\t\n            <msdn-id>ms704650</msdn-id>\t\n            <unmanaged>IMFMediaEvent</unmanaged>\t\n            <unmanaged-short>IMFMediaEvent</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaEvent.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.MediaEvent\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaEvent.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.MediaEvent\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.MediaEvent\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaEvent.GetTypeInfo(System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves the event type. The event type indicates what happened to trigger the event. It also defines the meaning of the event value.</p>\t\n            </summary>\t\n            <param name=\"metRef\"><dd> <p>Receives the event type. For a list of event types, see Media Foundation Events.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaEvent::GetType']/*\"/>\t\n            <msdn-id>ms702255</msdn-id>\t\n            <unmanaged>HRESULT IMFMediaEvent::GetType([Out] unsigned int* pmet)</unmanaged>\t\n            <unmanaged-short>IMFMediaEvent::GetType</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaEvent.GetExtendedType(System.Guid@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves the extended type of the event.</p>\t\n            </summary>\t\n            <param name=\"guidExtendedTypeRef\"><dd> <p>Receives a <strong><see cref=\"T:System.Guid\"/></strong> that identifies the extended type.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>To define a custom event, create a new extended-type <see cref=\"T:System.Guid\"/> and send an <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.ExtendedType\"/> event with that <see cref=\"T:System.Guid\"/>.</p><p>Some standard Media Foundation events also use the extended type to differentiate between types of event data.</p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaEvent::GetExtendedType']/*\"/>\t\n            <msdn-id>ms697235</msdn-id>\t\n            <unmanaged>HRESULT IMFMediaEvent::GetExtendedType([Out] GUID* pguidExtendedType)</unmanaged>\t\n            <unmanaged-short>IMFMediaEvent::GetExtendedType</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaEvent.GetStatus(SharpDX.Result@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves an <strong><see cref=\"T:SharpDX.Result\"/></strong> that specifies the event status.</p>\t\n            </summary>\t\n            <param name=\"hrStatusRef\"><dd> <p>Receives the event status. If the operation that generated the event was successful, the value is a success code. A failure code means that an error condition triggered the event.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaEvent::GetStatus']/*\"/>\t\n            <msdn-id>ms704650</msdn-id>\t\n            <unmanaged>HRESULT IMFMediaEvent::GetStatus([Out] HRESULT* phrStatus)</unmanaged>\t\n            <unmanaged-short>IMFMediaEvent::GetStatus</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaEvent.GetValue(SharpDX.Win32.Variant@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Represents an event generated by a Media Foundation object. Use this interface to get information about the event.</p><p>To get a reference to this interface, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaEventGenerator.BeginGetEvent(SharpDX.MediaFoundation.AsyncCallback,SharpDX.ComObject)\"/></strong> or <strong><see cref=\"M:SharpDX.MediaFoundation.MediaEventGenerator.GetEvent(System.Int32,SharpDX.MediaFoundation.MediaEvent@)\"/></strong> on the event generator.</p>\t\n            </summary>\t\n            <param name=\"vValueRef\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <remarks>\t\n            <p>If you are implementing an object that generates events, call the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateMediaEvent(System.Int32,System.Guid,SharpDX.Result,System.Nullable{SharpDX.Win32.Variant},SharpDX.MediaFoundation.MediaEvent@)\"/></strong> function to create a new event object.</p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaEvent::GetValue']/*\"/>\t\n            <msdn-id>ms702249</msdn-id>\t\n            <unmanaged>HRESULT IMFMediaEvent::GetValue([Out] PROPVARIANT* pvValue)</unmanaged>\t\n            <unmanaged-short>IMFMediaEvent::GetValue</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.MediaEvent.TypeInfo\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves the event type. The event type indicates what happened to trigger the event. It also defines the meaning of the event value.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaEvent::GetType']/*\"/>\t\n            <msdn-id>ms702255</msdn-id>\t\n            <unmanaged>GetType</unmanaged>\t\n            <unmanaged-short>GetType</unmanaged-short>\t\n            <unmanaged>HRESULT IMFMediaEvent::GetType([Out] unsigned int* pmet)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.MediaEvent.ExtendedType\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves the extended type of the event.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>To define a custom event, create a new extended-type <see cref=\"T:System.Guid\"/> and send an <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.ExtendedType\"/> event with that <see cref=\"T:System.Guid\"/>.</p><p>Some standard Media Foundation events also use the extended type to differentiate between types of event data.</p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaEvent::GetExtendedType']/*\"/>\t\n            <msdn-id>ms697235</msdn-id>\t\n            <unmanaged>GetExtendedType</unmanaged>\t\n            <unmanaged-short>GetExtendedType</unmanaged-short>\t\n            <unmanaged>HRESULT IMFMediaEvent::GetExtendedType([Out] GUID* pguidExtendedType)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.MediaEvent.Status\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves an <strong><see cref=\"T:SharpDX.Result\"/></strong> that specifies the event status.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaEvent::GetStatus']/*\"/>\t\n            <msdn-id>ms704650</msdn-id>\t\n            <unmanaged>GetStatus</unmanaged>\t\n            <unmanaged-short>GetStatus</unmanaged-short>\t\n            <unmanaged>HRESULT IMFMediaEvent::GetStatus([Out] HRESULT* phrStatus)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.MediaEvent.Value\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Represents an event generated by a Media Foundation object. Use this interface to get information about the event.</p><p>To get a reference to this interface, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaEventGenerator.BeginGetEvent(SharpDX.MediaFoundation.AsyncCallback,SharpDX.ComObject)\"/></strong> or <strong><see cref=\"M:SharpDX.MediaFoundation.MediaEventGenerator.GetEvent(System.Int32,SharpDX.MediaFoundation.MediaEvent@)\"/></strong> on the event generator.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>If you are implementing an object that generates events, call the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateMediaEvent(System.Int32,System.Guid,SharpDX.Result,System.Nullable{SharpDX.Win32.Variant},SharpDX.MediaFoundation.MediaEvent@)\"/></strong> function to create a new event object.</p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaEvent::GetValue']/*\"/>\t\n            <msdn-id>ms702249</msdn-id>\t\n            <unmanaged>GetValue</unmanaged>\t\n            <unmanaged-short>GetValue</unmanaged-short>\t\n            <unmanaged>HRESULT IMFMediaEvent::GetValue([Out] PROPVARIANT* pvValue)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.MediaEventGenerator\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Retrieves events from any Media Foundation object that generates events. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>An object that supports this interface maintains a queue of events. The client of the object can retrieve the events either synchronously or asynchronously. The synchronous method is <strong>GetEvent</strong>. The asynchronous methods are <strong>BeginGetEvent</strong> and <strong>EndGetEvent</strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaEventGenerator']/*\"/>\t\n            <msdn-id>ms701755</msdn-id>\t\n            <unmanaged>IMFMediaEventGenerator</unmanaged>\t\n            <unmanaged-short>IMFMediaEventGenerator</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaEventGenerator.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.MediaEventGenerator\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaEventGenerator.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.MediaEventGenerator\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.MediaEventGenerator\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaEventGenerator.GetEvent(System.Int32,SharpDX.MediaFoundation.MediaEvent@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves the next event in the queue. This method is synchronous.</p>\t\n            </summary>\t\n            <param name=\"dwFlags\"><dd> <p>Specifies one of the following values.</p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td><dl> <dt><strong>0</strong></dt> </dl> </td><td> <p>The method blocks until the event generator queues an event.</p> </td></tr> <tr><td><dl> <dt><strong>MF_EVENT_FLAG_NO_WAIT</strong></dt> </dl> </td><td> <p>The method returns immediately.</p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <param name=\"eventOut\"><dd> <p>Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaEvent\"/></strong> interface. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong>E_INVALIDARG</strong></dt> </dl> </td><td> <p><c>null</c> reference argument.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.MultipleSubScribers\"/></strong></dt> </dl> </td><td> <p>There is a pending request.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.NoEventsAvailable\"/></strong></dt> </dl> </td><td> <p>There are no events in the queue.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/></strong></dt> </dl> </td><td> <p>The object was shut down.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>This method executes synchronously.</p><p>If the queue already contains an event, the method returns <see cref=\"F:SharpDX.Result.Ok\"/> immediately. If the queue does not contain an event, the behavior depends on the value of <em>dwFlags</em>:</p><ul> <li> <p>If <em>dwFlags</em> is 0, the method blocks indefinitely until a new event is queued, or until the event generator is shut down.</p> </li> <li> <p>If <em>dwFlags</em> is MF_EVENT_FLAG_NO_WAIT, the method fails immediately with the return code <see cref=\"F:SharpDX.MediaFoundation.ResultCode.NoEventsAvailable\"/>.</p> </li> </ul><p>This method returns <see cref=\"F:SharpDX.MediaFoundation.ResultCode.MultipleSubScribers\"/> if you previously called <strong><see cref=\"M:SharpDX.MediaFoundation.MediaEventGenerator.BeginGetEvent(SharpDX.MediaFoundation.AsyncCallback,SharpDX.ComObject)\"/></strong> and have not yet called <strong><see cref=\"M:SharpDX.MediaFoundation.MediaEventGenerator.EndGetEvent(SharpDX.MediaFoundation.AsyncResult,SharpDX.MediaFoundation.MediaEvent@)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaEventGenerator::GetEvent']/*\"/>\t\n            <msdn-id>ms704754</msdn-id>\t\n            <unmanaged>HRESULT IMFMediaEventGenerator::GetEvent([In] unsigned int dwFlags,[Out] IMFMediaEvent** ppEvent)</unmanaged>\t\n            <unmanaged-short>IMFMediaEventGenerator::GetEvent</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaEventGenerator.BeginGetEvent(SharpDX.MediaFoundation.AsyncCallback,SharpDX.ComObject)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Begins an asynchronous request for the next event in the queue.</p>\t\n            </summary>\t\n            <param name=\"callbackRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.AsyncCallback\"/></strong> interface of a callback object. The client must implement this interface.</p> </dd></param>\t\n            <param name=\"unkStateRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interface of a state object, defined by the caller. This parameter can be <strong><c>null</c></strong>. You can use this object to hold state information. The object is returned to the caller when the callback is invoked.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong>E_INVALIDARG</strong></dt> </dl> </td><td> <p><strong><c>null</c></strong> reference argument.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.MultipleBegin\"/></strong></dt> </dl> </td><td> <p>There is a pending request with the same callback reference and a different state object.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.MultipleSubScribers\"/></strong></dt> </dl> </td><td> <p>There is a pending request with a different callback reference.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/></strong></dt> </dl> </td><td> <p>The object was shut down.</p> </td></tr> <tr><td> <dl> <dt><strong>MF_S_MULTIPLE_BEGIN</strong></dt> </dl> </td><td> <p>There is a pending request with the same callback reference and state object.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>When a new event is available, the event generator calls the <strong><see cref=\"M:SharpDX.MediaFoundation.AsyncCallback.Invoke(SharpDX.MediaFoundation.AsyncResult)\"/></strong> method. The <strong>Invoke</strong> method should call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaEventGenerator.EndGetEvent(SharpDX.MediaFoundation.AsyncResult,SharpDX.MediaFoundation.MediaEvent@)\"/></strong> to get a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaEvent\"/></strong> interface, and use that interface to examine the event.</p><p>Do not call <strong>BeginGetEvent</strong> a second time before calling <strong>EndGetEvent</strong>. While the first call is still pending, additional calls to the same object will fail. Also, the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaEventGenerator.GetEvent(System.Int32,SharpDX.MediaFoundation.MediaEvent@)\"/></strong> method fails if an asynchronous request is still pending.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaEventGenerator::BeginGetEvent']/*\"/>\t\n            <msdn-id>ms701637</msdn-id>\t\n            <unmanaged>HRESULT IMFMediaEventGenerator::BeginGetEvent([In] IMFAsyncCallback* pCallback,[In] IUnknown* punkState)</unmanaged>\t\n            <unmanaged-short>IMFMediaEventGenerator::BeginGetEvent</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaEventGenerator.EndGetEvent(SharpDX.MediaFoundation.AsyncResult,SharpDX.MediaFoundation.MediaEvent@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Completes an asynchronous request for the next event in the queue.</p>\t\n            </summary>\t\n            <param name=\"resultRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.AsyncResult\"/></strong> interface. Pass in the same reference that your callback object received in the <strong>Invoke</strong> method.</p> </dd></param>\t\n            <param name=\"eventOut\"><dd> <p>Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaEvent\"/></strong> interface. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/></strong></dt> </dl> </td><td> <p>The object was shut down.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>Call this method from inside your application's <strong><see cref=\"M:SharpDX.MediaFoundation.AsyncCallback.Invoke(SharpDX.MediaFoundation.AsyncResult)\"/></strong> method. For example code, see <strong><see cref=\"M:SharpDX.MediaFoundation.MediaEventGenerator.BeginGetEvent(SharpDX.MediaFoundation.AsyncCallback,SharpDX.ComObject)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaEventGenerator::EndGetEvent']/*\"/>\t\n            <msdn-id>ms698866</msdn-id>\t\n            <unmanaged>HRESULT IMFMediaEventGenerator::EndGetEvent([In] IMFAsyncResult* pResult,[Out] IMFMediaEvent** ppEvent)</unmanaged>\t\n            <unmanaged-short>IMFMediaEventGenerator::EndGetEvent</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaEventGenerator.QueueEvent(System.Int32,System.Guid,SharpDX.Result,System.Nullable{SharpDX.Win32.Variant})\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Puts a new event in the object's queue.</p>\t\n            </summary>\t\n            <param name=\"met\"><dd> <p>Specifies the event type. The event type is returned by the event's <strong><see cref=\"M:SharpDX.MediaFoundation.MediaEvent.GetTypeInfo(System.Int32@)\"/></strong> method. For a list of event types, see Media Foundation Events.</p> </dd></param>\t\n            <param name=\"guidExtendedType\"><dd> <p>The extended type. If the event does not have an extended type, use the value GUID_NULL. The extended type is returned by the event's <strong><see cref=\"M:SharpDX.MediaFoundation.MediaEvent.GetExtendedType(System.Guid@)\"/></strong> method.</p> </dd></param>\t\n            <param name=\"hrStatus\"><dd> <p>A success or failure code indicating the status of the event. This value is returned by the event's <strong><see cref=\"M:SharpDX.MediaFoundation.MediaEvent.GetStatus(SharpDX.Result@)\"/></strong> method.</p> </dd></param>\t\n            <param name=\"vValueRef\"><dd> <p>Pointer to a <strong><see cref=\"T:SharpDX.Win32.Variant\"/></strong> that contains the event value. This parameter can be <strong><c>null</c></strong>. This value is returned by the event's <strong><see cref=\"M:SharpDX.MediaFoundation.MediaEvent.GetValue(SharpDX.Win32.Variant@)\"/></strong> method.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/></strong></dt> </dl> </td><td> <p>The object was shut down.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaEventGenerator::QueueEvent']/*\"/>\t\n            <msdn-id>ms696255</msdn-id>\t\n            <unmanaged>HRESULT IMFMediaEventGenerator::QueueEvent([In] unsigned int met,[In] const GUID&amp; guidExtendedType,[In] HRESULT hrStatus,[In, Optional] const PROPVARIANT* pvValue)</unmanaged>\t\n            <unmanaged-short>IMFMediaEventGenerator::QueueEvent</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.MediaEventQueue\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Provides an event queue for applications that need to implement the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaEventGenerator\"/></strong> interface.</p><p>This interface is exposed by a helper object that implements an event queue. If you are writing a component that implements the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaEventGenerator\"/></strong> interface, you can use this object in your implementation. The event queue object is thread safe and provides methods to queue events and to pull them from the queue either synchronously or asynchronously. To create the event queue object, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateEventQueue(SharpDX.MediaFoundation.MediaEventQueue@)\"/></strong>.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaEventQueue']/*\"/>\t\n            <msdn-id>ms704617</msdn-id>\t\n            <unmanaged>IMFMediaEventQueue</unmanaged>\t\n            <unmanaged-short>IMFMediaEventQueue</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaEventQueue.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.MediaEventQueue\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaEventQueue.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.MediaEventQueue\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.MediaEventQueue\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaEventQueue.GetEvent(System.Int32,SharpDX.MediaFoundation.MediaEvent@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves the next event in the queue. This method is synchronous.</p><p>Call this method inside your implementation of <strong><see cref=\"M:SharpDX.MediaFoundation.MediaEventGenerator.GetEvent(System.Int32,SharpDX.MediaFoundation.MediaEvent@)\"/></strong>. Pass the parameters from that method directly to this method.</p>\t\n            </summary>\t\n            <param name=\"dwFlags\">No documentation.</param>\t\n            <param name=\"eventOut\">No documentation.</param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/></strong></dt> </dl> </td><td> <p>The <strong>Shutdown</strong> method was called.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaEventQueue::GetEvent']/*\"/>\t\n            <msdn-id>ms702270</msdn-id>\t\n            <unmanaged>HRESULT IMFMediaEventQueue::GetEvent([In] unsigned int dwFlags,[Out] IMFMediaEvent** ppEvent)</unmanaged>\t\n            <unmanaged-short>IMFMediaEventQueue::GetEvent</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaEventQueue.BeginGetEvent(SharpDX.MediaFoundation.AsyncCallback,SharpDX.ComObject)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Begins an asynchronous request for the next event in the queue.</p><p>Call this method inside your implementation of <strong><see cref=\"M:SharpDX.MediaFoundation.MediaEventGenerator.BeginGetEvent(SharpDX.MediaFoundation.AsyncCallback,SharpDX.ComObject)\"/></strong>. Pass the parameters from that method directly to this method.</p>\t\n            </summary>\t\n            <param name=\"callbackRef\">No documentation.</param>\t\n            <param name=\"unkStateRef\">No documentation.</param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/></strong></dt> </dl> </td><td> <p>The <strong>Shutdown</strong> method was called.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaEventQueue::BeginGetEvent']/*\"/>\t\n            <msdn-id>ms696998</msdn-id>\t\n            <unmanaged>HRESULT IMFMediaEventQueue::BeginGetEvent([In] IMFAsyncCallback* pCallback,[In] IUnknown* punkState)</unmanaged>\t\n            <unmanaged-short>IMFMediaEventQueue::BeginGetEvent</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaEventQueue.EndGetEvent(SharpDX.MediaFoundation.AsyncResult,SharpDX.MediaFoundation.MediaEvent@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Completes an asynchronous request for the next event in the queue.</p><p>Call this method inside your implementation of <strong><see cref=\"M:SharpDX.MediaFoundation.MediaEventGenerator.EndGetEvent(SharpDX.MediaFoundation.AsyncResult,SharpDX.MediaFoundation.MediaEvent@)\"/></strong>. Pass the parameters from that method directly to this method.</p>\t\n            </summary>\t\n            <param name=\"resultRef\">No documentation.</param>\t\n            <param name=\"eventOut\">No documentation.</param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/></strong></dt> </dl> </td><td> <p>The <strong>Shutdown</strong> method was called.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaEventQueue::EndGetEvent']/*\"/>\t\n            <msdn-id>ms702986</msdn-id>\t\n            <unmanaged>HRESULT IMFMediaEventQueue::EndGetEvent([In] IMFAsyncResult* pResult,[Out] IMFMediaEvent** ppEvent)</unmanaged>\t\n            <unmanaged-short>IMFMediaEventQueue::EndGetEvent</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaEventQueue.QueueEvent(SharpDX.MediaFoundation.MediaEvent)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Puts an event in the queue.</p>\t\n            </summary>\t\n            <param name=\"eventRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaEvent\"/></strong> interface of the event to be put in the queue.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/></strong></dt> </dl> </td><td> <p>The <strong>Shutdown</strong> method was called.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>Call this method when your component needs to raise an event that contains attributes. To create the event object, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateMediaEvent(System.Int32,System.Guid,SharpDX.Result,System.Nullable{SharpDX.Win32.Variant},SharpDX.MediaFoundation.MediaEvent@)\"/></strong>. Add attributes to the event by using methods from the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaAttributes\"/></strong> interface. (The <strong><see cref=\"T:SharpDX.MediaFoundation.MediaEvent\"/></strong> interface inherits <strong><see cref=\"T:SharpDX.MediaFoundation.MediaAttributes\"/></strong>.)</p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaEventQueue::QueueEvent']/*\"/>\t\n            <msdn-id>ms704792</msdn-id>\t\n            <unmanaged>HRESULT IMFMediaEventQueue::QueueEvent([In] IMFMediaEvent* pEvent)</unmanaged>\t\n            <unmanaged-short>IMFMediaEventQueue::QueueEvent</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaEventQueue.QueueEventParamVar(System.Int32,System.Guid,SharpDX.Result,SharpDX.Win32.Variant)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Creates an event, sets a <strong><see cref=\"T:SharpDX.Win32.Variant\"/></strong> as the event data, and puts the event in the queue.</p><p>Call this method inside your implementation of <strong><see cref=\"M:SharpDX.MediaFoundation.MediaEventGenerator.QueueEvent(System.Int32,System.Guid,SharpDX.Result,System.Nullable{SharpDX.Win32.Variant})\"/></strong>. Pass the parameters from that method directly to this method.</p><p>You can also call this method when your component needs to raise an event that does not contain attributes. If the event data is an <strong><see cref=\"T:SharpDX.ComObject\"/></strong> reference, you can use <strong><see cref=\"M:SharpDX.MediaFoundation.MediaEventQueue.QueueEventParamUnk(System.Int32,System.Guid,SharpDX.Result,SharpDX.ComObject)\"/></strong>. If the event contains attributes, use <strong><see cref=\"M:SharpDX.MediaFoundation.MediaEventQueue.QueueEvent(SharpDX.MediaFoundation.MediaEvent)\"/></strong> instead.</p>\t\n            </summary>\t\n            <param name=\"met\">No documentation.</param>\t\n            <param name=\"guidExtendedType\">No documentation.</param>\t\n            <param name=\"hrStatus\">No documentation.</param>\t\n            <param name=\"vValueRef\">No documentation.</param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/></strong></dt> </dl> </td><td> <p>The <strong>Shutdown</strong> method was called.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaEventQueue::QueueEventParamVar']/*\"/>\t\n            <msdn-id>ms704641</msdn-id>\t\n            <unmanaged>HRESULT IMFMediaEventQueue::QueueEventParamVar([In] unsigned int met,[In] const GUID&amp; guidExtendedType,[In] HRESULT hrStatus,[In] const PROPVARIANT* pvValue)</unmanaged>\t\n            <unmanaged-short>IMFMediaEventQueue::QueueEventParamVar</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaEventQueue.QueueEventParamUnk(System.Int32,System.Guid,SharpDX.Result,SharpDX.ComObject)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Creates an event, sets an <strong><see cref=\"T:SharpDX.ComObject\"/></strong> reference as the event data, and puts the event in the queue.</p>\t\n            </summary>\t\n            <param name=\"met\"><dd> <p>Specifies the event type of the event to be added to the queue. The event type is returned by the event's <strong><see cref=\"M:SharpDX.MediaFoundation.MediaEvent.GetTypeInfo(System.Int32@)\"/></strong> method. For a list of event types, see Media Foundation Events.</p> </dd></param>\t\n            <param name=\"guidExtendedType\"><dd> <p>The extended type of the event. If the event does not have an extended type, use the value GUID_NULL. The extended type is returned by the event's <strong><see cref=\"M:SharpDX.MediaFoundation.MediaEvent.GetExtendedType(System.Guid@)\"/></strong> method.</p> </dd></param>\t\n            <param name=\"hrStatus\"><dd> <p>A success or failure code indicating the status of the event. This value is returned by the event's <strong><see cref=\"M:SharpDX.MediaFoundation.MediaEvent.GetStatus(SharpDX.Result@)\"/></strong> method.</p> </dd></param>\t\n            <param name=\"unkRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interface. The method sets this reference as the event value. The reference is returned by the event's <strong><see cref=\"M:SharpDX.MediaFoundation.MediaEvent.GetValue(SharpDX.Win32.Variant@)\"/></strong> method.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/></strong></dt> </dl> </td><td> <p>The <strong>Shutdown</strong> method was called.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>Call this method when your component needs to raise an event that contains an <strong><see cref=\"T:SharpDX.ComObject\"/></strong> reference value and no attributes. If the event contains attributes, use <strong><see cref=\"M:SharpDX.MediaFoundation.MediaEventQueue.QueueEvent(SharpDX.MediaFoundation.MediaEvent)\"/></strong> instead.</p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaEventQueue::QueueEventParamUnk']/*\"/>\t\n            <msdn-id>ms704686</msdn-id>\t\n            <unmanaged>HRESULT IMFMediaEventQueue::QueueEventParamUnk([In] unsigned int met,[In] const GUID&amp; guidExtendedType,[In] HRESULT hrStatus,[In] IUnknown* pUnk)</unmanaged>\t\n            <unmanaged-short>IMFMediaEventQueue::QueueEventParamUnk</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaEventQueue.Shutdown\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Shuts down the event queue.</p>\t\n            </summary>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>Call this method when your component shuts down. After this method is called, all <strong><see cref=\"T:SharpDX.MediaFoundation.MediaEventQueue\"/></strong> methods return <strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/></strong>.</p><p>This method removes all of the events from the queue.</p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaEventQueue::Shutdown']/*\"/>\t\n            <msdn-id>ms698923</msdn-id>\t\n            <unmanaged>HRESULT IMFMediaEventQueue::Shutdown()</unmanaged>\t\n            <unmanaged-short>IMFMediaEventQueue::Shutdown</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.MediaSession\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Provides playback controls for protected and unprotected content. The Media Session and the protected media path (PMP) session objects expose this interface. This interface is the primary interface that applications use to control the Media Foundation pipeline.</p><p>To obtain a reference to this interface, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateMediaSession(SharpDX.MediaFoundation.MediaAttributes,SharpDX.MediaFoundation.MediaSession@)\"/></strong> or <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreatePMPMediaSession(System.Int32,SharpDX.MediaFoundation.MediaAttributes,SharpDX.MediaFoundation.MediaSession@,SharpDX.MediaFoundation.Activate@)\"/></strong>.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaSession']/*\"/>\t\n            <msdn-id>ms705662</msdn-id>\t\n            <unmanaged>IMFMediaSession</unmanaged>\t\n            <unmanaged-short>IMFMediaSession</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaSession.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.MediaSession\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaSession.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.MediaSession\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.MediaSession\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaSession.SetTopology(System.Int32,SharpDX.MediaFoundation.Topology)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Sets a topology on the Media Session. </p>\t\n            </summary>\t\n            <param name=\"dwSetTopologyFlags\"><dd> <p> Bitwise <strong>OR</strong> of zero or more flags from the <strong><see cref=\"T:SharpDX.MediaFoundation.SessionSetTopologyFlags\"/></strong> enumeration. </p> </dd></param>\t\n            <param name=\"topologyRef\"><dd> <p> Pointer to the topology object's <strong><see cref=\"T:SharpDX.MediaFoundation.Topology\"/></strong> interface. </p> </dd></param>\t\n            <returns><p> The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table. </p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidRequest\"/></strong></dt> </dl> </td><td> <p> The operation cannot be performed in the Media Session's current state. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/></strong></dt> </dl> </td><td> <p> The Media Session has been shut down. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.TopoInvalidTimeAttributes\"/></strong></dt> </dl> </td><td> <p>The topology has invalid values for one or more of the following attributes:</p> <ul> <li> <strong><see cref=\"F:SharpDX.MediaFoundation.TopologyNodeAttributeKeys.Mediastart\"/></strong> </li> <li> <strong><see cref=\"F:SharpDX.MediaFoundation.TopologyNodeAttributeKeys.Mediastop\"/></strong> </li> <li> <strong><see cref=\"F:SharpDX.MediaFoundation.TopologyAttributeKeys.ProjectStart\"/></strong> </li> <li> <strong><see cref=\"F:SharpDX.MediaFoundation.TopologyAttributeKeys.ProjectStop\"/></strong> </li> </ul> </td></tr> <tr><td> <dl> <dt><strong>NS_E_DRM_DEBUGGING_NOT_ALLOWED</strong></dt> </dl> </td><td> <p> Protected content cannot be played while debugging. </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> If <em>pTopology</em> is a full topology, set the <strong><see cref=\"F:SharpDX.MediaFoundation.SessionSetTopologyFlags.Noresolution\"/></strong> flag in the <em>dwSetTopologyFlags</em> parameter. Otherwise, the topology is assumed to be a partial topology. The Media Session uses the topology loader to resolve a partial topology into a full topology.</p><p>If the Media Session is currently paused or stopped, the <strong>SetTopology</strong> method does not take effect until the next call to <strong><see cref=\"M:SharpDX.MediaFoundation.MediaSession.Start(System.Nullable{System.Guid},System.Nullable{SharpDX.Win32.Variant})\"/></strong>.</p><p>If the Media Session is currently running, or on the next call to <strong>Start</strong>, the <strong>SetTopology</strong> method does the following:</p><ul> <li>If the <strong><see cref=\"F:SharpDX.MediaFoundation.SessionSetTopologyFlags.Immediate\"/></strong> flag is set in <em>dwSetTopologyFlags</em>, the Media Session ends the current presentation immediately, clears all pending topologies, and uses <em>pTopology</em> to start a new presentation.</li> <li>Otherwise, the Media Session queues <em>pTopology</em> and starts the new presentation when the current presentation has completed. If there is no current presentation, the new presentation starts immediately.</li> <li>Starting in Windows?7, you can also specify the <strong><see cref=\"F:SharpDX.MediaFoundation.SessionSetTopologyFlags.ClearCurrent\"/></strong> flag to clear the current topology but leave any other pending topologies on the queue.</li> </ul><p> This method is asynchronous. If the method returns <see cref=\"F:SharpDX.Result.Ok\"/>, the Media Session sends an <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.SessionTopologySet\"/> event when the operation completes. If the Media Session is currently paused to stopped, the Media Session does not send the <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.SessionTopologySet\"/> event until the next call to <strong><see cref=\"M:SharpDX.MediaFoundation.MediaSession.Start(System.Nullable{System.Guid},System.Nullable{SharpDX.Win32.Variant})\"/></strong> </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaSession::SetTopology']/*\"/>\t\n            <msdn-id>ms704785</msdn-id>\t\n            <unmanaged>HRESULT IMFMediaSession::SetTopology([In] unsigned int dwSetTopologyFlags,[In, Optional] IMFTopology* pTopology)</unmanaged>\t\n            <unmanaged-short>IMFMediaSession::SetTopology</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaSession.ClearTopologies\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Clears all of the presentations that are queued for playback in the Media Session.</p>\t\n            </summary>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidRequest\"/></strong></dt> </dl> </td><td> <p> The operation cannot be performed in the Media Session's current state. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/></strong></dt> </dl> </td><td> <p> The Media Session has been shut down. </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>This method is asynchronous. When the operation completes, the Media Session sends an <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.SessionTopologiesCleared\"/> event.</p><p>This method does not clear the current topology; it only removes topologies that are placed in the queue, waiting for playback. To remove the current topology, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaSession.SetTopology(System.Int32,SharpDX.MediaFoundation.Topology)\"/></strong> with the <strong><see cref=\"F:SharpDX.MediaFoundation.SessionSetTopologyFlags.ClearCurrent\"/></strong> flag.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaSession::ClearTopologies']/*\"/>\t\n            <msdn-id>ms705648</msdn-id>\t\n            <unmanaged>HRESULT IMFMediaSession::ClearTopologies()</unmanaged>\t\n            <unmanaged-short>IMFMediaSession::ClearTopologies</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaSession.Start(System.Nullable{System.Guid},System.Nullable{SharpDX.Win32.Variant})\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Starts the Media Session. </p>\t\n            </summary>\t\n            <param name=\"guidTimeFormatRef\"><dd> <p>Pointer to a <see cref=\"T:System.Guid\"/> that specifies the time format for the <em>pvarStartPosition</em> parameter. This parameter can be <strong><c>null</c></strong>. The value <strong><c>null</c></strong> is equivalent to passing in <strong>GUID_NULL</strong>.</p> <p>The following time format GUIDs are defined:</p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td><dl> <dt><strong>GUID_NULL</strong></dt> </dl> </td><td> <p>Presentation time. The <em>pvarStartPosition</em> parameter must have one of the following <strong><see cref=\"T:SharpDX.Win32.Variant\"/></strong> types.</p> <ul> <li><strong>VT_I8</strong>: The <em>pvarStartPosition</em> parameter contains the starting position in 100-nanosecond units, relative to the start of the presentation.</li> <li><strong>VT_EMPTY</strong>: Playback starts from the current position.</li> </ul> <p>All media sources support this time format.</p> </td></tr> <tr><td><dl> <dt><strong>MF_TIME_FORMAT_SEGMENT_OFFSET</strong></dt> </dl> </td><td> <p>Segment offset. This time format is supported by the Sequencer Source. The starting time is an offset within a segment.</p> <p>Call the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateSequencerSegmentOffset(System.Int32,System.Int64,SharpDX.Win32.Variant@)\"/></strong> function to create the <strong><see cref=\"T:SharpDX.Win32.Variant\"/></strong> value for the <em>pvarStartPosition</em> parameter.</p> </td></tr> <tr><td><dl> <dt><strong>MF_TIME_FORMAT_ENTRY_RELATIVE</strong></dt> </dl> </td><td> <p><strong>Note</strong>??Requires Windows?7 or later.</p> <p>Skip to a playlist entry. The <em>pvarStartPosition</em> parameter specifies the index of the playlist entry, relative to the current entry. For example, the value 2 skips forward two entries. To skip backward, pass a negative value. The <strong><see cref=\"T:SharpDX.Win32.Variant\"/></strong> type is <strong>VT_I4</strong>.</p> <p>If a media source supports this time format, the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaSource.GetCharacteristics(System.Int32@)\"/></strong> method returns one or both of the following flags:</p> <ul> <li><strong><see cref=\"F:SharpDX.MediaFoundation.MediaSourceCharacteristics.CanSkipforward\"/></strong></li> <li><strong><see cref=\"F:SharpDX.MediaFoundation.MediaSourceCharacteristics.CanSkipbackward\"/></strong></li> </ul> </td></tr> </table> <p>?</p> </dd></param>\t\n            <param name=\"varStartPositionRef\"><dd> <p> Pointer to a <strong><see cref=\"T:SharpDX.Win32.Variant\"/></strong> that specifies the starting position for playback. The meaning and data type of this parameter are indicated by the <em>pguidTimeFormat</em> parameter. </p> </dd></param>\t\n            <returns><p> The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table. </p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidRequest\"/></strong></dt> </dl> </td><td> <p> The operation cannot be performed in the Media Session's current state. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/></strong></dt> </dl> </td><td> <p> The Media Session has been shut down. </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>When this method is called, the Media Session starts the presentation clock and begins to process media samples.</p><p>This method is asynchronous. When the method completes, the Media Session sends an <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.SessionStarted\"/> event.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaSession::Start']/*\"/>\t\n            <msdn-id>ms694908</msdn-id>\t\n            <unmanaged>HRESULT IMFMediaSession::Start([In, Optional] const GUID* pguidTimeFormat,[In, Optional] const PROPVARIANT* pvarStartPosition)</unmanaged>\t\n            <unmanaged-short>IMFMediaSession::Start</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaSession.Pause\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Provides playback controls for protected and unprotected content. The Media Session and the protected media path (PMP) session objects expose this interface. This interface is the primary interface that applications use to control the Media Foundation pipeline.</p><p>To obtain a reference to this interface, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateMediaSession(SharpDX.MediaFoundation.MediaAttributes,SharpDX.MediaFoundation.MediaSession@)\"/></strong> or <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreatePMPMediaSession(System.Int32,SharpDX.MediaFoundation.MediaAttributes,SharpDX.MediaFoundation.MediaSession@,SharpDX.MediaFoundation.Activate@)\"/></strong>.</p>\t\n            </summary>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaSession::Pause']/*\"/>\t\n            <msdn-id>ms705662</msdn-id>\t\n            <unmanaged>HRESULT IMFMediaSession::Pause()</unmanaged>\t\n            <unmanaged-short>IMFMediaSession::Pause</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaSession.Stop\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Provides playback controls for protected and unprotected content. The Media Session and the protected media path (PMP) session objects expose this interface. This interface is the primary interface that applications use to control the Media Foundation pipeline.</p><p>To obtain a reference to this interface, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateMediaSession(SharpDX.MediaFoundation.MediaAttributes,SharpDX.MediaFoundation.MediaSession@)\"/></strong> or <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreatePMPMediaSession(System.Int32,SharpDX.MediaFoundation.MediaAttributes,SharpDX.MediaFoundation.MediaSession@,SharpDX.MediaFoundation.Activate@)\"/></strong>.</p>\t\n            </summary>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaSession::Stop']/*\"/>\t\n            <msdn-id>ms705662</msdn-id>\t\n            <unmanaged>HRESULT IMFMediaSession::Stop()</unmanaged>\t\n            <unmanaged-short>IMFMediaSession::Stop</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaSession.Close\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Closes the Media Session and releases all of the resources it is using.</p>\t\n            </summary>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/></strong></dt> </dl> </td><td> <p>The Media Session has been shut down.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>This method is asynchronous. When the operation completes, the Media Session sends an <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.SessionClosed\"/> event.</p><p>After the <strong>Close</strong> method is called, the only valid methods on the Media Session are the following:</p><ul> <li> <p> <strong><see cref=\"M:SharpDX.MediaFoundation.MediaSession.GetClock(SharpDX.MediaFoundation.Clock@)\"/></strong> </p> </li> <li> <p> <strong><see cref=\"M:SharpDX.MediaFoundation.MediaSession.GetFullTopology(System.Int32,System.Int64,SharpDX.MediaFoundation.Topology@)\"/></strong> </p> </li> <li> <p> <strong><see cref=\"M:SharpDX.MediaFoundation.MediaSession.GetSessionCapabilities(System.Int32@)\"/></strong> </p> </li> <li> <p> <strong><see cref=\"M:SharpDX.MediaFoundation.MediaSession.Shutdown\"/></strong> </p> </li> </ul><p>All other methods return <see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidRequest\"/>, or else queue an event with that error code.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaSession::Close']/*\"/>\t\n            <msdn-id>ms698928</msdn-id>\t\n            <unmanaged>HRESULT IMFMediaSession::Close()</unmanaged>\t\n            <unmanaged-short>IMFMediaSession::Close</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaSession.Shutdown\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Shuts down the Media Session and releases all the resources used by the Media Session.</p>\t\n            </summary>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>Call this method when you are done using the Media Session, before the final call to <strong>IUnknown::Release</strong>. Otherwise, your application will leak memory.</p><p>After this method is called, other <strong><see cref=\"T:SharpDX.MediaFoundation.MediaSession\"/></strong> methods return <see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaSession::Shutdown']/*\"/>\t\n            <msdn-id>ms697318</msdn-id>\t\n            <unmanaged>HRESULT IMFMediaSession::Shutdown()</unmanaged>\t\n            <unmanaged-short>IMFMediaSession::Shutdown</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaSession.GetClock(SharpDX.MediaFoundation.Clock@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the Media Session's presentation clock.</p>\t\n            </summary>\t\n            <param name=\"clockOut\"><dd> <p>Receives a reference to the presentation clock's <strong><see cref=\"T:SharpDX.MediaFoundation.Clock\"/></strong> interface. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>The method returns an <see cref=\"T:SharpDX.Result\"/>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong>E_UNEXPECTED</strong></dt> </dl> </td><td> <p>The Media Session does not have a presentation clock.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/></strong></dt> </dl> </td><td> <p>The Media Session has been shut down.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>The application can query the returned <strong><see cref=\"T:SharpDX.MediaFoundation.Clock\"/></strong> reference for the <strong><see cref=\"T:SharpDX.MediaFoundation.PresentationClock\"/></strong> interface. However, the application should not use this interface to control the state of the presentation clock. Instead, the application should always call the transport control methods on the Media Session's <strong><see cref=\"T:SharpDX.MediaFoundation.MediaSession\"/></strong> interface, such as <strong>Start</strong>, <strong>Stop</strong>, and <strong>Pause</strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaSession::GetClock']/*\"/>\t\n            <msdn-id>bb970342</msdn-id>\t\n            <unmanaged>HRESULT IMFMediaSession::GetClock([Out] IMFClock** ppClock)</unmanaged>\t\n            <unmanaged-short>IMFMediaSession::GetClock</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaSession.GetSessionCapabilities(System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the capabilities of the Media Session, based on the current presentation.</p>\t\n            </summary>\t\n            <param name=\"dwCapsRef\"><dd> <p>Receives a bitwise <strong>OR</strong> of zero or more of the following flags.</p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td><dl> <dt><strong>MFSESSIONCAP_PAUSE</strong></dt> </dl> </td><td> <p>The Media Session can be paused.</p> </td></tr> <tr><td><dl> <dt><strong>MFSESSIONCAP_RATE_FORWARD</strong></dt> </dl> </td><td> <p>The Media Session supports forward playback at rates faster than 1.0.</p> </td></tr> <tr><td><dl> <dt><strong>MFSESSIONCAP_RATE_REVERSE</strong></dt> </dl> </td><td> <p>The Media Session supports reverse playback.</p> </td></tr> <tr><td><dl> <dt><strong>MFSESSIONCAP_SEEK</strong></dt> </dl> </td><td> <p>The Media Session can be seeked.</p> </td></tr> <tr><td><dl> <dt><strong>MFSESSIONCAP_START</strong></dt> </dl> </td><td> <p>The Media Session can be started.</p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong>E_POINTER</strong></dt> </dl> </td><td> <p><c>null</c> reference argument.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/></strong></dt> </dl> </td><td> <p>The Media Session has been shut down.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaSession::GetSessionCapabilities']/*\"/>\t\n            <msdn-id>ms696229</msdn-id>\t\n            <unmanaged>HRESULT IMFMediaSession::GetSessionCapabilities([Out] unsigned int* pdwCaps)</unmanaged>\t\n            <unmanaged-short>IMFMediaSession::GetSessionCapabilities</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaSession.GetFullTopology(System.Int32,System.Int64,SharpDX.MediaFoundation.Topology@)\">\n            <summary>\t\n            <p>Retrieves a pending or current topology from the media session.</p>  <see cref=\"T:SharpDX.Result\"/> GetFullTopology(  DWORD dwGetFullTopologyFlags, TOPOID TopoId,  <see cref=\"T:SharpDX.MediaFoundation.Topology\"/>** ppFullTopo \t\n            );\t\n            <p></p>Parameters <p> dwGetFullTopologyFlags </p> <p>[in] Bitwise OR of zero or more flags from the <see cref=\"T:SharpDX.MediaFoundation.SessionGetFullTopologyFlags\"/> Enumeration. </p> <p> TopoId </p> <p>[in] Identifier of the topology to retrieve. This parameter is ignored if the <see cref=\"F:SharpDX.MediaFoundation.SessionGetFullTopologyFlags.Current\"/> flag is set in the Flags parameter. To get the topology identifier from a topology object, call <see cref=\"M:SharpDX.MediaFoundation.Topology.GetTopologyID(System.Int64@)\"/>.</p> <p> ppFullTopo </p> <p>[out]  Receives a reference to the <see cref=\"T:SharpDX.MediaFoundation.Topology\"/> Interface of the topology. The caller must release the interface.</p>  <p>The method returns an <see cref=\"T:SharpDX.Result\"/>. Possible values include, but are not limited to, those in the following table.</p> <table><tr> <th> Return code  </th> <th> Description  </th> </tr><tr> <td> <p><see cref=\"F:SharpDX.Result.Ok\"/></p> </td> <td> <p>The method succeeded.</p> </td> </tr><tr> <td> <p><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/></p> </td> <td> <p>The media session has been shut down.</p> </td> </tr></table>  <p>If the <see cref=\"F:SharpDX.MediaFoundation.SessionGetFullTopologyFlags.Current\"/> flag is specified in the Flags parameter, the method returns the topology for the current presentation. Otherwise, the method searches all of the queued topologies for one that matches the identifier given in the TopoId parameter.</p> <p>This method can be used to retrieve the topology for the current presentation or any pending presentations. It cannot be used to retrieve a topology that has already ended.</p> <p>The topology returned in ppFullTopo is a full topology, not a partial topology.</p>  <p> Client: Requires Windows Vista.</p> <p> Header: Include mfidl.h.</p> <p> Library: Use mfuuid.lib.</p> ReferenceIMFMediaSession Interface\t\n            </summary>\t\n            <param name=\"dwGetFullTopologyFlags\">No documentation.</param>\t\n            <param name=\"topoId\">No documentation.</param>\t\n            <param name=\"fullTopologyOut\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaSession::GetFullTopology']/*\"/>\t\n            <msdn-id>ms697481</msdn-id>\t\n            <unmanaged>HRESULT IMFMediaSession::GetFullTopology([In] unsigned int dwGetFullTopologyFlags,[In] unsigned longlong TopoId,[Out] IMFTopology** ppFullTopology)</unmanaged>\t\n            <unmanaged-short>IMFMediaSession::GetFullTopology</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.MediaSession.Clock\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the Media Session's presentation clock.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The application can query the returned <strong><see cref=\"T:SharpDX.MediaFoundation.Clock\"/></strong> reference for the <strong><see cref=\"T:SharpDX.MediaFoundation.PresentationClock\"/></strong> interface. However, the application should not use this interface to control the state of the presentation clock. Instead, the application should always call the transport control methods on the Media Session's <strong><see cref=\"T:SharpDX.MediaFoundation.MediaSession\"/></strong> interface, such as <strong>Start</strong>, <strong>Stop</strong>, and <strong>Pause</strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaSession::GetClock']/*\"/>\t\n            <msdn-id>bb970342</msdn-id>\t\n            <unmanaged>GetClock</unmanaged>\t\n            <unmanaged-short>GetClock</unmanaged-short>\t\n            <unmanaged>HRESULT IMFMediaSession::GetClock([Out] IMFClock** ppClock)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.MediaSession.SessionCapabilities\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the capabilities of the Media Session, based on the current presentation.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaSession::GetSessionCapabilities']/*\"/>\t\n            <msdn-id>ms696229</msdn-id>\t\n            <unmanaged>GetSessionCapabilities</unmanaged>\t\n            <unmanaged-short>GetSessionCapabilities</unmanaged-short>\t\n            <unmanaged>HRESULT IMFMediaSession::GetSessionCapabilities([Out] unsigned int* pdwCaps)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.MediaSinkPreroll\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Enables a media sink to receive samples before the presentation clock is started.</p><p>To get a reference to this interface, call <strong>QueryInterface</strong> on the media sink.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Media sinks can implement this interface to support seamless playback and transitions. If a media sink exposes this interface, it can receive samples before the presentation clock starts. It can then pre-process the samples, so that rendering can begin immediately when the clock starts. Prerolling helps to avoid glitches during playback.</p><p>If a media sink supports preroll, the media sink's <strong><see cref=\"M:SharpDX.MediaFoundation.MediaSink.GetCharacteristics(System.Int32@)\"/></strong> method should return the MEDIASINK_CAN_PREROLL flag.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaSinkPreroll']/*\"/>\t\n            <msdn-id>ms699832</msdn-id>\t\n            <unmanaged>IMFMediaSinkPreroll</unmanaged>\t\n            <unmanaged-short>IMFMediaSinkPreroll</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaSinkPreroll.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.MediaSinkPreroll\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaSinkPreroll.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.MediaSinkPreroll\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.MediaSinkPreroll\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaSinkPreroll.NotifyPreroll(System.Int64)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Notifies the media sink that the presentation clock is about to start. </p>\t\n            </summary>\t\n            <param name=\"hnsUpcomingStartTime\"><dd> <p> The upcoming start time for the presentation clock, in 100-nanosecond units. This time is the same value that will be given to the <strong><see cref=\"M:SharpDX.MediaFoundation.PresentationClock.Start(System.Int64)\"/></strong> method when the presentation clock is started. </p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p> After this method is called, the media sink sends any number of <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.StreamSinkRequestSample\"/> events to request samples, until is has enough preroll data. When it has enough preroll data, the media sink sends an <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.StreamSinkPrerolled\"/> event. This event signals that the client can start the presentation clock. </p><p> During preroll, the media sink can prepare the samples that it receives, so that they are ready to be rendered. It does not actually render any samples until the clock starts. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaSinkPreroll::NotifyPreroll']/*\"/>\t\n            <msdn-id>ms703799</msdn-id>\t\n            <unmanaged>HRESULT IMFMediaSinkPreroll::NotifyPreroll([In] longlong hnsUpcomingStartTime)</unmanaged>\t\n            <unmanaged-short>IMFMediaSinkPreroll::NotifyPreroll</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.MediaSource\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Implemented by media source objects.</p><p>Media sources are objects that generate media data. For example, the data might come from a video file, a network stream, or a hardware device, such as a camera. Each media source contains one or more streams, and each stream delivers data of one type, such as audio or video.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaSource']/*\"/>\t\n            <msdn-id>ms700189</msdn-id>\t\n            <unmanaged>IMFMediaSource</unmanaged>\t\n            <unmanaged-short>IMFMediaSource</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaSource.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.MediaSource\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaSource.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.MediaSource\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.MediaSource\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaSource.GetCharacteristics(System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves the characteristics of the media source.</p>\t\n            </summary>\t\n            <param name=\"dwCharacteristicsRef\"><dd> <p>Receives a bitwise <strong>OR</strong> of zero or more flags from the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaSourceCharacteristics\"/></strong> enumeration.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/></strong></dt> </dl> </td><td> <p>The media source's <strong>Shutdown</strong> method has been called.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>The characteristics of a media source can change at any time. If this happens, the source sends an <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.SourceCharacteristicsChanged\"/> event.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaSource::GetCharacteristics']/*\"/>\t\n            <msdn-id>ms703148</msdn-id>\t\n            <unmanaged>HRESULT IMFMediaSource::GetCharacteristics([Out] unsigned int* pdwCharacteristics)</unmanaged>\t\n            <unmanaged-short>IMFMediaSource::GetCharacteristics</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaSource.CreatePresentationDescriptor(SharpDX.MediaFoundation.PresentationDescriptor@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves a copy of the media source's presentation descriptor. Applications use the presentation descriptor to select streams and to get information about the source content.</p>\t\n            </summary>\t\n            <param name=\"presentationDescriptorOut\"><dd> <p>Receives a reference to the presentation descriptor's <strong><see cref=\"T:SharpDX.MediaFoundation.PresentationDescriptor\"/></strong> interface. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/></strong></dt> </dl> </td><td> <p>The media source's <strong>Shutdown</strong> method has been called.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>The presentation descriptor contains the media source's default settings for the presentation. The application can change these settings by selecting or deselecting streams, or by changing the media type on a stream. Do not modify the presentation descriptor unless the source is stopped. The changes take affect when the source's <strong><see cref=\"M:SharpDX.MediaFoundation.MediaSource.Start(SharpDX.MediaFoundation.PresentationDescriptor,System.Nullable{System.Guid},System.Nullable{SharpDX.Win32.Variant})\"/></strong> method is called.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaSource::CreatePresentationDescriptor']/*\"/>\t\n            <msdn-id>ms702261</msdn-id>\t\n            <unmanaged>HRESULT IMFMediaSource::CreatePresentationDescriptor([Out] IMFPresentationDescriptor** ppPresentationDescriptor)</unmanaged>\t\n            <unmanaged-short>IMFMediaSource::CreatePresentationDescriptor</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaSource.Start(SharpDX.MediaFoundation.PresentationDescriptor,System.Nullable{System.Guid},System.Nullable{SharpDX.Win32.Variant})\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Starts, seeks, or restarts the media source by specifying where to start playback.</p>\t\n            </summary>\t\n            <param name=\"presentationDescriptorRef\"><dd> <p> Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.PresentationDescriptor\"/></strong> interface of the media source's presentation descriptor. To get the presentation descriptor, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaSource.CreatePresentationDescriptor(SharpDX.MediaFoundation.PresentationDescriptor@)\"/></strong>. You can modify the presentation descriptor before calling <strong>Start</strong>, to select or deselect streams or change the media types. </p> </dd></param>\t\n            <param name=\"guidTimeFormatRef\"><dd> <p> Pointer to a <see cref=\"T:System.Guid\"/> that specifies the time format. The time format defines the units for the <em>pvarStartPosition</em> parameter. If the value <em></em> is <strong>GUID_NULL</strong>, the time format is 100-nanosecond units. Some media sources might support additional time format GUIDs. This parameter can be <strong><c>null</c></strong>. If the value is <strong><c>null</c></strong>, it is equalivent to <strong>GUID_NULL</strong>. </p> </dd></param>\t\n            <param name=\"varStartPositionRef\"><dd> <p> Specifies where to start playback. The units of this parameter are indicated by the time format given in <em>pguidTimeFormat</em>. If the time format is <strong>GUID_NULL</strong>, the variant type must be <strong>VT_I8</strong> or <strong>VT_EMPTY</strong>. Use <strong>VT_I8</strong> to specify a new starting position, in 100-nanosecond units. Use <strong>VT_EMPTY</strong> to start from the current position. Other time formats might use other <strong><see cref=\"T:SharpDX.Win32.Variant\"/></strong> types. </p> </dd></param>\t\n            <returns><p> The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table. </p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.AsfOufOfRange\"/></strong></dt> </dl> </td><td> <p> The start position is past the end of the presentation (ASF media source). </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.HwMftFailedStartStreaming\"/></strong></dt> </dl> </td><td> <p>A hardware device was unable to start streaming. This error code can be returned by a media source that represents a hardware device, such as a camera. For example, if the camera is already being used by another application, the method might return this error code.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidRequest\"/></strong></dt> </dl> </td><td> <p> The start request is not valid. For example, the start position is past the end of the presentation. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/></strong></dt> </dl> </td><td> <p> The media source's <strong>Shutdown</strong> method has been called. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.UnsupportedTimeFormat\"/></strong></dt> </dl> </td><td> <p> The media source does not support the time format specified in <em>pguidTimeFormat</em>. </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>This method is asynchronous. If the operation succeeds, the media source sends the following events:</p><ul> <li> For each new stream, the source sends an <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.NewStream\"/> event. This event is sent for the first <strong>Start</strong> call in which the stream appears. The event data is a reference to the stream's <strong><see cref=\"T:SharpDX.MediaFoundation.MediaStream\"/></strong> interface. </li> <li> For each <em>updated</em> stream, the source sends an <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.UpdatedStream\"/> event. A stream is updated if the stream already existed when <strong>Start</strong> was called (for example, if the application seeks during playback). The event data is a reference to the stream's <strong><see cref=\"T:SharpDX.MediaFoundation.MediaStream\"/></strong> interface. </li> <li> If the previous state was stopped, the source sends an <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.SourceStarted\"/> event. </li> <li> If the previous state was started or paused and the starting position is the current position (<strong>VT_EMPTY</strong>), the source sends an <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.SourceStarted\"/> event. </li> <li> If the previous state was started or paused, and a new starting position is specified, the source sends an <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.SourceSeeked\"/> event. </li> <li> If the source sends an <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.SourceStarted\"/> event, each media stream sends an <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.StreamStarted\"/> event. If the source sends an <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.SourceSeeked\"/> event, each stream sends an <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.StreamSeeked\"/> event. </li> </ul><p> If the start operation fails asynchronously (after the method returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>), the media source sends an <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.SourceStarted\"/> event that contains a failure code, without sending any of the other events listed here. If the method fails synchronously (returns an error code), no events are raised. </p><p> A call to <strong>Start</strong> results in a <em>seek</em> if the previous state was started or paused, and the new starting position is not <strong>VT_EMPTY</strong>. Not every media source can seek. If a media source can seek, the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaSource.GetCharacteristics(System.Int32@)\"/></strong> method returns the <strong><see cref=\"F:SharpDX.MediaFoundation.MediaSourceCharacteristics.CanSeek\"/></strong> flag. </p><p> Events from the media source are not synchronized with events from the media streams. If you seek a media source, therefore, you can still receive samples from the earlier position after getting the <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.SourceSeeked\"/> event. If you need to synchronize the operations, wait for the stream event, <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.StreamSeeked\"/>, which marks the exact point in the stream where the seek occurs. </p>End of Stream<p>When a stream plays to the end, the stream sends an <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.EndOfStream\"/> event. When all of the selected streams have reached the end, the media source sends an <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.EndOfPresentation\"/> event.</p><p>If the starting position is past the end of a selected stream (but before the end of the presentation), the stream should send <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.EndOfStream\"/> immediately after <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.StreamStarted\"/>/<see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.StreamSeeked\"/>. If playback reaches the end of the presentation and <strong>Start</strong> is called again from the current position, the streams re-send the <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.EndOfStream\"/> event and the media source re-sends the <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.EndOfPresentation\"/> event. These events inform the pipeline not to request any more data.</p><p>During reverse playback, the start of the file is considered the end of the stream. For more information, see Implementing Rate Control.</p>Implementing Start<p>When a media source executes a seek, it should start at the first key frame before the seek time, so that the decoder can decode the samples for the target start time. The pipeline will discard any decoded samples that are too early.</p><p>If the start time is <strong>VT_EMPTY</strong> and the previous state was started or paused, the source should resume from its current position. In this case, it is not necessary to resend the previous key frame, because the decoder will still have the data that was previously sent.</p><p>When validating the  <em>pPresentationDescriptor</em> parameter, the media source should check only for the information that it needs to function correctly. In particular, the client can add private attributes to the presentation descriptor. The presence of additional attributes should not cause the <strong>Start</strong> method to fail.</p><p>After <strong>Start</strong> is called, each stream on the media source must do one of the following:</p><ul> <li>Deliver media data in response to <strong><see cref=\"M:SharpDX.MediaFoundation.MediaStream.RequestSample(SharpDX.ComObject)\"/></strong> calls.</li> <li>Send <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.StreamTick\"/> events to indicate a gap in the stream.</li> <li>Send an <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.EndOfStream\"/> event to indicate the end of the stream.</li> </ul><p>For more information, see Writing a Custom Media Source.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaSource::Start']/*\"/>\t\n            <msdn-id>ms694101</msdn-id>\t\n            <unmanaged>HRESULT IMFMediaSource::Start([In, Optional] IMFPresentationDescriptor* pPresentationDescriptor,[In, Optional] const GUID* pguidTimeFormat,[In, Optional] const PROPVARIANT* pvarStartPosition)</unmanaged>\t\n            <unmanaged-short>IMFMediaSource::Start</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaSource.Stop\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Stops all active streams in the media source.</p>\t\n            </summary>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/></strong></dt> </dl> </td><td> <p>The media source's <strong>Shutdown</strong> method has been called.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>This method is asynchronous. When the operation completes, the media source sends and <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.SourceStopped\"/> event, and every active stream sends an <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.StreamStopped\"/> event. If the method returns a failure code, no events are raised.</p><p>When a media source is stopped, its current position reverts to zero. After that, if the <strong>Start</strong> method is called with VT_EMPTY for the starting position, playback starts from the beginning of the presentation.</p><p>While the source is stopped, no streams produce data.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaSource::Stop']/*\"/>\t\n            <msdn-id>ms702045</msdn-id>\t\n            <unmanaged>HRESULT IMFMediaSource::Stop()</unmanaged>\t\n            <unmanaged-short>IMFMediaSource::Stop</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaSource.Pause\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Pauses all active streams in the media source.</p>\t\n            </summary>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidStateTransition\"/></strong></dt> </dl> </td><td> <p>Invalid state transition. The media source must be in the started state.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/></strong></dt> </dl> </td><td> <p>The media source's <strong>Shutdown</strong> method has been called.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>This method is asynchronous. When the operation completes, the media source sends and <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.SourcePaused\"/> event, and every active stream sends an <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.StreamPaused\"/> event. If the method returns a failure code, no events are raised.</p><p>The media source must be in the started state. The method fails if the media source is paused or stopped.</p><p>While the source is paused, calls to <strong><see cref=\"M:SharpDX.MediaFoundation.MediaStream.RequestSample(SharpDX.ComObject)\"/></strong> succeed, but the streams will not deliver any samples until after the source is started again. Note that the source's event queue is not serialized with the stream event queues, so the client might receive some samples after the <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.SourcePaused\"/> event, due to multi-threading issues. But the client will not receive any samples from a stream after the <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.StreamPaused\"/> event.</p><p>Not every media source can pause. If a media source can pause, the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaSource.GetCharacteristics(System.Int32@)\"/></strong> method returns the <see cref=\"F:SharpDX.MediaFoundation.MediaSourceCharacteristics.CanPause\"/> flag.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaSource::Pause']/*\"/>\t\n            <msdn-id>ms694275</msdn-id>\t\n            <unmanaged>HRESULT IMFMediaSource::Pause()</unmanaged>\t\n            <unmanaged-short>IMFMediaSource::Pause</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaSource.Shutdown\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Shuts down the media source and releases the resources it is using.</p>\t\n            </summary>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>If the application creates the media source, either directly or through the source resolver, the application is responsible for calling <strong>Shutdown</strong> to avoid memory or resource leaks.</p><p>After this method is called, methods on the media source and all of its media streams return <see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/> (except for <strong><see cref=\"T:SharpDX.ComObject\"/></strong> methods).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaSource::Shutdown']/*\"/>\t\n            <msdn-id>ms703110</msdn-id>\t\n            <unmanaged>HRESULT IMFMediaSource::Shutdown()</unmanaged>\t\n            <unmanaged-short>IMFMediaSource::Shutdown</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.MediaSource.Characteristics\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves the characteristics of the media source.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The characteristics of a media source can change at any time. If this happens, the source sends an <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.SourceCharacteristicsChanged\"/> event.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaSource::GetCharacteristics']/*\"/>\t\n            <msdn-id>ms703148</msdn-id>\t\n            <unmanaged>GetCharacteristics</unmanaged>\t\n            <unmanaged-short>GetCharacteristics</unmanaged-short>\t\n            <unmanaged>HRESULT IMFMediaSource::GetCharacteristics([Out] unsigned int* pdwCharacteristics)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.MediaSourcePresentationProvider\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Notifies the source when playback has reached the end of a segment. For timelines, this corresponds to reaching a mark-out point.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaSourcePresentationProvider']/*\"/>\t\n            <msdn-id>ms705639</msdn-id>\t\n            <unmanaged>IMFMediaSourcePresentationProvider</unmanaged>\t\n            <unmanaged-short>IMFMediaSourcePresentationProvider</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaSourcePresentationProvider.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.MediaSourcePresentationProvider\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaSourcePresentationProvider.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.MediaSourcePresentationProvider\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.MediaSourcePresentationProvider\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaSourcePresentationProvider.ForceEndOfPresentation(SharpDX.MediaFoundation.PresentationDescriptor)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Notifies the source when playback has reached the end of a segment. For timelines, this corresponds to reaching a mark-out point.</p>\t\n            </summary>\t\n            <param name=\"presentationDescriptorRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.PresentationDescriptor\"/></strong> interface of the presentation descriptor for the segment that has ended.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaSourcePresentationProvider::ForceEndOfPresentation']/*\"/>\t\n            <msdn-id>ms705639</msdn-id>\t\n            <unmanaged>HRESULT IMFMediaSourcePresentationProvider::ForceEndOfPresentation([In, Optional] IMFPresentationDescriptor* pPresentationDescriptor)</unmanaged>\t\n            <unmanaged-short>IMFMediaSourcePresentationProvider::ForceEndOfPresentation</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.MediaSourceTopologyProvider\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Enables an application to get a topology from the sequencer source. This interface is exposed by the sequencer source object.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaSourceTopologyProvider']/*\"/>\t\n            <msdn-id>ms699013</msdn-id>\t\n            <unmanaged>IMFMediaSourceTopologyProvider</unmanaged>\t\n            <unmanaged-short>IMFMediaSourceTopologyProvider</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaSourceTopologyProvider.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.MediaSourceTopologyProvider\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaSourceTopologyProvider.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.MediaSourceTopologyProvider\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.MediaSourceTopologyProvider\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaSourceTopologyProvider.GetMediaSourceTopology(SharpDX.MediaFoundation.PresentationDescriptor,SharpDX.MediaFoundation.Topology@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Returns a topology for a media source that builds an internal topology.</p>\t\n            </summary>\t\n            <param name=\"presentationDescriptorRef\"><dd> <p>A reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.PresentationDescriptor\"/></strong> interface of the media source's presentation descriptor. To get this reference, either call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaSource.CreatePresentationDescriptor(SharpDX.MediaFoundation.PresentationDescriptor@)\"/></strong> on the media source, or get the reference from the <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.NewPresentation\"/> event.</p> </dd></param>\t\n            <param name=\"topologyOut\"><dd> <p>Receives a reference to the topology's <strong><see cref=\"T:SharpDX.MediaFoundation.Topology\"/></strong> interface. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>The method returns an <see cref=\"T:SharpDX.Result\"/>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong>E_INVALIDARG</strong></dt> </dl> </td><td> <p>Invalid argument. For example, a <strong><c>null</c></strong> input parameter, or the presentation descriptor is not valid.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaSourceTopologyProvider::GetMediaSourceTopology']/*\"/>\t\n            <msdn-id>bb970383</msdn-id>\t\n            <unmanaged>HRESULT IMFMediaSourceTopologyProvider::GetMediaSourceTopology([In, Optional] IMFPresentationDescriptor* pPresentationDescriptor,[Out] IMFTopology** ppTopology)</unmanaged>\t\n            <unmanaged-short>IMFMediaSourceTopologyProvider::GetMediaSourceTopology</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.MediaStream\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Represents one stream in a media source. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Streams are created when a media source is started. For each stream, the media source sends an <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.NewStream\"/> event with a reference to the stream's <strong><see cref=\"T:SharpDX.MediaFoundation.MediaStream\"/></strong> interface.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaStream']/*\"/>\t\n            <msdn-id>ms697561</msdn-id>\t\n            <unmanaged>IMFMediaStream</unmanaged>\t\n            <unmanaged-short>IMFMediaStream</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaStream.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.MediaStream\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaStream.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.MediaStream\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.MediaStream\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaStream.GetMediaSource(SharpDX.MediaFoundation.MediaSource@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves a reference to the media source that created this media stream.</p>\t\n            </summary>\t\n            <param name=\"mediaSourceOut\"><dd> <p>Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaSource\"/></strong> interface of the media source. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/></strong></dt> </dl> </td><td> <p>The media source's <strong>Shutdown</strong> method has been called.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaStream::GetMediaSource']/*\"/>\t\n            <msdn-id>ms705668</msdn-id>\t\n            <unmanaged>HRESULT IMFMediaStream::GetMediaSource([Out] IMFMediaSource** ppMediaSource)</unmanaged>\t\n            <unmanaged-short>IMFMediaStream::GetMediaSource</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaStream.GetStreamDescriptor(SharpDX.MediaFoundation.StreamDescriptor@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves a stream descriptor for this media stream.</p>\t\n            </summary>\t\n            <param name=\"streamDescriptorOut\"><dd> <p>Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.StreamDescriptor\"/></strong> interface. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/></strong></dt> </dl> </td><td> <p>The media source's <strong>Shutdown</strong> method has been called.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>Do not modify the stream descriptor. To change the presentation, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaSource.CreatePresentationDescriptor(SharpDX.MediaFoundation.PresentationDescriptor@)\"/></strong> and modify the presentation descriptor.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaStream::GetStreamDescriptor']/*\"/>\t\n            <msdn-id>ms697244</msdn-id>\t\n            <unmanaged>HRESULT IMFMediaStream::GetStreamDescriptor([Out] IMFStreamDescriptor** ppStreamDescriptor)</unmanaged>\t\n            <unmanaged-short>IMFMediaStream::GetStreamDescriptor</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaStream.RequestSample(SharpDX.ComObject)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Requests a sample from the media source. </p>\t\n            </summary>\t\n            <param name=\"tokenRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interface to an object that is used as a token for the request. The caller must implement this object. This parameter can be <strong><c>null</c></strong>. See Remarks.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.EndOfStream\"/></strong></dt> </dl> </td><td> <p> The end of the stream was reached. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.MediaSourceWrongState\"/></strong></dt> </dl> </td><td> <p> The media source is stopped.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/></strong></dt> </dl> </td><td> <p> The source's <strong>Shutdown</strong> method has been called. </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>If <em>pToken</em> is not <strong><c>null</c></strong>, the media stream calls <strong>AddRef</strong> on <em>pToken</em> and places the token in a first-in, first-out queue.</p><p>When the next sample is available, the media stream stream does the following:</p><ol> <li> Pulls the first token from the queue. </li> <li> Sets the <strong><see cref=\"F:SharpDX.MediaFoundation.SampleAttributeKeys.Token\"/></strong> attribute on the media sample. The attribute data is a reference to the token object. </li> <li> Sends an <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.MediaSample\"/> event. The event data is a reference to the media sample's <strong><see cref=\"T:SharpDX.MediaFoundation.Sample\"/></strong> interface. </li> <li> Calls <strong>Release</strong> on the token. </li> </ol><p>If the media stream cannot fulfill the caller's request for a sample, it simply releases the token object and skips steps 2 and 3.</p><p>The caller should monitor the reference count on the request token. If the media stream sends an <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.MediaSample\"/> event, get the <strong><see cref=\"F:SharpDX.MediaFoundation.SampleAttributeKeys.Token\"/></strong> attribute from the sample and match the attribute value against the token. If the token's reference count falls to zero and you did not receive an <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.MediaSample\"/> event, it means that the request was dropped.</p><p>Because the Media Foundation pipeline is multithreaded, the source's <strong>RequestSample</strong> method might get called after the source has stopped. If the media source is stopped, the method should return <strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.MediaSourceWrongState\"/></strong>. The pipeline does not treat this return code as an error condition. If the source returns any other error code, the pipeline treats it as fatal error and halts the session.</p><p><strong>Note</strong>??Earlier versions of the documentation listed the wrong error code for this case.</p><p>If the media source is paused, the method succeeds, but the stream does not deliver the sample until the source is started again.</p><p>If a media source enounters an error asynchronously while processing data, it should signal the error in one of the following ways (but not both):</p><ul> <li>Return an error code from the next <strong>RequestSample</strong> call.</li> <li>Send an <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.Error\"/> event.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaStream::RequestSample']/*\"/>\t\n            <msdn-id>ms696240</msdn-id>\t\n            <unmanaged>HRESULT IMFMediaStream::RequestSample([In] IUnknown* pToken)</unmanaged>\t\n            <unmanaged-short>IMFMediaStream::RequestSample</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.MediaStream.MediaSource\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves a reference to the media source that created this media stream.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaStream::GetMediaSource']/*\"/>\t\n            <msdn-id>ms705668</msdn-id>\t\n            <unmanaged>GetMediaSource</unmanaged>\t\n            <unmanaged-short>GetMediaSource</unmanaged-short>\t\n            <unmanaged>HRESULT IMFMediaStream::GetMediaSource([Out] IMFMediaSource** ppMediaSource)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.MediaStream.StreamDescriptor\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves a stream descriptor for this media stream.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Do not modify the stream descriptor. To change the presentation, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaSource.CreatePresentationDescriptor(SharpDX.MediaFoundation.PresentationDescriptor@)\"/></strong> and modify the presentation descriptor.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaStream::GetStreamDescriptor']/*\"/>\t\n            <msdn-id>ms697244</msdn-id>\t\n            <unmanaged>GetStreamDescriptor</unmanaged>\t\n            <unmanaged-short>GetStreamDescriptor</unmanaged-short>\t\n            <unmanaged>HRESULT IMFMediaStream::GetStreamDescriptor([Out] IMFStreamDescriptor** ppStreamDescriptor)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.MediaTypeHandler\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves a media type from the object's list of supported media types.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Media types are returned in the approximate order of preference. The list of supported types is not guaranteed to be complete. To test whether a particular media type is supported, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaTypeHandler.IsMediaTypeSupported(SharpDX.MediaFoundation.MediaType,SharpDX.MediaFoundation.MediaType@)\"/></strong>.</p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaTypeHandler']/*\"/>\t\n            <msdn-id>bb970473</msdn-id>\t\n            <unmanaged>IMFMediaTypeHandler</unmanaged>\t\n            <unmanaged-short>IMFMediaTypeHandler</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaTypeHandler.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.MediaTypeHandler\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaTypeHandler.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.MediaTypeHandler\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.MediaTypeHandler\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaTypeHandler.IsMediaTypeSupported(SharpDX.MediaFoundation.MediaType,SharpDX.MediaFoundation.MediaType@)\">\n            <summary>\t\n            <p>Queries whether the object supports a specified media type. </p>  <see cref=\"T:SharpDX.Result\"/> IsMediaTypeSupported( <see cref=\"T:SharpDX.MediaFoundation.MediaType\"/>*  pMediaType, <see cref=\"T:SharpDX.MediaFoundation.MediaType\"/>**  ppMediaType\t\n            );<p></p>Parameters <p> pMediaType </p> <p>[in]  Pointer to the <see cref=\"T:SharpDX.MediaFoundation.MediaType\"/> Interface of the media type to check.</p> <p> ppMediaType </p> <p>[out]  Receives a reference to the <see cref=\"T:SharpDX.MediaFoundation.MediaType\"/> interface. This parameter can be <c>null</c>. See Remarks.</p>  <p>The method returns an <see cref=\"T:SharpDX.Result\"/>. Possible values include, but are not limited to, those in the following table.</p> <table><tr> <th> Return code              </th> <th> Description              </th> </tr><tr> <td> <p><see cref=\"F:SharpDX.Result.Ok\"/></p> </td> <td> <p>The method succeeded.</p> </td> </tr><tr> <td> <p><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidMediaType\"/></p> </td> <td> <p>The object does not support this media type.</p> </td> </tr></table>  <p>If the object supports the media type given in pMediaType, the method returns <see cref=\"F:SharpDX.Result.Ok\"/>. For a media source, it means the source can generate data that conforms to that media type. For a media sink, it means the sink can receive data that conforms to that media type. If the object does not support the media type, the method fails.</p> <p>The ppMediaType parameter is optional. If the method fails, the object might use ppMediaType to return a media type that the object does support, and which closely matches the one given in pMediaType. The method is not guaranteed to return a media type in ppMediaType. If no type is returned, this parameter receives a <c>null</c> reference. If the method succeeds, this parameter receives a <c>null</c> reference. If the caller sets ppMediaType to <c>null</c>, this parameter is ignored.</p>  <p> Client: Requires Windows Vista.</p> <p> Header: Include mfidl.h.</p> <p> Library: Use mfuuid.lib.</p> ReferenceIMFMediaTypeHandler Interface\t\n            </summary>\t\n            <param name=\"mediaTypeRef\">No documentation.</param>\t\n            <param name=\"mediaTypeOut\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaTypeHandler::IsMediaTypeSupported']/*\"/>\t\n            <msdn-id>ms701597</msdn-id>\t\n            <unmanaged>HRESULT IMFMediaTypeHandler::IsMediaTypeSupported([In] IMFMediaType* pMediaType,[Out] IMFMediaType** ppMediaType)</unmanaged>\t\n            <unmanaged-short>IMFMediaTypeHandler::IsMediaTypeSupported</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaTypeHandler.GetMediaTypeCount(System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves the number of media types in the object's list of supported media types.</p>\t\n            </summary>\t\n            <param name=\"dwTypeCountRef\"><dd> <p>Receives the number of media types in the list.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p> To get the supported media types, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaTypeHandler.GetMediaTypeByIndex(System.Int32,SharpDX.MediaFoundation.MediaType@)\"/></strong>. </p><p> For a media source, the media type handler for each stream must contain at least one supported media type. For media sinks, the media type handler for each stream might contain zero media types. In that case, the application must provide the medai type. To test whether a particular media type is supported, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaTypeHandler.IsMediaTypeSupported(SharpDX.MediaFoundation.MediaType,SharpDX.MediaFoundation.MediaType@)\"/></strong>. </p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaTypeHandler::GetMediaTypeCount']/*\"/>\t\n            <msdn-id>bb970517</msdn-id>\t\n            <unmanaged>HRESULT IMFMediaTypeHandler::GetMediaTypeCount([Out] unsigned int* pdwTypeCount)</unmanaged>\t\n            <unmanaged-short>IMFMediaTypeHandler::GetMediaTypeCount</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaTypeHandler.GetMediaTypeByIndex(System.Int32,SharpDX.MediaFoundation.MediaType@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves a media type from the object's list of supported media types.</p>\t\n            </summary>\t\n            <param name=\"dwIndex\"><dd> <p> Zero-based index of the media type to retrieve. To get the number of media types in the list, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaTypeHandler.GetMediaTypeCount(System.Int32@)\"/></strong>. </p> </dd></param>\t\n            <param name=\"typeOut\"><dd> <p> Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaType\"/></strong> interface. The caller must release the interface. </p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.NoMoreTypes\"/></strong></dt> </dl> </td><td> <p> The <em>dwIndex</em> parameter is out of range. </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>Media types are returned in the approximate order of preference. The list of supported types is not guaranteed to be complete. To test whether a particular media type is supported, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaTypeHandler.IsMediaTypeSupported(SharpDX.MediaFoundation.MediaType,SharpDX.MediaFoundation.MediaType@)\"/></strong>.</p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaTypeHandler::GetMediaTypeByIndex']/*\"/>\t\n            <msdn-id>bb970473</msdn-id>\t\n            <unmanaged>HRESULT IMFMediaTypeHandler::GetMediaTypeByIndex([In] unsigned int dwIndex,[Out] IMFMediaType** ppType)</unmanaged>\t\n            <unmanaged-short>IMFMediaTypeHandler::GetMediaTypeByIndex</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaTypeHandler.SetCurrentMediaType(SharpDX.MediaFoundation.MediaType)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Sets the object's media type.</p>\t\n            </summary>\t\n            <param name=\"mediaTypeRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaType\"/></strong> interface of the new media type.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidRequest\"/></strong></dt> </dl> </td><td> <p> Invalid request. </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>For media sources, setting the media type means the source will generate data that conforms to that media type. For media sinks, setting the media type means the sink can receive data that conforms to that media type.</p><p>Any implementation of this method should check whether <em>pMediaType</em> differs from the object's current media type. If the types are identical, the method should return <see cref=\"F:SharpDX.Result.Ok\"/> but avoid releasing and recreating resources unnecessarily. If the types are not identical, the method should validate the new type.</p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaTypeHandler::SetCurrentMediaType']/*\"/>\t\n            <msdn-id>bb970432</msdn-id>\t\n            <unmanaged>HRESULT IMFMediaTypeHandler::SetCurrentMediaType([In] IMFMediaType* pMediaType)</unmanaged>\t\n            <unmanaged-short>IMFMediaTypeHandler::SetCurrentMediaType</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaTypeHandler.GetCurrentMediaType(SharpDX.MediaFoundation.MediaType@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves the current media type of the object.</p>\t\n            </summary>\t\n            <param name=\"mediaTypeOut\"><dd> <p>Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaType\"/></strong> interface. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.NotInitializeD\"/></strong></dt> </dl> </td><td> <p> No media type is set. </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaTypeHandler::GetCurrentMediaType']/*\"/>\t\n            <msdn-id>bb970492</msdn-id>\t\n            <unmanaged>HRESULT IMFMediaTypeHandler::GetCurrentMediaType([Out] IMFMediaType** ppMediaType)</unmanaged>\t\n            <unmanaged-short>IMFMediaTypeHandler::GetCurrentMediaType</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaTypeHandler.GetMajorType(System.Guid@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Gets the major media type of the object. </p>\t\n            </summary>\t\n            <param name=\"guidMajorTypeRef\"><dd> <p>Receives a <see cref=\"T:System.Guid\"/> that identifies the major type. For a list of possible values, see Major Media Types. </p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>The major type identifies what kind of data is in the stream, such as audio or video. To get the specific details of the format, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaTypeHandler.GetCurrentMediaType(SharpDX.MediaFoundation.MediaType@)\"/></strong>.</p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaTypeHandler::GetMajorType']/*\"/>\t\n            <msdn-id>bb970337</msdn-id>\t\n            <unmanaged>HRESULT IMFMediaTypeHandler::GetMajorType([Out] GUID* pguidMajorType)</unmanaged>\t\n            <unmanaged-short>IMFMediaTypeHandler::GetMajorType</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.MediaTypeHandler.MediaTypeCount\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves the number of media types in the object's list of supported media types.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p> To get the supported media types, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaTypeHandler.GetMediaTypeByIndex(System.Int32,SharpDX.MediaFoundation.MediaType@)\"/></strong>. </p><p> For a media source, the media type handler for each stream must contain at least one supported media type. For media sinks, the media type handler for each stream might contain zero media types. In that case, the application must provide the medai type. To test whether a particular media type is supported, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaTypeHandler.IsMediaTypeSupported(SharpDX.MediaFoundation.MediaType,SharpDX.MediaFoundation.MediaType@)\"/></strong>. </p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaTypeHandler::GetMediaTypeCount']/*\"/>\t\n            <msdn-id>bb970517</msdn-id>\t\n            <unmanaged>GetMediaTypeCount</unmanaged>\t\n            <unmanaged-short>GetMediaTypeCount</unmanaged-short>\t\n            <unmanaged>HRESULT IMFMediaTypeHandler::GetMediaTypeCount([Out] unsigned int* pdwTypeCount)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.MediaTypeHandler.CurrentMediaType\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves the current media type of the object.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaTypeHandler::GetCurrentMediaType']/*\"/>\t\n            <msdn-id>bb970492</msdn-id>\t\n            <unmanaged>GetCurrentMediaType / SetCurrentMediaType</unmanaged>\t\n            <unmanaged-short>GetCurrentMediaType</unmanaged-short>\t\n            <unmanaged>HRESULT IMFMediaTypeHandler::GetCurrentMediaType([Out] IMFMediaType** ppMediaType)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.MediaTypeHandler.MajorType\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Gets the major media type of the object. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The major type identifies what kind of data is in the stream, such as audio or video. To get the specific details of the format, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaTypeHandler.GetCurrentMediaType(SharpDX.MediaFoundation.MediaType@)\"/></strong>.</p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMediaTypeHandler::GetMajorType']/*\"/>\t\n            <msdn-id>bb970337</msdn-id>\t\n            <unmanaged>GetMajorType</unmanaged>\t\n            <unmanaged-short>GetMajorType</unmanaged-short>\t\n            <unmanaged>HRESULT IMFMediaTypeHandler::GetMajorType([Out] GUID* pguidMajorType)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.Metadata\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Gets a list of the languages in which metadata is available.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p> For more information about language tags, see RFC 1766, \"Tags for the Identification of Languages\". </p><p> To set the current language, call <strong><see cref=\"M:SharpDX.MediaFoundation.Metadata.SetLanguage(System.String)\"/></strong>. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMetadata']/*\"/>\t\n            <msdn-id>ms698736</msdn-id>\t\n            <unmanaged>IMFMetadata</unmanaged>\t\n            <unmanaged-short>IMFMetadata</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Metadata.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.Metadata\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Metadata.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.Metadata\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.Metadata\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Metadata.SetLanguage(System.String)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Sets the language for setting and retrieving metadata. </p>\t\n            </summary>\t\n            <param name=\"wszRFC1766Ref\"><dd> <p>Pointer to a null-terminated string containing an RFC 1766-compliant language tag.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>For more information about language tags, see RFC 1766, \"Tags for the Identification of Languages\".</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMetadata::SetLanguage']/*\"/>\t\n            <msdn-id>ms703982</msdn-id>\t\n            <unmanaged>HRESULT IMFMetadata::SetLanguage([In] const wchar_t* pwszRFC1766)</unmanaged>\t\n            <unmanaged-short>IMFMetadata::SetLanguage</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Metadata.GetLanguage(System.IntPtr)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Gets the current language setting.</p>\t\n            </summary>\t\n            <param name=\"wszRFC1766Out\"><dd> <p> Receives a reference to a null-terminated string containing an RFC 1766-compliant language tag. The caller must release the string by calling <strong>CoTaskMemFree</strong>. </p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded. </p> </td></tr> <tr><td> <dl> <dt><strong>E_NOTIMPL</strong></dt> </dl> </td><td> <p>The metadata provider does not support multiple languages.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidRequest\"/></strong></dt> </dl> </td><td> <p> No language was set. </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>For more information about language tags, see RFC 1766, \"Tags for the Identification of Languages.\"</p><p>The <strong><see cref=\"M:SharpDX.MediaFoundation.Metadata.SetLanguage(System.String)\"/></strong> and <strong><see cref=\"M:SharpDX.MediaFoundation.Metadata.GetProperty(System.String,SharpDX.Win32.Variant@)\"/></strong> methods set and get metadata for the current language setting.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMetadata::GetLanguage']/*\"/>\t\n            <msdn-id>ms698978</msdn-id>\t\n            <unmanaged>HRESULT IMFMetadata::GetLanguage([Out] wchar_t** ppwszRFC1766)</unmanaged>\t\n            <unmanaged-short>IMFMetadata::GetLanguage</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Metadata.GetAllLanguages(SharpDX.Win32.Variant@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Gets a list of the languages in which metadata is available.</p>\t\n            </summary>\t\n            <param name=\"vLanguagesOut\"><dd> <p> A reference to a <strong><see cref=\"T:SharpDX.Win32.Variant\"/></strong> that receives the list of languages. The list is returned as an array of null-terminated wide-character strings. Each string in the array is an RFC 1766-compliant language tag. </p> <p>The returned <strong><see cref=\"T:SharpDX.Win32.Variant\"/></strong> type is VT_VECTOR | VT_LPWSTR. The list might be empty, if no language tags are present. The caller must free the <strong><see cref=\"T:SharpDX.Win32.Variant\"/></strong> by calling <strong>PropVariantClear</strong>. </p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p> For more information about language tags, see RFC 1766, \"Tags for the Identification of Languages\". </p><p> To set the current language, call <strong><see cref=\"M:SharpDX.MediaFoundation.Metadata.SetLanguage(System.String)\"/></strong>. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMetadata::GetAllLanguages']/*\"/>\t\n            <msdn-id>ms698736</msdn-id>\t\n            <unmanaged>HRESULT IMFMetadata::GetAllLanguages([Out] PROPVARIANT* ppvLanguages)</unmanaged>\t\n            <unmanaged-short>IMFMetadata::GetAllLanguages</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Metadata.SetProperty(System.String,SharpDX.Win32.Variant)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Sets the value of a metadata property. </p>\t\n            </summary>\t\n            <param name=\"wszNameRef\"><dd> <p>Pointer to a null-terminated string containing the name of the property.</p> </dd></param>\t\n            <param name=\"vValueOut\"><dd> <p>Pointer to a <strong><see cref=\"T:SharpDX.Win32.Variant\"/></strong> that contains the value of the property. For multivalued properties, use a <strong><see cref=\"T:SharpDX.Win32.Variant\"/></strong> with a VT_VECTOR type.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMetadata::SetProperty']/*\"/>\t\n            <msdn-id>ms696972</msdn-id>\t\n            <unmanaged>HRESULT IMFMetadata::SetProperty([In] const wchar_t* pwszName,[In] const PROPVARIANT* ppvValue)</unmanaged>\t\n            <unmanaged-short>IMFMetadata::SetProperty</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Metadata.GetProperty(System.String,SharpDX.Win32.Variant@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Gets the value of a metadata property.</p>\t\n            </summary>\t\n            <param name=\"wszNameRef\"><dd> <p> A reference to a null-terminated string that containings the name of the property. To get the list of property names, call <strong><see cref=\"M:SharpDX.MediaFoundation.Metadata.GetAllPropertyNames(SharpDX.Win32.Variant@)\"/></strong>.</p> </dd></param>\t\n            <param name=\"vValueOut\"><dd> <p> Pointer to a <strong><see cref=\"T:SharpDX.Win32.Variant\"/></strong> that receives the value of the property. The <strong><see cref=\"T:SharpDX.Win32.Variant\"/></strong> type depends on the property. For multivalued properties, the <strong><see cref=\"T:SharpDX.Win32.Variant\"/></strong> is a <strong>VT_VECTOR</strong> type. The caller must free the <strong><see cref=\"T:SharpDX.Win32.Variant\"/></strong> by calling <strong>PropVariantClear</strong>. </p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.PropertyNotFound\"/></strong></dt> </dl> </td><td> <p> The requested property was not found. </p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMetadata::GetProperty']/*\"/>\t\n            <msdn-id>ms694844</msdn-id>\t\n            <unmanaged>HRESULT IMFMetadata::GetProperty([In] const wchar_t* pwszName,[Out] PROPVARIANT* ppvValue)</unmanaged>\t\n            <unmanaged-short>IMFMetadata::GetProperty</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Metadata.DeleteProperty(System.String)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Deletes a metadata property.</p>\t\n            </summary>\t\n            <param name=\"wszNameRef\"><dd> <p>Pointer to a null-terminated string containing the name of the property.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.PropertyNotFound\"/></strong></dt> </dl> </td><td> <p> The property was not found. </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>For a media source, deleting a property from the metadata collection does not change the original content.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMetadata::DeleteProperty']/*\"/>\t\n            <msdn-id>ms699021</msdn-id>\t\n            <unmanaged>HRESULT IMFMetadata::DeleteProperty([In] const wchar_t* pwszName)</unmanaged>\t\n            <unmanaged-short>IMFMetadata::DeleteProperty</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Metadata.GetAllPropertyNames(SharpDX.Win32.Variant@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Gets a list of all the metadata property names on this object.</p>\t\n            </summary>\t\n            <param name=\"vNamesOut\"><dd> <p>Pointer to a <strong><see cref=\"T:SharpDX.Win32.Variant\"/></strong> that receives an array of null-terminated wide-character strings. If no properties are available, the <strong><see cref=\"T:SharpDX.Win32.Variant\"/></strong> type is VT_EMPTY. Otherwise, the <strong><see cref=\"T:SharpDX.Win32.Variant\"/></strong> type is VT_VECTOR | VT_LPWSTR. The caller must free the <strong><see cref=\"T:SharpDX.Win32.Variant\"/></strong> by calling <strong>PropVariantClear</strong>.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMetadata::GetAllPropertyNames']/*\"/>\t\n            <msdn-id>ms704581</msdn-id>\t\n            <unmanaged>HRESULT IMFMetadata::GetAllPropertyNames([Out] PROPVARIANT* ppvNames)</unmanaged>\t\n            <unmanaged-short>IMFMetadata::GetAllPropertyNames</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.Metadata.AllLanguages\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Gets a list of the languages in which metadata is available.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p> For more information about language tags, see RFC 1766, \"Tags for the Identification of Languages\". </p><p> To set the current language, call <strong><see cref=\"M:SharpDX.MediaFoundation.Metadata.SetLanguage(System.String)\"/></strong>. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMetadata::GetAllLanguages']/*\"/>\t\n            <msdn-id>ms698736</msdn-id>\t\n            <unmanaged>GetAllLanguages</unmanaged>\t\n            <unmanaged-short>GetAllLanguages</unmanaged-short>\t\n            <unmanaged>HRESULT IMFMetadata::GetAllLanguages([Out] PROPVARIANT* ppvLanguages)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.Metadata.AllPropertyNames\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Gets a list of all the metadata property names on this object.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMetadata::GetAllPropertyNames']/*\"/>\t\n            <msdn-id>ms704581</msdn-id>\t\n            <unmanaged>GetAllPropertyNames</unmanaged>\t\n            <unmanaged-short>GetAllPropertyNames</unmanaged-short>\t\n            <unmanaged>HRESULT IMFMetadata::GetAllPropertyNames([Out] PROPVARIANT* ppvNames)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.MetadataProvider\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Gets metadata from a media source or other object.</p><p>If a media source supports this interface, it must expose the interface as a service. To get a reference to this interface from a media source, call <strong><see cref=\"M:SharpDX.MediaFoundation.ServiceProvider.GetService(System.Guid,System.Guid,System.IntPtr@)\"/></strong>. The service identifier is <strong>MF_METADATA_PROVIDER_SERVICE</strong>. Other types of object can expose this interface through <strong>QueryInterface</strong>.</p><p>Use this interface to get a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.Metadata\"/></strong> interface.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMetadataProvider']/*\"/>\t\n            <msdn-id>ms705606</msdn-id>\t\n            <unmanaged>IMFMetadataProvider</unmanaged>\t\n            <unmanaged-short>IMFMetadataProvider</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MetadataProvider.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.MetadataProvider\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MetadataProvider.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.MetadataProvider\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.MetadataProvider\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MetadataProvider.GetMFMetadata(SharpDX.MediaFoundation.PresentationDescriptor,System.Int32,System.Int32,SharpDX.MediaFoundation.Metadata@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Gets a collection of metadata, either for an entire presentation, or for one stream in the presentation.</p>\t\n            </summary>\t\n            <param name=\"presentationDescriptorRef\"><dd> <p> Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.PresentationDescriptor\"/></strong> interface of the media source's presentation descriptor. </p> </dd></param>\t\n            <param name=\"dwStreamIdentifier\"><dd> <p> If this parameter is zero, the method retrieves metadata that applies to the entire presentation. Otherwise, this <em></em> parameter specifies a stream identifier, and the method retrieves metadata for that stream. To get the stream identifier for a stream, call <strong><see cref=\"M:SharpDX.MediaFoundation.StreamDescriptor.GetStreamIdentifier(System.Int32@)\"/></strong>. </p> </dd></param>\t\n            <param name=\"dwFlags\"><dd> <p> Reserved. Must be zero. </p> </dd></param>\t\n            <param name=\"mFMetadataOut\"><dd> <p>Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.Metadata\"/></strong> interface. Use this interface to access the metadata. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.PropertyNotFound\"/></strong></dt> </dl> </td><td> <p>No metadata is available for the requested stream or presentation.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFMetadataProvider::GetMFMetadata']/*\"/>\t\n            <msdn-id>ms694097</msdn-id>\t\n            <unmanaged>HRESULT IMFMetadataProvider::GetMFMetadata([In, Optional] IMFPresentationDescriptor* pPresentationDescriptor,[In] unsigned int dwStreamIdentifier,[In] unsigned int dwFlags,[Out] IMFMetadata** ppMFMetadata)</unmanaged>\t\n            <unmanaged-short>IMFMetadataProvider::GetMFMetadata</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.Mfasyncresult\">\n            <summary>\t\n            <p>This topic describes how to implement the <strong><see cref=\"T:SharpDX.MediaFoundation.AsyncResult\"/></strong> interface.</p><p>It is rare that you will need to write a custom implementation of the <strong><see cref=\"T:SharpDX.MediaFoundation.AsyncResult\"/></strong> interface. In almost all cases, the standard Media Foundation implementation is sufficient. (This implementation is returned by the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateAsyncResult(SharpDX.ComObject,SharpDX.MediaFoundation.AsyncCallback,SharpDX.ComObject,SharpDX.MediaFoundation.AsyncResult@)\"/></strong> function.) However, if you do write a custom implementation, there are some issues to be aware of.</p><p>First, your implementation must inherit the <strong><see cref=\"T:SharpDX.MediaFoundation.Mfasyncresult\"/></strong> structure. The Media Foundation work queues use this structure internally to dispatch the operation. Initialize all of the structure members to zero, except for the <strong>pCallback</strong> member, which contains a reference to the caller's callback interface.</p><p>Second, your object should call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.LockPlatform\"/></strong> in its constructor, to lock the Media Foundation platform. Call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.UnlockPlatform\"/></strong> to unlock the platform. These functions help to prevent the platform from shutting down before the object is destroyed. For more information, see Work Queues.</p><p>The following code shows a basic implementation of the <strong><see cref=\"T:SharpDX.MediaFoundation.AsyncResult\"/></strong> interface. As shown, this code provides no additional features beyond the standard Media Foundation implementation. </p><pre>///////////////////////////////////////////////////////////////////////////////\t\n            //  CMyAsyncResult\t\n            //\t\n            //  Custom implementation of <see cref=\"T:SharpDX.MediaFoundation.AsyncResult\"/>. All implementations of this \t\n            //  interface must inherit the <see cref=\"T:SharpDX.MediaFoundation.Mfasyncresult\"/> structure.\t\n            // \t\n            /////////////////////////////////////////////////////////////////////////////// class CMyAsyncResult : public <see cref=\"T:SharpDX.MediaFoundation.Mfasyncresult\"/>\t\n            {\t\n            protected: LONG        m_cRef;             // Reference count. <see cref=\"T:SharpDX.Bool\"/>        m_bLockPlatform;    // Locked the Media Foundation platform? <see cref=\"T:SharpDX.ComObject\"/>*   m_pState;           // Caller's state object.  <see cref=\"T:SharpDX.ComObject\"/>*   m_pObject;  // Optional object. See <see cref=\"M:SharpDX.MediaFoundation.AsyncResult.GetObjectW(SharpDX.ComObject@)\"/>. // Constructor.  CMyAsyncResult(<see cref=\"T:SharpDX.MediaFoundation.AsyncCallback\"/> *pCallback, <see cref=\"T:SharpDX.ComObject\"/> *pState, <see cref=\"T:SharpDX.Result\"/> *phr) : m_cRef(1), m_bLockPlatform(<see cref=\"F:SharpDX.Result.False\"/>), m_pObject(<c>null</c>), m_pState(pState) { *phr = <see cref=\"M:SharpDX.MediaFoundation.MediaFactory.LockPlatform\"/>(); m_bLockPlatform = TRUE; // Initialize the <see cref=\"T:SharpDX.MediaFoundation.Mfasyncresult\"/> members. ZeroMemory(&amp;this-&gt;overlapped, sizeof(OVERLAPPED)); hrStatusResult = <see cref=\"F:SharpDX.Result.Ok\"/>; dwBytesTransferred = 0; hEvent = <c>null</c>; this-&gt;pCallback = pCallback; if (pCallback) { this-&gt;pCallback-&gt;AddRef(); } if (m_pState) { m_pState-&gt;AddRef(); } } virtual ~CMyAsyncResult() { SafeRelease(&amp;pCallback); SafeRelease(&amp;m_pState); SafeRelease(&amp;m_pObject); if (m_bLockPlatform) { <see cref=\"M:SharpDX.MediaFoundation.MediaFactory.UnlockPlatform\"/>(); } } public: // Static method to create an instance of this object. static <see cref=\"T:SharpDX.Result\"/> CreateInstance( <see cref=\"T:SharpDX.MediaFoundation.AsyncCallback\"/> *pCallback,    // Callback to invoke. <see cref=\"T:SharpDX.ComObject\"/> *pState,               // Optional state object. CMyAsyncResult **ppResult       // Receives a reference to the object. ) { <see cref=\"T:SharpDX.Result\"/> hr = <see cref=\"F:SharpDX.Result.Ok\"/>; *ppResult = <c>null</c>; CMyAsyncResult *pResult =  new (std::nothrow) CMyAsyncResult(pCallback, pState, &amp;hr); if (pResult == <c>null</c>) { return E_OUTOFMEMORY; } if (FAILED(hr)) { delete pResult; return hr; } // If the callback is <c>null</c>, create an event that will be signaled. if (pCallback == <c>null</c>) { pResult-&gt;hEvent = CreateEvent(<c>null</c>, <see cref=\"F:SharpDX.Result.False\"/>, <see cref=\"F:SharpDX.Result.False\"/>, <c>null</c>); if (pResult-&gt;hEvent == <c>null</c>) { hr = HRESULT_FROM_WIN32(GetLastError()); } } if (SUCCEEDED(hr)) { *ppResult = pResult;  // Return the reference to the caller. } else { pResult-&gt;Release(); } return hr; } // SetObject: Sets the optional result object.  // (This method is not part of the interface.) <see cref=\"T:SharpDX.Result\"/> SetObject(<see cref=\"T:SharpDX.ComObject\"/> *pObject) { SafeRelease(&amp;m_pObject); m_pObject = pObject; if (pObject) { m_pObject-&gt;AddRef(); } return <see cref=\"F:SharpDX.Result.Ok\"/>; } // <see cref=\"T:SharpDX.ComObject\"/> methods. STDMETHODIMP QueryInterface(REFIID riid, void **ppv) { static const QITAB qit[] =  { QITABENT(CMyAsyncResult, <see cref=\"T:SharpDX.MediaFoundation.AsyncResult\"/>), { 0 } }; return QISearch(this, qit, riid, ppv); } STDMETHODIMP_(ULONG) AddRef() { return InterlockedIncrement(&amp;m_cRef); } STDMETHODIMP_(ULONG) Release() { LONG cRef = InterlockedDecrement(&amp;m_cRef); if (cRef == 0) { delete this; } return cRef; } // <see cref=\"T:SharpDX.MediaFoundation.AsyncResult\"/> methods. STDMETHODIMP GetState(<see cref=\"T:SharpDX.ComObject\"/>** ppunkState) { if (ppunkState == <c>null</c>) { return E_POINTER; } *ppunkState = m_pState; if (m_pState) { (*ppunkState)-&gt;AddRef(); } return <see cref=\"F:SharpDX.Result.Ok\"/>; } STDMETHODIMP GetStatus( void) { return hrStatusResult; } STDMETHODIMP STDMETHODCALLTYPE SetStatus(<see cref=\"T:SharpDX.Result\"/> hrStatus) { hrStatusResult = hrStatus; return <see cref=\"F:SharpDX.Result.Ok\"/>; } STDMETHODIMP GetObject(<see cref=\"T:SharpDX.ComObject\"/> **ppObject) { if (ppObject == <c>null</c>) { return E_POINTER; } *ppObject = m_pObject; if (m_pObject) { (*ppObject)-&gt;AddRef(); } return <see cref=\"F:SharpDX.Result.Ok\"/>; } <see cref=\"T:SharpDX.ComObject\"/>* STDMETHODCALLTYPE GetStateNoAddRef() { return m_pState;  // Warning! Can be <c>null</c>.  }\t\n            };\t\n            </pre>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFASYNCRESULT']/*\"/>\t\n            <msdn-id>aa370805</msdn-id>\t\n            <unmanaged>MFASYNCRESULT</unmanaged>\t\n            <unmanaged-short>MFASYNCRESULT</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Mfasyncresult.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.Mfasyncresult\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Mfasyncresult.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.Mfasyncresult\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.Mfasyncresult\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.NetCredential\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the password.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>If the password is not available, the method might succeed and set *<em>pcbData</em> to zero.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFNetCredential']/*\"/>\t\n            <msdn-id>ms702055</msdn-id>\t\n            <unmanaged>IMFNetCredential</unmanaged>\t\n            <unmanaged-short>IMFNetCredential</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.NetCredential.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.NetCredential\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.NetCredential.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.NetCredential\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.NetCredential\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.NetCredential.SetUser(System.Byte[],System.Int32,SharpDX.Bool)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Sets the user name.</p>\t\n            </summary>\t\n            <param name=\"bDataRef\"><dd> <p>Pointer to a buffer that contains the user name. If <em>fDataIsEncrypted</em> is <strong><see cref=\"F:SharpDX.Result.False\"/></strong>, the buffer is a wide-character string. Otherwise, the buffer contains encrypted data.</p> </dd></param>\t\n            <param name=\"cbData\"><dd> <p>Size of <em>pbData</em>, in bytes. If <em>fDataIsEncrypted</em> is <strong><see cref=\"F:SharpDX.Result.False\"/></strong>, the size includes the terminating null character.</p> </dd></param>\t\n            <param name=\"fDataIsEncrypted\"><dd> <p>If <strong>TRUE</strong>, the user name is encrypted. Otherwise, the user name is not encrypted.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFNetCredential::SetUser']/*\"/>\t\n            <msdn-id>ms693551</msdn-id>\t\n            <unmanaged>HRESULT IMFNetCredential::SetUser([In, Buffer] unsigned char* pbData,[In] unsigned int cbData,[In] BOOL fDataIsEncrypted)</unmanaged>\t\n            <unmanaged-short>IMFNetCredential::SetUser</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.NetCredential.SetPassword(System.Byte[],System.Int32,SharpDX.Bool)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Sets the password.</p>\t\n            </summary>\t\n            <param name=\"bDataRef\"><dd> <p>Pointer to a buffer that contains the password. If <em>fDataIsEncrypted</em> is <strong><see cref=\"F:SharpDX.Result.False\"/></strong>, the buffer is a wide-character string. Otherwise, the buffer contains encrypted data.</p> </dd></param>\t\n            <param name=\"cbData\"><dd> <p>Size of <em>pbData</em>, in bytes. If <em>fDataIsEncrypted</em> is <strong><see cref=\"F:SharpDX.Result.False\"/></strong>, the size includes the terminating null character.</p> </dd></param>\t\n            <param name=\"fDataIsEncrypted\"><dd> <p>If <strong>TRUE</strong>, the password is encrypted. Otherwise, the password is not encrypted.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFNetCredential::SetPassword']/*\"/>\t\n            <msdn-id>ms699838</msdn-id>\t\n            <unmanaged>HRESULT IMFNetCredential::SetPassword([In, Buffer] unsigned char* pbData,[In] unsigned int cbData,[In] BOOL fDataIsEncrypted)</unmanaged>\t\n            <unmanaged-short>IMFNetCredential::SetPassword</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.NetCredential.GetUser(System.Byte[],System.Int32@,SharpDX.Bool)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the user name.</p>\t\n            </summary>\t\n            <param name=\"bDataRef\"><dd> <p>Pointer to a buffer that receives the user name. To find the required buffer size, set this parameter to <strong><c>null</c></strong>. If <em>fEncryptData</em> is <strong><see cref=\"F:SharpDX.Result.False\"/></strong>, the buffer contains a wide-character string. Otherwise, the buffer contains encrypted data.</p> </dd></param>\t\n            <param name=\"cbDataRef\"><dd> <p>On input, specifies the size of the <em>pbData</em> buffer, in bytes. On output, receives the required buffer size. If <em>fEncryptData</em> is <strong><see cref=\"F:SharpDX.Result.False\"/></strong>, the size includes the terminating null character.</p> </dd></param>\t\n            <param name=\"fEncryptData\"><dd> <p>If <strong>TRUE</strong>, the method returns an encrypted string. Otherwise, the method returns an unencrypted string.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>If the user name is not available, the method might succeed and set *<em>pcbData</em> to zero.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFNetCredential::GetUser']/*\"/>\t\n            <msdn-id>ms694290</msdn-id>\t\n            <unmanaged>HRESULT IMFNetCredential::GetUser([Out, Buffer, Optional] unsigned char* pbData,[InOut] unsigned int* pcbData,[In] BOOL fEncryptData)</unmanaged>\t\n            <unmanaged-short>IMFNetCredential::GetUser</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.NetCredential.GetPassword(System.Byte[],System.Int32@,SharpDX.Bool)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the password.</p>\t\n            </summary>\t\n            <param name=\"bDataRef\"><dd> <p>Pointer to a buffer that receives the password. To find the required buffer size, set this parameter to <strong><c>null</c></strong>. If <em>fEncryptData</em> is <strong><see cref=\"F:SharpDX.Result.False\"/></strong>, the buffer contains a wide-character string. Otherwise, the buffer contains encrypted data.</p> </dd></param>\t\n            <param name=\"cbDataRef\"><dd> <p>On input, specifies the size of the <em>pbData</em> buffer, in bytes. On output, receives the required buffer size. If <em>fEncryptData</em> is <strong><see cref=\"F:SharpDX.Result.False\"/></strong>, the size includes the terminating null character.</p> </dd></param>\t\n            <param name=\"fEncryptData\"><dd> <p>If <strong>TRUE</strong>, the method returns an encrypted string. Otherwise, the method returns an unencrypted string.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>If the password is not available, the method might succeed and set *<em>pcbData</em> to zero.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFNetCredential::GetPassword']/*\"/>\t\n            <msdn-id>ms702055</msdn-id>\t\n            <unmanaged>HRESULT IMFNetCredential::GetPassword([Out, Buffer, Optional] unsigned char* pbData,[InOut] unsigned int* pcbData,[In] BOOL fEncryptData)</unmanaged>\t\n            <unmanaged-short>IMFNetCredential::GetPassword</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.NetCredential.LoggedOnUser(SharpDX.Bool@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Queries whether logged-on credentials should be used.</p>\t\n            </summary>\t\n            <param name=\"fLoggedOnUserRef\"><dd> <p>Receives a Boolean value. If logged-on credentials should be used, the value is <strong>TRUE</strong>. Otherwise, the value is <strong><see cref=\"F:SharpDX.Result.False\"/></strong>.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFNetCredential::LoggedOnUser']/*\"/>\t\n            <msdn-id>ms698960</msdn-id>\t\n            <unmanaged>HRESULT IMFNetCredential::LoggedOnUser([Out] BOOL* pfLoggedOnUser)</unmanaged>\t\n            <unmanaged-short>IMFNetCredential::LoggedOnUser</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.NetCredentialCache\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Specifies how user credentials are stored.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>If no flags are specified, the credentials are cached in memory. This method can be implemented by the credential manager and called by the network source.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFNetCredentialCache']/*\"/>\t\n            <msdn-id>ms693547</msdn-id>\t\n            <unmanaged>IMFNetCredentialCache</unmanaged>\t\n            <unmanaged-short>IMFNetCredentialCache</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.NetCredentialCache.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.NetCredentialCache\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.NetCredentialCache.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.NetCredentialCache\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.NetCredentialCache\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.NetCredentialCache.GetCredential(System.String,System.String,System.Int32,SharpDX.MediaFoundation.NetCredential@,System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the credential object for the specified URL.</p>\t\n            </summary>\t\n            <param name=\"szUrlRef\"><dd> <p>A null-terminated wide-character string containing the URL for which the credential is needed.</p> </dd></param>\t\n            <param name=\"szRealmRef\"><dd> <p>A null-terminated wide-character string containing the realm for the authentication.</p> </dd></param>\t\n            <param name=\"dwAuthenticationFlags\"><dd> <p>Bitwise <strong>OR</strong> of zero or more flags from the <strong><see cref=\"T:SharpDX.MediaFoundation.NetAuthenticationFlags\"/></strong> enumeration.</p> </dd></param>\t\n            <param name=\"credOut\"><dd> <p>Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.NetCredential\"/></strong> interface. The caller must release the interface.</p> </dd></param>\t\n            <param name=\"dwRequirementsFlagsRef\"><dd> <p>Receives a bitwise <strong>OR</strong> of zero or more flags from the <strong><see cref=\"T:SharpDX.MediaFoundation.NetCredentialRequirements\"/></strong> enumeration.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFNetCredentialCache::GetCredential']/*\"/>\t\n            <msdn-id>ms699842</msdn-id>\t\n            <unmanaged>HRESULT IMFNetCredentialCache::GetCredential([In] const wchar_t* pszUrl,[In] const wchar_t* pszRealm,[In] unsigned int dwAuthenticationFlags,[Out] IMFNetCredential** ppCred,[Out] unsigned int* pdwRequirementsFlags)</unmanaged>\t\n            <unmanaged-short>IMFNetCredentialCache::GetCredential</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.NetCredentialCache.SetGood(SharpDX.MediaFoundation.NetCredential,SharpDX.Bool)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Reports whether the credential object provided successfully passed the authentication challenge.</p>\t\n            </summary>\t\n            <param name=\"credRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.NetCredential\"/></strong> interface.</p> </dd></param>\t\n            <param name=\"fGood\"><dd> <p><strong>TRUE</strong> if the credential object succeeded in the authentication challenge; otherwise, <strong><see cref=\"F:SharpDX.Result.False\"/></strong>.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>This method is called by the network source into the credential manager.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFNetCredentialCache::SetGood']/*\"/>\t\n            <msdn-id>ms704649</msdn-id>\t\n            <unmanaged>HRESULT IMFNetCredentialCache::SetGood([In] IMFNetCredential* pCred,[In] BOOL fGood)</unmanaged>\t\n            <unmanaged-short>IMFNetCredentialCache::SetGood</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.NetCredentialCache.SetUserOptions(SharpDX.MediaFoundation.NetCredential,System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Specifies how user credentials are stored.</p>\t\n            </summary>\t\n            <param name=\"credRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.NetCredential\"/></strong> interface. Obtain this reference by calling <strong><see cref=\"M:SharpDX.MediaFoundation.NetCredentialCache.GetCredential(System.String,System.String,System.Int32,SharpDX.MediaFoundation.NetCredential@,System.Int32@)\"/></strong>.</p> </dd></param>\t\n            <param name=\"dwOptionsFlags\"><dd> <p>Bitwise <strong>OR</strong> of zero or more flags from the <strong><see cref=\"T:SharpDX.MediaFoundation.NetCredentialOptions\"/></strong> enumeration.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>If no flags are specified, the credentials are cached in memory. This method can be implemented by the credential manager and called by the network source.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFNetCredentialCache::SetUserOptions']/*\"/>\t\n            <msdn-id>ms693547</msdn-id>\t\n            <unmanaged>HRESULT IMFNetCredentialCache::SetUserOptions([In] IMFNetCredential* pCred,[In] unsigned int dwOptionsFlags)</unmanaged>\t\n            <unmanaged-short>IMFNetCredentialCache::SetUserOptions</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.NetCredentialManager\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Implemented by applications to provide user credentials for a network source.</p><p>To use this interface, implement it in your application. Then create a property store object and set the <strong>MFNETSOURCE_CREDENTIAL_MANAGER</strong> property. The value of the property is a reference to your application's <strong><see cref=\"T:SharpDX.MediaFoundation.NetCredentialManager\"/></strong> interface. Then pass the property store to one of the source resolver's creation functions, such as <strong><see cref=\"M:SharpDX.MediaFoundation.SourceResolver.CreateObjectFromURL(System.String,System.Int32,SharpDX.ComObject,SharpDX.MediaFoundation.ObjectType@,SharpDX.ComObject@)\"/></strong>, in the <em>pProps</em> parameter.</p><p>Media Foundation does not provide a default implementation of this interface. Applications that support authentication must implement this interface.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFNetCredentialManager']/*\"/>\t\n            <msdn-id>ms693499</msdn-id>\t\n            <unmanaged>IMFNetCredentialManager</unmanaged>\t\n            <unmanaged-short>IMFNetCredentialManager</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.NetCredentialManager.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.NetCredentialManager\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.NetCredentialManager.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.NetCredentialManager\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.NetCredentialManager\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.NetCredentialManager.BeginGetCredentials(SharpDX.MediaFoundation.NetCredentialManagerGetParam@,SharpDX.MediaFoundation.AsyncCallback,SharpDX.ComObject)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Begins an asynchronous request to retrieve the user's credentials.</p>\t\n            </summary>\t\n            <param name=\"paramRef\"><dd> <p>Pointer to an <strong><see cref=\"T:SharpDX.MediaFoundation.NetCredentialManagerGetParam\"/></strong> structure.</p> </dd></param>\t\n            <param name=\"callbackRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.AsyncCallback\"/></strong> interface of a callback object. The caller must implement this interface.</p> </dd></param>\t\n            <param name=\"stateRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interface of a state object, defined by the caller. This parameter can be <strong><c>null</c></strong>. The object is returned to the caller when the callback is invoked.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFNetCredentialManager::BeginGetCredentials']/*\"/>\t\n            <msdn-id>ms705663</msdn-id>\t\n            <unmanaged>HRESULT IMFNetCredentialManager::BeginGetCredentials([In] MFNetCredentialManagerGetParam* pParam,[In] IMFAsyncCallback* pCallback,[In] IUnknown* pState)</unmanaged>\t\n            <unmanaged-short>IMFNetCredentialManager::BeginGetCredentials</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.NetCredentialManager.EndGetCredentials(SharpDX.MediaFoundation.AsyncResult,SharpDX.MediaFoundation.NetCredential@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Completes an asynchronous request to retrieve the user's credentials.</p>\t\n            </summary>\t\n            <param name=\"resultRef\"><dd> <p>Pointer to an <strong><see cref=\"T:SharpDX.MediaFoundation.AsyncResult\"/></strong> interface that contains the asynchronous result.</p> </dd></param>\t\n            <param name=\"credOut\"><dd> <p>Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.NetCredential\"/></strong> interface, which is used to retrieve the credentials. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFNetCredentialManager::EndGetCredentials']/*\"/>\t\n            <msdn-id>ms701589</msdn-id>\t\n            <unmanaged>HRESULT IMFNetCredentialManager::EndGetCredentials([In] IMFAsyncResult* pResult,[Out] IMFNetCredential** ppCred)</unmanaged>\t\n            <unmanaged-short>IMFNetCredentialManager::EndGetCredentials</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.NetCredentialManager.SetGood(SharpDX.MediaFoundation.NetCredential,SharpDX.Bool)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Specifies whether the user's credentials succeeded in the authentication challenge. The network source calls this method to informs the application whether the user's credentials were authenticated.</p>\t\n            </summary>\t\n            <param name=\"credRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.NetCredential\"/></strong> interface.</p> </dd></param>\t\n            <param name=\"fGood\"><dd> <p>Boolean value. The value is <strong>TRUE</strong> if the credentials succeeded in the authentication challenge. Otherwise, the value is <strong><see cref=\"F:SharpDX.Result.False\"/></strong>.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFNetCredentialManager::SetGood']/*\"/>\t\n            <msdn-id>ms705614</msdn-id>\t\n            <unmanaged>HRESULT IMFNetCredentialManager::SetGood([In] IMFNetCredential* pCred,[In] BOOL fGood)</unmanaged>\t\n            <unmanaged-short>IMFNetCredentialManager::SetGood</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.NetProxyLocator\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Determines the next proxy to use.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFNetProxyLocator']/*\"/>\t\n            <msdn-id>ms700807</msdn-id>\t\n            <unmanaged>IMFNetProxyLocator</unmanaged>\t\n            <unmanaged-short>IMFNetProxyLocator</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.NetProxyLocator.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.NetProxyLocator\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.NetProxyLocator.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.NetProxyLocator\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.NetProxyLocator\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.NetProxyLocator.FindFirstProxy(System.String,System.String,SharpDX.Bool)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Initializes the proxy locator object.</p>\t\n            </summary>\t\n            <param name=\"szHostRef\"><dd> <p>Null-terminated wide-character string containing the hostname of the destination server.</p> </dd></param>\t\n            <param name=\"szUrlRef\"><dd> <p>Null-terminated wide-character string containing the destination URL.</p> </dd></param>\t\n            <param name=\"fReserved\"><dd> <p>Reserved. Set to <strong><see cref=\"F:SharpDX.Result.False\"/></strong>.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFNetProxyLocator::FindFirstProxy']/*\"/>\t\n            <msdn-id>ms697016</msdn-id>\t\n            <unmanaged>HRESULT IMFNetProxyLocator::FindFirstProxy([In] const wchar_t* pszHost,[In] const wchar_t* pszUrl,[In] BOOL fReserved)</unmanaged>\t\n            <unmanaged-short>IMFNetProxyLocator::FindFirstProxy</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.NetProxyLocator.FindNextProxy\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Determines the next proxy to use.</p>\t\n            </summary>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong>S_FALSE</strong></dt> </dl> </td><td> <p>There are no more proxy objects.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFNetProxyLocator::FindNextProxy']/*\"/>\t\n            <msdn-id>ms700807</msdn-id>\t\n            <unmanaged>HRESULT IMFNetProxyLocator::FindNextProxy()</unmanaged>\t\n            <unmanaged-short>IMFNetProxyLocator::FindNextProxy</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.NetProxyLocator.RegisterProxyResult(SharpDX.Result)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Keeps a record of the success or failure of using the current proxy.</p>\t\n            </summary>\t\n            <param name=\"hrOp\"><dd> <p><strong><see cref=\"T:SharpDX.Result\"/></strong> specifying the result of using the current proxy for connection.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFNetProxyLocator::RegisterProxyResult']/*\"/>\t\n            <msdn-id>ms696180</msdn-id>\t\n            <unmanaged>HRESULT IMFNetProxyLocator::RegisterProxyResult([In] HRESULT hrOp)</unmanaged>\t\n            <unmanaged-short>IMFNetProxyLocator::RegisterProxyResult</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.NetProxyLocator.GetCurrentProxy(System.IntPtr,System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the current proxy information including hostname and port.</p>\t\n            </summary>\t\n            <param name=\"szStrRef\"><dd> <p>Pointer to a buffer that receives a null-terminated string containing the proxy hostname and port. This parameter can be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"cchStrRef\"><dd> <p>On input, specifies the number of elements in the <em>pszStr</em> array. On output, receives the required size of the buffer.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong>E_NOT_SUFFICIENT_BUFFER</strong></dt> </dl> </td><td> <p>The buffer specified in <em>pszStr</em> is too small.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFNetProxyLocator::GetCurrentProxy']/*\"/>\t\n            <msdn-id>ms697327</msdn-id>\t\n            <unmanaged>HRESULT IMFNetProxyLocator::GetCurrentProxy([Out, Buffer, Optional] wchar_t* pszStr,[In] unsigned int* pcchStr)</unmanaged>\t\n            <unmanaged-short>IMFNetProxyLocator::GetCurrentProxy</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.NetProxyLocator.Clone(SharpDX.MediaFoundation.NetProxyLocator@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Creates a new instance of the default proxy locator.</p>\t\n            </summary>\t\n            <param name=\"proxyLocatorOut\"><dd> <p>Receives a reference to the new proxy locator object's <strong><see cref=\"T:SharpDX.MediaFoundation.NetProxyLocator\"/></strong> interface. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFNetProxyLocator::Clone']/*\"/>\t\n            <msdn-id>ms697210</msdn-id>\t\n            <unmanaged>HRESULT IMFNetProxyLocator::Clone([In] IMFNetProxyLocator** ppProxyLocator)</unmanaged>\t\n            <unmanaged-short>IMFNetProxyLocator::Clone</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.NetProxyLocatorFactory\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Creates a proxy locator object, which determines the proxy to use.</p><p>The network source uses this interface to create the proxy locator object. Applications can provide their own implementation of this interface by setting the <strong>MFNETSOURCE_PROXYLOCATORFACTORY</strong> property. on the source resolver. If the application does not set this property, the network source uses the default proxy locator provided by Media Foundation.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFNetProxyLocatorFactory']/*\"/>\t\n            <msdn-id>ms698907</msdn-id>\t\n            <unmanaged>IMFNetProxyLocatorFactory</unmanaged>\t\n            <unmanaged-short>IMFNetProxyLocatorFactory</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.NetProxyLocatorFactory.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.NetProxyLocatorFactory\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.NetProxyLocatorFactory.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.NetProxyLocatorFactory\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.NetProxyLocatorFactory\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.NetProxyLocatorFactory.CreateProxyLocator(System.String,SharpDX.MediaFoundation.NetProxyLocator@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Creates an <strong><see cref=\"T:SharpDX.MediaFoundation.NetProxyLocator\"/></strong> interface proxy locator object based on the protocol name.</p>\t\n            </summary>\t\n            <param name=\"szProtocolRef\">No documentation.</param>\t\n            <param name=\"proxyLocatorOut\">No documentation.</param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFNetProxyLocatorFactory::CreateProxyLocator']/*\"/>\t\n            <msdn-id>ms694154</msdn-id>\t\n            <unmanaged>HRESULT IMFNetProxyLocatorFactory::CreateProxyLocator([In] const wchar_t* pszProtocol,[Out] IMFNetProxyLocator** ppProxyLocator)</unmanaged>\t\n            <unmanaged-short>IMFNetProxyLocatorFactory::CreateProxyLocator</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.NetSchemeHandlerConfig\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves a supported protocol by index</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFNetSchemeHandlerConfig']/*\"/>\t\n            <msdn-id>ms697058</msdn-id>\t\n            <unmanaged>IMFNetSchemeHandlerConfig</unmanaged>\t\n            <unmanaged-short>IMFNetSchemeHandlerConfig</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.NetSchemeHandlerConfig.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.NetSchemeHandlerConfig\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.NetSchemeHandlerConfig.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.NetSchemeHandlerConfig\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.NetSchemeHandlerConfig\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.NetSchemeHandlerConfig.GetNumberOfSupportedProtocols(System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the number of protocols supported by the network scheme plug-in.</p>\t\n            </summary>\t\n            <param name=\"cProtocolsRef\"><dd> <p>Receives the number of protocols.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFNetSchemeHandlerConfig::GetNumberOfSupportedProtocols']/*\"/>\t\n            <msdn-id>ms701625</msdn-id>\t\n            <unmanaged>HRESULT IMFNetSchemeHandlerConfig::GetNumberOfSupportedProtocols([Out] unsigned int* pcProtocols)</unmanaged>\t\n            <unmanaged-short>IMFNetSchemeHandlerConfig::GetNumberOfSupportedProtocols</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.NetSchemeHandlerConfig.GetSupportedProtocolType(System.Int32,SharpDX.MediaFoundation.NetsourceProtocolType@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves a supported protocol by index</p>\t\n            </summary>\t\n            <param name=\"nProtocolIndex\"><dd> <p>Zero-based index of the protocol to retrieve. To get the number of supported protocols, call <strong><see cref=\"M:SharpDX.MediaFoundation.NetSchemeHandlerConfig.GetNumberOfSupportedProtocols(System.Int32@)\"/></strong>.</p> </dd></param>\t\n            <param name=\"nProtocolTypeRef\"><dd> <p>Receives a member of the <strong><see cref=\"T:SharpDX.MediaFoundation.NetsourceProtocolType\"/></strong> enumeration.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong>E_INVALIDARG</strong></dt> </dl> </td><td> <p>The value passed in the <em>nProtocolIndex</em> parameter was greater than the total number of supported protocols, returned by <strong>GetNumberOfSupportedProtocols</strong>.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFNetSchemeHandlerConfig::GetSupportedProtocolType']/*\"/>\t\n            <msdn-id>ms697058</msdn-id>\t\n            <unmanaged>HRESULT IMFNetSchemeHandlerConfig::GetSupportedProtocolType([In] unsigned int nProtocolIndex,[Out] MFNETSOURCE_PROTOCOL_TYPE* pnProtocolType)</unmanaged>\t\n            <unmanaged-short>IMFNetSchemeHandlerConfig::GetSupportedProtocolType</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.NetSchemeHandlerConfig.ResetProtocolRolloverSettings\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Not implemented in this release.</p>\t\n            </summary>\t\n            <returns><p>This method returns <see cref=\"F:SharpDX.Result.Ok\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFNetSchemeHandlerConfig::ResetProtocolRolloverSettings']/*\"/>\t\n            <msdn-id>ms705604</msdn-id>\t\n            <unmanaged>HRESULT IMFNetSchemeHandlerConfig::ResetProtocolRolloverSettings()</unmanaged>\t\n            <unmanaged-short>IMFNetSchemeHandlerConfig::ResetProtocolRolloverSettings</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.NetSchemeHandlerConfig.NumberOfSupportedProtocols\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the number of protocols supported by the network scheme plug-in.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFNetSchemeHandlerConfig::GetNumberOfSupportedProtocols']/*\"/>\t\n            <msdn-id>ms701625</msdn-id>\t\n            <unmanaged>GetNumberOfSupportedProtocols</unmanaged>\t\n            <unmanaged-short>GetNumberOfSupportedProtocols</unmanaged-short>\t\n            <unmanaged>HRESULT IMFNetSchemeHandlerConfig::GetNumberOfSupportedProtocols([Out] unsigned int* pcProtocols)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.ObjectReferenceStream\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Stores the data needed to marshal an interface across a process boundary.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFObjectReferenceStream']/*\"/>\t\n            <msdn-id>ms698988</msdn-id>\t\n            <unmanaged>IMFObjectReferenceStream</unmanaged>\t\n            <unmanaged-short>IMFObjectReferenceStream</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ObjectReferenceStream.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.ObjectReferenceStream\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ObjectReferenceStream.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.ObjectReferenceStream\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.ObjectReferenceStream\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ObjectReferenceStream.SaveReference(System.Guid,SharpDX.ComObject)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Stores the data needed to marshal an interface across a process boundary.</p>\t\n            </summary>\t\n            <param name=\"riid\"><dd> <p>Interface identifier of the interface to marshal.</p> </dd></param>\t\n            <param name=\"unkRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interface.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFObjectReferenceStream::SaveReference']/*\"/>\t\n            <msdn-id>ms698988</msdn-id>\t\n            <unmanaged>HRESULT IMFObjectReferenceStream::SaveReference([In] const GUID&amp; riid,[In] IUnknown* pUnk)</unmanaged>\t\n            <unmanaged-short>IMFObjectReferenceStream::SaveReference</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ObjectReferenceStream.LoadReference(System.Guid,System.IntPtr)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Marshals an interface from data stored in the stream.</p>\t\n            </summary>\t\n            <param name=\"riid\"><dd> <p>Interface identifier of the interface to marshal.</p> </dd></param>\t\n            <param name=\"vOut\"><dd> <p>Receives a reference to the requested interface. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFObjectReferenceStream::LoadReference']/*\"/>\t\n            <msdn-id>ms705636</msdn-id>\t\n            <unmanaged>HRESULT IMFObjectReferenceStream::LoadReference([In] const GUID&amp; riid,[In] void** ppv)</unmanaged>\t\n            <unmanaged-short>IMFObjectReferenceStream::LoadReference</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.OutputPolicy\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Encapsulates a usage policy from an input trust authority (ITA). Output trust authorities (OTAs) use this interface to query which protection systems they are required to enforce by the ITA.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFOutputPolicy']/*\"/>\t\n            <msdn-id>ms698985</msdn-id>\t\n            <unmanaged>IMFOutputPolicy</unmanaged>\t\n            <unmanaged-short>IMFOutputPolicy</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.OutputPolicy.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.OutputPolicy\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.OutputPolicy.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.OutputPolicy\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.OutputPolicy\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.OutputPolicy.GenerateRequiredSchemas(System.Int32,System.Guid,System.Guid,System.Int32,SharpDX.MediaFoundation.Collection@)\">\n            <summary>\t\n            <p>Retrieves a list of the output protection systems that the output trust authority (OTA) must enforce, along with configuration data for each protection system. </p>  <see cref=\"T:SharpDX.Result\"/> GenerateRequiredSchemas( DWORD  dwAttributes, <see cref=\"T:System.Guid\"/>  guidOutputSubType, <see cref=\"T:System.Guid\"/>*  rgGuidProtectionSchemasSupported, DWORD  cProtectionSchemasSupported, <see cref=\"T:SharpDX.MediaFoundation.Collection\"/>**  ppRequiredProtectionSchemas\t\n            );<p></p>Parameters <p> dwAttributes </p> <p>[in]  Describes the output that is represented by the OTA calling this method. This value is a bitwise OR of zero or more of the following flags.</p> <table><tr> <th> Value </th> <th> Description </th> </tr><tr> <td> <p>MFOUTPUTATTRIBUTE_BUS</p> </td> <td> <p>Hardware bus.</p> </td> </tr><tr> <td> <p>MFOUTPUTATTRIBUTE_COMPRESSED</p> </td> <td> <p>The output sends compressed data. If this flag is absent, the output sends uncompressed data.</p> </td> </tr><tr> <td> <p>MFOUTPUTATTRIBUTE_BUSIMPLEMENTATION</p> </td> <td> <p>Reserved. Do not use.</p> </td> </tr><tr> <td> <p>MFOUTPUTATTRIBUTE_DIGITAL</p> </td> <td> <p>The output sends a digital signal. If this flag is absent, the output sends an analog signal.</p> </td> </tr><tr> <td> <p>MFOUTPUTATTRIBUTE_NONSTANDARDIMPLEMENTATION</p> </td> <td> <p>Reserved. Do not use.</p> </td> </tr><tr> <td> <p>MFOUTPUTATTRIBUTE_SOFTWARE</p> </td> <td> <p>Reserved. Do not use.</p> </td> </tr><tr> <td> <p>MFOUTPUTATTRIBUTE_VIDEO</p> </td> <td> <p>The output sends video data. If this flag is absent, the output sends audio data.</p> </td> </tr></table> <p> guidOutputSubType </p> <p>[in]  Indicates a specific family of output connectors that is represented by the OTA calling this method. Possible values include the following.</p> <table><tr> <th> Value </th> <th> Description </th> </tr><tr> <td> <p>MFCONNECTOR_AGP</p> </td> <td> <p>AGP bus.</p> </td> </tr><tr> <td> <p>MFCONNECTOR_COMPONENT</p> </td> <td> <p>Component video.</p> </td> </tr><tr> <td> <p>MFCONNECTOR_COMPOSITE</p> </td> <td> <p>Composite video.</p> </td> </tr><tr> <td> <p>MFCONNECTOR_D_JPN</p> </td> <td> <p>Japanese D connector. (Connector conforming to the EIAJ RC-5237 standard.)</p> </td> </tr><tr> <td> <p>MFCONNECTOR_DISPLAYPORT_EMBEDDED</p> </td> <td> <p>Embedded DisplayPort connector.</p> </td> </tr><tr> <td> <p>MFCONNECTOR_DISPLAYPORT_EXTERNAL</p> </td> <td> <p>External DisplayPort connector.</p> </td> </tr><tr> <td> <p>MFCONNECTOR_DVI</p> </td> <td> <p>Digital video interface (DVI) connector.</p> </td> </tr><tr> <td> <p>MFCONNECTOR_HDMI</p> </td> <td> <p>High-definition multimedia interface (HDMI) connector.</p> </td> </tr><tr> <td> <p>MFCONNECTOR_LVDS</p> </td> <td> <p>Low voltage differential signaling (LVDS) connector.</p> </td> </tr><tr> <td> <p>MFCONNECTOR_PCI</p> </td> <td> <p>PCI bus.</p> </td> </tr><tr> <td> <p>MFCONNECTOR_PCI_Express</p> </td> <td> <p>PCI Express bus.</p> </td> </tr><tr> <td> <p>MFCONNECTOR_PCIX</p> </td> <td> <p>PCI-X bus.</p> </td> </tr><tr> <td> <p>MFCONNECTOR_SPDIF</p> </td> <td> <p>Audio data sent over a connector via S/PDIF.</p> </td> </tr><tr> <td> <p>MFCONNECTOR_SVIDEO</p> </td> <td> <p>S-Video connector.</p> </td> </tr><tr> <td> <p>MFCONNECTOR_UDI_EMBEDDED</p> </td> <td> <p>Embedded Unified Display Interface (UDI).</p> </td> </tr><tr> <td> <p>MFCONNECTOR_UDI_EXTERNAL</p> </td> <td> <p>External UDI.</p> </td> </tr><tr> <td> <p>MFCONNECTOR_UNKNOWN</p> </td> <td> <p>Unknown connector type. You can use this value to initialize variables, but it is not a valid connector type.</p> </td> </tr><tr> <td> <p>MFCONNECTOR_VGA</p> </td> <td> <p>VGA connector.</p> </td> </tr></table> <p> rgGuidProtectionSchemasSupported </p> <p>[in]  Pointer to an array of <see cref=\"T:System.Guid\"/> values that specify which output protection systems are supported by the OTA that is calling this method.</p> <p> cProtectionSchemasSupported </p> <p>[in]  Number of elements in the rgGuidProtectionSchemasSupported array.</p> <p> ppRequiredProtectionSchemas </p> <p>[out]  Receives a reference to the <see cref=\"T:SharpDX.MediaFoundation.Collection\"/> Interface of a collection object. The caller must release the interface. Each object in the collection is an <see cref=\"T:SharpDX.MediaFoundation.OutputSchema\"/> Interface reference. Each <see cref=\"T:SharpDX.MediaFoundation.OutputSchema\"/> interface reference defines an output protection system that the OTA must enforce.</p>  <p>The method returns an <see cref=\"T:SharpDX.Result\"/>. Possible values include, but are not limited to, those in the following table.</p> <table><tr> <th> Return code </th> <th> Description </th> </tr><tr> <td> <p><see cref=\"F:SharpDX.Result.Ok\"/></p> </td> <td> <p>The method succeeded.</p> </td> </tr></table>  <p> Client: Requires Windows Vista.</p> <p> Header: Include mfidl.h.</p> <p> Library: Use mfuuid.lib.</p> ReferenceIMFOutputPolicy Interface\t\n            </summary>\t\n            <param name=\"dwAttributes\">No documentation.</param>\t\n            <param name=\"guidOutputSubType\">No documentation.</param>\t\n            <param name=\"rgGuidProtectionSchemasSupported\">No documentation.</param>\t\n            <param name=\"cProtectionSchemasSupported\">No documentation.</param>\t\n            <param name=\"requiredProtectionSchemasOut\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFOutputPolicy::GenerateRequiredSchemas']/*\"/>\t\n            <msdn-id>ms703788</msdn-id>\t\n            <unmanaged>HRESULT IMFOutputPolicy::GenerateRequiredSchemas([In] unsigned int dwAttributes,[In] GUID guidOutputSubType,[In] GUID* rgGuidProtectionSchemasSupported,[In] unsigned int cProtectionSchemasSupported,[Out] IMFCollection** ppRequiredProtectionSchemas)</unmanaged>\t\n            <unmanaged-short>IMFOutputPolicy::GenerateRequiredSchemas</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.OutputPolicy.GetOriginatorID(System.Guid@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieives a <see cref=\"T:System.Guid\"/> identifying the input trust authority (ITA) that created this output policy object.</p>\t\n            </summary>\t\n            <param name=\"guidOriginatorIDRef\"><dd> <p>Receives a <see cref=\"T:System.Guid\"/> that identifies the originating ITA.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>All of the policy objects and output schemas from the same ITA should return the same originator identifier (including dynamic policy changes). This value enables the OTA to distinguish policies that originate from different ITAs, so that the OTA can update dynamic policies correctly.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFOutputPolicy::GetOriginatorID']/*\"/>\t\n            <msdn-id>bb970379</msdn-id>\t\n            <unmanaged>HRESULT IMFOutputPolicy::GetOriginatorID([Out] GUID* pguidOriginatorID)</unmanaged>\t\n            <unmanaged-short>IMFOutputPolicy::GetOriginatorID</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.OutputPolicy.GetMinimumGRLVersion(System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves the minimum version of the global revocation list (GRL) that must be enforced by the protected environment for this policy.</p>\t\n            </summary>\t\n            <param name=\"dwMinimumGRLVersionRef\"><dd> <p>Receives the minimum GRL version.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFOutputPolicy::GetMinimumGRLVersion']/*\"/>\t\n            <msdn-id>bb970389</msdn-id>\t\n            <unmanaged>HRESULT IMFOutputPolicy::GetMinimumGRLVersion([Out] unsigned int* pdwMinimumGRLVersion)</unmanaged>\t\n            <unmanaged-short>IMFOutputPolicy::GetMinimumGRLVersion</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.OutputPolicy.OriginatorID\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieives a <see cref=\"T:System.Guid\"/> identifying the input trust authority (ITA) that created this output policy object.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>All of the policy objects and output schemas from the same ITA should return the same originator identifier (including dynamic policy changes). This value enables the OTA to distinguish policies that originate from different ITAs, so that the OTA can update dynamic policies correctly.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFOutputPolicy::GetOriginatorID']/*\"/>\t\n            <msdn-id>bb970379</msdn-id>\t\n            <unmanaged>GetOriginatorID</unmanaged>\t\n            <unmanaged-short>GetOriginatorID</unmanaged-short>\t\n            <unmanaged>HRESULT IMFOutputPolicy::GetOriginatorID([Out] GUID* pguidOriginatorID)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.OutputPolicy.MinimumGRLVersion\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves the minimum version of the global revocation list (GRL) that must be enforced by the protected environment for this policy.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFOutputPolicy::GetMinimumGRLVersion']/*\"/>\t\n            <msdn-id>bb970389</msdn-id>\t\n            <unmanaged>GetMinimumGRLVersion</unmanaged>\t\n            <unmanaged-short>GetMinimumGRLVersion</unmanaged-short>\t\n            <unmanaged>HRESULT IMFOutputPolicy::GetMinimumGRLVersion([Out] unsigned int* pdwMinimumGRLVersion)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.OutputSchema\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Encapsulates information about an output protection system and its corresponding configuration data.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>If the configuration information for the output protection system does not require more than a <strong>DWORD</strong> of space, the configuration information is retrieved in the <strong>GetConfigurationData</strong> method. If more than a <strong>DWORD</strong> of configuration information is needed, it is stored using the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaAttributes\"/></strong> interface.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFOutputSchema']/*\"/>\t\n            <msdn-id>ms703800</msdn-id>\t\n            <unmanaged>IMFOutputSchema</unmanaged>\t\n            <unmanaged-short>IMFOutputSchema</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.OutputSchema.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.OutputSchema\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.OutputSchema.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.OutputSchema\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.OutputSchema\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.OutputSchema.GetSchemaType(System.Guid@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves the output protection system that is represented by this object. Output protection systems are identified by <see cref=\"T:System.Guid\"/> value.</p>\t\n            </summary>\t\n            <param name=\"guidSchemaTypeRef\"><dd> <p>Receives the <see cref=\"T:System.Guid\"/> that identifies the output protection system.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFOutputSchema::GetSchemaType']/*\"/>\t\n            <msdn-id>bb970414</msdn-id>\t\n            <unmanaged>HRESULT IMFOutputSchema::GetSchemaType([Out] GUID* pguidSchemaType)</unmanaged>\t\n            <unmanaged-short>IMFOutputSchema::GetSchemaType</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.OutputSchema.GetConfigurationData(System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Returns configuration data for the output protection system. The configuration data is used to enable or disable the protection system, and to set the protection levels.</p>\t\n            </summary>\t\n            <param name=\"dwValRef\"><dd> <p>Receives the configuration data. The meaning of this data depends on the output protection system.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFOutputSchema::GetConfigurationData']/*\"/>\t\n            <msdn-id>bb970364</msdn-id>\t\n            <unmanaged>HRESULT IMFOutputSchema::GetConfigurationData([Out] unsigned int* pdwVal)</unmanaged>\t\n            <unmanaged-short>IMFOutputSchema::GetConfigurationData</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.OutputSchema.GetOriginatorID(System.Guid@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves a <see cref=\"T:System.Guid\"/> identifying the input trust authority (ITA) that generated this output schema object.</p>\t\n            </summary>\t\n            <param name=\"guidOriginatorIDRef\"><dd> <p>Receives a <see cref=\"T:System.Guid\"/> that identifies the originating ITA.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>All of the policy objects and output schemas from the same ITA should return the same originator identifier (including dynamic policy changes). This value enables the OTA to distinguish policies that originate from different ITAs, so that the OTA can update dynamic policies correctly.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFOutputSchema::GetOriginatorID']/*\"/>\t\n            <msdn-id>bb970483</msdn-id>\t\n            <unmanaged>HRESULT IMFOutputSchema::GetOriginatorID([Out] GUID* pguidOriginatorID)</unmanaged>\t\n            <unmanaged-short>IMFOutputSchema::GetOriginatorID</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.OutputSchema.SchemaType\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves the output protection system that is represented by this object. Output protection systems are identified by <see cref=\"T:System.Guid\"/> value.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFOutputSchema::GetSchemaType']/*\"/>\t\n            <msdn-id>bb970414</msdn-id>\t\n            <unmanaged>GetSchemaType</unmanaged>\t\n            <unmanaged-short>GetSchemaType</unmanaged-short>\t\n            <unmanaged>HRESULT IMFOutputSchema::GetSchemaType([Out] GUID* pguidSchemaType)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.OutputSchema.ConfigurationData\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Returns configuration data for the output protection system. The configuration data is used to enable or disable the protection system, and to set the protection levels.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFOutputSchema::GetConfigurationData']/*\"/>\t\n            <msdn-id>bb970364</msdn-id>\t\n            <unmanaged>GetConfigurationData</unmanaged>\t\n            <unmanaged-short>GetConfigurationData</unmanaged-short>\t\n            <unmanaged>HRESULT IMFOutputSchema::GetConfigurationData([Out] unsigned int* pdwVal)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.OutputSchema.OriginatorID\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves a <see cref=\"T:System.Guid\"/> identifying the input trust authority (ITA) that generated this output schema object.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>All of the policy objects and output schemas from the same ITA should return the same originator identifier (including dynamic policy changes). This value enables the OTA to distinguish policies that originate from different ITAs, so that the OTA can update dynamic policies correctly.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFOutputSchema::GetOriginatorID']/*\"/>\t\n            <msdn-id>bb970483</msdn-id>\t\n            <unmanaged>GetOriginatorID</unmanaged>\t\n            <unmanaged-short>GetOriginatorID</unmanaged-short>\t\n            <unmanaged>HRESULT IMFOutputSchema::GetOriginatorID([Out] GUID* pguidOriginatorID)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.OutputTrustAuthority\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Encapsulates the functionality of one or more output protection systems that a trusted output supports. This interface is exposed by output trust authority (OTA) objects. Each OTA represents a single action that the trusted output can perform, such as play, copy, or transcode. An OTA can represent more than one physical output if each output performs the same action.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFOutputTrustAuthority']/*\"/>\t\n            <msdn-id>ms695254</msdn-id>\t\n            <unmanaged>IMFOutputTrustAuthority</unmanaged>\t\n            <unmanaged-short>IMFOutputTrustAuthority</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.OutputTrustAuthority.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.OutputTrustAuthority\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.OutputTrustAuthority.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.OutputTrustAuthority\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.OutputTrustAuthority\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.OutputTrustAuthority.GetAction(SharpDX.MediaFoundation.PolicymanagerAction@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves the action that is performed by this output trust authority (OTA).</p>\t\n            </summary>\t\n            <param name=\"actionRef\"><dd> <p>Receives a member of the <see cref=\"T:SharpDX.MediaFoundation.PolicymanagerAction\"/> enumeration.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFOutputTrustAuthority::GetAction']/*\"/>\t\n            <msdn-id>bb970410</msdn-id>\t\n            <unmanaged>HRESULT IMFOutputTrustAuthority::GetAction([Out] MFPOLICYMANAGER_ACTION* pAction)</unmanaged>\t\n            <unmanaged-short>IMFOutputTrustAuthority::GetAction</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.OutputTrustAuthority.SetPolicy(SharpDX.MediaFoundation.OutputPolicy[],System.Int32,System.Byte[],System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Sets one or more policy objects on the output trust authority (OTA). </p>\t\n            </summary>\t\n            <param name=\"policyOut\"><dd> <p>The address of  an array of <strong><see cref=\"T:SharpDX.MediaFoundation.OutputPolicy\"/></strong> references. </p> </dd></param>\t\n            <param name=\"nPolicy\"><dd> <p> The number of elements in the <em>ppPolicy</em> array. </p> </dd></param>\t\n            <param name=\"bTicketOut\"><dd> <p> Receives either a reference to a buffer allocated by the OTA, or the value <strong><c>null</c></strong>. If this parameter receives a non-<strong><c>null</c></strong> value, the caller must release the buffer by calling <strong>CoTaskMemFree</strong>. </p> <p><strong>Note</strong>??Currently this parameter is reserved. An OTA should set the reference to <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"cbTicketRef\"><dd> <p> Receives the size of the <em>ppbTicket</em> buffer, in bytes. If <em>ppbTicket</em> receives the value <strong><c>null</c></strong>, <em>pcbTicket</em> receives the value zero.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded. </p> </td></tr> <tr><td> <dl> <dt><strong>MF_S_WAIT_FOR_POLICY_SET</strong></dt> </dl> </td><td> <p> The policy was negotiated successfully, but the OTA will enforce it asynchronously. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.PolicyUnsupported\"/></strong></dt> </dl> </td><td> <p> The OTA does not support the requirements of this policy. </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>If the method returns <strong>MF_S_WAIT_FOR_POLICY_SET</strong>, the OTA sends an <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.PolicySet\"/> event when it enforces the policy.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFOutputTrustAuthority::SetPolicy']/*\"/>\t\n            <msdn-id>bb970572</msdn-id>\t\n            <unmanaged>HRESULT IMFOutputTrustAuthority::SetPolicy([In, Buffer, Optional] IMFOutputPolicy** ppPolicy,[In] unsigned int nPolicy,[Out, Buffer, Optional] unsigned char** ppbTicket,[Out, Optional] unsigned int* pcbTicket)</unmanaged>\t\n            <unmanaged-short>IMFOutputTrustAuthority::SetPolicy</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.OutputTrustAuthority.SetPolicy(SharpDX.ComArray{SharpDX.MediaFoundation.OutputPolicy},System.Int32,System.Byte[],System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Sets one or more policy objects on the output trust authority (OTA). </p>\t\n            </summary>\t\n            <param name=\"policyOut\"><dd> <p>The address of  an array of <strong><see cref=\"T:SharpDX.MediaFoundation.OutputPolicy\"/></strong> references. </p> </dd></param>\t\n            <param name=\"nPolicy\"><dd> <p> The number of elements in the <em>ppPolicy</em> array. </p> </dd></param>\t\n            <param name=\"bTicketOut\"><dd> <p> Receives either a reference to a buffer allocated by the OTA, or the value <strong><c>null</c></strong>. If this parameter receives a non-<strong><c>null</c></strong> value, the caller must release the buffer by calling <strong>CoTaskMemFree</strong>. </p> <p><strong>Note</strong>??Currently this parameter is reserved. An OTA should set the reference to <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"cbTicketRef\"><dd> <p> Receives the size of the <em>ppbTicket</em> buffer, in bytes. If <em>ppbTicket</em> receives the value <strong><c>null</c></strong>, <em>pcbTicket</em> receives the value zero.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded. </p> </td></tr> <tr><td> <dl> <dt><strong>MF_S_WAIT_FOR_POLICY_SET</strong></dt> </dl> </td><td> <p> The policy was negotiated successfully, but the OTA will enforce it asynchronously. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.PolicyUnsupported\"/></strong></dt> </dl> </td><td> <p> The OTA does not support the requirements of this policy. </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>If the method returns <strong>MF_S_WAIT_FOR_POLICY_SET</strong>, the OTA sends an <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.PolicySet\"/> event when it enforces the policy.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFOutputTrustAuthority::SetPolicy']/*\"/>\t\n            <msdn-id>bb970572</msdn-id>\t\n            <unmanaged>HRESULT IMFOutputTrustAuthority::SetPolicy([In, Buffer, Optional] IMFOutputPolicy** ppPolicy,[In] unsigned int nPolicy,[Out, Buffer, Optional] unsigned char** ppbTicket,[Out, Optional] unsigned int* pcbTicket)</unmanaged>\t\n            <unmanaged-short>IMFOutputTrustAuthority::SetPolicy</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.OutputTrustAuthority.Action\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves the action that is performed by this output trust authority (OTA).</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFOutputTrustAuthority::GetAction']/*\"/>\t\n            <msdn-id>bb970410</msdn-id>\t\n            <unmanaged>GetAction</unmanaged>\t\n            <unmanaged-short>GetAction</unmanaged-short>\t\n            <unmanaged>HRESULT IMFOutputTrustAuthority::GetAction([Out] MFPOLICYMANAGER_ACTION* pAction)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.PluginControl\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Controls how media sources and transforms are enumerated in Microsoft Media Foundation.</p><p>To get a reference to this interface, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.GetPluginControl(SharpDX.MediaFoundation.PluginControl@)\"/></strong>.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Media Foundation provides a set of built-in media sources and decoders. Applications can enumerate them as follows: </p><ul> <li>Media sources are enumerated through the Source Resolver.</li> <li>Transforms, such as decoders, are enumerated through the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.TEnum(System.Guid,System.Int32,System.Nullable{SharpDX.MediaFoundation.TRegisterTypeInformation},System.Nullable{SharpDX.MediaFoundation.TRegisterTypeInformation},SharpDX.MediaFoundation.MediaAttributes,System.Guid[],System.Int32@)\"/></strong> and <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.TEnumEx(System.Guid,System.Int32,System.Nullable{SharpDX.MediaFoundation.TRegisterTypeInformation},System.Nullable{SharpDX.MediaFoundation.TRegisterTypeInformation},System.IntPtr@,System.Int32@)\"/></strong> functions.</li> </ul><p>Applications might also enumerate these objects indirectly. For example, if an application   uses the topology loader to resolve a partial topology, the topology loader calls <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.TEnumEx(System.Guid,System.Int32,System.Nullable{SharpDX.MediaFoundation.TRegisterTypeInformation},System.Nullable{SharpDX.MediaFoundation.TRegisterTypeInformation},System.IntPtr@,System.Int32@)\"/></strong> to find the required decoders.</p><p>Third parties can implement their own custom media sources and decoders, and register them for enumeration so that other applications can use them.</p><p>To control the enumeration order, Media Foundation maintains two process-wide lists of CLSIDs: a preferred list and a blocked list.  An object whose CLSID appears in the preferred list appears first in the enumeration order. An object whose CLSID appears on the blocked list is not enumerated.</p><p>The lists are initially populated from the registry. Applications can use the <strong><see cref=\"T:SharpDX.MediaFoundation.PluginControl\"/></strong> interface to modify the lists for the current process.</p><p>The preferred list contains a set of key/value pairs, where the keys are strings and the values are CLSIDs. These key/value pairs are defined as follows:</p><ul> <li>For media sources, the key name is a file name extension, protocol scheme, or MIME type. The value is the CLSID of a scheme handler or byte-stream handler for that media source.</li> <li>For decoders, the key name is a media subtype <see cref=\"T:System.Guid\"/> in canonical string form. (For more information about media subtypes, see Media Types.) The value is the CLSID of the Media Foundation transform (MFT) that implements the decoder. </li> </ul><p>The following examples show the various types of key:</p><ul> <li>File extension: \".wmv\"</li> <li>Scheme: \"http:\"</li> <li>MIME type: \"video/mp4\"</li> <li>Media subtype: \"{47504A4D-0000-0010-8000-00AA00389B71}\"</li> </ul><p>To search the preferred list by key name, call the <strong><see cref=\"M:SharpDX.MediaFoundation.PluginControl.GetPreferredClsid(System.Int32,System.String,System.Guid@)\"/></strong> method. To enumerate the entire list, call the <strong><see cref=\"M:SharpDX.MediaFoundation.PluginControl.GetPreferredClsidByIndex(System.Int32,System.Int32,System.IntPtr,System.Guid@)\"/></strong> method in a loop.</p><p>The blocked list contains a list of CLSIDs. To enumerate the entire list, call the <strong><see cref=\"M:SharpDX.MediaFoundation.PluginControl.GetDisabledByIndex(System.Int32,System.Int32,System.Guid@)\"/></strong> method in a loop. To check whether a specific CLSID appears on the list, call the <strong><see cref=\"M:SharpDX.MediaFoundation.PluginControl.IsDisabled(System.Int32,System.Guid)\"/></strong> method.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPluginControl']/*\"/>\t\n            <msdn-id>dd374302</msdn-id>\t\n            <unmanaged>IMFPluginControl</unmanaged>\t\n            <unmanaged-short>IMFPluginControl</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PluginControl.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.PluginControl\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PluginControl.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.PluginControl\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.PluginControl\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PluginControl.GetPreferredClsid(System.Int32,System.String,System.Guid@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Searches the preferred list for a class identifier (CLSID) that matches a specified key name.</p>\t\n            </summary>\t\n            <param name=\"pluginType\"><dd> <p>Member of the <strong><see cref=\"T:SharpDX.MediaFoundation.PluginType\"/></strong> enumeration, specifying the type of object.</p> </dd></param>\t\n            <param name=\"selector\"><dd> <p>The key name to match. For more information about the format of key names, see the Remarks section of <strong><see cref=\"T:SharpDX.MediaFoundation.PluginControl\"/></strong>.</p> </dd></param>\t\n            <param name=\"clsid\"><dd> <p>Receives a CLSID from the preferred list.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><strong>E_INVALIDARG</strong></strong></dt> </dl> </td><td> <p>Invalid argument.</p> </td></tr> <tr><td> <dl> <dt><strong><strong>HRESULT_FROM_WIN32(<see cref=\"F:SharpDX.Win32.ErrorCode.NotFound\"/>)</strong></strong></dt> </dl> </td><td> <p>No CLSID matching this key was found.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPluginControl::GetPreferredClsid']/*\"/>\t\n            <msdn-id>dd374304</msdn-id>\t\n            <unmanaged>HRESULT IMFPluginControl::GetPreferredClsid([In] unsigned int pluginType,[In] const wchar_t* selector,[Out] GUID* clsid)</unmanaged>\t\n            <unmanaged-short>IMFPluginControl::GetPreferredClsid</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PluginControl.GetPreferredClsidByIndex(System.Int32,System.Int32,System.IntPtr,System.Guid@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Gets a class identifier (CLSID) from the preferred list, specified by index value.</p>\t\n            </summary>\t\n            <param name=\"pluginType\"><dd> <p>Member of the <strong><see cref=\"T:SharpDX.MediaFoundation.PluginType\"/></strong> enumeration, specifying the type of object to enumerate.</p> </dd></param>\t\n            <param name=\"index\"><dd> <p>The zero-based index of the CLSID to retrieve.</p> </dd></param>\t\n            <param name=\"selector\"><dd> <p>Receives the key name associated with the CLSID. The caller must free the memory for the returned string by calling the <strong>CoTaskMemFree</strong> function. For more information about the format of key names, see the Remarks section of <strong><see cref=\"T:SharpDX.MediaFoundation.PluginControl\"/></strong>.</p> </dd></param>\t\n            <param name=\"clsid\"><dd> <p>Receives the CLSID at the specified index.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><strong>E_INVALIDARG</strong></strong></dt> </dl> </td><td> <p>Invalid argument.</p> </td></tr> <tr><td> <dl> <dt><strong><strong>HRESULT_FROM_WIN32(<see cref=\"F:SharpDX.Win32.ErrorCode.NoMoreItems\"/>)</strong></strong></dt> </dl> </td><td> <p>The <em>index</em> parameter is out of range.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPluginControl::GetPreferredClsidByIndex']/*\"/>\t\n            <msdn-id>dd374305</msdn-id>\t\n            <unmanaged>HRESULT IMFPluginControl::GetPreferredClsidByIndex([In] unsigned int pluginType,[In] unsigned int index,[Out] wchar_t** selector,[Out] GUID* clsid)</unmanaged>\t\n            <unmanaged-short>IMFPluginControl::GetPreferredClsidByIndex</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PluginControl.SetPreferredClsid(System.Int32,System.String,System.Nullable{System.Guid})\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Adds a class identifier (CLSID) to the preferred list or removes a CLSID from the list.</p>\t\n            </summary>\t\n            <param name=\"pluginType\"><dd> <p>Member of the <strong><see cref=\"T:SharpDX.MediaFoundation.PluginType\"/></strong> enumeration, specifying the type of object.</p> </dd></param>\t\n            <param name=\"selector\"><dd> <p>The key name for the CLSID. For more information about the format of key names, see the Remarks section of <strong><see cref=\"T:SharpDX.MediaFoundation.PluginControl\"/></strong>.</p> </dd></param>\t\n            <param name=\"clsid\"><dd> <p>The CLSID to add to the list. If this parameter is <strong><c>null</c></strong>, the key/value entry specified by the <em>selector</em> parameter is removed from the list. </p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>The preferred list is global to the caller's process. Calling this method does not affect the list in other process.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPluginControl::SetPreferredClsid']/*\"/>\t\n            <msdn-id>dd374308</msdn-id>\t\n            <unmanaged>HRESULT IMFPluginControl::SetPreferredClsid([In] unsigned int pluginType,[In] const wchar_t* selector,[In, Optional] const GUID* clsid)</unmanaged>\t\n            <unmanaged-short>IMFPluginControl::SetPreferredClsid</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PluginControl.IsDisabled(System.Int32,System.Guid)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Queries whether a class identifier (CLSID) appears in the blocked list.</p>\t\n            </summary>\t\n            <param name=\"pluginType\"><dd> <p>Member of the <strong><see cref=\"T:SharpDX.MediaFoundation.PluginType\"/></strong> enumeration, specifying the type of object for the query.</p> </dd></param>\t\n            <param name=\"clsid\"><dd> <p>The CLSID to search for.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></strong></dt> </dl> </td><td> <p>The specified CLSID appears in the blocked list.</p> </td></tr> <tr><td> <dl> <dt><strong><strong>E_INVALIDARG</strong></strong></dt> </dl> </td><td> <p>Invalid argument.</p> </td></tr> <tr><td> <dl> <dt><strong><strong>HRESULT_FROM_WIN32(<see cref=\"F:SharpDX.Win32.ErrorCode.NotFound\"/>)</strong></strong></dt> </dl> </td><td> <p>The specified CLSID is not in the blocked list.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPluginControl::IsDisabled']/*\"/>\t\n            <msdn-id>dd374306</msdn-id>\t\n            <unmanaged>HRESULT IMFPluginControl::IsDisabled([In] unsigned int pluginType,[In] const GUID&amp; clsid)</unmanaged>\t\n            <unmanaged-short>IMFPluginControl::IsDisabled</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PluginControl.GetDisabledByIndex(System.Int32,System.Int32,System.Guid@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Gets a class identifier (CLSID) from the blocked list.</p>\t\n            </summary>\t\n            <param name=\"pluginType\"><dd> <p>Member of the <strong><see cref=\"T:SharpDX.MediaFoundation.PluginType\"/></strong> enumeration, specifying the type of object to enumerate.</p> </dd></param>\t\n            <param name=\"index\"><dd> <p>The zero-based index of the CLSID to retrieve.</p> </dd></param>\t\n            <param name=\"clsid\"><dd> <p>Receives the CLSID at the specified index.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><strong>E_INVALIDARG</strong></strong></dt> </dl> </td><td> <p>Invalid argument.</p> </td></tr> <tr><td> <dl> <dt><strong><strong>HRESULT_FROM_WIN32(<see cref=\"F:SharpDX.Win32.ErrorCode.NoMoreItems\"/>)</strong></strong></dt> </dl> </td><td> <p>The <em>index</em> parameter is out of range.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPluginControl::GetDisabledByIndex']/*\"/>\t\n            <msdn-id>dd374303</msdn-id>\t\n            <unmanaged>HRESULT IMFPluginControl::GetDisabledByIndex([In] unsigned int pluginType,[In] unsigned int index,[Out] GUID* clsid)</unmanaged>\t\n            <unmanaged-short>IMFPluginControl::GetDisabledByIndex</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PluginControl.SetDisabled(System.Int32,System.Guid,SharpDX.Bool)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Adds a class identifier (CLSID) to the blocked list, or removes a CLSID from the list.</p>\t\n            </summary>\t\n            <param name=\"pluginType\"><dd> <p>Member of the <strong><see cref=\"T:SharpDX.MediaFoundation.PluginType\"/></strong> enumeration, specifying the type of object.</p> </dd></param>\t\n            <param name=\"clsid\"><dd> <p>The CLSID to add or remove.</p> </dd></param>\t\n            <param name=\"disabled\"><dd> <p>Specifies whether to add or remove the CSLID. If the value is <strong>TRUE</strong>, the method adds the CLSID to the blocked list. Otherwise, the method removes it from the list.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><strong>E_INVALIDARG</strong></strong></dt> </dl> </td><td> <p>Invalid argument.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> The blocked list is global to the caller's process. Calling this method does not affect the list in other processes. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPluginControl::SetDisabled']/*\"/>\t\n            <msdn-id>dd374307</msdn-id>\t\n            <unmanaged>HRESULT IMFPluginControl::SetDisabled([In] unsigned int pluginType,[In] const GUID&amp; clsid,[In] BOOL disabled)</unmanaged>\t\n            <unmanaged-short>IMFPluginControl::SetDisabled</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.PMediaItem\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Note</strong>??Deprecated. This API may be removed from future releases of Windows. Applications should use the Media Session for playback.</p><p> Represents a media item. A <em>media item</em> is an abstraction for a source of media data, such as a video file. Use this interface to get information about the source, or to change certain playback settings, such as the start and stop times. To get a reference to this interface, call one of the following methods:</p><ul> <li> <strong><see cref=\"M:SharpDX.MediaFoundation.PMediaPlayer.CreateMediaItemFromObject(SharpDX.ComObject,SharpDX.Bool,System.IntPtr,SharpDX.MediaFoundation.PMediaItem@)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.MediaFoundation.PMediaPlayer.CreateMediaItemFromURL(System.String,SharpDX.Bool,System.IntPtr,SharpDX.MediaFoundation.PMediaItem@)\"/></strong> </li> </ul>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMediaItem']/*\"/>\t\n            <msdn-id>dd374309</msdn-id>\t\n            <unmanaged>IMFPMediaItem</unmanaged>\t\n            <unmanaged-short>IMFPMediaItem</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PMediaItem.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.PMediaItem\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PMediaItem.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.PMediaItem\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.PMediaItem\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PMediaItem.GetMediaPlayer(SharpDX.MediaFoundation.PMediaPlayer@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Important</strong>??Deprecated. This API may be removed from future releases of Windows. Applications should use the Media Session for playback.</p><p>Gets a reference to the MFPlay player object that created the media item.</p>\t\n            </summary>\t\n            <param name=\"mediaPlayerOut\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMediaItem::GetMediaPlayer']/*\"/>\t\n            <msdn-id>dd374313</msdn-id>\t\n            <unmanaged>HRESULT IMFPMediaItem::GetMediaPlayer([Out] IMFPMediaPlayer** ppMediaPlayer)</unmanaged>\t\n            <unmanaged-short>IMFPMediaItem::GetMediaPlayer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PMediaItem.GetURL(System.IntPtr)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Important</strong>??Deprecated. This API may be removed from future releases of Windows. Applications should use the Media Session for playback.</p><p>Gets the URL that was used to create the media item.</p>\t\n            </summary>\t\n            <param name=\"wszURLOut\">No documentation.</param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong>MF_E_NOTFOUND</strong></dt> </dl> </td><td> <p>No URL is associated with this media item.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/></strong></dt> </dl> </td><td> <p>The <strong><see cref=\"M:SharpDX.MediaFoundation.PMediaPlayer.Shutdown\"/></strong> method was called.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>This method applies when the application calls  <strong><see cref=\"M:SharpDX.MediaFoundation.PMediaPlayer.CreateMediaItemFromURL(System.String,SharpDX.Bool,System.IntPtr,SharpDX.MediaFoundation.PMediaItem@)\"/></strong> to create a media item. If the application calls <strong><see cref=\"M:SharpDX.MediaFoundation.PMediaPlayer.CreateMediaItemFromObject(SharpDX.ComObject,SharpDX.Bool,System.IntPtr,SharpDX.MediaFoundation.PMediaItem@)\"/></strong> to create a media item, the  <strong>GetURL</strong> method for that media item returns  <strong>MF_E_NOTFOUND</strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMediaItem::GetURL']/*\"/>\t\n            <msdn-id>dd374320</msdn-id>\t\n            <unmanaged>HRESULT IMFPMediaItem::GetURL([Out] wchar_t** ppwszURL)</unmanaged>\t\n            <unmanaged-short>IMFPMediaItem::GetURL</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PMediaItem.GetObjectW(SharpDX.ComObject@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Important</strong>??Deprecated. This API may be removed from future releases of Windows. Applications should use the Media Session for playback.</p><p>Gets the object that was used to create the media item.</p>\t\n            </summary>\t\n            <param name=\"iUnknownOut\">No documentation.</param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong>MF_E_NOTFOUND</strong></dt> </dl> </td><td> <p>The media item was created from a URL, not from an object.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/></strong></dt> </dl> </td><td> <p>The <strong><see cref=\"M:SharpDX.MediaFoundation.PMediaPlayer.Shutdown\"/></strong> method was called.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>The object reference is set if the application uses <strong><see cref=\"M:SharpDX.MediaFoundation.PMediaPlayer.CreateMediaItemFromObject(SharpDX.ComObject,SharpDX.Bool,System.IntPtr,SharpDX.MediaFoundation.PMediaItem@)\"/></strong> to create the media item. Otherwise, <strong>GetObject</strong> returns  MF_E_NOTFOUND.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMediaItem::GetObjectW']/*\"/>\t\n            <msdn-id>dd374315</msdn-id>\t\n            <unmanaged>HRESULT IMFPMediaItem::GetObjectW([Out] IUnknown** ppIUnknown)</unmanaged>\t\n            <unmanaged-short>IMFPMediaItem::GetObjectW</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PMediaItem.GetUserData(System.IntPtr@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Important</strong>??Deprecated. This API may be removed from future releases of Windows. Applications should use the Media Session for playback.</p><p>Gets the application-defined value stored in the media item.</p>\t\n            </summary>\t\n            <param name=\"dwUserDataRef\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>You can assign this value when you first create the media item, by specifying it in the <em>dwUserData</em> parameter of the <strong><see cref=\"M:SharpDX.MediaFoundation.PMediaPlayer.CreateMediaItemFromURL(System.String,SharpDX.Bool,System.IntPtr,SharpDX.MediaFoundation.PMediaItem@)\"/></strong> or <strong><see cref=\"M:SharpDX.MediaFoundation.PMediaPlayer.CreateMediaItemFromObject(SharpDX.ComObject,SharpDX.Bool,System.IntPtr,SharpDX.MediaFoundation.PMediaItem@)\"/></strong> method. To update the value, call <strong><see cref=\"M:SharpDX.MediaFoundation.PMediaItem.SetUserData(System.IntPtr)\"/></strong>.</p><p>This method can be called after the player object is shut down.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMediaItem::GetUserData']/*\"/>\t\n            <msdn-id>dd374321</msdn-id>\t\n            <unmanaged>HRESULT IMFPMediaItem::GetUserData([Out] ULONG_PTR* pdwUserData)</unmanaged>\t\n            <unmanaged-short>IMFPMediaItem::GetUserData</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PMediaItem.SetUserData(System.IntPtr)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Important</strong>??Deprecated. This API may be removed from future releases of Windows. Applications should use the Media Session for playback.</p><p>Stores an application-defined value in the media item.</p>\t\n            </summary>\t\n            <param name=\"dwUserData\">No documentation.</param>\t\n            <returns><p>This method can return one of these values.</p></returns>\t\n            <remarks>\t\n            <p>This method can be called after the player object is shut down.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMediaItem::SetUserData']/*\"/>\t\n            <msdn-id>dd374328</msdn-id>\t\n            <unmanaged>HRESULT IMFPMediaItem::SetUserData([In] ULONG_PTR dwUserData)</unmanaged>\t\n            <unmanaged-short>IMFPMediaItem::SetUserData</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PMediaItem.GetStartStopPosition(System.Guid@,SharpDX.Win32.Variant@,System.Guid@,SharpDX.Win32.Variant@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Important</strong>??Deprecated. This API may be removed from future releases of Windows. Applications should use the Media Session for playback.</p><p>Gets the start and stop times for the media item.</p>\t\n            </summary>\t\n            <param name=\"guidStartPositionTypeRef\">No documentation.</param>\t\n            <param name=\"vStartValueRef\">No documentation.</param>\t\n            <param name=\"guidStopPositionTypeRef\">No documentation.</param>\t\n            <param name=\"vStopValueRef\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>The <em>pguidStartPositionType</em> and <em>pguidStopPositionType</em> parameters receive the units of time that are used. Currently, the only supported value is <strong>MFP_POSITIONTYPE_100NS</strong>.</p><table> <tr><th>Value</th><th>Description</th></tr> <tr><td>MFP_POSITIONTYPE_100NS</td><td>100-nanosecond units. The time parameter (<em>pvStartValue</em> or <em>pvStopValue</em>) uses the following data type:<ul> <li>Variant type (<strong>vt</strong>): VT_I8</li> <li>Variant member: <strong>hVal</strong></li> </ul> </td></tr> </table><p>?</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMediaItem::GetStartStopPosition']/*\"/>\t\n            <msdn-id>dd374317</msdn-id>\t\n            <unmanaged>HRESULT IMFPMediaItem::GetStartStopPosition([Out, Optional] GUID* pguidStartPositionType,[Out, Optional] PROPVARIANT* pvStartValue,[Out, Optional] GUID* pguidStopPositionType,[Out, Optional] PROPVARIANT* pvStopValue)</unmanaged>\t\n            <unmanaged-short>IMFPMediaItem::GetStartStopPosition</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PMediaItem.SetStartStopPosition(System.Nullable{System.Guid},System.Nullable{SharpDX.Win32.Variant},System.Nullable{System.Guid},System.Nullable{SharpDX.Win32.Variant})\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Important</strong>??Deprecated. This API may be removed from future releases of Windows. Applications should use the Media Session for playback.</p><p>Sets the start and stop time for the media item.</p>\t\n            </summary>\t\n            <param name=\"guidStartPositionTypeRef\">No documentation.</param>\t\n            <param name=\"vStartValueRef\">No documentation.</param>\t\n            <param name=\"guidStopPositionTypeRef\">No documentation.</param>\t\n            <param name=\"vStopValueRef\">No documentation.</param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong>E_INVALIDARG</strong></dt> </dl> </td><td> <p>Invalid argument.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.OutOfRange\"/></strong></dt> </dl> </td><td> <p>Invalid start or stop time. Any of the following can cause this error:</p> <ul> <li>Time less than zero.</li> <li>Time greater than the total duration of the media item.</li> <li>Stop time less than start time.</li> </ul> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>By default, a media item plays from the beginning to the end of the file. This method adjusts the start time and/or  the stop time:</p><ul> <li>To set the start time, pass non-<strong><c>null</c></strong> values for <em>pguidStartPositionType</em> and <em>pvStartValue</em>.</li> <li>To set the stop time, pass non-<strong><c>null</c></strong> values for <em>pguidStopPositionType</em> and <em>pvStopValue</em>.</li> </ul><p>The <em>pguidStartPositionType</em> and <em>pguidStopPositionType</em> parameters give the units of time that are used. Currently, the only supported value is <strong>MFP_POSITIONTYPE_100NS</strong>.</p><table> <tr><th>Value</th><th>Description</th></tr> <tr><td><strong>MFP_POSITIONTYPE_100NS</strong></td><td>100-nanosecond units. The time parameter (<em>pvStartValue</em> or <em>pvStopValue</em>) uses the following data type:<ul> <li>Variant type (<strong>vt</strong>): <strong>VT_I8</strong></li> <li>Variant member: <strong>hVal</strong></li> </ul> <p>To clear a previously set time, use an empty <strong><see cref=\"T:SharpDX.Win32.Variant\"/></strong> (<strong>VT_EMPTY</strong>).</p> </td></tr> </table><p>?</p><p>The adjusted start and stop times are used the next time that <strong><see cref=\"M:SharpDX.MediaFoundation.PMediaPlayer.SetMediaItem(SharpDX.MediaFoundation.PMediaItem)\"/></strong> is called with this media item. If the media item is already set on the player, the change does not happen unless you call <strong>SetMediaItem</strong> again.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMediaItem::SetStartStopPosition']/*\"/>\t\n            <msdn-id>dd374325</msdn-id>\t\n            <unmanaged>HRESULT IMFPMediaItem::SetStartStopPosition([In, Optional] const GUID* pguidStartPositionType,[In, Optional] const PROPVARIANT* pvStartValue,[In, Optional] const GUID* pguidStopPositionType,[In, Optional] const PROPVARIANT* pvStopValue)</unmanaged>\t\n            <unmanaged-short>IMFPMediaItem::SetStartStopPosition</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PMediaItem.HasVideo(SharpDX.Bool@,SharpDX.Bool@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Important</strong>??Deprecated. This API may be removed from future releases of Windows. Applications should use the Media Session for playback.</p><p>Queries whether the media item contains a video stream.</p>\t\n            </summary>\t\n            <param name=\"fHasVideoRef\">No documentation.</param>\t\n            <param name=\"fSelectedRef\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p> To select or deselect streams before playback starts, call <strong><see cref=\"M:SharpDX.MediaFoundation.PMediaItem.SetStreamSelection(System.Int32,SharpDX.Bool)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMediaItem::HasVideo']/*\"/>\t\n            <msdn-id>dd374323</msdn-id>\t\n            <unmanaged>HRESULT IMFPMediaItem::HasVideo([Out, Optional] BOOL* pfHasVideo,[Out, Optional] BOOL* pfSelected)</unmanaged>\t\n            <unmanaged-short>IMFPMediaItem::HasVideo</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PMediaItem.HasAudio(SharpDX.Bool@,SharpDX.Bool@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Important</strong>??Deprecated. This API may be removed from future releases of Windows. Applications should use the Media Session for playback.</p><p>Queries whether the media item contains an audio stream.</p>\t\n            </summary>\t\n            <param name=\"fHasAudioRef\">No documentation.</param>\t\n            <param name=\"fSelectedRef\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p> To select or deselect streams before playback starts, call <strong><see cref=\"M:SharpDX.MediaFoundation.PMediaItem.SetStreamSelection(System.Int32,SharpDX.Bool)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMediaItem::HasAudio']/*\"/>\t\n            <msdn-id>dd374322</msdn-id>\t\n            <unmanaged>HRESULT IMFPMediaItem::HasAudio([Out, Optional] BOOL* pfHasAudio,[Out, Optional] BOOL* pfSelected)</unmanaged>\t\n            <unmanaged-short>IMFPMediaItem::HasAudio</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PMediaItem.IsProtected_(SharpDX.Bool@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Important</strong>??Deprecated. This API may be removed from future releases of Windows. Applications should use the Media Session for playback.</p><p>Queries whether the media item contains protected content.</p><p><strong>Note</strong>??Currently <strong><see cref=\"T:SharpDX.MediaFoundation.PMediaPlayer\"/></strong> does not support playing protected content.</p>\t\n            </summary>\t\n            <param name=\"fProtectedRef\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMediaItem::IsProtected']/*\"/>\t\n            <msdn-id>dd374324</msdn-id>\t\n            <unmanaged>HRESULT IMFPMediaItem::IsProtected([Out] BOOL* pfProtected)</unmanaged>\t\n            <unmanaged-short>IMFPMediaItem::IsProtected</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PMediaItem.GetDuration(System.Guid,SharpDX.Win32.Variant@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Important</strong>??Deprecated. This API may be removed from future releases of Windows. Applications should use the Media Session for playback.</p><p>Gets the duration of the media item.</p>\t\n            </summary>\t\n            <param name=\"guidPositionType\">No documentation.</param>\t\n            <param name=\"vDurationValueRef\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>The method returns the total duration of the content, regardless of any values set through <strong><see cref=\"M:SharpDX.MediaFoundation.PMediaItem.SetStartStopPosition(System.Nullable{System.Guid},System.Nullable{SharpDX.Win32.Variant},System.Nullable{System.Guid},System.Nullable{SharpDX.Win32.Variant})\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMediaItem::GetDuration']/*\"/>\t\n            <msdn-id>dd374312</msdn-id>\t\n            <unmanaged>HRESULT IMFPMediaItem::GetDuration([In] const GUID&amp; guidPositionType,[Out] PROPVARIANT* pvDurationValue)</unmanaged>\t\n            <unmanaged-short>IMFPMediaItem::GetDuration</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PMediaItem.GetNumberOfStreams(System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Important</strong>??Deprecated. This API may be removed from future releases of Windows. Applications should use the Media Session for playback.</p><p>Gets the number of streams (audio, video, and other) in the media item.</p>\t\n            </summary>\t\n            <param name=\"dwStreamCountRef\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMediaItem::GetNumberOfStreams']/*\"/>\t\n            <msdn-id>dd374314</msdn-id>\t\n            <unmanaged>HRESULT IMFPMediaItem::GetNumberOfStreams([Out] unsigned int* pdwStreamCount)</unmanaged>\t\n            <unmanaged-short>IMFPMediaItem::GetNumberOfStreams</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PMediaItem.GetStreamSelection(System.Int32,SharpDX.Bool@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Important</strong>??Deprecated. This API may be removed from future releases of Windows. Applications should use the Media Session for playback.</p><p>Queries whether a stream is selected to play.</p>\t\n            </summary>\t\n            <param name=\"dwStreamIndex\">No documentation.</param>\t\n            <param name=\"fEnabledRef\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p> To select or deselect a stream, call <strong><see cref=\"M:SharpDX.MediaFoundation.PMediaItem.SetStreamSelection(System.Int32,SharpDX.Bool)\"/></strong>. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMediaItem::GetStreamSelection']/*\"/>\t\n            <msdn-id>dd374319</msdn-id>\t\n            <unmanaged>HRESULT IMFPMediaItem::GetStreamSelection([In] unsigned int dwStreamIndex,[Out] BOOL* pfEnabled)</unmanaged>\t\n            <unmanaged-short>IMFPMediaItem::GetStreamSelection</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PMediaItem.SetStreamSelection(System.Int32,SharpDX.Bool)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Important</strong>??Deprecated. This API may be removed from future releases of Windows. Applications should use the Media Session for playback.</p><p>Selects or deselects a stream.</p>\t\n            </summary>\t\n            <param name=\"dwStreamIndex\">No documentation.</param>\t\n            <param name=\"fEnabled\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>You can use this method to change which streams are selected. The change goes into effect the next time that <strong><see cref=\"M:SharpDX.MediaFoundation.PMediaPlayer.SetMediaItem(SharpDX.MediaFoundation.PMediaItem)\"/></strong> is called with this media item. If the media item is already set on the player, the change does not happen unless you call <strong>SetMediaItem</strong> again with this media item.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMediaItem::SetStreamSelection']/*\"/>\t\n            <msdn-id>dd374326</msdn-id>\t\n            <unmanaged>HRESULT IMFPMediaItem::SetStreamSelection([In] unsigned int dwStreamIndex,[In] BOOL fEnabled)</unmanaged>\t\n            <unmanaged-short>IMFPMediaItem::SetStreamSelection</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PMediaItem.GetStreamAttribute(System.Int32,System.Guid,SharpDX.Win32.Variant@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Important</strong>??Deprecated. This API may be removed from future releases of Windows. Applications should use the Media Session for playback.</p><p>Queries the media item for a stream attribute.</p>\t\n            </summary>\t\n            <param name=\"dwStreamIndex\">No documentation.</param>\t\n            <param name=\"guidMFAttribute\">No documentation.</param>\t\n            <param name=\"vValueRef\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>Stream attributes describe an individual stream (audio, video, or other) within the presentation. To get an attribute that applies to the entire presentation, call <strong><see cref=\"M:SharpDX.MediaFoundation.PMediaItem.GetPresentationAttribute(System.Guid,SharpDX.Win32.Variant@)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMediaItem::GetStreamAttribute']/*\"/>\t\n            <msdn-id>dd374318</msdn-id>\t\n            <unmanaged>HRESULT IMFPMediaItem::GetStreamAttribute([In] unsigned int dwStreamIndex,[In] const GUID&amp; guidMFAttribute,[Out] PROPVARIANT* pvValue)</unmanaged>\t\n            <unmanaged-short>IMFPMediaItem::GetStreamAttribute</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PMediaItem.GetPresentationAttribute(System.Guid,SharpDX.Win32.Variant@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Important</strong>??Deprecated. This API may be removed from future releases of Windows. Applications should use the Media Session for playback.</p><p>Queries the media item for a presentation attribute.</p>\t\n            </summary>\t\n            <param name=\"guidMFAttribute\">No documentation.</param>\t\n            <param name=\"vValueRef\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>Presentation attributes describe the presentation as a whole. To get an attribute that applies to an individual stream within the presentation, call <strong><see cref=\"M:SharpDX.MediaFoundation.PMediaItem.GetStreamAttribute(System.Int32,System.Guid,SharpDX.Win32.Variant@)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMediaItem::GetPresentationAttribute']/*\"/>\t\n            <msdn-id>dd374316</msdn-id>\t\n            <unmanaged>HRESULT IMFPMediaItem::GetPresentationAttribute([In] const GUID&amp; guidMFAttribute,[Out] PROPVARIANT* pvValue)</unmanaged>\t\n            <unmanaged-short>IMFPMediaItem::GetPresentationAttribute</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PMediaItem.GetCharacteristics(System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Important</strong>??Deprecated. This API may be removed from future releases of Windows. Applications should use the Media Session for playback.</p><p>Gets various flags that describe the media item.</p>\t\n            </summary>\t\n            <param name=\"characteristicsRef\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMediaItem::GetCharacteristics']/*\"/>\t\n            <msdn-id>dd374311</msdn-id>\t\n            <unmanaged>HRESULT IMFPMediaItem::GetCharacteristics([Out] unsigned int* pCharacteristics)</unmanaged>\t\n            <unmanaged-short>IMFPMediaItem::GetCharacteristics</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PMediaItem.SetStreamSink(System.Int32,SharpDX.ComObject)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Important</strong>??Deprecated. This API may be removed from future releases of Windows. Applications should use the Media Session for playback.</p><p> Sets a media sink for the media item. A <em>media sink</em> is an object that consumes the data from one or more streams. </p>\t\n            </summary>\t\n            <param name=\"dwStreamIndex\">No documentation.</param>\t\n            <param name=\"mediaSinkRef\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>By default, the MFPlay player object renders audio streams to the Streaming Audio Renderer (SAR) and video streams to the Enhanced Video Renderer (EVR). You can use the <strong>SetStreamSink</strong> method to provide a different media sink for an audio or video stream; or to support other stream types besides audio and video. You can also use it to configure the SAR or EVR before they are used.</p><p>Call this method before calling <strong><see cref=\"M:SharpDX.MediaFoundation.PMediaPlayer.SetMediaItem(SharpDX.MediaFoundation.PMediaItem)\"/></strong>. Calling this method after <strong>SetMediaItem</strong> has no effect, unless you stop playback and call <strong>SetMediaItem</strong> again.</p><p>To reset the media item to use the default media sink, set <em>pMediaSink</em> to <strong><c>null</c></strong>.</p>Remote Playback Optimizations<p>If the application is running over Remote Desktop, and you call this method with a non-<c>null</c> value for an audio or video stream, MFPlay disables remote playback optimizations. This remark applies only to audio and video streams. It does not apply to streams that contain some other data type, such as text.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMediaItem::SetStreamSink']/*\"/>\t\n            <msdn-id>dd374327</msdn-id>\t\n            <unmanaged>HRESULT IMFPMediaItem::SetStreamSink([In] unsigned int dwStreamIndex,[In, Optional] IUnknown* pMediaSink)</unmanaged>\t\n            <unmanaged-short>IMFPMediaItem::SetStreamSink</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PMediaItem.GetMetadata(SharpDX.ComObject@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Important</strong>??Deprecated. This API may be removed from future releases of Windows. Applications should use the Media Session for playback.</p><p>Gets a property store that contains metadata for the source, such as author or title.</p>\t\n            </summary>\t\n            <param name=\"metadataStoreOut\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMediaItem::GetMetadata']/*\"/>\t\n            <msdn-id>dd798056</msdn-id>\t\n            <unmanaged>HRESULT IMFPMediaItem::GetMetadata([Out] IPropertyStore** ppMetadataStore)</unmanaged>\t\n            <unmanaged-short>IMFPMediaItem::GetMetadata</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.PMediaItem.MediaPlayer\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Important</strong>??Deprecated. This API may be removed from future releases of Windows. Applications should use the Media Session for playback.</p><p>Gets a reference to the MFPlay player object that created the media item.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMediaItem::GetMediaPlayer']/*\"/>\t\n            <msdn-id>dd374313</msdn-id>\t\n            <unmanaged>GetMediaPlayer</unmanaged>\t\n            <unmanaged-short>GetMediaPlayer</unmanaged-short>\t\n            <unmanaged>HRESULT IMFPMediaItem::GetMediaPlayer([Out] IMFPMediaPlayer** ppMediaPlayer)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.PMediaItem.ObjectW\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Important</strong>??Deprecated. This API may be removed from future releases of Windows. Applications should use the Media Session for playback.</p><p>Gets the object that was used to create the media item.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The object reference is set if the application uses <strong><see cref=\"M:SharpDX.MediaFoundation.PMediaPlayer.CreateMediaItemFromObject(SharpDX.ComObject,SharpDX.Bool,System.IntPtr,SharpDX.MediaFoundation.PMediaItem@)\"/></strong> to create the media item. Otherwise, <strong>GetObject</strong> returns  MF_E_NOTFOUND.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMediaItem::GetObjectW']/*\"/>\t\n            <msdn-id>dd374315</msdn-id>\t\n            <unmanaged>GetObjectW</unmanaged>\t\n            <unmanaged-short>GetObjectW</unmanaged-short>\t\n            <unmanaged>HRESULT IMFPMediaItem::GetObjectW([Out] IUnknown** ppIUnknown)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.PMediaItem.UserData\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Important</strong>??Deprecated. This API may be removed from future releases of Windows. Applications should use the Media Session for playback.</p><p>Gets the application-defined value stored in the media item.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>You can assign this value when you first create the media item, by specifying it in the <em>dwUserData</em> parameter of the <strong><see cref=\"M:SharpDX.MediaFoundation.PMediaPlayer.CreateMediaItemFromURL(System.String,SharpDX.Bool,System.IntPtr,SharpDX.MediaFoundation.PMediaItem@)\"/></strong> or <strong><see cref=\"M:SharpDX.MediaFoundation.PMediaPlayer.CreateMediaItemFromObject(SharpDX.ComObject,SharpDX.Bool,System.IntPtr,SharpDX.MediaFoundation.PMediaItem@)\"/></strong> method. To update the value, call <strong><see cref=\"M:SharpDX.MediaFoundation.PMediaItem.SetUserData(System.IntPtr)\"/></strong>.</p><p>This method can be called after the player object is shut down.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMediaItem::GetUserData']/*\"/>\t\n            <msdn-id>dd374321</msdn-id>\t\n            <unmanaged>GetUserData / SetUserData</unmanaged>\t\n            <unmanaged-short>GetUserData</unmanaged-short>\t\n            <unmanaged>HRESULT IMFPMediaItem::GetUserData([Out] ULONG_PTR* pdwUserData)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.PMediaItem.IsProtected\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Important</strong>??Deprecated. This API may be removed from future releases of Windows. Applications should use the Media Session for playback.</p><p>Queries whether the media item contains protected content.</p><p><strong>Note</strong>??Currently <strong><see cref=\"T:SharpDX.MediaFoundation.PMediaPlayer\"/></strong> does not support playing protected content.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMediaItem::IsProtected']/*\"/>\t\n            <msdn-id>dd374324</msdn-id>\t\n            <unmanaged>IsProtected</unmanaged>\t\n            <unmanaged-short>IsProtected</unmanaged-short>\t\n            <unmanaged>HRESULT IMFPMediaItem::IsProtected([Out] BOOL* pfProtected)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.PMediaItem.NumberOfStreams\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Important</strong>??Deprecated. This API may be removed from future releases of Windows. Applications should use the Media Session for playback.</p><p>Gets the number of streams (audio, video, and other) in the media item.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMediaItem::GetNumberOfStreams']/*\"/>\t\n            <msdn-id>dd374314</msdn-id>\t\n            <unmanaged>GetNumberOfStreams</unmanaged>\t\n            <unmanaged-short>GetNumberOfStreams</unmanaged-short>\t\n            <unmanaged>HRESULT IMFPMediaItem::GetNumberOfStreams([Out] unsigned int* pdwStreamCount)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.PMediaItem.Characteristics\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Important</strong>??Deprecated. This API may be removed from future releases of Windows. Applications should use the Media Session for playback.</p><p>Gets various flags that describe the media item.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMediaItem::GetCharacteristics']/*\"/>\t\n            <msdn-id>dd374311</msdn-id>\t\n            <unmanaged>GetCharacteristics</unmanaged>\t\n            <unmanaged-short>GetCharacteristics</unmanaged-short>\t\n            <unmanaged>HRESULT IMFPMediaItem::GetCharacteristics([Out] unsigned int* pCharacteristics)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.PMediaItem.Metadata\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Important</strong>??Deprecated. This API may be removed from future releases of Windows. Applications should use the Media Session for playback.</p><p>Gets a property store that contains metadata for the source, such as author or title.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMediaItem::GetMetadata']/*\"/>\t\n            <msdn-id>dd798056</msdn-id>\t\n            <unmanaged>GetMetadata</unmanaged>\t\n            <unmanaged-short>GetMetadata</unmanaged-short>\t\n            <unmanaged>HRESULT IMFPMediaItem::GetMetadata([Out] IPropertyStore** ppMetadataStore)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.PMediaPlayer\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Important</strong>??Deprecated. This API may be removed from future releases of Windows. Applications should use the Media Session for playback.</p><p> Contains methods to play media files.</p><p>The MFPlay player object exposes this interface. To get a reference to this interface, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.PCreateMediaPlayer(System.String,SharpDX.Bool,System.Int32,SharpDX.MediaFoundation.PMediaPlayerCallback,System.IntPtr,SharpDX.MediaFoundation.PMediaPlayer@)\"/></strong>.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMediaPlayer']/*\"/>\t\n            <msdn-id>dd374329</msdn-id>\t\n            <unmanaged>IMFPMediaPlayer</unmanaged>\t\n            <unmanaged-short>IMFPMediaPlayer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PMediaPlayer.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.PMediaPlayer\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PMediaPlayer.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.PMediaPlayer\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.PMediaPlayer\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PMediaPlayer.Play\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Important</strong>??Deprecated. This API may be removed from future releases of Windows. Applications should use the Media Session for playback.</p><p> Contains methods to play media files.</p><p>The MFPlay player object exposes this interface. To get a reference to this interface, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.PCreateMediaPlayer(System.String,SharpDX.Bool,System.Int32,SharpDX.MediaFoundation.PMediaPlayerCallback,System.IntPtr,SharpDX.MediaFoundation.PMediaPlayer@)\"/></strong>.</p>\t\n            </summary>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMediaPlayer::Play']/*\"/>\t\n            <msdn-id>dd374329</msdn-id>\t\n            <unmanaged>HRESULT IMFPMediaPlayer::Play()</unmanaged>\t\n            <unmanaged-short>IMFPMediaPlayer::Play</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PMediaPlayer.Pause\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Important</strong>??Deprecated. This API may be removed from future releases of Windows. Applications should use the Media Session for playback.</p><p>Pauses playback. While playback is paused, the most recent video frame is displayed, and audio is silent.</p>\t\n            </summary>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/></strong></strong></dt> </dl> </td><td> <p>The object's <strong>Shutdown</strong> method was called.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>This method completes asynchronously.  When the operation completes, the application's <strong><see cref=\"M:SharpDX.MediaFoundation.PMediaPlayerCallback.OnMediaPlayerEvent(SharpDX.MediaFoundation.PEventHeader@)\"/></strong> callback method is invoked. The event type is <strong><see cref=\"F:SharpDX.MediaFoundation.PEventType.Pause\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMediaPlayer::Pause']/*\"/>\t\n            <msdn-id>dd374353</msdn-id>\t\n            <unmanaged>HRESULT IMFPMediaPlayer::Pause()</unmanaged>\t\n            <unmanaged-short>IMFPMediaPlayer::Pause</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PMediaPlayer.Stop\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Important</strong>??Deprecated. This API may be removed from future releases of Windows. Applications should use the Media Session for playback.</p><p>Stops playback.</p>\t\n            </summary>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/></strong></dt> </dl> </td><td> <p>The object's <strong>Shutdown</strong> method was called.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>This method completes asynchronously.  When the operation completes, the application's <strong><see cref=\"M:SharpDX.MediaFoundation.PMediaPlayerCallback.OnMediaPlayerEvent(SharpDX.MediaFoundation.PEventHeader@)\"/></strong> callback method is invoked. The event type is <strong><see cref=\"F:SharpDX.MediaFoundation.PEventType.Stop\"/></strong>.</p><p>The current media item is still valid. After playback stops, the playback position resets to the beginning of the current media item. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMediaPlayer::Stop']/*\"/>\t\n            <msdn-id>dd374368</msdn-id>\t\n            <unmanaged>HRESULT IMFPMediaPlayer::Stop()</unmanaged>\t\n            <unmanaged-short>IMFPMediaPlayer::Stop</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PMediaPlayer.FrameStep\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Important</strong>??Deprecated. This API may be removed from future releases of Windows. Applications should use the Media Session for playback.</p><p>Steps forward one video frame.</p>\t\n            </summary>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidRequest\"/></strong></dt> </dl> </td><td> <p>Cannot frame step. Reasons for this error code include:</p> <ul> <li>There is no media item queued for playback.</li> <li>The current media item does not contain video.</li> </ul> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/></strong></dt> </dl> </td><td> <p>The object's <strong>Shutdown</strong> method was called.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.UnsupportedRate\"/></strong></dt> </dl> </td><td> <p>The media source does not support frame stepping, or the current playback rate is negative.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> This method completes asynchronously.  When the operation completes, the application's <strong><see cref=\"M:SharpDX.MediaFoundation.PMediaPlayerCallback.OnMediaPlayerEvent(SharpDX.MediaFoundation.PEventHeader@)\"/></strong> callback method is invoked. The event type is <strong><see cref=\"F:SharpDX.MediaFoundation.PEventType.FrameStep\"/></strong>.</p><p>The player object does not support frame stepping during reverse playback (that is, while the playback rate is negative).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMediaPlayer::FrameStep']/*\"/>\t\n            <msdn-id>dd374336</msdn-id>\t\n            <unmanaged>HRESULT IMFPMediaPlayer::FrameStep()</unmanaged>\t\n            <unmanaged-short>IMFPMediaPlayer::FrameStep</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PMediaPlayer.SetPosition(System.Guid,SharpDX.Win32.Variant)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Important</strong>??Deprecated. This API may be removed from future releases of Windows. Applications should use the Media Session for playback.</p><p>Sets the playback position.</p>\t\n            </summary>\t\n            <param name=\"guidPositionType\">No documentation.</param>\t\n            <param name=\"vPositionValueRef\">No documentation.</param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><strong>E_INVALIDARG</strong></strong></dt> </dl> </td><td> <p>Invalid argument.</p> </td></tr> <tr><td> <dl> <dt><strong><strong>HRESULT_FROM_WIN32( <see cref=\"F:SharpDX.Win32.ErrorCode.Seek\"/> )</strong></strong></dt> </dl> </td><td> <p>The value of <em>pvPositionValue</em> is not valid.</p> </td></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidRequest\"/></strong></strong></dt> </dl> </td><td> <p>No media item has been queued.</p> </td></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/></strong></strong></dt> </dl> </td><td> <p>The object's <strong>Shutdown</strong> method was called.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>If you call this method while playback is stopped, the new position takes effect after playback resumes.</p><p>This method completes asynchronously. When the operation completes, the application's <strong><see cref=\"M:SharpDX.MediaFoundation.PMediaPlayerCallback.OnMediaPlayerEvent(SharpDX.MediaFoundation.PEventHeader@)\"/></strong> callback method is invoked. The event type is <strong><see cref=\"F:SharpDX.MediaFoundation.PEventType.PositionSet\"/></strong>.</p><p>If playback was started before <strong>SetPosition</strong> is called, playback resumes at the new position. If playback was paused, the video is refreshed to display the current frame at the new position. </p><p>If you make two consecutive calls to <strong>SetPosition</strong> with <em>guidPositionType</em> equal to <strong>MFP_POSITIONTYPE_100NS</strong>, and the second call is made before the first call has completed, the second call supersedes the first. The status code for the superseded call is set to <strong>S_FALSE</strong> in the event data for that call. This behavior prevents excessive latency from repeated calls to <strong>SetPosition</strong>, as each call may force the media source to perform a relatively lengthy seek operation. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMediaPlayer::SetPosition']/*\"/>\t\n            <msdn-id>dd374363</msdn-id>\t\n            <unmanaged>HRESULT IMFPMediaPlayer::SetPosition([In] const GUID&amp; guidPositionType,[In] const PROPVARIANT* pvPositionValue)</unmanaged>\t\n            <unmanaged-short>IMFPMediaPlayer::SetPosition</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PMediaPlayer.GetPosition(System.Guid,SharpDX.Win32.Variant@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Important</strong>??Deprecated. This API may be removed from future releases of Windows. Applications should use the Media Session for playback.</p><p>Gets the current playback position.</p>\t\n            </summary>\t\n            <param name=\"guidPositionType\">No documentation.</param>\t\n            <param name=\"vPositionValueRef\">No documentation.</param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><strong>E_INVALIDARG</strong></strong></dt> </dl> </td><td> <p>Invalid argument.</p> </td></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidRequest\"/></strong></strong></dt> </dl> </td><td> <p>No media item has been queued.</p> </td></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/></strong></strong></dt> </dl> </td><td> <p>The object's <strong>Shutdown</strong> method was called.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>The playback position is calculated relative to the start time of the media item, which can be specified by calling <strong><see cref=\"M:SharpDX.MediaFoundation.PMediaItem.SetStartStopPosition(System.Nullable{System.Guid},System.Nullable{SharpDX.Win32.Variant},System.Nullable{System.Guid},System.Nullable{SharpDX.Win32.Variant})\"/></strong>. For example, if you set the start time to 20 seconds and the source duration is 60 seconds, the range of values returned by <strong>GetPosition</strong> is 0?40 seconds.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMediaPlayer::GetPosition']/*\"/>\t\n            <msdn-id>dd374345</msdn-id>\t\n            <unmanaged>HRESULT IMFPMediaPlayer::GetPosition([In] const GUID&amp; guidPositionType,[Out] PROPVARIANT* pvPositionValue)</unmanaged>\t\n            <unmanaged-short>IMFPMediaPlayer::GetPosition</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PMediaPlayer.GetDuration(System.Guid,SharpDX.Win32.Variant@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Important</strong>??Deprecated. This API may be removed from future releases of Windows. Applications should use the Media Session for playback.</p><p>Gets the playback duration of the current media item.</p>\t\n            </summary>\t\n            <param name=\"guidPositionType\">No documentation.</param>\t\n            <param name=\"vDurationValueRef\">No documentation.</param>\t\n            <returns><p>This method can return one of these values.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Attributenotfound\"/></strong></dt> </dl> </td><td> <p>The media source does not have a duration. This error can occur with a live source, such as a video camera.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidRequest\"/></strong></dt> </dl> </td><td> <p>There is no current media item.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>This method calculates the playback duration, taking into account the start and stop times for the media item. To set the start and stop times, call <strong><see cref=\"M:SharpDX.MediaFoundation.PMediaItem.SetStartStopPosition(System.Nullable{System.Guid},System.Nullable{SharpDX.Win32.Variant},System.Nullable{System.Guid},System.Nullable{SharpDX.Win32.Variant})\"/></strong> on the media item. To get the actual duration of the underlying media file, regardless of start and stop times, call <strong><see cref=\"M:SharpDX.MediaFoundation.PMediaItem.GetDuration(System.Guid,SharpDX.Win32.Variant@)\"/></strong>.</p><p>For example, suppose that you load a 30-second audio file and set the start time equal to 2 seconds and stop time equal to 10 seconds. The <strong><see cref=\"M:SharpDX.MediaFoundation.PMediaItem.GetDuration(System.Guid,SharpDX.Win32.Variant@)\"/></strong> method will return 30 seconds, but the <strong><see cref=\"M:SharpDX.MediaFoundation.PMediaPlayer.GetDuration(System.Guid,SharpDX.Win32.Variant@)\"/></strong> method will return 8 seconds.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMediaPlayer::GetDuration']/*\"/>\t\n            <msdn-id>dd374340</msdn-id>\t\n            <unmanaged>HRESULT IMFPMediaPlayer::GetDuration([In] const GUID&amp; guidPositionType,[Out] PROPVARIANT* pvDurationValue)</unmanaged>\t\n            <unmanaged-short>IMFPMediaPlayer::GetDuration</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PMediaPlayer.SetRate(System.Single)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Important</strong>??Deprecated. This API may be removed from future releases of Windows. Applications should use the Media Session for playback.</p><p>Sets the playback rate.</p>\t\n            </summary>\t\n            <param name=\"flRate\">No documentation.</param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.OutOfRange\"/></strong></strong></dt> </dl> </td><td> <p>The <em>flRate</em> parameter is zero.</p> </td></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/></strong></strong></dt> </dl> </td><td> <p>The object's <strong>Shutdown</strong> method was called.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>This method completes asynchronously.  When the operation completes, the application's <strong><see cref=\"M:SharpDX.MediaFoundation.PMediaPlayerCallback.OnMediaPlayerEvent(SharpDX.MediaFoundation.PEventHeader@)\"/></strong> callback method is invoked. The event type is <strong><see cref=\"F:SharpDX.MediaFoundation.PEventType.RateSet\"/></strong>.</p><p>The method sets the nearest supported rate, which will depend on the underlying media source. For example, if <em>flRate</em> is 50 and the source's maximum rate is 8? normal rate, the method will set the rate to 8.0.  The actual rate is indicated in the event data for the <strong><see cref=\"F:SharpDX.MediaFoundation.PEventType.RateSet\"/></strong> event.</p><p>To find the range of supported rates, call <strong><see cref=\"M:SharpDX.MediaFoundation.PMediaPlayer.GetSupportedRates(SharpDX.Bool,System.Single@,System.Single@)\"/></strong>.</p><p>This method does not support playback rates of zero, although Media Foundation defines a meaning for zero rates in some other contexts.</p><p>The new rate applies only to the current media item. Setting a new media item resets the playback rate to 1.0.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMediaPlayer::SetRate']/*\"/>\t\n            <msdn-id>dd374364</msdn-id>\t\n            <unmanaged>HRESULT IMFPMediaPlayer::SetRate([In] float flRate)</unmanaged>\t\n            <unmanaged-short>IMFPMediaPlayer::SetRate</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PMediaPlayer.GetRate(System.Single@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Important</strong>??Deprecated. This API may be removed from future releases of Windows. Applications should use the Media Session for playback.</p><p>Gets the current playback rate.</p>\t\n            </summary>\t\n            <param name=\"flRateRef\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMediaPlayer::GetRate']/*\"/>\t\n            <msdn-id>dd374346</msdn-id>\t\n            <unmanaged>HRESULT IMFPMediaPlayer::GetRate([Out] float* pflRate)</unmanaged>\t\n            <unmanaged-short>IMFPMediaPlayer::GetRate</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PMediaPlayer.GetSupportedRates(SharpDX.Bool,System.Single@,System.Single@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Important</strong>??Deprecated. This API may be removed from future releases of Windows. Applications should use the Media Session for playback.</p><p>Gets the range of supported playback rates.</p>\t\n            </summary>\t\n            <param name=\"fForwardDirection\">No documentation.</param>\t\n            <param name=\"flSlowestRateRef\">No documentation.</param>\t\n            <param name=\"flFastestRateRef\">No documentation.</param>\t\n            <returns><p>This method can return one of these values.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.UnsupportedRate\"/></strong></strong></dt> </dl> </td><td> <p>The current media item does not support playback in the requested direction (either forward or reverse).</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>Playback rates are expressed as a ratio of the current rate to the normal rate. For example, 1.0 indicates normal playback speed, 0.5 indicates half speed, and 2.0 indicates twice speed. Positive values indicate forward playback, and negative values indicate reverse playback.\t\n            </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMediaPlayer::GetSupportedRates']/*\"/>\t\n            <msdn-id>dd374348</msdn-id>\t\n            <unmanaged>HRESULT IMFPMediaPlayer::GetSupportedRates([In] BOOL fForwardDirection,[Out] float* pflSlowestRate,[Out] float* pflFastestRate)</unmanaged>\t\n            <unmanaged-short>IMFPMediaPlayer::GetSupportedRates</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PMediaPlayer.GetState(SharpDX.MediaFoundation.PMediaPlayerState@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Important</strong>??Deprecated. This API may be removed from future releases of Windows. Applications should use the Media Session for playback.</p><p>Gets the current playback state of the MFPlay player object.</p>\t\n            </summary>\t\n            <param name=\"eStateRef\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>This method can be called after the player object has been shut down.</p><p>Many of the <strong><see cref=\"T:SharpDX.MediaFoundation.PMediaPlayer\"/></strong> methods complete asynchronously. While an asynchronous operation is pending, the current state is not updated until the operation completes. When the operation completes, the application receives an event callback, and the new state is given in the <strong><see cref=\"T:SharpDX.MediaFoundation.PEventHeader\"/></strong> structure that is passed to the callback.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMediaPlayer::GetState']/*\"/>\t\n            <msdn-id>dd374347</msdn-id>\t\n            <unmanaged>HRESULT IMFPMediaPlayer::GetState([Out] MFP_MEDIAPLAYER_STATE* peState)</unmanaged>\t\n            <unmanaged-short>IMFPMediaPlayer::GetState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PMediaPlayer.CreateMediaItemFromURL(System.String,SharpDX.Bool,System.IntPtr,SharpDX.MediaFoundation.PMediaItem@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Important</strong>??Deprecated. This API may be removed from future releases of Windows. Applications should use the Media Session for playback.</p><p>Creates a media item from a URL.</p>\t\n            </summary>\t\n            <param name=\"wszURLRef\">No documentation.</param>\t\n            <param name=\"fSync\">No documentation.</param>\t\n            <param name=\"dwUserData\">No documentation.</param>\t\n            <param name=\"mediaItemOut\">No documentation.</param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><strong>E_INVALIDARG</strong></strong></dt> </dl> </td><td> <p>Invalid argument.</p> </td></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidRequest\"/></strong></strong></dt> </dl> </td><td> <p>Invalid request. This error can occur when <em>fSync</em> is <strong><see cref=\"F:SharpDX.Result.False\"/></strong> and the application did not provide a callback interface. See Remarks.</p> </td></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/></strong></strong></dt> </dl> </td><td> <p>The object's <strong>Shutdown</strong> method was called.</p> </td></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.UnsupportedScheme\"/></strong></strong></dt> </dl> </td><td> <p>Unsupported protocol. </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>This method does not queue the media item for playback. To queue the item for playback, call <strong><see cref=\"M:SharpDX.MediaFoundation.PMediaPlayer.SetMediaItem(SharpDX.MediaFoundation.PMediaItem)\"/></strong>.</p><p>The <strong>CreateMediaItemFromURL</strong> method can be called either synchronously or asynchronously: </p><ul> <li>If <em>fSync</em> is <strong>TRUE</strong>, the method completes synchronously. The <strong><see cref=\"T:SharpDX.MediaFoundation.PMediaItem\"/></strong> reference is returned in the <em>ppMediaItem</em> parameter. </li> <li>If <em>fSync</em> is <strong><see cref=\"F:SharpDX.Result.False\"/></strong>, the method completes asynchronously. When the operation completes, the application's <strong><see cref=\"M:SharpDX.MediaFoundation.PMediaPlayerCallback.OnMediaPlayerEvent(SharpDX.MediaFoundation.PEventHeader@)\"/></strong> callback method is invoked. The event type is <strong><see cref=\"F:SharpDX.MediaFoundation.PEventType.MediaItemCreateD\"/></strong>. The event data contains the <strong><see cref=\"T:SharpDX.MediaFoundation.PMediaItem\"/></strong> reference for the new media item.</li> </ul><p>The callback interface is set when you first call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.PCreateMediaPlayer(System.String,SharpDX.Bool,System.Int32,SharpDX.MediaFoundation.PMediaPlayerCallback,System.IntPtr,SharpDX.MediaFoundation.PMediaPlayer@)\"/></strong> to create the MFPlay player object. If you do not provide a callback interface, the <em>fSync</em> parameter must be <strong>TRUE</strong>. Otherwise, <strong>CreateMediaItemFromURL</strong> returns <strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidRequest\"/></strong>. </p><p>If you make multiple asynchronous calls to <strong>CreateMediaItemFromURL</strong>, they are not guaranteed to complete in the same order. Use the <em>dwUserData</em> parameter to match created media items with pending requests.</p><p>Currently, this method returns <strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.UnsupportedScheme\"/></strong> if the URL specifies any of the following protocols: rtsp*, mms*, or mcast. If you want to use the Media Foundation network source with MFPlay, first use the Source Resolver to create the source, and then call <strong><see cref=\"M:SharpDX.MediaFoundation.PMediaPlayer.CreateMediaItemFromObject(SharpDX.ComObject,SharpDX.Bool,System.IntPtr,SharpDX.MediaFoundation.PMediaItem@)\"/></strong>.</p>Configuring the Source<p>Internally, this method creates a media source. To configure the media source, do the following:</p><ol> <li>Call <strong>QueryInterface</strong> on the <strong><see cref=\"T:SharpDX.MediaFoundation.PMediaPlayer\"/></strong> reference to get the <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interface.</li> <li>Call <strong>IPropertyStore::SetValue</strong> to set properties for the media source. For a list of configuration properties, see Configuring a Media Source. Third-party media sources may define custom properties.</li> <li>Call the <strong>CreateMediaItemFromURL</strong> method to create the media item.</li> </ol>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMediaPlayer::CreateMediaItemFromURL']/*\"/>\t\n            <msdn-id>dd374335</msdn-id>\t\n            <unmanaged>HRESULT IMFPMediaPlayer::CreateMediaItemFromURL([In] const wchar_t* pwszURL,[In] BOOL fSync,[In] ULONG_PTR dwUserData,[Out, Optional] IMFPMediaItem** ppMediaItem)</unmanaged>\t\n            <unmanaged-short>IMFPMediaPlayer::CreateMediaItemFromURL</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PMediaPlayer.CreateMediaItemFromObject(SharpDX.ComObject,SharpDX.Bool,System.IntPtr,SharpDX.MediaFoundation.PMediaItem@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Important</strong>??Deprecated. This API may be removed from future releases of Windows. Applications should use the Media Session for playback.</p><p>Creates a media item from an object.</p>\t\n            </summary>\t\n            <param name=\"iUnknownObjRef\">No documentation.</param>\t\n            <param name=\"fSync\">No documentation.</param>\t\n            <param name=\"dwUserData\">No documentation.</param>\t\n            <param name=\"mediaItemOut\">No documentation.</param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><strong>E_INVALIDARG</strong></strong></dt> </dl> </td><td> <p>Invalid argument.</p> </td></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidRequest\"/></strong></strong></dt> </dl> </td><td> <p>Invalid request. This error can occur when <em>fSync</em> is <strong><see cref=\"F:SharpDX.Result.False\"/></strong> and the application did not provide a callback interface. See Remarks.</p> </td></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/></strong></strong></dt> </dl> </td><td> <p>The object's <strong>Shutdown</strong> method was called.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>The <em>pIUnknownObj</em> parameter must specify one of the following:</p><ul> <li>A reference to a media source. Media sources expose the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaSource\"/></strong> interface. It is the caller's responsibility to call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaSource.Shutdown\"/></strong> on the media source.</li> <li>A reference to a byte stream. Byte streams expose the <strong><see cref=\"T:SharpDX.MediaFoundation.IByteStream\"/></strong> interface. Internally, the method calls the <strong><see cref=\"M:SharpDX.MediaFoundation.SourceResolver.CreateObjectFromByteStream_(System.IntPtr,System.String,System.Int32,SharpDX.ComObject,SharpDX.MediaFoundation.ObjectType@,SharpDX.ComObject@)\"/></strong> method to create a media source from the byte stream. Therefore, a byte-stream handler must be registered for the byte stream. For more information about byte-stream handlers, see Scheme Handlers and Byte-Stream Handlers. </li> </ul><p>This method does not queue the media item for playback. To queue the item for playback, call <strong><see cref=\"M:SharpDX.MediaFoundation.PMediaPlayer.SetMediaItem(SharpDX.MediaFoundation.PMediaItem)\"/></strong>.</p><p>The <strong>CreateMediaItemFromObject</strong> method can be called either synchronously or asynchronously: </p><ul> <li>If <em>fSync</em> is <strong>TRUE</strong>, the method completes synchronously. The <strong><see cref=\"T:SharpDX.MediaFoundation.PMediaItem\"/></strong> reference is returned in the <em>ppMediaItem</em> parameter. </li> <li>If <em>fSync</em> is <strong><see cref=\"F:SharpDX.Result.False\"/></strong>, the method completes asynchronously. When the operation completes, the application's <strong><see cref=\"M:SharpDX.MediaFoundation.PMediaPlayerCallback.OnMediaPlayerEvent(SharpDX.MediaFoundation.PEventHeader@)\"/></strong> callback method is invoked. The event type is <strong><see cref=\"F:SharpDX.MediaFoundation.PEventType.MediaItemCreateD\"/></strong>. The event data contains the <strong><see cref=\"T:SharpDX.MediaFoundation.PMediaItem\"/></strong> reference for the new media item.</li> </ul><p>The callback interface is set when you first call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.PCreateMediaPlayer(System.String,SharpDX.Bool,System.Int32,SharpDX.MediaFoundation.PMediaPlayerCallback,System.IntPtr,SharpDX.MediaFoundation.PMediaPlayer@)\"/></strong> to create the MFPlay player object. If you do not provide a callback interface, the <em>fSync</em> parameter must be <strong>TRUE</strong>. Otherwise, <strong>CreateMediaItemFromObject</strong> returns <strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidRequest\"/></strong>. </p><p>If you make multiple asynchronous calls to <strong>CreateMediaItemFromObject</strong>, they are not guaranteed to complete in the same order. Use the <em>dwUserData</em> parameter to match created media items with pending requests.</p>Configuring the Source<p>If <em>pIUnknownObj</em> points to a byte stream, you can configure the media source by performing the following steps:</p><ol> <li>Call <strong>QueryInterface</strong> on the <strong><see cref=\"T:SharpDX.MediaFoundation.PMediaPlayer\"/></strong> reference to get the <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interface.</li> <li>Call <strong>IPropertyStore::SetValue</strong> to set properties for the media source. For a list of configuration properties, see Configuring a Media Source. Third-party media sources may define custom properties.</li> <li>Call the <strong>CreateMediaItemFromObject</strong> method to create the media item.</li> </ol><p>If <em>pIUnknownObj</em> points to a media source, you can configure the source at the time that you create it.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMediaPlayer::CreateMediaItemFromObject']/*\"/>\t\n            <msdn-id>dd374334</msdn-id>\t\n            <unmanaged>HRESULT IMFPMediaPlayer::CreateMediaItemFromObject([In] IUnknown* pIUnknownObj,[In] BOOL fSync,[In] ULONG_PTR dwUserData,[Out, Optional] IMFPMediaItem** ppMediaItem)</unmanaged>\t\n            <unmanaged-short>IMFPMediaPlayer::CreateMediaItemFromObject</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PMediaPlayer.SetMediaItem(SharpDX.MediaFoundation.PMediaItem)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Important</strong>??Deprecated. This API may be removed from future releases of Windows. Applications should use the Media Session for playback.</p><p>Queues a media item for playback.</p>\t\n            </summary>\t\n            <param name=\"iMFPMediaItemRef\">No documentation.</param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><strong>E_INVALIDARG</strong></strong></dt> </dl> </td><td> <p>Invalid argument.</p> </td></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.DrmUnsupported\"/></strong></strong></dt> </dl> </td><td> <p>The media item contains protected content. MFPlay currently does not support protected content.</p> </td></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.NoAudioPlaybackDevice\"/></strong></strong></dt> </dl> </td><td> <p>No audio playback device was found. This error can occur if the media source contains audio, but no audio playback devices are available on the system.</p> </td></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/></strong></strong></dt> </dl> </td><td> <p>The object's <strong>Shutdown</strong> method was called.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>This method completes asynchronously.  When the operation completes, the application's <strong><see cref=\"M:SharpDX.MediaFoundation.PMediaPlayerCallback.OnMediaPlayerEvent(SharpDX.MediaFoundation.PEventHeader@)\"/></strong> callback method is invoked. The event type is <strong><see cref=\"F:SharpDX.MediaFoundation.PEventType.MediaItemSet\"/></strong>.</p><p>To create a media item, call <strong><see cref=\"M:SharpDX.MediaFoundation.PMediaPlayer.CreateMediaItemFromObject(SharpDX.ComObject,SharpDX.Bool,System.IntPtr,SharpDX.MediaFoundation.PMediaItem@)\"/></strong> or <strong><see cref=\"M:SharpDX.MediaFoundation.PMediaPlayer.CreateMediaItemFromURL(System.String,SharpDX.Bool,System.IntPtr,SharpDX.MediaFoundation.PMediaItem@)\"/></strong>. A media item must be used with the same MFPlay player object that created that item. If the media item was created by a different instance of the player object, <strong>SetMediaItem</strong> returns <strong>E_INVALIDARG</strong>.\t\n            </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMediaPlayer::SetMediaItem']/*\"/>\t\n            <msdn-id>dd374361</msdn-id>\t\n            <unmanaged>HRESULT IMFPMediaPlayer::SetMediaItem([In] IMFPMediaItem* pIMFPMediaItem)</unmanaged>\t\n            <unmanaged-short>IMFPMediaPlayer::SetMediaItem</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PMediaPlayer.ClearMediaItem\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Important</strong>??Deprecated. This API may be removed from future releases of Windows. Applications should use the Media Session for playback.</p><p>Clears the current media item.</p><p><strong>Note</strong>??This method is currently not implemented.</p>\t\n            </summary>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>This method stops playback and releases the player object's references to the current media item.</p><p>This method completes asynchronously.  When the operation completes, the application's <strong><see cref=\"M:SharpDX.MediaFoundation.PMediaPlayerCallback.OnMediaPlayerEvent(SharpDX.MediaFoundation.PEventHeader@)\"/></strong> callback method is invoked. The event type is <strong><see cref=\"F:SharpDX.MediaFoundation.PEventType.MediaItemCleared\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMediaPlayer::ClearMediaItem']/*\"/>\t\n            <msdn-id>dd374332</msdn-id>\t\n            <unmanaged>HRESULT IMFPMediaPlayer::ClearMediaItem()</unmanaged>\t\n            <unmanaged-short>IMFPMediaPlayer::ClearMediaItem</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PMediaPlayer.GetMediaItem(SharpDX.MediaFoundation.PMediaItem@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Important</strong>??Deprecated. This API may be removed from future releases of Windows. Applications should use the Media Session for playback.</p><p>Gets a reference to the current media item.</p>\t\n            </summary>\t\n            <param name=\"iMFPMediaItemOut\">No documentation.</param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><strong>E_FAIL</strong></strong></dt> </dl> </td><td> <p>There is no current media item.</p> </td></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.NotFound\"/></strong></strong></dt> </dl> </td><td> <p>There is no current media item.</p> </td></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/></strong></strong></dt> </dl> </td><td> <p>The object's <strong>Shutdown</strong> method was called.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>The <strong><see cref=\"M:SharpDX.MediaFoundation.PMediaPlayer.SetMediaItem(SharpDX.MediaFoundation.PMediaItem)\"/></strong> method is asynchronous. Therefore, while <strong>SetMediaItem</strong> is pending, <strong>GetMediaItem</strong> will not return the media item that was just set. Instead, the application should implement <strong><see cref=\"T:SharpDX.MediaFoundation.PMediaPlayerCallback\"/></strong> interface and handle the <strong><see cref=\"F:SharpDX.MediaFoundation.PEventType.MediaItemSet\"/></strong> event. For more information, see Receiving Events From the Player.</p><p>The previous remark also applies to setting the media item in the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.PCreateMediaPlayer(System.String,SharpDX.Bool,System.Int32,SharpDX.MediaFoundation.PMediaPlayerCallback,System.IntPtr,SharpDX.MediaFoundation.PMediaPlayer@)\"/></strong> function.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMediaPlayer::GetMediaItem']/*\"/>\t\n            <msdn-id>dd374342</msdn-id>\t\n            <unmanaged>HRESULT IMFPMediaPlayer::GetMediaItem([Out] IMFPMediaItem** ppIMFPMediaItem)</unmanaged>\t\n            <unmanaged-short>IMFPMediaPlayer::GetMediaItem</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PMediaPlayer.GetVolume(System.Single@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Important</strong>??Deprecated. This API may be removed from future releases of Windows. Applications should use the Media Session for playback.</p><p>Gets the current audio volume.</p>\t\n            </summary>\t\n            <param name=\"flVolumeRef\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMediaPlayer::GetVolume']/*\"/>\t\n            <msdn-id>dd374351</msdn-id>\t\n            <unmanaged>HRESULT IMFPMediaPlayer::GetVolume([Out] float* pflVolume)</unmanaged>\t\n            <unmanaged-short>IMFPMediaPlayer::GetVolume</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PMediaPlayer.SetVolume(System.Single)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Important</strong>??Deprecated. This API may be removed from future releases of Windows. Applications should use the Media Session for playback.</p><p>Sets the audio volume.</p>\t\n            </summary>\t\n            <param name=\"flVolume\">No documentation.</param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.OutOfRange\"/></strong></dt> </dl> </td><td> <p>The <em>flVolume</em> parameter is invalid.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>If you call this method before playback starts, the setting is applied after playback starts.</p><p>This method does not change the master volume level for the player's audio session. Instead, it adjusts the per-channel volume levels for audio stream(s) that belong to the current media item. Other streams in the audio session are not affected. For more information, see Managing the Audio Session.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMediaPlayer::SetVolume']/*\"/>\t\n            <msdn-id>dd374366</msdn-id>\t\n            <unmanaged>HRESULT IMFPMediaPlayer::SetVolume([In] float flVolume)</unmanaged>\t\n            <unmanaged-short>IMFPMediaPlayer::SetVolume</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PMediaPlayer.GetBalance(System.Single@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Important</strong>??Deprecated. This API may be removed from future releases of Windows. Applications should use the Media Session for playback.</p><p>Gets the current audio balance.</p>\t\n            </summary>\t\n            <param name=\"flBalanceRef\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMediaPlayer::GetBalance']/*\"/>\t\n            <msdn-id>dd374338</msdn-id>\t\n            <unmanaged>HRESULT IMFPMediaPlayer::GetBalance([Out] float* pflBalance)</unmanaged>\t\n            <unmanaged-short>IMFPMediaPlayer::GetBalance</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PMediaPlayer.SetBalance(System.Single)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Important</strong>??Deprecated. This API may be removed from future releases of Windows. Applications should use the Media Session for playback.</p><p>Sets the audio balance.</p>\t\n            </summary>\t\n            <param name=\"flBalance\">No documentation.</param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.OutOfRange\"/></strong></strong></dt> </dl> </td><td> <p>The <em>flBalance</em> parameter is invalid.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>If you call this method before playback starts, the setting is applied when playback starts.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMediaPlayer::SetBalance']/*\"/>\t\n            <msdn-id>dd374359</msdn-id>\t\n            <unmanaged>HRESULT IMFPMediaPlayer::SetBalance([In] float flBalance)</unmanaged>\t\n            <unmanaged-short>IMFPMediaPlayer::SetBalance</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PMediaPlayer.GetMute(SharpDX.Bool@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Important</strong>??Deprecated. This API may be removed from future releases of Windows. Applications should use the Media Session for playback.</p><p>Queries whether the audio is muted.</p>\t\n            </summary>\t\n            <param name=\"fMuteRef\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMediaPlayer::GetMute']/*\"/>\t\n            <msdn-id>dd374343</msdn-id>\t\n            <unmanaged>HRESULT IMFPMediaPlayer::GetMute([Out] BOOL* pfMute)</unmanaged>\t\n            <unmanaged-short>IMFPMediaPlayer::GetMute</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PMediaPlayer.SetMute(SharpDX.Bool)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Important</strong>??Deprecated. This API may be removed from future releases of Windows. Applications should use the Media Session for playback.</p><p>Mutes or unmutes the audio.</p>\t\n            </summary>\t\n            <param name=\"fMute\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>If you call this method before playback starts, the setting is applied after playback starts.</p><p> This method does not mute the entire audio session to which the player belongs. It mutes only the streams from the current media item. Other streams in the audio session are not affected. For more information, see Managing the Audio Session. \t\n            </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMediaPlayer::SetMute']/*\"/>\t\n            <msdn-id>dd374362</msdn-id>\t\n            <unmanaged>HRESULT IMFPMediaPlayer::SetMute([In] BOOL fMute)</unmanaged>\t\n            <unmanaged-short>IMFPMediaPlayer::SetMute</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PMediaPlayer.GetNativeVideoSize(SharpDX.DrawingSize@,SharpDX.DrawingSize@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Important</strong>??Deprecated. This API may be removed from future releases of Windows. Applications should use the Media Session for playback.</p><p>Gets the size and aspect ratio of the video. These values are computed before any scaling is done to fit the video into the destination window.</p>\t\n            </summary>\t\n            <param name=\"szVideoRef\">No documentation.</param>\t\n            <param name=\"szARVideoRef\">No documentation.</param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidRequest\"/></strong></strong></dt> </dl> </td><td> <p>The current media item does not contain video.</p> </td></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/></strong></strong></dt> </dl> </td><td> <p>The object's <strong>Shutdown</strong> method was called.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>At least one parameter must be non-<strong><c>null</c></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMediaPlayer::GetNativeVideoSize']/*\"/>\t\n            <msdn-id>dd374344</msdn-id>\t\n            <unmanaged>HRESULT IMFPMediaPlayer::GetNativeVideoSize([Out, Optional] SIZE* pszVideo,[Out, Optional] SIZE* pszARVideo)</unmanaged>\t\n            <unmanaged-short>IMFPMediaPlayer::GetNativeVideoSize</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PMediaPlayer.GetIdealVideoSize(SharpDX.DrawingSize@,SharpDX.DrawingSize@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Important</strong>??Deprecated. This API may be removed from future releases of Windows. Applications should use the Media Session for playback.</p><p>Gets the range of video sizes that can be displayed without significantly degrading performance or image quality.</p>\t\n            </summary>\t\n            <param name=\"szMinRef\">No documentation.</param>\t\n            <param name=\"szMaxRef\">No documentation.</param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidRequest\"/></strong></strong></dt> </dl> </td><td> <p>The current media item does not contain video.</p> </td></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/></strong></strong></dt> </dl> </td><td> <p>The object's <strong>Shutdown</strong> method was called.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>At least one parameter must be non-<strong><c>null</c></strong>. Sizes are given in pixels.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMediaPlayer::GetIdealVideoSize']/*\"/>\t\n            <msdn-id>dd374341</msdn-id>\t\n            <unmanaged>HRESULT IMFPMediaPlayer::GetIdealVideoSize([Out, Optional] SIZE* pszMin,[Out, Optional] SIZE* pszMax)</unmanaged>\t\n            <unmanaged-short>IMFPMediaPlayer::GetIdealVideoSize</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PMediaPlayer.SetVideoSourceRect(SharpDX.MediaFoundation.VideoNormalizedRect)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Important</strong>??Deprecated. This API may be removed from future releases of Windows. Applications should use the Media Session for playback.</p><p>Sets the video source rectangle.</p><p>MFPlay clips the video to this rectangle and stretches the rectangle to fill the video window.</p>\t\n            </summary>\t\n            <param name=\"nrcSourceRef\">No documentation.</param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidRequest\"/></strong></dt> </dl> </td><td> <p>The current media item does not contain video.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/></strong></dt> </dl> </td><td> <p>The object's <strong>Shutdown</strong> method was called.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>MFPlay stretches the source rectangle to fill the entire video window. By default, MFPlay maintains the source's correct aspect ratio, letterboxing if needed. The letterbox color is controlled by the <strong><see cref=\"M:SharpDX.MediaFoundation.PMediaPlayer.SetBorderColor(SharpDX.Color4)\"/></strong> method.</p><p>This method fails if no media item is currently set, or if the current media item does not contain video.</p><p> To set the video position before playback starts, call this method inside your event handler for the <strong><see cref=\"F:SharpDX.MediaFoundation.PEventType.MediaItemSet\"/></strong> event. For more information, see <strong><see cref=\"M:SharpDX.MediaFoundation.PMediaPlayerCallback.OnMediaPlayerEvent(SharpDX.MediaFoundation.PEventHeader@)\"/></strong>. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMediaPlayer::SetVideoSourceRect']/*\"/>\t\n            <msdn-id>dd743247</msdn-id>\t\n            <unmanaged>HRESULT IMFPMediaPlayer::SetVideoSourceRect([In] const MFVideoNormalizedRect* pnrcSource)</unmanaged>\t\n            <unmanaged-short>IMFPMediaPlayer::SetVideoSourceRect</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PMediaPlayer.GetVideoSourceRect(SharpDX.MediaFoundation.VideoNormalizedRect@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Important</strong>??Deprecated. This API may be removed from future releases of Windows. Applications should use the Media Session for playback.</p><p>Gets the video source rectangle.</p>\t\n            </summary>\t\n            <param name=\"nrcSourceRef\">No documentation.</param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidRequest\"/></strong></strong></dt> </dl> </td><td> <p>The current media item does not contain video.</p> </td></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/></strong></strong></dt> </dl> </td><td> <p>The object's <strong>Shutdown</strong> method was called.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMediaPlayer::GetVideoSourceRect']/*\"/>\t\n            <msdn-id>dd743246</msdn-id>\t\n            <unmanaged>HRESULT IMFPMediaPlayer::GetVideoSourceRect([Out] MFVideoNormalizedRect* pnrcSource)</unmanaged>\t\n            <unmanaged-short>IMFPMediaPlayer::GetVideoSourceRect</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PMediaPlayer.SetAspectRatioMode(System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Important</strong>??Deprecated. This API may be removed from future releases of Windows. Applications should use the Media Session for playback.</p><p>Specifies whether the aspect ratio of the video is preserved during playback.</p>\t\n            </summary>\t\n            <param name=\"dwAspectRatioMode\">No documentation.</param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidRequest\"/></strong></strong></dt> </dl> </td><td> <p>The current media item does not contain video.</p> </td></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/></strong></strong></dt> </dl> </td><td> <p>The object's <strong>Shutdown</strong> method was called.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>This method fails if no media item is currently set, or if the current media item does not contain video.</p><p>To set the aspect-ratio mode before playback starts, call this method inside your event handler for the <strong><see cref=\"F:SharpDX.MediaFoundation.PEventType.MediaItemSet\"/></strong> event. For more information, see <strong><see cref=\"M:SharpDX.MediaFoundation.PMediaPlayerCallback.OnMediaPlayerEvent(SharpDX.MediaFoundation.PEventHeader@)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMediaPlayer::SetAspectRatioMode']/*\"/>\t\n            <msdn-id>dd374358</msdn-id>\t\n            <unmanaged>HRESULT IMFPMediaPlayer::SetAspectRatioMode([In] unsigned int dwAspectRatioMode)</unmanaged>\t\n            <unmanaged-short>IMFPMediaPlayer::SetAspectRatioMode</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PMediaPlayer.GetAspectRatioMode(System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Important</strong>??Deprecated. This API may be removed from future releases of Windows. Applications should use the Media Session for playback.</p><p>Gets the current aspect-ratio correction mode. This mode controls whether the aspect ratio of the video is preserved during playback.</p>\t\n            </summary>\t\n            <param name=\"dwAspectRatioModeRef\">No documentation.</param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidRequest\"/></strong></dt> </dl> </td><td> <p>The current media item does not contain video.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/></strong></dt> </dl> </td><td> <p>The object's <strong>Shutdown</strong> method was called.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMediaPlayer::GetAspectRatioMode']/*\"/>\t\n            <msdn-id>dd374337</msdn-id>\t\n            <unmanaged>HRESULT IMFPMediaPlayer::GetAspectRatioMode([Out] unsigned int* pdwAspectRatioMode)</unmanaged>\t\n            <unmanaged-short>IMFPMediaPlayer::GetAspectRatioMode</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PMediaPlayer.GetVideoWindow(System.IntPtr@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Important</strong>??Deprecated. This API may be removed from future releases of Windows. Applications should use the Media Session for playback.</p><p>Gets the window where the video is displayed.</p>\t\n            </summary>\t\n            <param name=\"hwndVideoRef\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>The video window is specified when you first call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.PCreateMediaPlayer(System.String,SharpDX.Bool,System.Int32,SharpDX.MediaFoundation.PMediaPlayerCallback,System.IntPtr,SharpDX.MediaFoundation.PMediaPlayer@)\"/></strong> to create the MFPlay player object.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMediaPlayer::GetVideoWindow']/*\"/>\t\n            <msdn-id>dd374350</msdn-id>\t\n            <unmanaged>HRESULT IMFPMediaPlayer::GetVideoWindow([Out] HWND* phwndVideo)</unmanaged>\t\n            <unmanaged-short>IMFPMediaPlayer::GetVideoWindow</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PMediaPlayer.UpdateVideo\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Important</strong>??Deprecated. This API may be removed from future releases of Windows. Applications should use the Media Session for playback.</p><p>Updates the video frame.</p>\t\n            </summary>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidRequest\"/></strong></strong></dt> </dl> </td><td> <p>The current media item does not contain video.</p> </td></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/></strong></strong></dt> </dl> </td><td> <p>The object's <strong>Shutdown</strong> method was called.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>Call this method when your application's video playback window receives either a <strong>WM_PAINT</strong> or <strong>WM_SIZE</strong> message. This method performs two functions: </p><ul> <li>Ensures that the video frame is repainted while playback is paused or stopped.  </li> <li>Adjusts the displayed video to match the current size of the video window.</li> </ul><p><strong>Important</strong>??Call the GDI <strong>BeginPaint</strong> function before calling  <strong>UpdateVideo</strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMediaPlayer::UpdateVideo']/*\"/>\t\n            <msdn-id>dd743248</msdn-id>\t\n            <unmanaged>HRESULT IMFPMediaPlayer::UpdateVideo()</unmanaged>\t\n            <unmanaged-short>IMFPMediaPlayer::UpdateVideo</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PMediaPlayer.SetBorderColor(SharpDX.Color4)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Important</strong>??Deprecated. This API may be removed from future releases of Windows. Applications should use the Media Session for playback.</p><p>Sets the color for the video border. The border color is used to letterbox the video.</p>\t\n            </summary>\t\n            <param name=\"clr\">No documentation.</param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidRequest\"/></strong></strong></dt> </dl> </td><td> <p>The current media item does not contain video.</p> </td></tr> <tr><td> <dl> <dt><strong>M<strong>F_E_SHUTDOWN</strong></strong></dt> </dl> </td><td> <p>The object's <strong>Shutdown</strong> method was called.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>This method fails if no media item is currently set, or if the current media item does not contain video.</p><p>To set the border color before playback starts, call this method inside your event handler for the <strong><see cref=\"F:SharpDX.MediaFoundation.PEventType.MediaItemSet\"/></strong> event. For more information, see <strong><see cref=\"M:SharpDX.MediaFoundation.PMediaPlayerCallback.OnMediaPlayerEvent(SharpDX.MediaFoundation.PEventHeader@)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMediaPlayer::SetBorderColor']/*\"/>\t\n            <msdn-id>dd374360</msdn-id>\t\n            <unmanaged>HRESULT IMFPMediaPlayer::SetBorderColor([In] COLORREF Clr)</unmanaged>\t\n            <unmanaged-short>IMFPMediaPlayer::SetBorderColor</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PMediaPlayer.GetBorderColor(SharpDX.Color4@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Important</strong>??Deprecated. This API may be removed from future releases of Windows. Applications should use the Media Session for playback.</p><p>Gets the current color of the video border. The border color is used to letterbox the video.</p>\t\n            </summary>\t\n            <param name=\"clrRef\">No documentation.</param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidRequest\"/></strong></dt> </dl> </td><td> <p>The current media item does not contain video.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/></strong></dt> </dl> </td><td> <p>The object's <strong>Shutdown</strong> method was called.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMediaPlayer::GetBorderColor']/*\"/>\t\n            <msdn-id>dd374339</msdn-id>\t\n            <unmanaged>HRESULT IMFPMediaPlayer::GetBorderColor([Out] COLORREF* pClr)</unmanaged>\t\n            <unmanaged-short>IMFPMediaPlayer::GetBorderColor</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PMediaPlayer.InsertEffect(SharpDX.ComObject,SharpDX.Bool)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Important</strong>??Deprecated. This API may be removed from future releases of Windows. Applications should use the Media Session for playback.</p><p>Applies an audio or video effect to playback.</p>\t\n            </summary>\t\n            <param name=\"effectRef\">No documentation.</param>\t\n            <param name=\"fOptional\">No documentation.</param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidIndex\"/></strong></strong></dt> </dl> </td><td> <p>This effect was already added.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>The object specified in the <em>pEffect</em> parameter can implement either a video effect or an audio effect. The effect is applied to any media items set after the method is called. It is not applied to the current media item. </p><p>For each media item, the effect is applied to the first selected stream of the matching type (audio or video). If a media item has two selected streams of the same type, the second stream does not receive the effect. The effect is ignored if the media item does not contain a stream that matches the effect type. For example, if you set a video effect and play a file that contains just audio, the video effect is ignored, although no error is raised.</p><p>The effect is applied to all subsequent media items, until the application removes the effect. To remove an effect, call <strong><see cref=\"M:SharpDX.MediaFoundation.PMediaPlayer.RemoveEffect(SharpDX.ComObject)\"/></strong> or <strong><see cref=\"M:SharpDX.MediaFoundation.PMediaPlayer.RemoveAllEffects\"/></strong>.</p><p>If you set multiple effects of the same type (audio or video), they are applied in the same order in which you call <strong>InsertEffect</strong>.</p>Remote Playback Optimizations<p>Audio and video effects might be incompatible with optimizations that are used for remote playback. The following remarks apply only to audio or video effects that are actually used during playback:</p><ul> <li>If you mark an audio or video effect as required, by setting <em>fOptional</em> to <strong><see cref=\"F:SharpDX.Result.False\"/></strong>, MFPlay disables remote playback optimizations.</li> <li>Otherwise, if all audio/video effects are marked as optional, MFPlay  might drop the effects, in order to enable remote playback optimizations.</li> </ul><p>In other words, required effects have priority over remote optimizations, but optional effects do not.</p><p>Remote optimizations might be disabled for other reasons. For example, they are disabled if you set the <strong><see cref=\"F:SharpDX.MediaFoundation.MfpCreationOptions.MfpOptionNoRemoteDesktopOptimization\"/></strong> option when you create the player object. In that case, MFPlay will attempt to insert any optional effects. </p><p>Non-audio, non-video effects do not affect remote optimizations. Also, if you insert a required effect but the source does not contain any streams of that type, remote optimizations are not disabled.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMediaPlayer::InsertEffect']/*\"/>\t\n            <msdn-id>dd374352</msdn-id>\t\n            <unmanaged>HRESULT IMFPMediaPlayer::InsertEffect([In] IUnknown* pEffect,[In] BOOL fOptional)</unmanaged>\t\n            <unmanaged-short>IMFPMediaPlayer::InsertEffect</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PMediaPlayer.RemoveEffect(SharpDX.ComObject)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Important</strong>??Deprecated. This API may be removed from future releases of Windows. Applications should use the Media Session for playback.</p><p>Removes an effect that was added with the <strong><see cref=\"M:SharpDX.MediaFoundation.PMediaPlayer.InsertEffect(SharpDX.ComObject,SharpDX.Bool)\"/></strong> method.</p>\t\n            </summary>\t\n            <param name=\"effectRef\">No documentation.</param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.NotFound\"/></strong></dt> </dl> </td><td> <p>The effect was not found.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>The change applies to the next media item that is set on the player. The effect is not removed from the current media item.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMediaPlayer::RemoveEffect']/*\"/>\t\n            <msdn-id>dd374356</msdn-id>\t\n            <unmanaged>HRESULT IMFPMediaPlayer::RemoveEffect([In] IUnknown* pEffect)</unmanaged>\t\n            <unmanaged-short>IMFPMediaPlayer::RemoveEffect</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PMediaPlayer.RemoveAllEffects\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Important</strong>??Deprecated. This API may be removed from future releases of Windows. Applications should use the Media Session for playback.</p><p>Removes all effects that were added with the <strong><see cref=\"M:SharpDX.MediaFoundation.PMediaPlayer.InsertEffect(SharpDX.ComObject,SharpDX.Bool)\"/></strong> method.</p>\t\n            </summary>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>The change applies to the next media item that is set on the player. The effects are not removed from the current media item.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMediaPlayer::RemoveAllEffects']/*\"/>\t\n            <msdn-id>dd374355</msdn-id>\t\n            <unmanaged>HRESULT IMFPMediaPlayer::RemoveAllEffects()</unmanaged>\t\n            <unmanaged-short>IMFPMediaPlayer::RemoveAllEffects</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PMediaPlayer.Shutdown\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Important</strong>??Deprecated. This API may be removed from future releases of Windows. Applications should use the Media Session for playback.</p><p>Shuts down the MFPlay player object and releases any resources the object is using.</p>\t\n            </summary>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>After this method is called, most <strong><see cref=\"T:SharpDX.MediaFoundation.PMediaPlayer\"/></strong> methods return <strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/></strong>. Also, any media items created from this instance of the player object are invalidated and most <strong><see cref=\"T:SharpDX.MediaFoundation.PMediaItem\"/></strong> methods also return <strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/></strong>.</p><p>The player object automatically shuts itself down when its reference count reaches zero. You can use the <strong>Shutdown</strong> method to shut down the player before all of the references have been released.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMediaPlayer::Shutdown']/*\"/>\t\n            <msdn-id>dd374367</msdn-id>\t\n            <unmanaged>HRESULT IMFPMediaPlayer::Shutdown()</unmanaged>\t\n            <unmanaged-short>IMFPMediaPlayer::Shutdown</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.PMediaPlayer.Rate\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Important</strong>??Deprecated. This API may be removed from future releases of Windows. Applications should use the Media Session for playback.</p><p>Gets the current playback rate.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMediaPlayer::GetRate']/*\"/>\t\n            <msdn-id>dd374346</msdn-id>\t\n            <unmanaged>GetRate / SetRate</unmanaged>\t\n            <unmanaged-short>GetRate</unmanaged-short>\t\n            <unmanaged>HRESULT IMFPMediaPlayer::GetRate([Out] float* pflRate)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.PMediaPlayer.State\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Important</strong>??Deprecated. This API may be removed from future releases of Windows. Applications should use the Media Session for playback.</p><p>Gets the current playback state of the MFPlay player object.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This method can be called after the player object has been shut down.</p><p>Many of the <strong><see cref=\"T:SharpDX.MediaFoundation.PMediaPlayer\"/></strong> methods complete asynchronously. While an asynchronous operation is pending, the current state is not updated until the operation completes. When the operation completes, the application receives an event callback, and the new state is given in the <strong><see cref=\"T:SharpDX.MediaFoundation.PEventHeader\"/></strong> structure that is passed to the callback.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMediaPlayer::GetState']/*\"/>\t\n            <msdn-id>dd374347</msdn-id>\t\n            <unmanaged>GetState</unmanaged>\t\n            <unmanaged-short>GetState</unmanaged-short>\t\n            <unmanaged>HRESULT IMFPMediaPlayer::GetState([Out] MFP_MEDIAPLAYER_STATE* peState)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.PMediaPlayer.MediaItem\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Important</strong>??Deprecated. This API may be removed from future releases of Windows. Applications should use the Media Session for playback.</p><p>Gets a reference to the current media item.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The <strong><see cref=\"M:SharpDX.MediaFoundation.PMediaPlayer.SetMediaItem(SharpDX.MediaFoundation.PMediaItem)\"/></strong> method is asynchronous. Therefore, while <strong>SetMediaItem</strong> is pending, <strong>GetMediaItem</strong> will not return the media item that was just set. Instead, the application should implement <strong><see cref=\"T:SharpDX.MediaFoundation.PMediaPlayerCallback\"/></strong> interface and handle the <strong><see cref=\"F:SharpDX.MediaFoundation.PEventType.MediaItemSet\"/></strong> event. For more information, see Receiving Events From the Player.</p><p>The previous remark also applies to setting the media item in the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.PCreateMediaPlayer(System.String,SharpDX.Bool,System.Int32,SharpDX.MediaFoundation.PMediaPlayerCallback,System.IntPtr,SharpDX.MediaFoundation.PMediaPlayer@)\"/></strong> function.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMediaPlayer::GetMediaItem']/*\"/>\t\n            <msdn-id>dd374342</msdn-id>\t\n            <unmanaged>GetMediaItem / SetMediaItem</unmanaged>\t\n            <unmanaged-short>GetMediaItem</unmanaged-short>\t\n            <unmanaged>HRESULT IMFPMediaPlayer::GetMediaItem([Out] IMFPMediaItem** ppIMFPMediaItem)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.PMediaPlayer.Volume\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Important</strong>??Deprecated. This API may be removed from future releases of Windows. Applications should use the Media Session for playback.</p><p>Gets the current audio volume.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMediaPlayer::GetVolume']/*\"/>\t\n            <msdn-id>dd374351</msdn-id>\t\n            <unmanaged>GetVolume / SetVolume</unmanaged>\t\n            <unmanaged-short>GetVolume</unmanaged-short>\t\n            <unmanaged>HRESULT IMFPMediaPlayer::GetVolume([Out] float* pflVolume)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.PMediaPlayer.Balance\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Important</strong>??Deprecated. This API may be removed from future releases of Windows. Applications should use the Media Session for playback.</p><p>Gets the current audio balance.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMediaPlayer::GetBalance']/*\"/>\t\n            <msdn-id>dd374338</msdn-id>\t\n            <unmanaged>GetBalance / SetBalance</unmanaged>\t\n            <unmanaged-short>GetBalance</unmanaged-short>\t\n            <unmanaged>HRESULT IMFPMediaPlayer::GetBalance([Out] float* pflBalance)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.PMediaPlayer.Mute\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Important</strong>??Deprecated. This API may be removed from future releases of Windows. Applications should use the Media Session for playback.</p><p>Queries whether the audio is muted.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMediaPlayer::GetMute']/*\"/>\t\n            <msdn-id>dd374343</msdn-id>\t\n            <unmanaged>GetMute / SetMute</unmanaged>\t\n            <unmanaged-short>GetMute</unmanaged-short>\t\n            <unmanaged>HRESULT IMFPMediaPlayer::GetMute([Out] BOOL* pfMute)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.PMediaPlayer.VideoSourceRect\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Important</strong>??Deprecated. This API may be removed from future releases of Windows. Applications should use the Media Session for playback.</p><p>Gets the video source rectangle.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMediaPlayer::GetVideoSourceRect']/*\"/>\t\n            <msdn-id>dd743246</msdn-id>\t\n            <unmanaged>GetVideoSourceRect / SetVideoSourceRect</unmanaged>\t\n            <unmanaged-short>GetVideoSourceRect</unmanaged-short>\t\n            <unmanaged>HRESULT IMFPMediaPlayer::GetVideoSourceRect([Out] MFVideoNormalizedRect* pnrcSource)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.PMediaPlayer.AspectRatioMode\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Important</strong>??Deprecated. This API may be removed from future releases of Windows. Applications should use the Media Session for playback.</p><p>Gets the current aspect-ratio correction mode. This mode controls whether the aspect ratio of the video is preserved during playback.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMediaPlayer::GetAspectRatioMode']/*\"/>\t\n            <msdn-id>dd374337</msdn-id>\t\n            <unmanaged>GetAspectRatioMode / SetAspectRatioMode</unmanaged>\t\n            <unmanaged-short>GetAspectRatioMode</unmanaged-short>\t\n            <unmanaged>HRESULT IMFPMediaPlayer::GetAspectRatioMode([Out] unsigned int* pdwAspectRatioMode)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.PMediaPlayer.VideoWindow\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Important</strong>??Deprecated. This API may be removed from future releases of Windows. Applications should use the Media Session for playback.</p><p>Gets the window where the video is displayed.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The video window is specified when you first call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.PCreateMediaPlayer(System.String,SharpDX.Bool,System.Int32,SharpDX.MediaFoundation.PMediaPlayerCallback,System.IntPtr,SharpDX.MediaFoundation.PMediaPlayer@)\"/></strong> to create the MFPlay player object.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMediaPlayer::GetVideoWindow']/*\"/>\t\n            <msdn-id>dd374350</msdn-id>\t\n            <unmanaged>GetVideoWindow</unmanaged>\t\n            <unmanaged-short>GetVideoWindow</unmanaged-short>\t\n            <unmanaged>HRESULT IMFPMediaPlayer::GetVideoWindow([Out] HWND* phwndVideo)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.PMediaPlayer.BorderColor\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Important</strong>??Deprecated. This API may be removed from future releases of Windows. Applications should use the Media Session for playback.</p><p>Gets the current color of the video border. The border color is used to letterbox the video.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMediaPlayer::GetBorderColor']/*\"/>\t\n            <msdn-id>dd374339</msdn-id>\t\n            <unmanaged>GetBorderColor / SetBorderColor</unmanaged>\t\n            <unmanaged-short>GetBorderColor</unmanaged-short>\t\n            <unmanaged>HRESULT IMFPMediaPlayer::GetBorderColor([Out] COLORREF* pClr)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.PMediaPlayerCallback\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Important</strong>??Deprecated. This API may be removed from future releases of Windows. Applications should use the Media Session for playback.</p><p>Callback interface for the <strong><see cref=\"T:SharpDX.MediaFoundation.PMediaPlayer\"/></strong> interface.</p><p>To set the callback, pass an <strong><see cref=\"T:SharpDX.MediaFoundation.PMediaPlayerCallback\"/></strong> reference to the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.PCreateMediaPlayer(System.String,SharpDX.Bool,System.Int32,SharpDX.MediaFoundation.PMediaPlayerCallback,System.IntPtr,SharpDX.MediaFoundation.PMediaPlayer@)\"/></strong> function in the  <em>pCallback</em> parameter. The application implements the <strong><see cref=\"T:SharpDX.MediaFoundation.PMediaPlayerCallback\"/></strong> interface.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMediaPlayerCallback']/*\"/>\t\n            <msdn-id>dd374330</msdn-id>\t\n            <unmanaged>IMFPMediaPlayerCallback</unmanaged>\t\n            <unmanaged-short>IMFPMediaPlayerCallback</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PMediaPlayerCallback.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.PMediaPlayerCallback\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PMediaPlayerCallback.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.PMediaPlayerCallback\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.PMediaPlayerCallback\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PMediaPlayerCallback.OnMediaPlayerEvent(SharpDX.MediaFoundation.PEventHeader@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Important</strong>??Deprecated. This API may be removed from future releases of Windows. Applications should use the Media Session for playback.</p><p>Called by the MFPlay player object to notify the application of a playback event.</p>\t\n            </summary>\t\n            <param name=\"eventHeaderRef\">No documentation.</param>\t\n            <remarks>\t\n            <p> The specific type of playback event is given in the <strong>eEventType</strong> member of the <strong><see cref=\"T:SharpDX.MediaFoundation.PEventHeader\"/></strong> structure. This structure contains information that is common to all of the event types. Some event types use extended structures. A set of macros is defined for casting the <em>pEventHeader</em> reference to the correct structure type. For more information, see <strong><see cref=\"T:SharpDX.MediaFoundation.PEventType\"/></strong>. </p><p>It is safe to call <strong><see cref=\"T:SharpDX.MediaFoundation.PMediaPlayer\"/></strong> and <strong><see cref=\"T:SharpDX.MediaFoundation.PMediaItem\"/></strong> methods inside the <strong>OnMediaPlayer</strong> method. MFPlay is guaranteed not to reenter the <strong>OnMediaPlayer</strong> method. That is, calls to <strong>OnMediaPlayer</strong> are serialized, and the method will not be invoked again from inside <strong>OnMediaPlayer</strong>. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMediaPlayerCallback::OnMediaPlayerEvent']/*\"/>\t\n            <msdn-id>dd374331</msdn-id>\t\n            <unmanaged>void IMFPMediaPlayerCallback::OnMediaPlayerEvent([In] MFP_EVENT_HEADER* pEventHeader)</unmanaged>\t\n            <unmanaged-short>IMFPMediaPlayerCallback::OnMediaPlayerEvent</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.PMPClient\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Enables a media source to receive a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.PMPHost\"/></strong> interface. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>If a media source exposes this interface, the Protected Media Path (PMP) Media Session calls <strong>SetPMPHost</strong> with a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.PMPHost\"/></strong> interface. The media source can use the <strong><see cref=\"T:SharpDX.MediaFoundation.PMPHost\"/></strong> interface to create objects in the PMP process.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMPClient']/*\"/>\t\n            <msdn-id>ms702104</msdn-id>\t\n            <unmanaged>IMFPMPClient</unmanaged>\t\n            <unmanaged-short>IMFPMPClient</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PMPClient.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.PMPClient\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PMPClient.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.PMPClient\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.PMPClient\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PMPClient.SetPMPHost(SharpDX.MediaFoundation.PMPHost)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Provides a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.PMPHost\"/></strong> interface. </p>\t\n            </summary>\t\n            <param name=\"pMPHostRef\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>The <strong><see cref=\"T:SharpDX.MediaFoundation.PMPHost\"/></strong> reference is apartment threaded. The media source must add the reference to the global interface table (GIT) before using it.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMPClient::SetPMPHost']/*\"/>\t\n            <msdn-id>ms703915</msdn-id>\t\n            <unmanaged>HRESULT IMFPMPClient::SetPMPHost([In] IMFPMPHost* pPMPHost)</unmanaged>\t\n            <unmanaged-short>IMFPMPClient::SetPMPHost</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.PMPClient.PMPHost\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Provides a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.PMPHost\"/></strong> interface. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The <strong><see cref=\"T:SharpDX.MediaFoundation.PMPHost\"/></strong> reference is apartment threaded. The media source must add the reference to the global interface table (GIT) before using it.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMPClient::SetPMPHost']/*\"/>\t\n            <msdn-id>ms703915</msdn-id>\t\n            <unmanaged>SetPMPHost</unmanaged>\t\n            <unmanaged-short>SetPMPHost</unmanaged-short>\t\n            <unmanaged>HRESULT IMFPMPClient::SetPMPHost([In] IMFPMPHost* pPMPHost)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.PMPHost\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Enables a media source in the application process to create objects in the protected media path (PMP) process.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This interface is used when a media source resides in the application process but the Media Session resides in a PMP process. The media source can use this interface to create objects in the PMP process. For example, to play DRM-protected content, the media source typically must create an input trust authority (ITA) in the PMP process. </p><p>To use this interface, the media source implements the <strong><see cref=\"T:SharpDX.MediaFoundation.PMPClient\"/></strong> interface. The PMP Media Session calls <strong><see cref=\"M:SharpDX.MediaFoundation.PMPClient.SetPMPHost(SharpDX.MediaFoundation.PMPHost)\"/></strong> on the media source, passing in a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.PMPHost\"/></strong> interface.</p><p>You can also get a reference to this interface by calling <strong><see cref=\"M:SharpDX.MediaFoundation.ServiceProvider.GetService(System.Guid,System.Guid,System.IntPtr@)\"/></strong> on the PMP Media Session, using the service identifier <strong>MF_PMP_SERVICE</strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMPHost']/*\"/>\t\n            <msdn-id>ms705635</msdn-id>\t\n            <unmanaged>IMFPMPHost</unmanaged>\t\n            <unmanaged-short>IMFPMPHost</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PMPHost.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.PMPHost\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PMPHost.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.PMPHost\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.PMPHost\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PMPHost.LockProcess\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Blocks the protected media path (PMP) process from ending. </p>\t\n            </summary>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>When this method is called, it increments the lock count on the PMP process. For every call to this method, the application should make a corresponding call to <strong><see cref=\"M:SharpDX.MediaFoundation.PMPHost.UnlockProcess\"/></strong>, which decrements the lock count. When the PMP process is ready to exit, it waits for about 3 seconds, or until the lock count reaches zero, before exiting.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMPHost::LockProcess']/*\"/>\t\n            <msdn-id>ms697003</msdn-id>\t\n            <unmanaged>HRESULT IMFPMPHost::LockProcess()</unmanaged>\t\n            <unmanaged-short>IMFPMPHost::LockProcess</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PMPHost.UnlockProcess\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Decrements the lock count on the protected media path (PMP) process. Call this method once for each call to <strong><see cref=\"M:SharpDX.MediaFoundation.PMPHost.LockProcess\"/></strong>. </p>\t\n            </summary>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMPHost::UnlockProcess']/*\"/>\t\n            <msdn-id>ms698984</msdn-id>\t\n            <unmanaged>HRESULT IMFPMPHost::UnlockProcess()</unmanaged>\t\n            <unmanaged-short>IMFPMPHost::UnlockProcess</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PMPHost.CreateObjectByCLSID_(System.Guid,System.IntPtr,System.Guid,System.IntPtr)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Creates an object in the protect media path (PMP) process, from a CLSID. </p>\t\n            </summary>\t\n            <param name=\"clsid\"><dd> <p> The CLSID of the object to create. </p> </dd></param>\t\n            <param name=\"streamRef\"><dd> <p>A reference to the <strong><see cref=\"T:SharpDX.Win32.IStream\"/></strong> interface. This parameter can be <strong><c>null</c></strong>. If this parameter is not <strong><c>null</c></strong>, the PMP host queries the created object for the <strong>IPersistStream</strong> interface and calls <strong>IPersistStream::Load</strong>, passing in the <em>pStream</em> reference. </p> </dd></param>\t\n            <param name=\"riid\"><dd> <p> The interface identifier (IID) of the interface to retrieve. </p> </dd></param>\t\n            <param name=\"vOut\"><dd> <p> Receives a reference to the requested interface. The caller must release the interface. </p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p> You can use the <em>pStream</em> parameter to initialize the object after it is created. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMPHost::CreateObjectByCLSID']/*\"/>\t\n            <msdn-id>ms698995</msdn-id>\t\n            <unmanaged>HRESULT IMFPMPHost::CreateObjectByCLSID([In] const GUID&amp; clsid,[In] IStream* pStream,[In] const GUID&amp; riid,[In] void** ppv)</unmanaged>\t\n            <unmanaged-short>IMFPMPHost::CreateObjectByCLSID</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.PMPServer\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Creates an object in the protected media path (PMP) process.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMPServer']/*\"/>\t\n            <msdn-id>ms704806</msdn-id>\t\n            <unmanaged>IMFPMPServer</unmanaged>\t\n            <unmanaged-short>IMFPMPServer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PMPServer.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.PMPServer\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PMPServer.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.PMPServer\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.PMPServer\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PMPServer.LockProcess\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Blocks the protected media path (PMP) process from ending.</p>\t\n            </summary>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>When this method is called, it increments the lock count on the PMP process. For every call to this method, the application should make a corresponding call to <see cref=\"M:SharpDX.MediaFoundation.PMPServer.UnlockProcess\"/>, which decrements the lock count. When the PMP process is ready to exit, it waits for about 3 seconds, or until the lock count reaches zero, before exiting.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMPServer::LockProcess']/*\"/>\t\n            <msdn-id>ms701590</msdn-id>\t\n            <unmanaged>HRESULT IMFPMPServer::LockProcess()</unmanaged>\t\n            <unmanaged-short>IMFPMPServer::LockProcess</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PMPServer.UnlockProcess\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Decrements the lock count on the protected media path (PMP) process. Call this method once for each call to <see cref=\"M:SharpDX.MediaFoundation.PMPServer.LockProcess\"/>.</p>\t\n            </summary>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMPServer::UnlockProcess']/*\"/>\t\n            <msdn-id>ms696204</msdn-id>\t\n            <unmanaged>HRESULT IMFPMPServer::UnlockProcess()</unmanaged>\t\n            <unmanaged-short>IMFPMPServer::UnlockProcess</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PMPServer.CreateObjectByCLSID(System.Guid,System.Guid,System.IntPtr@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Creates an object in the protected media path (PMP) process.</p>\t\n            </summary>\t\n            <param name=\"clsid\"><dd> <p>CLSID of the object to create.</p> </dd></param>\t\n            <param name=\"riid\"><dd> <p>Interface identifier of the interface to retrieve.</p> </dd></param>\t\n            <param name=\"objectOut\"><dd> <p>Receives a reference to the requested interface. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPMPServer::CreateObjectByCLSID']/*\"/>\t\n            <msdn-id>ms704806</msdn-id>\t\n            <unmanaged>HRESULT IMFPMPServer::CreateObjectByCLSID([In] const GUID&amp; clsid,[In] const GUID&amp; riid,[Out] void** ppObject)</unmanaged>\t\n            <unmanaged-short>IMFPMPServer::CreateObjectByCLSID</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.PresentationClock\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Represents a presentation clock, which is used to schedule when samples are rendered and to synchronize multiple streams.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>To create a new instance of the presentation clock, call the <see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreatePresentationClock(SharpDX.MediaFoundation.PresentationClock@)\"/> function. The presentation clock must have a time source, which is an object that provides the clock times. For example, the audio renderer is a time source that uses the sound card to drive the clock. Time sources expose the <see cref=\"T:SharpDX.MediaFoundation.PresentationTimeSource\"/> interface. To set the time source, call <strong>SetTimeSource</strong>. The presentation clock does not begin running until the <strong>Start</strong> method is called.</p><p>To get the presentation clock from the Media Session, call <see cref=\"M:SharpDX.MediaFoundation.MediaSession.GetClock(SharpDX.MediaFoundation.Clock@)\"/>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPresentationClock']/*\"/>\t\n            <msdn-id>ms701581</msdn-id>\t\n            <unmanaged>IMFPresentationClock</unmanaged>\t\n            <unmanaged-short>IMFPresentationClock</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PresentationClock.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.PresentationClock\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PresentationClock.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.PresentationClock\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.PresentationClock\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PresentationClock.SetTimeSource(SharpDX.MediaFoundation.PresentationTimeSource)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Sets the time source for the presentation clock. The time source is the object that drives the clock by providing the current time.</p>\t\n            </summary>\t\n            <param name=\"timeSourceRef\"><dd> <p>Pointer to the <see cref=\"T:SharpDX.MediaFoundation.PresentationTimeSource\"/> interface of the time source.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.ClockNotSimple\"/></strong></dt> </dl> </td><td> <p>The time source does not have a frequency of 10 MHz.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.NotInitializeD\"/></strong></dt> </dl> </td><td> <p>The time source has not been initialized.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>The presentation clock cannot start until it has a time source.</p><p>The time source is automatically registered to receive state change notifications from the clock, through the time source's <see cref=\"T:SharpDX.MediaFoundation.ClockStateSink\"/> interface, which all time sources must implement.</p><p>This time source have a frequency of 10 MHz. See <see cref=\"M:SharpDX.MediaFoundation.Clock.GetClockCharacteristics(System.Int32@)\"/>. If not, the method returns <see cref=\"F:SharpDX.MediaFoundation.ResultCode.ClockNotSimple\"/>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPresentationClock::SetTimeSource']/*\"/>\t\n            <msdn-id>ms694835</msdn-id>\t\n            <unmanaged>HRESULT IMFPresentationClock::SetTimeSource([In, Optional] IMFPresentationTimeSource* pTimeSource)</unmanaged>\t\n            <unmanaged-short>IMFPresentationClock::SetTimeSource</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PresentationClock.GetTimeSource(SharpDX.MediaFoundation.PresentationTimeSource@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves the clock's presentation time source.</p>\t\n            </summary>\t\n            <param name=\"timeSourceOut\"><dd> <p>Receives a reference to the time source's <see cref=\"T:SharpDX.MediaFoundation.PresentationTimeSource\"/> interface. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.ClockNoTimeSource\"/></strong></dt> </dl> </td><td> <p>No time source was set on this clock.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPresentationClock::GetTimeSource']/*\"/>\t\n            <msdn-id>ms704730</msdn-id>\t\n            <unmanaged>HRESULT IMFPresentationClock::GetTimeSource([Out] IMFPresentationTimeSource** ppTimeSource)</unmanaged>\t\n            <unmanaged-short>IMFPresentationClock::GetTimeSource</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PresentationClock.GetTime(System.Int64@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Retrieves the latest clock time. </p>\t\n            </summary>\t\n            <param name=\"hnsClockTimeRef\"><dd> <p> Receives the latest clock time, in 100-nanosecond units. The time is relative to when the clock was last started. </p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.ClockNoTimeSource\"/></strong></dt> </dl> </td><td> <p> The clock does not have a presentation time source. Call <strong><see cref=\"M:SharpDX.MediaFoundation.PresentationClock.SetTimeSource(SharpDX.MediaFoundation.PresentationTimeSource)\"/></strong>. </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>This method does not attempt to smooth out jitter or otherwise account for any inaccuracies in the clock time.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPresentationClock::GetTime']/*\"/>\t\n            <msdn-id>ms696209</msdn-id>\t\n            <unmanaged>HRESULT IMFPresentationClock::GetTime([Out] longlong* phnsClockTime)</unmanaged>\t\n            <unmanaged-short>IMFPresentationClock::GetTime</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PresentationClock.AddClockStateSink(SharpDX.MediaFoundation.ClockStateSink)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Registers an object to be notified whenever the clock starts, stops, or pauses, or changes rate.</p>\t\n            </summary>\t\n            <param name=\"stateSinkRef\"><dd> <p>Pointer to the object's <see cref=\"T:SharpDX.MediaFoundation.ClockStateSink\"/> interface.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>Before releasing the object, call <see cref=\"M:SharpDX.MediaFoundation.PresentationClock.RemoveClockStateSink(SharpDX.MediaFoundation.ClockStateSink)\"/> to unregister the object for state-change notifications.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPresentationClock::AddClockStateSink']/*\"/>\t\n            <msdn-id>ms703129</msdn-id>\t\n            <unmanaged>HRESULT IMFPresentationClock::AddClockStateSink([In, Optional] IMFClockStateSink* pStateSink)</unmanaged>\t\n            <unmanaged-short>IMFPresentationClock::AddClockStateSink</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PresentationClock.RemoveClockStateSink(SharpDX.MediaFoundation.ClockStateSink)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Unregisters an object that is receiving state-change notifications from the clock.</p>\t\n            </summary>\t\n            <param name=\"stateSinkRef\"><dd> <p>Pointer to the object's <see cref=\"T:SharpDX.MediaFoundation.ClockStateSink\"/> interface.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPresentationClock::RemoveClockStateSink']/*\"/>\t\n            <msdn-id>ms703032</msdn-id>\t\n            <unmanaged>HRESULT IMFPresentationClock::RemoveClockStateSink([In, Optional] IMFClockStateSink* pStateSink)</unmanaged>\t\n            <unmanaged-short>IMFPresentationClock::RemoveClockStateSink</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PresentationClock.Start(System.Int64)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Starts the presentation clock.</p>\t\n            </summary>\t\n            <param name=\"llClockStartOffset\"><dd> <p>Initial starting time, in 100-nanosecond units. At the time the <strong>Start</strong> method is called, the clock's <see cref=\"M:SharpDX.MediaFoundation.PresentationClock.GetTime(System.Int64@)\"/> method returns this value, and the clock time increments from there. If the value is PRESENTATION_CURRENT_POSITION, the clock starts from its current position. Use this value if the clock is paused and you want to restart it from the same position.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.ClockNoTimeSource\"/></strong></dt> </dl> </td><td> <p>No time source was set on this clock.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>This method is valid in all states (stopped, paused, or running).</p><p>If the clock is paused and restarted from the same position (<em>llClockStartOffset</em> is PRESENTATION_CURRENT_POSITION), the presentation clock sends an <see cref=\"M:SharpDX.MediaFoundation.ClockStateSink.OnClockRestart(System.Int64)\"/> notification. Otherwise, the clock sends an <see cref=\"M:SharpDX.MediaFoundation.ClockStateSink.OnClockStart(System.Int64,System.Int64)\"/> notification.</p><p>The presentation clock initiates the state change by calling <strong>OnClockStart</strong> or <strong>OnClockRestart</strong> on the clock's time source. This call is made synchronously. If it fails, the state change does not occur. If the call succeeds, the state changes, and the clock notifies the other state-change subscribers by calling their <strong>OnClockStart</strong> or <strong>OnClockRestart</strong> methods. These calls are made asynchronously.</p><p>If the clock is already running, calling <strong>Start</strong> again has the effect of seeking the clock to the new <em>StartOffset</em> position.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPresentationClock::Start']/*\"/>\t\n            <msdn-id>ms702290</msdn-id>\t\n            <unmanaged>HRESULT IMFPresentationClock::Start([In] longlong llClockStartOffset)</unmanaged>\t\n            <unmanaged-short>IMFPresentationClock::Start</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PresentationClock.Stop\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Stops the presentation clock. While the clock is stopped, the clock time does not advance, and the clock's <see cref=\"M:SharpDX.MediaFoundation.PresentationClock.GetTime(System.Int64@)\"/> method returns zero.</p>\t\n            </summary>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.ClockNoTimeSource\"/></strong></dt> </dl> </td><td> <p>No time source was set on this clock.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.ClockStateAlreadySet\"/></strong></dt> </dl> </td><td> <p>The clock is already stopped.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>This method is valid when the clock is running or paused.</p><p>The presentation clock initiates the state change by calling <see cref=\"M:SharpDX.MediaFoundation.ClockStateSink.OnClockStop(System.Int64)\"/> on the clock's time source. This call is made synchronously. If it fails, the state change does not occur. If the call succeeds, the state changes, and the clock notifies the other state-change subscribers by calling their <strong>OnClockStop</strong> methods. These calls are made asynchronously.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPresentationClock::Stop']/*\"/>\t\n            <msdn-id>ms697195</msdn-id>\t\n            <unmanaged>HRESULT IMFPresentationClock::Stop()</unmanaged>\t\n            <unmanaged-short>IMFPresentationClock::Stop</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PresentationClock.Pause\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Pauses the presentation clock. While the clock is paused, the clock time does not advance, and the clock's <see cref=\"M:SharpDX.MediaFoundation.PresentationClock.GetTime(System.Int64@)\"/> returns the time at which the clock was paused.</p>\t\n            </summary>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.ClockNoTimeSource\"/></strong></dt> </dl> </td><td> <p>No time source was set on this clock.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.ClockStateAlreadySet\"/></strong></dt> </dl> </td><td> <p>The clock is already paused.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidRequest\"/></strong></dt> </dl> </td><td> <p>The clock is stopped. This request is not valid when the clock is stopped.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>This method is valid when the clock is running. It is not valid when the clock is paused or stopped.</p><p>The presentation clock initiates the state change by calling <see cref=\"M:SharpDX.MediaFoundation.ClockStateSink.OnClockPause(System.Int64)\"/> on the clock's time source. This call is made synchronously. If it fails, the state change does not occur. If the call succeeds, the state changes, and the clock notifies the other state-change subscribers by calling their <strong>OnClockPause</strong> methods. These calls are made asynchronously.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPresentationClock::Pause']/*\"/>\t\n            <msdn-id>ms696201</msdn-id>\t\n            <unmanaged>HRESULT IMFPresentationClock::Pause()</unmanaged>\t\n            <unmanaged-short>IMFPresentationClock::Pause</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.PresentationClock.TimeSource\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves the clock's presentation time source.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPresentationClock::GetTimeSource']/*\"/>\t\n            <msdn-id>ms704730</msdn-id>\t\n            <unmanaged>GetTimeSource / SetTimeSource</unmanaged>\t\n            <unmanaged-short>GetTimeSource</unmanaged-short>\t\n            <unmanaged>HRESULT IMFPresentationClock::GetTimeSource([Out] IMFPresentationTimeSource** ppTimeSource)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.PresentationClock.Time\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Retrieves the latest clock time. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This method does not attempt to smooth out jitter or otherwise account for any inaccuracies in the clock time.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPresentationClock::GetTime']/*\"/>\t\n            <msdn-id>ms696209</msdn-id>\t\n            <unmanaged>GetTime</unmanaged>\t\n            <unmanaged-short>GetTime</unmanaged-short>\t\n            <unmanaged>HRESULT IMFPresentationClock::GetTime([Out] longlong* phnsClockTime)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.PresentationDescriptor\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Describes the details of a presentation. A <em>presentation</em> is a set of related media streams that share a common presentation time. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Presentation descriptors are used to configure media sources and some media sinks. To get the presentation descriptor from a media source, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaSource.CreatePresentationDescriptor(SharpDX.MediaFoundation.PresentationDescriptor@)\"/></strong>. To create a new presentation descriptor, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreatePresentationDescriptor(System.Int32,SharpDX.MediaFoundation.StreamDescriptor[],SharpDX.MediaFoundation.PresentationDescriptor@)\"/></strong>.</p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPresentationDescriptor']/*\"/>\t\n            <msdn-id>ms703990</msdn-id>\t\n            <unmanaged>IMFPresentationDescriptor</unmanaged>\t\n            <unmanaged-short>IMFPresentationDescriptor</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PresentationDescriptor.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.PresentationDescriptor\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PresentationDescriptor.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.PresentationDescriptor\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.PresentationDescriptor\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PresentationDescriptor.GetStreamDescriptorCount(System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves the number of stream descriptors in the presentation. Each stream descriptor contains information about one stream in the media source. To retrieve a stream descriptor, call the <strong><see cref=\"M:SharpDX.MediaFoundation.PresentationDescriptor.GetStreamDescriptorByIndex(System.Int32,SharpDX.Bool@,SharpDX.MediaFoundation.StreamDescriptor@)\"/></strong> method.</p>\t\n            </summary>\t\n            <param name=\"dwDescriptorCountRef\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPresentationDescriptor::GetStreamDescriptorCount']/*\"/>\t\n            <msdn-id>ms701621</msdn-id>\t\n            <unmanaged>HRESULT IMFPresentationDescriptor::GetStreamDescriptorCount([Out] unsigned int* pdwDescriptorCount)</unmanaged>\t\n            <unmanaged-short>IMFPresentationDescriptor::GetStreamDescriptorCount</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PresentationDescriptor.GetStreamDescriptorByIndex(System.Int32,SharpDX.Bool@,SharpDX.MediaFoundation.StreamDescriptor@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves a stream descriptor for a stream in the presentation. The stream descriptor contains information about the stream.</p>\t\n            </summary>\t\n            <param name=\"dwIndex\"><dd> <p>Zero-based index of the stream. To find the number of streams in the presentation, call the <strong><see cref=\"M:SharpDX.MediaFoundation.PresentationDescriptor.GetStreamDescriptorCount(System.Int32@)\"/></strong> method.</p> </dd></param>\t\n            <param name=\"fSelectedRef\"><dd> <p>Receives a Boolean value. The value is <strong>TRUE</strong> if the stream is currently selected, or <strong><see cref=\"F:SharpDX.Result.False\"/></strong> if the stream is currently deselected. If a stream is selected, the media source generates data for that stream when <strong><see cref=\"M:SharpDX.MediaFoundation.MediaSource.Start(SharpDX.MediaFoundation.PresentationDescriptor,System.Nullable{System.Guid},System.Nullable{SharpDX.Win32.Variant})\"/></strong> is called. The media source will not generated data for deselected streams. To select a stream, call <strong><see cref=\"M:SharpDX.MediaFoundation.PresentationDescriptor.SelectStream(System.Int32)\"/></strong>.To deselect a stream, call <strong><see cref=\"M:SharpDX.MediaFoundation.PresentationDescriptor.DeselectStream(System.Int32)\"/></strong>.</p> </dd></param>\t\n            <param name=\"descriptorOut\"><dd> <p>Receives a reference to the stream descriptor's <strong><see cref=\"T:SharpDX.MediaFoundation.StreamDescriptor\"/></strong> interface. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPresentationDescriptor::GetStreamDescriptorByIndex']/*\"/>\t\n            <msdn-id>ms694924</msdn-id>\t\n            <unmanaged>HRESULT IMFPresentationDescriptor::GetStreamDescriptorByIndex([In] unsigned int dwIndex,[Out] BOOL* pfSelected,[Out] IMFStreamDescriptor** ppDescriptor)</unmanaged>\t\n            <unmanaged-short>IMFPresentationDescriptor::GetStreamDescriptorByIndex</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PresentationDescriptor.SelectStream(System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Selects a stream in the presentation.</p>\t\n            </summary>\t\n            <param name=\"dwDescriptorIndex\"><dd> <p>The stream number to select, indexed from zero. To find the number of streams in the presentation, call <strong><see cref=\"M:SharpDX.MediaFoundation.PresentationDescriptor.GetStreamDescriptorCount(System.Int32@)\"/></strong>.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong>E_INVALIDARG</strong></dt> </dl> </td><td> <p><em>dwDescriptorIndex</em> is out of range.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> If a stream is selected, the media source will generate data for that stream. The media source will not generated data for deselected streams. To deselect a stream, call <strong><see cref=\"M:SharpDX.MediaFoundation.PresentationDescriptor.DeselectStream(System.Int32)\"/></strong>. </p><p> To query whether a stream is selected, call <strong><see cref=\"M:SharpDX.MediaFoundation.PresentationDescriptor.GetStreamDescriptorByIndex(System.Int32,SharpDX.Bool@,SharpDX.MediaFoundation.StreamDescriptor@)\"/></strong>. </p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPresentationDescriptor::SelectStream']/*\"/>\t\n            <msdn-id>ms696272</msdn-id>\t\n            <unmanaged>HRESULT IMFPresentationDescriptor::SelectStream([In] unsigned int dwDescriptorIndex)</unmanaged>\t\n            <unmanaged-short>IMFPresentationDescriptor::SelectStream</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PresentationDescriptor.DeselectStream(System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Deselects a stream in the presentation.</p>\t\n            </summary>\t\n            <param name=\"dwDescriptorIndex\"><dd> <p> The stream number to deselect, indexed from zero. To find the number of streams in the presentation, call the <strong><see cref=\"M:SharpDX.MediaFoundation.PresentationDescriptor.GetStreamDescriptorCount(System.Int32@)\"/></strong> method. </p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded. </p> </td></tr> <tr><td> <dl> <dt><strong>E_INVALIDARG</strong></dt> </dl> </td><td> <p><em>dwDescriptorIndex</em> is out of range. </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> If a stream is deselected, no data is generated for that stream. To select the stream again, call <strong><see cref=\"M:SharpDX.MediaFoundation.PresentationDescriptor.SelectStream(System.Int32)\"/></strong>. </p><p> To query whether a stream is selected, call <strong><see cref=\"M:SharpDX.MediaFoundation.PresentationDescriptor.GetStreamDescriptorByIndex(System.Int32,SharpDX.Bool@,SharpDX.MediaFoundation.StreamDescriptor@)\"/></strong>. </p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPresentationDescriptor::DeselectStream']/*\"/>\t\n            <msdn-id>ms696266</msdn-id>\t\n            <unmanaged>HRESULT IMFPresentationDescriptor::DeselectStream([In] unsigned int dwDescriptorIndex)</unmanaged>\t\n            <unmanaged-short>IMFPresentationDescriptor::DeselectStream</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PresentationDescriptor.Clone(SharpDX.MediaFoundation.PresentationDescriptor@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Creates a copy of this presentation descriptor.</p>\t\n            </summary>\t\n            <param name=\"presentationDescriptorOut\"><dd> <p>Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.PresentationDescriptor\"/></strong> interface of the new presentation descriptor. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p> This method performs a shallow copy of the presentation descriptor. The stream descriptors are not cloned. Therefore, use caution when modifying the presentation presentation descriptor or its stream descriptors. </p><p> If the original presentation descriptor is from a media source, do not modify the presentation descriptor unless the source is stopped. If you use the presentation descriptor to configure a media sink, do not modify the presentation descriptor after the sink is configured. </p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPresentationDescriptor::Clone']/*\"/>\t\n            <msdn-id>ms694028</msdn-id>\t\n            <unmanaged>HRESULT IMFPresentationDescriptor::Clone([Out] IMFPresentationDescriptor** ppPresentationDescriptor)</unmanaged>\t\n            <unmanaged-short>IMFPresentationDescriptor::Clone</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.PresentationDescriptor.StreamDescriptorCount\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves the number of stream descriptors in the presentation. Each stream descriptor contains information about one stream in the media source. To retrieve a stream descriptor, call the <strong><see cref=\"M:SharpDX.MediaFoundation.PresentationDescriptor.GetStreamDescriptorByIndex(System.Int32,SharpDX.Bool@,SharpDX.MediaFoundation.StreamDescriptor@)\"/></strong> method.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPresentationDescriptor::GetStreamDescriptorCount']/*\"/>\t\n            <msdn-id>ms701621</msdn-id>\t\n            <unmanaged>GetStreamDescriptorCount</unmanaged>\t\n            <unmanaged-short>GetStreamDescriptorCount</unmanaged-short>\t\n            <unmanaged>HRESULT IMFPresentationDescriptor::GetStreamDescriptorCount([Out] unsigned int* pdwDescriptorCount)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.PresentationTimeSource\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Provides the clock times for the presentation clock. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This interface is implemented by presentation time sources. A presentation time source is an object that provides the clock time for the presentation clock. For example, the audio renderer is a presentation time source. The rate at which the audio renderer consumes audio samples determines the clock time. If the audio format is 44100 samples per second, the audio renderer will report that one second has passed for every 44100 audio samples it plays. In this case, the timing is provided by the sound card.</p><p>To set the presentation time source on the presentation clock, call <strong><see cref=\"M:SharpDX.MediaFoundation.PresentationClock.SetTimeSource(SharpDX.MediaFoundation.PresentationTimeSource)\"/></strong> with a reference to the time source's <strong><see cref=\"T:SharpDX.MediaFoundation.PresentationTimeSource\"/></strong> interface.</p><p>A presentation time source must also implement the <strong><see cref=\"T:SharpDX.MediaFoundation.ClockStateSink\"/></strong> interface. The presentaton clock uses this interface to notify the time source when the clock state changes.</p><p>Media Foundation provides a presentation time source that is based on the system clock. To create this object, call the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateSystemTimeSource(SharpDX.MediaFoundation.PresentationTimeSource@)\"/></strong> function.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPresentationTimeSource']/*\"/>\t\n            <msdn-id>ms704711</msdn-id>\t\n            <unmanaged>IMFPresentationTimeSource</unmanaged>\t\n            <unmanaged-short>IMFPresentationTimeSource</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PresentationTimeSource.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.PresentationTimeSource\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PresentationTimeSource.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.PresentationTimeSource\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.PresentationTimeSource\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.PresentationTimeSource.GetUnderlyingClock(SharpDX.MediaFoundation.Clock@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves the underlying clock that the presentation time source uses to generate its clock times.</p>\t\n            </summary>\t\n            <param name=\"clockOut\"><dd> <p>Receives a reference to the clock's <strong><see cref=\"T:SharpDX.MediaFoundation.Clock\"/></strong> interface. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.NoClock\"/></strong></dt> </dl> </td><td> <p>This time source does not expose an underlying clock.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>A presentation time source must support stopping, starting, pausing, and rate changes. However, in many cases the time source derives its clock times from a hardware clock or other device. The underlying clock is always running, and might not support rate changes.</p><p>Optionally, a time source can expose the underlying clock by implementing this method. The underlying clock is always running, even when the presentation time source is paused or stopped. (Therefore, the underlying clock returns the <see cref=\"F:SharpDX.MediaFoundation.ClockCharacteristicsFlags.AlwaysRunning\"/> flag in the <strong><see cref=\"M:SharpDX.MediaFoundation.Clock.GetClockCharacteristics(System.Int32@)\"/></strong> method).</p><p>The underlying clock is useful if you want to make decisions based on the clock times while the presentation clock is stopped or paused.</p><p>If the time source does not expose an underlying clock, the method returns <see cref=\"F:SharpDX.MediaFoundation.ResultCode.NoClock\"/>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPresentationTimeSource::GetUnderlyingClock']/*\"/>\t\n            <msdn-id>ms694071</msdn-id>\t\n            <unmanaged>HRESULT IMFPresentationTimeSource::GetUnderlyingClock([Out] IMFClock** ppClock)</unmanaged>\t\n            <unmanaged-short>IMFPresentationTimeSource::GetUnderlyingClock</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.PresentationTimeSource.UnderlyingClock\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves the underlying clock that the presentation time source uses to generate its clock times.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>A presentation time source must support stopping, starting, pausing, and rate changes. However, in many cases the time source derives its clock times from a hardware clock or other device. The underlying clock is always running, and might not support rate changes.</p><p>Optionally, a time source can expose the underlying clock by implementing this method. The underlying clock is always running, even when the presentation time source is paused or stopped. (Therefore, the underlying clock returns the <see cref=\"F:SharpDX.MediaFoundation.ClockCharacteristicsFlags.AlwaysRunning\"/> flag in the <strong><see cref=\"M:SharpDX.MediaFoundation.Clock.GetClockCharacteristics(System.Int32@)\"/></strong> method).</p><p>The underlying clock is useful if you want to make decisions based on the clock times while the presentation clock is stopped or paused.</p><p>If the time source does not expose an underlying clock, the method returns <see cref=\"F:SharpDX.MediaFoundation.ResultCode.NoClock\"/>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFPresentationTimeSource::GetUnderlyingClock']/*\"/>\t\n            <msdn-id>ms694071</msdn-id>\t\n            <unmanaged>GetUnderlyingClock</unmanaged>\t\n            <unmanaged-short>GetUnderlyingClock</unmanaged-short>\t\n            <unmanaged>HRESULT IMFPresentationTimeSource::GetUnderlyingClock([Out] IMFClock** ppClock)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.QualityAdvise\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Enables the quality manager to adjust the audio or video quality of a component in the pipeline.</p><p>This interface is exposed by pipeline components that can adjust their quality. Typically it is exposed by decoders and stream sinks. For example, the enhanced video renderer (EVR) implements this interface. However, media sources can also implement this interface.</p><p>To get a reference to this interface from a media source, call <strong><see cref=\"M:SharpDX.MediaFoundation.ServiceProvider.GetService(System.Guid,System.Guid,System.IntPtr@)\"/></strong> with the service identifier MF_QUALITY_SERVICES. For all other pipeline objects (transforms and media sinks), call <strong>QueryInterface</strong>.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The quality manager typically obtains this interface when the quality manager's <strong><see cref=\"M:SharpDX.MediaFoundation.QualityManager.NotifyTopology(SharpDX.MediaFoundation.Topology)\"/></strong> method is called.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFQualityAdvise']/*\"/>\t\n            <msdn-id>ms695241</msdn-id>\t\n            <unmanaged>IMFQualityAdvise</unmanaged>\t\n            <unmanaged-short>IMFQualityAdvise</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.QualityAdvise.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.QualityAdvise\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.QualityAdvise.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.QualityAdvise\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.QualityAdvise\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.QualityAdvise.SetDropMode(SharpDX.MediaFoundation.QualityDropMode)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Sets the drop mode. In drop mode, a component drops samples, more or less aggressively depending on the level of the drop mode.</p>\t\n            </summary>\t\n            <param name=\"eDropMode\"><dd> <p>Requested drop mode, specified as a member of the <strong><see cref=\"T:SharpDX.MediaFoundation.QualityDropMode\"/></strong> enumeration.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.NoMoreDropModes\"/></strong></dt> </dl> </td><td> <p>The component does not support the specified mode or any higher modes.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>If this method is called on a media source, the media source might switch between thinned and non-thinned output. If that occurs, the affected streams will send an <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.StreamThinMode\"/> event to indicate the transition. The operation is asynchronous; after <strong>SetDropMode</strong> returns, you might receive samples that were queued before the transition. The <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.StreamThinMode\"/> event marks the exact point in the stream where the transition occurs.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFQualityAdvise::SetDropMode']/*\"/>\t\n            <msdn-id>ms694861</msdn-id>\t\n            <unmanaged>HRESULT IMFQualityAdvise::SetDropMode([In] MF_QUALITY_DROP_MODE eDropMode)</unmanaged>\t\n            <unmanaged-short>IMFQualityAdvise::SetDropMode</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.QualityAdvise.SetQualityLevel(SharpDX.MediaFoundation.QualityLevel)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Sets the quality level. The quality level determines how the component consumes or produces samples.</p>\t\n            </summary>\t\n            <param name=\"eQualityLevel\"><dd> <p>Requested quality level, specified as a member of the <strong><see cref=\"T:SharpDX.MediaFoundation.QualityLevel\"/></strong> enumeration.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.NoMoreQualityLevels\"/></strong></dt> </dl> </td><td> <p>The component does not support the specified quality level or any levels below it.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFQualityAdvise::SetQualityLevel']/*\"/>\t\n            <msdn-id>ms705619</msdn-id>\t\n            <unmanaged>HRESULT IMFQualityAdvise::SetQualityLevel([In] MF_QUALITY_LEVEL eQualityLevel)</unmanaged>\t\n            <unmanaged-short>IMFQualityAdvise::SetQualityLevel</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.QualityAdvise.GetDropMode(SharpDX.MediaFoundation.QualityDropMode@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves the current drop mode.</p>\t\n            </summary>\t\n            <param name=\"eDropModeRef\"><dd> <p>Receives the drop mode, specified as a member of the <strong><see cref=\"T:SharpDX.MediaFoundation.QualityDropMode\"/></strong> enumeration.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFQualityAdvise::GetDropMode']/*\"/>\t\n            <msdn-id>ms702987</msdn-id>\t\n            <unmanaged>HRESULT IMFQualityAdvise::GetDropMode([Out] MF_QUALITY_DROP_MODE* peDropMode)</unmanaged>\t\n            <unmanaged-short>IMFQualityAdvise::GetDropMode</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.QualityAdvise.GetQualityLevel(SharpDX.MediaFoundation.QualityLevel@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves the current quality level.</p>\t\n            </summary>\t\n            <param name=\"eQualityLevelRef\"><dd> <p>Receives the quality level, specified as a member of the <strong><see cref=\"T:SharpDX.MediaFoundation.QualityLevel\"/></strong> enumeration.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFQualityAdvise::GetQualityLevel']/*\"/>\t\n            <msdn-id>ms701591</msdn-id>\t\n            <unmanaged>HRESULT IMFQualityAdvise::GetQualityLevel([Out] MF_QUALITY_LEVEL* peQualityLevel)</unmanaged>\t\n            <unmanaged-short>IMFQualityAdvise::GetQualityLevel</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.QualityAdvise.DropTime(System.Int64)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Drops samples over a specified interval of time.</p>\t\n            </summary>\t\n            <param name=\"hnsAmountToDrop\"><dd> <p>Amount of time to drop, in 100-nanosecond units. This value is always absolute. If the method is called multiple times, do not add the times from previous calls.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.DroptimeNotSupported\"/></strong></dt> </dl> </td><td> <p>The object does not support this method.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>Ideally the quality manager can prevent a renderer from falling behind. But if this does occur, then simply lowering quality does not guarantee the renderer will ever catch up. As a result, audio and video might fall out of sync. To correct this problem, the quality manager can call <strong>DropTime</strong> to request that the renderer drop samples quickly over a specified time interval. After that period, the renderer stops dropping samples.</p><p>This method is primarily intended for the video renderer. Dropped audio samples cause audio glitching, which is not desirable.</p><p>If a component does not support this method, it should return <see cref=\"F:SharpDX.MediaFoundation.ResultCode.DroptimeNotSupported\"/>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFQualityAdvise::DropTime']/*\"/>\t\n            <msdn-id>ms697431</msdn-id>\t\n            <unmanaged>HRESULT IMFQualityAdvise::DropTime([In] longlong hnsAmountToDrop)</unmanaged>\t\n            <unmanaged-short>IMFQualityAdvise::DropTime</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.QualityAdvise.DropMode\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves the current drop mode.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFQualityAdvise::GetDropMode']/*\"/>\t\n            <msdn-id>ms702987</msdn-id>\t\n            <unmanaged>GetDropMode / SetDropMode</unmanaged>\t\n            <unmanaged-short>GetDropMode</unmanaged-short>\t\n            <unmanaged>HRESULT IMFQualityAdvise::GetDropMode([Out] MF_QUALITY_DROP_MODE* peDropMode)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.QualityAdvise.QualityLevel\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves the current quality level.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFQualityAdvise::GetQualityLevel']/*\"/>\t\n            <msdn-id>ms701591</msdn-id>\t\n            <unmanaged>GetQualityLevel / SetQualityLevel</unmanaged>\t\n            <unmanaged-short>GetQualityLevel</unmanaged-short>\t\n            <unmanaged>HRESULT IMFQualityAdvise::GetQualityLevel([Out] MF_QUALITY_LEVEL* peQualityLevel)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.QualityAdvise2\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Enables a pipeline object to adjust its own audio or video quality, in response to quality messages.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This interface enables a pipeline object to respond to quality messages from the media sink. Currently, it is supported only for video decoders.</p><p>If a video decoder exposes <strong><see cref=\"T:SharpDX.MediaFoundation.QualityAdvise\"/></strong> but not <strong><see cref=\"T:SharpDX.MediaFoundation.QualityAdvise2\"/></strong>, the quality manager controls quality adjustments for the decoder. In this case, the quality manager responds to <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.QualityNotify\"/> events from the Enhanced Video Renderer (EVR) by calling <strong><see cref=\"T:SharpDX.MediaFoundation.QualityAdvise\"/></strong> methods on the decoder.</p><p>If the decoder exposes <strong><see cref=\"T:SharpDX.MediaFoundation.QualityAdvise2\"/></strong>, the quality manager forwards the <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.QualityNotify\"/> events to the decoder and does not adjust the decoder's quality settings. The decoder should respond to these events by adjusting its own quality settings internally.</p><p>The preceding remarks apply to the default implementation of the quality manager; custom quality managers can implement other behaviors.</p><p>This interface is available on Windows?Vista if Platform Update Supplement for Windows?Vista is installed.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFQualityAdvise2']/*\"/>\t\n            <msdn-id>dd743249</msdn-id>\t\n            <unmanaged>IMFQualityAdvise2</unmanaged>\t\n            <unmanaged-short>IMFQualityAdvise2</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.QualityAdvise2.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.QualityAdvise2\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.QualityAdvise2.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.QualityAdvise2\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.QualityAdvise2\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.QualityAdvise2.NotifyQualityEvent(SharpDX.MediaFoundation.MediaEvent,System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Forwards an <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.QualityNotify\"/> event from the media sink.</p>\t\n            </summary>\t\n            <param name=\"eventRef\">No documentation.</param>\t\n            <param name=\"dwFlagsRef\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>This interface is available on Windows?Vista if Platform Update Supplement for Windows?Vista is installed.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFQualityAdvise2::NotifyQualityEvent']/*\"/>\t\n            <msdn-id>dd743250</msdn-id>\t\n            <unmanaged>HRESULT IMFQualityAdvise2::NotifyQualityEvent([In, Optional] IMFMediaEvent* pEvent,[Out] unsigned int* pdwFlags)</unmanaged>\t\n            <unmanaged-short>IMFQualityAdvise2::NotifyQualityEvent</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.QualityAdviseLimits\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Queries an object for the number of <em>quality modes</em> it supports. Quality modes are used to adjust the trade-off between quality and speed when rendering audio or video.</p><p>The default presenter for the <em>enhanced video renderer</em> (EVR) implements this interface. The EVR uses the interface to respond to quality messages from the quality manager.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFQualityAdviseLimits']/*\"/>\t\n            <msdn-id>dd374511</msdn-id>\t\n            <unmanaged>IMFQualityAdviseLimits</unmanaged>\t\n            <unmanaged-short>IMFQualityAdviseLimits</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.QualityAdviseLimits.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.QualityAdviseLimits\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.QualityAdviseLimits.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.QualityAdviseLimits\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.QualityAdviseLimits\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.QualityAdviseLimits.GetMaximumDropMode(SharpDX.MediaFoundation.QualityDropMode@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Gets the maximum <em>drop mode</em>. A higher drop mode means that the object will, if needed, drop samples more aggressively to match the presentation clock.</p>\t\n            </summary>\t\n            <param name=\"eDropModeRef\"><dd> <p>Receives the maximum drop mode, specified as a member of the <strong><see cref=\"T:SharpDX.MediaFoundation.QualityDropMode\"/></strong> enumeration.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>To get the current drop mode, call the <strong><see cref=\"M:SharpDX.MediaFoundation.QualityAdvise.GetDropMode(SharpDX.MediaFoundation.QualityDropMode@)\"/></strong> method. To set the drop mode, call the <strong><see cref=\"M:SharpDX.MediaFoundation.QualityAdvise.SetDropMode(SharpDX.MediaFoundation.QualityDropMode)\"/></strong> method.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFQualityAdviseLimits::GetMaximumDropMode']/*\"/>\t\n            <msdn-id>dd374512</msdn-id>\t\n            <unmanaged>HRESULT IMFQualityAdviseLimits::GetMaximumDropMode([Out] MF_QUALITY_DROP_MODE* peDropMode)</unmanaged>\t\n            <unmanaged-short>IMFQualityAdviseLimits::GetMaximumDropMode</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.QualityAdviseLimits.GetMinimumQualityLevel(SharpDX.MediaFoundation.QualityLevel@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Gets the minimum quality level that is supported by the component.</p>\t\n            </summary>\t\n            <param name=\"eQualityLevelRef\"><dd> <p>Receives the minimum quality level, specified as a member of the <strong><see cref=\"T:SharpDX.MediaFoundation.QualityLevel\"/></strong> enumeration.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>To get the current quality level, call the <strong><see cref=\"M:SharpDX.MediaFoundation.QualityAdvise.GetQualityLevel(SharpDX.MediaFoundation.QualityLevel@)\"/></strong> method. To set the quality level, call the <strong><see cref=\"M:SharpDX.MediaFoundation.QualityAdvise.SetQualityLevel(SharpDX.MediaFoundation.QualityLevel)\"/></strong> method.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFQualityAdviseLimits::GetMinimumQualityLevel']/*\"/>\t\n            <msdn-id>dd374513</msdn-id>\t\n            <unmanaged>HRESULT IMFQualityAdviseLimits::GetMinimumQualityLevel([Out] MF_QUALITY_LEVEL* peQualityLevel)</unmanaged>\t\n            <unmanaged-short>IMFQualityAdviseLimits::GetMinimumQualityLevel</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.QualityAdviseLimits.MaximumDropMode\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Gets the maximum <em>drop mode</em>. A higher drop mode means that the object will, if needed, drop samples more aggressively to match the presentation clock.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>To get the current drop mode, call the <strong><see cref=\"M:SharpDX.MediaFoundation.QualityAdvise.GetDropMode(SharpDX.MediaFoundation.QualityDropMode@)\"/></strong> method. To set the drop mode, call the <strong><see cref=\"M:SharpDX.MediaFoundation.QualityAdvise.SetDropMode(SharpDX.MediaFoundation.QualityDropMode)\"/></strong> method.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFQualityAdviseLimits::GetMaximumDropMode']/*\"/>\t\n            <msdn-id>dd374512</msdn-id>\t\n            <unmanaged>GetMaximumDropMode</unmanaged>\t\n            <unmanaged-short>GetMaximumDropMode</unmanaged-short>\t\n            <unmanaged>HRESULT IMFQualityAdviseLimits::GetMaximumDropMode([Out] MF_QUALITY_DROP_MODE* peDropMode)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.QualityAdviseLimits.MinimumQualityLevel\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Gets the minimum quality level that is supported by the component.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>To get the current quality level, call the <strong><see cref=\"M:SharpDX.MediaFoundation.QualityAdvise.GetQualityLevel(SharpDX.MediaFoundation.QualityLevel@)\"/></strong> method. To set the quality level, call the <strong><see cref=\"M:SharpDX.MediaFoundation.QualityAdvise.SetQualityLevel(SharpDX.MediaFoundation.QualityLevel)\"/></strong> method.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFQualityAdviseLimits::GetMinimumQualityLevel']/*\"/>\t\n            <msdn-id>dd374513</msdn-id>\t\n            <unmanaged>GetMinimumQualityLevel</unmanaged>\t\n            <unmanaged-short>GetMinimumQualityLevel</unmanaged-short>\t\n            <unmanaged>HRESULT IMFQualityAdviseLimits::GetMinimumQualityLevel([Out] MF_QUALITY_LEVEL* peQualityLevel)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.QualityManager\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Called when the media processor is about to deliver an input sample to a pipeline component.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This method is called for every sample passing through every pipeline component. Therefore, the method must return quickly to avoid introducing too much latency into the pipeline.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFQualityManager']/*\"/>\t\n            <msdn-id>ms703097</msdn-id>\t\n            <unmanaged>IMFQualityManager</unmanaged>\t\n            <unmanaged-short>IMFQualityManager</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.QualityManager.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.QualityManager\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.QualityManager.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.QualityManager\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.QualityManager\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.QualityManager.NotifyTopology(SharpDX.MediaFoundation.Topology)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Called when the Media Session is about to start playing a new topology.</p>\t\n            </summary>\t\n            <param name=\"topologyRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.Topology\"/></strong> interface of the new topology. If this parameter is <strong><c>null</c></strong>, the quality manager should release any references to the previous topology.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>In a typical quality manager this method does the following:</p><ol> <li> <p>Enumerates the nodes in the topology.</p> </li> <li> <p>Calls <strong><see cref=\"M:SharpDX.MediaFoundation.TopologyNode.GetObjectW(SharpDX.ComObject@)\"/></strong> to get the node's underlying object.</p> </li> <li> <p>Queries for the <strong><see cref=\"T:SharpDX.MediaFoundation.QualityAdvise\"/></strong> interface.</p> </li> </ol><p>The quality manager can then use the <strong><see cref=\"T:SharpDX.MediaFoundation.QualityAdvise\"/></strong> references to adjust audio-video quality as needed.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFQualityManager::NotifyTopology']/*\"/>\t\n            <msdn-id>ms697409</msdn-id>\t\n            <unmanaged>HRESULT IMFQualityManager::NotifyTopology([In] IMFTopology* pTopology)</unmanaged>\t\n            <unmanaged-short>IMFQualityManager::NotifyTopology</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.QualityManager.NotifyPresentationClock(SharpDX.MediaFoundation.PresentationClock)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Called when the Media Session selects a presentation clock.</p>\t\n            </summary>\t\n            <param name=\"clockRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.PresentationClock\"/></strong> interface of the presentation clock. If this parameter is <strong><c>null</c></strong>, the quality manager should release any references to the presentation clock.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFQualityManager::NotifyPresentationClock']/*\"/>\t\n            <msdn-id>ms702211</msdn-id>\t\n            <unmanaged>HRESULT IMFQualityManager::NotifyPresentationClock([In] IMFPresentationClock* pClock)</unmanaged>\t\n            <unmanaged-short>IMFQualityManager::NotifyPresentationClock</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.QualityManager.NotifyProcessInput(SharpDX.MediaFoundation.TopologyNode,System.Int32,SharpDX.MediaFoundation.Sample)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Called when the media processor is about to deliver an input sample to a pipeline component.</p>\t\n            </summary>\t\n            <param name=\"nodeRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.TopologyNode\"/></strong> interface of the topology node that represents the pipeline component.</p> </dd></param>\t\n            <param name=\"lInputIndex\"><dd> <p>Index of the input stream on the topology node.</p> </dd></param>\t\n            <param name=\"sampleRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.Sample\"/></strong> interface of the input sample.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>This method is called for every sample passing through every pipeline component. Therefore, the method must return quickly to avoid introducing too much latency into the pipeline.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFQualityManager::NotifyProcessInput']/*\"/>\t\n            <msdn-id>ms703097</msdn-id>\t\n            <unmanaged>HRESULT IMFQualityManager::NotifyProcessInput([In] IMFTopologyNode* pNode,[In] int lInputIndex,[In] IMFSample* pSample)</unmanaged>\t\n            <unmanaged-short>IMFQualityManager::NotifyProcessInput</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.QualityManager.NotifyProcessOutput(SharpDX.MediaFoundation.TopologyNode,System.Int32,SharpDX.MediaFoundation.Sample)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Called after the media processor gets an output sample from a pipeline component.</p>\t\n            </summary>\t\n            <param name=\"nodeRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.TopologyNode\"/></strong> interface of the topology node that represents the pipeline component.</p> </dd></param>\t\n            <param name=\"lOutputIndex\"><dd> <p>Index of the output stream on the topology node.</p> </dd></param>\t\n            <param name=\"sampleRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.Sample\"/></strong> interface of the output sample.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>This method is called for every sample passing through every pipeline component. Therefore, the method must return quickly to avoid introducing too much latency into the pipeline.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFQualityManager::NotifyProcessOutput']/*\"/>\t\n            <msdn-id>ms700792</msdn-id>\t\n            <unmanaged>HRESULT IMFQualityManager::NotifyProcessOutput([In] IMFTopologyNode* pNode,[In] int lOutputIndex,[In] IMFSample* pSample)</unmanaged>\t\n            <unmanaged-short>IMFQualityManager::NotifyProcessOutput</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.QualityManager.NotifyQualityEvent(SharpDX.ComObject,SharpDX.MediaFoundation.MediaEvent)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Called when a pipeline component sends an <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.QualityNotify\"/> event.</p>\t\n            </summary>\t\n            <param name=\"objectRef\">No documentation.</param>\t\n            <param name=\"eventRef\">No documentation.</param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFQualityManager::NotifyQualityEvent']/*\"/>\t\n            <msdn-id>ms704768</msdn-id>\t\n            <unmanaged>HRESULT IMFQualityManager::NotifyQualityEvent([In] IUnknown* pObject,[In] IMFMediaEvent* pEvent)</unmanaged>\t\n            <unmanaged-short>IMFQualityManager::NotifyQualityEvent</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.QualityManager.Shutdown\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Called when the Media Session is shutting down.</p>\t\n            </summary>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>The quality manager should release all references to the Media Session when this method is called.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFQualityManager::Shutdown']/*\"/>\t\n            <msdn-id>ms703099</msdn-id>\t\n            <unmanaged>HRESULT IMFQualityManager::Shutdown()</unmanaged>\t\n            <unmanaged-short>IMFQualityManager::Shutdown</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.RateControl\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Gets or sets the playback rate. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Objects can expose this interface as a service. To obtain a reference to the interface, call <strong><see cref=\"M:SharpDX.MediaFoundation.ServiceProvider.GetService(System.Guid,System.Guid,System.IntPtr@)\"/></strong> with the service identifier MF_RATE_CONTROL_SERVICE. The Media Session supports this interface. Media sources and transforms support this interface if they support rate changes. Media sinks do not need to support this interface. Media sinks are notified of rate changes through the <strong><see cref=\"M:SharpDX.MediaFoundation.ClockStateSink.OnClockSetRate(System.Int64,System.Single)\"/></strong> method.</p><p>For more information, see About Rate Control.</p><p>To discover the playback rates that an object supports, use the <strong><see cref=\"T:SharpDX.MediaFoundation.RateSupport\"/></strong> interface</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFRateControl']/*\"/>\t\n            <msdn-id>ms697193</msdn-id>\t\n            <unmanaged>IMFRateControl</unmanaged>\t\n            <unmanaged-short>IMFRateControl</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.RateControl.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.RateControl\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.RateControl.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.RateControl\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.RateControl\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.RateControl.SetRate(SharpDX.Bool,System.Single)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Sets the playback rate. </p>\t\n            </summary>\t\n            <param name=\"fThin\"><dd> <p> If <strong>TRUE</strong>, the media streams are thinned. Otherwise, the stream is not thinned. For media sources and demultiplexers, the object must thin the streams when this parameter is <strong>TRUE</strong>. For downstream transforms, such as decoders and multiplexers, this parameter is informative; it notifies the object that the input streams are thinned. For information, see About Rate Control. </p> </dd></param>\t\n            <param name=\"flRate\"><dd> <p> The requested playback rate. Postive values indicate forward playback, negative values indicate reverse playback, and zero indicates scrubbing (the source delivers a single frame). </p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.ReverseUnsupported\"/></strong></dt> </dl> </td><td> <p> The object does not support reverse playback. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.ThinningUnsupported\"/></strong></dt> </dl> </td><td> <p> The object does not support thinning. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.UnsupportedRate\"/></strong></dt> </dl> </td><td> <p> The object does not support the requested playback rate. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.UnsupportedRateTransition\"/></strong></dt> </dl> </td><td> <p> The object cannot change to the new rate while in the running state. </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>The Media Session prevents some transitions between rate boundaries, depending on the current playback state:</p><table> <tr><th>Playback State</th><th>Forward/Reverse</th><th>Forward/Zero</th><th>Reverse/Zero</th></tr> <tr><td>Running</td><td>No</td><td>No</td><td>No</td></tr> <tr><td>Paused</td><td>No</td><td>Yes</td><td>No</td></tr> <tr><td>Stopped</td><td>Yes</td><td>Yes</td><td>Yes</td></tr> </table><p>?</p><p>If the transition is not supported, the method returns <strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.UnsupportedRateTransition\"/></strong>.</p><p>When a media source completes a call to <strong>SetRate</strong>, it sends the <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.SourceRateChanged\"/> event. Other pipeline components do not send this event.</p><p>If a media source switches between thinned and non-thinned playback, the streams send an <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.StreamThinMode\"/> event to indicate the transition. Events from the media source are not synchronized with events from the media streams. After you receive the <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.SourceRateChanged\"/> event, you can still receive samples that were queued before the stream switched to thinned or non-thinned mode. The <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.StreamThinMode\"/> event marks the exact point in the stream where the transition occurs.</p><p>When the Media Session completes a call to <strong>SetRate</strong>, it sends the <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.SessionRateChanged\"/> event.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFRateControl::SetRate']/*\"/>\t\n            <msdn-id>ms696979</msdn-id>\t\n            <unmanaged>HRESULT IMFRateControl::SetRate([In] BOOL fThin,[In] float flRate)</unmanaged>\t\n            <unmanaged-short>IMFRateControl::SetRate</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.RateControl.GetRate(System.Single@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Gets the current playback rate.</p>\t\n            </summary>\t\n            <param name=\"flRateRef\"><dd> <p>Receives the current playback rate.</p> </dd></param>\t\n            <returns><dd> <p>Receives the value <strong>TRUE</strong> if the stream is currently being thinned. If the object does not support thinning, this parameter always receives the value <strong><see cref=\"F:SharpDX.Result.False\"/></strong>. This parameter can be <strong><c>null</c></strong>. For more information, see About Rate Control.</p> </dd></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFRateControl::GetRate']/*\"/>\t\n            <msdn-id>ms705641</msdn-id>\t\n            <unmanaged>HRESULT IMFRateControl::GetRate([Out] BOOL* pfThin,[Out] float* pflRate)</unmanaged>\t\n            <unmanaged-short>IMFRateControl::GetRate</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.RateSupport\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Queries the range of playback rates that are supported, including reverse playback.</p><p>To get a reference to this interface, call <strong><see cref=\"M:SharpDX.MediaFoundation.ServiceProvider.GetService(System.Guid,System.Guid,System.IntPtr@)\"/></strong> with the service identifier MF_RATE_CONTROL_SERVICE.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Applications can use this interface to discover the fastest and slowest playback rates that are possible, and to query whether a given playback rate is supported. Applications obtain this interface from the Media Session. Internally, the Media Session queries the objects in the pipeline. For more information, see How to Determine Supported Rates.</p><p>To get the current playback rate and to change the playback rate, use the <strong><see cref=\"T:SharpDX.MediaFoundation.RateControl\"/></strong> interface.</p><p>Playback rates are expressed as a ratio the normal playback rate. Reverse playback is expressed as a negative rate. Playback is either <em>thinned</em> or <em>non-thinned</em>. In thinned playback, some of the source data is skipped (typically delta frames). In non-thinned playback, all of the source data is rendered.</p><p>You might need to implement this interface if you are writing a pipeline object (media source, transform, or media sink). For more information, see Implementing Rate Control.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFRateSupport']/*\"/>\t\n            <msdn-id>ms701858</msdn-id>\t\n            <unmanaged>IMFRateSupport</unmanaged>\t\n            <unmanaged-short>IMFRateSupport</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.RateSupport.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.RateSupport\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.RateSupport.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.RateSupport\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.RateSupport\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.RateSupport.GetSlowestRate(SharpDX.MediaFoundation.RateDirection,SharpDX.Bool,System.Single@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves the slowest playback rate supported by the object.</p>\t\n            </summary>\t\n            <param name=\"eDirection\"><dd> <p>Specifies whether to query to the slowest forward playback rate or reverse playback rate. The value is a member of the <strong><see cref=\"T:SharpDX.MediaFoundation.RateDirection\"/></strong> enumeration.</p> </dd></param>\t\n            <param name=\"fThin\"><dd> <p>If <strong>TRUE</strong>, the method retrieves the slowest thinned playback rate. Otherwise, the method retrieves the slowest non-thinned playback rate. For information about thinning, see About Rate Control.</p> </dd></param>\t\n            <param name=\"flRateRef\"><dd> <p>Receives the slowest playback rate that the object supports.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.ReverseUnsupported\"/></strong></dt> </dl> </td><td> <p>The object does not support reverse playback.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.ThinningUnsupported\"/></strong></dt> </dl> </td><td> <p>The object does not support thinning.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>The value returned in <em>plfRate</em> represents a lower bound. Playback at this rate is not guaranteed. Call <strong><see cref=\"M:SharpDX.MediaFoundation.RateSupport.IsRateSupported(SharpDX.Bool,System.Single,System.IntPtr)\"/></strong> to check whether the boundary rate is supported. For example, a component that supports arbitrarily slow rates will return zero in <em>pflRate</em>, and applications should call <strong>IsRateSupported</strong> separately to determine whether the component supports rate 0.</p><p>If <em>eDirection</em> is <see cref=\"F:SharpDX.MediaFoundation.RateDirection.Reverse\"/>, the method retrieves the slowest reverse playback rate. This is a negative value, assuming the object supports reverse playback.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFRateSupport::GetSlowestRate']/*\"/>\t\n            <msdn-id>ms704596</msdn-id>\t\n            <unmanaged>HRESULT IMFRateSupport::GetSlowestRate([In] MFRATE_DIRECTION eDirection,[In] BOOL fThin,[Out] float* pflRate)</unmanaged>\t\n            <unmanaged-short>IMFRateSupport::GetSlowestRate</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.RateSupport.GetFastestRate(SharpDX.MediaFoundation.RateDirection,SharpDX.Bool,System.Single@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Gets the fastest playback rate supported by the object.</p>\t\n            </summary>\t\n            <param name=\"eDirection\"><dd> <p>Specifies whether to query to the fastest forward playback rate or reverse playback rate. The value is a member of the <strong><see cref=\"T:SharpDX.MediaFoundation.RateDirection\"/></strong> enumeration.</p> </dd></param>\t\n            <param name=\"fThin\"><dd> <p>If <strong>TRUE</strong>, the method retrieves the fastest thinned playback rate. Otherwise, the method retrieves the fastest non-thinned playback rate. For information about thinning, see About Rate Control.</p> </dd></param>\t\n            <param name=\"flRateRef\"><dd> <p>Receives the fastest playback rate that the object supports.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.ReverseUnsupported\"/></strong></dt> </dl> </td><td> <p>The object does not support reverse playback.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.ThinningUnsupported\"/></strong></dt> </dl> </td><td> <p>The object does not support thinning.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>For some formats (such as ASF), thinning means dropping all frames that are not I-frames. If a component produces stream data, such as a media source or a demultiplexer, it should pay attention to the <em>fThin</em> parameter and return <see cref=\"F:SharpDX.MediaFoundation.ResultCode.ThinningUnsupported\"/> if it cannot thin the stream.</p><p>If the component processes or receives a stream (most transforms or media sinks), it may ignore this parameter if it does not care whether the stream is thinned. In the Media Session's implementation of rate support, if the transforms do not explicitly support reverse playback, the Media Session will attempt to playback in reverse with thinning but not without thinning. Therefore, most applications will set <em>fThin</em> to <strong>TRUE</strong> when using the Media Session for reverse playback.</p><p>If <em>eDirection</em> is <see cref=\"F:SharpDX.MediaFoundation.RateDirection.Reverse\"/>, the method retrieves the fastest reverse playback rate. This is a negative value, assuming the object supports reverse playback.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFRateSupport::GetFastestRate']/*\"/>\t\n            <msdn-id>ms693505</msdn-id>\t\n            <unmanaged>HRESULT IMFRateSupport::GetFastestRate([In] MFRATE_DIRECTION eDirection,[In] BOOL fThin,[Out] float* pflRate)</unmanaged>\t\n            <unmanaged-short>IMFRateSupport::GetFastestRate</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.RateSupport.IsRateSupported(SharpDX.Bool,System.Single,System.IntPtr)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Queries whether the object supports a specified playback rate.</p>\t\n            </summary>\t\n            <param name=\"fThin\"><dd> <p>If <strong>TRUE</strong>, the method queries whether the object supports the playback rate with thinning. Otherwise, the method queries whether the object supports the playback rate without thinning. For information about thinning, see About Rate Control.</p> </dd></param>\t\n            <param name=\"flRate\"><dd> <p>The playback rate to query.</p> </dd></param>\t\n            <param name=\"flNearestSupportedRateRef\"><dd> <p>If the object does not support the playback rate given in <em>flRate</em>, this parameter receives the closest supported playback rate. If the method returns <see cref=\"F:SharpDX.Result.Ok\"/>, this parameter receives the value given in <em>flRate</em>. This parameter can be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The object supports the specified rate.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.ReverseUnsupported\"/></strong></dt> </dl> </td><td> <p>The object does not support reverse playback.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.ThinningUnsupported\"/></strong></dt> </dl> </td><td> <p>The object does not support thinning.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.UnsupportedRate\"/></strong></dt> </dl> </td><td> <p>The object does not support the specified rate.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFRateSupport::IsRateSupported']/*\"/>\t\n            <msdn-id>ms696250</msdn-id>\t\n            <unmanaged>HRESULT IMFRateSupport::IsRateSupported([In] BOOL fThin,[In] float flRate,[InOut, Optional] float* pflNearestSupportedRate)</unmanaged>\t\n            <unmanaged-short>IMFRateSupport::IsRateSupported</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.ReadWriteClassFactory\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Creates an instance of either the sink writer or the source reader.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>To get a reference to this interface, call the <strong>CoCreateInstance</strong> function. The CLSID is <strong>CLSID_MFReadWriteClassFactory</strong>. Call the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong> function before using  the interface.</p><p>As an alternative to using this interface, you can call any of the following functions:</p><ul> <li> <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateSinkWriterFromMediaSink(SharpDX.MediaFoundation.MediaSink,SharpDX.MediaFoundation.MediaAttributes,SharpDX.MediaFoundation.SinkWriter@)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateSinkWriterFromURL(System.String,System.IntPtr,SharpDX.MediaFoundation.MediaAttributes,SharpDX.MediaFoundation.SinkWriter@)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateSourceReaderFromByteStream(System.IntPtr,SharpDX.MediaFoundation.MediaAttributes,SharpDX.MediaFoundation.SourceReader)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateSourceReaderFromMediaSource(SharpDX.MediaFoundation.MediaSource,SharpDX.MediaFoundation.MediaAttributes,SharpDX.MediaFoundation.SourceReader)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateSourceReaderFromURL(System.String,SharpDX.MediaFoundation.MediaAttributes,SharpDX.MediaFoundation.SourceReader)\"/></strong> </li> </ul><p>Internally, these functions use the <strong><see cref=\"T:SharpDX.MediaFoundation.ReadWriteClassFactory\"/></strong> interface.</p><p>This interface is available on Windows?Vista if Platform Update Supplement for Windows?Vista is installed.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFReadWriteClassFactory']/*\"/>\t\n            <msdn-id>dd374514</msdn-id>\t\n            <unmanaged>IMFReadWriteClassFactory</unmanaged>\t\n            <unmanaged-short>IMFReadWriteClassFactory</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ReadWriteClassFactory.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.ReadWriteClassFactory\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ReadWriteClassFactory.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.ReadWriteClassFactory\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.ReadWriteClassFactory\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ReadWriteClassFactory.CreateInstanceFromURL(System.Guid,System.String,SharpDX.MediaFoundation.MediaAttributes,System.Guid,System.IntPtr@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Creates an instance of the sink writer or source reader, given a URL.</p>\t\n            </summary>\t\n            <param name=\"clsid\"><dd> <p>The CLSID of the object to create.</p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td><dl> <dt><strong><strong>CLSID_MFSinkWriter</strong></strong></dt> </dl> </td><td> <p>Create the sink writer. The <em>ppvObject</em> parameter receives an <strong><see cref=\"T:SharpDX.MediaFoundation.SinkWriter\"/></strong> interface reference.</p> </td></tr> <tr><td><dl> <dt><strong><strong>CLSID_MFSourceReader</strong></strong></dt> </dl> </td><td> <p>Create the source reader. The <em>ppvObject</em> parameter receives an <strong><see cref=\"T:SharpDX.MediaFoundation.SourceReader\"/></strong> interface reference.</p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <param name=\"wszURLRef\"><dd> <p>A null-terminated string that contains a URL. If <em>clsid</em> is CLSID_<strong>MFSinkWriter</strong>, the URL specifies the name of the output file. The sink writer creates a new file with this name. If <em>clsid</em> is <strong>CLSID_MFSourceReader</strong>, the URL specifies the input file for the source reader.</p> </dd></param>\t\n            <param name=\"attributesRef\"><dd> <p>A reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaAttributes\"/></strong> interface. You can use this parameter to configure the sink writer or source reader. For more information, see the following topics:</p> <ul> <li> Sink Writer Attributes </li> <li> Source Reader Attributes </li> </ul> <p>This parameter can be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"riid\"><dd> <p>The IID of the requested interface.</p> </dd></param>\t\n            <param name=\"vObjectOut\"><dd> <p>Receives a reference to the requested interface. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>This interface is available on Windows?Vista if Platform Update Supplement for Windows?Vista is installed.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFReadWriteClassFactory::CreateInstanceFromURL']/*\"/>\t\n            <msdn-id>dd374516</msdn-id>\t\n            <unmanaged>HRESULT IMFReadWriteClassFactory::CreateInstanceFromURL([In] const GUID&amp; clsid,[In] const wchar_t* pwszURL,[In, Optional] IMFAttributes* pAttributes,[In] const GUID&amp; riid,[Out] void** ppvObject)</unmanaged>\t\n            <unmanaged-short>IMFReadWriteClassFactory::CreateInstanceFromURL</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ReadWriteClassFactory.CreateInstanceFromObject(System.Guid,SharpDX.ComObject,SharpDX.MediaFoundation.MediaAttributes,System.Guid,System.IntPtr@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Creates an instance of the sink writer or source reader, given an <strong><see cref=\"T:SharpDX.ComObject\"/></strong> reference. </p>\t\n            </summary>\t\n            <param name=\"clsid\"><dd> <p>The CLSID of the object to create.</p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td><dl> <dt><strong><strong>CLSID_MFSinkWriter</strong></strong></dt> </dl> </td><td> <p>Create the sink writer. The <em>ppvObject</em> parameter receives an <strong><see cref=\"T:SharpDX.MediaFoundation.SinkWriter\"/></strong> interface reference.</p> </td></tr> <tr><td><dl> <dt><strong><strong>CLSID_MFSourceReader</strong></strong></dt> </dl> </td><td> <p>Create the source reader. The <em>ppvObject</em> parameter receives an <strong><see cref=\"T:SharpDX.MediaFoundation.SourceReader\"/></strong> interface reference.</p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <param name=\"unkObjectRef\"><dd> <p>A reference to the <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interface of an object that is used to initialize the source reader or sink writer. The method queries this reference for one of the following interfaces.</p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td><dl> <dt><strong><strong><see cref=\"T:SharpDX.MediaFoundation.IByteStream\"/></strong></strong></dt> </dl> </td><td> <p>Pointer to a byte stream. </p> <p>If <em>clsid</em> is <strong>CLSID_MFSinkWriter</strong>, the sink writer writes data to this byte stream.</p> <p>If <em>clsid</em> is <strong>CLSID_MFSourceReader</strong>, this byte stream provides the source data for the source reader.</p> </td></tr> <tr><td><dl> <dt><strong><strong><see cref=\"T:SharpDX.MediaFoundation.MediaSink\"/></strong></strong></dt> </dl> </td><td> <p>Pointer to a media sink. Applies only when <em>clsid</em> is <strong>CLSID_MFSinkWriter</strong>. </p> </td></tr> <tr><td><dl> <dt><strong><strong><see cref=\"T:SharpDX.MediaFoundation.MediaSource\"/></strong></strong></dt> </dl> </td><td> <p>Pointer to a media source. Applies only when <em>clsid</em> is <strong>CLSID_MFSourceReader</strong>.</p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <param name=\"attributesRef\"><dd> <p>A reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaAttributes\"/></strong> interface. You can use this parameter to configure the sink writer or source reader. For more information, see the following topics:</p> <ul> <li> Sink Writer Attributes </li> <li> Source Reader Attributes </li> </ul> <p>This parameter can be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"riid\"><dd> <p>The IID of the requested interface.</p> </dd></param>\t\n            <param name=\"vObjectOut\"><dd> <p>Receives a reference to the requested interface. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>This interface is available on Windows?Vista if Platform Update Supplement for Windows?Vista is installed.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFReadWriteClassFactory::CreateInstanceFromObject']/*\"/>\t\n            <msdn-id>dd374515</msdn-id>\t\n            <unmanaged>HRESULT IMFReadWriteClassFactory::CreateInstanceFromObject([In] const GUID&amp; clsid,[In] IUnknown* punkObject,[In, Optional] IMFAttributes* pAttributes,[In] const GUID&amp; riid,[Out] void** ppvObject)</unmanaged>\t\n            <unmanaged-short>IMFReadWriteClassFactory::CreateInstanceFromObject</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.RealTimeClient\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Notifies a pipeline object to register itself with the Multimedia Class Scheduler Service (MMCSS).</p><p>Any pipeline object that creates worker threads should implement this interface.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Media Foundation provides a mechanism for applications to associate branches in the topology with MMCSS tasks. A topology branch is defined by a source node in the topology and all of the nodes downstream from it. An application registers a topology branch with MMCSS by setting the <strong><see cref=\"F:SharpDX.MediaFoundation.TopologyNodeAttributeKeys.WorkqueueId\"/></strong> attribute on the source node and then calling <strong><see cref=\"M:SharpDX.MediaFoundation.WorkQueueServices.BeginRegisterTopologyWorkQueuesWithMMCSS(SharpDX.MediaFoundation.AsyncCallback,SharpDX.ComObject)\"/></strong>.</p><p>When the application registers a topology branch with MMCSS, the Media Session queries every pipeline object in that branch for the <strong><see cref=\"T:SharpDX.MediaFoundation.RealTimeClient\"/></strong> interface. If the object exposes the interface, the Media Session calls <strong>RegisterThreads</strong>.</p><p>When the application unregisters the topology branch, the Media Session calls <strong>UnregisterThreads</strong>.</p><p>If a pipeline object creates its own worker threads but does not implement this interface, it can cause priority inversions in the Media Foundation pipeline, because high-priority processing threads might be blocked while waiting for the component to process data on a thread with lower priority.</p><p>Pipeline objects that do not create worker threads do not need to implement this interface.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFRealTimeClient']/*\"/>\t\n            <msdn-id>aa372146</msdn-id>\t\n            <unmanaged>IMFRealTimeClient</unmanaged>\t\n            <unmanaged-short>IMFRealTimeClient</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.RealTimeClient.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.RealTimeClient\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.RealTimeClient.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.RealTimeClient\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.RealTimeClient\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.RealTimeClient.RegisterThreads(System.Int32,System.String)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Notifies the object to register its worker threads with the Multimedia Class Scheduler Service (MMCSS).</p>\t\n            </summary>\t\n            <param name=\"dwTaskIndex\"><dd> <p> The MMCSS task identifier. </p> </dd></param>\t\n            <param name=\"wszClass\"><dd> <p>The name of the MMCSS task. </p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p> The object's worker threads should register themselves with MMCSS by calling <strong>AvSetMmThreadCharacteristics</strong>, using the task name and identifier specified in this method.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFRealTimeClient::RegisterThreads']/*\"/>\t\n            <msdn-id>aa367059</msdn-id>\t\n            <unmanaged>HRESULT IMFRealTimeClient::RegisterThreads([In] unsigned int dwTaskIndex,[In] const wchar_t* wszClass)</unmanaged>\t\n            <unmanaged-short>IMFRealTimeClient::RegisterThreads</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.RealTimeClient.UnregisterThreads\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Notifies the object to unregister its worker threads from the Multimedia Class Scheduler Service (MMCSS). </p>\t\n            </summary>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>The object's worker threads should unregister themselves from MMCSS by calling <strong>AvRevertMmThreadCharacteristics</strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFRealTimeClient::UnregisterThreads']/*\"/>\t\n            <msdn-id>aa371717</msdn-id>\t\n            <unmanaged>HRESULT IMFRealTimeClient::UnregisterThreads()</unmanaged>\t\n            <unmanaged-short>IMFRealTimeClient::UnregisterThreads</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.RealTimeClient.SetWorkQueue(System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Specifies the work queue for the topology branch that contains this object.</p>\t\n            </summary>\t\n            <param name=\"dwWorkQueueId\"><dd> <p>The identifier of the work queue, or the value <strong>MFASYNC_CALLBACK_QUEUE_UNDEFINED</strong>. See Remarks. </p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p> An application can register a branch of the topology to use a private work queue. The Media Session notifies any pipeline object that supports <strong><see cref=\"T:SharpDX.MediaFoundation.RealTimeClient\"/></strong> by calling <strong>SetWorkQueue</strong> with the application's work queue identifier. </p><p>When the application unregisters the topology branch, the Media Session calls <strong>SetWorkQueue</strong> again with the value <strong>MFASYNC_CALLBACK_QUEUE_UNDEFINED</strong>. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFRealTimeClient::SetWorkQueue']/*\"/>\t\n            <msdn-id>aa367678</msdn-id>\t\n            <unmanaged>HRESULT IMFRealTimeClient::SetWorkQueue([In] unsigned int dwWorkQueueId)</unmanaged>\t\n            <unmanaged-short>IMFRealTimeClient::SetWorkQueue</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.RealTimeClient.WorkQueue\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Specifies the work queue for the topology branch that contains this object.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p> An application can register a branch of the topology to use a private work queue. The Media Session notifies any pipeline object that supports <strong><see cref=\"T:SharpDX.MediaFoundation.RealTimeClient\"/></strong> by calling <strong>SetWorkQueue</strong> with the application's work queue identifier. </p><p>When the application unregisters the topology branch, the Media Session calls <strong>SetWorkQueue</strong> again with the value <strong>MFASYNC_CALLBACK_QUEUE_UNDEFINED</strong>. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFRealTimeClient::SetWorkQueue']/*\"/>\t\n            <msdn-id>aa367678</msdn-id>\t\n            <unmanaged>SetWorkQueue</unmanaged>\t\n            <unmanaged-short>SetWorkQueue</unmanaged-short>\t\n            <unmanaged>HRESULT IMFRealTimeClient::SetWorkQueue([In] unsigned int dwWorkQueueId)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.RemoteAsyncCallback\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Used by the Microsoft Media Foundation proxy/stub DLL to marshal certain asynchronous method calls across process boundaries.</p><p>Applications do not use or implement this interface.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFRemoteAsyncCallback']/*\"/>\t\n            <msdn-id>bb970408</msdn-id>\t\n            <unmanaged>IMFRemoteAsyncCallback</unmanaged>\t\n            <unmanaged-short>IMFRemoteAsyncCallback</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.RemoteAsyncCallback.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.RemoteAsyncCallback\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.RemoteAsyncCallback.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.RemoteAsyncCallback\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.RemoteAsyncCallback\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.RemoteAsyncCallback.Invoke(SharpDX.Result,SharpDX.ComObject)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Used by the Microsoft Media Foundation proxy/stub DLL to marshal certain asynchronous method calls across process boundaries.</p><p>Applications do not use or implement this interface.</p>\t\n            </summary>\t\n            <param name=\"hr\">No documentation.</param>\t\n            <param name=\"remoteResultRef\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFRemoteAsyncCallback::Invoke']/*\"/>\t\n            <msdn-id>bb970408</msdn-id>\t\n            <unmanaged>HRESULT IMFRemoteAsyncCallback::Invoke([In] HRESULT hr,[In, Optional] IUnknown* pRemoteResult)</unmanaged>\t\n            <unmanaged-short>IMFRemoteAsyncCallback::Invoke</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.RemoteDesktopPlugin\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Modifies a topology for use in a Terminal Services environment. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>To use this interface, do the following:</p><ol> <li> Call <strong>GetSystemMetrics</strong> with the <strong>SM_REMOTESESSION</strong> flag. The function returns <strong>TRUE</strong> if the calling process is associated with a Terminal Services client session. </li> <li> If <strong>GetSystemMetrics</strong> returns <strong>TRUE</strong>, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateRemoteDesktopPlugin(SharpDX.MediaFoundation.RemoteDesktopPlugin@)\"/></strong>. This function returns a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.RemoteDesktopPlugin\"/></strong> interface. </li> <li> Call <strong>UpdateTopology</strong> with a reference to the topology. </li> </ol><p>The application must call <strong>UpdateTopology</strong> before calling <strong><see cref=\"M:SharpDX.MediaFoundation.MediaSession.SetTopology(System.Int32,SharpDX.MediaFoundation.Topology)\"/></strong> on the Media Session.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFRemoteDesktopPlugin']/*\"/>\t\n            <msdn-id>ms698979</msdn-id>\t\n            <unmanaged>IMFRemoteDesktopPlugin</unmanaged>\t\n            <unmanaged-short>IMFRemoteDesktopPlugin</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.RemoteDesktopPlugin.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.RemoteDesktopPlugin\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.RemoteDesktopPlugin.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.RemoteDesktopPlugin\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.RemoteDesktopPlugin\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.RemoteDesktopPlugin.UpdateTopology(SharpDX.MediaFoundation.Topology)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Modifies a topology for use in a Terminal Services environment.</p>\t\n            </summary>\t\n            <param name=\"topologyRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.Topology\"/></strong> interface of the topology.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>If the application is running in a Terminal Services client session, call this method before calling <strong><see cref=\"M:SharpDX.MediaFoundation.MediaSession.SetTopology(System.Int32,SharpDX.MediaFoundation.Topology)\"/></strong> on the Media Session.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFRemoteDesktopPlugin::UpdateTopology']/*\"/>\t\n            <msdn-id>ms699001</msdn-id>\t\n            <unmanaged>HRESULT IMFRemoteDesktopPlugin::UpdateTopology([In] IMFTopology* pTopology)</unmanaged>\t\n            <unmanaged-short>IMFRemoteDesktopPlugin::UpdateTopology</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.RemoteProxy\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves a reference to the remote object for which this object is a proxy.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFRemoteProxy']/*\"/>\t\n            <msdn-id>bb970370</msdn-id>\t\n            <unmanaged>IMFRemoteProxy</unmanaged>\t\n            <unmanaged-short>IMFRemoteProxy</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.RemoteProxy.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.RemoteProxy\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.RemoteProxy.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.RemoteProxy\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.RemoteProxy\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.RemoteProxy.GetRemoteObject(System.Guid,System.IntPtr@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves a reference to the remote object for which this object is a proxy.</p>\t\n            </summary>\t\n            <param name=\"riid\"><dd> <p>Interface identifier (IID) of the requested interface.</p> </dd></param>\t\n            <param name=\"vOut\"><dd> <p>Receives a reference to the requested interface. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>The method returns an <see cref=\"T:SharpDX.Result\"/>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFRemoteProxy::GetRemoteObject']/*\"/>\t\n            <msdn-id>bb970370</msdn-id>\t\n            <unmanaged>HRESULT IMFRemoteProxy::GetRemoteObject([In] const GUID&amp; riid,[Out] void** ppv)</unmanaged>\t\n            <unmanaged-short>IMFRemoteProxy::GetRemoteObject</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.RemoteProxy.GetRemoteHost(System.Guid,System.IntPtr@)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"riid\">No documentation.</param>\t\n            <param name=\"vOut\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFRemoteProxy::GetRemoteHost']/*\"/>\t\n            <unmanaged>HRESULT IMFRemoteProxy::GetRemoteHost([In] const GUID&amp; riid,[Out] void** ppv)</unmanaged>\t\n            <unmanaged-short>IMFRemoteProxy::GetRemoteHost</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.SAMIStyle\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Sets and retrieves Synchronized Accessible Media Interchange (SAMI) styles on the SAMI Media Source. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p> To get a reference to this interface, call <strong><see cref=\"M:SharpDX.MediaFoundation.ServiceProvider.GetService(System.Guid,System.Guid,System.IntPtr@)\"/></strong>. The service identifier is <strong>MF_SAMI_SERVICE</strong>. Call <strong>GetService</strong> either directly on the SAMI media source, or on the Media Session (if you are using the SAMI source with the Media Session).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSAMIStyle']/*\"/>\t\n            <msdn-id>aa473825</msdn-id>\t\n            <unmanaged>IMFSAMIStyle</unmanaged>\t\n            <unmanaged-short>IMFSAMIStyle</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SAMIStyle.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.SAMIStyle\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SAMIStyle.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.SAMIStyle\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.SAMIStyle\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SAMIStyle.GetStyleCount(System.Int32@)\">\n            <summary>\t\n            <p>Gets the total number of SAMI styles supported by the media source.</p>  <see cref=\"T:SharpDX.Result\"/> GetStyleCount (DWORD * pdwCount);<p></p>Parameters <p> pdwCount  </p> <p>[out] Pointer to a DWORD that receives the number of SAMI styles. This parameter cannot be <c>null</c>.</p>  <p>The method returns an <see cref=\"T:SharpDX.Result\"/>. Possible values include, but are not limited to, those in the following table.</p> <table><tr> <th> Return code  </th> <th> Description  </th> </tr><tr> <td> <p><see cref=\"F:SharpDX.Result.Ok\"/></p> </td> <td> <p>The method succeeded.</p> </td> </tr><tr> <td> <p>E_POINTER</p> </td> <td> <p><c>null</c> was passed in pdwCount.</p> </td> </tr></table>  <p> Client: Requires Windows Vista.</p> <p> Header: Include mfidl.h.</p> <p> Library: Use mfuuid.lib.</p> ReferenceIMFSAMIStyle Interface\t\n            </summary>\t\n            <param name=\"dwCountRef\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSAMIStyle::GetStyleCount']/*\"/>\t\n            <msdn-id>aa473802</msdn-id>\t\n            <unmanaged>HRESULT IMFSAMIStyle::GetStyleCount([Out] unsigned int* pdwCount)</unmanaged>\t\n            <unmanaged-short>IMFSAMIStyle::GetStyleCount</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SAMIStyle.GetStyles(SharpDX.Win32.Variant@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Gets a list of the style names defined in the SAMI file. </p>\t\n            </summary>\t\n            <param name=\"propVarStyleArrayRef\"><dd> <p>Pointer to a <strong><see cref=\"T:SharpDX.Win32.Variant\"/></strong> that receives an array of null-terminated wide-character strings. The <strong><see cref=\"T:SharpDX.Win32.Variant\"/></strong> type is VT_VECTOR | VT_LPWSTR. The caller must clear the <strong><see cref=\"T:SharpDX.Win32.Variant\"/></strong> by calling <strong>PropVariantClear</strong>.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSAMIStyle::GetStyles']/*\"/>\t\n            <msdn-id>bb970547</msdn-id>\t\n            <unmanaged>HRESULT IMFSAMIStyle::GetStyles([Out] PROPVARIANT* pPropVarStyleArray)</unmanaged>\t\n            <unmanaged-short>IMFSAMIStyle::GetStyles</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SAMIStyle.SetSelectedStyle(System.String)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Sets the current style on the SAMI media source.</p>\t\n            </summary>\t\n            <param name=\"wszStyleRef\"><dd> <p>Pointer to a null-terminated string containing the name of the style. To clear the current style, pass an empty string (\"\").  To get the list of style names, call <strong><see cref=\"M:SharpDX.MediaFoundation.SAMIStyle.GetStyles(SharpDX.Win32.Variant@)\"/></strong>.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSAMIStyle::SetSelectedStyle']/*\"/>\t\n            <msdn-id>bb970574</msdn-id>\t\n            <unmanaged>HRESULT IMFSAMIStyle::SetSelectedStyle([In] const wchar_t* pwszStyle)</unmanaged>\t\n            <unmanaged-short>IMFSAMIStyle::SetSelectedStyle</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SAMIStyle.GetSelectedStyle(System.IntPtr)\">\n            <summary>\t\n            <p>Gets the currently selected SAMI style on the media source.</p>  <see cref=\"T:SharpDX.Result\"/> GetSelectedStyle (LPWSTR * ppwszStyle);<p></p>Parameters <p> pwszStyle </p> <p>[out] Pointer to a null-terminated string that receives the name of the style. Value of \"\" indicates that no style has been set. This parameter cannot be <c>null</c>.</p>  <p>The method returns an <see cref=\"T:SharpDX.Result\"/>. Possible values include, but are not limited to, those in the following table.</p> <table><tr> <th> Return code  </th> <th> Description  </th> </tr><tr> <td> <p><see cref=\"F:SharpDX.Result.Ok\"/></p> </td> <td> <p>The method succeeded.</p> </td> </tr><tr> <td> <p>E_POINTER</p> </td> <td> <p><c>null</c> was passed in ppwszStyle.</p> </td> </tr></table>  <p>To avoid memory leaks, the caller must de-allocate the returned string by calling CoTaskMemFree.</p>  <p> Client: Requires Windows Vista.</p> <p> Header: Include mfidl.h.</p> <p> Library: Use mfuuid.lib.</p> ReferenceIMFSAMIStyle Interface\t\n            </summary>\t\n            <param name=\"wszStyleOut\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSAMIStyle::GetSelectedStyle']/*\"/>\t\n            <msdn-id>aa473721</msdn-id>\t\n            <unmanaged>HRESULT IMFSAMIStyle::GetSelectedStyle([Out] wchar_t** ppwszStyle)</unmanaged>\t\n            <unmanaged-short>IMFSAMIStyle::GetSelectedStyle</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.SAMIStyle.StyleCount\">\n            <summary>\t\n            <p>Gets the total number of SAMI styles supported by the media source.</p>  <see cref=\"T:SharpDX.Result\"/> GetStyleCount (DWORD * pdwCount);<p></p>Parameters <p> pdwCount  </p> <p>[out] Pointer to a DWORD that receives the number of SAMI styles. This parameter cannot be <c>null</c>.</p>  <p>The method returns an <see cref=\"T:SharpDX.Result\"/>. Possible values include, but are not limited to, those in the following table.</p> <table><tr> <th> Return code  </th> <th> Description  </th> </tr><tr> <td> <p><see cref=\"F:SharpDX.Result.Ok\"/></p> </td> <td> <p>The method succeeded.</p> </td> </tr><tr> <td> <p>E_POINTER</p> </td> <td> <p><c>null</c> was passed in pdwCount.</p> </td> </tr></table>  <p> Client: Requires Windows Vista.</p> <p> Header: Include mfidl.h.</p> <p> Library: Use mfuuid.lib.</p> ReferenceIMFSAMIStyle Interface\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSAMIStyle::GetStyleCount']/*\"/>\t\n            <msdn-id>aa473802</msdn-id>\t\n            <unmanaged>GetStyleCount</unmanaged>\t\n            <unmanaged-short>GetStyleCount</unmanaged-short>\t\n            <unmanaged>HRESULT IMFSAMIStyle::GetStyleCount([Out] unsigned int* pdwCount)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.SAMIStyle.Styles\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Gets a list of the style names defined in the SAMI file. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSAMIStyle::GetStyles']/*\"/>\t\n            <msdn-id>bb970547</msdn-id>\t\n            <unmanaged>GetStyles</unmanaged>\t\n            <unmanaged-short>GetStyles</unmanaged-short>\t\n            <unmanaged>HRESULT IMFSAMIStyle::GetStyles([Out] PROPVARIANT* pPropVarStyleArray)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.Sample\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Represents a media sample, which is a container object for media data. For video, a sample typically contains one video frame. For audio data, a sample typically contains multiple audio samples, rather than a single sample of audio.</p><p>A media sample contains zero or more buffers. Each buffer manages a block of memory, and is represented by the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaBuffer\"/></strong> interface. A sample can have multiple buffers. The buffers are kept in an ordered list and accessed by index value. It is also valid to have an empty sample with no buffers.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>To create a new media sample, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateSample(SharpDX.MediaFoundation.Sample@)\"/></strong>.</p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSample']/*\"/>\t\n            <msdn-id>ms702192</msdn-id>\t\n            <unmanaged>IMFSample</unmanaged>\t\n            <unmanaged-short>IMFSample</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Sample.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.Sample\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Sample.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.Sample\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.Sample\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Sample.GetSampleFlags(System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves flags associated with the sample.</p><p>Currently no flags are defined. Instead, metadata for samples is defined using attributes. To get attibutes from a sample, use the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaAttributes\"/></strong> interface, which <strong><see cref=\"T:SharpDX.MediaFoundation.Sample\"/></strong> inherits. For a list of sample attributes, see Sample Attributes.</p>\t\n            </summary>\t\n            <param name=\"dwSampleFlagsRef\">No documentation.</param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSample::GetSampleFlags']/*\"/>\t\n            <msdn-id>ms701587</msdn-id>\t\n            <unmanaged>HRESULT IMFSample::GetSampleFlags([Out] unsigned int* pdwSampleFlags)</unmanaged>\t\n            <unmanaged-short>IMFSample::GetSampleFlags</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Sample.SetSampleFlags(System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Sets flags associated with the sample.</p><p>Currently no flags are defined. Instead, metadata for samples is defined using attributes. To set attibutes on a sample, use the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaAttributes\"/></strong> interface, which <strong><see cref=\"T:SharpDX.MediaFoundation.Sample\"/></strong> inherits. For a list of sample attributes, see Sample Attributes.</p>\t\n            </summary>\t\n            <param name=\"dwSampleFlags\">No documentation.</param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSample::SetSampleFlags']/*\"/>\t\n            <msdn-id>ms696207</msdn-id>\t\n            <unmanaged>HRESULT IMFSample::SetSampleFlags([In] unsigned int dwSampleFlags)</unmanaged>\t\n            <unmanaged-short>IMFSample::SetSampleFlags</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Sample.GetSampleTime(System.Int64@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves the presentation time of the sample.</p>\t\n            </summary>\t\n            <param name=\"hnsSampleTimeRef\"><dd> <p>Receives the presentation time, in 100-nanosecond units.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.NoSampleTimestamp\"/></strong></dt> </dl> </td><td> <p>The sample does not have a presentation time.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSample::GetSampleTime']/*\"/>\t\n            <msdn-id>ms705645</msdn-id>\t\n            <unmanaged>HRESULT IMFSample::GetSampleTime([Out] longlong* phnsSampleTime)</unmanaged>\t\n            <unmanaged-short>IMFSample::GetSampleTime</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Sample.SetSampleTime(System.Int64)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Sets the presentation time of the sample.</p>\t\n            </summary>\t\n            <param name=\"hnsSampleTime\"><dd> <p>The presentation time, in 100-nanosecond units.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>Some pipeline components require samples that have time stamps. Generally the component that generates the data for the sample also sets the time stamp. The Media Session might modify the time stamps.</p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSample::SetSampleTime']/*\"/>\t\n            <msdn-id>ms697282</msdn-id>\t\n            <unmanaged>HRESULT IMFSample::SetSampleTime([In] longlong hnsSampleTime)</unmanaged>\t\n            <unmanaged-short>IMFSample::SetSampleTime</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Sample.GetSampleDuration(System.Int64@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves the duration of the sample.</p>\t\n            </summary>\t\n            <param name=\"hnsSampleDurationRef\"><dd> <p>Receives the duration, in 100-nanosecond units.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.NoSampleDuration\"/></strong></dt> </dl> </td><td> <p>The sample does not have a specified duration.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>If the sample contains more than one buffer, the duration includes the data from all of the buffers.</p><p>If the retrieved duration is zero, or if the method returns <strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.NoSampleDuration\"/></strong>, the duration is unknown. In that case, it might be possible to calculate the duration from the media type?for example, by using the video frame rate or the audio sampling rate.</p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSample::GetSampleDuration']/*\"/>\t\n            <msdn-id>ms703056</msdn-id>\t\n            <unmanaged>HRESULT IMFSample::GetSampleDuration([Out] longlong* phnsSampleDuration)</unmanaged>\t\n            <unmanaged-short>IMFSample::GetSampleDuration</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Sample.SetSampleDuration(System.Int64)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Sets the duration of the sample.</p>\t\n            </summary>\t\n            <param name=\"hnsSampleDuration\"><dd> <p>Duration of the sample, in 100-nanosecond units.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>This method succeeds if the duration is negative, although negative durations are probably not valid for most types of data. It is the responsibility of the object that consumes the sample to validate the duration.</p><p>The duration can also be zero. This might be valid for some types of data. For example, the sample might contain stream metadata with no buffers.</p><p>Until this method is called, the <strong><see cref=\"M:SharpDX.MediaFoundation.Sample.GetSampleDuration(System.Int64@)\"/></strong> method returns <strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.NoSampleDuration\"/></strong>.</p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSample::SetSampleDuration']/*\"/>\t\n            <msdn-id>ms705626</msdn-id>\t\n            <unmanaged>HRESULT IMFSample::SetSampleDuration([In] longlong hnsSampleDuration)</unmanaged>\t\n            <unmanaged-short>IMFSample::SetSampleDuration</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Sample.GetBufferCount(System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves the number of buffers in the sample.</p>\t\n            </summary>\t\n            <param name=\"dwBufferCountRef\"><dd> <p>Receives the number of buffers in the sample. A sample might contain zero buffers.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSample::GetBufferCount']/*\"/>\t\n            <msdn-id>ms705655</msdn-id>\t\n            <unmanaged>HRESULT IMFSample::GetBufferCount([Out] unsigned int* pdwBufferCount)</unmanaged>\t\n            <unmanaged-short>IMFSample::GetBufferCount</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Sample.GetBufferByIndex(System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Gets a buffer from the sample, by index.</p><p> </p><p><strong>Note</strong>??In most cases, it is safer to use the <strong><see cref=\"M:SharpDX.MediaFoundation.Sample.ConvertToContiguousBuffer\"/></strong> method.  If the sample contains more than one buffer, the <strong>ConvertToContiguousBuffer</strong> method replaces them with a single buffer, copies the original data into that buffer, and returns the new buffer to the caller. The copy operation occurs at most once. On subsequent calls, no data is copied.</p>\t\n            </summary>\t\n            <param name=\"dwIndex\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <remarks>\t\n            <p>A sample might contain more than one buffer. Use the <strong>GetBufferByIndex</strong> method to enumerate the individual buffers.</p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSample::GetBufferByIndex']/*\"/>\t\n            <msdn-id>ms697014</msdn-id>\t\n            <unmanaged>HRESULT IMFSample::GetBufferByIndex([In] unsigned int dwIndex,[Out] IMFMediaBuffer** ppBuffer)</unmanaged>\t\n            <unmanaged-short>IMFSample::GetBufferByIndex</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Sample.ConvertToContiguousBuffer\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Converts a sample with multiple buffers into a sample with a single buffer. </p>\t\n            </summary>\t\n            <returns><dd> <p>Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaBuffer\"/></strong> interface. The caller must release the interface.</p> </dd></returns>\t\n            <remarks>\t\n            <p>If the sample contains more than one buffer, this method copies the data from the original buffers into a new buffer, and replaces the original buffer list with the new buffer. The new buffer is returned in the <em>ppBuffer</em> parameter.</p><p> If the sample contains a single buffer, this method returns a reference to the original buffer. In typical use, most samples do not contain multiple buffers.</p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSample::ConvertToContiguousBuffer']/*\"/>\t\n            <msdn-id>ms698917</msdn-id>\t\n            <unmanaged>HRESULT IMFSample::ConvertToContiguousBuffer([Out] IMFMediaBuffer** ppBuffer)</unmanaged>\t\n            <unmanaged-short>IMFSample::ConvertToContiguousBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Sample.AddBuffer(SharpDX.MediaFoundation.MediaBuffer)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Adds a buffer to the end of the list of buffers in the sample. </p>\t\n            </summary>\t\n            <param name=\"bufferRef\"><dd> <p>Pointer to the buffer's <strong><see cref=\"T:SharpDX.MediaFoundation.MediaBuffer\"/></strong> interface.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong>E_INVALIDARG</strong></dt> </dl> </td><td> <p><c>null</c> reference argument.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>For uncompressed video data, each buffer should contain a single video frame, and samples should not contain multiple frames. In general, storing multiple buffers in a sample is discouraged.</p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSample::AddBuffer']/*\"/>\t\n            <msdn-id>ms697465</msdn-id>\t\n            <unmanaged>HRESULT IMFSample::AddBuffer([In] IMFMediaBuffer* pBuffer)</unmanaged>\t\n            <unmanaged-short>IMFSample::AddBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Sample.RemoveBufferByIndex(System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Removes a buffer at a specified index from the sample.</p>\t\n            </summary>\t\n            <param name=\"dwIndex\"><dd> <p>Index of the buffer. To find the number of buffers in the sample, call <strong><see cref=\"M:SharpDX.MediaFoundation.Sample.GetBufferCount(System.Int32@)\"/></strong>. Buffers are indexed from zero.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSample::RemoveBufferByIndex']/*\"/>\t\n            <msdn-id>ms705646</msdn-id>\t\n            <unmanaged>HRESULT IMFSample::RemoveBufferByIndex([In] unsigned int dwIndex)</unmanaged>\t\n            <unmanaged-short>IMFSample::RemoveBufferByIndex</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Sample.RemoveAllBuffers\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Removes all of the buffers from the sample.</p>\t\n            </summary>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSample::RemoveAllBuffers']/*\"/>\t\n            <msdn-id>ms703108</msdn-id>\t\n            <unmanaged>HRESULT IMFSample::RemoveAllBuffers()</unmanaged>\t\n            <unmanaged-short>IMFSample::RemoveAllBuffers</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Sample.GetTotalLength(System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves the total length of the valid data in all of the buffers in the sample. The length is calculated as the sum of the values retrieved by the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaBuffer.GetCurrentLength(System.Int32@)\"/></strong> method.</p>\t\n            </summary>\t\n            <param name=\"cbTotalLengthRef\">No documentation.</param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSample::GetTotalLength']/*\"/>\t\n            <msdn-id>ms704584</msdn-id>\t\n            <unmanaged>HRESULT IMFSample::GetTotalLength([Out] unsigned int* pcbTotalLength)</unmanaged>\t\n            <unmanaged-short>IMFSample::GetTotalLength</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Sample.CopyToBuffer(SharpDX.MediaFoundation.MediaBuffer)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Copies the sample data to a buffer. This method concatenates the valid data from all of the buffers of the sample, in order.</p>\t\n            </summary>\t\n            <param name=\"bufferRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaBuffer\"/></strong> interface of the destination buffer. The buffer must be large enough to hold the valid data in the sample. To get the size of the data in the sample, call <strong><see cref=\"M:SharpDX.MediaFoundation.Sample.GetTotalLength(System.Int32@)\"/></strong>.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong>E_INVALIDARG</strong></dt> </dl> </td><td> <p><c>null</c> reference argument.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.BufferTooSmall\"/></strong></dt> </dl> </td><td> <p>The buffer is not large enough to contain the data.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSample::CopyToBuffer']/*\"/>\t\n            <msdn-id>ms703119</msdn-id>\t\n            <unmanaged>HRESULT IMFSample::CopyToBuffer([In] IMFMediaBuffer* pBuffer)</unmanaged>\t\n            <unmanaged-short>IMFSample::CopyToBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.Sample.SampleFlags\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves flags associated with the sample.</p><p>Currently no flags are defined. Instead, metadata for samples is defined using attributes. To get attibutes from a sample, use the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaAttributes\"/></strong> interface, which <strong><see cref=\"T:SharpDX.MediaFoundation.Sample\"/></strong> inherits. For a list of sample attributes, see Sample Attributes.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSample::GetSampleFlags']/*\"/>\t\n            <msdn-id>ms701587</msdn-id>\t\n            <unmanaged>GetSampleFlags / SetSampleFlags</unmanaged>\t\n            <unmanaged-short>GetSampleFlags</unmanaged-short>\t\n            <unmanaged>HRESULT IMFSample::GetSampleFlags([Out] unsigned int* pdwSampleFlags)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.Sample.SampleTime\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves the presentation time of the sample.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSample::GetSampleTime']/*\"/>\t\n            <msdn-id>ms705645</msdn-id>\t\n            <unmanaged>GetSampleTime / SetSampleTime</unmanaged>\t\n            <unmanaged-short>GetSampleTime</unmanaged-short>\t\n            <unmanaged>HRESULT IMFSample::GetSampleTime([Out] longlong* phnsSampleTime)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.Sample.SampleDuration\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves the duration of the sample.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>If the sample contains more than one buffer, the duration includes the data from all of the buffers.</p><p>If the retrieved duration is zero, or if the method returns <strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.NoSampleDuration\"/></strong>, the duration is unknown. In that case, it might be possible to calculate the duration from the media type?for example, by using the video frame rate or the audio sampling rate.</p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSample::GetSampleDuration']/*\"/>\t\n            <msdn-id>ms703056</msdn-id>\t\n            <unmanaged>GetSampleDuration / SetSampleDuration</unmanaged>\t\n            <unmanaged-short>GetSampleDuration</unmanaged-short>\t\n            <unmanaged>HRESULT IMFSample::GetSampleDuration([Out] longlong* phnsSampleDuration)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.Sample.BufferCount\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves the number of buffers in the sample.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSample::GetBufferCount']/*\"/>\t\n            <msdn-id>ms705655</msdn-id>\t\n            <unmanaged>GetBufferCount</unmanaged>\t\n            <unmanaged-short>GetBufferCount</unmanaged-short>\t\n            <unmanaged>HRESULT IMFSample::GetBufferCount([Out] unsigned int* pdwBufferCount)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.Sample.TotalLength\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves the total length of the valid data in all of the buffers in the sample. The length is calculated as the sum of the values retrieved by the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaBuffer.GetCurrentLength(System.Int32@)\"/></strong> method.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSample::GetTotalLength']/*\"/>\t\n            <msdn-id>ms704584</msdn-id>\t\n            <unmanaged>GetTotalLength</unmanaged>\t\n            <unmanaged-short>GetTotalLength</unmanaged-short>\t\n            <unmanaged>HRESULT IMFSample::GetTotalLength([Out] unsigned int* pcbTotalLength)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.SampleGrabberSinkCallback\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Callback interface to get media data from the sample-grabber sink. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The sample-grabber sink enables an application to get data from the Media Foundation pipeline without implementing a custom media sink. To use the sample-grabber sink, the application must perform the following steps:</p><ol> <li> <p>Implement the <strong><see cref=\"T:SharpDX.MediaFoundation.SampleGrabberSinkCallback\"/></strong> interface.</p> </li> <li> <p>Call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateSampleGrabberSinkActivate(SharpDX.MediaFoundation.MediaType,SharpDX.MediaFoundation.SampleGrabberSinkCallback,SharpDX.MediaFoundation.Activate@)\"/></strong>, passing in the <strong><see cref=\"T:SharpDX.MediaFoundation.SampleGrabberSinkCallback\"/></strong> interface reference. This function returns an <strong><see cref=\"T:SharpDX.MediaFoundation.Activate\"/></strong> object.</p> </li> <li> <p>Create a topology that includes an output node with the sink's <strong><see cref=\"T:SharpDX.MediaFoundation.Activate\"/></strong> object.</p> </li> <li> <p>Pass this topology to the Media Session.</p> </li> </ol><p>During playback, the sample-grabber sink calls methods on the application's callback.</p><p>You cannot use the sample-grabber sink to get protected content.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSampleGrabberSinkCallback']/*\"/>\t\n            <msdn-id>ms697548</msdn-id>\t\n            <unmanaged>IMFSampleGrabberSinkCallback</unmanaged>\t\n            <unmanaged-short>IMFSampleGrabberSinkCallback</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SampleGrabberSinkCallback.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.SampleGrabberSinkCallback\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SampleGrabberSinkCallback.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.SampleGrabberSinkCallback\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.SampleGrabberSinkCallback\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SampleGrabberSinkCallback.OnSetPresentationClock(SharpDX.MediaFoundation.PresentationClock)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Called when the presentation clock is set on the sample-grabber sink.</p>\t\n            </summary>\t\n            <param name=\"presentationClockRef\"><dd> <p>Pointer to the presentation clock's <strong><see cref=\"T:SharpDX.MediaFoundation.PresentationClock\"/></strong> interface.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>This method should return quickly, or it might interfere with playback. Do not block the thread, wait on events, or perform other lengthy operations inside this method.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSampleGrabberSinkCallback::OnSetPresentationClock']/*\"/>\t\n            <msdn-id>bb970506</msdn-id>\t\n            <unmanaged>HRESULT IMFSampleGrabberSinkCallback::OnSetPresentationClock([In] IMFPresentationClock* pPresentationClock)</unmanaged>\t\n            <unmanaged-short>IMFSampleGrabberSinkCallback::OnSetPresentationClock</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SampleGrabberSinkCallback.OnProcessSample(System.Guid,System.Int32,System.Int64,System.Int64,System.Byte[],System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Called when the sample-grabber sink receives a new media sample.</p>\t\n            </summary>\t\n            <param name=\"guidMajorMediaType\"><dd> <p>The major type that specifies the format of the data. For a list of possible values, see Major Media Types. </p> </dd></param>\t\n            <param name=\"dwSampleFlags\"><dd> <p> Reserved. </p> </dd></param>\t\n            <param name=\"llSampleTime\"><dd> <p>The presentation time for this sample, in 100-nanosecond units. If the sample does not have a presentation time, the value of this parameter is <strong>_I64_MAX</strong>.</p> </dd></param>\t\n            <param name=\"llSampleDuration\"><dd> <p>The duration of the sample, in 100-nanosecond units. If the sample does not have a duration, the value of this parameter is <strong>_I64_MAX</strong>.</p> </dd></param>\t\n            <param name=\"sampleBufferRef\"><dd> <p> A reference to a buffer that contains the sample data. </p> </dd></param>\t\n            <param name=\"dwSampleSize\"><dd> <p> Size of the <em>pSampleBuffer</em> buffer, in bytes. </p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>If you use the sample-grabber sink in a playback topology, this method should return quickly, or it might interfere with playback. Do not block the thread, wait on events, or perform other lengthy operations inside this method.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSampleGrabberSinkCallback::OnProcessSample']/*\"/>\t\n            <msdn-id>bb970326</msdn-id>\t\n            <unmanaged>HRESULT IMFSampleGrabberSinkCallback::OnProcessSample([In] const GUID&amp; guidMajorMediaType,[In] unsigned int dwSampleFlags,[In] longlong llSampleTime,[In] longlong llSampleDuration,[In, Buffer] const unsigned char* pSampleBuffer,[In] unsigned int dwSampleSize)</unmanaged>\t\n            <unmanaged-short>IMFSampleGrabberSinkCallback::OnProcessSample</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SampleGrabberSinkCallback.OnShutdown\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Called when the sample-grabber sink is shut down.</p>\t\n            </summary>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>This method is called when the sink's <strong><see cref=\"M:SharpDX.MediaFoundation.MediaSink.Shutdown\"/></strong> method is called.</p><p>The <strong>OnShutdown</strong> method should return quickly, or it might interfere with playback. Do not block the thread, wait on events, or perform other lengthy operations inside this method.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSampleGrabberSinkCallback::OnShutdown']/*\"/>\t\n            <msdn-id>ms703093</msdn-id>\t\n            <unmanaged>HRESULT IMFSampleGrabberSinkCallback::OnShutdown()</unmanaged>\t\n            <unmanaged-short>IMFSampleGrabberSinkCallback::OnShutdown</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.SampleGrabberSinkCallback2\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Extends the <strong><see cref=\"T:SharpDX.MediaFoundation.SampleGrabberSinkCallback\"/></strong> interface.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This callback interface is used with the sample-grabber sink. It extends the <strong><see cref=\"T:SharpDX.MediaFoundation.SampleGrabberSinkCallback\"/></strong> interface by adding the <strong>OnProcessSampleEx</strong> method, which supersedes the <strong><see cref=\"M:SharpDX.MediaFoundation.SampleGrabberSinkCallback.OnProcessSample(System.Guid,System.Int32,System.Int64,System.Int64,System.Byte[],System.Int32)\"/></strong> method.</p><p> The <strong>OnProcessSampleEx</strong> method adds a parameter that contains the attributes for the media sample. You can use the attributes to get information about the sample, such as  field dominance and telecine flags. </p><p>To use this interface, do the following: </p><ol> <li>Implement  a callback object that exposes the interface.</li> <li>Create the sample-grabber sink by calling the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateSampleGrabberSinkActivate(SharpDX.MediaFoundation.MediaType,SharpDX.MediaFoundation.SampleGrabberSinkCallback,SharpDX.MediaFoundation.Activate@)\"/></strong> function. Pass the callback reference in the <em>pIMFSampleGrabberSinkCallback</em> parameter.</li> <li>The sample-grabber sink will call <strong>QueryInterface</strong> on the callback object.</li> <li>If the callback object exposes the <strong><see cref=\"T:SharpDX.MediaFoundation.SampleGrabberSinkCallback2\"/></strong> interface, the sample-grabber sink will use the <strong>OnProcessSampleEx</strong> callback method.  Otherwise, the sample-grabber sink will use the older <strong>OnProcessSample</strong> callback method.</li> </ol>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSampleGrabberSinkCallback2']/*\"/>\t\n            <msdn-id>dd374517</msdn-id>\t\n            <unmanaged>IMFSampleGrabberSinkCallback2</unmanaged>\t\n            <unmanaged-short>IMFSampleGrabberSinkCallback2</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SampleGrabberSinkCallback2.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.SampleGrabberSinkCallback2\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SampleGrabberSinkCallback2.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.SampleGrabberSinkCallback2\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.SampleGrabberSinkCallback2\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SampleGrabberSinkCallback2.OnProcessSampleEx(System.Guid,System.Int32,System.Int64,System.Int64,System.Byte[],System.Int32,SharpDX.MediaFoundation.MediaAttributes)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Called when the sample-grabber sink receives a new media sample.</p>\t\n            </summary>\t\n            <param name=\"guidMajorMediaType\"><dd> <p>The major type <see cref=\"T:System.Guid\"/> that specifies the format of the data. For a list of possible values, see Major Media Types. </p> </dd></param>\t\n            <param name=\"dwSampleFlags\"><dd> <p>Sample flags. The sample-grabber sink gets the value of this parameter by calling the <strong><see cref=\"M:SharpDX.MediaFoundation.Sample.GetSampleFlags(System.Int32@)\"/></strong> method of the media sample.</p> </dd></param>\t\n            <param name=\"llSampleTime\"><dd> <p>The presentation time for this sample, in 100-nanosecond units. If the sample does not have a presentation time, the value of this parameter is <strong>_I64_MAX</strong></p> </dd></param>\t\n            <param name=\"llSampleDuration\"><dd> <p>The duration of the sample, in 100-nanosecond units. If the sample does not have a duration, the value of this parameter is <strong>_I64_MAX</strong>.</p> </dd></param>\t\n            <param name=\"sampleBufferRef\"><dd> <p>A reference to a buffer that contains the sample data.</p> </dd></param>\t\n            <param name=\"dwSampleSize\"><dd> <p>The size, in bytes, of the <em>pSampleBuffer</em> buffer.</p> </dd></param>\t\n            <param name=\"attributesRef\"><dd> <p>A reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaAttributes\"/></strong> interface. Use this interface to get the attributes for this sample (if any). For a list of sample attributes, see Sample Attributes.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>If you use the sample-grabber sink in a playback topology, this method should return quickly, or it might interfere with playback. Do not block the thread, wait on events, or perform other lengthy operations inside this method.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSampleGrabberSinkCallback2::OnProcessSampleEx']/*\"/>\t\n            <msdn-id>dd374518</msdn-id>\t\n            <unmanaged>HRESULT IMFSampleGrabberSinkCallback2::OnProcessSampleEx([In] const GUID&amp; guidMajorMediaType,[In] unsigned int dwSampleFlags,[In] longlong llSampleTime,[In] longlong llSampleDuration,[In, Buffer] const unsigned char* pSampleBuffer,[In] unsigned int dwSampleSize,[In] IMFAttributes* pAttributes)</unmanaged>\t\n            <unmanaged-short>IMFSampleGrabberSinkCallback2::OnProcessSampleEx</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.SampleProtection\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves initialization information for sample protection from the upstream component.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This method must be implemented by the upstream component. The method fails if the component does not support the requested sample protection version. Downstream components do not implement this method and should return E_NOTIMPL.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSampleProtection']/*\"/>\t\n            <msdn-id>ms693577</msdn-id>\t\n            <unmanaged>IMFSampleProtection</unmanaged>\t\n            <unmanaged-short>IMFSampleProtection</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SampleProtection.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.SampleProtection\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SampleProtection.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.SampleProtection\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.SampleProtection\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SampleProtection.GetInputProtectionVersion(System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves the version of sample protection that the component implements on input.</p>\t\n            </summary>\t\n            <param name=\"dwVersionRef\"><dd> <p>Receives a member of the <strong><see cref=\"T:SharpDX.MediaFoundation.SampleProtectionVersion\"/></strong> enumeration.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSampleProtection::GetInputProtectionVersion']/*\"/>\t\n            <msdn-id>bb970365</msdn-id>\t\n            <unmanaged>HRESULT IMFSampleProtection::GetInputProtectionVersion([Out] unsigned int* pdwVersion)</unmanaged>\t\n            <unmanaged-short>IMFSampleProtection::GetInputProtectionVersion</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SampleProtection.GetOutputProtectionVersion(System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves the version of sample protection that the component implements on output.</p>\t\n            </summary>\t\n            <param name=\"dwVersionRef\"><dd> <p>Receives a member of the <strong><see cref=\"T:SharpDX.MediaFoundation.SampleProtectionVersion\"/></strong> enumeration.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSampleProtection::GetOutputProtectionVersion']/*\"/>\t\n            <msdn-id>bb970415</msdn-id>\t\n            <unmanaged>HRESULT IMFSampleProtection::GetOutputProtectionVersion([Out] unsigned int* pdwVersion)</unmanaged>\t\n            <unmanaged-short>IMFSampleProtection::GetOutputProtectionVersion</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SampleProtection.GetProtectionCertificate(System.Int32,System.Byte[],System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves the sample protection certificate.</p>\t\n            </summary>\t\n            <param name=\"dwVersion\"><dd> <p>Specifies the version number of the sample protection scheme for which to receive a certificate. The version number is specified as a <strong><see cref=\"T:SharpDX.MediaFoundation.SampleProtectionVersion\"/></strong> enumeration value.</p> </dd></param>\t\n            <param name=\"certOut\"><dd> <p>Receives a reference to a buffer containing the certificate. The caller must free the memory for the buffer by calling <strong>CoTaskMemFree</strong>.</p> </dd></param>\t\n            <param name=\"cbCertRef\"><dd> <p>Receives the size of the <em>ppCert</em> buffer, in bytes.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong>E_NOTIMPL</strong></dt> </dl> </td><td> <p>Not implemented.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>For certain version numbers of sample protection, the downstream component must provide a certificate. Components that do not support these version numbers can return E_NOTIMPL.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSampleProtection::GetProtectionCertificate']/*\"/>\t\n            <msdn-id>bb970503</msdn-id>\t\n            <unmanaged>HRESULT IMFSampleProtection::GetProtectionCertificate([In] unsigned int dwVersion,[Out, Buffer] unsigned char** ppCert,[Out] unsigned int* pcbCert)</unmanaged>\t\n            <unmanaged-short>IMFSampleProtection::GetProtectionCertificate</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SampleProtection.InitOutputProtection(System.Int32,System.Int32,System.Byte,System.Int32,System.Byte,System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves initialization information for sample protection from the upstream component.</p>\t\n            </summary>\t\n            <param name=\"dwVersion\"><dd> <p>Specifies the version number of the sample protection scheme. The version number is specified as a <strong><see cref=\"T:SharpDX.MediaFoundation.SampleProtectionVersion\"/></strong> enumeration value.</p> </dd></param>\t\n            <param name=\"dwOutputId\"><dd> <p>Identifier of the output stream. The identifier corresponds to the output stream identifier returned by the <strong><see cref=\"T:SharpDX.MediaFoundation.Transform\"/></strong> interface.</p> </dd></param>\t\n            <param name=\"bCertRef\"><dd> <p>Pointer to a certificate provided by the downstream component.</p> </dd></param>\t\n            <param name=\"cbCert\"><dd> <p>Size of the certificate, in bytes.</p> </dd></param>\t\n            <param name=\"bSeedOut\"><dd> <p>Receives a reference to a buffer that contains the initialization information for downstream component. The caller must free the memory for the buffer by calling <strong>CoTaskMemFree</strong>.</p> </dd></param>\t\n            <param name=\"cbSeedRef\"><dd> <p>Receives the size of the <em>ppbSeed</em> buffer, in bytes.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong>E_NOTIMPL</strong></dt> </dl> </td><td> <p>Not implemented.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>This method must be implemented by the upstream component. The method fails if the component does not support the requested sample protection version. Downstream components do not implement this method and should return E_NOTIMPL.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSampleProtection::InitOutputProtection']/*\"/>\t\n            <msdn-id>ms693577</msdn-id>\t\n            <unmanaged>HRESULT IMFSampleProtection::InitOutputProtection([In] unsigned int dwVersion,[In] unsigned int dwOutputId,[In] unsigned char* pbCert,[In] unsigned int cbCert,[In] unsigned char** ppbSeed,[In] unsigned int* pcbSeed)</unmanaged>\t\n            <unmanaged-short>IMFSampleProtection::InitOutputProtection</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SampleProtection.InitInputProtection(System.Int32,System.Int32,System.Byte,System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Initializes sample protection on the downstream component.</p>\t\n            </summary>\t\n            <param name=\"dwVersion\"><dd> <p>Specifies the version number of the sample protection scheme. The version number is specified as a <strong><see cref=\"T:SharpDX.MediaFoundation.SampleProtectionVersion\"/></strong> enumeration value.</p> </dd></param>\t\n            <param name=\"dwInputId\"><dd> <p>Identifier of the input stream. The identifier corresponds to the output stream identifier returned by the <strong><see cref=\"T:SharpDX.MediaFoundation.Transform\"/></strong> interface.</p> </dd></param>\t\n            <param name=\"bSeedRef\"><dd> <p>Pointer to a buffer that contains the initialization data provided by the upstream component. To retrieve this buffer, call <strong><see cref=\"M:SharpDX.MediaFoundation.SampleProtection.InitOutputProtection(System.Int32,System.Int32,System.Byte,System.Int32,System.Byte,System.Int32)\"/></strong>.</p> </dd></param>\t\n            <param name=\"cbSeed\"><dd> <p>Size of the <em>pbSeed</em> buffer, in bytes.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSampleProtection::InitInputProtection']/*\"/>\t\n            <msdn-id>ms696181</msdn-id>\t\n            <unmanaged>HRESULT IMFSampleProtection::InitInputProtection([In] unsigned int dwVersion,[In] unsigned int dwInputId,[In] unsigned char* pbSeed,[In] unsigned int cbSeed)</unmanaged>\t\n            <unmanaged-short>IMFSampleProtection::InitInputProtection</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.SampleProtection.InputProtectionVersion\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves the version of sample protection that the component implements on input.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSampleProtection::GetInputProtectionVersion']/*\"/>\t\n            <msdn-id>bb970365</msdn-id>\t\n            <unmanaged>GetInputProtectionVersion</unmanaged>\t\n            <unmanaged-short>GetInputProtectionVersion</unmanaged-short>\t\n            <unmanaged>HRESULT IMFSampleProtection::GetInputProtectionVersion([Out] unsigned int* pdwVersion)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.SampleProtection.OutputProtectionVersion\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves the version of sample protection that the component implements on output.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSampleProtection::GetOutputProtectionVersion']/*\"/>\t\n            <msdn-id>bb970415</msdn-id>\t\n            <unmanaged>GetOutputProtectionVersion</unmanaged>\t\n            <unmanaged-short>GetOutputProtectionVersion</unmanaged-short>\t\n            <unmanaged>HRESULT IMFSampleProtection::GetOutputProtectionVersion([Out] unsigned int* pdwVersion)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.SaveJob\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Persists media data from a source byte stream to an application-provided byte stream.</p><p>The byte stream used for HTTP download implements this interface. To get a reference to this interface, call <strong><see cref=\"M:SharpDX.MediaFoundation.ServiceProvider.GetService(System.Guid,System.Guid,System.IntPtr@)\"/></strong> on the byte stream, with the service identifier MFNET_SAVEJOB_SERVICE.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSaveJob']/*\"/>\t\n            <msdn-id>ms694247</msdn-id>\t\n            <unmanaged>IMFSaveJob</unmanaged>\t\n            <unmanaged-short>IMFSaveJob</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SaveJob.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.SaveJob\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SaveJob.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.SaveJob\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.SaveJob\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SaveJob.BeginSave_(System.IntPtr,SharpDX.MediaFoundation.AsyncCallback,SharpDX.ComObject)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Begins saving a Windows Media file to the application's byte stream.</p>\t\n            </summary>\t\n            <param name=\"streamRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.IByteStream\"/></strong> interface of the application's byte stream. The data from the source byte stream is written to this byte stream.</p> </dd></param>\t\n            <param name=\"callbackRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.AsyncCallback\"/></strong> interface of a callback object. The caller must implement this interface</p> </dd></param>\t\n            <param name=\"stateRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interface of a state object, defined by the caller. This parameter can be <strong><c>null</c></strong>. You can use this object to hold state information. The object is returned to the caller when the callback is invoked.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>When the operation completes, the callback object's <strong><see cref=\"M:SharpDX.MediaFoundation.AsyncCallback.Invoke(SharpDX.MediaFoundation.AsyncResult)\"/></strong> method is called. At that point, the application should call <strong><see cref=\"M:SharpDX.MediaFoundation.SaveJob.EndSave(SharpDX.MediaFoundation.AsyncResult)\"/></strong> to complete the asynchronous request.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSaveJob::BeginSave']/*\"/>\t\n            <msdn-id>ms705664</msdn-id>\t\n            <unmanaged>HRESULT IMFSaveJob::BeginSave([In] IMFByteStream* pStream,[In] IMFAsyncCallback* pCallback,[In] IUnknown* pState)</unmanaged>\t\n            <unmanaged-short>IMFSaveJob::BeginSave</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SaveJob.EndSave(SharpDX.MediaFoundation.AsyncResult)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Completes the operation started by <strong><see cref=\"M:SharpDX.MediaFoundation.SaveJob.BeginSave_(System.IntPtr,SharpDX.MediaFoundation.AsyncCallback,SharpDX.ComObject)\"/></strong>.</p>\t\n            </summary>\t\n            <param name=\"resultRef\">No documentation.</param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSaveJob::EndSave']/*\"/>\t\n            <msdn-id>ms701610</msdn-id>\t\n            <unmanaged>HRESULT IMFSaveJob::EndSave([In] IMFAsyncResult* pResult)</unmanaged>\t\n            <unmanaged-short>IMFSaveJob::EndSave</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SaveJob.CancelSave\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Cancels the operation started by <strong><see cref=\"M:SharpDX.MediaFoundation.SaveJob.BeginSave_(System.IntPtr,SharpDX.MediaFoundation.AsyncCallback,SharpDX.ComObject)\"/></strong>.</p>\t\n            </summary>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSaveJob::CancelSave']/*\"/>\t\n            <msdn-id>ms703196</msdn-id>\t\n            <unmanaged>HRESULT IMFSaveJob::CancelSave()</unmanaged>\t\n            <unmanaged-short>IMFSaveJob::CancelSave</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SaveJob.GetProgress(System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the percentage of content saved to the provided byte stream.</p>\t\n            </summary>\t\n            <param name=\"dwPercentCompleteRef\"><dd> <p>Receives the percentage of completion.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSaveJob::GetProgress']/*\"/>\t\n            <msdn-id>ms700176</msdn-id>\t\n            <unmanaged>HRESULT IMFSaveJob::GetProgress([Out] unsigned int* pdwPercentComplete)</unmanaged>\t\n            <unmanaged-short>IMFSaveJob::GetProgress</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.SaveJob.Progress\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the percentage of content saved to the provided byte stream.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSaveJob::GetProgress']/*\"/>\t\n            <msdn-id>ms700176</msdn-id>\t\n            <unmanaged>GetProgress</unmanaged>\t\n            <unmanaged-short>GetProgress</unmanaged-short>\t\n            <unmanaged>HRESULT IMFSaveJob::GetProgress([Out] unsigned int* pdwPercentComplete)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.SecureChannel\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the client's certificate.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSecureChannel']/*\"/>\t\n            <msdn-id>bb970528</msdn-id>\t\n            <unmanaged>IMFSecureChannel</unmanaged>\t\n            <unmanaged-short>IMFSecureChannel</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SecureChannel.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.SecureChannel\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SecureChannel.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.SecureChannel\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.SecureChannel\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SecureChannel.GetCertificate(System.Byte[],System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the client's certificate.</p>\t\n            </summary>\t\n            <param name=\"certOut\"><dd> <p>Receives a reference to a buffer allocated by the object. The buffer contains the client's certificate. The caller must release the buffer by calling <strong>CoTaskMemFree</strong>.</p> </dd></param>\t\n            <param name=\"cbCertRef\"><dd> <p>Receives the size of the <em>ppCert</em> buffer, in bytes.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSecureChannel::GetCertificate']/*\"/>\t\n            <msdn-id>bb970528</msdn-id>\t\n            <unmanaged>HRESULT IMFSecureChannel::GetCertificate([Out, Buffer] unsigned char** ppCert,[Out] unsigned int* pcbCert)</unmanaged>\t\n            <unmanaged-short>IMFSecureChannel::GetCertificate</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SecureChannel.SetupSession(System.Byte[],System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Passes the encrypted session key to the client.</p>\t\n            </summary>\t\n            <param name=\"bEncryptedSessionKeyRef\"><dd> <p>Pointer to a buffer that contains the encrypted session key. This parameter can be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"cbSessionKey\"><dd> <p>Size of the <em>pbEncryptedSessionKey</em> buffer, in bytes.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSecureChannel::SetupSession']/*\"/>\t\n            <msdn-id>bb970477</msdn-id>\t\n            <unmanaged>HRESULT IMFSecureChannel::SetupSession([In, Buffer] unsigned char* pbEncryptedSessionKey,[In] unsigned int cbSessionKey)</unmanaged>\t\n            <unmanaged-short>IMFSecureChannel::SetupSession</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.SequencerSource\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Implemented by the Sequencer Source. The sequencer source enables an application to create a sequence of topologies. To create the sequencer source, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateSequencerSource(SharpDX.ComObject,SharpDX.MediaFoundation.SequencerSource@)\"/></strong>. For step-by-step instructions about how to create a playlist, see How to Create a Playlist.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSequencerSource']/*\"/>\t\n            <msdn-id>ms702972</msdn-id>\t\n            <unmanaged>IMFSequencerSource</unmanaged>\t\n            <unmanaged-short>IMFSequencerSource</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SequencerSource.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.SequencerSource\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SequencerSource.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.SequencerSource\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.SequencerSource\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SequencerSource.AppendTopology(SharpDX.MediaFoundation.Topology,System.Int32,System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Adds a topology to the end of the queue.</p>\t\n            </summary>\t\n            <param name=\"topologyRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.Topology\"/></strong> interface of the topology. This reference cannot be <strong><c>null</c></strong>. If an application passes <strong><c>null</c></strong>, the call fails with an E_INVALIDARG error code.</p> </dd></param>\t\n            <param name=\"dwFlags\"><dd> <p>A combination of flags from the <strong><see cref=\"T:SharpDX.MediaFoundation.SequencerTopologyFlags\"/></strong> enumeration.</p> </dd></param>\t\n            <param name=\"dwIdRef\"><dd> <p>Receives the sequencer element identifier for this topology.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Attributenotfound\"/></strong></dt> </dl> </td><td> <p>The source topology node is missing one of the following attributes:</p> <ul> <li> <p> <strong><see cref=\"F:SharpDX.MediaFoundation.TopologyNodeAttributeKeys.StreamDescriptor\"/></strong> </p> </li> <li> <p> <strong><see cref=\"F:SharpDX.MediaFoundation.TopologyNodeAttributeKeys.PresentationDescriptor\"/></strong> </p> </li> <li> <p> <strong><see cref=\"F:SharpDX.MediaFoundation.TopologyNodeAttributeKeys.Source\"/></strong> </p> </li> </ul> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>The sequencer plays topologies in the order they are queued. You can queue as many topologies as you want to preroll.</p><p>The application must indicate to the sequencer when it has queued the last topology on the Media Session. To specify the last topology, set the SequencerTopologyFlags_Last flag in the <em>dwFlags</em> parameter when you append the topology. The sequencer uses this information to end playback with the pipeline. Otherwise, the sequencer waits indefinitely for a new topology to be queued.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSequencerSource::AppendTopology']/*\"/>\t\n            <msdn-id>ms697046</msdn-id>\t\n            <unmanaged>HRESULT IMFSequencerSource::AppendTopology([In] IMFTopology* pTopology,[In] unsigned int dwFlags,[Out] unsigned int* pdwId)</unmanaged>\t\n            <unmanaged-short>IMFSequencerSource::AppendTopology</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SequencerSource.DeleteTopology(System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Deletes a topology from the queue.</p>\t\n            </summary>\t\n            <param name=\"dwId\"><dd> <p>The sequencer element identifier of the topology to delete.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSequencerSource::DeleteTopology']/*\"/>\t\n            <msdn-id>bb970428</msdn-id>\t\n            <unmanaged>HRESULT IMFSequencerSource::DeleteTopology([In] unsigned int dwId)</unmanaged>\t\n            <unmanaged-short>IMFSequencerSource::DeleteTopology</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SequencerSource.GetPresentationContext(SharpDX.MediaFoundation.PresentationDescriptor,System.Int32@,SharpDX.MediaFoundation.Topology@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Maps a presentation descriptor to its associated sequencer element identifier and the topology it represents.</p>\t\n            </summary>\t\n            <param name=\"pDRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.PresentationDescriptor\"/></strong> interface of the presentation descriptor.</p> </dd></param>\t\n            <param name=\"idRef\"><dd> <p>Receives the sequencer element identifier. This value is assigned by the sequencer source when the application calls <strong><see cref=\"M:SharpDX.MediaFoundation.SequencerSource.AppendTopology(SharpDX.MediaFoundation.Topology,System.Int32,System.Int32@)\"/></strong>. This parameter is optional and can be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"topologyOut\"><dd> <p>Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.Topology\"/></strong> interface of the original topology that the application added to the sequencer source. The caller must release the interface. This parameter can receive the value <strong><c>null</c></strong> if the sequencer source has switched to the next presentation. This parameter is optional and can be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong>E_INVALIDARG</strong></dt> </dl> </td><td> <p>The presentation descriptor is not valid.</p> </td></tr> <tr><td> <dl> <dt><strong>MF_S_SEQUENCER_CONTEXT_CANCELED</strong></dt> </dl> </td><td> <p>This segment was canceled.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>The topology returned in <em>ppTopology</em> is the original topology that the application specified in <strong>AppendTopology</strong>. The source nodes in this topology contain references to the native sources. Do not queue this topology on the Media Session. Instead, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaSourceTopologyProvider.GetMediaSourceTopology(SharpDX.MediaFoundation.PresentationDescriptor,SharpDX.MediaFoundation.Topology@)\"/></strong> to get the sequencer source's modified topology. The source nodes in the modified topology contain references to the sequencer source, rather than the native sources.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSequencerSource::GetPresentationContext']/*\"/>\t\n            <msdn-id>bb970514</msdn-id>\t\n            <unmanaged>HRESULT IMFSequencerSource::GetPresentationContext([In] IMFPresentationDescriptor* pPD,[Out, Optional] unsigned int* pId,[Out, Optional] IMFTopology** ppTopology)</unmanaged>\t\n            <unmanaged-short>IMFSequencerSource::GetPresentationContext</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SequencerSource.UpdateTopology(System.Int32,SharpDX.MediaFoundation.Topology)\">\n            <summary>\t\n            <p>Updates a topology in the queue.</p>  <see cref=\"T:SharpDX.Result\"/> UpdateTopology( MFSequencerElementId  dwId, <see cref=\"T:SharpDX.MediaFoundation.Topology\"/>*  pTopology );<p></p>Parameters <p> dwId </p> <p>[in] Sequencer element identifier of the topology to update.</p> <p> pTopology </p> <p>[in]  Pointer to the <see cref=\"T:SharpDX.MediaFoundation.Topology\"/> Interface of the updated topology object. </p>  <p>The method returns an <see cref=\"T:SharpDX.Result\"/>. Possible values include, but are not limited to, those in the following table.</p> <table><tr> <th> Return code </th> <th> Description </th> </tr><tr> <td> <p><see cref=\"F:SharpDX.Result.Ok\"/></p> </td> <td> <p>The method succeeded.</p> </td> </tr><tr> <td> <p><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/></p> </td> <td> <p>The sequencer source has been shut down.</p> </td> </tr></table>  <p>This method is asynchronous. When the operation is completed, the sequencer source sends an <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.SequencerSourceTopologyUpdated\"/> Event.</p>  <p> Client: Requires Windows Vista.</p> <p> Header: Include mfidl.h.</p> <p> Library: Use mfuuid.lib.</p> ReferenceIMFSequencerSource InterfaceOther ResourcesSequencer Source\t\n            </summary>\t\n            <param name=\"dwId\">No documentation.</param>\t\n            <param name=\"topologyRef\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSequencerSource::UpdateTopology']/*\"/>\t\n            <msdn-id>ms700212</msdn-id>\t\n            <unmanaged>HRESULT IMFSequencerSource::UpdateTopology([In] unsigned int dwId,[In] IMFTopology* pTopology)</unmanaged>\t\n            <unmanaged-short>IMFSequencerSource::UpdateTopology</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SequencerSource.UpdateTopologyFlags(System.Int32,System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Updates the flags for a topology in the queue.</p>\t\n            </summary>\t\n            <param name=\"dwId\"><dd> <p>Sequencer element identifier of the topology to update.</p> </dd></param>\t\n            <param name=\"dwFlags\"><dd> <p>Bitwise <strong>OR</strong> of flags from the <strong><see cref=\"T:SharpDX.MediaFoundation.SequencerTopologyFlags\"/></strong> enumeration.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSequencerSource::UpdateTopologyFlags']/*\"/>\t\n            <msdn-id>bb970564</msdn-id>\t\n            <unmanaged>HRESULT IMFSequencerSource::UpdateTopologyFlags([In] unsigned int dwId,[In] unsigned int dwFlags)</unmanaged>\t\n            <unmanaged-short>IMFSequencerSource::UpdateTopologyFlags</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.ServiceProvider\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Queries an object for a specified service interface. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>A service is an interface that is exposed by one object but might be implemented by another object. The <strong>GetService</strong> method is equivalent to <strong>QueryInterface</strong>, with the following difference: when <strong>QueryInterface</strong> retrieves a reference to an interface, it is guaranteed that you can query the returned interface and get back the original interface. The <strong>GetService</strong> method does not make this guarantee, because the retrieved interface might be implemented by a separate object.</p><p>The <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.GetService(SharpDX.ComObject,System.Guid,System.Guid,System.IntPtr@)\"/></strong> function is a helper function that queries an object for <strong><see cref=\"T:SharpDX.MediaFoundation.ServiceProvider\"/></strong> and calls the <strong>GetService</strong> method.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFGetService']/*\"/>\t\n            <msdn-id>ms694261</msdn-id>\t\n            <unmanaged>IMFGetService</unmanaged>\t\n            <unmanaged-short>IMFGetService</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ServiceProvider.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.ServiceProvider\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ServiceProvider.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.ServiceProvider\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.ServiceProvider\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.ServiceProvider.GetService(System.Guid,System.Guid,System.IntPtr@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves a service interface.</p>\t\n            </summary>\t\n            <param name=\"guidService\"><dd> <p>The service identifier (SID) of the service. For a list of service identifiers, see Service Interfaces.</p> </dd></param>\t\n            <param name=\"riid\"><dd> <p>The interface identifier (IID) of the interface being requested.</p> </dd></param>\t\n            <param name=\"vObjectOut\"><dd> <p>Receives the interface reference. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.UnsupportedService\"/></strong></dt> </dl> </td><td> <p>The object does not support the service.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFGetService::GetService']/*\"/>\t\n            <msdn-id>ms696978</msdn-id>\t\n            <unmanaged>HRESULT IMFGetService::GetService([In] const GUID&amp; guidService,[In] const GUID&amp; riid,[Out] void** ppvObject)</unmanaged>\t\n            <unmanaged-short>IMFGetService::GetService</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.Shutdownable\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Queries the status of an earlier call to the <strong><see cref=\"M:SharpDX.MediaFoundation.Shutdownable.Shutdown\"/></strong> method. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Until <strong>Shutdown</strong> is called, the <strong>GetShutdownStatus</strong> method returns <strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidRequest\"/></strong>.</p><p>If an object's <strong>Shutdown</strong> method is asynchronous, <em>pStatus</em> might receive the value <strong><see cref=\"F:SharpDX.MediaFoundation.ShutdownStatus.Initiated\"/></strong>. When the object is completely shut down, <em>pStatus</em> receives the value <strong><see cref=\"F:SharpDX.MediaFoundation.ShutdownStatus.Completed\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFShutdown']/*\"/>\t\n            <msdn-id>bb970451</msdn-id>\t\n            <unmanaged>IMFShutdown</unmanaged>\t\n            <unmanaged-short>IMFShutdown</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Shutdownable.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.Shutdownable\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Shutdownable.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.Shutdownable\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.Shutdownable\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Shutdownable.Shutdown\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Shuts down a Media Foundation object and releases all resources associated with the object. </p>\t\n            </summary>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>The <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.ShutdownObject(SharpDX.ComObject)\"/></strong> helper function is equivalent to calling this method.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFShutdown::Shutdown']/*\"/>\t\n            <msdn-id>ms701615</msdn-id>\t\n            <unmanaged>HRESULT IMFShutdown::Shutdown()</unmanaged>\t\n            <unmanaged-short>IMFShutdown::Shutdown</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Shutdownable.GetShutdownStatus(SharpDX.MediaFoundation.ShutdownStatus@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Queries the status of an earlier call to the <strong><see cref=\"M:SharpDX.MediaFoundation.Shutdownable.Shutdown\"/></strong> method. </p>\t\n            </summary>\t\n            <param name=\"statusRef\">No documentation.</param>\t\n            <returns><p> The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table. </p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded. </p> </td></tr> <tr><td> <dl> <dt><strong>E_INVALIDARG</strong></dt> </dl> </td><td> <p>Invalid argument.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidRequest\"/></strong></dt> </dl> </td><td> <p> The <strong>Shutdown</strong> method has not been called on this object. </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>Until <strong>Shutdown</strong> is called, the <strong>GetShutdownStatus</strong> method returns <strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidRequest\"/></strong>.</p><p>If an object's <strong>Shutdown</strong> method is asynchronous, <em>pStatus</em> might receive the value <strong><see cref=\"F:SharpDX.MediaFoundation.ShutdownStatus.Initiated\"/></strong>. When the object is completely shut down, <em>pStatus</em> receives the value <strong><see cref=\"F:SharpDX.MediaFoundation.ShutdownStatus.Completed\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFShutdown::GetShutdownStatus']/*\"/>\t\n            <msdn-id>bb970451</msdn-id>\t\n            <unmanaged>HRESULT IMFShutdown::GetShutdownStatus([Out] MFSHUTDOWN_STATUS* pStatus)</unmanaged>\t\n            <unmanaged-short>IMFShutdown::GetShutdownStatus</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.Shutdownable.ShutdownStatus\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Queries the status of an earlier call to the <strong><see cref=\"M:SharpDX.MediaFoundation.Shutdownable.Shutdown\"/></strong> method. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Until <strong>Shutdown</strong> is called, the <strong>GetShutdownStatus</strong> method returns <strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidRequest\"/></strong>.</p><p>If an object's <strong>Shutdown</strong> method is asynchronous, <em>pStatus</em> might receive the value <strong><see cref=\"F:SharpDX.MediaFoundation.ShutdownStatus.Initiated\"/></strong>. When the object is completely shut down, <em>pStatus</em> receives the value <strong><see cref=\"F:SharpDX.MediaFoundation.ShutdownStatus.Completed\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFShutdown::GetShutdownStatus']/*\"/>\t\n            <msdn-id>bb970451</msdn-id>\t\n            <unmanaged>GetShutdownStatus</unmanaged>\t\n            <unmanaged-short>GetShutdownStatus</unmanaged-short>\t\n            <unmanaged>HRESULT IMFShutdown::GetShutdownStatus([Out] MFSHUTDOWN_STATUS* pStatus)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.SchemeHandler\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Begins an asynchronous request to create an object from a URL.</p><p>When the Source Resolver creates a media source from a URL, it passes the request to a scheme handler. The scheme handler might create a media source directly from the URL, or it might return a byte stream. If it returns a byte stream, the source resolver use a byte-stream handler to create the media source from the byte stream.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The <em>dwFlags</em> parameter must contain the <strong><see cref=\"F:SharpDX.MediaFoundation.SourceResolverFlags.MediaSource\"/></strong> flag or the <strong><see cref=\"F:SharpDX.MediaFoundation.SourceResolverFlags.ByteStream\"/></strong> flag. If the <strong><see cref=\"F:SharpDX.MediaFoundation.SourceResolverFlags.MediaSource\"/></strong> flag is set, the scheme handler might create the media source directly from the URL, or it might create a byte stream. The type of object is returned in the <em>pObjectType</em> parameter of the <strong><see cref=\"M:SharpDX.MediaFoundation.SchemeHandler.EndCreateObject(SharpDX.MediaFoundation.AsyncResult,SharpDX.MediaFoundation.ObjectType@,SharpDX.ComObject@)\"/></strong> method. If the scheme handler returns a byte stream, the source resolver will pass the byte stream to a byte-stream handler, which will create the media source from the byte stream.</p><p>If the <strong><see cref=\"F:SharpDX.MediaFoundation.SourceResolverFlags.ByteStream\"/></strong> flag is set, the scheme handler will attempt to create a byte stream from the URL. However, if the scheme handler is designed to create a media source directly, rather than a byte stream, the method will fail.</p><p>The following table summarizes the behavior of these two flags when passed to this method:</p><table> <tr><th>Flag</th><th>Object created</th></tr> <tr><td><strong><see cref=\"F:SharpDX.MediaFoundation.SourceResolverFlags.MediaSource\"/></strong></td><td>Media source or byte stream</td></tr> <tr><td><strong><see cref=\"F:SharpDX.MediaFoundation.SourceResolverFlags.ByteStream\"/></strong></td><td>Byte stream</td></tr> </table><p>?</p><p>The <strong><see cref=\"F:SharpDX.MediaFoundation.SourceResolverFlags.MediaSource\"/></strong> and <strong><see cref=\"F:SharpDX.MediaFoundation.SourceResolverFlags.ByteStream\"/></strong> flags can be combined, although in this case it is redundant.</p><p>When the operation completes, the scheme handler calls the <strong><see cref=\"M:SharpDX.MediaFoundation.AsyncCallback.Invoke(SharpDX.MediaFoundation.AsyncResult)\"/></strong> method. The Invoke method should call <strong><see cref=\"M:SharpDX.MediaFoundation.SchemeHandler.EndCreateObject(SharpDX.MediaFoundation.AsyncResult,SharpDX.MediaFoundation.ObjectType@,SharpDX.ComObject@)\"/></strong> to get a reference to the created object.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSchemeHandler']/*\"/>\t\n            <msdn-id>bb970433</msdn-id>\t\n            <unmanaged>IMFSchemeHandler</unmanaged>\t\n            <unmanaged-short>IMFSchemeHandler</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SchemeHandler.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.SchemeHandler\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SchemeHandler.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.SchemeHandler\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.SchemeHandler\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SchemeHandler.BeginCreateObject(System.String,System.Int32,SharpDX.ComObject,SharpDX.ComObject@,SharpDX.MediaFoundation.AsyncCallback,SharpDX.ComObject)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Begins an asynchronous request to create an object from a URL.</p><p>When the Source Resolver creates a media source from a URL, it passes the request to a scheme handler. The scheme handler might create a media source directly from the URL, or it might return a byte stream. If it returns a byte stream, the source resolver use a byte-stream handler to create the media source from the byte stream.</p>\t\n            </summary>\t\n            <param name=\"wszURLRef\">No documentation.</param>\t\n            <param name=\"dwFlags\">No documentation.</param>\t\n            <param name=\"propsRef\">No documentation.</param>\t\n            <param name=\"iUnknownCancelCookieOut\">No documentation.</param>\t\n            <param name=\"callbackRef\">No documentation.</param>\t\n            <param name=\"unkStateRef\">No documentation.</param>\t\n            <returns><p> The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table. </p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded. </p> </td></tr> <tr><td> <dl> <dt><strong>E_ACCESSDENIED</strong></dt> </dl> </td><td> <p> Cannot open the URL with the requested access (read or write). </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.UnsupportedByteStreamType\"/></strong></dt> </dl> </td><td> <p> Unsupported byte stream type. </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>The <em>dwFlags</em> parameter must contain the <strong><see cref=\"F:SharpDX.MediaFoundation.SourceResolverFlags.MediaSource\"/></strong> flag or the <strong><see cref=\"F:SharpDX.MediaFoundation.SourceResolverFlags.ByteStream\"/></strong> flag. If the <strong><see cref=\"F:SharpDX.MediaFoundation.SourceResolverFlags.MediaSource\"/></strong> flag is set, the scheme handler might create the media source directly from the URL, or it might create a byte stream. The type of object is returned in the <em>pObjectType</em> parameter of the <strong><see cref=\"M:SharpDX.MediaFoundation.SchemeHandler.EndCreateObject(SharpDX.MediaFoundation.AsyncResult,SharpDX.MediaFoundation.ObjectType@,SharpDX.ComObject@)\"/></strong> method. If the scheme handler returns a byte stream, the source resolver will pass the byte stream to a byte-stream handler, which will create the media source from the byte stream.</p><p>If the <strong><see cref=\"F:SharpDX.MediaFoundation.SourceResolverFlags.ByteStream\"/></strong> flag is set, the scheme handler will attempt to create a byte stream from the URL. However, if the scheme handler is designed to create a media source directly, rather than a byte stream, the method will fail.</p><p>The following table summarizes the behavior of these two flags when passed to this method:</p><table> <tr><th>Flag</th><th>Object created</th></tr> <tr><td><strong><see cref=\"F:SharpDX.MediaFoundation.SourceResolverFlags.MediaSource\"/></strong></td><td>Media source or byte stream</td></tr> <tr><td><strong><see cref=\"F:SharpDX.MediaFoundation.SourceResolverFlags.ByteStream\"/></strong></td><td>Byte stream</td></tr> </table><p>?</p><p>The <strong><see cref=\"F:SharpDX.MediaFoundation.SourceResolverFlags.MediaSource\"/></strong> and <strong><see cref=\"F:SharpDX.MediaFoundation.SourceResolverFlags.ByteStream\"/></strong> flags can be combined, although in this case it is redundant.</p><p>When the operation completes, the scheme handler calls the <strong><see cref=\"M:SharpDX.MediaFoundation.AsyncCallback.Invoke(SharpDX.MediaFoundation.AsyncResult)\"/></strong> method. The Invoke method should call <strong><see cref=\"M:SharpDX.MediaFoundation.SchemeHandler.EndCreateObject(SharpDX.MediaFoundation.AsyncResult,SharpDX.MediaFoundation.ObjectType@,SharpDX.ComObject@)\"/></strong> to get a reference to the created object.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSchemeHandler::BeginCreateObject']/*\"/>\t\n            <msdn-id>bb970433</msdn-id>\t\n            <unmanaged>HRESULT IMFSchemeHandler::BeginCreateObject([In] const wchar_t* pwszURL,[In] unsigned int dwFlags,[In] IPropertyStore* pProps,[Out, Optional] IUnknown** ppIUnknownCancelCookie,[In] IMFAsyncCallback* pCallback,[In] IUnknown* punkState)</unmanaged>\t\n            <unmanaged-short>IMFSchemeHandler::BeginCreateObject</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SchemeHandler.EndCreateObject(SharpDX.MediaFoundation.AsyncResult,SharpDX.MediaFoundation.ObjectType@,SharpDX.ComObject@)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"resultRef\">No documentation.</param>\t\n            <param name=\"objectTypeRef\">No documentation.</param>\t\n            <param name=\"objectOut\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSchemeHandler::EndCreateObject']/*\"/>\t\n            <unmanaged>HRESULT IMFSchemeHandler::EndCreateObject([In] IMFAsyncResult* pResult,[Out] MF_OBJECT_TYPE* pObjectType,[Out] IUnknown** ppObject)</unmanaged>\t\n            <unmanaged-short>IMFSchemeHandler::EndCreateObject</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SchemeHandler.CancelObjectCreation(SharpDX.ComObject)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Cancels the current request to create an object from a URL.</p>\t\n            </summary>\t\n            <param name=\"iUnknownCancelCookieRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interface that was returned in the <em>ppIUnknownCancelCookie</em> parameter of the <strong><see cref=\"M:SharpDX.MediaFoundation.SchemeHandler.BeginCreateObject(System.String,System.Int32,SharpDX.ComObject,SharpDX.ComObject@,SharpDX.MediaFoundation.AsyncCallback,SharpDX.ComObject)\"/></strong> method.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>You can use this method to cancel a previous call to <strong>BeginCreateObject</strong>. Because that method is asynchronous, however, it might be completed before the operation can be canceled. Therefore, your callback might still be invoked after you call this method.</p><p>The operation cannot be canceled if <strong>BeginCreateObject</strong> returns <strong><c>null</c></strong> in the <em>ppIUnknownCancelCookie</em> parameter.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSchemeHandler::CancelObjectCreation']/*\"/>\t\n            <msdn-id>bb970419</msdn-id>\t\n            <unmanaged>HRESULT IMFSchemeHandler::CancelObjectCreation([In] IUnknown* pIUnknownCancelCookie)</unmanaged>\t\n            <unmanaged-short>IMFSchemeHandler::CancelObjectCreation</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.SimpleAudioVolume\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Controls the master volume level of the audio session associated with the streaming audio renderer (SAR) and the audio capture source.</p><p>The SAR and the audio capture source expose this interface as a service. To get a reference to the interface, call <strong><see cref=\"M:SharpDX.MediaFoundation.ServiceProvider.GetService(System.Guid,System.Guid,System.IntPtr@)\"/></strong>. For the SAR, use the service identifier MR_POLICY_VOLUME_SERVICE. For the audio capture source, use the service identifier MR_CAPTURE_POLICY_VOLUME_SERVICE.  You can call <strong>GetService</strong> directly on the SAR or the audio capture source, or call it on the Media Session.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>To control the volume levels of individual channels, use the <strong><see cref=\"T:SharpDX.MediaFoundation.AudioStreamVolume\"/></strong> interface. The <strong><see cref=\"T:SharpDX.MediaFoundation.AudioStreamVolume\"/></strong> interface is supported by the SAR only.</p><p>Volume is expressed as an attenuation level, where 0.0 indicates silence and 1.0 indicates full volume (no attenuation). For each channel, the attenuation level is the product of:</p><ul> <li> <p>The master volume level of the audio session.</p> </li> <li> <p>The volume level of the channel.</p> </li> </ul><p>For example, if the master volume is 0.8 and the channel volume is 0.5, the attenuaton for that channel is 0.8 ? 0.5 = 0.4. Volume levels can exceed 1.0 (positive gain), but the audio engine clips any audio samples that exceed zero decibels. To change the volume level of individual channels, use the <strong><see cref=\"T:SharpDX.MediaFoundation.AudioStreamVolume\"/></strong> interface.</p><p>Use the following formula to convert the volume level to the decibel (dB) scale:</p><p> Attenuation (dB) = 20 * log10(<em>Level</em>) </p><p>For example, a volume level of 0.50 represents 6.02 dB of attenuation.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSimpleAudioVolume']/*\"/>\t\n            <msdn-id>ms693496</msdn-id>\t\n            <unmanaged>IMFSimpleAudioVolume</unmanaged>\t\n            <unmanaged-short>IMFSimpleAudioVolume</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SimpleAudioVolume.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.SimpleAudioVolume\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SimpleAudioVolume.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.SimpleAudioVolume\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.SimpleAudioVolume\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SimpleAudioVolume.SetMasterVolume(System.Single)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Sets the master volume level.</p>\t\n            </summary>\t\n            <param name=\"fLevel\"><dd> <p>Volume level. Volume is expressed as an attenuation level, where 0.0 indicates silence and 1.0 indicates full volume (no attenuation).</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.NotInitializeD\"/></strong></dt> </dl> </td><td> <p>The audio renderer is not initialized.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.StreamsInkRemoved\"/></strong></dt> </dl> </td><td> <p>The audio renderer was removed from the pipeline.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>Events outside of the application can change the master volume level. For example, the user can change the volume from the system volume-control program (SndVol). If an external event changes the master volume, the audio renderer sends an <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.AudioSessionVolumeChanged\"/> event, which the Media Session forwards to the application.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSimpleAudioVolume::SetMasterVolume']/*\"/>\t\n            <msdn-id>bb970391</msdn-id>\t\n            <unmanaged>HRESULT IMFSimpleAudioVolume::SetMasterVolume([In] float fLevel)</unmanaged>\t\n            <unmanaged-short>IMFSimpleAudioVolume::SetMasterVolume</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SimpleAudioVolume.GetMasterVolume(System.Single@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the master volume level.</p>\t\n            </summary>\t\n            <param name=\"fLevelRef\"><dd> <p>Receives the volume level. Volume is expressed as an attenuation level, where 0.0 indicates silence and 1.0 indicates full volume (no attenuation).</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.NotInitializeD\"/></strong></dt> </dl> </td><td> <p>The audio renderer is not initialized.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.StreamsInkRemoved\"/></strong></dt> </dl> </td><td> <p>The audio renderer was removed from the pipeline.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>If an external event changes the master volume, the audio renderer sends an <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.AudioSessionVolumeChanged\"/> event, which the Media Session forwards to the application.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSimpleAudioVolume::GetMasterVolume']/*\"/>\t\n            <msdn-id>bb970319</msdn-id>\t\n            <unmanaged>HRESULT IMFSimpleAudioVolume::GetMasterVolume([Out] float* pfLevel)</unmanaged>\t\n            <unmanaged-short>IMFSimpleAudioVolume::GetMasterVolume</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SimpleAudioVolume.SetMute(SharpDX.Bool)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Mutes or unmutes the audio.</p>\t\n            </summary>\t\n            <param name=\"bMute\"><dd> <p>Specify <strong>TRUE</strong> to mute the audio, or <strong><see cref=\"F:SharpDX.Result.False\"/></strong> to unmute the audio.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.NotInitializeD\"/></strong></dt> </dl> </td><td> <p>The audio renderer is not initialized.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.StreamsInkRemoved\"/></strong></dt> </dl> </td><td> <p>The audio renderer was removed from the pipeline.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>This method does not change the volume level returned by the <strong><see cref=\"M:SharpDX.MediaFoundation.SimpleAudioVolume.GetMasterVolume(System.Single@)\"/></strong> function.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSimpleAudioVolume::SetMute']/*\"/>\t\n            <msdn-id>bb970531</msdn-id>\t\n            <unmanaged>HRESULT IMFSimpleAudioVolume::SetMute([In] const BOOL bMute)</unmanaged>\t\n            <unmanaged-short>IMFSimpleAudioVolume::SetMute</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SimpleAudioVolume.GetMute(SharpDX.Bool@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Queries whether the audio is muted.</p>\t\n            </summary>\t\n            <param name=\"bMuteRef\"><dd> <p>Receives a Boolean value. If <strong>TRUE</strong>, the audio is muted; otherwise, the audio is not muted.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.NotInitializeD\"/></strong></dt> </dl> </td><td> <p>The audio renderer is not initialized.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.StreamsInkRemoved\"/></strong></dt> </dl> </td><td> <p>The audio renderer was removed from the pipeline.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>Calling <strong><see cref=\"M:SharpDX.MediaFoundation.SimpleAudioVolume.SetMasterVolume(System.Single)\"/></strong> to set the volume does not change whether the audio is muted.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSimpleAudioVolume::GetMute']/*\"/>\t\n            <msdn-id>bb970332</msdn-id>\t\n            <unmanaged>HRESULT IMFSimpleAudioVolume::GetMute([Out] BOOL* pbMute)</unmanaged>\t\n            <unmanaged-short>IMFSimpleAudioVolume::GetMute</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.SimpleAudioVolume.MasterVolume\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the master volume level.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>If an external event changes the master volume, the audio renderer sends an <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.AudioSessionVolumeChanged\"/> event, which the Media Session forwards to the application.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSimpleAudioVolume::GetMasterVolume']/*\"/>\t\n            <msdn-id>bb970319</msdn-id>\t\n            <unmanaged>GetMasterVolume / SetMasterVolume</unmanaged>\t\n            <unmanaged-short>GetMasterVolume</unmanaged-short>\t\n            <unmanaged>HRESULT IMFSimpleAudioVolume::GetMasterVolume([Out] float* pfLevel)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.SimpleAudioVolume.Mute\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Queries whether the audio is muted.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Calling <strong><see cref=\"M:SharpDX.MediaFoundation.SimpleAudioVolume.SetMasterVolume(System.Single)\"/></strong> to set the volume does not change whether the audio is muted.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSimpleAudioVolume::GetMute']/*\"/>\t\n            <msdn-id>bb970332</msdn-id>\t\n            <unmanaged>GetMute / SetMute</unmanaged>\t\n            <unmanaged-short>GetMute</unmanaged-short>\t\n            <unmanaged>HRESULT IMFSimpleAudioVolume::GetMute([Out] BOOL* pbMute)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.SinkWriter\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Implemented by the Microsoft Media Foundation sink writer object.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>To create the sink writer, call one of the following functions:</p><ul> <li> <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateSinkWriterFromMediaSink(SharpDX.MediaFoundation.MediaSink,SharpDX.MediaFoundation.MediaAttributes,SharpDX.MediaFoundation.SinkWriter@)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateSinkWriterFromURL(System.String,System.IntPtr,SharpDX.MediaFoundation.MediaAttributes,SharpDX.MediaFoundation.SinkWriter@)\"/></strong> </li> </ul><p>Alternatively, use the <strong><see cref=\"T:SharpDX.MediaFoundation.ReadWriteClassFactory\"/></strong> interface.</p><p>This interface is available on Windows?Vista if Platform Update Supplement for Windows?Vista is installed.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSinkWriter']/*\"/>\t\n            <msdn-id>dd374642</msdn-id>\t\n            <unmanaged>IMFSinkWriter</unmanaged>\t\n            <unmanaged-short>IMFSinkWriter</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SinkWriter.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.SinkWriter\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SinkWriter.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.SinkWriter\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.SinkWriter\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SinkWriter.AddStream(SharpDX.MediaFoundation.MediaType,System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Adds a stream to the sink writer.</p>\t\n            </summary>\t\n            <param name=\"targetMediaTypeRef\"><dd> <p>A reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaType\"/></strong> interface of a media type. This media type specifies the format of the samples that will be written to the file. It does not need to match the input format. To set the input format, call <strong><see cref=\"M:SharpDX.MediaFoundation.SinkWriter.SetInputMediaType(System.Int32,SharpDX.MediaFoundation.MediaType,SharpDX.MediaFoundation.MediaAttributes)\"/></strong>.</p> </dd></param>\t\n            <param name=\"dwStreamIndexRef\"><dd> <p>Receives the zero-based index of the new stream.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>This interface is available on Windows?Vista if Platform Update Supplement for Windows?Vista is installed.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSinkWriter::AddStream']/*\"/>\t\n            <msdn-id>dd374646</msdn-id>\t\n            <unmanaged>HRESULT IMFSinkWriter::AddStream([In] IMFMediaType* pTargetMediaType,[Out] unsigned int* pdwStreamIndex)</unmanaged>\t\n            <unmanaged-short>IMFSinkWriter::AddStream</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SinkWriter.SetInputMediaType(System.Int32,SharpDX.MediaFoundation.MediaType,SharpDX.MediaFoundation.MediaAttributes)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Sets the input format for a stream on the sink writer.</p>\t\n            </summary>\t\n            <param name=\"dwStreamIndex\"><dd> <p>The zero-based index of the stream. The index is received by the <em>pdwStreamIndex</em> parameter of the <strong><see cref=\"M:SharpDX.MediaFoundation.SinkWriter.AddStream(SharpDX.MediaFoundation.MediaType,System.Int32@)\"/></strong> method.</p> </dd></param>\t\n            <param name=\"inputMediaTypeRef\"><dd> <p>A reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaType\"/></strong> interface of a media type. The media type specifies the input format.</p> </dd></param>\t\n            <param name=\"encodingParametersRef\"><dd> <p>A reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaAttributes\"/></strong> interface of an attribute store. Use the attribute store to configure the encoder. This parameter can be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidMediaType\"/></strong></strong></dt> </dl> </td><td> <p>The underlying media sink does not support the format, no conversion is possible, or a dynamic format change is not possible.</p> </td></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidStreamNumber\"/></strong></strong></dt> </dl> </td><td> <p>The <em>dwStreamIndex</em> parameter is invalid.</p> </td></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.TopoCodecNotFound\"/></strong></strong></dt> </dl> </td><td> <p>Could not find an encoder for the encoded format.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>The input format does not have to match the target format that is written to the media sink. If the formats do not match, the method attempts to load an encoder that can encode from the input format to the target format.</p><p>After streaming begins?that is, after the  first call to <strong><see cref=\"M:SharpDX.MediaFoundation.SinkWriter.WriteSample(System.Int32,SharpDX.MediaFoundation.Sample)\"/></strong>?you can call this method at any time to change the input format.  However, the underlying encoder and media sink must support dynamic format changes.</p><p>This interface is available on Windows?Vista if Platform Update Supplement for Windows?Vista is installed.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSinkWriter::SetInputMediaType']/*\"/>\t\n            <msdn-id>dd374653</msdn-id>\t\n            <unmanaged>HRESULT IMFSinkWriter::SetInputMediaType([In] unsigned int dwStreamIndex,[In] IMFMediaType* pInputMediaType,[In, Optional] IMFAttributes* pEncodingParameters)</unmanaged>\t\n            <unmanaged-short>IMFSinkWriter::SetInputMediaType</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SinkWriter.BeginWriting\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Initializes the sink writer for writing.</p>\t\n            </summary>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidRequest\"/></strong></strong></dt> </dl> </td><td> <p>The request is invalid.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>Call this method after you configure the input streams and before you send any data to the sink writer. </p><p>You must call <strong>BeginWriting</strong> before calling any of the following methods:</p><ul> <li> <strong><see cref=\"M:SharpDX.MediaFoundation.SinkWriter.Finalize\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.MediaFoundation.SinkWriter.Flush(System.Int32)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.MediaFoundation.SinkWriter.NotifyEndOfSegment(System.Int32)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.MediaFoundation.SinkWriter.PlaceMarker(System.Int32,System.IntPtr)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.MediaFoundation.SinkWriter.SendStreamTick(System.Int32,System.Int64)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.MediaFoundation.SinkWriter.WriteSample(System.Int32,SharpDX.MediaFoundation.Sample)\"/></strong> </li> </ul><p>The underlying media sink must have at least one input stream. Otherwise, <strong>BeginWriting</strong> returns <strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidRequest\"/></strong>. To add input streams, call the <strong><see cref=\"M:SharpDX.MediaFoundation.SinkWriter.AddStream(SharpDX.MediaFoundation.MediaType,System.Int32@)\"/></strong> method.</p><p>If <strong>BeginWriting</strong> succeeds, any further calls to <strong>BeginWriting</strong> return <strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidRequest\"/></strong>.</p><p>This interface is available on Windows?Vista if Platform Update Supplement for Windows?Vista is installed.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSinkWriter::BeginWriting']/*\"/>\t\n            <msdn-id>dd374647</msdn-id>\t\n            <unmanaged>HRESULT IMFSinkWriter::BeginWriting()</unmanaged>\t\n            <unmanaged-short>IMFSinkWriter::BeginWriting</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SinkWriter.WriteSample(System.Int32,SharpDX.MediaFoundation.Sample)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Delivers a sample to the sink writer.</p>\t\n            </summary>\t\n            <param name=\"dwStreamIndex\"><dd> <p>The zero-based index of the stream for this sample.</p> </dd></param>\t\n            <param name=\"sampleRef\"><dd> <p>A reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.Sample\"/></strong> interface of the sample.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidRequest\"/></strong></strong></dt> </dl> </td><td> <p>The request is invalid.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>You must call <strong><see cref=\"M:SharpDX.MediaFoundation.SinkWriter.BeginWriting\"/></strong> before calling this method. Otherwise, the method returns <strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidRequest\"/></strong>.</p><p>By default, the sink writer limits the rate of incoming data by blocking the calling thread inside the <strong>WriteSample</strong> method. This prevents the application from delivering samples too quickly. To disable this behavior, set the <see cref=\"F:SharpDX.MediaFoundation.SinkWriterAttributeKeys.DisableThrottling\"/> attribute when you create the sink writer.</p><p>This interface is available on Windows?Vista if Platform Update Supplement for Windows?Vista is installed.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSinkWriter::WriteSample']/*\"/>\t\n            <msdn-id>dd374654</msdn-id>\t\n            <unmanaged>HRESULT IMFSinkWriter::WriteSample([In] unsigned int dwStreamIndex,[In] IMFSample* pSample)</unmanaged>\t\n            <unmanaged-short>IMFSinkWriter::WriteSample</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SinkWriter.SendStreamTick(System.Int32,System.Int64)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Indicates a gap in an input stream.</p>\t\n            </summary>\t\n            <param name=\"dwStreamIndex\"><dd> <p>The zero-based index of the stream.</p> </dd></param>\t\n            <param name=\"llTimestamp\"><dd> <p>The position in the stream where the gap in the data occurs. The value is given in 100-nanosecond units, relative to the start of the stream.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>For video, call this method once for each missing frame. For audio, call this method at least once per second during a gap in the audio. Set the <strong><see cref=\"F:SharpDX.MediaFoundation.SampleAttributeKeys.Discontinuity\"/></strong> attribute on the first media sample after the gap.</p><p>Internally, this method calls <strong><see cref=\"M:SharpDX.MediaFoundation.StreamSink.PlaceMarker(SharpDX.MediaFoundation.StreamsInkMarkerType,SharpDX.Win32.Variant,SharpDX.Win32.Variant)\"/></strong> on the media sink.</p><p>This interface is available on Windows?Vista if Platform Update Supplement for Windows?Vista is installed.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSinkWriter::SendStreamTick']/*\"/>\t\n            <msdn-id>dd374652</msdn-id>\t\n            <unmanaged>HRESULT IMFSinkWriter::SendStreamTick([In] unsigned int dwStreamIndex,[In] longlong llTimestamp)</unmanaged>\t\n            <unmanaged-short>IMFSinkWriter::SendStreamTick</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SinkWriter.PlaceMarker(System.Int32,System.IntPtr)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Places a marker in the specified stream.</p>\t\n            </summary>\t\n            <param name=\"dwStreamIndex\"><dd> <p>The zero-based index of the stream.</p> </dd></param>\t\n            <param name=\"vContextRef\"><dd> <p>Pointer to an application-defined value. The value of this parameter is returned to the caller in the <em>pvContext</em> parameter of the caller's <strong><see cref=\"M:SharpDX.MediaFoundation.SinkWriterCallback.OnMarker(System.Int32,System.IntPtr)\"/></strong> callback method. The application is responsible for any memory allocation associated with this data. This parameter can be <strong><c>null</c></strong>. </p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidRequest\"/></strong></strong></dt> </dl> </td><td> <p>The request is invalid.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>To use this method, you must provide an asynchronous callback when you create the sink writer. Otherwise, the method returns <strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidRequest\"/></strong>. For more information, see <see cref=\"F:SharpDX.MediaFoundation.SinkWriterAttributeKeys.AsyncCallback\"/>.</p><p>Markers provide a way to be notified when the media sink consumes all of the samples in a stream up to a certain point. The media sink does not process the marker until it has processed all of the samples that came before the marker. When the media sink processes the marker, the sink writer calls the application's <strong>OnMarker</strong> method. When the callback is invoked, you know that the sink has consumed all of the previous samples for that stream.</p><p>For example, to change the format midstream, call <strong>PlaceMarker</strong> at the point where the format changes. When <strong>OnMarker</strong> is called, it is safe to call <strong><see cref=\"M:SharpDX.MediaFoundation.SinkWriter.SetInputMediaType(System.Int32,SharpDX.MediaFoundation.MediaType,SharpDX.MediaFoundation.MediaAttributes)\"/></strong> to change the input type (assuming that the media sink supports dynamic format changes).</p><p>Internally, this method calls <strong><see cref=\"M:SharpDX.MediaFoundation.StreamSink.PlaceMarker(SharpDX.MediaFoundation.StreamsInkMarkerType,SharpDX.Win32.Variant,SharpDX.Win32.Variant)\"/></strong> on the media sink.</p><p> </p><p><strong>Note</strong>??The <em>pvContext</em> parameter of the <strong><see cref=\"M:SharpDX.MediaFoundation.SinkWriter.PlaceMarker(System.Int32,System.IntPtr)\"/></strong> method is not passed to the <em>pvarContextValue</em> parameter of the <strong><see cref=\"M:SharpDX.MediaFoundation.StreamSink.PlaceMarker(SharpDX.MediaFoundation.StreamsInkMarkerType,SharpDX.Win32.Variant,SharpDX.Win32.Variant)\"/></strong> method. These two parameters are not directly related.</p><p>This interface is available on Windows?Vista if Platform Update Supplement for Windows?Vista is installed.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSinkWriter::PlaceMarker']/*\"/>\t\n            <msdn-id>dd374651</msdn-id>\t\n            <unmanaged>HRESULT IMFSinkWriter::PlaceMarker([In] unsigned int dwStreamIndex,[In] void* pvContext)</unmanaged>\t\n            <unmanaged-short>IMFSinkWriter::PlaceMarker</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SinkWriter.NotifyEndOfSegment(System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Notifies the media sink that a stream has reached the end of a segment.</p>\t\n            </summary>\t\n            <param name=\"dwStreamIndex\"><dd> <p>The zero-based index of a stream, or <strong><see cref=\"F:SharpDX.MediaFoundation.SinkWriterIndex.AllStreams\"/></strong> to signal that all streams have reached the end of a segment.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidRequest\"/></strong></strong></dt> </dl> </td><td> <p>The request is invalid.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>You must call <strong><see cref=\"M:SharpDX.MediaFoundation.SinkWriter.BeginWriting\"/></strong> before calling this method. Otherwise, the method returns <strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidRequest\"/></strong>.</p><p>This method sends an <strong><see cref=\"F:SharpDX.MediaFoundation.StreamsInkMarkerType.Endofsegment\"/></strong> marker to the media sink for the specified streams. For more information, see <strong><see cref=\"M:SharpDX.MediaFoundation.StreamSink.PlaceMarker(SharpDX.MediaFoundation.StreamsInkMarkerType,SharpDX.Win32.Variant,SharpDX.Win32.Variant)\"/></strong>.</p><p>This interface is available on Windows?Vista if Platform Update Supplement for Windows?Vista is installed.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSinkWriter::NotifyEndOfSegment']/*\"/>\t\n            <msdn-id>dd743366</msdn-id>\t\n            <unmanaged>HRESULT IMFSinkWriter::NotifyEndOfSegment([In] unsigned int dwStreamIndex)</unmanaged>\t\n            <unmanaged-short>IMFSinkWriter::NotifyEndOfSegment</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SinkWriter.Flush(System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Flushes one or more streams.</p>\t\n            </summary>\t\n            <param name=\"dwStreamIndex\"><dd> <p>The zero-based index of the stream to flush, or <strong><see cref=\"F:SharpDX.MediaFoundation.SinkWriterIndex.AllStreams\"/></strong> to flush all of the streams.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidRequest\"/></strong></strong></dt> </dl> </td><td> <p>The request is invalid.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>You must call <strong><see cref=\"M:SharpDX.MediaFoundation.SinkWriter.BeginWriting\"/></strong> before calling this method. Otherwise, the method returns <strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidRequest\"/></strong>.</p><p>For each stream that is flushed, the sink writer drops all pending samples, flushes the encoder, and sends an <strong><see cref=\"F:SharpDX.MediaFoundation.StreamsInkMarkerType.Endofsegment\"/></strong> marker to the media sink.</p><p>This interface is available on Windows?Vista if Platform Update Supplement for Windows?Vista is installed.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSinkWriter::Flush']/*\"/>\t\n            <msdn-id>dd743365</msdn-id>\t\n            <unmanaged>HRESULT IMFSinkWriter::Flush([In] unsigned int dwStreamIndex)</unmanaged>\t\n            <unmanaged-short>IMFSinkWriter::Flush</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SinkWriter.Finalize\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Completes all writing operations on the sink writer.</p>\t\n            </summary>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>Call this method after you send all of the input samples to the sink writer. The method performs any operations needed to create the final output from the media sink.</p><p>If you provide a callback interface when you create the sink writer, this method completes asynchronously. When the operation completes, the <strong><see cref=\"M:SharpDX.MediaFoundation.SinkWriterCallback.OnFinalize(SharpDX.Result)\"/></strong> method of your callback is called. For more information, see <see cref=\"F:SharpDX.MediaFoundation.SinkWriterAttributeKeys.AsyncCallback\"/>.  Otherwise, if you do not provide a callback, the <strong>Finalize</strong> method blocks until the operation completes.</p><p>Internally, this method calls <strong><see cref=\"M:SharpDX.MediaFoundation.StreamSink.PlaceMarker(SharpDX.MediaFoundation.StreamsInkMarkerType,SharpDX.Win32.Variant,SharpDX.Win32.Variant)\"/></strong> to place end-of-segment markers for each stream on the media sink. It also calls <strong><see cref=\"M:SharpDX.MediaFoundation.FinalizableMediaSink.BeginFinalize(SharpDX.MediaFoundation.AsyncCallback,SharpDX.ComObject)\"/></strong> and <strong>EndFinalize</strong> if the media sink supports the <strong><see cref=\"T:SharpDX.MediaFoundation.FinalizableMediaSink\"/></strong> interface.</p><p>After this method is called, the following methods will fail:</p><ul> <li> <strong><see cref=\"M:SharpDX.MediaFoundation.SinkWriter.PlaceMarker(System.Int32,System.IntPtr)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.MediaFoundation.SinkWriter.SendStreamTick(System.Int32,System.Int64)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.MediaFoundation.SinkWriter.WriteSample(System.Int32,SharpDX.MediaFoundation.Sample)\"/></strong> </li> </ul><p>If you do not call <strong>Finalize</strong>, the output from the media sink might be incomplete or invalid. For example, required file headers might be missing from the output file.</p><p>This interface is available on Windows?Vista if Platform Update Supplement for Windows?Vista is installed.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSinkWriter::Finalize']/*\"/>\t\n            <msdn-id>dd374648</msdn-id>\t\n            <unmanaged>HRESULT IMFSinkWriter::Finalize()</unmanaged>\t\n            <unmanaged-short>IMFSinkWriter::Finalize</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SinkWriter.GetServiceForStream(System.Int32,System.Guid,System.Guid,System.IntPtr@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Queries the underlying media sink or encoder for an interface.</p>\t\n            </summary>\t\n            <param name=\"dwStreamIndex\"><dd> <p>The zero-based index of a stream to query, or <strong><see cref=\"F:SharpDX.MediaFoundation.SinkWriterIndex.MediaSink\"/></strong> to query the media sink itself.</p> </dd></param>\t\n            <param name=\"guidService\"><dd> <p>A service identifier <see cref=\"T:System.Guid\"/>, or <strong>GUID_NULL</strong>.  If the value is <strong>GUID_NULL</strong>, the method calls <strong>QueryInterface</strong> to get the requested interface. Otherwise, the method calls <strong><see cref=\"M:SharpDX.MediaFoundation.ServiceProvider.GetService(System.Guid,System.Guid,System.IntPtr@)\"/></strong>. For a list of service identifiers, see Service Interfaces.</p> </dd></param>\t\n            <param name=\"riid\"><dd> <p>The interface identifier (IID) of the interface being requested. </p> </dd></param>\t\n            <param name=\"vObjectOut\"><dd> <p>Receives a reference to the requested interface. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>If the <em>dwStreamIndex</em> parameter equals <strong><see cref=\"F:SharpDX.MediaFoundation.SinkWriterIndex.MediaSink\"/></strong>, the method attempts to get the interface from the media sink. Otherwise, it attempts to get the interface from the encoder for the stream at the specified index. If that fails, or if no encoder is present, the method attempts to get the interface from the stream on the media sink.</p><p>This interface is available on Windows?Vista if Platform Update Supplement for Windows?Vista is installed.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSinkWriter::GetServiceForStream']/*\"/>\t\n            <msdn-id>dd374649</msdn-id>\t\n            <unmanaged>HRESULT IMFSinkWriter::GetServiceForStream([In] unsigned int dwStreamIndex,[In] const GUID&amp; guidService,[In] const GUID&amp; riid,[Out] void** ppvObject)</unmanaged>\t\n            <unmanaged-short>IMFSinkWriter::GetServiceForStream</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SinkWriter.GetStatistics(System.Int32,SharpDX.MediaFoundation.SinkWriterStatistics@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Gets statistics about the performance of the sink writer.</p>\t\n            </summary>\t\n            <param name=\"dwStreamIndex\"><dd> <p>The zero-based index of a stream to query, or <strong><see cref=\"F:SharpDX.MediaFoundation.SinkWriterIndex.AllStreams\"/> </strong> to query the media sink itself.</p> </dd></param>\t\n            <param name=\"statsRef\"><dd> <p>A reference to an <strong><see cref=\"T:SharpDX.MediaFoundation.SinkWriterStatistics\"/></strong> structure. Before calling the method, set the <strong>cb</strong> member to the size of the structure in bytes. The method fills the structure with statistics from the sink writer.</p> </dd></param>\t\n            <returns><p>This method can return one of these values.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>Success.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidStreamNumber\"/></strong></dt> </dl> </td><td> <p>Invalid stream number.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>This interface is available on Windows?Vista if Platform Update Supplement for Windows?Vista is installed.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSinkWriter::GetStatistics']/*\"/>\t\n            <msdn-id>dd374650</msdn-id>\t\n            <unmanaged>HRESULT IMFSinkWriter::GetStatistics([In] unsigned int dwStreamIndex,[Out] MF_SINK_WRITER_STATISTICS* pStats)</unmanaged>\t\n            <unmanaged-short>IMFSinkWriter::GetStatistics</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.SinkWriterCallback\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Callback interface for the Microsoft Media Foundation sink writer. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Set the callback reference by setting the <see cref=\"F:SharpDX.MediaFoundation.SinkWriterAttributeKeys.AsyncCallback\"/> attribute when you first create the sink writer. </p><p>The callback methods can be called from any thread, so an object that implements this interface must be thread-safe.</p><p>This interface is available on Windows?Vista if Platform Update Supplement for Windows?Vista is installed.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSinkWriterCallback']/*\"/>\t\n            <msdn-id>dd374643</msdn-id>\t\n            <unmanaged>IMFSinkWriterCallback</unmanaged>\t\n            <unmanaged-short>IMFSinkWriterCallback</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SinkWriterCallback.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.SinkWriterCallback\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SinkWriterCallback.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.SinkWriterCallback\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.SinkWriterCallback\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SinkWriterCallback.OnFinalize(SharpDX.Result)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Called when the <strong><see cref=\"M:SharpDX.MediaFoundation.SinkWriter.Finalize\"/></strong> method completes.</p>\t\n            </summary>\t\n            <param name=\"hrStatus\">No documentation.</param>\t\n            <returns><p>Returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> value. Currently, the sink writer ignores the return value.</p></returns>\t\n            <remarks>\t\n            <p>This interface is available on Windows?Vista if Platform Update Supplement for Windows?Vista is installed.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSinkWriterCallback::OnFinalize']/*\"/>\t\n            <msdn-id>dd374644</msdn-id>\t\n            <unmanaged>HRESULT IMFSinkWriterCallback::OnFinalize([In] HRESULT hrStatus)</unmanaged>\t\n            <unmanaged-short>IMFSinkWriterCallback::OnFinalize</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SinkWriterCallback.OnMarker(System.Int32,System.IntPtr)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Called when the <strong><see cref=\"M:SharpDX.MediaFoundation.SinkWriter.PlaceMarker(System.Int32,System.IntPtr)\"/></strong> method completes.</p>\t\n            </summary>\t\n            <param name=\"dwStreamIndex\">No documentation.</param>\t\n            <param name=\"vContextRef\">No documentation.</param>\t\n            <returns><p>Returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> value. Currently, the sink writer ignores the return value.</p></returns>\t\n            <remarks>\t\n            <p>This interface is available on Windows?Vista if Platform Update Supplement for Windows?Vista is installed.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSinkWriterCallback::OnMarker']/*\"/>\t\n            <msdn-id>dd374645</msdn-id>\t\n            <unmanaged>HRESULT IMFSinkWriterCallback::OnMarker([In] unsigned int dwStreamIndex,[In] void* pvContext)</unmanaged>\t\n            <unmanaged-short>IMFSinkWriterCallback::OnMarker</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.SourceOpenMonitor\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Called by the network source when the open operation begins or ends.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The networks source calls this method with the following event types.</p><ul> <li> <p> <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.ConnectStart\"/> </p> </li> <li> <p> <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.ConnectEnd\"/> </p> </li> </ul><p>For more information, see How to Get Events from the Network Source.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSourceOpenMonitor']/*\"/>\t\n            <msdn-id>ms694870</msdn-id>\t\n            <unmanaged>IMFSourceOpenMonitor</unmanaged>\t\n            <unmanaged-short>IMFSourceOpenMonitor</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SourceOpenMonitor.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.SourceOpenMonitor\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SourceOpenMonitor.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.SourceOpenMonitor\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.SourceOpenMonitor\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SourceOpenMonitor.OnSourceEvent(SharpDX.MediaFoundation.MediaEvent)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Called by the network source when the open operation begins or ends.</p>\t\n            </summary>\t\n            <param name=\"eventRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaEvent\"/></strong> interface.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>The networks source calls this method with the following event types.</p><ul> <li> <p> <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.ConnectStart\"/> </p> </li> <li> <p> <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.ConnectEnd\"/> </p> </li> </ul><p>For more information, see How to Get Events from the Network Source.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSourceOpenMonitor::OnSourceEvent']/*\"/>\t\n            <msdn-id>ms694870</msdn-id>\t\n            <unmanaged>HRESULT IMFSourceOpenMonitor::OnSourceEvent([In, Optional] IMFMediaEvent* pEvent)</unmanaged>\t\n            <unmanaged-short>IMFSourceOpenMonitor::OnSourceEvent</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.SourceReader\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Implemented by the Microsoft Media Foundation source reader object.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>To create the source reader, call one of the following functions:</p><ul> <li> <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateSourceReaderFromByteStream(System.IntPtr,SharpDX.MediaFoundation.MediaAttributes,SharpDX.MediaFoundation.SourceReader)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateSourceReaderFromMediaSource(SharpDX.MediaFoundation.MediaSource,SharpDX.MediaFoundation.MediaAttributes,SharpDX.MediaFoundation.SourceReader)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateSourceReaderFromURL(System.String,SharpDX.MediaFoundation.MediaAttributes,SharpDX.MediaFoundation.SourceReader)\"/></strong> </li> </ul><p>Alternatively, use the <strong><see cref=\"T:SharpDX.MediaFoundation.ReadWriteClassFactory\"/></strong> interface.</p><p>This interface is available on Windows?Vista if Platform Update Supplement for Windows?Vista is installed.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSourceReader']/*\"/>\t\n            <msdn-id>dd374655</msdn-id>\t\n            <unmanaged>IMFSourceReader</unmanaged>\t\n            <unmanaged-short>IMFSourceReader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SourceReader.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.SourceReader\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SourceReader.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.SourceReader\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.SourceReader\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SourceReader.GetStreamSelection(System.Int32,SharpDX.Bool@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Queries whether a stream is selected.</p>\t\n            </summary>\t\n            <param name=\"dwStreamIndex\"><dd> <p>The stream to query. The value can be any of the following.</p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td> <dl> <dt>0?0xFFFFFFFB</dt> </dl> </td><td> <p>The zero-based index of a stream.</p> </td></tr> <tr><td><dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.SourceReaderIndex.FirstVideoStream\"/></strong></strong></dt> <dt>0xFFFFFFFC</dt> </dl> </td><td> <p>The first video stream.</p> </td></tr> <tr><td><dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.SourceReaderIndex.FirstAudioStream\"/></strong></strong></dt> <dt>0xFFFFFFFD</dt> </dl> </td><td> <p>The first audio stream.</p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <param name=\"fSelectedRef\"><dd> <p>Receives <strong>TRUE</strong> if the stream is selected and will generate data. Receives <strong><see cref=\"F:SharpDX.Result.False\"/></strong> if the stream is not selected and will not generate data.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>This interface is available on Windows?Vista if Platform Update Supplement for Windows?Vista is installed.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSourceReader::GetStreamSelection']/*\"/>\t\n            <msdn-id>dd374664</msdn-id>\t\n            <unmanaged>HRESULT IMFSourceReader::GetStreamSelection([In] unsigned int dwStreamIndex,[Out] BOOL* pfSelected)</unmanaged>\t\n            <unmanaged-short>IMFSourceReader::GetStreamSelection</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SourceReader.SetStreamSelection(System.Int32,SharpDX.Bool)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Selects or deselects one or more streams.</p>\t\n            </summary>\t\n            <param name=\"dwStreamIndex\"><dd> <p>The stream to set. The value can be any of the following.</p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td> <dl> <dt>0?0xFFFFFFFB</dt> </dl> </td><td> <p>The zero-based index of a stream.</p> </td></tr> <tr><td><dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.SourceReaderIndex.FirstVideoStream\"/></strong></strong></dt> <dt>0xFFFFFFFC</dt> </dl> </td><td> <p>The first video stream.</p> </td></tr> <tr><td><dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.SourceReaderIndex.FirstAudioStream\"/></strong></strong></dt> <dt>0xFFFFFFFD</dt> </dl> </td><td> <p>The first audio stream.</p> </td></tr> <tr><td><dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.SourceReaderIndex.AllStreams\"/></strong></strong></dt> <dt>0xFFFFFFFE</dt> </dl> </td><td> <p>All streams.</p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <param name=\"fSelected\"><dd> <p>Specify <strong>TRUE</strong> to select streams or <strong><see cref=\"F:SharpDX.Result.False\"/></strong> to deselect streams. If a stream is deselected, it will not generate data.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>There are two common uses for this method:</p><ul> <li>To change the default stream selection. Some media files contain multiple streams of the same type. For example, a file might include audio streams for multiple languages. You can use this method to change which of the streams is selected. To get information about each stream, call <strong><see cref=\"M:SharpDX.MediaFoundation.SourceReader.GetPresentationAttribute(System.Int32,System.Guid)\"/></strong> or <strong><see cref=\"M:SharpDX.MediaFoundation.SourceReader.GetNativeMediaType(System.Int32,System.Int32)\"/></strong>.</li> <li>If you will not need data from one of the streams, it is a good idea to deselect that stream. If the stream is selected, the media source might hold onto a queue of unread data, and the queue might grow indefinitely, consuming memory. </li> </ul><p>For an example of deselecting a stream, see Tutorial: Decoding Audio.</p><p>If a stream is deselected, the <strong><see cref=\"M:SharpDX.MediaFoundation.SourceReader.ReadSample(System.Int32,SharpDX.MediaFoundation.SourceReaderControlFlags,System.Int32@,SharpDX.MediaFoundation.SourceReaderFlags@,System.Int64@)\"/></strong> method returns <strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidRequest\"/></strong> for that stream. Other <strong><see cref=\"T:SharpDX.MediaFoundation.SourceReader\"/></strong> methods are valid for deselected streams.</p><p>Stream selection does not affect how the source reader loads or unloads decoders in memory. In particular, deselecting a stream does not force the source reader to unload the decoder for that stream.</p><p>This interface is available on Windows?Vista if Platform Update Supplement for Windows?Vista is installed.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSourceReader::SetStreamSelection']/*\"/>\t\n            <msdn-id>dd374669</msdn-id>\t\n            <unmanaged>HRESULT IMFSourceReader::SetStreamSelection([In] unsigned int dwStreamIndex,[In] BOOL fSelected)</unmanaged>\t\n            <unmanaged-short>IMFSourceReader::SetStreamSelection</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SourceReader.GetNativeMediaType(System.Int32,System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Gets a format that is supported natively by the media source.</p>\t\n            </summary>\t\n            <param name=\"dwStreamIndex\"><dd> <p>Specifies which stream to query. The value can be any of the following.</p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td> <dl> <dt>0?0xFFFFFFFB</dt> </dl> </td><td> <p>The zero-based index of a stream.</p> </td></tr> <tr><td><dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.SourceReaderIndex.FirstVideoStream\"/></strong></strong></dt> <dt>0xFFFFFFFC</dt> </dl> </td><td> <p>The first video stream.</p> </td></tr> <tr><td><dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.SourceReaderIndex.FirstAudioStream\"/></strong></strong></dt> <dt>0xFFFFFFFD</dt> </dl> </td><td> <p>The first audio stream.</p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <param name=\"dwMediaTypeIndex\"><dd> <p>The zero-based index of the media type to retrieve.</p> </dd></param>\t\n            <returns><dd> <p>Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaType\"/></strong> interface. The caller must release the interface.</p> </dd></returns>\t\n            <remarks>\t\n            <p>This method queries the underlying media source for its native output format. Potentially, each source stream can produce more than one output format. Use the <em>dwMediaTypeIndex</em> parameter to loop through the available formats. Generally, file sources offer just one format per stream, but capture devices might offer several formats.</p><p> The method returns a copy of the media type, so it is safe to modify the object received in the <em> ppMediaType</em> parameter.</p><p>To set  the output type for a stream, call the <strong><see cref=\"M:SharpDX.MediaFoundation.SourceReader.SetCurrentMediaType(System.Int32,System.IntPtr,SharpDX.MediaFoundation.MediaType)\"/></strong> method.</p><p>This interface is available on Windows?Vista if Platform Update Supplement for Windows?Vista is installed.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSourceReader::GetNativeMediaType']/*\"/>\t\n            <msdn-id>dd374661</msdn-id>\t\n            <unmanaged>HRESULT IMFSourceReader::GetNativeMediaType([In] unsigned int dwStreamIndex,[In] unsigned int dwMediaTypeIndex,[Out] IMFMediaType** ppMediaType)</unmanaged>\t\n            <unmanaged-short>IMFSourceReader::GetNativeMediaType</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SourceReader.GetCurrentMediaType(System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Gets the current media type for a stream.</p>\t\n            </summary>\t\n            <param name=\"dwStreamIndex\"><dd> <p>The stream to query. The value can be any of the following.</p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td> <dl> <dt>0?0xFFFFFFFB</dt> </dl> </td><td> <p>The zero-based index of a stream.</p> </td></tr> <tr><td><dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.SourceReaderIndex.FirstVideoStream\"/></strong></strong></dt> <dt>0xFFFFFFFC</dt> </dl> </td><td> <p>The first video stream.</p> </td></tr> <tr><td><dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.SourceReaderIndex.FirstAudioStream\"/></strong></strong></dt> <dt>0xFFFFFFFD</dt> </dl> </td><td> <p>The first audio stream.</p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <returns><dd> <p>Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaType\"/></strong> interface. The caller must release the interface.</p> </dd></returns>\t\n            <remarks>\t\n            <p>This interface is available on Windows?Vista if Platform Update Supplement for Windows?Vista is installed.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSourceReader::GetCurrentMediaType']/*\"/>\t\n            <msdn-id>dd374660</msdn-id>\t\n            <unmanaged>HRESULT IMFSourceReader::GetCurrentMediaType([In] unsigned int dwStreamIndex,[Out] IMFMediaType** ppMediaType)</unmanaged>\t\n            <unmanaged-short>IMFSourceReader::GetCurrentMediaType</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SourceReader.SetCurrentMediaType(System.Int32,System.IntPtr,SharpDX.MediaFoundation.MediaType)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Sets the media type for a stream.</p><p>This media type defines that format that the Source Reader produces as output. It can differ from the native format provided by the media source. See Remarks for more information.</p>\t\n            </summary>\t\n            <param name=\"dwStreamIndex\">No documentation.</param>\t\n            <param name=\"dwReservedRef\">No documentation.</param>\t\n            <param name=\"mediaTypeRef\">No documentation.</param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidMediaType\"/></strong></strong></dt> </dl> </td><td> <p>At least one decoder was found for the native stream type, but the type specified by <em>pMediaType</em> was rejected.</p> </td></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidRequest\"/></strong></strong></dt> </dl> </td><td> <p>One or more sample requests are still pending.</p> </td></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidStreamNumber\"/></strong></strong></dt> </dl> </td><td> <p>The <em>dwStreamIndex</em> parameter is invalid.</p> </td></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.TopoCodecNotFound\"/></strong></strong></dt> </dl> </td><td> <p>Could not find a decoder for the native stream type.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>For each stream, you can set the media type to any of the following:</p><ul> <li>One of the native types offered by the media source. To enumerate the native types, call <strong><see cref=\"M:SharpDX.MediaFoundation.SourceReader.GetNativeMediaType(System.Int32,System.Int32)\"/></strong>.</li> <li>If the native media type is compressed, you can specify a corresponding uncompressed format. The Source Reader will search for a decoder that can decode from the native format to the specified uncompressed format.</li> </ul><p>The source reader does not support audio resampling. If you need to resample the audio, you can use the <strong>Audio Resampler DSP</strong>.</p><p>If you set the <see cref=\"F:SharpDX.MediaFoundation.SourceReaderAttributeKeys.EnableVideoProcessing\"/> attribute to <strong>TRUE</strong> when you create the Source Reader, the Source Reader will convert YUV video to RGB-32. This conversion is not optimized for real-time video playback.</p><p>This interface is available on Windows?Vista if Platform Update Supplement for Windows?Vista is installed.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSourceReader::SetCurrentMediaType']/*\"/>\t\n            <msdn-id>dd374667</msdn-id>\t\n            <unmanaged>HRESULT IMFSourceReader::SetCurrentMediaType([In] unsigned int dwStreamIndex,[In] void* pdwReserved,[In] IMFMediaType* pMediaType)</unmanaged>\t\n            <unmanaged-short>IMFSourceReader::SetCurrentMediaType</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SourceReader.SetCurrentPosition(System.Guid,SharpDX.Win32.Variant)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Seeks to a new position in the media source.</p>\t\n            </summary>\t\n            <param name=\"guidTimeFormat\"><dd> <p>A <see cref=\"T:System.Guid\"/> that specifies the <em>time format</em>. The time format defines the units for the <em>varPosition</em> parameter. The following value is defined for all media sources:</p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td><dl> <dt><strong>GUID_NULL</strong></dt> </dl> </td><td> <p>100-nanosecond units.</p> </td></tr> </table> <p>?</p> <p>Some media sources might support additional values. </p> </dd></param>\t\n            <param name=\"varPosition\"><dd> <p>The position from which playback will be started. The units are specified by the <em>guidTimeFormat</em> parameter. If the <em>guidTimeFormat</em> parameter is <strong>GUID_NULL</strong>, set the variant type to <strong>VT_I8</strong>.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidRequest\"/></strong></strong></dt> </dl> </td><td> <p>One or more sample requests are still pending.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>The <strong>SetCurrentPosition</strong> method does not guarantee exact seeking. The accuracy of the seek depends on the media content. If the media content contains a video stream, the <strong>SetCurrentPosition</strong> method typically seeks to the nearest key frame before the desired position. The distance between key frames depends on several factors, including the encoder implementation, the video content, and the particular encoding settings used to encode the content. The distance between key frame can vary within a single video file (for example, depending on scene complexity).</p><p>After seeking, the application should call <strong><see cref=\"M:SharpDX.MediaFoundation.SourceReader.ReadSample(System.Int32,SharpDX.MediaFoundation.SourceReaderControlFlags,System.Int32@,SharpDX.MediaFoundation.SourceReaderFlags@,System.Int64@)\"/></strong> and advance to the desired position. </p><p>This interface is available on Windows?Vista if Platform Update Supplement for Windows?Vista is installed.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSourceReader::SetCurrentPosition']/*\"/>\t\n            <msdn-id>dd374668</msdn-id>\t\n            <unmanaged>HRESULT IMFSourceReader::SetCurrentPosition([In] const GUID&amp; guidTimeFormat,[In] const PROPVARIANT&amp; varPosition)</unmanaged>\t\n            <unmanaged-short>IMFSourceReader::SetCurrentPosition</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SourceReader.ReadSample(System.Int32,SharpDX.MediaFoundation.SourceReaderControlFlags,System.Int32@,SharpDX.MediaFoundation.SourceReaderFlags@,System.Int64@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Reads the next sample from the media source.</p>\t\n            </summary>\t\n            <param name=\"dwStreamIndex\"><dd> <p>The stream to pull data from. The value can be any of the following.</p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td> <dl> <dt>0?0xFFFFFFFB</dt> </dl> </td><td> <p>The zero-based index of a stream.</p> </td></tr> <tr><td><dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.SourceReaderIndex.FirstVideoStream\"/></strong></strong></dt> <dt>0xFFFFFFFC</dt> </dl> </td><td> <p>The first video stream.</p> </td></tr> <tr><td><dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.SourceReaderIndex.FirstAudioStream\"/></strong></strong></dt> <dt>0xFFFFFFFD</dt> </dl> </td><td> <p>The first audio stream.</p> </td></tr> <tr><td><dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.SourceReaderIndex.AnyStream\"/></strong></strong></dt> <dt>0xFFFFFFFE</dt> </dl> </td><td> <p>Get the next available sample, regardless of which stream.</p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <param name=\"dwControlFlags\"><dd> <p>A bitwise <strong>OR</strong> of zero or more flags from the <strong><see cref=\"T:SharpDX.MediaFoundation.SourceReaderControlFlags\"/></strong> enumeration.</p> </dd></param>\t\n            <param name=\"dwActualStreamIndexRef\"><dd> <p>Receives the zero-based index of the stream.</p> </dd></param>\t\n            <param name=\"dwStreamFlagsRef\"><dd> <p>Receives a bitwise <strong>OR</strong> of zero or more flags from the <strong><see cref=\"T:SharpDX.MediaFoundation.SourceReaderFlags\"/></strong> enumeration.</p> </dd></param>\t\n            <param name=\"llTimestampRef\"><dd> <p>Receives the time stamp of the sample, or the time of the stream event indicated in <em>pdwStreamFlags</em>. The time is given in 100-nanosecond units.</p> </dd></param>\t\n            <returns><dd> <p>Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.Sample\"/></strong> interface or the value <strong><c>null</c></strong> (see Remarks). If this parameter receives a non-<strong><c>null</c></strong> reference, the caller must release the interface.</p> </dd></returns>\t\n            <remarks>\t\n            <p>If the requested stream is not selected, the return code is <strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidRequest\"/></strong>. See <strong><see cref=\"M:SharpDX.MediaFoundation.SourceReader.SetStreamSelection(System.Int32,SharpDX.Bool)\"/></strong>.</p><p> This method can complete synchronously or asynchronously. If you provide a callback reference when you create the source reader, the method is asynchronous. Otherwise, the method is synchronous. For more information about setting the callback reference, see <see cref=\"F:SharpDX.MediaFoundation.SourceReaderAttributeKeys.AsyncCallback\"/>.</p>Asynchronous Mode<p>In asynchronous mode:</p><ul> <li>All of the <code>[out]</code> parameters must be <strong><c>null</c></strong>. Otherwise, the method returns <strong>E_INVALIDARG</strong>.</li> <li>The method returns immediately.</li> <li>When the operation completes, the application's <strong><see cref=\"M:SharpDX.MediaFoundation.SourceReaderCallback.OnReadSample(SharpDX.Result,System.Int32,System.Int32,System.Int64,SharpDX.MediaFoundation.Sample)\"/></strong> method is called.</li> <li>If an error occurs, the method can fail either synchronously or asynchronously. Check the return value of <strong>ReadSample</strong>, and also check the <em>hrStatus</em> parameter of <strong><see cref=\"M:SharpDX.MediaFoundation.SourceReaderCallback.OnReadSample(SharpDX.Result,System.Int32,System.Int32,System.Int64,SharpDX.MediaFoundation.Sample)\"/></strong>.</li> </ul>Synchronous Mode<p>In synchronous mode:</p><ul> <li>The <em>pdwStreamFlags</em> and <em>ppSample</em> parameters cannot be <strong><c>null</c></strong>. Otherwise, the method returns <strong>E_POINTER</strong>.</li> <li>The <em>pdwActualStreamIndex</em> and <em>pllTimestamp</em> parameters can be <strong><c>null</c></strong>.</li> <li>The method blocks until the next sample is available.</li> </ul><p> In synchronous mode, if the <em>dwStreamIndex</em> parameter is <strong><see cref=\"F:SharpDX.MediaFoundation.SourceReaderIndex.AnyStream\"/></strong>, you should pass a non-<strong><c>null</c></strong> value for <em>pdwActualStreamIndex</em>, so that you know which stream delivered the sample.</p><p>This method can return flags in the <em>pdwStreamFlags</em> parameter without returning a media sample in <em>ppSample</em>. Therefore, the <em>ppSample</em> parameter can receive a <strong><c>null</c></strong> reference even when the method succeeds. For example, when the source reader reaches the end of the stream, it returns the <strong><see cref=\"F:SharpDX.MediaFoundation.SourceReaderFlags.Endofstream\"/></strong> flag in <em>pdwStreamFlags</em> and sets <em>ppSample</em> to <strong><c>null</c></strong>.</p><p>If there is a gap in the stream, <em>pdwStreamFlags</em> receives the <see cref=\"F:SharpDX.MediaFoundation.SourceReaderFlags.StreamTick\"/> flag, <em>ppSample</em> is <strong><c>null</c></strong>, and <em>pllTimestamp</em> indicates the time when the gap occurred. </p><p>This interface is available on Windows?Vista if Platform Update Supplement for Windows?Vista is installed.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSourceReader::ReadSample']/*\"/>\t\n            <msdn-id>dd374665</msdn-id>\t\n            <unmanaged>HRESULT IMFSourceReader::ReadSample([In] unsigned int dwStreamIndex,[In] MF_SOURCE_READER_CONTROL_FLAG dwControlFlags,[Out, Optional] unsigned int* pdwActualStreamIndex,[Out, Optional] MF_SOURCE_READER_FLAG* pdwStreamFlags,[Out, Optional] longlong* pllTimestamp,[Out, Optional] IMFSample** ppSample)</unmanaged>\t\n            <unmanaged-short>IMFSourceReader::ReadSample</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SourceReader.Flush(System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Flushes one or more streams.</p>\t\n            </summary>\t\n            <param name=\"dwStreamIndex\"><dd> <p>The stream to flush. The value can be any of the following.</p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td> <dl> <dt>0?0xFFFFFFFB</dt> </dl> </td><td> <p>The zero-based index of a stream.</p> </td></tr> <tr><td><dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.SourceReaderIndex.FirstVideoStream\"/></strong></strong></dt> <dt>0xFFFFFFFC</dt> </dl> </td><td> <p>The first video stream.</p> </td></tr> <tr><td><dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.SourceReaderIndex.FirstAudioStream\"/></strong></strong></dt> <dt>0xFFFFFFFD</dt> </dl> </td><td> <p>The first audio stream.</p> </td></tr> <tr><td><dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.SourceReaderIndex.AllStreams\"/></strong></strong></dt> <dt>0xFFFFFFFE</dt> </dl> </td><td> <p>All streams.</p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>The <strong>Flush</strong> method discards all queued samples and cancels all pending sample requests.</p><p>This method can complete either synchronously or asynchronously. If you provide a callback reference when you create the source reader, the method is asynchronous. Otherwise, the method is synchronous. For more information about the setting the callback reference, see <see cref=\"F:SharpDX.MediaFoundation.SourceReaderAttributeKeys.AsyncCallback\"/>.</p><p>In synchronous mode, the method blocks until the operation is complete.</p><p>In asynchronous mode, the application's <strong><see cref=\"M:SharpDX.MediaFoundation.SourceReaderCallback.OnFlush(System.Int32)\"/></strong> method is called when the flush operation completes. While a flush operation is pending, the <strong><see cref=\"M:SharpDX.MediaFoundation.SourceReader.ReadSample(System.Int32,SharpDX.MediaFoundation.SourceReaderControlFlags,System.Int32@,SharpDX.MediaFoundation.SourceReaderFlags@,System.Int64@)\"/></strong> method returns <strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.NotAccepting\"/></strong>.</p><p><strong>Note</strong>??In Windows?7, there was a bug in the implementation of this method, which causes <strong>OnFlush</strong> to be called before the flush operation completes. A hotfix is available that fixes this bug. For more information, see http://support.microsoft.com/kb/979567.</p><p>This interface is available on Windows?Vista if Platform Update Supplement for Windows?Vista is installed.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSourceReader::Flush']/*\"/>\t\n            <msdn-id>dd374659</msdn-id>\t\n            <unmanaged>HRESULT IMFSourceReader::Flush([In] unsigned int dwStreamIndex)</unmanaged>\t\n            <unmanaged-short>IMFSourceReader::Flush</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SourceReader.GetServiceForStream(System.Int32,System.Guid,System.Guid)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Queries the underlying media source or decoder for an interface.</p>\t\n            </summary>\t\n            <param name=\"dwStreamIndex\"><dd> <p>The stream or object to query. If the value is <strong><see cref=\"F:SharpDX.MediaFoundation.SourceReaderIndex.MediaSource\"/></strong>, the method queries the media source. Otherwise, it queries the decoder that is associated with the specified stream. The following values are possible.</p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td> <dl> <dt>0?0xFFFFFFFB</dt> </dl> </td><td> <p>The zero-based index of a stream.</p> </td></tr> <tr><td><dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.SourceReaderIndex.FirstVideoStream\"/></strong></strong></dt> <dt>0xFFFFFFFC</dt> </dl> </td><td> <p>The first video stream.</p> </td></tr> <tr><td><dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.SourceReaderIndex.FirstAudioStream\"/></strong></strong></dt> <dt>0xFFFFFFFD</dt> </dl> </td><td> <p>The first audio stream.</p> </td></tr> <tr><td><dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.SourceReaderIndex.MediaSource\"/></strong></strong></dt> <dt>0xFFFFFFFF</dt> </dl> </td><td> <p>The media source.</p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <param name=\"guidService\"><dd> <p>A service identifier <see cref=\"T:System.Guid\"/>.  If the value is <strong>GUID_NULL</strong>, the method calls <strong>QueryInterface</strong> to get the requested interface. Otherwise, the method calls the <strong><see cref=\"M:SharpDX.MediaFoundation.ServiceProvider.GetService(System.Guid,System.Guid,System.IntPtr@)\"/></strong> method. For a list of service identifiers, see Service Interfaces.</p> </dd></param>\t\n            <param name=\"riid\"><dd> <p>The interface identifier (IID) of the interface being requested. </p> </dd></param>\t\n            <returns><dd> <p>Receives a reference to the requested interface. The caller must release the interface.</p> </dd></returns>\t\n            <remarks>\t\n            <p>This interface is available on Windows?Vista if Platform Update Supplement for Windows?Vista is installed.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSourceReader::GetServiceForStream']/*\"/>\t\n            <msdn-id>dd374663</msdn-id>\t\n            <unmanaged>HRESULT IMFSourceReader::GetServiceForStream([In] unsigned int dwStreamIndex,[In] const GUID&amp; guidService,[In] const GUID&amp; riid,[Out] void** ppvObject)</unmanaged>\t\n            <unmanaged-short>IMFSourceReader::GetServiceForStream</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SourceReader.GetPresentationAttribute(System.Int32,System.Guid)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Gets an attribute from the underlying media source.</p>\t\n            </summary>\t\n            <param name=\"dwStreamIndex\"><dd> <p>The stream or object to query. The value can be any of the following.</p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td> <dl> <dt>0?0xFFFFFFFB</dt> </dl> </td><td> <p>The zero-based index of a stream.</p> </td></tr> <tr><td><dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.SourceReaderIndex.FirstVideoStream\"/></strong></strong></dt> <dt>0xFFFFFFFC</dt> </dl> </td><td> <p>The first video stream.</p> </td></tr> <tr><td><dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.SourceReaderIndex.FirstAudioStream\"/></strong></strong></dt> <dt>0xFFFFFFFD</dt> </dl> </td><td> <p>The first audio stream.</p> </td></tr> <tr><td><dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.SourceReaderIndex.MediaSource\"/></strong></strong></dt> <dt>0xFFFFFFFF</dt> </dl> </td><td> <p>The media source.</p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <param name=\"guidAttribute\"><dd> <p>A <see cref=\"T:System.Guid\"/> that identifies the attribute to retrieve. If the <em>dwStreamIndex</em> parameter equals  <strong><see cref=\"F:SharpDX.MediaFoundation.SourceReaderIndex.MediaSource\"/></strong>, <em>guidAttribute</em> can specify one of the following:</p> <ul> <li>A presentation descriptor attribute. For a list of values, see Presentation Descriptor Attributes.</li> <li> <see cref=\"F:SharpDX.MediaFoundation.SourceReaderAttributeKeys.MediaSourceCharacteristics\"/>. Use this value to get characteristics flags from the media source.</li> </ul> <p>Otherwise, if the <em>dwStreamIndex</em> parameter specifies a stream, <em>guidAttribute</em> specifies a stream descriptor attribute. For a list of values, see Stream Descriptor Attributes.</p> </dd></param>\t\n            <returns><dd> <p>A reference to a <strong><see cref=\"T:SharpDX.Win32.Variant\"/></strong> that receives the value of the attribute. Call the <strong>PropVariantClear</strong> function to free the <strong><see cref=\"T:SharpDX.Win32.Variant\"/></strong>. </p> </dd></returns>\t\n            <remarks>\t\n            <p>This interface is available on Windows?Vista if Platform Update Supplement for Windows?Vista is installed.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSourceReader::GetPresentationAttribute']/*\"/>\t\n            <msdn-id>dd374662</msdn-id>\t\n            <unmanaged>HRESULT IMFSourceReader::GetPresentationAttribute([In] unsigned int dwStreamIndex,[In] const GUID&amp; guidAttribute,[Out] PROPVARIANT* pvarAttribute)</unmanaged>\t\n            <unmanaged-short>IMFSourceReader::GetPresentationAttribute</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SourceReader.#ctor(System.Byte[],SharpDX.MediaFoundation.MediaAttributes)\">\n            <summary>\t\n            Creates the source reader from a byte stream.\n            </summary>\t\n            <param name=\"buffer\"><dd> <p>A reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.IByteStream\"/></strong> interface of a byte stream. This byte stream will provide the source data for the source reader.</p> </dd></param>\t\n            <param name=\"attributes\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaAttributes\"/></strong> interface. You can use this parameter to configure the source reader. For more information, see Source Reader Attributes. This parameter can be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <remarks>\t\n            <p>Call <strong>CoInitialize(Ex)</strong> and <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong> before calling this function.</p><p> Internally, the source reader calls the <strong><see cref=\"M:SharpDX.MediaFoundation.SourceResolver.CreateObjectFromByteStream_(System.IntPtr,System.String,System.Int32,SharpDX.ComObject,SharpDX.MediaFoundation.ObjectType@,SharpDX.ComObject@)\"/></strong> method to create a media source from the byte stream. Therefore, a byte-stream handler must be registered for the byte stream. For more information about byte-stream handlers, see Scheme Handlers and Byte-Stream Handlers. </p><p>This function is available on Windows?Vista if Platform Update Supplement for Windows?Vista is installed.</p>\t\n            </remarks>\t\n            <msdn-id>dd388106</msdn-id>\t\n            <unmanaged>HRESULT MFCreateSourceReaderFromByteStream([In] IMFByteStream* pByteStream,[In, Optional] IMFAttributes* pAttributes,[Out, Fast] IMFSourceReader** ppSourceReader)</unmanaged>\t\n            <unmanaged-short>MFCreateSourceReaderFromByteStream</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SourceReader.#ctor(System.IO.Stream,SharpDX.MediaFoundation.MediaAttributes)\">\n            <summary>\t\n            Creates the source reader from a byte stream.\n            </summary>\t\n            <param name=\"buffer\"><dd> <p>A reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.IByteStream\"/></strong> interface of a byte stream. This byte stream will provide the source data for the source reader.</p> </dd></param>\t\n            <param name=\"attributes\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaAttributes\"/></strong> interface. You can use this parameter to configure the source reader. For more information, see Source Reader Attributes. This parameter can be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <remarks>\t\n            <p>Call <strong>CoInitialize(Ex)</strong> and <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong> before calling this function.</p><p> Internally, the source reader calls the <strong><see cref=\"M:SharpDX.MediaFoundation.SourceResolver.CreateObjectFromByteStream_(System.IntPtr,System.String,System.Int32,SharpDX.ComObject,SharpDX.MediaFoundation.ObjectType@,SharpDX.ComObject@)\"/></strong> method to create a media source from the byte stream. Therefore, a byte-stream handler must be registered for the byte stream. For more information about byte-stream handlers, see Scheme Handlers and Byte-Stream Handlers. </p><p>This function is available on Windows?Vista if Platform Update Supplement for Windows?Vista is installed.</p>\t\n            </remarks>\t\n            <msdn-id>dd388106</msdn-id>\t\n            <unmanaged>HRESULT MFCreateSourceReaderFromByteStream([In] IMFByteStream* pByteStream,[In, Optional] IMFAttributes* pAttributes,[Out, Fast] IMFSourceReader** ppSourceReader)</unmanaged>\t\n            <unmanaged-short>MFCreateSourceReaderFromByteStream</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SourceReader.#ctor(SharpDX.Win32.ComStream,SharpDX.MediaFoundation.MediaAttributes)\">\n            <summary>\t\n            Creates the source reader from a byte stream.\n            </summary>\t\n            <param name=\"comStream\"><dd> <p>A reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.IByteStream\"/></strong> interface of a byte stream. This byte stream will provide the source data for the source reader.</p> </dd></param>\t\n            <param name=\"attributes\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaAttributes\"/></strong> interface. You can use this parameter to configure the source reader. For more information, see Source Reader Attributes. This parameter can be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <remarks>\t\n            <p>Call <strong>CoInitialize(Ex)</strong> and <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong> before calling this function.</p><p> Internally, the source reader calls the <strong><see cref=\"M:SharpDX.MediaFoundation.SourceResolver.CreateObjectFromByteStream_(System.IntPtr,System.String,System.Int32,SharpDX.ComObject,SharpDX.MediaFoundation.ObjectType@,SharpDX.ComObject@)\"/></strong> method to create a media source from the byte stream. Therefore, a byte-stream handler must be registered for the byte stream. For more information about byte-stream handlers, see Scheme Handlers and Byte-Stream Handlers. </p><p>This function is available on Windows?Vista if Platform Update Supplement for Windows?Vista is installed.</p>\t\n            </remarks>\t\n            <msdn-id>dd388106</msdn-id>\t\n            <unmanaged>HRESULT MFCreateSourceReaderFromByteStream([In] IMFByteStream* pByteStream,[In, Optional] IMFAttributes* pAttributes,[Out, Fast] IMFSourceReader** ppSourceReader)</unmanaged>\t\n            <unmanaged-short>MFCreateSourceReaderFromByteStream</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SourceReader.GetNativeMediaType(SharpDX.MediaFoundation.SourceReaderIndex,System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Gets a format that is supported natively by the media source.</p>\t\n            </summary>\t\n            <param name=\"readerIndex\"><dd> <p>Specifies which stream to query. The value can be any of the following.</p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td> <dl> <dt>0?0xFFFFFFFB</dt> </dl> </td><td> <p>The zero-based index of a stream.</p> </td></tr> <tr><td><dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.SourceReaderIndex.FirstVideoStream\"/></strong></strong></dt> <dt>0xFFFFFFFC</dt> </dl> </td><td> <p>The first video stream.</p> </td></tr> <tr><td><dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.SourceReaderIndex.FirstAudioStream\"/></strong></strong></dt> <dt>0xFFFFFFFD</dt> </dl> </td><td> <p>The first audio stream.</p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <param name=\"dwMediaTypeIndex\"><dd> <p>The zero-based index of the media type to retrieve.</p> </dd></param>\t\n            <returns><dd> <p>Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaType\"/></strong> interface. The caller must release the interface.</p> </dd></returns>\t\n            <remarks>\t\n            <p>This method queries the underlying media source for its native output format. Potentially, each source stream can produce more than one output format. Use the <em>dwMediaTypeIndex</em> parameter to loop through the available formats. Generally, file sources offer just one format per stream, but capture devices might offer several formats.</p><p> The method returns a copy of the media type, so it is safe to modify the object received in the <em> ppMediaType</em> parameter.</p><p>To set  the output type for a stream, call the <strong><see cref=\"M:SharpDX.MediaFoundation.SourceReader.SetCurrentMediaType(System.Int32,System.IntPtr,SharpDX.MediaFoundation.MediaType)\"/></strong> method.</p><p>This interface is available on Windows?Vista if Platform Update Supplement for Windows?Vista is installed.</p>\t\n            </remarks>\t\n            <msdn-id>dd374661</msdn-id>\t\n            <unmanaged>HRESULT IMFSourceReader::GetNativeMediaType([In] unsigned int dwStreamIndex,[In] unsigned int dwMediaTypeIndex,[Out] IMFMediaType** ppMediaType)</unmanaged>\t\n            <unmanaged-short>IMFSourceReader::GetNativeMediaType</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SourceReader.SetStreamSelection(SharpDX.MediaFoundation.SourceReaderIndex,SharpDX.Bool)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Selects or deselects one or more streams.</p>\t\n            </summary>\t\n            <param name=\"readerIndex\"><dd> <p>The stream to set. The value can be any of the following.</p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td> <dl> <dt>0?0xFFFFFFFB</dt> </dl> </td><td> <p>The zero-based index of a stream.</p> </td></tr> <tr><td><dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.SourceReaderIndex.FirstVideoStream\"/></strong></strong></dt> <dt>0xFFFFFFFC</dt> </dl> </td><td> <p>The first video stream.</p> </td></tr> <tr><td><dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.SourceReaderIndex.FirstAudioStream\"/></strong></strong></dt> <dt>0xFFFFFFFD</dt> </dl> </td><td> <p>The first audio stream.</p> </td></tr> <tr><td><dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.SourceReaderIndex.AllStreams\"/></strong></strong></dt> <dt>0xFFFFFFFE</dt> </dl> </td><td> <p>All streams.</p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <param name=\"fSelected\"><dd> <p>Specify <strong>TRUE</strong> to select streams or <strong><see cref=\"F:SharpDX.Result.False\"/></strong> to deselect streams. If a stream is deselected, it will not generate data.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>There are two common uses for this method:</p><ul> <li>To change the default stream selection. Some media files contain multiple streams of the same type. For example, a file might include audio streams for multiple languages. You can use this method to change which of the streams is selected. To get information about each stream, call <strong><see cref=\"M:SharpDX.MediaFoundation.SourceReader.GetPresentationAttribute(System.Int32,System.Guid)\"/></strong> or <strong><see cref=\"M:SharpDX.MediaFoundation.SourceReader.GetNativeMediaType(System.Int32,System.Int32)\"/></strong>.</li> <li>If you will not need data from one of the streams, it is a good idea to deselect that stream. If the stream is selected, the media source might hold onto a queue of unread data, and the queue might grow indefinitely, consuming memory. </li> </ul><p>For an example of deselecting a stream, see Tutorial: Decoding Audio.</p><p>If a stream is deselected, the <strong><see cref=\"M:SharpDX.MediaFoundation.SourceReader.ReadSample(System.Int32,SharpDX.MediaFoundation.SourceReaderControlFlags,System.Int32@,SharpDX.MediaFoundation.SourceReaderFlags@,System.Int64@)\"/></strong> method returns <strong>MF_E_INVALIDREQUEST</strong> for that stream. Other <strong><see cref=\"T:SharpDX.MediaFoundation.SourceReader\"/></strong> methods are valid for deselected streams.</p><p>Stream selection does not affect how the source reader loads or unloads decoders in memory. In particular, deselecting a stream does not force the source reader to unload the decoder for that stream.</p><p>This interface is available on Windows?Vista if Platform Update Supplement for Windows?Vista is installed.</p>\t\n            </remarks>\t\n            <msdn-id>dd374669</msdn-id>\t\n            <unmanaged>HRESULT IMFSourceReader::SetStreamSelection([In] unsigned int dwStreamIndex,[In] BOOL fSelected)</unmanaged>\t\n            <unmanaged-short>IMFSourceReader::SetStreamSelection</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SourceReader.SetCurrentMediaType(SharpDX.MediaFoundation.SourceReaderIndex,SharpDX.MediaFoundation.MediaType)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Sets the media type for a stream.</p><p>This media type defines that format that the Source Reader produces as output. It can differ from the native format provided by the media source. See Remarks for more information.</p>\t\n            </summary>\t\n            <param name=\"readerIndex\">No documentation.</param>\t\n            <param name=\"mediaTypeRef\">No documentation.</param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><strong>MF_E_INVALIDMEDIATYPE</strong></strong></dt> </dl> </td><td> <p>At least one decoder was found for the native stream type, but the type specified by <em>pMediaType</em> was rejected.</p> </td></tr> <tr><td> <dl> <dt><strong><strong>MF_E_INVALIDREQUEST</strong></strong></dt> </dl> </td><td> <p>One or more sample requests are still pending.</p> </td></tr> <tr><td> <dl> <dt><strong><strong>MF_E_INVALIDSTREAMNUMBER</strong></strong></dt> </dl> </td><td> <p>The <em>dwStreamIndex</em> parameter is invalid.</p> </td></tr> <tr><td> <dl> <dt><strong><strong>MF_E_TOPO_CODEC_NOT_FOUND</strong></strong></dt> </dl> </td><td> <p>Could not find a decoder for the native stream type.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>For each stream, you can set the media type to any of the following:</p><ul> <li>One of the native types offered by the media source. To enumerate the native types, call <strong><see cref=\"M:SharpDX.MediaFoundation.SourceReader.GetNativeMediaType(System.Int32,System.Int32)\"/></strong>.</li> <li>If the native media type is compressed, you can specify a corresponding uncompressed format. The Source Reader will search for a decoder that can decode from the native format to the specified uncompressed format.</li> </ul><p>The source reader does not support audio resampling. If you need to resample the audio, you can use the <strong>Audio Resampler DSP</strong>.</p><p>If you set the <see cref=\"F:SharpDX.MediaFoundation.SourceReaderAttributeKeys.EnableVideoProcessing\"/> attribute to <strong>TRUE</strong> when you create the Source Reader, the Source Reader will convert YUV video to RGB-32. This conversion is not optimized for real-time video playback.</p><p>This interface is available on Windows?Vista if Platform Update Supplement for Windows?Vista is installed.</p>\t\n            </remarks>\t\n            <msdn-id>dd374667</msdn-id>\t\n            <unmanaged>HRESULT IMFSourceReader::SetCurrentMediaType([In] unsigned int dwStreamIndex,[In] unsigned int* pdwReserved,[In] IMFMediaType* pMediaType)</unmanaged>\t\n            <unmanaged-short>IMFSourceReader::SetCurrentMediaType</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SourceReader.SetCurrentMediaType(System.Int32,SharpDX.MediaFoundation.MediaType)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Sets the media type for a stream.</p><p>This media type defines that format that the Source Reader produces as output. It can differ from the native format provided by the media source. See Remarks for more information.</p>\t\n            </summary>\t\n            <param name=\"readerIndex\">No documentation.</param>\t\n            <param name=\"mediaTypeRef\">No documentation.</param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><strong>MF_E_INVALIDMEDIATYPE</strong></strong></dt> </dl> </td><td> <p>At least one decoder was found for the native stream type, but the type specified by <em>pMediaType</em> was rejected.</p> </td></tr> <tr><td> <dl> <dt><strong><strong>MF_E_INVALIDREQUEST</strong></strong></dt> </dl> </td><td> <p>One or more sample requests are still pending.</p> </td></tr> <tr><td> <dl> <dt><strong><strong>MF_E_INVALIDSTREAMNUMBER</strong></strong></dt> </dl> </td><td> <p>The <em>dwStreamIndex</em> parameter is invalid.</p> </td></tr> <tr><td> <dl> <dt><strong><strong>MF_E_TOPO_CODEC_NOT_FOUND</strong></strong></dt> </dl> </td><td> <p>Could not find a decoder for the native stream type.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>For each stream, you can set the media type to any of the following:</p><ul> <li>One of the native types offered by the media source. To enumerate the native types, call <strong><see cref=\"M:SharpDX.MediaFoundation.SourceReader.GetNativeMediaType(System.Int32,System.Int32)\"/></strong>.</li> <li>If the native media type is compressed, you can specify a corresponding uncompressed format. The Source Reader will search for a decoder that can decode from the native format to the specified uncompressed format.</li> </ul><p>The source reader does not support audio resampling. If you need to resample the audio, you can use the <strong>Audio Resampler DSP</strong>.</p><p>If you set the <see cref=\"F:SharpDX.MediaFoundation.SourceReaderAttributeKeys.EnableVideoProcessing\"/> attribute to <strong>TRUE</strong> when you create the Source Reader, the Source Reader will convert YUV video to RGB-32. This conversion is not optimized for real-time video playback.</p><p>This interface is available on Windows?Vista if Platform Update Supplement for Windows?Vista is installed.</p>\t\n            </remarks>\t\n            <msdn-id>dd374667</msdn-id>\t\n            <unmanaged>HRESULT IMFSourceReader::SetCurrentMediaType([In] unsigned int dwStreamIndex,[In] unsigned int* pdwReserved,[In] IMFMediaType* pMediaType)</unmanaged>\t\n            <unmanaged-short>IMFSourceReader::SetCurrentMediaType</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SourceReader.SetCurrentPosition(System.Int64)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Seeks to a new position in the media source.</p>\t\n            </summary>\t\n            <param name=\"position\">The position from which playback will be started. 100-nanosecond units.</param>\t\n            <remarks>\t\n            <p>The <strong>SetCurrentPosition</strong> method does not guarantee exact seeking. The accuracy of the seek depends on the media content. If the media content contains a video stream, the <strong>SetCurrentPosition</strong> method typically seeks to the nearest key frame before the desired position. The distance between key frames depends on several factors, including the encoder implementation, the video content, and the particular encoding settings used to encode the content. The distance between key frame can vary within a single video file (for example, depending on scene complexity).</p><p>After seeking, the application should call <strong><see cref=\"M:SharpDX.MediaFoundation.SourceReader.ReadSample(System.Int32,SharpDX.MediaFoundation.SourceReaderControlFlags,System.Int32@,SharpDX.MediaFoundation.SourceReaderFlags@,System.Int64@)\"/></strong> and advance to the desired position. </p><p>This interface is available on Windows?Vista if Platform Update Supplement for Windows?Vista is installed.</p>\t\n            </remarks>\t\n            <msdn-id>dd374668</msdn-id>\t\n            <unmanaged>HRESULT IMFSourceReader::SetCurrentPosition([In] const GUID&amp; guidTimeFormat,[In] const PROPVARIANT&amp; varPosition)</unmanaged>\t\n            <unmanaged-short>IMFSourceReader::SetCurrentPosition</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SourceReader.GetCurrentMediaType(SharpDX.MediaFoundation.SourceReaderIndex)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Gets the current media type for a stream.</p>\t\n            </summary>\t\n            <param name=\"readerIndex\"><dd> <p>The stream to query. The value can be any of the following.</p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td> <dl> <dt>0?0xFFFFFFFB</dt> </dl> </td><td> <p>The zero-based index of a stream.</p> </td></tr> <tr><td><dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.SourceReaderIndex.FirstVideoStream\"/></strong></strong></dt> <dt>0xFFFFFFFC</dt> </dl> </td><td> <p>The first video stream.</p> </td></tr> <tr><td><dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.SourceReaderIndex.FirstAudioStream\"/></strong></strong></dt> <dt>0xFFFFFFFD</dt> </dl> </td><td> <p>The first audio stream.</p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <returns><dd> <p>Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaType\"/></strong> interface. The caller must release the interface.</p> </dd></returns>\t\n            <remarks>\t\n            <p>This interface is available on Windows?Vista if Platform Update Supplement for Windows?Vista is installed.</p>\t\n            </remarks>\t\n            <msdn-id>dd374660</msdn-id>\t\n            <unmanaged>HRESULT IMFSourceReader::GetCurrentMediaType([In] unsigned int dwStreamIndex,[Out] IMFMediaType** ppMediaType)</unmanaged>\t\n            <unmanaged-short>IMFSourceReader::GetCurrentMediaType</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SourceReader.ReadSample(SharpDX.MediaFoundation.SourceReaderIndex,SharpDX.MediaFoundation.SourceReaderControlFlags,System.Int32@,SharpDX.MediaFoundation.SourceReaderFlags@,System.Int64@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Reads the next sample from the media source.</p>\t\n            </summary>\t\n            <param name=\"dwStreamIndex\"><dd> <p>The stream to pull data from. The value can be any of the following.</p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td> <dl> <dt>0?0xFFFFFFFB</dt> </dl> </td><td> <p>The zero-based index of a stream.</p> </td></tr> <tr><td><dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.SourceReaderIndex.FirstVideoStream\"/></strong></strong></dt> <dt>0xFFFFFFFC</dt> </dl> </td><td> <p>The first video stream.</p> </td></tr> <tr><td><dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.SourceReaderIndex.FirstAudioStream\"/></strong></strong></dt> <dt>0xFFFFFFFD</dt> </dl> </td><td> <p>The first audio stream.</p> </td></tr> <tr><td><dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.SourceReaderIndex.AnyStream\"/></strong></strong></dt> <dt>0xFFFFFFFE</dt> </dl> </td><td> <p>Get the next available sample, regardless of which stream.</p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <param name=\"dwControlFlags\"><dd> <p>A bitwise <strong>OR</strong> of zero or more flags from the <strong><see cref=\"T:SharpDX.MediaFoundation.SourceReaderControlFlags\"/></strong> enumeration.</p> </dd></param>\t\n            <param name=\"dwActualStreamIndexRef\"><dd> <p>Receives the zero-based index of the stream.</p> </dd></param>\t\n            <param name=\"dwStreamFlagsRef\"><dd> <p>Receives a bitwise <strong>OR</strong> of zero or more flags from the <strong><see cref=\"T:SharpDX.MediaFoundation.SourceReaderFlags\"/></strong> enumeration.</p> </dd></param>\t\n            <param name=\"llTimestampRef\"><dd> <p>Receives the time stamp of the sample, or the time of the stream event indicated in <em>pdwStreamFlags</em>. The time is given in 100-nanosecond units.</p> </dd></param>\t\n            <returns><dd> <p>Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.Sample\"/></strong> interface or the value <strong><c>null</c></strong> (see Remarks). If this parameter receives a non-<strong><c>null</c></strong> reference, the caller must release the interface.</p> </dd></returns>\t\n            <remarks>\t\n            <p>If the requested stream is not selected, the return code is <strong>MF_E_INVALIDREQUEST</strong>. See <strong><see cref=\"M:SharpDX.MediaFoundation.SourceReader.SetStreamSelection(System.Int32,SharpDX.Bool)\"/></strong>.</p><p> This method can complete synchronously or asynchronously. If you provide a callback reference when you create the source reader, the method is asynchronous. Otherwise, the method is synchronous. For more information about setting the callback reference, see <see cref=\"F:SharpDX.MediaFoundation.SourceReaderAttributeKeys.AsyncCallback\"/>.</p>Asynchronous Mode<p>In asynchronous mode:</p><ul> <li>All of the <code>[out]</code> parameters must be <strong><c>null</c></strong>. Otherwise, the method returns <strong>E_INVALIDARG</strong>.</li> <li>The method returns immediately.</li> <li>When the operation completes, the application's <strong><see cref=\"M:SharpDX.MediaFoundation.SourceReaderCallback.OnReadSample(SharpDX.Result,System.Int32,System.Int32,System.Int64,SharpDX.MediaFoundation.Sample)\"/></strong> method is called.</li> <li>If an error occurs, the method can fail either synchronously or asynchronously. Check the return value of <strong>ReadSample</strong>, and also check the <em>hrStatus</em> parameter of <strong><see cref=\"M:SharpDX.MediaFoundation.SourceReaderCallback.OnReadSample(SharpDX.Result,System.Int32,System.Int32,System.Int64,SharpDX.MediaFoundation.Sample)\"/></strong>.</li> </ul>Synchronous Mode<p>In synchronous mode:</p><ul> <li>The <em>pdwStreamFlags</em> and <em>ppSample</em> parameters cannot be <strong><c>null</c></strong>. Otherwise, the method returns <strong>E_POINTER</strong>.</li> <li>The <em>pdwActualStreamIndex</em> and <em>pllTimestamp</em> parameters can be <strong><c>null</c></strong>.</li> <li>The method blocks until the next sample is available.</li> </ul><p> In synchronous mode, if the <em>dwStreamIndex</em> parameter is <strong><see cref=\"F:SharpDX.MediaFoundation.SourceReaderIndex.AnyStream\"/></strong>, you should pass a non-<strong><c>null</c></strong> value for <em>pdwActualStreamIndex</em>, so that you know which stream delivered the sample.</p><p>This method can return flags in the <em>pdwStreamFlags</em> parameter without returning a media sample in <em>ppSample</em>. Therefore, the <em>ppSample</em> parameter can receive a <strong><c>null</c></strong> reference even when the method succeeds. For example, when the source reader reaches the end of the stream, it returns the <strong><see cref=\"!:SharpDX.MediaFoundation.SourceReaderFlags.FEndofstream\"/></strong> flag in <em>pdwStreamFlags</em> and sets <em>ppSample</em> to <strong><c>null</c></strong>.</p><p>If there is a gap in the stream, <em>pdwStreamFlags</em> receives the <see cref=\"!:SharpDX.MediaFoundation.SourceReaderFlags.FStreamtick\"/> flag, <em>ppSample</em> is <strong><c>null</c></strong>, and <em>pllTimestamp</em> indicates the time when the gap occurred. </p><p>This interface is available on Windows?Vista if Platform Update Supplement for Windows?Vista is installed.</p>\t\n            </remarks>\t\n            <msdn-id>dd374665</msdn-id>\t\n            <unmanaged>HRESULT IMFSourceReader::ReadSample([In] unsigned int dwStreamIndex,[In] unsigned int dwControlFlags,[Out, Optional] unsigned int* pdwActualStreamIndex,[Out, Optional] unsigned int* pdwStreamFlags,[Out, Optional] longlong* pllTimestamp,[Out, Optional] IMFSample** ppSample)</unmanaged>\t\n            <unmanaged-short>IMFSourceReader::ReadSample</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SourceReader.Flush(SharpDX.MediaFoundation.SourceReaderIndex)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Flushes one or more streams.</p>\t\n            </summary>\t\n            <param name=\"dwStreamIndex\"><dd> <p>The stream to flush. The value can be any of the following.</p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td> <dl> <dt>0?0xFFFFFFFB</dt> </dl> </td><td> <p>The zero-based index of a stream.</p> </td></tr> <tr><td><dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.SourceReaderIndex.FirstVideoStream\"/></strong></strong></dt> <dt>0xFFFFFFFC</dt> </dl> </td><td> <p>The first video stream.</p> </td></tr> <tr><td><dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.SourceReaderIndex.FirstAudioStream\"/></strong></strong></dt> <dt>0xFFFFFFFD</dt> </dl> </td><td> <p>The first audio stream.</p> </td></tr> <tr><td><dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.SourceReaderIndex.AllStreams\"/></strong></strong></dt> <dt>0xFFFFFFFE</dt> </dl> </td><td> <p>All streams.</p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>The <strong>Flush</strong> method discards all queued samples and cancels all pending sample requests.</p><p>This method can complete either synchronously or asynchronously. If you provide a callback reference when you create the source reader, the method is asynchronous. Otherwise, the method is synchronous. For more information about the setting the callback reference, see <see cref=\"F:SharpDX.MediaFoundation.SourceReaderAttributeKeys.AsyncCallback\"/>.</p><p>In synchronous mode, the method blocks until the operation is complete.</p><p>In asynchronous mode, the application's <strong><see cref=\"M:SharpDX.MediaFoundation.SourceReaderCallback.OnFlush(System.Int32)\"/></strong> method is called when the flush operation completes. While a flush operation is pending, the <strong><see cref=\"M:SharpDX.MediaFoundation.SourceReader.ReadSample(System.Int32,SharpDX.MediaFoundation.SourceReaderControlFlags,System.Int32@,SharpDX.MediaFoundation.SourceReaderFlags@,System.Int64@)\"/></strong> method returns <strong>MF_E_NOTACCEPTING</strong>.</p><p><strong>Note</strong>??In Windows?7, there was a bug in the implementation of this method, which causes <strong>OnFlush</strong> to be called before the flush operation completes. A hotfix is available that fixes this bug. For more information, see http://support.microsoft.com/kb/979567.</p><p>This interface is available on Windows?Vista if Platform Update Supplement for Windows?Vista is installed.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSourceReader::Flush']/*\"/>\t\n            <msdn-id>dd374659</msdn-id>\t\n            <unmanaged>HRESULT IMFSourceReader::Flush([In] unsigned int dwStreamIndex)</unmanaged>\t\n            <unmanaged-short>IMFSourceReader::Flush</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SourceReader.GetServiceForStream(SharpDX.MediaFoundation.SourceReaderIndex,System.Guid,System.Guid)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Queries the underlying media source or decoder for an interface.</p>\t\n            </summary>\t\n            <param name=\"dwStreamIndex\"><dd> <p>The stream or object to query. If the value is <strong><see cref=\"!:SharpDX.MediaFoundation.SourceReaderIndex.Mediasource\"/></strong>, the method queries the media source. Otherwise, it queries the decoder that is associated with the specified stream. The following values are possible.</p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td> <dl> <dt>0?0xFFFFFFFB</dt> </dl> </td><td> <p>The zero-based index of a stream.</p> </td></tr> <tr><td><dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.SourceReaderIndex.FirstVideoStream\"/></strong></strong></dt> <dt>0xFFFFFFFC</dt> </dl> </td><td> <p>The first video stream.</p> </td></tr> <tr><td><dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.SourceReaderIndex.FirstAudioStream\"/></strong></strong></dt> <dt>0xFFFFFFFD</dt> </dl> </td><td> <p>The first audio stream.</p> </td></tr> <tr><td><dl> <dt><strong><strong><see cref=\"!:SharpDX.MediaFoundation.SourceReaderIndex.Mediasource\"/></strong></strong></dt> <dt>0xFFFFFFFF</dt> </dl> </td><td> <p>The media source.</p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <param name=\"guidService\"><dd> <p>A service identifier <see cref=\"T:System.Guid\"/>.  If the value is <strong>GUID_NULL</strong>, the method calls <strong>QueryInterface</strong> to get the requested interface. Otherwise, the method calls the <strong><see cref=\"M:SharpDX.MediaFoundation.ServiceProvider.GetService(System.Guid,System.Guid,System.IntPtr@)\"/></strong> method. For a list of service identifiers, see Service Interfaces.</p> </dd></param>\t\n            <param name=\"riid\"><dd> <p>The interface identifier (IID) of the interface being requested. </p> </dd></param>\t\n            <returns><dd> <p>Receives a reference to the requested interface. The caller must release the interface.</p> </dd></returns>\t\n            <remarks>\t\n            <p>This interface is available on Windows?Vista if Platform Update Supplement for Windows?Vista is installed.</p>\t\n            </remarks>\t\n            <msdn-id>dd374663</msdn-id>\t\n            <unmanaged>HRESULT IMFSourceReader::GetServiceForStream([In] unsigned int dwStreamIndex,[In] const GUID&amp; guidService,[In] const GUID&amp; riid,[Out] void** ppvObject)</unmanaged>\t\n            <unmanaged-short>IMFSourceReader::GetServiceForStream</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SourceReader.GetPresentationAttribute``1(SharpDX.MediaFoundation.SourceReaderIndex,SharpDX.MediaFoundation.MediaAttributeKey{``0})\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Gets an attribute from the underlying media source.</p>\t\n            </summary>\t\n            <param name=\"dwStreamIndex\"><dd> <p>The stream or object to query. The value can be any of the following.</p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td> <dl> <dt>0?0xFFFFFFFB</dt> </dl> </td><td> <p>The zero-based index of a stream.</p> </td></tr> <tr><td><dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.SourceReaderIndex.FirstVideoStream\"/></strong></strong></dt> <dt>0xFFFFFFFC</dt> </dl> </td><td> <p>The first video stream.</p> </td></tr> <tr><td><dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.SourceReaderIndex.FirstAudioStream\"/></strong></strong></dt> <dt>0xFFFFFFFD</dt> </dl> </td><td> <p>The first audio stream.</p> </td></tr> <tr><td><dl> <dt><strong><strong><see cref=\"!:SharpDX.MediaFoundation.SourceReaderIndex.Mediasource\"/></strong></strong></dt> <dt>0xFFFFFFFF</dt> </dl> </td><td> <p>The media source.</p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <param name=\"guidAttribute\"><dd> <p>A <see cref=\"T:System.Guid\"/> that identifies the attribute to retrieve. If the <em>dwStreamIndex</em> parameter equals  <strong><see cref=\"!:SharpDX.MediaFoundation.SourceReaderIndex.Mediasource\"/></strong>, <em>guidAttribute</em> can specify one of the following:</p> <ul> <li>A presentation descriptor attribute. For a list of values, see Presentation Descriptor Attributes.</li> <li> <see cref=\"F:SharpDX.MediaFoundation.SourceReaderAttributeKeys.MediaSourceCharacteristics\"/>. Use this value to get characteristics flags from the media source.</li> </ul> <p>Otherwise, if the <em>dwStreamIndex</em> parameter specifies a stream, <em>guidAttribute</em> specifies a stream descriptor attribute. For a list of values, see Stream Descriptor Attributes.</p> </dd></param>\t\n            <returns>a <strong><see cref=\"T:SharpDX.Win32.Variant\"/></strong> that receives the value of the attribute.</returns>\t\n            <remarks>\t\n            <p>This interface is available on Windows?Vista if Platform Update Supplement for Windows?Vista is installed.</p>\t\n            </remarks>\t\n            <msdn-id>dd374662</msdn-id>\t\n            <unmanaged>HRESULT IMFSourceReader::GetPresentationAttribute([In] unsigned int dwStreamIndex,[In] const GUID&amp; guidAttribute,[Out] PROPVARIANT* pvarAttribute)</unmanaged>\t\n            <unmanaged-short>IMFSourceReader::GetPresentationAttribute</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SourceReader.GetPresentationAttribute(SharpDX.MediaFoundation.SourceReaderIndex,System.Guid)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Gets an attribute from the underlying media source.</p>\t\n            </summary>\t\n            <param name=\"dwStreamIndex\"><dd> <p>The stream or object to query. The value can be any of the following.</p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td> <dl> <dt>0?0xFFFFFFFB</dt> </dl> </td><td> <p>The zero-based index of a stream.</p> </td></tr> <tr><td><dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.SourceReaderIndex.FirstVideoStream\"/></strong></strong></dt> <dt>0xFFFFFFFC</dt> </dl> </td><td> <p>The first video stream.</p> </td></tr> <tr><td><dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.SourceReaderIndex.FirstAudioStream\"/></strong></strong></dt> <dt>0xFFFFFFFD</dt> </dl> </td><td> <p>The first audio stream.</p> </td></tr> <tr><td><dl> <dt><strong><strong><see cref=\"!:SharpDX.MediaFoundation.SourceReaderIndex.Mediasource\"/></strong></strong></dt> <dt>0xFFFFFFFF</dt> </dl> </td><td> <p>The media source.</p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <param name=\"guidAttribute\"><dd> <p>A <see cref=\"T:System.Guid\"/> that identifies the attribute to retrieve. If the <em>dwStreamIndex</em> parameter equals  <strong><see cref=\"!:SharpDX.MediaFoundation.SourceReaderIndex.Mediasource\"/></strong>, <em>guidAttribute</em> can specify one of the following:</p> <ul> <li>A presentation descriptor attribute. For a list of values, see Presentation Descriptor Attributes.</li> <li> <see cref=\"F:SharpDX.MediaFoundation.SourceReaderAttributeKeys.MediaSourceCharacteristics\"/>. Use this value to get characteristics flags from the media source.</li> </ul> <p>Otherwise, if the <em>dwStreamIndex</em> parameter specifies a stream, <em>guidAttribute</em> specifies a stream descriptor attribute. For a list of values, see Stream Descriptor Attributes.</p> </dd></param>\t\n            <returns>a <strong><see cref=\"T:SharpDX.Win32.Variant\"/></strong> that receives the value of the attribute.</returns>\t\n            <remarks>\t\n            <p>This interface is available on Windows?Vista if Platform Update Supplement for Windows?Vista is installed.</p>\t\n            </remarks>\t\n            <msdn-id>dd374662</msdn-id>\t\n            <unmanaged>HRESULT IMFSourceReader::GetPresentationAttribute([In] unsigned int dwStreamIndex,[In] const GUID&amp; guidAttribute,[Out] PROPVARIANT* pvarAttribute)</unmanaged>\t\n            <unmanaged-short>IMFSourceReader::GetPresentationAttribute</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.SourceReaderCallback\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Callback interface for the Microsoft Media Foundation source reader.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Use the <see cref=\"F:SharpDX.MediaFoundation.SourceReaderAttributeKeys.AsyncCallback\"/> attribute to set the callback reference when you first create the source reader object.</p><p>The callback methods can be called from any thread, so an object that implements this interface must be thread-safe.</p><p>If you do not specify a callback reference, the source reader operates synchronously.</p><p>This interface is available on Windows?Vista if Platform Update Supplement for Windows?Vista is installed.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSourceReaderCallback']/*\"/>\t\n            <msdn-id>dd374656</msdn-id>\t\n            <unmanaged>IMFSourceReaderCallback</unmanaged>\t\n            <unmanaged-short>IMFSourceReaderCallback</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SourceReaderCallback.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.SourceReaderCallback\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SourceReaderCallback.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.SourceReaderCallback\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.SourceReaderCallback\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SourceReaderCallback.OnReadSample(SharpDX.Result,System.Int32,System.Int32,System.Int64,SharpDX.MediaFoundation.Sample)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Called when the <strong><see cref=\"M:SharpDX.MediaFoundation.SourceReader.ReadSample(System.Int32,SharpDX.MediaFoundation.SourceReaderControlFlags,System.Int32@,SharpDX.MediaFoundation.SourceReaderFlags@,System.Int64@)\"/></strong> method completes.</p>\t\n            </summary>\t\n            <param name=\"hrStatus\">No documentation.</param>\t\n            <param name=\"dwStreamIndex\">No documentation.</param>\t\n            <param name=\"dwStreamFlags\">No documentation.</param>\t\n            <param name=\"llTimestamp\">No documentation.</param>\t\n            <param name=\"sampleRef\">No documentation.</param>\t\n            <returns><p>Returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> value. Currently, the source reader ignores the return value.</p></returns>\t\n            <remarks>\t\n            <p>The <em>pSample</em> parameter might be <strong><c>null</c></strong>. For example, when the source reader reaches the end of a stream, <em>dwStreamFlags</em> contains the <strong><see cref=\"F:SharpDX.MediaFoundation.SourceReaderFlags.Endofstream\"/></strong> flag, and <em>pSample</em> is <strong><c>null</c></strong>. </p><p>If there is a gap in the stream, <em>dwStreamFlags</em> contains the <strong><see cref=\"F:SharpDX.MediaFoundation.SourceReaderFlags.StreamTick\"/></strong> flag, <em>pSample</em> is <strong><c>null</c></strong>, and <em>llTimestamp</em> indicates the time when the gap occurred.  </p><p>This interface is available on Windows?Vista if Platform Update Supplement for Windows?Vista is installed.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSourceReaderCallback::OnReadSample']/*\"/>\t\n            <msdn-id>dd374658</msdn-id>\t\n            <unmanaged>HRESULT IMFSourceReaderCallback::OnReadSample([In] HRESULT hrStatus,[In] unsigned int dwStreamIndex,[In] unsigned int dwStreamFlags,[In] longlong llTimestamp,[In, Optional] IMFSample* pSample)</unmanaged>\t\n            <unmanaged-short>IMFSourceReaderCallback::OnReadSample</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SourceReaderCallback.OnFlush(System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Called when the <strong><see cref=\"M:SharpDX.MediaFoundation.SourceReader.Flush(System.Int32)\"/></strong> method completes.</p>\t\n            </summary>\t\n            <param name=\"dwStreamIndex\">No documentation.</param>\t\n            <returns><p>Returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> value. Currently, the source reader ignores the return value.</p></returns>\t\n            <remarks>\t\n            <p>This interface is available on Windows?Vista if Platform Update Supplement for Windows?Vista is installed.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSourceReaderCallback::OnFlush']/*\"/>\t\n            <msdn-id>dd374657</msdn-id>\t\n            <unmanaged>HRESULT IMFSourceReaderCallback::OnFlush([In] unsigned int dwStreamIndex)</unmanaged>\t\n            <unmanaged-short>IMFSourceReaderCallback::OnFlush</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SourceReaderCallback.OnEvent(System.Int32,SharpDX.MediaFoundation.MediaEvent)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Called when the source reader receives certain events from the media source.</p>\t\n            </summary>\t\n            <param name=\"dwStreamIndex\"><dd> <p>For stream events, the value is the zero-based index of the stream that sent the event. For source events, the value is <strong><see cref=\"F:SharpDX.MediaFoundation.SourceReaderIndex.MediaSource\"/></strong>.</p> </dd></param>\t\n            <param name=\"eventRef\"><dd> <p>A reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaEvent\"/></strong> interface of the event.</p> </dd></param>\t\n            <returns><p>Returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> value. Currently, the source reader ignores the return value.</p></returns>\t\n            <remarks>\t\n            <p>In the current implementation,  the source reader uses this method to forward the following events to the application:</p><ul> <li> <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.BufferingStarted\"/> </li> <li> <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.BufferingStopped\"/> </li> <li> <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.ConnectEnd\"/> </li> <li> <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.ConnectStart\"/> </li> <li> <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.ExtendedType\"/> </li> <li> <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.SourceCharacteristicsChanged\"/> </li> <li> <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.SourceMetadataChanged\"/> </li> </ul><p>This interface is available on Windows?Vista if Platform Update Supplement for Windows?Vista is installed.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSourceReaderCallback::OnEvent']/*\"/>\t\n            <msdn-id>dd743367</msdn-id>\t\n            <unmanaged>HRESULT IMFSourceReaderCallback::OnEvent([In] unsigned int dwStreamIndex,[In] IMFMediaEvent* pEvent)</unmanaged>\t\n            <unmanaged-short>IMFSourceReaderCallback::OnEvent</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.SourceResolver\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Creates a media source or a byte stream from a URL. This method is synchronous. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The <em>dwFlags</em> parameter must contain either the <strong><see cref=\"F:SharpDX.MediaFoundation.SourceResolverFlags.MediaSource\"/></strong> flag or the <strong><see cref=\"F:SharpDX.MediaFoundation.SourceResolverFlags.ByteStream\"/></strong> flag, but should not contain both.</p><p>For local files, you can pass the file name in the <em>pwszURL</em> parameter; the <code>file:</code> scheme is not required.</p><p><strong>Note</strong>??This method cannot be called remotely.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSourceResolver']/*\"/>\t\n            <msdn-id>ms702279</msdn-id>\t\n            <unmanaged>IMFSourceResolver</unmanaged>\t\n            <unmanaged-short>IMFSourceResolver</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SourceResolver.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.SourceResolver\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SourceResolver.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.SourceResolver\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.SourceResolver\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SourceResolver.CreateObjectFromURL(System.String,System.Int32,SharpDX.ComObject,SharpDX.MediaFoundation.ObjectType@,SharpDX.ComObject@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Creates a media source or a byte stream from a URL. This method is synchronous. </p>\t\n            </summary>\t\n            <param name=\"wszURLRef\"><dd> <p> Null-terminated string that contains the URL to resolve. </p> </dd></param>\t\n            <param name=\"dwFlags\"><dd> <p> Bitwise OR of one or more flags. See <strong>Source Resolver Flags</strong>. </p> </dd></param>\t\n            <param name=\"propsRef\"><dd> <p> Pointer to the <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interface of a property store. The method passes the property store to the scheme handler or byte-stream handler that creates the object. The handler can use the property store to configure the object. This parameter can be <strong><c>null</c></strong>. For more information, see Configuring a Media Source. </p> </dd></param>\t\n            <param name=\"objectTypeRef\"><dd> <p> Receives a member of the <strong><see cref=\"T:SharpDX.MediaFoundation.ObjectType\"/></strong> enumeration, specifying the type of object that was created. </p> </dd></param>\t\n            <param name=\"objectOut\"><dd> <p> Receives a reference to the object's <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interface. The caller must release the interface. </p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.SourceResolverMutuallyExclusiveFlags\"/></strong></dt> </dl> </td><td> <p> The <em>dwFlags</em> parameter contains mutually exclusive flags. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.UnsupportedScheme\"/></strong></dt> </dl> </td><td> <p> The URL scheme is not supported. </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>The <em>dwFlags</em> parameter must contain either the <strong><see cref=\"F:SharpDX.MediaFoundation.SourceResolverFlags.MediaSource\"/></strong> flag or the <strong><see cref=\"F:SharpDX.MediaFoundation.SourceResolverFlags.ByteStream\"/></strong> flag, but should not contain both.</p><p>For local files, you can pass the file name in the <em>pwszURL</em> parameter; the <code>file:</code> scheme is not required.</p><p><strong>Note</strong>??This method cannot be called remotely.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSourceResolver::CreateObjectFromURL']/*\"/>\t\n            <msdn-id>ms702279</msdn-id>\t\n            <unmanaged>HRESULT IMFSourceResolver::CreateObjectFromURL([In] const wchar_t* pwszURL,[In] unsigned int dwFlags,[In] IPropertyStore* pProps,[Out] MF_OBJECT_TYPE* pObjectType,[Out] IUnknown** ppObject)</unmanaged>\t\n            <unmanaged-short>IMFSourceResolver::CreateObjectFromURL</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SourceResolver.CreateObjectFromByteStream_(System.IntPtr,System.String,System.Int32,SharpDX.ComObject,SharpDX.MediaFoundation.ObjectType@,SharpDX.ComObject@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Creates a media source from a byte stream. This method is synchronous. </p>\t\n            </summary>\t\n            <param name=\"byteStreamRef\"><dd> <p> Pointer to the byte stream's <strong><see cref=\"T:SharpDX.MediaFoundation.IByteStream\"/></strong> interface. </p> </dd></param>\t\n            <param name=\"wszURLRef\"><dd> <p> Null-terminated string that contains the URL of the byte stream. The URL is optional and can be <strong><c>null</c></strong>. See Remarks for more information. </p> </dd></param>\t\n            <param name=\"dwFlags\"><dd> <p> Bitwise <strong>OR</strong> of flags. See <strong>Source Resolver Flags</strong>. </p> </dd></param>\t\n            <param name=\"propsRef\"><dd> <p> Pointer to the <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interface of a property store. The method passes the property store to the byte-stream handler. The byte-stream handler can use the property store to configure the media source. This parameter can be <strong><c>null</c></strong>. For more information, see Configuring a Media Source. </p> </dd></param>\t\n            <param name=\"objectTypeRef\"><dd> <p> Receives a member of the <strong><see cref=\"T:SharpDX.MediaFoundation.ObjectType\"/></strong> enumeration, specifying the type of object that was created. </p> </dd></param>\t\n            <param name=\"objectOut\"><dd> <p> Receives a reference to the media source's <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interface. The caller must release the interface. </p> </dd></param>\t\n            <returns><p> The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table. </p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.SourceResolverMutuallyExclusiveFlags\"/></strong></dt> </dl> </td><td> <p> The <em>dwFlags</em> parameter contains mutually exclusive flags. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.UnsupportedByteStreamType\"/></strong></dt> </dl> </td><td> <p> This byte stream is not supported. </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>The <em>dwFlags</em> parameter must contain the <strong><see cref=\"F:SharpDX.MediaFoundation.SourceResolverFlags.MediaSource\"/></strong> flag and should not contain the <strong><see cref=\"F:SharpDX.MediaFoundation.SourceResolverFlags.ByteStream\"/></strong> flag.</p><p>The source resolver attempts to find one or more byte-stream handlers for the byte stream, based on the file name extension of the URL, or the MIME type of the byte stream (or both). The URL is specified in the optional <em>pwszURL</em> parameter, and the MIME type may be specified in the <strong><see cref=\"F:SharpDX.MediaFoundation.ByteStreamAttributeKeys.ContentType\"/></strong> attribute on the byte stream. Byte-stream handlers are registered by file name extension or MIME type, or both, as described in Scheme Handlers and Byte-Stream Handlers. The caller should specify at least one of these values (both if possible):</p><ul> <li> Specify the URL in the <em>pwszURL</em> parameter. </li> <li> Specify the MIME type by setting the <strong><see cref=\"F:SharpDX.MediaFoundation.ByteStreamAttributeKeys.ContentType\"/></strong> attribute on the byte stream. (This attribute might be set already when you create the byte stream, depending on how the byte stream was created.) </li> </ul><p><strong>Note</strong>??This method cannot be called remotely.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSourceResolver::CreateObjectFromByteStream']/*\"/>\t\n            <msdn-id>ms704671</msdn-id>\t\n            <unmanaged>HRESULT IMFSourceResolver::CreateObjectFromByteStream([In] IMFByteStream* pByteStream,[In] const wchar_t* pwszURL,[In] unsigned int dwFlags,[In] IPropertyStore* pProps,[Out] MF_OBJECT_TYPE* pObjectType,[Out] IUnknown** ppObject)</unmanaged>\t\n            <unmanaged-short>IMFSourceResolver::CreateObjectFromByteStream</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SourceResolver.BeginCreateObjectFromURL(System.String,System.Int32,SharpDX.ComObject,SharpDX.ComObject@,SharpDX.MediaFoundation.AsyncCallback,SharpDX.ComObject)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Begins an asynchronous request to create a media source or a byte stream from a URL.</p>\t\n            </summary>\t\n            <param name=\"wszURLRef\"><dd> <p>Null-terminated string that contains the URL to resolve.</p> </dd></param>\t\n            <param name=\"dwFlags\"><dd> <p>Bitwise OR of flags. See <strong>Source Resolver Flags</strong>.</p> </dd></param>\t\n            <param name=\"propsRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interface of a property store. The method passes the property store to the scheme handler or byte-stream handler that creates the object. The handler can use the property store to configure the object. This parameter can be <strong><c>null</c></strong>. For more information, see Configuring a Media Source.</p> </dd></param>\t\n            <param name=\"iUnknownCancelCookieOut\"><dd> <p>Receives an <strong><see cref=\"T:SharpDX.ComObject\"/></strong> reference or the value <strong><c>null</c></strong>. If the value is not <strong><c>null</c></strong>, you can cancel the asynchronous operation by passing this reference to the <strong><see cref=\"M:SharpDX.MediaFoundation.SourceResolver.CancelObjectCreation(SharpDX.ComObject)\"/></strong> method. The caller must release the interface. This parameter can be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"callbackRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.AsyncCallback\"/></strong> interface of a callback object. The caller must implement this interface.</p> </dd></param>\t\n            <param name=\"unkStateRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interface of a state object, defined by the caller. This parameter can be <strong><c>null</c></strong>. You can use this object to hold state information. The object is returned to the caller when the callback is invoked.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.SourceResolverMutuallyExclusiveFlags\"/></strong></dt> </dl> </td><td> <p>The <em>dwFlags</em> parameter contains mutually exclusive flags.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.UnsupportedScheme\"/></strong></dt> </dl> </td><td> <p>The URL scheme is not supported.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>The <em>dwFlags</em> parameter must contain either the <see cref=\"F:SharpDX.MediaFoundation.SourceResolverFlags.MediaSource\"/> flag or the <see cref=\"F:SharpDX.MediaFoundation.SourceResolverFlags.ByteStream\"/> flag, but should not contain both.</p><p>For local files, you can pass the file name in the <em>pwszURL</em> parameter; the <code>file:</code> scheme is not required.</p><p>When the operation completes, the source resolver calls the <strong><see cref=\"M:SharpDX.MediaFoundation.AsyncCallback.Invoke(SharpDX.MediaFoundation.AsyncResult)\"/></strong> method. The <strong>Invoke</strong> method should call <strong><see cref=\"M:SharpDX.MediaFoundation.SourceResolver.EndCreateObjectFromURL(SharpDX.MediaFoundation.AsyncResult,SharpDX.MediaFoundation.ObjectType@,SharpDX.ComObject@)\"/></strong> to get a reference to the object that was created.</p><p>The usage of the <em>pProps</em> parameter depends on the implementation of the media source. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSourceResolver::BeginCreateObjectFromURL']/*\"/>\t\n            <msdn-id>ms702995</msdn-id>\t\n            <unmanaged>HRESULT IMFSourceResolver::BeginCreateObjectFromURL([In] const wchar_t* pwszURL,[In] unsigned int dwFlags,[In] IPropertyStore* pProps,[Out, Optional] IUnknown** ppIUnknownCancelCookie,[In] IMFAsyncCallback* pCallback,[In] IUnknown* punkState)</unmanaged>\t\n            <unmanaged-short>IMFSourceResolver::BeginCreateObjectFromURL</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SourceResolver.EndCreateObjectFromURL(SharpDX.MediaFoundation.AsyncResult,SharpDX.MediaFoundation.ObjectType@,SharpDX.ComObject@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Completes an asynchronous request to create an object from a URL. </p>\t\n            </summary>\t\n            <param name=\"resultRef\"><dd> <p> Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.AsyncResult\"/></strong> interface. Pass in the same reference that your callback object received in the <strong>Invoke</strong> method. </p> </dd></param>\t\n            <param name=\"objectTypeRef\"><dd> <p> Receives a member of the <strong><see cref=\"T:SharpDX.MediaFoundation.ObjectType\"/></strong> enumeration, specifying the type of object that was created. </p> </dd></param>\t\n            <param name=\"objectOut\"><dd> <p> Receives a reference to the media source's <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interface. The caller must release the interface. </p> </dd></param>\t\n            <returns><p> The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table. </p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded. </p> </td></tr> <tr><td> <dl> <dt><strong>E_ABORT</strong></dt> </dl> </td><td> <p> The operation was canceled. </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>Call this method from inside your application's <strong><see cref=\"M:SharpDX.MediaFoundation.AsyncCallback.Invoke(SharpDX.MediaFoundation.AsyncResult)\"/></strong> method.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSourceResolver::EndCreateObjectFromURL']/*\"/>\t\n            <msdn-id>ms702134</msdn-id>\t\n            <unmanaged>HRESULT IMFSourceResolver::EndCreateObjectFromURL([In] IMFAsyncResult* pResult,[Out] MF_OBJECT_TYPE* pObjectType,[Out] IUnknown** ppObject)</unmanaged>\t\n            <unmanaged-short>IMFSourceResolver::EndCreateObjectFromURL</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SourceResolver.BeginCreateObjectFromByteStream_(System.IntPtr,System.String,System.Int32,SharpDX.ComObject,SharpDX.ComObject@,SharpDX.MediaFoundation.AsyncCallback,SharpDX.ComObject)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Begins an asynchronous request to create a media source from a byte stream.</p>\t\n            </summary>\t\n            <param name=\"byteStreamRef\"><dd> <p>A reference to the byte stream's <strong><see cref=\"T:SharpDX.MediaFoundation.IByteStream\"/></strong> interface. </p> </dd></param>\t\n            <param name=\"wszURLRef\"><dd> <p>A null-terminated string that contains the original URL of the byte stream. This parameter can be <strong><c>null</c></strong>. </p> </dd></param>\t\n            <param name=\"dwFlags\"><dd> <p>A bitwise <strong>OR</strong> of one or more flags. See <strong>Source Resolver Flags</strong>. </p> </dd></param>\t\n            <param name=\"propsRef\"><dd> <p>A reference to the <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interface of a property store. The method passes the property store to the byte-stream handler. The byte-stream handler can use the property store to configure the media source. This parameter can be <strong><c>null</c></strong>. For more information, see Configuring a Media Source. </p> </dd></param>\t\n            <param name=\"iUnknownCancelCookieOut\"><dd> <p>Receives an <strong><see cref=\"T:SharpDX.ComObject\"/></strong> reference or the value <strong><c>null</c></strong>. If the value is not <strong><c>null</c></strong>, you can cancel the asynchronous operation by passing this reference to the <strong><see cref=\"M:SharpDX.MediaFoundation.SourceResolver.CancelObjectCreation(SharpDX.ComObject)\"/></strong> method. The caller must release the interface. This parameter can be <strong><c>null</c></strong>. </p> </dd></param>\t\n            <param name=\"callbackRef\"><dd> <p>A reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.AsyncCallback\"/></strong> interface of a callback object. The caller must implement this interface. </p> </dd></param>\t\n            <param name=\"unkStateRef\"><dd> <p>A oointer to the <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interface of a state object, defined by the caller. This parameter can be <strong><c>null</c></strong>. You can use this object to hold state information. The object is returned to the caller when the callback is invoked. </p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.SourceResolverMutuallyExclusiveFlags\"/></strong></dt> </dl> </td><td> <p>The <em>dwFlags</em> parameter contains mutually exclusive flags.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.UnsupportedByteStreamType\"/></strong></dt> </dl> </td><td> <p>The byte stream is not supported.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.ByteStreamNotSeekable\"/></strong></dt> </dl> </td><td> <p>The byte stream does not support seeking.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>The <em>dwFlags</em> parameter must contain the <strong><see cref=\"F:SharpDX.MediaFoundation.SourceResolverFlags.MediaSource\"/></strong> flag and should not contain the <strong><see cref=\"F:SharpDX.MediaFoundation.SourceResolverFlags.ByteStream\"/></strong> flag.</p><p>The source resolver attempts to find one or more byte-stream handlers for the byte stream, based on the file name extension of the URL, or the MIME type of the byte stream (or both). The URL is specified in the optional <em>pwszURL</em> parameter, and the MIME type may be specified in the <strong><see cref=\"F:SharpDX.MediaFoundation.ByteStreamAttributeKeys.ContentType\"/></strong> attribute on the byte stream. Byte-stream handlers are registered by file name extension or MIME type, or both, as described in Scheme Handlers and Byte-Stream Handlers. The caller should specify at least one of these values.</p><p>When the operation completes, the source resolver calls the <strong><see cref=\"M:SharpDX.MediaFoundation.AsyncCallback.Invoke(SharpDX.MediaFoundation.AsyncResult)\"/></strong> method. The <strong>Invoke</strong> method should call <strong><see cref=\"M:SharpDX.MediaFoundation.SourceResolver.EndCreateObjectFromByteStream(SharpDX.MediaFoundation.AsyncResult,SharpDX.MediaFoundation.ObjectType@,SharpDX.ComObject@)\"/></strong> to get a reference to the media source.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSourceResolver::BeginCreateObjectFromByteStream']/*\"/>\t\n            <msdn-id>ms698915</msdn-id>\t\n            <unmanaged>HRESULT IMFSourceResolver::BeginCreateObjectFromByteStream([In] IMFByteStream* pByteStream,[In] const wchar_t* pwszURL,[In] unsigned int dwFlags,[In] IPropertyStore* pProps,[Out, Optional] IUnknown** ppIUnknownCancelCookie,[In] IMFAsyncCallback* pCallback,[In] IUnknown* punkState)</unmanaged>\t\n            <unmanaged-short>IMFSourceResolver::BeginCreateObjectFromByteStream</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SourceResolver.EndCreateObjectFromByteStream(SharpDX.MediaFoundation.AsyncResult,SharpDX.MediaFoundation.ObjectType@,SharpDX.ComObject@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Completes an asynchronous request to create a media source from a byte stream.</p>\t\n            </summary>\t\n            <param name=\"resultRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.AsyncResult\"/></strong> interface. Pass in the same reference that your callback object received in the <strong>Invoke</strong> method.</p> </dd></param>\t\n            <param name=\"objectTypeRef\"><dd> <p>Receives a member of the <strong><see cref=\"T:SharpDX.MediaFoundation.ObjectType\"/></strong> enumeration, specifying the type of object that was created.</p> </dd></param>\t\n            <param name=\"objectOut\"><dd> <p>Receives a reference to the media source's <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interface. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong>E_ABORT</strong></dt> </dl> </td><td> <p>The application canceled the operation.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>Call this method from inside your application's <strong><see cref=\"M:SharpDX.MediaFoundation.AsyncCallback.Invoke(SharpDX.MediaFoundation.AsyncResult)\"/></strong> method.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSourceResolver::EndCreateObjectFromByteStream']/*\"/>\t\n            <msdn-id>ms697199</msdn-id>\t\n            <unmanaged>HRESULT IMFSourceResolver::EndCreateObjectFromByteStream([In] IMFAsyncResult* pResult,[Out] MF_OBJECT_TYPE* pObjectType,[Out] IUnknown** ppObject)</unmanaged>\t\n            <unmanaged-short>IMFSourceResolver::EndCreateObjectFromByteStream</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SourceResolver.CancelObjectCreation(SharpDX.ComObject)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Cancels an asynchronous request to create an object. </p>\t\n            </summary>\t\n            <param name=\"iUnknownCancelCookieRef\"><dd> <p> Pointer to the <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interface that was returned in the <em>ppIUnknownCancelCookie</em> parameter of the <strong><see cref=\"M:SharpDX.MediaFoundation.SourceResolver.BeginCreateObjectFromByteStream_(System.IntPtr,System.String,System.Int32,SharpDX.ComObject,SharpDX.ComObject@,SharpDX.MediaFoundation.AsyncCallback,SharpDX.ComObject)\"/></strong> or <strong><see cref=\"M:SharpDX.MediaFoundation.SourceResolver.BeginCreateObjectFromURL(System.String,System.Int32,SharpDX.ComObject,SharpDX.ComObject@,SharpDX.MediaFoundation.AsyncCallback,SharpDX.ComObject)\"/></strong> method. </p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p> You can use this method to cancel a previous call to <strong>BeginCreateObjectFromByteStream</strong> or <strong>BeginCreateObjectFromURL</strong>. Because these methods are asynchronous, however, they might be completed before the operation can be canceled. Therefore, your callback might still be invoked after you call this method. </p><p><strong>Note</strong>??This method cannot be called remotely.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSourceResolver::CancelObjectCreation']/*\"/>\t\n            <msdn-id>ms698845</msdn-id>\t\n            <unmanaged>HRESULT IMFSourceResolver::CancelObjectCreation([In] IUnknown* pIUnknownCancelCookie)</unmanaged>\t\n            <unmanaged-short>IMFSourceResolver::CancelObjectCreation</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.SSLCertificateManager\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Indicates whether the server SSL certificate must be verified by the caller, Media Foundation,  or the <strong><see cref=\"T:SharpDX.MediaFoundation.SSLCertificateManager\"/></strong> implementation class.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSSLCertificateManager']/*\"/>\t\n            <msdn-id>dd374673</msdn-id>\t\n            <unmanaged>IMFSSLCertificateManager</unmanaged>\t\n            <unmanaged-short>IMFSSLCertificateManager</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SSLCertificateManager.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.SSLCertificateManager\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SSLCertificateManager.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.SSLCertificateManager\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.SSLCertificateManager\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SSLCertificateManager.GetClientCertificate(System.String,System.Byte[],System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Gets the client SSL certificate synchronously.</p>\t\n            </summary>\t\n            <param name=\"szURLRef\"><dd> <p>Pointer to a string that contains the URL for which a client-side SSL certificate is required. Media Foundation can resolve the scheme and send the request to the server.</p> </dd></param>\t\n            <param name=\"bDataOut\"><dd> <p>Pointer to the buffer that stores the certificate.This caller must free the buffer by calling <strong>CoTaskMemFree</strong>.</p> </dd></param>\t\n            <param name=\"cbDataRef\"><dd> <p>Pointer to a <strong>DWORD</strong> variable that receives the number of bytes required to hold the certificate data in the buffer pointed by <em>*ppbData</em>.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSSLCertificateManager::GetClientCertificate']/*\"/>\t\n            <msdn-id>dd374674</msdn-id>\t\n            <unmanaged>HRESULT IMFSSLCertificateManager::GetClientCertificate([In] const wchar_t* pszURL,[Out, Buffer] unsigned char** ppbData,[Out] unsigned int* pcbData)</unmanaged>\t\n            <unmanaged-short>IMFSSLCertificateManager::GetClientCertificate</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SSLCertificateManager.BeginGetClientCertificate(System.String,SharpDX.MediaFoundation.AsyncCallback,SharpDX.ComObject)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Starts an asynchronous call to get the client SSL certificate.</p>\t\n            </summary>\t\n            <param name=\"szURLRef\"><dd> <p>A null-terminated string that contains the URL for which a client-side SSL certificate is required. Media Foundation can  resolve the scheme and send the request to the server.</p> </dd></param>\t\n            <param name=\"callbackRef\"><dd> <p>A reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.AsyncCallback\"/></strong> interface of a callback object. The caller must implement this interface.</p> </dd></param>\t\n            <param name=\"stateRef\"><dd> <p>A reference to the <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interface of a state object, defined by the caller. This parameter can be <strong><c>null</c></strong>. You can use this object to hold state information. The object is returned to the caller when the callback is invoked.  </p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>When the operation completes, the callback object's <strong><see cref=\"M:SharpDX.MediaFoundation.AsyncCallback.Invoke(SharpDX.MediaFoundation.AsyncResult)\"/></strong> method is called. At that point, the application should call <strong><see cref=\"M:SharpDX.MediaFoundation.SSLCertificateManager.EndGetClientCertificate(SharpDX.MediaFoundation.AsyncResult,System.Byte[],System.Int32@)\"/></strong> to complete the asynchronous request.  </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSSLCertificateManager::BeginGetClientCertificate']/*\"/>\t\n            <msdn-id>dd374671</msdn-id>\t\n            <unmanaged>HRESULT IMFSSLCertificateManager::BeginGetClientCertificate([In] const wchar_t* pszURL,[In] IMFAsyncCallback* pCallback,[In] IUnknown* pState)</unmanaged>\t\n            <unmanaged-short>IMFSSLCertificateManager::BeginGetClientCertificate</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SSLCertificateManager.EndGetClientCertificate(SharpDX.MediaFoundation.AsyncResult,System.Byte[],System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Completes an asynchronous request to get the client SSL certificate. </p>\t\n            </summary>\t\n            <param name=\"resultRef\"><dd> <p>A reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.AsyncResult\"/></strong> interface. Pass in the same reference that your callback object received in the <strong><see cref=\"M:SharpDX.MediaFoundation.AsyncCallback.Invoke(SharpDX.MediaFoundation.AsyncResult)\"/></strong> method.  </p> </dd></param>\t\n            <param name=\"bDataOut\"><dd> <p>Receives a reference to the buffer that stores the certificate.The caller must free the buffer by calling <strong>CoTaskMemFree</strong>.</p> </dd></param>\t\n            <param name=\"cbDataRef\"><dd> <p>Receives the size of the <em>ppbData</em> buffer, in bytes.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>Call this method after the <strong><see cref=\"M:SharpDX.MediaFoundation.SSLCertificateManager.BeginGetClientCertificate(System.String,SharpDX.MediaFoundation.AsyncCallback,SharpDX.ComObject)\"/></strong> method completes asynchronously. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSSLCertificateManager::EndGetClientCertificate']/*\"/>\t\n            <msdn-id>dd374672</msdn-id>\t\n            <unmanaged>HRESULT IMFSSLCertificateManager::EndGetClientCertificate([In] IMFAsyncResult* pResult,[Out, Buffer] unsigned char** ppbData,[Out] unsigned int* pcbData)</unmanaged>\t\n            <unmanaged-short>IMFSSLCertificateManager::EndGetClientCertificate</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SSLCertificateManager.GetCertificatePolicy(System.String,SharpDX.Bool,SharpDX.Bool)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Indicates whether the server SSL certificate must be verified by the caller, Media Foundation,  or the <strong><see cref=\"T:SharpDX.MediaFoundation.SSLCertificateManager\"/></strong> implementation class.</p>\t\n            </summary>\t\n            <param name=\"szURLRef\"><dd> <p> Pointer to a string that contains the URL that  is sent to the server.</p> </dd></param>\t\n            <param name=\"fOverrideAutomaticCheckRef\"><dd> <p>Pointer to a <strong><see cref=\"T:SharpDX.Bool\"/></strong> value. Set to <strong>TRUE</strong> if <strong><see cref=\"M:SharpDX.MediaFoundation.SSLCertificateManager.OnServerCertificate(System.String,System.Byte[],System.Int32,SharpDX.Bool)\"/></strong> is used to verify the server certificate.Set to <strong><see cref=\"F:SharpDX.Result.False\"/></strong> if Media Foundation verifies the server certificate  by using the certificates in the Windows certificate store.</p> </dd></param>\t\n            <param name=\"fClientCertificateAvailableRef\"><dd> <p>Pointer to a <strong><see cref=\"T:SharpDX.Bool\"/></strong> value. Set to <strong>TRUE</strong> if the SSL certificate for the client is available for immediate retrieval. Media Foundation  calls <strong><see cref=\"M:SharpDX.MediaFoundation.SSLCertificateManager.GetClientCertificate(System.String,System.Byte[],System.Int32@)\"/></strong> to obtain the client certificate synchronously. If the value is set to <strong><see cref=\"F:SharpDX.Result.False\"/></strong>, Media Foundation obtains the client SSL certificate with an asynchronous call to <strong><see cref=\"M:SharpDX.MediaFoundation.SSLCertificateManager.BeginGetClientCertificate(System.String,SharpDX.MediaFoundation.AsyncCallback,SharpDX.ComObject)\"/></strong>.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSSLCertificateManager::GetCertificatePolicy']/*\"/>\t\n            <msdn-id>dd374673</msdn-id>\t\n            <unmanaged>HRESULT IMFSSLCertificateManager::GetCertificatePolicy([In] const wchar_t* pszURL,[In] BOOL* pfOverrideAutomaticCheck,[In] BOOL* pfClientCertificateAvailable)</unmanaged>\t\n            <unmanaged-short>IMFSSLCertificateManager::GetCertificatePolicy</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.SSLCertificateManager.OnServerCertificate(System.String,System.Byte[],System.Int32,SharpDX.Bool)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Called by Media Foundation when the server SSL certificate has been received; indicates whether the server certificate is accepted.</p>\t\n            </summary>\t\n            <param name=\"szURLRef\"><dd> <p>Pointer to a string that contains the URL used to send the request to the server, and for which a server-side SSL certificate has been received.</p> </dd></param>\t\n            <param name=\"bDataRef\"><dd> <p>Pointer to a buffer that contains the server SSL certificate.</p> </dd></param>\t\n            <param name=\"cbData\"><dd> <p>Pointer to a <strong>DWORD</strong> variable that indicates the size of <em>pbData</em> in bytes.</p> </dd></param>\t\n            <param name=\"fIsGoodRef\"><dd> <p>Pointer to a <strong><see cref=\"T:SharpDX.Bool\"/></strong> variable that indicates whether the certificate is accepted.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFSSLCertificateManager::OnServerCertificate']/*\"/>\t\n            <msdn-id>dd374675</msdn-id>\t\n            <unmanaged>HRESULT IMFSSLCertificateManager::OnServerCertificate([In] const wchar_t* pszURL,[In, Buffer] unsigned char* pbData,[In] unsigned int cbData,[In] BOOL* pfIsGood)</unmanaged>\t\n            <unmanaged-short>IMFSSLCertificateManager::OnServerCertificate</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.StreamDescriptor\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Gets information about one stream in a media source. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>A presentation descriptor contains one or more stream descriptors. To get the stream descriptors from a presentation descriptor, call <strong><see cref=\"M:SharpDX.MediaFoundation.PresentationDescriptor.GetStreamDescriptorByIndex(System.Int32,SharpDX.Bool@,SharpDX.MediaFoundation.StreamDescriptor@)\"/></strong>. To create a new stream descriptor, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateStreamDescriptor(System.Int32,System.Int32,SharpDX.MediaFoundation.MediaType[],SharpDX.MediaFoundation.StreamDescriptor@)\"/></strong>.</p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFStreamDescriptor']/*\"/>\t\n            <msdn-id>ms701622</msdn-id>\t\n            <unmanaged>IMFStreamDescriptor</unmanaged>\t\n            <unmanaged-short>IMFStreamDescriptor</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.StreamDescriptor.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.StreamDescriptor\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.StreamDescriptor.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.StreamDescriptor\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.StreamDescriptor\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.StreamDescriptor.GetStreamIdentifier(System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves an identifier for the stream.</p>\t\n            </summary>\t\n            <param name=\"dwStreamIdentifierRef\"><dd> <p>Receives the stream identifier.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>The stream identifier uniquely identifies a stream within a presentation. It does not change throughout the lifetime of the stream. For example, if the presentation changes while the source is running, the index number of the stream may change, but the stream identifier does not.</p><p>In general, stream identifiers do not have a specific meaning, other than to identify the stream. Some media sources may assign stream identifiers based on meaningful values, such as packet identifiers, but this depends on the implementation.</p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFStreamDescriptor::GetStreamIdentifier']/*\"/>\t\n            <msdn-id>ms703852</msdn-id>\t\n            <unmanaged>HRESULT IMFStreamDescriptor::GetStreamIdentifier([Out] unsigned int* pdwStreamIdentifier)</unmanaged>\t\n            <unmanaged-short>IMFStreamDescriptor::GetStreamIdentifier</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.StreamDescriptor.GetMediaTypeHandler(SharpDX.MediaFoundation.MediaTypeHandler@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves a media type handler for the stream. The media type handler can be used to enumerate supported media types for the stream, get the current media type, and set the media type.</p>\t\n            </summary>\t\n            <param name=\"mediaTypeHandlerOut\"><dd> <p>Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaTypeHandler\"/></strong> interface. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFStreamDescriptor::GetMediaTypeHandler']/*\"/>\t\n            <msdn-id>ms700210</msdn-id>\t\n            <unmanaged>HRESULT IMFStreamDescriptor::GetMediaTypeHandler([Out] IMFMediaTypeHandler** ppMediaTypeHandler)</unmanaged>\t\n            <unmanaged-short>IMFStreamDescriptor::GetMediaTypeHandler</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.StreamDescriptor.StreamIdentifier\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves an identifier for the stream.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The stream identifier uniquely identifies a stream within a presentation. It does not change throughout the lifetime of the stream. For example, if the presentation changes while the source is running, the index number of the stream may change, but the stream identifier does not.</p><p>In general, stream identifiers do not have a specific meaning, other than to identify the stream. Some media sources may assign stream identifiers based on meaningful values, such as packet identifiers, but this depends on the implementation.</p><p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFStreamDescriptor::GetStreamIdentifier']/*\"/>\t\n            <msdn-id>ms703852</msdn-id>\t\n            <unmanaged>GetStreamIdentifier</unmanaged>\t\n            <unmanaged-short>GetStreamIdentifier</unmanaged-short>\t\n            <unmanaged>HRESULT IMFStreamDescriptor::GetStreamIdentifier([Out] unsigned int* pdwStreamIdentifier)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.StreamDescriptor.MediaTypeHandler\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves a media type handler for the stream. The media type handler can be used to enumerate supported media types for the stream, get the current media type, and set the media type.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFStreamDescriptor::GetMediaTypeHandler']/*\"/>\t\n            <msdn-id>ms700210</msdn-id>\t\n            <unmanaged>GetMediaTypeHandler</unmanaged>\t\n            <unmanaged-short>GetMediaTypeHandler</unmanaged-short>\t\n            <unmanaged>HRESULT IMFStreamDescriptor::GetMediaTypeHandler([Out] IMFMediaTypeHandler** ppMediaTypeHandler)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.StreamingSinkConfig\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Called by the streaming media client before the Media Session starts streaming to specify the byte offset or the time offset.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFStreamingSinkConfig']/*\"/>\t\n            <msdn-id>dd374677</msdn-id>\t\n            <unmanaged>IMFStreamingSinkConfig</unmanaged>\t\n            <unmanaged-short>IMFStreamingSinkConfig</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.StreamingSinkConfig.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.StreamingSinkConfig\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.StreamingSinkConfig.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.StreamingSinkConfig\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.StreamingSinkConfig\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.StreamingSinkConfig.StartStreaming(SharpDX.Bool,System.Int64)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Called by the streaming media client before the Media Session starts streaming to specify the byte offset or the time offset.</p>\t\n            </summary>\t\n            <param name=\"fSeekOffsetIsByteOffset\"><dd> <p> A Boolean value that specifies whether <em>qwSeekOffset</em> gives a byte offset of a time offset.</p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td><dl> <dt><strong>TRUE</strong></dt> </dl> </td><td> <p>The <em>qwSeekOffset</em> parameter specifies a byte offset.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.Result.False\"/></strong></dt> </dl> </td><td> <p>The <em>qwSeekOffset</em> parameter specifies the time position in 100-nanosecond units.</p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <param name=\"qwSeekOffset\"><dd> <p>A byte offset or a time offset, depending on the value passed in <em>fSeekOffsetIsByteOffset</em>.  Time offsets are specified in 100-nanosecond units.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFStreamingSinkConfig::StartStreaming']/*\"/>\t\n            <msdn-id>dd374677</msdn-id>\t\n            <unmanaged>HRESULT IMFStreamingSinkConfig::StartStreaming([In] BOOL fSeekOffsetIsByteOffset,[In] unsigned longlong qwSeekOffset)</unmanaged>\t\n            <unmanaged-short>IMFStreamingSinkConfig::StartStreaming</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.StreamSink\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Places a marker in the stream. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This method causes the stream sink to send an <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.StreamSinkMarker\"/> event after the stream sink consumes all of the samples that were delivered up to this point (before the call to <strong>PlaceMarker</strong>).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFStreamSink']/*\"/>\t\n            <msdn-id>ms703026</msdn-id>\t\n            <unmanaged>IMFStreamSink</unmanaged>\t\n            <unmanaged-short>IMFStreamSink</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.StreamSink.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.StreamSink\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.StreamSink.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.StreamSink\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.StreamSink\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.StreamSink.GetMediaSink(SharpDX.MediaFoundation.MediaSink@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves the media sink that owns this stream sink.</p>\t\n            </summary>\t\n            <param name=\"mediaSinkOut\"><dd> <p>Receives a reference to the media sink's <strong><see cref=\"T:SharpDX.MediaFoundation.MediaSink\"/></strong> interface. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/></strong></dt> </dl> </td><td> <p>The media sink's <strong>Shutdown</strong> method has been called.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.StreamsInkRemoved\"/></strong></dt> </dl> </td><td> <p>This stream was removed from the media sink and is no longer valid.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFStreamSink::GetMediaSink']/*\"/>\t\n            <msdn-id>ms699003</msdn-id>\t\n            <unmanaged>HRESULT IMFStreamSink::GetMediaSink([Out] IMFMediaSink** ppMediaSink)</unmanaged>\t\n            <unmanaged-short>IMFStreamSink::GetMediaSink</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.StreamSink.GetIdentifier(System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves the stream identifier for this stream sink.</p>\t\n            </summary>\t\n            <param name=\"dwIdentifierRef\"><dd> <p>Receives the stream identifier. If this stream sink was added by calling <strong><see cref=\"M:SharpDX.MediaFoundation.MediaSink.AddStreamSink(System.Int32,SharpDX.MediaFoundation.MediaType,SharpDX.MediaFoundation.StreamSink@)\"/></strong>, the stream identifier is in the <em>dwStreamSinkIdentifier</em> parameter of that method. Otherwise, the media sink defines the identifier.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/></strong></dt> </dl> </td><td> <p>The media sink's <strong>Shutdown</strong> method has been called.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.StreamsInkRemoved\"/></strong></dt> </dl> </td><td> <p>This stream was removed from the media sink and is no longer valid.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFStreamSink::GetIdentifier']/*\"/>\t\n            <msdn-id>ms702129</msdn-id>\t\n            <unmanaged>HRESULT IMFStreamSink::GetIdentifier([Out] unsigned int* pdwIdentifier)</unmanaged>\t\n            <unmanaged-short>IMFStreamSink::GetIdentifier</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.StreamSink.GetMediaTypeHandler(SharpDX.MediaFoundation.MediaTypeHandler@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves the media type handler for the stream sink. You can use the media type handler to find which formats the stream supports, and to set the media type on the stream.</p>\t\n            </summary>\t\n            <param name=\"handlerOut\"><dd> <p>Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaTypeHandler\"/></strong> interface. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/></strong></dt> </dl> </td><td> <p>The media sink's <strong>Shutdown</strong> method has been called.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.StreamsInkRemoved\"/></strong></dt> </dl> </td><td> <p>This stream was removed from the media sink and is no longer valid.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>If the stream sink currently does not support any media types, this method returns a media type handler that fails any calls to <strong><see cref=\"M:SharpDX.MediaFoundation.MediaTypeHandler.GetCurrentMediaType(SharpDX.MediaFoundation.MediaType@)\"/></strong> and <strong><see cref=\"M:SharpDX.MediaFoundation.MediaTypeHandler.IsMediaTypeSupported(SharpDX.MediaFoundation.MediaType,SharpDX.MediaFoundation.MediaType@)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFStreamSink::GetMediaTypeHandler']/*\"/>\t\n            <msdn-id>ms700107</msdn-id>\t\n            <unmanaged>HRESULT IMFStreamSink::GetMediaTypeHandler([Out] IMFMediaTypeHandler** ppHandler)</unmanaged>\t\n            <unmanaged-short>IMFStreamSink::GetMediaTypeHandler</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.StreamSink.ProcessSample(SharpDX.MediaFoundation.Sample)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Delivers a sample to the stream. The media sink processes the sample.</p>\t\n            </summary>\t\n            <param name=\"sampleRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.Sample\"/></strong> interface of a sample that contains valid data for the stream.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidStateTransition\"/></strong></dt> </dl> </td><td> <p>The media sink is in the wrong state to receive a sample. For example, preroll is complete but the presenation clock has not started yet.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidTimestamp\"/></strong></dt> </dl> </td><td> <p>The sample has an invalid time stamp. See Remarks.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidRequest\"/></strong></dt> </dl> </td><td> <p>The media sink is paused or stopped and cannot process the sample.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.NoClock\"/></strong></dt> </dl> </td><td> <p>The presentation clock was not set. Call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaSink.SetPresentationClock(SharpDX.MediaFoundation.PresentationClock)\"/></strong>.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.NoSampleTimestamp\"/></strong></dt> </dl> </td><td> <p>The sample does not have a time stamp.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.NotInitializeD\"/></strong></dt> </dl> </td><td> <p>The stream sink has not been initialized.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/></strong></dt> </dl> </td><td> <p>The media sink's <strong>Shutdown</strong> method has been called.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.StreamsInkRemoved\"/></strong></dt> </dl> </td><td> <p>This stream was removed from the media sink and is no longer valid.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>Call this method when the stream sink sends an <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.StreamSinkRequestSample\"/> event.</p><p>This method can return <see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidTimestamp\"/> for various reasons, depending on the implementation of the media sink:</p><ul> <li> <p>Negative time stamps.</p> </li> <li> <p>Time stamps that jump backward (within the same stream).</p> </li> <li> <p>The time stamps for one stream have drifted too far from the time stamps on another stream within the same media sink (for example, an archive sink that multiplexes the streams).</p> </li> </ul><p>Not every media sink returns an error code in these situations.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFStreamSink::ProcessSample']/*\"/>\t\n            <msdn-id>ms696208</msdn-id>\t\n            <unmanaged>HRESULT IMFStreamSink::ProcessSample([In, Optional] IMFSample* pSample)</unmanaged>\t\n            <unmanaged-short>IMFStreamSink::ProcessSample</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.StreamSink.PlaceMarker(SharpDX.MediaFoundation.StreamsInkMarkerType,SharpDX.Win32.Variant,SharpDX.Win32.Variant)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Places a marker in the stream. </p>\t\n            </summary>\t\n            <param name=\"eMarkerType\"><dd> <p> Specifies the marker type, as a member of the <strong><see cref=\"T:SharpDX.MediaFoundation.StreamsInkMarkerType\"/></strong> enumeration. </p> </dd></param>\t\n            <param name=\"varMarkerValueRef\"><dd> <p> Optional reference to a <strong><see cref=\"T:SharpDX.Win32.Variant\"/></strong> that contains additional information related to the marker. The meaning of this value depends on the marker type. This parameter can be <strong><c>null</c></strong>. </p> </dd></param>\t\n            <param name=\"varContextValueRef\"><dd> <p> Optional reference to a <strong><see cref=\"T:SharpDX.Win32.Variant\"/></strong> that is attached to the <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.StreamSinkMarker\"/> event. Call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaEvent.GetValue(SharpDX.Win32.Variant@)\"/></strong> to get this value from the event. The caller can use this information for any purpose. This parameter can be <strong><c>null</c></strong>. </p> </dd></param>\t\n            <returns><p> The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table. </p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></strong></dt> </dl> </td><td> <p> The method succeeded. </p> </td></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/></strong></strong></dt> </dl> </td><td> <p> The media sink's <strong>Shutdown</strong> method has been called. </p> </td></tr> <tr><td> <dl> <dt><strong><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.StreamsInkRemoved\"/></strong></strong></dt> </dl> </td><td> <p> This stream was removed from the media sink and is no longer valid. </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>This method causes the stream sink to send an <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.StreamSinkMarker\"/> event after the stream sink consumes all of the samples that were delivered up to this point (before the call to <strong>PlaceMarker</strong>).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFStreamSink::PlaceMarker']/*\"/>\t\n            <msdn-id>ms703026</msdn-id>\t\n            <unmanaged>HRESULT IMFStreamSink::PlaceMarker([In] MFSTREAMSINK_MARKER_TYPE eMarkerType,[In] const PROPVARIANT* pvarMarkerValue,[In] const PROPVARIANT* pvarContextValue)</unmanaged>\t\n            <unmanaged-short>IMFStreamSink::PlaceMarker</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.StreamSink.Flush\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Causes the stream sink to drop any samples that it has received and has not rendered yet.</p>\t\n            </summary>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.NotInitializeD\"/></strong></dt> </dl> </td><td> <p>The stream sink has not been initialized yet. You might need to set a media type.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/></strong></dt> </dl> </td><td> <p>The media sink's <strong>Shutdown</strong> method has been called.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.StreamsInkRemoved\"/></strong></dt> </dl> </td><td> <p>This stream was removed from the media sink and is no longer valid.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>If any samples are still queued from previous calls to the <strong><see cref=\"M:SharpDX.MediaFoundation.StreamSink.ProcessSample(SharpDX.MediaFoundation.Sample)\"/></strong> method, the media sink immediately discards them, without processing them. This can cause a glitch in the rendered output. The running state of the sink (running, paused, or stopped) does not change.</p><p>Any pending marker events from the <strong><see cref=\"M:SharpDX.MediaFoundation.StreamSink.PlaceMarker(SharpDX.MediaFoundation.StreamsInkMarkerType,SharpDX.Win32.Variant,SharpDX.Win32.Variant)\"/></strong> method are dispatched immediately, with the status code E_ABORT.</p><p>This method is synchronous. It does not return until the sink has discarded all pending samples.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFStreamSink::Flush']/*\"/>\t\n            <msdn-id>ms697054</msdn-id>\t\n            <unmanaged>HRESULT IMFStreamSink::Flush()</unmanaged>\t\n            <unmanaged-short>IMFStreamSink::Flush</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.StreamSink.MediaSink\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves the media sink that owns this stream sink.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFStreamSink::GetMediaSink']/*\"/>\t\n            <msdn-id>ms699003</msdn-id>\t\n            <unmanaged>GetMediaSink</unmanaged>\t\n            <unmanaged-short>GetMediaSink</unmanaged-short>\t\n            <unmanaged>HRESULT IMFStreamSink::GetMediaSink([Out] IMFMediaSink** ppMediaSink)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.StreamSink.Identifier\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves the stream identifier for this stream sink.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFStreamSink::GetIdentifier']/*\"/>\t\n            <msdn-id>ms702129</msdn-id>\t\n            <unmanaged>GetIdentifier</unmanaged>\t\n            <unmanaged-short>GetIdentifier</unmanaged-short>\t\n            <unmanaged>HRESULT IMFStreamSink::GetIdentifier([Out] unsigned int* pdwIdentifier)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.StreamSink.MediaTypeHandler\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves the media type handler for the stream sink. You can use the media type handler to find which formats the stream supports, and to set the media type on the stream.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>If the stream sink currently does not support any media types, this method returns a media type handler that fails any calls to <strong><see cref=\"M:SharpDX.MediaFoundation.MediaTypeHandler.GetCurrentMediaType(SharpDX.MediaFoundation.MediaType@)\"/></strong> and <strong><see cref=\"M:SharpDX.MediaFoundation.MediaTypeHandler.IsMediaTypeSupported(SharpDX.MediaFoundation.MediaType,SharpDX.MediaFoundation.MediaType@)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFStreamSink::GetMediaTypeHandler']/*\"/>\t\n            <msdn-id>ms700107</msdn-id>\t\n            <unmanaged>GetMediaTypeHandler</unmanaged>\t\n            <unmanaged-short>GetMediaTypeHandler</unmanaged-short>\t\n            <unmanaged>HRESULT IMFStreamSink::GetMediaTypeHandler([Out] IMFMediaTypeHandler** ppHandler)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.TimecodeTranslate\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Converts between Society of Motion Picture and Television Engineers (SMPTE) time codes and 100-nanosecond time units.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>If an object supports this interface, it must expose the interface as a service. To get a reference to the interface, call <strong><see cref=\"M:SharpDX.MediaFoundation.ServiceProvider.GetService(System.Guid,System.Guid,System.IntPtr@)\"/></strong> with the service identifier <strong>MF_TIMECODE_SERVICE</strong>.</p><p>The Advanced Streaming Format (ASF) media source exposes this interface.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTimecodeTranslate']/*\"/>\t\n            <msdn-id>dd374678</msdn-id>\t\n            <unmanaged>IMFTimecodeTranslate</unmanaged>\t\n            <unmanaged-short>IMFTimecodeTranslate</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.TimecodeTranslate.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.TimecodeTranslate\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.TimecodeTranslate.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.TimecodeTranslate\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.TimecodeTranslate\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.TimecodeTranslate.BeginConvertTimecodeToHNS(SharpDX.Win32.Variant,SharpDX.MediaFoundation.AsyncCallback,SharpDX.ComObject)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Starts an asynchronous call to convert Society of Motion Picture and Television Engineers (SMPTE) time code to 100-nanosecond units.</p>\t\n            </summary>\t\n            <param name=\"propVarTimecodeRef\"><dd> <p>Time in SMPTE time code to convert. The <strong>vt</strong> member of the <strong><see cref=\"T:SharpDX.Win32.Variant\"/></strong> structure is set to <strong>VT_I8</strong>. The <strong>hVal.QuadPart</strong> member contains the time in binary coded decimal (BCD) form. See Remarks.</p> </dd></param>\t\n            <param name=\"callbackRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.AsyncCallback\"/></strong> interface of a callback object. The caller must implement this interface.</p> </dd></param>\t\n            <param name=\"unkStateRef\"><dd> <p>PPointer to the <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interface of a state object, defined by the caller. This parameter can be <strong><c>null</c></strong>. You can use this object to hold state information. The object is returned to the caller when the callback is invoked.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong>E_INVALIDARG</strong></dt> </dl> </td><td> <p><em>pPropVarTimecode</em> is not <strong>VT_I8</strong>.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/></strong></dt> </dl> </td><td> <p>The object's <strong>Shutdown</strong> method was called.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.ByteStreamNotSeekable\"/></strong></dt> </dl> </td><td> <p>The byte stream is not seekable. The time code cannot be read from the end of the byte stream.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>When the asynchronous method completes, the callback object's <strong><see cref=\"M:SharpDX.MediaFoundation.AsyncCallback.Invoke(SharpDX.MediaFoundation.AsyncResult)\"/></strong> method is called. At that point, the application must call <strong><see cref=\"M:SharpDX.MediaFoundation.TimecodeTranslate.EndConvertTimecodeToHNS(SharpDX.MediaFoundation.AsyncResult,System.Int64)\"/></strong> to complete the asynchronous request.</p><p>The value of <em>pPropVarTimecode</em> is a 64-bit unsigned value typed as a <strong>LONGLONG</strong>. The upper <strong>DWORD</strong> contains the range. (A <em>range</em> is a continuous series of time codes.) The lower <strong>DWORD</strong> contains the time code in the form of a hexadecimal number <em>0xhhmmssff</em>,  where each 2-byte sequence is read as a decimal value.</p><pre>void CreateTimeCode( DWORD dwFrames, DWORD dwSeconds, DWORD dwMinutes, DWORD dwHours, DWORD dwRange, <see cref=\"T:SharpDX.Win32.Variant\"/> *pvar )\t\n            { ULONGLONG ullTimecode = ((ULONGLONG)dwRange) &lt;&lt; 32; ullTimecode +=   dwFrames  % 10; ullTimecode += (( (ULONGLONG)dwFrames )  / 10) &lt;&lt; 4; ullTimecode += (( (ULONGLONG)dwSeconds ) % 10) &lt;&lt; 8; ullTimecode += (( (ULONGLONG)dwSeconds ) / 10) &lt;&lt; 12; ullTimecode += (( (ULONGLONG)dwMinutes ) % 10) &lt;&lt; 16; ullTimecode += (( (ULONGLONG)dwMinutes ) / 10) &lt;&lt; 20; ullTimecode += (( (ULONGLONG)dwHours )   % 10) &lt;&lt; 24; ullTimecode += (( (ULONGLONG)dwHours )   / 10) &lt;&lt; 28; pvar-&gt;vt = VT_I8; pvar-&gt;hVal.QuadPart = (LONGLONG)ullTimecode;\t\n            }\t\n            </pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTimecodeTranslate::BeginConvertTimecodeToHNS']/*\"/>\t\n            <msdn-id>dd374680</msdn-id>\t\n            <unmanaged>HRESULT IMFTimecodeTranslate::BeginConvertTimecodeToHNS([In] const PROPVARIANT* pPropVarTimecode,[In] IMFAsyncCallback* pCallback,[In] IUnknown* punkState)</unmanaged>\t\n            <unmanaged-short>IMFTimecodeTranslate::BeginConvertTimecodeToHNS</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.TimecodeTranslate.EndConvertTimecodeToHNS(SharpDX.MediaFoundation.AsyncResult,System.Int64)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Completes an asynchronous request to convert time in Society of Motion Picture and Television Engineers (SMPTE) time code to 100-nanosecond units.</p>\t\n            </summary>\t\n            <param name=\"resultRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.AsyncResult\"/></strong> interface. Pass in the same reference that your callback object received in the <strong><see cref=\"M:SharpDX.MediaFoundation.AsyncCallback.Invoke(SharpDX.MediaFoundation.AsyncResult)\"/></strong> method. </p> </dd></param>\t\n            <param name=\"hnsTimeRef\"><dd> <p>Receives the converted time.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>Call this method after the <strong><see cref=\"M:SharpDX.MediaFoundation.TimecodeTranslate.BeginConvertTimecodeToHNS(SharpDX.Win32.Variant,SharpDX.MediaFoundation.AsyncCallback,SharpDX.ComObject)\"/></strong> method completes asynchronously.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTimecodeTranslate::EndConvertTimecodeToHNS']/*\"/>\t\n            <msdn-id>dd374682</msdn-id>\t\n            <unmanaged>HRESULT IMFTimecodeTranslate::EndConvertTimecodeToHNS([In] IMFAsyncResult* pResult,[In] longlong* phnsTime)</unmanaged>\t\n            <unmanaged-short>IMFTimecodeTranslate::EndConvertTimecodeToHNS</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.TimecodeTranslate.BeginConvertHNSToTimecode(System.Int64,SharpDX.MediaFoundation.AsyncCallback,SharpDX.ComObject)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Starts an asynchronous call to convert time in 100-nanosecond units to Society of Motion Picture and Television Engineers (SMPTE) time code.</p>\t\n            </summary>\t\n            <param name=\"hnsTime\"><dd> <p>The time to convert, in 100-nanosecond units.</p> </dd></param>\t\n            <param name=\"callbackRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.AsyncCallback\"/></strong> interface of a callback object. The caller must implement this interface. </p> </dd></param>\t\n            <param name=\"unkStateRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interface of a state object, defined by the caller. This parameter can be <strong><c>null</c></strong>. You can use this object to hold state information. The object is returned to the caller when the callback is invoked.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/></strong></dt> </dl> </td><td> <p>The object's <strong>Shutdown</strong> method was called.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.ByteStreamNotSeekable\"/></strong></dt> </dl> </td><td> <p>The byte stream is not seekable. The time code cannot be read from the end of the byte stream.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>When the asynchronous method completes, the callback object's <strong><see cref=\"M:SharpDX.MediaFoundation.AsyncCallback.Invoke(SharpDX.MediaFoundation.AsyncResult)\"/></strong> method is called. At that point, the application must call <strong><see cref=\"M:SharpDX.MediaFoundation.TimecodeTranslate.EndConvertHNSToTimecode(SharpDX.MediaFoundation.AsyncResult,SharpDX.Win32.Variant)\"/></strong> to complete the asynchronous request.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTimecodeTranslate::BeginConvertHNSToTimecode']/*\"/>\t\n            <msdn-id>dd374679</msdn-id>\t\n            <unmanaged>HRESULT IMFTimecodeTranslate::BeginConvertHNSToTimecode([In] longlong hnsTime,[In] IMFAsyncCallback* pCallback,[In] IUnknown* punkState)</unmanaged>\t\n            <unmanaged-short>IMFTimecodeTranslate::BeginConvertHNSToTimecode</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.TimecodeTranslate.EndConvertHNSToTimecode(SharpDX.MediaFoundation.AsyncResult,SharpDX.Win32.Variant)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Completes an asynchronous request to convert time in 100-nanosecond units to Society of Motion Picture and Television Engineers (SMPTE) time code.</p>\t\n            </summary>\t\n            <param name=\"resultRef\"><dd> <p>A reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.AsyncResult\"/></strong> interface. Pass in the same reference that your callback object received in the <strong><see cref=\"M:SharpDX.MediaFoundation.AsyncCallback.Invoke(SharpDX.MediaFoundation.AsyncResult)\"/></strong> method.</p> </dd></param>\t\n            <param name=\"propVarTimecodeRef\"><dd> <p>A reference to a <strong><see cref=\"T:SharpDX.Win32.Variant\"/></strong> that receives the converted time. The <strong>vt</strong> member of the <strong><see cref=\"T:SharpDX.Win32.Variant\"/></strong> structure is set to VT_I8. The <strong>hVal.QuadPart</strong> member contains the converted time in binary coded decimal (BCD) form. See Remarks.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>Call this method after the <strong><see cref=\"M:SharpDX.MediaFoundation.TimecodeTranslate.BeginConvertHNSToTimecode(System.Int64,SharpDX.MediaFoundation.AsyncCallback,SharpDX.ComObject)\"/></strong> method completes asynchronously.</p><p>The value of <em>pPropVarTimecode</em> is a 64-bit unsigned value typed as a <strong>LONGLONG</strong>. The upper <strong>DWORD</strong> contains the range. (A <em>range</em> is a continuous series of time codes.) The lower <strong>DWORD</strong> contains the time code in the form of a hexadecimal number <em>0xhhmmssff</em>,  where each 2-byte sequence is read as a decimal value.</p><pre><see cref=\"T:SharpDX.Result\"/> ParseTimeCode( const <see cref=\"T:SharpDX.Win32.Variant\"/>&amp; var, DWORD *pdwRange, DWORD *pdwFrames, DWORD *pdwSeconds, DWORD *pdwMinutes, DWORD *pdwHours )\t\n            { if (var.vt != VT_I8) { return E_INVALIDARG; } ULONGLONG ullTimeCode = (ULONGLONG)var.hVal.QuadPart; DWORD dwTimecode = (DWORD)(ullTimeCode &amp; 0xFFFFFFFF); *pdwRange   = (DWORD)(ullTimeCode &gt;&gt; 32); *pdwFrames  =     dwTimecode &amp; 0x0000000F; *pdwFrames  += (( dwTimecode &amp; 0x000000F0) &gt;&gt; 4 )  * 10; *pdwSeconds =   ( dwTimecode &amp; 0x00000F00) &gt;&gt; 8; *pdwSeconds += (( dwTimecode &amp; 0x0000F000) &gt;&gt; 12 ) * 10; *pdwMinutes =   ( dwTimecode &amp; 0x000F0000) &gt;&gt; 16; *pdwMinutes += (( dwTimecode &amp; 0x00F00000) &gt;&gt; 20 ) * 10; *pdwHours   =   ( dwTimecode &amp; 0x0F000000) &gt;&gt; 24; *pdwHours   += (( dwTimecode &amp; 0xF0000000) &gt;&gt; 28 ) * 10; return <see cref=\"F:SharpDX.Result.Ok\"/>;\t\n            }\t\n            </pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTimecodeTranslate::EndConvertHNSToTimecode']/*\"/>\t\n            <msdn-id>dd374681</msdn-id>\t\n            <unmanaged>HRESULT IMFTimecodeTranslate::EndConvertHNSToTimecode([In] IMFAsyncResult* pResult,[In] PROPVARIANT* pPropVarTimecode)</unmanaged>\t\n            <unmanaged-short>IMFTimecodeTranslate::EndConvertHNSToTimecode</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.Timer\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Sets a timer that invokes a callback at the specified time.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>If the clock is stopped, the method returns MF_S_CLOCK_STOPPED. The callback will not be invoked until the clock is started.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTimer']/*\"/>\t\n            <msdn-id>ms696252</msdn-id>\t\n            <unmanaged>IMFTimer</unmanaged>\t\n            <unmanaged-short>IMFTimer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Timer.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.Timer\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Timer.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.Timer\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.Timer\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Timer.SetTimer(System.Int32,System.Int64,SharpDX.MediaFoundation.AsyncCallback,SharpDX.ComObject,SharpDX.ComObject@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Sets a timer that invokes a callback at the specified time.</p>\t\n            </summary>\t\n            <param name=\"dwFlags\"><dd> <p>Bitwise OR of zero or more flags from the <strong><see cref=\"T:SharpDX.MediaFoundation.TimerFlags\"/></strong> enumeration.</p> </dd></param>\t\n            <param name=\"llClockTime\"><dd> <p>The time at which the timer should fire, in units of the clock's frequency. The time is either absolute or relative to the current time, depending on the value of <em>dwFlags</em>.</p> </dd></param>\t\n            <param name=\"callbackRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.AsyncCallback\"/></strong> interface of a callback object. The caller must implement this interface. The callback's <strong>Invoke</strong> method is called at the time specified in the <em>llClockTime</em> parameter.</p> </dd></param>\t\n            <param name=\"unkStateRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interface of a state object, defined by the caller. This parameter can be <strong><c>null</c></strong>. You can use this object to hold state information. The object is returned to the caller when the callback is invoked.</p> </dd></param>\t\n            <param name=\"unkKeyOut\"><dd> <p>Receives a reference to the <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interface of a cancellation object. The caller must release the interface. To cancel the timer, pass this reference to the <strong><see cref=\"M:SharpDX.MediaFoundation.Timer.CancelTimer(SharpDX.ComObject)\"/></strong> method. This parameter can be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/></strong></dt> </dl> </td><td> <p>The clock was shut down.</p> </td></tr> <tr><td> <dl> <dt><strong>MF_S_CLOCK_STOPPED</strong></dt> </dl> </td><td> <p>The method succeeded, but the clock is stopped.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>If the clock is stopped, the method returns MF_S_CLOCK_STOPPED. The callback will not be invoked until the clock is started.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTimer::SetTimer']/*\"/>\t\n            <msdn-id>ms696252</msdn-id>\t\n            <unmanaged>HRESULT IMFTimer::SetTimer([In] unsigned int dwFlags,[In] longlong llClockTime,[In] IMFAsyncCallback* pCallback,[In] IUnknown* punkState,[In] IUnknown** ppunkKey)</unmanaged>\t\n            <unmanaged-short>IMFTimer::SetTimer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Timer.CancelTimer(SharpDX.ComObject)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Cancels a timer that was set using the <strong><see cref=\"M:SharpDX.MediaFoundation.Timer.SetTimer(System.Int32,System.Int64,SharpDX.MediaFoundation.AsyncCallback,SharpDX.ComObject,SharpDX.ComObject@)\"/></strong> method.</p>\t\n            </summary>\t\n            <param name=\"unkKeyRef\">No documentation.</param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>Because the timer is dispatched asynchronously, the application's timer callback might get invoked even if this method succeeds.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTimer::CancelTimer']/*\"/>\t\n            <msdn-id>ms696276</msdn-id>\t\n            <unmanaged>HRESULT IMFTimer::CancelTimer([In] IUnknown* punkKey)</unmanaged>\t\n            <unmanaged-short>IMFTimer::CancelTimer</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.TopoLoader\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Converts a partial topology into a full topology. The topology loader exposes this interface.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>To create the topology loader, call the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateTopoLoader(SharpDX.MediaFoundation.TopoLoader@)\"/></strong> function.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTopoLoader']/*\"/>\t\n            <msdn-id>ms697375</msdn-id>\t\n            <unmanaged>IMFTopoLoader</unmanaged>\t\n            <unmanaged-short>IMFTopoLoader</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.TopoLoader.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.TopoLoader\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.TopoLoader.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.TopoLoader\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.TopoLoader\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.TopoLoader.Load(SharpDX.MediaFoundation.Topology,SharpDX.MediaFoundation.Topology@,SharpDX.MediaFoundation.Topology)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Creates a fully loaded topology from the input partial topology. </p>\t\n            </summary>\t\n            <param name=\"inputTopoRef\"><dd> <p>A reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.Topology\"/></strong> interface of the partial topology to be resolved.</p> </dd></param>\t\n            <param name=\"outputTopoOut\"><dd> <p>Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.Topology\"/></strong> interface of the completed topology. The caller must release the interface.</p> </dd></param>\t\n            <param name=\"currentTopoRef\"><dd> <p> A reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.Topology\"/></strong> interface of the previous full topology. The topology loader can re-use objects from this topology in the new topology. This parameter can be <strong><c>null</c></strong>. See Remarks. </p> </dd></param>\t\n            <returns><p> The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table. </p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.TopoSinkActivatesUnsupported\"/></strong></dt> </dl> </td><td> <p>One or more output nodes contain <strong><see cref=\"T:SharpDX.MediaFoundation.Activate\"/></strong> references. The caller must bind the output nodes to media sinks. See  Binding Output Nodes to Media Sinks.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> This method creates any intermediate transforms that are needed to complete the topology. It also sets the input and output media types on all of the objects in the topology. If the method succeeds, the full topology is returned in the <em>ppOutputTopo</em> parameter. </p><p> You can use the <em>pCurrentTopo</em> parameter to provide a full topology that was previously loaded. If this topology contains objects that are needed in the new topology, the topology loader can re-use them without creating them again. This caching can potentially make the process faster. The objects from <em>pCurrentTopo</em> will not be reconfigured, so you can specify a topology that is actively streaming data. For example, while a topology is still running, you can pre-load the next topology. </p><p> Before calling this method, you must ensure that the output nodes in the partial topology have valid <strong><see cref=\"T:SharpDX.MediaFoundation.StreamSink\"/></strong> references, not <strong><see cref=\"T:SharpDX.MediaFoundation.Activate\"/></strong> references. The Media Session automatically performs this action inside the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaSession.SetTopology(System.Int32,SharpDX.MediaFoundation.Topology)\"/></strong> method. However, if you call <strong>Load</strong> before calling <strong>SetTopology</strong>, you must bind the output nodes manually. For more information, see Binding Output Nodes to Media Sinks. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTopoLoader::Load']/*\"/>\t\n            <msdn-id>ms693561</msdn-id>\t\n            <unmanaged>HRESULT IMFTopoLoader::Load([In] IMFTopology* pInputTopo,[Out] IMFTopology** ppOutputTopo,[In] IMFTopology* pCurrentTopo)</unmanaged>\t\n            <unmanaged-short>IMFTopoLoader::Load</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.Topology\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Gets the output nodes in the topology. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTopology']/*\"/>\t\n            <msdn-id>ms694029</msdn-id>\t\n            <unmanaged>IMFTopology</unmanaged>\t\n            <unmanaged-short>IMFTopology</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Topology.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.Topology\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Topology.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.Topology\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.Topology\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Topology.GetTopologyID(System.Int64@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Gets the identifier of the topology.</p>\t\n            </summary>\t\n            <param name=\"iDRef\"><dd> <p> Receives the identifier, as a <strong>TOPOID</strong> value. </p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTopology::GetTopologyID']/*\"/>\t\n            <msdn-id>ms705620</msdn-id>\t\n            <unmanaged>HRESULT IMFTopology::GetTopologyID([Out] unsigned longlong* pID)</unmanaged>\t\n            <unmanaged-short>IMFTopology::GetTopologyID</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Topology.AddNode(SharpDX.MediaFoundation.TopologyNode)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Adds a node to the topology.</p>\t\n            </summary>\t\n            <param name=\"nodeRef\"><dd> <p>Pointer to the node's <strong><see cref=\"T:SharpDX.MediaFoundation.TopologyNode\"/></strong> interface.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong>E_INVALIDARG</strong></dt> </dl> </td><td> <p><em>pNode</em> is invalid, possibly because the node already exists in the topology.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTopology::AddNode']/*\"/>\t\n            <msdn-id>ms697365</msdn-id>\t\n            <unmanaged>HRESULT IMFTopology::AddNode([In] IMFTopologyNode* pNode)</unmanaged>\t\n            <unmanaged-short>IMFTopology::AddNode</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Topology.RemoveNode(SharpDX.MediaFoundation.TopologyNode)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Removes a node from the topology.</p>\t\n            </summary>\t\n            <param name=\"nodeRef\"><dd> <p>Pointer to the node's <strong><see cref=\"T:SharpDX.MediaFoundation.TopologyNode\"/></strong> interface.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong>E_INVALIDARG</strong></dt> </dl> </td><td> <p>The specified node is not a member of this topology.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>This method does not destroy the node, so the <strong><see cref=\"T:SharpDX.MediaFoundation.TopologyNode\"/></strong> reference is still valid after the method returns.</p><p>The method breaks any connections between the specified node and other nodes.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTopology::RemoveNode']/*\"/>\t\n            <msdn-id>ms694226</msdn-id>\t\n            <unmanaged>HRESULT IMFTopology::RemoveNode([In] IMFTopologyNode* pNode)</unmanaged>\t\n            <unmanaged-short>IMFTopology::RemoveNode</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Topology.GetNodeCount(System.Int16@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Gets the number of nodes in the topology. </p>\t\n            </summary>\t\n            <param name=\"wNodesRef\"><dd> <p> Receives the number of nodes. </p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTopology::GetNodeCount']/*\"/>\t\n            <msdn-id>ms700175</msdn-id>\t\n            <unmanaged>HRESULT IMFTopology::GetNodeCount([Out] unsigned short* pwNodes)</unmanaged>\t\n            <unmanaged-short>IMFTopology::GetNodeCount</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Topology.GetNode(System.Int16,SharpDX.MediaFoundation.TopologyNode@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Gets a node in the topology, specified by index. </p>\t\n            </summary>\t\n            <param name=\"wIndex\"><dd> <p> The zero-based index of the node. To get the number of nodes in the topology, call <strong><see cref=\"M:SharpDX.MediaFoundation.Topology.GetNodeCount(System.Int16@)\"/></strong>. </p> </dd></param>\t\n            <param name=\"nodeOut\"><dd> <p> Receives a reference to the node's <strong><see cref=\"T:SharpDX.MediaFoundation.TopologyNode\"/></strong> interface. The caller must release the reference. </p> </dd></param>\t\n            <returns><p> The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table. </p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded. </p> </td></tr> <tr><td> <dl> <dt><strong>E_INVALIDARG</strong></dt> </dl> </td><td> <p> The index is less than zero. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidIndex\"/></strong></dt> </dl> </td><td> <p> No node can be found at the index <em>wIndex</em>. </p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTopology::GetNode']/*\"/>\t\n            <msdn-id>ms701569</msdn-id>\t\n            <unmanaged>HRESULT IMFTopology::GetNode([In] unsigned short wIndex,[Out] IMFTopologyNode** ppNode)</unmanaged>\t\n            <unmanaged-short>IMFTopology::GetNode</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Topology.Clear\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Removes all nodes from the topology.</p>\t\n            </summary>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>You do not need to clear a topology before disposing of it. The <strong>Clear</strong> method is called automatically when the topology is destroyed.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTopology::Clear']/*\"/>\t\n            <msdn-id>ms700800</msdn-id>\t\n            <unmanaged>HRESULT IMFTopology::Clear()</unmanaged>\t\n            <unmanaged-short>IMFTopology::Clear</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Topology.CloneFrom(SharpDX.MediaFoundation.Topology)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Converts this topology into a copy of another topology. </p>\t\n            </summary>\t\n            <param name=\"topologyRef\"><dd> <p> A reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.Topology\"/></strong> interface of the topology to clone. </p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>This method does the following:</p><ul> <li> Removes all of the nodes from this topology. </li> <li> Clones the nodes from <em>pTopology</em> and adds them to this topology. The cloned nodes have the same node identifiers as the nodes from <em>pTopology</em>. </li> <li> Connects the cloned nodes to match the connections in <em>pTopology</em>. </li> <li> Copies the attributes from <em>pTopology</em> to this topology. </li> <li> Copies the topology identifier from <em>pTopology</em> to this topology.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTopology::CloneFrom']/*\"/>\t\n            <msdn-id>ms702242</msdn-id>\t\n            <unmanaged>HRESULT IMFTopology::CloneFrom([In, Optional] IMFTopology* pTopology)</unmanaged>\t\n            <unmanaged-short>IMFTopology::CloneFrom</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Topology.GetNodeByID(System.Int64,SharpDX.MediaFoundation.TopologyNode@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Gets a node in the topology, specified by node identifier.</p>\t\n            </summary>\t\n            <param name=\"qwTopoNodeID\"><dd> <p> The identifier of the node to retrieve. To get a node's identifier, call <strong><see cref=\"M:SharpDX.MediaFoundation.TopologyNode.GetTopoNodeID(System.Int64@)\"/></strong>. </p> </dd></param>\t\n            <param name=\"nodeOut\"><dd> <p> Receives a reference to the node's <strong><see cref=\"T:SharpDX.MediaFoundation.TopologyNode\"/></strong> interface. The caller must release the interface. </p> </dd></param>\t\n            <returns><p> The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table. </p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.NotFound\"/></strong></dt> </dl> </td><td> <p> The topology does not contain a node with this identifier. </p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTopology::GetNodeByID']/*\"/>\t\n            <msdn-id>ms696224</msdn-id>\t\n            <unmanaged>HRESULT IMFTopology::GetNodeByID([In] unsigned longlong qwTopoNodeID,[Out] IMFTopologyNode** ppNode)</unmanaged>\t\n            <unmanaged-short>IMFTopology::GetNodeByID</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Topology.GetSourceNodeCollection(SharpDX.MediaFoundation.Collection@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Gets the source nodes in the topology. </p>\t\n            </summary>\t\n            <param name=\"collectionOut\"><dd> <p>Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.Collection\"/></strong> interface. The caller must release the reference. The collection contains <strong><see cref=\"T:SharpDX.ComObject\"/></strong> references to all of the source nodes in the topology. Each reference can be queried for the <strong><see cref=\"T:SharpDX.MediaFoundation.TopologyNode\"/></strong> interface. The collection might be empty.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTopology::GetSourceNodeCollection']/*\"/>\t\n            <msdn-id>ms701611</msdn-id>\t\n            <unmanaged>HRESULT IMFTopology::GetSourceNodeCollection([Out] IMFCollection** ppCollection)</unmanaged>\t\n            <unmanaged-short>IMFTopology::GetSourceNodeCollection</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Topology.GetOutputNodeCollection(SharpDX.MediaFoundation.Collection@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Gets the output nodes in the topology. </p>\t\n            </summary>\t\n            <param name=\"collectionOut\"><dd> <p> Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.Collection\"/></strong> interface. The caller must release the reference. The collection contains <strong><see cref=\"T:SharpDX.ComObject\"/></strong> references to all of the output nodes in the topology. Each reference can be queried for the <strong><see cref=\"T:SharpDX.MediaFoundation.TopologyNode\"/></strong> interface. The collection might be empty. </p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTopology::GetOutputNodeCollection']/*\"/>\t\n            <msdn-id>ms694029</msdn-id>\t\n            <unmanaged>HRESULT IMFTopology::GetOutputNodeCollection([Out] IMFCollection** ppCollection)</unmanaged>\t\n            <unmanaged-short>IMFTopology::GetOutputNodeCollection</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.Topology.TopologyID\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Gets the identifier of the topology.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTopology::GetTopologyID']/*\"/>\t\n            <msdn-id>ms705620</msdn-id>\t\n            <unmanaged>GetTopologyID</unmanaged>\t\n            <unmanaged-short>GetTopologyID</unmanaged-short>\t\n            <unmanaged>HRESULT IMFTopology::GetTopologyID([Out] unsigned longlong* pID)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.Topology.NodeCount\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Gets the number of nodes in the topology. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTopology::GetNodeCount']/*\"/>\t\n            <msdn-id>ms700175</msdn-id>\t\n            <unmanaged>GetNodeCount</unmanaged>\t\n            <unmanaged-short>GetNodeCount</unmanaged-short>\t\n            <unmanaged>HRESULT IMFTopology::GetNodeCount([Out] unsigned short* pwNodes)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.Topology.SourceNodeCollection\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Gets the source nodes in the topology. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTopology::GetSourceNodeCollection']/*\"/>\t\n            <msdn-id>ms701611</msdn-id>\t\n            <unmanaged>GetSourceNodeCollection</unmanaged>\t\n            <unmanaged-short>GetSourceNodeCollection</unmanaged-short>\t\n            <unmanaged>HRESULT IMFTopology::GetSourceNodeCollection([Out] IMFCollection** ppCollection)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.Topology.OutputNodeCollection\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Gets the output nodes in the topology. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTopology::GetOutputNodeCollection']/*\"/>\t\n            <msdn-id>ms694029</msdn-id>\t\n            <unmanaged>GetOutputNodeCollection</unmanaged>\t\n            <unmanaged-short>GetOutputNodeCollection</unmanaged-short>\t\n            <unmanaged>HRESULT IMFTopology::GetOutputNodeCollection([Out] IMFCollection** ppCollection)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.TopologyNode\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Connects an output stream from this node to the input stream of another node.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Node connections represent data flow from one node to the next. The streams are logical, and are specified by index.</p><p>If the node is already connected at the specified output, the method breaks the existing connection. If <em>dwOutputIndex</em> or <em>dwInputIndexOnDownstreamNode</em> specify streams that do not exist yet, the method adds as many streams as needed.</p><p>This method checks for certain invalid conditions:</p><ul> <li> <p>An output node cannot have any output connections. If you call this method on an output node, the method returns E_FAIL.</p> </li> <li> <p>A node cannot be connected to itself. If <em>pDownstreamNode</em> specifies the same node as the method call, the method returns E_INVALIDARG.</p> </li> </ul><p>However, if the method succeeds, it does not guarantee that the node connection is valid. It is possible to create a partial topology that the topology loader cannot resolve. If so, the <strong><see cref=\"M:SharpDX.MediaFoundation.TopoLoader.Load(SharpDX.MediaFoundation.Topology,SharpDX.MediaFoundation.Topology@,SharpDX.MediaFoundation.Topology)\"/></strong> method will fail.</p><p>To break an existing node connection, call <strong><see cref=\"M:SharpDX.MediaFoundation.TopologyNode.DisconnectOutput(System.Int32)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTopologyNode']/*\"/>\t\n            <msdn-id>ms695284</msdn-id>\t\n            <unmanaged>IMFTopologyNode</unmanaged>\t\n            <unmanaged-short>IMFTopologyNode</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.TopologyNode.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.TopologyNode\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.TopologyNode.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.TopologyNode\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.TopologyNode\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.TopologyNode.SetObject(SharpDX.ComObject)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Sets the object associated with this node.</p>\t\n            </summary>\t\n            <param name=\"objectRef\"><dd> <p>A reference to the object's <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interface. Use the value <strong><c>null</c></strong> to clear an object that was previous set.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>All node types support this method, but the object reference is not used by every node type.</p><table> <tr><th>Node type</th><th>Object reference</th></tr> <tr><td>Source node.</td><td>Not used.</td></tr> <tr><td>Transform node.</td><td> <strong><see cref=\"T:SharpDX.MediaFoundation.Transform\"/></strong> or <strong><see cref=\"T:SharpDX.MediaFoundation.Activate\"/></strong> interface.</td></tr> <tr><td>Output node</td><td> <strong><see cref=\"T:SharpDX.MediaFoundation.StreamSink\"/></strong> or <strong><see cref=\"T:SharpDX.MediaFoundation.Activate\"/></strong> interface.</td></tr> <tr><td>Tee node.</td><td>Not used.</td></tr> </table><p>?</p><p>If the object supports <strong><see cref=\"!:SharpDX.ComPersistBase\"/></strong>, <strong>IPersistStorage</strong>, or <strong>IPersistPropertyBag</strong>, the method gets the object's CLSID and sets the <strong><see cref=\"F:SharpDX.MediaFoundation.TopologyNodeAttributeKeys.TransformObjectid\"/></strong> attribute on the node.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTopologyNode::SetObject']/*\"/>\t\n            <msdn-id>ms702992</msdn-id>\t\n            <unmanaged>HRESULT IMFTopologyNode::SetObject([In, Optional] IUnknown* pObject)</unmanaged>\t\n            <unmanaged-short>IMFTopologyNode::SetObject</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.TopologyNode.GetObjectW(SharpDX.ComObject@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Gets the object associated with this node. </p>\t\n            </summary>\t\n            <param name=\"objectOut\"><dd> <p> Receives a reference to the object's <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interface. The caller must release the interface. </p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded. </p> </td></tr> <tr><td> <dl> <dt><strong>E_FAIL</strong></dt> </dl> </td><td> <p> There is no object associated with this node. </p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTopologyNode::GetObjectW']/*\"/>\t\n            <msdn-id>ms693569</msdn-id>\t\n            <unmanaged>HRESULT IMFTopologyNode::GetObjectW([Out] IUnknown** ppObject)</unmanaged>\t\n            <unmanaged-short>IMFTopologyNode::GetObjectW</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.TopologyNode.GetNodeType(SharpDX.MediaFoundation.TopologyType@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the node type.</p>\t\n            </summary>\t\n            <param name=\"typeRef\"><dd> <p>Receives the node type, specified as a member of the <strong><see cref=\"T:SharpDX.MediaFoundation.TopologyType\"/></strong> enumeration.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTopologyNode::GetNodeType']/*\"/>\t\n            <msdn-id>ms697514</msdn-id>\t\n            <unmanaged>HRESULT IMFTopologyNode::GetNodeType([Out] MF_TOPOLOGY_TYPE* pType)</unmanaged>\t\n            <unmanaged-short>IMFTopologyNode::GetNodeType</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.TopologyNode.GetTopoNodeID(System.Int64@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Retrieves the identifier of the node.</p>\t\n            </summary>\t\n            <param name=\"iDRef\"><dd> <p>Receives the identifier.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p> When a node is first created, it is assigned an identifier. Node identifiers are unique within a topology, but can be reused across several topologies. The topology loader uses the identifier to look up nodes in the previous topology, so that it can reuse objects from the previous topology. </p><p> To find a node in a topology by its identifier, call <strong><see cref=\"M:SharpDX.MediaFoundation.Topology.GetNodeByID(System.Int64,SharpDX.MediaFoundation.TopologyNode@)\"/></strong>. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTopologyNode::GetTopoNodeID']/*\"/>\t\n            <msdn-id>ms701602</msdn-id>\t\n            <unmanaged>HRESULT IMFTopologyNode::GetTopoNodeID([Out] unsigned longlong* pID)</unmanaged>\t\n            <unmanaged-short>IMFTopologyNode::GetTopoNodeID</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.TopologyNode.SetTopoNodeID(System.Int64)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Sets the identifier for the node.</p>\t\n            </summary>\t\n            <param name=\"ullTopoID\"><dd> <p> The identifier for the node. </p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded. </p> </td></tr> <tr><td> <dl> <dt><strong>E_INVALIDARG</strong></dt> </dl> </td><td> <p> The <strong>TOPOID</strong> has already been set for this object. </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> When a node is first created, it is assigned an identifier. Typically there is no reason for an application to override the identifier. Within a topology, each node identifier should be unique. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTopologyNode::SetTopoNodeID']/*\"/>\t\n            <msdn-id>bb970438</msdn-id>\t\n            <unmanaged>HRESULT IMFTopologyNode::SetTopoNodeID([In] unsigned longlong ullTopoID)</unmanaged>\t\n            <unmanaged-short>IMFTopologyNode::SetTopoNodeID</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.TopologyNode.GetInputCount(System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the number of input streams that currently exist on this node.</p>\t\n            </summary>\t\n            <param name=\"cInputsRef\"><dd> <p>Receives the number of input streams.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>The input streams may or may not be connected to output streams on other nodes. To get the node that is connected to a specified input stream, call <strong><see cref=\"M:SharpDX.MediaFoundation.TopologyNode.GetInput(System.Int32,SharpDX.MediaFoundation.TopologyNode@,System.Int32@)\"/></strong>.</p><p>The <strong><see cref=\"M:SharpDX.MediaFoundation.TopologyNode.ConnectOutput(System.Int32,SharpDX.MediaFoundation.TopologyNode,System.Int32)\"/></strong> and <strong><see cref=\"M:SharpDX.MediaFoundation.TopologyNode.SetInputPrefType(System.Int32,SharpDX.MediaFoundation.MediaType)\"/></strong> methods add new input streams as needed.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTopologyNode::GetInputCount']/*\"/>\t\n            <msdn-id>ms700165</msdn-id>\t\n            <unmanaged>HRESULT IMFTopologyNode::GetInputCount([Out] unsigned int* pcInputs)</unmanaged>\t\n            <unmanaged-short>IMFTopologyNode::GetInputCount</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.TopologyNode.GetOutputCount(System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the number of output streams that currently exist on this node.</p>\t\n            </summary>\t\n            <param name=\"cOutputsRef\"><dd> <p>Receives the number of output streams.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>The output streams may or may not be connected to input streams on other nodes. To get the node that is connected to a specific output stream on this node, call <strong><see cref=\"M:SharpDX.MediaFoundation.TopologyNode.GetOutput(System.Int32,SharpDX.MediaFoundation.TopologyNode@,System.Int32@)\"/></strong>.</p><p>The <strong><see cref=\"M:SharpDX.MediaFoundation.TopologyNode.ConnectOutput(System.Int32,SharpDX.MediaFoundation.TopologyNode,System.Int32)\"/></strong> and <strong><see cref=\"M:SharpDX.MediaFoundation.TopologyNode.SetOutputPrefType(System.Int32,SharpDX.MediaFoundation.MediaType)\"/></strong> methods add new input streams as needed.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTopologyNode::GetOutputCount']/*\"/>\t\n            <msdn-id>ms704019</msdn-id>\t\n            <unmanaged>HRESULT IMFTopologyNode::GetOutputCount([Out] unsigned int* pcOutputs)</unmanaged>\t\n            <unmanaged-short>IMFTopologyNode::GetOutputCount</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.TopologyNode.ConnectOutput(System.Int32,SharpDX.MediaFoundation.TopologyNode,System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Connects an output stream from this node to the input stream of another node.</p>\t\n            </summary>\t\n            <param name=\"dwOutputIndex\"><dd> <p>Zero-based index of the output stream on this node.</p> </dd></param>\t\n            <param name=\"downstreamNodeRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.TopologyNode\"/></strong> interface of the node to connect to.</p> </dd></param>\t\n            <param name=\"dwInputIndexOnDownstreamNode\"><dd> <p>Zero-based index of the input stream on the other node.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong>E_FAIL</strong></dt> </dl> </td><td> <p>The method failed.</p> </td></tr> <tr><td> <dl> <dt><strong>E_INVALIDARG</strong></dt> </dl> </td><td> <p>Invalid parameter.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>Node connections represent data flow from one node to the next. The streams are logical, and are specified by index.</p><p>If the node is already connected at the specified output, the method breaks the existing connection. If <em>dwOutputIndex</em> or <em>dwInputIndexOnDownstreamNode</em> specify streams that do not exist yet, the method adds as many streams as needed.</p><p>This method checks for certain invalid conditions:</p><ul> <li> <p>An output node cannot have any output connections. If you call this method on an output node, the method returns E_FAIL.</p> </li> <li> <p>A node cannot be connected to itself. If <em>pDownstreamNode</em> specifies the same node as the method call, the method returns E_INVALIDARG.</p> </li> </ul><p>However, if the method succeeds, it does not guarantee that the node connection is valid. It is possible to create a partial topology that the topology loader cannot resolve. If so, the <strong><see cref=\"M:SharpDX.MediaFoundation.TopoLoader.Load(SharpDX.MediaFoundation.Topology,SharpDX.MediaFoundation.Topology@,SharpDX.MediaFoundation.Topology)\"/></strong> method will fail.</p><p>To break an existing node connection, call <strong><see cref=\"M:SharpDX.MediaFoundation.TopologyNode.DisconnectOutput(System.Int32)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTopologyNode::ConnectOutput']/*\"/>\t\n            <msdn-id>ms695284</msdn-id>\t\n            <unmanaged>HRESULT IMFTopologyNode::ConnectOutput([In] unsigned int dwOutputIndex,[In] IMFTopologyNode* pDownstreamNode,[In] unsigned int dwInputIndexOnDownstreamNode)</unmanaged>\t\n            <unmanaged-short>IMFTopologyNode::ConnectOutput</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.TopologyNode.DisconnectOutput(System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Disconnects an output stream on this node.</p>\t\n            </summary>\t\n            <param name=\"dwOutputIndex\"><dd> <p>Zero-based index of the output stream to disconnect.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong>E_INVALIDARG</strong></dt> </dl> </td><td> <p>The <em>dwOutputIndex</em> parameter is out of range.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.NotFound\"/></strong></dt> </dl> </td><td> <p>The specified output stream is not connected to another node.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>If the specified output stream is connected to another node, this method breaks the connection.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTopologyNode::DisconnectOutput']/*\"/>\t\n            <msdn-id>ms698991</msdn-id>\t\n            <unmanaged>HRESULT IMFTopologyNode::DisconnectOutput([In] unsigned int dwOutputIndex)</unmanaged>\t\n            <unmanaged-short>IMFTopologyNode::DisconnectOutput</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.TopologyNode.GetInput(System.Int32,SharpDX.MediaFoundation.TopologyNode@,System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the node that is connected to a specified input stream on this node.</p>\t\n            </summary>\t\n            <param name=\"dwInputIndex\"><dd> <p>Zero-based index of an input stream on this node.</p> </dd></param>\t\n            <param name=\"upstreamNodeOut\"><dd> <p>Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.TopologyNode\"/></strong> interface of the node that is connected to the specified input stream. The caller must release the interface.</p> </dd></param>\t\n            <param name=\"dwOutputIndexOnUpstreamNodeRef\"><dd> <p>Receives the index of the output stream that is connected to this node's input stream.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong>E_INVALIDARG</strong></dt> </dl> </td><td> <p>The index is out of range.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.NotFound\"/></strong></dt> </dl> </td><td> <p>The specified input stream is not connected to another node.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTopologyNode::GetInput']/*\"/>\t\n            <msdn-id>ms697020</msdn-id>\t\n            <unmanaged>HRESULT IMFTopologyNode::GetInput([In] unsigned int dwInputIndex,[Out] IMFTopologyNode** ppUpstreamNode,[Out] unsigned int* pdwOutputIndexOnUpstreamNode)</unmanaged>\t\n            <unmanaged-short>IMFTopologyNode::GetInput</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.TopologyNode.GetOutput(System.Int32,SharpDX.MediaFoundation.TopologyNode@,System.Int32@)\">\n            <summary>\t\n            <p>Retrieves the node that is connected to a specified output stream on this node.</p>  <see cref=\"T:SharpDX.Result\"/> GetOutput( DWORD dwOutputIndex, <see cref=\"T:SharpDX.MediaFoundation.TopologyNode\"/>** ppDownstreamNode, DWORD* pdwInputIndexOnDownstreamNode\t\n            );\t\n            <p></p>Parameters <p> dwOutputIndex </p> <p>[in]  Zero-based index of an output stream on this node.</p> <p> ppDownstreamNode </p> <p>[out]  Receives a reference to the <see cref=\"T:SharpDX.MediaFoundation.TopologyNode\"/> Interface of the node that is connected to the specified output stream.</p> <p> pdwInputIndexOnDownstreamNode </p> <p>[out] Receives the index of the input stream that is connected to this node's output stream.</p>  <p>The method returns an <see cref=\"T:SharpDX.Result\"/>. Possible values include, but are not limited to, those in the following table.</p> <table><tr> <th> Return code              </th> <th> Description              </th> </tr><tr> <td> <p><see cref=\"F:SharpDX.Result.Ok\"/></p> </td> <td> <p>The method succeeded. </p> </td> </tr><tr> <td> <p>E_INVALIDARG</p> </td> <td> <p>The index is out of range.</p> </td> </tr><tr> <td> <p><see cref=\"F:SharpDX.MediaFoundation.ResultCode.NotFound\"/></p> </td> <td> <p>The specified input stream is not connected to another node.</p> </td> </tr></table>  <p> Client: Requires Windows Vista.</p> <p> Header: Include mfidl.h.</p> <p> Library: Use mfuuid.lib.</p> ReferenceIMFTopologyNode InterfaceConceptsTopologies\t\n            </summary>\t\n            <param name=\"dwOutputIndex\">No documentation.</param>\t\n            <param name=\"downstreamNodeOut\">No documentation.</param>\t\n            <param name=\"dwInputIndexOnDownstreamNodeRef\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTopologyNode::GetOutput']/*\"/>\t\n            <msdn-id>ms704826</msdn-id>\t\n            <unmanaged>HRESULT IMFTopologyNode::GetOutput([In] unsigned int dwOutputIndex,[Out] IMFTopologyNode** ppDownstreamNode,[Out] unsigned int* pdwInputIndexOnDownstreamNode)</unmanaged>\t\n            <unmanaged-short>IMFTopologyNode::GetOutput</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.TopologyNode.SetOutputPrefType(System.Int32,SharpDX.MediaFoundation.MediaType)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Sets the preferred media type for an output stream on this node.</p>\t\n            </summary>\t\n            <param name=\"dwOutputIndex\"><dd> <p>Zero-based index of the output stream.</p> </dd></param>\t\n            <param name=\"typeRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaType\"/></strong> interface of the media type.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong>E_NOTIMPL</strong></dt> </dl> </td><td> <p>This node is an output node.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>The preferred type is a hint for the topology loader.</p><p>Do not call this method after loading a topology or setting a topology on the Media Session. Changing the preferred type on a running topology can cause connection errors.</p><p>If no output stream exists at the specified index, the method creates new streams up to and including the specified index number.</p><p>Output nodes cannot have outputs. If this method is called on an output node, it returns E_NOTIMPL</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTopologyNode::SetOutputPrefType']/*\"/>\t\n            <msdn-id>ms701546</msdn-id>\t\n            <unmanaged>HRESULT IMFTopologyNode::SetOutputPrefType([In] unsigned int dwOutputIndex,[In] IMFMediaType* pType)</unmanaged>\t\n            <unmanaged-short>IMFTopologyNode::SetOutputPrefType</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.TopologyNode.GetOutputPrefType(System.Int32,SharpDX.MediaFoundation.MediaType@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the preferred media type for an output stream on this node.</p>\t\n            </summary>\t\n            <param name=\"dwOutputIndex\"><dd> <p>Zero-based index of the output stream.</p> </dd></param>\t\n            <param name=\"typeOut\"><dd> <p>Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaType\"/></strong> interface of the media type. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong>E_FAIL</strong></dt> </dl> </td><td> <p>This node does not have a preferred output type.</p> </td></tr> <tr><td> <dl> <dt><strong>E_INVALIDARG</strong></dt> </dl> </td><td> <p>Invalid stream index.</p> </td></tr> <tr><td> <dl> <dt><strong>E_NOTIMPL</strong></dt> </dl> </td><td> <p>This node is an output node.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>Output nodes cannot have outputs. If this method is called on an output node, it returns E_NOTIMPL.</p><p>The preferred output type provides a hint to the topology loader. In a fully resolved topology, there is no guarantee that every topology node will have a preferred output type. To get the actual media type for a node, you must get a reference to the node's underlying object. (For more information, see <strong><see cref=\"T:SharpDX.MediaFoundation.TopologyType\"/></strong> enumeration.)</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTopologyNode::GetOutputPrefType']/*\"/>\t\n            <msdn-id>ms701571</msdn-id>\t\n            <unmanaged>HRESULT IMFTopologyNode::GetOutputPrefType([In] unsigned int dwOutputIndex,[Out] IMFMediaType** ppType)</unmanaged>\t\n            <unmanaged-short>IMFTopologyNode::GetOutputPrefType</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.TopologyNode.SetInputPrefType(System.Int32,SharpDX.MediaFoundation.MediaType)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Sets the preferred media type for an input stream on this node.</p>\t\n            </summary>\t\n            <param name=\"dwInputIndex\"><dd> <p>Zero-based index of the input stream.</p> </dd></param>\t\n            <param name=\"typeRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaType\"/></strong> interface of the media type.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong>E_NOTIMPL</strong></dt> </dl> </td><td> <p>This node is a source node.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>The preferred type is a hint for the topology loader.</p><p>Do not call this method after loading a topology or setting a topology on the Media Session. Changing the preferred type on a running topology can cause connection errors.</p><p>If no input stream exists at the specified index, the method creates new streams up to and including the specified index number.</p><p>Source nodes cannot have inputs. If this method is called on a source node, it returns E_NOTIMPL.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTopologyNode::SetInputPrefType']/*\"/>\t\n            <msdn-id>ms696223</msdn-id>\t\n            <unmanaged>HRESULT IMFTopologyNode::SetInputPrefType([In] unsigned int dwInputIndex,[In] IMFMediaType* pType)</unmanaged>\t\n            <unmanaged-short>IMFTopologyNode::SetInputPrefType</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.TopologyNode.GetInputPrefType(System.Int32,SharpDX.MediaFoundation.MediaType@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the preferred media type for an input stream on this node.</p>\t\n            </summary>\t\n            <param name=\"dwInputIndex\"><dd> <p>Zero-based index of the input stream.</p> </dd></param>\t\n            <param name=\"typeOut\"><dd> <p>Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaType\"/></strong> interface of the media type. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong>E_FAIL</strong></dt> </dl> </td><td> <p>This node does not have a preferred input type.</p> </td></tr> <tr><td> <dl> <dt><strong>E_INVALIDARG</strong></dt> </dl> </td><td> <p>Invalid stream index.</p> </td></tr> <tr><td> <dl> <dt><strong>E_NOTIMPL</strong></dt> </dl> </td><td> <p>This node is a source node.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>Source nodes cannot have inputs. If this method is called on a source node, it returns E_NOTIMPL.</p><p>The preferred input type provides a hint to the topology loader. In a fully resolved topology, there is no guarantee that every topology node will have a preferred input type. To get the actual media type for a node, you must get a reference to the node's underlying object. (For more information, see <strong><see cref=\"T:SharpDX.MediaFoundation.TopologyType\"/></strong> enumeration.)</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTopologyNode::GetInputPrefType']/*\"/>\t\n            <msdn-id>ms696221</msdn-id>\t\n            <unmanaged>HRESULT IMFTopologyNode::GetInputPrefType([In] unsigned int dwInputIndex,[Out] IMFMediaType** ppType)</unmanaged>\t\n            <unmanaged-short>IMFTopologyNode::GetInputPrefType</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.TopologyNode.CloneFrom(SharpDX.MediaFoundation.TopologyNode)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Copies the data from another topology node into this node.</p>\t\n            </summary>\t\n            <param name=\"nodeRef\"><dd> <p> A reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.TopologyNode\"/></strong> interface of the node to copy. </p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidRequest\"/></strong></dt> </dl> </td><td> <p> The node types do not match. </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> The two nodes must have the same node type. To get the node type, call <strong><see cref=\"M:SharpDX.MediaFoundation.TopologyNode.GetNodeType(SharpDX.MediaFoundation.TopologyType@)\"/></strong>. </p><p> This method copies the object reference, preferred types, and attributes from <em>pNode</em> to this node. It also copies the <strong>TOPOID</strong> that uniquely identifies each node in a topology. It does not duplicate any of the connections from <em>pNode</em> to other nodes. </p><p> The purpose of this method is to copy nodes from one topology to another. Do not use duplicate nodes within the same topology. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTopologyNode::CloneFrom']/*\"/>\t\n            <msdn-id>ms700790</msdn-id>\t\n            <unmanaged>HRESULT IMFTopologyNode::CloneFrom([In, Optional] IMFTopologyNode* pNode)</unmanaged>\t\n            <unmanaged-short>IMFTopologyNode::CloneFrom</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.TopologyNode.Object\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Sets the object associated with this node.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>All node types support this method, but the object reference is not used by every node type.</p><table> <tr><th>Node type</th><th>Object reference</th></tr> <tr><td>Source node.</td><td>Not used.</td></tr> <tr><td>Transform node.</td><td> <strong><see cref=\"T:SharpDX.MediaFoundation.Transform\"/></strong> or <strong><see cref=\"T:SharpDX.MediaFoundation.Activate\"/></strong> interface.</td></tr> <tr><td>Output node</td><td> <strong><see cref=\"T:SharpDX.MediaFoundation.StreamSink\"/></strong> or <strong><see cref=\"T:SharpDX.MediaFoundation.Activate\"/></strong> interface.</td></tr> <tr><td>Tee node.</td><td>Not used.</td></tr> </table><p>?</p><p>If the object supports <strong><see cref=\"!:SharpDX.ComPersistBase\"/></strong>, <strong>IPersistStorage</strong>, or <strong>IPersistPropertyBag</strong>, the method gets the object's CLSID and sets the <strong><see cref=\"F:SharpDX.MediaFoundation.TopologyNodeAttributeKeys.TransformObjectid\"/></strong> attribute on the node.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTopologyNode::SetObject']/*\"/>\t\n            <msdn-id>ms702992</msdn-id>\t\n            <unmanaged>SetObject</unmanaged>\t\n            <unmanaged-short>SetObject</unmanaged-short>\t\n            <unmanaged>HRESULT IMFTopologyNode::SetObject([In, Optional] IUnknown* pObject)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.TopologyNode.ObjectW\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Gets the object associated with this node. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTopologyNode::GetObjectW']/*\"/>\t\n            <msdn-id>ms693569</msdn-id>\t\n            <unmanaged>GetObjectW</unmanaged>\t\n            <unmanaged-short>GetObjectW</unmanaged-short>\t\n            <unmanaged>HRESULT IMFTopologyNode::GetObjectW([Out] IUnknown** ppObject)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.TopologyNode.NodeType\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the node type.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTopologyNode::GetNodeType']/*\"/>\t\n            <msdn-id>ms697514</msdn-id>\t\n            <unmanaged>GetNodeType</unmanaged>\t\n            <unmanaged-short>GetNodeType</unmanaged-short>\t\n            <unmanaged>HRESULT IMFTopologyNode::GetNodeType([Out] MF_TOPOLOGY_TYPE* pType)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.TopologyNode.TopoNodeID\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Retrieves the identifier of the node.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p> When a node is first created, it is assigned an identifier. Node identifiers are unique within a topology, but can be reused across several topologies. The topology loader uses the identifier to look up nodes in the previous topology, so that it can reuse objects from the previous topology. </p><p> To find a node in a topology by its identifier, call <strong><see cref=\"M:SharpDX.MediaFoundation.Topology.GetNodeByID(System.Int64,SharpDX.MediaFoundation.TopologyNode@)\"/></strong>. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTopologyNode::GetTopoNodeID']/*\"/>\t\n            <msdn-id>ms701602</msdn-id>\t\n            <unmanaged>GetTopoNodeID / SetTopoNodeID</unmanaged>\t\n            <unmanaged-short>GetTopoNodeID</unmanaged-short>\t\n            <unmanaged>HRESULT IMFTopologyNode::GetTopoNodeID([Out] unsigned longlong* pID)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.TopologyNode.InputCount\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the number of input streams that currently exist on this node.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The input streams may or may not be connected to output streams on other nodes. To get the node that is connected to a specified input stream, call <strong><see cref=\"M:SharpDX.MediaFoundation.TopologyNode.GetInput(System.Int32,SharpDX.MediaFoundation.TopologyNode@,System.Int32@)\"/></strong>.</p><p>The <strong><see cref=\"M:SharpDX.MediaFoundation.TopologyNode.ConnectOutput(System.Int32,SharpDX.MediaFoundation.TopologyNode,System.Int32)\"/></strong> and <strong><see cref=\"M:SharpDX.MediaFoundation.TopologyNode.SetInputPrefType(System.Int32,SharpDX.MediaFoundation.MediaType)\"/></strong> methods add new input streams as needed.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTopologyNode::GetInputCount']/*\"/>\t\n            <msdn-id>ms700165</msdn-id>\t\n            <unmanaged>GetInputCount</unmanaged>\t\n            <unmanaged-short>GetInputCount</unmanaged-short>\t\n            <unmanaged>HRESULT IMFTopologyNode::GetInputCount([Out] unsigned int* pcInputs)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.TopologyNode.OutputCount\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the number of output streams that currently exist on this node.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The output streams may or may not be connected to input streams on other nodes. To get the node that is connected to a specific output stream on this node, call <strong><see cref=\"M:SharpDX.MediaFoundation.TopologyNode.GetOutput(System.Int32,SharpDX.MediaFoundation.TopologyNode@,System.Int32@)\"/></strong>.</p><p>The <strong><see cref=\"M:SharpDX.MediaFoundation.TopologyNode.ConnectOutput(System.Int32,SharpDX.MediaFoundation.TopologyNode,System.Int32)\"/></strong> and <strong><see cref=\"M:SharpDX.MediaFoundation.TopologyNode.SetOutputPrefType(System.Int32,SharpDX.MediaFoundation.MediaType)\"/></strong> methods add new input streams as needed.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTopologyNode::GetOutputCount']/*\"/>\t\n            <msdn-id>ms704019</msdn-id>\t\n            <unmanaged>GetOutputCount</unmanaged>\t\n            <unmanaged-short>GetOutputCount</unmanaged-short>\t\n            <unmanaged>HRESULT IMFTopologyNode::GetOutputCount([Out] unsigned int* pcOutputs)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.TopologyNodeAttributeEditor\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Updates the attributes of one or more nodes in the current topology.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Currently the only attribute that can be updated is the <strong><see cref=\"F:SharpDX.MediaFoundation.TopologyNodeAttributeKeys.Mediastop\"/></strong> attribute. The method ignores any other attributes.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTopologyNodeAttributeEditor']/*\"/>\t\n            <msdn-id>aa371868</msdn-id>\t\n            <unmanaged>IMFTopologyNodeAttributeEditor</unmanaged>\t\n            <unmanaged-short>IMFTopologyNodeAttributeEditor</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.TopologyNodeAttributeEditor.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.TopologyNodeAttributeEditor\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.TopologyNodeAttributeEditor.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.TopologyNodeAttributeEditor\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.TopologyNodeAttributeEditor\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.TopologyNodeAttributeEditor.UpdateNodeAttributes(System.Int64,System.Int32,SharpDX.MediaFoundation.ToponodeAttributeUpdate[])\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Updates the attributes of one or more nodes in the current topology.</p>\t\n            </summary>\t\n            <param name=\"topoId\"><dd> <p>Reserved.</p> </dd></param>\t\n            <param name=\"cUpdates\"><dd> <p>The number of elements in the <em>pUpdates</em> array.</p> </dd></param>\t\n            <param name=\"updatesRef\"><dd> <p>Pointer to an array of <strong><see cref=\"T:SharpDX.MediaFoundation.ToponodeAttributeUpdate\"/></strong> structures. Each element of the array updates one attribute on a node.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>Currently the only attribute that can be updated is the <strong><see cref=\"F:SharpDX.MediaFoundation.TopologyNodeAttributeKeys.Mediastop\"/></strong> attribute. The method ignores any other attributes.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTopologyNodeAttributeEditor::UpdateNodeAttributes']/*\"/>\t\n            <msdn-id>aa371868</msdn-id>\t\n            <unmanaged>HRESULT IMFTopologyNodeAttributeEditor::UpdateNodeAttributes([In] unsigned longlong TopoId,[In] unsigned int cUpdates,[In, Buffer] MFTOPONODE_ATTRIBUTE_UPDATE* pUpdates)</unmanaged>\t\n            <unmanaged-short>IMFTopologyNodeAttributeEditor::UpdateNodeAttributes</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.TopologyServiceLookup\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Enables a custom video mixer or video presenter to get interface references from the Enhanced Video Renderer (EVR). The mixer can also use this interface to get interface references from the presenter, and the presenter can use it to get interface references from the mixer.</p><p>To use this interface, implement the <strong><see cref=\"T:SharpDX.MediaFoundation.TopologyServiceLookupClient\"/></strong> interface on your custom mixer or presenter. The EVR calls <strong><see cref=\"M:SharpDX.MediaFoundation.TopologyServiceLookupClient.InitServicePointers(SharpDX.MediaFoundation.TopologyServiceLookup)\"/></strong> with a reference to the EVR's <strong><see cref=\"T:SharpDX.MediaFoundation.TopologyServiceLookup\"/></strong> interface.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTopologyServiceLookup']/*\"/>\t\n            <msdn-id>ms702001</msdn-id>\t\n            <unmanaged>IMFTopologyServiceLookup</unmanaged>\t\n            <unmanaged-short>IMFTopologyServiceLookup</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.TopologyServiceLookup.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.TopologyServiceLookup\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.TopologyServiceLookup.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.TopologyServiceLookup\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.TopologyServiceLookup\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.TopologyServiceLookup.LookupService(SharpDX.MediaFoundation.ServiceLookupType,System.Int32,System.Guid,System.Guid,System.IntPtr,System.Int32@)\">\n            <summary>\t\n            <p>Retrieves an interface from the enhanced video renderer (EVR), or from the video mixer or video presenter.</p>  <see cref=\"T:SharpDX.Result\"/> LookupService( <see cref=\"T:SharpDX.MediaFoundation.ServiceLookupType\"/>  Type, DWORD  dwIndex, REFGUID  guidService, REFIID  riid, LPVOID*  ppvObjects, DWORD* pnObjects\t\n            );\t\n            <p></p>Parameters <p> Type </p> <p>[in] Specifies the scope of the search. Currently this parameter is ignored. Use the value <see cref=\"F:SharpDX.MediaFoundation.ServiceLookupType.Global\"/>.</p> <p> dwIndex </p> <p>[in] Reserved, must be zero.</p> <p> guidService </p> <p>[in] Service <see cref=\"T:System.Guid\"/> of the requested interface.</p> <p> riid </p> <p>[in] Interface identifier of the requested interface.</p> <p> ppvObjects </p> <p>[out]  Array of interface references. If the method succeeds, each member of the array is initialized to the requested interface. The caller must release the interface references when the EVR calls <see cref=\"M:SharpDX.MediaFoundation.TopologyServiceLookupClient.ReleaseServicePointers\"/>.</p> <p> pnObjects </p> <p>[in, out] On input, a reference to a value that specifies the size of the ppvObjects array. The value must be at least 1. On output, receives the number of valid references copied into the ppvObjects array. In the current implementation, there is no particular reason to specify an array size larger than one element.</p>  <p>The method returns an <see cref=\"T:SharpDX.Result\"/>. Possible values include, but are not limited to, those in the following table.</p> <table><tr> <th> Return code </th> <th> Description </th> </tr><tr> <td> <p><see cref=\"F:SharpDX.Result.Ok\"/></p> </td> <td> <p>The method succeeded.</p> </td> </tr><tr> <td> <p>E_INVALIDARG</p> </td> <td> <p>Invalid argument. </p> </td> </tr><tr> <td> <p>E_NOINTERFACE</p> </td> <td> <p>The requested interface is not available.</p> </td> </tr><tr> <td> <p><see cref=\"F:SharpDX.MediaFoundation.ResultCode.NotAccepting\"/></p> </td> <td> <p>The method was not called from inside the InitServicePointers method. See Remarks.</p> </td> </tr><tr> <td> <p><see cref=\"F:SharpDX.MediaFoundation.ResultCode.UnsupportedService\"/></p> </td> <td> <p>The object does not support the specified service <see cref=\"T:System.Guid\"/>.</p> </td> </tr></table>  <p>This method can be called only from inside the <see cref=\"M:SharpDX.MediaFoundation.TopologyServiceLookupClient.InitServicePointers(SharpDX.MediaFoundation.TopologyServiceLookup)\"/> method. At any other time, the method returns <see cref=\"F:SharpDX.MediaFoundation.ResultCode.NotAccepting\"/>.</p> <p>The presenter can use this method to query the EVR and the mixer. The mixer can use it to query the EVR and the presenter. Which objects are queried depends on the caller and the service <see cref=\"T:System.Guid\"/>, as shown in the following table. </p> <table><tr> <th> Caller </th> <th> Service <see cref=\"T:System.Guid\"/> </th> <th> Objects queried </th> </tr><tr> <td> <p>Presenter</p> </td> <td> <p>MR_VIDEO_RENDER_SERVICE</p> </td> <td> <p>EVR</p> </td> </tr><tr> <td> <p>Presenter</p> </td> <td> <p>MR_VIDEO_MIXER_SERVICE</p> </td> <td> <p>Mixer</p> </td> </tr><tr> <td> <p>Mixer</p> </td> <td> <p>MR_VIDEO_RENDER_SERVICE</p> </td> <td> <p>Presenter and EVR</p> </td> </tr></table> <p>The following interfaces are available from the EVR:</p> <ul><li> <p> IMediaEventSink Interface</p> </li><li> <p> <see cref=\"T:SharpDX.MediaFoundation.Clock\"/> Interface </p> </li><li> <p> <see cref=\"T:SharpDX.MediaFoundation.Timer\"/> Interface </p> </li><li> <p> <see cref=\"T:SharpDX.MediaFoundation.PresentationClock\"/> Interface </p> </li></ul> <p>The IMediaEventSink interface is documented in the DirectShow SDK documentation.</p> <p>The following interfaces are available from the mixer:</p> <ul><li> <p> <see cref=\"T:SharpDX.MediaFoundation.Transform\"/> Interface </p> </li><li> <p> <see cref=\"T:SharpDX.MediaFoundation.VideoDeviceID\"/> Interface </p> </li></ul>  <p> Client: Requires Windows Vista.</p> <p> Header: Include evr.h.</p> <p> Library: Use strmiids.lib.</p> ReferenceIMFTopologyServiceLookup InterfaceConceptsHow to Write an EVR Presenter\t\n            </summary>\t\n            <param name=\"type\">No documentation.</param>\t\n            <param name=\"dwIndex\">No documentation.</param>\t\n            <param name=\"guidService\">No documentation.</param>\t\n            <param name=\"riid\">No documentation.</param>\t\n            <param name=\"vObjectsOut\">No documentation.</param>\t\n            <param name=\"nObjectsRef\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTopologyServiceLookup::LookupService']/*\"/>\t\n            <msdn-id>ms702184</msdn-id>\t\n            <unmanaged>HRESULT IMFTopologyServiceLookup::LookupService([In] MF_SERVICE_LOOKUP_TYPE Type,[In] unsigned int dwIndex,[In] const GUID&amp; guidService,[In] const GUID&amp; riid,[Out, Buffer] void** ppvObjects,[InOut] unsigned int* pnObjects)</unmanaged>\t\n            <unmanaged-short>IMFTopologyServiceLookup::LookupService</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.TopologyServiceLookupClient\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Initializes a video mixer or presenter. This interface is implemented by mixers and presenters, and enables them to query the enhanced video renderer (EVR) for interface references.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>When the EVR loads the video mixer and the video presenter, the EVR queries the object for this interface and calls <strong>InitServicePointers</strong>. Inside the <strong>InitServicePointers</strong> method, the object can query the EVR for interface references.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTopologyServiceLookupClient']/*\"/>\t\n            <msdn-id>ms703063</msdn-id>\t\n            <unmanaged>IMFTopologyServiceLookupClient</unmanaged>\t\n            <unmanaged-short>IMFTopologyServiceLookupClient</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.TopologyServiceLookupClient.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.TopologyServiceLookupClient\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.TopologyServiceLookupClient.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.TopologyServiceLookupClient\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.TopologyServiceLookupClient\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.TopologyServiceLookupClient.InitServicePointers(SharpDX.MediaFoundation.TopologyServiceLookup)\">\n            <summary>\t\n            <p>Signals the mixer or presenter to query the enhanced video renderer (EVR) for interface references.</p>  <see cref=\"T:SharpDX.Result\"/> InitServicePointers( <see cref=\"T:SharpDX.MediaFoundation.TopologyServiceLookup\"/>* pLookup\t\n            );\t\n            <p></p>Parameters <p> pLookup </p> <p>Pointer to the <see cref=\"T:SharpDX.MediaFoundation.TopologyServiceLookup\"/> Interface. To query the EVR, call <see cref=\"M:SharpDX.MediaFoundation.TopologyServiceLookup.LookupService(SharpDX.MediaFoundation.ServiceLookupType,System.Int32,System.Guid,System.Guid,System.IntPtr,System.Int32@)\"/>.</p>  <p>The method returns an <see cref=\"T:SharpDX.Result\"/>. Possible values include, but are not limited to, those in the following table.</p> <table><tr> <th> Return code </th> <th> Description </th> </tr><tr> <td> <p><see cref=\"F:SharpDX.Result.Ok\"/></p> </td> <td> <p>The method succeeded.</p> </td> </tr></table>  <p>The <see cref=\"T:SharpDX.MediaFoundation.TopologyServiceLookup\"/> reference is guaranteed to be valid only during the call to InitServicePointers. The mixer or presenter should not store a reference to this interface after the method returns.</p> <p>When the EVR calls <see cref=\"M:SharpDX.MediaFoundation.TopologyServiceLookupClient.ReleaseServicePointers\"/>, the mixer or presenter should release any references it obtained from the EVR.</p>  <p> Client: Requires Windows Vista.</p> <p> Header: Include evr.h.</p> <p> Library: Use strmiids.lib.</p> ReferenceIMFTopologyServiceLookupClient Interface\t\n            </summary>\t\n            <param name=\"lookupRef\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTopologyServiceLookupClient::InitServicePointers']/*\"/>\t\n            <msdn-id>ms704023</msdn-id>\t\n            <unmanaged>HRESULT IMFTopologyServiceLookupClient::InitServicePointers([In] IMFTopologyServiceLookup* pLookup)</unmanaged>\t\n            <unmanaged-short>IMFTopologyServiceLookupClient::InitServicePointers</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.TopologyServiceLookupClient.ReleaseServicePointers\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Signals the object to release the interface references obtained from the enhanced video renderer (EVR).</p>\t\n            </summary>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>After this method is called, any interface references obtained during the previous call to <strong><see cref=\"M:SharpDX.MediaFoundation.TopologyServiceLookupClient.InitServicePointers(SharpDX.MediaFoundation.TopologyServiceLookup)\"/></strong> are no longer valid. The object must release them.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTopologyServiceLookupClient::ReleaseServicePointers']/*\"/>\t\n            <msdn-id>ms693584</msdn-id>\t\n            <unmanaged>HRESULT IMFTopologyServiceLookupClient::ReleaseServicePointers()</unmanaged>\t\n            <unmanaged-short>IMFTopologyServiceLookupClient::ReleaseServicePointers</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.TrackedSample\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Sets the owner for the sample.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>When this method is called, the sample holds an additional reference count on itself. When every other object releases its reference counts on the sample, the sample invokes the <em>pSampleAllocator</em> callback method. To get a reference to the sample, call <strong><see cref=\"M:SharpDX.MediaFoundation.AsyncResult.GetObjectW(SharpDX.ComObject@)\"/></strong> on the asynchronous result object given to the callback's <strong><see cref=\"M:SharpDX.MediaFoundation.AsyncCallback.Invoke(SharpDX.MediaFoundation.AsyncResult)\"/></strong> method.</p><p>After the callback is invoked, the sample clears the callback. To reinstate the callback, you must call <strong>SetAllocator</strong> again.</p><p>It is safe to pass in the sample's <strong><see cref=\"T:SharpDX.MediaFoundation.Sample\"/></strong> interface reference as the state object (<em>pUnkState</em>) for the callback. If <em>pUnkState</em> points to the sample, the <strong>SetAllocator</strong> method accounts for the additional reference count on <em>pUnkState</em>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTrackedSample']/*\"/>\t\n            <msdn-id>ms704797</msdn-id>\t\n            <unmanaged>IMFTrackedSample</unmanaged>\t\n            <unmanaged-short>IMFTrackedSample</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.TrackedSample.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.TrackedSample\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.TrackedSample.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.TrackedSample\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.TrackedSample\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.TrackedSample.SetAllocator(SharpDX.MediaFoundation.AsyncCallback,SharpDX.ComObject)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Sets the owner for the sample.</p>\t\n            </summary>\t\n            <param name=\"sampleAllocatorRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.AsyncCallback\"/></strong> interface of a callback object. The caller must implement this interface.</p> </dd></param>\t\n            <param name=\"unkStateRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interface of a state object, defined by the caller. This parameter can be <strong><c>null</c></strong>. You can use this object to hold state information. The object is returned to the caller when the callback is invoked.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.NotAccepting\"/></strong></dt> </dl> </td><td> <p>The owner was already set. This method cannot be called twice on the sample.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>When this method is called, the sample holds an additional reference count on itself. When every other object releases its reference counts on the sample, the sample invokes the <em>pSampleAllocator</em> callback method. To get a reference to the sample, call <strong><see cref=\"M:SharpDX.MediaFoundation.AsyncResult.GetObjectW(SharpDX.ComObject@)\"/></strong> on the asynchronous result object given to the callback's <strong><see cref=\"M:SharpDX.MediaFoundation.AsyncCallback.Invoke(SharpDX.MediaFoundation.AsyncResult)\"/></strong> method.</p><p>After the callback is invoked, the sample clears the callback. To reinstate the callback, you must call <strong>SetAllocator</strong> again.</p><p>It is safe to pass in the sample's <strong><see cref=\"T:SharpDX.MediaFoundation.Sample\"/></strong> interface reference as the state object (<em>pUnkState</em>) for the callback. If <em>pUnkState</em> points to the sample, the <strong>SetAllocator</strong> method accounts for the additional reference count on <em>pUnkState</em>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTrackedSample::SetAllocator']/*\"/>\t\n            <msdn-id>ms704797</msdn-id>\t\n            <unmanaged>HRESULT IMFTrackedSample::SetAllocator([In] IMFAsyncCallback* pSampleAllocator,[In] IUnknown* pUnkState)</unmanaged>\t\n            <unmanaged-short>IMFTrackedSample::SetAllocator</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.TranscodeProfile\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Implemented by the transcode profile object.</p><p>The transcode profile stores configuration settings that the topology builder uses to generate the transcode topology for the output file. These configuration settings are specified by the caller and include audio and video stream properties, encoder settings, and  container settings that are specified by the caller.</p><p>To create the transcode profile object, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateTranscodeProfile(SharpDX.MediaFoundation.TranscodeProfile@)\"/></strong>. The configured transcode profile is passed to <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateTranscodeTopology(SharpDX.MediaFoundation.MediaSource,System.String,SharpDX.MediaFoundation.TranscodeProfile,SharpDX.MediaFoundation.Topology@)\"/></strong>, which creates the transcode topology with the appropriate settings. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTranscodeProfile']/*\"/>\t\n            <msdn-id>dd369139</msdn-id>\t\n            <unmanaged>IMFTranscodeProfile</unmanaged>\t\n            <unmanaged-short>IMFTranscodeProfile</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.TranscodeProfile.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.TranscodeProfile\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.TranscodeProfile.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.TranscodeProfile\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.TranscodeProfile\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.TranscodeProfile.SetAudioAttributes(SharpDX.MediaFoundation.MediaAttributes)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Sets audio stream configuration settings  in the transcode profile.</p><p>To get a list of compatible audio media types supported by the Media Foundation transform (MFT) encoder , call  <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.TranscodeGetAudioOutputAvailableTypes(System.Guid,System.Int32,SharpDX.MediaFoundation.MediaAttributes,SharpDX.MediaFoundation.Collection@)\"/></strong>. You can get the attributes that are set on the required media type and set them on the transcode profile. To set the audio attributes properly, create a new attribute store and copy the attribute store from the required media media type by calling <strong><see cref=\"M:SharpDX.MediaFoundation.MediaAttributes.CopyAllItems(SharpDX.MediaFoundation.MediaAttributes)\"/></strong>. This makes sure that the caller does not hold the references to the media type retrieved from the encoder. For example code, see <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateTranscodeProfile(SharpDX.MediaFoundation.TranscodeProfile@)\"/></strong>.</p>\t\n            </summary>\t\n            <param name=\"attrsRef\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTranscodeProfile::SetAudioAttributes']/*\"/>\t\n            <msdn-id>dd369143</msdn-id>\t\n            <unmanaged>HRESULT IMFTranscodeProfile::SetAudioAttributes([In, Optional] IMFAttributes* pAttrs)</unmanaged>\t\n            <unmanaged-short>IMFTranscodeProfile::SetAudioAttributes</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.TranscodeProfile.GetAudioAttributes(SharpDX.MediaFoundation.MediaAttributes@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Gets the audio stream settings that are currently set in the transcode profile. </p>\t\n            </summary>\t\n            <param name=\"attrsOut\"><dd> <p>Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaAttributes\"/></strong> interface of the attribute store containing the current audio stream settings. Caller must release the interface reference.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>If there are no audio attributes set in the transcode profile, the call to <strong>GetAudioAttributes</strong> succeeds and  <em>ppAttrs</em> receives <strong><c>null</c></strong>.</p><p>To get a specific attribute value, the caller must call the appropriate <strong><see cref=\"T:SharpDX.MediaFoundation.MediaAttributes\"/></strong> method depending on the data type of the attribute, and specify the attribute name. The following topics describe the audio attributes:</p><ul> <li> Audio Media Types </li> <li> <see cref=\"F:SharpDX.MediaFoundation.TranscodeAttributeKeys.TranscodeEncodingprofile\"/> </li> <li> <see cref=\"F:SharpDX.MediaFoundation.TranscodeAttributeKeys.TranscodeQualityvsspeed\"/> </li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTranscodeProfile::GetAudioAttributes']/*\"/>\t\n            <msdn-id>dd369140</msdn-id>\t\n            <unmanaged>HRESULT IMFTranscodeProfile::GetAudioAttributes([Out, Optional] IMFAttributes** ppAttrs)</unmanaged>\t\n            <unmanaged-short>IMFTranscodeProfile::GetAudioAttributes</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.TranscodeProfile.SetVideoAttributes(SharpDX.MediaFoundation.MediaAttributes)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Sets video stream configuration settings  in the transcode profile.</p><p> For example code, see <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateTranscodeProfile(SharpDX.MediaFoundation.TranscodeProfile@)\"/></strong>.</p>\t\n            </summary>\t\n            <param name=\"attrsRef\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTranscodeProfile::SetVideoAttributes']/*\"/>\t\n            <msdn-id>dd369145</msdn-id>\t\n            <unmanaged>HRESULT IMFTranscodeProfile::SetVideoAttributes([In, Optional] IMFAttributes* pAttrs)</unmanaged>\t\n            <unmanaged-short>IMFTranscodeProfile::SetVideoAttributes</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.TranscodeProfile.GetVideoAttributes(SharpDX.MediaFoundation.MediaAttributes@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Gets the video stream settings that are currently set in the transcode profile.</p>\t\n            </summary>\t\n            <param name=\"attrsOut\"><dd> <p>Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaAttributes\"/></strong> interface of the attribute store containing the current video stream settings. Caller must release the interface reference.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>If there are no container attributes set in the transcode profile, the <strong>GetVideoAttributes</strong> method  succeeds and  <em>ppAttrs</em> receives <strong><c>null</c></strong>.</p><p>To get a specific attribute value, the caller must call the appropriate <strong><see cref=\"T:SharpDX.MediaFoundation.MediaAttributes\"/></strong> method depending on the data type of the attribute, and specify the attribute name. The following list shows the video attributes:</p><ul> <li> Video Media Types </li> <li> <see cref=\"F:SharpDX.MediaFoundation.TranscodeAttributeKeys.TranscodeEncodingprofile\"/> </li> <li> <see cref=\"F:SharpDX.MediaFoundation.TranscodeAttributeKeys.TranscodeQualityvsspeed\"/> </li> <li> <see cref=\"F:SharpDX.MediaFoundation.TranscodeAttributeKeys.TranscodeDonotInsertEncoder\"/> </li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTranscodeProfile::GetVideoAttributes']/*\"/>\t\n            <msdn-id>dd369142</msdn-id>\t\n            <unmanaged>HRESULT IMFTranscodeProfile::GetVideoAttributes([Out, Optional] IMFAttributes** ppAttrs)</unmanaged>\t\n            <unmanaged-short>IMFTranscodeProfile::GetVideoAttributes</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.TranscodeProfile.SetContainerAttributes(SharpDX.MediaFoundation.MediaAttributes)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Sets container configuration settings  in the transcode profile.</p><p> For example code, see <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateTranscodeProfile(SharpDX.MediaFoundation.TranscodeProfile@)\"/></strong>.</p>\t\n            </summary>\t\n            <param name=\"attrsRef\">No documentation.</param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTranscodeProfile::SetContainerAttributes']/*\"/>\t\n            <msdn-id>dd369144</msdn-id>\t\n            <unmanaged>HRESULT IMFTranscodeProfile::SetContainerAttributes([In, Optional] IMFAttributes* pAttrs)</unmanaged>\t\n            <unmanaged-short>IMFTranscodeProfile::SetContainerAttributes</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.TranscodeProfile.GetContainerAttributes(SharpDX.MediaFoundation.MediaAttributes@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Gets the container settings that are currently set in the transcode profile.</p>\t\n            </summary>\t\n            <param name=\"attrsOut\"><dd> <p>Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaAttributes\"/></strong> interface of the attribute store containing the current container type for the output file. Caller must release the interface reference.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>If there are no container attributes set in the transcode profile, the call to <strong>GetContainerAttributes</strong> succeeds and  <em>ppAttrs</em> receives <strong><c>null</c></strong>.</p><p> To get a specific attribute value, the caller must call the appropriate <strong><see cref=\"T:SharpDX.MediaFoundation.MediaAttributes\"/></strong> method depending on the data type of the attribute. The following list shows the container attributes:</p><ul> <li> <see cref=\"F:SharpDX.MediaFoundation.TranscodeAttributeKeys.TranscodeContainertype\"/> </li> <li> <see cref=\"F:SharpDX.MediaFoundation.TranscodeAttributeKeys.TranscodeSkipMetadataTransfer\"/> </li> <li> <see cref=\"F:SharpDX.MediaFoundation.TranscodeAttributeKeys.TranscodeTopologymode\"/> </li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTranscodeProfile::GetContainerAttributes']/*\"/>\t\n            <msdn-id>dd369141</msdn-id>\t\n            <unmanaged>HRESULT IMFTranscodeProfile::GetContainerAttributes([Out, Optional] IMFAttributes** ppAttrs)</unmanaged>\t\n            <unmanaged-short>IMFTranscodeProfile::GetContainerAttributes</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.TranscodeProfile.AudioAttributes\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Gets the audio stream settings that are currently set in the transcode profile. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>If there are no audio attributes set in the transcode profile, the call to <strong>GetAudioAttributes</strong> succeeds and  <em>ppAttrs</em> receives <strong><c>null</c></strong>.</p><p>To get a specific attribute value, the caller must call the appropriate <strong><see cref=\"T:SharpDX.MediaFoundation.MediaAttributes\"/></strong> method depending on the data type of the attribute, and specify the attribute name. The following topics describe the audio attributes:</p><ul> <li> Audio Media Types </li> <li> <see cref=\"F:SharpDX.MediaFoundation.TranscodeAttributeKeys.TranscodeEncodingprofile\"/> </li> <li> <see cref=\"F:SharpDX.MediaFoundation.TranscodeAttributeKeys.TranscodeQualityvsspeed\"/> </li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTranscodeProfile::GetAudioAttributes']/*\"/>\t\n            <msdn-id>dd369140</msdn-id>\t\n            <unmanaged>GetAudioAttributes / SetAudioAttributes</unmanaged>\t\n            <unmanaged-short>GetAudioAttributes</unmanaged-short>\t\n            <unmanaged>HRESULT IMFTranscodeProfile::GetAudioAttributes([Out, Optional] IMFAttributes** ppAttrs)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.TranscodeProfile.VideoAttributes\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Gets the video stream settings that are currently set in the transcode profile.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>If there are no container attributes set in the transcode profile, the <strong>GetVideoAttributes</strong> method  succeeds and  <em>ppAttrs</em> receives <strong><c>null</c></strong>.</p><p>To get a specific attribute value, the caller must call the appropriate <strong><see cref=\"T:SharpDX.MediaFoundation.MediaAttributes\"/></strong> method depending on the data type of the attribute, and specify the attribute name. The following list shows the video attributes:</p><ul> <li> Video Media Types </li> <li> <see cref=\"F:SharpDX.MediaFoundation.TranscodeAttributeKeys.TranscodeEncodingprofile\"/> </li> <li> <see cref=\"F:SharpDX.MediaFoundation.TranscodeAttributeKeys.TranscodeQualityvsspeed\"/> </li> <li> <see cref=\"F:SharpDX.MediaFoundation.TranscodeAttributeKeys.TranscodeDonotInsertEncoder\"/> </li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTranscodeProfile::GetVideoAttributes']/*\"/>\t\n            <msdn-id>dd369142</msdn-id>\t\n            <unmanaged>GetVideoAttributes / SetVideoAttributes</unmanaged>\t\n            <unmanaged-short>GetVideoAttributes</unmanaged-short>\t\n            <unmanaged>HRESULT IMFTranscodeProfile::GetVideoAttributes([Out, Optional] IMFAttributes** ppAttrs)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.TranscodeProfile.ContainerAttributes\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Gets the container settings that are currently set in the transcode profile.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>If there are no container attributes set in the transcode profile, the call to <strong>GetContainerAttributes</strong> succeeds and  <em>ppAttrs</em> receives <strong><c>null</c></strong>.</p><p> To get a specific attribute value, the caller must call the appropriate <strong><see cref=\"T:SharpDX.MediaFoundation.MediaAttributes\"/></strong> method depending on the data type of the attribute. The following list shows the container attributes:</p><ul> <li> <see cref=\"F:SharpDX.MediaFoundation.TranscodeAttributeKeys.TranscodeContainertype\"/> </li> <li> <see cref=\"F:SharpDX.MediaFoundation.TranscodeAttributeKeys.TranscodeSkipMetadataTransfer\"/> </li> <li> <see cref=\"F:SharpDX.MediaFoundation.TranscodeAttributeKeys.TranscodeTopologymode\"/> </li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTranscodeProfile::GetContainerAttributes']/*\"/>\t\n            <msdn-id>dd369141</msdn-id>\t\n            <unmanaged>GetContainerAttributes / SetContainerAttributes</unmanaged>\t\n            <unmanaged-short>GetContainerAttributes</unmanaged-short>\t\n            <unmanaged>HRESULT IMFTranscodeProfile::GetContainerAttributes([Out, Optional] IMFAttributes** ppAttrs)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.TranscodeSinkInfoProvider\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Implemented by the transcode sink activation object.</p><p>The transcode sink activation object can be used to create any of the following file sinks:</p><ul> <li>3GP file sink</li> <li>MP3 file sink</li> <li>MP4 file sink</li> </ul>\t\n            </summary>\t\n            <remarks>\t\n            <p>To use this interface, perform the following steps:</p><ol> <li>Call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateTranscodeSinkActivate(SharpDX.MediaFoundation.Activate@)\"/></strong> to create the transcode sink activation object.</li> <li>Query the activation object for the <strong><see cref=\"T:SharpDX.MediaFoundation.TranscodeSinkInfoProvider\"/></strong> interface.</li> <li>Call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateTranscodeProfile(SharpDX.MediaFoundation.TranscodeProfile@)\"/></strong> to create a transcode profile.</li> <li>Set the <see cref=\"F:SharpDX.MediaFoundation.TranscodeAttributeKeys.TranscodeContainertype\"/> attribute on the transcode profile. The attribute must have one of the following values:<ul> <li><strong>MFTranscodeContainerType_3GP</strong></li> <li><strong>MFTranscodeContainerType_MP3</strong></li> <li><strong>MFTranscodeContainerType_MPEG4</strong></li> </ul> </li> <li>Call <strong><see cref=\"M:SharpDX.MediaFoundation.TranscodeProfile.SetVideoAttributes(SharpDX.MediaFoundation.MediaAttributes)\"/></strong> and <strong><see cref=\"M:SharpDX.MediaFoundation.TranscodeProfile.SetAudioAttributes(SharpDX.MediaFoundation.MediaAttributes)\"/></strong> to specify the video and audio formats.</li> <li>Call <strong><see cref=\"M:SharpDX.MediaFoundation.TranscodeSinkInfoProvider.SetProfile(SharpDX.MediaFoundation.TranscodeProfile)\"/></strong> to set the transcode profile.</li> <li>Call one of the following methods (but not both) to specify the output file:<ul> <li> <strong><see cref=\"M:SharpDX.MediaFoundation.TranscodeSinkInfoProvider.SetOutputByteStream(SharpDX.MediaFoundation.Activate)\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.MediaFoundation.TranscodeSinkInfoProvider.SetOutputFile(System.String)\"/></strong> </li> </ul> </li> <li>Call <strong><see cref=\"M:SharpDX.MediaFoundation.Activate.ActivateObject(System.Guid,System.IntPtr@)\"/></strong> on the activation object to create the media sink.</li> </ol>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTranscodeSinkInfoProvider']/*\"/>\t\n            <msdn-id>dd369146</msdn-id>\t\n            <unmanaged>IMFTranscodeSinkInfoProvider</unmanaged>\t\n            <unmanaged-short>IMFTranscodeSinkInfoProvider</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.TranscodeSinkInfoProvider.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.TranscodeSinkInfoProvider\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.TranscodeSinkInfoProvider.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.TranscodeSinkInfoProvider\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.TranscodeSinkInfoProvider\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.TranscodeSinkInfoProvider.SetOutputFile(System.String)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Sets the name of the encoded output file.</p>\t\n            </summary>\t\n            <param name=\"wszFileNameRef\"><dd> <p>Pointer to a null-terminated string that contains the name of the output file.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p> The media sink will create a local file with the specified file name.</p><p>Alternately, you can call <strong><see cref=\"M:SharpDX.MediaFoundation.TranscodeSinkInfoProvider.SetOutputByteStream(SharpDX.MediaFoundation.Activate)\"/></strong> to specify a byte stream  that will receive the transcoded data. These two methods are mutually exclusive.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTranscodeSinkInfoProvider::SetOutputFile']/*\"/>\t\n            <msdn-id>dd369149</msdn-id>\t\n            <unmanaged>HRESULT IMFTranscodeSinkInfoProvider::SetOutputFile([In] const wchar_t* pwszFileName)</unmanaged>\t\n            <unmanaged-short>IMFTranscodeSinkInfoProvider::SetOutputFile</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.TranscodeSinkInfoProvider.SetOutputByteStream(SharpDX.MediaFoundation.Activate)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Sets an output byte stream for the transcode media sink.</p>\t\n            </summary>\t\n            <param name=\"byteStreamActivateRef\"><dd> <p>A reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.Activate\"/></strong> interface of a byte-stream activation object. </p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>Call this method to provide a writeable byte stream  that will receive the transcoded data.</p><p>Alternatively, you can provide the name of an  output file, by calling <strong><see cref=\"M:SharpDX.MediaFoundation.TranscodeSinkInfoProvider.SetOutputFile(System.String)\"/></strong>. These two methods are mutually exclusive.</p><p>The <em>pByteStreamActivate</em> parameter must specify an activation object that creates a writeable byte stream. Internally, the transcode media sink calls <strong><see cref=\"M:SharpDX.MediaFoundation.Activate.ActivateObject(System.Guid,System.IntPtr@)\"/></strong> to create the byte stream, as follows:</p><code><see cref=\"T:SharpDX.MediaFoundation.IByteStream\"/> *pByteStream = <c>null</c>; <see cref=\"T:SharpDX.Result\"/> hr = pByteStreamActivate-&gt;ActivateObject(IID_IMFByteStream, (void**)&amp;pByteStream);</code><p>Currently, Microsoft Media Foundation does not provide any byte-stream activation objects. To use this method, an application must provide a custom implementation of <strong><see cref=\"T:SharpDX.MediaFoundation.Activate\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTranscodeSinkInfoProvider::SetOutputByteStream']/*\"/>\t\n            <msdn-id>dd369148</msdn-id>\t\n            <unmanaged>HRESULT IMFTranscodeSinkInfoProvider::SetOutputByteStream([In] IMFActivate* pByteStreamActivate)</unmanaged>\t\n            <unmanaged-short>IMFTranscodeSinkInfoProvider::SetOutputByteStream</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.TranscodeSinkInfoProvider.SetProfile(SharpDX.MediaFoundation.TranscodeProfile)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Sets the transcoding profile on the transcode sink activation object.</p>\t\n            </summary>\t\n            <param name=\"profileRef\"><dd> <p>A reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.TranscodeProfile\"/></strong> interface. To get a reference to this interface, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateTranscodeProfile(SharpDX.MediaFoundation.TranscodeProfile@)\"/></strong>.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>Before calling this method, initialize the profile object as follows:</p><ul> <li>Set the <see cref=\"F:SharpDX.MediaFoundation.TranscodeAttributeKeys.TranscodeContainertype\"/> attribute to specify the container type of the output file.</li> <li>If the output file will have a video stream, set video attributes by calling the <strong><see cref=\"M:SharpDX.MediaFoundation.TranscodeProfile.SetVideoAttributes(SharpDX.MediaFoundation.MediaAttributes)\"/></strong> method.</li> <li>If the output file will have an audio stream, set audio attributes by calling the <strong><see cref=\"M:SharpDX.MediaFoundation.TranscodeProfile.SetAudioAttributes(SharpDX.MediaFoundation.MediaAttributes)\"/></strong> method.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTranscodeSinkInfoProvider::SetProfile']/*\"/>\t\n            <msdn-id>dd369150</msdn-id>\t\n            <unmanaged>HRESULT IMFTranscodeSinkInfoProvider::SetProfile([In] IMFTranscodeProfile* pProfile)</unmanaged>\t\n            <unmanaged-short>IMFTranscodeSinkInfoProvider::SetProfile</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.TranscodeSinkInfoProvider.GetSinkInfo(SharpDX.MediaFoundation.TranscodeSinkInformation@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Gets the media types for the audio and video streams specified in the transcode profile.</p>\t\n            </summary>\t\n            <param name=\"sinkInfoRef\"><dd> <p>A reference to an <strong><see cref=\"T:SharpDX.MediaFoundation.TranscodeSinkInformation\"/></strong> structure.</p> <p>If the method succeeds, the method assigns <strong><see cref=\"T:SharpDX.MediaFoundation.MediaType\"/></strong> references to the <strong>pAudioMediaType</strong> and <strong>pVideoMediaType</strong> members of this structure. The method might set either member to <strong><c>null</c></strong>. If either member is non-<c>null</c> after the method returns, the caller must release the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaType\"/></strong> references.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>Before calling this method, call <strong><see cref=\"M:SharpDX.MediaFoundation.TranscodeSinkInfoProvider.SetProfile(SharpDX.MediaFoundation.TranscodeProfile)\"/></strong> to set the transcode profile. The <strong>GetSinkInfo</strong> method  uses the profile to create media types for the audio and video streams. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTranscodeSinkInfoProvider::GetSinkInfo']/*\"/>\t\n            <msdn-id>dd369147</msdn-id>\t\n            <unmanaged>HRESULT IMFTranscodeSinkInfoProvider::GetSinkInfo([Out] MF_TRANSCODE_SINK_INFO* pSinkInfo)</unmanaged>\t\n            <unmanaged-short>IMFTranscodeSinkInfoProvider::GetSinkInfo</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.TranscodeSinkInfoProvider.OutputFile\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Sets the name of the encoded output file.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p> The media sink will create a local file with the specified file name.</p><p>Alternately, you can call <strong><see cref=\"M:SharpDX.MediaFoundation.TranscodeSinkInfoProvider.SetOutputByteStream(SharpDX.MediaFoundation.Activate)\"/></strong> to specify a byte stream  that will receive the transcoded data. These two methods are mutually exclusive.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTranscodeSinkInfoProvider::SetOutputFile']/*\"/>\t\n            <msdn-id>dd369149</msdn-id>\t\n            <unmanaged>SetOutputFile</unmanaged>\t\n            <unmanaged-short>SetOutputFile</unmanaged-short>\t\n            <unmanaged>HRESULT IMFTranscodeSinkInfoProvider::SetOutputFile([In] const wchar_t* pwszFileName)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.TranscodeSinkInfoProvider.OutputByteStream\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Sets an output byte stream for the transcode media sink.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Call this method to provide a writeable byte stream  that will receive the transcoded data.</p><p>Alternatively, you can provide the name of an  output file, by calling <strong><see cref=\"M:SharpDX.MediaFoundation.TranscodeSinkInfoProvider.SetOutputFile(System.String)\"/></strong>. These two methods are mutually exclusive.</p><p>The <em>pByteStreamActivate</em> parameter must specify an activation object that creates a writeable byte stream. Internally, the transcode media sink calls <strong><see cref=\"M:SharpDX.MediaFoundation.Activate.ActivateObject(System.Guid,System.IntPtr@)\"/></strong> to create the byte stream, as follows:</p><code><see cref=\"T:SharpDX.MediaFoundation.IByteStream\"/> *pByteStream = <c>null</c>; <see cref=\"T:SharpDX.Result\"/> hr = pByteStreamActivate-&gt;ActivateObject(IID_IMFByteStream, (void**)&amp;pByteStream);</code><p>Currently, Microsoft Media Foundation does not provide any byte-stream activation objects. To use this method, an application must provide a custom implementation of <strong><see cref=\"T:SharpDX.MediaFoundation.Activate\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTranscodeSinkInfoProvider::SetOutputByteStream']/*\"/>\t\n            <msdn-id>dd369148</msdn-id>\t\n            <unmanaged>SetOutputByteStream</unmanaged>\t\n            <unmanaged-short>SetOutputByteStream</unmanaged-short>\t\n            <unmanaged>HRESULT IMFTranscodeSinkInfoProvider::SetOutputByteStream([In] IMFActivate* pByteStreamActivate)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.TranscodeSinkInfoProvider.Profile\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Sets the transcoding profile on the transcode sink activation object.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Before calling this method, initialize the profile object as follows:</p><ul> <li>Set the <see cref=\"F:SharpDX.MediaFoundation.TranscodeAttributeKeys.TranscodeContainertype\"/> attribute to specify the container type of the output file.</li> <li>If the output file will have a video stream, set video attributes by calling the <strong><see cref=\"M:SharpDX.MediaFoundation.TranscodeProfile.SetVideoAttributes(SharpDX.MediaFoundation.MediaAttributes)\"/></strong> method.</li> <li>If the output file will have an audio stream, set audio attributes by calling the <strong><see cref=\"M:SharpDX.MediaFoundation.TranscodeProfile.SetAudioAttributes(SharpDX.MediaFoundation.MediaAttributes)\"/></strong> method.</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTranscodeSinkInfoProvider::SetProfile']/*\"/>\t\n            <msdn-id>dd369150</msdn-id>\t\n            <unmanaged>SetProfile</unmanaged>\t\n            <unmanaged-short>SetProfile</unmanaged-short>\t\n            <unmanaged>HRESULT IMFTranscodeSinkInfoProvider::SetProfile([In] IMFTranscodeProfile* pProfile)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.TranscodeSinkInfoProvider.SinkInfo\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Gets the media types for the audio and video streams specified in the transcode profile.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Before calling this method, call <strong><see cref=\"M:SharpDX.MediaFoundation.TranscodeSinkInfoProvider.SetProfile(SharpDX.MediaFoundation.TranscodeProfile)\"/></strong> to set the transcode profile. The <strong>GetSinkInfo</strong> method  uses the profile to create media types for the audio and video streams. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTranscodeSinkInfoProvider::GetSinkInfo']/*\"/>\t\n            <msdn-id>dd369147</msdn-id>\t\n            <unmanaged>GetSinkInfo</unmanaged>\t\n            <unmanaged-short>GetSinkInfo</unmanaged-short>\t\n            <unmanaged>HRESULT IMFTranscodeSinkInfoProvider::GetSinkInfo([Out] MF_TRANSCODE_SINK_INFO* pSinkInfo)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.Transform\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Implemented by all Media Foundation Transforms (MFTs).</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTransform']/*\"/>\t\n            <msdn-id>ms696260</msdn-id>\t\n            <unmanaged>IMFTransform</unmanaged>\t\n            <unmanaged-short>IMFTransform</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Transform.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.Transform\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Transform.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.Transform\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.Transform\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Transform.GetStreamLimits(System.Int32@,System.Int32@,System.Int32@,System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Gets the minimum and maximum number of input and output streams for this Media Foundation transform (MFT). </p>\t\n            </summary>\t\n            <param name=\"dwInputMinimumRef\"><dd> <p> Receives the minimum number of input streams. </p> </dd></param>\t\n            <param name=\"dwInputMaximumRef\"><dd> <p> Receives the maximum number of input streams. If there is no maximum, receives the value <strong>MFT_STREAMS_UNLIMITED</strong>. </p> </dd></param>\t\n            <param name=\"dwOutputMinimumRef\"><dd> <p> Receives the minimum number of output streams. </p> </dd></param>\t\n            <param name=\"dwOutputMaximumRef\"><dd> <p> Receives the maximum number of output streams. If there is no maximum, receives the value <strong>MFT_STREAMS_UNLIMITED</strong>. </p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p> If the MFT has a fixed number of streams, the minimum and maximum values are the same. </p><p> It is not recommended to create an MFT that supports zero inputs or zero outputs. An MFT with no inputs or no outputs may not be compatible with the rest of the Media Foundation pipeline. You should create a Media Foundation sink or source for this purpose instead. </p><p> When an MFT is first created, it is not guaranteed to have the minimum number of streams. To find the actual number of streams, call <strong><see cref=\"M:SharpDX.MediaFoundation.Transform.GetStreamCount(System.Int32@,System.Int32@)\"/></strong>. </p><p> This method should not be called with <strong><c>null</c></strong> parameters, although in practice some implementations may allow <strong><c>null</c></strong> parameters. </p><p>If <strong>MFT_UNIQUE_METHOD_NAMES</strong> is defined before including mftransform.h, this method is renamed <strong>MFTGetStreamLimits</strong>. See Creating Hybrid DMO/MFT Objects.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTransform::GetStreamLimits']/*\"/>\t\n            <msdn-id>ms697040</msdn-id>\t\n            <unmanaged>HRESULT IMFTransform::GetStreamLimits([Out] unsigned int* pdwInputMinimum,[Out] unsigned int* pdwInputMaximum,[Out] unsigned int* pdwOutputMinimum,[Out] unsigned int* pdwOutputMaximum)</unmanaged>\t\n            <unmanaged-short>IMFTransform::GetStreamLimits</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Transform.GetStreamCount(System.Int32@,System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Gets the current number of input and output streams on this Media Foundation transform (MFT). </p>\t\n            </summary>\t\n            <param name=\"cInputStreamsRef\"><dd> <p> Receives the number of input streams. </p> </dd></param>\t\n            <param name=\"cOutputStreamsRef\"><dd> <p> Receives the number of output streams. </p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p> The number of streams includes unselected streams?that is, streams with no media type or a <strong><c>null</c></strong> media type.</p><p> This method should not be called with <strong><c>null</c></strong> parameters, although in practice some implementations may allow <strong><c>null</c></strong> parameters. </p><p>If <strong>MFT_UNIQUE_METHOD_NAMES</strong> is defined before including mftransform.h, this method is renamed <strong>MFTGetStreamCount</strong>. See Creating Hybrid DMO/MFT Objects.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTransform::GetStreamCount']/*\"/>\t\n            <msdn-id>ms697018</msdn-id>\t\n            <unmanaged>HRESULT IMFTransform::GetStreamCount([Out] unsigned int* pcInputStreams,[Out] unsigned int* pcOutputStreams)</unmanaged>\t\n            <unmanaged-short>IMFTransform::GetStreamCount</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Transform.GetStreamIDs(System.Int32,System.Int32[],System.Int32,System.Int32[])\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Gets the stream identifiers for the input and output streams on this Media Foundation transform (MFT). </p>\t\n            </summary>\t\n            <param name=\"dwInputIDArraySize\"><dd> <p> Number of elements in the <em>pdwInputIDs</em> array. </p> </dd></param>\t\n            <param name=\"dwInputIDsRef\"><dd> <p> Pointer to an array allocated by the caller. The method fills the array with the input stream identifiers. The array size must be at least equal to the number of input streams. To get the number of input streams, call <strong><see cref=\"M:SharpDX.MediaFoundation.Transform.GetStreamCount(System.Int32@,System.Int32@)\"/></strong>. </p> <p>If the caller passes an array that is larger than the number of input streams, the MFT must not write values into the extra array entries.</p> </dd></param>\t\n            <param name=\"dwOutputIDArraySize\"><dd> <p> Number of elements in the <em>pdwOutputIDs</em> array. </p> </dd></param>\t\n            <param name=\"dwOutputIDsRef\"><dd> <p> Pointer to an array allocated by the caller. The method fills the array with the output stream identifiers. The array size must be at least equal to the number of output streams. To get the number of output streams, call <strong>GetStreamCount</strong>. </p> <p>If the caller passes an array that is larger than the number of output streams, the MFT must not write values into the extra array entries.</p> </dd></param>\t\n            <returns><p> The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table. </p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded. </p> </td></tr> <tr><td> <dl> <dt><strong>E_NOTIMPL</strong></dt> </dl> </td><td> <p> Not implemented. See Remarks. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.BufferTooSmall\"/></strong></dt> </dl> </td><td> <p> One or both of the arrays is too small. </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> Stream identifiers are necessary because some MFTs can add or remove streams, so the index of a stream may not be unique. Therefore, <strong><see cref=\"T:SharpDX.MediaFoundation.Transform\"/></strong> methods that operate on streams take stream identifiers. </p><p>This method can return <strong>E_NOTIMPL</strong> if both of the following conditions are true:</p><ul> <li> The transform has a fixed number of streams. </li> <li> The streams are numbered consecutively from 0 to n ? 1, where n is the number of input streams or output streams. In other words, the first input stream is 0, the second is 1, and so on; and the first output stream is 0, the second is 1, and so on. </li> </ul><p>This method must be implemented if any of the following conditions is true:</p><ul> <li> The MFT can add or remove output streams. </li> <li> The MFT allows the client to add or remove input streams. </li> <li> The stream identifiers are not consecutive. </li> </ul><p> All input stream identifiers must be unique within an MFT, and all output stream identifiers must be unique. However, an input stream and an output stream can share the same identifier. </p><p> If the client adds an input stream, the client assigns the identifier, so the MFT must allow arbitrary identifiers, as long as they are unique. If the MFT creates an output stream, the MFT assigns the identifier. </p><p> By convention, if an MFT has exactly one fixed input stream and one fixed output stream, it should assign the identifier 0 to both streams. </p><p>If <strong>MFT_UNIQUE_METHOD_NAMES</strong> is defined before including mftransform.h, this method is renamed <strong>MFTGetStreamIDs</strong>. See Creating Hybrid DMO/MFT Objects.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTransform::GetStreamIDs']/*\"/>\t\n            <msdn-id>ms693988</msdn-id>\t\n            <unmanaged>HRESULT IMFTransform::GetStreamIDs([In] unsigned int dwInputIDArraySize,[Out, Buffer] unsigned int* pdwInputIDs,[In] unsigned int dwOutputIDArraySize,[Out, Buffer] unsigned int* pdwOutputIDs)</unmanaged>\t\n            <unmanaged-short>IMFTransform::GetStreamIDs</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Transform.GetInputStreamInfo(System.Int32,SharpDX.MediaFoundation.TInputStreamInformation@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Gets the buffer requirements and other information for an input stream on this Media Foundation transform (MFT). </p>\t\n            </summary>\t\n            <param name=\"dwInputStreamID\"><dd> <p> Input stream identifier. To get the list of stream identifiers, call <strong><see cref=\"M:SharpDX.MediaFoundation.Transform.GetStreamIDs(System.Int32,System.Int32[],System.Int32,System.Int32[])\"/></strong>. </p> </dd></param>\t\n            <param name=\"streamInfoRef\"><dd> <p> Pointer to an <strong><see cref=\"T:SharpDX.MediaFoundation.TInputStreamInformation\"/></strong> structure. The method fills the structure with information about the input stream. </p> </dd></param>\t\n            <returns><p> The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table. </p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidStreamNumber\"/></strong></dt> </dl> </td><td> <p> Invalid stream identifier. </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>It is valid to call this method before setting the media types.</p><p>If <strong>MFT_UNIQUE_METHOD_NAMES</strong> is defined before including mftransform.h, this method is renamed <strong>MFTGetInputStreamInfo</strong>. See Creating Hybrid DMO/MFT Objects.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTransform::GetInputStreamInfo']/*\"/>\t\n            <msdn-id>ms703894</msdn-id>\t\n            <unmanaged>HRESULT IMFTransform::GetInputStreamInfo([In] unsigned int dwInputStreamID,[Out] MFT_INPUT_STREAM_INFO* pStreamInfo)</unmanaged>\t\n            <unmanaged-short>IMFTransform::GetInputStreamInfo</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Transform.GetOutputStreamInfo(System.Int32,SharpDX.MediaFoundation.TOutputStreamInformation@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Gets the buffer requirements and other information for an output stream on this Media Foundation transform (MFT). </p>\t\n            </summary>\t\n            <param name=\"dwOutputStreamID\"><dd> <p> Output stream identifier. To get the list of stream identifiers, call <strong><see cref=\"M:SharpDX.MediaFoundation.Transform.GetStreamIDs(System.Int32,System.Int32[],System.Int32,System.Int32[])\"/></strong>. </p> </dd></param>\t\n            <param name=\"streamInfoRef\"><dd> <p> Pointer to an <strong><see cref=\"T:SharpDX.MediaFoundation.TOutputStreamInformation\"/></strong> structure. The method fills the structure with information about the output stream. </p> </dd></param>\t\n            <returns><p> The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table. </p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidStreamNumber\"/></strong></dt> </dl> </td><td> <p> Invalid stream number. </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>It is valid to call this method before setting the media types.</p><p>If <strong>MFT_UNIQUE_METHOD_NAMES</strong> is defined before including mftransform.h, this method is renamed <strong>MFTGetOutputStreamInfo</strong>. See Creating Hybrid DMO/MFT Objects.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTransform::GetOutputStreamInfo']/*\"/>\t\n            <msdn-id>ms693880</msdn-id>\t\n            <unmanaged>HRESULT IMFTransform::GetOutputStreamInfo([In] unsigned int dwOutputStreamID,[Out] MFT_OUTPUT_STREAM_INFO* pStreamInfo)</unmanaged>\t\n            <unmanaged-short>IMFTransform::GetOutputStreamInfo</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Transform.GetAttributes(SharpDX.MediaFoundation.MediaAttributes@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Gets the global attribute store for this Media Foundation transform (MFT). </p>\t\n            </summary>\t\n            <param name=\"attributesRef\"><dd> <p> Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaAttributes\"/></strong> interface. The caller must release the interface. </p> </dd></param>\t\n            <returns><p> The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table. </p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded. </p> </td></tr> <tr><td> <dl> <dt><strong>E_NOTIMPL</strong></dt> </dl> </td><td> <p> The MFT does not support attributes. </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> Use the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaAttributes\"/></strong> reference retrieved by this method to get or set attributes that apply to the entire MFT. To get the attribute store for an input stream, call <strong><see cref=\"M:SharpDX.MediaFoundation.Transform.GetInputStreamAttributes(System.Int32,SharpDX.MediaFoundation.MediaAttributes@)\"/></strong>. To get the attribute store for an output stream, call <strong><see cref=\"M:SharpDX.MediaFoundation.Transform.GetOutputStreamAttributes(System.Int32,SharpDX.MediaFoundation.MediaAttributes@)\"/></strong>. </p><p> Implementation of this method is optional unless the MFT needs to support a particular set of attributes. Exception: Hardware-based MFTs must implement this method. See Hardware MFTs.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTransform::GetAttributes']/*\"/>\t\n            <msdn-id>ms703141</msdn-id>\t\n            <unmanaged>HRESULT IMFTransform::GetAttributes([Out] IMFAttributes** pAttributes)</unmanaged>\t\n            <unmanaged-short>IMFTransform::GetAttributes</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Transform.GetInputStreamAttributes(System.Int32,SharpDX.MediaFoundation.MediaAttributes@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Gets the attribute store for an input stream on this Media Foundation transform (MFT). </p>\t\n            </summary>\t\n            <param name=\"dwInputStreamID\"><dd> <p> Input stream identifier. To get the list of stream identifiers, call <strong><see cref=\"M:SharpDX.MediaFoundation.Transform.GetStreamIDs(System.Int32,System.Int32[],System.Int32,System.Int32[])\"/></strong>. </p> </dd></param>\t\n            <param name=\"attributesRef\"><dd> <p> Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaAttributes\"/></strong> interface. The caller must release the interface. </p> </dd></param>\t\n            <returns><p> The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table. </p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded. </p> </td></tr> <tr><td> <dl> <dt><strong>E_NOTIMPL</strong></dt> </dl> </td><td> <p> The MFT does not support input stream attributes. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidStreamNumber\"/></strong></dt> </dl> </td><td> <p> Invalid stream identifier. </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> Implementation of this method is optional unless the MFT needs to support a particular set of attributes. </p><p> To get the attribute store for the entire MFT, call <strong><see cref=\"M:SharpDX.MediaFoundation.Transform.GetAttributes(SharpDX.MediaFoundation.MediaAttributes@)\"/></strong>. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTransform::GetInputStreamAttributes']/*\"/>\t\n            <msdn-id>ms695366</msdn-id>\t\n            <unmanaged>HRESULT IMFTransform::GetInputStreamAttributes([In] unsigned int dwInputStreamID,[Out] IMFAttributes** pAttributes)</unmanaged>\t\n            <unmanaged-short>IMFTransform::GetInputStreamAttributes</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Transform.GetOutputStreamAttributes(System.Int32,SharpDX.MediaFoundation.MediaAttributes@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Gets the attribute store for an output stream on this Media Foundation transform (MFT). </p>\t\n            </summary>\t\n            <param name=\"dwOutputStreamID\"><dd> <p> Output stream identifier. To get the list of stream identifiers, call <strong><see cref=\"M:SharpDX.MediaFoundation.Transform.GetStreamIDs(System.Int32,System.Int32[],System.Int32,System.Int32[])\"/></strong>. </p> </dd></param>\t\n            <param name=\"attributesRef\"><dd> <p> Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaAttributes\"/></strong> interface. The caller must release the interface. </p> </dd></param>\t\n            <returns><p> The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table. </p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded. </p> </td></tr> <tr><td> <dl> <dt><strong>E_NOTIMPL</strong></dt> </dl> </td><td> <p> The MFT does not support output stream attributes. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidStreamNumber\"/></strong></dt> </dl> </td><td> <p> Invalid stream identifier. </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> Implementation of this method is optional unless the MFT needs to support a particular set of attributes. </p><p> To get the attribute store for the entire MFT, call <strong><see cref=\"M:SharpDX.MediaFoundation.Transform.GetAttributes(SharpDX.MediaFoundation.MediaAttributes@)\"/></strong>. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTransform::GetOutputStreamAttributes']/*\"/>\t\n            <msdn-id>ms703886</msdn-id>\t\n            <unmanaged>HRESULT IMFTransform::GetOutputStreamAttributes([In] unsigned int dwOutputStreamID,[Out] IMFAttributes** pAttributes)</unmanaged>\t\n            <unmanaged-short>IMFTransform::GetOutputStreamAttributes</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Transform.DeleteInputStream(System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Removes an input stream from this Media Foundation transform (MFT). </p>\t\n            </summary>\t\n            <param name=\"dwStreamID\"><dd> <p> Identifier of the input stream to remove. </p> </dd></param>\t\n            <returns><p> The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table. </p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded. </p> </td></tr> <tr><td> <dl> <dt><strong>E_NOTIMPL</strong></dt> </dl> </td><td> <p> The transform has a fixed number of input streams. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidRequest\"/></strong></dt> </dl> </td><td> <p> The stream is not removable, or the transform currently has the minimum number of input streams it can support. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidStreamNumber\"/></strong></dt> </dl> </td><td> <p> Invalid stream identifier. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.TransformInputRemaining\"/></strong></dt> </dl> </td><td> <p> The transform has unprocessed input buffers for the specified stream. </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> If the transform has a fixed number of input streams, the method returns <strong>E_NOTIMPL</strong>. </p><p> An MFT might support this method but not allow certain input streams to be removed. If an input stream can be removed, the <strong><see cref=\"M:SharpDX.MediaFoundation.Transform.GetInputStreamInfo(System.Int32,SharpDX.MediaFoundation.TInputStreamInformation@)\"/></strong> method returns the <strong><see cref=\"F:SharpDX.MediaFoundation.MftInputStreamInformationFlags.MftInputStreamRemovable\"/></strong> flag for that stream. Otherwise, the stream cannot be removed, and the method returns <strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidRequest\"/></strong>. The method also fails if the MFT currently has the minimum number of input streams that it requires. To find the minimum number of streams, call <strong><see cref=\"M:SharpDX.MediaFoundation.Transform.GetStreamLimits(System.Int32@,System.Int32@,System.Int32@,System.Int32@)\"/></strong>. </p><p> If the transform still has unprocessed input for that stream, the method might succeed or it might return <strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.TransformInputRemaining\"/></strong>. If the method succeeds, the MFT will continue to process the remaining input after the stream is removed. If the method returns <strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.TransformInputRemaining\"/></strong>, you must clear the input buffers before removing the stream. To clear the input buffers, either call <strong><see cref=\"M:SharpDX.MediaFoundation.Transform.ProcessOutput(SharpDX.MediaFoundation.TransformProcessOutputFlags,System.Int32,SharpDX.MediaFoundation.TOutputDataBuffer,SharpDX.MediaFoundation.TransformProcessOutputStatus@)\"/></strong> or else call <strong><see cref=\"M:SharpDX.MediaFoundation.Transform.ProcessMessage(SharpDX.MediaFoundation.TMessageType,System.IntPtr)\"/></strong> with the <strong><see cref=\"F:SharpDX.MediaFoundation.TMessageType.CommandFlush\"/></strong> to flush the MFT. Then call the <strong>DeleteInputStream</strong> again. An MFT should never discard input buffers when <strong>DeleteInputStream</strong> is called. </p><p>If <strong>MFT_UNIQUE_METHOD_NAMES</strong> is defined before including mftransform.h, this method is renamed <strong>MFTDeleteInputStream</strong>. See Creating Hybrid DMO/MFT Objects.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTransform::DeleteInputStream']/*\"/>\t\n            <msdn-id>ms703159</msdn-id>\t\n            <unmanaged>HRESULT IMFTransform::DeleteInputStream([In] unsigned int dwStreamID)</unmanaged>\t\n            <unmanaged-short>IMFTransform::DeleteInputStream</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Transform.AddInputStreams(System.Int32,System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Adds one or more new input streams to this Media Foundation transform (MFT). </p>\t\n            </summary>\t\n            <param name=\"cStreams\"><dd> <p> Number of streams to add. </p> </dd></param>\t\n            <param name=\"adwStreamIDs\"><dd> <p> Array of stream identifiers. The new stream identifiers must not match any existing input streams. </p> </dd></param>\t\n            <returns><p> The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table. </p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded. </p> </td></tr> <tr><td> <dl> <dt><strong>E_INVALIDARG</strong></dt> </dl> </td><td> <p> Invalid argument. </p> </td></tr> <tr><td> <dl> <dt><strong>E_NOTIMPL</strong></dt> </dl> </td><td> <p> The MFT has a fixed number of input streams. </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> If the new streams exceed the maximum number of input streams for this transform, the method returns <strong>E_INVALIDARG.</strong> To find the maximum number of input streams, call <strong><see cref=\"M:SharpDX.MediaFoundation.Transform.GetStreamLimits(System.Int32@,System.Int32@,System.Int32@,System.Int32@)\"/></strong>. </p><p> If any of the new stream identifiers conflicts with an existing input stream, the method returns <strong>E_INVALIDARG</strong>. </p><p>If <strong>MFT_UNIQUE_METHOD_NAMES</strong> is defined before including mftransform.h, this method is renamed <strong>MFTAddInputStreams</strong>. See Creating Hybrid DMO/MFT Objects.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTransform::AddInputStreams']/*\"/>\t\n            <msdn-id>ms696211</msdn-id>\t\n            <unmanaged>HRESULT IMFTransform::AddInputStreams([In] unsigned int cStreams,[In] unsigned int* adwStreamIDs)</unmanaged>\t\n            <unmanaged-short>IMFTransform::AddInputStreams</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Transform.GetInputAvailableType(System.Int32,System.Int32,SharpDX.MediaFoundation.MediaType@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Gets an available media type for an input stream on this Media Foundation transform (MFT). </p>\t\n            </summary>\t\n            <param name=\"dwInputStreamID\"><dd> <p> Input stream identifier. To get the list of stream identifiers, call <strong><see cref=\"M:SharpDX.MediaFoundation.Transform.GetStreamIDs(System.Int32,System.Int32[],System.Int32,System.Int32[])\"/></strong>. </p> </dd></param>\t\n            <param name=\"dwTypeIndex\"><dd> <p> Index of the media type to retrieve. Media types are indexed from zero and returned in approximate order of preference. </p> </dd></param>\t\n            <param name=\"typeOut\"><dd> <p> Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaType\"/></strong> interface. </p> </dd></param>\t\n            <returns><p> The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table. </p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded. </p> </td></tr> <tr><td> <dl> <dt><strong>E_NOTIMPL</strong></dt> </dl> </td><td> <p> The MFT does not have a list of available input types. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidStreamNumber\"/></strong></dt> </dl> </td><td> <p> Invalid stream identifier. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.NoMoreTypes\"/></strong></dt> </dl> </td><td> <p> The <em>dwTypeIndex</em> parameter is out of range. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.TransformTypeNotSet\"/></strong></dt> </dl> </td><td> <p> You must set the output types before setting the input types. </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> The MFT defines a list of available media types for each input stream and orders them by preference. This method enumerates the available media types for an input stream. To enumerate the available types, increment <em>dwTypeIndex</em> until the method returns <strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.NoMoreTypes\"/></strong>. </p><p> Setting the media type on one stream might change the available types for another stream, or change the preference order. However, an MFT is not required to update the list of available types dynamically. The only guaranteed way to test whether you can set a particular input type is to call <strong><see cref=\"M:SharpDX.MediaFoundation.Transform.SetInputType(System.Int32,SharpDX.MediaFoundation.MediaType,System.Int32)\"/></strong>. </p><p> In some cases, an MFT cannot return a list of input types until one or more output types are set. If so, the method returns <strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.TransformTypeNotSet\"/></strong>. </p><p> An MFT is not required to implement this method. However, most MFTs should implement this method, unless the supported types are simple and can be discovered through the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.TGetInfo(System.Guid,System.IntPtr,SharpDX.MediaFoundation.TRegisterTypeInformation[],System.Int32@,SharpDX.MediaFoundation.TRegisterTypeInformation[],System.Int32@,SharpDX.MediaFoundation.MediaAttributes@)\"/></strong> function.</p><p>If <strong>MFT_UNIQUE_METHOD_NAMES</strong> is defined before including mftransform.h, this method is renamed <strong>MFTGetInputAvailableType</strong>. See Creating Hybrid DMO/MFT Objects.</p>Implementation Notes<p>If the MFT stores a media type internally, the MFT should return a clone of the media  type, not a reference to the original type. Otherwise, the caller might modify the type and alter the internal state of the MFT.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTransform::GetInputAvailableType']/*\"/>\t\n            <msdn-id>ms704814</msdn-id>\t\n            <unmanaged>HRESULT IMFTransform::GetInputAvailableType([In] unsigned int dwInputStreamID,[In] unsigned int dwTypeIndex,[Out] IMFMediaType** ppType)</unmanaged>\t\n            <unmanaged-short>IMFTransform::GetInputAvailableType</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Transform.GetOutputAvailableType(System.Int32,System.Int32,SharpDX.MediaFoundation.MediaType@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Gets an available media type for an output stream on this Media Foundation transform (MFT). </p>\t\n            </summary>\t\n            <param name=\"dwOutputStreamID\"><dd> <p> Output stream identifier. To get the list of stream identifiers, call <strong><see cref=\"M:SharpDX.MediaFoundation.Transform.GetStreamIDs(System.Int32,System.Int32[],System.Int32,System.Int32[])\"/></strong>. </p> </dd></param>\t\n            <param name=\"dwTypeIndex\"><dd> <p> Index of the media type to retrieve. Media types are indexed from zero and returned in approximate order of preference. </p> </dd></param>\t\n            <param name=\"typeOut\"><dd> <p> Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaType\"/></strong> interface. The caller must release the interface. </p> </dd></param>\t\n            <returns><p> The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table. </p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded. </p> </td></tr> <tr><td> <dl> <dt><strong>E_NOTIMPL</strong></dt> </dl> </td><td> <p> The MFT does not have a list of available output types. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidStreamNumber\"/></strong></dt> </dl> </td><td> <p> Invalid stream identifier. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.NoMoreTypes\"/></strong></dt> </dl> </td><td> <p> The <em>dwTypeIndex</em> parameter is out of range. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.TransformTypeNotSet\"/></strong></dt> </dl> </td><td> <p> You must set the input types before setting the output types. </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> The MFT defines a list of available media types for each output stream and orders them by preference. This method enumerates the available media types for an output stream. To enumerate the available types, increment <em>dwTypeIndex</em> until the method returns MF_<strong>E_NO_MORE_TYPES</strong>. </p><p> Setting the media type on one stream can change the available types for another stream (or change the preference order). However, an MFT is not required to update the list of available types dynamically. The only guaranteed way to test whether you can set a particular input type is to call <strong><see cref=\"M:SharpDX.MediaFoundation.Transform.SetOutputType(System.Int32,SharpDX.MediaFoundation.MediaType,System.Int32)\"/></strong>. </p><p> In some cases, an MFT cannot return a list of output types until one or more input types are set. If so, the method returns <strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.TransformTypeNotSet\"/></strong>. </p><p> An MFT is not required to implement this method. However, most MFTs should implement this method, unless the supported types are simple and can be discovered through the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.TGetInfo(System.Guid,System.IntPtr,SharpDX.MediaFoundation.TRegisterTypeInformation[],System.Int32@,SharpDX.MediaFoundation.TRegisterTypeInformation[],System.Int32@,SharpDX.MediaFoundation.MediaAttributes@)\"/></strong> function. </p><p> This method can return a <em>partial</em> media type. A partial media type contains an incomplete description of a format, and is used to provide a hint to the caller. For example, a partial type might include just the major type and subtype GUIDs. However, after the client sets the input types on the MFT, the MFT should generally return at least one complete output type, which can be used without further modification. For more information, see Complete and Partial Media Types.</p><p>Some MFTs cannot provide an accurate list of output types until the MFT receives the first input sample. For example, the MFT might need to read the first packet header to deduce the format. An MFT should handle this situation as follows:</p><ol> <li> Before the MFT receives any input, it offers a list of one or more output types that it could possibly produce. For example, an MPEG-2 decoder might return a media type that describes the MPEG-2 main profile/main level. </li> <li> The client selects one of these types (generally the first) and sets it on the output stream. </li> <li> The client delivers the first input sample by calling <strong><see cref=\"M:SharpDX.MediaFoundation.Transform.ProcessInput(System.Int32,SharpDX.MediaFoundation.Sample,System.Int32)\"/></strong>. </li> <li> If the output type does not conform to the input data, the transform signals a format change in the <strong>ProcessOutput</strong> method. For more information about format changes, see <strong><see cref=\"M:SharpDX.MediaFoundation.Transform.ProcessOutput(SharpDX.MediaFoundation.TransformProcessOutputFlags,System.Int32,SharpDX.MediaFoundation.TOutputDataBuffer,SharpDX.MediaFoundation.TransformProcessOutputStatus@)\"/></strong>. </li> <li> The calls <strong>GetOutputAvailableType</strong> again. At this point, the method should return an updated list of types that reflects the input data. </li> <li> The client selects a new output type from this list and calls <strong>SetOutputType</strong>. </li> </ol><p>If <strong>MFT_UNIQUE_METHOD_NAMES</strong> is defined before including mftransform.h, this method is renamed <strong>MFTGetOutputAvailableType</strong>. See Creating Hybrid DMO/MFT Objects.</p>Implementation Notes<p>If the MFT stores a media type internally, the MFT should return a clone of the media  type, not a reference to the original type. Otherwise, the caller might modify the type and alter the internal state of the MFT.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTransform::GetOutputAvailableType']/*\"/>\t\n            <msdn-id>ms703812</msdn-id>\t\n            <unmanaged>HRESULT IMFTransform::GetOutputAvailableType([In] unsigned int dwOutputStreamID,[In] unsigned int dwTypeIndex,[Out] IMFMediaType** ppType)</unmanaged>\t\n            <unmanaged-short>IMFTransform::GetOutputAvailableType</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Transform.SetInputType(System.Int32,SharpDX.MediaFoundation.MediaType,System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Sets, tests, or clears the media type for an input stream on this Media Foundation transform (MFT). </p>\t\n            </summary>\t\n            <param name=\"dwInputStreamID\"><dd> <p> Input stream identifier. To get the list of stream identifiers, call <strong><see cref=\"M:SharpDX.MediaFoundation.Transform.GetStreamIDs(System.Int32,System.Int32[],System.Int32,System.Int32[])\"/></strong>. </p> </dd></param>\t\n            <param name=\"typeRef\"><dd> <p> Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaType\"/></strong> interface, or <strong><c>null</c></strong>. </p> </dd></param>\t\n            <param name=\"dwFlags\"><dd> <p> Zero or more flags from the <strong>_MFT_SET_TYPE_FLAGS</strong> enumeration. </p> </dd></param>\t\n            <returns><p> The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table. </p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidMediaType\"/></strong></dt> </dl> </td><td> <p> The MFT cannot use the proposed media type. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidStreamNumber\"/></strong></dt> </dl> </td><td> <p> Invalid stream identifier. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidType\"/></strong></dt> </dl> </td><td> <p> The proposed type is not valid. This error code indicates that the media type itself is not configured correctly; for example, it might contain mutually contradictory attributes. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.TransformCannotChangeMediaTypeWhileProcessing\"/></strong></dt> </dl> </td><td> <p> The MFT cannot switch types while processing data. Try draining or flushing the MFT. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.TransformTypeNotSet\"/></strong></dt> </dl> </td><td> <p> You must set the output types before setting the input types. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.UnsupportedD3DType\"/></strong></dt> </dl> </td><td> <p> The MFT could not find a suitable DirectX Video Acceleration (DXVA) configuration. </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>This method can be used to set, test without setting, or clear the media type:</p><ul> <li> To set the media type, set <em>dwFlags</em> to zero and set <em>pType</em> to a non-<strong><c>null</c></strong> reference that specifies the media type. </li> <li> To test the media type without setting it, set <em>dwFlags</em> to <strong><see cref=\"F:SharpDX.MediaFoundation.MftSetTypeFlags.MftSetTypeTestOnly\"/></strong> and set <em>pType</em> to a non-<strong><c>null</c></strong> reference that specifies the media type. If the media type is acceptable, the method return <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns <strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidMediaType\"/></strong>. Regardless of the return value, the current media type does not change. </li> <li> To clear the media type, set <em>pType</em> to <strong><c>null</c></strong>. </li> </ul><p> Setting the media type on one stream may change the acceptable types on another stream. </p><p> An MFT may require the caller to set one or more output types before setting the input type. If so, the method returns <strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.TransformTypeNotSet\"/></strong>. </p><p> If the MFT supports DirectX Video Acceleration (DXVA) but is unable to find a suitable DXVA configuration (for example, if the graphics driver does not have the right capabilities), the method should return <strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.UnsupportedD3DType\"/></strong>. For more information, see Supporting DXVA 2.0 in Media Foundation. </p><p>If <strong>MFT_UNIQUE_METHOD_NAMES</strong> is defined before including mftransform.h, this method is renamed <strong>MFTSetInputType</strong>. See Creating Hybrid DMO/MFT Objects.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTransform::SetInputType']/*\"/>\t\n            <msdn-id>ms700113</msdn-id>\t\n            <unmanaged>HRESULT IMFTransform::SetInputType([In] unsigned int dwInputStreamID,[In, Optional] IMFMediaType* pType,[In] unsigned int dwFlags)</unmanaged>\t\n            <unmanaged-short>IMFTransform::SetInputType</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Transform.SetOutputType(System.Int32,SharpDX.MediaFoundation.MediaType,System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Sets, tests, or clears the media type for an output stream on this Media Foundation transform (MFT). </p>\t\n            </summary>\t\n            <param name=\"dwOutputStreamID\"><dd> <p> Output stream identifier. To get the list of stream identifiers, call <strong><see cref=\"M:SharpDX.MediaFoundation.Transform.GetStreamIDs(System.Int32,System.Int32[],System.Int32,System.Int32[])\"/></strong>. </p> </dd></param>\t\n            <param name=\"typeRef\"><dd> <p> Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaType\"/></strong> interface, or <strong><c>null</c></strong>. </p> </dd></param>\t\n            <param name=\"dwFlags\"><dd> <p> Zero or more flags from the <strong>_MFT_SET_TYPE_FLAGS</strong> enumeration. </p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidMediaType\"/></strong></dt> </dl> </td><td> <p> The transform cannot use the proposed media type. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidStreamNumber\"/></strong></dt> </dl> </td><td> <p> Invalid stream identifier. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidType\"/></strong></dt> </dl> </td><td> <p> The proposed type is not valid. This error code indicates that the media type itself is not configured correctly; for example, it might contain mutually contradictory flags. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.TransformCannotChangeMediaTypeWhileProcessing\"/></strong></dt> </dl> </td><td> <p> The MFT cannot switch types while processing data. Try draining or flushing the MFT. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.TransformTypeNotSet\"/></strong></dt> </dl> </td><td> <p> You must set the input types before setting the output types. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.UnsupportedD3DType\"/></strong></dt> </dl> </td><td> <p> The MFT could not find a suitable DirectX Video Acceleration (DXVA) configuration. </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>This method can be used to set, test without setting, or clear the media type:</p><ul> <li> To set the media type, set <em>dwFlags</em> to zero and set <em>pType</em> to a non-<strong><c>null</c></strong> reference that specifies the media type. </li> <li> To test the media type without setting it, set <em>dwFlags</em> to <strong><see cref=\"F:SharpDX.MediaFoundation.MftSetTypeFlags.MftSetTypeTestOnly\"/></strong> and set <em>pType</em> to a non-<strong><c>null</c></strong> reference that specifies the media type. If the media type is acceptable, the method return <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns <strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidMediaType\"/></strong>. Regardless of the return value, the current media type does not change. </li> <li> To clear the media type, set <em>pType</em> to <strong><c>null</c></strong>. </li> </ul><p> Setting the media type on one stream may change the acceptable types on another stream. </p><p> An MFT may require the caller to set one or more input types before setting the output type. If so, the method returns <strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.TransformTypeNotSet\"/></strong>. </p><p>If the MFT supports DirectX Video Acceleration (DXVA) but is unable to find a suitable DXVA configuration (for example, if the graphics driver does not have the right capabilities), the method should return <strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.UnsupportedD3DType\"/></strong>. For more information, see Supporting DXVA 2.0 in Media Foundation.</p><p>If <strong>MFT_UNIQUE_METHOD_NAMES</strong> is defined before including mftransform.h, this method is renamed <strong>MFTSetOutputType</strong>. See Creating Hybrid DMO/MFT Objects.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTransform::SetOutputType']/*\"/>\t\n            <msdn-id>ms702016</msdn-id>\t\n            <unmanaged>HRESULT IMFTransform::SetOutputType([In] unsigned int dwOutputStreamID,[In, Optional] IMFMediaType* pType,[In] unsigned int dwFlags)</unmanaged>\t\n            <unmanaged-short>IMFTransform::SetOutputType</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Transform.GetInputCurrentType(System.Int32,SharpDX.MediaFoundation.MediaType@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Gets the current media type for an input stream on this Media Foundation transform (MFT). </p>\t\n            </summary>\t\n            <param name=\"dwInputStreamID\"><dd> <p> Input stream identifier. To get the list of stream identifiers, call <strong><see cref=\"M:SharpDX.MediaFoundation.Transform.GetStreamIDs(System.Int32,System.Int32[],System.Int32,System.Int32[])\"/></strong>. </p> </dd></param>\t\n            <param name=\"typeOut\"><dd> <p> Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaType\"/></strong> interface. The caller must release the interface. </p> </dd></param>\t\n            <returns><p> The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table. </p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidStreamNumber\"/></strong></dt> </dl> </td><td> <p> Invalid stream identifier. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.TransformTypeNotSet\"/></strong></dt> </dl> </td><td> <p> The input media type has not been set. </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> If the specified input stream does not yet have a media type, the method returns <strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.TransformTypeNotSet\"/></strong>. Most MFTs do not set any default media types when first created. Instead, the client must set the media type by calling <strong><see cref=\"M:SharpDX.MediaFoundation.Transform.SetInputType(System.Int32,SharpDX.MediaFoundation.MediaType,System.Int32)\"/></strong>. </p><p>If <strong>MFT_UNIQUE_METHOD_NAMES</strong> is defined before including mftransform.h, this method is renamed <strong>MFTGetInputCurrentType</strong>. See Creating Hybrid DMO/MFT Objects.</p>Implementation Notes<p>The MFT should return a clone of the media  type, not a reference to the original type. Otherwise, the caller might modify the type and alter the internal state of the MFT.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTransform::GetInputCurrentType']/*\"/>\t\n            <msdn-id>ms705607</msdn-id>\t\n            <unmanaged>HRESULT IMFTransform::GetInputCurrentType([In] unsigned int dwInputStreamID,[Out] IMFMediaType** ppType)</unmanaged>\t\n            <unmanaged-short>IMFTransform::GetInputCurrentType</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Transform.GetOutputCurrentType(System.Int32,SharpDX.MediaFoundation.MediaType@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Gets the current media type for an output stream on this Media Foundation transform (MFT). </p>\t\n            </summary>\t\n            <param name=\"dwOutputStreamID\"><dd> <p> Output stream identifier. To get the list of stream identifiers, call <strong><see cref=\"M:SharpDX.MediaFoundation.Transform.GetStreamIDs(System.Int32,System.Int32[],System.Int32,System.Int32[])\"/></strong>. </p> </dd></param>\t\n            <param name=\"typeOut\"><dd> <p> Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaType\"/></strong> interface. The caller must release the interface. </p> </dd></param>\t\n            <returns><p> The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table. </p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidStreamNumber\"/></strong></dt> </dl> </td><td> <p> Invalid stream identifier. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.TransformTypeNotSet\"/></strong></dt> </dl> </td><td> <p> The output media type has not been set. </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> If the specified output stream does not yet have a media type, the method returns <strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.TransformTypeNotSet\"/></strong>. Most MFTs do not set any default media types when first created. Instead, the client must set the media type by calling <strong><see cref=\"M:SharpDX.MediaFoundation.Transform.SetOutputType(System.Int32,SharpDX.MediaFoundation.MediaType,System.Int32)\"/></strong>. </p><p>If <strong>MFT_UNIQUE_METHOD_NAMES</strong> is defined before including mftransform.h, this method is renamed <strong>MFTGetOutputCurrentType</strong>. See Creating Hybrid DMO/MFT Objects.</p>Implementation Notes<p>The MFT should return a clone of the media  type, not a reference to the original type. Otherwise, the caller might modify the type and alter the internal state of the MFT.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTransform::GetOutputCurrentType']/*\"/>\t\n            <msdn-id>ms696985</msdn-id>\t\n            <unmanaged>HRESULT IMFTransform::GetOutputCurrentType([In] unsigned int dwOutputStreamID,[Out] IMFMediaType** ppType)</unmanaged>\t\n            <unmanaged-short>IMFTransform::GetOutputCurrentType</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Transform.GetInputStatus(System.Int32,System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Queries whether an input stream on this Media Foundation transform (MFT) can accept more data. </p>\t\n            </summary>\t\n            <param name=\"dwInputStreamID\"><dd> <p> Input stream identifier. To get the list of stream identifiers, call <strong><see cref=\"M:SharpDX.MediaFoundation.Transform.GetStreamIDs(System.Int32,System.Int32[],System.Int32,System.Int32[])\"/></strong>. </p> </dd></param>\t\n            <param name=\"dwFlagsRef\"><dd> <p> Receives a member of the <strong>_MFT_INPUT_STATUS_FLAGS</strong> enumeration, or zero. If the value is <strong><see cref=\"F:SharpDX.MediaFoundation.MftInputStatusFlags.MftInputStatusAcceptData\"/></strong>, the stream specified in <em>dwInputStreamID</em> can accept more input data. </p> </dd></param>\t\n            <returns><p> The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table. </p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidStreamNumber\"/></strong></dt> </dl> </td><td> <p> Invalid stream identifier. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.TransformTypeNotSet\"/></strong></dt> </dl> </td><td> <p> The media type is not set on one or more streams. </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> If the method returns the <strong><see cref=\"F:SharpDX.MediaFoundation.MftInputStatusFlags.MftInputStatusAcceptData\"/></strong> flag, you can deliver an input sample to the specified stream by calling <strong><see cref=\"M:SharpDX.MediaFoundation.Transform.ProcessInput(System.Int32,SharpDX.MediaFoundation.Sample,System.Int32)\"/></strong>. If the method succeeds but does not return any flags in the <em>pdwFlags</em> parameter, it means the input stream already has as much data as it can accept. </p><p> Use this method to test whether the input stream is ready to accept more data, without incurring the overhead of allocating a new sample and calling <strong>ProcessInput</strong>. </p><p> After the client has set valid media types on all of the streams, the MFT should always be in one of two states: Able to accept more input, or able to produce more output (or both). </p><p>If <strong>MFT_UNIQUE_METHOD_NAMES</strong> is defined before including mftransform.h, this method is renamed <strong>MFTGetInputStatus</strong>. See Creating Hybrid DMO/MFT Objects.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTransform::GetInputStatus']/*\"/>\t\n            <msdn-id>ms697478</msdn-id>\t\n            <unmanaged>HRESULT IMFTransform::GetInputStatus([In] unsigned int dwInputStreamID,[Out] unsigned int* pdwFlags)</unmanaged>\t\n            <unmanaged-short>IMFTransform::GetInputStatus</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Transform.GetOutputStatus(System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Queries whether the Media Foundation transform (MFT) is ready to produce output data. </p>\t\n            </summary>\t\n            <param name=\"dwFlagsRef\"><dd> <p> Receives a member of the <strong>_MFT_OUTPUT_STATUS_FLAGS</strong> enumeration, or zero. If the value is <strong><see cref=\"F:SharpDX.MediaFoundation.MftOutputStatusFlags.MftOutputStatusSampleReady\"/></strong>, the MFT can produce an output sample. </p> </dd></param>\t\n            <returns><p> The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table. </p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded. </p> </td></tr> <tr><td> <dl> <dt><strong>E_NOTIMPL</strong></dt> </dl> </td><td> <p> Not implemented. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.TransformTypeNotSet\"/></strong></dt> </dl> </td><td> <p> The media type is not set on one or more streams. </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> If the method returns the <strong><see cref=\"F:SharpDX.MediaFoundation.MftOutputStatusFlags.MftOutputStatusSampleReady\"/></strong> flag, it means you can generate one or more output samples by calling <strong><see cref=\"M:SharpDX.MediaFoundation.Transform.ProcessOutput(SharpDX.MediaFoundation.TransformProcessOutputFlags,System.Int32,SharpDX.MediaFoundation.TOutputDataBuffer,SharpDX.MediaFoundation.TransformProcessOutputStatus@)\"/></strong>. </p><p> MFTs are not required to implement this method. If the method returns <strong>E_NOTIMPL</strong>, you must call <strong>ProcessOutput</strong> to determine whether the transform has output data. </p><p> If the MFT has more than one output stream, but it does not produce samples at the same time for each stream, it can set the <strong><see cref=\"F:SharpDX.MediaFoundation.MftOutputStatusFlags.MftOutputStatusSampleReady\"/></strong> flag when just one stream is ready. However, if the MFT normally produces samples at the same time for each output stream, it should not set this flag until all streams are ready. </p><p> After the client has set valid media types on all of the streams, the MFT should always be in one of two states: Able to accept more input, or able to produce more output. </p><p>If <strong>MFT_UNIQUE_METHOD_NAMES</strong> is defined before including mftransform.h, this method is renamed <strong>MFTGetOutputStatus</strong>. See Creating Hybrid DMO/MFT Objects.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTransform::GetOutputStatus']/*\"/>\t\n            <msdn-id>ms696269</msdn-id>\t\n            <unmanaged>HRESULT IMFTransform::GetOutputStatus([Out] unsigned int* pdwFlags)</unmanaged>\t\n            <unmanaged-short>IMFTransform::GetOutputStatus</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Transform.SetOutputBounds(System.Int64,System.Int64)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Sets the range of time stamps the client needs for output. </p>\t\n            </summary>\t\n            <param name=\"hnsLowerBound\"><dd> <p> Specifies the earliest time stamp. The Media Foundation transform (MFT) will accept input until it can produce an output sample that begins at this time; or until it can produce a sample that ends at this time or later. If there is no lower bound, use the value <strong>MFT_OUTPUT_BOUND_LOWER_UNBOUNDED</strong>. </p> </dd></param>\t\n            <param name=\"hnsUpperBound\"><dd> <p> Specifies the latest time stamp. The MFT will not produce an output sample with time stamps later than this time. If there is no upper bound, use the value <strong>MFT_OUTPUT_BOUND_UPPER_UNBOUNDED</strong>. </p> </dd></param>\t\n            <returns><p> The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table. </p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded. </p> </td></tr> <tr><td> <dl> <dt><strong>E_NOTIMPL</strong></dt> </dl> </td><td> <p> Not implemented. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.TransformTypeNotSet\"/></strong></dt> </dl> </td><td> <p> The media type is not set on one or more streams. </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> This method can be used to optimize preroll, especially in formats that have gaps between time stamps, or formats where the data must start on a sync point, such as MPEG-2. Calling this method is optional, and implementation of this method by an MFT is optional. If the MFT does not implement the method, the return value is <strong>E_NOTIMPL</strong>.</p><p> If an MFT implements this method, it must limit its output data to the range of times specified by <em>hnsLowerBound</em> and <em>hnsUpperBound</em>. The MFT discards any input data that is not needed to produce output within this range. If the sample boundaries do not exactly match the range, the MFT should split the output samples, if possible. Otherwise, the output samples can overlap the range. </p><p> For example, suppose the output range is 100 to 150 milliseconds (ms), and the output format is video with each frame lasting 33 ms. A sample with a time stamp of 67 ms overlaps the range (67 + 33 = 100) and is produced as output. A sample with a time stamp of  66 ms is discarded (66 + 33 = 99). Similarly, a sample with a time stamp of 150 ms is produced as output, but a sample with a time stamp of 151 is discarded.</p><p>If <strong>MFT_UNIQUE_METHOD_NAMES</strong> is defined before including mftransform.h, this method is renamed <strong>MFTSetOutputBounds</strong>. See Creating Hybrid DMO/MFT Objects.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTransform::SetOutputBounds']/*\"/>\t\n            <msdn-id>ms693812</msdn-id>\t\n            <unmanaged>HRESULT IMFTransform::SetOutputBounds([In] longlong hnsLowerBound,[In] longlong hnsUpperBound)</unmanaged>\t\n            <unmanaged-short>IMFTransform::SetOutputBounds</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Transform.ProcessEvent(System.Int32,SharpDX.MediaFoundation.MediaEvent)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Sends an event to an input stream on this Media Foundation transform (MFT). </p>\t\n            </summary>\t\n            <param name=\"dwInputStreamID\"><dd> <p> Input stream identifier. To get the list of stream identifiers, call <strong><see cref=\"M:SharpDX.MediaFoundation.Transform.GetStreamIDs(System.Int32,System.Int32[],System.Int32,System.Int32[])\"/></strong>. </p> </dd></param>\t\n            <param name=\"eventRef\"><dd> <p> Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaEvent\"/></strong> interface of an event object. </p> </dd></param>\t\n            <returns><p> The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table. </p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded. </p> </td></tr> <tr><td> <dl> <dt><strong>E_NOTIMPL</strong></dt> </dl> </td><td> <p> Not implemented. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidStreamNumber\"/></strong></dt> </dl> </td><td> <p> Invalid stream number. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.TransformTypeNotSet\"/></strong></dt> </dl> </td><td> <p> The media type is not set on one or more streams. </p> </td></tr> <tr><td> <dl> <dt><strong>MF_S_TRANSFORM_DO_NOT_PROPAGATE_EVENT</strong></dt> </dl> </td><td> <p> The pipeline should not propagate the event. </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> An MFT can handle sending the event downstream, or it can let the pipeline do this, as indicated by the return value: </p><ul> <li><strong>E_NOTIMPL</strong>: The MFT ignores all events, and the pipeline should send all events downstream. After the pipeline receives this return value, it might not call <strong>ProcessEvent</strong> again. </li> <li><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>: The MFT has examined this event, but the pipeline should send the event downstream. Internally, the MFT might respond to the event in some way, or it might ignore the event. </li> <li><strong>MF_S_TRANSFORM_DO_NOT_PROPAGATE_EVENT</strong>: The pipeline should not propagate this event downstream. Either the MFT will send the event downstream, or else the MFT will consume the event and not send it downstream. The MFT should only consume the event if the event should stop at this MFT and not travel any further downstream. But in most cases, the event should travel downstream. </li> </ul><p> To send the event downstream, the MFT adds the event to the collection object that is provided by the client in the <strong>pEvents</strong> member of the <strong><see cref=\"T:SharpDX.MediaFoundation.TOutputDataBuffer\"/></strong> structure, when the client calls <strong><see cref=\"M:SharpDX.MediaFoundation.Transform.ProcessOutput(SharpDX.MediaFoundation.TransformProcessOutputFlags,System.Int32,SharpDX.MediaFoundation.TOutputDataBuffer,SharpDX.MediaFoundation.TransformProcessOutputStatus@)\"/></strong>. </p><p> Events must be serialized with the samples that come before and after them. Attach the event to the output sample that follows the event. (The pipeline will process the event first, and then the sample.) If an MFT holds back one or more samples between calls to <strong><see cref=\"M:SharpDX.MediaFoundation.Transform.ProcessInput(System.Int32,SharpDX.MediaFoundation.Sample,System.Int32)\"/></strong> and <strong>ProcessOutput</strong>, the MFT should handle sending all events downstream, because in this situation the pipeline cannot correlate input samples with output samples. </p><p> If an MFT does not hold back samples and does not need to examine any events, it can return <strong>E_NOTIMPL</strong>. </p><p>If <strong>MFT_UNIQUE_METHOD_NAMES</strong> is defined before including mftransform.h, this method is renamed <strong>MFTProcessEvent</strong>. See Creating Hybrid DMO/MFT Objects.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTransform::ProcessEvent']/*\"/>\t\n            <msdn-id>ms695394</msdn-id>\t\n            <unmanaged>HRESULT IMFTransform::ProcessEvent([In] unsigned int dwInputStreamID,[In, Optional] IMFMediaEvent* pEvent)</unmanaged>\t\n            <unmanaged-short>IMFTransform::ProcessEvent</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Transform.ProcessMessage(SharpDX.MediaFoundation.TMessageType,System.IntPtr)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Sends a message to the Media Foundation transform (MFT). </p>\t\n            </summary>\t\n            <param name=\"eMessage\"><dd> <p> The message to send, specified as a member of the <strong><see cref=\"T:SharpDX.MediaFoundation.TMessageType\"/></strong> enumeration. </p> </dd></param>\t\n            <param name=\"ulParam\"><dd> <p> Message parameter. The meaning of this parameter depends on the message type. </p> </dd></param>\t\n            <returns><p> The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table. </p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidStreamNumber\"/></strong></dt> </dl> </td><td> <p> Invalid stream number. Applies to the <strong><see cref=\"F:SharpDX.MediaFoundation.TMessageType.NotifyEndOfStream\"/></strong> message. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.TransformTypeNotSet\"/></strong></dt> </dl> </td><td> <p> The media type is not set on one or more streams. </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> Before calling this method, set the media types on all input and output streams. </p><p> The MFT might ignore certain message types. If so, the method returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. An error code indicates that the transform handles this message type but was unable to process the message in this instance. </p><p>If <strong>MFT_UNIQUE_METHOD_NAMES</strong> is defined before including mftransform.h, this method is renamed <strong>MFTProcessMessage</strong>. See Creating Hybrid DMO/MFT Objects.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTransform::ProcessMessage']/*\"/>\t\n            <msdn-id>ms701863</msdn-id>\t\n            <unmanaged>HRESULT IMFTransform::ProcessMessage([In] MFT_MESSAGE_TYPE eMessage,[In] ULONG_PTR ulParam)</unmanaged>\t\n            <unmanaged-short>IMFTransform::ProcessMessage</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Transform.ProcessInput(System.Int32,SharpDX.MediaFoundation.Sample,System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Delivers data to an input stream on this Media Foundation transform (MFT). </p>\t\n            </summary>\t\n            <param name=\"dwInputStreamID\"><dd> <p> Input stream identifier. To get the list of stream identifiers, call <strong><see cref=\"M:SharpDX.MediaFoundation.Transform.GetStreamIDs(System.Int32,System.Int32[],System.Int32,System.Int32[])\"/></strong>. </p> </dd></param>\t\n            <param name=\"sampleRef\"><dd> <p> Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.Sample\"/></strong> interface of the input sample. The sample must contain at least one media buffer that contains valid input data. </p> </dd></param>\t\n            <param name=\"dwFlags\"><dd> <p> Reserved. Must be zero. </p> </dd></param>\t\n            <returns><p> The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table. </p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded. </p> </td></tr> <tr><td> <dl> <dt><strong>E_INVALIDARG</strong></dt> </dl> </td><td> <p> Invalid argument. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidStreamNumber\"/></strong></dt> </dl> </td><td> <p> Invalid stream identifier. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.NoSampleDuration\"/></strong></dt> </dl> </td><td> <p>The input sample requires a valid sample duration. To set the duration, call <strong><see cref=\"M:SharpDX.MediaFoundation.Sample.SetSampleDuration(System.Int64)\"/></strong>. </p> <p>Some MFTs require that input samples have valid durations. Some MFTs do not require sample durations.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.NoSampleTimestamp\"/></strong></dt> </dl> </td><td> <p>The input sample requires a time stamp. To set the time stamp, call <strong><see cref=\"M:SharpDX.MediaFoundation.Sample.SetSampleTime(System.Int64)\"/></strong>. </p> <p>Some MFTs require that input samples have valid time stamps. Some MFTs do not require time stamps.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.NotAccepting\"/></strong></dt> </dl> </td><td> <p> The transform cannot process more input at this time. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.TransformTypeNotSet\"/></strong></dt> </dl> </td><td> <p> The media type is not set on one or more streams. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.UnsupportedD3DType\"/></strong></dt> </dl> </td><td> <p> The media type is not supported for DirectX Video Acceleration (DXVA). A DXVA-enabled decoder might return this error code. </p> </td></tr> </table><p>?</p><p><strong>Note</strong>??If you are converting a DirectX Media Object (DMO) to an MFT, be aware that <strong>S_FALSE</strong> is not a valid return code for <strong><see cref=\"M:SharpDX.MediaFoundation.Transform.ProcessInput(System.Int32,SharpDX.MediaFoundation.Sample,System.Int32)\"/></strong>, unlike the <strong><see cref=\"M:SharpDX.MediaFoundation.IMediaObject.ProcessInput(System.Int32,SharpDX.MediaFoundation.IMediaBuffer,System.Int32,System.Int64,System.Int64)\"/></strong> method.</p></returns>\t\n            <remarks>\t\n            <p> In most cases, if the method succeeds, the MFT stores the sample and holds a reference count on the <strong><see cref=\"T:SharpDX.MediaFoundation.Sample\"/></strong> reference. Do not re-use the sample until the MFT releases the sample. Instead of storing the sample, however, an MFT might copy the sample data into a new buffer. In that case, the MFT should set the <strong><see cref=\"F:SharpDX.MediaFoundation.MftInputStreamInformationFlags.MftInputStreamDoesNotAddref\"/></strong> flag in the <strong><see cref=\"M:SharpDX.MediaFoundation.Transform.GetInputStreamInfo(System.Int32,SharpDX.MediaFoundation.TInputStreamInformation@)\"/></strong> method. </p><p> If the MFT already has enough input data to produce an output sample, it does not accept new input data, and <strong>ProcessInput</strong> returns <strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.NotAccepting\"/></strong>. At that point, the client should clear the pending input data by doing one of the following: </p><ul> <li> Generate new output by calling <strong><see cref=\"M:SharpDX.MediaFoundation.Transform.ProcessOutput(SharpDX.MediaFoundation.TransformProcessOutputFlags,System.Int32,SharpDX.MediaFoundation.TOutputDataBuffer,SharpDX.MediaFoundation.TransformProcessOutputStatus@)\"/></strong>. </li> <li> Flush the input data by calling <strong><see cref=\"M:SharpDX.MediaFoundation.Transform.ProcessMessage(SharpDX.MediaFoundation.TMessageType,System.IntPtr)\"/></strong> with the MFT_<strong>MESSAGE_COMMAND_FLUSH</strong> message. </li> </ul><p> An exception to this rule is the <strong><see cref=\"F:SharpDX.MediaFoundation.MftOutputStreamInformationFlags.MftOutputStreamLazyRead\"/></strong> flag. When this flag is present, the transform will discard stored samples if you give it more input. For more information, see <strong><see cref=\"M:SharpDX.MediaFoundation.Transform.GetOutputStreamInfo(System.Int32,SharpDX.MediaFoundation.TOutputStreamInformation@)\"/></strong>. A transform should never queue any more input data than is required to produce the correct output. </p><p> An MFT can process the input data in the <strong>ProcessInput</strong> method. However, most MFTs wait until the client calls <strong>ProcessOutput</strong>. </p><p> After the client has set valid media types on all of the streams, the MFT should always be in one of two states: Able to accept more input, or able to produce more output. It should never be in both states or neither state. An MFT should only accept as much input as it needs to generate at least one output sample, at which point <strong>ProcessInput</strong> returns <strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.NotAccepting\"/></strong>. When <strong>ProcessInput</strong> returns <strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.NotAccepting\"/></strong>, the client can assume that the MFT is ready to produce output. </p><p> If an MFT encounters a non-fatal error in the input data, it can simply drop the data and attempt to recover when it gets the more input data. To request more input data, the MFT returns <strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.TransformNeedMoreInput\"/></strong> from the <strong><see cref=\"M:SharpDX.MediaFoundation.Transform.ProcessOutput(SharpDX.MediaFoundation.TransformProcessOutputFlags,System.Int32,SharpDX.MediaFoundation.TOutputDataBuffer,SharpDX.MediaFoundation.TransformProcessOutputStatus@)\"/></strong> method. If the MFT drops any data, it should set the <strong><see cref=\"F:SharpDX.MediaFoundation.SampleAttributeKeys.Discontinuity\"/></strong> attribute attribute on the next output sample, to notify the caller that there is a gap in the data stream. </p><p>If <strong>MFT_UNIQUE_METHOD_NAMES</strong> is defined before including mftransform.h, this method is renamed <strong>MFTProcessInput</strong>. See Creating Hybrid DMO/MFT Objects.</p>Asynchronous Processing<p>The previous remarks describe the <em>synchronous</em> processing model. To support asynchronous processing, see Asynchronous MFTs.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTransform::ProcessInput']/*\"/>\t\n            <msdn-id>ms703131</msdn-id>\t\n            <unmanaged>HRESULT IMFTransform::ProcessInput([In] unsigned int dwInputStreamID,[In] IMFSample* pSample,[In] unsigned int dwFlags)</unmanaged>\t\n            <unmanaged-short>IMFTransform::ProcessInput</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Transform.ProcessOutput(SharpDX.MediaFoundation.TransformProcessOutputFlags,System.Int32,SharpDX.MediaFoundation.TOutputDataBuffer,SharpDX.MediaFoundation.TransformProcessOutputStatus@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Generates output from the current input data. </p>\t\n            </summary>\t\n            <param name=\"dwFlags\"><dd> <p> Bitwise <strong>OR</strong> of zero or more flags from the <strong>_MFT_PROCESS_OUTPUT_FLAGS</strong> enumeration. </p> </dd></param>\t\n            <param name=\"cOutputBufferCount\"><dd> <p> Number of elements in the <em>pOutputSamples</em> array. The value must be at least 1. </p> </dd></param>\t\n            <param name=\"outputSamplesRef\"><dd> <p> Pointer to an array of <strong><see cref=\"T:SharpDX.MediaFoundation.TOutputDataBuffer\"/></strong> structures, allocated by the caller. The MFT uses this array to return output data to the caller. </p> </dd></param>\t\n            <param name=\"dwStatusRef\"><dd> <p> Receives a bitwise <strong>OR</strong> of zero or more flags from the <strong>_MFT_PROCESS_OUTPUT_STATUS</strong> enumeration. </p> </dd></param>\t\n            <returns><p> The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table. </p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded. </p> </td></tr> <tr><td> <dl> <dt><strong>E_UNEXPECTED</strong></dt> </dl> </td><td> <p>The <strong>ProcessOutput</strong> method was called on an asynchronous MFT that was not expecting this method call.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidStreamNumber\"/></strong></dt> </dl> </td><td> <p> Invalid stream identifier in the <strong>dwStreamID</strong> member of one or more <strong><see cref=\"T:SharpDX.MediaFoundation.TOutputDataBuffer\"/></strong> structures. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.TransformNeedMoreInput\"/></strong></dt> </dl> </td><td> <p> The transform cannot produce output data until it receives more input data. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.TransformStreamChange\"/></strong></dt> </dl> </td><td> <p> The format has changed on an output stream, or there is a new preferred format, or there is a new output stream. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.TransformTypeNotSet\"/></strong></dt> </dl> </td><td> <p> You must set the media type on one or more streams of the MFT. </p> </td></tr> </table><p>?</p><p><strong>Note</strong>??If you are converting a DirectX Media Object (DMO) to an MFT, be aware that <strong>S_FALSE</strong> is not a valid return code for <strong><see cref=\"M:SharpDX.MediaFoundation.Transform.ProcessOutput(SharpDX.MediaFoundation.TransformProcessOutputFlags,System.Int32,SharpDX.MediaFoundation.TOutputDataBuffer,SharpDX.MediaFoundation.TransformProcessOutputStatus@)\"/></strong>, unlike the <strong><see cref=\"M:SharpDX.MediaFoundation.IMediaObject.ProcessOutput(System.Int32,System.Int32,SharpDX.MediaFoundation.DmoOutputDataBuffer[],System.Int32@)\"/></strong> method.</p></returns>\t\n            <remarks>\t\n            <p> The size of the <em>pOutputSamples</em> array must be equal to or greater than the number of <em>selected</em> output streams. The number of selected output streams equals the total number of output streams minus the number of <em>deselected</em> streams. A stream is deselected if it has the <strong><see cref=\"F:SharpDX.MediaFoundation.MftOutputStreamInformationFlags.MftOutputStreamOptional\"/></strong> flag and the caller does not set a media type (or sets the media type to <strong><c>null</c></strong>). For more information, see <strong>_MFT_OUTPUT_STREAM_INFO_FLAGS</strong> enumeration. </p><p>This method generates output samples and can also generate events. If the method succeeds, at least one of the following conditions is true:</p><ul> <li> One or more samples in the <em>pOutputSamples</em> array contains output data. </li> <li> One or more members of the <em>pOutputSamples</em> array contains a non-empty collection of events. </li> </ul><p>If <strong>MFT_UNIQUE_METHOD_NAMES</strong> is defined before including Mftransform.h, this method is renamed <strong>MFTProcessOutput</strong>. See Creating Hybrid DMO/MFT Objects.</p>Output Buffers<p>The MFT returns output data for a stream through the <strong>pSample</strong> member of the <strong><see cref=\"T:SharpDX.MediaFoundation.TOutputDataBuffer\"/></strong> structure. This structure member is a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.Sample\"/></strong> interface of a media sample. (See Media Samples.) The media sample is allocated either by the caller or by the MFT, depending on the MFT's allocation model. To find the allocation model, call <strong><see cref=\"M:SharpDX.MediaFoundation.Transform.GetOutputStreamInfo(System.Int32,SharpDX.MediaFoundation.TOutputStreamInformation@)\"/></strong> and examine the <strong>dwFlags</strong> member of the <strong><see cref=\"T:SharpDX.MediaFoundation.TOutputStreamInformation\"/></strong> structure:</p><ul> <li> If the <strong><see cref=\"F:SharpDX.MediaFoundation.MftOutputStreamInformationFlags.MftOutputStreamProvidesSamples\"/></strong> flag is present, the MFT allocates the media sample. </li> <li> If the <strong><see cref=\"F:SharpDX.MediaFoundation.MftOutputStreamInformationFlags.MftOutputStreamCanProvideSamples\"/></strong> flag is present, the caller can optionally provide a media sample. If <strong>pSample</strong> is <strong><c>null</c></strong>, the MFT will allocate the media sample. </li> <li> If neither of these two flags is present, the caller must allocate the media sample. </li> </ul><p>These flags remain constant unless the media type for the output stream changes.</p><p>If the caller allocates the media sample, the media sample must contain a buffer that is large enough to hold the output data. To find the buffer requirements, call <strong>GetOutputStreamInfo</strong>. The MFT writes the output data to the start of the buffer, overwriting any data that already exists in the buffer.</p><p>If the MFT allocates the sample, the MFT also allocates the buffers for the sample.</p><p>If the MFT has multiple output streams, the streams might produce output at different rates, so some streams might have output while other streams do not. If a stream did not any produce output, the MFT sets the <strong><see cref=\"F:SharpDX.MediaFoundation.MftOutputDataBufferFlags.MftOutputDataBufferNoSample\"/></strong> flag in the <strong>dwStatus</strong> member of the <strong><see cref=\"T:SharpDX.MediaFoundation.TOutputDataBuffer\"/></strong> structure for that stream. In that case, if the caller allocated <strong>pSample</strong>, the buffers in the sample do not contain any valid data. If the caller did not allocate <strong>pSample</strong>, the <strong><see cref=\"F:SharpDX.MediaFoundation.MftOutputDataBufferFlags.MftOutputDataBufferNoSample\"/></strong> flag indicates that <strong>pSample</strong> still equals <strong><c>null</c></strong> after the method returns.</p><p>If no output streams have data, and the MFT has no events to return, then <strong>ProcessOutput</strong> returns <strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.TransformNeedMoreInput\"/></strong>.</p><p>The MFT cannot return more than one sample per stream in a single call to <strong>ProcessOutput</strong>. If there is more output data available for a stream after <strong>ProcessOutput</strong> returns, the MFT sets the <strong><see cref=\"F:SharpDX.MediaFoundation.MftOutputDataBufferFlags.MftOutputDataBufferIncomplete\"/></strong> flag in the <strong>dwStatus</strong> member of the <strong><see cref=\"T:SharpDX.MediaFoundation.TOutputDataBuffer\"/></strong> structure for that stream.</p><p>If the MFT has enough data to produce output, it should refuse to accept any more input until <strong>ProcessOutput</strong> has been called enough times to pull all of the available output. (An exception is when the <strong><see cref=\"M:SharpDX.MediaFoundation.Transform.GetOutputStreamInfo(System.Int32,SharpDX.MediaFoundation.TOutputStreamInformation@)\"/></strong> method returns the <strong><see cref=\"F:SharpDX.MediaFoundation.MftOutputStreamInformationFlags.MftOutputStreamLazyRead\"/></strong> flag.) Generally, an MFT with multiple output streams should produce output for a stream as soon as possible, and not wait for all of the streams to have output.</p>In-Band Events<p>The MFT can return a collection of event objects in the <strong>pEvents</strong> member of each <strong><see cref=\"T:SharpDX.MediaFoundation.TOutputDataBuffer\"/></strong> structure. The MFT allocates both the collection object and the events.</p><p>To send an event to the caller, the MFT performs the following steps inside <strong>ProcessOutput</strong>:</p><ol> <li> Create a new collection object by calling <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateCollection(SharpDX.MediaFoundation.Collection@)\"/></strong>. </li> <li> Add one or more events to the collection by calling <strong><see cref=\"M:SharpDX.MediaFoundation.Collection.AddElement(SharpDX.ComObject)\"/></strong>. </li> <li> Set the <strong>pEvents</strong> member of the <strong><see cref=\"T:SharpDX.MediaFoundation.TOutputDataBuffer\"/></strong> structure equal to the <strong><see cref=\"T:SharpDX.MediaFoundation.Collection\"/></strong> reference. The MFT leaves a reference count on this interface; the caller must release the reference. </li> </ol><p>Events do not have time stamps. The caller should process the events before processing the output samples. In other words, events occur at the point in the stream immediately after the previous call to <strong>ProcessOutput</strong>, and prior to any output samples returned from the current <strong>ProcessOutput</strong> call.</p><p>It is valid for the <strong>ProcessOutput</strong> method to return one or more events and zero output samples.</p><p>The caller is responsible for releasing any events that the MFT allocates. When the method returns, check the <strong>pEvents</strong> member of each <strong><see cref=\"T:SharpDX.MediaFoundation.TOutputDataBuffer\"/></strong> structure. If the value is not <strong><c>null</c></strong>, the caller must release the <strong><see cref=\"T:SharpDX.MediaFoundation.Collection\"/></strong> interface reference:</p><pre>// Release the events that an MFT might allocate in <see cref=\"M:SharpDX.MediaFoundation.Transform.ProcessOutput(SharpDX.MediaFoundation.TransformProcessOutputFlags,System.Int32,SharpDX.MediaFoundation.TOutputDataBuffer,SharpDX.MediaFoundation.TransformProcessOutputStatus@)\"/>().\t\n            void ReleaseEventCollection(DWORD cOutputBuffers, <see cref=\"T:SharpDX.MediaFoundation.TOutputDataBuffer\"/>* pBuffers)\t\n            { for (DWORD i = 0; i &lt; cOutputBuffers; i++) { if (pBuffers[i].pEvents) { pBuffers[i].pEvents-&gt;Release(); pBuffers[i].pEvents = <c>null</c>; } }\t\n            }\t\n            </pre><p>An MFT should not use the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaEventGenerator\"/></strong> interface to send in-band events.</p>Stream Changes<p>The <strong>ProcessOutput</strong> method can cause any of the following changes in an output stream:</p><ul> <li> The deletion of an output stream. To signal a stream deletion, the MFT sets the <strong><see cref=\"F:SharpDX.MediaFoundation.MftOutputDataBufferFlags.MftOutputDataBufferStreamEnd\"/></strong> flag in the <strong>dwStatus</strong> member of the <strong><see cref=\"T:SharpDX.MediaFoundation.TOutputDataBuffer\"/></strong> structure for that stream. </li> <li> The creation of a new output stream. To signal a new output stream, the MFT sets the <strong><see cref=\"F:SharpDX.MediaFoundation.TransformProcessOutputStatus.MftProcessOutputStatusNewStreams\"/></strong> flag in the <em>pdwStatus</em> parameter. A new stream can have the same stream identifier as a deleted stream. </li> <li> A format change on an output stream. To signal a format change, the MFT sets the <strong><see cref=\"F:SharpDX.MediaFoundation.MftOutputDataBufferFlags.MftOutputDataBufferFormatChange\"/></strong> flag in the <strong>dwStatus</strong> member of the <strong><see cref=\"T:SharpDX.MediaFoundation.TOutputDataBuffer\"/></strong> structure for that stream. </li> </ul><p>It is possible that all three of these actions will result from a single call to <strong>ProcessOutput</strong>. The caller must respond to them in the order listed here?first deletions, then additions, then format changes.</p><p>The <strong><see cref=\"F:SharpDX.MediaFoundation.MftOutputDataBufferFlags.MftOutputDataBufferFormatChange\"/></strong> flag signals a format change on an output stream. This might mean the current media type has become invalid, or the preference order has changed and a more efficient format is available. In the latter case, it is possible that the client will re-set the original media type. To guard against endless loops, the MFT should not set the <strong><see cref=\"F:SharpDX.MediaFoundation.MftOutputDataBufferFlags.MftOutputDataBufferFormatChange\"/></strong> flag again until there is another change. Also, avoid setting this flag if the preference order changes but the current media type is still the most preferred type.</p>Sample Attributes<p>An input sample might have attributes, which are accessed through the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaAttributes\"/></strong> interface. Unless a specific attribute no longer applies, all attributes should be copied into the corresponding output sample. The responsibily for copying attributes is determined as follows:</p><ul> <li> If the value of the <strong>MFPKEY_EXATTRIBUTE_SUPPORTED</strong> property on the MFT is <strong>VARIANT_TRUE</strong>, the MFT copies the attributes. </li> <li> If the value of <strong>MFPKEY_EXATTRIBUTE_SUPPORTED</strong> is <strong>VARIANT_FALSE</strong>, or the property is not set, the client must copy the sample attributes. Do not overwrite any attributes that the MFT sets on the output sample. </li> </ul><p>For a list of sample attributes, see Sample Attributes.</p>Asynchronous Processing<p>The previous remarks describe the <em>synchronous</em> processing model. To support asynchronous processing, see Asynchronous MFTs.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTransform::ProcessOutput']/*\"/>\t\n            <msdn-id>ms704014</msdn-id>\t\n            <unmanaged>HRESULT IMFTransform::ProcessOutput([In] _MFT_PROCESS_OUTPUT_FLAGS dwFlags,[In] unsigned int cOutputBufferCount,[In] MFT_OUTPUT_DATA_BUFFER* pOutputSamples,[Out] _MFT_PROCESS_OUTPUT_STATUS* pdwStatus)</unmanaged>\t\n            <unmanaged-short>IMFTransform::ProcessOutput</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Transform.TryGetStreamIDs(System.Int32[],System.Int32[])\">\n            <summary>\n            Gets the stream identifiers for the input and output streams on this Media Foundation transform (MFT).\n            </summary>\n            <param name=\"dwInputIDsRef\">An array allocated by the caller. The method fills the array with the input stream identifiers. The array size must be at least equal to the number of input streams. To get the number of input streams, call <strong><see cref=\"M:SharpDX.MediaFoundation.Transform.GetStreamCount(System.Int32@,System.Int32@)\"/></strong>.<para>If the caller passes an array that is larger than the number of input streams, the MFT must not write values into the extra array entries.</para></param>\n            <param name=\"dwOutputIDsRef\">An array allocated by the caller. The method fills the array with the output stream identifiers. The array size must be at least equal to the number of output streams. To get the number of output streams, call <strong><see cref=\"M:SharpDX.MediaFoundation.Transform.GetStreamCount(System.Int32@,System.Int32@)\"/></strong>.<para>If the caller passes an array that is larger than the number of output streams, the MFT must not write values into the extra array entries.</para></param>\n            <returns><c>true</c> if Both streams IDs for input and output are valid, <c>false</c> otherwise</returns>\n            <msdn-id>ms693988</msdn-id>\n              <unmanaged>HRESULT IMFTransform::GetStreamIDs([In] unsigned int dwInputIDArraySize,[Out, Buffer] unsigned int* pdwInputIDs,[In] unsigned int dwOutputIDArraySize,[Out, Buffer] unsigned int* pdwOutputIDs)</unmanaged>\n              <unmanaged-short>IMFTransform::GetStreamIDs</unmanaged-short>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Transform.TryGetOutputAvailableType(System.Int32,System.Int32,SharpDX.MediaFoundation.MediaType@)\">\n            <summary>\n            Gets an available media type for an output stream on this Media Foundation transform (MFT).\n            </summary>\n            <param name=\"dwOutputStreamID\">Output stream identifier. To get the list of stream identifiers, call <strong><see cref=\"M:SharpDX.MediaFoundation.Transform.GetStreamIDs(System.Int32,System.Int32[],System.Int32,System.Int32[])\"/></strong>.</param>\n            <param name=\"dwTypeIndex\">Index of the media type to retrieve. Media types are indexed from zero and returned in approximate order of preference.</param>\n            <param name=\"typeOut\">Receives a pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaType\"/></strong> interface. The caller must release the interface.</param>\n            <returns><c>true</c> if A media type for an output stream is available, <c>false</c> otherwise</returns>\n            <msdn-id>ms703812</msdn-id>\t\n            <unmanaged>HRESULT IMFTransform::GetOutputAvailableType([In] unsigned int dwOutputStreamID,[In] unsigned int dwTypeIndex,[Out] IMFMediaType** ppType)</unmanaged>\t\n            <unmanaged-short>IMFTransform::GetOutputAvailableType</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.Transform.ProcessOutput(SharpDX.MediaFoundation.TransformProcessOutputFlags,SharpDX.MediaFoundation.TOutputDataBuffer[],SharpDX.MediaFoundation.TransformProcessOutputStatus@)\">\n            <summary>\n            Generates output from the current input data.\n            </summary>\n            <param name=\"dwFlags\">Bitwise OR of zero or more flags from the <strong><see cref=\"T:SharpDX.MediaFoundation.TransformProcessOutputFlags\"/></strong> enumeration.</param>\n            <param name=\"outputSamplesRef\">Pointer to an array of <strong><see cref=\"T:SharpDX.MediaFoundation.TOutputDataBuffer\"/></strong> structures, allocated by the caller. The MFT uses this array to return output data to the caller.</param>\n            <param name=\"dwStatusRef\">Receives a bitwise OR of zero or more flags from the <strong><see cref=\"T:SharpDX.MediaFoundation.TransformProcessOutputStatus\"/></strong> enumeration.</param>\n            <returns><c>true</c> if the transform cannot produce output data until it receives more input data, <c>false</c> otherwise</returns>\n            <msdn-id>ms704014</msdn-id>\t\n            <unmanaged>HRESULT IMFTransform::ProcessOutput([In] _MFT_PROCESS_OUTPUT_FLAGS dwFlags,[In] unsigned int cOutputBufferCount,[In] MFT_OUTPUT_DATA_BUFFER* pOutputSamples,[Out] _MFT_PROCESS_OUTPUT_STATUS* pdwStatus)</unmanaged>\t\n            <unmanaged-short>IMFTransform::ProcessOutput</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.Transform.Attributes\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Gets the global attribute store for this Media Foundation transform (MFT). </p>\t\n            </summary>\t\n            <remarks>\t\n            <p> Use the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaAttributes\"/></strong> reference retrieved by this method to get or set attributes that apply to the entire MFT. To get the attribute store for an input stream, call <strong><see cref=\"M:SharpDX.MediaFoundation.Transform.GetInputStreamAttributes(System.Int32,SharpDX.MediaFoundation.MediaAttributes@)\"/></strong>. To get the attribute store for an output stream, call <strong><see cref=\"M:SharpDX.MediaFoundation.Transform.GetOutputStreamAttributes(System.Int32,SharpDX.MediaFoundation.MediaAttributes@)\"/></strong>. </p><p> Implementation of this method is optional unless the MFT needs to support a particular set of attributes. Exception: Hardware-based MFTs must implement this method. See Hardware MFTs.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTransform::GetAttributes']/*\"/>\t\n            <msdn-id>ms703141</msdn-id>\t\n            <unmanaged>GetAttributes</unmanaged>\t\n            <unmanaged-short>GetAttributes</unmanaged-short>\t\n            <unmanaged>HRESULT IMFTransform::GetAttributes([Out] IMFAttributes** pAttributes)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.Transform.OutputStatus\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Queries whether the Media Foundation transform (MFT) is ready to produce output data. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p> If the method returns the <strong><see cref=\"F:SharpDX.MediaFoundation.MftOutputStatusFlags.MftOutputStatusSampleReady\"/></strong> flag, it means you can generate one or more output samples by calling <strong><see cref=\"M:SharpDX.MediaFoundation.Transform.ProcessOutput(SharpDX.MediaFoundation.TransformProcessOutputFlags,System.Int32,SharpDX.MediaFoundation.TOutputDataBuffer,SharpDX.MediaFoundation.TransformProcessOutputStatus@)\"/></strong>. </p><p> MFTs are not required to implement this method. If the method returns <strong>E_NOTIMPL</strong>, you must call <strong>ProcessOutput</strong> to determine whether the transform has output data. </p><p> If the MFT has more than one output stream, but it does not produce samples at the same time for each stream, it can set the <strong><see cref=\"F:SharpDX.MediaFoundation.MftOutputStatusFlags.MftOutputStatusSampleReady\"/></strong> flag when just one stream is ready. However, if the MFT normally produces samples at the same time for each output stream, it should not set this flag until all streams are ready. </p><p> After the client has set valid media types on all of the streams, the MFT should always be in one of two states: Able to accept more input, or able to produce more output. </p><p>If <strong>MFT_UNIQUE_METHOD_NAMES</strong> is defined before including mftransform.h, this method is renamed <strong>MFTGetOutputStatus</strong>. See Creating Hybrid DMO/MFT Objects.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTransform::GetOutputStatus']/*\"/>\t\n            <msdn-id>ms696269</msdn-id>\t\n            <unmanaged>GetOutputStatus</unmanaged>\t\n            <unmanaged-short>GetOutputStatus</unmanaged-short>\t\n            <unmanaged>HRESULT IMFTransform::GetOutputStatus([Out] unsigned int* pdwFlags)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.TrustedInput\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Implemented by components that provide input trust authorities (ITAs). This interface is used to get the ITA for each of the component's streams. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTrustedInput']/*\"/>\t\n            <msdn-id>ms697279</msdn-id>\t\n            <unmanaged>IMFTrustedInput</unmanaged>\t\n            <unmanaged-short>IMFTrustedInput</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.TrustedInput.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.TrustedInput\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.TrustedInput.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.TrustedInput\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.TrustedInput\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.TrustedInput.GetInputTrustAuthority(System.Int32,System.Guid,SharpDX.ComObject@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Retrieves the input trust authority (ITA) for a specified stream.</p>\t\n            </summary>\t\n            <param name=\"dwStreamID\"><dd> <p>The stream identifier for which the ITA is being requested.</p> </dd></param>\t\n            <param name=\"riid\"><dd> <p>The interface identifier (IID) of the interface being requested. Currently the only supported value is IID_IMFInputTrustAuthority.</p> </dd></param>\t\n            <param name=\"unkObjectOut\"><dd> <p>Receives a reference to the ITA's <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interface. The caller must release the interface.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong>E_NOINTERFACE</strong></dt> </dl> </td><td> <p>The ITA does not expose the requested interface.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTrustedInput::GetInputTrustAuthority']/*\"/>\t\n            <msdn-id>bb970501</msdn-id>\t\n            <unmanaged>HRESULT IMFTrustedInput::GetInputTrustAuthority([In] unsigned int dwStreamID,[In] const GUID&amp; riid,[Out] IUnknown** ppunkObject)</unmanaged>\t\n            <unmanaged-short>IMFTrustedInput::GetInputTrustAuthority</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.TrustedOutput\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Implemented by components that provide output trust authorities (OTAs). Any Media Foundation transform (MFT) or media sink that is designed to work within the protected media path (PMP) and also sends protected content outside the Media Foundation pipeline must implement this interface.</p><p>The policy engine uses this interface to negotiate what type of content protection should be applied to the content. Applications do not use this interface directly.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>If an MFT supports <strong><see cref=\"T:SharpDX.MediaFoundation.TrustedOutput\"/></strong>, it must expose the interface through <strong>QueryInterface</strong>. The interface applies to all of the input streams on the MFT. (There is no mechanism to return a separate <strong><see cref=\"T:SharpDX.MediaFoundation.TrustedOutput\"/></strong> reference for each stream.) The MFT must apply the  output policies to all of its input streams. If the MFT sends different streams to separate connectors, it must report all of the connector attributes.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTrustedOutput']/*\"/>\t\n            <msdn-id>ms694305</msdn-id>\t\n            <unmanaged>IMFTrustedOutput</unmanaged>\t\n            <unmanaged-short>IMFTrustedOutput</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.TrustedOutput.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.TrustedOutput\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.TrustedOutput.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.TrustedOutput\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.TrustedOutput\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.TrustedOutput.GetOutputTrustAuthorityCount(System.Int32@)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"cOutputTrustAuthoritiesRef\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTrustedOutput::GetOutputTrustAuthorityCount']/*\"/>\t\n            <unmanaged>HRESULT IMFTrustedOutput::GetOutputTrustAuthorityCount([Out] unsigned int* pcOutputTrustAuthorities)</unmanaged>\t\n            <unmanaged-short>IMFTrustedOutput::GetOutputTrustAuthorityCount</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.TrustedOutput.GetOutputTrustAuthorityByIndex(System.Int32,SharpDX.MediaFoundation.OutputTrustAuthority@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Gets an output trust authority (OTA), specified by index.</p>\t\n            </summary>\t\n            <param name=\"dwIndex\"><dd> <p> Zero-based index of the OTA to retrieve. To get the number of OTAs provided by this object, call <strong><see cref=\"M:SharpDX.MediaFoundation.TrustedOutput.GetOutputTrustAuthorityCount(System.Int32@)\"/></strong>. </p> </dd></param>\t\n            <param name=\"authorityOut\"><dd> <p> Receives a reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.OutputTrustAuthority\"/></strong> interface of the OTA. The caller must release the interface. </p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTrustedOutput::GetOutputTrustAuthorityByIndex']/*\"/>\t\n            <msdn-id>bb970401</msdn-id>\t\n            <unmanaged>HRESULT IMFTrustedOutput::GetOutputTrustAuthorityByIndex([In] unsigned int dwIndex,[Out] IMFOutputTrustAuthority** ppauthority)</unmanaged>\t\n            <unmanaged-short>IMFTrustedOutput::GetOutputTrustAuthorityByIndex</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.TrustedOutput.IsFinal_(SharpDX.Bool@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Queries whether this output is a policy sink, meaning it handles the rights and restrictions required by the input trust authority (ITA).</p>\t\n            </summary>\t\n            <param name=\"fIsFinalRef\"><dd> <p>Receives a Boolean value. If <strong>TRUE</strong>, this object is a policy sink. If <strong><see cref=\"F:SharpDX.Result.False\"/></strong>, the policy must be enforced further downstream.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>A trusted output is generally considered to be a policy sink if it does not pass the media content that it receives anywhere else; or, if it does pass the media content elsewhere, either it protects the content using some proprietary method such as encryption, or it sufficiently devalues the content so as not to require protection.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTrustedOutput::IsFinal']/*\"/>\t\n            <msdn-id>bb970324</msdn-id>\t\n            <unmanaged>HRESULT IMFTrustedOutput::IsFinal([Out] BOOL* pfIsFinal)</unmanaged>\t\n            <unmanaged-short>IMFTrustedOutput::IsFinal</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.TrustedOutput.OutputTrustAuthorityCount\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTrustedOutput::GetOutputTrustAuthorityCount']/*\"/>\t\n            <unmanaged>GetOutputTrustAuthorityCount</unmanaged>\t\n            <unmanaged-short>GetOutputTrustAuthorityCount</unmanaged-short>\t\n            <unmanaged>HRESULT IMFTrustedOutput::GetOutputTrustAuthorityCount([Out] unsigned int* pcOutputTrustAuthorities)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.TrustedOutput.IsFinal\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Queries whether this output is a policy sink, meaning it handles the rights and restrictions required by the input trust authority (ITA).</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>A trusted output is generally considered to be a policy sink if it does not pass the media content that it receives anywhere else; or, if it does pass the media content elsewhere, either it protects the content using some proprietary method such as encryption, or it sufficiently devalues the content so as not to require protection.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFTrustedOutput::IsFinal']/*\"/>\t\n            <msdn-id>bb970324</msdn-id>\t\n            <unmanaged>IsFinal</unmanaged>\t\n            <unmanaged-short>IsFinal</unmanaged-short>\t\n            <unmanaged>HRESULT IMFTrustedOutput::IsFinal([Out] BOOL* pfIsFinal)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.TrustedVideoPlugin\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Enables a plug-in component for the enhanced video renderer (EVR) to work with protected media.</p><p>To work in the protected media path (PMP), a custom EVR mixer or presenter must implement this interface. The EVR obtains a reference to this interface by calling <strong>QueryInterface</strong> on the plug-in component.</p><p>This interface is required only if the plug-in is a trusted component, designed to work in the PMP. It is not required for playing clear content in an unprotected process.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IEVRTrustedVideoPlugin']/*\"/>\t\n            <msdn-id>aa473784</msdn-id>\t\n            <unmanaged>IEVRTrustedVideoPlugin</unmanaged>\t\n            <unmanaged-short>IEVRTrustedVideoPlugin</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.TrustedVideoPlugin.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.TrustedVideoPlugin\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.TrustedVideoPlugin.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.TrustedVideoPlugin\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.TrustedVideoPlugin\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.TrustedVideoPlugin.IsInTrustedVideoMode(SharpDX.Bool)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Queries whether the plug-in has any transient vulnerabilities at this time. </p>\t\n            </summary>\t\n            <param name=\"yesRef\"><dd> <p>Receives a Boolean value. If <strong>TRUE</strong>, the plug-in has no transient vulnerabilities at the moment and can receive protected content. If <strong><see cref=\"F:SharpDX.Result.False\"/></strong>, the plug-in has a transient vulnerability. If the method fails, the EVR treats the value as <strong><see cref=\"F:SharpDX.Result.False\"/></strong> (untrusted).</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>This method provides a way for the plug-in to report temporary conditions that would cause the input trust authority (ITA) to distrust the plug-in. For example, if an EVR presenter is in windowed mode, it is vulnerable to GDI screen captures.</p><p>To disable screen capture in Direct3D, the plug-in must do the following:</p><ul> <li> <p>Create the Direct3D device in full-screen exlusive mode.</p> </li> <li> <p>Specify the <see cref=\"F:SharpDX.Direct3D9.CreateFlags.DisablePrintScreen\"/> flag when you create the device. For more information, see <strong><see cref=\"!:SharpDX.Direct3D9.Direct3D.CreateDevice\"/></strong> in the DirectX documentation.</p> </li> </ul><p>In addition, the graphics adapter must support the Windows Vista Display Driver Model (WDDM) and the Direct3D extensions for Windows Vista (sometimes called D3D9Ex or D3D9L).</p><p>If these conditions are met, the presenter can return <strong>TRUE</strong> in the <em>pYes</em> parameter. Otherwise, it should return <strong><see cref=\"F:SharpDX.Result.False\"/></strong>.</p><p>The EVR calls this method whenever the device changes. If the plug-in returns <strong><see cref=\"F:SharpDX.Result.False\"/></strong>, the EVR treats this condition as if the plug-in had a new output connector of unknown type. The policy object can then allow or block playback, depending on the ITA's policy.</p><p>This method should be used only to report transient conditions. A plug-in that is never in a trusted state should not implement the <strong><see cref=\"T:SharpDX.MediaFoundation.TrustedVideoPlugin\"/></strong> interface at all.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IEVRTrustedVideoPlugin::IsInTrustedVideoMode']/*\"/>\t\n            <msdn-id>aa473794</msdn-id>\t\n            <unmanaged>HRESULT IEVRTrustedVideoPlugin::IsInTrustedVideoMode([In] BOOL* pYes)</unmanaged>\t\n            <unmanaged-short>IEVRTrustedVideoPlugin::IsInTrustedVideoMode</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.TrustedVideoPlugin.CanConstrict(SharpDX.Bool)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Queries whether the plug-in can limit the effective video resolution. </p>\t\n            </summary>\t\n            <param name=\"yesRef\"><dd> <p>Receives a Boolean value. If <strong>TRUE</strong>, the plug-in can limit the effective video resolution. Otherwise, the plug-in cannot limit the video resolution. If the method fails, the EVR treats the value as <strong><see cref=\"F:SharpDX.Result.False\"/></strong> (not supported).</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>Constriction is a protection mechanism that limits the effective resolution of the video frame to a specified maximum number of pixels.</p><p>Video constriction can be implemented by either the mixer or the presenter.</p><p>If the method returns <strong>TRUE</strong>, the EVR might call <strong><see cref=\"M:SharpDX.MediaFoundation.TrustedVideoPlugin.SetConstriction(System.Int32)\"/></strong> at any time.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IEVRTrustedVideoPlugin::CanConstrict']/*\"/>\t\n            <msdn-id>aa473782</msdn-id>\t\n            <unmanaged>HRESULT IEVRTrustedVideoPlugin::CanConstrict([In] BOOL* pYes)</unmanaged>\t\n            <unmanaged-short>IEVRTrustedVideoPlugin::CanConstrict</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.TrustedVideoPlugin.SetConstriction(System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Limits the effective video resolution. </p>\t\n            </summary>\t\n            <param name=\"dwKPix\"><dd> <p>Maximum number of source pixels that may appear in the final video image, in thousands of pixels. If the value is zero, the video is disabled. If the value is MAXDWORD (0xFFFFFFFF), video constriction is removed and the video may be rendered at full resolution.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>This method limits the effective resolution of the video image. The actual resolution on the target device might be higher, due to stretching the image.</p><p>The EVR might call this method at any time if the <strong><see cref=\"M:SharpDX.MediaFoundation.TrustedVideoPlugin.CanConstrict(SharpDX.Bool)\"/></strong> method returns <strong>TRUE</strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IEVRTrustedVideoPlugin::SetConstriction']/*\"/>\t\n            <msdn-id>aa473833</msdn-id>\t\n            <unmanaged>HRESULT IEVRTrustedVideoPlugin::SetConstriction([In] unsigned int dwKPix)</unmanaged>\t\n            <unmanaged-short>IEVRTrustedVideoPlugin::SetConstriction</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.TrustedVideoPlugin.DisableImageExport(SharpDX.Bool)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Enables or disables the ability of the plug-in to export the video image. </p>\t\n            </summary>\t\n            <param name=\"bDisable\"><dd> <p>Boolean value. Specify <strong>TRUE</strong> to disable image exporting, or <strong><see cref=\"F:SharpDX.Result.False\"/></strong> to enable it.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>An EVR plug-in might expose a way for the application to get a copy of the video frames. For example, the standard EVR presenter implements <strong><see cref=\"M:SharpDX.MediaFoundation.VideoDisplayControl.GetCurrentImage(SharpDX.Win32.BitmapInfoHeader@,System.Byte[],System.Int32@,System.IntPtr)\"/></strong>.</p><p>If the plug-in supports image exporting, this method enables or disables it. Before this method has been called for the first time, the EVR assumes that the mechanism is enabled.</p><p>If the plug-in does not support image exporting, this method should return <see cref=\"F:SharpDX.Result.Ok\"/> and ignore the value of <em>bDisable</em>. If the method fails, the EVR treats it as a failure to enforce the policy, which will probably cause playback to stop.</p><p>While image exporting is disabled, any associated export method, such as <strong>GetCurrentImage</strong>, should return <see cref=\"F:SharpDX.MediaFoundation.ResultCode.LicenseIncorrectRights\"/>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IEVRTrustedVideoPlugin::DisableImageExport']/*\"/>\t\n            <msdn-id>aa473830</msdn-id>\t\n            <unmanaged>HRESULT IEVRTrustedVideoPlugin::DisableImageExport([In] BOOL bDisable)</unmanaged>\t\n            <unmanaged-short>IEVRTrustedVideoPlugin::DisableImageExport</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.TrustedVideoPlugin.Constriction\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Limits the effective video resolution. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This method limits the effective resolution of the video image. The actual resolution on the target device might be higher, due to stretching the image.</p><p>The EVR might call this method at any time if the <strong><see cref=\"M:SharpDX.MediaFoundation.TrustedVideoPlugin.CanConstrict(SharpDX.Bool)\"/></strong> method returns <strong>TRUE</strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IEVRTrustedVideoPlugin::SetConstriction']/*\"/>\t\n            <msdn-id>aa473833</msdn-id>\t\n            <unmanaged>SetConstriction</unmanaged>\t\n            <unmanaged-short>SetConstriction</unmanaged-short>\t\n            <unmanaged>HRESULT IEVRTrustedVideoPlugin::SetConstriction([In] unsigned int dwKPix)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.VideoDeviceID\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Returns the device identifier supported by a video renderer component. This interface is implemented by mixers and presenters for the enhanced video renderer (EVR). If you replace either of these components, the mixer and presenter must report the same device identifier.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFVideoDeviceID']/*\"/>\t\n            <msdn-id>ms703065</msdn-id>\t\n            <unmanaged>IMFVideoDeviceID</unmanaged>\t\n            <unmanaged-short>IMFVideoDeviceID</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.VideoDeviceID.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.VideoDeviceID\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.VideoDeviceID.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.VideoDeviceID\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.VideoDeviceID\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.VideoDeviceID.GetDeviceID(System.Guid@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Returns the identifier of the video device supported by an EVR mixer or presenter.</p>\t\n            </summary>\t\n            <param name=\"deviceIDRef\"><dd> <p>Receives the device identifier. Generally, the value is IID_IDirect3DDevice9.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/></strong></dt> </dl> </td><td> <p>The video renderer has been shut down.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>If a mixer or presenter uses Direct3D 9, it must return the value IID_IDirect3DDevice9 in <em>pDeviceID</em>. The EVR's default mixer and presenter both return this value. If you write a custom mixer or presenter, it can return some other value. However, the mixer and presenter must use matching device identifiers.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFVideoDeviceID::GetDeviceID']/*\"/>\t\n            <msdn-id>ms704630</msdn-id>\t\n            <unmanaged>HRESULT IMFVideoDeviceID::GetDeviceID([Out] GUID* pDeviceID)</unmanaged>\t\n            <unmanaged-short>IMFVideoDeviceID::GetDeviceID</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.VideoDeviceID.DeviceID\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Returns the identifier of the video device supported by an EVR mixer or presenter.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>If a mixer or presenter uses Direct3D 9, it must return the value IID_IDirect3DDevice9 in <em>pDeviceID</em>. The EVR's default mixer and presenter both return this value. If you write a custom mixer or presenter, it can return some other value. However, the mixer and presenter must use matching device identifiers.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFVideoDeviceID::GetDeviceID']/*\"/>\t\n            <msdn-id>ms704630</msdn-id>\t\n            <unmanaged>GetDeviceID</unmanaged>\t\n            <unmanaged-short>GetDeviceID</unmanaged-short>\t\n            <unmanaged>HRESULT IMFVideoDeviceID::GetDeviceID([Out] GUID* pDeviceID)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.VideoDisplayControl\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Controls how the Enhanced Video Renderer (EVR) displays video.</p><p>The EVR presenter implements this interface. To get a reference to the interface, call <strong><see cref=\"M:SharpDX.MediaFoundation.ServiceProvider.GetService(System.Guid,System.Guid,System.IntPtr@)\"/></strong>. The service identifier is <see cref=\"T:System.Guid\"/> MR_VIDEO_RENDER_SERVICE. Call <strong>GetService</strong> on any of the following objects:</p><ul> <li> The Media Session, if the topology contains an instance of the EVR. </li> <li>The EVR media sink. </li> <li>The DirectShow EVR filter. </li> <li>The EVR presenter. </li> </ul><p>If you implement a custom presenter for the EVR, the presenter can optionally expose this interface as a service.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFVideoDisplayControl']/*\"/>\t\n            <msdn-id>ms704002</msdn-id>\t\n            <unmanaged>IMFVideoDisplayControl</unmanaged>\t\n            <unmanaged-short>IMFVideoDisplayControl</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.VideoDisplayControl.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.VideoDisplayControl\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.VideoDisplayControl.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.VideoDisplayControl\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.VideoDisplayControl\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.VideoDisplayControl.GetNativeVideoSize(System.IntPtr,System.IntPtr)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Gets the size and aspect ratio of the video, prior to any stretching by the video renderer. </p>\t\n            </summary>\t\n            <param name=\"szVideoRef\"><dd> <p>Receives the size of the native video rectangle. This parameter can be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"szARVideoRef\"><dd> <p>Receives the aspect ratio of the video. This parameter can be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong>E_POINTER</strong></dt> </dl> </td><td> <p>At least one of the parameters must be non-<strong><c>null</c></strong>.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/></strong></dt> </dl> </td><td> <p>The video renderer has been shut down.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>If no media types have been set on any video streams, the method succeeds but all parameters are set to zero.</p><p>You can set <em>pszVideo</em> or <em>pszARVideo</em> to <strong><c>null</c></strong>, but not both.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFVideoDisplayControl::GetNativeVideoSize']/*\"/>\t\n            <msdn-id>ms694294</msdn-id>\t\n            <unmanaged>HRESULT IMFVideoDisplayControl::GetNativeVideoSize([InOut, Optional] SIZE* pszVideo,[InOut, Optional] SIZE* pszARVideo)</unmanaged>\t\n            <unmanaged-short>IMFVideoDisplayControl::GetNativeVideoSize</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.VideoDisplayControl.GetIdealVideoSize(System.IntPtr,System.IntPtr)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Gets the range of sizes that the enhanced video renderer (EVR) can display without significantly degrading performance or image quality. </p>\t\n            </summary>\t\n            <param name=\"szMinRef\"><dd> <p>Receives the minimum ideal size. This parameter can be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"szMaxRef\"><dd> <p>Receives the maximum ideal size. This parameter can be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong>E_POINTER</strong></dt> </dl> </td><td> <p>At least one parameter must be non-<strong><c>null</c></strong>.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/></strong></dt> </dl> </td><td> <p>The video renderer has been shut down.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>You can set <em>pszMin</em> or <em>pszMax</em> to <strong><c>null</c></strong>, but not both.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFVideoDisplayControl::GetIdealVideoSize']/*\"/>\t\n            <msdn-id>ms703076</msdn-id>\t\n            <unmanaged>HRESULT IMFVideoDisplayControl::GetIdealVideoSize([InOut, Optional] SIZE* pszMin,[InOut, Optional] SIZE* pszMax)</unmanaged>\t\n            <unmanaged-short>IMFVideoDisplayControl::GetIdealVideoSize</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.VideoDisplayControl.SetVideoPosition(System.Nullable{SharpDX.MediaFoundation.VideoNormalizedRect},System.Nullable{SharpDX.Rectangle})\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Sets the source and destination rectangles for the video.</p>\t\n            </summary>\t\n            <param name=\"nrcSourceRef\"><dd> <p>Pointer to an <strong><see cref=\"T:SharpDX.MediaFoundation.VideoNormalizedRect\"/></strong> structure that specifies the source rectangle. This parameter can be <strong><c>null</c></strong>. If this parameter is <strong><c>null</c></strong>, the source rectangle does not change.</p> </dd></param>\t\n            <param name=\"rcDestRef\"><dd> <p>Specifies the destination rectangle. This parameter can be <strong><c>null</c></strong>. If this parameter is <strong><c>null</c></strong>, the destination rectangle does not change.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong>E_POINTER</strong></dt> </dl> </td><td> <p>At least one parameter must be non-<strong><c>null</c></strong>.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/></strong></dt> </dl> </td><td> <p>The video renderer has been shut down.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>The source rectangle defines which portion of the video is displayed. It is specified in <em>normalized</em> coordinates. For more information, see <strong><see cref=\"T:SharpDX.MediaFoundation.VideoNormalizedRect\"/></strong> structure. To display the entire video image, set the source rectangle to {0, 0, 1, 1}. The default source rectangle is {0, 0, 1, 1}.</p><p>The destination rectangle defines a rectangle within the clipping window where the video appears. It is specified in pixels, relative to the client area of the window. To fill the entire window, set the destination rectangle to {0, 0, <em>width</em>, <em>height</em>}, where <em>width</em> and <em>height</em> are dimensions of the window client area. The default destination rectangle is {0, 0, 0, 0}.</p><p>To update just one of these rectangles, set the other parameter to <strong><c>null</c></strong>. You can set <em>pnrcSource</em> or <em>prcDest</em> to <strong><c>null</c></strong>, but not both.</p><p>Before setting the destination rectangle (<em>prcDest</em>), you must set the video window by calling <strong><see cref=\"M:SharpDX.MediaFoundation.VideoDisplayControl.SetVideoWindow(System.IntPtr)\"/></strong>. (For the Media Foundation version of the EVR, you can also provide the video window in the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateVideoRendererActivate(System.IntPtr,SharpDX.MediaFoundation.Activate@)\"/></strong> function.) If no video window was provided, <strong>SetVideoPosition</strong> returns E_POINTER.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFVideoDisplayControl::SetVideoPosition']/*\"/>\t\n            <msdn-id>ms697352</msdn-id>\t\n            <unmanaged>HRESULT IMFVideoDisplayControl::SetVideoPosition([In, Optional] const MFVideoNormalizedRect* pnrcSource,[In, Optional] const RECT* prcDest)</unmanaged>\t\n            <unmanaged-short>IMFVideoDisplayControl::SetVideoPosition</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.VideoDisplayControl.GetVideoPosition(SharpDX.MediaFoundation.VideoNormalizedRect@,SharpDX.Rectangle@)\">\n            <summary>\t\n            <p>Retrieves the source and destination rectangles for the video.</p>  <see cref=\"T:SharpDX.Result\"/> GetVideoPosition( <see cref=\"T:SharpDX.MediaFoundation.VideoNormalizedRect\"/>* pnrcSource, LPRECT prcDest\t\n            );\t\n            <p></p>Parameters <p> pnrcSource </p> <p>[out]  Pointer to an <see cref=\"T:SharpDX.MediaFoundation.VideoNormalizedRect\"/> Structure that receives the source rectangle. This parameter can be <c>null</c>.</p> <p> prcDest </p> <p>[out]  Receives the current destination rectangle. This parameter can be <c>null</c>.</p>  <p>The method returns an <see cref=\"T:SharpDX.Result\"/>. Possible values include, but are not limited to, those in the following table.</p> <table><tr> <th> Return code              </th> <th> Description              </th> </tr><tr> <td> <p><see cref=\"F:SharpDX.Result.Ok\"/></p> </td> <td> <p>The method succeeded.</p> </td> </tr><tr> <td> <p>E_POINTER</p> </td> <td> <p>One or more required parameters are <c>null</c>.</p> </td> </tr><tr> <td> <p><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/></p> </td> <td> <p>The video renderer has been shut down.</p> </td> </tr></table>  <p>You can set pnrcSource or prcDest to <c>null</c>, but not both. </p>  <p> Client: Requires Windows Vista.</p> <p> Header: Include evr.h.</p> <p> Library: Use strmiids.lib.</p> ReferenceIMFVideoDisplayControl InterfaceConceptsEnhanced Video RendererUsing the Video Display Controls\t\n            </summary>\t\n            <param name=\"nrcSourceRef\">No documentation.</param>\t\n            <param name=\"rcDestRef\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFVideoDisplayControl::GetVideoPosition']/*\"/>\t\n            <msdn-id>ms704718</msdn-id>\t\n            <unmanaged>HRESULT IMFVideoDisplayControl::GetVideoPosition([Out] MFVideoNormalizedRect* pnrcSource,[Out] RECT* prcDest)</unmanaged>\t\n            <unmanaged-short>IMFVideoDisplayControl::GetVideoPosition</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.VideoDisplayControl.SetAspectRatioMode(System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Controls how the Enhanced Video Renderer (EVR) displays video.</p><p>The EVR presenter implements this interface. To get a reference to the interface, call <strong><see cref=\"M:SharpDX.MediaFoundation.ServiceProvider.GetService(System.Guid,System.Guid,System.IntPtr@)\"/></strong>. The service identifier is <see cref=\"T:System.Guid\"/> MR_VIDEO_RENDER_SERVICE. Call <strong>GetService</strong> on any of the following objects:</p><ul> <li> The Media Session, if the topology contains an instance of the EVR. </li> <li>The EVR media sink. </li> <li>The DirectShow EVR filter. </li> <li>The EVR presenter. </li> </ul><p>If you implement a custom presenter for the EVR, the presenter can optionally expose this interface as a service.</p>\t\n            </summary>\t\n            <param name=\"dwAspectRatioMode\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFVideoDisplayControl::SetAspectRatioMode']/*\"/>\t\n            <msdn-id>ms704002</msdn-id>\t\n            <unmanaged>HRESULT IMFVideoDisplayControl::SetAspectRatioMode([In] unsigned int dwAspectRatioMode)</unmanaged>\t\n            <unmanaged-short>IMFVideoDisplayControl::SetAspectRatioMode</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.VideoDisplayControl.GetAspectRatioMode(System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Controls how the Enhanced Video Renderer (EVR) displays video.</p><p>The EVR presenter implements this interface. To get a reference to the interface, call <strong><see cref=\"M:SharpDX.MediaFoundation.ServiceProvider.GetService(System.Guid,System.Guid,System.IntPtr@)\"/></strong>. The service identifier is <see cref=\"T:System.Guid\"/> MR_VIDEO_RENDER_SERVICE. Call <strong>GetService</strong> on any of the following objects:</p><ul> <li> The Media Session, if the topology contains an instance of the EVR. </li> <li>The EVR media sink. </li> <li>The DirectShow EVR filter. </li> <li>The EVR presenter. </li> </ul><p>If you implement a custom presenter for the EVR, the presenter can optionally expose this interface as a service.</p>\t\n            </summary>\t\n            <param name=\"dwAspectRatioModeRef\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFVideoDisplayControl::GetAspectRatioMode']/*\"/>\t\n            <msdn-id>ms704002</msdn-id>\t\n            <unmanaged>HRESULT IMFVideoDisplayControl::GetAspectRatioMode([Out] unsigned int* pdwAspectRatioMode)</unmanaged>\t\n            <unmanaged-short>IMFVideoDisplayControl::GetAspectRatioMode</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.VideoDisplayControl.SetVideoWindow(System.IntPtr)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Sets the clipping window for the video.</p>\t\n            </summary>\t\n            <param name=\"hwndVideo\"><dd> <p>Handle to the window where the enhanced video renderer (EVR) will draw the video.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong>E_INVALIDARG</strong></dt> </dl> </td><td> <p><em>hwndVideo</em> does not specify a valid window.</p> </td></tr> <tr><td> <dl> <dt><strong>S_FALSE</strong></dt> </dl> </td><td> <p>DWM thumbnails were not enabled/disabled.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>The EVR will not display any video unless the application calls this method with a valid window handle.</p><p>For protected content, this method might disable Desktop Window Manager (DWM) thumbnail previews for the window. If thumbnail previews cannot be disabled, the method returns S_FALSE.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFVideoDisplayControl::SetVideoWindow']/*\"/>\t\n            <msdn-id>ms697051</msdn-id>\t\n            <unmanaged>HRESULT IMFVideoDisplayControl::SetVideoWindow([In] HWND hwndVideo)</unmanaged>\t\n            <unmanaged-short>IMFVideoDisplayControl::SetVideoWindow</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.VideoDisplayControl.GetVideoWindow(System.IntPtr@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Controls how the Enhanced Video Renderer (EVR) displays video.</p><p>The EVR presenter implements this interface. To get a reference to the interface, call <strong><see cref=\"M:SharpDX.MediaFoundation.ServiceProvider.GetService(System.Guid,System.Guid,System.IntPtr@)\"/></strong>. The service identifier is <see cref=\"T:System.Guid\"/> MR_VIDEO_RENDER_SERVICE. Call <strong>GetService</strong> on any of the following objects:</p><ul> <li> The Media Session, if the topology contains an instance of the EVR. </li> <li>The EVR media sink. </li> <li>The DirectShow EVR filter. </li> <li>The EVR presenter. </li> </ul><p>If you implement a custom presenter for the EVR, the presenter can optionally expose this interface as a service.</p>\t\n            </summary>\t\n            <param name=\"hwndVideoRef\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFVideoDisplayControl::GetVideoWindow']/*\"/>\t\n            <msdn-id>ms704002</msdn-id>\t\n            <unmanaged>HRESULT IMFVideoDisplayControl::GetVideoWindow([Out] HWND* phwndVideo)</unmanaged>\t\n            <unmanaged-short>IMFVideoDisplayControl::GetVideoWindow</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.VideoDisplayControl.RepaintVideo\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Repaints the current video frame. Call this method whenever the application receives a WM_PAINT message.</p>\t\n            </summary>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidRequest\"/></strong></dt> </dl> </td><td> <p>The EVR cannot repaint the frame at this time. This error can occur while the EVR is switching between full-screen and windowed mode. The caller can safely ignore this error.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/></strong></dt> </dl> </td><td> <p>The video renderer has been shut down.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFVideoDisplayControl::RepaintVideo']/*\"/>\t\n            <msdn-id>ms703113</msdn-id>\t\n            <unmanaged>HRESULT IMFVideoDisplayControl::RepaintVideo()</unmanaged>\t\n            <unmanaged-short>IMFVideoDisplayControl::RepaintVideo</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.VideoDisplayControl.GetCurrentImage(SharpDX.Win32.BitmapInfoHeader@,System.Byte[],System.Int32@,System.IntPtr)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Gets a copy of the current image being displayed by the video renderer. </p>\t\n            </summary>\t\n            <param name=\"bihRef\"><dd> <p>Pointer to a <strong><see cref=\"T:SharpDX.Win32.BitmapInfoHeader\"/></strong> structure that receives a description of the bitmap. Set the <strong>biSize</strong> member of the structure to <code>sizeof(<see cref=\"T:SharpDX.Win32.BitmapInfoHeader\"/>)</code> before calling the method.</p> </dd></param>\t\n            <param name=\"dibRef\"><dd> <p>Receives a reference to a buffer that contains a packed Windows device-independent bitmap (DIB). The caller must free the memory for the bitmap by calling <strong>CoTaskMemFree</strong>.</p> </dd></param>\t\n            <param name=\"cbDibRef\"><dd> <p>Receives the size of the buffer returned in <em>pDib</em>, in bytes.</p> </dd></param>\t\n            <param name=\"timeStampRef\"><dd> <p>Receives the time stamp of the captured image.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.LicenseIncorrectRights\"/></strong></dt> </dl> </td><td> <p>The content is protected and the license does not permit capturing the image.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/></strong></dt> </dl> </td><td> <p>The video renderer has been shut down.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>This method can be called at any time. However, calling the method too frequently degrades the video playback performance.</p><p>This method retrieves a copy of the final composited image, which includes any substreams, alpha-blended bitmap, aspect ratio correction, background color, and so forth.</p><p>In windowed mode, the bitmap is the size of the destination rectangle specified in <strong><see cref=\"M:SharpDX.MediaFoundation.VideoDisplayControl.SetVideoPosition(System.Nullable{SharpDX.MediaFoundation.VideoNormalizedRect},System.Nullable{SharpDX.Rectangle})\"/></strong>. In full-screen mode, the bitmap is the size of the display.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFVideoDisplayControl::GetCurrentImage']/*\"/>\t\n            <msdn-id>ms695342</msdn-id>\t\n            <unmanaged>HRESULT IMFVideoDisplayControl::GetCurrentImage([InOut] BITMAPINFOHEADER* pBih,[Out, Buffer, Optional] unsigned char** pDib,[Out] unsigned int* pcbDib,[InOut, Optional] longlong* pTimeStamp)</unmanaged>\t\n            <unmanaged-short>IMFVideoDisplayControl::GetCurrentImage</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.VideoDisplayControl.SetBorderColor(SharpDX.Color4)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Controls how the Enhanced Video Renderer (EVR) displays video.</p><p>The EVR presenter implements this interface. To get a reference to the interface, call <strong><see cref=\"M:SharpDX.MediaFoundation.ServiceProvider.GetService(System.Guid,System.Guid,System.IntPtr@)\"/></strong>. The service identifier is <see cref=\"T:System.Guid\"/> MR_VIDEO_RENDER_SERVICE. Call <strong>GetService</strong> on any of the following objects:</p><ul> <li> The Media Session, if the topology contains an instance of the EVR. </li> <li>The EVR media sink. </li> <li>The DirectShow EVR filter. </li> <li>The EVR presenter. </li> </ul><p>If you implement a custom presenter for the EVR, the presenter can optionally expose this interface as a service.</p>\t\n            </summary>\t\n            <param name=\"clr\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFVideoDisplayControl::SetBorderColor']/*\"/>\t\n            <msdn-id>ms704002</msdn-id>\t\n            <unmanaged>HRESULT IMFVideoDisplayControl::SetBorderColor([In] COLORREF Clr)</unmanaged>\t\n            <unmanaged-short>IMFVideoDisplayControl::SetBorderColor</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.VideoDisplayControl.GetBorderColor(SharpDX.Color4@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Controls how the Enhanced Video Renderer (EVR) displays video.</p><p>The EVR presenter implements this interface. To get a reference to the interface, call <strong><see cref=\"M:SharpDX.MediaFoundation.ServiceProvider.GetService(System.Guid,System.Guid,System.IntPtr@)\"/></strong>. The service identifier is <see cref=\"T:System.Guid\"/> MR_VIDEO_RENDER_SERVICE. Call <strong>GetService</strong> on any of the following objects:</p><ul> <li> The Media Session, if the topology contains an instance of the EVR. </li> <li>The EVR media sink. </li> <li>The DirectShow EVR filter. </li> <li>The EVR presenter. </li> </ul><p>If you implement a custom presenter for the EVR, the presenter can optionally expose this interface as a service.</p>\t\n            </summary>\t\n            <param name=\"clrRef\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFVideoDisplayControl::GetBorderColor']/*\"/>\t\n            <msdn-id>ms704002</msdn-id>\t\n            <unmanaged>HRESULT IMFVideoDisplayControl::GetBorderColor([Out] COLORREF* pClr)</unmanaged>\t\n            <unmanaged-short>IMFVideoDisplayControl::GetBorderColor</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.VideoDisplayControl.SetRenderingPrefs(System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Controls how the Enhanced Video Renderer (EVR) displays video.</p><p>The EVR presenter implements this interface. To get a reference to the interface, call <strong><see cref=\"M:SharpDX.MediaFoundation.ServiceProvider.GetService(System.Guid,System.Guid,System.IntPtr@)\"/></strong>. The service identifier is <see cref=\"T:System.Guid\"/> MR_VIDEO_RENDER_SERVICE. Call <strong>GetService</strong> on any of the following objects:</p><ul> <li> The Media Session, if the topology contains an instance of the EVR. </li> <li>The EVR media sink. </li> <li>The DirectShow EVR filter. </li> <li>The EVR presenter. </li> </ul><p>If you implement a custom presenter for the EVR, the presenter can optionally expose this interface as a service.</p>\t\n            </summary>\t\n            <param name=\"dwRenderFlags\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFVideoDisplayControl::SetRenderingPrefs']/*\"/>\t\n            <msdn-id>ms704002</msdn-id>\t\n            <unmanaged>HRESULT IMFVideoDisplayControl::SetRenderingPrefs([In] unsigned int dwRenderFlags)</unmanaged>\t\n            <unmanaged-short>IMFVideoDisplayControl::SetRenderingPrefs</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.VideoDisplayControl.GetRenderingPrefs(System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Controls how the Enhanced Video Renderer (EVR) displays video.</p><p>The EVR presenter implements this interface. To get a reference to the interface, call <strong><see cref=\"M:SharpDX.MediaFoundation.ServiceProvider.GetService(System.Guid,System.Guid,System.IntPtr@)\"/></strong>. The service identifier is <see cref=\"T:System.Guid\"/> MR_VIDEO_RENDER_SERVICE. Call <strong>GetService</strong> on any of the following objects:</p><ul> <li> The Media Session, if the topology contains an instance of the EVR. </li> <li>The EVR media sink. </li> <li>The DirectShow EVR filter. </li> <li>The EVR presenter. </li> </ul><p>If you implement a custom presenter for the EVR, the presenter can optionally expose this interface as a service.</p>\t\n            </summary>\t\n            <param name=\"dwRenderFlagsRef\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFVideoDisplayControl::GetRenderingPrefs']/*\"/>\t\n            <msdn-id>ms704002</msdn-id>\t\n            <unmanaged>HRESULT IMFVideoDisplayControl::GetRenderingPrefs([Out] unsigned int* pdwRenderFlags)</unmanaged>\t\n            <unmanaged-short>IMFVideoDisplayControl::GetRenderingPrefs</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.VideoDisplayControl.SetFullscreen(SharpDX.Bool)\">\n            <summary>\t\n            <p>[This API is not supported and may be altered or unavailable in the future. ]</p><p><strong>Applies to: </strong>desktop apps only</p><p> Sets or unsets full-screen rendering mode.</p><p>To implement full-screen playback, an application should simply resize the video window to cover the entire area of the monitor. Also set the window to be a topmost window, so that the application receives all mouse-click messages. For more information about topmost windows, see the documentation for the <strong>SetWindowPos</strong> function.</p>\t\n            </summary>\t\n            <param name=\"fFullscreen\">No documentation.</param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/></strong></dt> </dl> </td><td> <p> The video renderer has been shut down. </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> The default EVR presenter implements full-screen mode using Direct3D exclusive mode. </p><p> If you use this  method  to switch to full-screen mode, set the application window to be a topmost window and resize the window to cover the entire monitor. This ensures that the application window receives all mouse-click messages. Also set the keyboard focus to the application window. When you switch out of full-screen mode, restore the window's original size and position. </p><p> By default, the cursor is still visible in full-screen mode. To hide the cursor, call <strong>ShowCursor</strong>. </p><p>The transition to and from full-screen mode occurs asynchronously. To get the current mode, call <strong><see cref=\"M:SharpDX.MediaFoundation.VideoDisplayControl.GetFullscreen(SharpDX.Bool@)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFVideoDisplayControl::SetFullscreen']/*\"/>\t\n            <msdn-id>ms701561</msdn-id>\t\n            <unmanaged>HRESULT IMFVideoDisplayControl::SetFullscreen([In] BOOL fFullscreen)</unmanaged>\t\n            <unmanaged-short>IMFVideoDisplayControl::SetFullscreen</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.VideoDisplayControl.GetFullscreen(SharpDX.Bool@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Queries whether the enhanced video renderer (EVR) is currently in full-screen mode. </p>\t\n            </summary>\t\n            <param name=\"fFullscreenRef\"><dd> <p>Receives a Boolean value. If <strong>TRUE</strong>, the EVR is in full-screen mode. If <strong><see cref=\"F:SharpDX.Result.False\"/></strong>, the EVR will display the video inside the application-provided clipping window.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidRequest\"/></strong></dt> </dl> </td><td> <p>The EVR is currently switching between full-screen and windowed mode.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFVideoDisplayControl::GetFullscreen']/*\"/>\t\n            <msdn-id>ms704817</msdn-id>\t\n            <unmanaged>HRESULT IMFVideoDisplayControl::GetFullscreen([Out] BOOL* pfFullscreen)</unmanaged>\t\n            <unmanaged-short>IMFVideoDisplayControl::GetFullscreen</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.VideoDisplayControl.AspectRatioMode\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Controls how the Enhanced Video Renderer (EVR) displays video.</p><p>The EVR presenter implements this interface. To get a reference to the interface, call <strong><see cref=\"M:SharpDX.MediaFoundation.ServiceProvider.GetService(System.Guid,System.Guid,System.IntPtr@)\"/></strong>. The service identifier is <see cref=\"T:System.Guid\"/> MR_VIDEO_RENDER_SERVICE. Call <strong>GetService</strong> on any of the following objects:</p><ul> <li> The Media Session, if the topology contains an instance of the EVR. </li> <li>The EVR media sink. </li> <li>The DirectShow EVR filter. </li> <li>The EVR presenter. </li> </ul><p>If you implement a custom presenter for the EVR, the presenter can optionally expose this interface as a service.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFVideoDisplayControl::GetAspectRatioMode']/*\"/>\t\n            <msdn-id>ms704002</msdn-id>\t\n            <unmanaged>GetAspectRatioMode / SetAspectRatioMode</unmanaged>\t\n            <unmanaged-short>GetAspectRatioMode</unmanaged-short>\t\n            <unmanaged>HRESULT IMFVideoDisplayControl::GetAspectRatioMode([Out] unsigned int* pdwAspectRatioMode)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.VideoDisplayControl.VideoWindow\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Controls how the Enhanced Video Renderer (EVR) displays video.</p><p>The EVR presenter implements this interface. To get a reference to the interface, call <strong><see cref=\"M:SharpDX.MediaFoundation.ServiceProvider.GetService(System.Guid,System.Guid,System.IntPtr@)\"/></strong>. The service identifier is <see cref=\"T:System.Guid\"/> MR_VIDEO_RENDER_SERVICE. Call <strong>GetService</strong> on any of the following objects:</p><ul> <li> The Media Session, if the topology contains an instance of the EVR. </li> <li>The EVR media sink. </li> <li>The DirectShow EVR filter. </li> <li>The EVR presenter. </li> </ul><p>If you implement a custom presenter for the EVR, the presenter can optionally expose this interface as a service.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFVideoDisplayControl::GetVideoWindow']/*\"/>\t\n            <msdn-id>ms704002</msdn-id>\t\n            <unmanaged>GetVideoWindow / SetVideoWindow</unmanaged>\t\n            <unmanaged-short>GetVideoWindow</unmanaged-short>\t\n            <unmanaged>HRESULT IMFVideoDisplayControl::GetVideoWindow([Out] HWND* phwndVideo)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.VideoDisplayControl.BorderColor\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Controls how the Enhanced Video Renderer (EVR) displays video.</p><p>The EVR presenter implements this interface. To get a reference to the interface, call <strong><see cref=\"M:SharpDX.MediaFoundation.ServiceProvider.GetService(System.Guid,System.Guid,System.IntPtr@)\"/></strong>. The service identifier is <see cref=\"T:System.Guid\"/> MR_VIDEO_RENDER_SERVICE. Call <strong>GetService</strong> on any of the following objects:</p><ul> <li> The Media Session, if the topology contains an instance of the EVR. </li> <li>The EVR media sink. </li> <li>The DirectShow EVR filter. </li> <li>The EVR presenter. </li> </ul><p>If you implement a custom presenter for the EVR, the presenter can optionally expose this interface as a service.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFVideoDisplayControl::GetBorderColor']/*\"/>\t\n            <msdn-id>ms704002</msdn-id>\t\n            <unmanaged>GetBorderColor / SetBorderColor</unmanaged>\t\n            <unmanaged-short>GetBorderColor</unmanaged-short>\t\n            <unmanaged>HRESULT IMFVideoDisplayControl::GetBorderColor([Out] COLORREF* pClr)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.VideoDisplayControl.RenderingPrefs\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Controls how the Enhanced Video Renderer (EVR) displays video.</p><p>The EVR presenter implements this interface. To get a reference to the interface, call <strong><see cref=\"M:SharpDX.MediaFoundation.ServiceProvider.GetService(System.Guid,System.Guid,System.IntPtr@)\"/></strong>. The service identifier is <see cref=\"T:System.Guid\"/> MR_VIDEO_RENDER_SERVICE. Call <strong>GetService</strong> on any of the following objects:</p><ul> <li> The Media Session, if the topology contains an instance of the EVR. </li> <li>The EVR media sink. </li> <li>The DirectShow EVR filter. </li> <li>The EVR presenter. </li> </ul><p>If you implement a custom presenter for the EVR, the presenter can optionally expose this interface as a service.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFVideoDisplayControl::GetRenderingPrefs']/*\"/>\t\n            <msdn-id>ms704002</msdn-id>\t\n            <unmanaged>GetRenderingPrefs / SetRenderingPrefs</unmanaged>\t\n            <unmanaged-short>GetRenderingPrefs</unmanaged-short>\t\n            <unmanaged>HRESULT IMFVideoDisplayControl::GetRenderingPrefs([Out] unsigned int* pdwRenderFlags)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.VideoDisplayControl.Fullscreen\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Queries whether the enhanced video renderer (EVR) is currently in full-screen mode. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFVideoDisplayControl::GetFullscreen']/*\"/>\t\n            <msdn-id>ms704817</msdn-id>\t\n            <unmanaged>GetFullscreen / SetFullscreen</unmanaged>\t\n            <unmanaged-short>GetFullscreen</unmanaged-short>\t\n            <unmanaged>HRESULT IMFVideoDisplayControl::GetFullscreen([Out] BOOL* pfFullscreen)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.VideoMediaType\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Represents a description of a video format.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>If the major type of a media type is <see cref=\"F:SharpDX.MediaFoundation.MediaTypeGuids.Video\"/>, you can query the media type object for the <strong><see cref=\"T:SharpDX.MediaFoundation.VideoMediaType\"/></strong> interface.</p><p>Applications should avoid using this interface except when a method or function requires an <strong><see cref=\"T:SharpDX.MediaFoundation.VideoMediaType\"/></strong> reference as a parameter. You can get all of the format information from a video media type through the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaAttributes\"/></strong> interface, which <strong><see cref=\"T:SharpDX.MediaFoundation.MediaType\"/></strong> inherits.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFVideoMediaType']/*\"/>\t\n            <msdn-id>aa473814</msdn-id>\t\n            <unmanaged>IMFVideoMediaType</unmanaged>\t\n            <unmanaged-short>IMFVideoMediaType</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.VideoMediaType.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.VideoMediaType\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.VideoMediaType.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.VideoMediaType\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.VideoMediaType\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.VideoMediaType.GetVideoFormat\">\n            <summary>\t\n            <p>[<strong>GetVideoFormat</strong> is no longer available for use as of Windows?7. Instead, use the media type attributes to get the properties of the video format.]</p><p><strong>Applies to: </strong>desktop apps only</p><p>Returns a reference to an <strong><see cref=\"T:SharpDX.MediaFoundation.VideoFormat\"/></strong> structure that describes the video format.</p>\t\n            </summary>\t\n            <returns><p> This method returns a reference to an <strong><see cref=\"T:SharpDX.MediaFoundation.VideoFormat\"/></strong> structure. </p></returns>\t\n            <remarks>\t\n            <p> If you need to convert the media type into an <strong><see cref=\"T:SharpDX.MediaFoundation.VideoFormat\"/></strong> structure, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateMFVideoFormatFromMFMediaType(SharpDX.MediaFoundation.MediaType,SharpDX.MediaFoundation.VideoFormat@,System.Int32@)\"/></strong>.</p><p>There are no guarantees about how long the returned reference is valid.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFVideoMediaType::GetVideoFormat']/*\"/>\t\n            <msdn-id>aa473785</msdn-id>\t\n            <unmanaged>const MFVIDEOFORMAT* IMFVideoMediaType::GetVideoFormat()</unmanaged>\t\n            <unmanaged-short>IMFVideoMediaType::GetVideoFormat</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.VideoMediaType.GetVideoRepresentation(System.Guid,System.IntPtr@,System.Int32)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"guidRepresentation\">No documentation.</param>\t\n            <param name=\"vRepresentationOut\">No documentation.</param>\t\n            <param name=\"lStride\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFVideoMediaType::GetVideoRepresentation']/*\"/>\t\n            <unmanaged>HRESULT IMFVideoMediaType::GetVideoRepresentation([In] GUID guidRepresentation,[Out] void** ppvRepresentation,[In] int lStride)</unmanaged>\t\n            <unmanaged-short>IMFVideoMediaType::GetVideoRepresentation</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.VideoMediaType.VideoFormat\">\n            <summary>\t\n            <p>[<strong>GetVideoFormat</strong> is no longer available for use as of Windows?7. Instead, use the media type attributes to get the properties of the video format.]</p><p><strong>Applies to: </strong>desktop apps only</p><p>Returns a reference to an <strong><see cref=\"T:SharpDX.MediaFoundation.VideoFormat\"/></strong> structure that describes the video format.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p> If you need to convert the media type into an <strong><see cref=\"T:SharpDX.MediaFoundation.VideoFormat\"/></strong> structure, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateMFVideoFormatFromMFMediaType(SharpDX.MediaFoundation.MediaType,SharpDX.MediaFoundation.VideoFormat@,System.Int32@)\"/></strong>.</p><p>There are no guarantees about how long the returned reference is valid.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFVideoMediaType::GetVideoFormat']/*\"/>\t\n            <msdn-id>aa473785</msdn-id>\t\n            <unmanaged>GetVideoFormat</unmanaged>\t\n            <unmanaged-short>GetVideoFormat</unmanaged-short>\t\n            <unmanaged>const MFVIDEOFORMAT* IMFVideoMediaType::GetVideoFormat()</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.VideoMixerBitmap\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Alpha-blends a static bitmap image with the video displayed by the Enhanced Video Renderer (EVR).</p><p>The EVR mixer implements this interface. To get a reference to the interface, call <strong><see cref=\"M:SharpDX.MediaFoundation.ServiceProvider.GetService(System.Guid,System.Guid,System.IntPtr@)\"/></strong>. The service identifier <see cref=\"T:System.Guid\"/> is MR_VIDEO_MIXER_SERVICE. Call <strong>GetService</strong> on any of the following objects:</p><ul> <li> The Media Session, if the topology contains an instance of the EVR. </li> <li> The EVR media sink. </li> <li> The DirectShow EVR filter. </li> <li> The EVR mixer. </li> </ul><p>If you implement a custom mixer for the EVR, the mixer can optionally expose this interface as a service.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFVideoMixerBitmap']/*\"/>\t\n            <msdn-id>ms697041</msdn-id>\t\n            <unmanaged>IMFVideoMixerBitmap</unmanaged>\t\n            <unmanaged-short>IMFVideoMixerBitmap</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.VideoMixerBitmap.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.VideoMixerBitmap\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.VideoMixerBitmap.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.VideoMixerBitmap\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.VideoMixerBitmap\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.VideoMixerBitmap.SetAlphaBitmap(SharpDX.MediaFoundation.VideoAlphaBitmap@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Sets a bitmap image for the enhanced video renderer (EVR) to alpha-blend with the video.</p>\t\n            </summary>\t\n            <param name=\"bmpParmsRef\"><dd> <p>Pointer to an <strong><see cref=\"T:SharpDX.MediaFoundation.VideoAlphaBitmap\"/></strong> structure that contains information about the bitmap, the source and destination rectangles, the color key, and other information.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong>E_INVALIDARG</strong></dt> </dl> </td><td> <p>The blending parameters defined in the <em>pBmpParms</em> structure are not valid.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>The application can provide the image either as a GDI bitmap or as a Direct3D surface. The EVR mixer blends the image with the next video frame and all subsequent frames, until the image is changed or removed. The image can contain embedded per-pixel alpha information so that transparent regions can be defined. Transparent areas can also be identified using a color key value.</p><p>If you use a Direct3D surface, the surface format must be 32-bit RGB, either <see cref=\"F:SharpDX.Direct3D9.Format.X8R8G8B8\"/> or <see cref=\"F:SharpDX.Direct3D9.Format.A8R8G8B8\"/>, and the surface must be allocated from the <see cref=\"F:SharpDX.Direct3D9.Pool.SystemMemory\"/> memory pool.</p><p>There is no defined limit to how frequently you can pass images to the video renderer. However, changing the image several times per second can impact the performance and smoothness of the video.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFVideoMixerBitmap::SetAlphaBitmap']/*\"/>\t\n            <msdn-id>ms701866</msdn-id>\t\n            <unmanaged>HRESULT IMFVideoMixerBitmap::SetAlphaBitmap([In] const MFVideoAlphaBitmap* pBmpParms)</unmanaged>\t\n            <unmanaged-short>IMFVideoMixerBitmap::SetAlphaBitmap</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.VideoMixerBitmap.ClearAlphaBitmap\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Removes the current bitmap and releases any resources associated with it.</p>\t\n            </summary>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.NotInitializeD\"/></strong></dt> </dl> </td><td> <p>No bitmap is currently set.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFVideoMixerBitmap::ClearAlphaBitmap']/*\"/>\t\n            <msdn-id>ms699004</msdn-id>\t\n            <unmanaged>HRESULT IMFVideoMixerBitmap::ClearAlphaBitmap()</unmanaged>\t\n            <unmanaged-short>IMFVideoMixerBitmap::ClearAlphaBitmap</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.VideoMixerBitmap.UpdateAlphaBitmapParameters(SharpDX.MediaFoundation.VideoAlphaBitmapParams@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Updates the current alpha-blending settings, including the source and destination rectangles, the color key, and other information. You can update some or all of the blending parameters.</p>\t\n            </summary>\t\n            <param name=\"bmpParmsRef\"><dd> <p>Pointer to an <strong><see cref=\"T:SharpDX.MediaFoundation.VideoAlphaBitmapParams\"/></strong> structure that contains the blending parameters.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong>E_INVALIDARG</strong></dt> </dl> </td><td> <p>The blending parameters defined in the <em>pBmpParms</em> structure are not valid.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.NotInitializeD\"/></strong></dt> </dl> </td><td> <p>No bitmap is currently set. You must call <strong><see cref=\"M:SharpDX.MediaFoundation.VideoMixerBitmap.SetAlphaBitmap(SharpDX.MediaFoundation.VideoAlphaBitmap@)\"/></strong> to set a bitmap.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>The video must be playing for the changes to take effect.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFVideoMixerBitmap::UpdateAlphaBitmapParameters']/*\"/>\t\n            <msdn-id>ms696236</msdn-id>\t\n            <unmanaged>HRESULT IMFVideoMixerBitmap::UpdateAlphaBitmapParameters([In] const MFVideoAlphaBitmapParams* pBmpParms)</unmanaged>\t\n            <unmanaged-short>IMFVideoMixerBitmap::UpdateAlphaBitmapParameters</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.VideoMixerBitmap.GetAlphaBitmapParameters(SharpDX.MediaFoundation.VideoAlphaBitmapParams@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the current settings that the enhanced video renderer (EVR) uses to alpha-blend the bitmap with the video.</p>\t\n            </summary>\t\n            <param name=\"bmpParmsRef\"><dd> <p>Pointer to an <strong><see cref=\"T:SharpDX.MediaFoundation.VideoAlphaBitmapParams\"/></strong> structure that receives the current blending parameters.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.NotInitializeD\"/></strong></dt> </dl> </td><td> <p>No bitmap is currently set. You must call <strong><see cref=\"M:SharpDX.MediaFoundation.VideoMixerBitmap.SetAlphaBitmap(SharpDX.MediaFoundation.VideoAlphaBitmap@)\"/></strong> to set a bitmap.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>This method returns the current values of all the blending parameters, not just those that the application specified. Ignore the <strong>dwFlags</strong> member of the structure.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFVideoMixerBitmap::GetAlphaBitmapParameters']/*\"/>\t\n            <msdn-id>ms693566</msdn-id>\t\n            <unmanaged>HRESULT IMFVideoMixerBitmap::GetAlphaBitmapParameters([Out] MFVideoAlphaBitmapParams* pBmpParms)</unmanaged>\t\n            <unmanaged-short>IMFVideoMixerBitmap::GetAlphaBitmapParameters</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.VideoMixerBitmap.AlphaBitmap\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Sets a bitmap image for the enhanced video renderer (EVR) to alpha-blend with the video.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The application can provide the image either as a GDI bitmap or as a Direct3D surface. The EVR mixer blends the image with the next video frame and all subsequent frames, until the image is changed or removed. The image can contain embedded per-pixel alpha information so that transparent regions can be defined. Transparent areas can also be identified using a color key value.</p><p>If you use a Direct3D surface, the surface format must be 32-bit RGB, either <see cref=\"F:SharpDX.Direct3D9.Format.X8R8G8B8\"/> or <see cref=\"F:SharpDX.Direct3D9.Format.A8R8G8B8\"/>, and the surface must be allocated from the <see cref=\"F:SharpDX.Direct3D9.Pool.SystemMemory\"/> memory pool.</p><p>There is no defined limit to how frequently you can pass images to the video renderer. However, changing the image several times per second can impact the performance and smoothness of the video.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFVideoMixerBitmap::SetAlphaBitmap']/*\"/>\t\n            <msdn-id>ms701866</msdn-id>\t\n            <unmanaged>SetAlphaBitmap</unmanaged>\t\n            <unmanaged-short>SetAlphaBitmap</unmanaged-short>\t\n            <unmanaged>HRESULT IMFVideoMixerBitmap::SetAlphaBitmap([In] const MFVideoAlphaBitmap* pBmpParms)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.VideoMixerBitmap.AlphaBitmapParameters\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the current settings that the enhanced video renderer (EVR) uses to alpha-blend the bitmap with the video.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This method returns the current values of all the blending parameters, not just those that the application specified. Ignore the <strong>dwFlags</strong> member of the structure.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFVideoMixerBitmap::GetAlphaBitmapParameters']/*\"/>\t\n            <msdn-id>ms693566</msdn-id>\t\n            <unmanaged>GetAlphaBitmapParameters</unmanaged>\t\n            <unmanaged-short>GetAlphaBitmapParameters</unmanaged-short>\t\n            <unmanaged>HRESULT IMFVideoMixerBitmap::GetAlphaBitmapParameters([Out] MFVideoAlphaBitmapParams* pBmpParms)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.VideoMixerControl\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Controls how the Enhanced Video Renderer (EVR) mixes video substreams. Applications can use this interface to control video mixing during playback.</p><p>The EVR mixer implements this interface. To get a reference to the interface, call <strong><see cref=\"M:SharpDX.MediaFoundation.ServiceProvider.GetService(System.Guid,System.Guid,System.IntPtr@)\"/></strong>. The service identifier <see cref=\"T:System.Guid\"/> is MR_VIDEO_MIXER_SERVICE. Call <strong>GetService</strong> on any of the following objects:</p><ul> <li> The Media Session, if the topology contains an instance of the EVR. </li> <li> The EVR media sink. </li> <li> The DirectShow EVR filter. </li> <li> The EVR mixer. </li> </ul><p>If you implement a custom mixer for the EVR, the mixer can optionally expose this interface as a service.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFVideoMixerControl']/*\"/>\t\n            <msdn-id>ms700190</msdn-id>\t\n            <unmanaged>IMFVideoMixerControl</unmanaged>\t\n            <unmanaged-short>IMFVideoMixerControl</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.VideoMixerControl.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.VideoMixerControl\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.VideoMixerControl.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.VideoMixerControl\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.VideoMixerControl\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.VideoMixerControl.SetStreamZOrder(System.Int32,System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Sets the z-order of a video stream.</p>\t\n            </summary>\t\n            <param name=\"dwStreamID\"><dd> <p>Identifier of the stream. For the EVR media sink, the stream identifier is defined when the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaSink.AddStreamSink(System.Int32,SharpDX.MediaFoundation.MediaType,SharpDX.MediaFoundation.StreamSink@)\"/></strong> method is called. For the DirectShow EVR filter, the stream identifier corresponds to the pin index. The reference stream is always stream 0.</p> </dd></param>\t\n            <param name=\"dwZ\"><dd> <p>Z-order value. The z-order of the reference stream must be zero. The maximum z-order value is the number of streams minus one.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong>E_INVALIDARG</strong></dt> </dl> </td><td> <p>The value of <em>dwZ</em> is larger than the maximum z-order value.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidRequest\"/></strong></dt> </dl> </td><td> <p>Invalid z-order for this stream. For the reference stream, <em>dwZ</em> must be zero. For all other streams, <em>dwZ</em> must be greater than zero.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidStreamNumber\"/></strong></dt> </dl> </td><td> <p>Invalid stream identifier.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>The EVR draws the video streams in the order of their z-order values, starting with zero. The reference stream must be first in the z-order, and the remaining streams can be in any order.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFVideoMixerControl::SetStreamZOrder']/*\"/>\t\n            <msdn-id>ms697453</msdn-id>\t\n            <unmanaged>HRESULT IMFVideoMixerControl::SetStreamZOrder([In] unsigned int dwStreamID,[In] unsigned int dwZ)</unmanaged>\t\n            <unmanaged-short>IMFVideoMixerControl::SetStreamZOrder</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.VideoMixerControl.GetStreamZOrder(System.Int32,System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the z-order of a video stream.</p>\t\n            </summary>\t\n            <param name=\"dwStreamID\"><dd> <p>Identifier of the stream. For the EVR media sink, the stream identifier is defined when the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaSink.AddStreamSink(System.Int32,SharpDX.MediaFoundation.MediaType,SharpDX.MediaFoundation.StreamSink@)\"/></strong> method is called. For the DirectShow EVR filter, the stream identifier corresponds to the pin index. The reference stream is always stream 0.</p> </dd></param>\t\n            <param name=\"dwZRef\"><dd> <p>Receives the z-order value.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidStreamNumber\"/></strong></dt> </dl> </td><td> <p>Invalid stream identifier.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFVideoMixerControl::GetStreamZOrder']/*\"/>\t\n            <msdn-id>ms701614</msdn-id>\t\n            <unmanaged>HRESULT IMFVideoMixerControl::GetStreamZOrder([In] unsigned int dwStreamID,[Out] unsigned int* pdwZ)</unmanaged>\t\n            <unmanaged-short>IMFVideoMixerControl::GetStreamZOrder</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.VideoMixerControl.SetStreamOutputRect(System.Int32,SharpDX.MediaFoundation.VideoNormalizedRect)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Sets the position of a video stream within the composition rectangle. </p>\t\n            </summary>\t\n            <param name=\"dwStreamID\"><dd> <p>Identifier of the stream. For the EVR media sink, the stream identifier is defined when the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaSink.AddStreamSink(System.Int32,SharpDX.MediaFoundation.MediaType,SharpDX.MediaFoundation.StreamSink@)\"/></strong> method is called. For the DirectShow EVR filter, the stream identifier corresponds to the pin index. The reference stream is always stream 0.</p> </dd></param>\t\n            <param name=\"nrcOutputRef\"><dd> <p>Pointer to an <strong><see cref=\"T:SharpDX.MediaFoundation.VideoNormalizedRect\"/></strong> structure that defines the bounding rectangle for the video stream.</p> </dd></param>\t\n            <returns><p> The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table. </p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded. </p> </td></tr> <tr><td> <dl> <dt><strong>E_INVALIDARG</strong></dt> </dl> </td><td> <p> The coordinates of the bounding rectangle given in <em>pnrcOutput</em> are not valid. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidStreamNumber\"/></strong></dt> </dl> </td><td> <p> Invalid stream identifier. </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p> The mixer draws each video stream inside a bounding rectangle that is specified relative to the final video image. This bounding rectangle is given in <em>normalized</em> coordinates. For more information, see <strong><see cref=\"T:SharpDX.MediaFoundation.VideoNormalizedRect\"/></strong> structure. </p><p> The coordinates of the bounding rectangle must fall within the range [0.0, 1.0]. Also, the X and Y coordinates of the upper-left corner cannot exceed the X and Y coordinates of the lower-right corner. In other words, the bounding rectangle must fit entirely within the composition rectangle and cannot be flipped vertically or horizontally. </p><p>The following diagram shows how the EVR mixes substreams.</p><p>The output rectangle for the stream is specified by calling <strong>SetStreamOutputRect</strong>. The source rectangle is specified by calling <strong><see cref=\"M:SharpDX.MediaFoundation.VideoDisplayControl.SetVideoPosition(System.Nullable{SharpDX.MediaFoundation.VideoNormalizedRect},System.Nullable{SharpDX.Rectangle})\"/></strong>. The mixer applies the output rectangle first, when it mixes the streams into a single bounding rectangle. This bounding rectangle is called <em>composition space</em>. Then the presenter applies the source rectangle to the composited image.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFVideoMixerControl::SetStreamOutputRect']/*\"/>\t\n            <msdn-id>ms698959</msdn-id>\t\n            <unmanaged>HRESULT IMFVideoMixerControl::SetStreamOutputRect([In] unsigned int dwStreamID,[In] const MFVideoNormalizedRect* pnrcOutput)</unmanaged>\t\n            <unmanaged-short>IMFVideoMixerControl::SetStreamOutputRect</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.VideoMixerControl.GetStreamOutputRect(System.Int32,SharpDX.MediaFoundation.VideoNormalizedRect@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the position of a video stream within the composition rectangle.</p>\t\n            </summary>\t\n            <param name=\"dwStreamID\"><dd> <p>The identifier of the stream. For the EVR media sink, the stream identifier is defined when the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaSink.AddStreamSink(System.Int32,SharpDX.MediaFoundation.MediaType,SharpDX.MediaFoundation.StreamSink@)\"/></strong> method is called. For the DirectShow EVR filter, the stream identifier corresponds to the pin index. The reference stream is always stream 0.</p> </dd></param>\t\n            <param name=\"nrcOutputRef\"><dd> <p>Pointer to an <strong><see cref=\"T:SharpDX.MediaFoundation.VideoNormalizedRect\"/></strong> structure that receives the bounding rectangle, in normalized coordinates.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidStreamNumber\"/></strong></dt> </dl> </td><td> <p>Invalid stream identifier.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFVideoMixerControl::GetStreamOutputRect']/*\"/>\t\n            <msdn-id>ms698911</msdn-id>\t\n            <unmanaged>HRESULT IMFVideoMixerControl::GetStreamOutputRect([In] unsigned int dwStreamID,[Out] MFVideoNormalizedRect* pnrcOutput)</unmanaged>\t\n            <unmanaged-short>IMFVideoMixerControl::GetStreamOutputRect</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.VideoMixerControl2\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Controls preferences for video deinterlacing.</p><p> The default video mixer for the Enhanced Video Renderer (EVR) implements this interface.</p><p>To get a reference to the interface, call <strong><see cref=\"M:SharpDX.MediaFoundation.ServiceProvider.GetService(System.Guid,System.Guid,System.IntPtr@)\"/></strong> on any of the following objects, using the <strong>MR_VIDEO_MIXER_SERVICE</strong> service identifier:</p><ul> <li>The Media Session, if the topology contains an instance of the EVR.</li> <li>The EVR media sink.</li> <li>The  DirectShow EVR filter.</li> <li>The EVR mixer.</li> </ul>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFVideoMixerControl2']/*\"/>\t\n            <msdn-id>dd374894</msdn-id>\t\n            <unmanaged>IMFVideoMixerControl2</unmanaged>\t\n            <unmanaged-short>IMFVideoMixerControl2</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.VideoMixerControl2.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.VideoMixerControl2\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.VideoMixerControl2.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.VideoMixerControl2\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.VideoMixerControl2\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.VideoMixerControl2.SetMixingPrefs(System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Sets the preferences for video deinterlacing.</p>\t\n            </summary>\t\n            <param name=\"dwMixFlags\"><dd> <p>Bitwise <strong>OR</strong> of zero or more flags from the <strong><see cref=\"T:SharpDX.MediaFoundation.VideoMixPrefs\"/></strong> enumeration. </p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFVideoMixerControl2::SetMixingPrefs']/*\"/>\t\n            <msdn-id>dd374898</msdn-id>\t\n            <unmanaged>HRESULT IMFVideoMixerControl2::SetMixingPrefs([In] unsigned int dwMixFlags)</unmanaged>\t\n            <unmanaged-short>IMFVideoMixerControl2::SetMixingPrefs</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.VideoMixerControl2.GetMixingPrefs(System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Gets the current preferences for video deinterlacing.</p>\t\n            </summary>\t\n            <param name=\"dwMixFlagsRef\"><dd> <p>Receives a bitwise <strong>OR</strong> of zero or more flags from the <strong><see cref=\"T:SharpDX.MediaFoundation.VideoMixPrefs\"/></strong> enumeration.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFVideoMixerControl2::GetMixingPrefs']/*\"/>\t\n            <msdn-id>dd374896</msdn-id>\t\n            <unmanaged>HRESULT IMFVideoMixerControl2::GetMixingPrefs([Out] unsigned int* pdwMixFlags)</unmanaged>\t\n            <unmanaged-short>IMFVideoMixerControl2::GetMixingPrefs</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.VideoMixerControl2.MixingPrefs\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Gets the current preferences for video deinterlacing.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFVideoMixerControl2::GetMixingPrefs']/*\"/>\t\n            <msdn-id>dd374896</msdn-id>\t\n            <unmanaged>GetMixingPrefs / SetMixingPrefs</unmanaged>\t\n            <unmanaged-short>GetMixingPrefs</unmanaged-short>\t\n            <unmanaged>HRESULT IMFVideoMixerControl2::GetMixingPrefs([Out] unsigned int* pdwMixFlags)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.VideoPositionMapper\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Maps a position on an input video stream to the corresponding position on an output video stream.</p><p>To obtain a reference to this interface, call <strong><see cref=\"M:SharpDX.MediaFoundation.ServiceProvider.GetService(System.Guid,System.Guid,System.IntPtr@)\"/></strong> on the renderer with the service <see cref=\"T:System.Guid\"/> MR_VIDEO_RENDER_SERVICE.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFVideoPositionMapper']/*\"/>\t\n            <msdn-id>ms695386</msdn-id>\t\n            <unmanaged>IMFVideoPositionMapper</unmanaged>\t\n            <unmanaged-short>IMFVideoPositionMapper</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.VideoPositionMapper.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.VideoPositionMapper\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.VideoPositionMapper.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.VideoPositionMapper\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.VideoPositionMapper\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.VideoPositionMapper.MapOutputCoordinateToInputStream(System.Single,System.Single,System.Int32,System.Int32,System.Single@,System.Single@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Maps output image coordinates to input image coordinates. This method provides the reverse transformation for components that map coordinates on the input image to different coordinates on the output image. </p>\t\n            </summary>\t\n            <param name=\"xOut\"><dd> <p> X-coordinate of the output image, normalized to the range [0...1]. </p> </dd></param>\t\n            <param name=\"yOut\"><dd> <p> Y-coordinate of the output image, normalized to the range [0...1]. </p> </dd></param>\t\n            <param name=\"dwOutputStreamIndex\"><dd> <p> Output stream index for the coordinate mapping. </p> </dd></param>\t\n            <param name=\"dwInputStreamIndex\"><dd> <p> Input stream index for the coordinate mapping. </p> </dd></param>\t\n            <param name=\"xInRef\"><dd> <p> Receives the mapped x-coordinate of the input image, normalized to the range [0...1]. </p> </dd></param>\t\n            <param name=\"yInRef\"><dd> <p> Receives the mapped y-coordinate of the input image, normalized to the range [0...1]. </p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/></strong></dt> </dl> </td><td> <p> The video renderer has been shut down. </p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>In the following diagram, R(dest) is the destination rectangle for the video. You can obtain this rectangle by calling <strong><see cref=\"M:SharpDX.MediaFoundation.VideoDisplayControl.GetVideoPosition(SharpDX.MediaFoundation.VideoNormalizedRect@,SharpDX.Rectangle@)\"/></strong>. The rectangle R1 is a substream within the video. The point P has pixel coordinates (x,y) relative to R(dest).</p><p></p><p>The position of P relative to R(dest) in <em>normalized</em> coordinates is calculated as follows:</p><code>float xn = float(x + 0.5) / widthDest;\t\n            float xy = float(y + 0.5) / heightDest;\t\n            </code><p>where <em>widthDest</em> and <em>heightDest</em> are the width and height of R(dest) in pixels.</p><p>To calculate the position of P relative to R1, call <strong>MapOutputCoordinateToInputStream</strong> as follows:</p><code>float x1 = 0, y1 = 0;\t\n            hr = pMap-&gt;MapOutputCoordinateToInputStream(xn, yn, 0, dwInputStreamIndex, &amp;x1, &amp;y1);</code><p>The values returned in <em>x1</em> and <em>y1</em> are normalized to the range [0...1]. To convert back to pixel coordinates, scale these values by the size of R1:</p><code>int scaledx = int(floor(x1 * widthR1));\t\n            int scaledy = int(floor(xy * heightR1));</code><p>Note that <em>x1</em> and <em>y1</em> might fall outside the range [0...1] if P lies outside of R1.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFVideoPositionMapper::MapOutputCoordinateToInputStream']/*\"/>\t\n            <msdn-id>ms703892</msdn-id>\t\n            <unmanaged>HRESULT IMFVideoPositionMapper::MapOutputCoordinateToInputStream([In] float xOut,[In] float yOut,[In] unsigned int dwOutputStreamIndex,[In] unsigned int dwInputStreamIndex,[Out] float* pxIn,[Out] float* pyIn)</unmanaged>\t\n            <unmanaged-short>IMFVideoPositionMapper::MapOutputCoordinateToInputStream</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.VideoPresenter\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Represents a video presenter. A <em>video presenter</em> is an object that receives video frames, typically from a video mixer, and presents them in some way, typically by rendering them to the display. The enhanced video renderer (EVR) provides a default video presenter, and applications can implement custom presenters.</p><p>The video presenter receives video frames as soon as they are available from upstream. The video presenter is responsible for presenting frames at the correct time and for synchronizing with the presentation clock.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFVideoPresenter']/*\"/>\t\n            <msdn-id>ms700214</msdn-id>\t\n            <unmanaged>IMFVideoPresenter</unmanaged>\t\n            <unmanaged-short>IMFVideoPresenter</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.VideoPresenter.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.VideoPresenter\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.VideoPresenter.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.VideoPresenter\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.VideoPresenter\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.VideoPresenter.ProcessMessage(SharpDX.MediaFoundation.VpMessageType,System.IntPtr)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Sends a message to the video presenter. Messages are used to signal the presenter that it must perform some action, or that some event has occurred.</p>\t\n            </summary>\t\n            <param name=\"eMessage\"><dd> <p>Specifies the message as a member of the <strong><see cref=\"T:SharpDX.MediaFoundation.VpMessageType\"/></strong> enumeration.</p> </dd></param>\t\n            <param name=\"ulParam\"><dd> <p>Message parameter. The meaning of this parameter depends on the message type.</p> </dd></param>\t\n            <returns><p>The method returns an <see cref=\"T:SharpDX.Result\"/>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/></strong></dt> </dl> </td><td> <p>The video renderer has been shut down.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFVideoPresenter::ProcessMessage']/*\"/>\t\n            <msdn-id>bb970573</msdn-id>\t\n            <unmanaged>HRESULT IMFVideoPresenter::ProcessMessage([In] MFVP_MESSAGE_TYPE eMessage,[In] ULONG_PTR ulParam)</unmanaged>\t\n            <unmanaged-short>IMFVideoPresenter::ProcessMessage</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.VideoPresenter.GetCurrentMediaType(SharpDX.MediaFoundation.VideoMediaType@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Represents a video presenter. A <em>video presenter</em> is an object that receives video frames, typically from a video mixer, and presents them in some way, typically by rendering them to the display. The enhanced video renderer (EVR) provides a default video presenter, and applications can implement custom presenters.</p><p>The video presenter receives video frames as soon as they are available from upstream. The video presenter is responsible for presenting frames at the correct time and for synchronizing with the presentation clock.</p>\t\n            </summary>\t\n            <param name=\"mediaTypeOut\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFVideoPresenter::GetCurrentMediaType']/*\"/>\t\n            <msdn-id>ms700214</msdn-id>\t\n            <unmanaged>HRESULT IMFVideoPresenter::GetCurrentMediaType([Out] IMFVideoMediaType** ppMediaType)</unmanaged>\t\n            <unmanaged-short>IMFVideoPresenter::GetCurrentMediaType</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.VideoPresenter.CurrentMediaType\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Represents a video presenter. A <em>video presenter</em> is an object that receives video frames, typically from a video mixer, and presents them in some way, typically by rendering them to the display. The enhanced video renderer (EVR) provides a default video presenter, and applications can implement custom presenters.</p><p>The video presenter receives video frames as soon as they are available from upstream. The video presenter is responsible for presenting frames at the correct time and for synchronizing with the presentation clock.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFVideoPresenter::GetCurrentMediaType']/*\"/>\t\n            <msdn-id>ms700214</msdn-id>\t\n            <unmanaged>GetCurrentMediaType</unmanaged>\t\n            <unmanaged-short>GetCurrentMediaType</unmanaged-short>\t\n            <unmanaged>HRESULT IMFVideoPresenter::GetCurrentMediaType([Out] IMFVideoMediaType** ppMediaType)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.VideoProcessor\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Controls video processing in the Enhanced Video Renderer (EVR). The operations controlled through this interface include color adjustment (ProcAmp), noise filters, and detail filters.</p><p>The EVR mixer implements this interface. To get a reference to the interface, call <strong><see cref=\"M:SharpDX.MediaFoundation.ServiceProvider.GetService(System.Guid,System.Guid,System.IntPtr@)\"/></strong>. The service identifier is <see cref=\"T:System.Guid\"/> MR_VIDEO_MIXER_SERVICE. Call <strong>GetService</strong> on any of the following objects:</p><ul> <li> The media sesson (if the topology contains an instance of the EVR). </li> <li> The EVR media sink. </li> <li> The DirectShow EVR filter. </li> <li> The EVR mixer. </li> </ul><p>If you implement a custom mixer for the EVR, the mixer can optionally expose this interface as a service.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This interface provides access to functionality that is implemented by the graphics driver. The driver provides one or more video processor <em>modes</em>, which are identified by <see cref=\"T:System.Guid\"/>. Each mode has its own set of capabilities. The list of available modes might change depending on the media type of the video.</p><p>To use this interface, perform the following steps:</p><ol> <li> <p>Initialize the media types on the EVR input streams. (If you are using the Media Session, this occurs after the topology is resolved. Wait for the Media Session to send the <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.SessionTopologyStatus\"/> event with a status value of <see cref=\"F:SharpDX.MediaFoundation.Topostatus.Ready\"/>.)</p> </li> <li> <p>Call <strong><see cref=\"M:SharpDX.MediaFoundation.VideoProcessor.GetAvailableVideoProcessorModes(System.Int32@,System.Guid[])\"/></strong> to get the list of video processor modes that are available.</p> </li> <li> <p>Call <strong><see cref=\"M:SharpDX.MediaFoundation.VideoProcessor.GetVideoProcessorCaps(System.Guid,SharpDX.MediaFoundation.DirectX.VideoProcessorCaps@)\"/></strong> to find the capabilities of each video processor mode.</p> </li> <li> <p>Call <strong><see cref=\"M:SharpDX.MediaFoundation.VideoProcessor.SetVideoProcessorMode(System.Guid)\"/></strong> to select a mode. If you skip this step, the EVR automatically selects a video processor mode when streaming begins. In that case, wait for playback to start before continuing to step 5.</p> </li> <li> <p>Call <strong><see cref=\"M:SharpDX.MediaFoundation.VideoProcessor.GetProcAmpRange(System.Int32,SharpDX.MediaFoundation.DirectX.ValueRange@)\"/></strong> and <strong><see cref=\"M:SharpDX.MediaFoundation.VideoProcessor.GetFilteringRange(System.Int32,SharpDX.MediaFoundation.DirectX.ValueRange@)\"/></strong> to find the range of values for the various ProcAmp and image filter settings.</p> </li> <li> <p>Call <strong><see cref=\"M:SharpDX.MediaFoundation.VideoProcessor.SetProcAmpValues(System.Int32,SharpDX.MediaFoundation.DirectX.ProcAmpValues@)\"/></strong> and <strong><see cref=\"M:SharpDX.MediaFoundation.VideoProcessor.SetFilteringValue(System.Int32,SharpDX.MediaFoundation.DirectX.Fixed32)\"/></strong> to change the ProcAmp and image filter settings.</p> </li> </ol>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFVideoProcessor']/*\"/>\t\n            <msdn-id>ms694106</msdn-id>\t\n            <unmanaged>IMFVideoProcessor</unmanaged>\t\n            <unmanaged-short>IMFVideoProcessor</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.VideoProcessor.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.VideoProcessor\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.VideoProcessor.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.VideoProcessor\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.VideoProcessor\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.VideoProcessor.GetAvailableVideoProcessorModes(System.Int32@,System.Guid[])\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the video processor modes that the video driver supports.</p>\t\n            </summary>\t\n            <param name=\"lpdwNumProcessingModes\"><dd> <p>Receives the number of video processor modes.</p> </dd></param>\t\n            <param name=\"videoProcessingModesOut\"><dd> <p>Receives a reference to an array of GUIDs. The number of elements in the array is returned in the <em>lpdwNumProcessingModes</em> parameter. The caller must release the memory for the array by calling <strong>CoTaskMemFree</strong>. This parameter can be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.TransformTypeNotSet\"/></strong></dt> </dl> </td><td> <p>The media type for the reference stream is not set.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>Video processor modes are identified by <see cref=\"T:System.Guid\"/>. For a list of predefined GUIDs, see <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.VideoProcessorService.GetVideoProcessorDeviceGuids(SharpDX.MediaFoundation.DirectX.VideoDesc@,System.Int32@,System.Guid[])\"/></strong>. A driver can define additional vendor-specific GUIDs. To get the capabilities of each mode, pass the <see cref=\"T:System.Guid\"/> to the <strong><see cref=\"M:SharpDX.MediaFoundation.VideoProcessor.GetVideoProcessorCaps(System.Guid,SharpDX.MediaFoundation.DirectX.VideoProcessorCaps@)\"/></strong> method.</p><p>Before calling this method, you must set the media type for the reference stream. Which modes are available might depend on the media type of the reference stream.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFVideoProcessor::GetAvailableVideoProcessorModes']/*\"/>\t\n            <msdn-id>bb970329</msdn-id>\t\n            <unmanaged>HRESULT IMFVideoProcessor::GetAvailableVideoProcessorModes([InOut] unsigned int* lpdwNumProcessingModes,[Out, Buffer, Optional] GUID** ppVideoProcessingModes)</unmanaged>\t\n            <unmanaged-short>IMFVideoProcessor::GetAvailableVideoProcessorModes</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.VideoProcessor.GetVideoProcessorCaps(System.Guid,SharpDX.MediaFoundation.DirectX.VideoProcessorCaps@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the capabilities of a video processor mode.</p>\t\n            </summary>\t\n            <param name=\"lpVideoProcessorMode\"><dd> <p>Pointer to a <see cref=\"T:System.Guid\"/> that identifies the video processor mode. To get a list of available modes, call <strong><see cref=\"M:SharpDX.MediaFoundation.VideoProcessor.GetAvailableVideoProcessorModes(System.Int32@,System.Guid[])\"/></strong>.</p> </dd></param>\t\n            <param name=\"lpVideoProcessorCaps\"><dd> <p>Pointer to a <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.VideoProcessorCaps\"/></strong> structure that receives the capabilities.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.TransformTypeNotSet\"/></strong></dt> </dl> </td><td> <p>The media type for the reference stream is not set.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>Before calling this method, you must set the media type for the reference stream.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFVideoProcessor::GetVideoProcessorCaps']/*\"/>\t\n            <msdn-id>bb970465</msdn-id>\t\n            <unmanaged>HRESULT IMFVideoProcessor::GetVideoProcessorCaps([In] GUID* lpVideoProcessorMode,[Out] DXVA2_VideoProcessorCaps* lpVideoProcessorCaps)</unmanaged>\t\n            <unmanaged-short>IMFVideoProcessor::GetVideoProcessorCaps</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.VideoProcessor.GetVideoProcessorMode(System.Guid@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the application's preferred video processor mode. To set the preferred mode, call <strong><see cref=\"M:SharpDX.MediaFoundation.VideoProcessor.SetVideoProcessorMode(System.Guid)\"/></strong>.</p>\t\n            </summary>\t\n            <param name=\"lpMode\">No documentation.</param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.TransformTypeNotSet\"/></strong></dt> </dl> </td><td> <p>The media type for the reference stream is not set.</p> </td></tr> <tr><td> <dl> <dt><strong>S_FALSE</strong></dt> </dl> </td><td> <p>The application has not specified a preferred video processor mode.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFVideoProcessor::GetVideoProcessorMode']/*\"/>\t\n            <msdn-id>bb970545</msdn-id>\t\n            <unmanaged>HRESULT IMFVideoProcessor::GetVideoProcessorMode([Out] GUID* lpMode)</unmanaged>\t\n            <unmanaged-short>IMFVideoProcessor::GetVideoProcessorMode</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.VideoProcessor.SetVideoProcessorMode(System.Guid)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Sets the preferred video processor mode. The EVR will attempt to use this mode when playback starts.</p>\t\n            </summary>\t\n            <param name=\"lpMode\"><dd> <p>Pointer to a <see cref=\"T:System.Guid\"/> that identifies the video processor mode. To get a list of available modes, call <strong><see cref=\"M:SharpDX.MediaFoundation.VideoProcessor.GetAvailableVideoProcessorModes(System.Int32@,System.Guid[])\"/></strong>.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Direct3D9.ResultCode.InvalidCall\"/></strong></dt> </dl> </td><td> <p>The requested mode is not valid.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidRequest\"/></strong></dt> </dl> </td><td> <p>The mixer has already allocated Direct3D resources and cannot change modes.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.TransformTypeNotSet\"/></strong></dt> </dl> </td><td> <p>The media type for the reference stream is not set.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>Before calling this method, set the media type for the reference stream as follows:</p><ul> <li> <p>DirectShow EVR filter: Connect pin 0.</p> </li> <li> <p>EVR media sink: Set the media type for stream 0.</p> </li> <li> <p>Mixer (standalone): Set the media type for input stream 0 and set the media type for the output stream.</p> </li> </ul><p>Which modes are available might depend on the reference stream's media type.</p><p>Call this method before video playback begins.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFVideoProcessor::SetVideoProcessorMode']/*\"/>\t\n            <msdn-id>bb970396</msdn-id>\t\n            <unmanaged>HRESULT IMFVideoProcessor::SetVideoProcessorMode([In] GUID* lpMode)</unmanaged>\t\n            <unmanaged-short>IMFVideoProcessor::SetVideoProcessorMode</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.VideoProcessor.GetProcAmpRange(System.Int32,SharpDX.MediaFoundation.DirectX.ValueRange@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the range of values for a color adjustment (ProcAmp) setting.</p>\t\n            </summary>\t\n            <param name=\"dwProperty\"><dd> <p>The ProcAmp setting to query. For a list of possible values, see ProcAmp Settings.</p> </dd></param>\t\n            <param name=\"propRangeRef\"><dd> <p>Pointer to a <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.ValueRange\"/></strong> structure that receives range of values for the specified ProcAmp setting.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong>E_INVALIDARG</strong></dt> </dl> </td><td> <p>Invalid value for <em>dwProperty</em>.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidRequest\"/></strong></dt> </dl> </td><td> <p>No video processor mode has been set.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.TransformTypeNotSet\"/></strong></dt> </dl> </td><td> <p>The media type for the reference stream is not set.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>This method returns the range of values that the current video processor mode supports for the specified ProcAmp setting.</p><p>This method fails if the video processor mode has not been set on the mixer. To select a video processor mode, call <strong><see cref=\"M:SharpDX.MediaFoundation.VideoProcessor.SetVideoProcessorMode(System.Guid)\"/></strong>. Otherwise, the EVR automatically selects a mode when streaming begins.</p><p>To find out which ProcAmp settings the driver supports, call <strong><see cref=\"M:SharpDX.MediaFoundation.VideoProcessor.GetVideoProcessorCaps(System.Guid,SharpDX.MediaFoundation.DirectX.VideoProcessorCaps@)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFVideoProcessor::GetProcAmpRange']/*\"/>\t\n            <msdn-id>bb970317</msdn-id>\t\n            <unmanaged>HRESULT IMFVideoProcessor::GetProcAmpRange([In] unsigned int dwProperty,[Out] DXVA2_ValueRange* pPropRange)</unmanaged>\t\n            <unmanaged-short>IMFVideoProcessor::GetProcAmpRange</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.VideoProcessor.GetProcAmpValues(System.Int32,SharpDX.MediaFoundation.DirectX.ProcAmpValues@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the current settings for one or more color adjustment (ProcAmp) settings.</p>\t\n            </summary>\t\n            <param name=\"dwFlags\"><dd> <p>Bitwise <strong>OR</strong> of one or more flags, specifying which operations to query. For a list of flags, see ProcAmp Settings.</p> </dd></param>\t\n            <param name=\"values\"><dd> <p>Pointer to a <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.ProcAmpValues\"/></strong> structure. The method fills the structure with the current value of each operation specified in <em>dwFlags</em>.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.TransformTypeNotSet\"/></strong></dt> </dl> </td><td> <p>The media type for the reference stream is not set.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>Before calling this method, you must set the media type for the reference stream.</p><p>Until the mixer's video processor mode is set, the returned values are all zero. After the processor mode is set, the returned values reflect the current mode. To select a video processor mode, call <strong><see cref=\"M:SharpDX.MediaFoundation.VideoProcessor.SetVideoProcessorMode(System.Guid)\"/></strong>. Otherwise, the EVR automatically selects a mode when streaming begins.</p><p>To find out which ProcAmp settings the driver supports, call <strong><see cref=\"M:SharpDX.MediaFoundation.VideoProcessor.GetVideoProcessorCaps(System.Guid,SharpDX.MediaFoundation.DirectX.VideoProcessorCaps@)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFVideoProcessor::GetProcAmpValues']/*\"/>\t\n            <msdn-id>bb970527</msdn-id>\t\n            <unmanaged>HRESULT IMFVideoProcessor::GetProcAmpValues([In] unsigned int dwFlags,[Out] DXVA2_ProcAmpValues* Values)</unmanaged>\t\n            <unmanaged-short>IMFVideoProcessor::GetProcAmpValues</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.VideoProcessor.SetProcAmpValues(System.Int32,SharpDX.MediaFoundation.DirectX.ProcAmpValues@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Sets one or more color adjustment (ProcAmp) settings.</p>\t\n            </summary>\t\n            <param name=\"dwFlags\"><dd> <p>Bitwise <strong>OR</strong> of one or more flags, specifying which ProcAmp values to set. For a list of flags, see ProcAmp Settings.</p> </dd></param>\t\n            <param name=\"valuesRef\"><dd> <p>Pointer to a <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.ProcAmpValues\"/></strong> structure. For each flag that you set in <em>dwFlags</em>, set the corresponding structure member to the desired value. To get the valid range of values for each operation, call <strong><see cref=\"M:SharpDX.MediaFoundation.VideoProcessor.GetProcAmpRange(System.Int32,SharpDX.MediaFoundation.DirectX.ValueRange@)\"/></strong>. The method ignores any structure members for which the corresponding flag is not set in <em>dwFlags</em>.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong>E_INVALIDARG</strong></dt> </dl> </td><td> <p>The <em>dwFlags</em> parameter is invalid, or one or more values in <em>pValues</em> is not within the correct range.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.TransformTypeNotSet\"/></strong></dt> </dl> </td><td> <p>The media type for the reference stream is not set.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>Before calling this method, set the video processor mode. To select a video processor mode, call <strong><see cref=\"M:SharpDX.MediaFoundation.VideoProcessor.SetVideoProcessorMode(System.Guid)\"/></strong>. Otherwise, the EVR automatically selects a mode when streaming begins.</p><p>To find out which ProcAmp settings the driver supports, call <strong><see cref=\"M:SharpDX.MediaFoundation.VideoProcessor.GetVideoProcessorCaps(System.Guid,SharpDX.MediaFoundation.DirectX.VideoProcessorCaps@)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFVideoProcessor::SetProcAmpValues']/*\"/>\t\n            <msdn-id>bb970441</msdn-id>\t\n            <unmanaged>HRESULT IMFVideoProcessor::SetProcAmpValues([In] unsigned int dwFlags,[In] DXVA2_ProcAmpValues* pValues)</unmanaged>\t\n            <unmanaged-short>IMFVideoProcessor::SetProcAmpValues</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.VideoProcessor.GetFilteringRange(System.Int32,SharpDX.MediaFoundation.DirectX.ValueRange@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the range of values for a specified image filter setting.</p>\t\n            </summary>\t\n            <param name=\"dwProperty\"><dd> <p>The image filtering parameter to query. For a list of possible values, see DXVA Image Filter Settings.</p> </dd></param>\t\n            <param name=\"propRangeRef\"><dd> <p>Pointer to a <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.ValueRange\"/></strong> structure that receives range of values for the specified image filtering parameter.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong>DDERR_UNSUPPORTED</strong></dt> </dl> </td><td> <p>The driver does not support this filter setting.</p> </td></tr> <tr><td> <dl> <dt><strong>E_INVALIDARG</strong></dt> </dl> </td><td> <p>Invalid value for <em>dwProperty</em>.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidRequest\"/></strong></dt> </dl> </td><td> <p>No video processor mode has been set.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.NotAvailable\"/></strong></dt> </dl> </td><td> <p>The specified operation is not available.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.TransformTypeNotSet\"/></strong></dt> </dl> </td><td> <p>The media type for the reference stream is not set.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>This method returns the range of values that the current video processor mode supports for the specified image filter setting.</p><p>This method fails if the video processor mode has not been set on the mixer. To select a video processor mode, call <strong><see cref=\"M:SharpDX.MediaFoundation.VideoProcessor.SetVideoProcessorMode(System.Guid)\"/></strong>. Otherwise, the EVR automatically selects a mode when streaming begins.</p><p>To find out which image filters the driver supports, call <strong><see cref=\"M:SharpDX.MediaFoundation.VideoProcessor.GetVideoProcessorCaps(System.Guid,SharpDX.MediaFoundation.DirectX.VideoProcessorCaps@)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFVideoProcessor::GetFilteringRange']/*\"/>\t\n            <msdn-id>bb970350</msdn-id>\t\n            <unmanaged>HRESULT IMFVideoProcessor::GetFilteringRange([In] unsigned int dwProperty,[Out] DXVA2_ValueRange* pPropRange)</unmanaged>\t\n            <unmanaged-short>IMFVideoProcessor::GetFilteringRange</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.VideoProcessor.GetFilteringValue(System.Int32,SharpDX.MediaFoundation.DirectX.Fixed32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the current setting for an image filter.</p>\t\n            </summary>\t\n            <param name=\"dwProperty\"><dd> <p>The filter setting to query. For a list of possible values, see DXVA Image Filter Settings.</p> </dd></param>\t\n            <param name=\"valueRef\"><dd> <p>Pointer to a <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.Fixed32\"/></strong> structure that receives the current value.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong>E_INVALIDARG</strong></dt> </dl> </td><td> <p>The value of <em>dwProperty</em> is invalid.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.TransformTypeNotSet\"/></strong></dt> </dl> </td><td> <p>The media type for the reference stream is not set.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>Before calling this method, you must set the media type for the reference stream.</p><p>Until the mixer's video processor mode is set, the returned values are all zero. After the processor mode is set, the returned values reflect the current mode. To select a video processor mode, call <strong><see cref=\"M:SharpDX.MediaFoundation.VideoProcessor.SetVideoProcessorMode(System.Guid)\"/></strong>. Otherwise, the EVR automatically selects a mode when streaming begins.</p><p>To find out which image filters the driver supports, call <strong><see cref=\"M:SharpDX.MediaFoundation.VideoProcessor.GetVideoProcessorCaps(System.Guid,SharpDX.MediaFoundation.DirectX.VideoProcessorCaps@)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFVideoProcessor::GetFilteringValue']/*\"/>\t\n            <msdn-id>bb970348</msdn-id>\t\n            <unmanaged>HRESULT IMFVideoProcessor::GetFilteringValue([In] unsigned int dwProperty,[Out] DXVA2_Fixed32* pValue)</unmanaged>\t\n            <unmanaged-short>IMFVideoProcessor::GetFilteringValue</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.VideoProcessor.SetFilteringValue(System.Int32,SharpDX.MediaFoundation.DirectX.Fixed32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Sets a parameter for an image filter.</p>\t\n            </summary>\t\n            <param name=\"dwProperty\"><dd> <p>The image filtering parameter to set. For a list of possible values, see DXVA Image Filter Settings.</p> </dd></param>\t\n            <param name=\"valueRef\"><dd> <p>Pointer to a <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.Fixed32\"/></strong> structure that specifies the new value. To get the valid range of values for each parameter, call <strong><see cref=\"M:SharpDX.MediaFoundation.VideoProcessor.GetFilteringRange(System.Int32,SharpDX.MediaFoundation.DirectX.ValueRange@)\"/></strong>.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong>E_INVALIDARG</strong></dt> </dl> </td><td> <p>The value of <em>dwProperty</em> is invalid.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.TransformTypeNotSet\"/></strong></dt> </dl> </td><td> <p>The media type for the reference stream is not set.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>Before calling this method, set the video processor mode. To select a video processor mode, call <strong><see cref=\"M:SharpDX.MediaFoundation.VideoProcessor.SetVideoProcessorMode(System.Guid)\"/></strong>. Otherwise, the EVR automatically selects a mode when streaming begins.</p><p>To find out which image filters the driver supports, call <strong><see cref=\"M:SharpDX.MediaFoundation.VideoProcessor.GetVideoProcessorCaps(System.Guid,SharpDX.MediaFoundation.DirectX.VideoProcessorCaps@)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFVideoProcessor::SetFilteringValue']/*\"/>\t\n            <msdn-id>bb970520</msdn-id>\t\n            <unmanaged>HRESULT IMFVideoProcessor::SetFilteringValue([In] unsigned int dwProperty,[In] DXVA2_Fixed32* pValue)</unmanaged>\t\n            <unmanaged-short>IMFVideoProcessor::SetFilteringValue</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.VideoProcessor.GetBackgroundColor(SharpDX.Color4@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the background color for the composition rectangle. The background color is used for letterboxing the video image.</p>\t\n            </summary>\t\n            <param name=\"lpClrBkg\"><dd> <p>Pointer to a <strong><see cref=\"T:SharpDX.Color4\"/></strong> value that receives the background color.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFVideoProcessor::GetBackgroundColor']/*\"/>\t\n            <msdn-id>bb970532</msdn-id>\t\n            <unmanaged>HRESULT IMFVideoProcessor::GetBackgroundColor([Out] COLORREF* lpClrBkg)</unmanaged>\t\n            <unmanaged-short>IMFVideoProcessor::GetBackgroundColor</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.VideoProcessor.SetBackgroundColor(SharpDX.Color4)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Sets the background color for the composition rectangle. The background color is used for letterboxing the video image.</p>\t\n            </summary>\t\n            <param name=\"clrBkg\"><dd> <p>Background color, specified as a <strong><see cref=\"T:SharpDX.Color4\"/></strong> value. Use the <strong>RGB</strong> macro to create this value.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFVideoProcessor::SetBackgroundColor']/*\"/>\t\n            <msdn-id>bb970577</msdn-id>\t\n            <unmanaged>HRESULT IMFVideoProcessor::SetBackgroundColor([In] COLORREF ClrBkg)</unmanaged>\t\n            <unmanaged-short>IMFVideoProcessor::SetBackgroundColor</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.VideoProcessor.VideoProcessorMode\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the application's preferred video processor mode. To set the preferred mode, call <strong><see cref=\"M:SharpDX.MediaFoundation.VideoProcessor.SetVideoProcessorMode(System.Guid)\"/></strong>.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFVideoProcessor::GetVideoProcessorMode']/*\"/>\t\n            <msdn-id>bb970545</msdn-id>\t\n            <unmanaged>GetVideoProcessorMode / SetVideoProcessorMode</unmanaged>\t\n            <unmanaged-short>GetVideoProcessorMode</unmanaged-short>\t\n            <unmanaged>HRESULT IMFVideoProcessor::GetVideoProcessorMode([Out] GUID* lpMode)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.VideoProcessor.BackgroundColor\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the background color for the composition rectangle. The background color is used for letterboxing the video image.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFVideoProcessor::GetBackgroundColor']/*\"/>\t\n            <msdn-id>bb970532</msdn-id>\t\n            <unmanaged>GetBackgroundColor / SetBackgroundColor</unmanaged>\t\n            <unmanaged-short>GetBackgroundColor</unmanaged-short>\t\n            <unmanaged>HRESULT IMFVideoProcessor::GetBackgroundColor([Out] COLORREF* lpClrBkg)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.VideoRenderer\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Sets a new mixer or presenter for the Enhanced Video Renderer (EVR).</p><p>Both the EVR media sink and the DirectShow EVR filter implement this interface. To get a reference to the interface, call <strong>QueryInterface</strong> on the media sink or the filter. Do not use <strong><see cref=\"T:SharpDX.MediaFoundation.ServiceProvider\"/></strong> to get a reference to this interface.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The EVR activation object returned by the <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.CreateVideoRendererActivate(System.IntPtr,SharpDX.MediaFoundation.Activate@)\"/></strong> function does not expose this interface. Instead, the activation object supports attributes that specify a custom mixer or presenter. For more information, see Enhanced Video Renderer Attributes.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFVideoRenderer']/*\"/>\t\n            <msdn-id>ms698954</msdn-id>\t\n            <unmanaged>IMFVideoRenderer</unmanaged>\t\n            <unmanaged-short>IMFVideoRenderer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.VideoRenderer.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.VideoRenderer\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.VideoRenderer.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.VideoRenderer\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.VideoRenderer\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.VideoRenderer.InitializeRenderer(SharpDX.MediaFoundation.Transform,SharpDX.MediaFoundation.VideoPresenter)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Sets a new mixer or presenter for the enhanced video renderer (EVR).</p>\t\n            </summary>\t\n            <param name=\"videoMixerRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.Transform\"/></strong> interface of the mixer to use. This parameter can be <strong><c>null</c></strong>. If this parameter is <strong><c>null</c></strong>, the EVR uses its default mixer.</p> </dd></param>\t\n            <param name=\"videoPresenterRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.VideoPresenter\"/></strong> interface of the presenter to use. This parameter can be <strong><c>null</c></strong>. If this parameter is <strong><c>null</c></strong>, the EVR uses its default presenter.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong>E_INVALIDARG</strong></dt> </dl> </td><td> <p>Either the mixer or the presenter is invalid.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidRequest\"/></strong></dt> </dl> </td><td> <p>The mixer and presenter cannot be replaced in the current state. (EVR media sink.)</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.Shutdown\"/></strong></dt> </dl> </td><td> <p>The video renderer has been shut down.</p> </td></tr> <tr><td> <dl> <dt><strong>VFW_E_WRONG_STATE</strong></dt> </dl> </td><td> <p>One or more input pins are connected. (DirectShow EVR filter.)</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>Call this method directly after creating the EVR, before you do any of the following:</p><ul> <li> <p>Call <strong><see cref=\"M:SharpDX.MediaFoundation.ServiceProvider.GetService(System.Guid,System.Guid,System.IntPtr@)\"/></strong> on the EVR.</p> </li> <li> <p>Call <strong><see cref=\"M:SharpDX.MediaFoundation.FilterConfig.SetNumberOfStreams(System.Int32)\"/></strong> on the EVR.</p> </li> <li> <p>Connect any pins on the EVR filter, or set any media types on EVR media sink.</p> </li> </ul><p>The EVR filter returns VFW_E_WRONG_STATE if any of the filter's pins are connected. The EVR media sink returns <see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidRequest\"/> if a media type is set on any of the streams, or the presentation clock is running or paused.</p><p>The device identifiers for the mixer and the presenter must match. The <strong><see cref=\"M:SharpDX.MediaFoundation.VideoDeviceID.GetDeviceID(System.Guid@)\"/></strong> method returns the device identifier. If they do not match, the method returns E_INVALIDARG.</p><p>If the video renderer is in the protected media path (PMP), the mixer and presenter objects must be certified safe components and pass any trust authority verification that is being enforced. Otherwise, this method will fail.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFVideoRenderer::InitializeRenderer']/*\"/>\t\n            <msdn-id>ms704667</msdn-id>\t\n            <unmanaged>HRESULT IMFVideoRenderer::InitializeRenderer([In, Optional] IMFTransform* pVideoMixer,[In, Optional] IMFVideoPresenter* pVideoPresenter)</unmanaged>\t\n            <unmanaged-short>IMFVideoRenderer::InitializeRenderer</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.VideoSampleAllocator\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Allocates video samples for a video media sink.</p><p>The stream sinks on the enhanced video renderer (EVR) expose this interface as a service. To obtain a reference to the interface, call <strong><see cref=\"M:SharpDX.MediaFoundation.ServiceProvider.GetService(System.Guid,System.Guid,System.IntPtr@)\"/></strong> using the service identifier MR_VIDEO_ACCELERATION_SERVICE. Custom media sinks can also implement this interface. The Media Session uses this interface to allocate samples for the EVR, unless the upstream decoder supports DirectX Video Acceleration (DXVA).</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFVideoSampleAllocator']/*\"/>\t\n            <msdn-id>aa473823</msdn-id>\t\n            <unmanaged>IMFVideoSampleAllocator</unmanaged>\t\n            <unmanaged-short>IMFVideoSampleAllocator</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.VideoSampleAllocator.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.VideoSampleAllocator\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.VideoSampleAllocator.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.VideoSampleAllocator\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.VideoSampleAllocator\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.VideoSampleAllocator.SetDirectXManager(SharpDX.ComObject)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Specifies the Direct3D device manager for the video media sink to use.</p>\t\n            </summary>\t\n            <param name=\"managerRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interface of the Direct3D device manager. The media sink queries this reference for the <strong><see cref=\"T:SharpDX.MediaFoundation.DirectX.IDirect3DDeviceManager9\"/></strong> interface.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>The media sink uses the Direct3D device manager to obtain a reference to the Direct3D device, which it uses to allocate Direct3D surfaces. The device manager enables multiple objects in the pipeline (such as a video renderer and a video decoder) to share the same Direct3D device.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFVideoSampleAllocator::SetDirectXManager']/*\"/>\t\n            <msdn-id>aa473819</msdn-id>\t\n            <unmanaged>HRESULT IMFVideoSampleAllocator::SetDirectXManager([In] IUnknown* pManager)</unmanaged>\t\n            <unmanaged-short>IMFVideoSampleAllocator::SetDirectXManager</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.VideoSampleAllocator.UninitializeSampleAllocator\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Releases all of the video samples that have been allocated.</p>\t\n            </summary>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFVideoSampleAllocator::UninitializeSampleAllocator']/*\"/>\t\n            <msdn-id>aa473807</msdn-id>\t\n            <unmanaged>HRESULT IMFVideoSampleAllocator::UninitializeSampleAllocator()</unmanaged>\t\n            <unmanaged-short>IMFVideoSampleAllocator::UninitializeSampleAllocator</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.VideoSampleAllocator.InitializeSampleAllocator(System.Int32,SharpDX.MediaFoundation.MediaType)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Specifies the number of samples to allocate and the media type for the samples. </p>\t\n            </summary>\t\n            <param name=\"cRequestedFrames\"><dd> <p> Number of samples to allocate.\t\t </p> </dd></param>\t\n            <param name=\"mediaTypeRef\"><dd> <p> Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaType\"/></strong> interface of a media type that describes the video format. </p> </dd></param>\t\n            <returns><p> The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table. </p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p> The method succeeded. </p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.InvalidMediaType\"/></strong></dt> </dl> </td><td> <p>Invalid media type.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFVideoSampleAllocator::InitializeSampleAllocator']/*\"/>\t\n            <msdn-id>bb970496</msdn-id>\t\n            <unmanaged>HRESULT IMFVideoSampleAllocator::InitializeSampleAllocator([In] unsigned int cRequestedFrames,[In] IMFMediaType* pMediaType)</unmanaged>\t\n            <unmanaged-short>IMFVideoSampleAllocator::InitializeSampleAllocator</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.VideoSampleAllocator.AllocateSample(SharpDX.MediaFoundation.Sample@)\">\n            <summary>\t\n            <p>Retrieves a video sample.</p>  <see cref=\"T:SharpDX.Result\"/> AllocateSample( <see cref=\"T:SharpDX.MediaFoundation.Sample\"/>** ppSample\t\n            );<p></p>Parameters <p> ppSample </p> <p>[out]  Receives a reference to the <see cref=\"T:SharpDX.MediaFoundation.Sample\"/> Interface. The caller must release the interface.</p>  <p>The method returns an <see cref=\"T:SharpDX.Result\"/>. Possible values include, but are not limited to, those in the following table.</p> <table><tr> <th> Return code </th> <th> Description </th> </tr><tr> <td> <p><see cref=\"F:SharpDX.Result.Ok\"/></p> </td> <td> <p>The method succeeded.</p> </td> </tr><tr> <td> <p><see cref=\"F:SharpDX.MediaFoundation.ResultCode.SampleallocatorEmpty\"/></p> </td> <td> <p>No samples are available.</p> </td> </tr></table>  <p> Client: Requires Windows Vista.</p> <p> Header: Include mfidl.h.</p> <p> Library: Use mfuuid.lib.</p> ReferenceIMFVideoSampleAllocator Interface\t\n            </summary>\t\n            <param name=\"sampleOut\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFVideoSampleAllocator::AllocateSample']/*\"/>\t\n            <msdn-id>aa473828</msdn-id>\t\n            <unmanaged>HRESULT IMFVideoSampleAllocator::AllocateSample([In] IMFSample** ppSample)</unmanaged>\t\n            <unmanaged-short>IMFVideoSampleAllocator::AllocateSample</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.VideoSampleAllocator.DirectXManager\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Specifies the Direct3D device manager for the video media sink to use.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The media sink uses the Direct3D device manager to obtain a reference to the Direct3D device, which it uses to allocate Direct3D surfaces. The device manager enables multiple objects in the pipeline (such as a video renderer and a video decoder) to share the same Direct3D device.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFVideoSampleAllocator::SetDirectXManager']/*\"/>\t\n            <msdn-id>aa473819</msdn-id>\t\n            <unmanaged>SetDirectXManager</unmanaged>\t\n            <unmanaged-short>SetDirectXManager</unmanaged-short>\t\n            <unmanaged>HRESULT IMFVideoSampleAllocator::SetDirectXManager([In] IUnknown* pManager)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.VideoSampleAllocatorCallback\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Sets the callback object that receives notification whenever a video sample is returned to the allocator.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>To get a video sample from the allocator, call the <strong><see cref=\"M:SharpDX.MediaFoundation.VideoSampleAllocator.AllocateSample(SharpDX.MediaFoundation.Sample@)\"/></strong> method. When the sample is released, it returns to the pool of available samples. When this happens, the allocator invokes the <strong><see cref=\"M:SharpDX.MediaFoundation.VideoSampleAllocatorNotify.NotifyRelease\"/></strong> callback.</p><p>The allocator holds at most one callback reference. Calling this method again replaces the previous callback reference.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFVideoSampleAllocatorCallback']/*\"/>\t\n            <msdn-id>dd374904</msdn-id>\t\n            <unmanaged>IMFVideoSampleAllocatorCallback</unmanaged>\t\n            <unmanaged-short>IMFVideoSampleAllocatorCallback</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.VideoSampleAllocatorCallback.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.VideoSampleAllocatorCallback\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.VideoSampleAllocatorCallback.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.VideoSampleAllocatorCallback\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.VideoSampleAllocatorCallback\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.VideoSampleAllocatorCallback.SetCallback(SharpDX.MediaFoundation.VideoSampleAllocatorNotify)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Sets the callback object that receives notification whenever a video sample is returned to the allocator.</p>\t\n            </summary>\t\n            <param name=\"notifyRef\"><dd> <p>A reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.VideoSampleAllocatorNotify\"/></strong> interface that receives notification, or <strong><c>null</c></strong> to remove the callback.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>To get a video sample from the allocator, call the <strong><see cref=\"M:SharpDX.MediaFoundation.VideoSampleAllocator.AllocateSample(SharpDX.MediaFoundation.Sample@)\"/></strong> method. When the sample is released, it returns to the pool of available samples. When this happens, the allocator invokes the <strong><see cref=\"M:SharpDX.MediaFoundation.VideoSampleAllocatorNotify.NotifyRelease\"/></strong> callback.</p><p>The allocator holds at most one callback reference. Calling this method again replaces the previous callback reference.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFVideoSampleAllocatorCallback::SetCallback']/*\"/>\t\n            <msdn-id>dd374904</msdn-id>\t\n            <unmanaged>HRESULT IMFVideoSampleAllocatorCallback::SetCallback([In] IMFVideoSampleAllocatorNotify* pNotify)</unmanaged>\t\n            <unmanaged-short>IMFVideoSampleAllocatorCallback::SetCallback</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.VideoSampleAllocatorCallback.GetFreeSampleCount(System.Int32)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Gets the number of video samples that are currently available for use.</p>\t\n            </summary>\t\n            <param name=\"lSamplesRef\"><dd> <p>Receives the number of available samples.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>To get a video sample from the allocator, call the <strong><see cref=\"M:SharpDX.MediaFoundation.VideoSampleAllocator.AllocateSample(SharpDX.MediaFoundation.Sample@)\"/></strong> method. The <strong>AllocateSample</strong> method removes a sample from the sample pool and returns it to the caller. When a sample is released, it returns to the pool. The <strong>GetFreeSampleCount</strong> method returns the count of samples that remain in the sample pool.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFVideoSampleAllocatorCallback::GetFreeSampleCount']/*\"/>\t\n            <msdn-id>dd374902</msdn-id>\t\n            <unmanaged>HRESULT IMFVideoSampleAllocatorCallback::GetFreeSampleCount([In] int* plSamples)</unmanaged>\t\n            <unmanaged-short>IMFVideoSampleAllocatorCallback::GetFreeSampleCount</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.VideoSampleAllocatorCallback.Callback\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Sets the callback object that receives notification whenever a video sample is returned to the allocator.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>To get a video sample from the allocator, call the <strong><see cref=\"M:SharpDX.MediaFoundation.VideoSampleAllocator.AllocateSample(SharpDX.MediaFoundation.Sample@)\"/></strong> method. When the sample is released, it returns to the pool of available samples. When this happens, the allocator invokes the <strong><see cref=\"M:SharpDX.MediaFoundation.VideoSampleAllocatorNotify.NotifyRelease\"/></strong> callback.</p><p>The allocator holds at most one callback reference. Calling this method again replaces the previous callback reference.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFVideoSampleAllocatorCallback::SetCallback']/*\"/>\t\n            <msdn-id>dd374904</msdn-id>\t\n            <unmanaged>SetCallback</unmanaged>\t\n            <unmanaged-short>SetCallback</unmanaged-short>\t\n            <unmanaged>HRESULT IMFVideoSampleAllocatorCallback::SetCallback([In] IMFVideoSampleAllocatorNotify* pNotify)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.VideoSampleAllocatorNotify\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>The callback for the <strong><see cref=\"T:SharpDX.MediaFoundation.VideoSampleAllocatorCallback\"/></strong> interface.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFVideoSampleAllocatorNotify']/*\"/>\t\n            <msdn-id>dd374906</msdn-id>\t\n            <unmanaged>IMFVideoSampleAllocatorNotify</unmanaged>\t\n            <unmanaged-short>IMFVideoSampleAllocatorNotify</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.VideoSampleAllocatorNotify.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.VideoSampleAllocatorNotify\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.VideoSampleAllocatorNotify.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.VideoSampleAllocatorNotify\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.VideoSampleAllocatorNotify\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.VideoSampleAllocatorNotify.NotifyRelease\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Called when a video sample is returned to the allocator.</p>\t\n            </summary>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>To get a video sample from the allocator, call the <strong><see cref=\"M:SharpDX.MediaFoundation.VideoSampleAllocator.AllocateSample(SharpDX.MediaFoundation.Sample@)\"/></strong> method. When the sample is released and then returned to the pool of available samples, the allocator invokes the <strong>NotifyRelease</strong> method.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFVideoSampleAllocatorNotify::NotifyRelease']/*\"/>\t\n            <msdn-id>dd374908</msdn-id>\t\n            <unmanaged>HRESULT IMFVideoSampleAllocatorNotify::NotifyRelease()</unmanaged>\t\n            <unmanaged-short>IMFVideoSampleAllocatorNotify::NotifyRelease</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.VideoStreamControl\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>This interface is not supported.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IEVRVideoStreamControl']/*\"/>\t\n            <msdn-id>ms704789</msdn-id>\t\n            <unmanaged>IEVRVideoStreamControl</unmanaged>\t\n            <unmanaged-short>IEVRVideoStreamControl</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.VideoStreamControl.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.VideoStreamControl\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.VideoStreamControl.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.VideoStreamControl\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.VideoStreamControl\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.VideoStreamControl.SetStreamActiveState(SharpDX.Bool)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p><strong>Note</strong>??This method is not supported.</p>\t\n            </summary>\t\n            <param name=\"fActive\"><dd></dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IEVRVideoStreamControl::SetStreamActiveState']/*\"/>\t\n            <msdn-id>ms700170</msdn-id>\t\n            <unmanaged>HRESULT IEVRVideoStreamControl::SetStreamActiveState([In] BOOL fActive)</unmanaged>\t\n            <unmanaged-short>IEVRVideoStreamControl::SetStreamActiveState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.VideoStreamControl.GetStreamActiveState(SharpDX.Bool@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p><strong>Note</strong>??This method is not supported.</p>\t\n            </summary>\t\n            <param name=\"lpfActive\"><dd></dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IEVRVideoStreamControl::GetStreamActiveState']/*\"/>\t\n            <msdn-id>ms703876</msdn-id>\t\n            <unmanaged>HRESULT IEVRVideoStreamControl::GetStreamActiveState([Out] BOOL* lpfActive)</unmanaged>\t\n            <unmanaged-short>IEVRVideoStreamControl::GetStreamActiveState</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.VideoStreamControl.StreamActiveState\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p><strong>Note</strong>??This method is not supported.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IEVRVideoStreamControl::GetStreamActiveState']/*\"/>\t\n            <msdn-id>ms703876</msdn-id>\t\n            <unmanaged>GetStreamActiveState / SetStreamActiveState</unmanaged>\t\n            <unmanaged-short>GetStreamActiveState</unmanaged-short>\t\n            <unmanaged>HRESULT IEVRVideoStreamControl::GetStreamActiveState([Out] BOOL* lpfActive)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.WorkQueueServices\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Registers the topology work queues with the Multimedia Class Scheduler Service (MMCSS).</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Each source node in the topology defines one branch of the topology. The branch includes every topology node that receives data from that node. An application can assign each branch of a topology its own work queue and then associate those work queues with MMCSS tasks. </p><p>To use this method, perform the following steps.</p><ol> <li>Create the topology.</li> <li>Set the following attributes on the source nodes in the topology.<ul> <li> <strong><see cref=\"F:SharpDX.MediaFoundation.TopologyNodeAttributeKeys.WorkqueueId\"/></strong>. Specifies an identifier for the work queue. The Media Session will allocate a new work queue.</li> <li> <strong><see cref=\"F:SharpDX.MediaFoundation.TopologyNodeAttributeKeys.WorkqueueMmcssClass\"/></strong>. Specifies the MMCSS class. </li> <li> <strong><see cref=\"F:SharpDX.MediaFoundation.TopologyNodeAttributeKeys.WorkqueueMmcssTaskid\"/></strong>. Specifies the MMCSS task identifier (optional). If this attribute is not set, MMCSS assigns a new task identifier. </li> </ul> </li> <li>Queue the topology by calling <strong><see cref=\"M:SharpDX.MediaFoundation.MediaSession.SetTopology(System.Int32,SharpDX.MediaFoundation.Topology)\"/></strong>.</li> <li>Wait for the <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.SessionTopologyStatus\"/> event with the <strong><see cref=\"F:SharpDX.MediaFoundation.Topostatus.Ready\"/></strong> status.</li> <li>Call <strong>BeginRegisterTopologyWorkQueuesWithMMCSS</strong>. This method registers all of the topology work queues with MMCSS.</li> </ol><p>The <strong>BeginRegisterTopologyWorkQueuesWithMMCSS</strong> method is asynchronous. When the operation completes, the callback object's <strong><see cref=\"M:SharpDX.MediaFoundation.AsyncCallback.Invoke(SharpDX.MediaFoundation.AsyncResult)\"/></strong> method is called. Within the callback method, call <strong><see cref=\"M:SharpDX.MediaFoundation.WorkQueueServices.EndRegisterTopologyWorkQueuesWithMMCSS(SharpDX.MediaFoundation.AsyncResult)\"/></strong> to complete the asynchronous request. After this operation completes, the Media Session automatically registers the work queues for every new topology that is queued on the Media Session. The application does not need to call the method again for new topologies.</p><p>To unregister the topology work queues from MMCSS, call <strong><see cref=\"M:SharpDX.MediaFoundation.WorkQueueServices.BeginUnregisterTopologyWorkQueuesWithMMCSS(SharpDX.MediaFoundation.AsyncCallback,SharpDX.ComObject)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFWorkQueueServices']/*\"/>\t\n            <msdn-id>ms697485</msdn-id>\t\n            <unmanaged>IMFWorkQueueServices</unmanaged>\t\n            <unmanaged-short>IMFWorkQueueServices</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.WorkQueueServices.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.WorkQueueServices\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.WorkQueueServices.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.WorkQueueServices\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.WorkQueueServices\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.WorkQueueServices.BeginRegisterTopologyWorkQueuesWithMMCSS(SharpDX.MediaFoundation.AsyncCallback,SharpDX.ComObject)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Registers the topology work queues with the Multimedia Class Scheduler Service (MMCSS).</p>\t\n            </summary>\t\n            <param name=\"callbackRef\"><dd> <p>A reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.AsyncCallback\"/></strong> interface of a callback object. The caller must implement this interface. </p> </dd></param>\t\n            <param name=\"stateRef\"><dd> <p>A reference to the <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interface of a state object defined by the caller. This parameter can be <strong><c>null</c></strong>. You can use this object to hold state information. The object is returned to the caller when the callback is invoked. </p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>Each source node in the topology defines one branch of the topology. The branch includes every topology node that receives data from that node. An application can assign each branch of a topology its own work queue and then associate those work queues with MMCSS tasks. </p><p>To use this method, perform the following steps.</p><ol> <li>Create the topology.</li> <li>Set the following attributes on the source nodes in the topology.<ul> <li> <strong><see cref=\"F:SharpDX.MediaFoundation.TopologyNodeAttributeKeys.WorkqueueId\"/></strong>. Specifies an identifier for the work queue. The Media Session will allocate a new work queue.</li> <li> <strong><see cref=\"F:SharpDX.MediaFoundation.TopologyNodeAttributeKeys.WorkqueueMmcssClass\"/></strong>. Specifies the MMCSS class. </li> <li> <strong><see cref=\"F:SharpDX.MediaFoundation.TopologyNodeAttributeKeys.WorkqueueMmcssTaskid\"/></strong>. Specifies the MMCSS task identifier (optional). If this attribute is not set, MMCSS assigns a new task identifier. </li> </ul> </li> <li>Queue the topology by calling <strong><see cref=\"M:SharpDX.MediaFoundation.MediaSession.SetTopology(System.Int32,SharpDX.MediaFoundation.Topology)\"/></strong>.</li> <li>Wait for the <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.SessionTopologyStatus\"/> event with the <strong><see cref=\"F:SharpDX.MediaFoundation.Topostatus.Ready\"/></strong> status.</li> <li>Call <strong>BeginRegisterTopologyWorkQueuesWithMMCSS</strong>. This method registers all of the topology work queues with MMCSS.</li> </ol><p>The <strong>BeginRegisterTopologyWorkQueuesWithMMCSS</strong> method is asynchronous. When the operation completes, the callback object's <strong><see cref=\"M:SharpDX.MediaFoundation.AsyncCallback.Invoke(SharpDX.MediaFoundation.AsyncResult)\"/></strong> method is called. Within the callback method, call <strong><see cref=\"M:SharpDX.MediaFoundation.WorkQueueServices.EndRegisterTopologyWorkQueuesWithMMCSS(SharpDX.MediaFoundation.AsyncResult)\"/></strong> to complete the asynchronous request. After this operation completes, the Media Session automatically registers the work queues for every new topology that is queued on the Media Session. The application does not need to call the method again for new topologies.</p><p>To unregister the topology work queues from MMCSS, call <strong><see cref=\"M:SharpDX.MediaFoundation.WorkQueueServices.BeginUnregisterTopologyWorkQueuesWithMMCSS(SharpDX.MediaFoundation.AsyncCallback,SharpDX.ComObject)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFWorkQueueServices::BeginRegisterTopologyWorkQueuesWithMMCSS']/*\"/>\t\n            <msdn-id>ms697485</msdn-id>\t\n            <unmanaged>HRESULT IMFWorkQueueServices::BeginRegisterTopologyWorkQueuesWithMMCSS([In] IMFAsyncCallback* pCallback,[In] IUnknown* pState)</unmanaged>\t\n            <unmanaged-short>IMFWorkQueueServices::BeginRegisterTopologyWorkQueuesWithMMCSS</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.WorkQueueServices.EndRegisterTopologyWorkQueuesWithMMCSS(SharpDX.MediaFoundation.AsyncResult)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Completes an asynchronous request to register the topology work queues with the Multimedia Class Scheduler Service (MMCSS).</p>\t\n            </summary>\t\n            <param name=\"resultRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.AsyncResult\"/></strong> interface. Pass in the same reference that your callback object received in the <strong><see cref=\"M:SharpDX.MediaFoundation.AsyncCallback.Invoke(SharpDX.MediaFoundation.AsyncResult)\"/></strong> method.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>Call this method when the <strong><see cref=\"M:SharpDX.MediaFoundation.WorkQueueServices.BeginRegisterTopologyWorkQueuesWithMMCSS(SharpDX.MediaFoundation.AsyncCallback,SharpDX.ComObject)\"/></strong> method completes asynchronously.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFWorkQueueServices::EndRegisterTopologyWorkQueuesWithMMCSS']/*\"/>\t\n            <msdn-id>ms696983</msdn-id>\t\n            <unmanaged>HRESULT IMFWorkQueueServices::EndRegisterTopologyWorkQueuesWithMMCSS([In] IMFAsyncResult* pResult)</unmanaged>\t\n            <unmanaged-short>IMFWorkQueueServices::EndRegisterTopologyWorkQueuesWithMMCSS</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.WorkQueueServices.BeginUnregisterTopologyWorkQueuesWithMMCSS(SharpDX.MediaFoundation.AsyncCallback,SharpDX.ComObject)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Unregisters the topology work queues from the Multimedia Class Scheduler Service (MMCSS).</p>\t\n            </summary>\t\n            <param name=\"callbackRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.AsyncCallback\"/></strong> interface of a callback object. The caller must implement this interface.</p> </dd></param>\t\n            <param name=\"stateRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interface of a state object, defined by the caller. This parameter can be <strong><c>null</c></strong>. You can use this object to hold state information. The object is returned to the caller when the callback is invoked.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>This method is asynchronous. When the operation completes, the callback object's <strong><see cref=\"M:SharpDX.MediaFoundation.AsyncCallback.Invoke(SharpDX.MediaFoundation.AsyncResult)\"/></strong> method is called. At that point, the application should call <strong><see cref=\"M:SharpDX.MediaFoundation.WorkQueueServices.EndUnregisterTopologyWorkQueuesWithMMCSS(SharpDX.MediaFoundation.AsyncResult)\"/></strong> to complete the asynchronous request.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFWorkQueueServices::BeginUnregisterTopologyWorkQueuesWithMMCSS']/*\"/>\t\n            <msdn-id>ms702139</msdn-id>\t\n            <unmanaged>HRESULT IMFWorkQueueServices::BeginUnregisterTopologyWorkQueuesWithMMCSS([In] IMFAsyncCallback* pCallback,[In] IUnknown* pState)</unmanaged>\t\n            <unmanaged-short>IMFWorkQueueServices::BeginUnregisterTopologyWorkQueuesWithMMCSS</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.WorkQueueServices.EndUnregisterTopologyWorkQueuesWithMMCSS(SharpDX.MediaFoundation.AsyncResult)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Completes an asynchronous request to unregister the topology work queues from the Multimedia Class Scheduler Service (MMCSS).</p>\t\n            </summary>\t\n            <param name=\"resultRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.AsyncResult\"/></strong> interface. Pass in the same reference that your callback object received in the <strong><see cref=\"M:SharpDX.MediaFoundation.AsyncCallback.Invoke(SharpDX.MediaFoundation.AsyncResult)\"/></strong> method.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>Call this method when the <strong><see cref=\"M:SharpDX.MediaFoundation.WorkQueueServices.BeginRegisterTopologyWorkQueuesWithMMCSS(SharpDX.MediaFoundation.AsyncCallback,SharpDX.ComObject)\"/></strong> method completes asynchronously.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFWorkQueueServices::EndUnregisterTopologyWorkQueuesWithMMCSS']/*\"/>\t\n            <msdn-id>ms698872</msdn-id>\t\n            <unmanaged>HRESULT IMFWorkQueueServices::EndUnregisterTopologyWorkQueuesWithMMCSS([In] IMFAsyncResult* pResult)</unmanaged>\t\n            <unmanaged-short>IMFWorkQueueServices::EndUnregisterTopologyWorkQueuesWithMMCSS</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.WorkQueueServices.GetTopologyWorkQueueMMCSSClass(System.Int32,System.IntPtr,System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the Multimedia Class Scheduler Service (MMCSS) class for a specified branch of the current topology.</p>\t\n            </summary>\t\n            <param name=\"dwTopologyWorkQueueId\"><dd> <p>Identifies the work queue assigned to this topology branch. The application defines this value by setting the <strong><see cref=\"F:SharpDX.MediaFoundation.TopologyNodeAttributeKeys.WorkqueueId\"/></strong> attribute on the source node for the branch.</p> </dd></param>\t\n            <param name=\"wszClassRef\"><dd> <p>Pointer to a buffer that receives the name of the MMCSS class. This parameter can be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"cchClassRef\"><dd> <p>On input, specifies the size of the <em>pwszClass</em> buffer, in characters. On output, receives the required size of the buffer, in characters. The size includes the terminating null character.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong>E_INVALIDARG</strong></dt> </dl> </td><td> <p>There is no work queue with the specified identifier.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.BufferTooSmall\"/></strong></dt> </dl> </td><td> <p>The <em>pwszClass</em> buffer is too small to receive the class name.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFWorkQueueServices::GetTopologyWorkQueueMMCSSClass']/*\"/>\t\n            <msdn-id>ms704762</msdn-id>\t\n            <unmanaged>HRESULT IMFWorkQueueServices::GetTopologyWorkQueueMMCSSClass([In] unsigned int dwTopologyWorkQueueId,[Out, Buffer] wchar_t* pwszClass,[InOut] unsigned int* pcchClass)</unmanaged>\t\n            <unmanaged-short>IMFWorkQueueServices::GetTopologyWorkQueueMMCSSClass</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.WorkQueueServices.GetTopologyWorkQueueMMCSSTaskId(System.Int32,System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the Multimedia Class Scheduler Service (MMCSS) task identifier for a specified branch of the current topology.</p>\t\n            </summary>\t\n            <param name=\"dwTopologyWorkQueueId\"><dd> <p>Identifies the work queue assigned to this topology branch. The application defines this value by setting the <strong><see cref=\"F:SharpDX.MediaFoundation.TopologyNodeAttributeKeys.WorkqueueId\"/></strong> attribute on the source node for the branch.</p> </dd></param>\t\n            <param name=\"dwTaskIdRef\"><dd> <p>Receives the task identifier.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFWorkQueueServices::GetTopologyWorkQueueMMCSSTaskId']/*\"/>\t\n            <msdn-id>ms694202</msdn-id>\t\n            <unmanaged>HRESULT IMFWorkQueueServices::GetTopologyWorkQueueMMCSSTaskId([In] unsigned int dwTopologyWorkQueueId,[Out] unsigned int* pdwTaskId)</unmanaged>\t\n            <unmanaged-short>IMFWorkQueueServices::GetTopologyWorkQueueMMCSSTaskId</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.WorkQueueServices.BeginRegisterPlatformWorkQueueWithMMCSS(System.Int32,System.String,System.Int32,SharpDX.MediaFoundation.AsyncCallback,SharpDX.ComObject)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Associates a platform work queue with a Multimedia Class Scheduler Service (MMCSS) task. </p>\t\n            </summary>\t\n            <param name=\"dwPlatformWorkQueue\"><dd> <p> The platform work queue to register with MMCSS. See Work Queue Identifiers. To register all of the standard work queues to the same MMCSS task, set this parameter to <strong>MFASYNC_CALLBACK_QUEUE_ALL</strong>.</p> </dd></param>\t\n            <param name=\"wszClass\"><dd> <p>The name of the MMCSS task to be performed. </p> </dd></param>\t\n            <param name=\"dwTaskId\"><dd> <p> The unique task identifier. To obtain a new task identifier, set this value to zero. </p> </dd></param>\t\n            <param name=\"callbackRef\"><dd> <p>A reference to the <strong><see cref=\"T:SharpDX.MediaFoundation.AsyncCallback\"/></strong> interface of a callback object. The caller must implement this interface. </p> </dd></param>\t\n            <param name=\"stateRef\"><dd> <p>A reference to the <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interface of a state object, defined by the caller. This parameter can be <strong><c>null</c></strong>. You can use this object to hold state information. The object is returned to the caller when the callback is invoked. </p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>This method is asynchronous. When the operation completes, the callback object's <strong><see cref=\"M:SharpDX.MediaFoundation.AsyncCallback.Invoke(SharpDX.MediaFoundation.AsyncResult)\"/></strong> method is called. At that point, the application should call <strong><see cref=\"M:SharpDX.MediaFoundation.WorkQueueServices.EndRegisterPlatformWorkQueueWithMMCSS(SharpDX.MediaFoundation.AsyncResult,System.Int32@)\"/></strong> to complete the asynchronous request.</p><p>To unregister the work queue from the MMCSS class, call <strong><see cref=\"M:SharpDX.MediaFoundation.WorkQueueServices.BeginUnregisterPlatformWorkQueueWithMMCSS(System.Int32,SharpDX.MediaFoundation.AsyncCallback,SharpDX.ComObject)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFWorkQueueServices::BeginRegisterPlatformWorkQueueWithMMCSS']/*\"/>\t\n            <msdn-id>ms702114</msdn-id>\t\n            <unmanaged>HRESULT IMFWorkQueueServices::BeginRegisterPlatformWorkQueueWithMMCSS([In] unsigned int dwPlatformWorkQueue,[In] const wchar_t* wszClass,[In] unsigned int dwTaskId,[In] IMFAsyncCallback* pCallback,[In] IUnknown* pState)</unmanaged>\t\n            <unmanaged-short>IMFWorkQueueServices::BeginRegisterPlatformWorkQueueWithMMCSS</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.WorkQueueServices.EndRegisterPlatformWorkQueueWithMMCSS(SharpDX.MediaFoundation.AsyncResult,System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Completes an asynchronous request to associate a platform work queue with a Multimedia Class Scheduler Service (MMCSS) task.</p>\t\n            </summary>\t\n            <param name=\"resultRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.AsyncResult\"/></strong> interface. Pass in the same reference that your callback object received in the <strong><see cref=\"M:SharpDX.MediaFoundation.AsyncCallback.Invoke(SharpDX.MediaFoundation.AsyncResult)\"/></strong> method.</p> </dd></param>\t\n            <param name=\"dwTaskIdRef\"><dd> <p>The unique task identifier.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>Call this function when the <strong><see cref=\"M:SharpDX.MediaFoundation.WorkQueueServices.BeginRegisterPlatformWorkQueueWithMMCSS(System.Int32,System.String,System.Int32,SharpDX.MediaFoundation.AsyncCallback,SharpDX.ComObject)\"/></strong> method completes asynchronously.</p><p>To unregister the work queue from the MMCSS class, call <strong><see cref=\"M:SharpDX.MediaFoundation.WorkQueueServices.BeginUnregisterPlatformWorkQueueWithMMCSS(System.Int32,SharpDX.MediaFoundation.AsyncCallback,SharpDX.ComObject)\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFWorkQueueServices::EndRegisterPlatformWorkQueueWithMMCSS']/*\"/>\t\n            <msdn-id>ms702284</msdn-id>\t\n            <unmanaged>HRESULT IMFWorkQueueServices::EndRegisterPlatformWorkQueueWithMMCSS([In] IMFAsyncResult* pResult,[Out] unsigned int* pdwTaskId)</unmanaged>\t\n            <unmanaged-short>IMFWorkQueueServices::EndRegisterPlatformWorkQueueWithMMCSS</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.WorkQueueServices.BeginUnregisterPlatformWorkQueueWithMMCSS(System.Int32,SharpDX.MediaFoundation.AsyncCallback,SharpDX.ComObject)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Unregisters a platform work queue from a Multimedia Class Scheduler Service (MMCSS) task.</p>\t\n            </summary>\t\n            <param name=\"dwPlatformWorkQueue\"><dd> <p>Platform work queue to register with MMCSS. See <strong><see cref=\"M:SharpDX.MediaFoundation.WorkQueueServices.BeginRegisterPlatformWorkQueueWithMMCSS(System.Int32,System.String,System.Int32,SharpDX.MediaFoundation.AsyncCallback,SharpDX.ComObject)\"/></strong>.</p> </dd></param>\t\n            <param name=\"callbackRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.AsyncCallback\"/></strong> interface of a callback object. The caller must implement this interface.</p> </dd></param>\t\n            <param name=\"stateRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interface of a state object, defined by the caller. This parameter can be <strong><c>null</c></strong>. You can use this object to hold state information. The object is returned to the caller when the callback is invoked.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>This method is asynchronous. When the operation completes, the callback object's <strong><see cref=\"M:SharpDX.MediaFoundation.AsyncCallback.Invoke(SharpDX.MediaFoundation.AsyncResult)\"/></strong> method is called. At that point, the application should call <strong><see cref=\"M:SharpDX.MediaFoundation.WorkQueueServices.EndUnregisterPlatformWorkQueueWithMMCSS(SharpDX.MediaFoundation.AsyncResult)\"/></strong> to complete the asynchronous request.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFWorkQueueServices::BeginUnregisterPlatformWorkQueueWithMMCSS']/*\"/>\t\n            <msdn-id>ms704603</msdn-id>\t\n            <unmanaged>HRESULT IMFWorkQueueServices::BeginUnregisterPlatformWorkQueueWithMMCSS([In] unsigned int dwPlatformWorkQueue,[In] IMFAsyncCallback* pCallback,[In] IUnknown* pState)</unmanaged>\t\n            <unmanaged-short>IMFWorkQueueServices::BeginUnregisterPlatformWorkQueueWithMMCSS</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.WorkQueueServices.EndUnregisterPlatformWorkQueueWithMMCSS(SharpDX.MediaFoundation.AsyncResult)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Completes an asynchronous request to unregister a platform work queue from a Multimedia Class Scheduler Service (MMCSS) task.</p>\t\n            </summary>\t\n            <param name=\"resultRef\"><dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.MediaFoundation.AsyncResult\"/></strong> interface. Pass in the same reference that your callback object received in the <strong><see cref=\"M:SharpDX.MediaFoundation.AsyncCallback.Invoke(SharpDX.MediaFoundation.AsyncResult)\"/></strong> method.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>Call this method when the <strong><see cref=\"M:SharpDX.MediaFoundation.WorkQueueServices.BeginUnregisterPlatformWorkQueueWithMMCSS(System.Int32,SharpDX.MediaFoundation.AsyncCallback,SharpDX.ComObject)\"/></strong> method completes asynchronously.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFWorkQueueServices::EndUnregisterPlatformWorkQueueWithMMCSS']/*\"/>\t\n            <msdn-id>ms704734</msdn-id>\t\n            <unmanaged>HRESULT IMFWorkQueueServices::EndUnregisterPlatformWorkQueueWithMMCSS([In] IMFAsyncResult* pResult)</unmanaged>\t\n            <unmanaged-short>IMFWorkQueueServices::EndUnregisterPlatformWorkQueueWithMMCSS</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.WorkQueueServices.GetPlaftormWorkQueueMMCSSClass(System.Int32,System.IntPtr,System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the Multimedia Class Scheduler Service (MMCSS) class for a specified platform work queue.</p>\t\n            </summary>\t\n            <param name=\"dwPlatformWorkQueueId\"><dd> <p>Platform work queue to query. See <strong><see cref=\"M:SharpDX.MediaFoundation.WorkQueueServices.BeginRegisterPlatformWorkQueueWithMMCSS(System.Int32,System.String,System.Int32,SharpDX.MediaFoundation.AsyncCallback,SharpDX.ComObject)\"/></strong>.</p> </dd></param>\t\n            <param name=\"wszClassRef\"><dd> <p>Pointer to a buffer that receives the name of the MMCSS class. This parameter can be <strong><c>null</c></strong>.</p> </dd></param>\t\n            <param name=\"cchClassRef\"><dd> <p>On input, specifies the size of the pwszClass buffer, in characters. On output, receives the required size of the buffer, in characters. The size includes the terminating null character.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.ResultCode.BufferTooSmall\"/></strong></dt> </dl> </td><td> <p>The <em>pwszClass</em> buffer is too small to receive the class name.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFWorkQueueServices::GetPlaftormWorkQueueMMCSSClass']/*\"/>\t\n            <msdn-id>ms705624</msdn-id>\t\n            <unmanaged>HRESULT IMFWorkQueueServices::GetPlaftormWorkQueueMMCSSClass([In] unsigned int dwPlatformWorkQueueId,[Out, Buffer] wchar_t* pwszClass,[InOut] unsigned int* pcchClass)</unmanaged>\t\n            <unmanaged-short>IMFWorkQueueServices::GetPlaftormWorkQueueMMCSSClass</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.WorkQueueServices.GetPlatformWorkQueueMMCSSTaskId(System.Int32,System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Retrieves the Multimedia Class Scheduler Service (MMCSS) task identifier for a specified platform work queue.</p>\t\n            </summary>\t\n            <param name=\"dwPlatformWorkQueueId\"><dd> <p>Platform work queue to query. See <strong><see cref=\"M:SharpDX.MediaFoundation.WorkQueueServices.BeginRegisterPlatformWorkQueueWithMMCSS(System.Int32,System.String,System.Int32,SharpDX.MediaFoundation.AsyncCallback,SharpDX.ComObject)\"/></strong>.</p> </dd></param>\t\n            <param name=\"dwTaskIdRef\"><dd> <p>Receives the task identifier.</p> </dd></param>\t\n            <returns><p>The method returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> </table><p>?</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IMFWorkQueueServices::GetPlatformWorkQueueMMCSSTaskId']/*\"/>\t\n            <msdn-id>ms700183</msdn-id>\t\n            <unmanaged>HRESULT IMFWorkQueueServices::GetPlatformWorkQueueMMCSSTaskId([In] unsigned int dwPlatformWorkQueueId,[Out] unsigned int* pdwTaskId)</unmanaged>\t\n            <unmanaged-short>IMFWorkQueueServices::GetPlatformWorkQueueMMCSSTaskId</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.OPM.AcpProtectionLevel\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Specifies the protection level for Analog Copy Protection (ACP).</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This enumeration is numerically equivalent to the <strong>COPP_ACP_Protection_Level</strong> enumeration used in Certified Output Protection Protocol. The <see cref=\"F:SharpDX.MediaFoundation.OPM.AcpProtectionLevel.Off\"/> flag corresponds to COPP_ACP_Level0.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_ACP_PROTECTION_LEVEL']/*\"/>\t\n            <msdn-id>dd388935</msdn-id>\t\n            <unmanaged>OPM_ACP_PROTECTION_LEVEL</unmanaged>\t\n            <unmanaged-short>OPM_ACP_PROTECTION_LEVEL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.AcpProtectionLevel.Off\">\n            <summary>\t\n            <dd> <p>ACP is disabled.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_ACP_OFF']/*\"/>\t\n            <msdn-id>dd388935</msdn-id>\t\n            <unmanaged>OPM_ACP_OFF</unmanaged>\t\n            <unmanaged-short>OPM_ACP_OFF</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.AcpProtectionLevel.LevelOne\">\n            <summary>\t\n            <dd> <p>ACP protection level 1.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_ACP_LEVEL_ONE']/*\"/>\t\n            <msdn-id>dd388935</msdn-id>\t\n            <unmanaged>OPM_ACP_LEVEL_ONE</unmanaged>\t\n            <unmanaged-short>OPM_ACP_LEVEL_ONE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.AcpProtectionLevel.LevelTwo\">\n            <summary>\t\n            <dd> <p>ACP protection level 2.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_ACP_LEVEL_TWO']/*\"/>\t\n            <msdn-id>dd388935</msdn-id>\t\n            <unmanaged>OPM_ACP_LEVEL_TWO</unmanaged>\t\n            <unmanaged-short>OPM_ACP_LEVEL_TWO</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.AcpProtectionLevel.LevelThree\">\n            <summary>\t\n            <dd> <p>ACP protection level 3.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_ACP_LEVEL_THREE']/*\"/>\t\n            <msdn-id>dd388935</msdn-id>\t\n            <unmanaged>OPM_ACP_LEVEL_THREE</unmanaged>\t\n            <unmanaged-short>OPM_ACP_LEVEL_THREE</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.OPM.BusType\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='__MIDL___MIDL_itf_opmapi_0000_0000_0006']/*\"/>\t\n            <unmanaged>__MIDL___MIDL_itf_opmapi_0000_0000_0006</unmanaged>\t\n            <unmanaged-short>__MIDL___MIDL_itf_opmapi_0000_0000_0006</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.BusType.Other\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_BUS_TYPE_OTHER']/*\"/>\t\n            <unmanaged>OPM_BUS_TYPE_OTHER</unmanaged>\t\n            <unmanaged-short>OPM_BUS_TYPE_OTHER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.BusType.Pci\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_BUS_TYPE_PCI']/*\"/>\t\n            <unmanaged>OPM_BUS_TYPE_PCI</unmanaged>\t\n            <unmanaged-short>OPM_BUS_TYPE_PCI</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.BusType.Pcix\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_BUS_TYPE_PCIX']/*\"/>\t\n            <unmanaged>OPM_BUS_TYPE_PCIX</unmanaged>\t\n            <unmanaged-short>OPM_BUS_TYPE_PCIX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.BusType.Pciexpress\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_BUS_TYPE_PCIEXPRESS']/*\"/>\t\n            <unmanaged>OPM_BUS_TYPE_PCIEXPRESS</unmanaged>\t\n            <unmanaged-short>OPM_BUS_TYPE_PCIEXPRESS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.BusType.Agp\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_BUS_TYPE_AGP']/*\"/>\t\n            <unmanaged>OPM_BUS_TYPE_AGP</unmanaged>\t\n            <unmanaged-short>OPM_BUS_TYPE_AGP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.BusType.ImplementationModifierInsideOfChipset\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_BUS_IMPLEMENTATION_MODIFIER_INSIDE_OF_CHIPSET']/*\"/>\t\n            <unmanaged>OPM_BUS_IMPLEMENTATION_MODIFIER_INSIDE_OF_CHIPSET</unmanaged>\t\n            <unmanaged-short>OPM_BUS_IMPLEMENTATION_MODIFIER_INSIDE_OF_CHIPSET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.BusType.ImplementationModifierTracksOnMotherBoardToChip\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_BUS_IMPLEMENTATION_MODIFIER_TRACKS_ON_MOTHER_BOARD_TO_CHIP']/*\"/>\t\n            <unmanaged>OPM_BUS_IMPLEMENTATION_MODIFIER_TRACKS_ON_MOTHER_BOARD_TO_CHIP</unmanaged>\t\n            <unmanaged-short>OPM_BUS_IMPLEMENTATION_MODIFIER_TRACKS_ON_MOTHER_BOARD_TO_CHIP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.BusType.ImplementationModifierTracksOnMotherBoardToSocket\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_BUS_IMPLEMENTATION_MODIFIER_TRACKS_ON_MOTHER_BOARD_TO_SOCKET']/*\"/>\t\n            <unmanaged>OPM_BUS_IMPLEMENTATION_MODIFIER_TRACKS_ON_MOTHER_BOARD_TO_SOCKET</unmanaged>\t\n            <unmanaged-short>OPM_BUS_IMPLEMENTATION_MODIFIER_TRACKS_ON_MOTHER_BOARD_TO_SOCKET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.BusType.ImplementationModifierDaughterBoardConnector\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_BUS_IMPLEMENTATION_MODIFIER_DAUGHTER_BOARD_CONNECTOR']/*\"/>\t\n            <unmanaged>OPM_BUS_IMPLEMENTATION_MODIFIER_DAUGHTER_BOARD_CONNECTOR</unmanaged>\t\n            <unmanaged-short>OPM_BUS_IMPLEMENTATION_MODIFIER_DAUGHTER_BOARD_CONNECTOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.BusType.ImplementationModifierDaughterBoardConnectorInsideOfNuae\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_BUS_IMPLEMENTATION_MODIFIER_DAUGHTER_BOARD_CONNECTOR_INSIDE_OF_NUAE']/*\"/>\t\n            <unmanaged>OPM_BUS_IMPLEMENTATION_MODIFIER_DAUGHTER_BOARD_CONNECTOR_INSIDE_OF_NUAE</unmanaged>\t\n            <unmanaged-short>OPM_BUS_IMPLEMENTATION_MODIFIER_DAUGHTER_BOARD_CONNECTOR_INSIDE_OF_NUAE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.BusType.ImplementationModifierNonStandard\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_BUS_IMPLEMENTATION_MODIFIER_NON_STANDARD']/*\"/>\t\n            <unmanaged>OPM_BUS_IMPLEMENTATION_MODIFIER_NON_STANDARD</unmanaged>\t\n            <unmanaged-short>OPM_BUS_IMPLEMENTATION_MODIFIER_NON_STANDARD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.BusType.CoppCompatibleBusTypeIntegrated\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_COPP_COMPATIBLE_BUS_TYPE_INTEGRATED']/*\"/>\t\n            <unmanaged>OPM_COPP_COMPATIBLE_BUS_TYPE_INTEGRATED</unmanaged>\t\n            <unmanaged-short>OPM_COPP_COMPATIBLE_BUS_TYPE_INTEGRATED</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.OPM.CGMSAType\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='__MIDL___MIDL_itf_opmapi_0000_0000_0007']/*\"/>\t\n            <unmanaged>__MIDL___MIDL_itf_opmapi_0000_0000_0007</unmanaged>\t\n            <unmanaged-short>__MIDL___MIDL_itf_opmapi_0000_0000_0007</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.CGMSAType.Off\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_CGMSA_OFF']/*\"/>\t\n            <unmanaged>OPM_CGMSA_OFF</unmanaged>\t\n            <unmanaged-short>OPM_CGMSA_OFF</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.CGMSAType.CopyFreely\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_CGMSA_COPY_FREELY']/*\"/>\t\n            <unmanaged>OPM_CGMSA_COPY_FREELY</unmanaged>\t\n            <unmanaged-short>OPM_CGMSA_COPY_FREELY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.CGMSAType.CopyNoMore\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_CGMSA_COPY_NO_MORE']/*\"/>\t\n            <unmanaged>OPM_CGMSA_COPY_NO_MORE</unmanaged>\t\n            <unmanaged-short>OPM_CGMSA_COPY_NO_MORE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.CGMSAType.CopyOneGeneration\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_CGMSA_COPY_ONE_GENERATION']/*\"/>\t\n            <unmanaged>OPM_CGMSA_COPY_ONE_GENERATION</unmanaged>\t\n            <unmanaged-short>OPM_CGMSA_COPY_ONE_GENERATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.CGMSAType.CopyNever\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_CGMSA_COPY_NEVER']/*\"/>\t\n            <unmanaged>OPM_CGMSA_COPY_NEVER</unmanaged>\t\n            <unmanaged-short>OPM_CGMSA_COPY_NEVER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.CGMSAType.RedistributionControlRequired\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_CGMSA_REDISTRIBUTION_CONTROL_REQUIRED']/*\"/>\t\n            <unmanaged>OPM_CGMSA_REDISTRIBUTION_CONTROL_REQUIRED</unmanaged>\t\n            <unmanaged-short>OPM_CGMSA_REDISTRIBUTION_CONTROL_REQUIRED</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.OPM.ConnectorType\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='__MIDL___MIDL_itf_opmapi_0000_0000_0004']/*\"/>\t\n            <unmanaged>__MIDL___MIDL_itf_opmapi_0000_0000_0004</unmanaged>\t\n            <unmanaged-short>__MIDL___MIDL_itf_opmapi_0000_0000_0004</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.ConnectorType.Other\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_CONNECTOR_TYPE_OTHER']/*\"/>\t\n            <unmanaged>OPM_CONNECTOR_TYPE_OTHER</unmanaged>\t\n            <unmanaged-short>OPM_CONNECTOR_TYPE_OTHER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.ConnectorType.Vga\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_CONNECTOR_TYPE_VGA']/*\"/>\t\n            <unmanaged>OPM_CONNECTOR_TYPE_VGA</unmanaged>\t\n            <unmanaged-short>OPM_CONNECTOR_TYPE_VGA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.ConnectorType.Svideo\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_CONNECTOR_TYPE_SVIDEO']/*\"/>\t\n            <unmanaged>OPM_CONNECTOR_TYPE_SVIDEO</unmanaged>\t\n            <unmanaged-short>OPM_CONNECTOR_TYPE_SVIDEO</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.ConnectorType.CompositeVideo\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_CONNECTOR_TYPE_COMPOSITE_VIDEO']/*\"/>\t\n            <unmanaged>OPM_CONNECTOR_TYPE_COMPOSITE_VIDEO</unmanaged>\t\n            <unmanaged-short>OPM_CONNECTOR_TYPE_COMPOSITE_VIDEO</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.ConnectorType.ComponentVideo\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_CONNECTOR_TYPE_COMPONENT_VIDEO']/*\"/>\t\n            <unmanaged>OPM_CONNECTOR_TYPE_COMPONENT_VIDEO</unmanaged>\t\n            <unmanaged-short>OPM_CONNECTOR_TYPE_COMPONENT_VIDEO</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.ConnectorType.Dvi\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_CONNECTOR_TYPE_DVI']/*\"/>\t\n            <unmanaged>OPM_CONNECTOR_TYPE_DVI</unmanaged>\t\n            <unmanaged-short>OPM_CONNECTOR_TYPE_DVI</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.ConnectorType.Hdmi\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_CONNECTOR_TYPE_HDMI']/*\"/>\t\n            <unmanaged>OPM_CONNECTOR_TYPE_HDMI</unmanaged>\t\n            <unmanaged-short>OPM_CONNECTOR_TYPE_HDMI</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.ConnectorType.Lvds\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_CONNECTOR_TYPE_LVDS']/*\"/>\t\n            <unmanaged>OPM_CONNECTOR_TYPE_LVDS</unmanaged>\t\n            <unmanaged-short>OPM_CONNECTOR_TYPE_LVDS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.ConnectorType.DJpn\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_CONNECTOR_TYPE_D_JPN']/*\"/>\t\n            <unmanaged>OPM_CONNECTOR_TYPE_D_JPN</unmanaged>\t\n            <unmanaged-short>OPM_CONNECTOR_TYPE_D_JPN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.ConnectorType.Sdi\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_CONNECTOR_TYPE_SDI']/*\"/>\t\n            <unmanaged>OPM_CONNECTOR_TYPE_SDI</unmanaged>\t\n            <unmanaged-short>OPM_CONNECTOR_TYPE_SDI</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.ConnectorType.DisplayPortExternal\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_CONNECTOR_TYPE_DISPLAYPORT_EXTERNAL']/*\"/>\t\n            <unmanaged>OPM_CONNECTOR_TYPE_DISPLAYPORT_EXTERNAL</unmanaged>\t\n            <unmanaged-short>OPM_CONNECTOR_TYPE_DISPLAYPORT_EXTERNAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.ConnectorType.DisplayPortEmbedded\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_CONNECTOR_TYPE_DISPLAYPORT_EMBEDDED']/*\"/>\t\n            <unmanaged>OPM_CONNECTOR_TYPE_DISPLAYPORT_EMBEDDED</unmanaged>\t\n            <unmanaged-short>OPM_CONNECTOR_TYPE_DISPLAYPORT_EMBEDDED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.ConnectorType.UdiExternal\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_CONNECTOR_TYPE_UDI_EXTERNAL']/*\"/>\t\n            <unmanaged>OPM_CONNECTOR_TYPE_UDI_EXTERNAL</unmanaged>\t\n            <unmanaged-short>OPM_CONNECTOR_TYPE_UDI_EXTERNAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.ConnectorType.UdiEmbedded\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_CONNECTOR_TYPE_UDI_EMBEDDED']/*\"/>\t\n            <unmanaged>OPM_CONNECTOR_TYPE_UDI_EMBEDDED</unmanaged>\t\n            <unmanaged-short>OPM_CONNECTOR_TYPE_UDI_EMBEDDED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.ConnectorType.CoppCompatibleConnectorTypeInternal\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_COPP_COMPATIBLE_CONNECTOR_TYPE_INTERNAL']/*\"/>\t\n            <unmanaged>OPM_COPP_COMPATIBLE_CONNECTOR_TYPE_INTERNAL</unmanaged>\t\n            <unmanaged-short>OPM_COPP_COMPATIBLE_CONNECTOR_TYPE_INTERNAL</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.OPM.DpcpProtectionLevel\">\n            <summary>\t\n            <p>The DXGKMDT_OPM_DPCP_PROTECTION_LEVEL enumeration indicates the protection levels for a protected output that supports DisplayPort Content Protection (DPCP). </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>DPCP protects digital video signals from DisplayPort output connectors. For more information about DisplayPort, see the DisplayPort article.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_DPCP_PROTECTION_LEVEL']/*\"/>\t\n            <msdn-id>ff560861</msdn-id>\t\n            <unmanaged>OPM_DPCP_PROTECTION_LEVEL</unmanaged>\t\n            <unmanaged-short>OPM_DPCP_PROTECTION_LEVEL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.DpcpProtectionLevel.Off\">\n            <summary>\t\n            <dd> <p>Indicates that DPCP does not protect the output's signal. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_DPCP_OFF']/*\"/>\t\n            <msdn-id>ff560861</msdn-id>\t\n            <unmanaged>OPM_DPCP_OFF</unmanaged>\t\n            <unmanaged-short>OPM_DPCP_OFF</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.DpcpProtectionLevel.On\">\n            <summary>\t\n            <dd> <p>Indicates that DPCP protects the output's signal. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_DPCP_ON']/*\"/>\t\n            <msdn-id>ff560861</msdn-id>\t\n            <unmanaged>OPM_DPCP_ON</unmanaged>\t\n            <unmanaged-short>OPM_DPCP_ON</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.OPM.DviCharacteristic\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='__MIDL___MIDL_itf_opmapi_0000_0000_0005']/*\"/>\t\n            <unmanaged>__MIDL___MIDL_itf_opmapi_0000_0000_0005</unmanaged>\t\n            <unmanaged-short>__MIDL___MIDL_itf_opmapi_0000_0000_0005</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.DviCharacteristic.Level10\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_DVI_CHARACTERISTIC_1_0']/*\"/>\t\n            <unmanaged>OPM_DVI_CHARACTERISTIC_1_0</unmanaged>\t\n            <unmanaged-short>OPM_DVI_CHARACTERISTIC_1_0</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.DviCharacteristic.Level11OrAbove\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_DVI_CHARACTERISTIC_1_1_OR_ABOVE']/*\"/>\t\n            <unmanaged>OPM_DVI_CHARACTERISTIC_1_1_OR_ABOVE</unmanaged>\t\n            <unmanaged-short>OPM_DVI_CHARACTERISTIC_1_1_OR_ABOVE</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.OPM.HdcpFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='__MIDL___MIDL_itf_opmapi_0000_0000_0002']/*\"/>\t\n            <unmanaged>__MIDL___MIDL_itf_opmapi_0000_0000_0002</unmanaged>\t\n            <unmanaged-short>__MIDL___MIDL_itf_opmapi_0000_0000_0002</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.HdcpFlags.None\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_HDCP_FLAG_NONE']/*\"/>\t\n            <unmanaged>OPM_HDCP_FLAG_NONE</unmanaged>\t\n            <unmanaged-short>OPM_HDCP_FLAG_NONE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.HdcpFlags.Repeater\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_HDCP_FLAG_REPEATER']/*\"/>\t\n            <unmanaged>OPM_HDCP_FLAG_REPEATER</unmanaged>\t\n            <unmanaged-short>OPM_HDCP_FLAG_REPEATER</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.OPM.HdcpProtectionLevel\">\n            <summary>\t\n            <p>The DXGKMDT_OPM_HDCP_PROTECTION_LEVEL enumeration indicates the protection levels for a protected output that supports High-bandwidth Digital Content Protection (HDCP). </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>HDCP protects digital video signals from digital video output connectors. Currently, OPM can use HDCP to protect data from Digital Video Interface (DVI) and High-Definition Multimedia Interface (HDMI) connector outputs. For more information about the HDCP system, see the HDCP Specification Revision 1.1.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_HDCP_PROTECTION_LEVEL']/*\"/>\t\n            <msdn-id>ff560878</msdn-id>\t\n            <unmanaged>OPM_HDCP_PROTECTION_LEVEL</unmanaged>\t\n            <unmanaged-short>OPM_HDCP_PROTECTION_LEVEL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.HdcpProtectionLevel.Off\">\n            <summary>\t\n            <dd> <p>Indicates that HDCP does not protect the output's signal. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_HDCP_OFF']/*\"/>\t\n            <msdn-id>ff560878</msdn-id>\t\n            <unmanaged>OPM_HDCP_OFF</unmanaged>\t\n            <unmanaged-short>OPM_HDCP_OFF</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.HdcpProtectionLevel.On\">\n            <summary>\t\n            <dd> <p>Indicates that HDCP protects the output's signal. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_HDCP_ON']/*\"/>\t\n            <msdn-id>ff560878</msdn-id>\t\n            <unmanaged>OPM_HDCP_ON</unmanaged>\t\n            <unmanaged-short>OPM_HDCP_ON</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.OPM.ImageAspectRatioEn300294\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Specifies the aspect ratio for ETSI EN 300 294.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This enumeration is numerically equivalent to the <strong>COPP_ImageAspectRatio_EN300294</strong> enumeration used in Certified Output Protection Protocol (COPP).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_IMAGE_ASPECT_RATIO_EN300294']/*\"/>\t\n            <msdn-id>dd388963</msdn-id>\t\n            <unmanaged>OPM_IMAGE_ASPECT_RATIO_EN300294</unmanaged>\t\n            <unmanaged-short>OPM_IMAGE_ASPECT_RATIO_EN300294</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.ImageAspectRatioEn300294.FullFormat4By3\">\n            <summary>\t\n            <dd> <p>Full format 4:3.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_ASPECT_RATIO_EN300294_FULL_FORMAT_4_BY_3']/*\"/>\t\n            <msdn-id>dd388963</msdn-id>\t\n            <unmanaged>OPM_ASPECT_RATIO_EN300294_FULL_FORMAT_4_BY_3</unmanaged>\t\n            <unmanaged-short>OPM_ASPECT_RATIO_EN300294_FULL_FORMAT_4_BY_3</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.ImageAspectRatioEn300294.Box14By9Center\">\n            <summary>\t\n            <dd> <p>Box 14:9 center.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_ASPECT_RATIO_EN300294_BOX_14_BY_9_CENTER']/*\"/>\t\n            <msdn-id>dd388963</msdn-id>\t\n            <unmanaged>OPM_ASPECT_RATIO_EN300294_BOX_14_BY_9_CENTER</unmanaged>\t\n            <unmanaged-short>OPM_ASPECT_RATIO_EN300294_BOX_14_BY_9_CENTER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.ImageAspectRatioEn300294.Box14By9Top\">\n            <summary>\t\n            <dd> <p>Box 14:9 top.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_ASPECT_RATIO_EN300294_BOX_14_BY_9_TOP']/*\"/>\t\n            <msdn-id>dd388963</msdn-id>\t\n            <unmanaged>OPM_ASPECT_RATIO_EN300294_BOX_14_BY_9_TOP</unmanaged>\t\n            <unmanaged-short>OPM_ASPECT_RATIO_EN300294_BOX_14_BY_9_TOP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.ImageAspectRatioEn300294.Box16By9Center\">\n            <summary>\t\n            <dd> <p>Box 16:9 center.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_ASPECT_RATIO_EN300294_BOX_16_BY_9_CENTER']/*\"/>\t\n            <msdn-id>dd388963</msdn-id>\t\n            <unmanaged>OPM_ASPECT_RATIO_EN300294_BOX_16_BY_9_CENTER</unmanaged>\t\n            <unmanaged-short>OPM_ASPECT_RATIO_EN300294_BOX_16_BY_9_CENTER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.ImageAspectRatioEn300294.Box16By9Top\">\n            <summary>\t\n            <dd> <p>Box 16:9 top.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_ASPECT_RATIO_EN300294_BOX_16_BY_9_TOP']/*\"/>\t\n            <msdn-id>dd388963</msdn-id>\t\n            <unmanaged>OPM_ASPECT_RATIO_EN300294_BOX_16_BY_9_TOP</unmanaged>\t\n            <unmanaged-short>OPM_ASPECT_RATIO_EN300294_BOX_16_BY_9_TOP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.ImageAspectRatioEn300294.BoxGt16By9Center\">\n            <summary>\t\n            <dd> <p>Box &gt; 16:9 center.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_ASPECT_RATIO_EN300294_BOX_GT_16_BY_9_CENTER']/*\"/>\t\n            <msdn-id>dd388963</msdn-id>\t\n            <unmanaged>OPM_ASPECT_RATIO_EN300294_BOX_GT_16_BY_9_CENTER</unmanaged>\t\n            <unmanaged-short>OPM_ASPECT_RATIO_EN300294_BOX_GT_16_BY_9_CENTER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.ImageAspectRatioEn300294.FullFormat4By3ProtectedCenter\">\n            <summary>\t\n            <dd> <p>Full format 4:3 (shoot and protect 14:9 center). </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_ASPECT_RATIO_EN300294_FULL_FORMAT_4_BY_3_PROTECTED_CENTER']/*\"/>\t\n            <msdn-id>dd388963</msdn-id>\t\n            <unmanaged>OPM_ASPECT_RATIO_EN300294_FULL_FORMAT_4_BY_3_PROTECTED_CENTER</unmanaged>\t\n            <unmanaged-short>OPM_ASPECT_RATIO_EN300294_FULL_FORMAT_4_BY_3_PROTECTED_CENTER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.ImageAspectRatioEn300294.FullFormat16By9Anamorphic\">\n            <summary>\t\n            <dd> <p>Full format 16:9 (anamorphic).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_ASPECT_RATIO_EN300294_FULL_FORMAT_16_BY_9_ANAMORPHIC']/*\"/>\t\n            <msdn-id>dd388963</msdn-id>\t\n            <unmanaged>OPM_ASPECT_RATIO_EN300294_FULL_FORMAT_16_BY_9_ANAMORPHIC</unmanaged>\t\n            <unmanaged-short>OPM_ASPECT_RATIO_EN300294_FULL_FORMAT_16_BY_9_ANAMORPHIC</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.OPM.ParameterType\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='__MIDL___MIDL_itf_opmapi_0000_0000_0001']/*\"/>\t\n            <unmanaged>__MIDL___MIDL_itf_opmapi_0000_0000_0001</unmanaged>\t\n            <unmanaged-short>__MIDL___MIDL_itf_opmapi_0000_0000_0001</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.ParameterType.OmacSize\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_OMAC_SIZE']/*\"/>\t\n            <unmanaged>OPM_OMAC_SIZE</unmanaged>\t\n            <unmanaged-short>OPM_OMAC_SIZE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.ParameterType.Bit128RandomNumberSize\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_128_BIT_RANDOM_NUMBER_SIZE']/*\"/>\t\n            <unmanaged>OPM_128_BIT_RANDOM_NUMBER_SIZE</unmanaged>\t\n            <unmanaged-short>OPM_128_BIT_RANDOM_NUMBER_SIZE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.ParameterType.EncryptedInitializationParametersSize\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_ENCRYPTED_INITIALIZATION_PARAMETERS_SIZE']/*\"/>\t\n            <unmanaged>OPM_ENCRYPTED_INITIALIZATION_PARAMETERS_SIZE</unmanaged>\t\n            <unmanaged-short>OPM_ENCRYPTED_INITIALIZATION_PARAMETERS_SIZE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.ParameterType.ConfigureSettingDataSize\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_CONFIGURE_SETTING_DATA_SIZE']/*\"/>\t\n            <unmanaged>OPM_CONFIGURE_SETTING_DATA_SIZE</unmanaged>\t\n            <unmanaged-short>OPM_CONFIGURE_SETTING_DATA_SIZE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.ParameterType.GetInformationParametersSize\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_GET_INFORMATION_PARAMETERS_SIZE']/*\"/>\t\n            <unmanaged>OPM_GET_INFORMATION_PARAMETERS_SIZE</unmanaged>\t\n            <unmanaged-short>OPM_GET_INFORMATION_PARAMETERS_SIZE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.ParameterType.RequestedInformationSize\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_REQUESTED_INFORMATION_SIZE']/*\"/>\t\n            <unmanaged>OPM_REQUESTED_INFORMATION_SIZE</unmanaged>\t\n            <unmanaged-short>OPM_REQUESTED_INFORMATION_SIZE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.ParameterType.KeySelectionVectorSize\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_HDCP_KEY_SELECTION_VECTOR_SIZE']/*\"/>\t\n            <unmanaged>OPM_HDCP_KEY_SELECTION_VECTOR_SIZE</unmanaged>\t\n            <unmanaged-short>OPM_HDCP_KEY_SELECTION_VECTOR_SIZE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.ParameterType.Size\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_PROTECTION_TYPE_SIZE']/*\"/>\t\n            <unmanaged>OPM_PROTECTION_TYPE_SIZE</unmanaged>\t\n            <unmanaged-short>OPM_PROTECTION_TYPE_SIZE</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.OPM.ProtectionStandardFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='__MIDL___MIDL_itf_opmapi_0000_0000_0009']/*\"/>\t\n            <unmanaged>__MIDL___MIDL_itf_opmapi_0000_0000_0009</unmanaged>\t\n            <unmanaged-short>__MIDL___MIDL_itf_opmapi_0000_0000_0009</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.ProtectionStandardFlags.Other\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_PROTECTION_STANDARD_OTHER']/*\"/>\t\n            <unmanaged>OPM_PROTECTION_STANDARD_OTHER</unmanaged>\t\n            <unmanaged-short>OPM_PROTECTION_STANDARD_OTHER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.ProtectionStandardFlags.None\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_PROTECTION_STANDARD_NONE']/*\"/>\t\n            <unmanaged>OPM_PROTECTION_STANDARD_NONE</unmanaged>\t\n            <unmanaged-short>OPM_PROTECTION_STANDARD_NONE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.ProtectionStandardFlags.Iec61880525i\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_PROTECTION_STANDARD_IEC61880_525I']/*\"/>\t\n            <unmanaged>OPM_PROTECTION_STANDARD_IEC61880_525I</unmanaged>\t\n            <unmanaged-short>OPM_PROTECTION_STANDARD_IEC61880_525I</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.ProtectionStandardFlags.Iec618802525i\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_PROTECTION_STANDARD_IEC61880_2_525I']/*\"/>\t\n            <unmanaged>OPM_PROTECTION_STANDARD_IEC61880_2_525I</unmanaged>\t\n            <unmanaged-short>OPM_PROTECTION_STANDARD_IEC61880_2_525I</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.ProtectionStandardFlags.Iec62375625p\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_PROTECTION_STANDARD_IEC62375_625P']/*\"/>\t\n            <unmanaged>OPM_PROTECTION_STANDARD_IEC62375_625P</unmanaged>\t\n            <unmanaged-short>OPM_PROTECTION_STANDARD_IEC62375_625P</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.ProtectionStandardFlags.Eia608b525\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_PROTECTION_STANDARD_EIA608B_525']/*\"/>\t\n            <unmanaged>OPM_PROTECTION_STANDARD_EIA608B_525</unmanaged>\t\n            <unmanaged-short>OPM_PROTECTION_STANDARD_EIA608B_525</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.ProtectionStandardFlags.En300294625i\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_PROTECTION_STANDARD_EN300294_625I']/*\"/>\t\n            <unmanaged>OPM_PROTECTION_STANDARD_EN300294_625I</unmanaged>\t\n            <unmanaged-short>OPM_PROTECTION_STANDARD_EN300294_625I</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.ProtectionStandardFlags.Cea805aTypea525p\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_PROTECTION_STANDARD_CEA805A_TYPEA_525P']/*\"/>\t\n            <unmanaged>OPM_PROTECTION_STANDARD_CEA805A_TYPEA_525P</unmanaged>\t\n            <unmanaged-short>OPM_PROTECTION_STANDARD_CEA805A_TYPEA_525P</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.ProtectionStandardFlags.Cea805aTypea750p\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_PROTECTION_STANDARD_CEA805A_TYPEA_750P']/*\"/>\t\n            <unmanaged>OPM_PROTECTION_STANDARD_CEA805A_TYPEA_750P</unmanaged>\t\n            <unmanaged-short>OPM_PROTECTION_STANDARD_CEA805A_TYPEA_750P</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.ProtectionStandardFlags.Cea805aTypea1125i\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_PROTECTION_STANDARD_CEA805A_TYPEA_1125I']/*\"/>\t\n            <unmanaged>OPM_PROTECTION_STANDARD_CEA805A_TYPEA_1125I</unmanaged>\t\n            <unmanaged-short>OPM_PROTECTION_STANDARD_CEA805A_TYPEA_1125I</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.ProtectionStandardFlags.Cea805aTypeb525p\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_PROTECTION_STANDARD_CEA805A_TYPEB_525P']/*\"/>\t\n            <unmanaged>OPM_PROTECTION_STANDARD_CEA805A_TYPEB_525P</unmanaged>\t\n            <unmanaged-short>OPM_PROTECTION_STANDARD_CEA805A_TYPEB_525P</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.ProtectionStandardFlags.Cea805aTypeb750p\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_PROTECTION_STANDARD_CEA805A_TYPEB_750P']/*\"/>\t\n            <unmanaged>OPM_PROTECTION_STANDARD_CEA805A_TYPEB_750P</unmanaged>\t\n            <unmanaged-short>OPM_PROTECTION_STANDARD_CEA805A_TYPEB_750P</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.ProtectionStandardFlags.Cea805aTypeb1125i\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_PROTECTION_STANDARD_CEA805A_TYPEB_1125I']/*\"/>\t\n            <unmanaged>OPM_PROTECTION_STANDARD_CEA805A_TYPEB_1125I</unmanaged>\t\n            <unmanaged-short>OPM_PROTECTION_STANDARD_CEA805A_TYPEB_1125I</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.ProtectionStandardFlags.Aribtrb15525i\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_PROTECTION_STANDARD_ARIBTRB15_525I']/*\"/>\t\n            <unmanaged>OPM_PROTECTION_STANDARD_ARIBTRB15_525I</unmanaged>\t\n            <unmanaged-short>OPM_PROTECTION_STANDARD_ARIBTRB15_525I</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.ProtectionStandardFlags.Aribtrb15525p\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_PROTECTION_STANDARD_ARIBTRB15_525P']/*\"/>\t\n            <unmanaged>OPM_PROTECTION_STANDARD_ARIBTRB15_525P</unmanaged>\t\n            <unmanaged-short>OPM_PROTECTION_STANDARD_ARIBTRB15_525P</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.ProtectionStandardFlags.Aribtrb15750p\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_PROTECTION_STANDARD_ARIBTRB15_750P']/*\"/>\t\n            <unmanaged>OPM_PROTECTION_STANDARD_ARIBTRB15_750P</unmanaged>\t\n            <unmanaged-short>OPM_PROTECTION_STANDARD_ARIBTRB15_750P</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.ProtectionStandardFlags.Aribtrb151125i\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_PROTECTION_STANDARD_ARIBTRB15_1125I']/*\"/>\t\n            <unmanaged>OPM_PROTECTION_STANDARD_ARIBTRB15_1125I</unmanaged>\t\n            <unmanaged-short>OPM_PROTECTION_STANDARD_ARIBTRB15_1125I</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.OPM.ProtectionType\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='__MIDL___MIDL_itf_opmapi_0000_0000_0008']/*\"/>\t\n            <unmanaged>__MIDL___MIDL_itf_opmapi_0000_0000_0008</unmanaged>\t\n            <unmanaged-short>__MIDL___MIDL_itf_opmapi_0000_0000_0008</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.ProtectionType.Other\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_PROTECTION_TYPE_OTHER']/*\"/>\t\n            <unmanaged>OPM_PROTECTION_TYPE_OTHER</unmanaged>\t\n            <unmanaged-short>OPM_PROTECTION_TYPE_OTHER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.ProtectionType.None\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_PROTECTION_TYPE_NONE']/*\"/>\t\n            <unmanaged>OPM_PROTECTION_TYPE_NONE</unmanaged>\t\n            <unmanaged-short>OPM_PROTECTION_TYPE_NONE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.ProtectionType.CoppCompatibleHdcp\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_PROTECTION_TYPE_COPP_COMPATIBLE_HDCP']/*\"/>\t\n            <unmanaged>OPM_PROTECTION_TYPE_COPP_COMPATIBLE_HDCP</unmanaged>\t\n            <unmanaged-short>OPM_PROTECTION_TYPE_COPP_COMPATIBLE_HDCP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.ProtectionType.Acp\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_PROTECTION_TYPE_ACP']/*\"/>\t\n            <unmanaged>OPM_PROTECTION_TYPE_ACP</unmanaged>\t\n            <unmanaged-short>OPM_PROTECTION_TYPE_ACP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.ProtectionType.Cgmsa\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_PROTECTION_TYPE_CGMSA']/*\"/>\t\n            <unmanaged>OPM_PROTECTION_TYPE_CGMSA</unmanaged>\t\n            <unmanaged-short>OPM_PROTECTION_TYPE_CGMSA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.ProtectionType.Hdcp\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_PROTECTION_TYPE_HDCP']/*\"/>\t\n            <unmanaged>OPM_PROTECTION_TYPE_HDCP</unmanaged>\t\n            <unmanaged-short>OPM_PROTECTION_TYPE_HDCP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.ProtectionType.Dpcp\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_PROTECTION_TYPE_DPCP']/*\"/>\t\n            <unmanaged>OPM_PROTECTION_TYPE_DPCP</unmanaged>\t\n            <unmanaged-short>OPM_PROTECTION_TYPE_DPCP</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.OPM.StatusFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='__MIDL___MIDL_itf_opmapi_0000_0000_0003']/*\"/>\t\n            <unmanaged>__MIDL___MIDL_itf_opmapi_0000_0000_0003</unmanaged>\t\n            <unmanaged-short>__MIDL___MIDL_itf_opmapi_0000_0000_0003</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.StatusFlags.Normal\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_STATUS_NORMAL']/*\"/>\t\n            <unmanaged>OPM_STATUS_NORMAL</unmanaged>\t\n            <unmanaged-short>OPM_STATUS_NORMAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.StatusFlags.LinkLost\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_STATUS_LINK_LOST']/*\"/>\t\n            <unmanaged>OPM_STATUS_LINK_LOST</unmanaged>\t\n            <unmanaged-short>OPM_STATUS_LINK_LOST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.StatusFlags.RenegotiationRequired\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_STATUS_RENEGOTIATION_REQUIRED']/*\"/>\t\n            <unmanaged>OPM_STATUS_RENEGOTIATION_REQUIRED</unmanaged>\t\n            <unmanaged-short>OPM_STATUS_RENEGOTIATION_REQUIRED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.StatusFlags.TamperingDetected\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_STATUS_TAMPERING_DETECTED']/*\"/>\t\n            <unmanaged>OPM_STATUS_TAMPERING_DETECTED</unmanaged>\t\n            <unmanaged-short>OPM_STATUS_TAMPERING_DETECTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.StatusFlags.RevokedHdcpDeviceAttached\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_STATUS_REVOKED_HDCP_DEVICE_ATTACHED']/*\"/>\t\n            <unmanaged>OPM_STATUS_REVOKED_HDCP_DEVICE_ATTACHED</unmanaged>\t\n            <unmanaged-short>OPM_STATUS_REVOKED_HDCP_DEVICE_ATTACHED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.StatusFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.OPM.VideoOutputSemantics\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Specifies whether the <strong><see cref=\"T:SharpDX.MediaFoundation.OPM.VideoOutput\"/></strong> interface will use Output Protection Manager (OPM) semantics or Certified Output Protection Protocol (COPP) semantics.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_VIDEO_OUTPUT_SEMANTICS']/*\"/>\t\n            <msdn-id>dd388979</msdn-id>\t\n            <unmanaged>OPM_VIDEO_OUTPUT_SEMANTICS</unmanaged>\t\n            <unmanaged-short>OPM_VIDEO_OUTPUT_SEMANTICS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.VideoOutputSemantics.COPP\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_VOS_COPP_SEMANTICS']/*\"/>\t\n            <unmanaged>OPM_VOS_COPP_SEMANTICS</unmanaged>\t\n            <unmanaged-short>OPM_VOS_COPP_SEMANTICS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.VideoOutputSemantics.OPM\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_VOS_OPM_SEMANTICS']/*\"/>\t\n            <unmanaged>OPM_VOS_OPM_SEMANTICS</unmanaged>\t\n            <unmanaged-short>OPM_VOS_OPM_SEMANTICS</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.OPM.OPMFactory\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.MediaFoundation.OPM.OPMFactory']/*\"/>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.OPM.OPMFactory.OPMGetVideoOutputsFromHMONITOR(System.IntPtr,SharpDX.MediaFoundation.OPM.VideoOutputSemantics,System.Int32@,SharpDX.MediaFoundation.OPM.VideoOutput[])\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Creates an Output Protection Manager (OPM) object for each physical monitor that is associated with a particular <strong><see cref=\"T:System.IntPtr\"/></strong> handle.</p>\t\n            </summary>\t\n            <param name=\"hMonitor\"><dd> <p>The monitor handle for which to create OPM objects. There are several functions that return <strong><see cref=\"T:System.IntPtr\"/></strong> values. For more information, see the topic Multiple Display Monitors Functions in the Windows graphics device interface (GDI) documentation.</p> </dd></param>\t\n            <param name=\"vos\"><dd> <p>A member of the <strong><see cref=\"T:SharpDX.MediaFoundation.OPM.VideoOutputSemantics\"/></strong> enumeration.</p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.OPM.VideoOutputSemantics.OPM\"/></strong></dt> </dl> </td><td> <p>The returned <strong><see cref=\"T:SharpDX.MediaFoundation.OPM.VideoOutput\"/></strong> references will use OPM semantics.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.OPM.VideoOutputSemantics.COPP\"/></strong></dt> </dl> </td><td> <p>The returned <strong><see cref=\"T:SharpDX.MediaFoundation.OPM.VideoOutput\"/></strong> references will use Certified Output Protection Protocol (COPP) semantics.</p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <param name=\"ulNumVideoOutputsRef\"><dd> <p>Receives the number of <strong><see cref=\"T:SharpDX.MediaFoundation.OPM.VideoOutput\"/></strong> references returned in the <em>pppOPMVideoOutputArray</em> parameter.</p> </dd></param>\t\n            <param name=\"pOPMVideoOutputArrayOut\"><dd> <p>Receives a reference to an array of <strong><see cref=\"T:SharpDX.MediaFoundation.OPM.VideoOutput\"/></strong> references. Each <strong><see cref=\"T:SharpDX.MediaFoundation.OPM.VideoOutput\"/></strong> reference is associated with a single physical monitor. The caller must release each reference in the array, and call <strong>CoTaskMemFree</strong> to free the array.</p> </dd></param>\t\n            <returns><p>If this function succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>A single <strong><see cref=\"T:System.IntPtr\"/></strong> handle can be associated with several physical monitors. Each physical monitor has its own connector. The application must set the protection mechanism individually for each physical monitor, using the <strong><see cref=\"T:SharpDX.MediaFoundation.OPM.VideoOutput\"/></strong> references returned in <em>pppOPMVideoOutputArray</em>.</p><p>The <strong><see cref=\"T:SharpDX.MediaFoundation.OPM.VideoOutput\"/></strong> interface has two modes of behavior, depending on the value of the <em>vos</em> parameter. If <em>vos</em> is <strong><see cref=\"F:SharpDX.MediaFoundation.OPM.VideoOutputSemantics.COPP\"/></strong>, <strong><see cref=\"T:SharpDX.MediaFoundation.OPM.VideoOutput\"/></strong> uses COPP semantics. This mode is intended for backward compatibility with COPP. If <em>vos</em> is <strong><see cref=\"F:SharpDX.MediaFoundation.OPM.VideoOutputSemantics.OPM\"/></strong>, <strong><see cref=\"T:SharpDX.MediaFoundation.OPM.VideoOutput\"/></strong> uses the newer OPM semantics. Differences in behavior are noted on the reference page for each method. The mode does not change during the lifetime of the object.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPMGetVideoOutputsFromHMONITOR']/*\"/>\t\n            <msdn-id>dd388932</msdn-id>\t\n            <unmanaged>HRESULT OPMGetVideoOutputsFromHMONITOR([In] HMONITOR hMonitor,[In] OPM_VIDEO_OUTPUT_SEMANTICS vos,[Out] unsigned int* pulNumVideoOutputs,[Out, Buffer] IOPMVideoOutput*** pppOPMVideoOutputArray)</unmanaged>\t\n            <unmanaged-short>OPMGetVideoOutputsFromHMONITOR</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.OPM.OPMFactory.OPMGetVideoOutputsFromIDirect3DDevice9Object(SharpDX.Direct3D9.Device,SharpDX.MediaFoundation.OPM.VideoOutputSemantics,System.Int32@,SharpDX.MediaFoundation.OPM.VideoOutput[])\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Creates an Output Protection Manager (OPM) object for each physical monitor that is associated with a particular Direct3D device.</p>\t\n            </summary>\t\n            <param name=\"direct3DDevice9Ref\"><dd> <p> Pointer to the <strong><see cref=\"T:SharpDX.Direct3D9.Device\"/></strong> interface of a Direct3D device.</p> </dd></param>\t\n            <param name=\"vos\"><dd> <p>A member of the <strong><see cref=\"T:SharpDX.MediaFoundation.OPM.VideoOutputSemantics\"/></strong> enumeration.</p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.OPM.VideoOutputSemantics.OPM\"/></strong></dt> </dl> </td><td> <p>The returned <strong><see cref=\"T:SharpDX.MediaFoundation.OPM.VideoOutput\"/></strong> references will use OPM semantics.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.MediaFoundation.OPM.VideoOutputSemantics.COPP\"/></strong></dt> </dl> </td><td> <p>The returned <strong><see cref=\"T:SharpDX.MediaFoundation.OPM.VideoOutput\"/></strong> references will use Certified Output Protection Protocol (COPP) semantics.</p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <param name=\"ulNumVideoOutputsRef\"><dd> <p>Receives the number of <strong><see cref=\"T:SharpDX.MediaFoundation.OPM.VideoOutput\"/></strong> references returned in the <em>pppOPMVideoOutputArray</em> parameter.</p> </dd></param>\t\n            <param name=\"pOPMVideoOutputArrayOut\"><dd> <p>Receives a reference to an array of <strong><see cref=\"T:SharpDX.MediaFoundation.OPM.VideoOutput\"/></strong> references. Each <strong><see cref=\"T:SharpDX.MediaFoundation.OPM.VideoOutput\"/></strong> reference is associated with a single physical monitor. The caller must release each reference in the array, and call <strong>CoTaskMemFree</strong> to free the array.</p> </dd></param>\t\n            <returns><p>If this function succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>A single Direct3D device can be associated with several physical monitors. Each physical monitor has its own connector. The application must set the protection mechanism individually for each physical monitor, by using the <strong><see cref=\"T:SharpDX.MediaFoundation.OPM.VideoOutput\"/></strong> references returned in <em>pppOPMVideoOutputArray</em>.</p><p>The <strong><see cref=\"T:SharpDX.MediaFoundation.OPM.VideoOutput\"/></strong> interface has two modes of behavior, depending on the value of the <em>vos</em> parameter. If <em>vos</em> is <see cref=\"F:SharpDX.MediaFoundation.OPM.VideoOutputSemantics.COPP\"/>, <strong><see cref=\"T:SharpDX.MediaFoundation.OPM.VideoOutput\"/></strong> uses COPP semantics. This mode is intended for backward compatibility with COPP. If <em>vos</em> is <see cref=\"F:SharpDX.MediaFoundation.OPM.VideoOutputSemantics.OPM\"/>, <strong><see cref=\"T:SharpDX.MediaFoundation.OPM.VideoOutput\"/></strong> uses the newer OPM semantics. Differences in behavior are noted on the reference page for each method. The mode does not change during the lifetime of the object.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPMGetVideoOutputsFromIDirect3DDevice9Object']/*\"/>\t\n            <msdn-id>dd388933</msdn-id>\t\n            <unmanaged>HRESULT OPMGetVideoOutputsFromIDirect3DDevice9Object([In] IDirect3DDevice9* pDirect3DDevice9,[In] OPM_VIDEO_OUTPUT_SEMANTICS vos,[Out] unsigned int* pulNumVideoOutputs,[Out, Buffer] IOPMVideoOutput*** pppOPMVideoOutputArray)</unmanaged>\t\n            <unmanaged-short>OPMGetVideoOutputsFromIDirect3DDevice9Object</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.OPM.VideoOutput\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Represents a video output for an Output Protection Manager (OPM) session.</p><p>To get a reference to this interface, call one of the following functions:</p><ul> <li> <strong><see cref=\"M:SharpDX.MediaFoundation.OPM.OPMFactory.OPMGetVideoOutputsFromIDirect3DDevice9Object(SharpDX.Direct3D9.Device,SharpDX.MediaFoundation.OPM.VideoOutputSemantics,System.Int32@,SharpDX.MediaFoundation.OPM.VideoOutput[])\"/></strong> </li> <li> <strong><see cref=\"M:SharpDX.MediaFoundation.OPM.OPMFactory.OPMGetVideoOutputsFromHMONITOR(System.IntPtr,SharpDX.MediaFoundation.OPM.VideoOutputSemantics,System.Int32@,SharpDX.MediaFoundation.OPM.VideoOutput[])\"/></strong> </li> </ul>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IOPMVideoOutput']/*\"/>\t\n            <msdn-id>dd374909</msdn-id>\t\n            <unmanaged>IOPMVideoOutput</unmanaged>\t\n            <unmanaged-short>IOPMVideoOutput</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.OPM.VideoOutput.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.OPM.VideoOutput\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.OPM.VideoOutput.op_Explicit(System.IntPtr)~SharpDX.MediaFoundation.OPM.VideoOutput\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.MediaFoundation.OPM.VideoOutput\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.OPM.VideoOutput.StartInitialization(SharpDX.MediaFoundation.OPM.RandomNumber@,System.Byte[],System.Int32@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Begins the initialization sequence for an Output Protection Manager (OPM) session.</p>\t\n            </summary>\t\n            <param name=\"rnRandomNumberRef\"><dd> <p>Pointer to an <strong><see cref=\"T:SharpDX.MediaFoundation.OPM.RandomNumber\"/></strong> structure. The structure receives a 128-bit random number generated by the display driver. This number is required for the <strong><see cref=\"M:SharpDX.MediaFoundation.OPM.VideoOutput.FinishInitialization(SharpDX.MediaFoundation.OPM.EncryptedInitializationParameters@)\"/></strong> method.</p> </dd></param>\t\n            <param name=\"bCertificateOut\"><dd> <p>Receives a reference to a buffer containing the display driver's certificate. The method allocates the memory for the buffer. The caller must release the memory by calling <strong>CoTaskMemFree</strong>.</p> </dd></param>\t\n            <param name=\"ulCertificateLengthRef\"><dd> <p>Receives the length of the buffer pointed to by  <em>ppbCertificate</em>.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>This method is equivalent to the <strong>IAMCertifiedOutputProtection::KeyExchange</strong> method in Certified Output Protection Protocol (COPP).</p><p>The method returns a certificate chain that contains the driver's 2048-bit RSA public key. The caller must validate the certificate chain and then call <strong><see cref=\"M:SharpDX.MediaFoundation.OPM.VideoOutput.FinishInitialization(SharpDX.MediaFoundation.OPM.EncryptedInitializationParameters@)\"/></strong> to establish the OPM session.</p><p>This method supports both OPM semantics and COPP semantics. COPP semantics are supported for backward compatibility; new applications should use OPM semantics.</p>OPM Semantics<p>The method returns an X.509 certificate chain. The certificate chain is encoded with ASN.1 Distinguished Encoding Rules (DER).</p>COPP Semantics<p>The method returns a COPP certificate chain. The certificate chain is returned as a UTF-8 string. You can treat the buffer returned in <em>ppbCertificate</em> as an array of <strong>char</strong>s.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IOPMVideoOutput::StartInitialization']/*\"/>\t\n            <msdn-id>dd374918</msdn-id>\t\n            <unmanaged>HRESULT IOPMVideoOutput::StartInitialization([Out] OPM_RANDOM_NUMBER* prnRandomNumber,[Out, Buffer] unsigned char** ppbCertificate,[Out] unsigned int* pulCertificateLength)</unmanaged>\t\n            <unmanaged-short>IOPMVideoOutput::StartInitialization</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.OPM.VideoOutput.FinishInitialization(SharpDX.MediaFoundation.OPM.EncryptedInitializationParameters@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Completes the initialization sequence for an Output Protection Manager (OPM) session.</p>\t\n            </summary>\t\n            <param name=\"parametersRef\"><dd> <p>Pointer to an <strong><see cref=\"T:SharpDX.MediaFoundation.OPM.EncryptedInitializationParameters\"/></strong> structure. Initialize this structure as described in the Remarks session.</p> </dd></param>\t\n            <returns><p>Returns an <strong><see cref=\"T:SharpDX.Result\"/>. </strong>Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Win32.ErrorCode.GraphicsOpmDriverInternalError\"/></strong></dt> </dl> </td><td> <p>An unexpected error occurred the display driver.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Win32.ErrorCode.GraphicsOpmInvalidEncryptedParameters\"/></strong></dt> </dl> </td><td> <p>The encrypted parameters in <em>pParameters</em> are incorrect.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>This method is equivalent to the <strong>IAMCertifiedOutputProtection::SessionSequenceStart</strong> method in Certified Output Protection Protocol (COPP).</p><p>The <em>pParameters</em> parameter points to an <strong><see cref=\"T:SharpDX.MediaFoundation.OPM.EncryptedInitializationParameters\"/></strong> structure that contains a 256-byte array. Before calling the method, prepare this array as follows. First, concatenate the following numbers:</p><ul> <li>The 128-bit number returned in the <em>prnRandomNumber</em> parameter of the <strong><see cref=\"M:SharpDX.MediaFoundation.OPM.VideoOutput.StartInitialization(SharpDX.MediaFoundation.OPM.RandomNumber@,System.Byte[],System.Int32@)\"/></strong> method.</li> <li>The AES signing key. This value is a 128-bit random number generated by the application.</li> <li>The initial sequence number for OPM status requests. This value is a 32-bit random number generated by the application. </li> <li>The initial sequence number for OPM commands. This value is a 32-bit random number generated by the application.</li> </ul><p>Encrypt this number with RAEAS-OAEP, encryption using the display driver's public encryption key. The public encryption key is contained in the certificate returned in the <em>ppbCertificate</em> parameter of the <strong>StartInitialization</strong> method.</p><p>The application must use cryptographically secure random numbers. The <strong>CryptGenRandom</strong> function is recommended, although not required.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IOPMVideoOutput::FinishInitialization']/*\"/>\t\n            <msdn-id>dd374914</msdn-id>\t\n            <unmanaged>HRESULT IOPMVideoOutput::FinishInitialization([In] const OPM_ENCRYPTED_INITIALIZATION_PARAMETERS* pParameters)</unmanaged>\t\n            <unmanaged-short>IOPMVideoOutput::FinishInitialization</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.OPM.VideoOutput.GetInformation(SharpDX.MediaFoundation.OPM.GetInformationParameters@,SharpDX.MediaFoundation.OPM.RequestedInformation@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Sends an Output Protection Manager (OPM) status request to the display driver.</p>\t\n            </summary>\t\n            <param name=\"parametersRef\"><dd> <p>Pointer to an <strong><see cref=\"T:SharpDX.MediaFoundation.OPM.GetInformationParameters\"/></strong> structure. Fill in this structure with data for the status request. For a list of status requests, see OPM Status Requests.</p> </dd></param>\t\n            <param name=\"requestedInformationRef\"><dd> <p>Pointer to an <strong><see cref=\"T:SharpDX.MediaFoundation.OPM.RequestedInformation\"/></strong> structure. On return, the method fills in this structure with the results of the status request.</p> </dd></param>\t\n            <returns><p>Returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Win32.ErrorCode.GraphicsOpmVideoOutputDoesNotHaveOpmSemantics\"/></strong></dt> </dl> </td><td> <p>The OPM object was created with Certified Output Protection Protocol (COPP) semantics.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>This method is equivalent to the <strong>IAMCertifiedOutputProtection::ProtectionStatus</strong> method in COPP.</p><p>The <strong><see cref=\"T:SharpDX.MediaFoundation.OPM.VideoOutput\"/></strong> interface supports both OPM semantics and COPP semantics. The <strong>GetInformation</strong> method applies only when OPM semantics are used. If the interface reference was created with COPP semantics, <strong>GetInformation</strong> returns <see cref=\"F:SharpDX.Win32.ErrorCode.GraphicsOpmVideoOutputDoesNotHaveOpmSemantics\"/>. In that case, call <strong><see cref=\"M:SharpDX.MediaFoundation.OPM.VideoOutput.COPPCompatibleGetInformation(SharpDX.MediaFoundation.OPM.CoppCompatibleGetInformationParameters@,SharpDX.MediaFoundation.OPM.RequestedInformation@)\"/></strong> instead.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IOPMVideoOutput::GetInformation']/*\"/>\t\n            <msdn-id>dd374916</msdn-id>\t\n            <unmanaged>HRESULT IOPMVideoOutput::GetInformation([In] const OPM_GET_INFO_PARAMETERS* pParameters,[Out] OPM_REQUESTED_INFORMATION* pRequestedInformation)</unmanaged>\t\n            <unmanaged-short>IOPMVideoOutput::GetInformation</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.OPM.VideoOutput.COPPCompatibleGetInformation(SharpDX.MediaFoundation.OPM.CoppCompatibleGetInformationParameters@,SharpDX.MediaFoundation.OPM.RequestedInformation@)\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Sends an Output Protection Manager (OPM) status request to the display driver. Use this method when OPM is emulating Certified Output Protection Manager (COPP).</p>\t\n            </summary>\t\n            <param name=\"parametersRef\"><dd> <p>Pointer to an <strong><see cref=\"T:SharpDX.MediaFoundation.OPM.CoppCompatibleGetInformationParameters\"/></strong> structure. Fill in this structure with data for the status request. For a list of status requests, see OPM Status Requests.</p> </dd></param>\t\n            <param name=\"requestedInformationRef\"><dd> <p>Pointer to an <strong><see cref=\"T:SharpDX.MediaFoundation.OPM.RequestedInformation\"/></strong> structure. On return, the method fills in this structure with the results of the status request.</p> </dd></param>\t\n            <returns><p>Returns an <strong><see cref=\"T:SharpDX.Result\"/></strong>. Possible values include, but are not limited to, those in the following table.</p><table> <tr><th>Return code</th><th>Description</th></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> </dl> </td><td> <p>The method succeeded.</p> </td></tr> <tr><td> <dl> <dt><strong><see cref=\"F:SharpDX.Win32.ErrorCode.GraphicsOpmVideoOutputDoesNotHaveCoppSemantics\"/></strong></dt> </dl> </td><td> <p>The OPM object was created with OPM semantics, not COPP semantics.</p> </td></tr> </table><p>?</p></returns>\t\n            <remarks>\t\n            <p>This method is equivalent to the <strong>IAMCertifiedOutputProtection::ProtectionStatus</strong> method in COPP.</p><p>The <strong><see cref=\"T:SharpDX.MediaFoundation.OPM.VideoOutput\"/></strong> interface supports both OPM semantics and COPP semantics. The <strong>COPPCompatibleGetInformation</strong> method applies only when COPP semantics are used. If the interface reference was created with OPM semantics, <strong>COPPCompatibleGetInformation</strong> returns <see cref=\"F:SharpDX.Win32.ErrorCode.GraphicsOpmVideoOutputDoesNotHaveCoppSemantics\"/>. In that case, call <strong><see cref=\"M:SharpDX.MediaFoundation.OPM.VideoOutput.GetInformation(SharpDX.MediaFoundation.OPM.GetInformationParameters@,SharpDX.MediaFoundation.OPM.RequestedInformation@)\"/></strong> instead.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IOPMVideoOutput::COPPCompatibleGetInformation']/*\"/>\t\n            <msdn-id>dd374913</msdn-id>\t\n            <unmanaged>HRESULT IOPMVideoOutput::COPPCompatibleGetInformation([In] const OPM_COPP_COMPATIBLE_GET_INFO_PARAMETERS* pParameters,[Out] OPM_REQUESTED_INFORMATION* pRequestedInformation)</unmanaged>\t\n            <unmanaged-short>IOPMVideoOutput::COPPCompatibleGetInformation</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.OPM.VideoOutput.Configure(SharpDX.MediaFoundation.OPM.ConfigureParameters@,System.Int32,System.Byte[])\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Configures a video output. This method sends an Output Protection Manager (OPM) or Certified Output Protection Protocol (COPP) command to the driver.</p>\t\n            </summary>\t\n            <param name=\"parametersRef\"><dd> <p>Pointer to an <strong><see cref=\"T:SharpDX.MediaFoundation.OPM.ConfigureParameters\"/></strong> structure that contains the command. For a list of OPM commands, see OPM Commands.</p> </dd></param>\t\n            <param name=\"ulAdditionalParametersSize\"><dd> <p>The size of the <em>pbAdditionalParameters</em> buffer, in bytes.</p> </dd></param>\t\n            <param name=\"bAdditionalParametersRef\"><dd> <p>Pointer to a buffer that contains additional information for the command.</p> </dd></param>\t\n            <returns><p>If this method succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>This method is equivalent to the <strong>IAMCertifiedOutputProtection::ProtectionCommand</strong> method in COPP.</p><p>This method supports both OPM semantics and COPP semantics. COPP semantics are supported for backward compatibility; new applications should use OPM semantics.</p>OPM Semantics<p>Some OPM commands require additional configuration information to be passed in the <em>pbAdditionalParameters</em> parameter. The <em>ulAdditionalParametersSize</em> parameter specifies the size of the additional data.</p>COPP Semantics<p>The <em>pbAdditionalParameters</em> parameter must be <strong><c>null</c></strong>, and <em>ulAdditionalParametersSize</em> must be zero.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IOPMVideoOutput::Configure']/*\"/>\t\n            <msdn-id>dd374911</msdn-id>\t\n            <unmanaged>HRESULT IOPMVideoOutput::Configure([In] const OPM_CONFIGURE_PARAMETERS* pParameters,[In] unsigned int ulAdditionalParametersSize,[In, Buffer, Optional] const unsigned char* pbAdditionalParameters)</unmanaged>\t\n            <unmanaged-short>IOPMVideoOutput::Configure</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.OPM.AcpAndCgmsaSignaling\">\n            <summary>\t\n            <p>The DXGKMDT_OPM_ACP_AND_CGMSA_SIGNALING structure describes how the signal that goes through the physical connector that is associated with the protected output object is protected.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_ACP_AND_CGMSA_SIGNALING']/*\"/>\t\n            <msdn-id>ff560830</msdn-id>\t\n            <unmanaged>OPM_ACP_AND_CGMSA_SIGNALING</unmanaged>\t\n            <unmanaged-short>OPM_ACP_AND_CGMSA_SIGNALING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.AcpAndCgmsaSignaling.RandomNumber\">\n            <summary>\t\n            <dd> <p>A <strong>DXGKMDT_OPM_RANDOM_NUMBER</strong> structure that contains a protected output object's 128-bit cryptographically secure random number. This random number is generated by an application and supplied to the display miniport driver in a call to the driver's <strong>DxgkDdiOPMGetCOPPCompatibleInformation</strong> function. This random number is supplied to the driver in the <strong>rnRandomNumber</strong> member of the <strong>DXGKMDT_OPM_COPP_COMPATIBLE_GET_INFO_PARAMETERS</strong> structure.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_ACP_AND_CGMSA_SIGNALING::rnRandomNumber']/*\"/>\t\n            <msdn-id>ff560830</msdn-id>\t\n            <unmanaged>OPM_RANDOM_NUMBER rnRandomNumber</unmanaged>\t\n            <unmanaged-short>OPM_RANDOM_NUMBER rnRandomNumber</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.AcpAndCgmsaSignaling.StatusFlags\">\n            <summary>\t\n            <dd> <p>A bitwise OR combination of the values from the <strong>DXGKMDT_OPM_STATUS</strong> enumeration that indicates the status of a protected output.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_ACP_AND_CGMSA_SIGNALING::ulStatusFlags']/*\"/>\t\n            <msdn-id>ff560830</msdn-id>\t\n            <unmanaged>unsigned int ulStatusFlags</unmanaged>\t\n            <unmanaged-short>unsigned int ulStatusFlags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.AcpAndCgmsaSignaling.AvailableTVProtectionStandards\">\n            <summary>\t\n            <dd> <p>A valid bitwise OR combination of values from the <strong>DXGKMDT_OPM_PROTECTION_STANDARD</strong> enumeration that indicates the types of television signals that the physical connector that is associated with a protected output can carry.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_ACP_AND_CGMSA_SIGNALING::ulAvailableTVProtectionStandards']/*\"/>\t\n            <msdn-id>ff560830</msdn-id>\t\n            <unmanaged>unsigned int ulAvailableTVProtectionStandards</unmanaged>\t\n            <unmanaged-short>unsigned int ulAvailableTVProtectionStandards</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.AcpAndCgmsaSignaling.ActiveTVProtectionStandard\">\n            <summary>\t\n            <dd> <p>A valid bitwise OR combination of values from the <strong>DXGKMDT_OPM_PROTECTION_STANDARD</strong> enumeration that indicates the types of television signals that the physical connector that is associated with a protected output currently carries.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_ACP_AND_CGMSA_SIGNALING::ulActiveTVProtectionStandard']/*\"/>\t\n            <msdn-id>ff560830</msdn-id>\t\n            <unmanaged>unsigned int ulActiveTVProtectionStandard</unmanaged>\t\n            <unmanaged-short>unsigned int ulActiveTVProtectionStandard</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.AcpAndCgmsaSignaling.Reserved\">\n            <summary>\t\n            <dd> <p>Reserved. Must be set to zero. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_ACP_AND_CGMSA_SIGNALING::ulReserved']/*\"/>\t\n            <msdn-id>ff560830</msdn-id>\t\n            <unmanaged>unsigned int ulReserved</unmanaged>\t\n            <unmanaged-short>unsigned int ulReserved</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.AcpAndCgmsaSignaling.AspectRatioValidMask1\">\n            <summary>\t\n            <dd> <p>A mask value that indicates the valid bits in the following <strong>ulAspectRatioData1</strong> member.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_ACP_AND_CGMSA_SIGNALING::ulAspectRatioValidMask1']/*\"/>\t\n            <msdn-id>ff560830</msdn-id>\t\n            <unmanaged>unsigned int ulAspectRatioValidMask1</unmanaged>\t\n            <unmanaged-short>unsigned int ulAspectRatioValidMask1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.AcpAndCgmsaSignaling.AspectRatioData1\">\n            <summary>\t\n            <dd> <p>32-bit data that indicates the aspect ratio value that is currently set for the active protection standard.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_ACP_AND_CGMSA_SIGNALING::ulAspectRatioData1']/*\"/>\t\n            <msdn-id>ff560830</msdn-id>\t\n            <unmanaged>unsigned int ulAspectRatioData1</unmanaged>\t\n            <unmanaged-short>unsigned int ulAspectRatioData1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.AcpAndCgmsaSignaling.AspectRatioValidMask2\">\n            <summary>\t\n            <dd> <p>A mask value that indicates the valid bitfields in the following <strong>ulAspectRatioData2</strong> member.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_ACP_AND_CGMSA_SIGNALING::ulAspectRatioValidMask2']/*\"/>\t\n            <msdn-id>ff560830</msdn-id>\t\n            <unmanaged>unsigned int ulAspectRatioValidMask2</unmanaged>\t\n            <unmanaged-short>unsigned int ulAspectRatioValidMask2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.AcpAndCgmsaSignaling.AspectRatioData2\">\n            <summary>\t\n            <dd> <p>32-bit data for additional aspect ratio information that is used for specific protection standards. This data can be used to read End and Q0 values for EIA-608-B, or active format description for CEA-805-A Type B packets.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_ACP_AND_CGMSA_SIGNALING::ulAspectRatioData2']/*\"/>\t\n            <msdn-id>ff560830</msdn-id>\t\n            <unmanaged>unsigned int ulAspectRatioData2</unmanaged>\t\n            <unmanaged-short>unsigned int ulAspectRatioData2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.AcpAndCgmsaSignaling.AspectRatioValidMask3\">\n            <summary>\t\n            <dd> <p>A mask value that indicates the valid bitfields in the following <strong>ulAspectRatioData3</strong> member.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_ACP_AND_CGMSA_SIGNALING::ulAspectRatioValidMask3']/*\"/>\t\n            <msdn-id>ff560830</msdn-id>\t\n            <unmanaged>unsigned int ulAspectRatioValidMask3</unmanaged>\t\n            <unmanaged-short>unsigned int ulAspectRatioValidMask3</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.AcpAndCgmsaSignaling.AspectRatioData3\">\n            <summary>\t\n            <dd> <p>32-bit data for additional aspect ratio information that is used for specific protection standards. This data can be used to read End and Q0 values for EIA-608-B, or active format description for CEA-805-A Type B packets.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_ACP_AND_CGMSA_SIGNALING::ulAspectRatioData3']/*\"/>\t\n            <msdn-id>ff560830</msdn-id>\t\n            <unmanaged>unsigned int ulAspectRatioData3</unmanaged>\t\n            <unmanaged-short>unsigned int ulAspectRatioData3</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.OPM.AcpAndCgmsaSignaling.Reserved2\">\n            <summary>\t\n            <dd> <p>Reserved. Must be set to zero. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_ACP_AND_CGMSA_SIGNALING::ulReserved2']/*\"/>\t\n            <msdn-id>ff560830</msdn-id>\t\n            <unmanaged>unsigned int ulReserved2[4]</unmanaged>\t\n            <unmanaged-short>unsigned int ulReserved2</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.OPM.AcpAndCgmsaSignaling.Reserved3\">\n            <summary>\t\n            <dd> <p>Reserved. Must be set to zero. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_ACP_AND_CGMSA_SIGNALING::ulReserved3']/*\"/>\t\n            <msdn-id>ff560830</msdn-id>\t\n            <unmanaged>unsigned int ulReserved3[4]</unmanaged>\t\n            <unmanaged-short>unsigned int ulReserved3</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.OPM.ActualOutputFormat\">\n            <summary>\t\n            <p>The DXGKMDT_OPM_ACTUAL_OUTPUT_FORMAT structure describes the format of the signal that is transmitted from a physical connector that is associated with a protected output to a monitor.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_ACTUAL_OUTPUT_FORMAT']/*\"/>\t\n            <msdn-id>ff560840</msdn-id>\t\n            <unmanaged>OPM_ACTUAL_OUTPUT_FORMAT</unmanaged>\t\n            <unmanaged-short>OPM_ACTUAL_OUTPUT_FORMAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.ActualOutputFormat.RandomNumber\">\n            <summary>\t\n            <dd> <p>A <strong>DXGKMDT_OPM_RANDOM_NUMBER</strong> structure that contains a protected output object's 128-bit cryptographically secure random number. This random number is generated by an application and supplied to the display miniport driver in a call to the driver's <strong>DxgkDdiOPMGetInformation</strong> or <strong>DxgkDdiOPMGetCOPPCompatibleInformation</strong> function. This random number is supplied to the driver in the <strong>rnRandomNumber</strong> member of the <strong>DXGKMDT_OPM_GET_INFO_PARAMETERS</strong> or <strong>DXGKMDT_OPM_COPP_COMPATIBLE_GET_INFO_PARAMETERS</strong> structure.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_ACTUAL_OUTPUT_FORMAT::rnRandomNumber']/*\"/>\t\n            <msdn-id>ff560840</msdn-id>\t\n            <unmanaged>OPM_RANDOM_NUMBER rnRandomNumber</unmanaged>\t\n            <unmanaged-short>OPM_RANDOM_NUMBER rnRandomNumber</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.ActualOutputFormat.StatusFlags\">\n            <summary>\t\n            <dd> <p>A bitwise OR combination of the values of the <strong>DXGKMDT_OPM_STATUS</strong> enumeration that indicates the status of a protected output.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_ACTUAL_OUTPUT_FORMAT::ulStatusFlags']/*\"/>\t\n            <msdn-id>ff560840</msdn-id>\t\n            <unmanaged>unsigned int ulStatusFlags</unmanaged>\t\n            <unmanaged-short>unsigned int ulStatusFlags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.ActualOutputFormat.DisplayWidth\">\n            <summary>\t\n            <dd> <p>The width, in pixels, of each video frame in the signal that is transmitted from the physical connector.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_ACTUAL_OUTPUT_FORMAT::ulDisplayWidth']/*\"/>\t\n            <msdn-id>ff560840</msdn-id>\t\n            <unmanaged>unsigned int ulDisplayWidth</unmanaged>\t\n            <unmanaged-short>unsigned int ulDisplayWidth</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.ActualOutputFormat.DisplayHeight\">\n            <summary>\t\n            <dd> <p>The height, in pixels, of each video frame in the signal that is transmitted from the physical connector. If the signal is interlaced, this value is the height of the video frame and not the height of either the even or the odd field. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_ACTUAL_OUTPUT_FORMAT::ulDisplayHeight']/*\"/>\t\n            <msdn-id>ff560840</msdn-id>\t\n            <unmanaged>unsigned int ulDisplayHeight</unmanaged>\t\n            <unmanaged-short>unsigned int ulDisplayHeight</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.ActualOutputFormat.SampleInterleaveFormat\">\n            <summary>\t\n            <dd> <p>A <strong>DXGKMDT_OPM_INTERLEAVE_FORMAT</strong>-typed value that specifies how the scan lines in a video frame are ordered.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_ACTUAL_OUTPUT_FORMAT::dsfSampleInterleaveFormat']/*\"/>\t\n            <msdn-id>ff560840</msdn-id>\t\n            <unmanaged>DXVA2_SampleFormat dsfSampleInterleaveFormat</unmanaged>\t\n            <unmanaged-short>DXVA2_SampleFormat dsfSampleInterleaveFormat</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.ActualOutputFormat.D3dFormat\">\n            <summary>\t\n            <dd> <p>A <strong>D3DDDIFORMAT</strong>-typed value that identifies the Direct3D surface format of the signal.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_ACTUAL_OUTPUT_FORMAT::d3dFormat']/*\"/>\t\n            <msdn-id>ff560840</msdn-id>\t\n            <unmanaged>D3DFORMAT d3dFormat</unmanaged>\t\n            <unmanaged-short>D3DFORMAT d3dFormat</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.ActualOutputFormat.FrequencyNumerator\">\n            <summary>\t\n            <dd> <p>The numerator for the refresh rate of the signal, in Hz.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_ACTUAL_OUTPUT_FORMAT::ulFrequencyNumerator']/*\"/>\t\n            <msdn-id>ff560840</msdn-id>\t\n            <unmanaged>unsigned int ulFrequencyNumerator</unmanaged>\t\n            <unmanaged-short>unsigned int ulFrequencyNumerator</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.ActualOutputFormat.FrequencyDenominator\">\n            <summary>\t\n            <dd> <p>The denominator for the refresh rate of the signal, in Hz. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_ACTUAL_OUTPUT_FORMAT::ulFrequencyDenominator']/*\"/>\t\n            <msdn-id>ff560840</msdn-id>\t\n            <unmanaged>unsigned int ulFrequencyDenominator</unmanaged>\t\n            <unmanaged-short>unsigned int ulFrequencyDenominator</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.OPM.ConfigureParameters\">\n            <summary>\t\n            <p>The DXGKMDT_OPM_CONFIGURE_PARAMETERS structure contains parameters that are used to configure a protected output object in a call to the <strong>DxgkDdiOPMConfigureProtectedOutput</strong> function.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_CONFIGURE_PARAMETERS']/*\"/>\t\n            <msdn-id>ff560849</msdn-id>\t\n            <unmanaged>OPM_CONFIGURE_PARAMETERS</unmanaged>\t\n            <unmanaged-short>OPM_CONFIGURE_PARAMETERS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.ConfigureParameters.Omac\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_CONFIGURE_PARAMETERS::omac']/*\"/>\t\n            <unmanaged>OPM_OMAC omac</unmanaged>\t\n            <unmanaged-short>OPM_OMAC omac</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.ConfigureParameters.Setting\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_CONFIGURE_PARAMETERS::guidSetting']/*\"/>\t\n            <unmanaged>GUID guidSetting</unmanaged>\t\n            <unmanaged-short>GUID guidSetting</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.ConfigureParameters.SequenceNumber\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_CONFIGURE_PARAMETERS::ulSequenceNumber']/*\"/>\t\n            <unmanaged>unsigned int ulSequenceNumber</unmanaged>\t\n            <unmanaged-short>unsigned int ulSequenceNumber</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.ConfigureParameters.ParametersSize\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_CONFIGURE_PARAMETERS::cbParametersSize']/*\"/>\t\n            <unmanaged>unsigned int cbParametersSize</unmanaged>\t\n            <unmanaged-short>unsigned int cbParametersSize</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.OPM.ConfigureParameters.Parameters\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_CONFIGURE_PARAMETERS::abParameters']/*\"/>\t\n            <unmanaged>unsigned char abParameters[4056]</unmanaged>\t\n            <unmanaged-short>unsigned char abParameters</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.OPM.ConnectedHdcpDeviceInformation\">\n            <summary>\t\n            <p>The DXGKMDT_OPM_CONNECTED_HDCP_DEVICE_INFORMATION structure contains High-bandwidth Digital Content Protection (HDCP) information that is retrieved in a call to the <strong>DxgkDdiOPMGetInformation</strong> function.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_CONNECTED_HDCP_DEVICE_INFORMATION']/*\"/>\t\n            <msdn-id>ff560854</msdn-id>\t\n            <unmanaged>OPM_CONNECTED_HDCP_DEVICE_INFORMATION</unmanaged>\t\n            <unmanaged-short>OPM_CONNECTED_HDCP_DEVICE_INFORMATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.ConnectedHdcpDeviceInformation.RandomNumber\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_CONNECTED_HDCP_DEVICE_INFORMATION::rnRandomNumber']/*\"/>\t\n            <unmanaged>OPM_RANDOM_NUMBER rnRandomNumber</unmanaged>\t\n            <unmanaged-short>OPM_RANDOM_NUMBER rnRandomNumber</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.ConnectedHdcpDeviceInformation.StatusFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_CONNECTED_HDCP_DEVICE_INFORMATION::ulStatusFlags']/*\"/>\t\n            <unmanaged>unsigned int ulStatusFlags</unmanaged>\t\n            <unmanaged-short>unsigned int ulStatusFlags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.ConnectedHdcpDeviceInformation.HDCPFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_CONNECTED_HDCP_DEVICE_INFORMATION::ulHDCPFlags']/*\"/>\t\n            <unmanaged>unsigned int ulHDCPFlags</unmanaged>\t\n            <unmanaged-short>unsigned int ulHDCPFlags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.ConnectedHdcpDeviceInformation.B\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_CONNECTED_HDCP_DEVICE_INFORMATION::ksvB']/*\"/>\t\n            <unmanaged>OPM_HDCP_KEY_SELECTION_VECTOR ksvB</unmanaged>\t\n            <unmanaged-short>OPM_HDCP_KEY_SELECTION_VECTOR ksvB</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.OPM.ConnectedHdcpDeviceInformation.Reserved\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_CONNECTED_HDCP_DEVICE_INFORMATION::Reserved']/*\"/>\t\n            <unmanaged>unsigned char Reserved[11]</unmanaged>\t\n            <unmanaged-short>unsigned char Reserved</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.OPM.ConnectedHdcpDeviceInformation.Reserved2\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_CONNECTED_HDCP_DEVICE_INFORMATION::Reserved2']/*\"/>\t\n            <unmanaged>unsigned char Reserved2[16]</unmanaged>\t\n            <unmanaged-short>unsigned char Reserved2</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.OPM.ConnectedHdcpDeviceInformation.Reserved3\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_CONNECTED_HDCP_DEVICE_INFORMATION::Reserved3']/*\"/>\t\n            <unmanaged>unsigned char Reserved3[16]</unmanaged>\t\n            <unmanaged-short>unsigned char Reserved3</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.OPM.CoppCompatibleGetInformationParameters\">\n            <summary>\t\n            <p>The DXGKMDT_OPM_COPP_COMPATIBLE_GET_INFO_PARAMETERS structure contains parameters that are used to retrieve information from a protected output object in a call to the <strong>DxgkDdiOPMGetCOPPCompatibleInformation</strong> function.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_COPP_COMPATIBLE_GET_INFO_PARAMETERS']/*\"/>\t\n            <msdn-id>ff560859</msdn-id>\t\n            <unmanaged>OPM_COPP_COMPATIBLE_GET_INFO_PARAMETERS</unmanaged>\t\n            <unmanaged-short>OPM_COPP_COMPATIBLE_GET_INFO_PARAMETERS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.CoppCompatibleGetInformationParameters.RandomNumber\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_COPP_COMPATIBLE_GET_INFO_PARAMETERS::rnRandomNumber']/*\"/>\t\n            <unmanaged>OPM_RANDOM_NUMBER rnRandomNumber</unmanaged>\t\n            <unmanaged-short>OPM_RANDOM_NUMBER rnRandomNumber</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.CoppCompatibleGetInformationParameters.Information\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_COPP_COMPATIBLE_GET_INFO_PARAMETERS::guidInformation']/*\"/>\t\n            <unmanaged>GUID guidInformation</unmanaged>\t\n            <unmanaged-short>GUID guidInformation</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.CoppCompatibleGetInformationParameters.SequenceNumber\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_COPP_COMPATIBLE_GET_INFO_PARAMETERS::ulSequenceNumber']/*\"/>\t\n            <unmanaged>unsigned int ulSequenceNumber</unmanaged>\t\n            <unmanaged-short>unsigned int ulSequenceNumber</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.CoppCompatibleGetInformationParameters.ParametersSize\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_COPP_COMPATIBLE_GET_INFO_PARAMETERS::cbParametersSize']/*\"/>\t\n            <unmanaged>unsigned int cbParametersSize</unmanaged>\t\n            <unmanaged-short>unsigned int cbParametersSize</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.OPM.CoppCompatibleGetInformationParameters.Parameters\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_COPP_COMPATIBLE_GET_INFO_PARAMETERS::abParameters']/*\"/>\t\n            <unmanaged>unsigned char abParameters[4056]</unmanaged>\t\n            <unmanaged-short>unsigned char abParameters</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.OPM.EncryptedInitializationParameters\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Contains initialization parameters for an Output Protection Manager (OPM) session.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The layout of this structure is identical to the <strong>AMCOPPSignature</strong> structure used in Certified Output Protection Protocol (COPP).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_ENCRYPTED_INITIALIZATION_PARAMETERS']/*\"/>\t\n            <msdn-id>dd388944</msdn-id>\t\n            <unmanaged>OPM_ENCRYPTED_INITIALIZATION_PARAMETERS</unmanaged>\t\n            <unmanaged-short>OPM_ENCRYPTED_INITIALIZATION_PARAMETERS</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.OPM.EncryptedInitializationParameters.Data\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_ENCRYPTED_INITIALIZATION_PARAMETERS::abEncryptedInitializationParameters']/*\"/>\t\n            <unmanaged>unsigned char abEncryptedInitializationParameters[256]</unmanaged>\t\n            <unmanaged-short>unsigned char abEncryptedInitializationParameters</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.OPM.GetCodecInformationInformation\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Contains the result from an <strong>OPM_GET_CODEC_INFO</strong> query.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_GET_CODEC_INFO_INFORMATION']/*\"/>\t\n            <msdn-id>dd388951</msdn-id>\t\n            <unmanaged>OPM_GET_CODEC_INFO_INFORMATION</unmanaged>\t\n            <unmanaged-short>OPM_GET_CODEC_INFO_INFORMATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.GetCodecInformationInformation.RandomNumber\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_GET_CODEC_INFO_INFORMATION::rnRandomNumber']/*\"/>\t\n            <unmanaged>OPM_RANDOM_NUMBER rnRandomNumber</unmanaged>\t\n            <unmanaged-short>OPM_RANDOM_NUMBER rnRandomNumber</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.GetCodecInformationInformation.Merit\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_GET_CODEC_INFO_INFORMATION::Merit']/*\"/>\t\n            <unmanaged>unsigned int Merit</unmanaged>\t\n            <unmanaged-short>unsigned int Merit</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.OPM.GetCodecInformationParameters\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Contains information for the <strong>OPM_GET_CODEC_INFO</strong> command.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_GET_CODEC_INFO_PARAMETERS']/*\"/>\t\n            <msdn-id>dd388952</msdn-id>\t\n            <unmanaged>OPM_GET_CODEC_INFO_PARAMETERS</unmanaged>\t\n            <unmanaged-short>OPM_GET_CODEC_INFO_PARAMETERS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.GetCodecInformationParameters.Verifier\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_GET_CODEC_INFO_PARAMETERS::cbVerifier']/*\"/>\t\n            <unmanaged>unsigned int cbVerifier</unmanaged>\t\n            <unmanaged-short>unsigned int cbVerifier</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.OPM.GetCodecInformationParameters.Data\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_GET_CODEC_INFO_PARAMETERS::Verifier']/*\"/>\t\n            <unmanaged>unsigned char Verifier[4052]</unmanaged>\t\n            <unmanaged-short>unsigned char Verifier</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.OPM.GetInformationParameters\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Contains a Message Authentication Code (MAC) for an Output Protection Manager (OPM) message.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_GET_INFO_PARAMETERS']/*\"/>\t\n            <msdn-id>dd388964</msdn-id>\t\n            <unmanaged>OPM_GET_INFO_PARAMETERS</unmanaged>\t\n            <unmanaged-short>OPM_GET_INFO_PARAMETERS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.GetInformationParameters.Omac\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_GET_INFO_PARAMETERS::omac']/*\"/>\t\n            <unmanaged>OPM_OMAC omac</unmanaged>\t\n            <unmanaged-short>OPM_OMAC omac</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.GetInformationParameters.RandomNumber\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_GET_INFO_PARAMETERS::rnRandomNumber']/*\"/>\t\n            <unmanaged>OPM_RANDOM_NUMBER rnRandomNumber</unmanaged>\t\n            <unmanaged-short>OPM_RANDOM_NUMBER rnRandomNumber</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.GetInformationParameters.Information\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_GET_INFO_PARAMETERS::guidInformation']/*\"/>\t\n            <unmanaged>GUID guidInformation</unmanaged>\t\n            <unmanaged-short>GUID guidInformation</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.GetInformationParameters.SequenceNumber\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_GET_INFO_PARAMETERS::ulSequenceNumber']/*\"/>\t\n            <unmanaged>unsigned int ulSequenceNumber</unmanaged>\t\n            <unmanaged-short>unsigned int ulSequenceNumber</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.GetInformationParameters.ParametersSize\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_GET_INFO_PARAMETERS::cbParametersSize']/*\"/>\t\n            <unmanaged>unsigned int cbParametersSize</unmanaged>\t\n            <unmanaged-short>unsigned int cbParametersSize</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.OPM.GetInformationParameters.Parameters\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_GET_INFO_PARAMETERS::abParameters']/*\"/>\t\n            <unmanaged>unsigned char abParameters[4056]</unmanaged>\t\n            <unmanaged-short>unsigned char abParameters</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.OPM.HdcpKeySelectionVector\">\n            <summary>\t\n            <p>The DXGKMDT_OPM_CONNECTED_HDCP_DEVICE_INFORMATION structure contains High-bandwidth Digital Content Protection (HDCP) information that is retrieved in a call to the <strong>DxgkDdiOPMGetInformation</strong> function.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_HDCP_KEY_SELECTION_VECTOR']/*\"/>\t\n            <msdn-id>ff560854</msdn-id>\t\n            <unmanaged>OPM_HDCP_KEY_SELECTION_VECTOR</unmanaged>\t\n            <unmanaged-short>OPM_HDCP_KEY_SELECTION_VECTOR</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.OPM.HdcpKeySelectionVector.KeySelectionVector\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_HDCP_KEY_SELECTION_VECTOR::abKeySelectionVector']/*\"/>\t\n            <unmanaged>unsigned char abKeySelectionVector[5]</unmanaged>\t\n            <unmanaged-short>unsigned char abKeySelectionVector</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.OPM.Omac\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Contains a Message Authentication Code (MAC) for an Output Protection Manager (OPM) message.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_OMAC']/*\"/>\t\n            <msdn-id>dd388964</msdn-id>\t\n            <unmanaged>OPM_OMAC</unmanaged>\t\n            <unmanaged-short>OPM_OMAC</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.OPM.Omac.Data\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_OMAC::abOMAC']/*\"/>\t\n            <unmanaged>unsigned char abOMAC[16]</unmanaged>\t\n            <unmanaged-short>unsigned char abOMAC</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.OPM.OutputIdData\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Contains the result from an <strong>OPM_GET_OUTPUT_ID</strong> status request.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_OUTPUT_ID_DATA']/*\"/>\t\n            <msdn-id>dd388965</msdn-id>\t\n            <unmanaged>OPM_OUTPUT_ID_DATA</unmanaged>\t\n            <unmanaged-short>OPM_OUTPUT_ID_DATA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.OutputIdData.RandomNumber\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_OUTPUT_ID_DATA::rnRandomNumber']/*\"/>\t\n            <unmanaged>OPM_RANDOM_NUMBER rnRandomNumber</unmanaged>\t\n            <unmanaged-short>OPM_RANDOM_NUMBER rnRandomNumber</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.OutputIdData.StatusFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_OUTPUT_ID_DATA::ulStatusFlags']/*\"/>\t\n            <unmanaged>unsigned int ulStatusFlags</unmanaged>\t\n            <unmanaged-short>unsigned int ulStatusFlags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.OutputIdData.OutputId\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_OUTPUT_ID_DATA::OutputId']/*\"/>\t\n            <unmanaged>unsigned longlong OutputId</unmanaged>\t\n            <unmanaged-short>unsigned longlong OutputId</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.OPM.RandomNumber\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Contains a Message Authentication Code (MAC) for an Output Protection Manager (OPM) message.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_RANDOM_NUMBER']/*\"/>\t\n            <msdn-id>dd388964</msdn-id>\t\n            <unmanaged>OPM_RANDOM_NUMBER</unmanaged>\t\n            <unmanaged-short>OPM_RANDOM_NUMBER</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.OPM.RandomNumber.Data\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_RANDOM_NUMBER::abRandomNumber']/*\"/>\t\n            <unmanaged>unsigned char abRandomNumber[16]</unmanaged>\t\n            <unmanaged-short>unsigned char abRandomNumber</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.OPM.RequestedInformation\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Contains a Message Authentication Code (MAC) for an Output Protection Manager (OPM) message.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_REQUESTED_INFORMATION']/*\"/>\t\n            <msdn-id>dd388964</msdn-id>\t\n            <unmanaged>OPM_REQUESTED_INFORMATION</unmanaged>\t\n            <unmanaged-short>OPM_REQUESTED_INFORMATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.RequestedInformation.Omac\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_REQUESTED_INFORMATION::omac']/*\"/>\t\n            <unmanaged>OPM_OMAC omac</unmanaged>\t\n            <unmanaged-short>OPM_OMAC omac</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.RequestedInformation.RequestedInformationSize\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_REQUESTED_INFORMATION::cbRequestedInformationSize']/*\"/>\t\n            <unmanaged>unsigned int cbRequestedInformationSize</unmanaged>\t\n            <unmanaged-short>unsigned int cbRequestedInformationSize</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.OPM.RequestedInformation.Data\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_REQUESTED_INFORMATION::abRequestedInformation']/*\"/>\t\n            <unmanaged>unsigned char abRequestedInformation[4076]</unmanaged>\t\n            <unmanaged-short>unsigned char abRequestedInformation</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.OPM.SetAcpAndCgmsaSignalingParameters\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Contains information for the <strong>OPM_SET_ACP_AND_CGMSA_SIGNALING</strong> command in Output Protection Manager (OPM).</p><p>This command causes the driver to insert Wide Screen Signaling (WSS) codes or other data packets in the television signal, as required by some Analog Copy Protection (ACP) and Copy Generation Management System ? Analog (CGMS-A) specifications. For example:</p><ul> <li>ETSI EN 300 294 (625i PAL): Data packets are inserted into line 23 of the signal.</li> <li>CEA-608-B (NTSC): Data packets are inserted into line 21 of the vertical blanking interval (VBI).</li> </ul>\t\n            </summary>\t\n            <remarks>\t\n            <p>The layout of this structure is identical to the <strong>DXVA_COPPSetSignalingCmdData</strong> structure used in Certified Output Protection Manager (COPP).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_SET_ACP_AND_CGMSA_SIGNALING_PARAMETERS']/*\"/>\t\n            <msdn-id>dd388970</msdn-id>\t\n            <unmanaged>OPM_SET_ACP_AND_CGMSA_SIGNALING_PARAMETERS</unmanaged>\t\n            <unmanaged-short>OPM_SET_ACP_AND_CGMSA_SIGNALING_PARAMETERS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.SetAcpAndCgmsaSignalingParameters.NewTVProtectionStandard\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_SET_ACP_AND_CGMSA_SIGNALING_PARAMETERS::ulNewTVProtectionStandard']/*\"/>\t\n            <unmanaged>unsigned int ulNewTVProtectionStandard</unmanaged>\t\n            <unmanaged-short>unsigned int ulNewTVProtectionStandard</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.SetAcpAndCgmsaSignalingParameters.AspectRatioChangeMask1\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_SET_ACP_AND_CGMSA_SIGNALING_PARAMETERS::ulAspectRatioChangeMask1']/*\"/>\t\n            <unmanaged>unsigned int ulAspectRatioChangeMask1</unmanaged>\t\n            <unmanaged-short>unsigned int ulAspectRatioChangeMask1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.SetAcpAndCgmsaSignalingParameters.AspectRatioData1\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_SET_ACP_AND_CGMSA_SIGNALING_PARAMETERS::ulAspectRatioData1']/*\"/>\t\n            <unmanaged>unsigned int ulAspectRatioData1</unmanaged>\t\n            <unmanaged-short>unsigned int ulAspectRatioData1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.SetAcpAndCgmsaSignalingParameters.AspectRatioChangeMask2\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_SET_ACP_AND_CGMSA_SIGNALING_PARAMETERS::ulAspectRatioChangeMask2']/*\"/>\t\n            <unmanaged>unsigned int ulAspectRatioChangeMask2</unmanaged>\t\n            <unmanaged-short>unsigned int ulAspectRatioChangeMask2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.SetAcpAndCgmsaSignalingParameters.AspectRatioData2\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_SET_ACP_AND_CGMSA_SIGNALING_PARAMETERS::ulAspectRatioData2']/*\"/>\t\n            <unmanaged>unsigned int ulAspectRatioData2</unmanaged>\t\n            <unmanaged-short>unsigned int ulAspectRatioData2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.SetAcpAndCgmsaSignalingParameters.AspectRatioChangeMask3\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_SET_ACP_AND_CGMSA_SIGNALING_PARAMETERS::ulAspectRatioChangeMask3']/*\"/>\t\n            <unmanaged>unsigned int ulAspectRatioChangeMask3</unmanaged>\t\n            <unmanaged-short>unsigned int ulAspectRatioChangeMask3</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.SetAcpAndCgmsaSignalingParameters.AspectRatioData3\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_SET_ACP_AND_CGMSA_SIGNALING_PARAMETERS::ulAspectRatioData3']/*\"/>\t\n            <unmanaged>unsigned int ulAspectRatioData3</unmanaged>\t\n            <unmanaged-short>unsigned int ulAspectRatioData3</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.SetAcpAndCgmsaSignalingParameters.Reserved3\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_SET_ACP_AND_CGMSA_SIGNALING_PARAMETERS::ulReserved3']/*\"/>\t\n            <unmanaged>unsigned int ulReserved3</unmanaged>\t\n            <unmanaged-short>unsigned int ulReserved3</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.OPM.SetAcpAndCgmsaSignalingParameters.Reserved\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_SET_ACP_AND_CGMSA_SIGNALING_PARAMETERS::ulReserved']/*\"/>\t\n            <unmanaged>unsigned int ulReserved[4]</unmanaged>\t\n            <unmanaged-short>unsigned int ulReserved</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.OPM.SetAcpAndCgmsaSignalingParameters.Reserved2\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_SET_ACP_AND_CGMSA_SIGNALING_PARAMETERS::ulReserved2']/*\"/>\t\n            <unmanaged>unsigned int ulReserved2[4]</unmanaged>\t\n            <unmanaged-short>unsigned int ulReserved2</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.OPM.SetHdcpSrmParameters\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Contains information for the <strong>OPM_SET_ACP_AND_CGMSA_SIGNALING</strong> command in Output Protection Manager (OPM).</p><p>This command causes the driver to insert Wide Screen Signaling (WSS) codes or other data packets in the television signal, as required by some Analog Copy Protection (ACP) and Copy Generation Management System ? Analog (CGMS-A) specifications. For example:</p><ul> <li>ETSI EN 300 294 (625i PAL): Data packets are inserted into line 23 of the signal.</li> <li>CEA-608-B (NTSC): Data packets are inserted into line 21 of the vertical blanking interval (VBI).</li> </ul>\t\n            </summary>\t\n            <remarks>\t\n            <p>The layout of this structure is identical to the <strong>DXVA_COPPSetSignalingCmdData</strong> structure used in Certified Output Protection Manager (COPP).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_SET_HDCP_SRM_PARAMETERS']/*\"/>\t\n            <msdn-id>dd388970</msdn-id>\t\n            <unmanaged>OPM_SET_HDCP_SRM_PARAMETERS</unmanaged>\t\n            <unmanaged-short>OPM_SET_HDCP_SRM_PARAMETERS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.SetHdcpSrmParameters.SRMVersion\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_SET_HDCP_SRM_PARAMETERS::ulSRMVersion']/*\"/>\t\n            <unmanaged>unsigned int ulSRMVersion</unmanaged>\t\n            <unmanaged-short>unsigned int ulSRMVersion</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.OPM.SetProtectionLevelParameters\">\n            <summary>\t\n            <p>The DXGKMDT_OPM_SET_PROTECTION_LEVEL_PARAMETERS structure contains parameters to set the protection level of a protected output in a call to the <strong>DxgkDdiOPMConfigureProtectedOutput</strong> function.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_SET_PROTECTION_LEVEL_PARAMETERS']/*\"/>\t\n            <msdn-id>ff560921</msdn-id>\t\n            <unmanaged>OPM_SET_PROTECTION_LEVEL_PARAMETERS</unmanaged>\t\n            <unmanaged-short>OPM_SET_PROTECTION_LEVEL_PARAMETERS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.SetProtectionLevelParameters.ProtectionType\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_SET_PROTECTION_LEVEL_PARAMETERS::ulProtectionType']/*\"/>\t\n            <unmanaged>unsigned int ulProtectionType</unmanaged>\t\n            <unmanaged-short>unsigned int ulProtectionType</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.SetProtectionLevelParameters.ProtectionLevel\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_SET_PROTECTION_LEVEL_PARAMETERS::ulProtectionLevel']/*\"/>\t\n            <unmanaged>unsigned int ulProtectionLevel</unmanaged>\t\n            <unmanaged-short>unsigned int ulProtectionLevel</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.SetProtectionLevelParameters.Reserved\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_SET_PROTECTION_LEVEL_PARAMETERS::Reserved']/*\"/>\t\n            <unmanaged>unsigned int Reserved</unmanaged>\t\n            <unmanaged-short>unsigned int Reserved</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.SetProtectionLevelParameters.Reserved2\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_SET_PROTECTION_LEVEL_PARAMETERS::Reserved2']/*\"/>\t\n            <unmanaged>unsigned int Reserved2</unmanaged>\t\n            <unmanaged-short>unsigned int Reserved2</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.OPM.StandardInformation\">\n            <summary>\t\n            <p>External events can alter the nature of the protection that is applied to a connector or even modify the type of the connector. The display miniport driver must report these events to OPM applications whenever the driver receives a call to its <strong>DxgkDdiOPMGetInformation</strong> or <strong>DxgkDdiOPMGetCOPPCompatibleInformation</strong> function. The display miniport driver must report the following external events by returning the specified status flags from the <strong>DXGKMDT_OPM_STATUS</strong> enumeration only on the next call to <em>DxgkDdiOPMGetInformation</em> or <em>DxgkDdiOPMGetCOPPCompatibleInformation</em> after the events occur: </p><p></p><dl> <dt>Connection working properly</dt> <dd> <p>If the connection between the computer and the display device is working properly, the display miniport driver should set the DXGKMDT_OPM_STATUS_NORMAL status flag in the <strong>ulStatusFlags</strong> member of the <strong>DXGKMDT_OPM_STANDARD_INFORMATION</strong>, <strong>DXGKMDT_OPM_ACTUAL_OUTPUT_FORMAT</strong>, <strong>DXGKMDT_OPM_ACP_AND_CGMSA_SIGNALING</strong>, or <strong>DXGKMDT_OPM_CONNECTED_HDCP_DEVICE_INFORMATION</strong> structure. </p> </dd> <dt>Connection integrity</dt> <dd> <p>If the computer and the display device become disconnected, the display miniport driver should set the DXGKMDT_OPM_STATUS_LINK_LOST status flag in the <strong>ulStatusFlags</strong> member of the DXGKMDT_OPM_STANDARD_INFORMATION, DXGKMDT_OPM_ACTUAL_OUTPUT_FORMAT, DXGKMDT_OPM_ACP_AND_CGMSA_SIGNALING, or DXGKMDT_OPM_CONNECTED_HDCP_DEVICE_INFORMATION structure. </p> </dd> <dt>Connector reconfigurations</dt> <dd> <p>If the end-user causes the configuration of the physical connector to change, the display miniport driver should set the DXGKMDT_OPM_STATUS_RENEGOTIATION_REQUIRED status flag in the <strong>ulStatusFlags</strong> member of the DXGKMDT_OPM_STANDARD_INFORMATION, DXGKMDT_OPM_ACTUAL_OUTPUT_FORMAT, DXGKMDT_OPM_ACP_AND_CGMSA_SIGNALING, or DXGKMDT_OPM_CONNECTED_HDCP_DEVICE_INFORMATION structure.</p> </dd> <dt>Tampering</dt> <dd> <p>If tampering with the graphics adapter or the adapter's display miniport driver has occurred, the display miniport driver should set the DXGKMDT_OPM_STATUS_TAMPERING_DETECTED status flag in the <strong>ulStatusFlags</strong> member of the DXGKMDT_OPM_STANDARD_INFORMATION, DXGKMDT_OPM_ACTUAL_OUTPUT_FORMAT, DXGKMDT_OPM_ACP_AND_CGMSA_SIGNALING, or DXGKMDT_OPM_CONNECTED_HDCP_DEVICE_INFORMATION structure.</p> </dd> <dt>Revoked HDCP device</dt> <dd> <p>If a revoked High-bandwidth Digital Content Protection (HDCP) device is directly or indirectly attached to a connector and if HDCP is enabled, the display miniport driver should set the DXGKMDT_OPM_STATUS_REVOKED_HDCP_DEVICE_ATTACHED status flag in the <strong>ulStatusFlags</strong> member of the DXGKMDT_OPM_STANDARD_INFORMATION or DXGKMDT_OPM_ACTUAL_OUTPUT_FORMAT structure. If HDCP is not enabled, the driver is not required to set this status flag. The driver sets this status value only from a call to its <strong>DxgkDdiOPMGetInformation</strong> function to determine if HDCP is enabled.</p> </dd> </dl><p>The display miniport driver returns a reference to a DXGKMDT_OPM_STANDARD_INFORMATION, DXGKMDT_OPM_ACTUAL_OUTPUT_FORMAT, DXGKMDT_OPM_ACP_AND_CGMSA_SIGNALING, or DXGKMDT_OPM_CONNECTED_HDCP_DEVICE_INFORMATION structure in the <strong>abRequestedInformation</strong> member of the <strong>DXGKMDT_OPM_REQUESTED_INFORMATION</strong> structure. A reference to DXGKMDT_OPM_REQUESTED_INFORMATION is returned through the <em>RequestedInformation</em> parameter of <em>DxgkDdiOPMGetInformation</em> or <em>DxgkDdiOPMGetCOPPCompatibleInformation</em>.</p><p>For example, consider two media playback applications, A and B. Each application controls, via OPM, the HDCP protection level of the connector that attaches the computer to the display monitor. Each application controls its own unique protected output. If the connector becomes unplugged, the next time either application initiates a <em>DxgkDdiOPMGetInformation</em> or <em>DxgkDdiOPMGetCOPPCompatibleInformation</em> request to its protected output, the display miniport driver should return the DXGKMDT_OPM_STATUS_LINK_LOST status flag. </p><p>Assume application A is the first to initiate a call to <em>DxgkDdiOPMGetInformation</em> or <em>DxgkDdiOPMGetCOPPCompatibleInformation</em> on its protected output. Application A then receives the DXGKMDT_OPM_STATUS_LINK_LOST flag and acts accordingly. If application A initiates a subsequent <em>DxgkDdiOPMGetInformation</em> or <em>DxgkDdiOPMGetCOPPCompatibleInformation</em> call, it should not receive the DXGKMDT_OPM_STATUS_LINK_LOST flag, unless the connector becomes unplugged again. When application B initiates a call to <em>DxgkDdiOPMGetInformation</em> or <em>DxgkDdiOPMGetCOPPCompatibleInformation</em> on its protected output, it receives the DXGKMDT_OPM_STATUS_LINK_LOST flag and acts accordingly. Again, application B should not receive the DXGKMDT_OPM_STATUS_LINK_LOST flag again until the connector becomes unplugged again.</p><p>?</p><p>?</p><p>Send</p><p>Build date: 2/23/2012</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_STANDARD_INFORMATION']/*\"/>\t\n            <msdn-id>ff569462</msdn-id>\t\n            <unmanaged>OPM_STANDARD_INFORMATION</unmanaged>\t\n            <unmanaged-short>OPM_STANDARD_INFORMATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.StandardInformation.RandomNumber\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_STANDARD_INFORMATION::rnRandomNumber']/*\"/>\t\n            <unmanaged>OPM_RANDOM_NUMBER rnRandomNumber</unmanaged>\t\n            <unmanaged-short>OPM_RANDOM_NUMBER rnRandomNumber</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.StandardInformation.StatusFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_STANDARD_INFORMATION::ulStatusFlags']/*\"/>\t\n            <unmanaged>unsigned int ulStatusFlags</unmanaged>\t\n            <unmanaged-short>unsigned int ulStatusFlags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.StandardInformation.Information\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_STANDARD_INFORMATION::ulInformation']/*\"/>\t\n            <unmanaged>unsigned int ulInformation</unmanaged>\t\n            <unmanaged-short>unsigned int ulInformation</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.StandardInformation.Reserved\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_STANDARD_INFORMATION::ulReserved']/*\"/>\t\n            <unmanaged>unsigned int ulReserved</unmanaged>\t\n            <unmanaged-short>unsigned int ulReserved</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.OPM.StandardInformation.Reserved2\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='OPM_STANDARD_INFORMATION::ulReserved2']/*\"/>\t\n            <unmanaged>unsigned int ulReserved2</unmanaged>\t\n            <unmanaged-short>unsigned int ulReserved2</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.AsfFlatPicture\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Contains an image that is stored as metadata for a media source. This structure is used as the data item for the <strong>WM/Picture</strong> metadata attribute.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The <strong>WM/Picture</strong> attribute is defined in the Windows Media Format SDK. The attribute contains a picture related to the content, such as album art.</p><p>To get this attribute from a media source, call <strong><see cref=\"M:SharpDX.MediaFoundation.Metadata.GetProperty(System.String,SharpDX.Win32.Variant@)\"/></strong>, passing in the constant g_wszWMPicture for the <em>pwszName</em> parameter. The method retrieves a <strong><see cref=\"T:SharpDX.Win32.Variant\"/></strong> that contains a binary array (VT_BLOB). The layout of the array is as follows:</p><ul> <li><strong><see cref=\"T:SharpDX.MediaFoundation.AsfFlatPicture\"/></strong> structure. </li> <li> Null-terminated wide-character string that contains the MIME type. </li> <li> Null-terminated wide-character string that contains a description. </li> <li> <p>Image data.</p> </li> </ul><p>This format differs from the <strong>WM_PICTURE</strong> structure used in the Windows Media Format SDK. The <strong>WM_PICTURE</strong> structure contains internal references to two strings and the image data. If the structure is copied, these references become invalid. The <strong><see cref=\"T:SharpDX.MediaFoundation.AsfFlatPicture\"/></strong> structure does not contain internal references, so it is safe to copy the structure.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ASF_FLAT_PICTURE']/*\"/>\t\n            <msdn-id>ms696178</msdn-id>\t\n            <unmanaged>ASF_FLAT_PICTURE</unmanaged>\t\n            <unmanaged-short>ASF_FLAT_PICTURE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.AsfFlatPicture.BPictureType\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ASF_FLAT_PICTURE::bPictureType']/*\"/>\t\n            <unmanaged>unsigned char bPictureType</unmanaged>\t\n            <unmanaged-short>unsigned char bPictureType</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.AsfFlatPicture.DwDataLen\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ASF_FLAT_PICTURE::dwDataLen']/*\"/>\t\n            <unmanaged>unsigned int dwDataLen</unmanaged>\t\n            <unmanaged-short>unsigned int dwDataLen</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.AsfFlatSynchronisedLyrics\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Contains an image that is stored as metadata for a media source. This structure is used as the data item for the <strong>WM/Picture</strong> metadata attribute.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The <strong>WM/Picture</strong> attribute is defined in the Windows Media Format SDK. The attribute contains a picture related to the content, such as album art.</p><p>To get this attribute from a media source, call <strong><see cref=\"M:SharpDX.MediaFoundation.Metadata.GetProperty(System.String,SharpDX.Win32.Variant@)\"/></strong>, passing in the constant g_wszWMPicture for the <em>pwszName</em> parameter. The method retrieves a <strong><see cref=\"T:SharpDX.Win32.Variant\"/></strong> that contains a binary array (VT_BLOB). The layout of the array is as follows:</p><ul> <li><strong><see cref=\"T:SharpDX.MediaFoundation.AsfFlatPicture\"/></strong> structure. </li> <li> Null-terminated wide-character string that contains the MIME type. </li> <li> Null-terminated wide-character string that contains a description. </li> <li> <p>Image data.</p> </li> </ul><p>This format differs from the <strong>WM_PICTURE</strong> structure used in the Windows Media Format SDK. The <strong>WM_PICTURE</strong> structure contains internal references to two strings and the image data. If the structure is copied, these references become invalid. The <strong><see cref=\"T:SharpDX.MediaFoundation.AsfFlatPicture\"/></strong> structure does not contain internal references, so it is safe to copy the structure.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ASF_FLAT_SYNCHRONISED_LYRICS']/*\"/>\t\n            <msdn-id>ms696178</msdn-id>\t\n            <unmanaged>ASF_FLAT_SYNCHRONISED_LYRICS</unmanaged>\t\n            <unmanaged-short>ASF_FLAT_SYNCHRONISED_LYRICS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.AsfFlatSynchronisedLyrics.BTimeStampFormat\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ASF_FLAT_SYNCHRONISED_LYRICS::bTimeStampFormat']/*\"/>\t\n            <unmanaged>unsigned char bTimeStampFormat</unmanaged>\t\n            <unmanaged-short>unsigned char bTimeStampFormat</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.AsfFlatSynchronisedLyrics.BContentType\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ASF_FLAT_SYNCHRONISED_LYRICS::bContentType']/*\"/>\t\n            <unmanaged>unsigned char bContentType</unmanaged>\t\n            <unmanaged-short>unsigned char bContentType</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.AsfFlatSynchronisedLyrics.DwLyricsLen\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ASF_FLAT_SYNCHRONISED_LYRICS::dwLyricsLen']/*\"/>\t\n            <unmanaged>unsigned int dwLyricsLen</unmanaged>\t\n            <unmanaged-short>unsigned int dwLyricsLen</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.AsfIndexDescriptor\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Specifies an index for the ASF indexer object. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p> The index object of an ASF file can contain a number of distinct indexes. Each index is identified by the type of index and the stream number. No ASF index object can contain more than one index for a particular combination of stream number and index type.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ASF_INDEX_DESCRIPTOR']/*\"/>\t\n            <msdn-id>ms700100</msdn-id>\t\n            <unmanaged>ASF_INDEX_DESCRIPTOR</unmanaged>\t\n            <unmanaged-short>ASF_INDEX_DESCRIPTOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.AsfIndexDescriptor.Identifier\">\n            <summary>\t\n            <dd> <p> The type of index. Currently this value must be GUID_NULL, which specifies time-based indexing. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ASF_INDEX_DESCRIPTOR::Identifier']/*\"/>\t\n            <msdn-id>ms700100</msdn-id>\t\n            <unmanaged>ASF_INDEX_IDENTIFIER Identifier</unmanaged>\t\n            <unmanaged-short>ASF_INDEX_IDENTIFIER Identifier</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.AsfIndexDescriptor.CPerEntryBytes\">\n            <summary>\t\n            <dd> <p> The stream number to which this structure applies. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ASF_INDEX_DESCRIPTOR::cPerEntryBytes']/*\"/>\t\n            <msdn-id>ms700100</msdn-id>\t\n            <unmanaged>unsigned short cPerEntryBytes</unmanaged>\t\n            <unmanaged-short>unsigned short cPerEntryBytes</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.AsfIndexDescriptor.SzDescription\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ASF_INDEX_DESCRIPTOR::szDescription']/*\"/>\t\n            <unmanaged>wchar_t szDescription[32]</unmanaged>\t\n            <unmanaged-short>wchar_t szDescription</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.AsfIndexDescriptor.DwInterval\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ASF_INDEX_DESCRIPTOR::dwInterval']/*\"/>\t\n            <unmanaged>unsigned int dwInterval</unmanaged>\t\n            <unmanaged-short>unsigned int dwInterval</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.AsfIndexIdentifier\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Specifies an index for the ASF indexer object. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p> The index object of an ASF file can contain a number of distinct indexes. Each index is identified by the type of index and the stream number. No ASF index object can contain more than one index for a particular combination of stream number and index type.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ASF_INDEX_IDENTIFIER']/*\"/>\t\n            <msdn-id>ms700100</msdn-id>\t\n            <unmanaged>ASF_INDEX_IDENTIFIER</unmanaged>\t\n            <unmanaged-short>ASF_INDEX_IDENTIFIER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.AsfIndexIdentifier.GuidIndexType\">\n            <summary>\t\n            <dd> <p> The type of index. Currently this value must be GUID_NULL, which specifies time-based indexing. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ASF_INDEX_IDENTIFIER::guidIndexType']/*\"/>\t\n            <msdn-id>ms700100</msdn-id>\t\n            <unmanaged>GUID guidIndexType</unmanaged>\t\n            <unmanaged-short>GUID guidIndexType</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.AsfIndexIdentifier.WStreamNumber\">\n            <summary>\t\n            <dd> <p> The stream number to which this structure applies. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ASF_INDEX_IDENTIFIER::wStreamNumber']/*\"/>\t\n            <msdn-id>ms700100</msdn-id>\t\n            <unmanaged>unsigned short wStreamNumber</unmanaged>\t\n            <unmanaged-short>unsigned short wStreamNumber</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.AsfMuxStatistics\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Specifies an index for the ASF indexer object. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p> The index object of an ASF file can contain a number of distinct indexes. Each index is identified by the type of index and the stream number. No ASF index object can contain more than one index for a particular combination of stream number and index type.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ASF_MUX_STATISTICS']/*\"/>\t\n            <msdn-id>ms700100</msdn-id>\t\n            <unmanaged>ASF_MUX_STATISTICS</unmanaged>\t\n            <unmanaged-short>ASF_MUX_STATISTICS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.AsfMuxStatistics.CFramesWritten\">\n            <summary>\t\n            <dd> <p> The type of index. Currently this value must be GUID_NULL, which specifies time-based indexing. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ASF_MUX_STATISTICS::cFramesWritten']/*\"/>\t\n            <msdn-id>ms700100</msdn-id>\t\n            <unmanaged>unsigned int cFramesWritten</unmanaged>\t\n            <unmanaged-short>unsigned int cFramesWritten</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.AsfMuxStatistics.CFramesDropped\">\n            <summary>\t\n            <dd> <p> The stream number to which this structure applies. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ASF_MUX_STATISTICS::cFramesDropped']/*\"/>\t\n            <msdn-id>ms700100</msdn-id>\t\n            <unmanaged>unsigned int cFramesDropped</unmanaged>\t\n            <unmanaged-short>unsigned int cFramesDropped</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.AYUVSample\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Contains private data for the <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.VideoDecoder.Execute(SharpDX.MediaFoundation.DirectX.DecodeExecuteParams)\"/></strong> method.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure corresponds to parameters of the <strong>IAMVideoAccelerator::Execute</strong> method in DirectX Video Acceleration (DXVA) version 1.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFAYUVSample']/*\"/>\t\n            <msdn-id>ms696173</msdn-id>\t\n            <unmanaged>MFAYUVSample</unmanaged>\t\n            <unmanaged-short>MFAYUVSample</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.AYUVSample.BCrValue\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFAYUVSample::bCrValue']/*\"/>\t\n            <unmanaged>unsigned char bCrValue</unmanaged>\t\n            <unmanaged-short>unsigned char bCrValue</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.AYUVSample.BCbValue\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFAYUVSample::bCbValue']/*\"/>\t\n            <unmanaged>unsigned char bCbValue</unmanaged>\t\n            <unmanaged-short>unsigned char bCbValue</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.AYUVSample.BYValue\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFAYUVSample::bYValue']/*\"/>\t\n            <unmanaged>unsigned char bYValue</unmanaged>\t\n            <unmanaged-short>unsigned char bYValue</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.AYUVSample.BSampleAlpha8\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFAYUVSample::bSampleAlpha8']/*\"/>\t\n            <unmanaged>unsigned char bSampleAlpha8</unmanaged>\t\n            <unmanaged-short>unsigned char bSampleAlpha8</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.ByteStreamBufferingParameters\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Contains private data for the <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.VideoDecoder.Execute(SharpDX.MediaFoundation.DirectX.DecodeExecuteParams)\"/></strong> method.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure corresponds to parameters of the <strong>IAMVideoAccelerator::Execute</strong> method in DirectX Video Acceleration (DXVA) version 1.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFBYTESTREAM_BUFFERING_PARAMS']/*\"/>\t\n            <msdn-id>ms696173</msdn-id>\t\n            <unmanaged>MFBYTESTREAM_BUFFERING_PARAMS</unmanaged>\t\n            <unmanaged-short>MFBYTESTREAM_BUFFERING_PARAMS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ByteStreamBufferingParameters.CbTotalFileSize\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFBYTESTREAM_BUFFERING_PARAMS::cbTotalFileSize']/*\"/>\t\n            <unmanaged>unsigned longlong cbTotalFileSize</unmanaged>\t\n            <unmanaged-short>unsigned longlong cbTotalFileSize</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ByteStreamBufferingParameters.CbPlayableDataSize\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFBYTESTREAM_BUFFERING_PARAMS::cbPlayableDataSize']/*\"/>\t\n            <unmanaged>unsigned longlong cbPlayableDataSize</unmanaged>\t\n            <unmanaged-short>unsigned longlong cbPlayableDataSize</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ByteStreamBufferingParameters.PrgBuckets\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFBYTESTREAM_BUFFERING_PARAMS::prgBuckets']/*\"/>\t\n            <unmanaged>MF_LEAKY_BUCKET_PAIR* prgBuckets</unmanaged>\t\n            <unmanaged-short>MF_LEAKY_BUCKET_PAIR prgBuckets</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ByteStreamBufferingParameters.CBuckets\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFBYTESTREAM_BUFFERING_PARAMS::cBuckets']/*\"/>\t\n            <unmanaged>unsigned int cBuckets</unmanaged>\t\n            <unmanaged-short>unsigned int cBuckets</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ByteStreamBufferingParameters.QwNetBufferingTime\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFBYTESTREAM_BUFFERING_PARAMS::qwNetBufferingTime']/*\"/>\t\n            <unmanaged>unsigned longlong qwNetBufferingTime</unmanaged>\t\n            <unmanaged-short>unsigned longlong qwNetBufferingTime</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ByteStreamBufferingParameters.QwExtraBufferingTimeDuringSeek\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFBYTESTREAM_BUFFERING_PARAMS::qwExtraBufferingTimeDuringSeek']/*\"/>\t\n            <unmanaged>unsigned longlong qwExtraBufferingTimeDuringSeek</unmanaged>\t\n            <unmanaged-short>unsigned longlong qwExtraBufferingTimeDuringSeek</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ByteStreamBufferingParameters.QwPlayDuration\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFBYTESTREAM_BUFFERING_PARAMS::qwPlayDuration']/*\"/>\t\n            <unmanaged>unsigned longlong qwPlayDuration</unmanaged>\t\n            <unmanaged-short>unsigned longlong qwPlayDuration</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ByteStreamBufferingParameters.DRate\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFBYTESTREAM_BUFFERING_PARAMS::dRate']/*\"/>\t\n            <unmanaged>float dRate</unmanaged>\t\n            <unmanaged-short>float dRate</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.ClockProperties\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> Defines the properties of a clock. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCLOCK_PROPERTIES']/*\"/>\t\n            <msdn-id>ms695206</msdn-id>\t\n            <unmanaged>MFCLOCK_PROPERTIES</unmanaged>\t\n            <unmanaged-short>MFCLOCK_PROPERTIES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ClockProperties.QwCorrelationRate\">\n            <summary>\t\n            <dd> <p> The interval at which the clock correlates its clock time with the system time, in 100-nanosecond units. If the value is zero, the correlation is made whenever the <strong><see cref=\"M:SharpDX.MediaFoundation.Clock.GetCorrelatedTime(System.Int32,System.Int64@,System.Int64@)\"/></strong> method is called. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCLOCK_PROPERTIES::qwCorrelationRate']/*\"/>\t\n            <msdn-id>ms695206</msdn-id>\t\n            <unmanaged>unsigned longlong qwCorrelationRate</unmanaged>\t\n            <unmanaged-short>unsigned longlong qwCorrelationRate</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ClockProperties.GuidClockId\">\n            <summary>\t\n            <dd> <p> The unique identifier of the underlying device that provides the time. If two clocks have the same unique identifier, they are based on the same device. If the underlying device is not shared between two clocks, the value can be <strong>GUID_NULL</strong>. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCLOCK_PROPERTIES::guidClockId']/*\"/>\t\n            <msdn-id>ms695206</msdn-id>\t\n            <unmanaged>GUID guidClockId</unmanaged>\t\n            <unmanaged-short>GUID guidClockId</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ClockProperties.DwClockFlags\">\n            <summary>\t\n            <dd> <p> A bitwise <strong>OR</strong> of flags from the <strong><see cref=\"T:SharpDX.MediaFoundation.ClockRelationalFlags\"/></strong> enumeration. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCLOCK_PROPERTIES::dwClockFlags']/*\"/>\t\n            <msdn-id>ms695206</msdn-id>\t\n            <unmanaged>unsigned int dwClockFlags</unmanaged>\t\n            <unmanaged-short>unsigned int dwClockFlags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ClockProperties.QwClockFrequency\">\n            <summary>\t\n            <dd> <p> The clock frequency in Hz. A value of <strong>MFCLOCK_FREQUENCY_HNS</strong> means that the clock has a frequency of 10 MHz (100-nanosecond ticks), which is the standard <strong>MFTIME</strong> time unit in Media Foundation. If the <strong><see cref=\"M:SharpDX.MediaFoundation.Clock.GetClockCharacteristics(System.Int32@)\"/></strong> method returns the <strong><see cref=\"F:SharpDX.MediaFoundation.ClockCharacteristicsFlags.Frequency10mhz\"/></strong> flag, the value of this field must be <strong>MFCLOCK_FREQUENCY_HNS</strong>. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCLOCK_PROPERTIES::qwClockFrequency']/*\"/>\t\n            <msdn-id>ms695206</msdn-id>\t\n            <unmanaged>unsigned longlong qwClockFrequency</unmanaged>\t\n            <unmanaged-short>unsigned longlong qwClockFrequency</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ClockProperties.DwClockTolerance\">\n            <summary>\t\n            <dd> <p> The amount of inaccuracy that may be present on the clock, in parts per billion (ppb). For example, an inaccuracy of 50 ppb means the clock might drift up to 50 seconds per billion seconds of real time. If the tolerance is not known, the value is <strong>MFCLOCK_TOLERANCE_UNKNOWN</strong>. This constant is equal to 50 parts per million (ppm). </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCLOCK_PROPERTIES::dwClockTolerance']/*\"/>\t\n            <msdn-id>ms695206</msdn-id>\t\n            <unmanaged>unsigned int dwClockTolerance</unmanaged>\t\n            <unmanaged-short>unsigned int dwClockTolerance</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ClockProperties.DwClockJitter\">\n            <summary>\t\n            <dd> <p> The amount of jitter that may be present, in 100-nanosecond units. Jitter is the variation in the frequency due to sampling the underlying clock. Jitter does not include inaccuracies caused by drift, which is reflected in the value of <strong>dwClockTolerance</strong>. </p> <p> For clocks based on a single device, the minimum jitter is the length of the tick period (the inverse of the frequency). For example, if the frequency is 10 Hz, the jitter is 0.1 second, which is 1,000,000 in <strong>MFTIME</strong> units. This value reflects the fact that the clock might be sampled just before the next tick, resulting in a clock time that is one period less than the actual time. If the frequency is greater than 10 MHz, the jitter should be set to 1 (the minimum value). </p> <p> If a clock's underlying hardware device does not directly time stamp the incoming data, the jitter also includes the time required to dispatch the driver's interrupt service routine (ISR). In that case, the expected jitter should include the following values: </p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td><dl> <dt><strong>MFCLOCK_JITTER_ISR</strong></dt> </dl> </td><td> <p> Jitter due to time stamping during the device driver's ISR. </p> </td></tr> <tr><td><dl> <dt><strong>MFCLOCK_JITTER_DPC</strong></dt> </dl> </td><td> <p> Jitter due to time stamping during the deferred procedure call (DPC) processing. </p> </td></tr> <tr><td><dl> <dt><strong>MFCLOCK_JITTER_PASSIVE</strong></dt> </dl> </td><td> <p> Jitter due to dropping to normal thread execution before time stamping. </p> </td></tr> </table> <p>?</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFCLOCK_PROPERTIES::dwClockJitter']/*\"/>\t\n            <msdn-id>ms695206</msdn-id>\t\n            <unmanaged>unsigned int dwClockJitter</unmanaged>\t\n            <unmanaged-short>unsigned int dwClockJitter</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DmoMediaType\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>The <strong><see cref=\"T:SharpDX.MediaFoundation.DmoMediaType\"/></strong> structure describes the format of the data used by a stream in a Microsoft DirectX Media Object (DMO).</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure is identical to the DirectShow <strong><see cref=\"!:SharpDX.Win32.Unsupported.AMMediaType\"/></strong> structure. The <strong>bFixedSizeSamples</strong>, <strong>bTemporalCompression</strong>, and <strong>lSampleSize</strong> members are for compatibility with DirectShow. Other DMO clients are not required to use them.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DMO_MEDIA_TYPE']/*\"/>\t\n            <msdn-id>dd375504</msdn-id>\t\n            <unmanaged>DMO_MEDIA_TYPE</unmanaged>\t\n            <unmanaged-short>DMO_MEDIA_TYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DmoMediaType.Majortype\">\n            <summary>\t\n            <dd> <p>Major type <see cref=\"T:System.Guid\"/> of the stream.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DMO_MEDIA_TYPE::majortype']/*\"/>\t\n            <msdn-id>dd375504</msdn-id>\t\n            <unmanaged>GUID majortype</unmanaged>\t\n            <unmanaged-short>GUID majortype</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DmoMediaType.Subtype\">\n            <summary>\t\n            <dd> <p>Subtype <see cref=\"T:System.Guid\"/> of the stream.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DMO_MEDIA_TYPE::subtype']/*\"/>\t\n            <msdn-id>dd375504</msdn-id>\t\n            <unmanaged>GUID subtype</unmanaged>\t\n            <unmanaged-short>GUID subtype</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DmoMediaType.BFixedSizeSamples\">\n            <summary>\t\n            <dd> <p>If <strong>TRUE</strong>, samples are of a fixed size. This field is informational only. For audio, it is generally set to <strong>TRUE</strong>. For video, it is usually <strong>TRUE</strong> for uncompressed video and <strong><see cref=\"F:SharpDX.Result.False\"/></strong> for compressed video.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DMO_MEDIA_TYPE::bFixedSizeSamples']/*\"/>\t\n            <msdn-id>dd375504</msdn-id>\t\n            <unmanaged>BOOL bFixedSizeSamples</unmanaged>\t\n            <unmanaged-short>BOOL bFixedSizeSamples</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DmoMediaType.BTemporalCompression\">\n            <summary>\t\n            <dd> <p>If <strong>TRUE</strong>, samples are compressed using temporal (interframe) compression. (A value of <strong>TRUE</strong> indicates that not all frames are key frames.) This field is informational only.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DMO_MEDIA_TYPE::bTemporalCompression']/*\"/>\t\n            <msdn-id>dd375504</msdn-id>\t\n            <unmanaged>BOOL bTemporalCompression</unmanaged>\t\n            <unmanaged-short>BOOL bTemporalCompression</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DmoMediaType.LSampleSize\">\n            <summary>\t\n            <dd> <p>Size of the sample in bytes. For compressed data, the value can be zero.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DMO_MEDIA_TYPE::lSampleSize']/*\"/>\t\n            <msdn-id>dd375504</msdn-id>\t\n            <unmanaged>unsigned int lSampleSize</unmanaged>\t\n            <unmanaged-short>unsigned int lSampleSize</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DmoMediaType.Formattype\">\n            <summary>\t\n            <dd> <p><see cref=\"T:System.Guid\"/> specifying the format type. The <strong>pbFormat</strong> member points to the corresponding format structure. Format types include the following.</p> <table> <tr><th>Format type</th><th>Format structure</th></tr> <tr><td><dl> <dt><strong>FORMAT_DvInfo</strong></dt> </dl> </td><td> <p> <strong>DVINFO</strong> </p> </td></tr> <tr><td><dl> <dt><strong>FORMAT_MPEG2Video</strong></dt> </dl> </td><td> <p> <strong><see cref=\"!:SharpDX.MediaFoundation.Mpeg2VideoInformation\"/></strong> </p> </td></tr> <tr><td><dl> <dt><strong>FORMAT_MPEGVideo</strong></dt> </dl> </td><td> <p> <strong><see cref=\"!:SharpDX.MediaFoundation.Mpeg1VideoInformation\"/></strong> </p> </td></tr> <tr><td><dl> <dt><strong>FORMAT_None</strong></dt> </dl> </td><td> <p>None.</p> </td></tr> <tr><td><dl> <dt><strong>FORMAT_VideoInfo</strong></dt> </dl> </td><td> <p> <strong><see cref=\"!:SharpDX.Win32.Unsupported.VideoInfoHeader\"/></strong> </p> </td></tr> <tr><td><dl> <dt><strong>FORMAT_VideoInfo2</strong></dt> </dl> </td><td> <p> <strong><see cref=\"!:SharpDX.MediaFoundation.VideoInformationHeader2\"/></strong> </p> </td></tr> <tr><td><dl> <dt><strong>FORMAT_WaveFormatEx</strong></dt> </dl> </td><td> <p> <strong><see cref=\"T:SharpDX.Multimedia.WaveFormat\"/></strong> </p> </td></tr> </table> <p>?</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DMO_MEDIA_TYPE::formattype']/*\"/>\t\n            <msdn-id>dd375504</msdn-id>\t\n            <unmanaged>GUID formattype</unmanaged>\t\n            <unmanaged-short>GUID formattype</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DmoMediaType.PUnk\">\n            <summary>\t\n            <dd> <p>Not used. Set to <strong><c>null</c></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DMO_MEDIA_TYPE::pUnk']/*\"/>\t\n            <msdn-id>dd375504</msdn-id>\t\n            <unmanaged>IUnknown* pUnk</unmanaged>\t\n            <unmanaged-short>IUnknown pUnk</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DmoMediaType.CbFormat\">\n            <summary>\t\n            <dd> <p>Size of the format block of the media type.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DMO_MEDIA_TYPE::cbFormat']/*\"/>\t\n            <msdn-id>dd375504</msdn-id>\t\n            <unmanaged>unsigned int cbFormat</unmanaged>\t\n            <unmanaged-short>unsigned int cbFormat</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DmoMediaType.PbFormat\">\n            <summary>\t\n            <dd> <p>Pointer to the format structure. The structure type is specified by the <strong>formattype</strong> member. The format structure must be present, unless <strong>formattype</strong> is GUID_NULL or FORMAT_None.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DMO_MEDIA_TYPE::pbFormat']/*\"/>\t\n            <msdn-id>dd375504</msdn-id>\t\n            <unmanaged>unsigned char* pbFormat</unmanaged>\t\n            <unmanaged-short>unsigned char pbFormat</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.DmoOutputDataBuffer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DMO_OUTPUT_DATA_BUFFER']/*\"/>\t\n            <unmanaged>DMO_OUTPUT_DATA_BUFFER</unmanaged>\t\n            <unmanaged-short>DMO_OUTPUT_DATA_BUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DmoOutputDataBuffer.PBuffer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DMO_OUTPUT_DATA_BUFFER::pBuffer']/*\"/>\t\n            <unmanaged>IMediaBuffer* pBuffer</unmanaged>\t\n            <unmanaged-short>IMediaBuffer pBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DmoOutputDataBuffer.DwStatus\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DMO_OUTPUT_DATA_BUFFER::dwStatus']/*\"/>\t\n            <unmanaged>unsigned int dwStatus</unmanaged>\t\n            <unmanaged-short>unsigned int dwStatus</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DmoOutputDataBuffer.RtTimestamp\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DMO_OUTPUT_DATA_BUFFER::rtTimestamp']/*\"/>\t\n            <unmanaged>longlong rtTimestamp</unmanaged>\t\n            <unmanaged-short>longlong rtTimestamp</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.DmoOutputDataBuffer.RtTimelength\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DMO_OUTPUT_DATA_BUFFER::rtTimelength']/*\"/>\t\n            <unmanaged>longlong rtTimelength</unmanaged>\t\n            <unmanaged-short>longlong rtTimelength</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.FolddownMatrix\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Contains coefficients used to transform multichannel audio into a smaller number of audio channels. This process is called <em>fold-down</em>.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>To specify this information in the media type, set the <strong><see cref=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.AudioFolddownMatrix\"/></strong> attribute.</p><p>The ASF media source supports fold-down from six channels (5.1 audio) to two channels (stereo). It gets the information from the g_wszFold6To2Channels3 attribute in the ASF header. This attribute is documented in the Windows Media Format SDK documentation.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFFOLDDOWN_MATRIX']/*\"/>\t\n            <msdn-id>aa369731</msdn-id>\t\n            <unmanaged>MFFOLDDOWN_MATRIX</unmanaged>\t\n            <unmanaged-short>MFFOLDDOWN_MATRIX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.FolddownMatrix.CbSize\">\n            <summary>\t\n            <dd> <p>Size of the structure, in bytes.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFFOLDDOWN_MATRIX::cbSize']/*\"/>\t\n            <msdn-id>aa369731</msdn-id>\t\n            <unmanaged>unsigned int cbSize</unmanaged>\t\n            <unmanaged-short>unsigned int cbSize</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.FolddownMatrix.CSrcChannels\">\n            <summary>\t\n            <dd> <p>Number of source channels.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFFOLDDOWN_MATRIX::cSrcChannels']/*\"/>\t\n            <msdn-id>aa369731</msdn-id>\t\n            <unmanaged>unsigned int cSrcChannels</unmanaged>\t\n            <unmanaged-short>unsigned int cSrcChannels</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.FolddownMatrix.CDstChannels\">\n            <summary>\t\n            <dd> <p>Number of destination channels.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFFOLDDOWN_MATRIX::cDstChannels']/*\"/>\t\n            <msdn-id>aa369731</msdn-id>\t\n            <unmanaged>unsigned int cDstChannels</unmanaged>\t\n            <unmanaged-short>unsigned int cDstChannels</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.FolddownMatrix.DwChannelMask\">\n            <summary>\t\n            <dd> <p>Specifies the assignment of audio channels to speaker positions in the transformed audio. This member is a bitwise <strong>OR</strong> of flags that define the speaker positions. For a list of valid flags, see <strong><see cref=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.AudioChannelMask\"/></strong> attribute.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFFOLDDOWN_MATRIX::dwChannelMask']/*\"/>\t\n            <msdn-id>aa369731</msdn-id>\t\n            <unmanaged>unsigned int dwChannelMask</unmanaged>\t\n            <unmanaged-short>unsigned int dwChannelMask</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.FolddownMatrix.Coeff\">\n            <summary>\t\n            <dd> <p>Array that contains the fold-down coefficients. The number of coefficients is <strong>cSrcChannels</strong>?<strong>cDstChannels</strong>. If the number of coefficients is less than the size of the array, the remaining elements in the array are ignored. For more information about how the coefficients are applied, see Windows Media Audio Professional Codec Features.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFFOLDDOWN_MATRIX::Coeff']/*\"/>\t\n            <msdn-id>aa369731</msdn-id>\t\n            <unmanaged>int Coeff[64]</unmanaged>\t\n            <unmanaged-short>int Coeff</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.InputTrustauthorityAccessAction\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Contains private data for the <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.VideoDecoder.Execute(SharpDX.MediaFoundation.DirectX.DecodeExecuteParams)\"/></strong> method.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure corresponds to parameters of the <strong>IAMVideoAccelerator::Execute</strong> method in DirectX Video Acceleration (DXVA) version 1.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFINPUTTRUSTAUTHORITY_ACCESS_ACTION']/*\"/>\t\n            <msdn-id>ms696173</msdn-id>\t\n            <unmanaged>MFINPUTTRUSTAUTHORITY_ACCESS_ACTION</unmanaged>\t\n            <unmanaged-short>MFINPUTTRUSTAUTHORITY_ACCESS_ACTION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.InputTrustauthorityAccessAction.Action\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFINPUTTRUSTAUTHORITY_ACCESS_ACTION::Action']/*\"/>\t\n            <unmanaged>MFPOLICYMANAGER_ACTION Action</unmanaged>\t\n            <unmanaged-short>MFPOLICYMANAGER_ACTION Action</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.InputTrustauthorityAccessAction.PbTicket\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFINPUTTRUSTAUTHORITY_ACCESS_ACTION::pbTicket']/*\"/>\t\n            <unmanaged>unsigned char* pbTicket</unmanaged>\t\n            <unmanaged-short>unsigned char pbTicket</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.InputTrustauthorityAccessAction.CbTicket\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFINPUTTRUSTAUTHORITY_ACCESS_ACTION::cbTicket']/*\"/>\t\n            <unmanaged>unsigned int cbTicket</unmanaged>\t\n            <unmanaged-short>unsigned int cbTicket</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.InputTrustauthorityAccessParameters\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Contains private data for the <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.VideoDecoder.Execute(SharpDX.MediaFoundation.DirectX.DecodeExecuteParams)\"/></strong> method.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure corresponds to parameters of the <strong>IAMVideoAccelerator::Execute</strong> method in DirectX Video Acceleration (DXVA) version 1.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFINPUTTRUSTAUTHORITY_ACCESS_PARAMS']/*\"/>\t\n            <msdn-id>ms696173</msdn-id>\t\n            <unmanaged>MFINPUTTRUSTAUTHORITY_ACCESS_PARAMS</unmanaged>\t\n            <unmanaged-short>MFINPUTTRUSTAUTHORITY_ACCESS_PARAMS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.InputTrustauthorityAccessParameters.DwSize\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFINPUTTRUSTAUTHORITY_ACCESS_PARAMS::dwSize']/*\"/>\t\n            <unmanaged>unsigned int dwSize</unmanaged>\t\n            <unmanaged-short>unsigned int dwSize</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.InputTrustauthorityAccessParameters.DwVer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFINPUTTRUSTAUTHORITY_ACCESS_PARAMS::dwVer']/*\"/>\t\n            <unmanaged>unsigned int dwVer</unmanaged>\t\n            <unmanaged-short>unsigned int dwVer</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.InputTrustauthorityAccessParameters.CbSignatureOffset\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFINPUTTRUSTAUTHORITY_ACCESS_PARAMS::cbSignatureOffset']/*\"/>\t\n            <unmanaged>unsigned int cbSignatureOffset</unmanaged>\t\n            <unmanaged-short>unsigned int cbSignatureOffset</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.InputTrustauthorityAccessParameters.CbSignatureSize\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFINPUTTRUSTAUTHORITY_ACCESS_PARAMS::cbSignatureSize']/*\"/>\t\n            <unmanaged>unsigned int cbSignatureSize</unmanaged>\t\n            <unmanaged-short>unsigned int cbSignatureSize</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.InputTrustauthorityAccessParameters.CbExtensionOffset\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFINPUTTRUSTAUTHORITY_ACCESS_PARAMS::cbExtensionOffset']/*\"/>\t\n            <unmanaged>unsigned int cbExtensionOffset</unmanaged>\t\n            <unmanaged-short>unsigned int cbExtensionOffset</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.InputTrustauthorityAccessParameters.CbExtensionSize\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFINPUTTRUSTAUTHORITY_ACCESS_PARAMS::cbExtensionSize']/*\"/>\t\n            <unmanaged>unsigned int cbExtensionSize</unmanaged>\t\n            <unmanaged-short>unsigned int cbExtensionSize</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.InputTrustauthorityAccessParameters.CActions\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFINPUTTRUSTAUTHORITY_ACCESS_PARAMS::cActions']/*\"/>\t\n            <unmanaged>unsigned int cActions</unmanaged>\t\n            <unmanaged-short>unsigned int cActions</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.InputTrustauthorityAccessParameters.RgOutputActions\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFINPUTTRUSTAUTHORITY_ACCESS_PARAMS::rgOutputActions']/*\"/>\t\n            <unmanaged>MFINPUTTRUSTAUTHORITY_ACCESS_ACTION rgOutputActions[1]</unmanaged>\t\n            <unmanaged-short>MFINPUTTRUSTAUTHORITY_ACCESS_ACTION rgOutputActions</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.LeakyBucketPair\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Contains private data for the <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.VideoDecoder.Execute(SharpDX.MediaFoundation.DirectX.DecodeExecuteParams)\"/></strong> method.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure corresponds to parameters of the <strong>IAMVideoAccelerator::Execute</strong> method in DirectX Video Acceleration (DXVA) version 1.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_LEAKY_BUCKET_PAIR']/*\"/>\t\n            <msdn-id>ms696173</msdn-id>\t\n            <unmanaged>MF_LEAKY_BUCKET_PAIR</unmanaged>\t\n            <unmanaged-short>MF_LEAKY_BUCKET_PAIR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.LeakyBucketPair.DwBitrate\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_LEAKY_BUCKET_PAIR::dwBitrate']/*\"/>\t\n            <unmanaged>unsigned int dwBitrate</unmanaged>\t\n            <unmanaged-short>unsigned int dwBitrate</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.LeakyBucketPair.MsBufferWindow\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_LEAKY_BUCKET_PAIR::msBufferWindow']/*\"/>\t\n            <unmanaged>unsigned int msBufferWindow</unmanaged>\t\n            <unmanaged-short>unsigned int msBufferWindow</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.Mpeg2dlnasinkstats\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Contains private data for the <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.VideoDecoder.Execute(SharpDX.MediaFoundation.DirectX.DecodeExecuteParams)\"/></strong> method.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure corresponds to parameters of the <strong>IAMVideoAccelerator::Execute</strong> method in DirectX Video Acceleration (DXVA) version 1.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFMPEG2DLNASINKSTATS']/*\"/>\t\n            <msdn-id>ms696173</msdn-id>\t\n            <unmanaged>MFMPEG2DLNASINKSTATS</unmanaged>\t\n            <unmanaged-short>MFMPEG2DLNASINKSTATS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.Mpeg2dlnasinkstats.CBytesWritten\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFMPEG2DLNASINKSTATS::cBytesWritten']/*\"/>\t\n            <unmanaged>unsigned longlong cBytesWritten</unmanaged>\t\n            <unmanaged-short>unsigned longlong cBytesWritten</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.Mpeg2dlnasinkstats.FPAL\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFMPEG2DLNASINKSTATS::fPAL']/*\"/>\t\n            <unmanaged>BOOL fPAL</unmanaged>\t\n            <unmanaged-short>BOOL fPAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.Mpeg2dlnasinkstats.FccVideo\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFMPEG2DLNASINKSTATS::fccVideo']/*\"/>\t\n            <unmanaged>unsigned int fccVideo</unmanaged>\t\n            <unmanaged-short>unsigned int fccVideo</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.Mpeg2dlnasinkstats.DwVideoWidth\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFMPEG2DLNASINKSTATS::dwVideoWidth']/*\"/>\t\n            <unmanaged>unsigned int dwVideoWidth</unmanaged>\t\n            <unmanaged-short>unsigned int dwVideoWidth</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.Mpeg2dlnasinkstats.DwVideoHeight\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFMPEG2DLNASINKSTATS::dwVideoHeight']/*\"/>\t\n            <unmanaged>unsigned int dwVideoHeight</unmanaged>\t\n            <unmanaged-short>unsigned int dwVideoHeight</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.Mpeg2dlnasinkstats.CVideoFramesReceived\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFMPEG2DLNASINKSTATS::cVideoFramesReceived']/*\"/>\t\n            <unmanaged>unsigned longlong cVideoFramesReceived</unmanaged>\t\n            <unmanaged-short>unsigned longlong cVideoFramesReceived</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.Mpeg2dlnasinkstats.CVideoFramesEncoded\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFMPEG2DLNASINKSTATS::cVideoFramesEncoded']/*\"/>\t\n            <unmanaged>unsigned longlong cVideoFramesEncoded</unmanaged>\t\n            <unmanaged-short>unsigned longlong cVideoFramesEncoded</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.Mpeg2dlnasinkstats.CVideoFramesSkipped\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFMPEG2DLNASINKSTATS::cVideoFramesSkipped']/*\"/>\t\n            <unmanaged>unsigned longlong cVideoFramesSkipped</unmanaged>\t\n            <unmanaged-short>unsigned longlong cVideoFramesSkipped</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.Mpeg2dlnasinkstats.CBlackVideoFramesEncoded\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFMPEG2DLNASINKSTATS::cBlackVideoFramesEncoded']/*\"/>\t\n            <unmanaged>unsigned longlong cBlackVideoFramesEncoded</unmanaged>\t\n            <unmanaged-short>unsigned longlong cBlackVideoFramesEncoded</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.Mpeg2dlnasinkstats.CVideoFramesDuplicated\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFMPEG2DLNASINKSTATS::cVideoFramesDuplicated']/*\"/>\t\n            <unmanaged>unsigned longlong cVideoFramesDuplicated</unmanaged>\t\n            <unmanaged-short>unsigned longlong cVideoFramesDuplicated</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.Mpeg2dlnasinkstats.CAudioSamplesPerSec\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFMPEG2DLNASINKSTATS::cAudioSamplesPerSec']/*\"/>\t\n            <unmanaged>unsigned int cAudioSamplesPerSec</unmanaged>\t\n            <unmanaged-short>unsigned int cAudioSamplesPerSec</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.Mpeg2dlnasinkstats.CAudioChannels\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFMPEG2DLNASINKSTATS::cAudioChannels']/*\"/>\t\n            <unmanaged>unsigned int cAudioChannels</unmanaged>\t\n            <unmanaged-short>unsigned int cAudioChannels</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.Mpeg2dlnasinkstats.CAudioBytesReceived\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFMPEG2DLNASINKSTATS::cAudioBytesReceived']/*\"/>\t\n            <unmanaged>unsigned longlong cAudioBytesReceived</unmanaged>\t\n            <unmanaged-short>unsigned longlong cAudioBytesReceived</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.Mpeg2dlnasinkstats.CAudioFramesEncoded\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFMPEG2DLNASINKSTATS::cAudioFramesEncoded']/*\"/>\t\n            <unmanaged>unsigned longlong cAudioFramesEncoded</unmanaged>\t\n            <unmanaged-short>unsigned longlong cAudioFramesEncoded</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.MtArbitraryHeader\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Contains format data for a binary stream in an Advanced Streaming Format (ASF) file.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure is used with the <see cref=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.ArbitraryHeader\"/> media type attribute.</p><p>This structure corresponds to the first 60 bytes of the Type-Specific Data field of the Stream Properties Object, in files where the stream type is ASF_Binary_Media. For more information, see the ASF specification.</p><p>The Format Data field of the Type-Specific Data field is contained in the <see cref=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.ArbitraryFormat\"/> attribute of the media type.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MT_ARBITRARY_HEADER']/*\"/>\t\n            <msdn-id>dd388931</msdn-id>\t\n            <unmanaged>MT_ARBITRARY_HEADER</unmanaged>\t\n            <unmanaged-short>MT_ARBITRARY_HEADER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MtArbitraryHeader.Majortype\">\n            <summary>\t\n            <dd> <p>Major media type. This value is the <see cref=\"T:System.Guid\"/> stored in the Major Media Type field of the Type-Specific Data field of the ASF file. It might not match the major type <see cref=\"T:System.Guid\"/> from the Media Foundation media type. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MT_ARBITRARY_HEADER::majortype']/*\"/>\t\n            <msdn-id>dd388931</msdn-id>\t\n            <unmanaged>GUID majortype</unmanaged>\t\n            <unmanaged-short>GUID majortype</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MtArbitraryHeader.Subtype\">\n            <summary>\t\n            <dd> <p>Media subtype. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MT_ARBITRARY_HEADER::subtype']/*\"/>\t\n            <msdn-id>dd388931</msdn-id>\t\n            <unmanaged>GUID subtype</unmanaged>\t\n            <unmanaged-short>GUID subtype</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MtArbitraryHeader.BFixedSizeSamples\">\n            <summary>\t\n            <dd> <p>If <strong>TRUE</strong>, samples have a fixed size in bytes. Otherwise, samples have variable size.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MT_ARBITRARY_HEADER::bFixedSizeSamples']/*\"/>\t\n            <msdn-id>dd388931</msdn-id>\t\n            <unmanaged>BOOL bFixedSizeSamples</unmanaged>\t\n            <unmanaged-short>BOOL bFixedSizeSamples</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MtArbitraryHeader.BTemporalCompression\">\n            <summary>\t\n            <dd> <p> If <strong>TRUE</strong>, the data in this stream uses temporal compression. Otherwise, samples are independent of each other.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MT_ARBITRARY_HEADER::bTemporalCompression']/*\"/>\t\n            <msdn-id>dd388931</msdn-id>\t\n            <unmanaged>BOOL bTemporalCompression</unmanaged>\t\n            <unmanaged-short>BOOL bTemporalCompression</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MtArbitraryHeader.LSampleSize\">\n            <summary>\t\n            <dd> <p>If <strong>bFixedSizeSamples</strong> is <strong>TRUE</strong>, this member specifies the sample size in bytes. Otherwise, the value is ignored and should be 0.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MT_ARBITRARY_HEADER::lSampleSize']/*\"/>\t\n            <msdn-id>dd388931</msdn-id>\t\n            <unmanaged>unsigned int lSampleSize</unmanaged>\t\n            <unmanaged-short>unsigned int lSampleSize</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MtArbitraryHeader.Formattype\">\n            <summary>\t\n            <dd> <p>Format type <see cref=\"T:System.Guid\"/>. This <see cref=\"T:System.Guid\"/> identifies the structure of the additional format data, which is stored in the  <see cref=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.ArbitraryFormat\"/> attribute of the media type. If no additional format data is present, <strong>formattype</strong> equals GUID_NULL.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MT_ARBITRARY_HEADER::formattype']/*\"/>\t\n            <msdn-id>dd388931</msdn-id>\t\n            <unmanaged>GUID formattype</unmanaged>\t\n            <unmanaged-short>GUID formattype</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.MtCustomVideoPrimaries\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Defines custom color primaries for a video source. The color primaries define how to convert colors from RGB color space to CIE XYZ color space.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure is used with the <strong><see cref=\"F:SharpDX.MediaFoundation.MediaTypeAttributeKeys.CustomVideoPrimaries\"/></strong> attribute.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MT_CUSTOM_VIDEO_PRIMARIES']/*\"/>\t\n            <msdn-id>ms696187</msdn-id>\t\n            <unmanaged>MT_CUSTOM_VIDEO_PRIMARIES</unmanaged>\t\n            <unmanaged-short>MT_CUSTOM_VIDEO_PRIMARIES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MtCustomVideoPrimaries.FRx\">\n            <summary>\t\n            <dd> <p>Red x-coordinate.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MT_CUSTOM_VIDEO_PRIMARIES::fRx']/*\"/>\t\n            <msdn-id>ms696187</msdn-id>\t\n            <unmanaged>float fRx</unmanaged>\t\n            <unmanaged-short>float fRx</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MtCustomVideoPrimaries.FRy\">\n            <summary>\t\n            <dd> <p>Red y-coordinate.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MT_CUSTOM_VIDEO_PRIMARIES::fRy']/*\"/>\t\n            <msdn-id>ms696187</msdn-id>\t\n            <unmanaged>float fRy</unmanaged>\t\n            <unmanaged-short>float fRy</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MtCustomVideoPrimaries.FGx\">\n            <summary>\t\n            <dd> <p>Green x-coordinate.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MT_CUSTOM_VIDEO_PRIMARIES::fGx']/*\"/>\t\n            <msdn-id>ms696187</msdn-id>\t\n            <unmanaged>float fGx</unmanaged>\t\n            <unmanaged-short>float fGx</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MtCustomVideoPrimaries.FGy\">\n            <summary>\t\n            <dd> <p>Green y-coordinate.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MT_CUSTOM_VIDEO_PRIMARIES::fGy']/*\"/>\t\n            <msdn-id>ms696187</msdn-id>\t\n            <unmanaged>float fGy</unmanaged>\t\n            <unmanaged-short>float fGy</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MtCustomVideoPrimaries.FBx\">\n            <summary>\t\n            <dd> <p>Blue x-coordinate.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MT_CUSTOM_VIDEO_PRIMARIES::fBx']/*\"/>\t\n            <msdn-id>ms696187</msdn-id>\t\n            <unmanaged>float fBx</unmanaged>\t\n            <unmanaged-short>float fBx</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MtCustomVideoPrimaries.FBy\">\n            <summary>\t\n            <dd> <p>Blue y-coordinate.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MT_CUSTOM_VIDEO_PRIMARIES::fBy']/*\"/>\t\n            <msdn-id>ms696187</msdn-id>\t\n            <unmanaged>float fBy</unmanaged>\t\n            <unmanaged-short>float fBy</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MtCustomVideoPrimaries.FWx\">\n            <summary>\t\n            <dd> <p>White point x-coordinate.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MT_CUSTOM_VIDEO_PRIMARIES::fWx']/*\"/>\t\n            <msdn-id>ms696187</msdn-id>\t\n            <unmanaged>float fWx</unmanaged>\t\n            <unmanaged-short>float fWx</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.MtCustomVideoPrimaries.FWy\">\n            <summary>\t\n            <dd> <p>White point y-coordinate.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MT_CUSTOM_VIDEO_PRIMARIES::fWy']/*\"/>\t\n            <msdn-id>ms696187</msdn-id>\t\n            <unmanaged>float fWy</unmanaged>\t\n            <unmanaged-short>float fWy</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.NetCredentialManagerGetParam\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Contains private data for the <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.VideoDecoder.Execute(SharpDX.MediaFoundation.DirectX.DecodeExecuteParams)\"/></strong> method.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure corresponds to parameters of the <strong>IAMVideoAccelerator::Execute</strong> method in DirectX Video Acceleration (DXVA) version 1.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFNetCredentialManagerGetParam']/*\"/>\t\n            <msdn-id>ms696173</msdn-id>\t\n            <unmanaged>MFNetCredentialManagerGetParam</unmanaged>\t\n            <unmanaged-short>MFNetCredentialManagerGetParam</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.NetCredentialManagerGetParam.HrOp\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFNetCredentialManagerGetParam::hrOp']/*\"/>\t\n            <unmanaged>HRESULT hrOp</unmanaged>\t\n            <unmanaged-short>HRESULT hrOp</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.NetCredentialManagerGetParam.FAllowLoggedOnUser\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFNetCredentialManagerGetParam::fAllowLoggedOnUser']/*\"/>\t\n            <unmanaged>BOOL fAllowLoggedOnUser</unmanaged>\t\n            <unmanaged-short>BOOL fAllowLoggedOnUser</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.NetCredentialManagerGetParam.FClearTextPackage\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFNetCredentialManagerGetParam::fClearTextPackage']/*\"/>\t\n            <unmanaged>BOOL fClearTextPackage</unmanaged>\t\n            <unmanaged-short>BOOL fClearTextPackage</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.NetCredentialManagerGetParam.PszUrl\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFNetCredentialManagerGetParam::pszUrl']/*\"/>\t\n            <unmanaged>const wchar_t* pszUrl</unmanaged>\t\n            <unmanaged-short>wchar_t pszUrl</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.NetCredentialManagerGetParam.PszSite\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFNetCredentialManagerGetParam::pszSite']/*\"/>\t\n            <unmanaged>const wchar_t* pszSite</unmanaged>\t\n            <unmanaged-short>wchar_t pszSite</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.NetCredentialManagerGetParam.PszRealm\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFNetCredentialManagerGetParam::pszRealm']/*\"/>\t\n            <unmanaged>const wchar_t* pszRealm</unmanaged>\t\n            <unmanaged-short>wchar_t pszRealm</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.NetCredentialManagerGetParam.PszPackage\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFNetCredentialManagerGetParam::pszPackage']/*\"/>\t\n            <unmanaged>const wchar_t* pszPackage</unmanaged>\t\n            <unmanaged-short>wchar_t pszPackage</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.NetCredentialManagerGetParam.NRetries\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFNetCredentialManagerGetParam::nRetries']/*\"/>\t\n            <unmanaged>int nRetries</unmanaged>\t\n            <unmanaged-short>int nRetries</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.Offset\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Specifies a rectangular area within a video frame. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFOffset']/*\"/>\t\n            <msdn-id>ms703850</msdn-id>\t\n            <unmanaged>MFOffset</unmanaged>\t\n            <unmanaged-short>MFOffset</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.Offset.Fract\">\n            <summary>\t\n            <dd> <p> An <strong><see cref=\"T:SharpDX.MediaFoundation.Offset\"/></strong> structure that contains the x-coordinate of the upper-left corner of the rectangle. This coordinate might have a fractional value. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFOffset::fract']/*\"/>\t\n            <msdn-id>ms703850</msdn-id>\t\n            <unmanaged>unsigned short fract</unmanaged>\t\n            <unmanaged-short>unsigned short fract</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.Offset.Value\">\n            <summary>\t\n            <dd> <p> An <strong><see cref=\"T:SharpDX.MediaFoundation.Offset\"/></strong> structure that contains the y-coordinate of the upper-left corner of the rectangle. This coordinate might have a fractional value. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFOffset::value']/*\"/>\t\n            <msdn-id>ms703850</msdn-id>\t\n            <unmanaged>short value</unmanaged>\t\n            <unmanaged-short>short value</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.PAcquireUserCredentialEvent\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Contains private data for the <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.VideoDecoder.Execute(SharpDX.MediaFoundation.DirectX.DecodeExecuteParams)\"/></strong> method.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure corresponds to parameters of the <strong>IAMVideoAccelerator::Execute</strong> method in DirectX Video Acceleration (DXVA) version 1.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_ACQUIRE_USER_CREDENTIAL_EVENT']/*\"/>\t\n            <msdn-id>ms696173</msdn-id>\t\n            <unmanaged>MFP_ACQUIRE_USER_CREDENTIAL_EVENT</unmanaged>\t\n            <unmanaged-short>MFP_ACQUIRE_USER_CREDENTIAL_EVENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PAcquireUserCredentialEvent.Header\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_ACQUIRE_USER_CREDENTIAL_EVENT::header']/*\"/>\t\n            <unmanaged>MFP_EVENT_HEADER header</unmanaged>\t\n            <unmanaged-short>MFP_EVENT_HEADER header</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PAcquireUserCredentialEvent.DwUserData\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_ACQUIRE_USER_CREDENTIAL_EVENT::dwUserData']/*\"/>\t\n            <unmanaged>ULONG_PTR dwUserData</unmanaged>\t\n            <unmanaged-short>ULONG_PTR dwUserData</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PAcquireUserCredentialEvent.FProceedWithAuthentication\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_ACQUIRE_USER_CREDENTIAL_EVENT::fProceedWithAuthentication']/*\"/>\t\n            <unmanaged>BOOL fProceedWithAuthentication</unmanaged>\t\n            <unmanaged-short>BOOL fProceedWithAuthentication</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PAcquireUserCredentialEvent.HrAuthenticationStatus\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_ACQUIRE_USER_CREDENTIAL_EVENT::hrAuthenticationStatus']/*\"/>\t\n            <unmanaged>HRESULT hrAuthenticationStatus</unmanaged>\t\n            <unmanaged-short>HRESULT hrAuthenticationStatus</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PAcquireUserCredentialEvent.PwszURL\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_ACQUIRE_USER_CREDENTIAL_EVENT::pwszURL']/*\"/>\t\n            <unmanaged>const wchar_t* pwszURL</unmanaged>\t\n            <unmanaged-short>wchar_t pwszURL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PAcquireUserCredentialEvent.PwszSite\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_ACQUIRE_USER_CREDENTIAL_EVENT::pwszSite']/*\"/>\t\n            <unmanaged>const wchar_t* pwszSite</unmanaged>\t\n            <unmanaged-short>wchar_t pwszSite</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PAcquireUserCredentialEvent.PwszRealm\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_ACQUIRE_USER_CREDENTIAL_EVENT::pwszRealm']/*\"/>\t\n            <unmanaged>const wchar_t* pwszRealm</unmanaged>\t\n            <unmanaged-short>wchar_t pwszRealm</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PAcquireUserCredentialEvent.PwszPackage\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_ACQUIRE_USER_CREDENTIAL_EVENT::pwszPackage']/*\"/>\t\n            <unmanaged>const wchar_t* pwszPackage</unmanaged>\t\n            <unmanaged-short>wchar_t pwszPackage</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PAcquireUserCredentialEvent.NRetries\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_ACQUIRE_USER_CREDENTIAL_EVENT::nRetries']/*\"/>\t\n            <unmanaged>int nRetries</unmanaged>\t\n            <unmanaged-short>int nRetries</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PAcquireUserCredentialEvent.Flags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_ACQUIRE_USER_CREDENTIAL_EVENT::flags']/*\"/>\t\n            <unmanaged>unsigned int flags</unmanaged>\t\n            <unmanaged-short>unsigned int flags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PAcquireUserCredentialEvent.PCredential\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_ACQUIRE_USER_CREDENTIAL_EVENT::pCredential']/*\"/>\t\n            <unmanaged>IMFNetCredential* pCredential</unmanaged>\t\n            <unmanaged-short>IMFNetCredential pCredential</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.PaletteEntry\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Contains one palette entry in a color table.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This union can be used to represent both RGB palettes and Y'Cb'Cr' palettes. The video format that defines the palette determines which union member should be used.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFPaletteEntry']/*\"/>\t\n            <msdn-id>ms698970</msdn-id>\t\n            <unmanaged>MFPaletteEntry</unmanaged>\t\n            <unmanaged-short>MFPaletteEntry</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PaletteEntry.Argb\">\n            <summary>\t\n            <dd> <p> <strong><see cref=\"T:SharpDX.ColorBGRA\"/></strong> structure that contains an RGB color.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFPaletteEntry::ARGB']/*\"/>\t\n            <msdn-id>ms698970</msdn-id>\t\n            <unmanaged>MFARGB ARGB</unmanaged>\t\n            <unmanaged-short>MFARGB ARGB</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PaletteEntry.AYCbCr\">\n            <summary>\t\n            <dd> <p> <strong><see cref=\"T:SharpDX.MediaFoundation.AYUVSample\"/></strong> structure that contains a Y'Cb'Cr' color.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFPaletteEntry::AYCbCr']/*\"/>\t\n            <msdn-id>ms698970</msdn-id>\t\n            <unmanaged>MFAYUVSample AYCbCr</unmanaged>\t\n            <unmanaged-short>MFAYUVSample AYCbCr</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.PErrorEvent\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Contains private data for the <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.VideoDecoder.Execute(SharpDX.MediaFoundation.DirectX.DecodeExecuteParams)\"/></strong> method.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure corresponds to parameters of the <strong>IAMVideoAccelerator::Execute</strong> method in DirectX Video Acceleration (DXVA) version 1.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_ERROR_EVENT']/*\"/>\t\n            <msdn-id>ms696173</msdn-id>\t\n            <unmanaged>MFP_ERROR_EVENT</unmanaged>\t\n            <unmanaged-short>MFP_ERROR_EVENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PErrorEvent.Header\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_ERROR_EVENT::header']/*\"/>\t\n            <unmanaged>MFP_EVENT_HEADER header</unmanaged>\t\n            <unmanaged-short>MFP_EVENT_HEADER header</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.PEventHeader\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Important</strong>??Deprecated. This API may be removed from future releases of Windows. Applications should use the Media Session for playback.</p><p>Contains information that is common to  every type of MFPlay event.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_EVENT_HEADER']/*\"/>\t\n            <msdn-id>dd375531</msdn-id>\t\n            <unmanaged>MFP_EVENT_HEADER</unmanaged>\t\n            <unmanaged-short>MFP_EVENT_HEADER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PEventHeader.EEventType\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_EVENT_HEADER::eEventType']/*\"/>\t\n            <unmanaged>MFP_EVENT_TYPE eEventType</unmanaged>\t\n            <unmanaged-short>MFP_EVENT_TYPE eEventType</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PEventHeader.HrEvent\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_EVENT_HEADER::hrEvent']/*\"/>\t\n            <unmanaged>HRESULT hrEvent</unmanaged>\t\n            <unmanaged-short>HRESULT hrEvent</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PEventHeader.PMediaPlayer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_EVENT_HEADER::pMediaPlayer']/*\"/>\t\n            <unmanaged>IMFPMediaPlayer* pMediaPlayer</unmanaged>\t\n            <unmanaged-short>IMFPMediaPlayer pMediaPlayer</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PEventHeader.EState\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_EVENT_HEADER::eState']/*\"/>\t\n            <unmanaged>MFP_MEDIAPLAYER_STATE eState</unmanaged>\t\n            <unmanaged-short>MFP_MEDIAPLAYER_STATE eState</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PEventHeader.PPropertyStore\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_EVENT_HEADER::pPropertyStore']/*\"/>\t\n            <unmanaged>IPropertyStore* pPropertyStore</unmanaged>\t\n            <unmanaged-short>IPropertyStore pPropertyStore</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.PFrameStepEvent\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Important</strong>??Deprecated. This API may be removed from future releases of Windows. Applications should use the Media Session for playback.</p><p>Event structure for the <strong><see cref=\"F:SharpDX.MediaFoundation.PEventType.FrameStep\"/></strong> event. This event is sent when the <strong><see cref=\"M:SharpDX.MediaFoundation.PMediaPlayer.FrameStep\"/></strong> method completes.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>To get a reference to this structure, cast the <em>pEventHeader</em> parameter of the <strong><see cref=\"M:SharpDX.MediaFoundation.PMediaPlayerCallback.OnMediaPlayerEvent(SharpDX.MediaFoundation.PEventHeader@)\"/></strong> method.  You can use the <strong>MFP_GET_FRAME_STEP_EVENT</strong> macro for this purpose.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_FRAME_STEP_EVENT']/*\"/>\t\n            <msdn-id>dd375533</msdn-id>\t\n            <unmanaged>MFP_FRAME_STEP_EVENT</unmanaged>\t\n            <unmanaged-short>MFP_FRAME_STEP_EVENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PFrameStepEvent.Header\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_FRAME_STEP_EVENT::header']/*\"/>\t\n            <unmanaged>MFP_EVENT_HEADER header</unmanaged>\t\n            <unmanaged-short>MFP_EVENT_HEADER header</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PFrameStepEvent.PMediaItem\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_FRAME_STEP_EVENT::pMediaItem']/*\"/>\t\n            <unmanaged>IMFPMediaItem* pMediaItem</unmanaged>\t\n            <unmanaged-short>IMFPMediaItem pMediaItem</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.PMediaItemClearedEvent\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Contains private data for the <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.VideoDecoder.Execute(SharpDX.MediaFoundation.DirectX.DecodeExecuteParams)\"/></strong> method.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure corresponds to parameters of the <strong>IAMVideoAccelerator::Execute</strong> method in DirectX Video Acceleration (DXVA) version 1.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_MEDIAITEM_CLEARED_EVENT']/*\"/>\t\n            <msdn-id>ms696173</msdn-id>\t\n            <unmanaged>MFP_MEDIAITEM_CLEARED_EVENT</unmanaged>\t\n            <unmanaged-short>MFP_MEDIAITEM_CLEARED_EVENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PMediaItemClearedEvent.Header\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_MEDIAITEM_CLEARED_EVENT::header']/*\"/>\t\n            <unmanaged>MFP_EVENT_HEADER header</unmanaged>\t\n            <unmanaged-short>MFP_EVENT_HEADER header</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PMediaItemClearedEvent.PMediaItem\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_MEDIAITEM_CLEARED_EVENT::pMediaItem']/*\"/>\t\n            <unmanaged>IMFPMediaItem* pMediaItem</unmanaged>\t\n            <unmanaged-short>IMFPMediaItem pMediaItem</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.PMediaItemCreateDEvent\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Important</strong>??Deprecated. This API may be removed from future releases of Windows. Applications should use the Media Session for playback.</p><p>Event structure for the <strong><see cref=\"F:SharpDX.MediaFoundation.PEventType.MediaItemCreateD\"/></strong> event. This event is sent when the <strong><see cref=\"M:SharpDX.MediaFoundation.PMediaPlayer.CreateMediaItemFromURL(System.String,SharpDX.Bool,System.IntPtr,SharpDX.MediaFoundation.PMediaItem@)\"/></strong> or  <strong><see cref=\"M:SharpDX.MediaFoundation.PMediaPlayer.CreateMediaItemFromObject(SharpDX.ComObject,SharpDX.Bool,System.IntPtr,SharpDX.MediaFoundation.PMediaItem@)\"/></strong> method completes.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>To get a reference to this structure, cast the <em>pEventHeader</em> parameter of the <strong><see cref=\"M:SharpDX.MediaFoundation.PMediaPlayerCallback.OnMediaPlayerEvent(SharpDX.MediaFoundation.PEventHeader@)\"/></strong> method.  You can use the <strong>MFP_GET_MEDIAITEM_CREATED_EVENT</strong> macro for this purpose.</p><p>Media items are created asynchronously. If multiple items are created, the operations can complete in any order, not necessarily in the same order as the method calls. You can use  the <strong>dwUserData</strong> member to identify the items, if you have simultaneous requests pending. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_MEDIAITEM_CREATED_EVENT']/*\"/>\t\n            <msdn-id>dd375560</msdn-id>\t\n            <unmanaged>MFP_MEDIAITEM_CREATED_EVENT</unmanaged>\t\n            <unmanaged-short>MFP_MEDIAITEM_CREATED_EVENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PMediaItemCreateDEvent.Header\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_MEDIAITEM_CREATED_EVENT::header']/*\"/>\t\n            <unmanaged>MFP_EVENT_HEADER header</unmanaged>\t\n            <unmanaged-short>MFP_EVENT_HEADER header</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PMediaItemCreateDEvent.PMediaItem\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_MEDIAITEM_CREATED_EVENT::pMediaItem']/*\"/>\t\n            <unmanaged>IMFPMediaItem* pMediaItem</unmanaged>\t\n            <unmanaged-short>IMFPMediaItem pMediaItem</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PMediaItemCreateDEvent.DwUserData\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_MEDIAITEM_CREATED_EVENT::dwUserData']/*\"/>\t\n            <unmanaged>ULONG_PTR dwUserData</unmanaged>\t\n            <unmanaged-short>ULONG_PTR dwUserData</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.PMediaItemSetEvent\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Important</strong>??Deprecated. This API may be removed from future releases of Windows. Applications should use the Media Session for playback.</p><p>Event structure for the <strong><see cref=\"F:SharpDX.MediaFoundation.PEventType.MediaItemSet\"/></strong> event. This event is sent when the <strong><see cref=\"M:SharpDX.MediaFoundation.PMediaPlayer.SetMediaItem(SharpDX.MediaFoundation.PMediaItem)\"/></strong> method completes.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>To get a reference to this structure, cast the <em>pEventHeader</em> parameter of the <strong><see cref=\"M:SharpDX.MediaFoundation.PMediaPlayerCallback.OnMediaPlayerEvent(SharpDX.MediaFoundation.PEventHeader@)\"/></strong> method.  You can use the <strong>MFP_GET_MEDIAITEM_SET_EVENT</strong> macro for this purpose.</p><p>If one or more streams could not be connected to a media sink, the event property store contains the MFP_PKEY_StreamRenderingResults property. The value of the property is an array of <strong><see cref=\"T:SharpDX.Result\"/></strong> values, indicating which streams were connected successfully.  The event property store can be accessed through the <strong>header.pPropertyStore</strong> member.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_MEDIAITEM_SET_EVENT']/*\"/>\t\n            <msdn-id>dd375561</msdn-id>\t\n            <unmanaged>MFP_MEDIAITEM_SET_EVENT</unmanaged>\t\n            <unmanaged-short>MFP_MEDIAITEM_SET_EVENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PMediaItemSetEvent.Header\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_MEDIAITEM_SET_EVENT::header']/*\"/>\t\n            <unmanaged>MFP_EVENT_HEADER header</unmanaged>\t\n            <unmanaged-short>MFP_EVENT_HEADER header</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PMediaItemSetEvent.PMediaItem\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_MEDIAITEM_SET_EVENT::pMediaItem']/*\"/>\t\n            <unmanaged>IMFPMediaItem* pMediaItem</unmanaged>\t\n            <unmanaged-short>IMFPMediaItem pMediaItem</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.PMfEvent\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p><strong>Important</strong>??Deprecated. This API may be removed from future releases of Windows. Applications should use the Media Session for playback.</p><p>Event structure for the <strong><see cref=\"F:SharpDX.MediaFoundation.PEventType.Mf\"/></strong> event. The MFPlay player object uses this event to forward certain events from the Media Foundation pipeline to the application.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p> To get a reference to this structure, cast the <em>pEventHeader</em> parameter of the <strong><see cref=\"M:SharpDX.MediaFoundation.PMediaPlayerCallback.OnMediaPlayerEvent(SharpDX.MediaFoundation.PEventHeader@)\"/></strong> method. You can use the <strong>MFP_GET_MF_EVENT</strong> macro for this purpose.</p><p>If <strong>MFEventType</strong> is <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.StreamSinkFormatChanged\"/>, the following property may be stored in the event property store, which can be accessed through the <strong>header.pPropertyStore</strong> member.</p><table> <tr><th>Property</th><th>Description</th></tr> <tr><td> MFP_PKEY_StreamIndex </td><td>The index of the stream whose format changed. </td></tr> </table><p>?</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_MF_EVENT']/*\"/>\t\n            <msdn-id>dd375563</msdn-id>\t\n            <unmanaged>MFP_MF_EVENT</unmanaged>\t\n            <unmanaged-short>MFP_MF_EVENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PMfEvent.Header\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_MF_EVENT::header']/*\"/>\t\n            <unmanaged>MFP_EVENT_HEADER header</unmanaged>\t\n            <unmanaged-short>MFP_EVENT_HEADER header</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PMfEvent.MFEventType\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_MF_EVENT::MFEventType']/*\"/>\t\n            <unmanaged>unsigned int MFEventType</unmanaged>\t\n            <unmanaged-short>unsigned int MFEventType</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PMfEvent.PMFMediaEvent\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_MF_EVENT::pMFMediaEvent']/*\"/>\t\n            <unmanaged>IMFMediaEvent* pMFMediaEvent</unmanaged>\t\n            <unmanaged-short>IMFMediaEvent pMFMediaEvent</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PMfEvent.PMediaItem\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_MF_EVENT::pMediaItem']/*\"/>\t\n            <unmanaged>IMFPMediaItem* pMediaItem</unmanaged>\t\n            <unmanaged-short>IMFPMediaItem pMediaItem</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.PPauseEvent\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Contains private data for the <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.VideoDecoder.Execute(SharpDX.MediaFoundation.DirectX.DecodeExecuteParams)\"/></strong> method.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure corresponds to parameters of the <strong>IAMVideoAccelerator::Execute</strong> method in DirectX Video Acceleration (DXVA) version 1.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_PAUSE_EVENT']/*\"/>\t\n            <msdn-id>ms696173</msdn-id>\t\n            <unmanaged>MFP_PAUSE_EVENT</unmanaged>\t\n            <unmanaged-short>MFP_PAUSE_EVENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PPauseEvent.Header\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_PAUSE_EVENT::header']/*\"/>\t\n            <unmanaged>MFP_EVENT_HEADER header</unmanaged>\t\n            <unmanaged-short>MFP_EVENT_HEADER header</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PPauseEvent.PMediaItem\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_PAUSE_EVENT::pMediaItem']/*\"/>\t\n            <unmanaged>IMFPMediaItem* pMediaItem</unmanaged>\t\n            <unmanaged-short>IMFPMediaItem pMediaItem</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.PPlaybackEndedEvent\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Contains private data for the <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.VideoDecoder.Execute(SharpDX.MediaFoundation.DirectX.DecodeExecuteParams)\"/></strong> method.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure corresponds to parameters of the <strong>IAMVideoAccelerator::Execute</strong> method in DirectX Video Acceleration (DXVA) version 1.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_PLAYBACK_ENDED_EVENT']/*\"/>\t\n            <msdn-id>ms696173</msdn-id>\t\n            <unmanaged>MFP_PLAYBACK_ENDED_EVENT</unmanaged>\t\n            <unmanaged-short>MFP_PLAYBACK_ENDED_EVENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PPlaybackEndedEvent.Header\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_PLAYBACK_ENDED_EVENT::header']/*\"/>\t\n            <unmanaged>MFP_EVENT_HEADER header</unmanaged>\t\n            <unmanaged-short>MFP_EVENT_HEADER header</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PPlaybackEndedEvent.PMediaItem\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_PLAYBACK_ENDED_EVENT::pMediaItem']/*\"/>\t\n            <unmanaged>IMFPMediaItem* pMediaItem</unmanaged>\t\n            <unmanaged-short>IMFPMediaItem pMediaItem</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.PPlayEvent\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Contains private data for the <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.VideoDecoder.Execute(SharpDX.MediaFoundation.DirectX.DecodeExecuteParams)\"/></strong> method.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure corresponds to parameters of the <strong>IAMVideoAccelerator::Execute</strong> method in DirectX Video Acceleration (DXVA) version 1.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_PLAY_EVENT']/*\"/>\t\n            <msdn-id>ms696173</msdn-id>\t\n            <unmanaged>MFP_PLAY_EVENT</unmanaged>\t\n            <unmanaged-short>MFP_PLAY_EVENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PPlayEvent.Header\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_PLAY_EVENT::header']/*\"/>\t\n            <unmanaged>MFP_EVENT_HEADER header</unmanaged>\t\n            <unmanaged-short>MFP_EVENT_HEADER header</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PPlayEvent.PMediaItem\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_PLAY_EVENT::pMediaItem']/*\"/>\t\n            <unmanaged>IMFPMediaItem* pMediaItem</unmanaged>\t\n            <unmanaged-short>IMFPMediaItem pMediaItem</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.PPositionSetEvent\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Contains private data for the <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.VideoDecoder.Execute(SharpDX.MediaFoundation.DirectX.DecodeExecuteParams)\"/></strong> method.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure corresponds to parameters of the <strong>IAMVideoAccelerator::Execute</strong> method in DirectX Video Acceleration (DXVA) version 1.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_POSITION_SET_EVENT']/*\"/>\t\n            <msdn-id>ms696173</msdn-id>\t\n            <unmanaged>MFP_POSITION_SET_EVENT</unmanaged>\t\n            <unmanaged-short>MFP_POSITION_SET_EVENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PPositionSetEvent.Header\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_POSITION_SET_EVENT::header']/*\"/>\t\n            <unmanaged>MFP_EVENT_HEADER header</unmanaged>\t\n            <unmanaged-short>MFP_EVENT_HEADER header</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PPositionSetEvent.PMediaItem\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_POSITION_SET_EVENT::pMediaItem']/*\"/>\t\n            <unmanaged>IMFPMediaItem* pMediaItem</unmanaged>\t\n            <unmanaged-short>IMFPMediaItem pMediaItem</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.PRateSetEvent\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Contains private data for the <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.VideoDecoder.Execute(SharpDX.MediaFoundation.DirectX.DecodeExecuteParams)\"/></strong> method.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure corresponds to parameters of the <strong>IAMVideoAccelerator::Execute</strong> method in DirectX Video Acceleration (DXVA) version 1.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_RATE_SET_EVENT']/*\"/>\t\n            <msdn-id>ms696173</msdn-id>\t\n            <unmanaged>MFP_RATE_SET_EVENT</unmanaged>\t\n            <unmanaged-short>MFP_RATE_SET_EVENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PRateSetEvent.Header\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_RATE_SET_EVENT::header']/*\"/>\t\n            <unmanaged>MFP_EVENT_HEADER header</unmanaged>\t\n            <unmanaged-short>MFP_EVENT_HEADER header</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PRateSetEvent.PMediaItem\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_RATE_SET_EVENT::pMediaItem']/*\"/>\t\n            <unmanaged>IMFPMediaItem* pMediaItem</unmanaged>\t\n            <unmanaged-short>IMFPMediaItem pMediaItem</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PRateSetEvent.FlRate\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_RATE_SET_EVENT::flRate']/*\"/>\t\n            <unmanaged>float flRate</unmanaged>\t\n            <unmanaged-short>float flRate</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.PStopEvent\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Contains private data for the <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.VideoDecoder.Execute(SharpDX.MediaFoundation.DirectX.DecodeExecuteParams)\"/></strong> method.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure corresponds to parameters of the <strong>IAMVideoAccelerator::Execute</strong> method in DirectX Video Acceleration (DXVA) version 1.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_STOP_EVENT']/*\"/>\t\n            <msdn-id>ms696173</msdn-id>\t\n            <unmanaged>MFP_STOP_EVENT</unmanaged>\t\n            <unmanaged-short>MFP_STOP_EVENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PStopEvent.Header\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_STOP_EVENT::header']/*\"/>\t\n            <unmanaged>MFP_EVENT_HEADER header</unmanaged>\t\n            <unmanaged-short>MFP_EVENT_HEADER header</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.PStopEvent.PMediaItem\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFP_STOP_EVENT::pMediaItem']/*\"/>\t\n            <unmanaged>IMFPMediaItem* pMediaItem</unmanaged>\t\n            <unmanaged-short>IMFPMediaItem pMediaItem</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.Ratio\">\n            <summary>\t\n            <p>This topic describes how to create a media type that describes an uncompressed video format. For more information about media types generally, see About Media Types.</p><p>To create a complete uncompressed video type, set the following attributes on the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaType\"/></strong> interface reference.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFRatio']/*\"/>\t\n            <msdn-id>ff485865</msdn-id>\t\n            <unmanaged>MFRatio</unmanaged>\t\n            <unmanaged-short>MFRatio</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.Ratio.Numerator\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFRatio::Numerator']/*\"/>\t\n            <unmanaged>unsigned int Numerator</unmanaged>\t\n            <unmanaged-short>unsigned int Numerator</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.Ratio.Denominator\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFRatio::Denominator']/*\"/>\t\n            <unmanaged>unsigned int Denominator</unmanaged>\t\n            <unmanaged-short>unsigned int Denominator</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.RrComponentHashInformation\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Contains information about a revoked component.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFRR_COMPONENT_HASH_INFO']/*\"/>\t\n            <msdn-id>aa376487</msdn-id>\t\n            <unmanaged>MFRR_COMPONENT_HASH_INFO</unmanaged>\t\n            <unmanaged-short>MFRR_COMPONENT_HASH_INFO</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.RrComponentHashInformation.UlReason\">\n            <summary>\t\n            <dd> <p>Specifies the reason for the revocation. The following values are defined.</p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td><dl> <dt><strong>MF_BOOT_DRIVER_VERIFICATION_FAILED</strong></dt> </dl> </td><td> <p>A boot driver could not be verified.</p> </td></tr> <tr><td><dl> <dt><strong>MF_COMPONENT_CERT_REVOKED</strong></dt> </dl> </td><td> <p>A certificate in a trusted component's certificate chain was revoked.</p> </td></tr> <tr><td><dl> <dt><strong>MF_COMPONENT_HS_CERT_REVOKED</strong></dt> </dl> </td><td> <p>The high-security certificate for authenticating the protected environment (PE) was revoked.</p> <p>The high-security certificate is typically used by ITAs that handle high-definition content and next-generation formats such as HD-DVD.</p> </td></tr> <tr><td><dl> <dt><strong>MF_COMPONENT_INVALID_EKU</strong></dt> </dl> </td><td> <p>A certificate's extended key usage (EKU) object is invalid.</p> </td></tr> <tr><td><dl> <dt><strong>MF_COMPONENT_INVALID_ROOT</strong></dt> </dl> </td><td> <p>The root certificate is not valid.</p> </td></tr> <tr><td><dl> <dt><strong>MF_COMPONENT_LS_CERT_REVOKED</strong></dt> </dl> </td><td> <p>The low-security certificate for authenticating the PE was revoked.</p> <p>The low-security certificate is typically used by ITAs that handle standard-definition content and current-generation formats.</p> </td></tr> <tr><td><dl> <dt><strong>MF_COMPONENT_REVOKED</strong></dt> </dl> </td><td> <p>A trusted component was revoked.</p> </td></tr> <tr><td><dl> <dt><strong>MF_GRL_ABSENT</strong></dt> </dl> </td><td> <p>The GRL was not found.</p> </td></tr> <tr><td><dl> <dt><strong>MF_GRL_LOAD_FAILED</strong></dt> </dl> </td><td> <p>Could not load the global revocation list (GRL).</p> </td></tr> <tr><td><dl> <dt><strong>MF_INVALID_GRL_SIGNATURE</strong></dt> </dl> </td><td> <p>The GRL signature is invalid.</p> </td></tr> <tr><td><dl> <dt><strong>MF_MINCRYPT_FAILURE</strong></dt> </dl> </td><td> <p>A certificate chain was not well-formed, or a boot driver is unsigned or is signed with an untrusted certificate.</p> </td></tr> <tr><td><dl> <dt><strong>MF_TEST_SIGNED_COMPONENT_LOADING</strong></dt> </dl> </td><td> <p>A component was signed by a test certificate.</p> </td></tr> </table> <p>?</p> <p>In addition, one of the following flags might be present, indicating the type of component that failed to load.</p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td><dl> <dt><strong>MF_USER_MODE_COMPONENT_LOAD</strong></dt> </dl> </td><td> <p>User-mode component.</p> </td></tr> <tr><td><dl> <dt><strong>MF_KERNEL_MODE_COMPONENT_LOAD</strong></dt> </dl> </td><td> <p>Kernel-mode component.</p> </td></tr> </table> <p>?</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFRR_COMPONENT_HASH_INFO::ulReason']/*\"/>\t\n            <msdn-id>aa376487</msdn-id>\t\n            <unmanaged>unsigned int ulReason</unmanaged>\t\n            <unmanaged-short>unsigned int ulReason</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.RrComponentHashInformation.RgHeaderHash\">\n            <summary>\t\n            <dd> <p>Contains a hash of the file header.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFRR_COMPONENT_HASH_INFO::rgHeaderHash']/*\"/>\t\n            <msdn-id>aa376487</msdn-id>\t\n            <unmanaged>wchar_t rgHeaderHash[43]</unmanaged>\t\n            <unmanaged-short>wchar_t rgHeaderHash</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.RrComponentHashInformation.RgPublicKeyHash\">\n            <summary>\t\n            <dd> <p>Contains a hash of the public key in the component's certificate.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFRR_COMPONENT_HASH_INFO::rgPublicKeyHash']/*\"/>\t\n            <msdn-id>aa376487</msdn-id>\t\n            <unmanaged>wchar_t rgPublicKeyHash[43]</unmanaged>\t\n            <unmanaged-short>wchar_t rgPublicKeyHash</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.RrComponentHashInformation.WszName\">\n            <summary>\t\n            <dd> <p>File name of the revoked component.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFRR_COMPONENT_HASH_INFO::wszName']/*\"/>\t\n            <msdn-id>aa376487</msdn-id>\t\n            <unmanaged>wchar_t wszName[260]</unmanaged>\t\n            <unmanaged-short>wchar_t wszName</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.RrComponents\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Contains information about one or more revoked components.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFRR_COMPONENTS']/*\"/>\t\n            <msdn-id>aa375568</msdn-id>\t\n            <unmanaged>MFRR_COMPONENTS</unmanaged>\t\n            <unmanaged-short>MFRR_COMPONENTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.RrComponents.DwRRInfoVersion\">\n            <summary>\t\n            <dd> <p>Revocation information version.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFRR_COMPONENTS::dwRRInfoVersion']/*\"/>\t\n            <msdn-id>aa375568</msdn-id>\t\n            <unmanaged>unsigned int dwRRInfoVersion</unmanaged>\t\n            <unmanaged-short>unsigned int dwRRInfoVersion</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.RrComponents.DwRRComponents\">\n            <summary>\t\n            <dd> <p>Number of elements in the <strong>pRRComponents</strong> array.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFRR_COMPONENTS::dwRRComponents']/*\"/>\t\n            <msdn-id>aa375568</msdn-id>\t\n            <unmanaged>unsigned int dwRRComponents</unmanaged>\t\n            <unmanaged-short>unsigned int dwRRComponents</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.RrComponents.PRRComponents\">\n            <summary>\t\n            <dd> <p>Array of <strong><see cref=\"T:SharpDX.MediaFoundation.RrComponentHashInformation\"/></strong> structures.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFRR_COMPONENTS::pRRComponents']/*\"/>\t\n            <msdn-id>aa375568</msdn-id>\t\n            <unmanaged>MFRR_COMPONENT_HASH_INFO* pRRComponents</unmanaged>\t\n            <unmanaged-short>MFRR_COMPONENT_HASH_INFO pRRComponents</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.SinkWriterStatistics\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Contains statistics about the performance of the sink writer.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_SINK_WRITER_STATISTICS']/*\"/>\t\n            <msdn-id>dd375769</msdn-id>\t\n            <unmanaged>MF_SINK_WRITER_STATISTICS</unmanaged>\t\n            <unmanaged-short>MF_SINK_WRITER_STATISTICS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.SinkWriterStatistics.Cb\">\n            <summary>\t\n            <dd> <p>The size of the structure, in bytes.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_SINK_WRITER_STATISTICS::cb']/*\"/>\t\n            <msdn-id>dd375769</msdn-id>\t\n            <unmanaged>unsigned int cb</unmanaged>\t\n            <unmanaged-short>unsigned int cb</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.SinkWriterStatistics.LlLastTimestampReceived\">\n            <summary>\t\n            <dd> <p>The time stamp of the most recent sample given to the sink writer. The sink writer updates this value each time the application calls <strong><see cref=\"M:SharpDX.MediaFoundation.SinkWriter.WriteSample(System.Int32,SharpDX.MediaFoundation.Sample)\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_SINK_WRITER_STATISTICS::llLastTimestampReceived']/*\"/>\t\n            <msdn-id>dd375769</msdn-id>\t\n            <unmanaged>longlong llLastTimestampReceived</unmanaged>\t\n            <unmanaged-short>longlong llLastTimestampReceived</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.SinkWriterStatistics.LlLastTimestampEncoded\">\n            <summary>\t\n            <dd> <p>The time stamp of the most recent sample to be encoded. The sink writer updates this value whenever it calls <strong><see cref=\"M:SharpDX.MediaFoundation.Transform.ProcessOutput(SharpDX.MediaFoundation.TransformProcessOutputFlags,System.Int32,SharpDX.MediaFoundation.TOutputDataBuffer,SharpDX.MediaFoundation.TransformProcessOutputStatus@)\"/></strong> on the encoder.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_SINK_WRITER_STATISTICS::llLastTimestampEncoded']/*\"/>\t\n            <msdn-id>dd375769</msdn-id>\t\n            <unmanaged>longlong llLastTimestampEncoded</unmanaged>\t\n            <unmanaged-short>longlong llLastTimestampEncoded</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.SinkWriterStatistics.LlLastTimestampProcessed\">\n            <summary>\t\n            <dd> <p>The time stamp of the most recent sample given to the media sink. The sink writer updates this value whenever it calls <strong><see cref=\"M:SharpDX.MediaFoundation.StreamSink.ProcessSample(SharpDX.MediaFoundation.Sample)\"/></strong> on the media sink.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_SINK_WRITER_STATISTICS::llLastTimestampProcessed']/*\"/>\t\n            <msdn-id>dd375769</msdn-id>\t\n            <unmanaged>longlong llLastTimestampProcessed</unmanaged>\t\n            <unmanaged-short>longlong llLastTimestampProcessed</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.SinkWriterStatistics.LlLastStreamTickReceived\">\n            <summary>\t\n            <dd> <p>The time stamp of the most recent stream tick. The sink writer updates this value whenever the application calls <strong><see cref=\"M:SharpDX.MediaFoundation.SinkWriter.SendStreamTick(System.Int32,System.Int64)\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_SINK_WRITER_STATISTICS::llLastStreamTickReceived']/*\"/>\t\n            <msdn-id>dd375769</msdn-id>\t\n            <unmanaged>longlong llLastStreamTickReceived</unmanaged>\t\n            <unmanaged-short>longlong llLastStreamTickReceived</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.SinkWriterStatistics.LlLastSinkSampleRequest\">\n            <summary>\t\n            <dd> <p>The system time of the most recent sample request from the media sink. The sink writer updates this value whenever it receives an <see cref=\"F:SharpDX.MediaFoundation.MediaEventTypes.StreamSinkRequestSample\"/> event from the media sink. The value is the current system time.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_SINK_WRITER_STATISTICS::llLastSinkSampleRequest']/*\"/>\t\n            <msdn-id>dd375769</msdn-id>\t\n            <unmanaged>longlong llLastSinkSampleRequest</unmanaged>\t\n            <unmanaged-short>longlong llLastSinkSampleRequest</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.SinkWriterStatistics.QwNumSamplesReceived\">\n            <summary>\t\n            <dd> <p>The number of samples received.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_SINK_WRITER_STATISTICS::qwNumSamplesReceived']/*\"/>\t\n            <msdn-id>dd375769</msdn-id>\t\n            <unmanaged>unsigned longlong qwNumSamplesReceived</unmanaged>\t\n            <unmanaged-short>unsigned longlong qwNumSamplesReceived</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.SinkWriterStatistics.QwNumSamplesEncoded\">\n            <summary>\t\n            <dd> <p>The number of samples encoded.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_SINK_WRITER_STATISTICS::qwNumSamplesEncoded']/*\"/>\t\n            <msdn-id>dd375769</msdn-id>\t\n            <unmanaged>unsigned longlong qwNumSamplesEncoded</unmanaged>\t\n            <unmanaged-short>unsigned longlong qwNumSamplesEncoded</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.SinkWriterStatistics.QwNumSamplesProcessed\">\n            <summary>\t\n            <dd> <p>The number of samples given to the media sink.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_SINK_WRITER_STATISTICS::qwNumSamplesProcessed']/*\"/>\t\n            <msdn-id>dd375769</msdn-id>\t\n            <unmanaged>unsigned longlong qwNumSamplesProcessed</unmanaged>\t\n            <unmanaged-short>unsigned longlong qwNumSamplesProcessed</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.SinkWriterStatistics.QwNumStreamTicksReceived\">\n            <summary>\t\n            <dd> <p>The number of stream ticks received.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_SINK_WRITER_STATISTICS::qwNumStreamTicksReceived']/*\"/>\t\n            <msdn-id>dd375769</msdn-id>\t\n            <unmanaged>unsigned longlong qwNumStreamTicksReceived</unmanaged>\t\n            <unmanaged-short>unsigned longlong qwNumStreamTicksReceived</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.SinkWriterStatistics.DwByteCountQueued\">\n            <summary>\t\n            <dd> <p>The amount of data, in bytes, currently waiting to be processed. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_SINK_WRITER_STATISTICS::dwByteCountQueued']/*\"/>\t\n            <msdn-id>dd375769</msdn-id>\t\n            <unmanaged>unsigned int dwByteCountQueued</unmanaged>\t\n            <unmanaged-short>unsigned int dwByteCountQueued</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.SinkWriterStatistics.QwByteCountProcessed\">\n            <summary>\t\n            <dd> <p>The total amount of data, in bytes, that has been sent to the media sink.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_SINK_WRITER_STATISTICS::qwByteCountProcessed']/*\"/>\t\n            <msdn-id>dd375769</msdn-id>\t\n            <unmanaged>unsigned longlong qwByteCountProcessed</unmanaged>\t\n            <unmanaged-short>unsigned longlong qwByteCountProcessed</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.SinkWriterStatistics.DwNumOutstandingSinkSampleRequests\">\n            <summary>\t\n            <dd> <p>The number of pending sample requests.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_SINK_WRITER_STATISTICS::dwNumOutstandingSinkSampleRequests']/*\"/>\t\n            <msdn-id>dd375769</msdn-id>\t\n            <unmanaged>unsigned int dwNumOutstandingSinkSampleRequests</unmanaged>\t\n            <unmanaged-short>unsigned int dwNumOutstandingSinkSampleRequests</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.SinkWriterStatistics.DwAverageSampleRateReceived\">\n            <summary>\t\n            <dd> <p>The average rate, in media samples per 100-nanoseconds, at which the application sent samples to the sink writer.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_SINK_WRITER_STATISTICS::dwAverageSampleRateReceived']/*\"/>\t\n            <msdn-id>dd375769</msdn-id>\t\n            <unmanaged>unsigned int dwAverageSampleRateReceived</unmanaged>\t\n            <unmanaged-short>unsigned int dwAverageSampleRateReceived</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.SinkWriterStatistics.DwAverageSampleRateEncoded\">\n            <summary>\t\n            <dd> <p>The average rate, in media samples per 100-nanoseconds, at which the sink writer sent samples to the encoder.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_SINK_WRITER_STATISTICS::dwAverageSampleRateEncoded']/*\"/>\t\n            <msdn-id>dd375769</msdn-id>\t\n            <unmanaged>unsigned int dwAverageSampleRateEncoded</unmanaged>\t\n            <unmanaged-short>unsigned int dwAverageSampleRateEncoded</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.SinkWriterStatistics.DwAverageSampleRateProcessed\">\n            <summary>\t\n            <dd> <p>The average rate, in media samples per 100-nanoseconds, at which the sink writer sent samples to the media sink.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_SINK_WRITER_STATISTICS::dwAverageSampleRateProcessed']/*\"/>\t\n            <msdn-id>dd375769</msdn-id>\t\n            <unmanaged>unsigned int dwAverageSampleRateProcessed</unmanaged>\t\n            <unmanaged-short>unsigned int dwAverageSampleRateProcessed</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.StreamMedium\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Contains private data for the <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.VideoDecoder.Execute(SharpDX.MediaFoundation.DirectX.DecodeExecuteParams)\"/></strong> method.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure corresponds to parameters of the <strong>IAMVideoAccelerator::Execute</strong> method in DirectX Video Acceleration (DXVA) version 1.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='STREAM_MEDIUM']/*\"/>\t\n            <msdn-id>ms696173</msdn-id>\t\n            <unmanaged>STREAM_MEDIUM</unmanaged>\t\n            <unmanaged-short>STREAM_MEDIUM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.StreamMedium.GidMedium\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='STREAM_MEDIUM::gidMedium']/*\"/>\t\n            <unmanaged>GUID gidMedium</unmanaged>\t\n            <unmanaged-short>GUID gidMedium</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.StreamMedium.UnMediumInstance\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='STREAM_MEDIUM::unMediumInstance']/*\"/>\t\n            <unmanaged>unsigned int unMediumInstance</unmanaged>\t\n            <unmanaged-short>unsigned int unMediumInstance</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.TInputStreamInformation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFT_INPUT_STREAM_INFO']/*\"/>\t\n            <unmanaged>MFT_INPUT_STREAM_INFO</unmanaged>\t\n            <unmanaged-short>MFT_INPUT_STREAM_INFO</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TInputStreamInformation.HnsMaxLatency\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFT_INPUT_STREAM_INFO::hnsMaxLatency']/*\"/>\t\n            <unmanaged>longlong hnsMaxLatency</unmanaged>\t\n            <unmanaged-short>longlong hnsMaxLatency</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TInputStreamInformation.DwFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFT_INPUT_STREAM_INFO::dwFlags']/*\"/>\t\n            <unmanaged>unsigned int dwFlags</unmanaged>\t\n            <unmanaged-short>unsigned int dwFlags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TInputStreamInformation.CbSize\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFT_INPUT_STREAM_INFO::cbSize']/*\"/>\t\n            <unmanaged>unsigned int cbSize</unmanaged>\t\n            <unmanaged-short>unsigned int cbSize</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TInputStreamInformation.CbMaxLookahead\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFT_INPUT_STREAM_INFO::cbMaxLookahead']/*\"/>\t\n            <unmanaged>unsigned int cbMaxLookahead</unmanaged>\t\n            <unmanaged-short>unsigned int cbMaxLookahead</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TInputStreamInformation.CbAlignment\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFT_INPUT_STREAM_INFO::cbAlignment']/*\"/>\t\n            <unmanaged>unsigned int cbAlignment</unmanaged>\t\n            <unmanaged-short>unsigned int cbAlignment</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.ToponodeAttributeUpdate\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Contains private data for the <strong><see cref=\"M:SharpDX.MediaFoundation.DirectX.VideoDecoder.Execute(SharpDX.MediaFoundation.DirectX.DecodeExecuteParams)\"/></strong> method.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure corresponds to parameters of the <strong>IAMVideoAccelerator::Execute</strong> method in DirectX Video Acceleration (DXVA) version 1.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFTOPONODE_ATTRIBUTE_UPDATE']/*\"/>\t\n            <msdn-id>ms696173</msdn-id>\t\n            <unmanaged>MFTOPONODE_ATTRIBUTE_UPDATE</unmanaged>\t\n            <unmanaged-short>MFTOPONODE_ATTRIBUTE_UPDATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ToponodeAttributeUpdate.NodeId\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFTOPONODE_ATTRIBUTE_UPDATE::NodeId']/*\"/>\t\n            <unmanaged>unsigned longlong NodeId</unmanaged>\t\n            <unmanaged-short>unsigned longlong NodeId</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ToponodeAttributeUpdate.GuidAttributeKey\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFTOPONODE_ATTRIBUTE_UPDATE::guidAttributeKey']/*\"/>\t\n            <unmanaged>GUID guidAttributeKey</unmanaged>\t\n            <unmanaged-short>GUID guidAttributeKey</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ToponodeAttributeUpdate.AttrType\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFTOPONODE_ATTRIBUTE_UPDATE::attrType']/*\"/>\t\n            <unmanaged>MF_ATTRIBUTE_TYPE attrType</unmanaged>\t\n            <unmanaged-short>MF_ATTRIBUTE_TYPE attrType</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ToponodeAttributeUpdate.U32\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFTOPONODE_ATTRIBUTE_UPDATE::u32']/*\"/>\t\n            <unmanaged>unsigned int u32</unmanaged>\t\n            <unmanaged-short>unsigned int u32</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ToponodeAttributeUpdate.U64\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFTOPONODE_ATTRIBUTE_UPDATE::u64']/*\"/>\t\n            <unmanaged>unsigned longlong u64</unmanaged>\t\n            <unmanaged-short>unsigned longlong u64</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ToponodeAttributeUpdate.D\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFTOPONODE_ATTRIBUTE_UPDATE::d']/*\"/>\t\n            <unmanaged>double d</unmanaged>\t\n            <unmanaged-short>double d</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.TOutputDataBuffer\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Contains information about an output buffer for a Media Foundation transform. This structure is used in the <strong><see cref=\"M:SharpDX.MediaFoundation.Transform.ProcessOutput(SharpDX.MediaFoundation.TransformProcessOutputFlags,System.Int32,SharpDX.MediaFoundation.TOutputDataBuffer,SharpDX.MediaFoundation.TransformProcessOutputStatus@)\"/></strong> method.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>You must provide an <strong><see cref=\"T:SharpDX.MediaFoundation.TOutputDataBuffer\"/></strong> structure for each selected output stream.</p><p>MFTs can support two different allocation models for output samples:</p><ul> <li> The MFT allocates the output sample. </li> <li> The client allocates the output sample. </li> </ul><p>To find which model the MFT supports for a given output stream, call <strong><see cref=\"M:SharpDX.MediaFoundation.Transform.GetOutputStreamInfo(System.Int32,SharpDX.MediaFoundation.TOutputStreamInformation@)\"/></strong> and check the value of <strong>dwFlags</strong>.</p><table> <tr><th>Flag</th><th>Allocation Model</th></tr> <tr><td><see cref=\"F:SharpDX.MediaFoundation.MftOutputStreamInformationFlags.MftOutputStreamProvidesSamples\"/></td><td>The MFT allocates the output samples for the stream. Set <strong>pSample</strong> to <strong><c>null</c></strong> for this stream.</td></tr> <tr><td><see cref=\"F:SharpDX.MediaFoundation.MftOutputStreamInformationFlags.MftOutputStreamCanProvideSamples\"/></td><td>The MFT supports both allocation models.</td></tr> <tr><td>Neither (default)</td><td>The client must allocate the output samples for the stream.</td></tr> </table><p>?</p><p>The behavior of <strong>ProcessOutput</strong> depends on the initial value of <strong>pSample</strong> and the value of the <em>dwFlags</em> parameter in the <strong>ProcessOutput</strong> method.</p><ul> <li> <p>If <strong>pSample</strong> is <strong><c>null</c></strong> and <em>dwFlags</em> contains the <see cref=\"F:SharpDX.MediaFoundation.TransformProcessOutputFlags.MftProcessOutputDiscardWhenNoBuffer\"/> flag, the MFT discards the output data.</p> <p>Restriction: This output stream must have the <see cref=\"F:SharpDX.MediaFoundation.MftOutputStreamInformationFlags.MftOutputStreamDiscardable\"/> or <see cref=\"F:SharpDX.MediaFoundation.MftOutputStreamInformationFlags.MftOutputStreamLazyRead\"/> flag. (To get the flags for the output stream, call the <strong><see cref=\"M:SharpDX.MediaFoundation.Transform.GetOutputStreamInfo(System.Int32,SharpDX.MediaFoundation.TOutputStreamInformation@)\"/></strong> method.)</p> </li> <li> <p>If <strong>pSample</strong> is <strong><c>null</c></strong> and <em>dwFlags</em> does not contain the <see cref=\"F:SharpDX.MediaFoundation.TransformProcessOutputFlags.MftProcessOutputDiscardWhenNoBuffer\"/>, the MFT provides a sample for the output data. The MFT sets <strong>pSample</strong> to point to the sample that it provides. The MFT can either allocate a new sample or re-use an input sample.</p> <p>Restriction: This output stream must have the <see cref=\"F:SharpDX.MediaFoundation.MftOutputStreamInformationFlags.MftOutputStreamProvidesSamples\"/> or <see cref=\"F:SharpDX.MediaFoundation.MftOutputStreamInformationFlags.MftOutputStreamCanProvideSamples\"/> flag.</p> </li> <li> <p>If <strong>pSample</strong> is non-<strong><c>null</c></strong>, the MFT uses the sample provided by the caller.</p> <p>Restriction: This output stream must not have the <see cref=\"F:SharpDX.MediaFoundation.MftOutputStreamInformationFlags.MftOutputStreamProvidesSamples\"/> flag.</p> </li> </ul><p>Any other combinations are invalid and cause <strong>ProcessOutput</strong> to return E_INVALIDARG.</p><p>Each call to <strong>ProcessOutput</strong> can produce zero or more events and up to one sample per output stream.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFT_OUTPUT_DATA_BUFFER']/*\"/>\t\n            <msdn-id>ms697247</msdn-id>\t\n            <unmanaged>MFT_OUTPUT_DATA_BUFFER</unmanaged>\t\n            <unmanaged-short>MFT_OUTPUT_DATA_BUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TOutputDataBuffer.DwStreamID\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFT_OUTPUT_DATA_BUFFER::dwStreamID']/*\"/>\t\n            <unmanaged>unsigned int dwStreamID</unmanaged>\t\n            <unmanaged-short>unsigned int dwStreamID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TOutputDataBuffer.PSample\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFT_OUTPUT_DATA_BUFFER::pSample']/*\"/>\t\n            <unmanaged>IMFSample* pSample</unmanaged>\t\n            <unmanaged-short>IMFSample pSample</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TOutputDataBuffer.DwStatus\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFT_OUTPUT_DATA_BUFFER::dwStatus']/*\"/>\t\n            <unmanaged>unsigned int dwStatus</unmanaged>\t\n            <unmanaged-short>unsigned int dwStatus</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TOutputDataBuffer.PEvents\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFT_OUTPUT_DATA_BUFFER::pEvents']/*\"/>\t\n            <unmanaged>IMFCollection* pEvents</unmanaged>\t\n            <unmanaged-short>IMFCollection pEvents</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.TOutputStreamInformation\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Contains information about an output stream on a Media Foundation transform (MFT). To get these values, call <strong><see cref=\"M:SharpDX.MediaFoundation.Transform.GetOutputStreamInfo(System.Int32,SharpDX.MediaFoundation.TOutputStreamInformation@)\"/></strong>.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Before the media types are set, the only values that should be considered valid is the <see cref=\"F:SharpDX.MediaFoundation.MftOutputStreamInformationFlags.MftOutputStreamOptional\"/> flag in the <strong>dwFlags</strong> member. This flag indicates that the stream is optional and does not require a media type.</p><p>After you set a media type on all of the input and output streams (not including optional streams), all of the values returned by the <strong>GetOutputStreamInfo</strong> method are valid. They might change if you set different media types.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFT_OUTPUT_STREAM_INFO']/*\"/>\t\n            <msdn-id>ms696974</msdn-id>\t\n            <unmanaged>MFT_OUTPUT_STREAM_INFO</unmanaged>\t\n            <unmanaged-short>MFT_OUTPUT_STREAM_INFO</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TOutputStreamInformation.DwFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFT_OUTPUT_STREAM_INFO::dwFlags']/*\"/>\t\n            <unmanaged>unsigned int dwFlags</unmanaged>\t\n            <unmanaged-short>unsigned int dwFlags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TOutputStreamInformation.CbSize\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFT_OUTPUT_STREAM_INFO::cbSize']/*\"/>\t\n            <unmanaged>unsigned int cbSize</unmanaged>\t\n            <unmanaged-short>unsigned int cbSize</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TOutputStreamInformation.CbAlignment\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFT_OUTPUT_STREAM_INFO::cbAlignment']/*\"/>\t\n            <unmanaged>unsigned int cbAlignment</unmanaged>\t\n            <unmanaged-short>unsigned int cbAlignment</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.TranscodeSinkInformation\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Contains information about the audio and video streams for the transcode sink activation object.</p><p>To get the information stored in this structure, call <strong><see cref=\"M:SharpDX.MediaFoundation.TranscodeSinkInfoProvider.GetSinkInfo(SharpDX.MediaFoundation.TranscodeSinkInformation@)\"/></strong>.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The <strong><see cref=\"M:SharpDX.MediaFoundation.TranscodeSinkInfoProvider.GetSinkInfo(SharpDX.MediaFoundation.TranscodeSinkInformation@)\"/></strong> method assigns <strong><see cref=\"T:SharpDX.MediaFoundation.MediaType\"/></strong> references to the <strong>pAudioMediaType</strong> and <strong>pVideoMediaType</strong> members of this structure. The method might set either member to <strong><c>null</c></strong>. If either member is non-<strong><c>null</c></strong> after the method returns, the caller must release the <strong><see cref=\"T:SharpDX.MediaFoundation.MediaType\"/></strong> references.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_TRANSCODE_SINK_INFO']/*\"/>\t\n            <msdn-id>dd388923</msdn-id>\t\n            <unmanaged>MF_TRANSCODE_SINK_INFO</unmanaged>\t\n            <unmanaged-short>MF_TRANSCODE_SINK_INFO</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TranscodeSinkInformation.DwVideoStreamID\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_TRANSCODE_SINK_INFO::dwVideoStreamID']/*\"/>\t\n            <unmanaged>unsigned int dwVideoStreamID</unmanaged>\t\n            <unmanaged-short>unsigned int dwVideoStreamID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TranscodeSinkInformation.PVideoMediaType\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_TRANSCODE_SINK_INFO::pVideoMediaType']/*\"/>\t\n            <unmanaged>IMFMediaType* pVideoMediaType</unmanaged>\t\n            <unmanaged-short>IMFMediaType pVideoMediaType</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TranscodeSinkInformation.DwAudioStreamID\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_TRANSCODE_SINK_INFO::dwAudioStreamID']/*\"/>\t\n            <unmanaged>unsigned int dwAudioStreamID</unmanaged>\t\n            <unmanaged-short>unsigned int dwAudioStreamID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TranscodeSinkInformation.PAudioMediaType\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MF_TRANSCODE_SINK_INFO::pAudioMediaType']/*\"/>\t\n            <unmanaged>IMFMediaType* pAudioMediaType</unmanaged>\t\n            <unmanaged-short>IMFMediaType pAudioMediaType</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.TRegisterTypeInformation\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Contains media type information for registering a Media Foundation transform (MFT). </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFT_REGISTER_TYPE_INFO']/*\"/>\t\n            <msdn-id>ms694919</msdn-id>\t\n            <unmanaged>MFT_REGISTER_TYPE_INFO</unmanaged>\t\n            <unmanaged-short>MFT_REGISTER_TYPE_INFO</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TRegisterTypeInformation.GuidMajorType\">\n            <summary>\t\n            <dd> <p>The major media type. For a list of possible values, see Major Media Types. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFT_REGISTER_TYPE_INFO::guidMajorType']/*\"/>\t\n            <msdn-id>ms694919</msdn-id>\t\n            <unmanaged>GUID guidMajorType</unmanaged>\t\n            <unmanaged-short>GUID guidMajorType</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TRegisterTypeInformation.GuidSubtype\">\n            <summary>\t\n            <dd> <p>The media subtype. For a list of possible values, see the following topics:</p> <ul> <li> Audio Subtype GUIDs </li> <li> Video Subtype GUIDs </li> </ul> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFT_REGISTER_TYPE_INFO::guidSubtype']/*\"/>\t\n            <msdn-id>ms694919</msdn-id>\t\n            <unmanaged>GUID guidSubtype</unmanaged>\t\n            <unmanaged-short>GUID guidSubtype</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.TRegistrationInformation\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p>Contains parameters for the <strong><see cref=\"M:SharpDX.MediaFoundation.LocalMFTRegistration.RegisterMFTs(SharpDX.MediaFoundation.TRegistrationInformation[],System.Int32)\"/></strong> method.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFT_REGISTRATION_INFO']/*\"/>\t\n            <msdn-id>dd388673</msdn-id>\t\n            <unmanaged>MFT_REGISTRATION_INFO</unmanaged>\t\n            <unmanaged-short>MFT_REGISTRATION_INFO</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TRegistrationInformation.Clsid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFT_REGISTRATION_INFO::clsid']/*\"/>\t\n            <unmanaged>GUID clsid</unmanaged>\t\n            <unmanaged-short>GUID clsid</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TRegistrationInformation.GuidCategory\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFT_REGISTRATION_INFO::guidCategory']/*\"/>\t\n            <unmanaged>GUID guidCategory</unmanaged>\t\n            <unmanaged-short>GUID guidCategory</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TRegistrationInformation.UiFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFT_REGISTRATION_INFO::uiFlags']/*\"/>\t\n            <unmanaged>unsigned int uiFlags</unmanaged>\t\n            <unmanaged-short>unsigned int uiFlags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TRegistrationInformation.PszName\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFT_REGISTRATION_INFO::pszName']/*\"/>\t\n            <unmanaged>const wchar_t* pszName</unmanaged>\t\n            <unmanaged-short>wchar_t pszName</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TRegistrationInformation.CInTypes\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFT_REGISTRATION_INFO::cInTypes']/*\"/>\t\n            <unmanaged>unsigned int cInTypes</unmanaged>\t\n            <unmanaged-short>unsigned int cInTypes</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TRegistrationInformation.PInTypes\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFT_REGISTRATION_INFO::pInTypes']/*\"/>\t\n            <unmanaged>MFT_REGISTER_TYPE_INFO* pInTypes</unmanaged>\t\n            <unmanaged-short>MFT_REGISTER_TYPE_INFO pInTypes</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TRegistrationInformation.COutTypes\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFT_REGISTRATION_INFO::cOutTypes']/*\"/>\t\n            <unmanaged>unsigned int cOutTypes</unmanaged>\t\n            <unmanaged-short>unsigned int cOutTypes</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.TRegistrationInformation.POutTypes\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFT_REGISTRATION_INFO::pOutTypes']/*\"/>\t\n            <unmanaged>MFT_REGISTER_TYPE_INFO* pOutTypes</unmanaged>\t\n            <unmanaged-short>MFT_REGISTER_TYPE_INFO pOutTypes</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.VideoAlphaBitmap\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Specifies a bitmap for the enhanced video renderer (EVR) to alpha-blend with the video.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>To specify a GDI bitmap, create a device context and call <strong>SelectObject</strong> to select the bitmap into the DC. Then set the <strong>hdc</strong> member of the structure equal to the handle to the DC and set the <strong>GetBitmapFromDC</strong> member to <strong>TRUE</strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoAlphaBitmap']/*\"/>\t\n            <msdn-id>ms697428</msdn-id>\t\n            <unmanaged>MFVideoAlphaBitmap</unmanaged>\t\n            <unmanaged-short>MFVideoAlphaBitmap</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoAlphaBitmap.GetBitmapFromDC\">\n            <summary>\t\n            <dd> <p>If <strong>TRUE</strong>, the <strong>hdc</strong> member is used. Otherwise, the <strong>pDDs</strong> member is used.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoAlphaBitmap::GetBitmapFromDC']/*\"/>\t\n            <msdn-id>ms697428</msdn-id>\t\n            <unmanaged>BOOL GetBitmapFromDC</unmanaged>\t\n            <unmanaged-short>BOOL GetBitmapFromDC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoAlphaBitmap.Bitmap\">\n            <summary>\t\n            <dd> <p>A union that contains the following members.</p> <dl> <dt><strong>hdc</strong></dt> <dd> <p>Handle to the device context (DC) of a GDI bitmap. If <strong>GetBitmapFromDC</strong> is <strong><see cref=\"F:SharpDX.Result.False\"/></strong>, this member is ignored.</p> </dd> <dt><strong>pDDs</strong></dt> <dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.Direct3D9.Surface\"/></strong> interface of a Direct3D surface that contains the bitmap. If <strong>GetBitmapFromDC</strong> is <strong>TRUE</strong>, this member is ignored.</p> </dd> </dl> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoAlphaBitmap::bitmap']/*\"/>\t\n            <msdn-id>ms697428</msdn-id>\t\n            <unmanaged>MFVideoAlphaBitmap_INNER_0 bitmap</unmanaged>\t\n            <unmanaged-short>MFVideoAlphaBitmap_INNER_0 bitmap</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoAlphaBitmap.Params\">\n            <summary>\t\n            <dd> <p> <strong><see cref=\"T:SharpDX.MediaFoundation.VideoAlphaBitmapParams\"/></strong> structure that specifies the parameters for the alpha-blending operation.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoAlphaBitmap::params']/*\"/>\t\n            <msdn-id>ms697428</msdn-id>\t\n            <unmanaged>MFVideoAlphaBitmapParams params</unmanaged>\t\n            <unmanaged-short>MFVideoAlphaBitmapParams params</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.VideoAlphaBitmapInner0\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoAlphaBitmap_INNER_0']/*\"/>\t\n            <unmanaged>MFVideoAlphaBitmap_INNER_0</unmanaged>\t\n            <unmanaged-short>MFVideoAlphaBitmap_INNER_0</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoAlphaBitmapInner0.Hdc\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoAlphaBitmap_INNER_0::hdc']/*\"/>\t\n            <unmanaged>HDC hdc</unmanaged>\t\n            <unmanaged-short>HDC hdc</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoAlphaBitmapInner0.PDDS\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoAlphaBitmap_INNER_0::pDDS']/*\"/>\t\n            <unmanaged>IDirect3DSurface9* pDDS</unmanaged>\t\n            <unmanaged-short>IDirect3DSurface9 pDDS</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.VideoAlphaBitmapParams\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Specifies a bitmap for the enhanced video renderer (EVR) to alpha-blend with the video.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>To specify a GDI bitmap, create a device context and call <strong>SelectObject</strong> to select the bitmap into the DC. Then set the <strong>hdc</strong> member of the structure equal to the handle to the DC and set the <strong>GetBitmapFromDC</strong> member to <strong>TRUE</strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoAlphaBitmapParams']/*\"/>\t\n            <msdn-id>ms697428</msdn-id>\t\n            <unmanaged>MFVideoAlphaBitmapParams</unmanaged>\t\n            <unmanaged-short>MFVideoAlphaBitmapParams</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoAlphaBitmapParams.DwFlags\">\n            <summary>\t\n            <dd> <p>If <strong>TRUE</strong>, the <strong>hdc</strong> member is used. Otherwise, the <strong>pDDs</strong> member is used.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoAlphaBitmapParams::dwFlags']/*\"/>\t\n            <msdn-id>ms697428</msdn-id>\t\n            <unmanaged>unsigned int dwFlags</unmanaged>\t\n            <unmanaged-short>unsigned int dwFlags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoAlphaBitmapParams.ClrSrcKey\">\n            <summary>\t\n            <dd> <p>A union that contains the following members.</p> <dl> <dt><strong>hdc</strong></dt> <dd> <p>Handle to the device context (DC) of a GDI bitmap. If <strong>GetBitmapFromDC</strong> is <strong><see cref=\"F:SharpDX.Result.False\"/></strong>, this member is ignored.</p> </dd> <dt><strong>pDDs</strong></dt> <dd> <p>Pointer to the <strong><see cref=\"T:SharpDX.Direct3D9.Surface\"/></strong> interface of a Direct3D surface that contains the bitmap. If <strong>GetBitmapFromDC</strong> is <strong>TRUE</strong>, this member is ignored.</p> </dd> </dl> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoAlphaBitmapParams::clrSrcKey']/*\"/>\t\n            <msdn-id>ms697428</msdn-id>\t\n            <unmanaged>COLORREF clrSrcKey</unmanaged>\t\n            <unmanaged-short>COLORREF clrSrcKey</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoAlphaBitmapParams.RcSrc\">\n            <summary>\t\n            <dd> <p> <strong><see cref=\"T:SharpDX.MediaFoundation.VideoAlphaBitmapParams\"/></strong> structure that specifies the parameters for the alpha-blending operation.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoAlphaBitmapParams::rcSrc']/*\"/>\t\n            <msdn-id>ms697428</msdn-id>\t\n            <unmanaged>RECT rcSrc</unmanaged>\t\n            <unmanaged-short>RECT rcSrc</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoAlphaBitmapParams.NrcDest\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoAlphaBitmapParams::nrcDest']/*\"/>\t\n            <unmanaged>MFVideoNormalizedRect nrcDest</unmanaged>\t\n            <unmanaged-short>MFVideoNormalizedRect nrcDest</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoAlphaBitmapParams.FAlpha\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoAlphaBitmapParams::fAlpha']/*\"/>\t\n            <unmanaged>float fAlpha</unmanaged>\t\n            <unmanaged-short>float fAlpha</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoAlphaBitmapParams.DwFilterMode\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoAlphaBitmapParams::dwFilterMode']/*\"/>\t\n            <unmanaged>unsigned int dwFilterMode</unmanaged>\t\n            <unmanaged-short>unsigned int dwFilterMode</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.VideoArea\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> Specifies a rectangular area within a video frame. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoArea']/*\"/>\t\n            <msdn-id>ms703850</msdn-id>\t\n            <unmanaged>MFVideoArea</unmanaged>\t\n            <unmanaged-short>MFVideoArea</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoArea.OffsetX\">\n            <summary>\t\n            <dd> <p> An <strong><see cref=\"T:SharpDX.MediaFoundation.Offset\"/></strong> structure that contains the x-coordinate of the upper-left corner of the rectangle. This coordinate might have a fractional value. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoArea::OffsetX']/*\"/>\t\n            <msdn-id>ms703850</msdn-id>\t\n            <unmanaged>MFOffset OffsetX</unmanaged>\t\n            <unmanaged-short>MFOffset OffsetX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoArea.OffsetY\">\n            <summary>\t\n            <dd> <p> An <strong><see cref=\"T:SharpDX.MediaFoundation.Offset\"/></strong> structure that contains the y-coordinate of the upper-left corner of the rectangle. This coordinate might have a fractional value. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoArea::OffsetY']/*\"/>\t\n            <msdn-id>ms703850</msdn-id>\t\n            <unmanaged>MFOffset OffsetY</unmanaged>\t\n            <unmanaged-short>MFOffset OffsetY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoArea.Area\">\n            <summary>\t\n            <dd> <p> A <strong><see cref=\"T:SharpDX.DrawingSize\"/></strong> structure that contains the width and height of the rectangle. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoArea::Area']/*\"/>\t\n            <msdn-id>ms703850</msdn-id>\t\n            <unmanaged>SIZE Area</unmanaged>\t\n            <unmanaged-short>SIZE Area</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.VideoCompressedInfo\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Describes a video format.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Applications should avoid using this structure. Instead, it is recommended that applications use attributes to describe the video format. For a list of media type attributes, see Media Type Attributes. With attributes, you can set just the format information that you know, which is easier (and more likely to be accurate) than trying to fill in complete format information for the <strong><see cref=\"T:SharpDX.MediaFoundation.VideoFormat\"/></strong> structure.</p><p>To initialize a media type object from an <strong><see cref=\"T:SharpDX.MediaFoundation.VideoFormat\"/></strong> structure, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.InitMediaTypeFromMFVideoFormat(SharpDX.MediaFoundation.MediaType,SharpDX.MediaFoundation.VideoFormat[],System.Int32)\"/></strong>.</p><p>You can use the <strong><see cref=\"T:SharpDX.MediaFoundation.VideoFormat\"/></strong> structure as the format block for a DirectShow media type. Set the format <see cref=\"T:System.Guid\"/> to FORMAT_MFVideoFormat.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoCompressedInfo']/*\"/>\t\n            <msdn-id>aa473808</msdn-id>\t\n            <unmanaged>MFVideoCompressedInfo</unmanaged>\t\n            <unmanaged-short>MFVideoCompressedInfo</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoCompressedInfo.AvgBitrate\">\n            <summary>\t\n            <dd> <p>Size of the structure, in bytes. This value includes the size of the palette entries that may appear after the <strong>surfaceInfo</strong> member.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoCompressedInfo::AvgBitrate']/*\"/>\t\n            <msdn-id>aa473808</msdn-id>\t\n            <unmanaged>longlong AvgBitrate</unmanaged>\t\n            <unmanaged-short>longlong AvgBitrate</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoCompressedInfo.AvgBitErrorRate\">\n            <summary>\t\n            <dd> <p> <strong><see cref=\"T:SharpDX.MediaFoundation.VideoInfo\"/></strong> structure. This structure contains information that applies to both compressed and uncompressed formats.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoCompressedInfo::AvgBitErrorRate']/*\"/>\t\n            <msdn-id>aa473808</msdn-id>\t\n            <unmanaged>longlong AvgBitErrorRate</unmanaged>\t\n            <unmanaged-short>longlong AvgBitErrorRate</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoCompressedInfo.MaxKeyFrameSpacing\">\n            <summary>\t\n            <dd> <p>Video subtype. See Video Subtype GUIDs.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoCompressedInfo::MaxKeyFrameSpacing']/*\"/>\t\n            <msdn-id>aa473808</msdn-id>\t\n            <unmanaged>unsigned int MaxKeyFrameSpacing</unmanaged>\t\n            <unmanaged-short>unsigned int MaxKeyFrameSpacing</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.VideoFormat\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Describes a video format.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Applications should avoid using this structure. Instead, it is recommended that applications use attributes to describe the video format. For a list of media type attributes, see Media Type Attributes. With attributes, you can set just the format information that you know, which is easier (and more likely to be accurate) than trying to fill in complete format information for the <strong><see cref=\"T:SharpDX.MediaFoundation.VideoFormat\"/></strong> structure.</p><p>To initialize a media type object from an <strong><see cref=\"T:SharpDX.MediaFoundation.VideoFormat\"/></strong> structure, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.InitMediaTypeFromMFVideoFormat(SharpDX.MediaFoundation.MediaType,SharpDX.MediaFoundation.VideoFormat[],System.Int32)\"/></strong>.</p><p>You can use the <strong><see cref=\"T:SharpDX.MediaFoundation.VideoFormat\"/></strong> structure as the format block for a DirectShow media type. Set the format <see cref=\"T:System.Guid\"/> to FORMAT_MFVideoFormat.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVIDEOFORMAT']/*\"/>\t\n            <msdn-id>aa473808</msdn-id>\t\n            <unmanaged>MFVIDEOFORMAT</unmanaged>\t\n            <unmanaged-short>MFVIDEOFORMAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoFormat.DwSize\">\n            <summary>\t\n            <dd> <p>Size of the structure, in bytes. This value includes the size of the palette entries that may appear after the <strong>surfaceInfo</strong> member.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVIDEOFORMAT::dwSize']/*\"/>\t\n            <msdn-id>aa473808</msdn-id>\t\n            <unmanaged>unsigned int dwSize</unmanaged>\t\n            <unmanaged-short>unsigned int dwSize</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoFormat.VideoInfo\">\n            <summary>\t\n            <dd> <p> <strong><see cref=\"T:SharpDX.MediaFoundation.VideoInfo\"/></strong> structure. This structure contains information that applies to both compressed and uncompressed formats.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVIDEOFORMAT::videoInfo']/*\"/>\t\n            <msdn-id>aa473808</msdn-id>\t\n            <unmanaged>MFVideoInfo videoInfo</unmanaged>\t\n            <unmanaged-short>MFVideoInfo videoInfo</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoFormat.GuidFormat\">\n            <summary>\t\n            <dd> <p>Video subtype. See Video Subtype GUIDs.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVIDEOFORMAT::guidFormat']/*\"/>\t\n            <msdn-id>aa473808</msdn-id>\t\n            <unmanaged>GUID guidFormat</unmanaged>\t\n            <unmanaged-short>GUID guidFormat</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoFormat.CompressedInfo\">\n            <summary>\t\n            <dd> <p> <strong><see cref=\"T:SharpDX.MediaFoundation.VideoCompressedInfo\"/></strong> structure. This structure contains information that applies only to compressed formats.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVIDEOFORMAT::compressedInfo']/*\"/>\t\n            <msdn-id>aa473808</msdn-id>\t\n            <unmanaged>MFVideoCompressedInfo compressedInfo</unmanaged>\t\n            <unmanaged-short>MFVideoCompressedInfo compressedInfo</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoFormat.SurfaceInfo\">\n            <summary>\t\n            <dd> <p> <strong><see cref=\"T:SharpDX.MediaFoundation.VideoSurfaceInfo\"/></strong> structure. This structure contains information that applies only to uncompressed formats.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVIDEOFORMAT::surfaceInfo']/*\"/>\t\n            <msdn-id>aa473808</msdn-id>\t\n            <unmanaged>MFVideoSurfaceInfo surfaceInfo</unmanaged>\t\n            <unmanaged-short>MFVideoSurfaceInfo surfaceInfo</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.VideoInfo\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Describes a video format.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Applications should avoid using this structure. Instead, it is recommended that applications use attributes to describe the video format. For a list of media type attributes, see Media Type Attributes. With attributes, you can set just the format information that you know, which is easier (and more likely to be accurate) than trying to fill in complete format information for the <strong><see cref=\"T:SharpDX.MediaFoundation.VideoFormat\"/></strong> structure.</p><p>To initialize a media type object from an <strong><see cref=\"T:SharpDX.MediaFoundation.VideoFormat\"/></strong> structure, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.InitMediaTypeFromMFVideoFormat(SharpDX.MediaFoundation.MediaType,SharpDX.MediaFoundation.VideoFormat[],System.Int32)\"/></strong>.</p><p>You can use the <strong><see cref=\"T:SharpDX.MediaFoundation.VideoFormat\"/></strong> structure as the format block for a DirectShow media type. Set the format <see cref=\"T:System.Guid\"/> to FORMAT_MFVideoFormat.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoInfo']/*\"/>\t\n            <msdn-id>aa473808</msdn-id>\t\n            <unmanaged>MFVideoInfo</unmanaged>\t\n            <unmanaged-short>MFVideoInfo</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoInfo.DwWidth\">\n            <summary>\t\n            <dd> <p>Size of the structure, in bytes. This value includes the size of the palette entries that may appear after the <strong>surfaceInfo</strong> member.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoInfo::dwWidth']/*\"/>\t\n            <msdn-id>aa473808</msdn-id>\t\n            <unmanaged>unsigned int dwWidth</unmanaged>\t\n            <unmanaged-short>unsigned int dwWidth</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoInfo.DwHeight\">\n            <summary>\t\n            <dd> <p> <strong><see cref=\"T:SharpDX.MediaFoundation.VideoInfo\"/></strong> structure. This structure contains information that applies to both compressed and uncompressed formats.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoInfo::dwHeight']/*\"/>\t\n            <msdn-id>aa473808</msdn-id>\t\n            <unmanaged>unsigned int dwHeight</unmanaged>\t\n            <unmanaged-short>unsigned int dwHeight</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoInfo.PixelAspectRatio\">\n            <summary>\t\n            <dd> <p>Video subtype. See Video Subtype GUIDs.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoInfo::PixelAspectRatio']/*\"/>\t\n            <msdn-id>aa473808</msdn-id>\t\n            <unmanaged>MFRatio PixelAspectRatio</unmanaged>\t\n            <unmanaged-short>MFRatio PixelAspectRatio</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoInfo.SourceChromaSubsampling\">\n            <summary>\t\n            <dd> <p> <strong><see cref=\"T:SharpDX.MediaFoundation.VideoCompressedInfo\"/></strong> structure. This structure contains information that applies only to compressed formats.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoInfo::SourceChromaSubsampling']/*\"/>\t\n            <msdn-id>aa473808</msdn-id>\t\n            <unmanaged>MFVideoChromaSubsampling SourceChromaSubsampling</unmanaged>\t\n            <unmanaged-short>MFVideoChromaSubsampling SourceChromaSubsampling</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoInfo.InterlaceMode\">\n            <summary>\t\n            <dd> <p> <strong><see cref=\"T:SharpDX.MediaFoundation.VideoSurfaceInfo\"/></strong> structure. This structure contains information that applies only to uncompressed formats.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoInfo::InterlaceMode']/*\"/>\t\n            <msdn-id>aa473808</msdn-id>\t\n            <unmanaged>MFVideoInterlaceMode InterlaceMode</unmanaged>\t\n            <unmanaged-short>MFVideoInterlaceMode InterlaceMode</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoInfo.TransferFunction\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoInfo::TransferFunction']/*\"/>\t\n            <unmanaged>MFVideoTransferFunction TransferFunction</unmanaged>\t\n            <unmanaged-short>MFVideoTransferFunction TransferFunction</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoInfo.ColorPrimaries\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoInfo::ColorPrimaries']/*\"/>\t\n            <unmanaged>MFVideoPrimaries ColorPrimaries</unmanaged>\t\n            <unmanaged-short>MFVideoPrimaries ColorPrimaries</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoInfo.TransferMatrix\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoInfo::TransferMatrix']/*\"/>\t\n            <unmanaged>MFVideoTransferMatrix TransferMatrix</unmanaged>\t\n            <unmanaged-short>MFVideoTransferMatrix TransferMatrix</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoInfo.SourceLighting\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoInfo::SourceLighting']/*\"/>\t\n            <unmanaged>MFVideoLighting SourceLighting</unmanaged>\t\n            <unmanaged-short>MFVideoLighting SourceLighting</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoInfo.FramesPerSecond\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoInfo::FramesPerSecond']/*\"/>\t\n            <unmanaged>MFRatio FramesPerSecond</unmanaged>\t\n            <unmanaged-short>MFRatio FramesPerSecond</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoInfo.NominalRange\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoInfo::NominalRange']/*\"/>\t\n            <unmanaged>MFNominalRange NominalRange</unmanaged>\t\n            <unmanaged-short>MFNominalRange NominalRange</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoInfo.GeometricAperture\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoInfo::GeometricAperture']/*\"/>\t\n            <unmanaged>MFVideoArea GeometricAperture</unmanaged>\t\n            <unmanaged-short>MFVideoArea GeometricAperture</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoInfo.MinimumDisplayAperture\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoInfo::MinimumDisplayAperture']/*\"/>\t\n            <unmanaged>MFVideoArea MinimumDisplayAperture</unmanaged>\t\n            <unmanaged-short>MFVideoArea MinimumDisplayAperture</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoInfo.PanScanAperture\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoInfo::PanScanAperture']/*\"/>\t\n            <unmanaged>MFVideoArea PanScanAperture</unmanaged>\t\n            <unmanaged-short>MFVideoArea PanScanAperture</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoInfo.VideoFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoInfo::VideoFlags']/*\"/>\t\n            <unmanaged>unsigned longlong VideoFlags</unmanaged>\t\n            <unmanaged-short>unsigned longlong VideoFlags</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.VideoNormalizedRect\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p> </p><p>Defines a normalized rectangle, which is used to specify sub-rectangles in a video rectangle. When a rectangle N is <em>normalized</em> relative to some other rectangle R, it means the following:</p><ul> <li> <p>The coordinate (0.0, 0.0) on N is mapped to the upper-left corner of R.</p> </li> <li> <p>The coordinate (1.0, 1.0) on N is mapped to the lower-right corner of R.</p> </li> </ul><p>Any coordinates of N that fall outside the range [0...1] are mapped to positions outside the rectangle R. A normalized rectangle can be used to specify a region within a video rectangle without knowing the resolution or even the aspect ratio of the video. For example, the upper-left quadrant is defined as {0.0, 0.0, 0.5, 0.5}.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoNormalizedRect']/*\"/>\t\n            <msdn-id>ms703049</msdn-id>\t\n            <unmanaged>MFVideoNormalizedRect</unmanaged>\t\n            <unmanaged-short>MFVideoNormalizedRect</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoNormalizedRect.Left\">\n            <summary>\t\n            <dd> <p>X-coordinate of the upper-left corner of the rectangle.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoNormalizedRect::left']/*\"/>\t\n            <msdn-id>ms703049</msdn-id>\t\n            <unmanaged>float left</unmanaged>\t\n            <unmanaged-short>float left</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoNormalizedRect.Top\">\n            <summary>\t\n            <dd> <p>Y-coordinate of the upper-left corner of the rectangle.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoNormalizedRect::top']/*\"/>\t\n            <msdn-id>ms703049</msdn-id>\t\n            <unmanaged>float top</unmanaged>\t\n            <unmanaged-short>float top</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoNormalizedRect.Right\">\n            <summary>\t\n            <dd> <p>X-coordinate of the lower-right corner of the rectangle.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoNormalizedRect::right']/*\"/>\t\n            <msdn-id>ms703049</msdn-id>\t\n            <unmanaged>float right</unmanaged>\t\n            <unmanaged-short>float right</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoNormalizedRect.Bottom\">\n            <summary>\t\n            <dd> <p>Y-coordinate of the lower-right corner of the rectangle.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoNormalizedRect::bottom']/*\"/>\t\n            <msdn-id>ms703049</msdn-id>\t\n            <unmanaged>float bottom</unmanaged>\t\n            <unmanaged-short>float bottom</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.VideoSurfaceInfo\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps only</p><p> </p><p>Describes a video format.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Applications should avoid using this structure. Instead, it is recommended that applications use attributes to describe the video format. For a list of media type attributes, see Media Type Attributes. With attributes, you can set just the format information that you know, which is easier (and more likely to be accurate) than trying to fill in complete format information for the <strong><see cref=\"T:SharpDX.MediaFoundation.VideoFormat\"/></strong> structure.</p><p>To initialize a media type object from an <strong><see cref=\"T:SharpDX.MediaFoundation.VideoFormat\"/></strong> structure, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.InitMediaTypeFromMFVideoFormat(SharpDX.MediaFoundation.MediaType,SharpDX.MediaFoundation.VideoFormat[],System.Int32)\"/></strong>.</p><p>You can use the <strong><see cref=\"T:SharpDX.MediaFoundation.VideoFormat\"/></strong> structure as the format block for a DirectShow media type. Set the format <see cref=\"T:System.Guid\"/> to FORMAT_MFVideoFormat.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoSurfaceInfo']/*\"/>\t\n            <msdn-id>aa473808</msdn-id>\t\n            <unmanaged>MFVideoSurfaceInfo</unmanaged>\t\n            <unmanaged-short>MFVideoSurfaceInfo</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoSurfaceInfo.Format\">\n            <summary>\t\n            <dd> <p>Size of the structure, in bytes. This value includes the size of the palette entries that may appear after the <strong>surfaceInfo</strong> member.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoSurfaceInfo::Format']/*\"/>\t\n            <msdn-id>aa473808</msdn-id>\t\n            <unmanaged>unsigned int Format</unmanaged>\t\n            <unmanaged-short>unsigned int Format</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.VideoSurfaceInfo.PaletteEntries\">\n            <summary>\t\n            <dd> <p> <strong><see cref=\"T:SharpDX.MediaFoundation.VideoInfo\"/></strong> structure. This structure contains information that applies to both compressed and uncompressed formats.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoSurfaceInfo::PaletteEntries']/*\"/>\t\n            <msdn-id>aa473808</msdn-id>\t\n            <unmanaged>unsigned int PaletteEntries</unmanaged>\t\n            <unmanaged-short>unsigned int PaletteEntries</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.VideoSurfaceInfo.Palette\">\n            <summary>\t\n            <dd> <p>Video subtype. See Video Subtype GUIDs.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MFVideoSurfaceInfo::Palette']/*\"/>\t\n            <msdn-id>aa473808</msdn-id>\t\n            <unmanaged>MFPaletteEntry Palette[1]</unmanaged>\t\n            <unmanaged-short>MFPaletteEntry Palette</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.MediaAttributeKey\">\n            <summary>\n            Associate an attribute key with a type used to retreive keys from a <see cref=\"T:SharpDX.MediaFoundation.MediaAttributes\"/> instance.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaAttributeKey.#ctor(System.Guid,System.Type)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.MediaAttributeKey\"/> struct.\n            </summary>\n            <param name=\"guid\">The GUID.</param>\n            <param name=\"type\">The type.</param>\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.MediaAttributeKey.Guid\">\n            <summary>\n            Gets or sets the GUID.\n            </summary>\n            <value>\n            The GUID.\n            </value>\n        </member>\n        <member name=\"P:SharpDX.MediaFoundation.MediaAttributeKey.Type\">\n            <summary>\n            Gets or sets the type.\n            </summary>\n            <value>\n            The type.\n            </value>\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.MediaAttributeKey`1\">\n            <summary>\n            Generic version of <see cref=\"T:SharpDX.MediaFoundation.MediaAttributeKey\"/>\n            </summary>\n            <typeparam name=\"T\">Type of the value of this key</typeparam>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaAttributeKey`1.#ctor(System.String)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.MediaAttributeKey`1\"/> class.\n            </summary>\n            <param name=\"guid\">The GUID.</param>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaAttributeKey`1.#ctor(System.Guid)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.MediaFoundation.MediaAttributeKey`1\"/> class.\n            </summary>\n            <param name=\"guid\">The GUID.</param>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaManager.Startup(System.Boolean)\">\n            <summary>\n              <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Initializes Microsoft Media Foundation.</p>\n            </summary>\n            <param name=\"useLightVersion\">If true, do not initialize the sockets library, else full initialization. Default is false</param>\n            <msdn-id>ms702238</msdn-id>\n            <unmanaged>HRESULT MFStartup([In] unsigned int Version,[In] unsigned int dwFlags)</unmanaged>\n            <unmanaged-short>MFStartup</unmanaged-short>\n            <remarks>\n              <p> An application must call this function before using Media Foundation. Before your application quits, call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> once for every previous call to <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong>. </p><p> Do not call <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong> or <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Shutdown\"/></strong> from work queue threads. For more information about work queues, see Work Queues. </p><p>This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul>\n            \t\t<li>Windows?XP with Service Pack?2 (SP2) and later.</li>\n            \t\t<li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li>\n            \t</ul>\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.MediaFoundation.MediaManager.Shutdown\">\n            <summary>\t\n            <p><strong>Applies to: </strong>desktop apps | Metro style apps</p><p>Shuts down the Microsoft Media Foundation platform. Call this function once for every call to <strong><see cref=\"M:SharpDX.MediaFoundation.MediaFactory.Startup(System.Int32,System.Int32)\"/></strong>. Do not call this function from work queue threads.</p>\t\n            </summary>\t\n            <returns><p>If this function succeeds, it returns <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong>. Otherwise, it returns an <strong><see cref=\"T:SharpDX.Result\"/></strong> error code.</p></returns>\t\n            <remarks>\t\n            <p>This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:</p><ul> <li>Windows?XP with Service Pack?2 (SP2) and later.</li> <li>Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.</li> </ul>\t\n            </remarks>\t\n            <msdn-id>ms694273</msdn-id>\t\n            <unmanaged>HRESULT MFShutdown()</unmanaged>\t\n            <unmanaged-short>MFShutdown</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.NamespaceDoc\">\n            <summary>\n            The <see cref=\"N:SharpDX.MediaFoundation\"/> namespace provides a managed MediaFoundation API.\n            </summary>\n            <msdn-id></msdn-id>\n            <unmanaged>MediaFoundation</unmanaged>\t\n            <unmanaged-short>MediaFoundation</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.OPM.NamespaceDoc\">\n            <summary>\n            The <see cref=\"N:SharpDX.MediaFoundation.OPM\"/> namespace provides a managed MediaFoundation for OPM API.\n            </summary>\n            <msdn-id></msdn-id>\n            <unmanaged>MediaFoundation</unmanaged>\t\n            <unmanaged-short>MediaFoundation</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.MediaFoundation.ResourceCharacteristics\">\n            <summary>\n            Resource characteristics returned by <see cref=\"!:MediaEngineEx.ResourceCharacteristics\"/>.\n            </summary>\n            <msdn-id>hh447939</msdn-id>\t\n            <unmanaged>HRESULT IMFMediaEngineEx::GetResourceCharacteristics([Out] unsigned int* pCharacteristics)</unmanaged>\t\n            <unmanaged-short>IMFMediaEngineEx::GetResourceCharacteristics</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResourceCharacteristics.None\">\n            <summary>\n            None flag.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResourceCharacteristics.LiveSource\">\n            <summary>\n            The media resource represents a live data source, such as a video camera. If playback is stopped and then restarted, there will be a gap in the content.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResourceCharacteristics.CanSeek\">\n            <summary>\n            The media resource supports seeking. To get the seekable range, call IMFMediaEngine::GetSeekable.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResourceCharacteristics.CanPause\">\n            <summary>\n            The media resource can be paused.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.MediaFoundation.ResourceCharacteristics.LongTimeToSeek\">\n            <summary>\n            Seeking this resource can take a long time. For example, it might download through HTTP.\n            </summary>\n        </member>\n    </members>\n</doc>\n"
  },
  {
    "path": "3rd/SharpDX/SharpDX.RawInput.xml",
    "content": "<?xml version=\"1.0\"?>\n<doc>\n    <assembly>\n        <name>SharpDX.RawInput</name>\n    </assembly>\n    <members>\n        <member name=\"T:SharpDX.RawInput.AssemblyDoc\">\n            <summary>\n            The <see cref=\"A:SharpDX.RawInput\"/> assembly provides managed RawInput API.\n            </summary>\n            <msdn-id>ms645536</msdn-id>\n            <unmanaged>RawInput</unmanaged>\t\n            <unmanaged-short>RawInput</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.RawInput.Device\">\n            <summary>\n            Provides access to RawInput methods.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.RawInput.Device.GetDevices\">\n            <summary>\n            Gets the devices.\n            </summary>\n            <returns></returns>\n        </member>\n        <member name=\"M:SharpDX.RawInput.Device.RegisterDevice(SharpDX.Multimedia.UsagePage,SharpDX.Multimedia.UsageId,SharpDX.RawInput.DeviceFlags)\">\n            <summary>\n            Registers the devices that supply the raw input data.\n            </summary>\n            <param name=\"usagePage\">The usage page.</param>\n            <param name=\"usageId\">The usage id.</param>\n            <param name=\"flags\">The flags.</param>\n        </member>\n        <member name=\"M:SharpDX.RawInput.Device.RegisterDevice(SharpDX.Multimedia.UsagePage,SharpDX.Multimedia.UsageId,SharpDX.RawInput.DeviceFlags,System.IntPtr,System.Boolean)\">\n            <summary>\n            Registers the devices that supply the raw input data.\n            </summary>\n            <param name=\"usagePage\">The usage page.</param>\n            <param name=\"usageId\">The usage id.</param>\n            <param name=\"flags\">The flags.</param>\n            <param name=\"target\">The target.</param>\n            <param name=\"addMessageFilter\">if set to <c>true</c> register message filter to Application.AddMessageFilter.</param>\n        </member>\n        <member name=\"M:SharpDX.RawInput.Device.HandleMessage(System.IntPtr)\">\n            <summary>\n            Handles a RawInput message manually.\n            </summary>\n            <param name=\"rawInputMessagePointer\">A pointer to a RawInput message.</param>\n            <remarks>\n            This method can be used directly when handling RawInput messages from non-WinForms application.\n            </remarks>\n        </member>\n        <member name=\"E:SharpDX.RawInput.Device.KeyboardInput\">\n            <summary>\n            Occurs when [keyboard input].\n            </summary>\n        </member>\n        <member name=\"E:SharpDX.RawInput.Device.MouseInput\">\n            <summary>\n            Occurs when [mouse input].\n            </summary>\n        </member>\n        <member name=\"E:SharpDX.RawInput.Device.RawInput\">\n            <summary>\n            Occurs when [raw input].\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.RawInput.Device.RawInputMessageFilter\">\n            <summary>\n            Internal RawInput message filtering\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.RawInput.Device.RawInputMessageFilter.WmInput\">\n            <summary>\n            WM_INPUT\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.RawInput.DeviceInfo\">\n            <summary>\n            Defines the raw input data coming from any device.\n            </summary>\n            <unmanaged>RID_DEVICE_INFO</unmanaged>\t\n        </member>\n        <member name=\"M:SharpDX.RawInput.DeviceInfo.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.RawInput.DeviceInfo\"/> class.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.RawInput.DeviceInfo.#ctor(SharpDX.RawInput.RawDeviceInformation@,System.String,System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.RawInput.DeviceInfo\"/> class.\n            </summary>\n            <param name=\"rawDeviceInfo\">The raw device info.</param>\n            <param name=\"deviceName\">Name of the device.</param>\n            <param name=\"deviceHandle\">The device handle.</param>\n        </member>\n        <member name=\"M:SharpDX.RawInput.DeviceInfo.Convert(SharpDX.RawInput.RawDeviceInformation@,System.String,System.IntPtr)\">\n            <summary>\n            Converts the specified raw device info to the <see cref=\"T:SharpDX.RawInput.DeviceInfo\"/>.\n            </summary>\n            <param name=\"rawDeviceInfo\">The raw device info.</param>\n            <param name=\"deviceName\">Name of the device.</param>\n            <param name=\"deviceHandle\">The device handle.</param>\n            <returns></returns>\n        </member>\n        <member name=\"P:SharpDX.RawInput.DeviceInfo.DeviceName\">\n            <summary>\n            Gets or sets the name of the device.\n            </summary>\n            <value>\n            The name of the device.\n            </value>\n        </member>\n        <member name=\"P:SharpDX.RawInput.DeviceInfo.DeviceType\">\n            <summary>\n            Gets or sets the type of the device.\n            </summary>\n            <value>\n            The type of the device.\n            </value>\n        </member>\n        <member name=\"P:SharpDX.RawInput.DeviceInfo.Handle\">\n            <summary>\n            Gets or sets the handle.\n            </summary>\n            <value>\n            The handle.\n            </value>\n        </member>\n        <member name=\"T:SharpDX.RawInput.DeviceFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RAW_DEVICE_FLAGS']/*\"/>\t\n            <unmanaged>RAW_DEVICE_FLAGS</unmanaged>\t\n            <unmanaged-short>RAW_DEVICE_FLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.DeviceFlags.Remove\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RIDEV_REMOVE']/*\"/>\t\n            <unmanaged>RIDEV_REMOVE</unmanaged>\t\n            <unmanaged-short>RIDEV_REMOVE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.DeviceFlags.Exclude\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RIDEV_EXCLUDE']/*\"/>\t\n            <unmanaged>RIDEV_EXCLUDE</unmanaged>\t\n            <unmanaged-short>RIDEV_EXCLUDE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.DeviceFlags.PageOnly\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RIDEV_PAGEONLY']/*\"/>\t\n            <unmanaged>RIDEV_PAGEONLY</unmanaged>\t\n            <unmanaged-short>RIDEV_PAGEONLY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.DeviceFlags.NoLegacy\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RIDEV_NOLEGACY']/*\"/>\t\n            <unmanaged>RIDEV_NOLEGACY</unmanaged>\t\n            <unmanaged-short>RIDEV_NOLEGACY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.DeviceFlags.InputSink\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RIDEV_INPUTSINK']/*\"/>\t\n            <unmanaged>RIDEV_INPUTSINK</unmanaged>\t\n            <unmanaged-short>RIDEV_INPUTSINK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.DeviceFlags.CaptureMouse\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RIDEV_CAPTUREMOUSE']/*\"/>\t\n            <unmanaged>RIDEV_CAPTUREMOUSE</unmanaged>\t\n            <unmanaged-short>RIDEV_CAPTUREMOUSE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.DeviceFlags.NoHotKeys\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RIDEV_NOHOTKEYS']/*\"/>\t\n            <unmanaged>RIDEV_NOHOTKEYS</unmanaged>\t\n            <unmanaged-short>RIDEV_NOHOTKEYS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.DeviceFlags.AppKeys\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RIDEV_APPKEYS']/*\"/>\t\n            <unmanaged>RIDEV_APPKEYS</unmanaged>\t\n            <unmanaged-short>RIDEV_APPKEYS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.DeviceFlags.ExclusiveInputSink\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RIDEV_EXINPUTSINK']/*\"/>\t\n            <unmanaged>RIDEV_EXINPUTSINK</unmanaged>\t\n            <unmanaged-short>RIDEV_EXINPUTSINK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.DeviceFlags.DeviceNotify\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RIDEV_DEVNOTIFY']/*\"/>\t\n            <unmanaged>RIDEV_DEVNOTIFY</unmanaged>\t\n            <unmanaged-short>RIDEV_DEVNOTIFY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.DeviceFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.RawInput.DeviceType\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RAW_DEVICE_TYPE']/*\"/>\t\n            <unmanaged>RAW_DEVICE_TYPE</unmanaged>\t\n            <unmanaged-short>RAW_DEVICE_TYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.DeviceType.Mouse\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RIM_TYPEMOUSE']/*\"/>\t\n            <unmanaged>RIM_TYPEMOUSE</unmanaged>\t\n            <unmanaged-short>RIM_TYPEMOUSE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.DeviceType.Keyboard\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RIM_TYPEKEYBOARD']/*\"/>\t\n            <unmanaged>RIM_TYPEKEYBOARD</unmanaged>\t\n            <unmanaged-short>RIM_TYPEKEYBOARD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.DeviceType.HumanInputDevice\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RIM_TYPEHID']/*\"/>\t\n            <unmanaged>RIM_TYPEHID</unmanaged>\t\n            <unmanaged-short>RIM_TYPEHID</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.RawInput.KeyState\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RAW_KEY_STATE']/*\"/>\t\n            <unmanaged>RAW_KEY_STATE</unmanaged>\t\n            <unmanaged-short>RAW_KEY_STATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.KeyState.VirtualKeyToItem\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WM_VKEYTOITEM']/*\"/>\t\n            <unmanaged>WM_VKEYTOITEM</unmanaged>\t\n            <unmanaged-short>WM_VKEYTOITEM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.KeyState.SetHotKey\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WM_SETHOTKEY']/*\"/>\t\n            <unmanaged>WM_SETHOTKEY</unmanaged>\t\n            <unmanaged-short>WM_SETHOTKEY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.KeyState.GetHotKey\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WM_GETHOTKEY']/*\"/>\t\n            <unmanaged>WM_GETHOTKEY</unmanaged>\t\n            <unmanaged-short>WM_GETHOTKEY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.KeyState.KeyFirst\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WM_KEYFIRST']/*\"/>\t\n            <unmanaged>WM_KEYFIRST</unmanaged>\t\n            <unmanaged-short>WM_KEYFIRST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.KeyState.KeyDown\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WM_KEYDOWN']/*\"/>\t\n            <unmanaged>WM_KEYDOWN</unmanaged>\t\n            <unmanaged-short>WM_KEYDOWN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.KeyState.KeyUp\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WM_KEYUP']/*\"/>\t\n            <unmanaged>WM_KEYUP</unmanaged>\t\n            <unmanaged-short>WM_KEYUP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.KeyState.SystemKeyDown\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WM_SYSKEYDOWN']/*\"/>\t\n            <unmanaged>WM_SYSKEYDOWN</unmanaged>\t\n            <unmanaged-short>WM_SYSKEYDOWN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.KeyState.SystemKeyUp\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WM_SYSKEYUP']/*\"/>\t\n            <unmanaged>WM_SYSKEYUP</unmanaged>\t\n            <unmanaged-short>WM_SYSKEYUP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.KeyState.KeyLast\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WM_KEYLAST']/*\"/>\t\n            <unmanaged>WM_KEYLAST</unmanaged>\t\n            <unmanaged-short>WM_KEYLAST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.KeyState.ImeKeyLast\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WM_IME_KEYLAST']/*\"/>\t\n            <unmanaged>WM_IME_KEYLAST</unmanaged>\t\n            <unmanaged-short>WM_IME_KEYLAST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.KeyState.ImeKeyDown\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WM_IME_KEYDOWN']/*\"/>\t\n            <unmanaged>WM_IME_KEYDOWN</unmanaged>\t\n            <unmanaged-short>WM_IME_KEYDOWN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.KeyState.ImeKeyUp\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WM_IME_KEYUP']/*\"/>\t\n            <unmanaged>WM_IME_KEYUP</unmanaged>\t\n            <unmanaged-short>WM_IME_KEYUP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.KeyState.HotKey\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WM_HOTKEY']/*\"/>\t\n            <unmanaged>WM_HOTKEY</unmanaged>\t\n            <unmanaged-short>WM_HOTKEY</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.RawInput.MouseButtonFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RAW_MOUSE_BUTTON_FLAGS']/*\"/>\t\n            <unmanaged>RAW_MOUSE_BUTTON_FLAGS</unmanaged>\t\n            <unmanaged-short>RAW_MOUSE_BUTTON_FLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.MouseButtonFlags.LeftButtonDown\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RI_MOUSE_LEFT_BUTTON_DOWN']/*\"/>\t\n            <unmanaged>RI_MOUSE_LEFT_BUTTON_DOWN</unmanaged>\t\n            <unmanaged-short>RI_MOUSE_LEFT_BUTTON_DOWN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.MouseButtonFlags.LeftButtonUp\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RI_MOUSE_LEFT_BUTTON_UP']/*\"/>\t\n            <unmanaged>RI_MOUSE_LEFT_BUTTON_UP</unmanaged>\t\n            <unmanaged-short>RI_MOUSE_LEFT_BUTTON_UP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.MouseButtonFlags.RightButtonDown\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RI_MOUSE_RIGHT_BUTTON_DOWN']/*\"/>\t\n            <unmanaged>RI_MOUSE_RIGHT_BUTTON_DOWN</unmanaged>\t\n            <unmanaged-short>RI_MOUSE_RIGHT_BUTTON_DOWN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.MouseButtonFlags.RightButtonUp\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RI_MOUSE_RIGHT_BUTTON_UP']/*\"/>\t\n            <unmanaged>RI_MOUSE_RIGHT_BUTTON_UP</unmanaged>\t\n            <unmanaged-short>RI_MOUSE_RIGHT_BUTTON_UP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.MouseButtonFlags.MiddleButtonDown\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RI_MOUSE_MIDDLE_BUTTON_DOWN']/*\"/>\t\n            <unmanaged>RI_MOUSE_MIDDLE_BUTTON_DOWN</unmanaged>\t\n            <unmanaged-short>RI_MOUSE_MIDDLE_BUTTON_DOWN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.MouseButtonFlags.MiddleButtonUp\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RI_MOUSE_MIDDLE_BUTTON_UP']/*\"/>\t\n            <unmanaged>RI_MOUSE_MIDDLE_BUTTON_UP</unmanaged>\t\n            <unmanaged-short>RI_MOUSE_MIDDLE_BUTTON_UP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.MouseButtonFlags.Button1Down\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RI_MOUSE_BUTTON_1_DOWN']/*\"/>\t\n            <unmanaged>RI_MOUSE_BUTTON_1_DOWN</unmanaged>\t\n            <unmanaged-short>RI_MOUSE_BUTTON_1_DOWN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.MouseButtonFlags.Button1Up\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RI_MOUSE_BUTTON_1_UP']/*\"/>\t\n            <unmanaged>RI_MOUSE_BUTTON_1_UP</unmanaged>\t\n            <unmanaged-short>RI_MOUSE_BUTTON_1_UP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.MouseButtonFlags.Button2Down\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RI_MOUSE_BUTTON_2_DOWN']/*\"/>\t\n            <unmanaged>RI_MOUSE_BUTTON_2_DOWN</unmanaged>\t\n            <unmanaged-short>RI_MOUSE_BUTTON_2_DOWN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.MouseButtonFlags.Button2Up\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RI_MOUSE_BUTTON_2_UP']/*\"/>\t\n            <unmanaged>RI_MOUSE_BUTTON_2_UP</unmanaged>\t\n            <unmanaged-short>RI_MOUSE_BUTTON_2_UP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.MouseButtonFlags.Button3Down\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RI_MOUSE_BUTTON_3_DOWN']/*\"/>\t\n            <unmanaged>RI_MOUSE_BUTTON_3_DOWN</unmanaged>\t\n            <unmanaged-short>RI_MOUSE_BUTTON_3_DOWN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.MouseButtonFlags.Button3Up\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RI_MOUSE_BUTTON_3_UP']/*\"/>\t\n            <unmanaged>RI_MOUSE_BUTTON_3_UP</unmanaged>\t\n            <unmanaged-short>RI_MOUSE_BUTTON_3_UP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.MouseButtonFlags.Button4Down\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RI_MOUSE_BUTTON_4_DOWN']/*\"/>\t\n            <unmanaged>RI_MOUSE_BUTTON_4_DOWN</unmanaged>\t\n            <unmanaged-short>RI_MOUSE_BUTTON_4_DOWN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.MouseButtonFlags.Button4Up\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RI_MOUSE_BUTTON_4_UP']/*\"/>\t\n            <unmanaged>RI_MOUSE_BUTTON_4_UP</unmanaged>\t\n            <unmanaged-short>RI_MOUSE_BUTTON_4_UP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.MouseButtonFlags.Button5Down\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RI_MOUSE_BUTTON_5_DOWN']/*\"/>\t\n            <unmanaged>RI_MOUSE_BUTTON_5_DOWN</unmanaged>\t\n            <unmanaged-short>RI_MOUSE_BUTTON_5_DOWN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.MouseButtonFlags.Button5Up\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RI_MOUSE_BUTTON_5_UP']/*\"/>\t\n            <unmanaged>RI_MOUSE_BUTTON_5_UP</unmanaged>\t\n            <unmanaged-short>RI_MOUSE_BUTTON_5_UP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.MouseButtonFlags.MouseWheel\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RI_MOUSE_WHEEL']/*\"/>\t\n            <unmanaged>RI_MOUSE_WHEEL</unmanaged>\t\n            <unmanaged-short>RI_MOUSE_WHEEL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.MouseButtonFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.RawInput.MouseMode\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RAW_MOUSE_MODE']/*\"/>\t\n            <unmanaged>RAW_MOUSE_MODE</unmanaged>\t\n            <unmanaged-short>RAW_MOUSE_MODE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.MouseMode.MoveRelative\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MOUSE_MOVE_RELATIVE']/*\"/>\t\n            <unmanaged>MOUSE_MOVE_RELATIVE</unmanaged>\t\n            <unmanaged-short>MOUSE_MOVE_RELATIVE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.MouseMode.MoveAbsolute\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MOUSE_MOVE_ABSOLUTE']/*\"/>\t\n            <unmanaged>MOUSE_MOVE_ABSOLUTE</unmanaged>\t\n            <unmanaged-short>MOUSE_MOVE_ABSOLUTE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.MouseMode.VirtualDesktop\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MOUSE_VIRTUAL_DESKTOP']/*\"/>\t\n            <unmanaged>MOUSE_VIRTUAL_DESKTOP</unmanaged>\t\n            <unmanaged-short>MOUSE_VIRTUAL_DESKTOP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.MouseMode.AttributesChanged\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MOUSE_ATTRIBUTES_CHANGED']/*\"/>\t\n            <unmanaged>MOUSE_ATTRIBUTES_CHANGED</unmanaged>\t\n            <unmanaged-short>MOUSE_ATTRIBUTES_CHANGED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.MouseMode.MoveNoCoalesce\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MOUSE_MOVE_NOCOALESCE']/*\"/>\t\n            <unmanaged>MOUSE_MOVE_NOCOALESCE</unmanaged>\t\n            <unmanaged-short>MOUSE_MOVE_NOCOALESCE</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.RawInput.RawInputDataType\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RAW_INPUT_DATA_TYPE']/*\"/>\t\n            <unmanaged>RAW_INPUT_DATA_TYPE</unmanaged>\t\n            <unmanaged-short>RAW_INPUT_DATA_TYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.RawInputDataType.Input\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RID_INPUT']/*\"/>\t\n            <unmanaged>RID_INPUT</unmanaged>\t\n            <unmanaged-short>RID_INPUT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.RawInputDataType.Header\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RID_HEADER']/*\"/>\t\n            <unmanaged>RID_HEADER</unmanaged>\t\n            <unmanaged-short>RID_HEADER</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.RawInput.RawInputDeviceInfoType\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RAW_INPUT_DEVICE_INFO_TYPE']/*\"/>\t\n            <unmanaged>RAW_INPUT_DEVICE_INFO_TYPE</unmanaged>\t\n            <unmanaged-short>RAW_INPUT_DEVICE_INFO_TYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.RawInputDeviceInfoType.PreparsedData\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RIDI_PREPARSEDDATA']/*\"/>\t\n            <unmanaged>RIDI_PREPARSEDDATA</unmanaged>\t\n            <unmanaged-short>RIDI_PREPARSEDDATA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.RawInputDeviceInfoType.DeviceName\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RIDI_DEVICENAME']/*\"/>\t\n            <unmanaged>RIDI_DEVICENAME</unmanaged>\t\n            <unmanaged-short>RIDI_DEVICENAME</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.RawInputDeviceInfoType.DeviceInfo\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RIDI_DEVICEINFO']/*\"/>\t\n            <unmanaged>RIDI_DEVICEINFO</unmanaged>\t\n            <unmanaged-short>RIDI_DEVICEINFO</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.RawInput.ScanCodeFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RAW_SCAN_CODE_FLAGS']/*\"/>\t\n            <unmanaged>RAW_SCAN_CODE_FLAGS</unmanaged>\t\n            <unmanaged-short>RAW_SCAN_CODE_FLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.ScanCodeFlags.Make\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RI_KEY_MAKE']/*\"/>\t\n            <unmanaged>RI_KEY_MAKE</unmanaged>\t\n            <unmanaged-short>RI_KEY_MAKE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.ScanCodeFlags.Break\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RI_KEY_BREAK']/*\"/>\t\n            <unmanaged>RI_KEY_BREAK</unmanaged>\t\n            <unmanaged-short>RI_KEY_BREAK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.ScanCodeFlags.E0\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RI_KEY_E0']/*\"/>\t\n            <unmanaged>RI_KEY_E0</unmanaged>\t\n            <unmanaged-short>RI_KEY_E0</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.ScanCodeFlags.E1\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RI_KEY_E1']/*\"/>\t\n            <unmanaged>RI_KEY_E1</unmanaged>\t\n            <unmanaged-short>RI_KEY_E1</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.RawInput.RawInputFunctions\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.RawInput.RawInputFunctions']/*\"/>\t\n        </member>\n        <member name=\"M:SharpDX.RawInput.RawInputFunctions.GetRawInputDeviceList(SharpDX.RawInput.RawInputDevicelist[],System.Int32@,System.Int32)\">\n            <summary>\t\n            <p>Enumerates the raw input devices attached to the system. </p>\t\n            </summary>\t\n            <param name=\"rawInputDeviceListRef\"><dd>  <p>An array of <strong><see cref=\"T:SharpDX.RawInput.RawInputDevicelist\"/></strong> structures for the devices attached to the system. If <strong><c>null</c></strong>, the number of devices are returned in *<em>puiNumDevices</em>. </p> </dd></param>\t\n            <param name=\"uiNumDevicesRef\"><dd>  <p>If <em>pRawInputDeviceList</em> is <strong><c>null</c></strong>, the function populates this variable with the number of devices attached to the system; otherwise, this variable specifies the number of <strong><see cref=\"T:SharpDX.RawInput.RawInputDevicelist\"/></strong> structures that can be contained in the buffer to which <em>pRawInputDeviceList</em> points. If this value is less than the number of devices attached to the system, the function returns the actual number of devices in this variable and fails with <strong><see cref=\"F:SharpDX.Win32.ErrorCode.InsufficientBuffer\"/></strong>.</p> </dd></param>\t\n            <param name=\"cbSize\"><dd>  <p>The size of a <strong><see cref=\"T:SharpDX.RawInput.RawInputDevicelist\"/></strong> structure, in bytes.</p> </dd></param>\t\n            <returns><p>If the function is successful, the return value is the number of devices stored in the buffer pointed to by  <em>pRawInputDeviceList</em>.</p><p>On any other error, the function returns (<strong>UINT</strong>) -1 and  <strong>GetLastError</strong> returns the error indication.</p></returns>\t\n            <remarks>\t\n            <p>The devices returned from this function are the mouse, the keyboard, and other Human Interface Device (HID) devices.</p><p>To get more detailed information about the attached devices, call <strong>GetRawInputDeviceInfo</strong> using the hDevice from <strong><see cref=\"T:SharpDX.RawInput.RawInputDevicelist\"/></strong>. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='GetRawInputDeviceList']/*\"/>\t\n            <msdn-id>ms645598</msdn-id>\t\n            <unmanaged>unsigned int GetRawInputDeviceList([Out, Buffer, Optional] RAWINPUTDEVICELIST* pRawInputDeviceList,[InOut] unsigned int* puiNumDevices,[In] unsigned int cbSize)</unmanaged>\t\n            <unmanaged-short>GetRawInputDeviceList</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.RawInput.RawInputFunctions.GetRegisteredRawInputDevices(SharpDX.RawInput.RawInputDevice[],System.Int32@,System.Int32)\">\n            <summary>\t\n            <p>Retrieves the information about the raw input devices for the current application.</p>\t\n            </summary>\t\n            <param name=\"rawInputDevicesRef\"><dd>  <p>An array of <strong><see cref=\"T:SharpDX.RawInput.RawInputDevice\"/></strong> structures for the application. </p> </dd></param>\t\n            <param name=\"uiNumDevicesRef\"><dd>  <p>The number of <strong><see cref=\"T:SharpDX.RawInput.RawInputDevice\"/></strong> structures in *<em>pRawInputDevices</em>. </p> </dd></param>\t\n            <param name=\"cbSize\"><dd>  <p>The size, in bytes, of a <strong><see cref=\"T:SharpDX.RawInput.RawInputDevice\"/></strong> structure. </p> </dd></param>\t\n            <returns><p>If successful, the function returns a non-negative number that is the number of <strong><see cref=\"T:SharpDX.RawInput.RawInputDevice\"/></strong> structures written to the buffer. </p><p>If the <em>pRawInputDevices</em> buffer is too small or <strong><c>null</c></strong>, the function sets the last error as <strong><see cref=\"F:SharpDX.Win32.ErrorCode.InsufficientBuffer\"/></strong>, returns -1, and sets <em>puiNumDevices</em> to the required number of devices. If the function fails for any other reason, it returns -1. For more details, call <strong>GetLastError</strong>. </p></returns>\t\n            <remarks>\t\n            <p>To receive raw input from a device, an application must register it by using <strong>RegisterRawInputDevices</strong>. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='GetRegisteredRawInputDevices']/*\"/>\t\n            <msdn-id>ms645599</msdn-id>\t\n            <unmanaged>unsigned int GetRegisteredRawInputDevices([Out, Buffer, Optional] RAWINPUTDEVICE* pRawInputDevices,[InOut] unsigned int* puiNumDevices,[In] unsigned int cbSize)</unmanaged>\t\n            <unmanaged-short>GetRegisteredRawInputDevices</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.RawInput.RawInputFunctions.GetRawInputDeviceInfo(System.IntPtr,SharpDX.RawInput.RawInputDeviceInfoType,System.IntPtr,System.Int32@)\">\n            <summary>\t\n            <p>Retrieves information about the raw input device.</p>\t\n            </summary>\t\n            <param name=\"hDevice\"><dd>  <p>A handle to the raw input device. This comes from the  <em>lParam</em> of the <strong>WM_INPUT</strong> message, from the <strong>hDevice</strong> member of <strong><see cref=\"T:SharpDX.RawInput.RawInputHeader\"/></strong>, or from <strong>GetRawInputDeviceList</strong>. It can also be <strong><c>null</c></strong> if an application inserts input data, for example, by using <strong>SendInput</strong>. </p> </dd></param>\t\n            <param name=\"uiCommand\"><dd>  <p>Specifies what data will be returned in  <em>pData</em>. This parameter can be one of the following values. </p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.RawInput.RawInputDeviceInfoType.DeviceName\"/></strong></dt> <dt>0x20000007</dt> </dl> </td><td> <p><em>pData</em> points to a string that contains the device name. </p> <p>For this  <em>uiCommand</em> only, the value in  <em>pcbSize</em> is the character count (not the byte count).</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.RawInput.RawInputDeviceInfoType.DeviceInfo\"/></strong></dt> <dt>0x2000000b</dt> </dl> </td><td> <p><em>pData</em> points to an <strong><see cref=\"T:SharpDX.RawInput.RawDeviceInformation\"/></strong> structure.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.RawInput.RawInputDeviceInfoType.PreparsedData\"/></strong></dt> <dt>0x20000005</dt> </dl> </td><td> <p><em>pData</em> points to the previously parsed data.</p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <param name=\"dataRef\"><dd>  <p>A reference to a buffer that contains the information specified by  <em>uiCommand</em>. If  <em>uiCommand</em> is <strong><see cref=\"F:SharpDX.RawInput.RawInputDeviceInfoType.DeviceInfo\"/></strong>, set the <strong>cbSize</strong> member of <strong><see cref=\"T:SharpDX.RawInput.RawDeviceInformation\"/></strong> to <code>sizeof(<see cref=\"T:SharpDX.RawInput.RawDeviceInformation\"/>)</code> before calling <strong>GetRawInputDeviceInfo</strong>. </p> </dd></param>\t\n            <param name=\"cbSizeRef\"><dd>  <p>The size, in bytes, of the data in  <em>pData</em>. </p> </dd></param>\t\n            <returns><p>If successful, this function returns a non-negative number indicating the number of bytes copied to  <em>pData</em>. </p><p>If  <em>pData</em> is not large enough for the data, the function returns -1. If  <em>pData</em> is <strong><c>null</c></strong>, the function returns a value of zero. In both of these cases,  <em>pcbSize</em> is set to the minimum size required for the  <em>pData</em> buffer.</p><p>Call <strong>GetLastError</strong> to identify any other errors.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='GetRawInputDeviceInfoW']/*\"/>\t\n            <msdn-id>ms645597</msdn-id>\t\n            <unmanaged>unsigned int GetRawInputDeviceInfoW([In, Optional] void* hDevice,[In] RAW_INPUT_DEVICE_INFO_TYPE uiCommand,[Out, Buffer, Optional] void* pData,[InOut] unsigned int* pcbSize)</unmanaged>\t\n            <unmanaged-short>GetRawInputDeviceInfoW</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.RawInput.RawInputFunctions.RegisterRawInputDevices(SharpDX.RawInput.RawInputDevice[],System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Registers the devices that supply the raw input data.</p>\t\n            </summary>\t\n            <param name=\"rawInputDevicesRef\"><dd>  <p>An array of <strong><see cref=\"T:SharpDX.RawInput.RawInputDevice\"/></strong> structures that represent the devices that supply the raw input.</p> </dd></param>\t\n            <param name=\"uiNumDevices\"><dd>  <p>The number of <strong><see cref=\"T:SharpDX.RawInput.RawInputDevice\"/></strong> structures pointed to by <em>pRawInputDevices</em>.</p> </dd></param>\t\n            <param name=\"cbSize\"><dd>  <p>The size, in bytes, of a <strong><see cref=\"T:SharpDX.RawInput.RawInputDevice\"/></strong> structure.</p> </dd></param>\t\n            <returns><p><strong>TRUE</strong> if the function succeeds; otherwise, <strong><see cref=\"F:SharpDX.Result.False\"/></strong>. If the function fails, call <strong>GetLastError</strong> for more information.</p></returns>\t\n            <remarks>\t\n            <p>To receive <strong>WM_INPUT</strong> messages, an application must first register the raw input devices using <strong>RegisterRawInputDevices</strong>. By default, an application does not receive raw input.</p><p>To receive <strong>WM_INPUT_DEVICE_CHANGE</strong> messages, an application must specify the  <see cref=\"F:SharpDX.RawInput.DeviceFlags.DeviceNotify\"/> flag for each device class that is specified by the usUsagePage and usUsage fields of the  <strong><see cref=\"T:SharpDX.RawInput.RawInputDevice\"/></strong> structure  .  By default, an application does not receive  <strong>WM_INPUT_DEVICE_CHANGE</strong> notifications for raw input device arrival and removal.</p><p>If a <strong><see cref=\"T:SharpDX.RawInput.RawInputDevice\"/></strong> structure has the <see cref=\"F:SharpDX.RawInput.DeviceFlags.Remove\"/> flag set and the hwndTarget parameter is not set to <c>null</c>, then parameter validation will fail. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RegisterRawInputDevices']/*\"/>\t\n            <msdn-id>ms645600</msdn-id>\t\n            <unmanaged>BOOL RegisterRawInputDevices([In, Buffer] const RAWINPUTDEVICE* pRawInputDevices,[In] unsigned int uiNumDevices,[In] unsigned int cbSize)</unmanaged>\t\n            <unmanaged-short>RegisterRawInputDevices</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.RawInput.RawInputFunctions.GetRawInputBuffer(SharpDX.RawInput.RawInput[],System.Int32@,System.Int32)\">\n            <summary>\t\n            <p>Performs a buffered read of the raw input data.</p>\t\n            </summary>\t\n            <param name=\"dataRef\"><dd>  <p>A reference to a buffer of <strong><see cref=\"T:SharpDX.RawInput.RawInput\"/></strong> structures that contain the raw input data. If <strong><c>null</c></strong>, the minimum required buffer, in bytes, is returned in *<em>pcbSize</em>. </p> </dd></param>\t\n            <param name=\"cbSizeRef\"><dd>  <p>The size, in bytes, of a <strong><see cref=\"T:SharpDX.RawInput.RawInput\"/></strong> structure. </p> </dd></param>\t\n            <param name=\"cbSizeHeader\"><dd>  <p>The size, in bytes, of the <strong><see cref=\"T:SharpDX.RawInput.RawInputHeader\"/></strong> structure. </p> </dd></param>\t\n            <returns><p>If  <em>pData</em> is <c>null</c> and the function is successful, the return value is zero. If  <em>pData</em> is not <c>null</c> and the function is successful, the return value is the number of <strong><see cref=\"T:SharpDX.RawInput.RawInput\"/></strong> structures written to  <em>pData</em>.</p><p>If an error occurs, the return value is (<strong>UINT</strong>)-1. Call <strong>GetLastError</strong> for the error code.</p></returns>\t\n            <remarks>\t\n            <p>Using <strong>GetRawInputBuffer</strong>, the raw input data is buffered in the array of <strong><see cref=\"T:SharpDX.RawInput.RawInput\"/></strong> structures. For an unbuffered read, use the <strong>GetMessage</strong> function to read in the raw input data. </p><p>The <strong>NEXTRAWINPUTBLOCK</strong> macro allows an application to traverse an array of <strong><see cref=\"T:SharpDX.RawInput.RawInput\"/></strong> structures.</p><p><strong>Note</strong>??To get the correct size of the raw input buffer, do not use *<em>pcbSize</em>, use *<em>pcbSize</em> * 8 instead.   To ensure <strong>GetRawInputBuffer</strong> behaves properly on WOW64, you must align the <strong><see cref=\"T:SharpDX.RawInput.RawInput\"/></strong> structure by 8 bytes. The following code shows how to align <strong><see cref=\"T:SharpDX.RawInput.RawInput\"/></strong> for WOW64.  </p><pre><code>[StructLayout(LayoutKind.Explicit)]\t\n            internal struct <see cref=\"T:SharpDX.RawInput.RawInput\"/>\t\n            { [FieldOffset(0)] public <see cref=\"T:SharpDX.RawInput.RawInputHeader\"/> header; [FieldOffset(16+8)] public <see cref=\"T:SharpDX.RawInput.RawMouse\"/> mouse; [FieldOffset(16+8)] public <see cref=\"T:SharpDX.RawInput.RawKeyboard\"/> keyboard; [FieldOffset(16+8)] public <see cref=\"T:SharpDX.RawInput.RawHid\"/> hid;\t\n            }\t\n            </code></pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='GetRawInputBuffer']/*\"/>\t\n            <msdn-id>ms645595</msdn-id>\t\n            <unmanaged>unsigned int GetRawInputBuffer([Out, Buffer, Optional] RAWINPUT* pData,[InOut] unsigned int* pcbSize,[In] unsigned int cbSizeHeader)</unmanaged>\t\n            <unmanaged-short>GetRawInputBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.RawInput.RawInputFunctions.GetRawInputData(System.IntPtr,SharpDX.RawInput.RawInputDataType,System.IntPtr,System.Int32@,System.Int32)\">\n            <summary>\t\n            <p>Retrieves the raw input from the specified device.</p>\t\n            </summary>\t\n            <param name=\"hRawInput\"><dd>  <p>A handle to the <strong><see cref=\"T:SharpDX.RawInput.RawInput\"/></strong> structure. This comes from the  <em>lParam</em> in <strong>WM_INPUT</strong>. </p> </dd></param>\t\n            <param name=\"uiCommand\"><dd>  <p>The command flag. This parameter can be one of the following values. </p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.RawInput.RawInputDataType.Header\"/></strong></dt> <dt>0x10000005</dt> </dl> </td><td> <p>Get the header information from the <strong><see cref=\"T:SharpDX.RawInput.RawInput\"/></strong> structure.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.RawInput.RawInputDataType.Input\"/></strong></dt> <dt>0x10000003</dt> </dl> </td><td> <p>Get the raw data from the <strong><see cref=\"T:SharpDX.RawInput.RawInput\"/></strong> structure.</p> </td></tr> </table> <p>?</p> </dd></param>\t\n            <param name=\"dataRef\"><dd>  <p>A reference to the data that comes from the <strong><see cref=\"T:SharpDX.RawInput.RawInput\"/></strong> structure. This depends on the value of  <em>uiCommand</em>. If  <em>pData</em> is <strong><c>null</c></strong>, the required size of the buffer is returned in *<em>pcbSize</em>. </p> </dd></param>\t\n            <param name=\"cbSizeRef\"><dd>  <p>The size, in bytes, of the data in  <em>pData</em>. </p> </dd></param>\t\n            <param name=\"cbSizeHeader\"><dd>  <p>The size, in bytes, of the <strong><see cref=\"T:SharpDX.RawInput.RawInputHeader\"/></strong> structure. </p> </dd></param>\t\n            <returns><p>If  <em>pData</em> is <strong><c>null</c></strong> and the function is successful, the return value is 0. If  <em>pData</em> is not <strong><c>null</c></strong> and the function is successful, the return value is the number of bytes copied into pData.</p><p>If there is an error, the return value is (<strong>UINT</strong>)-1.</p></returns>\t\n            <remarks>\t\n            <p><strong>GetRawInputData</strong> gets the raw input one <strong><see cref=\"T:SharpDX.RawInput.RawInput\"/></strong> structure at a time. In contrast, <strong>GetRawInputBuffer</strong> gets an array of <strong><see cref=\"T:SharpDX.RawInput.RawInput\"/></strong> structures.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='GetRawInputData']/*\"/>\t\n            <msdn-id>ms645596</msdn-id>\t\n            <unmanaged>unsigned int GetRawInputData([In] HRAWINPUT hRawInput,[In] RAW_INPUT_DATA_TYPE uiCommand,[Out, Buffer, Optional] void* pData,[InOut] unsigned int* pcbSize,[In] unsigned int cbSizeHeader)</unmanaged>\t\n            <unmanaged-short>GetRawInputData</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.RawInput.RawDeviceInformation\">\n            <summary>\t\n            <p>Defines the raw input data coming from any device. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RID_DEVICE_INFO']/*\"/>\t\n            <msdn-id>ms645581</msdn-id>\t\n            <unmanaged>RID_DEVICE_INFO</unmanaged>\t\n            <unmanaged-short>RID_DEVICE_INFO</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.RawDeviceInformation.Size\">\n            <summary>\t\n            <dd> <p>The size, in bytes, of the <strong><see cref=\"T:SharpDX.RawInput.RawDeviceInformation\"/></strong> structure. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RID_DEVICE_INFO::cbSize']/*\"/>\t\n            <msdn-id>ms645581</msdn-id>\t\n            <unmanaged>unsigned int cbSize</unmanaged>\t\n            <unmanaged-short>unsigned int cbSize</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.RawDeviceInformation.Type\">\n            <summary>\t\n            <dd> <p>The type of raw input data. This member can be one of the following values. </p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.RawInput.DeviceType.HumanInputDevice\"/></strong></dt> <dt>2</dt> </dl> </td><td> <p>Data comes from an HID that is not a keyboard or a mouse.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.RawInput.DeviceType.Keyboard\"/></strong></dt> <dt>1</dt> </dl> </td><td> <p>Data comes from a keyboard.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.RawInput.DeviceType.Mouse\"/></strong></dt> <dt>0</dt> </dl> </td><td> <p>Data comes from a mouse.</p> </td></tr> </table> <p>?</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RID_DEVICE_INFO::dwType']/*\"/>\t\n            <msdn-id>ms645581</msdn-id>\t\n            <unmanaged>RAW_DEVICE_TYPE dwType</unmanaged>\t\n            <unmanaged-short>RAW_DEVICE_TYPE dwType</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.RawDeviceInformation.Mouse\">\n            <summary>\t\n            <dd> <p>If <strong>dwType</strong> is <strong><see cref=\"F:SharpDX.RawInput.DeviceType.Mouse\"/></strong>, this is the <strong><see cref=\"T:SharpDX.RawInput.RawDeviceInformationMouse\"/></strong> structure that defines the mouse. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RID_DEVICE_INFO::mouse']/*\"/>\t\n            <msdn-id>ms645581</msdn-id>\t\n            <unmanaged>RID_DEVICE_INFO_MOUSE mouse</unmanaged>\t\n            <unmanaged-short>RID_DEVICE_INFO_MOUSE mouse</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.RawDeviceInformation.Keyboard\">\n            <summary>\t\n            <dd> <p>If <strong>dwType</strong> is <strong><see cref=\"F:SharpDX.RawInput.DeviceType.Keyboard\"/></strong>, this is the <strong><see cref=\"T:SharpDX.RawInput.RawDeviceInformationKeyboard\"/></strong> structure that defines the keyboard. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RID_DEVICE_INFO::keyboard']/*\"/>\t\n            <msdn-id>ms645581</msdn-id>\t\n            <unmanaged>RID_DEVICE_INFO_KEYBOARD keyboard</unmanaged>\t\n            <unmanaged-short>RID_DEVICE_INFO_KEYBOARD keyboard</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.RawDeviceInformation.Hid\">\n            <summary>\t\n            <dd> <p>If <strong>dwType</strong> is <strong><see cref=\"F:SharpDX.RawInput.DeviceType.HumanInputDevice\"/></strong>, this is the <strong><see cref=\"T:SharpDX.RawInput.RawDeviceInformationHid\"/></strong> structure that defines the HID device. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RID_DEVICE_INFO::hid']/*\"/>\t\n            <msdn-id>ms645581</msdn-id>\t\n            <unmanaged>RID_DEVICE_INFO_HID hid</unmanaged>\t\n            <unmanaged-short>RID_DEVICE_INFO_HID hid</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.RawInput.RawDeviceInformationHid\">\n            <summary>\t\n            <p>Defines the raw input data coming from the specified Human Interface Device (HID). </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RID_DEVICE_INFO_HID']/*\"/>\t\n            <msdn-id>ms645584</msdn-id>\t\n            <unmanaged>RID_DEVICE_INFO_HID</unmanaged>\t\n            <unmanaged-short>RID_DEVICE_INFO_HID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.RawDeviceInformationHid.VendorId\">\n            <summary>\t\n            <dd> <p>The vendor identifier for the HID. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RID_DEVICE_INFO_HID::dwVendorId']/*\"/>\t\n            <msdn-id>ms645584</msdn-id>\t\n            <unmanaged>unsigned int dwVendorId</unmanaged>\t\n            <unmanaged-short>unsigned int dwVendorId</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.RawDeviceInformationHid.ProductId\">\n            <summary>\t\n            <dd> <p>The product identifier for the HID. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RID_DEVICE_INFO_HID::dwProductId']/*\"/>\t\n            <msdn-id>ms645584</msdn-id>\t\n            <unmanaged>unsigned int dwProductId</unmanaged>\t\n            <unmanaged-short>unsigned int dwProductId</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.RawDeviceInformationHid.VersionNumber\">\n            <summary>\t\n            <dd> <p>The version number for the HID. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RID_DEVICE_INFO_HID::dwVersionNumber']/*\"/>\t\n            <msdn-id>ms645584</msdn-id>\t\n            <unmanaged>unsigned int dwVersionNumber</unmanaged>\t\n            <unmanaged-short>unsigned int dwVersionNumber</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.RawDeviceInformationHid.UsagePage\">\n            <summary>\t\n            <dd> <p>The top-level collection Usage Page for the device. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RID_DEVICE_INFO_HID::usUsagePage']/*\"/>\t\n            <msdn-id>ms645584</msdn-id>\t\n            <unmanaged>HID_USAGE_PAGE usUsagePage</unmanaged>\t\n            <unmanaged-short>HID_USAGE_PAGE usUsagePage</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.RawDeviceInformationHid.Usage\">\n            <summary>\t\n            <dd> <p>The top-level collection Usage for the device. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RID_DEVICE_INFO_HID::usUsage']/*\"/>\t\n            <msdn-id>ms645584</msdn-id>\t\n            <unmanaged>HID_USAGE_ID usUsage</unmanaged>\t\n            <unmanaged-short>HID_USAGE_ID usUsage</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.RawInput.RawDeviceInformationKeyboard\">\n            <summary>\t\n            <p>Defines the raw input data coming from the specified keyboard. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>For the keyboard, the Usage Page is 1 and the Usage is 6. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RID_DEVICE_INFO_KEYBOARD']/*\"/>\t\n            <msdn-id>ms645587</msdn-id>\t\n            <unmanaged>RID_DEVICE_INFO_KEYBOARD</unmanaged>\t\n            <unmanaged-short>RID_DEVICE_INFO_KEYBOARD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.RawDeviceInformationKeyboard.Type\">\n            <summary>\t\n            <dd> <p>The type of the keyboard. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RID_DEVICE_INFO_KEYBOARD::dwType']/*\"/>\t\n            <msdn-id>ms645587</msdn-id>\t\n            <unmanaged>unsigned int dwType</unmanaged>\t\n            <unmanaged-short>unsigned int dwType</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.RawDeviceInformationKeyboard.SubType\">\n            <summary>\t\n            <dd> <p>The subtype of the keyboard. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RID_DEVICE_INFO_KEYBOARD::dwSubType']/*\"/>\t\n            <msdn-id>ms645587</msdn-id>\t\n            <unmanaged>unsigned int dwSubType</unmanaged>\t\n            <unmanaged-short>unsigned int dwSubType</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.RawDeviceInformationKeyboard.KeyboardMode\">\n            <summary>\t\n            <dd> <p>The  scan code mode. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RID_DEVICE_INFO_KEYBOARD::dwKeyboardMode']/*\"/>\t\n            <msdn-id>ms645587</msdn-id>\t\n            <unmanaged>unsigned int dwKeyboardMode</unmanaged>\t\n            <unmanaged-short>unsigned int dwKeyboardMode</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.RawDeviceInformationKeyboard.NumberOfFunctionKeys\">\n            <summary>\t\n            <dd> <p>The number of function keys on the keyboard.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RID_DEVICE_INFO_KEYBOARD::dwNumberOfFunctionKeys']/*\"/>\t\n            <msdn-id>ms645587</msdn-id>\t\n            <unmanaged>unsigned int dwNumberOfFunctionKeys</unmanaged>\t\n            <unmanaged-short>unsigned int dwNumberOfFunctionKeys</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.RawDeviceInformationKeyboard.NumberOfIndicators\">\n            <summary>\t\n            <dd> <p>The number of LED indicators on the keyboard.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RID_DEVICE_INFO_KEYBOARD::dwNumberOfIndicators']/*\"/>\t\n            <msdn-id>ms645587</msdn-id>\t\n            <unmanaged>unsigned int dwNumberOfIndicators</unmanaged>\t\n            <unmanaged-short>unsigned int dwNumberOfIndicators</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.RawDeviceInformationKeyboard.NumberOfKeysTotal\">\n            <summary>\t\n            <dd> <p>The total number of keys on the keyboard. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RID_DEVICE_INFO_KEYBOARD::dwNumberOfKeysTotal']/*\"/>\t\n            <msdn-id>ms645587</msdn-id>\t\n            <unmanaged>unsigned int dwNumberOfKeysTotal</unmanaged>\t\n            <unmanaged-short>unsigned int dwNumberOfKeysTotal</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.RawInput.RawDeviceInformationMouse\">\n            <summary>\t\n            <p>Defines the raw input data coming from the specified mouse.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>For the mouse, the Usage Page is 1 and the Usage is 2.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RID_DEVICE_INFO_MOUSE']/*\"/>\t\n            <msdn-id>ms645589</msdn-id>\t\n            <unmanaged>RID_DEVICE_INFO_MOUSE</unmanaged>\t\n            <unmanaged-short>RID_DEVICE_INFO_MOUSE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.RawDeviceInformationMouse.Id\">\n            <summary>\t\n            <dd> <p>The identifier of the mouse device.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RID_DEVICE_INFO_MOUSE::dwId']/*\"/>\t\n            <msdn-id>ms645589</msdn-id>\t\n            <unmanaged>unsigned int dwId</unmanaged>\t\n            <unmanaged-short>unsigned int dwId</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.RawDeviceInformationMouse.NumberOfButtons\">\n            <summary>\t\n            <dd> <p>The number of buttons for the mouse.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RID_DEVICE_INFO_MOUSE::dwNumberOfButtons']/*\"/>\t\n            <msdn-id>ms645589</msdn-id>\t\n            <unmanaged>unsigned int dwNumberOfButtons</unmanaged>\t\n            <unmanaged-short>unsigned int dwNumberOfButtons</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.RawDeviceInformationMouse.SampleRate\">\n            <summary>\t\n            <dd> <p>The number of data points per second. This information may not be applicable for every mouse device.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RID_DEVICE_INFO_MOUSE::dwSampleRate']/*\"/>\t\n            <msdn-id>ms645589</msdn-id>\t\n            <unmanaged>unsigned int dwSampleRate</unmanaged>\t\n            <unmanaged-short>unsigned int dwSampleRate</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.RawDeviceInformationMouse.HasHorizontalWheel\">\n            <summary>\t\n            <dd> <p><strong>TRUE</strong> if the mouse has a wheel for horizontal scrolling; otherwise, <strong><see cref=\"F:SharpDX.Result.False\"/></strong>. </p> <strong>Windows?XP:??</strong>This member is only supported starting with Windows?Vista. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RID_DEVICE_INFO_MOUSE::fHasHorizontalWheel']/*\"/>\t\n            <msdn-id>ms645589</msdn-id>\t\n            <unmanaged>BOOL fHasHorizontalWheel</unmanaged>\t\n            <unmanaged-short>BOOL fHasHorizontalWheel</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.RawInput.RawHid\">\n            <summary>\t\n            <p>Describes the format of the raw input from a Human Interface Device (HID). </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Each <strong>WM_INPUT</strong> can indicate several inputs, but all of the inputs come from the same HID. The size of the <strong>bRawData</strong> array is <strong>dwSizeHid</strong> *\t<strong>dwCount</strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RAWHID']/*\"/>\t\n            <msdn-id>ms645549</msdn-id>\t\n            <unmanaged>RAWHID</unmanaged>\t\n            <unmanaged-short>RAWHID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.RawHid.SizeHid\">\n            <summary>\t\n            <dd> <p>The size, in bytes, of each HID input in <strong>bRawData</strong>. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RAWHID::dwSizeHid']/*\"/>\t\n            <msdn-id>ms645549</msdn-id>\t\n            <unmanaged>unsigned int dwSizeHid</unmanaged>\t\n            <unmanaged-short>unsigned int dwSizeHid</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.RawHid.Count\">\n            <summary>\t\n            <dd> <p>The number of HID inputs in <strong>bRawData</strong>.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RAWHID::dwCount']/*\"/>\t\n            <msdn-id>ms645549</msdn-id>\t\n            <unmanaged>unsigned int dwCount</unmanaged>\t\n            <unmanaged-short>unsigned int dwCount</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.RawHid.RawData\">\n            <summary>\t\n            <dd> <p>The raw input data, as an array of bytes. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RAWHID::bRawData']/*\"/>\t\n            <msdn-id>ms645549</msdn-id>\t\n            <unmanaged>int bRawData</unmanaged>\t\n            <unmanaged-short>int bRawData</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.RawInput.RawInput\">\n            <summary>\t\n            <p>Contains the raw input from a device. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The handle to this structure is passed in the <em>lParam</em> parameter of <strong>WM_INPUT</strong>.</p><p>To get detailed information -- such as the header and the content of the raw input -- call <strong>GetRawInputData</strong>.</p><p>To read the <strong><see cref=\"T:SharpDX.RawInput.RawInput\"/></strong> in the message loop as a buffered read, call <strong>GetRawInputBuffer</strong>. </p><p>To get device specific information, call <strong>GetRawInputDeviceInfo</strong> with the <em>hDevice</em> from <strong><see cref=\"T:SharpDX.RawInput.RawInputHeader\"/></strong>.</p><p>Raw input is available only when the application calls <strong>RegisterRawInputDevices</strong> with valid device specifications. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RAWINPUT']/*\"/>\t\n            <msdn-id>ms645562</msdn-id>\t\n            <unmanaged>RAWINPUT</unmanaged>\t\n            <unmanaged-short>RAWINPUT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.RawInput.Header\">\n            <summary>\t\n            <dd> <p>The raw input data. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RAWINPUT::header']/*\"/>\t\n            <msdn-id>ms645562</msdn-id>\t\n            <unmanaged>RAWINPUTHEADER header</unmanaged>\t\n            <unmanaged-short>RAWINPUTHEADER header</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.RawInput.Data\">\n            <summary>\t\n            <dd> <dl> <dt><strong>mouse</strong></dt> <dd><p></p></dd> <dd> <p>If the data comes from a mouse, this is the raw input data. </p> </dd> <dt><strong>keyboard</strong></dt> <dd><p></p></dd> <dd> <p>If the data comes from a keyboard, this is the raw input data. </p> </dd> <dt><strong>hid</strong></dt> <dd><p></p></dd> <dd> <p>If the data comes from an HID, this is the raw input data. </p> </dd> </dl> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RAWINPUT::data']/*\"/>\t\n            <msdn-id>ms645562</msdn-id>\t\n            <unmanaged>RAWINPUT_INNER_0 data</unmanaged>\t\n            <unmanaged-short>RAWINPUT_INNER_0 data</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.RawInput.RawInputDevice\">\n            <summary>\t\n            <p>Defines information for the raw input devices. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>If <strong><see cref=\"F:SharpDX.RawInput.DeviceFlags.NoLegacy\"/></strong> is set for a mouse or a keyboard, the system does not generate any legacy message for that device for the application. For example, if the mouse TLC is set with <strong><see cref=\"F:SharpDX.RawInput.DeviceFlags.NoLegacy\"/></strong>, <strong>WM_LBUTTONDOWN</strong> and related legacy mouse messages are not generated. Likewise, if the keyboard TLC is set with <strong><see cref=\"F:SharpDX.RawInput.DeviceFlags.NoLegacy\"/></strong>, <strong><see cref=\"F:SharpDX.RawInput.KeyState.KeyDown\"/></strong> and related legacy keyboard messages are not generated.</p><p>If <strong><see cref=\"F:SharpDX.RawInput.DeviceFlags.Remove\"/></strong> is set and the <strong>hwndTarget</strong> member is not set to <strong><c>null</c></strong>, then parameter validation will fail.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RAWINPUTDEVICE']/*\"/>\t\n            <msdn-id>ms645565</msdn-id>\t\n            <unmanaged>RAWINPUTDEVICE</unmanaged>\t\n            <unmanaged-short>RAWINPUTDEVICE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.RawInputDevice.UsagePage\">\n            <summary>\t\n            <dd> <p>Top level collection Usage page for the raw input device. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RAWINPUTDEVICE::usUsagePage']/*\"/>\t\n            <msdn-id>ms645565</msdn-id>\t\n            <unmanaged>unsigned short usUsagePage</unmanaged>\t\n            <unmanaged-short>unsigned short usUsagePage</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.RawInputDevice.Usage\">\n            <summary>\t\n            <dd> <p>Top level collection Usage for the raw input device. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RAWINPUTDEVICE::usUsage']/*\"/>\t\n            <msdn-id>ms645565</msdn-id>\t\n            <unmanaged>unsigned short usUsage</unmanaged>\t\n            <unmanaged-short>unsigned short usUsage</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.RawInputDevice.Flags\">\n            <summary>\t\n            <dd> <p>Mode flag that specifies how to interpret the information provided by <strong>usUsagePage</strong> and <strong>usUsage</strong>. It can be zero (the default) or one of the following values. By default, the operating system sends raw input from devices with the specified top level collection (TLC) to the registered application as long as it has the window focus. </p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.RawInput.DeviceFlags.AppKeys\"/></strong></dt> <dt>0x00000400</dt> </dl> </td><td> <p>If set, the application command keys are handled. <strong><see cref=\"F:SharpDX.RawInput.DeviceFlags.AppKeys\"/></strong> can be specified only if <strong><see cref=\"F:SharpDX.RawInput.DeviceFlags.NoLegacy\"/></strong> is specified for a keyboard device.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.RawInput.DeviceFlags.CaptureMouse\"/></strong></dt> <dt>0x00000200</dt> </dl> </td><td> <p>If set, the mouse button click does not activate the other window.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.RawInput.DeviceFlags.DeviceNotify\"/></strong></dt> <dt>0x00002000</dt> </dl> </td><td> <p>If set, this enables the caller to receive <strong>WM_INPUT_DEVICE_CHANGE</strong> notifications for device arrival and device removal.</p> <strong>Windows?XP:??</strong>This flag is not supported until Windows?Vista </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.RawInput.DeviceFlags.Exclude\"/></strong></dt> <dt>0x00000010</dt> </dl> </td><td> <p>If set, this specifies the top level collections to exclude when reading a complete usage page. This flag only affects a TLC whose usage page is already specified with <strong><see cref=\"F:SharpDX.RawInput.DeviceFlags.PageOnly\"/></strong>. </p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.RawInput.DeviceFlags.ExclusiveInputSink\"/></strong></dt> <dt>0x00001000</dt> </dl> </td><td> <p>If set, this enables the caller to receive input in the background only if the foreground application does not process it. In other words, if the foreground application is not registered for raw input, then the background application that is registered will receive the input.</p> <strong>Windows?XP:??</strong>This flag is not supported until Windows?Vista </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.RawInput.DeviceFlags.InputSink\"/></strong></dt> <dt>0x00000100</dt> </dl> </td><td> <p>If set, this enables the caller to receive the input even when the caller is not in the foreground.  Note that <strong>hwndTarget</strong> must be specified.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.RawInput.DeviceFlags.NoHotKeys\"/></strong></dt> <dt>0x00000200</dt> </dl> </td><td> <p>If set, the application-defined keyboard device hotkeys are not handled. However, the system hotkeys; for example, ALT+TAB and CTRL+ALT+DEL, are still handled. By default, all keyboard hotkeys are handled. <strong><see cref=\"F:SharpDX.RawInput.DeviceFlags.NoHotKeys\"/></strong> can be specified even if <strong><see cref=\"F:SharpDX.RawInput.DeviceFlags.NoLegacy\"/></strong> is not specified and <strong>hwndTarget</strong> is <strong><c>null</c></strong>.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.RawInput.DeviceFlags.NoLegacy\"/></strong></dt> <dt>0x00000030</dt> </dl> </td><td> <p>If set, this prevents any devices specified by <strong>usUsagePage</strong> or <strong>usUsage</strong> from generating legacy messages. This is only for the mouse and keyboard. See Remarks.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.RawInput.DeviceFlags.PageOnly\"/></strong></dt> <dt>0x00000020</dt> </dl> </td><td> <p>If set, this specifies all devices whose top level collection is from the specified <strong>usUsagePage</strong>. Note that <strong>usUsage</strong> must be zero. To exclude a particular top level collection, use <strong><see cref=\"F:SharpDX.RawInput.DeviceFlags.Exclude\"/></strong>.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.RawInput.DeviceFlags.Remove\"/></strong></dt> <dt>0x00000001</dt> </dl> </td><td> <p>If set, this removes the top level collection from the inclusion list. This tells the operating system to stop reading from a device which matches the top level collection.</p> </td></tr> </table> <p>?</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RAWINPUTDEVICE::dwFlags']/*\"/>\t\n            <msdn-id>ms645565</msdn-id>\t\n            <unmanaged>unsigned int dwFlags</unmanaged>\t\n            <unmanaged-short>unsigned int dwFlags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.RawInputDevice.Target\">\n            <summary>\t\n            <dd> <p>A handle to the target window. If <strong><c>null</c></strong> it follows the keyboard focus.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RAWINPUTDEVICE::hwndTarget']/*\"/>\t\n            <msdn-id>ms645565</msdn-id>\t\n            <unmanaged>HWND hwndTarget</unmanaged>\t\n            <unmanaged-short>HWND hwndTarget</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.RawInput.RawInputDevicelist\">\n            <summary>\t\n            <p>Contains information about a raw input device.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RAWINPUTDEVICELIST']/*\"/>\t\n            <msdn-id>ms645568</msdn-id>\t\n            <unmanaged>RAWINPUTDEVICELIST</unmanaged>\t\n            <unmanaged-short>RAWINPUTDEVICELIST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.RawInputDevicelist.Device\">\n            <summary>\t\n            <dd> <p>A handle to the raw input device. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RAWINPUTDEVICELIST::hDevice']/*\"/>\t\n            <msdn-id>ms645568</msdn-id>\t\n            <unmanaged>void* hDevice</unmanaged>\t\n            <unmanaged-short>void hDevice</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.RawInputDevicelist.Type\">\n            <summary>\t\n            <dd> <p>The type of device. This can be one of the following values. </p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.RawInput.DeviceType.HumanInputDevice\"/></strong></dt> <dt>2</dt> </dl> </td><td> <p>The device is an HID that is not a keyboard and not a mouse.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.RawInput.DeviceType.Keyboard\"/></strong></dt> <dt>1</dt> </dl> </td><td> <p>The device is a keyboard.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.RawInput.DeviceType.Mouse\"/></strong></dt> <dt>0</dt> </dl> </td><td> <p>The device is a mouse.</p> </td></tr> </table> <p>?</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RAWINPUTDEVICELIST::dwType']/*\"/>\t\n            <msdn-id>ms645568</msdn-id>\t\n            <unmanaged>unsigned int dwType</unmanaged>\t\n            <unmanaged-short>unsigned int dwType</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.RawInput.RawInputHeader\">\n            <summary>\t\n            <p>Contains the header information that is part of the raw input data. </p>\t\n            </summary>\t\n            <remarks>\t\n            <p>To get more information on the device, use <strong>hDevice</strong> in a call to <strong>GetRawInputDeviceInfo</strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RAWINPUTHEADER']/*\"/>\t\n            <msdn-id>ms645571</msdn-id>\t\n            <unmanaged>RAWINPUTHEADER</unmanaged>\t\n            <unmanaged-short>RAWINPUTHEADER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.RawInputHeader.Type\">\n            <summary>\t\n            <dd> <p>The type of raw input. It can be one of the following values. </p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.RawInput.DeviceType.HumanInputDevice\"/></strong></dt> <dt>2</dt> </dl> </td><td> <p>Raw input comes from some device that is not a keyboard or a mouse.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.RawInput.DeviceType.Keyboard\"/></strong></dt> <dt>1</dt> </dl> </td><td> <p>Raw input comes from the keyboard.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.RawInput.DeviceType.Mouse\"/></strong></dt> <dt>0</dt> </dl> </td><td> <p>Raw input comes from the mouse.</p> </td></tr> </table> <p>?</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RAWINPUTHEADER::dwType']/*\"/>\t\n            <msdn-id>ms645571</msdn-id>\t\n            <unmanaged>RAW_DEVICE_TYPE dwType</unmanaged>\t\n            <unmanaged-short>RAW_DEVICE_TYPE dwType</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.RawInputHeader.Size\">\n            <summary>\t\n            <dd> <p>The size, in bytes, of the entire input packet of data. This includes <strong><see cref=\"T:SharpDX.RawInput.RawInput\"/></strong> plus possible extra input reports in the <strong><see cref=\"T:SharpDX.RawInput.RawHid\"/></strong> variable length array. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RAWINPUTHEADER::dwSize']/*\"/>\t\n            <msdn-id>ms645571</msdn-id>\t\n            <unmanaged>unsigned int dwSize</unmanaged>\t\n            <unmanaged-short>unsigned int dwSize</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.RawInputHeader.Device\">\n            <summary>\t\n            <dd> <p>A handle to the device generating the raw input data. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RAWINPUTHEADER::hDevice']/*\"/>\t\n            <msdn-id>ms645571</msdn-id>\t\n            <unmanaged>void* hDevice</unmanaged>\t\n            <unmanaged-short>void hDevice</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.RawInputHeader.Param\">\n            <summary>\t\n            <dd> <p>The value passed in the  <em>wParam</em> parameter of the <strong>WM_INPUT</strong> message. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RAWINPUTHEADER::wParam']/*\"/>\t\n            <msdn-id>ms645571</msdn-id>\t\n            <unmanaged>UINT_PTR wParam</unmanaged>\t\n            <unmanaged-short>UINT_PTR wParam</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.RawInput.RawInputInner0\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RAWINPUT_INNER_0']/*\"/>\t\n            <unmanaged>RAWINPUT_INNER_0</unmanaged>\t\n            <unmanaged-short>RAWINPUT_INNER_0</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.RawInputInner0.Mouse\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RAWINPUT_INNER_0::mouse']/*\"/>\t\n            <unmanaged>RAWMOUSE mouse</unmanaged>\t\n            <unmanaged-short>RAWMOUSE mouse</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.RawInputInner0.Keyboard\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RAWINPUT_INNER_0::keyboard']/*\"/>\t\n            <unmanaged>RAWKEYBOARD keyboard</unmanaged>\t\n            <unmanaged-short>RAWKEYBOARD keyboard</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.RawInputInner0.Hid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RAWINPUT_INNER_0::hid']/*\"/>\t\n            <unmanaged>RAWHID hid</unmanaged>\t\n            <unmanaged-short>RAWHID hid</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.RawInput.RawKeyboard\">\n            <summary>\t\n            <p>Contains information about the state of the keyboard. </p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RAWKEYBOARD']/*\"/>\t\n            <msdn-id>ms645575</msdn-id>\t\n            <unmanaged>RAWKEYBOARD</unmanaged>\t\n            <unmanaged-short>RAWKEYBOARD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.RawKeyboard.MakeCode\">\n            <summary>\t\n            <dd> <p>The scan code from the key depression. The scan code for keyboard overrun is <strong>KEYBOARD_OVERRUN_MAKE_CODE</strong>. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RAWKEYBOARD::MakeCode']/*\"/>\t\n            <msdn-id>ms645575</msdn-id>\t\n            <unmanaged>unsigned short MakeCode</unmanaged>\t\n            <unmanaged-short>unsigned short MakeCode</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.RawKeyboard.Flags\">\n            <summary>\t\n            <dd> <p>Flags for scan code information. It can be one or more of the following.</p> <table> <tr><th>Value</th><th>Meaning</th></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.RawInput.ScanCodeFlags.Break\"/></strong></dt> <dt>1</dt> </dl> </td><td> <p>The key is up.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.RawInput.ScanCodeFlags.E0\"/></strong></dt> <dt>2</dt> </dl> </td><td> <p>This is the left version of the key.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.RawInput.ScanCodeFlags.E1\"/></strong></dt> <dt>4</dt> </dl> </td><td> <p>This is the right version of the key.</p> </td></tr> <tr><td><dl> <dt><strong><see cref=\"F:SharpDX.RawInput.ScanCodeFlags.Make\"/></strong></dt> <dt>0</dt> </dl> </td><td> <p>The key is down.</p> </td></tr> </table> <p>?</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RAWKEYBOARD::Flags']/*\"/>\t\n            <msdn-id>ms645575</msdn-id>\t\n            <unmanaged>RAW_SCAN_CODE_FLAGS Flags</unmanaged>\t\n            <unmanaged-short>RAW_SCAN_CODE_FLAGS Flags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.RawKeyboard.Reserved\">\n            <summary>\t\n            <dd> <p>Reserved; must be zero. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RAWKEYBOARD::Reserved']/*\"/>\t\n            <msdn-id>ms645575</msdn-id>\t\n            <unmanaged>unsigned short Reserved</unmanaged>\t\n            <unmanaged-short>unsigned short Reserved</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.RawKeyboard.VKey\">\n            <summary>\t\n            <dd> <p>Windows message compatible virtual-key code. For more information, see Virtual Key Codes. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RAWKEYBOARD::VKey']/*\"/>\t\n            <msdn-id>ms645575</msdn-id>\t\n            <unmanaged>unsigned short VKey</unmanaged>\t\n            <unmanaged-short>unsigned short VKey</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.RawKeyboard.Message\">\n            <summary>\t\n            <dd> <p>The corresponding window message, for example <strong><see cref=\"F:SharpDX.RawInput.KeyState.KeyDown\"/></strong>, <strong><see cref=\"F:SharpDX.RawInput.KeyState.SystemKeyDown\"/></strong>, and so forth. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RAWKEYBOARD::Message']/*\"/>\t\n            <msdn-id>ms645575</msdn-id>\t\n            <unmanaged>RAW_KEY_STATE Message</unmanaged>\t\n            <unmanaged-short>RAW_KEY_STATE Message</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.RawInput.RawKeyboard.ExtraInformation\">\n            <summary>\t\n            <dd> <p>The device-specific additional information for the event. </p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='RAWKEYBOARD::ExtraInformation']/*\"/>\t\n            <msdn-id>ms645575</msdn-id>\t\n            <unmanaged>unsigned int ExtraInformation</unmanaged>\t\n            <unmanaged-short>unsigned int ExtraInformation</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.RawInput.HidInfo\">\n            <summary>\n            Defines the raw input data coming from the specified Human Interface Device (HID). \n            </summary>\n        </member>\n        <member name=\"M:SharpDX.RawInput.HidInfo.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.RawInput.HidInfo\"/> class.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.RawInput.HidInfo.#ctor(SharpDX.RawInput.RawDeviceInformation@,System.String,System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.RawInput.HidInfo\"/> class.\n            </summary>\n            <param name=\"rawDeviceInfo\">The raw device info.</param>\n            <param name=\"deviceName\">Name of the device.</param>\n            <param name=\"deviceHandle\">The device handle.</param>\n        </member>\n        <member name=\"P:SharpDX.RawInput.HidInfo.VendorId\">\n            <summary>\n            Gets or sets the vendor id.\n            </summary>\n            <value>\n            The vendor id.\n            </value>\n            <unmanaged>unsigned int dwVendorId</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.RawInput.HidInfo.ProductId\">\n            <summary>\n            Gets or sets the product id.\n            </summary>\n            <value>\n            The product id.\n            </value>\n            <unmanaged>unsigned int dwProductId</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.RawInput.HidInfo.VersionNumber\">\n            <summary>\n            Gets or sets the version number.\n            </summary>\n            <value>\n            The version number.\n            </value>\n            <unmanaged>unsigned int dwVersionNumber</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.RawInput.HidInfo.UsagePage\">\n            <summary>\n            Gets or sets the usage page.\n            </summary>\n            <value>\n            The usage page.\n            </value>\n            <unmanaged>HID_USAGE_PAGE usUsagePage</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.RawInput.HidInfo.Usage\">\n            <summary>\n            Gets or sets the usage.\n            </summary>\n            <value>\n            The usage.\n            </value>\n            <unmanaged>HID_USAGE_ID usUsage</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.RawInput.HidInputEventArgs\">\n            <summary>\n            Describes the format of the raw input from a Human Interface Device (HID). \n            </summary>\n        </member>\n        <member name=\"T:SharpDX.RawInput.RawInputEventArgs\">\n            <summary>\n            RawInput event arguments base.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.RawInput.RawInputEventArgs.Device\">\n            <summary>\n            Gets or sets the RawInput device.\n            </summary>\n            <value>\n            The device.\n            </value>\n        </member>\n        <member name=\"M:SharpDX.RawInput.HidInputEventArgs.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.RawInput.HidInputEventArgs\"/> class.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.RawInput.HidInputEventArgs.#ctor(SharpDX.RawInput.RawInput@)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.RawInput.HidInputEventArgs\"/> class.\n            </summary>\n            <param name=\"rawInput\">The raw input.</param>\n        </member>\n        <member name=\"P:SharpDX.RawInput.HidInputEventArgs.Count\">\n            <summary>\n            Gets or sets the number of Hid structure in the <see cref=\"P:SharpDX.RawInput.HidInputEventArgs.RawData\"/>.\n            </summary>\n            <value>\n            The count.\n            </value>\n        </member>\n        <member name=\"P:SharpDX.RawInput.HidInputEventArgs.DataSize\">\n            <summary>\n            Gets or sets the size of the Hid structure in the <see cref=\"P:SharpDX.RawInput.HidInputEventArgs.RawData\"/>.\n            </summary>\n            <value>\n            The size of the data.\n            </value>\n        </member>\n        <member name=\"P:SharpDX.RawInput.HidInputEventArgs.RawData\">\n            <summary>\n            Gets or sets the raw data.\n            </summary>\n            <value>\n            The raw data.\n            </value>\n        </member>\n        <member name=\"T:SharpDX.RawInput.KeyboardInfo\">\n            <summary>\n            Defines the raw input data coming from the specified keyboard. \n            </summary>\n            <unmanaged>RID_DEVICE_INFO_KEYBOARD</unmanaged>\t\n        </member>\n        <member name=\"M:SharpDX.RawInput.KeyboardInfo.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.RawInput.KeyboardInfo\"/> class.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.RawInput.KeyboardInfo.#ctor(SharpDX.RawInput.RawDeviceInformation@,System.String,System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.RawInput.KeyboardInfo\"/> class.\n            </summary>\n            <param name=\"rawDeviceInfo\">The raw device info.</param>\n            <param name=\"deviceName\">Name of the device.</param>\n            <param name=\"deviceHandle\">The device handle.</param>\n        </member>\n        <member name=\"P:SharpDX.RawInput.KeyboardInfo.KeyboardType\">\n            <summary>\n            Gets or sets the type of the keyboard.\n            </summary>\n            <value>\n            The type of the keyboard.\n            </value>\n            <unmanaged>unsigned int dwType</unmanaged>\t\n        </member>\n        <member name=\"P:SharpDX.RawInput.KeyboardInfo.Subtype\">\n            <summary>\n            Gets or sets the subtype.\n            </summary>\n            <value>\n            The subtype.\n            </value>\n            <unmanaged>unsigned int dwSubType</unmanaged>\t\n        </member>\n        <member name=\"P:SharpDX.RawInput.KeyboardInfo.KeyboardMode\">\n            <summary>\n            Gets or sets the keyboard mode.\n            </summary>\n            <value>\n            The keyboard mode.\n            </value>\n            <unmanaged>unsigned int dwKeyboardMode</unmanaged>\t\n        </member>\n        <member name=\"P:SharpDX.RawInput.KeyboardInfo.FunctionKeyCount\">\n            <summary>\n            Gets or sets the function key count.\n            </summary>\n            <value>\n            The function key count.\n            </value>\n            <unmanaged>unsigned int dwNumberOfFunctionKeys</unmanaged>\t\n        </member>\n        <member name=\"P:SharpDX.RawInput.KeyboardInfo.IndicatorCount\">\n            <summary>\n            Gets or sets the indicator count.\n            </summary>\n            <value>\n            The indicator count.\n            </value>\n            <unmanaged>unsigned int dwNumberOfIndicators</unmanaged>\t\n        </member>\n        <member name=\"P:SharpDX.RawInput.KeyboardInfo.TotalKeyCount\">\n            <summary>\n            Gets or sets the total key count.\n            </summary>\n            <value>\n            The total key count.\n            </value>\n            <unmanaged>unsigned int dwNumberOfKeysTotal</unmanaged>\t\n        </member>\n        <member name=\"T:SharpDX.RawInput.KeyboardInputEventArgs\">\n            <summary>\n            RawInput Keyboard event.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.RawInput.KeyboardInputEventArgs.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.RawInput.KeyboardInputEventArgs\"/> class.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.RawInput.KeyboardInputEventArgs.#ctor(SharpDX.RawInput.RawInput@)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.RawInput.KeyboardInputEventArgs\"/> class.\n            </summary>\n            <param name=\"rawInput\">The raw input.</param>\n        </member>\n        <member name=\"P:SharpDX.RawInput.KeyboardInputEventArgs.Key\">\n            <summary>\n            Gets or sets the key.\n            </summary>\n            <value>\n            The key.\n            </value>\n        </member>\n        <member name=\"P:SharpDX.RawInput.KeyboardInputEventArgs.MakeCode\">\n            <summary>\n            Gets or sets the make code.\n            </summary>\n            <value>\n            The make code.\n            </value>\n        </member>\n        <member name=\"P:SharpDX.RawInput.KeyboardInputEventArgs.ScanCodeFlags\">\n            <summary>\n            Gets or sets the scan code flags.\n            </summary>\n            <value>\n            The scan code flags.\n            </value>\n        </member>\n        <member name=\"P:SharpDX.RawInput.KeyboardInputEventArgs.State\">\n            <summary>\n            Gets or sets the state.\n            </summary>\n            <value>\n            The state.\n            </value>\n        </member>\n        <member name=\"P:SharpDX.RawInput.KeyboardInputEventArgs.ExtraInformation\">\n            <summary>\n            Gets or sets the extra information.\n            </summary>\n            <value>\n            The extra information.\n            </value>\n        </member>\n        <member name=\"T:SharpDX.RawInput.MouseInfo\">\n            <summary>\n            Defines the raw input data coming from the specified mouse.\n            </summary>\n            <unmanaged>RID_DEVICE_INFO_MOUSE</unmanaged>\t\n        </member>\n        <member name=\"M:SharpDX.RawInput.MouseInfo.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.RawInput.MouseInfo\"/> class.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.RawInput.MouseInfo.#ctor(SharpDX.RawInput.RawDeviceInformation@,System.String,System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.RawInput.MouseInfo\"/> class.\n            </summary>\n            <param name=\"rawDeviceInfo\">The raw device info.</param>\n            <param name=\"deviceName\">Name of the device.</param>\n            <param name=\"deviceHandle\">The device handle.</param>\n        </member>\n        <member name=\"P:SharpDX.RawInput.MouseInfo.Id\">\n            <summary>\n            Gets or sets the id.\n            </summary>\n            <value>\n            The id.\n            </value>\n            <unmanaged>unsigned int dwId</unmanaged>\t\n        </member>\n        <member name=\"P:SharpDX.RawInput.MouseInfo.ButtonCount\">\n            <summary>\n            Gets or sets the button count.\n            </summary>\n            <value>\n            The button count.\n            </value>\n            <unmanaged>unsigned int dwNumberOfButtons</unmanaged>\t\n        </member>\n        <member name=\"P:SharpDX.RawInput.MouseInfo.SampleRate\">\n            <summary>\n            Gets or sets the sample rate.\n            </summary>\n            <value>\n            The sample rate.\n            </value>\n            <unmanaged>unsigned int dwSampleRate</unmanaged>\t\n        </member>\n        <member name=\"P:SharpDX.RawInput.MouseInfo.HasHorizontalWheel\">\n            <summary>\n            Gets or sets a value indicating whether this instance has horizontal wheel.\n            </summary>\n            <value>\n            \t<c>true</c> if this instance has horizontal wheel; otherwise, <c>false</c>.\n            </value>\n            <unmanaged>BOOL fHasHorizontalWheel</unmanaged>\t\n        </member>\n        <member name=\"T:SharpDX.RawInput.MouseInputEventArgs\">\n            <summary>\n            RawInput Mouse event.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.RawInput.MouseInputEventArgs.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.RawInput.MouseInputEventArgs\"/> class.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.RawInput.MouseInputEventArgs.#ctor(SharpDX.RawInput.RawInput@)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.RawInput.MouseInputEventArgs\"/> class.\n            </summary>\n            <param name=\"rawInput\">The raw input.</param>\n        </member>\n        <member name=\"P:SharpDX.RawInput.MouseInputEventArgs.Mode\">\n            <summary>\n            Gets or sets the mode.\n            </summary>\n            <value>\n            The mode.\n            </value>\n        </member>\n        <member name=\"P:SharpDX.RawInput.MouseInputEventArgs.ButtonFlags\">\n            <summary>\n            Gets or sets the button flags.\n            </summary>\n            <value>\n            The button flags.\n            </value>\n        </member>\n        <member name=\"P:SharpDX.RawInput.MouseInputEventArgs.ExtraInformation\">\n            <summary>\n            Gets or sets the extra information.\n            </summary>\n            <value>\n            The extra information.\n            </value>\n        </member>\n        <member name=\"P:SharpDX.RawInput.MouseInputEventArgs.Buttons\">\n            <summary>\n            Gets or sets the raw buttons.\n            </summary>\n            <value>\n            The raw buttons.\n            </value>\n        </member>\n        <member name=\"P:SharpDX.RawInput.MouseInputEventArgs.WheelDelta\">\n            <summary>\n            Gets or sets the wheel delta.\n            </summary>\n            <value>\n            The wheel delta.\n            </value>\n        </member>\n        <member name=\"P:SharpDX.RawInput.MouseInputEventArgs.X\">\n            <summary>\n            Gets or sets the X.\n            </summary>\n            <value>\n            The X.\n            </value>\n        </member>\n        <member name=\"P:SharpDX.RawInput.MouseInputEventArgs.Y\">\n            <summary>\n            Gets or sets the Y.\n            </summary>\n            <value>\n            The Y.\n            </value>\n        </member>\n        <member name=\"T:SharpDX.RawInput.NamespaceDoc\">\n            <summary>\n            The <see cref=\"N:SharpDX.RawInput\"/> namespace provides a managed RawInput API.\n            </summary>\n            <msdn-id>ms645536</msdn-id>\n            <unmanaged>RawInput</unmanaged>\t\n            <unmanaged-short>RawInput</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.RawInput.RawMouse\">\n            <summary>\n            Contains information about the state of the mouse.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.RawInput.RawMouse.Flags\">\n            <summary>\n            The mouse state.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.RawInput.RawMouse.RawButtons\">\n            <summary>\n            Raw button data.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.RawInput.RawMouse.LastX\">\n            <summary>\n            The motion in the X direction. This is signed relative motion or\n            absolute motion, depending on the value of usFlags.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.RawInput.RawMouse.LastY\">\n            <summary>\n            The motion in the Y direction. This is signed relative motion or absolute motion,\n            depending on the value of usFlags.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.RawInput.RawMouse.ExtraInformation\">\n            <summary>\n            The device-specific additional information for the event.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.RawInput.RawMouse.RawMouseButtonsData.ButtonFlags\">\n            <summary>\n            Flags for the event.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.RawInput.RawMouse.RawMouseButtonsData.ButtonData\">\n            <summary>\n            If the mouse wheel is moved, this will contain the delta amount.\n            </summary>\n        </member>\n    </members>\n</doc>\n"
  },
  {
    "path": "3rd/SharpDX/SharpDX.Toolkit.Compiler.xml",
    "content": "<?xml version=\"1.0\"?>\n<doc>\n    <assembly>\n        <name>SharpDX.Toolkit.Compiler</name>\n    </assembly>\n    <members>\n        <member name=\"T:SharpDX.Toolkit.Graphics.Ast\">\n            <summary>\n            A simple ast used to store technique/pass parsing result.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.Ast.Node\">\n            <summary>\n            Root node for all ast objects.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.Ast.Expression\">\n            <summary>\n            Root node for all expressions.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.Ast.Statement\">\n            <summary>\n            Root node for all statements.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.Ast.Identifier\">\n            <summary>\n            An identifier.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Ast.Identifier.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.Ast.Identifier\"/> class.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Ast.Identifier.#ctor(System.String)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.Ast.Identifier\"/> class.\n            </summary>\n            <param name=\"text\">The name.</param>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.Ast.Identifier.Text\">\n            <summary>\n            The identifier as a string.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.Ast.Identifier.IsIndirect\">\n            <summary>\n            Is an indirect reference using &lt;...&gt;.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.Ast.IndexedIdentifier\">\n            <summary>\n            An indexed identifier.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Ast.IndexedIdentifier.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.Ast.IndexedIdentifier\"/> class.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Ast.IndexedIdentifier.#ctor(System.String,System.Int32)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.Ast.IndexedIdentifier\"/> class.\n            </summary>\n            <param name=\"text\">The name.</param>\n            <param name=\"index\">The index.</param>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.Ast.IndexedIdentifier.Index\">\n            <summary>\n            The index\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.Ast.Literal\">\n            <summary>\n            A literal value.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Ast.Literal.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.Ast.Literal\"/> class.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Ast.Literal.#ctor(System.Object)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.Ast.Literal\"/> class.\n            </summary>\n            <param name=\"value\">The value.</param>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.Ast.Literal.Value\">\n            <summary>\n            The literal value.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.Ast.ExpressionStatement\">\n            <summary>\n            An expression statement.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Ast.ExpressionStatement.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.Ast.ExpressionStatement\"/> class.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Ast.ExpressionStatement.#ctor(SharpDX.Toolkit.Graphics.Ast.Expression)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.Ast.ExpressionStatement\"/> class.\n            </summary>\n            <param name=\"expression\">The expression.</param>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.Ast.ExpressionStatement.Expression\">\n            <summary>\n            The Expression.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.Ast.ArrayInitializerExpression\">\n            <summary>\n            An array initialzer {...} expression.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Ast.ArrayInitializerExpression.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.Ast.ArrayInitializerExpression\"/> class.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.Ast.ArrayInitializerExpression.Values\">\n            <summary>\n            List of values.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.Ast.IdentifierExpression\">\n            <summary>\n            A reference to an identifier.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Ast.IdentifierExpression.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.Ast.IdentifierExpression\"/> class.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Ast.IdentifierExpression.#ctor(SharpDX.Toolkit.Graphics.Ast.Identifier)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.Ast.IdentifierExpression\"/> class.\n            </summary>\n            <param name=\"name\">The name.</param>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.Ast.IdentifierExpression.Name\">\n            <summary>\n            The identifier referenced by this expression.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.Ast.AssignExpression\">\n            <summary>\n            An assign expression name = value.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Ast.AssignExpression.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.Ast.AssignExpression\"/> class.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Ast.AssignExpression.#ctor(SharpDX.Toolkit.Graphics.Ast.Identifier,SharpDX.Toolkit.Graphics.Ast.Expression)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.Ast.AssignExpression\"/> class.\n            </summary>\n            <param name=\"name\">The name.</param>\n            <param name=\"value\">The value.</param>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.Ast.AssignExpression.Name\">\n            <summary>\n            The identifier receiver. \n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.Ast.AssignExpression.Value\">\n            <summary>\n            The value to assign.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.Ast.LiteralExpression\">\n            <summary>\n            A literal expression.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Ast.LiteralExpression.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.Ast.LiteralExpression\"/> class.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Ast.LiteralExpression.#ctor(SharpDX.Toolkit.Graphics.Ast.Literal)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.Ast.LiteralExpression\"/> class.\n            </summary>\n            <param name=\"value\">The value.</param>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.Ast.CompileExpression\">\n            <summary>\n            A compile expression (old style d3d9: compile vx_2_0 VS();).\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Ast.CompileExpression.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.Ast.CompileExpression\"/> class.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Ast.CompileExpression.#ctor(SharpDX.Toolkit.Graphics.Ast.Identifier,SharpDX.Toolkit.Graphics.Ast.Expression)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.Ast.CompileExpression\"/> class.\n            </summary>\n            <param name=\"profile\"></param>\n            <param name=\"method\"></param>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.Ast.MethodExpression\">\n            <summary>\n            A method expression.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Ast.MethodExpression.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.Ast.MethodExpression\"/> class.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.Ast.MethodExpression.Name\">\n            <summary>\n            Name of the method.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.Ast.MethodExpression.Arguments\">\n            <summary>\n            Arguments.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.Ast.Pass\">\n            <summary>\n            A HLSL 'pass'.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Ast.Pass.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.Ast.Pass\"/> class.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.Ast.Pass.Name\">\n            <summary>\n            Name of the pass.\n            </summary>\n            <remarks>\n            Can be null.\n            </remarks>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.Ast.Pass.Statements\">\n            <summary>\n            List of statements.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.Ast.Technique\">\n            <summary>\n            A HLSL 'technique'.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Ast.Technique.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.Ast.Technique\"/> class.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.Ast.Technique.Name\">\n            <summary>\n            Name of the technique.\n            </summary>\n            <remarks>\n            Can be null.\n            </remarks>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.Ast.Technique.Passes\">\n            <summary>\n            List of passes.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.Ast.Shader\">\n            <summary>\n            Root ast for a shader.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Ast.Shader.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.Ast.Shader\"/> class.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.Ast.Shader.Techniques\">\n            <summary>\n            List of techniques.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.EffectCompilerInternal\">\n            <summary>\n            Main class used to compile a Toolkit FX file.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectCompilerInternal.CheckForChanges(System.String)\">\n            <summary>\n            Checks for changes from a dependency file.\n            </summary>\n            <param name=\"dependencyFilePath\">The dependency file path.</param>\n            <returns><c>true</c> if a file has been updated, <c>false</c> otherwise</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectCompilerInternal.CompileFromFile(System.String,SharpDX.Toolkit.Graphics.EffectCompilerFlags,System.Collections.Generic.List{SharpDX.Toolkit.Graphics.EffectData.ShaderMacro},System.Collections.Generic.List{System.String},System.Boolean,System.String)\">\n            <summary>\n            Compiles an effect from file.\n            </summary>\n            <param name=\"filePath\">The file path.</param>\n            <param name=\"flags\">The flags.</param>\n            <param name=\"macros\">The macrosArgs.</param>\n            <param name=\"includeDirectoryList\">The include directory list.</param>\n            <param name=\"includeFileDelegate\">The include file delegate.</param>\n            <returns>The result of compilation.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectCompilerInternal.Compile(System.String,System.String,SharpDX.Toolkit.Graphics.EffectCompilerFlags,System.Collections.Generic.List{SharpDX.Toolkit.Graphics.EffectData.ShaderMacro},System.Collections.Generic.List{System.String},System.Boolean,System.String)\">\n            <summary>\n            Compiles an effect from the specified source code and filepath.\n            </summary>\n            <param name=\"sourceCode\">The source code.</param>\n            <param name=\"filePath\">The file path.</param>\n            <param name=\"flags\">The flags.</param>\n            <param name=\"macrosArgs\">The macrosArgs.</param>\n            <param name=\"includeDirectoryList\">The include directory list.</param>\n            <param name=\"includeFileDelegate\">The include file delegate.</param>\n            <returns>The result of compilation.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectCompilerInternal.DisassembleShader(SharpDX.Toolkit.Graphics.EffectData.Shader)\">\n            <summary>\n            Disassembles a shader HLSL bytecode to asm code.\n            </summary>\n            <param name=\"shader\">The shader.</param>\n            <returns>A string containing asm code decoded from HLSL bytecode.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectCompilerInternal.BuildParameters(SharpDX.Toolkit.Graphics.EffectData.Shader,SharpDX.D3DCompiler.ShaderReflection)\">\n            <summary>\n              Builds the parameters for a particular shader.\n            </summary>\n            <param name=\"shader\"> The shader to build parameters. </param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectCompilerInternal.BuildConstantBufferParameter(SharpDX.D3DCompiler.ShaderReflectionVariable)\">\n            <summary>\n              Builds an effect parameter from a reflection variable.\n            </summary>\n            <returns> an EffectParameter, null if not handled </returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectCompilerInternal.BuildResourceParameter(System.String,SharpDX.D3DCompiler.InputBindingDescription)\">\n            <summary>\n              Builds an effect parameter from a reflection variable.\n            </summary>\n            <returns> an EffectParameter, null if not handled </returns>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.EffectCompiler\">\n            <summary>\n            Main class used to compile a Toolkit FX file.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectCompiler.CheckForChanges(System.String)\">\n            <summary>\n            Checks for changes from a dependency file.\n            </summary>\n            <param name=\"dependencyFilePath\">The dependency file path.</param>\n            <returns><c>true</c> if a file has been updated, <c>false</c> otherwise</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectCompiler.CompileFromFile(System.String,SharpDX.Toolkit.Graphics.EffectCompilerFlags,System.Collections.Generic.List{SharpDX.Toolkit.Graphics.EffectData.ShaderMacro},System.Collections.Generic.List{System.String},System.Boolean,System.String)\">\n            <summary>\n            Compiles an effect from file.\n            </summary>\n            <param name=\"filePath\">The file path.</param>\n            <param name=\"flags\">The flags.</param>\n            <param name=\"macros\">The macrosArgs.</param>\n            <param name=\"includeDirectoryList\">The include directory list.</param>\n            <returns>The result of compilation.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectCompiler.Compile(System.String,System.String,SharpDX.Toolkit.Graphics.EffectCompilerFlags,System.Collections.Generic.List{SharpDX.Toolkit.Graphics.EffectData.ShaderMacro},System.Collections.Generic.List{System.String},System.Boolean,System.String)\">\n            <summary>\n            Compiles an effect from the specified source code and filepath.\n            </summary>\n            <param name=\"sourceCode\">The source code.</param>\n            <param name=\"filePath\">The file path.</param>\n            <param name=\"flags\">The flags.</param>\n            <param name=\"macrosArgs\">The macrosArgs.</param>\n            <param name=\"includeDirectoryList\">The include directory list.</param>\n            <returns>The result of compilation.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectCompiler.DisassembleShader(SharpDX.Toolkit.Graphics.EffectData.Shader)\">\n            <summary>\n            Disassembles a shader HLSL bytecode to asm code.\n            </summary>\n            <param name=\"shader\">The shader.</param>\n            <returns>A string containing asm code decoded from HLSL bytecode.</returns>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.EffectDataCodeWriter\">\n            <summary>\n            Use this class to generate a code with embedded effect bytecode.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectDataCodeWriter.ClassDeclaration\">\n            <summary>\n            Gets or sets the class declaration (Default: \"public partial\").\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectDataCodeWriter.Namespace\">\n            <summary>\n            Gets or sets the namespace.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectDataCodeWriter.ClassName\">\n            <summary>\n            Gets or sets the classname.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectDataCodeWriter.FieldDeclaration\">\n            <summary>\n            Gets or sets the field declaration (default: \"private\").\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectDataCodeWriter.FieldName\">\n            <summary>\n            Gets or sets the field name (default: \"effectByteCode\").\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectDependencyList.CheckForChanges\">\n            <summary>\n            Checks for changes in the dependency file.\n            </summary>\n            <returns><c>true</c> if a file has been updated, <c>false</c> otherwise</returns>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectParser.EndOfFile\">\n            <summary>\n              End of file token.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectParser.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.EffectParser\"/> class.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectParser.PrepareParsing(System.String,System.String)\">\n            <summary>\n            Parses the specified input.\n            </summary>\n            <param name=\"input\">The input.</param>\n            <param name=\"fileName\">Name of the file.</param>\n            <returns>Result of parsing</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectParser.ContinueParsing(SharpDX.Toolkit.Graphics.EffectParserResult)\">\n            <summary>\n            Continues the parsing.\n            </summary>\n            <param name=\"previousParsing\">The previous parsing.</param>\n            <returns>EffectParserResult.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectParser.Parse(System.String,System.String)\">\n            <summary>\n            Parses the specified input.\n            </summary>\n            <param name=\"input\">The input.</param>\n            <param name=\"fileName\">Name of the file.</param>\n            <returns>Result of parsing</returns>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.EffectParser.IncludeFileCallback\">\n            <summary>\n            Gets or sets the include file callback.\n            </summary>\n            <value>The include file callback.</value>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.EffectParser.Macros\">\n            <summary>\n            Gets the macros.\n            </summary>\n            <value>The macros.</value>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.EffectParser.IncludeDirectoryList\">\n            <summary>\n            Gets the include directory list.\n            </summary>\n            <value>The include directory list.</value>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.EffectParser.Logger\">\n            <summary>\n            Gets or sets the logger.\n            </summary>\n            <value>The logger.</value>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.SourceSpan\">\n            <summary>\n            Location of a portion of source.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.SourceSpan.FilePath\">\n            <summary>\n            Path of the file.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.SourceSpan.Column\">\n            <summary>\n            Column of the span.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.SourceSpan.Line\">\n            <summary>\n            Line of the span.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.SourceSpan.Index\">\n            <summary>\n            Absolute index in the input string.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.SourceSpan.Length\">\n            <summary>\n            Length of the source span in the input string.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.Token\">\n            <summary>\n            Contains information about a token language.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Token.#ctor(SharpDX.Toolkit.Graphics.TokenType,System.String,SharpDX.Toolkit.Graphics.SourceSpan)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.Token\"/> struct.\n            </summary>\n            <param name=\"type\">The type.</param>\n            <param name=\"value\">The value.</param>\n            <param name=\"span\">The span.</param>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.Token.Type\">\n            <summary>\n            The type of the token.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.Token.Value\">\n            <summary>\n            Value of the token.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.Token.Span\">\n            <summary>\n            The source span.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.Tokenizer\">\n            <summary>\n            A simple tokenizer used to transform a HLSL sourcecode into a collection of tokens.\n            </summary>\n            <remarks>\n            This tokenizer is used to parse tokens inside technique/pass block. \n            See <see cref=\"T:SharpDX.Toolkit.Graphics.TokenType\"/> for the list of tokens that are supported inside technique/pass.\n            This tokenizer is not really efficient compare to a DFA (Deterministic Finite-state Automaton) \n            parser but enough suitable in our case (120 files from DirectX SDK parsed in 2s).\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Tokenizer.Run(System.String)\">\n            <summary>\n            Runs the tokenizer on an input string.\n            </summary>\n            <param name=\"input\">The string to decode to tokens.</param>\n            <returns>An enumeration of tokens.</returns>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.TokenType\">\n            <summary>\n            Type of a token language.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.TokenType.Newline\">\n            <summary>\n            A Newline.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.TokenType.Identifier\">\n            <summary>\n            An identifier.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.TokenType.Hexa\">\n            <summary>\n            A number in hexadecimal form.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.TokenType.Number\">\n            <summary>\n            A number.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.TokenType.Equal\">\n            <summary>\n            The symbol '='.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.TokenType.Comma\">\n            <summary>\n            A comma ','.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.TokenType.SemiColon\">\n            <summary>\n            A Semicolon ';'.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.TokenType.LeftCurlyBrace\">\n            <summary>\n            A left curly brace '{'.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.TokenType.RightCurlyBrace\">\n            <summary>\n            A right curly brace '}'.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.TokenType.LeftParent\">\n            <summary>\n            A left parenthesis '('.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.TokenType.RightParent\">\n            <summary>\n            A right parenthesis ')'.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.TokenType.LeftBracket\">\n            <summary>\n            A left bracket '['.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.TokenType.RightBracket\">\n            <summary>\n            A right bracket ']'.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.TokenType.String\">\n            <summary>\n            A string.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.TokenType.Preprocessor\">\n            <summary>\n            A preprocessor token '#'\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.TokenType.DoubleColon\">\n            <summary>\n            A double colon '::'.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.TokenType.Dot\">\n            <summary>\n            A dot '.'.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.TokenType.LessThan\">\n            <summary>\n            A '&lt;'.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.TokenType.GreaterThan\">\n            <summary>\n            A '&gt;'.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.TokenType.Unknown\">\n            <summary>\n            An unknown symbol.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.TokenType.EndOfFile\">\n            <summary>\n            A end of file token.\n            </summary>\n        </member>\n    </members>\n</doc>\n"
  },
  {
    "path": "3rd/SharpDX/SharpDX.Toolkit.CompilerTask.xml",
    "content": "<?xml version=\"1.0\"?>\n<doc>\n    <assembly>\n        <name>SharpDX.Toolkit.CompilerTask</name>\n    </assembly>\n    <members>\n        <member name=\"T:SharpDX.Toolkit.EffectCompilerTask\">\n            <summary>\n            TODO: COMMENT THIS CODE\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.EffectCompilerDependencyTask\">\n            <summary>\n            TODO: COMMENT THIS CODE\n            </summary>\n        </member>\n    </members>\n</doc>\n"
  },
  {
    "path": "3rd/SharpDX/SharpDX.Toolkit.Game.xml",
    "content": "<?xml version=\"1.0\"?>\n<doc>\n    <assembly>\n        <name>SharpDX.Toolkit.Game</name>\n    </assembly>\n    <members>\n        <member name=\"T:SharpDX.Toolkit.AssemblyDoc\">\n            <summary>\n            The <see cref=\"A:SharpDX.Toolkit.Game\"/> assembly provides a high level Game API.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.EffectCompilerEventArgs\">\n            <summary>\n            Describes an event when an effect is recompiled at runtime.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.EffectCompilerEventArgs.#ctor(SharpDX.Toolkit.Graphics.Effect,System.Collections.Generic.IList{SharpDX.Toolkit.Diagnostics.LogMessage})\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.EffectCompilerEventArgs\"/> class.\n            </summary>\n            <param name=\"effect\">The effect.</param>\n            <param name=\"messages\">The log messages.</param>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.EffectCompilerEventArgs.Effect\">\n            <summary>\n            Gets the effect.\n            </summary>\n            <value>The effect.</value>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.EffectCompilerEventArgs.Messages\">\n            <summary>\n            Gets compilation messages. See remarks.\n            </summary>\n            <value>The compilation messages.</value>\n            <remarks>\n            This field is only valid \n            </remarks>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.EffectCompilerSystem\">\n            <summary>\n            Allows to dynamically recompile Effects at runtime when original source code changed, without having to recompile the application. See remarks.\n            </summary>\n            <remarks>\n            The effect must have been compiled with tkfxc and option /Re. This features is only available from Windows Desktop and doesn't work\n            on other platforms.\n            </remarks>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.GameSystem\">\n            <summary>\n            Base class for a <see cref=\"T:SharpDX.Toolkit.GameSystem\"/> component.\n            </summary>\n            <remarks>\n            A <see cref=\"T:SharpDX.Toolkit.GameSystem\"/> component can be used to \n            </remarks>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.IGameSystem\">\n            <summary>\n            Defines a generic game system.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.IGameSystem.Initialize\">\n            <summary>\n            This method is called when the component is added to the game.\n            </summary>\n            <remarks>\n            This method can be used for tasks like querying for services the component needs and setting up non-graphics resources.\n            </remarks>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.IUpdateable\">\n            <summary>\n            An interface that is called by <see cref=\"M:SharpDX.Toolkit.Game.Update(SharpDX.Toolkit.GameTime)\"/>.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.IUpdateable.Update(SharpDX.Toolkit.GameTime)\">\n            <summary>\n            This method is called when this game component is updated.\n            </summary>\n            <param name=\"gameTime\">The current timing.</param>\n        </member>\n        <member name=\"E:SharpDX.Toolkit.IUpdateable.EnabledChanged\">\n            <summary>\n            Occurs when the <see cref=\"P:SharpDX.Toolkit.IUpdateable.Enabled\"/> property changes.\n            </summary>\n        </member>\n        <member name=\"E:SharpDX.Toolkit.IUpdateable.UpdateOrderChanged\">\n            <summary>\n            Occurs when the <see cref=\"P:SharpDX.Toolkit.IUpdateable.UpdateOrder\"/> property changes.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.IUpdateable.Enabled\">\n            <summary>\n            Gets a value indicating whether the game component's Update method should be called by <see cref=\"M:SharpDX.Toolkit.Game.Update(SharpDX.Toolkit.GameTime)\"/>.\n            </summary>\n            <value><c>true</c> if update is enabled; otherwise, <c>false</c>.</value>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.IUpdateable.UpdateOrder\">\n            <summary>\n            Gets the update order relative to other game components. Lower values are updated first.\n            </summary>\n            <value>The update order.</value>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.IDrawable\">\n            <summary>\n            An interface for a drawable game component that is called by the <see cref=\"T:SharpDX.Toolkit.Game\"/> class.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.IDrawable.BeginDraw\">\n            <summary>\n            Starts the drawing of a frame. This method is followed by calls to Draw and EndDraw.\n            </summary>\n            <returns><c>true</c> if Draw should occur, <c>false</c> otherwise</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.IDrawable.Draw(SharpDX.Toolkit.GameTime)\">\n            <summary>\n            Draws this instance.\n            </summary>\n            <param name=\"gameTime\">The current timing.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.IDrawable.EndDraw\">\n            <summary>\n            Ends the drawing of a frame. This method is preceeded by calls to Draw and BeginDraw.\n            </summary>\n        </member>\n        <member name=\"E:SharpDX.Toolkit.IDrawable.DrawOrderChanged\">\n            <summary>\n            Occurs when the <see cref=\"P:SharpDX.Toolkit.IDrawable.DrawOrder\"/> property changes.\n            </summary>\n        </member>\n        <member name=\"E:SharpDX.Toolkit.IDrawable.VisibleChanged\">\n            <summary>\n            Occurs when the <see cref=\"P:SharpDX.Toolkit.IDrawable.Visible\"/> property changes.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.IDrawable.Visible\">\n            <summary>\n            Gets a value indicating whether the <see cref=\"M:SharpDX.Toolkit.IDrawable.Draw(SharpDX.Toolkit.GameTime)\"/> method should be called by <see cref=\"M:SharpDX.Toolkit.Game.Draw(SharpDX.Toolkit.GameTime)\"/>.\n            </summary>\n            <value><c>true</c> if this drawable component is visible; otherwise, <c>false</c>.</value>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.IDrawable.DrawOrder\">\n            <summary>\n            Gets the draw order relative to other objects. <see cref=\"T:SharpDX.Toolkit.IDrawable\"/> objects with a lower value are drawn first.\n            </summary>\n            <value>The draw order.</value>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.IContentable\">\n            <summary>\n            An interface to load and unload content.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.IContentable.LoadContent\">\n            <summary>\n            Loads the content.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.IContentable.UnloadContent\">\n            <summary>\n            Called when graphics resources need to be unloaded. Override this method to unload any game-specific graphics resources.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.GameSystem.#ctor(SharpDX.IServiceRegistry)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.GameSystem\"/> class.\n            </summary>\n            <param name=\"registry\">The registry.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.GameSystem.#ctor(SharpDX.Toolkit.Game)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.GameSystem\"/> class.\n            </summary>\n            <param name=\"game\">The game.</param>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.GameSystem.Game\">\n            <summary>\n            Gets the <see cref=\"P:SharpDX.Toolkit.GameSystem.Game\"/> associated with this <see cref=\"T:SharpDX.Toolkit.GameSystem\"/>. This value can be null in a mock environment.\n            </summary>\n            <value>The game.</value>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.GameSystem.Services\">\n            <summary>\n            Gets the services registry.\n            </summary>\n            <value>The services registry.</value>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.GameSystem.Content\">\n            <summary>\n            Gets the content manager.\n            </summary>\n            <value>The content.</value>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.GameSystem.GraphicsDevice\">\n            <summary>\n            Gets the graphics device.\n            </summary>\n            <value>The graphics device.</value>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.EffectCompilerSystem.#ctor(SharpDX.Toolkit.Game)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.EffectCompilerSystem\"/> class.\n            </summary>\n            <param name=\"game\">The game.</param>\n        </member>\n        <member name=\"E:SharpDX.Toolkit.EffectCompilerSystem.CompilationEnded\">\n            <summary>\n            Occurs when a compilation ended for an effect.\n            </summary>\n        </member>\n        <member name=\"E:SharpDX.Toolkit.EffectCompilerSystem.CompilationError\">\n            <summary>\n            Occurs when a compilation error occured for an effect.\n            </summary>\n        </member>\n        <member name=\"E:SharpDX.Toolkit.EffectCompilerSystem.CompilationStarted\">\n            <summary>\n            Occurs when a compilation started for an effect.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.GameWindowRenderer\">\n            <summary>\n            A GameSystem that allows to draw to another window or control. Currently only valid on desktop with Windows.Forms.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.GameWindowRenderer.#ctor(SharpDX.IServiceRegistry,System.Object)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.GameWindowRenderer\"/> class.\n            </summary>\n            <param name=\"registry\">The registry.</param>\n            <param name=\"windowContext\">The window context.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.GameWindowRenderer.#ctor(SharpDX.Toolkit.Game,System.Object)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.GameWindowRenderer\"/> class.\n            </summary>\n            <param name=\"game\">The game.</param>\n            <param name=\"windowContext\">The window context.</param>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.GameWindowRenderer.NativeWindow\">\n            <summary>\n            Gets the underlying native window.\n            </summary>\n            <value>The underlying native window.</value>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.GameWindowRenderer.Window\">\n            <summary>\n            Gets the window.\n            </summary>\n            <value>The window.</value>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.GameWindowRenderer.Presenter\">\n            <summary>\n            Gets or sets the presenter.\n            </summary>\n            <value>The presenter.</value>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.GameWindowRenderer.PreferredBackBufferFormat\">\n            <summary>\n            Gets or sets the preferred back buffer format.\n            </summary>\n            <value>The preferred back buffer format.</value>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.GameWindowRenderer.PreferredBackBufferHeight\">\n            <summary>\n            Gets or sets the height of the preferred back buffer.\n            </summary>\n            <value>The height of the preferred back buffer.</value>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.GameWindowRenderer.PreferredBackBufferWidth\">\n            <summary>\n            Gets or sets the width of the preferred back buffer.\n            </summary>\n            <value>The width of the preferred back buffer.</value>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.GameWindowRenderer.PreferredDepthStencilFormat\">\n            <summary>\n            Gets or sets the preferred depth stencil format.\n            </summary>\n            <value>The preferred depth stencil format.</value>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.IGamePlatform\">\n            <summary>\n            Interface for a game platform (OS, machine dependent).\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.IGamePlatform.CreateWindow(System.Object,System.Int32,System.Int32)\">\n            <summary>\n            Creates the a new <see cref=\"T:SharpDX.Toolkit.GameWindow\"/>. See remarks.\n            </summary>\n            <param name=\"windowContext\">The window context. See remarks.</param>\n            <returns>A new game window.</returns>\n            <remarks>\n            This is currently only supported on Windows Desktop. The window context supported on windows is a subclass of System.Windows.Forms.Control (or null and a default RenderForm will be created).\n            </remarks>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.IGamePlatform.DefaultAppDirectory\">\n            <summary>\n            Gets the default app directory.\n            </summary>\n            <value>The default app directory.</value>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.IGamePlatform.MainWindow\">\n            <summary>\n            Gets the main window.\n            </summary>\n            <value>The main window.</value>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.GameGraphicsParameters\">\n            <summary>\n              Describess how data will be displayed to the screen.\n            </summary>\n            <msdn-id>bb173075</msdn-id>\n            <unmanaged>DXGI_SWAP_CHAIN_DESC</unmanaged>\n            <unmanaged-short>DXGI_SWAP_CHAIN_DESC</unmanaged-short>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.GameGraphicsParameters.PreferredBackBufferWidth\">\n            <summary>\n              A value that describes the resolution width.\n            </summary>\n            <msdn-id>bb173075</msdn-id>\n            <unmanaged>DXGI_MODE_DESC BufferDesc</unmanaged>\n            <unmanaged-short>DXGI_MODE_DESC BufferDesc</unmanaged-short>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.GameGraphicsParameters.PreferredBackBufferHeight\">\n            <summary>\n              A value that describes the resolution height.\n            </summary>\n            <msdn-id>bb173075</msdn-id>\n            <unmanaged>DXGI_MODE_DESC BufferDesc</unmanaged>\n            <unmanaged-short>DXGI_MODE_DESC BufferDesc</unmanaged-short>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.GameGraphicsParameters.PreferredBackBufferFormat\">\n            <summary>\n              A <strong><see cref=\"T:SharpDX.DXGI.Format\"/></strong> structure describing the display format.\n            </summary>\n            <msdn-id>bb173075</msdn-id>\n            <unmanaged>DXGI_MODE_DESC BufferDesc</unmanaged>\n            <unmanaged-short>DXGI_MODE_DESC BufferDesc</unmanaged-short>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.GameGraphicsParameters.PreferredDepthStencilFormat\">\n            <summary>\n            Gets or sets the depth stencil format\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.GameGraphicsParameters.IsFullScreen\">\n            <summary>\n              Gets or sets a value indicating whether the application is in full screen mode.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.GameGraphicsParameters.PreferredGraphicsProfile\">\n            <summary>\n            Gets or sets the minimum graphics profile.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.GameGraphicsParameters.PreferMultiSampling\">\n            <summary>\n              Gets or sets a value indicating the number of sample locations during multisampling.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.GameGraphicsParameters.SynchronizeWithVerticalRetrace\">\n            <summary>\n            Gets or sets a value indicating whether to synochrnize present with vertical blanking.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.GameWindowDesktop\">\n            <summary>\n            An abstract window.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.GameWindow\">\n            <summary>\n            An abstract window.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.GameWindow.Initialize(System.Object)\">\n            <summary>\n            Initializes the GameWindow with the specified window context.\n            </summary>\n            <param name=\"windowContext\">The window context.</param>\n        </member>\n        <member name=\"E:SharpDX.Toolkit.GameWindow.Activated\">\n            <summary>\n            Occurs when this window is activated.\n            </summary>\n        </member>\n        <member name=\"E:SharpDX.Toolkit.GameWindow.ClientSizeChanged\">\n            <summary>\n            Occurs, when device client size is changed.\n            </summary>\n        </member>\n        <member name=\"E:SharpDX.Toolkit.GameWindow.Deactivated\">\n            <summary>\n            Occurs when this window is deactivated.\n            </summary>\n        </member>\n        <member name=\"E:SharpDX.Toolkit.GameWindow.OrientationChanged\">\n            <summary>\n            Occurs, when device orientation is changed.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.GameWindow.AllowUserResizing\">\n            <summary>\n            Gets or sets, user possibility to resize this window.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.GameWindow.ClientBounds\">\n            <summary>\n            Gets the client bounds.\n            </summary>\n            <value>The client bounds.</value>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.GameWindow.CurrentOrientation\">\n            <summary>\n            Gets the current orientation.\n            </summary>\n            <value>The current orientation.</value>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.GameWindow.IsFullScreenMandatory\">\n            <summary>\n            Gets a value indicating whether this window is only suitable to run in full-screen mode.\n            </summary>\n            <value><c>true</c> if this window is only suitable to run in full-screen mode is full screen mandatory; otherwise, <c>false</c>.</value>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.GameWindow.IsMinimized\">\n            <summary>\n            Gets a value indicating whether this instance is minimized.\n            </summary>\n            <value><c>true</c> if this instance is minimized; otherwise, <c>false</c>.</value>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.GameWindow.IsMouseVisible\">\n            <summary>\n            Gets or sets a value indicating whether the mouse pointer is visible over this window.\n            </summary>\n            <value><c>true</c> if this instance is mouse visible; otherwise, <c>false</c>.</value>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.GameWindow.NativeWindow\">\n            <summary>\n            Gets the native window.\n            </summary>\n            <value>The native window.</value>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.GameWindow.Visible\">\n            <summary>\n            Gets or sets a value indicating whether this <see cref=\"T:SharpDX.Toolkit.GameWindow\"/> is visible.\n            </summary>\n            <value><c>true</c> if visible; otherwise, <c>false</c>.</value>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.GameWindow.Title\">\n            <summary>\n            Gets or sets the title of the window.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.GameWindowDesktop.Visible\">\n            <summary>\n            Gets or sets a value indicating whether this <see cref=\"T:SharpDX.Toolkit.GameWindow\"/> is visible.\n            </summary>\n            <value><c>true</c> if visible; otherwise, <c>false</c>.</value>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Game\">\n            <summary>\n            The game.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Game.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Game\"/> class.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Game.Exit\">\n            <summary>\n            Exits the game.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Game.ResetElapsedTime\">\n            <summary>\n            Resets the elapsed time counter.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Game.Run(System.Object)\">\n            <summary>\n            Call this method to initialize the game, begin running the game loop, and start processing events for the game.\n            </summary>\n            <param name=\"windowContext\">The window Context.</param>\n            <exception cref=\"T:System.InvalidOperationException\">Cannot run this instance while it is already running</exception>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Game.SuppressDraw\">\n            <summary>\n            Prevents calls to Draw until the next Update.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Game.Tick\">\n            <summary>\n            Updates the game's clock and calls Update and Draw.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Game.BeginDraw\">\n            <summary>\n            Starts the drawing of a frame. This method is followed by calls to Draw and EndDraw.\n            </summary>\n            <returns><c>true</c> to continue drawing, false to not call <see cref=\"M:SharpDX.Toolkit.Game.Draw(SharpDX.Toolkit.GameTime)\"/> and <see cref=\"M:SharpDX.Toolkit.Game.EndDraw\"/></returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Game.BeginRun\">\n            <summary>\n            Called after all components are initialized but before the first update in the game loop.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Game.Draw(SharpDX.Toolkit.GameTime)\">\n            <summary>\n            Reference page contains code sample.\n            </summary>\n            <param name=\"gameTime\">\n            Time passed since the last call to Draw.\n            </param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Game.EndDraw\">\n            <summary>Ends the drawing of a frame. This method is preceeded by calls to Draw and BeginDraw.</summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Game.EndRun\">\n            <summary>Called after the game loop has stopped running before exiting.</summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Game.Initialize\">\n            <summary>Called after the Game and GraphicsDevice are created, but before LoadContent.  Reference page contains code sample.</summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Game.LoadContent\">\n            <summary>\n            Loads the content.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Game.OnActivated(System.Object,System.EventArgs)\">\n            <summary>\n            Raises the Activated event. Override this method to add code to handle when the game gains focus.\n            </summary>\n            <param name=\"sender\">The Game.</param>\n            <param name=\"args\">Arguments for the Activated event.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Game.OnDeactivated(System.Object,System.EventArgs)\">\n            <summary>\n            Raises the Deactivated event. Override this method to add code to handle when the game loses focus.\n            </summary>\n            <param name=\"sender\">The Game.</param>\n            <param name=\"args\">Arguments for the Deactivated event.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Game.OnExiting(System.Object,System.EventArgs)\">\n            <summary>\n            Raises an Exiting event. Override this method to add code to handle when the game is exiting.\n            </summary>\n            <param name=\"sender\">The Game.</param>\n            <param name=\"args\">Arguments for the Exiting event.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Game.ShowMissingRequirementMessage(System.Exception)\">\n            <summary>\n            This is used to display an error message if there is no suitable graphics device or sound card.\n            </summary>\n            <param name=\"exception\">The exception to display.</param>\n            <returns>The <see cref=\"T:System.Boolean\"/>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Game.UnloadContent\">\n            <summary>\n            Called when graphics resources need to be unloaded. Override this method to unload any game-specific graphics resources.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Game.Update(SharpDX.Toolkit.GameTime)\">\n            <summary>\n            Reference page contains links to related conceptual articles.\n            </summary>\n            <param name=\"gameTime\">\n            Time passed since the last call to Update.\n            </param>\n        </member>\n        <member name=\"E:SharpDX.Toolkit.Game.Activated\">\n            <summary>\n            Occurs when [activated].\n            </summary>\n        </member>\n        <member name=\"E:SharpDX.Toolkit.Game.Deactivated\">\n            <summary>\n            Occurs when [deactivated].\n            </summary>\n        </member>\n        <member name=\"E:SharpDX.Toolkit.Game.Exiting\">\n            <summary>\n            Occurs when [exiting].\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Game.Content\">\n            <summary>\n            Gets or sets the <see cref=\"T:SharpDX.Toolkit.Content.ContentManager\"/>.\n            </summary>\n            <value>The content manager.</value>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Game.GameSystems\">\n            <summary>\n            Gets the game components registered by this game.\n            </summary>\n            <value>The game components.</value>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Game.GraphicsDevice\">\n            <summary>\n            Gets the graphics device.\n            </summary>\n            <value>The graphics device.</value>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Game.InactiveSleepTime\">\n            <summary>\n            Gets or sets the inactive sleep time.\n            </summary>\n            <value>The inactive sleep time.</value>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Game.IsActive\">\n            <summary>\n            Gets a value indicating whether this instance is active.\n            </summary>\n            <value><c>true</c> if this instance is active; otherwise, <c>false</c>.</value>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Game.IsFixedTimeStep\">\n            <summary>\n            Gets or sets a value indicating whether this instance is fixed time step.\n            </summary>\n            <value><c>true</c> if this instance is fixed time step; otherwise, <c>false</c>.</value>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Game.IsMouseVisible\">\n            <summary>\n            Gets or sets a value indicating whether the mouse should be visible.\n            </summary>\n            <value><c>true</c> if the mouse should be visible; otherwise, <c>false</c>.</value>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Game.LaunchParameters\">\n            <summary>\n            Gets the launch parameters.\n            </summary>\n            <value>The launch parameters.</value>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Game.IsRunning\">\n            <summary>\n            Gets a value indicating whether is running.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Game.Services\">\n            <summary>\n            Gets the service container.\n            </summary>\n            <value>The service container.</value>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Game.TargetElapsedTime\">\n            <summary>\n            Gets or sets the target elapsed time.\n            </summary>\n            <value>The target elapsed time.</value>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Game.Window\">\n            <summary>\n            Gets the abstract window.\n            </summary>\n            <value>The window.</value>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Game.DrawableComparer\">\n            <summary>\n            The comparer used to order <see cref=\"T:SharpDX.Toolkit.IDrawable\"/> objects.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Game.UpdateableComparer\">\n            <summary>\n            The comparer used to order <see cref=\"T:SharpDX.Toolkit.IUpdateable\"/> objects.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.GameSystemCollection\">\n            <summary>A collection of game components.</summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.GameServiceRegistry\">\n            <summary>\n            Main service provider for <see cref=\"T:SharpDX.Toolkit.Game\"/>.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.GameServiceRegistry.GetService(System.Type)\">\n            <summary>\n            Gets the instance service providing a specified service.\n            </summary>\n            <param name=\"type\">The type of service.</param>\n            <returns>The registered instance of this service.</returns>\n            <exception cref=\"T:System.ArgumentNullException\">type</exception>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.GameServiceRegistry.AddService(System.Type,System.Object)\">\n            <summary>\n            Adds a service to this <see cref=\"T:SharpDX.Toolkit.GameServiceRegistry\"/>.\n            </summary>\n            <param name=\"type\">The type of service to add.</param>\n            <param name=\"provider\">The service provider to add.</param>\n            <exception cref=\"T:System.ArgumentNullException\">type;Service type cannot be null</exception>\n            <exception cref=\"T:System.ArgumentException\">Service is already registered;type</exception>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.GameServiceRegistry.RemoveService(System.Type)\">\n            <summary>Removes the object providing a specified service.</summary>\n            <param name=\"type\">The type of service.</param>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.GameTime\">\n            <summary>\n            Current timing used for variable-step (real time) or fixed-step (game time) games.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.GameTime.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.GameTime\"/> class.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.GameTime.#ctor(System.TimeSpan,System.TimeSpan)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.GameTime\"/> class.\n            </summary>\n            <param name=\"totalGameTime\">The total game time since the start of the game.</param>\n            <param name=\"elapsedGameTime\">The elapsed game time since the last update.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.GameTime.#ctor(System.TimeSpan,System.TimeSpan,System.Boolean)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.GameTime\"/> class.\n            </summary>\n            <param name=\"totalGameTime\">The total game time since the start of the game.</param>\n            <param name=\"elapsedGameTime\">The elapsed game time since the last update.</param>\n            <param name=\"isRunningSlowly\">True if the game is running unexpectedly slowly.</param>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.GameTime.ElapsedGameTime\">\n            <summary>\n            Gets the elapsed game time since the last update\n            </summary>\n            <value>The elapsed game time.</value>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.GameTime.IsRunningSlowly\">\n            <summary>\n            Gets a value indicating whether the game is running slowly than its TargetElapsedTime. This can be used for example to render less details...etc.\n            </summary>\n            <value><c>true</c> if this instance is running slowly; otherwise, <c>false</c>.</value>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.GameTime.TotalGameTime\">\n            <summary>\n            Gets the amount of game time since the start of the game.\n            </summary>\n            <value>The total game time.</value>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.GameTime.FrameCount\">\n            <summary>\n            Gets the current frame count since the start of the game.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.GraphicsDeviceInformation.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.GraphicsDeviceInformation\"/> class.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.GraphicsDeviceInformation.Equals(System.Object)\">\n            <summary>Returns a value that indicates whether the current instance is equal to a specified object.</summary>\n            <param name=\"obj\">The Object to compare with the current GraphicsDeviceInformation.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.GraphicsDeviceInformation.GetHashCode\">\n            <summary>Gets the hash code for this object.</summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.GraphicsDeviceInformation.Clone\">\n            <summary>\n            Clones this instance.\n            </summary>\n            <returns>A new copy-instance of this GraphicsDeviceInformation.</returns>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.GraphicsDeviceInformation.Adapter\">\n            <summary>\n            Gets or sets the adapter.\n            </summary>\n            <value>The adapter.</value>\n            <exception cref=\"T:System.ArgumentNullException\">if value is null</exception>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.GraphicsDeviceInformation.GraphicsProfile\">\n            <summary>\n            Gets or sets the graphics profile.\n            </summary>\n            <value>The graphics profile.</value>\n            <exception cref=\"T:System.ArgumentNullException\">if value is null</exception>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.GraphicsDeviceInformation.PresentationParameters\">\n            <summary>\n            Gets or sets the presentation parameters.\n            </summary>\n            <value>The presentation parameters.</value>\n            <exception cref=\"T:System.ArgumentNullException\">if value is null</exception>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.GraphicsDeviceInformation.DeviceCreationFlags\">\n            <summary>\n            Gets or sets the creation flags.\n            </summary>\n            <value>The creation flags.</value>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.GraphicsDeviceManager\">\n            <summary>\n            Manages the <see cref=\"P:SharpDX.Toolkit.GraphicsDeviceManager.GraphicsDevice\"/> lifecycle.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.IGraphicsDeviceManager\">\n            <summary>\n            Defines the interface for an object that manages a GraphicsDevice.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.IGraphicsDeviceManager.BeginDraw\">\n            <summary>\n            Starts the drawing of a frame.\n            </summary>\n            <returns><c>true</c> if XXXX, <c>false</c> otherwise</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.IGraphicsDeviceManager.CreateDevice\">\n            <summary>\n            Called to ensure that the device manager has created a valid device.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.IGraphicsDeviceManager.EndDraw\">\n            <summary>\n            Called by the game at the end of drawing; presents the final rendering.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.GraphicsDeviceManager.DefaultBackBufferWidth\">\n            <summary>\n            Default width for the back buffer.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.GraphicsDeviceManager.DefaultBackBufferHeight\">\n            <summary>\n            Default height for the back buffer.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.GraphicsDeviceManager.#ctor(SharpDX.Toolkit.Game)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.GraphicsDeviceManager\"/> class.\n            </summary>\n            <param name=\"game\">The game.</param>\n            <exception cref=\"T:System.ArgumentNullException\">The game instance cannot be null.</exception>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.GraphicsDeviceManager.SetPreferredGraphicsProfile(SharpDX.Direct3D.FeatureLevel[])\">\n            <summary>\n            Sets the preferred graphics profile.\n            </summary>\n            <param name=\"levels\">The levels.</param>\n            <seealso cref=\"P:SharpDX.Toolkit.GraphicsDeviceManager.PreferredGraphicsProfile\"/>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.GraphicsDeviceManager.ApplyChanges\">\n            <summary>\n            Applies the changes from this instance and change or create the <see cref=\"P:SharpDX.Toolkit.GraphicsDeviceManager.GraphicsDevice\"/> according to the new values.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.GraphicsDeviceManager.CanResetDevice(SharpDX.Toolkit.GraphicsDeviceInformation)\">\n            <summary>\n            Determines whether this instance is compatible with the the specified new <see cref=\"T:SharpDX.Toolkit.GraphicsDeviceInformation\"/>.\n            </summary>\n            <param name=\"newDeviceInfo\">The new device info.</param>\n            <returns><c>true</c> if this instance this instance is compatible with the the specified new <see cref=\"T:SharpDX.Toolkit.GraphicsDeviceInformation\"/>; otherwise, <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.GraphicsDeviceManager.FindBestDevice(System.Boolean)\">\n            <summary>\n            Finds the best device that is compatible with the preferences defined in this instance.\n            </summary>\n            <param name=\"anySuitableDevice\">if set to <c>true</c> a device can be selected from any existing adapters, otherwise, it will select only from default adapter.</param>\n            <returns>The graphics device information.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.GraphicsDeviceManager.RankDevices(System.Collections.Generic.List{SharpDX.Toolkit.GraphicsDeviceInformation})\">\n            <summary>\n            Ranks a list of <see cref=\"T:SharpDX.Toolkit.GraphicsDeviceInformation\"/> before creating a new device.\n            </summary>\n            <param name=\"foundDevices\">The list of devices that can be reorder.</param>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.GraphicsDeviceManager.PreferredGraphicsProfile\">\n            <summary>\n            Gets or sets the list of graphics profile to select from the best feature to the lower feature. See remarks.\n            </summary>\n            <value>The graphics profile.</value>\n            <remarks>\n            By default, the PreferredGraphicsProfile is set to { <see cref=\"!:FeatureLevel.Level_11_1\"/>, \n            <see cref=\"F:SharpDX.Direct3D.FeatureLevel.Level_11_0\"/>,\n            <see cref=\"F:SharpDX.Direct3D.FeatureLevel.Level_10_1\"/>,\n            <see cref=\"F:SharpDX.Direct3D.FeatureLevel.Level_10_0\"/>,\n            <see cref=\"F:SharpDX.Direct3D.FeatureLevel.Level_9_3\"/>,\n            <see cref=\"F:SharpDX.Direct3D.FeatureLevel.Level_9_2\"/>,\n            <see cref=\"F:SharpDX.Direct3D.FeatureLevel.Level_9_1\"/>}\n            </remarks>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.GraphicsDeviceManager.IsFullScreen\">\n            <summary>\n            Gets or sets a value indicating whether this instance is full screen.\n            </summary>\n            <value><c>true</c> if this instance is full screen; otherwise, <c>false</c>.</value>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.GraphicsDeviceManager.PreferMultiSampling\">\n            <summary>\n            Gets or sets a value indicating whether [prefer multi sampling].\n            </summary>\n            <value><c>true</c> if [prefer multi sampling]; otherwise, <c>false</c>.</value>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.GraphicsDeviceManager.DeviceCreationFlags\">\n            <summary>\n            Gets or sets the device creation flags that will be used to create the <see cref=\"P:SharpDX.Toolkit.GraphicsDeviceManager.GraphicsDevice\"/>\n            </summary>\n            <value>The device creation flags.</value>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.GraphicsDeviceManager.PreferredBackBufferFormat\">\n            <summary>\n            Gets or sets the preferred back buffer format.\n            </summary>\n            <value>The preferred back buffer format.</value>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.GraphicsDeviceManager.PreferredBackBufferHeight\">\n            <summary>\n            Gets or sets the height of the preferred back buffer.\n            </summary>\n            <value>The height of the preferred back buffer.</value>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.GraphicsDeviceManager.PreferredBackBufferWidth\">\n            <summary>\n            Gets or sets the width of the preferred back buffer.\n            </summary>\n            <value>The width of the preferred back buffer.</value>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.GraphicsDeviceManager.PreferredDepthStencilFormat\">\n            <summary>\n            Gets or sets the preferred depth stencil format.\n            </summary>\n            <value>The preferred depth stencil format.</value>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.GraphicsDeviceManager.SupportedOrientations\">\n            <summary>\n            Gets or sets the supported orientations.\n            </summary>\n            <value>The supported orientations.</value>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.GraphicsDeviceManager.SynchronizeWithVerticalRetrace\">\n            <summary>\n            Gets or sets a value indicating whether [synchronize with vertical retrace].\n            </summary>\n            <value><c>true</c> if [synchronize with vertical retrace]; otherwise, <c>false</c>.</value>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.LaunchParameters\">\n            <summary>\n            Parameters used when launching an application.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.LaunchParameters.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.LaunchParameters\"/> class.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.NamespaceDoc\">\n            <summary>\n            The <see cref=\"N:SharpDX.Toolkit\"/> namespace provides a high level Game API.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.PreparingDeviceSettingsEventArgs\">\n            <summary>\n            Describes settings to apply before preparing a device for creation, used by <see cref=\"M:SharpDX.Toolkit.GraphicsDeviceManager.OnPreparingDeviceSettings(System.Object,SharpDX.Toolkit.PreparingDeviceSettingsEventArgs)\"/>.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.PreparingDeviceSettingsEventArgs.#ctor(SharpDX.Toolkit.GraphicsDeviceInformation)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.PreparingDeviceSettingsEventArgs\"/> class.\n            </summary>\n            <param name=\"graphicsDeviceInformation\">The graphics device information.</param>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.PreparingDeviceSettingsEventArgs.GraphicsDeviceInformation\">\n            <summary>\n            Gets the graphics device information.\n            </summary>\n            <value>The graphics device information.</value>\n        </member>\n    </members>\n</doc>\n"
  },
  {
    "path": "3rd/SharpDX/SharpDX.Toolkit.Graphics.xml",
    "content": "<?xml version=\"1.0\"?>\n<doc>\n    <assembly>\n        <name>SharpDX.Toolkit.Graphics</name>\n    </assembly>\n    <members>\n        <member name=\"T:SharpDX.Toolkit.Graphics.AssemblyDoc\">\n            <summary>\n            The <see cref=\"A:SharpDX.Toolkit.Graphics\"/> assembly provides a high level Direct3D11 API.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.BlendState\">\n            <summary>\n            BlendState is equivalent to <see cref=\"T:SharpDX.Direct3D11.BlendState\"/>.\n            </summary>\n            <remarks>\n            This class provides default stock blend states and easier constructors. It is also associating the <see cref=\"F:SharpDX.Toolkit.Graphics.BlendState.BlendFactor\"/> and <see cref=\"F:SharpDX.Toolkit.Graphics.BlendState.MultiSampleMask\"/> into the same object.\n            </remarks>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.GraphicsResource\">\n            <summary>\n            Base class for all <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsResource\"/>.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.GraphicsResource.GraphicsDevice\">\n            <summary>\n            GraphicsDevice used to create this instance.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.GraphicsResource.Resource\">\n            <summary>\n            The attached Direct3D11 resource to this instance.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.GraphicsResource.Initialize(SharpDX.Direct3D11.DeviceChild)\">\n            <summary>\n            Initializes the specified device local.\n            </summary>\n            <param name=\"resource\">The resource.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.GraphicsResource.op_Implicit(SharpDX.Toolkit.Graphics.GraphicsResource)~SharpDX.Direct3D11.Resource\">\n            <summary>\n            Implicit casting operator to <see cref=\"T:SharpDX.Direct3D11.Resource\"/>\n            </summary>\n            <param name=\"from\">The GraphicsResource to convert from.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.GraphicsResource.GetCputAccessFlagsFromUsage(SharpDX.Direct3D11.ResourceUsage)\">\n            <summary>\n            Gets the CPU access flags from the <see cref=\"T:SharpDX.Direct3D11.ResourceUsage\"/>.\n            </summary>\n            <param name=\"usage\">The usage.</param>\n            <returns>The CPU access flags</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.GraphicsResource.OnNameChanged\">\n            <summary>\n            Called when name changed for this component.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.BlendState.Description\">\n            <summary>\n            Gets the description of this blend state.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.BlendState.BlendFactor\">\n            <summary>\n            RGBA component. This requires a blend state object that specifies the <see cref=\"F:SharpDX.Direct3D11.BlendOption.BlendFactor\"/>.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.BlendState.MultiSampleMask\">\n            <summary>\n            <p>Blend state is used by the output-merger stage to determine how to blend together two pixel values. The two values are commonly the current pixel value and the pixel value already in the output render target. Use the <strong>blend operation</strong> to control where the two pixel values come from and how they are mathematically combined.</p><p>To create a blend-state interface, call <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateBlendState(SharpDX.Direct3D11.BlendStateDescription@,SharpDX.Direct3D11.BlendState)\"/></strong>.</p><p>Passing in <strong><c>null</c></strong> for the blend-state interface indicates to the runtime to set a default blending state.  The following table indicates the default blending parameters.</p><table> <tr><th>State</th><th>Default Value</th></tr> <tr><td>AlphaToCoverageEnable</td><td><strong><see cref=\"F:SharpDX.Result.False\"/></strong></td></tr> <tr><td>BlendEnable</td><td><strong><see cref=\"F:SharpDX.Result.False\"/></strong>[8]</td></tr> <tr><td>SrcBlend</td><td><see cref=\"F:SharpDX.Direct3D11.BlendOption.One\"/></td></tr> <tr><td>DstBlend</td><td><see cref=\"F:SharpDX.Direct3D11.BlendOption.Zero\"/></td></tr> <tr><td>BlendOp</td><td><see cref=\"F:SharpDX.Direct3D11.BlendOperation.Add\"/></td></tr> <tr><td>SrcBlendAlpha</td><td><see cref=\"F:SharpDX.Direct3D11.BlendOption.One\"/></td></tr> <tr><td>DstBlendAlpha</td><td><see cref=\"F:SharpDX.Direct3D11.BlendOption.Zero\"/></td></tr> <tr><td>BlendOpAlpha</td><td><see cref=\"F:SharpDX.Direct3D11.BlendOperation.Add\"/></td></tr> <tr><td>RenderTargetWriteMask[8]</td><td><see cref=\"F:SharpDX.Direct3D11.ColorWriteMaskFlags.All\"/>[8]</td></tr> </table><p>?</p><p>A sample mask determines which samples get updated in all the active render targets. The mapping of bits in a sample mask to samples in a multisample render target is the responsibility of an individual application. A sample mask is always applied; it is independent of whether multisampling is enabled, and does not depend on whether an application uses multisample render targets.</p><p> The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. </p>\t\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.BlendState.#ctor(SharpDX.Toolkit.Graphics.GraphicsDevice,SharpDX.Direct3D11.BlendStateDescription,SharpDX.Color4,System.Int32)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.BlendState\"/> class.\n            </summary>\n            <param name=\"device\">The device local.</param>\n            <param name=\"description\">The description.</param>\n            <param name=\"blendFactor\">The blend factor.</param>\n            <param name=\"mask\">The mask.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.BlendState.#ctor(SharpDX.Toolkit.Graphics.GraphicsDevice,SharpDX.Direct3D11.BlendState,SharpDX.Color4,System.Int32)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.BlendState\"/> class.\n            </summary>\n            <param name=\"device\">The device local.</param>\n            <param name=\"nativeState\">State of the native.</param>\n            <param name=\"blendFactor\">The blend factor.</param>\n            <param name=\"mask\">The mask.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.BlendState.New(SharpDX.Toolkit.Graphics.GraphicsDevice,SharpDX.Direct3D11.RenderTargetBlendDescription,SharpDX.Color4,System.Int32)\">\n            <summary>\n            <p>Create a blend-state object that encapsules blend state for the output-merger stage.</p>\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"renderTargetBlend0\">The render target blend description for the first render target.</param>\n            <param name=\"blendFactor\">The blend factor.</param>\n            <param name=\"mask\">The mask.</param>\n            <returns>A new <see cref=\"T:SharpDX.Toolkit.Graphics.BlendState\"/> instance.</returns>\n            <msdn-id>ff476500</msdn-id>\n              <unmanaged>HRESULT ID3D11Device::CreateBlendState([In] const D3D11_BLEND_DESC* pBlendStateDesc,[Out, Fast] ID3D11BlendState** ppBlendState)</unmanaged>\n              <unmanaged-short>ID3D11Device::CreateBlendState</unmanaged-short>\n            <remarks><p>An application can create up to 4096 unique blend-state objects. For each object created, the runtime checks to see if a previous object  has the same state. If such a previous object exists, the runtime will return a reference to previous instance instead of creating a duplicate object.</p></remarks>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.BlendState.New(SharpDX.Toolkit.Graphics.GraphicsDevice,SharpDX.Direct3D11.RenderTargetBlendDescription,System.Int32)\">\n            <summary>\n            <p>Create a blend-state object that encapsules blend state for the output-merger stage.</p>\n            </summary>\n            <param name=\"device\">The  <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"renderTargetBlend0\">The render target blend description for the first render target.</param>\n            <param name=\"mask\">The mask.</param>\n            <returns>A new <see cref=\"T:SharpDX.Toolkit.Graphics.BlendState\"/> instance.</returns>\n            <msdn-id>ff476500</msdn-id>\n              <unmanaged>HRESULT ID3D11Device::CreateBlendState([In] const D3D11_BLEND_DESC* pBlendStateDesc,[Out, Fast] ID3D11BlendState** ppBlendState)</unmanaged>\n              <unmanaged-short>ID3D11Device::CreateBlendState</unmanaged-short>\n            <remarks><p>An application can create up to 4096 unique blend-state objects. For each object created, the runtime checks to see if a previous object  has the same state. If such a previous object exists, the runtime will return a reference to previous instance instead of creating a duplicate object.</p></remarks>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.BlendState.New(SharpDX.Toolkit.Graphics.GraphicsDevice,SharpDX.Direct3D11.BlendOption,SharpDX.Direct3D11.BlendOption,SharpDX.Direct3D11.BlendOperation,SharpDX.Direct3D11.BlendOption,SharpDX.Direct3D11.BlendOption,SharpDX.Direct3D11.BlendOperation,SharpDX.Direct3D11.ColorWriteMaskFlags,System.Int32)\">\n            <summary>\n            <p>Create a blend-state object that encapsules blend state for the output-merger stage.</p>\n            </summary>\n            <param name=\"device\">The  <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"sourceBlend\">The source blend.</param>\n            <param name=\"destinationBlend\">The destination blend.</param>\n            <param name=\"blendOperation\">The blend operation.</param>\n            <param name=\"sourceAlphaBlend\">The source alpha blend.</param>\n            <param name=\"destinationAlphaBlend\">The destination alpha blend.</param>\n            <param name=\"alphaBlendOperation\">The alpha blend operation.</param>\n            <param name=\"renderTargetWriteMask\">The render target write mask.</param>\n            <param name=\"mask\">The mask.</param>\n            <returns>A new <see cref=\"T:SharpDX.Toolkit.Graphics.BlendState\"/> instance.</returns>\n            <msdn-id>ff476500</msdn-id>\n              <unmanaged>HRESULT ID3D11Device::CreateBlendState([In] const D3D11_BLEND_DESC* pBlendStateDesc,[Out, Fast] ID3D11BlendState** ppBlendState)</unmanaged>\n              <unmanaged-short>ID3D11Device::CreateBlendState</unmanaged-short>\n            <remarks><p>An application can create up to 4096 unique blend-state objects. For each object created, the runtime checks to see if a previous object  has the same state. If such a previous object exists, the runtime will return a reference to previous instance instead of creating a duplicate object.</p></remarks>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.BlendState.New(SharpDX.Toolkit.Graphics.GraphicsDevice,SharpDX.Direct3D11.BlendOption,SharpDX.Direct3D11.BlendOption,SharpDX.Direct3D11.BlendOperation,SharpDX.Direct3D11.BlendOption,SharpDX.Direct3D11.BlendOption,SharpDX.Direct3D11.BlendOperation,SharpDX.Direct3D11.ColorWriteMaskFlags,SharpDX.Color4,System.Int32)\">\n            <summary>\n            <p>Create a blend-state object that encapsules blend state for the output-merger stage.</p>\n            </summary>\n            <param name=\"device\">The  <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"sourceBlend\">The source blend.</param>\n            <param name=\"destinationBlend\">The destination blend.</param>\n            <param name=\"blendOperation\">The blend operation.</param>\n            <param name=\"sourceAlphaBlend\">The source alpha blend.</param>\n            <param name=\"destinationAlphaBlend\">The destination alpha blend.</param>\n            <param name=\"alphaBlendOperation\">The alpha blend operation.</param>\n            <param name=\"renderTargetWriteMask\">The render target write mask.</param>\n            <param name=\"blendFactor\">The blend factor.</param>\n            <param name=\"mask\">The mask.</param>\n            <returns>A new <see cref=\"T:SharpDX.Toolkit.Graphics.BlendState\"/> instance.</returns>\n            <msdn-id>ff476500</msdn-id>\n              <unmanaged>HRESULT ID3D11Device::CreateBlendState([In] const D3D11_BLEND_DESC* pBlendStateDesc,[Out, Fast] ID3D11BlendState** ppBlendState)</unmanaged>\n              <unmanaged-short>ID3D11Device::CreateBlendState</unmanaged-short>\n            <remarks><p>An application can create up to 4096 unique blend-state objects. For each object created, the runtime checks to see if a previous object  has the same state. If such a previous object exists, the runtime will return a reference to previous instance instead of creating a duplicate object.</p></remarks>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.BlendState.New(SharpDX.Toolkit.Graphics.GraphicsDevice,SharpDX.Direct3D11.BlendStateDescription,System.Int32)\">\n            <summary>\n            <p>Create a blend-state object that encapsules blend state for the output-merger stage.</p>\n            </summary>\n            <param name=\"device\">The  <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"description\"><dd>  <p>Pointer to a blend-state description (see <strong><see cref=\"T:SharpDX.Direct3D11.BlendStateDescription\"/></strong>).</p> </dd></param>\n            <param name=\"mask\">The mask.</param>\n            <returns>A new <see cref=\"T:SharpDX.Toolkit.Graphics.BlendState\"/> instance.</returns>\n            <msdn-id>ff476500</msdn-id>\n              <unmanaged>HRESULT ID3D11Device::CreateBlendState([In] const D3D11_BLEND_DESC* pBlendStateDesc,[Out, Fast] ID3D11BlendState** ppBlendState)</unmanaged>\n              <unmanaged-short>ID3D11Device::CreateBlendState</unmanaged-short>\n            <remarks><p>An application can create up to 4096 unique blend-state objects. For each object created, the runtime checks to see if a previous object  has the same state. If such a previous object exists, the runtime will return a reference to previous instance instead of creating a duplicate object.</p></remarks>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.BlendState.New(SharpDX.Toolkit.Graphics.GraphicsDevice,System.String,SharpDX.Direct3D11.BlendStateDescription,System.Int32)\">\n            <summary>\n            <p>Create a blend-state object that encapsules blend state for the output-merger stage.</p>\n            </summary>\n            <param name=\"device\">The  <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"name\">Name of this blend state.</param>\n            <param name=\"description\"><dd>  <p>Pointer to a blend-state description (see <strong><see cref=\"T:SharpDX.Direct3D11.BlendStateDescription\"/></strong>).</p> </dd></param>\n            <param name=\"mask\">The mask.</param>\n            <returns>A new <see cref=\"T:SharpDX.Toolkit.Graphics.BlendState\"/> instance.</returns>\n            <msdn-id>ff476500</msdn-id>\n              <unmanaged>HRESULT ID3D11Device::CreateBlendState([In] const D3D11_BLEND_DESC* pBlendStateDesc,[Out, Fast] ID3D11BlendState** ppBlendState)</unmanaged>\n              <unmanaged-short>ID3D11Device::CreateBlendState</unmanaged-short>\n            <remarks><p>An application can create up to 4096 unique blend-state objects. For each object created, the runtime checks to see if a previous object  has the same state. If such a previous object exists, the runtime will return a reference to previous instance instead of creating a duplicate object.</p></remarks>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.BlendState.New(SharpDX.Toolkit.Graphics.GraphicsDevice,SharpDX.Direct3D11.BlendStateDescription,SharpDX.Color4,System.Int32)\">\n            <summary>\n            <p>Create a blend-state object that encapsules blend state for the output-merger stage.</p>\n            </summary>\n            <param name=\"device\">The  <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"description\"><dd>  <p>Pointer to a blend-state description (see <strong><see cref=\"T:SharpDX.Direct3D11.BlendStateDescription\"/></strong>).</p> </dd></param>\n            <param name=\"blendFactor\">The blend factor.</param>\n            <param name=\"mask\">The mask.</param>\n            <returns>A new <see cref=\"T:SharpDX.Toolkit.Graphics.BlendState\"/> instance.</returns>\n            <msdn-id>ff476500</msdn-id>\n              <unmanaged>HRESULT ID3D11Device::CreateBlendState([In] const D3D11_BLEND_DESC* pBlendStateDesc,[Out, Fast] ID3D11BlendState** ppBlendState)</unmanaged>\n              <unmanaged-short>ID3D11Device::CreateBlendState</unmanaged-short>\n            <remarks><p>An application can create up to 4096 unique blend-state objects. For each object created, the runtime checks to see if a previous object  has the same state. If such a previous object exists, the runtime will return a reference to previous instance instead of creating a duplicate object.</p></remarks>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.BlendState.op_Implicit(SharpDX.Toolkit.Graphics.BlendState)~SharpDX.Direct3D11.BlendState\">\n            <summary>\n            Implicit casting operator to <see cref=\"T:SharpDX.Direct3D11.Resource\"/>\n            </summary>\n            <param name=\"from\">The GraphicsState to convert from.</param>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.BlendStateCollection\">\n            <summary>\n            Blend state collection\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.StateCollectionBase`1\">\n            <summary>\n            Base collection for Graphics device states (BlendState, DepthStencilState, RasterizerState).\n            </summary>\n            <typeparam name=\"T\">Type of the state.</typeparam>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.ComponentCollection`1\">\n            <summary>\n            A generic collection for effect framework.\n            </summary>\n            <typeparam name=\"T\">Type of the collection</typeparam>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.ComponentCollection`1.Add(`0)\">\n            <summary>\n            Adds the specified item.\n            </summary>\n            <param name=\"item\">The item.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.ComponentCollection`1.Add(System.String,`0)\">\n            <summary>\n            Adds the specified item with a prefix name (used for techniques inside pool).\n            Name will be added to collection with \"PrefixName|ItemName\" unless prefixname is empty (\"ItemName\").\n            </summary>\n            <param name=\"prefixName\">The name.</param>\n            <param name=\"item\">The item.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.ComponentCollection`1.Contains(System.String)\">\n            <summary>\n            Determines whether this collection contains an element with the specified name.\n            </summary>\n            <param name=\"name\">The name.</param>\n            <returns><c>true</c> if [contains] an element with the specified name; otherwise, <c>false</c>.</returns>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.ComponentCollection`1.Count\">\n            <summary>\n            Gets the number of objects in the collection.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.ComponentCollection`1.Item(System.Int32)\">\n            <summary>Gets a specific element in the collection by using an index value.</summary>\n            <param name=\"index\">Index of the EffectTechnique to get.</param>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.ComponentCollection`1.Item(System.String)\">\n            <summary>Gets a specific element in the collection by using a name.</summary>\n            <param name=\"name\">Name of the EffectTechnique to get.</param>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.StateCollectionBase`1.GraphicsDevice\">\n            <summary>\n            Gets the graphics device associated with this collection.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.StateCollectionBase`1.#ctor(SharpDX.Toolkit.Graphics.GraphicsDevice)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.StateCollectionBase`1\"/> class.\n            </summary>\n            <param name=\"device\">The device.</param>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.StateCollectionBase`1.StateAllocatorCallback\">\n            <summary>\n            Sets this callback to create a state when a state with a particular name is not found.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.StateCollectionBase`1.Register(`0)\">\n            <summary>\n            Registers the specified state.\n            </summary>\n            <param name=\"state\">The state.</param>\n            <remarks>\n            The name of the state must be defined.\n            </remarks>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.StateCollectionBase`1.StateAllocatorDelegate\">\n            <summary>\n            An allocator of state.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"name\">The name of the state to create.</param>\n            <returns>An instsance of T or null if not supported.</returns>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.BlendStateCollection.Additive\">\n            <summary>\n            A built-in state object with settings for additive blend, that is adding the destination data to the source data without using alpha.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.BlendStateCollection.AlphaBlend\">\n            <summary>\n            A built-in state object with settings for alpha blend, that is blending the source and destination data using alpha.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.BlendStateCollection.NonPremultiplied\">\n            <summary>\n            A built-in state object with settings for blending with non-premultipled alpha, that is blending source and destination data using alpha while assuming the color data contains no alpha information.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.BlendStateCollection.Opaque\">\n            <summary>\n            A built-in state object with settings for opaque blend, that is overwriting the source with the destination data.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.BlendStateCollection.Default\">\n            <summary>\n            A built-in default state object (no blending).\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.BlendStateCollection.#ctor(SharpDX.Toolkit.Graphics.GraphicsDevice)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.BlendStateCollection\"/> class.\n            </summary>\n            <param name=\"device\">The device.</param>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.ClearOptions\">\n            <summary>\n            Specifies the buffer to use when using <see cref=\"M:SharpDX.Toolkit.Graphics.GraphicsDevice.Clear(SharpDX.Color4)\"/>\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.ClearOptions.DepthBuffer\">\n            <summary>\n            Clears the depth buffer.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.ClearOptions.Stencil\">\n            <summary>\n            Clears the stencil buffer.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.ClearOptions.Target\">\n            <summary>\n            Clears the render target buffer.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.NamespaceDoc\">\n            <summary>\n            The <see cref=\"N:SharpDX.Toolkit.Graphics\"/> namespace provides a high level Direct3D11 Graphics API.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.PrimitiveBatch`1\">\n            <summary>\n            Primitive batch implementation using generic.\n            </summary>\n            <typeparam name=\"T\">Type of a Vertex element</typeparam>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.PrimitiveBatchBase\">\n            <summary>\n            Primitive batch base class.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.PrimitiveBatchBase.VertexSize\">\n            <summary>\n            Size in bytes of a vertex.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.PrimitiveBatchBase.#ctor(SharpDX.Toolkit.Graphics.GraphicsDevice,System.Int32,System.Int32,System.Int32)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.PrimitiveBatchBase\"/> class.\n            </summary>\n            <param name=\"graphicsDevice\">The device.</param>\n            <param name=\"maxIndices\">The max indices.</param>\n            <param name=\"maxVertices\">The max vertices.</param>\n            <param name=\"vertexSize\">Size of the vertex.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.PrimitiveBatchBase.Begin\">\n            <summary>\n            Begin a batch of primitive drawing operations.\n            </summary>\n            <exception cref=\"T:System.InvalidOperationException\">Cannot nest Begin calls</exception>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.PrimitiveBatchBase.End\">\n            <summary>\n            Ends batch of primitive drawing operations.\n            </summary>\n            <exception cref=\"T:System.InvalidOperationException\">Begin must be called before End</exception>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.PrimitiveBatchBase.Draw(SharpDX.Direct3D.PrimitiveTopology,System.Boolean,System.IntPtr,System.Int32,System.Int32)\">\n            <summary>\n            Draws the specified topology.\n            </summary>\n            <param name=\"topology\">The topology.</param>\n            <param name=\"isIndexed\">if set to <c>true</c> [is indexed].</param>\n            <param name=\"indices\">The indices.</param>\n            <param name=\"indexCount\">The index count.</param>\n            <param name=\"vertexCount\">The vertex count.</param>\n            <returns>IntPtr.</returns>\n            <exception cref=\"T:System.ArgumentNullException\">Indices cannot be null</exception>\n            <exception cref=\"T:System.ArgumentException\">Too many indices;indexCount</exception>\n            <exception cref=\"T:System.InvalidOperationException\">Begin must be called before Draw</exception>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.PrimitiveBatchBase.FlushBatch\">\n            <summary>\n            Flushes the batch.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.PrimitiveBatchBase.LockBuffer(SharpDX.Toolkit.Graphics.Buffer,System.Int32)\">\n            <summary>\n            Locks a vertex or index buffer.\n            </summary>\n            <param name=\"buffer\">The buffer.</param>\n            <param name=\"currentPosition\">The current position.</param>\n            <returns>A DataBox.</returns>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.PrimitiveBatchBase.GraphicsDevice\">\n            <summary>\n            Gets the graphics device.\n            </summary>\n            <value>The graphics device.</value>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.PrimitiveBatch`1.QuadIndices\">\n            <summary>\n            The quad indices\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.PrimitiveBatch`1.#ctor(SharpDX.Toolkit.Graphics.GraphicsDevice,System.Int32,System.Int32)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.PrimitiveBatch`1\"/> class.\n            </summary>\n            <param name=\"graphicsDevice\">The device.</param>\n            <param name=\"maxIndices\">The max indices.</param>\n            <param name=\"maxVertices\">The max vertices.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.PrimitiveBatch`1.Draw(SharpDX.Toolkit.Graphics.PrimitiveType,`0[])\">\n            <summary>\n            Draws vertices for the specified topology.\n            </summary>\n            <param name=\"topology\">The topology.</param>\n            <param name=\"vertices\">The vertices.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.PrimitiveBatch`1.DrawIndexed(SharpDX.Toolkit.Graphics.PrimitiveType,System.Int16[],`0[])\">\n            <summary>\n            Draws the indexed vertices with the specified toplogy.\n            </summary>\n            <param name=\"topology\">The topology.</param>\n            <param name=\"indices\">The indices.</param>\n            <param name=\"vertices\">The vertices.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.PrimitiveBatch`1.DrawLine(`0,`0)\">\n            <summary>\n            Draws a line.\n            </summary>\n            <param name=\"v1\">The v1 starting point.</param>\n            <param name=\"v2\">The v2 end point.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.PrimitiveBatch`1.DrawTriangle(`0,`0,`0)\">\n            <summary>\n            Draws a triangle (points must be ordered in CW or CCW depending on rasterizer settings).\n            </summary>\n            <param name=\"v1\">The v1.</param>\n            <param name=\"v2\">The v2.</param>\n            <param name=\"v3\">The v3.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.PrimitiveBatch`1.DrawQuad(`0,`0,`0,`0)\">\n            <summary>\n            Draws a quad (points must be ordered in CW or CCW depending on rasterizer settings).\n            </summary>\n            <param name=\"v1\">The v1.</param>\n            <param name=\"v2\">The v2.</param>\n            <param name=\"v3\">The v3.</param>\n            <param name=\"v4\">The v4.</param>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.RenderTargetGraphicsPresenter\">\n            <summary>\n            Graphics presenter for SwapChain.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.GraphicsPresenter\">\n            <summary>\n            This class is a frontend to <see cref=\"T:SharpDX.DXGI.SwapChain\"/> and <see cref=\"!:SwapChain1\"/>.\n            </summary>\n            <remarks>\n            In order to create a new <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsPresenter\"/>, a <see cref=\"P:SharpDX.Toolkit.Graphics.GraphicsPresenter.GraphicsDevice\"/> should have been initialized first.\n            </remarks>\n            <msdn-id>bb174569</msdn-id>\t\n            <unmanaged>IDXGISwapChain</unmanaged>\t\n            <unmanaged-short>IDXGISwapChain</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.GraphicsPresenter.#ctor(SharpDX.Toolkit.Graphics.GraphicsDevice,SharpDX.Toolkit.Graphics.PresentationParameters)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsPresenter\"/> class.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"presentationParameters\"> </param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.GraphicsPresenter.Present\">\n            <summary>\n            Presents the Backbuffer to the screen.\n            </summary>\n            <msdn-id>bb174576</msdn-id>\t\n            <unmanaged>HRESULT IDXGISwapChain::Present([In] unsigned int SyncInterval,[In] DXGI_PRESENT_FLAGS Flags)</unmanaged>\t\n            <unmanaged-short>IDXGISwapChain::Present</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.GraphicsPresenter.Resize(System.Int32,System.Int32,SharpDX.DXGI.Format)\">\n            <summary>\n            Resizes the current presenter, by resizing the back buffer and the depth stencil buffer.\n            </summary>\n            <param name=\"width\"></param>\n            <param name=\"height\"></param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.GraphicsPresenter.CreateDepthStencilBuffer\">\n            <summary>\n            Creates the depth stencil buffer.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.GraphicsPresenter.GraphicsDevice\">\n            <summary>\n            Gets the graphics device.\n            </summary>\n            <value>The graphics device.</value>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.GraphicsPresenter.Description\">\n            <summary>\n            Gets the description of this presenter.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.GraphicsPresenter.DefaultViewport\">\n            <summary>\n            Default viewport that covers the whole presenter surface.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.GraphicsPresenter.BackBuffer\">\n            <summary>\n            Gets the default back buffer for this presenter.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.GraphicsPresenter.DepthStencilBuffer\">\n            <summary>\n            Gets the default depth stencil buffer for this presenter.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.GraphicsPresenter.NativePresenter\">\n            <summary>\n            Gets the underlying native presenter (can be a <see cref=\"T:SharpDX.DXGI.SwapChain\"/> or <see cref=\"!:SharpDX.DXGI.SwapChain1\"/> or null, depending on the platform).\n            </summary>\n            <value>The native presenter.</value>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.GraphicsPresenter.IsFullScreen\">\n            <summary>\n            Gets or sets fullscreen mode for this presenter.\n            </summary>\n            <value><c>true</c> if this instance is full screen; otherwise, <c>false</c>.</value>\n            <msdn-id>bb174579</msdn-id>\n              <unmanaged>HRESULT IDXGISwapChain::SetFullscreenState([In] BOOL Fullscreen,[In, Optional] IDXGIOutput* pTarget)</unmanaged>\n              <unmanaged-short>IDXGISwapChain::SetFullscreenState</unmanaged-short>\n            <remarks>This method is only valid on Windows Desktop and has no effect on Windows Metro.</remarks>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.GraphicsPresenter.PresentInterval\">\n            <summary>\n            Gets or sets the <see cref=\"P:SharpDX.Toolkit.Graphics.GraphicsPresenter.PresentInterval\"/>. Default is to wait for one vertical blanking.\n            </summary>\n            <value>The present interval.</value>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.EffectContentReader\">\n            <summary>\n            Internal class to load a Effect.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.GraphicsResourceContentReaderBase`1\">\n            <summary>\n            Base class for all GraphicsResource content reader.\n            </summary>\n            <typeparam name=\"T\"></typeparam>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.GraphicsDeviceStatus\">\n            <summary>\n            Describes the current status of a <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.GraphicsDeviceStatus.Normal\">\n            <summary>\n            The device is running fine.\n            </summary>\n            <msdn-id>bb509553</msdn-id>\t\n            <unmanaged>S_OK</unmanaged>\t\n            <unmanaged-short>S_OK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.GraphicsDeviceStatus.Removed\">\n            <summary>\n            The video card has been physically removed from the system, or a driver upgrade for the video card has occurred. The application should destroy and recreate the device.\n            </summary>\n            <msdn-id>bb509553</msdn-id>\t\n            <unmanaged>DXGI_ERROR_DEVICE_REMOVED</unmanaged>\t\n            <unmanaged-short>DXGI_ERROR_DEVICE_REMOVED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.GraphicsDeviceStatus.Hung\">\n            <summary>\n            The application's device failed due to badly formed commands sent by the application. This is an design-time issue that should be investigated and fixed.\n            </summary>\n            <msdn-id>bb509553</msdn-id>\t\n            <unmanaged>DXGI_ERROR_DEVICE_HUNG</unmanaged>\t\n            <unmanaged-short>DXGI_ERROR_DEVICE_HUNG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.GraphicsDeviceStatus.Reset\">\n            <summary>\n            The device failed due to a badly formed command. This is a run-time issue; The application should destroy and recreate the device.\n            </summary>\n            <msdn-id>bb509553</msdn-id>\t\n            <unmanaged>DXGI_ERROR_DEVICE_RESET</unmanaged>\t\n            <unmanaged-short>DXGI_ERROR_DEVICE_RESET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.GraphicsDeviceStatus.InternalError\">\n            <summary>\n            The driver encountered a problem and was put into the device removed state.\n            </summary>\n            <msdn-id>bb509553</msdn-id>\t\n            <unmanaged>DXGI_ERROR_DRIVER_INTERNAL_ERROR</unmanaged>\t\n            <unmanaged-short>DXGI_ERROR_DRIVER_INTERNAL_ERROR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.GraphicsDeviceStatus.InvalidCall\">\n            <summary>\n            The application provided invalid parameter data; this must be debugged and fixed before the application is released.\n            </summary>\n            <msdn-id>bb509553</msdn-id>\t\n            <unmanaged>DXGI_ERROR_INVALID_CALL</unmanaged>\t\n            <unmanaged-short>DXGI_ERROR_INVALID_CALL</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.PrimitiveQuad\">\n            <summary>\n            Primitive quad use to draw an effect on a quad (fullscreen by default). This is directly accessible from the <see cref=\"!:GraphicsDevice.DrawQuad\"/> method.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.PrimitiveQuad.#ctor(SharpDX.Toolkit.Graphics.GraphicsDevice)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.PrimitiveQuad\"/> class.\n            </summary>\n            <param name=\"graphicsDevice\">The graphics device.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.PrimitiveQuad.Draw\">\n            <summary>\n            Draws a quad. The effect must have been applied before calling this method with pixel shader having the signature float2:TEXCOORD.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.PrimitiveQuad.Draw(SharpDX.Direct3D11.ShaderResourceView,SharpDX.Direct3D11.SamplerState)\">\n            <summary>\n            Draws a quad with a texture. This Draw method is using a simple pixel shader that is sampling the texture. \n            </summary>\n            <param name=\"texture\">The texture to draw.</param>\n            <param name=\"samplerState\">State of the sampler. If null, default sampler is <see cref=\"F:SharpDX.Toolkit.Graphics.SamplerStateCollection.LinearClamp\"/>.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.PrimitiveQuad.Draw(SharpDX.Toolkit.Graphics.Effect)\">\n            <summary>\n            Draws the specified effect onto the quad. The effect must have a pixel shader with the signature float2:TEXCOORD.\n            </summary>\n            <param name=\"effect\">The effect.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.PrimitiveQuad.Draw(SharpDX.Toolkit.Graphics.EffectPass)\">\n            <summary>\n            Draws the specified effect pass onto the quad. The effect pass must have a pixel shader with the signature float2:TEXCOORD.\n            </summary>\n            <param name=\"effectPass\">The effect pass.</param>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.PrimitiveQuad.GraphicsDevice\">\n            <summary>\n            Gets the graphics device.\n            </summary>\n            <value>The graphics device.</value>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.PrimitiveQuad.Transform\">\n            <summary>\n            Gets or sets the transform. Default is <see cref=\"F:SharpDX.Matrix.Identity\"/>.\n            </summary>\n            <value>The transform.</value>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.PrimitiveQuad.SharedData\">\n            <summary>\n            Internal structure used to store VertexBuffer and VertexInputLayout.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.PrimitiveQuad.SharedData.VertexBuffer\">\n            <summary>\n            The vertex buffer\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.PrimitiveQuad.SharedData.VertexInputLayout\">\n            <summary>\n            The vertex input layout\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.SwapChainGraphicsPresenter\">\n            <summary>\n            Graphics presenter for SwapChain.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.IGraphicsDeviceService\">\n            <summary>\n            Service providing method to access GraphicsDevice life-cycle.\n            </summary>\n        </member>\n        <member name=\"E:SharpDX.Toolkit.Graphics.IGraphicsDeviceService.DeviceCreated\">\n            <summary>\n            Occurs when a device is created.\n            </summary>\n        </member>\n        <member name=\"E:SharpDX.Toolkit.Graphics.IGraphicsDeviceService.DeviceDisposing\">\n            <summary>\n            Occurs when a device is disposing.\n            </summary>\n        </member>\n        <member name=\"E:SharpDX.Toolkit.Graphics.IGraphicsDeviceService.DeviceReset\">\n            <summary>\n            Occurs when a device is reseted.\n            </summary>\n        </member>\n        <member name=\"E:SharpDX.Toolkit.Graphics.IGraphicsDeviceService.DeviceResetting\">\n            <summary>\n            Occurs when a device is resetting.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.IGraphicsDeviceService.GraphicsDevice\">\n            <summary>\n            Gets the current graphcs device.\n            </summary>\n            <value>The graphics device.</value>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.ImageContentReader\">\n            <summary>\n            Content reader for an image.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.RasterizerStateCollection\">\n            <summary>\n            Rasterizer state collection.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.RasterizerStateCollection.CullFront\">\n            <summary>\n            Built-in raterizer state object with settings for culling primitives with clockwise winding order (front facing).\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.RasterizerStateCollection.CullBack\">\n            <summary>\n            Built-in raterizer state object with settings for culling primitives with counter-clockwise winding order (back facing).\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.RasterizerStateCollection.CullNone\">\n            <summary>\n            Built-in raterizer state object with settings for not culling any primitives.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.RasterizerStateCollection.Default\">\n            <summary>\n            Built-in default raterizer state object is back facing (see <see cref=\"F:SharpDX.Toolkit.Graphics.RasterizerStateCollection.CullBack\"/>).\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.RasterizerStateCollection.#ctor(SharpDX.Toolkit.Graphics.GraphicsDevice)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.RasterizerStateCollection\"/> class.\n            </summary>\n            <param name=\"device\">The device.</param>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.SamplerStateCollection\">\n            <summary>\n            Sampler state collection.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.SamplerStateCollection.Default\">\n            <summary>\n            Default state is using linear filtering with texture coordinate clamping.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.SamplerStateCollection.PointWrap\">\n            <summary>\n            Point filtering with texture coordinate wrapping.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.SamplerStateCollection.PointClamp\">\n            <summary>\n            Point filtering with texture coordinate clamping.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.SamplerStateCollection.PointMirror\">\n            <summary>\n            Point filtering with texture coordinate mirroring.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.SamplerStateCollection.LinearWrap\">\n            <summary>\n            Linear filtering with texture coordinate wrapping.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.SamplerStateCollection.LinearClamp\">\n            <summary>\n            Linear filtering with texture coordinate clamping.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.SamplerStateCollection.LinearMirror\">\n            <summary>\n            Linear filtering with texture coordinate mirroring.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.SamplerStateCollection.AnisotropicWrap\">\n            <summary>\n            Anisotropic filtering with texture coordinate wrapping.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.SamplerStateCollection.AnisotropicClamp\">\n            <summary>\n            Anisotropic filtering with texture coordinate clamping.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.SamplerStateCollection.AnisotropicMirror\">\n            <summary>\n            Anisotropic filtering with texture coordinate mirroring.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.SamplerStateCollection.#ctor(SharpDX.Toolkit.Graphics.GraphicsDevice)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.SamplerStateCollection\"/> class.\n            </summary>\n            <param name=\"device\">The device.</param>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.DepthStencilStateCollection\">\n            <summary>\n            Depth-stencil state collection.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.DepthStencilStateCollection.Default\">\n            <summary>\n            A built-in state object with default settings for using a depth stencil buffer.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.DepthStencilStateCollection.DepthRead\">\n            <summary>\n            A built-in state object with settings for enabling a read-only depth stencil buffer.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.DepthStencilStateCollection.None\">\n            <summary>\n            A built-in state object with settings for not using a depth stencil buffer.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.DepthStencilStateCollection.#ctor(SharpDX.Toolkit.Graphics.GraphicsDevice)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.DepthStencilStateCollection\"/> class.\n            </summary>\n            <param name=\"device\">The device.</param>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.SetDataOptions\">\n            <summary>\n            Describes whether existing vertex or index buffer data will be overwritten or discarded during a SetData operation.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.SetDataOptions.None\">\n            <summary>\n            Portions of existing data in the buffer may be overwritten during this operation.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.SetDataOptions.Discard\">\n            <summary>\n            The SetData operation will discard the entire buffer. A pointer to a new memory area is returned so that the direct memory access (DMA) and rendering from the previous area do not stall.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.SetDataOptions.NoOverwrite\">\n            <summary>\n            The SetData operation will not overwrite existing data in the vertex and index buffers. Specifying this option allows the driver to return immediately from a SetData operation and continue rendering.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.SharedDataType\">\n            <summary>\n            Type of shared data. <see cref=\"M:SharpDX.Toolkit.Graphics.GraphicsDevice.GetOrCreateSharedData``1(SharpDX.Toolkit.Graphics.SharedDataType,System.Object,SharpDX.Toolkit.Graphics.GraphicsDevice.CreateSharedData{``0})\"/>\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.SharedDataType.PerDevice\">\n            <summary>\n            Data is shared within a <see cref=\"T:SharpDX.Direct3D11.Device\"/>.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.SharedDataType.PerContext\">\n            <summary>\n            Data is shared within a <see cref=\"T:SharpDX.Direct3D11.DeviceContext\"/>\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.SpriteBatch\">\n            <summary>\n            Renders a group of sprites.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.SpriteBatch.#ctor(SharpDX.Toolkit.Graphics.GraphicsDevice)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.SpriteBatch\"/> class.\n            </summary>\n            <param name=\"graphicsDevice\">The graphics device.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.SpriteBatch.Begin(SharpDX.Toolkit.Graphics.SpriteSortMode,SharpDX.Toolkit.Graphics.Effect)\">\n            <summary>\n            Begins a sprite batch operation using deferred sort and default state objects (BlendState.AlphaBlend, SamplerState.LinearClamp, DepthStencilState.None, RasterizerState.CullCounterClockwise).\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.SpriteBatch.Begin(SharpDX.Toolkit.Graphics.SpriteSortMode,SharpDX.Toolkit.Graphics.BlendState,SharpDX.Toolkit.Graphics.SamplerState,SharpDX.Toolkit.Graphics.DepthStencilState,SharpDX.Toolkit.Graphics.RasterizerState,SharpDX.Toolkit.Graphics.Effect)\">\n            <summary>\n            Begins a sprite batch rendering using the specified sorting mode and blend state, sampler, depth stencil and rasterizer state objects, plus a custom effect. Passing null for any of the state objects selects the default default state objects (BlendState.AlphaBlend, DepthStencilState.None, RasterizerState.CullCounterClockwise, SamplerState.LinearClamp). Passing a null effect selects the default SpriteBatch Class shader.\n            </summary>\n            <param name=\"sortMode\">Sprite drawing order.</param>\n            <param name=\"blendState\">Blending options.</param>\n            <param name=\"samplerState\">Texture sampling options.</param>\n            <param name=\"depthStencilState\">Depth and stencil options.</param>\n            <param name=\"rasterizerState\">Rasterization options.</param>\n            <param name=\"effect\">Effect state options.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.SpriteBatch.Begin(SharpDX.Toolkit.Graphics.SpriteSortMode,SharpDX.Toolkit.Graphics.BlendState,SharpDX.Toolkit.Graphics.SamplerState,SharpDX.Toolkit.Graphics.DepthStencilState,SharpDX.Toolkit.Graphics.RasterizerState,SharpDX.Toolkit.Graphics.Effect,SharpDX.Matrix)\">\n            <summary>\n            Begins a sprite batch rendering using the specified sorting mode and blend state, sampler, depth stencil, rasterizer state objects, plus a custom effect and a 2D transformation matrix. Passing null for any of the state objects selects the default default state objects (BlendState.AlphaBlend, DepthStencilState.None, RasterizerState.CullCounterClockwise, SamplerState.LinearClamp). Passing a null effect selects the default SpriteBatch Class shader. \n            </summary>\n            <param name=\"sortMode\">Sprite drawing order.</param>\n            <param name=\"blendState\">Blending options.</param>\n            <param name=\"samplerState\">Texture sampling options.</param>\n            <param name=\"depthStencilState\">Depth and stencil options.</param>\n            <param name=\"rasterizerState\">Rasterization options.</param>\n            <param name=\"effect\">Effect state options.</param>\n            <param name=\"transformMatrix\">Transformation matrix for scale, rotate, translate options.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.SpriteBatch.Draw(SharpDX.Direct3D11.ShaderResourceView,SharpDX.DrawingRectangle,SharpDX.Color)\">\n            <summary>\n            Adds a sprite to a batch of sprites for rendering using the specified texture, destination rectangle, and color. \n            </summary>\n            <param name=\"texture\">A texture.</param>\n            <param name=\"destinationRectangle\">A rectangle that specifies (in screen coordinates) the destination for drawing the sprite.</param>\n            <param name=\"color\">The color to tint a sprite. Use Color.White for full color with no tinting.</param>\n            <remarks>\n            Before making any calls to Draw, you must call Begin. Once all calls to Draw are complete, call End. \n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.SpriteBatch.Draw(SharpDX.Direct3D11.ShaderResourceView,SharpDX.Vector2,SharpDX.Color)\">\n            <summary>\n            Adds a sprite to a batch of sprites for rendering using the specified texture, position and color. \n            </summary>\n            <param name=\"texture\">A texture.</param>\n            <param name=\"position\">The location (in screen coordinates) to draw the sprite.</param>\n            <param name=\"color\">The color to tint a sprite. Use Color.White for full color with no tinting.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.SpriteBatch.Draw(SharpDX.Direct3D11.ShaderResourceView,SharpDX.DrawingRectangle,System.Nullable{SharpDX.DrawingRectangle},SharpDX.Color,System.Single,SharpDX.Vector2,SharpDX.Toolkit.Graphics.SpriteEffects,System.Single)\">\n            <summary>\n            Adds a sprite to a batch of sprites for rendering using the specified texture, destination rectangle, source rectangle, color, rotation, origin, effects and layer. \n            </summary>\n            <param name=\"texture\">A texture.</param>\n            <param name=\"destinationRectangle\">A rectangle that specifies (in screen coordinates) the destination for drawing the sprite. If this rectangle is not the same size as the source rectangle, the sprite will be scaled to fit.</param>\n            <param name=\"sourceRectangle\">A rectangle that specifies (in texels) the source texels from a texture. Use null to draw the entire texture. </param>\n            <param name=\"color\">The color to tint a sprite. Use Color.White for full color with no tinting.</param>\n            <param name=\"rotation\">Specifies the angle (in radians) to rotate the sprite about its center.</param>\n            <param name=\"origin\">The sprite origin; the default is (0,0) which represents the upper-left corner.</param>\n            <param name=\"effects\">Effects to apply.</param>\n            <param name=\"layerDepth\">The depth of a layer. By default, 0 represents the front layer and 1 represents a back layer. Use SpriteSortMode if you want sprites to be sorted during drawing.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.SpriteBatch.Draw(SharpDX.Direct3D11.ShaderResourceView,SharpDX.Vector2,System.Nullable{SharpDX.DrawingRectangle},SharpDX.Color)\">\n            <summary>\n            Adds a sprite to a batch of sprites for rendering using the specified texture, position, source rectangle, and color. \n            </summary>\n            <param name=\"texture\">A texture.</param>\n            <param name=\"position\">The location (in screen coordinates) to draw the sprite.</param>\n            <param name=\"sourceRectangle\">A rectangle that specifies (in texels) the source texels from a texture. Use null to draw the entire texture. </param>\n            <param name=\"color\">The color to tint a sprite. Use Color.White for full color with no tinting.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.SpriteBatch.Draw(SharpDX.Direct3D11.ShaderResourceView,SharpDX.Vector2,System.Nullable{SharpDX.DrawingRectangle},SharpDX.Color,System.Single,SharpDX.Vector2,System.Single,SharpDX.Toolkit.Graphics.SpriteEffects,System.Single)\">\n            <summary>\n            Adds a sprite to a batch of sprites for rendering using the specified texture, position, source rectangle, color, rotation, origin, scale, effects, and layer. \n            </summary>\n            <param name=\"texture\">A texture.</param>\n            <param name=\"position\">The location (in screen coordinates) to draw the sprite.</param>\n            <param name=\"sourceRectangle\">A rectangle that specifies (in texels) the source texels from a texture. Use null to draw the entire texture. </param>\n            <param name=\"color\">The color to tint a sprite. Use Color.White for full color with no tinting.</param>\n            <param name=\"rotation\">Specifies the angle (in radians) to rotate the sprite about its center.</param>\n            <param name=\"origin\">The sprite origin; the default is (0,0) which represents the upper-left corner.</param>\n            <param name=\"scale\">Scale factor.</param>\n            <param name=\"effects\">Effects to apply.</param>\n            <param name=\"layerDepth\">The depth of a layer. By default, 0 represents the front layer and 1 represents a back layer. Use SpriteSortMode if you want sprites to be sorted during drawing.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.SpriteBatch.Draw(SharpDX.Direct3D11.ShaderResourceView,SharpDX.Vector2,System.Nullable{SharpDX.DrawingRectangle},SharpDX.Color,System.Single,SharpDX.Vector2,SharpDX.Vector2,SharpDX.Toolkit.Graphics.SpriteEffects,System.Single)\">\n            <summary>\n            Adds a sprite to a batch of sprites for rendering using the specified texture, position, source rectangle, color, rotation, origin, scale, effects, and layer. \n            </summary>\n            <param name=\"texture\">A texture.</param>\n            <param name=\"position\">The location (in screen coordinates) to draw the sprite.</param>\n            <param name=\"sourceRectangle\">A rectangle that specifies (in texels) the source texels from a texture. Use null to draw the entire texture. </param>\n            <param name=\"color\">The color to tint a sprite. Use Color.White for full color with no tinting.</param>\n            <param name=\"rotation\">Specifies the angle (in radians) to rotate the sprite about its center.</param>\n            <param name=\"origin\">The sprite origin; the default is (0,0) which represents the upper-left corner.</param>\n            <param name=\"scale\">Scale factor.</param>\n            <param name=\"effects\">Effects to apply.</param>\n            <param name=\"layerDepth\">The depth of a layer. By default, 0 represents the front layer and 1 represents a back layer. Use SpriteSortMode if you want sprites to be sorted during drawing.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.SpriteBatch.DrawString(SharpDX.Toolkit.Graphics.SpriteFont,System.String,SharpDX.Vector2,SharpDX.Color)\">\n            <summary>Adds a string to a batch of sprites for rendering using the specified font, text, position, and color.</summary>\n            <param name=\"spriteFont\">A font for diplaying text.</param>\n            <param name=\"text\">A text string.</param>\n            <param name=\"position\">The location (in screen coordinates) to draw the sprite.</param>\n            <param name=\"color\">The color to tint a sprite. Use Color.White for full color with no tinting.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.SpriteBatch.DrawString(SharpDX.Toolkit.Graphics.SpriteFont,System.Text.StringBuilder,SharpDX.Vector2,SharpDX.Color)\">\n            <summary>Adds a string to a batch of sprites for rendering using the specified font, text, position, and color.</summary>\n            <param name=\"spriteFont\">A font for diplaying text.</param>\n            <param name=\"text\">Text string.</param>\n            <param name=\"position\">The location (in screen coordinates) to draw the sprite.</param>\n            <param name=\"color\">The color to tint a sprite. Use Color.White for full color with no tinting.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.SpriteBatch.DrawString(SharpDX.Toolkit.Graphics.SpriteFont,System.String,SharpDX.Vector2,SharpDX.Color,System.Single,SharpDX.Vector2,SharpDX.Vector2,SharpDX.Toolkit.Graphics.SpriteEffects,System.Single)\">\n            <summary>Adds a string to a batch of sprites for rendering using the specified font, text, position, color, rotation, origin, scale, effects and layer.</summary>\n            <param name=\"spriteFont\">A font for diplaying text.</param>\n            <param name=\"text\">A text string.</param>\n            <param name=\"position\">The location (in screen coordinates) to draw the sprite.</param>\n            <param name=\"color\">The color to tint a sprite. Use Color.White for full color with no tinting.</param>\n            <param name=\"rotation\">Specifies the angle (in radians) to rotate the sprite about its center.</param>\n            <param name=\"origin\">The sprite origin; the default is (0,0) which represents the upper-left corner.</param>\n            <param name=\"scale\">Scale factor.</param>\n            <param name=\"effects\">Effects to apply.</param>\n            <param name=\"layerDepth\">The depth of a layer. By default, 0 represents the front layer and 1 represents a back layer. Use SpriteSortMode if you want sprites to be sorted during drawing.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.SpriteBatch.DrawString(SharpDX.Toolkit.Graphics.SpriteFont,System.String,SharpDX.Vector2,SharpDX.Color,System.Single,SharpDX.Vector2,System.Single,SharpDX.Toolkit.Graphics.SpriteEffects,System.Single)\">\n            <summary>Adds a string to a batch of sprites for rendering using the specified font, text, position, color, rotation, origin, scale, effects and layer.</summary>\n            <param name=\"spriteFont\">A font for diplaying text.</param>\n            <param name=\"text\">A text string.</param>\n            <param name=\"position\">The location (in screen coordinates) to draw the sprite.</param>\n            <param name=\"color\">The color to tint a sprite. Use Color.White for full color with no tinting.</param>\n            <param name=\"rotation\">Specifies the angle (in radians) to rotate the sprite about its center.</param>\n            <param name=\"origin\">The sprite origin; the default is (0,0) which represents the upper-left corner.</param>\n            <param name=\"scale\">Scale factor.</param>\n            <param name=\"effects\">Effects to apply.</param>\n            <param name=\"layerDepth\">The depth of a layer. By default, 0 represents the front layer and 1 represents a back layer. Use SpriteSortMode if you want sprites to be sorted during drawing.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.SpriteBatch.DrawString(SharpDX.Toolkit.Graphics.SpriteFont,System.Text.StringBuilder,SharpDX.Vector2,SharpDX.Color,System.Single,SharpDX.Vector2,SharpDX.Vector2,SharpDX.Toolkit.Graphics.SpriteEffects,System.Single)\">\n            <summary>Adds a string to a batch of sprites for rendering using the specified font, text, position, color, rotation, origin, scale, effects and layer.</summary>\n            <param name=\"spriteFont\">A font for diplaying text.</param>\n            <param name=\"text\">Text string.</param>\n            <param name=\"position\">The location (in screen coordinates) to draw the sprite.</param>\n            <param name=\"color\">The color to tint a sprite. Use Color.White for full color with no tinting.</param>\n            <param name=\"rotation\">Specifies the angle (in radians) to rotate the sprite about its center.</param>\n            <param name=\"origin\">The sprite origin; the default is (0,0) which represents the upper-left corner.</param>\n            <param name=\"scale\">Scale factor.</param>\n            <param name=\"effects\">Effects to apply.</param>\n            <param name=\"layerDepth\">The depth of a layer. By default, 0 represents the front layer and 1 represents a back layer. Use SpriteSortMode if you want sprites to be sorted during drawing.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.SpriteBatch.DrawString(SharpDX.Toolkit.Graphics.SpriteFont,System.Text.StringBuilder,SharpDX.Vector2,SharpDX.Color,System.Single,SharpDX.Vector2,System.Single,SharpDX.Toolkit.Graphics.SpriteEffects,System.Single)\">\n            <summary>Adds a string to a batch of sprites for rendering using the specified font, text, position, color, rotation, origin, scale, effects and layer.</summary>\n            <param name=\"spriteFont\">A font for diplaying text.</param>\n            <param name=\"text\">Text string.</param>\n            <param name=\"position\">The location (in screen coordinates) to draw the sprite.</param>\n            <param name=\"color\">The color to tint a sprite. Use Color.White for full color with no tinting.</param>\n            <param name=\"rotation\">Specifies the angle (in radians) to rotate the sprite about its center.</param>\n            <param name=\"origin\">The sprite origin; the default is (0,0) which represents the upper-left corner.</param>\n            <param name=\"scale\">Scale factor.</param>\n            <param name=\"effects\">Effects to apply.</param>\n            <param name=\"layerDepth\">The depth of a layer. By default, 0 represents the front layer and 1 represents a back layer. Use SpriteSortMode if you want sprites to be sorted during drawing.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.SpriteBatch.End\">\n            <summary>\n            Flushes the sprite batch and restores the device state to how it was before Begin was called. \n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.SpriteBatch.ResourceContext\">\n            <summary>\n            Use a ResourceContext per GraphicsDevice (DeviceContext)\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.SpriteBatch.TextureInfo\">\n            <summary>\n            Internal structure used to store texture information.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.SpriteEffects\">\n            <summary>\n            Defines sprite mirroring options.\n            </summary>\n            <remarks>\n            Description is taken from original XNA <a href='http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.graphics.spriteeffects.aspx'>SpriteEffects</a> class.\n            </remarks>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.SpriteEffects.None\">\n            <summary>\n            No rotations specified.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.SpriteEffects.FlipHorizontally\">\n            <summary>\n            Rotate 180 degrees around the Y axis before rendering.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.SpriteEffects.FlipVertically\">\n            <summary>\n            Rotate 180 degrees around the X axis before rendering.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.SpriteEffects.FlipBoth\">\n            <summary>\n            Rotate 180 degress around both the X and Y axis before rendering.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.SpriteFont\">\n            <summary>\n            Represents a font texture.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.SpriteFont.Load(SharpDX.Toolkit.Graphics.GraphicsDevice,System.IO.Stream,SharpDX.Toolkit.Graphics.SpriteFontBitmapDataLoaderDelegate)\">\n            <summary>\n            Loads an <see cref=\"T:SharpDX.Toolkit.Graphics.EffectData\"/> from the specified stream.\n            </summary>\n            <param name=\"device\">The graphics device</param>\n            <param name=\"stream\">The stream.</param>\n            <param name=\"bitmapDataLoader\">A delegate to load bitmap data that are not stored in the buffer.</param>\n            <returns>An <see cref=\"T:SharpDX.Toolkit.Graphics.EffectData\"/>. Null if the stream is not a serialized <see cref=\"T:SharpDX.Toolkit.Graphics.EffectData\"/>.</returns>\n            <remarks>\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.SpriteFont.Load(SharpDX.Toolkit.Graphics.GraphicsDevice,System.Byte[],SharpDX.Toolkit.Graphics.SpriteFontBitmapDataLoaderDelegate)\">\n            <summary>\n            Loads an <see cref=\"T:SharpDX.Toolkit.Graphics.EffectData\"/> from the specified buffer.\n            </summary>\n            <param name=\"device\">The graphics device</param>\n            <param name=\"buffer\">The buffer.</param>\n            <param name=\"bitmapDataLoader\">A delegate to load bitmap data that are not stored in the buffer.</param>\n            <returns>An <see cref=\"T:SharpDX.Toolkit.Graphics.EffectData\"/> </returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.SpriteFont.Load(SharpDX.Toolkit.Graphics.GraphicsDevice,System.String)\">\n            <summary>\n            Loads an <see cref=\"T:SharpDX.Toolkit.Graphics.EffectData\"/> from the specified file.\n            </summary>\n            <param name=\"device\">The graphics device</param>\n            <param name=\"fileName\">The filename.</param>\n            <returns>An <see cref=\"T:SharpDX.Toolkit.Graphics.EffectData\"/> </returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.SpriteFont.MeasureString(System.String)\">\n            <summary>Returns the width and height of a string as a Vector2.</summary>\n            <param name=\"text\">The string to measure.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.SpriteFont.MeasureString(System.Text.StringBuilder)\">\n            <summary>Returns the width and height of a string as a Vector2.</summary>\n            <param name=\"text\">The string to measure.</param>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.SpriteFont.Characters\">\n            <summary>Gets a collection of all the characters that are included in the font.</summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.SpriteFont.DefaultCharacter\">\n            <summary>Gets or sets the default character for the font.</summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.SpriteFont.LineSpacing\">\n            <summary>Gets or sets the vertical distance (in pixels) between the base lines of two consecutive lines of text. Line spacing includes the blank space between lines as well as the height of the characters.</summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.SpriteFont.Spacing\">\n            <summary>Gets or sets the spacing of the font characters.</summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.SpriteFontContentReader\">\n            <summary>\n            Internal class to load a SpriteFont.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.SpriteSortMode\">\n            <summary>\n            Defines sprite sort-rendering options. \n            </summary>\n            <remarks>\n            Description is taken from original XNA <a href='http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.graphics.spritesortmode.aspx'>SpriteBatch</a> class.\n            </remarks>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.SpriteSortMode.Deferred\">\n            <summary>\n            Sprites are not drawn until End is called. \n            End will apply graphics device settings and draw all the sprites in one batch, in the same order calls to Draw were received. \n            This mode allows Draw calls to two or more instances of SpriteBatch without introducing conflicting graphics device settings. SpriteBatch defaults to Deferred mode.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.SpriteSortMode.Immediate\">\n            <summary>\n            Begin will apply new graphics device settings, and sprites will be drawn within each Draw call. In Immediate mode there can only be one active SpriteBatch instance without introducing conflicting device settings. \n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.SpriteSortMode.Texture\">\n            <summary>\n            Same as Deferred mode, except sprites are sorted by texture prior to drawing. This can improve performance when drawing non-overlapping sprites of uniform depth.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.SpriteSortMode.BackToFront\">\n            <summary>\n            Same as Deferred mode, except sprites are sorted by depth in back-to-front order prior to drawing. This procedure is recommended when drawing transparent sprites of varying depths.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.SpriteSortMode.FrontToBack\">\n            <summary>\n            Same as Deferred mode, except sprites are sorted by depth in front-to-back order prior to drawing. This procedure is recommended when drawing opaque sprites of varying depths.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.Buffer\">\n            <summary>\n            All-in-One Buffer class linked <see cref=\"T:SharpDX.Direct3D11.Buffer\"/>.\n            </summary>\n            <remarks>\n            This class is able to create constant buffers, index buffers, vertex buffers, structured buffer, raw buffers, argument buffers.\n            </remarks>\n            <msdn-id>ff476351</msdn-id>\t\n            <unmanaged>ID3D11Buffer</unmanaged>\t\n            <unmanaged-short>ID3D11Buffer</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.Buffer.Description\">\n            <summary>\n            Gets the description of this buffer.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.Buffer.ElementCount\">\n            <summary>\n            Gets the number of elements.\n            </summary>\n            <remarks>\n            This value is valid for structured buffers, raw buffers and index buffers that are used as a SharedResourceView.\n            </remarks>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.Buffer.ElementSize\">\n            <summary>\n            Gets the size of element T.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.Buffer.BufferFlags\">\n            <summary>\n            Gets the type of this buffer.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.Buffer.ViewFormat\">\n            <summary>\n            Gets the default view format of this buffer.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Buffer.#ctor(SharpDX.Toolkit.Graphics.GraphicsDevice,SharpDX.Direct3D11.BufferDescription,SharpDX.Toolkit.Graphics.BufferFlags,SharpDX.Toolkit.Graphics.PixelFormat,System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.Buffer\"/> class.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"description\">The description.</param>\n            <param name=\"bufferFlags\">Type of the buffer.</param>\n            <param name=\"viewFormat\">The view format.</param>\n            <param name=\"dataPointer\">The data pointer.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Buffer.#ctor(SharpDX.Toolkit.Graphics.GraphicsDevice,SharpDX.Direct3D11.Buffer,SharpDX.Toolkit.Graphics.BufferFlags,SharpDX.Toolkit.Graphics.PixelFormat)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.Buffer\"/> class.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"nativeBuffer\">The native buffer.</param>\n            <param name=\"bufferFlags\">Type of the buffer.</param>\n            <param name=\"viewFormat\">The view format.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Buffer.ToStaging\">\n            <summary>\n            Return an equivalent staging texture CPU read-writable from this instance.\n            </summary>\n            <returns>A new instance of this buffer as a staging resource</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Buffer.Clone\">\n            <summary>\n            Clones this instance.\n            </summary>\n            <returns>A clone of this instance</returns>\n            <remarks>\n            This method will not copy the content of the buffer to the clone\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Buffer.GetShaderResourceView(SharpDX.Toolkit.Graphics.PixelFormat,System.Int32,System.Int32)\">\n            <summary>\n            Gets a <see cref=\"T:SharpDX.Direct3D11.ShaderResourceView\"/> for a particular <see cref=\"T:SharpDX.Toolkit.Graphics.PixelFormat\"/>.\n            </summary>\n            <param name=\"viewFormat\">The view format.</param>\n            <param name=\"firstElement\">The first element of the view.</param>\n            <param name=\"elementCount\">The number of elements accessible from the view.</param>\n            <returns>A <see cref=\"T:SharpDX.Direct3D11.ShaderResourceView\"/> for the particular view format.</returns>\n            <remarks>\n            The buffer must have been declared with <see cref=\"F:SharpDX.Toolkit.Graphics.BufferFlags.ShaderResource\"/>. \n            The ShaderResourceView instance is kept by this buffer and will be disposed when this buffer is disposed.\n            </remarks>\n            <msdn-id>ff476519</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateShaderResourceView([In] ID3D11Resource* pResource,[In, Optional] const D3D11_SHADER_RESOURCE_VIEW_DESC* pDesc,[Out, Fast] ID3D11ShaderResourceView** ppSRView)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateShaderResourceView</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Buffer.GetRenderTargetView(SharpDX.Toolkit.Graphics.PixelFormat,System.Int32)\">\n            <summary>\n            Gets a <see cref=\"T:SharpDX.Direct3D11.RenderTargetView\"/> for a particular <see cref=\"T:SharpDX.Toolkit.Graphics.PixelFormat\"/>.\n            </summary>\n            <param name=\"pixelFormat\">The view format.</param>\n            <param name=\"width\">The width in pixels of the render target.</param>\n            <returns>A <see cref=\"T:SharpDX.Direct3D11.RenderTargetView\"/> for the particular view format.</returns>\n            <remarks>The buffer must have been declared with <see cref=\"F:SharpDX.Toolkit.Graphics.BufferFlags.RenderTarget\"/>.\n            The RenderTargetView instance is kept by this buffer and will be disposed when this buffer is disposed.</remarks>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Buffer.GetData``1\">\n            <summary>\n            Gets the content of this buffer to an array of data.\n            </summary>\n            <typeparam name=\"TData\">The type of the T data.</typeparam>\n            <remarks>\n            This method is only working when called from the main thread that is accessing the main <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.\n            This method creates internally a stagging resource if this texture is not already a stagging resouce, copies to it and map it to memory. Use method with explicit staging resource\n            for optimal performances.</remarks>\n            <msdn-id>ff476457</msdn-id>\t\n            <unmanaged>HRESULT ID3D11DeviceContext::Map([In] ID3D11Resource* pResource,[In] unsigned int Subresource,[In] D3D11_MAP MapType,[In] D3D11_MAP_FLAG MapFlags,[Out] D3D11_MAPPED_SUBRESOURCE* pMappedResource)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::Map</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Buffer.GetData``1(``0[])\">\n            <summary>\n            Copies the content of this buffer to an array of data.\n            </summary>\n            <typeparam name=\"TData\">The type of the T data.</typeparam>\n            <param name=\"toData\">The destination buffer to receive a copy of the texture datas.</param>\n            <remarks>\n            This method is only working when called from the main thread that is accessing the main <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.\n            This method creates internally a stagging resource if this texture is not already a stagging resouce, copies to it and map it to memory. Use method with explicit staging resource\n            for optimal performances.</remarks>\n            <msdn-id>ff476457</msdn-id>\t\n            <unmanaged>HRESULT ID3D11DeviceContext::Map([In] ID3D11Resource* pResource,[In] unsigned int Subresource,[In] D3D11_MAP MapType,[In] D3D11_MAP_FLAG MapFlags,[Out] D3D11_MAPPED_SUBRESOURCE* pMappedResource)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::Map</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Buffer.GetData``1(``0@)\">\n            <summary>\n            Copies the content of this buffer to an array of data.\n            </summary>\n            <typeparam name=\"TData\">The type of the T data.</typeparam>\n            <param name=\"toData\">The destination buffer to receive a copy of the texture datas.</param>\n            <remarks>\n            This method is only working when called from the main thread that is accessing the main <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.\n            This method creates internally a stagging resource if this texture is not already a stagging resouce, copies to it and map it to memory. Use method with explicit staging resource\n            for optimal performances.</remarks>\n            <msdn-id>ff476457</msdn-id>\t\n            <unmanaged>HRESULT ID3D11DeviceContext::Map([In] ID3D11Resource* pResource,[In] unsigned int Subresource,[In] D3D11_MAP MapType,[In] D3D11_MAP_FLAG MapFlags,[Out] D3D11_MAPPED_SUBRESOURCE* pMappedResource)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::Map</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Buffer.GetData``1(SharpDX.Toolkit.Graphics.Buffer,``0@)\">\n            <summary>\n            Copies the content of this buffer from GPU memory to an array of data on CPU memory using a specific staging resource.\n            </summary>\n            <typeparam name=\"TData\">The type of the T data.</typeparam>\n            <param name=\"stagingTexture\">The staging buffer used to transfer the buffer.</param>\n            <param name=\"toData\">To data.</param>\n            <exception cref=\"T:System.ArgumentException\">When strides is different from optimal strides, and TData is not the same size as the pixel format, or Width * Height != toData.Length</exception>\n            <remarks>\n            This method is only working when called from the main thread that is accessing the main <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.\n            </remarks>\n            <msdn-id>ff476457</msdn-id>\t\n            <unmanaged>HRESULT ID3D11DeviceContext::Map([In] ID3D11Resource* pResource,[In] unsigned int Subresource,[In] D3D11_MAP MapType,[In] D3D11_MAP_FLAG MapFlags,[Out] D3D11_MAPPED_SUBRESOURCE* pMappedResource)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::Map</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Buffer.GetData``1(SharpDX.Toolkit.Graphics.Buffer,``0[])\">\n            <summary>\n            Copies the content of this buffer from GPU memory to an array of data on CPU memory using a specific staging resource.\n            </summary>\n            <typeparam name=\"TData\">The type of the T data.</typeparam>\n            <param name=\"stagingTexture\">The staging buffer used to transfer the buffer.</param>\n            <param name=\"toData\">To data.</param>\n            <exception cref=\"T:System.ArgumentException\">When strides is different from optimal strides, and TData is not the same size as the pixel format, or Width * Height != toData.Length</exception>\n            <remarks>\n            This method is only working when called from the main thread that is accessing the main <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.\n            </remarks>\n            <msdn-id>ff476457</msdn-id>\t\n            <unmanaged>HRESULT ID3D11DeviceContext::Map([In] ID3D11Resource* pResource,[In] unsigned int Subresource,[In] D3D11_MAP MapType,[In] D3D11_MAP_FLAG MapFlags,[Out] D3D11_MAPPED_SUBRESOURCE* pMappedResource)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::Map</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Buffer.GetData(SharpDX.Toolkit.Graphics.Buffer,SharpDX.DataPointer)\">\n            <summary>\n            Copies the content of this buffer from GPU memory to a CPU memory using a specific staging resource.\n            </summary>\n            <param name=\"stagingTexture\">The staging buffer used to transfer the buffer.</param>\n            <param name=\"toData\">To data pointer.</param>\n            <exception cref=\"T:System.ArgumentException\">When strides is different from optimal strides, and TData is not the same size as the pixel format, or Width * Height != toData.Length</exception>\n            <remarks>\n            This method is only working when called from the main thread that is accessing the main <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.\n            </remarks>\n            <msdn-id>ff476457</msdn-id>\t\n            <unmanaged>HRESULT ID3D11DeviceContext::Map([In] ID3D11Resource* pResource,[In] unsigned int Subresource,[In] D3D11_MAP MapType,[In] D3D11_MAP_FLAG MapFlags,[Out] D3D11_MAPPED_SUBRESOURCE* pMappedResource)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::Map</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Buffer.SetData``1(``0@,System.Int32,SharpDX.Toolkit.Graphics.SetDataOptions)\">\n            <summary>\n            Copies the content of a single structure data from CPU memory to this buffer into GPU memory.\n            </summary>\n            <typeparam name=\"TData\">The type of the T data.</typeparam>\n            <param name=\"fromData\">The data to copy from.</param>\n            <param name=\"offsetInBytes\">The offset in bytes to write to.</param>\n            <exception cref=\"T:System.ArgumentException\"></exception>\n            <remarks>\n            This method is only working when called from the main thread that is accessing the main <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>. See the unmanaged documentation about Map/UnMap for usage and restrictions.\n            </remarks>\n            <msdn-id>ff476457</msdn-id>\n            <unmanaged>HRESULT ID3D11DeviceContext::Map([In] ID3D11Resource* pResource,[In] unsigned int Subresource,[In] D3D11_MAP MapType,[In] D3D11_MAP_FLAG MapFlags,[Out] D3D11_MAPPED_SUBRESOURCE* pMappedResource)</unmanaged>\n            <unmanaged-short>ID3D11DeviceContext::Map</unmanaged-short>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Buffer.SetData``1(``0[],System.Int32,System.Int32,System.Int32,SharpDX.Toolkit.Graphics.SetDataOptions)\">\n            <summary>\n            Copies the content an array of data from CPU memory to this buffer into GPU memory.\n            </summary>\n            <typeparam name=\"TData\">The type of the T data.</typeparam>\n            <param name=\"fromData\">The data to copy from.</param>\n            <param name=\"offsetInBytes\">The offset in bytes to write to.</param>\n            <exception cref=\"T:System.ArgumentException\"></exception>\n            <remarks>\n            This method is only working when called from the main thread that is accessing the main <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>. See the unmanaged documentation about Map/UnMap for usage and restrictions.\n            </remarks>\n            <msdn-id>ff476457</msdn-id>\n            <unmanaged>HRESULT ID3D11DeviceContext::Map([In] ID3D11Resource* pResource,[In] unsigned int Subresource,[In] D3D11_MAP MapType,[In] D3D11_MAP_FLAG MapFlags,[Out] D3D11_MAPPED_SUBRESOURCE* pMappedResource)</unmanaged>\n            <unmanaged-short>ID3D11DeviceContext::Map</unmanaged-short>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Buffer.SetData(SharpDX.DataPointer,System.Int32,SharpDX.Toolkit.Graphics.SetDataOptions)\">\n            <summary>\n            Copies the content an array of data on CPU memory to this buffer into GPU memory.\n            </summary>\n            <param name=\"fromData\">A data pointer.</param>\n            <param name=\"offsetInBytes\">The offset in bytes to write to.</param>\n            <exception cref=\"T:System.ArgumentException\"></exception>\n            <msdn-id>ff476457</msdn-id>\n              <unmanaged>HRESULT ID3D11DeviceContext::Map([In] ID3D11Resource* pResource,[In] unsigned int Subresource,[In] D3D11_MAP MapType,[In] D3D11_MAP_FLAG MapFlags,[Out] D3D11_MAPPED_SUBRESOURCE* pMappedResource)</unmanaged>\n              <unmanaged-short>ID3D11DeviceContext::Map</unmanaged-short>\n            <remarks>\n            This method is only working when called from the main thread that is accessing the main <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>. See the unmanaged documentation about Map/UnMap for usage and restrictions.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Buffer.SetData``1(SharpDX.Toolkit.Graphics.GraphicsDevice,``0@,System.Int32,SharpDX.Toolkit.Graphics.SetDataOptions)\">\n            <summary>\n            Copies the content an array of data on CPU memory to this buffer into GPU memory.\n            </summary>\n            <typeparam name=\"TData\">The type of the T data.</typeparam>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"fromData\">The data to copy from.</param>\n            <param name=\"offsetInBytes\">The offset in bytes to write to.</param>\n            <exception cref=\"T:System.ArgumentException\"></exception>\n            <remarks>\n            See the unmanaged documentation about Map/UnMap for usage and restrictions.\n            </remarks>\n            <msdn-id>ff476457</msdn-id>\n            <unmanaged>HRESULT ID3D11DeviceContext::Map([In] ID3D11Resource* pResource,[In] unsigned int Subresource,[In] D3D11_MAP MapType,[In] D3D11_MAP_FLAG MapFlags,[Out] D3D11_MAPPED_SUBRESOURCE* pMappedResource)</unmanaged>\n            <unmanaged-short>ID3D11DeviceContext::Map</unmanaged-short>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Buffer.SetData``1(SharpDX.Toolkit.Graphics.GraphicsDevice,``0[],System.Int32,System.Int32,System.Int32,SharpDX.Toolkit.Graphics.SetDataOptions)\">\n            <summary>\n            Copies the content an array of data on CPU memory to this buffer into GPU memory.\n            </summary>\n            <typeparam name=\"TData\">The type of the T data.</typeparam>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"fromData\">The data to copy from.</param>\n            <param name=\"offsetInBytes\">The offset in bytes to write to.</param>\n            <exception cref=\"T:System.ArgumentException\"></exception>\n            <remarks>\n            See the unmanaged documentation about Map/UnMap for usage and restrictions.\n            </remarks>\n            <msdn-id>ff476457</msdn-id>\n            <unmanaged>HRESULT ID3D11DeviceContext::Map([In] ID3D11Resource* pResource,[In] unsigned int Subresource,[In] D3D11_MAP MapType,[In] D3D11_MAP_FLAG MapFlags,[Out] D3D11_MAPPED_SUBRESOURCE* pMappedResource)</unmanaged>\n            <unmanaged-short>ID3D11DeviceContext::Map</unmanaged-short>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Buffer.SetData(SharpDX.Toolkit.Graphics.GraphicsDevice,SharpDX.DataPointer,System.Int32,SharpDX.Toolkit.Graphics.SetDataOptions)\">\n            <summary>\n            Copies the content an array of data on CPU memory to this buffer into GPU memory.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"fromData\">A data pointer.</param>\n            <param name=\"offsetInBytes\">The offset in bytes to write to.</param>\n            <exception cref=\"T:System.ArgumentException\"></exception>\n            <msdn-id>ff476457</msdn-id>\n              <unmanaged>HRESULT ID3D11DeviceContext::Map([In] ID3D11Resource* pResource,[In] unsigned int Subresource,[In] D3D11_MAP MapType,[In] D3D11_MAP_FLAG MapFlags,[Out] D3D11_MAPPED_SUBRESOURCE* pMappedResource)</unmanaged>\n              <unmanaged-short>ID3D11DeviceContext::Map</unmanaged-short>\n            <remarks>\n            See the unmanaged documentation about Map/UnMap for usage and restrictions.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Buffer.SetDynamicData(SharpDX.Toolkit.Graphics.GraphicsDevice,System.Action{System.IntPtr},System.Int32,SharpDX.Toolkit.Graphics.SetDataOptions)\">\n            <summary>\n            Directly sets a CPU memory region.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"fromData\">A data pointer.</param>\n            <param name=\"offsetInBytes\">The offset in bytes to write to.</param>\n            <exception cref=\"T:System.ArgumentException\"></exception>\n            <msdn-id>ff476457</msdn-id>\n              <unmanaged>HRESULT ID3D11DeviceContext::Map([In] ID3D11Resource* pResource,[In] unsigned int Subresource,[In] D3D11_MAP MapType,[In] D3D11_MAP_FLAG MapFlags,[Out] D3D11_MAPPED_SUBRESOURCE* pMappedResource)</unmanaged>\n              <unmanaged-short>ID3D11DeviceContext::Map</unmanaged-short>\n            <remarks>\n            See the unmanaged documentation about Map/UnMap for usage and restrictions.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Buffer.New(SharpDX.Toolkit.Graphics.GraphicsDevice,SharpDX.Toolkit.Graphics.Buffer,SharpDX.DXGI.Format)\">\n            <summary>\n            Creates a new <see cref=\"T:SharpDX.Toolkit.Graphics.Buffer\"/> instance.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"buffer\">The original buffer to duplicate the definition from.</param>\n            <param name=\"viewFormat\">The view format must be specified if the buffer is declared as a shared resource view.</param>\n            <returns>An instance of a new <see cref=\"T:SharpDX.Toolkit.Graphics.Buffer\"/></returns>\n            <msdn-id>ff476501</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateBuffer([In] const D3D11_BUFFER_DESC* pDesc,[In, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Buffer** ppBuffer)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Buffer.New(SharpDX.Toolkit.Graphics.GraphicsDevice,SharpDX.Direct3D11.BufferDescription,SharpDX.DXGI.Format)\">\n            <summary>\n            Creates a new <see cref=\"T:SharpDX.Toolkit.Graphics.Buffer\"/> instance.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"description\">The description of the buffer.</param>\n            <param name=\"viewFormat\">View format used if the buffer is used as a shared resource view.</param>\n            <returns>An instance of a new <see cref=\"T:SharpDX.Toolkit.Graphics.Buffer\"/></returns>\n            <msdn-id>ff476501</msdn-id>\n            <unmanaged>HRESULT ID3D11Device::CreateBuffer([In] const D3D11_BUFFER_DESC* pDesc,[In, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Buffer** ppBuffer)</unmanaged>\n            <unmanaged-short>ID3D11Device::CreateBuffer</unmanaged-short>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Buffer.New(SharpDX.Toolkit.Graphics.GraphicsDevice,System.Int32,SharpDX.Toolkit.Graphics.BufferFlags,SharpDX.Direct3D11.ResourceUsage)\">\n            <summary>\n            Creates a new <see cref=\"T:SharpDX.Toolkit.Graphics.Buffer\"/> instance.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"bufferSize\">Size of the buffer in bytes.</param>\n            <param name=\"bufferFlags\">The buffer flags to specify the type of buffer.</param>\n            <param name=\"usage\">The usage.</param>\n            <returns>An instance of a new <see cref=\"T:SharpDX.Toolkit.Graphics.Buffer\"/></returns>\n            <msdn-id>ff476501</msdn-id>\n            <unmanaged>HRESULT ID3D11Device::CreateBuffer([In] const D3D11_BUFFER_DESC* pDesc,[In, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Buffer** ppBuffer)</unmanaged>\n            <unmanaged-short>ID3D11Device::CreateBuffer</unmanaged-short>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Buffer.New``1(SharpDX.Toolkit.Graphics.GraphicsDevice,System.Int32,SharpDX.Toolkit.Graphics.BufferFlags,SharpDX.Direct3D11.ResourceUsage)\">\n            <summary>\n            Creates a new <see cref=\"T:SharpDX.Toolkit.Graphics.Buffer\"/> instance.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"elementCount\">Number of T elment in this buffer.</param>\n            <param name=\"bufferFlags\">The buffer flags to specify the type of buffer.</param>\n            <param name=\"usage\">The usage.</param>\n            <returns>An instance of a new <see cref=\"T:SharpDX.Toolkit.Graphics.Buffer\"/></returns>\n            <msdn-id>ff476501</msdn-id>\n            <unmanaged>HRESULT ID3D11Device::CreateBuffer([In] const D3D11_BUFFER_DESC* pDesc,[In, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Buffer** ppBuffer)</unmanaged>\n            <unmanaged-short>ID3D11Device::CreateBuffer</unmanaged-short>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Buffer.New(SharpDX.Toolkit.Graphics.GraphicsDevice,System.Int32,SharpDX.Toolkit.Graphics.BufferFlags,SharpDX.DXGI.Format,SharpDX.Direct3D11.ResourceUsage)\">\n            <summary>\n            Creates a new <see cref=\"T:SharpDX.Toolkit.Graphics.Buffer\"/> instance.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"bufferSize\">Size of the buffer in bytes.</param>\n            <param name=\"bufferFlags\">The buffer flags to specify the type of buffer.</param>\n            <param name=\"viewFormat\">The view format must be specified if the buffer is declared as a shared resource view.</param>\n            <param name=\"usage\">The usage.</param>\n            <returns>An instance of a new <see cref=\"T:SharpDX.Toolkit.Graphics.Buffer\"/></returns>\n            <msdn-id>ff476501</msdn-id>\n            <unmanaged>HRESULT ID3D11Device::CreateBuffer([In] const D3D11_BUFFER_DESC* pDesc,[In, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Buffer** ppBuffer)</unmanaged>\n            <unmanaged-short>ID3D11Device::CreateBuffer</unmanaged-short>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Buffer.New(SharpDX.Toolkit.Graphics.GraphicsDevice,System.Int32,System.Int32,SharpDX.Toolkit.Graphics.BufferFlags,SharpDX.Direct3D11.ResourceUsage)\">\n            <summary>\n            Creates a new <see cref=\"T:SharpDX.Toolkit.Graphics.Buffer\"/> instance.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"bufferSize\">Size of the buffer in bytes.</param>\n            <param name=\"elementSize\">Size of an element in the buffer.</param>\n            <param name=\"bufferFlags\">The buffer flags to specify the type of buffer.</param>\n            <param name=\"usage\">The usage.</param>\n            <returns>An instance of a new <see cref=\"T:SharpDX.Toolkit.Graphics.Buffer\"/></returns>\n            <msdn-id>ff476501</msdn-id>\n            <unmanaged>HRESULT ID3D11Device::CreateBuffer([In] const D3D11_BUFFER_DESC* pDesc,[In, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Buffer** ppBuffer)</unmanaged>\n            <unmanaged-short>ID3D11Device::CreateBuffer</unmanaged-short>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Buffer.New(SharpDX.Toolkit.Graphics.GraphicsDevice,System.Int32,System.Int32,SharpDX.Toolkit.Graphics.BufferFlags,SharpDX.DXGI.Format,SharpDX.Direct3D11.ResourceUsage)\">\n            <summary>\n            Creates a new <see cref=\"T:SharpDX.Toolkit.Graphics.Buffer\"/> instance.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"bufferSize\">Size of the buffer in bytes.</param>\n            <param name=\"elementSize\">Size of an element in the buffer.</param>\n            <param name=\"bufferFlags\">The buffer flags to specify the type of buffer.</param>\n            <param name=\"viewFormat\">The view format must be specified if the buffer is declared as a shared resource view.</param>\n            <param name=\"usage\">The usage.</param>\n            <returns>An instance of a new <see cref=\"T:SharpDX.Toolkit.Graphics.Buffer\"/></returns>\n            <msdn-id>ff476501</msdn-id>\n            <unmanaged>HRESULT ID3D11Device::CreateBuffer([In] const D3D11_BUFFER_DESC* pDesc,[In, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Buffer** ppBuffer)</unmanaged>\n            <unmanaged-short>ID3D11Device::CreateBuffer</unmanaged-short>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Buffer.New``1(SharpDX.Toolkit.Graphics.GraphicsDevice,``0@,SharpDX.Toolkit.Graphics.BufferFlags,SharpDX.Direct3D11.ResourceUsage)\">\n            <summary>\n            Creates a new <see cref=\"T:SharpDX.Toolkit.Graphics.Buffer\"/> instance.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <typeparam name=\"T\">Type of the buffer, to get the sizeof from.</typeparam>\n            <param name=\"value\">The initial value of this buffer.</param>\n            <param name=\"bufferFlags\">The buffer flags to specify the type of buffer.</param>\n            <param name=\"usage\">The usage.</param>\n            <returns>An instance of a new <see cref=\"T:SharpDX.Toolkit.Graphics.Buffer\"/></returns>\n            <msdn-id>ff476501</msdn-id>\n            <unmanaged>HRESULT ID3D11Device::CreateBuffer([In] const D3D11_BUFFER_DESC* pDesc,[In, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Buffer** ppBuffer)</unmanaged>\n            <unmanaged-short>ID3D11Device::CreateBuffer</unmanaged-short>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Buffer.New``1(SharpDX.Toolkit.Graphics.GraphicsDevice,``0@,SharpDX.Toolkit.Graphics.BufferFlags,SharpDX.DXGI.Format,SharpDX.Direct3D11.ResourceUsage)\">\n            <summary>\n            Creates a new <see cref=\"T:SharpDX.Toolkit.Graphics.Buffer\"/> instance.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <typeparam name=\"T\">Type of the buffer, to get the sizeof from.</typeparam>\n            <param name=\"value\">The initial value of this buffer.</param>\n            <param name=\"bufferFlags\">The buffer flags to specify the type of buffer.</param>\n            <param name=\"viewFormat\">The view format must be specified if the buffer is declared as a shared resource view.</param>\n            <param name=\"usage\">The usage.</param>\n            <returns>An instance of a new <see cref=\"T:SharpDX.Toolkit.Graphics.Buffer\"/></returns>\n            <msdn-id>ff476501</msdn-id>\n            <unmanaged>HRESULT ID3D11Device::CreateBuffer([In] const D3D11_BUFFER_DESC* pDesc,[In, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Buffer** ppBuffer)</unmanaged>\n            <unmanaged-short>ID3D11Device::CreateBuffer</unmanaged-short>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Buffer.New``1(SharpDX.Toolkit.Graphics.GraphicsDevice,``0[],SharpDX.Toolkit.Graphics.BufferFlags,SharpDX.Direct3D11.ResourceUsage)\">\n            <summary>\n            Creates a new <see cref=\"T:SharpDX.Toolkit.Graphics.Buffer\"/> instance.\n            </summary>\n            <typeparam name=\"T\">Type of the buffer, to get the sizeof from.</typeparam>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"initialValue\">The initial value of this buffer.</param>\n            <param name=\"bufferFlags\">The buffer flags to specify the type of buffer.</param>\n            <param name=\"usage\">The usage.</param>\n            <returns>An instance of a new <see cref=\"T:SharpDX.Toolkit.Graphics.Buffer\"/></returns>\n            <msdn-id>ff476501</msdn-id>\n            <unmanaged>HRESULT ID3D11Device::CreateBuffer([In] const D3D11_BUFFER_DESC* pDesc,[In, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Buffer** ppBuffer)</unmanaged>\n            <unmanaged-short>ID3D11Device::CreateBuffer</unmanaged-short>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Buffer.New``1(SharpDX.Toolkit.Graphics.GraphicsDevice,``0[],SharpDX.Toolkit.Graphics.BufferFlags,SharpDX.DXGI.Format,SharpDX.Direct3D11.ResourceUsage)\">\n            <summary>\n            Creates a new <see cref=\"T:SharpDX.Toolkit.Graphics.Buffer\"/> instance.\n            </summary>\n            <typeparam name=\"T\">Type of the buffer, to get the sizeof from.</typeparam>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"initialValue\">The initial value of this buffer.</param>\n            <param name=\"bufferFlags\">The buffer flags to specify the type of buffer.</param>\n            <param name=\"viewFormat\">The view format must be specified if the buffer is declared as a shared resource view.</param>\n            <param name=\"usage\">The usage.</param>\n            <returns>An instance of a new <see cref=\"T:SharpDX.Toolkit.Graphics.Buffer\"/></returns>\n            <msdn-id>ff476501</msdn-id>\n            <unmanaged>HRESULT ID3D11Device::CreateBuffer([In] const D3D11_BUFFER_DESC* pDesc,[In, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Buffer** ppBuffer)</unmanaged>\n            <unmanaged-short>ID3D11Device::CreateBuffer</unmanaged-short>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Buffer.New(SharpDX.Toolkit.Graphics.GraphicsDevice,System.Byte[],System.Int32,SharpDX.Toolkit.Graphics.BufferFlags,SharpDX.DXGI.Format,SharpDX.Direct3D11.ResourceUsage)\">\n            <summary>\n            Creates a new <see cref=\"T:SharpDX.Toolkit.Graphics.Buffer\"/> instance from a byte array.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"initialValue\">The initial value of this buffer.</param>\n            <param name=\"elementSize\">Size of an element. Must be equal to 2 or 4 for an index buffer, or to the size of a struct for a structured/typed buffer. Can be set to 0 for other buffers.</param>\n            <param name=\"bufferFlags\">The buffer flags to specify the type of buffer.</param>\n            <param name=\"viewFormat\">The view format must be specified if the buffer is declared as a shared resource view.</param>\n            <param name=\"usage\">The usage.</param>\n            <returns>An instance of a new <see cref=\"T:SharpDX.Toolkit.Graphics.Buffer\"/></returns>\n            <msdn-id>ff476501</msdn-id>\n            <unmanaged>HRESULT ID3D11Device::CreateBuffer([In] const D3D11_BUFFER_DESC* pDesc,[In, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Buffer** ppBuffer)</unmanaged>\n            <unmanaged-short>ID3D11Device::CreateBuffer</unmanaged-short>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Buffer.New(SharpDX.Toolkit.Graphics.GraphicsDevice,SharpDX.DataPointer,System.Int32,SharpDX.Toolkit.Graphics.BufferFlags,SharpDX.Direct3D11.ResourceUsage)\">\n            <summary>\n            Creates a new <see cref=\"T:SharpDX.Toolkit.Graphics.Buffer\"/> instance.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"dataPointer\">The data pointer.</param>\n            <param name=\"elementSize\">Size of the element.</param>\n            <param name=\"bufferFlags\">The buffer flags to specify the type of buffer.</param>\n            <param name=\"usage\">The usage.</param>\n            <returns>An instance of a new <see cref=\"T:SharpDX.Toolkit.Graphics.Buffer\"/></returns>\n            <msdn-id>ff476501</msdn-id>\n            <unmanaged>HRESULT ID3D11Device::CreateBuffer([In] const D3D11_BUFFER_DESC* pDesc,[In, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Buffer** ppBuffer)</unmanaged>\n            <unmanaged-short>ID3D11Device::CreateBuffer</unmanaged-short>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Buffer.New(SharpDX.Toolkit.Graphics.GraphicsDevice,SharpDX.DataPointer,System.Int32,SharpDX.Toolkit.Graphics.BufferFlags,SharpDX.DXGI.Format,SharpDX.Direct3D11.ResourceUsage)\">\n            <summary>\n            Creates a new <see cref=\"T:SharpDX.Toolkit.Graphics.Buffer\"/> instance.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"dataPointer\">The data pointer.</param>\n            <param name=\"elementSize\">Size of the element.</param>\n            <param name=\"bufferFlags\">The buffer flags to specify the type of buffer.</param>\n            <param name=\"viewFormat\">The view format must be specified if the buffer is declared as a shared resource view.</param>\n            <param name=\"usage\">The usage.</param>\n            <returns>An instance of a new <see cref=\"T:SharpDX.Toolkit.Graphics.Buffer\"/></returns>\n            <msdn-id>ff476501</msdn-id>\n            <unmanaged>HRESULT ID3D11Device::CreateBuffer([In] const D3D11_BUFFER_DESC* pDesc,[In, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Buffer** ppBuffer)</unmanaged>\n            <unmanaged-short>ID3D11Device::CreateBuffer</unmanaged-short>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Buffer.Initialize(SharpDX.Direct3D11.DeviceChild)\">\n            <summary>\n            Initializes the specified device arg.\n            </summary>\n            <param name=\"resource\">The resource.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Buffer.InitializeViews\">\n            <summary>\n            Initializes the views.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Buffer.op_Implicit(SharpDX.Toolkit.Graphics.Buffer)~SharpDX.Direct3D11.Resource\">\n            <summary>\n            Implicit casting operator to <see cref=\"T:SharpDX.Direct3D11.Resource\"/>\n            </summary>\n            <param name=\"from\">The GraphicsResource to convert from.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Buffer.op_Implicit(SharpDX.Toolkit.Graphics.Buffer)~SharpDX.Direct3D11.Buffer\">\n            <summary>\n            Implicit casting operator to <see cref=\"T:SharpDX.Direct3D11.Buffer\"/>\n            </summary>\n            <param name=\"from\">From.</param>\n            <returns>The result of the operator.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Buffer.op_Implicit(SharpDX.Toolkit.Graphics.Buffer)~SharpDX.Direct3D11.ShaderResourceView\">\n            <summary>\n            Implicit casting operator to <see cref=\"T:SharpDX.Direct3D11.Buffer\"/>\n            </summary>\n            <param name=\"from\">From.</param>\n            <returns>The result of the operator.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Buffer.op_Implicit(SharpDX.Toolkit.Graphics.Buffer)~SharpDX.Direct3D11.UnorderedAccessView\">\n            <summary>\n            Implicit casting operator to <see cref=\"T:SharpDX.Direct3D11.Buffer\"/>\n            </summary>\n            <param name=\"from\">From.</param>\n            <returns>The result of the operator.</returns>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.Buffer.Constant\">\n            <summary>\n            Constant buffer helper methods.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Buffer.Constant.New(SharpDX.Toolkit.Graphics.GraphicsDevice,System.Int32)\">\n            <summary>\n            Creates a new constant buffer with <see cref=\"F:SharpDX.Direct3D11.ResourceUsage.Dynamic\"/> usage.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"size\">The size in bytes.</param>\n            <returns>A constant buffer</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Buffer.Constant.New``1(SharpDX.Toolkit.Graphics.GraphicsDevice)\">\n            <summary>\n            Creates a new constant buffer with <see cref=\"F:SharpDX.Direct3D11.ResourceUsage.Dynamic\"/> usage.\n            </summary>\n            <typeparam name=\"T\">Type of the constant buffer to get the sizeof from</typeparam>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <returns>A constant buffer</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Buffer.Constant.New``1(SharpDX.Toolkit.Graphics.GraphicsDevice,``0@,SharpDX.Direct3D11.ResourceUsage)\">\n            <summary>\n            Creates a new constant buffer with <see cref=\"F:SharpDX.Direct3D11.ResourceUsage.Dynamic\"/> usage.\n            </summary>\n            <typeparam name=\"T\">Type of the constant buffer to get the sizeof from</typeparam>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"value\">The value to initialize the constant buffer.</param>\n            <param name=\"usage\">The usage of this resource.</param>\n            <returns>A constant buffer</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Buffer.Constant.New``1(SharpDX.Toolkit.Graphics.GraphicsDevice,``0[],SharpDX.Direct3D11.ResourceUsage)\">\n            <summary>\n            Creates a new constant buffer with <see cref=\"F:SharpDX.Direct3D11.ResourceUsage.Dynamic\"/> usage.\n            </summary>\n            <typeparam name=\"T\">Type of the constant buffer to get the sizeof from</typeparam>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"value\">The value to initialize the constant buffer.</param>\n            <param name=\"usage\">The usage of this resource.</param>\n            <returns>A constant buffer</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Buffer.Constant.New(SharpDX.Toolkit.Graphics.GraphicsDevice,SharpDX.DataPointer,SharpDX.Direct3D11.ResourceUsage)\">\n            <summary>\n            Creates a new constant buffer with <see cref=\"F:SharpDX.Direct3D11.ResourceUsage.Dynamic\"/> usage.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"value\">The value to initialize the constant buffer.</param>\n            <param name=\"usage\">The usage of this resource.</param>\n            <returns>A constant buffer</returns>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.Buffer.Index\">\n            <summary>\n            Index buffer helper methods.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Buffer.Index.New(SharpDX.Toolkit.Graphics.GraphicsDevice,System.Int32,SharpDX.Direct3D11.ResourceUsage)\">\n            <summary>\n            Creates a new index buffer with <see cref=\"F:SharpDX.Direct3D11.ResourceUsage.Default\"/> usage by default.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"size\">The size in bytes.</param>\n            <param name=\"usage\">The usage.</param>\n            <returns>A index buffer</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Buffer.Index.New``1(SharpDX.Toolkit.Graphics.GraphicsDevice,System.Int32,SharpDX.Direct3D11.ResourceUsage)\">\n            <summary>\n            Creates a new index buffer with <see cref=\"F:SharpDX.Direct3D11.ResourceUsage.Default\"/> usage by default.\n            </summary>\n            <typeparam name=\"T\">Type of the index buffer to get the sizeof from</typeparam>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"indexCount\">Number of indices.</param>\n            <param name=\"usage\">The usage.</param>\n            <returns>A index buffer</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Buffer.Index.New``1(SharpDX.Toolkit.Graphics.GraphicsDevice,``0@,SharpDX.Direct3D11.ResourceUsage)\">\n            <summary>\n            Creates a new index buffer with <see cref=\"F:SharpDX.Direct3D11.ResourceUsage.Immutable\"/> usage by default.\n            </summary>\n            <typeparam name=\"T\">Type of the index buffer to get the sizeof from</typeparam>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"value\">The value to initialize the index buffer.</param>\n            <param name=\"usage\">The usage of this resource.</param>\n            <returns>A index buffer</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Buffer.Index.New``1(SharpDX.Toolkit.Graphics.GraphicsDevice,``0[],SharpDX.Direct3D11.ResourceUsage)\">\n            <summary>\n            Creates a new index buffer with <see cref=\"F:SharpDX.Direct3D11.ResourceUsage.Immutable\"/> usage by default.\n            </summary>\n            <typeparam name=\"T\">Type of the index buffer to get the sizeof from</typeparam>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"value\">The value to initialize the index buffer.</param>\n            <param name=\"usage\">The usage of this resource.</param>\n            <returns>A index buffer</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Buffer.Index.New(SharpDX.Toolkit.Graphics.GraphicsDevice,System.Byte[],System.Boolean,SharpDX.Direct3D11.ResourceUsage)\">\n            <summary>\n            Creates a new index buffer with <see cref=\"F:SharpDX.Direct3D11.ResourceUsage.Immutable\"/> usage by default.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"value\">The value to initialize the index buffer.</param>\n            <param name=\"is32BitIndex\">Set to true if the buffer is using a 32 bit index or false for 16 bit index.</param>\n            <param name=\"usage\">The usage of this resource.</param>\n            <returns>A index buffer</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Buffer.Index.New(SharpDX.Toolkit.Graphics.GraphicsDevice,SharpDX.DataPointer,SharpDX.Direct3D11.ResourceUsage)\">\n            <summary>\n            Creates a new index buffer with <see cref=\"F:SharpDX.Direct3D11.ResourceUsage.Immutable\"/> usage by default.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"value\">The value to initialize the index buffer.</param>\n            <param name=\"usage\">The usage of this resource.</param>\n            <returns>A index buffer</returns>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.Buffer.Vertex\">\n            <summary>\n            Vertex buffer helper methods.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Buffer.Vertex.New(SharpDX.Toolkit.Graphics.GraphicsDevice,System.Int32,SharpDX.Direct3D11.ResourceUsage)\">\n            <summary>\n            Creates a new Vertex buffer with <see cref=\"F:SharpDX.Direct3D11.ResourceUsage.Default\"/> usage by default.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"size\">The size in bytes.</param>\n            <param name=\"usage\">The usage.</param>\n            <returns>A Vertex buffer</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Buffer.Vertex.New``1(SharpDX.Toolkit.Graphics.GraphicsDevice,System.Int32,SharpDX.Direct3D11.ResourceUsage)\">\n            <summary>\n            Creates a new Vertex buffer with <see cref=\"F:SharpDX.Direct3D11.ResourceUsage.Default\"/> usage by default.\n            </summary>\n            <typeparam name=\"T\">Type of the Vertex buffer to get the sizeof from</typeparam>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"vertexBufferCount\">Number of vertex in this buffer with the sizeof(T).</param>\n            <param name=\"usage\">The usage.</param>\n            <returns>A Vertex buffer</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Buffer.Vertex.New``1(SharpDX.Toolkit.Graphics.GraphicsDevice,``0[],SharpDX.Direct3D11.ResourceUsage)\">\n            <summary>\n            Creates a new Vertex buffer with <see cref=\"F:SharpDX.Direct3D11.ResourceUsage.Immutable\"/> usage by default.\n            </summary>\n            <typeparam name=\"T\">Type of the Vertex buffer to get the sizeof from</typeparam>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"value\">The value to initialize the Vertex buffer.</param>\n            <param name=\"usage\">The usage of this resource.</param>\n            <returns>A Vertex buffer</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Buffer.Vertex.New(SharpDX.Toolkit.Graphics.GraphicsDevice,SharpDX.DataPointer,SharpDX.Direct3D11.ResourceUsage)\">\n            <summary>\n            Creates a new Vertex buffer with <see cref=\"F:SharpDX.Direct3D11.ResourceUsage.Immutable\"/> usage by default.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"value\">The value to initialize the Vertex buffer.</param>\n            <param name=\"usage\">The usage of this resource.</param>\n            <returns>A Vertex buffer</returns>\n        </member>\n        <!-- Badly formed XML comment ignored for member \"T:SharpDX.Toolkit.Graphics.Buffer.Structured\" -->\n        <member name=\"M:SharpDX.Toolkit.Graphics.Buffer.Structured.New(SharpDX.Toolkit.Graphics.GraphicsDevice,System.Int32,System.Int32,System.Boolean)\">\n            <summary>\n            Creates a new Structured buffer accessible as a <see cref=\"T:SharpDX.Direct3D11.ShaderResourceView\"/> and optionaly as a <see cref=\"T:SharpDX.Direct3D11.UnorderedAccessView\"/>.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"count\">The number of element in this buffer.</param>\n            <param name=\"elementSize\">Size of the struct.</param>\n            <param name=\"isUnorderedAccess\">if set to <c>true</c> this buffer supports unordered access (RW in HLSL).</param>\n            <returns>A Structured buffer</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Buffer.Structured.New``1(SharpDX.Toolkit.Graphics.GraphicsDevice,System.Int32,System.Boolean)\">\n            <summary>\n            Creates a new Structured buffer accessible as a <see cref=\"T:SharpDX.Direct3D11.ShaderResourceView\"/> and optionaly as a <see cref=\"T:SharpDX.Direct3D11.UnorderedAccessView\"/>.\n            </summary>\n            <typeparam name=\"T\">Type of the element in the structured buffer</typeparam>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"count\">The number of element in this buffer.</param>\n            <param name=\"isUnorderedAccess\">if set to <c>true</c> this buffer supports unordered access (RW in HLSL).</param>\n            <returns>A Structured buffer</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Buffer.Structured.New``1(SharpDX.Toolkit.Graphics.GraphicsDevice,``0[],System.Boolean)\">\n            <summary>\n            Creates a new Structured buffer <see cref=\"F:SharpDX.Direct3D11.ResourceUsage.Default\"/> usage.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <typeparam name=\"T\">Type of the Structured buffer to get the sizeof from</typeparam>\n            <param name=\"value\">The value to initialize the Structured buffer.</param>\n            <param name=\"isUnorderedAccess\">if set to <c>true</c> this buffer supports unordered access (RW in HLSL).</param>\n            <returns>A Structured buffer</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Buffer.Structured.New(SharpDX.Toolkit.Graphics.GraphicsDevice,SharpDX.DataPointer,System.Int32,System.Boolean)\">\n            <summary>\n            Creates a new Structured buffer <see cref=\"F:SharpDX.Direct3D11.ResourceUsage.Default\"/> usage.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"value\">The value to initialize the Structured buffer.</param>\n            <param name=\"elementSize\">Size of the element.</param>\n            <param name=\"isUnorderedAccess\">if set to <c>true</c> this buffer supports unordered access (RW in HLSL).</param>\n            <returns>A Structured buffer</returns>\n        </member>\n        <!-- Badly formed XML comment ignored for member \"T:SharpDX.Toolkit.Graphics.Buffer.StructuredAppend\" -->\n        <member name=\"M:SharpDX.Toolkit.Graphics.Buffer.StructuredAppend.New(SharpDX.Toolkit.Graphics.GraphicsDevice,System.Int32,System.Int32)\">\n            <summary>\n            Creates a new StructuredAppend buffer accessible as a <see cref=\"T:SharpDX.Direct3D11.ShaderResourceView\"/> and as a <see cref=\"T:SharpDX.Direct3D11.UnorderedAccessView\"/>.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"count\">The number of element in this buffer.</param>\n            <param name=\"elementSize\">Size of the struct.</param>\n            <returns>A StructuredAppend buffer</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Buffer.StructuredAppend.New``1(SharpDX.Toolkit.Graphics.GraphicsDevice,System.Int32)\">\n            <summary>\n            Creates a new StructuredAppend buffer accessible as a <see cref=\"T:SharpDX.Direct3D11.ShaderResourceView\"/> and optionaly as a <see cref=\"T:SharpDX.Direct3D11.UnorderedAccessView\"/>.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <typeparam name=\"T\">Type of the element in the structured buffer</typeparam>\n            <param name=\"count\">The number of element in this buffer.</param>\n            <returns>A Structured buffer</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Buffer.StructuredAppend.New``1(SharpDX.Toolkit.Graphics.GraphicsDevice,``0[])\">\n            <summary>\n            Creates a new StructuredAppend buffer <see cref=\"F:SharpDX.Direct3D11.ResourceUsage.Default\"/> usage.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <typeparam name=\"T\">Type of the StructuredAppend buffer to get the sizeof from</typeparam>\n            <param name=\"value\">The value to initialize the StructuredAppend buffer.</param>\n            <returns>A StructuredAppend buffer</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Buffer.StructuredAppend.New(SharpDX.Toolkit.Graphics.GraphicsDevice,SharpDX.DataPointer,System.Int32)\">\n            <summary>\n            Creates a new StructuredAppend buffer <see cref=\"F:SharpDX.Direct3D11.ResourceUsage.Default\"/> usage.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"value\">The value to initialize the StructuredAppend buffer.</param>\n            <param name=\"elementSize\">Size of the element.</param>\n            <returns>A StructuredAppend buffer</returns>\n        </member>\n        <!-- Badly formed XML comment ignored for member \"T:SharpDX.Toolkit.Graphics.Buffer.StructuredCounter\" -->\n        <member name=\"M:SharpDX.Toolkit.Graphics.Buffer.StructuredCounter.New(SharpDX.Toolkit.Graphics.GraphicsDevice,System.Int32,System.Int32)\">\n            <summary>\n            Creates a new StructuredCounter buffer accessible as a <see cref=\"T:SharpDX.Direct3D11.ShaderResourceView\"/> and as a <see cref=\"T:SharpDX.Direct3D11.UnorderedAccessView\"/>.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"count\">The number of element in this buffer.</param>\n            <param name=\"elementSize\">Size of the struct.</param>\n            <returns>A StructuredCounter buffer</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Buffer.StructuredCounter.New``1(SharpDX.Toolkit.Graphics.GraphicsDevice,System.Int32)\">\n            <summary>\n            Creates a new StructuredCounter buffer accessible as a <see cref=\"T:SharpDX.Direct3D11.ShaderResourceView\"/> and optionaly as a <see cref=\"T:SharpDX.Direct3D11.UnorderedAccessView\"/>.\n            </summary>\n            <typeparam name=\"T\">Type of the element in the structured buffer</typeparam>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"count\">The number of element in this buffer.</param>\n            <returns>A Structured buffer</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Buffer.StructuredCounter.New``1(SharpDX.Toolkit.Graphics.GraphicsDevice,``0[])\">\n            <summary>\n            Creates a new StructuredCounter buffer <see cref=\"F:SharpDX.Direct3D11.ResourceUsage.Default\"/> usage.\n            </summary>\n            <typeparam name=\"T\">Type of the StructuredCounter buffer to get the sizeof from</typeparam>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"value\">The value to initialize the StructuredCounter buffer.</param>\n            <returns>A StructuredCounter buffer</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Buffer.StructuredCounter.New(SharpDX.Toolkit.Graphics.GraphicsDevice,SharpDX.DataPointer,System.Int32)\">\n            <summary>\n            Creates a new StructuredCounter buffer <see cref=\"F:SharpDX.Direct3D11.ResourceUsage.Default\"/> usage.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"value\">The value to initialize the StructuredCounter buffer.</param>\n            <param name=\"elementSize\">Size of the element.</param>\n            <returns>A StructuredCounter buffer</returns>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.Buffer.Raw\">\n            <summary>\n            Raw buffer helper methods.\n            </summary>\n            <remarks>\n            Example in HLSL: ByteAddressBuffer or RWByteAddressBuffer for raw buffers supporting unordered access.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Buffer.Raw.New(SharpDX.Toolkit.Graphics.GraphicsDevice,System.Int32,SharpDX.Toolkit.Graphics.BufferFlags,SharpDX.Direct3D11.ResourceUsage)\">\n            <summary>\n            Creates a new Raw buffer <see cref=\"F:SharpDX.Direct3D11.ResourceUsage.Default\"/> usage.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"size\">The size in bytes.</param>\n            <param name=\"additionalBindings\">The additional bindings (for example, to create a combined raw/index buffer, pass <see cref=\"!:BufferFlags.IndexBuffer\"/>)</param>\n            <param name=\"usage\">The usage.</param>\n            <returns>A Raw buffer</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Buffer.Raw.New``1(SharpDX.Toolkit.Graphics.GraphicsDevice,SharpDX.Toolkit.Graphics.BufferFlags,SharpDX.Direct3D11.ResourceUsage)\">\n            <summary>\n            Creates a new Raw buffer <see cref=\"F:SharpDX.Direct3D11.ResourceUsage.Default\"/> usage.\n            </summary>\n            <typeparam name=\"T\">Type of the Raw buffer to get the sizeof from</typeparam>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"additionalBindings\">The additional bindings (for example, to create a combined raw/index buffer, pass <see cref=\"!:BufferFlags.IndexBuffer\"/>)</param>\n            <param name=\"usage\">The usage.</param>\n            <returns>A Raw buffer</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Buffer.Raw.New``1(SharpDX.Toolkit.Graphics.GraphicsDevice,``0@,SharpDX.Toolkit.Graphics.BufferFlags,SharpDX.Direct3D11.ResourceUsage)\">\n            <summary>\n            Creates a new Raw buffer <see cref=\"F:SharpDX.Direct3D11.ResourceUsage.Default\"/> usage.\n            </summary>\n            <typeparam name=\"T\">Type of the Raw buffer to get the sizeof from</typeparam>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"value\">The value to initialize the Raw buffer.</param>\n            <param name=\"additionalBindings\">The additional bindings (for example, to create a combined raw/index buffer, pass <see cref=\"!:BufferFlags.IndexBuffer\"/>)</param>\n            <param name=\"usage\">The usage of this resource.</param>\n            <returns>A Raw buffer</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Buffer.Raw.New``1(SharpDX.Toolkit.Graphics.GraphicsDevice,``0[],SharpDX.Toolkit.Graphics.BufferFlags,SharpDX.Direct3D11.ResourceUsage)\">\n            <summary>\n            Creates a new Raw buffer <see cref=\"F:SharpDX.Direct3D11.ResourceUsage.Default\"/> usage.\n            </summary>\n            <typeparam name=\"T\">Type of the Raw buffer to get the sizeof from</typeparam>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"value\">The value to initialize the Raw buffer.</param>\n            <param name=\"additionalBindings\">The additional bindings (for example, to create a combined raw/index buffer, pass <see cref=\"!:BufferFlags.IndexBuffer\"/>)</param>\n            <param name=\"usage\">The usage of this resource.</param>\n            <returns>A Raw buffer</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Buffer.Raw.New(SharpDX.Toolkit.Graphics.GraphicsDevice,SharpDX.DataPointer,SharpDX.Toolkit.Graphics.BufferFlags,SharpDX.Direct3D11.ResourceUsage)\">\n            <summary>\n            Creates a new Raw buffer <see cref=\"F:SharpDX.Direct3D11.ResourceUsage.Default\"/> usage.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"value\">The value to initialize the Raw buffer.</param>\n            <param name=\"additionalBindings\">The additional bindings (for example, to create a combined raw/index buffer, pass <see cref=\"!:BufferFlags.IndexBuffer\"/>)</param>\n            <param name=\"usage\">The usage of this resource.</param>\n            <returns>A Raw buffer</returns>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.Buffer.Argument\">\n            <summary>\n            Argument buffer helper methods.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Buffer.Argument.New(SharpDX.Toolkit.Graphics.GraphicsDevice,System.Int32,SharpDX.Direct3D11.ResourceUsage)\">\n            <summary>\n            Creates a new Argument buffer <see cref=\"F:SharpDX.Direct3D11.ResourceUsage.Default\"/> usage.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"size\">The size in bytes.</param>\n            <param name=\"usage\">The usage.</param>\n            <returns>A Argument buffer</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Buffer.Argument.New``1(SharpDX.Toolkit.Graphics.GraphicsDevice,SharpDX.Direct3D11.ResourceUsage)\">\n            <summary>\n            Creates a new Argument buffer <see cref=\"F:SharpDX.Direct3D11.ResourceUsage.Default\"/> usage.\n            </summary>\n            <typeparam name=\"T\">Type of the Argument buffer to get the sizeof from</typeparam>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"usage\">The usage.</param>\n            <returns>A Argument buffer</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Buffer.Argument.New``1(SharpDX.Toolkit.Graphics.GraphicsDevice,``0@,SharpDX.Direct3D11.ResourceUsage)\">\n            <summary>\n            Creates a new Argument buffer <see cref=\"F:SharpDX.Direct3D11.ResourceUsage.Default\"/> usage.\n            </summary>\n            <typeparam name=\"T\">Type of the Argument buffer to get the sizeof from</typeparam>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"value\">The value to initialize the Argument buffer.</param>\n            <param name=\"usage\">The usage of this resource.</param>\n            <returns>A Argument buffer</returns>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.Buffer.Typed\">\n            <summary>\n            Typed buffer helper methods.\n            </summary>\n            <remarks>\n            Example in HLSL: Buffer&lt;float4&gt;.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Buffer.Typed.New(SharpDX.Toolkit.Graphics.GraphicsDevice,System.Int32,SharpDX.Toolkit.Graphics.PixelFormat,System.Boolean,SharpDX.Direct3D11.ResourceUsage)\">\n            <summary>\n            Creates a new Typed buffer <see cref=\"F:SharpDX.Direct3D11.ResourceUsage.Default\"/> usage.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"count\">The number of data with the following viewFormat.</param>\n            <param name=\"viewFormat\">The view format of the buffer.</param>\n            <param name=\"isUnorderedAccess\">if set to <c>true</c> this buffer supports unordered access (RW in HLSL).</param>\n            <param name=\"usage\">The usage.</param>\n            <returns>A Typed buffer</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Buffer.Typed.New``1(SharpDX.Toolkit.Graphics.GraphicsDevice,``0[],SharpDX.Toolkit.Graphics.PixelFormat,System.Boolean,SharpDX.Direct3D11.ResourceUsage)\">\n            <summary>\n            Creates a new Typed buffer <see cref=\"F:SharpDX.Direct3D11.ResourceUsage.Default\"/> usage.\n            </summary>\n            <typeparam name=\"T\">Type of the Typed buffer to get the sizeof from</typeparam>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"value\">The value to initialize the Typed buffer.</param>\n            <param name=\"viewFormat\">The view format of the buffer.</param>\n            <param name=\"isUnorderedAccess\">if set to <c>true</c> this buffer supports unordered access (RW in HLSL).</param>\n            <param name=\"usage\">The usage of this resource.</param>\n            <returns>A Typed buffer</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Buffer.Typed.New(SharpDX.Toolkit.Graphics.GraphicsDevice,SharpDX.DataPointer,SharpDX.Toolkit.Graphics.PixelFormat,System.Boolean,SharpDX.Direct3D11.ResourceUsage)\">\n            <summary>\n            Creates a new Typed buffer <see cref=\"F:SharpDX.Direct3D11.ResourceUsage.Default\"/> usage.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"value\">The value to initialize the Typed buffer.</param>\n            <param name=\"viewFormat\">The view format of the buffer.</param>\n            <param name=\"isUnorderedAccess\">if set to <c>true</c> this buffer supports unordered access (RW in HLSL).</param>\n            <param name=\"usage\">The usage of this resource.</param>\n            <returns>A Typed buffer</returns>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.Buffer`1\">\n            <summary>\n            A buffer with typed information.\n            </summary>\n            <typeparam name=\"T\">Type of an element of this buffer.</typeparam>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Buffer`1.GetData\">\n            <summary>\n            Gets the content of this texture to an array of data.\n            </summary>\n            <returns>An array of data.</returns>\n            <msdn-id>ff476457</msdn-id>\n              <unmanaged>HRESULT ID3D11DeviceContext::Map([In] ID3D11Resource* pResource,[In] unsigned int Subresource,[In] D3D11_MAP MapType,[In] D3D11_MAP_FLAG MapFlags,[Out] D3D11_MAPPED_SUBRESOURCE* pMappedResource)</unmanaged>\n              <unmanaged-short>ID3D11DeviceContext::Map</unmanaged-short>\n            <remarks>This method is only working when called from the main thread that is accessing the main <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.\n            This method creates internally a stagging resource if this texture is not already a stagging resouce, copies to it and map it to memory. Use method with explicit staging resource\n            for optimal performances.</remarks>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Buffer`1.SetData(`0@,System.Int32,SharpDX.Toolkit.Graphics.SetDataOptions)\">\n            <summary>\n            Copies the content of a single structure data from CPU memory to this buffer into GPU memory.\n            </summary>\n            <param name=\"fromData\">The data to copy from.</param>\n            <param name=\"offsetInBytes\">The offset in bytes to write to.</param>\n            <exception cref=\"T:System.ArgumentException\"></exception>\n            <remarks>\n            This method is only working when called from the main thread that is accessing the main <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>. See the unmanaged documentation about Map/UnMap for usage and restrictions.\n            </remarks>\n            <msdn-id>ff476457</msdn-id>\n            <unmanaged>HRESULT ID3D11DeviceContext::Map([In] ID3D11Resource* pResource,[In] unsigned int Subresource,[In] D3D11_MAP MapType,[In] D3D11_MAP_FLAG MapFlags,[Out] D3D11_MAPPED_SUBRESOURCE* pMappedResource)</unmanaged>\n            <unmanaged-short>ID3D11DeviceContext::Map</unmanaged-short>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Buffer`1.SetData(`0[],System.Int32,System.Int32,System.Int32,SharpDX.Toolkit.Graphics.SetDataOptions)\">\n            <summary>\n            Copies the content an array of data from CPU memory to this buffer into GPU memory.\n            </summary>\n            <param name=\"fromData\">The data to copy from.</param>\n            <param name=\"offsetInBytes\">The offset in bytes to write to.</param>\n            <remarks>\n            This method is only working when called from the main thread that is accessing the main <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>. See the unmanaged documentation about Map/UnMap for usage and restrictions.\n            </remarks>\n            <msdn-id>ff476457</msdn-id>\n            <unmanaged>HRESULT ID3D11DeviceContext::Map([In] ID3D11Resource* pResource,[In] unsigned int Subresource,[In] D3D11_MAP MapType,[In] D3D11_MAP_FLAG MapFlags,[Out] D3D11_MAPPED_SUBRESOURCE* pMappedResource)</unmanaged>\n            <unmanaged-short>ID3D11DeviceContext::Map</unmanaged-short>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Buffer`1.SetData(SharpDX.Toolkit.Graphics.GraphicsDevice,`0@,System.Int32,SharpDX.Toolkit.Graphics.SetDataOptions)\">\n            <summary>\n            Copies the content of a single structure data from CPU memory to this buffer into GPU memory.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"fromData\">The data to copy from.</param>\n            <param name=\"offsetInBytes\">The offset in bytes to write to.</param>\n            <exception cref=\"T:System.ArgumentException\"></exception>\n            <remarks>\n            This method is only working when called from the main thread that is accessing the main <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>. See the unmanaged documentation about Map/UnMap for usage and restrictions.\n            </remarks>\n            <msdn-id>ff476457</msdn-id>\n            <unmanaged>HRESULT ID3D11DeviceContext::Map([In] ID3D11Resource* pResource,[In] unsigned int Subresource,[In] D3D11_MAP MapType,[In] D3D11_MAP_FLAG MapFlags,[Out] D3D11_MAPPED_SUBRESOURCE* pMappedResource)</unmanaged>\n            <unmanaged-short>ID3D11DeviceContext::Map</unmanaged-short>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Buffer`1.SetData(SharpDX.Toolkit.Graphics.GraphicsDevice,`0[],System.Int32,System.Int32,System.Int32,SharpDX.Toolkit.Graphics.SetDataOptions)\">\n            <summary>\n            Copies the content an array of data from CPU memory to this buffer into GPU memory.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"fromData\">The data to copy from.</param>\n            <param name=\"offsetInBytes\">The offset in bytes to write to.</param>\n            <remarks>\n            This method is only working when called from the main thread that is accessing the main <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>. See the unmanaged documentation about Map/UnMap for usage and restrictions.\n            </remarks>\n            <msdn-id>ff476457</msdn-id>\n            <unmanaged>HRESULT ID3D11DeviceContext::Map([In] ID3D11Resource* pResource,[In] unsigned int Subresource,[In] D3D11_MAP MapType,[In] D3D11_MAP_FLAG MapFlags,[Out] D3D11_MAPPED_SUBRESOURCE* pMappedResource)</unmanaged>\n            <unmanaged-short>ID3D11DeviceContext::Map</unmanaged-short>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.BufferFlags\">\n            <summary>\n            Flags of a buffer.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.BufferFlags.None\">\n            <summary>\n            Creates a none buffer.\n            </summary>\n            <remarks>\n            This is equivalent to <see cref=\"F:SharpDX.Direct3D11.BindFlags.None\"/>.\n            </remarks>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.BufferFlags.ConstantBuffer\">\n            <summary>\n            Creates a constant buffer.\n            </summary>\n            <remarks>\n            This is equivalent to <see cref=\"F:SharpDX.Direct3D11.BindFlags.ConstantBuffer\"/>.\n            </remarks>\n            <msdn-id>ff476085</msdn-id>\t\n            <unmanaged>D3D11_BIND_CONSTANT_BUFFER</unmanaged>\t\n            <unmanaged-short>D3D11_BIND_CONSTANT_BUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.BufferFlags.IndexBuffer\">\n            <summary>\n            Creates an index buffer.\n            </summary>\n            <remarks>\n            This is equivalent to <see cref=\"F:SharpDX.Direct3D11.BindFlags.IndexBuffer\"/>.\n            </remarks>\n            <msdn-id>ff476085</msdn-id>\t\n            <unmanaged>D3D11_BIND_INDEX_BUFFER</unmanaged>\t\n            <unmanaged-short>D3D11_BIND_INDEX_BUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.BufferFlags.VertexBuffer\">\n            <summary>\n            Creates a vertex buffer.\n            </summary>\n            <remarks>\n            This is equivalent to <see cref=\"F:SharpDX.Direct3D11.BindFlags.VertexBuffer\"/>.\n            </remarks>\n            <msdn-id>ff476085</msdn-id>\t\n            <unmanaged>D3D11_BIND_VERTEX_BUFFER</unmanaged>\t\n            <unmanaged-short>D3D11_BIND_VERTEX_BUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.BufferFlags.RenderTarget\">\n            <summary>\n            Creates a render target buffer.\n            </summary>\n            <remarks>\n            This is equivalent to <see cref=\"F:SharpDX.Direct3D11.BindFlags.RenderTarget\"/>.\n            </remarks>\n            <msdn-id>ff476085</msdn-id>\t\n            <unmanaged>D3D11_BIND_RENDER_TARGET</unmanaged>\t\n            <unmanaged-short>D3D11_BIND_RENDER_TARGET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.BufferFlags.ShaderResource\">\n            <summary>\n            Creates a buffer usable as a <see cref=\"T:SharpDX.Direct3D11.ShaderResourceView\"/>.\n            </summary>\n            <remarks>\n            This is equivalent to <see cref=\"F:SharpDX.Direct3D11.BindFlags.ShaderResource\"/>.\n            </remarks>\n            <msdn-id>ff476085</msdn-id>\t\n            <unmanaged>D3D11_BIND_SHADER_RESOURCE</unmanaged>\t\n            <unmanaged-short>D3D11_BIND_SHADER_RESOURCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.BufferFlags.UnorderedAccess\">\n            <summary>\n            Creates an unordered access buffer.\n            </summary>\n            <remarks>\n            This is equivalent to <see cref=\"F:SharpDX.Direct3D11.BindFlags.UnorderedAccess\"/>.\n            </remarks>\n            <msdn-id>ff476085</msdn-id>\t\n            <unmanaged>D3D11_BIND_UNORDERED_ACCESS</unmanaged>\t\n            <unmanaged-short>D3D11_BIND_UNORDERED_ACCESS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.BufferFlags.StructuredBuffer\">\n            <summary>\n            Creates a structured buffer.\n            </summary>\n            <remarks>\n            This is equivalent to <see cref=\"F:SharpDX.Direct3D11.ResourceOptionFlags.BufferStructured\"/>.\n            </remarks>\n            <msdn-id>ff476203</msdn-id>\t\n            <unmanaged>D3D11_RESOURCE_MISC_BUFFER_STRUCTURED</unmanaged>\t\n            <unmanaged-short>D3D11_RESOURCE_MISC_BUFFER_STRUCTURED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.BufferFlags.StructuredAppendBuffer\">\n            <summary>\n            Creates a structured buffer that supports unordered acccess and append.\n            </summary>\n            <remarks>\n            This is equivalent to <see cref=\"F:SharpDX.Direct3D11.ResourceOptionFlags.BufferStructured\"/>.\n            </remarks>\n            <msdn-id>ff476203</msdn-id>\t\n            <unmanaged>D3D11_RESOURCE_MISC_BUFFER_STRUCTURED</unmanaged>\t\n            <unmanaged-short>D3D11_RESOURCE_MISC_BUFFER_STRUCTURED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.BufferFlags.StructuredCounterBuffer\">\n            <summary>\n            Creates a structured buffer that supports unordered acccess and counter.\n            </summary>\n            <remarks>\n            This is equivalent to <see cref=\"F:SharpDX.Direct3D11.ResourceOptionFlags.BufferStructured\"/>.\n            </remarks>\n            <msdn-id>ff476203</msdn-id>\t\n            <unmanaged>D3D11_RESOURCE_MISC_BUFFER_STRUCTURED</unmanaged>\t\n            <unmanaged-short>D3D11_RESOURCE_MISC_BUFFER_STRUCTURED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.BufferFlags.RawBuffer\">\n            <summary>\n            Creates a raw buffer.\n            </summary>\n            <remarks>\n            This is equivalent to <see cref=\"F:SharpDX.Direct3D11.ResourceOptionFlags.BufferAllowRawViews\"/> and <see cref=\"F:SharpDX.Direct3D11.UnorderedAccessViewBufferFlags.Raw\"/>.\n            </remarks>\n            <msdn-id>ff476203</msdn-id>\t\n            <unmanaged>D3D11_RESOURCE_MISC_BUFFER_ALLOW_RAW_VIEWS</unmanaged>\t\n            <unmanaged-short>D3D11_RESOURCE_MISC_BUFFER_ALLOW_RAW_VIEWS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.BufferFlags.ArgumentBuffer\">\n            <summary>\n            Creates an indirect arguments buffer.\n            </summary>\n            <remarks>\n            This is equivalent to <see cref=\"!:ResourceOptionFlags.DrawindirectArgs\"/>.\n            </remarks>\n            <msdn-id>ff476203</msdn-id>\t\n            <unmanaged>D3D11_RESOURCE_MISC_DRAWINDIRECT_ARGS</unmanaged>\t\n            <unmanaged-short>D3D11_RESOURCE_MISC_DRAWINDIRECT_ARGS</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.EffectConstantBufferCollection\">\n            <summary>\n            A collection of <see cref=\"T:SharpDX.Toolkit.Graphics.EffectConstantBuffer\"/>.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectConstantBufferCollection.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.EffectConstantBufferCollection\"/> class.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectConstantBufferCollection.#ctor(System.Int32)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.EffectConstantBufferCollection\"/> class.\n            </summary>\n            <param name=\"capacity\">The capacity.</param>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.AttributeCollection\">\n            <summary>\n            A collection of attributes.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.AttributeCollection.GetEnumerator\">\n            <inheritdoc/>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.AttributeCollection.System#Collections#IEnumerable#GetEnumerator\">\n            <inheritdoc/>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.AttributeCollection.Item(System.String)\">\n            <summary>\n            Gets a specific element in the collection by using a name.\n            </summary>\n            <param name=\"name\">The name.</param>\n            <returns>The value of the attribute. Null if not found.</returns>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.AttributeCollection.Count\">\n            <summary>\n            Gets the number of attributes.\n            </summary>\n            <value>The count of attributes.</value>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.AttributeCollection.Keys\">\n            <summary>\n            Gets the keys.\n            </summary>\n            <value>The keys.</value>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.AttributeCollection.Values\">\n            <summary>\n            Gets the values.\n            </summary>\n            <value>The values.</value>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.EffectConstantBuffer\">\n            <summary>\n            A constant buffer exposed by an effect.\n            </summary>\n            <remarks>\n            Constant buffers are created and shared inside a same <see cref=\"T:SharpDX.Toolkit.Graphics.EffectPool\"/>. The creation of the underlying GPU buffer\n            can be overriden using <see cref=\"P:SharpDX.Toolkit.Graphics.EffectPool.ConstantBufferAllocator\"/>.\n            </remarks>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectConstantBuffer.IsDirty\">\n            <summary>\n            Set this flag to true to notify that the buffer was changed\n            </summary>\n            <remarks>\n            When using Set(value) methods on this buffer, this property must be set to true to ensure that the bufer will\n            be uploaded.\n            </remarks>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectConstantBuffer.Parameters\">\n            <summary>\n            Gets the parameters registered for this constant buffer.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectConstantBuffer.Update\">\n            <summary>\n            Updates the specified constant buffer from all parameters value.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectConstantBuffer.Update(SharpDX.Toolkit.Graphics.GraphicsDevice)\">\n            <summary>\n            Updates the specified constant buffer from all parameters value.\n            </summary>\n            <param name=\"device\">The device.</param>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.EffectPool\">\n            <summary>\n            This class manages a pool of <see cref=\"T:SharpDX.Toolkit.Graphics.Effect\"/>.\n            </summary>\n            <remarks>\n            This class is responsible to store all EffectData, create shareable constant buffers betwen effects and reuse shader EffectData instances.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectPool.RegisterBytecode(SharpDX.Toolkit.Graphics.EffectData,System.Boolean)\">\n            <summary>\n            Registers a EffectData to this pool.\n            </summary>\n            <param name=\"data\">The effect data to register.</param>\n            <param name=\"allowOverride\">if set to <c>true</c> [allow override].</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectPool.New(SharpDX.Toolkit.Graphics.GraphicsDevice)\">\n            <summary>\n            Creates a new effect pool from a specified list of <see cref=\"P:SharpDX.Toolkit.Graphics.EffectPool.EffectData\"/>.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"effectData\">The effect data.</param>\n            <returns>An instance of <see cref=\"T:SharpDX.Toolkit.Graphics.EffectPool\"/>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectPool.New(SharpDX.Toolkit.Graphics.GraphicsDevice,System.String)\">\n            <summary>\n            Creates a new named effect pool from a specified list of <see cref=\"P:SharpDX.Toolkit.Graphics.EffectPool.EffectData\"/>.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"name\">The name of this effect pool.</param>\n            <param name=\"effectData\">The effect data.</param>\n            <returns>An instance of <see cref=\"T:SharpDX.Toolkit.Graphics.EffectPool\"/>.</returns>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.EffectPool.ConstantBufferAllocator\">\n            <summary>\n              Gets or sets the constant buffer allocator used to allocate a GPU constant buffer declared in an Effect.\n            </summary>\n            <remarks>\n              This delegate must be overriden when you want to control the creation of the GPU Constant buffer.\n              By default, the allocator is just allocating the buffer using \"Buffer.Constant.New(size)\" but\n              It is sometimes needed to create a constant buffer with different usage scenarios (using for example\n              a RawBuffer with multiple usages).\n              Setting this property to null will revert the default allocator.\n            </remarks>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.EffectPool.EffectData\">\n            <summary>\n            Gets the current merged EffectData for this pool. See remarks.\n            </summary>\n            <value>The EffectData.</value>\n            <remarks>\n            This EffectData must not be modified at runtime.\n            </remarks>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.EffectParameter\">\n            <summary>\n            A parameter of an effect.\n            </summary>\n            <remarks>\n            A parameter can be a value type that will be set to a constant buffer, or a resource type (SRV, UAV, SamplerState).\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectParameter.#ctor(SharpDX.Toolkit.Graphics.EffectData.ValueTypeParameter,SharpDX.Toolkit.Graphics.EffectConstantBuffer)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.EffectParameter\"/> class.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectParameter.#ctor(SharpDX.Toolkit.Graphics.EffectData.ResourceParameter,SharpDX.Toolkit.Graphics.EffectResourceType,System.Int32,SharpDX.Toolkit.Graphics.EffectResourceLinker)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.EffectParameter\"/> class.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectParameter.ParameterClass\">\n            <summary>\n            Gets the parameter class.\n            </summary>\n            <value>The parameter class.</value>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectParameter.ResourceType\">\n            <summary>\n            Gets the resource type.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectParameter.ParameterType\">\n            <summary>\n            Gets the type of the parameter.\n            </summary>\n            <value>The type of the parameter.</value>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectParameter.IsValueType\">\n            <summary>\n            Gets a boolean indicating if this parameter is a value type (true) or a resource type (false).\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectParameter.RowCount\">\n            <summary>\t\n            Number of rows in a matrix. Otherwise a numeric type returns 1, any other type returns 0. \t\n            </summary>\t\n            <unmanaged>int Rows</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectParameter.ColumnCount\">\n            <summary>\t\n            Number of columns in a matrix. Otherwise a numeric type returns 1, any other type returns 0. \t\n            </summary>\t\n            <unmanaged>int Columns</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectParameter.ElementCount\">\n            <summary>\n            Gets the collection of effect parameters.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectParameter.Size\">\n            <summary>\n            Size in bytes of the element, only valid for value types.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectParameter.GetValue``1\">\n            <summary>\n            Gets a single value to the associated parameter in the constant buffer.\n            </summary>\n            <typeparam name=\"T\">The type of the value to read from the buffer.</typeparam>\n            <returns>The value of this parameter.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectParameter.GetValueArray``1(System.Int32)\">\n            <summary>\n            Gets an array of values to the associated parameter in the constant buffer.\n            </summary>\n            <typeparam name = \"T\">The type of the value to read from the buffer.</typeparam>\n            <returns>The value of this parameter.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectParameter.GetMatrix\">\n            <summary>\n            Gets a single value to the associated parameter in the constant buffer.\n            </summary>\n            <returns>The value of this parameter.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectParameter.GetMatrix(System.Int32)\">\n            <summary>\n            Gets a single value to the associated parameter in the constant buffer.\n            </summary>\n            <returns>The value of this parameter.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectParameter.GetMatrixArray(System.Int32)\">\n            <summary>\n            Gets an array of matrices to the associated parameter in the constant buffer.\n            </summary>\n            <param name=\"count\">The count.</param>\n            <returns>Matrix[][].</returns>\n            <returns>The value of this parameter.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectParameter.GetMatrixArray(System.Int32,System.Int32)\">\n            <summary>\n            Gets a single value to the associated parameter in the constant buffer.\n            </summary>\n            <typeparam name = \"T\">The type of the value to read from the buffer.</typeparam>\n            <returns>The value of this parameter.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectParameter.SetValue``1(``0@)\">\n            <summary>\n            Sets a single value to the associated parameter in the constant buffer.\n            </summary>\n            <typeparam name = \"T\">The type of the value to be written to the buffer.</typeparam>\n            <param name = \"value\">The value to write to the buffer.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectParameter.SetValue``1(``0)\">\n            <summary>\n            Sets a single value to the associated parameter in the constant buffer.\n            </summary>\n            <typeparam name = \"T\">The type of the value to be written to the buffer.</typeparam>\n            <param name = \"value\">The value to write to the buffer.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectParameter.SetValue(SharpDX.Matrix@)\">\n            <summary>\n            Sets a single matrix value to the associated parameter in the constant buffer.\n            </summary>\n            <param name = \"value\">The matrix to write to the buffer.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectParameter.SetValue(SharpDX.Matrix)\">\n            <summary>\n            Sets a single matrix value to the associated parameter in the constant buffer.\n            </summary>\n            <param name = \"value\">The matrix to write to the buffer.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectParameter.SetValue(SharpDX.Matrix[])\">\n            <summary>\n            Sets an array of matrices to the associated parameter in the constant buffer.\n            </summary>\n            <param name = \"values\">An array of matrices to be written to the current buffer.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectParameter.SetValue(System.Int32,SharpDX.Matrix)\">\n            <summary>\n            Sets a single matrix at the specified index for the associated parameter in the constant buffer.\n            </summary>\n            <param name=\"index\">Index of the matrix to write in element count.</param>\n            <param name = \"value\">The matrix to write to the buffer.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectParameter.SetValue(System.Int32,SharpDX.Matrix[])\">\n            <summary>\n            Sets an array of matrices to at the specified index for the associated parameter in the constant buffer.\n            </summary>\n            <param name=\"index\">Index of the matrix to write in element count.</param>\n            <param name = \"values\">An array of matrices to be written to the current buffer.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectParameter.SetValue``1(``0[])\">\n            <summary>\n            Sets an array of values to the associated parameter in the constant buffer.\n            </summary>\n            <typeparam name = \"T\">The type of the value to be written to the buffer.</typeparam>\n            <param name = \"values\">An array of values to be written to the current buffer.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectParameter.SetValue``1(System.Int32,``0@)\">\n            <summary>\n            Sets a single value at the specified index for the associated parameter in the constant buffer.\n            </summary>\n            <typeparam name = \"T\">The type of the value to be written to the buffer.</typeparam>\n            <param name=\"index\">Index of the value to write in typeof(T) element count.</param>\n            <param name = \"value\">The value to write to the buffer.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectParameter.SetValue``1(System.Int32,``0)\">\n            <summary>\n            Sets a single value at the specified index for the associated parameter in the constant buffer.\n            </summary>\n            <typeparam name = \"T\">The type of the value to be written to the buffer.</typeparam>\n            <param name=\"index\">Index of the value to write in typeof(T) element count.</param>\n            <param name = \"value\">The value to write to the buffer.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectParameter.SetValue``1(System.Int32,``0[])\">\n            <summary>\n            Sets an array of values to at the specified index for the associated parameter in the constant buffer.\n            </summary>\n            <typeparam name = \"T\">The type of the value to be written to the buffer.</typeparam>\n            <param name=\"index\">Index of the value to write in typeof(T) element count.</param>\n            <param name = \"values\">An array of values to be written to the current buffer.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectParameter.SetResourcePointer(System.IntPtr)\">\n            <summary>\n            Direct access to the resource pointer in order to \n            </summary>\n            <param name=\"resourcePointer\"></param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectParameter.CopyMatrixRowMajor(SharpDX.Matrix@,System.Int32)\">\n            <summary>\n            Copy matrix in row major order.\n            </summary>\n            <param name=\"matrix\">The source matrix.</param>\n            <param name=\"offset\">The offset in bytes to write to</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectParameter.CopyMatrixColumnMajor(SharpDX.Matrix@,System.Int32)\">\n            <summary>\n            Copy matrix in column major order.\n            </summary>\n            <param name=\"matrix\">The source matrix.</param>\n            <param name=\"offset\">The offset in bytes to write to</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectParameter.CopyMatrixDirect(SharpDX.Matrix@,System.Int32)\">\n            <summary>\n            Straight Matrix copy, no conversion.\n            </summary>\n            <param name=\"matrix\">The source matrix.</param>\n            <param name=\"offset\">The offset in bytes to write to</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectParameter.GetMatrixRowMajorFrom(System.Int32)\">\n            <summary>\n            Copy matrix in row major order.\n            </summary>\n            <param name=\"offset\">The offset in bytes to write to</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectParameter.GetMatrixColumnMajorFrom(System.Int32)\">\n            <summary>\n            Copy matrix in column major order.\n            </summary>\n            <param name=\"offset\">The offset in bytes to write to</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectParameter.GetMatrixDirectFrom(System.Int32)\">\n            <summary>\n            Straight Matrix copy, no conversion.\n            </summary>\n            <param name=\"offset\">The offset in bytes to write to</param>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.EffectParameter.Index\">\n            <summary>\n            A unique index of this parameter instance inside the <see cref=\"T:SharpDX.Toolkit.Graphics.EffectParameterCollection\"/> of an effect. See remarks.\n            </summary>\n            <remarks>\n            This unique index can be used between different instance of the effect with different deferred <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.\n            </remarks>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.EffectParameter.Offset\">\n            <summary>\n            Offset of this parameter.\n            </summary>\n            <remarks>\n            For a value type, this offset is the offset in bytes inside the constant buffer.\n            For a resource type, this offset is an index to the resource linker.\n            </remarks>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.EffectParameter.CopyMatrixDelegate\">\n            <summary>\n            CopyMatrix delegate used to reorder matrix when copying from <see cref=\"T:SharpDX.Matrix\"/>.\n            </summary>\n            <param name=\"matrix\">The source matrix.</param>\n            <param name=\"offset\">The offset in bytes to write to</param>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.EffectParameter.GetMatrixDelegate\">\n            <summary>\n            CopyMatrix delegate used to reorder matrix when copying from <see cref=\"T:SharpDX.Matrix\"/>.\n            </summary>\n            <param name=\"offset\">The offset in bytes to write to</param>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.EffectParameterCollection\">\n            <summary>\n            A collection of <see cref=\"T:SharpDX.Toolkit.Graphics.EffectParameter\"/>.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectParameterCollection.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.EffectParameterCollection\"/> class.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectParameterCollection.#ctor(System.Int32)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.EffectParameterCollection\"/> class.\n            </summary>\n            <param name=\"capacity\">The capacity.</param>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.EffectPass\">\n            <summary>\n            Contains rendering state for drawing with an effect; an effect can contain one or more passes. \n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectPass.UnchangedUAVCounters\">\n            <summary>\n              Declared 128 UAV counters for SetUnordere\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectPass.Attributes\">\n            <summary>\n              Gets the attributes associated with this pass.\n            </summary>\n            <value> The attributes. </value>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectPass.Effect\">\n            <summary>\n            The parent effect of this pass.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectPass.#ctor(SharpDX.Toolkit.Diagnostics.Logger,SharpDX.Toolkit.Graphics.Effect,SharpDX.Toolkit.Graphics.EffectTechnique,SharpDX.Toolkit.Graphics.EffectData.Pass,System.String)\">\n            <summary>\n              Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.EffectPass\"/> class.\n            </summary>\n            <param name=\"logger\">The logger used to log errors.</param>\n            <param name=\"effect\"> The effect. </param>\n            <param name=\"pass\"> The pass. </param>\n            <param name=\"name\"> The name. </param>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectPass.SubPasses\">\n            <summary>\n            Gets the sub-pass attached to a global pass.\n            </summary>\n            <remarks>\n            As a subpass cannot have subpass, if this pass is already a subpass, this field is null.\n            </remarks>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectPass.IsSubPass\">\n            <summary>\n            Gets a boolean indicating if this pass is a subpass.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectPass.Apply\">\n            <summary>\n              Applies this pass to the device pipeline.\n            </summary>\n            <remarks>\n              This method is responsible to:\n              <ul>\n                <li>Setup the shader on each stage.</li>\n                <li>Upload constant buffers with dirty flag</li>\n                <li>Set all input constant buffers, shader resource view, unordered access views and sampler states to the stage.</li>\n              </ul>\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectPass.ApplyInternal\">\n            <summary>\n            Internal apply.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectPass.Initialize(SharpDX.Toolkit.Diagnostics.Logger)\">\n            <summary>\n            Initializes this pass.\n            </summary>\n            <param name=\"logger\">The logger.</param>\n            <exception cref=\"T:System.InvalidOperationException\"></exception>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectPass.InitStageBlock(SharpDX.Toolkit.Graphics.EffectPass.StageBlock,SharpDX.Toolkit.Diagnostics.Logger)\">\n            <summary>\n            Initializes the stage block.\n            </summary>\n            <param name=\"stageBlock\">The stage block.</param>\n            <param name=\"logger\">The logger.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectPass.PrepareSlotLinks(SharpDX.Toolkit.Graphics.EffectPass.StageBlock@)\">\n            <summary>\n            Optimizes the slot links.\n            </summary>\n            <param name=\"stageBlock\">The stage block.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectPass.ComputeSlotLinks\">\n            <summary>\n            Computes the slot links.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.EffectPass.BlendState\">\n            <summary>\n              Gets or sets the state of the blend.\n            </summary>\n            <value> The state of the blend. </value>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.EffectPass.BlendStateColor\">\n            <summary>\n              Gets or sets the color of the blend state.\n            </summary>\n            <value> The color of the blend state. </value>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.EffectPass.BlendStateSampleMask\">\n            <summary>\n              Gets or sets the blend state sample mask.\n            </summary>\n            <value> The blend state sample mask. </value>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.EffectPass.DepthStencilState\">\n            <summary>\n              Gets or sets the state of the depth stencil.\n            </summary>\n            <value> The state of the depth stencil. </value>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.EffectPass.DepthStencilReference\">\n            <summary>\n              Gets or sets the depth stencil reference.\n            </summary>\n            <value> The depth stencil reference. </value>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.EffectPass.RasterizerState\">\n            <summary>\n              Gets or sets the state of the rasterizer.\n            </summary>\n            <value> The state of the rasterizer. </value>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectPass.RawSlotLinkSet.Count\">\n            <summary>\n              Number of SlotLinks.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectPass.RawSlotLinkSet.Links\">\n            <summary>\n              SlotLink* ptr;\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.EffectPassCollection\">\n            <summary>\n            A collection of <see cref=\"T:SharpDX.Toolkit.Graphics.EffectPass\"/>.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectPassCollection.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.EffectPassCollection\"/> class.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectPassCollection.#ctor(System.Int32)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.EffectPassCollection\"/> class.\n            </summary>\n            <param name=\"capacity\">The capacity.</param>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.EffectResourceLinker\">\n            <summary>\n            A class used to shader input resource parameters and prepare them (i.e. take their NativePointer asap).\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectResourceLinker.resources\">\n            <summary>\n            Real object resources, as they were set on the parameter.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectResourceLinker.ConstantBuffers\">\n            <summary>\n            Real object resources, as they were set on the parameter.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectResourceLinker.Count\">\n            <summary>\n            Total number of resources.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectResourceLinker.Pointers\">\n            <summary>\n            Pointer to native pointers.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectResourceLinker.Initialize\">\n            <summary>\n            Initializes this instance.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.EffectResourceType\">\n            <summary>\n            Type of a resource for an <see cref=\"T:SharpDX.Toolkit.Graphics.EffectParameter\"/>.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectResourceType.None\">\n            <summary>\n            This is not a resource.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectResourceType.ConstantBuffer\">\n            <summary>\n            A Constant Buffer.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectResourceType.ShaderResourceView\">\n            <summary>\n            A <see cref=\"T:SharpDX.Direct3D11.ShaderResourceView\"/>.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectResourceType.SamplerState\">\n            <summary>\n            A <see cref=\"T:SharpDX.Direct3D11.SamplerState\"/>.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectResourceType.UnorderedAccessView\">\n            <summary>\n            An <see cref=\"T:SharpDX.Direct3D11.UnorderedAccessView\"/>.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.EffectResourceTypeHelper\">\n            <summary>\n            Parameter type to resource type converter.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectResourceTypeHelper.ConvertFromParameterType(SharpDX.Toolkit.Graphics.EffectParameterType)\">\n            <summary>\n            Converts a <see cref=\"T:SharpDX.Toolkit.Graphics.EffectParameterType\"/> to an <see cref=\"T:SharpDX.Toolkit.Graphics.EffectResourceType\"/>.\n            </summary>\n            <param name=\"type\">The type.</param>\n            <returns>A resource type.</returns>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.EffectTechnique\">\n            <summary>\n            Represents an effect technique. \n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.EffectTechnique.Passes\">\n            <summary>\n            Gets the collection of EffectPass objects this rendering technique requires.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.EffectTechniqueCollection\">\n            <summary>\n            A collection of <see cref=\"T:SharpDX.Toolkit.Graphics.EffectTechnique\"/>.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectTechniqueCollection.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.EffectTechniqueCollection\"/> class.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectTechniqueCollection.#ctor(System.Int32)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.EffectTechniqueCollection\"/> class.\n            </summary>\n            <param name=\"capacity\">The capacity.</param>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.MipMapDescription\">\n            <summary>\n            Describes a mipmap.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.MipMapDescription.#ctor(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.MipMapDescription\"/> class.\n            </summary>\n            <param name=\"width\">The width.</param>\n            <param name=\"height\">The height.</param>\n            <param name=\"depth\">The depth.</param>\n            <param name=\"rowStride\">The row stride.</param>\n            <param name=\"depthStride\">The depth stride.</param>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.MipMapDescription.Width\">\n            <summary>\n            Width of this mipmap.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.MipMapDescription.Height\">\n            <summary>\n            Height of this mipmap.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.MipMapDescription.WidthPacked\">\n            <summary>\n            Width of this mipmap.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.MipMapDescription.HeightPacked\">\n            <summary>\n            Height of this mipmap.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.MipMapDescription.Depth\">\n            <summary>\n            Depth of this mipmap.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.MipMapDescription.RowStride\">\n            <summary>\n            RowStride of this mipmap (number of bytes per row).\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.MipMapDescription.DepthStride\">\n            <summary>\n            DepthStride of this mipmap (number of bytes per depth slice).\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.MipMapDescription.MipmapSize\">\n            <summary>\n            Size in bytes of this whole mipmap.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.MipMapDescription.op_Equality(SharpDX.Toolkit.Graphics.MipMapDescription,SharpDX.Toolkit.Graphics.MipMapDescription)\">\n            <summary>\n            Implements the ==.\n            </summary>\n            <param name=\"left\">The left.</param>\n            <param name=\"right\">The right.</param>\n            <returns>The result of the operator.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.MipMapDescription.op_Inequality(SharpDX.Toolkit.Graphics.MipMapDescription,SharpDX.Toolkit.Graphics.MipMapDescription)\">\n            <summary>\n            Implements the !=.\n            </summary>\n            <param name=\"left\">The left.</param>\n            <param name=\"right\">The right.</param>\n            <returns>The result of the operator.</returns>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.PixelBufferArray\">\n            <summary>\n            Used by <see cref=\"T:SharpDX.Toolkit.Graphics.Image\"/> to provide a selector to a <see cref=\"T:SharpDX.Toolkit.Graphics.PixelBuffer\"/>.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.PixelBufferArray.Item(System.Int32)\">\n            <summary>\n            Gets the pixel buffer.\n            </summary>\n            <returns>A <see cref=\"T:SharpDX.Toolkit.Graphics.PixelBuffer\"/>.</returns>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.PixelBufferArray.Count\">\n            <summary>\n            Gets the total number of pixel buffers.\n            </summary>\n            <returns>The total number of pixel buffers.</returns>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.PixelBufferArray.Item(System.Int32,System.Int32)\">\n            <summary>\n            Gets the pixel buffer for the specified array/z slice and mipmap level.\n            </summary>\n            <param name=\"arrayOrDepthSlice\">For 3D image, the parameter is the Z slice, otherwise it is an index into the texture array.</param>\n            <param name=\"mipIndex\">The mip map slice index.</param>\n            <returns>A <see cref=\"T:SharpDX.Toolkit.Graphics.PixelBuffer\"/>.</returns>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.PixelBufferArray.Item(System.Int32,System.Int32,System.Int32)\">\n            <summary>\n            Gets the pixel buffer for the specified array/z slice and mipmap level.\n            </summary>\n            <param name=\"arrayIndex\">Index into the texture array. Must be set to 0 for 3D images.</param>\n            <param name=\"zIndex\">Z index for 3D image. Must be set to 0 for all 1D/2D images.</param>\n            <param name=\"mipIndex\">The mip map slice index.</param>\n            <returns>A <see cref=\"T:SharpDX.Toolkit.Graphics.PixelBuffer\"/>.</returns>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.ImageDescription\">\n            <summary>\n            A description for <see cref=\"T:SharpDX.Toolkit.Graphics.Image\"/>.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.ImageDescription.Dimension\">\n            <summary>\n            The dimension of a texture.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.ImageDescription.Width\">\n            <summary>\t\n            <dd> <p>Texture width (in texels). The  range is from 1 to <see cref=\"F:SharpDX.Direct3D11.Resource.MaximumTexture1DSize\"/> (16384). However, the range is actually constrained by the feature level at which you create the rendering device. For more information about restrictions, see Remarks.</p> </dd>\t\n            </summary>\t\n            <remarks>\n            This field is valid for all textures: <see cref=\"T:SharpDX.Toolkit.Graphics.Texture1D\"/>, <see cref=\"T:SharpDX.Toolkit.Graphics.Texture2D\"/>, <see cref=\"T:SharpDX.Toolkit.Graphics.Texture3D\"/> and <see cref=\"T:SharpDX.Toolkit.Graphics.TextureCube\"/>.\n            </remarks>\n            <msdn-id>ff476252</msdn-id>\t\n            <unmanaged>unsigned int Width</unmanaged>\t\n            <unmanaged-short>unsigned int Width</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.ImageDescription.Height\">\n            <summary>\t\n            <dd> <p>Texture height (in texels). The  range is from 1 to <see cref=\"F:SharpDX.Direct3D11.Resource.MaximumTexture3DSize\"/> (2048). However, the range is actually constrained by the feature level at which you create the rendering device. For more information about restrictions, see Remarks.</p> </dd>\t\n            </summary>\t\n            <remarks>\n            This field is only valid for <see cref=\"T:SharpDX.Toolkit.Graphics.Texture2D\"/>, <see cref=\"T:SharpDX.Toolkit.Graphics.Texture3D\"/> and <see cref=\"T:SharpDX.Toolkit.Graphics.TextureCube\"/>.\n            </remarks>\n            <msdn-id>ff476254</msdn-id>\t\n            <unmanaged>unsigned int Height</unmanaged>\t\n            <unmanaged-short>unsigned int Height</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.ImageDescription.Depth\">\n            <summary>\t\n            <dd> <p>Texture depth (in texels). The  range is from 1 to <see cref=\"F:SharpDX.Direct3D11.Resource.MaximumTexture3DSize\"/> (2048). However, the range is actually constrained by the feature level at which you create the rendering device. For more information about restrictions, see Remarks.</p> </dd>\t\n            </summary>\t\n            <remarks>\n            This field is only valid for <see cref=\"T:SharpDX.Toolkit.Graphics.Texture3D\"/>.\n            </remarks>\n            <msdn-id>ff476254</msdn-id>\t\n            <unmanaged>unsigned int Depth</unmanaged>\t\n            <unmanaged-short>unsigned int Depth</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.ImageDescription.ArraySize\">\n            <summary>\t\n            <dd> <p>Number of textures in the array. The  range is from 1 to <see cref=\"F:SharpDX.Direct3D11.Resource.MaximumTexture1DArraySize\"/> (2048). However, the range is actually constrained by the feature level at which you create the rendering device. For more information about restrictions, see Remarks.</p> </dd>\t\n            </summary>\t\n            <remarks>\n            This field is only valid for <see cref=\"T:SharpDX.Toolkit.Graphics.Texture1D\"/>, <see cref=\"T:SharpDX.Toolkit.Graphics.Texture2D\"/> and <see cref=\"T:SharpDX.Toolkit.Graphics.TextureCube\"/>\n            </remarks>\n            <remarks>\n            This field is only valid for textures: <see cref=\"T:SharpDX.Toolkit.Graphics.Texture1D\"/>, <see cref=\"T:SharpDX.Toolkit.Graphics.Texture2D\"/> and <see cref=\"T:SharpDX.Toolkit.Graphics.TextureCube\"/>.\n            </remarks>\n            <msdn-id>ff476252</msdn-id>\t\n            <unmanaged>unsigned int ArraySize</unmanaged>\t\n            <unmanaged-short>unsigned int ArraySize</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.ImageDescription.MipLevels\">\n            <summary>\t\n            <dd> <p>The maximum number of mipmap levels in the texture. See the remarks in <strong><see cref=\"T:SharpDX.Direct3D11.ShaderResourceViewDescription.Texture1DResource\"/></strong>. Use 1 for a multisampled texture; or 0 to generate a full set of subtextures.</p> </dd>\t\n            </summary>\t\n            <msdn-id>ff476252</msdn-id>\t\n            <unmanaged>unsigned int MipLevels</unmanaged>\t\n            <unmanaged-short>unsigned int MipLevels</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.ImageDescription.Format\">\n            <summary>\t\n            <dd> <p>Texture format (see <strong><see cref=\"T:SharpDX.DXGI.Format\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <msdn-id>ff476252</msdn-id>\t\n            <unmanaged>DXGI_FORMAT Format</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT Format</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.DDS.MagicHeader\">\n            <summary>\n            Magic code to identify DDS header\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.DDS.PixelFormat\">\n            <summary>\n            Internal structure used to describe a DDS pixel format.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.DDS.PixelFormat.#ctor(SharpDX.Toolkit.Graphics.DDS.PixelFormatFlags,System.Int32,System.Int32,System.UInt32,System.UInt32,System.UInt32,System.UInt32)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.DDS.PixelFormat\"/> struct.\n            </summary>\n            <param name=\"flags\">The flags.</param>\n            <param name=\"fourCC\">The four CC.</param>\n            <param name=\"rgbBitCount\">The RGB bit count.</param>\n            <param name=\"rBitMask\">The r bit mask.</param>\n            <param name=\"gBitMask\">The g bit mask.</param>\n            <param name=\"bBitMask\">The b bit mask.</param>\n            <param name=\"aBitMask\">A bit mask.</param>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.DDS.PixelFormatFlags\">\n            <summary>\n            PixelFormat flags.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.DDS.HeaderFlags\">\n            <summary>\n            DDS Header flags.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.DDS.SurfaceFlags\">\n            <summary>\n            DDS Surface flags.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.DDS.CubemapFlags\">\n            <summary>\n            DDS Cubemap flags.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.DDSFlags\">\n            <summary>\n            Flags used by <see cref=\"M:SharpDX.Toolkit.Graphics.DDSHelper.LoadFromDDSMemory(System.IntPtr,System.Int32,System.Boolean,System.Nullable{System.Runtime.InteropServices.GCHandle})\"/>.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.DDSHelper.DecodeDDSHeader(System.IntPtr,System.Int32,SharpDX.Toolkit.Graphics.DDSFlags,SharpDX.Toolkit.Graphics.ImageDescription@,SharpDX.Toolkit.Graphics.DDSHelper.ConversionFlags@)\">\n            <summary>\n            Decodes DDS header including optional DX10 extended header\n            </summary>\n            <param name=\"headerPtr\">Pointer to the DDS header.</param>\n            <param name=\"size\">Size of the DDS content.</param>\n            <param name=\"flags\">Flags used for decoding the DDS header.</param>\n            <param name=\"description\">Output texture description.</param>\n            <param name=\"convFlags\">Output conversion flags.</param>\n            <exception cref=\"T:System.ArgumentException\">If the argument headerPtr is null</exception>\n            <exception cref=\"T:System.InvalidOperationException\">If the DDS header contains invalid datas.</exception>\n            <returns>True if the decoding is successfull, false if this is not a DDS header.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.DDSHelper.EncodeDDSHeader(SharpDX.Toolkit.Graphics.ImageDescription,SharpDX.Toolkit.Graphics.DDSFlags,System.IntPtr,System.Int32,System.Int32@)\">\n            <summary>\n            Encodes DDS file header (magic value, header, optional DX10 extended header)\n            </summary>\n            <param name=\"flags\">Flags used for decoding the DDS header.</param>\n            <param name=\"description\">Output texture description.</param>\n            <param name=\"pDestination\">Pointer to the DDS output header. Can be set to IntPtr.Zero to calculated the required bytes.</param>\n            <param name=\"maxsize\">The maximum size of the destination buffer.</param>\n            <param name=\"required\">Output the number of bytes required to write the DDS header.</param>\n            <exception cref=\"T:System.ArgumentException\">If the argument headerPtr is null</exception>\n            <exception cref=\"T:System.InvalidOperationException\">If the DDS header contains invalid datas.</exception>\n            <returns>True if the decoding is successfull, false if this is not a DDS header.</returns>\n        </member>\n        <!-- Badly formed XML comment ignored for member \"M:SharpDX.Toolkit.Graphics.DDSHelper.LegacyExpandScanline(System.IntPtr,System.Int32,SharpDX.DXGI.Format,System.IntPtr,System.Int32,SharpDX.Toolkit.Graphics.DDSHelper.TEXP_LEGACY_FORMAT,System.Int32*,SharpDX.Toolkit.Graphics.DDSHelper.ScanlineFlags)\" -->\n        <member name=\"M:SharpDX.Toolkit.Graphics.DDSHelper.LoadFromDDSMemory(System.IntPtr,System.Int32,System.Boolean,System.Nullable{System.Runtime.InteropServices.GCHandle})\">\n            <summary>\n            Load a DDS file in memory\n            </summary>\n            <param name=\"pSource\"></param>\n            <param name=\"size\"></param>\n            <param name=\"handle\"></param>\n            <returns></returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.DDSHelper.CreateImageFromDDS(System.IntPtr,System.Int32,System.Int32,SharpDX.Toolkit.Graphics.ImageDescription,SharpDX.Toolkit.Graphics.Image.PitchFlags,SharpDX.Toolkit.Graphics.DDSHelper.ConversionFlags,System.Int32*,System.Nullable{System.Runtime.InteropServices.GCHandle})\">\n            <summary>\n            Converts or copies image data from pPixels into scratch image data\n            </summary>\n            <param name=\"pDDS\"></param>\n            <param name=\"offset\"></param>\n            <param name=\"size\"></param>\n            <param name=\"metadata\"></param>\n            <param name=\"cpFlags\"></param>\n            <param name=\"convFlags\"></param>\n            <param name=\"pal8\"></param>\n            <param name=\"handle\"></param>\n            <returns></returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.DDSHelper.ExpandScanline(System.IntPtr,System.Int32,System.IntPtr,System.Int32,SharpDX.DXGI.Format,SharpDX.Toolkit.Graphics.DDSHelper.ScanlineFlags)\">\n            <summary>\n            Converts an image row with optional clearing of alpha value to 1.0\n            </summary>\n            <param name=\"pDestination\"></param>\n            <param name=\"outSize\"></param>\n            <param name=\"pSource\"></param>\n            <param name=\"inSize\"></param>\n            <param name=\"inFormat\"></param>\n            <param name=\"flags\"></param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.DDSHelper.CopyScanline(System.IntPtr,System.Int32,System.IntPtr,System.Int32,SharpDX.DXGI.Format,SharpDX.Toolkit.Graphics.DDSHelper.ScanlineFlags)\">\n            <summary>\n            Copies an image row with optional clearing of alpha value to 1.0.\n            </summary>\n            <remarks>\n            This method can be used in place as well, otherwise copies the image row unmodified.\n            </remarks>\n            <param name=\"pDestination\">The destination buffer.</param>\n            <param name=\"outSize\">The destination size.</param>\n            <param name=\"pSource\">The source buffer.</param>\n            <param name=\"inSize\">The source size.</param>\n            <param name=\"format\">The <see cref=\"T:SharpDX.DXGI.Format\"/> of the source scanline.</param>\n            <param name=\"flags\">Scanline flags used when copying the scanline.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.DDSHelper.SwizzleScanline(System.IntPtr,System.Int32,System.IntPtr,System.Int32,SharpDX.DXGI.Format,SharpDX.Toolkit.Graphics.DDSHelper.ScanlineFlags)\">\n            <summary>\n            Swizzles (RGB &lt;-&gt; BGR) an image row with optional clearing of alpha value to 1.0.\n            </summary>\n            <param name=\"pDestination\">The destination buffer.</param>\n            <param name=\"outSize\">The destination size.</param>\n            <param name=\"pSource\">The source buffer.</param>\n            <param name=\"inSize\">The source size.</param>\n            <param name=\"format\">The <see cref=\"T:SharpDX.DXGI.Format\"/> of the source scanline.</param>\n            <param name=\"flags\">Scanline flags used when copying the scanline.</param>\n            <remarks>\n            This method can be used in place as well, otherwise copies the image row unmodified.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.DDSHelper.LegacyMap.#ctor(SharpDX.DXGI.Format,SharpDX.Toolkit.Graphics.DDSHelper.ConversionFlags,SharpDX.Toolkit.Graphics.DDS.PixelFormat)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.DDSHelper.LegacyMap\"/> struct.\n            </summary>\n            <param name=\"format\">The format.</param>\n            <param name=\"conversionFlags\">The conversion flags.</param>\n            <param name=\"pixelFormat\">The pixel format.</param>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.DisplayMode\">\n            <summary>\n            Describes the display mode. This is equivalent to <see cref=\"T:SharpDX.DXGI.ModeDescription\"/>\n            </summary>\n            <msdn-id>bb173064</msdn-id>\t\n            <unmanaged>DXGI_MODE_DESC</unmanaged>\t\n            <unmanaged-short>DXGI_MODE_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.DisplayMode.ToString\">\n            <summary>\n            Retrieves a string representation of this object.\n            </summary>\n            <returns></returns>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.DisplayMode.AspectRatio\">\n            <summary>\n            Gets the aspect ratio used by the graphics device.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.DisplayMode.Format\">\n            <summary>\n            Gets a value indicating the surface format of the display mode.\n            </summary>\n            <msdn-id>bb173064</msdn-id>\t\n            <unmanaged>DXGI_FORMAT Format</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT Format</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.DisplayMode.Width\">\n            <summary>\n            Gets a value indicating the screen width, in pixels.\n            </summary>\n            <msdn-id>bb173064</msdn-id>\t\n            <unmanaged>unsigned int Width</unmanaged>\t\n            <unmanaged-short>unsigned int Width</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.DisplayMode.Height\">\n            <summary>\n            Gets a value indicating the screen height, in pixels.\n            </summary>\n            <msdn-id>bb173064</msdn-id>\t\n            <unmanaged>unsigned int Height</unmanaged>\t\n            <unmanaged-short>unsigned int Height</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.DisplayMode.RefreshRate\">\n            <summary>\n            Gets a value indicating the refresh rate\n            </summary>\n            <msdn-id>bb173064</msdn-id>\t\n            <unmanaged>DXGI_RATIONAL RefreshRate</unmanaged>\t\n            <unmanaged-short>DXGI_RATIONAL RefreshRate</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.GraphicsAdapter\">\n            <summary>\n            Provides methods to retrieve and manipulate graphics adapters. This is the equivalent to <see cref=\"T:SharpDX.DXGI.Adapter1\"/>.\n            </summary>\n            <msdn-id>ff471329</msdn-id>\t\n            <unmanaged>IDXGIAdapter1</unmanaged>\t\n            <unmanaged-short>IDXGIAdapter1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.GraphicsAdapter.DefaultFormat\">\n            <summary>\n            Default PixelFormat used.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.GraphicsAdapter.#cctor\">\n            <summary>\n            Initializes static members of the <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsAdapter\"/> class.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.GraphicsAdapter.Initialize(SharpDX.DXGI.Factory1)\">\n            <summary>\n            Initializes all adapters with the specified factory.\n            </summary>\n            <param name=\"factory1\">The factory1.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.GraphicsAdapter.#ctor(System.Int32)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsAdapter\"/> class.\n            </summary>\n            <param name=\"adapterOrdinal\">The adapter ordinal.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.GraphicsAdapter.ToString\">\n            <summary>\n            Return the description of this adapter\n            </summary>\n            <returns></returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.GraphicsAdapter.IsProfileSupported(SharpDX.Direct3D.FeatureLevel)\">\n            <summary>\n            Tests to see if the adapter supports the requested profile.\n            </summary>\n            <param name=\"featureLevel\">The graphics profile.</param>\n            <returns>true if the profile is supported</returns>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.GraphicsAdapter.Description\">\n            <summary>\n            Gets the description for this adapter.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.GraphicsAdapter.op_Implicit(SharpDX.Toolkit.Graphics.GraphicsAdapter)~SharpDX.DXGI.Adapter1\">\n            <summary>\n            <see cref=\"T:SharpDX.DXGI.Adapter1\"/> casting operator.\n            </summary>\n            <param name=\"from\">Source for the.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.GraphicsAdapter.op_Implicit(SharpDX.Toolkit.Graphics.GraphicsAdapter)~SharpDX.DXGI.Factory1\">\n            <summary>\n            <see cref=\"T:SharpDX.DXGI.Adapter1\"/> casting operator.\n            </summary>\n            <param name=\"from\">Source for the.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.GraphicsAdapter.DisposeStatic\">\n            <summary>\n            Disposes of all objects\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.GraphicsAdapter.GetSupportedDisplayModes\">\n            <summary>\n            Returns a collection of supported display modes for a particular Format.\n            </summary>\n            <returns>a read-only collection of display modes</returns>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.GraphicsAdapter.Factory\">\n            <summary>\n            Gets the <see cref=\"T:SharpDX.DXGI.Factory1\"/> used by all GraphicsAdapter.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.GraphicsAdapter.CurrentDisplayMode\">\n            <summary>\n            Gets the current display mode.\n            </summary>\n            <value>The current display mode.</value>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.GraphicsAdapter.Adapters\">\n            <summary>\n            Collection of available adapters on the system.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.GraphicsAdapter.Default\">\n            <summary>\n            Gets the default adapter.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.GraphicsAdapter.SupportedDisplayModes\">\n            <summary>\n            Returns a collection of supported display modes for the current adapter.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.GraphicsAdapter.DesktopBounds\">\n            <summary>\n            Retrieves bounds of the desktop coordinates.\n            </summary>\n            <msdn-id>bb173068</msdn-id>\t\n            <unmanaged>RECT DesktopCoordinates</unmanaged>\t\n            <unmanaged-short>RECT DesktopCoordinates</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.GraphicsAdapter.IsDefaultAdapter\">\n            <summary>\n            Determines if this instance of GraphicsAdapter is the default adapter.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.GraphicsAdapter.MonitorHandle\">\n            <summary>\n            Retrieves the handle of the monitor associated with the Microsoft Direct3D object.\n            </summary>\n            <msdn-id>bb173068</msdn-id>\t\n            <unmanaged>HMONITOR Monitor</unmanaged>\t\n            <unmanaged-short>HMONITOR Monitor</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.Image\">\n            <summary>\n            Provides method to instantiate an image 1D/2D/3D supporting TextureArray and mipmaps on the CPU or to load/save an image from the disk.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.Image.OffsetBufferTKTX\">\n            <summary>\n            Offset from the beginning of the buffer where pixel buffers are stored.\n            This offset is used to keep data aligned on 16 bytes (if the original buffer is aligned on 16 bytes as well).\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.Image.pixelBuffers\">\n            <summary>\n            Pixel buffers.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.Image.pixelBufferArray\">\n            <summary>\n            Provides access to all pixel buffers.\n            </summary>\n            <remarks>\n            For Texture3D, each z slice of the Texture3D has a pixelBufferArray * by the number of mipmaps.\n            For other textures, there is Description.MipLevels * Description.ArraySize pixel buffers.\n            </remarks>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.Image.totalSizeInBytes\">\n            <summary>\n            Gets the total number of bytes occupied by this image in memory.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.Image.buffer\">\n            <summary>\n            Pointer to the buffer.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.Image.bufferIsDisposable\">\n            <summary>\n            True if the buffer must be disposed.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.Image.handle\">\n            <summary>\n            Handke != null if the buffer is a pinned managed object on the LOH (Large Object Heap).\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.Image.Description\">\n            <summary>\n            Description of this image.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Image.#ctor(SharpDX.Toolkit.Graphics.ImageDescription,System.IntPtr,System.Int32,System.Nullable{System.Runtime.InteropServices.GCHandle},System.Boolean,SharpDX.Toolkit.Graphics.Image.PitchFlags)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.Image\"/> class.\n            </summary>\n            <param name=\"description\">The image description.</param>\n            <param name=\"dataPointer\">The pointer to the data buffer.</param>\n            <param name=\"offset\">The offset from the beginning of the data buffer.</param>\n            <param name=\"handle\">The handle (optionnal).</param>\n            <param name=\"bufferIsDisposable\">if set to <c>true</c> [buffer is disposable].</param>\n            <exception cref=\"T:System.InvalidOperationException\">If the format is invalid, or width/height/depth/arraysize is invalid with respect to the dimension.</exception>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Image.GetMipMapDescription(System.Int32)\">\n            <summary>\n            Gets the mipmap description of this instance for the specified mipmap level.\n            </summary>\n            <param name=\"mipmap\">The mipmap.</param>\n            <returns>A description of a particular mipmap for this texture.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Image.GetPixelBuffer(System.Int32,System.Int32)\">\n            <summary>\n            Gets the pixel buffer for the specified array/z slice and mipmap level.\n            </summary>\n            <param name=\"arrayOrZSliceIndex\">For 3D image, the parameter is the Z slice, otherwise it is an index into the texture array.</param>\n            <param name=\"mipmap\">The mipmap.</param>\n            <returns>A <see cref=\"F:SharpDX.Toolkit.Graphics.Image.pixelBufferArray\"/>.</returns>\n            <exception cref=\"T:System.ArgumentException\">If arrayOrZSliceIndex or mipmap are out of range.</exception>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Image.GetPixelBuffer(System.Int32,System.Int32,System.Int32)\">\n            <summary>\n            Gets the pixel buffer for the specified array/z slice and mipmap level.\n            </summary>\n            <param name=\"arrayIndex\">Index into the texture array. Must be set to 0 for 3D images.</param>\n            <param name=\"zIndex\">Z index for 3D image. Must be set to 0 for all 1D/2D images.</param>\n            <param name=\"mipmap\">The mipmap.</param>\n            <returns>A <see cref=\"F:SharpDX.Toolkit.Graphics.Image.pixelBufferArray\"/>.</returns>\n            <exception cref=\"T:System.ArgumentException\">If arrayIndex, zIndex or mipmap are out of range.</exception>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Image.Register(SharpDX.Toolkit.Graphics.ImageFileType,SharpDX.Toolkit.Graphics.Image.ImageLoadDelegate,SharpDX.Toolkit.Graphics.Image.ImageSaveDelegate)\">\n            <summary>\n            Registers a loader/saver for a specified image file type.\n            </summary>\n            <param name=\"type\">The file type (use integer and explicit casting to <see cref=\"T:SharpDX.Toolkit.Graphics.ImageFileType\"/> to register other fileformat.</param>\n            <param name=\"loader\">The loader delegate (can be null).</param>\n            <param name=\"saver\">The saver delegate (can be null).</param>\n            <exception cref=\"T:System.ArgumentException\"></exception>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Image.ToDataBox\">\n            <summary>\n            Gets the databox from this image.\n            </summary>\n            <returns>The databox of this image.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Image.ComputeDataBox\">\n            <summary>\n            Gets the databox from this image.\n            </summary>\n            <returns>The databox of this image.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Image.New(SharpDX.Toolkit.Graphics.ImageDescription)\">\n            <summary>\n            Creates a new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.Image\"/> from an image description.\n            </summary>\n            <param name=\"description\">The image description.</param>\n            <returns>A new image.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Image.New1D(System.Int32,SharpDX.Toolkit.Graphics.MipMapCount,SharpDX.Toolkit.Graphics.PixelFormat,System.Int32)\">\n            <summary>\n            Creates a new instance of a 1D <see cref=\"T:SharpDX.Toolkit.Graphics.Image\"/>.\n            </summary>\n            <param name=\"width\">The width.</param>\n            <param name=\"mipMapCount\">The mip map count.</param>\n            <param name=\"format\">The format.</param>\n            <param name=\"arraySize\">Size of the array.</param>\n            <returns>A new image.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Image.New2D(System.Int32,System.Int32,SharpDX.Toolkit.Graphics.MipMapCount,SharpDX.Toolkit.Graphics.PixelFormat,System.Int32)\">\n            <summary>\n            Creates a new instance of a 2D <see cref=\"T:SharpDX.Toolkit.Graphics.Image\"/>.\n            </summary>\n            <param name=\"width\">The width.</param>\n            <param name=\"height\">The height.</param>\n            <param name=\"mipMapCount\">The mip map count.</param>\n            <param name=\"format\">The format.</param>\n            <param name=\"arraySize\">Size of the array.</param>\n            <returns>A new image.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Image.NewCube(System.Int32,SharpDX.Toolkit.Graphics.MipMapCount,SharpDX.Toolkit.Graphics.PixelFormat)\">\n            <summary>\n            Creates a new instance of a Cube <see cref=\"T:SharpDX.Toolkit.Graphics.Image\"/>.\n            </summary>\n            <param name=\"width\">The width.</param>\n            <param name=\"mipMapCount\">The mip map count.</param>\n            <param name=\"format\">The format.</param>\n            <returns>A new image.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Image.New3D(System.Int32,System.Int32,System.Int32,SharpDX.Toolkit.Graphics.MipMapCount,SharpDX.Toolkit.Graphics.PixelFormat)\">\n            <summary>\n            Creates a new instance of a 3D <see cref=\"T:SharpDX.Toolkit.Graphics.Image\"/>.\n            </summary>\n            <param name=\"width\">The width.</param>\n            <param name=\"height\">The height.</param>\n            <param name=\"depth\">The depth.</param>\n            <param name=\"mipMapCount\">The mip map count.</param>\n            <param name=\"format\">The format.</param>\n            <returns>A new image.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Image.New(SharpDX.Toolkit.Graphics.ImageDescription,System.IntPtr)\">\n            <summary>\n            Creates a new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.Image\"/> from an image description.\n            </summary>\n            <param name=\"description\">The image description.</param>\n            <param name=\"dataPointer\">Pointer to an existing buffer.</param>\n            <returns>A new image.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Image.New1D(System.Int32,SharpDX.Toolkit.Graphics.MipMapCount,SharpDX.Toolkit.Graphics.PixelFormat,System.Int32,System.IntPtr)\">\n            <summary>\n            Creates a new instance of a 1D <see cref=\"T:SharpDX.Toolkit.Graphics.Image\"/>.\n            </summary>\n            <param name=\"width\">The width.</param>\n            <param name=\"mipMapCount\">The mip map count.</param>\n            <param name=\"format\">The format.</param>\n            <param name=\"arraySize\">Size of the array.</param>\n            <param name=\"dataPointer\">Pointer to an existing buffer.</param>\n            <returns>A new image.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Image.New2D(System.Int32,System.Int32,SharpDX.Toolkit.Graphics.MipMapCount,SharpDX.Toolkit.Graphics.PixelFormat,System.Int32,System.IntPtr)\">\n            <summary>\n            Creates a new instance of a 2D <see cref=\"T:SharpDX.Toolkit.Graphics.Image\"/>.\n            </summary>\n            <param name=\"width\">The width.</param>\n            <param name=\"height\">The height.</param>\n            <param name=\"mipMapCount\">The mip map count.</param>\n            <param name=\"format\">The format.</param>\n            <param name=\"arraySize\">Size of the array.</param>\n            <param name=\"dataPointer\">Pointer to an existing buffer.</param>\n            <returns>A new image.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Image.NewCube(System.Int32,SharpDX.Toolkit.Graphics.MipMapCount,SharpDX.Toolkit.Graphics.PixelFormat,System.IntPtr)\">\n            <summary>\n            Creates a new instance of a Cube <see cref=\"T:SharpDX.Toolkit.Graphics.Image\"/>.\n            </summary>\n            <param name=\"width\">The width.</param>\n            <param name=\"mipMapCount\">The mip map count.</param>\n            <param name=\"format\">The format.</param>\n            <param name=\"dataPointer\">Pointer to an existing buffer.</param>\n            <returns>A new image.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Image.New3D(System.Int32,System.Int32,System.Int32,SharpDX.Toolkit.Graphics.MipMapCount,SharpDX.Toolkit.Graphics.PixelFormat,System.IntPtr)\">\n            <summary>\n            Creates a new instance of a 3D <see cref=\"T:SharpDX.Toolkit.Graphics.Image\"/>.\n            </summary>\n            <param name=\"width\">The width.</param>\n            <param name=\"height\">The height.</param>\n            <param name=\"depth\">The depth.</param>\n            <param name=\"mipMapCount\">The mip map count.</param>\n            <param name=\"format\">The format.</param>\n            <param name=\"dataPointer\">Pointer to an existing buffer.</param>\n            <returns>A new image.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Image.Load(SharpDX.DataPointer,System.Boolean)\">\n            <summary>\n            Loads an image from an unmanaged memory pointer.\n            </summary>\n            <param name=\"dataBuffer\">Pointer to an unmanaged memory. If <see cref=\"!:makeACopy\"/> is false, this buffer must be allocated with <see cref=\"M:SharpDX.Utilities.AllocateMemory(System.Int32,System.Int32)\"/>.</param>\n            <param name=\"makeACopy\">True to copy the content of the buffer to a new allocated buffer, false otherwhise.</param>\n            <returns>An new image.</returns>\n            <remarks>If <see cref=\"!:makeACopy\"/> is set to false, the returned image is now the holder of the unmanaged pointer and will release it on Dispose. </remarks>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Image.Load(System.IntPtr,System.Int32,System.Boolean)\">\n            <summary>\n            Loads an image from an unmanaged memory pointer.\n            </summary>\n            <param name=\"dataPointer\">Pointer to an unmanaged memory. If <see cref=\"!:makeACopy\"/> is false, this buffer must be allocated with <see cref=\"M:SharpDX.Utilities.AllocateMemory(System.Int32,System.Int32)\"/>.</param>\n            <param name=\"dataSize\">Size of the unmanaged buffer.</param>\n            <param name=\"makeACopy\">True to copy the content of the buffer to a new allocated buffer, false otherwise.</param>\n            <returns>An new image.</returns>\n            <remarks>If <see cref=\"!:makeACopy\"/> is set to false, the returned image is now the holder of the unmanaged pointer and will release it on Dispose. </remarks>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Image.Load(System.Byte[])\">\n            <summary>\n            Loads an image from a managed buffer.\n            </summary>\n            <param name=\"buffer\">Reference to a managed buffer.</param>\n            <returns>An new image.</returns>\n            <remarks>This method support the following format: <c>dds, bmp, jpg, png, gif, tiff, wmp, tga</c>.</remarks>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Image.Load(System.IO.Stream)\">\n            <summary>\n            Loads the specified image from a stream.\n            </summary>\n            <param name=\"imageStream\">The image stream.</param>\n            <returns>An new image.</returns>\n            <remarks>This method support the following format: <c>dds, bmp, jpg, png, gif, tiff, wmp, tga</c>.</remarks>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Image.Load(System.String)\">\n            <summary>\n            Loads the specified image from a file.\n            </summary>\n            <param name=\"fileName\">The filename.</param>\n            <returns>An new image.</returns>\n            <remarks>This method support the following format: <c>dds, bmp, jpg, png, gif, tiff, wmp, tga</c>.</remarks>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Image.Save(System.String,SharpDX.Toolkit.Graphics.ImageFileType)\">\n            <summary>\n            Saves this instance to a file.\n            </summary>\n            <param name=\"fileName\">The destination file.</param>\n            <param name=\"fileType\">Specify the output format.</param>\n            <remarks>This method support the following format: <c>dds, bmp, jpg, png, gif, tiff, wmp, tga</c>.</remarks>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Image.Save(System.IO.Stream,SharpDX.Toolkit.Graphics.ImageFileType)\">\n            <summary>\n            Saves this instance to a stream.\n            </summary>\n            <param name=\"imageStream\">The destination stream.</param>\n            <param name=\"fileType\">Specify the output format.</param>\n            <remarks>This method support the following format: <c>dds, bmp, jpg, png, gif, tiff, wmp, tga</c>.</remarks>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Image.Load(System.IntPtr,System.Int32,System.Boolean,System.Nullable{System.Runtime.InteropServices.GCHandle})\">\n            <summary>\n            Loads an image from the specified pointer.\n            </summary>\n            <param name=\"dataPointer\">The data pointer.</param>\n            <param name=\"dataSize\">Size of the data.</param>\n            <param name=\"makeACopy\">if set to <c>true</c> [make A copy].</param>\n            <param name=\"handle\">The handle.</param>\n            <returns></returns>\n            <exception cref=\"T:System.NotSupportedException\"></exception>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Image.Save(SharpDX.Toolkit.Graphics.PixelBuffer[],System.Int32,SharpDX.Toolkit.Graphics.ImageDescription,System.IO.Stream,SharpDX.Toolkit.Graphics.ImageFileType)\">\n            <summary>\n            Saves this instance to a stream.\n            </summary>\n            <param name=\"pixelBuffers\">The buffers to save.</param>\n            <param name=\"count\">The number of buffers to save.</param>\n            <param name=\"description\">Global description of the buffer.</param>\n            <param name=\"imageStream\">The destination stream.</param>\n            <param name=\"fileType\">Specify the output format.</param>\n            <remarks>This method support the following format: <c>dds, bmp, jpg, png, gif, tiff, wmp, tga</c>.</remarks>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Image.LoadTKTX(System.IntPtr,System.Int32,System.Boolean,System.Nullable{System.Runtime.InteropServices.GCHandle})\">\n            <summary>\n            Saves the specified pixel buffers in TKTX format.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Image.SaveTKTX(SharpDX.Toolkit.Graphics.PixelBuffer[],System.Int32,SharpDX.Toolkit.Graphics.ImageDescription,System.IO.Stream)\">\n            <summary>\n            Saves the specified pixel buffers in TKTX format.\n            </summary>\n            <param name=\"pixelBuffers\">The pixel buffers.</param>\n            <param name=\"count\">The count.</param>\n            <param name=\"description\">The description.</param>\n            <param name=\"imageStream\">The image stream.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Image.CalculateImageArray(SharpDX.Toolkit.Graphics.ImageDescription,SharpDX.Toolkit.Graphics.Image.PitchFlags,System.Int32@,System.Int32@)\">\n            <summary>\n            Determines number of image array entries and pixel size.\n            </summary>\n            <param name=\"imageDesc\">Description of the image to create.</param>\n            <param name=\"pitchFlags\">Pitch flags.</param>\n            <param name=\"bufferCount\">Output number of mipmap.</param>\n            <param name=\"pixelSizeInBytes\">Output total size to allocate pixel buffers for all images.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Image.SetupImageArray(System.IntPtr,System.Int32,SharpDX.Toolkit.Graphics.ImageDescription,SharpDX.Toolkit.Graphics.Image.PitchFlags,SharpDX.Toolkit.Graphics.PixelBuffer[])\">\n            <summary>\n            Allocates PixelBuffers \n            </summary>\n            <param name=\"buffer\"></param>\n            <param name=\"pixelSize\"></param>\n            <param name=\"imageDesc\"></param>\n            <param name=\"pitchFlags\"></param>\n            <param name=\"output\"></param>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.Image.DataPointer\">\n            <summary>\n            Gets a pointer to the image buffer in memory.\n            </summary>\n            <value>A pointer to the image buffer in memory.</value>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.Image.PixelBuffer\">\n            <summary>\n            Provides access to all pixel buffers.\n            </summary>\n            <remarks>\n            For Texture3D, each z slice of the Texture3D has a pixelBufferArray * by the number of mipmaps.\n            For other textures, there is Description.MipLevels * Description.ArraySize pixel buffers.\n            </remarks>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.Image.TotalSizeInBytes\">\n            <summary>\n            Gets the total number of bytes occupied by this image in memory.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.ImageFileType\">\n            <summary>\n            Image file format used by <see cref=\"M:SharpDX.Toolkit.Graphics.Image.Save(System.String,SharpDX.Toolkit.Graphics.ImageFileType)\"/>\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.ImageFileType.Dds\">\n            <summary>\n            A DDS file.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.ImageFileType.Png\">\n            <summary>\n            A PNG file.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.ImageFileType.Gif\">\n            <summary>\n            A GIF file.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.ImageFileType.Jpg\">\n            <summary>\n            A JPG file.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.ImageFileType.Bmp\">\n            <summary>\n            A BMP file.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.ImageFileType.Tiff\">\n            <summary>\n            A TIFF file.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.ImageFileType.Wmp\">\n            <summary>\n            A WMP file.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.ImageFileType.Tga\">\n            <summary>\n            A TGA File.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.ImageFileType.Tktx\">\n            <summary>\n            A TKTX File.\n            </summary>\n            <remarks>\n            This is a format available with this toolkit, similar to DDS, but It doesn't require any conversion and is a straight dump of the memory pixel buffers.\n            </remarks>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.PixelBuffer\">\n            <summary>\n            An unmanaged buffer of pixels.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.PixelBuffer.isStrictRowStride\">\n            <summary>\n            True when RowStride == sizeof(pixelformat) * width\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.PixelBuffer.#ctor(System.Int32,System.Int32,SharpDX.DXGI.Format,System.Int32,System.Int32,System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.PixelBuffer\"/> struct.\n            </summary>\n            <param name=\"width\">The width.</param>\n            <param name=\"height\">The height.</param>\n            <param name=\"format\">The format.</param>\n            <param name=\"rowStride\">The row pitch.</param>\n            <param name=\"bufferStride\">The slice pitch.</param>\n            <param name=\"dataPointer\">The pixels.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.PixelBuffer.CopyTo(SharpDX.Toolkit.Graphics.PixelBuffer)\">\n            <summary>\n            Copies this pixel buffer to a destination pixel buffer.\n            </summary>\n            <param name=\"pixelBuffer\">The destination pixel buffer.</param>\n            <remarks>\n            The destination pixel buffer must have exactly the same dimensions (width, height) and format than this instance.\n            Destination buffer can have different row stride.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.PixelBuffer.Save(System.String,SharpDX.Toolkit.Graphics.ImageFileType)\">\n            <summary>\n            Saves this pixel buffer to a file.\n            </summary>\n            <param name=\"fileName\">The destination file.</param>\n            <param name=\"fileType\">Specify the output format.</param>\n            <remarks>This method support the following format: <c>dds, bmp, jpg, png, gif, tiff, wmp, tga</c>.</remarks>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.PixelBuffer.Save(System.IO.Stream,SharpDX.Toolkit.Graphics.ImageFileType)\">\n            <summary>\n            Saves this pixel buffer to a stream.\n            </summary>\n            <param name=\"imageStream\">The destination stream.</param>\n            <param name=\"fileType\">Specify the output format.</param>\n            <remarks>This method support the following format: <c>dds, bmp, jpg, png, gif, tiff, wmp, tga</c>.</remarks>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.PixelBuffer.GetPixel``1(System.Int32,System.Int32)\">\n            <summary>\n            Gets the pixel value at a specified position.\n            </summary>\n            <typeparam name=\"T\">Type of the pixel data</typeparam>\n            <param name=\"x\">The x-coordinate.</param>\n            <param name=\"y\">The y-coordinate.</param>\n            <returns>The pixel value.</returns>\n            <remarks>\n            Caution, this method doesn't check bounding.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.PixelBuffer.SetPixel``1(System.Int32,System.Int32,``0)\">\n            <summary>\n            Gets the pixel value at a specified position.\n            </summary>\n            <typeparam name=\"T\">Type of the pixel data</typeparam>\n            <param name=\"x\">The x-coordinate.</param>\n            <param name=\"y\">The y-coordinate.</param>\n            <param name=\"value\">The pixel value.</param>\n            <remarks>\n            Caution, this method doesn't check bounding.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.PixelBuffer.GetPixels``1(System.Int32)\">\n            <summary>\n            Gets scanline pixels from the buffer.\n            </summary>\n            <typeparam name=\"T\">Type of the pixel data</typeparam>\n            <param name=\"yOffset\">The y line offset.</param>\n            <returns>Scanline pixels from the buffer</returns>\n            <exception cref=\"T:System.ArgumentException\">If the sizeof(T) is an invalid size</exception>\n            <remarks>\n            This method is working on a row basis. The <see cref=\"!:yOffset\"/> is specifying the first row to get \n            the pixels from.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.PixelBuffer.GetPixels``1(``0[],System.Int32)\">\n            <summary>\n            Gets scanline pixels from the buffer.\n            </summary>\n            <typeparam name=\"T\">Type of the pixel data</typeparam>\n            <param name=\"pixels\">An allocated scanline pixel buffer</param>\n            <param name=\"yOffset\">The y line offset.</param>\n            <returns>Scanline pixels from the buffer</returns>\n            <exception cref=\"T:System.ArgumentException\">If the sizeof(T) is an invalid size</exception>\n            <remarks>\n            This method is working on a row basis. The <see cref=\"!:yOffset\"/> is specifying the first row to get \n            the pixels from.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.PixelBuffer.GetPixels``1(``0[],System.Int32,System.Int32,System.Int32)\">\n            <summary>\n            Gets scanline pixels from the buffer.\n            </summary>\n            <typeparam name=\"T\">Type of the pixel data</typeparam>\n            <param name=\"pixels\">An allocated scanline pixel buffer</param>\n            <param name=\"yOffset\">The y line offset.</param>\n            <param name=\"pixelIndex\">Offset into the destination <see cref=\"!:pixels\"/> buffer.</param>\n            <param name=\"pixelCount\">Number of pixels to write into the destination <see cref=\"!:pixels\"/> buffer.</param>\n            <exception cref=\"T:System.ArgumentException\">If the sizeof(T) is an invalid size</exception>\n            <remarks>\n            This method is working on a row basis. The <see cref=\"!:yOffset\"/> is specifying the first row to get \n            the pixels from.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.PixelBuffer.SetPixels``1(``0[],System.Int32)\">\n            <summary>\n            Sets scanline pixels to the buffer.\n            </summary>\n            <typeparam name=\"T\">Type of the pixel data</typeparam>\n            <param name=\"sourcePixels\">Source pixel buffer</param>\n            <param name=\"yOffset\">The y line offset.</param>\n            <exception cref=\"T:System.ArgumentException\">If the sizeof(T) is an invalid size</exception>\n            <remarks>\n            This method is working on a row basis. The <see cref=\"!:yOffset\"/> is specifying the first row to get \n            the pixels from.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.PixelBuffer.SetPixels``1(``0[],System.Int32,System.Int32,System.Int32)\">\n            <summary>\n            Sets scanline pixels to the buffer.\n            </summary>\n            <typeparam name=\"T\">Type of the pixel data</typeparam>\n            <param name=\"sourcePixels\">Source pixel buffer</param>\n            <param name=\"yOffset\">The y line offset.</param>\n            <param name=\"pixelIndex\">Offset into the source <see cref=\"!:sourcePixels\"/> buffer.</param>\n            <param name=\"pixelCount\">Number of pixels to write into the source <see cref=\"!:sourcePixels\"/> buffer.</param>\n            <exception cref=\"T:System.ArgumentException\">If the sizeof(T) is an invalid size</exception>\n            <remarks>\n            This method is working on a row basis. The <see cref=\"!:yOffset\"/> is specifying the first row to get \n            the pixels from.\n            </remarks>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.PixelBuffer.Width\">\n            <summary>\n            Gets the width.\n            </summary>\n            <value>The width.</value>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.PixelBuffer.Height\">\n            <summary>\n            Gets the height.\n            </summary>\n            <value>The height.</value>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.PixelBuffer.Format\">\n            <summary>\n            Gets the format.\n            </summary>\n            <value>The format.</value>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.PixelBuffer.PixelSize\">\n            <summary>\n            Gets the pixel size in bytes.\n            </summary>\n            <value>The pixel size in bytes.</value>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.PixelBuffer.RowStride\">\n            <summary>\n            Gets the row stride in number of bytes.\n            </summary>\n            <value>The row stride in number of bytes.</value>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.PixelBuffer.BufferStride\">\n            <summary>\n            Gets the total size in bytes of this pixel buffer.\n            </summary>\n            <value>The size in bytes of the pixel buffer.</value>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.PixelBuffer.DataPointer\">\n            <summary>\n            Gets the pointer to the pixel buffer.\n            </summary>\n            <value>The pointer to the pixel buffer.</value>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.PresentationParameters\">\n            <summary>\n              Describess how data will be displayed to the screen.\n            </summary>\n            <msdn-id>bb173075</msdn-id>\n            <unmanaged>DXGI_SWAP_CHAIN_DESC</unmanaged>\n            <unmanaged-short>DXGI_SWAP_CHAIN_DESC</unmanaged-short>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.PresentationParameters.BackBufferFormat\">\n            <summary>\n              A <strong><see cref=\"T:SharpDX.DXGI.Format\"/></strong> structure describing the display format.\n            </summary>\n            <msdn-id>bb173075</msdn-id>\n            <unmanaged>DXGI_MODE_DESC BufferDesc</unmanaged>\n            <unmanaged-short>DXGI_MODE_DESC BufferDesc</unmanaged-short>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.PresentationParameters.BackBufferHeight\">\n            <summary>\n              A value that describes the resolution height.\n            </summary>\n            <msdn-id>bb173075</msdn-id>\n            <unmanaged>DXGI_MODE_DESC BufferDesc</unmanaged>\n            <unmanaged-short>DXGI_MODE_DESC BufferDesc</unmanaged-short>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.PresentationParameters.BackBufferWidth\">\n            <summary>\n              A value that describes the resolution width.\n            </summary>\n            <msdn-id>bb173075</msdn-id>\n            <unmanaged>DXGI_MODE_DESC BufferDesc</unmanaged>\n            <unmanaged-short>DXGI_MODE_DESC BufferDesc</unmanaged-short>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.PresentationParameters.DepthStencilFormat\">\n            <summary>\n            Gets or sets the depth stencil format\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.PresentationParameters.DeviceWindowHandle\">\n            <summary>\n              A Window object. See remarks.\n            </summary>\n            <remarks>\n              A window object is platform dependent:\n              <ul>\n                <li>On Windows Desktop: This could a low level window/control handle (IntPtr), or directly a Winform Control object.</li>\n                <li>On Windows Metro: This could be SwapChainBackgroundPanel object.</li>\n              </ul>\n            </remarks>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.PresentationParameters.Flags\">\n            <summary>\n              A member of the <see cref=\"T:SharpDX.DXGI.SwapChainFlags\"/>\n              enumerated type that describes options for swap-chain behavior.\n            </summary>\n            <msdn-id>bb173075</msdn-id>\n            <unmanaged>DXGI_SWAP_CHAIN_FLAG Flags</unmanaged>\n            <unmanaged-short>DXGI_SWAP_CHAIN_FLAG Flags</unmanaged-short>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.PresentationParameters.IsFullScreen\">\n            <summary>\n              Gets or sets a value indicating whether the application is in full screen mode.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.PresentationParameters.MultiSampleCount\">\n            <summary>\n              Gets or sets a value indicating the number of sample locations during multisampling.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.PresentationParameters.PresentationInterval\">\n            <summary>\n              Gets or sets the maximum rate at which the swap chain's back buffers can be presented to the front buffer.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.PresentationParameters.RefreshRate\">\n            <summary>\n              A <see cref=\"T:SharpDX.DXGI.Rational\"/>   structure describing the refresh rate in hertz\n            </summary>\n            <msdn-id>bb173064</msdn-id>\n            <unmanaged>DXGI_RATIONAL RefreshRate</unmanaged>\n            <unmanaged-short>DXGI_RATIONAL RefreshRate</unmanaged-short>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.PresentationParameters.RenderTargetUsage\">\n            <summary>\n              <p>A member of the DXGI_USAGE enumerated type that describes the surface usage and CPU access options for the back buffer. The back buffer can  be used for shader input or render-target output.</p>\n            </summary>\n            <msdn-id>bb173075</msdn-id>\n            <unmanaged>DXGI_USAGE_ENUM BufferUsage</unmanaged>\n            <unmanaged-short>DXGI_USAGE_ENUM BufferUsage</unmanaged-short>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.PresentationParameters.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.PresentationParameters\"/> class with default values.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.PresentationParameters.#ctor(System.Int32,System.Int32,System.Object)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.PresentationParameters\"/> class with <see cref=\"F:SharpDX.Toolkit.Graphics.PixelFormat.R8G8B8A8.UNorm\"/>.\n            </summary>\n            <param name=\"backBufferWidth\">Width of the back buffer.</param>\n            <param name=\"backBufferHeight\">Height of the back buffer.</param>\n            <param name=\"deviceWindowHandle\">The device window handle.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.PresentationParameters.#ctor(System.Int32,System.Int32,System.Object,SharpDX.Toolkit.Graphics.PixelFormat)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.PresentationParameters\"/> class.\n            </summary>\n            <param name=\"backBufferWidth\">Width of the back buffer.</param>\n            <param name=\"backBufferHeight\">Height of the back buffer.</param>\n            <param name=\"deviceWindowHandle\">The device window handle.</param>\n            <param name=\"backBufferFormat\">The back buffer format.</param>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.PresentInterval\">\n            <summary>\n            Defines flags that describe the relationship between the adapter refresh rate and the rate at which Present operations are completed. \n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.PresentInterval.Immediate\">\n            <summary>\n            The runtime updates the window client area immediately, and might do so more than once during the adapter refresh period. Present operations might be affected immediately. This option is always available for both windowed and full-screen swap chains.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.PresentInterval.One\">\n            <summary>\n            The driver waits for the vertical retrace period (the runtime will beam trace to prevent tearing). Present operations are not affected more frequently than the screen refresh rate; the runtime completes one Present operation per adapter refresh period, at most. This option is always available for both windowed and full-screen swap chains.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.PresentInterval.Two\">\n            <summary>\n            The driver waits for the vertical retrace period. Present operations are not affected more frequently than every second screen refresh. \n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.PresentInterval.Default\">\n            <summary>\n            Equivalent to setting <see cref=\"F:SharpDX.Toolkit.Graphics.PresentInterval.One\"/>.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.AlphaTestEffect\">\n            <summary>\n            Built-in effect that supports alpha testing.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.Effect\">\n            <summary>\n            Main class to apply shader effects.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.Effect.ConstantBuffers\">\n            <summary>\n            Gets a collection of constant buffers that are defined for this effect.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.Effect.Parameters\">\n            <summary>\n            Gets a collection of parameters that are defined for this effect.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.Effect.Techniques\">\n            <summary>\n            Gets a collection of techniques that are defined for this effect.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.Effect.ShareConstantBuffers\">\n            <summary>\n            Set to <c>true</c> to force all constant shaders to be shared between other effects within a common <see cref=\"T:SharpDX.Toolkit.Graphics.EffectPool\"/>. Default is <c>false</c>.\n            </summary>\n            <remarks>\n            This value can also be set in the TKFX file directly by setting ShareConstantBuffers = <c>true</c>; in a pass.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Effect.#ctor(SharpDX.Toolkit.Graphics.GraphicsDevice,System.Byte[])\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.Effect\"/> class with the specified bytecode effect. See remarks.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"bytecode\">The bytecode to add to <see cref=\"F:SharpDX.Toolkit.Graphics.GraphicsDevice.DefaultEffectPool\"/>. This bytecode must contain only one effect.</param>\n            <exception cref=\"T:System.ArgumentException\">If the bytecode doesn't contain a single effect.</exception>\n            <remarks>\n            The effect bytecode must contain only a single effect and will be registered into the <see cref=\"F:SharpDX.Toolkit.Graphics.GraphicsDevice.DefaultEffectPool\"/>.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Effect.#ctor(SharpDX.Toolkit.Graphics.GraphicsDevice,SharpDX.Toolkit.Graphics.EffectData,SharpDX.Toolkit.Graphics.EffectPool)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.Effect\"/> class with the specified bytecode effect. See remarks.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"effectData\">The bytecode to add to the Effect Pool. This bytecode must contain only one effect.</param>\n            <param name=\"effectPool\">The effect pool used to register the bytecode. Default is <see cref=\"F:SharpDX.Toolkit.Graphics.GraphicsDevice.DefaultEffectPool\"/>.</param>\n            <exception cref=\"T:System.ArgumentException\">If the bytecode doesn't contain a single effect.</exception>\n            <remarks>The effect bytecode must contain only a single effect and will be registered into the <see cref=\"F:SharpDX.Toolkit.Graphics.GraphicsDevice.DefaultEffectPool\"/>.</remarks>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.Effect.Pool\">\n            <summary>\n            Gets the pool this effect attached to.\n            </summary>\n            <value> The pool. </value>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Effect.InitializeFrom(SharpDX.Toolkit.Graphics.EffectData.Effect)\">\n            <summary>\n            Binds the specified effect data to this instance.\n            </summary>\n            <param name=\"effectDataArg\">The effect data arg.</param>\n            <exception cref=\"T:System.ArgumentException\">If unable to find effect [effectName] from the EffectPool.</exception>\n            <exception cref=\"T:System.InvalidOperationException\">If no techniques found in this effect.</exception>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.Effect.RawEffectData\">\n            <summary>\n            Gets the data associated to this effect.\n            </summary> \n        </member>\n        <member name=\"E:SharpDX.Toolkit.Graphics.Effect.OnApplyCallback\">\n            <summary>\n            Occurs when the on apply is applied on a pass.\n            </summary>\n            <remarks>\n            This external hook provides a way to pre-configure a pipeline when a pass is applied.\n            Subclass of this class can override the method <see cref=\"M:SharpDX.Toolkit.Graphics.Effect.OnApply(SharpDX.Toolkit.Graphics.EffectPass)\"/>.\n            </remarks>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.Effect.CurrentTechnique\">\n            <summary>\n            Gets or sets the current technique. By default, it is set to the first available technique in this effect.\n            </summary>\n            <value>The current technique.</value>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.Effect.IsSupportingDynamicCompilation\">\n            <summary>\n            The effect is supporting dynamic compilation.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.AlphaTestEffect.#ctor(SharpDX.Toolkit.Graphics.GraphicsDevice)\">\n            <summary>\n            Creates a new AlphaTestEffect with default parameter settings.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.AlphaTestEffect.#ctor(SharpDX.Toolkit.Graphics.GraphicsDevice,SharpDX.Toolkit.Graphics.EffectPool)\">\n            <summary>\n            Creates a new AlphaTestEffect with default parameter settings from a specified <see cref=\"T:SharpDX.Toolkit.Graphics.EffectPool\"/>.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.AlphaTestEffect.OnApply(SharpDX.Toolkit.Graphics.EffectPass)\">\n            <summary>\n            Lazily computes derived parameter values immediately before applying the effect.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.AlphaTestEffect.World\">\n            <summary>\n            Gets or sets the world matrix.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.AlphaTestEffect.View\">\n            <summary>\n            Gets or sets the view matrix.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.AlphaTestEffect.Projection\">\n            <summary>\n            Gets or sets the projection matrix.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.AlphaTestEffect.DiffuseColor\">\n            <summary>\n            Gets or sets the material diffuse color (range 0 to 1).\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.AlphaTestEffect.Alpha\">\n            <summary>\n            Gets or sets the material alpha.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.AlphaTestEffect.FogEnabled\">\n            <summary>\n            Gets or sets the fog enable flag.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.AlphaTestEffect.FogStart\">\n            <summary>\n            Gets or sets the fog start distance.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.AlphaTestEffect.FogEnd\">\n            <summary>\n            Gets or sets the fog end distance.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.AlphaTestEffect.FogColor\">\n            <summary>\n            Gets or sets the fog color.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.AlphaTestEffect.Texture\">\n            <summary>\n            Gets or sets the current texture.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.AlphaTestEffect.VertexColorEnabled\">\n            <summary>\n            Gets or sets whether vertex color is enabled.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.AlphaTestEffect.AlphaFunction\">\n            <summary>\n            Gets or sets the alpha compare function (default Greater).\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.AlphaTestEffect.ReferenceAlpha\">\n            <summary>\n            Gets or sets the reference alpha value (default 0).\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.BasicEffect\">\n            <summary>\n            Built-in effect that supports optional texturing, vertex coloring, fog, and lighting.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.BasicEffect.#ctor(SharpDX.Toolkit.Graphics.GraphicsDevice)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.BasicEffect\"/> class.\n            </summary>\n            <param name=\"device\">The device.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.BasicEffect.#ctor(SharpDX.Toolkit.Graphics.GraphicsDevice,SharpDX.Toolkit.Graphics.EffectPool)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.BasicEffect\"/> class from a specified <see cref=\"T:SharpDX.Toolkit.Graphics.EffectPool\"/>.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"pool\">The pool.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.BasicEffect.EnableDefaultLighting\">\n            <summary>\n            Sets up the standard key/fill/back lighting rig.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.BasicEffect.OnApply(SharpDX.Toolkit.Graphics.EffectPass)\">\n            <summary>\n            Lazily computes derived parameter values immediately before applying the effect.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.BasicEffect.World\">\n            <summary>\n            Gets or sets the world matrix.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.BasicEffect.View\">\n            <summary>\n            Gets or sets the view matrix.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.BasicEffect.Projection\">\n            <summary>\n            Gets or sets the projection matrix.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.BasicEffect.DiffuseColor\">\n            <summary>\n            Gets or sets the material diffuse color (range 0 to 1).\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.BasicEffect.EmissiveColor\">\n            <summary>\n            Gets or sets the material emissive color (range 0 to 1).\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.BasicEffect.SpecularColor\">\n            <summary>\n            Gets or sets the material specular color (range 0 to 1).\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.BasicEffect.SpecularPower\">\n            <summary>\n            Gets or sets the material specular power.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.BasicEffect.Alpha\">\n            <summary>\n            Gets or sets the material alpha.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.BasicEffect.LightingEnabled\">\n            <summary>\n            Gets or sets the lighting enable flag.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.BasicEffect.PreferPerPixelLighting\">\n            <summary>\n            Gets or sets the per-pixel lighting prefer flag.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.BasicEffect.AmbientLightColor\">\n            <summary>\n            Gets or sets the ambient light color (range 0 to 1).\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.BasicEffect.DirectionalLight0\">\n            <summary>\n            Gets the first directional light.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.BasicEffect.DirectionalLight1\">\n            <summary>\n            Gets the second directional light.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.BasicEffect.DirectionalLight2\">\n            <summary>\n            Gets the third directional light.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.BasicEffect.FogEnabled\">\n            <summary>\n            Gets or sets the fog enable flag.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.BasicEffect.FogStart\">\n            <summary>\n            Gets or sets the fog start distance.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.BasicEffect.FogEnd\">\n            <summary>\n            Gets or sets the fog end distance.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.BasicEffect.FogColor\">\n            <summary>\n            Gets or sets the fog color.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.BasicEffect.TextureEnabled\">\n            <summary>\n            Gets or sets whether texturing is enabled.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.BasicEffect.Texture\">\n            <summary>\n            Gets or sets the current texture. Either use this property or <see cref=\"P:SharpDX.Toolkit.Graphics.BasicEffect.TextureView\"/> but not both at the same time.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.BasicEffect.Sampler\">\n            <summary>\n            Gets or sets the current texture sampler. Default is <see cref=\"F:SharpDX.Toolkit.Graphics.SamplerStateCollection.Default\"/>.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.BasicEffect.TextureView\">\n            <summary>\n            Gets or sets the current texture view. Either use this property or <see cref=\"P:SharpDX.Toolkit.Graphics.BasicEffect.Texture\"/> but not both at the same time.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.BasicEffect.VertexColorEnabled\">\n            <summary>\n            Gets or sets whether vertex color is enabled.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.DualTextureEffect\">\n            <summary>\n            Built-in effect that supports two-layer multitexturing.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.DualTextureEffect.#ctor(SharpDX.Toolkit.Graphics.GraphicsDevice)\">\n            <summary>\n            Creates a new DualTextureEffect with default parameter settings.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.DualTextureEffect.#ctor(SharpDX.Toolkit.Graphics.GraphicsDevice,SharpDX.Toolkit.Graphics.EffectPool)\">\n            <summary>\n            Creates a new DualTextureEffect with default parameter settings from a specified <see cref=\"T:SharpDX.Toolkit.Graphics.EffectPool\"/>.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.DualTextureEffect.OnApply(SharpDX.Toolkit.Graphics.EffectPass)\">\n            <summary>\n            Lazily computes derived parameter values immediately before applying the effect.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.DualTextureEffect.World\">\n            <summary>\n            Gets or sets the world matrix.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.DualTextureEffect.View\">\n            <summary>\n            Gets or sets the view matrix.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.DualTextureEffect.Projection\">\n            <summary>\n            Gets or sets the projection matrix.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.DualTextureEffect.DiffuseColor\">\n            <summary>\n            Gets or sets the material diffuse color (range 0 to 1).\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.DualTextureEffect.Alpha\">\n            <summary>\n            Gets or sets the material alpha.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.DualTextureEffect.FogEnabled\">\n            <summary>\n            Gets or sets the fog enable flag.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.DualTextureEffect.FogStart\">\n            <summary>\n            Gets or sets the fog start distance.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.DualTextureEffect.FogEnd\">\n            <summary>\n            Gets or sets the fog end distance.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.DualTextureEffect.FogColor\">\n            <summary>\n            Gets or sets the fog color.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.DualTextureEffect.Texture\">\n            <summary>\n            Gets or sets the current base texture.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.DualTextureEffect.Texture2\">\n            <summary>\n            Gets or sets the current overlay texture.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.DualTextureEffect.VertexColorEnabled\">\n            <summary>\n            Gets or sets whether vertex color is enabled.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.EnvironmentMapEffect\">\n            <summary>\n            Built-in effect that supports environment mapping.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EnvironmentMapEffect.#ctor(SharpDX.Toolkit.Graphics.GraphicsDevice)\">\n            <summary>\n            Creates a new EnvironmentMapEffect with default parameter settings.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EnvironmentMapEffect.#ctor(SharpDX.Toolkit.Graphics.GraphicsDevice,SharpDX.Toolkit.Graphics.EffectPool)\">\n            <summary>\n            Creates a new EnvironmentMapEffect with default parameter settings from a specified <see cref=\"T:SharpDX.Toolkit.Graphics.EffectPool\"/>.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EnvironmentMapEffect.EnableDefaultLighting\">\n            <summary>\n            Sets up the standard key/fill/back lighting rig.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EnvironmentMapEffect.CacheEffectParameters(SharpDX.Toolkit.Graphics.EnvironmentMapEffect)\">\n            <summary>\n            Looks up shortcut references to our effect parameters.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EnvironmentMapEffect.OnApply(SharpDX.Toolkit.Graphics.EffectPass)\">\n            <summary>\n            Lazily computes derived parameter values immediately before applying the effect.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.EnvironmentMapEffect.World\">\n            <summary>\n            Gets or sets the world matrix.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.EnvironmentMapEffect.View\">\n            <summary>\n            Gets or sets the view matrix.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.EnvironmentMapEffect.Projection\">\n            <summary>\n            Gets or sets the projection matrix.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.EnvironmentMapEffect.DiffuseColor\">\n            <summary>\n            Gets or sets the material diffuse color (range 0 to 1).\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.EnvironmentMapEffect.EmissiveColor\">\n            <summary>\n            Gets or sets the material emissive color (range 0 to 1).\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.EnvironmentMapEffect.Alpha\">\n            <summary>\n            Gets or sets the material alpha.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.EnvironmentMapEffect.AmbientLightColor\">\n            <summary>\n            Gets or sets the ambient light color (range 0 to 1).\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.EnvironmentMapEffect.DirectionalLight0\">\n            <summary>\n            Gets the first directional light.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.EnvironmentMapEffect.DirectionalLight1\">\n            <summary>\n            Gets the second directional light.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.EnvironmentMapEffect.DirectionalLight2\">\n            <summary>\n            Gets the third directional light.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.EnvironmentMapEffect.FogEnabled\">\n            <summary>\n            Gets or sets the fog enable flag.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.EnvironmentMapEffect.FogStart\">\n            <summary>\n            Gets or sets the fog start distance.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.EnvironmentMapEffect.FogEnd\">\n            <summary>\n            Gets or sets the fog end distance.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.EnvironmentMapEffect.FogColor\">\n            <summary>\n            Gets or sets the fog color.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.EnvironmentMapEffect.Texture\">\n            <summary>\n            Gets or sets the current texture.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.EnvironmentMapEffect.EnvironmentMap\">\n            <summary>\n            Gets or sets the current environment map texture.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.EnvironmentMapEffect.EnvironmentMapAmount\">\n            <summary>\n            Gets or sets the amount of the environment map RGB that will be blended over \n            the base texture. Range 0 to 1, default 1. If set to zero, the RGB channels \n            of the environment map will completely ignored (but the environment map alpha \n            may still be visible if EnvironmentMapSpecular is greater than zero).\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.EnvironmentMapEffect.EnvironmentMapSpecular\">\n            <summary>\n            Gets or sets the amount of the environment map alpha channel that will \n            be added to the base texture. Range 0 to 1, default 0. This can be used \n            to implement cheap specular lighting, by encoding one or more specular \n            highlight patterns into the environment map alpha channel, then setting \n            EnvironmentMapSpecular to the desired specular light color.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.EnvironmentMapEffect.FresnelFactor\">\n            <summary>\n            Gets or sets the Fresnel factor used for the environment map blending. \n            Higher values make the environment map only visible around the silhouette \n            edges of the object, while lower values make it visible everywhere. \n            Setting this property to 0 disables Fresnel entirely, making the \n            environment map equally visible regardless of view angle. The default is \n            1. Fresnel only affects the environment map RGB (the intensity of which is \n            controlled by EnvironmentMapAmount). The alpha contribution (controlled by \n            EnvironmentMapSpecular) is not affected by the Fresnel setting.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.EnvironmentMapEffect.SharpDX#Toolkit#Graphics#IEffectLights#LightingEnabled\">\n            <summary>\n            This effect requires lighting, so we explicitly implement\n            IEffectLights.LightingEnabled, and do not allow turning it off.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.EffectDirtyFlags\">\n            <summary>\n            Track which effect parameters need to be recomputed during the next OnApply.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.EffectHelpers\">\n            <summary>\n            Helper code shared between the various built-in effects.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectHelpers.EnableDefaultLighting(SharpDX.Toolkit.Graphics.DirectionalLight,SharpDX.Toolkit.Graphics.DirectionalLight,SharpDX.Toolkit.Graphics.DirectionalLight)\">\n            <summary>\n            Sets up the standard key/fill/back lighting rig.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectHelpers.SetWorldViewProjAndFog(SharpDX.Toolkit.Graphics.EffectDirtyFlags,SharpDX.Matrix@,SharpDX.Matrix@,SharpDX.Matrix@,SharpDX.Matrix@,System.Boolean,System.Single,System.Single,SharpDX.Toolkit.Graphics.EffectParameter,SharpDX.Toolkit.Graphics.EffectParameter)\">\n            <summary>\n            Lazily recomputes the world+view+projection matrix and\n            fog vector based on the current effect parameter settings.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectHelpers.SetFogVector(SharpDX.Matrix@,System.Single,System.Single,SharpDX.Toolkit.Graphics.EffectParameter)\">\n            <summary>\n            Sets a vector which can be dotted with the object space vertex position to compute fog amount.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectHelpers.SetLightingMatrices(SharpDX.Toolkit.Graphics.EffectDirtyFlags,SharpDX.Matrix@,SharpDX.Matrix@,SharpDX.Toolkit.Graphics.EffectParameter,SharpDX.Toolkit.Graphics.EffectParameter,SharpDX.Toolkit.Graphics.EffectParameter)\">\n            <summary>\n            Lazily recomputes the world inverse transpose matrix and\n            eye position based on the current effect parameter settings.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectHelpers.SetMaterialColor(System.Boolean,System.Single,SharpDX.Vector3@,SharpDX.Vector3@,SharpDX.Vector3@,SharpDX.Toolkit.Graphics.EffectParameter,SharpDX.Toolkit.Graphics.EffectParameter)\">\n            <summary>\n            Sets the diffuse/emissive/alpha material color parameters.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.SkinnedEffect\">\n            <summary>\n            Built-in effect for rendering skinned character models.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.SkinnedEffect.SetBoneTransforms(SharpDX.Matrix[])\">\n            <summary>\n            Sets an array of skinning bone transform matrices.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.SkinnedEffect.GetBoneTransforms(System.Int32)\">\n            <summary>\n            Gets a copy of the current skinning bone transform matrices.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.SkinnedEffect.#ctor(SharpDX.Toolkit.Graphics.GraphicsDevice)\">\n            <summary>\n            Creates a new SkinnedEffect with default parameter settings.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.SkinnedEffect.#ctor(SharpDX.Toolkit.Graphics.GraphicsDevice,SharpDX.Toolkit.Graphics.EffectPool)\">\n            <summary>\n            Creates a new SkinnedEffect with default parameter settings from a specified <see cref=\"T:SharpDX.Toolkit.Graphics.EffectPool\"/>.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.SkinnedEffect.EnableDefaultLighting\">\n            <summary>\n            Sets up the standard key/fill/back lighting rig.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.SkinnedEffect.OnApply(SharpDX.Toolkit.Graphics.EffectPass)\">\n            <summary>\n            Lazily computes derived parameter values immediately before applying the effect.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.SkinnedEffect.World\">\n            <summary>\n            Gets or sets the world matrix.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.SkinnedEffect.View\">\n            <summary>\n            Gets or sets the view matrix.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.SkinnedEffect.Projection\">\n            <summary>\n            Gets or sets the projection matrix.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.SkinnedEffect.DiffuseColor\">\n            <summary>\n            Gets or sets the material diffuse color (range 0 to 1).\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.SkinnedEffect.EmissiveColor\">\n            <summary>\n            Gets or sets the material emissive color (range 0 to 1).\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.SkinnedEffect.SpecularColor\">\n            <summary>\n            Gets or sets the material specular color (range 0 to 1).\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.SkinnedEffect.SpecularPower\">\n            <summary>\n            Gets or sets the material specular power.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.SkinnedEffect.Alpha\">\n            <summary>\n            Gets or sets the material alpha.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.SkinnedEffect.PreferPerPixelLighting\">\n            <summary>\n            Gets or sets the per-pixel lighting prefer flag.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.SkinnedEffect.AmbientLightColor\">\n            <summary>\n            Gets or sets the ambient light color (range 0 to 1).\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.SkinnedEffect.DirectionalLight0\">\n            <summary>\n            Gets the first directional light.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.SkinnedEffect.DirectionalLight1\">\n            <summary>\n            Gets the second directional light.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.SkinnedEffect.DirectionalLight2\">\n            <summary>\n            Gets the third directional light.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.SkinnedEffect.FogEnabled\">\n            <summary>\n            Gets or sets the fog enable flag.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.SkinnedEffect.FogStart\">\n            <summary>\n            Gets or sets the fog start distance.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.SkinnedEffect.FogEnd\">\n            <summary>\n            Gets or sets the fog end distance.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.SkinnedEffect.FogColor\">\n            <summary>\n            Gets or sets the fog color.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.SkinnedEffect.Texture\">\n            <summary>\n            Gets or sets the current texture.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.SkinnedEffect.WeightsPerVertex\">\n            <summary>\n            Gets or sets the number of skinning weights to evaluate for each vertex (1, 2, or 4).\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.SkinnedEffect.SharpDX#Toolkit#Graphics#IEffectLights#LightingEnabled\">\n            <summary>\n            This effect requires lighting, so we explicitly implement\n            IEffectLights.LightingEnabled, and do not allow turning it off.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.TextureContentReader\">\n            <summary>\n            Internal class to load Texture.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.TextureDimension\">\n            <summary>\n            Defines the dimension of a texture.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.TextureDimension.Texture1D\">\n            <summary>\n            The texture dimension is 1D.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.TextureDimension.Texture2D\">\n            <summary>\n            The texture dimension is 2D.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.TextureDimension.Texture3D\">\n            <summary>\n            The texture dimension is 3D.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.TextureDimension.TextureCube\">\n            <summary>\n            The texture dimension is a CubeMap.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.TextureFlags\">\n            <summary>\n            Specifies usage of a texture.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.TextureFlags.None\">\n            <summary>\n            None.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.TextureFlags.ShaderResource\">\n            <summary>\n            The texture will be used as a <see cref=\"T:SharpDX.Direct3D11.ShaderResourceView\"/>.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.TextureFlags.RenderTarget\">\n            <summary>\n            The texture will be used as a <see cref=\"T:SharpDX.Direct3D11.RenderTargetView\"/>.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.TextureFlags.UnorderedAccess\">\n            <summary>\n            The texture will be used as an <see cref=\"T:SharpDX.Direct3D11.UnorderedAccessView\"/>.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.UnorderedAccessViewSelector\">\n            <summary>\n            Used by <see cref=\"T:SharpDX.Toolkit.Graphics.Texture\"/> to provide a selector to a <see cref=\"T:SharpDX.Direct3D11.UnorderedAccessView\"/>.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.UnorderedAccessViewSelector.Item(System.Int32,System.Int32)\">\n            <summary>\n            Gets a specific <see cref=\"T:SharpDX.Direct3D11.UnorderedAccessView\"/> from this texture.\n            </summary>\n            <param name=\"arrayOrDepthSlice\">The texture array slice index.</param>\n            <param name=\"mipIndex\">The mip map slice index.</param>\n            <returns>An <see cref=\"T:SharpDX.Direct3D11.UnorderedAccessView\"/></returns>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.ShaderResourceViewSelector\">\n            <summary>\n            Used by <see cref=\"T:SharpDX.Toolkit.Graphics.Texture\"/> to provide a selector to a <see cref=\"T:SharpDX.Direct3D11.ShaderResourceView\"/>.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.ShaderResourceViewSelector.Item(SharpDX.Toolkit.Graphics.ViewType,System.Int32,System.Int32)\">\n            <summary>\n            Gets a specific <see cref=\"T:SharpDX.Direct3D11.ShaderResourceView\"/> from this texture.\n            </summary>\n            <param name=\"viewType\">Type of the view slice.</param>\n            <param name=\"arrayOrDepthSlice\">The texture array slice index.</param>\n            <param name=\"mipIndex\">The mip map slice index.</param>\n            <returns>An <see cref=\"T:SharpDX.Direct3D11.ShaderResourceView\"/></returns>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.RenderTargetViewSelector\">\n            <summary>\n            Used by <see cref=\"T:SharpDX.Toolkit.Graphics.RenderTarget2D\"/> to provide a selector to a <see cref=\"T:SharpDX.Direct3D11.RenderTargetView\"/>.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.RenderTargetViewSelector.Item(SharpDX.Toolkit.Graphics.ViewType,System.Int32,System.Int32)\">\n            <summary>\n            Gets a specific <see cref=\"T:SharpDX.Direct3D11.RenderTargetView\"/> from this texture.\n            </summary>\n            <param name=\"viewType\">Type of the view slice.</param>\n            <param name=\"arrayOrDepthSlice\">The texture array slice index.</param>\n            <param name=\"mipIndex\">The mip map slice index.</param>\n            <returns>An <see cref=\"T:SharpDX.Direct3D11.RenderTargetView\"/></returns>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.VertexInputLayout\">\n            <summary>\t\n            Defines the layout of all vertex buffers that will be bound to the input-assembler stage. \n            This structure is related to <see cref=\"T:SharpDX.Direct3D11.InputElement\"/>.\n            </summary>\t\n            <remarks>\t\n            <p>Because <see cref=\"T:SharpDX.Direct3D11.InputElement\"/> requires to have the same <see cref=\"F:SharpDX.Direct3D11.InputElement.Slot\"/>, <see cref=\"F:SharpDX.Direct3D11.InputElement.InstanceDataStepRate\"/>,\n            this <see cref=\"T:SharpDX.Toolkit.Graphics.VertexInputLayout\"/> structure encapsulates a set of <see cref=\"T:SharpDX.Toolkit.Graphics.VertexBufferLayout\"/>.</p>\n            <p>\n            This class is caching <see cref=\"T:SharpDX.Toolkit.Graphics.VertexInputLayout\"/> to improve performance.\n            The same description set of <see cref=\"T:SharpDX.Toolkit.Graphics.VertexBufferLayout\"/> will return the same <see cref=\"T:SharpDX.Toolkit.Graphics.VertexInputLayout\"/> instance.\n            </p>\n            </remarks>\t\n            <seealso cref=\"T:SharpDX.Toolkit.Graphics.VertexElement\"/>\n            <msdn-id>ff476180</msdn-id>\t\n            <unmanaged>D3D11_INPUT_ELEMENT_DESC</unmanaged>\t\n            <unmanaged-short>D3D11_INPUT_ELEMENT_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.VertexInputLayout.Id\">\n            <summary>\n            Gets a unique identifier of this VertexInputLayout configuration.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.VertexInputLayout.BufferLayouts\">\n            <summary>\n            Gets the buffer layout.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.VertexInputLayout.#ctor(System.Int32,SharpDX.Toolkit.Graphics.ReadOnlyArray{SharpDX.Toolkit.Graphics.VertexBufferLayout})\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.VertexInputLayout\"/> class.\n            </summary>\n            <param name=\"id\">The id.</param>\n            <param name=\"bufferLayouts\">The vertex buffer layouts.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.VertexInputLayout.op_Equality(SharpDX.Toolkit.Graphics.VertexInputLayout,SharpDX.Toolkit.Graphics.VertexInputLayout)\">\n            <summary>\n            Implements the operator ==.\n            </summary>\n            <param name=\"left\">The left.</param>\n            <param name=\"right\">The right.</param>\n            <returns>The result of the operator.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.VertexInputLayout.op_Inequality(SharpDX.Toolkit.Graphics.VertexInputLayout,SharpDX.Toolkit.Graphics.VertexInputLayout)\">\n            <summary>\n            Implements the operator !=.\n            </summary>\n            <param name=\"left\">The left.</param>\n            <param name=\"right\">The right.</param>\n            <returns>The result of the operator.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.VertexInputLayout.New(System.Int32,System.Type)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.VertexInputLayout\"/> with a single slot from a structure that is using <see cref=\"T:SharpDX.Toolkit.Graphics.VertexElementAttribute\"/>.\n            </summary>\n            <param name=\"slot\">The slot index in the input-assembler stage.</param>\n            <param name=\"structType\">Type of a structure that is using <see cref=\"T:SharpDX.Toolkit.Graphics.VertexElementAttribute\"/>.</param>\n            <returns>A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.VertexInputLayout\"/>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.VertexInputLayout.New``1(System.Int32)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.VertexInputLayout\"/> with a single slot from a structure that is using <see cref=\"T:SharpDX.Toolkit.Graphics.VertexElementAttribute\"/>.\n            </summary>\n            <typeparam name=\"T\">Type of a structure that is using <see cref=\"T:SharpDX.Toolkit.Graphics.VertexElementAttribute\"/>.</typeparam>\n            <param name=\"slot\">The slot index in the input-assembler stage.</param>\n            <returns>A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.VertexInputLayout\"/>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.VertexInputLayout.FromBuffer``1(System.Int32,SharpDX.Toolkit.Graphics.Buffer{``0})\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.VertexInputLayout\"/> with a single slot from a structure that is using <see cref=\"T:SharpDX.Toolkit.Graphics.VertexElementAttribute\"/>.\n            </summary>\n            <typeparam name=\"T\">Type of a structure that is using <see cref=\"T:SharpDX.Toolkit.Graphics.VertexElementAttribute\"/>.</typeparam>\n            <param name=\"slot\">The slot index in the input-assembler stage.</param>\n            <returns>A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.VertexInputLayout\"/>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.VertexInputLayout.New(System.Int32,SharpDX.Toolkit.Graphics.VertexElement[])\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.VertexInputLayout\"/> with a single slot.\n            </summary>\n            <param name=\"slot\">The slot index in the input-assembler stage.</param>\n            <param name=\"vertexElements\">Description of vertex elements.</param>\n            <returns>A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.VertexInputLayout\"/>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.VertexInputLayout.New(SharpDX.Toolkit.Graphics.VertexBufferLayout[])\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.VertexInputLayout\"/>.\n            </summary>\n            <param name=\"layouts\">A set of description of input layout for each slots in input-assembler stage.</param>\n            <returns>A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.VertexInputLayout\"/>.</returns>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.VertexPositionTexture\">\n            <summary>\n            Describes a custom vertex format structure that contains position and color information. \n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.VertexPositionTexture.#ctor(SharpDX.Vector3,SharpDX.Vector2)\">\n            <summary>\n            Initializes a new <see cref=\"T:SharpDX.Toolkit.Graphics.VertexPositionTexture\"/> instance.\n            </summary>\n            <param name=\"position\">The position of this vertex.</param>\n            <param name=\"textureCoordinate\">UV texture coordinates.</param>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.VertexPositionTexture.Position\">\n            <summary>\n            XYZ position.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.VertexPositionTexture.TextureCoordinate\">\n            <summary>\n            UV texture coordinates.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.VertexPositionTexture.Size\">\n            <summary>\n            Defines structure byte size.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.VertexPositionNormalTexture\">\n            <summary>\n            Describes a custom vertex format structure that contains position and color information. \n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.VertexPositionNormalTexture.#ctor(SharpDX.Vector3,SharpDX.Vector3,SharpDX.Vector2)\">\n            <summary>\n            Initializes a new <see cref=\"T:SharpDX.Toolkit.Graphics.VertexPositionNormalTexture\"/> instance.\n            </summary>\n            <param name=\"position\">The position of this vertex.</param>\n            <param name=\"normal\">The vertex normal.</param>\n            <param name=\"textureCoordinate\">UV texture coordinates.</param>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.VertexPositionNormalTexture.Position\">\n            <summary>\n            XYZ position.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.VertexPositionNormalTexture.Normal\">\n            <summary>\n            The vertex normal.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.VertexPositionNormalTexture.TextureCoordinate\">\n            <summary>\n            UV texture coordinates.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.VertexPositionNormalTexture.Size\">\n            <summary>\n            Defines structure byte size.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.VertexPositionColorTexture\">\n            <summary>\n            Describes a custom vertex format structure that contains position and color information. \n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.VertexPositionColorTexture.#ctor(SharpDX.Vector3,SharpDX.Color,SharpDX.Vector2)\">\n            <summary>\n            Initializes a new <see cref=\"T:SharpDX.Toolkit.Graphics.VertexPositionColorTexture\"/> instance.\n            </summary>\n            <param name=\"position\">The position of this vertex.</param>\n            <param name=\"color\">The color of this vertex.</param>\n            <param name=\"textureCoordinate\">UV texture coordinates.</param>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.VertexPositionColorTexture.Position\">\n            <summary>\n            XYZ position.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.VertexPositionColorTexture.Color\">\n            <summary>\n            The vertex color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.VertexPositionColorTexture.TextureCoordinate\">\n            <summary>\n            UV texture coordinates.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.VertexPositionColorTexture.Size\">\n            <summary>\n            Defines structure byte size.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.SamplerState\">\n            <summary>\n            SamplerState is equivalent to <see cref=\"T:SharpDX.Direct3D11.SamplerState\"/>.\n            </summary>\n            <msdn-id>ff476588</msdn-id>\t\n            <unmanaged>ID3D11SamplerState</unmanaged>\t\n            <unmanaged-short>ID3D11SamplerState</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.SamplerState.Description\">\n            <summary>\n            Gets the description of this sampler state.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.SamplerState.#ctor(SharpDX.Toolkit.Graphics.GraphicsDevice,SharpDX.Direct3D11.SamplerStateDescription)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.SamplerState\"/> class.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"description\">The description.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.SamplerState.#ctor(SharpDX.Toolkit.Graphics.GraphicsDevice,SharpDX.Direct3D11.SamplerState)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.SamplerState\"/> class.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"nativeState\">State of the native.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.SamplerState.New(SharpDX.Toolkit.Graphics.GraphicsDevice,SharpDX.Direct3D11.SamplerState)\">\n            <summary>\t\n            <p>Create a sampler-state object that encapsulates sampling information for a texture.</p>\t\n            </summary>\t\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"samplerState\">An existing <see cref=\"T:SharpDX.Direct3D11.SamplerState\"/> instance.</param>\t\n            <returns>A new <see cref=\"T:SharpDX.Toolkit.Graphics.SamplerState\"/> instance</returns>\t\n            <remarks>\t\n            <p>4096 unique sampler state objects can be created on a device at a time.</p><p>If an application attempts to create a sampler-state interface with the same state as an existing interface, the same interface will be returned and the total number of unique sampler state objects will stay the same.</p>\t\n            </remarks>\t\n            <msdn-id>ff476518</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateSamplerState([In] const D3D11_SAMPLER_DESC* pSamplerDesc,[Out, Fast] ID3D11SamplerState** ppSamplerState)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateSamplerState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.SamplerState.New(SharpDX.Toolkit.Graphics.GraphicsDevice,SharpDX.Direct3D11.SamplerStateDescription)\">\n            <summary>\t\n            <p>Create a sampler-state object that encapsulates sampling information for a texture.</p>\t\n            </summary>\t\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"description\">A sampler state description</param>\t\n            <returns>A new <see cref=\"T:SharpDX.Toolkit.Graphics.SamplerState\"/> instance</returns>\t\n            <remarks>\t\n            <p>4096 unique sampler state objects can be created on a device at a time.</p><p>If an application attempts to create a sampler-state interface with the same state as an existing interface, the same interface will be returned and the total number of unique sampler state objects will stay the same.</p>\t\n            </remarks>\t\n            <msdn-id>ff476518</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateSamplerState([In] const D3D11_SAMPLER_DESC* pSamplerDesc,[Out, Fast] ID3D11SamplerState** ppSamplerState)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateSamplerState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.SamplerState.New(SharpDX.Toolkit.Graphics.GraphicsDevice,System.String,SharpDX.Direct3D11.SamplerStateDescription)\">\n            <summary>\t\n            <p>Create a sampler-state object that encapsulates sampling information for a texture.</p>\t\n            </summary>\t\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"name\">Name of this sampler state.</param>\n            <param name=\"description\">A sampler state description</param>\t\n            <returns>A new <see cref=\"T:SharpDX.Toolkit.Graphics.SamplerState\"/> instance</returns>\t\n            <remarks>\t\n            <p>4096 unique sampler state objects can be created on a device at a time.</p><p>If an application attempts to create a sampler-state interface with the same state as an existing interface, the same interface will be returned and the total number of unique sampler state objects will stay the same.</p>\t\n            </remarks>\t\n            <msdn-id>ff476518</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateSamplerState([In] const D3D11_SAMPLER_DESC* pSamplerDesc,[Out, Fast] ID3D11SamplerState** ppSamplerState)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateSamplerState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.SamplerState.op_Implicit(SharpDX.Toolkit.Graphics.SamplerState)~SharpDX.Direct3D11.SamplerState\">\n            <summary>\n            Implicit casting operator to <see cref=\"T:SharpDX.Direct3D11.Resource\"/>\n            </summary>\n            <param name=\"from\">The GraphicsState to convert from.</param>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.PrimitiveType\">\n            <summary>\n            Values that indicate how the pipeline interprets vertex data that is bound to the input-assembler stage. These primitive topology values determine how the vertex data is rendered on screen.\n            PrimitiveType is equivalent to <see cref=\"T:SharpDX.Direct3D.PrimitiveTopology\"/>.\n            </summary>\n            <remarks>\n            This structure is implicitly castable to and from <see cref=\"T:SharpDX.Direct3D.PrimitiveTopology\"/>, you can use it inplace where <see cref=\"T:SharpDX.Direct3D.PrimitiveTopology\"/> is required\n            and vice-versa.\n            </remarks>\n            <msdn-id>ff728726</msdn-id>\t\n            <unmanaged>D3D_PRIMITIVE_TOPOLOGY</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_TOPOLOGY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.PrimitiveType.Value\">\n            <summary>\n            Gets the value as a <see cref=\"T:SharpDX.Direct3D.PrimitiveTopology\"/> enum.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.PrimitiveType.#ctor(SharpDX.Direct3D.PrimitiveTopology)\">\n            <summary>\n            Internal constructor.\n            </summary>\n            <param name=\"type\"></param>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.PrimitiveType.Undefined\">\n            <summary>\t\n            The IA stage has not been initialized with a primitive topology. The IA stage will not function properly unless a primitive topology is defined.\n            </summary>\t\n            <unmanaged>D3D_PRIMITIVE_TOPOLOGY_UNDEFINED</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_TOPOLOGY_UNDEFINED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.PrimitiveType.PointList\">\n            <summary>\t\n            Interpret the vertex data as a list of points.\n            </summary>\t\n            <unmanaged>D3D_PRIMITIVE_TOPOLOGY_POINTLIST</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_TOPOLOGY_POINTLIST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.PrimitiveType.LineList\">\n            <summary>\t\n            Interpret the vertex data as a list of lines.\n            </summary>\t\n            <unmanaged>D3D_PRIMITIVE_TOPOLOGY_LINELIST</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_TOPOLOGY_LINELIST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.PrimitiveType.LineStrip\">\n            <summary>\t\n            Interpret the vertex data as a line strip.\n            </summary>\t\n            <unmanaged>D3D_PRIMITIVE_TOPOLOGY_LINESTRIP</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_TOPOLOGY_LINESTRIP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.PrimitiveType.TriangleList\">\n            <summary>\t\n            Interpret the vertex data as a list of triangles.\n            </summary>\t\n            <unmanaged>D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.PrimitiveType.TriangleStrip\">\n            <summary>\t\n            Interpret the vertex data as a triangle strip.\n            </summary>\t\n            <unmanaged>D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.PrimitiveType.LineListWithAdjacency\">\n            <summary>\t\n            Interpret the vertex data as a list of lines with adjacency data.\n            </summary>\t\n            <unmanaged>D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.PrimitiveType.LineStripWithAdjacency\">\n            <summary>\t\n            Interpret the vertex data as a line strip with adjacency data.\n            </summary>\t\n            <unmanaged>D3D_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.PrimitiveType.TriangleListWithAdjacency\">\n            <summary>\t\n            Interpret the vertex data as a list of triangles with adjacency data.\n            </summary>\t\n            <unmanaged>D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.PrimitiveType.TriangleStripWithAdjacency\">\n            <summary>\t\n            Interpret the vertex data as a triangle strip with adjacency data.\n            </summary>\t\n            <unmanaged>D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.PrimitiveType.PatchList(System.Int32)\">\n            <summary>\t\n            Interpret the vertex data as a patch list.\n            </summary>\t\n            <param name=\"controlPoints\">Number of control points. Value must be in the range 1 to 32.</param>\n            <unmanaged>D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.RasterizerState\">\n            <summary>\n            RasterizerState is equivalent to <see cref=\"T:SharpDX.Direct3D11.RasterizerState\"/>.\n            </summary>\n            <msdn-id>ff476580</msdn-id>\t\n            <unmanaged>ID3D11RasterizerState</unmanaged>\t\n            <unmanaged-short>ID3D11RasterizerState</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.RasterizerState.Description\">\n            <summary>\n            Gets the description of this blend state.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.RasterizerState.#ctor(SharpDX.Toolkit.Graphics.GraphicsDevice,SharpDX.Direct3D11.RasterizerStateDescription)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.RasterizerState\"/> class.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"description\">The description.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.RasterizerState.#ctor(SharpDX.Toolkit.Graphics.GraphicsDevice,SharpDX.Direct3D11.RasterizerState)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.RasterizerState\"/> class.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"nativeState\">State of the native.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.RasterizerState.New(SharpDX.Toolkit.Graphics.GraphicsDevice,SharpDX.Direct3D11.RasterizerState)\">\n            <summary>\t\n            <p>Create a rasterizer state object that tells the rasterizer stage how to behave.</p>\t\n            </summary>\t\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"rasterizerState\">An existing <see cref=\"T:SharpDX.Direct3D11.RasterizerState\"/> instance.</param>\t\n            <remarks>\t\n            <p>4096 unique rasterizer state objects can be created on a device at a time.</p><p>If an application attempts to create a rasterizer-state interface with the same state as an existing interface, the same interface will be returned and the total number of unique rasterizer state objects will stay the same.</p>\t\n            </remarks>\t\n            <msdn-id>ff476516</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateRasterizerState([In] const D3D11_RASTERIZER_DESC* pRasterizerDesc,[Out, Fast] ID3D11RasterizerState** ppRasterizerState)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateRasterizerState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.RasterizerState.New(SharpDX.Toolkit.Graphics.GraphicsDevice,SharpDX.Direct3D11.RasterizerStateDescription)\">\n            <summary>\t\n            <p>Create a rasterizer state object that tells the rasterizer stage how to behave.</p>\t\n            </summary>\t\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"description\">A rasterizer state description</param>\t\n            <remarks>\t\n            <p>4096 unique rasterizer state objects can be created on a device at a time.</p><p>If an application attempts to create a rasterizer-state interface with the same state as an existing interface, the same interface will be returned and the total number of unique rasterizer state objects will stay the same.</p>\t\n            </remarks>\t\n            <msdn-id>ff476516</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateRasterizerState([In] const D3D11_RASTERIZER_DESC* pRasterizerDesc,[Out, Fast] ID3D11RasterizerState** ppRasterizerState)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateRasterizerState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.RasterizerState.New(SharpDX.Toolkit.Graphics.GraphicsDevice,System.String,SharpDX.Direct3D11.RasterizerStateDescription)\">\n            <summary>\t\n            <p>Create a rasterizer state object that tells the rasterizer stage how to behave.</p>\t\n            </summary>\t\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"name\">Name of this depth stencil state.</param>\n            <param name=\"description\">A rasterizer state description</param>\t\n            <remarks>\t\n            <p>4096 unique rasterizer state objects can be created on a device at a time.</p><p>If an application attempts to create a rasterizer-state interface with the same state as an existing interface, the same interface will be returned and the total number of unique rasterizer state objects will stay the same.</p>\t\n            </remarks>\t\n            <msdn-id>ff476516</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateRasterizerState([In] const D3D11_RASTERIZER_DESC* pRasterizerDesc,[Out, Fast] ID3D11RasterizerState** ppRasterizerState)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateRasterizerState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.RasterizerState.op_Implicit(SharpDX.Toolkit.Graphics.RasterizerState)~SharpDX.Direct3D11.RasterizerState\">\n            <summary>\n            Implicit casting operator to <see cref=\"T:SharpDX.Direct3D11.Resource\"/>\n            </summary>\n            <param name=\"from\">The GraphicsState to convert from.</param>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.DepthStencilState\">\n            <summary>\n            DepthStencilState is equivalent to <see cref=\"T:SharpDX.Direct3D11.DepthStencilState\"/>.\n            </summary>\n            <msdn-id>ff476375</msdn-id>\t\n            <unmanaged>ID3D11DepthStencilState</unmanaged>\t\n            <unmanaged-short>ID3D11DepthStencilState</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.DepthStencilState.Description\">\n            <summary>\n            Gets the description of this blend state.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.DepthStencilState.#ctor(SharpDX.Toolkit.Graphics.GraphicsDevice,SharpDX.Direct3D11.DepthStencilStateDescription)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.DepthStencilState\"/> class.\n            </summary>\n            <param name=\"device\">The device local.</param>\n            <param name=\"description\">The description.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.DepthStencilState.#ctor(SharpDX.Toolkit.Graphics.GraphicsDevice,SharpDX.Direct3D11.DepthStencilState)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.DepthStencilState\"/> class.\n            </summary>\n            <param name=\"device\">The device local.</param>\n            <param name=\"nativeState\">State of the native.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.DepthStencilState.New(SharpDX.Toolkit.Graphics.GraphicsDevice,SharpDX.Direct3D11.DepthStencilState)\">\n            <summary>\t\n            Create a depth-stencil state object that encapsulates depth-stencil test information for the output-merger stage.\n            </summary>\t\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"depthStencilState\">An existing <see cref=\"T:SharpDX.Direct3D11.DepthStencilState\"/> instance.</param>\t\n            <returns>A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.DepthStencilState\"/></returns>\t\n            <remarks>\t\n            <p>4096 unique depth-stencil state objects can be created on a device at a time.</p><p>If an application attempts to create a depth-stencil-state interface with the same state as an existing interface, the same interface will be returned and the total number of unique depth-stencil state objects will stay the same.</p>\t\n            </remarks>\t\n            <msdn-id>ff476506</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateDepthStencilState([In] const D3D11_DEPTH_STENCIL_DESC* pDepthStencilDesc,[Out, Fast] ID3D11DepthStencilState** ppDepthStencilState)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateDepthStencilState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.DepthStencilState.New(SharpDX.Toolkit.Graphics.GraphicsDevice,SharpDX.Direct3D11.DepthStencilStateDescription)\">\n            <summary>\t\n            Create a depth-stencil state object that encapsulates depth-stencil test information for the output-merger stage.\n            </summary>\t\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"description\">A depth-stencil state description</param>\t\n            <returns>A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.DepthStencilState\"/></returns>\t\n            <remarks>\t\n            <p>4096 unique depth-stencil state objects can be created on a device at a time.</p><p>If an application attempts to create a depth-stencil-state interface with the same state as an existing interface, the same interface will be returned and the total number of unique depth-stencil state objects will stay the same.</p>\t\n            </remarks>\t\n            <msdn-id>ff476506</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateDepthStencilState([In] const D3D11_DEPTH_STENCIL_DESC* pDepthStencilDesc,[Out, Fast] ID3D11DepthStencilState** ppDepthStencilState)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateDepthStencilState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.DepthStencilState.New(SharpDX.Toolkit.Graphics.GraphicsDevice,System.String,SharpDX.Direct3D11.DepthStencilStateDescription)\">\n            <summary>\t\n            Create a depth-stencil state object that encapsulates depth-stencil test information for the output-merger stage.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"name\">Name of this depth stencil state.</param>\n            <param name=\"description\">A depth-stencil state description</param>\t\n            <returns>A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.DepthStencilState\"/></returns>\t\n            <remarks>\t\n            <p>4096 unique depth-stencil state objects can be created on a device at a time.</p><p>If an application attempts to create a depth-stencil-state interface with the same state as an existing interface, the same interface will be returned and the total number of unique depth-stencil state objects will stay the same.</p>\t\n            </remarks>\t\n            <msdn-id>ff476506</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateDepthStencilState([In] const D3D11_DEPTH_STENCIL_DESC* pDepthStencilDesc,[Out, Fast] ID3D11DepthStencilState** ppDepthStencilState)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateDepthStencilState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.DepthStencilState.op_Implicit(SharpDX.Toolkit.Graphics.DepthStencilState)~SharpDX.Direct3D11.DepthStencilState\">\n            <summary>\n            Implicit casting operator to <see cref=\"T:SharpDX.Direct3D11.Resource\"/>\n            </summary>\n            <param name=\"from\">The GraphicsState to convert from.</param>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.DepthFormat\">\n            <summary>\n            Defines the format of data in a depth-stencil buffer.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.DepthFormat.None\">\n            <summary>\n            No depth stencil buffer.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.DepthFormat.Depth16\">\n            <summary>\n            A buffer that contains 16-bits of depth data.\n            </summary>\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_D16_UNORM</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_D16_UNORM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.DepthFormat.Depth24Stencil8\">\n            <summary>\n            A 32 bit buffer that contains 24 bits of depth data and 8 bits of stencil data.\n            </summary>\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_D24_UNORM_S8_UINT</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_D24_UNORM_S8_UINT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.DepthFormat.Depth32\">\n            <summary>\n            A buffer that contains 32-bits of depth data.\n            </summary>\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_D32_FLOAT</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_D32_FLOAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.DepthFormat.Depth32Stencil8X24\">\n            <summary>\n            A double 32 bit buffer that contains 32 bits of depth data and 8 bits padded with 24 zero bits of stencil data.\n            </summary>\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT_D32_FLOAT_S8X24_UINT</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT_D32_FLOAT_S8X24_UINT</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.DepthStencilBuffer\">\n            <summary>\n            A DepthStencilBuffer frontend to <see cref=\"T:SharpDX.Direct3D11.Texture2D\"/>.\n            </summary>\n            <remarks>\n            This class instantiates a <see cref=\"T:SharpDX.Toolkit.Graphics.Texture2D\"/> with the binding flags <see cref=\"F:SharpDX.Direct3D11.BindFlags.DepthStencil\"/>.\n            </remarks>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.Texture2DBase\">\n            <summary>\n            Abstract class frontend to <see cref=\"T:SharpDX.Direct3D11.Texture2D\"/>.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.Texture\">\n            <summary>\n            Base class for texture resources.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.Texture.Description\">\n            <summary>\n            Common description for this texture.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.Texture.ShaderResourceView\">\n            <summary>\n            Gets the selector for a <see cref=\"F:SharpDX.Toolkit.Graphics.Texture.ShaderResourceView\"/>\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.Texture.RenderTargetView\">\n            <summary>\n            Gets the selector for a <see cref=\"F:SharpDX.Toolkit.Graphics.Texture.RenderTargetView\"/>\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.Texture.UnorderedAccessView\">\n            <summary>\n            Gets the selector for a <see cref=\"F:SharpDX.Toolkit.Graphics.Texture.UnorderedAccessView\"/>\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.Texture.IsBlockCompressed\">\n            <summary>\n            Gets a boolean indicating whether this <see cref=\"T:SharpDX.Toolkit.Graphics.Texture\"/> is a using a block compress format (BC1, BC2, BC3, BC4, BC5, BC6H, BC7).\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.Texture.RowStride\">\n            <summary>\n            The width stride in bytes (number of bytes per row).\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.Texture.DepthStride\">\n            <summary>\n            The depth stride in bytes (number of bytes per depth slice).\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Texture.InitializeViews\">\n            <summary>\n            Initializes the views provided by this texture.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Texture.GetMipMapDescription(System.Int32)\">\n            <summary>\n            Gets the mipmap description of this instance for the specified mipmap level.\n            </summary>\n            <param name=\"mipmap\">The mipmap.</param>\n            <returns>A description of a particular mipmap for this texture.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Texture.GenerateMipMaps\">\n            <summary>\n            Generates the mip maps for this texture. See remarks.\n            </summary>\n            <exception cref=\"T:System.NotSupportedException\">Cannot generate mipmaps for this texture (Must be RenderTarget and ShaderResource and MipLevels &gt; 1</exception>\n            <remarks>This method is only working for texture that are RenderTarget and ShaderResource and with MipLevels &gt; 1</remarks>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Texture.GenerateMipMaps(SharpDX.Toolkit.Graphics.GraphicsDevice)\">\n            <summary>\n            Generates the mip maps for this texture. See remarks.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <exception cref=\"T:System.NotSupportedException\">Cannot generate mipmaps for this texture (Must be RenderTarget and ShaderResource and MipLevels &gt; 1</exception>\n            <remarks>This method is only working for texture that are RenderTarget and ShaderResource and with MipLevels &gt; 1</remarks>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Texture.CalculateMipLevels(System.Int32,SharpDX.Toolkit.Graphics.MipMapCount)\">\n            <summary>\n            Calculates the number of miplevels for a Texture 1D.\n            </summary>\n            <param name=\"width\">The width of the texture.</param>\n            <param name=\"mipLevels\">A <see cref=\"T:SharpDX.Toolkit.Graphics.MipMapCount\"/>, set to true to calculates all mipmaps, to false to calculate only 1 miplevel, or &gt; 1 to calculate a specific amount of levels.</param>\n            <returns>The number of miplevels.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Texture.CalculateMipLevels(System.Int32,System.Int32,SharpDX.Toolkit.Graphics.MipMapCount)\">\n            <summary>\n            Calculates the number of miplevels for a Texture 2D.\n            </summary>\n            <param name=\"width\">The width of the texture.</param>\n            <param name=\"height\">The height of the texture.</param>\n            <param name=\"mipLevels\">A <see cref=\"T:SharpDX.Toolkit.Graphics.MipMapCount\"/>, set to true to calculates all mipmaps, to false to calculate only 1 miplevel, or &gt; 1 to calculate a specific amount of levels.</param>\n            <returns>The number of miplevels.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Texture.CalculateMipLevels(System.Int32,System.Int32,System.Int32,SharpDX.Toolkit.Graphics.MipMapCount)\">\n            <summary>\n            Calculates the number of miplevels for a Texture 2D.\n            </summary>\n            <param name=\"width\">The width of the texture.</param>\n            <param name=\"height\">The height of the texture.</param>\n            <param name=\"depth\">The depth of the texture.</param>\n            <param name=\"mipLevels\">A <see cref=\"T:SharpDX.Toolkit.Graphics.MipMapCount\"/>, set to true to calculates all mipmaps, to false to calculate only 1 miplevel, or &gt; 1 to calculate a specific amount of levels.</param>\n            <returns>The number of miplevels.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Texture.GetSubResourceIndex(System.Int32,System.Int32)\">\n            <summary>\n            Gets the absolute sub-resource index from the array and mip slice.\n            </summary>\n            <param name=\"arraySlice\">The array slice index.</param>\n            <param name=\"mipSlice\">The mip slice index.</param>\n            <returns>A value equals to arraySlice * Description.MipLevels + mipSlice.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Texture.CalculateWidth``1(System.Int32)\">\n            <summary>\n            Calculates the expected width of a texture using a specified type.\n            </summary>\n            <typeparam name=\"TData\">The type of the T pixel data.</typeparam>\n            <returns>The expected width</returns>\n            <exception cref=\"T:System.ArgumentException\">If the size is invalid</exception>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Texture.CalculatePixelDataCount``1(System.Int32)\">\n            <summary>\n            Calculates the number of pixel data this texture is requiring for a particular mip level.\n            </summary>\n            <typeparam name=\"TData\">The type of the T pixel data.</typeparam>\n            <param name=\"mipLevel\">The mip level.</param>\n            <returns>The number of pixel data.</returns>\n            <remarks>This method is used to allocated a texture data buffer to hold pixel datas: var textureData = new T[ texture.CalculatePixelCount&lt;T&gt;() ] ;.</remarks>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Texture.Clone\">\n            <summary>\n            Makes a copy of this texture.\n            </summary>\n            <remarks>\n            This method doesn't copy the content of the texture.\n            </remarks>\n            <returns>\n            A copy of this texture.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Texture.Clone``1\">\n            <summary>\n            Makes a copy of this texture with type casting.\n            </summary>\n            <remarks>\n            This method doesn't copy the content of the texture.\n            </remarks>\n            <returns>\n            A copy of this texture.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Texture.GetData``1(System.Int32,System.Int32)\">\n            <summary>\n            Gets the content of this texture to an array of data.\n            </summary>\n            <typeparam name=\"TData\">The type of the T data.</typeparam>\n            <param name=\"arrayOrDepthSlice\">The array slice index. This value must be set to 0 for Texture 3D.</param>\n            <param name=\"mipSlice\">The mip slice index.</param>\n            <returns>The texture data.</returns>\n            <msdn-id>ff476457</msdn-id>\n              <unmanaged>HRESULT ID3D11DeviceContext::Map([In] ID3D11Resource* pResource,[In] unsigned int Subresource,[In] D3D11_MAP MapType,[In] D3D11_MAP_FLAG MapFlags,[Out] D3D11_MAPPED_SUBRESOURCE* pMappedResource)</unmanaged>\n              <unmanaged-short>ID3D11DeviceContext::Map</unmanaged-short>\n            <remarks>\n            This method is only working when called from the main thread that is accessing the main <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.\n            This method creates internally a stagging resource, copies to it and map it to memory. Use method with explicit staging resource\n            for optimal performances.</remarks>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Texture.GetData``1(``0[],System.Int32,System.Int32)\">\n            <summary>\n            Copies the content of this texture to an array of data.\n            </summary>\n            <typeparam name=\"TData\">The type of the T data.</typeparam>\n            <param name=\"toData\">The destination buffer to receive a copy of the texture datas.</param>\n            <param name=\"arraySlice\">The array slice index. This value must be set to 0 for Texture 3D.</param>\n            <param name=\"mipSlice\">The mip slice index.</param>\n            <msdn-id>ff476457</msdn-id>\n              <unmanaged>HRESULT ID3D11DeviceContext::Map([In] ID3D11Resource* pResource,[In] unsigned int Subresource,[In] D3D11_MAP MapType,[In] D3D11_MAP_FLAG MapFlags,[Out] D3D11_MAPPED_SUBRESOURCE* pMappedResource)</unmanaged>\n              <unmanaged-short>ID3D11DeviceContext::Map</unmanaged-short>\n            <remarks>\n            This method is only working when called from the main thread that is accessing the main <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.\n            This method creates internally a stagging resource if this texture is not already a stagging resouce, copies to it and map it to memory. Use method with explicit staging resource\n            for optimal performances.</remarks>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Texture.New(SharpDX.Toolkit.Graphics.GraphicsDevice,SharpDX.Toolkit.Graphics.TextureDescription)\">\n            <summary>\n            Creates a new texture with the specified generic texture description.\n            </summary>\n            <param name=\"graphicsDevice\">The graphics device.</param>\n            <param name=\"description\">The description.</param>\n            <returns>A Texture instance, either a RenderTarget or DepthStencilBuffer or Texture, depending on Binding flags.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Texture.GetData``1(SharpDX.Toolkit.Graphics.Texture,``0[],System.Int32,System.Int32)\">\n            <summary>\n            Copies the content of this texture from GPU memory to an array of data on CPU memory using a specific staging resource.\n            </summary>\n            <typeparam name=\"TData\">The type of the T data.</typeparam>\n            <param name=\"stagingTexture\">The staging texture used to transfer the texture to.</param>\n            <param name=\"toData\">To data.</param>\n            <param name=\"arraySlice\">The array slice index. This value must be set to 0 for Texture 3D.</param>\n            <param name=\"mipSlice\">The mip slice index.</param>\n            <exception cref=\"T:System.ArgumentException\">When strides is different from optimal strides, and TData is not the same size as the pixel format, or Width * Height != toData.Length</exception>\n            <msdn-id>ff476457</msdn-id>\t\n            <unmanaged>HRESULT ID3D11DeviceContext::Map([In] ID3D11Resource* pResource,[In] unsigned int Subresource,[In] D3D11_MAP MapType,[In] D3D11_MAP_FLAG MapFlags,[Out] D3D11_MAPPED_SUBRESOURCE* pMappedResource)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::Map</unmanaged-short>\t\n            <remarks>\n            This method is only working when called from the main thread that is accessing the main <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Texture.GetData(SharpDX.Toolkit.Graphics.Texture,SharpDX.DataPointer,System.Int32,System.Int32)\">\n            <summary>\n            Copies the content of this texture from GPU memory to a pointer on CPU memory using a specific staging resource.\n            </summary>\n            <param name=\"stagingTexture\">The staging texture used to transfer the texture to.</param>\n            <param name=\"toData\">The pointer to data in CPU memory.</param>\n            <param name=\"arraySlice\">The array slice index. This value must be set to 0 for Texture 3D.</param>\n            <param name=\"mipSlice\">The mip slice index.</param>\n            <exception cref=\"T:System.ArgumentException\">When strides is different from optimal strides, and TData is not the same size as the pixel format, or Width * Height != toData.Length</exception>\n            <msdn-id>ff476457</msdn-id>\t\n            <unmanaged>HRESULT ID3D11DeviceContext::Map([In] ID3D11Resource* pResource,[In] unsigned int Subresource,[In] D3D11_MAP MapType,[In] D3D11_MAP_FLAG MapFlags,[Out] D3D11_MAPPED_SUBRESOURCE* pMappedResource)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::Map</unmanaged-short>\t\n            <remarks>\n            This method is only working when called from the main thread that is accessing the main <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Texture.SetData``1(``0[],System.Int32,System.Int32,System.Nullable{SharpDX.Direct3D11.ResourceRegion})\">\n            <summary>\n            Copies the content an array of data on CPU memory to this texture into GPU memory.\n            </summary>\n            <typeparam name=\"TData\">The type of the T data.</typeparam>\n            <param name=\"fromData\">The data to copy from.</param>\n            <param name=\"arraySlice\">The array slice index. This value must be set to 0 for Texture 3D.</param>\n            <param name=\"mipSlice\">The mip slice index.</param>\n            <param name=\"region\">Destination region</param>\n            <exception cref=\"T:System.ArgumentException\">When strides is different from optimal strides, and TData is not the same size as the pixel format, or Width * Height != toData.Length</exception>\n            <msdn-id>ff476457</msdn-id>\t\n            <unmanaged>HRESULT ID3D11DeviceContext::Map([In] ID3D11Resource* pResource,[In] unsigned int Subresource,[In] D3D11_MAP MapType,[In] D3D11_MAP_FLAG MapFlags,[Out] D3D11_MAPPED_SUBRESOURCE* pMappedResource)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::Map</unmanaged-short>\t\n            <remarks>\n            This method is only working on the main graphics device. Use method with explicit graphics device to set data on a deferred context.\n            See also unmanaged documentation about Map/UnMap for usage and restrictions.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Texture.SetData(SharpDX.DataPointer,System.Int32,System.Int32,System.Nullable{SharpDX.Direct3D11.ResourceRegion})\">\n            <summary>\n            Copies the content an data on CPU memory to this texture into GPU memory using the specified <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/> (The graphics device could be deffered).\n            </summary>\n            <param name=\"fromData\">The data to copy from.</param>\n            <param name=\"arraySlice\">The array slice index. This value must be set to 0 for Texture 3D.</param>\n            <param name=\"mipSlice\">The mip slice index.</param>\n            <param name=\"region\">Destination region</param>\n            <exception cref=\"T:System.ArgumentException\">When strides is different from optimal strides, and TData is not the same size as the pixel format, or Width * Height != toData.Length</exception>\n            <msdn-id>ff476457</msdn-id>\t\n            <unmanaged>HRESULT ID3D11DeviceContext::Map([In] ID3D11Resource* pResource,[In] unsigned int Subresource,[In] D3D11_MAP MapType,[In] D3D11_MAP_FLAG MapFlags,[Out] D3D11_MAPPED_SUBRESOURCE* pMappedResource)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::Map</unmanaged-short>\t\n            <remarks>\n            This method is only working on the main graphics device. Use method with explicit graphics device to set data on a deferred context.\n            See also unmanaged documentation about Map/UnMap for usage and restrictions.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Texture.SetData``1(SharpDX.Toolkit.Graphics.GraphicsDevice,``0[],System.Int32,System.Int32,System.Nullable{SharpDX.Direct3D11.ResourceRegion})\">\n            <summary>\n            Copies the content an array of data on CPU memory to this texture into GPU memory using the specified <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/> (The graphics device could be deffered).\n            </summary>\n            <typeparam name=\"TData\">The type of the T data.</typeparam>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"fromData\">The data to copy from.</param>\n            <param name=\"arraySlice\">The array slice index. This value must be set to 0 for Texture 3D.</param>\n            <param name=\"mipSlice\">The mip slice index.</param>\n            <param name=\"region\">Destination region</param>\n            <exception cref=\"T:System.ArgumentException\">When strides is different from optimal strides, and TData is not the same size as the pixel format, or Width * Height != toData.Length</exception>\n            <msdn-id>ff476457</msdn-id>\t\n            <unmanaged>HRESULT ID3D11DeviceContext::Map([In] ID3D11Resource* pResource,[In] unsigned int Subresource,[In] D3D11_MAP MapType,[In] D3D11_MAP_FLAG MapFlags,[Out] D3D11_MAPPED_SUBRESOURCE* pMappedResource)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::Map</unmanaged-short>\t\n            <remarks>\n            See unmanaged documentation for usage and restrictions.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Texture.SetData(SharpDX.Toolkit.Graphics.GraphicsDevice,SharpDX.DataPointer,System.Int32,System.Int32,System.Nullable{SharpDX.Direct3D11.ResourceRegion})\">\n            <summary>\n            Copies the content an data on CPU memory to this texture into GPU memory.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"fromData\">The data to copy from.</param>\n            <param name=\"arraySlice\">The array slice index. This value must be set to 0 for Texture 3D.</param>\n            <param name=\"mipSlice\">The mip slice index.</param>\n            <param name=\"region\">Destination region</param>\n            <exception cref=\"T:System.ArgumentException\">When strides is different from optimal strides, and TData is not the same size as the pixel format, or Width * Height != toData.Length</exception>\n            <msdn-id>ff476457</msdn-id>\t\n            <unmanaged>HRESULT ID3D11DeviceContext::Map([In] ID3D11Resource* pResource,[In] unsigned int Subresource,[In] D3D11_MAP MapType,[In] D3D11_MAP_FLAG MapFlags,[Out] D3D11_MAPPED_SUBRESOURCE* pMappedResource)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::Map</unmanaged-short>\t\n            <remarks>\n            See unmanaged documentation for usage and restrictions.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Texture.SetData(SharpDX.Toolkit.Graphics.Image)\">\n            <summary>\n            Copies the content of an image to this texture.\n            </summary>\n            <param name=\"image\">The source image to copy from.</param>\n            <msdn-id>ff476457</msdn-id>\t\n            <unmanaged>HRESULT ID3D11DeviceContext::Map([In] ID3D11Resource* pResource,[In] unsigned int Subresource,[In] D3D11_MAP MapType,[In] D3D11_MAP_FLAG MapFlags,[Out] D3D11_MAPPED_SUBRESOURCE* pMappedResource)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::Map</unmanaged-short>\t\n            <remarks>\n            See unmanaged documentation for usage and restrictions.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Texture.SetData(SharpDX.Toolkit.Graphics.GraphicsDevice,SharpDX.Toolkit.Graphics.Image)\">\n            <summary>\n            Copies the content of an image to this texture.\n            </summary>\n            <param name=\"graphicsDevice\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"image\">The source image to copy from.</param>\n            <exception cref=\"T:System.ArgumentException\">Image is not same dimension and/or format than this texture</exception>\n            <msdn-id>ff476457</msdn-id>\t\n            <unmanaged>HRESULT ID3D11DeviceContext::Map([In] ID3D11Resource* pResource,[In] unsigned int Subresource,[In] D3D11_MAP MapType,[In] D3D11_MAP_FLAG MapFlags,[Out] D3D11_MAPPED_SUBRESOURCE* pMappedResource)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::Map</unmanaged-short>\t\n            <remarks>\n            See unmanaged documentation for usage and restrictions.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Texture.ToStaging\">\n            <summary>\n            Return an equivalent staging texture CPU read-writable from this instance.\n            </summary>\n            <returns></returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Texture.GetShaderResourceView(SharpDX.Toolkit.Graphics.ViewType,System.Int32,System.Int32)\">\n            <summary>\n            Gets a specific <see cref=\"F:SharpDX.Toolkit.Graphics.Texture.ShaderResourceView\"/> from this texture.\n            </summary>\n            <param name=\"viewType\">Type of the view slice.</param>\n            <param name=\"arrayOrDepthSlice\">The texture array slice index.</param>\n            <param name=\"mipIndex\">The mip map slice index.</param>\n            <returns>An <see cref=\"F:SharpDX.Toolkit.Graphics.Texture.ShaderResourceView\"/></returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Texture.GetRenderTargetView(SharpDX.Toolkit.Graphics.ViewType,System.Int32,System.Int32)\">\n            <summary>\n            Gets a specific <see cref=\"F:SharpDX.Toolkit.Graphics.Texture.RenderTargetView\"/> from this texture.\n            </summary>\n            <param name=\"viewType\">Type of the view slice.</param>\n            <param name=\"arrayOrDepthSlice\">The texture array slice index.</param>\n            <param name=\"mipMapSlice\">The mip map slice index.</param>\n            <returns>An <see cref=\"F:SharpDX.Toolkit.Graphics.Texture.RenderTargetView\"/></returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Texture.GetUnorderedAccessView(System.Int32,System.Int32)\">\n            <summary>\n            Gets a specific <see cref=\"F:SharpDX.Toolkit.Graphics.Texture.UnorderedAccessView\"/> from this texture.\n            </summary>\n            <param name=\"arrayOrDepthSlice\">The texture array slice index.</param>\n            <param name=\"mipMapSlice\">The mip map slice index.</param>\n            <returns>An <see cref=\"F:SharpDX.Toolkit.Graphics.Texture.UnorderedAccessView\"/></returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Texture.op_Implicit(SharpDX.Toolkit.Graphics.Texture)~SharpDX.Direct3D11.ShaderResourceView\">\n            <summary>\n            ShaderResourceView casting operator.\n            </summary>\n            <param name=\"from\">Source for the.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Texture.op_Implicit(SharpDX.Toolkit.Graphics.Texture)~SharpDX.Direct3D11.UnorderedAccessView\">\n            <summary>\n            UnorderedAccessView casting operator.\n            </summary>\n            <param name=\"from\">Source for the.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Texture.Load(SharpDX.Toolkit.Graphics.GraphicsDevice,System.IO.Stream,SharpDX.Toolkit.Graphics.TextureFlags,SharpDX.Direct3D11.ResourceUsage)\">\n            <summary>\n            Loads a texture from a stream.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"stream\">The stream to load the texture from.</param>\n            <param name=\"flags\">Sets the texture flags (for unordered access...etc.)</param>\n            <param name=\"usage\">Usage of the resource. Default is <see cref=\"F:SharpDX.Direct3D11.ResourceUsage.Immutable\"/> </param>\n            <returns>A texture</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Texture.Load(SharpDX.Toolkit.Graphics.GraphicsDevice,System.String,SharpDX.Toolkit.Graphics.TextureFlags,SharpDX.Direct3D11.ResourceUsage)\">\n            <summary>\n            Loads a texture from a file.\n            </summary>\n            <param name=\"device\">Specify the <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/> used to load and create a texture from a file.</param>\n            <param name=\"filePath\">The file to load the texture from.</param>\n            <param name=\"flags\">Sets the texture flags (for unordered access...etc.)</param>\n            <param name=\"usage\">Usage of the resource. Default is <see cref=\"F:SharpDX.Direct3D11.ResourceUsage.Immutable\"/> </param>\n            <returns>A texture</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Texture.Save(System.IO.Stream,SharpDX.Toolkit.Graphics.ImageFileType)\">\n            <summary>\n            Saves this texture to a stream with a specified format.\n            </summary>\n            <param name=\"stream\">The stream.</param>\n            <param name=\"fileType\">Type of the image file.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Texture.GetDataAsImage\">\n            <summary>\n            Gets the GPU content of this texture as an <see cref=\"T:SharpDX.Toolkit.Graphics.Image\"/> on the CPU.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Texture.GetDataAsImage(SharpDX.Toolkit.Graphics.Texture)\">\n            <summary>\n            Gets the GPU content of this texture to an <see cref=\"T:SharpDX.Toolkit.Graphics.Image\"/> on the CPU.\n            </summary>\n            <param name=\"stagingTexture\">The staging texture used to temporary transfer the image from the GPU to CPU.</param>\n            <exception cref=\"T:System.ArgumentException\">If stagingTexture is not a staging texture.</exception>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Texture.Save(System.IO.Stream,SharpDX.Toolkit.Graphics.Texture,SharpDX.Toolkit.Graphics.ImageFileType)\">\n            <summary>\n            Saves this texture to a stream with a specified format.\n            </summary>\n            <param name=\"stream\">The stream.</param>\n            <param name=\"stagingTexture\">The staging texture used to temporary transfer the image from the GPU to CPU.</param>\n            <param name=\"fileType\">Type of the image file.</param>\n            <exception cref=\"T:System.ArgumentException\">If stagingTexture is not a staging texture.</exception>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Texture.Save(System.String,SharpDX.Toolkit.Graphics.ImageFileType)\">\n            <summary>\n            Saves this texture to a file with a specified format.\n            </summary>\n            <param name=\"filePath\">The filepath to save the texture to.</param>\n            <param name=\"fileType\">Type of the image file.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Texture.Save(System.String,SharpDX.Toolkit.Graphics.Texture,SharpDX.Toolkit.Graphics.ImageFileType)\">\n            <summary>\n            Saves this texture to a stream with a specified format.\n            </summary>\n            <param name=\"filePath\">The filepath to save the texture to.</param>\n            <param name=\"stagingTexture\">The staging texture used to temporary transfer the image from the GPU to CPU.</param>\n            <param name=\"fileType\">Type of the image file.</param>\n            <exception cref=\"T:System.ArgumentException\">If stagingTexture is not a staging texture.</exception>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Texture.CalculateMipMapCount(SharpDX.Toolkit.Graphics.MipMapCount,System.Int32,System.Int32,System.Int32)\">\n            <summary>\n            Calculates the mip map count from a requested level.\n            </summary>\n            <param name=\"requestedLevel\">The requested level.</param>\n            <param name=\"width\">The width.</param>\n            <param name=\"height\">The height.</param>\n            <param name=\"depth\">The depth.</param>\n            <returns>The resulting mipmap count (clamp to [1, maxMipMapCount] for this texture)</returns>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.Texture.Width\">\n            <summary>\t\n            <dd> <p>Texture width (in texels). The  range is from 1 to <see cref=\"F:SharpDX.Direct3D11.Resource.MaximumTexture1DSize\"/> (16384). However, the range is actually constrained by the feature level at which you create the rendering device. For more information about restrictions, see Remarks.</p> </dd>\t\n            </summary>\t\n            <remarks>\n            This field is valid for all textures: <see cref=\"T:SharpDX.Toolkit.Graphics.Texture1D\"/>, <see cref=\"T:SharpDX.Toolkit.Graphics.Texture2D\"/>, <see cref=\"T:SharpDX.Toolkit.Graphics.Texture3D\"/> and <see cref=\"T:SharpDX.Toolkit.Graphics.TextureCube\"/>.\n            </remarks>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.Texture.Height\">\n            <summary>\t\n            <dd> <p>Texture height (in texels). The  range is from 1 to <see cref=\"F:SharpDX.Direct3D11.Resource.MaximumTexture3DSize\"/> (2048). However, the range is actually constrained by the feature level at which you create the rendering device. For more information about restrictions, see Remarks.</p> </dd>\t\n            </summary>\t\n            <remarks>\n            This field is only valid for <see cref=\"T:SharpDX.Toolkit.Graphics.Texture2D\"/>, <see cref=\"T:SharpDX.Toolkit.Graphics.Texture3D\"/> and <see cref=\"T:SharpDX.Toolkit.Graphics.TextureCube\"/>.\n            </remarks>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.Texture.Depth\">\n            <summary>\t\n            <dd> <p>Texture depth (in texels). The  range is from 1 to <see cref=\"F:SharpDX.Direct3D11.Resource.MaximumTexture3DSize\"/> (2048). However, the range is actually constrained by the feature level at which you create the rendering device. For more information about restrictions, see Remarks.</p> </dd>\t\n            </summary>\t\n            <remarks>\n            This field is only valid for <see cref=\"T:SharpDX.Toolkit.Graphics.Texture3D\"/>.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Texture2DBase.#ctor(SharpDX.Toolkit.Graphics.GraphicsDevice,SharpDX.Direct3D11.Texture2DDescription)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.Texture2DBase\"/> class.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"description2D\">The description.</param>\n            <msdn-id>ff476521</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateTexture2D([In] const D3D11_TEXTURE2D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture2D** ppTexture2D)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateTexture2D</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Texture2DBase.#ctor(SharpDX.Toolkit.Graphics.GraphicsDevice,SharpDX.Direct3D11.Texture2DDescription,SharpDX.DataBox[])\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.Texture2DBase\"/> class.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"description2D\">The description.</param>\n            <param name=\"dataBoxes\">A variable-length parameters list containing data rectangles.</param>\n            <msdn-id>ff476521</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateTexture2D([In] const D3D11_TEXTURE2D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture2D** ppTexture2D)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateTexture2D</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Texture2DBase.#ctor(SharpDX.Toolkit.Graphics.GraphicsDevice,SharpDX.Direct3D11.Texture2D)\">\n            <summary>\n            Specialised constructor for use only by derived classes.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"texture\">The texture.</param>\n            <msdn-id>ff476521</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateTexture2D([In] const D3D11_TEXTURE2D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture2D** ppTexture2D)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateTexture2D</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Texture2DBase.ToStaging\">\n            <summary>\n            Return an equivalent staging texture CPU read-writable from this instance.\n            </summary>\n            <returns></returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Texture2DBase.op_Implicit(SharpDX.Toolkit.Graphics.Texture2DBase)~SharpDX.DXGI.Surface\">\n            <summary>\n            <see cref=\"T:SharpDX.DXGI.Surface\"/> casting operator.\n            </summary>\n            <param name=\"from\">From the Texture1D.</param>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.DepthStencilBuffer.DepthFormat\">\n            <summary>\n            Gets the <see cref=\"T:SharpDX.Toolkit.Graphics.DepthFormat\"/> of this depth stencil buffer.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.DepthStencilBuffer.HasStencil\">\n            <summary>\n            Gets a boolean value indicating if this buffer is supporting stencil.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.DepthStencilBuffer.HasReadOnlyView\">\n            <summary>\n            Gets a boolean value indicating if this buffer is supporting read-only view.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.DepthStencilBuffer.ReadOnlyView\">\n            <summary>\n            Gets a a read-only <see cref=\"T:SharpDX.Direct3D11.DepthStencilView\"/>.\n            </summary>\n            <remarks>\n            This value can be null if not supported by hardware (minimum features level is 11.0)\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.DepthStencilBuffer.op_Implicit(SharpDX.Toolkit.Graphics.DepthStencilBuffer)~SharpDX.Direct3D11.DepthStencilView\">\n            <summary>\n            DepthStencilView casting operator.\n            </summary>\n            <param name=\"buffer\">Source for the.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.DepthStencilBuffer.New(SharpDX.Toolkit.Graphics.GraphicsDevice,SharpDX.Direct3D11.Texture2DDescription)\">\n            <summary>\n            Creates a new <see cref=\"T:SharpDX.Toolkit.Graphics.DepthStencilBuffer\"/> from a <see cref=\"T:SharpDX.Direct3D11.Texture2DDescription\"/>.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"description\">The description.</param>\n            <returns>\n            A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.DepthStencilBuffer\"/> class.\n            </returns>\n            <msdn-id>ff476521</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateTexture2D([In] const D3D11_TEXTURE2D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture2D** ppTexture2D)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateTexture2D</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.DepthStencilBuffer.New(SharpDX.Toolkit.Graphics.GraphicsDevice,SharpDX.Direct3D11.Texture2D)\">\n            <summary>\n            Creates a new <see cref=\"T:SharpDX.Toolkit.Graphics.DepthStencilBuffer\"/> from a <see cref=\"T:SharpDX.Direct3D11.Texture2D\"/>.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"texture\">The native texture <see cref=\"T:SharpDX.Direct3D11.Texture2D\"/>.</param>\n            <returns>\n            A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.DepthStencilBuffer\"/> class.\n            </returns>\n            <msdn-id>ff476521</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateTexture2D([In] const D3D11_TEXTURE2D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture2D** ppTexture2D)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateTexture2D</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.DepthStencilBuffer.New(SharpDX.Toolkit.Graphics.GraphicsDevice,System.Int32,System.Int32,SharpDX.Toolkit.Graphics.DepthFormat,System.Int32)\">\n            <summary>\n            Creates a new <see cref=\"T:SharpDX.Toolkit.Graphics.DepthStencilBuffer\"/>.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"width\">The width.</param>\n            <param name=\"height\">The height.</param>\n            <param name=\"format\">Describes the format to use.</param>\n            <param name=\"arraySize\">Size of the texture 2D array, default to 1.</param>\n            <returns>A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.DepthStencilBuffer\"/> class.</returns>\n            <msdn-id>ff476521</msdn-id>\n              <unmanaged>HRESULT ID3D11Device::CreateTexture2D([In] const D3D11_TEXTURE2D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture2D** ppTexture2D)</unmanaged>\n              <unmanaged-short>ID3D11Device::CreateTexture2D</unmanaged-short>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.DepthStencilBuffer.New(SharpDX.Toolkit.Graphics.GraphicsDevice,System.Int32,System.Int32,SharpDX.Toolkit.Graphics.MSAALevel,SharpDX.Toolkit.Graphics.DepthFormat,System.Int32)\">\n            <summary>\n            Creates a new <see cref=\"T:SharpDX.Toolkit.Graphics.DepthStencilBuffer\"/> using multisampling.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"width\">The width.</param>\n            <param name=\"height\">The height.</param>\n            <param name=\"format\">Describes the format to use.</param>\n            <param name=\"arraySize\">Size of the texture 2D array, default to 1.</param>\n            <param name=\"multiSampleCount\">The multisample count.</param>\n            <returns>A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.DepthStencilBuffer\"/> class.</returns>\n            <msdn-id>ff476521</msdn-id>\n              <unmanaged>HRESULT ID3D11Device::CreateTexture2D([In] const D3D11_TEXTURE2D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture2D** ppTexture2D)</unmanaged>\n              <unmanaged-short>ID3D11Device::CreateTexture2D</unmanaged-short>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.RenderTargetCube\">\n            <summary>\n            A RenderTargetCube frontend to <see cref=\"T:SharpDX.Direct3D11.Texture2D\"/>.\n            </summary>\n            <remarks>\n            This class instantiates a <see cref=\"T:SharpDX.Toolkit.Graphics.Texture2D\"/> with the binding flags <see cref=\"F:SharpDX.Direct3D11.BindFlags.RenderTarget\"/>.\n            This class is also castable to <see cref=\"T:SharpDX.Direct3D11.RenderTargetView\"/>.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.RenderTargetCube.op_Implicit(SharpDX.Toolkit.Graphics.RenderTargetCube)~SharpDX.Direct3D11.RenderTargetView\">\n            <summary>\n            RenderTargetView casting operator.\n            </summary>\n            <param name=\"from\">Source for the.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.RenderTargetCube.New(SharpDX.Toolkit.Graphics.GraphicsDevice,SharpDX.Direct3D11.Texture2DDescription)\">\n            <summary>\n            Creates a new <see cref=\"T:SharpDX.Toolkit.Graphics.RenderTargetCube\"/> from a <see cref=\"T:SharpDX.Direct3D11.Texture2DDescription\"/>.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"description\">The description.</param>\n            <returns>\n            A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.RenderTargetCube\"/> class.\n            </returns>\n            <msdn-id>ff476521</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateTexture2D([In] const D3D11_TEXTURE2D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture2D** ppTexture2D)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateTexture2D</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.RenderTargetCube.New(SharpDX.Toolkit.Graphics.GraphicsDevice,SharpDX.Direct3D11.Texture2D)\">\n            <summary>\n            Creates a new <see cref=\"T:SharpDX.Toolkit.Graphics.RenderTargetCube\"/> from a <see cref=\"T:SharpDX.Direct3D11.Texture2D\"/>.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"texture\">The native texture <see cref=\"T:SharpDX.Direct3D11.Texture2D\"/>.</param>\n            <returns>\n            A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.RenderTargetCube\"/> class.\n            </returns>\n            <msdn-id>ff476521</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateTexture2D([In] const D3D11_TEXTURE2D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture2D** ppTexture2D)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateTexture2D</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.RenderTargetCube.New(SharpDX.Toolkit.Graphics.GraphicsDevice,System.Int32,SharpDX.Toolkit.Graphics.PixelFormat,SharpDX.Toolkit.Graphics.TextureFlags)\">\n            <summary>\n            Creates a new <see cref=\"T:SharpDX.Toolkit.Graphics.RenderTargetCube\"/> with a single mipmap.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"size\">The size (in pixels) of the top-level faces of the cube texture.</param>\n            <param name=\"format\">Describes the format to use.</param>\n            <param name=\"flags\">Sets the texture flags (for unordered access...etc.)</param>\n            <returns>A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.RenderTargetCube\"/> class.</returns>\n            <msdn-id>ff476521</msdn-id>\n              <unmanaged>HRESULT ID3D11Device::CreateTexture2D([In] const D3D11_TEXTURE2D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture2D** ppTexture2D)</unmanaged>\n              <unmanaged-short>ID3D11Device::CreateTexture2D</unmanaged-short>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.RenderTargetCube.New(SharpDX.Toolkit.Graphics.GraphicsDevice,System.Int32,SharpDX.Toolkit.Graphics.MipMapCount,SharpDX.Toolkit.Graphics.PixelFormat,SharpDX.Toolkit.Graphics.TextureFlags)\">\n            <summary>\n            Creates a new <see cref=\"T:SharpDX.Toolkit.Graphics.RenderTargetCube\"/>.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"size\">The size (in pixels) of the top-level faces of the cube texture.</param>\n            <param name=\"mipCount\">Number of mipmaps, set to true to have all mipmaps, set to an int &gt;=1 for a particular mipmap count.</param>\n            <param name=\"format\">Describes the format to use.</param>\n            <param name=\"flags\">Sets the texture flags (for unordered access...etc.)</param>\n            <returns>A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.RenderTargetCube\"/> class.</returns>\n            <msdn-id>ff476521</msdn-id>\n              <unmanaged>HRESULT ID3D11Device::CreateTexture2D([In] const D3D11_TEXTURE2D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture2D** ppTexture2D)</unmanaged>\n              <unmanaged-short>ID3D11Device::CreateTexture2D</unmanaged-short>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.MipMapCount\">\n            <summary>\n            A simple wrapper to specify number of mipmaps.\n             Set to true to specify all mipmaps or sets an integer value >= 1\n            to specify the exact number of mipmaps.\n            </summary>\n            <remarks>\n            This structure use implicit conversion:\n            <ul>\n            <li>Set to <c>true</c> to specify all mipmaps.</li>\n            <li>Set to <c>false</c> to specify a single mipmap.</li>\n            <li>Set to an integer value >=1 to specify an exact count of mipmaps.</li>\n            </ul>\n            </remarks>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.MipMapCount.Auto\">\n            <summary>\n            Automatic mipmap level based on texture size.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.MipMapCount.#ctor(System.Boolean)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.MipMapCount\"/> struct.\n            </summary>\n            <param name=\"allMipMaps\">if set to <c>true</c> generates all mip maps.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.MipMapCount.#ctor(System.Int32)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.MipMapCount\"/> struct.\n            </summary>\n            <param name=\"count\">The count.</param>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.MipMapCount.Count\">\n            <summary>\n            Number of mipmaps.\n            </summary>\n            <remarks>\n            Zero(0) means generate all mipmaps. One(1) generates a single mipmap... etc.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.MipMapCount.op_Implicit(SharpDX.Toolkit.Graphics.MipMapCount)~System.Boolean\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:SharpDX.Toolkit.Graphics.MipMapCount\"/> to <see cref=\"T:System.Boolean\"/>.\n            </summary>\n            <param name=\"mipMap\">The value.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.MipMapCount.op_Implicit(System.Boolean)~SharpDX.Toolkit.Graphics.MipMapCount\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.Boolean\"/> to <see cref=\"T:SharpDX.Toolkit.Graphics.MipMapCount\"/>.\n            </summary>\n            <param name=\"mipMapAll\">True to generate all mipmaps, false to use a single mipmap.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.MipMapCount.op_Implicit(SharpDX.Toolkit.Graphics.MipMapCount)~System.Int32\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:SharpDX.Toolkit.Graphics.MipMapCount\"/> to <see cref=\"T:System.Int32\"/>.\n            </summary>\n            <param name=\"mipMap\">The value.</param>\n            <returns>The count of mipmap (0 means all mipmaps).</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.MipMapCount.op_Implicit(System.Int32)~SharpDX.Toolkit.Graphics.MipMapCount\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.Int32\"/> to <see cref=\"T:SharpDX.Toolkit.Graphics.MipMapCount\"/>.\n            </summary>\n            <param name=\"mipMapCount\">True to generate all mipmaps, false to use a single mipmap.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.MSAALevel\">\n            <summary>\n            Multisample count level.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.MSAALevel.None\">\n            <summary>\n            No multisample.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.MSAALevel.X2\">\n            <summary>\n            Multisample count of 2 pixels.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.MSAALevel.X4\">\n            <summary>\n            Multisample count of 4 pixels.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.MSAALevel.X8\">\n            <summary>\n            Multisample count of 8 pixels.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.Texture2D\">\n            <summary>\n            A Texture 2D frontend to <see cref=\"T:SharpDX.Direct3D11.Texture2D\"/>.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Texture2D.Clone\">\n            <summary>\n            Makes a copy of this texture.\n            </summary>\n            <remarks>\n            This method doesn't copy the content of the texture.\n            </remarks>\n            <returns>\n            A copy of this texture.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Texture2D.New(SharpDX.Toolkit.Graphics.GraphicsDevice,SharpDX.Direct3D11.Texture2DDescription)\">\n            <summary>\n            Creates a new texture from a <see cref=\"T:SharpDX.Direct3D11.Texture2DDescription\"/>.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"description\">The description.</param>\n            <returns>\n            A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.Texture2D\"/> class.\n            </returns>\n            <msdn-id>ff476521</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateTexture2D([In] const D3D11_TEXTURE2D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture2D** ppTexture2D)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateTexture2D</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Texture2D.New(SharpDX.Toolkit.Graphics.GraphicsDevice,SharpDX.Direct3D11.Texture2D)\">\n            <summary>\n            Creates a new texture from a <see cref=\"T:SharpDX.Direct3D11.Texture2D\"/>.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"texture\">The native texture <see cref=\"T:SharpDX.Direct3D11.Texture2D\"/>.</param>\n            <returns>\n            A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.Texture2D\"/> class.\n            </returns>\n            <msdn-id>ff476521</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateTexture2D([In] const D3D11_TEXTURE2D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture2D** ppTexture2D)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateTexture2D</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Texture2D.New(SharpDX.Toolkit.Graphics.GraphicsDevice,System.Int32,System.Int32,SharpDX.Toolkit.Graphics.PixelFormat,SharpDX.Toolkit.Graphics.TextureFlags,System.Int32,SharpDX.Direct3D11.ResourceUsage)\">\n            <summary>\n            Creates a new <see cref=\"T:SharpDX.Toolkit.Graphics.Texture2D\"/> with a single mipmap.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"width\">The width.</param>\n            <param name=\"height\">The height.</param>\n            <param name=\"format\">Describes the format to use.</param>\n            <param name=\"flags\">Sets the texture flags (for unordered access...etc.)</param>\n            <param name=\"arraySize\">Size of the texture 2D array, default to 1.</param>\n            <param name=\"usage\">The usage.</param>\n            <returns>A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.Texture2D\"/> class.</returns>\n            <msdn-id>ff476521</msdn-id>\n              <unmanaged>HRESULT ID3D11Device::CreateTexture2D([In] const D3D11_TEXTURE2D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture2D** ppTexture2D)</unmanaged>\n              <unmanaged-short>ID3D11Device::CreateTexture2D</unmanaged-short>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Texture2D.New(SharpDX.Toolkit.Graphics.GraphicsDevice,System.Int32,System.Int32,SharpDX.Toolkit.Graphics.MipMapCount,SharpDX.Toolkit.Graphics.PixelFormat,SharpDX.Toolkit.Graphics.TextureFlags,System.Int32,SharpDX.Direct3D11.ResourceUsage)\">\n            <summary>\n            Creates a new <see cref=\"T:SharpDX.Toolkit.Graphics.Texture2D\"/>.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"width\">The width.</param>\n            <param name=\"height\">The height.</param>\n            <param name=\"format\">Describes the format to use.</param>\n            <param name=\"mipCount\">Number of mipmaps, set to true to have all mipmaps, set to an int &gt;=1 for a particular mipmap count.</param>\n            <param name=\"flags\">Sets the texture flags (for unordered access...etc.)</param>\n            <param name=\"arraySize\">Size of the texture 2D array, default to 1.</param>\n            <param name=\"usage\">The usage.</param>\n            <returns>A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.Texture2D\"/> class.</returns>\n            <msdn-id>ff476521</msdn-id>\n              <unmanaged>HRESULT ID3D11Device::CreateTexture2D([In] const D3D11_TEXTURE2D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture2D** ppTexture2D)</unmanaged>\n              <unmanaged-short>ID3D11Device::CreateTexture2D</unmanaged-short>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Texture2D.New``1(SharpDX.Toolkit.Graphics.GraphicsDevice,System.Int32,System.Int32,SharpDX.Toolkit.Graphics.PixelFormat,``0[],SharpDX.Toolkit.Graphics.TextureFlags,SharpDX.Direct3D11.ResourceUsage)\">\n            <summary>\n            Creates a new <see cref=\"T:SharpDX.Toolkit.Graphics.Texture2D\"/> with a single level of mipmap.\n            </summary>\n            <typeparam name=\"T\">Type of the pixel data to upload to the texture.</typeparam>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"width\">The width.</param>\n            <param name=\"height\">The height.</param>\n            <param name=\"format\">Describes the format to use.</param>\n            <param name=\"usage\">The usage.</param>\n            <param name=\"flags\">Sets the texture flags (for unordered access...etc.)</param>\n            <param name=\"textureData\">The texture data for a single mipmap and a single array slice. See remarks</param>\n            <returns>A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.Texture2D\"/> class.</returns>\n            <msdn-id>ff476521</msdn-id>\n              <unmanaged>HRESULT ID3D11Device::CreateTexture2D([In] const D3D11_TEXTURE2D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture2D** ppTexture2D)</unmanaged>\n              <unmanaged-short>ID3D11Device::CreateTexture2D</unmanaged-short>\n            <remarks>\n            Each value in textureData is a pixel in the destination texture.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Texture2D.New(SharpDX.Toolkit.Graphics.GraphicsDevice,System.Int32,System.Int32,SharpDX.Toolkit.Graphics.MipMapCount,SharpDX.Toolkit.Graphics.PixelFormat,SharpDX.DataBox[],SharpDX.Toolkit.Graphics.TextureFlags,System.Int32,SharpDX.Direct3D11.ResourceUsage)\">\n            <summary>\n            Creates a new <see cref=\"T:SharpDX.Toolkit.Graphics.Texture2D\"/>.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"width\">The width.</param>\n            <param name=\"height\">The height.</param>\n            <param name=\"format\">Describes the format to use.</param>\n            <param name=\"mipCount\">Number of mipmaps, set to true to have all mipmaps, set to an int &gt;=1 for a particular mipmap count.</param>\n            <param name=\"textureData\">Texture datas through an array of <see cref=\"T:SharpDX.DataBox\"/> </param>\n            <param name=\"flags\">Sets the texture flags (for unordered access...etc.)</param>\n            <param name=\"arraySize\">Size of the texture 2D array, default to 1.</param>\n            <param name=\"usage\">The usage.</param>\n            <returns>A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.Texture2D\"/> class.</returns>\n            <msdn-id>ff476521</msdn-id>\n              <unmanaged>HRESULT ID3D11Device::CreateTexture2D([In] const D3D11_TEXTURE2D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture2D** ppTexture2D)</unmanaged>\n              <unmanaged-short>ID3D11Device::CreateTexture2D</unmanaged-short>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Texture2D.New(SharpDX.Toolkit.Graphics.GraphicsDevice,SharpDX.Toolkit.Graphics.Image,SharpDX.Toolkit.Graphics.TextureFlags,SharpDX.Direct3D11.ResourceUsage)\">\n            <summary>\n            Creates a new <see cref=\"T:SharpDX.Toolkit.Graphics.Texture2D\"/> directly from an <see cref=\"T:SharpDX.Toolkit.Graphics.Image\"/>.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"image\">An image in CPU memory.</param>\n            <param name=\"flags\">Sets the texture flags (for unordered access...etc.)</param>\n            <param name=\"usage\">The usage.</param>\n            <returns>A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.Texture2D\"/> class.</returns>\n            <msdn-id>ff476521</msdn-id>\n            <unmanaged>HRESULT ID3D11Device::CreateTexture2D([In] const D3D11_TEXTURE2D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture2D** ppTexture2D)</unmanaged>\n            <unmanaged-short>ID3D11Device::CreateTexture2D</unmanaged-short>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Texture2D.Load(SharpDX.Toolkit.Graphics.GraphicsDevice,System.IO.Stream,SharpDX.Toolkit.Graphics.TextureFlags,SharpDX.Direct3D11.ResourceUsage)\">\n            <summary>\n            Loads a 2D texture from a stream.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"stream\">The stream to load the texture from.</param>\n            <param name=\"flags\">Sets the texture flags (for unordered access...etc.)</param>\n            <param name=\"usage\">Usage of the resource. Default is <see cref=\"F:SharpDX.Direct3D11.ResourceUsage.Immutable\"/> </param>\n            <exception cref=\"T:System.ArgumentException\">If the texture is not of type 2D</exception>\n            <returns>A texture</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Texture2D.Load(SharpDX.Toolkit.Graphics.GraphicsDevice,System.String,SharpDX.Toolkit.Graphics.TextureFlags,SharpDX.Direct3D11.ResourceUsage)\">\n            <summary>\n            Loads a 2D texture from a stream.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"filePath\">The file to load the texture from.</param>\n            <param name=\"flags\">Sets the texture flags (for unordered access...etc.)</param>\n            <param name=\"usage\">Usage of the resource. Default is <see cref=\"F:SharpDX.Direct3D11.ResourceUsage.Immutable\"/> </param>\n            <exception cref=\"T:System.ArgumentException\">If the texture is not of type 2D</exception>\n            <returns>A texture</returns>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.RenderTarget3D\">\n            <summary>\n            A RenderTarget3D frontend to <see cref=\"T:SharpDX.Direct3D11.Texture3D\"/>.\n            </summary>\n            <remarks>\n            This class instantiates a <see cref=\"T:SharpDX.Toolkit.Graphics.Texture3D\"/> with the binding flags <see cref=\"F:SharpDX.Direct3D11.BindFlags.RenderTarget\"/>.\n            This class is also castable to <see cref=\"T:SharpDX.Direct3D11.RenderTargetView\"/>.\n            </remarks>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.Texture3DBase\">\n            <summary>\n            Abstract class frontend to <see cref=\"T:SharpDX.Direct3D11.Texture3D\"/>.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Texture3DBase.#ctor(SharpDX.Toolkit.Graphics.GraphicsDevice,SharpDX.Direct3D11.Texture3DDescription)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.Texture3DBase\"/> class.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"description3D\">The description.</param>\n            <msdn-id>ff476522</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateTexture3D([In] const D3D11_TEXTURE3D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture3D** ppTexture3D)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateTexture3D</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Texture3DBase.#ctor(SharpDX.Toolkit.Graphics.GraphicsDevice,SharpDX.Direct3D11.Texture3DDescription,SharpDX.DataBox[])\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.Texture3DBase\"/> class.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"description3D\">The description.</param>\n            <param name=\"dataRectangles\">A variable-length parameters list containing data rectangles.</param>\n            <msdn-id>ff476522</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateTexture3D([In] const D3D11_TEXTURE3D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture3D** ppTexture3D)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateTexture3D</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Texture3DBase.#ctor(SharpDX.Toolkit.Graphics.GraphicsDevice,SharpDX.Direct3D11.Texture3D)\">\n            <summary>\n            Specialised constructor for use only by derived classes.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"texture\">The texture.</param>\n            <msdn-id>ff476522</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateTexture3D([In] const D3D11_TEXTURE3D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture3D** ppTexture3D)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateTexture3D</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Texture3DBase.ToStaging\">\n            <summary>\n            Return an equivalent staging texture CPU read-writable from this instance.\n            </summary>\n            <returns></returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.RenderTarget3D.op_Implicit(SharpDX.Toolkit.Graphics.RenderTarget3D)~SharpDX.Direct3D11.RenderTargetView\">\n            <summary>\n            RenderTargetView casting operator.\n            </summary>\n            <param name=\"from\">Source for the.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.RenderTarget3D.New(SharpDX.Toolkit.Graphics.GraphicsDevice,SharpDX.Direct3D11.Texture3DDescription)\">\n            <summary>\n            Creates a new <see cref=\"T:SharpDX.Toolkit.Graphics.RenderTarget3D\"/> from a <see cref=\"T:SharpDX.Direct3D11.Texture3DDescription\"/>.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"description\">The description.</param>\n            <returns>\n            A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.RenderTarget3D\"/> class.\n            </returns>\n            <msdn-id>ff476521</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateTexture3D([In] const D3D11_TEXTURE3D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture3D** ppTexture3D)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateTexture3D</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.RenderTarget3D.New(SharpDX.Toolkit.Graphics.GraphicsDevice,SharpDX.Direct3D11.Texture3D)\">\n            <summary>\n            Creates a new <see cref=\"T:SharpDX.Toolkit.Graphics.RenderTarget3D\"/> from a <see cref=\"T:SharpDX.Direct3D11.Texture3D\"/>.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"texture\">The native texture <see cref=\"T:SharpDX.Direct3D11.Texture3D\"/>.</param>\n            <returns>\n            A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.RenderTarget3D\"/> class.\n            </returns>\n            <msdn-id>ff476521</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateTexture3D([In] const D3D11_TEXTURE3D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture3D** ppTexture3D)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateTexture3D</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.RenderTarget3D.New(SharpDX.Toolkit.Graphics.GraphicsDevice,System.Int32,System.Int32,System.Int32,SharpDX.Toolkit.Graphics.PixelFormat,SharpDX.Toolkit.Graphics.TextureFlags,System.Int32)\">\n            <summary>\n            Creates a new <see cref=\"T:SharpDX.Toolkit.Graphics.RenderTarget3D\"/> with a single mipmap.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"width\">The width.</param>\n            <param name=\"height\">The height.</param>\n            <param name=\"depth\">The depth.</param>\n            <param name=\"format\">Describes the format to use.</param>\n            <param name=\"flags\">Sets the texture flags (for unordered access...etc.)</param>\n            <param name=\"arraySize\">Size of the texture 3D array, default to 1.</param>\n            <returns>A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.RenderTarget3D\"/> class.</returns>\n            <msdn-id>ff476521</msdn-id>\n              <unmanaged>HRESULT ID3D11Device::CreateTexture3D([In] const D3D11_TEXTURE3D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture3D** ppTexture3D)</unmanaged>\n              <unmanaged-short>ID3D11Device::CreateTexture3D</unmanaged-short>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.RenderTarget3D.New(SharpDX.Toolkit.Graphics.GraphicsDevice,System.Int32,System.Int32,System.Int32,SharpDX.Toolkit.Graphics.MipMapCount,SharpDX.Toolkit.Graphics.PixelFormat,SharpDX.Toolkit.Graphics.TextureFlags,System.Int32)\">\n            <summary>\n            Creates a new <see cref=\"T:SharpDX.Toolkit.Graphics.RenderTarget3D\"/>.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"width\">The width.</param>\n            <param name=\"height\">The height.</param>\n            <param name=\"depth\">The depth.</param>\n            <param name=\"mipCount\">Number of mipmaps, set to true to have all mipmaps, set to an int &gt;=1 for a particular mipmap count.</param>\n            <param name=\"format\">Describes the format to use.</param>\n            <param name=\"flags\">Sets the texture flags (for unordered access...etc.)</param>\n            <param name=\"arraySize\">Size of the texture 3D array, default to 1.</param>\n            <returns>A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.RenderTarget3D\"/> class.</returns>\n            <msdn-id>ff476521</msdn-id>\n              <unmanaged>HRESULT ID3D11Device::CreateTexture3D([In] const D3D11_TEXTURE3D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture3D** ppTexture3D)</unmanaged>\n              <unmanaged-short>ID3D11Device::CreateTexture3D</unmanaged-short>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.GraphicsDeviceFeatures\">\n            <summary>\n            Features supported by a <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.\n            </summary>\n            <remarks>\n            This class gives also features for a particular format, using the operator this[dxgiFormat] on this structure.\n            </remarks>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.GraphicsDeviceFeatures.ObsoleteFormatToExcludes\">\n            <summary>\n            <see cref=\"T:SharpDX.DXGI.Format\"/> to exclude from the features test.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.GraphicsDeviceFeatures.Level\">\n            <summary>\n            Features level of the current device.\n            </summary>\n            <msdn-id>ff476528</msdn-id>\t\n            <unmanaged>GetFeatureLevel</unmanaged>\t\n            <unmanaged-short>GetFeatureLevel</unmanaged-short>\t\n            <unmanaged>D3D_FEATURE_LEVEL ID3D11Device::GetFeatureLevel()</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.GraphicsDeviceFeatures.HasComputeShaders\">\n            <summary>\n            Boolean indicating if this device supports compute shaders, unordered access on structured buffers and raw structured buffers.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.GraphicsDeviceFeatures.HasDoublePrecision\">\n            <summary>\n            Boolean indicating if this device supports shaders double precision calculations.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.GraphicsDeviceFeatures.HasMultiThreadingConcurrentResources\">\n            <summary>\n            Boolean indicating if this device supports concurrent resources in multithreading scenarios.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.GraphicsDeviceFeatures.HasDriverCommandLists\">\n            <summary>\n            Boolean indicating if this device supports command lists in multithreading scenarios.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.GraphicsDeviceFeatures.GetMaximumMSAASampleCount(SharpDX.Direct3D11.Device,SharpDX.Toolkit.Graphics.PixelFormat)\">\n            <summary>\n            Gets the maximum MSAA sample count for a particular <see cref=\"T:SharpDX.Toolkit.Graphics.PixelFormat\"/>.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"pixelFormat\">The pixelFormat.</param>\n            <returns>The maximum multisample count for this pixel pixelFormat</returns>\n            <msdn-id>ff476499</msdn-id>\n              <unmanaged>HRESULT ID3D11Device::CheckMultisampleQualityLevels([In] DXGI_FORMAT Format,[In] unsigned int SampleCount,[Out] unsigned int* pNumQualityLevels)</unmanaged>\n              <unmanaged-short>ID3D11Device::CheckMultisampleQualityLevels</unmanaged-short>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.GraphicsDeviceFeatures.Item(SharpDX.DXGI.Format)\">\n            <summary>\n            Gets the <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDeviceFeatures.FeaturesPerFormat\"/> for the specified <see cref=\"T:SharpDX.DXGI.Format\"/>.\n            </summary>\n            <param name=\"dxgiFormat\">The dxgi format.</param>\n            <returns>Features for the specific format.</returns>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.GraphicsDeviceFeatures.FeaturesPerFormat\">\n            <summary>\n            The features exposed for a particular format.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.GraphicsDeviceFeatures.FeaturesPerFormat.Format\">\n            <summary>\n            The <see cref=\"T:SharpDX.DXGI.Format\"/>.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.GraphicsDeviceFeatures.FeaturesPerFormat.MSAALevelMax\">\n            <summary>\n            Gets the maximum MSAA sample count for a particular <see cref=\"T:SharpDX.Toolkit.Graphics.PixelFormat\"/>.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.GraphicsDeviceFeatures.FeaturesPerFormat.ComputeShaderFormatSupport\">\n            <summary>\t\n            Gets the unordered resource support options for a compute shader resource.\t\n            </summary>\t\n            <msdn-id>ff476135</msdn-id>\t\n            <unmanaged>D3D11_FORMAT_SUPPORT2</unmanaged>\t\n            <unmanaged-short>D3D11_FORMAT_SUPPORT2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.GraphicsDeviceFeatures.FeaturesPerFormat.FormatSupport\">\n            <summary>\n            Support of a given format on the installed video device.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.RenderTarget1D\">\n            <summary>\n            A RenderTarget1D frontend to <see cref=\"T:SharpDX.Direct3D11.Texture1D\"/>.\n            </summary>\n            <remarks>\n            This class instantiates a <see cref=\"T:SharpDX.Toolkit.Graphics.Texture1D\"/> with the binding flags <see cref=\"F:SharpDX.Direct3D11.BindFlags.RenderTarget\"/>.\n            This class is also castable to <see cref=\"T:SharpDX.Direct3D11.RenderTargetView\"/>.\n            </remarks>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.Texture1DBase\">\n            <summary>\n            Abstract class frontend to <see cref=\"T:SharpDX.Direct3D11.Texture1D\"/>.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Texture1DBase.#ctor(SharpDX.Toolkit.Graphics.GraphicsDevice,SharpDX.Direct3D11.Texture1DDescription)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.Texture1DBase\"/> class.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"description1D\">The description.</param>\n            <msdn-id>ff476520</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateTexture1D([In] const D3D11_TEXTURE1D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture1D** ppTexture1D)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateTexture1D</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Texture1DBase.#ctor(SharpDX.Toolkit.Graphics.GraphicsDevice,SharpDX.Direct3D11.Texture1DDescription,SharpDX.DataBox[])\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.Texture1DBase\"/> class.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"description1D\">The description.</param>\n            <param name=\"dataBox\">A variable-length parameters list containing data rectangles.</param>\n            <msdn-id>ff476520</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateTexture1D([In] const D3D11_TEXTURE1D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture1D** ppTexture1D)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateTexture1D</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Texture1DBase.#ctor(SharpDX.Toolkit.Graphics.GraphicsDevice,SharpDX.Direct3D11.Texture1D)\">\n            <summary>\n            Specialised constructor for use only by derived classes.\n            </summary>\n            <param name=\"device\">The device.</param>\n            <param name=\"texture\">The texture.</param>\n            <msdn-id>ff476520</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateTexture1D([In] const D3D11_TEXTURE1D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture1D** ppTexture1D)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateTexture1D</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Texture1DBase.ToStaging\">\n            <summary>\n            Return an equivalent staging texture CPU read-writable from this instance.\n            </summary>\n            <returns></returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Texture1DBase.op_Implicit(SharpDX.Toolkit.Graphics.Texture1DBase)~SharpDX.DXGI.Surface\">\n            <summary>\n            <see cref=\"T:SharpDX.DXGI.Surface\"/> casting operator.\n            </summary>\n            <param name=\"from\">From the Texture1D.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.RenderTarget1D.op_Implicit(SharpDX.Toolkit.Graphics.RenderTarget1D)~SharpDX.Direct3D11.RenderTargetView\">\n            <summary>\n            RenderTargetView casting operator.\n            </summary>\n            <param name=\"from\">Source for the.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.RenderTarget1D.New(SharpDX.Toolkit.Graphics.GraphicsDevice,SharpDX.Direct3D11.Texture1DDescription)\">\n            <summary>\n            Creates a new <see cref=\"T:SharpDX.Toolkit.Graphics.RenderTarget1D\"/> from a <see cref=\"T:SharpDX.Direct3D11.Texture1DDescription\"/>.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"description\">The description.</param>\n            <returns>\n            A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.RenderTarget1D\"/> class.\n            </returns>\n            <msdn-id>ff476520</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateTexture1D([In] const D3D11_TEXTURE1D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture1D** ppTexture1D)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateTexture1D</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.RenderTarget1D.New(SharpDX.Toolkit.Graphics.GraphicsDevice,SharpDX.Direct3D11.Texture1D)\">\n            <summary>\n            Creates a new <see cref=\"T:SharpDX.Toolkit.Graphics.RenderTarget1D\"/> from a <see cref=\"T:SharpDX.Direct3D11.Texture1D\"/>.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"texture\">The native texture <see cref=\"T:SharpDX.Direct3D11.Texture1D\"/>.</param>\n            <returns>\n            A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.RenderTarget1D\"/> class.\n            </returns>\n            <msdn-id>ff476520</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateTexture1D([In] const D3D11_TEXTURE1D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture1D** ppTexture1D)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateTexture1D</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.RenderTarget1D.New(SharpDX.Toolkit.Graphics.GraphicsDevice,System.Int32,SharpDX.Toolkit.Graphics.PixelFormat,SharpDX.Toolkit.Graphics.TextureFlags,System.Int32)\">\n            <summary>\n            Creates a new <see cref=\"T:SharpDX.Toolkit.Graphics.RenderTarget1D\"/> with a single mipmap.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"width\">The width.</param>\n            <param name=\"format\">Describes the format to use.</param>\n            <param name=\"flags\">Sets the texture flags (for unordered access...etc.)</param>\n            <param name=\"arraySize\">Size of the texture 1D array, default to 1.</param>\n            <returns>A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.RenderTarget1D\"/> class.</returns>\n            <msdn-id>ff476520</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateTexture1D([In] const D3D11_TEXTURE1D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture1D** ppTexture1D)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateTexture1D</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.RenderTarget1D.New(SharpDX.Toolkit.Graphics.GraphicsDevice,System.Int32,SharpDX.Toolkit.Graphics.MipMapCount,SharpDX.Toolkit.Graphics.PixelFormat,SharpDX.Toolkit.Graphics.TextureFlags,System.Int32)\">\n            <summary>\n            Creates a new <see cref=\"T:SharpDX.Toolkit.Graphics.RenderTarget1D\"/>.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"width\">The width.</param>\n            <param name=\"mipCount\">Number of mipmaps, set to true to have all mipmaps, set to an int &gt;=1 for a particular mipmap count.</param>\n            <param name=\"format\">Describes the format to use.</param>\n            <param name=\"flags\">Sets the texture flags (for unordered access...etc.)</param>\n            <param name=\"arraySize\">Size of the texture 1D array, default to 1.</param>\n            <returns>A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.RenderTarget1D\"/> class.</returns>\n            <msdn-id>ff476520</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateTexture1D([In] const D3D11_TEXTURE1D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture1D** ppTexture1D)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateTexture1D</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.Texture3D\">\n            <summary>\n            A Texture 3D frontend to <see cref=\"T:SharpDX.Direct3D11.Texture3D\"/>.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Texture3D.Clone\">\n            <summary>\n            Makes a copy of this texture.\n            </summary>\n            <remarks>\n            This method doesn't copy the content of the texture.\n            </remarks>\n            <returns>\n            A copy of this texture.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Texture3D.New(SharpDX.Toolkit.Graphics.GraphicsDevice,SharpDX.Direct3D11.Texture3DDescription)\">\n            <summary>\n            Creates a new texture from a <see cref=\"T:SharpDX.Direct3D11.Texture3DDescription\"/>.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"description\">The description.</param>\n            <returns>\n            A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.Texture3D\"/> class.\n            </returns>\n            <msdn-id>ff476522</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateTexture3D([In] const D3D11_TEXTURE3D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture3D** ppTexture3D)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateTexture3D</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Texture3D.New(SharpDX.Toolkit.Graphics.GraphicsDevice,SharpDX.Direct3D11.Texture3D)\">\n            <summary>\n            Creates a new texture from a <see cref=\"T:SharpDX.Direct3D11.Texture3D\"/>.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"texture\">The native texture <see cref=\"T:SharpDX.Direct3D11.Texture3D\"/>.</param>\n            <returns>\n            A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.Texture3D\"/> class.\n            </returns>\n            <msdn-id>ff476522</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateTexture3D([In] const D3D11_TEXTURE3D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture3D** ppTexture3D)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateTexture3D</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Texture3D.New(SharpDX.Toolkit.Graphics.GraphicsDevice,System.Int32,System.Int32,System.Int32,SharpDX.Toolkit.Graphics.PixelFormat,SharpDX.Toolkit.Graphics.TextureFlags,SharpDX.Direct3D11.ResourceUsage)\">\n            <summary>\n            Creates a new <see cref=\"T:SharpDX.Toolkit.Graphics.Texture3D\"/> with a single mipmap.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"width\">The width.</param>\n            <param name=\"height\">The height.</param>\n            <param name=\"depth\">The depth.</param>\n            <param name=\"format\">Describes the format to use.</param>\n            <param name=\"usage\">The usage.</param>\n            <param name=\"flags\">Sets the texture flags (for unordered access...etc.)</param>\n            <returns>\n            A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.Texture3D\"/> class.\n            </returns>\n            <msdn-id>ff476522</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateTexture3D([In] const D3D11_TEXTURE3D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture3D** ppTexture3D)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateTexture3D</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Texture3D.New(SharpDX.Toolkit.Graphics.GraphicsDevice,System.Int32,System.Int32,System.Int32,SharpDX.Toolkit.Graphics.MipMapCount,SharpDX.Toolkit.Graphics.PixelFormat,SharpDX.Toolkit.Graphics.TextureFlags,SharpDX.Direct3D11.ResourceUsage)\">\n            <summary>\n            Creates a new <see cref=\"T:SharpDX.Toolkit.Graphics.Texture3D\"/>.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"width\">The width.</param>\n            <param name=\"height\">The height.</param>\n            <param name=\"depth\">The depth.</param>\n            <param name=\"mipCount\">Number of mipmaps, set to true to have all mipmaps, set to an int &gt;=1 for a particular mipmap count.</param>\n            <param name=\"format\">Describes the format to use.</param>\n            <param name=\"usage\">The usage.</param>\n            <param name=\"flags\">Sets the texture flags (for unordered access...etc.)</param>\n            <returns>\n            A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.Texture3D\"/> class.\n            </returns>\n            <msdn-id>ff476522</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateTexture3D([In] const D3D11_TEXTURE3D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture3D** ppTexture3D)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateTexture3D</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Texture3D.New``1(SharpDX.Toolkit.Graphics.GraphicsDevice,System.Int32,System.Int32,System.Int32,SharpDX.Toolkit.Graphics.PixelFormat,``0[],SharpDX.Toolkit.Graphics.TextureFlags,SharpDX.Direct3D11.ResourceUsage)\">\n            <summary>\n            Creates a new <see cref=\"T:SharpDX.Toolkit.Graphics.Texture3D\"/> with texture data for the firs map.\n            </summary>\n            <typeparam name=\"T\">Type of the data to upload to the texture</typeparam>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"width\">The width.</param>\n            <param name=\"height\">The height.</param>\n            <param name=\"depth\">The depth.</param>\n            <param name=\"format\">Describes the format to use.</param>\n            <param name=\"usage\">The usage.</param>\n            <param name=\"textureData\">The texture data, width * height * depth datas </param>\n            <param name=\"flags\">Sets the texture flags (for unordered access...etc.)</param>\n            <returns>A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.Texture3D\"/> class.</returns>\n            <remarks>\n            The first dimension of mipMapTextures describes the number of is an array ot Texture3D Array\n            </remarks>\n            <msdn-id>ff476522</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateTexture3D([In] const D3D11_TEXTURE3D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture3D** ppTexture3D)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateTexture3D</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Texture3D.New(SharpDX.Toolkit.Graphics.GraphicsDevice,System.Int32,System.Int32,System.Int32,SharpDX.Toolkit.Graphics.MipMapCount,SharpDX.Toolkit.Graphics.PixelFormat,SharpDX.DataBox[],SharpDX.Toolkit.Graphics.TextureFlags,SharpDX.Direct3D11.ResourceUsage)\">\n            <summary>\n            Creates a new <see cref=\"T:SharpDX.Toolkit.Graphics.Texture3D\"/>.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"width\">The width.</param>\n            <param name=\"height\">The height.</param>\n            <param name=\"depth\">The depth.</param>\n            <param name=\"mipCount\">Number of mipmaps, set to true to have all mipmaps, set to an int &gt;=1 for a particular mipmap count.</param>\n            <param name=\"format\">Describes the format to use.</param>\n            <param name=\"usage\">The usage.</param>\n            <param name=\"textureData\">DataBox used to fill texture data.</param>\n            <param name=\"flags\">Sets the texture flags (for unordered access...etc.)</param>\n            <returns>\n            A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.Texture3D\"/> class.\n            </returns>\n            <msdn-id>ff476522</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateTexture3D([In] const D3D11_TEXTURE3D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture3D** ppTexture3D)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateTexture3D</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Texture3D.New(SharpDX.Toolkit.Graphics.GraphicsDevice,SharpDX.Toolkit.Graphics.Image,SharpDX.Toolkit.Graphics.TextureFlags,SharpDX.Direct3D11.ResourceUsage)\">\n            <summary>\n            Creates a new <see cref=\"T:SharpDX.Toolkit.Graphics.Texture3D\"/> directly from an <see cref=\"T:SharpDX.Toolkit.Graphics.Image\"/>.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"image\">An image in CPU memory.</param>\n            <param name=\"flags\">Sets the texture flags (for unordered access...etc.)</param>\n            <param name=\"usage\">The usage.</param>\n            <returns>A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.Texture3D\"/> class.</returns>\n            <msdn-id>ff476522</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateTexture3D([In] const D3D11_TEXTURE3D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture3D** ppTexture3D)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateTexture3D</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Texture3D.Load(SharpDX.Toolkit.Graphics.GraphicsDevice,System.IO.Stream,SharpDX.Toolkit.Graphics.TextureFlags,SharpDX.Direct3D11.ResourceUsage)\">\n            <summary>\n            Loads a 3D texture from a stream.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"stream\">The stream to load the texture from.</param>\n            <param name=\"flags\">Sets the texture flags (for unordered access...etc.)</param>\n            <param name=\"usage\">Usage of the resource. Default is <see cref=\"F:SharpDX.Direct3D11.ResourceUsage.Immutable\"/> </param>\n            <exception cref=\"T:System.ArgumentException\">If the texture is not of type 3D</exception>\n            <returns>A texture</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Texture3D.Load(SharpDX.Toolkit.Graphics.GraphicsDevice,System.String,SharpDX.Toolkit.Graphics.TextureFlags,SharpDX.Direct3D11.ResourceUsage)\">\n            <summary>\n            Loads a 3D texture from a stream.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"filePath\">The file to load the texture from.</param>\n            <param name=\"flags\">Sets the texture flags (for unordered access...etc.)</param>\n            <param name=\"usage\">Usage of the resource. Default is <see cref=\"F:SharpDX.Direct3D11.ResourceUsage.Immutable\"/> </param>\n            <exception cref=\"T:System.ArgumentException\">If the texture is not of type 3D</exception>\n            <returns>A texture</returns>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.Texture1D\">\n            <summary>\n            A Texture 1D frontend to <see cref=\"T:SharpDX.Direct3D11.Texture1D\"/>.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Texture1D.Clone\">\n            <summary>\n            Makes a copy of this texture.\n            </summary>\n            <remarks>\n            This method doesn't copy the content of the texture.\n            </remarks>\n            <returns>\n            A copy of this texture.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Texture1D.New(SharpDX.Toolkit.Graphics.GraphicsDevice,SharpDX.Direct3D11.Texture1DDescription)\">\n            <summary>\n            Creates a new texture from a <see cref=\"T:SharpDX.Direct3D11.Texture1DDescription\"/>.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"description\">The description.</param>\n            <returns>\n            A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.Texture1D\"/> class.\n            </returns>\n            <msdn-id>ff476520</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateTexture1D([In] const D3D11_TEXTURE1D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture1D** ppTexture1D)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateTexture1D</unmanaged-short>\t\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Texture1D.New(SharpDX.Toolkit.Graphics.GraphicsDevice,SharpDX.Direct3D11.Texture1D)\">\n            <summary>\n            Creates a new texture from a <see cref=\"T:SharpDX.Direct3D11.Texture1D\"/>.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"texture\">The native texture <see cref=\"T:SharpDX.Direct3D11.Texture1D\"/>.</param>\n            <returns>\n            A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.Texture1D\"/> class.\n            </returns>\n            <msdn-id>ff476520</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateTexture1D([In] const D3D11_TEXTURE1D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture1D** ppTexture1D)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateTexture1D</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Texture1D.New(SharpDX.Toolkit.Graphics.GraphicsDevice,System.Int32,SharpDX.Toolkit.Graphics.PixelFormat,SharpDX.Toolkit.Graphics.TextureFlags,System.Int32,SharpDX.Direct3D11.ResourceUsage)\">\n            <summary>\n            Creates a new <see cref=\"T:SharpDX.Toolkit.Graphics.Texture1D\"/> with a single mipmap.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"width\">The width.</param>\n            <param name=\"format\">Describes the format to use.</param>\n            <param name=\"usage\">The usage.</param>\n            <param name=\"flags\">Sets the texture flags (for unordered access...etc.)</param>\n            <param name=\"arraySize\">Size of the texture 2D array, default to 1.</param>\n            <returns>\n            A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.Texture1D\"/> class.\n            </returns>\n            <msdn-id>ff476520</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateTexture1D([In] const D3D11_TEXTURE1D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture1D** ppTexture1D)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateTexture1D</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Texture1D.New(SharpDX.Toolkit.Graphics.GraphicsDevice,System.Int32,SharpDX.Toolkit.Graphics.MipMapCount,SharpDX.Toolkit.Graphics.PixelFormat,SharpDX.Toolkit.Graphics.TextureFlags,System.Int32,SharpDX.Direct3D11.ResourceUsage)\">\n            <summary>\n            Creates a new <see cref=\"T:SharpDX.Toolkit.Graphics.Texture1D\"/>.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"width\">The width.</param>\n            <param name=\"mipCount\">Number of mipmaps, set to true to have all mipmaps, set to an int &gt;=1 for a particular mipmap count.</param>\n            <param name=\"format\">Describes the format to use.</param>\n            <param name=\"usage\">The usage.</param>\n            <param name=\"flags\">Sets the texture flags (for unordered access...etc.)</param>\n            <param name=\"arraySize\">Size of the texture 2D array, default to 1.</param>\n            <returns>\n            A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.Texture1D\"/> class.\n            </returns>\n            <msdn-id>ff476520</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateTexture1D([In] const D3D11_TEXTURE1D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture1D** ppTexture1D)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateTexture1D</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Texture1D.New``1(SharpDX.Toolkit.Graphics.GraphicsDevice,System.Int32,SharpDX.Toolkit.Graphics.PixelFormat,``0[],SharpDX.Toolkit.Graphics.TextureFlags,SharpDX.Direct3D11.ResourceUsage)\">\n            <summary>\n            Creates a new <see cref=\"T:SharpDX.Toolkit.Graphics.Texture1D\"/> with a single level of mipmap.\n            </summary>\n            <typeparam name=\"T\">Type of the initial data to upload to the texture</typeparam>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"width\">The width.</param>\n            <param name=\"format\">Describes the format to use.</param>\n            <param name=\"usage\">The usage.</param>\n            <param name=\"textureData\">Texture data. Size of must be equal to sizeof(Format) * width </param>\n            <param name=\"flags\">Sets the texture flags (for unordered access...etc.)</param>\n            <returns>A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.Texture1D\"/> class.</returns>\n            <msdn-id>ff476521</msdn-id>\n              <unmanaged>HRESULT ID3D11Device::CreateTexture1D([In] const D3D11_Texture1D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture1D** ppTexture1D)</unmanaged>\n              <unmanaged-short>ID3D11Device::CreateTexture1D</unmanaged-short>\n            <remarks>\n            The first dimension of mipMapTextures describes the number of array (Texture1D Array), second dimension is the mipmap, the third is the texture data for a particular mipmap.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Texture1D.New(SharpDX.Toolkit.Graphics.GraphicsDevice,SharpDX.Toolkit.Graphics.Image,SharpDX.Toolkit.Graphics.TextureFlags,SharpDX.Direct3D11.ResourceUsage)\">\n            <summary>\n            Creates a new <see cref=\"T:SharpDX.Toolkit.Graphics.Texture1D\"/> directly from an <see cref=\"T:SharpDX.Toolkit.Graphics.Image\"/>.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"image\">An image in CPU memory.</param>\n            <param name=\"flags\">Sets the texture flags (for unordered access...etc.)</param>\n            <param name=\"usage\">The usage.</param>\n            <returns>A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.Texture1D\"/> class.</returns>\n            <msdn-id>ff476521</msdn-id>\n            <unmanaged>HRESULT ID3D11Device::CreateTexture1D([In] const D3D11_TEXTURE1D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture1D** ppTexture1D)</unmanaged>\n            <unmanaged-short>ID3D11Device::CreateTexture1D</unmanaged-short>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Texture1D.Load(SharpDX.Toolkit.Graphics.GraphicsDevice,System.IO.Stream,SharpDX.Toolkit.Graphics.TextureFlags,SharpDX.Direct3D11.ResourceUsage)\">\n            <summary>\n            Loads a 1D texture from a stream.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"stream\">The stream to load the texture from.</param>\n            <param name=\"flags\">Sets the texture flags (for unordered access...etc.)</param>\n            <param name=\"usage\">Usage of the resource. Default is <see cref=\"F:SharpDX.Direct3D11.ResourceUsage.Immutable\"/> </param>\n            <exception cref=\"T:System.ArgumentException\">If the texture is not of type 1D</exception>\n            <returns>A texture</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.Texture1D.Load(SharpDX.Toolkit.Graphics.GraphicsDevice,System.String,SharpDX.Toolkit.Graphics.TextureFlags,SharpDX.Direct3D11.ResourceUsage)\">\n            <summary>\n            Loads a 1D texture from a stream.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"filePath\">The file to load the texture from.</param>\n            <param name=\"flags\">Sets the texture flags (for unordered access...etc.)</param>\n            <param name=\"usage\">Usage of the resource. Default is <see cref=\"F:SharpDX.Direct3D11.ResourceUsage.Immutable\"/> </param>\n            <exception cref=\"T:System.ArgumentException\">If the texture is not of type 1D</exception>\n            <returns>A texture</returns>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\">\n            <summary>\n            This class is a frontend to <see cref=\"T:SharpDX.Direct3D11.Device\"/> and <see cref=\"T:SharpDX.Direct3D11.DeviceContext\"/>.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.GraphicsDevice.Features\">\n            <summary>\n            Gets the features supported by this <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.GraphicsDevice.DefaultEffectPool\">\n            <summary>\n            Default effect pool shared between all deferred GraphicsDevice instances.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.GraphicsDevice.MainDevice\">\n            <summary>\n            Gets the <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/> for immediate rendering.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.GraphicsDevice.IsDebugMode\">\n            <summary>\n            Gets whether this <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/> is running in debug.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.GraphicsDevice.IsDeferred\">\n            <summary>\n            Gets whether this <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/> is a deferred context.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.GraphicsDevice.BlendStates\">\n            <summary>\n            Gets the registered <see cref=\"T:SharpDX.Toolkit.Graphics.BlendState\"/> for this graphics device.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.GraphicsDevice.DepthStencilStates\">\n            <summary>\n            Gets the registered <see cref=\"T:SharpDX.Toolkit.Graphics.DepthStencilState\"/> for this graphics device.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.GraphicsDevice.SamplerStates\">\n            <summary>\n            Gets the registered <see cref=\"T:SharpDX.Toolkit.Graphics.SamplerState\"/> for this graphics device.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.GraphicsDevice.RasterizerStates\">\n            <summary>\n            Gets the registered <see cref=\"T:SharpDX.Toolkit.Graphics.RasterizerState\"/> for this graphics device.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.GraphicsDevice.Adapter\">\n            <summary>\n            Gets the adapter associated with this device.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.GraphicsDevice.Clear(SharpDX.Color4)\">\n            <summary>\n            Clears the default render target and depth stencil buffer attached to the current <see cref=\"P:SharpDX.Toolkit.Graphics.GraphicsDevice.Presenter\"/>.\n            </summary>\n            <param name=\"color\">Set this color value in all buffers.</param>\n            <exception cref=\"T:System.InvalidOperationException\">Cannot clear without a Presenter set on this instance</exception>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.GraphicsDevice.Clear(SharpDX.Toolkit.Graphics.ClearOptions,SharpDX.Color4,System.Single,System.Int32)\">\n            <summary>\n            Clears the default render target and depth stencil buffer attached to the current <see cref=\"P:SharpDX.Toolkit.Graphics.GraphicsDevice.Presenter\"/>.\n            </summary>\n            <param name=\"options\">Options for clearing a buffer.</param>\n            <param name=\"color\">Set this four-component color value in the buffer.</param>\n            <param name=\"depth\">Set this depth value in the buffer.</param>\n            <param name=\"stencil\">Set this stencil value in the buffer.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.GraphicsDevice.Clear(SharpDX.Toolkit.Graphics.ClearOptions,SharpDX.Vector4,System.Single,System.Int32)\">\n            <summary>\n            Clears the default render target and depth stencil buffer attached to the current <see cref=\"P:SharpDX.Toolkit.Graphics.GraphicsDevice.Presenter\"/>.\n            </summary>\n            <param name=\"options\">Options for clearing a buffer.</param>\n            <param name=\"color\">Set this four-component color value in the buffer.</param>\n            <param name=\"depth\">Set this depth value in the buffer.</param>\n            <param name=\"stencil\">Set this stencil value in the buffer.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.GraphicsDevice.Clear(SharpDX.Direct3D11.RenderTargetView,SharpDX.Color4)\">\n            <summary>\n            Clears a render target view by setting all the elements in a render target to one value.\n            </summary>\n            <param name=\"renderTargetView\">The render target view.</param>\n            <param name=\"colorRGBA\">A 4-component array that represents the color to fill the render target with.</param>\n            <remarks><p>Applications that wish to clear a render target to a specific integer value bit pattern should render a screen-aligned quad instead of using this method.  The reason for this is because this method accepts as input a floating point value, which may not have the same bit pattern as the original integer.</p><table> <tr><td> <p>Differences between Direct3D 9 and Direct3D 11/10:</p> <p>Unlike Direct3D 9, the full extent of the resource view is always cleared. Viewport and scissor settings are not applied.</p> </td></tr> </table><p>?</p></remarks>\n            <msdn-id>ff476388</msdn-id>\n            <unmanaged>void ID3D11DeviceContext::ClearRenderTargetView([In] ID3D11RenderTargetView* pRenderTargetView,[In] const SHARPDX_COLOR4* ColorRGBA)</unmanaged>\n            <unmanaged-short>ID3D11DeviceContext::ClearRenderTargetView</unmanaged-short>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.GraphicsDevice.Clear(SharpDX.Direct3D11.DepthStencilView,SharpDX.Direct3D11.DepthStencilClearFlags,System.Single,System.Byte)\">\n            <summary>\t\n            Clears the depth-stencil resource.\n            </summary>\t\n            <param name=\"depthStencilView\"><dd>  <p>Pointer to the depth stencil to be cleared.</p> </dd></param>\t\n            <param name=\"clearFlags\"><dd>  <p>Identify the type of data to clear (see <strong><see cref=\"T:SharpDX.Direct3D11.DepthStencilClearFlags\"/></strong>).</p> </dd></param>\t\n            <param name=\"depth\"><dd>  <p>Clear the depth buffer with this value. This value will be clamped between 0 and 1.</p> </dd></param>\t\n            <param name=\"stencil\"><dd>  <p>Clear the stencil buffer with this value.</p> </dd></param>\t\n            <remarks>\t\n            <table> <tr><td> <p>Differences between Direct3D 9 and Direct3D 11/10:</p> <p>Unlike Direct3D 9, the full extent of the resource view is always cleared. Viewport and scissor settings are not applied.</p> </td></tr> </table><p>?</p>\t\n            </remarks>\t\n            <msdn-id>ff476387</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::ClearDepthStencilView([In] ID3D11DepthStencilView* pDepthStencilView,[In] D3D11_CLEAR_FLAG ClearFlags,[In] float Depth,[In] unsigned char Stencil)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::ClearDepthStencilView</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.GraphicsDevice.Clear(SharpDX.Direct3D11.UnorderedAccessView,SharpDX.Int4)\">\n            <summary>\t\n            Clears an unordered access resource with bit-precise values.\t\n            </summary>\t\n            <param name=\"view\">The buffer to clear.</param>\t\n            <param name=\"value\">The value used to clear.</param>\t\n            <remarks>\t\n            <p>This API copies the lower ni bits from each array element i to the corresponding channel, where ni is the number of bits in  the ith channel of the resource format (for example, R8G8B8_FLOAT has 8 bits for the first 3 channels). This works on any UAV with no format conversion.  For a raw or structured buffer view, only the first array element value is used.</p>\t\n            </remarks>\t\n            <msdn-id>ff476391</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::ClearUnorderedAccessViewUint([In] ID3D11UnorderedAccessView* pUnorderedAccessView,[In] const unsigned int* Values)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::ClearUnorderedAccessViewUint</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.GraphicsDevice.Clear(SharpDX.Direct3D11.UnorderedAccessView,SharpDX.Vector4)\">\n            <summary>\t\n            Clears an unordered access resource with a float value.\n            </summary>\t\n            <param name=\"view\">The buffer to clear.</param>\t\n            <param name=\"value\">The value used to clear.</param>\t\n            <remarks>\t\n            <p>This API works on FLOAT, UNORM, and SNORM unordered access views (UAVs), with format conversion from FLOAT to *NORM where appropriate. On other UAVs, the operation is invalid and the call will not reach the driver.</p>\t\n            </remarks>\t\n            <msdn-id>ff476390</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::ClearUnorderedAccessViewFloat([In] ID3D11UnorderedAccessView* pUnorderedAccessView,[In] const float* Values)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::ClearUnorderedAccessViewFloat</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.GraphicsDevice.Copy(SharpDX.Direct3D11.Resource,SharpDX.Direct3D11.Resource)\">\n            <summary>\n            Copies the content of this resource to another <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsResource\"/>.\n            </summary>\n            <param name=\"fromResource\">The resource to copy from.</param>\n            <param name=\"toResource\">The resource to copy to.</param>\n            <remarks>See the unmanaged documentation for usage and restrictions.</remarks>\n            <msdn-id>ff476392</msdn-id>\n            <unmanaged>void ID3D11DeviceContext::CopyResource([In] ID3D11Resource* pDstResource,[In] ID3D11Resource* pSrcResource)</unmanaged>\n            <unmanaged-short>ID3D11DeviceContext::CopyResource</unmanaged-short>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.GraphicsDevice.Copy(SharpDX.Direct3D11.Resource,System.Int32,SharpDX.Direct3D11.Resource,System.Int32,System.Int32,System.Int32,System.Int32)\">\n            <summary>\t\n            Copy a region from a source resource to a destination resource.\t\n            </summary>\t\n            <remarks>\t\n            The source box must be within the size of the source resource. The destination offsets, (x, y, and z) allow the source box to be offset when writing into the destination resource; however, the dimensions of the source box and the offsets must be within the size of the resource. If the resources are buffers, all coordinates are in bytes; if the resources are textures, all coordinates are in texels. {{D3D11CalcSubresource}} is a helper function for calculating subresource indexes. CopySubresourceRegion performs the copy on the GPU (similar to a memcpy by the CPU). As a consequence, the source and destination resources:  Must be different subresources (although they can be from the same resource). Must be the same type. Must have compatible DXGI formats (identical or from the same type group). For example, a DXGI_FORMAT_R32G32B32_FLOAT texture can be copied to an DXGI_FORMAT_R32G32B32_UINT texture since both of these formats are in the DXGI_FORMAT_R32G32B32_TYPELESS group. May not be currently mapped.  CopySubresourceRegion only supports copy; it does not support any stretch, color key, blend, or format conversions. An application that needs to copy an entire resource should use <see cref=\"M:SharpDX.Direct3D11.DeviceContext.CopyResource_(SharpDX.Direct3D11.Resource,SharpDX.Direct3D11.Resource)\"/> instead. CopySubresourceRegion is an asynchronous call which may be added to the command-buffer queue, this attempts to remove pipeline stalls that may occur when copying data. See performance considerations for more details. Note??If you use CopySubresourceRegion with a depth-stencil buffer or a multisampled resource, you must copy the whole subresource. In this situation, you must pass 0 to the DstX, DstY, and DstZ parameters and NULL to the pSrcBox parameter. In addition, source and destination resources, which are represented by the pSrcResource and pDstResource parameters, should have identical sample count values. Example The following code snippet copies a box (located at (120,100),(200,220)) from a source texture into a reqion (10,20),(90,140) in a destination texture. \t\n            <code> D3D11_BOX sourceRegion;\t\n            sourceRegion.left = 120;\t\n            sourceRegion.right = 200;\t\n            sourceRegion.top = 100;\t\n            sourceRegion.bottom = 220;\t\n            sourceRegion.front = 0;\t\n            sourceRegion.back = 1; pd3dDeviceContext-&gt;CopySubresourceRegion( pDestTexture, 0, 10, 20, 0, pSourceTexture, 0, &amp;sourceRegion ); </code>\t\n            \t\n             Notice, that for a 2D texture, front and back are set to 0 and 1 respectively. \t\n            </remarks>\t\n            <param name=\"source\">A reference to the source resource (see <see cref=\"T:SharpDX.Direct3D11.Resource\"/>). </param>\n            <param name=\"sourceSubresource\">Source subresource index. </param>\n            <param name=\"destination\">A reference to the destination resource (see <see cref=\"T:SharpDX.Direct3D11.Resource\"/>). </param>\n            <param name=\"destinationSubResource\">Destination subresource index. </param>\n            <param name=\"dstX\">The x-coordinate of the upper left corner of the destination region. </param>\n            <param name=\"dstY\">The y-coordinate of the upper left corner of the destination region. For a 1D subresource, this must be zero. </param>\n            <param name=\"dstZ\">The z-coordinate of the upper left corner of the destination region. For a 1D or 2D subresource, this must be zero. </param>\n            <msdn-id>ff476394</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::CopySubresourceRegion([In] ID3D11Resource* pDstResource,[In] unsigned int DstSubresource,[In] unsigned int DstX,[In] unsigned int DstY,[In] unsigned int DstZ,[In] ID3D11Resource* pSrcResource,[In] unsigned int SrcSubresource,[In, Optional] const D3D11_BOX* pSrcBox)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::CopySubresourceRegion</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.GraphicsDevice.Copy(SharpDX.Direct3D11.Resource,System.Int32,SharpDX.Direct3D11.ResourceRegion,SharpDX.Direct3D11.Resource,System.Int32,System.Int32,System.Int32,System.Int32)\">\n            <summary>\t\n            Copy a region from a source resource to a destination resource.\t\n            </summary>\t\n            <remarks>\t\n            The source box must be within the size of the source resource. The destination offsets, (x, y, and z) allow the source box to be offset when writing into the destination resource; however, the dimensions of the source box and the offsets must be within the size of the resource. If the resources are buffers, all coordinates are in bytes; if the resources are textures, all coordinates are in texels. {{D3D11CalcSubresource}} is a helper function for calculating subresource indexes. CopySubresourceRegion performs the copy on the GPU (similar to a memcpy by the CPU). As a consequence, the source and destination resources:  Must be different subresources (although they can be from the same resource). Must be the same type. Must have compatible DXGI formats (identical or from the same type group). For example, a DXGI_FORMAT_R32G32B32_FLOAT texture can be copied to an DXGI_FORMAT_R32G32B32_UINT texture since both of these formats are in the DXGI_FORMAT_R32G32B32_TYPELESS group. May not be currently mapped.  CopySubresourceRegion only supports copy; it does not support any stretch, color key, blend, or format conversions. An application that needs to copy an entire resource should use <see cref=\"M:SharpDX.Direct3D11.DeviceContext.CopyResource_(SharpDX.Direct3D11.Resource,SharpDX.Direct3D11.Resource)\"/> instead. CopySubresourceRegion is an asynchronous call which may be added to the command-buffer queue, this attempts to remove pipeline stalls that may occur when copying data. See performance considerations for more details. Note??If you use CopySubresourceRegion with a depth-stencil buffer or a multisampled resource, you must copy the whole subresource. In this situation, you must pass 0 to the DstX, DstY, and DstZ parameters and NULL to the pSrcBox parameter. In addition, source and destination resources, which are represented by the pSrcResource and pDstResource parameters, should have identical sample count values. Example The following code snippet copies a box (located at (120,100),(200,220)) from a source texture into a reqion (10,20),(90,140) in a destination texture. \t\n            <code> D3D11_BOX sourceRegion;\t\n            sourceRegion.left = 120;\t\n            sourceRegion.right = 200;\t\n            sourceRegion.top = 100;\t\n            sourceRegion.bottom = 220;\t\n            sourceRegion.front = 0;\t\n            sourceRegion.back = 1; pd3dDeviceContext-&gt;CopySubresourceRegion( pDestTexture, 0, 10, 20, 0, pSourceTexture, 0, &amp;sourceRegion ); </code>\t\n            \t\n             Notice, that for a 2D texture, front and back are set to 0 and 1 respectively. \t\n            </remarks>\t\n            <param name=\"source\">A reference to the source resource (see <see cref=\"T:SharpDX.Direct3D11.Resource\"/>). </param>\n            <param name=\"sourceSubresource\">Source subresource index. </param>\n            <param name=\"sourceRegion\">A reference to a 3D box (see <see cref=\"T:SharpDX.Direct3D11.ResourceRegion\"/>) that defines the source subresources that can be copied. If NULL, the entire source subresource is copied. The box must fit within the source resource. </param>\n            <param name=\"destination\">A reference to the destination resource (see <see cref=\"T:SharpDX.Direct3D11.Resource\"/>). </param>\n            <param name=\"destinationSubResource\">Destination subresource index. </param>\n            <param name=\"dstX\">The x-coordinate of the upper left corner of the destination region. </param>\n            <param name=\"dstY\">The y-coordinate of the upper left corner of the destination region. For a 1D subresource, this must be zero. </param>\n            <param name=\"dstZ\">The z-coordinate of the upper left corner of the destination region. For a 1D or 2D subresource, this must be zero. </param>\n            <msdn-id>ff476394</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::CopySubresourceRegion([In] ID3D11Resource* pDstResource,[In] unsigned int DstSubresource,[In] unsigned int DstX,[In] unsigned int DstY,[In] unsigned int DstZ,[In] ID3D11Resource* pSrcResource,[In] unsigned int SrcSubresource,[In, Optional] const D3D11_BOX* pSrcBox)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::CopySubresourceRegion</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.GraphicsDevice.Copy(SharpDX.Direct3D11.Resource,System.Int32,SharpDX.Direct3D11.Resource,System.Int32,SharpDX.DXGI.Format)\">\n            <summary>\t\n            Copy a multisampled resource into a non-multisampled resource.\t\n            </summary>\t\n            <remarks>\t\n            This API is most useful when re-using the resulting rendertarget of one render pass as an input to a second render pass. The source and destination resources must be the same resource type and have the same dimensions. In addition, they must have compatible formats. There are three scenarios for this:  ScenarioRequirements Source and destination are prestructured and typedBoth the source and destination must have identical formats and that format must be specified in the Format parameter. One resource is prestructured and typed and the other is prestructured and typelessThe typed resource must have a format that is compatible with the typeless resource (i.e. the typed resource is DXGI_FORMAT_R32_FLOAT and the typeless resource is DXGI_FORMAT_R32_TYPELESS). The format of the typed resource must be specified in the Format parameter. Source and destination are prestructured and typelessBoth the source and desintation must have the same typeless format (i.e. both must have DXGI_FORMAT_R32_TYPELESS), and the Format parameter must specify a format that is compatible with the source and destination (i.e. if both are DXGI_FORMAT_R32_TYPELESS then DXGI_FORMAT_R32_FLOAT could be specified in the Format parameter). For example, given the DXGI_FORMAT_R16G16B16A16_TYPELESS format:  The source (or dest) format could be DXGI_FORMAT_R16G16B16A16_UNORM The dest (or source) format could be DXGI_FORMAT_R16G16B16A16_FLOAT    ? \t\n            </remarks>\t\n            <param name=\"source\">Source resource. Must be multisampled. </param>\n            <param name=\"sourceSubresource\">&gt;The source subresource of the source resource. </param>\n            <param name=\"destination\">Destination resource. Must be a created with the <see cref=\"F:SharpDX.Direct3D11.ResourceUsage.Default\"/> flag and be single-sampled. See <see cref=\"T:SharpDX.Direct3D11.Resource\"/>. </param>\n            <param name=\"destinationSubresource\">A zero-based index, that identifies the destination subresource. Use {{D3D11CalcSubresource}} to calculate the index. </param>\n            <param name=\"format\">A <see cref=\"T:SharpDX.DXGI.Format\"/> that indicates how the multisampled resource will be resolved to a single-sampled resource.  See remarks. </param>\n            <unmanaged>void ID3D11DeviceContext::ResolveSubresource([In] ID3D11Resource* pDstResource,[In] int DstSubresource,[In] ID3D11Resource* pSrcResource,[In] int SrcSubresource,[In] DXGI_FORMAT Format)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.GraphicsDevice.CopyCount(SharpDX.Direct3D11.UnorderedAccessView,SharpDX.Direct3D11.Buffer,System.Int32)\">\n            <summary>\t\n            <p>Copies data from a buffer holding variable length data.</p>\t\n            </summary>\t\n            <param name=\"sourceView\"><dd>  <p>Pointer to an <strong><see cref=\"T:SharpDX.Direct3D11.UnorderedAccessView\"/></strong> of a Structured Buffer resource created with either  <strong><see cref=\"F:SharpDX.Direct3D11.UnorderedAccessViewBufferFlags.Append\"/></strong> or <strong><see cref=\"F:SharpDX.Direct3D11.UnorderedAccessViewBufferFlags.Counter\"/></strong> specified  when the UAV was created.   These types of resources have hidden counters tracking \"how many\" records have  been written.</p> </dd></param>\t\n            <param name=\"destinationBuffer\"><dd>  <p>Pointer to <strong><see cref=\"T:SharpDX.Direct3D11.Buffer\"/></strong>.  This can be any buffer resource that other copy commands,  such as <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.CopyResource_(SharpDX.Direct3D11.Resource,SharpDX.Direct3D11.Resource)\"/></strong> or <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.CopySubresourceRegion_(SharpDX.Direct3D11.Resource,System.Int32,System.Int32,System.Int32,System.Int32,SharpDX.Direct3D11.Resource,System.Int32,System.Nullable{SharpDX.Direct3D11.ResourceRegion})\"/></strong>, are able to write to.</p> </dd></param>\t\n            <param name=\"offsetInBytes\"><dd>  <p>Offset from the start of <em>pDstBuffer</em> to write 32-bit UINT structure (vertex) count from <em>pSrcView</em>.</p> </dd></param>\t\n            <msdn-id>ff476393</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::CopyStructureCount([In] ID3D11Buffer* pDstBuffer,[In] unsigned int DstAlignedByteOffset,[In] ID3D11UnorderedAccessView* pSrcView)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::CopyStructureCount</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.GraphicsDevice.ClearState\">\n            <summary>\t\n            <p>Restore all default settings.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This method resets any device context to the default settings. This sets all input/output resource slots, shaders, input layouts, predications, scissor rectangles, depth-stencil state, rasterizer state, blend state, sampler state, and viewports to <strong><c>null</c></strong>. The primitive topology is set to UNDEFINED.</p><p>For a scenario where you would like to clear a list of commands recorded so far, call <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.FinishCommandListInternal(SharpDX.Bool,SharpDX.Direct3D11.CommandList@)\"/></strong> and throw away the resulting <strong><see cref=\"T:SharpDX.Direct3D11.CommandList\"/></strong>.</p>\t\n            </remarks>\t\n            <msdn-id>ff476389</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::ClearState()</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::ClearState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.GraphicsDevice.DrawIndexed(SharpDX.Toolkit.Graphics.PrimitiveType,System.Int32,System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Draw indexed, non-instanced primitives.</p>\t\n            </summary>\n            <param name=\"primitiveType\">Type of the primitive to draw.</param>\n            <param name=\"indexCount\"><dd>  <p>Number of indices to draw.</p> </dd></param>\t\n            <param name=\"startIndexLocation\"><dd>  <p>The location of the first index read by the GPU from the index buffer.</p> </dd></param>\t\n            <param name=\"baseVertexLocation\"><dd>  <p>A value added to each index before reading a vertex from the vertex buffer.</p> </dd></param>\t\n            <remarks>\t\n            <p>A draw API submits work to the rendering pipeline.</p><p>If the sum of both indices is negative, the result of the function call is undefined.</p>\t\n            </remarks>\t\n            <msdn-id>ff476409</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::DrawIndexed([In] unsigned int IndexCount,[In] unsigned int StartIndexLocation,[In] int BaseVertexLocation)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::DrawIndexed</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.GraphicsDevice.Draw(SharpDX.Toolkit.Graphics.PrimitiveType,System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Draw non-indexed, non-instanced primitives.</p>\t\n            </summary>\n            <param name=\"primitiveType\">Type of the primitive to draw.</param>\n            <param name=\"vertexCount\"><dd>  <p>Number of vertices to draw.</p> </dd></param>\t\n            <param name=\"startVertexLocation\"><dd>  <p>Index of the first vertex, which is usually an offset in a vertex buffer; it could also be used as the first vertex id generated for a shader parameter marked with the <strong>SV_TargetId</strong> system-value semantic.</p> </dd></param>\t\n            <remarks>\t\n            <p>A draw API submits work to the rendering pipeline.</p><p>The vertex data for a draw call normally comes from a vertex buffer that is bound to the pipeline. However, you could also provide the vertex data from a shader that has vertex data marked with the <strong>SV_VertexId</strong> system-value semantic.</p>\t\n            </remarks>\t\n            <msdn-id>ff476407</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::Draw([In] unsigned int VertexCount,[In] unsigned int StartVertexLocation)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::Draw</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.GraphicsDevice.DrawIndexedInstanced(SharpDX.Toolkit.Graphics.PrimitiveType,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Draw indexed, instanced primitives.</p>\t\n            </summary>\t\n            <param name=\"primitiveType\">Type of the primitive to draw.</param>\n            <param name=\"indexCountPerInstance\"><dd>  <p>Number of indices read from the index buffer for each instance.</p> </dd></param>\t\n            <param name=\"instanceCount\"><dd>  <p>Number of instances to draw.</p> </dd></param>\t\n            <param name=\"startIndexLocation\"><dd>  <p>The location of the first index read by the GPU from the index buffer.</p> </dd></param>\t\n            <param name=\"baseVertexLocation\"><dd>  <p>A value added to each index before reading a vertex from the vertex buffer.</p> </dd></param>\t\n            <param name=\"startInstanceLocation\"><dd>  <p>A value added to each index before reading per-instance data from a vertex buffer.</p> </dd></param>\t\n            <remarks>\t\n            <p>A draw API submits work to the rendering pipeline.</p><p>Instancing may extend performance by reusing the same geometry to draw multiple objects in a scene. One example of instancing could be  to draw the same object with different positions and colors. Indexing requires multiple vertex buffers: at least one for per-vertex data  and a second buffer for per-instance data.</p>\t\n            </remarks>\t\n            <msdn-id>ff476410</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::DrawIndexedInstanced([In] unsigned int IndexCountPerInstance,[In] unsigned int InstanceCount,[In] unsigned int StartIndexLocation,[In] int BaseVertexLocation,[In] unsigned int StartInstanceLocation)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::DrawIndexedInstanced</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.GraphicsDevice.DrawInstanced(SharpDX.Toolkit.Graphics.PrimitiveType,System.Int32,System.Int32,System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Draw non-indexed, instanced primitives.</p>\t\n            </summary>\t\n            <param name=\"primitiveType\">Type of the primitive to draw.</param>\n            <param name=\"vertexCountPerInstance\"><dd>  <p>Number of vertices to draw.</p> </dd></param>\t\n            <param name=\"instanceCount\"><dd>  <p>Number of instances to draw.</p> </dd></param>\t\n            <param name=\"startVertexLocation\"><dd>  <p>Index of the first vertex.</p> </dd></param>\t\n            <param name=\"startInstanceLocation\"><dd>  <p>A value added to each index before reading per-instance data from a vertex buffer.</p> </dd></param>\t\n            <remarks>\t\n            <p>A draw API submits work to the rendering pipeline.</p><p>Instancing may extend performance by reusing the same geometry to draw multiple objects in a scene. One example of instancing could be  to draw the same object with different positions and colors.</p><p>The vertex data for an instanced draw call normally comes from a vertex buffer that is bound to the pipeline.  However, you could also provide the vertex data from a shader that has instanced data identified with a system-value semantic (SV_InstanceID).</p>\t\n            </remarks>\t\n            <msdn-id>ff476412</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::DrawInstanced([In] unsigned int VertexCountPerInstance,[In] unsigned int InstanceCount,[In] unsigned int StartVertexLocation,[In] unsigned int StartInstanceLocation)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::DrawInstanced</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.GraphicsDevice.DrawAuto(SharpDX.Toolkit.Graphics.PrimitiveType)\">\n            <summary>\t\n            <p>Draw geometry of an unknown size.</p>\t\n            </summary>\t\n            <param name=\"primitiveType\">Type of the primitive to draw.</param>\n            <remarks>\t\n            <p>A draw API submits work to the rendering pipeline. This API submits work of an unknown size that was processed by the input assembler, vertex shader, and stream-output stages;  the work may or may not have gone through the geometry-shader stage.</p><p>After data has been streamed out to stream-output stage buffers, those buffers can be again bound to the Input Assembler stage at input slot 0 and DrawAuto will draw them without the application needing to know the amount of data that was written to the buffers. A measurement of the amount of data written to the SO stage buffers is maintained internally when the data is streamed out. This means that the CPU does not need to fetch the measurement before re-binding the data that was streamed as input data. Although this amount is tracked internally, it is still the responsibility of applications to use input layouts to describe the format of the data in the SO stage buffers so that the layouts are available when the buffers are again bound to the input assembler.</p><p>The following diagram shows the DrawAuto process.</p><p></p><p>Calling DrawAuto does not change the state of the streaming-output buffers that were bound again as inputs.</p><p>DrawAuto only works when drawing with one input buffer bound as an input to the IA stage at slot 0. Applications must create the SO buffer resource with both binding flags, <strong><see cref=\"F:SharpDX.Direct3D11.BindFlags.VertexBuffer\"/></strong> and <strong><see cref=\"F:SharpDX.Direct3D11.BindFlags.StreamOutput\"/></strong>.</p><p>This API does not support indexing or instancing.</p><p>If an application needs to retrieve the size of the streaming-output buffer, it can query for statistics on streaming output by using <strong><see cref=\"F:SharpDX.Direct3D11.QueryType.StreamOutputStatistics\"/></strong>.</p>\t\n            </remarks>\t\n            <msdn-id>ff476408</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::DrawAuto()</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::DrawAuto</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.GraphicsDevice.DrawIndexedInstanced(SharpDX.Toolkit.Graphics.PrimitiveType,SharpDX.Direct3D11.Buffer,System.Int32)\">\n            <summary>\t\n            <p>Draw indexed, instanced, GPU-generated primitives.</p>\t\n            </summary>\t\n            <param name=\"primitiveType\">Type of the primitive to draw.</param>\n            <param name=\"argumentsBuffer\"><dd>  <p>A reference to an <strong><see cref=\"T:SharpDX.Direct3D11.Buffer\"/></strong>, which is a buffer containing the GPU generated primitives.</p> </dd></param>\t\n            <param name=\"alignedByteOffsetForArgs\"><dd>  <p>Offset in <em>pBufferForArgs</em> to the start of the GPU generated primitives.</p> </dd></param>\t\n            <remarks>\t\n            <p>When an application creates a buffer that is associated with the <strong><see cref=\"T:SharpDX.Direct3D11.Buffer\"/></strong> interface that  <em>pBufferForArgs</em> points to, the application must set the <strong><see cref=\"!:SharpDX.Direct3D11.ResourceOptionFlags.DrawindirectArgs\"/></strong> flag in the <strong>MiscFlags</strong> member of the <strong><see cref=\"T:SharpDX.Direct3D11.BufferDescription\"/></strong> structure that describes the buffer. To create the buffer, the application calls the <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateBuffer(SharpDX.Direct3D11.BufferDescription@,System.Nullable{SharpDX.DataBox},SharpDX.Direct3D11.Buffer)\"/></strong> method and in this call passes a reference to <strong><see cref=\"T:SharpDX.Direct3D11.BufferDescription\"/></strong> in the <em>pDesc</em> parameter.</p>\t\n            </remarks>\t\n            <msdn-id>ff476411</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::DrawIndexedInstancedIndirect([In] ID3D11Buffer* pBufferForArgs,[In] unsigned int AlignedByteOffsetForArgs)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::DrawIndexedInstancedIndirect</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.GraphicsDevice.DrawInstanced(SharpDX.Toolkit.Graphics.PrimitiveType,SharpDX.Direct3D11.Buffer,System.Int32)\">\n            <summary>\t\n            <p>Draw instanced, GPU-generated primitives.</p>\t\n            </summary>\t\n            <param name=\"primitiveType\">Type of the primitive to draw.</param>\n            <param name=\"argumentsBuffer\"><dd>  <p>A reference to an <strong><see cref=\"T:SharpDX.Direct3D11.Buffer\"/></strong>, which is a buffer containing the GPU generated primitives.</p> </dd></param>\t\n            <param name=\"alignedByteOffsetForArgs\"><dd>  <p>Offset in <em>pBufferForArgs</em> to the start of the GPU generated primitives.</p> </dd></param>\t\n            <remarks>\t\n            <p>When an application creates a buffer that is associated with the <strong><see cref=\"T:SharpDX.Direct3D11.Buffer\"/></strong> interface that  <em>pBufferForArgs</em> points to, the application must set the <strong><see cref=\"!:SharpDX.Direct3D11.ResourceOptionFlags.DrawindirectArgs\"/></strong> flag in the <strong>MiscFlags</strong> member of the <strong><see cref=\"T:SharpDX.Direct3D11.BufferDescription\"/></strong> structure that describes the buffer. To create the buffer, the application calls the <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateBuffer(SharpDX.Direct3D11.BufferDescription@,System.Nullable{SharpDX.DataBox},SharpDX.Direct3D11.Buffer)\"/></strong> method and in this call passes a reference to <strong><see cref=\"T:SharpDX.Direct3D11.BufferDescription\"/></strong> in the <em>pDesc</em> parameter.</p>\t\n            </remarks>\t\n            <msdn-id>ff476413</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::DrawInstancedIndirect([In] ID3D11Buffer* pBufferForArgs,[In] unsigned int AlignedByteOffsetForArgs)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::DrawInstancedIndirect</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.GraphicsDevice.DrawQuad\">\n            <summary>\n            Draws a fullscreen quad. An effect with at least a pixel shader (with the expected signature - float2:TEXCOORD) must have been applied before using this method.\n            </summary>\n            <seealso cref=\"T:SharpDX.Toolkit.Graphics.PrimitiveQuad\"/>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.GraphicsDevice.DrawQuad(SharpDX.Direct3D11.ShaderResourceView,SharpDX.Direct3D11.SamplerState)\">\n            <summary>\n            Draws a fullscreen quad with a pixel shader to output a texture with a particular sampler (default linear clamp).\n            </summary>\n            <param name=\"texture\">The texture.</param>\n            <param name=\"samplerState\">State of the sampler. If null, default sampler is <see cref=\"F:SharpDX.Toolkit.Graphics.SamplerStateCollection.LinearClamp\"/>.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.GraphicsDevice.DrawQuad(SharpDX.Direct3D11.ShaderResourceView,SharpDX.Matrix,SharpDX.Direct3D11.SamplerState)\">\n            <summary>\n            Draws a fullscreen quad with a pixel shader to output a texture with a particular sampler (default linear clamp).\n            </summary>\n            <param name=\"texture\">The texture.</param>\n            <param name=\"tranform\">The matrix tranform.</param>\n            <param name=\"samplerState\">State of the sampler. If null, default sampler is <see cref=\"F:SharpDX.Toolkit.Graphics.SamplerStateCollection.LinearClamp\"/>.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.GraphicsDevice.DrawQuad(SharpDX.Matrix)\">\n            <summary>\n            Draw a fullscreen quad. An effect with at least a pixel shader (with the expected signature - float2:TEXCOORD) must have been applied before using this method.\n            </summary>\n            <param name=\"tranform\">The tranform.</param>\n            <seealso cref=\"T:SharpDX.Toolkit.Graphics.PrimitiveQuad\"/>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.GraphicsDevice.DrawQuad(SharpDX.Toolkit.Graphics.Effect)\">\n            <summary>\n            Draw a fullscreen quad with the specified effect (with the expected signature - float2:TEXCOORD).\n            </summary>\n            <param name=\"effect\">The effect.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.GraphicsDevice.DrawQuad(SharpDX.Toolkit.Graphics.Effect,SharpDX.Matrix)\">\n            <summary>\n            Draw a fullscreen quad with the specified effect (with the expected signature - float2:TEXCOORD).\n            </summary>\n            <param name=\"effect\">The effect.</param>\n            <param name=\"transform\">The transform.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.GraphicsDevice.DrawQuad(SharpDX.Toolkit.Graphics.Effect,SharpDX.Matrix@)\">\n            <summary>\n            Draw a fullscreen quad with the specified effect (with the expected signature - float2:TEXCOORD).\n            </summary>\n            <param name=\"effect\">The effect.</param>\n            <param name=\"transform\">The transform.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.GraphicsDevice.DrawQuad(SharpDX.Toolkit.Graphics.EffectPass)\">\n            <summary>\n            Draw a fullscreen quad with the specified effect pass (with the expected signature - float2:TEXCOORD).\n            </summary>\n            <param name=\"effectPass\">The effect pass.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.GraphicsDevice.DrawQuad(SharpDX.Toolkit.Graphics.EffectPass,SharpDX.Matrix)\">\n            <summary>\n            Draw a fullscreen quad with the specified effect pass (with the expected signature - float2:TEXCOORD).\n            </summary>\n            <param name=\"effectPass\">The effect pass.</param>\n            <param name=\"transform\">The transform.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.GraphicsDevice.DrawQuad(SharpDX.Toolkit.Graphics.EffectPass,SharpDX.Matrix@)\">\n            <summary>\n            Draw a fullscreen quad with the specified effect pass (with the expected signature - float2:TEXCOORD).\n            </summary>\n            <param name=\"effectPass\">The effect pass.</param>\n            <param name=\"transform\">The transform.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.GraphicsDevice.Dispatch(System.Int32,System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Execute a command list from a thread group.</p>\t\n            </summary>\t\n            <param name=\"threadGroupCountX\"><dd>  <p>The number of groups dispatched in the x direction. <em>ThreadGroupCountX</em> must be less than <see cref=\"F:SharpDX.Direct3D11.ComputeShaderStage.DispatchMaximumThreadGroupsPerDimension\"/> (65535).</p> </dd></param>\t\n            <param name=\"threadGroupCountY\"><dd>  <p>The number of groups dispatched in the y direction. <em>ThreadGroupCountY</em> must be less than <see cref=\"F:SharpDX.Direct3D11.ComputeShaderStage.DispatchMaximumThreadGroupsPerDimension\"/> (65535).</p> </dd></param>\t\n            <param name=\"threadGroupCountZ\"><dd>  <p>The number of groups dispatched in the z direction.  <em>ThreadGroupCountZ</em> must be less than <see cref=\"F:SharpDX.Direct3D11.ComputeShaderStage.DispatchMaximumThreadGroupsPerDimension\"/> (65535).  In feature level 10 the value for <em>ThreadGroupCountZ</em> must be 1.</p> </dd></param>\t\n            <remarks>\t\n            <p>You call the <strong>Dispatch</strong> method to execute commands in a compute shader. A compute shader can be run on many threads in parallel, within a thread group. Index a particular thread, within a thread group using a 3D vector  given by (x,y,z).</p><p>In the following illustration, assume a thread group with 50 threads where the size of the group is given by (5,5,2). A single thread is identified from a  thread group with 50 threads in it, using the vector (4,1,1).</p><p></p><p>The following illustration shows the relationship between the parameters passed to <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.Dispatch(System.Int32,System.Int32,System.Int32)\"/></strong>, Dispatch(5,3,2), the values specified in the numthreads attribute, numthreads(10,8,3), and values that will passed to the compute shader for the thread-related system values \t\n            (SV_GroupIndex,SV_DispatchThreadID,SV_GroupThreadID,SV_GroupID).</p><p></p>\t\n            </remarks>\t\n            <msdn-id>ff476405</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::Dispatch([In] unsigned int ThreadGroupCountX,[In] unsigned int ThreadGroupCountY,[In] unsigned int ThreadGroupCountZ)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::Dispatch</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.GraphicsDevice.Dispatch(SharpDX.Direct3D11.Buffer,System.Int32)\">\n            <summary>\t\n            <p>Execute a command list over one or more thread groups.</p>\t\n            </summary>\t\n            <param name=\"argumentsBuffer\"><dd>  <p>A reference to an <strong><see cref=\"T:SharpDX.Direct3D11.Buffer\"/></strong>, which must be loaded with data that matches the argument list for <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.Dispatch(System.Int32,System.Int32,System.Int32)\"/></strong>.</p> </dd></param>\t\n            <param name=\"alignedByteOffsetForArgs\"><dd>  <p>A byte-aligned offset between the start of the buffer and the arguments.</p> </dd></param>\t\n            <remarks>\t\n            <p>You call the <strong>DispatchIndirect</strong> method to execute commands in a compute shader.</p><p>When an application creates a buffer that is associated with the <strong><see cref=\"T:SharpDX.Direct3D11.Buffer\"/></strong> interface that  <em>pBufferForArgs</em> points to, the application must set the <strong><see cref=\"!:SharpDX.Direct3D11.ResourceOptionFlags.DrawindirectArgs\"/></strong> flag in the <strong>MiscFlags</strong> member of the <strong><see cref=\"T:SharpDX.Direct3D11.BufferDescription\"/></strong> structure that describes the buffer. To create the buffer, the application calls the <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateBuffer(SharpDX.Direct3D11.BufferDescription@,System.Nullable{SharpDX.DataBox},SharpDX.Direct3D11.Buffer)\"/></strong> method and in this call passes a reference to <strong><see cref=\"T:SharpDX.Direct3D11.BufferDescription\"/></strong> in the <em>pDesc</em> parameter.</p>\t\n            </remarks>\t\n            <msdn-id>ff476406</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::DispatchIndirect([In] ID3D11Buffer* pBufferForArgs,[In] unsigned int AlignedByteOffsetForArgs)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::DispatchIndirect</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.GraphicsDevice.Flush\">\n            <summary>\t\n            <p>Sends queued-up commands in the command buffer to the graphics processing unit (GPU).</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Most applications don't need to call this method. If an application calls this method when not necessary, it incurs a performance penalty. Each call to <strong>Flush</strong> incurs a significant amount of overhead.</p><p>When Microsoft Direct3D state-setting, present, or draw commands are called by an application, those commands are queued into an internal command buffer.  <strong>Flush</strong> sends those commands to the GPU for processing. Typically, the Direct3D runtime sends these commands to the GPU automatically whenever the runtime determines that  they need to be sent, such as when the command buffer is full or when an application maps a resource. <strong>Flush</strong> sends the commands manually.</p><p>We recommend that you use <strong>Flush</strong> when the CPU waits for an arbitrary amount of time (such as when  you call the <strong>Sleep</strong> function).</p><p>Because <strong>Flush</strong> operates asynchronously,  it can return either before or after the GPU finishes executing the queued graphics commands. However, the graphics commands eventually always complete. You can call the <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateQuery(SharpDX.Direct3D11.QueryDescription,SharpDX.Direct3D11.Query)\"/></strong> method with the <strong><see cref=\"F:SharpDX.Direct3D11.QueryType.Event\"/></strong> value to create an event query; you can then use that event query in a call to the <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.GetDataInternal(SharpDX.Direct3D11.Asynchronous,System.IntPtr,System.Int32,SharpDX.Direct3D11.AsynchronousFlags)\"/></strong> method to determine when the GPU is finished processing the graphics commands.\t\n            </p><p>Microsoft Direct3D?11 defers the destruction of objects. Therefore, an application can't rely upon objects immediately being destroyed. By calling <strong>Flush</strong>, you destroy any  objects whose destruction was deferred.  If an application requires synchronous destruction of an object, we recommend that the application release all its references, call <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.ClearState\"/></strong>, and then call <strong>Flush</strong>.</p>Deferred Destruction Issues with Flip Presentation Swap Chains<p>Direct3D?11 defers the destruction of objects like views and resources until it can efficiently destroy them. This deferred destruction can cause problems with flip presentation model swap chains. Flip presentation model swap chains have the <strong>DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL</strong> flag set. When you create a flip presentation model swap chain, you can associate only one swap chain at a time with an <strong><see cref=\"T:System.IntPtr\"/></strong>, <strong>IWindow</strong>, or composition surface. If an application attempts to destroy a flip presentation model swap chain and replace it with another swap chain, the original swap chain is not destroyed when the application immediately frees all of the original swap chain's references.</p><p>Most applications typically use the <strong><see cref=\"M:SharpDX.DXGI.SwapChain.ResizeBuffers(System.Int32,System.Int32,System.Int32,SharpDX.DXGI.Format,SharpDX.DXGI.SwapChainFlags)\"/></strong> method for the majority of scenarios where they replace new swap chain buffers for old swap chain buffers. However, if an application must actually destroy an old swap chain and create a new swap chain, the application must force the destruction of all objects that the application freed. To force the destruction, call <strong><see cref=\"M:SharpDX.Direct3D11.DeviceContext.ClearState\"/></strong> (or otherwise ensure no views are bound to pipeline state), and then call <strong>Flush</strong> on the immediate context. You must force destruction before you call <strong>IDXGIFactory2::CreateSwapChainForHwnd</strong>, <strong>IDXGIFactory2::CreateSwapChainForImmersiveWindow</strong>, or <strong>IDXGIFactory2::CreateSwapChainForCompositionSurface</strong> again to create a new swap chain.</p>\t\n            </remarks>\t\n            <msdn-id>ff476425</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::Flush()</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::Flush</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.GraphicsDevice.New(SharpDX.Direct3D11.Device)\">\n            <summary>\n            Creates a new <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/> from an existing <see cref=\"T:SharpDX.Direct3D11.Device\"/>.\n            </summary>\n            <param name=\"existingDevice\">An existing device.</param>\n            <returns>A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.GraphicsDevice.New(SharpDX.Direct3D11.DeviceCreationFlags,SharpDX.Direct3D.FeatureLevel[])\">\n            <summary>\n            Creates a new <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/> using <see cref=\"F:SharpDX.Direct3D.DriverType.Hardware\"/>.\n            </summary>\n            <param name=\"flags\">The flags.</param>\n            <param name=\"featureLevels\">The feature levels.</param>\n            <returns>A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/></returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.GraphicsDevice.New(SharpDX.Direct3D.DriverType,SharpDX.Direct3D11.DeviceCreationFlags,SharpDX.Direct3D.FeatureLevel[])\">\n            <summary>\n            Creates a new <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.\n            </summary>\n            <param name=\"type\">The type.</param>\n            <param name=\"flags\">The flags.</param>\n            <param name=\"featureLevels\">The feature levels.</param>\n            <returns>A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.GraphicsDevice.New(SharpDX.Toolkit.Graphics.GraphicsAdapter,SharpDX.Direct3D11.DeviceCreationFlags,SharpDX.Direct3D.FeatureLevel[])\">\n            <summary>\n            Creates a new <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.\n            </summary>\n            <param name=\"adapter\">The graphics adapter to use.</param>\n            <param name=\"flags\">The flags.</param>\n            <param name=\"featureLevels\">The feature levels.</param>\n            <returns>A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.GraphicsDevice.NewDeferred\">\n            <summary>\n            Creates a new deferred <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.\n            </summary>\n            <returns>A deferred <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.GraphicsDevice.SetBlendState(SharpDX.Toolkit.Graphics.BlendState)\">\n            <summary>\t\n            <p>Sets the blend state of the output-merger stage.</p>\t\n            </summary>\t\n            <param name=\"blendState\"><dd>  <p>Pointer to a blend-state interface (see <strong><see cref=\"T:SharpDX.Direct3D11.BlendState\"/></strong>). Passing in <strong><c>null</c></strong> implies a default blend state. See remarks for further details.</p> </dd></param>\t\n            <remarks>\t\n            <p>Blend state is used by the output-merger stage to determine how to blend together two pixel values. The two values are commonly the current pixel value and the pixel value already in the output render target. Use the <strong>blend operation</strong> to control where the two pixel values come from and how they are mathematically combined.</p><p>To create a blend-state interface, call <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateBlendState(SharpDX.Direct3D11.BlendStateDescription@,SharpDX.Direct3D11.BlendState)\"/></strong>.</p><p>Passing in <strong><c>null</c></strong> for the blend-state interface indicates to the runtime to set a default blending state.  The following table indicates the default blending parameters.</p><table> <tr><th>State</th><th>Default Value</th></tr> <tr><td>AlphaToCoverageEnable</td><td><strong><see cref=\"F:SharpDX.Result.False\"/></strong></td></tr> <tr><td>BlendEnable</td><td><strong><see cref=\"F:SharpDX.Result.False\"/></strong>[8]</td></tr> <tr><td>SrcBlend</td><td><see cref=\"F:SharpDX.Direct3D11.BlendOption.One\"/></td></tr> <tr><td>DstBlend</td><td><see cref=\"F:SharpDX.Direct3D11.BlendOption.Zero\"/></td></tr> <tr><td>BlendOp</td><td><see cref=\"F:SharpDX.Direct3D11.BlendOperation.Add\"/></td></tr> <tr><td>SrcBlendAlpha</td><td><see cref=\"F:SharpDX.Direct3D11.BlendOption.One\"/></td></tr> <tr><td>DstBlendAlpha</td><td><see cref=\"F:SharpDX.Direct3D11.BlendOption.Zero\"/></td></tr> <tr><td>BlendOpAlpha</td><td><see cref=\"F:SharpDX.Direct3D11.BlendOperation.Add\"/></td></tr> <tr><td>RenderTargetWriteMask[8]</td><td><see cref=\"F:SharpDX.Direct3D11.ColorWriteMaskFlags.All\"/>[8]</td></tr> </table><p>?</p><p>A sample mask determines which samples get updated in all the active render targets. The mapping of bits in a sample mask to samples in a multisample render target is the responsibility of an individual application. A sample mask is always applied; it is independent of whether multisampling is enabled, and does not depend on whether an application uses multisample render targets.</p><p> The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. </p>\t\n            </remarks>\t\n            <msdn-id>ff476462</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::OMSetBlendState([In, Optional] ID3D11BlendState* pBlendState,[In, Optional] const SHARPDX_COLOR4* BlendFactor,[In] unsigned int SampleMask)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::OMSetBlendState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.GraphicsDevice.SetBlendState(SharpDX.Toolkit.Graphics.BlendState,SharpDX.Color4,System.Int32)\">\n            <summary>\t\n            <p>Sets the blend state of the output-merger stage.</p>\t\n            </summary>\t\n            <param name=\"blendState\"><dd>  <p>Pointer to a blend-state interface (see <strong><see cref=\"T:SharpDX.Direct3D11.BlendState\"/></strong>). Passing in <strong><c>null</c></strong> implies a default blend state. See remarks for further details.</p> </dd></param>\n            <param name=\"blendFactor\"><dd>  <p>Array of blend factors, one for each RGBA component. This requires a blend state object that specifies the <strong><see cref=\"F:SharpDX.Direct3D11.BlendOption.BlendFactor\"/></strong> option.</p> </dd></param>\t\n            <param name=\"multiSampleMask\"><dd>  <p>32-bit sample coverage. The default value is 0xffffffff. See remarks.</p> </dd></param>\t\n            <remarks>\t\n            <p>Blend state is used by the output-merger stage to determine how to blend together two pixel values. The two values are commonly the current pixel value and the pixel value already in the output render target. Use the <strong>blend operation</strong> to control where the two pixel values come from and how they are mathematically combined.</p><p>To create a blend-state interface, call <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateBlendState(SharpDX.Direct3D11.BlendStateDescription@,SharpDX.Direct3D11.BlendState)\"/></strong>.</p><p>Passing in <strong><c>null</c></strong> for the blend-state interface indicates to the runtime to set a default blending state.  The following table indicates the default blending parameters.</p><table> <tr><th>State</th><th>Default Value</th></tr> <tr><td>AlphaToCoverageEnable</td><td><strong><see cref=\"F:SharpDX.Result.False\"/></strong></td></tr> <tr><td>BlendEnable</td><td><strong><see cref=\"F:SharpDX.Result.False\"/></strong>[8]</td></tr> <tr><td>SrcBlend</td><td><see cref=\"F:SharpDX.Direct3D11.BlendOption.One\"/></td></tr> <tr><td>DstBlend</td><td><see cref=\"F:SharpDX.Direct3D11.BlendOption.Zero\"/></td></tr> <tr><td>BlendOp</td><td><see cref=\"F:SharpDX.Direct3D11.BlendOperation.Add\"/></td></tr> <tr><td>SrcBlendAlpha</td><td><see cref=\"F:SharpDX.Direct3D11.BlendOption.One\"/></td></tr> <tr><td>DstBlendAlpha</td><td><see cref=\"F:SharpDX.Direct3D11.BlendOption.Zero\"/></td></tr> <tr><td>BlendOpAlpha</td><td><see cref=\"F:SharpDX.Direct3D11.BlendOperation.Add\"/></td></tr> <tr><td>RenderTargetWriteMask[8]</td><td><see cref=\"F:SharpDX.Direct3D11.ColorWriteMaskFlags.All\"/>[8]</td></tr> </table><p>?</p><p>A sample mask determines which samples get updated in all the active render targets. The mapping of bits in a sample mask to samples in a multisample render target is the responsibility of an individual application. A sample mask is always applied; it is independent of whether multisampling is enabled, and does not depend on whether an application uses multisample render targets.</p><p> The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. </p>\t\n            </remarks>\t\n            <msdn-id>ff476462</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::OMSetBlendState([In, Optional] ID3D11BlendState* pBlendState,[In, Optional] const SHARPDX_COLOR4* BlendFactor,[In] unsigned int SampleMask)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::OMSetBlendState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.GraphicsDevice.SetBlendState(SharpDX.Toolkit.Graphics.BlendState,SharpDX.Color4,System.UInt32)\">\n            <summary>\t\n            <p>Sets the blend state of the output-merger stage.</p>\t\n            </summary>\t\n            <param name=\"blendState\"><dd>  <p>Pointer to a blend-state interface (see <strong><see cref=\"T:SharpDX.Direct3D11.BlendState\"/></strong>). Passing in <strong><c>null</c></strong> implies a default blend state. See remarks for further details.</p> </dd></param>\n            <param name=\"blendFactor\"><dd>  <p>Array of blend factors, one for each RGBA component. This requires a blend state object that specifies the <strong><see cref=\"F:SharpDX.Direct3D11.BlendOption.BlendFactor\"/></strong> option.</p> </dd></param>\t\n            <param name=\"multiSampleMask\"><dd>  <p>32-bit sample coverage. The default value is 0xffffffff. See remarks.</p> </dd></param>\t\n            <remarks>\t\n            <p>Blend state is used by the output-merger stage to determine how to blend together two pixel values. The two values are commonly the current pixel value and the pixel value already in the output render target. Use the <strong>blend operation</strong> to control where the two pixel values come from and how they are mathematically combined.</p><p>To create a blend-state interface, call <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateBlendState(SharpDX.Direct3D11.BlendStateDescription@,SharpDX.Direct3D11.BlendState)\"/></strong>.</p><p>Passing in <strong><c>null</c></strong> for the blend-state interface indicates to the runtime to set a default blending state.  The following table indicates the default blending parameters.</p><table> <tr><th>State</th><th>Default Value</th></tr> <tr><td>AlphaToCoverageEnable</td><td><strong><see cref=\"F:SharpDX.Result.False\"/></strong></td></tr> <tr><td>BlendEnable</td><td><strong><see cref=\"F:SharpDX.Result.False\"/></strong>[8]</td></tr> <tr><td>SrcBlend</td><td><see cref=\"F:SharpDX.Direct3D11.BlendOption.One\"/></td></tr> <tr><td>DstBlend</td><td><see cref=\"F:SharpDX.Direct3D11.BlendOption.Zero\"/></td></tr> <tr><td>BlendOp</td><td><see cref=\"F:SharpDX.Direct3D11.BlendOperation.Add\"/></td></tr> <tr><td>SrcBlendAlpha</td><td><see cref=\"F:SharpDX.Direct3D11.BlendOption.One\"/></td></tr> <tr><td>DstBlendAlpha</td><td><see cref=\"F:SharpDX.Direct3D11.BlendOption.Zero\"/></td></tr> <tr><td>BlendOpAlpha</td><td><see cref=\"F:SharpDX.Direct3D11.BlendOperation.Add\"/></td></tr> <tr><td>RenderTargetWriteMask[8]</td><td><see cref=\"F:SharpDX.Direct3D11.ColorWriteMaskFlags.All\"/>[8]</td></tr> </table><p>?</p><p>A sample mask determines which samples get updated in all the active render targets. The mapping of bits in a sample mask to samples in a multisample render target is the responsibility of an individual application. A sample mask is always applied; it is independent of whether multisampling is enabled, and does not depend on whether an application uses multisample render targets.</p><p> The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. </p>\t\n            </remarks>\t\n            <msdn-id>ff476462</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::OMSetBlendState([In, Optional] ID3D11BlendState* pBlendState,[In, Optional] const SHARPDX_COLOR4* BlendFactor,[In] unsigned int SampleMask)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::OMSetBlendState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.GraphicsDevice.SetDepthStencilState(SharpDX.Toolkit.Graphics.DepthStencilState,System.Int32)\">\n            <summary>\t\n            Sets the depth-stencil state of the output-merger stage.\n            </summary>\t\n            <param name=\"depthStencilState\"><dd>  <p>Pointer to a depth-stencil state interface (see <strong><see cref=\"T:SharpDX.Direct3D11.DepthStencilState\"/></strong>) to bind to the device. Set this to <strong><c>null</c></strong> to use the default state listed in <strong><see cref=\"T:SharpDX.Direct3D11.DepthStencilStateDescription\"/></strong>.</p> </dd></param>\t\n            <param name=\"stencilReference\"><dd>  <p>Reference value to perform against when doing a depth-stencil test. See remarks.</p> </dd></param>\t\n            <remarks>\t\n            <p>To create a depth-stencil state interface, call <strong><see cref=\"M:SharpDX.Direct3D11.Device.CreateDepthStencilState(SharpDX.Direct3D11.DepthStencilStateDescription@,SharpDX.Direct3D11.DepthStencilState)\"/></strong>.</p><p> The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. </p>\t\n            </remarks>\t\n            <msdn-id>ff476463</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::OMSetDepthStencilState([In, Optional] ID3D11DepthStencilState* pDepthStencilState,[In] unsigned int StencilRef)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::OMSetDepthStencilState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.GraphicsDevice.SetRasterizerState(SharpDX.Toolkit.Graphics.RasterizerState)\">\n            <summary>\t\n            <p>Sets the <strong>rasterizer state</strong> for the rasterizer stage of the pipeline.</p>\t\n            </summary>\t\n            <param name=\"rasterizerState\">The rasterizser state to set on this device.</param>\t\n            <msdn-id>ff476479</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::RSSetState([In, Optional] ID3D11RasterizerState* pRasterizerState)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::RSSetState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.GraphicsDevice.SetScissorRectangles(System.Int32,System.Int32,System.Int32,System.Int32)\">\n            <summary>\n            Binds a single scissor rectangle to the rasterizer stage.\n            </summary>\n            <param name=\"left\">The left.</param>\n            <param name=\"top\">The top.</param>\n            <param name=\"right\">The right.</param>\n            <param name=\"bottom\">The bottom.</param>\n            <remarks>\t\n            <p>All scissor rects must be set atomically as one operation. Any scissor rects not defined by the call are disabled.</p><p>The scissor rectangles will only be used if ScissorEnable is set to true in the rasterizer state (see <strong><see cref=\"T:SharpDX.Direct3D11.RasterizerStateDescription\"/></strong>).</p><p>Which scissor rectangle to use is determined by the SV_ViewportArrayIndex semantic output by a geometry shader (see shader semantic syntax). If a geometry shader does not make use of the SV_ViewportArrayIndex semantic then Direct3D will use the first scissor rectangle in the array.</p><p>Each scissor rectangle in the array corresponds to a viewport in an array of viewports (see <strong><see cref=\"M:SharpDX.Direct3D11.RasterizerStage.SetViewports(SharpDX.ViewportF)\"/></strong>).</p>\t\n            </remarks>\t\n            <msdn-id>ff476478</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::RSSetScissorRects([In] unsigned int NumRects,[In, Buffer, Optional] const void* pRects)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::RSSetScissorRects</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.GraphicsDevice.SetScissorRectangles(SharpDX.Rectangle[])\">\n            <summary>\n            Binds a set of scissor rectangles to the rasterizer stage.\n            </summary>\n            <param name=\"scissorRectangles\">The set of scissor rectangles to bind.</param>\n            <remarks>\t\n            <p>All scissor rects must be set atomically as one operation. Any scissor rects not defined by the call are disabled.</p><p>The scissor rectangles will only be used if ScissorEnable is set to true in the rasterizer state (see <strong><see cref=\"T:SharpDX.Direct3D11.RasterizerStateDescription\"/></strong>).</p><p>Which scissor rectangle to use is determined by the SV_ViewportArrayIndex semantic output by a geometry shader (see shader semantic syntax). If a geometry shader does not make use of the SV_ViewportArrayIndex semantic then Direct3D will use the first scissor rectangle in the array.</p><p>Each scissor rectangle in the array corresponds to a viewport in an array of viewports (see <strong><see cref=\"M:SharpDX.Direct3D11.RasterizerStage.SetViewports(SharpDX.ViewportF)\"/></strong>).</p>\t\n            </remarks>\t\n            <msdn-id>ff476478</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::RSSetScissorRects([In] unsigned int NumRects,[In, Buffer, Optional] const void* pRects)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::RSSetScissorRects</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.GraphicsDevice.GetViewport(System.Int32)\">\n            <summary>\n            Gets the viewport.\n            </summary>\n            <param name=\"index\">The index.</param>\n            <returns>Returns a viewport bind on a specified mulrendertarget</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.GraphicsDevice.SetViewports(System.Single,System.Single,System.Single,System.Single,System.Single,System.Single)\">\n            <summary>\n            Binds a single viewport to the rasterizer stage.\n            </summary>\n            <param name=\"x\">The x coord of the viewport.</param>\n            <param name=\"y\">The x coord of the viewport.</param>\n            <param name=\"width\">The width.</param>\n            <param name=\"height\">The height.</param>\n            <param name=\"minZ\">The min Z.</param>\n            <param name=\"maxZ\">The max Z.</param>\n            <remarks>\t\n            <p></p><p>All viewports must be set atomically as one operation. Any viewports not defined by the call are disabled.</p><p>Which viewport to use is determined by the SV_ViewportArrayIndex semantic output by a geometry shader; if a geometry shader does not specify the semantic, Direct3D will use the first viewport in the array.</p>\t\n            </remarks>\t\n            <msdn-id>ff476480</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::RSSetViewports([In] unsigned int NumViewports,[In, Buffer, Optional] const void* pViewports)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::RSSetViewports</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.GraphicsDevice.SetViewports(SharpDX.ViewportF)\">\n            <summary>\n            Binds a single viewport to the rasterizer stage.\n            </summary>\n            <param name=\"viewport\">The viewport.</param>\n            <remarks>\t\n            <p></p><p>All viewports must be set atomically as one operation. Any viewports not defined by the call are disabled.</p><p>Which viewport to use is determined by the SV_ViewportArrayIndex semantic output by a geometry shader; if a geometry shader does not specify the semantic, Direct3D will use the first viewport in the array.</p>\t\n            </remarks>\t\n            <msdn-id>ff476480</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::RSSetViewports([In] unsigned int NumViewports,[In, Buffer, Optional] const void* pViewports)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::RSSetViewports</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.GraphicsDevice.SetViewports(SharpDX.ViewportF[])\">\n            <summary>\n            Binds a set of viewports to the rasterizer stage.\n            </summary>\n            <param name = \"viewports\">The set of viewports to bind.</param>\n            <remarks>\t\n            <p></p><p>All viewports must be set atomically as one operation. Any viewports not defined by the call are disabled.</p><p>Which viewport to use is determined by the SV_ViewportArrayIndex semantic output by a geometry shader; if a geometry shader does not specify the semantic, Direct3D will use the first viewport in the array.</p>\t\n            </remarks>\t\n            <msdn-id>ff476480</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::RSSetViewports([In] unsigned int NumViewports,[In, Buffer, Optional] const void* pViewports)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::RSSetViewports</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.GraphicsDevice.ResetTargets\">\n            <summary>\n            Unbinds all depth-stencil buffer and render targets from the output-merger stage.\n            </summary>\n            <msdn-id>ff476464</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::OMSetRenderTargets([In] unsigned int NumViews,[In] const void** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::OMSetRenderTargets</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.GraphicsDevice.SetRenderTargets(SharpDX.Direct3D11.RenderTargetView[])\">\n            <summary>\t\n            <p>Bind one or more render targets atomically and the depth-stencil buffer to the output-merger stage.</p>\t\n            </summary>\t\n            <param name = \"renderTargetViews\">A set of render target views to bind.</param>\n            <remarks>\t\n            <p>The maximum number of active render targets a device can have active at any given time is set by a #define in D3D11.h called  D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT. It is invalid to try to set the same subresource to multiple render target slots.  Any render targets not defined by this call are set to <strong><c>null</c></strong>.</p><p>If any subresources are also currently bound for reading in a different stage or writing (perhaps in a different part of the pipeline),  those bind points will be set to <strong><c>null</c></strong>, in order to prevent the same subresource from being read and written simultaneously in a single rendering operation.</p><p> The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. </p><p>If the render-target views were created from an array resource type, then all of the render-target views must have the same array size.   This restriction also applies to the depth-stencil view, its array size must match that of the render-target views being bound.</p><p>The pixel shader must be able to simultaneously render to at least eight separate render targets. All of these render targets must access the same type of resource: Buffer, Texture1D, Texture1DArray, Texture2D, Texture2DArray, Texture3D, or TextureCube. All render targets must have the same size in all dimensions (width and height, and depth for 3D or array size for *Array types). If render targets use multisample anti-aliasing, all bound render targets and depth buffer must be the same form of multisample resource (that is, the sample counts must be the same). Each render target can have a different data format. These render target formats are not required to have identical bit-per-element counts.</p><p>Any combination of the eight slots for render targets can have a render target set or not set.</p><p>The same resource view cannot be bound to multiple render target slots simultaneously. However, you can set multiple non-overlapping resource views of a single resource as simultaneous multiple render targets.</p>\t\n            </remarks>\t\n            <msdn-id>ff476464</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::OMSetRenderTargets([In] unsigned int NumViews,[In] const void** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::OMSetRenderTargets</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.GraphicsDevice.SetRenderTargets(SharpDX.Direct3D11.RenderTargetView)\">\n            <summary>\t\n            Binds a single render target to the output-merger stage.\n            </summary>\t\n            <param name = \"renderTargetView\">A view of the render target to bind.</param>\n            <remarks>\t\n            <p>The maximum number of active render targets a device can have active at any given time is set by a #define in D3D11.h called  D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT. It is invalid to try to set the same subresource to multiple render target slots.  Any render targets not defined by this call are set to <strong><c>null</c></strong>.</p><p>If any subresources are also currently bound for reading in a different stage or writing (perhaps in a different part of the pipeline),  those bind points will be set to <strong><c>null</c></strong>, in order to prevent the same subresource from being read and written simultaneously in a single rendering operation.</p><p> The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. </p><p>If the render-target views were created from an array resource type, then all of the render-target views must have the same array size.   This restriction also applies to the depth-stencil view, its array size must match that of the render-target views being bound.</p><p>The pixel shader must be able to simultaneously render to at least eight separate render targets. All of these render targets must access the same type of resource: Buffer, Texture1D, Texture1DArray, Texture2D, Texture2DArray, Texture3D, or TextureCube. All render targets must have the same size in all dimensions (width and height, and depth for 3D or array size for *Array types). If render targets use multisample anti-aliasing, all bound render targets and depth buffer must be the same form of multisample resource (that is, the sample counts must be the same). Each render target can have a different data format. These render target formats are not required to have identical bit-per-element counts.</p><p>Any combination of the eight slots for render targets can have a render target set or not set.</p><p>The same resource view cannot be bound to multiple render target slots simultaneously. However, you can set multiple non-overlapping resource views of a single resource as simultaneous multiple render targets.</p>\t\n            </remarks>\t\n            <msdn-id>ff476464</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::OMSetRenderTargets([In] unsigned int NumViews,[In] const void** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::OMSetRenderTargets</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.GraphicsDevice.SetRenderTargets(SharpDX.Direct3D11.DepthStencilView,SharpDX.Direct3D11.RenderTargetView[])\">\n            <summary>\n            Binds a depth-stencil buffer and a set of render targets to the output-merger stage.\n            </summary>\n            <param name = \"depthStencilView\">A view of the depth-stencil buffer to bind.</param>\n            <param name = \"renderTargetViews\">A set of render target views to bind.</param>\n            <remarks>\t\n            <p>The maximum number of active render targets a device can have active at any given time is set by a #define in D3D11.h called  D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT. It is invalid to try to set the same subresource to multiple render target slots.  Any render targets not defined by this call are set to <strong><c>null</c></strong>.</p><p>If any subresources are also currently bound for reading in a different stage or writing (perhaps in a different part of the pipeline),  those bind points will be set to <strong><c>null</c></strong>, in order to prevent the same subresource from being read and written simultaneously in a single rendering operation.</p><p> The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. </p><p>If the render-target views were created from an array resource type, then all of the render-target views must have the same array size.   This restriction also applies to the depth-stencil view, its array size must match that of the render-target views being bound.</p><p>The pixel shader must be able to simultaneously render to at least eight separate render targets. All of these render targets must access the same type of resource: Buffer, Texture1D, Texture1DArray, Texture2D, Texture2DArray, Texture3D, or TextureCube. All render targets must have the same size in all dimensions (width and height, and depth for 3D or array size for *Array types). If render targets use multisample anti-aliasing, all bound render targets and depth buffer must be the same form of multisample resource (that is, the sample counts must be the same). Each render target can have a different data format. These render target formats are not required to have identical bit-per-element counts.</p><p>Any combination of the eight slots for render targets can have a render target set or not set.</p><p>The same resource view cannot be bound to multiple render target slots simultaneously. However, you can set multiple non-overlapping resource views of a single resource as simultaneous multiple render targets.</p>\t\n            </remarks>\t\n            <msdn-id>ff476464</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::OMSetRenderTargets([In] unsigned int NumViews,[In] const void** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::OMSetRenderTargets</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.GraphicsDevice.SetRenderTargets(SharpDX.Direct3D11.DepthStencilView,SharpDX.Direct3D11.RenderTargetView)\">\n            <summary>\n            Binds a depth-stencil buffer and a single render target to the output-merger stage.\n            </summary>\n            <param name = \"depthStencilView\">A view of the depth-stencil buffer to bind.</param>\n            <param name = \"renderTargetView\">A view of the render target to bind.</param>\n            <remarks>\t\n            <p>The maximum number of active render targets a device can have active at any given time is set by a #define in D3D11.h called  D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT. It is invalid to try to set the same subresource to multiple render target slots.  Any render targets not defined by this call are set to <strong><c>null</c></strong>.</p><p>If any subresources are also currently bound for reading in a different stage or writing (perhaps in a different part of the pipeline),  those bind points will be set to <strong><c>null</c></strong>, in order to prevent the same subresource from being read and written simultaneously in a single rendering operation.</p><p> The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. </p><p>If the render-target views were created from an array resource type, then all of the render-target views must have the same array size.   This restriction also applies to the depth-stencil view, its array size must match that of the render-target views being bound.</p><p>The pixel shader must be able to simultaneously render to at least eight separate render targets. All of these render targets must access the same type of resource: Buffer, Texture1D, Texture1DArray, Texture2D, Texture2DArray, Texture3D, or TextureCube. All render targets must have the same size in all dimensions (width and height, and depth for 3D or array size for *Array types). If render targets use multisample anti-aliasing, all bound render targets and depth buffer must be the same form of multisample resource (that is, the sample counts must be the same). Each render target can have a different data format. These render target formats are not required to have identical bit-per-element counts.</p><p>Any combination of the eight slots for render targets can have a render target set or not set.</p><p>The same resource view cannot be bound to multiple render target slots simultaneously. However, you can set multiple non-overlapping resource views of a single resource as simultaneous multiple render targets.</p>\t\n            </remarks>\t\n            <msdn-id>ff476464</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::OMSetRenderTargets([In] unsigned int NumViews,[In] const void** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::OMSetRenderTargets</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.GraphicsDevice.SetIndexBuffer(SharpDX.Toolkit.Graphics.Buffer,System.Boolean,System.Int32)\">\n            <summary>\t\n            <p>Bind an index buffer to the input-assembler stage.</p>\t\n            </summary>\t\n            <param name=\"indexBuffer\"><dd>  <p>A reference to an <strong><see cref=\"T:SharpDX.Direct3D11.Buffer\"/></strong> object, that contains indices. The index buffer must have been created with  the <strong><see cref=\"F:SharpDX.Direct3D11.BindFlags.IndexBuffer\"/></strong> flag.</p> </dd></param>\t\n            <param name=\"is32Bit\">Set to true if indices are 32-bit values (integer size) or false if they are 16-bit values (short size)</param>\t\n            <param name=\"offset\">Offset (in bytes) from the start of the index buffer to the first index to use. Default to 0</param>\t\n            <remarks>\t\n            <p>For information about creating index buffers, see How to: Create an Index Buffer.</p><p>Calling this method using a buffer that is currently bound for writing (i.e. bound to the stream output pipeline stage) will effectively bind  <strong><c>null</c></strong> instead because a buffer cannot be bound as both an input and an output at the same time.</p><p>The debug layer will generate a warning whenever a resource is prevented from being bound simultaneously as an input and an output, but this will  not prevent invalid data from being used by the runtime.</p><p> The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.</p>\t\n            </remarks>\t\n            <msdn-id>ff476453</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::IASetIndexBuffer([In, Optional] ID3D11Buffer* pIndexBuffer,[In] DXGI_FORMAT Format,[In] unsigned int Offset)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::IASetIndexBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.GraphicsDevice.SetVertexInputLayout(SharpDX.Toolkit.Graphics.VertexInputLayout)\">\n            <summary>\n            Sets the vertex input layout.\n            </summary>\n            <param name=\"inputLayout\">The input layout.</param>\n            <msdn-id>ff476454</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::IASetInputLayout([In, Optional] ID3D11InputLayout* pInputLayout)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::IASetInputLayout</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.GraphicsDevice.SetVertexBuffer``1(SharpDX.Toolkit.Graphics.Buffer{``0},System.Int32)\">\n            <summary>\n            Bind a vertex buffer on the slot #0 of the input-assembler stage.\n            </summary>\t\n            <param name=\"vertexBuffer\">The vertex buffer to bind to this slot. This vertex buffer must have been created with the <strong><see cref=\"F:SharpDX.Direct3D11.BindFlags.VertexBuffer\"/></strong> flag.</param>\t\n            <param name=\"vertexIndex\">The index is the number of vertex element between the first element of a vertex buffer and the first element that will be used.</param>\t\n            <remarks>\t\n            <p>For information about creating vertex buffers, see Create a Vertex Buffer.</p><p>Calling this method using a buffer that is currently bound for writing (i.e. bound to the stream output pipeline stage) will effectively bind <strong><c>null</c></strong> instead because a buffer cannot be bound as both an input and an output at the same time.</p><p>The debug layer will generate a warning whenever a resource is prevented from being bound simultaneously as an input and an output, but this will not prevent invalid data from being used by the runtime.</p><p> The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. </p>\t\n            </remarks>\t\n            <msdn-id>ff476456</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::IASetVertexBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[In, Buffer] const void* ppVertexBuffers,[In, Buffer] const void* pStrides,[In, Buffer] const void* pOffsets)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::IASetVertexBuffers</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.GraphicsDevice.SetVertexBuffer``1(System.Int32,SharpDX.Toolkit.Graphics.Buffer{``0},System.Int32)\">\n            <summary>\n            Bind a vertex buffer to the input-assembler stage.\n            </summary>\t\n            <param name=\"slot\">The first input slot for binding.</param>\t\n            <param name=\"vertexBuffer\">The vertex buffer to bind to this slot. This vertex buffer must have been created with the <strong><see cref=\"F:SharpDX.Direct3D11.BindFlags.VertexBuffer\"/></strong> flag.</param>\t\n            <param name=\"vertexIndex\">The index is the number of vertex element between the first element of a vertex buffer and the first element that will be used.</param>\t\n            <remarks>\t\n            <p>For information about creating vertex buffers, see Create a Vertex Buffer.</p><p>Calling this method using a buffer that is currently bound for writing (i.e. bound to the stream output pipeline stage) will effectively bind <strong><c>null</c></strong> instead because a buffer cannot be bound as both an input and an output at the same time.</p><p>The debug layer will generate a warning whenever a resource is prevented from being bound simultaneously as an input and an output, but this will not prevent invalid data from being used by the runtime.</p><p> The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.</p>\t\n            </remarks>\t\n            <msdn-id>ff476456</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::IASetVertexBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[In, Buffer] const void* ppVertexBuffers,[In, Buffer] const void* pStrides,[In, Buffer] const void* pOffsets)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::IASetVertexBuffers</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.GraphicsDevice.SetVertexBuffer(System.Int32,SharpDX.Direct3D11.Buffer,System.Int32,System.Int32)\">\n            <summary>\n            <p>Bind a vertex buffer to the input-assembler stage.</p>\t\n            </summary>\t\n            <param name=\"slot\">The first input slot for binding.</param>\t\n            <param name=\"vertexBuffer\">The vertex buffer to bind to this slot. This vertex buffer must have been created with the <strong><see cref=\"F:SharpDX.Direct3D11.BindFlags.VertexBuffer\"/></strong> flag.</param>\t\n            <param name=\"vertexStride\">The vertexStride is the size (in bytes) of the elements that are to be used from that vertex buffer.</param>\t\n            <param name=\"offsetInBytes\">The offset is the number of bytes between the first element of a vertex buffer and the first element that will be used.</param>\t\n            <remarks>\t\n            <p>For information about creating vertex buffers, see Create a Vertex Buffer.</p><p>Calling this method using a buffer that is currently bound for writing (i.e. bound to the stream output pipeline stage) will effectively bind <strong><c>null</c></strong> instead because a buffer cannot be bound as both an input and an output at the same time.</p><p>The debug layer will generate a warning whenever a resource is prevented from being bound simultaneously as an input and an output, but this will not prevent invalid data from being used by the runtime.</p><p> The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.</p>\t\n            </remarks>\t\n            <msdn-id>ff476456</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::IASetVertexBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[In, Buffer] const void* ppVertexBuffers,[In, Buffer] const void* pStrides,[In, Buffer] const void* pOffsets)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::IASetVertexBuffers</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.GraphicsDevice.ResetVertexBuffers\">\n            <summary>\n            Resets all vertex buffers bounded to a slot range. By default, It clears all the bounded buffers. See remarks.\n            </summary>\t\n            <remarks>\n            This is sometimes required to unding explicitly vertex buffers bounding to the input shader assembly, when a\n            vertex buffer is used as the output of the pipeline.\n            </remarks>\n            <msdn-id>ff476456</msdn-id>\t\n            <unmanaged>void ID3D11DeviceContext::IASetVertexBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[In, Buffer] const void* ppVertexBuffers,[In, Buffer] const void* pStrides,[In, Buffer] const void* pOffsets)</unmanaged>\t\n            <unmanaged-short>ID3D11DeviceContext::IASetVertexBuffers</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.GraphicsDevice.Present\">\n            <summary>\n            Presents the Backbuffer to the screen.\n            </summary>\n            <remarks>\n            This method is only working if a <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsPresenter\"/> is set on this device using <see cref=\"P:SharpDX.Toolkit.Graphics.GraphicsDevice.Presenter\"/> property.\n            </remarks>\n            <msdn-id>bb174576</msdn-id>\t\n            <unmanaged>HRESULT IDXGISwapChain::Present([In] unsigned int SyncInterval,[In] DXGI_PRESENT_FLAGS Flags)</unmanaged>\t\n            <unmanaged-short>IDXGISwapChain::Present</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.GraphicsDevice.GetOrCreateSharedData``1(SharpDX.Toolkit.Graphics.SharedDataType,System.Object,SharpDX.Toolkit.Graphics.GraphicsDevice.CreateSharedData{``0})\">\n            <summary>\n            Gets a shared data for this device context with a delegate to create the shared data if it is not present.\n            </summary>\n            <typeparam name=\"T\">Type of the shared data to get/create.</typeparam>\n            <param name=\"type\">Type of the data to share.</param>\n            <param name=\"key\">The key of the shared data.</param>\n            <param name=\"sharedDataCreator\">The shared data creator.</param>\n            <returns>An instance of the shared data. The shared data will be disposed by this <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/> instance.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.GraphicsDevice.GetOrCreateInputSignatureManager(System.Byte[],System.Int32)\">\n            <summary>\n            Gets or create an input signature manager for a particular signature.\n            </summary>\n            <param name=\"signatureBytecode\">The signature bytecode.</param>\n            <param name=\"signatureHashcode\">The signature hashcode.</param>\n            <returns></returns>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.GraphicsDevice.EffectPools\">\n            <summary>\n            Gets the effect pools.\n            </summary>\n            <value>The effect pools.</value>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.GraphicsDevice.BackBuffer\">\n            <summary>\n            Gets the back buffer sets by the current <see cref=\"P:SharpDX.Toolkit.Graphics.GraphicsDevice.Presenter\"/> setup on this device.\n            </summary>\n            <value>The back buffer. The returned value may be null if no <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsPresenter\"/> are setup on this device.</value>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.GraphicsDevice.DepthStencilBuffer\">\n            <summary>\n            Gets the depth stencil buffer sets by the current <see cref=\"P:SharpDX.Toolkit.Graphics.GraphicsDevice.Presenter\"/> setup on this device.\n            </summary>\n            <value>The depth stencil buffer. The returned value may be null if no <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsPresenter\"/> are setup on this device or no depth buffer was allocated.</value>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.GraphicsDevice.Presenter\">\n            <summary>\n            Gets or sets the current presenter use by the <see cref=\"M:SharpDX.Toolkit.Graphics.GraphicsDevice.Present\"/> method.\n            </summary>\n            <value>The current presenter.</value>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.GraphicsDevice.AutoViewportFromRenderTargets\">\n            <summary>\n            Gets or sets a value indicating whether the viewport is automatically calculated and set when a rendertarget is set. Default is true.\n            </summary>\n            <value><c>true</c> if the viewport is automatically calculated and set when a rendertarget is set; otherwise, <c>false</c>.</value>\n        </member>\n        <member name=\"E:SharpDX.Toolkit.Graphics.GraphicsDevice.DeviceLost\">\n            <summary>\n            Occurs when the device is going to be lost (for example before a reset).\n            </summary>\n        </member>\n        <member name=\"E:SharpDX.Toolkit.Graphics.GraphicsDevice.DeviceReset\">\n            <summary>\n            Occurs when a device is reset and an application needs to recreate all dependent resources.\n            </summary>\n        </member>\n        <member name=\"E:SharpDX.Toolkit.Graphics.GraphicsDevice.DeviceResetting\">\n            <summary>\n            Occurs when a device is resetting.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.GraphicsDevice.GraphicsDeviceStatus\">\n            <summary>\n            Gets the status of this device.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.GraphicsDevice.Viewport\">\n            <summary>\n            Gets the main viewport.\n            </summary>\n            <value>The main viewport.</value>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice.CreateSharedData`1\">\n            <summary>\n            A delegate called to create shareable data. See remarks.\n            </summary>\n            <typeparam name=\"T\">Type of the data to create.</typeparam>\n            <returns>A new instance of the data to share.</returns>\n            <remarks>\n            Because this method is being called from a lock region, this method should not be time consuming.\n            </remarks>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.IPixelData\">\n            <summary>\n            Interface used to write to an arbitrary pixel data structure.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.IPixelData.Format\">\n            <summary>\n            Gets the associated <see cref=\"T:SharpDX.Toolkit.Graphics.PixelFormat\"/>.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.IPixelData.Value\">\n            <summary>\n            Gets or sets the color on this pixel data as a HDR <see cref=\"T:SharpDX.Color4\"/> (128 bit, 4 x floats) .\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.IPixelData.Value32Bpp\">\n            <summary>\n            Gets or sets the color on this pixel data as a LDR <see cref=\"T:SharpDX.Color\"/> (32 bit, 1 x int) .\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.PixelData\">\n            <summary>\n            Provides typed structure to read and write to some <see cref=\"T:SharpDX.Toolkit.Graphics.PixelFormat\"/>.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.PixelData.R8\">\n            <summary>\n            Pixel format associated to <see cref=\"F:SharpDX.Toolkit.Graphics.PixelFormat.R8.UNorm\"/>.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.PixelData.R8G8\">\n            <summary>\n            Pixel format associated to <see cref=\"F:SharpDX.Toolkit.Graphics.PixelFormat.R8G8.UNorm\"/>.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.PixelData.R8G8B8A8\">\n            <summary>\n            Pixel format associated to <see cref=\"F:SharpDX.Toolkit.Graphics.PixelFormat.R8G8B8A8.UNorm\"/>.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.PixelData.R16\">\n            <summary>\n            Pixel format associated to <see cref=\"F:SharpDX.Toolkit.Graphics.PixelFormat.R16.UNorm\"/>.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.PixelData.R16G16\">\n            <summary>\n            Pixel format associated to <see cref=\"F:SharpDX.Toolkit.Graphics.PixelFormat.R16G16.UNorm\"/>.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.PixelData.R16G16B16A16\">\n            <summary>\n            Pixel format associated to <see cref=\"F:SharpDX.Toolkit.Graphics.PixelFormat.R16G16B16A16.UNorm\"/>.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.PixelFormat\">\n            <summary>\n            PixelFormat is equivalent to <see cref=\"T:SharpDX.DXGI.Format\"/>.\n            </summary>\n            <remarks>\n            This structure is implicitly castable to and from <see cref=\"T:SharpDX.DXGI.Format\"/>, you can use it inplace where <see cref=\"T:SharpDX.DXGI.Format\"/> is required\n            and vice-versa.\n            Usage is slightly different from <see cref=\"T:SharpDX.DXGI.Format\"/>, as you have to select the type of the pixel format first (<see cref=\"!:Typeless\"/>, <see cref=\"!:SInt\"/>...etc)\n            and then access the available pixel formats for this type. Example: PixelFormat.UNorm.R8.\n            </remarks>\n            <msdn-id>bb173059</msdn-id>\t\n            <unmanaged>DXGI_FORMAT</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.PixelFormat.Value\">\n            <summary>\n            Gets the value as a <see cref=\"T:SharpDX.DXGI.Format\"/> enum.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.PixelFormat.#ctor(SharpDX.DXGI.Format)\">\n            <summary>\n            Internal constructor.\n            </summary>\n            <param name=\"format\"></param>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.RenderTarget2D\">\n            <summary>\n            A RenderTarget2D frontend to <see cref=\"T:SharpDX.Direct3D11.Texture2D\"/>.\n            </summary>\n            <remarks>\n            This class instantiates a <see cref=\"T:SharpDX.Toolkit.Graphics.Texture2D\"/> with the binding flags <see cref=\"F:SharpDX.Direct3D11.BindFlags.RenderTarget\"/>.\n            This class is also castable to <see cref=\"T:SharpDX.Direct3D11.RenderTargetView\"/>.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.RenderTarget2D.op_Implicit(SharpDX.Toolkit.Graphics.RenderTarget2D)~SharpDX.Direct3D11.RenderTargetView\">\n            <summary>\n            RenderTargetView casting operator.\n            </summary>\n            <param name=\"from\">Source for the.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.RenderTarget2D.New(SharpDX.Toolkit.Graphics.GraphicsDevice,SharpDX.Direct3D11.Texture2DDescription)\">\n            <summary>\n            Creates a new <see cref=\"T:SharpDX.Toolkit.Graphics.RenderTarget2D\"/> from a <see cref=\"T:SharpDX.Direct3D11.Texture2DDescription\"/>.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"description\">The description.</param>\n            <returns>\n            A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.RenderTarget2D\"/> class.\n            </returns>\n            <msdn-id>ff476521</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateTexture2D([In] const D3D11_TEXTURE2D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture2D** ppTexture2D)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateTexture2D</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.RenderTarget2D.New(SharpDX.Toolkit.Graphics.GraphicsDevice,SharpDX.Direct3D11.Texture2D)\">\n            <summary>\n            Creates a new <see cref=\"T:SharpDX.Toolkit.Graphics.RenderTarget2D\"/> from a <see cref=\"T:SharpDX.Direct3D11.Texture2D\"/>.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"texture\">The native texture <see cref=\"T:SharpDX.Direct3D11.Texture2D\"/>.</param>\n            <returns>\n            A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.RenderTarget2D\"/> class.\n            </returns>\n            <msdn-id>ff476521</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateTexture2D([In] const D3D11_TEXTURE2D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture2D** ppTexture2D)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateTexture2D</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.RenderTarget2D.New(SharpDX.Toolkit.Graphics.GraphicsDevice,SharpDX.Direct3D11.RenderTargetView,System.Boolean)\">\n            <summary>\n            Creates a new <see cref=\"T:SharpDX.Toolkit.Graphics.RenderTarget2D\"/> from a <see cref=\"T:SharpDX.Direct3D11.RenderTargetView\"/>.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"renderTargetView\">The native texture <see cref=\"T:SharpDX.Direct3D11.RenderTargetView\"/>.</param>\n            <returns>\n            A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.RenderTarget2D\"/> class.\n            </returns>\n            <msdn-id>ff476521</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateTexture2D([In] const D3D11_TEXTURE2D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture2D** ppTexture2D)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateTexture2D</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.RenderTarget2D.New(SharpDX.Toolkit.Graphics.GraphicsDevice,System.Int32,System.Int32,SharpDX.Toolkit.Graphics.PixelFormat,SharpDX.Toolkit.Graphics.TextureFlags,System.Int32)\">\n            <summary>\n            Creates a new <see cref=\"T:SharpDX.Toolkit.Graphics.RenderTarget2D\"/> with a single mipmap.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"width\">The width.</param>\n            <param name=\"height\">The height.</param>\n            <param name=\"format\">Describes the format to use.</param>\n            <param name=\"flags\">Sets the texture flags (for unordered access...etc.)</param>\n            <param name=\"arraySize\">Size of the texture 2D array, default to 1.</param>\n            <returns>A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.RenderTarget2D\"/> class.</returns>\n            <msdn-id>ff476521</msdn-id>\n              <unmanaged>HRESULT ID3D11Device::CreateTexture2D([In] const D3D11_TEXTURE2D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture2D** ppTexture2D)</unmanaged>\n              <unmanaged-short>ID3D11Device::CreateTexture2D</unmanaged-short>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.RenderTarget2D.New(SharpDX.Toolkit.Graphics.GraphicsDevice,System.Int32,System.Int32,SharpDX.Toolkit.Graphics.MipMapCount,SharpDX.Toolkit.Graphics.PixelFormat,SharpDX.Toolkit.Graphics.TextureFlags,System.Int32)\">\n            <summary>\n            Creates a new <see cref=\"T:SharpDX.Toolkit.Graphics.RenderTarget2D\"/>.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"width\">The width.</param>\n            <param name=\"height\">The height.</param>\n            <param name=\"mipCount\">Number of mipmaps, set to true to have all mipmaps, set to an int &gt;=1 for a particular mipmap count.</param>\n            <param name=\"format\">Describes the format to use.</param>\n            <param name=\"flags\">Sets the texture flags (for unordered access...etc.)</param>\n            <param name=\"arraySize\">Size of the texture 2D array, default to 1.</param>\n            <returns>A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.RenderTarget2D\"/> class.</returns>\n            <msdn-id>ff476521</msdn-id>\n              <unmanaged>HRESULT ID3D11Device::CreateTexture2D([In] const D3D11_TEXTURE2D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture2D** ppTexture2D)</unmanaged>\n              <unmanaged-short>ID3D11Device::CreateTexture2D</unmanaged-short>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.RenderTarget2D.New(SharpDX.Toolkit.Graphics.GraphicsDevice,System.Int32,System.Int32,SharpDX.Toolkit.Graphics.MSAALevel,SharpDX.Toolkit.Graphics.PixelFormat,System.Int32)\">\n            <summary>\n            Creates a new <see cref=\"T:SharpDX.Toolkit.Graphics.RenderTarget2D\"/> using multisampling.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"width\">The width.</param>\n            <param name=\"height\">The height.</param>\n            <param name=\"format\">Describes the format to use.</param>\n            <param name=\"arraySize\">Size of the texture 2D array, default to 1.</param>\n            <param name=\"multiSampleCount\">The multisample count.</param>\n            <returns>A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.RenderTarget2D\"/> class.</returns>\n            <msdn-id>ff476521</msdn-id>\n              <unmanaged>HRESULT ID3D11Device::CreateTexture2D([In] const D3D11_TEXTURE2D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture2D** ppTexture2D)</unmanaged>\n              <unmanaged-short>ID3D11Device::CreateTexture2D</unmanaged-short>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.RenderTarget2D.CreateDescription(SharpDX.Toolkit.Graphics.GraphicsDevice,System.Int32,System.Int32,SharpDX.Toolkit.Graphics.PixelFormat,SharpDX.Toolkit.Graphics.TextureFlags,System.Int32)\">\n            <summary>\n            Creates a new texture description for a <see cref=\"T:SharpDX.Toolkit.Graphics.RenderTarget2D\"/> with a single mipmap.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"width\">The width.</param>\n            <param name=\"height\">The height.</param>\n            <param name=\"format\">Describes the format to use.</param>\n            <param name=\"flags\">Sets the texture flags (for unordered access...etc.)</param>\n            <param name=\"arraySize\">Size of the texture 2D array, default to 1.</param>\n            <returns>A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.RenderTarget2D\"/> class.</returns>\n            <msdn-id>ff476521</msdn-id>\n              <unmanaged>HRESULT ID3D11Device::CreateTexture2D([In] const D3D11_TEXTURE2D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture2D** ppTexture2D)</unmanaged>\n              <unmanaged-short>ID3D11Device::CreateTexture2D</unmanaged-short>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.RenderTarget2D.CreateDescription(SharpDX.Toolkit.Graphics.GraphicsDevice,System.Int32,System.Int32,SharpDX.Toolkit.Graphics.MipMapCount,SharpDX.Toolkit.Graphics.PixelFormat,SharpDX.Toolkit.Graphics.TextureFlags,System.Int32)\">\n            <summary>\n            Creates a new texture description <see cref=\"T:SharpDX.Toolkit.Graphics.RenderTarget2D\"/>.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"width\">The width.</param>\n            <param name=\"height\">The height.</param>\n            <param name=\"mipCount\">Number of mipmaps, set to true to have all mipmaps, set to an int &gt;=1 for a particular mipmap count.</param>\n            <param name=\"format\">Describes the format to use.</param>\n            <param name=\"flags\">Sets the texture flags (for unordered access...etc.)</param>\n            <param name=\"arraySize\">Size of the texture 2D array, default to 1.</param>\n            <returns>A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.RenderTarget2D\"/> class.</returns>\n            <msdn-id>ff476521</msdn-id>\n              <unmanaged>HRESULT ID3D11Device::CreateTexture2D([In] const D3D11_TEXTURE2D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture2D** ppTexture2D)</unmanaged>\n              <unmanaged-short>ID3D11Device::CreateTexture2D</unmanaged-short>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.RenderTarget2D.CreateDescription(SharpDX.Toolkit.Graphics.GraphicsDevice,System.Int32,System.Int32,SharpDX.Toolkit.Graphics.MSAALevel,SharpDX.Toolkit.Graphics.PixelFormat,System.Int32)\">\n            <summary>\n            Creates a new texture description <see cref=\"T:SharpDX.Toolkit.Graphics.RenderTarget2D\"/> using multisampling.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"width\">The width.</param>\n            <param name=\"height\">The height.</param>\n            <param name=\"format\">Describes the format to use.</param>\n            <param name=\"arraySize\">Size of the texture 2D array, default to 1.</param>\n            <param name=\"multiSampleCount\">The multisample count.</param>\n            <returns>A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.RenderTarget2D\"/> class.</returns>\n            <msdn-id>ff476521</msdn-id>\n              <unmanaged>HRESULT ID3D11Device::CreateTexture2D([In] const D3D11_TEXTURE2D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture2D** ppTexture2D)</unmanaged>\n              <unmanaged-short>ID3D11Device::CreateTexture2D</unmanaged-short>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.TextureCube\">\n            <summary>\n            A TextureCube frontend to <see cref=\"T:SharpDX.Direct3D11.Texture2D\"/>.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.TextureCube.Clone\">\n            <summary>\n            Makes a copy of this texture.\n            </summary>\n            <remarks>\n            This method doesn't copy the content of the texture.\n            </remarks>\n            <returns>\n            A copy of this texture.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.TextureCube.New(SharpDX.Toolkit.Graphics.GraphicsDevice,SharpDX.Direct3D11.Texture2DDescription)\">\n            <summary>\n            Creates a new texture from a <see cref=\"T:SharpDX.Direct3D11.Texture2DDescription\"/>.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"description\">The description.</param>\n            <returns>\n            A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.TextureCube\"/> class.\n            </returns>\n            <msdn-id>ff476521</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateTexture2D([In] const D3D11_TEXTURE2D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture2D** ppTexture2D)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateTexture2D</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.TextureCube.New(SharpDX.Toolkit.Graphics.GraphicsDevice,SharpDX.Direct3D11.Texture2D)\">\n            <summary>\n            Creates a new texture from a <see cref=\"T:SharpDX.Direct3D11.Texture2D\"/>.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"texture\">The native texture <see cref=\"T:SharpDX.Direct3D11.Texture2D\"/>.</param>\n            <returns>\n            A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.TextureCube\"/> class.\n            </returns>\n            <msdn-id>ff476521</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateTexture2D([In] const D3D11_TEXTURE2D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture2D** ppTexture2D)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateTexture2D</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.TextureCube.New(SharpDX.Toolkit.Graphics.GraphicsDevice,System.Int32,SharpDX.Toolkit.Graphics.PixelFormat,SharpDX.Toolkit.Graphics.TextureFlags,SharpDX.Direct3D11.ResourceUsage)\">\n            <summary>\n            Creates a new <see cref=\"T:SharpDX.Toolkit.Graphics.TextureCube\"/>.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"size\">The size (in pixels) of the top-level faces of the cube texture.</param>\n            <param name=\"format\">Describes the format to use.</param>\n            <param name=\"usage\">The usage.</param>\n            <param name=\"flags\">Sets the texture flags (for unordered access...etc.)</param>\n            <returns>\n            A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.Texture2D\"/> class.\n            </returns>\n            <msdn-id>ff476521</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateTexture2D([In] const D3D11_TEXTURE2D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture2D** ppTexture2D)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateTexture2D</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.TextureCube.New(SharpDX.Toolkit.Graphics.GraphicsDevice,System.Int32,SharpDX.Toolkit.Graphics.MipMapCount,SharpDX.Toolkit.Graphics.PixelFormat,SharpDX.Toolkit.Graphics.TextureFlags,SharpDX.Direct3D11.ResourceUsage)\">\n            <summary>\n            Creates a new <see cref=\"T:SharpDX.Toolkit.Graphics.TextureCube\"/>.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"size\">The size (in pixels) of the top-level faces of the cube texture.</param>\n            <param name=\"mipCount\">Number of mipmaps, set to true to have all mipmaps, set to an int &gt;=1 for a particular mipmap count.</param>\n            <param name=\"format\">Describes the format to use.</param>\n            <param name=\"usage\">The usage.</param>\n            <param name=\"flags\">Sets the texture flags (for unordered access...etc.)</param>\n            <returns>\n            A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.Texture2D\"/> class.\n            </returns>\n            <msdn-id>ff476521</msdn-id>\t\n            <unmanaged>HRESULT ID3D11Device::CreateTexture2D([In] const D3D11_TEXTURE2D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture2D** ppTexture2D)</unmanaged>\t\n            <unmanaged-short>ID3D11Device::CreateTexture2D</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.TextureCube.New``1(SharpDX.Toolkit.Graphics.GraphicsDevice,System.Int32,SharpDX.Toolkit.Graphics.PixelFormat,``0[][],SharpDX.Toolkit.Graphics.TextureFlags,SharpDX.Direct3D11.ResourceUsage)\">\n            <summary>\n            Creates a new <see cref=\"T:SharpDX.Toolkit.Graphics.TextureCube\"/> from a initial data..\n            </summary>\n            <typeparam name=\"T\">Type of a pixel data</typeparam>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"size\">The size (in pixels) of the top-level faces of the cube texture.</param>\n            <param name=\"format\">Describes the format to use.</param>\n            <param name=\"usage\">The usage.</param>\n            <param name=\"flags\">Sets the texture flags (for unordered access...etc.)</param>\n            <param name=\"textureData\">an array of 6 textures. See remarks</param>\n            <returns>A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.TextureCube\"/> class.</returns>\n            <msdn-id>ff476521</msdn-id>\n              <unmanaged>HRESULT ID3D11Device::CreateTexture2D([In] const D3D11_TEXTURE2D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture2D** ppTexture2D)</unmanaged>\n              <unmanaged-short>ID3D11Device::CreateTexture2D</unmanaged-short>\n            <remarks>\n            The first dimension of mipMapTextures describes the number of array (TextureCube Array), the second is the texture data for a particular cube face.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.TextureCube.New(SharpDX.Toolkit.Graphics.GraphicsDevice,System.Int32,SharpDX.Toolkit.Graphics.PixelFormat,SharpDX.DataBox[],SharpDX.Toolkit.Graphics.TextureFlags,SharpDX.Direct3D11.ResourceUsage)\">\n            <summary>\n            Creates a new <see cref=\"T:SharpDX.Toolkit.Graphics.TextureCube\"/> from a initial data..\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"size\">The size (in pixels) of the top-level faces of the cube texture.</param>\n            <param name=\"format\">Describes the format to use.</param>\n            <param name=\"usage\">The usage.</param>\n            <param name=\"flags\">Sets the texture flags (for unordered access...etc.)</param>\n            <param name=\"textureData\">an array of 6 textures. See remarks</param>\n            <returns>A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.TextureCube\"/> class.</returns>\n            <msdn-id>ff476521</msdn-id>\n              <unmanaged>HRESULT ID3D11Device::CreateTexture2D([In] const D3D11_TEXTURE2D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture2D** ppTexture2D)</unmanaged>\n              <unmanaged-short>ID3D11Device::CreateTexture2D</unmanaged-short>\n            <remarks>\n            The first dimension of mipMapTextures describes the number of array (TextureCube Array), the second is the texture data for a particular cube face.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.TextureCube.New(SharpDX.Toolkit.Graphics.GraphicsDevice,SharpDX.Toolkit.Graphics.Image,SharpDX.Toolkit.Graphics.TextureFlags,SharpDX.Direct3D11.ResourceUsage)\">\n            <summary>\n            Creates a new <see cref=\"T:SharpDX.Toolkit.Graphics.TextureCube\"/> directly from an <see cref=\"T:SharpDX.Toolkit.Graphics.Image\"/>.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"image\">An image in CPU memory.</param>\n            <param name=\"flags\">Sets the texture flags (for unordered access...etc.)</param>\n            <param name=\"usage\">The usage.</param>\n            <returns>A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.TextureCube\"/> class.</returns>\n            <msdn-id>ff476521</msdn-id>\n            <unmanaged>HRESULT ID3D11Device::CreateTexture2D([In] const D3D11_TEXTURE2D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture2D** ppTexture2D)</unmanaged>\n            <unmanaged-short>ID3D11Device::CreateTexture2D</unmanaged-short>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.TextureCube.Load(SharpDX.Toolkit.Graphics.GraphicsDevice,System.IO.Stream,SharpDX.Toolkit.Graphics.TextureFlags,SharpDX.Direct3D11.ResourceUsage)\">\n            <summary>\n            Loads a Cube texture from a stream.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"stream\">The stream to load the texture from.</param>\n            <param name=\"flags\">Sets the texture flags (for unordered access...etc.)</param>\n            <param name=\"usage\">Usage of the resource. Default is <see cref=\"F:SharpDX.Direct3D11.ResourceUsage.Immutable\"/> </param>\n            <exception cref=\"T:System.ArgumentException\">If the texture is not of type Cube</exception>\n            <returns>A texture</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.TextureCube.Load(SharpDX.Toolkit.Graphics.GraphicsDevice,System.String,SharpDX.Toolkit.Graphics.TextureFlags,SharpDX.Direct3D11.ResourceUsage)\">\n            <summary>\n            Loads a Cube texture from a stream.\n            </summary>\n            <param name=\"device\">The <see cref=\"T:SharpDX.Toolkit.Graphics.GraphicsDevice\"/>.</param>\n            <param name=\"filePath\">The file to load the texture from.</param>\n            <param name=\"flags\">Sets the texture flags (for unordered access...etc.)</param>\n            <param name=\"usage\">Usage of the resource. Default is <see cref=\"F:SharpDX.Direct3D11.ResourceUsage.Immutable\"/> </param>\n            <exception cref=\"T:System.ArgumentException\">If the texture is not of type Cube</exception>\n            <returns>A texture</returns>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.TextureDescription\">\n            <summary>\n            A Common description for all textures.\n            </summary>\n            <remarks>\n            This class exposes the union of all fields exposed by fields in <see cref=\"T:SharpDX.Direct3D11.Texture1DDescription\"/>, \n            <see cref=\"T:SharpDX.Direct3D11.Texture2DDescription\"/>, <see cref=\"T:SharpDX.Direct3D11.Texture3DDescription\"/>.\n            It provides also 2-way implicit conversions for 1D, 2D, 3D textures descriptions.\n            </remarks>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.TextureDescription.Dimension\">\n            <summary>\n            The dimension of a texture.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.TextureDescription.Width\">\n            <summary>\t\n            <dd> <p>Texture width (in texels). The  range is from 1 to <see cref=\"F:SharpDX.Direct3D11.Resource.MaximumTexture1DSize\"/> (16384). However, the range is actually constrained by the feature level at which you create the rendering device. For more information about restrictions, see Remarks.</p> </dd>\t\n            </summary>\t\n            <remarks>\n            This field is valid for all textures: <see cref=\"T:SharpDX.Toolkit.Graphics.Texture1D\"/>, <see cref=\"T:SharpDX.Toolkit.Graphics.Texture2D\"/>, <see cref=\"T:SharpDX.Toolkit.Graphics.Texture3D\"/> and <see cref=\"T:SharpDX.Toolkit.Graphics.TextureCube\"/>.\n            </remarks>\n            <msdn-id>ff476252</msdn-id>\t\n            <unmanaged>unsigned int Width</unmanaged>\t\n            <unmanaged-short>unsigned int Width</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.TextureDescription.Height\">\n            <summary>\t\n            <dd> <p>Texture height (in texels). The  range is from 1 to <see cref=\"F:SharpDX.Direct3D11.Resource.MaximumTexture3DSize\"/> (2048). However, the range is actually constrained by the feature level at which you create the rendering device. For more information about restrictions, see Remarks.</p> </dd>\t\n            </summary>\t\n            <remarks>\n            This field is only valid for <see cref=\"T:SharpDX.Toolkit.Graphics.Texture2D\"/>, <see cref=\"T:SharpDX.Toolkit.Graphics.Texture3D\"/> and <see cref=\"T:SharpDX.Toolkit.Graphics.TextureCube\"/>.\n            </remarks>\n            <msdn-id>ff476254</msdn-id>\t\n            <unmanaged>unsigned int Height</unmanaged>\t\n            <unmanaged-short>unsigned int Height</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.TextureDescription.Depth\">\n            <summary>\t\n            <dd> <p>Texture depth (in texels). The  range is from 1 to <see cref=\"F:SharpDX.Direct3D11.Resource.MaximumTexture3DSize\"/> (2048). However, the range is actually constrained by the feature level at which you create the rendering device. For more information about restrictions, see Remarks.</p> </dd>\t\n            </summary>\t\n            <remarks>\n            This field is only valid for <see cref=\"T:SharpDX.Toolkit.Graphics.Texture3D\"/>.\n            </remarks>\n            <msdn-id>ff476254</msdn-id>\t\n            <unmanaged>unsigned int Depth</unmanaged>\t\n            <unmanaged-short>unsigned int Depth</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.TextureDescription.ArraySize\">\n            <summary>\t\n            <dd> <p>Number of textures in the array. The  range is from 1 to <see cref=\"F:SharpDX.Direct3D11.Resource.MaximumTexture1DArraySize\"/> (2048). However, the range is actually constrained by the feature level at which you create the rendering device. For more information about restrictions, see Remarks.</p> </dd>\t\n            </summary>\t\n            <remarks>\n            This field is only valid for <see cref=\"T:SharpDX.Toolkit.Graphics.Texture1D\"/>, <see cref=\"T:SharpDX.Toolkit.Graphics.Texture2D\"/> and <see cref=\"T:SharpDX.Toolkit.Graphics.TextureCube\"/>\n            </remarks>\n            <remarks>\n            This field is only valid for textures: <see cref=\"T:SharpDX.Toolkit.Graphics.Texture1D\"/>, <see cref=\"T:SharpDX.Toolkit.Graphics.Texture2D\"/> and <see cref=\"T:SharpDX.Toolkit.Graphics.TextureCube\"/>.\n            </remarks>\n            <msdn-id>ff476252</msdn-id>\t\n            <unmanaged>unsigned int ArraySize</unmanaged>\t\n            <unmanaged-short>unsigned int ArraySize</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.TextureDescription.MipLevels\">\n            <summary>\t\n            <dd> <p>The maximum number of mipmap levels in the texture. See the remarks in <strong><see cref=\"T:SharpDX.Direct3D11.ShaderResourceViewDescription.Texture1DResource\"/></strong>. Use 1 for a multisampled texture; or 0 to generate a full set of subtextures.</p> </dd>\t\n            </summary>\t\n            <msdn-id>ff476252</msdn-id>\t\n            <unmanaged>unsigned int MipLevels</unmanaged>\t\n            <unmanaged-short>unsigned int MipLevels</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.TextureDescription.Format\">\n            <summary>\t\n            <dd> <p>Texture format (see <strong><see cref=\"T:SharpDX.DXGI.Format\"/></strong>).</p> </dd>\t\n            </summary>\t\n            <msdn-id>ff476252</msdn-id>\t\n            <unmanaged>DXGI_FORMAT Format</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT Format</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.TextureDescription.SampleDescription\">\n            <summary>\t\n            <dd> <p>Structure that specifies multisampling parameters for the texture. See <strong><see cref=\"T:SharpDX.DXGI.SampleDescription\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <remarks>\n            This field is only valid for <see cref=\"T:SharpDX.Toolkit.Graphics.Texture2D\"/>.\n            </remarks>\n            <msdn-id>ff476253</msdn-id>\t\n            <unmanaged>DXGI_SAMPLE_DESC SampleDesc</unmanaged>\t\n            <unmanaged-short>DXGI_SAMPLE_DESC SampleDesc</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.TextureDescription.Usage\">\n            <summary>\t\n            <dd> <p>Value that identifies how the texture is to be read from and written to. The most common value is <see cref=\"F:SharpDX.Direct3D11.ResourceUsage.Default\"/>; see <strong><see cref=\"T:SharpDX.Direct3D11.ResourceUsage\"/></strong> for all possible values.</p> </dd>\t\n            </summary>\t\n            <msdn-id>ff476252</msdn-id>\t\n            <unmanaged>D3D11_USAGE Usage</unmanaged>\t\n            <unmanaged-short>D3D11_USAGE Usage</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.TextureDescription.BindFlags\">\n            <summary>\t\n            <dd> <p>Flags (see <strong><see cref=\"T:SharpDX.Direct3D11.BindFlags\"/></strong>) for binding to pipeline stages. The flags can be combined by a logical OR. For a 1D texture, the allowable values are: <see cref=\"F:SharpDX.Direct3D11.BindFlags.ShaderResource\"/>, <see cref=\"F:SharpDX.Direct3D11.BindFlags.RenderTarget\"/> and <see cref=\"F:SharpDX.Direct3D11.BindFlags.DepthStencil\"/>.</p> </dd>\t\n            </summary>\t\n            <msdn-id>ff476252</msdn-id>\t\n            <unmanaged>D3D11_BIND_FLAG BindFlags</unmanaged>\t\n            <unmanaged-short>D3D11_BIND_FLAG BindFlags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.TextureDescription.CpuAccessFlags\">\n            <summary>\t\n            <dd> <p>Flags (see <strong><see cref=\"T:SharpDX.Direct3D11.CpuAccessFlags\"/></strong>) to specify the types of CPU access allowed. Use 0 if CPU access is not required. These flags can be combined with a logical OR.</p> </dd>\t\n            </summary>\t\n            <msdn-id>ff476252</msdn-id>\t\n            <unmanaged>D3D11_CPU_ACCESS_FLAG CPUAccessFlags</unmanaged>\t\n            <unmanaged-short>D3D11_CPU_ACCESS_FLAG CPUAccessFlags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.TextureDescription.OptionFlags\">\n            <summary>\t\n            <dd> <p>Flags (see <strong><see cref=\"T:SharpDX.Direct3D11.ResourceOptionFlags\"/></strong>) that identify other, less common resource options. Use 0 if none of these flags apply. These flags can be combined with a logical OR.</p> </dd>\t\n            </summary>\t\n            <msdn-id>ff476252</msdn-id>\t\n            <unmanaged>D3D11_RESOURCE_MISC_FLAG MiscFlags</unmanaged>\t\n            <unmanaged-short>D3D11_RESOURCE_MISC_FLAG MiscFlags</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.TextureDescription.ToStagingDescription\">\n            <summary>\n            Gets the staging description for this instance..\n            </summary>\n            <returns>A Staging description</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.TextureDescription.op_Implicit(SharpDX.Direct3D11.Texture1DDescription)~SharpDX.Toolkit.Graphics.TextureDescription\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:SharpDX.Direct3D11.Texture2DDescription\"/> to <see cref=\"T:SharpDX.Toolkit.Graphics.TextureDescription\"/>.\n            </summary>\n            <param name=\"description\">The texture description.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.TextureDescription.op_Implicit(SharpDX.Toolkit.Graphics.TextureDescription)~SharpDX.Direct3D11.Texture1DDescription\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:SharpDX.Toolkit.Graphics.TextureDescription\"/> to <see cref=\"T:SharpDX.Direct3D11.Texture2DDescription\"/>.\n            </summary>\n            <param name=\"description\">The texture description.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.TextureDescription.op_Implicit(SharpDX.Direct3D11.Texture2DDescription)~SharpDX.Toolkit.Graphics.TextureDescription\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:SharpDX.Direct3D11.Texture2DDescription\"/> to <see cref=\"T:SharpDX.Toolkit.Graphics.TextureDescription\"/>.\n            </summary>\n            <param name=\"description\">The texture description.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.TextureDescription.op_Implicit(SharpDX.Toolkit.Graphics.TextureDescription)~SharpDX.Direct3D11.Texture2DDescription\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:SharpDX.Toolkit.Graphics.TextureDescription\"/> to <see cref=\"T:SharpDX.Direct3D11.Texture2DDescription\"/>.\n            </summary>\n            <param name=\"description\">The texture description.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.TextureDescription.op_Implicit(SharpDX.Direct3D11.Texture3DDescription)~SharpDX.Toolkit.Graphics.TextureDescription\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:SharpDX.Direct3D11.Texture2DDescription\"/> to <see cref=\"T:SharpDX.Toolkit.Graphics.TextureDescription\"/>.\n            </summary>\n            <param name=\"description\">The texture description.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.TextureDescription.op_Implicit(SharpDX.Toolkit.Graphics.TextureDescription)~SharpDX.Direct3D11.Texture3DDescription\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:SharpDX.Toolkit.Graphics.TextureDescription\"/> to <see cref=\"T:SharpDX.Direct3D11.Texture3DDescription\"/>.\n            </summary>\n            <param name=\"description\">The texture description.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.TextureDescription.op_Implicit(SharpDX.Toolkit.Graphics.ImageDescription)~SharpDX.Toolkit.Graphics.TextureDescription\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:SharpDX.Toolkit.Graphics.ImageDescription\"/> to <see cref=\"T:SharpDX.Toolkit.Graphics.TextureDescription\"/>.\n            </summary>\n            <param name=\"description\">The image description.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.TextureDescription.op_Implicit(SharpDX.Toolkit.Graphics.TextureDescription)~SharpDX.Toolkit.Graphics.ImageDescription\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:SharpDX.Toolkit.Graphics.ImageDescription\"/> to <see cref=\"T:SharpDX.Toolkit.Graphics.TextureDescription\"/>.\n            </summary>\n            <param name=\"description\">The image description.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.VertexPositionColor\">\n            <summary>\n            Describes a custom vertex format structure that contains position and color information. \n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.VertexPositionColor.#ctor(SharpDX.Vector3,SharpDX.Color)\">\n            <summary>\n            Initializes a new <see cref=\"T:SharpDX.Toolkit.Graphics.VertexPositionColor\"/> instance.\n            </summary>\n            <param name=\"position\">The position of this vertex.</param>\n            <param name=\"color\">The color of this vertex.</param>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.VertexPositionColor.Position\">\n            <summary>\n            XYZ position.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.VertexPositionColor.Color\">\n            <summary>\n            The vertex color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.VertexPositionColor.Size\">\n            <summary>\n            Defines structure byte size.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.ViewType\">\n            <summary>\n            Defines how a view is selected from a resource.\n            </summary>\n            <remarks>\n            This selection model is taken from Nuaj by Patapom (http://wiki.patapom.com/index.php/Nuaj)\n            </remarks>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.ViewType.Full\">\n            <summary>\n            Gets a texture view for the whole texture for all mips/arrays dimensions.\n            </summary>\n            <example>Here is what the view covers with whatever mipLevelIndex/arrayIndex\n            \n                   Array0 Array1 Array2\n                  ______________________\n             Mip0 |   X  |   X  |   X  |\n                  |------+------+------|\n             Mip1 |   X  |   X  |   X  |\n                  |------+------+------|\n             Mip2 |   X  |   X  |   X  |\n                  ----------------------\n            </example>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.ViewType.Single\">\n            <summary>\n            Gets a single texture view at the specified index in the mip hierarchy and in the array of textures\n            The texture view contains a single texture element at the specified mip level and array index\n            </summary>\n            <example>Here is what the view covers with mipLevelIndex=1 and mrrayIndex=1\n            \n                   Array0 Array1 Array2\n                  ______________________\n             Mip0 |      |      |      |\n                  |------+------+------|\n             Mip1 |      |  X   |      |\n                  |------+------+------|\n             Mip2 |      |      |      |\n                  ----------------------\n            </example>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.ViewType.ArrayBand\">\n            <summary>\n            Gets a band texture view at the specified index in the mip hierarchy and in the array of textures\n            The texture view contains all the mip level texture elements from the specified mip level and array index\n            </summary>\n            <example>Here is what the view covers with mipLevelIndex=1 and mrrayIndex=1\n            \n                   Array0 Array1 Array2\n                  ______________________\n             Mip0 |      |      |      |\n                  |------+------+------|\n             Mip1 |      |  X   |      |\n                  |------+------+------|\n             Mip2 |      |  X   |      |\n                  ----------------------\n            </example>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.ViewType.MipBand\">\n            <summary>\n            Gets a band texture view at the specified index in the mip hierarchy and in the array of textures\n            The texture view contains all the array texture elements from the specified mip level and array index\n            </summary>\n            <example>Here is what the view covers with mipLevelIndex=1 and mrrayIndex=1\n            \n                   Array0 Array1 Array2\n                  ______________________\n             Mip0 |      |      |      |\n                  |------+------+------|\n             Mip1 |      |  X   |  X   |\n                  |------+------+------|\n             Mip2 |      |      |      |\n                  ----------------------\n            </example>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.WICHelper.ToDXGI(System.Guid)\">\n            <summary>\n            Converts a WIC <see cref=\"T:SharpDX.WIC.PixelFormat\"/> to a <see cref=\"T:SharpDX.DXGI.Format\"/>.\n            </summary>\n            <param name=\"guid\">A WIC <see cref=\"T:SharpDX.WIC.PixelFormat\"/> </param>\n            <returns>A <see cref=\"T:SharpDX.DXGI.Format\"/></returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.WICHelper.ToWIC(SharpDX.DXGI.Format,System.Guid@)\">\n            <summary>\n            Converts a <see cref=\"T:SharpDX.DXGI.Format\"/> to a a WIC <see cref=\"T:SharpDX.WIC.PixelFormat\"/>.\n            </summary>\n            <param name=\"format\">A <see cref=\"T:SharpDX.DXGI.Format\"/></param>\n            <param name=\"guid\">A WIC <see cref=\"T:SharpDX.WIC.PixelFormat\"/> Guid.</param>\n            <returns>True if conversion succeed, false otherwise.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.WICHelper.GetBitsPerPixel(System.Guid)\">\n            <summary>\n            Gets the number of bits per pixels for a WIC <see cref=\"T:SharpDX.WIC.PixelFormat\"/> Guid.\n            </summary>\n            <param name=\"targetGuid\">A WIC <see cref=\"T:SharpDX.WIC.PixelFormat\"/> Guid.</param>\n            <returns>The number of bits per pixels for a WIC. If this method is failing to calculate the number of pixels, return 0.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.WICHelper.DecodeMetadata(SharpDX.Toolkit.Graphics.WICFlags,SharpDX.WIC.BitmapDecoder,SharpDX.WIC.BitmapFrameDecode,System.Guid@)\">\n            <summary>\n            Determines metadata for image\n            </summary>\n            <param name=\"flags\">The flags.</param>\n            <param name=\"decoder\">The decoder.</param>\n            <param name=\"frame\">The frame.</param>\n            <param name=\"pixelFormat\">The pixel format.</param>\n            <returns></returns>\n            <exception cref=\"T:System.InvalidOperationException\">If pixel format is not supported.</exception>\n        </member>\n    </members>\n</doc>\n"
  },
  {
    "path": "3rd/SharpDX/SharpDX.Toolkit.xml",
    "content": "<?xml version=\"1.0\"?>\n<doc>\n    <assembly>\n        <name>SharpDX.Toolkit</name>\n    </assembly>\n    <members>\n        <member name=\"T:SharpDX.Toolkit.AssemblyDoc\">\n            <summary>\n            The <see cref=\"A:SharpDX.Toolkit\"/> assembly provides a high level DirectX API.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Content.AssetNotFoundException\">\n            <summary>\n            Exception when an asset was not found from the <see cref=\"T:SharpDX.Toolkit.Content.ContentManager\"/>.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Content.AssetNotFoundException.#ctor(System.String)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Content.AssetNotFoundException\"/> class.\n            </summary>\n            <param name=\"message\">The message.</param>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Content.ContentManager\">\n            <summary>\n            The content manager implementation is responsible to load and store content data (texture, songs, effects...etc.) using \n            several <see cref=\"T:SharpDX.Toolkit.Content.IContentResolver\"/> to resolve a stream from an asset name and several registered <see cref=\"T:SharpDX.Toolkit.Content.IContentReader\"/>\n            to convert data from stream.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Content.IContentManager\">\n            <summary>\n            The content manager interface provides a service to load and store content data (texture, songs, effects...etc.).\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Content.IContentManager.Load``1(System.String)\">\n            <summary>\n            Loads an asset that has been processed by the Content Pipeline.  Reference page contains code sample.\n            </summary>\n            <typeparam name=\"T\"></typeparam>\n            <param name=\"assetNameWithExtension\">Full asset name (with its extension)</param>\n            <returns>``0.</returns>\n            <exception cref=\"T:SharpDX.Toolkit.Content.AssetNotFoundException\">If the asset was not found from all <see cref=\"T:SharpDX.Toolkit.Content.IContentResolver\"/>.</exception>\n            <exception cref=\"T:System.NotSupportedException\">If no content reader was suitable to decode the asset.</exception>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Content.IContentManager.Unload\">\n            <summary>\n            Unloads all data that was loaded by this ContentManager. All data will be disposed.\n            </summary>\n            <remarks>\n            Unlike <see cref=\"M:SharpDX.Toolkit.Content.ContentManager.Load``1(System.String)\"/> method, this method is not threadsafe and must be called by a single caller at a single time.\n            </remarks>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Content.IContentManager.ServiceProvider\">\n            <summary>\n            Gets the service provider associated with the ContentManager.\n            </summary>\n            <value>The service provider.</value>\n            <remarks>\n            The service provider can be used by some <see cref=\"T:SharpDX.Toolkit.Content.IContentReader\"/> when for example a <see cref=\"!:SharpDX.Toolkit.Graphics.GraphicsDevice\"/> needs to be \n            used to instantiate a content.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Content.ContentManager.#ctor(System.IServiceProvider)\">\n            <summary>\n            Initializes a new instance of ContentManager.  Reference page contains code sample.\n            </summary>\n            <param name=\"serviceProvider\">The service provider that the ContentManager should use to locate services.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Content.ContentManager.Load``1(System.String)\">\n            <summary>\n            Loads an asset that has been processed by the Content Pipeline.  Reference page contains code sample.\n            </summary>\n            <typeparam name=\"T\"></typeparam>\n            <param name=\"assetNameWithExtension\">Full asset name (with its extension)</param>\n            <returns>``0.</returns>\n            <exception cref=\"T:SharpDX.Toolkit.Content.AssetNotFoundException\">If the asset was not found from all <see cref=\"T:SharpDX.Toolkit.Content.IContentResolver\"/>.</exception>\n            <exception cref=\"T:System.NotSupportedException\">If no content reader was suitable to decode the asset.</exception>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Content.ContentManager.Unload\">\n            <summary>\n            Unloads all data that was loaded by this ContentManager. All data will be disposed.\n            </summary>\n            <remarks>\n            Unlike <see cref=\"M:SharpDX.Toolkit.Content.ContentManager.Load``1(System.String)\"/> method, this method is not threadsafe and must be called by a single caller at a single time.\n            </remarks>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Content.ContentManager.Resolvers\">\n            <summary>\n            Add or remove registered <see cref=\"T:SharpDX.Toolkit.Content.IContentResolver\"/> to this instance.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Content.ContentManager.Readers\">\n            <summary>\n            Add or remove registered <see cref=\"T:SharpDX.Toolkit.Content.IContentReader\"/> to this instance.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Content.ContentManager.ServiceProvider\">\n            <summary>\n            Gets the service provider associated with the ContentManager.\n            </summary>\n            <value>The service provider.</value>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Content.ContentManager.RootDirectory\">\n            <summary>\n            Gets or sets the root directory.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Content.ContentReaderAttribute\">\n            <summary>\n            This attributes is used by data that are providing a <see cref=\"T:SharpDX.Toolkit.Content.IContentReader\"/> for decoding data from a stream.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Content.ContentReaderAttribute.#ctor(System.Type)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Content.ContentReaderAttribute\"/> class.\n            </summary>\n            <param name=\"contentReaderType\">Type of the content reader.</param>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Content.ContentReaderAttribute.ContentReaderType\">\n            <summary>\n            Gets the type of the content reader.\n            </summary>\n            <value>The type of the content reader.</value>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Content.FileSystemContentResolver\">\n            <summary>\n            This <see cref=\"T:SharpDX.Toolkit.Content.IContentResolver\"/> is loading an asset name from a root directory from a physical disk.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Content.IContentResolver\">\n            <summary>\n            A content resolver is in charge of locating a stream from an asset name.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Content.IContentResolver.Resolve(System.String)\">\n            <summary>\n            Resolves the specified asset name to a stream.\n            </summary>\n            <param name=\"assetName\">Name of the asset.</param>\n            <returns>A Stream of the asset. This value can be null if this resolver was not able to locate the asset.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Content.FileSystemContentResolver.#ctor(System.String)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Content.FileSystemContentResolver\"/> class.\n            </summary>\n            <param name=\"rootDirectory\">The root directory.</param>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Content.FileSystemContentResolver.RootDirectory\">\n            <summary>\n            Gets the root directory from where assets will be loaded from the disk.\n            </summary>\n            <value>The root directory.</value>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Content.IContentReader\">\n            <summary>\n            A content reader is in charge of reading object data from a stream.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Content.IContentReader.ReadContent(SharpDX.Toolkit.Content.IContentManager,System.String,System.IO.Stream,System.Boolean@)\">\n            <summary>\n            Reads the content of a particular data from a stream.\n            </summary>\n            <param name=\"contentManager\">The content manager.</param>\n            <param name=\"assetName\">The name of the asset associated with the stream.</param>\n            <param name=\"stream\">The steam of the asset to load data from.</param>\n            <param name=\"keepStreamOpen\"><c>true</c> to keep the stream opened after the content was read, otherwise the stream will be closed after if this content reader succeeded to read the data.</param>\n            <returns>The data decoded from the stream, or null if the kind of asset is not supported by this content reader.</returns>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Content.NamespaceDoc\">\n            <summary>\n            The <see cref=\"N:SharpDX.Toolkit.Content\"/> namespace provides classes to handle game content.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Diagnostics.LogMessage\">\n            <summary>\n            Describes a log message.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Diagnostics.LogMessage.#ctor(SharpDX.Toolkit.Diagnostics.LogMessageType,System.String)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Diagnostics.LogMessage\"/> class.\n            </summary>\n            <param name=\"type\">The type.</param>\n            <param name=\"text\">The text.</param>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Diagnostics.LogMessage.Type\">\n            <summary>\n            Type of message.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Diagnostics.LogMessage.Text\">\n            <summary>\n            Text of the message.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Diagnostics.LogMessage.ToString\">\n            <inheritdoc/>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Diagnostics.LogMessageType\">\n            <summary>\n            Type of a log message.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Diagnostics.LogMessageType.Info\">\n            <summary>\n            Information message.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Diagnostics.LogMessageType.Warning\">\n            <summary>\n            Warning message.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Diagnostics.LogMessageType.Error\">\n            <summary>\n            Error message.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Diagnostics.Logger\">\n            <summary>\n            Class used to log warning, error, info messages.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Diagnostics.Logger.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Diagnostics.Logger\"/> class.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Diagnostics.Logger.Messages\">\n            <summary>\n            List of logged messages.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Diagnostics.Logger.Error(System.String)\">\n            <summary>\n            Logs an Error with the specified error message.\n            </summary>\n            <param name=\"errorMessage\">The error message.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Diagnostics.Logger.Error(System.String,System.Object[])\">\n            <summary>\n            Logs an Error with the specified error message.\n            </summary>\n            <param name=\"errorMessage\">The error message.</param>\n            <param name=\"parameters\">The parameters.</param>\n            <exception cref=\"T:System.ArgumentNullException\"></exception>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Diagnostics.Logger.Warning(System.String)\">\n            <summary>\n            Logs a warning with the specified warning message.\n            </summary>\n            <param name=\"warningMessage\">The warning message.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Diagnostics.Logger.Warning(System.String,System.Object[])\">\n            <summary>\n            Logs a warning with the specified warning message.\n            </summary>\n            <param name=\"warningMessage\">The warning message.</param>\n            <param name=\"parameters\">The parameters.</param>\n            <exception cref=\"T:System.ArgumentNullException\"></exception>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Diagnostics.Logger.Info(System.String)\">\n            <summary>\n            Logs a info with the specified info message.\n            </summary>\n            <param name=\"infoMessage\">The info message.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Diagnostics.Logger.Info(System.String,System.Object[])\">\n            <summary>\n            Logs a warning with the specified info message.\n            </summary>\n            <param name=\"infoMessage\">The info message.</param>\n            <param name=\"parameters\">The parameters.</param>\n            <exception cref=\"T:System.ArgumentNullException\"></exception>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Diagnostics.Logger.LogMessage(SharpDX.Toolkit.Diagnostics.LogMessage)\">\n            <summary>\n            Logs the message.\n            </summary>\n            <param name=\"message\">The message.</param>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Diagnostics.Logger.HasErrors\">\n            <summary>\n            Gets a value indicating whether this instance has errors.\n            </summary>\n            <value><c>true</c> if this instance has errors; otherwise, <c>false</c>.</value>\n        </member>\n        <member name=\"E:SharpDX.Toolkit.Diagnostics.Logger.NewMessageLogged\">\n            <summary>\n            Occurs when a new message is logged.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Diagnostics.Logger.LogAction\">\n            <summary>\n            An action to log a message.\n            </summary>\n            <param name=\"logger\">The logger.</param>\n            <param name=\"message\">The message.</param>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Diagnostics.NamespaceDoc\">\n            <summary>\n            The <see cref=\"N:SharpDX.Toolkit.Diagnostics\"/> namespace provides classes to help game diagnostics.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.AttributeData\">\n            <summary>\n            An attribute defined for a <see cref=\"T:SharpDX.Toolkit.Graphics.EffectData.Pass\"/> or <see cref=\"!:Model\"/>.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.AttributeData.Name\">\n            <summary>\n            Name of this attribute.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.AttributeData.Value\">\n            <summary>\n            Value of this attribute.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.AttributeData.SharpDX#Serialization#IDataSerializable#Serialize(SharpDX.Serialization.BinarySerializer)\">\n            <inheritdoc/>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.EffectDataContentReader\">\n            <summary>\n            Content reader for <see cref=\"T:SharpDX.Toolkit.Graphics.EffectData\"/>.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.EffectCompilerResult\">\n            <summary>\n            Result of a compilation.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectCompilerResult.#ctor(System.String,SharpDX.Toolkit.Graphics.EffectData,SharpDX.Toolkit.Diagnostics.Logger)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.EffectCompilerResult\"/> class.\n            </summary>\n            <param name=\"dependencyFilePath\">The path to dependency file (may be null).</param>\n            <param name=\"effectData\">The EffectData.</param>\n            <param name=\"logger\">The logger.</param>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectCompilerResult.DependencyFilePath\">\n            <summary>\n            The effect dependency list (a list of files and includes that this effect is timestamp dependent).\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.EffectCompilerResult.EffectData\">\n            <summary>\n            Gets the EffectData.\n            </summary>\n            <value>The EffectData.</value>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.EffectCompilerResult.HasErrors\">\n            <summary>\n            Gets a value indicating whether this instance has errors.\n            </summary>\n            <value><c>true</c> if this instance has errors; otherwise, <c>false</c>.</value>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.EffectCompilerResult.Logger\">\n            <summary>\n            Gets the logger containing compilation messages..\n            </summary>\n            <value>The logger.</value>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.EffectData\">\n            <summary>\n            Container for shader bytecodes and effect metadata.\n            </summary>\n            <remarks>\n            This class is responsible to store shader bytecodes, effects, techniques, passes...etc.\n            It is working like an archive and is able to store multiple effect in a single object.\n            It is serializable using <see cref=\"M:SharpDX.Toolkit.Graphics.EffectData.Load(System.IO.Stream)\"/> and <see cref=\"M:SharpDX.Toolkit.Graphics.EffectData.Save(System.IO.Stream)\"/> method.\n            </remarks>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectData.Shaders\">\n            <summary>\n            List of compiled shaders.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectData.Effects\">\n            <summary>\n            List of effects.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectData.Save(System.IO.Stream)\">\n            <summary>\n            Saves this <see cref=\"T:SharpDX.Toolkit.Graphics.EffectData\"/> instance to the specified stream.\n            </summary>\n            <param name=\"stream\">The stream.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectData.Save(System.String)\">\n            <summary>\n            Saves this <see cref=\"T:SharpDX.Toolkit.Graphics.EffectData\"/> instance to the specified file.\n            </summary>\n            <param name=\"fileName\">The output filename.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectData.MergeFrom(SharpDX.Toolkit.Graphics.EffectData,System.Boolean)\">\n            <summary>\n            Merges an existing <see cref=\"T:SharpDX.Toolkit.Graphics.EffectData\"/> into this instance.\n            </summary>\n            <param name=\"source\">The EffectData to merge.</param>\n            <param name=\"allowOverride\">if set to <c>true</c> [allow override].</param>\n            <exception cref=\"T:System.InvalidOperationException\"></exception>\n            <exception cref=\"T:System.InvalidOperationException\">If the merge failed.</exception>\n            <remarks>This method is useful to build an archive of several effects.</remarks>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectData.MergeFrom(SharpDX.Toolkit.Graphics.EffectData,SharpDX.Toolkit.Diagnostics.Logger,System.Boolean)\">\n            <summary>\n            Merges an existing <see cref=\"T:SharpDX.Toolkit.Graphics.EffectData\"/> into this instance.\n            </summary>\n            <param name=\"source\">The EffectData to merge.</param>\n            <param name=\"logger\">Logger used to report merging errors.</param>\n            <param name=\"allowOverride\">if set to <c>true</c> [allow override].</param>\n            <returns><c>true</c> if XXXX, <c>false</c> otherwise</returns>\n            <remarks>This method is useful to build an archive of several effects.</remarks>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectData.Load(System.IO.Stream)\">\n            <summary>\n            Loads an <see cref=\"T:SharpDX.Toolkit.Graphics.EffectData\"/> from the specified stream.\n            </summary>\n            <param name=\"stream\">The stream.</param>\n            <returns>An <see cref=\"T:SharpDX.Toolkit.Graphics.EffectData\"/>. Null if the stream is not a serialized <see cref=\"T:SharpDX.Toolkit.Graphics.EffectData\"/>.</returns>\n            <remarks>\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectData.Load(System.Byte[])\">\n            <summary>\n            Loads an <see cref=\"T:SharpDX.Toolkit.Graphics.EffectData\"/> from the specified buffer.\n            </summary>\n            <param name=\"buffer\">The buffer.</param>\n            <returns>An <see cref=\"T:SharpDX.Toolkit.Graphics.EffectData\"/> </returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectData.Load(System.String)\">\n            <summary>\n            Loads an <see cref=\"T:SharpDX.Toolkit.Graphics.EffectData\"/> from the specified file.\n            </summary>\n            <param name=\"fileName\">The filename.</param>\n            <returns>An <see cref=\"T:SharpDX.Toolkit.Graphics.EffectData\"/> </returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectData.SharpDX#Serialization#IDataSerializable#Serialize(SharpDX.Serialization.BinarySerializer)\">\n            <inheritdoc/>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectData.CompilerArguments.FilePath\">\n            <summary>\n            The absolute path to the FX source file used to compile this effect.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectData.CompilerArguments.DependencyFilePath\">\n            <summary>\n            The absolute path to dependency filepath generated when compiling this effect.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectData.CompilerArguments.CompilerFlags\">\n            <summary>\n            The flags used to compile an effect.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectData.CompilerArguments.Macros\">\n            <summary>\n            The macros used to compile this effect (may be null).\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectData.CompilerArguments.IncludeDirectoryList\">\n            <summary>\n            The list of include directory used to compile this file (may be null)\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectData.ShaderMacro.Name\">\n            <summary>\n            The name of the macro.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectData.ShaderMacro.Value\">\n            <summary>\n            The value of the macro.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectData.ShaderMacro.#ctor(System.String,System.Object)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.EffectData.ShaderMacro\"/> struct.\n            </summary>\n            <param name=\"name\">The name.</param>\n            <param name=\"value\">The value.</param>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.EffectData.ShaderLink\">\n            <summary>\n            A link to a compiled shader.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectData.ShaderLink.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.EffectData.ShaderLink\"/> class.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectData.ShaderLink.#ctor(System.Int32)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.EffectData.ShaderLink\"/> class.\n            </summary>\n            <param name=\"index\">The index in the shader pool.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectData.ShaderLink.#ctor(System.String)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.EffectData.ShaderLink\"/> class.\n            </summary>\n            <param name=\"importName\">Name of the import function.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectData.ShaderLink.SharpDX#Serialization#IDataSerializable#Serialize(SharpDX.Serialization.BinarySerializer)\">\n            <inheritdoc/>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.EffectData.ShaderLink.IsImport\">\n            <summary>\n            Gets a value indicating whether this is an import.\n            </summary>\n            <value><c>true</c> if this is an import; otherwise, <c>false</c>.</value>\n            <remarks>\n            When this is an import, the <see cref=\"P:SharpDX.Toolkit.Graphics.EffectData.ShaderLink.Index\"/> is not valid. Only <see cref=\"P:SharpDX.Toolkit.Graphics.EffectData.ShaderLink.ImportName\"/> is valid.\n            </remarks>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.EffectData.ShaderLink.Index\">\n            <summary>\n            Gets or sets the index in the shader pool.\n            </summary>\n            <value>The index.</value>\n            <remarks>\n            This index is a direct reference to the shader in <see cref=\"F:SharpDX.Toolkit.Graphics.EffectData.Shaders\"/>.\n            </remarks>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.EffectData.ShaderLink.ImportName\">\n            <summary>\n            Gets or sets the name of the shader import. Can be null.\n            </summary>\n            <value>The name of the import.</value>\n            <remarks>\n            This property is not null when there is no shader compiled and this is an import.\n            </remarks>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.EffectData.ShaderLink.IsNullShader\">\n            <summary>\n            Gets a value indicating whether this instance is a null shader.\n            </summary>\n            <value><c>true</c> if this instance is null shader; otherwise, <c>false</c>.</value>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.EffectData.Signature\">\n            <summary>\t\n            <p>Describes a shader signature.</p>\t\n            </summary>\t\n            <remarks>\t\n            Describes an input or output signature, composed of <see cref=\"T:SharpDX.Toolkit.Graphics.EffectData.Semantic\"/> descriptions.\n            </remarks>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectData.Signature.Semantics\">\n            <summary>\n            Gets or sets the semantics\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectData.Signature.Bytecode\">\n            <summary>\n            Gets the bytecode of this signature. This field is only valid for Input Vertex Shader.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectData.Signature.Hashcode\">\n            <summary>\n            Gets the hashcode associated with the signature bytecode.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectData.Signature.SharpDX#Serialization#IDataSerializable#Serialize(SharpDX.Serialization.BinarySerializer)\">\n            <inheritdoc/>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.EffectData.Semantic\">\n            <summary>\t\n            <p>Describes a semantic signature.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>A shader can take n inputs and can produce m outputs. The order of the input (or output) parameters, their associated types, and any attached semantics make up the shader signature. Each shader has an input and an output signature.</p><p>When compiling a shader or an effect, some API calls validate shader signatures  That is, they compare the output signature of one shader (like a vertex shader) with the input signature of another shader (like a pixel shader). This ensures that a shader outputs data that is compatible with a downstream shader that is consuming that data. Compatible means that a shader signature is a exact-match subset of the preceding shader stage. Exact match means parameter types and semantics must exactly match. Subset means that a parameter that is not required by a downstream stage, does not need to include that parameter in its shader signature.</p><p>Get a shader-signature from a shader or an effect by calling APIs such as <strong><see cref=\"!:SharpDX.D3DCompiler.ShaderReflection.GetInputParameterDescription\"/></strong>. </p>\t\n            </remarks>\t\n            <msdn-id>ff476215</msdn-id>\t\n            <unmanaged>D3D11_SIGNATURE_PARAMETER_DESC</unmanaged>\t\n            <unmanaged-short>D3D11_SIGNATURE_PARAMETER_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectData.Semantic.#ctor\">\n            <summary>\n            Semantic\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectData.Semantic.#ctor(System.String,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte)\">\n            <summary>\n            Initializes a new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.EffectData.Semantic\"/> class.\n            </summary>\n            <param name=\"name\">Name of the semantic.</param>\n            <param name=\"index\">Index of the semantic.</param>\n            <param name=\"register\">Register.</param>\n            <param name=\"systemValueType\">A predefined string that determines the functionality of certain pipeline stages.</param>\n            <param name=\"componentType\">The per-component-data type that is stored in a register.</param>\n            <param name=\"usageMask\">Mask which indicates which components of a register are used.</param>\n            <param name=\"readWriteMask\">sk which indicates whether a given component is never written (if the signature is an output signature) or always read (if the signature is an input signature).</param>\n            <param name=\"stream\">Indicates which stream the geometry shader is using for the signature parameter.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectData.Semantic.SharpDX#Serialization#IDataSerializable#Serialize(SharpDX.Serialization.BinarySerializer)\">\n            <inheritdoc/>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.EffectData.Semantic.Name\">\n            <summary>\t\n            <dd> <p>A per-parameter string that identifies how the data will be used. </p> </dd>\t\n            </summary>\t\n            <msdn-id>ff476215</msdn-id>\t\n            <unmanaged>const char* SemanticName</unmanaged>\t\n            <unmanaged-short>char SemanticName</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.EffectData.Semantic.Index\">\n            <summary>\t\n            <dd> <p>Semantic index that modifies the semantic. Used to differentiate different parameters that use the same semantic.</p> </dd>\t\n            </summary>\t\n            <msdn-id>ff476215</msdn-id>\t\n            <unmanaged>unsigned int SemanticIndex</unmanaged>\t\n            <unmanaged-short>unsigned int SemanticIndex</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.EffectData.Semantic.Register\">\n            <summary>\t\n            <dd> <p>The register that will contain this variable's data.</p> </dd>\t\n            </summary>\t\n            <msdn-id>ff476215</msdn-id>\t\n            <unmanaged>unsigned int Register</unmanaged>\t\n            <unmanaged-short>unsigned int Register</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.EffectData.Semantic.SystemValueType\">\n            <summary>\t\n            <dd> <p>A predefined string that determines the functionality of certain pipeline stages. See <strong>D3D10_NAME</strong>.</p> </dd>\t\n            </summary>\t\n            <msdn-id>ff476215</msdn-id>\t\n            <unmanaged>D3D_NAME SystemValueType</unmanaged>\t\n            <unmanaged-short>D3D_NAME SystemValueType</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.EffectData.Semantic.ComponentType\">\n            <summary>\t\n            <dd> <p>The per-component-data type that is stored in a register.  See <strong>D3D10_REGISTER_COMPONENT_TYPE</strong>. Each register can store up to four-components of data.</p> </dd>\t\n            </summary>\t\n            <msdn-id>ff476215</msdn-id>\t\n            <unmanaged>D3D_REGISTER_COMPONENT_TYPE ComponentType</unmanaged>\t\n            <unmanaged-short>D3D_REGISTER_COMPONENT_TYPE ComponentType</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.EffectData.Semantic.UsageMask\">\n            <summary>\t\n            <dd> <p>Mask which indicates which components of a register are used.</p> </dd>\t\n            </summary>\t\n            <msdn-id>ff476215</msdn-id>\t\n            <unmanaged>D3D11_REGISTER_COMPONENT_MASK_FLAG Mask</unmanaged>\t\n            <unmanaged-short>D3D11_REGISTER_COMPONENT_MASK_FLAG Mask</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.EffectData.Semantic.ReadWriteMask\">\n            <summary>\t\n            <dd> <p>Mask which indicates whether a given component is never written (if the signature is an output signature) or always read (if the signature is an input signature). </p> </dd>\t\n            </summary>\t\n            <msdn-id>ff476215</msdn-id>\t\n            <unmanaged>D3D11_REGISTER_COMPONENT_MASK_FLAG ReadWriteMask</unmanaged>\t\n            <unmanaged-short>D3D11_REGISTER_COMPONENT_MASK_FLAG ReadWriteMask</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.EffectData.Semantic.Stream\">\n            <summary>\t\n            <dd> <p>Indicates which stream the geometry shader is using for the signature parameter.</p> </dd>\t\n            </summary>\t\n            <msdn-id>ff476215</msdn-id>\t\n            <unmanaged>unsigned int Stream</unmanaged>\t\n            <unmanaged-short>unsigned int Stream</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.EffectData.Pipeline\">\n            <summary>\n            Describes link to shaders for each pipeline <see cref=\"T:SharpDX.Toolkit.Graphics.EffectShaderType\"/>\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectData.Pipeline.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.EffectData.Pipeline\"/> class.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectData.Pipeline.SharpDX#Serialization#IDataSerializable#Serialize(SharpDX.Serialization.BinarySerializer)\">\n            <inheritdoc/>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.EffectData.Pipeline.Item(SharpDX.Toolkit.Graphics.EffectShaderType)\">\n            <summary>\n            Gets or sets the <see cref=\"T:SharpDX.Toolkit.Graphics.EffectData.ShaderLink\"/> with the specified stage type.\n            </summary>\n            <param name=\"effectShaderType\">Type of the stage.</param>\n            <returns>A <see cref=\"T:SharpDX.Toolkit.Graphics.EffectData.ShaderLink\"/></returns>\n            <remarks>\n            The return value can be null if there is no shaders associated for this particular stage.\n            </remarks>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.EffectData.ConstantBuffer\">\n            <summary>\n            Describes a constant buffer.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectData.ConstantBuffer.Name\">\n            <summary>\n            Name of this constant buffer.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectData.ConstantBuffer.Size\">\n            <summary>\n            Size in bytes of this constant buffer.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectData.ConstantBuffer.Parameters\">\n            <summary>\n            List of parameters in this constant buffer.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectData.ConstantBuffer.SharpDX#Serialization#IDataSerializable#Serialize(SharpDX.Serialization.BinarySerializer)\">\n            <inheritdoc/>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.EffectData.Pass\">\n            <summary>\n            Describes a pass from a technique.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectData.Pass.Name\">\n            <summary>\n            Name of this pass.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectData.Pass.IsSubPass\">\n            <summary>\n            True if this pass is the sub-pass of a root pass.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectData.Pass.Attributes\">\n            <summary>\n            List of <see cref=\"T:SharpDX.Toolkit.Graphics.AttributeData\"/>.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectData.Pass.Pipeline\">\n            <summary>\n            Description of the shader stage <see cref=\"F:SharpDX.Toolkit.Graphics.EffectData.Pass.Pipeline\"/>.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectData.Pass.SharpDX#Serialization#IDataSerializable#Serialize(SharpDX.Serialization.BinarySerializer)\">\n            <inheritdoc/>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.EffectData.Technique\">\n            <summary>\n            Describes a technique.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectData.Technique.Name\">\n            <summary>\n            Name of this technique.\n            </summary>\n            <remarks>\n            This value can be null.\n            </remarks>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectData.Technique.Passes\">\n            <summary>\n            List of <see cref=\"T:SharpDX.Toolkit.Graphics.EffectData.Pass\"/>.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectData.Technique.SharpDX#Serialization#IDataSerializable#Serialize(SharpDX.Serialization.BinarySerializer)\">\n            <inheritdoc/>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.EffectData.ResourceParameter\">\n            <summary>\n            Describes a resource parameter.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.EffectData.Parameter\">\n            <summary>\n            An abstract parameter, which can be a <see cref=\"T:SharpDX.Toolkit.Graphics.EffectData.ResourceParameter\"/> or a <see cref=\"T:SharpDX.Toolkit.Graphics.EffectData.ValueTypeParameter\"/>.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectData.Parameter.Name\">\n            <summary>\n            Name of this parameter.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectData.Parameter.Class\">\n            <summary>\n            The <see cref=\"T:SharpDX.Toolkit.Graphics.EffectParameterClass\"/> of this parameter.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectData.Parameter.Type\">\n            <summary>\n            The <see cref=\"T:SharpDX.Toolkit.Graphics.EffectParameterType\"/> of this parameter.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectData.Parameter.SharpDX#Serialization#IDataSerializable#Serialize(SharpDX.Serialization.BinarySerializer)\">\n            <inheritdoc/>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectData.Parameter.InternalSerialize(SharpDX.Serialization.BinarySerializer)\">\n            <summary>\n            Serialize this instance but hides implementation from outside..\n            </summary>\n            <param name=\"serializer\">The serializer.</param>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectData.ResourceParameter.Slot\">\n            <summary>\n            The slot index register to bind to.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectData.ResourceParameter.Count\">\n            <summary>\n            The number of slots to bind.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectData.ResourceParameter.InternalSerialize(SharpDX.Serialization.BinarySerializer)\">\n            <inheritdoc/>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.EffectData.ValueTypeParameter\">\n            <summary>\n            Describes a value type parameter used by a <see cref=\"T:SharpDX.Toolkit.Graphics.EffectData.ConstantBuffer\"/>.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectData.ValueTypeParameter.Offset\">\n            <summary>\n            Offset in bytes into the <see cref=\"T:SharpDX.Toolkit.Graphics.EffectData.ConstantBuffer\"/>.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectData.ValueTypeParameter.Count\">\n            <summary>\n            Number of elements.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectData.ValueTypeParameter.Size\">\n            <summary>\n            Size in bytes in the <see cref=\"T:SharpDX.Toolkit.Graphics.EffectData.ConstantBuffer\"/>.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectData.ValueTypeParameter.RowCount\">\n            <summary>\n            Number of rows for this element.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectData.ValueTypeParameter.ColumnCount\">\n            <summary>\n            Number of columns for this element.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectData.ValueTypeParameter.DefaultValue\">\n            <summary>\n            The default value.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.EffectData.Effect\">\n            <summary>\n            Describes an effect.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectData.Effect.Name\">\n            <summary>\n            Name of the effect.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectData.Effect.ShareConstantBuffers\">\n            <summary>\n            Share constant buffers.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectData.Effect.Techniques\">\n            <summary>\n            List of <see cref=\"T:SharpDX.Toolkit.Graphics.EffectData.Technique\"/>.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectData.Effect.Arguments\">\n            <summary>\n            The compiler arguments used to compile this effect. This field is null if the effect is not compiled with the option \"AllowDynamicRecompiling\".\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectData.Effect.SharpDX#Serialization#IDataSerializable#Serialize(SharpDX.Serialization.BinarySerializer)\">\n            <inheritdoc/>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.EffectData.Shader\">\n            <summary>\n            Describes a shader and associated bytecode.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectData.Shader.Name\">\n            <summary>\n            Name of this shader, only valid for public shaders, else null.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectData.Shader.Type\">\n            <summary>\n            Type of this shader.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectData.Shader.CompilerFlags\">\n            <summary>\n            Compiler flags used to compile this shader.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectData.Shader.Level\">\n            <summary>\n            Level of this shader.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectData.Shader.Bytecode\">\n            <summary>\n            Bytecode of this shader.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectData.Shader.Hashcode\">\n            <summary>\n            Hashcode from the bytecode.\n            </summary>\n            <remarks>\n            Shaders with same bytecode with have same hashcode.\n            </remarks>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectData.Shader.InputSignature\">\n            <summary>\n            Description of the input <see cref=\"T:SharpDX.Toolkit.Graphics.EffectData.Signature\"/>.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectData.Shader.OutputSignature\">\n            <summary>\n            Description of the output <see cref=\"T:SharpDX.Toolkit.Graphics.EffectData.Signature\"/>.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectData.Shader.ConstantBuffers\">\n            <summary>\n            List of constant buffers used by this shader.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectData.Shader.ResourceParameters\">\n            <summary>\n            List of resource parameters used by this shader.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.EffectData.Shader.IsSimilar(SharpDX.Toolkit.Graphics.EffectData.Shader)\">\n            <summary>\n            Check if this instance is similar to another Shader.\n            </summary>\n            <param name=\"other\">The other instance to check against.</param>\n            <returns>True if this instance is similar, false otherwise.</returns>\n            <remarks>\n            Except the name, all fields are checked for deep equality.\n            </remarks>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.IEffectCompiler\">\n            <summary>\n            Interface to compile an effect.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.IEffectCompiler.GetDependencyFileNameFromEffectPath(System.String)\">\n            <summary>\n            Gets the dependency filename from the (fx) effect path.\n            </summary>\n            <param name=\"pathToFxFile\">The (fx) effect path.</param>\n            <returns>A dependency filename.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.IEffectCompiler.LoadDependency(System.String)\">\n            <summary>\n            Loads a dependency file.\n            </summary>\n            <param name=\"dependencyFilePath\">The dependency file path.</param>\n            <returns>A list of file path.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.IEffectCompiler.CheckForChanges(System.String)\">\n            <summary>\n            Checks for changes from a dependency file.\n            </summary>\n            <param name=\"dependencyFilePath\">The dependency file path.</param>\n            <returns><c>true</c> if a file has been updated, <c>false</c> otherwise</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.IEffectCompiler.CompileFromFile(System.String,SharpDX.Toolkit.Graphics.EffectCompilerFlags,System.Collections.Generic.List{SharpDX.Toolkit.Graphics.EffectData.ShaderMacro},System.Collections.Generic.List{System.String},System.Boolean,System.String)\">\n            <summary>\n            Compiles an effect from file.\n            </summary>\n            <param name=\"filePath\">The file path.</param>\n            <param name=\"flags\">The flags.</param>\n            <param name=\"macros\">The macrosArgs.</param>\n            <param name=\"includeDirectoryList\">The include directory list.</param>\n            <returns>The result of compilation.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.IEffectCompiler.Compile(System.String,System.String,SharpDX.Toolkit.Graphics.EffectCompilerFlags,System.Collections.Generic.List{SharpDX.Toolkit.Graphics.EffectData.ShaderMacro},System.Collections.Generic.List{System.String},System.Boolean,System.String)\">\n            <summary>\n            Compiles an effect from the specified source code and filepath.\n            </summary>\n            <param name=\"sourceCode\">The source code.</param>\n            <param name=\"filePath\">The file path.</param>\n            <param name=\"flags\">The flags.</param>\n            <param name=\"macrosArgs\">The macrosArgs.</param>\n            <param name=\"includeDirectoryList\">The include directory list.</param>\n            <returns>The result of compilation.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.IEffectCompiler.DisassembleShader(SharpDX.Toolkit.Graphics.EffectData.Shader)\">\n            <summary>\n            Disassembles a shader HLSL bytecode to asm code.\n            </summary>\n            <param name=\"shader\">The shader.</param>\n            <returns>A string containing asm code decoded from HLSL bytecode.</returns>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.ModelData\">\n            <summary>\n            The model data used to store 3D mesh model.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.ModelData.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.ModelData\"/> class.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.ModelData.Bones\">\n            <summary>\n            Gets the bones of this model.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.ModelData.Meshes\">\n            <summary>\n            Gets the mesh of this model.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.ModelData.Attributes\">\n            <summary>\n            Gets the attributes attached to this instance.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.ModelData.Load(System.IO.Stream)\">\n            <summary>\n            Loads an <see cref=\"T:SharpDX.Toolkit.Graphics.EffectData\"/> from the specified stream.\n            </summary>\n            <param name=\"stream\">The stream.</param>\n            <returns>An <see cref=\"T:SharpDX.Toolkit.Graphics.EffectData\"/>. Null if the stream is not a serialized <see cref=\"T:SharpDX.Toolkit.Graphics.EffectData\"/>.</returns>\n            <remarks>\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.ModelData.Load(System.Byte[])\">\n            <summary>\n            Loads an <see cref=\"T:SharpDX.Toolkit.Graphics.EffectData\"/> from the specified buffer.\n            </summary>\n            <param name=\"buffer\">The buffer.</param>\n            <returns>An <see cref=\"T:SharpDX.Toolkit.Graphics.EffectData\"/> </returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.ModelData.Load(System.String)\">\n            <summary>\n            Loads an <see cref=\"T:SharpDX.Toolkit.Graphics.EffectData\"/> from the specified file.\n            </summary>\n            <param name=\"fileName\">The filename.</param>\n            <returns>An <see cref=\"T:SharpDX.Toolkit.Graphics.EffectData\"/> </returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.ModelData.Save(System.IO.Stream)\">\n            <summary>\n            Saves this <see cref=\"T:SharpDX.Toolkit.Graphics.EffectData\"/> instance to the specified stream.\n            </summary>\n            <param name=\"stream\">The stream.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.ModelData.Save(System.String)\">\n            <summary>\n            Saves this <see cref=\"T:SharpDX.Toolkit.Graphics.EffectData\"/> instance to the specified file.\n            </summary>\n            <param name=\"fileName\">The output filename.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.ModelData.SharpDX#Serialization#IDataSerializable#Serialize(SharpDX.Serialization.BinarySerializer)\">\n            <inheritdoc/>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.ModelData.IndexBuffer.Count\">\n            <summary>\n            The number of indices stored in this index buffer.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.ModelData.IndexBuffer.Buffer\">\n            <summary>\n            Gets the index buffer for this mesh part.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.ModelData.VertexBuffer.Count\">\n            <summary>\n            The number of vertices stored in this vertex buffer.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.ModelData.VertexBuffer.Layout\">\n            <summary>\n            The layout of the vertex buffer.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.ModelData.VertexBuffer.Buffer\">\n            <summary>\n            Gets the vertex buffer for this mesh part.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.ModelData.Bone\">\n            <summary>\n            Class Bone\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.ModelData.Bone.Index\">\n            <summary>\n            The index of this bone into the bone collection of the model.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.ModelData.Bone.ParentIndex\">\n            <summary>\n            Gets parent bone index.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.ModelData.Bone.Transform\">\n            <summary>\n            The transform this bone relative to its parent bone.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.ModelData.Bone.Name\">\n            <summary>\n            The name of this bone.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.ModelData.Bone.Children\">\n            <summary>\n            The children bone indices.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.ModelData.Mesh\">\n            <summary>\n            Class Mesh\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.ModelData.Mesh.Index\">\n            <summary>\n            Index of this mesh into the mesh collection.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.ModelData.Mesh.ParentBoneIndex\">\n            <summary>\n            Index of the parent bone for this mesh. The parent bone of a mesh contains a transformation matrix that describes how the mesh is located relative to any parent meshes in a model.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.ModelData.Mesh.Name\">\n            <summary>\n            Gets the name of this mesh.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.ModelData.Mesh.MeshParts\">\n            <summary>\n            Gets the <see cref=\"T:SharpDX.Toolkit.Graphics.ModelData.MeshPart\"/> instances that make up this mesh. Each part of a mesh is composed of a set of primitives that share the same material. \n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.ModelData.Mesh.Attributes\">\n            <summary>\n            Gets attributes attached to this mesh.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.ModelData.MeshPart.IndexCount\">\n            <summary>\n            Gets the number of indices. Can be 0.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.ModelData.MeshPart.IndexBuffer\">\n            <summary>\n            The index buffer. This value can be null.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.ModelData.MeshPart.StartIndex\">\n            <summary>\n            The location in the index array at which to start reading vertices.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.ModelData.MeshPart.VertexCount\">\n            <summary>\n            The number of vertices used during a draw call.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.ModelData.MeshPart.VertexBuffer\">\n            <summary>\n            The layout of the vertex buffer.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.ModelData.MeshPart.VertexOffset\">\n            <summary>\n            Gets the offset (in vertices) from the top of vertex buffer.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.ModelData.MeshPart.Attributes\">\n            <summary>\n            The attributes attached to this mesh part.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.DisplayOrientation\">\n            <summary>\n            Describes the orientation of the display.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.DisplayOrientation.Default\">\n            <summary>\n            The default value for the orientation.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.DisplayOrientation.LandscapeLeft\">\n            <summary>\n            Displays in landscape mode to the left.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.DisplayOrientation.LandscapeRight\">\n            <summary>\n            Displays in landscape mode to the right.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.DisplayOrientation.Portrait\">\n            <summary>\n            Displays in portrait mode.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.NamespaceDoc\">\n            <summary>\n            The <see cref=\"N:SharpDX.Toolkit.Graphics\"/> namespace provides classes to load and save content data for the Graphics API.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.ReadOnlyArray`1\">\n            <summary>\n            Exposes an array as readonly with readonly elements with support for improved performance for equality.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.ReadOnlyArray`1.#ctor(`0[])\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.ReadOnlyArray`1\"/> class.\n            </summary>\n            <param name=\"elements\">The elements.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.ReadOnlyArray`1.op_Equality(SharpDX.Toolkit.Graphics.ReadOnlyArray{`0},SharpDX.Toolkit.Graphics.ReadOnlyArray{`0})\">\n            <summary>\n            Implements the operator ==.\n            </summary>\n            <param name=\"left\">The left.</param>\n            <param name=\"right\">The right.</param>\n            <returns>The result of the operator.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.ReadOnlyArray`1.op_Inequality(SharpDX.Toolkit.Graphics.ReadOnlyArray{`0},SharpDX.Toolkit.Graphics.ReadOnlyArray{`0})\">\n            <summary>\n            Implements the operator !=.\n            </summary>\n            <param name=\"left\">The left.</param>\n            <param name=\"right\">The right.</param>\n            <returns>The result of the operator.</returns>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.ReadOnlyArray`1.Length\">\n            <summary>\n            Gets number of elements.\n            </summary>\n            <value>The number of elements.</value>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.ReadOnlyArray`1.Item(System.Int32)\">\n            <summary>Gets a specific element in the collection by using an index value.</summary>\n            <param name=\"index\">Index of the value to get.</param>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.SpriteFontData\">\n            <summary>\n            Data for a SpriteFont object that supports kerning.\n            </summary>\n            <remarks>\n            Loading of SpriteFontData supports DirectXTk \"MakeSpriteFont\" fornat and AngelCode Bitmap Font Maker (binary format).\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.SpriteFontData.SerializeBMFFont(SharpDX.Serialization.BinarySerializer)\">\n            <summary>\n             This method for loading/saving a font file generated from AngelCode BMFont.\n            </summary>\n            <param name=\"serializer\">The binaryserializer to use.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.SpriteFontData.SerializeMakeSpriteFont(SharpDX.Serialization.BinarySerializer)\">\n            <summary>\n             This method for loading/saving a font file generated from MakeSpriteFont.\n            </summary>\n            <param name=\"serializer\">The binaryserializer to use.</param>\n            <returns></returns>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.SpriteFontData.BaseOffset\">\n            <summary>\n            The number of pixels from the absolute top of the line to the base of the characters.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.SpriteFontData.LineSpacing\">\n            <summary>\n            This is the distance in pixels between each line of text.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.SpriteFontData.DefaultCharacter\">\n            <summary>\n            The default character fallback.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.SpriteFontData.Glyphs\">\n            <summary>\n            An array of <see cref=\"T:SharpDX.Toolkit.Graphics.SpriteFontData.Glyph\"/> data.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.SpriteFontData.Bitmaps\">\n            <summary>\n            An array of <see cref=\"T:SharpDX.Toolkit.Graphics.SpriteFontData.Bitmap\"/> data.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.SpriteFontData.Kernings\">\n            <summary>\n            An array of <see cref=\"T:SharpDX.Toolkit.Graphics.SpriteFontData.Kerning\"/> data.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.SpriteFontData.Load(System.IO.Stream,SharpDX.Toolkit.Graphics.SpriteFontBitmapDataLoaderDelegate)\">\n            <summary>\n            Loads a <see cref=\"T:SharpDX.Toolkit.Graphics.SpriteFontData\"/> from the specified stream.\n            </summary>\n            <param name=\"stream\">The stream.</param>\n            <param name=\"bitmapDataLoader\">A delegate to load bitmap data that are not stored in the buffer.</param>\n            <returns>An <see cref=\"T:SharpDX.Toolkit.Graphics.SpriteFontData\"/>. Null if the stream is not a serialized <see cref=\"T:SharpDX.Toolkit.Graphics.SpriteFontData\"/>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.SpriteFontData.Load(System.Byte[],SharpDX.Toolkit.Graphics.SpriteFontBitmapDataLoaderDelegate)\">\n            <summary>\n            Loads a <see cref=\"T:SharpDX.Toolkit.Graphics.SpriteFontData\"/> from the specified stream.\n            </summary>\n            <param name=\"buffer\">The buffer.</param>\n            <param name=\"bitmapDataLoader\">A delegate to load bitmap data that are not stored in the buffer.</param>\n            <returns>An <see cref=\"T:SharpDX.Toolkit.Graphics.SpriteFontData\"/>. Null if the stream is not a serialized <see cref=\"T:SharpDX.Toolkit.Graphics.SpriteFontData\"/>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.SpriteFontData.Load(System.String,SharpDX.Toolkit.Graphics.SpriteFontBitmapDataLoaderDelegate)\">\n            <summary>\n            Loads a <see cref=\"T:SharpDX.Toolkit.Graphics.SpriteFontData\"/> from the specified stream.\n            </summary>\n            <param name=\"fileName\">The filename.</param>\n            <param name=\"bitmapDataLoader\">A delegate to load bitmap data that are not stored in the buffer.</param>\n            <returns>An <see cref=\"T:SharpDX.Toolkit.Graphics.SpriteFontData\"/>. Null if the stream is not a serialized <see cref=\"T:SharpDX.Toolkit.Graphics.SpriteFontData\"/>.</returns>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.SpriteFontData.ChannelType\">\n            <summary>\n            Type of Channel, not used yet.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.SpriteFontData.BMFCommon\">\n            <summary>\n            A BMFont common header.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.SpriteFontData.BMFGlyph\">\n            <summary>\n            A BMFont glyph  header.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.SpriteFontData.Kerning\">\n            <summary>\n            Describes kerning information.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.SpriteFontData.Kerning.First\">\n            <summary>\n            Unicode for the 1st character.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.SpriteFontData.Kerning.Second\">\n            <summary>\n            Unicode for the 2nd character.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.SpriteFontData.Kerning.Offset\">\n            <summary>\n            X Offsets in pixels to apply between the 1st and 2nd character.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.SpriteFontData.Bitmap\">\n            <summary>\n            Describes bitmap font data.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.SpriteFontData.Bitmap.Data\">\n            <summary>\n            The actual data of the bitmap. See remarks.\n            </summary>\n            <remarks>\n            When loading bitmap from a DirectXTk \"MakeSpriteFont/tkfont\" exe, this field will contain a <see cref=\"T:SharpDX.Toolkit.Graphics.SpriteFontData.BitmapData\"/>.\n            When loading from an AngelCode BMFont, this field will contain a string representing the name of the external texture to load.\n            </remarks>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.SpriteFontData.BitmapData\">\n            <summary>\n            Bitmap data.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.SpriteFontData.BitmapData.Width\">\n            <summary>\n            Wisth of the bitmap.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.SpriteFontData.BitmapData.Height\">\n            <summary>\n            Height of the bitmap.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.SpriteFontData.BitmapData.PixelFormat\">\n            <summary>\n            Format of the pixel.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.SpriteFontData.BitmapData.RowStride\">\n            <summary>\n            Srite in bytes of a row of pixels.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.SpriteFontData.BitmapData.CompressedHeight\">\n            <summary>\n            Number of rowstride (may be less than <see cref=\"F:SharpDX.Toolkit.Graphics.SpriteFontData.BitmapData.Height\"/> when using compressed format.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.SpriteFontData.BitmapData.Data\">\n            <summary>\n            Actual raw data stored in <see cref=\"F:SharpDX.Toolkit.Graphics.SpriteFontData.BitmapData.PixelFormat\"/> format.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.SpriteFontData.Glyph\">\n            <summary>\n            Description of a glyph (a single character)\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.SpriteFontData.Glyph.Character\">\n            <summary>\n            Unicode codepoint.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.SpriteFontData.Glyph.Subrect\">\n            <summary>\n            Glyph image data (may only use a portion of a larger bitmap).\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.SpriteFontData.Glyph.Offset\">\n            <summary>\n            Layout information.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.SpriteFontData.Glyph.XAdvance\">\n            <summary>\n            Advance X\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.SpriteFontData.Glyph.BitmapIndex\">\n            <summary>\n            Index to a bitmap stored in <see cref=\"F:SharpDX.Toolkit.Graphics.SpriteFontData.Bitmaps\"/>. \n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.EffectCompilerFlags\">\n            <summary>\n            Effect Compiler flags.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectCompilerFlags.Debug\">\n            <summary>\t\n            Directs the compiler to insert debug file/line/type/symbol information into the output code.\n            </summary>\t\n            <unmanaged>D3DCOMPILE_DEBUG</unmanaged>\t\n            <unmanaged-short>D3DCOMPILE_DEBUG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectCompilerFlags.SkipValidation\">\n            <summary>\t\n            Directs the compiler not to validate the generated code against known capabilities and constraints. \n            We recommend that you use this constant only with shaders that have been successfully compiled in the past. DirectX always validates shaders before it sets them to a device.\n            </summary>\t\n            <unmanaged>D3DCOMPILE_SKIP_VALIDATION</unmanaged>\t\n            <unmanaged-short>D3DCOMPILE_SKIP_VALIDATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectCompilerFlags.SkipOptimization\">\n            <summary>\t\n            Directs the compiler to skip optimization steps during code generation. We recommend that you set this constant for debug purposes only.\n            </summary>\t\n            <unmanaged>D3DCOMPILE_SKIP_OPTIMIZATION</unmanaged>\t\n            <unmanaged-short>D3DCOMPILE_SKIP_OPTIMIZATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectCompilerFlags.PackMatrixRowMajor\">\n            <summary>\t\n            Directs the compiler to pack matrices in row-major order on input and output from the shader.\n            </summary>\t\n            <unmanaged>D3DCOMPILE_PACK_MATRIX_ROW_MAJOR</unmanaged>\t\n            <unmanaged-short>D3DCOMPILE_PACK_MATRIX_ROW_MAJOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectCompilerFlags.PackMatrixColumnMajor\">\n            <summary>\t\n            Directs the compiler to pack matrices in column-major order on input and output from the shader. This type of packing is generally more efficient because a series of dot-products can then perform vector-matrix multiplication.\n            </summary>\t\n            <unmanaged>D3DCOMPILE_PACK_MATRIX_COLUMN_MAJOR</unmanaged>\t\n            <unmanaged-short>D3DCOMPILE_PACK_MATRIX_COLUMN_MAJOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectCompilerFlags.PartialPrecision\">\n            <summary>\t\n            Directs the compiler to perform all computations with partial precision. If you set this constant, the compiled code might run faster on some hardware.\n            </summary>\t\n            <unmanaged>D3DCOMPILE_PARTIAL_PRECISION</unmanaged>\t\n            <unmanaged-short>D3DCOMPILE_PARTIAL_PRECISION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectCompilerFlags.AvoidFlowControl\">\n            <summary>\t\n            Directs the compiler to not use flow-control constructs where possible.\n            </summary>\t\n            <unmanaged>D3DCOMPILE_AVOID_FLOW_CONTROL</unmanaged>\t\n            <unmanaged-short>D3DCOMPILE_AVOID_FLOW_CONTROL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectCompilerFlags.PreferFlowControl\">\n            <summary>\t\n            Directs the compiler to use flow-control constructs where possible.\n            </summary>\t\n            <unmanaged>D3DCOMPILE_PREFER_FLOW_CONTROL</unmanaged>\t\n            <unmanaged-short>D3DCOMPILE_PREFER_FLOW_CONTROL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectCompilerFlags.EnableStrictness\">\n            <summary>\t\n            Forces strict compile, which might not allow for legacy syntax.\n            </summary>\t\n            <remarks>\n            By default, the compiler disables strictness on deprecated syntax.\n            </remarks>\n            <unmanaged>D3DCOMPILE_ENABLE_STRICTNESS</unmanaged>\t\n            <unmanaged-short>D3DCOMPILE_ENABLE_STRICTNESS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectCompilerFlags.EnableBackwardsCompatibility\">\n            <summary>\t\n            Directs the compiler to enable older shaders to compile to 5_0 targets.\n            </summary>\t\n            <unmanaged>D3DCOMPILE_ENABLE_BACKWARDS_COMPATIBILITY</unmanaged>\t\n            <unmanaged-short>D3DCOMPILE_ENABLE_BACKWARDS_COMPATIBILITY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectCompilerFlags.IeeeStrictness\">\n            <summary>\t\n            Forces the IEEE strict compile.\n            </summary>\t\n            <unmanaged>D3DCOMPILE_IEEE_STRICTNESS</unmanaged>\t\n            <unmanaged-short>D3DCOMPILE_IEEE_STRICTNESS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectCompilerFlags.OptimizationLevel0\">\n            <summary>\t\n            Directs the compiler to use the lowest optimization level. If you set this constant, the compiler might produce slower code but produces the code more quickly. Set this constant when you develop the shader iteratively.\t\n            </summary>\t\n            <unmanaged>D3DCOMPILE_OPTIMIZATION_LEVEL0</unmanaged>\t\n            <unmanaged-short>D3DCOMPILE_OPTIMIZATION_LEVEL0</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectCompilerFlags.OptimizationLevel1\">\n            <summary>\t\n            Directs the compiler to use the second lowest optimization level.\n            </summary>\t\n            <unmanaged>D3DCOMPILE_OPTIMIZATION_LEVEL1</unmanaged>\t\n            <unmanaged-short>D3DCOMPILE_OPTIMIZATION_LEVEL1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectCompilerFlags.OptimizationLevel2\">\n            <summary>\t\n            Directs the compiler to use the second highest optimization level.\n            </summary>\t\n            <unmanaged>D3DCOMPILE_OPTIMIZATION_LEVEL2</unmanaged>\t\n            <unmanaged-short>D3DCOMPILE_OPTIMIZATION_LEVEL2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectCompilerFlags.OptimizationLevel3\">\n            <summary>\t\n            Directs the compiler to use the highest optimization level. If you set this constant, the compiler produces the best possible code but might take significantly longer to do so. Set this constant for final builds of an application when performance is the most important factor.\n            </summary>\t\n            <unmanaged>D3DCOMPILE_OPTIMIZATION_LEVEL3</unmanaged>\t\n            <unmanaged-short>D3DCOMPILE_OPTIMIZATION_LEVEL3</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectCompilerFlags.WarningsAreErrors\">\n            <summary>\t\n            Directs the compiler to treat all warnings as errors when it compiles the shader code. We recommend that you use this constant for new shader code, so that you can resolve all warnings and lower the number of hard-to-find code defects.\n            </summary>\t\n            <unmanaged>D3DCOMPILE_WARNINGS_ARE_ERRORS</unmanaged>\t\n            <unmanaged-short>D3DCOMPILE_WARNINGS_ARE_ERRORS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectCompilerFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.SpriteFontBitmapDataLoaderDelegate\">\n            <summary>\n            A delegate to load binary bitmap data from a bitmap name (currently used to load external bitmap referenced in AngelCode Bitmap data).\n            </summary>\n            <param name=\"bitmapName\">The name of the bitmap data to load.</param>\n            <returns>A bitmap data object.</returns>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.SpriteFontDataContentReader\">\n            <summary>\n            Content reader for <see cref=\"T:SharpDX.Toolkit.Graphics.SpriteFontData\"/>.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.VertexBufferLayout\">\n            <summary>\t\n            A description of a vertex elements for particular slot for the input-assembler stage. \n            This structure is related to <see cref=\"!:Direct3D11.InputElement\"/>.\n            </summary>\t\n            <remarks>\t\n            Because <see cref=\"!:Direct3D11.InputElement\"/> requires to have the same <see cref=\"F:SharpDX.Toolkit.Graphics.VertexBufferLayout.SlotIndex\"/>, <see cref=\"F:SharpDX.Toolkit.Graphics.VertexBufferLayout.InstanceCount\"/>,\n            this <see cref=\"T:SharpDX.Toolkit.Graphics.VertexBufferLayout\"/> structure encapsulates a set of <see cref=\"T:SharpDX.Toolkit.Graphics.VertexElement\"/> for a particular slot, instance count.\n            </remarks>\t\n            <seealso cref=\"T:SharpDX.Toolkit.Graphics.VertexElement\"/>\n            <msdn-id>ff476180</msdn-id>\t\n            <unmanaged>D3D11_INPUT_ELEMENT_DESC</unmanaged>\t\n            <unmanaged-short>D3D11_INPUT_ELEMENT_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.VertexBufferLayout.SlotIndex\">\n            <summary>\n            Vertex buffer slot index.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.VertexBufferLayout.InstanceCount\">\n            <summary>\t\n            The number of instances to draw using the same per-instance data before advancing in the buffer by one element. This value must be 0 for an  element that contains per-vertex data (the slot class is set to <see cref=\"!:SharpDX.Direct3D11.InputClassification.PerVertexData\"/>).\n            </summary>\t\n            <msdn-id>ff476180</msdn-id>\t\n            <unmanaged>unsigned int InstanceDataStepRate</unmanaged>\t\n            <unmanaged-short>unsigned int InstanceDataStepRate</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.VertexBufferLayout.VertexElements\">\n            <summary>\n            Vertex elements describing this declaration.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.VertexBufferLayout.hashCode\">\n            <summary>\n            Precalculate hashcode for faster comparison.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.VertexBufferLayout.#ctor(System.Int32,SharpDX.Toolkit.Graphics.VertexElement[],System.Int32)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.VertexBufferLayout\"/> struct.\n            </summary>\n            <param name=\"slot\">The slot to bind this vertex buffer to. </param>\n            <param name=\"elements\">The elements.</param>\n            <param name=\"instanceCount\">The instance data step rate.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.VertexBufferLayout.New(System.Int32,System.Type,System.Int32)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.VertexBufferLayout\"/> struct.\n            </summary>\n            <param name=\"slot\">The slot to bind this vertex buffer to.</param>\n            <param name=\"structType\">Type of a structure that is using <see cref=\"T:SharpDX.Toolkit.Graphics.VertexElementAttribute\"/>.</param>\n            <param name=\"instanceCount\">Specify the instancing count. Set to 0 for no instancing.</param>\n            <returns>A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.VertexBufferLayout\"/>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.VertexBufferLayout.New``1(System.Int32,System.Int32)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.VertexBufferLayout\"/> struct.\n            </summary>\n            <typeparam name=\"T\">Type of a structure that is using <see cref=\"T:SharpDX.Toolkit.Graphics.VertexElementAttribute\"/>.</typeparam>\n            <param name=\"slot\">The slot to bind this vertex buffer to.</param>\n            <param name=\"instanceCount\">Specify the instancing count. Set to 0 for no instancing.</param>\n            <returns>A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.VertexBufferLayout\"/>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.VertexBufferLayout.New(System.Int32,SharpDX.Toolkit.Graphics.VertexElement[])\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.VertexBufferLayout\"/> struct.\n            </summary>\n            <param name=\"slot\">The slot to bind this vertex buffer to.</param>\n            <param name=\"elements\">The elements.</param>\n            <returns>A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.VertexBufferLayout\"/>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.VertexBufferLayout.New(System.Int32,SharpDX.Toolkit.Graphics.VertexElement[],System.Int32)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.VertexBufferLayout\"/> struct with instantiated data.\n            </summary>\n            <param name=\"slot\">The slot to bind this vertex buffer to.</param>\n            <param name=\"elements\">The elements.</param>\n            <param name=\"instanceCount\">Specify the instancing count. Set to 0 for no instancing.</param>\n            <returns>A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.VertexBufferLayout\"/>.</returns>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.VertexElement\">\n            <summary>\t\n            A description of a single element for the input-assembler stage. This structure is related to <see cref=\"!:Direct3D11.InputElement\"/>.\n            </summary>\t\n            <remarks>\t\n            Because <see cref=\"!:Direct3D11.InputElement\"/> requires to have the same <see cref=\"F:SharpDX.Toolkit.Graphics.VertexBufferLayout.SlotIndex\"/>, <see cref=\"!:VertexBufferLayout.VertexClassification\"/> and <see cref=\"!:VertexBufferLayout.instanceDataStepRate\"/>,\n            the <see cref=\"T:SharpDX.Toolkit.Graphics.VertexBufferLayout\"/> structure encapsulates a set of <see cref=\"T:SharpDX.Toolkit.Graphics.VertexElement\"/> for a particular slot, classification and instance data step rate.\n            Unlike the default <see cref=\"!:Direct3D11.InputElement\"/>, this structure accepts a semantic name with a postfix number that will be automatically extracted to the semantic index.\n            </remarks>\t\n            <seealso cref=\"T:SharpDX.Toolkit.Graphics.VertexBufferLayout\"/>\n            <msdn-id>ff476180</msdn-id>\t\n            <unmanaged>D3D11_INPUT_ELEMENT_DESC</unmanaged>\t\n            <unmanaged-short>D3D11_INPUT_ELEMENT_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.VertexElement.AppendAligned\">\n            <summary>\n              Returns a value that can be used for the offset parameter of an InputElement to indicate that the element\n              should be aligned directly after the previous element, including any packing if neccessary.\n            </summary>\n            <returns>A value used to align input elements.</returns>\n            <unmanaged>D3D11_APPEND_ALIGNED_ELEMENT</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.VertexElement.#ctor(System.String,SharpDX.DXGI.Format)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.VertexElement\"/> struct.\n            </summary>\n            <param name=\"semanticName\">Name of the semantic.</param>\n            <param name=\"format\">The format.</param>\n            <remarks>\n            If the semantic name contains a postfix number, this number will be used as a semantic index.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.VertexElement.#ctor(System.String,System.Int32,SharpDX.DXGI.Format,System.Int32)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.VertexElement\"/> struct.\n            </summary>\n            <param name=\"semanticName\">Name of the semantic.</param>\n            <param name=\"semanticIndex\">Index of the semantic.</param>\n            <param name=\"format\">The format.</param>\n            <param name=\"alignedByteOffset\">The aligned byte offset.</param>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.VertexElement.Color``1(System.Int32,System.Int32)\">\n            <summary>\n            Declares a VertexElement with the semantic \"COLOR\".\n            </summary>\n            <typeparam name=\"T\">Type of the Color semantic.</typeparam>\n            <param name=\"semanticIndex\">The semantic index.</param>\n            <param name=\"offsetInBytes\">The offset in bytes of this element. Use <see cref=\"F:SharpDX.Toolkit.Graphics.VertexElement.AppendAligned\"/> to compute automatically the offset from previous elements.</param>\n            <returns>A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.VertexElement\"/> that represents this semantic.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.VertexElement.Color(SharpDX.DXGI.Format,System.Int32)\">\n            <summary>\n            Declares a VertexElement with the semantic \"COLOR\".\n            </summary>\n            <param name=\"format\">Format of this element.</param>\n            <param name=\"offsetInBytes\">The offset in bytes of this element. Use <see cref=\"F:SharpDX.Toolkit.Graphics.VertexElement.AppendAligned\"/> to compute automatically the offset from previous elements.</param>\n            <returns>A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.VertexElement\"/> that represents this semantic.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.VertexElement.Color(System.Int32,SharpDX.DXGI.Format,System.Int32)\">\n            <summary>\n            Declares a VertexElement with the semantic \"COLOR\".\n            </summary>\n            <param name=\"semanticIndex\">The semantic index.</param>\n            <param name=\"format\">Format of this element.</param>\n            <param name=\"offsetInBytes\">The offset in bytes of this element. Use <see cref=\"F:SharpDX.Toolkit.Graphics.VertexElement.AppendAligned\"/> to compute automatically the offset from previous elements.</param>\n            <returns>A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.VertexElement\"/> that represents this semantic.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.VertexElement.Normal``1(System.Int32,System.Int32)\">\n            <summary>\n            Declares a VertexElement with the semantic \"NORMAL\".\n            </summary>\n            <typeparam name=\"T\">Type of the Normal semantic.</typeparam>\n            <param name=\"semanticIndex\">The semantic index.</param>\n            <param name=\"offsetInBytes\">The offset in bytes of this element. Use <see cref=\"F:SharpDX.Toolkit.Graphics.VertexElement.AppendAligned\"/> to compute automatically the offset from previous elements.</param>\n            <returns>A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.VertexElement\"/> that represents this semantic.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.VertexElement.Normal(SharpDX.DXGI.Format,System.Int32)\">\n            <summary>\n            Declares a VertexElement with the semantic \"NORMAL\".\n            </summary>\n            <param name=\"format\">Format of this element.</param>\n            <param name=\"offsetInBytes\">The offset in bytes of this element. Use <see cref=\"F:SharpDX.Toolkit.Graphics.VertexElement.AppendAligned\"/> to compute automatically the offset from previous elements.</param>\n            <returns>A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.VertexElement\"/> that represents this semantic.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.VertexElement.Normal(System.Int32,SharpDX.DXGI.Format,System.Int32)\">\n            <summary>\n            Declares a VertexElement with the semantic \"NORMAL\".\n            </summary>\n            <param name=\"semanticIndex\">The semantic index.</param>\n            <param name=\"format\">Format of this element.</param>\n            <param name=\"offsetInBytes\">The offset in bytes of this element. Use <see cref=\"F:SharpDX.Toolkit.Graphics.VertexElement.AppendAligned\"/> to compute automatically the offset from previous elements.</param>\n            <returns>A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.VertexElement\"/> that represents this semantic.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.VertexElement.Position``1(System.Int32,System.Int32)\">\n            <summary>\n            Declares a VertexElement with the semantic \"POSITION\".\n            </summary>\n            <typeparam name=\"T\">Type of the Position semantic.</typeparam>\n            <param name=\"semanticIndex\">The semantic index.</param>\n            <param name=\"offsetInBytes\">The offset in bytes of this element. Use <see cref=\"F:SharpDX.Toolkit.Graphics.VertexElement.AppendAligned\"/> to compute automatically the offset from previous elements.</param>\n            <returns>A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.VertexElement\"/> that represents this semantic.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.VertexElement.Position(SharpDX.DXGI.Format,System.Int32)\">\n            <summary>\n            Declares a VertexElement with the semantic \"POSITION\".\n            </summary>\n            <param name=\"format\">Format of this element.</param>\n            <param name=\"offsetInBytes\">The offset in bytes of this element. Use <see cref=\"F:SharpDX.Toolkit.Graphics.VertexElement.AppendAligned\"/> to compute automatically the offset from previous elements.</param>\n            <returns>A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.VertexElement\"/> that represents this semantic.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.VertexElement.Position(System.Int32,SharpDX.DXGI.Format,System.Int32)\">\n            <summary>\n            Declares a VertexElement with the semantic \"POSITION\".\n            </summary>\n            <param name=\"semanticIndex\">The semantic index.</param>\n            <param name=\"format\">Format of this element.</param>\n            <param name=\"offsetInBytes\">The offset in bytes of this element. Use <see cref=\"F:SharpDX.Toolkit.Graphics.VertexElement.AppendAligned\"/> to compute automatically the offset from previous elements.</param>\n            <returns>A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.VertexElement\"/> that represents this semantic.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.VertexElement.PositionTransformed``1(System.Int32,System.Int32)\">\n            <summary>\n            Declares a VertexElement with the semantic \"SV_POSITION\".\n            </summary>\n            <typeparam name=\"T\">Type of the PositionTransformed semantic.</typeparam>\n            <param name=\"semanticIndex\">The semantic index.</param>\n            <param name=\"offsetInBytes\">The offset in bytes of this element. Use <see cref=\"F:SharpDX.Toolkit.Graphics.VertexElement.AppendAligned\"/> to compute automatically the offset from previous elements.</param>\n            <returns>A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.VertexElement\"/> that represents this semantic.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.VertexElement.PositionTransformed(SharpDX.DXGI.Format,System.Int32)\">\n            <summary>\n            Declares a VertexElement with the semantic \"SV_POSITION\".\n            </summary>\n            <param name=\"format\">Format of this element.</param>\n            <param name=\"offsetInBytes\">The offset in bytes of this element. Use <see cref=\"F:SharpDX.Toolkit.Graphics.VertexElement.AppendAligned\"/> to compute automatically the offset from previous elements.</param>\n            <returns>A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.VertexElement\"/> that represents this semantic.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.VertexElement.PositionTransformed(System.Int32,SharpDX.DXGI.Format,System.Int32)\">\n            <summary>\n            Declares a VertexElement with the semantic \"SV_POSITION\".\n            </summary>\n            <param name=\"semanticIndex\">The semantic index.</param>\n            <param name=\"format\">Format of this element.</param>\n            <param name=\"offsetInBytes\">The offset in bytes of this element. Use <see cref=\"F:SharpDX.Toolkit.Graphics.VertexElement.AppendAligned\"/> to compute automatically the offset from previous elements.</param>\n            <returns>A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.VertexElement\"/> that represents this semantic.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.VertexElement.TextureCoordinate``1(System.Int32,System.Int32)\">\n            <summary>\n            Declares a VertexElement with the semantic \"TEXCOORD\".\n            </summary>\n            <typeparam name=\"T\">Type of the TextureCoordinate semantic.</typeparam>\n            <param name=\"semanticIndex\">The semantic index.</param>\n            <param name=\"offsetInBytes\">The offset in bytes of this element. Use <see cref=\"F:SharpDX.Toolkit.Graphics.VertexElement.AppendAligned\"/> to compute automatically the offset from previous elements.</param>\n            <returns>A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.VertexElement\"/> that represents this semantic.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.VertexElement.TextureCoordinate(SharpDX.DXGI.Format,System.Int32)\">\n            <summary>\n            Declares a VertexElement with the semantic \"TEXCOORD\".\n            </summary>\n            <param name=\"format\">Format of this element.</param>\n            <param name=\"offsetInBytes\">The offset in bytes of this element. Use <see cref=\"F:SharpDX.Toolkit.Graphics.VertexElement.AppendAligned\"/> to compute automatically the offset from previous elements.</param>\n            <returns>A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.VertexElement\"/> that represents this semantic.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.VertexElement.TextureCoordinate(System.Int32,SharpDX.DXGI.Format,System.Int32)\">\n            <summary>\n            Declares a VertexElement with the semantic \"TEXCOORD\".\n            </summary>\n            <param name=\"semanticIndex\">The semantic index.</param>\n            <param name=\"format\">Format of this element.</param>\n            <param name=\"offsetInBytes\">The offset in bytes of this element. Use <see cref=\"F:SharpDX.Toolkit.Graphics.VertexElement.AppendAligned\"/> to compute automatically the offset from previous elements.</param>\n            <returns>A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.VertexElement\"/> that represents this semantic.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.VertexElement.Tangent``1(System.Int32,System.Int32)\">\n            <summary>\n            Declares a VertexElement with the semantic \"TANGENT\".\n            </summary>\n            <typeparam name=\"T\">Type of the Tangent semantic.</typeparam>\n            <param name=\"semanticIndex\">The semantic index.</param>\n            <param name=\"offsetInBytes\">The offset in bytes of this element. Use <see cref=\"F:SharpDX.Toolkit.Graphics.VertexElement.AppendAligned\"/> to compute automatically the offset from previous elements.</param>\n            <returns>A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.VertexElement\"/> that represents this semantic.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.VertexElement.Tangent(SharpDX.DXGI.Format,System.Int32)\">\n            <summary>\n            Declares a VertexElement with the semantic \"TANGENT\".\n            </summary>\n            <param name=\"format\">Format of this element.</param>\n            <param name=\"offsetInBytes\">The offset in bytes of this element. Use <see cref=\"F:SharpDX.Toolkit.Graphics.VertexElement.AppendAligned\"/> to compute automatically the offset from previous elements.</param>\n            <returns>A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.VertexElement\"/> that represents this semantic.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.VertexElement.Tangent(System.Int32,SharpDX.DXGI.Format,System.Int32)\">\n            <summary>\n            Declares a VertexElement with the semantic \"TANGENT\".\n            </summary>\n            <param name=\"semanticIndex\">The semantic index.</param>\n            <param name=\"format\">Format of this element.</param>\n            <param name=\"offsetInBytes\">The offset in bytes of this element. Use <see cref=\"F:SharpDX.Toolkit.Graphics.VertexElement.AppendAligned\"/> to compute automatically the offset from previous elements.</param>\n            <returns>A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.VertexElement\"/> that represents this semantic.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.VertexElement.BiTangent``1(System.Int32,System.Int32)\">\n            <summary>\n            Declares a VertexElement with the semantic \"BITANGENT\".\n            </summary>\n            <typeparam name=\"T\">Type of the BiTangent semantic.</typeparam>\n            <param name=\"semanticIndex\">The semantic index.</param>\n            <param name=\"offsetInBytes\">The offset in bytes of this element. Use <see cref=\"F:SharpDX.Toolkit.Graphics.VertexElement.AppendAligned\"/> to compute automatically the offset from previous elements.</param>\n            <returns>A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.VertexElement\"/> that represents this semantic.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.VertexElement.BiTangent(SharpDX.DXGI.Format,System.Int32)\">\n            <summary>\n            Declares a VertexElement with the semantic \"BITANGENT\".\n            </summary>\n            <param name=\"format\">Format of this element.</param>\n            <param name=\"offsetInBytes\">The offset in bytes of this element. Use <see cref=\"F:SharpDX.Toolkit.Graphics.VertexElement.AppendAligned\"/> to compute automatically the offset from previous elements.</param>\n            <returns>A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.VertexElement\"/> that represents this semantic.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.VertexElement.BiTangent(System.Int32,SharpDX.DXGI.Format,System.Int32)\">\n            <summary>\n            Declares a VertexElement with the semantic \"BITANGENT\".\n            </summary>\n            <param name=\"semanticIndex\">The semantic index.</param>\n            <param name=\"format\">Format of this element.</param>\n            <param name=\"offsetInBytes\">The offset in bytes of this element. Use <see cref=\"F:SharpDX.Toolkit.Graphics.VertexElement.AppendAligned\"/> to compute automatically the offset from previous elements.</param>\n            <returns>A new instance of <see cref=\"T:SharpDX.Toolkit.Graphics.VertexElement\"/> that represents this semantic.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.VertexElement.FromType``1\">\n            <summary>\n            Extracts a set of <see cref=\"T:SharpDX.Toolkit.Graphics.VertexElement\"/> defined from a type that is using <see cref=\"T:SharpDX.Toolkit.Graphics.VertexElementAttribute\"/>.\n            </summary>\n            <typeparam name=\"T\">Type of the class to inspect for <see cref=\"T:SharpDX.Toolkit.Graphics.VertexElementAttribute\"/>.</typeparam>\n            <returns>An array of <see cref=\"T:SharpDX.Toolkit.Graphics.VertexElement\"/>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.VertexElement.FromType(System.Type)\">\n            <summary>\n            Extracts a set of <see cref=\"T:SharpDX.Toolkit.Graphics.VertexElement\"/> defined from a type that is using <see cref=\"T:SharpDX.Toolkit.Graphics.VertexElementAttribute\"/>.\n            </summary>\n            <param name=\"type\">The Type of the class to inspect for <see cref=\"T:SharpDX.Toolkit.Graphics.VertexElementAttribute\"/>.</param>\n            <returns>An array of <see cref=\"T:SharpDX.Toolkit.Graphics.VertexElement\"/>.</returns>\n            <exception cref=\"T:System.ArgumentNullException\">If type is null.</exception>\n            <exception cref=\"T:System.ArgumentException\">If type doesn't contain any <see cref=\"T:SharpDX.Toolkit.Graphics.VertexElementAttribute\"/></exception>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.VertexElement.ConvertTypeToFormat(System.Type)\">\n            <summary>\n            Converts a type to a <see cref=\"T:SharpDX.DXGI.Format\"/>.\n            </summary>\n            <param name=\"typeT\">The type T.</param>\n            <returns>The equivalent Format.</returns>\n            <exception cref=\"T:System.NotSupportedException\">If the convertion for this type is not supported.</exception>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.VertexElement.SemanticName\">\n            <summary>\t\n            <dd> <p>The HLSL semantic associated with this element in a shader input-signature.</p> </dd>\t\n            </summary>\t\n            <msdn-id>ff476180</msdn-id>\t\n            <unmanaged>const char* SemanticName</unmanaged>\t\n            <unmanaged-short>char SemanticName</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.VertexElement.SemanticIndex\">\n            <summary>\t\n            <dd> <p>The semantic index for the element. A semantic index modifies a semantic, with an integer index number. A semantic index is only needed in a  case where there is more than one element with the same semantic. For example, a 4x4 matrix would have four components each with the semantic  name </p>  <pre><code>matrix</code></pre>  <p>, however each of the four component would have different semantic indices (0, 1, 2, and 3).</p> </dd>\t\n            </summary>\t\n            <msdn-id>ff476180</msdn-id>\t\n            <unmanaged>unsigned int SemanticIndex</unmanaged>\t\n            <unmanaged-short>unsigned int SemanticIndex</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.VertexElement.Format\">\n            <summary>\t\n            <dd> <p>The data type of the element data. See <strong><see cref=\"T:SharpDX.DXGI.Format\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <msdn-id>ff476180</msdn-id>\t\n            <unmanaged>DXGI_FORMAT Format</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT Format</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.VertexElement.AlignedByteOffset\">\n            <summary>\t\n            <dd> <p>Optional. Offset (in bytes) between each element. Use D3D11_APPEND_ALIGNED_ELEMENT for convenience to define the current element directly  after the previous one, including any packing if necessary.</p> </dd>\t\n            </summary>\t\n            <msdn-id>ff476180</msdn-id>\t\n            <unmanaged>unsigned int AlignedByteOffset</unmanaged>\t\n            <unmanaged-short>unsigned int AlignedByteOffset</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.VertexElementAttribute\">\n            <summary>\t\n            An attribute to use on a field in a structure, to describe a single vertex element for the input-assembler stage.\n            </summary>\t\n            <seealso cref=\"!:VertexInputLayout\"/>\n            <seealso cref=\"T:SharpDX.Toolkit.Graphics.VertexBufferLayout\"/>\n            <seealso cref=\"T:SharpDX.Toolkit.Graphics.VertexElement\"/>\n            <msdn-id>ff476180</msdn-id>\t\n            <unmanaged>D3D11_INPUT_ELEMENT_DESC</unmanaged>\t\n            <unmanaged-short>D3D11_INPUT_ELEMENT_DESC</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.VertexElementAttribute.#ctor(System.String)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.VertexElement\"/> struct.\n            </summary>\n            <param name=\"semanticName\">Name of the semantic.</param>\n            <remarks>\n            If the semantic name contains a postfix number, this number will be used as a semantic index. \n            The <see cref=\"T:SharpDX.DXGI.Format\"/> will be mapped from the field type.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.VertexElementAttribute.#ctor(System.String,SharpDX.DXGI.Format)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.VertexElement\"/> struct.\n            </summary>\n            <param name=\"semanticName\">Name of the semantic.</param>\n            <param name=\"format\">The format.</param>\n            <remarks>\n            If the semantic name contains a postfix number, this number will be used as a semantic index.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Toolkit.Graphics.VertexElementAttribute.#ctor(System.String,System.Int32,SharpDX.DXGI.Format,System.Int32)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Toolkit.Graphics.VertexElement\"/> struct.\n            </summary>\n            <param name=\"semanticName\">Name of the semantic.</param>\n            <param name=\"semanticIndex\">Index of the semantic.</param>\n            <param name=\"format\">The format.</param>\n            <param name=\"alignedByteOffset\">The aligned byte offset.</param>\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.VertexElementAttribute.SemanticName\">\n            <summary>\t\n            <dd> <p>The HLSL semantic associated with this element in a shader input-signature.</p> </dd>\t\n            </summary>\t\n            <msdn-id>ff476180</msdn-id>\t\n            <unmanaged>const char* SemanticName</unmanaged>\t\n            <unmanaged-short>char SemanticName</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.VertexElementAttribute.SemanticIndex\">\n            <summary>\t\n            <dd> <p>The semantic index for the element. A semantic index modifies a semantic, with an integer index number. A semantic index is only needed in a  case where there is more than one element with the same semantic. For example, a 4x4 matrix would have four components each with the semantic  name </p>  <pre><code>matrix</code></pre>  <p>, however each of the four component would have different semantic indices (0, 1, 2, and 3).</p> </dd>\t\n            </summary>\t\n            <msdn-id>ff476180</msdn-id>\t\n            <unmanaged>unsigned int SemanticIndex</unmanaged>\t\n            <unmanaged-short>unsigned int SemanticIndex</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.VertexElementAttribute.Format\">\n            <summary>\t\n            <dd> <p>The data type of the element data. See <strong><see cref=\"T:SharpDX.DXGI.Format\"/></strong>.</p> </dd>\t\n            </summary>\t\n            <msdn-id>ff476180</msdn-id>\t\n            <unmanaged>DXGI_FORMAT Format</unmanaged>\t\n            <unmanaged-short>DXGI_FORMAT Format</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Toolkit.Graphics.VertexElementAttribute.AlignedByteOffset\">\n            <summary>\t\n            <dd> <p>Optional. Offset (in bytes) between each element. Use D3D11_APPEND_ALIGNED_ELEMENT for convenience to define the current element directly  after the previous one, including any packing if necessary.</p> </dd>\t\n            </summary>\t\n            <msdn-id>ff476180</msdn-id>\t\n            <unmanaged>unsigned int AlignedByteOffset</unmanaged>\t\n            <unmanaged-short>unsigned int AlignedByteOffset</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Toolkit.NamespaceDoc\">\n            <summary>\n            The <see cref=\"N:SharpDX.Toolkit\"/> namespace provides a high level DirectX API.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.EffectShaderType\">\n            <summary>\n            Identify a single GPU stage in the pipeline.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectShaderType.Vertex\">\n            <summary>\n            Vertex shader stage.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectShaderType.Hull\">\n            <summary>\n            Hull shader stage.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectShaderType.Domain\">\n            <summary>\n            Domain shader stage.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectShaderType.Geometry\">\n            <summary>\n            Geometry shader stage.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectShaderType.Pixel\">\n            <summary>\n            Pixel shader stage.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectShaderType.Compute\">\n            <summary>\n            Compute shader stage.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.EffectParameterClass\">\n            <summary>\t\n            Values that identify the class of a shader variable.\n            </summary>\t\n            <remarks>\t\n            The class of a shader variable is not a programming class; the class identifies the variable class such as scalar, vector, object, and so on.\n            </remarks>\t\n            <msdn-id>ff728733</msdn-id>\t\n            <unmanaged>D3D_SHADER_VARIABLE_CLASS</unmanaged>\t\n            <unmanaged-short>D3D_SHADER_VARIABLE_CLASS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectParameterClass.Scalar\">\n            <summary>\t\n            <dd> <p>The shader variable is a scalar.</p> </dd>\t\n            </summary>\t\n            <msdn-id>ff728733</msdn-id>\t\n            <unmanaged>D3D_SVC_SCALAR</unmanaged>\t\n            <unmanaged-short>D3D_SVC_SCALAR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectParameterClass.Vector\">\n            <summary>\t\n            <dd> <p>The shader variable is a vector.</p> </dd>\t\n            </summary>\t\n            <msdn-id>ff728733</msdn-id>\t\n            <unmanaged>D3D_SVC_VECTOR</unmanaged>\t\n            <unmanaged-short>D3D_SVC_VECTOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectParameterClass.MatrixRows\">\n            <summary>\t\n            <dd> <p>The shader variable is a row-major matrix.</p> </dd>\t\n            </summary>\t\n            <msdn-id>ff728733</msdn-id>\t\n            <unmanaged>D3D_SVC_MATRIX_ROWS</unmanaged>\t\n            <unmanaged-short>D3D_SVC_MATRIX_ROWS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectParameterClass.MatrixColumns\">\n            <summary>\t\n            <dd> <p>The shader variable is a column-major matrix.</p> </dd>\t\n            </summary>\t\n            <msdn-id>ff728733</msdn-id>\t\n            <unmanaged>D3D_SVC_MATRIX_COLUMNS</unmanaged>\t\n            <unmanaged-short>D3D_SVC_MATRIX_COLUMNS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectParameterClass.Object\">\n            <summary>\t\n            <dd> <p>The shader variable is an object.</p> </dd>\t\n            </summary>\t\n            <msdn-id>ff728733</msdn-id>\t\n            <unmanaged>D3D_SVC_OBJECT</unmanaged>\t\n            <unmanaged-short>D3D_SVC_OBJECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectParameterClass.Struct\">\n            <summary>\t\n            <dd> <p>The shader variable is a structure.</p> </dd>\t\n            </summary>\t\n            <msdn-id>ff728733</msdn-id>\t\n            <unmanaged>D3D_SVC_STRUCT</unmanaged>\t\n            <unmanaged-short>D3D_SVC_STRUCT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectParameterClass.InterfaceClass\">\n            <summary>\t\n            <dd> <p>The shader variable is a class.</p> </dd>\t\n            </summary>\t\n            <msdn-id>ff728733</msdn-id>\t\n            <unmanaged>D3D_SVC_INTERFACE_CLASS</unmanaged>\t\n            <unmanaged-short>D3D_SVC_INTERFACE_CLASS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectParameterClass.InterfacePointer\">\n            <summary>\t\n            <dd> <p>The shader variable is an interface.</p> </dd>\t\n            </summary>\t\n            <msdn-id>ff728733</msdn-id>\t\n            <unmanaged>D3D_SVC_INTERFACE_POINTER</unmanaged>\t\n            <unmanaged-short>D3D_SVC_INTERFACE_POINTER</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Toolkit.Graphics.EffectParameterType\">\n            <summary>\t\n            <p>Values that identify various data, texture, and buffer types that can be assigned to a shader variable.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>A call to the <strong><see cref=\"!:SharpDX.D3DCompiler.ShaderReflectionType.GetDescription\"/></strong> method returns a <strong><see cref=\"!:SharpDX.D3DCompiler.ShaderVariableType\"/></strong> value in the  <strong>Type</strong> member of a  <strong><see cref=\"!:SharpDX.D3DCompiler.ShaderTypeDescription\"/></strong> structure.</p><p>The types in a structured buffer describe the structure of the elements in the buffer. The layout of these types generally match their C++ struct counterparts. The following examples show structured buffers:</p><pre><code>struct mystruct {float4 val; uint ind;}; RWStructuredBuffer&lt;mystruct&gt; rwbuf;\t\n            RWStructuredBuffer&lt;float3&gt; rwbuf2;</code></pre>\t\n            </remarks>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SHADER_VARIABLE_TYPE</unmanaged>\t\n            <unmanaged-short>D3D_SHADER_VARIABLE_TYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectParameterType.Void\">\n            <summary>\t\n            <dd> <p>The variable is a void reference.</p> </dd>\t\n            </summary>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_VOID</unmanaged>\t\n            <unmanaged-short>D3D_SVT_VOID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectParameterType.Bool\">\n            <summary>\t\n            <dd> <p>The variable is a boolean.</p> </dd>\t\n            </summary>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_BOOL</unmanaged>\t\n            <unmanaged-short>D3D_SVT_BOOL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectParameterType.Int\">\n            <summary>\t\n            <dd> <p>The variable is an integer.</p> </dd>\t\n            </summary>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_INT</unmanaged>\t\n            <unmanaged-short>D3D_SVT_INT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectParameterType.Float\">\n            <summary>\t\n            <dd> <p>The variable is a floating-point number.</p> </dd>\t\n            </summary>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_FLOAT</unmanaged>\t\n            <unmanaged-short>D3D_SVT_FLOAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectParameterType.String\">\n            <summary>\t\n            <dd> <p>The variable is a string.</p> </dd>\t\n            </summary>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_STRING</unmanaged>\t\n            <unmanaged-short>D3D_SVT_STRING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectParameterType.Texture\">\n            <summary>\t\n            <dd> <p>The variable is a texture.</p> </dd>\t\n            </summary>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_TEXTURE</unmanaged>\t\n            <unmanaged-short>D3D_SVT_TEXTURE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectParameterType.Texture1D\">\n            <summary>\t\n            <dd> <p>The variable is a 1D texture.</p> </dd>\t\n            </summary>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_TEXTURE1D</unmanaged>\t\n            <unmanaged-short>D3D_SVT_TEXTURE1D</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectParameterType.Texture2D\">\n            <summary>\t\n            <dd> <p>The variable is a 2D texture.</p> </dd>\t\n            </summary>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_TEXTURE2D</unmanaged>\t\n            <unmanaged-short>D3D_SVT_TEXTURE2D</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectParameterType.Texture3D\">\n            <summary>\t\n            <dd> <p>The variable is a 3D texture.</p> </dd>\t\n            </summary>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_TEXTURE3D</unmanaged>\t\n            <unmanaged-short>D3D_SVT_TEXTURE3D</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectParameterType.TextureCube\">\n            <summary>\t\n            <dd> <p>The variable is a texture cube.</p> </dd>\t\n            </summary>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_TEXTURECUBE</unmanaged>\t\n            <unmanaged-short>D3D_SVT_TEXTURECUBE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectParameterType.Sampler\">\n            <summary>\t\n            <dd> <p>The variable is a sampler.</p> </dd>\t\n            </summary>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_SAMPLER</unmanaged>\t\n            <unmanaged-short>D3D_SVT_SAMPLER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectParameterType.Sampler1D\">\n            <summary>\t\n            <dd> <p>The variable is a sampler.</p> </dd>\t\n            </summary>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_SAMPLER1D</unmanaged>\t\n            <unmanaged-short>D3D_SVT_SAMPLER1D</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectParameterType.Sampler2D\">\n            <summary>\t\n            <dd> <p>The variable is a sampler.</p> </dd>\t\n            </summary>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_SAMPLER2D</unmanaged>\t\n            <unmanaged-short>D3D_SVT_SAMPLER2D</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectParameterType.Sampler3D\">\n            <summary>\t\n            <dd> <p>The variable is a sampler.</p> </dd>\t\n            </summary>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_SAMPLER3D</unmanaged>\t\n            <unmanaged-short>D3D_SVT_SAMPLER3D</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectParameterType.SamplerCube\">\n            <summary>\t\n            <dd> <p>The variable is a sampler.</p> </dd>\t\n            </summary>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_SAMPLERCUBE</unmanaged>\t\n            <unmanaged-short>D3D_SVT_SAMPLERCUBE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectParameterType.Pixelshader\">\n            <summary>\t\n            <dd> <p>The variable is a pixel shader.</p> </dd>\t\n            </summary>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_PIXELSHADER</unmanaged>\t\n            <unmanaged-short>D3D_SVT_PIXELSHADER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectParameterType.Vertexshader\">\n            <summary>\t\n            <dd> <p>The variable is a vertex shader.</p> </dd>\t\n            </summary>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_VERTEXSHADER</unmanaged>\t\n            <unmanaged-short>D3D_SVT_VERTEXSHADER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectParameterType.Pixelfragment\">\n            <summary>\t\n            <dd> <p>The variable is a pixel shader.</p> </dd>\t\n            </summary>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_PIXELFRAGMENT</unmanaged>\t\n            <unmanaged-short>D3D_SVT_PIXELFRAGMENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectParameterType.Vertexfragment\">\n            <summary>\t\n            <dd> <p>The variable is a vertex shader.</p> </dd>\t\n            </summary>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_VERTEXFRAGMENT</unmanaged>\t\n            <unmanaged-short>D3D_SVT_VERTEXFRAGMENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectParameterType.UInt\">\n            <summary>\t\n            <dd> <p>The variable is an unsigned integer.</p> </dd>\t\n            </summary>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_UINT</unmanaged>\t\n            <unmanaged-short>D3D_SVT_UINT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectParameterType.UInt8\">\n            <summary>\t\n            <dd> <p>The variable is an 8-bit unsigned integer.</p> </dd>\t\n            </summary>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_UINT8</unmanaged>\t\n            <unmanaged-short>D3D_SVT_UINT8</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectParameterType.Geometryshader\">\n            <summary>\t\n            <dd> <p>The variable is a geometry shader.</p> </dd>\t\n            </summary>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_GEOMETRYSHADER</unmanaged>\t\n            <unmanaged-short>D3D_SVT_GEOMETRYSHADER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectParameterType.Rasterizer\">\n            <summary>\t\n            <dd> <p>The variable is a rasterizer-state object.</p> </dd>\t\n            </summary>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_RASTERIZER</unmanaged>\t\n            <unmanaged-short>D3D_SVT_RASTERIZER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectParameterType.Depthstencil\">\n            <summary>\t\n            <dd> <p>The variable is a depth-stencil-state object.</p> </dd>\t\n            </summary>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_DEPTHSTENCIL</unmanaged>\t\n            <unmanaged-short>D3D_SVT_DEPTHSTENCIL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectParameterType.Blend\">\n            <summary>\t\n            <dd> <p>The variable is a blend-state object.</p> </dd>\t\n            </summary>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_BLEND</unmanaged>\t\n            <unmanaged-short>D3D_SVT_BLEND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectParameterType.Buffer\">\n            <summary>\t\n            <dd> <p>The variable is a buffer.</p> </dd>\t\n            </summary>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_BUFFER</unmanaged>\t\n            <unmanaged-short>D3D_SVT_BUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectParameterType.ConstantBuffer\">\n            <summary>\t\n            <dd> <p>The variable is a constant buffer.</p> </dd>\t\n            </summary>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_CBUFFER</unmanaged>\t\n            <unmanaged-short>D3D_SVT_CBUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectParameterType.TextureBuffer\">\n            <summary>\t\n            <dd> <p>The variable is a texture buffer.</p> </dd>\t\n            </summary>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_TBUFFER</unmanaged>\t\n            <unmanaged-short>D3D_SVT_TBUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectParameterType.Texture1DArray\">\n            <summary>\t\n            <dd> <p>The variable is a 1D-texture array.</p> </dd>\t\n            </summary>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_TEXTURE1DARRAY</unmanaged>\t\n            <unmanaged-short>D3D_SVT_TEXTURE1DARRAY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectParameterType.Texture2DArray\">\n            <summary>\t\n            <dd> <p>The variable is a 2D-texture array.</p> </dd>\t\n            </summary>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_TEXTURE2DARRAY</unmanaged>\t\n            <unmanaged-short>D3D_SVT_TEXTURE2DARRAY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectParameterType.Rendertargetview\">\n            <summary>\t\n            <dd> <p>The variable is a render-target view.</p> </dd>\t\n            </summary>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_RENDERTARGETVIEW</unmanaged>\t\n            <unmanaged-short>D3D_SVT_RENDERTARGETVIEW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectParameterType.Depthstencilview\">\n            <summary>\t\n            <dd> <p>The variable is a depth-stencil view.</p> </dd>\t\n            </summary>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_DEPTHSTENCILVIEW</unmanaged>\t\n            <unmanaged-short>D3D_SVT_DEPTHSTENCILVIEW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectParameterType.Texture2DMultisampled\">\n            <summary>\t\n            <dd> <p>The variable is a 2D-multisampled texture.</p> </dd>\t\n            </summary>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_TEXTURE2DMS</unmanaged>\t\n            <unmanaged-short>D3D_SVT_TEXTURE2DMS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectParameterType.Texture2DMultisampledArray\">\n            <summary>\t\n            <dd> <p>The variable is a 2D-multisampled-texture array.</p> </dd>\t\n            </summary>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_TEXTURE2DMSARRAY</unmanaged>\t\n            <unmanaged-short>D3D_SVT_TEXTURE2DMSARRAY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectParameterType.TextureCubeArray\">\n            <summary>\t\n            <dd> <p>The variable is a texture-cube array.</p> </dd>\t\n            </summary>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_TEXTURECUBEARRAY</unmanaged>\t\n            <unmanaged-short>D3D_SVT_TEXTURECUBEARRAY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectParameterType.Hullshader\">\n            <summary>\t\n            <dd> <p>The variable holds a compiled hull-shader binary.</p> </dd>\t\n            </summary>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_HULLSHADER</unmanaged>\t\n            <unmanaged-short>D3D_SVT_HULLSHADER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectParameterType.Domainshader\">\n            <summary>\t\n            <dd> <p>The variable holds a compiled domain-shader binary.</p> </dd>\t\n            </summary>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_DOMAINSHADER</unmanaged>\t\n            <unmanaged-short>D3D_SVT_DOMAINSHADER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectParameterType.InterfacePointer\">\n            <summary>\t\n            <dd> <p>The variable is an interface.</p> </dd>\t\n            </summary>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_INTERFACE_POINTER</unmanaged>\t\n            <unmanaged-short>D3D_SVT_INTERFACE_POINTER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectParameterType.Computeshader\">\n            <summary>\t\n            <dd> <p>The variable holds a compiled compute-shader binary.</p> </dd>\t\n            </summary>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_COMPUTESHADER</unmanaged>\t\n            <unmanaged-short>D3D_SVT_COMPUTESHADER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectParameterType.Double\">\n            <summary>\t\n            <dd> <p>The variable is a double precision (64-bit) floating-point number.</p> </dd>\t\n            </summary>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_DOUBLE</unmanaged>\t\n            <unmanaged-short>D3D_SVT_DOUBLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectParameterType.RWTexture1D\">\n            <summary>\t\n            <dd> <p>The variable is a 1D read-and-write texture.</p> </dd>\t\n            </summary>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_RWTEXTURE1D</unmanaged>\t\n            <unmanaged-short>D3D_SVT_RWTEXTURE1D</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectParameterType.RWTexture1DArray\">\n            <summary>\t\n            <dd> <p>The variable is an array of 1D read-and-write textures.</p> </dd>\t\n            </summary>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_RWTEXTURE1DARRAY</unmanaged>\t\n            <unmanaged-short>D3D_SVT_RWTEXTURE1DARRAY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectParameterType.RWTexture2D\">\n            <summary>\t\n            <dd> <p>The variable is a 2D read-and-write texture.</p> </dd>\t\n            </summary>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_RWTEXTURE2D</unmanaged>\t\n            <unmanaged-short>D3D_SVT_RWTEXTURE2D</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectParameterType.RWTexture2DArray\">\n            <summary>\t\n            <dd> <p>The variable is an array of 2D read-and-write textures.</p> </dd>\t\n            </summary>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_RWTEXTURE2DARRAY</unmanaged>\t\n            <unmanaged-short>D3D_SVT_RWTEXTURE2DARRAY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectParameterType.RWTexture3D\">\n            <summary>\t\n            <dd> <p>The variable is a 3D read-and-write texture.</p> </dd>\t\n            </summary>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_RWTEXTURE3D</unmanaged>\t\n            <unmanaged-short>D3D_SVT_RWTEXTURE3D</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectParameterType.RWBuffer\">\n            <summary>\t\n            <dd> <p>The variable is a read-and-write buffer.</p> </dd>\t\n            </summary>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_RWBUFFER</unmanaged>\t\n            <unmanaged-short>D3D_SVT_RWBUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectParameterType.ByteAddressBuffer\">\n            <summary>\t\n            <dd> <p>The variable is a byte-address buffer.</p> </dd>\t\n            </summary>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_BYTEADDRESS_BUFFER</unmanaged>\t\n            <unmanaged-short>D3D_SVT_BYTEADDRESS_BUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectParameterType.RWByteAddressBuffer\">\n            <summary>\t\n            <dd> <p>The variable is a read-and-write byte-address buffer.</p> </dd>\t\n            </summary>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_RWBYTEADDRESS_BUFFER</unmanaged>\t\n            <unmanaged-short>D3D_SVT_RWBYTEADDRESS_BUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectParameterType.StructuredBuffer\">\n            <summary>\t\n            <dd> <p>The variable is a structured buffer. </p> <p>For more information about structured buffer, see the <strong>Remarks</strong> section.</p> </dd>\t\n            </summary>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_STRUCTURED_BUFFER</unmanaged>\t\n            <unmanaged-short>D3D_SVT_STRUCTURED_BUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectParameterType.RWStructuredBuffer\">\n            <summary>\t\n            <dd> <p>The variable is a read-and-write structured buffer.</p> </dd>\t\n            </summary>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_RWSTRUCTURED_BUFFER</unmanaged>\t\n            <unmanaged-short>D3D_SVT_RWSTRUCTURED_BUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectParameterType.AppendStructuredBuffer\">\n            <summary>\t\n            <dd> <p>The variable is an append structured buffer.</p> </dd>\t\n            </summary>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_APPEND_STRUCTURED_BUFFER</unmanaged>\t\n            <unmanaged-short>D3D_SVT_APPEND_STRUCTURED_BUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Toolkit.Graphics.EffectParameterType.ConsumeStructuredBuffer\">\n            <summary>\t\n            <dd> <p>The variable is a consume structured buffer.</p> </dd>\t\n            </summary>\t\n            <msdn-id>ff728735</msdn-id>\t\n            <unmanaged>D3D_SVT_CONSUME_STRUCTURED_BUFFER</unmanaged>\t\n            <unmanaged-short>D3D_SVT_CONSUME_STRUCTURED_BUFFER</unmanaged-short>\t\n        </member>\n    </members>\n</doc>\n"
  },
  {
    "path": "3rd/SharpDX/SharpDX.XACT3.xml",
    "content": "<?xml version=\"1.0\"?>\n<doc>\n    <assembly>\n        <name>SharpDX.XACT3</name>\n    </assembly>\n    <members>\n        <member name=\"T:SharpDX.XACT3.AssemblyDoc\">\n            <summary>\n            The <see cref=\"A:SharpDX.XACT3\"/> assembly provides managed XACT3 API.\n            </summary>\n            <msdn-id>hh405049</msdn-id>\n            <unmanaged>XACT3</unmanaged>\t\n            <unmanaged-short>XACT3</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XACT3.AudioEngineSettings\">\n            <summary>\n            Settings for the <see cref=\"T:SharpDX.XACT3.AudioEngine\"/>.\n            </summary>\n            <summary>\t\n            <p>Runtime parameters for initialization of the XACT engine.</p>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_RUNTIME_PARAMETERS']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.xact_runtime_parameters</msdn-id>\t\n            <unmanaged>XACT_RUNTIME_PARAMETERS</unmanaged>\t\n            <unmanaged-short>XACT_RUNTIME_PARAMETERS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.AudioEngineSettings.DefaultLookAhead\">\n            <summary>\n            Default value for <see cref=\"F:SharpDX.XACT3.AudioEngineSettings.LookAheadTime\"/> property (250ms).\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.XACT3.AudioEngineSettings.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.XACT3.AudioEngineSettings\"/> class.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.XACT3.AudioEngineSettings.#ctor(System.IO.Stream)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.XACT3.AudioEngineSettings\"/> struct.\n            </summary>\n            <param name=\"settings\">The settings.</param>\n        </member>\n        <member name=\"F:SharpDX.XACT3.AudioEngineSettings.LookAheadTime\">\n            <summary>\t\n            <dd> Interactive audio and branch event look-ahead time, in milliseconds. This specifies how far ahead the XACT engine will look  ahead when determining when to transition to another sound. XACT_ENGINE_LOOKAHEAD_DEFAULT is a good default value to use for this member. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_RUNTIME_PARAMETERS::lookAheadTime']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.xact_runtime_parameters</msdn-id>\t\n            <unmanaged>unsigned int lookAheadTime</unmanaged>\t\n            <unmanaged-short>unsigned int lookAheadTime</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.AudioEngineSettings.GlobalSettingsBufferPointer\">\n            <summary>\t\n            <dd> Buffer containing the global file data. This file is generated when you build an XACT project file. It contains category, variable,  and RPC information. <table><tr><th>Xbox 360 </th></tr><tr><td> <p>Memory for this member must be allocated using <strong>XMemAlloc</strong> when specifying the XACT_FLAG_ENGINE_CREATE_MANAGEDATA flag.</p> </td></tr></table> <table><tr><th>Windows </th></tr><tr><td> <p>Memory for this member must be allocated using <strong>CoTaskMemAlloc</strong> when specifying the XACT_FLAG_ENGINE_CREATE_MANAGEDATA flag.</p> </td></tr></table> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_RUNTIME_PARAMETERS::pGlobalSettingsBuffer']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.xact_runtime_parameters</msdn-id>\t\n            <unmanaged>void* pGlobalSettingsBuffer</unmanaged>\t\n            <unmanaged-short>void pGlobalSettingsBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.AudioEngineSettings.GlobalSettingsBufferSize\">\n            <summary>\t\n            <dd> Size of the data buffer associated with <strong>pGlobalSettingsBuffer.</strong> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_RUNTIME_PARAMETERS::globalSettingsBufferSize']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.xact_runtime_parameters</msdn-id>\t\n            <unmanaged>unsigned int globalSettingsBufferSize</unmanaged>\t\n            <unmanaged-short>unsigned int globalSettingsBufferSize</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.AudioEngineSettings.GlobalSettingsFlags\">\n            <summary>\t\n            <dd> Flag values indicating how global file data should be handled by XACT. This member can be zero or the value shown in the  following table. <table><tr><th>Value</th><th>Description</th></tr><tr><td>XACT_FLAG_ENGINE_CREATE_MANAGEDATA</td><td> <p>Indicates that XACT should free the buffer pointed to by <strong>pGlobalSettingsBuffer</strong> when initialization is complete.</p> Note XACT will not attempt to free the memory if the buffer allocation fails. ?</td></tr></table> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_RUNTIME_PARAMETERS::globalSettingsFlags']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.xact_runtime_parameters</msdn-id>\t\n            <unmanaged>unsigned int globalSettingsFlags</unmanaged>\t\n            <unmanaged-short>unsigned int globalSettingsFlags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.AudioEngineSettings.GlobalSettingsAllocAttributes\">\n            <summary>\t\n            <dd> Flag values that indicate the attributes of the memory buffer pointed to by <strong>pGlobalSettingsBuffer</strong>. <table><tr><th>Xbox 360 </th></tr><tr><td> <p>This member is needed only if XACT_FLAG_ENGINE_CREATE_MANAGEDATA is specified in <strong>globalSettingsFlags</strong>, so that <strong>XMemFree</strong> can receive the correct values  when XACT frees the buffer. Otherwise, <strong>globalSettingsAllocAttributes</strong> is ignored.</p> <p>These flags should match the <strong>XALLOC_ATTRIBUTES</strong> values that  were specified to <strong>XMemAlloc</strong> when the memory buffer pointed  to by <strong>pGlobalSettingsBuffer</strong> was allocated.</p> </td></tr></table> <table><tr><th>Windows </th></tr><tr><td> <p>This parameter has no relevance and is ignored.</p> </td></tr></table> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_RUNTIME_PARAMETERS::globalSettingsAllocAttributes']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.xact_runtime_parameters</msdn-id>\t\n            <unmanaged>unsigned int globalSettingsAllocAttributes</unmanaged>\t\n            <unmanaged-short>unsigned int globalSettingsAllocAttributes</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.AudioEngineSettings.FileIOCallbacks\">\n            <summary>\t\n            <dd> File I/O callbacks. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_RUNTIME_PARAMETERS::fileIOCallbacks']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.xact_runtime_parameters</msdn-id>\t\n            <unmanaged>XACT_FILEIO_CALLBACKS fileIOCallbacks</unmanaged>\t\n            <unmanaged-short>XACT_FILEIO_CALLBACKS fileIOCallbacks</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.AudioEngineSettings.FnNotificationCallback\">\n            <summary>\t\n            <dd> Callback that receives notifications. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_RUNTIME_PARAMETERS::fnNotificationCallback']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.xact_runtime_parameters</msdn-id>\t\n            <unmanaged>__function__stdcall* fnNotificationCallback</unmanaged>\t\n            <unmanaged-short>__function__stdcall fnNotificationCallback</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.AudioEngineSettings.RendererId\">\n            <summary>\t\n            <dd> Pointer to the ID for the audio renderer the engine should connect to. <table><tr><th>Xbox 360 </th></tr><tr><td> <p>This parameter is undefined.</p> </td></tr></table> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_RUNTIME_PARAMETERS::pRendererID']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.xact_runtime_parameters</msdn-id>\t\n            <unmanaged>wchar_t* pRendererID</unmanaged>\t\n            <unmanaged-short>wchar_t pRendererID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.AudioEngineSettings.XAudio2Pointer\">\n            <summary>\t\n            <dd> Pointer to the <see cref=\"T:SharpDX.XAudio2.XAudio2\"/> interface used by the engine. If this member is <c>null</c>, the XACT engine will create the XAudio2 object. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_RUNTIME_PARAMETERS::pXAudio2']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.xact_runtime_parameters</msdn-id>\t\n            <unmanaged>IXAudio2* pXAudio2</unmanaged>\t\n            <unmanaged-short>IXAudio2 pXAudio2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.AudioEngineSettings.MasteringVoicePointer\">\n            <summary>\t\n            <dd> Pointer to the <see cref=\"T:SharpDX.XAudio2.MasteringVoice\"/> interface, representing the mastering voice that  should be used by the XACT engine. If <strong>pXAudio2</strong> is <c>null</c>, this member must also be <c>null</c>. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_RUNTIME_PARAMETERS::pMasteringVoice']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.xact_runtime_parameters</msdn-id>\t\n            <unmanaged>IXAudio2MasteringVoice* pMasteringVoice</unmanaged>\t\n            <unmanaged-short>IXAudio2MasteringVoice pMasteringVoice</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.XACT3.AudioEngineSettings.Settings\">\n            <summary>\n            Gets or sets the settings file.\n            </summary>\n            <value>\n            The settings file.\n            </value>\n        </member>\n        <member name=\"P:SharpDX.XACT3.AudioEngineSettings.XAudio2\">\n            <summary>\n            Gets or sets the XAudio2 engine to use with XACT3 engine.\n            </summary>\n            <value>\n            The XAudio2 engine.\n            </value>\n        </member>\n        <member name=\"P:SharpDX.XACT3.AudioEngineSettings.MasteringVoice\">\n            <summary>\n            Gets or sets the MasteringVoice to use with XACT3 engine.\n            </summary>\n            <value>\n            The MasteringVoice.\n            </value>\n            <remarks>\n            <see cref=\"P:SharpDX.XACT3.AudioEngineSettings.XAudio2\"/> field must also be set to a valid XAudio2 instance.\n            </remarks>\n        </member>\n        <member name=\"T:SharpDX.XACT3.Cue\">\n            <summary>\t\n            <p>Retrieves the properties of the cue.</p><p>[Content-driven]</p>\t\n            </summary>\t\n            <remarks>\t\n            <p><strong>GetProperties</strong> will allocate memory for the <see cref=\"T:SharpDX.XACT3.CueInstanceProperties\"/> structure.</p> <table><tr><th>Xbox 360 </th></tr><tr><td> <p><strong>GetProperties</strong> performs memory allocation using <strong>XMemAlloc</strong>.</p> <p>The caller should free the memory using <strong>XMemFree</strong>. As an example:</p> <pre> LPXACT_CUE_INSTANCE_PROPERTIES pCueProperties = <c>null</c>;\t\n            if ( FAILED( pCue-&gt;GetProperties( &amp;pCueProperties ) ) )\t\n            { // Error\t\n            }\t\n            XMemFree( pCueProperties, pCueProperties-&gt;allocAttributes ); </pre> </td></tr></table> <table><tr><th>Windows </th></tr><tr><td> <p>The caller should free the memory using CoTaskMemAlloc. The caller should free the  memory using CoTaskMemFree. As an example:</p> <pre> LPXACT_CUE_INSTANCE_PROPERTIES pCueProperties = <c>null</c>;\t\n            if ( FAILED( pCue-&gt;GetProperties( &amp;pCueProperties ) ) )\t\n            { // Error\t\n            }\t\n            CoTaskMemFree( (void*)pCueProperties ); </pre> </td></tr></table>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXACT3Cue']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.ixact3cue.ixact3cue.getproperties</msdn-id>\t\n            <unmanaged>IXACT3Cue</unmanaged>\t\n            <unmanaged-short>IXACT3Cue</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.Cue._nativePointer\">\n            <summary>\n            The native pointer\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.XACT3.Cue.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.XACT3.Cue\"/> struct.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.XACT3.Cue.Play\">\n            <summary>\t\n            <p>Plays a prepared cue.</p><p>[Content-driven]</p>\t\n            </summary>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful, an error code otherwise.</p></returns>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXACT3Cue::Play']/*\"/>\t\n            <msdn-id>ee418387</msdn-id>\t\n            <unmanaged>HRESULT IXACT3Cue::Play()</unmanaged>\t\n            <unmanaged-short>IXACT3Cue::Play</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XACT3.Cue.Stop(SharpDX.XACT3.StopFlags)\">\n            <summary>\t\n            <p>Stops a cue.</p><p>[Content-driven]</p>\t\n            </summary>\t\n            <param name=\"flags\"><dd>[in]  Flag specifying how the cue should be stopped. The flag value may be 0 or the following: <table><tr><th>Value</th><th>Description</th></tr><tr><td><see cref=\"F:SharpDX.XACT3.StopFlags.Immediate\"/></td><td>Indicates the cue should stop immediately, ignoring any release phase or transition specified in the content.?</td></tr></table> <table><tr><th>Note </th></tr><tr><td>Specifying a value of 0 causes <strong>Stop</strong> to account for the release phase and/or transition specified in the XACT.</td></tr></table> </dd></param>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful, an error code otherwise.</p></returns>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXACT3Cue::Stop']/*\"/>\t\n            <msdn-id>ee418392</msdn-id>\t\n            <unmanaged>HRESULT IXACT3Cue::Stop([In] XACT_STOP_FLAGS dwFlags)</unmanaged>\t\n            <unmanaged-short>IXACT3Cue::Stop</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XACT3.Cue.GetState(SharpDX.XACT3.CueState@)\">\n            <summary>\t\n            <p>Retrieves the current operating state of a cue.</p><p>[Content-driven]</p>\t\n            </summary>\t\n            <param name=\"stateRef\"><dd> Flags indicating the state of the cue. The flags are as follows:  <table><tr><th>Value</th><th>Description</th></tr><tr><td><see cref=\"F:SharpDX.XACT3.CueState.CreateD\"/></td><td>Created, but nothing else?</td></tr><tr><td><see cref=\"F:SharpDX.XACT3.CueState.Preparing\"/></td><td>Preparing to play?</td></tr><tr><td><see cref=\"F:SharpDX.XACT3.CueState.Prepared\"/></td><td>Prepared, but not yet played?</td></tr><tr><td><see cref=\"F:SharpDX.XACT3.CueState.Playing\"/></td><td>Playing, but can be paused?</td></tr><tr><td><see cref=\"F:SharpDX.XACT3.CueState.Stopping\"/></td><td>Stopping?</td></tr><tr><td><see cref=\"F:SharpDX.XACT3.CueState.Stopped\"/></td><td>Stopped?</td></tr><tr><td><see cref=\"F:SharpDX.XACT3.CueState.Paused\"/></td><td>Paused?</td></tr></table> <table><tr><th>Note </th></tr><tr><td>States represented by these flags are not necessarily mutually exclusive. Therefore, test states using the &amp; (and) operation rather than the == (equals) operation.</td></tr></table> </dd></param>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful, an error code otherwise.</p></returns>\t\n            <remarks>\t\n            <p>This function informs the caller what activity the cue is performing at the moment the call is made. The state returned from <strong>GetState</strong> indicates only the current condition.</p> <p>Only <see cref=\"F:SharpDX.XACT3.CueState.Paused\"/> is used in combination with other state flags. In other words, the <strong>GetState</strong> might return a state value with <see cref=\"F:SharpDX.XACT3.CueState.Preparing\"/> set or <see cref=\"F:SharpDX.XACT3.CueState.Playing\"/> set, but never with both (since both conditions cannot both be true at the same time). However, <strong>GetState</strong> may return a state value with both <see cref=\"F:SharpDX.XACT3.CueState.Playing\"/> and <see cref=\"F:SharpDX.XACT3.CueState.Paused\"/> flags set, to signify that the cue is paused while playing.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXACT3Cue::GetState']/*\"/>\t\n            <msdn-id>ee418383</msdn-id>\t\n            <unmanaged>HRESULT IXACT3Cue::GetState([Out] XACT_CUE_STATE* pdwState)</unmanaged>\t\n            <unmanaged-short>IXACT3Cue::GetState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XACT3.Cue.Destroy\">\n            <summary>\t\n            <p>Destroys the cue.</p><p>[Content-driven]</p>\t\n            </summary>\t\n            <returns>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful, an error code otherwise.</returns>\t\n            <remarks>\t\n            <p> <strong><see cref=\"M:SharpDX.XACT3.Cue.Destroy\"/></strong> will synchronously destroy the cue, stopping the playback immediately, and frees resources allocated for the cue.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXACT3Cue::Destroy']/*\"/>\t\n            <msdn-id>ee418381</msdn-id>\t\n            <unmanaged>HRESULT IXACT3Cue::Destroy()</unmanaged>\t\n            <unmanaged-short>IXACT3Cue::Destroy</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XACT3.Cue.SetMatrixCoefficients(System.Int32,System.Int32,System.Single[])\">\n            <summary>\t\n            <p>Sets the volume level that each source channel of the cue should play in each of its destination channels.</p><p>[Content-driven]</p>\t\n            </summary>\t\n            <param name=\"srcChannelCount\"><dd>[in]  Number of source channels. This must equal the number of emitter channels. </dd></param>\t\n            <param name=\"dstChannelCount\"><dd>[in]  Number of destination channels. This must equal the number of final mix channels. </dd></param>\t\n            <param name=\"matrixCoefficientsRef\"><dd>[in]  Matrix coefficient table. This is an array that represents the volume level of each source channel present in each destination channel. The source channels are the column index and the destination channels are the row index of the table. The table must have at least <em>uSrcChannelCount</em> * <em>uDstChannelCount</em> elements. </dd></param>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful, an error code otherwise.</p></returns>\t\n            <remarks>\t\n            <p>The <strong>SetMatrixCoefficients</strong> method is primarily used for creating the illusion of the cue being played at some position in 3D space. However, it is recommended to use the XACT methods provided for interacting with X3DAudio instead of calling <strong>SetMatrixCoefficients</strong> directly.  The XACT's X3DAudio helper methods handle calculating and applying a cue's matrix coefficients by calling <strong>SetMatrixCoefficients</strong>.  See How To: Integrate X3DAudio with XACT for more information.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXACT3Cue::SetMatrixCoefficients']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.ixact3cue.ixact3cue.setmatrixcoefficients</msdn-id>\t\n            <unmanaged>HRESULT IXACT3Cue::SetMatrixCoefficients([In] unsigned int uSrcChannelCount,[In] unsigned int uDstChannelCount,[In, Buffer] float* pMatrixCoefficients)</unmanaged>\t\n            <unmanaged-short>IXACT3Cue::SetMatrixCoefficients</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XACT3.Cue.GetVariableIndex(System.String)\">\n            <summary>\t\n            <p>Retrieves the corresponding index for a variable name string.</p><p>[Content-driven]</p>\t\n            </summary>\t\n            <param name=\"friendlyName\"><dd>[in]  String containing the \"friendly name\" of the variable, as specified in the XACT. </dd></param>\t\n            <returns><p>The index of the variable if it exists, or XACTVARIABLEINDEX_INVALID otherwise.</p></returns>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXACT3Cue::GetVariableIndex']/*\"/>\t\n            <msdn-id>ee418385</msdn-id>\t\n            <unmanaged>unsigned short IXACT3Cue::GetVariableIndex([In] const char* szFriendlyName)</unmanaged>\t\n            <unmanaged-short>IXACT3Cue::GetVariableIndex</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XACT3.Cue.SetVariable(System.Int16,System.Single)\">\n            <summary>\t\n            <p>Stores a new value to a variable, referenced by its index.</p><p>[Content-driven]</p>\t\n            </summary>\t\n            <param name=\"index\"><dd>[in]  Assigned index of the variable in which to store <em>nValue</em>. </dd></param>\t\n            <param name=\"value\"><dd>[in]  Value to store in the variable. </dd></param>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful, an error code otherwise.</p> <p>If the variable is private or read-only, <strong>SetVariable</strong> returns XACTENGINE_E_INVALIDVARIABLEINDEX.</p> <p>If <em>nValue</em> falls outside of it's assigned range (or XACTVARIABLEVALUE_MIN to XACTVARIABLEVALUE_MAX), <strong>SetVariable</strong> returns E_FAIL. In this case, the variable is clamped within valid range and a warning message is sent to the debugger.</p></returns>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXACT3Cue::SetVariable']/*\"/>\t\n            <msdn-id>ee418391</msdn-id>\t\n            <unmanaged>HRESULT IXACT3Cue::SetVariable([In] unsigned short nIndex,[In] float nValue)</unmanaged>\t\n            <unmanaged-short>IXACT3Cue::SetVariable</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XACT3.Cue.GetVariable(System.Int16)\">\n            <summary>\t\n            <p>Retrieves the value of a variable by its index.</p><p>[Content-driven]</p>\t\n            </summary>\t\n            <param name=\"index\"><dd>[in]  Assigned index of the variable to retrieve. </dd></param>\t\n            <returns><dd>[out]  Pointer to where to store the value currently held by the variable. </dd></returns>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXACT3Cue::GetVariable']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.ixact3cue.ixact3cue.getvariable</msdn-id>\t\n            <unmanaged>HRESULT IXACT3Cue::GetVariable([In] unsigned short nIndex,[Out] float* nValue)</unmanaged>\t\n            <unmanaged-short>IXACT3Cue::GetVariable</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XACT3.Cue.Pause(SharpDX.Bool)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"pause\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXACT3Cue::Pause']/*\"/>\t\n            <unmanaged>HRESULT IXACT3Cue::Pause([In] BOOL fPause)</unmanaged>\t\n            <unmanaged-short>IXACT3Cue::Pause</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XACT3.Cue.SetOutputVoiceMatrix(SharpDX.XAudio2.Voice,System.Int32,System.Int32,System.Single[])\">\n            <summary>\t\n            <p>Sets the volume level of each channel of the final output for the voice. These channels are  mapped to the input channels of a specified destination voice.</p>\t\n            </summary>\t\n            <param name=\"destinationVoiceRef\"><dd>[in]  Pointer to a destination <see cref=\"T:SharpDX.XAudio2.Voice\"/> for which to set volume levels. <table><tr><th>Note </th></tr><tr><td>If the voice sends to a single target voice specifying <c>null</c> will cause <strong>SetOutputVoiceMatrix</strong> to operate on that target voice.</td></tr></table> </dd></param>\t\n            <param name=\"sourceChannels\"><dd>[in]  Confirms the output channel count of the voice. This is the number of channels that are  produced by the last effect in the chain. </dd></param>\t\n            <param name=\"destinationChannels\"><dd>[in]  Confirms the input channel count of the destination voice. </dd></param>\t\n            <param name=\"levelMatrixRef\"><dd>[in]  Array of [<em>SourceChannels</em> ? <em>DestinationChannels</em>] volume  levels sent to the destination voice. The level sent from source channel <em>S</em> to  destination channel <em>D</em> is specified in the form  <em>pLevelMatrix</em>[<em>SourceChannels</em> ? <em>D</em> + <em>S</em>]. <p>For example, when rendering two-channel stereo input into 5.1 output that is weighted toward the  front channels?but is absent from the center and low-frequency channels?the matrix  might have the values shown in the following table.</p> <table> <tr><th>Output</th><th>Left Input</th><th>Right Input</th></tr> <tr><td>Left</td><td>1.0</td><td>0.0</td></tr> <tr><td>Right</td><td>0.0</td><td>1.0</td></tr> <tr><td>Front Center</td><td>0.0</td><td>0.0</td></tr> <tr><td>LFE</td><td>0.0</td><td>0.0</td></tr> <tr><td>Rear Left</td><td>0.8</td><td>0.0</td></tr> <tr><td>Rear Right</td><td>0.0</td><td>0.8</td></tr> </table> <p>Note that the left and right input are fully mapped to the output left and right channels;  80 percent of the left and right input is mapped to the rear left and right channels.</p> <p>See Remarks for more information on volume levels.</p> </dd></param>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful, an error code otherwise.</p></returns>\t\n            <remarks>\t\n            <p>Volume levels are expressed as floating-point amplitude multipliers between  -<see cref=\"F:SharpDX.XAudio2.XAudio2.MaximumVolumeLevel\"/> and <see cref=\"F:SharpDX.XAudio2.XAudio2.MaximumVolumeLevel\"/> (-224 to 224), with a maximum gain of 144.5 dB. A volume level of 1.0 means there  is no attenuation or gain and 0 means silence.  Negative levels can be used to invert the audio's  phase.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXACT3Cue::SetOutputVoiceMatrix']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.ixact3cue.ixact3cue.setoutputvoicematrix</msdn-id>\t\n            <unmanaged>HRESULT IXACT3Cue::SetOutputVoiceMatrix([In, Optional] IXAudio2Voice* pDestinationVoice,[In] unsigned int SourceChannels,[In] unsigned int DestinationChannels,[In, Buffer] const float* pLevelMatrix)</unmanaged>\t\n            <unmanaged-short>IXACT3Cue::SetOutputVoiceMatrix</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.XACT3.Cue.NativePointer\">\n            <summary>\n            The native pointer\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.XACT3.Cue.State\">\n            <summary>\t\n            <p>Retrieves the current operating state of a cue.</p><p>[Content-driven]</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This function informs the caller what activity the cue is performing at the moment the call is made. The state returned from <strong>GetState</strong> indicates only the current condition.</p> <p>Only <see cref=\"F:SharpDX.XACT3.CueState.Paused\"/> is used in combination with other state flags. In other words, the <strong>GetState</strong> might return a state value with <see cref=\"F:SharpDX.XACT3.CueState.Preparing\"/> set or <see cref=\"F:SharpDX.XACT3.CueState.Playing\"/> set, but never with both (since both conditions cannot both be true at the same time). However, <strong>GetState</strong> may return a state value with both <see cref=\"F:SharpDX.XACT3.CueState.Playing\"/> and <see cref=\"F:SharpDX.XACT3.CueState.Paused\"/> flags set, to signify that the cue is paused while playing.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXACT3Cue::GetState']/*\"/>\t\n            <msdn-id>ee418383</msdn-id>\t\n            <unmanaged>GetState</unmanaged>\t\n            <unmanaged-short>GetState</unmanaged-short>\t\n            <unmanaged>HRESULT IXACT3Cue::GetState([Out] XACT_CUE_STATE* pdwState)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.XACT3.GuiNotification\">\n            <summary>\n            Gui notification parameters.\n            </summary>\n            <unmanaged>XACT_NOTIFICATION_GUI</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.XACT3.Notification\">\n            <summary>\n            Generic notification event.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.XACT3.Notification.Type\">\n            <summary>\n            Gets or sets the type.\n            </summary>\n            <value>\n            The type.\n            </value>\n        </member>\n        <member name=\"P:SharpDX.XACT3.Notification.TimeStamp\">\n            <summary>\t\n            Timestamp of notification, in milliseconds.\n            </summary>\t\n            <unmanaged>int timeStamp</unmanaged>\t\n        </member>\n        <member name=\"T:SharpDX.XACT3.CueNotification\">\n            <summary>\n            Cue notification parameters.\n            </summary>\n            <unmanaged>XACT_NOTIFICATION_CUE</unmanaged>\t\n        </member>\n        <member name=\"T:SharpDX.XACT3.RawNotificationCallback\">\n            <summary>\n            Represents the method which will handle raw notifications.\n            </summary>\n            <param name=\"notification\">The raw notification.</param>\n        </member>\n        <member name=\"T:SharpDX.XACT3.AudioEngine\">\n            <summary>\t\n            <p>This section contains information about the methods used with the <see cref=\"T:SharpDX.XACT3.AudioEngine\"/> interface.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXACT3Engine']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.ixact3engine.ixact3engine</msdn-id>\t\n            <unmanaged>IXACT3Engine</unmanaged>\t\n            <unmanaged-short>IXACT3Engine</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.AudioEngine.rawNotificationDelegate\">\n            <summary>\n            Raw notification delegate, stored as field to prevent garbage collection when passing to unmanaged code.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.XACT3.AudioEngine.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.XACT3.AudioEngine\"/> class.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.XACT3.AudioEngine.#ctor(System.IO.Stream)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.XACT3.AudioEngine\"/> class.\n            </summary>\n            <param name=\"settingsFile\">The settings file.</param>\n        </member>\n        <member name=\"M:SharpDX.XACT3.AudioEngine.#ctor(SharpDX.XACT3.CreationFlags,System.IO.Stream)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.XACT3.AudioEngine\"/> class.\n            </summary>\n            <param name=\"creationFlags\">The creation flags.</param>\n            <param name=\"settingsFile\"></param>\n        </member>\n        <member name=\"M:SharpDX.XACT3.AudioEngine.#ctor(SharpDX.XACT3.CreationFlags,SharpDX.XACT3.AudioEngineSettings)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.XACT3.AudioEngine\"/> class.\n            </summary>\n            <param name=\"creationFlags\">The creation flags.</param>\n            <param name=\"settings\">Settings for this audio engine</param>\n        </member>\n        <member name=\"M:SharpDX.XACT3.AudioEngine.PreInitialize(SharpDX.XACT3.AudioEngineSettings)\">\n            <summary>\n            Initializes this instance from a settings file and a renderer index.\n            </summary>\n            <unmanaged>IXACT3Engine::Initialize</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.XACT3.AudioEngine.OnNotificationRawDelegate(SharpDX.XACT3.RawNotification@)\">\n            <summary>\n            Called when an internal notification occured.\n            </summary>\n            <param name=\"rawNotification\">The raw notification.</param>\n        </member>\n        <member name=\"M:SharpDX.XACT3.AudioEngine.RegisterNotificationRaw(SharpDX.XACT3.RawNotificationDescription@)\">\n            <summary>\n            Registers notification.\n            Notification is fired through OnNotificationRaw. (Use overload to specify callback)\n            </summary>\n            <param name=\"description\">The raw notification description.</param>\n        </member>\n        <member name=\"M:SharpDX.XACT3.AudioEngine.RegisterNotificationRaw(SharpDX.XACT3.RawNotificationDescription@,SharpDX.XACT3.RawNotificationCallback)\">\n            <summary>\n            Registers notification.\n            </summary>\n            <param name=\"description\">The raw notification description.</param>\n            <param name=\"customCallback\">The callback to call when notification is received. This delegate must be stored in private field to prevent GC when passed to unmanaged code.</param>\n        </member>\n        <member name=\"M:SharpDX.XACT3.AudioEngine.UnregisterNotificationRaw(SharpDX.XACT3.RawNotificationDescription@)\">\n            <summary>\n            Unregisters the notification.\n            </summary>\n            <param name=\"description\">The raw notification description.</param>\n        </member>\n        <member name=\"M:SharpDX.XACT3.AudioEngine.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.XACT3.AudioEngine\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.XACT3.AudioEngine.op_Explicit(System.IntPtr)~SharpDX.XACT3.AudioEngine\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.XACT3.AudioEngine\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"F:SharpDX.XACT3.AudioEngine.AuditionEngineGuid\">\n            <summary>Constant AuditionEngineGuid.</summary>\n            <unmanaged>CLSID_XACTAuditionEngine</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.XACT3.AudioEngine.EngineGuid\">\n            <summary>Constant EngineGuid.</summary>\n            <unmanaged>CLSID_XACTEngine</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.XACT3.AudioEngine.DebugEngineGuid\">\n            <summary>Constant DebugEngineGuid.</summary>\n            <unmanaged>CLSID_XACTDebugEngine</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.XACT3.AudioEngine.GetRendererCount(System.Int16@)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"rendererCountRef\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXACT3Engine::GetRendererCount']/*\"/>\t\n            <unmanaged>HRESULT IXACT3Engine::GetRendererCount([Out] unsigned short* pnRendererCount)</unmanaged>\t\n            <unmanaged-short>IXACT3Engine::GetRendererCount</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XACT3.AudioEngine.GetRendererDetails(System.Int16)\">\n            <summary>\t\n            <p>Retrieves information about a specific renderer.</p><table><tr><th>Xbox 360 </th></tr><tr><td> <p>This method is not supported on the Xbox 360 platform.</p> </td></tr></table><p>[Content-driven]</p>\t\n            </summary>\t\n            <param name=\"rendererIndex\"><dd> Index of the renderer to retrieve information from. </dd></param>\t\n            <returns><dd> Pointer to an <see cref=\"T:SharpDX.XACT3.RendererDetails\"/> structure that contains details of the renderer. </dd></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXACT3Engine::GetRendererDetails']/*\"/>\t\n            <msdn-id>ee418403</msdn-id>\t\n            <unmanaged>HRESULT IXACT3Engine::GetRendererDetails([In] unsigned short nRendererIndex,[Out] XACT_RENDERER_DETAILS* pRendererDetails)</unmanaged>\t\n            <unmanaged-short>IXACT3Engine::GetRendererDetails</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XACT3.AudioEngine.GetFinalMixFormat(SharpDX.Multimedia.WaveFormatExtensible@)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"finalMixFormatRef\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXACT3Engine::GetFinalMixFormat']/*\"/>\t\n            <unmanaged>HRESULT IXACT3Engine::GetFinalMixFormat([Out] WAVEFORMATEXTENSIBLE* pFinalMixFormat)</unmanaged>\t\n            <unmanaged-short>IXACT3Engine::GetFinalMixFormat</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XACT3.AudioEngine.Initialize(SharpDX.XACT3.AudioEngineSettings)\">\n            <summary>\t\n            <p>Initializes the XACT engine.</p><p>[Content-driven]</p>\t\n            </summary>\t\n            <param name=\"paramsRef\"><dd>[in]  Pointer to an <see cref=\"T:SharpDX.XACT3.AudioEngineSettings\"/> structure that contains the XACT engine initialization parameters. </dd></param>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful. Otherwise, an error code.</p></returns>\t\n            <remarks>\t\n            <p>This function creates the XACT engine and data structures. It should be called in an application only once per <see cref=\"T:SharpDX.XACT3.AudioEngine\"/> instance.</p> <p>If a title passes an instance of the XAudio2 engine to <strong>Initialize</strong> and uses auditioning the XAudio2 mastering voice must have a volume meter XAPO attached to it. See XAudio2CreateVolumeMeter for information on creating the volume meter and SetEffectChain for  information on attaching the volume meter.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXACT3Engine::Initialize']/*\"/>\t\n            <msdn-id>ee418404</msdn-id>\t\n            <unmanaged>HRESULT IXACT3Engine::Initialize([In] const XACT_RUNTIME_PARAMETERS* pParams)</unmanaged>\t\n            <unmanaged-short>IXACT3Engine::Initialize</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XACT3.AudioEngine.ShutDown\">\n            <summary>\t\n            <p>Shuts down the XACT engine and frees any resources in use.</p><p>[Content-driven]</p>\t\n            </summary>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful. Otherwise, an error code.</p></returns>\t\n            <remarks>\t\n            <p>This method destroys all existing cues, sound banks, and wave banks. It blocks until all cues are destroyed. The method also flushes all pending notifications and unregisters all notification descriptions. No XACT API or method calls can be made after calling this function.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXACT3Engine::ShutDown']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.ixact3engine.ixact3engine.shutdown</msdn-id>\t\n            <unmanaged>HRESULT IXACT3Engine::ShutDown()</unmanaged>\t\n            <unmanaged-short>IXACT3Engine::ShutDown</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XACT3.AudioEngine.DoWork\">\n            <summary>\t\n            <p>Performs periodic work that is required by the XACT engine.</p><p>[Code-driven]</p><p>[Content-driven]</p>\t\n            </summary>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful. Otherwise, an error code.</p></returns>\t\n            <remarks>\t\n            <p>This method drives the XACT engine and is typically called every 30 to 100 milliseconds (about once every one to four frames).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXACT3Engine::DoWork']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.ixact3engine.ixact3engine.dowork</msdn-id>\t\n            <unmanaged>HRESULT IXACT3Engine::DoWork()</unmanaged>\t\n            <unmanaged-short>IXACT3Engine::DoWork</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XACT3.AudioEngine.CreateSoundBank(System.IntPtr,System.Int32,System.Int32,System.Int32,SharpDX.XACT3.SoundBank)\">\n            <summary>\t\n            <p>Creates a sound bank for use by the XACT engine.</p><p>[Content-driven]</p>\t\n            </summary>\t\n            <param name=\"vBufferRef\"><dd>[in]  Pointer to the data that is used to create the sound bank. <table><tr><th>Xbox 360 </th></tr><tr><td> <p>Memory for this member must be allocated by using <strong>XMemAlloc</strong> when specifying the XACT_FLAG_ENGINE_CREATE_MANAGEDATA flag.</p> <p>Xbox 360 sound banks must be allocated from physical memory (and not the heap). The XALLOC_MEMTYPE_PHYSICAL memory type must be  specified as <em>dwMemoryType</em> when memory is allocated  through <strong>XMemAlloc</strong>.</p> </td></tr></table> <table><tr><th>Windows </th></tr><tr><td> <p>Memory for this member must be allocated by using <strong>CoTaskMemAlloc</strong> when specifying the XACT_FLAG_ENGINE_CREATE_MANAGEDATA flag.</p> </td></tr></table> </dd></param>\t\n            <param name=\"size\"><dd>[in]  Value that indicates the size of the data that is used to create the sound bank . </dd></param>\t\n            <param name=\"flags\"><dd>[in]  Flag values that indicate how the sound bank is created. This parameter can be zero or the value shown in the following table. <table><tr><th>Value</th><th>Description</th></tr><tr><td>XACT_FLAG_ENGINE_CREATE_MANAGEDATA</td><td> <p>Indicates that XACT should free the buffer that the <em>pvBuffer</em> parameter points to, when the sound bank data is  released.</p> Note XACT does not attempt to free the memory if the buffer allocation fails. ?</td></tr></table> </dd></param>\t\n            <param name=\"allocAttributes\"><dd>[in]  Flag values that indicate the attributes of the memory buffer that the <em>pvBuffer</em> parameter points to. <table><tr><th>Xbox 360 </th></tr><tr><td> <p>This parameter is needed only if XACT_FLAG_ENGINE_CREATE_MANAGEDATA is specified in <em>dwFlags</em>. This is so  that <strong>XMemFree</strong> can receive the correct values when  the XACT frees the buffer. Otherwise, <em>dwAllocAttributes</em> is ignored.</p> <p>These flags should match the <strong>XALLOC_ATTRIBUTES</strong> values that  were specified to <strong>XMemAlloc</strong> when the memory buffer  that <em>pvBuffer</em> points to was allocated.</p> </td></tr></table> <table><tr><th>Windows </th></tr><tr><td> <p>This parameter has no relevance and is ignored.</p> </td></tr></table> </dd></param>\t\n            <param name=\"soundBankOut\"><dd>[out]  Pointer to an <see cref=\"T:SharpDX.XACT3.SoundBank\"/> object that is returned. </dd></param>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful. Otherwise, an error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXACT3Engine::CreateSoundBank']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.ixact3engine.ixact3engine.createsoundbank</msdn-id>\t\n            <unmanaged>HRESULT IXACT3Engine::CreateSoundBank([In] const void* pvBuffer,[In] unsigned int dwSize,[In] unsigned int dwFlags,[In] unsigned int dwAllocAttributes,[Out, Fast] IXACT3SoundBank** ppSoundBank)</unmanaged>\t\n            <unmanaged-short>IXACT3Engine::CreateSoundBank</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XACT3.AudioEngine.CreateInMemoryWaveBank(System.IntPtr,System.Int32,System.Int32,System.Int32,SharpDX.XACT3.WaveBank)\">\n            <summary>\t\n            <p>Creates an in-memory wave bank for use by the XACT engine.</p><p>[Code-driven]</p><p>[Content-driven]</p>\t\n            </summary>\t\n            <param name=\"vBufferRef\"><dd>[in]  Pointer to the data that is used to create the wave bank. <table><tr><th>Xbox 360 </th></tr><tr><td> <p>Memory for this member must be allocated by using <strong>XMemAlloc</strong> when you specify the XACT_FLAG_ENGINE_CREATE_MANAGEDATA flag.</p> <p>Xbox 360 wavebanks must be created with caching enabled. The PAGE_WRITECOMBINE and PAGE_NOCACHE flags must not be used when  calling <strong>XMemAlloc</strong>.</p> <p>Xbox 360 wavebanks must be allocated from physical memory (and not the heap). The XALLOC_MEMTYPE_PHYSICAL memory type must be  specified as <em>dwMemoryType</em> when memory is allocated  through <strong>XMemAlloc</strong>.</p> </td></tr></table> <table><tr><th>Windows </th></tr><tr><td> <p>Memory for this member must be allocated by using <strong>CoTaskMemAlloc</strong> when you specify the XACT_FLAG_ENGINE_CREATE_MANAGEDATA flag.</p> </td></tr></table> </dd></param>\t\n            <param name=\"size\"><dd>[in]  Value that indicates the size of the data used to create the wave bank. </dd></param>\t\n            <param name=\"flags\"><dd>[in]  Flag values that indicate how the wave bank is created. This parameter can be zero or the value shown in the following table. <table><tr><th>Value</th><th>Description</th></tr><tr><td>XACT_FLAG_ENGINE_CREATE_MANAGEDATA</td><td> <p>Indicates that XACT frees the buffer that the <em>pvBuffer</em> parameter points to, when the wave bank data is released.</p> Note  XACT does not attempt to free the memory if the buffer allocation fails. ?</td></tr></table> </dd></param>\t\n            <param name=\"allocAttributes\"><dd>[in]  Flag values that indicate the attributes of the memory buffer that the <em>pvBuffer</em> parameter points to. <table><tr><th>Xbox 360 </th></tr><tr><td> <p>This parameter is needed only if XACT_FLAG_ENGINE_CREATE_MANAGEDATA is specified in <em>dwFlags</em>. This is so  that <strong>XMemFree</strong> can receive the correct values when  the XACT engine frees the buffer. Otherwise, <em>dwAllocAttributes</em> is ignored.</p> <p>These flags should match the <strong>XALLOC_ATTRIBUTES</strong> values that were  specified to <strong>XMemAlloc</strong> when the memory buffer  that <em>pvBuffer</em> points to was allocated.</p> </td></tr></table> <table><tr><th>Windows </th></tr><tr><td> <p>This parameter has no relevance and is ignored.</p> </td></tr></table> </dd></param>\t\n            <param name=\"waveBankOut\"><dd>[out]  Pointer to an <see cref=\"T:SharpDX.XACT3.WaveBank\"/> object that is returned. </dd></param>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful. Otherwise, an error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXACT3Engine::CreateInMemoryWaveBank']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.ixact3engine.ixact3engine.createinmemorywavebank</msdn-id>\t\n            <unmanaged>HRESULT IXACT3Engine::CreateInMemoryWaveBank([In] const void* pvBuffer,[In] unsigned int dwSize,[In] unsigned int dwFlags,[In] unsigned int dwAllocAttributes,[Out, Fast] IXACT3WaveBank** ppWaveBank)</unmanaged>\t\n            <unmanaged-short>IXACT3Engine::CreateInMemoryWaveBank</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XACT3.AudioEngine.CreateStreamingWaveBank(SharpDX.XACT3.StreamingParameters,SharpDX.XACT3.WaveBank)\">\n            <summary>\t\n            <p>Creates an <see cref=\"T:SharpDX.XACT3.WaveBank\"/> instance.</p><p>[Code-driven]</p><p>[Content-driven]</p>\t\n            </summary>\t\n            <param name=\"parmsRef\">No documentation.</param>\t\n            <param name=\"waveBankOut\">No documentation.</param>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful. Otherwise, an error code.</p></returns>\t\n            <remarks>\t\n            <p>Do not use a sound that is associated with a streaming wave bank  unless you know that the wave bank is prepared.</p> <p>To ascertain that the wave bank is prepared, do one of the following:</p> <ul> <li> <p>Create an XACTNOTIFICATIONTYPE_WAVEBANKPREPARED notification by using  <see cref=\"M:SharpDX.XACT3.AudioEngine.RegisterNotification_(SharpDX.XACT3.RawNotificationDescription@)\"/>.</p> <p> ?or?</p> </li> <li><p>Issue a query about the state of the wave bank by using <see cref=\"M:SharpDX.XACT3.WaveBank.GetState(System.Int32@)\"/>. When the XACT_WAVEBANKSTATE_PREPARED bit is set, you can use the wave bank.</p></li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXACT3Engine::CreateStreamingWaveBank']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.ixact3engine.ixact3engine.createstreamingwavebank</msdn-id>\t\n            <unmanaged>HRESULT IXACT3Engine::CreateStreamingWaveBank([In] const XACT_STREAMING_PARAMETERS* pParms,[Out, Fast] IXACT3WaveBank** ppWaveBank)</unmanaged>\t\n            <unmanaged-short>IXACT3Engine::CreateStreamingWaveBank</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XACT3.AudioEngine.PrepareWave(System.Int32,System.String,System.Int16,System.Int32,System.Int32,System.Byte,SharpDX.XACT3.Wave)\">\n            <summary>\t\n            <p>Prepares a wave object from a standard PCM, XMA (Xbox 360) file.</p><p>[Code-driven]</p>\t\n            </summary>\t\n            <param name=\"flags\"><dd> Flags that affect wave preparation: <table><tr><th>Value</th><th>Description</th></tr><tr><td>XACT_FLAG_BACKGROUND_MUSIC</td><td>Marks the waves as background music.Xbox 360  This flag is supported only on the Xbox 360 platform. ?</td></tr><tr><td>XACT_FLAG_UNITS_MS</td><td>Indicates that the units passed in are measured in milliseconds.?</td></tr><tr><td>XACT_FLAG_UNITS_SAMPLES</td><td>Indicates that the units passed in are in samples.?</td></tr></table> </dd></param>\t\n            <param name=\"wavePath\"><dd> Path to the wave file. </dd></param>\t\n            <param name=\"streamingPacketSize\"><dd> Packet Size, in 2 KB increments. If <em>wStreamingPacketSize</em> is 0, the file is an in-memory wave. A fully prepared wave is returned. For streaming waves,  the client needs to call <see cref=\"M:SharpDX.XACT3.Wave.GetState(SharpDX.XACT3.WaveState@)\"/> to ensure that the wave is prepared before playback.  Loop region information is read from the wave file. </dd></param>\t\n            <param name=\"alignment\"><dd> Alignment of wave data on the media from which it is streamed. This must be at least 2048. Otherwise, it must be a multiple of 2048. </dd></param>\t\n            <param name=\"playOffset\"><dd> Play offset to use as the start of the wave. The offset can be described in milliseconds or in samples. The <em>dwFlags</em> argument determines the offset units. </dd></param>\t\n            <param name=\"loopCount\"><dd> Number of times to loop the file. If there is no loop region, and the loop count is nonzero, the entire wave is looped. </dd></param>\t\n            <param name=\"waveOut\"><dd> Pointer to an <see cref=\"T:SharpDX.XACT3.Wave\"/> object that is returned. </dd></param>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful. Otherwise, an error code.</p></returns>\t\n            <remarks>\t\n            <p>If this API is used to prepare XMA content, the content must be encoded by using 64K block size.</p> <p><strong>PrepareWave</strong> does not support xWMA.  xWMA content can be prepared using one of the following methods:</p> <ul> <li>Prepare</li> <li>Prepare</li> <li>PrepareInMemoryWave</li> <li>PrepareStreamingWave</li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXACT3Engine::PrepareWave']/*\"/>\t\n            <msdn-id>ee418408</msdn-id>\t\n            <unmanaged>HRESULT IXACT3Engine::PrepareWave([In] unsigned int dwFlags,[In] const char* szWavePath,[In] unsigned short wStreamingPacketSize,[In] unsigned int dwAlignment,[In] unsigned int dwPlayOffset,[In] unsigned char nLoopCount,[Out, Fast] IXACT3Wave** ppWave)</unmanaged>\t\n            <unmanaged-short>IXACT3Engine::PrepareWave</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XACT3.AudioEngine.PrepareInMemoryWave(System.Int32,SharpDX.XACT3.WaveBankEntry,System.Nullable{System.Int32},System.Nullable{System.Byte},System.Int32,System.Byte,SharpDX.XACT3.Wave)\">\n            <summary>\t\n            <p>Creates an in-memory <see cref=\"T:SharpDX.XACT3.Wave\"/> object from data that is already resident in memory.</p><p>[Code-driven]</p>\t\n            </summary>\t\n            <param name=\"flags\">No documentation.</param>\t\n            <param name=\"entry\">No documentation.</param>\t\n            <param name=\"seekTableRef\">No documentation.</param>\t\n            <param name=\"bWaveDataRef\">No documentation.</param>\t\n            <param name=\"playOffset\">No documentation.</param>\t\n            <param name=\"loopCount\">No documentation.</param>\t\n            <param name=\"waveOut\">No documentation.</param>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful. Otherwise, an error code.</p></returns>\t\n            <remarks>\t\n            <p>The application must make sure that the any buffers passed in (data, seek table) are valid through the lifetime of this wave.</p> <table><tr><th>Xbox 360 </th></tr><tr><td> <p>If this API is used to prepare XMA content, the content must be encoded with 64K block size. When using <strong>XMAEncode</strong>,  specify \"/b 64\" on the command line to create 64K blocks.</p> </td></tr></table>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXACT3Engine::PrepareInMemoryWave']/*\"/>\t\n            <msdn-id>ee418406</msdn-id>\t\n            <unmanaged>HRESULT IXACT3Engine::PrepareInMemoryWave([In] unsigned int dwFlags,[In] WAVEBANKENTRY entry,[In, Optional] unsigned int* pdwSeekTable,[In, Optional] unsigned char* pbWaveData,[In] unsigned int dwPlayOffset,[In] unsigned char nLoopCount,[Out, Fast] IXACT3Wave** ppWave)</unmanaged>\t\n            <unmanaged-short>IXACT3Engine::PrepareInMemoryWave</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XACT3.AudioEngine.PrepareStreamingWave(System.Int32,SharpDX.XACT3.WaveBankEntry,SharpDX.XACT3.StreamingParameters,System.Int32,System.Nullable{System.Int32},System.Int32,System.Byte,SharpDX.XACT3.Wave)\">\n            <summary>\t\n            <p>Creates a streaming wave object for the file handle that is passed in.</p><p>[Code-driven]</p>\t\n            </summary>\t\n            <param name=\"flags\"><dd> Flags that affect wave preparation: <table><tr><th>Value</th><th>Description</th></tr><tr><td>XACT_FLAG_BACKGROUND_MUSIC</td><td>Marks the waves as background music. Xbox 360 This flag is supported only on the Xbox 360 platform.?</td></tr><tr><td>XACT_FLAG_UNITS_MS</td><td>Indicates that the units passed in are measured in milliseconds.?</td></tr><tr><td>XACT_FLAG_UNITS_SAMPLES</td><td>Indicates that the units passed in are in samples.?</td></tr></table> </dd></param>\t\n            <param name=\"entry\"><dd> <see cref=\"T:SharpDX.XACT3.WaveBankEntry\"/> structure that describes the format, play region, and loop region for the wave. </dd></param>\t\n            <param name=\"streamingParams\"><dd> <see cref=\"T:SharpDX.XACT3.StreamingParameters\"/> structure with a valid file handle, packet size, etc. </dd></param>\t\n            <param name=\"alignment\"><dd> Alignment of wave data on the media from which it is streamed. This must be at least 2048. Otherwise, it must be a multiple of 2048. </dd></param>\t\n            <param name=\"seekTableRef\"><dd> The seek table for XMA content. The first DWORD must be the count of entries in the table that follows it. </dd></param>\t\n            <param name=\"playOffset\"><dd> Play offset to use as the start of the wave. The offset can be described in milliseconds or in samples. The <em>dwFlags</em> argument determines the offset units. </dd></param>\t\n            <param name=\"loopCount\"><dd> Loop count for the wave. </dd></param>\t\n            <param name=\"waveOut\"><dd> Pointer an <see cref=\"T:SharpDX.XACT3.Wave\"/> object that  is returned. </dd></param>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful. Otherwise, an error code.</p></returns>\t\n            <remarks>\t\n            <p>If this API is used to prepare XMA content, the content must be encoded with 64K block size.  ADPCM files are currently not supported.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXACT3Engine::PrepareStreamingWave']/*\"/>\t\n            <msdn-id>ee418407</msdn-id>\t\n            <unmanaged>HRESULT IXACT3Engine::PrepareStreamingWave([In] unsigned int dwFlags,[In] WAVEBANKENTRY entry,[In] XACT_STREAMING_PARAMETERS streamingParams,[In] unsigned int dwAlignment,[In, Optional] unsigned int* pdwSeekTable,[In] unsigned int dwPlayOffset,[In] unsigned char nLoopCount,[Out, Fast] IXACT3Wave** ppWave)</unmanaged>\t\n            <unmanaged-short>IXACT3Engine::PrepareStreamingWave</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XACT3.AudioEngine.RegisterNotification_(SharpDX.XACT3.RawNotificationDescription@)\">\n            <summary>\t\n            <p>Registers an event notification.</p><p>[Content-driven]</p>\t\n            </summary>\t\n            <param name=\"notificationDescRef\"><dd>[in]  Pointer to an <see cref=\"T:SharpDX.XACT3.RawNotificationDescription\"/> structure that describes the notification to register. </dd></param>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful. Otherwise, an error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXACT3Engine::RegisterNotification']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.ixact3engine.ixact3engine.registernotification</msdn-id>\t\n            <unmanaged>HRESULT IXACT3Engine::RegisterNotification([In] const XACT_NOTIFICATION_DESCRIPTION* pNotificationDesc)</unmanaged>\t\n            <unmanaged-short>IXACT3Engine::RegisterNotification</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XACT3.AudioEngine.UnRegisterNotification_(SharpDX.XACT3.RawNotificationDescription@)\">\n            <summary>\t\n            <p>Cancels registration of an event notification.</p><p>[Content-driven]</p>\t\n            </summary>\t\n            <param name=\"notificationDescRef\"><dd>[in]  Pointer to an <see cref=\"T:SharpDX.XACT3.RawNotificationDescription\"/> structure that describes the notification to unregister. <table><tr><th>Note </th></tr><tr><td>Attempting to unregister a notification that has not been registered has no effect.</td></tr></table> </dd></param>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful. Otherwise, an error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXACT3Engine::UnRegisterNotification']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.ixact3engine.ixact3engine.unregisternotification</msdn-id>\t\n            <unmanaged>HRESULT IXACT3Engine::UnRegisterNotification([In] const XACT_NOTIFICATION_DESCRIPTION* pNotificationDesc)</unmanaged>\t\n            <unmanaged-short>IXACT3Engine::UnRegisterNotification</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XACT3.AudioEngine.GetCategory(System.String)\">\n            <summary>\t\n            <p>Retrieves the sound category index that corresponds to a friendly name string.</p><p>[Content-driven]</p>\t\n            </summary>\t\n            <param name=\"friendlyName\"><dd>[in]  Pointer to a buffer that contains the zero-terminated string that describes the category's friendly name. </dd></param>\t\n            <returns><p>Returns a category index for the friendly name if successful. Otherwise, XACTCATEGORY_INVALID.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXACT3Engine::GetCategory']/*\"/>\t\n            <msdn-id>ee418398</msdn-id>\t\n            <unmanaged>unsigned short IXACT3Engine::GetCategory([In] const char* szFriendlyName)</unmanaged>\t\n            <unmanaged-short>IXACT3Engine::GetCategory</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XACT3.AudioEngine.Stop(System.Int16,SharpDX.XACT3.StopFlags)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"category\">No documentation.</param>\t\n            <param name=\"flags\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXACT3Engine::Stop']/*\"/>\t\n            <unmanaged>HRESULT IXACT3Engine::Stop([In] unsigned short nCategory,[In] XACT_STOP_FLAGS dwFlags)</unmanaged>\t\n            <unmanaged-short>IXACT3Engine::Stop</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XACT3.AudioEngine.SetVolume(System.Int16,System.Single)\">\n            <summary>\t\n            <p>Sets the volume of a sound category.</p><p>[Content-driven]</p>\t\n            </summary>\t\n            <param name=\"category\"><dd>[in]  Index of the category (<strong>XACTCATEGORY</strong>) for which to set the volume, as returned  by <see cref=\"M:SharpDX.XACT3.AudioEngine.GetCategory(System.String)\"/>. </dd></param>\t\n            <param name=\"volume\"><dd>[in]  Volume level to set. </dd></param>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful. Otherwise, an error code.</p></returns>\t\n            <remarks>\t\n            <p>The volume is a floating point scale where 0.0 means -96db, 1.0 means 0db, and 2.0 means +6db.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXACT3Engine::SetVolume']/*\"/>\t\n            <msdn-id>ee418413</msdn-id>\t\n            <unmanaged>HRESULT IXACT3Engine::SetVolume([In] unsigned short nCategory,[In] float nVolume)</unmanaged>\t\n            <unmanaged-short>IXACT3Engine::SetVolume</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XACT3.AudioEngine.Pause(System.Int16,SharpDX.Bool)\">\n            <summary>\t\n            <p>Pauses or resumes playback of a category.</p><p>[Content-driven]</p>\t\n            </summary>\t\n            <param name=\"category\"><dd>[in]  Index of the category (<strong>XACTCATEGORY</strong>) to pause, as returned by <see cref=\"M:SharpDX.XACT3.AudioEngine.GetCategory(System.String)\"/>. </dd></param>\t\n            <param name=\"pause\"><dd>[in]  Action to take. If TRUE, playback is paused. If <see cref=\"F:SharpDX.Result.False\"/>, playback resumes. </dd></param>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful. Otherwise, an error code.</p></returns>\t\n            <remarks>\t\n            <p>A stopping or stopped cue cannot be paused.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXACT3Engine::Pause']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.ixact3engine.ixact3engine.pause</msdn-id>\t\n            <unmanaged>HRESULT IXACT3Engine::Pause([In] unsigned short nCategory,[In] BOOL fPause)</unmanaged>\t\n            <unmanaged-short>IXACT3Engine::Pause</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XACT3.AudioEngine.GetGlobalVariableIndex(System.String)\">\n            <summary>\t\n            <p>Retrieves the corresponding index for a global variable name string.</p><p>[Content-driven]</p>\t\n            </summary>\t\n            <param name=\"friendlyName\"><dd>[in]  String that contains the friendly name of the global variable, as specified in the XACT engine. </dd></param>\t\n            <returns><p>The index of the global variable if it exists. Otherwise, XACTVARIABLEINDEX_INVALID.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXACT3Engine::GetGlobalVariableIndex']/*\"/>\t\n            <msdn-id>ee418401</msdn-id>\t\n            <unmanaged>unsigned short IXACT3Engine::GetGlobalVariableIndex([In] const char* szFriendlyName)</unmanaged>\t\n            <unmanaged-short>IXACT3Engine::GetGlobalVariableIndex</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XACT3.AudioEngine.SetGlobalVariable(System.Int16,System.Single)\">\n            <summary>\t\n            <p>Stores a new value to a global variable, which is referenced by its index.</p><p>[Content-driven]</p>\t\n            </summary>\t\n            <param name=\"index\"><dd>[in]  Assigned index of the global variable in which to store <em>nValue</em>. </dd></param>\t\n            <param name=\"value\"><dd>[in]  Value to store in the global variable. </dd></param>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful. Otherwise, an error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXACT3Engine::SetGlobalVariable']/*\"/>\t\n            <msdn-id>ee418412</msdn-id>\t\n            <unmanaged>HRESULT IXACT3Engine::SetGlobalVariable([In] unsigned short nIndex,[In] float nValue)</unmanaged>\t\n            <unmanaged-short>IXACT3Engine::SetGlobalVariable</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XACT3.AudioEngine.GetGlobalVariable(System.Int16)\">\n            <summary>\t\n            <p>Retrieves the value of a global variable by its index.</p><p>[Content-driven]</p>\t\n            </summary>\t\n            <param name=\"index\"><dd>[in]  Assigned index of the global variable to retrieve. </dd></param>\t\n            <returns><dd>[out]  Pointer to the location of the value that is currently held by the global variable. </dd></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXACT3Engine::GetGlobalVariable']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.ixact3engine.ixact3engine.getglobalvariable</msdn-id>\t\n            <unmanaged>HRESULT IXACT3Engine::GetGlobalVariable([In] unsigned short nIndex,[Out] float* nValue)</unmanaged>\t\n            <unmanaged-short>IXACT3Engine::GetGlobalVariable</unmanaged-short>\t\n        </member>\n        <member name=\"E:SharpDX.XACT3.AudioEngine.OnNotificationRaw\">\n            <summary>\n            Occurs when a AudioEngine event occurs.\n            </summary>\n            <remarks>\n            Use <see cref=\"M:SharpDX.XACT3.AudioEngine.RegisterNotificationRaw(SharpDX.XACT3.RawNotificationDescription@)\"/> to register types.\n            </remarks>\n        </member>\n        <member name=\"P:SharpDX.XACT3.AudioEngine.RendererCount\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXACT3Engine::GetRendererCount']/*\"/>\t\n            <unmanaged>GetRendererCount</unmanaged>\t\n            <unmanaged-short>GetRendererCount</unmanaged-short>\t\n            <unmanaged>HRESULT IXACT3Engine::GetRendererCount([Out] unsigned short* pnRendererCount)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.XACT3.AudioEngine.FinalMixFormat\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXACT3Engine::GetFinalMixFormat']/*\"/>\t\n            <unmanaged>GetFinalMixFormat</unmanaged>\t\n            <unmanaged-short>GetFinalMixFormat</unmanaged-short>\t\n            <unmanaged>HRESULT IXACT3Engine::GetFinalMixFormat([Out] WAVEFORMATEXTENSIBLE* pFinalMixFormat)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.XACT3.AudioEngine.NotificationCallbackDelegate\">\n            <summary>\n            Internal unmanaged delegate\n            </summary>\n            <param name=\"notification\">The notification.</param>\n        </member>\n        <member name=\"T:SharpDX.XACT3.ContentPreparationFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_CONTENT_PREPARATION_FLAGS']/*\"/>\t\n            <unmanaged>XACT_CONTENT_PREPARATION_FLAGS</unmanaged>\t\n            <unmanaged-short>XACT_CONTENT_PREPARATION_FLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.ContentPreparationFlags.UnitsMultisampled\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MACRO_XACT_FLAG_UNITS_MS']/*\"/>\t\n            <unmanaged>MACRO_XACT_FLAG_UNITS_MS</unmanaged>\t\n            <unmanaged-short>MACRO_XACT_FLAG_UNITS_MS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.ContentPreparationFlags.UnitsSamples\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MACRO_XACT_FLAG_UNITS_SAMPLES']/*\"/>\t\n            <unmanaged>MACRO_XACT_FLAG_UNITS_SAMPLES</unmanaged>\t\n            <unmanaged-short>MACRO_XACT_FLAG_UNITS_SAMPLES</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XACT3.CreationFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_CREATION_FLAGS']/*\"/>\t\n            <unmanaged>XACT_CREATION_FLAGS</unmanaged>\t\n            <unmanaged-short>XACT_CREATION_FLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.CreationFlags.AuditionMode\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MACRO_XACT_FLAG_API_AUDITION_MODE']/*\"/>\t\n            <unmanaged>MACRO_XACT_FLAG_API_AUDITION_MODE</unmanaged>\t\n            <unmanaged-short>MACRO_XACT_FLAG_API_AUDITION_MODE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.CreationFlags.DebugMode\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MACRO_XACT_FLAG_API_DEBUG_MODE']/*\"/>\t\n            <unmanaged>MACRO_XACT_FLAG_API_DEBUG_MODE</unmanaged>\t\n            <unmanaged-short>MACRO_XACT_FLAG_API_DEBUG_MODE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.CreationFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XACT3.CueState\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_CUE_STATE']/*\"/>\t\n            <unmanaged>XACT_CUE_STATE</unmanaged>\t\n            <unmanaged-short>XACT_CUE_STATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.CueState.CreateD\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_CUESTATE_CREATED']/*\"/>\t\n            <unmanaged>XACT_CUESTATE_CREATED</unmanaged>\t\n            <unmanaged-short>XACT_CUESTATE_CREATED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.CueState.Preparing\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_CUESTATE_PREPARING']/*\"/>\t\n            <unmanaged>XACT_CUESTATE_PREPARING</unmanaged>\t\n            <unmanaged-short>XACT_CUESTATE_PREPARING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.CueState.Prepared\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_CUESTATE_PREPARED']/*\"/>\t\n            <unmanaged>XACT_CUESTATE_PREPARED</unmanaged>\t\n            <unmanaged-short>XACT_CUESTATE_PREPARED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.CueState.Playing\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_CUESTATE_PLAYING']/*\"/>\t\n            <unmanaged>XACT_CUESTATE_PLAYING</unmanaged>\t\n            <unmanaged-short>XACT_CUESTATE_PLAYING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.CueState.Stopping\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_CUESTATE_STOPPING']/*\"/>\t\n            <unmanaged>XACT_CUESTATE_STOPPING</unmanaged>\t\n            <unmanaged-short>XACT_CUESTATE_STOPPING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.CueState.Stopped\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_CUESTATE_STOPPED']/*\"/>\t\n            <unmanaged>XACT_CUESTATE_STOPPED</unmanaged>\t\n            <unmanaged-short>XACT_CUESTATE_STOPPED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.CueState.Paused\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_CUESTATE_PAUSED']/*\"/>\t\n            <unmanaged>XACT_CUESTATE_PAUSED</unmanaged>\t\n            <unmanaged-short>XACT_CUESTATE_PAUSED</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XACT3.NotificationType\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_NOTIFICATION_TYPE']/*\"/>\t\n            <unmanaged>XACT_NOTIFICATION_TYPE</unmanaged>\t\n            <unmanaged-short>XACT_NOTIFICATION_TYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.NotificationType.CuePrepared\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MACRO_XACT_NOTIFICATIONTYPE_CUEPREPARED']/*\"/>\t\n            <unmanaged>MACRO_XACT_NOTIFICATIONTYPE_CUEPREPARED</unmanaged>\t\n            <unmanaged-short>MACRO_XACT_NOTIFICATIONTYPE_CUEPREPARED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.NotificationType.CuePlay\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MACRO_XACT_NOTIFICATIONTYPE_CUEPLAY']/*\"/>\t\n            <unmanaged>MACRO_XACT_NOTIFICATIONTYPE_CUEPLAY</unmanaged>\t\n            <unmanaged-short>MACRO_XACT_NOTIFICATIONTYPE_CUEPLAY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.NotificationType.CueStop\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MACRO_XACT_NOTIFICATIONTYPE_CUESTOP']/*\"/>\t\n            <unmanaged>MACRO_XACT_NOTIFICATIONTYPE_CUESTOP</unmanaged>\t\n            <unmanaged-short>MACRO_XACT_NOTIFICATIONTYPE_CUESTOP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.NotificationType.CueDestroyed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MACRO_XACT_NOTIFICATIONTYPE_CUEDESTROYED']/*\"/>\t\n            <unmanaged>MACRO_XACT_NOTIFICATIONTYPE_CUEDESTROYED</unmanaged>\t\n            <unmanaged-short>MACRO_XACT_NOTIFICATIONTYPE_CUEDESTROYED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.NotificationType.Marker\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MACRO_XACT_NOTIFICATIONTYPE_MARKER']/*\"/>\t\n            <unmanaged>MACRO_XACT_NOTIFICATIONTYPE_MARKER</unmanaged>\t\n            <unmanaged-short>MACRO_XACT_NOTIFICATIONTYPE_MARKER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.NotificationType.SoundBankDestroyed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MACRO_XACT_NOTIFICATIONTYPE_SOUNDBANKDESTROYED']/*\"/>\t\n            <unmanaged>MACRO_XACT_NOTIFICATIONTYPE_SOUNDBANKDESTROYED</unmanaged>\t\n            <unmanaged-short>MACRO_XACT_NOTIFICATIONTYPE_SOUNDBANKDESTROYED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.NotificationType.WaveBankDestroyed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MACRO_XACT_NOTIFICATIONTYPE_WAVEBANKDESTROYED']/*\"/>\t\n            <unmanaged>MACRO_XACT_NOTIFICATIONTYPE_WAVEBANKDESTROYED</unmanaged>\t\n            <unmanaged-short>MACRO_XACT_NOTIFICATIONTYPE_WAVEBANKDESTROYED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.NotificationType.LocalVariableChanged\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MACRO_XACT_NOTIFICATIONTYPE_LOCALVARIABLECHANGED']/*\"/>\t\n            <unmanaged>MACRO_XACT_NOTIFICATIONTYPE_LOCALVARIABLECHANGED</unmanaged>\t\n            <unmanaged-short>MACRO_XACT_NOTIFICATIONTYPE_LOCALVARIABLECHANGED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.NotificationType.GlobalVariableChanged\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MACRO_XACT_NOTIFICATIONTYPE_GLOBALVARIABLECHANGED']/*\"/>\t\n            <unmanaged>MACRO_XACT_NOTIFICATIONTYPE_GLOBALVARIABLECHANGED</unmanaged>\t\n            <unmanaged-short>MACRO_XACT_NOTIFICATIONTYPE_GLOBALVARIABLECHANGED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.NotificationType.GuiConnected\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MACRO_XACT_NOTIFICATIONTYPE_GUICONNECTED']/*\"/>\t\n            <unmanaged>MACRO_XACT_NOTIFICATIONTYPE_GUICONNECTED</unmanaged>\t\n            <unmanaged-short>MACRO_XACT_NOTIFICATIONTYPE_GUICONNECTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.NotificationType.GuiDisconnected\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MACRO_XACT_NOTIFICATIONTYPE_GUIDISCONNECTED']/*\"/>\t\n            <unmanaged>MACRO_XACT_NOTIFICATIONTYPE_GUIDISCONNECTED</unmanaged>\t\n            <unmanaged-short>MACRO_XACT_NOTIFICATIONTYPE_GUIDISCONNECTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.NotificationType.WavePrepared\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MACRO_XACT_NOTIFICATIONTYPE_WAVEPREPARED']/*\"/>\t\n            <unmanaged>MACRO_XACT_NOTIFICATIONTYPE_WAVEPREPARED</unmanaged>\t\n            <unmanaged-short>MACRO_XACT_NOTIFICATIONTYPE_WAVEPREPARED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.NotificationType.WavePlay\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MACRO_XACT_NOTIFICATIONTYPE_WAVEPLAY']/*\"/>\t\n            <unmanaged>MACRO_XACT_NOTIFICATIONTYPE_WAVEPLAY</unmanaged>\t\n            <unmanaged-short>MACRO_XACT_NOTIFICATIONTYPE_WAVEPLAY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.NotificationType.WaveStop\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MACRO_XACT_NOTIFICATIONTYPE_WAVESTOP']/*\"/>\t\n            <unmanaged>MACRO_XACT_NOTIFICATIONTYPE_WAVESTOP</unmanaged>\t\n            <unmanaged-short>MACRO_XACT_NOTIFICATIONTYPE_WAVESTOP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.NotificationType.WaveLooped\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MACRO_XACT_NOTIFICATIONTYPE_WAVELOOPED']/*\"/>\t\n            <unmanaged>MACRO_XACT_NOTIFICATIONTYPE_WAVELOOPED</unmanaged>\t\n            <unmanaged-short>MACRO_XACT_NOTIFICATIONTYPE_WAVELOOPED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.NotificationType.WaveDestroyed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MACRO_XACT_NOTIFICATIONTYPE_WAVEDESTROYED']/*\"/>\t\n            <unmanaged>MACRO_XACT_NOTIFICATIONTYPE_WAVEDESTROYED</unmanaged>\t\n            <unmanaged-short>MACRO_XACT_NOTIFICATIONTYPE_WAVEDESTROYED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.NotificationType.WaveBankPrepared\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MACRO_XACT_NOTIFICATIONTYPE_WAVEBANKPREPARED']/*\"/>\t\n            <unmanaged>MACRO_XACT_NOTIFICATIONTYPE_WAVEBANKPREPARED</unmanaged>\t\n            <unmanaged-short>MACRO_XACT_NOTIFICATIONTYPE_WAVEBANKPREPARED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.NotificationType.WaveBankStreamingInvalidContent\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MACRO_XACT_NOTIFICATIONTYPE_WAVEBANKSTREAMING_INVALIDCONTENT']/*\"/>\t\n            <unmanaged>MACRO_XACT_NOTIFICATIONTYPE_WAVEBANKSTREAMING_INVALIDCONTENT</unmanaged>\t\n            <unmanaged-short>MACRO_XACT_NOTIFICATIONTYPE_WAVEBANKSTREAMING_INVALIDCONTENT</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XACT3.StopFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_STOP_FLAGS']/*\"/>\t\n            <unmanaged>XACT_STOP_FLAGS</unmanaged>\t\n            <unmanaged-short>XACT_STOP_FLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.StopFlags.Release\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_FLAG_CUE_STOP_RELEASE']/*\"/>\t\n            <unmanaged>XACT_FLAG_CUE_STOP_RELEASE</unmanaged>\t\n            <unmanaged-short>XACT_FLAG_CUE_STOP_RELEASE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.StopFlags.Immediate\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_FLAG_CUE_STOP_IMMEDIATE']/*\"/>\t\n            <unmanaged>XACT_FLAG_CUE_STOP_IMMEDIATE</unmanaged>\t\n            <unmanaged-short>XACT_FLAG_CUE_STOP_IMMEDIATE</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XACT3.WaveBankMiniFormatTag\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVEBANKMINIFORMAT_TAG']/*\"/>\t\n            <unmanaged>WAVEBANKMINIFORMAT_TAG</unmanaged>\t\n            <unmanaged-short>WAVEBANKMINIFORMAT_TAG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.WaveBankMiniFormatTag.Pcm\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVEBANKMINIFORMAT_TAG_PCM']/*\"/>\t\n            <unmanaged>WAVEBANKMINIFORMAT_TAG_PCM</unmanaged>\t\n            <unmanaged-short>WAVEBANKMINIFORMAT_TAG_PCM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.WaveBankMiniFormatTag.Xma\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVEBANKMINIFORMAT_TAG_XMA']/*\"/>\t\n            <unmanaged>WAVEBANKMINIFORMAT_TAG_XMA</unmanaged>\t\n            <unmanaged-short>WAVEBANKMINIFORMAT_TAG_XMA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.WaveBankMiniFormatTag.Adpcm\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVEBANKMINIFORMAT_TAG_ADPCM']/*\"/>\t\n            <unmanaged>WAVEBANKMINIFORMAT_TAG_ADPCM</unmanaged>\t\n            <unmanaged-short>WAVEBANKMINIFORMAT_TAG_ADPCM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.WaveBankMiniFormatTag.Wma\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVEBANKMINIFORMAT_TAG_WMA']/*\"/>\t\n            <unmanaged>WAVEBANKMINIFORMAT_TAG_WMA</unmanaged>\t\n            <unmanaged-short>WAVEBANKMINIFORMAT_TAG_WMA</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XACT3.Wavebanksegidx\">\n            <summary>\t\n            <p>Wave bank segment identifiers.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVEBANKSEGIDX']/*\"/>\t\n            <msdn-id>ee419069</msdn-id>\t\n            <unmanaged>WAVEBANKSEGIDX</unmanaged>\t\n            <unmanaged-short>WAVEBANKSEGIDX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.Wavebanksegidx.SegidxBankdata\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVEBANK_SEGIDX_BANKDATA']/*\"/>\t\n            <unmanaged>WAVEBANK_SEGIDX_BANKDATA</unmanaged>\t\n            <unmanaged-short>WAVEBANK_SEGIDX_BANKDATA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.Wavebanksegidx.SegidxEntrymetadata\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVEBANK_SEGIDX_ENTRYMETADATA']/*\"/>\t\n            <unmanaged>WAVEBANK_SEGIDX_ENTRYMETADATA</unmanaged>\t\n            <unmanaged-short>WAVEBANK_SEGIDX_ENTRYMETADATA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.Wavebanksegidx.SegidxSeektables\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVEBANK_SEGIDX_SEEKTABLES']/*\"/>\t\n            <unmanaged>WAVEBANK_SEGIDX_SEEKTABLES</unmanaged>\t\n            <unmanaged-short>WAVEBANK_SEGIDX_SEEKTABLES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.Wavebanksegidx.SegidxEntrynames\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVEBANK_SEGIDX_ENTRYNAMES']/*\"/>\t\n            <unmanaged>WAVEBANK_SEGIDX_ENTRYNAMES</unmanaged>\t\n            <unmanaged-short>WAVEBANK_SEGIDX_ENTRYNAMES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.Wavebanksegidx.SegidxEntrywavedata\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVEBANK_SEGIDX_ENTRYWAVEDATA']/*\"/>\t\n            <unmanaged>WAVEBANK_SEGIDX_ENTRYWAVEDATA</unmanaged>\t\n            <unmanaged-short>WAVEBANK_SEGIDX_ENTRYWAVEDATA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.Wavebanksegidx.SegidxCount\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVEBANK_SEGIDX_COUNT']/*\"/>\t\n            <unmanaged>WAVEBANK_SEGIDX_COUNT</unmanaged>\t\n            <unmanaged-short>WAVEBANK_SEGIDX_COUNT</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XACT3.WaveState\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_WAVE_STATE']/*\"/>\t\n            <unmanaged>XACT_WAVE_STATE</unmanaged>\t\n            <unmanaged-short>XACT_WAVE_STATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.WaveState.CreateD\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MACRO_XACT_STATE_CREATED']/*\"/>\t\n            <unmanaged>MACRO_XACT_STATE_CREATED</unmanaged>\t\n            <unmanaged-short>MACRO_XACT_STATE_CREATED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.WaveState.Preparing\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MACRO_XACT_STATE_PREPARING']/*\"/>\t\n            <unmanaged>MACRO_XACT_STATE_PREPARING</unmanaged>\t\n            <unmanaged-short>MACRO_XACT_STATE_PREPARING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.WaveState.Prepared\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MACRO_XACT_STATE_PREPARED']/*\"/>\t\n            <unmanaged>MACRO_XACT_STATE_PREPARED</unmanaged>\t\n            <unmanaged-short>MACRO_XACT_STATE_PREPARED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.WaveState.Playing\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MACRO_XACT_STATE_PLAYING']/*\"/>\t\n            <unmanaged>MACRO_XACT_STATE_PLAYING</unmanaged>\t\n            <unmanaged-short>MACRO_XACT_STATE_PLAYING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.WaveState.Stopping\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MACRO_XACT_STATE_STOPPING']/*\"/>\t\n            <unmanaged>MACRO_XACT_STATE_STOPPING</unmanaged>\t\n            <unmanaged-short>MACRO_XACT_STATE_STOPPING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.WaveState.Stopped\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MACRO_XACT_STATE_STOPPED']/*\"/>\t\n            <unmanaged>MACRO_XACT_STATE_STOPPED</unmanaged>\t\n            <unmanaged-short>MACRO_XACT_STATE_STOPPED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.WaveState.Paused\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MACRO_XACT_STATE_PAUSED']/*\"/>\t\n            <unmanaged>MACRO_XACT_STATE_PAUSED</unmanaged>\t\n            <unmanaged-short>MACRO_XACT_STATE_PAUSED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.WaveState.InUse\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MACRO_XACT_STATE_INUSE']/*\"/>\t\n            <unmanaged>MACRO_XACT_STATE_INUSE</unmanaged>\t\n            <unmanaged-short>MACRO_XACT_STATE_INUSE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.WaveState.PrepareFailed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='MACRO_XACT_STATE_PREPAREFAILED']/*\"/>\t\n            <unmanaged>MACRO_XACT_STATE_PREPAREFAILED</unmanaged>\t\n            <unmanaged-short>MACRO_XACT_STATE_PREPAREFAILED</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XACT3.XACT3\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.XACT3.XACT3']/*\"/>\t\n        </member>\n        <member name=\"T:SharpDX.XACT3.SoundBank\">\n            <summary>\t\n            <p>Plays a cue. Optionally, returns an instance handle to the cue object for further control.</p><p>[Content-driven]</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXACT3SoundBank']/*\"/>\t\n            <msdn-id>ee418422</msdn-id>\t\n            <unmanaged>IXACT3SoundBank</unmanaged>\t\n            <unmanaged-short>IXACT3SoundBank</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XACT3.SoundBank.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.XACT3.SoundBank\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.XACT3.SoundBank.op_Explicit(System.IntPtr)~SharpDX.XACT3.SoundBank\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.XACT3.SoundBank\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.XACT3.SoundBank.GetCueIndex(System.String)\">\n            <summary>\t\n            <p>Retrieves a sound cue index based on a string that represents the friendly name of the cue.</p><p>[Content-driven]</p>\t\n            </summary>\t\n            <param name=\"friendlyName\"><dd>[in]  <c>null</c>-terminated string that represents the friendly name of a cue in the sound bank. <table><tr><th>Note </th></tr><tr><td>This string is case sensitive.</td></tr></table> </dd></param>\t\n            <returns><p>Returns the cue index that is associated with <strong>szFriendlyName</strong>. If the cue index is not found, XACTINDEX_INVALID is returned.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXACT3SoundBank::GetCueIndex']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.ixact3soundbank.ixact3soundbank.getcueindex</msdn-id>\t\n            <unmanaged>unsigned short IXACT3SoundBank::GetCueIndex([In] const char* szFriendlyName)</unmanaged>\t\n            <unmanaged-short>IXACT3SoundBank::GetCueIndex</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XACT3.SoundBank.GetCueCount(System.Int16@)\">\n            <summary>\t\n            <p>Retrieves the number of cues in the sound bank.</p><p>[Content-driven]</p>\t\n            </summary>\t\n            <param name=\"numCuesRef\"><dd> Pointer to an XACTINDEX that returns the number of cues. </dd></param>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful. If unsuccessful, an error code is returned.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXACT3SoundBank::GetNumCues']/*\"/>\t\n            <msdn-id>ee418420</msdn-id>\t\n            <unmanaged>HRESULT IXACT3SoundBank::GetNumCues([Out] unsigned short* pnNumCues)</unmanaged>\t\n            <unmanaged-short>IXACT3SoundBank::GetNumCues</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XACT3.SoundBank.GetCueProperties(System.Int16)\">\n            <summary>\t\n            <p>Retrieves the properties of a cue.</p><p>[Content-driven]</p>\t\n            </summary>\t\n            <param name=\"cueIndex\"><dd> Index of the cue to query. </dd></param>\t\n            <returns><dd> Pointer to an <see cref=\"T:SharpDX.XACT3.CueProperties\"/> structure that receives the cue properties. </dd></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXACT3SoundBank::GetCueProperties']/*\"/>\t\n            <msdn-id>ee418419</msdn-id>\t\n            <unmanaged>HRESULT IXACT3SoundBank::GetCueProperties([In] unsigned short nCueIndex,[Out] XACT_CUE_PROPERTIES* pProperties)</unmanaged>\t\n            <unmanaged-short>IXACT3SoundBank::GetCueProperties</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XACT3.SoundBank.Prepare(System.Int16,System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Prepares a cue instance for playback.</p><p>[Content-driven]</p>\t\n            </summary>\t\n            <param name=\"cueIndex\"><dd>[in]  Value that indicates the index of the cue to be prepared. </dd></param>\t\n            <param name=\"flags\"><dd>[in]  Unused. Should be 0. </dd></param>\t\n            <param name=\"timeOffset\"><dd>[in]  Time offset into the cue to start from, in milliseconds. </dd></param>\t\n            <returns><dd>[out]  Pointer to the <see cref=\"T:SharpDX.XACT3.Cue\"/> object that is returned. </dd></returns>\t\n            <remarks>\t\n            <p>This method returns a valid cue instance that is ready to be played. All allocations and stream priming, if necessary, are performed by this method.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXACT3SoundBank::Prepare']/*\"/>\t\n            <msdn-id>ee418423</msdn-id>\t\n            <unmanaged>HRESULT IXACT3SoundBank::Prepare([In] unsigned short nCueIndex,[In] unsigned int dwFlags,[In] int timeOffset,[Out] IXACT3Cue** ppCue)</unmanaged>\t\n            <unmanaged-short>IXACT3SoundBank::Prepare</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XACT3.SoundBank.Play(System.Int16,System.Int32,System.Int32)\">\n            <summary>\t\n            <p>Plays a cue. Optionally, returns an instance handle to the cue object for further control.</p><p>[Content-driven]</p>\t\n            </summary>\t\n            <param name=\"cueIndex\"><dd>[in]  Value that indicates the index of the cue to be played. </dd></param>\t\n            <param name=\"flags\"><dd>[in]  Flags to pass to <see cref=\"M:SharpDX.XACT3.SoundBank.Prepare(System.Int16,System.Int32,System.Int32)\"/> for cue playback. </dd></param>\t\n            <param name=\"timeOffset\"><dd>[in]  Time offset into the cue to start from, in milliseconds. </dd></param>\t\n            <returns><dd>[out, optional]  Pointer to the <see cref=\"T:SharpDX.XACT3.Cue\"/> object that is returned. If <c>null</c> is specified, no cue instance object is returned. </dd></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXACT3SoundBank::Play']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.ixact3soundbank.ixact3soundbank.play</msdn-id>\t\n            <unmanaged>HRESULT IXACT3SoundBank::Play([In] unsigned short nCueIndex,[In] unsigned int dwFlags,[In] int timeOffset,[Out, Optional] IXACT3Cue** ppCue)</unmanaged>\t\n            <unmanaged-short>IXACT3SoundBank::Play</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XACT3.SoundBank.Stop(System.Int16,SharpDX.XACT3.StopFlags)\">\n            <summary>\t\n            <p>Stops a cue.</p><p>[Content-driven]</p>\t\n            </summary>\t\n            <param name=\"cueIndex\"><dd>[in]  Index of the cue to be stopped. <table><tr><th>Note </th></tr><tr><td>All instances of the cue that are specified by <strong>nCueIndex</strong> are stopped.</td></tr></table> </dd></param>\t\n            <param name=\"flags\"><dd>[in]  Flags affecting how the cue will be stopped. By default, the sound completes the release phase that the content has set up. <table><tr><th>Value</th><th>Description</th></tr><tr><td>XACT_FLAG_SOUNDBANK_STOP_IMMEDIATE</td><td>Cue stops immediately. It ignores any release phase or transition that is specified in the content.?</td></tr></table> </dd></param>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful. Otherwise, an error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXACT3SoundBank::Stop']/*\"/>\t\n            <msdn-id>ee418424</msdn-id>\t\n            <unmanaged>HRESULT IXACT3SoundBank::Stop([In] unsigned short nCueIndex,[In] XACT_STOP_FLAGS dwFlags)</unmanaged>\t\n            <unmanaged-short>IXACT3SoundBank::Stop</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XACT3.SoundBank.Destroy\">\n            <summary>\t\n            <p>Destroys the sound bank.</p><p>[Content-driven]</p>\t\n            </summary>\t\n            <returns>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful, an error code otherwise.</returns>\t\n            <remarks>\t\n            <p> <strong><see cref=\"M:SharpDX.XACT3.SoundBank.Destroy\"/></strong> synchronously destroys all cues that are associated with the sound bank. It stops the playback immediately, and frees resources that were allocated to the sound bank.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXACT3SoundBank::Destroy']/*\"/>\t\n            <msdn-id>ee418417</msdn-id>\t\n            <unmanaged>HRESULT IXACT3SoundBank::Destroy()</unmanaged>\t\n            <unmanaged-short>IXACT3SoundBank::Destroy</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XACT3.SoundBank.GetState(System.Int32@)\">\n            <summary>\t\n            <p>Retrieves the current state of the sound bank.</p><p>[Content-driven]</p>\t\n            </summary>\t\n            <param name=\"stateRef\"><dd>[out]  Flags that indicate the state of the sound bank. The flags are as follows: <table><tr><th>Value</th><th>Description</th></tr><tr><td>XACT_SOUNDBANKSTATE_INUSE</td><td>Indicates that the sound bank is referenced by at least one valid cue instance or other client. For example, the game itself might reference the sound bank.?</td></tr></table> </dd></param>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful. Otherwise, an error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXACT3SoundBank::GetState']/*\"/>\t\n            <msdn-id>ee418421</msdn-id>\t\n            <unmanaged>HRESULT IXACT3SoundBank::GetState([Out] unsigned int* pdwState)</unmanaged>\t\n            <unmanaged-short>IXACT3SoundBank::GetState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XACT3.SoundBank.#ctor(SharpDX.XACT3.AudioEngine,System.IO.Stream)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.XACT3.SoundBank\"/> class from a soundbank stream.\n            </summary>\n            <param name=\"audioEngine\">The engine.</param>\n            <param name=\"stream\">The soundbank stream stream.</param>\n            <unmanaged>HRESULT IXACT3Engine::CreateSoundBank([In] const void* pvBuffer,[In] unsigned int dwSize,[In] unsigned int dwFlags,[In] unsigned int dwAllocAttributes,[Out, Fast] IXACT3SoundBank** ppSoundBank)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.XACT3.SoundBank.Play(System.Int16)\">\n            <summary>\t\n            <p>Plays a cue. Returns an instance handle to the cue object for further control.</p>\n            </summary>\t\n            <param name=\"cueIndex\"><dd>[in]  Value that indicates the index of the cue to be played. </dd></param>\t\n            <returns><dd>[out] <see cref=\"T:SharpDX.XACT3.Cue\"/> struct that is returned. </dd></returns>\n        </member>\n        <member name=\"M:SharpDX.XACT3.SoundBank.Play(System.Int16,System.Int32)\">\n            <summary>\t\n            <p>Plays a cue. Returns an instance handle to the cue object for further control.</p>\n            </summary>\t\n            <param name=\"cueIndex\"><dd>[in]  Value that indicates the index of the cue to be played. </dd></param>\t\n            <param name=\"timeOffset\"><dd>[in]  Time offset into the cue to start from, in milliseconds. </dd></param>\n            <returns><dd>[out] <see cref=\"T:SharpDX.XACT3.Cue\"/> struct that is returned. </dd></returns>\n        </member>\n        <member name=\"M:SharpDX.XACT3.SoundBank.PlayAndRelease(System.Int16,System.Int32)\">\n            <summary>\t\n            <p>Plays a cue. Cue is automatically released when playback finished.</p>\n            </summary>\t\n            <param name=\"cueIndex\"><dd>[in]  Value that indicates the index of the cue to be played. </dd></param>\t\n            <param name=\"timeOffset\"><dd>[in]  Time offset into the cue to start from, in milliseconds. </dd></param>\n        </member>\n        <member name=\"M:SharpDX.XACT3.SoundBank.Prepare(System.Int16)\">\n            <summary>\t\n            <p>Prepares a cue instance for playback.</p>\n            </summary>\t\n            <param name=\"cueIndex\"><dd>[in]  Value that indicates the index of the cue to be played. </dd></param>\t\n            <returns><dd>[out] <see cref=\"T:SharpDX.XACT3.Cue\"/> struct that is returned. </dd></returns>\n        </member>\n        <member name=\"M:SharpDX.XACT3.SoundBank.Prepare(System.Int16,System.Int32)\">\n            <summary>\t\n            <p>Prepares a cue instance for playback.</p>\n            </summary>\t\n            <param name=\"cueIndex\"><dd>[in]  Value that indicates the index of the cue to be played. </dd></param>\t\n            <param name=\"timeOffset\"><dd>[in]  Time offset into the cue to start from, in milliseconds. </dd></param>\n            <returns><dd>[out] <see cref=\"T:SharpDX.XACT3.Cue\"/> struct that is returned. </dd></returns>\n        </member>\n        <member name=\"P:SharpDX.XACT3.SoundBank.CueCount\">\n            <summary>\t\n            <p>Retrieves the number of cues in the sound bank.</p><p>[Content-driven]</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXACT3SoundBank::GetNumCues']/*\"/>\t\n            <msdn-id>ee418420</msdn-id>\t\n            <unmanaged>GetNumCues</unmanaged>\t\n            <unmanaged-short>GetNumCues</unmanaged-short>\t\n            <unmanaged>HRESULT IXACT3SoundBank::GetNumCues([Out] unsigned short* pnNumCues)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.XACT3.SoundBank.AudioEngine\">\n            <summary>\n            Gets or sets the audio engine.\n            </summary>\n            <value>\n            The audio engine.\n            </value>\n        </member>\n        <member name=\"P:SharpDX.XACT3.SoundBank.IsInUse\">\n            <summary>\n            Gets a value indicating whether this instance is referenced by at least one valid cue instance or other client. For example, the game itself might reference the sound bank. \n            </summary>\n            <value>\n              <c>true</c> if this instance is in use; otherwise, <c>false</c>.\n            </value>\n        </member>\n        <member name=\"T:SharpDX.XACT3.Wave\">\n            <summary>\t\n            <p>Sets the volume value for each output of a wave.</p><p>[Code-driven]</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The final output volume of any channel is the matrix coefficient volume multiplied by the value that is specified by <see cref=\"M:SharpDX.XACT3.Wave.SetVolume(System.Single)\"/>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXACT3Wave']/*\"/>\t\n            <msdn-id>ee418438</msdn-id>\t\n            <unmanaged>IXACT3Wave</unmanaged>\t\n            <unmanaged-short>IXACT3Wave</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XACT3.Wave.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.XACT3.Wave\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.XACT3.Wave.op_Explicit(System.IntPtr)~SharpDX.XACT3.Wave\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.XACT3.Wave\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.XACT3.Wave.Destroy\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXACT3Wave::Destroy']/*\"/>\t\n            <unmanaged>HRESULT IXACT3Wave::Destroy()</unmanaged>\t\n            <unmanaged-short>IXACT3Wave::Destroy</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XACT3.Wave.Play\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXACT3Wave::Play']/*\"/>\t\n            <unmanaged>HRESULT IXACT3Wave::Play()</unmanaged>\t\n            <unmanaged-short>IXACT3Wave::Play</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XACT3.Wave.Stop(SharpDX.XACT3.StopFlags)\">\n            <summary>\t\n            <p>Stops the wave.</p><p>[Code-driven]</p>\t\n            </summary>\t\n            <param name=\"flags\"><dd> Flags that affect how the wave is stopped: <table><tr><th>Value</th><th>Description</th></tr><tr><td>XACT_FLAG_STOP_RELEASE</td><td>Plays the wave to completion, then stops. For looping waves, this flag plays the current iteration to completion, then stops (ignoring any subsequent iterations). In either case, any release or tail is played. To stop the wave immediately, use the XACT_FLAG_STOP_IMMEDIATE flag.?</td></tr><tr><td>XACT_FLAG_STOP_IMMEDIATE</td><td>Stops the playback immediately.?</td></tr></table> </dd></param>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful. Otherwise, an error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXACT3Wave::Stop']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.ixact3wave.ixact3wave.stop</msdn-id>\t\n            <unmanaged>HRESULT IXACT3Wave::Stop([In] XACT_STOP_FLAGS dwFlags)</unmanaged>\t\n            <unmanaged-short>IXACT3Wave::Stop</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XACT3.Wave.Pause(SharpDX.Bool)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"pause\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXACT3Wave::Pause']/*\"/>\t\n            <unmanaged>HRESULT IXACT3Wave::Pause([In] BOOL fPause)</unmanaged>\t\n            <unmanaged-short>IXACT3Wave::Pause</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XACT3.Wave.GetState(SharpDX.XACT3.WaveState@)\">\n            <summary>\t\n            <p>Returns the state of the wave object.</p><p>[Code-driven]</p>\t\n            </summary>\t\n            <param name=\"stateRef\"><dd> Pointer to a DWORD that receives the current wave state. <table><tr><th>Value</th><th>Description</th></tr><tr><td>XACT_STATE_CREATED</td><td>Created, but nothing else.?</td></tr><tr><td>XACT_STATE_PREPARING</td><td>In the middle of preparing.?</td></tr><tr><td>XACT_STATE_PREPARED</td><td>Prepared, but not yet played.?</td></tr><tr><td>XACT_STATE_PLAYING</td><td>Playing, but can be paused.?</td></tr><tr><td>XACT_STATE_STOPPING</td><td>Stopping.?</td></tr><tr><td>XACT_STATE_STOPPED</td><td>Stopped.?</td></tr><tr><td>XACT_STATE_PAUSED</td><td>Paused. Can be combined with some of the other state flags.?</td></tr><tr><td>XACT_STATE_INUSE</td><td>Object is in use. Used by wave banks and sound banks.?</td></tr><tr><td>XACT_STATE_PREPAREFAILED</td><td>Object preparation failed.?</td></tr></table> </dd></param>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful. If unsuccessful, an error code is returned.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXACT3Wave::GetState']/*\"/>\t\n            <msdn-id>ee418435</msdn-id>\t\n            <unmanaged>HRESULT IXACT3Wave::GetState([Out] XACT_WAVE_STATE* pdwState)</unmanaged>\t\n            <unmanaged-short>IXACT3Wave::GetState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XACT3.Wave.SetPitch(System.Int16)\">\n            <summary>\t\n            <p>Sets the pitch of a wave.</p><p>[Code-driven]</p>\t\n            </summary>\t\n            <param name=\"pitch\"><dd> XACTPITCH value that is used to set the pitch for playback of this wave. </dd></param>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful. Otherwise, an error code.</p></returns>\t\n            <remarks>\t\n            <p>The value of <em>pitch</em> may be between XACTPITCH_MIN (-1200) and XACTPITCH_MAX (1200), which is approximately one semitone.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXACT3Wave::SetPitch']/*\"/>\t\n            <msdn-id>ee418439</msdn-id>\t\n            <unmanaged>HRESULT IXACT3Wave::SetPitch([In] short pitch)</unmanaged>\t\n            <unmanaged-short>IXACT3Wave::SetPitch</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XACT3.Wave.SetVolume(System.Single)\">\n            <summary>\t\n            <p>Sets the volume of a wave.</p><p>[Code-driven]</p>\t\n            </summary>\t\n            <param name=\"volume\"><dd> XACTVOLUME value that is used to set the volume for playback of this wave. </dd></param>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful. Otherwise, an error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXACT3Wave::SetVolume']/*\"/>\t\n            <msdn-id>ee418440</msdn-id>\t\n            <unmanaged>HRESULT IXACT3Wave::SetVolume([In] float volume)</unmanaged>\t\n            <unmanaged-short>IXACT3Wave::SetVolume</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XACT3.Wave.SetMatrixCoefficients(System.Int32,System.Int32,System.Single[])\">\n            <summary>\t\n            <p>Sets the volume value for each output of a wave.</p><p>[Code-driven]</p>\t\n            </summary>\t\n            <param name=\"srcChannelCount\"><dd> Number of source channels. </dd></param>\t\n            <param name=\"dstChannelCount\"><dd> Number of destination channels. </dd></param>\t\n            <param name=\"matrixCoefficientsRef\"><dd> Matrix coefficient table. This is an array that represents the volume level of each source channel that is present in each destination channel. The source channels are represented by the column index of the table. The destination channels are represented by the row index of the table. The table must have at least <em>uSrcChannelCount</em>?<em>uDstChannelCount</em> elements. </dd></param>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful. Otherwise, an error code.</p></returns>\t\n            <remarks>\t\n            <p>The final output volume of any channel is the matrix coefficient volume multiplied by the value that is specified by <see cref=\"M:SharpDX.XACT3.Wave.SetVolume(System.Single)\"/>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXACT3Wave::SetMatrixCoefficients']/*\"/>\t\n            <msdn-id>ee418438</msdn-id>\t\n            <unmanaged>HRESULT IXACT3Wave::SetMatrixCoefficients([In] unsigned int uSrcChannelCount,[In] unsigned int uDstChannelCount,[In, Buffer] float* pMatrixCoefficients)</unmanaged>\t\n            <unmanaged-short>IXACT3Wave::SetMatrixCoefficients</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XACT3.Wave.GetProperties(SharpDX.XACT3.WaveInstanceProperties@)\">\n            <summary>\t\n            <p>Retrieves the properties of the wave object.</p><p>[Code-driven]</p>\t\n            </summary>\t\n            <param name=\"propertiesRef\"><dd> Pointer to an <see cref=\"T:SharpDX.XACT3.WaveInstanceProperties\"/> structure that is returned. </dd></param>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful. Otherwise, an error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXACT3Wave::GetProperties']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.ixact3wave.ixact3wave.getproperties</msdn-id>\t\n            <unmanaged>HRESULT IXACT3Wave::GetProperties([Out] XACT_WAVE_INSTANCE_PROPERTIES* pProperties)</unmanaged>\t\n            <unmanaged-short>IXACT3Wave::GetProperties</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.XACT3.Wave.State\">\n            <summary>\t\n            <p>Returns the state of the wave object.</p><p>[Code-driven]</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXACT3Wave::GetState']/*\"/>\t\n            <msdn-id>ee418435</msdn-id>\t\n            <unmanaged>GetState</unmanaged>\t\n            <unmanaged-short>GetState</unmanaged-short>\t\n            <unmanaged>HRESULT IXACT3Wave::GetState([Out] XACT_WAVE_STATE* pdwState)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.XACT3.Wave.Pitch\">\n            <summary>\t\n            <p>Sets the pitch of a wave.</p><p>[Code-driven]</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The value of <em>pitch</em> may be between XACTPITCH_MIN (-1200) and XACTPITCH_MAX (1200), which is approximately one semitone.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXACT3Wave::SetPitch']/*\"/>\t\n            <msdn-id>ee418439</msdn-id>\t\n            <unmanaged>SetPitch</unmanaged>\t\n            <unmanaged-short>SetPitch</unmanaged-short>\t\n            <unmanaged>HRESULT IXACT3Wave::SetPitch([In] short pitch)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.XACT3.Wave.Volume\">\n            <summary>\t\n            <p>Sets the volume of a wave.</p><p>[Code-driven]</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXACT3Wave::SetVolume']/*\"/>\t\n            <msdn-id>ee418440</msdn-id>\t\n            <unmanaged>SetVolume</unmanaged>\t\n            <unmanaged-short>SetVolume</unmanaged-short>\t\n            <unmanaged>HRESULT IXACT3Wave::SetVolume([In] float volume)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.XACT3.Wave.Properties\">\n            <summary>\t\n            <p>Retrieves the properties of the wave object.</p><p>[Code-driven]</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXACT3Wave::GetProperties']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.ixact3wave.ixact3wave.getproperties</msdn-id>\t\n            <unmanaged>GetProperties</unmanaged>\t\n            <unmanaged-short>GetProperties</unmanaged-short>\t\n            <unmanaged>HRESULT IXACT3Wave::GetProperties([Out] XACT_WAVE_INSTANCE_PROPERTIES* pProperties)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.XACT3.Wave.AudioEngine\">\n            <summary>\n            Gets or sets the audio engine.\n            </summary>\n            <value>\n            The audio engine.\n            </value>\n        </member>\n        <member name=\"T:SharpDX.XACT3.WaveBank\">\n            <summary>\t\n            <p>This section contains information about the methods used with the <see cref=\"T:SharpDX.XACT3.WaveBank\"/> interface.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXACT3WaveBank']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.ixact3wavebank.ixact3wavebank</msdn-id>\t\n            <unmanaged>IXACT3WaveBank</unmanaged>\t\n            <unmanaged-short>IXACT3WaveBank</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XACT3.WaveBank.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.XACT3.WaveBank\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.XACT3.WaveBank.op_Explicit(System.IntPtr)~SharpDX.XACT3.WaveBank\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.XACT3.WaveBank\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.XACT3.WaveBank.Destroy\">\n            <summary>\t\n            <p>Destroys the wave bank.</p><p>[Content-driven]</p>\t\n            </summary>\t\n            <returns>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful, an error code otherwise.</returns>\t\n            <remarks>\t\n            <p> <strong><see cref=\"M:SharpDX.XACT3.WaveBank.Destroy\"/></strong> synchronously destroys any cues that are using the wavebank. It stops playback immediately, and frees resources that were allocated to the wavebank.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXACT3WaveBank::Destroy']/*\"/>\t\n            <msdn-id>ee418425</msdn-id>\t\n            <unmanaged>HRESULT IXACT3WaveBank::Destroy()</unmanaged>\t\n            <unmanaged-short>IXACT3WaveBank::Destroy</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XACT3.WaveBank.GetWaveCount(System.Int16@)\">\n            <summary>\t\n            <p>Returns the number of wave entries in the wave bank.</p><p>[Code-driven]</p>\t\n            </summary>\t\n            <param name=\"numWavesRef\"><dd> Pointer to an XACTINDEX that returns the number of waves in the wave bank. </dd></param>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful. Otherwise, an error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXACT3WaveBank::GetNumWaves']/*\"/>\t\n            <msdn-id>ee418426</msdn-id>\t\n            <unmanaged>HRESULT IXACT3WaveBank::GetNumWaves([Out] unsigned short* pnNumWaves)</unmanaged>\t\n            <unmanaged-short>IXACT3WaveBank::GetNumWaves</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XACT3.WaveBank.GetWaveIndex(System.String)\">\n            <summary>\t\n            <p>Returns the wave index for the friendly name of a wave in a wave bank.</p><p>[Code-driven]</p>\t\n            </summary>\t\n            <param name=\"friendlyName\"><dd> Friendly name for the wave within the wave bank. </dd></param>\t\n            <returns><p>Wave index for the friendly name of a wave within a wave bank.</p> <p>If the wave bank does not contain the friendly name, or if an entry does not exist for the name that is passed in, the method returns XACTINDEX_INVALID.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXACT3WaveBank::GetWaveIndex']/*\"/>\t\n            <msdn-id>ee418428</msdn-id>\t\n            <unmanaged>unsigned short IXACT3WaveBank::GetWaveIndex([In] const char* szFriendlyName)</unmanaged>\t\n            <unmanaged-short>IXACT3WaveBank::GetWaveIndex</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XACT3.WaveBank.GetWaveProperties(System.Int16,SharpDX.XACT3.WaveProperties@)\">\n            <summary>\t\n            <p>Gets the properties of a specific wave in a wave bank.</p><p>[Code-driven]</p>\t\n            </summary>\t\n            <param name=\"waveIndex\"><dd> Index of the wave for which to get properties. </dd></param>\t\n            <param name=\"wavePropertiesRef\"><dd> Pointer to an <see cref=\"T:SharpDX.XACT3.WaveProperties\"/> structure that is returned. </dd></param>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful. Otherwise, an error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXACT3WaveBank::GetWaveProperties']/*\"/>\t\n            <msdn-id>ee418429</msdn-id>\t\n            <unmanaged>HRESULT IXACT3WaveBank::GetWaveProperties([In] unsigned short nWaveIndex,[Out] XACT_WAVE_PROPERTIES* pWaveProperties)</unmanaged>\t\n            <unmanaged-short>IXACT3WaveBank::GetWaveProperties</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XACT3.WaveBank.Prepare_(System.Int16,SharpDX.XACT3.ContentPreparationFlags,System.Int32,System.Byte)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"waveIndex\">No documentation.</param>\t\n            <param name=\"flags\">No documentation.</param>\t\n            <param name=\"playOffset\">No documentation.</param>\t\n            <param name=\"loopCount\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXACT3WaveBank::Prepare']/*\"/>\t\n            <unmanaged>HRESULT IXACT3WaveBank::Prepare([In] unsigned short nWaveIndex,[In] XACT_CONTENT_PREPARATION_FLAGS dwFlags,[In] unsigned int dwPlayOffset,[In] unsigned char nLoopCount,[Out] IXACT3Wave** ppWave)</unmanaged>\t\n            <unmanaged-short>IXACT3WaveBank::Prepare</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XACT3.WaveBank.Play_(System.Int16,SharpDX.XACT3.ContentPreparationFlags,System.Int32,System.Byte)\">\n            <summary>\t\n            <p>Starts the playback for a wave that is indicated by the wave index.</p><p>[Code-driven]</p>\t\n            </summary>\t\n            <param name=\"waveIndex\"><dd> Index of the wave. </dd></param>\t\n            <param name=\"flags\"><dd> Flags that affect wave preparation: <table><tr><th>Value</th><th>Description</th></tr><tr><td>XACT_FLAG_BACKGROUND_MUSIC</td><td>Marks the waves as background music.Xbox 360 This flag is supported only on the Xbox 360 platform.?</td></tr><tr><td>XACT_FLAG_UNITS_MS</td><td>Indicates that the units that are passed in are measured in milliseconds.?</td></tr><tr><td>XACT_FLAG_UNITS_SAMPLES</td><td>Indicates that the units that are passed in are in samples.?</td></tr></table> </dd></param>\t\n            <param name=\"playOffset\"><dd> Play offset to use as the start of the wave. The offset can be described in milliseconds or in samples. The <em>dwFlags</em> argument determines the offset units. </dd></param>\t\n            <param name=\"loopCount\"><dd> Number of loops for playback. </dd></param>\t\n            <returns><dd> Pointer to an <see cref=\"T:SharpDX.XACT3.Wave\"/> object that is returned. </dd></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXACT3WaveBank::Play']/*\"/>\t\n            <msdn-id>ee418430</msdn-id>\t\n            <unmanaged>HRESULT IXACT3WaveBank::Play([In] unsigned short nWaveIndex,[In] XACT_CONTENT_PREPARATION_FLAGS dwFlags,[In] unsigned int dwPlayOffset,[In] unsigned char nLoopCount,[Out] IXACT3Wave** ppWave)</unmanaged>\t\n            <unmanaged-short>IXACT3WaveBank::Play</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XACT3.WaveBank.Stop(System.Int16,SharpDX.XACT3.StopFlags)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"waveIndex\">No documentation.</param>\t\n            <param name=\"flags\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXACT3WaveBank::Stop']/*\"/>\t\n            <unmanaged>HRESULT IXACT3WaveBank::Stop([In] unsigned short nWaveIndex,[In] XACT_STOP_FLAGS dwFlags)</unmanaged>\t\n            <unmanaged-short>IXACT3WaveBank::Stop</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XACT3.WaveBank.GetState(System.Int32@)\">\n            <summary>\t\n            <p>Retrieves the current state of the wave bank.</p><p>[Content-driven]</p>\t\n            </summary>\t\n            <param name=\"stateRef\"><dd>[out]  Flags that indicate the state of the wave bank. The flags are as follows: <table><tr><th>Value</th><th>Description</th></tr><tr><td>XACT_WAVEBANKSTATE_INUSE</td><td>Indicates that the wave bank is referenced by at least one valid cue instance or other client. For example, the game itself might reference the wave bank.?</td></tr><tr><td>XACT_WAVEBANKSTATE_PREPARED</td><td>Indicates that the wave is prepared for use by a cue instance.?</td></tr></table> </dd></param>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful. Otherwise, an error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXACT3WaveBank::GetState']/*\"/>\t\n            <msdn-id>ee418427</msdn-id>\t\n            <unmanaged>HRESULT IXACT3WaveBank::GetState([Out] unsigned int* pdwState)</unmanaged>\t\n            <unmanaged-short>IXACT3WaveBank::GetState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XACT3.WaveBank.#ctor(SharpDX.XACT3.AudioEngine,System.IO.Stream)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.XACT3.WaveBank\"/> class from a wave bank stream.\n            </summary>\n            <param name=\"audioEngine\">The engine.</param>\n            <param name=\"stream\">The wave bank stream.</param>\n            <unmanaged>HRESULT IXACT3Engine::CreateInMemoryWaveBank([In] const void* pvBuffer,[In] unsigned int dwSize,[In] unsigned int dwFlags,[In] unsigned int dwAllocAttributes,[Out, Fast] IXACT3WaveBank** ppWaveBank)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.XACT3.WaveBank.#ctor(SharpDX.XACT3.AudioEngine,System.String,System.Int32,System.Int16)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.XACT3.WaveBank\"/> class from a file for async reading.\n            </summary>\n            <param name=\"audioEngine\">The engine.</param>\n            <param name=\"fileName\">Name of the file to load the wavebank from.</param>\n            <param name=\"offset\">The offset into the stream.</param>\n            <param name=\"packetSize\">Packet size used to load the stream.</param>\n        </member>\n        <member name=\"M:SharpDX.XACT3.WaveBank.Prepare(System.Int16,SharpDX.XACT3.ContentPreparationFlags,System.Int32,System.Byte)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"waveIndex\">No documentation.</param>\t\n            <param name=\"flags\">No documentation.</param>\t\n            <param name=\"playOffset\">No documentation.</param>\t\n            <param name=\"loopCount\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXACT3WaveBank::Prepare']/*\"/>\t\n            <unmanaged>HRESULT IXACT3WaveBank::Prepare([In] unsigned short nWaveIndex,[In] XACT_CONTENT_PREPARATION_FLAGS dwFlags,[In] unsigned int dwPlayOffset,[In] unsigned char nLoopCount,[Out] IXACT3Wave** ppWave)</unmanaged>\t\n        </member>\n        <member name=\"M:SharpDX.XACT3.WaveBank.Play(System.Int16,SharpDX.XACT3.ContentPreparationFlags,System.Int32,System.Byte)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"waveIndex\">No documentation.</param>\t\n            <param name=\"flags\">No documentation.</param>\t\n            <param name=\"playOffset\">No documentation.</param>\t\n            <param name=\"loopCount\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXACT3WaveBank::Play']/*\"/>\t\n            <unmanaged>HRESULT IXACT3WaveBank::Play([In] unsigned short nWaveIndex,[In] XACT_CONTENT_PREPARATION_FLAGS dwFlags,[In] unsigned int dwPlayOffset,[In] unsigned char nLoopCount,[Out] IXACT3Wave** ppWave)</unmanaged>\t\n        </member>\n        <member name=\"P:SharpDX.XACT3.WaveBank.WaveCount\">\n            <summary>\t\n            <p>Returns the number of wave entries in the wave bank.</p><p>[Code-driven]</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXACT3WaveBank::GetNumWaves']/*\"/>\t\n            <msdn-id>ee418426</msdn-id>\t\n            <unmanaged>GetNumWaves</unmanaged>\t\n            <unmanaged-short>GetNumWaves</unmanaged-short>\t\n            <unmanaged>HRESULT IXACT3WaveBank::GetNumWaves([Out] unsigned short* pnNumWaves)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.XACT3.WaveBank.State\">\n            <summary>\t\n            <p>Retrieves the current state of the wave bank.</p><p>[Content-driven]</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXACT3WaveBank::GetState']/*\"/>\t\n            <msdn-id>ee418427</msdn-id>\t\n            <unmanaged>GetState</unmanaged>\t\n            <unmanaged-short>GetState</unmanaged-short>\t\n            <unmanaged>HRESULT IXACT3WaveBank::GetState([Out] unsigned int* pdwState)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.XACT3.WaveBank.AudioEngine\">\n            <summary>\n            Gets or sets the audio engine.\n            </summary>\n            <value>\n            The audio engine.\n            </value>\n        </member>\n        <member name=\"T:SharpDX.XACT3.CueInstanceProperties\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_CUE_INSTANCE_PROPERTIES']/*\"/>\t\n            <unmanaged>XACT_CUE_INSTANCE_PROPERTIES</unmanaged>\t\n            <unmanaged-short>XACT_CUE_INSTANCE_PROPERTIES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.CueInstanceProperties.AllocAttributes\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_CUE_INSTANCE_PROPERTIES::allocAttributes']/*\"/>\t\n            <unmanaged>unsigned int allocAttributes</unmanaged>\t\n            <unmanaged-short>unsigned int allocAttributes</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.CueInstanceProperties.CueProperties\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_CUE_INSTANCE_PROPERTIES::cueProperties']/*\"/>\t\n            <unmanaged>XACT_CUE_PROPERTIES cueProperties</unmanaged>\t\n            <unmanaged-short>XACT_CUE_PROPERTIES cueProperties</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.CueInstanceProperties.ActiveVariationProperties\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_CUE_INSTANCE_PROPERTIES::activeVariationProperties']/*\"/>\t\n            <unmanaged>XACT_SOUND_VARIATION_PROPERTIES activeVariationProperties</unmanaged>\t\n            <unmanaged-short>XACT_SOUND_VARIATION_PROPERTIES activeVariationProperties</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XACT3.CueProperties\">\n            <summary>\t\n            <p>Reports cue properties back to the client.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure returns the non-instance specific cue properties for a cue. That is, it returns the properties shared across all instances of a cue.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_CUE_PROPERTIES']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.xact_cue_properties</msdn-id>\t\n            <unmanaged>XACT_CUE_PROPERTIES</unmanaged>\t\n            <unmanaged-short>XACT_CUE_PROPERTIES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.CueProperties.FriendlyName\">\n            <summary>\t\n            <dd> Friendly name of the cue. If the sound bank does not contain the friendly names, an empty string is returned. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_CUE_PROPERTIES::friendlyName']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.xact_cue_properties</msdn-id>\t\n            <unmanaged>char friendlyName[255]</unmanaged>\t\n            <unmanaged-short>char friendlyName</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.CueProperties.IsInteractive\">\n            <summary>\t\n            <dd> TRUE if the cue is an interactive audio cue and <see cref=\"F:SharpDX.Result.False\"/> otherwise. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_CUE_PROPERTIES::interactive']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.xact_cue_properties</msdn-id>\t\n            <unmanaged>BOOL interactive</unmanaged>\t\n            <unmanaged-short>BOOL interactive</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.CueProperties.VariableIndex\">\n            <summary>\t\n            <dd> For interactive audio cues, the index of the variable to control the cue. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_CUE_PROPERTIES::iaVariableIndex']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.xact_cue_properties</msdn-id>\t\n            <unmanaged>unsigned short iaVariableIndex</unmanaged>\t\n            <unmanaged-short>unsigned short iaVariableIndex</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.CueProperties.VariationCount\">\n            <summary>\t\n            <dd> Number of sound variations for this cue. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_CUE_PROPERTIES::numVariations']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.xact_cue_properties</msdn-id>\t\n            <unmanaged>unsigned short numVariations</unmanaged>\t\n            <unmanaged-short>unsigned short numVariations</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.CueProperties.MaxInstances\">\n            <summary>\t\n            <dd> Maximum number of instances that are allowed for this cue. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_CUE_PROPERTIES::maxInstances']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.xact_cue_properties</msdn-id>\t\n            <unmanaged>unsigned char maxInstances</unmanaged>\t\n            <unmanaged-short>unsigned char maxInstances</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.CueProperties.CurrentInstances\">\n            <summary>\t\n            <dd> Number of currently active instances of this cue. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_CUE_PROPERTIES::currentInstances']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.xact_cue_properties</msdn-id>\t\n            <unmanaged>unsigned char currentInstances</unmanaged>\t\n            <unmanaged-short>unsigned char currentInstances</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XACT3.FileIoCallbacks\">\n            <summary>\t\n            <p>File I/O Callbacks</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_FILEIO_CALLBACKS']/*\"/>\t\n            <msdn-id>ee419079</msdn-id>\t\n            <unmanaged>XACT_FILEIO_CALLBACKS</unmanaged>\t\n            <unmanaged-short>XACT_FILEIO_CALLBACKS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.FileIoCallbacks.ReadFileCallback\">\n            <summary>\t\n            <dd> Pointer to the client (title) implementation of the XACT_READFILE_CALLBACK callback function. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_FILEIO_CALLBACKS::readFileCallback']/*\"/>\t\n            <msdn-id>ee419079</msdn-id>\t\n            <unmanaged>__function__stdcall* readFileCallback</unmanaged>\t\n            <unmanaged-short>__function__stdcall readFileCallback</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.FileIoCallbacks.GetOverlappedResultCallback\">\n            <summary>\t\n            <dd> Pointer to the client (title) implementation of the XACT_GETOVERLAPPEDRESULT_CALLBACK callback function. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_FILEIO_CALLBACKS::getOverlappedResultCallback']/*\"/>\t\n            <msdn-id>ee419079</msdn-id>\t\n            <unmanaged>__function__stdcall* getOverlappedResultCallback</unmanaged>\t\n            <unmanaged-short>__function__stdcall getOverlappedResultCallback</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XACT3.RawNotificationCue\">\n            <summary>\t\n            <p>Notification structure for all XACT cue notifications.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_NOTIFICATION_CUE']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.xact_notification_cue</msdn-id>\t\n            <unmanaged>XACT_NOTIFICATION_CUE</unmanaged>\t\n            <unmanaged-short>XACT_NOTIFICATION_CUE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.RawNotificationCue.CueIndex\">\n            <summary>\t\n            <dd> Cue index. XACTINDEX_INVALID signifies an invalid cue index. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_NOTIFICATION_CUE::cueIndex']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.xact_notification_cue</msdn-id>\t\n            <unmanaged>unsigned short cueIndex</unmanaged>\t\n            <unmanaged-short>unsigned short cueIndex</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.RawNotificationCue.SoundBankPointer\">\n            <summary>\t\n            <dd> Pointer to the <see cref=\"T:SharpDX.XACT3.SoundBank\"/> instance. This reference is invalid when the notification type is XACTNOTIFICATIONTYPE_CUEDESTROYED. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_NOTIFICATION_CUE::pSoundBank']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.xact_notification_cue</msdn-id>\t\n            <unmanaged>IXACT3SoundBank* pSoundBank</unmanaged>\t\n            <unmanaged-short>IXACT3SoundBank pSoundBank</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.RawNotificationCue.CuePointer\">\n            <summary>\t\n            <dd> Pointer to the <see cref=\"T:SharpDX.XACT3.Cue\"/> instance. This reference is invalid when the notification type is XACTNOTIFICATIONTYPE_CUEDESTROYED. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_NOTIFICATION_CUE::pCue']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.xact_notification_cue</msdn-id>\t\n            <unmanaged>IXACT3Cue* pCue</unmanaged>\t\n            <unmanaged-short>IXACT3Cue pCue</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XACT3.RawNotificationDescription\">\n            <summary>\t\n            <p>Provides descriptions for registering, unregistering, and flushing notifications.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_NOTIFICATION_DESCRIPTION']/*\"/>\t\n            <msdn-id>ee419084</msdn-id>\t\n            <unmanaged>XACT_NOTIFICATION_DESCRIPTION</unmanaged>\t\n            <unmanaged-short>XACT_NOTIFICATION_DESCRIPTION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.RawNotificationDescription.Type\">\n            <summary>\t\n            <dd> Notification type. Can be one of the following values: <table> <tr><th>Value\t\n            </th><th>Supported Fields\t\n            </th></tr> <tr><td>XACTNOTIFICATIONTYPE_CUEPREPARED\t\n            </td><td>None, sound bank, sound bank and cue index, cue instance\t\n            </td></tr> <tr><td>XACTNOTIFICATIONTYPE_CUEPLAY\t\n            </td><td>None, sound bank, sound bank and cue index, cue instance\t\n            </td></tr> <tr><td>XACTNOTIFICATIONTYPE_CUESTOP\t\n            </td><td>None, sound bank, sound bank and cue index, cue instance\t\n            </td></tr> <tr><td>XACTNOTIFICATIONTYPE_CUEDESTROYED\t\n            </td><td>None, sound bank, sound bank and cue index, cue instance\t\n            </td></tr> <tr><td>XACTNOTIFICATIONTYPE_MARKER\t\n            </td><td>None, sound bank, sound bank and cue index, cue instance\t\n            </td></tr> <tr><td>XACTNOTIFICATIONTYPE_SOUNDBANKDESTROYED\t\n            </td><td>None, sound bank\t\n            </td></tr> <tr><td>XACTNOTIFICATIONTYPE_WAVEBANKDESTROYED\t\n            </td><td>None, wave bank\t\n            </td></tr> <tr><td>XACTNOTIFICATIONTYPE_LOCALVARIABLECHANGED\t\n            </td><td>None, sound bank, sound bank and cue index, cue instance\t\n            </td></tr> <tr><td>XACTNOTIFICATIONTYPE_GLOBALVARIABLECHANGED\t\n            </td><td>None\t\n            </td></tr> <tr><td>XACTNOTIFICATIONTYPE_GUICONNECTED\t\n            </td><td>None\t\n            </td></tr> <tr><td>XACTNOTIFICATIONTYPE_GUIDISCONNECTED\t\n            </td><td>None\t\n            </td></tr> <tr><td>XACTNOTIFICATIONTYPE_WAVEPREPARED\t\n            </td><td>None, wave bank and wave index, wave instance\t\n            </td></tr> <tr><td>XACTNOTIFICATIONTYPE_WAVEPLAY\t\n            </td><td>None, sound bank, sound bank and cue index, cue instance, wave bank\t\n            </td></tr> <tr><td>XACTNOTIFICATIONTYPE_WAVESTOP\t\n            </td><td>None, sound bank, sound bank and cue index, cue instance, wave bank\t\n            </td></tr> <tr><td>XACTNOTIFICATIONTYPE_WAVELOOPED\t\n            </td><td>None, sound bank, sound bank and cue index, cue instance, wave bank, wave instance\t\n            </td></tr> <tr><td>XACTNOTIFICATIONTYPE_WAVEDESTROYED\t\n            </td><td>None, wave bank and wave index, wave instance\t\n            </td></tr> <tr><td>XACTNOTIFICATIONTYPE_WAVEBANKPREPARED\t\n            </td><td>None, wave bank\t\n            </td></tr> <tr><td>XACTNOTIFICATIONTYPE_WAVEBANKSTREAMING_INVALIDCONTENT\t\n            </td><td>None, wave bank\t\n            </td></tr> </table> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_NOTIFICATION_DESCRIPTION::type']/*\"/>\t\n            <msdn-id>ee419084</msdn-id>\t\n            <unmanaged>XACT_NOTIFICATION_TYPE type</unmanaged>\t\n            <unmanaged-short>XACT_NOTIFICATION_TYPE type</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.RawNotificationDescription.Flags\">\n            <summary>\t\n            <dd> Flag that describes the notification behavior. Can be 0 or the following: <table><tr><th>Value</th><th>Description</th></tr><tr><td>XACT_FLAG_NOTIFICATION_PERSIST</td><td>Sets the notification to persist. If this flag is not set, the user receives no more than one notification of the type registered.?</td></tr></table> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_NOTIFICATION_DESCRIPTION::flags']/*\"/>\t\n            <msdn-id>ee419084</msdn-id>\t\n            <unmanaged>unsigned char flags</unmanaged>\t\n            <unmanaged-short>unsigned char flags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.RawNotificationDescription.SoundBankPointer\">\n            <summary>\t\n            <dd> Pointer to the <see cref=\"T:SharpDX.XACT3.SoundBank\"/> instance. If this entry is set to <c>null</c>, the notification applies to all sound banks. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_NOTIFICATION_DESCRIPTION::pSoundBank']/*\"/>\t\n            <msdn-id>ee419084</msdn-id>\t\n            <unmanaged>IXACT3SoundBank* pSoundBank</unmanaged>\t\n            <unmanaged-short>IXACT3SoundBank pSoundBank</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.RawNotificationDescription.WaveBankPointer\">\n            <summary>\t\n            <dd> Pointer to the <see cref=\"T:SharpDX.XACT3.WaveBank\"/> instance (optional). This entry can be <c>null</c>, if no wave bank applies. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_NOTIFICATION_DESCRIPTION::pWaveBank']/*\"/>\t\n            <msdn-id>ee419084</msdn-id>\t\n            <unmanaged>IXACT3WaveBank* pWaveBank</unmanaged>\t\n            <unmanaged-short>IXACT3WaveBank pWaveBank</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.RawNotificationDescription.CuePointer\">\n            <summary>\t\n            <dd> Pointer to the <see cref=\"T:SharpDX.XACT3.Cue\"/> instance (optional). This entry can be <c>null</c>, if no cue applies. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_NOTIFICATION_DESCRIPTION::pCue']/*\"/>\t\n            <msdn-id>ee419084</msdn-id>\t\n            <unmanaged>IXACT3Cue* pCue</unmanaged>\t\n            <unmanaged-short>IXACT3Cue pCue</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.RawNotificationDescription.WavePointer\">\n            <summary>\t\n            <dd> Pointer to the <see cref=\"T:SharpDX.XACT3.Wave\"/> instance (optional). The entry can be <c>null</c>, if no wave applies. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_NOTIFICATION_DESCRIPTION::pWave']/*\"/>\t\n            <msdn-id>ee419084</msdn-id>\t\n            <unmanaged>IXACT3Wave* pWave</unmanaged>\t\n            <unmanaged-short>IXACT3Wave pWave</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.RawNotificationDescription.CueIndex\">\n            <summary>\t\n            <dd> Cue index. If <strong>pSoundBank</strong> is <c>null</c>, this entry should contain the value XACTINDEX_INVALID. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_NOTIFICATION_DESCRIPTION::cueIndex']/*\"/>\t\n            <msdn-id>ee419084</msdn-id>\t\n            <unmanaged>unsigned short cueIndex</unmanaged>\t\n            <unmanaged-short>unsigned short cueIndex</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.RawNotificationDescription.WaveIndex\">\n            <summary>\t\n            <dd> Wave index.  </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_NOTIFICATION_DESCRIPTION::waveIndex']/*\"/>\t\n            <msdn-id>ee419084</msdn-id>\t\n            <unmanaged>unsigned short waveIndex</unmanaged>\t\n            <unmanaged-short>unsigned short waveIndex</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.RawNotificationDescription.ContextPointer\">\n            <summary>\t\n            <dd> User context (optional). The entry can be <c>null</c>, if no user context applies. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_NOTIFICATION_DESCRIPTION::pvContext']/*\"/>\t\n            <msdn-id>ee419084</msdn-id>\t\n            <unmanaged>void* pvContext</unmanaged>\t\n            <unmanaged-short>void pvContext</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XACT3.RawNotificationGui\">\n            <summary>\t\n            <p>Notification structure for all GUI notifications.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_NOTIFICATION_GUI']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.xact_notification_gui</msdn-id>\t\n            <unmanaged>XACT_NOTIFICATION_GUI</unmanaged>\t\n            <unmanaged-short>XACT_NOTIFICATION_GUI</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.RawNotificationGui.Reserved\">\n            <summary>\t\n            <dd> Reserved for future use. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_NOTIFICATION_GUI::reserved']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.xact_notification_gui</msdn-id>\t\n            <unmanaged>unsigned int reserved</unmanaged>\t\n            <unmanaged-short>unsigned int reserved</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XACT3.RawNotificationMarker\">\n            <summary>\t\n            <p>Notification structure for all marker notifications.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_NOTIFICATION_MARKER']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.xact_notification_marker</msdn-id>\t\n            <unmanaged>XACT_NOTIFICATION_MARKER</unmanaged>\t\n            <unmanaged-short>XACT_NOTIFICATION_MARKER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.RawNotificationMarker.CueIndex\">\n            <summary>\t\n            <dd> Cue index.  XACTINDEX_INVALID signifies an invalid cue index. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_NOTIFICATION_MARKER::cueIndex']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.xact_notification_marker</msdn-id>\t\n            <unmanaged>unsigned short cueIndex</unmanaged>\t\n            <unmanaged-short>unsigned short cueIndex</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.RawNotificationMarker.SoundBankPointer\">\n            <summary>\t\n            <dd> Pointer to the <see cref=\"T:SharpDX.XACT3.SoundBank\"/> instance. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_NOTIFICATION_MARKER::pSoundBank']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.xact_notification_marker</msdn-id>\t\n            <unmanaged>IXACT3SoundBank* pSoundBank</unmanaged>\t\n            <unmanaged-short>IXACT3SoundBank pSoundBank</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.RawNotificationMarker.CuePointer\">\n            <summary>\t\n            <dd> Pointer to the <see cref=\"T:SharpDX.XACT3.Cue\"/> instance. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_NOTIFICATION_MARKER::pCue']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.xact_notification_marker</msdn-id>\t\n            <unmanaged>IXACT3Cue* pCue</unmanaged>\t\n            <unmanaged-short>IXACT3Cue pCue</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.RawNotificationMarker.Marker\">\n            <summary>\t\n            <dd> The ID of the marker. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_NOTIFICATION_MARKER::marker']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.xact_notification_marker</msdn-id>\t\n            <unmanaged>unsigned int marker</unmanaged>\t\n            <unmanaged-short>unsigned int marker</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XACT3.RawNotificationSoundbank\">\n            <summary>\t\n            <p>Notification structure for all sound bank notifications.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_NOTIFICATION_SOUNDBANK']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.xact_notification_soundbank</msdn-id>\t\n            <unmanaged>XACT_NOTIFICATION_SOUNDBANK</unmanaged>\t\n            <unmanaged-short>XACT_NOTIFICATION_SOUNDBANK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.RawNotificationSoundbank.SoundBankPointer\">\n            <summary>\t\n            <dd> Pointer to the <see cref=\"T:SharpDX.XACT3.SoundBank\"/> instance. This reference is invalid when the notification type is XACTNOTIFICATIONTYPE_SOUNDBANKDESTROYED. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_NOTIFICATION_SOUNDBANK::pSoundBank']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.xact_notification_soundbank</msdn-id>\t\n            <unmanaged>IXACT3SoundBank* pSoundBank</unmanaged>\t\n            <unmanaged-short>IXACT3SoundBank pSoundBank</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XACT3.RawNotificationVariable\">\n            <summary>\t\n            <p>Notification structure for all variable notifications.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_NOTIFICATION_VARIABLE']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.xact_notification_variable</msdn-id>\t\n            <unmanaged>XACT_NOTIFICATION_VARIABLE</unmanaged>\t\n            <unmanaged-short>XACT_NOTIFICATION_VARIABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.RawNotificationVariable.CueIndex\">\n            <summary>\t\n            <dd> Cue index. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_NOTIFICATION_VARIABLE::cueIndex']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.xact_notification_variable</msdn-id>\t\n            <unmanaged>unsigned short cueIndex</unmanaged>\t\n            <unmanaged-short>unsigned short cueIndex</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.RawNotificationVariable.SoundBankPointer\">\n            <summary>\t\n            <dd> Soundbank instance. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_NOTIFICATION_VARIABLE::pSoundBank']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.xact_notification_variable</msdn-id>\t\n            <unmanaged>IXACT3SoundBank* pSoundBank</unmanaged>\t\n            <unmanaged-short>IXACT3SoundBank pSoundBank</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.RawNotificationVariable.CuePointer\">\n            <summary>\t\n            <dd> Cue instance. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_NOTIFICATION_VARIABLE::pCue']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.xact_notification_variable</msdn-id>\t\n            <unmanaged>IXACT3Cue* pCue</unmanaged>\t\n            <unmanaged-short>IXACT3Cue pCue</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.RawNotificationVariable.VariableIndex\">\n            <summary>\t\n            <dd> Variable index. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_NOTIFICATION_VARIABLE::variableIndex']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.xact_notification_variable</msdn-id>\t\n            <unmanaged>unsigned short variableIndex</unmanaged>\t\n            <unmanaged-short>unsigned short variableIndex</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.RawNotificationVariable.VariableValue\">\n            <summary>\t\n            <dd> Variable value. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_NOTIFICATION_VARIABLE::variableValue']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.xact_notification_variable</msdn-id>\t\n            <unmanaged>float variableValue</unmanaged>\t\n            <unmanaged-short>float variableValue</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.RawNotificationVariable.Local\">\n            <summary>\t\n            <dd> TRUE if a local variable. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_NOTIFICATION_VARIABLE::local']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.xact_notification_variable</msdn-id>\t\n            <unmanaged>BOOL local</unmanaged>\t\n            <unmanaged-short>BOOL local</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XACT3.RawNotificationWave\">\n            <summary>\t\n            <p>Notification structure for all wave notifications.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_NOTIFICATION_WAVE']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.xact_notification_wave</msdn-id>\t\n            <unmanaged>XACT_NOTIFICATION_WAVE</unmanaged>\t\n            <unmanaged-short>XACT_NOTIFICATION_WAVE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.RawNotificationWave.WaveBankPointer\">\n            <summary>\t\n            <dd> Pointer to the <see cref=\"T:SharpDX.XACT3.WaveBank\"/> instance. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_NOTIFICATION_WAVE::pWaveBank']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.xact_notification_wave</msdn-id>\t\n            <unmanaged>IXACT3WaveBank* pWaveBank</unmanaged>\t\n            <unmanaged-short>IXACT3WaveBank pWaveBank</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.RawNotificationWave.WaveIndex\">\n            <summary>\t\n            <dd> Wave index. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_NOTIFICATION_WAVE::waveIndex']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.xact_notification_wave</msdn-id>\t\n            <unmanaged>unsigned short waveIndex</unmanaged>\t\n            <unmanaged-short>unsigned short waveIndex</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.RawNotificationWave.CueIndex\">\n            <summary>\t\n            <dd> Cue index. XACTINDEX_INVALID signifies an invalid cue index. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_NOTIFICATION_WAVE::cueIndex']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.xact_notification_wave</msdn-id>\t\n            <unmanaged>unsigned short cueIndex</unmanaged>\t\n            <unmanaged-short>unsigned short cueIndex</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.RawNotificationWave.SoundBankPointer\">\n            <summary>\t\n            <dd> Pointer to the <see cref=\"T:SharpDX.XACT3.SoundBank\"/> instance. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_NOTIFICATION_WAVE::pSoundBank']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.xact_notification_wave</msdn-id>\t\n            <unmanaged>IXACT3SoundBank* pSoundBank</unmanaged>\t\n            <unmanaged-short>IXACT3SoundBank pSoundBank</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.RawNotificationWave.CuePointer\">\n            <summary>\t\n            <dd> Pointer to the <see cref=\"T:SharpDX.XACT3.Cue\"/> instance. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_NOTIFICATION_WAVE::pCue']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.xact_notification_wave</msdn-id>\t\n            <unmanaged>IXACT3Cue* pCue</unmanaged>\t\n            <unmanaged-short>IXACT3Cue pCue</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.RawNotificationWave.WavePointer\">\n            <summary>\t\n            <dd> Pointer to the <see cref=\"T:SharpDX.XACT3.Wave\"/> instance. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_NOTIFICATION_WAVE::pWave']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.xact_notification_wave</msdn-id>\t\n            <unmanaged>IXACT3Wave* pWave</unmanaged>\t\n            <unmanaged-short>IXACT3Wave pWave</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XACT3.RawNotificationWavebank\">\n            <summary>\t\n            <p>Notification structure for all wave bank notifications.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_NOTIFICATION_WAVEBANK']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.xact_notification_wavebank</msdn-id>\t\n            <unmanaged>XACT_NOTIFICATION_WAVEBANK</unmanaged>\t\n            <unmanaged-short>XACT_NOTIFICATION_WAVEBANK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.RawNotificationWavebank.WaveBankPointer\">\n            <summary>\t\n            <dd> Pointer to the <see cref=\"T:SharpDX.XACT3.WaveBank\"/> instance. This reference is invalid when the notification type is XACTNOTIFICATIONTYPE_WAVEBANKDESTROYED. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_NOTIFICATION_WAVEBANK::pWaveBank']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.xact_notification_wavebank</msdn-id>\t\n            <unmanaged>IXACT3WaveBank* pWaveBank</unmanaged>\t\n            <unmanaged-short>IXACT3WaveBank pWaveBank</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XACT3.RendererDetails\">\n            <summary>\t\n            <p>Returns information about a particular renderer.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_RENDERER_DETAILS']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.xact_renderer_details</msdn-id>\t\n            <unmanaged>XACT_RENDERER_DETAILS</unmanaged>\t\n            <unmanaged-short>XACT_RENDERER_DETAILS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.RendererDetails.RendererId\">\n            <summary>\t\n            <dd> Wide character array containing the id of the renderer. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_RENDERER_DETAILS::rendererID']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.xact_renderer_details</msdn-id>\t\n            <unmanaged>wchar_t rendererID[255]</unmanaged>\t\n            <unmanaged-short>wchar_t rendererID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.RendererDetails.DisplayName\">\n            <summary>\t\n            <dd> Wide character array that contains the name of the renderer. <table><tr><th>Note </th></tr><tr><td>The friendly name is useful in presenting the audio devices that are available to the end user. However, the renderer id can be passed in the <see cref=\"T:SharpDX.XACT3.AudioEngineSettings\"/> structure?which is used during XACT initialization?to connect to the renderer.</td></tr></table> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_RENDERER_DETAILS::displayName']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.xact_renderer_details</msdn-id>\t\n            <unmanaged>wchar_t displayName[255]</unmanaged>\t\n            <unmanaged-short>wchar_t displayName</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.RendererDetails.IsDefault\">\n            <summary>\t\n            <dd> TRUE if this renderer is the default renderer. Otherwise, <see cref=\"F:SharpDX.Result.False\"/>. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_RENDERER_DETAILS::defaultDevice']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.xact_renderer_details</msdn-id>\t\n            <unmanaged>BOOL defaultDevice</unmanaged>\t\n            <unmanaged-short>BOOL defaultDevice</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XACT3.SoundProperties\">\n            <summary>\t\n            <p>Returns the properties for a sound that is referenced by the active variation.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The following is an example of iterating through the track properties represented by the <strong>arrTrackProperties</strong> member:</p> <pre> void EnumerateTrackProperties(LPXACT_SOUND_PROPERTIES pSoundProperties)\t\n            { for (XACTINDEX nIndex = 0; nIndex &lt; pSoundProperties-&gt;numTracks; ++nIndex) { // Do something with pSoundProperties-&gt;arrTrackProperties[nIndex]; }\t\n            }\t\n            </pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_SOUND_PROPERTIES']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.xact_sound_properties</msdn-id>\t\n            <unmanaged>XACT_SOUND_PROPERTIES</unmanaged>\t\n            <unmanaged-short>XACT_SOUND_PROPERTIES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.SoundProperties.Category\">\n            <summary>\t\n            <dd> Category that this sound belongs to. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_SOUND_PROPERTIES::category']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.xact_sound_properties</msdn-id>\t\n            <unmanaged>unsigned short category</unmanaged>\t\n            <unmanaged-short>unsigned short category</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.SoundProperties.Priority\">\n            <summary>\t\n            <dd> Priority that is assigned to this sound. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_SOUND_PROPERTIES::priority']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.xact_sound_properties</msdn-id>\t\n            <unmanaged>unsigned char priority</unmanaged>\t\n            <unmanaged-short>unsigned char priority</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.SoundProperties.Pitch\">\n            <summary>\t\n            <dd> Current pitch of the sound. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_SOUND_PROPERTIES::pitch']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.xact_sound_properties</msdn-id>\t\n            <unmanaged>short pitch</unmanaged>\t\n            <unmanaged-short>short pitch</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.SoundProperties.Volume\">\n            <summary>\t\n            <dd> Current volume of the sound. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_SOUND_PROPERTIES::volume']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.xact_sound_properties</msdn-id>\t\n            <unmanaged>float volume</unmanaged>\t\n            <unmanaged-short>float volume</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XACT3.SoundVariationProperties\">\n            <summary>\t\n            <p>Returns the properties of the sound variation that is currently active in a cue instance.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_SOUND_VARIATION_PROPERTIES']/*\"/>\t\n            <msdn-id>ee419095</msdn-id>\t\n            <unmanaged>XACT_SOUND_VARIATION_PROPERTIES</unmanaged>\t\n            <unmanaged-short>XACT_SOUND_VARIATION_PROPERTIES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.SoundVariationProperties.VariationProperties\">\n            <summary>\t\n            <dd> Properties of the currently active variation, represented by an <see cref=\"T:SharpDX.XACT3.VariationProperties\"/> structure. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_SOUND_VARIATION_PROPERTIES::variationProperties']/*\"/>\t\n            <msdn-id>ee419095</msdn-id>\t\n            <unmanaged>XACT_VARIATION_PROPERTIES variationProperties</unmanaged>\t\n            <unmanaged-short>XACT_VARIATION_PROPERTIES variationProperties</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.SoundVariationProperties.SoundProperties\">\n            <summary>\t\n            <dd> Properties of the sound that the active variation references, represented by an <see cref=\"T:SharpDX.XACT3.SoundProperties\"/> structure. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_SOUND_VARIATION_PROPERTIES::soundProperties']/*\"/>\t\n            <msdn-id>ee419095</msdn-id>\t\n            <unmanaged>XACT_SOUND_PROPERTIES soundProperties</unmanaged>\t\n            <unmanaged-short>XACT_SOUND_PROPERTIES soundProperties</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XACT3.StreamingParameters\">\n            <summary>\t\n            <p>Streaming parameters for a wave bank.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Xact.h also includes the following constant declaration:</p> <pre>typedef const XACT_WAVEBANK_STREAMING_PARAMETERS *LPCXACT_WAVEBANK_STREAMING_PARAMETERS;</pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_STREAMING_PARAMETERS']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.xact_streaming_parameters</msdn-id>\t\n            <unmanaged>XACT_STREAMING_PARAMETERS</unmanaged>\t\n            <unmanaged-short>XACT_STREAMING_PARAMETERS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.StreamingParameters.File\">\n            <summary>\t\n            <dd> File handle that is associated with the wave bank data. <table><tr><th>Windows </th></tr><tr><td> <p>The file that is referenced by this handle must be opened with the following <strong>CreateFile</strong> flags: FILE_FLAG_OVERLAPPED | FILE_FLAG_NO_BUFFERING.</p> </td></tr></table> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_STREAMING_PARAMETERS::file']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.xact_streaming_parameters</msdn-id>\t\n            <unmanaged>void* file</unmanaged>\t\n            <unmanaged-short>void file</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.StreamingParameters.Offset\">\n            <summary>\t\n            <dd> Offset in the wave bank data file.  This offset must be DVD sector aligned. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_STREAMING_PARAMETERS::offset']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.xact_streaming_parameters</msdn-id>\t\n            <unmanaged>unsigned int offset</unmanaged>\t\n            <unmanaged-short>unsigned int offset</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.StreamingParameters.Flags\">\n            <summary>\t\n            <dd> Flags. <em>Reserved for future use. Set to 0.</em> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_STREAMING_PARAMETERS::flags']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.xact_streaming_parameters</msdn-id>\t\n            <unmanaged>unsigned int flags</unmanaged>\t\n            <unmanaged-short>unsigned int flags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.StreamingParameters.PacketSize\">\n            <summary>\t\n            <dd> Stream packet size, in sectors, to use for each stream. The minimum value is 2. <p>The size of a DVD sector is 2048 bytes. Therefore, setting this value to 2 results in a packet size of 4096 bytes. Setting it to 3 specifies packets of 6144 bytes, setting it to 4 specifies packets of 8192 bytes, and so on.</p> <p>The optimal DVD size is a multiple of 16 (1 DVD block = 16 DVD sectors).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_STREAMING_PARAMETERS::packetSize']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.xact_streaming_parameters</msdn-id>\t\n            <unmanaged>unsigned short packetSize</unmanaged>\t\n            <unmanaged-short>unsigned short packetSize</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XACT3.TrackProperties\">\n            <summary>\t\n            <p>Returns the properties of a track in an active sound variation in a cue instance.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>These properties are timing dependent. They may change when the <see cref=\"M:SharpDX.XACT3.SoundBank.GetCueProperties(System.Int16)\"/> call returns.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_TRACK_PROPERTIES']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.xact_track_properties</msdn-id>\t\n            <unmanaged>XACT_TRACK_PROPERTIES</unmanaged>\t\n            <unmanaged-short>XACT_TRACK_PROPERTIES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.TrackProperties.Duration\">\n            <summary>\t\n            <dd> Duration of the track in milliseconds. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_TRACK_PROPERTIES::duration']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.xact_track_properties</msdn-id>\t\n            <unmanaged>int duration</unmanaged>\t\n            <unmanaged-short>int duration</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.TrackProperties.VariationCount\">\n            <summary>\t\n            <dd> Total number of wave variations in the track. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_TRACK_PROPERTIES::numVariations']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.xact_track_properties</msdn-id>\t\n            <unmanaged>unsigned short numVariations</unmanaged>\t\n            <unmanaged-short>unsigned short numVariations</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.TrackProperties.ChannelCount\">\n            <summary>\t\n            <dd> Maximum number of channels that are required to play the track. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_TRACK_PROPERTIES::numChannels']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.xact_track_properties</msdn-id>\t\n            <unmanaged>unsigned char numChannels</unmanaged>\t\n            <unmanaged-short>unsigned char numChannels</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.TrackProperties.WaveVariation\">\n            <summary>\t\n            <dd> Index of the currently active wave variation. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_TRACK_PROPERTIES::waveVariation']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.xact_track_properties</msdn-id>\t\n            <unmanaged>unsigned short waveVariation</unmanaged>\t\n            <unmanaged-short>unsigned short waveVariation</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.TrackProperties.LoopCount\">\n            <summary>\t\n            <dd> Current loop count on the track. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_TRACK_PROPERTIES::loopCount']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.xact_track_properties</msdn-id>\t\n            <unmanaged>unsigned char loopCount</unmanaged>\t\n            <unmanaged-short>unsigned char loopCount</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XACT3.VariationProperties\">\n            <summary>\t\n            <p>Returns the properties for the variation that is currently active in a cue instance.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_VARIATION_PROPERTIES']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.xact_variation_properties</msdn-id>\t\n            <unmanaged>XACT_VARIATION_PROPERTIES</unmanaged>\t\n            <unmanaged-short>XACT_VARIATION_PROPERTIES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.VariationProperties.Index\">\n            <summary>\t\n            <dd> Index of the variation in the parent variation list. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_VARIATION_PROPERTIES::index']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.xact_variation_properties</msdn-id>\t\n            <unmanaged>unsigned short index</unmanaged>\t\n            <unmanaged-short>unsigned short index</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.VariationProperties.Weight\">\n            <summary>\t\n            <dd> Weight that is assigned to the variation. This member is used by noninteractive variations only. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_VARIATION_PROPERTIES::weight']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.xact_variation_properties</msdn-id>\t\n            <unmanaged>unsigned char weight</unmanaged>\t\n            <unmanaged-short>unsigned char weight</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.VariationProperties.VariableMin\">\n            <summary>\t\n            <dd> Lower bound of the interactive variable that controls the variation. This member is used by interactive variations only. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_VARIATION_PROPERTIES::iaVariableMin']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.xact_variation_properties</msdn-id>\t\n            <unmanaged>float iaVariableMin</unmanaged>\t\n            <unmanaged-short>float iaVariableMin</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.VariationProperties.VariableMax\">\n            <summary>\t\n            <dd> Upper bound of the interactive variable that controls the variation. This member is used by interactive variations only. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_VARIATION_PROPERTIES::iaVariableMax']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.xact_variation_properties</msdn-id>\t\n            <unmanaged>float iaVariableMax</unmanaged>\t\n            <unmanaged-short>float iaVariableMax</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.VariationProperties.ShouldLinger\">\n            <summary>\t\n            <dd> Flag that indicates if the variation should linger. This member is used by interactive variations only. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_VARIATION_PROPERTIES::linger']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.xact_variation_properties</msdn-id>\t\n            <unmanaged>BOOL linger</unmanaged>\t\n            <unmanaged-short>BOOL linger</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XACT3.WaveBankData\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVEBANKDATA']/*\"/>\t\n            <unmanaged>WAVEBANKDATA</unmanaged>\t\n            <unmanaged-short>WAVEBANKDATA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.WaveBankData.Flags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVEBANKDATA::dwFlags']/*\"/>\t\n            <unmanaged>unsigned int dwFlags</unmanaged>\t\n            <unmanaged-short>unsigned int dwFlags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.WaveBankData.EntryCount\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVEBANKDATA::dwEntryCount']/*\"/>\t\n            <unmanaged>unsigned int dwEntryCount</unmanaged>\t\n            <unmanaged-short>unsigned int dwEntryCount</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.WaveBankData.SzBankName\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVEBANKDATA::szBankName']/*\"/>\t\n            <unmanaged>char szBankName[64]</unmanaged>\t\n            <unmanaged-short>char szBankName</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.WaveBankData.EntryMetaDataElementSize\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVEBANKDATA::dwEntryMetaDataElementSize']/*\"/>\t\n            <unmanaged>unsigned int dwEntryMetaDataElementSize</unmanaged>\t\n            <unmanaged-short>unsigned int dwEntryMetaDataElementSize</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.WaveBankData.EntryNameElementSize\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVEBANKDATA::dwEntryNameElementSize']/*\"/>\t\n            <unmanaged>unsigned int dwEntryNameElementSize</unmanaged>\t\n            <unmanaged-short>unsigned int dwEntryNameElementSize</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.WaveBankData.Alignment\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVEBANKDATA::dwAlignment']/*\"/>\t\n            <unmanaged>unsigned int dwAlignment</unmanaged>\t\n            <unmanaged-short>unsigned int dwAlignment</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.WaveBankData.CompactFormat\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVEBANKDATA::CompactFormat']/*\"/>\t\n            <unmanaged>WAVEBANKMINIWAVEFORMAT CompactFormat</unmanaged>\t\n            <unmanaged-short>WAVEBANKMINIWAVEFORMAT CompactFormat</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.WaveBankData.BuildTime\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVEBANKDATA::BuildTime']/*\"/>\t\n            <unmanaged>FILETIME BuildTime</unmanaged>\t\n            <unmanaged-short>FILETIME BuildTime</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XACT3.WaveBankEntry\">\n            <summary>\t\n            <p>Contains the entry information from an XACT wave bank.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVEBANKENTRY']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.wavebankentry</msdn-id>\t\n            <unmanaged>WAVEBANKENTRY</unmanaged>\t\n            <unmanaged-short>WAVEBANKENTRY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.WaveBankEntry.FlagsAndDuration\">\n            <summary>\t\n            <dd><p>DWORD value representing both the flags and duration.</p></dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVEBANKENTRY::dwFlagsAndDuration']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.wavebankentry</msdn-id>\t\n            <unmanaged>unsigned int dwFlagsAndDuration</unmanaged>\t\n            <unmanaged-short>unsigned int dwFlagsAndDuration</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.WaveBankEntry.Format\">\n            <summary>\t\n            <dd><see cref=\"T:SharpDX.XACT3.WaveBankMiniWaveFormat\"/> structure  describing the mini-wave format for the wave bank entry.</dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVEBANKENTRY::Format']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.wavebankentry</msdn-id>\t\n            <unmanaged>WAVEBANKMINIWAVEFORMAT Format</unmanaged>\t\n            <unmanaged-short>WAVEBANKMINIWAVEFORMAT Format</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.WaveBankEntry.PlayRegion\">\n            <summary>\t\n            <dd><see cref=\"T:SharpDX.XACT3.WaveBankRegion\"/> structure that describes the region within the wave data segment that contains this entry.</dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVEBANKENTRY::PlayRegion']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.wavebankentry</msdn-id>\t\n            <unmanaged>WAVEBANKREGION PlayRegion</unmanaged>\t\n            <unmanaged-short>WAVEBANKREGION PlayRegion</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.WaveBankEntry.LoopRegion\">\n            <summary>\t\n            <dd><see cref=\"T:SharpDX.XACT3.WaveBankSampleRegion\"/> structure that describes the region within the wave data (in samples) that should loop.</dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVEBANKENTRY::LoopRegion']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.wavebankentry</msdn-id>\t\n            <unmanaged>WAVEBANKSAMPLEREGION LoopRegion</unmanaged>\t\n            <unmanaged-short>WAVEBANKSAMPLEREGION LoopRegion</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.XACT3.WaveBankEntry.Flags\">\n            <summary>\t\n            <dd> <p>Flags for the wave bank entry. Can be the following values.</p> <table><tr><th>Value</th><th>Description</th></tr><tr><td>WAVEBANKENTRY_FLAGS_READAHEAD</td><td>Indicates stream read-ahead is enabled.?</td></tr><tr><td>WAVEBANKENTRY_FLAGS_LOOPCACHE</td><td>Indicates one or more looping sounds use this wave.?</td></tr><tr><td>WAVEBANKENTRY_FLAGS_REMOVELOOPTAIL</td><td>Indicates removal of data after the end of the loop region.?</td></tr></table> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVEBANKENTRY::dwFlags']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.wavebankentry</msdn-id>\t\n            <unmanaged>unsigned int dwFlags</unmanaged>\t\n            <unmanaged-short>unsigned int dwFlags</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.XACT3.WaveBankEntry.Duration\">\n            <summary>\t\n            <dd> <p>Duration of the wave, in units of one sample. For instance, a ten second long wave sampled at 48KHz would have a duration of 480,000. This value is not affected by the number of channels, the number of bits per sample, or the compression format of the wave.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVEBANKENTRY::Duration']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.wavebankentry</msdn-id>\t\n            <unmanaged>unsigned int Duration</unmanaged>\t\n            <unmanaged-short>unsigned int Duration</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XACT3.WaveBankEntryCompact\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVEBANKENTRYCOMPACT']/*\"/>\t\n            <unmanaged>WAVEBANKENTRYCOMPACT</unmanaged>\t\n            <unmanaged-short>WAVEBANKENTRYCOMPACT</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.XACT3.WaveBankEntryCompact.Offset\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVEBANKENTRYCOMPACT::dwOffset']/*\"/>\t\n            <unmanaged>unsigned int dwOffset</unmanaged>\t\n            <unmanaged-short>unsigned int dwOffset</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.XACT3.WaveBankEntryCompact.LengthDeviation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVEBANKENTRYCOMPACT::dwLengthDeviation']/*\"/>\t\n            <unmanaged>unsigned int dwLengthDeviation</unmanaged>\t\n            <unmanaged-short>unsigned int dwLengthDeviation</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XACT3.WaveBankHeader\">\n            <summary>\t\n            <p>Contains the header information from an XACT wave bank.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVEBANKHEADER']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.wavebankheader</msdn-id>\t\n            <unmanaged>WAVEBANKHEADER</unmanaged>\t\n            <unmanaged-short>WAVEBANKHEADER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.WaveBankHeader.Signature\">\n            <summary>\t\n            <dd>File signature. In a valid file, this will equal  WAVEBANK_HEADER_SIGNATURE.</dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVEBANKHEADER::dwSignature']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.wavebankheader</msdn-id>\t\n            <unmanaged>unsigned int dwSignature</unmanaged>\t\n            <unmanaged-short>unsigned int dwSignature</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.WaveBankHeader.Version\">\n            <summary>\t\n            <dd>Version of the tool that created the file. The version is XACT_CONTENT_VERSION, and is defined in XACT.h.</dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVEBANKHEADER::dwVersion']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.wavebankheader</msdn-id>\t\n            <unmanaged>unsigned int dwVersion</unmanaged>\t\n            <unmanaged-short>unsigned int dwVersion</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.WaveBankHeader.HeaderVersion\">\n            <summary>\t\n            <dd>Version of the wave bank file format. The current file format version is WAVEBANK_HEADER_VERSION.</dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVEBANKHEADER::dwHeaderVersion']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.wavebankheader</msdn-id>\t\n            <unmanaged>unsigned int dwHeaderVersion</unmanaged>\t\n            <unmanaged-short>unsigned int dwHeaderVersion</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.XACT3.WaveBankHeader.Segments\">\n            <summary>\t\n            <dd>Array of  <see cref=\"T:SharpDX.XACT3.WaveBankRegion\"/> structures representing the segment lookup table. The indices  into this array are defined in <see cref=\"T:SharpDX.XACT3.Wavebanksegidx\"/>. For example, you would use the <see cref=\"F:SharpDX.XACT3.Wavebanksegidx.SegidxBankdata\"/> index to find the bank data region.</dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVEBANKHEADER::Segments']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.wavebankheader</msdn-id>\t\n            <unmanaged>WAVEBANKREGION Segments[5]</unmanaged>\t\n            <unmanaged-short>WAVEBANKREGION Segments</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XACT3.WaveBankMiniWaveFormat\">\n            <summary>\t\n            <p>Contains the mini-wave format for an XACT wave bank.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVEBANKMINIWAVEFORMAT']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.wavebankminiwaveformat</msdn-id>\t\n            <unmanaged>WAVEBANKMINIWAVEFORMAT</unmanaged>\t\n            <unmanaged-short>WAVEBANKMINIWAVEFORMAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.WaveBankMiniWaveFormat.Value\">\n            <summary>\t\n            <dd>This member is unused.</dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVEBANKMINIWAVEFORMAT::dwValue']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.wavebankminiwaveformat</msdn-id>\t\n            <unmanaged>unsigned int dwValue</unmanaged>\t\n            <unmanaged-short>unsigned int dwValue</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.XACT3.WaveBankMiniWaveFormat.RawFormatTag\">\n            <summary>\t\n            <dd><p>Format of the wave file. Can be one of the values in  the following table.</p> <table><tr><th>Value</th><th>Description</th></tr><tr><td><see cref=\"F:SharpDX.XACT3.WaveBankMiniFormatTag.Pcm\"/></td><td>Specifies PCM wave format.?</td></tr><tr><td><see cref=\"F:SharpDX.XACT3.WaveBankMiniFormatTag.Xma\"/></td><td>Specifies XMA2 format.?</td></tr><tr><td><see cref=\"F:SharpDX.XACT3.WaveBankMiniFormatTag.Adpcm\"/></td><td>Specifies ADPCM wave format.?</td></tr><tr><td><see cref=\"F:SharpDX.XACT3.WaveBankMiniFormatTag.Wma\"/></td><td>Specifies xWMA format.?</td></tr></table> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVEBANKMINIWAVEFORMAT::wFormatTag']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.wavebankminiwaveformat</msdn-id>\t\n            <unmanaged>unsigned int wFormatTag</unmanaged>\t\n            <unmanaged-short>unsigned int wFormatTag</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.XACT3.WaveBankMiniWaveFormat.Channels\">\n            <summary>\t\n            <dd><p>Number of channels in the wave file. Can be a value from 1 to 6.</p></dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVEBANKMINIWAVEFORMAT::nChannels']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.wavebankminiwaveformat</msdn-id>\t\n            <unmanaged>unsigned int nChannels</unmanaged>\t\n            <unmanaged-short>unsigned int nChannels</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.XACT3.WaveBankMiniWaveFormat.SamplesPerSecond\">\n            <summary>\t\n            <dd><p>Sampling rate of the wave file or sample rate  of the decoded audio for compressed formats.</p></dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVEBANKMINIWAVEFORMAT::nSamplesPerSec']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.wavebankminiwaveformat</msdn-id>\t\n            <unmanaged>unsigned int nSamplesPerSec</unmanaged>\t\n            <unmanaged-short>unsigned int nSamplesPerSec</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.XACT3.WaveBankMiniWaveFormat.BlockAlign\">\n            <summary>\t\n            <dd><p>Block alignment index.  For xWMA the lower 6 bits  are the block alignment index and the upper 2 bits are the bytes per second index.</p></dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVEBANKMINIWAVEFORMAT::wBlockAlign']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.wavebankminiwaveformat</msdn-id>\t\n            <unmanaged>unsigned int wBlockAlign</unmanaged>\t\n            <unmanaged-short>unsigned int wBlockAlign</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.XACT3.WaveBankMiniWaveFormat.BitsPerSample\">\n            <summary>\t\n            <dd><p>Bit depth of the wave file. Can be one of the values in the following table.</p> <table><tr><th>Value</th><th>Description</th></tr><tr><td>WAVEBANKMINIFORMAT_BITDEPTH_8</td><td>Specifies 8-bit data. (PCM only)?</td></tr><tr><td>WAVEBANKMINIFORMAT_BITDEPTH_16</td><td>Specifies 16-bit data. (PCM, XMA, ADPCM).?</td></tr></table> <p>For xWMA this field indicates whether the format is in the WMA format (0) or the WMA Pro format (1).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVEBANKMINIWAVEFORMAT::wBitsPerSample']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.wavebankminiwaveformat</msdn-id>\t\n            <unmanaged>unsigned int wBitsPerSample</unmanaged>\t\n            <unmanaged-short>unsigned int wBitsPerSample</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XACT3.WaveBankRegion\">\n            <summary>\t\n            <p>Contains the region information for an XACT wave bank.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVEBANKREGION']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.wavebankregion</msdn-id>\t\n            <unmanaged>WAVEBANKREGION</unmanaged>\t\n            <unmanaged-short>WAVEBANKREGION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.WaveBankRegion.Offset\">\n            <summary>\t\n            <dd>Region offset in bytes.</dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVEBANKREGION::dwOffset']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.wavebankregion</msdn-id>\t\n            <unmanaged>unsigned int dwOffset</unmanaged>\t\n            <unmanaged-short>unsigned int dwOffset</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.WaveBankRegion.Length\">\n            <summary>\t\n            <dd>Region length in bytes.</dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVEBANKREGION::dwLength']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.wavebankregion</msdn-id>\t\n            <unmanaged>unsigned int dwLength</unmanaged>\t\n            <unmanaged-short>unsigned int dwLength</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XACT3.WaveBankSampleRegion\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVEBANKSAMPLEREGION']/*\"/>\t\n            <unmanaged>WAVEBANKSAMPLEREGION</unmanaged>\t\n            <unmanaged-short>WAVEBANKSAMPLEREGION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.WaveBankSampleRegion.StartSample\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVEBANKSAMPLEREGION::dwStartSample']/*\"/>\t\n            <unmanaged>unsigned int dwStartSample</unmanaged>\t\n            <unmanaged-short>unsigned int dwStartSample</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.WaveBankSampleRegion.TotalSamples\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVEBANKSAMPLEREGION::dwTotalSamples']/*\"/>\t\n            <unmanaged>unsigned int dwTotalSamples</unmanaged>\t\n            <unmanaged-short>unsigned int dwTotalSamples</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XACT3.WaveInstanceProperties\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_WAVE_INSTANCE_PROPERTIES']/*\"/>\t\n            <unmanaged>XACT_WAVE_INSTANCE_PROPERTIES</unmanaged>\t\n            <unmanaged-short>XACT_WAVE_INSTANCE_PROPERTIES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.WaveInstanceProperties.Properties\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_WAVE_INSTANCE_PROPERTIES::properties']/*\"/>\t\n            <unmanaged>XACT_WAVE_PROPERTIES properties</unmanaged>\t\n            <unmanaged-short>XACT_WAVE_PROPERTIES properties</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.WaveInstanceProperties.IsBackgroundMusic\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_WAVE_INSTANCE_PROPERTIES::backgroundMusic']/*\"/>\t\n            <unmanaged>BOOL backgroundMusic</unmanaged>\t\n            <unmanaged-short>BOOL backgroundMusic</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XACT3.WaveProperties\">\n            <summary>\t\n            <p>Returns the properties that are common to all waves.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_WAVE_PROPERTIES']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.xact_wave_properties</msdn-id>\t\n            <unmanaged>XACT_WAVE_PROPERTIES</unmanaged>\t\n            <unmanaged-short>XACT_WAVE_PROPERTIES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.WaveProperties.FriendlyName\">\n            <summary>\t\n            <dd> Friendly name for the wave. An empty string if the wave bank has been stripped of friendly names. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_WAVE_PROPERTIES::friendlyName']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.xact_wave_properties</msdn-id>\t\n            <unmanaged>char friendlyName[64]</unmanaged>\t\n            <unmanaged-short>char friendlyName</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.WaveProperties.Format\">\n            <summary>\t\n            <dd> Format for the wave. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_WAVE_PROPERTIES::format']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.xact_wave_properties</msdn-id>\t\n            <unmanaged>WAVEBANKMINIWAVEFORMAT format</unmanaged>\t\n            <unmanaged-short>WAVEBANKMINIWAVEFORMAT format</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.WaveProperties.DurationInSamples\">\n            <summary>\t\n            <dd> Duration of the wave, in samples. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_WAVE_PROPERTIES::durationInSamples']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.xact_wave_properties</msdn-id>\t\n            <unmanaged>unsigned int durationInSamples</unmanaged>\t\n            <unmanaged-short>unsigned int durationInSamples</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.WaveProperties.LoopRegion\">\n            <summary>\t\n            <dd> Loop region that is defined in samples. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_WAVE_PROPERTIES::loopRegion']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.xact_wave_properties</msdn-id>\t\n            <unmanaged>WAVEBANKSAMPLEREGION loopRegion</unmanaged>\t\n            <unmanaged-short>WAVEBANKSAMPLEREGION loopRegion</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.WaveProperties.IsStreaming\">\n            <summary>\t\n            <dd> TRUE if the wave is streaming. Otherwise, <see cref=\"F:SharpDX.Result.False\"/>. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XACT_WAVE_PROPERTIES::streaming']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.struct.xact_wave_properties</msdn-id>\t\n            <unmanaged>BOOL streaming</unmanaged>\t\n            <unmanaged-short>BOOL streaming</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XACT3.MarkerNotification\">\n            <summary>\n            Marker notification parameters.\n            </summary>\n            <unmanaged>XACT_NOTIFICATION_MARKER</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.XACT3.NamespaceDoc\">\n            <summary>\n            The <see cref=\"N:SharpDX.XACT3\"/> namespace provides a managed XACT3 API.\n            </summary>\n            <msdn-id>hh405049</msdn-id>\n            <unmanaged>XACT3</unmanaged>\t\n            <unmanaged-short>XACT3</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XACT3.RawNotification\">\n            <summary>\t\n            Hand written version of XACT_NOTIFICATION in order to smoothly support compatible x86/x64 inner anonymous union.\n            </summary>\t\n            <unmanaged>XACT_NOTIFICATION</unmanaged>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.RawNotification.Type\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <unmanaged>XACT_NOTIFICATION_TYPE type</unmanaged>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.RawNotification.TimeStamp\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <unmanaged>int timeStamp</unmanaged>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.RawNotification.ContextPointer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <unmanaged>void* pvContext</unmanaged>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.RawNotification.Data\">\n            <summary>\n            Notification data specific to the <see cref=\"F:SharpDX.XACT3.RawNotification.Type\"/>.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.XACT3.RawNotification.SubData.Cue\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <unmanaged>XACT_NOTIFICATION_CUE cue</unmanaged>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.RawNotification.SubData.Marker\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <unmanaged>XACT_NOTIFICATION_MARKER marker</unmanaged>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.RawNotification.SubData.SoundBank\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <unmanaged>XACT_NOTIFICATION_SOUNDBANK soundBank</unmanaged>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.RawNotification.SubData.WaveBank\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <unmanaged>XACT_NOTIFICATION_WAVEBANK waveBank</unmanaged>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.RawNotification.SubData.Variable\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <unmanaged>XACT_NOTIFICATION_VARIABLE variable</unmanaged>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.RawNotification.SubData.Gui\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <unmanaged>XACT_NOTIFICATION_GUI gui</unmanaged>\t\n        </member>\n        <member name=\"F:SharpDX.XACT3.RawNotification.SubData.Wave\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <unmanaged>XACT_NOTIFICATION_WAVE wave</unmanaged>\t\n        </member>\n        <member name=\"T:SharpDX.XACT3.SoundBankNotification\">\n            <summary>\n            SoundBank notification parameters.\n            </summary>\n            <unmanaged>XACT_NOTIFICATION_SOUNDBANK</unmanaged>\t\n        </member>\n        <member name=\"T:SharpDX.XACT3.VariableNotification\">\n            <summary>\n            Variable notification parameters.\n            </summary>\n            <unmanaged>XACT_NOTIFICATION_VARIABLE</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.XACT3.WaveBankNotification\">\n            <summary>\n            Wavebank notification parameters.\n            </summary>\n            <unmanaged>XACT_NOTIFICATION_WAVEBANK</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.XACT3.WaveNotification\">\n            <summary>\n            Wave notification parameters.\n            </summary>\n            <unmanaged>XACT_NOTIFICATION_WAVE</unmanaged>\n        </member>\n    </members>\n</doc>\n"
  },
  {
    "path": "3rd/SharpDX/SharpDX.XAudio2.xml",
    "content": "<?xml version=\"1.0\"?>\n<doc>\n    <assembly>\n        <name>SharpDX.XAudio2</name>\n    </assembly>\n    <members>\n        <member name=\"T:SharpDX.XAudio2.AssemblyDoc\">\n            <summary>\n            The <see cref=\"A:SharpDX.XAudio2\"/> assembly provides managed <see cref=\"N:SharpDX.XAudio2\"/> and <see cref=\"N:SharpDX.X3DAudio\"/> APIs.\n            </summary>\n            <msdn-id>hh405049</msdn-id>\n            <unmanaged>XAudio2</unmanaged>\t\n            <unmanaged-short>XAudio2</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XAudio2.EffectDescriptor\">\n            <summary>\t\n            Contains information about anXAPOfor use  in an effect chain.\t\n            </summary>\t\n            <remarks>\t\n            <p>XAPO instances are passed to XAudio2 as <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interfaces and XAudio2 uses  IXAPO::QueryInterface to acquire an <see cref=\"T:SharpDX.XAPO.AudioProcessor\"/> interface and to detect whether the XAPO implements the  <see cref=\"T:SharpDX.XAPO.ParameterProvider\"/> interface.</p> <p>For additional information on using XAPOs with XAudio2 see How to: Create an Effect Chain and How to: Use an XAPO in XAudio2.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_EFFECT_DESCRIPTOR']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.xaudio2.xaudio2_effect_descriptor</msdn-id>\t\n            <unmanaged>XAUDIO2_EFFECT_DESCRIPTOR</unmanaged>\t\n            <unmanaged-short>XAUDIO2_EFFECT_DESCRIPTOR</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XAudio2.EffectDescriptor.#ctor(SharpDX.XAPO.AudioProcessor)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.XAudio2.EffectDescriptor\"/> class with a Stereo Effect.\n            </summary>\n            <param name=\"effect\">The effect.</param>\n        </member>\n        <member name=\"M:SharpDX.XAudio2.EffectDescriptor.#ctor(SharpDX.XAPO.AudioProcessor,System.Int32)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.XAudio2.EffectDescriptor\"/> class.\n            </summary>\n            <param name=\"effect\">The effect.</param>\n            <param name=\"outputChannelCount\">The output channel count.</param>\n        </member>\n        <member name=\"F:SharpDX.XAudio2.EffectDescriptor.EffectPointer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_EFFECT_DESCRIPTOR::pEffect']/*\"/>\t\n            <unmanaged>IUnknown* pEffect</unmanaged>\t\n            <unmanaged-short>IUnknown pEffect</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.EffectDescriptor.InitialState\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_EFFECT_DESCRIPTOR::InitialState']/*\"/>\t\n            <unmanaged>BOOL InitialState</unmanaged>\t\n            <unmanaged-short>BOOL InitialState</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.EffectDescriptor.OutputChannelCount\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_EFFECT_DESCRIPTOR::OutputChannels']/*\"/>\t\n            <unmanaged>unsigned int OutputChannels</unmanaged>\t\n            <unmanaged-short>unsigned int OutputChannels</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.XAudio2.EffectDescriptor.Effect\">\n            <summary>\n            Gets or sets the AudioProcessor. The AudioProcessor cannot be set more than one.\n            </summary>\n            <value>The effect.</value>\n        </member>\n        <member name=\"T:SharpDX.XAudio2.AudioBuffer\">\n            <summary>\t\n            Represents an audio data buffer, used withIXAudio2SourceVoice::SubmitSourceBuffer.\t\n            </summary>\t\n            <remarks>\t\n            <p>XAudio2 audio data is interleaved, data from each channel is adjacent for a particular sample number. For example if there was a 4 channel wave playing into an XAudio2 source voice, the audio data would be a sample of channel 0, a sample of channel 1, a sample of channel 2, a sample of channel 3, and then the next sample of channels 0, 1, 2, 3, etc.</p> <p>The <strong>AudioBytes</strong> and <strong>pAudioData</strong> members of <strong><see cref=\"T:SharpDX.XAudio2.AudioBuffer\"/></strong> correspond to the size in bytes and contents of the 'data' RIFF chunk of the file being played. The contents of the chunk may need to be byte swapped when loading the file on Xbox 360.</p> <p>Memory allocated to hold a <see cref=\"T:SharpDX.XAudio2.AudioBuffer\"/> or <see cref=\"T:SharpDX.XAudio2.BufferWma\"/> structure can be freed as soon as the <see cref=\"M:SharpDX.XAudio2.SourceVoice.SubmitSourceBuffer(SharpDX.XAudio2.AudioBuffer,System.IntPtr)\"/> call it is passed to returns. The data the structure points to (<strong>pAudioData</strong> and <strong>pDecodedPacketCumulativeBytes</strong>, respectively) can't be freed until the buffer completes (as signaled by the <see cref=\"M:SharpDX.XAudio2.VoiceCallback.OnBufferEnd(System.IntPtr)\"/> callback) or the voice is stopped or destroyed.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_BUFFER']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.xaudio2.xaudio2_buffer</msdn-id>\t\n            <unmanaged>XAUDIO2_BUFFER</unmanaged>\t\n            <unmanaged-short>XAUDIO2_BUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.AudioBuffer.LoopInfinite\">\n            <summary>Constant LoopInfinite.</summary>\n            <unmanaged>XAUDIO2_LOOP_INFINITE</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.XAudio2.AudioBuffer.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.XAudio2.AudioBuffer\"/> class.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.XAudio2.AudioBuffer.#ctor(SharpDX.DataStream)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.XAudio2.AudioBuffer\"/> class.\n            </summary>\n            <param name=\"stream\">The stream to get the audio buffer from.</param>\n        </member>\n        <member name=\"M:SharpDX.XAudio2.AudioBuffer.#ctor(SharpDX.DataPointer)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.XAudio2.AudioBuffer\"/> class.\n            </summary>\n            <param name=\"dataBuffer\">The buffer to get the audio buffer from.</param>\n        </member>\n        <member name=\"F:SharpDX.XAudio2.AudioBuffer.Flags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_BUFFER::Flags']/*\"/>\t\n            <unmanaged>XAUDIO2_BUFFER_FLAGS Flags</unmanaged>\t\n            <unmanaged-short>XAUDIO2_BUFFER_FLAGS Flags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.AudioBuffer.AudioBytes\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_BUFFER::AudioBytes']/*\"/>\t\n            <unmanaged>unsigned int AudioBytes</unmanaged>\t\n            <unmanaged-short>unsigned int AudioBytes</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.AudioBuffer.AudioDataPointer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_BUFFER::pAudioData']/*\"/>\t\n            <unmanaged>const unsigned char* pAudioData</unmanaged>\t\n            <unmanaged-short>unsigned char pAudioData</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.AudioBuffer.PlayBegin\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_BUFFER::PlayBegin']/*\"/>\t\n            <unmanaged>unsigned int PlayBegin</unmanaged>\t\n            <unmanaged-short>unsigned int PlayBegin</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.AudioBuffer.PlayLength\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_BUFFER::PlayLength']/*\"/>\t\n            <unmanaged>unsigned int PlayLength</unmanaged>\t\n            <unmanaged-short>unsigned int PlayLength</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.AudioBuffer.LoopBegin\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_BUFFER::LoopBegin']/*\"/>\t\n            <unmanaged>unsigned int LoopBegin</unmanaged>\t\n            <unmanaged-short>unsigned int LoopBegin</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.AudioBuffer.LoopLength\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_BUFFER::LoopLength']/*\"/>\t\n            <unmanaged>unsigned int LoopLength</unmanaged>\t\n            <unmanaged-short>unsigned int LoopLength</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.AudioBuffer.LoopCount\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_BUFFER::LoopCount']/*\"/>\t\n            <unmanaged>unsigned int LoopCount</unmanaged>\t\n            <unmanaged-short>unsigned int LoopCount</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.AudioBuffer.Context\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_BUFFER::pContext']/*\"/>\t\n            <unmanaged>void* pContext</unmanaged>\t\n            <unmanaged-short>void pContext</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.XAudio2.AudioBuffer.Stream\">\n            <summary>\n            Gets or sets the datastream associated to this audio buffer\n            </summary>\n            <value>The stream.</value>\n        </member>\n        <member name=\"T:SharpDX.XAudio2.EngineCallback\">\n            <summary>\t\n            The IXAudio2EngineCallback interface contains methods that notify the client when certain events happen in the <see cref=\"T:SharpDX.XAudio2.XAudio2\"/> engine. This interface should be implemented by the XAudio2 client. XAudio2 calls these methods via an interface pointer provided by the client, using either the {{XAudio2Create}} or <see cref=\"M:SharpDX.XAudio2.XAudio2.Initialize(System.Int32,SharpDX.XAudio2.ProcessorSpecifier)\"/> method. Methods in this interface return void, rather than an HRESULT.\t\n            </summary>\t\n            <unmanaged>IXAudio2EngineCallback</unmanaged>\n            <summary>\t\n            The<strong><see cref=\"T:SharpDX.XAudio2.EngineCallback\"/></strong>interface contains methods that notify the client when certain events happen in theIXAudio2engine. This interface should be implemented by the XAudio2 client. XAudio2 calls these methods via an interface reference provided by the client, using theXAudio2Createmethod. Methods in this interface return<strong>void</strong>, rather than an <see cref=\"T:SharpDX.Result\"/>.<p>See XAudio2 Callbacks for restrictions on callback implementation.</p>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXAudio2EngineCallback']/*\"/>\t\n            <msdn-id>ee415910</msdn-id>\t\n            <unmanaged>IXAudio2EngineCallback</unmanaged>\t\n            <unmanaged-short>IXAudio2EngineCallback</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XAudio2.EngineCallback.OnProcessingPassStart\">\n            <summary>\t\n            Called by XAudio2 just before an audio processing pass begins.\t\n            </summary>\t\n            <unmanaged>void IXAudio2EngineCallback::OnProcessingPassStart()</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.XAudio2.EngineCallback.OnProcessingPassEnd\">\n            <summary>\t\n            Called by XAudio2 just after an audio processing pass ends.\t\n            </summary>\t\n            <unmanaged>void IXAudio2EngineCallback::OnProcessingPassEnd()</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.XAudio2.EngineCallback.OnCriticalError(SharpDX.Result)\">\n            <summary>\t\n            Called if a critical system error occurs that requires XAudio2 to be closed down and restarted.\t\n            </summary>\t\n            <param name=\"error\"> Error code returned by XAudio2. </param>\n            <unmanaged>void IXAudio2EngineCallback::OnCriticalError([None] HRESULT Error)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.XAudio2.EngineShadow\">\n            <summary>\n            Internal EngineCallback Callback Impl\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.XAudio2.EngineShadow.ToIntPtr(SharpDX.XAudio2.EngineCallback)\">\n            <summary>\n            Return a pointer to the unamanged version of this callback.\n            </summary>\n            <param name=\"callback\">The callback.</param>\n            <returns>A pointer to a shadow c++ callback</returns>\n        </member>\n        <member name=\"T:SharpDX.XAudio2.EngineShadow.EngineVtbl.OnProcessingPassEndDelegate\">\n            <summary>\t\n            Called by XAudio2 just after an audio processing pass ends.\t\n            </summary>\t\n            <unmanaged>void IXAudio2EngineCallback::OnProcessingPassEnd()</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.XAudio2.EngineShadow.EngineVtbl.OnCriticalErrorDelegate\">\n            <summary>\t\n            Called if a critical system error occurs that requires XAudio2 to be closed down and restarted.\t\n            </summary>\n            <param name=\"thisObject\">This pointer</param>\n            <param name=\"error\"> Error code returned by XAudio2. </param>\n            <unmanaged>void IXAudio2EngineCallback::OnCriticalError([None] HRESULT Error)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.XAudio2.ErrorEventArgs\">\n            <summary>\n            EventArgs used by <see cref=\"E:SharpDX.XAudio2.XAudio2.CriticalError\"/>.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.XAudio2.ErrorEventArgs.#ctor(SharpDX.Result)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.XAudio2.ErrorEventArgs\"/> class.\n            </summary>\n            <param name=\"errorCode\">The error code.</param>\n        </member>\n        <member name=\"P:SharpDX.XAudio2.ErrorEventArgs.ErrorCode\">\n            <summary>\n            Gets or sets the error code.\n            </summary>\n            <value>The error code.</value>\n        </member>\n        <member name=\"T:SharpDX.XAudio2.Fx.XAudio2FxContants\">\n            <summary>\n            XAudio2FxContants Functions.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.XAudio2.Fx.XAudio2FxContants.CLSID_AudioReverb\">\n            <summary>Constant None.</summary>\n        </member>\n        <member name=\"F:SharpDX.XAudio2.Fx.XAudio2FxContants.CLSID_AudioReverb_Debug\">\n            <summary>Constant None.</summary>\n        </member>\n        <member name=\"F:SharpDX.XAudio2.Fx.XAudio2FxContants.CLSID_AudioVolumeMeter\">\n            <summary>Constant None.</summary>\n        </member>\n        <member name=\"F:SharpDX.XAudio2.Fx.XAudio2FxContants.CLSID_AudioVolumeMeter_Debug\">\n            <summary>Constant None.</summary>\n        </member>\n        <member name=\"T:SharpDX.XAudio2.BufferFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_BUFFER_FLAGS']/*\"/>\t\n            <unmanaged>XAUDIO2_BUFFER_FLAGS</unmanaged>\t\n            <unmanaged-short>XAUDIO2_BUFFER_FLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.BufferFlags.EndOfStream\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_END_OF_STREAM']/*\"/>\t\n            <unmanaged>XAUDIO2_END_OF_STREAM</unmanaged>\t\n            <unmanaged-short>XAUDIO2_END_OF_STREAM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.BufferFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XAudio2.DeviceRole\">\n            <summary>\t\n            <p>Used in the <see cref=\"T:SharpDX.XAudio2.DeviceDetails\"/> structure to describe the role assigned to the device by the user.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The role represents the audio scenarios?such as voice communications or media playback?that use this device as the default device on which to play.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_DEVICE_ROLE']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.xaudio2.xaudio2_device_role</msdn-id>\t\n            <unmanaged>XAUDIO2_DEVICE_ROLE</unmanaged>\t\n            <unmanaged-short>XAUDIO2_DEVICE_ROLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.DeviceRole.NotDefaultDevice\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='NotDefaultDevice']/*\"/>\t\n            <unmanaged>NotDefaultDevice</unmanaged>\t\n            <unmanaged-short>NotDefaultDevice</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.DeviceRole.DefaultConsoleDevice\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DefaultConsoleDevice']/*\"/>\t\n            <unmanaged>DefaultConsoleDevice</unmanaged>\t\n            <unmanaged-short>DefaultConsoleDevice</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.DeviceRole.DefaultMultimediaDevice\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DefaultMultimediaDevice']/*\"/>\t\n            <unmanaged>DefaultMultimediaDevice</unmanaged>\t\n            <unmanaged-short>DefaultMultimediaDevice</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.DeviceRole.DefaultCommunicationsDevice\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DefaultCommunicationsDevice']/*\"/>\t\n            <unmanaged>DefaultCommunicationsDevice</unmanaged>\t\n            <unmanaged-short>DefaultCommunicationsDevice</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.DeviceRole.DefaultGameDevice\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='DefaultGameDevice']/*\"/>\t\n            <unmanaged>DefaultGameDevice</unmanaged>\t\n            <unmanaged-short>DefaultGameDevice</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.DeviceRole.GlobalDefaultDevice\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='GlobalDefaultDevice']/*\"/>\t\n            <unmanaged>GlobalDefaultDevice</unmanaged>\t\n            <unmanaged-short>GlobalDefaultDevice</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.DeviceRole.InvalidDeviceRole\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='InvalidDeviceRole']/*\"/>\t\n            <unmanaged>InvalidDeviceRole</unmanaged>\t\n            <unmanaged-short>InvalidDeviceRole</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XAudio2.FilterType\">\n            <summary>\t\n            Indicates whether a filter is low pass, band pass, high pass, or notch.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_FILTER_TYPE']/*\"/>\t\n            <msdn-id>ee419238</msdn-id>\t\n            <unmanaged>XAUDIO2_FILTER_TYPE</unmanaged>\t\n            <unmanaged-short>XAUDIO2_FILTER_TYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.FilterType.LowPassFilter\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='LowPassFilter']/*\"/>\t\n            <unmanaged>LowPassFilter</unmanaged>\t\n            <unmanaged-short>LowPassFilter</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.FilterType.BandPassFilter\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='BandPassFilter']/*\"/>\t\n            <unmanaged>BandPassFilter</unmanaged>\t\n            <unmanaged-short>BandPassFilter</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.FilterType.HighPassFilter\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HighPassFilter']/*\"/>\t\n            <unmanaged>HighPassFilter</unmanaged>\t\n            <unmanaged-short>HighPassFilter</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.FilterType.NotchFilter\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='NotchFilter']/*\"/>\t\n            <unmanaged>NotchFilter</unmanaged>\t\n            <unmanaged-short>NotchFilter</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XAudio2.LogType\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_LOG_TYPE']/*\"/>\t\n            <unmanaged>XAUDIO2_LOG_TYPE</unmanaged>\t\n            <unmanaged-short>XAUDIO2_LOG_TYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.LogType.Errors\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_LOG_ERRORS']/*\"/>\t\n            <unmanaged>XAUDIO2_LOG_ERRORS</unmanaged>\t\n            <unmanaged-short>XAUDIO2_LOG_ERRORS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.LogType.Warnings\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_LOG_WARNINGS']/*\"/>\t\n            <unmanaged>XAUDIO2_LOG_WARNINGS</unmanaged>\t\n            <unmanaged-short>XAUDIO2_LOG_WARNINGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.LogType.Information\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_LOG_INFO']/*\"/>\t\n            <unmanaged>XAUDIO2_LOG_INFO</unmanaged>\t\n            <unmanaged-short>XAUDIO2_LOG_INFO</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.LogType.Detail\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_LOG_DETAIL']/*\"/>\t\n            <unmanaged>XAUDIO2_LOG_DETAIL</unmanaged>\t\n            <unmanaged-short>XAUDIO2_LOG_DETAIL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.LogType.ApiCalls\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_LOG_API_CALLS']/*\"/>\t\n            <unmanaged>XAUDIO2_LOG_API_CALLS</unmanaged>\t\n            <unmanaged-short>XAUDIO2_LOG_API_CALLS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.LogType.FunctionCalls\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_LOG_FUNC_CALLS']/*\"/>\t\n            <unmanaged>XAUDIO2_LOG_FUNC_CALLS</unmanaged>\t\n            <unmanaged-short>XAUDIO2_LOG_FUNC_CALLS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.LogType.Timing\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_LOG_TIMING']/*\"/>\t\n            <unmanaged>XAUDIO2_LOG_TIMING</unmanaged>\t\n            <unmanaged-short>XAUDIO2_LOG_TIMING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.LogType.Locks\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_LOG_LOCKS']/*\"/>\t\n            <unmanaged>XAUDIO2_LOG_LOCKS</unmanaged>\t\n            <unmanaged-short>XAUDIO2_LOG_LOCKS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.LogType.Memory\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_LOG_MEMORY']/*\"/>\t\n            <unmanaged>XAUDIO2_LOG_MEMORY</unmanaged>\t\n            <unmanaged-short>XAUDIO2_LOG_MEMORY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.LogType.Streaming\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_LOG_STREAMING']/*\"/>\t\n            <unmanaged>XAUDIO2_LOG_STREAMING</unmanaged>\t\n            <unmanaged-short>XAUDIO2_LOG_STREAMING</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XAudio2.PlayFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_PLAY_FLAGS']/*\"/>\t\n            <unmanaged>XAUDIO2_PLAY_FLAGS</unmanaged>\t\n            <unmanaged-short>XAUDIO2_PLAY_FLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.PlayFlags.Tails\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_PLAY_TAILS']/*\"/>\t\n            <unmanaged>XAUDIO2_PLAY_TAILS</unmanaged>\t\n            <unmanaged-short>XAUDIO2_PLAY_TAILS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.PlayFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XAudio2.ProcessorSpecifier\">\n            <summary>\t\n            Windows-specific enumerator for available processors.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_WINDOWS_PROCESSOR_SPECIFIER']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.xaudio2.xaudio2_windows_processor_specifier</msdn-id>\t\n            <unmanaged>XAUDIO2_WINDOWS_PROCESSOR_SPECIFIER</unmanaged>\t\n            <unmanaged-short>XAUDIO2_WINDOWS_PROCESSOR_SPECIFIER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.ProcessorSpecifier.Processor1\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='Processor1']/*\"/>\t\n            <unmanaged>Processor1</unmanaged>\t\n            <unmanaged-short>Processor1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.ProcessorSpecifier.Processor2\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='Processor2']/*\"/>\t\n            <unmanaged>Processor2</unmanaged>\t\n            <unmanaged-short>Processor2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.ProcessorSpecifier.Processor3\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='Processor3']/*\"/>\t\n            <unmanaged>Processor3</unmanaged>\t\n            <unmanaged-short>Processor3</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.ProcessorSpecifier.Processor4\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='Processor4']/*\"/>\t\n            <unmanaged>Processor4</unmanaged>\t\n            <unmanaged-short>Processor4</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.ProcessorSpecifier.Processor5\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='Processor5']/*\"/>\t\n            <unmanaged>Processor5</unmanaged>\t\n            <unmanaged-short>Processor5</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.ProcessorSpecifier.Processor6\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='Processor6']/*\"/>\t\n            <unmanaged>Processor6</unmanaged>\t\n            <unmanaged-short>Processor6</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.ProcessorSpecifier.Processor7\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='Processor7']/*\"/>\t\n            <unmanaged>Processor7</unmanaged>\t\n            <unmanaged-short>Processor7</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.ProcessorSpecifier.Processor8\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='Processor8']/*\"/>\t\n            <unmanaged>Processor8</unmanaged>\t\n            <unmanaged-short>Processor8</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.ProcessorSpecifier.Processor9\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='Processor9']/*\"/>\t\n            <unmanaged>Processor9</unmanaged>\t\n            <unmanaged-short>Processor9</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.ProcessorSpecifier.Processor10\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='Processor10']/*\"/>\t\n            <unmanaged>Processor10</unmanaged>\t\n            <unmanaged-short>Processor10</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.ProcessorSpecifier.Processor11\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='Processor11']/*\"/>\t\n            <unmanaged>Processor11</unmanaged>\t\n            <unmanaged-short>Processor11</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.ProcessorSpecifier.Processor12\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='Processor12']/*\"/>\t\n            <unmanaged>Processor12</unmanaged>\t\n            <unmanaged-short>Processor12</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.ProcessorSpecifier.Processor13\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='Processor13']/*\"/>\t\n            <unmanaged>Processor13</unmanaged>\t\n            <unmanaged-short>Processor13</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.ProcessorSpecifier.Processor14\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='Processor14']/*\"/>\t\n            <unmanaged>Processor14</unmanaged>\t\n            <unmanaged-short>Processor14</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.ProcessorSpecifier.Processor15\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='Processor15']/*\"/>\t\n            <unmanaged>Processor15</unmanaged>\t\n            <unmanaged-short>Processor15</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.ProcessorSpecifier.Processor16\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='Processor16']/*\"/>\t\n            <unmanaged>Processor16</unmanaged>\t\n            <unmanaged-short>Processor16</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.ProcessorSpecifier.Processor17\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='Processor17']/*\"/>\t\n            <unmanaged>Processor17</unmanaged>\t\n            <unmanaged-short>Processor17</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.ProcessorSpecifier.Processor18\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='Processor18']/*\"/>\t\n            <unmanaged>Processor18</unmanaged>\t\n            <unmanaged-short>Processor18</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.ProcessorSpecifier.Processor19\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='Processor19']/*\"/>\t\n            <unmanaged>Processor19</unmanaged>\t\n            <unmanaged-short>Processor19</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.ProcessorSpecifier.Processor20\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='Processor20']/*\"/>\t\n            <unmanaged>Processor20</unmanaged>\t\n            <unmanaged-short>Processor20</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.ProcessorSpecifier.Processor21\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='Processor21']/*\"/>\t\n            <unmanaged>Processor21</unmanaged>\t\n            <unmanaged-short>Processor21</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.ProcessorSpecifier.Processor22\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='Processor22']/*\"/>\t\n            <unmanaged>Processor22</unmanaged>\t\n            <unmanaged-short>Processor22</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.ProcessorSpecifier.Processor23\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='Processor23']/*\"/>\t\n            <unmanaged>Processor23</unmanaged>\t\n            <unmanaged-short>Processor23</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.ProcessorSpecifier.Processor24\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='Processor24']/*\"/>\t\n            <unmanaged>Processor24</unmanaged>\t\n            <unmanaged-short>Processor24</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.ProcessorSpecifier.Processor25\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='Processor25']/*\"/>\t\n            <unmanaged>Processor25</unmanaged>\t\n            <unmanaged-short>Processor25</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.ProcessorSpecifier.Processor26\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='Processor26']/*\"/>\t\n            <unmanaged>Processor26</unmanaged>\t\n            <unmanaged-short>Processor26</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.ProcessorSpecifier.Processor27\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='Processor27']/*\"/>\t\n            <unmanaged>Processor27</unmanaged>\t\n            <unmanaged-short>Processor27</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.ProcessorSpecifier.Processor28\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='Processor28']/*\"/>\t\n            <unmanaged>Processor28</unmanaged>\t\n            <unmanaged-short>Processor28</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.ProcessorSpecifier.Processor29\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='Processor29']/*\"/>\t\n            <unmanaged>Processor29</unmanaged>\t\n            <unmanaged-short>Processor29</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.ProcessorSpecifier.Processor30\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='Processor30']/*\"/>\t\n            <unmanaged>Processor30</unmanaged>\t\n            <unmanaged-short>Processor30</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.ProcessorSpecifier.Processor31\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='Processor31']/*\"/>\t\n            <unmanaged>Processor31</unmanaged>\t\n            <unmanaged-short>Processor31</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.ProcessorSpecifier.Processor32\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='Processor32']/*\"/>\t\n            <unmanaged>Processor32</unmanaged>\t\n            <unmanaged-short>Processor32</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.ProcessorSpecifier.AnyProcessor\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_ANY_PROCESSOR']/*\"/>\t\n            <unmanaged>XAUDIO2_ANY_PROCESSOR</unmanaged>\t\n            <unmanaged-short>XAUDIO2_ANY_PROCESSOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.ProcessorSpecifier.DefaultProcessor\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_DEFAULT_PROCESSOR']/*\"/>\t\n            <unmanaged>XAUDIO2_DEFAULT_PROCESSOR</unmanaged>\t\n            <unmanaged-short>XAUDIO2_DEFAULT_PROCESSOR</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XAudio2.VoiceFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_VOICE_FLAGS']/*\"/>\t\n            <unmanaged>XAUDIO2_VOICE_FLAGS</unmanaged>\t\n            <unmanaged-short>XAUDIO2_VOICE_FLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.VoiceFlags.NoPitch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_VOICE_NOPITCH']/*\"/>\t\n            <unmanaged>XAUDIO2_VOICE_NOPITCH</unmanaged>\t\n            <unmanaged-short>XAUDIO2_VOICE_NOPITCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.VoiceFlags.NoSampleRateConversion\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_VOICE_NOSRC']/*\"/>\t\n            <unmanaged>XAUDIO2_VOICE_NOSRC</unmanaged>\t\n            <unmanaged-short>XAUDIO2_VOICE_NOSRC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.VoiceFlags.Music\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_VOICE_MUSIC']/*\"/>\t\n            <unmanaged>XAUDIO2_VOICE_MUSIC</unmanaged>\t\n            <unmanaged-short>XAUDIO2_VOICE_MUSIC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.VoiceFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XAudio2.VoiceSendFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_VOICE_SEND_FLAGS']/*\"/>\t\n            <unmanaged>XAUDIO2_VOICE_SEND_FLAGS</unmanaged>\t\n            <unmanaged-short>XAUDIO2_VOICE_SEND_FLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.VoiceSendFlags.UseFilter\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_VOICE_USEFILTER']/*\"/>\t\n            <unmanaged>XAUDIO2_VOICE_USEFILTER</unmanaged>\t\n            <unmanaged-short>XAUDIO2_VOICE_USEFILTER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.VoiceSendFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XAudio2.XAudio2Flags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_FLAGS']/*\"/>\t\n            <unmanaged>XAUDIO2_FLAGS</unmanaged>\t\n            <unmanaged-short>XAUDIO2_FLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.XAudio2Flags.DebugEngine\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_DEBUG_ENGINE']/*\"/>\t\n            <unmanaged>XAUDIO2_DEBUG_ENGINE</unmanaged>\t\n            <unmanaged-short>XAUDIO2_DEBUG_ENGINE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.XAudio2Flags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XAudio2.XAudio2Functions\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.XAudio2.XAudio2Functions']/*\"/>\t\n        </member>\n        <member name=\"T:SharpDX.XAudio2.Fx.ReverbI3DL2Parameters\">\n            <summary>\t\n            Describes I3DL2 (Interactive 3D Audio Rendering Guidelines Level 2.0) parameters for use in  theReverbConvertI3DL2ToNativefunction.\t\n            </summary>\t\n            <remarks>\t\n            <p>There are many preset values defined for the <strong><see cref=\"T:SharpDX.XAudio2.Fx.ReverbI3DL2Parameters\"/></strong> structure.  For more information, see XAUDIO2FX_I3DL2_PRESET.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2FX_REVERB_I3DL2_PARAMETERS']/*\"/>\t\n            <msdn-id>ee419220</msdn-id>\t\n            <unmanaged>XAUDIO2FX_REVERB_I3DL2_PARAMETERS</unmanaged>\t\n            <unmanaged-short>XAUDIO2FX_REVERB_I3DL2_PARAMETERS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.Fx.ReverbI3DL2Parameters.WetDryMix\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2FX_REVERB_I3DL2_PARAMETERS::WetDryMix']/*\"/>\t\n            <unmanaged>float WetDryMix</unmanaged>\t\n            <unmanaged-short>float WetDryMix</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.Fx.ReverbI3DL2Parameters.Room\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2FX_REVERB_I3DL2_PARAMETERS::Room']/*\"/>\t\n            <unmanaged>int Room</unmanaged>\t\n            <unmanaged-short>int Room</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.Fx.ReverbI3DL2Parameters.RoomHF\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2FX_REVERB_I3DL2_PARAMETERS::RoomHF']/*\"/>\t\n            <unmanaged>int RoomHF</unmanaged>\t\n            <unmanaged-short>int RoomHF</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.Fx.ReverbI3DL2Parameters.RoomRolloffFactor\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2FX_REVERB_I3DL2_PARAMETERS::RoomRolloffFactor']/*\"/>\t\n            <unmanaged>float RoomRolloffFactor</unmanaged>\t\n            <unmanaged-short>float RoomRolloffFactor</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.Fx.ReverbI3DL2Parameters.DecayTime\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2FX_REVERB_I3DL2_PARAMETERS::DecayTime']/*\"/>\t\n            <unmanaged>float DecayTime</unmanaged>\t\n            <unmanaged-short>float DecayTime</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.Fx.ReverbI3DL2Parameters.DecayHFRatio\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2FX_REVERB_I3DL2_PARAMETERS::DecayHFRatio']/*\"/>\t\n            <unmanaged>float DecayHFRatio</unmanaged>\t\n            <unmanaged-short>float DecayHFRatio</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.Fx.ReverbI3DL2Parameters.Reflections\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2FX_REVERB_I3DL2_PARAMETERS::Reflections']/*\"/>\t\n            <unmanaged>int Reflections</unmanaged>\t\n            <unmanaged-short>int Reflections</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.Fx.ReverbI3DL2Parameters.ReflectionsDelay\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2FX_REVERB_I3DL2_PARAMETERS::ReflectionsDelay']/*\"/>\t\n            <unmanaged>float ReflectionsDelay</unmanaged>\t\n            <unmanaged-short>float ReflectionsDelay</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.Fx.ReverbI3DL2Parameters.Reverb\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2FX_REVERB_I3DL2_PARAMETERS::Reverb']/*\"/>\t\n            <unmanaged>int Reverb</unmanaged>\t\n            <unmanaged-short>int Reverb</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.Fx.ReverbI3DL2Parameters.ReverbDelay\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2FX_REVERB_I3DL2_PARAMETERS::ReverbDelay']/*\"/>\t\n            <unmanaged>float ReverbDelay</unmanaged>\t\n            <unmanaged-short>float ReverbDelay</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.Fx.ReverbI3DL2Parameters.Diffusion\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2FX_REVERB_I3DL2_PARAMETERS::Diffusion']/*\"/>\t\n            <unmanaged>float Diffusion</unmanaged>\t\n            <unmanaged-short>float Diffusion</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.Fx.ReverbI3DL2Parameters.Density\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2FX_REVERB_I3DL2_PARAMETERS::Density']/*\"/>\t\n            <unmanaged>float Density</unmanaged>\t\n            <unmanaged-short>float Density</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.Fx.ReverbI3DL2Parameters.HFReference\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2FX_REVERB_I3DL2_PARAMETERS::HFReference']/*\"/>\t\n            <unmanaged>float HFReference</unmanaged>\t\n            <unmanaged-short>float HFReference</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XAudio2.Fx.ReverbParameters\">\n            <summary>\t\n            Describes parameters for use in the reverb APO.\t\n            </summary>\t\n            <remarks>\t\n            <p>All parameters related to sampling rate or time are relative to a 48kHz voice and  must be scaled for use with other sampling rates.  For example, setting <strong>ReflectionsDelay</strong> to 300ms gives a true 300ms delay when the reverb is hosted in a 48kHz voice,  but becomes a 150ms delay when hosted in a 24kHz voice.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2FX_REVERB_PARAMETERS']/*\"/>\t\n            <msdn-id>ee419224</msdn-id>\t\n            <unmanaged>XAUDIO2FX_REVERB_PARAMETERS</unmanaged>\t\n            <unmanaged-short>XAUDIO2FX_REVERB_PARAMETERS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.Fx.ReverbParameters.WetDryMix\">\n            <summary>\t\n            <dd> Percentage of the output that will be reverb. Allowable values are from 0 to 100. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2FX_REVERB_PARAMETERS::WetDryMix']/*\"/>\t\n            <msdn-id>ee419224</msdn-id>\t\n            <unmanaged>float WetDryMix</unmanaged>\t\n            <unmanaged-short>float WetDryMix</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.Fx.ReverbParameters.ReflectionsDelay\">\n            <summary>\t\n            <dd> The delay time of the first reflection relative to the direct path. Permitted range is from 0 to 300 milliseconds. <table><tr><th>Note </th></tr><tr><td>All parameters related to sampling rate or time are relative to a 48kHz sampling rate and must be scaled for use with other sampling rates.  See remarks section below for additional information.</td></tr></table> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2FX_REVERB_PARAMETERS::ReflectionsDelay']/*\"/>\t\n            <msdn-id>ee419224</msdn-id>\t\n            <unmanaged>unsigned int ReflectionsDelay</unmanaged>\t\n            <unmanaged-short>unsigned int ReflectionsDelay</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.Fx.ReverbParameters.ReverbDelay\">\n            <summary>\t\n            <dd> Delay of reverb relative to the first reflection. Permitted range is from 0 to 85 milliseconds. <table><tr><th>Note </th></tr><tr><td>All parameters related to sampling rate or time are relative to a 48kHz sampling rate and must be scaled for use with other sampling rates.  See remarks section below for additional information.</td></tr></table> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2FX_REVERB_PARAMETERS::ReverbDelay']/*\"/>\t\n            <msdn-id>ee419224</msdn-id>\t\n            <unmanaged>unsigned char ReverbDelay</unmanaged>\t\n            <unmanaged-short>unsigned char ReverbDelay</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.Fx.ReverbParameters.RearDelay\">\n            <summary>\t\n            <dd> Delay for the left rear output and right rear output. Permitted range is from 0 to 5 milliseconds. <table><tr><th>Note </th></tr><tr><td>All parameters related to sampling rate or time are relative to a 48kHz sampling rate and must be scaled for use with other sampling rates.  See remarks section below for additional information.</td></tr></table> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2FX_REVERB_PARAMETERS::RearDelay']/*\"/>\t\n            <msdn-id>ee419224</msdn-id>\t\n            <unmanaged>unsigned char RearDelay</unmanaged>\t\n            <unmanaged-short>unsigned char RearDelay</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.Fx.ReverbParameters.PositionLeft\">\n            <summary>\t\n            <dd> Position of the left input within the simulated space relative to the listener.  With <strong>PositionLeft</strong> set to the minimum value, the left input is placed close  to the listener. In this position, early reflections are dominant, and the reverb decay  is set back in the sound field and reduced in amplitude. With <strong>PositionLeft</strong> set to the maximum value, the left input is placed at a maximum distance from the listener  within the simulated room. <strong>PositionLeft</strong> does not affect the reverb decay time  (liveness of the room), only the apparent position of the source relative to the listener.  Permitted range is from 0 to 30 (no units). </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2FX_REVERB_PARAMETERS::PositionLeft']/*\"/>\t\n            <msdn-id>ee419224</msdn-id>\t\n            <unmanaged>unsigned char PositionLeft</unmanaged>\t\n            <unmanaged-short>unsigned char PositionLeft</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.Fx.ReverbParameters.PositionRight\">\n            <summary>\t\n            <dd> Same as <strong>PositionLeft</strong>, but affecting only the right input.  Permitted range is from 0 to 30 (no units). <table><tr><th>Note </th></tr><tr><td><strong>PositionRight</strong> is ignored in mono-in/mono-out mode.</td></tr></table> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2FX_REVERB_PARAMETERS::PositionRight']/*\"/>\t\n            <msdn-id>ee419224</msdn-id>\t\n            <unmanaged>unsigned char PositionRight</unmanaged>\t\n            <unmanaged-short>unsigned char PositionRight</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.Fx.ReverbParameters.PositionMatrixLeft\">\n            <summary>\t\n            <dd> Gives a greater or lesser impression of distance from the source to the listener.  Permitted range is from 0 to 30 (no units). </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2FX_REVERB_PARAMETERS::PositionMatrixLeft']/*\"/>\t\n            <msdn-id>ee419224</msdn-id>\t\n            <unmanaged>unsigned char PositionMatrixLeft</unmanaged>\t\n            <unmanaged-short>unsigned char PositionMatrixLeft</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.Fx.ReverbParameters.PositionMatrixRight\">\n            <summary>\t\n            <dd> Gives a greater or lesser impression of distance from the source to the listener.  Permitted range is from 0 to 30 (no units). <table><tr><th>Note </th></tr><tr><td><strong>PositionMatrixRight</strong> is ignored in mono-in/mono-out mode.</td></tr></table> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2FX_REVERB_PARAMETERS::PositionMatrixRight']/*\"/>\t\n            <msdn-id>ee419224</msdn-id>\t\n            <unmanaged>unsigned char PositionMatrixRight</unmanaged>\t\n            <unmanaged-short>unsigned char PositionMatrixRight</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.Fx.ReverbParameters.EarlyDiffusion\">\n            <summary>\t\n            <dd> Controls the character of the individual wall reflections. Set to minimum value  to simulate a hard flat surface and to maximum value to simulate a diffuse surface.  Permitted range is from 0 to 15 (no units). </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2FX_REVERB_PARAMETERS::EarlyDiffusion']/*\"/>\t\n            <msdn-id>ee419224</msdn-id>\t\n            <unmanaged>unsigned char EarlyDiffusion</unmanaged>\t\n            <unmanaged-short>unsigned char EarlyDiffusion</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.Fx.ReverbParameters.LateDiffusion\">\n            <summary>\t\n            <dd> Controls the character of the individual wall reverberations. Set to minimum value  to simulate a hard flat surface and to maximum value to simulate a diffuse surface.  Permitted range is from 0 to 15 (no units). </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2FX_REVERB_PARAMETERS::LateDiffusion']/*\"/>\t\n            <msdn-id>ee419224</msdn-id>\t\n            <unmanaged>unsigned char LateDiffusion</unmanaged>\t\n            <unmanaged-short>unsigned char LateDiffusion</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.Fx.ReverbParameters.LowEQGain\">\n            <summary>\t\n            <dd> Adjusts the decay time of low frequencies relative to the decay time at 1 kHz.  The values correspond to dB of gain as follows: <table> <tr><th>Value</th><td>0</td><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td>6</td><td>7</td><td>8</td><td>9</td><td>10</td><td>11</td><td>12</td></tr> <tr><th>Gain (dB)</th><td>-8</td><td>-7</td><td>-6</td><td>-5</td><td>-4</td><td>-3</td><td>-2</td><td>-1</td><td>0</td><td>+1</td><td>+2</td><td>+3</td><td>+4</td></tr> </table> <p>Note that a <strong>LowEQGain</strong> value of 8 results in the decay time  of low frequencies being equal to the decay time at 1 kHz. Permitted range  is from 0 to 12 (no units).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2FX_REVERB_PARAMETERS::LowEQGain']/*\"/>\t\n            <msdn-id>ee419224</msdn-id>\t\n            <unmanaged>unsigned char LowEQGain</unmanaged>\t\n            <unmanaged-short>unsigned char LowEQGain</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.Fx.ReverbParameters.LowEQCutoff\">\n            <summary>\t\n            <dd> Sets the corner frequency of the low pass filter that is controlled  by the <strong>LowEQGain</strong> parameter. The values correspond to frequency in Hz as follows: <table> <tr><th>Value</th><td>0</td><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td>6</td><td>7</td><td>8</td><td>9</td></tr> <tr><th>Frequency (Hz)</th><td>50</td><td>100</td><td>150</td><td>200</td><td>250</td><td>300</td><td>350</td><td>400</td><td>450</td><td>500</td></tr> </table> <p>Permitted range is from 0 to 9 (no units).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2FX_REVERB_PARAMETERS::LowEQCutoff']/*\"/>\t\n            <msdn-id>ee419224</msdn-id>\t\n            <unmanaged>unsigned char LowEQCutoff</unmanaged>\t\n            <unmanaged-short>unsigned char LowEQCutoff</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.Fx.ReverbParameters.HighEQGain\">\n            <summary>\t\n            <dd> Adjusts the decay time of high frequencies relative to the decay time at 1 kHz.  When set to zero, high frequencies decay at the same rate as 1 kHz. When set to maximum value,  high frequencies decay at a much faster rate than 1 kHz. <table> <tr><th>Value</th><td>0</td><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td>6</td><td>7</td><td>8</td></tr> <tr><th>Gain (dB)</th><td>-8</td><td>-7</td><td>-6</td><td>-5</td><td>-4</td><td>-3</td><td>-2</td><td>-1</td><td>0</td></tr> </table> <p>Permitted range is from 0 to 8 (no units).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2FX_REVERB_PARAMETERS::HighEQGain']/*\"/>\t\n            <msdn-id>ee419224</msdn-id>\t\n            <unmanaged>unsigned char HighEQGain</unmanaged>\t\n            <unmanaged-short>unsigned char HighEQGain</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.Fx.ReverbParameters.HighEQCutoff\">\n            <summary>\t\n            <dd> Sets the corner frequency of the high pass filter that is controlled  by the <strong>HighEQGain</strong> parameter. The values correspond to frequency in kHz as follows: <table> <tr><th>Value</th><td>0</td><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td>6</td><td>7</td><td>8</td><td>9</td><td>10</td><td>11</td><td>12</td><td>13</td><td>14</td></tr> <tr><th>Frequency (kHz)</th><td>1</td><td>1.5</td><td>2</td><td>2.5</td><td>3</td><td>3.5</td><td>4</td><td>4.5</td><td>5</td><td>5.5</td><td>6</td><td>6.5</td><td>7</td><td>7.5</td><td>8</td></tr> </table> <p>Permitted range is from 0 to 14 (no units).</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2FX_REVERB_PARAMETERS::HighEQCutoff']/*\"/>\t\n            <msdn-id>ee419224</msdn-id>\t\n            <unmanaged>unsigned char HighEQCutoff</unmanaged>\t\n            <unmanaged-short>unsigned char HighEQCutoff</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.Fx.ReverbParameters.RoomFilterFreq\">\n            <summary>\t\n            <dd> Sets the corner frequency of the low pass filter for the room effect. Permitted range is from 20 to 20,000 Hz. <table><tr><th>Note </th></tr><tr><td>All parameters related to sampling rate or time are relative to a 48kHz sampling rate and must be scaled for use with other sampling rates.  See remarks section below for additional information.</td></tr></table> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2FX_REVERB_PARAMETERS::RoomFilterFreq']/*\"/>\t\n            <msdn-id>ee419224</msdn-id>\t\n            <unmanaged>float RoomFilterFreq</unmanaged>\t\n            <unmanaged-short>float RoomFilterFreq</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.Fx.ReverbParameters.RoomFilterMain\">\n            <summary>\t\n            <dd> Sets the pass band intensity level of the low-pass filter for both the early reflections  and the late field reverberation. Permitted range is from -100 to 0 dB. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2FX_REVERB_PARAMETERS::RoomFilterMain']/*\"/>\t\n            <msdn-id>ee419224</msdn-id>\t\n            <unmanaged>float RoomFilterMain</unmanaged>\t\n            <unmanaged-short>float RoomFilterMain</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.Fx.ReverbParameters.RoomFilterHF\">\n            <summary>\t\n            <dd> Sets the intensity of the low-pass filter for both the early reflections  and the late field reverberation at the corner frequency (<strong>RoomFilterFreq</strong>).  Permitted range is from -100 to 0 dB. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2FX_REVERB_PARAMETERS::RoomFilterHF']/*\"/>\t\n            <msdn-id>ee419224</msdn-id>\t\n            <unmanaged>float RoomFilterHF</unmanaged>\t\n            <unmanaged-short>float RoomFilterHF</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.Fx.ReverbParameters.ReflectionsGain\">\n            <summary>\t\n            <dd> Adjusts the intensity of the early reflections. Permitted range is from -100 to 20 dB. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2FX_REVERB_PARAMETERS::ReflectionsGain']/*\"/>\t\n            <msdn-id>ee419224</msdn-id>\t\n            <unmanaged>float ReflectionsGain</unmanaged>\t\n            <unmanaged-short>float ReflectionsGain</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.Fx.ReverbParameters.ReverbGain\">\n            <summary>\t\n            <dd> Adjusts the intensity of the reverberations. Permitted range is from -100 to 20 dB. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2FX_REVERB_PARAMETERS::ReverbGain']/*\"/>\t\n            <msdn-id>ee419224</msdn-id>\t\n            <unmanaged>float ReverbGain</unmanaged>\t\n            <unmanaged-short>float ReverbGain</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.Fx.ReverbParameters.DecayTime\">\n            <summary>\t\n            <dd> Reverberation decay time at 1 kHz. This is the time that a full scale input signal decays  by 60 dB. Permitted range is from 0.1 to infinity seconds. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2FX_REVERB_PARAMETERS::DecayTime']/*\"/>\t\n            <msdn-id>ee419224</msdn-id>\t\n            <unmanaged>float DecayTime</unmanaged>\t\n            <unmanaged-short>float DecayTime</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.Fx.ReverbParameters.Density\">\n            <summary>\t\n            <dd> Controls the modal density in the late field reverberation. For colorless spaces,  <strong>Density</strong> should be set to the maximum value (100). As <strong>Density</strong> is decreased, the sound becomes hollow (comb filtered). This is an effect that can be useful  if you are trying to model a silo. Permitted range as a percentage is from 0 to 100. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2FX_REVERB_PARAMETERS::Density']/*\"/>\t\n            <msdn-id>ee419224</msdn-id>\t\n            <unmanaged>float Density</unmanaged>\t\n            <unmanaged-short>float Density</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.Fx.ReverbParameters.RoomSize\">\n            <summary>\t\n            <dd> The apparent size of the acoustic space. Permitted range is from 1 to 100 feet. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2FX_REVERB_PARAMETERS::RoomSize']/*\"/>\t\n            <msdn-id>ee419224</msdn-id>\t\n            <unmanaged>float RoomSize</unmanaged>\t\n            <unmanaged-short>float RoomSize</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XAudio2.Fx.VolumeMeterLevels\">\n            <summary>\t\n            Describes parameters for use with the volume meter APO.\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure is used with the XAudio2 <see cref=\"M:SharpDX.XAudio2.Voice.GetEffectParameters(System.Int32,System.IntPtr,System.Int32)\"/> method.</p> <p><strong>pPeakLevels</strong> and <strong>pRMSLevels</strong> are not returned by <see cref=\"M:SharpDX.XAudio2.Voice.GetEffectParameters(System.Int32,System.IntPtr,System.Int32)\"/>, the arrays are only filled out if they are present. If <strong>pPeakLevels</strong> and <strong>pRMSLevels</strong> are used they must be allocated by the application. The application is responsible for freeing the arrays when they are no longer needed.</p> <p><strong>ChannelCount</strong> must be set by the application to match the number of channels in the voice the effect is applied to.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2FX_VOLUMEMETER_LEVELS']/*\"/>\t\n            <msdn-id>ee419225</msdn-id>\t\n            <unmanaged>XAUDIO2FX_VOLUMEMETER_LEVELS</unmanaged>\t\n            <unmanaged-short>XAUDIO2FX_VOLUMEMETER_LEVELS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.Fx.VolumeMeterLevels.PeakLevelPointer\">\n            <summary>\t\n            <dd> Array that will be filled with the maximum absolute level for each channel during a processing pass. The array must be at least <strong>ChannelCount</strong> ? sizeof(float) bytes. <strong>pPeakLevels</strong> may be <c>null</c> if <strong>pRMSLevels</strong> is not <c>null</c>. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2FX_VOLUMEMETER_LEVELS::pPeakLevels']/*\"/>\t\n            <msdn-id>ee419225</msdn-id>\t\n            <unmanaged>float* pPeakLevels</unmanaged>\t\n            <unmanaged-short>float pPeakLevels</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.Fx.VolumeMeterLevels.RmsLevelsPointer\">\n            <summary>\t\n            <dd> Array that will be filled with root mean square level for each channel during a processing pass. The array must be at least <strong>ChannelCount</strong> ? sizeof(float) bytes. <strong>pRMSLevels</strong> may be <c>null</c> if <strong>pPeakLevels</strong> is not <c>null</c>. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2FX_VOLUMEMETER_LEVELS::pRMSLevels']/*\"/>\t\n            <msdn-id>ee419225</msdn-id>\t\n            <unmanaged>float* pRMSLevels</unmanaged>\t\n            <unmanaged-short>float pRMSLevels</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.Fx.VolumeMeterLevels.ChannelCount\">\n            <summary>\t\n            <dd> Number of channels being processed. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2FX_VOLUMEMETER_LEVELS::ChannelCount']/*\"/>\t\n            <msdn-id>ee419225</msdn-id>\t\n            <unmanaged>unsigned int ChannelCount</unmanaged>\t\n            <unmanaged-short>unsigned int ChannelCount</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XAudio2.MasteringVoice\">\n            <summary>\t\n            A mastering voice is used to represent the audio output device. Data buffers cannot be submitted directly to mastering voices, but data submitted to other types of voices must be directed to a mastering voice to be heard.<p><strong><see cref=\"T:SharpDX.XAudio2.MasteringVoice\"/></strong> inherits directly from <see cref=\"T:SharpDX.XAudio2.Voice\"/>, but does not implement methods specific to mastering voices. The interface type exists solely because some of the base class methods are implemented differently for mastering voices. Having a separate type for these voices helps client code to distinguish the different voice types and to benefit from C++ type safety.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXAudio2MasteringVoice']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.ixaudio2masteringvoice.ixaudio2masteringvoice</msdn-id>\t\n            <unmanaged>IXAudio2MasteringVoice</unmanaged>\t\n            <unmanaged-short>IXAudio2MasteringVoice</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XAudio2.Voice\">\n            <summary>\t\n            Sets the volume level of each channel of the final output for the voice. These channels are mapped to the input channels of a specified destination voice.\t\n            </summary>\t\n            <remarks>\t\n            <p>This method is valid only for source and submix voices, because mastering voices write directly to the device with no matrix mixing.</p> <p>Volume levels are expressed as floating-point amplitude multipliers between -<see cref=\"F:SharpDX.XAudio2.XAudio2.MaximumVolumeLevel\"/> and <see cref=\"F:SharpDX.XAudio2.XAudio2.MaximumVolumeLevel\"/> (-224 to 224), with a maximum gain of 144.5 dB. A volume level of 1.0 means there is no attenuation or gain and 0 means silence. Negative levels can be used to invert the audio's phase. See XAudio2 Volume and Pitch Control for additional information on volume control.</p> <p></p> <p>The X3DAudio function <see cref=\"M:SharpDX.X3DAudio.X3DAudio.X3DAudioCalculate(SharpDX.X3DAudio.X3DAudioHandle@,SharpDX.X3DAudio.Listener,SharpDX.X3DAudio.Emitter,SharpDX.X3DAudio.CalculateFlags,System.IntPtr)\"/> can produce an output matrix for use with <strong>SetOutputMatrix</strong> based on a sound's position and a listener's position.</p> <table><tr><th>Note </th></tr><tr><td><see cref=\"M:SharpDX.XAudio2.Voice.GetOutputMatrix(SharpDX.XAudio2.Voice,System.Int32,System.Int32,System.Single[])\"/> always returns the levels most recently set by <see cref=\"M:SharpDX.XAudio2.Voice.SetOutputMatrix(SharpDX.XAudio2.Voice,System.Int32,System.Int32,System.Single[],System.Int32)\"/>. However, they may not actually be in effect yet: they only take effect the next time the audio engine runs after the <see cref=\"M:SharpDX.XAudio2.Voice.SetOutputMatrix(SharpDX.XAudio2.Voice,System.Int32,System.Int32,System.Single[],System.Int32)\"/> call (or after the corresponding <see cref=\"M:SharpDX.XAudio2.XAudio2.CommitChanges(System.Int32)\"/> call, if <see cref=\"M:SharpDX.XAudio2.Voice.SetOutputMatrix(SharpDX.XAudio2.Voice,System.Int32,System.Int32,System.Single[],System.Int32)\"/> was called with a deferred operation ID).</td></tr></table>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXAudio2Voice']/*\"/>\t\n            <msdn-id>ee418598</msdn-id>\t\n            <unmanaged>IXAudio2Voice</unmanaged>\t\n            <unmanaged-short>IXAudio2Voice</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XAudio2.Voice.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.XAudio2.Voice\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.XAudio2.Voice.op_Explicit(System.IntPtr)~SharpDX.XAudio2.Voice\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.XAudio2.Voice\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.XAudio2.Voice.GetVoiceDetails(SharpDX.XAudio2.VoiceDetails@)\">\n            <summary>\t\n            Returns information about the creation flags, input channels, and sample rate of a voice.\t\n            </summary>\t\n            <param name=\"voiceDetailsRef\"><dd>[in, out]  <see cref=\"T:SharpDX.XAudio2.VoiceDetails\"/> structure containing information about the voice. </dd></param>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXAudio2Voice::GetVoiceDetails']/*\"/>\t\n            <msdn-id>ee418591</msdn-id>\t\n            <unmanaged>void IXAudio2Voice::GetVoiceDetails([Out] XAUDIO2_VOICE_DETAILS* pVoiceDetails)</unmanaged>\t\n            <unmanaged-short>IXAudio2Voice::GetVoiceDetails</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XAudio2.Voice.SetOutputVoices(System.Nullable{SharpDX.XAudio2.VoiceSendDescriptors})\">\n            <summary>\t\n            Designates a new set of submix or mastering voices to receive the output of the voice.\t\n            </summary>\t\n            <param name=\"sendListRef\"><dd>[in]  Array of <see cref=\"T:SharpDX.XAudio2.VoiceSendDescriptors\"/> structure references to destination voices. If <em>pSendList</em> is <c>null</c>, the voice will send its output to the current mastering voice. To set the voice to not send its output anywhere set the <strong>OutputCount</strong> member of <see cref=\"T:SharpDX.XAudio2.VoiceSendDescriptors\"/> to 0. All of the voices in a send list must have the same input sample rate, see XAudio2 Sample Rate Conversions for additional information. </dd></param>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful, an error code otherwise. See XAudio2 Error Codes for descriptions of XAudio2 specific error codes.</p></returns>\t\n            <remarks>\t\n            <p>This method is only valid for source and submix voices. Mastering voices can not send audio to another voice.</p> <p>After calling <strong>SetOutputVoices</strong> a voice's current send levels will be replaced by a default send matrix. The <see cref=\"M:SharpDX.XAudio2.Voice.SetOutputMatrix(SharpDX.XAudio2.Voice,System.Int32,System.Int32,System.Single[],System.Int32)\"/> method must be called to set a custom matrix for the new sendlist.</p> <p>It is illegal to call <strong>SetOutputVoices</strong> from within a callback. If <strong>SetOutputVoices</strong> is called within a callback XAUDIO2_E_INVALID_CALL will be returned.</p> <table><tr><th>Note </th></tr><tr><td>Calling <strong>SetOutputVoices</strong> invalidates any send matrices previously set with <see cref=\"M:SharpDX.XAudio2.Voice.SetOutputMatrix(SharpDX.XAudio2.Voice,System.Int32,System.Int32,System.Single[],System.Int32)\"/>.</td></tr></table>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXAudio2Voice::SetOutputVoices']/*\"/>\t\n            <msdn-id>ee418599</msdn-id>\t\n            <unmanaged>HRESULT IXAudio2Voice::SetOutputVoices([In, Optional] const XAUDIO2_VOICE_SENDS* pSendList)</unmanaged>\t\n            <unmanaged-short>IXAudio2Voice::SetOutputVoices</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XAudio2.Voice.SetEffectChain(System.Nullable{SharpDX.XAudio2.EffectChain})\">\n            <summary>\t\n            Replaces the effect chain of the voice.\t\n            </summary>\t\n            <param name=\"effectChainRef\"><dd>[in, optional]  Pointer to an <see cref=\"T:SharpDX.XAudio2.EffectChain\"/> structure that describes the new effect chain to use. If <c>null</c> is passed, the current effect chain is removed. <table><tr><th>Note </th></tr><tr><td>If <em>pEffectChain</em> is non-<c>null</c>, the <see cref=\"T:SharpDX.XAudio2.EffectChain\"/> structure that it points to must specify at least one effect.</td></tr></table> </dd></param>\t\n            <returns><p> Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful; otherwise, an error code. </p> <p> See XAudio2 Error Codes for descriptions of XAudio2 specific error codes.</p></returns>\t\n            <remarks>\t\n            <p>The number of output channels allowed for a voice's effect chain is locked at creation of the voice.  If you create the voice with an effect chain, any new effect chain passed to <strong>SetEffectChain</strong> must have  the same number of input and output channels as the original effect chain.  If you create the voice without an effect chain, the number of output channels  allowed for the effect chain will default to the number of input channels for the voice.   If any part of effect chain creation fails, none of it is applied.</p> <p>After you attach an effect to an XAudio2 voice, XAudio2 takes control of the effect, and the client should not make any further calls to it. The simplest way to ensure this  is to release all references to the effect.</p> <p>It is illegal to call <strong>SetEffectChain</strong> from within a callback. If you call <strong>SetEffectChain</strong> within a callback, XAUDIO2_E_INVALID_CALL is returned.</p> <p>The <see cref=\"T:SharpDX.XAudio2.EffectChain\"/> that is passed in  as the <em>pEffectChain</em> argument and any <see cref=\"T:SharpDX.XAudio2.EffectDescriptor\"/> information  contained within it are no longer needed after <strong>SetEffectChain</strong> successfully completes,  and may be deleted immediately after <strong>SetEffectChain</strong> is called.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXAudio2Voice::SetEffectChain']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.ixaudio2voice.ixaudio2voice.seteffectchain</msdn-id>\t\n            <unmanaged>HRESULT IXAudio2Voice::SetEffectChain([In, Optional] const XAUDIO2_EFFECT_CHAIN* pEffectChain)</unmanaged>\t\n            <unmanaged-short>IXAudio2Voice::SetEffectChain</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XAudio2.Voice.EnableEffect(System.Int32,System.Int32)\">\n            <summary>\t\n            Enables the effect at a given position in the effect chain of the voice.\t\n            </summary>\t\n            <param name=\"effectIndex\"><dd>[in]  Zero-based index of an effect in the effect chain of the voice. </dd></param>\t\n            <param name=\"operationSet\"><dd>[in]  Identifies this call as part of a deferred batch. See the XAudio2 Operation Sets overview for more information. </dd></param>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful; otherwise, an error code.  See XAudio2 Error Codes for descriptions of error codes.</p></returns>\t\n            <remarks>\t\n            <p>Be careful when you enable an effect while the voice that hosts it is running.  Such an action can result in a problem if the effect significantly changes the audio's pitch or volume.</p> <p> The effects in a given XAudio2 voice's effect chain must consume and produce audio at that voice's processing sample rate. The only aspect of the audio format they can change is the channel count. For example a reverb effect can convert mono data to 5.1. The client can use the <see cref=\"T:SharpDX.XAudio2.EffectDescriptor\"/> structure's  <strong>OutputChannels</strong> field to specify the number of channels it wants each effect to produce. Each effect in an effect chain must produce a number of channels that the next effect can consume.  Any calls to <see cref=\"M:SharpDX.XAudio2.Voice.EnableEffect(System.Int32,System.Int32)\"/> or <see cref=\"M:SharpDX.XAudio2.Voice.DisableEffect(System.Int32,System.Int32)\"/> that would make the effect chain stop fulfilling these requirements will fail.</p> <p><strong>EnableEffect</strong> takes effect immediately when you call it from an XAudio2 callback with an <em>OperationSet</em> of <strong><see cref=\"F:SharpDX.XAudio2.XAudio2.CommitNow\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXAudio2Voice::EnableEffect']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.ixaudio2voice.ixaudio2voice.enableeffect</msdn-id>\t\n            <unmanaged>HRESULT IXAudio2Voice::EnableEffect([In] unsigned int EffectIndex,[In] unsigned int OperationSet)</unmanaged>\t\n            <unmanaged-short>IXAudio2Voice::EnableEffect</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XAudio2.Voice.DisableEffect(System.Int32,System.Int32)\">\n            <summary>\t\n            Disables the effect at a given position in the effect chain of the voice.\t\n            </summary>\t\n            <param name=\"effectIndex\"><dd>[in]  Zero-based index of an effect in the effect chain of the voice. </dd></param>\t\n            <param name=\"operationSet\"><dd>[in]  Identifies this call as part of a deferred batch. See the XAudio2 Operation Sets overview for more information. </dd></param>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful; otherwise, an error code. See XAudio2 Error Codes for descriptions of valid error codes.</p></returns>\t\n            <remarks>\t\n            <p>The effects in a given XAudio2 voice's effect chain must consume and produce audio  at that voice's processing sample rate. The only aspect of the audio format they can change  is the channel count. For example a reverb effect can convert mono data to 5.1.  The client can use the <see cref=\"T:SharpDX.XAudio2.EffectDescriptor\"/> structure's  <strong>OutputChannels</strong> field to specify the number of channels it wants each effect to produce.  Each effect in an effect chain must produce a number of channels that the next effect can consume.  Any calls to <see cref=\"M:SharpDX.XAudio2.Voice.EnableEffect(System.Int32,System.Int32)\"/> or <see cref=\"M:SharpDX.XAudio2.Voice.DisableEffect(System.Int32,System.Int32)\"/> that would make  the effect chain stop fulfilling these requirements will fail.</p> <p>Disabling an effect immediately removes it from the processing graph.  Any pending audio in the effect?such as a reverb tail?is not played.  Be careful disabling an effect while the voice that hosts it is running. This can result  in an audible artifact if the effect significantly changes the audio's pitch or volume.</p> <p><strong>DisableEffect</strong> takes effect immediately when called from an XAudio2 callback  with an <em>OperationSet</em> of <strong><see cref=\"F:SharpDX.XAudio2.XAudio2.CommitNow\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXAudio2Voice::DisableEffect']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.ixaudio2voice.ixaudio2voice.disableeffect</msdn-id>\t\n            <unmanaged>HRESULT IXAudio2Voice::DisableEffect([In] unsigned int EffectIndex,[In] unsigned int OperationSet)</unmanaged>\t\n            <unmanaged-short>IXAudio2Voice::DisableEffect</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XAudio2.Voice.IsEffectEnabled(System.Int32)\">\n            <summary>\t\n            Returns the running state of the effect at a specified position in the effect chain of the voice.\t\n            </summary>\t\n            <param name=\"effectIndex\"><dd>[in]  Zero-based index of an effect in the effect chain of the voice. </dd></param>\t\n            <remarks>\t\n            <p><strong>GetEffectState</strong> always returns the effect's actual current state.  However, this may not be the state set by the most recent  <see cref=\"M:SharpDX.XAudio2.Voice.EnableEffect(System.Int32,System.Int32)\"/> or <see cref=\"M:SharpDX.XAudio2.Voice.DisableEffect(System.Int32,System.Int32)\"/> call: the actual state is only changed the next time  the audio engine runs after the <see cref=\"M:SharpDX.XAudio2.Voice.EnableEffect(System.Int32,System.Int32)\"/> or <see cref=\"M:SharpDX.XAudio2.Voice.DisableEffect(System.Int32,System.Int32)\"/> call (or after the corresponding  <see cref=\"M:SharpDX.XAudio2.XAudio2.CommitChanges(System.Int32)\"/> call, if EnableEffect/DisableEffect was called with a deferred operation ID).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXAudio2Voice::GetEffectState']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.ixaudio2voice.ixaudio2voice.geteffectstate</msdn-id>\t\n            <unmanaged>void IXAudio2Voice::GetEffectState([In] unsigned int EffectIndex,[Out] BOOL* pEnabled)</unmanaged>\t\n            <unmanaged-short>IXAudio2Voice::GetEffectState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XAudio2.Voice.SetEffectParameters(System.Int32,System.IntPtr,System.Int32,System.Int32)\">\n            <summary>\t\n            Sets parameters for a given effect in the voice's effect chain.\t\n            </summary>\t\n            <param name=\"effectIndex\"><dd>[in]  Zero-based index of an effect within the voice's effect chain. </dd></param>\t\n            <param name=\"parametersRef\"><dd>[in]  Returns the current values of the effect-specific parameters. </dd></param>\t\n            <param name=\"parametersByteSize\"><dd>[in]  Size of the <em>pParameters</em> array in bytes. </dd></param>\t\n            <param name=\"operationSet\"><dd>[in]  Identifies this call as part of a deferred batch.  See the XAudio2 Operation Sets overview  for more information. </dd></param>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful; otherwise, an error code.   See XAudio2 Error Codes for descriptions of error codes.</p> <p>Fails with E_NOTIMPL if the effect does not support a generic parameter control interface.</p></returns>\t\n            <remarks>\t\n            <p>The specific effect being used determines the valid size and format of the <em>pParameters</em> buffer. The call will fail if <em>pParameters</em> is invalid  or if <em>ParametersByteSize</em> is not exactly the size that the effect expects.  The client must take care to direct the <strong>SetEffectParameters</strong> call to the right effect.  If this call is directed to a different effect that happens to accept the same parameter block size,  the parameters will be interpreted differently. This may lead to unexpected results.</p> <p>The memory pointed to by <em>pParameters</em> must <em>not</em> be freed immediately,  because XAudio2 will need to refer to it later when the parameters actually are applied to the effect.  This happens during the next audio processing pass if the <em>OperationSet</em> argument  is <strong><see cref=\"F:SharpDX.XAudio2.XAudio2.CommitNow\"/></strong>. Otherwise, the parameters are applied to the effect later,  during the first processing pass  after the <see cref=\"M:SharpDX.XAudio2.XAudio2.CommitChanges(System.Int32)\"/> function is called  with the same <em>OperationSet</em> argument.</p> <p><strong>SetEffectParameters</strong> takes effect immediately when called from an XAudio2 callback  with an <em>OperationSet</em> of <strong><see cref=\"F:SharpDX.XAudio2.XAudio2.CommitNow\"/></strong>.</p> <table><tr><th>Note </th></tr><tr><td><see cref=\"M:SharpDX.XAudio2.Voice.GetEffectParameters(System.Int32,System.IntPtr,System.Int32)\"/> always returns the effect's actual current parameters. However, these may not match the parameters set by the most recent call to  <see cref=\"M:SharpDX.XAudio2.Voice.SetEffectParameters(System.Int32,System.IntPtr,System.Int32,System.Int32)\"/>. The actual parameters are only changed the next time the audio engine runs after the  <see cref=\"M:SharpDX.XAudio2.Voice.SetEffectParameters(System.Int32,System.IntPtr,System.Int32,System.Int32)\"/> call (or after the corresponding <see cref=\"M:SharpDX.XAudio2.XAudio2.CommitChanges(System.Int32)\"/> call,  if <see cref=\"M:SharpDX.XAudio2.Voice.SetEffectParameters(System.Int32,System.IntPtr,System.Int32,System.Int32)\"/> was called with a deferred operation ID).</td></tr></table>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXAudio2Voice::SetEffectParameters']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.ixaudio2voice.ixaudio2voice.seteffectparameters</msdn-id>\t\n            <unmanaged>HRESULT IXAudio2Voice::SetEffectParameters([In] unsigned int EffectIndex,[In, Buffer] const void* pParameters,[In] unsigned int ParametersByteSize,[In] unsigned int OperationSet)</unmanaged>\t\n            <unmanaged-short>IXAudio2Voice::SetEffectParameters</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XAudio2.Voice.GetEffectParameters(System.Int32,System.IntPtr,System.Int32)\">\n            <summary>\t\n            Returns the current effect-specific parameters of a given effect in the voice's effect chain.\t\n            </summary>\t\n            <param name=\"effectIndex\"><dd>[in]  Zero-based index of an effect within the voice's effect chain. </dd></param>\t\n            <param name=\"parametersRef\"><dd>[out]  Returns the current values of the effect-specific parameters. </dd></param>\t\n            <param name=\"parametersByteSize\"><dd>[out]  Size, in bytes, of the <em>pParameters</em> array. </dd></param>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful, an error code otherwise.  See XAudio2 Error Codes for descriptions of error codes.</p> <p>Fails with E_NOTIMPL if the effect does not support a generic parameter control interface.</p></returns>\t\n            <remarks>\t\n            <p><strong>GetEffectParameters</strong> always returns the effect's actual current parameters.  However, these may not match the parameters set by the most recent call to  IXAudio2Voice::SetEffectParameters: the actual parameters are only changed the next time the audio engine runs after the  <see cref=\"M:SharpDX.XAudio2.Voice.SetEffectParameters(System.Int32,System.IntPtr,System.Int32,System.Int32)\"/> call (or after the corresponding <see cref=\"M:SharpDX.XAudio2.XAudio2.CommitChanges(System.Int32)\"/> call, if <see cref=\"M:SharpDX.XAudio2.Voice.SetEffectParameters(System.Int32,System.IntPtr,System.Int32,System.Int32)\"/> was  called with a deferred operation ID).</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXAudio2Voice::GetEffectParameters']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.ixaudio2voice.ixaudio2voice.geteffectparameters</msdn-id>\t\n            <unmanaged>HRESULT IXAudio2Voice::GetEffectParameters([In] unsigned int EffectIndex,[Out, Buffer] void* pParameters,[In] unsigned int ParametersByteSize)</unmanaged>\t\n            <unmanaged-short>IXAudio2Voice::GetEffectParameters</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XAudio2.Voice.SetFilterParameters(SharpDX.XAudio2.FilterParameters,System.Int32)\">\n            <summary>\t\n            Sets the voice's filter parameters.\t\n            </summary>\t\n            <param name=\"parametersRef\"><dd>[in]  Pointer to an <see cref=\"T:SharpDX.XAudio2.FilterParameters\"/> structure containing the filter information. </dd></param>\t\n            <param name=\"operationSet\"><dd>[in]  Identifies this call as part of a deferred batch. See the XAudio2 Operation Sets overview for more information. </dd></param>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful, an error code otherwise.  See XAudio2 Error Codes for descriptions of error codes. </p></returns>\t\n            <remarks>\t\n            <p><strong>SetFilterParameters</strong> will fail if the voice was not created with the <see cref=\"F:SharpDX.XAudio2.VoiceSendFlags.UseFilter\"/> flag.</p> <p>This method is usable only on source and submix voices and has no effect on mastering voices.</p> <table><tr><th>Note </th></tr><tr><td><see cref=\"M:SharpDX.XAudio2.Voice.GetFilterParameters(SharpDX.XAudio2.FilterParameters@)\"/> always returns this voice's actual current filter parameters.   However, these may not match the parameters set by the most recent  <see cref=\"M:SharpDX.XAudio2.Voice.SetFilterParameters(SharpDX.XAudio2.FilterParameters,System.Int32)\"/> call: the actual parameters are only changed the next time the audio engine runs after the  <see cref=\"M:SharpDX.XAudio2.Voice.SetFilterParameters(SharpDX.XAudio2.FilterParameters,System.Int32)\"/> call (or after the corresponding <see cref=\"M:SharpDX.XAudio2.XAudio2.CommitChanges(System.Int32)\"/> call,  if <see cref=\"M:SharpDX.XAudio2.Voice.SetFilterParameters(SharpDX.XAudio2.FilterParameters,System.Int32)\"/> was called with a deferred operation ID).</td></tr></table>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXAudio2Voice::SetFilterParameters']/*\"/>\t\n            <msdn-id>ee418596</msdn-id>\t\n            <unmanaged>HRESULT IXAudio2Voice::SetFilterParameters([In] const XAUDIO2_FILTER_PARAMETERS* pParameters,[In] unsigned int OperationSet)</unmanaged>\t\n            <unmanaged-short>IXAudio2Voice::SetFilterParameters</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XAudio2.Voice.GetFilterParameters(SharpDX.XAudio2.FilterParameters@)\">\n            <summary>\t\n            Gets the voice's filter parameters.\t\n            </summary>\t\n            <param name=\"parametersRef\"><dd>[out]  Pointer to an <see cref=\"T:SharpDX.XAudio2.FilterParameters\"/> structure containing the filter information. </dd></param>\t\n            <remarks>\t\n            <p><strong>GetFilterParameters</strong> will fail if the voice was not created with the <see cref=\"F:SharpDX.XAudio2.VoiceSendFlags.UseFilter\"/> flag.</p> <p><strong>GetFilterParameters</strong> always returns this voice's actual current filter parameters.  However, these may not match the parameters set by the most recent  <see cref=\"M:SharpDX.XAudio2.Voice.SetFilterParameters(SharpDX.XAudio2.FilterParameters,System.Int32)\"/> call: the actual parameters are only changed the next time the audio engine runs after the  <see cref=\"M:SharpDX.XAudio2.Voice.SetFilterParameters(SharpDX.XAudio2.FilterParameters,System.Int32)\"/> call (or after the corresponding <see cref=\"M:SharpDX.XAudio2.XAudio2.CommitChanges(System.Int32)\"/> call,  if <see cref=\"M:SharpDX.XAudio2.Voice.SetFilterParameters(SharpDX.XAudio2.FilterParameters,System.Int32)\"/> was called with a deferred operation ID).</p> <table><tr><th>Note </th></tr><tr><td><strong>GetFilterParameters</strong> is usable only on source and submix voices and has no effect on mastering voices.</td></tr></table>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXAudio2Voice::GetFilterParameters']/*\"/>\t\n            <msdn-id>ee418588</msdn-id>\t\n            <unmanaged>void IXAudio2Voice::GetFilterParameters([Out] XAUDIO2_FILTER_PARAMETERS* pParameters)</unmanaged>\t\n            <unmanaged-short>IXAudio2Voice::GetFilterParameters</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XAudio2.Voice.SetOutputFilterParameters(SharpDX.XAudio2.Voice,SharpDX.XAudio2.FilterParameters,System.Int32)\">\n            <summary>\t\n            Sets the filter parameters on one of this voice's sends.\t\n            </summary>\t\n            <param name=\"destinationVoiceRef\"><dd>[in]  <see cref=\"T:SharpDX.XAudio2.Voice\"/> reference to the destination voice of the send whose filter parameters will be set. </dd></param>\t\n            <param name=\"parametersRef\"><dd>[in]  Pointer to an <see cref=\"T:SharpDX.XAudio2.FilterParameters\"/> structure containing the filter information. </dd></param>\t\n            <param name=\"operationSet\"><dd>[in]  Identifies this call as part of a deferred batch. See the XAudio2 Operation Sets overview for more information. </dd></param>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful, an error code otherwise. See XAudio2 Error Codes for descriptions of error codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>SetOutputFilterParameters</strong> will fail if the send was not created with the XAUDIO2_SEND_USEFILTER flag. This method is usable only on sends belonging to source and submix voices and has no effect on a mastering voice's sends.</p> <table><tr><th>Note </th></tr><tr><td><see cref=\"M:SharpDX.XAudio2.Voice.GetOutputFilterParameters(SharpDX.XAudio2.Voice,SharpDX.XAudio2.FilterParameters@)\"/> always returns this send?s actual current filter parameters. However, these may not match the parameters set by the most recent <see cref=\"M:SharpDX.XAudio2.Voice.SetOutputFilterParameters(SharpDX.XAudio2.Voice,SharpDX.XAudio2.FilterParameters,System.Int32)\"/> call: the actual parameters are only changed the next time the audio engine runs after the <see cref=\"M:SharpDX.XAudio2.Voice.SetOutputFilterParameters(SharpDX.XAudio2.Voice,SharpDX.XAudio2.FilterParameters,System.Int32)\"/> call (or after the corresponding <see cref=\"M:SharpDX.XAudio2.XAudio2.CommitChanges(System.Int32)\"/> call, if <see cref=\"M:SharpDX.XAudio2.Voice.SetOutputFilterParameters(SharpDX.XAudio2.Voice,SharpDX.XAudio2.FilterParameters,System.Int32)\"/> was called with a deferred operation ID).</td></tr></table>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXAudio2Voice::SetOutputFilterParameters']/*\"/>\t\n            <msdn-id>ee418597</msdn-id>\t\n            <unmanaged>HRESULT IXAudio2Voice::SetOutputFilterParameters([In, Optional] IXAudio2Voice* pDestinationVoice,[In] const XAUDIO2_FILTER_PARAMETERS* pParameters,[In] unsigned int OperationSet)</unmanaged>\t\n            <unmanaged-short>IXAudio2Voice::SetOutputFilterParameters</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XAudio2.Voice.GetOutputFilterParameters(SharpDX.XAudio2.Voice,SharpDX.XAudio2.FilterParameters@)\">\n            <summary>\t\n            Returns the filter parameters from one of this voice's sends.\t\n            </summary>\t\n            <param name=\"destinationVoiceRef\"><dd>[in]  <see cref=\"T:SharpDX.XAudio2.Voice\"/> reference to the destination voice of the send whose filter parameters will be read. </dd></param>\t\n            <param name=\"parametersRef\"><dd>[out]  Pointer to an <see cref=\"T:SharpDX.XAudio2.FilterParameters\"/> structure containing the filter information. </dd></param>\t\n            <remarks>\t\n            <p><strong>GetOutputFilterParameters</strong> will fail if the send was not created with the XAUDIO2_SEND_USEFILTER flag. This method is usable only on sends belonging to source and submix voices and has no effect on mastering voices? sends.</p> <table><tr><th>Note </th></tr><tr><td><see cref=\"M:SharpDX.XAudio2.Voice.GetOutputFilterParameters(SharpDX.XAudio2.Voice,SharpDX.XAudio2.FilterParameters@)\"/> always returns this send?s actual current filter parameters. However, these may not match the parameters      set by the most recent <see cref=\"M:SharpDX.XAudio2.Voice.SetOutputFilterParameters(SharpDX.XAudio2.Voice,SharpDX.XAudio2.FilterParameters,System.Int32)\"/> call: the actual parameters are only changed the next time the audio engine runs  after the <see cref=\"M:SharpDX.XAudio2.Voice.SetOutputFilterParameters(SharpDX.XAudio2.Voice,SharpDX.XAudio2.FilterParameters,System.Int32)\"/> call (or after the corresponding <see cref=\"M:SharpDX.XAudio2.XAudio2.CommitChanges(System.Int32)\"/> call,  if <see cref=\"M:SharpDX.XAudio2.Voice.SetOutputFilterParameters(SharpDX.XAudio2.Voice,SharpDX.XAudio2.FilterParameters,System.Int32)\"/> was called with a deferred operation ID).</td></tr></table>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXAudio2Voice::GetOutputFilterParameters']/*\"/>\t\n            <msdn-id>ee418589</msdn-id>\t\n            <unmanaged>void IXAudio2Voice::GetOutputFilterParameters([In, Optional] IXAudio2Voice* pDestinationVoice,[Out] XAUDIO2_FILTER_PARAMETERS* pParameters)</unmanaged>\t\n            <unmanaged-short>IXAudio2Voice::GetOutputFilterParameters</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XAudio2.Voice.SetVolume(System.Single,System.Int32)\">\n            <summary>\t\n            Sets the overall volume level for the voice.\t\n            </summary>\t\n            <param name=\"volume\"><dd>[in]  Overall volume level to use. See Remarks for more information on volume levels. </dd></param>\t\n            <param name=\"operationSet\"><dd>[in]  Identifies this call as part of a deferred batch. See the XAudio2 Operation Sets overview for more information. </dd></param>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful, an error code otherwise. See XAudio2 Error Codes for descriptions of error codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>SetVolume</strong> controls a voice's master input volume level. The master volume level is applied at different times depending on the type of voice. For submix and mastering voices the volume level is applied just before the voice's built in filter and effect chain is applied. For source voices the master volume level is applied after the voice's filter and effect chain is applied.</p> <p>Volume levels are expressed as floating-point amplitude multipliers between -<see cref=\"F:SharpDX.XAudio2.XAudio2.MaximumVolumeLevel\"/> and <see cref=\"F:SharpDX.XAudio2.XAudio2.MaximumVolumeLevel\"/> (-224 to 224), with a maximum gain of 144.5 dB. A volume level of 1.0 means there is no attenuation or gain and 0 means silence. Negative levels can be used to invert the audio's phase. See XAudio2 Volume and Pitch Control for additional information on volume control.</p> <table><tr><th>Note </th></tr><tr><td><see cref=\"M:SharpDX.XAudio2.Voice.GetVolume(System.Single@)\"/> always returns the volume most recently set by <see cref=\"M:SharpDX.XAudio2.Voice.SetVolume(System.Single,System.Int32)\"/>. However, it may not actually be in effect yet: it only takes effect the next time the audio engine runs after the <see cref=\"M:SharpDX.XAudio2.Voice.SetVolume(System.Single,System.Int32)\"/> call (or after the corresponding <see cref=\"M:SharpDX.XAudio2.XAudio2.CommitChanges(System.Int32)\"/> call, if <see cref=\"M:SharpDX.XAudio2.Voice.SetVolume(System.Single,System.Int32)\"/> was called with a deferred operation ID).</td></tr></table>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXAudio2Voice::SetVolume']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.ixaudio2voice.ixaudio2voice.setvolume</msdn-id>\t\n            <unmanaged>HRESULT IXAudio2Voice::SetVolume([In] float Volume,[In] unsigned int OperationSet)</unmanaged>\t\n            <unmanaged-short>IXAudio2Voice::SetVolume</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XAudio2.Voice.GetVolume(System.Single@)\">\n            <summary>\t\n            Gets the current overall volume level of the voice.\t\n            </summary>\t\n            <param name=\"volumeRef\"><dd>[out]  Returns the current overall volume level of the voice. See Remarks for more information on volume levels. </dd></param>\t\n            <remarks>\t\n            <p>Volume levels are expressed as floating-point amplitude multipliers between -224 to 224, with a maximum gain of 144.5 dB.  A volume level of 1 means there is no attenuation or gain and 0 means silence.  Negative levels can be used to invert the audio's phase.  See XAudio2 Volume and Pitch Control for additional information on volume control.</p> <table><tr><th>Note </th></tr><tr><td><strong>GetVolume</strong> always returns the volume most recently set by <see cref=\"M:SharpDX.XAudio2.Voice.SetVolume(System.Single,System.Int32)\"/>.  However, it may not actually be in effect yet: it  only takes effect the next time the audio engine runs after the <see cref=\"M:SharpDX.XAudio2.Voice.SetVolume(System.Single,System.Int32)\"/> call (or after the corresponding  <see cref=\"M:SharpDX.XAudio2.XAudio2.CommitChanges(System.Int32)\"/> call, if <see cref=\"M:SharpDX.XAudio2.Voice.SetVolume(System.Single,System.Int32)\"/> was called with a deferred operation ID).</td></tr></table>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXAudio2Voice::GetVolume']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.ixaudio2voice.ixaudio2voice.getvolume</msdn-id>\t\n            <unmanaged>void IXAudio2Voice::GetVolume([Out] float* pVolume)</unmanaged>\t\n            <unmanaged-short>IXAudio2Voice::GetVolume</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XAudio2.Voice.SetChannelVolumes(System.Int32,System.Single[],System.Int32)\">\n            <summary>\t\n            Sets the volume levels for the voice, per channel.\t\n            </summary>\t\n            <param name=\"channels\"><dd>[in]  Number of channels in the voice. </dd></param>\t\n            <param name=\"volumesRef\"><dd>[in]  Array containing the new volumes of each channel in the voice.  The array must have <em>Channels</em> elements.  See Remarks for more information on  volume levels. </dd></param>\t\n            <param name=\"operationSet\"><dd>[in]  Identifies this call as part of a deferred batch. See the XAudio2 Operation Sets overview for more information. </dd></param>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful, an error code otherwise.  See XAudio2 Error Codes for descriptions of XAudio2 specific error  codes. </p></returns>\t\n            <remarks>\t\n            <p><strong>SetChannelVolumes</strong> controls a voice's per-channel output levels and is applied just after the voice's final SRC and before its sends.</p> <p>This method is valid only for source and submix voices, because mastering voices do not  specify volume per channel.</p> <p>Volume levels are expressed as floating-point amplitude multipliers between -<see cref=\"F:SharpDX.XAudio2.XAudio2.MaximumVolumeLevel\"/> and <see cref=\"F:SharpDX.XAudio2.XAudio2.MaximumVolumeLevel\"/> (-224 to 224),  with a maximum gain of 144.5 dB. A volume of 1 means there is no attenuation or gain and 0 means silence.  Negative levels can be used to invert the audio's phase.  See XAudio2 Volume and Pitch Control for additional information on volume control.</p> <table><tr><th>Note </th></tr><tr><td> <see cref=\"M:SharpDX.XAudio2.Voice.GetChannelVolumes(System.Int32,System.Single[])\"/> always returns the volume levels most recently set by <see cref=\"M:SharpDX.XAudio2.Voice.SetChannelVolumes(System.Int32,System.Single[],System.Int32)\"/>.  However,  those values  may not actually be in effect yet: they only take effect the next time the audio engine runs after  the <see cref=\"M:SharpDX.XAudio2.Voice.SetChannelVolumes(System.Int32,System.Single[],System.Int32)\"/> call (or after the corresponding <see cref=\"M:SharpDX.XAudio2.XAudio2.CommitChanges(System.Int32)\"/> call, if  <see cref=\"M:SharpDX.XAudio2.Voice.SetChannelVolumes(System.Int32,System.Single[],System.Int32)\"/> was called with a deferred operation ID).     </td></tr></table>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXAudio2Voice::SetChannelVolumes']/*\"/>\t\n            <msdn-id>ee418593</msdn-id>\t\n            <unmanaged>HRESULT IXAudio2Voice::SetChannelVolumes([In] unsigned int Channels,[In, Buffer] const float* pVolumes,[In] unsigned int OperationSet)</unmanaged>\t\n            <unmanaged-short>IXAudio2Voice::SetChannelVolumes</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XAudio2.Voice.GetChannelVolumes(System.Int32,System.Single[])\">\n            <summary>\t\n            Returns the volume levels for the voice, per channel.\t\n            </summary>\t\n            <param name=\"channels\"><dd>[in]  Confirms the channel count of the voice. </dd></param>\t\n            <param name=\"volumesRef\"><dd>[out]  Returns the current volume level of each channel in the voice. The array must have at least <em>Channels</em> elements. See  Remarks for more information on volume levels.  </dd></param>\t\n            <remarks>\t\n            <p>These settings are applied after the effect chain is applied. This method is valid only for source and submix voices, because mastering voices  do not specify volume per channel.</p> <p>Volume levels are expressed as floating-point amplitude multipliers between -224 to 224, with a maximum gain of 144.5 dB.  A volume of 1 means there is no attenuation or gain, 0 means silence, and negative levels can be used to invert the audio's phase.  See XAudio2 Volume and Pitch Control for additional information on volume control.</p> <table><tr><th>Note </th></tr><tr><td> <strong>GetChannelVolumes</strong> always returns the volume levels most recently set by <see cref=\"M:SharpDX.XAudio2.Voice.SetChannelVolumes(System.Int32,System.Single[],System.Int32)\"/>.  However, those values  may not actually be in effect yet:  they only take effect the next time the audio engine runs after the <see cref=\"M:SharpDX.XAudio2.Voice.SetChannelVolumes(System.Int32,System.Single[],System.Int32)\"/> call (or after the corresponding <see cref=\"M:SharpDX.XAudio2.XAudio2.CommitChanges(System.Int32)\"/> call, if  <see cref=\"M:SharpDX.XAudio2.Voice.SetChannelVolumes(System.Int32,System.Single[],System.Int32)\"/> was called with a deferred operation ID).     </td></tr></table>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXAudio2Voice::GetChannelVolumes']/*\"/>\t\n            <msdn-id>ee418585</msdn-id>\t\n            <unmanaged>void IXAudio2Voice::GetChannelVolumes([In] unsigned int Channels,[Out, Buffer] float* pVolumes)</unmanaged>\t\n            <unmanaged-short>IXAudio2Voice::GetChannelVolumes</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XAudio2.Voice.SetOutputMatrix(SharpDX.XAudio2.Voice,System.Int32,System.Int32,System.Single[],System.Int32)\">\n            <summary>\t\n            Sets the volume level of each channel of the final output for the voice. These channels are mapped to the input channels of a specified destination voice.\t\n            </summary>\t\n            <param name=\"destinationVoiceRef\"><dd>[in]  Pointer to a destination <see cref=\"T:SharpDX.XAudio2.Voice\"/> for which to set volume levels. <table><tr><th>Note </th></tr><tr><td>If the voice sends to a single target voice then specifying <c>null</c> will cause <strong>SetOutputMatrix</strong> to operate on that target voice.</td></tr></table> </dd></param>\t\n            <param name=\"sourceChannels\"><dd>[in]  Confirms the output channel count of the voice. This is the number of channels that are produced by the last effect in the chain. </dd></param>\t\n            <param name=\"destinationChannels\"><dd>[in]  Confirms the input channel count of the destination voice. </dd></param>\t\n            <param name=\"levelMatrixRef\"><dd>[in]  Array of [<em>SourceChannels</em> ? <em>DestinationChannels</em>] volume levels sent to the destination voice. The level sent from source channel <em>S</em> to destination channel <em>D</em> is specified in the form <em>pLevelMatrix</em>[<em>SourceChannels</em> ? <em>D</em> + <em>S</em>]. <p>For example, when rendering two-channel stereo input into 5.1 output that is weighted toward the front channels?but is absent from the center and low-frequency channels?the matrix might have the values shown in the following table.</p> <table> <tr><th>Output</th><th>Left Input [Array Index]</th><th>Right Input [Array Index]</th></tr> <tr><td>Left</td><td>1.0 [0]</td><td>0.0 [1]</td></tr> <tr><td>Right</td><td>0.0 [2]</td><td>1.0 [3]</td></tr> <tr><td>Front Center</td><td>0.0 [4]</td><td>0.0 [5]</td></tr> <tr><td>LFE</td><td>0.0 [6]</td><td>0.0 [7]</td></tr> <tr><td>Rear Left</td><td>0.8 [8]</td><td>0.0 [9]</td></tr> <tr><td>Rear Right</td><td>0.0 [10]</td><td>0.8 [11]</td></tr> </table> <p>Note that the left and right input are fully mapped to the output left and right channels; 80 percent of the left and right input is mapped to the rear left and right channels.</p> <p>See Remarks for more information on volume levels.</p> </dd></param>\t\n            <param name=\"operationSet\"><dd>[in]  Identifies this call as part of a deferred batch. See the XAudio2 Operation Sets overview for more information. </dd></param>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful, an error code otherwise. See XAudio2 Error Codes for descriptions of error codes.</p></returns>\t\n            <remarks>\t\n            <p>This method is valid only for source and submix voices, because mastering voices write directly to the device with no matrix mixing.</p> <p>Volume levels are expressed as floating-point amplitude multipliers between -<see cref=\"F:SharpDX.XAudio2.XAudio2.MaximumVolumeLevel\"/> and <see cref=\"F:SharpDX.XAudio2.XAudio2.MaximumVolumeLevel\"/> (-224 to 224), with a maximum gain of 144.5 dB. A volume level of 1.0 means there is no attenuation or gain and 0 means silence. Negative levels can be used to invert the audio's phase. See XAudio2 Volume and Pitch Control for additional information on volume control.</p> <p></p> <p>The X3DAudio function <see cref=\"M:SharpDX.X3DAudio.X3DAudio.X3DAudioCalculate(SharpDX.X3DAudio.X3DAudioHandle@,SharpDX.X3DAudio.Listener,SharpDX.X3DAudio.Emitter,SharpDX.X3DAudio.CalculateFlags,System.IntPtr)\"/> can produce an output matrix for use with <strong>SetOutputMatrix</strong> based on a sound's position and a listener's position.</p> <table><tr><th>Note </th></tr><tr><td><see cref=\"M:SharpDX.XAudio2.Voice.GetOutputMatrix(SharpDX.XAudio2.Voice,System.Int32,System.Int32,System.Single[])\"/> always returns the levels most recently set by <see cref=\"M:SharpDX.XAudio2.Voice.SetOutputMatrix(SharpDX.XAudio2.Voice,System.Int32,System.Int32,System.Single[],System.Int32)\"/>. However, they may not actually be in effect yet: they only take effect the next time the audio engine runs after the <see cref=\"M:SharpDX.XAudio2.Voice.SetOutputMatrix(SharpDX.XAudio2.Voice,System.Int32,System.Int32,System.Single[],System.Int32)\"/> call (or after the corresponding <see cref=\"M:SharpDX.XAudio2.XAudio2.CommitChanges(System.Int32)\"/> call, if <see cref=\"M:SharpDX.XAudio2.Voice.SetOutputMatrix(SharpDX.XAudio2.Voice,System.Int32,System.Int32,System.Single[],System.Int32)\"/> was called with a deferred operation ID).</td></tr></table>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXAudio2Voice::SetOutputMatrix']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.ixaudio2voice.ixaudio2voice.setoutputmatrix</msdn-id>\t\n            <unmanaged>HRESULT IXAudio2Voice::SetOutputMatrix([In, Optional] IXAudio2Voice* pDestinationVoice,[In] unsigned int SourceChannels,[In] unsigned int DestinationChannels,[In, Buffer] const float* pLevelMatrix,[In] unsigned int OperationSet)</unmanaged>\t\n            <unmanaged-short>IXAudio2Voice::SetOutputMatrix</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XAudio2.Voice.GetOutputMatrix(SharpDX.XAudio2.Voice,System.Int32,System.Int32,System.Single[])\">\n            <summary>\t\n            Gets the volume level of each channel of the final output for the voice. These channels are mapped to the input channels of a specified destination voice.\t\n            </summary>\t\n            <param name=\"destinationVoiceRef\"><dd>[in]  Pointer specifying the destination <see cref=\"T:SharpDX.XAudio2.Voice\"/> to retrieve the output matrix for. <table><tr><th>Note </th></tr><tr><td>If the voice sends to a single target voice then specifying <c>null</c> will cause <strong>GetOutputMatrix</strong> to operate on that target voice.</td></tr></table> </dd></param>\t\n            <param name=\"sourceChannels\"><dd>[in]  Confirms the output channel count of the voice. This is the number of channels that are produced by the last effect in the chain. </dd></param>\t\n            <param name=\"destinationChannels\"><dd>[in]  Confirms the input channel count of the destination voice. </dd></param>\t\n            <param name=\"levelMatrixRef\"><dd>[out]  Array of [<em>SourceChannels</em> * <em>DestinationChannels</em>] volume levels sent to the destination voice. The level sent from source channel <em>S</em> to destination channel <em>D</em> is returned in the form <em>pLevelMatrix</em>[<em>DestinationChannels</em> ? <em>S</em> + <em>D</em>]. See Remarks for more information on volume levels. </dd></param>\t\n            <remarks>\t\n            <p>This method applies only to source and submix voices, because mastering voices write directly to the device with no matrix mixing.</p> <p>Volume levels are expressed as floating-point amplitude multipliers between -224 to 224, with a maximum gain of 144.5 dB. A volume level of 1 means there is no attenuation or gain and 0 means silence. Negative levels can be used to invert the audio's phase. See XAudio2 Volume and Pitch Control for additional information on volume control.</p> <p>See <strong><see cref=\"T:SharpDX.Multimedia.WaveFormatExtensible\"/></strong> for information on standard channel ordering.</p> <table><tr><th>Note </th></tr><tr><td><strong>GetOutputMatrix</strong> always returns the levels most recently set by <see cref=\"M:SharpDX.XAudio2.Voice.SetOutputMatrix(SharpDX.XAudio2.Voice,System.Int32,System.Int32,System.Single[],System.Int32)\"/>. However, they may not actually be in effect yet: they only take effect the next time the audio engine runs after the <see cref=\"M:SharpDX.XAudio2.Voice.SetOutputMatrix(SharpDX.XAudio2.Voice,System.Int32,System.Int32,System.Single[],System.Int32)\"/> call (or after the corresponding <see cref=\"M:SharpDX.XAudio2.XAudio2.CommitChanges(System.Int32)\"/> call, if <see cref=\"M:SharpDX.XAudio2.Voice.SetOutputMatrix(SharpDX.XAudio2.Voice,System.Int32,System.Int32,System.Single[],System.Int32)\"/> was called with a deferred operation ID).</td></tr></table>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXAudio2Voice::GetOutputMatrix']/*\"/>\t\n            <msdn-id>ee418590</msdn-id>\t\n            <unmanaged>void IXAudio2Voice::GetOutputMatrix([In, Optional] IXAudio2Voice* pDestinationVoice,[In] unsigned int SourceChannels,[In] unsigned int DestinationChannels,[Out, Buffer] float* pLevelMatrix)</unmanaged>\t\n            <unmanaged-short>IXAudio2Voice::GetOutputMatrix</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XAudio2.Voice.DestroyVoice\">\n            <summary>\t\n            Destroys the voice. If necessary, stops the voice and removes it from the XAudio2 graph.\t\n            </summary>\t\n            <remarks>\t\n            <p>If any other voice is currently sending audio to this voice, the method fails.</p> <p><strong>DestroyVoice</strong> waits for the audio processing thread to be idle, so it can take a little while (typically no more  than a couple of milliseconds).  This is necessary to guarantee that the voice will no longer make any  callbacks or read any audio data, so the application can safely free up these resources as soon as the call returns.</p> <p>To avoid title thread interruptions from a blocking <strong>DestroyVoice</strong> call, the application can destroy voices on a separate non-critical thread, or  the application can use voice pooling strategies to reuse voices rather than destroying them. Note that voices can only be reused with audio  that has the same data format and the same number of channels the voice was created with.  A voice can play audio data with different sample rates  than that of the voice by calling <see cref=\"M:SharpDX.XAudio2.SourceVoice.SetFrequencyRatio(System.Single,System.Int32)\"/> with an appropriate ratio parameter.</p> <p>It is illegal to call <strong>DestroyVoice</strong> from within a callback. If <strong>DestroyVoice</strong> is called within a callback XAUDIO2_E_INVALID_CALL will be returned.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXAudio2Voice::DestroyVoice']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.ixaudio2voice.ixaudio2voice.destroyvoice</msdn-id>\t\n            <unmanaged>void IXAudio2Voice::DestroyVoice()</unmanaged>\t\n            <unmanaged-short>IXAudio2Voice::DestroyVoice</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XAudio2.Voice.EnableEffect(System.Int32)\">\n            <summary>\t\n            Enables the effect at a given position in the effect chain of the voice.\t\n            </summary>\t\n            <param name=\"effectIndex\">[in]  Zero-based index of an effect in the effect chain of the voice. </param>\n            <returns>No documentation.</returns>\n            <unmanaged>HRESULT IXAudio2Voice::EnableEffect([None] UINT32 EffectIndex,[None] UINT32 OperationSet)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.XAudio2.Voice.DisableEffect(System.Int32)\">\n            <summary>\t\n            Disables the effect at a given position in the effect chain of the voice.\t\n            </summary>\t\n            <param name=\"effectIndex\">[in]  Zero-based index of an effect in the effect chain of the voice. </param>\n            <returns>No documentation.</returns>\n            <unmanaged>HRESULT IXAudio2Voice::DisableEffect([None] UINT32 EffectIndex,[None] UINT32 OperationSet)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.XAudio2.Voice.GetEffectParameters``1(System.Int32)\">\n            <summary>\t\n            Sets parameters for a given effect in the voice's effect chain.\n            </summary>\t\n            <param name=\"effectIndex\">[in]  Zero-based index of an effect within the voice's effect chain. </param>\n            <returns>Returns the current values of the effect-specific parameters.</returns>\n            <unmanaged>HRESULT IXAudio2Voice::SetEffectParameters([None] UINT32 EffectIndex,[In, Buffer] const void* pParameters,[None] UINT32 ParametersByteSize,[None] UINT32 OperationSet)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.XAudio2.Voice.GetEffectParameters(System.Int32,System.Byte[])\">\n            <summary>\t\n            Returns the current effect-specific parameters of a given effect in the voice's effect chain.\t\n            </summary>\t\n            <param name=\"effectIndex\">[in]  Zero-based index of an effect within the voice's effect chain. </param>\n            <param name=\"effectParameters\">[out]  Returns the current values of the effect-specific parameters. </param>\n            <returns>No documentation.</returns>\n            <unmanaged>HRESULT IXAudio2Voice::GetEffectParameters([None] UINT32 EffectIndex,[Out, Buffer] void* pParameters,[None] UINT32 ParametersByteSize)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.XAudio2.Voice.SetEffectParameters(System.Int32,System.Byte[])\">\n            <summary>\t\n            Sets parameters for a given effect in the voice's effect chain.\t\n            </summary>\t\n            <param name=\"effectIndex\">[in]  Zero-based index of an effect within the voice's effect chain. </param>\n            <param name=\"effectParameter\">[in]  Returns the current values of the effect-specific parameters. </param>\n            <returns>No documentation.</returns>\n            <unmanaged>HRESULT IXAudio2Voice::SetEffectParameters([None] UINT32 EffectIndex,[In, Buffer] const void* pParameters,[None] UINT32 ParametersByteSize,[None] UINT32 OperationSet)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.XAudio2.Voice.SetEffectParameters(System.Int32,System.Byte[],System.Int32)\">\n            <summary>\t\n            Sets parameters for a given effect in the voice's effect chain.\t\n            </summary>\t\n            <param name=\"effectIndex\">[in]  Zero-based index of an effect within the voice's effect chain. </param>\n            <param name=\"effectParameter\">[in]  Returns the current values of the effect-specific parameters. </param>\n            <param name=\"operationSet\">[in]  Identifies this call as part of a deferred batch. See the {{XAudio2 Operation Sets}} overview  for more information. </param>\n            <returns>No documentation.</returns>\n            <unmanaged>HRESULT IXAudio2Voice::SetEffectParameters([None] UINT32 EffectIndex,[In, Buffer] const void* pParameters,[None] UINT32 ParametersByteSize,[None] UINT32 OperationSet)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.XAudio2.Voice.SetEffectParameters``1(System.Int32,``0)\">\n            <summary>\t\n            Sets parameters for a given effect in the voice's effect chain.\n            </summary>\t\n            <param name=\"effectIndex\">[in]  Zero-based index of an effect within the voice's effect chain. </param>\n            <param name=\"effectParameter\">[in]  Returns the current values of the effect-specific parameters. </param>\n            <returns>No documentation.</returns>\n            <unmanaged>HRESULT IXAudio2Voice::SetEffectParameters([None] UINT32 EffectIndex,[In, Buffer] const void* pParameters,[None] UINT32 ParametersByteSize,[None] UINT32 OperationSet)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.XAudio2.Voice.SetEffectParameters``1(System.Int32,``0,System.Int32)\">\n            <summary>\t\n            Sets parameters for a given effect in the voice's effect chain.\t\n            </summary>\t\n            <param name=\"effectIndex\">[in]  Zero-based index of an effect within the voice's effect chain. </param>\n            <param name=\"effectParameter\">[in]  Returns the current values of the effect-specific parameters. </param>\n            <param name=\"operationSet\">[in]  Identifies this call as part of a deferred batch. See the {{XAudio2 Operation Sets}} overview  for more information. </param>\n            <returns>No documentation.</returns>\n            <unmanaged>HRESULT IXAudio2Voice::SetEffectParameters([None] UINT32 EffectIndex,[In, Buffer] const void* pParameters,[None] UINT32 ParametersByteSize,[None] UINT32 OperationSet)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.XAudio2.Voice.SetEffectChain(SharpDX.XAudio2.EffectDescriptor[])\">\n            <summary>\t\n            Replaces the effect chain of the voice.\t\n            </summary>\t\n            <param name=\"effectDescriptors\">[in, optional]  an array of <see cref=\"T:SharpDX.XAudio2.EffectDescriptor\"/> structure that describes the new effect chain to use. If NULL is passed, the current effect chain is removed. If array is non null, its length must be at least of 1. </param>\n            <returns>No documentation.</returns>\n            <unmanaged>HRESULT IXAudio2Voice::SetEffectChain([In, Optional] const XAUDIO2_EFFECT_CHAIN* pEffectChain)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.XAudio2.Voice.SetOutputVoices(SharpDX.XAudio2.VoiceSendDescriptor[])\">\n            <summary>\t\n            Designates a new set of submix or mastering voices to receive the output of the voice.\t\n            </summary>\t\n            <param name=\"outputVoices\">[in]  Array of <see cref=\"T:SharpDX.XAudio2.VoiceSendDescriptor\"/> structure pointers to destination voices. If outputVoices is NULL, the voice will send its output to the current mastering voice. To set the voice to not send its output anywhere set an array of lenvth 0. All of the voices in a send list must have the same input sample rate, see {{XAudio2 Sample Rate Conversions}} for additional information. </param>\n            <returns>No documentation.</returns>\n            <unmanaged>HRESULT IXAudio2Voice::SetOutputVoices([In, Optional] const XAUDIO2_VOICE_SENDS* pSendList)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.XAudio2.Voice.SetOutputMatrix(System.Int32,System.Int32,System.Single[])\">\n            <summary>\t\n            Sets the volume level of each channel of the final output for the voice. These channels are mapped to the input channels of a specified destination voice.\t\n            </summary>\t\n            <param name=\"sourceChannels\">[in]  Confirms the output channel count of the voice. This is the number of channels that are produced by the last effect in the chain. </param>\n            <param name=\"destinationChannels\">[in]  Confirms the input channel count of the destination voice. </param>\n            <param name=\"levelMatrixRef\">[in]  Array of [SourceChannels ? DestinationChannels] volume levels sent to the destination voice. The level sent from source channel S to destination channel D is specified in the form pLevelMatrix[SourceChannels ? D + S]. For example, when rendering two-channel stereo input into 5.1 output that is weighted toward the front channels?but is absent from the center and low-frequency channels?the matrix might have the values shown in the following table.  OutputLeft InputRight Input Left1.00.0 Right0.01.0 Front Center0.00.0 LFE0.00.0 Rear Left0.80.0 Rear Right0.00.8  Note that the left and right input are fully mapped to the output left and right channels; 80 percent of the left and right input is mapped to the rear left and right channels. See Remarks for more information on volume levels. </param>\n            <returns>No documentation.</returns>\n            <unmanaged>HRESULT IXAudio2Voice::SetOutputMatrix([In, Optional] IXAudio2Voice* pDestinationVoice,[None] UINT32 SourceChannels,[None] UINT32 DestinationChannels,[In, Buffer] const float* pLevelMatrix,[None] UINT32 OperationSet)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.XAudio2.Voice.SetOutputMatrix(SharpDX.XAudio2.Voice,System.Int32,System.Int32,System.Single[])\">\n            <summary>\t\n            Sets the volume level of each channel of the final output for the voice. These channels are mapped to the input channels of a specified destination voice.\t\n            </summary>\t\n            <param name=\"destinationVoiceRef\">[in]  Pointer to a destination <see cref=\"T:SharpDX.XAudio2.Voice\"/> for which to set volume levels. Note If the voice sends to a single target voice then specifying NULL will cause SetOutputMatrix to operate on that target voice. </param>\n            <param name=\"sourceChannels\">[in]  Confirms the output channel count of the voice. This is the number of channels that are produced by the last effect in the chain. </param>\n            <param name=\"destinationChannels\">[in]  Confirms the input channel count of the destination voice. </param>\n            <param name=\"levelMatrixRef\">[in]  Array of [SourceChannels ? DestinationChannels] volume levels sent to the destination voice. The level sent from source channel S to destination channel D is specified in the form pLevelMatrix[SourceChannels ? D + S]. For example, when rendering two-channel stereo input into 5.1 output that is weighted toward the front channels?but is absent from the center and low-frequency channels?the matrix might have the values shown in the following table.  OutputLeft InputRight Input Left1.00.0 Right0.01.0 Front Center0.00.0 LFE0.00.0 Rear Left0.80.0 Rear Right0.00.8  Note that the left and right input are fully mapped to the output left and right channels; 80 percent of the left and right input is mapped to the rear left and right channels. See Remarks for more information on volume levels. </param>\n            <returns>No documentation.</returns>\n            <unmanaged>HRESULT IXAudio2Voice::SetOutputMatrix([In, Optional] IXAudio2Voice* pDestinationVoice,[None] UINT32 SourceChannels,[None] UINT32 DestinationChannels,[In, Buffer] const float* pLevelMatrix,[None] UINT32 OperationSet)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.XAudio2.Voice.SetOutputMatrix(System.Int32,System.Int32,System.Single[],System.Int32)\">\n            <summary>\t\n            Sets the volume level of each channel of the final output for the voice. These channels are mapped to the input channels of a specified destination voice.\t\n            </summary>\t\n            <param name=\"sourceChannels\">[in]  Confirms the output channel count of the voice. This is the number of channels that are produced by the last effect in the chain. </param>\n            <param name=\"destinationChannels\">[in]  Confirms the input channel count of the destination voice. </param>\n            <param name=\"levelMatrixRef\">[in]  Array of [SourceChannels ? DestinationChannels] volume levels sent to the destination voice. The level sent from source channel S to destination channel D is specified in the form pLevelMatrix[SourceChannels ? D + S]. For example, when rendering two-channel stereo input into 5.1 output that is weighted toward the front channels?but is absent from the center and low-frequency channels?the matrix might have the values shown in the following table.  OutputLeft InputRight Input Left1.00.0 Right0.01.0 Front Center0.00.0 LFE0.00.0 Rear Left0.80.0 Rear Right0.00.8  Note that the left and right input are fully mapped to the output left and right channels; 80 percent of the left and right input is mapped to the rear left and right channels. See Remarks for more information on volume levels. </param>\n            <param name=\"operationSet\">[in]  Identifies this call as part of a deferred batch. See the {{XAudio2 Operation Sets}} overview for more information. </param>\n            <returns>No documentation.</returns>\n            <unmanaged>HRESULT IXAudio2Voice::SetOutputMatrix([In, Optional] IXAudio2Voice* pDestinationVoice,[None] UINT32 SourceChannels,[None] UINT32 DestinationChannels,[In, Buffer] const float* pLevelMatrix,[None] UINT32 OperationSet)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.XAudio2.Voice.VoiceDetails\">\n            <summary>\t\n            Returns information about the creation flags, input channels, and sample rate of a voice.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXAudio2Voice::GetVoiceDetails']/*\"/>\t\n            <msdn-id>ee418591</msdn-id>\t\n            <unmanaged>GetVoiceDetails</unmanaged>\t\n            <unmanaged-short>GetVoiceDetails</unmanaged-short>\t\n            <unmanaged>void IXAudio2Voice::GetVoiceDetails([Out] XAUDIO2_VOICE_DETAILS* pVoiceDetails)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.XAudio2.Voice.OutputVoices\">\n            <summary>\t\n            Designates a new set of submix or mastering voices to receive the output of the voice.\t\n            </summary>\t\n            <remarks>\t\n            <p>This method is only valid for source and submix voices. Mastering voices can not send audio to another voice.</p> <p>After calling <strong>SetOutputVoices</strong> a voice's current send levels will be replaced by a default send matrix. The <see cref=\"M:SharpDX.XAudio2.Voice.SetOutputMatrix(SharpDX.XAudio2.Voice,System.Int32,System.Int32,System.Single[],System.Int32)\"/> method must be called to set a custom matrix for the new sendlist.</p> <p>It is illegal to call <strong>SetOutputVoices</strong> from within a callback. If <strong>SetOutputVoices</strong> is called within a callback XAUDIO2_E_INVALID_CALL will be returned.</p> <table><tr><th>Note </th></tr><tr><td>Calling <strong>SetOutputVoices</strong> invalidates any send matrices previously set with <see cref=\"M:SharpDX.XAudio2.Voice.SetOutputMatrix(SharpDX.XAudio2.Voice,System.Int32,System.Int32,System.Single[],System.Int32)\"/>.</td></tr></table>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXAudio2Voice::SetOutputVoices']/*\"/>\t\n            <msdn-id>ee418599</msdn-id>\t\n            <unmanaged>SetOutputVoices</unmanaged>\t\n            <unmanaged-short>SetOutputVoices</unmanaged-short>\t\n            <unmanaged>HRESULT IXAudio2Voice::SetOutputVoices([In, Optional] const XAUDIO2_VOICE_SENDS* pSendList)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.XAudio2.Voice.FilterParameters\">\n            <summary>\t\n            Gets the voice's filter parameters.\t\n            </summary>\t\n            <remarks>\t\n            <p><strong>GetFilterParameters</strong> will fail if the voice was not created with the <see cref=\"F:SharpDX.XAudio2.VoiceSendFlags.UseFilter\"/> flag.</p> <p><strong>GetFilterParameters</strong> always returns this voice's actual current filter parameters.  However, these may not match the parameters set by the most recent  <see cref=\"M:SharpDX.XAudio2.Voice.SetFilterParameters(SharpDX.XAudio2.FilterParameters,System.Int32)\"/> call: the actual parameters are only changed the next time the audio engine runs after the  <see cref=\"M:SharpDX.XAudio2.Voice.SetFilterParameters(SharpDX.XAudio2.FilterParameters,System.Int32)\"/> call (or after the corresponding <see cref=\"M:SharpDX.XAudio2.XAudio2.CommitChanges(System.Int32)\"/> call,  if <see cref=\"M:SharpDX.XAudio2.Voice.SetFilterParameters(SharpDX.XAudio2.FilterParameters,System.Int32)\"/> was called with a deferred operation ID).</p> <table><tr><th>Note </th></tr><tr><td><strong>GetFilterParameters</strong> is usable only on source and submix voices and has no effect on mastering voices.</td></tr></table>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXAudio2Voice::GetFilterParameters']/*\"/>\t\n            <msdn-id>ee418588</msdn-id>\t\n            <unmanaged>GetFilterParameters</unmanaged>\t\n            <unmanaged-short>GetFilterParameters</unmanaged-short>\t\n            <unmanaged>void IXAudio2Voice::GetFilterParameters([Out] XAUDIO2_FILTER_PARAMETERS* pParameters)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.XAudio2.Voice.Volume\">\n            <summary>\t\n            Gets the current overall volume level of the voice.\t\n            </summary>\t\n            <remarks>\t\n            <p>Volume levels are expressed as floating-point amplitude multipliers between -224 to 224, with a maximum gain of 144.5 dB.  A volume level of 1 means there is no attenuation or gain and 0 means silence.  Negative levels can be used to invert the audio's phase.  See XAudio2 Volume and Pitch Control for additional information on volume control.</p> <table><tr><th>Note </th></tr><tr><td><strong>GetVolume</strong> always returns the volume most recently set by <see cref=\"M:SharpDX.XAudio2.Voice.SetVolume(System.Single,System.Int32)\"/>.  However, it may not actually be in effect yet: it  only takes effect the next time the audio engine runs after the <see cref=\"M:SharpDX.XAudio2.Voice.SetVolume(System.Single,System.Int32)\"/> call (or after the corresponding  <see cref=\"M:SharpDX.XAudio2.XAudio2.CommitChanges(System.Int32)\"/> call, if <see cref=\"M:SharpDX.XAudio2.Voice.SetVolume(System.Single,System.Int32)\"/> was called with a deferred operation ID).</td></tr></table>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXAudio2Voice::GetVolume']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.ixaudio2voice.ixaudio2voice.getvolume</msdn-id>\t\n            <unmanaged>GetVolume</unmanaged>\t\n            <unmanaged-short>GetVolume</unmanaged-short>\t\n            <unmanaged>void IXAudio2Voice::GetVolume([Out] float* pVolume)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.XAudio2.MasteringVoice.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.XAudio2.MasteringVoice\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.XAudio2.MasteringVoice.op_Explicit(System.IntPtr)~SharpDX.XAudio2.MasteringVoice\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.XAudio2.MasteringVoice\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.XAudio2.MasteringVoice.#ctor(SharpDX.XAudio2.XAudio2,System.Int32,System.Int32,System.Int32)\">\n            <summary>\t\n            Creates and configures a mastering voice.\t\n            </summary>\t\n            <param name=\"device\">an instance of <see cref=\"T:SharpDX.XAudio2.XAudio2\"/></param>\n            <param name=\"inputChannels\">[in]  Number of channels the mastering voice expects in its input audio. InputChannels must be less than or equal to XAUDIO2_MAX_AUDIO_CHANNELS. InputChannels can be set to XAUDIO2_DEFAULT_CHANNELS, with the default being determined by the current platform. Windows  Attempts to detect the system speaker configuration setup.  Xbox 360  Defaults to 5.1 surround.  </param>\n            <param name=\"inputSampleRate\">[in]  Sample rate of the input audio data of the mastering voice. This rate must be a multiple of XAUDIO2_QUANTUM_DENOMINATOR. InputSampleRate must be between XAUDIO2_MIN_SAMPLE_RATE and XAUDIO2_MAX_SAMPLE_RATE. InputSampleRate can be set to XAUDIO2_DEFAULT_SAMPLERATE, with the default being determined by the current platform. Windows  Windows XP defaults to 44100. Windows Vista and Windows 7 default to the setting specified in the Sound Control Panel. The default for this setting is 44100 (or 48000 if required by the driver).  Xbox 360  Defaults to 48000.  </param>\n            <param name=\"deviceIndex\">[in]  Index of the output device that will be sent input by the mastering voice. Specifying the default value of 0 causes XAudio2 to select the global default audio device. </param>\n            <unmanaged>HRESULT IXAudio2::CreateMasteringVoice([Out] IXAudio2MasteringVoice** ppMasteringVoice,[None] UINT32 InputChannels,[None] UINT32 InputSampleRate,[None] UINT32 Flags,[None] UINT32 DeviceIndex,[In, Optional] const XAUDIO2_EFFECT_CHAIN* pEffectChain)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.XAudio2.SourceVoice\">\n            <summary>\t\n            Use a source voice to submit audio data to the XAudio2 processing pipeline.  You must send voice data to a mastering voice to be heard, either directly  or through intermediate submix voices.<p><strong><see cref=\"T:SharpDX.XAudio2.SourceVoice\"/></strong> inherits directly from <see cref=\"T:SharpDX.XAudio2.Voice\"/>. It implements its own methods.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXAudio2SourceVoice']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.ixaudio2sourcevoice.ixaudio2sourcevoice</msdn-id>\t\n            <unmanaged>IXAudio2SourceVoice</unmanaged>\t\n            <unmanaged-short>IXAudio2SourceVoice</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XAudio2.SourceVoice.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.XAudio2.SourceVoice\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.XAudio2.SourceVoice.op_Explicit(System.IntPtr)~SharpDX.XAudio2.SourceVoice\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.XAudio2.SourceVoice\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.XAudio2.SourceVoice.Start(System.Int32,System.Int32)\">\n            <summary>\t\n            Starts consumption and processing of audio by the voice. Delivers the result to any connected submix or mastering voices, or to the output device.\t\n            </summary>\t\n            <param name=\"flags\"><dd>[in]  Flags that control how the voice is started. Must be 0. </dd></param>\t\n            <param name=\"operationSet\"><dd>[in]  Identifies this call as part of a deferred batch. See the XAudio2 Operation Sets overview for more information. </dd></param>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful, an error code otherwise.  See XAudio2 Error Codes for descriptions of XAudio2 specific error codes. </p></returns>\t\n            <remarks>\t\n            <p>If the XAudio2 engine is stopped, the voice stops running. However, it remains in the started state, so that it starts running again as soon as the engine starts.</p> <p>When first created, source voices are in the stopped state. Submix and mastering voices are in the started state.</p> <p>After <strong>Start</strong> is called it has no further effect if called again before <see cref=\"M:SharpDX.XAudio2.SourceVoice.Stop(SharpDX.XAudio2.PlayFlags,System.Int32)\"/> is called.  In addition multiple calls to <strong>Start</strong> without matching calls to <see cref=\"M:SharpDX.XAudio2.SourceVoice.Stop(SharpDX.XAudio2.PlayFlags,System.Int32)\"/> will result in warning messages in debug builds.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXAudio2SourceVoice::Start']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.ixaudio2sourcevoice.ixaudio2sourcevoice.start</msdn-id>\t\n            <unmanaged>HRESULT IXAudio2SourceVoice::Start([In] unsigned int Flags,[In] unsigned int OperationSet)</unmanaged>\t\n            <unmanaged-short>IXAudio2SourceVoice::Start</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XAudio2.SourceVoice.Stop(SharpDX.XAudio2.PlayFlags,System.Int32)\">\n            <summary>\t\n            Stops consumption of audio by the current voice.\t\n            </summary>\t\n            <param name=\"flags\"><dd>[in]  Flags that control how the voice is stopped. Can be 0 or the following: <table><tr><th>Value</th><th>Description</th></tr><tr><td><see cref=\"F:SharpDX.XAudio2.PlayFlags.Tails\"/></td><td>Continue emitting effect output after the voice is stopped.?</td></tr></table> </dd></param>\t\n            <param name=\"operationSet\"><dd>[in]  Identifies this call as part of a deferred batch. See the  XAudio2 Operation Sets overview for more information. </dd></param>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful, an error code otherwise.  See  XAudio2 Error Codes for descriptions of XAudio2 specific error codes. </p></returns>\t\n            <remarks>\t\n            <p>All source buffers that are queued on the voice and the current cursor position are  preserved. This allows the voice to continue from where it left off, when it is restarted. The  <see cref=\"M:SharpDX.XAudio2.SourceVoice.FlushSourceBuffers\"/> method  can be used to flush queued source buffers.</p> <p>By default, any pending output from voice effects?for example, reverb tails?is not  played. Instead, the voice is immediately rendered silent. The <see cref=\"F:SharpDX.XAudio2.PlayFlags.Tails\"/> flag can be used to  continue emitting effect output after the voice stops running.</p> <p>A voice stopped with the <see cref=\"F:SharpDX.XAudio2.PlayFlags.Tails\"/> flag stops consuming source buffers, but continues to process its effects and send audio to its  destination voices. A voice in this state can later be stopped completely by calling <strong>Stop</strong> again with the <em>Flags</em> argument set to 0. This enables stopping a voice with <see cref=\"F:SharpDX.XAudio2.PlayFlags.Tails\"/>, waiting sufficient time for any audio being produced by its effects to finish, and then fully stopping  the voice by calling <strong>Stop</strong> again without <see cref=\"F:SharpDX.XAudio2.PlayFlags.Tails\"/>.   This technique allows voices with effects to be stopped gracefully while ensuring idle voices will not continue to be processed after they have finished  producing audio.</p> <p><strong>Stop</strong> is always asynchronous, even if called within a callback.</p> <table><tr><th>Note </th></tr><tr><td>XAudio2 never calls any voice callbacks for a voice if the voice is stopped (even if it was stopped with  <see cref=\"F:SharpDX.XAudio2.PlayFlags.Tails\"/>).</td></tr></table>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXAudio2SourceVoice::Stop']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.ixaudio2sourcevoice.ixaudio2sourcevoice.stop</msdn-id>\t\n            <unmanaged>HRESULT IXAudio2SourceVoice::Stop([In] XAUDIO2_PLAY_FLAGS Flags,[In] unsigned int OperationSet)</unmanaged>\t\n            <unmanaged-short>IXAudio2SourceVoice::Stop</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XAudio2.SourceVoice.SubmitSourceBuffer(SharpDX.XAudio2.AudioBuffer,System.IntPtr)\">\n            <summary>\t\n            Adds a new audio buffer to the voice queue.\t\n            </summary>\t\n            <param name=\"bufferRef\"><dd>[in]  Pointer to an <see cref=\"T:SharpDX.XAudio2.AudioBuffer\"/> structure to queue. </dd></param>\t\n            <param name=\"bufferWMARef\"><dd>[in]  Pointer to an additional <see cref=\"T:SharpDX.XAudio2.BufferWma\"/> structure used when  submitting WMA data. </dd></param>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful, an error code otherwise.  See XAudio2 Error Codes for  descriptions of XAudio2 specific error codes. </p></returns>\t\n            <remarks>\t\n            <p>The voice processes and plays back the buffers in its queue in the order that they were submitted.</p> <p>The <see cref=\"T:SharpDX.XAudio2.AudioBuffer\"/> structure includes details about the audio buffer's  location and size, the     part of the buffer that should actually be played, the loop region  (if any) and loop count, the context reference to be used in any callbacks relating to this buffer,  and an optional <see cref=\"F:SharpDX.XAudio2.BufferFlags.EndOfStream\"/> flag that indicates that it is the last buffer of a  contiguous sound.</p> <p>If the voice is started and has no buffers queued, the new buffer will start playing immediately.   If the voice is stopped, the buffer is added to the voice's queue and will be played when the voice starts.</p> <p>If only part of the given buffer should be played, the <strong>PlayBegin</strong> and  <strong>PlayLength</strong> fields in the <see cref=\"T:SharpDX.XAudio2.AudioBuffer\"/> can be used to specify the region  to be played.  A <strong>PlayLength</strong> value of 0 means to play the entire buffer (and in this  case <strong>PlayBegin</strong> must be 0 as well).</p> <p>If all or part of the buffer should be played in a continuous loop, the <strong>LoopBegin</strong>,  <strong>LoopLength</strong> and <strong>LoopCount</strong> fields in <see cref=\"T:SharpDX.XAudio2.AudioBuffer\"/> can  be used to specify the characteristics of the loop region. A <strong>LoopBegin</strong> value of  <see cref=\"F:SharpDX.XAudio2.XAudio2.NoLoopRegion\"/> means that no looping should be performed, and in this case <strong>LoopLength</strong> and <strong>LoopCount</strong> must be given as 0. If a loop region is specified, it must be non-empty  (<strong>LoopLength</strong> &gt; 0), and the loop count must be between 1 and <see cref=\"F:SharpDX.XAudio2.XAudio2.MaximumLoopCount\"/> inclusive  (or <see cref=\"F:SharpDX.XAudio2.AudioBuffer.LoopInfinite\"/> to specify an endless loop which will only end when  <see cref=\"M:SharpDX.XAudio2.SourceVoice.ExitLoop(System.Int32)\"/> is called). A loop count of <em>N</em> means to skip  backwards <em>N</em> times, i.e. to play the loop region <em>N+1</em> times.</p> <p>If an explicit play region is specified, it must begin and end within the given audio buffer (or, in the  compressed case, within the set of samples that the buffer will decode to). In addition, the loop region cannot  end past the end of the play region.</p> <table><tr><th>Xbox 360 </th></tr><tr><td><p>For certain audio formats, there may be additional restrictions on the valid  endpoints of any play or  loop regions; e.g. for XMA buffers, the regions can only begin or end at 128-sample boundaries in the  decoded audio.</p></td></tr></table> <p>The <em>pBuffer</em> reference can be reused or freed immediately after calling this method, but  the actual audio  data referenced by <em>pBuffer</em> must remain valid until the buffer has been fully consumed by  XAudio2 (which is  indicated by the <see cref=\"M:SharpDX.XAudio2.VoiceCallback.OnBufferEnd(System.IntPtr)\"/> callback).</p> <p>Up to <see cref=\"F:SharpDX.XAudio2.XAudio2.MaximumQueuedBuffers\"/> buffers can be queued on a voice at any one time.</p> <p><strong>SubmitSourceBuffer</strong> takes effect immediately when called from an XAudio2 callback with an OperationSet of  <see cref=\"F:SharpDX.XAudio2.XAudio2.CommitNow\"/>.</p> <table><tr><th>Xbox 360 </th></tr><tr><td><p>This method can be called from an Xbox system thread (most other XAudio2 methods cannot). However, a maximum of two source buffers can be submitted from a system thread at a time.</p></td></tr></table>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXAudio2SourceVoice::SubmitSourceBuffer']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.ixaudio2sourcevoice.ixaudio2sourcevoice.submitsourcebuffer</msdn-id>\t\n            <unmanaged>HRESULT IXAudio2SourceVoice::SubmitSourceBuffer([In] const XAUDIO2_BUFFER* pBuffer,[In] const void* pBufferWMA)</unmanaged>\t\n            <unmanaged-short>IXAudio2SourceVoice::SubmitSourceBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XAudio2.SourceVoice.FlushSourceBuffers\">\n            <summary>\t\n            Removes all pending audio buffers from the voice queue.\t\n            </summary>\t\n            <returns>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful, an error code otherwise.</returns>\t\n            <remarks>\t\n            <p>If the voice is started, the buffer that is currently playing is not removed from the queue.</p> <p><strong>FlushSourceBuffers</strong> can be called regardless of whether the voice is currently started or stopped.</p> <p>For every buffer removed, an OnBufferEnd callback will be made,  but none of the other per-buffer callbacks  (OnBufferStart, OnStreamEnd or OnLoopEnd) will be made.</p> <p><strong>FlushSourceBuffers</strong> does not change a the voice's running state, so if the voice was playing a buffer prior to the call, it will continue to do so,  and will deliver all the callbacks for the buffer normally. This means that the OnBufferEnd callback for this buffer will take place after the OnBufferEnd callbacks  for the buffers that were removed.  Thus, an XAudio2 client that calls FlushSourceBuffers cannot expect to receive OnBufferEnd callbacks in the order  in which the buffers were submitted.</p> <p>No warnings for starvation of the buffer queue will be emitted when the currently playing buffer completes; it is assumed that the client has  intentionally removed the buffers that followed it. However, there may be an audio pop if this buffer does not end at a zero crossing.  If the application  must ensure that the flush operation takes place while a specific buffer is playing?perhaps because the buffer ends with a  zero crossing?it must call <strong>FlushSourceBuffers</strong> from a callback, so that it executes synchronously.</p> <p>Calling <strong>FlushSourceBuffers</strong> after a voice is stopped and then submitting new data to the voice resets all of the voice's internal counters.</p> <p>A voice's state is not considered reset after calling <strong>FlushSourceBuffers</strong> until  the OnBufferEnd callback  occurs (if a buffer was previously submitted) or  <see cref=\"M:SharpDX.XAudio2.SourceVoice.GetState(SharpDX.XAudio2.VoiceState@)\"/> returns with <see cref=\"T:SharpDX.XAudio2.VoiceState\"/>.<strong>BuffersQueued</strong> == 0.   For example, if you stop a voice and call <strong>FlushSourceBuffers</strong>, it's still not legal to immediately call <see cref=\"M:SharpDX.XAudio2.SourceVoice.SetSourceSampleRate(System.Int32)\"/> (which requires the voice to not have any buffers currently queued), until either of the previously mentioned conditions are met.\t\n            </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXAudio2SourceVoice::FlushSourceBuffers']/*\"/>\t\n            <msdn-id>ee418466</msdn-id>\t\n            <unmanaged>HRESULT IXAudio2SourceVoice::FlushSourceBuffers()</unmanaged>\t\n            <unmanaged-short>IXAudio2SourceVoice::FlushSourceBuffers</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XAudio2.SourceVoice.Discontinuity\">\n            <summary>\t\n            Notifies an XAudio2 voice that no more buffers are coming after the last one that is currently in its queue.\t\n            </summary>\t\n            <returns>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful, an error code otherwise.</returns>\t\n            <remarks>\t\n            <p><strong>Discontinuity</strong> suppresses the warnings that normally occur in the debug build of XAudio2 when a voice runs out of audio buffers to play. It is preferable to mark the final buffer of a stream by tagging it with the <see cref=\"F:SharpDX.XAudio2.BufferFlags.EndOfStream\"/> flag, but in some cases the client may not know that a buffer is the end of a stream until after the buffer has been submitted.</p> <p>Because calling <strong>Discontinuity</strong> is equivalent to applying the <see cref=\"F:SharpDX.XAudio2.BufferFlags.EndOfStream\"/> flag retroactively to the last buffer submitted, an OnStreamEnd callback will be made when this buffer completes.</p> <table><tr><th>Note </th></tr><tr><td>XAudio2 may consume its entire buffer queue and emit a warning before the <strong>Discontinuity</strong> call takes effect, so <strong>Discontinuity</strong> is not guaranteed to suppress the warnings.</td></tr></table>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXAudio2SourceVoice::Discontinuity']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.ixaudio2sourcevoice.ixaudio2sourcevoice.discontinuity</msdn-id>\t\n            <unmanaged>HRESULT IXAudio2SourceVoice::Discontinuity()</unmanaged>\t\n            <unmanaged-short>IXAudio2SourceVoice::Discontinuity</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XAudio2.SourceVoice.ExitLoop(System.Int32)\">\n            <summary>\t\n            Stops looping the voice when it reaches the end of the current loop region.\t\n            </summary>\t\n            <param name=\"operationSet\"><dd>[in]  Identifies this call as part of a deferred batch. See the XAudio2 Operation Sets overview for more information. </dd></param>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful, an error code otherwise.  See XAudio2 Error Codes for descriptions of XAudio2 specific error codes. </p></returns>\t\n            <remarks>\t\n            <p>If the cursor for the voice is not in a loop region, <strong>ExitLoop</strong> does nothing.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXAudio2SourceVoice::ExitLoop']/*\"/>\t\n            <msdn-id>ee418465</msdn-id>\t\n            <unmanaged>HRESULT IXAudio2SourceVoice::ExitLoop([In] unsigned int OperationSet)</unmanaged>\t\n            <unmanaged-short>IXAudio2SourceVoice::ExitLoop</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XAudio2.SourceVoice.GetState(SharpDX.XAudio2.VoiceState@)\">\n            <summary>\t\n            <p>Returns the voice's current cursor position data.</p>\t\n            </summary>\t\n            <param name=\"voiceStateRef\"><dd> Pointer to an <see cref=\"T:SharpDX.XAudio2.VoiceState\"/> structure containing the state of the voice. </dd></param>\t\n            <remarks>\t\n            <p>If a client needs to obtain the correlated positions of several voices (i.e. to know exactly  which sample of a given voice is playing when a given sample of another voice is playing) it must  make <strong>GetState</strong> calls in an XAudio2 engine callback, to ensure that none of the voices advance while  the calls are being made. See the XAudio2 Callbacks overview for  information about using XAudio2 callbacks.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXAudio2SourceVoice::GetState']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.ixaudio2sourcevoice.ixaudio2sourcevoice.getstate</msdn-id>\t\n            <unmanaged>void IXAudio2SourceVoice::GetState([Out] XAUDIO2_VOICE_STATE* pVoiceState)</unmanaged>\t\n            <unmanaged-short>IXAudio2SourceVoice::GetState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XAudio2.SourceVoice.SetFrequencyRatio(System.Single,System.Int32)\">\n            <summary>\t\n            Sets the frequency adjustment ratio of the voice.\t\n            </summary>\t\n            <param name=\"ratio\"><dd>[in]  Frequency adjustment ratio. This value must be between <see cref=\"F:SharpDX.XAudio2.XAudio2.MinimumFrequencyRatio\"/> and the <em>MaxFrequencyRatio</em> parameter specified when the voice was created (see <see cref=\"M:SharpDX.XAudio2.XAudio2.CreateSourceVoice_(SharpDX.XAudio2.SourceVoice,System.IntPtr,SharpDX.XAudio2.VoiceFlags,System.Single,System.IntPtr,System.Nullable{SharpDX.XAudio2.VoiceSendDescriptors},System.Nullable{SharpDX.XAudio2.EffectChain})\"/>). <see cref=\"F:SharpDX.XAudio2.XAudio2.MinimumFrequencyRatio\"/> currently is 0.0005, which allows pitch to be lowered by up to 11 octaves. </dd></param>\t\n            <param name=\"operationSet\"><dd>[in]  Identifies this call as part of a deferred batch. See the XAudio2 Operation Sets overview for more information. </dd></param>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful, an error code otherwise.  See XAudio2 Error Codes for descriptions of error codes. </p></returns>\t\n            <remarks>\t\n            <p>Frequency adjustment is expressed as <em>source frequency</em> / <em>target frequency</em>.  Changing the frequency ratio changes the rate audio is played on the voice.  A ratio greater than 1.0 will cause the audio to play faster and a ratio less than 1.0 will cause the audio to play slower.  Additionally, the frequency ratio affects the pitch of audio on the voice.  As an example, a value of 1.0 has no effect on the audio, whereas a value of 2.0 raises pitch by one octave and 0.5 lowers it by one octave.</p> <p>If <strong>SetFrequencyRatio</strong> is called specifying a <em>Ratio</em> value outside the valid range, the method will set the frequency ratio to the nearest valid value. A warning also will be generated for debug builds.</p> <table><tr><th>Note </th></tr><tr><td><see cref=\"M:SharpDX.XAudio2.SourceVoice.GetFrequencyRatio(System.Single@)\"/> always returns the voice's actual current frequency ratio.  However, this may not match the ratio set by the most recent  <see cref=\"M:SharpDX.XAudio2.SourceVoice.SetFrequencyRatio(System.Single,System.Int32)\"/> call: the actual ratio is only changed the next time the audio engine runs after  the <see cref=\"M:SharpDX.XAudio2.SourceVoice.SetFrequencyRatio(System.Single,System.Int32)\"/> call (or after the corresponding <see cref=\"M:SharpDX.XAudio2.XAudio2.CommitChanges(System.Int32)\"/> call,  if <see cref=\"M:SharpDX.XAudio2.SourceVoice.SetFrequencyRatio(System.Single,System.Int32)\"/> was called with a deferred operation ID).</td></tr></table>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXAudio2SourceVoice::SetFrequencyRatio']/*\"/>\t\n            <msdn-id>ee418469</msdn-id>\t\n            <unmanaged>HRESULT IXAudio2SourceVoice::SetFrequencyRatio([In] float Ratio,[In] unsigned int OperationSet)</unmanaged>\t\n            <unmanaged-short>IXAudio2SourceVoice::SetFrequencyRatio</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XAudio2.SourceVoice.GetFrequencyRatio(System.Single@)\">\n            <summary>\t\n            Returns the frequency adjustment ratio of the voice.\t\n            </summary>\t\n            <param name=\"ratioRef\"><dd>[out]  Returns the current frequency adjustment ratio if successful. </dd></param>\t\n            <remarks>\t\n            <p><strong>GetFrequencyRatio</strong> always returns the voice's actual current frequency ratio.  However, this may not match the ratio set by the most recent  <see cref=\"M:SharpDX.XAudio2.SourceVoice.SetFrequencyRatio(System.Single,System.Int32)\"/> call: the actual ratio is only changed the next time the audio engine runs after  the <see cref=\"M:SharpDX.XAudio2.SourceVoice.SetFrequencyRatio(System.Single,System.Int32)\"/> call (or after the corresponding <see cref=\"M:SharpDX.XAudio2.XAudio2.CommitChanges(System.Int32)\"/> call,  if <see cref=\"M:SharpDX.XAudio2.SourceVoice.SetFrequencyRatio(System.Single,System.Int32)\"/> was called with a deferred operation ID).</p> <p>For information on frequency ratios, see <see cref=\"M:SharpDX.XAudio2.SourceVoice.SetFrequencyRatio(System.Single,System.Int32)\"/>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXAudio2SourceVoice::GetFrequencyRatio']/*\"/>\t\n            <msdn-id>ee418467</msdn-id>\t\n            <unmanaged>void IXAudio2SourceVoice::GetFrequencyRatio([Out] float* pRatio)</unmanaged>\t\n            <unmanaged-short>IXAudio2SourceVoice::GetFrequencyRatio</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XAudio2.SourceVoice.SetSourceSampleRate(System.Int32)\">\n            <summary>\t\n            Reconfigures the voice to consume source data at a different sample rate than the rate specified when the voice was created.\t\n            </summary>\t\n            <param name=\"newSourceSampleRate\"><dd>[in]  The new sample rate the voice should process submitted data at. Valid sample rates are 1kHz to 200kHz. </dd></param>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful, an error code otherwise. See XAudio2 Error Codes for descriptions of error codes.</p></returns>\t\n            <remarks>\t\n            <p>The <strong>SetSourceSampleRate</strong> method supports reuse of XAudio2 voices by allowing a voice to play sounds with a variety of sample rates. To use <strong>SetSourceSampleRate</strong> the voice must have been created without the <see cref=\"F:SharpDX.XAudio2.VoiceFlags.NoPitch\"/> or <see cref=\"F:SharpDX.XAudio2.VoiceFlags.NoSampleRateConversion\"/> flags and must not have any buffers currently queued.</p> <p>The typical use of <strong>SetSourceSampleRate</strong> is to support voice pooling. For example to support voice pooling an application would precreate all the voices it expects to use. Whenever a new sound will be played the application chooses an inactive voice or ,if all voices are busy, picks the least important voice and calls <strong>SetSourceSampleRate</strong> on the voice with the new sound's sample rate. After <strong>SetSourceSampleRate</strong> has been called on the voice, the application can immediately start submitting and playing buffers with the new sample rate. This allows the application to avoid the overhead of creating and destroying voices frequently during gameplay.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXAudio2SourceVoice::SetSourceSampleRate']/*\"/>\t\n            <msdn-id>ee418470</msdn-id>\t\n            <unmanaged>HRESULT IXAudio2SourceVoice::SetSourceSampleRate([In] unsigned int NewSourceSampleRate)</unmanaged>\t\n            <unmanaged-short>IXAudio2SourceVoice::SetSourceSampleRate</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XAudio2.SourceVoice.#ctor(SharpDX.XAudio2.XAudio2,SharpDX.Multimedia.WaveFormat)\">\n            <summary>\t\n            Creates and configures a source voice.\t\n            </summary>\t\n            <param name=\"device\">an instance of <see cref=\"T:SharpDX.XAudio2.XAudio2\"/></param>\n            <param name=\"sourceFormat\">[in]  Pointer to a <see cref=\"T:SharpDX.Multimedia.WaveFormat\"/> structure. This structure contains the expected format for all audio buffers submitted to the source voice. XAudio2 supports voice types of PCM, xWMA, ADPCM (Windows only), and XMA (Xbox 360 only). XAudio2 supports the following PCM formats.   8-bit (unsigned) integer PCM   16-bit integer PCM (Optimal format for XAudio2)   20-bit integer PCM (either in 24 or 32 bit containers)   24-bit integer PCM (either in 24 or 32 bit containers)   32-bit integer PCM   32-bit float PCM (Preferred format after 16-bit integer)   The number of channels in a source voice must be less than or equal to XAUDIO2_MAX_AUDIO_CHANNELS. The sample rate of a source voice must be between XAUDIO2_MIN_SAMPLE_RATE and XAUDIO2_MAX_SAMPLE_RATE. Note Data formats such as XMA, {{ADPCM}}, and {{xWMA}} that require more information than provided by <see cref=\"T:SharpDX.Multimedia.WaveFormat\"/> have a <see cref=\"T:SharpDX.Multimedia.WaveFormat\"/> structure as the first member in their format structure. When creating a source voice with one of those formats cast the format's structure as a <see cref=\"T:SharpDX.Multimedia.WaveFormat\"/> structure and use it as the value for pSourceFormat. </param>\n            <returns>No documentation.</returns>\n            <unmanaged>HRESULT IXAudio2::CreateSourceVoice([Out] IXAudio2SourceVoice** ppSourceVoice,[In] const WAVEFORMATEX* pSourceFormat,[None] UINT32 Flags,[None] float MaxFrequencyRatio,[In, Optional] IXAudio2VoiceCallback* pCallback,[In, Optional] const XAUDIO2_VOICE_SENDS* pSendList,[In, Optional] const XAUDIO2_EFFECT_CHAIN* pEffectChain)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.XAudio2.SourceVoice.#ctor(SharpDX.XAudio2.XAudio2,SharpDX.Multimedia.WaveFormat,System.Boolean)\">\n            <summary>\t\n            Creates and configures a source voice.\t\n            </summary>\t\n            <param name=\"device\">an instance of <see cref=\"T:SharpDX.XAudio2.XAudio2\"/></param>\n            <param name=\"sourceFormat\">[in]  Pointer to a <see cref=\"T:SharpDX.Multimedia.WaveFormat\"/> structure. This structure contains the expected format for all audio buffers submitted to the source voice. XAudio2 supports voice types of PCM, xWMA, ADPCM (Windows only), and XMA (Xbox 360 only). XAudio2 supports the following PCM formats.   8-bit (unsigned) integer PCM   16-bit integer PCM (Optimal format for XAudio2)   20-bit integer PCM (either in 24 or 32 bit containers)   24-bit integer PCM (either in 24 or 32 bit containers)   32-bit integer PCM   32-bit float PCM (Preferred format after 16-bit integer)   The number of channels in a source voice must be less than or equal to XAUDIO2_MAX_AUDIO_CHANNELS. The sample rate of a source voice must be between XAUDIO2_MIN_SAMPLE_RATE and XAUDIO2_MAX_SAMPLE_RATE. Note Data formats such as XMA, {{ADPCM}}, and {{xWMA}} that require more information than provided by <see cref=\"T:SharpDX.Multimedia.WaveFormat\"/> have a <see cref=\"T:SharpDX.Multimedia.WaveFormat\"/> structure as the first member in their format structure. When creating a source voice with one of those formats cast the format's structure as a <see cref=\"T:SharpDX.Multimedia.WaveFormat\"/> structure and use it as the value for pSourceFormat. </param>\n            <param name=\"enableCallbackEvents\">True to enable delegate callbacks on this instance. Default is false</param>\n            <returns>No documentation.</returns>\n            <unmanaged>HRESULT IXAudio2::CreateSourceVoice([Out] IXAudio2SourceVoice** ppSourceVoice,[In] const WAVEFORMATEX* pSourceFormat,[None] UINT32 Flags,[None] float MaxFrequencyRatio,[In, Optional] IXAudio2VoiceCallback* pCallback,[In, Optional] const XAUDIO2_VOICE_SENDS* pSendList,[In, Optional] const XAUDIO2_EFFECT_CHAIN* pEffectChain)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.XAudio2.SourceVoice.#ctor(SharpDX.XAudio2.XAudio2,SharpDX.Multimedia.WaveFormat,SharpDX.XAudio2.VoiceFlags)\">\n            <summary>\t\n            Creates and configures a source voice.\t\n            </summary>\t\n            <param name=\"device\">an instance of <see cref=\"T:SharpDX.XAudio2.XAudio2\"/></param>\n            <param name=\"sourceFormat\">[in]  Pointer to a <see cref=\"T:SharpDX.Multimedia.WaveFormat\"/> structure. This structure contains the expected format for all audio buffers submitted to the source voice. XAudio2 supports voice types of PCM, xWMA, ADPCM (Windows only), and XMA (Xbox 360 only). XAudio2 supports the following PCM formats.   8-bit (unsigned) integer PCM   16-bit integer PCM (Optimal format for XAudio2)   20-bit integer PCM (either in 24 or 32 bit containers)   24-bit integer PCM (either in 24 or 32 bit containers)   32-bit integer PCM   32-bit float PCM (Preferred format after 16-bit integer)   The number of channels in a source voice must be less than or equal to XAUDIO2_MAX_AUDIO_CHANNELS. The sample rate of a source voice must be between XAUDIO2_MIN_SAMPLE_RATE and XAUDIO2_MAX_SAMPLE_RATE. Note Data formats such as XMA, {{ADPCM}}, and {{xWMA}} that require more information than provided by <see cref=\"T:SharpDX.Multimedia.WaveFormat\"/> have a <see cref=\"T:SharpDX.Multimedia.WaveFormat\"/> structure as the first member in their format structure. When creating a source voice with one of those formats cast the format's structure as a <see cref=\"T:SharpDX.Multimedia.WaveFormat\"/> structure and use it as the value for pSourceFormat. </param>\n            <param name=\"flags\">[in]  Flags that specify the behavior of the source voice. A flag can be 0 or a combination of one or more of the following: ValueDescriptionXAUDIO2_VOICE_NOPITCHNo pitch control is available on the voice.?XAUDIO2_VOICE_NOSRCNo sample rate conversion is available on the voice, the voice's  outputs must have the same sample rate.Note The XAUDIO2_VOICE_NOSRC flag causes the voice to behave as though the XAUDIO2_VOICE_NOPITCH flag also is specified. ?XAUDIO2_VOICE_USEFILTERThe filter effect should be available on this voice.?XAUDIO2_VOICE_MUSICThe voice is used to play background music. The system automatically  can replace the voice with music selected by the user.? </param>\n            <returns>No documentation.</returns>\n            <unmanaged>HRESULT IXAudio2::CreateSourceVoice([Out] IXAudio2SourceVoice** ppSourceVoice,[In] const WAVEFORMATEX* pSourceFormat,[None] UINT32 Flags,[None] float MaxFrequencyRatio,[In, Optional] IXAudio2VoiceCallback* pCallback,[In, Optional] const XAUDIO2_VOICE_SENDS* pSendList,[In, Optional] const XAUDIO2_EFFECT_CHAIN* pEffectChain)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.XAudio2.SourceVoice.#ctor(SharpDX.XAudio2.XAudio2,SharpDX.Multimedia.WaveFormat,SharpDX.XAudio2.VoiceFlags,System.Boolean)\">\n            <summary>\t\n            Creates and configures a source voice.\t\n            </summary>\t\n            <param name=\"device\">an instance of <see cref=\"T:SharpDX.XAudio2.XAudio2\"/></param>\n            <param name=\"sourceFormat\">[in]  Pointer to a <see cref=\"T:SharpDX.Multimedia.WaveFormat\"/> structure. This structure contains the expected format for all audio buffers submitted to the source voice. XAudio2 supports voice types of PCM, xWMA, ADPCM (Windows only), and XMA (Xbox 360 only). XAudio2 supports the following PCM formats.   8-bit (unsigned) integer PCM   16-bit integer PCM (Optimal format for XAudio2)   20-bit integer PCM (either in 24 or 32 bit containers)   24-bit integer PCM (either in 24 or 32 bit containers)   32-bit integer PCM   32-bit float PCM (Preferred format after 16-bit integer)   The number of channels in a source voice must be less than or equal to XAUDIO2_MAX_AUDIO_CHANNELS. The sample rate of a source voice must be between XAUDIO2_MIN_SAMPLE_RATE and XAUDIO2_MAX_SAMPLE_RATE. Note Data formats such as XMA, {{ADPCM}}, and {{xWMA}} that require more information than provided by <see cref=\"T:SharpDX.Multimedia.WaveFormat\"/> have a <see cref=\"T:SharpDX.Multimedia.WaveFormat\"/> structure as the first member in their format structure. When creating a source voice with one of those formats cast the format's structure as a <see cref=\"T:SharpDX.Multimedia.WaveFormat\"/> structure and use it as the value for pSourceFormat. </param>\n            <param name=\"flags\">[in]  Flags that specify the behavior of the source voice. A flag can be 0 or a combination of one or more of the following: ValueDescriptionXAUDIO2_VOICE_NOPITCHNo pitch control is available on the voice.?XAUDIO2_VOICE_NOSRCNo sample rate conversion is available on the voice, the voice's  outputs must have the same sample rate.Note The XAUDIO2_VOICE_NOSRC flag causes the voice to behave as though the XAUDIO2_VOICE_NOPITCH flag also is specified. ?XAUDIO2_VOICE_USEFILTERThe filter effect should be available on this voice.?XAUDIO2_VOICE_MUSICThe voice is used to play background music. The system automatically  can replace the voice with music selected by the user.? </param>\n            <param name=\"enableCallbackEvents\">True to enable delegate callbacks on this instance. Default is false</param>\n            <returns>No documentation.</returns>\n            <unmanaged>HRESULT IXAudio2::CreateSourceVoice([Out] IXAudio2SourceVoice** ppSourceVoice,[In] const WAVEFORMATEX* pSourceFormat,[None] UINT32 Flags,[None] float MaxFrequencyRatio,[In, Optional] IXAudio2VoiceCallback* pCallback,[In, Optional] const XAUDIO2_VOICE_SENDS* pSendList,[In, Optional] const XAUDIO2_EFFECT_CHAIN* pEffectChain)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.XAudio2.SourceVoice.#ctor(SharpDX.XAudio2.XAudio2,SharpDX.Multimedia.WaveFormat,SharpDX.XAudio2.VoiceFlags,System.Single)\">\n            <summary>\t\n            Creates and configures a source voice.\t\n            </summary>\t\n            <param name=\"device\">an instance of <see cref=\"T:SharpDX.XAudio2.XAudio2\"/></param>\n            <param name=\"sourceFormat\">[in]  Pointer to a <see cref=\"T:SharpDX.Multimedia.WaveFormat\"/> structure. This structure contains the expected format for all audio buffers submitted to the source voice. XAudio2 supports voice types of PCM, xWMA, ADPCM (Windows only), and XMA (Xbox 360 only). XAudio2 supports the following PCM formats.   8-bit (unsigned) integer PCM   16-bit integer PCM (Optimal format for XAudio2)   20-bit integer PCM (either in 24 or 32 bit containers)   24-bit integer PCM (either in 24 or 32 bit containers)   32-bit integer PCM   32-bit float PCM (Preferred format after 16-bit integer)   The number of channels in a source voice must be less than or equal to XAUDIO2_MAX_AUDIO_CHANNELS. The sample rate of a source voice must be between XAUDIO2_MIN_SAMPLE_RATE and XAUDIO2_MAX_SAMPLE_RATE. Note Data formats such as XMA, {{ADPCM}}, and {{xWMA}} that require more information than provided by <see cref=\"T:SharpDX.Multimedia.WaveFormat\"/> have a <see cref=\"T:SharpDX.Multimedia.WaveFormat\"/> structure as the first member in their format structure. When creating a source voice with one of those formats cast the format's structure as a <see cref=\"T:SharpDX.Multimedia.WaveFormat\"/> structure and use it as the value for pSourceFormat. </param>\n            <param name=\"flags\">[in]  Flags that specify the behavior of the source voice. A flag can be 0 or a combination of one or more of the following: ValueDescriptionXAUDIO2_VOICE_NOPITCHNo pitch control is available on the voice.?XAUDIO2_VOICE_NOSRCNo sample rate conversion is available on the voice, the voice's  outputs must have the same sample rate.Note The XAUDIO2_VOICE_NOSRC flag causes the voice to behave as though the XAUDIO2_VOICE_NOPITCH flag also is specified. ?XAUDIO2_VOICE_USEFILTERThe filter effect should be available on this voice.?XAUDIO2_VOICE_MUSICThe voice is used to play background music. The system automatically  can replace the voice with music selected by the user.? </param>\n            <param name=\"maxFrequencyRatio\">[in]  Highest allowable frequency ratio that can be set on this voice. The value for this argument must be between XAUDIO2_MIN_FREQ_RATIO and XAUDIO2_MAX_FREQ_RATIO. Subsequent calls to <see cref=\"M:SharpDX.XAudio2.SourceVoice.SetFrequencyRatio(System.Single,System.Int32)\"/> are clamped between XAUDIO2_MIN_FREQ_RATIO and MaxFrequencyRatio. The maximum value for this argument is defined as XAUDIO2_MAX_FREQ_RATIO, which allows pitch to be raised by up to 10 octaves. If MaxFrequencyRatio is less than 1.0, the voice will use that ratio immediately after being created (rather than the default of 1.0). Xbox 360  For XMA voices there is an additional restriction on the MaxFrequencyRatio argument and the voice's sample rate. The product of these two numbers cannot exceed XAUDIO2_MAX_RATIO_TIMES_RATE_XMA_MONO for one-channel voices or XAUDIO2_MAX_RATIO_TIMES_RATE_XMA_MULTICHANNEL for voices with any other number of channels. If the value specified for MaxFrequencyRatio is too high for the specified format, the call to CreateSourceVoice fails and produces a debug message.  Note XAudio2's memory usage can be reduced by using the lowest possible MaxFrequencyRatio value. </param>\n            <returns>No documentation.</returns>\n            <unmanaged>HRESULT IXAudio2::CreateSourceVoice([Out] IXAudio2SourceVoice** ppSourceVoice,[In] const WAVEFORMATEX* pSourceFormat,[None] UINT32 Flags,[None] float MaxFrequencyRatio,[In, Optional] IXAudio2VoiceCallback* pCallback,[In, Optional] const XAUDIO2_VOICE_SENDS* pSendList,[In, Optional] const XAUDIO2_EFFECT_CHAIN* pEffectChain)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.XAudio2.SourceVoice.#ctor(SharpDX.XAudio2.XAudio2,SharpDX.Multimedia.WaveFormat,SharpDX.XAudio2.VoiceFlags,System.Single,SharpDX.XAudio2.VoiceCallback)\">\n            <summary>\t\n            Creates and configures a source voice.\t\n            </summary>\t\n            <param name=\"device\">an instance of <see cref=\"T:SharpDX.XAudio2.XAudio2\"/></param>\n            <param name=\"sourceFormat\">[in]  Pointer to a <see cref=\"T:SharpDX.Multimedia.WaveFormat\"/> structure. This structure contains the expected format for all audio buffers submitted to the source voice. XAudio2 supports voice types of PCM, xWMA, ADPCM (Windows only), and XMA (Xbox 360 only). XAudio2 supports the following PCM formats.   8-bit (unsigned) integer PCM   16-bit integer PCM (Optimal format for XAudio2)   20-bit integer PCM (either in 24 or 32 bit containers)   24-bit integer PCM (either in 24 or 32 bit containers)   32-bit integer PCM   32-bit float PCM (Preferred format after 16-bit integer)   The number of channels in a source voice must be less than or equal to XAUDIO2_MAX_AUDIO_CHANNELS. The sample rate of a source voice must be between XAUDIO2_MIN_SAMPLE_RATE and XAUDIO2_MAX_SAMPLE_RATE. Note Data formats such as XMA, {{ADPCM}}, and {{xWMA}} that require more information than provided by <see cref=\"T:SharpDX.Multimedia.WaveFormat\"/> have a <see cref=\"T:SharpDX.Multimedia.WaveFormat\"/> structure as the first member in their format structure. When creating a source voice with one of those formats cast the format's structure as a <see cref=\"T:SharpDX.Multimedia.WaveFormat\"/> structure and use it as the value for pSourceFormat. </param>\n            <param name=\"flags\">[in]  Flags that specify the behavior of the source voice. A flag can be 0 or a combination of one or more of the following: ValueDescriptionXAUDIO2_VOICE_NOPITCHNo pitch control is available on the voice.?XAUDIO2_VOICE_NOSRCNo sample rate conversion is available on the voice, the voice's  outputs must have the same sample rate.Note The XAUDIO2_VOICE_NOSRC flag causes the voice to behave as though the XAUDIO2_VOICE_NOPITCH flag also is specified. ?XAUDIO2_VOICE_USEFILTERThe filter effect should be available on this voice.?XAUDIO2_VOICE_MUSICThe voice is used to play background music. The system automatically  can replace the voice with music selected by the user.? </param>\n            <param name=\"maxFrequencyRatio\">[in]  Highest allowable frequency ratio that can be set on this voice. The value for this argument must be between XAUDIO2_MIN_FREQ_RATIO and XAUDIO2_MAX_FREQ_RATIO. Subsequent calls to <see cref=\"M:SharpDX.XAudio2.SourceVoice.SetFrequencyRatio(System.Single,System.Int32)\"/> are clamped between XAUDIO2_MIN_FREQ_RATIO and MaxFrequencyRatio. The maximum value for this argument is defined as XAUDIO2_MAX_FREQ_RATIO, which allows pitch to be raised by up to 10 octaves. If MaxFrequencyRatio is less than 1.0, the voice will use that ratio immediately after being created (rather than the default of 1.0). Xbox 360  For XMA voices there is an additional restriction on the MaxFrequencyRatio argument and the voice's sample rate. The product of these two numbers cannot exceed XAUDIO2_MAX_RATIO_TIMES_RATE_XMA_MONO for one-channel voices or XAUDIO2_MAX_RATIO_TIMES_RATE_XMA_MULTICHANNEL for voices with any other number of channels. If the value specified for MaxFrequencyRatio is too high for the specified format, the call to CreateSourceVoice fails and produces a debug message.  Note XAudio2's memory usage can be reduced by using the lowest possible MaxFrequencyRatio value. </param>\n            <param name=\"callback\">[in, optional]  Pointer to a client-provided callback interface, <see cref=\"T:SharpDX.XAudio2.VoiceCallback\"/>. </param>\n            <returns>No documentation.</returns>\n            <unmanaged>HRESULT IXAudio2::CreateSourceVoice([Out] IXAudio2SourceVoice** ppSourceVoice,[In] const WAVEFORMATEX* pSourceFormat,[None] UINT32 Flags,[None] float MaxFrequencyRatio,[In, Optional] IXAudio2VoiceCallback* pCallback,[In, Optional] const XAUDIO2_VOICE_SENDS* pSendList,[In, Optional] const XAUDIO2_EFFECT_CHAIN* pEffectChain)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.XAudio2.SourceVoice.#ctor(SharpDX.XAudio2.XAudio2,SharpDX.Multimedia.WaveFormat,SharpDX.XAudio2.VoiceFlags,System.Single,System.Boolean)\">\n            <summary>\t\n            Creates and configures a source voice with callback through delegates.\n            </summary>\t\n            <param name=\"device\">an instance of <see cref=\"T:SharpDX.XAudio2.XAudio2\"/></param>\n            <param name=\"sourceFormat\">[in]  Pointer to a <see cref=\"T:SharpDX.Multimedia.WaveFormat\"/> structure. This structure contains the expected format for all audio buffers submitted to the source voice. XAudio2 supports voice types of PCM, xWMA, ADPCM (Windows only), and XMA (Xbox 360 only). XAudio2 supports the following PCM formats.   8-bit (unsigned) integer PCM   16-bit integer PCM (Optimal format for XAudio2)   20-bit integer PCM (either in 24 or 32 bit containers)   24-bit integer PCM (either in 24 or 32 bit containers)   32-bit integer PCM   32-bit float PCM (Preferred format after 16-bit integer)   The number of channels in a source voice must be less than or equal to XAUDIO2_MAX_AUDIO_CHANNELS. The sample rate of a source voice must be between XAUDIO2_MIN_SAMPLE_RATE and XAUDIO2_MAX_SAMPLE_RATE. Note Data formats such as XMA, {{ADPCM}}, and {{xWMA}} that require more information than provided by <see cref=\"T:SharpDX.Multimedia.WaveFormat\"/> have a <see cref=\"T:SharpDX.Multimedia.WaveFormat\"/> structure as the first member in their format structure. When creating a source voice with one of those formats cast the format's structure as a <see cref=\"T:SharpDX.Multimedia.WaveFormat\"/> structure and use it as the value for pSourceFormat. </param>\n            <param name=\"flags\">[in]  Flags that specify the behavior of the source voice. A flag can be 0 or a combination of one or more of the following: ValueDescriptionXAUDIO2_VOICE_NOPITCHNo pitch control is available on the voice.?XAUDIO2_VOICE_NOSRCNo sample rate conversion is available on the voice, the voice's  outputs must have the same sample rate.Note The XAUDIO2_VOICE_NOSRC flag causes the voice to behave as though the XAUDIO2_VOICE_NOPITCH flag also is specified. ?XAUDIO2_VOICE_USEFILTERThe filter effect should be available on this voice.?XAUDIO2_VOICE_MUSICThe voice is used to play background music. The system automatically  can replace the voice with music selected by the user.? </param>\n            <param name=\"maxFrequencyRatio\">[in]  Highest allowable frequency ratio that can be set on this voice. The value for this argument must be between XAUDIO2_MIN_FREQ_RATIO and XAUDIO2_MAX_FREQ_RATIO. Subsequent calls to <see cref=\"M:SharpDX.XAudio2.SourceVoice.SetFrequencyRatio(System.Single,System.Int32)\"/> are clamped between XAUDIO2_MIN_FREQ_RATIO and MaxFrequencyRatio. The maximum value for this argument is defined as XAUDIO2_MAX_FREQ_RATIO, which allows pitch to be raised by up to 10 octaves. If MaxFrequencyRatio is less than 1.0, the voice will use that ratio immediately after being created (rather than the default of 1.0). Xbox 360  For XMA voices there is an additional restriction on the MaxFrequencyRatio argument and the voice's sample rate. The product of these two numbers cannot exceed XAUDIO2_MAX_RATIO_TIMES_RATE_XMA_MONO for one-channel voices or XAUDIO2_MAX_RATIO_TIMES_RATE_XMA_MULTICHANNEL for voices with any other number of channels. If the value specified for MaxFrequencyRatio is too high for the specified format, the call to CreateSourceVoice fails and produces a debug message.  Note XAudio2's memory usage can be reduced by using the lowest possible MaxFrequencyRatio value. </param>\n            <param name=\"enableDelegateCallbacks\">True to enable delegate callbacks on this instance. Default is false</param>\n            <returns>No enableCallbackEvents.</returns>\n            <unmanaged>HRESULT IXAudio2::CreateSourceVoice([Out] IXAudio2SourceVoice** ppSourceVoice,[In] const WAVEFORMATEX* pSourceFormat,[None] UINT32 Flags,[None] float MaxFrequencyRatio,[In, Optional] IXAudio2VoiceCallback* pCallback,[In, Optional] const XAUDIO2_VOICE_SENDS* pSendList,[In, Optional] const XAUDIO2_EFFECT_CHAIN* pEffectChain)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.XAudio2.SourceVoice.Start\">\n            <summary>\t\n            Starts consumption and processing of audio by the voice. Delivers the result to any connected submix or mastering voices, or to the output device, with CommitNow changes.\n            </summary>\t\n            <returns>No documentation.</returns>\n            <unmanaged>HRESULT IXAudio2SourceVoice::Start([None] UINT32 Flags,[None] UINT32 OperationSet)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.XAudio2.SourceVoice.SetFrequencyRatio(System.Single)\">\n            <summary>\n            Sets the frequency ratio.\n            </summary>\n            <param name=\"ratio\">The ratio.</param>\n            <returns></returns>\n        </member>\n        <member name=\"M:SharpDX.XAudio2.SourceVoice.Start(System.Int32)\">\n            <summary>\t\n            Starts consumption and processing of audio by the voice. Delivers the result to any connected submix or mastering voices, or to the output device.\t\n            </summary>\t\n            <param name=\"operationSet\">[in]  Identifies this call as part of a deferred batch. See the {{XAudio2 Operation Sets}} overview for more information. </param>\n            <returns>No documentation.</returns>\n            <unmanaged>HRESULT IXAudio2SourceVoice::Start([None] UINT32 Flags,[None] UINT32 OperationSet)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.XAudio2.SourceVoice.SubmitSourceBuffer(SharpDX.XAudio2.AudioBuffer,System.UInt32[])\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"bufferRef\">No documentation.</param>\t\n            <param name=\"decodedXMWAPacketInfo\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXAudio2SourceVoice::SubmitSourceBuffer']/*\"/>\t\n            <unmanaged>HRESULT IXAudio2SourceVoice::SubmitSourceBuffer([In] const XAUDIO2_BUFFER* pBuffer,[In, Optional] const XAUDIO2_BUFFER_WMA* pBufferWMA)</unmanaged>\t\n        </member>\n        <member name=\"P:SharpDX.XAudio2.SourceVoice.State\">\n            <summary>\t\n            <p>Returns the voice's current cursor position data.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>If a client needs to obtain the correlated positions of several voices (i.e. to know exactly  which sample of a given voice is playing when a given sample of another voice is playing) it must  make <strong>GetState</strong> calls in an XAudio2 engine callback, to ensure that none of the voices advance while  the calls are being made. See the XAudio2 Callbacks overview for  information about using XAudio2 callbacks.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXAudio2SourceVoice::GetState']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.ixaudio2sourcevoice.ixaudio2sourcevoice.getstate</msdn-id>\t\n            <unmanaged>GetState</unmanaged>\t\n            <unmanaged-short>GetState</unmanaged-short>\t\n            <unmanaged>void IXAudio2SourceVoice::GetState([Out] XAUDIO2_VOICE_STATE* pVoiceState)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.XAudio2.SourceVoice.FrequencyRatio\">\n            <summary>\t\n            Returns the frequency adjustment ratio of the voice.\t\n            </summary>\t\n            <remarks>\t\n            <p><strong>GetFrequencyRatio</strong> always returns the voice's actual current frequency ratio.  However, this may not match the ratio set by the most recent  <see cref=\"M:SharpDX.XAudio2.SourceVoice.SetFrequencyRatio(System.Single,System.Int32)\"/> call: the actual ratio is only changed the next time the audio engine runs after  the <see cref=\"M:SharpDX.XAudio2.SourceVoice.SetFrequencyRatio(System.Single,System.Int32)\"/> call (or after the corresponding <see cref=\"M:SharpDX.XAudio2.XAudio2.CommitChanges(System.Int32)\"/> call,  if <see cref=\"M:SharpDX.XAudio2.SourceVoice.SetFrequencyRatio(System.Single,System.Int32)\"/> was called with a deferred operation ID).</p> <p>For information on frequency ratios, see <see cref=\"M:SharpDX.XAudio2.SourceVoice.SetFrequencyRatio(System.Single,System.Int32)\"/>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXAudio2SourceVoice::GetFrequencyRatio']/*\"/>\t\n            <msdn-id>ee418467</msdn-id>\t\n            <unmanaged>GetFrequencyRatio</unmanaged>\t\n            <unmanaged-short>GetFrequencyRatio</unmanaged-short>\t\n            <unmanaged>void IXAudio2SourceVoice::GetFrequencyRatio([Out] float* pRatio)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.XAudio2.SourceVoice.SourceSampleRate\">\n            <summary>\t\n            Reconfigures the voice to consume source data at a different sample rate than the rate specified when the voice was created.\t\n            </summary>\t\n            <remarks>\t\n            <p>The <strong>SetSourceSampleRate</strong> method supports reuse of XAudio2 voices by allowing a voice to play sounds with a variety of sample rates. To use <strong>SetSourceSampleRate</strong> the voice must have been created without the <see cref=\"F:SharpDX.XAudio2.VoiceFlags.NoPitch\"/> or <see cref=\"F:SharpDX.XAudio2.VoiceFlags.NoSampleRateConversion\"/> flags and must not have any buffers currently queued.</p> <p>The typical use of <strong>SetSourceSampleRate</strong> is to support voice pooling. For example to support voice pooling an application would precreate all the voices it expects to use. Whenever a new sound will be played the application chooses an inactive voice or ,if all voices are busy, picks the least important voice and calls <strong>SetSourceSampleRate</strong> on the voice with the new sound's sample rate. After <strong>SetSourceSampleRate</strong> has been called on the voice, the application can immediately start submitting and playing buffers with the new sample rate. This allows the application to avoid the overhead of creating and destroying voices frequently during gameplay.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXAudio2SourceVoice::SetSourceSampleRate']/*\"/>\t\n            <msdn-id>ee418470</msdn-id>\t\n            <unmanaged>SetSourceSampleRate</unmanaged>\t\n            <unmanaged-short>SetSourceSampleRate</unmanaged-short>\t\n            <unmanaged>HRESULT IXAudio2SourceVoice::SetSourceSampleRate([In] unsigned int NewSourceSampleRate)</unmanaged>\n        </member>\n        <member name=\"E:SharpDX.XAudio2.SourceVoice.ProcessingPassStart\">\n            <summary>\n            Occurs just before the processing pass for the voice begins.\n            </summary>\n            <remarks>\n            In order to use this delegate, this instance must have been intialized with events delegate support.\n            </remarks>\n        </member>\n        <member name=\"E:SharpDX.XAudio2.SourceVoice.ProcessingPassEnd\">\n            <summary>\n            Occurs just after the processing pass for the voice ends.\n            </summary>\n            <remarks>\n            In order to use this delegate, this instance must have been intialized with events delegate support.\n            </remarks>\n        </member>\n        <member name=\"E:SharpDX.XAudio2.SourceVoice.StreamEnd\">\n            <summary>\n            Occurs when the voice has just finished playing a contiguous audio stream.\n            </summary>\n            <remarks>\n            In order to use this delegate, this instance must have been intialized with events delegate support.\n            </remarks>\n        </member>\n        <member name=\"E:SharpDX.XAudio2.SourceVoice.BufferStart\">\n            <summary>\n            Occurs when the voice is about to start processing a new audio buffer.\n            </summary>\n            <remarks>\n            In order to use this delegate, this instance must have been intialized with events delegate support.\n            </remarks>\n        </member>\n        <member name=\"E:SharpDX.XAudio2.SourceVoice.BufferEnd\">\n            <summary>\n            Occurs when the voice finishes processing a buffer.\n            </summary>\n            <remarks>\n            In order to use this delegate, this instance must have been intialized with events delegate support.\n            </remarks>\n        </member>\n        <member name=\"E:SharpDX.XAudio2.SourceVoice.LoopEnd\">\n            <summary>\n            Occurs when a critical error occurs during voice processing.\n            </summary>\n            <remarks>\n            In order to use this delegate, this instance must have been intialized with events delegate support.\n            </remarks>\n        </member>\n        <member name=\"E:SharpDX.XAudio2.SourceVoice.VoiceError\">\n            <summary>\n            Occurs when [voice error].\n            </summary>\n            <remarks>\n            In order to use this delegate, this instance must have been intialized with events delegate support.\n            </remarks>\n        </member>\n        <member name=\"T:SharpDX.XAudio2.VoiceCallback\">\n            <summary>\t\n            The<strong><see cref=\"T:SharpDX.XAudio2.VoiceCallback\"/></strong>interface contains methods that notify the client when certain events happen in a givenIXAudio2SourceVoice. This interface should be implemented by the XAudio2 client. XAudio2 calls these methods through an interface reference provided by the client in theIXAudio2::CreateSourceVoicemethod. Methods in this interface return<strong>void</strong>, rather than an <see cref=\"T:SharpDX.Result\"/>.<p>See the XAudio2 Callbacks topic for restrictions on callback implementation.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXAudio2VoiceCallback']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.ixaudio2voicecallback.ixaudio2voicecallback</msdn-id>\t\n            <unmanaged>IXAudio2VoiceCallback</unmanaged>\t\n            <unmanaged-short>IXAudio2VoiceCallback</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XAudio2.VoiceCallback.OnVoiceProcessingPassStart(System.Int32)\">\n            <summary>\t\n            Called during each processing pass for each voice, just before XAudio2 reads data from the voice's buffer queue.\t\n            </summary>\t\n            <param name=\"bytesRequired\"> The number of bytes that must be submitted immediately to avoid starvation. This allows the implementation of just-in-time streaming scenarios; the client can keep the absolute minimum data queued on the voice at all times, and pass it fresh data just before the data is required. This model provides the lowest possible latency attainable with XAudio2. For xWMA and XMA data BytesRequired will always be zero, since the concept of a frame of xWMA or XMA data is meaningless. Note In a situation where there is always plenty of data available on the source voice, BytesRequired should always report zero, because it doesn't need any samples immediately to avoid glitching. </param>\n            <unmanaged>void IXAudio2VoiceCallback::OnVoiceProcessingPassStart([None] UINT32 BytesRequired)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.XAudio2.VoiceCallback.OnVoiceProcessingPassEnd\">\n            <summary>\t\n            Called just after the processing pass for the voice ends.\t\n            </summary>\t\n            <unmanaged>void IXAudio2VoiceCallback::OnVoiceProcessingPassEnd()</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.XAudio2.VoiceCallback.OnStreamEnd\">\n            <summary>\t\n            Called when the voice has just finished playing a contiguous audio stream.\t\n            </summary>\t\n            <unmanaged>void IXAudio2VoiceCallback::OnStreamEnd()</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.XAudio2.VoiceCallback.OnBufferStart(System.IntPtr)\">\n            <summary>\t\n            Called when the voice is about to start processing a new audio buffer.\t\n            </summary>\t\n            <param name=\"context\"> Context pointer that was assigned to the pContext member of the <see cref=\"T:SharpDX.XAudio2.AudioBuffer\"/> structure when the buffer was submitted. </param>\n            <unmanaged>void IXAudio2VoiceCallback::OnBufferStart([None] void* pBufferContext)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.XAudio2.VoiceCallback.OnBufferEnd(System.IntPtr)\">\n            <summary>\t\n            Called when the voice finishes processing a buffer.\t\n            </summary>\t\n            <param name=\"context\"> Context pointer assigned to the pContext member of the <see cref=\"T:SharpDX.XAudio2.AudioBuffer\"/> structure when the buffer was submitted. </param>\n            <unmanaged>void IXAudio2VoiceCallback::OnBufferEnd([None] void* pBufferContext)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.XAudio2.VoiceCallback.OnLoopEnd(System.IntPtr)\">\n            <summary>\t\n            Called when the voice reaches the end position of a loop.\t\n            </summary>\t\n            <param name=\"context\"> Context pointer that was assigned to the pContext member of the <see cref=\"T:SharpDX.XAudio2.AudioBuffer\"/> structure when the buffer was submitted. </param>\n            <unmanaged>void IXAudio2VoiceCallback::OnLoopEnd([None] void* pBufferContext)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.XAudio2.VoiceCallback.OnVoiceError(System.IntPtr,SharpDX.Result)\">\n            <summary>\t\n            Called when a critical error occurs during voice processing.\t\n            </summary>\t\n            <param name=\"context\"> Context pointer that was assigned to the pContext member of the <see cref=\"T:SharpDX.XAudio2.AudioBuffer\"/> structure when the buffer was submitted. </param>\n            <param name=\"error\"> The HRESULT code of the error encountered. </param>\n            <unmanaged>void IXAudio2VoiceCallback::OnVoiceError([None] void* pBufferContext,[None] HRESULT Error)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.XAudio2.SubmixVoice\">\n            <summary>\t\n            A submix voice is used primarily for performance improvements and effects processing. Data buffers cannot be submitted directly to submix voices and will not be audible unless submitted to a mastering voice. A submix voice can be used to ensure that a particular set of voice data is converted to the same format and/or to have a particular effect chain processed on the collective result.<p><strong><see cref=\"T:SharpDX.XAudio2.SubmixVoice\"/></strong> inherits directly from <see cref=\"T:SharpDX.XAudio2.Voice\"/>, but does not implement methods specific to submix voices. The interface type exists solely because some of the base class methods are implemented differently for submix voices. Having a separate type for these voices helps client code to distinguish the different voice types and to benefit from C++ type safety.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXAudio2SubmixVoice']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.ixaudio2submixvoice.ixaudio2submixvoice</msdn-id>\t\n            <unmanaged>IXAudio2SubmixVoice</unmanaged>\t\n            <unmanaged-short>IXAudio2SubmixVoice</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XAudio2.SubmixVoice.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.XAudio2.SubmixVoice\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.XAudio2.SubmixVoice.op_Explicit(System.IntPtr)~SharpDX.XAudio2.SubmixVoice\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.XAudio2.SubmixVoice\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.XAudio2.SubmixVoice.#ctor(SharpDX.XAudio2.XAudio2)\">\n            <summary>\t\n            Creates and configures a mastering voice on the default audio device, with stereo channels at 44100Hz.\n            </summary>\t\n            <param name=\"device\">an instance of <see cref=\"T:SharpDX.XAudio2.XAudio2\"/></param>\n            <unmanaged>HRESULT IXAudio2::CreateSubmixVoice([Out] IXAudio2SubmixVoice** ppSubmixVoice,[None] UINT32 InputChannels,[None] UINT32 InputSampleRate,[None] UINT32 Flags,[None] UINT32 DeviceIndex,[In, Optional] const XAUDIO2_EFFECT_CHAIN* pEffectChain)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.XAudio2.SubmixVoice.#ctor(SharpDX.XAudio2.XAudio2,System.Int32)\">\n            <summary>\t\n            Creates and configures a mastering voice on the default audio device and 44100Hz.\n            </summary>\t\n            <param name=\"device\">an instance of <see cref=\"T:SharpDX.XAudio2.XAudio2\"/></param>\n            <param name=\"inputChannels\">[in]  Number of channels the mastering voice expects in its input audio. InputChannels must be less than or equal to XAUDIO2_MAX_AUDIO_CHANNELS. InputChannels can be set to XAUDIO2_DEFAULT_CHANNELS, with the default being determined by the current platform. Windows  Attempts to detect the system speaker configuration setup.  Xbox 360  Defaults to 5.1 surround.  </param>\n            <unmanaged>HRESULT IXAudio2::CreateSubmixVoice([Out] IXAudio2SubmixVoice** ppSubmixVoice,[None] UINT32 InputChannels,[None] UINT32 InputSampleRate,[None] UINT32 Flags,[None] UINT32 DeviceIndex,[In, Optional] const XAUDIO2_EFFECT_CHAIN* pEffectChain)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.XAudio2.SubmixVoice.#ctor(SharpDX.XAudio2.XAudio2,System.Int32,System.Int32)\">\n            <summary>\t\n            Creates and configures a mastering voice on the default audio device.\n            </summary>\t\n            <param name=\"device\">an instance of <see cref=\"T:SharpDX.XAudio2.XAudio2\"/></param>\n            <param name=\"inputChannels\">[in]  Number of channels the mastering voice expects in its input audio. InputChannels must be less than or equal to XAUDIO2_MAX_AUDIO_CHANNELS. InputChannels can be set to XAUDIO2_DEFAULT_CHANNELS, with the default being determined by the current platform. Windows  Attempts to detect the system speaker configuration setup.  Xbox 360  Defaults to 5.1 surround.  </param>\n            <param name=\"inputSampleRate\">[in]  Sample rate of the input audio data of the mastering voice. This rate must be a multiple of XAUDIO2_QUANTUM_DENOMINATOR. InputSampleRate must be between XAUDIO2_MIN_SAMPLE_RATE and XAUDIO2_MAX_SAMPLE_RATE. InputSampleRate can be set to XAUDIO2_DEFAULT_SAMPLERATE, with the default being determined by the current platform. Windows  Windows XP defaults to 44100. Windows Vista and Windows 7 default to the setting specified in the Sound Control Panel. The default for this setting is 44100 (or 48000 if required by the driver).  Xbox 360  Defaults to 48000.  </param>\n            <unmanaged>HRESULT IXAudio2::CreateSubmixVoice([Out] IXAudio2SubmixVoice** ppSubmixVoice,[None] UINT32 InputChannels,[None] UINT32 InputSampleRate,[None] UINT32 Flags,[None] UINT32 DeviceIndex,[In, Optional] const XAUDIO2_EFFECT_CHAIN* pEffectChain)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.XAudio2.SubmixVoice.#ctor(SharpDX.XAudio2.XAudio2,System.Int32,System.Int32,SharpDX.XAudio2.VoiceSendFlags,System.Int32)\">\n            <summary>\t\n            Creates and configures a submix voice.\t\n            </summary>\t\n            <param name=\"device\">an instance of <see cref=\"T:SharpDX.XAudio2.XAudio2\"/></param>\n            <param name=\"inputChannels\">[in]  Number of channels in the input audio data of the submix voice. InputChannels must be less than or equal to XAUDIO2_MAX_AUDIO_CHANNELS. </param>\n            <param name=\"inputSampleRate\">[in]  Sample rate of the input audio data of submix voice. This rate must be a multiple of  XAUDIO2_QUANTUM_DENOMINATOR.  InputSampleRate must be between XAUDIO2_MIN_SAMPLE_RATE and XAUDIO2_MAX_SAMPLE_RATE. </param>\n            <param name=\"flags\">[in]  Flags that specify the behavior of the submix voice. Can be 0 or the following: ValueDescriptionXAUDIO2_VOICE_USEFILTERThe filter effect should be available on this voice.? </param>\n            <param name=\"processingStage\">[in]  An arbitrary number that specifies when this voice is processed with respect to other submix  voices, if the XAudio2 engine is running other submix voices. The voice is processed after all other  voices that include a smaller ProcessingStage value, and before all other voices  that include a larger ProcessingStage value. Voices that include the same  ProcessingStage value are processed in any order. A submix voice cannot send to  another submix voice with a lower or equal ProcessingStage value; this prevents  audio being lost due to a submix cycle. </param>\n            <returns>No documentation.</returns>\n            <unmanaged>HRESULT IXAudio2::CreateSubmixVoice([Out] IXAudio2SubmixVoice** ppSubmixVoice,[None] UINT32 InputChannels,[None] UINT32 InputSampleRate,[None] UINT32 Flags,[None] UINT32 ProcessingStage,[In, Optional] const XAUDIO2_VOICE_SENDS* pSendList,[In, Optional] const XAUDIO2_EFFECT_CHAIN* pEffectChain)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.XAudio2.XAudio2\">\n            <summary>\t\n            <see cref=\"T:SharpDX.XAudio2.XAudio2\"/> is the interface for the<strong>XAudio2</strong>object that manages all audio engine states,  the audio processing thread, the voice graph, and so forth. This is the only XAudio2 interface  that is derived from the COM<strong><see cref=\"T:SharpDX.ComObject\"/></strong>interface. It controls the lifetime  of the<strong>XAudio2</strong>object using two methods derived from<strong><see cref=\"T:SharpDX.ComObject\"/></strong>:IXAudio2::AddRefandIXAudio2::Release. No other XAudio2 objects are reference-counted. Their lifetimes are explicitly controlled using<em>create</em>and<em>destroy</em>calls, and are bounded by the lifetime of the XAudio2 object  that owns them.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXAudio2']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.ixaudio2.ixaudio2</msdn-id>\t\n            <unmanaged>IXAudio2</unmanaged>\t\n            <unmanaged-short>IXAudio2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.XAudio2.MaximumBufferBytes\">\n            <summary>Constant MaximumBufferBytes.</summary>\n            <unmanaged>XAUDIO2_MAX_BUFFER_BYTES</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.XAudio2.XAudio2.MaximumQueuedBuffers\">\n            <summary>Constant MaximumQueuedBuffers.</summary>\n            <unmanaged>XAUDIO2_MAX_QUEUED_BUFFERS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.XAudio2.XAudio2.MaximumAudioChannels\">\n            <summary>Constant MaximumAudioChannels.</summary>\n            <unmanaged>XAUDIO2_MAX_AUDIO_CHANNELS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.XAudio2.XAudio2.MinimumSampleRate\">\n            <summary>Constant MinimumSampleRate.</summary>\n            <unmanaged>XAUDIO2_MIN_SAMPLE_RATE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.XAudio2.XAudio2.MaximumSampleRate\">\n            <summary>Constant MaximumSampleRate.</summary>\n            <unmanaged>XAUDIO2_MAX_SAMPLE_RATE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.XAudio2.XAudio2.MaximumVolumeLevel\">\n            <summary>Constant MaximumVolumeLevel.</summary>\n            <unmanaged>XAUDIO2_MAX_VOLUME_LEVEL</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.XAudio2.XAudio2.MinimumFrequencyRatio\">\n            <summary>Constant MinimumFrequencyRatio.</summary>\n            <unmanaged>XAUDIO2_MIN_FREQ_RATIO</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.XAudio2.XAudio2.MaximumFrequencyRatio\">\n            <summary>Constant MaximumFrequencyRatio.</summary>\n            <unmanaged>XAUDIO2_MAX_FREQ_RATIO</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.XAudio2.XAudio2.DefaultFrequencyRatio\">\n            <summary>Constant DefaultFrequencyRatio.</summary>\n            <unmanaged>XAUDIO2_DEFAULT_FREQ_RATIO</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.XAudio2.XAudio2.MaximumFilterOneOverQ\">\n            <summary>Constant MaximumFilterOneOverQ.</summary>\n            <unmanaged>XAUDIO2_MAX_FILTER_ONEOVERQ</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.XAudio2.XAudio2.MaximumFilterFrequency\">\n            <summary>Constant MaximumFilterFrequency.</summary>\n            <unmanaged>XAUDIO2_MAX_FILTER_FREQUENCY</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.XAudio2.XAudio2.MaximumLoopCount\">\n            <summary>Constant MaximumLoopCount.</summary>\n            <unmanaged>XAUDIO2_MAX_LOOP_COUNT</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.XAudio2.XAudio2.CommitNow\">\n            <summary>Constant CommitNow.</summary>\n            <unmanaged>XAUDIO2_COMMIT_NOW</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.XAudio2.XAudio2.CommitAll\">\n            <summary>Constant CommitAll.</summary>\n            <unmanaged>XAUDIO2_COMMIT_ALL</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.XAudio2.XAudio2.NoLoopRegion\">\n            <summary>Constant NoLoopRegion.</summary>\n            <unmanaged>XAUDIO2_NO_LOOP_REGION</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.XAudio2.XAudio2.DefaultChannels\">\n            <summary>Constant DefaultChannels.</summary>\n            <unmanaged>XAUDIO2_DEFAULT_CHANNELS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.XAudio2.XAudio2.DefaultSampleRate\">\n            <summary>Constant DefaultSampleRate.</summary>\n            <unmanaged>XAUDIO2_DEFAULT_SAMPLERATE</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.XAudio2.XAudio2.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.XAudio2.XAudio2\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.XAudio2.XAudio2.op_Explicit(System.IntPtr)~SharpDX.XAudio2.XAudio2\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.XAudio2.XAudio2\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"F:SharpDX.XAudio2.XAudio2.CLSID_XAudio2_Debug\">\n            <summary>Constant CLSID_XAudio2_Debug.</summary>\n            <unmanaged>CLSID_XAudio2_Debug</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.XAudio2.XAudio2.CLSID_XAudio2\">\n            <summary>Constant CLSID_XAudio2.</summary>\n            <unmanaged>CLSID_XAudio2</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.XAudio2.XAudio2.IID_IXAudio2\">\n            <summary>Constant IID_IXAudio2.</summary>\n            <unmanaged>IID_IXAudio2</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.XAudio2.XAudio2.GetDeviceCount(System.Int32@)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"countRef\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXAudio2::GetDeviceCount']/*\"/>\t\n            <unmanaged>HRESULT IXAudio2::GetDeviceCount([Out] unsigned int* pCount)</unmanaged>\t\n            <unmanaged-short>IXAudio2::GetDeviceCount</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XAudio2.XAudio2.GetDeviceDetails(System.Int32,SharpDX.XAudio2.DeviceDetails@)\">\n            <summary>\t\n            <p>Returns information about an audio output device.</p>\t\n            </summary>\t\n            <param name=\"index\"><dd>[in]  Index of the device to be queried. This value must be less than the count returned by <see cref=\"M:SharpDX.XAudio2.XAudio2.GetDeviceCount(System.Int32@)\"/>. </dd></param>\t\n            <param name=\"deviceDetailsRef\"><dd>[out]  On success, reference to an <see cref=\"T:SharpDX.XAudio2.DeviceDetails\"/> structure that is returned. </dd></param>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful, an error code otherwise. See XAudio2 Error Codes for descriptions of XAudio2 specific error codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>GetDeviceDetails</strong> and <see cref=\"M:SharpDX.XAudio2.XAudio2.GetDeviceCount(System.Int32@)\"/> are the only <see cref=\"T:SharpDX.XAudio2.XAudio2\"/> methods that may be called before calling <see cref=\"M:SharpDX.XAudio2.XAudio2.Initialize(System.Int32,SharpDX.XAudio2.ProcessorSpecifier)\"/>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXAudio2::GetDeviceDetails']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.ixaudio2.ixaudio2.getdevicedetails</msdn-id>\t\n            <unmanaged>HRESULT IXAudio2::GetDeviceDetails([In] unsigned int Index,[Out] XAUDIO2_DEVICE_DETAILS* pDeviceDetails)</unmanaged>\t\n            <unmanaged-short>IXAudio2::GetDeviceDetails</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XAudio2.XAudio2.Initialize(System.Int32,SharpDX.XAudio2.ProcessorSpecifier)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"flags\">No documentation.</param>\t\n            <param name=\"xAudio2Processor\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXAudio2::Initialize']/*\"/>\t\n            <unmanaged>HRESULT IXAudio2::Initialize([In] unsigned int Flags,[In] XAUDIO2_WINDOWS_PROCESSOR_SPECIFIER XAudio2Processor)</unmanaged>\t\n            <unmanaged-short>IXAudio2::Initialize</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XAudio2.XAudio2.RegisterForCallbacks_(System.IntPtr)\">\n            <summary>\t\n            Adds anIXAudio2EngineCallbackreference to theXAudio2engine callback list.\t\n            </summary>\t\n            <param name=\"callbackRef\">No documentation.</param>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful, an error code otherwise.  See XAudio2 Error Codes for descriptions of XAudio2 specific error codes.</p></returns>\t\n            <remarks>\t\n            <p>This method can be called multiple times, allowing different components or layers of the same application to manage their own engine callback implementations separately.</p> <p>It is illegal to call <strong>RegisterForCallbacks</strong> from within a callback. If <strong>RegisterForCallbacks</strong> is called within a callback XAUDIO2_E_INVALID_CALL will be returned.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXAudio2::RegisterForCallbacks']/*\"/>\t\n            <msdn-id>ee418620</msdn-id>\t\n            <unmanaged>HRESULT IXAudio2::RegisterForCallbacks([In] IXAudio2EngineCallback* pCallback)</unmanaged>\t\n            <unmanaged-short>IXAudio2::RegisterForCallbacks</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XAudio2.XAudio2.UnregisterForCallbacks_(System.IntPtr)\">\n            <summary>\t\n            Removes anIXAudio2EngineCallbackreference from theXAudio2engine callback list.\t\n            </summary>\t\n            <param name=\"callbackRef\">No documentation.</param>\t\n            <remarks>\t\n            <p>It is illegal to call <strong>UnregisterForCallbacks</strong> from within a callback. If <strong>UnregisterForCallbacks</strong> is called within a callback XAUDIO2_E_INVALID_CALL will be returned.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXAudio2::UnregisterForCallbacks']/*\"/>\t\n            <msdn-id>ee418630</msdn-id>\t\n            <unmanaged>void IXAudio2::UnregisterForCallbacks([In] IXAudio2EngineCallback* pCallback)</unmanaged>\t\n            <unmanaged-short>IXAudio2::UnregisterForCallbacks</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XAudio2.XAudio2.CreateSourceVoice_(SharpDX.XAudio2.SourceVoice,System.IntPtr,SharpDX.XAudio2.VoiceFlags,System.Single,System.IntPtr,System.Nullable{SharpDX.XAudio2.VoiceSendDescriptors},System.Nullable{SharpDX.XAudio2.EffectChain})\">\n            <summary>\t\n            Creates and configures a source voice.\t\n            </summary>\t\n            <param name=\"sourceVoiceOut\"><dd>[out]  If successful, returns a reference to the new <see cref=\"T:SharpDX.XAudio2.SourceVoice\"/> object. </dd></param>\t\n            <param name=\"sourceFormatRef\"><dd>[in]  Pointer to a <strong><see cref=\"T:SharpDX.Multimedia.WaveFormat\"/></strong> structure. This structure contains the expected format for all audio buffers submitted to the source voice. <p>XAudio2 supports PCM and ADPCM voice types. XAudio2 supports the following PCM formats.</p> <ul> <li> <p>8-bit (unsigned) integer PCM</p> </li> <li> <p>16-bit integer PCM (optimal format for XAudio2)</p> </li> <li> <p>20-bit integer PCM (either in 24 or 32 bit containers)</p> </li> <li> <p>24-bit integer PCM (either in 24 or 32 bit containers)</p> </li> <li> <p>32-bit integer PCM</p> </li> <li> <p>32-bit float PCM (preferred format after 16-bit integer)</p> </li> </ul> <p>The number of channels in a source voice must be less than or equal to <see cref=\"F:SharpDX.XAudio2.XAudio2.MaximumAudioChannels\"/>. The sample rate of a source voice must be between <see cref=\"F:SharpDX.XAudio2.XAudio2.MinimumSampleRate\"/> and <see cref=\"F:SharpDX.XAudio2.XAudio2.MaximumSampleRate\"/>.</p> <table><tr><th>Note </th></tr><tr><td>Data formats such as  ADPCM that require more information than provided by  <strong><see cref=\"T:SharpDX.Multimedia.WaveFormat\"/></strong> have a <strong><see cref=\"T:SharpDX.Multimedia.WaveFormat\"/></strong> structure as the first member in their format structures. When you create a source voice  with one of those formats, cast the format's structure as a <strong><see cref=\"T:SharpDX.Multimedia.WaveFormat\"/></strong> structure  and use it as the value for <em>pSourceFormat</em>.</td></tr></table> </dd></param>\t\n            <param name=\"flags\"><dd>[in]  Flags that specify the behavior of the source voice. A flag can be 0 or a combination  of one or more of the following: <table><tr><th>Value</th><th>Description</th></tr><tr><td><see cref=\"F:SharpDX.XAudio2.VoiceFlags.NoPitch\"/></td><td>No pitch control is available on the voice.?</td></tr><tr><td><see cref=\"F:SharpDX.XAudio2.VoiceFlags.NoSampleRateConversion\"/></td><td>No sample rate conversion is available on the voice.  The voice's outputs must have the same sample rate. Note The <see cref=\"F:SharpDX.XAudio2.VoiceFlags.NoSampleRateConversion\"/> flag causes the voice to behave  as though the <see cref=\"F:SharpDX.XAudio2.VoiceFlags.NoPitch\"/> flag also is specified. ?</td></tr><tr><td><see cref=\"F:SharpDX.XAudio2.VoiceSendFlags.UseFilter\"/></td><td>The filter effect should be available on this voice.?</td></tr></table> </dd></param>\t\n            <param name=\"maxFrequencyRatio\"><dd>[in]  Highest allowable frequency ratio that can be set on this voice. The value for this argument must be between <see cref=\"F:SharpDX.XAudio2.XAudio2.MinimumFrequencyRatio\"/> and <see cref=\"F:SharpDX.XAudio2.XAudio2.MaximumFrequencyRatio\"/>. Subsequent calls to <see cref=\"M:SharpDX.XAudio2.SourceVoice.SetFrequencyRatio(System.Single,System.Int32)\"/> are clamped between <see cref=\"F:SharpDX.XAudio2.XAudio2.MinimumFrequencyRatio\"/> and <strong>MaxFrequencyRatio</strong>. <p>The maximum value for this argument is defined as <see cref=\"F:SharpDX.XAudio2.XAudio2.MaximumFrequencyRatio\"/>, which allows pitch to be raised by up to 10 octaves.</p> <p>If <em>MaxFrequencyRatio</em> is less than 1.0, the voice will use that ratio immediately after being created (rather than the default of 1.0).</p> <table><tr><th>Xbox 360 </th></tr><tr><td> <p>For XMA voices, there is one more restriction on the <em>MaxFrequencyRatio</em> argument  and the voice's sample rate. The product of these two numbers  cannot exceed XAUDIO2_MAX_RATIO_TIMES_RATE_XMA_MONO for one-channel voices  or XAUDIO2_MAX_RATIO_TIMES_RATE_XMA_MULTICHANNEL for voices with any other number of channels.  If the value specified for <em>MaxFrequencyRatio</em> is too high for the specified format,  the call to <strong>CreateSourceVoice</strong> fails and produces a debug message.</p> </td></tr></table> <table><tr><th>Note </th></tr><tr><td> You can use the lowest possible <em>MaxFrequencyRatio</em> value to reduce XAudio2's memory usage.</td></tr></table> </dd></param>\t\n            <param name=\"callbackRef\"><dd>[in, optional]  Pointer to a client-provided callback interface, <see cref=\"T:SharpDX.XAudio2.VoiceCallback\"/>. </dd></param>\t\n            <param name=\"sendListRef\"><dd>[in, optional]  Pointer to a list of <see cref=\"T:SharpDX.XAudio2.VoiceSendDescriptors\"/> structures  that describe the set of destination voices for the source voice.  If <em>pSendList</em> is <c>null</c>, the send list defaults to a single output to the first mastering voice created. </dd></param>\t\n            <param name=\"effectChainRef\"><dd>[in, optional]  Pointer to a list of <see cref=\"T:SharpDX.XAudio2.EffectChain\"/> structures that describe  an effect chain to use in the source voice. </dd></param>\t\n            <returns><p> Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful; otherwise, an error code. </p> <p> See XAudio2 Error Codes for descriptions of XAudio2-specific error codes.</p></returns>\t\n            <remarks>\t\n            <p>Source voices read audio data from the client. They process the data and send it to the XAudio2 processing graph.</p> <p>A source voice includes a variable-rate sample rate conversion,  to convert data from the source format sample rate to the output rate required for the voice send list. If you use a <c>null</c> send list,  the target sample rate will be the mastering voice's input sample rate.  If you provide a single voice in <em>pSendList</em>, that voice's input sample rate  is the target rate. If you provide multiple voices in the <em>pSendList</em>,  all the source voice's output voices must be running at the same input sample rate.</p> <p>You cannot create any source or submix voices until a mastering voice exists,  and you cannot destory a mastering voice if any source or submix voices still exist.</p> <p>Source voices are always processed before any submix or mastering voices.  This means that you do not need a <em>ProcessingStage</em> parameter to control the processing order.</p> <p>When first created, source voices are in the stopped state.</p> <p>XAudio2 uses an internal memory pooler for voices with the same format. This means memory allocation for voices will occur less frequently as more voices  are created and then destroyed. To minimize just-in-time allocations, a title can create the anticipated maximum number of voices needed up front, and then delete them as necessary. Voices will then be reused from the XAudio2 pool. The memory pool is tied to an XAudio2 engine instance.  You can reclaim all the memory used by an instance of the XAudio2 engine  by destroying the XAudio2 object and recreating it as necessary (forcing the memory pool  to grow via preallocation would have to be reapplied as needed).</p> <p>It is illegal to call <strong>CreateSourceVoice</strong> from within a callback. If you call <strong>CreateSourceVoice</strong> within a callback, XAUDIO2_E_INVALID_CALL is returned.</p> <p>The <see cref=\"T:SharpDX.XAudio2.EffectChain\"/> that is passed in  as the <em>pEffectChain</em> argument and any <see cref=\"T:SharpDX.XAudio2.EffectDescriptor\"/> information  contained within it are no longer needed after <strong>CreateSourceVoice</strong> successfully completes, and may be deleted immediately after <strong>CreateSourceVoice</strong> is called.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXAudio2::CreateSourceVoice']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.ixaudio2.ixaudio2.createsourcevoice</msdn-id>\t\n            <unmanaged>HRESULT IXAudio2::CreateSourceVoice([Out, Fast] IXAudio2SourceVoice** ppSourceVoice,[In] const void* pSourceFormat,[In] XAUDIO2_VOICE_FLAGS Flags,[In] float MaxFrequencyRatio,[In, Optional] IXAudio2VoiceCallback* pCallback,[In, Optional] const XAUDIO2_VOICE_SENDS* pSendList,[In, Optional] const XAUDIO2_EFFECT_CHAIN* pEffectChain)</unmanaged>\t\n            <unmanaged-short>IXAudio2::CreateSourceVoice</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XAudio2.XAudio2.CreateSubmixVoice(SharpDX.XAudio2.SubmixVoice,System.Int32,System.Int32,SharpDX.XAudio2.VoiceSendFlags,System.Int32,System.Nullable{SharpDX.XAudio2.VoiceSendDescriptors},System.Nullable{SharpDX.XAudio2.EffectChain})\">\n            <summary>\t\n            Creates and configures a submix voice.\t\n            </summary>\t\n            <param name=\"submixVoiceOut\"><dd>[out]  On success, returns a reference to the new  <see cref=\"T:SharpDX.XAudio2.SubmixVoice\"/> object. </dd></param>\t\n            <param name=\"inputChannels\"><dd>[in]  Number of channels in the input audio data of the submix voice. <p><em>InputChannels</em> must be less than or equal to <see cref=\"F:SharpDX.XAudio2.XAudio2.MaximumAudioChannels\"/>.</p> </dd></param>\t\n            <param name=\"inputSampleRate\"><dd>[in]  Sample rate of the input audio data of submix voice. This rate must be a multiple of  XAUDIO2_QUANTUM_DENOMINATOR.  <em>InputSampleRate</em> must be between <see cref=\"F:SharpDX.XAudio2.XAudio2.MinimumSampleRate\"/> and <see cref=\"F:SharpDX.XAudio2.XAudio2.MaximumSampleRate\"/>. </dd></param>\t\n            <param name=\"flags\"><dd>[in]  Flags that specify the behavior of the submix voice. It can be 0 or the following: <table><tr><th>Value</th><th>Description</th></tr><tr><td><see cref=\"F:SharpDX.XAudio2.VoiceSendFlags.UseFilter\"/></td><td>The filter effect should be available on this voice.?</td></tr></table> </dd></param>\t\n            <param name=\"processingStage\"><dd>[in]  An arbitrary number that specifies when this voice is processed with respect to other submix  voices, if the XAudio2 engine is running other submix voices. The voice is processed after all other  voices that include a smaller <em>ProcessingStage</em> value and before all other voices  that include a larger <em>ProcessingStage</em> value. Voices that include the same  <em>ProcessingStage</em> value are processed in any order. A submix voice cannot send to  another submix voice with a lower or equal <em>ProcessingStage</em> value. This prevents  audio being lost due to a submix cycle. </dd></param>\t\n            <param name=\"sendListRef\"><dd>[in, optional]  Pointer to a list of <see cref=\"T:SharpDX.XAudio2.VoiceSendDescriptors\"/> structures that describe the set  of destination voices for the submix voice. If <em>pSendList</em> is <c>null</c>, the send list will default to a single output to the  first mastering voice created. </dd></param>\t\n            <param name=\"effectChainRef\"><dd>[in, optional]  Pointer to a list of <see cref=\"T:SharpDX.XAudio2.EffectChain\"/> structures that describe an  effect chain to use in the submix voice. </dd></param>\t\n            <returns><p> Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful; otherwise, an error code. </p> <p> See XAudio2 Error Codes for descriptions of XAudio2 specific error codes.</p></returns>\t\n            <remarks>\t\n            <p>Submix voices receive the output of one or more source or submix voices. They process the output,  and then send it to another submix voice or to a mastering voice.</p> <p>A submix voice performs a sample rate conversion from the input sample rate to the input rate of  its output voices in <em>pSendList</em>. If you specify multiple voice sends, they must  all have the input same sample rate.</p> <p>You cannot create any source or submix voices until a mastering voice exists,  and you cannot destroy a mastering voice if any source or submix voices still exist.</p> <p>When first created, submix voices are in the started state.</p> <p>XAudio2 uses an internal memory pooler for voices with the same format.  This means that memory allocation for voices will occur less frequently as more voices are created  and then destroyed.  To minimize just-in-time allocations, a title can create the anticipated maximum number of voices needed up front, and then delete them as necessary. Voices will then be reused from the XAudio2 pool. The memory pool is tied  to an XAudio2 engine instance.  You can reclaim all the memory used by an instance  of the XAudio2 engine by destroying the XAudio2 object and recreating it as necessary  (forcing the memory pool to grow via preallocation would have to be reapplied as needed).</p> <p>It is illegal to call <strong>CreateSubmixVoice</strong> from within a callback. If you call <strong>CreateSubmixVoice</strong> within a callback, XAUDIO2_E_INVALID_CALL is returned.</p> <p>The <see cref=\"T:SharpDX.XAudio2.EffectChain\"/> that is passed in  as the <em>pEffectChain</em> argument and any <see cref=\"T:SharpDX.XAudio2.EffectDescriptor\"/> information  contained within it are no longer needed after <strong>CreateSubmixVoice</strong> successfully completes,  and may be deleted immediately after <strong>CreateSubmixVoice</strong> is called.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXAudio2::CreateSubmixVoice']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.ixaudio2.ixaudio2.createsubmixvoice</msdn-id>\t\n            <unmanaged>HRESULT IXAudio2::CreateSubmixVoice([Out, Fast] IXAudio2SubmixVoice** ppSubmixVoice,[In] unsigned int InputChannels,[In] unsigned int InputSampleRate,[In] XAUDIO2_VOICE_SEND_FLAGS Flags,[In] unsigned int ProcessingStage,[In, Optional] const XAUDIO2_VOICE_SENDS* pSendList,[In, Optional] const XAUDIO2_EFFECT_CHAIN* pEffectChain)</unmanaged>\t\n            <unmanaged-short>IXAudio2::CreateSubmixVoice</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XAudio2.XAudio2.CreateMasteringVoice(SharpDX.XAudio2.MasteringVoice,System.Int32,System.Int32,System.Int32,System.Int32,System.Nullable{SharpDX.XAudio2.EffectChain})\">\n            <summary>\t\n            <p>Creates and configures a mastering voice.</p>\t\n            </summary>\t\n            <param name=\"masteringVoiceOut\"><dd>[out]  If successful, returns a reference to the new <see cref=\"T:SharpDX.XAudio2.MasteringVoice\"/> object. </dd></param>\t\n            <param name=\"inputChannels\"><dd>[in]  Number of channels the mastering voice expects in its input audio. <p><em>InputChannels</em> must be less than or equal to <see cref=\"F:SharpDX.XAudio2.XAudio2.MaximumAudioChannels\"/>.</p> <p><em>InputChannels</em> can be set to <see cref=\"F:SharpDX.XAudio2.XAudio2.DefaultChannels\"/>, with the default being determined by the current platform.</p> <table><tr><th>Windows </th></tr><tr><td> <p>Attempts to detect the system speaker configuration setup.</p> </td></tr></table> <table><tr><th>Xbox 360 </th></tr><tr><td> <p>Defaults to 5.1 surround.</p> </td></tr></table> </dd></param>\t\n            <param name=\"inputSampleRate\"><dd>[in]  Sample rate of the input audio data of the mastering voice. This rate must be a multiple of XAUDIO2_QUANTUM_DENOMINATOR. <p><em>InputSampleRate</em> must be between <see cref=\"F:SharpDX.XAudio2.XAudio2.MinimumSampleRate\"/> and <see cref=\"F:SharpDX.XAudio2.XAudio2.MaximumSampleRate\"/>.</p> <p><em>InputSampleRate</em> can be set to <see cref=\"F:SharpDX.XAudio2.XAudio2.DefaultSampleRate\"/>, with the default being determined by the current platform.</p> <table><tr><th>Windows </th></tr><tr><td> <p>Windows XP defaults to 44100.</p> <p>Windows Vista and Windows 7 default to the setting specified in the Sound Control Panel. The default for this setting is 44100 (or 48000 if required by the driver).</p> </td></tr></table> <table><tr><th>Xbox 360 </th></tr><tr><td> <p>Defaults to 48000.</p> </td></tr></table> </dd></param>\t\n            <param name=\"flags\"><dd>[in]  Flags that specify the behavior of the mastering voice. Must be 0. </dd></param>\t\n            <param name=\"deviceIndex\"><dd>[in]  Index of the output device that will be sent input by the mastering voice. Specifying the default value of 0 causes XAudio2 to select the global default audio device. </dd></param>\t\n            <param name=\"effectChainRef\"><dd>[in, optional]  Pointer to an <see cref=\"T:SharpDX.XAudio2.EffectChain\"/> structure that describe an effect chain to use in the mastering voice, or <c>null</c> to use no effects. </dd></param>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful, an error code otherwise. See XAudio2 Error Codes for descriptions of XAudio2 specific error codes.</p></returns>\t\n            <remarks>\t\n            <p>Mastering voices receive the output of one or more source or submix voices. They process the data and send it to the audio output device.</p> <p>Typically, a mastering voice should be created with an input sample rate that will be used by the majority of the title's audio content. The mastering voice performs a sample rate conversion from this input sample rate to the actual device output rate. Alternatively, <see cref=\"M:SharpDX.XAudio2.XAudio2.GetDeviceDetails(System.Int32,SharpDX.XAudio2.DeviceDetails@)\"/> can be used to find the native audio rate, and that can be used throughout the majority of the title's audio graph.</p> <p>No source or submix voices can be created until a mastering voice exists, and a mastering voice cannot be destroyed if any source or submix voices still exist.</p> <p>Mastering voices are always processed after all source and submix voices. This means that you need not specify a <em>ProcessingStage</em> parameter to control the processing order.</p> <p>Several mastering voices can exist at once, but only one of them can be started. Only one device can be used by XAudio2 at a time.</p> <p>When first created, mastering voices are in the started state.</p> <p>It is illegal to call <strong>CreateMasteringVoice</strong> from within a callback. If <strong>CreateMasteringVoice</strong> is called within a callback XAUDIO2_E_INVALID_CALL will be returned.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXAudio2::CreateMasteringVoice']/*\"/>\t\n            <msdn-id>ee418605</msdn-id>\t\n            <unmanaged>HRESULT IXAudio2::CreateMasteringVoice([Out, Fast] IXAudio2MasteringVoice** ppMasteringVoice,[In] unsigned int InputChannels,[In] unsigned int InputSampleRate,[In] unsigned int Flags,[In] unsigned int DeviceIndex,[In, Optional] const XAUDIO2_EFFECT_CHAIN* pEffectChain)</unmanaged>\t\n            <unmanaged-short>IXAudio2::CreateMasteringVoice</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XAudio2.XAudio2.StartEngine\">\n            <summary>\t\n            Starts the audio processing thread.\t\n            </summary>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful, an error code otherwise.  See XAudio2 Error Codes for descriptions of XAudio2 specific error codes.</p></returns>\t\n            <remarks>\t\n            <p>After <strong>StartEngine</strong> is called, all started voices begin to consume audio. All enabled effects start running, and the resulting audio is sent to any connected output devices. When XAudio2 is first initialized, the engine is already in the started state.</p> <p>It is illegal to call <strong>StartEngine</strong> from within a callback. If <strong>StartEngine</strong> is called within a callback XAUDIO2_E_INVALID_CALL will be returned.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXAudio2::StartEngine']/*\"/>\t\n            <msdn-id>ee418626</msdn-id>\t\n            <unmanaged>HRESULT IXAudio2::StartEngine()</unmanaged>\t\n            <unmanaged-short>IXAudio2::StartEngine</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XAudio2.XAudio2.StopEngine\">\n            <summary>\t\n            Stops the audio processing thread.\t\n            </summary>\t\n            <remarks>\t\n            <p>When <strong>StopEngine</strong> is called, all output is stopped immediately. However, the audio graph is left untouched, preserving effect parameters, effect histories (for example, the data stored by a reverb effect in order to emit echoes of a previous sound), voice states, pending source buffers, cursor positions, and so forth. When the engine is restarted, the resulting audio output will be identical?apart from a period of silence?to the output that would have been produced if the engine had never been stopped.</p> <p>It is illegal to call <strong>StopEngine</strong> from within a callback. If <strong>StopEngine</strong> is called within a callback XAUDIO2_E_INVALID_CALL will be returned.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXAudio2::StopEngine']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.ixaudio2.ixaudio2.stopengine</msdn-id>\t\n            <unmanaged>void IXAudio2::StopEngine()</unmanaged>\t\n            <unmanaged-short>IXAudio2::StopEngine</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XAudio2.XAudio2.CommitChanges(System.Int32)\">\n            <summary>\t\n            Atomically applies a set of operations that are tagged with a given identifier.\t\n            </summary>\t\n            <param name=\"operationSet\"><dd>[in]  Identifier of the set of operations to be applied. To commit all pending operations, pass <strong><see cref=\"F:SharpDX.XAudio2.XAudio2.CommitAll\"/></strong>. </dd></param>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful; returns an error code otherwise. See XAudio2 Error Codes for descriptions of XAudio2 specific error codes.</p></returns>\t\n            <remarks>\t\n            <p><strong>CommitChanges</strong> does nothing if no operations are tagged with the given identifier.</p> <p>See the XAudio2 Operation Sets overview about working with <strong>CommitChanges</strong> and XAudio2 interface methods that may be deferred.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXAudio2::CommitChanges']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.ixaudio2.ixaudio2.commitchanges</msdn-id>\t\n            <unmanaged>HRESULT IXAudio2::CommitChanges([In] unsigned int OperationSet)</unmanaged>\t\n            <unmanaged-short>IXAudio2::CommitChanges</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XAudio2.XAudio2.GetPerformanceData(SharpDX.XAudio2.PerformanceData@)\">\n            <summary>\t\n            Returns current resource usage details, such as available memory or CPU usage.\t\n            </summary>\t\n            <param name=\"perfDataRef\"><dd>[out]  On success, reference to an <see cref=\"T:SharpDX.XAudio2.PerformanceData\"/> structure that is returned. </dd></param>\t\n            <remarks>\t\n            <p>For specific information on the statistics returned by <strong>GetPerformanceData</strong>, see the <see cref=\"T:SharpDX.XAudio2.PerformanceData\"/> structure reference.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXAudio2::GetPerformanceData']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.ixaudio2.ixaudio2.getperformancedata</msdn-id>\t\n            <unmanaged>void IXAudio2::GetPerformanceData([Out] XAUDIO2_PERFORMANCE_DATA* pPerfData)</unmanaged>\t\n            <unmanaged-short>IXAudio2::GetPerformanceData</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XAudio2.XAudio2.SetDebugConfiguration(SharpDX.XAudio2.DebugConfiguration,System.IntPtr)\">\n            <summary>\t\n            Changes global debug logging options for XAudio2.<table><tr><th>Note </th></tr><tr><td>This function has no effect in this version of XAudio2.</td></tr></table>\t\n            </summary>\t\n            <param name=\"debugConfigurationRef\"><dd> Pointer to a <see cref=\"T:SharpDX.XAudio2.DebugConfiguration\"/> structure that contains the new debug configuration. </dd></param>\t\n            <param name=\"reservedRef\">No documentation.</param>\t\n            <remarks>\t\n            <p>This function only has an effect in debug versions of the XAudio2 library. <strong>SetDebugConfiguration</strong> sets the debug configuration for all instances of XAudio2 in the current process, not just the one interface on which the call was made.</p> <p>The default debug level produces only ERROR and WARNING messages. See <see cref=\"T:SharpDX.XAudio2.DebugConfiguration\"/> for other debug levels.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXAudio2::SetDebugConfiguration']/*\"/>\t\n            <msdn-id>ee418624</msdn-id>\t\n            <unmanaged>void IXAudio2::SetDebugConfiguration([In, Value] const XAUDIO2_DEBUG_CONFIGURATION* pDebugConfiguration,[In, Optional] void* pReserved)</unmanaged>\t\n            <unmanaged-short>IXAudio2::SetDebugConfiguration</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XAudio2.XAudio2.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.XAudio2.XAudio2\"/> class.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.XAudio2.XAudio2.#ctor(SharpDX.XAudio2.XAudio2Flags,SharpDX.XAudio2.ProcessorSpecifier)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.XAudio2.XAudio2\"/> class.\n            </summary>\n            <param name=\"flags\">Specify a Debug or Normal XAudio2 instance.</param>\n            <param name=\"processorSpecifier\">The processor specifier.</param>\n        </member>\n        <member name=\"M:SharpDX.XAudio2.XAudio2.GetDeviceDetails(System.Int32)\">\n            <summary>\t\n            Returns information about an audio output device.\t\n            </summary>\t\n            <param name=\"index\">[in]  Index of the device to be queried. This value must be less than the count returned by <see cref=\"M:SharpDX.XAudio2.XAudio2.GetDeviceCount(System.Int32@)\"/>. </param>\n            <returns>On success, pointer to an <see cref=\"T:SharpDX.XAudio2.DeviceDetails\"/> structure that is returned. </returns>\n            <unmanaged>HRESULT IXAudio2::GetDeviceDetails([None] UINT32 Index,[Out] XAUDIO2_DEVICE_DETAILS* pDeviceDetails)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.XAudio2.XAudio2.AmplitudeRatioToDecibels(System.Single)\">\n            <summary>\n            Calculate a decibel from a volume.\n            </summary>\n            <param name=\"volume\">The volume.</param>\n            <returns>a dB value</returns>\n        </member>\n        <member name=\"M:SharpDX.XAudio2.XAudio2.CutoffFrequencyToRadians(System.Single,System.Int32)\">\n            <summary>\n            Calculate radians from a cutoffs frequency.\n            </summary>\n            <param name=\"cutoffFrequency\">The cutoff frequency.</param>\n            <param name=\"sampleRate\">The sample rate.</param>\n            <returns>radian</returns>\n        </member>\n        <member name=\"M:SharpDX.XAudio2.XAudio2.RadiansToCutoffFrequency(System.Single,System.Single)\">\n            <summary>\n            Calculate a cutoff frequency from a radian.\n            </summary>\n            <param name=\"radians\">The radians.</param>\n            <param name=\"sampleRate\">The sample rate.</param>\n            <returns>cutoff frequency</returns>\n        </member>\n        <member name=\"M:SharpDX.XAudio2.XAudio2.DecibelsToAmplitudeRatio(System.Single)\">\n            <summary>\n            Calculate a volume from a decibel\n            </summary>\n            <param name=\"decibels\">a dB value</param>\n            <returns>an amplitude value</returns>\n        </member>\n        <member name=\"M:SharpDX.XAudio2.XAudio2.FrequencyRatioToSemitones(System.Single)\">\n            <summary>\n            Calculate semitones from a Frequency ratio\n            </summary>\n            <param name=\"frequencyRatio\">The frequency ratio.</param>\n            <returns>semitones</returns>\n        </member>\n        <member name=\"M:SharpDX.XAudio2.XAudio2.SemitonesToFrequencyRatio(System.Single)\">\n            <summary>\n            Calculate frequency from semitones.\n            </summary>\n            <param name=\"semitones\">The semitones.</param>\n            <returns>the frequency</returns>\n        </member>\n        <member name=\"M:SharpDX.XAudio2.XAudio2.CommitChanges\">\n            <summary>\t\n            Atomically applies a set of operations for all pending operations.\n            </summary>\t\n            <unmanaged>HRESULT IXAudio2::CommitChanges([None] UINT32 OperationSet)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.XAudio2.XAudio2.DeviceCount\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXAudio2::GetDeviceCount']/*\"/>\t\n            <unmanaged>GetDeviceCount</unmanaged>\t\n            <unmanaged-short>GetDeviceCount</unmanaged-short>\t\n            <unmanaged>HRESULT IXAudio2::GetDeviceCount([Out] unsigned int* pCount)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.XAudio2.XAudio2.PerformanceData\">\n            <summary>\t\n            Returns current resource usage details, such as available memory or CPU usage.\t\n            </summary>\t\n            <remarks>\t\n            <p>For specific information on the statistics returned by <strong>GetPerformanceData</strong>, see the <see cref=\"T:SharpDX.XAudio2.PerformanceData\"/> structure reference.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXAudio2::GetPerformanceData']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.ixaudio2.ixaudio2.getperformancedata</msdn-id>\t\n            <unmanaged>GetPerformanceData</unmanaged>\t\n            <unmanaged-short>GetPerformanceData</unmanaged-short>\t\n            <unmanaged>void IXAudio2::GetPerformanceData([Out] XAUDIO2_PERFORMANCE_DATA* pPerfData)</unmanaged>\n        </member>\n        <member name=\"E:SharpDX.XAudio2.XAudio2.ProcessingPassStart\">\n            <summary>\t\n            Called by XAudio2 just before an audio processing pass begins.\t\n            </summary>\t\n        </member>\n        <member name=\"E:SharpDX.XAudio2.XAudio2.ProcessingPassEnd\">\n            <summary>\t\n            Called by XAudio2 just after an audio processing pass ends.\t\n            </summary>\t\n        </member>\n        <member name=\"E:SharpDX.XAudio2.XAudio2.CriticalError\">\n            <summary>\n            Called if a critical system error occurs that requires XAudio2 to be closed down and restarted.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.XAudio2.BufferWma\">\n            <summary>\t\n            Used withIXAudio2SourceVoice::SubmitSourceBufferwhen submitting xWMA data.\t\n            </summary>\t\n            <remarks>\t\n            <p>When streaming an xWMA file a few packets at a time, <see cref=\"F:SharpDX.XAudio2.BufferFlags.EndOfStream\"/> should be specified on the last packet. Alternatively, the application may call <see cref=\"M:SharpDX.XAudio2.SourceVoice.Discontinuity\"/> after  submitting the last packet.</p> <p>In addition, when streaming an xWMA file a few packets at a time, the application should  subtract <strong>pDecodedPacketCumulativeBytes</strong>[<strong>PacketCount</strong>-1] of the previous packet from all the entries of the currently submitted packet.</p> <p>The members of <strong><see cref=\"T:SharpDX.XAudio2.BufferWma\"/></strong> correspond to values contained in the 'dpds' RIFF chunk of the xWMA file being played. <strong>PacketCount</strong> will correspond to the size in UINT32s of the chunk.   <strong>pDecodedPacketCumulativeBytes</strong> will correspond to a UINT32 buffer containing the contents of the  chunk.  The contents of the buffer will need to be byte swapped when loading the buffer on Xbox 360.</p> <p>Memory allocated to hold a <see cref=\"T:SharpDX.XAudio2.AudioBuffer\"/> or <see cref=\"T:SharpDX.XAudio2.BufferWma\"/> structure can be freed as soon as the  <see cref=\"M:SharpDX.XAudio2.SourceVoice.SubmitSourceBuffer(SharpDX.XAudio2.AudioBuffer,System.IntPtr)\"/> call it is passed to returns.  The data the structure points to (<strong>pAudioData</strong> and <strong>pDecodedPacketCumulativeBytes</strong>, respectively) can't be freed until the buffer completes (as signaled by the  <see cref=\"M:SharpDX.XAudio2.VoiceCallback.OnBufferEnd(System.IntPtr)\"/> callback) or the voice is stopped and destroyed.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_BUFFER_WMA']/*\"/>\t\n            <msdn-id>ee419229</msdn-id>\t\n            <unmanaged>XAUDIO2_BUFFER_WMA</unmanaged>\t\n            <unmanaged-short>XAUDIO2_BUFFER_WMA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.BufferWma.DecodedPacketCumulativeBytesPointer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_BUFFER_WMA::pDecodedPacketCumulativeBytes']/*\"/>\t\n            <unmanaged>const unsigned int* pDecodedPacketCumulativeBytes</unmanaged>\t\n            <unmanaged-short>unsigned int pDecodedPacketCumulativeBytes</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.BufferWma.PacketCount\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_BUFFER_WMA::PacketCount']/*\"/>\t\n            <unmanaged>unsigned int PacketCount</unmanaged>\t\n            <unmanaged-short>unsigned int PacketCount</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XAudio2.DebugConfiguration\">\n            <summary>\t\n            Contains the new global debug configuration for XAudio2.  Used with theSetDebugConfigurationfunction.\t\n            </summary>\t\n            <remarks>\t\n            <p>Debugging messages can be completely turned off by initializing <strong><see cref=\"T:SharpDX.XAudio2.DebugConfiguration\"/></strong> to all zeroes.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_DEBUG_CONFIGURATION']/*\"/>\t\n            <msdn-id>ee419231</msdn-id>\t\n            <unmanaged>XAUDIO2_DEBUG_CONFIGURATION</unmanaged>\t\n            <unmanaged-short>XAUDIO2_DEBUG_CONFIGURATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.DebugConfiguration.TraceMask\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_DEBUG_CONFIGURATION::TraceMask']/*\"/>\t\n            <unmanaged>unsigned int TraceMask</unmanaged>\t\n            <unmanaged-short>unsigned int TraceMask</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.DebugConfiguration.BreakMask\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_DEBUG_CONFIGURATION::BreakMask']/*\"/>\t\n            <unmanaged>unsigned int BreakMask</unmanaged>\t\n            <unmanaged-short>unsigned int BreakMask</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.DebugConfiguration.LogThreadID\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_DEBUG_CONFIGURATION::LogThreadID']/*\"/>\t\n            <unmanaged>BOOL LogThreadID</unmanaged>\t\n            <unmanaged-short>BOOL LogThreadID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.DebugConfiguration.LogFileline\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_DEBUG_CONFIGURATION::LogFileline']/*\"/>\t\n            <unmanaged>BOOL LogFileline</unmanaged>\t\n            <unmanaged-short>BOOL LogFileline</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.DebugConfiguration.LogFunctionName\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_DEBUG_CONFIGURATION::LogFunctionName']/*\"/>\t\n            <unmanaged>BOOL LogFunctionName</unmanaged>\t\n            <unmanaged-short>BOOL LogFunctionName</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.DebugConfiguration.LogTiming\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_DEBUG_CONFIGURATION::LogTiming']/*\"/>\t\n            <unmanaged>BOOL LogTiming</unmanaged>\t\n            <unmanaged-short>BOOL LogTiming</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XAudio2.DeviceDetails\">\n            <summary>\t\n            <p>Provides information about an audio device.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_DEVICE_DETAILS']/*\"/>\t\n            <msdn-id>ee419232</msdn-id>\t\n            <unmanaged>XAUDIO2_DEVICE_DETAILS</unmanaged>\t\n            <unmanaged-short>XAUDIO2_DEVICE_DETAILS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.DeviceDetails.DeviceID\">\n            <summary>\t\n            <dd> String identifier for the audio device. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_DEVICE_DETAILS::DeviceID']/*\"/>\t\n            <msdn-id>ee419232</msdn-id>\t\n            <unmanaged>wchar_t DeviceID[256]</unmanaged>\t\n            <unmanaged-short>wchar_t DeviceID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.DeviceDetails.DisplayName\">\n            <summary>\t\n            <dd> Friendly name, which is suitable for display to the user. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_DEVICE_DETAILS::DisplayName']/*\"/>\t\n            <msdn-id>ee419232</msdn-id>\t\n            <unmanaged>wchar_t DisplayName[256]</unmanaged>\t\n            <unmanaged-short>wchar_t DisplayName</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.DeviceDetails.Role\">\n            <summary>\t\n            <dd> Roles are assigned by the user, and specify which audio scenarios use the device as a default device. See the <see cref=\"T:SharpDX.XAudio2.DeviceRole\"/> enumeration for details. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_DEVICE_DETAILS::Role']/*\"/>\t\n            <msdn-id>ee419232</msdn-id>\t\n            <unmanaged>XAUDIO2_DEVICE_ROLE Role</unmanaged>\t\n            <unmanaged-short>XAUDIO2_DEVICE_ROLE Role</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.DeviceDetails.OutputFormat\">\n            <summary>\t\n            <dd> <see cref=\"T:SharpDX.Multimedia.WaveFormatExtensible\"/> structure that describes the device's native PCM audio format. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_DEVICE_DETAILS::OutputFormat']/*\"/>\t\n            <msdn-id>ee419232</msdn-id>\t\n            <unmanaged>WAVEFORMATEXTENSIBLE OutputFormat</unmanaged>\t\n            <unmanaged-short>WAVEFORMATEXTENSIBLE OutputFormat</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XAudio2.EffectChain\">\n            <summary>\t\n            Defines an effect chain.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_EFFECT_CHAIN']/*\"/>\t\n            <msdn-id>ee419235</msdn-id>\t\n            <unmanaged>XAUDIO2_EFFECT_CHAIN</unmanaged>\t\n            <unmanaged-short>XAUDIO2_EFFECT_CHAIN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.EffectChain.EffectCount\">\n            <summary>\t\n            <dd> Number of effects in the effect chain for the voice. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_EFFECT_CHAIN::EffectCount']/*\"/>\t\n            <msdn-id>ee419235</msdn-id>\t\n            <unmanaged>unsigned int EffectCount</unmanaged>\t\n            <unmanaged-short>unsigned int EffectCount</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.EffectChain.EffectDescriptorPointer\">\n            <summary>\t\n            <dd> Array of <see cref=\"T:SharpDX.XAudio2.EffectDescriptor\"/> structures containing references  to XAPO instances. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_EFFECT_CHAIN::pEffectDescriptors']/*\"/>\t\n            <msdn-id>ee419235</msdn-id>\t\n            <unmanaged>XAUDIO2_EFFECT_DESCRIPTOR* pEffectDescriptors</unmanaged>\t\n            <unmanaged-short>XAUDIO2_EFFECT_DESCRIPTOR pEffectDescriptors</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XAudio2.FilterParameters\">\n            <summary>\t\n            Defines filter parameters for a source voice.\t\n            </summary>\t\n            <remarks>\t\n            <p>Setting <strong><see cref=\"T:SharpDX.XAudio2.FilterParameters\"/></strong> with the following values is acoustically equivalent to the filter being fully bypassed.</p> <pre> <see cref=\"T:SharpDX.XAudio2.FilterParameters\"/> FilterParams; FilterParams.Frequency = 1.0f;     FilterParams.OneOverQ = 1.0f; FilterParams.Type = LowPassFilter; </pre> <p>The following formulas show the relationship between the members of <strong><see cref=\"T:SharpDX.XAudio2.FilterParameters\"/></strong> and the per-voice filter.</p> <pre> Yl( n ) = F1 yb( n ) + yl( n - 1 )\t\n            Yb( n ) = F1 yh( n ) + yb( n - 1 )\t\n            Yh( n ) = x( n ) - yl( n ) - OneOverQ(yb( n - 1 )\t\n            Yn( n ) = Yl(n) + Yh(n)\t\n            </pre> <p>Where:</p> <pre> Yl = lowpass output\t\n            Yb = bandpass output\t\n            Yh = highpass output\t\n            Yn = notch output\t\n            F1 = <see cref=\"T:SharpDX.XAudio2.FilterParameters\"/>.Frequency\t\n            OneOverQ = <see cref=\"T:SharpDX.XAudio2.FilterParameters\"/>.OneOverQ\t\n            </pre>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_FILTER_PARAMETERS']/*\"/>\t\n            <msdn-id>ee419237</msdn-id>\t\n            <unmanaged>XAUDIO2_FILTER_PARAMETERS</unmanaged>\t\n            <unmanaged-short>XAUDIO2_FILTER_PARAMETERS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.FilterParameters.Type\">\n            <summary>\t\n            <dd> An <see cref=\"T:SharpDX.XAudio2.FilterType\"/> indicating whether the filter is low pass, band pass, high pass, or notch. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_FILTER_PARAMETERS::Type']/*\"/>\t\n            <msdn-id>ee419237</msdn-id>\t\n            <unmanaged>XAUDIO2_FILTER_TYPE Type</unmanaged>\t\n            <unmanaged-short>XAUDIO2_FILTER_TYPE Type</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.FilterParameters.Frequency\">\n            <summary>\t\n            <dd> Filter radian frequency calculated as (2 * sin(pi * (desired filter cutoff frequency) / sampleRate)). The frequency must be greater than or equal to 0 and less than or equal to <see cref=\"F:SharpDX.XAudio2.XAudio2.MaximumFilterFrequency\"/>. The maximum frequency allowable is equal to the source sound's sample rate divided by six which corresponds to the maximum filter radian frequency of 1. For example, if a sound's sample rate is 48000 and the desired cutoff frequency is the maximum allowable value for that sample rate, 8000, the value for <strong>Frequency</strong> will be 1. <p>If XAUDIO2_HELPER_FUNCTIONS is defined, XAudio2.h will include the XAudio2RadiansToCutoffFrequency and XAudio2CutoffFrequencyToRadians helper functions for converting between hertz and radian frequencies.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_FILTER_PARAMETERS::Frequency']/*\"/>\t\n            <msdn-id>ee419237</msdn-id>\t\n            <unmanaged>float Frequency</unmanaged>\t\n            <unmanaged-short>float Frequency</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.FilterParameters.OneOverQ\">\n            <summary>\t\n            <dd> Reciprocal of Q factor. Controls how quickly frequencies beyond <em>Frequency</em> are dampened. Larger values result in quicker dampening while smaller values cause dampening to occur more gradually. Must be greater than 0 and less than or equal to <see cref=\"F:SharpDX.XAudio2.XAudio2.MaximumFilterOneOverQ\"/>. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_FILTER_PARAMETERS::OneOverQ']/*\"/>\t\n            <msdn-id>ee419237</msdn-id>\t\n            <unmanaged>float OneOverQ</unmanaged>\t\n            <unmanaged-short>float OneOverQ</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XAudio2.PerformanceData\">\n            <summary>\t\n            Contains performance information.\t\n            </summary>\t\n            <remarks>\t\n            <p>CPU cycles are recorded using  .  Use  to convert these values.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_PERFORMANCE_DATA']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.xaudio2.xaudio2_performance_data</msdn-id>\t\n            <unmanaged>XAUDIO2_PERFORMANCE_DATA</unmanaged>\t\n            <unmanaged-short>XAUDIO2_PERFORMANCE_DATA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.PerformanceData.AudioCyclesSinceLastQuery\">\n            <summary>\t\n            <dd> CPU cycles spent on audio processing since the last call to the <see cref=\"M:SharpDX.XAudio2.XAudio2.StartEngine\"/> or <see cref=\"M:SharpDX.XAudio2.XAudio2.GetPerformanceData(SharpDX.XAudio2.PerformanceData@)\"/> function. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_PERFORMANCE_DATA::AudioCyclesSinceLastQuery']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.xaudio2.xaudio2_performance_data</msdn-id>\t\n            <unmanaged>unsigned longlong AudioCyclesSinceLastQuery</unmanaged>\t\n            <unmanaged-short>unsigned longlong AudioCyclesSinceLastQuery</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.PerformanceData.TotalCyclesSinceLastQuery\">\n            <summary>\t\n            <dd> Total CPU cycles elapsed since the last call. <table><tr><th>Note </th></tr><tr><td>This only counts cycles on the CPU on which XAudio2 is running.</td></tr></table> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_PERFORMANCE_DATA::TotalCyclesSinceLastQuery']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.xaudio2.xaudio2_performance_data</msdn-id>\t\n            <unmanaged>unsigned longlong TotalCyclesSinceLastQuery</unmanaged>\t\n            <unmanaged-short>unsigned longlong TotalCyclesSinceLastQuery</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.PerformanceData.MinimumCyclesPerQuantum\">\n            <summary>\t\n            <dd> Fewest CPU cycles spent on processing any single audio quantum since the last call. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_PERFORMANCE_DATA::MinimumCyclesPerQuantum']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.xaudio2.xaudio2_performance_data</msdn-id>\t\n            <unmanaged>unsigned int MinimumCyclesPerQuantum</unmanaged>\t\n            <unmanaged-short>unsigned int MinimumCyclesPerQuantum</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.PerformanceData.MaximumCyclesPerQuantum\">\n            <summary>\t\n            <dd> Most CPU cycles spent on processing any single audio quantum since the last call. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_PERFORMANCE_DATA::MaximumCyclesPerQuantum']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.xaudio2.xaudio2_performance_data</msdn-id>\t\n            <unmanaged>unsigned int MaximumCyclesPerQuantum</unmanaged>\t\n            <unmanaged-short>unsigned int MaximumCyclesPerQuantum</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.PerformanceData.MemoryUsageInBytes\">\n            <summary>\t\n            <dd> Total memory currently in use. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_PERFORMANCE_DATA::MemoryUsageInBytes']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.xaudio2.xaudio2_performance_data</msdn-id>\t\n            <unmanaged>unsigned int MemoryUsageInBytes</unmanaged>\t\n            <unmanaged-short>unsigned int MemoryUsageInBytes</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.PerformanceData.CurrentLatencyInSamples\">\n            <summary>\t\n            <dd> Minimum delay that occurs between the time a sample is read from a source buffer and the time it reaches the speakers. <table><tr><th>Windows </th></tr><tr><td> <p>The delay reported is a variable value equal to the rough distance between the last sample submitted to the driver by XAudio2 and the sample currently playing. The following factors can affect the delay: playing multichannel audio on a hardware-accelerated device; the type of audio device (WavePci, WaveCyclic, or WaveRT); and, to a lesser extent, audio hardware implementation.</p> </td></tr></table> <table><tr><th>Xbox 360 </th></tr><tr><td> <p>The delay reported is a fixed value, which is normally 1,024 samples (21.333 ms at 48 kHz).   If <strong>XOverrideSpeakerConfig</strong> has been called using the <strong>XAUDIOSPEAKERCONFIG_LOW_LATENCY</strong> flag,  the delay reported is 512 samples (10.667 ms at 48 kHz).</p> </td></tr></table> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_PERFORMANCE_DATA::CurrentLatencyInSamples']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.xaudio2.xaudio2_performance_data</msdn-id>\t\n            <unmanaged>unsigned int CurrentLatencyInSamples</unmanaged>\t\n            <unmanaged-short>unsigned int CurrentLatencyInSamples</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.PerformanceData.GlitchesSinceEngineStarted\">\n            <summary>\t\n            <dd> Total audio dropouts since the engine started. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_PERFORMANCE_DATA::GlitchesSinceEngineStarted']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.xaudio2.xaudio2_performance_data</msdn-id>\t\n            <unmanaged>unsigned int GlitchesSinceEngineStarted</unmanaged>\t\n            <unmanaged-short>unsigned int GlitchesSinceEngineStarted</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.PerformanceData.ActiveSourceVoiceCount\">\n            <summary>\t\n            <dd> Number of source voices currently playing. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_PERFORMANCE_DATA::ActiveSourceVoiceCount']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.xaudio2.xaudio2_performance_data</msdn-id>\t\n            <unmanaged>unsigned int ActiveSourceVoiceCount</unmanaged>\t\n            <unmanaged-short>unsigned int ActiveSourceVoiceCount</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.PerformanceData.TotalSourceVoiceCount\">\n            <summary>\t\n            <dd> Total number of source voices currently in existence. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_PERFORMANCE_DATA::TotalSourceVoiceCount']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.xaudio2.xaudio2_performance_data</msdn-id>\t\n            <unmanaged>unsigned int TotalSourceVoiceCount</unmanaged>\t\n            <unmanaged-short>unsigned int TotalSourceVoiceCount</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.PerformanceData.ActiveSubmixVoiceCount\">\n            <summary>\t\n            <dd> Number of submix voices currently playing. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_PERFORMANCE_DATA::ActiveSubmixVoiceCount']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.xaudio2.xaudio2_performance_data</msdn-id>\t\n            <unmanaged>unsigned int ActiveSubmixVoiceCount</unmanaged>\t\n            <unmanaged-short>unsigned int ActiveSubmixVoiceCount</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.PerformanceData.ActiveResamplerCount\">\n            <summary>\t\n            <dd> Number of resampler xAPOs currently active. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_PERFORMANCE_DATA::ActiveResamplerCount']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.xaudio2.xaudio2_performance_data</msdn-id>\t\n            <unmanaged>unsigned int ActiveResamplerCount</unmanaged>\t\n            <unmanaged-short>unsigned int ActiveResamplerCount</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.PerformanceData.ActiveMatrixMixCount\">\n            <summary>\t\n            <dd> Number of matrix mix xAPOs currently active. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_PERFORMANCE_DATA::ActiveMatrixMixCount']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.xaudio2.xaudio2_performance_data</msdn-id>\t\n            <unmanaged>unsigned int ActiveMatrixMixCount</unmanaged>\t\n            <unmanaged-short>unsigned int ActiveMatrixMixCount</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.PerformanceData.ActiveXmaSourceVoices\">\n            <summary>\t\n            <dd> <table><tr><th>Windows </th></tr><tr><td> <p>Unsupported.</p> </td></tr></table> <table><tr><th>Xbox 360 </th></tr><tr><td> <p>Number of source voices decoding XMA data.</p> </td></tr></table> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_PERFORMANCE_DATA::ActiveXmaSourceVoices']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.xaudio2.xaudio2_performance_data</msdn-id>\t\n            <unmanaged>unsigned int ActiveXmaSourceVoices</unmanaged>\t\n            <unmanaged-short>unsigned int ActiveXmaSourceVoices</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.PerformanceData.ActiveXmaStreams\">\n            <summary>\t\n            <dd> <table><tr><th>Windows </th></tr><tr><td> <p>Unsupported.</p> </td></tr></table> <table><tr><th>Xbox 360 </th></tr><tr><td> <p>A voice can use more than one XMA stream.</p> </td></tr></table> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_PERFORMANCE_DATA::ActiveXmaStreams']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.xaudio2.xaudio2_performance_data</msdn-id>\t\n            <unmanaged>unsigned int ActiveXmaStreams</unmanaged>\t\n            <unmanaged-short>unsigned int ActiveXmaStreams</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XAudio2.VoiceDetails\">\n            <summary>\t\n            Contains information about the creation flags, input channels, and sample rate of a voice.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_VOICE_DETAILS']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.xaudio2.xaudio2_voice_details</msdn-id>\t\n            <unmanaged>XAUDIO2_VOICE_DETAILS</unmanaged>\t\n            <unmanaged-short>XAUDIO2_VOICE_DETAILS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.VoiceDetails.CreationFlags\">\n            <summary>\t\n            <dd> Flags used to create the voice; see the individual voice interfaces for more information. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_VOICE_DETAILS::CreationFlags']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.xaudio2.xaudio2_voice_details</msdn-id>\t\n            <unmanaged>XAUDIO2_VOICE_FLAGS CreationFlags</unmanaged>\t\n            <unmanaged-short>XAUDIO2_VOICE_FLAGS CreationFlags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.VoiceDetails.InputChannelCount\">\n            <summary>\t\n            <dd> Flags that are currently set on the voice. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_VOICE_DETAILS::InputChannels']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.xaudio2.xaudio2_voice_details</msdn-id>\t\n            <unmanaged>unsigned int InputChannels</unmanaged>\t\n            <unmanaged-short>unsigned int InputChannels</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.VoiceDetails.InputSampleRate\">\n            <summary>\t\n            <dd> The number of input channels the voice expects. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_VOICE_DETAILS::InputSampleRate']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.xaudio2.xaudio2_voice_details</msdn-id>\t\n            <unmanaged>unsigned int InputSampleRate</unmanaged>\t\n            <unmanaged-short>unsigned int InputSampleRate</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XAudio2.VoiceSendDescriptor\">\n            <summary>\t\n            Defines a destination voice that is the target of a send from another voice and specifies whether a filter should be used.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_SEND_DESCRIPTOR']/*\"/>\t\n            <msdn-id>ee419244</msdn-id>\t\n            <unmanaged>XAUDIO2_SEND_DESCRIPTOR</unmanaged>\t\n            <unmanaged-short>XAUDIO2_SEND_DESCRIPTOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.VoiceSendDescriptor.Flags\">\n            <summary>\t\n            <dd> Indicates whether a filter should be used on data sent to the voice pointed to by <strong>pOutputVoice</strong>.   <strong>Flags</strong> can be 0 or XAUDIO2_SEND_USEFILTER. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_SEND_DESCRIPTOR::Flags']/*\"/>\t\n            <msdn-id>ee419244</msdn-id>\t\n            <unmanaged>XAUDIO2_VOICE_SEND_FLAGS Flags</unmanaged>\t\n            <unmanaged-short>XAUDIO2_VOICE_SEND_FLAGS Flags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.VoiceSendDescriptor.OutputVoicePointer\">\n            <summary>\t\n            <dd> A reference to an <see cref=\"T:SharpDX.XAudio2.Voice\"/> that will be the target of the send.   The <strong>pOutputVoice</strong> member cannot be <c>null</c>. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_SEND_DESCRIPTOR::pOutputVoice']/*\"/>\t\n            <msdn-id>ee419244</msdn-id>\t\n            <unmanaged>IXAudio2Voice* pOutputVoice</unmanaged>\t\n            <unmanaged-short>IXAudio2Voice pOutputVoice</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XAudio2.VoiceSendDescriptor.#ctor(SharpDX.XAudio2.Voice)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.XAudio2.VoiceSendDescriptor\"/> struct.\n            </summary>\n            <param name=\"outputVoice\">The output voice.</param>\n        </member>\n        <member name=\"M:SharpDX.XAudio2.VoiceSendDescriptor.#ctor(SharpDX.XAudio2.VoiceSendFlags,SharpDX.XAudio2.Voice)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.XAudio2.VoiceSendDescriptor\"/> struct.\n            </summary>\n            <param name=\"flags\">The send flags.</param>\n            <param name=\"outputVoice\">The output voice.</param>\n        </member>\n        <member name=\"P:SharpDX.XAudio2.VoiceSendDescriptor.OutputVoice\">\n            <summary>\n            Gets or sets the output voice. This parameter cannot be null.\n            </summary>\n            <value>The output voice.</value>\n        </member>\n        <member name=\"T:SharpDX.XAudio2.VoiceSendDescriptors\">\n            <summary>\t\n            Defines a set of voices to receive data from a single output voice.\t\n            </summary>\t\n            <remarks>\t\n            <p>If <strong>pSends</strong> is not <c>null</c> all of its elements must be non-<c>null</c>. To send output to the default mastering voice call <see cref=\"M:SharpDX.XAudio2.Voice.SetOutputVoices(System.Nullable{SharpDX.XAudio2.VoiceSendDescriptors})\"/> with the <em>pSendList</em> argument set to <c>null</c>.</p> <p>Setting <strong>SendCount</strong> to 0 is useful for certain effects such as volume meters or file writers that don't generate any audio output to pass on to another voice.</p> <p>If needed, a voice will perform a single sample rate conversion, from the voice's input sample rate to the input sample rate of the voice's output voices. Because only one sample rate conversion will be performed, all the voice's output voices must have the same input sample rate. If the input sample rates of the voice and its output voices are the same,  no sample rate conversion is performed.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_VOICE_SENDS']/*\"/>\t\n            <msdn-id>ee419246</msdn-id>\t\n            <unmanaged>XAUDIO2_VOICE_SENDS</unmanaged>\t\n            <unmanaged-short>XAUDIO2_VOICE_SENDS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.VoiceSendDescriptors.SendCount\">\n            <summary>\t\n            <dd> Number of voices to receive the output of the voice. An <strong>OutputCount</strong> value of 0 indicates the voice should not send output to any voices. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_VOICE_SENDS::SendCount']/*\"/>\t\n            <msdn-id>ee419246</msdn-id>\t\n            <unmanaged>unsigned int SendCount</unmanaged>\t\n            <unmanaged-short>unsigned int SendCount</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.VoiceSendDescriptors.SendPointer\">\n            <summary>\t\n            <dd> Array of <see cref=\"T:SharpDX.XAudio2.VoiceSendDescriptor\"/> structures describing destination voices and the filters that should be used when sending to the voices. This array should contain <strong>SendCount</strong> elements. If <strong>SendCount</strong> is 0 <strong>pSends</strong> should be <c>null</c>. Note that <em>pSends</em> cannot contain the same voice more than once. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_VOICE_SENDS::pSends']/*\"/>\t\n            <msdn-id>ee419246</msdn-id>\t\n            <unmanaged>XAUDIO2_SEND_DESCRIPTOR* pSends</unmanaged>\t\n            <unmanaged-short>XAUDIO2_SEND_DESCRIPTOR pSends</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XAudio2.VoiceState\">\n            <summary>\t\n            Returns the voice's current state and cursor position data.\t\n            </summary>\t\n            <remarks>\t\n            <p>For all encoded formats, including constant bit rate (CBR) formats  such as adaptive differential pulse code modulation (ADPCM), <strong>SamplesPlayed</strong> is expressed  in terms of decoded samples. For pulse code modulation (PCM) formats, <strong>SamplesPlayed</strong> is expressed in terms of either input or output samples.  There is a one-to-one mapping from input to output for PCM formats.</p> <p>If a client needs to get the correlated positions of several voices?that is, to know exactly which sample of a particular voice is playing when a specified sample  of another voice is playing?it must make the <see cref=\"M:SharpDX.XAudio2.SourceVoice.GetState(SharpDX.XAudio2.VoiceState@)\"/> calls in an XAudio2 engine callback. Doing this ensures that none of the voices advance while the calls are made.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_VOICE_STATE']/*\"/>\t\n            <msdn-id>ee419247</msdn-id>\t\n            <unmanaged>XAUDIO2_VOICE_STATE</unmanaged>\t\n            <unmanaged-short>XAUDIO2_VOICE_STATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.VoiceState.Context\">\n            <summary>\t\n            <dd> Pointer to a buffer context provided in the <see cref=\"T:SharpDX.XAudio2.AudioBuffer\"/> that is processed currently, or, if the voice is stopped currently,  to the next buffer due to be processed. <strong>pCurrentBufferContext</strong> is <c>null</c> if there are no buffers in the queue. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_VOICE_STATE::pCurrentBufferContext']/*\"/>\t\n            <msdn-id>ee419247</msdn-id>\t\n            <unmanaged>void* pCurrentBufferContext</unmanaged>\t\n            <unmanaged-short>void pCurrentBufferContext</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.VoiceState.BuffersQueued\">\n            <summary>\t\n            <dd> Number of audio buffers currently queued on the voice, including the one that is processed currently. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_VOICE_STATE::BuffersQueued']/*\"/>\t\n            <msdn-id>ee419247</msdn-id>\t\n            <unmanaged>unsigned int BuffersQueued</unmanaged>\t\n            <unmanaged-short>unsigned int BuffersQueued</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAudio2.VoiceState.SamplesPlayed\">\n            <summary>\t\n            <dd> Total number of samples processed by this voice since it last started,  or since the last audio stream ended (as marked with the <see cref=\"F:SharpDX.XAudio2.BufferFlags.EndOfStream\"/> flag).  This total includes samples played multiple times due to looping. Theoretically, if all audio emitted by the voice up to this time is captured, this parameter would be the length of the audio stream in samples.  If you specify <strong>XAUDIO2_VOICE_NOSAMPLESPLAYED</strong> when you call <see cref=\"M:SharpDX.XAudio2.SourceVoice.GetState(SharpDX.XAudio2.VoiceState@)\"/>, this member won't be calculated, and its value is unspecified on return from  <see cref=\"M:SharpDX.XAudio2.SourceVoice.GetState(SharpDX.XAudio2.VoiceState@)\"/>. <see cref=\"M:SharpDX.XAudio2.SourceVoice.GetState(SharpDX.XAudio2.VoiceState@)\"/> takes about one-third as much time to complete when you specify <strong>XAUDIO2_VOICE_NOSAMPLESPLAYED</strong>. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAUDIO2_VOICE_STATE::SamplesPlayed']/*\"/>\t\n            <msdn-id>ee419247</msdn-id>\t\n            <unmanaged>unsigned longlong SamplesPlayed</unmanaged>\t\n            <unmanaged-short>unsigned longlong SamplesPlayed</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.X3DAudio.CalculateFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='X3DAudioCalculateFlags']/*\"/>\t\n            <unmanaged>X3DAudioCalculateFlags</unmanaged>\t\n            <unmanaged-short>X3DAudioCalculateFlags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.X3DAudio.CalculateFlags.Matrix\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='X3DAUDIO_CALCULATE_MATRIX']/*\"/>\t\n            <unmanaged>X3DAUDIO_CALCULATE_MATRIX</unmanaged>\t\n            <unmanaged-short>X3DAUDIO_CALCULATE_MATRIX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.X3DAudio.CalculateFlags.Delay\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='X3DAUDIO_CALCULATE_DELAY']/*\"/>\t\n            <unmanaged>X3DAUDIO_CALCULATE_DELAY</unmanaged>\t\n            <unmanaged-short>X3DAUDIO_CALCULATE_DELAY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.X3DAudio.CalculateFlags.LpfDirect\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='X3DAUDIO_CALCULATE_LPF_DIRECT']/*\"/>\t\n            <unmanaged>X3DAUDIO_CALCULATE_LPF_DIRECT</unmanaged>\t\n            <unmanaged-short>X3DAUDIO_CALCULATE_LPF_DIRECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.X3DAudio.CalculateFlags.LpfReverb\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='X3DAUDIO_CALCULATE_LPF_REVERB']/*\"/>\t\n            <unmanaged>X3DAUDIO_CALCULATE_LPF_REVERB</unmanaged>\t\n            <unmanaged-short>X3DAUDIO_CALCULATE_LPF_REVERB</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.X3DAudio.CalculateFlags.Reverb\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='X3DAUDIO_CALCULATE_REVERB']/*\"/>\t\n            <unmanaged>X3DAUDIO_CALCULATE_REVERB</unmanaged>\t\n            <unmanaged-short>X3DAUDIO_CALCULATE_REVERB</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.X3DAudio.CalculateFlags.Doppler\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='X3DAUDIO_CALCULATE_DOPPLER']/*\"/>\t\n            <unmanaged>X3DAUDIO_CALCULATE_DOPPLER</unmanaged>\t\n            <unmanaged-short>X3DAUDIO_CALCULATE_DOPPLER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.X3DAudio.CalculateFlags.EmitterAngle\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='X3DAUDIO_CALCULATE_EMITTER_ANGLE']/*\"/>\t\n            <unmanaged>X3DAUDIO_CALCULATE_EMITTER_ANGLE</unmanaged>\t\n            <unmanaged-short>X3DAUDIO_CALCULATE_EMITTER_ANGLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.X3DAudio.CalculateFlags.ZeroCenter\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='X3DAUDIO_CALCULATE_ZEROCENTER']/*\"/>\t\n            <unmanaged>X3DAUDIO_CALCULATE_ZEROCENTER</unmanaged>\t\n            <unmanaged-short>X3DAUDIO_CALCULATE_ZEROCENTER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.X3DAudio.CalculateFlags.RedirectToLfe\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='X3DAUDIO_CALCULATE_REDIRECT_TO_LFE']/*\"/>\t\n            <unmanaged>X3DAUDIO_CALCULATE_REDIRECT_TO_LFE</unmanaged>\t\n            <unmanaged-short>X3DAUDIO_CALCULATE_REDIRECT_TO_LFE</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.X3DAudio.X3DAudio\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.X3DAudio.X3DAudio']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.X3DAudio.X3DAudio.SpeedOfSound\">\n            <summary>\n            Speed of sound in the air.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.X3DAudio.X3DAudio.X3DAudioCalculate(SharpDX.X3DAudio.X3DAudioHandle@,SharpDX.X3DAudio.Listener,SharpDX.X3DAudio.Emitter,SharpDX.X3DAudio.CalculateFlags,System.IntPtr)\">\n            <summary>\t\n            Calculates DSP settings with respect to 3D parameters.\t\n            </summary>\t\n            <param name=\"instance\"><dd>[in]  3D audio instance handle. Call <see cref=\"M:SharpDX.X3DAudio.X3DAudio.X3DAudioInitialize(SharpDX.Multimedia.Speakers,System.Single,SharpDX.X3DAudio.X3DAudioHandle@)\"/> to get this handle. </dd></param>\t\n            <param name=\"listenerRef\"><dd>[in]  Pointer to an <see cref=\"T:SharpDX.X3DAudio.Listener\"/> representing the point of reception. </dd></param>\t\n            <param name=\"emitterRef\"><dd>[in]  Pointer to an <see cref=\"T:SharpDX.X3DAudio.Emitter\"/> representing the sound source. </dd></param>\t\n            <param name=\"flags\"><dd>[in]  Flags used to control which DSP settings are calculated: <table><tr><th>Value</th><th>Description</th></tr><tr><td><see cref=\"F:SharpDX.X3DAudio.CalculateFlags.Matrix\"/></td><td>Enables matrix coefficient table calculation.?</td></tr><tr><td><see cref=\"F:SharpDX.X3DAudio.CalculateFlags.Delay\"/></td><td>Enables delay time array calculation (stereo only).?</td></tr><tr><td><see cref=\"F:SharpDX.X3DAudio.CalculateFlags.LpfDirect\"/></td><td>Enables low pass filter (LPF) direct-path coefficient calculation.?</td></tr><tr><td><see cref=\"F:SharpDX.X3DAudio.CalculateFlags.LpfReverb\"/></td><td>Enables LPF reverb-path coefficient calculation.?</td></tr><tr><td><see cref=\"F:SharpDX.X3DAudio.CalculateFlags.Reverb\"/></td><td>Enables reverb send level calculation.?</td></tr><tr><td><see cref=\"F:SharpDX.X3DAudio.CalculateFlags.Doppler\"/></td><td>Enables Doppler shift factor calculation.?</td></tr><tr><td><see cref=\"F:SharpDX.X3DAudio.CalculateFlags.EmitterAngle\"/></td><td>Enables emitter-to-listener interior angle calculation.?</td></tr><tr><td><see cref=\"F:SharpDX.X3DAudio.CalculateFlags.ZeroCenter\"/></td><td>Fills the center channel with silence. This flag allows you to keep a 6-channel matrix so you do not have to remap the channels,  but the center channel will be silent.  This flag is only valid if you also set <see cref=\"F:SharpDX.X3DAudio.CalculateFlags.Matrix\"/>.?</td></tr><tr><td><see cref=\"F:SharpDX.X3DAudio.CalculateFlags.RedirectToLfe\"/></td><td> Applies an equal mix of all source channels to a low frequency effect (LFE) destination channel. It only applies to matrix calculations with a source that does not have an LFE channel and a destination that does have an LFE channel.  This flag is only valid  if you also set <see cref=\"F:SharpDX.X3DAudio.CalculateFlags.Matrix\"/>.?</td></tr></table> </dd></param>\t\n            <param name=\"dSPSettingsRef\"><dd>[in, out]  Pointer to an <see cref=\"T:SharpDX.X3DAudio.DspSettings\"/> structure  that receives the calculation results. </dd></param>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='X3DAudioCalculate']/*\"/>\t\n            <msdn-id>ee419052</msdn-id>\t\n            <unmanaged>void X3DAudioCalculate([In] const X3DAUDIOHANDLE* Instance,[In] const X3DAUDIO_LISTENER* pListener,[In] const X3DAUDIO_EMITTER* pEmitter,[In] X3DAudioCalculateFlags Flags,[In] void* pDSPSettings)</unmanaged>\t\n            <unmanaged-short>X3DAudioCalculate</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.X3DAudio.X3DAudio.X3DAudioInitialize(SharpDX.Multimedia.Speakers,System.Single,SharpDX.X3DAudio.X3DAudioHandle@)\">\n            <summary>\t\n            Sets all global 3D audio constants.\t\n            </summary>\t\n            <param name=\"speakerChannelMask\"><dd>[in]  Assignment of channels to speaker positions. This value must not be zero. The only permissible value on Xbox 360 is SPEAKER_XBOX. </dd></param>\t\n            <param name=\"speedOfSound\"><dd>[in]  Speed of sound, in user-defined world units per second. Use this value only for doppler calculations.  It must be greater than or equal to FLT_MIN. </dd></param>\t\n            <param name=\"instance\"><dd>[out]  3D audio instance handle. Use this handle when you call <see cref=\"M:SharpDX.X3DAudio.X3DAudio.X3DAudioCalculate(SharpDX.X3DAudio.X3DAudioHandle@,SharpDX.X3DAudio.Listener,SharpDX.X3DAudio.Emitter,SharpDX.X3DAudio.CalculateFlags,System.IntPtr)\"/>. </dd></param>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='X3DAudioInitialize']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.x3daudio.x3daudioinitialize</msdn-id>\t\n            <unmanaged>void X3DAudioInitialize([In] SPEAKER_FLAGS SpeakerChannelMask,[In] float SpeedOfSound,[Out] X3DAUDIOHANDLE* Instance)</unmanaged>\t\n            <unmanaged-short>X3DAudioInitialize</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.X3DAudio.X3DAudio.#ctor(SharpDX.Multimedia.Speakers)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.X3DAudio.X3DAudio\"/> class.\n            </summary>\n            <param name=\"speakers\">The speakers config.</param>\n            <msdn-id>microsoft.directx_sdk.x3daudio.x3daudioinitialize</msdn-id>\t\n            <unmanaged>void X3DAudioInitialize([In] SPEAKER_FLAGS SpeakerChannelMask,[In] float SpeedOfSound,[Out] X3DAUDIOHANDLE* Instance)</unmanaged>\t\n            <unmanaged-short>X3DAudioInitialize</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.X3DAudio.X3DAudio.#ctor(SharpDX.Multimedia.Speakers,System.Single)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.X3DAudio.X3DAudio\"/> class.\n            </summary>\n            <param name=\"speakers\">The speakers config.</param>\n            <param name=\"speedOfSound\">The speed of sound.</param>\n            <msdn-id>microsoft.directx_sdk.x3daudio.x3daudioinitialize</msdn-id>\t\n            <unmanaged>void X3DAudioInitialize([In] SPEAKER_FLAGS SpeakerChannelMask,[In] float SpeedOfSound,[Out] X3DAUDIOHANDLE* Instance)</unmanaged>\t\n            <unmanaged-short>X3DAudioInitialize</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.X3DAudio.X3DAudio.Calculate(SharpDX.X3DAudio.Listener,SharpDX.X3DAudio.Emitter,SharpDX.X3DAudio.CalculateFlags,System.Int32,System.Int32)\">\n            <summary>\n            Calculates dsp settings for the specified listener and emitter.\n            </summary>\n            <param name=\"listener\">The listener.</param>\n            <param name=\"emitter\">The emitter.</param>\n            <param name=\"flags\">The flags.</param>\n            <param name=\"sourceChannelCount\">The source channel count.</param>\n            <param name=\"destinationChannelCount\">The destination channel count.</param>\n            <returns>Dsp settings</returns>\n            <msdn-id>ee419052</msdn-id>\t\n            <unmanaged>void X3DAudioCalculate([In] const X3DAUDIOHANDLE* Instance,[In] const X3DAUDIO_LISTENER* pListener,[In] const X3DAUDIO_EMITTER* pEmitter,[In] X3DAudioCalculateFlags Flags,[In] void* pDSPSettings)</unmanaged>\t\n            <unmanaged-short>X3DAudioCalculate</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.X3DAudio.X3DAudio.Calculate(SharpDX.X3DAudio.Listener,SharpDX.X3DAudio.Emitter,SharpDX.X3DAudio.CalculateFlags,SharpDX.X3DAudio.DspSettings)\">\n            <summary>\n            Calculates dsp settings for the specified listener and emitter. See remarks.\n            </summary>\n            <param name=\"listener\">The listener.</param>\n            <param name=\"emitter\">The emitter.</param>\n            <param name=\"flags\">The flags.</param>\n            <param name=\"settings\">The settings.</param>\n            <remarks>The source and destination channel count must be set on <see cref=\"T:SharpDX.X3DAudio.DspSettings\"/> before calling this method.</remarks>\n            <msdn-id>ee419052</msdn-id>\t\n            <unmanaged>void X3DAudioCalculate([In] const X3DAUDIOHANDLE* Instance,[In] const X3DAUDIO_LISTENER* pListener,[In] const X3DAUDIO_EMITTER* pEmitter,[In] X3DAudioCalculateFlags Flags,[In] void* pDSPSettings)</unmanaged>\t\n            <unmanaged-short>X3DAudioCalculate</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.X3DAudio.Cone\">\n            <summary>\t\n            Specifies directionality for a single-channel non-LFE emitter by scaling DSP behavior with respect to the emitter's orientation.\t\n            </summary>\t\n            <remarks>\t\n            <p>For a detailed explanation of sound cones see Sound Cones.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='X3DAUDIO_CONE']/*\"/>\t\n            <msdn-id>ee419054</msdn-id>\t\n            <unmanaged>X3DAUDIO_CONE</unmanaged>\t\n            <unmanaged-short>X3DAUDIO_CONE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.X3DAudio.Cone.InnerAngle\">\n            <summary>\t\n            <dd> Inner cone angle in radians. This value must be within 0.0f to X3DAUDIO_2PI. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='X3DAUDIO_CONE::InnerAngle']/*\"/>\t\n            <msdn-id>ee419054</msdn-id>\t\n            <unmanaged>float InnerAngle</unmanaged>\t\n            <unmanaged-short>float InnerAngle</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.X3DAudio.Cone.OuterAngle\">\n            <summary>\t\n            <dd> Outer cone angle in radians. This value must be within <strong>InnerAngle</strong> to X3DAUDIO_2PI. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='X3DAUDIO_CONE::OuterAngle']/*\"/>\t\n            <msdn-id>ee419054</msdn-id>\t\n            <unmanaged>float OuterAngle</unmanaged>\t\n            <unmanaged-short>float OuterAngle</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.X3DAudio.Cone.InnerVolume\">\n            <summary>\t\n            <dd> Volume scaler on/within inner cone. This value must be within 0.0f to 2.0f. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='X3DAUDIO_CONE::InnerVolume']/*\"/>\t\n            <msdn-id>ee419054</msdn-id>\t\n            <unmanaged>float InnerVolume</unmanaged>\t\n            <unmanaged-short>float InnerVolume</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.X3DAudio.Cone.OuterVolume\">\n            <summary>\t\n            <dd> Volume scaler on/beyond outer cone. This value must be within 0.0f to 2.0f. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='X3DAUDIO_CONE::OuterVolume']/*\"/>\t\n            <msdn-id>ee419054</msdn-id>\t\n            <unmanaged>float OuterVolume</unmanaged>\t\n            <unmanaged-short>float OuterVolume</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.X3DAudio.Cone.InnerLpf\">\n            <summary>\t\n            <dd> LPF direct-path or reverb-path coefficient scaler on/within inner cone. This value is only used for LPF calculations and must be within 0.0f to 1.0f. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='X3DAUDIO_CONE::InnerLPF']/*\"/>\t\n            <msdn-id>ee419054</msdn-id>\t\n            <unmanaged>float InnerLPF</unmanaged>\t\n            <unmanaged-short>float InnerLPF</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.X3DAudio.Cone.OuterLpf\">\n            <summary>\t\n            <dd> LPF direct-path or reverb-path coefficient scaler on or beyond outer cone. This value is only used for LPF calculations and must be within 0.0f to 1.0f. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='X3DAUDIO_CONE::OuterLPF']/*\"/>\t\n            <msdn-id>ee419054</msdn-id>\t\n            <unmanaged>float OuterLPF</unmanaged>\t\n            <unmanaged-short>float OuterLPF</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.X3DAudio.Cone.InnerReverb\">\n            <summary>\t\n            <dd> Reverb send level scaler on or within inner cone. This must be within 0.0f to 2.0f. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='X3DAUDIO_CONE::InnerReverb']/*\"/>\t\n            <msdn-id>ee419054</msdn-id>\t\n            <unmanaged>float InnerReverb</unmanaged>\t\n            <unmanaged-short>float InnerReverb</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.X3DAudio.Cone.OuterReverb\">\n            <summary>\t\n            <dd> Reverb send level scaler on/beyond outer cone. This must be within 0.0f to 2.0f. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='X3DAUDIO_CONE::OuterReverb']/*\"/>\t\n            <msdn-id>ee419054</msdn-id>\t\n            <unmanaged>float OuterReverb</unmanaged>\t\n            <unmanaged-short>float OuterReverb</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.X3DAudio.CurvePoint\">\n            <summary>\t\n            Defines a DSP setting at a given normalized distance.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='X3DAUDIO_DISTANCE_CURVE_POINT']/*\"/>\t\n            <msdn-id>ee419056</msdn-id>\t\n            <unmanaged>X3DAUDIO_DISTANCE_CURVE_POINT</unmanaged>\t\n            <unmanaged-short>X3DAUDIO_DISTANCE_CURVE_POINT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.X3DAudio.CurvePoint.Distance\">\n            <summary>\t\n            <dd> Normalized distance. This must be within 0.0f to 1.0f. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='X3DAUDIO_DISTANCE_CURVE_POINT::Distance']/*\"/>\t\n            <msdn-id>ee419056</msdn-id>\t\n            <unmanaged>float Distance</unmanaged>\t\n            <unmanaged-short>float Distance</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.X3DAudio.CurvePoint.DspSetting\">\n            <summary>\t\n            <dd> DSP control setting. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='X3DAUDIO_DISTANCE_CURVE_POINT::DSPSetting']/*\"/>\t\n            <msdn-id>ee419056</msdn-id>\t\n            <unmanaged>float DSPSetting</unmanaged>\t\n            <unmanaged-short>float DSPSetting</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.X3DAudio.DistanceCurve\">\n            <summary>\t\n            Defines a DSP setting at a given normalized distance.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='X3DAUDIO_DISTANCE_CURVE']/*\"/>\t\n            <msdn-id>ee419056</msdn-id>\t\n            <unmanaged>X3DAUDIO_DISTANCE_CURVE</unmanaged>\t\n            <unmanaged-short>X3DAUDIO_DISTANCE_CURVE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.X3DAudio.DistanceCurve.PointsPointer\">\n            <summary>\t\n            <dd> Normalized distance. This must be within 0.0f to 1.0f. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='X3DAUDIO_DISTANCE_CURVE::pPoints']/*\"/>\t\n            <msdn-id>ee419056</msdn-id>\t\n            <unmanaged>X3DAUDIO_DISTANCE_CURVE_POINT* pPoints</unmanaged>\t\n            <unmanaged-short>X3DAUDIO_DISTANCE_CURVE_POINT pPoints</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.X3DAudio.DistanceCurve.PointCount\">\n            <summary>\t\n            <dd> DSP control setting. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='X3DAUDIO_DISTANCE_CURVE::PointCount']/*\"/>\t\n            <msdn-id>ee419056</msdn-id>\t\n            <unmanaged>unsigned int PointCount</unmanaged>\t\n            <unmanaged-short>unsigned int PointCount</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.X3DAudio.DspSettings\">\n            <summary>\t\n            Receives the results from a call toX3DAudioCalculate.\t\n            </summary>\t\n            <remarks>\t\n            <p>The following members must be initialized before passing this structure to the <see cref=\"M:SharpDX.X3DAudio.X3DAudio.X3DAudioCalculate(SharpDX.X3DAudio.X3DAudioHandle@,SharpDX.X3DAudio.Listener,SharpDX.X3DAudio.Emitter,SharpDX.X3DAudio.CalculateFlags,System.IntPtr)\"/> function:</p> <ul> <li> <p><strong>pMatrixCoefficients</strong></p> </li> <li> <p><strong>pDelayTimes</strong></p> </li> <li> <p><strong>SrcChannelCount</strong></p> </li> <li> <p><strong>DstChannelCount</strong></p> </li> </ul> <p>The following members are returned by passing this structure to the <see cref=\"M:SharpDX.X3DAudio.X3DAudio.X3DAudioCalculate(SharpDX.X3DAudio.X3DAudioHandle@,SharpDX.X3DAudio.Listener,SharpDX.X3DAudio.Emitter,SharpDX.X3DAudio.CalculateFlags,System.IntPtr)\"/> function:</p> <ul> <li> <p><strong>pMatrixCoefficients</strong></p> </li> <li> <p><strong>pDelayTimes</strong></p> </li> <li> <p><strong>LPFDirectCoefficient</strong></p> </li> <li> <p><strong>LPFReverbCoefficient</strong></p> </li> <li> <p><strong>ReverbLevel</strong></p> </li> <li> <p><strong>DopplerFactor</strong></p> </li> <li> <p><strong>EmitterToListenerAngle</strong></p> </li> <li> <p><strong>EmitterToListenerDistance</strong></p> </li> <li> <p><strong>EmitterVelocityComponent</strong></p> </li> <li> <p><strong>ListenerVelocityComponent</strong></p> </li> </ul> <table><tr><th>Note </th></tr><tr><td>For <strong>pMatrixCoefficients</strong> and <strong>pDelayTimes</strong>, <see cref=\"M:SharpDX.X3DAudio.X3DAudio.X3DAudioCalculate(SharpDX.X3DAudio.X3DAudioHandle@,SharpDX.X3DAudio.Listener,SharpDX.X3DAudio.Emitter,SharpDX.X3DAudio.CalculateFlags,System.IntPtr)\"/> does not allocate additional memory. <see cref=\"M:SharpDX.X3DAudio.X3DAudio.X3DAudioCalculate(SharpDX.X3DAudio.X3DAudioHandle@,SharpDX.X3DAudio.Listener,SharpDX.X3DAudio.Emitter,SharpDX.X3DAudio.CalculateFlags,System.IntPtr)\"/> merely modifies the values at the memory locations allocated for these references.</td></tr></table>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='X3DAUDIO_DSP_SETTINGS']/*\"/>\t\n            <msdn-id>ee419057</msdn-id>\t\n            <unmanaged>X3DAUDIO_DSP_SETTINGS</unmanaged>\t\n            <unmanaged-short>X3DAUDIO_DSP_SETTINGS</unmanaged-short>\t\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='X3DAUDIO_DSP_SETTINGS']/*\"/>\t\n            <unmanaged>X3DAUDIO_DSP_SETTINGS</unmanaged>\t\n        </member>\n        <member name=\"F:SharpDX.X3DAudio.DspSettings.MatrixCoefficientsPointer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='X3DAUDIO_DSP_SETTINGS::pMatrixCoefficients']/*\"/>\t\n            <unmanaged>float* pMatrixCoefficients</unmanaged>\t\n            <unmanaged-short>float pMatrixCoefficients</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.X3DAudio.DspSettings.DelayTimesPointer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='X3DAUDIO_DSP_SETTINGS::pDelayTimes']/*\"/>\t\n            <unmanaged>float* pDelayTimes</unmanaged>\t\n            <unmanaged-short>float pDelayTimes</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.X3DAudio.DspSettings.SourceChannelCount\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='X3DAUDIO_DSP_SETTINGS::SrcChannelCount']/*\"/>\t\n            <unmanaged>unsigned int SrcChannelCount</unmanaged>\t\n            <unmanaged-short>unsigned int SrcChannelCount</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.X3DAudio.DspSettings.DestinationChannelCount\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='X3DAUDIO_DSP_SETTINGS::DstChannelCount']/*\"/>\t\n            <unmanaged>unsigned int DstChannelCount</unmanaged>\t\n            <unmanaged-short>unsigned int DstChannelCount</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.X3DAudio.DspSettings.LpfDirectCoefficient\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='X3DAUDIO_DSP_SETTINGS::LPFDirectCoefficient']/*\"/>\t\n            <unmanaged>float LPFDirectCoefficient</unmanaged>\t\n            <unmanaged-short>float LPFDirectCoefficient</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.X3DAudio.DspSettings.LpfReverbCoefficient\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='X3DAUDIO_DSP_SETTINGS::LPFReverbCoefficient']/*\"/>\t\n            <unmanaged>float LPFReverbCoefficient</unmanaged>\t\n            <unmanaged-short>float LPFReverbCoefficient</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.X3DAudio.DspSettings.ReverbLevel\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='X3DAUDIO_DSP_SETTINGS::ReverbLevel']/*\"/>\t\n            <unmanaged>float ReverbLevel</unmanaged>\t\n            <unmanaged-short>float ReverbLevel</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.X3DAudio.DspSettings.DopplerFactor\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='X3DAUDIO_DSP_SETTINGS::DopplerFactor']/*\"/>\t\n            <unmanaged>float DopplerFactor</unmanaged>\t\n            <unmanaged-short>float DopplerFactor</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.X3DAudio.DspSettings.EmitterToListenerAngle\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='X3DAUDIO_DSP_SETTINGS::EmitterToListenerAngle']/*\"/>\t\n            <unmanaged>float EmitterToListenerAngle</unmanaged>\t\n            <unmanaged-short>float EmitterToListenerAngle</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.X3DAudio.DspSettings.EmitterToListenerDistance\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='X3DAUDIO_DSP_SETTINGS::EmitterToListenerDistance']/*\"/>\t\n            <unmanaged>float EmitterToListenerDistance</unmanaged>\t\n            <unmanaged-short>float EmitterToListenerDistance</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.X3DAudio.DspSettings.EmitterVelocityComponent\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='X3DAUDIO_DSP_SETTINGS::EmitterVelocityComponent']/*\"/>\t\n            <unmanaged>float EmitterVelocityComponent</unmanaged>\t\n            <unmanaged-short>float EmitterVelocityComponent</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.X3DAudio.DspSettings.ListenerVelocityComponent\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='X3DAUDIO_DSP_SETTINGS::ListenerVelocityComponent']/*\"/>\t\n            <unmanaged>float ListenerVelocityComponent</unmanaged>\t\n            <unmanaged-short>float ListenerVelocityComponent</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.X3DAudio.DspSettings.#ctor(System.Int32,System.Int32)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.X3DAudio.DspSettings\"/> class.\n            </summary>\n            <param name=\"sourceChannelCount\">The source channel count.</param>\n            <param name=\"destinationChannelCount\">The destination channel count.</param>\n        </member>\n        <member name=\"F:SharpDX.X3DAudio.DspSettings.MatrixCoefficients\">\n            <summary>\n            The matrix coefficients\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.X3DAudio.DspSettings.DelayTimes\">\n            <summary>\n            The delay times\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.X3DAudio.Emitter\">\n            <summary>\t\n            Defines a single-point or multiple-point 3D audio source that is used with an arbitrary number of sound channels.\t\n            </summary>\t\n            <remarks>\t\n            <p><strong><see cref=\"T:SharpDX.X3DAudio.Emitter\"/></strong> only supports a cone in a single-point emitter. Multi-point emitters are a convenient and efficient way to manage a related group of sound sources. Many properties are shared among all channel points, such as Doppler?the same Doppler shift is applied to all channels in the emitter. Thus, the Doppler value need only be calculated once, not per-point as would be needed with multiple separate single-point emitters. Because <strong><see cref=\"T:SharpDX.X3DAudio.Emitter\"/></strong> only has one orientation vector, a multi-point emitter cone would be of limited usefulness, forcing all channels to behave as if they were facing the same direction. If multiple independent cones are needed, multiple single-point emitters should be used, each with its own orientation.</p> <p>The parameter type <strong><see cref=\"T:SharpDX.Vector3\"/></strong> is typed to <strong>DirectX::XMFLOAT3</strong>, to provide <em>x</em> , <em>y</em> , and <em>z</em> floating-point values.</p> <p>X3DAudio uses a left-handed Cartesian coordinate system, with values on the x-axis increasing from left to right, on the y-axis from bottom to top, and on the z-axis from near to far. Azimuths are measured clockwise from a given reference direction.</p> <p>For user-defined distance curves, the distance field of the first point must be 0.0f and the distance field of the last point must be 1.0f.</p> <p>If an emitter moves beyond a distance of (<strong>CurveDistanceScaler</strong> ? 1.0f), the last point on the curve is used to compute the volume output level. The last point is determined by the following:</p> <pre><see cref=\"T:SharpDX.X3DAudio.DistanceCurve\"/>.pPoints[PointCount-1].DSPSetting)</pre>  Inner Radius and Inner Radius Angle <p><strong>InnerRadius</strong> is used to specify an area of smooth transition around the origin point as a sound travels directly through, above or below the listener. Elevation is accounted for by specifying an <strong>InnerRadiusAngle</strong>, whereby a sound whose elevation increases or decreases, will eventually start to bleed the sound into more than just two speakers.</p> <p>When Inner Radius and Inner Radius Angle are not used, emitters are audible in the two closest speakers to their current position/orientation (or, if directly on a line with one speaker's defined angle, solely from that one speaker).</p> <p>Inner Radius and Inner Radius Angle have no effect on emitters positioned outside of the cones they describe. Inside of the cone, they will gradually cause the sound to bleed into the opposite speakers, until the sound will be equally heard in all speakers when the emitter is at the same position as (or directly above or below) the listener.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='X3DAUDIO_EMITTER']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.x3daudio.x3daudio_emitter</msdn-id>\t\n            <unmanaged>X3DAUDIO_EMITTER</unmanaged>\t\n            <unmanaged-short>X3DAUDIO_EMITTER</unmanaged-short>\t\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='X3DAUDIO_EMITTER']/*\"/>\t\n            <unmanaged>X3DAUDIO_EMITTER</unmanaged>\t\n        </member>\n        <member name=\"F:SharpDX.X3DAudio.Emitter.ConePointer\">\n            <summary>\t\n            <dd> Pointer to a sound cone. Used only with single-channel emitters for matrix, LPF (both direct and reverb paths), and reverb calculations. <c>null</c> specifies the emitter is omnidirectional. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='X3DAUDIO_EMITTER::pCone']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.x3daudio.x3daudio_emitter</msdn-id>\t\n            <unmanaged>X3DAUDIO_CONE* pCone</unmanaged>\t\n            <unmanaged-short>X3DAUDIO_CONE pCone</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.X3DAudio.Emitter.OrientFront\">\n            <summary>\t\n            <dd> Orientation of the front direction. This value must be orthonormal with <strong>OrientTop</strong>. <strong>OrientFront</strong> must be normalized when used. For single-channel emitters without cones <strong>OrientFront</strong> is only used for emitter angle calculations. For multi channel emitters or single-channel with cones <strong>OrientFront</strong> is used for matrix, LPF (both direct and reverb paths), and reverb calculations. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='X3DAUDIO_EMITTER::OrientFront']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.x3daudio.x3daudio_emitter</msdn-id>\t\n            <unmanaged>X3DAUDIO_VECTOR OrientFront</unmanaged>\t\n            <unmanaged-short>X3DAUDIO_VECTOR OrientFront</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.X3DAudio.Emitter.OrientTop\">\n            <summary>\t\n            <dd> Orientation of the top direction. This value must be orthonormal with <strong>OrientFront</strong>. <strong>OrientTop</strong> is only used with multi-channel emitters for matrix calculations. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='X3DAUDIO_EMITTER::OrientTop']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.x3daudio.x3daudio_emitter</msdn-id>\t\n            <unmanaged>X3DAUDIO_VECTOR OrientTop</unmanaged>\t\n            <unmanaged-short>X3DAUDIO_VECTOR OrientTop</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.X3DAudio.Emitter.Position\">\n            <summary>\t\n            <dd> Position in user-defined world units. This value does not affect <strong>Velocity</strong>. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='X3DAUDIO_EMITTER::Position']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.x3daudio.x3daudio_emitter</msdn-id>\t\n            <unmanaged>X3DAUDIO_VECTOR Position</unmanaged>\t\n            <unmanaged-short>X3DAUDIO_VECTOR Position</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.X3DAudio.Emitter.Velocity\">\n            <summary>\t\n            <dd> Velocity vector in user-defined world units/second. This value is used only for doppler calculations. It does not affect <strong>Position</strong>. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='X3DAUDIO_EMITTER::Velocity']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.x3daudio.x3daudio_emitter</msdn-id>\t\n            <unmanaged>X3DAUDIO_VECTOR Velocity</unmanaged>\t\n            <unmanaged-short>X3DAUDIO_VECTOR Velocity</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.X3DAudio.Emitter.InnerRadius\">\n            <summary>\t\n            <dd> Value to be used for the inner radius calculations. If <strong>InnerRadius</strong> is 0, then no inner radius is used, but <strong>InnerRadiusAngle</strong> may still be used. This value must be between 0.0f and MAX_FLT. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='X3DAUDIO_EMITTER::InnerRadius']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.x3daudio.x3daudio_emitter</msdn-id>\t\n            <unmanaged>float InnerRadius</unmanaged>\t\n            <unmanaged-short>float InnerRadius</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.X3DAudio.Emitter.InnerRadiusAngle\">\n            <summary>\t\n            <dd> Value to be used for the inner radius angle calculations. This value must be between 0.0f and X3DAUDIO_PI/4.0. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='X3DAUDIO_EMITTER::InnerRadiusAngle']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.x3daudio.x3daudio_emitter</msdn-id>\t\n            <unmanaged>float InnerRadiusAngle</unmanaged>\t\n            <unmanaged-short>float InnerRadiusAngle</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.X3DAudio.Emitter.ChannelCount\">\n            <summary>\t\n            <dd> Number of emitters defined by the <strong><see cref=\"T:SharpDX.X3DAudio.Emitter\"/></strong> structure. Must be greater than 0. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='X3DAUDIO_EMITTER::ChannelCount']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.x3daudio.x3daudio_emitter</msdn-id>\t\n            <unmanaged>unsigned int ChannelCount</unmanaged>\t\n            <unmanaged-short>unsigned int ChannelCount</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.X3DAudio.Emitter.ChannelRadius\">\n            <summary>\t\n            <dd> Distance from <strong>Position</strong> that channels will be placed if <strong>ChannelCount</strong> is greater than 1. <strong>ChannelRadius</strong> is only used with multi-channel emitters for matrix calculations. Must be greater than or equal to 0.0f. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='X3DAUDIO_EMITTER::ChannelRadius']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.x3daudio.x3daudio_emitter</msdn-id>\t\n            <unmanaged>float ChannelRadius</unmanaged>\t\n            <unmanaged-short>float ChannelRadius</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.X3DAudio.Emitter.ChannelAzimuthsPointer\">\n            <summary>\t\n            <dd> Table of channel positions, expressed as an azimuth in radians along the channel radius with respect to the front orientation vector in the plane orthogonal to the top orientation vector. An azimuth of X3DAUDIO_2PI specifies a channel is a low-frequency effects (LFE) channel. LFE channels are positioned at the emitter base and are calculated with respect to <strong>pLFECurve</strong> only, never <strong>pVolumeCurve</strong>. <strong>pChannelAzimuths</strong> must have at least <strong>ChannelCount</strong> elements. The table values must be within 0.0f to X3DAUDIO_2PI. <strong>pChannelAzimuths</strong> is used with multi-channel emitters for matrix calculations. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='X3DAUDIO_EMITTER::pChannelAzimuths']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.x3daudio.x3daudio_emitter</msdn-id>\t\n            <unmanaged>float* pChannelAzimuths</unmanaged>\t\n            <unmanaged-short>float pChannelAzimuths</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.X3DAudio.Emitter.VolumeCurvePointer\">\n            <summary>\t\n            <dd> Volume-level distance curve, which is used only for matrix calculations. <c>null</c> specifies a specialized default curve that conforms to the inverse square law, such that when distance is between 0.0f and <strong>CurveDistanceScaler</strong> ? 1.0f, no attenuation is applied. <p>When distance is greater than <strong>CurveDistanceScaler</strong> ? 1.0f, the amplification factor is (<strong>CurveDistanceScaler</strong> ? 1.0f)/distance. At a distance of <strong>CurveDistanceScaler</strong> ? 2.0f, the sound will be at half volume or -6 dB, at a distance of <strong>CurveDistanceScaler</strong> ? 4.0f, the sound will be at one quarter volume or -12 dB, and so on.</p> <p><strong>pVolumeCurve</strong> and <strong>pLFECurve</strong> are independent of each other. <strong>pVolumeCurve</strong> does not affect LFE channel volume.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='X3DAUDIO_EMITTER::pVolumeCurve']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.x3daudio.x3daudio_emitter</msdn-id>\t\n            <unmanaged>X3DAUDIO_DISTANCE_CURVE* pVolumeCurve</unmanaged>\t\n            <unmanaged-short>X3DAUDIO_DISTANCE_CURVE pVolumeCurve</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.X3DAudio.Emitter.LFECurvePointer\">\n            <summary>\t\n            <dd> LFE roll-off distance curve, or <c>null</c> to use default curve: [0.0f, <strong>CurveDistanceScaler</strong> ?1.0f], [<strong>CurveDistanceScaler</strong> ?1.0f, 0.0f]. A <c>null</c> value for <strong>pLFECurve</strong> specifies a default curve that conforms to the inverse square law with distances &lt;= <strong>CurveDistanceScaler</strong> clamped to no attenuation. <p><strong>pVolumeCurve</strong> and <strong>pLFECurve</strong> are independent of each other. <strong>pLFECurve</strong> does not affect non LFE channel volume.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='X3DAUDIO_EMITTER::pLFECurve']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.x3daudio.x3daudio_emitter</msdn-id>\t\n            <unmanaged>X3DAUDIO_DISTANCE_CURVE* pLFECurve</unmanaged>\t\n            <unmanaged-short>X3DAUDIO_DISTANCE_CURVE pLFECurve</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.X3DAudio.Emitter.LPFDirectCurvePointer\">\n            <summary>\t\n            <dd> Low-pass filter (LPF) direct-path coefficient distance curve, or <c>null</c> to use the default curve: [0.0f, 1.0f], [1.0f, 0.75f]. <strong>pLPFDirectCurve</strong> is only used for LPF direct-path calculations. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='X3DAUDIO_EMITTER::pLPFDirectCurve']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.x3daudio.x3daudio_emitter</msdn-id>\t\n            <unmanaged>X3DAUDIO_DISTANCE_CURVE* pLPFDirectCurve</unmanaged>\t\n            <unmanaged-short>X3DAUDIO_DISTANCE_CURVE pLPFDirectCurve</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.X3DAudio.Emitter.LPFReverbCurvePointer\">\n            <summary>\t\n            <dd> LPF reverb-path coefficient distance curve, or <c>null</c> to use default curve: [0.0f, 0.75f], [1.0f, 0.75f]. <strong>pLPFReverbCurve</strong> is only used for LPF reverb path calculations. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='X3DAUDIO_EMITTER::pLPFReverbCurve']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.x3daudio.x3daudio_emitter</msdn-id>\t\n            <unmanaged>X3DAUDIO_DISTANCE_CURVE* pLPFReverbCurve</unmanaged>\t\n            <unmanaged-short>X3DAUDIO_DISTANCE_CURVE pLPFReverbCurve</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.X3DAudio.Emitter.ReverbCurvePointer\">\n            <summary>\t\n            <dd> Reverb send level distance curve, or <c>null</c> to use default curve: [0.0f, 1.0f], [1.0f, 0.0f]. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='X3DAUDIO_EMITTER::pReverbCurve']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.x3daudio.x3daudio_emitter</msdn-id>\t\n            <unmanaged>X3DAUDIO_DISTANCE_CURVE* pReverbCurve</unmanaged>\t\n            <unmanaged-short>X3DAUDIO_DISTANCE_CURVE pReverbCurve</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.X3DAudio.Emitter.CurveDistanceScaler\">\n            <summary>\t\n            <dd> Curve distance scaler that is used to scale normalized distance curves to user-defined world units, and/or to exaggerate their effect. This does not affect any other calculations. The value must be within the range FLT_MIN to FLT_MAX. <strong>CurveDistanceScaler</strong> is only used for matrix, LPF (both direct and reverb paths), and reverb calculations. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='X3DAUDIO_EMITTER::CurveDistanceScaler']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.x3daudio.x3daudio_emitter</msdn-id>\t\n            <unmanaged>float CurveDistanceScaler</unmanaged>\t\n            <unmanaged-short>float CurveDistanceScaler</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.X3DAudio.Emitter.DopplerScaler\">\n            <summary>\t\n            <dd> Doppler shift scaler that is used to exaggerate Doppler shift effect. <strong>DopplerScaler</strong> is only used for Doppler calculations and does not affect any other calculations. The value must be within the range 0.0f to FLT_MAX. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='X3DAUDIO_EMITTER::DopplerScaler']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.x3daudio.x3daudio_emitter</msdn-id>\t\n            <unmanaged>float DopplerScaler</unmanaged>\t\n            <unmanaged-short>float DopplerScaler</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.X3DAudio.Emitter.Cone\">\n            <summary>\n            Reference to Cone data.\n            </summary>\n            <unmanaged>X3DAUDIO_CONE* pCone</unmanaged>\t\n        </member>\n        <member name=\"M:SharpDX.X3DAudio.Emitter.__MarshalTo(SharpDX.X3DAudio.Emitter.__Native@)\">\n            disabled as it is not used\n        </member>\n        <member name=\"T:SharpDX.X3DAudio.Listener\">\n            <summary>\t\n            Defines a point of 3D audio reception.\t\n            </summary>\t\n            <remarks>\t\n            <p>The parameter type <strong><see cref=\"T:SharpDX.Vector3\"/></strong> is typed to DirectX::XMFLOAT3, to provide x, y and z floating-point values.</p> <p>A listener's front and top vectors must be orthonormal. To be considered orthonormal, a pair of vectors must have a magnitude of 1 +- 1x10-5 and a dot product of 0 +- 1x10-5.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='X3DAUDIO_LISTENER']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.x3daudio.x3daudio_listener</msdn-id>\t\n            <unmanaged>X3DAUDIO_LISTENER</unmanaged>\t\n            <unmanaged-short>X3DAUDIO_LISTENER</unmanaged-short>\t\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='X3DAUDIO_LISTENER']/*\"/>\t\n            <unmanaged>X3DAUDIO_LISTENER</unmanaged>\t\n        </member>\n        <member name=\"F:SharpDX.X3DAudio.Listener.OrientFront\">\n            <summary>\t\n            <dd> Orientation of front direction. When <strong>pCone</strong> is <c>null</c> <strong>OrientFront</strong> is used only for matrix and delay calculations. When <strong>pCone</strong> is not <c>null</c> <strong>OrientFront</strong> is used for matrix, LPF (both direct and reverb paths), and reverb calculations. This value must be orthonormal with <strong>OrientTop</strong> when used. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='X3DAUDIO_LISTENER::OrientFront']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.x3daudio.x3daudio_listener</msdn-id>\t\n            <unmanaged>X3DAUDIO_VECTOR OrientFront</unmanaged>\t\n            <unmanaged-short>X3DAUDIO_VECTOR OrientFront</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.X3DAudio.Listener.OrientTop\">\n            <summary>\t\n            <dd> Orientation of top direction, used only for matrix and delay calculations. This value must be orthonormal with <strong>OrientFront</strong> when used </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='X3DAUDIO_LISTENER::OrientTop']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.x3daudio.x3daudio_listener</msdn-id>\t\n            <unmanaged>X3DAUDIO_VECTOR OrientTop</unmanaged>\t\n            <unmanaged-short>X3DAUDIO_VECTOR OrientTop</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.X3DAudio.Listener.Position\">\n            <summary>\t\n            <dd> Position in user-defined world units. This value does not affect <strong>Velocity</strong>. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='X3DAUDIO_LISTENER::Position']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.x3daudio.x3daudio_listener</msdn-id>\t\n            <unmanaged>X3DAUDIO_VECTOR Position</unmanaged>\t\n            <unmanaged-short>X3DAUDIO_VECTOR Position</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.X3DAudio.Listener.Velocity\">\n            <summary>\t\n            <dd> Velocity vector in user-defined world units per second, used only for doppler calculations. This value does not affect <strong>Position</strong>. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='X3DAUDIO_LISTENER::Velocity']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.x3daudio.x3daudio_listener</msdn-id>\t\n            <unmanaged>X3DAUDIO_VECTOR Velocity</unmanaged>\t\n            <unmanaged-short>X3DAUDIO_VECTOR Velocity</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.X3DAudio.Listener.ConePointer\">\n            <summary>\t\n            <dd> Pointer to an <see cref=\"T:SharpDX.X3DAudio.Cone\"/> structure for this listener. Providing a listener cone will specify that additional calculations are performed when determining the volume and filter DSP parameters for individual sound sources. A <c>null</c> <strong>pCone</strong> value specifies an omnidirectional sound and no cone processing is applied. <strong>pCone</strong> is only used for matrix, LPF (both direct and reverb paths), and reverb calculations. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='X3DAUDIO_LISTENER::pCone']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.x3daudio.x3daudio_listener</msdn-id>\t\n            <unmanaged>X3DAUDIO_CONE* pCone</unmanaged>\t\n            <unmanaged-short>X3DAUDIO_CONE pCone</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.X3DAudio.Listener.Cone\">\n            <summary>\n            Reference to Cone data.\n            </summary>\n            <unmanaged>X3DAUDIO_CONE* pCone</unmanaged>\t\n        </member>\n        <member name=\"M:SharpDX.X3DAudio.Listener.__MarshalTo(SharpDX.X3DAudio.Listener.__Native@)\">\n            Disabled as it is not used\n        </member>\n        <member name=\"T:SharpDX.XAPO.BufferFlags\">\n            <summary>\t\n            Describes the contents of a stream buffer.\t\n            </summary>\t\n            <remarks>\t\n            <p>This metadata can be used to implement optimizations that require knowledge of a stream buffer's contents.  \t\n            For example, XAPOs that always produce silent output from silent input can check the flag on the input stream buffer \t\n            to determine if any signal processing is necessary. If silent, the XAPO can simply set the flag on the output \t\n            stream buffer to silent and return, thus averting the work of processing silent data.</p> <p>Likewise, XAPOs that receive valid input data, but generate silence (for any reason), may set the \t\n            output stream buffer's flag accordingly, rather than writing silent samples to the buffer.</p> <p>These flags represent what should be assumed is in the respective buffer.  \t\n            The flags may not reflect what is actually stored in memory.\t\n            For example, the <see cref=\"F:SharpDX.XAPO.BufferFlags.Silent\"/> indicates that silent data should be assumed, however the respective memory may be\t\n            uninitialized</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAPO_BUFFER_FLAGS']/*\"/>\t\n            <msdn-id>ee419207</msdn-id>\t\n            <unmanaged>XAPO_BUFFER_FLAGS</unmanaged>\t\n            <unmanaged-short>XAPO_BUFFER_FLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAPO.BufferFlags.Silent\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAPO_BUFFER_SILENT']/*\"/>\t\n            <unmanaged>XAPO_BUFFER_SILENT</unmanaged>\t\n            <unmanaged-short>XAPO_BUFFER_SILENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAPO.BufferFlags.Valid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAPO_BUFFER_VALID']/*\"/>\t\n            <unmanaged>XAPO_BUFFER_VALID</unmanaged>\t\n            <unmanaged-short>XAPO_BUFFER_VALID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAPO.BufferFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XAPO.PropertyFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAPO_PROPERTY_TYPE']/*\"/>\t\n            <unmanaged>XAPO_PROPERTY_TYPE</unmanaged>\t\n            <unmanaged-short>XAPO_PROPERTY_TYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAPO.PropertyFlags.ChannelsMustMatch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAPO_FLAG_CHANNELS_MUST_MATCH']/*\"/>\t\n            <unmanaged>XAPO_FLAG_CHANNELS_MUST_MATCH</unmanaged>\t\n            <unmanaged-short>XAPO_FLAG_CHANNELS_MUST_MATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAPO.PropertyFlags.FrameRateMustMatch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAPO_FLAG_FRAMERATE_MUST_MATCH']/*\"/>\t\n            <unmanaged>XAPO_FLAG_FRAMERATE_MUST_MATCH</unmanaged>\t\n            <unmanaged-short>XAPO_FLAG_FRAMERATE_MUST_MATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAPO.PropertyFlags.BitspersampleMustMatch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAPO_FLAG_BITSPERSAMPLE_MUST_MATCH']/*\"/>\t\n            <unmanaged>XAPO_FLAG_BITSPERSAMPLE_MUST_MATCH</unmanaged>\t\n            <unmanaged-short>XAPO_FLAG_BITSPERSAMPLE_MUST_MATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAPO.PropertyFlags.BufferCountMustMatch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAPO_FLAG_BUFFERCOUNT_MUST_MATCH']/*\"/>\t\n            <unmanaged>XAPO_FLAG_BUFFERCOUNT_MUST_MATCH</unmanaged>\t\n            <unmanaged-short>XAPO_FLAG_BUFFERCOUNT_MUST_MATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAPO.PropertyFlags.InplaceRequired\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAPO_FLAG_INPLACE_REQUIRED']/*\"/>\t\n            <unmanaged>XAPO_FLAG_INPLACE_REQUIRED</unmanaged>\t\n            <unmanaged-short>XAPO_FLAG_INPLACE_REQUIRED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAPO.PropertyFlags.InplaceSupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAPO_FLAG_INPLACE_SUPPORTED']/*\"/>\t\n            <unmanaged>XAPO_FLAG_INPLACE_SUPPORTED</unmanaged>\t\n            <unmanaged-short>XAPO_FLAG_INPLACE_SUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAPO.PropertyFlags.Default\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAPO_FLAG_DEFAULT']/*\"/>\t\n            <unmanaged>XAPO_FLAG_DEFAULT</unmanaged>\t\n            <unmanaged-short>XAPO_FLAG_DEFAULT</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XAPO.Fx.XAPOFx\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.XAPO.Fx.XAPOFx']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.XAPO.Fx.XAPOFx.CLSID_FXEQ\">\n            <summary>Constant CLSID_FXEQ.</summary>\n            <unmanaged>CLSID_FXEQ</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.XAPO.Fx.XAPOFx.CLSID_FXMasteringLimiter\">\n            <summary>Constant CLSID_FXMasteringLimiter.</summary>\n            <unmanaged>CLSID_FXMasteringLimiter</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.XAPO.Fx.XAPOFx.CLSID_FXReverb\">\n            <summary>Constant CLSID_FXReverb.</summary>\n            <unmanaged>CLSID_FXReverb</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.XAPO.Fx.XAPOFx.CLSID_FXEcho\">\n            <summary>Constant CLSID_FXEcho.</summary>\n            <unmanaged>CLSID_FXEcho</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.XAPO.Fx.XAPOFx.CreateFX(System.Guid,SharpDX.ComObject)\">\n            <summary>\t\n            Creates an instance of the requested XAPOFX effect.\t\n            </summary>\t\n            <param name=\"clsid\"><dd> ID of the effect to create. Use the <strong>__uuidof</strong> on the effect class name  to get the CLSID for an effect. For example, <strong>__uuidof(FXReverb)</strong> would provide  the CLSID for the FXReverb effect. For a list of effects provided by XAPOFX, see XAPOFX Overview. For an example  of retrieving the CLSID for an effect, see How to: Use XAPOFX in XAudio2. </dd></param>\t\n            <param name=\"effectRef\"><dd> Receives a reference to the created XAPO instance. If <strong>CreateFX</strong> fails, <em>pEffect</em> is untouched. </dd></param>\t\n            <returns>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful; otherwise, an error code.</returns>\t\n            <remarks>\t\n            <p>The created XAPO will have a reference count of 1. Client code should call <strong>IUnknown::Release</strong> after passing the XAPO to XAudio2 to allow XAudio2 to dispose of the XAPO when it is no longer needed.  Use <see cref=\"M:SharpDX.XAudio2.XAudio2.CreateSourceVoice_(SharpDX.XAudio2.SourceVoice,System.IntPtr,SharpDX.XAudio2.VoiceFlags,System.Single,System.IntPtr,System.Nullable{SharpDX.XAudio2.VoiceSendDescriptors},System.Nullable{SharpDX.XAudio2.EffectChain})\"/> or <see cref=\"M:SharpDX.XAudio2.Voice.SetEffectChain(System.Nullable{SharpDX.XAudio2.EffectChain})\"/> to pass an XAPO to XAudio2.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='CreateFX']/*\"/>\t\n            <msdn-id>hh405044</msdn-id>\t\n            <unmanaged>HRESULT CreateFX([In] const GUID&amp; clsid,[Out, Fast] IUnknown** pEffect)</unmanaged>\t\n            <unmanaged-short>CreateFX</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XAPO.Fx.EchoParameters\">\n            <summary>\t\n            Parameters for use with the FXEcho XAPO.\t\n            </summary>\t\n            <remarks>\t\n            <p>Echo only supports FLOAT32 audio formats.</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='FXECHO_PARAMETERS']/*\"/>\t\n            <msdn-id>ee417667</msdn-id>\t\n            <unmanaged>FXECHO_PARAMETERS</unmanaged>\t\n            <unmanaged-short>FXECHO_PARAMETERS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAPO.Fx.EchoParameters.WetDryMix\">\n            <summary>\t\n            <dd> Ratio of wet (processed) signal to dry (original) signal. </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='FXECHO_PARAMETERS::WetDryMix']/*\"/>\t\n            <msdn-id>ee417667</msdn-id>\t\n            <unmanaged>float WetDryMix</unmanaged>\t\n            <unmanaged-short>float WetDryMix</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAPO.Fx.EchoParameters.Feedback\">\n            <summary>\t\n            <dd> Amount of output to feed back into input. </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='FXECHO_PARAMETERS::Feedback']/*\"/>\t\n            <msdn-id>ee417667</msdn-id>\t\n            <unmanaged>float Feedback</unmanaged>\t\n            <unmanaged-short>float Feedback</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAPO.Fx.EchoParameters.Delay\">\n            <summary>\t\n            <dd> Delay to all channels in milliseconds. This value must be between <strong>FXECHO_MIN_DELAY</strong> and <strong>FXECHO_INITDATA.MaxDelay</strong>. </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='FXECHO_PARAMETERS::Delay']/*\"/>\t\n            <msdn-id>ee417667</msdn-id>\t\n            <unmanaged>float Delay</unmanaged>\t\n            <unmanaged-short>float Delay</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XAPO.Fx.EqualizerParameters\">\n            <summary>\t\n            Parameters for use with the FXEQ XAPO.\t\n            </summary>\t\n            <remarks>\t\n            <p>Each band ranges from <strong>FrequencyCenterN</strong> - (<strong>BandwidthN</strong> / 2) to  <strong>FrequencyCenterN</strong> + (<strong>BandwidthN</strong> / 2).</p>\t\n            </remarks>\t\n            <!-- Failed to insert some or all of included XML --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='FXEQ_PARAMETERS']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.xapofx.fxeq_parameters</msdn-id>\t\n            <unmanaged>FXEQ_PARAMETERS</unmanaged>\t\n            <unmanaged-short>FXEQ_PARAMETERS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAPO.Fx.EqualizerParameters.FrequencyCenter0\">\n            <summary>\t\n            <dd> Center frequency in Hz for band 0.   Must be between FXEQ_MIN_FREQUENCY_CENTER and FXEQ_MAX_FREQUENCY_CENTER. </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='FXEQ_PARAMETERS::FrequencyCenter0']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.xapofx.fxeq_parameters</msdn-id>\t\n            <unmanaged>float FrequencyCenter0</unmanaged>\t\n            <unmanaged-short>float FrequencyCenter0</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAPO.Fx.EqualizerParameters.Gain0\">\n            <summary>\t\n            <dd> The boost or decrease to frequencies in band 0. Must be between FXEQ_MIN_GAIN and FXEQ_MAX_GAIN </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='FXEQ_PARAMETERS::Gain0']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.xapofx.fxeq_parameters</msdn-id>\t\n            <unmanaged>float Gain0</unmanaged>\t\n            <unmanaged-short>float Gain0</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAPO.Fx.EqualizerParameters.Bandwidth0\">\n            <summary>\t\n            <dd> Width of band 0.  Must be between FXEQ_MIN_BANDWIDTH and FXEQ_MAX_BANDWIDTH. </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='FXEQ_PARAMETERS::Bandwidth0']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.xapofx.fxeq_parameters</msdn-id>\t\n            <unmanaged>float Bandwidth0</unmanaged>\t\n            <unmanaged-short>float Bandwidth0</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAPO.Fx.EqualizerParameters.FrequencyCenter1\">\n            <summary>\t\n            <dd> Center frequency in Hz for band 1.   Must be between FXEQ_MIN_FREQUENCY_CENTER and FXEQ_MAX_FREQUENCY_CENTER. </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='FXEQ_PARAMETERS::FrequencyCenter1']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.xapofx.fxeq_parameters</msdn-id>\t\n            <unmanaged>float FrequencyCenter1</unmanaged>\t\n            <unmanaged-short>float FrequencyCenter1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAPO.Fx.EqualizerParameters.Gain1\">\n            <summary>\t\n            <dd> The boost or decrease to frequencies in band 1.  Must be between FXEQ_MIN_GAIN and FXEQ_MAX_GAIN </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='FXEQ_PARAMETERS::Gain1']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.xapofx.fxeq_parameters</msdn-id>\t\n            <unmanaged>float Gain1</unmanaged>\t\n            <unmanaged-short>float Gain1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAPO.Fx.EqualizerParameters.Bandwidth1\">\n            <summary>\t\n            <dd> Width of band 1. Must be between FXEQ_MIN_BANDWIDTH and FXEQ_MAX_BANDWIDTH. </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='FXEQ_PARAMETERS::Bandwidth1']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.xapofx.fxeq_parameters</msdn-id>\t\n            <unmanaged>float Bandwidth1</unmanaged>\t\n            <unmanaged-short>float Bandwidth1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAPO.Fx.EqualizerParameters.FrequencyCenter2\">\n            <summary>\t\n            <dd> Center frequency in Hz for band 2.   Must be between FXEQ_MIN_FREQUENCY_CENTER and FXEQ_MAX_FREQUENCY_CENTER. </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='FXEQ_PARAMETERS::FrequencyCenter2']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.xapofx.fxeq_parameters</msdn-id>\t\n            <unmanaged>float FrequencyCenter2</unmanaged>\t\n            <unmanaged-short>float FrequencyCenter2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAPO.Fx.EqualizerParameters.Gain2\">\n            <summary>\t\n            <dd> The boost or decrease to frequencies in band 2.  Must be between FXEQ_MIN_GAIN and FXEQ_MAX_GAIN </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='FXEQ_PARAMETERS::Gain2']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.xapofx.fxeq_parameters</msdn-id>\t\n            <unmanaged>float Gain2</unmanaged>\t\n            <unmanaged-short>float Gain2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAPO.Fx.EqualizerParameters.Bandwidth2\">\n            <summary>\t\n            <dd> Width of band 2. Must be between FXEQ_MIN_BANDWIDTH and FXEQ_MAX_BANDWIDTH. </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='FXEQ_PARAMETERS::Bandwidth2']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.xapofx.fxeq_parameters</msdn-id>\t\n            <unmanaged>float Bandwidth2</unmanaged>\t\n            <unmanaged-short>float Bandwidth2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAPO.Fx.EqualizerParameters.FrequencyCenter3\">\n            <summary>\t\n            <dd> Center frequency in Hz for band 3.   Must be between FXEQ_MIN_FREQUENCY_CENTER and FXEQ_MAX_FREQUENCY_CENTER. </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='FXEQ_PARAMETERS::FrequencyCenter3']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.xapofx.fxeq_parameters</msdn-id>\t\n            <unmanaged>float FrequencyCenter3</unmanaged>\t\n            <unmanaged-short>float FrequencyCenter3</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAPO.Fx.EqualizerParameters.Gain3\">\n            <summary>\t\n            <dd> The boost or decrease to frequencies in band 3.  Must be between FXEQ_MIN_GAIN and FXEQ_MAX_GAIN </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='FXEQ_PARAMETERS::Gain3']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.xapofx.fxeq_parameters</msdn-id>\t\n            <unmanaged>float Gain3</unmanaged>\t\n            <unmanaged-short>float Gain3</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAPO.Fx.EqualizerParameters.Bandwidth3\">\n            <summary>\t\n            <dd> Width of band 3. Must be between FXEQ_MIN_BANDWIDTH and FXEQ_MAX_BANDWIDTH. </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='FXEQ_PARAMETERS::Bandwidth3']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.xapofx.fxeq_parameters</msdn-id>\t\n            <unmanaged>float Bandwidth3</unmanaged>\t\n            <unmanaged-short>float Bandwidth3</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XAPO.Fx.MasteringLimiterParameters\">\n            <summary>\t\n            Parameters for use with the FXMasteringLimiter XAPO.\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='FXMASTERINGLIMITER_PARAMETERS']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.xapofx.fxmasteringlimiter_parameters</msdn-id>\t\n            <unmanaged>FXMASTERINGLIMITER_PARAMETERS</unmanaged>\t\n            <unmanaged-short>FXMASTERINGLIMITER_PARAMETERS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAPO.Fx.MasteringLimiterParameters.MinimumLoudness\">\n            <summary>Constant MinimumLoudness.</summary>\n            <unmanaged>FXMASTERINGLIMITER_MIN_LOUDNESS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.XAPO.Fx.MasteringLimiterParameters.MaximumLoudness\">\n            <summary>Constant MaximumLoudness.</summary>\n            <unmanaged>FXMASTERINGLIMITER_MAX_LOUDNESS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.XAPO.Fx.MasteringLimiterParameters.DefaultLoudness\">\n            <summary>Constant DefaultLoudness.</summary>\n            <unmanaged>FXMASTERINGLIMITER_DEFAULT_LOUDNESS</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.XAPO.Fx.MasteringLimiterParameters.MaximumRelease\">\n            <summary>Constant MaximumRelease.</summary>\n            <unmanaged>FXMASTERINGLIMITER_MAX_RELEASE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.XAPO.Fx.MasteringLimiterParameters.DefaultRelease\">\n            <summary>Constant DefaultRelease.</summary>\n            <unmanaged>FXMASTERINGLIMITER_DEFAULT_RELEASE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.XAPO.Fx.MasteringLimiterParameters.MinimumRelease\">\n            <summary>Constant MinimumRelease.</summary>\n            <unmanaged>FXMASTERINGLIMITER_MIN_RELEASE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.XAPO.Fx.MasteringLimiterParameters.Release\">\n            <summary>\t\n            <dd> Speed at which the limiter stops affecting audio once it drops below the limiter's threshold. Value must be between <see cref=\"F:SharpDX.XAPO.Fx.MasteringLimiterParameters.MinimumRelease\"/> and <see cref=\"F:SharpDX.XAPO.Fx.MasteringLimiterParameters.MaximumRelease\"/>. </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='FXMASTERINGLIMITER_PARAMETERS::Release']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.xapofx.fxmasteringlimiter_parameters</msdn-id>\t\n            <unmanaged>unsigned int Release</unmanaged>\t\n            <unmanaged-short>unsigned int Release</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAPO.Fx.MasteringLimiterParameters.Loudness\">\n            <summary>\t\n            <dd> Threshold of the limiter. Value must be between <see cref=\"F:SharpDX.XAPO.Fx.MasteringLimiterParameters.MinimumLoudness\"/> and <see cref=\"F:SharpDX.XAPO.Fx.MasteringLimiterParameters.MaximumLoudness\"/>. </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='FXMASTERINGLIMITER_PARAMETERS::Loudness']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.xapofx.fxmasteringlimiter_parameters</msdn-id>\t\n            <unmanaged>unsigned int Loudness</unmanaged>\t\n            <unmanaged-short>unsigned int Loudness</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XAPO.Fx.ReverbParameters\">\n            <summary>\t\n            Parameters for use with the FXReverb XAPO.\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='FXREVERB_PARAMETERS']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.xapofx.fxreverb_parameters</msdn-id>\t\n            <unmanaged>FXREVERB_PARAMETERS</unmanaged>\t\n            <unmanaged-short>FXREVERB_PARAMETERS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAPO.Fx.ReverbParameters.Diffusion\">\n            <summary>\t\n            <dd> Controls the character of the individual wall reflections. Set to minimum value to simulate a hard flat surface and to maximum value to simulate a diffuse surface.Value must be between FXREVERB_MIN_DIFFUSION and FXREVERB_MAX_DIFFUSION. </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='FXREVERB_PARAMETERS::Diffusion']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.xapofx.fxreverb_parameters</msdn-id>\t\n            <unmanaged>float Diffusion</unmanaged>\t\n            <unmanaged-short>float Diffusion</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAPO.Fx.ReverbParameters.RoomSize\">\n            <summary>\t\n            <dd> Size of the room. Value must be between FXREVERB_MIN_ROOMSIZE and FXREVERB_MAX_ROOMSIZE. Note that physical meaning of <em>RoomSize</em> is subjective and not tied to any particular units. A smaller value will result in reflections reaching the listener more quickly while reflections will take longer with larger values for <em>RoomSize</em>. </dd>\t\n            </summary>\t\n            <!-- Failed to insert some or all of included XML --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='FXREVERB_PARAMETERS::RoomSize']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.xapofx.fxreverb_parameters</msdn-id>\t\n            <unmanaged>float RoomSize</unmanaged>\t\n            <unmanaged-short>float RoomSize</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XAPO.AudioProcessor\">\n            <summary>\t\n            Called by XAudio2 to lock the input and output configurations of an XAPO allowing it to\t\n            do any final initialization beforeProcessis called on the realtime thread.\t\n            </summary>\t\n            <remarks>\t\n            <p>Once locked, the input and output configuration and any other locked parameters remain constant until \t\n            UnLockForProcess is called.  After an XAPO is locked, further calls to <strong>LockForProcess</strong> have no effect until the UnLockForProcess function is called.</p> <p>An XAPO indicates what specific formats it supports through its implementation of the \t\n            IsInputFormatSupported and \t\n            IsOutputFormatSupported methods. An XAPO should assert the input and \t\n            output configurations are supported and that any required effect-specific initialization is complete.  The \t\n            IsInputFormatSupported, \t\n            IsOutputFormatSupported, and \t\n            Initialize methods should be used as necessary before calling this method.</p> <p>Because Process is a nonblocking method, all internal memory buffers required for \t\n            Process should be allocated in <strong>LockForProcess</strong>.</p> <p>Process is never called before <strong>LockForProcess</strong> returns successfully.</p> <p><strong>LockForProcess</strong> is called directly by XAudio2 and should not be called by the client code.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXAPO']/*\"/>\t\n            <msdn-id>ee418455</msdn-id>\t\n            <unmanaged>IXAPO</unmanaged>\t\n            <unmanaged-short>IXAPO</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XAPO.AudioProcessor.IsInputFormatSupported(SharpDX.Multimedia.WaveFormat,SharpDX.Multimedia.WaveFormat,SharpDX.Multimedia.WaveFormat@)\">\n            <summary>\t\n            Queries if a specific input format is supported for a given output format.\t\n            </summary>\t\n            <param name=\"outputFormat\">Output format.</param>\n            <param name=\"requestedInputFormat\">Input format to check for being supported.</param>\n            <param name=\"supportedInputFormat\"> If not NULL, and the input format is not supported for the given output format, ppSupportedInputFormat returns a  pointer to the closest input format that is supported. Use {{XAPOFree}} to free the returned structure. </param>\n            <returns>No documentation.</returns>\n            <unmanaged>HRESULT IXAPO::IsInputFormatSupported([None] const WAVEFORMATEX* pOutputFormat,[None] const WAVEFORMATEX* pRequestedInputFormat,[Out, Optional] WAVEFORMATEX** ppSupportedInputFormat)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.XAPO.AudioProcessor.IsOutputFormatSupported(SharpDX.Multimedia.WaveFormat,SharpDX.Multimedia.WaveFormat,SharpDX.Multimedia.WaveFormat@)\">\n            <summary>\t\n            Queries if a specific output format is supported for a given input format.\t\n            </summary>\t\n            <param name=\"inputFormat\">[in]  Input format. </param>\n            <param name=\"requestedOutputFormat\">[in]  Output format to check for being supported. </param>\n            <param name=\"supportedOutputFormat\">[out]  If not NULL and the output format is not supported for the given input format, ppSupportedOutputFormat returns a pointer to the closest output format that is supported. Use {{XAPOFree}} to free the returned structure. </param>\n            <returns>No documentation.</returns>\n            <unmanaged>HRESULT IXAPO::IsOutputFormatSupported([None] const WAVEFORMATEX* pInputFormat,[None] const WAVEFORMATEX* pRequestedOutputFormat,[Out, Optional] WAVEFORMATEX** ppSupportedOutputFormat)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.XAPO.AudioProcessor.Initialize(SharpDX.DataStream)\">\n            <summary>\t\n            Performs any effect-specific initialization.\t\n            </summary>\t\n            <param name=\"stream\"> Effect-specific initialization parameters, may be NULL if DataByteSize is 0. </param>\n            <returns>No documentation.</returns>\n            <unmanaged>HRESULT IXAPO::Initialize([In, Buffer, Optional] const void* pData,[None] UINT32 DataByteSize)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.XAPO.AudioProcessor.Reset\">\n            <summary>\t\n            Resets variables dependent on frame history. \t\n            </summary>\t\n            <unmanaged>void IXAPO::Reset()</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.XAPO.AudioProcessor.LockForProcess(SharpDX.XAPO.LockParameters[],SharpDX.XAPO.LockParameters[])\">\n            <summary>\t\n            Called by XAudio2 to lock the input and output configurations of an XAPO allowing it to\t\n            do any final initialization before {{Process}} is called on the realtime thread.\t\n            </summary>\t\n            <param name=\"inputLockedParameters\"> Array of input <see cref=\"T:SharpDX.XAPO.LockParameters\"/> structures.pInputLockedParameters may be NULL if InputLockedParameterCount is 0, otherwise itmust have InputLockedParameterCount elements.</param>\n            <param name=\"outputLockedParameters\"> Array of output <see cref=\"T:SharpDX.XAPO.LockParameters\"/> structures.pOutputLockedParameters may be NULL if OutputLockedParameterCount is 0, otherwise itmust have OutputLockedParameterCount elements.</param>\n            <returns>No documentation.</returns>\n            <unmanaged>HRESULT IXAPO::LockForProcess([None] UINT32 InputLockedParameterCount,[In, Buffer, Optional] const XAPO_LOCKFORPROCESS_BUFFER_PARAMETERS* pInputLockedParameters,[None] UINT32 OutputLockedParameterCount,[In, Buffer, Optional] const XAPO_LOCKFORPROCESS_BUFFER_PARAMETERS* pOutputLockedParameters)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.XAPO.AudioProcessor.UnlockForProcess\">\n            <summary>\t\n            Deallocates variables that were allocated with the {{LockForProcess}} method.\t\n            </summary>\t\n            <unmanaged>void IXAPO::UnlockForProcess()</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.XAPO.AudioProcessor.Process(SharpDX.XAPO.BufferParameters[],SharpDX.XAPO.BufferParameters[],System.Boolean)\">\n            <summary>\t\n            Runs the XAPO's digital signal processing (DSP) code on the given input and output buffers.\t\n            </summary>\t\n            <param name=\"inputProcessParameters\">[in]          Input array of  <see cref=\"T:SharpDX.XAPO.BufferParameters\"/> structures.         </param>\n            <param name=\"outputProcessParameters\">[in, out]          Output array of <see cref=\"T:SharpDX.XAPO.BufferParameters\"/> structures.  On input, the value of <see cref=\"T:SharpDX.XAPO.BufferParameters\"/>.ValidFrameCount indicates the number of frames  that the XAPO should write to the output buffer.  On output, the value of <see cref=\"T:SharpDX.XAPO.BufferParameters\"/>.ValidFrameCount indicates the actual number of frames written.         </param>\n            <param name=\"isEnabled\"> TRUE to process normally; FALSE to process thru.  See Remarks for additional information.         </param>\n            <unmanaged>void IXAPO::Process([None] UINT32 InputProcessParameterCount,[In, Buffer, Optional] const XAPO_PROCESS_BUFFER_PARAMETERS* pInputProcessParameters,[None] UINT32 OutputProcessParameterCount,[InOut, Buffer, Optional] XAPO_PROCESS_BUFFER_PARAMETERS* pOutputProcessParameters,[None] BOOL IsEnabled)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.XAPO.AudioProcessor.CalcInputFrames(System.Int32)\">\n            <summary>\t\n            Returns the number of input frames required to generate the given number of output frames.\t\n            </summary>\t\n            <param name=\"outputFrameCount\">The number of output frames desired.</param>\n            <returns>No documentation.</returns>\n            <unmanaged>UINT32 IXAPO::CalcInputFrames([None] UINT32 OutputFrameCount)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.XAPO.AudioProcessor.CalcOutputFrames(System.Int32)\">\n            <summary>\t\n            Returns the number of output frames that will be generated from a given number of input frames.\t\n            </summary>\t\n            <param name=\"inputFrameCount\">The number of input frames.</param>\n            <returns>No documentation.</returns>\n            <unmanaged>UINT32 IXAPO::CalcOutputFrames([None] UINT32 InputFrameCount)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.XAPO.AudioProcessor.RegistrationProperties\">\n            <summary>\t\n            Returns the registration properties of an XAPO.\t\n            </summary>\t\n            <returns> a <see cref=\"T:SharpDX.XAPO.RegistrationProperties\"/> structure containing theregistration properties the XAPO was created with; use XAPOFree to free thestructure.</returns>\n            <unmanaged>HRESULT IXAPO::GetRegistrationProperties([Out] XAPO_REGISTRATION_PROPERTIES** ppRegistrationProperties)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.XAPO.AudioProcessorNative\">\n            <summary>\t\n            Called by XAudio2 to lock the input and output configurations of an XAPO allowing it to\t\n            do any final initialization beforeProcessis called on the realtime thread.\t\n            </summary>\t\n            <remarks>\t\n            <p>Once locked, the input and output configuration and any other locked parameters remain constant until \t\n            UnLockForProcess is called.  After an XAPO is locked, further calls to <strong>LockForProcess</strong> have no effect until the UnLockForProcess function is called.</p> <p>An XAPO indicates what specific formats it supports through its implementation of the \t\n            IsInputFormatSupported and \t\n            IsOutputFormatSupported methods. An XAPO should assert the input and \t\n            output configurations are supported and that any required effect-specific initialization is complete.  The \t\n            IsInputFormatSupported, \t\n            IsOutputFormatSupported, and \t\n            Initialize methods should be used as necessary before calling this method.</p> <p>Because Process is a nonblocking method, all internal memory buffers required for \t\n            Process should be allocated in <strong>LockForProcess</strong>.</p> <p>Process is never called before <strong>LockForProcess</strong> returns successfully.</p> <p><strong>LockForProcess</strong> is called directly by XAudio2 and should not be called by the client code.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXAPO']/*\"/>\t\n            <msdn-id>ee418455</msdn-id>\t\n            <unmanaged>IXAPO</unmanaged>\t\n            <unmanaged-short>IXAPO</unmanaged-short>\t\n            <summary>\n            Native Accessor to an existing AudioProcessor instance\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.XAPO.AudioProcessorNative.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.XAPO.AudioProcessorNative\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.XAPO.AudioProcessorNative.op_Explicit(System.IntPtr)~SharpDX.XAPO.AudioProcessorNative\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.XAPO.AudioProcessorNative\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.XAPO.AudioProcessorNative.GetRegistrationProperties_(SharpDX.XAPO.RegistrationProperties@)\">\n            <summary>\t\n            Returns the registration properties of an XAPO.\t\n            </summary>\t\n            <param name=\"registrationPropertiesOut\"><dd> Receives a reference to a <see cref=\"T:SharpDX.XAPO.RegistrationProperties\"/> structure containing theregistration properties the XAPO was created with; use <strong>XAPOFree</strong> to free thestructure.</dd></param>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful; returns an error code otherwise.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXAPO::GetRegistrationProperties']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.ixapo.ixapo.getregistrationproperties</msdn-id>\t\n            <unmanaged>HRESULT IXAPO::GetRegistrationProperties([Out] XAPO_REGISTRATION_PROPERTIES** ppRegistrationProperties)</unmanaged>\t\n            <unmanaged-short>IXAPO::GetRegistrationProperties</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XAPO.AudioProcessorNative.IsInputFormatSupported_(SharpDX.Multimedia.WaveFormat@,SharpDX.Multimedia.WaveFormat@,SharpDX.Multimedia.WaveFormat@)\">\n            <summary>\t\n            Queries if a specific input format is supported for a given output format.\t\n            </summary>\t\n            <param name=\"outputFormatRef\"><dd>Output format.</dd></param>\t\n            <param name=\"requestedInputFormatRef\"><dd>Input format to check for being supported.</dd></param>\t\n            <param name=\"supportedInputFormatOut\"><dd> If not <c>null</c>, and the input format is not supported for the given output format, <em>ppSupportedInputFormat</em> returns a  reference to the closest input format that is supported. Use XAPOFree to free the returned structure. </dd></param>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if the format pair is supported.  Returns XAPO_E_FORMAT_UNSUPPORTED if the format pair is not supported.</p></returns>\t\n            <remarks>\t\n            <p>The <see cref=\"M:SharpDX.XAPO.AudioProcessor.IsOutputFormatSupported(SharpDX.Multimedia.WaveFormat,SharpDX.Multimedia.WaveFormat,SharpDX.Multimedia.WaveFormat@)\"/> and <strong>IsInputFormatSupported</strong> methods allow an XAPO to indicate which audio formats it is capable of processing.  If a requested format is not supported, the XAPO should return the closest format that it does support.  The closest format should be determined based on frame rate, bit depth, and channel count, in that order of importance.  The behavior of <strong>IsInputFormatSupported</strong> is allowed to change, based on the internal state of the XAPO, but its behavior should remain constant between calls to the <see cref=\"M:SharpDX.XAPO.AudioProcessor.LockForProcess(SharpDX.XAPO.LockParameters[],SharpDX.XAPO.LockParameters[])\"/> and <see cref=\"M:SharpDX.XAPO.AudioProcessor.UnlockForProcess\"/> methods.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXAPO::IsInputFormatSupported']/*\"/>\t\n            <msdn-id>ee418453</msdn-id>\t\n            <unmanaged>HRESULT IXAPO::IsInputFormatSupported([In] const WAVEFORMATEX* pOutputFormat,[In] const WAVEFORMATEX* pRequestedInputFormat,[Out, Optional] WAVEFORMATEX** ppSupportedInputFormat)</unmanaged>\t\n            <unmanaged-short>IXAPO::IsInputFormatSupported</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XAPO.AudioProcessorNative.IsOutputFormatSupported_(SharpDX.Multimedia.WaveFormat@,SharpDX.Multimedia.WaveFormat@,SharpDX.Multimedia.WaveFormat@)\">\n            <summary>\t\n            Queries if a specific output format is supported for a given input format.\t\n            </summary>\t\n            <param name=\"inputFormatRef\"><dd>[in]  Input format. </dd></param>\t\n            <param name=\"requestedOutputFormatRef\"><dd>[in]  Output format to check for being supported. </dd></param>\t\n            <param name=\"supportedOutputFormatOut\"><dd>[out]  If not <c>null</c> and the output format is not supported for the given input format, <em>ppSupportedOutputFormat</em> returns a reference to the closest output format that is supported. Use XAPOFree to free the returned structure. </dd></param>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if the format pair is supported. Returns XAPO_E_FORMAT_UNSUPPORTED if the format pair is not supported.</p></returns>\t\n            <remarks>\t\n            <p>The <see cref=\"M:SharpDX.XAPO.AudioProcessor.IsInputFormatSupported(SharpDX.Multimedia.WaveFormat,SharpDX.Multimedia.WaveFormat,SharpDX.Multimedia.WaveFormat@)\"/> and <strong>IsOutputFormatSupported</strong> methods allow an XAPO to indicate which audio formats it is capable of processing. If a requested format is not supported, the XAPO should return the closest format that it does support. The closest format should be determined based on frame rate, bit depth, and channel count, in that order of importance. The behavior of <strong>IsOutputFormatSupported</strong> is allowed to change, based on the internal state of the XAPO, but its behavior should remain constant between calls to the <see cref=\"M:SharpDX.XAPO.AudioProcessor.LockForProcess(SharpDX.XAPO.LockParameters[],SharpDX.XAPO.LockParameters[])\"/> and <see cref=\"M:SharpDX.XAPO.AudioProcessor.UnlockForProcess\"/> methods.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXAPO::IsOutputFormatSupported']/*\"/>\t\n            <msdn-id>ee418454</msdn-id>\t\n            <unmanaged>HRESULT IXAPO::IsOutputFormatSupported([In] const WAVEFORMATEX* pInputFormat,[In] const WAVEFORMATEX* pRequestedOutputFormat,[Out, Optional] WAVEFORMATEX** ppSupportedOutputFormat)</unmanaged>\t\n            <unmanaged-short>IXAPO::IsOutputFormatSupported</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XAPO.AudioProcessorNative.Initialize_(System.IntPtr,System.Int32)\">\n            <summary>\t\n            Performs any effect-specific initialization.\t\n            </summary>\t\n            <param name=\"dataRef\"><dd> Effect-specific initialization parameters, may be <c>null</c> if <em>DataByteSize</em> is 0. </dd></param>\t\n            <param name=\"dataByteSize\"><dd> Size of <em>pData</em> in bytes, may be 0 if <em>pData</em> is <c>null</c>. </dd></param>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful, an error code otherwise.</p></returns>\t\n            <remarks>\t\n            <p>The contents of <em>pData</em> are defined by a given XAPO. Immutable parameters (constant for the lifetime of the XAPO) should be set in this method. Once initialized, an XAPO cannot be initialized again. An XAPO should be initialized before passing it to XAudio2 as part of an effect chain.</p> <table><tr><th>Note </th></tr><tr><td>XAudio2 does not call this method, it should be called by the client before passing the XAPO to XAudio2.</td></tr></table>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXAPO::Initialize']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.ixapo.ixapo.initialize</msdn-id>\t\n            <unmanaged>HRESULT IXAPO::Initialize([In, Buffer, Optional] const void* pData,[In] unsigned int DataByteSize)</unmanaged>\t\n            <unmanaged-short>IXAPO::Initialize</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XAPO.AudioProcessorNative.Reset_\">\n            <summary>\t\n            Resets variables dependent on frame history.\t\n            </summary>\t\n            <remarks>\t\n            <p>Constant and locked parameters such as the input and output formats remain unchanged.  Variables set by <see cref=\"M:SharpDX.XAPO.ParameterProvider.SetParameters(SharpDX.DataStream)\"/> remain unchanged.</p> <p>For example, an effect with delay should zero out its delay line during this method, but should not reallocate anything as the XAPO remains locked with a constant input and output configuration.</p> <p>XAudio2 only calls this method if the XAPO is locked.</p> <p>This method is called from the realtime thread and should not block.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXAPO::Reset']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.ixapo.ixapo.reset</msdn-id>\t\n            <unmanaged>void IXAPO::Reset()</unmanaged>\t\n            <unmanaged-short>IXAPO::Reset</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XAPO.AudioProcessorNative.LockForProcess_(System.Int32,SharpDX.XAPO.LockParameters[],System.Int32,SharpDX.XAPO.LockParameters[])\">\n            <summary>\t\n            Called by XAudio2 to lock the input and output configurations of an XAPO allowing it to\t\n            do any final initialization beforeProcessis called on the realtime thread.\t\n            </summary>\t\n            <param name=\"inputLockedParameterCount\">No documentation.</param>\t\n            <param name=\"inputLockedParametersRef\">No documentation.</param>\t\n            <param name=\"outputLockedParameterCount\">No documentation.</param>\t\n            <param name=\"outputLockedParametersRef\">No documentation.</param>\t\n            <returns><p>Returns <see cref=\"F:SharpDX.Result.Ok\"/> if successful, an error code otherwise.</p></returns>\t\n            <remarks>\t\n            <p>Once locked, the input and output configuration and any other locked parameters remain constant until \t\n            UnLockForProcess is called.  After an XAPO is locked, further calls to <strong>LockForProcess</strong> have no effect until the UnLockForProcess function is called.</p> <p>An XAPO indicates what specific formats it supports through its implementation of the \t\n            IsInputFormatSupported and \t\n            IsOutputFormatSupported methods. An XAPO should assert the input and \t\n            output configurations are supported and that any required effect-specific initialization is complete.  The \t\n            IsInputFormatSupported, \t\n            IsOutputFormatSupported, and \t\n            Initialize methods should be used as necessary before calling this method.</p> <p>Because Process is a nonblocking method, all internal memory buffers required for \t\n            Process should be allocated in <strong>LockForProcess</strong>.</p> <p>Process is never called before <strong>LockForProcess</strong> returns successfully.</p> <p><strong>LockForProcess</strong> is called directly by XAudio2 and should not be called by the client code.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXAPO::LockForProcess']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.ixapo.ixapo.lockforprocess</msdn-id>\t\n            <unmanaged>HRESULT IXAPO::LockForProcess([In] unsigned int InputLockedParameterCount,[In, Buffer] const XAPO_LOCKFORPROCESS_BUFFER_PARAMETERS* pInputLockedParameters,[In] unsigned int OutputLockedParameterCount,[In, Buffer] const XAPO_LOCKFORPROCESS_BUFFER_PARAMETERS* pOutputLockedParameters)</unmanaged>\t\n            <unmanaged-short>IXAPO::LockForProcess</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XAPO.AudioProcessorNative.UnlockForProcess_\">\n            <summary>\t\n            Deallocates variables that were allocated with theLockForProcessmethod.\t\n            </summary>\t\n            <remarks>\t\n            <p>Unlocking an XAPO instance allows it to be reused with\t\n            different input and output formats.\t\n            </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXAPO::UnlockForProcess']/*\"/>\t\n            <msdn-id>ee418460</msdn-id>\t\n            <unmanaged>void IXAPO::UnlockForProcess()</unmanaged>\t\n            <unmanaged-short>IXAPO::UnlockForProcess</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XAPO.AudioProcessorNative.Process_(System.Int32,SharpDX.XAPO.BufferParameters[],System.Int32,SharpDX.XAPO.BufferParameters[],SharpDX.Bool)\">\n            <summary>\t\n            Runs the XAPO's digital signal processing (DSP) code on the given input and output buffers.\t\n            </summary>\t\n            <param name=\"inputProcessParameterCount\"><dd>[in]          Number of elements in <em>pInputProcessParameters</em>. <table><tr><th>Note </th></tr><tr><td>XAudio2 currently supports only one input stream and one output stream.</td></tr></table> </dd></param>\t\n            <param name=\"inputProcessParametersRef\"><dd>[in]          Input array of  <see cref=\"T:SharpDX.XAPO.BufferParameters\"/> structures.         </dd></param>\t\n            <param name=\"outputProcessParameterCount\"><dd>[in]          Number of elements in <em>pOutputProcessParameters</em>. <table><tr><th>Note </th></tr><tr><td>XAudio2 currently supports only one input stream and one output stream.</td></tr></table> </dd></param>\t\n            <param name=\"outputProcessParametersRef\"><dd>[in, out]          Output array of <see cref=\"T:SharpDX.XAPO.BufferParameters\"/> structures.  On input, the value of <see cref=\"T:SharpDX.XAPO.BufferParameters\"/>.<strong>ValidFrameCount</strong> indicates the number of frames  that the XAPO should write to the output buffer.  On output, the value of <see cref=\"T:SharpDX.XAPO.BufferParameters\"/>.<strong>ValidFrameCount</strong> indicates the actual number of frames written.         </dd></param>\t\n            <param name=\"isEnabled\"><dd> TRUE to process normally; <see cref=\"F:SharpDX.Result.False\"/> to process thru.  See Remarks for additional information.         </dd></param>\t\n            <remarks>\t\n            <p>Implementations of this function should not block, as the function is called from the realtime audio processing thread.</p> <p> All code that could cause a delay, such as format validation and memory allocation, should be put in the <see cref=\"M:SharpDX.XAPO.AudioProcessor.LockForProcess(SharpDX.XAPO.LockParameters[],SharpDX.XAPO.LockParameters[])\"/> method, which is not called from the realtime audio processing thread. </p> <p> For in-place processing, the <em>pInputProcessParameters</em> parameter will not necessarily be the same as <em>pOutputProcessParameters</em>. Rather, their <em>pBuffer</em> members will point to the same memory. </p> <p> Multiple input and output buffers may be used with in-place XAPOs, though the input buffer count must equal the output buffer count. For in-place processing when multiple input and output buffers are used, the XAPO may assume the number of input buffers equals the number of output buffers. </p> <p> In addition to writing to the output buffer, as appropriate, an XAPO is responsible for setting the output stream's buffer flags and valid frame count. </p> <p> When <em>IsEnabled</em> is <see cref=\"F:SharpDX.Result.False\"/>, the XAPO should not apply its normal processing to the given input/output buffers during. It should instead pass data from input to output with as little modification possible.  Effects that perform format conversion should continue to do so.  Effects must ensure transitions between normal and thru processing do not introduce discontinuities into the signal. </p> <p> When writing a <strong>Process</strong> method, it is important to note XAudio2 audio data is interleaved, which means data from each channel is adjacent for a particular sample number. For example, if there was a 4-channel wave playing into an XAudio2 source voice, the audio data would be a sample of channel 0, a sample of channel 1, a sample of channel 2, a sample of channel 3, and then the next sample of channels 0, 1, 2, 3, and so on. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXAPO::Process']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.ixapo.ixapo.process</msdn-id>\t\n            <unmanaged>void IXAPO::Process([In] unsigned int InputProcessParameterCount,[In, Buffer, Optional] const XAPO_PROCESS_BUFFER_PARAMETERS* pInputProcessParameters,[In] unsigned int OutputProcessParameterCount,[In, Buffer] XAPO_PROCESS_BUFFER_PARAMETERS* pOutputProcessParameters,[In] BOOL IsEnabled)</unmanaged>\t\n            <unmanaged-short>IXAPO::Process</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XAPO.AudioProcessorNative.CalcInputFrames_(System.Int32)\">\n            <summary>\t\n            Returns the number of input frames required to generate the given number of output frames.\t\n            </summary>\t\n            <param name=\"outputFrameCount\"><dd>The number of output frames desired.</dd></param>\t\n            <returns><p>Returns the number of input frames required.</p></returns>\t\n            <remarks>\t\n            <p>XAudio2 calls this method to determine what size input buffer an XAPO requires to generate\t\n            the given number of output frames. This method only needs to be called once while an XAPO is locked.\t\n            <strong>CalcInputFrames</strong> is only called by XAudio2 if the XAPO is locked.</p> <p>This function should not block, because it may be called from the realtime audio processing thread.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXAPO::CalcInputFrames']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.ixapo.ixapo.calcinputframes</msdn-id>\t\n            <unmanaged>unsigned int IXAPO::CalcInputFrames([In] unsigned int OutputFrameCount)</unmanaged>\t\n            <unmanaged-short>IXAPO::CalcInputFrames</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XAPO.AudioProcessorNative.CalcOutputFrames_(System.Int32)\">\n            <summary>\t\n            Returns the number of output frames that will be generated from a given number of input frames.\t\n            </summary>\t\n            <param name=\"inputFrameCount\"><dd>The number of input frames.</dd></param>\t\n            <returns><p>Returns the number of output frames that will be produced.</p></returns>\t\n            <remarks>\t\n            <p>XAudio2 calls this method to determine how large of an output buffer an XAPO will require for a \t\n            certain number of input frames.  <strong>CalcOutputFrames</strong> is only called by XAudio2 if the XAPO is locked.</p> <p>This function should not block, because it may be called from the realtime audio processing thread.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXAPO::CalcOutputFrames']/*\"/>\t\n            <msdn-id>ee418450</msdn-id>\t\n            <unmanaged>unsigned int IXAPO::CalcOutputFrames([In] unsigned int InputFrameCount)</unmanaged>\t\n            <unmanaged-short>IXAPO::CalcOutputFrames</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XAPO.AudioProcessorNative.IsInputFormatSupported(SharpDX.Multimedia.WaveFormat,SharpDX.Multimedia.WaveFormat,SharpDX.Multimedia.WaveFormat@)\">\n            <summary>\t\n            Queries if a specific input format is supported for a given output format.\t\n            </summary>\t\n            <param name=\"outputFormat\">Output format.</param>\n            <param name=\"requestedInputFormat\">Input format to check for being supported.</param>\n            <param name=\"supportedInputFormat\"> If not NULL, and the input format is not supported for the given output format, ppSupportedInputFormat returns a  pointer to the closest input format that is supported. Use {{XAPOFree}} to free the returned structure. </param>\n            <returns>No documentation.</returns>\n            <unmanaged>HRESULT IXAPO::IsInputFormatSupported([None] const WAVEFORMATEX* pOutputFormat,[None] const WAVEFORMATEX* pRequestedInputFormat,[Out, Optional] WAVEFORMATEX** ppSupportedInputFormat)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.XAPO.AudioProcessorNative.IsOutputFormatSupported(SharpDX.Multimedia.WaveFormat,SharpDX.Multimedia.WaveFormat,SharpDX.Multimedia.WaveFormat@)\">\n            <summary>\t\n            Queries if a specific output format is supported for a given input format.\t\n            </summary>\t\n            <param name=\"inputFormat\">[in]  Input format. </param>\n            <param name=\"requestedOutputFormat\">[in]  Output format to check for being supported. </param>\n            <param name=\"supportedOutputFormat\">[out]  If not NULL and the output format is not supported for the given input format, ppSupportedOutputFormat returns a pointer to the closest output format that is supported. Use {{XAPOFree}} to free the returned structure. </param>\n            <returns>No documentation.</returns>\n            <unmanaged>HRESULT IXAPO::IsOutputFormatSupported([None] const WAVEFORMATEX* pInputFormat,[None] const WAVEFORMATEX* pRequestedOutputFormat,[Out, Optional] WAVEFORMATEX** ppSupportedOutputFormat)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.XAPO.AudioProcessorNative.Initialize(SharpDX.DataStream)\">\n            <summary>\t\n            Performs any effect-specific initialization.\t\n            </summary>\t\n            <param name=\"stream\"> Effect-specific initialization parameters, may be NULL if DataByteSize is 0. </param>\n            <returns>No documentation.</returns>\n            <unmanaged>HRESULT IXAPO::Initialize([In, Buffer, Optional] const void* pData,[None] UINT32 DataByteSize)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.XAPO.AudioProcessorNative.Reset\">\n            <summary>\t\n            Resets variables dependent on frame history. \t\n            </summary>\t\n            <unmanaged>void IXAPO::Reset()</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.XAPO.AudioProcessorNative.LockForProcess(SharpDX.XAPO.LockParameters[],SharpDX.XAPO.LockParameters[])\">\n            <summary>\t\n            Called by XAudio2 to lock the input and output configurations of an XAPO allowing it to\t\n            do any final initialization before {{Process}} is called on the realtime thread.\t\n            </summary>\t\n            <param name=\"inputLockedParameters\"> Array of input <see cref=\"T:SharpDX.XAPO.LockParameters\"/> structures.pInputLockedParameters may be NULL if InputLockedParameterCount is 0, otherwise itmust have InputLockedParameterCount elements.</param>\n            <param name=\"outputLockedParameters\"> Array of output <see cref=\"T:SharpDX.XAPO.LockParameters\"/> structures.pOutputLockedParameters may be NULL if OutputLockedParameterCount is 0, otherwise itmust have OutputLockedParameterCount elements.</param>\n            <returns>No documentation.</returns>\n            <unmanaged>HRESULT IXAPO::LockForProcess([None] UINT32 InputLockedParameterCount,[In, Buffer, Optional] const XAPO_LOCKFORPROCESS_BUFFER_PARAMETERS* pInputLockedParameters,[None] UINT32 OutputLockedParameterCount,[In, Buffer, Optional] const XAPO_LOCKFORPROCESS_BUFFER_PARAMETERS* pOutputLockedParameters)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.XAPO.AudioProcessorNative.UnlockForProcess\">\n            <summary>\t\n            Deallocates variables that were allocated with the {{LockForProcess}} method.\t\n            </summary>\t\n            <unmanaged>void IXAPO::UnlockForProcess()</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.XAPO.AudioProcessorNative.Process(SharpDX.XAPO.BufferParameters[],SharpDX.XAPO.BufferParameters[],System.Boolean)\">\n            <summary>\t\n            Runs the XAPO's digital signal processing (DSP) code on the given input and output buffers.\t\n            </summary>\t\n            <param name=\"inputProcessParameters\">[in]          Input array of  <see cref=\"T:SharpDX.XAPO.BufferParameters\"/> structures.         </param>\n            <param name=\"outputProcessParameters\">[in, out]          Output array of <see cref=\"T:SharpDX.XAPO.BufferParameters\"/> structures.  On input, the value of <see cref=\"T:SharpDX.XAPO.BufferParameters\"/>.ValidFrameCount indicates the number of frames  that the XAPO should write to the output buffer.  On output, the value of <see cref=\"T:SharpDX.XAPO.BufferParameters\"/>.ValidFrameCount indicates the actual number of frames written.         </param>\n            <param name=\"isEnabled\"> TRUE to process normally; FALSE to process thru.  See Remarks for additional information.         </param>\n            <unmanaged>void IXAPO::Process([None] UINT32 InputProcessParameterCount,[In, Buffer, Optional] const XAPO_PROCESS_BUFFER_PARAMETERS* pInputProcessParameters,[None] UINT32 OutputProcessParameterCount,[InOut, Buffer, Optional] XAPO_PROCESS_BUFFER_PARAMETERS* pOutputProcessParameters,[None] BOOL IsEnabled)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.XAPO.AudioProcessorNative.CalcInputFrames(System.Int32)\">\n            <summary>\t\n            Returns the number of input frames required to generate the given number of output frames.\t\n            </summary>\t\n            <param name=\"outputFrameCount\">The number of output frames desired.</param>\n            <returns>No documentation.</returns>\n            <unmanaged>UINT32 IXAPO::CalcInputFrames([None] UINT32 OutputFrameCount)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.XAPO.AudioProcessorNative.CalcOutputFrames(System.Int32)\">\n            <summary>\t\n            Returns the number of output frames that will be generated from a given number of input frames.\t\n            </summary>\t\n            <param name=\"inputFrameCount\">The number of input frames.</param>\n            <returns>No documentation.</returns>\n            <unmanaged>UINT32 IXAPO::CalcOutputFrames([None] UINT32 InputFrameCount)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.XAPO.AudioProcessorNative.RegistrationProperties\">\n            <summary>\t\n            Returns the registration properties of an XAPO.\t\n            </summary>\t\n            <returns> a <see cref=\"T:SharpDX.XAPO.RegistrationProperties\"/> structure containing theregistration properties the XAPO was created with; use XAPOFree to free thestructure.</returns>\n            <unmanaged>HRESULT IXAPO::GetRegistrationProperties([Out] XAPO_REGISTRATION_PROPERTIES** ppRegistrationProperties)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.XAPO.ParameterProvider\">\n            <summary>\t\n            Retrieves the requested interface reference if the XAPO supports it.\t\n            </summary>\t\n            <remarks>\t\n            <p> XAPO instances are passed to XAudio2 as <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interfaces and XAudio2 uses <strong>QueryInterface</strong> to acquire an  <see cref=\"T:SharpDX.XAPO.AudioProcessor\"/> interface and to detect whether the XAPO implements the <see cref=\"T:SharpDX.XAPO.ParameterProvider\"/> interface.   Implementations of <see cref=\"T:SharpDX.XAPO.AudioProcessor\"/> must accept requests for  <strong>__uuidof(<see cref=\"T:SharpDX.XAPO.AudioProcessor\"/>)</strong> and if <see cref=\"T:SharpDX.XAPO.ParameterProvider\"/> is implemented must also accept requests for <strong>__uuidof(<see cref=\"T:SharpDX.XAPO.ParameterProvider\"/>)</strong>. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXAPOParameters']/*\"/>\t\n            <msdn-id>ee418445</msdn-id>\t\n            <unmanaged>IXAPOParameters</unmanaged>\t\n            <unmanaged-short>IXAPOParameters</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XAPO.ParameterProvider.SetParameters(SharpDX.DataStream)\">\n            <summary>\t\n            Sets effect-specific parameters.\t\n            </summary>\t\n            <param name=\"parameters\"> Effect-specific parameter block. </param>\n            <unmanaged>void IXAPOParameters::SetParameters([In, Buffer] const void* pParameters,[None] UINT32 ParameterByteSize)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.XAPO.ParameterProvider.GetParameters(SharpDX.DataStream)\">\n            <summary>\t\n            Gets the current values for any effect-specific parameters.\t\n            </summary>\t\n            <param name=\"parameters\">[in, out]  Receives an effect-specific parameter block. </param>\n            <unmanaged>void IXAPOParameters::GetParameters([Out, Buffer] void* pParameters,[None] UINT32 ParameterByteSize)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.XAPO.ParameterProviderNative\">\n            <summary>\t\n            Retrieves the requested interface reference if the XAPO supports it.\t\n            </summary>\t\n            <remarks>\t\n            <p> XAPO instances are passed to XAudio2 as <strong><see cref=\"T:SharpDX.ComObject\"/></strong> interfaces and XAudio2 uses <strong>QueryInterface</strong> to acquire an  <see cref=\"T:SharpDX.XAPO.AudioProcessor\"/> interface and to detect whether the XAPO implements the <see cref=\"T:SharpDX.XAPO.ParameterProvider\"/> interface.   Implementations of <see cref=\"T:SharpDX.XAPO.AudioProcessor\"/> must accept requests for  <strong>__uuidof(<see cref=\"T:SharpDX.XAPO.AudioProcessor\"/>)</strong> and if <see cref=\"T:SharpDX.XAPO.ParameterProvider\"/> is implemented must also accept requests for <strong>__uuidof(<see cref=\"T:SharpDX.XAPO.ParameterProvider\"/>)</strong>. </p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXAPOParameters']/*\"/>\t\n            <msdn-id>ee418445</msdn-id>\t\n            <unmanaged>IXAPOParameters</unmanaged>\t\n            <unmanaged-short>IXAPOParameters</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XAPO.ParameterProviderNative.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.XAPO.ParameterProviderNative\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.XAPO.ParameterProviderNative.op_Explicit(System.IntPtr)~SharpDX.XAPO.ParameterProviderNative\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.XAPO.ParameterProviderNative\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.XAPO.ParameterProviderNative.SetParameters_(System.IntPtr,System.Int32)\">\n            <summary>\t\n            Sets effect-specific parameters.\t\n            </summary>\t\n            <param name=\"parametersRef\"><dd> Effect-specific parameter block. </dd></param>\t\n            <param name=\"parameterByteSize\"><dd> Size of <em>pParameters</em>, in bytes. </dd></param>\t\n            <remarks>\t\n            <p>The data in <em>pParameters</em> is completely effect-specific and determined by the implementation of the <see cref=\"M:SharpDX.XAPO.ParameterProvider.SetParameters(SharpDX.DataStream)\"/> function. The data passed to <strong>SetParameters</strong> can be used to set the state of the XAPO and control the behavior of the <see cref=\"M:SharpDX.XAPO.AudioProcessor.Process(SharpDX.XAPO.BufferParameters[],SharpDX.XAPO.BufferParameters[],System.Boolean)\"/> function.</p> <p><strong>SetParameters</strong> can only be called on the real-time audio processing thread; no synchronization between <strong>SetParameters</strong> and the <see cref=\"M:SharpDX.XAPO.AudioProcessor.Process(SharpDX.XAPO.BufferParameters[],SharpDX.XAPO.BufferParameters[],System.Boolean)\"/> method is necessary. However, the <see cref=\"M:SharpDX.XAudio2.Voice.SetEffectParameters(System.Int32,System.IntPtr,System.Int32,System.Int32)\"/> method may be called from any thread as it adds in the required synchronization to deliver a copy (asynchronously) of the parameters to <strong>SetParameters</strong> on the real-time thread; no synchronization between <see cref=\"M:SharpDX.XAudio2.Voice.SetEffectParameters(System.Int32,System.IntPtr,System.Int32,System.Int32)\"/> and the <see cref=\"M:SharpDX.XAPO.AudioProcessor.Process(SharpDX.XAPO.BufferParameters[],SharpDX.XAPO.BufferParameters[],System.Boolean)\"/> method is necessary.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXAPOParameters::SetParameters']/*\"/>\t\n            <msdn-id>ee418447</msdn-id>\t\n            <unmanaged>void IXAPOParameters::SetParameters([In, Buffer] const void* pParameters,[In] unsigned int ParameterByteSize)</unmanaged>\t\n            <unmanaged-short>IXAPOParameters::SetParameters</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XAPO.ParameterProviderNative.GetParameters_(System.IntPtr,System.Int32)\">\n            <summary>\t\n            Gets the current values for any effect-specific parameters.\t\n            </summary>\t\n            <param name=\"parametersRef\"><dd>[in, out]  Receives an effect-specific parameter block. </dd></param>\t\n            <param name=\"parameterByteSize\"><dd>[in]  Size of <em>pParameters</em>, in bytes. </dd></param>\t\n            <remarks>\t\n            <p>The data in <em>pParameters</em> is completely effect-specific and determined by the implementation of the <see cref=\"M:SharpDX.XAPO.ParameterProvider.GetParameters(SharpDX.DataStream)\"/> function. The data returned in <em>pParameters</em> can be used to provide information about the current state of the XAPO.</p> <p>Unlike SetParameters, XAudio2 does not call this method on the realtime audio processing thread. Thus, the XAPO must protect variables shared with <see cref=\"M:SharpDX.XAPO.ParameterProvider.SetParameters(SharpDX.DataStream)\"/> or <see cref=\"M:SharpDX.XAPO.AudioProcessor.Process(SharpDX.XAPO.BufferParameters[],SharpDX.XAPO.BufferParameters[],System.Boolean)\"/> using appropriate synchronization. The CXAPOParametersBase class is an implementation of <see cref=\"T:SharpDX.XAPO.ParameterProvider\"/> and its implementation of <strong>GetParameters</strong> efficiently handles this synchronization for the user.</p> <p>XAudio2 calls this method from the <see cref=\"M:SharpDX.XAudio2.Voice.GetEffectParameters(System.Int32,System.IntPtr,System.Int32)\"/> method.</p> <p>This method may block and should never be called from the realtime audio processing thread instead get the current parameters from CXAPOParametersBase::BeginProcess.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IXAPOParameters::GetParameters']/*\"/>\t\n            <msdn-id>ee418443</msdn-id>\t\n            <unmanaged>void IXAPOParameters::GetParameters([Out, Buffer] void* pParameters,[In] unsigned int ParameterByteSize)</unmanaged>\t\n            <unmanaged-short>IXAPOParameters::GetParameters</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XAPO.BufferParameters\">\n            <summary>\t\n            Defines stream buffer parameters that may change from one call to the next. Used with theProcessmethod.\t\n            </summary>\t\n            <remarks>\t\n            <p>Although the format and maximum size values of a particular stream buffer are constant, as defined by the XAPO_LOCKFORPROCESS_PARAMETERS structure, the actual memory address of the stream buffer is permitted to change. For constant-bit-rate (CBR) XAPOs, <strong>ValidFrameCount</strong> is constant and is always equal to the corresponding XAPO_LOCKFORPROCESS_PARAMETERS.<strong>MaxFrameCount</strong> for this buffer.</p> <table><tr><th>Note </th></tr><tr><td>Only constant-bit-rate XAPOs are currently supported.</td></tr></table>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAPO_PROCESS_BUFFER_PARAMETERS']/*\"/>\t\n            <msdn-id>ee419209</msdn-id>\t\n            <unmanaged>XAPO_PROCESS_BUFFER_PARAMETERS</unmanaged>\t\n            <unmanaged-short>XAPO_PROCESS_BUFFER_PARAMETERS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAPO.BufferParameters.Buffer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAPO_PROCESS_BUFFER_PARAMETERS::pBuffer']/*\"/>\t\n            <unmanaged>void* pBuffer</unmanaged>\t\n            <unmanaged-short>void pBuffer</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAPO.BufferParameters.BufferFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAPO_PROCESS_BUFFER_PARAMETERS::BufferFlags']/*\"/>\t\n            <unmanaged>XAPO_BUFFER_FLAGS BufferFlags</unmanaged>\t\n            <unmanaged-short>XAPO_BUFFER_FLAGS BufferFlags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAPO.BufferParameters.ValidFrameCount\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAPO_PROCESS_BUFFER_PARAMETERS::ValidFrameCount']/*\"/>\t\n            <unmanaged>unsigned int ValidFrameCount</unmanaged>\t\n            <unmanaged-short>unsigned int ValidFrameCount</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XAPO.LockParameters\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAPO_LOCKFORPROCESS_BUFFER_PARAMETERS']/*\"/>\t\n            <unmanaged>XAPO_LOCKFORPROCESS_BUFFER_PARAMETERS</unmanaged>\t\n            <unmanaged-short>XAPO_LOCKFORPROCESS_BUFFER_PARAMETERS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAPO.LockParameters.FormatPointer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAPO_LOCKFORPROCESS_BUFFER_PARAMETERS::pFormat']/*\"/>\t\n            <unmanaged>const WAVEFORMATEX* pFormat</unmanaged>\t\n            <unmanaged-short>WAVEFORMATEX pFormat</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAPO.LockParameters.MaxFrameCount\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAPO_LOCKFORPROCESS_BUFFER_PARAMETERS::MaxFrameCount']/*\"/>\t\n            <unmanaged>unsigned int MaxFrameCount</unmanaged>\t\n            <unmanaged-short>unsigned int MaxFrameCount</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.XAPO.LockParameters.Format\">\n            <summary>\n            Gets or sets the waveformat.\n            </summary>\n            <value>The format.</value>\n        </member>\n        <member name=\"T:SharpDX.XAPO.RegistrationProperties\">\n            <summary>\t\n            Describes general characteristics of an XAPO. Used withIXAPO::GetRegistrationPropertiesandCXAPOBase::CXAPOBase.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAPO_REGISTRATION_PROPERTIES']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.xapo.xapo_registration_properties</msdn-id>\t\n            <unmanaged>XAPO_REGISTRATION_PROPERTIES</unmanaged>\t\n            <unmanaged-short>XAPO_REGISTRATION_PROPERTIES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAPO.RegistrationProperties.Clsid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAPO_REGISTRATION_PROPERTIES::clsid']/*\"/>\t\n            <unmanaged>GUID clsid</unmanaged>\t\n            <unmanaged-short>GUID clsid</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAPO.RegistrationProperties.FriendlyName\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAPO_REGISTRATION_PROPERTIES::FriendlyName']/*\"/>\t\n            <unmanaged>wchar_t FriendlyName[256]</unmanaged>\t\n            <unmanaged-short>wchar_t FriendlyName</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAPO.RegistrationProperties.CopyrightInfo\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAPO_REGISTRATION_PROPERTIES::CopyrightInfo']/*\"/>\t\n            <unmanaged>wchar_t CopyrightInfo[256]</unmanaged>\t\n            <unmanaged-short>wchar_t CopyrightInfo</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAPO.RegistrationProperties.MajorVersion\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAPO_REGISTRATION_PROPERTIES::MajorVersion']/*\"/>\t\n            <unmanaged>unsigned int MajorVersion</unmanaged>\t\n            <unmanaged-short>unsigned int MajorVersion</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAPO.RegistrationProperties.MinorVersion\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAPO_REGISTRATION_PROPERTIES::MinorVersion']/*\"/>\t\n            <unmanaged>unsigned int MinorVersion</unmanaged>\t\n            <unmanaged-short>unsigned int MinorVersion</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAPO.RegistrationProperties.Flags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAPO_REGISTRATION_PROPERTIES::Flags']/*\"/>\t\n            <unmanaged>XAPO_PROPERTY_TYPE Flags</unmanaged>\t\n            <unmanaged-short>XAPO_PROPERTY_TYPE Flags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAPO.RegistrationProperties.MinInputBufferCount\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAPO_REGISTRATION_PROPERTIES::MinInputBufferCount']/*\"/>\t\n            <unmanaged>unsigned int MinInputBufferCount</unmanaged>\t\n            <unmanaged-short>unsigned int MinInputBufferCount</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAPO.RegistrationProperties.MaxInputBufferCount\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAPO_REGISTRATION_PROPERTIES::MaxInputBufferCount']/*\"/>\t\n            <unmanaged>unsigned int MaxInputBufferCount</unmanaged>\t\n            <unmanaged-short>unsigned int MaxInputBufferCount</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAPO.RegistrationProperties.MinOutputBufferCount\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAPO_REGISTRATION_PROPERTIES::MinOutputBufferCount']/*\"/>\t\n            <unmanaged>unsigned int MinOutputBufferCount</unmanaged>\t\n            <unmanaged-short>unsigned int MinOutputBufferCount</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XAPO.RegistrationProperties.MaxOutputBufferCount\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XAPO_REGISTRATION_PROPERTIES::MaxOutputBufferCount']/*\"/>\t\n            <unmanaged>unsigned int MaxOutputBufferCount</unmanaged>\t\n            <unmanaged-short>unsigned int MaxOutputBufferCount</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XAudio2.NamespaceDoc\">\n            <summary>\n            The <see cref=\"N:SharpDX.XAudio2\"/> namespace provides a managed XAudio2 API.\n            </summary>\n            <msdn-id>hh405049</msdn-id>\n            <unmanaged>XAudio2</unmanaged>\t\n            <unmanaged-short>XAudio2</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XAudio2.VoiceShadow\">\n            <summary>\n            Internal VoiceCallback callback Impl\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.XAudio2.VoiceShadow.ToIntPtr(SharpDX.XAudio2.VoiceCallback)\">\n            <summary>\n            Return a pointer to the unamanged version of this callback.\n            </summary>\n            <param name=\"callback\">The callback.</param>\n            <returns>A pointer to a shadow c++ callback</returns>\n        </member>\n        <member name=\"T:SharpDX.X3DAudio.NamespaceDoc\">\n            <summary>\n            The <see cref=\"N:SharpDX.X3DAudio\"/> namespace provides a managed X3DAudio API.\n            </summary>\n            <msdn-id>ee415714</msdn-id>\n            <unmanaged>X3DAudio</unmanaged>\t\n            <unmanaged-short>X3DAudio</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XAPO.AudioProcessorBase`1\">\n            <summary>\n            Base AudioProcessor class that implements methods from <see cref=\"T:SharpDX.XAPO.AudioProcessor\"/>. This class is \n            also providing its parameter through a generic.\n            </summary>\n            <typeparam name=\"T\">type of the parameter for this AudioProcessor</typeparam>\n        </member>\n        <member name=\"M:SharpDX.XAPO.AudioProcessorBase`1.IsInputFormatSupported(SharpDX.Multimedia.WaveFormat,SharpDX.Multimedia.WaveFormat,SharpDX.Multimedia.WaveFormat@)\">\n            <summary>\t\n            Queries if a specific input format is supported for a given output format.\t\n            </summary>\t\n            <param name=\"outputFormat\">Output format.</param>\n            <param name=\"requestedInputFormat\">Input format to check for being supported.</param>\n            <param name=\"supportedInputFormat\"> If not NULL, and the input format is not supported for the given output format, ppSupportedInputFormat returns a  pointer to the closest input format that is supported. Use {{XAPOFree}} to free the returned structure. </param>\n            <returns>No documentation.</returns>\n            <unmanaged>HRESULT IXAPO::IsInputFormatSupported([None] const WAVEFORMATEX* pOutputFormat,[None] const WAVEFORMATEX* pRequestedInputFormat,[Out, Optional] WAVEFORMATEX** ppSupportedInputFormat)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.XAPO.AudioProcessorBase`1.IsOutputFormatSupported(SharpDX.Multimedia.WaveFormat,SharpDX.Multimedia.WaveFormat,SharpDX.Multimedia.WaveFormat@)\">\n            <summary>\t\n            Queries if a specific output format is supported for a given input format.\t\n            </summary>\t\n            <param name=\"inputFormat\">[in]  Input format. </param>\n            <param name=\"requestedOutputFormat\">[in]  Output format to check for being supported. </param>\n            <param name=\"supportedOutputFormat\">[out]  If not NULL and the output format is not supported for the given input format, ppSupportedOutputFormat returns a pointer to the closest output format that is supported. Use {{XAPOFree}} to free the returned structure. </param>\n            <returns>No documentation.</returns>\n            <unmanaged>HRESULT IXAPO::IsOutputFormatSupported([None] const WAVEFORMATEX* pInputFormat,[None] const WAVEFORMATEX* pRequestedOutputFormat,[Out, Optional] WAVEFORMATEX** ppSupportedOutputFormat)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.XAPO.AudioProcessorBase`1.Initialize(SharpDX.DataStream)\">\n            <summary>\t\n            Performs any effect-specific initialization.\t\n            </summary>\t\n            <param name=\"stream\"> Effect-specific initialization parameters, may be NULL if DataByteSize is 0. </param>\n            <returns>No documentation.</returns>\n            <unmanaged>HRESULT IXAPO::Initialize([In, Buffer, Optional] const void* pData,[None] UINT32 DataByteSize)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.XAPO.AudioProcessorBase`1.Reset\">\n            <summary>\t\n            Resets variables dependent on frame history. \t\n            </summary>\t\n            <unmanaged>void IXAPO::Reset()</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.XAPO.AudioProcessorBase`1.LockForProcess(SharpDX.XAPO.LockParameters[],SharpDX.XAPO.LockParameters[])\">\n            <summary>\t\n            Called by XAudio2 to lock the input and output configurations of an XAPO allowing it to\t\n            do any final initialization before {{Process}} is called on the realtime thread.\t\n            </summary>\t\n            <param name=\"inputLockedParameters\"> Array of input <see cref=\"T:SharpDX.XAPO.LockParameters\"/> structures.pInputLockedParameters may be NULL if InputLockedParameterCount is 0, otherwise itmust have InputLockedParameterCount elements.</param>\n            <param name=\"outputLockedParameters\"> Array of output <see cref=\"T:SharpDX.XAPO.LockParameters\"/> structures.pOutputLockedParameters may be NULL if OutputLockedParameterCount is 0, otherwise itmust have OutputLockedParameterCount elements.</param>\n            <returns>No documentation.</returns>\n            <unmanaged>HRESULT IXAPO::LockForProcess([None] UINT32 InputLockedParameterCount,[In, Buffer, Optional] const XAPO_LOCKFORPROCESS_BUFFER_PARAMETERS* pInputLockedParameters,[None] UINT32 OutputLockedParameterCount,[In, Buffer, Optional] const XAPO_LOCKFORPROCESS_BUFFER_PARAMETERS* pOutputLockedParameters)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.XAPO.AudioProcessorBase`1.UnlockForProcess\">\n            <summary>\t\n            Deallocates variables that were allocated with the {{LockForProcess}} method.\t\n            </summary>\t\n            <unmanaged>void IXAPO::UnlockForProcess()</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.XAPO.AudioProcessorBase`1.Process(SharpDX.XAPO.BufferParameters[],SharpDX.XAPO.BufferParameters[],System.Boolean)\">\n            <summary>\t\n            Runs the XAPO's digital signal processing (DSP) code on the given input and output buffers.\t\n            </summary>\t\n            <param name=\"inputProcessParameters\">[in]          Input array of  <see cref=\"T:SharpDX.XAPO.BufferParameters\"/> structures.         </param>\n            <param name=\"outputProcessParameters\">[in, out]          Output array of <see cref=\"T:SharpDX.XAPO.BufferParameters\"/> structures.  On input, the value of <see cref=\"T:SharpDX.XAPO.BufferParameters\"/>.ValidFrameCount indicates the number of frames  that the XAPO should write to the output buffer.  On output, the value of <see cref=\"T:SharpDX.XAPO.BufferParameters\"/>.ValidFrameCount indicates the actual number of frames written.         </param>\n            <param name=\"isEnabled\"> TRUE to process normally; FALSE to process thru.  See Remarks for additional information.         </param>\n            <unmanaged>void IXAPO::Process([None] UINT32 InputProcessParameterCount,[In, Buffer, Optional] const XAPO_PROCESS_BUFFER_PARAMETERS* pInputProcessParameters,[None] UINT32 OutputProcessParameterCount,[InOut, Buffer, Optional] XAPO_PROCESS_BUFFER_PARAMETERS* pOutputProcessParameters,[None] BOOL IsEnabled)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.XAPO.AudioProcessorBase`1.CalcInputFrames(System.Int32)\">\n            <summary>\t\n            Returns the number of input frames required to generate the given number of output frames.\t\n            </summary>\t\n            <param name=\"outputFrameCount\">The number of output frames desired.</param>\n            <returns>No documentation.</returns>\n            <unmanaged>UINT32 IXAPO::CalcInputFrames([None] UINT32 OutputFrameCount)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.XAPO.AudioProcessorBase`1.CalcOutputFrames(System.Int32)\">\n            <summary>\t\n            Returns the number of output frames that will be generated from a given number of input frames.\t\n            </summary>\t\n            <param name=\"inputFrameCount\">The number of input frames.</param>\n            <returns>No documentation.</returns>\n            <unmanaged>UINT32 IXAPO::CalcOutputFrames([None] UINT32 InputFrameCount)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.XAPO.AudioProcessorBase`1.SharpDX#XAPO#ParameterProvider#SetParameters(SharpDX.DataStream)\">\n            <summary>\t\n            Sets effect-specific parameters.\t\n            </summary>\t\n            <param name=\"parameters\"> Effect-specific parameter block. </param>\n            <unmanaged>void IXAPOParameters::SetParameters([In, Buffer] const void* pParameters,[None] UINT32 ParameterByteSize)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.XAPO.AudioProcessorBase`1.SharpDX#XAPO#ParameterProvider#GetParameters(SharpDX.DataStream)\">\n            <summary>\t\n            Gets the current values for any effect-specific parameters.\t\n            </summary>\t\n            <param name=\"parameters\">[in, out]  Receives an effect-specific parameter block. </param>\n            <unmanaged>void IXAPOParameters::GetParameters([Out, Buffer] void* pParameters,[None] UINT32 ParameterByteSize)</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.XAPO.AudioProcessorBase`1.Parameters\">\n            <summary>\n             Return parameters\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.XAPO.AudioProcessorBase`1.InputFormatLocked\">\n            <summary>\n            Gets the input format locked.\n            </summary>\n            <value>The input format locked.</value>\n        </member>\n        <member name=\"P:SharpDX.XAPO.AudioProcessorBase`1.OutputFormatLocked\">\n            <summary>\n            Gets the output format locked.\n            </summary>\n            <value>The output format locked.</value>\n        </member>\n        <member name=\"P:SharpDX.XAPO.AudioProcessorBase`1.MaxFrameCountLocked\">\n            <summary>\n            Gets the max frame count locked.\n            </summary>\n            <value>The max frame count locked.</value>\n        </member>\n        <member name=\"P:SharpDX.XAPO.AudioProcessorBase`1.RegistrationProperties\">\n            <summary>\t\n            Returns the registration properties of an XAPO.\t\n            </summary>\t\n            <returns> a <see cref=\"T:SharpDX.XAPO.RegistrationProperties\"/> structure containing theregistration properties the XAPO was created with; use XAPOFree to free thestructure.</returns>\n            <unmanaged>HRESULT IXAPO::GetRegistrationProperties([Out] XAPO_REGISTRATION_PROPERTIES** ppRegistrationProperties)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.XAPO.AudioProcessorParamNative`1\">\n            <summary>\n            Implements this class to call an existing unmanaged AudioProcessor which supports parameter.\n            </summary>\n            <typeparam name=\"T\">the parameter type of this AudioProcessor</typeparam>\n        </member>\n        <member name=\"M:SharpDX.XAPO.AudioProcessorParamNative`1.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.XAPO.AudioProcessorParamNative`1\"/> class.\n            </summary>\n            <param name=\"basePtr\">The base PTR.</param>\n        </member>\n        <member name=\"M:SharpDX.XAPO.AudioProcessorParamNative`1.NativePointerUpdated(System.IntPtr)\">\n            <summary>\n            Update the Native Poinder. Rebuild ParameterProviderNative.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.XAPO.AudioProcessorParamNative`1.Parameter\">\n            <summary>\n            Get or Set the parameters for this AudioProcessor\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.XAPO.AudioProcessorShadow\">\n            <summary>\n            Internal AudioProcessorShadow\n            </summary>\n            IXAPO GUID\n        </member>\n        <member name=\"M:SharpDX.XAPO.AudioProcessorShadow.ToIntPtr(SharpDX.XAPO.AudioProcessor)\">\n            <summary>\n            Return a pointer to the unamanged version of this callback.\n            </summary>\n            <param name=\"callback\">The callback.</param>\n            <returns>A pointer to a shadow c++ callback</returns>\n        </member>\n        <member name=\"T:SharpDX.XAPO.AudioProcessorShadow.AudioProcessorVtbl.GetRegistrationPropertiesDelegate\">\n            <unmanaged>HRESULT IXAPO::GetRegistrationProperties([Out] XAPO_REGISTRATION_PROPERTIES** ppRegistrationProperties)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.XAPO.AudioProcessorShadow.AudioProcessorVtbl.IsInputFormatSupportedDelegate\">\n            <unmanaged>HRESULT IXAPO::IsInputFormatSupported([None] const WAVEFORMATEX* pOutputFormat,[None] const WAVEFORMATEX* pRequestedInputFormat,[Out, Optional] WAVEFORMATEX** ppSupportedInputFormat)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.XAPO.AudioProcessorShadow.AudioProcessorVtbl.IsOutputFormatSupportedDelegate\">\n            <unmanaged>HRESULT IXAPO::IsOutputFormatSupported([None] const WAVEFORMATEX* pInputFormat,[None] const WAVEFORMATEX* pRequestedOutputFormat,[Out, Optional] WAVEFORMATEX** ppSupportedOutputFormat)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.XAPO.AudioProcessorShadow.AudioProcessorVtbl.InitializeDelegate\">\n            <unmanaged>HRESULT IXAPO::Initialize([In, Buffer, Optional] const void* pData,[None] UINT32 DataByteSize)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.XAPO.AudioProcessorShadow.AudioProcessorVtbl.ResetDelegate\">\n            <unmanaged>void IXAPO::Reset()</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.XAPO.AudioProcessorShadow.AudioProcessorVtbl.LockForProcessDelegate\">\n            <unmanaged>HRESULT IXAPO::LockForProcess([None] UINT32 InputLockedParameterCount,[In, Buffer, Optional] const XAPO_LOCKFORPROCESS_BUFFER_PARAMETERS* pInputLockedParameters,[None] UINT32 OutputLockedParameterCount,[In, Buffer, Optional] const XAPO_LOCKFORPROCESS_BUFFER_PARAMETERS* pOutputLockedParameters)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.XAPO.AudioProcessorShadow.AudioProcessorVtbl.UnlockForProcessDelegate\">\n            <summary>\t\n            Deallocates variables that were allocated with the {{LockForProcess}} method.\t\n            </summary>\t\n            <unmanaged>void IXAPO::UnlockForProcess()</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.XAPO.AudioProcessorShadow.AudioProcessorVtbl.ProcessDelegate\">\n            <unmanaged>void IXAPO::Process([None] UINT32 InputProcessParameterCount,[In, Buffer, Optional] const XAPO_PROCESS_BUFFER_PARAMETERS* pInputProcessParameters,[None] UINT32 OutputProcessParameterCount,[InOut, Buffer, Optional] XAPO_PROCESS_BUFFER_PARAMETERS* pOutputProcessParameters,[None] BOOL IsEnabled)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.XAPO.AudioProcessorShadow.AudioProcessorVtbl.CalcInputFramesDelegate\">\n            <summary>\t\n            Returns the number of input frames required to generate the given number of output frames.\t\n            </summary>\n            <param name=\"thisObject\">This pointer</param>\n            <param name=\"outputFrameCount\">The number of output frames desired.</param>\n            <returns>No documentation.</returns>\n            <unmanaged>UINT32 IXAPO::CalcInputFrames([None] UINT32 OutputFrameCount)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.XAPO.AudioProcessorShadow.AudioProcessorVtbl.CalcOutputFramesDelegate\">\n            <summary>\t\n            Returns the number of output frames that will be generated from a given number of input frames.\t\n            </summary>\t\n            <param name=\"thisObject\">This Pointer</param>\n            <param name=\"inputFrameCount\">The number of input frames.</param>\n            <returns>No documentation.</returns>\n            <unmanaged>UINT32 IXAPO::CalcOutputFrames([None] UINT32 InputFrameCount)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.XAPO.Fx.Echo\">\n            <summary>\n            An Echo XAPO AudioProcessor\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.XAPO.Fx.Echo.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.XAPO.Fx.Echo\"/> class.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.XAPO.Fx.Equalizer\">\n            <summary>\n            A Equalizer XAPO AudioProcessor\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.XAPO.Fx.Equalizer.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.XAPO.Fx.Equalizer\"/> class.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.XAPO.Fx.MasteringLimiter\">\n            <summary>\n            A MateringLimiter XAPO AudioProcessor\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.XAPO.Fx.MasteringLimiter.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.XAPO.Fx.MasteringLimiter\"/> class.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.XAPO.Fx.Reverb\">\n            <summary>\n            A Reverb XAPO AudioProcessor\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.XAPO.Fx.Reverb.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.XAPO.Fx.Reverb\"/> class.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.XAPO.ParameterProviderShadow\">\n            <summary>\n            Internal AudioProcessorShadow\n            </summary>\n            <unmanaged>IXAPOParameters</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.XAPO.ParameterProviderShadow.ToIntPtr(SharpDX.XAPO.ParameterProvider)\">\n            <summary>\n            Return a pointer to the unamanged version of this callback.\n            </summary>\n            <param name=\"callback\">The callback.</param>\n            <returns>A pointer to a shadow c++ callback</returns>\n        </member>\n        <member name=\"M:SharpDX.XAPO.ParameterProviderShadow.ParameterProviderVtbl.SetParametersImpl(System.IntPtr,System.IntPtr,System.Int32)\">\n            <summary>\t\n            Sets effect-specific parameters.\t\n            </summary>\t\n            <param name=\"thisObject\">This pointer</param>\n            <param name=\"paramPointer\"> Effect-specific parameter block. </param>\n            <param name=\"paramSize\">size of the parameters</param>\n            <unmanaged>void IXAPOParameters::SetParameters([In, Buffer] const void* pParameters,[None] UINT32 ParameterByteSize)</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.XAPO.ParameterProviderShadow.ParameterProviderVtbl.GetParameters(System.IntPtr,System.IntPtr,System.Int32)\">\n            <summary>\t\n            Gets the current values for any effect-specific parameters.\t\n            </summary>\t\n            <param name=\"thisObject\">This pointer</param>\n            <param name=\"paramPointer\">[in, out]  Receives an effect-specific parameter block. </param>\n            <param name=\"paramSize\">size of the parameters</param>\n            <unmanaged>void IXAPOParameters::GetParameters([Out, Buffer] void* pParameters,[None] UINT32 ParameterByteSize)</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.XAudio2.Fx.Reverb\">\n            <summary>\n            A Reverb XAudio2 AudioProcessor.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.XAudio2.Fx.Reverb.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.XAudio2.Fx.Reverb\"/> class.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.XAudio2.Fx.Reverb.#ctor(System.Boolean)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.XAudio2.Fx.Reverb\"/> class.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.XAudio2.Fx.VolumeMeter\">\n            <summary>\n            A VolumeMeter XAudio2 AudioProcessor.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.XAudio2.Fx.VolumeMeter.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.XAudio2.Fx.VolumeMeter\"/> class.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.XAudio2.Fx.VolumeMeter.#ctor(System.Boolean)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.XAudio2.Fx.VolumeMeter\"/> class.\n            </summary>\n        </member>\n    </members>\n</doc>\n"
  },
  {
    "path": "3rd/SharpDX/SharpDX.XInput.xml",
    "content": "<?xml version=\"1.0\"?>\n<doc>\n    <assembly>\n        <name>SharpDX.XInput</name>\n    </assembly>\n    <members>\n        <member name=\"T:SharpDX.XInput.AssemblyDoc\">\n            <summary>\n            The <see cref=\"A:SharpDX.XInput\"/> assembly provides managed XInput API.\n            </summary>\n            <msdn-id>hh405053</msdn-id>\n            <unmanaged>XInput</unmanaged>\t\n            <unmanaged-short>XInput</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XInput.Controller\">\n            <summary>\n            A XInput controller.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.XInput.Controller.#ctor(SharpDX.XInput.UserIndex)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.XInput.Controller\"/> class.\n            </summary>\n            <param name=\"userIndex\">Index of the user.</param>\n        </member>\n        <member name=\"M:SharpDX.XInput.Controller.GetBatteryInformation(SharpDX.XInput.BatteryDeviceType)\">\n            <summary>\n            Gets the battery information.\n            </summary>\n            <param name=\"batteryDeviceType\">Type of the battery device.</param>\n            <returns></returns>\n            <unmanaged>unsigned int XInputGetBatteryInformation([In] XUSER_INDEX dwUserIndex,[In] BATTERY_DEVTYPE devType,[Out] XINPUT_BATTERY_INFORMATION* pBatteryInformation)</unmanaged>\t\n        </member>\n        <member name=\"M:SharpDX.XInput.Controller.GetCapabilities(SharpDX.XInput.DeviceQueryType)\">\n            <summary>\n            Gets the capabilities.\n            </summary>\n            <param name=\"deviceQueryType\">Type of the device query.</param>\n            <returns></returns>\n            <unmanaged>unsigned int XInputGetCapabilities([In] XUSER_INDEX dwUserIndex,[In] XINPUT_DEVQUERYTYPE dwFlags,[Out] XINPUT_CAPABILITIES* pCapabilities)</unmanaged>\t\n        </member>\n        <member name=\"M:SharpDX.XInput.Controller.GetKeystroke(SharpDX.XInput.DeviceQueryType,SharpDX.XInput.Keystroke@)\">\n            <summary>\n            Gets the keystroke.\n            </summary>\n            <param name=\"deviceQueryType\">The flag.</param>\n            <param name=\"keystroke\">The keystroke.</param>\n            <returns></returns>\n            <unmanaged>unsigned int XInputGetKeystroke([In] XUSER_INDEX dwUserIndex,[In] unsigned int dwReserved,[Out] XINPUT_KEYSTROKE* pKeystroke)</unmanaged>\t\n        </member>\n        <member name=\"M:SharpDX.XInput.Controller.GetState\">\n            <summary>\n            Gets the state.\n            </summary>\n            <returns>The state of this controller.</returns>\n        </member>\n        <member name=\"M:SharpDX.XInput.Controller.GetState(SharpDX.XInput.State@)\">\n            <summary>\n            Gets the state.\n            </summary>\n            <param name=\"state\">The state of this controller.</param>\n            <returns><c>true</c> if the controller is connected, <c>false</c> otherwise.</returns>\n        </member>\n        <member name=\"M:SharpDX.XInput.Controller.SetReporting(System.Boolean)\">\n            <summary>\n            Sets the reporting.\n            </summary>\n            <param name=\"enableReporting\">if set to <c>true</c> [enable reporting].</param>\n        </member>\n        <member name=\"M:SharpDX.XInput.Controller.SetVibration(SharpDX.XInput.Vibration)\">\n            <summary>\n            Sets the vibration.\n            </summary>\n            <param name=\"vibration\">The vibration.</param>\n            <returns></returns>\n        </member>\n        <member name=\"P:SharpDX.XInput.Controller.UserIndex\">\n            <summary>\n            Gets the <see cref=\"P:SharpDX.XInput.Controller.UserIndex\"/> associated with this controller.\n            </summary>\n            <value>The index of the user.</value>\n        </member>\n        <member name=\"P:SharpDX.XInput.Controller.IsConnected\">\n            <summary>\n            Gets a value indicating whether this instance is connected.\n            </summary>\n            <value>\n            \t<c>true</c> if this instance is connected; otherwise, <c>false</c>.\n            </value>\n        </member>\n        <member name=\"P:SharpDX.XInput.Controller.SoundRenderGuid\">\n            <summary>\n            Gets the sound render GUID.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.XInput.Controller.SoundCaptureGuid\">\n            <summary>\n            Gets the sound capture GUID.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.XInput.Gamepad\">\n            <summary>\t\n            Describes the current state of the Xbox 360 Controller.\t\n            </summary>\t\n            <remarks>\t\n            <p>This structure is used by the <see cref=\"T:SharpDX.XInput.State\"/> structure when polling for changes in the state of the controller.</p> <p>The specific mapping of button to game function varies depending on the game type.</p> <p>The constant XINPUT_GAMEPAD_TRIGGER_THRESHOLD may be used as the value which <strong>bLeftTrigger</strong> and <strong>bRightTrigger</strong> must be greater than to register as pressed. This is optional, but often desirable. Xbox 360 Controller buttons do not manifest crosstalk.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XINPUT_GAMEPAD']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.xinput_gamepad</msdn-id>\t\n            <unmanaged>XINPUT_GAMEPAD</unmanaged>\t\n            <unmanaged-short>XINPUT_GAMEPAD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.Gamepad.TriggerThreshold\">\n            <summary>Constant TriggerThreshold.</summary>\n            <unmanaged>XINPUT_GAMEPAD_TRIGGER_THRESHOLD</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.XInput.Gamepad.LeftThumbDeadZone\">\n            <summary>Constant LeftThumbDeadZone.</summary>\n            <unmanaged>XINPUT_GAMEPAD_LEFT_THUMB_DEADZONE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.XInput.Gamepad.RightThumbDeadZone\">\n            <summary>Constant RightThumbDeadZone.</summary>\n            <unmanaged>XINPUT_GAMEPAD_RIGHT_THUMB_DEADZONE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.XInput.Gamepad.Buttons\">\n            <summary>\t\n            <dd> Bitmask of the device digital buttons, as follows. A set bit indicates that the corresponding button is pressed.\t\n            <pre>#define <see cref=\"F:SharpDX.XInput.GamepadButtonFlags.DPadUp\"/>          0x00000001\t\n            #define <see cref=\"F:SharpDX.XInput.GamepadButtonFlags.DPadDown\"/>        0x00000002\t\n            #define <see cref=\"F:SharpDX.XInput.GamepadButtonFlags.DPadLeft\"/>        0x00000004\t\n            #define <see cref=\"F:SharpDX.XInput.GamepadButtonFlags.DPadRight\"/>       0x00000008\t\n            #define <see cref=\"F:SharpDX.XInput.GamepadButtonFlags.Start\"/>            0x00000010\t\n            #define <see cref=\"F:SharpDX.XInput.GamepadButtonFlags.Back\"/>             0x00000020\t\n            #define <see cref=\"F:SharpDX.XInput.GamepadButtonFlags.LeftThumb\"/>       0x00000040\t\n            #define <see cref=\"F:SharpDX.XInput.GamepadButtonFlags.RightThumb\"/>      0x00000080\t\n            #define <see cref=\"F:SharpDX.XInput.GamepadButtonFlags.LeftShoulder\"/>    0x0100\t\n            #define <see cref=\"F:SharpDX.XInput.GamepadButtonFlags.RightShoulder\"/>   0x0200\t\n            #define <see cref=\"F:SharpDX.XInput.GamepadButtonFlags.A\"/>                0x1000\t\n            #define <see cref=\"F:SharpDX.XInput.GamepadButtonFlags.B\"/>                0x2000\t\n            #define <see cref=\"F:SharpDX.XInput.GamepadButtonFlags.X\"/>                0x4000\t\n            #define <see cref=\"F:SharpDX.XInput.GamepadButtonFlags.Y\"/>                0x8000</pre> <p>Bits that are set but not defined above are reserved, and their state is undefined.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XINPUT_GAMEPAD::wButtons']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.xinput_gamepad</msdn-id>\t\n            <unmanaged>XINPUT_GAMEPAD_BUTTON_FLAGS wButtons</unmanaged>\t\n            <unmanaged-short>XINPUT_GAMEPAD_BUTTON_FLAGS wButtons</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.Gamepad.LeftTrigger\">\n            <summary>\t\n            <dd> The current value of the left trigger analog control. The value is between 0 and 255. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XINPUT_GAMEPAD::bLeftTrigger']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.xinput_gamepad</msdn-id>\t\n            <unmanaged>unsigned char bLeftTrigger</unmanaged>\t\n            <unmanaged-short>unsigned char bLeftTrigger</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.Gamepad.RightTrigger\">\n            <summary>\t\n            <dd> The current value of the right trigger analog control. The value is between 0 and 255. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XINPUT_GAMEPAD::bRightTrigger']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.xinput_gamepad</msdn-id>\t\n            <unmanaged>unsigned char bRightTrigger</unmanaged>\t\n            <unmanaged-short>unsigned char bRightTrigger</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.Gamepad.LeftThumbX\">\n            <summary>\t\n            <dd> Left thumbstick x-axis value. Each of the thumbstick axis members is a signed value between -32768 and 32767 describing the position of the thumbstick. A value of 0 is centered. Negative values signify down or to the left. Positive values signify up or to the right. The constants <see cref=\"F:SharpDX.XInput.Gamepad.LeftThumbDeadZone\"/> or <see cref=\"F:SharpDX.XInput.Gamepad.RightThumbDeadZone\"/> can be used as a positive and negative value to filter a thumbstick input. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XINPUT_GAMEPAD::sThumbLX']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.xinput_gamepad</msdn-id>\t\n            <unmanaged>short sThumbLX</unmanaged>\t\n            <unmanaged-short>short sThumbLX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.Gamepad.LeftThumbY\">\n            <summary>\t\n            <dd> Left thumbstick y-axis value. The value is between -32768 and 32767. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XINPUT_GAMEPAD::sThumbLY']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.xinput_gamepad</msdn-id>\t\n            <unmanaged>short sThumbLY</unmanaged>\t\n            <unmanaged-short>short sThumbLY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.Gamepad.RightThumbX\">\n            <summary>\t\n            <dd> Right thumbstick x-axis value. The value is between -32768 and 32767. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XINPUT_GAMEPAD::sThumbRX']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.xinput_gamepad</msdn-id>\t\n            <unmanaged>short sThumbRX</unmanaged>\t\n            <unmanaged-short>short sThumbRX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.Gamepad.RightThumbY\">\n            <summary>\t\n            <dd> Right thumbstick y-axis value. The value is between -32768 and 32767. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XINPUT_GAMEPAD::sThumbRY']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.xinput_gamepad</msdn-id>\t\n            <unmanaged>short sThumbRY</unmanaged>\t\n            <unmanaged-short>short sThumbRY</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XInput.BatteryDeviceType\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='BATTERY_DEVTYPE']/*\"/>\t\n            <unmanaged>BATTERY_DEVTYPE</unmanaged>\t\n            <unmanaged-short>BATTERY_DEVTYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.BatteryDeviceType.Gamepad\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='BATTERY_DEVTYPE_GAMEPAD']/*\"/>\t\n            <unmanaged>BATTERY_DEVTYPE_GAMEPAD</unmanaged>\t\n            <unmanaged-short>BATTERY_DEVTYPE_GAMEPAD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.BatteryDeviceType.Headset\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='BATTERY_DEVTYPE_HEADSET']/*\"/>\t\n            <unmanaged>BATTERY_DEVTYPE_HEADSET</unmanaged>\t\n            <unmanaged-short>BATTERY_DEVTYPE_HEADSET</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XInput.BatteryLevel\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='BATTERY_LEVEL']/*\"/>\t\n            <msdn-id>ff561360</msdn-id>\t\n            <unmanaged>BATTERY_LEVEL</unmanaged>\t\n            <unmanaged-short>BATTERY_LEVEL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.BatteryLevel.Empty\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='BATTERY_LEVEL_EMPTY']/*\"/>\t\n            <unmanaged>BATTERY_LEVEL_EMPTY</unmanaged>\t\n            <unmanaged-short>BATTERY_LEVEL_EMPTY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.BatteryLevel.Low\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='BATTERY_LEVEL_LOW']/*\"/>\t\n            <unmanaged>BATTERY_LEVEL_LOW</unmanaged>\t\n            <unmanaged-short>BATTERY_LEVEL_LOW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.BatteryLevel.Medium\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='BATTERY_LEVEL_MEDIUM']/*\"/>\t\n            <unmanaged>BATTERY_LEVEL_MEDIUM</unmanaged>\t\n            <unmanaged-short>BATTERY_LEVEL_MEDIUM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.BatteryLevel.Full\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='BATTERY_LEVEL_FULL']/*\"/>\t\n            <unmanaged>BATTERY_LEVEL_FULL</unmanaged>\t\n            <unmanaged-short>BATTERY_LEVEL_FULL</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XInput.BatteryType\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='BATTERY_TYPE']/*\"/>\t\n            <unmanaged>BATTERY_TYPE</unmanaged>\t\n            <unmanaged-short>BATTERY_TYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.BatteryType.Disconnected\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='BATTERY_TYPE_DISCONNECTED']/*\"/>\t\n            <unmanaged>BATTERY_TYPE_DISCONNECTED</unmanaged>\t\n            <unmanaged-short>BATTERY_TYPE_DISCONNECTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.BatteryType.Wired\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='BATTERY_TYPE_WIRED']/*\"/>\t\n            <unmanaged>BATTERY_TYPE_WIRED</unmanaged>\t\n            <unmanaged-short>BATTERY_TYPE_WIRED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.BatteryType.Alkaline\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='BATTERY_TYPE_ALKALINE']/*\"/>\t\n            <unmanaged>BATTERY_TYPE_ALKALINE</unmanaged>\t\n            <unmanaged-short>BATTERY_TYPE_ALKALINE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.BatteryType.Nimh\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='BATTERY_TYPE_NIMH']/*\"/>\t\n            <unmanaged>BATTERY_TYPE_NIMH</unmanaged>\t\n            <unmanaged-short>BATTERY_TYPE_NIMH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.BatteryType.Unknown\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='BATTERY_TYPE_UNKNOWN']/*\"/>\t\n            <unmanaged>BATTERY_TYPE_UNKNOWN</unmanaged>\t\n            <unmanaged-short>BATTERY_TYPE_UNKNOWN</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XInput.CapabilityFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XINPUT_CAPS_FLAGS']/*\"/>\t\n            <unmanaged>XINPUT_CAPS_FLAGS</unmanaged>\t\n            <unmanaged-short>XINPUT_CAPS_FLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.CapabilityFlags.VoiceSupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XINPUT_CAPS_VOICE_SUPPORTED']/*\"/>\t\n            <unmanaged>XINPUT_CAPS_VOICE_SUPPORTED</unmanaged>\t\n            <unmanaged-short>XINPUT_CAPS_VOICE_SUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.CapabilityFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XInput.DeviceQueryType\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XINPUT_DEVQUERYTYPE']/*\"/>\t\n            <unmanaged>XINPUT_DEVQUERYTYPE</unmanaged>\t\n            <unmanaged-short>XINPUT_DEVQUERYTYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.DeviceQueryType.Gamepad\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XINPUT_FLAG_GAMEPAD']/*\"/>\t\n            <unmanaged>XINPUT_FLAG_GAMEPAD</unmanaged>\t\n            <unmanaged-short>XINPUT_FLAG_GAMEPAD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.DeviceQueryType.Any\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XINPUT_FLAG_ANY']/*\"/>\t\n            <unmanaged>XINPUT_FLAG_ANY</unmanaged>\t\n            <unmanaged-short>XINPUT_FLAG_ANY</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XInput.DeviceSubType\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XINPUT_DEVSUBTYPE']/*\"/>\t\n            <unmanaged>XINPUT_DEVSUBTYPE</unmanaged>\t\n            <unmanaged-short>XINPUT_DEVSUBTYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.DeviceSubType.Gamepad\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XINPUT_DEVSUBTYPE_GAMEPAD']/*\"/>\t\n            <unmanaged>XINPUT_DEVSUBTYPE_GAMEPAD</unmanaged>\t\n            <unmanaged-short>XINPUT_DEVSUBTYPE_GAMEPAD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.DeviceSubType.Wheel\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XINPUT_DEVSUBTYPE_WHEEL']/*\"/>\t\n            <unmanaged>XINPUT_DEVSUBTYPE_WHEEL</unmanaged>\t\n            <unmanaged-short>XINPUT_DEVSUBTYPE_WHEEL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.DeviceSubType.ArcadeStick\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XINPUT_DEVSUBTYPE_ARCADE_STICK']/*\"/>\t\n            <unmanaged>XINPUT_DEVSUBTYPE_ARCADE_STICK</unmanaged>\t\n            <unmanaged-short>XINPUT_DEVSUBTYPE_ARCADE_STICK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.DeviceSubType.FlightSick\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XINPUT_DEVSUBTYPE_FLIGHT_SICK']/*\"/>\t\n            <unmanaged>XINPUT_DEVSUBTYPE_FLIGHT_SICK</unmanaged>\t\n            <unmanaged-short>XINPUT_DEVSUBTYPE_FLIGHT_SICK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.DeviceSubType.DancePad\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XINPUT_DEVSUBTYPE_DANCE_PAD']/*\"/>\t\n            <unmanaged>XINPUT_DEVSUBTYPE_DANCE_PAD</unmanaged>\t\n            <unmanaged-short>XINPUT_DEVSUBTYPE_DANCE_PAD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.DeviceSubType.Guitar\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XINPUT_DEVSUBTYPE_GUITAR']/*\"/>\t\n            <unmanaged>XINPUT_DEVSUBTYPE_GUITAR</unmanaged>\t\n            <unmanaged-short>XINPUT_DEVSUBTYPE_GUITAR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.DeviceSubType.DrumKit\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XINPUT_DEVSUBTYPE_DRUM_KIT']/*\"/>\t\n            <unmanaged>XINPUT_DEVSUBTYPE_DRUM_KIT</unmanaged>\t\n            <unmanaged-short>XINPUT_DEVSUBTYPE_DRUM_KIT</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XInput.DeviceType\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XINPUT_DEVTYPE']/*\"/>\t\n            <unmanaged>XINPUT_DEVTYPE</unmanaged>\t\n            <unmanaged-short>XINPUT_DEVTYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.DeviceType.Gamepad\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XINPUT_DEVTYPE_GAMEPAD']/*\"/>\t\n            <unmanaged>XINPUT_DEVTYPE_GAMEPAD</unmanaged>\t\n            <unmanaged-short>XINPUT_DEVTYPE_GAMEPAD</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XInput.GamepadButtonFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XINPUT_GAMEPAD_BUTTON_FLAGS']/*\"/>\t\n            <unmanaged>XINPUT_GAMEPAD_BUTTON_FLAGS</unmanaged>\t\n            <unmanaged-short>XINPUT_GAMEPAD_BUTTON_FLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.GamepadButtonFlags.DPadUp\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XINPUT_GAMEPAD_DPAD_UP']/*\"/>\t\n            <unmanaged>XINPUT_GAMEPAD_DPAD_UP</unmanaged>\t\n            <unmanaged-short>XINPUT_GAMEPAD_DPAD_UP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.GamepadButtonFlags.DPadDown\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XINPUT_GAMEPAD_DPAD_DOWN']/*\"/>\t\n            <unmanaged>XINPUT_GAMEPAD_DPAD_DOWN</unmanaged>\t\n            <unmanaged-short>XINPUT_GAMEPAD_DPAD_DOWN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.GamepadButtonFlags.DPadLeft\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XINPUT_GAMEPAD_DPAD_LEFT']/*\"/>\t\n            <unmanaged>XINPUT_GAMEPAD_DPAD_LEFT</unmanaged>\t\n            <unmanaged-short>XINPUT_GAMEPAD_DPAD_LEFT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.GamepadButtonFlags.DPadRight\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XINPUT_GAMEPAD_DPAD_RIGHT']/*\"/>\t\n            <unmanaged>XINPUT_GAMEPAD_DPAD_RIGHT</unmanaged>\t\n            <unmanaged-short>XINPUT_GAMEPAD_DPAD_RIGHT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.GamepadButtonFlags.Start\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XINPUT_GAMEPAD_START']/*\"/>\t\n            <unmanaged>XINPUT_GAMEPAD_START</unmanaged>\t\n            <unmanaged-short>XINPUT_GAMEPAD_START</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.GamepadButtonFlags.Back\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XINPUT_GAMEPAD_BACK']/*\"/>\t\n            <unmanaged>XINPUT_GAMEPAD_BACK</unmanaged>\t\n            <unmanaged-short>XINPUT_GAMEPAD_BACK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.GamepadButtonFlags.LeftThumb\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XINPUT_GAMEPAD_LEFT_THUMB']/*\"/>\t\n            <unmanaged>XINPUT_GAMEPAD_LEFT_THUMB</unmanaged>\t\n            <unmanaged-short>XINPUT_GAMEPAD_LEFT_THUMB</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.GamepadButtonFlags.RightThumb\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XINPUT_GAMEPAD_RIGHT_THUMB']/*\"/>\t\n            <unmanaged>XINPUT_GAMEPAD_RIGHT_THUMB</unmanaged>\t\n            <unmanaged-short>XINPUT_GAMEPAD_RIGHT_THUMB</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.GamepadButtonFlags.LeftShoulder\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XINPUT_GAMEPAD_LEFT_SHOULDER']/*\"/>\t\n            <unmanaged>XINPUT_GAMEPAD_LEFT_SHOULDER</unmanaged>\t\n            <unmanaged-short>XINPUT_GAMEPAD_LEFT_SHOULDER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.GamepadButtonFlags.RightShoulder\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XINPUT_GAMEPAD_RIGHT_SHOULDER']/*\"/>\t\n            <unmanaged>XINPUT_GAMEPAD_RIGHT_SHOULDER</unmanaged>\t\n            <unmanaged-short>XINPUT_GAMEPAD_RIGHT_SHOULDER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.GamepadButtonFlags.A\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XINPUT_GAMEPAD_A']/*\"/>\t\n            <unmanaged>XINPUT_GAMEPAD_A</unmanaged>\t\n            <unmanaged-short>XINPUT_GAMEPAD_A</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.GamepadButtonFlags.B\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XINPUT_GAMEPAD_B']/*\"/>\t\n            <unmanaged>XINPUT_GAMEPAD_B</unmanaged>\t\n            <unmanaged-short>XINPUT_GAMEPAD_B</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.GamepadButtonFlags.X\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XINPUT_GAMEPAD_X']/*\"/>\t\n            <unmanaged>XINPUT_GAMEPAD_X</unmanaged>\t\n            <unmanaged-short>XINPUT_GAMEPAD_X</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.GamepadButtonFlags.Y\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XINPUT_GAMEPAD_Y']/*\"/>\t\n            <unmanaged>XINPUT_GAMEPAD_Y</unmanaged>\t\n            <unmanaged-short>XINPUT_GAMEPAD_Y</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.GamepadButtonFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XInput.GamepadKeyCode\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XINPUT_GAMEPAD_KEY_CODE']/*\"/>\t\n            <unmanaged>XINPUT_GAMEPAD_KEY_CODE</unmanaged>\t\n            <unmanaged-short>XINPUT_GAMEPAD_KEY_CODE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.GamepadKeyCode.A\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='VK_PAD_A']/*\"/>\t\n            <unmanaged>VK_PAD_A</unmanaged>\t\n            <unmanaged-short>VK_PAD_A</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.GamepadKeyCode.B\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='VK_PAD_B']/*\"/>\t\n            <unmanaged>VK_PAD_B</unmanaged>\t\n            <unmanaged-short>VK_PAD_B</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.GamepadKeyCode.X\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='VK_PAD_X']/*\"/>\t\n            <unmanaged>VK_PAD_X</unmanaged>\t\n            <unmanaged-short>VK_PAD_X</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.GamepadKeyCode.Y\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='VK_PAD_Y']/*\"/>\t\n            <unmanaged>VK_PAD_Y</unmanaged>\t\n            <unmanaged-short>VK_PAD_Y</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.GamepadKeyCode.RightShoulder\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='VK_PAD_RSHOULDER']/*\"/>\t\n            <unmanaged>VK_PAD_RSHOULDER</unmanaged>\t\n            <unmanaged-short>VK_PAD_RSHOULDER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.GamepadKeyCode.LeftShoulder\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='VK_PAD_LSHOULDER']/*\"/>\t\n            <unmanaged>VK_PAD_LSHOULDER</unmanaged>\t\n            <unmanaged-short>VK_PAD_LSHOULDER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.GamepadKeyCode.LeftTrigger\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='VK_PAD_LTRIGGER']/*\"/>\t\n            <unmanaged>VK_PAD_LTRIGGER</unmanaged>\t\n            <unmanaged-short>VK_PAD_LTRIGGER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.GamepadKeyCode.RightTrigger\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='VK_PAD_RTRIGGER']/*\"/>\t\n            <unmanaged>VK_PAD_RTRIGGER</unmanaged>\t\n            <unmanaged-short>VK_PAD_RTRIGGER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.GamepadKeyCode.DPadUp\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='VK_PAD_DPAD_UP']/*\"/>\t\n            <unmanaged>VK_PAD_DPAD_UP</unmanaged>\t\n            <unmanaged-short>VK_PAD_DPAD_UP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.GamepadKeyCode.DPadDown\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='VK_PAD_DPAD_DOWN']/*\"/>\t\n            <unmanaged>VK_PAD_DPAD_DOWN</unmanaged>\t\n            <unmanaged-short>VK_PAD_DPAD_DOWN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.GamepadKeyCode.DPadLeft\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='VK_PAD_DPAD_LEFT']/*\"/>\t\n            <unmanaged>VK_PAD_DPAD_LEFT</unmanaged>\t\n            <unmanaged-short>VK_PAD_DPAD_LEFT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.GamepadKeyCode.DPadRight\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='VK_PAD_DPAD_RIGHT']/*\"/>\t\n            <unmanaged>VK_PAD_DPAD_RIGHT</unmanaged>\t\n            <unmanaged-short>VK_PAD_DPAD_RIGHT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.GamepadKeyCode.Start\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='VK_PAD_START']/*\"/>\t\n            <unmanaged>VK_PAD_START</unmanaged>\t\n            <unmanaged-short>VK_PAD_START</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.GamepadKeyCode.Back\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='VK_PAD_BACK']/*\"/>\t\n            <unmanaged>VK_PAD_BACK</unmanaged>\t\n            <unmanaged-short>VK_PAD_BACK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.GamepadKeyCode.LeftThumbPress\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='VK_PAD_LTHUMB_PRESS']/*\"/>\t\n            <unmanaged>VK_PAD_LTHUMB_PRESS</unmanaged>\t\n            <unmanaged-short>VK_PAD_LTHUMB_PRESS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.GamepadKeyCode.RightThumbPress\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='VK_PAD_RTHUMB_PRESS']/*\"/>\t\n            <unmanaged>VK_PAD_RTHUMB_PRESS</unmanaged>\t\n            <unmanaged-short>VK_PAD_RTHUMB_PRESS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.GamepadKeyCode.LeftThumbUp\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='VK_PAD_LTHUMB_UP']/*\"/>\t\n            <unmanaged>VK_PAD_LTHUMB_UP</unmanaged>\t\n            <unmanaged-short>VK_PAD_LTHUMB_UP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.GamepadKeyCode.LeftThumbDown\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='VK_PAD_LTHUMB_DOWN']/*\"/>\t\n            <unmanaged>VK_PAD_LTHUMB_DOWN</unmanaged>\t\n            <unmanaged-short>VK_PAD_LTHUMB_DOWN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.GamepadKeyCode.LeftThumbRight\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='VK_PAD_LTHUMB_RIGHT']/*\"/>\t\n            <unmanaged>VK_PAD_LTHUMB_RIGHT</unmanaged>\t\n            <unmanaged-short>VK_PAD_LTHUMB_RIGHT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.GamepadKeyCode.LeftThumbLeft\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='VK_PAD_LTHUMB_LEFT']/*\"/>\t\n            <unmanaged>VK_PAD_LTHUMB_LEFT</unmanaged>\t\n            <unmanaged-short>VK_PAD_LTHUMB_LEFT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.GamepadKeyCode.RightThumbUpLeft\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='VK_PAD_LTHUMB_UPLEFT']/*\"/>\t\n            <unmanaged>VK_PAD_LTHUMB_UPLEFT</unmanaged>\t\n            <unmanaged-short>VK_PAD_LTHUMB_UPLEFT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.GamepadKeyCode.LeftThumbUpright\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='VK_PAD_LTHUMB_UPRIGHT']/*\"/>\t\n            <unmanaged>VK_PAD_LTHUMB_UPRIGHT</unmanaged>\t\n            <unmanaged-short>VK_PAD_LTHUMB_UPRIGHT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.GamepadKeyCode.LeftThumbDownright\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='VK_PAD_LTHUMB_DOWNRIGHT']/*\"/>\t\n            <unmanaged>VK_PAD_LTHUMB_DOWNRIGHT</unmanaged>\t\n            <unmanaged-short>VK_PAD_LTHUMB_DOWNRIGHT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.GamepadKeyCode.RightThumbDownLeft\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='VK_PAD_LTHUMB_DOWNLEFT']/*\"/>\t\n            <unmanaged>VK_PAD_LTHUMB_DOWNLEFT</unmanaged>\t\n            <unmanaged-short>VK_PAD_LTHUMB_DOWNLEFT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.GamepadKeyCode.RightThumbUp\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='VK_PAD_RTHUMB_UP']/*\"/>\t\n            <unmanaged>VK_PAD_RTHUMB_UP</unmanaged>\t\n            <unmanaged-short>VK_PAD_RTHUMB_UP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.GamepadKeyCode.RightThumbDown\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='VK_PAD_RTHUMB_DOWN']/*\"/>\t\n            <unmanaged>VK_PAD_RTHUMB_DOWN</unmanaged>\t\n            <unmanaged-short>VK_PAD_RTHUMB_DOWN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.GamepadKeyCode.RightThumbRight\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='VK_PAD_RTHUMB_RIGHT']/*\"/>\t\n            <unmanaged>VK_PAD_RTHUMB_RIGHT</unmanaged>\t\n            <unmanaged-short>VK_PAD_RTHUMB_RIGHT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.GamepadKeyCode.RightThumbLeft\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='VK_PAD_RTHUMB_LEFT']/*\"/>\t\n            <unmanaged>VK_PAD_RTHUMB_LEFT</unmanaged>\t\n            <unmanaged-short>VK_PAD_RTHUMB_LEFT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.GamepadKeyCode.RightThumbUpleft\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='VK_PAD_RTHUMB_UPLEFT']/*\"/>\t\n            <unmanaged>VK_PAD_RTHUMB_UPLEFT</unmanaged>\t\n            <unmanaged-short>VK_PAD_RTHUMB_UPLEFT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.GamepadKeyCode.RightThumbUpRight\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='VK_PAD_RTHUMB_UPRIGHT']/*\"/>\t\n            <unmanaged>VK_PAD_RTHUMB_UPRIGHT</unmanaged>\t\n            <unmanaged-short>VK_PAD_RTHUMB_UPRIGHT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.GamepadKeyCode.RightThumbDownRight\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='VK_PAD_RTHUMB_DOWNRIGHT']/*\"/>\t\n            <unmanaged>VK_PAD_RTHUMB_DOWNRIGHT</unmanaged>\t\n            <unmanaged-short>VK_PAD_RTHUMB_DOWNRIGHT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.GamepadKeyCode.RightThumbDownleft\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='VK_PAD_RTHUMB_DOWNLEFT']/*\"/>\t\n            <unmanaged>VK_PAD_RTHUMB_DOWNLEFT</unmanaged>\t\n            <unmanaged-short>VK_PAD_RTHUMB_DOWNLEFT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.GamepadKeyCode.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XInput.KeyStrokeFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XINPUT_KEYSTROKE_FLAGS']/*\"/>\t\n            <unmanaged>XINPUT_KEYSTROKE_FLAGS</unmanaged>\t\n            <unmanaged-short>XINPUT_KEYSTROKE_FLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.KeyStrokeFlags.KeyDown\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XINPUT_KEYSTROKE_KEYDOWN']/*\"/>\t\n            <unmanaged>XINPUT_KEYSTROKE_KEYDOWN</unmanaged>\t\n            <unmanaged-short>XINPUT_KEYSTROKE_KEYDOWN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.KeyStrokeFlags.KeyUp\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XINPUT_KEYSTROKE_KEYUP']/*\"/>\t\n            <unmanaged>XINPUT_KEYSTROKE_KEYUP</unmanaged>\t\n            <unmanaged-short>XINPUT_KEYSTROKE_KEYUP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.KeyStrokeFlags.Repeat\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XINPUT_KEYSTROKE_REPEAT']/*\"/>\t\n            <unmanaged>XINPUT_KEYSTROKE_REPEAT</unmanaged>\t\n            <unmanaged-short>XINPUT_KEYSTROKE_REPEAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.KeyStrokeFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XInput.UserIndex\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XUSER_INDEX']/*\"/>\t\n            <unmanaged>XUSER_INDEX</unmanaged>\t\n            <unmanaged-short>XUSER_INDEX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.UserIndex.Any\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XUSER_INDEX_ANY']/*\"/>\t\n            <unmanaged>XUSER_INDEX_ANY</unmanaged>\t\n            <unmanaged-short>XUSER_INDEX_ANY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.UserIndex.One\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XUSER_INDEX_ONE']/*\"/>\t\n            <unmanaged>XUSER_INDEX_ONE</unmanaged>\t\n            <unmanaged-short>XUSER_INDEX_ONE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.UserIndex.Two\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XUSER_INDEX_TWO']/*\"/>\t\n            <unmanaged>XUSER_INDEX_TWO</unmanaged>\t\n            <unmanaged-short>XUSER_INDEX_TWO</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.UserIndex.Three\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XUSER_INDEX_THREE']/*\"/>\t\n            <unmanaged>XUSER_INDEX_THREE</unmanaged>\t\n            <unmanaged-short>XUSER_INDEX_THREE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.UserIndex.Four\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XUSER_INDEX_FOUR']/*\"/>\t\n            <unmanaged>XUSER_INDEX_FOUR</unmanaged>\t\n            <unmanaged-short>XUSER_INDEX_FOUR</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XInput.XInput\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.XInput.XInput']/*\"/>\t\n        </member>\n        <member name=\"M:SharpDX.XInput.XInput.XInputGetKeystroke(System.Int32,System.Int32,SharpDX.XInput.Keystroke@)\">\n            <summary>\t\n            Retrieves a gamepad input event.\t\n            </summary>\t\n            <param name=\"dwUserIndex\"><dd>[in]  Index of the signed-in gamer associated with the device.  Can be a value in the range 0?XUSER_MAX_COUNT???1, or <see cref=\"F:SharpDX.XInput.UserIndex.Any\"/> to fetch the next available input event from any user. </dd></param>\t\n            <param name=\"dwReserved\"><dd>[in]  Input flags that identify the device type. <table><tr><th>Value</th><th>Description</th></tr><tr><td><see cref=\"F:SharpDX.XInput.DeviceQueryType.Gamepad\"/></td><td>Limit input event fetch to the gamepad.?</td></tr></table> </dd></param>\t\n            <param name=\"keystrokeRef\"><dd>[out]  Pointer to an <see cref=\"T:SharpDX.XInput.Keystroke\"/> structure that receives an input event. </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Win32.ErrorCode.Success\"/>.</p> <p>If no new keys have been pressed, the return value is <see cref=\"F:SharpDX.Win32.ErrorCode.Empty\"/>.</p> <p>If the controller is not connected or the user has not activated it, the return value is <see cref=\"F:SharpDX.Win32.ErrorCode.DeviceNotConnected\"/>. (See Remarks.)</p> <p>If the function fails, the return value is an error code defined in Winerror.h. The function does not use  SetLastError to set the calling thread's last-error code.</p></returns>\t\n            <remarks>\t\n            <p>Wireless controllers are not considered active upon system startup, and calls to any of the <strong>XInput</strong> functions before a wireless controller is made active return <see cref=\"F:SharpDX.Win32.ErrorCode.DeviceNotConnected\"/>. Game titles must examine the return code and be prepared to handle this condition. Wired controllers are automatically activated when they are inserted.  Wireless controllers are activated when the user presses the START or Xbox Guide button to power on the controller.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XInputGetKeystroke']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.xinputgetkeystroke</msdn-id>\t\n            <unmanaged>unsigned int XInputGetKeystroke([In] unsigned int dwUserIndex,[In] unsigned int dwReserved,[Out] XINPUT_KEYSTROKE* pKeystroke)</unmanaged>\t\n            <unmanaged-short>XInputGetKeystroke</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XInput.XInput.XInputSetState(System.Int32,SharpDX.XInput.Vibration)\">\n            <summary>\t\n            Sends data to a connected controller. This function is used to activate the vibration function of a controller.\t\n            </summary>\t\n            <param name=\"dwUserIndex\"><dd>[in]  Index of the user's controller. Can be a value from 0 to 3. For information about how this value is determined and how the value maps to indicators on the controller, see Multiple Controllers. </dd></param>\t\n            <param name=\"vibrationRef\"><dd>[in, out]  Pointer to an <see cref=\"T:SharpDX.XInput.Vibration\"/> structure containing the vibration information to send to the controller. </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Win32.ErrorCode.Success\"/>.</p> <p>If the controller is not connected, the return value is <see cref=\"F:SharpDX.Win32.ErrorCode.DeviceNotConnected\"/>.</p> <p>If the function fails, the return value is an error code defined in Winerror.h. The function does not use <strong>SetLastError</strong> to set the calling thread's last-error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XInputSetState']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.xinputsetstate</msdn-id>\t\n            <unmanaged>unsigned int XInputSetState([In] unsigned int dwUserIndex,[In] XINPUT_VIBRATION* pVibration)</unmanaged>\t\n            <unmanaged-short>XInputSetState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XInput.XInput.XInputGetDSoundAudioDeviceGuids(System.Int32,System.Guid@,System.Guid@)\">\n            <summary>\t\n            Gets the sound rendering and sound capture device GUIDs that are associated with the headset connected to the specified controller.\t\n            </summary>\t\n            <param name=\"dwUserIndex\"><dd>[in]  Index of the user's controller. It can be a value in the range 0?3.  For information about how this value is determined and how the value maps to indicators  on the controller, see Multiple Controllers. </dd></param>\t\n            <param name=\"dSoundRenderGuidRef\"><dd>[out, optional]  Pointer that receives the <see cref=\"T:System.Guid\"/> of the headset sound rendering device. </dd></param>\t\n            <param name=\"dSoundCaptureGuidRef\"><dd>[out, optional]  Pointer that receives the <see cref=\"T:System.Guid\"/> of the headset sound capture device. </dd></param>\t\n            <returns><p>If the function successfully retrieves the device IDs for render and capture,  the return code is <see cref=\"F:SharpDX.Win32.ErrorCode.Success\"/>.</p> <p>If there is no headset connected to the controller, the function also retrieves <see cref=\"F:SharpDX.Win32.ErrorCode.Success\"/> with GUID_NULL as the values for <strong>pDSoundRenderGuid</strong> and <strong>pDSoundCaptureGuid</strong>.</p> <p>If the controller port device is not physically connected, the function  returns <see cref=\"F:SharpDX.Win32.ErrorCode.DeviceNotConnected\"/>.</p> <p>If the function fails, it returns a valid Win32 error code.</p></returns>\t\n            <remarks>\t\n            <p>Use of legacy DirectSound is not recommended, and DirectSound is not available for Modern applications.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XInputGetDSoundAudioDeviceGuids']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.xinputgetdsoundaudiodeviceguids</msdn-id>\t\n            <unmanaged>unsigned int XInputGetDSoundAudioDeviceGuids([In] unsigned int dwUserIndex,[Out] GUID* pDSoundRenderGuid,[Out] GUID* pDSoundCaptureGuid)</unmanaged>\t\n            <unmanaged-short>XInputGetDSoundAudioDeviceGuids</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XInput.XInput.XInputGetState(System.Int32,SharpDX.XInput.State@)\">\n            <summary>\t\n            Retrieves the current state of the specified controller.\t\n            </summary>\t\n            <param name=\"dwUserIndex\"><dd>[in]  Index of the user's controller. Can be a value from 0 to 3. For information about how this value is determined and how the value maps to indicators on the controller, see Multiple Controllers. </dd></param>\t\n            <param name=\"stateRef\"><dd>[out]  Pointer to an <see cref=\"T:SharpDX.XInput.State\"/> structure that receives the current state of the controller. </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Win32.ErrorCode.Success\"/>.</p> <p>If the controller is not connected, the return value is <see cref=\"F:SharpDX.Win32.ErrorCode.DeviceNotConnected\"/>.</p> <p>If the function fails, the return value is an error code defined in Winerror.h. The function does not use <strong>SetLastError</strong> to set the calling thread's last-error code.</p></returns>\t\n            <remarks>\t\n            <p>When <strong><see cref=\"M:SharpDX.XInput.XInput.XInputGetState(System.Int32,SharpDX.XInput.State@)\"/></strong> is used to retrieve controller data, the left and right triggers are each reported separately. For legacy reasons, when DirectInput retrieves controller data, the two triggers share the same axis. The legacy behavior is noticeable in the current Game Device Control Panel, which uses DirectInput for controller state.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XInputGetState']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.xinputgetstate</msdn-id>\t\n            <unmanaged>unsigned int XInputGetState([In] unsigned int dwUserIndex,[Out] XINPUT_STATE* pState)</unmanaged>\t\n            <unmanaged-short>XInputGetState</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XInput.XInput.XInputGetCapabilities(System.Int32,SharpDX.XInput.DeviceQueryType,SharpDX.XInput.Capabilities@)\">\n            <summary>\t\n            Retrieves the capabilities and features of a connected controller.\t\n            </summary>\t\n            <param name=\"dwUserIndex\"><dd>[in]  Index of the user's controller. Can be a value in the range 0?3. For information about how this value is determined and how the value maps to indicators on the controller, see Multiple Controllers. </dd></param>\t\n            <param name=\"dwFlags\"><dd>[in]  Input flags that identify the controller type. If this value is 0, then the capabilities of all controllers connected to the system are returned. Currently, only one value is supported:\t\t <table><tr><th>Value</th><th>Description</th></tr><tr><td><see cref=\"F:SharpDX.XInput.DeviceQueryType.Gamepad\"/></td><td>Limit query to devices of Xbox 360 Controller type.?</td></tr></table> <p>Any value of <em>dwflags</em> other than the above or 0 is illegal and will result in an error break when debugging.</p> </dd></param>\t\n            <param name=\"capabilitiesRef\"><dd>[out]  Pointer to an <see cref=\"T:SharpDX.XInput.Capabilities\"/> structure that receives the controller capabilities. </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Win32.ErrorCode.Success\"/>.</p> <p>If the controller is not connected, the return value is <see cref=\"F:SharpDX.Win32.ErrorCode.DeviceNotConnected\"/>.</p> <p>If the function fails, the return value is an error code defined in Winerror.h. The function does not use <strong>SetLastError</strong> to set the calling thread's last-error code.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XInputGetCapabilities']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.xinputgetcapabilities</msdn-id>\t\n            <unmanaged>unsigned int XInputGetCapabilities([In] unsigned int dwUserIndex,[In] XINPUT_DEVQUERYTYPE dwFlags,[Out] XINPUT_CAPABILITIES* pCapabilities)</unmanaged>\t\n            <unmanaged-short>XInputGetCapabilities</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XInput.XInput.XInputGetBatteryInformation(System.Int32,SharpDX.XInput.BatteryDeviceType,SharpDX.XInput.BatteryInformation@)\">\n            <summary>\t\n            Retrieves the battery type and charge status of a wireless controller.\t\n            </summary>\t\n            <param name=\"dwUserIndex\"><dd>[in]  Index of the signed-in gamer associated with the device. Can be a value in the range 0?XUSER_MAX_COUNT???1. </dd></param>\t\n            <param name=\"devType\"><dd>[in]  Specifies which device associated with this user index should be queried.   Must be <see cref=\"F:SharpDX.XInput.BatteryDeviceType.Gamepad\"/> or <see cref=\"F:SharpDX.XInput.BatteryDeviceType.Headset\"/>. </dd></param>\t\n            <param name=\"batteryInformationRef\"><dd>[out]  Pointer to an <see cref=\"T:SharpDX.XInput.BatteryInformation\"/> structure that receives the battery information. </dd></param>\t\n            <returns><p>If the function succeeds, the return value is <see cref=\"F:SharpDX.Win32.ErrorCode.Success\"/>.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XInputGetBatteryInformation']/*\"/>\t\n            <msdn-id>ff729733</msdn-id>\t\n            <unmanaged>unsigned int XInputGetBatteryInformation([In] unsigned int dwUserIndex,[In] BATTERY_DEVTYPE devType,[Out] XINPUT_BATTERY_INFORMATION* pBatteryInformation)</unmanaged>\t\n            <unmanaged-short>XInputGetBatteryInformation</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.XInput.XInput.XInputEnable(SharpDX.Bool)\">\n            <summary>\t\n            Sets the reporting state of XInput.\t\n            </summary>\t\n            <param name=\"enable\"><dd> If <em>enable</em> is <strong><see cref=\"F:SharpDX.Result.False\"/></strong>, XInput will only send neutral data in response to <see cref=\"M:SharpDX.XInput.XInput.XInputGetState(System.Int32,SharpDX.XInput.State@)\"/> (all buttons up, axes centered, and triggers at 0). <see cref=\"M:SharpDX.XInput.XInput.XInputSetState(System.Int32,SharpDX.XInput.Vibration)\"/> calls will be registered but not sent to the device. Sending any value other than <strong><see cref=\"F:SharpDX.Result.False\"/></strong> will restore reading and writing functionality to normal. </dd></param>\t\n            <remarks>\t\n            <p>This function is meant to be called when an application gains or loses focus (such as via WM_ACTIVATEAPP). Using this function, you will not have to change the XInput query loop in your application as neutral data will always be reported if XInput is disabled.</p> <p>In a controller that supports vibration effects:</p> <ul> <li><p>Passing <strong><see cref=\"F:SharpDX.Result.False\"/></strong> will stop any vibration effects currently playing. In this state, calls to <see cref=\"M:SharpDX.XInput.XInput.XInputSetState(System.Int32,SharpDX.XInput.Vibration)\"/> will be registered, but not passed to the device.</p></li> <li><p>Passing <strong>TRUE</strong> will pass the last vibration request (even if it is 0) sent to <see cref=\"M:SharpDX.XInput.XInput.XInputSetState(System.Int32,SharpDX.XInput.Vibration)\"/> to the device.</p></li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XInputEnable']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.xinputenable</msdn-id>\t\n            <unmanaged>void XInputEnable([In] BOOL enable)</unmanaged>\t\n            <unmanaged-short>XInputEnable</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XInput.BatteryInformation\">\n            <summary>\t\n            Contains information on battery type and charge state.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XINPUT_BATTERY_INFORMATION']/*\"/>\t\n            <msdn-id>ff729734</msdn-id>\t\n            <unmanaged>XINPUT_BATTERY_INFORMATION</unmanaged>\t\n            <unmanaged-short>XINPUT_BATTERY_INFORMATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.BatteryInformation.BatteryType\">\n            <summary>\t\n            <dd> The type of battery.  <em>BatteryType</em> will be one of the following values. <table><tr><th>Value</th><th>Description</th></tr><tr><td><see cref=\"F:SharpDX.XInput.BatteryType.Disconnected\"/></td><td>The device is not connected.?</td></tr><tr><td><see cref=\"F:SharpDX.XInput.BatteryType.Wired\"/></td><td>The device is a wired device and does not have a battery.?</td></tr><tr><td><see cref=\"F:SharpDX.XInput.BatteryType.Alkaline\"/></td><td>The device has an alkaline battery.?</td></tr><tr><td><see cref=\"F:SharpDX.XInput.BatteryType.Nimh\"/></td><td>The device has a nickel metal hydride battery.?</td></tr><tr><td><see cref=\"F:SharpDX.XInput.BatteryType.Unknown\"/></td><td>The device has an unknown  battery type.?</td></tr></table> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XINPUT_BATTERY_INFORMATION::BatteryType']/*\"/>\t\n            <msdn-id>ff729734</msdn-id>\t\n            <unmanaged>BATTERY_TYPE BatteryType</unmanaged>\t\n            <unmanaged-short>BATTERY_TYPE BatteryType</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.BatteryInformation.BatteryLevel\">\n            <summary>\t\n            <dd> The charge state of the battery.  This value is only valid for wireless devices with a known battery type.   <em>BatteryLevel</em> will be one of the following values. <table><tr><th>Value</th></tr><tr><td><see cref=\"F:SharpDX.XInput.BatteryLevel.Empty\"/></td></tr><tr><td><see cref=\"F:SharpDX.XInput.BatteryLevel.Low\"/></td></tr><tr><td><see cref=\"F:SharpDX.XInput.BatteryLevel.Medium\"/></td></tr><tr><td><see cref=\"F:SharpDX.XInput.BatteryLevel.Full\"/></td></tr></table> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XINPUT_BATTERY_INFORMATION::BatteryLevel']/*\"/>\t\n            <msdn-id>ff729734</msdn-id>\t\n            <unmanaged>BATTERY_LEVEL BatteryLevel</unmanaged>\t\n            <unmanaged-short>BATTERY_LEVEL BatteryLevel</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XInput.Capabilities\">\n            <summary>\t\n            Describes the capabilities of a connected controller.  TheXInputGetCapabilitiesfunction returnsXINPUT_CAPABILITIES.\t\n            </summary>\t\n            <remarks>\t\n            <p><see cref=\"M:SharpDX.XInput.XInput.XInputGetCapabilities(System.Int32,SharpDX.XInput.DeviceQueryType,SharpDX.XInput.Capabilities@)\"/> returns <see cref=\"T:SharpDX.XInput.Capabilities\"/> to indicate the characteristics and available functionality of a specified controller.</p> <p><see cref=\"M:SharpDX.XInput.XInput.XInputGetCapabilities(System.Int32,SharpDX.XInput.DeviceQueryType,SharpDX.XInput.Capabilities@)\"/> sets the structure members to indicate which inputs the device supports. For binary state controls, such as digital buttons, the corresponding bit reflects whether or not the control is supported by the device. For proportional controls, such as thumbsticks, the value indicates the resolution for that control. Some number of the least significant bits may not be set, indicating that the control does not provide resolution to that level.</p> <p>The <strong>SubType</strong> member indicates the specific subtype of controller present. Games may detect the controller subtype and tune their handling of controller input or output based on subtypes that are well suited to their game genre. For example, a car racing game might check for the presence of a wheel controller to provide finer control of the car being driven. However, titles must not disable or ignore a device based on its subtype. Subtypes not recognized by the game or for which the game is not specifically tuned  should be treated as a standard Xbox 360 Controller (<see cref=\"F:SharpDX.XInput.DeviceSubType.Gamepad\"/>).</p> <p>Older XUSB Windows drivers report incomplete capabilities information, particularly for wireless devices. The latest XUSB Windows driver provides full support for wired and wireless devices, and more complete and accurate capabilties flags.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XINPUT_CAPABILITIES']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.xinput_capabilities</msdn-id>\t\n            <unmanaged>XINPUT_CAPABILITIES</unmanaged>\t\n            <unmanaged-short>XINPUT_CAPABILITIES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.Capabilities.Type\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XINPUT_CAPABILITIES::Type']/*\"/>\t\n            <unmanaged>XINPUT_DEVTYPE Type</unmanaged>\t\n            <unmanaged-short>XINPUT_DEVTYPE Type</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.Capabilities.SubType\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XINPUT_CAPABILITIES::SubType']/*\"/>\t\n            <unmanaged>XINPUT_DEVSUBTYPE SubType</unmanaged>\t\n            <unmanaged-short>XINPUT_DEVSUBTYPE SubType</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.Capabilities.Flags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XINPUT_CAPABILITIES::Flags']/*\"/>\t\n            <unmanaged>XINPUT_CAPS_FLAGS Flags</unmanaged>\t\n            <unmanaged-short>XINPUT_CAPS_FLAGS Flags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.Capabilities.Gamepad\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XINPUT_CAPABILITIES::Gamepad']/*\"/>\t\n            <unmanaged>XINPUT_GAMEPAD Gamepad</unmanaged>\t\n            <unmanaged-short>XINPUT_GAMEPAD Gamepad</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.Capabilities.Vibration\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XINPUT_CAPABILITIES::Vibration']/*\"/>\t\n            <unmanaged>XINPUT_VIBRATION Vibration</unmanaged>\t\n            <unmanaged-short>XINPUT_VIBRATION Vibration</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XInput.Keystroke\">\n            <summary>\t\n            Specifies keystroke data returned byXInputGetKeystroke.\t\n            </summary>\t\n            <remarks>\t\n            <p>Future devices may return HID codes and virtual key values that are not supported on current devices, and are currently undefined. Applications should ignore these unexpected values.</p> <p>A <em>virtual-key code</em> is a byte value that represents a particular physical key on the keyboard, not the character or characters (possibly none) that the key can be mapped to based on keyboard state. The keyboard state at the time a virtual key is pressed modifies the character reported. For example, VK_4 might represent a \"4\" or a \"$\", depending on the state of the SHIFT key.</p> <p>A reported keyboard event includes the virtual key that caused the event, whether the key was pressed or released (or is repeating), and the state of the keyboard at the time of the event. The keyboard state includes information about whether any CTRL, ALT, or SHIFT keys are down.</p> <p>If the keyboard event represents an Unicode character (for example, pressing the \"A\" key), the <strong>Unicode</strong> member will contain that character. Otherwise, <strong>Unicode</strong> will contain the value zero.</p> <p>The valid virtual-key (VK_<em>xxx</em>) codes are defined in XInput.h. In addition to codes that indicate key presses, the following codes indicate controller input.</p> <table><tr><th>Value</th><th>Description</th></tr><tr><td><see cref=\"F:SharpDX.XInput.GamepadKeyCode.A\"/></td><td><strong>A</strong> button?</td></tr><tr><td><see cref=\"F:SharpDX.XInput.GamepadKeyCode.B\"/></td><td><strong>B</strong> button?</td></tr><tr><td><see cref=\"F:SharpDX.XInput.GamepadKeyCode.X\"/></td><td><strong>X</strong> button?</td></tr><tr><td><see cref=\"F:SharpDX.XInput.GamepadKeyCode.Y\"/></td><td><strong>Y</strong> button?</td></tr><tr><td><see cref=\"F:SharpDX.XInput.GamepadKeyCode.RightShoulder\"/></td><td>Right shoulder button?</td></tr><tr><td><see cref=\"F:SharpDX.XInput.GamepadKeyCode.LeftShoulder\"/></td><td>Left shoulder button?</td></tr><tr><td><see cref=\"F:SharpDX.XInput.GamepadKeyCode.LeftTrigger\"/></td><td>Left trigger?</td></tr><tr><td><see cref=\"F:SharpDX.XInput.GamepadKeyCode.RightTrigger\"/></td><td>Right trigger?</td></tr><tr><td><see cref=\"F:SharpDX.XInput.GamepadKeyCode.DPadUp\"/></td><td>Directional pad up?</td></tr><tr><td><see cref=\"F:SharpDX.XInput.GamepadKeyCode.DPadDown\"/></td><td>Directional pad down?</td></tr><tr><td><see cref=\"F:SharpDX.XInput.GamepadKeyCode.DPadLeft\"/></td><td>Directional pad left?</td></tr><tr><td><see cref=\"F:SharpDX.XInput.GamepadKeyCode.DPadRight\"/></td><td>Directional pad right?</td></tr><tr><td><see cref=\"F:SharpDX.XInput.GamepadKeyCode.Start\"/></td><td><strong>START</strong> button?</td></tr><tr><td><see cref=\"F:SharpDX.XInput.GamepadKeyCode.Back\"/></td><td><strong>BACK</strong> button?</td></tr><tr><td><see cref=\"F:SharpDX.XInput.GamepadKeyCode.LeftThumbPress\"/></td><td>Left thumbstick click?</td></tr><tr><td><see cref=\"F:SharpDX.XInput.GamepadKeyCode.RightThumbPress\"/></td><td>Right thumbstick click?</td></tr><tr><td><see cref=\"F:SharpDX.XInput.GamepadKeyCode.LeftThumbUp\"/></td><td>Left thumbstick up?</td></tr><tr><td><see cref=\"F:SharpDX.XInput.GamepadKeyCode.LeftThumbDown\"/></td><td>Left thumbstick down?</td></tr><tr><td><see cref=\"F:SharpDX.XInput.GamepadKeyCode.LeftThumbRight\"/></td><td>Left thumbstick right?</td></tr><tr><td><see cref=\"F:SharpDX.XInput.GamepadKeyCode.LeftThumbLeft\"/></td><td>Left thumbstick left?</td></tr><tr><td><see cref=\"F:SharpDX.XInput.GamepadKeyCode.RightThumbUpLeft\"/></td><td>Left thumbstick up and left?</td></tr><tr><td><see cref=\"F:SharpDX.XInput.GamepadKeyCode.LeftThumbUpright\"/></td><td>Left thumbstick up and right?</td></tr><tr><td><see cref=\"F:SharpDX.XInput.GamepadKeyCode.LeftThumbDownright\"/></td><td>Left thumbstick down and right?</td></tr><tr><td><see cref=\"F:SharpDX.XInput.GamepadKeyCode.RightThumbDownLeft\"/></td><td>Left thumbstick down and left?</td></tr><tr><td><see cref=\"F:SharpDX.XInput.GamepadKeyCode.RightThumbUp\"/></td><td>Right thumbstick up?</td></tr><tr><td><see cref=\"F:SharpDX.XInput.GamepadKeyCode.RightThumbDown\"/></td><td>Right thumbstick down?</td></tr><tr><td><see cref=\"F:SharpDX.XInput.GamepadKeyCode.RightThumbRight\"/></td><td>Right thumbstick right?</td></tr><tr><td><see cref=\"F:SharpDX.XInput.GamepadKeyCode.RightThumbLeft\"/></td><td>Right thumbstick left?</td></tr><tr><td><see cref=\"F:SharpDX.XInput.GamepadKeyCode.RightThumbUpleft\"/></td><td>Right thumbstick up and left?</td></tr><tr><td><see cref=\"F:SharpDX.XInput.GamepadKeyCode.RightThumbUpRight\"/></td><td>Right thumbstick up and right?</td></tr><tr><td><see cref=\"F:SharpDX.XInput.GamepadKeyCode.RightThumbDownRight\"/></td><td>Right thumbstick down and right?</td></tr><tr><td><see cref=\"F:SharpDX.XInput.GamepadKeyCode.RightThumbDownleft\"/></td><td>Right thumbstick down and left?</td></tr></table>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XINPUT_KEYSTROKE']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.xinput_keystroke</msdn-id>\t\n            <unmanaged>XINPUT_KEYSTROKE</unmanaged>\t\n            <unmanaged-short>XINPUT_KEYSTROKE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.Keystroke.VirtualKey\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XINPUT_KEYSTROKE::VirtualKey']/*\"/>\t\n            <unmanaged>XINPUT_GAMEPAD_KEY_CODE VirtualKey</unmanaged>\t\n            <unmanaged-short>XINPUT_GAMEPAD_KEY_CODE VirtualKey</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.Keystroke.Unicode\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XINPUT_KEYSTROKE::Unicode']/*\"/>\t\n            <unmanaged>wchar_t Unicode</unmanaged>\t\n            <unmanaged-short>wchar_t Unicode</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.Keystroke.Flags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XINPUT_KEYSTROKE::Flags']/*\"/>\t\n            <unmanaged>XINPUT_KEYSTROKE_FLAGS Flags</unmanaged>\t\n            <unmanaged-short>XINPUT_KEYSTROKE_FLAGS Flags</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.Keystroke.UserIndex\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XINPUT_KEYSTROKE::UserIndex']/*\"/>\t\n            <unmanaged>XUSER_INDEX UserIndex</unmanaged>\t\n            <unmanaged-short>XUSER_INDEX UserIndex</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.Keystroke.HidCode\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XINPUT_KEYSTROKE::HidCode']/*\"/>\t\n            <unmanaged>unsigned char HidCode</unmanaged>\t\n            <unmanaged-short>unsigned char HidCode</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XInput.State\">\n            <summary>\t\n            Represents the state of a controller.\t\n            </summary>\t\n            <remarks>\t\n            <p>The <strong>dwPacketNumber</strong> member is incremented only if the status of the controller has changed since the controller was last polled.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XINPUT_STATE']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.xinput_state</msdn-id>\t\n            <unmanaged>XINPUT_STATE</unmanaged>\t\n            <unmanaged-short>XINPUT_STATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.State.PacketNumber\">\n            <summary>\t\n            <dd> State packet number. The packet number indicates whether there have been any changes in the state of the controller. If the <strong>dwPacketNumber</strong> member is the same in sequentially returned <see cref=\"T:SharpDX.XInput.State\"/> structures, the controller state has not changed. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XINPUT_STATE::dwPacketNumber']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.xinput_state</msdn-id>\t\n            <unmanaged>unsigned int dwPacketNumber</unmanaged>\t\n            <unmanaged-short>unsigned int dwPacketNumber</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.State.Gamepad\">\n            <summary>\t\n            <dd> <see cref=\"T:SharpDX.XInput.Gamepad\"/> structure containing the current state of an Xbox 360 Controller. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XINPUT_STATE::Gamepad']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.xinput_state</msdn-id>\t\n            <unmanaged>XINPUT_GAMEPAD Gamepad</unmanaged>\t\n            <unmanaged-short>XINPUT_GAMEPAD Gamepad</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XInput.Vibration\">\n            <summary>\t\n            Specifies motor speed levels for the vibration function of a controller.\t\n            </summary>\t\n            <remarks>\t\n            <p>The left motor is the low-frequency rumble motor. The right motor is the high-frequency rumble motor. The two motors are not the same, and they create different vibration effects.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XINPUT_VIBRATION']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.xinput_vibration</msdn-id>\t\n            <unmanaged>XINPUT_VIBRATION</unmanaged>\t\n            <unmanaged-short>XINPUT_VIBRATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.Vibration.LeftMotorSpeed\">\n            <summary>\t\n            <dd> Speed of the left motor. Valid values are in the range 0 to 65,535. Zero signifies no motor use; 65,535 signifies 100 percent motor use. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XINPUT_VIBRATION::wLeftMotorSpeed']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.xinput_vibration</msdn-id>\t\n            <unmanaged>SHARPDX_USHORT wLeftMotorSpeed</unmanaged>\t\n            <unmanaged-short>SHARPDX_USHORT wLeftMotorSpeed</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.XInput.Vibration.RightMotorSpeed\">\n            <summary>\t\n            <dd> Speed of the right motor. Valid values are in the range 0 to 65,535. Zero signifies no motor use; 65,535 signifies 100 percent motor use. </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\".\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='XINPUT_VIBRATION::wRightMotorSpeed']/*\"/>\t\n            <msdn-id>microsoft.directx_sdk.reference.xinput_vibration</msdn-id>\t\n            <unmanaged>SHARPDX_USHORT wRightMotorSpeed</unmanaged>\t\n            <unmanaged-short>SHARPDX_USHORT wRightMotorSpeed</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XInput.NamespaceDoc\">\n            <summary>\n            The <see cref=\"N:SharpDX.XInput\"/> namespace provides a managed XInput API.\n            </summary>\n            <msdn-id>hh405053</msdn-id>\n            <unmanaged>XInput</unmanaged>\t\n            <unmanaged-short>XInput</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.XInput.ResultCode\">\n            <summary>\n            Common error code from XInput\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.XInput.ResultCode.NotConnected\">\n            <summary>\n            Device is not connected\n            </summary>\n        </member>\n    </members>\n</doc>\n"
  },
  {
    "path": "3rd/SharpDX/SharpDX.xml",
    "content": "<?xml version=\"1.0\"?>\n<doc>\n    <assembly>\n        <name>SharpDX</name>\n    </assembly>\n    <members>\n        <member name=\"T:SharpDX.AngleSingle\">\n            <summary>\n            Represents a unit independant angle using a single-precision floating-point\n            internal representation.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Serialization.IDataSerializable\">\n            <summary>\n            Implement this interface to serialize datas with <see cref=\"T:SharpDX.Serialization.BinarySerializer\"/>.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Serialization.IDataSerializable.Serialize(SharpDX.Serialization.BinarySerializer)\">\n            <summary>\n            Reads or writes datas from/to the given binary serializer.\n            </summary>\n            <param name=\"serializer\">The binary serializer.</param>\n        </member>\n        <member name=\"F:SharpDX.AngleSingle.Degree\">\n            <summary>\n            A value that specifies the size of a single degree.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.AngleSingle.Minute\">\n            <summary>\n            A value that specifies the size of a single minute.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.AngleSingle.Second\">\n            <summary>\n            A value that specifies the size of a single second.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.AngleSingle.Radian\">\n            <summary>\n            A value that specifies the size of a single radian.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.AngleSingle.Milliradian\">\n            <summary>\n            A value that specifies the size of a single milliradian.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.AngleSingle.Gradian\">\n            <summary>\n            A value that specifies the size of a single gradian.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.AngleSingle.radians\">\n            <summary>\n            The internal representation of the angle.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.AngleSingle.#ctor(System.Single,SharpDX.AngleType)\">\n            <summary>\n            Initializes a new instance of the SharpDX.AngleSingle structure with the\n            given unit dependant angle and unit type.\n            </summary>\n            <param name=\"angle\">A unit dependant measure of the angle.</param>\n            <param name=\"type\">The type of unit the angle argument is.</param>\n        </member>\n        <member name=\"M:SharpDX.AngleSingle.#ctor(System.Single,System.Single)\">\n            <summary>\n            Initializes a new instance of the SharpDX.AngleSingle structure using the\n            arc length formula (θ = s/r).\n            </summary>\n            <param name=\"arcLength\">The measure of the arc.</param>\n            <param name=\"radius\">The radius of the circle.</param>\n        </member>\n        <member name=\"M:SharpDX.AngleSingle.Wrap\">\n            <summary>\n            Wraps this SharpDX.AngleSingle to be in the range [π, -π].\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.AngleSingle.WrapPositive\">\n            <summary>\n            Wraps this SharpDX.AngleSingle to be in the range [0, 2π).\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.AngleSingle.Wrap(SharpDX.AngleSingle)\">\n            <summary>\n            Wraps the SharpDX.AngleSingle given in the value argument to be in the range [π, -π].\n            </summary>\n            <param name=\"value\">A SharpDX.AngleSingle to wrap.</param>\n            <returns>The SharpDX.AngleSingle that is wrapped.</returns>\n        </member>\n        <member name=\"M:SharpDX.AngleSingle.WrapPositive(SharpDX.AngleSingle)\">\n            <summary>\n            Wraps the SharpDX.AngleSingle given in the value argument to be in the range [0, 2π).\n            </summary>\n            <param name=\"value\">A SharpDX.AngleSingle to wrap.</param>\n            <returns>The SharpDX.AngleSingle that is wrapped.</returns>\n        </member>\n        <member name=\"M:SharpDX.AngleSingle.Min(SharpDX.AngleSingle,SharpDX.AngleSingle)\">\n            <summary>\n            Compares two SharpDX.AngleSingle instances and returns the smaller angle.\n            </summary>\n            <param name=\"left\">The first SharpDX.AngleSingle instance to compare.</param>\n            <param name=\"right\">The second SharpDX.AngleSingle instance to compare.</param>\n            <returns>The smaller of the two given SharpDX.AngleSingle instances.</returns>\n        </member>\n        <member name=\"M:SharpDX.AngleSingle.Max(SharpDX.AngleSingle,SharpDX.AngleSingle)\">\n            <summary>\n            Compares two SharpDX.AngleSingle instances and returns the greater angle.\n            </summary>\n            <param name=\"left\">The first SharpDX.AngleSingle instance to compare.</param>\n            <param name=\"right\">The second SharpDX.AngleSingle instance to compare.</param>\n            <returns>The greater of the two given SharpDX.AngleSingle instances.</returns>\n        </member>\n        <member name=\"M:SharpDX.AngleSingle.Add(SharpDX.AngleSingle,SharpDX.AngleSingle)\">\n            <summary>\n            Adds two SharpDX.AngleSingle objects and returns the result.\n            </summary>\n            <param name=\"left\">The first object to add.</param>\n            <param name=\"right\">The second object to add.</param>\n            <returns>The value of the two objects added together.</returns>\n        </member>\n        <member name=\"M:SharpDX.AngleSingle.Subtract(SharpDX.AngleSingle,SharpDX.AngleSingle)\">\n            <summary>\n            Subtracts two SharpDX.AngleSingle objects and returns the result.\n            </summary>\n            <param name=\"left\">The first object to subtract.</param>\n            <param name=\"right\">The second object to subtract.</param>\n            <returns>The value of the two objects subtracted.</returns>\n        </member>\n        <member name=\"M:SharpDX.AngleSingle.Multiply(SharpDX.AngleSingle,SharpDX.AngleSingle)\">\n            <summary>\n            Multiplies two SharpDX.AngleSingle objects and returns the result.\n            </summary>\n            <param name=\"left\">The first object to multiply.</param>\n            <param name=\"right\">The second object to multiply.</param>\n            <returns>The value of the two objects multiplied together.</returns>\n        </member>\n        <member name=\"M:SharpDX.AngleSingle.Divide(SharpDX.AngleSingle,SharpDX.AngleSingle)\">\n            <summary>\n            Divides two SharpDX.AngleSingle objects and returns the result.\n            </summary>\n            <param name=\"left\">The numerator object.</param>\n            <param name=\"right\">The denominator object.</param>\n            <returns>The value of the two objects divided.</returns>\n        </member>\n        <member name=\"M:SharpDX.AngleSingle.op_Equality(SharpDX.AngleSingle,SharpDX.AngleSingle)\">\n            <summary>\n            Returns a System.Boolean that indicates whether the values of two SharpDX.Angle\n            objects are equal.\n            </summary>\n            <param name=\"left\">The first object to compare.</param>\n            <param name=\"right\">The second object to compare.</param>\n            <returns>True if the left and right parameters have the same value; otherwise, false.</returns>\n        </member>\n        <member name=\"M:SharpDX.AngleSingle.op_Inequality(SharpDX.AngleSingle,SharpDX.AngleSingle)\">\n            <summary>\n            Returns a System.Boolean that indicates whether the values of two SharpDX.Angle\n            objects are not equal.\n            </summary>\n            <param name=\"left\">The first object to compare.</param>\n            <param name=\"right\">The second object to compare.</param>\n            <returns>True if the left and right parameters do not have the same value; otherwise, false.</returns>\n        </member>\n        <member name=\"M:SharpDX.AngleSingle.op_LessThan(SharpDX.AngleSingle,SharpDX.AngleSingle)\">\n            <summary>\n            Returns a System.Boolean that indicates whether a SharpDX.Angle\n            object is less than another SharpDX.AngleSingle object.\n            </summary>\n            <param name=\"left\">The first object to compare.</param>\n            <param name=\"right\">The second object to compare.</param>\n            <returns>True if left is less than right; otherwise, false.</returns>\n        </member>\n        <member name=\"M:SharpDX.AngleSingle.op_GreaterThan(SharpDX.AngleSingle,SharpDX.AngleSingle)\">\n            <summary>\n            Returns a System.Boolean that indicates whether a SharpDX.Angle\n            object is greater than another SharpDX.AngleSingle object.\n            </summary>\n            <param name=\"left\">The first object to compare.</param>\n            <param name=\"right\">The second object to compare.</param>\n            <returns>True if left is greater than right; otherwise, false.</returns>\n        </member>\n        <member name=\"M:SharpDX.AngleSingle.op_LessThanOrEqual(SharpDX.AngleSingle,SharpDX.AngleSingle)\">\n            <summary>\n            Returns a System.Boolean that indicates whether a SharpDX.Angle\n            object is less than or equal to another SharpDX.AngleSingle object.\n            </summary>\n            <param name=\"left\">The first object to compare.</param>\n            <param name=\"right\">The second object to compare.</param>\n            <returns>True if left is less than or equal to right; otherwise, false.</returns>\n        </member>\n        <member name=\"M:SharpDX.AngleSingle.op_GreaterThanOrEqual(SharpDX.AngleSingle,SharpDX.AngleSingle)\">\n            <summary>\n            Returns a System.Boolean that indicates whether a SharpDX.Angle\n            object is greater than or equal to another SharpDX.AngleSingle object.\n            </summary>\n            <param name=\"left\">The first object to compare.</param>\n            <param name=\"right\">The second object to compare.</param>\n            <returns>True if left is greater than or equal to right; otherwise, false.</returns>\n        </member>\n        <member name=\"M:SharpDX.AngleSingle.op_UnaryPlus(SharpDX.AngleSingle)\">\n            <summary>\n            Returns the value of the SharpDX.AngleSingle operand. (The sign of\n            the operand is unchanged.)\n            </summary>\n            <param name=\"value\">A SharpDX.AngleSingle object.</param>\n            <returns>The value of the value parameter.</returns>\n        </member>\n        <member name=\"M:SharpDX.AngleSingle.op_UnaryNegation(SharpDX.AngleSingle)\">\n            <summary>\n            Returns the the negated value of the SharpDX.AngleSingle operand.\n            </summary>\n            <param name=\"value\">A SharpDX.AngleSingle object.</param>\n            <returns>The negated value of the value parameter.</returns>\n        </member>\n        <member name=\"M:SharpDX.AngleSingle.op_Addition(SharpDX.AngleSingle,SharpDX.AngleSingle)\">\n            <summary>\n            Adds two SharpDX.AngleSingle objects and returns the result.\n            </summary>\n            <param name=\"left\">The first object to add.</param>\n            <param name=\"right\">The second object to add.</param>\n            <returns>The value of the two objects added together.</returns>\n        </member>\n        <member name=\"M:SharpDX.AngleSingle.op_Subtraction(SharpDX.AngleSingle,SharpDX.AngleSingle)\">\n            <summary>\n            Subtracts two SharpDX.AngleSingle objects and returns the result.\n            </summary>\n            <param name=\"left\">The first object to subtract</param>\n            <param name=\"right\">The second object to subtract.</param>\n            <returns>The value of the two objects subtracted.</returns>\n        </member>\n        <member name=\"M:SharpDX.AngleSingle.op_Multiply(SharpDX.AngleSingle,SharpDX.AngleSingle)\">\n            <summary>\n            Multiplies two SharpDX.AngleSingle objects and returns the result.\n            </summary>\n            <param name=\"left\">The first object to multiply.</param>\n            <param name=\"right\">The second object to multiply.</param>\n            <returns>The value of the two objects multiplied together.</returns>\n        </member>\n        <member name=\"M:SharpDX.AngleSingle.op_Division(SharpDX.AngleSingle,SharpDX.AngleSingle)\">\n            <summary>\n            Divides two SharpDX.AngleSingle objects and returns the result.\n            </summary>\n            <param name=\"left\">The numerator object.</param>\n            <param name=\"right\">The denominator object.</param>\n            <returns>The value of the two objects divided.</returns>\n        </member>\n        <member name=\"M:SharpDX.AngleSingle.CompareTo(System.Object)\">\n            <summary>\n            Compares this instance to a specified object and returns an integer that\n            indicates whether the value of this instance is less than, equal to, or greater\n            than the value of the specified object.\n            </summary>\n            <param name=\"other\">The object to compare.</param>\n            <returns>\n            A signed integer that indicates the relationship of the current instance\n            to the obj parameter. If the value is less than zero, the current instance\n            is less than the other. If the value is zero, the current instance is equal\n            to the other. If the value is greater than zero, the current instance is\n            greater than the other.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.AngleSingle.CompareTo(SharpDX.AngleSingle)\">\n            <summary>\n            Compares this instance to a second SharpDX.AngleSingle and returns\n            an integer that indicates whether the value of this instance is less than,\n            equal to, or greater than the value of the specified object.\n            </summary>\n            <param name=\"other\">The object to compare.</param>\n            <returns>\n            A signed integer that indicates the relationship of the current instance\n            to the obj parameter. If the value is less than zero, the current instance\n            is less than the other. If the value is zero, the current instance is equal\n            to the other. If the value is greater than zero, the current instance is\n            greater than the other.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.AngleSingle.Equals(SharpDX.AngleSingle)\">\n            <summary>\n            Returns a value that indicates whether the current instance and a specified\n            SharpDX.AngleSingle object have the same value.\n            </summary>\n            <param name=\"other\">The object to compare.</param>\n            <returns>\n            Returns true if this SharpDX.AngleSingle object and another have the same value;\n            otherwise, false.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.AngleSingle.ToString\">\n            <summary>\n            Returns a <see cref=\"T:System.String\"/> that represents this instance.\n            </summary>\n            <returns>\n            A <see cref=\"T:System.String\"/> that represents this instance.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.AngleSingle.ToString(System.String)\">\n            <summary>\n            Returns a <see cref=\"T:System.String\"/> that represents this instance.\n            </summary>\n            <param name=\"format\">The format.</param>\n            <returns>\n            A <see cref=\"T:System.String\"/> that represents this instance.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.AngleSingle.ToString(System.IFormatProvider)\">\n            <summary>\n            Returns a <see cref=\"T:System.String\"/> that represents this instance.\n            </summary>\n            <param name=\"formatProvider\">The format provider.</param>\n            <returns>\n            A <see cref=\"T:System.String\"/> that represents this instance.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.AngleSingle.ToString(System.String,System.IFormatProvider)\">\n            <summary>\n            Returns a <see cref=\"T:System.String\"/> that represents this instance.\n            </summary>\n            <param name=\"format\">The format.</param>\n            <param name=\"formatProvider\">The format provider.</param>\n            <returns>\n            A <see cref=\"T:System.String\"/> that represents this instance.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.AngleSingle.GetHashCode\">\n            <summary>\n            Returns a hash code for this SharpDX.AngleSingle instance.\n            </summary>\n            <returns>A 32-bit signed integer hash code.</returns>\n        </member>\n        <member name=\"M:SharpDX.AngleSingle.Equals(System.Object)\">\n            <summary>\n            Returns a value that indicates whether the current instance and a specified\n            object have the same value.\n            </summary>\n            <param name=\"obj\">The object to compare.</param>\n            <returns>\n            Returns true if the obj parameter is a SharpDX.AngleSingle object or a type\n            capable of implicit conversion to a SharpDX.AngleSingle value, and\n            its value is equal to the value of the current SharpDX.Angle\n            object; otherwise, false.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.AngleSingle.SharpDX#Serialization#IDataSerializable#Serialize(SharpDX.Serialization.BinarySerializer)\">\n            <inheritdoc/>\n        </member>\n        <member name=\"P:SharpDX.AngleSingle.Revolutions\">\n            <summary>\n            Gets or sets the total number of revolutions this SharpDX.AngleSingle represents.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.AngleSingle.Degrees\">\n            <summary>\n            Gets or sets the total number of degrees this SharpDX.AngleSingle represents.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.AngleSingle.Minutes\">\n            <summary>\n            Gets or sets the minutes component of the degrees this SharpDX.AngleSingle represents.\n            When setting the minutes, if the value is in the range (-60, 60) the whole degrees are\n            not changed; otherwise, the whole degrees may be changed. Fractional values may set\n            the seconds component.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.AngleSingle.Seconds\">\n            <summary>\n            Gets or sets the seconds of the degrees this SharpDX.AngleSingle represents.\n            When setting te seconds, if the value is in the range (-60, 60) the whole minutes\n            or whole degrees are not changed; otherwise, the whole minutes or whole degrees\n            may be changed.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.AngleSingle.Radians\">\n            <summary>\n            Gets or sets the total number of radians this SharpDX.AngleSingle represents.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.AngleSingle.Milliradians\">\n            <summary>\n            Gets or sets the total number of milliradians this SharpDX.AngleSingle represents.\n            One milliradian is equal to 1/(2000π).\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.AngleSingle.Gradians\">\n            <summary>\n            Gets or sets the total number of gradians this SharpDX.AngleSingle represents.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.AngleSingle.IsRight\">\n            <summary>\n            Gets a System.Boolean that determines whether this SharpDX.Angle\n            is a right angle (i.e. 90° or π/2).\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.AngleSingle.IsStraight\">\n            <summary>\n            Gets a System.Boolean that determines whether this SharpDX.Angle\n            is a straight angle (i.e. 180° or π).\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.AngleSingle.IsFullRotation\">\n            <summary>\n            Gets a System.Boolean that determines whether this SharpDX.Angle\n            is a full rotation angle (i.e. 360° or 2π).\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.AngleSingle.IsOblique\">\n            <summary>\n            Gets a System.Boolean that determines whether this SharpDX.Angle\n            is an oblique angle (i.e. is not 90° or a multiple of 90°).\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.AngleSingle.IsAcute\">\n            <summary>\n            Gets a System.Boolean that determines whether this SharpDX.Angle\n            is an acute angle (i.e. less than 90° but greater than 0°).\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.AngleSingle.IsObtuse\">\n            <summary>\n            Gets a System.Boolean that determines whether this SharpDX.Angle\n            is an obtuse angle (i.e. greater than 90° but less than 180°).\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.AngleSingle.IsReflex\">\n            <summary>\n            Gets a System.Boolean that determines whether this SharpDX.Angle\n            is a reflex angle (i.e. greater than 180° but less than 360°).\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.AngleSingle.Complement\">\n            <summary>\n            Gets a SharpDX.AngleSingle instance that complements this angle (i.e. the two angles add to 90°).\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.AngleSingle.Supplement\">\n            <summary>\n            Gets a SharpDX.AngleSingle instance that supplements this angle (i.e. the two angles add to 180°).\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.AngleSingle.ZeroAngle\">\n            <summary>\n            Gets a new SharpDX.AngleSingle instance that represents the zero angle (i.e. 0°).\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.AngleSingle.RightAngle\">\n            <summary>\n            Gets a new SharpDX.AngleSingle instance that represents the right angle (i.e. 90° or π/2).\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.AngleSingle.StraightAngle\">\n            <summary>\n            Gets a new SharpDX.AngleSingle instance that represents the straight angle (i.e. 180° or π).\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.AngleSingle.FullRotationAngle\">\n            <summary>\n            Gets a new SharpDX.AngleSingle instance that represents the full rotation angle (i.e. 360° or 2π).\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Bool\">\n            <summary>\n            A boolean value stored on 4 bytes (instead of 1 in .NET).\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Bool.#ctor(System.Boolean)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Bool\"/> class.\n            </summary>\n            <param name=\"boolValue\">if set to <c>true</c> [bool value].</param>\n        </member>\n        <member name=\"M:SharpDX.Bool.Equals(SharpDX.Bool)\">\n            <summary>\n            Indicates whether this instance and a specified object are equal.\n            </summary>\n            <param name=\"other\">The other.</param>\n            <returns>true if <paramref name=\"other\" /> and this instance are the same type and represent the same value; otherwise, false.</returns>\n        </member>\n        <member name=\"M:SharpDX.Bool.op_Equality(SharpDX.Bool,SharpDX.Bool)\">\n            <summary>\n            Implements the ==.\n            </summary>\n            <param name=\"left\">The left.</param>\n            <param name=\"right\">The right.</param>\n            <returns>The result of the operator.</returns>\n        </member>\n        <member name=\"M:SharpDX.Bool.op_Inequality(SharpDX.Bool,SharpDX.Bool)\">\n            <summary>\n            Implements the !=.\n            </summary>\n            <param name=\"left\">The left.</param>\n            <param name=\"right\">The right.</param>\n            <returns>The result of the operator.</returns>\n        </member>\n        <member name=\"M:SharpDX.Bool.op_Implicit(SharpDX.Bool)~System.Boolean\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:SharpDX.Bool\"/> to <see cref=\"T:System.Boolean\"/>.\n            </summary>\n            <param name=\"booleanValue\">The value.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"M:SharpDX.Bool.op_Implicit(System.Boolean)~SharpDX.Bool\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.Boolean\"/> to <see cref=\"T:SharpDX.Bool\"/>.\n            </summary>\n            <param name=\"boolValue\">The value.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"M:SharpDX.Bool.SharpDX#Serialization#IDataSerializable#Serialize(SharpDX.Serialization.BinarySerializer)\">\n            <inheritdoc/>\n        </member>\n        <member name=\"T:SharpDX.BoundingBox\">\n            <summary>\n            Represents an axis-aligned bounding box in three dimensional space.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.BoundingBox.Minimum\">\n            <summary>\n            The minimum point of the box.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.BoundingBox.Maximum\">\n            <summary>\n            The maximum point of the box.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.BoundingBox.#ctor(SharpDX.Vector3,SharpDX.Vector3)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.BoundingBox\"/> struct.\n            </summary>\n            <param name=\"minimum\">The minimum vertex of the bounding box.</param>\n            <param name=\"maximum\">The maximum vertex of the bounding box.</param>\n        </member>\n        <member name=\"M:SharpDX.BoundingBox.GetCorners\">\n            <summary>\n            Retrieves the eight corners of the bounding box.\n            </summary>\n            <returns>An array of points representing the eight corners of the bounding box.</returns>\n        </member>\n        <member name=\"M:SharpDX.BoundingBox.GetCorners(SharpDX.Vector3[])\">\n            <summary>\n            Retrieves the eight corners of the bounding box.\n            </summary>\n            <returns>An array of points representing the eight corners of the bounding box.</returns>\n        </member>\n        <member name=\"M:SharpDX.BoundingBox.Intersects(SharpDX.Ray@)\">\n            <summary>\n            Determines if there is an intersection between the current object and a <see cref=\"T:SharpDX.Ray\"/>.\n            </summary>\n            <param name=\"ray\">The ray to test.</param>\n            <returns>Whether the two objects intersected.</returns>\n        </member>\n        <member name=\"M:SharpDX.BoundingBox.Intersects(SharpDX.Ray@,System.Single@)\">\n            <summary>\n            Determines if there is an intersection between the current object and a <see cref=\"T:SharpDX.Ray\"/>.\n            </summary>\n            <param name=\"ray\">The ray to test.</param>\n            <param name=\"distance\">When the method completes, contains the distance of the intersection,\n            or 0 if there was no intersection.</param>\n            <returns>Whether the two objects intersected.</returns>\n        </member>\n        <member name=\"M:SharpDX.BoundingBox.Intersects(SharpDX.Ray@,SharpDX.Vector3@)\">\n            <summary>\n            Determines if there is an intersection between the current object and a <see cref=\"T:SharpDX.Ray\"/>.\n            </summary>\n            <param name=\"ray\">The ray to test.</param>\n            <param name=\"point\">When the method completes, contains the point of intersection,\n            or <see cref=\"F:SharpDX.Vector3.Zero\"/> if there was no intersection.</param>\n            <returns>Whether the two objects intersected.</returns>\n        </member>\n        <member name=\"M:SharpDX.BoundingBox.Intersects(SharpDX.Plane@)\">\n            <summary>\n            Determines if there is an intersection between the current object and a <see cref=\"T:SharpDX.Plane\"/>.\n            </summary>\n            <param name=\"plane\">The plane to test.</param>\n            <returns>Whether the two objects intersected.</returns>\n        </member>\n        <member name=\"M:SharpDX.BoundingBox.Intersects(SharpDX.Plane)\">\n            <summary>\n            Determines if there is an intersection between the current object and a <see cref=\"T:SharpDX.Plane\"/>.\n            </summary>\n            <param name=\"plane\">The plane to test.</param>\n            <returns>Whether the two objects intersected.</returns>\n        </member>\n        <member name=\"M:SharpDX.BoundingBox.Intersects(SharpDX.BoundingBox@)\">\n            <summary>\n            Determines if there is an intersection between the current object and a <see cref=\"T:SharpDX.BoundingBox\"/>.\n            </summary>\n            <param name=\"box\">The box to test.</param>\n            <returns>Whether the two objects intersected.</returns>\n        </member>\n        <member name=\"M:SharpDX.BoundingBox.Intersects(SharpDX.BoundingBox)\">\n            <summary>\n            Determines if there is an intersection between the current object and a <see cref=\"T:SharpDX.BoundingBox\"/>.\n            </summary>\n            <param name=\"box\">The box to test.</param>\n            <returns>Whether the two objects intersected.</returns>\n        </member>\n        <member name=\"M:SharpDX.BoundingBox.Intersects(SharpDX.BoundingSphere@)\">\n            <summary>\n            Determines if there is an intersection between the current object and a <see cref=\"T:SharpDX.BoundingSphere\"/>.\n            </summary>\n            <param name=\"sphere\">The sphere to test.</param>\n            <returns>Whether the two objects intersected.</returns>\n        </member>\n        <member name=\"M:SharpDX.BoundingBox.Intersects(SharpDX.BoundingSphere)\">\n            <summary>\n            Determines if there is an intersection between the current object and a <see cref=\"T:SharpDX.BoundingSphere\"/>.\n            </summary>\n            <param name=\"sphere\">The sphere to test.</param>\n            <returns>Whether the two objects intersected.</returns>\n        </member>\n        <member name=\"M:SharpDX.BoundingBox.Contains(SharpDX.Vector3@)\">\n            <summary>\n            Determines whether the current objects contains a point.\n            </summary>\n            <param name=\"point\">The point to test.</param>\n            <returns>The type of containment the two objects have.</returns>\n        </member>\n        <member name=\"M:SharpDX.BoundingBox.Contains(SharpDX.Vector3)\">\n            <summary>\n            Determines whether the current objects contains a point.\n            </summary>\n            <param name=\"point\">The point to test.</param>\n            <returns>The type of containment the two objects have.</returns>\n        </member>\n        <member name=\"M:SharpDX.BoundingBox.Contains(SharpDX.BoundingBox@)\">\n            <summary>\n            Determines whether the current objects contains a <see cref=\"T:SharpDX.BoundingBox\"/>.\n            </summary>\n            <param name=\"box\">The box to test.</param>\n            <returns>The type of containment the two objects have.</returns>\n        </member>\n        <member name=\"M:SharpDX.BoundingBox.Contains(SharpDX.BoundingBox)\">\n            <summary>\n            Determines whether the current objects contains a <see cref=\"T:SharpDX.BoundingBox\"/>.\n            </summary>\n            <param name=\"box\">The box to test.</param>\n            <returns>The type of containment the two objects have.</returns>\n        </member>\n        <member name=\"M:SharpDX.BoundingBox.Contains(SharpDX.BoundingSphere@)\">\n            <summary>\n            Determines whether the current objects contains a <see cref=\"T:SharpDX.BoundingSphere\"/>.\n            </summary>\n            <param name=\"sphere\">The sphere to test.</param>\n            <returns>The type of containment the two objects have.</returns>\n        </member>\n        <member name=\"M:SharpDX.BoundingBox.Contains(SharpDX.BoundingSphere)\">\n            <summary>\n            Determines whether the current objects contains a <see cref=\"T:SharpDX.BoundingSphere\"/>.\n            </summary>\n            <param name=\"sphere\">The sphere to test.</param>\n            <returns>The type of containment the two objects have.</returns>\n        </member>\n        <member name=\"M:SharpDX.BoundingBox.FromPoints(SharpDX.Vector3[],SharpDX.BoundingBox@)\">\n            <summary>\n            Constructs a <see cref=\"T:SharpDX.BoundingBox\"/> that fully contains the given points.\n            </summary>\n            <param name=\"points\">The points that will be contained by the box.</param>\n            <param name=\"result\">When the method completes, contains the newly constructed bounding box.</param>\n            <exception cref=\"T:System.ArgumentNullException\">Thrown when <paramref name=\"points\"/> is <c>null</c>.</exception>\n        </member>\n        <member name=\"M:SharpDX.BoundingBox.FromPoints(SharpDX.Vector3[])\">\n            <summary>\n            Constructs a <see cref=\"T:SharpDX.BoundingBox\"/> that fully contains the given points.\n            </summary>\n            <param name=\"points\">The points that will be contained by the box.</param>\n            <returns>The newly constructed bounding box.</returns>\n            <exception cref=\"T:System.ArgumentNullException\">Thrown when <paramref name=\"points\"/> is <c>null</c>.</exception>\n        </member>\n        <member name=\"M:SharpDX.BoundingBox.FromSphere(SharpDX.BoundingSphere@,SharpDX.BoundingBox@)\">\n            <summary>\n            Constructs a <see cref=\"T:SharpDX.BoundingBox\"/> from a given sphere.\n            </summary>\n            <param name=\"sphere\">The sphere that will designate the extents of the box.</param>\n            <param name=\"result\">When the method completes, contains the newly constructed bounding box.</param>\n        </member>\n        <member name=\"M:SharpDX.BoundingBox.FromSphere(SharpDX.BoundingSphere)\">\n            <summary>\n            Constructs a <see cref=\"T:SharpDX.BoundingBox\"/> from a given sphere.\n            </summary>\n            <param name=\"sphere\">The sphere that will designate the extents of the box.</param>\n            <returns>The newly constructed bounding box.</returns>\n        </member>\n        <member name=\"M:SharpDX.BoundingBox.Merge(SharpDX.BoundingBox@,SharpDX.BoundingBox@,SharpDX.BoundingBox@)\">\n            <summary>\n            Constructs a <see cref=\"T:SharpDX.BoundingBox\"/> that is as large as the total combined area of the two specified boxes.\n            </summary>\n            <param name=\"value1\">The first box to merge.</param>\n            <param name=\"value2\">The second box to merge.</param>\n            <param name=\"result\">When the method completes, contains the newly constructed bounding box.</param>\n        </member>\n        <member name=\"M:SharpDX.BoundingBox.Merge(SharpDX.BoundingBox,SharpDX.BoundingBox)\">\n            <summary>\n            Constructs a <see cref=\"T:SharpDX.BoundingBox\"/> that is as large as the total combined area of the two specified boxes.\n            </summary>\n            <param name=\"value1\">The first box to merge.</param>\n            <param name=\"value2\">The second box to merge.</param>\n            <returns>The newly constructed bounding box.</returns>\n        </member>\n        <member name=\"M:SharpDX.BoundingBox.op_Equality(SharpDX.BoundingBox,SharpDX.BoundingBox)\">\n            <summary>\n            Tests for equality between two objects.\n            </summary>\n            <param name=\"left\">The first value to compare.</param>\n            <param name=\"right\">The second value to compare.</param>\n            <returns><c>true</c> if <paramref name=\"left\"/> has the same value as <paramref name=\"right\"/>; otherwise, <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.BoundingBox.op_Inequality(SharpDX.BoundingBox,SharpDX.BoundingBox)\">\n            <summary>\n            Tests for inequality between two objects.\n            </summary>\n            <param name=\"left\">The first value to compare.</param>\n            <param name=\"right\">The second value to compare.</param>\n            <returns><c>true</c> if <paramref name=\"left\"/> has a different value than <paramref name=\"right\"/>; otherwise, <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.BoundingBox.ToString\">\n            <summary>\n            Returns a <see cref=\"T:System.String\"/> that represents this instance.\n            </summary>\n            <returns>\n            A <see cref=\"T:System.String\"/> that represents this instance.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.BoundingBox.ToString(System.String)\">\n            <summary>\n            Returns a <see cref=\"T:System.String\"/> that represents this instance.\n            </summary>\n            <param name=\"format\">The format.</param>\n            <returns>\n            A <see cref=\"T:System.String\"/> that represents this instance.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.BoundingBox.ToString(System.IFormatProvider)\">\n            <summary>\n            Returns a <see cref=\"T:System.String\"/> that represents this instance.\n            </summary>\n            <param name=\"formatProvider\">The format provider.</param>\n            <returns>\n            A <see cref=\"T:System.String\"/> that represents this instance.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.BoundingBox.ToString(System.String,System.IFormatProvider)\">\n            <summary>\n            Returns a <see cref=\"T:System.String\"/> that represents this instance.\n            </summary>\n            <param name=\"format\">The format.</param>\n            <param name=\"formatProvider\">The format provider.</param>\n            <returns>\n            A <see cref=\"T:System.String\"/> that represents this instance.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.BoundingBox.GetHashCode\">\n            <summary>\n            Returns a hash code for this instance.\n            </summary>\n            <returns>\n            A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. \n            </returns>\n        </member>\n        <member name=\"M:SharpDX.BoundingBox.Equals(SharpDX.BoundingBox)\">\n            <summary>\n            Determines whether the specified <see cref=\"T:SharpDX.Vector4\"/> is equal to this instance.\n            </summary>\n            <param name=\"value\">The <see cref=\"T:SharpDX.Vector4\"/> to compare with this instance.</param>\n            <returns>\n            <c>true</c> if the specified <see cref=\"T:SharpDX.Vector4\"/> is equal to this instance; otherwise, <c>false</c>.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.BoundingBox.Equals(System.Object)\">\n            <summary>\n            Determines whether the specified <see cref=\"T:System.Object\"/> is equal to this instance.\n            </summary>\n            <param name=\"value\">The <see cref=\"T:System.Object\"/> to compare with this instance.</param>\n            <returns>\n            <c>true</c> if the specified <see cref=\"T:System.Object\"/> is equal to this instance; otherwise, <c>false</c>.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.BoundingBox.SharpDX#Serialization#IDataSerializable#Serialize(SharpDX.Serialization.BinarySerializer)\">\n            <inheritdoc/>\n        </member>\n        <member name=\"T:SharpDX.BoundingFrustum\">\n            <summary>\n            Defines a frustum which can be used in frustum culling, zoom to Extents (zoom to fit) operations, \n            (matrix, frustum, camera) interchange, and many kind of intersection testing.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.BoundingFrustum.#ctor(SharpDX.Matrix)\">\n            <summary>\n            Creates a new instance of BoundingFrustum.\n            </summary>\n            <param name=\"matrix\">Combined matrix that usually takes view × projection matrix.</param>\n        </member>\n        <member name=\"M:SharpDX.BoundingFrustum.Equals(SharpDX.BoundingFrustum)\">\n            <summary>\n            Determines whether the specified <see cref=\"T:SharpDX.BoundingFrustum\"/> is equal to this instance.\n            </summary>\n            <param name=\"other\">The <see cref=\"T:SharpDX.BoundingFrustum\"/> to compare with this instance.</param>\n            <returns>\n              <c>true</c> if the specified <see cref=\"T:SharpDX.BoundingFrustum\"/> is equal to this instance; otherwise, <c>false</c>.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.BoundingFrustum.Equals(System.Object)\">\n            <summary>\n            Determines whether the specified <see cref=\"T:System.Object\"/> is equal to this instance.\n            </summary>\n            <param name=\"obj\">The <see cref=\"T:System.Object\"/> to compare with this instance.</param>\n            <returns>\n              <c>true</c> if the specified <see cref=\"T:System.Object\"/> is equal to this instance; otherwise, <c>false</c>.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.BoundingFrustum.op_Equality(SharpDX.BoundingFrustum,SharpDX.BoundingFrustum)\">\n            <summary>\n            Implements the operator ==.\n            </summary>\n            <param name=\"left\">The left.</param>\n            <param name=\"right\">The right.</param>\n            <returns>\n            The result of the operator.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.BoundingFrustum.op_Inequality(SharpDX.BoundingFrustum,SharpDX.BoundingFrustum)\">\n            <summary>\n            Implements the operator !=.\n            </summary>\n            <param name=\"left\">The left.</param>\n            <param name=\"right\">The right.</param>\n            <returns>\n            The result of the operator.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.BoundingFrustum.GetPlane(System.Int32)\">\n            <summary>\n            Returns one of the 6 planes related to this frustum.\n            </summary>\n            <param name=\"index\">Plane index where 0 fro Left, 1 for Right, 2 for Top, 3 for Bottom, 4 for Near, 5 for Far</param>\n            <returns></returns>\n        </member>\n        <member name=\"M:SharpDX.BoundingFrustum.FromCamera(SharpDX.Vector3,SharpDX.Vector3,SharpDX.Vector3,System.Single,System.Single,System.Single,System.Single)\">\n            <summary>\n            Creates a new frustum relaying on perspective camera parameters\n            </summary>\n            <param name=\"cameraPos\">The camera pos.</param>\n            <param name=\"lookDir\">The look dir.</param>\n            <param name=\"upDir\">Up dir.</param>\n            <param name=\"fov\">The fov.</param>\n            <param name=\"znear\">The znear.</param>\n            <param name=\"zfar\">The zfar.</param>\n            <param name=\"aspect\">The aspect.</param>\n            <returns>The bouding frustum calculated from perspective camera</returns>\n        </member>\n        <member name=\"M:SharpDX.BoundingFrustum.FromCamera(SharpDX.FrustumCameraParams)\">\n            <summary>\n            Creates a new frustum relaying on perspective camera parameters\n            </summary>\n            <param name=\"cameraParams\">The camera params.</param>\n            <returns>The bouding frustum from camera params</returns>\n        </member>\n        <member name=\"M:SharpDX.BoundingFrustum.GetCorners\">\n            <summary>\n            Returns the 8 corners of the frustum, element0 is Near1 (near right down corner)\n            , element1 is Near2 (near right top corner)\n            , element2 is Near3 (near Left top corner)\n            , element3 is Near4 (near Left down corner)\n            , element4 is Far1 (far right down corner)\n            , element5 is Far2 (far right top corner)\n            , element6 is Far3 (far left top corner)\n            , element7 is Far4 (far left down corner)\n            </summary>\n            <returns>The 8 corners of the frustum</returns>\n        </member>\n        <member name=\"M:SharpDX.BoundingFrustum.GetCorners(SharpDX.Vector3[])\">\n            <summary>\n            Returns the 8 corners of the frustum, element0 is Near1 (near right down corner)\n            , element1 is Near2 (near right top corner)\n            , element2 is Near3 (near Left top corner)\n            , element3 is Near4 (near Left down corner)\n            , element4 is Far1 (far right down corner)\n            , element5 is Far2 (far right top corner)\n            , element6 is Far3 (far left top corner)\n            , element7 is Far4 (far left down corner)\n            </summary>\n            <returns>The 8 corners of the frustum</returns>\n        </member>\n        <member name=\"M:SharpDX.BoundingFrustum.GetCameraParams\">\n            <summary>\n            Extracts perspective camera parameters from the frustum, dosn't work with orthographic frustums.\n            </summary>\n            <returns>Perspective camera parameters from the frustum</returns>\n        </member>\n        <member name=\"M:SharpDX.BoundingFrustum.Contains(SharpDX.Vector3@)\">\n            <summary>\n            Checks whether a point lay inside, intersects or lay outside the frustum.\n            </summary>\n            <param name=\"point\">The point.</param>\n            <returns>Type of the containment</returns>\n        </member>\n        <member name=\"M:SharpDX.BoundingFrustum.Contains(SharpDX.Vector3)\">\n            <summary>\n            Checks whether a point lay inside, intersects or lay outside the frustum.\n            </summary>\n            <param name=\"point\">The point.</param>\n            <returns>Type of the containment</returns>\n        </member>\n        <member name=\"M:SharpDX.BoundingFrustum.Contains(SharpDX.Vector3[])\">\n            <summary>\n            Checks whether a group of points lay totally inside the frustum (Contains), or lay partially inside the frustum (Intersects), or lay outside the frustum (Disjoint).\n            </summary>\n            <param name=\"points\">The points.</param>\n            <returns>Type of the containment</returns>\n        </member>\n        <member name=\"M:SharpDX.BoundingFrustum.Contains(SharpDX.Vector3[],SharpDX.ContainmentType@)\">\n            <summary>\n            Checks whether a group of points lay totally inside the frsutrum (Contains), or lay partially inside the frustum (Intersects), or lay outside the frustum (Disjoint).\n            </summary>\n            <param name=\"points\">The points.</param>\n            <param name=\"result\">Type of the containment.</param>\n        </member>\n        <member name=\"M:SharpDX.BoundingFrustum.Contains(SharpDX.BoundingBox@)\">\n            <summary>\n            Determines the intersection relationship between the frustum and a bounding box.\n            </summary>\n            <param name=\"box\">The box.</param>\n            <returns>Type of the containment</returns>\n        </member>\n        <member name=\"M:SharpDX.BoundingFrustum.Contains(SharpDX.BoundingBox)\">\n            <summary>\n            Determines the intersection relationship between the frustum and a bounding box.\n            </summary>\n            <param name=\"box\">The box.</param>\n            <returns>Type of the containment</returns>\n        </member>\n        <member name=\"M:SharpDX.BoundingFrustum.Contains(SharpDX.BoundingBox@,SharpDX.ContainmentType@)\">\n            <summary>\n            Determines the intersection relationship between the frustum and a bounding box.\n            </summary>\n            <param name=\"box\">The box.</param>\n            <param name=\"result\">Type of the containment.</param>\n        </member>\n        <member name=\"M:SharpDX.BoundingFrustum.Contains(SharpDX.BoundingSphere@)\">\n            <summary>\n            Determines the intersection relationship between the frustum and a bounding sphere.\n            </summary>\n            <param name=\"sphere\">The sphere.</param>\n            <returns>Type of the containment</returns>\n        </member>\n        <member name=\"M:SharpDX.BoundingFrustum.Contains(SharpDX.BoundingSphere)\">\n            <summary>\n            Determines the intersection relationship between the frustum and a bounding sphere.\n            </summary>\n            <param name=\"sphere\">The sphere.</param>\n            <returns>Type of the containment</returns>\n        </member>\n        <member name=\"M:SharpDX.BoundingFrustum.Contains(SharpDX.BoundingSphere@,SharpDX.ContainmentType@)\">\n            <summary>\n            Determines the intersection relationship between the frustum and a bounding sphere.\n            </summary>\n            <param name=\"sphere\">The sphere.</param>\n            <param name=\"result\">Type of the containment.</param>\n        </member>\n        <member name=\"M:SharpDX.BoundingFrustum.Contains(SharpDX.BoundingFrustum@)\">\n            <summary>\n            Determines the intersection relationship between the frustum and another bounding frustum.\n            </summary>\n            <param name=\"frustum\">The frustum.</param>\n            <returns>Type of the containment</returns>\n        </member>\n        <member name=\"M:SharpDX.BoundingFrustum.Contains(SharpDX.BoundingFrustum)\">\n            <summary>\n            Determines the intersection relationship between the frustum and another bounding frustum.\n            </summary>\n            <param name=\"frustum\">The frustum.</param>\n            <returns>Type of the containment</returns>\n        </member>\n        <member name=\"M:SharpDX.BoundingFrustum.Contains(SharpDX.BoundingFrustum@,System.Boolean@)\">\n            <summary>\n            Determines the intersection relationship between the frustum and another bounding frustum.\n            </summary>\n            <param name=\"frustum\">The frustum.</param>\n            <param name=\"result\">Type of the containment.</param>\n        </member>\n        <member name=\"M:SharpDX.BoundingFrustum.Intersects(SharpDX.BoundingSphere@)\">\n            <summary>\n            Checks whether the current BoundingFrustum intersects a BoundingSphere.\n            </summary>\n            <param name=\"sphere\">The sphere.</param>\n            <returns>Type of the containment</returns>\n        </member>\n        <member name=\"M:SharpDX.BoundingFrustum.Intersects(SharpDX.BoundingSphere@,System.Boolean@)\">\n            <summary>\n            Checks whether the current BoundingFrustum intersects a BoundingSphere.\n            </summary>\n            <param name=\"sphere\">The sphere.</param>\n            <param name=\"result\">Set to <c>true</c> if the current BoundingFrustum intersects a BoundingSphere.</param>\n        </member>\n        <member name=\"M:SharpDX.BoundingFrustum.Intersects(SharpDX.BoundingBox@)\">\n            <summary>\n            Checks whether the current BoundingFrustum intersects a BoundingBox.\n            </summary>\n            <param name=\"box\">The box.</param>\n            <returns><c>true</c> if the current BoundingFrustum intersects a BoundingSphere.</returns>\n        </member>\n        <member name=\"M:SharpDX.BoundingFrustum.Intersects(SharpDX.BoundingBox@,System.Boolean@)\">\n            <summary>\n            Checks whether the current BoundingFrustum intersects a BoundingBox.\n            </summary>\n            <param name=\"box\">The box.</param>\n            <param name=\"result\"><c>true</c> if the current BoundingFrustum intersects a BoundingSphere.</param>\n        </member>\n        <member name=\"M:SharpDX.BoundingFrustum.Intersects(SharpDX.Plane@)\">\n            <summary>\n            Checks whether the current BoundingFrustum intersects the specified Plane.\n            </summary>\n            <param name=\"plane\">The plane.</param>\n            <returns>Plane intersection type.</returns>\n        </member>\n        <member name=\"M:SharpDX.BoundingFrustum.Intersects(SharpDX.Plane@,SharpDX.PlaneIntersectionType@)\">\n            <summary>\n            Checks whether the current BoundingFrustum intersects the specified Plane.\n            </summary>\n            <param name=\"plane\">The plane.</param>\n            <param name=\"result\">Plane intersection type.</param>\n        </member>\n        <member name=\"M:SharpDX.BoundingFrustum.GetWidthAtDepth(System.Single)\">\n            <summary>\n            Get the width of the frustum at specified depth.\n            </summary>\n            <param name=\"depth\">the depth at which to calculate frustum width.</param>\n            <returns>With of the frustum at the specified depth</returns>\n        </member>\n        <member name=\"M:SharpDX.BoundingFrustum.GetHeightAtDepth(System.Single)\">\n            <summary>\n            Get the height of the frustum at specified depth.\n            </summary>\n            <param name=\"depth\">the depth at which to calculate frustum height.</param>\n            <returns>Height of the frustum at the specified depth</returns>\n        </member>\n        <member name=\"M:SharpDX.BoundingFrustum.Intersects(SharpDX.Ray@)\">\n            <summary>\n            Checks whether the current BoundingFrustum intersects the specified Ray.\n            </summary>\n            <param name=\"ray\">The ray.</param>\n            <returns><c>true</c> if the current BoundingFrustum intersects the specified Ray.</returns>\n        </member>\n        <member name=\"M:SharpDX.BoundingFrustum.Intersects(SharpDX.Ray@,System.Nullable{System.Single}@,System.Nullable{System.Single}@)\">\n            <summary>\n            Checks whether the current BoundingFrustum intersects the specified Ray.\n            </summary>\n            <param name=\"ray\">The Ray to check for intersection with.</param>\n            <param name=\"inDistance\">The distance at which the ray enters the frustum if there is an intersection and the ray starts outside the frustum.</param>\n            <param name=\"outDistance\">The distance at which the ray exits the frustum if there is an intersection.</param>\n            <returns><c>true</c> if the current BoundingFrustum intersects the specified Ray.</returns>\n        </member>\n        <member name=\"M:SharpDX.BoundingFrustum.GetZoomToExtentsShiftDistance(SharpDX.Vector3[])\">\n            <summary>\n            Get the distance which when added to camera position along the lookat direction will do the effect of zoom to extents (zoom to fit) operation,\n            so all the passed points will fit in the current view.\n            if the returned value is poistive, the camera will move toward the lookat direction (ZoomIn).\n            if the returned value is negative, the camera will move in the revers direction of the lookat direction (ZoomOut).\n            </summary>\n            <param name=\"points\">The points.</param>\n            <returns>The zoom to fit distance</returns>\n        </member>\n        <member name=\"M:SharpDX.BoundingFrustum.GetZoomToExtentsShiftDistance(SharpDX.BoundingBox@)\">\n            <summary>\n            Get the distance which when added to camera position along the lookat direction will do the effect of zoom to extents (zoom to fit) operation,\n            so all the passed points will fit in the current view.\n            if the returned value is poistive, the camera will move toward the lookat direction (ZoomIn).\n            if the returned value is negative, the camera will move in the revers direction of the lookat direction (ZoomOut).\n            </summary>\n            <param name=\"boundingBox\">The bounding box.</param>\n            <returns>The zoom to fit distance</returns>\n        </member>\n        <member name=\"M:SharpDX.BoundingFrustum.GetZoomToExtentsShiftVector(SharpDX.Vector3[])\">\n            <summary>\n            Get the vector shift which when added to camera position will do the effect of zoom to extents (zoom to fit) operation,\n            so all the passed points will fit in the current view.\n            </summary>\n            <param name=\"points\">The points.</param>\n            <returns>The zoom to fit vector</returns>\n        </member>\n        <member name=\"M:SharpDX.BoundingFrustum.GetZoomToExtentsShiftVector(SharpDX.BoundingBox@)\">\n            <summary>\n            Get the vector shift which when added to camera position will do the effect of zoom to extents (zoom to fit) operation,\n            so all the passed points will fit in the current view.\n            </summary>\n            <param name=\"boundingBox\">The bounding box.</param>\n            <returns>The zoom to fit vector</returns>\n        </member>\n        <member name=\"M:SharpDX.BoundingFrustum.SharpDX#Serialization#IDataSerializable#Serialize(SharpDX.Serialization.BinarySerializer)\">\n            <inheritdoc/>\n        </member>\n        <member name=\"P:SharpDX.BoundingFrustum.Matrix\">\n            <summary>\n            Gets or sets the Matrix that describes this bounding frustum.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.BoundingFrustum.Near\">\n            <summary>\n            Gets the near plane of the BoundingFrustum.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.BoundingFrustum.Far\">\n            <summary>\n            Gets the far plane of the BoundingFrustum.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.BoundingFrustum.Left\">\n            <summary>\n            Gets the left plane of the BoundingFrustum.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.BoundingFrustum.Right\">\n            <summary>\n            Gets the right plane of the BoundingFrustum.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.BoundingFrustum.Top\">\n            <summary>\n            Gets the top plane of the BoundingFrustum.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.BoundingFrustum.Bottom\">\n            <summary>\n            Gets the bottom plane of the BoundingFrustum.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.BoundingFrustum.IsOrthographic\">\n            <summary>\n            Indicate whether the current BoundingFrustrum is Orthographic.\n            </summary>\n            <value>\n            \t<c>true</c> if the current BoundingFrustrum is Orthographic; otherwise, <c>false</c>.\n            </value>\n        </member>\n        <member name=\"T:SharpDX.BoundingSphere\">\n            <summary>\n            Represents a bounding sphere in three dimensional space.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.BoundingSphere.Center\">\n            <summary>\n            The center of the sphere in three dimensional space.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.BoundingSphere.Radius\">\n            <summary>\n            The radious of the sphere.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.BoundingSphere.#ctor(SharpDX.Vector3,System.Single)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.BoundingBox\"/> struct.\n            </summary>\n            <param name=\"center\">The center of the sphere in three dimensional space.</param>\n            <param name=\"radius\">The radius of the sphere.</param>\n        </member>\n        <member name=\"M:SharpDX.BoundingSphere.Intersects(SharpDX.Ray@)\">\n            <summary>\n            Determines if there is an intersection between the current object and a <see cref=\"T:SharpDX.Ray\"/>.\n            </summary>\n            <param name=\"ray\">The ray to test.</param>\n            <returns>Whether the two objects intersected.</returns>\n        </member>\n        <member name=\"M:SharpDX.BoundingSphere.Intersects(SharpDX.Ray@,System.Single@)\">\n            <summary>\n            Determines if there is an intersection between the current object and a <see cref=\"T:SharpDX.Ray\"/>.\n            </summary>\n            <param name=\"ray\">The ray to test.</param>\n            <param name=\"distance\">When the method completes, contains the distance of the intersection,\n            or 0 if there was no intersection.</param>\n            <returns>Whether the two objects intersected.</returns>\n        </member>\n        <member name=\"M:SharpDX.BoundingSphere.Intersects(SharpDX.Ray@,SharpDX.Vector3@)\">\n            <summary>\n            Determines if there is an intersection between the current object and a <see cref=\"T:SharpDX.Ray\"/>.\n            </summary>\n            <param name=\"ray\">The ray to test.</param>\n            <param name=\"point\">When the method completes, contains the point of intersection,\n            or <see cref=\"F:SharpDX.Vector3.Zero\"/> if there was no intersection.</param>\n            <returns>Whether the two objects intersected.</returns>\n        </member>\n        <member name=\"M:SharpDX.BoundingSphere.Intersects(SharpDX.Plane@)\">\n            <summary>\n            Determines if there is an intersection between the current object and a <see cref=\"T:SharpDX.Plane\"/>.\n            </summary>\n            <param name=\"plane\">The plane to test.</param>\n            <returns>Whether the two objects intersected.</returns>\n        </member>\n        <member name=\"M:SharpDX.BoundingSphere.Intersects(SharpDX.Vector3@,SharpDX.Vector3@,SharpDX.Vector3@)\">\n            <summary>\n            Determines if there is an intersection between the current object and a triangle.\n            </summary>\n            <param name=\"vertex1\">The first vertex of the triangle to test.</param>\n            <param name=\"vertex2\">The second vertex of the triagnle to test.</param>\n            <param name=\"vertex3\">The third vertex of the triangle to test.</param>\n            <returns>Whether the two objects intersected.</returns>\n        </member>\n        <member name=\"M:SharpDX.BoundingSphere.Intersects(SharpDX.BoundingBox@)\">\n            <summary>\n            Determines if there is an intersection between the current object and a <see cref=\"T:SharpDX.BoundingBox\"/>.\n            </summary>\n            <param name=\"box\">The box to test.</param>\n            <returns>Whether the two objects intersected.</returns>\n        </member>\n        <member name=\"M:SharpDX.BoundingSphere.Intersects(SharpDX.BoundingBox)\">\n            <summary>\n            Determines if there is an intersection between the current object and a <see cref=\"T:SharpDX.BoundingBox\"/>.\n            </summary>\n            <param name=\"box\">The box to test.</param>\n            <returns>Whether the two objects intersected.</returns>\n        </member>\n        <member name=\"M:SharpDX.BoundingSphere.Intersects(SharpDX.BoundingSphere@)\">\n            <summary>\n            Determines if there is an intersection between the current object and a <see cref=\"T:SharpDX.BoundingSphere\"/>.\n            </summary>\n            <param name=\"sphere\">The sphere to test.</param>\n            <returns>Whether the two objects intersected.</returns>\n        </member>\n        <member name=\"M:SharpDX.BoundingSphere.Intersects(SharpDX.BoundingSphere)\">\n            <summary>\n            Determines if there is an intersection between the current object and a <see cref=\"T:SharpDX.BoundingSphere\"/>.\n            </summary>\n            <param name=\"sphere\">The sphere to test.</param>\n            <returns>Whether the two objects intersected.</returns>\n        </member>\n        <member name=\"M:SharpDX.BoundingSphere.Contains(SharpDX.Vector3@)\">\n            <summary>\n            Determines whether the current objects contains a point.\n            </summary>\n            <param name=\"point\">The point to test.</param>\n            <returns>The type of containment the two objects have.</returns>\n        </member>\n        <member name=\"M:SharpDX.BoundingSphere.Contains(SharpDX.Vector3@,SharpDX.Vector3@,SharpDX.Vector3@)\">\n            <summary>\n            Determines whether the current objects contains a triangle.\n            </summary>\n            <param name=\"vertex1\">The first vertex of the triangle to test.</param>\n            <param name=\"vertex2\">The second vertex of the triagnle to test.</param>\n            <param name=\"vertex3\">The third vertex of the triangle to test.</param>\n            <returns>The type of containment the two objects have.</returns>\n        </member>\n        <member name=\"M:SharpDX.BoundingSphere.Contains(SharpDX.BoundingBox@)\">\n            <summary>\n            Determines whether the current objects contains a <see cref=\"T:SharpDX.BoundingBox\"/>.\n            </summary>\n            <param name=\"box\">The box to test.</param>\n            <returns>The type of containment the two objects have.</returns>\n        </member>\n        <member name=\"M:SharpDX.BoundingSphere.Contains(SharpDX.BoundingSphere@)\">\n            <summary>\n            Determines whether the current objects contains a <see cref=\"T:SharpDX.BoundingSphere\"/>.\n            </summary>\n            <param name=\"sphere\">The sphere to test.</param>\n            <returns>The type of containment the two objects have.</returns>\n        </member>\n        <member name=\"M:SharpDX.BoundingSphere.FromPoints(SharpDX.Vector3[],SharpDX.BoundingSphere@)\">\n            <summary>\n            Constructs a <see cref=\"T:SharpDX.BoundingSphere\"/> that fully contains the given points.\n            </summary>\n            <param name=\"points\">The points that will be contained by the sphere.</param>\n            <param name=\"result\">When the method completes, contains the newly constructed bounding sphere.</param>\n        </member>\n        <member name=\"M:SharpDX.BoundingSphere.FromPoints(SharpDX.Vector3[])\">\n            <summary>\n            Constructs a <see cref=\"T:SharpDX.BoundingSphere\"/> that fully contains the given points.\n            </summary>\n            <param name=\"points\">The points that will be contained by the sphere.</param>\n            <returns>The newly constructed bounding sphere.</returns>\n        </member>\n        <member name=\"M:SharpDX.BoundingSphere.FromBox(SharpDX.BoundingBox@,SharpDX.BoundingSphere@)\">\n            <summary>\n            Constructs a <see cref=\"T:SharpDX.BoundingSphere\"/> from a given box.\n            </summary>\n            <param name=\"box\">The box that will designate the extents of the sphere.</param>\n            <param name=\"result\">When the method completes, the newly constructed bounding sphere.</param>\n        </member>\n        <member name=\"M:SharpDX.BoundingSphere.FromBox(SharpDX.BoundingBox)\">\n            <summary>\n            Constructs a <see cref=\"T:SharpDX.BoundingSphere\"/> from a given box.\n            </summary>\n            <param name=\"box\">The box that will designate the extents of the sphere.</param>\n            <returns>The newly constructed bounding sphere.</returns>\n        </member>\n        <member name=\"M:SharpDX.BoundingSphere.Merge(SharpDX.BoundingSphere@,SharpDX.BoundingSphere@,SharpDX.BoundingSphere@)\">\n            <summary>\n            Constructs a <see cref=\"T:SharpDX.BoundingSphere\"/> that is the as large as the total combined area of the two specified spheres.\n            </summary>\n            <param name=\"value1\">The first sphere to merge.</param>\n            <param name=\"value2\">The second sphere to merge.</param>\n            <param name=\"result\">When the method completes, contains the newly constructed bounding sphere.</param>\n        </member>\n        <member name=\"M:SharpDX.BoundingSphere.Merge(SharpDX.BoundingSphere,SharpDX.BoundingSphere)\">\n            <summary>\n            Constructs a <see cref=\"T:SharpDX.BoundingSphere\"/> that is the as large as the total combined area of the two specified spheres.\n            </summary>\n            <param name=\"value1\">The first sphere to merge.</param>\n            <param name=\"value2\">The second sphere to merge.</param>\n            <returns>The newly constructed bounding sphere.</returns>\n        </member>\n        <member name=\"M:SharpDX.BoundingSphere.op_Equality(SharpDX.BoundingSphere,SharpDX.BoundingSphere)\">\n            <summary>\n            Tests for equality between two objects.\n            </summary>\n            <param name=\"left\">The first value to compare.</param>\n            <param name=\"right\">The second value to compare.</param>\n            <returns><c>true</c> if <paramref name=\"left\"/> has the same value as <paramref name=\"right\"/>; otherwise, <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.BoundingSphere.op_Inequality(SharpDX.BoundingSphere,SharpDX.BoundingSphere)\">\n            <summary>\n            Tests for inequality between two objects.\n            </summary>\n            <param name=\"left\">The first value to compare.</param>\n            <param name=\"right\">The second value to compare.</param>\n            <returns><c>true</c> if <paramref name=\"left\"/> has a different value than <paramref name=\"right\"/>; otherwise, <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.BoundingSphere.ToString\">\n            <summary>\n            Returns a <see cref=\"T:System.String\"/> that represents this instance.\n            </summary>\n            <returns>\n            A <see cref=\"T:System.String\"/> that represents this instance.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.BoundingSphere.ToString(System.String)\">\n            <summary>\n            Returns a <see cref=\"T:System.String\"/> that represents this instance.\n            </summary>\n            <param name=\"format\">The format.</param>\n            <returns>\n            A <see cref=\"T:System.String\"/> that represents this instance.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.BoundingSphere.ToString(System.IFormatProvider)\">\n            <summary>\n            Returns a <see cref=\"T:System.String\"/> that represents this instance.\n            </summary>\n            <param name=\"formatProvider\">The format provider.</param>\n            <returns>\n            A <see cref=\"T:System.String\"/> that represents this instance.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.BoundingSphere.ToString(System.String,System.IFormatProvider)\">\n            <summary>\n            Returns a <see cref=\"T:System.String\"/> that represents this instance.\n            </summary>\n            <param name=\"format\">The format.</param>\n            <param name=\"formatProvider\">The format provider.</param>\n            <returns>\n            A <see cref=\"T:System.String\"/> that represents this instance.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.BoundingSphere.GetHashCode\">\n            <summary>\n            Returns a hash code for this instance.\n            </summary>\n            <returns>\n            A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. \n            </returns>\n        </member>\n        <member name=\"M:SharpDX.BoundingSphere.Equals(SharpDX.BoundingSphere)\">\n            <summary>\n            Determines whether the specified <see cref=\"T:SharpDX.Vector4\"/> is equal to this instance.\n            </summary>\n            <param name=\"value\">The <see cref=\"T:SharpDX.Vector4\"/> to compare with this instance.</param>\n            <returns>\n            <c>true</c> if the specified <see cref=\"T:SharpDX.Vector4\"/> is equal to this instance; otherwise, <c>false</c>.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.BoundingSphere.Equals(System.Object)\">\n            <summary>\n            Determines whether the specified <see cref=\"T:System.Object\"/> is equal to this instance.\n            </summary>\n            <param name=\"value\">The <see cref=\"T:System.Object\"/> to compare with this instance.</param>\n            <returns>\n            <c>true</c> if the specified <see cref=\"T:System.Object\"/> is equal to this instance; otherwise, <c>false</c>.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.BoundingSphere.SharpDX#Serialization#IDataSerializable#Serialize(SharpDX.Serialization.BinarySerializer)\">\n            <inheritdoc/>\n        </member>\n        <member name=\"T:SharpDX.CallbackBase\">\n            <summary>\n            Callback base implementation of <see cref=\"T:SharpDX.ICallbackable\"/>.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.DisposeBase\">\n            <summary>\n            Base class for a <see cref=\"T:System.IDisposable\"/> class.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.DisposeBase.Finalize\">\n            <summary>\n            Releases unmanaged resources and performs other cleanup operations before the\n            <see cref=\"T:SharpDX.DisposeBase\"/> is reclaimed by garbage collection.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.DisposeBase.Dispose\">\n            <summary>\n            Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.DisposeBase.CheckAndDispose(System.Boolean)\">\n            <summary>\n            Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.DisposeBase.Dispose(System.Boolean)\">\n            <summary>\n            Releases unmanaged and - optionally - managed resources\n            </summary>\n            <param name=\"disposing\"><c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.</param>\n        </member>\n        <member name=\"E:SharpDX.DisposeBase.Disposing\">\n            <summary>\n            Occurs when this instance is starting to be disposed.\n            </summary>\n        </member>\n        <member name=\"E:SharpDX.DisposeBase.Disposed\">\n            <summary>\n            Occurs when this instance is fully disposed.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.DisposeBase.IsDisposed\">\n            <summary>\n            Gets a value indicating whether this instance is disposed.\n            </summary>\n            <value>\n            \t<c>true</c> if this instance is disposed; otherwise, <c>false</c>.\n            </value>\n        </member>\n        <member name=\"T:SharpDX.ICallbackable\">\n            <summary>\n            Use this interface to tag a class that is called by an unmanaged\n            object. A <see cref=\"T:SharpDX.ICallbackable\"/> class must dispose the <see cref=\"P:SharpDX.ICallbackable.Shadow\"/>\n            on dispose.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.ICallbackable.Shadow\">\n            <summary>\n            Gets or sets the unmanaged shadow callback.\n            </summary>\n            <value>The unmanaged shadow callback.</value>\n            <remarks>\n            This property is set whenever this instance has an unmanaged shadow callback\n            registered. This callback must be disposed when disposing this instance. \n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.CallbackBase.Dispose(System.Boolean)\">\n            <summary>\n            Releases unmanaged and - optionally - managed resources\n            </summary>\n            <param name=\"disposing\"><c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.</param>\n        </member>\n        <member name=\"T:SharpDX.Collections.ObservableCollection`1\">\n            <summary>\n            An observable collection.\n            </summary>\n            <typeparam name=\"T\">Type of a collection item</typeparam>\n        </member>\n        <member name=\"E:SharpDX.Collections.ObservableCollection`1.ItemAdded\">\n            <summary>\n            Raised when an item is added to this instance.\n            </summary>\n            <param name=\"\" />\n        </member>\n        <member name=\"E:SharpDX.Collections.ObservableCollection`1.ItemRemoved\">\n            <summary>\n            Raised when a item is removed from this instance.\n            </summary>\n            <param name=\"\" />\n        </member>\n        <member name=\"T:SharpDX.Collections.ObservableCollectionEventArgs`1\">\n            <summary>\n            An event providing the item changed in a collection (inserted or removed).\n            </summary>\n            <typeparam name=\"T\">Type of a collection item</typeparam>\n        </member>\n        <member name=\"M:SharpDX.Collections.ObservableCollectionEventArgs`1.#ctor(`0)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Collections.ObservableCollectionEventArgs`1\"/> class.\n            </summary>\n            <param name=\"item\">The item from the collection.</param>\n        </member>\n        <member name=\"P:SharpDX.Collections.ObservableCollectionEventArgs`1.Item\">\n            <summary>\n            Gets the item from the collection that was inserted or removed.\n            </summary>\n            <value>The collection item.</value>\n        </member>\n        <member name=\"T:SharpDX.Threading.TaskUtil\">\n            <summary>\n            Task utility for threading.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Threading.TaskUtil.Run(SharpDX.VoidAction)\">\n            <summary>\n            Runs the specified action in a thread.\n            </summary>\n            <param name=\"action\">The action.</param>\n        </member>\n        <member name=\"T:SharpDX.ViewportF\">\n            <summary>\n            Defines the viewport dimensions using float coordinates for (X,Y,Width,Height).\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.ViewportF.X\">\n            <summary>\n            Position of the pixel coordinate of the upper-left corner of the viewport.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.ViewportF.Y\">\n            <summary>\n            Position of the pixel coordinate of the upper-left corner of the viewport.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.ViewportF.Width\">\n            <summary>\n            Width dimension of the viewport.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.ViewportF.Height\">\n            <summary>\n            Height dimension of the viewport.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.ViewportF.MinDepth\">\n            <summary>\n            Gets or sets the minimum depth of the clip volume.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.ViewportF.MaxDepth\">\n            <summary>\n            Gets or sets the maximum depth of the clip volume.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.ViewportF.#ctor(System.Single,System.Single,System.Single,System.Single)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.ViewportF\"/> struct.\n            </summary>\n            <param name=\"x\">The x coordinate of the upper-left corner of the viewport in pixels.</param>\n            <param name=\"y\">The y coordinate of the upper-left corner of the viewport in pixels.</param>\n            <param name=\"width\">The width of the viewport in pixels.</param>\n            <param name=\"height\">The height of the viewport in pixels.</param>\n        </member>\n        <member name=\"M:SharpDX.ViewportF.#ctor(System.Single,System.Single,System.Single,System.Single,System.Single,System.Single)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.ViewportF\"/> struct.\n            </summary>\n            <param name=\"x\">The x coordinate of the upper-left corner of the viewport in pixels.</param>\n            <param name=\"y\">The y coordinate of the upper-left corner of the viewport in pixels.</param>\n            <param name=\"width\">The width of the viewport in pixels.</param>\n            <param name=\"height\">The height of the viewport in pixels.</param>\n            <param name=\"minDepth\">The minimum depth of the clip volume.</param>\n            <param name=\"maxDepth\">The maximum depth of the clip volume.</param>\n        </member>\n        <member name=\"M:SharpDX.ViewportF.#ctor(SharpDX.DrawingRectangleF)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.ViewportF\"/> struct.\n            </summary>\n            <param name=\"bounds\">A bounding box that defines the location and size of the viewport in a render target.</param>\n        </member>\n        <member name=\"M:SharpDX.ViewportF.Validate(System.String@)\">\n            <summary>\n            Checks if this <see cref=\"T:SharpDX.ViewportF\"/> is valid d3d viewport.\n            </summary>\n            <param name=\"errorString\">The returned error string, or null if no error occurs.</param>\n            <returns><c>true</c> if this <see cref=\"T:SharpDX.ViewportF\"/> is valid; otherwise, <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.ViewportF.Validate\">\n            <summary>\n            Checks if this <see cref=\"T:SharpDX.ViewportF\"/> is valid d3d viewport. Throw <see cref=\"T:System.Exception\"/> if its not.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.ViewportF.ToString\">\n            <summary>\n            Retrieves a string representation of this object.\n            </summary>\n            <returns>A <see cref=\"T:System.String\"/> that represents this instance.</returns>\n        </member>\n        <member name=\"M:SharpDX.ViewportF.Project(SharpDX.Vector3,SharpDX.Matrix,SharpDX.Matrix,SharpDX.Matrix)\">\n            <summary>\n            Projects a 3D vector from object space into screen space.\n            </summary>\n            <param name=\"source\">The vector to project.</param>\n            <param name=\"projection\">The projection matrix.</param>\n            <param name=\"view\">The view matrix.</param>\n            <param name=\"world\">The world matrix.</param>\n            <returns>Vector3.</returns>\n        </member>\n        <member name=\"M:SharpDX.ViewportF.Unproject(SharpDX.Vector3,SharpDX.Matrix,SharpDX.Matrix,SharpDX.Matrix)\">\n            <summary>\n            Converts a screen space point into a corresponding point in world space.\n            </summary>\n            <param name=\"source\">The vector to project.</param>\n            <param name=\"projection\">The projection matrix.</param>\n            <param name=\"view\">The view matrix.</param>\n            <param name=\"world\">The world matrix.</param>\n            <returns>Vector3.</returns>\n        </member>\n        <member name=\"M:SharpDX.ViewportF.op_Implicit(SharpDX.Viewport)~SharpDX.ViewportF\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:SharpDX.Viewport\"/> to <see cref=\"T:SharpDX.ViewportF\"/>.\n            </summary>\n            <param name=\"value\">The value.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"P:SharpDX.ViewportF.Bounds\">\n            <summary>\n            Gets the size of this resource.\n            </summary>\n            <value>The bounds.</value>\n        </member>\n        <member name=\"P:SharpDX.ViewportF.AspectRatio\">\n            <summary>\n            Gets the aspect ratio used by the viewport\n            </summary>\n            <value>The aspect ratio.</value>\n        </member>\n        <member name=\"T:SharpDX.Design.Color4Converter\">\n            <summary>\n            Defines a type converter for <see cref=\"T:SharpDX.Color4\"/>.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Design.BaseConverter\">\n            <summary>\n            Provides a base class for mathematical type converters.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Design.BaseConverter.ConvertFromValues``1(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,``0[])\">\n            <summary>\n            Converts values to a string.\n            </summary>\n            <typeparam name=\"T\">Type of the value</typeparam>\n            <param name=\"context\">The context.</param>\n            <param name=\"culture\">The culture.</param>\n            <param name=\"values\">The values.</param>\n            <returns>A string representing the values</returns>\n        </member>\n        <member name=\"M:SharpDX.Design.BaseConverter.ConvertToValues``1(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object)\">\n            <summary>\n            Converts a string to values.\n            </summary>\n            <typeparam name=\"T\">Type of the value</typeparam>\n            <param name=\"context\">The context.</param>\n            <param name=\"culture\">The culture.</param>\n            <param name=\"strValue\">The string value.</param>\n            <returns>An array of value or null if strValue is not a string.</returns>\n        </member>\n        <member name=\"M:SharpDX.Design.BaseConverter.CanConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Type)\">\n            <summary>\n            Returns whether this converter can convert an object of the given type to the type of this converter, using the specified context.\n            </summary>\n            <param name=\"context\">An <see cref=\"T:System.ComponentModel.ITypeDescriptorContext\"/> that provides a format context.</param>\n            <param name=\"sourceType\">A <see cref=\"T:System.Type\"/> that represents the type you want to convert from.</param>\n            <returns>\n            true if this converter can perform the conversion; otherwise, false.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Design.BaseConverter.CanConvertTo(System.ComponentModel.ITypeDescriptorContext,System.Type)\">\n            <summary>\n            Returns whether this converter can convert the object to the specified type, using the specified context.\n            </summary>\n            <param name=\"context\">An <see cref=\"T:System.ComponentModel.ITypeDescriptorContext\"/> that provides a format context.</param>\n            <param name=\"destinationType\">A <see cref=\"T:System.Type\"/> that represents the type you want to convert to.</param>\n            <returns>\n            true if this converter can perform the conversion; otherwise, false.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Design.BaseConverter.GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)\">\n            <summary>\n            Returns whether changing a value on this object requires a call to <see cref=\"M:System.ComponentModel.TypeConverter.CreateInstance(System.Collections.IDictionary)\"/> to create a new value, using the specified context.\n            </summary>\n            <param name=\"context\">An <see cref=\"T:System.ComponentModel.ITypeDescriptorContext\"/> that provides a format context.</param>\n            <returns>\n            true if changing a property on this object requires a call to <see cref=\"M:System.ComponentModel.TypeConverter.CreateInstance(System.Collections.IDictionary)\"/> to create a new value; otherwise, false.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Design.BaseConverter.GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)\">\n            <summary>\n            Gets a value indicating whether this object supports properties using the specified context.\n            </summary>\n            <param name=\"context\">An <see cref=\"T:System.ComponentModel.ITypeDescriptorContext\"/> that provides a format context.</param>\n            <returns>\n            true because <see cref=\"M:System.ComponentModel.TypeConverter.GetProperties(System.Object)\"/> should be called to find the properties of this object. This method never returns false.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Design.BaseConverter.GetProperties(System.ComponentModel.ITypeDescriptorContext,System.Object,System.Attribute[])\">\n            <summary>\n            Gets a collection of properties for the type of object specified by the value parameter.\n            </summary>\n            <param name=\"context\">An <see cref=\"T:System.ComponentModel.ITypeDescriptorContext\"/> that provides a format context.</param>\n            <param name=\"value\">An <see cref=\"T:System.Object\"/> that specifies the type of object to get the properties for.</param>\n            <param name=\"attributes\">An array of type <see cref=\"T:System.Attribute\"/> that will be used as a filter.</param>\n            <returns>\n            A <see cref=\"T:System.ComponentModel.PropertyDescriptorCollection\"/> with the properties that are exposed for the component, or null if there are no properties.\n            </returns>\n        </member>\n        <member name=\"P:SharpDX.Design.BaseConverter.Properties\">\n            <summary>\n            Gets or sets the collection of exposed properties.\n            </summary>\n            <value>The collection of exposed properties.</value>\n        </member>\n        <member name=\"M:SharpDX.Design.Color4Converter.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Design.Color4Converter\"/> class.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Design.Color4Converter.ConvertTo(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type)\">\n            <summary>\n            Converts the given value object to the specified type, using the specified context and culture information.\n            </summary>\n            <param name=\"context\">An <see cref=\"T:System.ComponentModel.ITypeDescriptorContext\"/> that provides a format context.</param>\n            <param name=\"culture\">A <see cref=\"T:System.Globalization.CultureInfo\"/>. If null is passed, the current culture is assumed.</param>\n            <param name=\"value\">The <see cref=\"T:System.Object\"/> to convert.</param>\n            <param name=\"destinationType\">The <see cref=\"T:System.Type\"/> to convert the <paramref name=\"value\"/> parameter to.</param>\n            <returns>\n            An <see cref=\"T:System.Object\"/> that represents the converted value.\n            </returns>\n            <exception cref=\"T:System.ArgumentNullException\">\n            The <paramref name=\"destinationType\"/> parameter is null.\n            </exception>\n            <exception cref=\"T:System.NotSupportedException\">\n            The conversion cannot be performed.\n            </exception>\n        </member>\n        <member name=\"M:SharpDX.Design.Color4Converter.ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object)\">\n            <summary>\n            Converts the given object to the type of this converter, using the specified context and culture information.\n            </summary>\n            <param name=\"context\">An <see cref=\"T:System.ComponentModel.ITypeDescriptorContext\"/> that provides a format context.</param>\n            <param name=\"culture\">The <see cref=\"T:System.Globalization.CultureInfo\"/> to use as the current culture.</param>\n            <param name=\"value\">The <see cref=\"T:System.Object\"/> to convert.</param>\n            <returns>\n            An <see cref=\"T:System.Object\"/> that represents the converted value.\n            </returns>\n            <exception cref=\"T:System.NotSupportedException\">\n            The conversion cannot be performed.\n            </exception>\n        </member>\n        <member name=\"M:SharpDX.Design.Color4Converter.CreateInstance(System.ComponentModel.ITypeDescriptorContext,System.Collections.IDictionary)\">\n            <summary>\n            Creates an instance of the type that this <see cref=\"T:System.ComponentModel.TypeConverter\"/> is associated with, using the specified context, given a set of property values for the object.\n            </summary>\n            <param name=\"context\">An <see cref=\"T:System.ComponentModel.ITypeDescriptorContext\"/> that provides a format context.</param>\n            <param name=\"propertyValues\">An <see cref=\"T:System.Collections.IDictionary\"/> of new property values.</param>\n            <returns>\n            An <see cref=\"T:System.Object\"/> representing the given <see cref=\"T:System.Collections.IDictionary\"/>, or null if the object cannot be created. This method always returns null.\n            </returns>\n        </member>\n        <member name=\"T:SharpDX.ComArray\">\n            <summary>\n            A fast method to pass array of <see cref=\"T:SharpDX.ComObject\"/> to SharpDX methods.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.ComArray.#ctor(SharpDX.ComObject[])\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.ComArray\"/> class.\n            </summary>\n            <param name=\"array\">The array.</param>\n        </member>\n        <member name=\"M:SharpDX.ComArray.#ctor(System.Int32)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.ComArray\"/> class.\n            </summary>\n            <param name=\"size\">The size.</param>\n        </member>\n        <member name=\"M:SharpDX.ComArray.Get(System.Int32)\">\n            <summary>\n            Gets an object at the specified index.\n            </summary>\n            <param name=\"index\">The index.</param>\n            <returns>A <see cref=\"T:SharpDX.ComObject\"/></returns>\n        </member>\n        <member name=\"M:SharpDX.ComArray.Set(System.Int32,SharpDX.ComObject)\">\n            <summary>\n            Sets an object at the specified index.\n            </summary>\n            <param name=\"index\">The index.</param>\n            <param name=\"value\">The value.</param>\n        </member>\n        <member name=\"M:SharpDX.ComArray.GetEnumerator\">\n            <inheritdoc/>\n        </member>\n        <member name=\"P:SharpDX.ComArray.NativePointer\">\n            <summary>\n            Gets the pointer to the native array associated to this instance.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.ComArray.Length\">\n            <summary>\n            Gets the length.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.ComArray`1\">\n            <summary>\n            A typed version of <see cref=\"T:SharpDX.ComArray\"/>\n            </summary>\n            <typeparam name=\"T\">Type of the <see cref=\"T:SharpDX.ComObject\"/></typeparam>\n        </member>\n        <member name=\"M:SharpDX.ComArray`1.#ctor(`0[])\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.ComArray`1\"/> class.\n            </summary>\n            <param name=\"array\">The array.</param>\n        </member>\n        <member name=\"M:SharpDX.ComArray`1.#ctor(System.Int32)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.ComArray`1\"/> class.\n            </summary>\n            <param name=\"size\">The size.</param>\n        </member>\n        <member name=\"P:SharpDX.ComArray`1.Item(System.Int32)\">\n            <summary>\n            Gets or sets the <see cref=\"!:T\"/> with the specified i.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.CompilationResultBase`1\">\n            <summary>\n            Generic class to hold a shader compilation results.\n            </summary>\n            <typeparam name=\"T\">Type of the class containing the generated bytecode.</typeparam>\n        </member>\n        <member name=\"M:SharpDX.CompilationResultBase`1.#ctor(`0,SharpDX.Result,System.String)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.CompilationResultBase`1\"/> class.\n            </summary>\n            <param name=\"bytecode\">The bytecode.</param>\n            <param name=\"resultCode\">Result code from compilation.</param>\n            <param name=\"message\">The message.</param>\n        </member>\n        <member name=\"M:SharpDX.CompilationResultBase`1.Dispose(System.Boolean)\">\n            <inheritdoc/>\n        </member>\n        <member name=\"P:SharpDX.CompilationResultBase`1.Bytecode\">\n            <summary>\n            Gets the Shader bytecode.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.CompilationResultBase`1.ResultCode\">\n            <summary>\n            Gets the result code from the compilation.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.CompilationResultBase`1.HasErrors\">\n            <summary>\n            Gets a value indicating whether this instance has errors.\n            </summary>\n            <value>\n            \t<c>true</c> if this instance has errors; otherwise, <c>false</c>.\n            </value>\n        </member>\n        <member name=\"P:SharpDX.CompilationResultBase`1.Message\">\n            <summary>\n            Gets the message.\n            </summary>\n            <remarks>\n            Message are warning or error messages.\n            </remarks>\n        </member>\n        <member name=\"T:SharpDX.Bool4\">\n            <summary>\n            Represents a four dimensional mathematical vector of bool (32 bits per bool value).\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Bool4.SizeInBytes\">\n            <summary>\n            The size of the <see cref=\"T:SharpDX.Bool4\"/> type, in bytes.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Bool4.False\">\n            <summary>\n            A <see cref=\"T:SharpDX.Bool4\"/> with all of its components set to false.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Bool4.UnitX\">\n            <summary>\n            The X unit <see cref=\"T:SharpDX.Bool4\"/> (true, 0, 0, 0).\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Bool4.UnitY\">\n            <summary>\n            The Y unit <see cref=\"T:SharpDX.Bool4\"/> (0, true, 0, 0).\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Bool4.UnitZ\">\n            <summary>\n            The Z unit <see cref=\"T:SharpDX.Bool4\"/> (0, 0, true, 0).\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Bool4.UnitW\">\n            <summary>\n            The W unit <see cref=\"T:SharpDX.Bool4\"/> (0, 0, 0, true).\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Bool4.One\">\n            <summary>\n            A <see cref=\"T:SharpDX.Bool4\"/> with all of its components set to true.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Bool4.iX\">\n            <summary>\n            The X component of the vector.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Bool4.iY\">\n            <summary>\n            The Y component of the vector.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Bool4.iZ\">\n            <summary>\n            The Z component of the vector.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Bool4.iW\">\n            <summary>\n            The W component of the vector.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Bool4.#ctor(System.Boolean)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Bool4\"/> struct.\n            </summary>\n            <param name=\"value\">The value that will be assigned to all components.</param>\n        </member>\n        <member name=\"M:SharpDX.Bool4.#ctor(System.Boolean,System.Boolean,System.Boolean,System.Boolean)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Bool4\"/> struct.\n            </summary>\n            <param name=\"x\">Initial value for the X component of the vector.</param>\n            <param name=\"y\">Initial value for the Y component of the vector.</param>\n            <param name=\"z\">Initial value for the Z component of the vector.</param>\n            <param name=\"w\">Initial value for the W component of the vector.</param>\n        </member>\n        <member name=\"M:SharpDX.Bool4.#ctor(System.Boolean[])\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Bool4\"/> struct.\n            </summary>\n            <param name=\"values\">The values to assign to the X, Y, Z, and W components of the vector. This must be an array with four elements.</param>\n            <exception cref=\"T:System.ArgumentNullException\">Thrown when <paramref name=\"values\"/> is <c>null</c>.</exception>\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">Thrown when <paramref name=\"values\"/> contains more or less than four elements.</exception>\n        </member>\n        <member name=\"M:SharpDX.Bool4.ToArray\">\n            <summary>\n            Creates an array containing the elements of the vector.\n            </summary>\n            <returns>A four-element array containing the components of the vector.</returns>\n        </member>\n        <member name=\"M:SharpDX.Bool4.op_Equality(SharpDX.Bool4,SharpDX.Bool4)\">\n            <summary>\n            Tests for equality between two objects.\n            </summary>\n            <param name = \"left\">The first value to compare.</param>\n            <param name = \"right\">The second value to compare.</param>\n            <returns><c>true</c> if <paramref name = \"left\" /> has the same value as <paramref name = \"right\" />; otherwise, <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Bool4.op_Inequality(SharpDX.Bool4,SharpDX.Bool4)\">\n            <summary>\n            Tests for inequality between two objects.\n            </summary>\n            <param name = \"left\">The first value to compare.</param>\n            <param name = \"right\">The second value to compare.</param>\n            <returns><c>true</c> if <paramref name = \"left\" /> has a different value than <paramref name = \"right\" />; otherwise, <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Bool4.ToString\">\n            <summary>\n            Returns a <see cref=\"T:System.String\"/> that represents this instance.\n            </summary>\n            <returns>\n            A <see cref=\"T:System.String\"/> that represents this instance.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Bool4.ToString(System.String,System.IFormatProvider)\">\n            <summary>\n            Returns a <see cref=\"T:System.String\"/> that represents this instance.\n            </summary>\n            <param name=\"format\">The format.</param>\n            <param name=\"formatProvider\">The format provider.</param>\n            <returns>\n            A <see cref=\"T:System.String\"/> that represents this instance.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Bool4.GetHashCode\">\n            <summary>\n            Returns a hash code for this instance.\n            </summary>\n            <returns>\n            A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. \n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Bool4.Equals(SharpDX.Bool4)\">\n            <summary>\n            Determines whether the specified <see cref=\"T:SharpDX.Bool4\"/> is equal to this instance.\n            </summary>\n            <param name=\"other\">The <see cref=\"T:SharpDX.Bool4\"/> to compare with this instance.</param>\n            <returns>\n            <c>true</c> if the specified <see cref=\"T:SharpDX.Bool4\"/> is equal to this instance; otherwise, <c>false</c>.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Bool4.Equals(System.Object)\">\n            <summary>\n            Determines whether the specified <see cref=\"T:System.Object\"/> is equal to this instance.\n            </summary>\n            <param name=\"value\">The <see cref=\"T:System.Object\"/> to compare with this instance.</param>\n            <returns>\n            <c>true</c> if the specified <see cref=\"T:System.Object\"/> is equal to this instance; otherwise, <c>false</c>.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Bool4.op_Implicit(System.Boolean[])~SharpDX.Bool4\">\n            <summary>\n            Performs an implicit conversion from <see cref=\"T:System.Int32\"/> array to <see cref=\"T:SharpDX.Bool4\"/>.\n            </summary>\n            <param name=\"input\">The input.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"M:SharpDX.Bool4.op_Implicit(SharpDX.Bool4)~System.Boolean[]\">\n            <summary>\n            Performs an implicit conversion from <see cref=\"T:SharpDX.Bool4\"/> to <see cref=\"T:System.Int32\"/> array.\n            </summary>\n            <param name=\"input\">The input.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"M:SharpDX.Bool4.SharpDX#Serialization#IDataSerializable#Serialize(SharpDX.Serialization.BinarySerializer)\">\n            <inheritdoc/>\n        </member>\n        <member name=\"P:SharpDX.Bool4.X\">\n            <summary>\n            The X component of the vector.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Bool4.Y\">\n            <summary>\n            The Y component of the vector.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Bool4.Z\">\n            <summary>\n            The Z component of the vector.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Bool4.W\">\n            <summary>\n            The W component of the vector.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Bool4.Item(System.Int32)\">\n            <summary>\n            Gets or sets the component at the specified index.\n            </summary>\n            <value>The value of the X, Y, Z, or W component, depending on the index.</value>\n            <param name=\"index\">The index of the component to access. Use 0 for the X component, 1 for the Y component, 2 for the Z component, and 3 for the W component.</param>\n            <returns>The value of the component at the specified index.</returns>\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">Thrown when the <paramref name=\"index\"/> is out of the range [0, 3].</exception>\n        </member>\n        <member name=\"T:SharpDX.AssemblyDoc\">\n            <summary>\n            The <see cref=\"N:SharpDX\"/> assembly is the core assembly providing infrastructure for all managed DirectX API.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Color\">\n            <summary>\n            Represents a 32-bit color (4 bytes) in the form of RGBA (in byte order: R, G, B, A).\n            </summary>\n            <summary>\n            List of predefined <see cref=\"T:SharpDX.Color\"/>.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.R\">\n            <summary>\n            The red component of the color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.G\">\n            <summary>\n            The green component of the color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.B\">\n            <summary>\n            The blue component of the color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.A\">\n            <summary>\n            The alpha component of the color.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Color.#ctor(System.Byte)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Color\"/> struct.\n            </summary>\n            <param name=\"value\">The value that will be assigned to all components.</param>\n        </member>\n        <member name=\"M:SharpDX.Color.#ctor(System.Single)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Color\"/> struct.\n            </summary>\n            <param name=\"value\">The value that will be assigned to all components.</param>\n        </member>\n        <member name=\"M:SharpDX.Color.#ctor(System.Byte,System.Byte,System.Byte,System.Byte)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Color\"/> struct.\n            </summary>\n            <param name=\"red\">The red component of the color.</param>\n            <param name=\"green\">The green component of the color.</param>\n            <param name=\"blue\">The blue component of the color.</param>\n            <param name=\"alpha\">The alpha component of the color.</param>\n        </member>\n        <member name=\"M:SharpDX.Color.#ctor(System.Byte,System.Byte,System.Byte)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Color\"/> struct.  Alpha is set to 255.\n            </summary>\n            <param name=\"red\">The red component of the color.</param>\n            <param name=\"green\">The green component of the color.</param>\n            <param name=\"blue\">The blue component of the color.</param>\n        </member>\n        <member name=\"M:SharpDX.Color.#ctor(System.Single,System.Single,System.Single,System.Single)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Color\"/> struct.\n            </summary>\n            <param name=\"red\">The red component of the color.</param>\n            <param name=\"green\">The green component of the color.</param>\n            <param name=\"blue\">The blue component of the color.</param>\n            <param name=\"alpha\">The alpha component of the color.</param>\n        </member>\n        <member name=\"M:SharpDX.Color.#ctor(System.Single,System.Single,System.Single)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Color\"/> struct.  Alpha is set to 255.\n            </summary>\n            <param name=\"red\">The red component of the color.</param>\n            <param name=\"green\">The green component of the color.</param>\n            <param name=\"blue\">The blue component of the color.</param>\n        </member>\n        <member name=\"M:SharpDX.Color.#ctor(SharpDX.Vector4)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Color\"/> struct.\n            </summary>\n            <param name=\"value\">The red, green, blue, and alpha components of the color.</param>\n        </member>\n        <member name=\"M:SharpDX.Color.#ctor(SharpDX.Vector3,System.Single)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Color\"/> struct.\n            </summary>\n            <param name=\"value\">The red, green, and blue compoennts of the color.</param>\n            <param name=\"alpha\">The alpha component of the color.</param>\n        </member>\n        <member name=\"M:SharpDX.Color.#ctor(SharpDX.Vector3)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Color\"/> struct. Alpha is set to 255.\n            </summary>\n            <param name=\"value\">The red, green, and blue compoennts of the color.</param>\n        </member>\n        <member name=\"M:SharpDX.Color.#ctor(System.UInt32)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Color\"/> struct.\n            </summary>\n            <param name=\"rgba\">A packed integer containing all four color components in RGBA order.</param>\n        </member>\n        <member name=\"M:SharpDX.Color.#ctor(System.Int32)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Color\"/> struct.\n            </summary>\n            <param name=\"rgba\">A packed integer containing all four color components in RGBA order.</param>\n        </member>\n        <member name=\"M:SharpDX.Color.#ctor(System.Single[])\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Color\"/> struct.\n            </summary>\n            <param name=\"values\">The values to assign to the red, green, and blue, alpha components of the color. This must be an array with four elements.</param>\n            <exception cref=\"T:System.ArgumentNullException\">Thrown when <paramref name=\"values\"/> is <c>null</c>.</exception>\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">Thrown when <paramref name=\"values\"/> contains more or less than four elements.</exception>\n        </member>\n        <member name=\"M:SharpDX.Color.#ctor(System.Byte[])\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Color\"/> struct.\n            </summary>\n            <param name=\"values\">The values to assign to the alpha, red, green, and blue components of the color. This must be an array with four elements.</param>\n            <exception cref=\"T:System.ArgumentNullException\">Thrown when <paramref name=\"values\"/> is <c>null</c>.</exception>\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">Thrown when <paramref name=\"values\"/> contains more or less than four elements.</exception>\n        </member>\n        <member name=\"M:SharpDX.Color.ToBgra\">\n            <summary>\n            Converts the color into a packed integer.\n            </summary>\n            <returns>A packed integer containing all four color components.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color.ToRgba\">\n            <summary>\n            Converts the color into a packed integer.\n            </summary>\n            <returns>A packed integer containing all four color components.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color.ToVector3\">\n            <summary>\n            Converts the color into a three component vector.\n            </summary>\n            <returns>A three component vector containing the red, green, and blue components of the color.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color.ToColor3\">\n            <summary>\n            Converts the color into a three component color.\n            </summary>\n            <returns>A three component color containing the red, green, and blue components of the color.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color.ToVector4\">\n            <summary>\n            Converts the color into a four component vector.\n            </summary>\n            <returns>A four component vector containing all four color components.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color.ToArray\">\n            <summary>\n            Creates an array containing the elements of the color.\n            </summary>\n            <returns>A four-element array containing the components of the color in RGBA order.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color.GetBrightness\">\n            <summary>\n            Gets the brightness.\n            </summary>\n            <returns>The Hue-Saturation-Brightness (HSB) saturation for this <see cref=\"T:SharpDX.Color\"/></returns>\n        </member>\n        <member name=\"M:SharpDX.Color.GetHue\">\n            <summary>\n            Gets the hue.\n            </summary>\n            <returns>The Hue-Saturation-Brightness (HSB) saturation for this <see cref=\"T:SharpDX.Color\"/></returns>\n        </member>\n        <member name=\"M:SharpDX.Color.GetSaturation\">\n            <summary>\n            Gets the saturation.\n            </summary>\n            <returns>The Hue-Saturation-Brightness (HSB) saturation for this <see cref=\"T:SharpDX.Color\"/></returns>\n        </member>\n        <member name=\"M:SharpDX.Color.Add(SharpDX.Color@,SharpDX.Color@,SharpDX.Color@)\">\n            <summary>\n            Adds two colors.\n            </summary>\n            <param name=\"left\">The first color to add.</param>\n            <param name=\"right\">The second color to add.</param>\n            <param name=\"result\">When the method completes, completes the sum of the two colors.</param>\n        </member>\n        <member name=\"M:SharpDX.Color.Add(SharpDX.Color,SharpDX.Color)\">\n            <summary>\n            Adds two colors.\n            </summary>\n            <param name=\"left\">The first color to add.</param>\n            <param name=\"right\">The second color to add.</param>\n            <returns>The sum of the two colors.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color.Subtract(SharpDX.Color@,SharpDX.Color@,SharpDX.Color@)\">\n            <summary>\n            Subtracts two colors.\n            </summary>\n            <param name=\"left\">The first color to subtract.</param>\n            <param name=\"right\">The second color to subtract.</param>\n            <param name=\"result\">WHen the method completes, contains the difference of the two colors.</param>\n        </member>\n        <member name=\"M:SharpDX.Color.Subtract(SharpDX.Color,SharpDX.Color)\">\n            <summary>\n            Subtracts two colors.\n            </summary>\n            <param name=\"left\">The first color to subtract.</param>\n            <param name=\"right\">The second color to subtract</param>\n            <returns>The difference of the two colors.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color.Modulate(SharpDX.Color@,SharpDX.Color@,SharpDX.Color@)\">\n            <summary>\n            Modulates two colors.\n            </summary>\n            <param name=\"left\">The first color to modulate.</param>\n            <param name=\"right\">The second color to modulate.</param>\n            <param name=\"result\">When the method completes, contains the modulated color.</param>\n        </member>\n        <member name=\"M:SharpDX.Color.Modulate(SharpDX.Color,SharpDX.Color)\">\n            <summary>\n            Modulates two colors.\n            </summary>\n            <param name=\"left\">The first color to modulate.</param>\n            <param name=\"right\">The second color to modulate.</param>\n            <returns>The modulated color.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color.Scale(SharpDX.Color@,System.Single,SharpDX.Color@)\">\n            <summary>\n            Scales a color.\n            </summary>\n            <param name=\"value\">The color to scale.</param>\n            <param name=\"scale\">The amount by which to scale.</param>\n            <param name=\"result\">When the method completes, contains the scaled color.</param>\n        </member>\n        <member name=\"M:SharpDX.Color.Scale(SharpDX.Color,System.Single)\">\n            <summary>\n            Scales a color.\n            </summary>\n            <param name=\"value\">The color to scale.</param>\n            <param name=\"scale\">The amount by which to scale.</param>\n            <returns>The scaled color.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color.Negate(SharpDX.Color@,SharpDX.Color@)\">\n            <summary>\n            Negates a color.\n            </summary>\n            <param name=\"value\">The color to negate.</param>\n            <param name=\"result\">When the method completes, contains the negated color.</param>\n        </member>\n        <member name=\"M:SharpDX.Color.Negate(SharpDX.Color)\">\n            <summary>\n            Negates a color.\n            </summary>\n            <param name=\"value\">The color to negate.</param>\n            <returns>The negated color.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color.Clamp(SharpDX.Color@,SharpDX.Color@,SharpDX.Color@,SharpDX.Color@)\">\n            <summary>\n            Restricts a value to be within a specified range.\n            </summary>\n            <param name=\"value\">The value to clamp.</param>\n            <param name=\"min\">The minimum value.</param>\n            <param name=\"max\">The maximum value.</param>\n            <param name=\"result\">When the method completes, contains the clamped value.</param>\n        </member>\n        <member name=\"M:SharpDX.Color.FromBgra(System.Int32)\">\n            <summary>\n            Converts the color from a packed BGRA integer.\n            </summary>\n            <param name=\"color\">A packed integer containing all four color components in BGRA order</param>\n            <returns>A color.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color.FromBgra(System.UInt32)\">\n            <summary>\n            Converts the color from a packed BGRA integer.\n            </summary>\n            <param name=\"color\">A packed integer containing all four color components in BGRA order</param>\n            <returns>A color.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color.FromRgba(System.Int32)\">\n            <summary>\n            Converts the color from a packed BGRA integer.\n            </summary>\n            <param name=\"color\">A packed integer containing all four color components in RGBA order</param>\n            <returns>A color.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color.FromRgba(System.UInt32)\">\n            <summary>\n            Converts the color from a packed BGRA integer.\n            </summary>\n            <param name=\"color\">A packed integer containing all four color components in RGBA order</param>\n            <returns>A color.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color.Clamp(SharpDX.Color,SharpDX.Color,SharpDX.Color)\">\n            <summary>\n            Restricts a value to be within a specified range.\n            </summary>\n            <param name=\"value\">The value to clamp.</param>\n            <param name=\"min\">The minimum value.</param>\n            <param name=\"max\">The maximum value.</param>\n            <returns>The clamped value.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color.Lerp(SharpDX.Color@,SharpDX.Color@,System.Single,SharpDX.Color@)\">\n            <summary>\n            Performs a linear interpolation between two colors.\n            </summary>\n            <param name=\"start\">Start color.</param>\n            <param name=\"end\">End color.</param>\n            <param name=\"amount\">Value between 0 and 1 indicating the weight of <paramref name=\"end\"/>.</param>\n            <param name=\"result\">When the method completes, contains the linear interpolation of the two colors.</param>\n            <remarks>\n            This method performs the linear interpolation based on the following formula.\n            <code>start + (end - start) * amount</code>\n            Passing <paramref name=\"amount\"/> a value of 0 will cause <paramref name=\"start\"/> to be returned; a value of 1 will cause <paramref name=\"end\"/> to be returned. \n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Color.Lerp(SharpDX.Color,SharpDX.Color,System.Single)\">\n            <summary>\n            Performs a linear interpolation between two colors.\n            </summary>\n            <param name=\"start\">Start color.</param>\n            <param name=\"end\">End color.</param>\n            <param name=\"amount\">Value between 0 and 1 indicating the weight of <paramref name=\"end\"/>.</param>\n            <returns>The linear interpolation of the two colors.</returns>\n            <remarks>\n            This method performs the linear interpolation based on the following formula.\n            <code>start + (end - start) * amount</code>\n            Passing <paramref name=\"amount\"/> a value of 0 will cause <paramref name=\"start\"/> to be returned; a value of 1 will cause <paramref name=\"end\"/> to be returned. \n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Color.SmoothStep(SharpDX.Color@,SharpDX.Color@,System.Single,SharpDX.Color@)\">\n            <summary>\n            Performs a cubic interpolation between two colors.\n            </summary>\n            <param name=\"start\">Start color.</param>\n            <param name=\"end\">End color.</param>\n            <param name=\"amount\">Value between 0 and 1 indicating the weight of <paramref name=\"end\"/>.</param>\n            <param name=\"result\">When the method completes, contains the cubic interpolation of the two colors.</param>\n        </member>\n        <member name=\"M:SharpDX.Color.SmoothStep(SharpDX.Color,SharpDX.Color,System.Single)\">\n            <summary>\n            Performs a cubic interpolation between two colors.\n            </summary>\n            <param name=\"start\">Start color.</param>\n            <param name=\"end\">End color.</param>\n            <param name=\"amount\">Value between 0 and 1 indicating the weight of <paramref name=\"end\"/>.</param>\n            <returns>The cubic interpolation of the two colors.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color.Max(SharpDX.Color@,SharpDX.Color@,SharpDX.Color@)\">\n            <summary>\n            Returns a color containing the smallest components of the specified colorss.\n            </summary>\n            <param name=\"left\">The first source color.</param>\n            <param name=\"right\">The second source color.</param>\n            <param name=\"result\">When the method completes, contains an new color composed of the largest components of the source colorss.</param>\n        </member>\n        <member name=\"M:SharpDX.Color.Max(SharpDX.Color,SharpDX.Color)\">\n            <summary>\n            Returns a color containing the largest components of the specified colorss.\n            </summary>\n            <param name=\"left\">The first source color.</param>\n            <param name=\"right\">The second source color.</param>\n            <returns>A color containing the largest components of the source colors.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color.Min(SharpDX.Color@,SharpDX.Color@,SharpDX.Color@)\">\n            <summary>\n            Returns a color containing the smallest components of the specified colors.\n            </summary>\n            <param name=\"left\">The first source color.</param>\n            <param name=\"right\">The second source color.</param>\n            <param name=\"result\">When the method completes, contains an new color composed of the smallest components of the source colors.</param>\n        </member>\n        <member name=\"M:SharpDX.Color.Min(SharpDX.Color,SharpDX.Color)\">\n            <summary>\n            Returns a color containing the smallest components of the specified colors.\n            </summary>\n            <param name=\"left\">The first source color.</param>\n            <param name=\"right\">The second source color.</param>\n            <returns>A color containing the smallest components of the source colors.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color.AdjustContrast(SharpDX.Color@,System.Single,SharpDX.Color@)\">\n            <summary>\n            Adjusts the contrast of a color.\n            </summary>\n            <param name=\"value\">The color whose contrast is to be adjusted.</param>\n            <param name=\"contrast\">The amount by which to adjust the contrast.</param>\n            <param name=\"result\">When the method completes, contains the adjusted color.</param>\n        </member>\n        <member name=\"M:SharpDX.Color.AdjustContrast(SharpDX.Color,System.Single)\">\n            <summary>\n            Adjusts the contrast of a color.\n            </summary>\n            <param name=\"value\">The color whose contrast is to be adjusted.</param>\n            <param name=\"contrast\">The amount by which to adjust the contrast.</param>\n            <returns>The adjusted color.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color.AdjustSaturation(SharpDX.Color@,System.Single,SharpDX.Color@)\">\n            <summary>\n            Adjusts the saturation of a color.\n            </summary>\n            <param name=\"value\">The color whose saturation is to be adjusted.</param>\n            <param name=\"saturation\">The amount by which to adjust the saturation.</param>\n            <param name=\"result\">When the method completes, contains the adjusted color.</param>\n        </member>\n        <member name=\"M:SharpDX.Color.AdjustSaturation(SharpDX.Color,System.Single)\">\n            <summary>\n            Adjusts the saturation of a color.\n            </summary>\n            <param name=\"value\">The color whose saturation is to be adjusted.</param>\n            <param name=\"saturation\">The amount by which to adjust the saturation.</param>\n            <returns>The adjusted color.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color.op_Addition(SharpDX.Color,SharpDX.Color)\">\n            <summary>\n            Adds two colors.\n            </summary>\n            <param name=\"left\">The first color to add.</param>\n            <param name=\"right\">The second color to add.</param>\n            <returns>The sum of the two colors.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color.op_UnaryPlus(SharpDX.Color)\">\n            <summary>\n            Assert a color (return it unchanged).\n            </summary>\n            <param name=\"value\">The color to assert (unchange).</param>\n            <returns>The asserted (unchanged) color.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color.op_Subtraction(SharpDX.Color,SharpDX.Color)\">\n            <summary>\n            Subtracts two colors.\n            </summary>\n            <param name=\"left\">The first color to subtract.</param>\n            <param name=\"right\">The second color to subtract.</param>\n            <returns>The difference of the two colors.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color.op_UnaryNegation(SharpDX.Color)\">\n            <summary>\n            Negates a color.\n            </summary>\n            <param name=\"value\">The color to negate.</param>\n            <returns>A negated color.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color.op_Multiply(System.Single,SharpDX.Color)\">\n            <summary>\n            Scales a color.\n            </summary>\n            <param name=\"scale\">The factor by which to scale the color.</param>\n            <param name=\"value\">The color to scale.</param>\n            <returns>The scaled color.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color.op_Multiply(SharpDX.Color,System.Single)\">\n            <summary>\n            Scales a color.\n            </summary>\n            <param name=\"value\">The factor by which to scale the color.</param>\n            <param name=\"scale\">The color to scale.</param>\n            <returns>The scaled color.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color.op_Multiply(SharpDX.Color,SharpDX.Color)\">\n            <summary>\n            Modulates two colors.\n            </summary>\n            <param name=\"left\">The first color to modulate.</param>\n            <param name=\"right\">The second color to modulate.</param>\n            <returns>The modulated color.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color.op_Equality(SharpDX.Color,SharpDX.Color)\">\n            <summary>\n            Tests for equality between two objects.\n            </summary>\n            <param name=\"left\">The first value to compare.</param>\n            <param name=\"right\">The second value to compare.</param>\n            <returns><c>true</c> if <paramref name=\"left\"/> has the same value as <paramref name=\"right\"/>; otherwise, <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color.op_Inequality(SharpDX.Color,SharpDX.Color)\">\n            <summary>\n            Tests for inequality between two objects.\n            </summary>\n            <param name=\"left\">The first value to compare.</param>\n            <param name=\"right\">The second value to compare.</param>\n            <returns><c>true</c> if <paramref name=\"left\"/> has a different value than <paramref name=\"right\"/>; otherwise, <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color.op_Explicit(SharpDX.Color)~SharpDX.Color3\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:SharpDX.Color\"/> to <see cref=\"T:SharpDX.Color3\"/>.\n            </summary>\n            <param name=\"value\">The value.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color.op_Explicit(SharpDX.Color)~SharpDX.Vector3\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:SharpDX.Color\"/> to <see cref=\"T:SharpDX.Vector3\"/>.\n            </summary>\n            <param name=\"value\">The value.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color.op_Explicit(SharpDX.Color)~SharpDX.Vector4\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:SharpDX.Color\"/> to <see cref=\"T:SharpDX.Vector4\"/>.\n            </summary>\n            <param name=\"value\">The value.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color.op_Implicit(SharpDX.Color)~SharpDX.Color4\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:SharpDX.Color\"/> to <see cref=\"T:SharpDX.Color4\"/>.\n            </summary>\n            <param name=\"value\">The value.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color.op_Explicit(SharpDX.Vector3)~SharpDX.Color\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:SharpDX.Vector3\"/> to <see cref=\"T:SharpDX.Color\"/>.\n            </summary>\n            <param name=\"value\">The value.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color.op_Explicit(SharpDX.Color3)~SharpDX.Color\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:SharpDX.Color3\"/> to <see cref=\"T:SharpDX.Color\"/>.\n            </summary>\n            <param name=\"value\">The value.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color.op_Explicit(SharpDX.Vector4)~SharpDX.Color\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:SharpDX.Vector4\"/> to <see cref=\"T:SharpDX.Color\"/>.\n            </summary>\n            <param name=\"value\">The value.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color.op_Explicit(SharpDX.Color4)~SharpDX.Color\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:SharpDX.Color4\"/> to <see cref=\"T:SharpDX.Color\"/>.\n            </summary>\n            <param name=\"value\">The value.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color.op_Explicit(SharpDX.Color)~System.Int32\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.Int32\"/> to <see cref=\"T:SharpDX.Color\"/>.\n            </summary>\n            <param name=\"value\">The value.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Color.op_Explicit(System.Int32)~SharpDX.Color\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.Int32\"/> to <see cref=\"T:SharpDX.Color\"/>.\n            </summary>\n            <param name=\"value\">The value.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Color.ToString\">\n            <summary>\n            Returns a <see cref=\"T:System.String\"/> that represents this instance.\n            </summary>\n            <returns>\n            A <see cref=\"T:System.String\"/> that represents this instance.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Color.ToString(System.String)\">\n            <summary>\n            Returns a <see cref=\"T:System.String\"/> that represents this instance.\n            </summary>\n            <param name=\"format\">The format.</param>\n            <returns>\n            A <see cref=\"T:System.String\"/> that represents this instance.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Color.ToString(System.IFormatProvider)\">\n            <summary>\n            Returns a <see cref=\"T:System.String\"/> that represents this instance.\n            </summary>\n            <param name=\"formatProvider\">The format provider.</param>\n            <returns>\n            A <see cref=\"T:System.String\"/> that represents this instance.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Color.ToString(System.String,System.IFormatProvider)\">\n            <summary>\n            Returns a <see cref=\"T:System.String\"/> that represents this instance.\n            </summary>\n            <param name=\"format\">The format.</param>\n            <param name=\"formatProvider\">The format provider.</param>\n            <returns>\n            A <see cref=\"T:System.String\"/> that represents this instance.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Color.GetHashCode\">\n            <summary>\n            Returns a hash code for this instance.\n            </summary>\n            <returns>\n            A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. \n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Color.Equals(SharpDX.Color)\">\n            <summary>\n            Determines whether the specified <see cref=\"T:SharpDX.Color\"/> is equal to this instance.\n            </summary>\n            <param name=\"other\">The <see cref=\"T:SharpDX.Color\"/> to compare with this instance.</param>\n            <returns>\n            <c>true</c> if the specified <see cref=\"T:SharpDX.Color\"/> is equal to this instance; otherwise, <c>false</c>.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Color.Equals(System.Object)\">\n            <summary>\n            Determines whether the specified <see cref=\"T:System.Object\"/> is equal to this instance.\n            </summary>\n            <param name=\"value\">The <see cref=\"T:System.Object\"/> to compare with this instance.</param>\n            <returns>\n            <c>true</c> if the specified <see cref=\"T:System.Object\"/> is equal to this instance; otherwise, <c>false</c>.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Color.SharpDX#Serialization#IDataSerializable#Serialize(SharpDX.Serialization.BinarySerializer)\">\n            <inheritdoc/>\n        </member>\n        <member name=\"F:SharpDX.Color.Zero\">\n            <summary>\n            Zero color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.Transparent\">\n            <summary>\n            Transparent color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.AliceBlue\">\n            <summary>\n            AliceBlue color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.AntiqueWhite\">\n            <summary>\n            AntiqueWhite color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.Aqua\">\n            <summary>\n            Aqua color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.Aquamarine\">\n            <summary>\n            Aquamarine color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.Azure\">\n            <summary>\n            Azure color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.Beige\">\n            <summary>\n            Beige color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.Bisque\">\n            <summary>\n            Bisque color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.Black\">\n            <summary>\n            Black color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.BlanchedAlmond\">\n            <summary>\n            BlanchedAlmond color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.Blue\">\n            <summary>\n            Blue color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.BlueViolet\">\n            <summary>\n            BlueViolet color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.Brown\">\n            <summary>\n            Brown color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.BurlyWood\">\n            <summary>\n            BurlyWood color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.CadetBlue\">\n            <summary>\n            CadetBlue color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.Chartreuse\">\n            <summary>\n            Chartreuse color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.Chocolate\">\n            <summary>\n            Chocolate color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.Coral\">\n            <summary>\n            Coral color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.CornflowerBlue\">\n            <summary>\n            CornflowerBlue color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.Cornsilk\">\n            <summary>\n            Cornsilk color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.Crimson\">\n            <summary>\n            Crimson color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.Cyan\">\n            <summary>\n            Cyan color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.DarkBlue\">\n            <summary>\n            DarkBlue color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.DarkCyan\">\n            <summary>\n            DarkCyan color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.DarkGoldenrod\">\n            <summary>\n            DarkGoldenrod color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.DarkGray\">\n            <summary>\n            DarkGray color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.DarkGreen\">\n            <summary>\n            DarkGreen color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.DarkKhaki\">\n            <summary>\n            DarkKhaki color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.DarkMagenta\">\n            <summary>\n            DarkMagenta color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.DarkOliveGreen\">\n            <summary>\n            DarkOliveGreen color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.DarkOrange\">\n            <summary>\n            DarkOrange color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.DarkOrchid\">\n            <summary>\n            DarkOrchid color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.DarkRed\">\n            <summary>\n            DarkRed color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.DarkSalmon\">\n            <summary>\n            DarkSalmon color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.DarkSeaGreen\">\n            <summary>\n            DarkSeaGreen color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.DarkSlateBlue\">\n            <summary>\n            DarkSlateBlue color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.DarkSlateGray\">\n            <summary>\n            DarkSlateGray color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.DarkTurquoise\">\n            <summary>\n            DarkTurquoise color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.DarkViolet\">\n            <summary>\n            DarkViolet color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.DeepPink\">\n            <summary>\n            DeepPink color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.DeepSkyBlue\">\n            <summary>\n            DeepSkyBlue color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.DimGray\">\n            <summary>\n            DimGray color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.DodgerBlue\">\n            <summary>\n            DodgerBlue color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.Firebrick\">\n            <summary>\n            Firebrick color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.FloralWhite\">\n            <summary>\n            FloralWhite color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.ForestGreen\">\n            <summary>\n            ForestGreen color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.Fuchsia\">\n            <summary>\n            Fuchsia color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.Gainsboro\">\n            <summary>\n            Gainsboro color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.GhostWhite\">\n            <summary>\n            GhostWhite color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.Gold\">\n            <summary>\n            Gold color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.Goldenrod\">\n            <summary>\n            Goldenrod color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.Gray\">\n            <summary>\n            Gray color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.Green\">\n            <summary>\n            Green color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.GreenYellow\">\n            <summary>\n            GreenYellow color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.Honeydew\">\n            <summary>\n            Honeydew color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.HotPink\">\n            <summary>\n            HotPink color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.IndianRed\">\n            <summary>\n            IndianRed color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.Indigo\">\n            <summary>\n            Indigo color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.Ivory\">\n            <summary>\n            Ivory color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.Khaki\">\n            <summary>\n            Khaki color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.Lavender\">\n            <summary>\n            Lavender color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.LavenderBlush\">\n            <summary>\n            LavenderBlush color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.LawnGreen\">\n            <summary>\n            LawnGreen color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.LemonChiffon\">\n            <summary>\n            LemonChiffon color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.LightBlue\">\n            <summary>\n            LightBlue color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.LightCoral\">\n            <summary>\n            LightCoral color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.LightCyan\">\n            <summary>\n            LightCyan color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.LightGoldenrodYellow\">\n            <summary>\n            LightGoldenrodYellow color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.LightGray\">\n            <summary>\n            LightGray color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.LightGreen\">\n            <summary>\n            LightGreen color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.LightPink\">\n            <summary>\n            LightPink color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.LightSalmon\">\n            <summary>\n            LightSalmon color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.LightSeaGreen\">\n            <summary>\n            LightSeaGreen color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.LightSkyBlue\">\n            <summary>\n            LightSkyBlue color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.LightSlateGray\">\n            <summary>\n            LightSlateGray color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.LightSteelBlue\">\n            <summary>\n            LightSteelBlue color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.LightYellow\">\n            <summary>\n            LightYellow color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.Lime\">\n            <summary>\n            Lime color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.LimeGreen\">\n            <summary>\n            LimeGreen color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.Linen\">\n            <summary>\n            Linen color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.Magenta\">\n            <summary>\n            Magenta color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.Maroon\">\n            <summary>\n            Maroon color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.MediumAquamarine\">\n            <summary>\n            MediumAquamarine color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.MediumBlue\">\n            <summary>\n            MediumBlue color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.MediumOrchid\">\n            <summary>\n            MediumOrchid color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.MediumPurple\">\n            <summary>\n            MediumPurple color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.MediumSeaGreen\">\n            <summary>\n            MediumSeaGreen color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.MediumSlateBlue\">\n            <summary>\n            MediumSlateBlue color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.MediumSpringGreen\">\n            <summary>\n            MediumSpringGreen color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.MediumTurquoise\">\n            <summary>\n            MediumTurquoise color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.MediumVioletRed\">\n            <summary>\n            MediumVioletRed color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.MidnightBlue\">\n            <summary>\n            MidnightBlue color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.MintCream\">\n            <summary>\n            MintCream color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.MistyRose\">\n            <summary>\n            MistyRose color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.Moccasin\">\n            <summary>\n            Moccasin color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.NavajoWhite\">\n            <summary>\n            NavajoWhite color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.Navy\">\n            <summary>\n            Navy color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.OldLace\">\n            <summary>\n            OldLace color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.Olive\">\n            <summary>\n            Olive color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.OliveDrab\">\n            <summary>\n            OliveDrab color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.Orange\">\n            <summary>\n            Orange color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.OrangeRed\">\n            <summary>\n            OrangeRed color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.Orchid\">\n            <summary>\n            Orchid color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.PaleGoldenrod\">\n            <summary>\n            PaleGoldenrod color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.PaleGreen\">\n            <summary>\n            PaleGreen color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.PaleTurquoise\">\n            <summary>\n            PaleTurquoise color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.PaleVioletRed\">\n            <summary>\n            PaleVioletRed color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.PapayaWhip\">\n            <summary>\n            PapayaWhip color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.PeachPuff\">\n            <summary>\n            PeachPuff color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.Peru\">\n            <summary>\n            Peru color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.Pink\">\n            <summary>\n            Pink color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.Plum\">\n            <summary>\n            Plum color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.PowderBlue\">\n            <summary>\n            PowderBlue color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.Purple\">\n            <summary>\n            Purple color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.Red\">\n            <summary>\n            Red color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.RosyBrown\">\n            <summary>\n            RosyBrown color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.RoyalBlue\">\n            <summary>\n            RoyalBlue color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.SaddleBrown\">\n            <summary>\n            SaddleBrown color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.Salmon\">\n            <summary>\n            Salmon color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.SandyBrown\">\n            <summary>\n            SandyBrown color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.SeaGreen\">\n            <summary>\n            SeaGreen color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.SeaShell\">\n            <summary>\n            SeaShell color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.Sienna\">\n            <summary>\n            Sienna color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.Silver\">\n            <summary>\n            Silver color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.SkyBlue\">\n            <summary>\n            SkyBlue color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.SlateBlue\">\n            <summary>\n            SlateBlue color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.SlateGray\">\n            <summary>\n            SlateGray color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.Snow\">\n            <summary>\n            Snow color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.SpringGreen\">\n            <summary>\n            SpringGreen color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.SteelBlue\">\n            <summary>\n            SteelBlue color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.Tan\">\n            <summary>\n            Tan color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.Teal\">\n            <summary>\n            Teal color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.Thistle\">\n            <summary>\n            Thistle color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.Tomato\">\n            <summary>\n            Tomato color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.Turquoise\">\n            <summary>\n            Turquoise color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.Violet\">\n            <summary>\n            Violet color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.Wheat\">\n            <summary>\n            Wheat color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.White\">\n            <summary>\n            White color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.WhiteSmoke\">\n            <summary>\n            WhiteSmoke color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.Yellow\">\n            <summary>\n            Yellow color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color.YellowGreen\">\n            <summary>\n            YellowGreen color.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Color.Item(System.Int32)\">\n            <summary>\n            Gets or sets the component at the specified index.\n            </summary>\n            <value>The value of the alpha, red, green, or blue component, depending on the index.</value>\n            <param name=\"index\">The index of the component to access. Use 0 for the alpha component, 1 for the red component, 2 for the green component, and 3 for the blue component.</param>\n            <returns>The value of the component at the specified index.</returns>\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">Thrown when the <paramref name=\"index\"/> is out of the range [0, 3].</exception>\n        </member>\n        <member name=\"T:SharpDX.ColorBGRA\">\n            <summary>\n            Represents a 32-bit color (4 bytes) in the form of BGRA (in byte order: B, G, B, A).\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.ColorBGRA.B\">\n            <summary>\n            The blue component of the color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.ColorBGRA.G\">\n            <summary>\n            The green component of the color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.ColorBGRA.R\">\n            <summary>\n            The red component of the color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.ColorBGRA.A\">\n            <summary>\n            The alpha component of the color.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.ColorBGRA.#ctor(System.Byte)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.ColorBGRA\"/> struct.\n            </summary>\n            <param name=\"value\">The value that will be assigned to all components.</param>\n        </member>\n        <member name=\"M:SharpDX.ColorBGRA.#ctor(System.Single)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.ColorBGRA\"/> struct.\n            </summary>\n            <param name=\"value\">The value that will be assigned to all components.</param>\n        </member>\n        <member name=\"M:SharpDX.ColorBGRA.#ctor(System.Byte,System.Byte,System.Byte,System.Byte)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.ColorBGRA\"/> struct.\n            </summary>\n            <param name=\"red\">The red component of the color.</param>\n            <param name=\"green\">The green component of the color.</param>\n            <param name=\"blue\">The blue component of the color.</param>\n            <param name=\"alpha\">The alpha component of the color.</param>\n        </member>\n        <member name=\"M:SharpDX.ColorBGRA.#ctor(System.Single,System.Single,System.Single,System.Single)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.ColorBGRA\"/> struct.\n            </summary>\n            <param name=\"red\">The red component of the color.</param>\n            <param name=\"green\">The green component of the color.</param>\n            <param name=\"blue\">The blue component of the color.</param>\n            <param name=\"alpha\">The alpha component of the color.</param>\n        </member>\n        <member name=\"M:SharpDX.ColorBGRA.#ctor(SharpDX.Vector4)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.ColorBGRA\"/> struct.\n            </summary>\n            <param name=\"value\">The red, green, blue, and alpha components of the color.</param>\n        </member>\n        <member name=\"M:SharpDX.ColorBGRA.#ctor(SharpDX.Vector3,System.Single)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.ColorBGRA\"/> struct.\n            </summary>\n            <param name=\"value\">The red, green, and blue compoennts of the color.</param>\n            <param name=\"alpha\">The alpha component of the color.</param>\n        </member>\n        <member name=\"M:SharpDX.ColorBGRA.#ctor(System.UInt32)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.ColorBGRA\"/> struct.\n            </summary>\n            <param name=\"bgra\">A packed integer containing all four color components in BGRA order.</param>\n        </member>\n        <member name=\"M:SharpDX.ColorBGRA.#ctor(System.Int32)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.ColorBGRA\"/> struct.\n            </summary>\n            <param name=\"bgra\">A packed integer containing all four color components in BGRA.</param>\n        </member>\n        <member name=\"M:SharpDX.ColorBGRA.#ctor(System.Single[])\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.ColorBGRA\"/> struct.\n            </summary>\n            <param name=\"values\">The values to assign to the red, green, and blue, alpha components of the color. This must be an array with four elements.</param>\n            <exception cref=\"T:System.ArgumentNullException\">Thrown when <paramref name=\"values\"/> is <c>null</c>.</exception>\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">Thrown when <paramref name=\"values\"/> contains more or less than four elements.</exception>\n        </member>\n        <member name=\"M:SharpDX.ColorBGRA.#ctor(System.Byte[])\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.ColorBGRA\"/> struct.\n            </summary>\n            <param name=\"values\">The values to assign to the red, green, and blue, alpha components of the color. This must be an array with four elements.</param>\n            <exception cref=\"T:System.ArgumentNullException\">Thrown when <paramref name=\"values\"/> is <c>null</c>.</exception>\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">Thrown when <paramref name=\"values\"/> contains more or less than four elements.</exception>\n        </member>\n        <member name=\"M:SharpDX.ColorBGRA.ToBgra\">\n            <summary>\n            Converts the color into a packed integer.\n            </summary>\n            <returns>A packed integer containing all four color components.</returns>\n        </member>\n        <member name=\"M:SharpDX.ColorBGRA.ToRgba\">\n            <summary>\n            Converts the color into a packed integer.\n            </summary>\n            <returns>A packed integer containing all four color components.</returns>\n        </member>\n        <member name=\"M:SharpDX.ColorBGRA.ToVector3\">\n            <summary>\n            Converts the color into a three component vector.\n            </summary>\n            <returns>A three component vector containing the red, green, and blue components of the color.</returns>\n        </member>\n        <member name=\"M:SharpDX.ColorBGRA.ToColor3\">\n            <summary>\n            Converts the color into a three component color.\n            </summary>\n            <returns>A three component color containing the red, green, and blue components of the color.</returns>\n        </member>\n        <member name=\"M:SharpDX.ColorBGRA.ToVector4\">\n            <summary>\n            Converts the color into a four component vector.\n            </summary>\n            <returns>A four component vector containing all four color components.</returns>\n        </member>\n        <member name=\"M:SharpDX.ColorBGRA.ToArray\">\n            <summary>\n            Creates an array containing the elements of the color.\n            </summary>\n            <returns>A four-element array containing the components of the color in BGRA order.</returns>\n        </member>\n        <member name=\"M:SharpDX.ColorBGRA.GetBrightness\">\n            <summary>\n            Gets the brightness.\n            </summary>\n            <returns>The Hue-Saturation-Brightness (HSB) saturation for this <see cref=\"T:SharpDX.Color\"/></returns>\n        </member>\n        <member name=\"M:SharpDX.ColorBGRA.GetHue\">\n            <summary>\n            Gets the hue.\n            </summary>\n            <returns>The Hue-Saturation-Brightness (HSB) saturation for this <see cref=\"T:SharpDX.Color\"/></returns>\n        </member>\n        <member name=\"M:SharpDX.ColorBGRA.GetSaturation\">\n            <summary>\n            Gets the saturation.\n            </summary>\n            <returns>The Hue-Saturation-Brightness (HSB) saturation for this <see cref=\"T:SharpDX.Color\"/></returns>\n        </member>\n        <member name=\"M:SharpDX.ColorBGRA.FromBgra(System.Int32)\">\n            <summary>\n            Converts the color from a packed BGRA integer.\n            </summary>\n            <param name=\"color\">A packed integer containing all four color components in BGRA order</param>\n            <returns>A color.</returns>\n        </member>\n        <member name=\"M:SharpDX.ColorBGRA.FromBgra(System.UInt32)\">\n            <summary>\n            Converts the color from a packed BGRA integer.\n            </summary>\n            <param name=\"color\">A packed integer containing all four color components in BGRA order</param>\n            <returns>A color.</returns>\n        </member>\n        <member name=\"M:SharpDX.ColorBGRA.FromRgba(System.Int32)\">\n            <summary>\n            Converts the color from a packed RGBA integer.\n            </summary>\n            <param name=\"color\">A packed integer containing all four color components in RGBA order</param>\n            <returns>A color.</returns>\n        </member>\n        <member name=\"M:SharpDX.ColorBGRA.FromRgba(System.UInt32)\">\n            <summary>\n            Converts the color from a packed RGBA integer.\n            </summary>\n            <param name=\"color\">A packed integer containing all four color components in RGBA order</param>\n            <returns>A color.</returns>\n        </member>\n        <member name=\"M:SharpDX.ColorBGRA.Add(SharpDX.ColorBGRA@,SharpDX.ColorBGRA@,SharpDX.ColorBGRA@)\">\n            <summary>\n            Adds two colors.\n            </summary>\n            <param name=\"left\">The first color to add.</param>\n            <param name=\"right\">The second color to add.</param>\n            <param name=\"result\">When the method completes, completes the sum of the two colors.</param>\n        </member>\n        <member name=\"M:SharpDX.ColorBGRA.Add(SharpDX.ColorBGRA,SharpDX.ColorBGRA)\">\n            <summary>\n            Adds two colors.\n            </summary>\n            <param name=\"left\">The first color to add.</param>\n            <param name=\"right\">The second color to add.</param>\n            <returns>The sum of the two colors.</returns>\n        </member>\n        <member name=\"M:SharpDX.ColorBGRA.Subtract(SharpDX.ColorBGRA@,SharpDX.ColorBGRA@,SharpDX.ColorBGRA@)\">\n            <summary>\n            Subtracts two colors.\n            </summary>\n            <param name=\"left\">The first color to subtract.</param>\n            <param name=\"right\">The second color to subtract.</param>\n            <param name=\"result\">WHen the method completes, contains the difference of the two colors.</param>\n        </member>\n        <member name=\"M:SharpDX.ColorBGRA.Subtract(SharpDX.ColorBGRA,SharpDX.ColorBGRA)\">\n            <summary>\n            Subtracts two colors.\n            </summary>\n            <param name=\"left\">The first color to subtract.</param>\n            <param name=\"right\">The second color to subtract</param>\n            <returns>The difference of the two colors.</returns>\n        </member>\n        <member name=\"M:SharpDX.ColorBGRA.Modulate(SharpDX.ColorBGRA@,SharpDX.ColorBGRA@,SharpDX.ColorBGRA@)\">\n            <summary>\n            Modulates two colors.\n            </summary>\n            <param name=\"left\">The first color to modulate.</param>\n            <param name=\"right\">The second color to modulate.</param>\n            <param name=\"result\">When the method completes, contains the modulated color.</param>\n        </member>\n        <member name=\"M:SharpDX.ColorBGRA.Modulate(SharpDX.ColorBGRA,SharpDX.ColorBGRA)\">\n            <summary>\n            Modulates two colors.\n            </summary>\n            <param name=\"left\">The first color to modulate.</param>\n            <param name=\"right\">The second color to modulate.</param>\n            <returns>The modulated color.</returns>\n        </member>\n        <member name=\"M:SharpDX.ColorBGRA.Scale(SharpDX.ColorBGRA@,System.Single,SharpDX.ColorBGRA@)\">\n            <summary>\n            Scales a color.\n            </summary>\n            <param name=\"value\">The color to scale.</param>\n            <param name=\"scale\">The amount by which to scale.</param>\n            <param name=\"result\">When the method completes, contains the scaled color.</param>\n        </member>\n        <member name=\"M:SharpDX.ColorBGRA.Scale(SharpDX.ColorBGRA,System.Single)\">\n            <summary>\n            Scales a color.\n            </summary>\n            <param name=\"value\">The color to scale.</param>\n            <param name=\"scale\">The amount by which to scale.</param>\n            <returns>The scaled color.</returns>\n        </member>\n        <member name=\"M:SharpDX.ColorBGRA.Negate(SharpDX.ColorBGRA@,SharpDX.ColorBGRA@)\">\n            <summary>\n            Negates a color.\n            </summary>\n            <param name=\"value\">The color to negate.</param>\n            <param name=\"result\">When the method completes, contains the negated color.</param>\n        </member>\n        <member name=\"M:SharpDX.ColorBGRA.Negate(SharpDX.ColorBGRA)\">\n            <summary>\n            Negates a color.\n            </summary>\n            <param name=\"value\">The color to negate.</param>\n            <returns>The negated color.</returns>\n        </member>\n        <member name=\"M:SharpDX.ColorBGRA.Clamp(SharpDX.ColorBGRA@,SharpDX.ColorBGRA@,SharpDX.ColorBGRA@,SharpDX.ColorBGRA@)\">\n            <summary>\n            Restricts a value to be within a specified range.\n            </summary>\n            <param name=\"value\">The value to clamp.</param>\n            <param name=\"min\">The minimum value.</param>\n            <param name=\"max\">The maximum value.</param>\n            <param name=\"result\">When the method completes, contains the clamped value.</param>\n        </member>\n        <member name=\"M:SharpDX.ColorBGRA.Clamp(SharpDX.ColorBGRA,SharpDX.ColorBGRA,SharpDX.ColorBGRA)\">\n            <summary>\n            Restricts a value to be within a specified range.\n            </summary>\n            <param name=\"value\">The value to clamp.</param>\n            <param name=\"min\">The minimum value.</param>\n            <param name=\"max\">The maximum value.</param>\n            <returns>The clamped value.</returns>\n        </member>\n        <member name=\"M:SharpDX.ColorBGRA.Lerp(SharpDX.ColorBGRA@,SharpDX.ColorBGRA@,System.Single,SharpDX.ColorBGRA@)\">\n            <summary>\n            Performs a linear interpolation between two colors.\n            </summary>\n            <param name=\"start\">Start color.</param>\n            <param name=\"end\">End color.</param>\n            <param name=\"amount\">Value between 0 and 1 indicating the weight of <paramref name=\"end\"/>.</param>\n            <param name=\"result\">When the method completes, contains the linear interpolation of the two colors.</param>\n            <remarks>\n            This method performs the linear interpolation based on the following formula.\n            <code>start + (end - start) * amount</code>\n            Passing <paramref name=\"amount\"/> a value of 0 will cause <paramref name=\"start\"/> to be returned; a value of 1 will cause <paramref name=\"end\"/> to be returned. \n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.ColorBGRA.Lerp(SharpDX.ColorBGRA,SharpDX.ColorBGRA,System.Single)\">\n            <summary>\n            Performs a linear interpolation between two colors.\n            </summary>\n            <param name=\"start\">Start color.</param>\n            <param name=\"end\">End color.</param>\n            <param name=\"amount\">Value between 0 and 1 indicating the weight of <paramref name=\"end\"/>.</param>\n            <returns>The linear interpolation of the two colors.</returns>\n            <remarks>\n            This method performs the linear interpolation based on the following formula.\n            <code>start + (end - start) * amount</code>\n            Passing <paramref name=\"amount\"/> a value of 0 will cause <paramref name=\"start\"/> to be returned; a value of 1 will cause <paramref name=\"end\"/> to be returned. \n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.ColorBGRA.SmoothStep(SharpDX.ColorBGRA@,SharpDX.ColorBGRA@,System.Single,SharpDX.ColorBGRA@)\">\n            <summary>\n            Performs a cubic interpolation between two colors.\n            </summary>\n            <param name=\"start\">Start color.</param>\n            <param name=\"end\">End color.</param>\n            <param name=\"amount\">Value between 0 and 1 indicating the weight of <paramref name=\"end\"/>.</param>\n            <param name=\"result\">When the method completes, contains the cubic interpolation of the two colors.</param>\n        </member>\n        <member name=\"M:SharpDX.ColorBGRA.SmoothStep(SharpDX.ColorBGRA,SharpDX.ColorBGRA,System.Single)\">\n            <summary>\n            Performs a cubic interpolation between two colors.\n            </summary>\n            <param name=\"start\">Start color.</param>\n            <param name=\"end\">End color.</param>\n            <param name=\"amount\">Value between 0 and 1 indicating the weight of <paramref name=\"end\"/>.</param>\n            <returns>The cubic interpolation of the two colors.</returns>\n        </member>\n        <member name=\"M:SharpDX.ColorBGRA.Max(SharpDX.ColorBGRA@,SharpDX.ColorBGRA@,SharpDX.ColorBGRA@)\">\n            <summary>\n            Returns a color containing the smallest components of the specified colorss.\n            </summary>\n            <param name=\"left\">The first source color.</param>\n            <param name=\"right\">The second source color.</param>\n            <param name=\"result\">When the method completes, contains an new color composed of the largest components of the source colorss.</param>\n        </member>\n        <member name=\"M:SharpDX.ColorBGRA.Max(SharpDX.ColorBGRA,SharpDX.ColorBGRA)\">\n            <summary>\n            Returns a color containing the largest components of the specified colorss.\n            </summary>\n            <param name=\"left\">The first source color.</param>\n            <param name=\"right\">The second source color.</param>\n            <returns>A color containing the largest components of the source colors.</returns>\n        </member>\n        <member name=\"M:SharpDX.ColorBGRA.Min(SharpDX.ColorBGRA@,SharpDX.ColorBGRA@,SharpDX.ColorBGRA@)\">\n            <summary>\n            Returns a color containing the smallest components of the specified colors.\n            </summary>\n            <param name=\"left\">The first source color.</param>\n            <param name=\"right\">The second source color.</param>\n            <param name=\"result\">When the method completes, contains an new color composed of the smallest components of the source colors.</param>\n        </member>\n        <member name=\"M:SharpDX.ColorBGRA.Min(SharpDX.ColorBGRA,SharpDX.ColorBGRA)\">\n            <summary>\n            Returns a color containing the smallest components of the specified colors.\n            </summary>\n            <param name=\"left\">The first source color.</param>\n            <param name=\"right\">The second source color.</param>\n            <returns>A color containing the smallest components of the source colors.</returns>\n        </member>\n        <member name=\"M:SharpDX.ColorBGRA.AdjustContrast(SharpDX.ColorBGRA@,System.Single,SharpDX.ColorBGRA@)\">\n            <summary>\n            Adjusts the contrast of a color.\n            </summary>\n            <param name=\"value\">The color whose contrast is to be adjusted.</param>\n            <param name=\"contrast\">The amount by which to adjust the contrast.</param>\n            <param name=\"result\">When the method completes, contains the adjusted color.</param>\n        </member>\n        <member name=\"M:SharpDX.ColorBGRA.AdjustContrast(SharpDX.ColorBGRA,System.Single)\">\n            <summary>\n            Adjusts the contrast of a color.\n            </summary>\n            <param name=\"value\">The color whose contrast is to be adjusted.</param>\n            <param name=\"contrast\">The amount by which to adjust the contrast.</param>\n            <returns>The adjusted color.</returns>\n        </member>\n        <member name=\"M:SharpDX.ColorBGRA.AdjustSaturation(SharpDX.ColorBGRA@,System.Single,SharpDX.ColorBGRA@)\">\n            <summary>\n            Adjusts the saturation of a color.\n            </summary>\n            <param name=\"value\">The color whose saturation is to be adjusted.</param>\n            <param name=\"saturation\">The amount by which to adjust the saturation.</param>\n            <param name=\"result\">When the method completes, contains the adjusted color.</param>\n        </member>\n        <member name=\"M:SharpDX.ColorBGRA.AdjustSaturation(SharpDX.ColorBGRA,System.Single)\">\n            <summary>\n            Adjusts the saturation of a color.\n            </summary>\n            <param name=\"value\">The color whose saturation is to be adjusted.</param>\n            <param name=\"saturation\">The amount by which to adjust the saturation.</param>\n            <returns>The adjusted color.</returns>\n        </member>\n        <member name=\"M:SharpDX.ColorBGRA.op_Addition(SharpDX.ColorBGRA,SharpDX.ColorBGRA)\">\n            <summary>\n            Adds two colors.\n            </summary>\n            <param name=\"left\">The first color to add.</param>\n            <param name=\"right\">The second color to add.</param>\n            <returns>The sum of the two colors.</returns>\n        </member>\n        <member name=\"M:SharpDX.ColorBGRA.op_UnaryPlus(SharpDX.ColorBGRA)\">\n            <summary>\n            Assert a color (return it unchanged).\n            </summary>\n            <param name=\"value\">The color to assert (unchange).</param>\n            <returns>The asserted (unchanged) color.</returns>\n        </member>\n        <member name=\"M:SharpDX.ColorBGRA.op_Subtraction(SharpDX.ColorBGRA,SharpDX.ColorBGRA)\">\n            <summary>\n            Subtracts two colors.\n            </summary>\n            <param name=\"left\">The first color to subtract.</param>\n            <param name=\"right\">The second color to subtract.</param>\n            <returns>The difference of the two colors.</returns>\n        </member>\n        <member name=\"M:SharpDX.ColorBGRA.op_UnaryNegation(SharpDX.ColorBGRA)\">\n            <summary>\n            Negates a color.\n            </summary>\n            <param name=\"value\">The color to negate.</param>\n            <returns>A negated color.</returns>\n        </member>\n        <member name=\"M:SharpDX.ColorBGRA.op_Multiply(System.Single,SharpDX.ColorBGRA)\">\n            <summary>\n            Scales a color.\n            </summary>\n            <param name=\"scale\">The factor by which to scale the color.</param>\n            <param name=\"value\">The color to scale.</param>\n            <returns>The scaled color.</returns>\n        </member>\n        <member name=\"M:SharpDX.ColorBGRA.op_Multiply(SharpDX.ColorBGRA,System.Single)\">\n            <summary>\n            Scales a color.\n            </summary>\n            <param name=\"value\">The factor by which to scale the color.</param>\n            <param name=\"scale\">The color to scale.</param>\n            <returns>The scaled color.</returns>\n        </member>\n        <member name=\"M:SharpDX.ColorBGRA.op_Multiply(SharpDX.ColorBGRA,SharpDX.ColorBGRA)\">\n            <summary>\n            Modulates two colors.\n            </summary>\n            <param name=\"left\">The first color to modulate.</param>\n            <param name=\"right\">The second color to modulate.</param>\n            <returns>The modulated color.</returns>\n        </member>\n        <member name=\"M:SharpDX.ColorBGRA.op_Equality(SharpDX.ColorBGRA,SharpDX.ColorBGRA)\">\n            <summary>\n            Tests for equality between two objects.\n            </summary>\n            <param name=\"left\">The first value to compare.</param>\n            <param name=\"right\">The second value to compare.</param>\n            <returns><c>true</c> if <paramref name=\"left\"/> has the same value as <paramref name=\"right\"/>; otherwise, <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.ColorBGRA.op_Inequality(SharpDX.ColorBGRA,SharpDX.ColorBGRA)\">\n            <summary>\n            Tests for inequality between two objects.\n            </summary>\n            <param name=\"left\">The first value to compare.</param>\n            <param name=\"right\">The second value to compare.</param>\n            <returns><c>true</c> if <paramref name=\"left\"/> has a different value than <paramref name=\"right\"/>; otherwise, <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.ColorBGRA.op_Explicit(SharpDX.ColorBGRA)~SharpDX.Color3\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:SharpDX.ColorBGRA\"/> to <see cref=\"T:SharpDX.Color3\"/>.\n            </summary>\n            <param name=\"value\">The value.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"M:SharpDX.ColorBGRA.op_Explicit(SharpDX.ColorBGRA)~SharpDX.Vector3\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:SharpDX.ColorBGRA\"/> to <see cref=\"T:SharpDX.Vector3\"/>.\n            </summary>\n            <param name=\"value\">The value.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"M:SharpDX.ColorBGRA.op_Explicit(SharpDX.ColorBGRA)~SharpDX.Vector4\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:SharpDX.ColorBGRA\"/> to <see cref=\"T:SharpDX.Vector4\"/>.\n            </summary>\n            <param name=\"value\">The value.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"M:SharpDX.ColorBGRA.op_Explicit(SharpDX.ColorBGRA)~SharpDX.Color4\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:SharpDX.ColorBGRA\"/> to <see cref=\"T:SharpDX.Color4\"/>.\n            </summary>\n            <param name=\"value\">The value.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"M:SharpDX.ColorBGRA.op_Explicit(SharpDX.Vector3)~SharpDX.ColorBGRA\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:SharpDX.Vector3\"/> to <see cref=\"T:SharpDX.ColorBGRA\"/>.\n            </summary>\n            <param name=\"value\">The value.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"M:SharpDX.ColorBGRA.op_Explicit(SharpDX.Color3)~SharpDX.ColorBGRA\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:SharpDX.Color3\"/> to <see cref=\"T:SharpDX.ColorBGRA\"/>.\n            </summary>\n            <param name=\"value\">The value.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"M:SharpDX.ColorBGRA.op_Explicit(SharpDX.Vector4)~SharpDX.ColorBGRA\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:SharpDX.Vector4\"/> to <see cref=\"T:SharpDX.ColorBGRA\"/>.\n            </summary>\n            <param name=\"value\">The value.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"M:SharpDX.ColorBGRA.op_Explicit(SharpDX.Color4)~SharpDX.ColorBGRA\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:SharpDX.Color4\"/> to <see cref=\"T:SharpDX.ColorBGRA\"/>.\n            </summary>\n            <param name=\"value\">The value.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"M:SharpDX.ColorBGRA.op_Implicit(SharpDX.Color)~SharpDX.ColorBGRA\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:SharpDX.Color\"/> to <see cref=\"T:SharpDX.ColorBGRA\"/>.\n            </summary>\n            <param name=\"value\">The value.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"M:SharpDX.ColorBGRA.op_Implicit(SharpDX.ColorBGRA)~SharpDX.Color\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:SharpDX.ColorBGRA\"/> to <see cref=\"T:SharpDX.Color\"/>.\n            </summary>\n            <param name=\"value\">The value.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"M:SharpDX.ColorBGRA.op_Explicit(SharpDX.ColorBGRA)~System.Int32\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:SharpDX.ColorBGRA\"/> to <see cref=\"T:System.Int32\"/>.\n            </summary>\n            <param name=\"value\">The value.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.ColorBGRA.op_Explicit(System.Int32)~SharpDX.ColorBGRA\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.Int32\"/> to <see cref=\"T:SharpDX.ColorBGRA\"/>.\n            </summary>\n            <param name=\"value\">The value.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.ColorBGRA.ToString\">\n            <summary>\n            Returns a <see cref=\"T:System.String\"/> that represents this instance.\n            </summary>\n            <returns>\n            A <see cref=\"T:System.String\"/> that represents this instance.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.ColorBGRA.ToString(System.String)\">\n            <summary>\n            Returns a <see cref=\"T:System.String\"/> that represents this instance.\n            </summary>\n            <param name=\"format\">The format.</param>\n            <returns>\n            A <see cref=\"T:System.String\"/> that represents this instance.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.ColorBGRA.ToString(System.IFormatProvider)\">\n            <summary>\n            Returns a <see cref=\"T:System.String\"/> that represents this instance.\n            </summary>\n            <param name=\"formatProvider\">The format provider.</param>\n            <returns>\n            A <see cref=\"T:System.String\"/> that represents this instance.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.ColorBGRA.ToString(System.String,System.IFormatProvider)\">\n            <summary>\n            Returns a <see cref=\"T:System.String\"/> that represents this instance.\n            </summary>\n            <param name=\"format\">The format.</param>\n            <param name=\"formatProvider\">The format provider.</param>\n            <returns>\n            A <see cref=\"T:System.String\"/> that represents this instance.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.ColorBGRA.GetHashCode\">\n            <summary>\n            Returns a hash code for this instance.\n            </summary>\n            <returns>\n            A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. \n            </returns>\n        </member>\n        <member name=\"M:SharpDX.ColorBGRA.Equals(SharpDX.ColorBGRA)\">\n            <summary>\n            Determines whether the specified <see cref=\"T:SharpDX.ColorBGRA\"/> is equal to this instance.\n            </summary>\n            <param name=\"other\">The <see cref=\"T:SharpDX.ColorBGRA\"/> to compare with this instance.</param>\n            <returns>\n            <c>true</c> if the specified <see cref=\"T:SharpDX.ColorBGRA\"/> is equal to this instance; otherwise, <c>false</c>.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.ColorBGRA.Equals(System.Object)\">\n            <summary>\n            Determines whether the specified <see cref=\"T:System.Object\"/> is equal to this instance.\n            </summary>\n            <param name=\"value\">The <see cref=\"T:System.Object\"/> to compare with this instance.</param>\n            <returns>\n            <c>true</c> if the specified <see cref=\"T:System.Object\"/> is equal to this instance; otherwise, <c>false</c>.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.ColorBGRA.SharpDX#Serialization#IDataSerializable#Serialize(SharpDX.Serialization.BinarySerializer)\">\n            <inheritdoc/>\n        </member>\n        <member name=\"P:SharpDX.ColorBGRA.Item(System.Int32)\">\n            <summary>\n            Gets or sets the component at the specified index.\n            </summary>\n            <value>The value of the alpha, red, green, or blue component, depending on the index.</value>\n            <param name=\"index\">The index of the component to access. Use 0 for the alpha component, 1 for the red component, 2 for the green component, and 3 for the blue component.</param>\n            <returns>The value of the component at the specified index.</returns>\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">Thrown when the <paramref name=\"index\"/> is out of the range [0, 3].</exception>\n        </member>\n        <member name=\"T:SharpDX.Design.ColorConverter\">\n            <summary>\n            Defines a type converter for <see cref=\"T:SharpDX.Color\"/>.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Design.ColorConverter.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Design.ColorConverter\"/> class.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Design.ColorConverter.ConvertTo(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type)\">\n            <summary>\n            Converts the given value object to the specified type, using the specified context and culture information.\n            </summary>\n            <param name=\"context\">An <see cref=\"T:System.ComponentModel.ITypeDescriptorContext\"/> that provides a format context.</param>\n            <param name=\"culture\">A <see cref=\"T:System.Globalization.CultureInfo\"/>. If null is passed, the current culture is assumed.</param>\n            <param name=\"value\">The <see cref=\"T:System.Object\"/> to convert.</param>\n            <param name=\"destinationType\">The <see cref=\"T:System.Type\"/> to convert the <paramref name=\"value\"/> parameter to.</param>\n            <returns>\n            An <see cref=\"T:System.Object\"/> that represents the converted value.\n            </returns>\n            <exception cref=\"T:System.ArgumentNullException\">\n            The <paramref name=\"destinationType\"/> parameter is null.\n            </exception>\n            <exception cref=\"T:System.NotSupportedException\">\n            The conversion cannot be performed.\n            </exception>\n        </member>\n        <member name=\"M:SharpDX.Design.ColorConverter.ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object)\">\n            <summary>\n            Converts the given object to the type of this converter, using the specified context and culture information.\n            </summary>\n            <param name=\"context\">An <see cref=\"T:System.ComponentModel.ITypeDescriptorContext\"/> that provides a format context.</param>\n            <param name=\"culture\">The <see cref=\"T:System.Globalization.CultureInfo\"/> to use as the current culture.</param>\n            <param name=\"value\">The <see cref=\"T:System.Object\"/> to convert.</param>\n            <returns>\n            An <see cref=\"T:System.Object\"/> that represents the converted value.\n            </returns>\n            <exception cref=\"T:System.NotSupportedException\">\n            The conversion cannot be performed.\n            </exception>\n        </member>\n        <member name=\"M:SharpDX.Design.ColorConverter.CreateInstance(System.ComponentModel.ITypeDescriptorContext,System.Collections.IDictionary)\">\n            <summary>\n            Creates an instance of the type that this <see cref=\"T:System.ComponentModel.TypeConverter\"/> is associated with, using the specified context, given a set of property values for the object.\n            </summary>\n            <param name=\"context\">An <see cref=\"T:System.ComponentModel.ITypeDescriptorContext\"/> that provides a format context.</param>\n            <param name=\"propertyValues\">An <see cref=\"T:System.Collections.IDictionary\"/> of new property values.</param>\n            <returns>\n            An <see cref=\"T:System.Object\"/> representing the given <see cref=\"T:System.Collections.IDictionary\"/>, or null if the object cannot be created. This method always returns null.\n            </returns>\n        </member>\n        <member name=\"T:SharpDX.IComponent\">\n            <summary>\n            Base interface for a component base.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.IComponent.Name\">\n            <summary>\n            Gets the name of this component.\n            </summary>\n            <value>The name.</value>\n        </member>\n        <member name=\"T:SharpDX.IServiceRegistry\">\n            <summary>\n            A service registry is a <see cref=\"T:System.IServiceProvider\"/> that provides methods to register and unregister services.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.IServiceRegistry.AddService(System.Type,System.Object)\">\n            <summary>\n            Adds a service to this service provider.\n            </summary>\n            <param name=\"type\">The type of service to add.</param>\n            <param name=\"provider\">The instance of the service provider to add.</param>\n            <exception cref=\"T:System.ArgumentNullException\">Service type cannot be null</exception>\n            <exception cref=\"T:System.ArgumentException\">Service is already registered</exception>\n        </member>\n        <member name=\"M:SharpDX.IServiceRegistry.RemoveService(System.Type)\">\n            <summary>\n            Removes the object providing a specified service.\n            </summary>\n            <param name=\"type\">The type of service.</param>\n        </member>\n        <member name=\"E:SharpDX.IServiceRegistry.ServiceAdded\">\n            <summary>\n            Occurs when a new service is added.\n            </summary>\n        </member>\n        <member name=\"E:SharpDX.IServiceRegistry.ServiceRemoved\">\n            <summary>\n            Occurs when when a service is removed.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.IO.PathUtility\">\n            <summary>\n            Path utility methods.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.IO.PathUtility.GetNormalizedPath(System.String)\">\n            <summary>\n            Transform a path by replacing '/' by '\\' and transforming relative '..' or current path '.' to an absolute path. See remarks.\n            </summary>\n            <param name=\"path\">A path string</param>\n            <returns>A normalized path.</returns>\n            <remarks>\n            Unlike <see cref=\"T:System.IO.Path\"/> , this doesn't make a path absolute to the actual file system.\n            </remarks>\n        </member>\n        <member name=\"T:SharpDX.Serialization.ArrayLengthType\">\n            <summary>\n            Specify the size used for encoding length for array while using a <see cref=\"T:SharpDX.Serialization.BinarySerializer\"/>, just before an array is encoded.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Serialization.ArrayLengthType.Dynamic\">\n            <summary>\n            Use variable length 7Bit Encoding that will output from 1 byte to 5 byte depending on the range of length value.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Serialization.ArrayLengthType.Byte\">\n            <summary>\n            Output a length as a byte. The length must not be greater than 255.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Serialization.ArrayLengthType.UShort\">\n            <summary>\n            Output a length as an ushort. The length must not be greater than 65535.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Serialization.ArrayLengthType.Int\">\n            <summary>\n            Output a length as an int. The length must not be greater than 2^31 - 1.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Serialization.NamespaceDoc\">\n            <summary>\n            The <see cref=\"N:SharpDX.Serialization\"/> namespace contains a serialization API.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Serialization.SerializeFlags\">\n            <summary>\n            Flags used when serializing a value with a <see cref=\"T:SharpDX.Serialization.BinarySerializer\"/>.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Serialization.SerializeFlags.Normal\">\n            <summary>\n            Normal serialize (not dynamic, not nullable).\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Serialization.SerializeFlags.Dynamic\">\n            <summary>\n            Serialize a value as a dynamic value (the output stream will contain a magic-code for each encoded object). \n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Serialization.SerializeFlags.Nullable\">\n            <summary>\n            Serialize a value that can be null.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.SingletonString\">\n            <summary>\n            A singleton string is a string that has a unique instance in memory, See remarks for usage scenarios.\n            </summary>\n            <remarks>\n            This class should mostly be used internally for performance reasons, in scenarios where equals/hashcode\n            could be invoked frequently, and the set of strings is limited. Internally, <see cref=\"T:SharpDX.SingletonString\"/> \n            string is using the method <see cref=\"M:System.String.Intern(System.String)\"/> and also is precaching the hashcode of the string.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.SingletonString.#ctor(System.String)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.SingletonString\"/> struct.\n            </summary>\n            <param name=\"text\">The text.</param>\n        </member>\n        <member name=\"M:SharpDX.SingletonString.op_Equality(SharpDX.SingletonString,SharpDX.SingletonString)\">\n            <summary>\n            Implements the operator ==.\n            </summary>\n            <param name=\"left\">The left.</param>\n            <param name=\"right\">The right.</param>\n            <returns>The result of the operator.</returns>\n        </member>\n        <member name=\"M:SharpDX.SingletonString.op_Inequality(SharpDX.SingletonString,SharpDX.SingletonString)\">\n            <summary>\n            Implements the operator !=.\n            </summary>\n            <param name=\"left\">The left.</param>\n            <param name=\"right\">The right.</param>\n            <returns>The result of the operator.</returns>\n        </member>\n        <member name=\"M:SharpDX.SingletonString.op_Equality(SharpDX.SingletonString,System.String)\">\n            <summary>\n            Implements the operator ==.\n            </summary>\n            <param name=\"left\">The left.</param>\n            <param name=\"right\">The right.</param>\n            <returns>The result of the operator.</returns>\n        </member>\n        <member name=\"M:SharpDX.SingletonString.op_Inequality(SharpDX.SingletonString,System.String)\">\n            <summary>\n            Implements the operator !=.\n            </summary>\n            <param name=\"left\">The left.</param>\n            <param name=\"right\">The right.</param>\n            <returns>The result of the operator.</returns>\n        </member>\n        <member name=\"M:SharpDX.SingletonString.op_Implicit(SharpDX.SingletonString)~System.String\">\n            <summary>\n            Performs an implicit conversion from <see cref=\"T:SharpDX.SingletonString\"/> to <see cref=\"T:System.String\"/>.\n            </summary>\n            <param name=\"value\">The value.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"M:SharpDX.SingletonString.op_Explicit(System.String)~SharpDX.SingletonString\">\n            <summary>\n            Performs an explcit conversion from <see cref=\"T:System.String\"/> to <see cref=\"T:SharpDX.SingletonString\"/>.\n            </summary>\n            <param name=\"value\">The value.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"T:SharpDX.ComponentBase\">\n            <summary>\n            A lighweight Component base class.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.ComponentBase.name\">\n            <summary>\n            Occurs while this component is disposing and before it is disposed.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.ComponentBase.isNameImmutable\">\n            <summary>\n            Gets or sets a value indicating whether the name of this instance is immutable.\n            </summary>\n            <value><c>true</c> if this instance is name immutable; otherwise, <c>false</c>.</value>\n        </member>\n        <member name=\"M:SharpDX.ComponentBase.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.ComponentBase\"/> class with a mutable name.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.ComponentBase.#ctor(System.String)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.ComponentBase\"/> class with an immutable name.\n            </summary>\n            <param name=\"name\">The name.</param>\n        </member>\n        <member name=\"P:SharpDX.ComponentBase.Name\">\n            <summary>\n            Gets the name of this component.\n            </summary>\n            <value>The name.</value>\n        </member>\n        <member name=\"P:SharpDX.ComponentBase.Tag\">\n            <summary>\n            Gets or sets the tag associated to this object.\n            </summary>\n            <value>The tag.</value>\n        </member>\n        <member name=\"T:SharpDX.DataPointer\">\n            <summary>\n            Pointer to a native buffer with a specific size.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DataPointer.Zero\">\n            <summary>\n            Gets an Empty Data Pointer.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.DataPointer.#ctor(System.IntPtr,System.Int32)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DataPointer\"/> struct.\n            </summary>\n            <param name=\"pointer\">The pointer.</param>\n            <param name=\"size\">The size.</param>\n        </member>\n        <member name=\"M:SharpDX.DataPointer.#ctor(System.Void*,System.Int32)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DataPointer\"/> struct.\n            </summary>\n            <param name=\"pointer\">The pointer.</param>\n            <param name=\"size\">The size.</param>\n        </member>\n        <member name=\"F:SharpDX.DataPointer.Pointer\">\n            <summary>\n            Pointer to the buffer.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DataPointer.Size\">\n            <summary>\n            Size in bytes of the buffer.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.DataPointer.op_Equality(SharpDX.DataPointer,SharpDX.DataPointer)\">\n            <summary>\n            Implements the ==.\n            </summary>\n            <param name=\"left\">The left.</param>\n            <param name=\"right\">The right.</param>\n            <returns>The result of the operator.</returns>\n        </member>\n        <member name=\"M:SharpDX.DataPointer.op_Inequality(SharpDX.DataPointer,SharpDX.DataPointer)\">\n            <summary>\n            Implements the !=.\n            </summary>\n            <param name=\"left\">The left.</param>\n            <param name=\"right\">The right.</param>\n            <returns>The result of the operator.</returns>\n        </member>\n        <member name=\"T:SharpDX.Design.NamespaceDoc\">\n            <summary>\n            The <see cref=\"N:SharpDX.Design\"/> namespace contains design-time converters for all vectors structures.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Diagnostics.NamespaceDoc\">\n            <summary>\n            The <see cref=\"N:SharpDX.Diagnostics\"/> namespace contains classes to help to diagnostic of COM object lifecycles Dispose and Release methods.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Direct3D.NamespaceDoc\">\n            <summary>\n            The <see cref=\"N:SharpDX.Direct3D\"/> namespace contains enumerations and structures shared by <see cref=\"A:SharpDX.D3DCompiler\"/>, <see cref=\"A:SharpDX.Direct3D10\"/> and <see cref=\"A:SharpDX.Direct3D11\"/> assemblies.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.DisposeCollector\">\n            <summary>\n            A class to dispose <see cref=\"T:System.IDisposable\"/> instances and allocated unmanaged memory.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.DisposeCollector.DisposeAndClear\">\n            <summary>\n            Disposes all object collected by this class and clear the list. The collector can still be used for collecting.\n            </summary>\n            <remarks>\n            To completely dispose this instance and avoid further dispose, use <see cref=\"M:SharpDX.DisposeCollector.Dispose(System.Boolean)\"/> method instead.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.DisposeCollector.Dispose(System.Boolean)\">\n            <summary>\n            Disposes of object resources.\n            </summary>\n            <param name=\"disposeManagedResources\">If true, managed resources should be\n            disposed of in addition to unmanaged resources.</param>\n        </member>\n        <member name=\"M:SharpDX.DisposeCollector.Collect``1(``0)\">\n            <summary>\n            Adds a <see cref=\"T:System.IDisposable\"/> object or a <see cref=\"T:System.IntPtr\"/> allocated using <see cref=\"M:SharpDX.Utilities.AllocateMemory(System.Int32,System.Int32)\"/> to the list of the objects to dispose.\n            </summary>\n            <param name=\"toDispose\">To dispose.</param>\n            <exception cref=\"T:System.ArgumentException\">If toDispose argument is not IDisposable or a valid memory pointer allocated by <see cref=\"M:SharpDX.Utilities.AllocateMemory(System.Int32,System.Int32)\"/></exception>\n        </member>\n        <member name=\"M:SharpDX.DisposeCollector.RemoveAndDispose``1(``0@)\">\n            <summary>\n            Dispose a disposable object and set the reference to null. Removes this object from this instance..\n            </summary>\n            <param name=\"objectToDispose\">Object to dispose.</param>\n        </member>\n        <member name=\"M:SharpDX.DisposeCollector.Remove``1(``0)\">\n            <summary>\n            Removes a disposable object to the list of the objects to dispose.\n            </summary>\n            <typeparam name=\"T\"></typeparam>\n            <param name=\"toDisposeArg\">To dispose.</param>\n        </member>\n        <member name=\"P:SharpDX.DisposeCollector.Count\">\n            <summary>\n            Gets the number of elements to dispose.\n            </summary>\n            <value>The number of elements to dispose.</value>\n        </member>\n        <member name=\"T:SharpDX.FrustumCameraParams\">\n            <summary>\n            Frustum camera parameters.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.FrustumCameraParams.Position\">\n            <summary>\n            Position of the camera.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.FrustumCameraParams.LookAtDir\">\n            <summary>\n            Looking at direction of the camera.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.FrustumCameraParams.UpDir\">\n            <summary>\n            Up direction.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.FrustumCameraParams.FOV\">\n            <summary>\n            Field of view.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.FrustumCameraParams.ZNear\">\n            <summary>\n            Z near distance.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.FrustumCameraParams.ZFar\">\n            <summary>\n            Z far distance.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.FrustumCameraParams.AspectRatio\">\n            <summary>\n            Aspect ratio.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.IdentityEqualityComparer`1\">\n            <summary>\n            Equality comparer using the identify of the object.\n            </summary>\n            <typeparam name=\"T\">Type of the parameter</typeparam>\n            <remarks>\n            From http://stackoverflow.com/questions/8946790/how-to-use-an-objects-identity-as-key-for-dictionaryk-v.\n            </remarks>\n        </member>\n        <member name=\"T:SharpDX.Int3\">\n            <summary>\n            Represents a three dimensional mathematical int vector.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Int3.SizeInBytes\">\n            <summary>\n            The size of the <see cref=\"T:SharpDX.Int3\"/> type, in bytes.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Int3.Zero\">\n            <summary>\n            A <see cref=\"T:SharpDX.Int3\"/> with all of its components set to zero.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Int3.UnitX\">\n            <summary>\n            The X unit <see cref=\"T:SharpDX.Int3\"/> (1, 0, 0).\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Int3.UnitY\">\n            <summary>\n            The Y unit <see cref=\"T:SharpDX.Int3\"/> (0, 1, 0).\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Int3.UnitZ\">\n            <summary>\n            The Z unit <see cref=\"T:SharpDX.Int3\"/> (0, 0, 1).\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Int3.One\">\n            <summary>\n            A <see cref=\"T:SharpDX.Int3\"/> with all of its components set to one.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Int3.X\">\n            <summary>\n            The X component of the vector.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Int3.Y\">\n            <summary>\n            The Y component of the vector.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Int3.Z\">\n            <summary>\n            The Z component of the vector.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Int3.#ctor(System.Int32)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Int3\"/> struct.\n            </summary>\n            <param name=\"value\">The value that will be assigned to all components.</param>\n        </member>\n        <member name=\"M:SharpDX.Int3.#ctor(System.Int32,System.Int32,System.Int32)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Int3\"/> struct.\n            </summary>\n            <param name=\"x\">Initial value for the X component of the vector.</param>\n            <param name=\"y\">Initial value for the Y component of the vector.</param>\n            <param name=\"z\">Initial value for the Z component of the vector.</param>\n        </member>\n        <member name=\"M:SharpDX.Int3.#ctor(System.Int32[])\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Int3\"/> struct.\n            </summary>\n            <param name=\"values\">The values to assign to the X, Y, Z, and W components of the vector. This must be an array with four elements.</param>\n            <exception cref=\"T:System.ArgumentNullException\">Thrown when <paramref name=\"values\"/> is <c>null</c>.</exception>\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">Thrown when <paramref name=\"values\"/> contains more or less than four elements.</exception>\n        </member>\n        <member name=\"M:SharpDX.Int3.ToArray\">\n            <summary>\n            Creates an array containing the elements of the vector.\n            </summary>\n            <returns>A four-element array containing the components of the vector.</returns>\n        </member>\n        <member name=\"M:SharpDX.Int3.Add(SharpDX.Int3@,SharpDX.Int3@,SharpDX.Int3@)\">\n            <summary>\n            Adds two vectors.\n            </summary>\n            <param name = \"left\">The first vector to add.</param>\n            <param name = \"right\">The second vector to add.</param>\n            <param name = \"result\">When the method completes, contains the sum of the two vectors.</param>\n        </member>\n        <member name=\"M:SharpDX.Int3.Add(SharpDX.Int3,SharpDX.Int3)\">\n            <summary>\n            Adds two vectors.\n            </summary>\n            <param name = \"left\">The first vector to add.</param>\n            <param name = \"right\">The second vector to add.</param>\n            <returns>The sum of the two vectors.</returns>\n        </member>\n        <member name=\"M:SharpDX.Int3.Subtract(SharpDX.Int3@,SharpDX.Int3@,SharpDX.Int3@)\">\n            <summary>\n            Subtracts two vectors.\n            </summary>\n            <param name = \"left\">The first vector to subtract.</param>\n            <param name = \"right\">The second vector to subtract.</param>\n            <param name = \"result\">When the method completes, contains the difference of the two vectors.</param>\n        </member>\n        <member name=\"M:SharpDX.Int3.Subtract(SharpDX.Int3,SharpDX.Int3)\">\n            <summary>\n            Subtracts two vectors.\n            </summary>\n            <param name = \"left\">The first vector to subtract.</param>\n            <param name = \"right\">The second vector to subtract.</param>\n            <returns>The difference of the two vectors.</returns>\n        </member>\n        <member name=\"M:SharpDX.Int3.Multiply(SharpDX.Int3@,System.Int32,SharpDX.Int3@)\">\n            <summary>\n            Scales a vector by the given value.\n            </summary>\n            <param name = \"value\">The vector to scale.</param>\n            <param name = \"scale\">The amount by which to scale the vector.</param>\n            <param name = \"result\">When the method completes, contains the scaled vector.</param>\n        </member>\n        <member name=\"M:SharpDX.Int3.Multiply(SharpDX.Int3,System.Int32)\">\n            <summary>\n            Scales a vector by the given value.\n            </summary>\n            <param name = \"value\">The vector to scale.</param>\n            <param name = \"scale\">The amount by which to scale the vector.</param>\n            <returns>The scaled vector.</returns>\n        </member>\n        <member name=\"M:SharpDX.Int3.Modulate(SharpDX.Int3@,SharpDX.Int3@,SharpDX.Int3@)\">\n            <summary>\n            Modulates a vector with another by performing component-wise multiplication.\n            </summary>\n            <param name = \"left\">The first vector to modulate.</param>\n            <param name = \"right\">The second vector to modulate.</param>\n            <param name = \"result\">When the method completes, contains the modulated vector.</param>\n        </member>\n        <member name=\"M:SharpDX.Int3.Modulate(SharpDX.Int3,SharpDX.Int3)\">\n            <summary>\n            Modulates a vector with another by performing component-wise multiplication.\n            </summary>\n            <param name = \"left\">The first vector to modulate.</param>\n            <param name = \"right\">The second vector to modulate.</param>\n            <returns>The modulated vector.</returns>\n        </member>\n        <member name=\"M:SharpDX.Int3.Divide(SharpDX.Int3@,System.Int32,SharpDX.Int3@)\">\n            <summary>\n            Scales a vector by the given value.\n            </summary>\n            <param name = \"value\">The vector to scale.</param>\n            <param name = \"scale\">The amount by which to scale the vector.</param>\n            <param name = \"result\">When the method completes, contains the scaled vector.</param>\n        </member>\n        <member name=\"M:SharpDX.Int3.Divide(SharpDX.Int3,System.Int32)\">\n            <summary>\n            Scales a vector by the given value.\n            </summary>\n            <param name = \"value\">The vector to scale.</param>\n            <param name = \"scale\">The amount by which to scale the vector.</param>\n            <returns>The scaled vector.</returns>\n        </member>\n        <member name=\"M:SharpDX.Int3.Negate(SharpDX.Int3@,SharpDX.Int3@)\">\n            <summary>\n            Reverses the direction of a given vector.\n            </summary>\n            <param name = \"value\">The vector to negate.</param>\n            <param name = \"result\">When the method completes, contains a vector facing in the opposite direction.</param>\n        </member>\n        <member name=\"M:SharpDX.Int3.Negate(SharpDX.Int3)\">\n            <summary>\n            Reverses the direction of a given vector.\n            </summary>\n            <param name = \"value\">The vector to negate.</param>\n            <returns>A vector facing in the opposite direction.</returns>\n        </member>\n        <member name=\"M:SharpDX.Int3.Clamp(SharpDX.Int3@,SharpDX.Int3@,SharpDX.Int3@,SharpDX.Int3@)\">\n            <summary>\n            Restricts a value to be within a specified range.\n            </summary>\n            <param name = \"value\">The value to clamp.</param>\n            <param name = \"min\">The minimum value.</param>\n            <param name = \"max\">The maximum value.</param>\n            <param name = \"result\">When the method completes, contains the clamped value.</param>\n        </member>\n        <member name=\"M:SharpDX.Int3.Clamp(SharpDX.Int3,SharpDX.Int3,SharpDX.Int3)\">\n            <summary>\n            Restricts a value to be within a specified range.\n            </summary>\n            <param name = \"value\">The value to clamp.</param>\n            <param name = \"min\">The minimum value.</param>\n            <param name = \"max\">The maximum value.</param>\n            <returns>The clamped value.</returns>\n        </member>\n        <member name=\"M:SharpDX.Int3.Max(SharpDX.Int3@,SharpDX.Int3@,SharpDX.Int3@)\">\n            <summary>\n            Returns a vector containing the smallest components of the specified vectors.\n            </summary>\n            <param name = \"left\">The first source vector.</param>\n            <param name = \"right\">The second source vector.</param>\n            <param name = \"result\">When the method completes, contains an new vector composed of the largest components of the source vectors.</param>\n        </member>\n        <member name=\"M:SharpDX.Int3.Max(SharpDX.Int3,SharpDX.Int3)\">\n            <summary>\n            Returns a vector containing the largest components of the specified vectors.\n            </summary>\n            <param name = \"left\">The first source vector.</param>\n            <param name = \"right\">The second source vector.</param>\n            <returns>A vector containing the largest components of the source vectors.</returns>\n        </member>\n        <member name=\"M:SharpDX.Int3.Min(SharpDX.Int3@,SharpDX.Int3@,SharpDX.Int3@)\">\n            <summary>\n            Returns a vector containing the smallest components of the specified vectors.\n            </summary>\n            <param name = \"left\">The first source vector.</param>\n            <param name = \"right\">The second source vector.</param>\n            <param name = \"result\">When the method completes, contains an new vector composed of the smallest components of the source vectors.</param>\n        </member>\n        <member name=\"M:SharpDX.Int3.Min(SharpDX.Int3,SharpDX.Int3)\">\n            <summary>\n            Returns a vector containing the smallest components of the specified vectors.\n            </summary>\n            <param name = \"left\">The first source vector.</param>\n            <param name = \"right\">The second source vector.</param>\n            <returns>A vector containing the smallest components of the source vectors.</returns>\n        </member>\n        <member name=\"M:SharpDX.Int3.op_Addition(SharpDX.Int3,SharpDX.Int3)\">\n            <summary>\n            Adds two vectors.\n            </summary>\n            <param name = \"left\">The first vector to add.</param>\n            <param name = \"right\">The second vector to add.</param>\n            <returns>The sum of the two vectors.</returns>\n        </member>\n        <member name=\"M:SharpDX.Int3.op_UnaryPlus(SharpDX.Int3)\">\n            <summary>\n            Assert a vector (return it unchanged).\n            </summary>\n            <param name = \"value\">The vector to assert (unchange).</param>\n            <returns>The asserted (unchanged) vector.</returns>\n        </member>\n        <member name=\"M:SharpDX.Int3.op_Subtraction(SharpDX.Int3,SharpDX.Int3)\">\n            <summary>\n            Subtracts two vectors.\n            </summary>\n            <param name = \"left\">The first vector to subtract.</param>\n            <param name = \"right\">The second vector to subtract.</param>\n            <returns>The difference of the two vectors.</returns>\n        </member>\n        <member name=\"M:SharpDX.Int3.op_UnaryNegation(SharpDX.Int3)\">\n            <summary>\n            Reverses the direction of a given vector.\n            </summary>\n            <param name = \"value\">The vector to negate.</param>\n            <returns>A vector facing in the opposite direction.</returns>\n        </member>\n        <member name=\"M:SharpDX.Int3.op_Multiply(System.Int32,SharpDX.Int3)\">\n            <summary>\n            Scales a vector by the given value.\n            </summary>\n            <param name = \"value\">The vector to scale.</param>\n            <param name = \"scale\">The amount by which to scale the vector.</param>\n            <returns>The scaled vector.</returns>\n        </member>\n        <member name=\"M:SharpDX.Int3.op_Multiply(SharpDX.Int3,System.Int32)\">\n            <summary>\n            Scales a vector by the given value.\n            </summary>\n            <param name = \"value\">The vector to scale.</param>\n            <param name = \"scale\">The amount by which to scale the vector.</param>\n            <returns>The scaled vector.</returns>\n        </member>\n        <member name=\"M:SharpDX.Int3.op_Division(SharpDX.Int3,System.Int32)\">\n            <summary>\n            Scales a vector by the given value.\n            </summary>\n            <param name = \"value\">The vector to scale.</param>\n            <param name = \"scale\">The amount by which to scale the vector.</param>\n            <returns>The scaled vector.</returns>\n        </member>\n        <member name=\"M:SharpDX.Int3.op_Equality(SharpDX.Int3,SharpDX.Int3)\">\n            <summary>\n            Tests for equality between two objects.\n            </summary>\n            <param name = \"left\">The first value to compare.</param>\n            <param name = \"right\">The second value to compare.</param>\n            <returns><c>true</c> if <paramref name = \"left\" /> has the same value as <paramref name = \"right\" />; otherwise, <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Int3.op_Inequality(SharpDX.Int3,SharpDX.Int3)\">\n            <summary>\n            Tests for inequality between two objects.\n            </summary>\n            <param name = \"left\">The first value to compare.</param>\n            <param name = \"right\">The second value to compare.</param>\n            <returns><c>true</c> if <paramref name = \"left\" /> has a different value than <paramref name = \"right\" />; otherwise, <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Int3.op_Explicit(SharpDX.Int3)~SharpDX.Vector2\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:SharpDX.Int3\"/> to <see cref=\"T:SharpDX.Vector2\"/>.\n            </summary>\n            <param name=\"value\">The value.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"M:SharpDX.Int3.op_Explicit(SharpDX.Int3)~SharpDX.Vector3\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:SharpDX.Int3\"/> to <see cref=\"T:SharpDX.Vector3\"/>.\n            </summary>\n            <param name=\"value\">The value.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"M:SharpDX.Int3.ToString\">\n            <summary>\n            Returns a <see cref=\"T:System.String\"/> that represents this instance.\n            </summary>\n            <returns>\n            A <see cref=\"T:System.String\"/> that represents this instance.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Int3.ToString(System.String)\">\n            <summary>\n            Returns a <see cref=\"T:System.String\"/> that represents this instance.\n            </summary>\n            <param name=\"format\">The format.</param>\n            <returns>\n            A <see cref=\"T:System.String\"/> that represents this instance.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Int3.ToString(System.IFormatProvider)\">\n            <summary>\n            Returns a <see cref=\"T:System.String\"/> that represents this instance.\n            </summary>\n            <param name=\"formatProvider\">The format provider.</param>\n            <returns>\n            A <see cref=\"T:System.String\"/> that represents this instance.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Int3.ToString(System.String,System.IFormatProvider)\">\n            <summary>\n            Returns a <see cref=\"T:System.String\"/> that represents this instance.\n            </summary>\n            <param name=\"format\">The format.</param>\n            <param name=\"formatProvider\">The format provider.</param>\n            <returns>\n            A <see cref=\"T:System.String\"/> that represents this instance.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Int3.GetHashCode\">\n            <summary>\n            Returns a hash code for this instance.\n            </summary>\n            <returns>\n            A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. \n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Int3.SharpDX#Serialization#IDataSerializable#Serialize(SharpDX.Serialization.BinarySerializer)\">\n            <inheritdoc/>\n        </member>\n        <member name=\"M:SharpDX.Int3.Equals(SharpDX.Int3)\">\n            <summary>\n            Determines whether the specified <see cref=\"T:SharpDX.Int3\"/> is equal to this instance.\n            </summary>\n            <param name=\"other\">The <see cref=\"T:SharpDX.Int3\"/> to compare with this instance.</param>\n            <returns>\n            <c>true</c> if the specified <see cref=\"T:SharpDX.Int3\"/> is equal to this instance; otherwise, <c>false</c>.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Int3.Equals(System.Object)\">\n            <summary>\n            Determines whether the specified <see cref=\"T:System.Object\"/> is equal to this instance.\n            </summary>\n            <param name=\"value\">The <see cref=\"T:System.Object\"/> to compare with this instance.</param>\n            <returns>\n            <c>true</c> if the specified <see cref=\"T:System.Object\"/> is equal to this instance; otherwise, <c>false</c>.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Int3.op_Implicit(System.Int32[])~SharpDX.Int3\">\n            <summary>\n            Performs an implicit conversion from <see cref=\"T:System.Int32\"/> array to <see cref=\"T:SharpDX.Int3\"/>.\n            </summary>\n            <param name=\"input\">The input.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"M:SharpDX.Int3.op_Implicit(SharpDX.Int3)~System.Int32[]\">\n            <summary>\n            Performs an implicit conversion from <see cref=\"T:SharpDX.Int3\"/> to <see cref=\"T:System.Int32\"/> array.\n            </summary>\n            <param name=\"input\">The input.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"P:SharpDX.Int3.Item(System.Int32)\">\n            <summary>\n            Gets or sets the component at the specified index.\n            </summary>\n            <value>The value of the X, Y, Z, or W component, depending on the index.</value>\n            <param name=\"index\">The index of the component to access. Use 0 for the X component, 1 for the Y component, 2 for the Z component, and 3 for the W component.</param>\n            <returns>The value of the component at the specified index.</returns>\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">Thrown when the <paramref name=\"index\"/> is out of the range [0, 3].</exception>\n        </member>\n        <member name=\"T:SharpDX.IO.NamespaceDoc\">\n            <summary>\n            The <see cref=\"N:SharpDX.IO\"/> namespace contains helper classes in replacement of some classes in <see cref=\"N:System.IO\"/> useful under Windows 8 Metro.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Multimedia.AudioEndpointRole\">\n            <summary>\n            This enumeration defines constants that indicate the role that the system has assigned to an audio endpoint device.\n            </summary>\n            <msdn-id>dd370842</msdn-id>\t\n            <unmanaged>ERole</unmanaged>\t\n            <unmanaged-short>ERole</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.AudioEndpointRole.Console\">\n            <summary>\n            Games, system notification sounds, and voice commands\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Multimedia.AudioEndpointRole.Multimedia\">\n            <summary>\n            Music, movies, narration, and live music recording.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Multimedia.AudioEndpointRole.Communications\">\n            <summary>\n            Voice communications (talking to another person).\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Multimedia.NamespaceDoc\">\n            <summary>\n            The <see cref=\"N:SharpDX.Multimedia\"/> namespace contains common structures and helper classes for audio/video processing.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Serialization.DynamicSerializerAttribute\">\n            <summary>\n            Use this attribute to specify the id of a dynamic type with <see cref=\"T:SharpDX.Serialization.BinarySerializer\"/>.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Serialization.DynamicSerializerAttribute.#ctor(System.Int32)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Serialization.DynamicSerializerAttribute\"/> class.\n            </summary>\n            <param name=\"id\">The id to register as a dynamic type.</param>\n        </member>\n        <member name=\"M:SharpDX.Serialization.DynamicSerializerAttribute.#ctor(System.String)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Serialization.DynamicSerializerAttribute\"/> class.\n            </summary>\n            <param name=\"id\">The id to register as a dynamic type.</param>\n        </member>\n        <member name=\"P:SharpDX.Serialization.DynamicSerializerAttribute.Id\">\n            <summary>\n            Gets the id.\n            </summary>\n            <value>The id.</value>\n        </member>\n        <member name=\"T:SharpDX.Serialization.InvalidChunkException\">\n            <summary>\n            Exceptions thrown when an invalid chunk is decoded.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Serialization.InvalidChunkException.#ctor(SharpDX.Multimedia.FourCC,SharpDX.Multimedia.FourCC)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:System.Exception\" /> class with a specified error message.\n            </summary>\n            <param name=\"chunkId\">The chunk id.</param>\n            <param name=\"expectedChunkId\">The expected chunk id.</param>\n        </member>\n        <member name=\"P:SharpDX.Serialization.InvalidChunkException.ChunkId\">\n            <summary>\n            Gets the chunk id.\n            </summary>\n            <value>The chunk id.</value>\n        </member>\n        <member name=\"P:SharpDX.Serialization.InvalidChunkException.ExpectedChunkId\">\n            <summary>\n            Gets the expected chunk id.\n            </summary>\n            <value>The expected chunk id.</value>\n        </member>\n        <member name=\"T:SharpDX.Serialization.SerializerAction\">\n            <summary>\n            Serializer action.\n            </summary>\n            <param name=\"value\">The value to read or write.</param>\n            <param name=\"serializer\">The serializer.</param>\n        </member>\n        <member name=\"T:SharpDX.Serialization.BinarySerializer\">\n            <summary>\n            This class provides serialization methods for types implementing the <see cref=\"T:SharpDX.Serialization.IDataSerializable\"/>.\n            </summary>\n            <remarks>\n            BinarySerializer is a basic binary serializer with the following features:\n            <ul>\n            <li>10x times faster and smaller than default System Serialization and Xml Serialization.</li>\n            <li>Supports for all primitive types, array/List&lt;T&gt;/Dictionary of primitive types, custom data via <see cref=\"T:SharpDX.Serialization.IDataSerializable\"/> (struct or class) and array/List/Dictionary of custom data.</li>\n            <li>Optimized binary format, data serialized to the strict minimum.</li>\n            <li>Should be compatible with Win8/WinRT, Desktop.</li>\n            <li>Not reflection based serializer, but fully compile time serializer.</li>\n            <li>Format could be readback from C/C++.</li>\n            \n            </ul>\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Serialization.BinarySerializer.#ctor(System.IO.Stream,SharpDX.Serialization.SerializerMode)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Serialization.BinarySerializer\"/> class.\n            </summary>\n            <param name=\"stream\">The stream to read or write to.</param>\n            <param name=\"mode\">The read or write mode.</param>\n        </member>\n        <member name=\"M:SharpDX.Serialization.BinarySerializer.#ctor(System.IO.Stream,SharpDX.Serialization.SerializerMode,System.Text.Encoding)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Serialization.BinarySerializer\"/> class.\n            </summary>\n            <param name=\"stream\">The stream to read or write to.</param>\n            <param name=\"mode\">The read or write mode.</param>\n            <param name=\"encoding\">Default encoding used for strings. This parameter can be overriden later using Encoding property.</param>\n        </member>\n        <member name=\"M:SharpDX.Serialization.BinarySerializer.GetTag(System.Object)\">\n            <summary>\n            Gets a tag value with the specified key.\n            </summary>\n            <param name=\"key\">The tag key.</param>\n            <returns>A tag value associated to a key</returns>\n        </member>\n        <member name=\"M:SharpDX.Serialization.BinarySerializer.HasTag(System.Object)\">\n            <summary>\n            Determines whether a tag with a specified key is already stored.\n            </summary>\n            <param name=\"key\">The key.</param>\n            <returns><c>true</c> if a tag with a specified key is already stored; otherwise, <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Serialization.BinarySerializer.RemoveTag(System.Object)\">\n            <summary>\n            Removes a tag with the specified key.\n            </summary>\n            <param name=\"key\">The key.</param>\n        </member>\n        <member name=\"M:SharpDX.Serialization.BinarySerializer.SetTag(System.Object,System.Object)\">\n            <summary>\n            Sets a tag value with the specified key.\n            </summary>\n            <param name=\"key\">The key.</param>\n            <param name=\"value\">The value.</param>\n            <returns></returns>\n        </member>\n        <member name=\"M:SharpDX.Serialization.BinarySerializer.RegisterDynamic``1\">\n            <summary>\n            Register a dynamic serializer for a particular type implementing the <see cref=\"T:SharpDX.Serialization.IDataSerializable\"/> interface and having the <see cref=\"T:SharpDX.Serialization.DynamicSerializerAttribute\"/>.\n            </summary>\n            <typeparam name=\"T\">Type of the element to serialize.</typeparam>\n        </member>\n        <member name=\"M:SharpDX.Serialization.BinarySerializer.RegisterDynamic``1(SharpDX.Multimedia.FourCC)\">\n            <summary>\n            Register a dynamic serializer for a particular type implementing the <see cref=\"T:SharpDX.Serialization.IDataSerializable\"/> interface.\n            </summary>\n            <typeparam name=\"T\">Type of the element to serialize.</typeparam>\n            <param name=\"id\">The id to use for serializing T.</param>\n        </member>\n        <member name=\"M:SharpDX.Serialization.BinarySerializer.RegisterDynamicArray``1(SharpDX.Multimedia.FourCC)\">\n            <summary>\n            Register a dynamic array serializer for a particular type implementing the <see cref=\"T:SharpDX.Serialization.IDataSerializable\"/> interface.\n            </summary>\n            <typeparam name=\"T\">Type of the element in the array.</typeparam>\n            <param name=\"id\">The id to use for serializing T[].</param>\n        </member>\n        <member name=\"M:SharpDX.Serialization.BinarySerializer.RegisterDynamicList``1(SharpDX.Multimedia.FourCC)\">\n            <summary>\n            Register a dynamic List&lt;T&gt; serializer for a particular type implementing the <see cref=\"T:SharpDX.Serialization.IDataSerializable\"/> interface.\n            </summary>\n            <typeparam name=\"T\">Type of the element in the List&lt;T&gt;.</typeparam>\n            <param name=\"id\">The id to use for serializing List&lt;T&gt;.</param>\n        </member>\n        <member name=\"M:SharpDX.Serialization.BinarySerializer.RegisterDynamic``1(SharpDX.Multimedia.FourCC,SharpDX.Serialization.SerializerAction)\">\n            <summary>\n            Register a dynamic serializer using an external action.\n            </summary>\n            <typeparam name=\"T\">Type of the element to serialize.</typeparam>\n            <param name=\"id\">The id to use for serializing T.</param>\n            <param name=\"serializer\">The serializer.</param>\n        </member>\n        <member name=\"M:SharpDX.Serialization.BinarySerializer.BeginChunk(SharpDX.Multimedia.FourCC)\">\n            <summary>\n            Begin to serialize a a new chunk.\n            </summary>\n            <param name=\"chunkId\">The chunk id.</param>\n            <exception cref=\"T:SharpDX.Serialization.InvalidChunkException\">If the chuck to read is not the expecting chunk.</exception>\n            <remarks>\n            A Chunk is an identifiable portion of data that will serialized. Chunk are usefull to encapsulate a variable \n            data (and check for the presence of the chunk Id). Chunk are storing a 4 bytes identifier and the length of \n            the chunk before reading/writing actual datas.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Serialization.BinarySerializer.EndChunk\">\n            <summary>\n            Ends a chunk.\n            </summary>\n            <exception cref=\"T:System.InvalidOperationException\">If there EndChunk is called without a previous BeginChunk.</exception>\n            <exception cref=\"T:System.IO.InvalidDataException\">If the size of data read from the chunk is different from chunk size.</exception>\n        </member>\n        <member name=\"M:SharpDX.Serialization.BinarySerializer.Load``1\">\n            <summary>\n            Deserialize a data from the underlying stream.\n            </summary>\n            <typeparam name=\"T\">Type of the data to load.</typeparam>\n            <returns>An instance of the loaded data.</returns>\n        </member>\n        <member name=\"M:SharpDX.Serialization.BinarySerializer.Save``1(``0)\">\n            <summary>\n            Serializes the specified value to the underlying stream.\n            </summary>\n            <typeparam name=\"T\">Type of the data to save.</typeparam>\n            <param name=\"value\">The value to save.</param>\n        </member>\n        <member name=\"M:SharpDX.Serialization.BinarySerializer.Flush\">\n            <summary>\n            Flush the underlying <see cref=\"T:System.IO.Stream\"/>\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Serialization.BinarySerializer.SerializeDynamic``1(``0@)\">\n            <summary>\n            Serializes a dynamic value that can be nullable.\n            </summary>\n            <typeparam name=\"T\">Known type of the value to serialize. The known type is not the runtime type that will be actually serialized.</typeparam>\n            <param name=\"value\">The value to serialize based on its runtime type.</param>\n        </member>\n        <member name=\"M:SharpDX.Serialization.BinarySerializer.SerializeDynamic``1(``0@,SharpDX.Serialization.SerializeFlags)\">\n            <summary>\n            Serializes a dynamic value.\n            </summary>\n            <typeparam name=\"T\">Known type of the value to serialize. The known type is not the runtime type that will be actually serialized.</typeparam>\n            <param name=\"value\">The value to serialize based on its runtime type.</param>\n            <param name=\"serializeFlags\">Type of serialization, see <see cref=\"T:SharpDX.Serialization.SerializeFlags\"/>.</param>\n        </member>\n        <member name=\"M:SharpDX.Serialization.BinarySerializer.Serialize``1(``0@,SharpDX.Serialization.SerializeFlags)\">\n            <summary>\n            Serializes a static value implementing the <see cref=\"T:SharpDX.Serialization.IDataSerializable\"/> interface.\n            </summary>\n            <typeparam name=\"T\">Type of the data to serialize.</typeparam>\n            <param name=\"value\">The value to serialize</param>\n            <param name=\"serializeFlags\">Type of serialization, see <see cref=\"T:SharpDX.Serialization.SerializeFlags\"/>.</param>\n            <remarks>\n            Note that depending on the serialization <see cref=\"P:SharpDX.Serialization.BinarySerializer.Mode\"/>, this method reads or writes the value.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Serialization.BinarySerializer.SerializeWithNoInstance``1(``0@,SharpDX.Serialization.SerializeFlags)\">\n            <summary>\n            Serializes a static value implementing the <see cref=\"T:SharpDX.Serialization.IDataSerializable\"/> interface. Unlike <see cref=\"!:Serialize&lt;T&gt;(ref T)\"/>, \n            this method doesn't allocate a new instance when reading but use the reference value.\n            </summary>\n            <typeparam name=\"T\">Type of the data to serialize.</typeparam>\n            <param name=\"value\">The value to serialize</param>\n            <param name=\"serializeFlags\">Type of serialization, see <see cref=\"T:SharpDX.Serialization.SerializeFlags\"/>.</param>\n            <remarks>\n            Note that depending on the serialization <see cref=\"P:SharpDX.Serialization.BinarySerializer.Mode\"/>, this method reads or writes the value.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Serialization.BinarySerializer.SerializeEnum``1(``0@)\">\n            <summary>\n            Serializes an enum value.\n            </summary>\n            <typeparam name=\"T\">Type of the enum to serialize.</typeparam>\n            <param name=\"value\">The value to serialize</param>\n            <exception cref=\"T:System.ArgumentException\">If type T is not an enum.</exception>\n            <remarks>\n            Note that depending on the serialization <see cref=\"P:SharpDX.Serialization.BinarySerializer.Mode\"/>, this method reads or writes the value.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Serialization.BinarySerializer.Serialize``1(``0[]@,SharpDX.Serialization.BinarySerializer.SerializerPrimitiveAction{``0},SharpDX.Serialization.SerializeFlags)\">\n            <summary>\n            Serializes an array of primitives using serialization methods implemented by this instance for each item in the array.\n            </summary>\n            <typeparam name=\"T\">Type of the primitive data to serialize.</typeparam>\n            <param name=\"valueArray\">An array of primitive value to serialize</param>\n            <param name=\"serializer\">The serializer to user to serialize the T values.</param>\n            <param name=\"serializeFlags\">Type of serialization, see <see cref=\"T:SharpDX.Serialization.SerializeFlags\"/>.</param>\n            <remarks>\n            Note that depending on the serialization <see cref=\"P:SharpDX.Serialization.BinarySerializer.Mode\"/>, this method reads or writes the value.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Serialization.BinarySerializer.Serialize``1(``0[]@,System.Int32,SharpDX.Serialization.BinarySerializer.SerializerPrimitiveAction{``0},SharpDX.Serialization.SerializeFlags)\">\n            <summary>\n            Serializes count elements in an array of primitives using serialization methods implemented by this instance for each item in the array. \n            </summary>\n            <typeparam name=\"T\">Type of the primitive data to serialize.</typeparam>\n            <param name=\"valueArray\">An array of primitive value to serialize</param>\n            <param name=\"count\">Count elements to serialize. See remarks.</param>\n            <param name=\"serializer\">The serializer to user to serialize the T values.</param>\n            <param name=\"serializeFlags\">Type of serialization, see <see cref=\"T:SharpDX.Serialization.SerializeFlags\"/>.</param>\n            <remarks>\n            Note that depending on the serialization <see cref=\"P:SharpDX.Serialization.BinarySerializer.Mode\"/>, this method reads or writes the value.<br/>\n            <strong>Caution</strong>: Also unlike the plain array version, the count is not serialized. This method is usefull\n            when we want to serialize the count of an array separately from the array.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Serialization.BinarySerializer.Serialize``1(``0[]@,SharpDX.Serialization.SerializeFlags)\">\n            <summary>\n            Serializes an array of static values that are implementing the <see cref=\"T:SharpDX.Serialization.IDataSerializable\"/> interface.\n            </summary>\n            <typeparam name=\"T\">Type of the data to serialize.</typeparam>\n            <param name=\"valueArray\">An array of value to serialize</param>\n            <param name=\"serializeFlags\">Type of serialization, see <see cref=\"T:SharpDX.Serialization.SerializeFlags\"/>.</param>\n            <remarks>\n            Note that depending on the serialization <see cref=\"P:SharpDX.Serialization.BinarySerializer.Mode\"/>, this method reads or writes the value.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Serialization.BinarySerializer.SerializeWithNoInstance``1(``0[]@,SharpDX.Serialization.SerializeFlags)\">\n            <summary>\n            Serializes an array of static values that are implementing the <see cref=\"T:SharpDX.Serialization.IDataSerializable\"/> interface.\n            </summary>\n            <typeparam name=\"T\">Type of the data to serialize.</typeparam>\n            <param name=\"valueArray\">An array of value to serialize</param>\n            <param name=\"serializeFlags\">Type of serialization, see <see cref=\"T:SharpDX.Serialization.SerializeFlags\"/>.</param>\n            <remarks>\n            Note that depending on the serialization <see cref=\"P:SharpDX.Serialization.BinarySerializer.Mode\"/>, this method reads or writes the value.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Serialization.BinarySerializer.Serialize``1(``0[]@,System.Int32,SharpDX.Serialization.SerializeFlags)\">\n            <summary>\n            Serializes count elements in an array of static values that are implementing the <see cref=\"T:SharpDX.Serialization.IDataSerializable\"/> interface.\n            </summary>\n            <typeparam name=\"T\">Type of the data to serialize.</typeparam>\n            <param name=\"valueArray\">An array of value to serialize</param>\n            <param name=\"count\">Count elements to serialize. See remarks.</param>\n            <param name=\"serializeFlags\">Type of serialization, see <see cref=\"T:SharpDX.Serialization.SerializeFlags\"/>.</param>\n            <remarks>\n            Note that depending on the serialization <see cref=\"P:SharpDX.Serialization.BinarySerializer.Mode\"/>, this method reads or writes the value.<br/>\n            <strong>Caution</strong>: Also unlike the plain array version, the count is not serialized. This method is usefull\n            when we want to serialize the count of an array separately from the array.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Serialization.BinarySerializer.Serialize(System.Byte[]@,SharpDX.Serialization.SerializeFlags)\">\n            <summary>\n            Serializes an array of bytes.\n            </summary>\n            <param name=\"valueArray\">An array of bytes to serialize</param>\n            <param name=\"serializeFlags\">Type of serialization, see <see cref=\"T:SharpDX.Serialization.SerializeFlags\"/>.</param>\n            <remarks>\n            Note that depending on the serialization <see cref=\"P:SharpDX.Serialization.BinarySerializer.Mode\"/>, this method reads or writes the value.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Serialization.BinarySerializer.Serialize(System.Byte[]@,System.Int32,SharpDX.Serialization.SerializeFlags)\">\n            <summary>\n            Serializes an array of bytes.\n            </summary>\n            <param name=\"valueArray\">An array of bytes to serialize</param>\n            <param name=\"count\">Count elements to serialize. See remarks.</param>\n            <param name=\"serializeFlags\">Type of serialization, see <see cref=\"T:SharpDX.Serialization.SerializeFlags\"/>.</param>\n            <remarks>\n            Note that depending on the serialization <see cref=\"P:SharpDX.Serialization.BinarySerializer.Mode\"/>, this method reads or writes the value.<br/>\n            <strong>Caution</strong>: Also unlike the plain array version, the count is not serialized. This method is usefull\n            when we want to serialize the count of an array separately from the array.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Serialization.BinarySerializer.Serialize``1(System.Collections.Generic.List{``0}@,SharpDX.Serialization.SerializeFlags)\">\n            <summary>\n            Serializes a list of static values that are implementing the <see cref=\"T:SharpDX.Serialization.IDataSerializable\"/> interface.\n            </summary>\n            <typeparam name=\"T\">Type of the data to serialize.</typeparam>\n            <param name=\"valueList\">A list of value to serialize</param>\n            <param name=\"serializeFlags\">Type of serialization, see <see cref=\"T:SharpDX.Serialization.SerializeFlags\"/>.</param>\n            <remarks>\n            Note that depending on the serialization <see cref=\"P:SharpDX.Serialization.BinarySerializer.Mode\"/>, this method reads or writes the value.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Serialization.BinarySerializer.Serialize``1(System.Collections.Generic.List{``0}@,SharpDX.Serialization.BinarySerializer.SerializerPrimitiveAction{``0},SharpDX.Serialization.SerializeFlags)\">\n            <summary>\n            Serializes a list of primitive values using a specific serializer method from this instance.\n            </summary>\n            <typeparam name=\"T\">Type of the data to serialize.</typeparam>\n            <param name=\"valueList\">A list of value to serialize</param>\n            <param name=\"serializerMethod\">A method of this instance to serialize the primitive T type</param>\n            <param name=\"serializeFlags\">Type of serialization, see <see cref=\"T:SharpDX.Serialization.SerializeFlags\"/>.</param>\n            <remarks>\n            Note that depending on the serialization <see cref=\"P:SharpDX.Serialization.BinarySerializer.Mode\"/>, this method reads or writes the value.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Serialization.BinarySerializer.Serialize``1(System.Collections.Generic.List{``0}@,System.Int32,SharpDX.Serialization.SerializeFlags)\">\n            <summary>\n            Serializes count elements from a list of static values that are implementing the <see cref=\"T:SharpDX.Serialization.IDataSerializable\"/> interface.\n            </summary>\n            <typeparam name=\"T\">Type of the data to serialize.</typeparam>\n            <param name=\"valueList\">A list of value to serialize</param>\n            <param name=\"count\">Count elements to serialize. See remarks.</param>\n            <param name=\"serializeFlags\">Type of serialization, see <see cref=\"T:SharpDX.Serialization.SerializeFlags\"/>.</param>\n            <remarks>\n            Note that depending on the serialization <see cref=\"P:SharpDX.Serialization.BinarySerializer.Mode\"/>, this method reads or writes the value.<br/>\n            <strong>Caution</strong>: Also unlike the plain array version, the count is not serialized. This method is usefull\n            when we want to serialize the count of an array separately from the array.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Serialization.BinarySerializer.Serialize``1(System.Collections.Generic.List{``0}@,System.Int32,SharpDX.Serialization.BinarySerializer.SerializerPrimitiveAction{``0},SharpDX.Serialization.SerializeFlags)\">\n            <summary>\n            Serializes count  elements from a list of primitive values using a specific serializer method from this instance.\n            </summary>\n            <typeparam name=\"T\">Type of the data to serialize.</typeparam>\n            <param name=\"valueList\">A list of value to serialize</param>\n            <param name=\"serializerMethod\">A method of this instance to serialize the primitive T type</param>\n            <param name=\"count\">Count elements to serialize. See remarks.</param>\n            <param name=\"serializeFlags\">Type of serialization, see <see cref=\"T:SharpDX.Serialization.SerializeFlags\"/>.</param>\n            <remarks>\n            Note that depending on the serialization <see cref=\"P:SharpDX.Serialization.BinarySerializer.Mode\"/>, this method reads or writes the value.<br/>\n            <strong>Caution</strong>: Also unlike the plain array version, the count is not serialized. This method is usefull\n            when we want to serialize the count of an array separately from the array.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Serialization.BinarySerializer.Serialize``2(System.Collections.Generic.Dictionary{``0,``1}@,SharpDX.Serialization.SerializeFlags)\">\n            <summary>\n            Serializes a dictionary of key/values that are both implementing the <see cref=\"T:SharpDX.Serialization.IDataSerializable\"/> interface.\n            </summary>\n            <typeparam name=\"TKey\">Type of key to serialize.</typeparam>\n            <typeparam name=\"TValue\">Type of value to serialize.</typeparam>\n            <param name=\"dictionary\">A dictionary to serialize</param>\n            <param name=\"serializeFlags\">Type of serialization, see <see cref=\"T:SharpDX.Serialization.SerializeFlags\"/>.</param>\n            <remarks>\n            Note that depending on the serialization <see cref=\"P:SharpDX.Serialization.BinarySerializer.Mode\"/>, this method reads or writes the value.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Serialization.BinarySerializer.Serialize``2(System.Collections.Generic.Dictionary{``0,``1}@,SharpDX.Serialization.BinarySerializer.SerializerPrimitiveAction{``1},SharpDX.Serialization.SerializeFlags)\">\n            <summary>\n            Serializes a dictionary of key/values.\n            </summary>\n            <typeparam name=\"TKey\">Type of key to serialize that is implementing the <see cref=\"T:SharpDX.Serialization.IDataSerializable\"/> interface.</typeparam>\n            <typeparam name=\"TValue\">Type of primitive value with its associated serializer.</typeparam>\n            <param name=\"dictionary\">A dictionary to serialize</param>\n            <param name=\"valueSerializer\">Serializer used for the TValue.</param>\n            <param name=\"serializeFlags\">Type of serialization, see <see cref=\"T:SharpDX.Serialization.SerializeFlags\"/>.</param>\n            <remarks>\n            Note that depending on the serialization <see cref=\"P:SharpDX.Serialization.BinarySerializer.Mode\"/>, this method reads or writes the value.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Serialization.BinarySerializer.Serialize``2(System.Collections.Generic.Dictionary{``0,``1}@,SharpDX.Serialization.BinarySerializer.SerializerPrimitiveAction{``0},SharpDX.Serialization.SerializeFlags)\">\n            <summary>\n            Serializes a dictionary of key/values.\n            </summary>\n            <typeparam name=\"TKey\">Type of primitive value with its associated serializer.</typeparam>\n            <typeparam name=\"TValue\">Type of value to serialize that is implementing the <see cref=\"T:SharpDX.Serialization.IDataSerializable\"/> interface.</typeparam>\n            <param name=\"dictionary\">A dictionary to serialize</param>\n            <param name=\"keySerializer\">Serializer used for the TKey.</param>\n            <param name=\"serializeFlags\">Type of serialization, see <see cref=\"T:SharpDX.Serialization.SerializeFlags\"/>.</param>\n            <remarks>\n            Note that depending on the serialization <see cref=\"P:SharpDX.Serialization.BinarySerializer.Mode\"/>, this method reads or writes the value.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Serialization.BinarySerializer.Serialize``2(System.Collections.Generic.Dictionary{``0,``1}@,SharpDX.Serialization.BinarySerializer.SerializerPrimitiveAction{``0},SharpDX.Serialization.BinarySerializer.SerializerPrimitiveAction{``1},SharpDX.Serialization.SerializeFlags)\">\n            <summary>\n            Serializes a dictionary of key/values.\n            </summary>\n            <typeparam name=\"TKey\">Type of primitive key with its associated serializer.</typeparam>\n            <typeparam name=\"TValue\">Type of primitive value with its associated serializer.</typeparam>\n            <param name=\"dictionary\">A dictionary to serialize</param>\n            <param name=\"keySerializer\">Serializer used for the TKey.</param>\n            <param name=\"valueSerializer\">Serializer used for the TValue.</param>\n            <param name=\"serializeFlags\">Type of serialization, see <see cref=\"T:SharpDX.Serialization.SerializeFlags\"/>.</param>\n            <remarks>\n            Note that depending on the serialization <see cref=\"P:SharpDX.Serialization.BinarySerializer.Mode\"/>, this method reads or writes the value.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Serialization.BinarySerializer.Serialize(System.String@)\">\n            <summary>\n            Serializes a single <strong>string</strong> value.\n            </summary>\n            <param name=\"value\">The value to serialize</param>\n            <remarks>\n            Note that depending on the serialization <see cref=\"P:SharpDX.Serialization.BinarySerializer.Mode\"/>, this method reads or writes the value.\n            This string is serialized with the current <see cref=\"P:SharpDX.Serialization.BinarySerializer.Encoding\"/> set on this instance.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Serialization.BinarySerializer.Serialize(System.String@,SharpDX.Serialization.SerializeFlags)\">\n            <summary>\n            Serializes a single <strong>string</strong> value.\n            </summary>\n            <param name=\"value\">The value to serialize</param>\n            <param name=\"serializeFlags\">Type of serialization, see <see cref=\"T:SharpDX.Serialization.SerializeFlags\"/>.</param>\n            <remarks>\n            Note that depending on the serialization <see cref=\"P:SharpDX.Serialization.BinarySerializer.Mode\"/>, this method reads or writes the value.\n            This string is serialized with the current <see cref=\"P:SharpDX.Serialization.BinarySerializer.Encoding\"/> set on this instance.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Serialization.BinarySerializer.Serialize(System.String@,System.Boolean,SharpDX.Serialization.SerializeFlags)\">\n            <summary>\n            Serializes a single <strong>string</strong> value.\n            </summary>\n            <param name=\"value\">The value to serialize</param>\n            <param name=\"writeNullTerminatedString\">Write a null byte at the end of the string.</param>\n            <param name=\"serializeFlags\">Type of serialization, see <see cref=\"T:SharpDX.Serialization.SerializeFlags\"/>.</param>\n            <remarks>\n            Note that depending on the serialization <see cref=\"P:SharpDX.Serialization.BinarySerializer.Mode\"/>, this method reads or writes the value.\n            This string is serialized with the current <see cref=\"P:SharpDX.Serialization.BinarySerializer.Encoding\"/> set on this instance.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Serialization.BinarySerializer.Serialize(System.String@,System.Int32)\">\n            <summary>\n            Serializes a single fixed length <strong>string</strong> value.\n            </summary>\n            <param name=\"value\">The value to serialize</param>\n            <param name=\"len\">Read/write a specific number of characters.</param>\n            <remarks>\n            Note that depending on the serialization <see cref=\"P:SharpDX.Serialization.BinarySerializer.Mode\"/>, this method reads or writes the value.\n            This string is serialized with the current <see cref=\"P:SharpDX.Serialization.BinarySerializer.Encoding\"/> set on this instance.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Serialization.BinarySerializer.Serialize(System.Boolean@)\">\n            <summary>\n            Serializes a single <strong>boolean</strong> value.\n            </summary>\n            <param name=\"value\">The value to serialize</param>\n            <remarks>\n            Note that depending on the serialization <see cref=\"P:SharpDX.Serialization.BinarySerializer.Mode\"/>, this method reads or writes the value.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Serialization.BinarySerializer.Serialize(System.Byte@)\">\n            <summary>\n            Serializes a single <strong>byte</strong> value.\n            </summary>\n            <param name=\"value\">The value to serialize</param>\n            <remarks>\n            Note that depending on the serialization <see cref=\"P:SharpDX.Serialization.BinarySerializer.Mode\"/>, this method reads or writes the value.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Serialization.BinarySerializer.Serialize(System.SByte@)\">\n            <summary>\n            Serializes a single <strong>sbyte</strong> value.\n            </summary>\n            <param name=\"value\">The value to serialize</param>\n            <remarks>\n            Note that depending on the serialization <see cref=\"P:SharpDX.Serialization.BinarySerializer.Mode\"/>, this method reads or writes the value.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Serialization.BinarySerializer.Serialize(System.Int16@)\">\n            <summary>\n            Serializes a single <strong>short</strong> value.\n            </summary>\n            <param name=\"value\">The value to serialize</param>\n            <remarks>\n            Note that depending on the serialization <see cref=\"P:SharpDX.Serialization.BinarySerializer.Mode\"/>, this method reads or writes the value.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Serialization.BinarySerializer.Serialize(System.UInt16@)\">\n            <summary>\n            Serializes a single <strong>ushort</strong> value.\n            </summary>\n            <param name=\"value\">The value to serialize</param>\n            <remarks>\n            Note that depending on the serialization <see cref=\"P:SharpDX.Serialization.BinarySerializer.Mode\"/>, this method reads or writes the value.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Serialization.BinarySerializer.Serialize(System.Int32@)\">\n            <summary>\n            Serializes a single <strong>int</strong> value.\n            </summary>\n            <param name=\"value\">The value to serialize</param>\n            <remarks>\n            Note that depending on the serialization <see cref=\"P:SharpDX.Serialization.BinarySerializer.Mode\"/>, this method reads or writes the value.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Serialization.BinarySerializer.SerializePackedInt(System.Int32@)\">\n            <summary>\n            Serializes a single <strong>int</strong> as a packed value (from 1 byte to 5 byte. if value &lt; 128, then 1 byte...etc.)\n            </summary>\n            <param name=\"value\">The value to serialize</param>\n            <remarks>\n            Note that depending on the serialization <see cref=\"P:SharpDX.Serialization.BinarySerializer.Mode\"/>, this method reads or writes the value.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Serialization.BinarySerializer.SerializeMemoryRegion(SharpDX.DataPointer)\">\n            <summary>\n            Serializes a memory region.\n            </summary>\n            <param name=\"dataRegion\">The pointer to an unmanaged memory region. For read operation, this pointer must be allocated by the caller.</param>\n            <exception cref=\"T:System.IO.EndOfStreamException\">If the end of stream was reached before reading all the bytes.</exception>\n            <remarks>Note that depending on the serialization <see cref=\"P:SharpDX.Serialization.BinarySerializer.Mode\"/>, this method reads or writes the value.\n            This method doesn't serialize the sizeInBytes of the region, so the size must be serialized serparetely.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Serialization.BinarySerializer.SerializeMemoryRegion(System.IntPtr,System.Int32)\">\n            <summary>\n            Serializes a memory region.\n            </summary>\n            <param name=\"dataPointer\">The data pointer. For read operation, this pointer must be allocated by the caller.</param>\n            <param name=\"sizeInBytes\">The size in bytes. See remarks.</param>\n            <exception cref=\"T:System.IO.EndOfStreamException\">If the end of stream was reached before reading all the bytes.</exception>\n            <remarks>Note that depending on the serialization <see cref=\"P:SharpDX.Serialization.BinarySerializer.Mode\"/>, this method reads or writes the value.\n            This method doesn't serialize the sizeInBytes of the region, so the size must be serialized serparetely.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Serialization.BinarySerializer.Serialize(System.UInt32@)\">\n            <summary>\n            Serializes a single <strong>uint</strong> value.\n            </summary>\n            <param name=\"value\">The value to serialize</param>\n            <remarks>\n            Note that depending on the serialization <see cref=\"P:SharpDX.Serialization.BinarySerializer.Mode\"/>, this method reads or writes the value.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Serialization.BinarySerializer.Serialize(System.Int64@)\">\n            <summary>\n            Serializes a single <strong>long</strong> value.\n            </summary>\n            <param name=\"value\">The value to serialize</param>\n            <remarks>\n            Note that depending on the serialization <see cref=\"P:SharpDX.Serialization.BinarySerializer.Mode\"/>, this method reads or writes the value.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Serialization.BinarySerializer.Serialize(System.UInt64@)\">\n            <summary>\n            Serializes a single <strong>ulong</strong> value.\n            </summary>\n            <param name=\"value\">The value to serialize</param>\n            <remarks>\n            Note that depending on the serialization <see cref=\"P:SharpDX.Serialization.BinarySerializer.Mode\"/>, this method reads or writes the value.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Serialization.BinarySerializer.Serialize(System.Char@)\">\n            <summary>\n            Serializes a single <strong>char</strong> value.\n            </summary>\n            <param name=\"value\">The value to serialize</param>\n            <remarks>\n            Note that depending on the serialization <see cref=\"P:SharpDX.Serialization.BinarySerializer.Mode\"/>, this method reads or writes the value.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Serialization.BinarySerializer.Serialize(System.Single@)\">\n            <summary>\n            Serializes a single <strong>float</strong> value.\n            </summary>\n            <param name=\"value\">The value to serialize</param>\n            <remarks>\n            Note that depending on the serialization <see cref=\"P:SharpDX.Serialization.BinarySerializer.Mode\"/>, this method reads or writes the value.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Serialization.BinarySerializer.Serialize(System.Double@)\">\n            <summary>\n            Serializes a single <strong>double</strong> value.\n            </summary>\n            <param name=\"value\">The value to serialize</param>\n            <remarks>\n            Note that depending on the serialization <see cref=\"P:SharpDX.Serialization.BinarySerializer.Mode\"/>, this method reads or writes the value.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Serialization.BinarySerializer.Serialize(System.DateTime@)\">\n            <summary>\n            Serializes a single <strong>DateTime</strong> value.\n            </summary>\n            <param name=\"value\">The value to serialize</param>\n            <remarks>\n            Note that depending on the serialization <see cref=\"P:SharpDX.Serialization.BinarySerializer.Mode\"/>, this method reads or writes the value.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Serialization.BinarySerializer.Serialize(System.Guid@)\">\n            <summary>\n            Serializes a single <strong>Guid</strong> value.\n            </summary>\n            <param name=\"value\">The value to serialize</param>\n            <remarks>\n            Note that depending on the serialization <see cref=\"P:SharpDX.Serialization.BinarySerializer.Mode\"/>, this method reads or writes the value.\n            </remarks>\n        </member>\n        <member name=\"P:SharpDX.Serialization.BinarySerializer.Stream\">\n            <summary>\n            Underlying stream this instance is reading/writing to.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Serialization.BinarySerializer.Reader\">\n            <summary>\n            Reader used to directly read from the underlying stream.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Serialization.BinarySerializer.Writer\">\n            <summary>\n            Writer used to directly write to the underlying stream.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Serialization.BinarySerializer.Mode\">\n            <summary>\n            Gets or sets the serialization mode.\n            </summary>\n            <value>The serialization mode.</value>\n        </member>\n        <member name=\"P:SharpDX.Serialization.BinarySerializer.Encoding\">\n            <summary>\n            Gets or sets the encoding used to serialized strings.\n            </summary>\n            <value>The encoding.</value>\n            <exception cref=\"T:System.ArgumentNullException\">When setting a null encoding</exception>\n        </member>\n        <member name=\"P:SharpDX.Serialization.BinarySerializer.AllowIdentity\">\n            <summary>\n            Enables to serialize an object only once using object reference. Default is <strong>false</strong>.\n            </summary>\n            <value><c>true</c> if [allow null]; otherwise, <c>false</c>.</value>\n            <exception cref=\"T:System.InvalidOperationException\">If an invalid matching pair of true/false is detected.</exception>\n        </member>\n        <member name=\"T:SharpDX.Serialization.SerializerMode\">\n            <summary>\n            Serialization mode used by <see cref=\"T:SharpDX.Serialization.BinarySerializer\"/>.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Serialization.SerializerMode.Read\">\n            <summary>\n            Reads the data from the stream.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Serialization.SerializerMode.Write\">\n            <summary>\n            Writes the data to the stream.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.ShadowAttribute\">\n            <summary>\n            Shadow attribute used to associate a COM callbackable interface to its Shadow implementation.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.ShadowAttribute.#ctor(System.Type)\">\n            <summary>\n            Initializes a new instance of <see cref=\"T:SharpDX.ShadowAttribute\"/> class.\n            </summary>\n            <param name=\"typeOfTheAssociatedShadow\">Type of the associated shadow</param>\n        </member>\n        <member name=\"M:SharpDX.ShadowAttribute.Get(System.Type)\">\n            <summary>\n            Get ShadowAttribute from type.\n            </summary>\n            <param name=\"type\">Type to get shadow attribute</param>\n            <returns>The associated shadow attribute or null if no shadow attribute were found</returns>\n        </member>\n        <member name=\"P:SharpDX.ShadowAttribute.Type\">\n            <summary>\n            Gets the value.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Matrix5x4\">\n            <summary>\n            Represents a 4x4 mathematical Matrix5x4.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Matrix5x4.SizeInBytes\">\n            <summary>\n            The size of the <see cref=\"T:SharpDX.Matrix5x4\"/> type, in bytes.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Matrix5x4.Zero\">\n            <summary>\n            A <see cref=\"T:SharpDX.Matrix5x4\"/> with all of its components set to zero.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Matrix5x4.Identity\">\n            <summary>\n            The identity <see cref=\"T:SharpDX.Matrix5x4\"/>.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Matrix5x4.M11\">\n            <summary>\n            Value at row 1 column 1 of the Matrix5x4.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Matrix5x4.M12\">\n            <summary>\n            Value at row 1 column 2 of the Matrix5x4.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Matrix5x4.M13\">\n            <summary>\n            Value at row 1 column 3 of the Matrix5x4.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Matrix5x4.M14\">\n            <summary>\n            Value at row 1 column 4 of the Matrix5x4.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Matrix5x4.M21\">\n            <summary>\n            Value at row 2 column 1 of the Matrix5x4.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Matrix5x4.M22\">\n            <summary>\n            Value at row 2 column 2 of the Matrix5x4.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Matrix5x4.M23\">\n            <summary>\n            Value at row 2 column 3 of the Matrix5x4.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Matrix5x4.M24\">\n            <summary>\n            Value at row 2 column 4 of the Matrix5x4.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Matrix5x4.M31\">\n            <summary>\n            Value at row 3 column 1 of the Matrix5x4.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Matrix5x4.M32\">\n            <summary>\n            Value at row 3 column 2 of the Matrix5x4.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Matrix5x4.M33\">\n            <summary>\n            Value at row 3 column 3 of the Matrix5x4.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Matrix5x4.M34\">\n            <summary>\n            Value at row 3 column 4 of the Matrix5x4.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Matrix5x4.M41\">\n            <summary>\n            Value at row 4 column 1 of the Matrix5x4.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Matrix5x4.M42\">\n            <summary>\n            Value at row 4 column 2 of the Matrix5x4.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Matrix5x4.M43\">\n            <summary>\n            Value at row 4 column 3 of the Matrix5x4.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Matrix5x4.M44\">\n            <summary>\n            Value at row 4 column 4 of the Matrix5x4.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Matrix5x4.M51\">\n            <summary>\n            Value at row 5 column 1 of the Matrix5x4.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Matrix5x4.M52\">\n            <summary>\n            Value at row 5 column 2 of the Matrix5x4.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Matrix5x4.M53\">\n            <summary>\n            Value at row 5 column 3 of the Matrix5x4.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Matrix5x4.M54\">\n            <summary>\n            Value at row 5 column 4 of the Matrix5x4.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Matrix5x4.#ctor(System.Single)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Matrix5x4\"/> struct.\n            </summary>\n            <param name=\"value\">The value that will be assigned to all components.</param>\n        </member>\n        <member name=\"M:SharpDX.Matrix5x4.#ctor(System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Matrix5x4\"/> struct.\n            </summary>\n            <param name=\"M11\">The value to assign at row 1 column 1 of the Matrix5x4.</param>\n            <param name=\"M12\">The value to assign at row 1 column 2 of the Matrix5x4.</param>\n            <param name=\"M13\">The value to assign at row 1 column 3 of the Matrix5x4.</param>\n            <param name=\"M14\">The value to assign at row 1 column 4 of the Matrix5x4.</param>\n            <param name=\"M21\">The value to assign at row 2 column 1 of the Matrix5x4.</param>\n            <param name=\"M22\">The value to assign at row 2 column 2 of the Matrix5x4.</param>\n            <param name=\"M23\">The value to assign at row 2 column 3 of the Matrix5x4.</param>\n            <param name=\"M24\">The value to assign at row 2 column 4 of the Matrix5x4.</param>\n            <param name=\"M31\">The value to assign at row 3 column 1 of the Matrix5x4.</param>\n            <param name=\"M32\">The value to assign at row 3 column 2 of the Matrix5x4.</param>\n            <param name=\"M33\">The value to assign at row 3 column 3 of the Matrix5x4.</param>\n            <param name=\"M34\">The value to assign at row 3 column 4 of the Matrix5x4.</param>\n            <param name=\"M41\">The value to assign at row 4 column 1 of the Matrix5x4.</param>\n            <param name=\"M42\">The value to assign at row 4 column 2 of the Matrix5x4.</param>\n            <param name=\"M43\">The value to assign at row 4 column 3 of the Matrix5x4.</param>\n            <param name=\"M44\">The value to assign at row 4 column 4 of the Matrix5x4.</param>\n            <param name=\"M51\">The value to assign at row 5 column 1 of the Matrix5x4.</param>\n            <param name=\"M52\">The value to assign at row 5 column 2 of the Matrix5x4.</param>\n            <param name=\"M53\">The value to assign at row 5 column 3 of the Matrix5x4.</param>\n            <param name=\"M54\">The value to assign at row 5 column 4 of the Matrix5x4.</param>\n        </member>\n        <member name=\"M:SharpDX.Matrix5x4.#ctor(System.Single[])\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Matrix5x4\"/> struct.\n            </summary>\n            <param name=\"values\">The values to assign to the components of the Matrix5x4. This must be an array with sixteen elements.</param>\n            <exception cref=\"T:System.ArgumentNullException\">Thrown when <paramref name=\"values\"/> is <c>null</c>.</exception>\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">Thrown when <paramref name=\"values\"/> contains more or less than sixteen elements.</exception>\n        </member>\n        <member name=\"M:SharpDX.Matrix5x4.Add(SharpDX.Matrix5x4@,SharpDX.Matrix5x4@,SharpDX.Matrix5x4@)\">\n            <summary>\n            Determines the sum of two matrices.\n            </summary>\n            <param name=\"left\">The first Matrix5x4 to add.</param>\n            <param name=\"right\">The second Matrix5x4 to add.</param>\n            <param name=\"result\">When the method completes, contains the sum of the two matrices.</param>\n        </member>\n        <member name=\"M:SharpDX.Matrix5x4.Add(SharpDX.Matrix5x4,SharpDX.Matrix5x4)\">\n            <summary>\n            Determines the sum of two matrices.\n            </summary>\n            <param name=\"left\">The first Matrix5x4 to add.</param>\n            <param name=\"right\">The second Matrix5x4 to add.</param>\n            <returns>The sum of the two matrices.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix5x4.Subtract(SharpDX.Matrix5x4@,SharpDX.Matrix5x4@,SharpDX.Matrix5x4@)\">\n            <summary>\n            Determines the difference between two matrices.\n            </summary>\n            <param name=\"left\">The first Matrix5x4 to subtract.</param>\n            <param name=\"right\">The second Matrix5x4 to subtract.</param>\n            <param name=\"result\">When the method completes, contains the difference between the two matrices.</param>\n        </member>\n        <member name=\"M:SharpDX.Matrix5x4.Subtract(SharpDX.Matrix5x4,SharpDX.Matrix5x4)\">\n            <summary>\n            Determines the difference between two matrices.\n            </summary>\n            <param name=\"left\">The first Matrix5x4 to subtract.</param>\n            <param name=\"right\">The second Matrix5x4 to subtract.</param>\n            <returns>The difference between the two matrices.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix5x4.Multiply(SharpDX.Matrix5x4@,System.Single,SharpDX.Matrix5x4@)\">\n            <summary>\n            Scales a Matrix5x4 by the given value.\n            </summary>\n            <param name=\"left\">The Matrix5x4 to scale.</param>\n            <param name=\"right\">The amount by which to scale.</param>\n            <param name=\"result\">When the method completes, contains the scaled Matrix5x4.</param>\n        </member>\n        <member name=\"M:SharpDX.Matrix5x4.Divide(SharpDX.Matrix5x4@,System.Single,SharpDX.Matrix5x4@)\">\n            <summary>\n            Scales a Matrix5x4 by the given value.\n            </summary>\n            <param name=\"left\">The Matrix5x4 to scale.</param>\n            <param name=\"right\">The amount by which to scale.</param>\n            <param name=\"result\">When the method completes, contains the scaled Matrix5x4.</param>\n        </member>\n        <member name=\"M:SharpDX.Matrix5x4.Negate(SharpDX.Matrix5x4@,SharpDX.Matrix5x4@)\">\n            <summary>\n            Negates a Matrix5x4.\n            </summary>\n            <param name=\"value\">The Matrix5x4 to be negated.</param>\n            <param name=\"result\">When the method completes, contains the negated Matrix5x4.</param>\n        </member>\n        <member name=\"M:SharpDX.Matrix5x4.Negate(SharpDX.Matrix5x4)\">\n            <summary>\n            Negates a Matrix5x4.\n            </summary>\n            <param name=\"value\">The Matrix5x4 to be negated.</param>\n            <returns>The negated Matrix5x4.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix5x4.Lerp(SharpDX.Matrix5x4@,SharpDX.Matrix5x4@,System.Single,SharpDX.Matrix5x4@)\">\n            <summary>\n            Performs a linear interpolation between two matricies.\n            </summary>\n            <param name=\"start\">Start Matrix5x4.</param>\n            <param name=\"end\">End Matrix5x4.</param>\n            <param name=\"amount\">Value between 0 and 1 indicating the weight of <paramref name=\"end\"/>.</param>\n            <param name=\"result\">When the method completes, contains the linear interpolation of the two matricies.</param>\n            <remarks>\n            This method performs the linear interpolation based on the following formula.\n            <code>start + (end - start) * amount</code>\n            Passing <paramref name=\"amount\"/> a value of 0 will cause <paramref name=\"start\"/> to be returned; a value of 1 will cause <paramref name=\"end\"/> to be returned. \n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Matrix5x4.Lerp(SharpDX.Matrix5x4,SharpDX.Matrix5x4,System.Single)\">\n            <summary>\n            Performs a linear interpolation between two matricies.\n            </summary>\n            <param name=\"start\">Start Matrix5x4.</param>\n            <param name=\"end\">End Matrix5x4.</param>\n            <param name=\"amount\">Value between 0 and 1 indicating the weight of <paramref name=\"end\"/>.</param>\n            <returns>The linear interpolation of the two matrices.</returns>\n            <remarks>\n            This method performs the linear interpolation based on the following formula.\n            <code>start + (end - start) * amount</code>\n            Passing <paramref name=\"amount\"/> a value of 0 will cause <paramref name=\"start\"/> to be returned; a value of 1 will cause <paramref name=\"end\"/> to be returned. \n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Matrix5x4.SmoothStep(SharpDX.Matrix5x4@,SharpDX.Matrix5x4@,System.Single,SharpDX.Matrix5x4@)\">\n            <summary>\n            Performs a cubic interpolation between two matricies.\n            </summary>\n            <param name=\"start\">Start Matrix5x4.</param>\n            <param name=\"end\">End Matrix5x4.</param>\n            <param name=\"amount\">Value between 0 and 1 indicating the weight of <paramref name=\"end\"/>.</param>\n            <param name=\"result\">When the method completes, contains the cubic interpolation of the two matrices.</param>\n        </member>\n        <member name=\"M:SharpDX.Matrix5x4.SmoothStep(SharpDX.Matrix5x4,SharpDX.Matrix5x4,System.Single)\">\n            <summary>\n            Performs a cubic interpolation between two matrices.\n            </summary>\n            <param name=\"start\">Start Matrix5x4.</param>\n            <param name=\"end\">End Matrix5x4.</param>\n            <param name=\"amount\">Value between 0 and 1 indicating the weight of <paramref name=\"end\"/>.</param>\n            <returns>The cubic interpolation of the two matrices.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix5x4.Scaling(SharpDX.Vector4@,SharpDX.Matrix5x4@)\">\n            <summary>\n            Creates a Matrix5x4 that scales along the x-axis, y-axis, y-axis and w-axis\n            </summary>\n            <param name=\"scale\">Scaling factor for all three axes.</param>\n            <param name=\"result\">When the method completes, contains the created scaling Matrix5x4.</param>\n        </member>\n        <member name=\"M:SharpDX.Matrix5x4.Scaling(SharpDX.Vector4)\">\n            <summary>\n            Creates a Matrix5x4 that scales along the x-axis, y-axis, and y-axis.\n            </summary>\n            <param name=\"scale\">Scaling factor for all three axes.</param>\n            <returns>The created scaling Matrix5x4.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix5x4.Scaling(System.Single,System.Single,System.Single,System.Single,SharpDX.Matrix5x4@)\">\n            <summary>\n            Creates a Matrix5x4 that scales along the x-axis, y-axis, z-axis and w-axis.\n            </summary>\n            <param name=\"x\">Scaling factor that is applied along the x-axis.</param>\n            <param name=\"y\">Scaling factor that is applied along the y-axis.</param>\n            <param name=\"z\">Scaling factor that is applied along the z-axis.</param>\n            <param name=\"result\">When the method completes, contains the created scaling Matrix5x4.</param>\n        </member>\n        <member name=\"M:SharpDX.Matrix5x4.Scaling(System.Single,System.Single,System.Single,System.Single)\">\n            <summary>\n            Creates a Matrix5x4 that scales along the x-axis, y-axis, z-axis and w-axis.\n            </summary>\n            <param name=\"x\">Scaling factor that is applied along the x-axis.</param>\n            <param name=\"y\">Scaling factor that is applied along the y-axis.</param>\n            <param name=\"z\">Scaling factor that is applied along the z-axis.</param>\n            <param name=\"w\">Scaling factor that is applied along the w-axis.</param>\n            <returns>The created scaling Matrix5x4.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix5x4.Scaling(System.Single,SharpDX.Matrix5x4@)\">\n            <summary>\n            Creates a Matrix5x4 that uniformally scales along all three axis.\n            </summary>\n            <param name=\"scale\">The uniform scale that is applied along all axis.</param>\n            <param name=\"result\">When the method completes, contains the created scaling Matrix5x4.</param>\n        </member>\n        <member name=\"M:SharpDX.Matrix5x4.Scaling(System.Single)\">\n            <summary>\n            Creates a Matrix5x4 that uniformally scales along all three axis.\n            </summary>\n            <param name=\"scale\">The uniform scale that is applied along all axis.</param>\n            <returns>The created scaling Matrix5x4.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix5x4.Translation(SharpDX.Vector4@,SharpDX.Matrix5x4@)\">\n            <summary>\n            Creates a translation Matrix5x4 using the specified offsets.\n            </summary>\n            <param name=\"value\">The offset for all three coordinate planes.</param>\n            <param name=\"result\">When the method completes, contains the created translation Matrix5x4.</param>\n        </member>\n        <member name=\"M:SharpDX.Matrix5x4.Translation(SharpDX.Vector4)\">\n            <summary>\n            Creates a translation Matrix5x4 using the specified offsets.\n            </summary>\n            <param name=\"value\">The offset for all three coordinate planes.</param>\n            <returns>The created translation Matrix5x4.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix5x4.Translation(System.Single,System.Single,System.Single,System.Single,SharpDX.Matrix5x4@)\">\n            <summary>\n            Creates a translation Matrix5x4 using the specified offsets.\n            </summary>\n            <param name=\"x\">X-coordinate offset.</param>\n            <param name=\"y\">Y-coordinate offset.</param>\n            <param name=\"z\">Z-coordinate offset.</param>\n            <param name=\"result\">When the method completes, contains the created translation Matrix5x4.</param>\n        </member>\n        <member name=\"M:SharpDX.Matrix5x4.Translation(System.Single,System.Single,System.Single,System.Single)\">\n            <summary>\n            Creates a translation Matrix5x4 using the specified offsets.\n            </summary>\n            <param name=\"x\">X-coordinate offset.</param>\n            <param name=\"y\">Y-coordinate offset.</param>\n            <param name=\"z\">Z-coordinate offset.</param>\n            <param name=\"w\">W-coordinate offset.</param>\n            <returns>The created translation Matrix5x4.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix5x4.op_Addition(SharpDX.Matrix5x4,SharpDX.Matrix5x4)\">\n            <summary>\n            Adds two matricies.\n            </summary>\n            <param name=\"left\">The first Matrix5x4 to add.</param>\n            <param name=\"right\">The second Matrix5x4 to add.</param>\n            <returns>The sum of the two matricies.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix5x4.op_UnaryPlus(SharpDX.Matrix5x4)\">\n            <summary>\n            Assert a Matrix5x4 (return it unchanged).\n            </summary>\n            <param name=\"value\">The Matrix5x4 to assert (unchange).</param>\n            <returns>The asserted (unchanged) Matrix5x4.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix5x4.op_Subtraction(SharpDX.Matrix5x4,SharpDX.Matrix5x4)\">\n            <summary>\n            Subtracts two matricies.\n            </summary>\n            <param name=\"left\">The first Matrix5x4 to subtract.</param>\n            <param name=\"right\">The second Matrix5x4 to subtract.</param>\n            <returns>The difference between the two matricies.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix5x4.op_UnaryNegation(SharpDX.Matrix5x4)\">\n            <summary>\n            Negates a Matrix5x4.\n            </summary>\n            <param name=\"value\">The Matrix5x4 to negate.</param>\n            <returns>The negated Matrix5x4.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix5x4.op_Multiply(System.Single,SharpDX.Matrix5x4)\">\n            <summary>\n            Scales a Matrix5x4 by a given value.\n            </summary>\n            <param name=\"right\">The Matrix5x4 to scale.</param>\n            <param name=\"left\">The amount by which to scale.</param>\n            <returns>The scaled Matrix5x4.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix5x4.op_Multiply(SharpDX.Matrix5x4,System.Single)\">\n            <summary>\n            Scales a Matrix5x4 by a given value.\n            </summary>\n            <param name=\"left\">The Matrix5x4 to scale.</param>\n            <param name=\"right\">The amount by which to scale.</param>\n            <returns>The scaled Matrix5x4.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix5x4.op_Division(SharpDX.Matrix5x4,System.Single)\">\n            <summary>\n            Scales a Matrix5x4 by a given value.\n            </summary>\n            <param name=\"left\">The Matrix5x4 to scale.</param>\n            <param name=\"right\">The amount by which to scale.</param>\n            <returns>The scaled Matrix5x4.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix5x4.op_Equality(SharpDX.Matrix5x4,SharpDX.Matrix5x4)\">\n            <summary>\n            Tests for equality between two objects.\n            </summary>\n            <param name=\"left\">The first value to compare.</param>\n            <param name=\"right\">The second value to compare.</param>\n            <returns><c>true</c> if <paramref name=\"left\"/> has the same value as <paramref name=\"right\"/>; otherwise, <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix5x4.op_Inequality(SharpDX.Matrix5x4,SharpDX.Matrix5x4)\">\n            <summary>\n            Tests for inequality between two objects.\n            </summary>\n            <param name=\"left\">The first value to compare.</param>\n            <param name=\"right\">The second value to compare.</param>\n            <returns><c>true</c> if <paramref name=\"left\"/> has a different value than <paramref name=\"right\"/>; otherwise, <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix5x4.ToString\">\n            <summary>\n            Returns a <see cref=\"T:System.String\"/> that represents this instance.\n            </summary>\n            <returns>\n            A <see cref=\"T:System.String\"/> that represents this instance.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix5x4.ToString(System.String)\">\n            <summary>\n            Returns a <see cref=\"T:System.String\"/> that represents this instance.\n            </summary>\n            <param name=\"format\">The format.</param>\n            <returns>\n            A <see cref=\"T:System.String\"/> that represents this instance.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix5x4.ToString(System.IFormatProvider)\">\n            <summary>\n            Returns a <see cref=\"T:System.String\"/> that represents this instance.\n            </summary>\n            <param name=\"formatProvider\">The format provider.</param>\n            <returns>\n            A <see cref=\"T:System.String\"/> that represents this instance.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix5x4.ToString(System.String,System.IFormatProvider)\">\n            <summary>\n            Returns a <see cref=\"T:System.String\"/> that represents this instance.\n            </summary>\n            <param name=\"format\">The format.</param>\n            <param name=\"formatProvider\">The format provider.</param>\n            <returns>\n            A <see cref=\"T:System.String\"/> that represents this instance.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix5x4.GetHashCode\">\n            <summary>\n            Returns a hash code for this instance.\n            </summary>\n            <returns>\n            A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. \n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix5x4.Equals(SharpDX.Matrix5x4)\">\n            <summary>\n            Determines whether the specified <see cref=\"T:SharpDX.Matrix5x4\"/> is equal to this instance.\n            </summary>\n            <param name=\"other\">The <see cref=\"T:SharpDX.Matrix5x4\"/> to compare with this instance.</param>\n            <returns>\n            <c>true</c> if the specified <see cref=\"T:SharpDX.Matrix5x4\"/> is equal to this instance; otherwise, <c>false</c>.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix5x4.Equals(System.Object)\">\n            <summary>\n            Determines whether the specified <see cref=\"T:System.Object\"/> is equal to this instance.\n            </summary>\n            <param name=\"value\">The <see cref=\"T:System.Object\"/> to compare with this instance.</param>\n            <returns>\n            <c>true</c> if the specified <see cref=\"T:System.Object\"/> is equal to this instance; otherwise, <c>false</c>.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix5x4.SharpDX#Serialization#IDataSerializable#Serialize(SharpDX.Serialization.BinarySerializer)\">\n            <inheritdoc/>\n        </member>\n        <member name=\"P:SharpDX.Matrix5x4.Row1\">\n            <summary>\n            Gets or sets the first row in the Matrix5x4; that is M11, M12, M13, and M14.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Matrix5x4.Row2\">\n            <summary>\n            Gets or sets the second row in the Matrix5x4; that is M21, M22, M23, and M24.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Matrix5x4.Row3\">\n            <summary>\n            Gets or sets the third row in the Matrix5x4; that is M31, M32, M33, and M34.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Matrix5x4.Row4\">\n            <summary>\n            Gets or sets the fourth row in the Matrix5x4; that is M41, M42, M43, and M44.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Matrix5x4.Row5\">\n            <summary>\n            Gets or sets the fifth row in the Matrix5x4; that is M51, M52, M53, and M54.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Matrix5x4.TranslationVector\">\n            <summary>\n            Gets or sets the translation of the Matrix5x4; that is M41, M42, and M43.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Matrix5x4.ScaleVector\">\n            <summary>\n            Gets or sets the scale of the Matrix5x4; that is M11, M22, and M33.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Matrix5x4.IsIdentity\">\n            <summary>\n            Gets a value indicating whether this instance is an identity Matrix5x4.\n            </summary>\n            <value>\n            <c>true</c> if this instance is an identity Matrix5x4; otherwise, <c>false</c>.\n            </value>\n        </member>\n        <member name=\"P:SharpDX.Matrix5x4.Item(System.Int32)\">\n            <summary>\n            Gets or sets the component at the specified index.\n            </summary>\n            <value>The value of the Matrix5x4 component, depending on the index.</value>\n            <param name=\"index\">The zero-based index of the component to access.</param>\n            <returns>The value of the component at the specified index.</returns>\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">Thrown when the <paramref name=\"index\"/> is out of the range [0, 15].</exception>\n        </member>\n        <member name=\"P:SharpDX.Matrix5x4.Item(System.Int32,System.Int32)\">\n            <summary>\n            Gets or sets the component at the specified index.\n            </summary>\n            <value>The value of the Matrix5x4 component, depending on the index.</value>\n            <param name=\"row\">The row of the Matrix5x4 to access.</param>\n            <param name=\"column\">The column of the Matrix5x4 to access.</param>\n            <returns>The value of the component at the specified index.</returns>\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">Thrown when the <paramref name=\"row\"/> or <paramref name=\"column\"/>is out of the range [0, 3].</exception>\n        </member>\n        <member name=\"T:SharpDX.ResultDescriptor\">\n            <summary>\n            Descriptor used to provide detailed message for a particular <see cref=\"P:SharpDX.ResultDescriptor.Result\"/>.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.ResultDescriptor.#ctor(SharpDX.Result,System.String,System.String,System.String,System.String)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.ResultDescriptor\"/> class.\n            </summary>\n            <param name=\"code\">The HRESULT error code.</param>\n            <param name=\"module\">The module (ex: SharpDX.Direct2D1).</param>\n            <param name=\"apiCode\">The API code (ex: D2D1_ERR_...).</param>\n            <param name=\"description\">The description of the result code if any.</param>\n        </member>\n        <member name=\"M:SharpDX.ResultDescriptor.Equals(SharpDX.ResultDescriptor)\">\n            <summary>\n            Determines whether the specified <see cref=\"T:SharpDX.ResultDescriptor\"/> is equal to this instance.\n            </summary>\n            <param name=\"other\">The <see cref=\"T:SharpDX.ResultDescriptor\"/> to compare with this instance.</param>\n            <returns>\n              <c>true</c> if the specified <see cref=\"T:SharpDX.ResultDescriptor\"/> is equal to this instance; otherwise, <c>false</c>.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.ResultDescriptor.Equals(System.Object)\">\n            <summary>\n            Determines whether the specified <see cref=\"T:System.Object\"/> is equal to this instance.\n            </summary>\n            <param name=\"obj\">The <see cref=\"T:System.Object\"/> to compare with this instance.</param>\n            <returns>\n              <c>true</c> if the specified <see cref=\"T:System.Object\"/> is equal to this instance; otherwise, <c>false</c>.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.ResultDescriptor.GetHashCode\">\n            <inheritdoc/>\n        </member>\n        <member name=\"M:SharpDX.ResultDescriptor.ToString\">\n            <inheritdoc/>\n        </member>\n        <member name=\"M:SharpDX.ResultDescriptor.op_Implicit(SharpDX.ResultDescriptor)~SharpDX.Result\">\n            <summary>\n            Performs an implicit conversion from <see cref=\"T:SharpDX.ResultDescriptor\"/> to <see cref=\"T:SharpDX.Result\"/>.\n            </summary>\n            <param name=\"result\">The result.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.ResultDescriptor.op_Equality(SharpDX.ResultDescriptor,SharpDX.Result)\">\n            <summary>\n            Implements the operator ==.\n            </summary>\n            <param name=\"left\">The left.</param>\n            <param name=\"right\">The right.</param>\n            <returns>The result of the operator.</returns>\n        </member>\n        <member name=\"M:SharpDX.ResultDescriptor.op_Inequality(SharpDX.ResultDescriptor,SharpDX.Result)\">\n            <summary>\n            Implements the operator !=.\n            </summary>\n            <param name=\"left\">The left.</param>\n            <param name=\"right\">The right.</param>\n            <returns>The result of the operator.</returns>\n        </member>\n        <member name=\"M:SharpDX.ResultDescriptor.RegisterProvider(System.Type)\">\n            <summary>\n            Registers a <see cref=\"T:SharpDX.ResultDescriptor\"/> provider.\n            </summary>\n            <param name=\"descriptorsProviderType\">Type of the descriptors provider.</param>\n            <remarks>\n            Providers are usually registered at module init when SharpDX assemblies are loaded.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.ResultDescriptor.Find(SharpDX.Result)\">\n            <summary>\n            Finds the specified result descriptor.\n            </summary>\n            <param name=\"result\">The result code.</param>\n            <returns>A descriptor for the specified result</returns>\n        </member>\n        <member name=\"P:SharpDX.ResultDescriptor.Result\">\n            <summary>\n            Gets the result.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.ResultDescriptor.Module\">\n            <summary>\n            Gets the module (ex: SharpDX.Direct2D1)\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.ResultDescriptor.NativeApiCode\">\n            <summary>\n            Gets the native API code (ex: D2D1_ERR_ ...)\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.ResultDescriptor.ApiCode\">\n            <summary>\n            Gets the API code (ex: DemiceRemoved ...)\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.ResultDescriptor.Description\">\n            <summary>\n            Gets the description of the result code if any.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.DrawingSizeF\">\n            <summary>\n            Structure using the same layout than <see cref=\"T:System.Drawing.SizeF\"/>.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.DrawingSizeF.#ctor(System.Single,System.Single)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DrawingSizeF\"/> struct.\n            </summary>\n            <param name=\"width\">The x.</param>\n            <param name=\"height\">The y.</param>\n        </member>\n        <member name=\"F:SharpDX.DrawingSizeF.Width\">\n            <summary>\n            Width.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DrawingSizeF.Height\">\n            <summary>\n            Height.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.DrawingSizeF.Equals(SharpDX.DrawingSizeF)\">\n            <summary>\n            Determines whether the specified <see cref=\"T:System.Object\"/> is equal to this instance.\n            </summary>\n            <param name=\"other\">The <see cref=\"T:System.Object\"/> to compare with this instance.</param>\n            <returns>\n              <c>true</c> if the specified <see cref=\"T:System.Object\"/> is equal to this instance; otherwise, <c>false</c>.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.DrawingSizeF.Equals(System.Object)\">\n            <inheritdoc/>\n        </member>\n        <member name=\"M:SharpDX.DrawingSizeF.GetHashCode\">\n            <inheritdoc/>\n        </member>\n        <member name=\"M:SharpDX.DrawingSizeF.op_Equality(SharpDX.DrawingSizeF,SharpDX.DrawingSizeF)\">\n            <summary>\n            Implements the operator ==.\n            </summary>\n            <param name=\"left\">The left.</param>\n            <param name=\"right\">The right.</param>\n            <returns>\n            The result of the operator.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.DrawingSizeF.op_Inequality(SharpDX.DrawingSizeF,SharpDX.DrawingSizeF)\">\n            <summary>\n            Implements the operator !=.\n            </summary>\n            <param name=\"left\">The left.</param>\n            <param name=\"right\">The right.</param>\n            <returns>\n            The result of the operator.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.DrawingSizeF.SharpDX#Serialization#IDataSerializable#Serialize(SharpDX.Serialization.BinarySerializer)\">\n            <inheritdoc/>\n        </member>\n        <member name=\"T:SharpDX.DrawingSize\">\n            <summary>\n            Structure using the same layout than <see cref=\"T:System.Drawing.Size\"/>.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.DrawingSize.#ctor(System.Int32,System.Int32)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DrawingSize\"/> struct.\n            </summary>\n            <param name=\"width\">The x.</param>\n            <param name=\"height\">The y.</param>\n        </member>\n        <member name=\"F:SharpDX.DrawingSize.Width\">\n            <summary>\n            Width.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DrawingSize.Height\">\n            <summary>\n            Height.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.DrawingSize.Equals(SharpDX.DrawingSize)\">\n            <summary>\n            Determines whether the specified <see cref=\"T:System.Object\"/> is equal to this instance.\n            </summary>\n            <param name=\"other\">The <see cref=\"T:System.Object\"/> to compare with this instance.</param>\n            <returns>\n              <c>true</c> if the specified <see cref=\"T:System.Object\"/> is equal to this instance; otherwise, <c>false</c>.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.DrawingSize.Equals(System.Object)\">\n            <inheritdoc/>\n        </member>\n        <member name=\"M:SharpDX.DrawingSize.GetHashCode\">\n            <inheritdoc/>\n        </member>\n        <member name=\"M:SharpDX.DrawingSize.op_Equality(SharpDX.DrawingSize,SharpDX.DrawingSize)\">\n            <summary>\n            Implements the operator ==.\n            </summary>\n            <param name=\"left\">The left.</param>\n            <param name=\"right\">The right.</param>\n            <returns>\n            The result of the operator.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.DrawingSize.op_Inequality(SharpDX.DrawingSize,SharpDX.DrawingSize)\">\n            <summary>\n            Implements the operator !=.\n            </summary>\n            <param name=\"left\">The left.</param>\n            <param name=\"right\">The right.</param>\n            <returns>\n            The result of the operator.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.DrawingSize.SharpDX#Serialization#IDataSerializable#Serialize(SharpDX.Serialization.BinarySerializer)\">\n            <inheritdoc/>\n        </member>\n        <member name=\"T:SharpDX.DrawingPointF\">\n            <summary>\n            Structure using the same layout than <see cref=\"T:System.Drawing.Point\"/>.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.DrawingPointF.#ctor(System.Single,System.Single)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DrawingPointF\"/> struct.\n            </summary>\n            <param name=\"x\">The x.</param>\n            <param name=\"y\">The y.</param>\n        </member>\n        <member name=\"F:SharpDX.DrawingPointF.X\">\n            <summary>\n            Left coordinate.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DrawingPointF.Y\">\n            <summary>\n            Top coordinate.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.DrawingPointF.Equals(SharpDX.DrawingPointF)\">\n            <summary>\n            Determines whether the specified <see cref=\"T:System.Object\"/> is equal to this instance.\n            </summary>\n            <param name=\"obj\">The <see cref=\"T:System.Object\"/> to compare with this instance.</param>\n            <returns>\n              <c>true</c> if the specified <see cref=\"T:System.Object\"/> is equal to this instance; otherwise, <c>false</c>.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.DrawingPointF.Equals(System.Object)\">\n            <inheritdoc/>\n        </member>\n        <member name=\"M:SharpDX.DrawingPointF.GetHashCode\">\n            <inheritdoc/>\n        </member>\n        <member name=\"M:SharpDX.DrawingPointF.op_Equality(SharpDX.DrawingPointF,SharpDX.DrawingPointF)\">\n            <summary>\n            Implements the operator ==.\n            </summary>\n            <param name=\"left\">The left.</param>\n            <param name=\"right\">The right.</param>\n            <returns>\n            The result of the operator.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.DrawingPointF.op_Inequality(SharpDX.DrawingPointF,SharpDX.DrawingPointF)\">\n            <summary>\n            Implements the operator !=.\n            </summary>\n            <param name=\"left\">The left.</param>\n            <param name=\"right\">The right.</param>\n            <returns>\n            The result of the operator.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.DrawingPointF.op_Implicit(SharpDX.Vector2)~SharpDX.DrawingPointF\">\n            <summary>\n            Performs an implicit conversion from <see cref=\"T:SharpDX.Vector2\"/> to <see cref=\"T:SharpDX.DrawingPointF\"/>.\n            </summary>\n            <param name=\"input\">The input.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.DrawingPointF.op_Implicit(SharpDX.DrawingPointF)~SharpDX.Vector2\">\n            <summary>\n            Performs an implicit conversion from <see cref=\"T:SharpDX.DrawingPointF\"/> to <see cref=\"T:SharpDX.Vector2\"/>.\n            </summary>\n            <param name=\"input\">The input.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.DrawingPointF.SharpDX#Serialization#IDataSerializable#Serialize(SharpDX.Serialization.BinarySerializer)\">\n            <inheritdoc/>\n        </member>\n        <member name=\"T:SharpDX.DrawingPoint\">\n            <summary>\n            Structure using the same layout than <see cref=\"T:System.Drawing.Point\"/>.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.DrawingPoint.#ctor(System.Int32,System.Int32)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DrawingPoint\"/> struct.\n            </summary>\n            <param name=\"x\">The x.</param>\n            <param name=\"y\">The y.</param>\n        </member>\n        <member name=\"F:SharpDX.DrawingPoint.X\">\n            <summary>\n            Left coordinate.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DrawingPoint.Y\">\n            <summary>\n            Top coordinate.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.DrawingPoint.Equals(SharpDX.DrawingPoint)\">\n            <summary>\n            Determines whether the specified <see cref=\"T:System.Object\"/> is equal to this instance.\n            </summary>\n            <param name=\"obj\">The <see cref=\"T:System.Object\"/> to compare with this instance.</param>\n            <returns>\n              <c>true</c> if the specified <see cref=\"T:System.Object\"/> is equal to this instance; otherwise, <c>false</c>.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.DrawingPoint.Equals(System.Object)\">\n            <inheritdoc/>\n        </member>\n        <member name=\"M:SharpDX.DrawingPoint.GetHashCode\">\n            <inheritdoc/>\n        </member>\n        <member name=\"M:SharpDX.DrawingPoint.op_Equality(SharpDX.DrawingPoint,SharpDX.DrawingPoint)\">\n            <summary>\n            Implements the operator ==.\n            </summary>\n            <param name=\"left\">The left.</param>\n            <param name=\"right\">The right.</param>\n            <returns>\n            The result of the operator.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.DrawingPoint.op_Inequality(SharpDX.DrawingPoint,SharpDX.DrawingPoint)\">\n            <summary>\n            Implements the operator !=.\n            </summary>\n            <param name=\"left\">The left.</param>\n            <param name=\"right\">The right.</param>\n            <returns>\n            The result of the operator.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.DrawingPoint.SharpDX#Serialization#IDataSerializable#Serialize(SharpDX.Serialization.BinarySerializer)\">\n            <inheritdoc/>\n        </member>\n        <member name=\"T:SharpDX.DrawingRectangleF\">\n            <summary>\n            Structure using the same layout than <see cref=\"T:System.Drawing.RectangleF\"/>\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.DrawingRectangleF.#ctor(SharpDX.Vector2,SharpDX.Vector2)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DrawingRectangleF\"/> struct.\n            </summary>\n            <param name=\"position\">The x-y position of this rectangle.</param>\n            <param name=\"size\">The x-y size of this rectangle.</param>\n        </member>\n        <member name=\"M:SharpDX.DrawingRectangleF.#ctor(System.Single,System.Single,System.Single,System.Single)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DrawingRectangleF\"/> struct.\n            </summary>\n            <param name=\"x\">The x.</param>\n            <param name=\"y\">The y.</param>\n            <param name=\"width\">The width.</param>\n            <param name=\"height\">The height.</param>\n        </member>\n        <member name=\"M:SharpDX.DrawingRectangleF.Contains(System.Int32,System.Int32)\">\n            <summary>\n            Checks, if specified point is inside <see cref=\"T:SharpDX.DrawingRectangleF\"/>.\n            </summary>\n            <param name=\"x\">X point coordinate.</param>\n            <param name=\"y\">Y point coordinate.</param>\n            <returns><c>true</c> if point is inside <see cref=\"T:SharpDX.DrawingRectangleF\"/>, otherwise <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.DrawingRectangleF.Contains(System.Single,System.Single)\">\n            <summary>\n            Checks, if specified point is inside <see cref=\"T:SharpDX.DrawingRectangleF\"/>.\n            </summary>\n            <param name=\"x\">X point coordinate.</param>\n            <param name=\"y\">Y point coordinate.</param>\n            <returns><c>true</c> if point is inside <see cref=\"T:SharpDX.DrawingRectangleF\"/>, otherwise <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.DrawingRectangleF.Contains(SharpDX.Vector2)\">\n            <summary>\n            Checks, if specified <see cref=\"T:SharpDX.Vector2\"/> is inside <see cref=\"T:SharpDX.DrawingRectangleF\"/>. \n            </summary> \n            <param name=\"vector2D\">Coordinate <see cref=\"T:SharpDX.Vector2\"/>.</param>\n            <returns><c>true</c> if <see cref=\"T:SharpDX.Vector2\"/> is inside <see cref=\"T:SharpDX.DrawingRectangleF\"/>, otherwise <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.DrawingRectangleF.Contains(SharpDX.DrawingPoint)\">\n            <summary>\n            Checks, if specified <see cref=\"T:SharpDX.DrawingPoint\"/> is inside <see cref=\"T:SharpDX.DrawingRectangleF\"/>. \n            </summary>\n            <param name=\"point\">Coordinate <see cref=\"T:SharpDX.DrawingPoint\"/>.</param> \n            <returns><c>true</c> if <see cref=\"T:SharpDX.DrawingPoint\"/> is inside <see cref=\"T:SharpDX.DrawingRectangleF\"/>, otherwise <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.DrawingRectangleF.Contains(SharpDX.DrawingPointF)\">\n            <summary>\n            Checks, if specified <see cref=\"T:SharpDX.DrawingPointF\"/> is inside <see cref=\"T:SharpDX.DrawingRectangleF\"/>. \n            </summary>\n            <param name=\"point\">Coordinate <see cref=\"T:SharpDX.DrawingPointF\"/>.</param> \n            <returns><c>true</c> if <see cref=\"T:SharpDX.DrawingPointF\"/> is inside <see cref=\"T:SharpDX.DrawingRectangleF\"/>, otherwise <c>false</c>.</returns>\n        </member>\n        <member name=\"F:SharpDX.DrawingRectangleF.Position\">\n            <summary>\n            The Position.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DrawingRectangleF.Size\">\n            <summary>\n            The Size.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.DrawingRectangleF.Equals(SharpDX.DrawingRectangleF)\">\n            <summary>\n            Determines whether the specified <see cref=\"T:System.Object\"/> is equal to this instance.\n            </summary>\n            <param name=\"obj\">The <see cref=\"T:System.Object\"/> to compare with this instance.</param>\n            <returns>\n              <c>true</c> if the specified <see cref=\"T:System.Object\"/> is equal to this instance; otherwise, <c>false</c>.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.DrawingRectangleF.Equals(System.Object)\">\n            <inheritdoc/>\n        </member>\n        <member name=\"M:SharpDX.DrawingRectangleF.GetHashCode\">\n            <inheritdoc/>\n        </member>\n        <member name=\"M:SharpDX.DrawingRectangleF.op_Equality(SharpDX.DrawingRectangleF,SharpDX.DrawingRectangleF)\">\n            <summary>\n            Implements the operator ==.\n            </summary>\n            <param name=\"left\">The left.</param>\n            <param name=\"right\">The right.</param>\n            <returns>\n            The result of the operator.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.DrawingRectangleF.op_Inequality(SharpDX.DrawingRectangleF,SharpDX.DrawingRectangleF)\">\n            <summary>\n            Implements the operator !=.\n            </summary>\n            <param name=\"left\">The left.</param>\n            <param name=\"right\">The right.</param>\n            <returns>\n            The result of the operator.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.DrawingRectangleF.SharpDX#Serialization#IDataSerializable#Serialize(SharpDX.Serialization.BinarySerializer)\">\n            <inheritdoc/>\n        </member>\n        <member name=\"P:SharpDX.DrawingRectangleF.X\">\n            <summary>\n            Left coordinate.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.DrawingRectangleF.Y\">\n            <summary>\n            Top coordinate.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.DrawingRectangleF.Width\">\n            <summary>\n            Width of this rectangle.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.DrawingRectangleF.Height\">\n            <summary>\n            Height of this rectangle.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Direct3D.PixHelper\">\n            <summary>\n            Helper class for PIX.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Direct3D.PixHelper.BeginEvent(SharpDX.Color,System.String)\">\n            <summary>\n            Marks the beginning of a user-defined event. PIX can use this event to trigger an action.\n            </summary>\n            <param name=\"color\">The Event color.</param>\n            <param name=\"name\">The Event Name.</param>\n            <returns>The zero-based level of the hierarchy that this event is starting in. If an error occurs, the return value will be negative.</returns>\n            <unmanaged>D3DPERF_BeginEvent</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D.PixHelper.BeginEvent(SharpDX.Color,System.String,System.Object[])\">\n            <summary>\n            Marks the beginning of a user-defined event. PIX can use this event to trigger an action.\n            </summary>\n            <param name=\"color\">The Event color.</param>\n            <param name=\"name\">The Event formatted Name.</param>\n            <param name=\"parameters\">The parameters to use for the formatted name.</param>\n            <returns>\n            The zero-based level of the hierarchy that this event is starting in. If an error occurs, the return value will be negative.\n            </returns>\n            <unmanaged>D3DPERF_BeginEvent</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D.PixHelper.EndEvent\">\n            <summary>\n            Mark the end of a user-defined event. PIX can use this event to trigger an action.\n            </summary>\n            <returns>The level of the hierarchy in which the event is ending. If an error occurs, this value is negative.</returns>\n            <unmanaged>D3DPERF_EndEvent</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D.PixHelper.SetMarker(SharpDX.Color,System.String)\">\n            <summary>\n            Mark an instantaneous event. PIX can use this event to trigger an action.\n            </summary>\n            <param name=\"color\">The color.</param>\n            <param name=\"name\">The name.</param>\n            <unmanaged>D3DPERF_SetMarker</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D.PixHelper.SetMarker(SharpDX.Color,System.String,System.Object[])\">\n            <summary>\n            Mark an instantaneous event. PIX can use this event to trigger an action.\n            </summary>\n            <param name=\"color\">The color.</param>\n            <param name=\"name\">The name to format.</param>\n            <param name=\"parameters\">The parameters to use to format the name.</param>\n            <unmanaged>D3DPERF_SetMarker</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Direct3D.PixHelper.AllowProfiling(System.Boolean)\">\n            <summary>\n            Set this to false to notify PIX that the target program does not give permission to be profiled.\n            </summary>\n            <param name=\"enableFlag\">if set to <c>true</c> PIX profiling is authorized. Default to true.</param>\n            <unmanaged>D3DPERF_SetOptions</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D.PixHelper.IsCurrentlyProfiled\">\n            <summary>\n            Gets a value indicating whether this instance is currently profiled by PIX.\n            </summary>\n            <value>\n            <c>true</c> if this instance is currently profiled; otherwise, <c>false</c>.\n            </value>\n            <unmanaged>D3DPERF_GetStatus</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.DrawingRectangle\">\n            <summary>\n            Structure using the same layout than <see cref=\"T:System.Drawing.Rectangle\"/> \n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DrawingRectangle.Empty\">\n            <summary>\n            An empty drawing rectangle.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.DrawingRectangle.#ctor(System.Int32,System.Int32,System.Int32,System.Int32)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DrawingRectangle\"/> struct.\n            </summary>\n            <param name=\"x\">The x.</param>\n            <param name=\"y\">The y.</param>\n            <param name=\"width\">The width.</param>\n            <param name=\"height\">The height.</param>\n        </member>\n        <member name=\"M:SharpDX.DrawingRectangle.Contains(System.Int32,System.Int32)\">\n            <summary>\n            Checks, if specified point is inside <see cref=\"T:SharpDX.DrawingRectangle\"/>.\n            </summary>\n            <param name=\"x\">X point coordinate.</param>\n            <param name=\"y\">Y point coordinate.</param>\n            <returns><c>true</c> if point is inside <see cref=\"T:SharpDX.DrawingRectangle\"/>, otherwise <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.DrawingRectangle.Contains(System.Single,System.Single)\">\n            <summary>\n            Checks, if specified point is inside <see cref=\"T:SharpDX.DrawingRectangle\"/>.\n            </summary>\n            <param name=\"x\">X point coordinate.</param>\n            <param name=\"y\">Y point coordinate.</param>\n            <returns><c>true</c> if point is inside <see cref=\"T:SharpDX.DrawingRectangle\"/>, otherwise <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.DrawingRectangle.Contains(SharpDX.Vector2)\">\n            <summary>\n            Checks, if specified <see cref=\"T:SharpDX.Vector2\"/> is inside <see cref=\"T:SharpDX.DrawingRectangle\"/>. \n            </summary> \n            <param name=\"vector2D\">Coordinate <see cref=\"T:SharpDX.Vector2\"/>.</param>\n            <returns><c>true</c> if <see cref=\"T:SharpDX.Vector2\"/> is inside <see cref=\"T:SharpDX.DrawingRectangle\"/>, otherwise <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.DrawingRectangle.Contains(SharpDX.DrawingPoint)\">\n            <summary>\n            Checks, if specified <see cref=\"T:SharpDX.DrawingPoint\"/> is inside <see cref=\"T:SharpDX.DrawingRectangle\"/>. \n            </summary>\n            <param name=\"point\">Coordinate <see cref=\"T:SharpDX.DrawingPoint\"/>.</param> \n            <returns><c>true</c> if <see cref=\"T:SharpDX.DrawingPoint\"/> is inside <see cref=\"T:SharpDX.DrawingRectangle\"/>, otherwise <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.DrawingRectangle.Contains(SharpDX.DrawingPointF)\">\n            <summary>\n            Checks, if specified <see cref=\"T:SharpDX.DrawingPointF\"/> is inside <see cref=\"T:SharpDX.DrawingRectangle\"/>. \n            </summary>\n            <param name=\"point\">Coordinate <see cref=\"T:SharpDX.DrawingPointF\"/>.</param> \n            <returns><c>true</c> if <see cref=\"T:SharpDX.DrawingPointF\"/> is inside <see cref=\"T:SharpDX.DrawingRectangle\"/>, otherwise <c>false</c>.</returns>\n        </member>\n        <member name=\"F:SharpDX.DrawingRectangle.X\">\n            <summary>\n            Left coordinate.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DrawingRectangle.Y\">\n            <summary>\n            Top coordinate.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DrawingRectangle.Width\">\n            <summary>\n            Width of this rectangle.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DrawingRectangle.Height\">\n            <summary>\n            Height of this rectangle.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.DrawingRectangle.Equals(SharpDX.DrawingRectangle)\">\n            <summary>\n            Determines whether the specified <see cref=\"T:System.Object\"/> is equal to this instance.\n            </summary>\n            <param name=\"obj\">The <see cref=\"T:System.Object\"/> to compare with this instance.</param>\n            <returns>\n              <c>true</c> if the specified <see cref=\"T:System.Object\"/> is equal to this instance; otherwise, <c>false</c>.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.DrawingRectangle.Equals(System.Object)\">\n            <inheritdoc/>\n        </member>\n        <member name=\"M:SharpDX.DrawingRectangle.GetHashCode\">\n            <inheritdoc/>\n        </member>\n        <member name=\"M:SharpDX.DrawingRectangle.op_Equality(SharpDX.DrawingRectangle,SharpDX.DrawingRectangle)\">\n            <summary>\n            Implements the operator ==.\n            </summary>\n            <param name=\"left\">The left.</param>\n            <param name=\"right\">The right.</param>\n            <returns>\n            The result of the operator.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.DrawingRectangle.op_Inequality(SharpDX.DrawingRectangle,SharpDX.DrawingRectangle)\">\n            <summary>\n            Implements the operator !=.\n            </summary>\n            <param name=\"left\">The left.</param>\n            <param name=\"right\">The right.</param>\n            <returns>\n            The result of the operator.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.DrawingRectangle.SharpDX#Serialization#IDataSerializable#Serialize(SharpDX.Serialization.BinarySerializer)\">\n            <inheritdoc/>\n        </member>\n        <member name=\"T:SharpDX.IO.NativeFile\">\n            <summary>\n            Windows File Helper.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.IO.NativeFile.ReadAllBytes(System.String)\">\n            <summary>\n            Opens a binary file, reads the contents of the file into a byte array, and then closes the file.\n            </summary>\n            <param name=\"path\">The file to open for reading. </param>\n            <returns>A byte array containing the contents of the file.</returns>\n        </member>\n        <member name=\"M:SharpDX.IO.NativeFile.ReadAllText(System.String)\">\n            <summary>\n            Opens a text file, reads all lines of the file, and then closes the file.\n            </summary>\n            <param name=\"path\">The file to open for reading. </param>\n            <returns>A string containing all lines of the file.</returns>\n        </member>\n        <member name=\"M:SharpDX.IO.NativeFile.ReadAllText(System.String,System.Text.Encoding)\">\n            <summary>\n            Opens a text file, reads all lines of the file, and then closes the file.\n            </summary>\n            <param name=\"path\">The file to open for reading. </param>\n            <returns>A string containing all lines of the file.</returns>\n        </member>\n        <member name=\"M:SharpDX.IO.NativeFile.ReadFile(System.IntPtr,System.IntPtr,System.Int32,System.Int32@,System.IntPtr)\">\n            <summary>\n            Reads to a file.\n            </summary>\n            <param name=\"fileHandle\">The file handle.</param>\n            <param name=\"buffer\">The buffer.</param>\n            <param name=\"numberOfBytesToRead\">The number of bytes to read.</param>\n            <param name=\"numberOfBytesRead\">The number of bytes read.</param>\n            <param name=\"overlapped\">The overlapped.</param>\n            <returns>A Result</returns>\n            <unmanaged>ReadFile</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.IO.NativeFile.WriteFile(System.IntPtr,System.IntPtr,System.Int32,System.Int32@,System.IntPtr)\">\n            <summary>\n            Writes to a file.\n            </summary>\n            <param name=\"fileHandle\">The file handle.</param>\n            <param name=\"buffer\">The buffer.</param>\n            <param name=\"numberOfBytesToRead\">The number of bytes to read.</param>\n            <param name=\"numberOfBytesRead\">The number of bytes read.</param>\n            <param name=\"overlapped\">The overlapped.</param>\n            <returns>A Result</returns>\n            <unmanaged>WriteFile</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.IO.NativeFile.SetFilePointerEx(System.IntPtr,System.Int64,System.Int64@,System.IO.SeekOrigin)\">\n            <summary>\n            Sets the file pointer.\n            </summary>\n            <param name=\"handle\">The handle.</param>\n            <param name=\"distanceToMove\">The distance to move.</param>\n            <param name=\"distanceToMoveHigh\">The distance to move high.</param>\n            <param name=\"seekOrigin\">The seek origin.</param>\n            <returns></returns>\n            <unmanaged>SetFilePointerEx</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.IO.NativeFile.SetEndOfFile(System.IntPtr)\">\n            <summary>\n            Sets the end of file.\n            </summary>\n            <param name=\"handle\">The handle.</param>\n            <returns></returns>\n            <unmanaged>SetEndOfFile</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.IO.NativeFile.GetLastWriteTime(System.String)\">\n            <summary>\n            Gets the last write time access for the specified path.\n            </summary>\n            <param name=\"path\">The path.</param>\n            <returns>The last write time access</returns>\n        </member>\n        <member name=\"M:SharpDX.IO.NativeFile.Create(System.String,SharpDX.IO.NativeFileAccess,SharpDX.IO.NativeFileShare,System.IntPtr,SharpDX.IO.NativeFileMode,SharpDX.IO.NativeFileOptions,System.IntPtr)\">\n            <summary>\n            Creates the file.\n            </summary>\n            <param name=\"fileName\">Name of the file.</param>\n            <param name=\"desiredAccess\">The desired access.</param>\n            <param name=\"shareMode\">The share mode.</param>\n            <param name=\"securityAttributes\">The security attributes.</param>\n            <param name=\"mode\">The creation disposition.</param>\n            <param name=\"flagsAndOptions\">The flags and attributes.</param>\n            <param name=\"templateFile\">The template file.</param>\n            <returns>A handle to the created file. IntPtr.Zero if failed.</returns>\n            <unmanaged>CreateFile</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.IO.NativeFile.GetFileSizeEx(System.IntPtr,System.Int64@)\">\n            <summary>\n            Gets the size of the file.\n            </summary>\n            <param name=\"handle\">The handle.</param>\n            <param name=\"fileSize\">Size of the file.</param>\n            <returns></returns>\n            <unmanaged>GetFileSizeEx</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.IO.NativeFileStream\">\n            <summary>\n            Windows File Helper.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.IO.NativeFileStream.#ctor(System.String,SharpDX.IO.NativeFileMode,SharpDX.IO.NativeFileAccess,SharpDX.IO.NativeFileShare)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.IO.NativeFileStream\"/> class.\n            </summary>\n            <param name=\"fileName\">Name of the file.</param>\n            <param name=\"fileMode\">The file mode.</param>\n            <param name=\"access\">The access mode.</param>\n            <param name=\"share\">The share mode.</param>\n        </member>\n        <member name=\"M:SharpDX.IO.NativeFileStream.Flush\">\n            <inheritdoc/>\n        </member>\n        <member name=\"M:SharpDX.IO.NativeFileStream.Seek(System.Int64,System.IO.SeekOrigin)\">\n            <inheritdoc/>\n        </member>\n        <member name=\"M:SharpDX.IO.NativeFileStream.SetLength(System.Int64)\">\n            <inheritdoc/>\n        </member>\n        <member name=\"M:SharpDX.IO.NativeFileStream.Read(System.Byte[],System.Int32,System.Int32)\">\n            <inheritdoc/>\n        </member>\n        <member name=\"M:SharpDX.IO.NativeFileStream.Read(System.IntPtr,System.Int32,System.Int32)\">\n            <summary>\n            Reads a block of bytes from the stream and writes the data in a given buffer.\n            </summary>\n            <param name=\"buffer\">When this method returns, contains the specified buffer with the values between offset and (offset + count - 1) replaced by the bytes read from the current source. </param>\n            <param name=\"offset\">The byte offset in array at which the read bytes will be placed. </param>\n            <param name=\"count\">The maximum number of bytes to read. </param>\n            <exception cref=\"T:System.ArgumentNullException\">array is null. </exception>\n            <returns>The total number of bytes read into the buffer. This might be less than the number of bytes requested if that number of bytes are not currently available, or zero if the end of the stream is reached.</returns>\n        </member>\n        <member name=\"M:SharpDX.IO.NativeFileStream.Write(System.Byte[],System.Int32,System.Int32)\">\n            <inheritdoc/>\n        </member>\n        <member name=\"M:SharpDX.IO.NativeFileStream.Write(System.IntPtr,System.Int32,System.Int32)\">\n            <summary>\n            Writes a block of bytes to this stream using data from a buffer.\n            </summary>\n            <param name=\"buffer\">The buffer containing data to write to the stream.</param>\n            <param name=\"offset\">The zero-based byte offset in buffer at which to begin copying bytes to the current stream. </param>\n            <param name=\"count\">The number of bytes to be written to the current stream. </param>\n        </member>\n        <member name=\"P:SharpDX.IO.NativeFileStream.CanRead\">\n            <inheritdoc/>\n        </member>\n        <member name=\"P:SharpDX.IO.NativeFileStream.CanSeek\">\n            <inheritdoc/>\n        </member>\n        <member name=\"P:SharpDX.IO.NativeFileStream.CanWrite\">\n            <inheritdoc/>\n        </member>\n        <member name=\"P:SharpDX.IO.NativeFileStream.Length\">\n            <inheritdoc/>\n        </member>\n        <member name=\"P:SharpDX.IO.NativeFileStream.Position\">\n            <inheritdoc/>\n        </member>\n        <member name=\"T:SharpDX.IO.NativeFileAccess\">\n            <summary>\n            Native File access flags.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.IO.NativeFileAccess.Read\">\n            <summary>\n            Read access.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.IO.NativeFileAccess.Write\">\n            <summary>\n            Write access.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.IO.NativeFileAccess.ReadWrite\">\n            <summary>\n            Read/Write Access,\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.IO.NativeFileAccess.Execute\">\n            <summary>\n            Execute access.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.IO.NativeFileAccess.All\">\n            <summary>\n            All access\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.IO.NativeFileOptions\">\n            <summary>\n            Native file attributes.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.IO.NativeFileOptions.None\">\n            <summary>\n            None attribute.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.IO.NativeFileOptions.Readonly\">\n            <summary>\n            Read only attribute.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.IO.NativeFileOptions.Hidden\">\n            <summary>\n            Hidden attribute.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.IO.NativeFileOptions.System\">\n            <summary>\n            System attribute.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.IO.NativeFileOptions.Directory\">\n            <summary>\n            Directory attribute.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.IO.NativeFileOptions.Archive\">\n            <summary>\n            Archive attribute.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.IO.NativeFileOptions.Device\">\n            <summary>\n            Device attribute.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.IO.NativeFileOptions.Normal\">\n            <summary>\n            Normal attribute.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.IO.NativeFileOptions.Temporary\">\n            <summary>\n            Temporary attribute.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.IO.NativeFileOptions.SparseFile\">\n            <summary>\n            Sparse file attribute.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.IO.NativeFileOptions.ReparsePoint\">\n            <summary>\n            ReparsePoint attribute.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.IO.NativeFileOptions.Compressed\">\n            <summary>\n            Compressed attribute.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.IO.NativeFileOptions.Offline\">\n            <summary>\n            Offline attribute.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.IO.NativeFileOptions.NotContentIndexed\">\n            <summary>\n            Not content indexed attribute.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.IO.NativeFileOptions.Encrypted\">\n            <summary>\n            Encrypted attribute.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.IO.NativeFileOptions.Write_Through\">\n            <summary>\n            Write through attribute.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.IO.NativeFileOptions.Overlapped\">\n            <summary>\n            Overlapped attribute.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.IO.NativeFileOptions.NoBuffering\">\n            <summary>\n            No buffering attribute.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.IO.NativeFileOptions.RandomAccess\">\n            <summary>\n            Random access attribute.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.IO.NativeFileOptions.SequentialScan\">\n            <summary>\n            Sequential scan attribute.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.IO.NativeFileOptions.DeleteOnClose\">\n            <summary>\n            Delete on close attribute.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.IO.NativeFileOptions.BackupSemantics\">\n            <summary>\n            Backup semantics attribute.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.IO.NativeFileOptions.PosixSemantics\">\n            <summary>\n            Post semantics attribute.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.IO.NativeFileOptions.OpenReparsePoint\">\n            <summary>\n            Open reparse point attribute.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.IO.NativeFileOptions.OpenNoRecall\">\n            <summary>\n            Open no recall attribute.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.IO.NativeFileOptions.FirstPipeInstance\">\n            <summary>\n            First pipe instance attribute.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.IO.NativeFileMode\">\n            <summary>\n            Native file creation disposition.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.IO.NativeFileMode.CreateNew\">\n            <summary>\n            Creates a new file. The function fails if a specified file exists.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.IO.NativeFileMode.Create\">\n            <summary>\n            Creates a new file, always.\n            If a file exists, the function overwrites the file, clears the existing attributes, combines the specified file attributes,\n            and flags with FILE_ATTRIBUTE_ARCHIVE, but does not set the security descriptor that the SECURITY_ATTRIBUTES structure specifies.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.IO.NativeFileMode.Open\">\n            <summary>\n            Opens a file. The function fails if the file does not exist.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.IO.NativeFileMode.OpenOrCreate\">\n            <summary>\n            Opens a file, always.\n            If a file does not exist, the function creates a file as if dwCreationDisposition is CREATE_NEW.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.IO.NativeFileMode.Truncate\">\n            <summary>\n            Opens a file and truncates it so that its size is 0 (zero) bytes. The function fails if the file does not exist.\n            The calling process must open the file with the GENERIC_WRITE access right.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.IO.NativeFileShare\">\n            <summary>\n            Native file share.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.IO.NativeFileShare.None\">\n            <summary>\n            None flag.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.IO.NativeFileShare.Read\">\n            <summary>\n            Enables subsequent open operations on an object to request read access.\n            Otherwise, other processes cannot open the object if they request read access.\n            If this flag is not specified, but the object has been opened for read access, the function fails.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.IO.NativeFileShare.Write\">\n            <summary>\n            Enables subsequent open operations on an object to request write access.\n            Otherwise, other processes cannot open the object if they request write access.\n            If this flag is not specified, but the object has been opened for write access, the function fails.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.IO.NativeFileShare.ReadWrite\">\n            <summary>\n            Read and Write flags.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.IO.NativeFileShare.Delete\">\n            <summary>\n            Enables subsequent open operations on an object to request delete access.\n            Otherwise, other processes cannot open the object if they request delete access.\n            If this flag is not specified, but the object has been opened for delete access, the function fails.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Matrix3x2\">\n            <summary>\n            Direct2D Matrix3x2 3x2. Use <see cref=\"T:SharpDX.Matrix3x2\"/> and implicit cast to <see cref=\"T:SharpDX.Matrix3x2\"/>.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Matrix3x2.Identity\">\n            <summary>\n            Gets the identity matrix.\n            </summary>\n            <value>The identity matrix.</value>\n        </member>\n        <member name=\"F:SharpDX.Matrix3x2.M11\">\n            <summary>\n            Element (1,1)\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Matrix3x2.M12\">\n            <summary>\n            Element (1,2)\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Matrix3x2.M21\">\n            <summary>\n            Element (2,1)\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Matrix3x2.M22\">\n            <summary>\n            Element (2,2)\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Matrix3x2.M31\">\n            <summary>\n            Element (3,1)\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Matrix3x2.M32\">\n            <summary>\n            Element (3,2)\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Matrix3x2.#ctor(System.Single)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Matrix3x2\"/> struct.\n            </summary>\n            <param name=\"value\">The value that will be assigned to all components.</param>\n        </member>\n        <member name=\"M:SharpDX.Matrix3x2.#ctor(System.Single,System.Single,System.Single,System.Single,System.Single,System.Single)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Matrix3x2\"/> struct.\n            </summary>\n            <param name=\"M11\">The value to assign at row 1 column 1 of the matrix.</param>\n            <param name=\"M12\">The value to assign at row 1 column 2 of the matrix.</param>\n            <param name=\"M21\">The value to assign at row 2 column 1 of the matrix.</param>\n            <param name=\"M22\">The value to assign at row 2 column 2 of the matrix.</param>\n            <param name=\"M31\">The value to assign at row 3 column 1 of the matrix.</param>\n            <param name=\"M32\">The value to assign at row 3 column 2 of the matrix.</param>\n        </member>\n        <member name=\"M:SharpDX.Matrix3x2.#ctor(System.Single[])\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Matrix3x2\"/> struct.\n            </summary>\n            <param name=\"values\">The values to assign to the components of the matrix. This must be an array with sixteen elements.</param>\n            <exception cref=\"T:System.ArgumentNullException\">Thrown when <paramref name=\"values\"/> is <c>null</c>.</exception>\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">Thrown when <paramref name=\"values\"/> contains more or less than sixteen elements.</exception>\n        </member>\n        <member name=\"M:SharpDX.Matrix3x2.ToArray\">\n            <summary>\n            Creates an array containing the elements of the matrix.\n            </summary>\n            <returns>A sixteen-element array containing the components of the matrix.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix3x2.Add(SharpDX.Matrix3x2@,SharpDX.Matrix3x2@,SharpDX.Matrix3x2@)\">\n            <summary>\n            Determines the sum of two matrices.\n            </summary>\n            <param name=\"left\">The first matrix to add.</param>\n            <param name=\"right\">The second matrix to add.</param>\n            <param name=\"result\">When the method completes, contains the sum of the two matrices.</param>\n        </member>\n        <member name=\"M:SharpDX.Matrix3x2.Add(SharpDX.Matrix3x2,SharpDX.Matrix3x2)\">\n            <summary>\n            Determines the sum of two matrices.\n            </summary>\n            <param name=\"left\">The first matrix to add.</param>\n            <param name=\"right\">The second matrix to add.</param>\n            <returns>The sum of the two matrices.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix3x2.Subtract(SharpDX.Matrix3x2@,SharpDX.Matrix3x2@,SharpDX.Matrix3x2@)\">\n            <summary>\n            Determines the difference between two matrices.\n            </summary>\n            <param name=\"left\">The first matrix to subtract.</param>\n            <param name=\"right\">The second matrix to subtract.</param>\n            <param name=\"result\">When the method completes, contains the difference between the two matrices.</param>\n        </member>\n        <member name=\"M:SharpDX.Matrix3x2.Subtract(SharpDX.Matrix3x2,SharpDX.Matrix3x2)\">\n            <summary>\n            Determines the difference between two matrices.\n            </summary>\n            <param name=\"left\">The first matrix to subtract.</param>\n            <param name=\"right\">The second matrix to subtract.</param>\n            <returns>The difference between the two matrices.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix3x2.Multiply(SharpDX.Matrix3x2@,System.Single,SharpDX.Matrix3x2@)\">\n            <summary>\n            Scales a matrix by the given value.\n            </summary>\n            <param name=\"left\">The matrix to scale.</param>\n            <param name=\"right\">The amount by which to scale.</param>\n            <param name=\"result\">When the method completes, contains the scaled matrix.</param>\n        </member>\n        <member name=\"M:SharpDX.Matrix3x2.Multiply(SharpDX.Matrix3x2,System.Single)\">\n            <summary>\n            Scales a matrix by the given value.\n            </summary>\n            <param name=\"left\">The matrix to scale.</param>\n            <param name=\"right\">The amount by which to scale.</param>\n            <returns>The scaled matrix.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix3x2.Multiply(SharpDX.Matrix3x2@,SharpDX.Matrix3x2@,SharpDX.Matrix3x2@)\">\n            <summary>\n            Determines the product of two matrices.\n            </summary>\n            <param name=\"left\">The first matrix to multiply.</param>\n            <param name=\"right\">The second matrix to multiply.</param>\n            <param name=\"result\">The product of the two matrices.</param>\n        </member>\n        <member name=\"M:SharpDX.Matrix3x2.Multiply(SharpDX.Matrix3x2,SharpDX.Matrix3x2)\">\n            <summary>\n            Determines the product of two matrices.\n            </summary>\n            <param name=\"left\">The first matrix to multiply.</param>\n            <param name=\"right\">The second matrix to multiply.</param>\n            <returns>The product of the two matrices.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix3x2.Divide(SharpDX.Matrix3x2@,System.Single,SharpDX.Matrix3x2@)\">\n            <summary>\n            Scales a matrix by the given value.\n            </summary>\n            <param name=\"left\">The matrix to scale.</param>\n            <param name=\"right\">The amount by which to scale.</param>\n            <param name=\"result\">When the method completes, contains the scaled matrix.</param>\n        </member>\n        <member name=\"M:SharpDX.Matrix3x2.Divide(SharpDX.Matrix3x2@,SharpDX.Matrix3x2@,SharpDX.Matrix3x2@)\">\n            <summary>\n            Determines the quotient of two matrices.\n            </summary>\n            <param name=\"left\">The first matrix to divide.</param>\n            <param name=\"right\">The second matrix to divide.</param>\n            <param name=\"result\">When the method completes, contains the quotient of the two matrices.</param>\n        </member>\n        <member name=\"M:SharpDX.Matrix3x2.Negate(SharpDX.Matrix3x2@,SharpDX.Matrix3x2@)\">\n            <summary>\n            Negates a matrix.\n            </summary>\n            <param name=\"value\">The matrix to be negated.</param>\n            <param name=\"result\">When the method completes, contains the negated matrix.</param>\n        </member>\n        <member name=\"M:SharpDX.Matrix3x2.Negate(SharpDX.Matrix3x2)\">\n            <summary>\n            Negates a matrix.\n            </summary>\n            <param name=\"value\">The matrix to be negated.</param>\n            <returns>The negated matrix.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix3x2.Scaling(SharpDX.Vector2@,SharpDX.Matrix3x2@)\">\n            <summary>\n            Creates a matrix that scales along the x-axis, y-axis, and y-axis.\n            </summary>\n            <param name=\"scale\">Scaling factor for all three axes.</param>\n            <param name=\"result\">When the method completes, contains the created scaling matrix.</param>\n        </member>\n        <member name=\"M:SharpDX.Matrix3x2.Scaling(SharpDX.Vector2)\">\n            <summary>\n            Creates a matrix that scales along the x-axis, y-axis, and y-axis.\n            </summary>\n            <param name=\"scale\">Scaling factor for all three axes.</param>\n            <returns>The created scaling matrix.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix3x2.Scaling(System.Single,System.Single,SharpDX.Matrix3x2@)\">\n            <summary>\n            Creates a matrix that scales along the x-axis, y-axis, and y-axis.\n            </summary>\n            <param name=\"x\">Scaling factor that is applied along the x-axis.</param>\n            <param name=\"y\">Scaling factor that is applied along the y-axis.</param>\n            <param name=\"result\">When the method completes, contains the created scaling matrix.</param>\n        </member>\n        <member name=\"M:SharpDX.Matrix3x2.Scaling(System.Single,System.Single)\">\n            <summary>\n            Creates a matrix that scales along the x-axis, y-axis, and y-axis.\n            </summary>\n            <param name=\"x\">Scaling factor that is applied along the x-axis.</param>\n            <param name=\"y\">Scaling factor that is applied along the y-axis.</param>\n            <returns>The created scaling matrix.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix3x2.Scaling(System.Single,SharpDX.Matrix3x2@)\">\n            <summary>\n            Creates a matrix that uniformally scales along all three axis.\n            </summary>\n            <param name=\"scale\">The uniform scale that is applied along all axis.</param>\n            <param name=\"result\">When the method completes, contains the created scaling matrix.</param>\n        </member>\n        <member name=\"M:SharpDX.Matrix3x2.Scaling(System.Single)\">\n            <summary>\n            Creates a matrix that uniformally scales along all three axis.\n            </summary>\n            <param name=\"scale\">The uniform scale that is applied along all axis.</param>\n            <returns>The created scaling matrix.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix3x2.Scaling(System.Single,System.Single,SharpDX.Vector2)\">\n            <summary>\n            Creates a matrix that is scaling from a specified center.\n            </summary>\n            <param name=\"x\">Scaling factor that is applied along the x-axis.</param>\n            <param name=\"y\">Scaling factor that is applied along the y-axis.</param>\n            <param name=\"center\">The center of the scaling.</param>\n            <returns>The created scaling matrix.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix3x2.Scaling(System.Single,System.Single,SharpDX.Vector2@,SharpDX.Matrix3x2@)\">\n            <summary>\n            Creates a matrix that is scaling from a specified center.\n            </summary>\n            <param name=\"x\">Scaling factor that is applied along the x-axis.</param>\n            <param name=\"y\">Scaling factor that is applied along the y-axis.</param>\n            <param name=\"center\">The center of the scaling.</param>\n            <param name=\"result\">The created scaling matrix.</param>\n        </member>\n        <member name=\"M:SharpDX.Matrix3x2.Determinant\">\n            <summary>\n            Calculates the determinant of this matrix.\n            </summary>\n            <returns>Result of the determinant.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix3x2.Rotation(System.Single,SharpDX.Matrix3x2@)\">\n            <summary>\n            Creates a matrix that rotates.\n            </summary>\n            <param name=\"angle\">Angle of rotation in radians. Angles are measured clockwise when looking along the rotation axis.</param>\n            <param name=\"result\">When the method completes, contains the created rotation matrix.</param>\n        </member>\n        <member name=\"M:SharpDX.Matrix3x2.Rotation(System.Single)\">\n            <summary>\n            Creates a matrix that rotates.\n            </summary>\n            <param name=\"angle\">Angle of rotation in radians. Angles are measured clockwise when looking along the rotation axis.</param>\n            <returns>The created rotation matrix.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix3x2.Translation(SharpDX.Vector2@,SharpDX.Matrix3x2@)\">\n            <summary>\n            Creates a translation matrix using the specified offsets.\n            </summary>\n            <param name=\"value\">The offset for all three coordinate planes.</param>\n            <param name=\"result\">When the method completes, contains the created translation matrix.</param>\n        </member>\n        <member name=\"M:SharpDX.Matrix3x2.Translation(SharpDX.Vector2)\">\n            <summary>\n            Creates a translation matrix using the specified offsets.\n            </summary>\n            <param name=\"value\">The offset for all three coordinate planes.</param>\n            <returns>The created translation matrix.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix3x2.Translation(System.Single,System.Single,SharpDX.Matrix3x2@)\">\n            <summary>\n            Creates a translation matrix using the specified offsets.\n            </summary>\n            <param name=\"x\">X-coordinate offset.</param>\n            <param name=\"y\">Y-coordinate offset.</param>\n            <param name=\"z\">Z-coordinate offset.</param>\n            <param name=\"result\">When the method completes, contains the created translation matrix.</param>\n        </member>\n        <member name=\"M:SharpDX.Matrix3x2.Translation(System.Single,System.Single)\">\n            <summary>\n            Creates a translation matrix using the specified offsets.\n            </summary>\n            <param name=\"x\">X-coordinate offset.</param>\n            <param name=\"y\">Y-coordinate offset.</param>\n            <param name=\"z\">Z-coordinate offset.</param>\n            <returns>The created translation matrix.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix3x2.TransformPoint(SharpDX.Matrix3x2,SharpDX.Vector2)\">\n            <summary>\n            Transforms a vector by this matrix.\n            </summary>\n            <param name=\"matrix\">The matrix to use as a tranformation matrix.</param>\n            <param name=\"point\">The original vector to apply the transformation.</param>\n            <returns>The result of the transformation for the input vector.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix3x2.TransformPoint(SharpDX.Matrix3x2@,SharpDX.Vector2@,SharpDX.Vector2@)\">\n            <summary>\n            Transforms a vector by this matrix.\n            </summary>\n            <param name=\"matrix\">The matrix to use as a tranformation matrix.</param>\n            <param name=\"point\">The original vector to apply the transformation.</param>\n            <param name=\"result\">The result of the transformation for the input vector.</param>\n            <returns></returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix3x2.Invert\">\n            <summary>\n            Calculates the inverse of this matrix instance.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Matrix3x2.Invert(SharpDX.Matrix3x2)\">\n            <summary>\n            Calculates the inverse of the specified matrix.\n            </summary>\n            <param name=\"value\">The matrix whose inverse is to be calculated.</param>\n            <returns>the inverse of the specified matrix.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix3x2.Invert(SharpDX.Matrix3x2@,SharpDX.Matrix3x2@)\">\n            <summary>\n            Calculates the inverse of the specified matrix.\n            </summary>\n            <param name=\"value\">The matrix whose inverse is to be calculated.</param>\n            <param name=\"result\">When the method completes, contains the inverse of the specified matrix.</param>\n        </member>\n        <member name=\"M:SharpDX.Matrix3x2.op_Addition(SharpDX.Matrix3x2,SharpDX.Matrix3x2)\">\n            <summary>\n            Adds two matricies.\n            </summary>\n            <param name=\"left\">The first matrix to add.</param>\n            <param name=\"right\">The second matrix to add.</param>\n            <returns>The sum of the two matricies.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix3x2.op_UnaryPlus(SharpDX.Matrix3x2)\">\n            <summary>\n            Assert a matrix (return it unchanged).\n            </summary>\n            <param name=\"value\">The matrix to assert (unchange).</param>\n            <returns>The asserted (unchanged) matrix.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix3x2.op_Subtraction(SharpDX.Matrix3x2,SharpDX.Matrix3x2)\">\n            <summary>\n            Subtracts two matricies.\n            </summary>\n            <param name=\"left\">The first matrix to subtract.</param>\n            <param name=\"right\">The second matrix to subtract.</param>\n            <returns>The difference between the two matricies.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix3x2.op_UnaryNegation(SharpDX.Matrix3x2)\">\n            <summary>\n            Negates a matrix.\n            </summary>\n            <param name=\"value\">The matrix to negate.</param>\n            <returns>The negated matrix.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix3x2.op_Multiply(System.Single,SharpDX.Matrix3x2)\">\n            <summary>\n            Scales a matrix by a given value.\n            </summary>\n            <param name=\"right\">The matrix to scale.</param>\n            <param name=\"left\">The amount by which to scale.</param>\n            <returns>The scaled matrix.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix3x2.op_Multiply(SharpDX.Matrix3x2,System.Single)\">\n            <summary>\n            Scales a matrix by a given value.\n            </summary>\n            <param name=\"left\">The matrix to scale.</param>\n            <param name=\"right\">The amount by which to scale.</param>\n            <returns>The scaled matrix.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix3x2.op_Multiply(SharpDX.Matrix3x2,SharpDX.Matrix3x2)\">\n            <summary>\n            Multiplies two matricies.\n            </summary>\n            <param name=\"left\">The first matrix to multiply.</param>\n            <param name=\"right\">The second matrix to multiply.</param>\n            <returns>The product of the two matricies.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix3x2.op_Division(SharpDX.Matrix3x2,System.Single)\">\n            <summary>\n            Scales a matrix by a given value.\n            </summary>\n            <param name=\"left\">The matrix to scale.</param>\n            <param name=\"right\">The amount by which to scale.</param>\n            <returns>The scaled matrix.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix3x2.op_Division(SharpDX.Matrix3x2,SharpDX.Matrix3x2)\">\n            <summary>\n            Divides two matricies.\n            </summary>\n            <param name=\"left\">The first matrix to divide.</param>\n            <param name=\"right\">The second matrix to divide.</param>\n            <returns>The quotient of the two matricies.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix3x2.op_Equality(SharpDX.Matrix3x2,SharpDX.Matrix3x2)\">\n            <summary>\n            Tests for equality between two objects.\n            </summary>\n            <param name=\"left\">The first value to compare.</param>\n            <param name=\"right\">The second value to compare.</param>\n            <returns><c>true</c> if <paramref name=\"left\"/> has the same value as <paramref name=\"right\"/>; otherwise, <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix3x2.op_Inequality(SharpDX.Matrix3x2,SharpDX.Matrix3x2)\">\n            <summary>\n            Tests for inequality between two objects.\n            </summary>\n            <param name=\"left\">The first value to compare.</param>\n            <param name=\"right\">The second value to compare.</param>\n            <returns><c>true</c> if <paramref name=\"left\"/> has a different value than <paramref name=\"right\"/>; otherwise, <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix3x2.ToString\">\n            <summary>\n            Returns a <see cref=\"T:System.String\"/> that represents this instance.\n            </summary>\n            <returns>\n            A <see cref=\"T:System.String\"/> that represents this instance.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix3x2.ToString(System.String)\">\n            <summary>\n            Returns a <see cref=\"T:System.String\"/> that represents this instance.\n            </summary>\n            <param name=\"format\">The format.</param>\n            <returns>\n            A <see cref=\"T:System.String\"/> that represents this instance.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix3x2.ToString(System.IFormatProvider)\">\n            <summary>\n            Returns a <see cref=\"T:System.String\"/> that represents this instance.\n            </summary>\n            <param name=\"formatProvider\">The format provider.</param>\n            <returns>\n            A <see cref=\"T:System.String\"/> that represents this instance.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix3x2.ToString(System.String,System.IFormatProvider)\">\n            <summary>\n            Returns a <see cref=\"T:System.String\"/> that represents this instance.\n            </summary>\n            <param name=\"format\">The format.</param>\n            <param name=\"formatProvider\">The format provider.</param>\n            <returns>\n            A <see cref=\"T:System.String\"/> that represents this instance.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix3x2.GetHashCode\">\n            <summary>\n            Returns a hash code for this instance.\n            </summary>\n            <returns>\n            A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. \n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix3x2.SharpDX#Serialization#IDataSerializable#Serialize(SharpDX.Serialization.BinarySerializer)\">\n            <inheritdoc/>\n        </member>\n        <member name=\"M:SharpDX.Matrix3x2.Equals(SharpDX.Matrix3x2)\">\n            <summary>\n            Determines whether the specified <see cref=\"T:SharpDX.Matrix3x2\"/> is equal to this instance.\n            </summary>\n            <param name=\"other\">The <see cref=\"T:SharpDX.Matrix3x2\"/> to compare with this instance.</param>\n            <returns>\n            <c>true</c> if the specified <see cref=\"T:SharpDX.Matrix3x2\"/> is equal to this instance; otherwise, <c>false</c>.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix3x2.Equals(System.Object)\">\n            <summary>\n            Determines whether the specified <see cref=\"T:System.Object\"/> is equal to this instance.\n            </summary>\n            <param name=\"value\">The <see cref=\"T:System.Object\"/> to compare with this instance.</param>\n            <returns>\n            <c>true</c> if the specified <see cref=\"T:System.Object\"/> is equal to this instance; otherwise, <c>false</c>.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix3x2.op_Implicit(SharpDX.Matrix)~SharpDX.Matrix3x2\">\n            <summary>\n            Performs an implicit conversion from <see cref=\"T:SharpDX.Matrix3x2\"/> to <see cref=\"T:SharpDX.Matrix3x2\"/>.\n            </summary>\n            <param name=\"matrix\">The matrix.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"P:SharpDX.Matrix3x2.Row1\">\n            <summary>\n            Gets or sets the first row in the matrix; that is M11, M12.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Matrix3x2.Row2\">\n            <summary>\n            Gets or sets the second row in the matrix; that is M21, M22.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Matrix3x2.Row3\">\n            <summary>\n            Gets or sets the third row in the matrix; that is M31, M32.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Matrix3x2.Column1\">\n            <summary>\n            Gets or sets the first column in the matrix; that is M11, M21, M31.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Matrix3x2.Column2\">\n            <summary>\n            Gets or sets the second column in the matrix; that is M12, M22, M32, and M42.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Matrix3x2.TranslationVector\">\n            <summary>\n            Gets or sets the translation of the matrix; that is M41, M42.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Matrix3x2.ScaleVector\">\n            <summary>\n            Gets or sets the scale of the matrix; that is M11, M22.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Matrix3x2.IsIdentity\">\n            <summary>\n            Gets a value indicating whether this instance is an identity matrix.\n            </summary>\n            <value>\n            <c>true</c> if this instance is an identity matrix; otherwise, <c>false</c>.\n            </value>\n        </member>\n        <member name=\"P:SharpDX.Matrix3x2.Item(System.Int32)\">\n            <summary>\n            Gets or sets the component at the specified index.\n            </summary>\n            <value>The value of the matrix component, depending on the index.</value>\n            <param name=\"index\">The zero-based index of the component to access.</param>\n            <returns>The value of the component at the specified index.</returns>\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">Thrown when the <paramref name=\"index\"/> is out of the range [0, 5].</exception>\n        </member>\n        <member name=\"P:SharpDX.Matrix3x2.Item(System.Int32,System.Int32)\">\n            <summary>\n            Gets or sets the component at the specified index.\n            </summary>\n            <value>The value of the matrix component, depending on the index.</value>\n            <param name=\"row\">The row of the matrix to access.</param>\n            <param name=\"column\">The column of the matrix to access.</param>\n            <returns>The value of the component at the specified index.</returns>\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">Thrown when the <paramref name=\"row\"/> or <paramref name=\"column\"/>is out of the range [0, 3].</exception>\n        </member>\n        <member name=\"T:SharpDX.Properties.Resources\">\n            <summary>\n              A strongly-typed resource class, for looking up localized strings, etc.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Properties.Resources.ResourceManager\">\n            <summary>\n              Returns the cached ResourceManager instance used by this class.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Properties.Resources.Culture\">\n            <summary>\n              Overrides the current thread's CurrentUICulture property for all\n              resource lookups using this strongly typed resource class.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.ShadowContainer\">\n            <summary>\n            The ShadowContainer is the main container used internally to keep references to all native COM/C++ callbacks.\n            It is stored in the property <see cref=\"P:SharpDX.ICallbackable.Shadow\"/>.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Collision\">\n            <summary>\n            Contains static methods to help in determining intersections, containment, etc.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Collision.ClosestPointPointTriangle(SharpDX.Vector3@,SharpDX.Vector3@,SharpDX.Vector3@,SharpDX.Vector3@,SharpDX.Vector3@)\">\n            <summary>\n            Determines the closest point between a point and a triangle.\n            </summary>\n            <param name=\"point\">The point to test.</param>\n            <param name=\"vertex1\">The first vertex to test.</param>\n            <param name=\"vertex2\">The second vertex to test.</param>\n            <param name=\"vertex3\">The third vertex to test.</param>\n            <param name=\"result\">When the method completes, contains the closest point between the two objects.</param>\n        </member>\n        <member name=\"M:SharpDX.Collision.ClosestPointPlanePoint(SharpDX.Plane@,SharpDX.Vector3@,SharpDX.Vector3@)\">\n            <summary>\n            Determines the closest point between a <see cref=\"T:SharpDX.Plane\"/> and a point.\n            </summary>\n            <param name=\"plane\">The plane to test.</param>\n            <param name=\"point\">The point to test.</param>\n            <param name=\"result\">When the method completes, contains the closest point between the two objects.</param>\n        </member>\n        <member name=\"M:SharpDX.Collision.ClosestPointBoxPoint(SharpDX.BoundingBox@,SharpDX.Vector3@,SharpDX.Vector3@)\">\n            <summary>\n            Determines the closest point between a <see cref=\"T:SharpDX.BoundingBox\"/> and a point.\n            </summary>\n            <param name=\"box\">The box to test.</param>\n            <param name=\"point\">The point to test.</param>\n            <param name=\"result\">When the method completes, contains the closest point between the two objects.</param>\n        </member>\n        <member name=\"M:SharpDX.Collision.ClosestPointSpherePoint(SharpDX.BoundingSphere@,SharpDX.Vector3@,SharpDX.Vector3@)\">\n            <summary>\n            Determines the closest point between a <see cref=\"T:SharpDX.BoundingSphere\"/> and a point.\n            </summary>\n            <param name=\"sphere\"></param>\n            <param name=\"point\">The point to test.</param>\n            <param name=\"result\">When the method completes, contains the closest point between the two objects;\n            or, if the point is directly in the center of the sphere, contains <see cref=\"F:SharpDX.Vector3.Zero\"/>.</param>\n        </member>\n        <member name=\"M:SharpDX.Collision.ClosestPointSphereSphere(SharpDX.BoundingSphere@,SharpDX.BoundingSphere@,SharpDX.Vector3@)\">\n            <summary>\n            Determines the closest point between a <see cref=\"T:SharpDX.BoundingSphere\"/> and a <see cref=\"T:SharpDX.BoundingSphere\"/>.\n            </summary>\n            <param name=\"sphere1\">The first sphere to test.</param>\n            <param name=\"sphere2\">The second sphere to test.</param>\n            <param name=\"result\">When the method completes, contains the closest point between the two objects;\n            or, if the point is directly in the center of the sphere, contains <see cref=\"F:SharpDX.Vector3.Zero\"/>.</param>\n            <remarks>\n            If the two spheres are overlapping, but not directly ontop of each other, the closest point\n            is the 'closest' point of intersection. This can also be considered is the deepest point of\n            intersection.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Collision.DistancePlanePoint(SharpDX.Plane@,SharpDX.Vector3@)\">\n            <summary>\n            Determines the distance between a <see cref=\"T:SharpDX.Plane\"/> and a point.\n            </summary>\n            <param name=\"plane\">The plane to test.</param>\n            <param name=\"point\">The point to test.</param>\n            <returns>The distance between the two objects.</returns>\n        </member>\n        <member name=\"M:SharpDX.Collision.DistanceBoxPoint(SharpDX.BoundingBox@,SharpDX.Vector3@)\">\n            <summary>\n            Determines the distance between a <see cref=\"T:SharpDX.BoundingBox\"/> and a point.\n            </summary>\n            <param name=\"box\">The box to test.</param>\n            <param name=\"point\">The point to test.</param>\n            <returns>The distance between the two objects.</returns>\n        </member>\n        <member name=\"M:SharpDX.Collision.DistanceBoxBox(SharpDX.BoundingBox@,SharpDX.BoundingBox@)\">\n            <summary>\n            Determines the distance between a <see cref=\"T:SharpDX.BoundingBox\"/> and a <see cref=\"T:SharpDX.BoundingBox\"/>.\n            </summary>\n            <param name=\"box1\">The first box to test.</param>\n            <param name=\"box2\">The second box to test.</param>\n            <returns>The distance between the two objects.</returns>\n        </member>\n        <member name=\"M:SharpDX.Collision.DistanceSpherePoint(SharpDX.BoundingSphere@,SharpDX.Vector3@)\">\n            <summary>\n            Determines the distance between a <see cref=\"T:SharpDX.BoundingSphere\"/> and a point.\n            </summary>\n            <param name=\"sphere\">The sphere to test.</param>\n            <param name=\"point\">The point to test.</param>\n            <returns>The distance between the two objects.</returns>\n        </member>\n        <member name=\"M:SharpDX.Collision.DistanceSphereSphere(SharpDX.BoundingSphere@,SharpDX.BoundingSphere@)\">\n            <summary>\n            Determines the distance between a <see cref=\"T:SharpDX.BoundingSphere\"/> and a <see cref=\"T:SharpDX.BoundingSphere\"/>.\n            </summary>\n            <param name=\"sphere1\">The first sphere to test.</param>\n            <param name=\"sphere2\">The second sphere to test.</param>\n            <returns>The distance between the two objects.</returns>\n        </member>\n        <member name=\"M:SharpDX.Collision.RayIntersectsPoint(SharpDX.Ray@,SharpDX.Vector3@)\">\n            <summary>\n            Determines whether there is an intersection between a <see cref=\"T:SharpDX.Ray\"/> and a point.\n            </summary>\n            <param name=\"ray\">The ray to test.</param>\n            <param name=\"point\">The point to test.</param>\n            <returns>Whether the two objects intersect.</returns>\n        </member>\n        <member name=\"M:SharpDX.Collision.RayIntersectsRay(SharpDX.Ray@,SharpDX.Ray@,SharpDX.Vector3@)\">\n            <summary>\n            Determines whether there is an intersection between a <see cref=\"T:SharpDX.Ray\"/> and a <see cref=\"T:SharpDX.Ray\"/>.\n            </summary>\n            <param name=\"ray1\">The first ray to test.</param>\n            <param name=\"ray2\">The second ray to test.</param>\n            <param name=\"point\">When the method completes, contains the point of intersection,\n            or <see cref=\"F:SharpDX.Vector3.Zero\"/> if there was no intersection.</param>\n            <returns>Whether the two objects intersect.</returns>\n            <remarks>\n            This method performs a ray vs ray intersection test based on the following formula\n            from Goldman.\n            <code>s = det([o_2 - o_1, d_2, d_1 x d_2]) / ||d_1 x d_2||^2</code>\n            <code>t = det([o_2 - o_1, d_1, d_1 x d_2]) / ||d_1 x d_2||^2</code>\n            Where o_1 is the position of the first ray, o_2 is the position of the second ray,\n            d_1 is the normalized direction of the first ray, d_2 is the normalized direction\n            of the second ray, det denotes the determinant of a matrix, x denotes the cross\n            product, [ ] denotes a matrix, and || || denotes the length or magnitude of a vector.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Collision.RayIntersectsPlane(SharpDX.Ray@,SharpDX.Plane@,System.Single@)\">\n            <summary>\n            Determines whether there is an intersection between a <see cref=\"T:SharpDX.Ray\"/> and a <see cref=\"T:SharpDX.Plane\"/>.\n            </summary>\n            <param name=\"ray\">The ray to test.</param>\n            <param name=\"plane\">The plane to test.</param>\n            <param name=\"distance\">When the method completes, contains the distance of the intersection,\n            or 0 if there was no intersection.</param>\n            <returns>Whether the two objects intersect.</returns>\n        </member>\n        <member name=\"M:SharpDX.Collision.RayIntersectsPlane(SharpDX.Ray@,SharpDX.Plane@,SharpDX.Vector3@)\">\n            <summary>\n            Determines whether there is an intersection between a <see cref=\"T:SharpDX.Ray\"/> and a <see cref=\"T:SharpDX.Plane\"/>.\n            </summary>\n            <param name=\"ray\">The ray to test.</param>\n            <param name=\"plane\">The plane to test</param>\n            <param name=\"point\">When the method completes, contains the point of intersection,\n            or <see cref=\"F:SharpDX.Vector3.Zero\"/> if there was no intersection.</param>\n            <returns>Whether the two objects intersected.</returns>\n        </member>\n        <member name=\"M:SharpDX.Collision.RayIntersectsTriangle(SharpDX.Ray@,SharpDX.Vector3@,SharpDX.Vector3@,SharpDX.Vector3@,System.Single@)\">\n            <summary>\n            Determines whether there is an intersection between a <see cref=\"T:SharpDX.Ray\"/> and a triangle.\n            </summary>\n            <param name=\"ray\">The ray to test.</param>\n            <param name=\"vertex1\">The first vertex of the triangle to test.</param>\n            <param name=\"vertex2\">The second vertex of the triagnle to test.</param>\n            <param name=\"vertex3\">The third vertex of the triangle to test.</param>\n            <param name=\"distance\">When the method completes, contains the distance of the intersection,\n            or 0 if there was no intersection.</param>\n            <returns>Whether the two objects intersected.</returns>\n            <remarks>\n            This method tests if the ray intersects either the front or back of the triangle.\n            If the ray is parallel to the triangle's plane, no intersection is assumed to have\n            happened. If the intersection of the ray and the triangle is behind the origin of\n            the ray, no intersection is assumed to have happened. In both cases of assumptions,\n            this method returns false.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Collision.RayIntersectsTriangle(SharpDX.Ray@,SharpDX.Vector3@,SharpDX.Vector3@,SharpDX.Vector3@,SharpDX.Vector3@)\">\n            <summary>\n            Determines whether there is an intersection between a <see cref=\"T:SharpDX.Ray\"/> and a triangle.\n            </summary>\n            <param name=\"ray\">The ray to test.</param>\n            <param name=\"vertex1\">The first vertex of the triangle to test.</param>\n            <param name=\"vertex2\">The second vertex of the triagnle to test.</param>\n            <param name=\"vertex3\">The third vertex of the triangle to test.</param>\n            <param name=\"point\">When the method completes, contains the point of intersection,\n            or <see cref=\"F:SharpDX.Vector3.Zero\"/> if there was no intersection.</param>\n            <returns>Whether the two objects intersected.</returns>\n        </member>\n        <member name=\"M:SharpDX.Collision.RayIntersectsBox(SharpDX.Ray@,SharpDX.BoundingBox@,System.Single@)\">\n            <summary>\n            Determines whether there is an intersection between a <see cref=\"T:SharpDX.Ray\"/> and a <see cref=\"T:SharpDX.BoundingBox\"/>.\n            </summary>\n            <param name=\"ray\">The ray to test.</param>\n            <param name=\"box\">The box to test.</param>\n            <param name=\"distance\">When the method completes, contains the distance of the intersection,\n            or 0 if there was no intersection.</param>\n            <returns>Whether the two objects intersected.</returns>\n        </member>\n        <member name=\"M:SharpDX.Collision.RayIntersectsBox(SharpDX.Ray@,SharpDX.BoundingBox@,SharpDX.Vector3@)\">\n            <summary>\n            Determines whether there is an intersection between a <see cref=\"T:SharpDX.Ray\"/> and a <see cref=\"T:SharpDX.Plane\"/>.\n            </summary>\n            <param name=\"ray\">The ray to test.</param>\n            <param name=\"box\">The box to test.</param>\n            <param name=\"point\">When the method completes, contains the point of intersection,\n            or <see cref=\"F:SharpDX.Vector3.Zero\"/> if there was no intersection.</param>\n            <returns>Whether the two objects intersected.</returns>\n        </member>\n        <member name=\"M:SharpDX.Collision.RayIntersectsSphere(SharpDX.Ray@,SharpDX.BoundingSphere@,System.Single@)\">\n            <summary>\n            Determines whether there is an intersection between a <see cref=\"T:SharpDX.Ray\"/> and a <see cref=\"T:SharpDX.BoundingSphere\"/>.\n            </summary>\n            <param name=\"ray\">The ray to test.</param>\n            <param name=\"sphere\">The sphere to test.</param>\n            <param name=\"distance\">When the method completes, contains the distance of the intersection,\n            or 0 if there was no intersection.</param>\n            <returns>Whether the two objects intersected.</returns>\n        </member>\n        <member name=\"M:SharpDX.Collision.RayIntersectsSphere(SharpDX.Ray@,SharpDX.BoundingSphere@,SharpDX.Vector3@)\">\n            <summary>\n            Determines whether there is an intersection between a <see cref=\"T:SharpDX.Ray\"/> and a <see cref=\"T:SharpDX.BoundingSphere\"/>. \n            </summary>\n            <param name=\"ray\">The ray to test.</param>\n            <param name=\"sphere\">The sphere to test.</param>\n            <param name=\"point\">When the method completes, contains the point of intersection,\n            or <see cref=\"F:SharpDX.Vector3.Zero\"/> if there was no intersection.</param>\n            <returns>Whether the two objects intersected.</returns>\n        </member>\n        <member name=\"M:SharpDX.Collision.PlaneIntersectsPoint(SharpDX.Plane@,SharpDX.Vector3@)\">\n            <summary>\n            Determines whether there is an intersection between a <see cref=\"T:SharpDX.Plane\"/> and a point.\n            </summary>\n            <param name=\"plane\">The plane to test.</param>\n            <param name=\"point\">The point to test.</param>\n            <returns>Whether the two objects intersected.</returns>\n        </member>\n        <member name=\"M:SharpDX.Collision.PlaneIntersectsPlane(SharpDX.Plane@,SharpDX.Plane@)\">\n            <summary>\n            Determines whether there is an intersection between a <see cref=\"T:SharpDX.Plane\"/> and a <see cref=\"T:SharpDX.Plane\"/>.\n            </summary>\n            <param name=\"plane1\">The first plane to test.</param>\n            <param name=\"plane2\">The second plane to test.</param>\n            <returns>Whether the two objects intersected.</returns>\n        </member>\n        <member name=\"M:SharpDX.Collision.PlaneIntersectsPlane(SharpDX.Plane@,SharpDX.Plane@,SharpDX.Ray@)\">\n            <summary>\n            Determines whether there is an intersection between a <see cref=\"T:SharpDX.Plane\"/> and a <see cref=\"T:SharpDX.Plane\"/>.\n            </summary>\n            <param name=\"plane1\">The first plane to test.</param>\n            <param name=\"plane2\">The second plane to test.</param>\n            <param name=\"line\">When the method completes, contains the line of intersection\n            as a <see cref=\"T:SharpDX.Ray\"/>, or a zero ray if there was no intersection.</param>\n            <returns>Whether the two objects intersected.</returns>\n            <remarks>\n            Although a ray is set to have an origin, the ray returned by this method is really\n            a line in three dimensions which has no real origin. The ray is considered valid when\n            both the positive direction is used and when the negative direction is used.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Collision.PlaneIntersectsTriangle(SharpDX.Plane@,SharpDX.Vector3@,SharpDX.Vector3@,SharpDX.Vector3@)\">\n            <summary>\n            Determines whether there is an intersection between a <see cref=\"T:SharpDX.Plane\"/> and a triangle.\n            </summary>\n            <param name=\"plane\">The plane to test.</param>\n            <param name=\"vertex1\">The first vertex of the triangle to test.</param>\n            <param name=\"vertex2\">The second vertex of the triagnle to test.</param>\n            <param name=\"vertex3\">The third vertex of the triangle to test.</param>\n            <returns>Whether the two objects intersected.</returns>\n        </member>\n        <member name=\"M:SharpDX.Collision.PlaneIntersectsBox(SharpDX.Plane@,SharpDX.BoundingBox@)\">\n            <summary>\n            Determines whether there is an intersection between a <see cref=\"T:SharpDX.Plane\"/> and a <see cref=\"T:SharpDX.BoundingBox\"/>.\n            </summary>\n            <param name=\"plane\">The plane to test.</param>\n            <param name=\"box\">The box to test.</param>\n            <returns>Whether the two objects intersected.</returns>\n        </member>\n        <member name=\"M:SharpDX.Collision.PlaneIntersectsSphere(SharpDX.Plane@,SharpDX.BoundingSphere@)\">\n            <summary>\n            Determines whether there is an intersection between a <see cref=\"T:SharpDX.Plane\"/> and a <see cref=\"T:SharpDX.BoundingSphere\"/>.\n            </summary>\n            <param name=\"plane\">The plane to test.</param>\n            <param name=\"sphere\">The sphere to test.</param>\n            <returns>Whether the two objects intersected.</returns>\n        </member>\n        <member name=\"M:SharpDX.Collision.BoxIntersectsBox(SharpDX.BoundingBox@,SharpDX.BoundingBox@)\">\n            <summary>\n            Determines whether there is an intersection between a <see cref=\"T:SharpDX.BoundingBox\"/> and a <see cref=\"T:SharpDX.BoundingBox\"/>.\n            </summary>\n            <param name=\"box1\">The first box to test.</param>\n            <param name=\"box2\">The second box to test.</param>\n            <returns>Whether the two objects intersected.</returns>\n        </member>\n        <member name=\"M:SharpDX.Collision.BoxIntersectsSphere(SharpDX.BoundingBox@,SharpDX.BoundingSphere@)\">\n            <summary>\n            Determines whether there is an intersection between a <see cref=\"T:SharpDX.BoundingBox\"/> and a <see cref=\"T:SharpDX.BoundingSphere\"/>.\n            </summary>\n            <param name=\"box\">The box to test.</param>\n            <param name=\"sphere\">The sphere to test.</param>\n            <returns>Whether the two objects intersected.</returns>\n        </member>\n        <member name=\"M:SharpDX.Collision.SphereIntersectsTriangle(SharpDX.BoundingSphere@,SharpDX.Vector3@,SharpDX.Vector3@,SharpDX.Vector3@)\">\n            <summary>\n            Determines whether there is an intersection between a <see cref=\"T:SharpDX.BoundingSphere\"/> and a triangle.\n            </summary>\n            <param name=\"sphere\">The sphere to test.</param>\n            <param name=\"vertex1\">The first vertex of the triangle to test.</param>\n            <param name=\"vertex2\">The second vertex of the triagnle to test.</param>\n            <param name=\"vertex3\">The third vertex of the triangle to test.</param>\n            <returns>Whether the two objects intersected.</returns>\n        </member>\n        <member name=\"M:SharpDX.Collision.SphereIntersectsSphere(SharpDX.BoundingSphere@,SharpDX.BoundingSphere@)\">\n            <summary>\n            Determines whether there is an intersection between a <see cref=\"T:SharpDX.BoundingSphere\"/> and a <see cref=\"T:SharpDX.BoundingSphere\"/>.\n            </summary>\n            <param name=\"sphere1\">First sphere to test.</param>\n            <param name=\"sphere2\">Second sphere to test.</param>\n            <returns>Whether the two objects intersected.</returns>\n        </member>\n        <member name=\"M:SharpDX.Collision.BoxContainsPoint(SharpDX.BoundingBox@,SharpDX.Vector3@)\">\n            <summary>\n            Determines whether a <see cref=\"T:SharpDX.BoundingBox\"/> contains a point.\n            </summary>\n            <param name=\"box\">The box to test.</param>\n            <param name=\"point\">The point to test.</param>\n            <returns>The type of containment the two objects have.</returns>\n        </member>\n        <member name=\"M:SharpDX.Collision.BoxContainsBox(SharpDX.BoundingBox@,SharpDX.BoundingBox@)\">\n            <summary>\n            Determines whether a <see cref=\"T:SharpDX.BoundingBox\"/> contains a <see cref=\"T:SharpDX.BoundingBox\"/>.\n            </summary>\n            <param name=\"box1\">The first box to test.</param>\n            <param name=\"box2\">The second box to test.</param>\n            <returns>The type of containment the two objects have.</returns>\n        </member>\n        <member name=\"M:SharpDX.Collision.BoxContainsSphere(SharpDX.BoundingBox@,SharpDX.BoundingSphere@)\">\n            <summary>\n            Determines whether a <see cref=\"T:SharpDX.BoundingBox\"/> contains a <see cref=\"T:SharpDX.BoundingSphere\"/>.\n            </summary>\n            <param name=\"box\">The box to test.</param>\n            <param name=\"sphere\">The sphere to test.</param>\n            <returns>The type of containment the two objects have.</returns>\n        </member>\n        <member name=\"M:SharpDX.Collision.SphereContainsPoint(SharpDX.BoundingSphere@,SharpDX.Vector3@)\">\n            <summary>\n            Determines whether a <see cref=\"T:SharpDX.BoundingSphere\"/> contains a point.\n            </summary>\n            <param name=\"sphere\">The sphere to test.</param>\n            <param name=\"point\">The point to test.</param>\n            <returns>The type of containment the two objects have.</returns>\n        </member>\n        <member name=\"M:SharpDX.Collision.SphereContainsTriangle(SharpDX.BoundingSphere@,SharpDX.Vector3@,SharpDX.Vector3@,SharpDX.Vector3@)\">\n            <summary>\n            Determines whether a <see cref=\"T:SharpDX.BoundingSphere\"/> contains a triangle.\n            </summary>\n            <param name=\"sphere\">The sphere to test.</param>\n            <param name=\"vertex1\">The first vertex of the triangle to test.</param>\n            <param name=\"vertex2\">The second vertex of the triagnle to test.</param>\n            <param name=\"vertex3\">The third vertex of the triangle to test.</param>\n            <returns>The type of containment the two objects have.</returns>\n        </member>\n        <member name=\"M:SharpDX.Collision.SphereContainsBox(SharpDX.BoundingSphere@,SharpDX.BoundingBox@)\">\n            <summary>\n            Determines whether a <see cref=\"T:SharpDX.BoundingSphere\"/> contains a <see cref=\"T:SharpDX.BoundingBox\"/>.\n            </summary>\n            <param name=\"sphere\">The sphere to test.</param>\n            <param name=\"box\">The box to test.</param>\n            <returns>The type of containment the two objects have.</returns>\n        </member>\n        <member name=\"M:SharpDX.Collision.SphereContainsSphere(SharpDX.BoundingSphere@,SharpDX.BoundingSphere@)\">\n            <summary>\n            Determines whether a <see cref=\"T:SharpDX.BoundingSphere\"/> contains a <see cref=\"T:SharpDX.BoundingSphere\"/>.\n            </summary>\n            <param name=\"sphere1\">The first sphere to test.</param>\n            <param name=\"sphere2\">The second sphere to test.</param>\n            <returns>The type of containment the two objects have.</returns>\n        </member>\n        <member name=\"T:SharpDX.Color3\">\n            <summary>\n            Represents a color in the form of rgb.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color3.Black\">\n            <summary>\n            The Black color (0, 0, 0).\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color3.White\">\n            <summary>\n            The White color (1, 1, 1, 1).\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color3.Red\">\n            <summary>\n            The red component of the color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color3.Green\">\n            <summary>\n            The green component of the color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color3.Blue\">\n            <summary>\n            The blue component of the color.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Color3.#ctor(System.Single)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Color3\"/> struct.\n            </summary>\n            <param name=\"value\">The value that will be assigned to all components.</param>\n        </member>\n        <member name=\"M:SharpDX.Color3.#ctor(System.Single,System.Single,System.Single)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Color3\"/> struct.\n            </summary>\n            <param name=\"red\">The red component of the color.</param>\n            <param name=\"green\">The green component of the color.</param>\n            <param name=\"blue\">The blue component of the color.</param>\n        </member>\n        <member name=\"M:SharpDX.Color3.#ctor(SharpDX.Vector3)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Color3\"/> struct.\n            </summary>\n            <param name=\"value\">The red, green, and blue components of the color.</param>\n        </member>\n        <member name=\"M:SharpDX.Color3.#ctor(System.Int32)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Color3\"/> struct.\n            </summary>\n            <param name=\"rgb\">A packed integer containing all three color components in RGB order.\n            The alpha component is ignored.</param>\n        </member>\n        <member name=\"M:SharpDX.Color3.#ctor(System.Single[])\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Color3\"/> struct.\n            </summary>\n            <param name=\"values\">The values to assign to the red, green, and blue components of the color. This must be an array with three elements.</param>\n            <exception cref=\"T:System.ArgumentNullException\">Thrown when <paramref name=\"values\"/> is <c>null</c>.</exception>\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">Thrown when <paramref name=\"values\"/> contains more or less than four elements.</exception>\n        </member>\n        <member name=\"M:SharpDX.Color3.ToRgba\">\n            <summary>\n            Converts the color into a packed integer.\n            </summary>\n            <returns>A packed integer containing all three color components.\n            The alpha channel is set to 255.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color3.ToBgra\">\n            <summary>\n            Converts the color into a packed integer.\n            </summary>\n            <returns>A packed integer containing all three color components.\n            The alpha channel is set to 255.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color3.ToVector3\">\n            <summary>\n            Converts the color into a three component vector.\n            </summary>\n            <returns>A three component vector containing the red, green, and blue components of the color.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color3.ToArray\">\n            <summary>\n            Creates an array containing the elements of the color.\n            </summary>\n            <returns>A three-element array containing the components of the color.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color3.Add(SharpDX.Color3@,SharpDX.Color3@,SharpDX.Color3@)\">\n            <summary>\n            Adds two colors.\n            </summary>\n            <param name=\"left\">The first color to add.</param>\n            <param name=\"right\">The second color to add.</param>\n            <param name=\"result\">When the method completes, completes the sum of the two colors.</param>\n        </member>\n        <member name=\"M:SharpDX.Color3.Add(SharpDX.Color3,SharpDX.Color3)\">\n            <summary>\n            Adds two colors.\n            </summary>\n            <param name=\"left\">The first color to add.</param>\n            <param name=\"right\">The second color to add.</param>\n            <returns>The sum of the two colors.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color3.Subtract(SharpDX.Color3@,SharpDX.Color3@,SharpDX.Color3@)\">\n            <summary>\n            Subtracts two colors.\n            </summary>\n            <param name=\"left\">The first color to subtract.</param>\n            <param name=\"right\">The second color to subtract.</param>\n            <param name=\"result\">WHen the method completes, contains the difference of the two colors.</param>\n        </member>\n        <member name=\"M:SharpDX.Color3.Subtract(SharpDX.Color3,SharpDX.Color3)\">\n            <summary>\n            Subtracts two colors.\n            </summary>\n            <param name=\"left\">The first color to subtract.</param>\n            <param name=\"right\">The second color to subtract</param>\n            <returns>The difference of the two colors.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color3.Modulate(SharpDX.Color3@,SharpDX.Color3@,SharpDX.Color3@)\">\n            <summary>\n            Modulates two colors.\n            </summary>\n            <param name=\"left\">The first color to modulate.</param>\n            <param name=\"right\">The second color to modulate.</param>\n            <param name=\"result\">When the method completes, contains the modulated color.</param>\n        </member>\n        <member name=\"M:SharpDX.Color3.Modulate(SharpDX.Color3,SharpDX.Color3)\">\n            <summary>\n            Modulates two colors.\n            </summary>\n            <param name=\"left\">The first color to modulate.</param>\n            <param name=\"right\">The second color to modulate.</param>\n            <returns>The modulated color.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color3.Scale(SharpDX.Color3@,System.Single,SharpDX.Color3@)\">\n            <summary>\n            Scales a color.\n            </summary>\n            <param name=\"value\">The color to scale.</param>\n            <param name=\"scale\">The amount by which to scale.</param>\n            <param name=\"result\">When the method completes, contains the scaled color.</param>\n        </member>\n        <member name=\"M:SharpDX.Color3.Scale(SharpDX.Color3,System.Single)\">\n            <summary>\n            Scales a color.\n            </summary>\n            <param name=\"value\">The color to scale.</param>\n            <param name=\"scale\">The amount by which to scale.</param>\n            <returns>The scaled color.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color3.Negate(SharpDX.Color3@,SharpDX.Color3@)\">\n            <summary>\n            Negates a color.\n            </summary>\n            <param name=\"value\">The color to negate.</param>\n            <param name=\"result\">When the method completes, contains the negated color.</param>\n        </member>\n        <member name=\"M:SharpDX.Color3.Negate(SharpDX.Color3)\">\n            <summary>\n            Negates a color.\n            </summary>\n            <param name=\"value\">The color to negate.</param>\n            <returns>The negated color.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color3.Clamp(SharpDX.Color3@,SharpDX.Color3@,SharpDX.Color3@,SharpDX.Color3@)\">\n            <summary>\n            Restricts a value to be within a specified range.\n            </summary>\n            <param name=\"value\">The value to clamp.</param>\n            <param name=\"min\">The minimum value.</param>\n            <param name=\"max\">The maximum value.</param>\n            <param name=\"result\">When the method completes, contains the clamped value.</param>\n        </member>\n        <member name=\"M:SharpDX.Color3.Clamp(SharpDX.Color3,SharpDX.Color3,SharpDX.Color3)\">\n            <summary>\n            Restricts a value to be within a specified range.\n            </summary>\n            <param name=\"value\">The value to clamp.</param>\n            <param name=\"min\">The minimum value.</param>\n            <param name=\"max\">The maximum value.</param>\n            <returns>The clamped value.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color3.Lerp(SharpDX.Color3@,SharpDX.Color3@,System.Single,SharpDX.Color3@)\">\n            <summary>\n            Performs a linear interpolation between two colors.\n            </summary>\n            <param name=\"start\">Start color.</param>\n            <param name=\"end\">End color.</param>\n            <param name=\"amount\">Value between 0 and 1 indicating the weight of <paramref name=\"end\"/>.</param>\n            <param name=\"result\">When the method completes, contains the linear interpolation of the two colors.</param>\n            <remarks>\n            This method performs the linear interpolation based on the following formula.\n            <code>start + (end - start) * amount</code>\n            Passing <paramref name=\"amount\"/> a value of 0 will cause <paramref name=\"start\"/> to be returned; a value of 1 will cause <paramref name=\"end\"/> to be returned. \n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Color3.Lerp(SharpDX.Color3,SharpDX.Color3,System.Single)\">\n            <summary>\n            Performs a linear interpolation between two colors.\n            </summary>\n            <param name=\"start\">Start color.</param>\n            <param name=\"end\">End color.</param>\n            <param name=\"amount\">Value between 0 and 1 indicating the weight of <paramref name=\"end\"/>.</param>\n            <returns>The linear interpolation of the two colors.</returns>\n            <remarks>\n            This method performs the linear interpolation based on the following formula.\n            <code>start + (end - start) * amount</code>\n            Passing <paramref name=\"amount\"/> a value of 0 will cause <paramref name=\"start\"/> to be returned; a value of 1 will cause <paramref name=\"end\"/> to be returned. \n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Color3.SmoothStep(SharpDX.Color3@,SharpDX.Color3@,System.Single,SharpDX.Color3@)\">\n            <summary>\n            Performs a cubic interpolation between two colors.\n            </summary>\n            <param name=\"start\">Start color.</param>\n            <param name=\"end\">End color.</param>\n            <param name=\"amount\">Value between 0 and 1 indicating the weight of <paramref name=\"end\"/>.</param>\n            <param name=\"result\">When the method completes, contains the cubic interpolation of the two colors.</param>\n        </member>\n        <member name=\"M:SharpDX.Color3.SmoothStep(SharpDX.Color3,SharpDX.Color3,System.Single)\">\n            <summary>\n            Performs a cubic interpolation between two colors.\n            </summary>\n            <param name=\"start\">Start color.</param>\n            <param name=\"end\">End color.</param>\n            <param name=\"amount\">Value between 0 and 1 indicating the weight of <paramref name=\"end\"/>.</param>\n            <returns>The cubic interpolation of the two colors.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color3.Max(SharpDX.Color3@,SharpDX.Color3@,SharpDX.Color3@)\">\n            <summary>\n            Returns a color containing the smallest components of the specified colorss.\n            </summary>\n            <param name=\"left\">The first source color.</param>\n            <param name=\"right\">The second source color.</param>\n            <param name=\"result\">When the method completes, contains an new color composed of the largest components of the source colorss.</param>\n        </member>\n        <member name=\"M:SharpDX.Color3.Max(SharpDX.Color3,SharpDX.Color3)\">\n            <summary>\n            Returns a color containing the largest components of the specified colorss.\n            </summary>\n            <param name=\"left\">The first source color.</param>\n            <param name=\"right\">The second source color.</param>\n            <returns>A color containing the largest components of the source colors.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color3.Min(SharpDX.Color3@,SharpDX.Color3@,SharpDX.Color3@)\">\n            <summary>\n            Returns a color containing the smallest components of the specified colors.\n            </summary>\n            <param name=\"left\">The first source color.</param>\n            <param name=\"right\">The second source color.</param>\n            <param name=\"result\">When the method completes, contains an new color composed of the smallest components of the source colors.</param>\n        </member>\n        <member name=\"M:SharpDX.Color3.Min(SharpDX.Color3,SharpDX.Color3)\">\n            <summary>\n            Returns a color containing the smallest components of the specified colors.\n            </summary>\n            <param name=\"left\">The first source color.</param>\n            <param name=\"right\">The second source color.</param>\n            <returns>A color containing the smallest components of the source colors.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color3.AdjustContrast(SharpDX.Color3@,System.Single,SharpDX.Color3@)\">\n            <summary>\n            Adjusts the contrast of a color.\n            </summary>\n            <param name=\"value\">The color whose contrast is to be adjusted.</param>\n            <param name=\"contrast\">The amount by which to adjust the contrast.</param>\n            <param name=\"result\">When the method completes, contains the adjusted color.</param>\n        </member>\n        <member name=\"M:SharpDX.Color3.AdjustContrast(SharpDX.Color3,System.Single)\">\n            <summary>\n            Adjusts the contrast of a color.\n            </summary>\n            <param name=\"value\">The color whose contrast is to be adjusted.</param>\n            <param name=\"contrast\">The amount by which to adjust the contrast.</param>\n            <returns>The adjusted color.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color3.AdjustSaturation(SharpDX.Color3@,System.Single,SharpDX.Color3@)\">\n            <summary>\n            Adjusts the saturation of a color.\n            </summary>\n            <param name=\"value\">The color whose saturation is to be adjusted.</param>\n            <param name=\"saturation\">The amount by which to adjust the saturation.</param>\n            <param name=\"result\">When the method completes, contains the adjusted color.</param>\n        </member>\n        <member name=\"M:SharpDX.Color3.AdjustSaturation(SharpDX.Color3,System.Single)\">\n            <summary>\n            Adjusts the saturation of a color.\n            </summary>\n            <param name=\"value\">The color whose saturation is to be adjusted.</param>\n            <param name=\"saturation\">The amount by which to adjust the saturation.</param>\n            <returns>The adjusted color.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color3.op_Addition(SharpDX.Color3,SharpDX.Color3)\">\n            <summary>\n            Adds two colors.\n            </summary>\n            <param name=\"left\">The first color to add.</param>\n            <param name=\"right\">The second color to add.</param>\n            <returns>The sum of the two colors.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color3.op_UnaryPlus(SharpDX.Color3)\">\n            <summary>\n            Assert a color (return it unchanged).\n            </summary>\n            <param name=\"value\">The color to assert (unchange).</param>\n            <returns>The asserted (unchanged) color.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color3.op_Subtraction(SharpDX.Color3,SharpDX.Color3)\">\n            <summary>\n            Subtracts two colors.\n            </summary>\n            <param name=\"left\">The first color to subtract.</param>\n            <param name=\"right\">The second color to subtract.</param>\n            <returns>The difference of the two colors.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color3.op_UnaryNegation(SharpDX.Color3)\">\n            <summary>\n            Negates a color.\n            </summary>\n            <param name=\"value\">The color to negate.</param>\n            <returns>A negated color.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color3.op_Multiply(System.Single,SharpDX.Color3)\">\n            <summary>\n            Scales a color.\n            </summary>\n            <param name=\"scale\">The factor by which to scale the color.</param>\n            <param name=\"value\">The color to scale.</param>\n            <returns>The scaled color.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color3.op_Multiply(SharpDX.Color3,System.Single)\">\n            <summary>\n            Scales a color.\n            </summary>\n            <param name=\"value\">The factor by which to scale the color.</param>\n            <param name=\"scale\">The color to scale.</param>\n            <returns>The scaled color.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color3.op_Multiply(SharpDX.Color3,SharpDX.Color3)\">\n            <summary>\n            Modulates two colors.\n            </summary>\n            <param name=\"left\">The first color to modulate.</param>\n            <param name=\"right\">The second color to modulate.</param>\n            <returns>The modulated color.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color3.op_Equality(SharpDX.Color3,SharpDX.Color3)\">\n            <summary>\n            Tests for equality between two objects.\n            </summary>\n            <param name=\"left\">The first value to compare.</param>\n            <param name=\"right\">The second value to compare.</param>\n            <returns><c>true</c> if <paramref name=\"left\"/> has the same value as <paramref name=\"right\"/>; otherwise, <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color3.op_Inequality(SharpDX.Color3,SharpDX.Color3)\">\n            <summary>\n            Tests for inequality between two objects.\n            </summary>\n            <param name=\"left\">The first value to compare.</param>\n            <param name=\"right\">The second value to compare.</param>\n            <returns><c>true</c> if <paramref name=\"left\"/> has a different value than <paramref name=\"right\"/>; otherwise, <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color3.op_Explicit(SharpDX.Color3)~SharpDX.Color4\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:SharpDX.Color3\"/> to <see cref=\"T:SharpDX.Color4\"/>.\n            </summary>\n            <param name=\"value\">The value.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color3.op_Explicit(SharpDX.Color3)~SharpDX.Vector3\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:SharpDX.Color3\"/> to <see cref=\"T:SharpDX.Vector3\"/>.\n            </summary>\n            <param name=\"value\">The value.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color3.op_Explicit(SharpDX.Vector3)~SharpDX.Color3\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:SharpDX.Vector3\"/> to <see cref=\"T:SharpDX.Color3\"/>.\n            </summary>\n            <param name=\"value\">The value.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color3.op_Explicit(System.Int32)~SharpDX.Color3\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.Int32\"/> to <see cref=\"T:SharpDX.Color3\"/>.\n            </summary>\n            <param name=\"value\">The value.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color3.ToString\">\n            <summary>\n            Returns a <see cref=\"T:System.String\"/> that represents this instance.\n            </summary>\n            <returns>\n            A <see cref=\"T:System.String\"/> that represents this instance.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Color3.ToString(System.String)\">\n            <summary>\n            Returns a <see cref=\"T:System.String\"/> that represents this instance.\n            </summary>\n            <param name=\"format\">The format.</param>\n            <returns>\n            A <see cref=\"T:System.String\"/> that represents this instance.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Color3.ToString(System.IFormatProvider)\">\n            <summary>\n            Returns a <see cref=\"T:System.String\"/> that represents this instance.\n            </summary>\n            <param name=\"formatProvider\">The format provider.</param>\n            <returns>\n            A <see cref=\"T:System.String\"/> that represents this instance.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Color3.ToString(System.String,System.IFormatProvider)\">\n            <summary>\n            Returns a <see cref=\"T:System.String\"/> that represents this instance.\n            </summary>\n            <param name=\"format\">The format.</param>\n            <param name=\"formatProvider\">The format provider.</param>\n            <returns>\n            A <see cref=\"T:System.String\"/> that represents this instance.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Color3.GetHashCode\">\n            <summary>\n            Returns a hash code for this instance.\n            </summary>\n            <returns>\n            A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. \n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Color3.Equals(SharpDX.Color3)\">\n            <summary>\n            Determines whether the specified <see cref=\"T:SharpDX.Color3\"/> is equal to this instance.\n            </summary>\n            <param name=\"other\">The <see cref=\"T:SharpDX.Color3\"/> to compare with this instance.</param>\n            <returns>\n            <c>true</c> if the specified <see cref=\"T:SharpDX.Color3\"/> is equal to this instance; otherwise, <c>false</c>.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Color3.Equals(System.Object)\">\n            <summary>\n            Determines whether the specified <see cref=\"T:System.Object\"/> is equal to this instance.\n            </summary>\n            <param name=\"value\">The <see cref=\"T:System.Object\"/> to compare with this instance.</param>\n            <returns>\n            <c>true</c> if the specified <see cref=\"T:System.Object\"/> is equal to this instance; otherwise, <c>false</c>.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Color3.SharpDX#Serialization#IDataSerializable#Serialize(SharpDX.Serialization.BinarySerializer)\">\n            <inheritdoc/>\n        </member>\n        <member name=\"P:SharpDX.Color3.Item(System.Int32)\">\n            <summary>\n            Gets or sets the component at the specified index.\n            </summary>\n            <value>The value of the red, green, or blue component, depending on the index.</value>\n            <param name=\"index\">The index of the component to access. Use 0 for the red component, 1 for the green component, and 2 for the blue component.</param>\n            <returns>The value of the component at the specified index.</returns>\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">Thrown when the <paramref name=\"index\"/> is out of the range [0, 2].</exception>\n        </member>\n        <member name=\"T:SharpDX.Color4\">\n            <summary>\n            Represents a color in the form of rgba.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color4.Black\">\n            <summary>\n            The Black color (0, 0, 0, 1).\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color4.White\">\n            <summary>\n            The White color (1, 1, 1, 1).\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color4.Red\">\n            <summary>\n            The red component of the color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color4.Green\">\n            <summary>\n            The green component of the color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color4.Blue\">\n            <summary>\n            The blue component of the color.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Color4.Alpha\">\n            <summary>\n            The alpha component of the color.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Color4.#ctor(System.Single)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Color4\"/> struct.\n            </summary>\n            <param name=\"value\">The value that will be assigned to all components.</param>\n        </member>\n        <member name=\"M:SharpDX.Color4.#ctor(System.Single,System.Single,System.Single,System.Single)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Color4\"/> struct.\n            </summary>\n            <param name=\"red\">The red component of the color.</param>\n            <param name=\"green\">The green component of the color.</param>\n            <param name=\"blue\">The blue component of the color.</param>\n            <param name=\"alpha\">The alpha component of the color.</param>\n        </member>\n        <member name=\"M:SharpDX.Color4.#ctor(SharpDX.Vector4)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Color4\"/> struct.\n            </summary>\n            <param name=\"value\">The red, green, blue, and alpha components of the color.</param>\n        </member>\n        <member name=\"M:SharpDX.Color4.#ctor(SharpDX.Vector3,System.Single)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Color4\"/> struct.\n            </summary>\n            <param name=\"value\">The red, green, and blue compoennts of the color.</param>\n            <param name=\"alpha\">The alpha component of the color.</param>\n        </member>\n        <member name=\"M:SharpDX.Color4.#ctor(System.UInt32)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Color4\"/> struct.\n            </summary>\n            <param name=\"rgba\">A packed integer containing all four color components in RGBA order.</param>\n        </member>\n        <member name=\"M:SharpDX.Color4.#ctor(System.Int32)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Color4\"/> struct.\n            </summary>\n            <param name=\"rgba\">A packed integer containing all four color components in RGBA order.</param>\n        </member>\n        <member name=\"M:SharpDX.Color4.#ctor(System.Single[])\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Color4\"/> struct.\n            </summary>\n            <param name=\"values\">The values to assign to the red, green, blue, and alpha components of the color. This must be an array with four elements.</param>\n            <exception cref=\"T:System.ArgumentNullException\">Thrown when <paramref name=\"values\"/> is <c>null</c>.</exception>\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">Thrown when <paramref name=\"values\"/> contains more or less than four elements.</exception>\n        </member>\n        <member name=\"M:SharpDX.Color4.#ctor(SharpDX.Color3)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Color4\"/> struct.\n            </summary>\n            <param name=\"value\"><see cref=\"T:SharpDX.Color3\"/> used to initialize the color.</param>\n        </member>\n        <member name=\"M:SharpDX.Color4.#ctor(SharpDX.Color3,System.Single)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Color4\"/> struct.\n            </summary>\n            <param name=\"value\"><see cref=\"T:SharpDX.Color3\"/> used to initialize the color.</param>\n            <param name=\"alpha\">The alpha component of the color.</param>\n        </member>\n        <member name=\"M:SharpDX.Color4.ToBgra\">\n            <summary>\n            Converts the color into a packed integer.\n            </summary>\n            <returns>A packed integer containing all four color components.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color4.ToBgra(System.Byte@,System.Byte@,System.Byte@,System.Byte@)\">\n            <summary>\n            Converts the color into a packed integer.\n            </summary>\n            <returns>A packed integer containing all four color components.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color4.ToRgba\">\n            <summary>\n            Converts the color into a packed integer.\n            </summary>\n            <returns>A packed integer containing all four color components.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color4.ToVector3\">\n            <summary>\n            Converts the color into a three component vector.\n            </summary>\n            <returns>A three component vector containing the red, green, and blue components of the color.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color4.ToVector4\">\n            <summary>\n            Converts the color into a four component vector.\n            </summary>\n            <returns>A four component vector containing all four color components.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color4.ToArray\">\n            <summary>\n            Creates an array containing the elements of the color.\n            </summary>\n            <returns>A four-element array containing the components of the color.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color4.Add(SharpDX.Color4@,SharpDX.Color4@,SharpDX.Color4@)\">\n            <summary>\n            Adds two colors.\n            </summary>\n            <param name=\"left\">The first color to add.</param>\n            <param name=\"right\">The second color to add.</param>\n            <param name=\"result\">When the method completes, completes the sum of the two colors.</param>\n        </member>\n        <member name=\"M:SharpDX.Color4.Add(SharpDX.Color4,SharpDX.Color4)\">\n            <summary>\n            Adds two colors.\n            </summary>\n            <param name=\"left\">The first color to add.</param>\n            <param name=\"right\">The second color to add.</param>\n            <returns>The sum of the two colors.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color4.Subtract(SharpDX.Color4@,SharpDX.Color4@,SharpDX.Color4@)\">\n            <summary>\n            Subtracts two colors.\n            </summary>\n            <param name=\"left\">The first color to subtract.</param>\n            <param name=\"right\">The second color to subtract.</param>\n            <param name=\"result\">WHen the method completes, contains the difference of the two colors.</param>\n        </member>\n        <member name=\"M:SharpDX.Color4.Subtract(SharpDX.Color4,SharpDX.Color4)\">\n            <summary>\n            Subtracts two colors.\n            </summary>\n            <param name=\"left\">The first color to subtract.</param>\n            <param name=\"right\">The second color to subtract</param>\n            <returns>The difference of the two colors.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color4.Modulate(SharpDX.Color4@,SharpDX.Color4@,SharpDX.Color4@)\">\n            <summary>\n            Modulates two colors.\n            </summary>\n            <param name=\"left\">The first color to modulate.</param>\n            <param name=\"right\">The second color to modulate.</param>\n            <param name=\"result\">When the method completes, contains the modulated color.</param>\n        </member>\n        <member name=\"M:SharpDX.Color4.Modulate(SharpDX.Color4,SharpDX.Color4)\">\n            <summary>\n            Modulates two colors.\n            </summary>\n            <param name=\"left\">The first color to modulate.</param>\n            <param name=\"right\">The second color to modulate.</param>\n            <returns>The modulated color.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color4.Scale(SharpDX.Color4@,System.Single,SharpDX.Color4@)\">\n            <summary>\n            Scales a color.\n            </summary>\n            <param name=\"value\">The color to scale.</param>\n            <param name=\"scale\">The amount by which to scale.</param>\n            <param name=\"result\">When the method completes, contains the scaled color.</param>\n        </member>\n        <member name=\"M:SharpDX.Color4.Scale(SharpDX.Color4,System.Single)\">\n            <summary>\n            Scales a color.\n            </summary>\n            <param name=\"value\">The color to scale.</param>\n            <param name=\"scale\">The amount by which to scale.</param>\n            <returns>The scaled color.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color4.Negate(SharpDX.Color4@,SharpDX.Color4@)\">\n            <summary>\n            Negates a color.\n            </summary>\n            <param name=\"value\">The color to negate.</param>\n            <param name=\"result\">When the method completes, contains the negated color.</param>\n        </member>\n        <member name=\"M:SharpDX.Color4.Negate(SharpDX.Color4)\">\n            <summary>\n            Negates a color.\n            </summary>\n            <param name=\"value\">The color to negate.</param>\n            <returns>The negated color.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color4.Clamp(SharpDX.Color4@,SharpDX.Color4@,SharpDX.Color4@,SharpDX.Color4@)\">\n            <summary>\n            Restricts a value to be within a specified range.\n            </summary>\n            <param name=\"value\">The value to clamp.</param>\n            <param name=\"min\">The minimum value.</param>\n            <param name=\"max\">The maximum value.</param>\n            <param name=\"result\">When the method completes, contains the clamped value.</param>\n        </member>\n        <member name=\"M:SharpDX.Color4.Clamp(SharpDX.Color4,SharpDX.Color4,SharpDX.Color4)\">\n            <summary>\n            Restricts a value to be within a specified range.\n            </summary>\n            <param name=\"value\">The value to clamp.</param>\n            <param name=\"min\">The minimum value.</param>\n            <param name=\"max\">The maximum value.</param>\n            <returns>The clamped value.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color4.Lerp(SharpDX.Color4@,SharpDX.Color4@,System.Single,SharpDX.Color4@)\">\n            <summary>\n            Performs a linear interpolation between two colors.\n            </summary>\n            <param name=\"start\">Start color.</param>\n            <param name=\"end\">End color.</param>\n            <param name=\"amount\">Value between 0 and 1 indicating the weight of <paramref name=\"end\"/>.</param>\n            <param name=\"result\">When the method completes, contains the linear interpolation of the two colors.</param>\n            <remarks>\n            This method performs the linear interpolation based on the following formula.\n            <code>start + (end - start) * amount</code>\n            Passing <paramref name=\"amount\"/> a value of 0 will cause <paramref name=\"start\"/> to be returned; a value of 1 will cause <paramref name=\"end\"/> to be returned. \n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Color4.Lerp(SharpDX.Color4,SharpDX.Color4,System.Single)\">\n            <summary>\n            Performs a linear interpolation between two colors.\n            </summary>\n            <param name=\"start\">Start color.</param>\n            <param name=\"end\">End color.</param>\n            <param name=\"amount\">Value between 0 and 1 indicating the weight of <paramref name=\"end\"/>.</param>\n            <returns>The linear interpolation of the two colors.</returns>\n            <remarks>\n            This method performs the linear interpolation based on the following formula.\n            <code>start + (end - start) * amount</code>\n            Passing <paramref name=\"amount\"/> a value of 0 will cause <paramref name=\"start\"/> to be returned; a value of 1 will cause <paramref name=\"end\"/> to be returned. \n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Color4.SmoothStep(SharpDX.Color4@,SharpDX.Color4@,System.Single,SharpDX.Color4@)\">\n            <summary>\n            Performs a cubic interpolation between two colors.\n            </summary>\n            <param name=\"start\">Start color.</param>\n            <param name=\"end\">End color.</param>\n            <param name=\"amount\">Value between 0 and 1 indicating the weight of <paramref name=\"end\"/>.</param>\n            <param name=\"result\">When the method completes, contains the cubic interpolation of the two colors.</param>\n        </member>\n        <member name=\"M:SharpDX.Color4.SmoothStep(SharpDX.Color4,SharpDX.Color4,System.Single)\">\n            <summary>\n            Performs a cubic interpolation between two colors.\n            </summary>\n            <param name=\"start\">Start color.</param>\n            <param name=\"end\">End color.</param>\n            <param name=\"amount\">Value between 0 and 1 indicating the weight of <paramref name=\"end\"/>.</param>\n            <returns>The cubic interpolation of the two colors.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color4.Max(SharpDX.Color4@,SharpDX.Color4@,SharpDX.Color4@)\">\n            <summary>\n            Returns a color containing the smallest components of the specified colorss.\n            </summary>\n            <param name=\"left\">The first source color.</param>\n            <param name=\"right\">The second source color.</param>\n            <param name=\"result\">When the method completes, contains an new color composed of the largest components of the source colorss.</param>\n        </member>\n        <member name=\"M:SharpDX.Color4.Max(SharpDX.Color4,SharpDX.Color4)\">\n            <summary>\n            Returns a color containing the largest components of the specified colorss.\n            </summary>\n            <param name=\"left\">The first source color.</param>\n            <param name=\"right\">The second source color.</param>\n            <returns>A color containing the largest components of the source colors.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color4.Min(SharpDX.Color4@,SharpDX.Color4@,SharpDX.Color4@)\">\n            <summary>\n            Returns a color containing the smallest components of the specified colors.\n            </summary>\n            <param name=\"left\">The first source color.</param>\n            <param name=\"right\">The second source color.</param>\n            <param name=\"result\">When the method completes, contains an new color composed of the smallest components of the source colors.</param>\n        </member>\n        <member name=\"M:SharpDX.Color4.Min(SharpDX.Color4,SharpDX.Color4)\">\n            <summary>\n            Returns a color containing the smallest components of the specified colors.\n            </summary>\n            <param name=\"left\">The first source color.</param>\n            <param name=\"right\">The second source color.</param>\n            <returns>A color containing the smallest components of the source colors.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color4.AdjustContrast(SharpDX.Color4@,System.Single,SharpDX.Color4@)\">\n            <summary>\n            Adjusts the contrast of a color.\n            </summary>\n            <param name=\"value\">The color whose contrast is to be adjusted.</param>\n            <param name=\"contrast\">The amount by which to adjust the contrast.</param>\n            <param name=\"result\">When the method completes, contains the adjusted color.</param>\n        </member>\n        <member name=\"M:SharpDX.Color4.AdjustContrast(SharpDX.Color4,System.Single)\">\n            <summary>\n            Adjusts the contrast of a color.\n            </summary>\n            <param name=\"value\">The color whose contrast is to be adjusted.</param>\n            <param name=\"contrast\">The amount by which to adjust the contrast.</param>\n            <returns>The adjusted color.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color4.AdjustSaturation(SharpDX.Color4@,System.Single,SharpDX.Color4@)\">\n            <summary>\n            Adjusts the saturation of a color.\n            </summary>\n            <param name=\"value\">The color whose saturation is to be adjusted.</param>\n            <param name=\"saturation\">The amount by which to adjust the saturation.</param>\n            <param name=\"result\">When the method completes, contains the adjusted color.</param>\n        </member>\n        <member name=\"M:SharpDX.Color4.AdjustSaturation(SharpDX.Color4,System.Single)\">\n            <summary>\n            Adjusts the saturation of a color.\n            </summary>\n            <param name=\"value\">The color whose saturation is to be adjusted.</param>\n            <param name=\"saturation\">The amount by which to adjust the saturation.</param>\n            <returns>The adjusted color.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color4.op_Addition(SharpDX.Color4,SharpDX.Color4)\">\n            <summary>\n            Adds two colors.\n            </summary>\n            <param name=\"left\">The first color to add.</param>\n            <param name=\"right\">The second color to add.</param>\n            <returns>The sum of the two colors.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color4.op_UnaryPlus(SharpDX.Color4)\">\n            <summary>\n            Assert a color (return it unchanged).\n            </summary>\n            <param name=\"value\">The color to assert (unchange).</param>\n            <returns>The asserted (unchanged) color.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color4.op_Subtraction(SharpDX.Color4,SharpDX.Color4)\">\n            <summary>\n            Subtracts two colors.\n            </summary>\n            <param name=\"left\">The first color to subtract.</param>\n            <param name=\"right\">The second color to subtract.</param>\n            <returns>The difference of the two colors.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color4.op_UnaryNegation(SharpDX.Color4)\">\n            <summary>\n            Negates a color.\n            </summary>\n            <param name=\"value\">The color to negate.</param>\n            <returns>A negated color.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color4.op_Multiply(System.Single,SharpDX.Color4)\">\n            <summary>\n            Scales a color.\n            </summary>\n            <param name=\"scale\">The factor by which to scale the color.</param>\n            <param name=\"value\">The color to scale.</param>\n            <returns>The scaled color.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color4.op_Multiply(SharpDX.Color4,System.Single)\">\n            <summary>\n            Scales a color.\n            </summary>\n            <param name=\"value\">The factor by which to scale the color.</param>\n            <param name=\"scale\">The color to scale.</param>\n            <returns>The scaled color.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color4.op_Multiply(SharpDX.Color4,SharpDX.Color4)\">\n            <summary>\n            Modulates two colors.\n            </summary>\n            <param name=\"left\">The first color to modulate.</param>\n            <param name=\"right\">The second color to modulate.</param>\n            <returns>The modulated color.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color4.op_Equality(SharpDX.Color4,SharpDX.Color4)\">\n            <summary>\n            Tests for equality between two objects.\n            </summary>\n            <param name=\"left\">The first value to compare.</param>\n            <param name=\"right\">The second value to compare.</param>\n            <returns><c>true</c> if <paramref name=\"left\"/> has the same value as <paramref name=\"right\"/>; otherwise, <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color4.op_Inequality(SharpDX.Color4,SharpDX.Color4)\">\n            <summary>\n            Tests for inequality between two objects.\n            </summary>\n            <param name=\"left\">The first value to compare.</param>\n            <param name=\"right\">The second value to compare.</param>\n            <returns><c>true</c> if <paramref name=\"left\"/> has a different value than <paramref name=\"right\"/>; otherwise, <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color4.op_Explicit(SharpDX.Color4)~SharpDX.Color3\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:SharpDX.Color4\"/> to <see cref=\"T:SharpDX.Color3\"/>.\n            </summary>\n            <param name=\"value\">The value.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color4.op_Explicit(SharpDX.Color4)~SharpDX.Vector3\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:SharpDX.Color4\"/> to <see cref=\"T:SharpDX.Vector3\"/>.\n            </summary>\n            <param name=\"value\">The value.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color4.op_Explicit(SharpDX.Color4)~SharpDX.Vector4\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:SharpDX.Color4\"/> to <see cref=\"T:SharpDX.Vector4\"/>.\n            </summary>\n            <param name=\"value\">The value.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color4.op_Explicit(SharpDX.Vector3)~SharpDX.Color4\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:SharpDX.Vector3\"/> to <see cref=\"T:SharpDX.Color4\"/>.\n            </summary>\n            <param name=\"value\">The value.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color4.op_Explicit(SharpDX.Vector4)~SharpDX.Color4\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:SharpDX.Vector4\"/> to <see cref=\"T:SharpDX.Color4\"/>.\n            </summary>\n            <param name=\"value\">The value.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color4.op_Explicit(SharpDX.ColorBGRA)~SharpDX.Color4\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:SharpDX.Vector3\"/> to <see cref=\"T:SharpDX.Color4\"/>.\n            </summary>\n            <param name=\"value\">The value.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color4.op_Explicit(SharpDX.Color4)~SharpDX.ColorBGRA\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:SharpDX.Vector4\"/> to <see cref=\"T:SharpDX.Color4\"/>.\n            </summary>\n            <param name=\"value\">The value.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"M:SharpDX.Color4.op_Explicit(SharpDX.Color4)~System.Int32\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:SharpDX.Color4\"/> to <see cref=\"T:System.Int32\"/>.\n            </summary>\n            <param name=\"value\">The value.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Color4.op_Explicit(System.Int32)~SharpDX.Color4\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.Int32\"/> to <see cref=\"T:SharpDX.Color4\"/>.\n            </summary>\n            <param name=\"value\">The value.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Color4.ToString\">\n            <summary>\n            Returns a <see cref=\"T:System.String\"/> that represents this instance.\n            </summary>\n            <returns>\n            A <see cref=\"T:System.String\"/> that represents this instance.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Color4.ToString(System.String)\">\n            <summary>\n            Returns a <see cref=\"T:System.String\"/> that represents this instance.\n            </summary>\n            <param name=\"format\">The format.</param>\n            <returns>\n            A <see cref=\"T:System.String\"/> that represents this instance.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Color4.ToString(System.IFormatProvider)\">\n            <summary>\n            Returns a <see cref=\"T:System.String\"/> that represents this instance.\n            </summary>\n            <param name=\"formatProvider\">The format provider.</param>\n            <returns>\n            A <see cref=\"T:System.String\"/> that represents this instance.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Color4.ToString(System.String,System.IFormatProvider)\">\n            <summary>\n            Returns a <see cref=\"T:System.String\"/> that represents this instance.\n            </summary>\n            <param name=\"format\">The format.</param>\n            <param name=\"formatProvider\">The format provider.</param>\n            <returns>\n            A <see cref=\"T:System.String\"/> that represents this instance.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Color4.GetHashCode\">\n            <summary>\n            Returns a hash code for this instance.\n            </summary>\n            <returns>\n            A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. \n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Color4.Equals(SharpDX.Color4)\">\n            <summary>\n            Determines whether the specified <see cref=\"T:SharpDX.Color4\"/> is equal to this instance.\n            </summary>\n            <param name=\"other\">The <see cref=\"T:SharpDX.Color4\"/> to compare with this instance.</param>\n            <returns>\n            <c>true</c> if the specified <see cref=\"T:SharpDX.Color4\"/> is equal to this instance; otherwise, <c>false</c>.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Color4.Equals(System.Object)\">\n            <summary>\n            Determines whether the specified <see cref=\"T:System.Object\"/> is equal to this instance.\n            </summary>\n            <param name=\"value\">The <see cref=\"T:System.Object\"/> to compare with this instance.</param>\n            <returns>\n            <c>true</c> if the specified <see cref=\"T:System.Object\"/> is equal to this instance; otherwise, <c>false</c>.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Color4.SharpDX#Serialization#IDataSerializable#Serialize(SharpDX.Serialization.BinarySerializer)\">\n            <inheritdoc/>\n        </member>\n        <member name=\"P:SharpDX.Color4.Item(System.Int32)\">\n            <summary>\n            Gets or sets the component at the specified index.\n            </summary>\n            <value>The value of the red, green, blue, and alpha components, depending on the index.</value>\n            <param name=\"index\">The index of the component to access. Use 0 for the alpha component, 1 for the red component, 2 for the green component, and 3 for the blue component.</param>\n            <returns>The value of the component at the specified index.</returns>\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">Thrown when the <paramref name=\"index\"/> is out of the range [0, 3].</exception>\n        </member>\n        <member name=\"P:SharpDX.Win32.ComBaseStreamNative.Callback\">\n            <summary>\n            Gets or sets the unmanaged callback.\n            </summary>\n            <value>The unmanaged callback.</value>\n            <remarks>\n            This property is set whenever this instance has an unmanaged callback\n            registered. This callback must be disposed when disposing this instance. \n            </remarks>\n        </member>\n        <member name=\"T:SharpDX.ComObject\">\n            <summary>\n            Root IUnknown class to interop with COM object\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.CppObject\">\n            <summary>\n            Root class for all Cpp interop object.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.CppObject._nativePointer\">\n            <summary>\n            The native pointer\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.CppObject.#ctor(System.IntPtr)\">\n            <summary>\n              Default constructor.\n            </summary>\n            <param name = \"pointer\">Pointer to Cpp Object</param>\n        </member>\n        <member name=\"M:SharpDX.CppObject.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.CppObject\"/> class.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.CppObject.op_Explicit(SharpDX.CppObject)~System.IntPtr\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:SharpDX.CppObject\"/> to <see cref=\"T:System.IntPtr\"/>.\n            </summary>\n            <param name=\"cppObject\">The CPP object.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.CppObject.FromTemp(SharpDX.CppObject)\">\n            <summary>\n            Initializes this instance with a pointer from a temporary object and set the pointer of the temporary  \n            object to IntPtr.Zero.\n            </summary>\n            <param name=\"temp\">The instance to get the NativePointer.</param>\n        </member>\n        <member name=\"M:SharpDX.CppObject.FromTemp(System.IntPtr)\">\n            <summary>\n            Initializes this instance with a pointer from a temporary object and set the pointer of the temporary  \n            object to IntPtr.Zero.\n            </summary>\n            <param name=\"temp\">The instance to get the NativePointer.</param>\n        </member>\n        <member name=\"M:SharpDX.CppObject.NativePointerUpdating\">\n            <summary>\n            Method called when <see cref=\"P:SharpDX.CppObject.NativePointer\"/> is going to be update.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.CppObject.NativePointerUpdated(System.IntPtr)\">\n            <summary>\n            Method called when the <see cref=\"P:SharpDX.CppObject.NativePointer\"/> is updated.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.CppObject.FromPointer``1(System.IntPtr)\">\n            <summary>\n            Instantiate a ComObject from a native pointer.\n            </summary>\n            <typeparam name=\"T\">The ComObject class that will be returned</typeparam>\n            <param name=\"comObjectPtr\">The native pointer to a com object.</param>\n            <returns>An instance of T binded to the native pointer</returns>\n        </member>\n        <member name=\"P:SharpDX.CppObject.Tag\">\n            <summary>\n            Gets or sets a custom user tag object to associate with this instance..\n            </summary>\n            <value>The tag object.</value>\n        </member>\n        <member name=\"P:SharpDX.CppObject.NativePointer\">\n            <summary>\n              Get a pointer to the underlying Cpp Object\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.IUnknown\">\n            <summary>\n            Base interface for Component Object Model (COM).\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.IUnknown.QueryInterface(System.Guid@,System.IntPtr@)\">\n            <summary>\n            Queries the supported COM interface on this instance.\n            </summary>\n            <param name=\"guid\">The guid of the interface.</param>\n            <param name=\"comObject\">The output COM object reference.</param>\n            <returns>If successfull, <see cref=\"F:SharpDX.Result.Ok\"/> </returns>\n        </member>\n        <member name=\"M:SharpDX.IUnknown.AddReference\">\n            <summary>\n            Increments the reference count for an interface on this instance.\n            </summary>\n            <returns>The method returns the new reference count.</returns>\n        </member>\n        <member name=\"M:SharpDX.IUnknown.Release\">\n            <summary>\n            Decrements the reference count for an interface on this instance.\n            </summary>\n            <returns>The method returns the new reference count.</returns>\n        </member>\n        <member name=\"M:SharpDX.ComObject.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.ComObject\"/> class.\n            </summary>\n            <param name=\"pointer\">Pointer to Cpp Object</param>\n        </member>\n        <member name=\"M:SharpDX.ComObject.#ctor(System.Object)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.ComObject\"/> class from a IUnknown object.\n            </summary>\n            <param name=\"iunknowObject\">Reference to a IUnknown object</param>\n        </member>\n        <member name=\"M:SharpDX.ComObject.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.ComObject\"/> class.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.ComObject.QueryInterface(System.Guid,System.IntPtr@)\">\n            <summary>\n            Query this instance for a particular COM GUID/interface support.\n            </summary>\n            <param name=\"guid\">GUID query interface</param>\n            <param name=\"outPtr\">output object associated with this GUID, IntPtr.Zero in interface is not supported</param>\n            <exception cref=\"T:SharpDX.SharpDXException\">If this object doesn't support the interface</exception>\n            <msdn-id>ms682521</msdn-id>\n            <unmanaged>IUnknown::QueryInterface</unmanaged>\t\n            <unmanaged-short>IUnknown::QueryInterface</unmanaged-short>\n        </member>\n        <member name=\"M:SharpDX.ComObject.QueryInterfaceOrNull(System.Guid)\">\n            <summary>\n              Query instance for a particular COM GUID/interface support.\n            </summary>\n            <param name=\"guid\">GUID query interface</param>\n            <exception cref=\"T:SharpDX.SharpDXException\">If this object doesn't support the interface</exception>\n            <msdn-id>ms682521</msdn-id>\n            <unmanaged>IUnknown::QueryInterface</unmanaged>\t\n            <unmanaged-short>IUnknown::QueryInterface</unmanaged-short>\n        </member>\n        <member name=\"M:SharpDX.ComObject.QueryInterface``1\">\n            <summary>\n             Query this instance for a particular COM interface support.\n            </summary>\n            <typeparam name=\"T\">The type of the COM interface to query</typeparam>\n            <returns>An instance of the queried interface</returns>\n             <exception cref=\"T:SharpDX.SharpDXException\">If this object doesn't support the interface</exception>\n             <msdn-id>ms682521</msdn-id>\n             <unmanaged>IUnknown::QueryInterface</unmanaged>\t\n             <unmanaged-short>IUnknown::QueryInterface</unmanaged-short>\n        </member>\n        <member name=\"M:SharpDX.ComObject.QueryInterfaceUnsafe``1\">\n            <summary>\n             Query this instance for a particular COM interface support.\n            </summary>\n            <typeparam name=\"T\">The type of the COM interface to query</typeparam>\n            <returns>An instance of the queried interface</returns>\n             <exception cref=\"T:SharpDX.SharpDXException\">If this object doesn't support the interface</exception>\n             <msdn-id>ms682521</msdn-id>\n             <unmanaged>IUnknown::QueryInterface</unmanaged>\t\n             <unmanaged-short>IUnknown::QueryInterface</unmanaged-short>\n        </member>\n        <member name=\"M:SharpDX.ComObject.As``1(System.Object)\">\n             <summary>\n             Queries a managed object for a particular COM interface support (This method is a shortcut to <see cref=\"M:SharpDX.ComObject.QueryInterface(System.Guid,System.IntPtr@)\"/>)\n             </summary>\n            <typeparam name=\"T\">The type of the COM interface to query</typeparam>\n             <param name=\"comObject\">The managed COM object.</param>\n            <returns>An instance of the queried interface</returns>\n             <msdn-id>ms682521</msdn-id>\n             <unmanaged>IUnknown::QueryInterface</unmanaged>\t\n             <unmanaged-short>IUnknown::QueryInterface</unmanaged-short>\n        </member>\n        <member name=\"M:SharpDX.ComObject.As``1(System.IntPtr)\">\n             <summary>\n             Queries a managed object for a particular COM interface support (This method is a shortcut to <see cref=\"M:SharpDX.ComObject.QueryInterface(System.Guid,System.IntPtr@)\"/>)\n             </summary>\n            <typeparam name=\"T\">The type of the COM interface to query</typeparam>\n             <param name=\"iunknownPtr\">The managed COM object.</param>\n            <returns>An instance of the queried interface</returns>\n             <msdn-id>ms682521</msdn-id>\n             <unmanaged>IUnknown::QueryInterface</unmanaged>\t\n             <unmanaged-short>IUnknown::QueryInterface</unmanaged-short>\n        </member>\n        <member name=\"M:SharpDX.ComObject.QueryInterface``1(System.Object)\">\n             <summary>\n             Queries a managed object for a particular COM interface support.\n             </summary>\n            <typeparam name=\"T\">The type of the COM interface to query</typeparam>\n             <param name=\"comObject\">The managed COM object.</param>\n            <returns>An instance of the queried interface</returns>\n             <msdn-id>ms682521</msdn-id>\n             <unmanaged>IUnknown::QueryInterface</unmanaged>\t\n             <unmanaged-short>IUnknown::QueryInterface</unmanaged-short>\n        </member>\n        <member name=\"M:SharpDX.ComObject.QueryInterfaceOrNull``1\">\n            <summary>\n             Query Interface for a particular interface support.\n            </summary>\n            <returns>An instance of the queried interface or null if it is not supported</returns>\n            <returns></returns>\n             <msdn-id>ms682521</msdn-id>\n             <unmanaged>IUnknown::QueryInterface</unmanaged>\t\n             <unmanaged-short>IUnknown::QueryInterface</unmanaged-short>\n        </member>\n        <member name=\"M:SharpDX.ComObject.op_Explicit(System.IntPtr)~SharpDX.ComObject\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.ComObject\"/>.\n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.ComObject.QueryInterfaceFrom``1(``0)\">\n            <summary>\n             Query Interface for a particular interface support and attach to the given instance.\n            </summary>\n            <typeparam name=\"T\"></typeparam>\n            <returns></returns>\n        </member>\n        <member name=\"M:SharpDX.ComObject.Dispose(System.Boolean)\">\n            <summary>\n            Releases unmanaged and - optionally - managed resources\n            </summary>\n            <param name=\"disposing\"><c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.</param>\n            <msdn-id>ms682317</msdn-id>\n            <unmanaged>IUnknown::Release</unmanaged>\t\n            <unmanaged-short>IUnknown::Release</unmanaged-short>\n        </member>\n        <member name=\"T:SharpDX.ComObjectCallback\">\n            <summary>\n            Base class for unmanaged callabackable Com object.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.ComObjectCallback.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.ComObject\"/> class.\n            </summary>\n            <param name=\"pointer\">Pointer to Cpp Object</param>\n        </member>\n        <member name=\"M:SharpDX.ComObjectCallback.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.ComObject\"/> class.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.ComObjectCallback.Shadow\">\n            <summary>\n            Implements <see cref=\"T:SharpDX.ICallbackable\"/> but it cannot not be set. \n            This is only used to support for interop with unmanaged callback.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.ComObjectShadow\">\n            <summary>\n            A COM Interface Callback\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.CppObjectShadow\">\n            <summary>\n            An Interface shadow callback\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.CppObjectShadow.Initialize(SharpDX.ICallbackable)\">\n            <summary>\n            Initializes the specified shadow instance from a vtbl and a callback.\n            </summary>\n            <param name=\"callbackInstance\">The callback.</param>\n        </member>\n        <member name=\"M:SharpDX.CppObjectShadow.ToIntPtr``1(SharpDX.ICallbackable)\">\n            <summary>\n            Return the unmanaged pointer from a tuple <see cref=\"T:SharpDX.CppObjectShadow\"/> and <see cref=\"T:SharpDX.ICallbackable\"/> instances.\n            </summary>\n            <typeparam name=\"TCallback\">The type of the callback.</typeparam>\n            <param name=\"callback\">The callback.</param>\n            <returns>A pointer to the unamanaged C++ object of the callback</returns>\n        </member>\n        <member name=\"P:SharpDX.CppObjectShadow.Callback\">\n            <summary>\n            Gets the callback.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.CppObjectShadow.GetVtbl\">\n            <summary>\n            Gets the VTBL associated with this shadow instance.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.CppObjectVtbl.#ctor(System.Int32)\">\n            <summary>\n            Default Constructor.\n            </summary>\n            <param name=\"numberOfCallbackMethods\">number of methods to allocate in the VTBL</param>\n        </member>\n        <member name=\"M:SharpDX.CppObjectVtbl.AddMethod(System.Delegate)\">\n            <summary>\n            Add a method supported by this interface. This method is typically called from inherited constructor.\n            </summary>\n            <param name=\"method\">the managed delegate method</param>\n        </member>\n        <member name=\"P:SharpDX.CppObjectVtbl.Pointer\">\n            <summary>\n            Gets the pointer to the vtbl.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.CompilationException\">\n            <summary>\n            A compilation exception.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.SharpDXException\">\n            <summary>\n              The base class for errors that occur in SharpDX.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.SharpDXException.#ctor\">\n            <summary>\n              Initializes a new instance of the <see cref = \"T:SharpDX.SharpDXException\" /> class.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.SharpDXException.#ctor(SharpDX.Result)\">\n            <summary>\n              Initializes a new instance of the <see cref = \"T:SharpDX.SharpDXException\" /> class.\n            </summary>\n            <param name = \"result\">The result code that caused this exception.</param>\n        </member>\n        <member name=\"M:SharpDX.SharpDXException.#ctor(SharpDX.ResultDescriptor)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.SharpDXException\"/> class.\n            </summary>\n            <param name=\"descriptor\">The result descriptor.</param>\n        </member>\n        <member name=\"M:SharpDX.SharpDXException.#ctor(SharpDX.Result,System.String)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.SharpDXException\"/> class.\n            </summary>\n            <param name=\"result\">The error result code.</param>\n            <param name=\"message\">The message describing the exception.</param>\n        </member>\n        <member name=\"M:SharpDX.SharpDXException.#ctor(SharpDX.Result,System.String,System.Object[])\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.SharpDXException\"/> class.\n            </summary>\n            <param name=\"result\">The error result code.</param>\n            <param name=\"message\">The message describing the exception.</param>\n            <param name=\"args\">formatting arguments</param>\n        </member>\n        <member name=\"M:SharpDX.SharpDXException.#ctor(System.String,System.Object[])\">\n            <summary>\n              Initializes a new instance of the <see cref = \"T:SharpDX.SharpDXException\" /> class.\n            </summary>\n            <param name = \"message\">The message describing the exception.</param>\n            <param name=\"args\">formatting arguments</param>\n        </member>\n        <member name=\"M:SharpDX.SharpDXException.#ctor(System.String,System.Exception,System.Object[])\">\n            <summary>\n              Initializes a new instance of the <see cref = \"T:SharpDX.SharpDXException\" /> class.\n            </summary>\n            <param name = \"message\">The message describing the exception.</param>\n            <param name = \"innerException\">The exception that caused this exception.</param>\n            <param name=\"args\">formatting arguments</param>\n        </member>\n        <member name=\"P:SharpDX.SharpDXException.ResultCode\">\n            <summary>\n              Gets the <see cref = \"T:SharpDX.Result\">Result code</see> for the exception. This value indicates\n              the specific type of failure that occured within SharpDX.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.SharpDXException.Descriptor\">\n            <summary>\n              Gets the <see cref = \"T:SharpDX.Result\">Result code</see> for the exception. This value indicates\n              the specific type of failure that occured within SharpDX.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.CompilationException.#ctor(System.String)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.CompilationException\"/> class.\n            </summary>\n            <param name=\"message\">The message.</param>\n        </member>\n        <member name=\"M:SharpDX.CompilationException.#ctor(SharpDX.Result,System.String)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.CompilationException\"/> class.\n            </summary>\n            <param name=\"errorCode\">The error code.</param>\n            <param name=\"message\">The message.</param>\n        </member>\n        <member name=\"T:SharpDX.Component\">\n            <summary>\n            A disposable component base class.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Component.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Component\"/> class.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Component.#ctor(System.String)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Component\"/> class with an immutable name.\n            </summary>\n            <param name=\"name\">The name.</param>\n        </member>\n        <member name=\"M:SharpDX.Component.Dispose\">\n            <summary>\n            Releases unmanaged and - optionally - managed resources\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Component.Dispose(System.Boolean)\">\n            <summary>\n            Disposes of object resources.\n            </summary>\n            <param name=\"disposeManagedResources\">If true, managed resources should be\n            disposed of in addition to unmanaged resources.</param>\n        </member>\n        <member name=\"M:SharpDX.Component.ToDispose``1(``0)\">\n            <summary>\n            Adds a disposable object to the list of the objects to dispose.\n            </summary>\n            <param name=\"toDisposeArg\">To dispose.</param>\n        </member>\n        <member name=\"M:SharpDX.Component.RemoveAndDispose``1(``0@)\">\n            <summary>\n            Dispose a disposable object and set the reference to null. Removes this object from the ToDispose list.\n            </summary>\n            <param name=\"objectToDispose\">Object to dispose.</param>\n        </member>\n        <member name=\"M:SharpDX.Component.RemoveToDispose``1(``0)\">\n            <summary>\n            Removes a disposable object to the list of the objects to dispose.\n            </summary>\n            <typeparam name=\"T\"></typeparam>\n            <param name=\"toDisposeArg\">To dispose.</param>\n        </member>\n        <member name=\"P:SharpDX.Component.DisposeCollector\">\n            <summary>\n            Gets or sets the disposables.\n            </summary>\n            <value>The disposables.</value>\n        </member>\n        <member name=\"P:SharpDX.Component.IsAttached\">\n            <summary>\n            Gets or sets a value indicating whether this instance is attached to a collector.\n            </summary>\n            <value>\n            \t<c>true</c> if this instance is attached to a collector; otherwise, <c>false</c>.\n            </value>\n        </member>\n        <member name=\"P:SharpDX.Component.IsDisposed\">\n            <summary>\n            Gets a value indicating whether this instance is disposed.\n            </summary>\n            <value>\n            \t<c>true</c> if this instance is disposed; otherwise, <c>false</c>.\n            </value>\n        </member>\n        <member name=\"E:SharpDX.Component.Disposing\">\n            <summary>\n            Occurs when when Dispose is called.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Configuration\">\n            <summary>\n            Global configuration.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Configuration.EnableObjectTracking\">\n            <summary>\n            Enables or disables object tracking. Default is disabled (false).\n            </summary>\n            <remarks>\n            Object Tracking is used to track COM object lifecycle creation/dispose. When this option is enabled\n            objects can be tracked using <see cref=\"T:SharpDX.Diagnostics.ObjectTracker\"/>. Using Object tracking has a significant\n            impact on performance and should be used only while debugging.\n            </remarks>\n        </member>\n        <member name=\"F:SharpDX.Configuration.EnableReleaseOnFinalizer\">\n            <summary>\n            Enables or disables release of ComObject on finalizer. Default is disabled (false).\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Configuration.ThrowOnShaderCompileError\">\n            <summary>\n            Throws a <see cref=\"T:SharpDX.CompilationException\"/> when a shader or effect compilation error occured. Default is enabled (true).\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.DataBox\">\n            <summary>\n            Provides access to data organized in 3D.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.DataBox.#ctor(System.IntPtr,System.Int32,System.Int32)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DataBox\"/> struct.\n            </summary>\n            <param name=\"datapointer\">The datapointer.</param>\n            <param name=\"rowPitch\">The row pitch.</param>\n            <param name=\"slicePitch\">The slice pitch.</param>\n        </member>\n        <member name=\"M:SharpDX.DataBox.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DataBox\"/> struct.\n            </summary>\n            <param name=\"dataPointer\">The data pointer.</param>\n        </member>\n        <member name=\"F:SharpDX.DataBox.DataPointer\">\n            <summary>\n            Pointer to the data.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DataBox.RowPitch\">\n            <summary>\n            Gets the number of bytes per row.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DataBox.SlicePitch\">\n            <summary>\n            Gets the number of bytes per slice (for a 3D texture, a slice is a 2D image)\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.DataRectangle\">\n            <summary>\n            Provides access to data organized in 2D.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.DataRectangle.#ctor(System.IntPtr,System.Int32)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DataRectangle\"/> class.\n            </summary>\n            <param name=\"dataPointer\">The data pointer.</param>\n            <param name=\"pitch\">The pitch.</param>\n        </member>\n        <member name=\"F:SharpDX.DataRectangle.DataPointer\">\n            <summary>\n            Pointer to the data.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.DataRectangle.Pitch\">\n            <summary>\n            Gets the number of bytes per row.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.DataStream\">\n            <summary>\n              Provides a stream interface to a buffer located in unmanaged memory.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.DataStream.#ctor(SharpDX.Direct3D.Blob)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DataStream\"/> class from a Blob buffer.\n            </summary>\n            <param name=\"buffer\">The buffer.</param>\n        </member>\n        <member name=\"M:SharpDX.DataStream.Create``1(``0[],System.Boolean,System.Boolean,System.Int32,System.Boolean)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.DataStream\"/> class, using a managed buffer as a backing store.\n            </summary>\n            <typeparam name=\"T\"></typeparam>\n            <param name=\"userBuffer\">A managed array to be used as a backing store.</param>\n            <param name=\"canRead\"><c>true</c> if reading from the buffer should be allowed; otherwise, <c>false</c>.</param>\n            <param name=\"canWrite\"><c>true</c> if writing to the buffer should be allowed; otherwise, <c>false</c>.</param>\n            <param name=\"index\">Index inside the buffer in terms of element count (not size in bytes).</param>\n            <param name=\"pinBuffer\">True to keep the managed buffer and pin it, false will allocate unmanaged memory and make a copy of it. Default is true.</param>\n            <returns></returns>\n        </member>\n        <member name=\"M:SharpDX.DataStream.#ctor(System.Int32,System.Boolean,System.Boolean)\">\n            <summary>\n              Initializes a new instance of the <see cref=\"T:SharpDX.DataStream\"/> class, and allocates a new buffer to use as a backing store.\n            </summary>\n            <param name=\"sizeInBytes\">The size of the buffer to be allocated, in bytes.</param>\n            <param name=\"canRead\">\n              <c>true</c> if reading from the buffer should be allowed; otherwise, <c>false</c>.</param>\n            <param name=\"canWrite\">\n              <c>true</c> if writing to the buffer should be allowed; otherwise, <c>false</c>.</param>\n        </member>\n        <member name=\"M:SharpDX.DataStream.#ctor(System.IntPtr,System.Int64,System.Boolean,System.Boolean)\">\n            <summary>\n              Initializes a new instance of the <see cref=\"T:SharpDX.DataStream\"/> class, using an unmanaged buffer as a backing store.\n            </summary>\n            <param name=\"userBuffer\">A pointer to the buffer to be used as a backing store.</param>\n            <param name=\"sizeInBytes\">The size of the buffer provided, in bytes.</param>\n            <param name=\"canRead\">\n              <c>true</c> if reading from the buffer should be allowed; otherwise, <c>false</c>.</param>\n            <param name=\"canWrite\">\n              <c>true</c> if writing to the buffer should be allowed; otherwise, <c>false</c>.</param>\n        </member>\n        <member name=\"M:SharpDX.DataStream.Dispose(System.Boolean)\">\n            <summary>\n            Releases unmanaged and - optionally - managed resources\n            </summary>\n            <param name=\"disposing\"><c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.</param>\n        </member>\n        <member name=\"M:SharpDX.DataStream.Flush\">\n            <summary>\n              Not supported.\n            </summary>\n            <exception cref = \"T:System.NotSupportedException\">Always thrown.</exception>\n        </member>\n        <member name=\"M:SharpDX.DataStream.Read``1\">\n            <summary>\n              Reads a single value from the current stream and advances the current\n              position within this stream by the number of bytes read.\n            </summary>\n            <remarks>\n            In order to provide faster read/write, this operation doesn't check stream bound. \n            A client must carefully not read/write above the size of this datastream.\n            </remarks>\n            <typeparam name = \"T\">The type of the value to be read from the stream.</typeparam>\n            <returns>The value that was read.</returns>\n            <exception cref = \"T:System.NotSupportedException\">This stream does not support reading.</exception>\n        </member>\n        <member name=\"M:SharpDX.DataStream.ReadFloat\">\n            <summary>\n            Reads a float.\n            </summary>\n            <remarks>\n            In order to provide faster read/write, this operation doesn't check stream bound. \n            A client must carefully not read/write above the size of this datastream.\n            </remarks>\n            <returns>a float from the stream</returns>\n        </member>\n        <member name=\"M:SharpDX.DataStream.ReadInt\">\n            <summary>\n            Reads a int.\n            </summary>\n            <remarks>\n            In order to provide faster read/write, this operation doesn't check stream bound. \n            A client must carefully not read/write above the size of this datastream.\n            </remarks>\n            <returns>an int from the stream</returns>\n        </member>\n        <member name=\"M:SharpDX.DataStream.ReadShort\">\n            <summary>\n            Reads a short.\n            </summary>\n            <remarks>\n            In order to provide faster read/write, this operation doesn't check stream bound. \n            A client must carefully not read/write above the size of this datastream.\n            </remarks>\n            <returns>an short from the stream</returns>\n        </member>\n        <member name=\"M:SharpDX.DataStream.ReadBoolean\">\n            <summary>\n            Reads a bool.\n            </summary>\n            <remarks>\n            In order to provide faster read/write, this operation doesn't check stream bound. \n            A client must carefully not read/write above the size of this datastream.\n            </remarks>\n            <returns>an bool from the stream</returns>\n        </member>\n        <member name=\"M:SharpDX.DataStream.ReadVector2\">\n            <summary>\n            Reads a Vector2.\n            </summary>\n            <remarks>\n            In order to provide faster read/write, this operation doesn't check stream bound. \n            A client must carefully not read/write above the size of this datastream.\n            </remarks>\n            <returns>an Vector2 from the stream</returns>\n        </member>\n        <member name=\"M:SharpDX.DataStream.ReadVector3\">\n            <summary>\n            Reads a Vector3.\n            </summary>\n            <remarks>\n            In order to provide faster read/write, this operation doesn't check stream bound. \n            A client must carefully not read/write above the size of this datastream.\n            </remarks>\n            <returns>an Vector3 from the stream</returns>\n        </member>\n        <member name=\"M:SharpDX.DataStream.ReadVector4\">\n            <summary>\n            Reads a Vector4.\n            </summary>\n            <remarks>\n            In order to provide faster read/write, this operation doesn't check stream bound. \n            A client must carefully not read/write above the size of this datastream.\n            </remarks>\n            <returns>an Vector4 from the stream</returns>\n        </member>\n        <member name=\"M:SharpDX.DataStream.ReadColor3\">\n            <summary>\n            Reads a Color3.\n            </summary>\n            <remarks>\n            In order to provide faster read/write, this operation doesn't check stream bound. \n            A client must carefully not read/write above the size of this datastream.\n            </remarks>\n            <returns>an Color3 from the stream</returns>\n        </member>\n        <member name=\"M:SharpDX.DataStream.ReadColor4\">\n            <summary>\n            Reads a Color4.\n            </summary>\n            <remarks>\n            In order to provide faster read/write, this operation doesn't check stream bound. \n            A client must carefully not read/write above the size of this datastream.\n            </remarks>\n            <returns>an Color4 from the stream</returns>\n        </member>\n        <member name=\"M:SharpDX.DataStream.ReadHalf\">\n            <summary>\n            Reads a Half.\n            </summary>\n            <remarks>\n            In order to provide faster read/write, this operation doesn't check stream bound. \n            A client must carefully not read/write above the size of this datastream.\n            </remarks>\n            <returns>an Half from the stream</returns>\n        </member>\n        <member name=\"M:SharpDX.DataStream.ReadHalf2\">\n            <summary>\n            Reads a Half2.\n            </summary>\n            <remarks>\n            In order to provide faster read/write, this operation doesn't check stream bound. \n            A client must carefully not read/write above the size of this datastream.\n            </remarks>\n            <returns>an Half2 from the stream</returns>\n        </member>\n        <member name=\"M:SharpDX.DataStream.ReadHalf3\">\n            <summary>\n            Reads a Half3.\n            </summary>\n            <remarks>\n            In order to provide faster read/write, this operation doesn't check stream bound. \n            A client must carefully not read/write above the size of this datastream.\n            </remarks>\n            <returns>an Half3 from the stream</returns>\n        </member>\n        <member name=\"M:SharpDX.DataStream.ReadHalf4\">\n            <summary>\n            Reads a Half4.\n            </summary>\n            <remarks>\n            In order to provide faster read/write, this operation doesn't check stream bound. \n            A client must carefully not read/write above the size of this datastream.\n            </remarks>\n            <returns>an Half4 from the stream</returns>\n        </member>\n        <member name=\"M:SharpDX.DataStream.ReadMatrix\">\n            <summary>\n            Reads a Matrix.\n            </summary>\n            <remarks>\n            In order to provide faster read/write, this operation doesn't check stream bound. \n            A client must carefully not read/write above the size of this datastream.\n            </remarks>\n            <returns>a Matrix from the stream</returns>\n        </member>\n        <member name=\"M:SharpDX.DataStream.ReadQuaternion\">\n            <summary>\n            Reads a Quaternion.\n            </summary>\n            <remarks>\n            In order to provide faster read/write, this operation doesn't check stream bound. \n            A client must carefully not read/write above the size of this datastream.\n            </remarks>\n            <returns>a Quaternion from the stream</returns>\n        </member>\n        <member name=\"M:SharpDX.DataStream.ReadByte\">\n            <inheritdoc/>\n        </member>\n        <member name=\"M:SharpDX.DataStream.Read(System.Byte[],System.Int32,System.Int32)\">\n            <summary>\n              Reads a sequence of bytes from the current stream and advances the position\n              within the stream by the number of bytes read.\n            </summary>\n            <remarks>\n            In order to provide faster read/write, this operation doesn't check stream bound. \n            A client must carefully not read/write above the size of this datastream.\n            </remarks>\n            <param name = \"buffer\">An array of values to be read from the stream.</param>\n            <param name = \"offset\">The zero-based byte offset in buffer at which to begin storing\n              the data read from the current stream.</param>\n            <param name = \"count\">The maximum number of bytes to be read from the current stream.</param>\n            <returns>The number of bytes read from the stream.</returns>\n            <exception cref = \"T:System.NotSupportedException\">This stream does not support reading.</exception>\n        </member>\n        <member name=\"M:SharpDX.DataStream.Read(System.IntPtr,System.Int32,System.Int32)\">\n            <summary>\n            Reads a sequence of bytes from the current stream and advances the current position within this stream by the number of bytes written.\n            </summary>\n            <param name=\"buffer\">An array of bytes. This method copies <paramref name=\"count\" /> bytes from <paramref name=\"buffer\" /> to the current stream.</param>\n            <param name=\"offset\">The zero-based byte offset in <paramref name=\"buffer\" /> at which to begin copying bytes to the current stream.</param>\n            <param name=\"count\">The number of bytes to be written to the current stream.</param>\n        </member>\n        <member name=\"M:SharpDX.DataStream.ReadRange``1(System.Int32)\">\n            <summary>\n              Reads an array of values from the current stream, and advances the current position\n              within this stream by the number of bytes written.\n            </summary>\n            <remarks>\n            In order to provide faster read/write, this operation doesn't check stream bound. \n            A client must carefully not read/write above the size of this datastream.\n            </remarks>\n            <typeparam name = \"T\">The type of the values to be read from the stream.</typeparam>\n            <returns>An array of values that was read from the current stream.</returns>\n        </member>\n        <member name=\"M:SharpDX.DataStream.ReadRange``1(``0[],System.Int32,System.Int32)\">\n            <summary>\n              Reads a sequence of elements from the current stream into a target buffer and\n              advances the position within the stream by the number of bytes read.\n            </summary>\n            <remarks>\n            In order to provide faster read/write, this operation doesn't check stream bound. \n            A client must carefully not read/write above the size of this datastream.\n            </remarks>\n            <param name = \"buffer\">An array of values to be read from the stream.</param>\n            <param name = \"offset\">The zero-based byte offset in buffer at which to begin storing\n              the data read from the current stream.</param>\n            <param name = \"count\">The number of values to be read from the current stream.</param>\n            <returns>The number of bytes read from the stream.</returns>\n            <exception cref = \"T:System.NotSupportedException\">This stream does not support reading.</exception>\n        </member>\n        <member name=\"M:SharpDX.DataStream.Seek(System.Int64,System.IO.SeekOrigin)\">\n            <summary>\n              Sets the position within the current stream.\n            </summary>\n            <exception cref = \"T:System.InvalidOperationException\">Attempted to seek outside of the bounds of the stream.</exception>\n        </member>\n        <member name=\"M:SharpDX.DataStream.SetLength(System.Int64)\">\n            <summary>\n              Not supported.\n            </summary>\n            <param name = \"value\">Always ignored.</param>\n            <exception cref = \"T:System.NotSupportedException\">Always thrown.</exception>\n        </member>\n        <member name=\"M:SharpDX.DataStream.Write``1(``0)\">\n            <summary>\n              Writes a single value to the stream, and advances the current position\n              within this stream by the number of bytes written.\n            </summary>\n            <remarks>\n            In order to provide faster read/write, this operation doesn't check stream bound. \n            A client must carefully not read/write above the size of this datastream.\n            </remarks>\n            <typeparam name = \"T\">The type of the value to be written to the stream.</typeparam>\n            <param name = \"value\">The value to write to the stream.</param>\n            <exception cref = \"T:System.NotSupportedException\">The stream does not support writing.</exception>\n        </member>\n        <member name=\"M:SharpDX.DataStream.Write(System.Single)\">\n            <summary>\n            Writes the specified value.\n            </summary>\n            <remarks>\n            In order to provide faster read/write, this operation doesn't check stream bound. \n            A client must carefully not read/write above the size of this datastream.\n            </remarks>\n            <param name=\"value\">The value.</param>\n        </member>\n        <member name=\"M:SharpDX.DataStream.Write(System.Int32)\">\n            <summary>\n            Writes the specified value.\n            </summary>\n            <remarks>\n            In order to provide faster read/write, this operation doesn't check stream bound. \n            A client must carefully not read/write above the size of this datastream.\n            </remarks>\n            <param name=\"value\">The value.</param>\n        </member>\n        <member name=\"M:SharpDX.DataStream.Write(System.Int16)\">\n            <summary>\n            Writes the specified value.\n            </summary>\n            <remarks>\n            In order to provide faster read/write, this operation doesn't check stream bound. \n            A client must carefully not read/write above the size of this datastream.\n            </remarks>\n            <param name=\"value\">The value.</param>\n        </member>\n        <member name=\"M:SharpDX.DataStream.Write(System.Boolean)\">\n            <summary>\n            Writes the specified value.\n            </summary>\n            <remarks>\n            In order to provide faster read/write, this operation doesn't check stream bound. \n            A client must carefully not read/write above the size of this datastream.\n            </remarks>\n            <param name=\"value\">The value.</param>\n        </member>\n        <member name=\"M:SharpDX.DataStream.Write(SharpDX.Vector2)\">\n            <summary>\n            Writes the specified value.\n            </summary>\n            <remarks>\n            In order to provide faster read/write, this operation doesn't check stream bound. \n            A client must carefully not read/write above the size of this datastream.\n            </remarks>\n            <param name=\"value\">The value.</param>\n        </member>\n        <member name=\"M:SharpDX.DataStream.Write(SharpDX.Vector3)\">\n            <summary>\n            Writes the specified value.\n            </summary>\n            <remarks>\n            In order to provide faster read/write, this operation doesn't check stream bound. \n            A client must carefully not read/write above the size of this datastream.\n            </remarks>\n            <param name=\"value\">The value.</param>\n        </member>\n        <member name=\"M:SharpDX.DataStream.Write(SharpDX.Vector4)\">\n            <summary>\n            Writes the specified value.\n            </summary>\n            <remarks>\n            In order to provide faster read/write, this operation doesn't check stream bound. \n            A client must carefully not read/write above the size of this datastream.\n            </remarks>\n            <param name=\"value\">The value.</param>\n        </member>\n        <member name=\"M:SharpDX.DataStream.Write(SharpDX.Color3)\">\n            <summary>\n            Writes the specified value.\n            </summary>\n            <remarks>\n            In order to provide faster read/write, this operation doesn't check stream bound. \n            A client must carefully not read/write above the size of this datastream.\n            </remarks>\n            <param name=\"value\">The value.</param>\n        </member>\n        <member name=\"M:SharpDX.DataStream.Write(SharpDX.Color4)\">\n            <summary>\n            Writes the specified value.\n            </summary>\n            <remarks>\n            In order to provide faster read/write, this operation doesn't check stream bound. \n            A client must carefully not read/write above the size of this datastream.\n            </remarks>\n            <param name=\"value\">The value.</param>\n        </member>\n        <member name=\"M:SharpDX.DataStream.Write(SharpDX.Half)\">\n            <summary>\n            Writes the specified value.\n            </summary>\n            <remarks>\n            In order to provide faster read/write, this operation doesn't check stream bound. \n            A client must carefully not read/write above the size of this datastream.\n            </remarks>\n            <param name=\"value\">The value.</param>\n        </member>\n        <member name=\"M:SharpDX.DataStream.Write(SharpDX.Half2)\">\n            <summary>\n            Writes the specified value.\n            </summary>\n            <remarks>\n            In order to provide faster read/write, this operation doesn't check stream bound. \n            A client must carefully not read/write above the size of this datastream.\n            </remarks>\n            <param name=\"value\">The value.</param>\n        </member>\n        <member name=\"M:SharpDX.DataStream.Write(SharpDX.Half3)\">\n            <summary>\n            Writes the specified value.\n            </summary>\n            <remarks>\n            In order to provide faster read/write, this operation doesn't check stream bound. \n            A client must carefully not read/write above the size of this datastream.\n            </remarks>\n            <param name=\"value\">The value.</param>\n        </member>\n        <member name=\"M:SharpDX.DataStream.Write(SharpDX.Half4)\">\n            <summary>\n            Writes the specified value.\n            </summary>\n            <remarks>\n            In order to provide faster read/write, this operation doesn't check stream bound. \n            A client must carefully not read/write above the size of this datastream.\n            </remarks>\n            <param name=\"value\">The value.</param>\n        </member>\n        <member name=\"M:SharpDX.DataStream.Write(SharpDX.Matrix)\">\n            <summary>\n            Writes the specified value.\n            </summary>\n            <remarks>\n            In order to provide faster read/write, this operation doesn't check stream bound. \n            A client must carefully not read/write above the size of this datastream.\n            </remarks>\n            <param name=\"value\">The value.</param>\n        </member>\n        <member name=\"M:SharpDX.DataStream.Write(SharpDX.Quaternion)\">\n            <summary>\n            Writes the specified value.\n            </summary>\n            <remarks>\n            In order to provide faster read/write, this operation doesn't check stream bound. \n            A client must carefully not read/write above the size of this datastream.\n            </remarks>\n            <param name=\"value\">The value.</param>\n        </member>\n        <member name=\"M:SharpDX.DataStream.Write(System.Byte[],System.Int32,System.Int32)\">\n            <summary>\n              Writes a sequence of bytes to the current stream and advances the current\n              position within this stream by the number of bytes written.\n            </summary>\n            <remarks>\n            In order to provide faster read/write, this operation doesn't check stream bound. \n            A client must carefully not read/write above the size of this datastream.\n            </remarks>\n            <param name = \"buffer\">An array of bytes. This method copies count bytes from buffer to the current stream.</param>\n            <param name = \"offset\">The zero-based byte offset in buffer at which to begin copying bytes to the current stream.</param>\n            <param name = \"count\">The number of bytes to be written to the current stream.</param>\n            <exception cref = \"T:System.NotSupportedException\">This stream does not support writing.</exception>\n        </member>\n        <member name=\"M:SharpDX.DataStream.Write(System.IntPtr,System.Int32,System.Int32)\">\n            <summary>\n            When overridden in a derived class, writes a sequence of bytes to the current stream and advances the current position within this stream by the number of bytes written.\n            </summary>\n            <param name=\"buffer\">An array of bytes. This method copies <paramref name=\"count\" /> bytes from <paramref name=\"buffer\" /> to the current stream.</param>\n            <param name=\"offset\">The zero-based byte offset in <paramref name=\"buffer\" /> at which to begin copying bytes to the current stream.</param>\n            <param name=\"count\">The number of bytes to be written to the current stream.</param>\n        </member>\n        <member name=\"M:SharpDX.DataStream.WriteRange``1(``0[])\">\n            <summary>\n              Writes an array of values to the current stream, and advances the current position\n              within this stream by the number of bytes written.\n            </summary>\n            <remarks>\n            In order to provide faster read/write, this operation doesn't check stream bound. \n            A client must carefully not read/write above the size of this datastream.\n            </remarks>\n            <param name = \"data\">An array of values to be written to the current stream.</param>\n            <exception cref = \"T:System.NotSupportedException\">This stream does not support writing.</exception>\n        </member>\n        <member name=\"M:SharpDX.DataStream.WriteRange(System.IntPtr,System.Int64)\">\n            <summary>\n              Writes a range of bytes to the current stream, and advances the current position\n              within this stream by the number of bytes written.\n            </summary>\n            <remarks>\n            In order to provide faster read/write, this operation doesn't check stream bound. \n            A client must carefully not read/write above the size of this datastream.\n            </remarks>\n            <param name = \"source\">A pointer to the location to start copying from.</param>\n            <param name = \"count\">The number of bytes to copy from source to the current stream.</param>\n            <exception cref = \"T:System.NotSupportedException\">This stream does not support writing.</exception>\n        </member>\n        <member name=\"M:SharpDX.DataStream.WriteRange``1(``0[],System.Int32,System.Int32)\">\n            <summary>\n              Writes an array of values to the current stream, and advances the current position\n              within this stream by the number of bytes written.\n            </summary>\n            <remarks>\n            In order to provide faster read/write, this operation doesn't check stream bound. \n            A client must carefully not read/write above the size of this datastream.\n            </remarks>\n            <typeparam name = \"T\">The type of the values to be written to the stream.</typeparam>\n            <param name = \"data\">An array of values to be written to the stream.</param>\n            <param name = \"offset\">The zero-based offset in data at which to begin copying values to the current stream.</param>\n            <param name = \"count\">The number of values to be written to the current stream. If this is zero,\n              all of the contents <paramref name = \"data\" /> will be written.</param>\n            <exception cref = \"T:System.NotSupportedException\">This stream does not support writing.</exception>\n        </member>\n        <member name=\"M:SharpDX.DataStream.op_Implicit(SharpDX.DataStream)~SharpDX.DataPointer\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:SharpDX.DataStream\"/> to <see cref=\"T:SharpDX.DataPointer\"/>.\n            </summary>\n            <param name=\"from\">The from value.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"P:SharpDX.DataStream.CanRead\">\n            <summary>\n              Gets a value indicating whether the current stream supports reading.\n            </summary>\n            <value>\n              <c>true</c> if the stream supports reading; otherwise, <c>false</c>.</value>\n        </member>\n        <member name=\"P:SharpDX.DataStream.CanSeek\">\n            <summary>\n              Gets a value indicating whether the current stream supports seeking.\n            </summary>\n            <value>Always <c>true</c>.</value>\n        </member>\n        <member name=\"P:SharpDX.DataStream.CanWrite\">\n            <summary>\n              Gets a value indicating whether the current stream supports writing.\n            </summary>\n            <value>\n              <c>true</c> if the stream supports writing; otherwise, <c>false</c>.</value>\n        </member>\n        <member name=\"P:SharpDX.DataStream.DataPointer\">\n            <summary>\n              Gets the internal pointer to the current stream's backing store.\n            </summary>\n            <value>An IntPtr to the buffer being used as a backing store.</value>\n        </member>\n        <member name=\"P:SharpDX.DataStream.Length\">\n            <summary>\n              Gets the length in bytes of the stream.\n            </summary>\n            <value>A long value representing the length of the stream in bytes.</value>\n        </member>\n        <member name=\"P:SharpDX.DataStream.Position\">\n            <summary>\n              Gets or sets the position within the current stream.\n            </summary>\n            <value>The current position within the stream.</value>\n            <seealso cref = \"T:System.IO.Stream\">Stream Class</seealso>\n        </member>\n        <member name=\"P:SharpDX.DataStream.PositionPointer\">\n            <summary>\n            Gets the position pointer.\n            </summary>\n            <value>The position pointer.</value>\n        </member>\n        <member name=\"P:SharpDX.DataStream.RemainingLength\">\n            <summary>\n            Gets the length of the remaining.\n            </summary>\n            <value>The length of the remaining.</value>\n        </member>\n        <member name=\"T:SharpDX.DataBuffer\">\n            <summary>\n            Provides methods to perform fast read/write random access data on a buffer located in an unmanaged memory.\n            </summary>\n            <remarks>\n            This class doesn't validate the position read/write from. It is the responsability of the client of this class\n            to verify that access is done within the size of the buffer.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.DataBuffer.Create``1(``0[],System.Int32,System.Boolean)\">\n            <summary>\n            Creates the specified user buffer.\n            </summary>\n            <typeparam name=\"T\">Type of the buffer.</typeparam>\n            <param name=\"userBuffer\">The buffer to use as a DataBuffer.</param>\n            <param name=\"index\">Index inside the buffer in terms of element count (not size in bytes).</param>\n            <param name=\"pinBuffer\">True to keep the managed buffer and pin it, false will allocate unmanaged memory and make a copy of it. Default is true.</param>\n            <returns>An instance of a DataBuffer</returns>\n        </member>\n        <member name=\"M:SharpDX.DataBuffer.#ctor(System.Int32)\">\n            <summary>\n              Initializes a new instance of the <see cref=\"T:SharpDX.DataBuffer\"/> class, and allocates a new buffer to use as a backing store.\n            </summary>\n            <param name=\"sizeInBytes\">The size of the buffer to be allocated, in bytes.</param>\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">\n              <paramref name=\"sizeInBytes\"/> is less than 1.</exception>\n        </member>\n        <member name=\"M:SharpDX.DataBuffer.#ctor(System.IntPtr,System.Int32)\">\n            <summary>\n              Initializes a new instance of the <see cref=\"T:SharpDX.DataBuffer\"/> class, using an unmanaged buffer as a backing store.\n            </summary>\n            <param name=\"userBuffer\">A pointer to the buffer to be used as a backing store.</param>\n            <param name=\"sizeInBytes\">The size of the buffer provided, in bytes.</param>\n        </member>\n        <member name=\"M:SharpDX.DataBuffer.Dispose(System.Boolean)\">\n            <summary>\n            Releases unmanaged and - optionally - managed resources\n            </summary>\n            <param name=\"disposing\"><c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.</param>\n        </member>\n        <member name=\"M:SharpDX.DataBuffer.Clear(System.Byte)\">\n            <summary>\n            Clears the buffer.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.DataBuffer.Get``1(System.Int32)\">\n            <summary>\n              Gets a single value from the current buffer at the specified position.\n            </summary>\n            <param name=\"positionInBytes\">Relative position in bytes from the beginning of the buffer to get the data from.</param>\n            <typeparam name = \"T\">The type of the value to be read from the buffer.</typeparam>\n            <returns>The value that was read.</returns>\n        </member>\n        <member name=\"M:SharpDX.DataBuffer.GetFloat(System.Int32)\">\n            <summary>\n            Gets a float.\n            </summary>\n            <param name=\"positionInBytes\">Relative position in bytes from the beginning of the buffer to get the data from.</param>\n            <returns>a float from the buffer</returns>\n        </member>\n        <member name=\"M:SharpDX.DataBuffer.GetInt(System.Int32)\">\n            <summary>\n            Gets a int.\n            </summary>\n            <param name=\"positionInBytes\">Relative position in bytes from the beginning of the buffer to get the data from.</param>\n            <returns>an int from the buffer</returns>\n        </member>\n        <member name=\"M:SharpDX.DataBuffer.GetShort(System.Int32)\">\n            <summary>\n            Gets a short.\n            </summary>\n            <param name=\"positionInBytes\">Relative position in bytes from the beginning of the buffer to get the data from.</param>\n            <returns>an short from the buffer</returns>\n        </member>\n        <member name=\"M:SharpDX.DataBuffer.GetBoolean(System.Int32)\">\n            <summary>\n            Gets a bool.\n            </summary>\n            <param name=\"positionInBytes\">Relative position in bytes from the beginning of the buffer to get the data from.</param>\n            <returns>an bool from the buffer</returns>\n        </member>\n        <member name=\"M:SharpDX.DataBuffer.GetVector2(System.Int32)\">\n            <summary>\n            Gets a Vector2.\n            </summary>\n            <param name=\"positionInBytes\">Relative position in bytes from the beginning of the buffer to get the data from.</param>\n            <returns>an Vector2 from the buffer</returns>\n        </member>\n        <member name=\"M:SharpDX.DataBuffer.GetVector3(System.Int32)\">\n            <summary>\n            Gets a Vector3.\n            </summary>\n            <param name=\"positionInBytes\">Relative position in bytes from the beginning of the buffer to get the data from.</param>\n            <returns>an Vector3 from the buffer</returns>\n        </member>\n        <member name=\"M:SharpDX.DataBuffer.GetVector4(System.Int32)\">\n            <summary>\n            Gets a Vector4.\n            </summary>\n            <param name=\"positionInBytes\">Relative position in bytes from the beginning of the buffer to get the data from.</param>\n            <returns>an Vector4 from the buffer</returns>\n        </member>\n        <member name=\"M:SharpDX.DataBuffer.GetColor3(System.Int32)\">\n            <summary>\n            Gets a Color3.\n            </summary>\n            <param name=\"positionInBytes\">Relative position in bytes from the beginning of the buffer to get the data from.</param>\n            <returns>an Color3 from the buffer</returns>\n        </member>\n        <member name=\"M:SharpDX.DataBuffer.GetColor4(System.Int32)\">\n            <summary>\n            Gets a Color4.\n            </summary>\n            <param name=\"positionInBytes\">Relative position in bytes from the beginning of the buffer to get the data from.</param>\n            <returns>an Color4 from the buffer</returns>\n        </member>\n        <member name=\"M:SharpDX.DataBuffer.GetHalf(System.Int32)\">\n            <summary>\n            Gets a Half.\n            </summary>\n            <param name=\"positionInBytes\">Relative position in bytes from the beginning of the buffer to get the data from.</param>\n            <returns>an Half from the buffer</returns>\n        </member>\n        <member name=\"M:SharpDX.DataBuffer.GetHalf2(System.Int32)\">\n            <summary>\n            Gets a Half2.\n            </summary>\n            <param name=\"positionInBytes\">Relative position in bytes from the beginning of the buffer to get the data from.</param>\n            <returns>an Half2 from the buffer</returns>\n        </member>\n        <member name=\"M:SharpDX.DataBuffer.GetHalf3(System.Int32)\">\n            <summary>\n            Gets a Half3.\n            </summary>\n            <param name=\"positionInBytes\">Relative position in bytes from the beginning of the buffer to get the data from.</param>\n            <returns>an Half3 from the buffer</returns>\n        </member>\n        <member name=\"M:SharpDX.DataBuffer.GetHalf4(System.Int32)\">\n            <summary>\n            Gets a Half4.\n            </summary>\n            <param name=\"positionInBytes\">Relative position in bytes from the beginning of the buffer to get the data from.</param>\n            <returns>an Half4 from the buffer</returns>\n        </member>\n        <member name=\"M:SharpDX.DataBuffer.GetMatrix(System.Int32)\">\n            <summary>\n            Gets a Matrix.\n            </summary>\n            <param name=\"positionInBytes\">Relative position in bytes from the beginning of the buffer to get the data from.</param>\n            <returns>a Matrix from the buffer</returns>\n        </member>\n        <member name=\"M:SharpDX.DataBuffer.GetQuaternion(System.Int32)\">\n            <summary>\n            Gets a Quaternion.\n            </summary>\n            <param name=\"positionInBytes\">Relative position in bytes from the beginning of the buffer to get the data from.</param>\n            <returns>a Quaternion from the buffer</returns>\n        </member>\n        <member name=\"M:SharpDX.DataBuffer.GetRange``1(System.Int32,System.Int32)\">\n            <summary>\n              Gets an array of values from a position in the buffer.\n            </summary>\n            <param name=\"positionInBytes\">Relative position in bytes from the beginning of the buffer to get the data from.</param>\n            <param name=\"count\">number of T instance to get from the positionInBytes</param>\n            <typeparam name = \"T\">The type of the values to be read from the buffer.</typeparam>\n            <returns>An array of values that was read from the current buffer.</returns>\n        </member>\n        <member name=\"M:SharpDX.DataBuffer.GetRange``1(System.Int32,``0[],System.Int32,System.Int32)\">\n            <summary>\n              Gets a sequence of elements from a position in the buffer into a target buffer.\n            </summary>\n            <param name=\"positionInBytes\">Relative position in bytes from the beginning of the buffer to get the data from.</param>\n            <param name = \"buffer\">An array of values to be read from the buffer.</param>\n            <param name = \"offset\">The zero-based byte offset in buffer at which to begin storing\n              the data read from the current buffer.</param>\n            <param name = \"count\">The number of values to be read from the current buffer.</param>\n        </member>\n        <member name=\"M:SharpDX.DataBuffer.Set``1(System.Int32,``0@)\">\n            <summary>\n              Sets a single value to the buffer at a specified position.\n            </summary>\n            <typeparam name = \"T\">The type of the value to be written to the buffer.</typeparam>\n            <param name=\"positionInBytes\">Relative position in bytes from the beginning of the buffer to set the data to.</param>\n            <param name = \"value\">The value to write to the buffer.</param>\n        </member>\n        <member name=\"M:SharpDX.DataBuffer.Set``1(System.Int32,``0)\">\n            <summary>\n              Sets a single value to the buffer at a specified position.\n            </summary>\n            <typeparam name = \"T\">The type of the value to be written to the buffer.</typeparam>\n            <param name=\"positionInBytes\">Relative position in bytes from the beginning of the buffer to set the data to.</param>\n            <param name = \"value\">The value to write to the buffer.</param>\n        </member>\n        <member name=\"M:SharpDX.DataBuffer.Set(System.Int32,System.Single)\">\n            <summary>\n            Sets the specified value.\n            </summary>\n            <param name=\"positionInBytes\">Relative position in bytes from the beginning of the buffer to set the data to.</param>\n            <param name=\"value\">The value.</param>\n        </member>\n        <member name=\"M:SharpDX.DataBuffer.Set(System.Int32,System.Int32)\">\n            <summary>\n            Sets the specified value.\n            </summary>\n            <param name=\"positionInBytes\">Relative position in bytes from the beginning of the buffer to set the data to.</param>\n            <param name=\"value\">The value.</param>\n        </member>\n        <member name=\"M:SharpDX.DataBuffer.Set(System.Int32,System.Int16)\">\n            <summary>\n            Sets the specified value.\n            </summary>\n            <param name=\"positionInBytes\">Relative position in bytes from the beginning of the buffer to set the data to.</param>\n            <param name=\"value\">The value.</param>\n        </member>\n        <member name=\"M:SharpDX.DataBuffer.Set(System.Int32,System.Boolean)\">\n            <summary>\n            Sets the specified value.\n            </summary>\n            <param name=\"positionInBytes\">Relative position in bytes from the beginning of the buffer to set the data to.</param>\n            <param name=\"value\">The value.</param>\n        </member>\n        <member name=\"M:SharpDX.DataBuffer.Set(System.Int32,SharpDX.Vector2)\">\n            <summary>\n            Sets the specified value.\n            </summary>\n            <param name=\"positionInBytes\">Relative position in bytes from the beginning of the buffer to set the data to.</param>\n            <param name=\"value\">The value.</param>\n        </member>\n        <member name=\"M:SharpDX.DataBuffer.Set(System.Int32,SharpDX.Vector3)\">\n            <summary>\n            Sets the specified value.\n            </summary>\n            <param name=\"positionInBytes\">Relative position in bytes from the beginning of the buffer to set the data to.</param>\n            <param name=\"value\">The value.</param>\n        </member>\n        <member name=\"M:SharpDX.DataBuffer.Set(System.Int32,SharpDX.Vector4)\">\n            <summary>\n            Sets the specified value.\n            </summary>\n            <param name=\"positionInBytes\">Relative position in bytes from the beginning of the buffer to set the data to.</param>\n            <param name=\"value\">The value.</param>\n        </member>\n        <member name=\"M:SharpDX.DataBuffer.Set(System.Int32,SharpDX.Color3)\">\n            <summary>\n            Sets the specified value.\n            </summary>\n            <param name=\"positionInBytes\">Relative position in bytes from the beginning of the buffer to set the data to.</param>\n            <param name=\"value\">The value.</param>\n        </member>\n        <member name=\"M:SharpDX.DataBuffer.Set(System.Int32,SharpDX.Color4)\">\n            <summary>\n            Sets the specified value.\n            </summary>\n            <param name=\"positionInBytes\">Relative position in bytes from the beginning of the buffer to set the data to.</param>\n            <param name=\"value\">The value.</param>\n        </member>\n        <member name=\"M:SharpDX.DataBuffer.Set(System.Int32,SharpDX.Half)\">\n            <summary>\n            Sets the specified value.\n            </summary>\n            <param name=\"positionInBytes\">Relative position in bytes from the beginning of the buffer to set the data to.</param>\n            <param name=\"value\">The value.</param>\n        </member>\n        <member name=\"M:SharpDX.DataBuffer.Set(System.Int32,SharpDX.Half2)\">\n            <summary>\n            Sets the specified value.\n            </summary>\n            <param name=\"positionInBytes\">Relative position in bytes from the beginning of the buffer to set the data to.</param>\n            <param name=\"value\">The value.</param>\n        </member>\n        <member name=\"M:SharpDX.DataBuffer.Set(System.Int32,SharpDX.Half3)\">\n            <summary>\n            Sets the specified value.\n            </summary>\n            <param name=\"positionInBytes\">Relative position in bytes from the beginning of the buffer to set the data to.</param>\n            <param name=\"value\">The value.</param>\n        </member>\n        <member name=\"M:SharpDX.DataBuffer.Set(System.Int32,SharpDX.Half4)\">\n            <summary>\n            Sets the specified value.\n            </summary>\n            <param name=\"positionInBytes\">Relative position in bytes from the beginning of the buffer to set the data to.</param>\n            <param name=\"value\">The value.</param>\n        </member>\n        <member name=\"M:SharpDX.DataBuffer.Set(System.Int32,SharpDX.Matrix)\">\n            <summary>\n            Sets the specified value.\n            </summary>\n            <param name=\"positionInBytes\">Relative position in bytes from the beginning of the buffer to set the data to.</param>\n            <param name=\"value\">The value.</param>\n        </member>\n        <member name=\"M:SharpDX.DataBuffer.Set(System.Int32,SharpDX.Quaternion)\">\n            <summary>\n            Sets the specified value.\n            </summary>\n            <param name=\"positionInBytes\">Relative position in bytes from the beginning of the buffer to set the data to.</param>\n            <param name=\"value\">The value.</param>\n        </member>\n        <member name=\"M:SharpDX.DataBuffer.Set``1(System.Int32,``0[])\">\n            <summary>\n              Sets an array of values to a specified position into the buffer.\n            </summary>\n            <param name=\"positionInBytes\">Relative position in bytes from the beginning of the buffer to set the data to.</param>\n            <param name = \"data\">An array of values to be written to the current buffer.</param>\n        </member>\n        <member name=\"M:SharpDX.DataBuffer.Set(System.Int32,System.IntPtr,System.Int64)\">\n            <summary>\n              Sets a range of data to a specified position into the buffer.\n            </summary>\n            <param name=\"positionInBytes\">Relative position in bytes from the beginning of the buffer to set the data to.</param>\n            <param name = \"source\">A pointer to the location to start copying from.</param>\n            <param name = \"count\">The number of bytes to copy from source to the current buffer.</param>\n        </member>\n        <member name=\"M:SharpDX.DataBuffer.Set``1(System.Int32,``0[],System.Int32,System.Int32)\">\n            <summary>\n              Sets an array of values to a specified position into the buffer.\n            </summary>\n            <typeparam name = \"T\">The type of the values to be written to the buffer.</typeparam>\n            <param name=\"positionInBytes\">Relative position in bytes from the beginning of the buffer to set the data to.</param>\n            <param name = \"data\">An array of values to be written to the buffer.</param>\n            <param name = \"offset\">The zero-based offset in data at which to begin copying values to the current buffer.</param>\n            <param name = \"count\">The number of values to be written to the current buffer. If this is zero,\n              all of the contents <paramref name = \"data\" /> will be written.</param>\n        </member>\n        <member name=\"M:SharpDX.DataBuffer.op_Implicit(SharpDX.DataBuffer)~SharpDX.DataPointer\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:SharpDX.DataBuffer\"/> to <see cref=\"T:SharpDX.DataPointer\"/>.\n            </summary>\n            <param name=\"from\">The from value.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"P:SharpDX.DataBuffer.DataPointer\">\n            <summary>\n              Gets a pointer to the buffer used as a backing store..\n            </summary>\n            <value>An IntPtr to the buffer being used as a backing store.</value>\n        </member>\n        <member name=\"P:SharpDX.DataBuffer.Size\">\n            <summary>\n              Gets the length in bytes of the buffer.\n            </summary>\n            <value>A long value representing the length of the buffer in bytes.</value>\n        </member>\n        <member name=\"T:SharpDX.Design.Half2Converter\">\n            <summary>\n              Provides a type converter to convert <see cref = \"T:SharpDX.Half2\" /> objects to and from various \n              other representations.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Design.Half2Converter.#ctor\">\n            <summary>\n              Initializes a new instance of the <see cref = \"T:SharpDX.Design.Half2Converter\" /> class.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Design.Half2Converter.CanConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Type)\">\n            <summary>\n              Returns whether this converter can convert an object of the given type to the type of this converter, using the specified context.\n            </summary>\n            <param name = \"context\">A <see cref = \"T:System.ComponentModel.ITypeDescriptorContext\" /> that provides a format context.</param>\n            <param name = \"sourceType\">A System::Type that represents the type you want to convert from.</param>\n            <returns>\n              <c>true</c> if this converter can perform the conversion; otherwise, <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Design.Half2Converter.CanConvertTo(System.ComponentModel.ITypeDescriptorContext,System.Type)\">\n            <summary>\n              Returns whether this converter can convert the object to the specified type, using the specified context.\n            </summary>\n            <param name = \"context\">A <see cref = \"T:System.ComponentModel.ITypeDescriptorContext\" /> that provides a format context.</param>\n            <param name = \"destinationType\">A <see cref = \"T:System.Type\" /> that represents the type you want to convert to.</param>\n            <returns>\n              <c>true</c> if this converter can perform the conversion; otherwise, <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Design.Half2Converter.ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object)\">\n            <summary>\n              Converts the given object to the type of this converter, using the specified context and culture information.\n            </summary>\n            <param name = \"context\">A <see cref = \"T:System.ComponentModel.ITypeDescriptorContext\" /> that provides a format context.</param>\n            <param name = \"culture\">A <see cref = \"T:System.Globalization.CultureInfo\" />. If <c>null</c> is passed, the current culture is assumed.</param>\n            <param name = \"value\">The <see cref = \"T:System.Object\" /> to convert.</param>\n            <returns>An <see cref = \"T:System.Object\" /> that represents the converted value.</returns>\n        </member>\n        <member name=\"M:SharpDX.Design.Half2Converter.ConvertTo(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type)\">\n            <summary>\n              Converts the given value object to the specified type, using the specified context and culture information.\n            </summary>\n            <param name = \"context\">A <see cref = \"T:System.ComponentModel.ITypeDescriptorContext\" /> that provides a format context.</param>\n            <param name = \"culture\">A <see cref = \"T:System.Globalization.CultureInfo\" />. If <c>null</c> is passed, the current culture is assumed.</param>\n            <param name = \"value\">The <see cref = \"T:System.Object\" /> to convert.</param>\n            <param name = \"destinationType\">A <see cref = \"T:System.Type\" /> that represents the type you want to convert to.</param>\n            <returns>An <see cref = \"T:System.Object\" /> that represents the converted value.</returns>\n        </member>\n        <member name=\"M:SharpDX.Design.Half2Converter.CreateInstance(System.ComponentModel.ITypeDescriptorContext,System.Collections.IDictionary)\">\n            <summary>\n              Creates an instance of the type that this <see cref = \"T:System.ComponentModel.TypeConverter\" /> is associated with, using the specified context, given a set of property values for the object.\n            </summary>\n            <param name = \"context\">A <see cref = \"T:System.ComponentModel.ITypeDescriptorContext\" /> that provides a format context.</param>\n            <param name = \"propertyValues\">An <see cref = \"T:System.Collections.IDictionary\" /> of new property values.</param>\n            <returns>An <see cref = \"T:System.Object\" /> representing the given <see cref = \"T:System.Collections.IDictionary\" />, or <c>null</c> if the object cannot be created.</returns>\n        </member>\n        <member name=\"M:SharpDX.Design.Half2Converter.GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)\">\n            <summary>\n              Returns whether changing a value on this object requires a call to <c>System::ComponentModel::TypeConverter::CreateInstance(System::Collections::IDictionary^)</c>\n              to create a new value, using the specified context.\n            </summary>\n            <param name = \"context\">A <see cref = \"T:System.ComponentModel.ITypeDescriptorContext\" /> that provides a format context.</param>\n            <returns>\n              <c>false</c> if changing a property on this object requires a call to <c>System::ComponentModel::TypeConverter::CreateInstance(System::Collections::IDictionary^)</c> to create a new value; otherwise, <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Design.Half2Converter.GetProperties(System.ComponentModel.ITypeDescriptorContext,System.Object,System.Attribute[])\">\n            <summary>\n              Creates an instance of the type that this <see cref = \"T:System.ComponentModel.TypeConverter\" /> is associated with, using the specified context, given a set of property values for the object.\n            </summary>\n            <param name = \"context\">A <see cref = \"T:System.ComponentModel.ITypeDescriptorContext\" /> that provides a format context.</param>\n            <param name = \"value\">An <see cref = \"T:System.Object\" /> that specifies the type of array for which to get properties. </param>\n            <param name = \"attributes\">An array of type <see cref = \"T:System.Attribute\" /> that is used as a filter.</param>\n            <returns>A <see cref = \"T:System.ComponentModel.PropertyDescriptorCollection\" /> with the properties that are exposed for this data type, or a null reference (<c>Nothing</c> in Visual Basic) if there are no properties.</returns>\n        </member>\n        <member name=\"M:SharpDX.Design.Half2Converter.GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)\">\n            <summary>\n              Returns whether this object supports properties, using the specified context.\n            </summary>\n            <param name = \"context\">A <see cref = \"T:System.ComponentModel.ITypeDescriptorContext\" /> that provides a format context.</param>\n            <returns>\n              <c>true</c> if GetProperties should be called to find the properties of this object; otherwise, <c>false</c>.</returns>\n        </member>\n        <member name=\"T:SharpDX.Design.Half3Converter\">\n            <summary>\n              Provides a type converter to convert <see cref = \"T:SharpDX.Half3\" /> objects to and from various \n              other representations.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Design.Half3Converter.#ctor\">\n            <summary>\n              Initializes a new instance of the <see cref = \"T:SharpDX.Design.Half3Converter\" /> class.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Design.Half3Converter.CanConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Type)\">\n            <summary>\n              Returns whether this converter can convert an object of the given type to the type of this converter, using the specified context.\n            </summary>\n            <param name = \"context\">A <see cref = \"T:System.ComponentModel.ITypeDescriptorContext\" /> that provides a format context.</param>\n            <param name = \"sourceType\">A System.Type that represents the type you want to convert from.</param>\n            <returns>\n              <c>true</c> if this converter can perform the conversion; otherwise, <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Design.Half3Converter.CanConvertTo(System.ComponentModel.ITypeDescriptorContext,System.Type)\">\n            <summary>\n              Returns whether this converter can convert the object to the specified type, using the specified context.\n            </summary>\n            <param name = \"context\">A <see cref = \"T:System.ComponentModel.ITypeDescriptorContext\" /> that provides a format context.</param>\n            <param name = \"destinationType\">A <see cref = \"T:System.Type\" /> that represents the type you want to convert to.</param>\n            <returns>\n              <c>true</c> if this converter can perform the conversion; otherwise, <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Design.Half3Converter.ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object)\">\n            <summary>\n              Converts the given object to the type of this converter, using the specified context and culture information.\n            </summary>\n            <param name = \"context\">A <see cref = \"T:System.ComponentModel.ITypeDescriptorContext\" /> that provides a format context.</param>\n            <param name = \"culture\">A <see cref = \"T:System.Globalization.CultureInfo\" />. If <c>null</c> is passed, the current culture is assumed.</param>\n            <param name = \"value\">The <see cref = \"T:System.Object\" /> to convert.</param>\n            <returns>An <see cref = \"T:System.Object\" /> that represents the converted value.</returns>\n        </member>\n        <member name=\"M:SharpDX.Design.Half3Converter.ConvertTo(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type)\">\n            <summary>\n              Converts the given value object to the specified type, using the specified context and culture information.\n            </summary>\n            <param name = \"context\">A <see cref = \"T:System.ComponentModel.ITypeDescriptorContext\" /> that provides a format context.</param>\n            <param name = \"culture\">A <see cref = \"T:System.Globalization.CultureInfo\" />. If <c>null</c> is passed, the current culture is assumed.</param>\n            <param name = \"value\">The <see cref = \"T:System.Object\" /> to convert.</param>\n            <param name = \"destinationType\">A <see cref = \"T:System.Type\" /> that represents the type you want to convert to.</param>\n            <returns>An <see cref = \"T:System.Object\" /> that represents the converted value.</returns>\n        </member>\n        <member name=\"M:SharpDX.Design.Half3Converter.CreateInstance(System.ComponentModel.ITypeDescriptorContext,System.Collections.IDictionary)\">\n            <summary>\n              Creates an instance of the type that this <see cref = \"T:System.ComponentModel.TypeConverter\" /> is associated with, using the specified context, given a set of property values for the object.\n            </summary>\n            <param name = \"context\">A <see cref = \"T:System.ComponentModel.ITypeDescriptorContext\" /> that provides a format context.</param>\n            <param name = \"propertyValues\">An <see cref = \"T:System.Collections.IDictionary\" /> of new property values.</param>\n            <returns>An <see cref = \"T:System.Object\" /> representing the given <see cref = \"T:System.Collections.IDictionary\" />, or <c>null</c> if the object cannot be created.</returns>\n        </member>\n        <member name=\"M:SharpDX.Design.Half3Converter.GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)\">\n            <summary>\n              Returns whether changing a value on this object requires a call to <c>System::ComponentModel::TypeConverter::CreateInstance(System::Collections::IDictionary^)</c>\n              to create a new value, using the specified context.\n            </summary>\n            <param name = \"context\">A <see cref = \"T:System.ComponentModel.ITypeDescriptorContext\" /> that provides a format context.</param>\n            <returns>\n              <c>false</c> if changing a property on this object requires a call to <c>System.ComponentModel::TypeConverter::CreateInstance(System::Collections::IDictionary^)</c> to create a new value; otherwise, <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Design.Half3Converter.GetProperties(System.ComponentModel.ITypeDescriptorContext,System.Object,System.Attribute[])\">\n            <summary>\n              Creates an instance of the type that this <see cref = \"T:System.ComponentModel.TypeConverter\" /> is associated with, using the specified context, given a set of property values for the object.\n            </summary>\n            <param name = \"context\">A <see cref = \"T:System.ComponentModel.ITypeDescriptorContext\" /> that provides a format context.</param>\n            <param name = \"value\">An <see cref = \"T:System.Object\" /> that specifies the type of array for which to get properties. </param>\n            <param name = \"attributes\">An array of type <see cref = \"T:System.Attribute\" /> that is used as a filter.</param>\n            <returns>A <see cref = \"T:System.ComponentModel.PropertyDescriptorCollection\" /> with the properties that are exposed for this data type, or a null reference (<c>Nothing</c> in Visual Basic) if there are no properties.</returns>\n        </member>\n        <member name=\"M:SharpDX.Design.Half3Converter.GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)\">\n            <summary>\n              Returns whether this object supports properties, using the specified context.\n            </summary>\n            <param name = \"context\">A <see cref = \"T:System.ComponentModel.ITypeDescriptorContext\" /> that provides a format context.</param>\n            <returns>\n              <c>true</c> if GetProperties should be called to find the properties of this object; otherwise, <c>false</c>.</returns>\n        </member>\n        <member name=\"T:SharpDX.Design.Half4Converter\">\n            <summary>\n              Provides a type converter to convert <see cref = \"T:SharpDX.Half4\" /> objects to and from various \n              other representations.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Design.Half4Converter.#ctor\">\n            <summary>\n              Initializes a new instance of the <see cref = \"T:SharpDX.Design.Half4Converter\" /> class.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Design.Half4Converter.CanConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Type)\">\n            <summary>\n              Returns whether this converter can convert an object of the given type to the type of this converter, using the specified context.\n            </summary>\n            <param name = \"context\">A <see cref = \"T:System.ComponentModel.ITypeDescriptorContext\" /> that provides a format context.</param>\n            <param name = \"sourceType\">A System::Type that represents the type you want to convert from.</param>\n            <returns>\n              <c>true</c> if this converter can perform the conversion; otherwise, <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Design.Half4Converter.CanConvertTo(System.ComponentModel.ITypeDescriptorContext,System.Type)\">\n            <summary>\n              Returns whether this converter can convert the object to the specified type, using the specified context.\n            </summary>\n            <param name = \"context\">A <see cref = \"T:System.ComponentModel.ITypeDescriptorContext\" /> that provides a format context.</param>\n            <param name = \"destinationType\">A <see cref = \"T:System.Type\" /> that represents the type you want to convert to.</param>\n            <returns>\n              <c>true</c> if this converter can perform the conversion; otherwise, <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Design.Half4Converter.ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object)\">\n            <summary>\n              Converts the given object to the type of this converter, using the specified context and culture information.\n            </summary>\n            <param name = \"context\">A <see cref = \"T:System.ComponentModel.ITypeDescriptorContext\" /> that provides a format context.</param>\n            <param name = \"culture\">A <see cref = \"T:System.Globalization.CultureInfo\" />. If <c>null</c> is passed, the current culture is assumed.</param>\n            <param name = \"value\">The <see cref = \"T:System.Object\" /> to convert.</param>\n            <returns>An <see cref = \"T:System.Object\" /> that represents the converted value.</returns>\n        </member>\n        <member name=\"M:SharpDX.Design.Half4Converter.ConvertTo(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type)\">\n            <summary>\n              Converts the given value object to the specified type, using the specified context and culture information.\n            </summary>\n            <param name = \"context\">A <see cref = \"T:System.ComponentModel.ITypeDescriptorContext\" /> that provides a format context.</param>\n            <param name = \"culture\">A <see cref = \"T:System.Globalization.CultureInfo\" />. If <c>null</c> is passed, the current culture is assumed.</param>\n            <param name = \"value\">The <see cref = \"T:System.Object\" /> to convert.</param>\n            <param name = \"destinationType\">A <see cref = \"T:System.Type\" /> that represents the type you want to convert to.</param>\n            <returns>An <see cref = \"T:System.Object\" /> that represents the converted value.</returns>\n        </member>\n        <member name=\"M:SharpDX.Design.Half4Converter.CreateInstance(System.ComponentModel.ITypeDescriptorContext,System.Collections.IDictionary)\">\n            <summary>\n              Creates an instance of the type that this <see cref = \"T:System.ComponentModel.TypeConverter\" /> is associated with, using the specified context, given a set of property values for the object.\n            </summary>\n            <param name = \"context\">A <see cref = \"T:System.ComponentModel.ITypeDescriptorContext\" /> that provides a format context.</param>\n            <param name = \"propertyValues\">An <see cref = \"T:System.Collections.IDictionary\" /> of new property values.</param>\n            <returns>An <see cref = \"T:System.Object\" /> representing the given <see cref = \"T:System.Collections.IDictionary\" />, or <c>null</c> if the object cannot be created.</returns>\n        </member>\n        <member name=\"M:SharpDX.Design.Half4Converter.GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)\">\n            <summary>\n              Returns whether changing a value on this object requires a call to <c>System::ComponentModel::TypeConverter::CreateInstance(System::Collections::IDictionary^)</c>\n              to create a new value, using the specified context.\n            </summary>\n            <param name = \"context\">A <see cref = \"T:System.ComponentModel.ITypeDescriptorContext\" /> that provides a format context.</param>\n            <returns>\n              <c>false</c> if changing a property on this object requires a call to <c>System::ComponentModel::TypeConverter::CreateInstance(System::Collections::IDictionary^)</c></returns>\n        </member>\n        <member name=\"M:SharpDX.Design.Half4Converter.GetProperties(System.ComponentModel.ITypeDescriptorContext,System.Object,System.Attribute[])\">\n            <summary>\n              Creates an instance of the type that this <see cref = \"T:System.ComponentModel.TypeConverter\" /> is associated with, using the specified context, given a set of property values for the object.\n            </summary>\n            <param name = \"context\">A <see cref = \"T:System.ComponentModel.ITypeDescriptorContext\" /> that provides a format context.</param>\n            <param name = \"value\">An <see cref = \"T:System.Object\" /> that specifies the type of array for which to get properties. </param>\n            <param name = \"attributes\">An array of type <see cref = \"T:System.Attribute\" /> that is used as a filter.</param>\n            <returns>A <see cref = \"T:System.ComponentModel.PropertyDescriptorCollection\" /> with the properties that are exposed for this data type, or a null reference (<c>Nothing</c> in Visual Basic) if there are no properties.</returns>\n        </member>\n        <member name=\"M:SharpDX.Design.Half4Converter.GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)\">\n            <summary>\n              Returns whether this object supports properties, using the specified context.\n            </summary>\n            <param name = \"context\">A <see cref = \"T:System.ComponentModel.ITypeDescriptorContext\" /> that provides a format context.</param>\n            <returns>\n              <c>true</c> if GetProperties should be called to find the properties of this object; otherwise, <c>false</c>.</returns>\n        </member>\n        <member name=\"T:SharpDX.Design.HalfConverter\">\n            <summary>\n            Provides a type converter to convert <see cref=\"T:SlimDX.Half\" /> objects to and from various \n            other representations.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Design.HalfConverter.CanConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Type)\">\n            <summary>\n            Returns whether this converter can convert an object of the given type to the type of this converter, using the specified context.\n            </summary>\n            <param name=\"context\">A <see cref=\"T:System.ComponentModel.ITypeDescriptorContext\" /> that provides a format context.</param>\n            <param name=\"sourceType\">A System::Type that represents the type you want to convert from.</param>\n            <returns>\n            <c>true</c> if this converter can perform the conversion; otherwise, <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Design.HalfConverter.CanConvertTo(System.ComponentModel.ITypeDescriptorContext,System.Type)\">\n            <summary>\n            Returns whether this converter can convert the object to the specified type, using the specified context.\n            </summary>\n            <param name=\"context\">A <see cref=\"T:System.ComponentModel.ITypeDescriptorContext\" /> that provides a format context.</param>\n            <param name=\"destinationType\">A <see cref=\"T:System.Type\" /> that represents the type you want to convert to.</param>\n            <returns>\n            <c>true</c> if this converter can perform the conversion; otherwise, <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Design.HalfConverter.ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object)\">\n            <summary>\n            Converts the given object to the type of this converter, using the specified context and culture information.\n            </summary>\n            <param name=\"context\">A <see cref=\"T:System.ComponentModel.ITypeDescriptorContext\" /> that provides a format context.</param>\n            <param name=\"culture\">A <see cref=\"T:System.Globalization.CultureInfo\" />. If <c>null</c> is passed, the current culture is assumed.</param>\n            <param name=\"value\">The <see cref=\"T:System.Object\" /> to convert.</param>\n            <returns>An <see cref=\"T:System.Object\" /> that represents the converted value.</returns>\n        </member>\n        <member name=\"M:SharpDX.Design.HalfConverter.ConvertTo(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type)\">\n            <summary>\n            Converts the given value object to the specified type, using the specified context and culture information.\n            </summary>\n            <param name=\"context\">A <see cref=\"T:System.ComponentModel.ITypeDescriptorContext\" /> that provides a format context.</param>\n            <param name=\"culture\">A <see cref=\"T:System.Globalization.CultureInfo\" />. If <c>null</c> is passed, the current culture is assumed.</param>\n            <param name=\"value\">The <see cref=\"T:System.Object\" /> to convert.</param>\n            <param name=\"destinationType\">A <see cref=\"T:System.Type\" /> that represents the type you want to convert to.</param>\n            <returns>An <see cref=\"T:System.Object\" /> that represents the converted value.</returns>\n        </member>\n        <member name=\"T:SharpDX.Design.MatrixConverter\">\n            <summary>\n            Defines a type converter for <see cref=\"T:SharpDX.Matrix\"/>.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Design.MatrixConverter.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Design.MatrixConverter\"/> class.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Design.MatrixConverter.ConvertTo(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type)\">\n            <summary>\n            Converts the given value object to the specified type, using the specified context and culture information.\n            </summary>\n            <param name=\"context\">An <see cref=\"T:System.ComponentModel.ITypeDescriptorContext\"/> that provides a format context.</param>\n            <param name=\"culture\">A <see cref=\"T:System.Globalization.CultureInfo\"/>. If null is passed, the current culture is assumed.</param>\n            <param name=\"value\">The <see cref=\"T:System.Object\"/> to convert.</param>\n            <param name=\"destinationType\">The <see cref=\"T:System.Type\"/> to convert the <paramref name=\"value\"/> parameter to.</param>\n            <returns>\n            An <see cref=\"T:System.Object\"/> that represents the converted value.\n            </returns>\n            <exception cref=\"T:System.ArgumentNullException\">\n            The <paramref name=\"destinationType\"/> parameter is null.\n            </exception>\n            <exception cref=\"T:System.NotSupportedException\">\n            The conversion cannot be performed.\n            </exception>\n        </member>\n        <member name=\"M:SharpDX.Design.MatrixConverter.ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object)\">\n            <summary>\n            Converts the given object to the type of this converter, using the specified context and culture information.\n            </summary>\n            <param name=\"context\">An <see cref=\"T:System.ComponentModel.ITypeDescriptorContext\"/> that provides a format context.</param>\n            <param name=\"culture\">The <see cref=\"T:System.Globalization.CultureInfo\"/> to use as the current culture.</param>\n            <param name=\"value\">The <see cref=\"T:System.Object\"/> to convert.</param>\n            <returns>\n            An <see cref=\"T:System.Object\"/> that represents the converted value.\n            </returns>\n            <exception cref=\"T:System.NotSupportedException\">\n            The conversion cannot be performed.\n            </exception>\n        </member>\n        <member name=\"M:SharpDX.Design.MatrixConverter.CreateInstance(System.ComponentModel.ITypeDescriptorContext,System.Collections.IDictionary)\">\n            <summary>\n            Creates an instance of the type that this <see cref=\"T:System.ComponentModel.TypeConverter\"/> is associated with, using the specified context, given a set of property values for the object.\n            </summary>\n            <param name=\"context\">An <see cref=\"T:System.ComponentModel.ITypeDescriptorContext\"/> that provides a format context.</param>\n            <param name=\"propertyValues\">An <see cref=\"T:System.Collections.IDictionary\"/> of new property values.</param>\n            <returns>\n            An <see cref=\"T:System.Object\"/> representing the given <see cref=\"T:System.Collections.IDictionary\"/>, or null if the object cannot be created. This method always returns null.\n            </returns>\n        </member>\n        <member name=\"T:SharpDX.Design.QuaternionConverter\">\n            <summary>\n            Defines a type converter for <see cref=\"T:SharpDX.Quaternion\"/>.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Design.QuaternionConverter.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Design.QuaternionConverter\"/> class.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Design.QuaternionConverter.ConvertTo(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type)\">\n            <summary>\n            Converts the given value object to the specified type, using the specified context and culture information.\n            </summary>\n            <param name=\"context\">An <see cref=\"T:System.ComponentModel.ITypeDescriptorContext\"/> that provides a format context.</param>\n            <param name=\"culture\">A <see cref=\"T:System.Globalization.CultureInfo\"/>. If null is passed, the current culture is assumed.</param>\n            <param name=\"value\">The <see cref=\"T:System.Object\"/> to convert.</param>\n            <param name=\"destinationType\">The <see cref=\"T:System.Type\"/> to convert the <paramref name=\"value\"/> parameter to.</param>\n            <returns>\n            An <see cref=\"T:System.Object\"/> that represents the converted value.\n            </returns>\n            <exception cref=\"T:System.ArgumentNullException\">\n            The <paramref name=\"destinationType\"/> parameter is null.\n            </exception>\n            <exception cref=\"T:System.NotSupportedException\">\n            The conversion cannot be performed.\n            </exception>\n        </member>\n        <member name=\"M:SharpDX.Design.QuaternionConverter.ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object)\">\n            <summary>\n            Converts the given object to the type of this converter, using the specified context and culture information.\n            </summary>\n            <param name=\"context\">An <see cref=\"T:System.ComponentModel.ITypeDescriptorContext\"/> that provides a format context.</param>\n            <param name=\"culture\">The <see cref=\"T:System.Globalization.CultureInfo\"/> to use as the current culture.</param>\n            <param name=\"value\">The <see cref=\"T:System.Object\"/> to convert.</param>\n            <returns>\n            An <see cref=\"T:System.Object\"/> that represents the converted value.\n            </returns>\n            <exception cref=\"T:System.NotSupportedException\">\n            The conversion cannot be performed.\n            </exception>\n        </member>\n        <member name=\"M:SharpDX.Design.QuaternionConverter.CreateInstance(System.ComponentModel.ITypeDescriptorContext,System.Collections.IDictionary)\">\n            <summary>\n            Creates an instance of the type that this <see cref=\"T:System.ComponentModel.TypeConverter\"/> is associated with, using the specified context, given a set of property values for the object.\n            </summary>\n            <param name=\"context\">An <see cref=\"T:System.ComponentModel.ITypeDescriptorContext\"/> that provides a format context.</param>\n            <param name=\"propertyValues\">An <see cref=\"T:System.Collections.IDictionary\"/> of new property values.</param>\n            <returns>\n            An <see cref=\"T:System.Object\"/> representing the given <see cref=\"T:System.Collections.IDictionary\"/>, or null if the object cannot be created. This method always returns null.\n            </returns>\n        </member>\n        <member name=\"T:SharpDX.Design.Vector2Converter\">\n            <summary>\n            Defines a type converter for <see cref=\"T:SharpDX.Vector2\"/>.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Design.Vector2Converter.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Design.Vector2Converter\"/> class.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Design.Vector2Converter.ConvertTo(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type)\">\n            <summary>\n            Converts the given value object to the specified type, using the specified context and culture information.\n            </summary>\n            <param name=\"context\">An <see cref=\"T:System.ComponentModel.ITypeDescriptorContext\"/> that provides a format context.</param>\n            <param name=\"culture\">A <see cref=\"T:System.Globalization.CultureInfo\"/>. If null is passed, the current culture is assumed.</param>\n            <param name=\"value\">The <see cref=\"T:System.Object\"/> to convert.</param>\n            <param name=\"destinationType\">The <see cref=\"T:System.Type\"/> to convert the <paramref name=\"value\"/> parameter to.</param>\n            <returns>\n            An <see cref=\"T:System.Object\"/> that represents the converted value.\n            </returns>\n            <exception cref=\"T:System.ArgumentNullException\">\n            The <paramref name=\"destinationType\"/> parameter is null.\n            </exception>\n            <exception cref=\"T:System.NotSupportedException\">\n            The conversion cannot be performed.\n            </exception>\n        </member>\n        <member name=\"M:SharpDX.Design.Vector2Converter.ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object)\">\n            <summary>\n            Converts the given object to the type of this converter, using the specified context and culture information.\n            </summary>\n            <param name=\"context\">An <see cref=\"T:System.ComponentModel.ITypeDescriptorContext\"/> that provides a format context.</param>\n            <param name=\"culture\">The <see cref=\"T:System.Globalization.CultureInfo\"/> to use as the current culture.</param>\n            <param name=\"value\">The <see cref=\"T:System.Object\"/> to convert.</param>\n            <returns>\n            An <see cref=\"T:System.Object\"/> that represents the converted value.\n            </returns>\n            <exception cref=\"T:System.NotSupportedException\">\n            The conversion cannot be performed.\n            </exception>\n        </member>\n        <member name=\"M:SharpDX.Design.Vector2Converter.CreateInstance(System.ComponentModel.ITypeDescriptorContext,System.Collections.IDictionary)\">\n            <summary>\n            Creates an instance of the type that this <see cref=\"T:System.ComponentModel.TypeConverter\"/> is associated with, using the specified context, given a set of property values for the object.\n            </summary>\n            <param name=\"context\">An <see cref=\"T:System.ComponentModel.ITypeDescriptorContext\"/> that provides a format context.</param>\n            <param name=\"propertyValues\">An <see cref=\"T:System.Collections.IDictionary\"/> of new property values.</param>\n            <returns>\n            An <see cref=\"T:System.Object\"/> representing the given <see cref=\"T:System.Collections.IDictionary\"/>, or null if the object cannot be created. This method always returns null.\n            </returns>\n        </member>\n        <member name=\"T:SharpDX.Design.Vector3Converter\">\n            <summary>\n            Defines a type converter for <see cref=\"T:SharpDX.Vector3\"/>.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Design.Vector3Converter.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Design.Vector3Converter\"/> class.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Design.Vector3Converter.ConvertTo(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type)\">\n            <summary>\n            Converts the given value object to the specified type, using the specified context and culture information.\n            </summary>\n            <param name=\"context\">An <see cref=\"T:System.ComponentModel.ITypeDescriptorContext\"/> that provides a format context.</param>\n            <param name=\"culture\">A <see cref=\"T:System.Globalization.CultureInfo\"/>. If null is passed, the current culture is assumed.</param>\n            <param name=\"value\">The <see cref=\"T:System.Object\"/> to convert.</param>\n            <param name=\"destinationType\">The <see cref=\"T:System.Type\"/> to convert the <paramref name=\"value\"/> parameter to.</param>\n            <returns>\n            An <see cref=\"T:System.Object\"/> that represents the converted value.\n            </returns>\n            <exception cref=\"T:System.ArgumentNullException\">\n            The <paramref name=\"destinationType\"/> parameter is null.\n            </exception>\n            <exception cref=\"T:System.NotSupportedException\">\n            The conversion cannot be performed.\n            </exception>\n        </member>\n        <member name=\"M:SharpDX.Design.Vector3Converter.ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object)\">\n            <summary>\n            Converts the given object to the type of this converter, using the specified context and culture information.\n            </summary>\n            <param name=\"context\">An <see cref=\"T:System.ComponentModel.ITypeDescriptorContext\"/> that provides a format context.</param>\n            <param name=\"culture\">The <see cref=\"T:System.Globalization.CultureInfo\"/> to use as the current culture.</param>\n            <param name=\"value\">The <see cref=\"T:System.Object\"/> to convert.</param>\n            <returns>\n            An <see cref=\"T:System.Object\"/> that represents the converted value.\n            </returns>\n            <exception cref=\"T:System.NotSupportedException\">\n            The conversion cannot be performed.\n            </exception>\n        </member>\n        <member name=\"M:SharpDX.Design.Vector3Converter.CreateInstance(System.ComponentModel.ITypeDescriptorContext,System.Collections.IDictionary)\">\n            <summary>\n            Creates an instance of the type that this <see cref=\"T:System.ComponentModel.TypeConverter\"/> is associated with, using the specified context, given a set of property values for the object.\n            </summary>\n            <param name=\"context\">An <see cref=\"T:System.ComponentModel.ITypeDescriptorContext\"/> that provides a format context.</param>\n            <param name=\"propertyValues\">An <see cref=\"T:System.Collections.IDictionary\"/> of new property values.</param>\n            <returns>\n            An <see cref=\"T:System.Object\"/> representing the given <see cref=\"T:System.Collections.IDictionary\"/>, or null if the object cannot be created. This method always returns null.\n            </returns>\n        </member>\n        <member name=\"T:SharpDX.Design.Vector4Converter\">\n            <summary>\n            Defines a type converter for <see cref=\"T:SharpDX.Vector4\"/>.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Design.Vector4Converter.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Design.Vector4Converter\"/> class.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Design.Vector4Converter.ConvertTo(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type)\">\n            <summary>\n            Converts the given value object to the specified type, using the specified context and culture information.\n            </summary>\n            <param name=\"context\">An <see cref=\"T:System.ComponentModel.ITypeDescriptorContext\"/> that provides a format context.</param>\n            <param name=\"culture\">A <see cref=\"T:System.Globalization.CultureInfo\"/>. If null is passed, the current culture is assumed.</param>\n            <param name=\"value\">The <see cref=\"T:System.Object\"/> to convert.</param>\n            <param name=\"destinationType\">The <see cref=\"T:System.Type\"/> to convert the <paramref name=\"value\"/> parameter to.</param>\n            <returns>\n            An <see cref=\"T:System.Object\"/> that represents the converted value.\n            </returns>\n            <exception cref=\"T:System.ArgumentNullException\">\n            The <paramref name=\"destinationType\"/> parameter is null.\n            </exception>\n            <exception cref=\"T:System.NotSupportedException\">\n            The conversion cannot be performed.\n            </exception>\n        </member>\n        <member name=\"M:SharpDX.Design.Vector4Converter.ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object)\">\n            <summary>\n            Converts the given object to the type of this converter, using the specified context and culture information.\n            </summary>\n            <param name=\"context\">An <see cref=\"T:System.ComponentModel.ITypeDescriptorContext\"/> that provides a format context.</param>\n            <param name=\"culture\">The <see cref=\"T:System.Globalization.CultureInfo\"/> to use as the current culture.</param>\n            <param name=\"value\">The <see cref=\"T:System.Object\"/> to convert.</param>\n            <returns>\n            An <see cref=\"T:System.Object\"/> that represents the converted value.\n            </returns>\n            <exception cref=\"T:System.NotSupportedException\">\n            The conversion cannot be performed.\n            </exception>\n        </member>\n        <member name=\"M:SharpDX.Design.Vector4Converter.CreateInstance(System.ComponentModel.ITypeDescriptorContext,System.Collections.IDictionary)\">\n            <summary>\n            Creates an instance of the type that this <see cref=\"T:System.ComponentModel.TypeConverter\"/> is associated with, using the specified context, given a set of property values for the object.\n            </summary>\n            <param name=\"context\">An <see cref=\"T:System.ComponentModel.ITypeDescriptorContext\"/> that provides a format context.</param>\n            <param name=\"propertyValues\">An <see cref=\"T:System.Collections.IDictionary\"/> of new property values.</param>\n            <returns>\n            An <see cref=\"T:System.Object\"/> representing the given <see cref=\"T:System.Collections.IDictionary\"/>, or null if the object cannot be created. This method always returns null.\n            </returns>\n        </member>\n        <member name=\"T:SharpDX.Diagnostics.ObjectReference\">\n            <summary>\n            Contains information about a tracked COM object.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Diagnostics.ObjectReference.#ctor(System.DateTime,SharpDX.ComObject,System.Diagnostics.StackTrace)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Diagnostics.ObjectReference\"/> class.\n            </summary>\n            <param name=\"creationTime\">The creation time.</param>\n            <param name=\"comObject\">The com object to track.</param>\n            <param name=\"stackTrace\">The stack trace.</param>\n        </member>\n        <member name=\"M:SharpDX.Diagnostics.ObjectReference.ToString\">\n            <summary>\n            Returns a <see cref=\"T:System.String\"/> that represents this instance.\n            </summary>\n            <returns>\n            A <see cref=\"T:System.String\"/> that represents this instance.\n            </returns>\n        </member>\n        <member name=\"P:SharpDX.Diagnostics.ObjectReference.CreationTime\">\n            <summary>\n            Gets the time the object was created.\n            </summary>\n            <value>The creation time.</value>\n        </member>\n        <member name=\"P:SharpDX.Diagnostics.ObjectReference.Object\">\n            <summary>\n            Gets a weak reference to the tracked object.\n            </summary>\n            <value>The weak reference to the tracked object.</value>\n        </member>\n        <member name=\"P:SharpDX.Diagnostics.ObjectReference.StackTrace\">\n            <summary>\n            Gets the stack trace when the track object was created.\n            </summary>\n            <value>The stack trace.</value>\n        </member>\n        <member name=\"P:SharpDX.Diagnostics.ObjectReference.IsAlive\">\n            <summary>\n            Gets a value indicating whether the tracked object is alive.\n            </summary>\n            <value><c>true</c> if tracked object is alive; otherwise, <c>false</c>.</value>\n        </member>\n        <member name=\"T:SharpDX.Diagnostics.ObjectTracker\">\n            <summary>\n            Track all allocated objects.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Diagnostics.ObjectTracker.#cctor\">\n            <summary>\n            Initializes the <see cref=\"T:SharpDX.Diagnostics.ObjectTracker\"/> class.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Diagnostics.ObjectTracker.OnProcessExit(System.Object,System.EventArgs)\">\n            <summary>\n            Called when [process exit].\n            </summary>\n            <param name=\"sender\">The sender.</param>\n            <param name=\"e\">The <see cref=\"T:System.EventArgs\"/> instance containing the event data.</param>\n        </member>\n        <member name=\"M:SharpDX.Diagnostics.ObjectTracker.Track(SharpDX.ComObject)\">\n            <summary>\n            Tracks the specified COM object.\n            </summary>\n            <param name=\"comObject\">The COM object.</param>\n        </member>\n        <member name=\"M:SharpDX.Diagnostics.ObjectTracker.Find(System.IntPtr)\">\n            <summary>\n            Finds a list of object reference from a specified COM object pointer.\n            </summary>\n            <param name=\"comObjectPtr\">The COM object pointer.</param>\n            <returns>A list of object reference</returns>\n        </member>\n        <member name=\"M:SharpDX.Diagnostics.ObjectTracker.Find(SharpDX.ComObject)\">\n            <summary>\n            Finds the object reference for a specific COM object.\n            </summary>\n            <param name=\"comObject\">The COM object.</param>\n            <returns>An object reference</returns>\n        </member>\n        <member name=\"M:SharpDX.Diagnostics.ObjectTracker.UnTrack(SharpDX.ComObject)\">\n            <summary>\n            Untracks the specified COM object.\n            </summary>\n            <param name=\"comObject\">The COM object.</param>\n        </member>\n        <member name=\"M:SharpDX.Diagnostics.ObjectTracker.FindActiveObjects\">\n            <summary>\n            Reports all COM object that are active and not yet disposed.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Diagnostics.ObjectTracker.ReportActiveObjects\">\n            <summary>\n            Reports all COM object that are active and not yet disposed.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.AngleType\">\n            <summary>\n            Describes the type of angle.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.AngleType.Revolution\">\n            <summary>\n            Specifies an angle measurement in revolutions.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.AngleType.Degree\">\n            <summary>\n            Specifies an angle measurement in degrees.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.AngleType.Radian\">\n            <summary>\n            Specifies an angle measurement in radians.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.AngleType.Gradian\">\n            <summary>\n            Specifies an angle measurement in gradians.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.ContainmentType\">\n            <summary>\n            Describes how one bounding volume contains another.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.ContainmentType.Disjoint\">\n            <summary>\n            The two bounding volumes don't intersect at all.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.ContainmentType.Contains\">\n            <summary>\n            One bounding volume completely contains another.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.ContainmentType.Intersects\">\n            <summary>\n            The two bounding volumes overlap.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.PlaneIntersectionType\">\n            <summary>\n            Describes the result of an intersection with a plane in three dimensions.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.PlaneIntersectionType.Back\">\n            <summary>\n            The object is behind the plane.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.PlaneIntersectionType.Front\">\n            <summary>\n            The object is in front of the plane.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.PlaneIntersectionType.Intersecting\">\n            <summary>\n            The object is intersecting the plane.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.FunctionCallback\">\n            <summary>\n            FunctionCallback\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.FunctionCallback.ToString\">\n            <summary>\n              Returns a <see cref=\"T:System.String\"/> that represents this instance.\n            </summary>\n            <returns>\n              A <see cref=\"T:System.String\"/> that represents this instance.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.FunctionCallback.ToString(System.String)\">\n            <summary>\n              Returns a <see cref=\"T:System.String\"/> that represents this instance.\n            </summary>\n            <param name=\"format\">The format.</param>\n            <returns>\n              A <see cref=\"T:System.String\"/> that represents this instance.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.FunctionCallback.GetHashCode\">\n            <summary>\n              Returns a hash code for this instance.\n            </summary>\n            <returns>\n              A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. \n            </returns>\n        </member>\n        <member name=\"M:SharpDX.FunctionCallback.Equals(SharpDX.FunctionCallback)\">\n            <summary>\n              Determines whether the specified <see cref=\"T:SharpDX.FunctionCallback\"/> is equal to this instance.\n            </summary>\n            <param name=\"other\">The <see cref=\"T:SharpDX.FunctionCallback\"/> to compare with this instance.</param>\n            <returns>\n              <c>true</c> if the specified <see cref=\"T:SharpDX.FunctionCallback\"/> is equal to this instance; otherwise, <c>false</c>.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.FunctionCallback.Equals(System.Object)\">\n            <summary>\n              Determines whether the specified <see cref=\"T:System.Object\"/> is equal to this instance.\n            </summary>\n            <param name=\"value\">The <see cref=\"T:System.Object\"/> to compare with this instance.</param>\n            <returns>\n              <c>true</c> if the specified <see cref=\"T:System.Object\"/> is equal to this instance; otherwise, <c>false</c>.\n            </returns>\n        </member>\n        <member name=\"T:SharpDX.Direct3D.DriverType\">\n            <summary>\t\n            <p>Driver type options.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>The driver type is required when calling <strong><see cref=\"!:SharpDX.Direct3D11.D3D11.CreateDevice\"/></strong> or <strong><see cref=\"!:SharpDX.Direct3D11.D3D11.CreateDeviceAndSwapChain\"/></strong>.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_DRIVER_TYPE']/*\"/>\t\n            <msdn-id>ff476328</msdn-id>\t\n            <unmanaged>D3D_DRIVER_TYPE</unmanaged>\t\n            <unmanaged-short>D3D_DRIVER_TYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D.DriverType.Unknown\">\n            <summary>\t\n            <dd> <p>The driver type is unknown.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_DRIVER_TYPE_UNKNOWN']/*\"/>\t\n            <msdn-id>ff476328</msdn-id>\t\n            <unmanaged>D3D_DRIVER_TYPE_UNKNOWN</unmanaged>\t\n            <unmanaged-short>D3D_DRIVER_TYPE_UNKNOWN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D.DriverType.Hardware\">\n            <summary>\t\n            <dd> <p>A hardware driver, which implements Direct3D features in hardware. This is the primary driver that you should use in your Direct3D applications because it provides the best performance. A hardware driver uses hardware acceleration (on supported hardware) but can also use software for parts of the pipeline that are not supported in hardware. This driver type is often referred to as a hardware abstraction layer or HAL.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_DRIVER_TYPE_HARDWARE']/*\"/>\t\n            <msdn-id>ff476328</msdn-id>\t\n            <unmanaged>D3D_DRIVER_TYPE_HARDWARE</unmanaged>\t\n            <unmanaged-short>D3D_DRIVER_TYPE_HARDWARE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D.DriverType.Reference\">\n            <summary>\t\n            <dd> <p>A reference driver, which is a software implementation that supports every Direct3D feature. A reference driver is designed for accuracy rather than speed and as a result is slow but accurate. The rasterizer portion of the driver does make use of special CPU instructions whenever it can, but it is not intended for retail applications; use it only for feature testing, demonstration of functionality, debugging, or verifying bugs in other drivers. This driver is installed by the DirectX SDK. This driver may be referred to as a REF driver, a reference driver or a reference rasterizer.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_DRIVER_TYPE_REFERENCE']/*\"/>\t\n            <msdn-id>ff476328</msdn-id>\t\n            <unmanaged>D3D_DRIVER_TYPE_REFERENCE</unmanaged>\t\n            <unmanaged-short>D3D_DRIVER_TYPE_REFERENCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D.DriverType.Null\">\n            <summary>\t\n            <dd> <p>A <c>null</c> driver, which is a reference driver without render capability. This driver is commonly used for debugging non-rendering API calls, it is not appropriate for retail applications. This driver is installed by the DirectX SDK.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_DRIVER_TYPE_NULL']/*\"/>\t\n            <msdn-id>ff476328</msdn-id>\t\n            <unmanaged>D3D_DRIVER_TYPE_NULL</unmanaged>\t\n            <unmanaged-short>D3D_DRIVER_TYPE_NULL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D.DriverType.Software\">\n            <summary>\t\n            <dd> <p>A software driver, which is a driver implemented completely in software. The software implementation is not intended for a high-performance application due to its very slow performance.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_DRIVER_TYPE_SOFTWARE']/*\"/>\t\n            <msdn-id>ff476328</msdn-id>\t\n            <unmanaged>D3D_DRIVER_TYPE_SOFTWARE</unmanaged>\t\n            <unmanaged-short>D3D_DRIVER_TYPE_SOFTWARE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D.DriverType.Warp\">\n            <summary>\t\n            <dd> <p>A WARP driver, which is a high-performance software rasterizer. The rasterizer supports <strong>feature levels</strong> 9_1 through level 10.1 with a high performance software implementation. For information about limitations creating a WARP device on certain feature levels, see Limitations Creating WARP and Reference Devices. For more information about using a WARP driver, see Windows Advanced Rasterization Platform (WARP) In-Depth Guide.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_DRIVER_TYPE_WARP']/*\"/>\t\n            <msdn-id>ff476328</msdn-id>\t\n            <unmanaged>D3D_DRIVER_TYPE_WARP</unmanaged>\t\n            <unmanaged-short>D3D_DRIVER_TYPE_WARP</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D.FeatureLevel\">\n            <summary>\t\n            <p>Describes the set of features targeted by a Direct3D device.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>For an overview of  the capabilities of each feature level, see Overview For Each Feature Level.</p><p>For information about limitations creating nonhardware-type devices on certain feature levels, see Limitations Creating WARP and Reference Devices.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_FEATURE_LEVEL']/*\"/>\t\n            <msdn-id>ff476329</msdn-id>\t\n            <unmanaged>D3D_FEATURE_LEVEL</unmanaged>\t\n            <unmanaged-short>D3D_FEATURE_LEVEL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D.FeatureLevel.Level_9_1\">\n            <summary>\t\n            <dd> <p>Targets features supported by feature level 9.1 including shader model 2.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_FEATURE_LEVEL_9_1']/*\"/>\t\n            <msdn-id>ff476329</msdn-id>\t\n            <unmanaged>D3D_FEATURE_LEVEL_9_1</unmanaged>\t\n            <unmanaged-short>D3D_FEATURE_LEVEL_9_1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D.FeatureLevel.Level_9_2\">\n            <summary>\t\n            <dd> <p>Targets features supported by feature level 9.2 including shader model 2.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_FEATURE_LEVEL_9_2']/*\"/>\t\n            <msdn-id>ff476329</msdn-id>\t\n            <unmanaged>D3D_FEATURE_LEVEL_9_2</unmanaged>\t\n            <unmanaged-short>D3D_FEATURE_LEVEL_9_2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D.FeatureLevel.Level_9_3\">\n            <summary>\t\n            <dd> <p>Targets features supported by feature level 9.3 including shader model 2.0b.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_FEATURE_LEVEL_9_3']/*\"/>\t\n            <msdn-id>ff476329</msdn-id>\t\n            <unmanaged>D3D_FEATURE_LEVEL_9_3</unmanaged>\t\n            <unmanaged-short>D3D_FEATURE_LEVEL_9_3</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D.FeatureLevel.Level_10_0\">\n            <summary>\t\n            <dd> <p>Targets features supported by Direct3D 10.0 including shader model 4.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_FEATURE_LEVEL_10_0']/*\"/>\t\n            <msdn-id>ff476329</msdn-id>\t\n            <unmanaged>D3D_FEATURE_LEVEL_10_0</unmanaged>\t\n            <unmanaged-short>D3D_FEATURE_LEVEL_10_0</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D.FeatureLevel.Level_10_1\">\n            <summary>\t\n            <dd> <p>Targets features supported by Direct3D 10.1 including shader model 4.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_FEATURE_LEVEL_10_1']/*\"/>\t\n            <msdn-id>ff476329</msdn-id>\t\n            <unmanaged>D3D_FEATURE_LEVEL_10_1</unmanaged>\t\n            <unmanaged-short>D3D_FEATURE_LEVEL_10_1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D.FeatureLevel.Level_11_0\">\n            <summary>\t\n            <dd> <p>Targets features supported by Direct3D 11.0 including shader model 5.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_FEATURE_LEVEL_11_0']/*\"/>\t\n            <msdn-id>ff476329</msdn-id>\t\n            <unmanaged>D3D_FEATURE_LEVEL_11_0</unmanaged>\t\n            <unmanaged-short>D3D_FEATURE_LEVEL_11_0</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D.PrimitiveTopology\">\n            <summary>\t\n            <p>Values that indicate how the pipeline interprets vertex data that is bound to the input-assembler stage. These primitive topology values determine how the vertex data is rendered on screen.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>Use the  <strong><see cref=\"!:SharpDX.Direct3D11.InputAssemblerStage.SetPrimitiveTopology\"/></strong> method and a value from <strong><see cref=\"T:SharpDX.Direct3D.PrimitiveTopology\"/></strong> to bind a primitive topology to the input-assembler stage. Use the  <strong><see cref=\"!:SharpDX.Direct3D11.InputAssemblerStage.GetPrimitiveTopology\"/></strong> method to retrieve the primitive topology for the input-assembler stage.</p><p>The following diagram shows the various primitive types for a geometry shader object.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_PRIMITIVE_TOPOLOGY']/*\"/>\t\n            <msdn-id>ff728726</msdn-id>\t\n            <unmanaged>D3D_PRIMITIVE_TOPOLOGY</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_TOPOLOGY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D.PrimitiveTopology.Undefined\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_PRIMITIVE_TOPOLOGY_UNDEFINED']/*\"/>\t\n            <unmanaged>D3D_PRIMITIVE_TOPOLOGY_UNDEFINED</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_TOPOLOGY_UNDEFINED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D.PrimitiveTopology.PointList\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_PRIMITIVE_TOPOLOGY_POINTLIST']/*\"/>\t\n            <unmanaged>D3D_PRIMITIVE_TOPOLOGY_POINTLIST</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_TOPOLOGY_POINTLIST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D.PrimitiveTopology.LineList\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_PRIMITIVE_TOPOLOGY_LINELIST']/*\"/>\t\n            <unmanaged>D3D_PRIMITIVE_TOPOLOGY_LINELIST</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_TOPOLOGY_LINELIST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D.PrimitiveTopology.LineStrip\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_PRIMITIVE_TOPOLOGY_LINESTRIP']/*\"/>\t\n            <unmanaged>D3D_PRIMITIVE_TOPOLOGY_LINESTRIP</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_TOPOLOGY_LINESTRIP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D.PrimitiveTopology.TriangleList\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST']/*\"/>\t\n            <unmanaged>D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D.PrimitiveTopology.TriangleStrip\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP']/*\"/>\t\n            <unmanaged>D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D.PrimitiveTopology.LineListWithAdjacency\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ']/*\"/>\t\n            <unmanaged>D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D.PrimitiveTopology.LineStripWithAdjacency\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ']/*\"/>\t\n            <unmanaged>D3D_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D.PrimitiveTopology.TriangleListWithAdjacency\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ']/*\"/>\t\n            <unmanaged>D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D.PrimitiveTopology.TriangleStripWithAdjacency\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ']/*\"/>\t\n            <unmanaged>D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D.PrimitiveTopology.PatchListWith1ControlPoints\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST']/*\"/>\t\n            <unmanaged>D3D_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D.PrimitiveTopology.PatchListWith2ControlPoints\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST']/*\"/>\t\n            <unmanaged>D3D_PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D.PrimitiveTopology.PatchListWith3ControlPoints\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST']/*\"/>\t\n            <unmanaged>D3D_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D.PrimitiveTopology.PatchListWith4ControlPoints\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST']/*\"/>\t\n            <unmanaged>D3D_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D.PrimitiveTopology.PatchListWith5ControlPoints\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST']/*\"/>\t\n            <unmanaged>D3D_PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D.PrimitiveTopology.PatchListWith6ControlPoints\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST']/*\"/>\t\n            <unmanaged>D3D_PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D.PrimitiveTopology.PatchListWith7ControlPoints\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST']/*\"/>\t\n            <unmanaged>D3D_PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D.PrimitiveTopology.PatchListWith8ControlPoints\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST']/*\"/>\t\n            <unmanaged>D3D_PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D.PrimitiveTopology.PatchListWith9ControlPoints\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST']/*\"/>\t\n            <unmanaged>D3D_PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D.PrimitiveTopology.PatchListWith10ControlPoints\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST']/*\"/>\t\n            <unmanaged>D3D_PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D.PrimitiveTopology.PatchListWith11ControlPoints\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST']/*\"/>\t\n            <unmanaged>D3D_PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D.PrimitiveTopology.PatchListWith12ControlPoints\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST']/*\"/>\t\n            <unmanaged>D3D_PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D.PrimitiveTopology.PatchListWith13ControlPoints\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST']/*\"/>\t\n            <unmanaged>D3D_PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D.PrimitiveTopology.PatchListWith14ControlPoints\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST']/*\"/>\t\n            <unmanaged>D3D_PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D.PrimitiveTopology.PatchListWith15ControlPoints\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST']/*\"/>\t\n            <unmanaged>D3D_PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D.PrimitiveTopology.PatchListWith16ControlPoints\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST']/*\"/>\t\n            <unmanaged>D3D_PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D.PrimitiveTopology.PatchListWith17ControlPoints\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST']/*\"/>\t\n            <unmanaged>D3D_PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D.PrimitiveTopology.PatchListWith18ControlPoints\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST']/*\"/>\t\n            <unmanaged>D3D_PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D.PrimitiveTopology.PatchListWith19ControlPoints\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST']/*\"/>\t\n            <unmanaged>D3D_PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D.PrimitiveTopology.PatchListWith20ControlPoints\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST']/*\"/>\t\n            <unmanaged>D3D_PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D.PrimitiveTopology.PatchListWith21ControlPoints\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST']/*\"/>\t\n            <unmanaged>D3D_PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D.PrimitiveTopology.PatchListWith22ControlPoints\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST']/*\"/>\t\n            <unmanaged>D3D_PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D.PrimitiveTopology.PatchListWith23ControlPoints\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST']/*\"/>\t\n            <unmanaged>D3D_PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D.PrimitiveTopology.PatchListWith24ControlPoints\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST']/*\"/>\t\n            <unmanaged>D3D_PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D.PrimitiveTopology.PatchListWith25ControlPoints\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST']/*\"/>\t\n            <unmanaged>D3D_PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D.PrimitiveTopology.PatchListWith26ControlPoints\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST']/*\"/>\t\n            <unmanaged>D3D_PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D.PrimitiveTopology.PatchListWith27ControlPoints\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST']/*\"/>\t\n            <unmanaged>D3D_PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D.PrimitiveTopology.PatchListWith28ControlPoints\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST']/*\"/>\t\n            <unmanaged>D3D_PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D.PrimitiveTopology.PatchListWith29ControlPoints\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST']/*\"/>\t\n            <unmanaged>D3D_PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D.PrimitiveTopology.PatchListWith30ControlPoints\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST']/*\"/>\t\n            <unmanaged>D3D_PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D.PrimitiveTopology.PatchListWith31ControlPoints\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST']/*\"/>\t\n            <unmanaged>D3D_PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D.PrimitiveTopology.PatchListWith32ControlPoints\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST']/*\"/>\t\n            <unmanaged>D3D_PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST</unmanaged>\t\n            <unmanaged-short>D3D_PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D.ShaderResourceViewDimension\">\n            <summary>\t\n            <p>Values that identify the type of resource to be viewed as a shader resource.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>A <strong><see cref=\"T:SharpDX.Direct3D.ShaderResourceViewDimension\"/></strong>-typed value is specified in the <strong>ViewDimension</strong> member of the <strong><see cref=\"!:SharpDX.Direct3D11.ShaderResourceViewDescription\"/></strong> structure or the  <strong>Dimension</strong> member of the <strong><see cref=\"!:SharpDX.D3DCompiler.InputBindingDescription\"/></strong> structure.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SRV_DIMENSION']/*\"/>\t\n            <msdn-id>ff728736</msdn-id>\t\n            <unmanaged>D3D_SRV_DIMENSION</unmanaged>\t\n            <unmanaged-short>D3D_SRV_DIMENSION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D.ShaderResourceViewDimension.Unknown\">\n            <summary>\t\n            <dd> <p>The type is unknown.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SRV_DIMENSION_UNKNOWN']/*\"/>\t\n            <msdn-id>ff728736</msdn-id>\t\n            <unmanaged>D3D_SRV_DIMENSION_UNKNOWN</unmanaged>\t\n            <unmanaged-short>D3D_SRV_DIMENSION_UNKNOWN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D.ShaderResourceViewDimension.Buffer\">\n            <summary>\t\n            <dd> <p>The resource is a buffer.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SRV_DIMENSION_BUFFER']/*\"/>\t\n            <msdn-id>ff728736</msdn-id>\t\n            <unmanaged>D3D_SRV_DIMENSION_BUFFER</unmanaged>\t\n            <unmanaged-short>D3D_SRV_DIMENSION_BUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D.ShaderResourceViewDimension.Texture1D\">\n            <summary>\t\n            <dd> <p>The resource is a 1D texture.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SRV_DIMENSION_TEXTURE1D']/*\"/>\t\n            <msdn-id>ff728736</msdn-id>\t\n            <unmanaged>D3D_SRV_DIMENSION_TEXTURE1D</unmanaged>\t\n            <unmanaged-short>D3D_SRV_DIMENSION_TEXTURE1D</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D.ShaderResourceViewDimension.Texture1DArray\">\n            <summary>\t\n            <dd> <p>The resource is an array of 1D textures.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SRV_DIMENSION_TEXTURE1DARRAY']/*\"/>\t\n            <msdn-id>ff728736</msdn-id>\t\n            <unmanaged>D3D_SRV_DIMENSION_TEXTURE1DARRAY</unmanaged>\t\n            <unmanaged-short>D3D_SRV_DIMENSION_TEXTURE1DARRAY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D.ShaderResourceViewDimension.Texture2D\">\n            <summary>\t\n            <dd> <p>The resource is a 2D texture.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SRV_DIMENSION_TEXTURE2D']/*\"/>\t\n            <msdn-id>ff728736</msdn-id>\t\n            <unmanaged>D3D_SRV_DIMENSION_TEXTURE2D</unmanaged>\t\n            <unmanaged-short>D3D_SRV_DIMENSION_TEXTURE2D</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D.ShaderResourceViewDimension.Texture2DArray\">\n            <summary>\t\n            <dd> <p>The resource is an array of 2D textures.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SRV_DIMENSION_TEXTURE2DARRAY']/*\"/>\t\n            <msdn-id>ff728736</msdn-id>\t\n            <unmanaged>D3D_SRV_DIMENSION_TEXTURE2DARRAY</unmanaged>\t\n            <unmanaged-short>D3D_SRV_DIMENSION_TEXTURE2DARRAY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D.ShaderResourceViewDimension.Texture2DMultisampled\">\n            <summary>\t\n            <dd> <p>The resource is a multisampling 2D texture.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SRV_DIMENSION_TEXTURE2DMS']/*\"/>\t\n            <msdn-id>ff728736</msdn-id>\t\n            <unmanaged>D3D_SRV_DIMENSION_TEXTURE2DMS</unmanaged>\t\n            <unmanaged-short>D3D_SRV_DIMENSION_TEXTURE2DMS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D.ShaderResourceViewDimension.Texture2DMultisampledArray\">\n            <summary>\t\n            <dd> <p>The resource is an array of multisampling 2D textures.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SRV_DIMENSION_TEXTURE2DMSARRAY']/*\"/>\t\n            <msdn-id>ff728736</msdn-id>\t\n            <unmanaged>D3D_SRV_DIMENSION_TEXTURE2DMSARRAY</unmanaged>\t\n            <unmanaged-short>D3D_SRV_DIMENSION_TEXTURE2DMSARRAY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D.ShaderResourceViewDimension.Texture3D\">\n            <summary>\t\n            <dd> <p>The resource is a 3D texture.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SRV_DIMENSION_TEXTURE3D']/*\"/>\t\n            <msdn-id>ff728736</msdn-id>\t\n            <unmanaged>D3D_SRV_DIMENSION_TEXTURE3D</unmanaged>\t\n            <unmanaged-short>D3D_SRV_DIMENSION_TEXTURE3D</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D.ShaderResourceViewDimension.TextureCube\">\n            <summary>\t\n            <dd> <p>The resource is a cube texture.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SRV_DIMENSION_TEXTURECUBE']/*\"/>\t\n            <msdn-id>ff728736</msdn-id>\t\n            <unmanaged>D3D_SRV_DIMENSION_TEXTURECUBE</unmanaged>\t\n            <unmanaged-short>D3D_SRV_DIMENSION_TEXTURECUBE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D.ShaderResourceViewDimension.TextureCubeArray\">\n            <summary>\t\n            <dd> <p>The resource is an array of cube textures.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SRV_DIMENSION_TEXTURECUBEARRAY']/*\"/>\t\n            <msdn-id>ff728736</msdn-id>\t\n            <unmanaged>D3D_SRV_DIMENSION_TEXTURECUBEARRAY</unmanaged>\t\n            <unmanaged-short>D3D_SRV_DIMENSION_TEXTURECUBEARRAY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D.ShaderResourceViewDimension.ExtendedBuffer\">\n            <summary>\t\n            <dd> <p>The resource is an extended buffer.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SRV_DIMENSION_BUFFEREX']/*\"/>\t\n            <msdn-id>ff728736</msdn-id>\t\n            <unmanaged>D3D_SRV_DIMENSION_BUFFEREX</unmanaged>\t\n            <unmanaged-short>D3D_SRV_DIMENSION_BUFFEREX</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D.CommonGuid\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.Direct3D.CommonGuid']/*\"/>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D.CommonGuid.DebugObjectName\">\n            <summary>Constant DebugObjectName.</summary>\n            <unmanaged>WKPDID_D3DDebugObjectName</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D.D3DCommon\">\n            <summary>\t\n            Functions\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SharpDX.Direct3D.D3DCommon']/*\"/>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D.D3DCommon.CreateBlob(SharpDX.PointerSize,SharpDX.Direct3D.Blob)\">\n            <summary>\t\n            <p>Creates a buffer.</p>\t\n            </summary>\t\n            <param name=\"size\"><dd>  <p>Number of bytes in the blob.</p> </dd></param>\t\n            <param name=\"blobOut\"><dd>  <p>The address of a reference to the <strong>ID3DBlob</strong> interface that is used to retrieve the buffer.</p> </dd></param>\t\n            <returns><p>Returns one of the following Direct3D 10 Return Codes.</p></returns>\t\n            <remarks>\t\n            <p>The latest D3dcompiler_nn.dll contains the <strong><see cref=\"M:SharpDX.Direct3D.D3DCommon.CreateBlob(SharpDX.PointerSize,SharpDX.Direct3D.Blob)\"/></strong> compiler function. Therefore, you are no longer required to create and use an arbitrary length data buffer by using the  <strong>D3D10CreateBlob</strong> function that is contained in D3d10.dll.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3DCreateBlob']/*\"/>\t\n            <msdn-id>ff728672</msdn-id>\t\n            <unmanaged>HRESULT D3DCreateBlob([In] SIZE_T Size,[Out, Fast] ID3D10Blob** ppBlob)</unmanaged>\t\n            <unmanaged-short>D3DCreateBlob</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Direct3D.Blob\">\n            <summary>\t\n            <p>This interface is used to return arbitrary length data.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>An <strong><see cref=\"T:SharpDX.Direct3D.Blob\"/></strong> is obtained by calling <strong>D3D10CreateBlob</strong>.</p><p>The  <strong>ID3DBlob</strong> interface is type defined in the  D3DCommon.h header file as a  <strong><see cref=\"T:SharpDX.Direct3D.Blob\"/></strong> interface, which is fully defined in the  D3DCommon.h header file. <strong>ID3DBlob</strong> is version neutral and can be used in code for any Direct3D version.</p><p>Blobs can be used as a data buffer, storing vertex, adjacency, and material information during mesh optimization and loading operations. Also, these objects are used to return object code and error messages in APIs that compile vertex, geometry and pixel shaders.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Blob']/*\"/>\t\n            <msdn-id>bb173507</msdn-id>\t\n            <unmanaged>ID3D10Blob</unmanaged>\t\n            <unmanaged-short>ID3D10Blob</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D.Blob.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D.Blob\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D.Blob.op_Explicit(System.IntPtr)~SharpDX.Direct3D.Blob\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Direct3D.Blob\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Direct3D.Blob.GetBufferPointer\">\n            <summary>\t\n            <p>Get a reference to the data.</p>\t\n            </summary>\t\n            <returns><p>Returns a reference.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Blob::GetBufferPointer']/*\"/>\t\n            <msdn-id>bb173508</msdn-id>\t\n            <unmanaged>void* ID3D10Blob::GetBufferPointer()</unmanaged>\t\n            <unmanaged-short>ID3D10Blob::GetBufferPointer</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D.Blob.GetBufferSize\">\n            <summary>\t\n            <p>Get the size.</p>\t\n            </summary>\t\n            <returns><p>The size of the data, in bytes.</p></returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Blob::GetBufferSize']/*\"/>\t\n            <msdn-id>bb173509</msdn-id>\t\n            <unmanaged>SIZE_T ID3D10Blob::GetBufferSize()</unmanaged>\t\n            <unmanaged-short>ID3D10Blob::GetBufferSize</unmanaged-short>\t\n        </member>\n        <member name=\"P:SharpDX.Direct3D.Blob.BufferPointer\">\n            <summary>\t\n            <p>Get a reference to the data.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Blob::GetBufferPointer']/*\"/>\t\n            <msdn-id>bb173508</msdn-id>\t\n            <unmanaged>GetBufferPointer</unmanaged>\t\n            <unmanaged-short>GetBufferPointer</unmanaged-short>\t\n            <unmanaged>void* ID3D10Blob::GetBufferPointer()</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Direct3D.Blob.BufferSize\">\n            <summary>\t\n            <p>Get the size.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ID3D10Blob::GetBufferSize']/*\"/>\t\n            <msdn-id>bb173509</msdn-id>\t\n            <unmanaged>GetBufferSize</unmanaged>\t\n            <unmanaged-short>GetBufferSize</unmanaged-short>\t\n            <unmanaged>SIZE_T ID3D10Blob::GetBufferSize()</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Direct3D.ShaderMacro\">\n            <summary>\t\n            <p>Defines a shader macro.</p>\t\n            </summary>\t\n            <remarks>\t\n            <p>You can use shader macros in your shaders. The <strong><see cref=\"T:SharpDX.Direct3D.ShaderMacro\"/></strong> structure defines a single shader macro as shown in the following example:</p><pre><code> <see cref=\"T:SharpDX.Direct3D.ShaderMacro\"/> Shader_Macros[1] = { \"zero\", \"0\"  };\t\n            </code></pre><p>The following shader or effect creation functions take an array of shader macros as an input parameter:</p><ul> <li> <strong>D3D10CompileShader</strong> </li> <li> <strong><see cref=\"!:SharpDX.Direct3D10.D3DX10.CreateEffectFromFile\"/></strong> </li> <li> <strong>D3DX10PreprocessShaderFromFile</strong> </li> <li> <strong>D3DX11CreateAsyncShaderPreprocessProcessor</strong> </li> </ul>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SHADER_MACRO']/*\"/>\t\n            <msdn-id>ff728732</msdn-id>\t\n            <unmanaged>D3D_SHADER_MACRO</unmanaged>\t\n            <unmanaged-short>D3D_SHADER_MACRO</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D.ShaderMacro.Name\">\n            <summary>\t\n            <dd> <p>The macro name.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SHADER_MACRO::Name']/*\"/>\t\n            <msdn-id>ff728732</msdn-id>\t\n            <unmanaged>const char* Name</unmanaged>\t\n            <unmanaged-short>char Name</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Direct3D.ShaderMacro.Definition\">\n            <summary>\t\n            <dd> <p>The macro definition.</p> </dd>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='D3D_SHADER_MACRO::Definition']/*\"/>\t\n            <msdn-id>ff728732</msdn-id>\t\n            <unmanaged>const char* Definition</unmanaged>\t\n            <unmanaged-short>char Definition</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Direct3D.ShaderMacro.#ctor(System.String,System.Object)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Direct3D.ShaderMacro\"/> struct. \n            </summary>\n            <param name=\"name\">\n            The name.\n            </param>\n            <param name=\"definition\">\n            The definition.\n            </param>\n        </member>\n        <member name=\"T:SharpDX.Multimedia.Speakers\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SPEAKER_FLAGS']/*\"/>\t\n            <unmanaged>SPEAKER_FLAGS</unmanaged>\t\n            <unmanaged-short>SPEAKER_FLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.Speakers.FrontLeft\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SPEAKER_FRONT_LEFT']/*\"/>\t\n            <unmanaged>SPEAKER_FRONT_LEFT</unmanaged>\t\n            <unmanaged-short>SPEAKER_FRONT_LEFT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.Speakers.FrontRight\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SPEAKER_FRONT_RIGHT']/*\"/>\t\n            <unmanaged>SPEAKER_FRONT_RIGHT</unmanaged>\t\n            <unmanaged-short>SPEAKER_FRONT_RIGHT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.Speakers.FrontCenter\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SPEAKER_FRONT_CENTER']/*\"/>\t\n            <unmanaged>SPEAKER_FRONT_CENTER</unmanaged>\t\n            <unmanaged-short>SPEAKER_FRONT_CENTER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.Speakers.LowFrequency\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SPEAKER_LOW_FREQUENCY']/*\"/>\t\n            <unmanaged>SPEAKER_LOW_FREQUENCY</unmanaged>\t\n            <unmanaged-short>SPEAKER_LOW_FREQUENCY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.Speakers.BackLeft\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SPEAKER_BACK_LEFT']/*\"/>\t\n            <unmanaged>SPEAKER_BACK_LEFT</unmanaged>\t\n            <unmanaged-short>SPEAKER_BACK_LEFT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.Speakers.BackRight\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SPEAKER_BACK_RIGHT']/*\"/>\t\n            <unmanaged>SPEAKER_BACK_RIGHT</unmanaged>\t\n            <unmanaged-short>SPEAKER_BACK_RIGHT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.Speakers.FrontLeftOfCenter\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SPEAKER_FRONT_LEFT_OF_CENTER']/*\"/>\t\n            <unmanaged>SPEAKER_FRONT_LEFT_OF_CENTER</unmanaged>\t\n            <unmanaged-short>SPEAKER_FRONT_LEFT_OF_CENTER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.Speakers.FrontRightOfCenter\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SPEAKER_FRONT_RIGHT_OF_CENTER']/*\"/>\t\n            <unmanaged>SPEAKER_FRONT_RIGHT_OF_CENTER</unmanaged>\t\n            <unmanaged-short>SPEAKER_FRONT_RIGHT_OF_CENTER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.Speakers.BackCenter\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SPEAKER_BACK_CENTER']/*\"/>\t\n            <unmanaged>SPEAKER_BACK_CENTER</unmanaged>\t\n            <unmanaged-short>SPEAKER_BACK_CENTER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.Speakers.SideLeft\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SPEAKER_SIDE_LEFT']/*\"/>\t\n            <unmanaged>SPEAKER_SIDE_LEFT</unmanaged>\t\n            <unmanaged-short>SPEAKER_SIDE_LEFT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.Speakers.SideRight\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SPEAKER_SIDE_RIGHT']/*\"/>\t\n            <unmanaged>SPEAKER_SIDE_RIGHT</unmanaged>\t\n            <unmanaged-short>SPEAKER_SIDE_RIGHT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.Speakers.TopCenter\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SPEAKER_TOP_CENTER']/*\"/>\t\n            <unmanaged>SPEAKER_TOP_CENTER</unmanaged>\t\n            <unmanaged-short>SPEAKER_TOP_CENTER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.Speakers.TopFrontLeft\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SPEAKER_TOP_FRONT_LEFT']/*\"/>\t\n            <unmanaged>SPEAKER_TOP_FRONT_LEFT</unmanaged>\t\n            <unmanaged-short>SPEAKER_TOP_FRONT_LEFT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.Speakers.TopFrontCenter\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SPEAKER_TOP_FRONT_CENTER']/*\"/>\t\n            <unmanaged>SPEAKER_TOP_FRONT_CENTER</unmanaged>\t\n            <unmanaged-short>SPEAKER_TOP_FRONT_CENTER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.Speakers.TopFrontRight\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SPEAKER_TOP_FRONT_RIGHT']/*\"/>\t\n            <unmanaged>SPEAKER_TOP_FRONT_RIGHT</unmanaged>\t\n            <unmanaged-short>SPEAKER_TOP_FRONT_RIGHT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.Speakers.TopBackLeft\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SPEAKER_TOP_BACK_LEFT']/*\"/>\t\n            <unmanaged>SPEAKER_TOP_BACK_LEFT</unmanaged>\t\n            <unmanaged-short>SPEAKER_TOP_BACK_LEFT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.Speakers.TopBackCenter\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SPEAKER_TOP_BACK_CENTER']/*\"/>\t\n            <unmanaged>SPEAKER_TOP_BACK_CENTER</unmanaged>\t\n            <unmanaged-short>SPEAKER_TOP_BACK_CENTER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.Speakers.TopBackRight\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SPEAKER_TOP_BACK_RIGHT']/*\"/>\t\n            <unmanaged>SPEAKER_TOP_BACK_RIGHT</unmanaged>\t\n            <unmanaged-short>SPEAKER_TOP_BACK_RIGHT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.Speakers.Reserved\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SPEAKER_RESERVED']/*\"/>\t\n            <unmanaged>SPEAKER_RESERVED</unmanaged>\t\n            <unmanaged-short>SPEAKER_RESERVED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.Speakers.All\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SPEAKER_ALL']/*\"/>\t\n            <unmanaged>SPEAKER_ALL</unmanaged>\t\n            <unmanaged-short>SPEAKER_ALL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.Speakers.Mono\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SPEAKER_MONO']/*\"/>\t\n            <unmanaged>SPEAKER_MONO</unmanaged>\t\n            <unmanaged-short>SPEAKER_MONO</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.Speakers.Stereo\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SPEAKER_STEREO']/*\"/>\t\n            <unmanaged>SPEAKER_STEREO</unmanaged>\t\n            <unmanaged-short>SPEAKER_STEREO</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.Speakers.TwoPointOne\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SPEAKER_2POINT1']/*\"/>\t\n            <unmanaged>SPEAKER_2POINT1</unmanaged>\t\n            <unmanaged-short>SPEAKER_2POINT1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.Speakers.Surround\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SPEAKER_SURROUND']/*\"/>\t\n            <unmanaged>SPEAKER_SURROUND</unmanaged>\t\n            <unmanaged-short>SPEAKER_SURROUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.Speakers.Quad\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SPEAKER_QUAD']/*\"/>\t\n            <unmanaged>SPEAKER_QUAD</unmanaged>\t\n            <unmanaged-short>SPEAKER_QUAD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.Speakers.FourPointOne\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SPEAKER_4POINT1']/*\"/>\t\n            <unmanaged>SPEAKER_4POINT1</unmanaged>\t\n            <unmanaged-short>SPEAKER_4POINT1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.Speakers.FivePointOne\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SPEAKER_5POINT1']/*\"/>\t\n            <unmanaged>SPEAKER_5POINT1</unmanaged>\t\n            <unmanaged-short>SPEAKER_5POINT1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.Speakers.SevenPointOne\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SPEAKER_7POINT1']/*\"/>\t\n            <unmanaged>SPEAKER_7POINT1</unmanaged>\t\n            <unmanaged-short>SPEAKER_7POINT1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.Speakers.FivePointOneSurround\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SPEAKER_5POINT1_SURROUND']/*\"/>\t\n            <unmanaged>SPEAKER_5POINT1_SURROUND</unmanaged>\t\n            <unmanaged-short>SPEAKER_5POINT1_SURROUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.Speakers.SevenPointOneSurround\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SPEAKER_7POINT1_SURROUND']/*\"/>\t\n            <unmanaged>SPEAKER_7POINT1_SURROUND</unmanaged>\t\n            <unmanaged-short>SPEAKER_7POINT1_SURROUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.Speakers.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Multimedia.UsageId\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_ID']/*\"/>\t\n            <unmanaged>HID_USAGE_ID</unmanaged>\t\n            <unmanaged-short>HID_USAGE_ID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.GenericPointer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_GENERIC_POINTER']/*\"/>\t\n            <unmanaged>HID_USAGE_GENERIC_POINTER</unmanaged>\t\n            <unmanaged-short>HID_USAGE_GENERIC_POINTER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.GenericMouse\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_GENERIC_MOUSE']/*\"/>\t\n            <unmanaged>HID_USAGE_GENERIC_MOUSE</unmanaged>\t\n            <unmanaged-short>HID_USAGE_GENERIC_MOUSE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.GenericJoystick\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_GENERIC_JOYSTICK']/*\"/>\t\n            <unmanaged>HID_USAGE_GENERIC_JOYSTICK</unmanaged>\t\n            <unmanaged-short>HID_USAGE_GENERIC_JOYSTICK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.GenericGamepad\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_GENERIC_GAMEPAD']/*\"/>\t\n            <unmanaged>HID_USAGE_GENERIC_GAMEPAD</unmanaged>\t\n            <unmanaged-short>HID_USAGE_GENERIC_GAMEPAD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.GenericKeyboard\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_GENERIC_KEYBOARD']/*\"/>\t\n            <unmanaged>HID_USAGE_GENERIC_KEYBOARD</unmanaged>\t\n            <unmanaged-short>HID_USAGE_GENERIC_KEYBOARD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.GenericKeypad\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_GENERIC_KEYPAD']/*\"/>\t\n            <unmanaged>HID_USAGE_GENERIC_KEYPAD</unmanaged>\t\n            <unmanaged-short>HID_USAGE_GENERIC_KEYPAD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.GenericSystemCtl\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_GENERIC_SYSTEM_CTL']/*\"/>\t\n            <unmanaged>HID_USAGE_GENERIC_SYSTEM_CTL</unmanaged>\t\n            <unmanaged-short>HID_USAGE_GENERIC_SYSTEM_CTL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.GenericX\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_GENERIC_X']/*\"/>\t\n            <unmanaged>HID_USAGE_GENERIC_X</unmanaged>\t\n            <unmanaged-short>HID_USAGE_GENERIC_X</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.GenericY\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_GENERIC_Y']/*\"/>\t\n            <unmanaged>HID_USAGE_GENERIC_Y</unmanaged>\t\n            <unmanaged-short>HID_USAGE_GENERIC_Y</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.GenericZ\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_GENERIC_Z']/*\"/>\t\n            <unmanaged>HID_USAGE_GENERIC_Z</unmanaged>\t\n            <unmanaged-short>HID_USAGE_GENERIC_Z</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.GenericRx\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_GENERIC_RX']/*\"/>\t\n            <unmanaged>HID_USAGE_GENERIC_RX</unmanaged>\t\n            <unmanaged-short>HID_USAGE_GENERIC_RX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.GenericRy\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_GENERIC_RY']/*\"/>\t\n            <unmanaged>HID_USAGE_GENERIC_RY</unmanaged>\t\n            <unmanaged-short>HID_USAGE_GENERIC_RY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.GenericRz\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_GENERIC_RZ']/*\"/>\t\n            <unmanaged>HID_USAGE_GENERIC_RZ</unmanaged>\t\n            <unmanaged-short>HID_USAGE_GENERIC_RZ</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.GenericSlider\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_GENERIC_SLIDER']/*\"/>\t\n            <unmanaged>HID_USAGE_GENERIC_SLIDER</unmanaged>\t\n            <unmanaged-short>HID_USAGE_GENERIC_SLIDER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.GenericDial\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_GENERIC_DIAL']/*\"/>\t\n            <unmanaged>HID_USAGE_GENERIC_DIAL</unmanaged>\t\n            <unmanaged-short>HID_USAGE_GENERIC_DIAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.GenericWheel\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_GENERIC_WHEEL']/*\"/>\t\n            <unmanaged>HID_USAGE_GENERIC_WHEEL</unmanaged>\t\n            <unmanaged-short>HID_USAGE_GENERIC_WHEEL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.GenericHatswitch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_GENERIC_HATSWITCH']/*\"/>\t\n            <unmanaged>HID_USAGE_GENERIC_HATSWITCH</unmanaged>\t\n            <unmanaged-short>HID_USAGE_GENERIC_HATSWITCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.GenericCountedBuffer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_GENERIC_COUNTED_BUFFER']/*\"/>\t\n            <unmanaged>HID_USAGE_GENERIC_COUNTED_BUFFER</unmanaged>\t\n            <unmanaged-short>HID_USAGE_GENERIC_COUNTED_BUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.GenericByteCount\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_GENERIC_BYTE_COUNT']/*\"/>\t\n            <unmanaged>HID_USAGE_GENERIC_BYTE_COUNT</unmanaged>\t\n            <unmanaged-short>HID_USAGE_GENERIC_BYTE_COUNT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.GenericMotionWakeup\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_GENERIC_MOTION_WAKEUP']/*\"/>\t\n            <unmanaged>HID_USAGE_GENERIC_MOTION_WAKEUP</unmanaged>\t\n            <unmanaged-short>HID_USAGE_GENERIC_MOTION_WAKEUP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.GenericVx\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_GENERIC_VX']/*\"/>\t\n            <unmanaged>HID_USAGE_GENERIC_VX</unmanaged>\t\n            <unmanaged-short>HID_USAGE_GENERIC_VX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.GenericVy\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_GENERIC_VY']/*\"/>\t\n            <unmanaged>HID_USAGE_GENERIC_VY</unmanaged>\t\n            <unmanaged-short>HID_USAGE_GENERIC_VY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.GenericVz\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_GENERIC_VZ']/*\"/>\t\n            <unmanaged>HID_USAGE_GENERIC_VZ</unmanaged>\t\n            <unmanaged-short>HID_USAGE_GENERIC_VZ</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.GenericVbrx\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_GENERIC_VBRX']/*\"/>\t\n            <unmanaged>HID_USAGE_GENERIC_VBRX</unmanaged>\t\n            <unmanaged-short>HID_USAGE_GENERIC_VBRX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.GenericVbry\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_GENERIC_VBRY']/*\"/>\t\n            <unmanaged>HID_USAGE_GENERIC_VBRY</unmanaged>\t\n            <unmanaged-short>HID_USAGE_GENERIC_VBRY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.GenericVbrz\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_GENERIC_VBRZ']/*\"/>\t\n            <unmanaged>HID_USAGE_GENERIC_VBRZ</unmanaged>\t\n            <unmanaged-short>HID_USAGE_GENERIC_VBRZ</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.GenericVno\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_GENERIC_VNO']/*\"/>\t\n            <unmanaged>HID_USAGE_GENERIC_VNO</unmanaged>\t\n            <unmanaged-short>HID_USAGE_GENERIC_VNO</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.GenericSysctlPower\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_GENERIC_SYSCTL_POWER']/*\"/>\t\n            <unmanaged>HID_USAGE_GENERIC_SYSCTL_POWER</unmanaged>\t\n            <unmanaged-short>HID_USAGE_GENERIC_SYSCTL_POWER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.GenericSysctlSleep\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_GENERIC_SYSCTL_SLEEP']/*\"/>\t\n            <unmanaged>HID_USAGE_GENERIC_SYSCTL_SLEEP</unmanaged>\t\n            <unmanaged-short>HID_USAGE_GENERIC_SYSCTL_SLEEP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.GenericSysctlWake\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_GENERIC_SYSCTL_WAKE']/*\"/>\t\n            <unmanaged>HID_USAGE_GENERIC_SYSCTL_WAKE</unmanaged>\t\n            <unmanaged-short>HID_USAGE_GENERIC_SYSCTL_WAKE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.GenericSysctlContextMenu\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_GENERIC_SYSCTL_CONTEXT_MENU']/*\"/>\t\n            <unmanaged>HID_USAGE_GENERIC_SYSCTL_CONTEXT_MENU</unmanaged>\t\n            <unmanaged-short>HID_USAGE_GENERIC_SYSCTL_CONTEXT_MENU</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.GenericSysctlMainMenu\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_GENERIC_SYSCTL_MAIN_MENU']/*\"/>\t\n            <unmanaged>HID_USAGE_GENERIC_SYSCTL_MAIN_MENU</unmanaged>\t\n            <unmanaged-short>HID_USAGE_GENERIC_SYSCTL_MAIN_MENU</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.GenericSysctlAppMenu\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_GENERIC_SYSCTL_APP_MENU']/*\"/>\t\n            <unmanaged>HID_USAGE_GENERIC_SYSCTL_APP_MENU</unmanaged>\t\n            <unmanaged-short>HID_USAGE_GENERIC_SYSCTL_APP_MENU</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.GenericSysctlHelpMenu\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_GENERIC_SYSCTL_HELP_MENU']/*\"/>\t\n            <unmanaged>HID_USAGE_GENERIC_SYSCTL_HELP_MENU</unmanaged>\t\n            <unmanaged-short>HID_USAGE_GENERIC_SYSCTL_HELP_MENU</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.GenericSysctlMenuExit\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_GENERIC_SYSCTL_MENU_EXIT']/*\"/>\t\n            <unmanaged>HID_USAGE_GENERIC_SYSCTL_MENU_EXIT</unmanaged>\t\n            <unmanaged-short>HID_USAGE_GENERIC_SYSCTL_MENU_EXIT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.GenericSysctlMenuSelect\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_GENERIC_SYSCTL_MENU_SELECT']/*\"/>\t\n            <unmanaged>HID_USAGE_GENERIC_SYSCTL_MENU_SELECT</unmanaged>\t\n            <unmanaged-short>HID_USAGE_GENERIC_SYSCTL_MENU_SELECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.GenericSysctlMenuRight\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_GENERIC_SYSCTL_MENU_RIGHT']/*\"/>\t\n            <unmanaged>HID_USAGE_GENERIC_SYSCTL_MENU_RIGHT</unmanaged>\t\n            <unmanaged-short>HID_USAGE_GENERIC_SYSCTL_MENU_RIGHT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.GenericSysctlMenuLeft\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_GENERIC_SYSCTL_MENU_LEFT']/*\"/>\t\n            <unmanaged>HID_USAGE_GENERIC_SYSCTL_MENU_LEFT</unmanaged>\t\n            <unmanaged-short>HID_USAGE_GENERIC_SYSCTL_MENU_LEFT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.GenericSysctlMenuUp\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_GENERIC_SYSCTL_MENU_UP']/*\"/>\t\n            <unmanaged>HID_USAGE_GENERIC_SYSCTL_MENU_UP</unmanaged>\t\n            <unmanaged-short>HID_USAGE_GENERIC_SYSCTL_MENU_UP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.GenericSysctlMenuDown\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_GENERIC_SYSCTL_MENU_DOWN']/*\"/>\t\n            <unmanaged>HID_USAGE_GENERIC_SYSCTL_MENU_DOWN</unmanaged>\t\n            <unmanaged-short>HID_USAGE_GENERIC_SYSCTL_MENU_DOWN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.SimulationRudder\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_SIMULATION_RUDDER']/*\"/>\t\n            <unmanaged>HID_USAGE_SIMULATION_RUDDER</unmanaged>\t\n            <unmanaged-short>HID_USAGE_SIMULATION_RUDDER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.SimulationThrottle\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_SIMULATION_THROTTLE']/*\"/>\t\n            <unmanaged>HID_USAGE_SIMULATION_THROTTLE</unmanaged>\t\n            <unmanaged-short>HID_USAGE_SIMULATION_THROTTLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.KeyboardNoevent\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_KEYBOARD_NOEVENT']/*\"/>\t\n            <unmanaged>HID_USAGE_KEYBOARD_NOEVENT</unmanaged>\t\n            <unmanaged-short>HID_USAGE_KEYBOARD_NOEVENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.KeyboardRollover\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_KEYBOARD_ROLLOVER']/*\"/>\t\n            <unmanaged>HID_USAGE_KEYBOARD_ROLLOVER</unmanaged>\t\n            <unmanaged-short>HID_USAGE_KEYBOARD_ROLLOVER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.KeyboardPostfail\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_KEYBOARD_POSTFAIL']/*\"/>\t\n            <unmanaged>HID_USAGE_KEYBOARD_POSTFAIL</unmanaged>\t\n            <unmanaged-short>HID_USAGE_KEYBOARD_POSTFAIL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.KeyboardUndefined\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_KEYBOARD_UNDEFINED']/*\"/>\t\n            <unmanaged>HID_USAGE_KEYBOARD_UNDEFINED</unmanaged>\t\n            <unmanaged-short>HID_USAGE_KEYBOARD_UNDEFINED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.KeyboardAA\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_KEYBOARD_aA']/*\"/>\t\n            <unmanaged>HID_USAGE_KEYBOARD_aA</unmanaged>\t\n            <unmanaged-short>HID_USAGE_KEYBOARD_aA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.KeyboardZZ\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_KEYBOARD_zZ']/*\"/>\t\n            <unmanaged>HID_USAGE_KEYBOARD_zZ</unmanaged>\t\n            <unmanaged-short>HID_USAGE_KEYBOARD_zZ</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.KeyboardOne\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_KEYBOARD_ONE']/*\"/>\t\n            <unmanaged>HID_USAGE_KEYBOARD_ONE</unmanaged>\t\n            <unmanaged-short>HID_USAGE_KEYBOARD_ONE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.KeyboardZero\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_KEYBOARD_ZERO']/*\"/>\t\n            <unmanaged>HID_USAGE_KEYBOARD_ZERO</unmanaged>\t\n            <unmanaged-short>HID_USAGE_KEYBOARD_ZERO</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.KeyboardLctrl\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_KEYBOARD_LCTRL']/*\"/>\t\n            <unmanaged>HID_USAGE_KEYBOARD_LCTRL</unmanaged>\t\n            <unmanaged-short>HID_USAGE_KEYBOARD_LCTRL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.KeyboardLshft\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_KEYBOARD_LSHFT']/*\"/>\t\n            <unmanaged>HID_USAGE_KEYBOARD_LSHFT</unmanaged>\t\n            <unmanaged-short>HID_USAGE_KEYBOARD_LSHFT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.KeyboardLalt\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_KEYBOARD_LALT']/*\"/>\t\n            <unmanaged>HID_USAGE_KEYBOARD_LALT</unmanaged>\t\n            <unmanaged-short>HID_USAGE_KEYBOARD_LALT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.KeyboardLgui\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_KEYBOARD_LGUI']/*\"/>\t\n            <unmanaged>HID_USAGE_KEYBOARD_LGUI</unmanaged>\t\n            <unmanaged-short>HID_USAGE_KEYBOARD_LGUI</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.KeyboardRctrl\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_KEYBOARD_RCTRL']/*\"/>\t\n            <unmanaged>HID_USAGE_KEYBOARD_RCTRL</unmanaged>\t\n            <unmanaged-short>HID_USAGE_KEYBOARD_RCTRL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.KeyboardRshft\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_KEYBOARD_RSHFT']/*\"/>\t\n            <unmanaged>HID_USAGE_KEYBOARD_RSHFT</unmanaged>\t\n            <unmanaged-short>HID_USAGE_KEYBOARD_RSHFT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.KeyboardRalt\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_KEYBOARD_RALT']/*\"/>\t\n            <unmanaged>HID_USAGE_KEYBOARD_RALT</unmanaged>\t\n            <unmanaged-short>HID_USAGE_KEYBOARD_RALT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.KeyboardRgui\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_KEYBOARD_RGUI']/*\"/>\t\n            <unmanaged>HID_USAGE_KEYBOARD_RGUI</unmanaged>\t\n            <unmanaged-short>HID_USAGE_KEYBOARD_RGUI</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.KeyboardScrollLock\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_KEYBOARD_SCROLL_LOCK']/*\"/>\t\n            <unmanaged>HID_USAGE_KEYBOARD_SCROLL_LOCK</unmanaged>\t\n            <unmanaged-short>HID_USAGE_KEYBOARD_SCROLL_LOCK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.KeyboardNumLock\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_KEYBOARD_NUM_LOCK']/*\"/>\t\n            <unmanaged>HID_USAGE_KEYBOARD_NUM_LOCK</unmanaged>\t\n            <unmanaged-short>HID_USAGE_KEYBOARD_NUM_LOCK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.KeyboardCapsLock\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_KEYBOARD_CAPS_LOCK']/*\"/>\t\n            <unmanaged>HID_USAGE_KEYBOARD_CAPS_LOCK</unmanaged>\t\n            <unmanaged-short>HID_USAGE_KEYBOARD_CAPS_LOCK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.KeyboardF1\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_KEYBOARD_F1']/*\"/>\t\n            <unmanaged>HID_USAGE_KEYBOARD_F1</unmanaged>\t\n            <unmanaged-short>HID_USAGE_KEYBOARD_F1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.KeyboardF12\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_KEYBOARD_F12']/*\"/>\t\n            <unmanaged>HID_USAGE_KEYBOARD_F12</unmanaged>\t\n            <unmanaged-short>HID_USAGE_KEYBOARD_F12</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.KeyboardReturn\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_KEYBOARD_RETURN']/*\"/>\t\n            <unmanaged>HID_USAGE_KEYBOARD_RETURN</unmanaged>\t\n            <unmanaged-short>HID_USAGE_KEYBOARD_RETURN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.KeyboardEscape\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_KEYBOARD_ESCAPE']/*\"/>\t\n            <unmanaged>HID_USAGE_KEYBOARD_ESCAPE</unmanaged>\t\n            <unmanaged-short>HID_USAGE_KEYBOARD_ESCAPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.KeyboardDelete\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_KEYBOARD_DELETE']/*\"/>\t\n            <unmanaged>HID_USAGE_KEYBOARD_DELETE</unmanaged>\t\n            <unmanaged-short>HID_USAGE_KEYBOARD_DELETE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.KeyboardPrintScreen\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_KEYBOARD_PRINT_SCREEN']/*\"/>\t\n            <unmanaged>HID_USAGE_KEYBOARD_PRINT_SCREEN</unmanaged>\t\n            <unmanaged-short>HID_USAGE_KEYBOARD_PRINT_SCREEN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.LedNumLock\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_LED_NUM_LOCK']/*\"/>\t\n            <unmanaged>HID_USAGE_LED_NUM_LOCK</unmanaged>\t\n            <unmanaged-short>HID_USAGE_LED_NUM_LOCK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.LedCapsLock\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_LED_CAPS_LOCK']/*\"/>\t\n            <unmanaged>HID_USAGE_LED_CAPS_LOCK</unmanaged>\t\n            <unmanaged-short>HID_USAGE_LED_CAPS_LOCK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.LedScrollLock\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_LED_SCROLL_LOCK']/*\"/>\t\n            <unmanaged>HID_USAGE_LED_SCROLL_LOCK</unmanaged>\t\n            <unmanaged-short>HID_USAGE_LED_SCROLL_LOCK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.LedCompose\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_LED_COMPOSE']/*\"/>\t\n            <unmanaged>HID_USAGE_LED_COMPOSE</unmanaged>\t\n            <unmanaged-short>HID_USAGE_LED_COMPOSE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.LedKana\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_LED_KANA']/*\"/>\t\n            <unmanaged>HID_USAGE_LED_KANA</unmanaged>\t\n            <unmanaged-short>HID_USAGE_LED_KANA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.LedPower\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_LED_POWER']/*\"/>\t\n            <unmanaged>HID_USAGE_LED_POWER</unmanaged>\t\n            <unmanaged-short>HID_USAGE_LED_POWER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.LedShift\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_LED_SHIFT']/*\"/>\t\n            <unmanaged>HID_USAGE_LED_SHIFT</unmanaged>\t\n            <unmanaged-short>HID_USAGE_LED_SHIFT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.LedDoNotDisturb\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_LED_DO_NOT_DISTURB']/*\"/>\t\n            <unmanaged>HID_USAGE_LED_DO_NOT_DISTURB</unmanaged>\t\n            <unmanaged-short>HID_USAGE_LED_DO_NOT_DISTURB</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.LedMute\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_LED_MUTE']/*\"/>\t\n            <unmanaged>HID_USAGE_LED_MUTE</unmanaged>\t\n            <unmanaged-short>HID_USAGE_LED_MUTE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.LedToneEnable\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_LED_TONE_ENABLE']/*\"/>\t\n            <unmanaged>HID_USAGE_LED_TONE_ENABLE</unmanaged>\t\n            <unmanaged-short>HID_USAGE_LED_TONE_ENABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.LedHighCutFilter\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_LED_HIGH_CUT_FILTER']/*\"/>\t\n            <unmanaged>HID_USAGE_LED_HIGH_CUT_FILTER</unmanaged>\t\n            <unmanaged-short>HID_USAGE_LED_HIGH_CUT_FILTER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.LedLowCutFilter\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_LED_LOW_CUT_FILTER']/*\"/>\t\n            <unmanaged>HID_USAGE_LED_LOW_CUT_FILTER</unmanaged>\t\n            <unmanaged-short>HID_USAGE_LED_LOW_CUT_FILTER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.LedEqualizerEnable\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_LED_EQUALIZER_ENABLE']/*\"/>\t\n            <unmanaged>HID_USAGE_LED_EQUALIZER_ENABLE</unmanaged>\t\n            <unmanaged-short>HID_USAGE_LED_EQUALIZER_ENABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.LedSoundFieldOn\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_LED_SOUND_FIELD_ON']/*\"/>\t\n            <unmanaged>HID_USAGE_LED_SOUND_FIELD_ON</unmanaged>\t\n            <unmanaged-short>HID_USAGE_LED_SOUND_FIELD_ON</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.LedSurroundFieldOn\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_LED_SURROUND_FIELD_ON']/*\"/>\t\n            <unmanaged>HID_USAGE_LED_SURROUND_FIELD_ON</unmanaged>\t\n            <unmanaged-short>HID_USAGE_LED_SURROUND_FIELD_ON</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.LedRepeat\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_LED_REPEAT']/*\"/>\t\n            <unmanaged>HID_USAGE_LED_REPEAT</unmanaged>\t\n            <unmanaged-short>HID_USAGE_LED_REPEAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.LedStereo\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_LED_STEREO']/*\"/>\t\n            <unmanaged>HID_USAGE_LED_STEREO</unmanaged>\t\n            <unmanaged-short>HID_USAGE_LED_STEREO</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.LedSamplingRateDetect\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_LED_SAMPLING_RATE_DETECT']/*\"/>\t\n            <unmanaged>HID_USAGE_LED_SAMPLING_RATE_DETECT</unmanaged>\t\n            <unmanaged-short>HID_USAGE_LED_SAMPLING_RATE_DETECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.LedSpinning\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_LED_SPINNING']/*\"/>\t\n            <unmanaged>HID_USAGE_LED_SPINNING</unmanaged>\t\n            <unmanaged-short>HID_USAGE_LED_SPINNING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.LedCav\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_LED_CAV']/*\"/>\t\n            <unmanaged>HID_USAGE_LED_CAV</unmanaged>\t\n            <unmanaged-short>HID_USAGE_LED_CAV</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.LedClv\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_LED_CLV']/*\"/>\t\n            <unmanaged>HID_USAGE_LED_CLV</unmanaged>\t\n            <unmanaged-short>HID_USAGE_LED_CLV</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.LedRecordingFormatDet\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_LED_RECORDING_FORMAT_DET']/*\"/>\t\n            <unmanaged>HID_USAGE_LED_RECORDING_FORMAT_DET</unmanaged>\t\n            <unmanaged-short>HID_USAGE_LED_RECORDING_FORMAT_DET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.LedOffHook\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_LED_OFF_HOOK']/*\"/>\t\n            <unmanaged>HID_USAGE_LED_OFF_HOOK</unmanaged>\t\n            <unmanaged-short>HID_USAGE_LED_OFF_HOOK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.LedRing\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_LED_RING']/*\"/>\t\n            <unmanaged>HID_USAGE_LED_RING</unmanaged>\t\n            <unmanaged-short>HID_USAGE_LED_RING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.LedMessageWaiting\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_LED_MESSAGE_WAITING']/*\"/>\t\n            <unmanaged>HID_USAGE_LED_MESSAGE_WAITING</unmanaged>\t\n            <unmanaged-short>HID_USAGE_LED_MESSAGE_WAITING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.LedDataMode\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_LED_DATA_MODE']/*\"/>\t\n            <unmanaged>HID_USAGE_LED_DATA_MODE</unmanaged>\t\n            <unmanaged-short>HID_USAGE_LED_DATA_MODE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.LedBatteryOperation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_LED_BATTERY_OPERATION']/*\"/>\t\n            <unmanaged>HID_USAGE_LED_BATTERY_OPERATION</unmanaged>\t\n            <unmanaged-short>HID_USAGE_LED_BATTERY_OPERATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.LedBatteryOk\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_LED_BATTERY_OK']/*\"/>\t\n            <unmanaged>HID_USAGE_LED_BATTERY_OK</unmanaged>\t\n            <unmanaged-short>HID_USAGE_LED_BATTERY_OK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.LedBatteryLow\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_LED_BATTERY_LOW']/*\"/>\t\n            <unmanaged>HID_USAGE_LED_BATTERY_LOW</unmanaged>\t\n            <unmanaged-short>HID_USAGE_LED_BATTERY_LOW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.LedSpeaker\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_LED_SPEAKER']/*\"/>\t\n            <unmanaged>HID_USAGE_LED_SPEAKER</unmanaged>\t\n            <unmanaged-short>HID_USAGE_LED_SPEAKER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.LedHeadSet\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_LED_HEAD_SET']/*\"/>\t\n            <unmanaged>HID_USAGE_LED_HEAD_SET</unmanaged>\t\n            <unmanaged-short>HID_USAGE_LED_HEAD_SET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.LedHold\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_LED_HOLD']/*\"/>\t\n            <unmanaged>HID_USAGE_LED_HOLD</unmanaged>\t\n            <unmanaged-short>HID_USAGE_LED_HOLD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.LedMicrophone\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_LED_MICROPHONE']/*\"/>\t\n            <unmanaged>HID_USAGE_LED_MICROPHONE</unmanaged>\t\n            <unmanaged-short>HID_USAGE_LED_MICROPHONE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.LedCoverage\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_LED_COVERAGE']/*\"/>\t\n            <unmanaged>HID_USAGE_LED_COVERAGE</unmanaged>\t\n            <unmanaged-short>HID_USAGE_LED_COVERAGE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.LedNightMode\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_LED_NIGHT_MODE']/*\"/>\t\n            <unmanaged>HID_USAGE_LED_NIGHT_MODE</unmanaged>\t\n            <unmanaged-short>HID_USAGE_LED_NIGHT_MODE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.LedSendCalls\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_LED_SEND_CALLS']/*\"/>\t\n            <unmanaged>HID_USAGE_LED_SEND_CALLS</unmanaged>\t\n            <unmanaged-short>HID_USAGE_LED_SEND_CALLS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.LedCallPickup\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_LED_CALL_PICKUP']/*\"/>\t\n            <unmanaged>HID_USAGE_LED_CALL_PICKUP</unmanaged>\t\n            <unmanaged-short>HID_USAGE_LED_CALL_PICKUP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.LedConference\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_LED_CONFERENCE']/*\"/>\t\n            <unmanaged>HID_USAGE_LED_CONFERENCE</unmanaged>\t\n            <unmanaged-short>HID_USAGE_LED_CONFERENCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.LedStandBy\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_LED_STAND_BY']/*\"/>\t\n            <unmanaged>HID_USAGE_LED_STAND_BY</unmanaged>\t\n            <unmanaged-short>HID_USAGE_LED_STAND_BY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.LedCameraOn\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_LED_CAMERA_ON']/*\"/>\t\n            <unmanaged>HID_USAGE_LED_CAMERA_ON</unmanaged>\t\n            <unmanaged-short>HID_USAGE_LED_CAMERA_ON</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.LedCameraOff\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_LED_CAMERA_OFF']/*\"/>\t\n            <unmanaged>HID_USAGE_LED_CAMERA_OFF</unmanaged>\t\n            <unmanaged-short>HID_USAGE_LED_CAMERA_OFF</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.LedOnLine\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_LED_ON_LINE']/*\"/>\t\n            <unmanaged>HID_USAGE_LED_ON_LINE</unmanaged>\t\n            <unmanaged-short>HID_USAGE_LED_ON_LINE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.LedOffLine\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_LED_OFF_LINE']/*\"/>\t\n            <unmanaged>HID_USAGE_LED_OFF_LINE</unmanaged>\t\n            <unmanaged-short>HID_USAGE_LED_OFF_LINE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.LedBusy\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_LED_BUSY']/*\"/>\t\n            <unmanaged>HID_USAGE_LED_BUSY</unmanaged>\t\n            <unmanaged-short>HID_USAGE_LED_BUSY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.LedReady\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_LED_READY']/*\"/>\t\n            <unmanaged>HID_USAGE_LED_READY</unmanaged>\t\n            <unmanaged-short>HID_USAGE_LED_READY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.LedPaperOut\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_LED_PAPER_OUT']/*\"/>\t\n            <unmanaged>HID_USAGE_LED_PAPER_OUT</unmanaged>\t\n            <unmanaged-short>HID_USAGE_LED_PAPER_OUT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.LedPaperJam\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_LED_PAPER_JAM']/*\"/>\t\n            <unmanaged>HID_USAGE_LED_PAPER_JAM</unmanaged>\t\n            <unmanaged-short>HID_USAGE_LED_PAPER_JAM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.LedRemote\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_LED_REMOTE']/*\"/>\t\n            <unmanaged>HID_USAGE_LED_REMOTE</unmanaged>\t\n            <unmanaged-short>HID_USAGE_LED_REMOTE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.LedForward\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_LED_FORWARD']/*\"/>\t\n            <unmanaged>HID_USAGE_LED_FORWARD</unmanaged>\t\n            <unmanaged-short>HID_USAGE_LED_FORWARD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.LedReverse\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_LED_REVERSE']/*\"/>\t\n            <unmanaged>HID_USAGE_LED_REVERSE</unmanaged>\t\n            <unmanaged-short>HID_USAGE_LED_REVERSE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.LedStop\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_LED_STOP']/*\"/>\t\n            <unmanaged>HID_USAGE_LED_STOP</unmanaged>\t\n            <unmanaged-short>HID_USAGE_LED_STOP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.LedRewind\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_LED_REWIND']/*\"/>\t\n            <unmanaged>HID_USAGE_LED_REWIND</unmanaged>\t\n            <unmanaged-short>HID_USAGE_LED_REWIND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.LedFastForward\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_LED_FAST_FORWARD']/*\"/>\t\n            <unmanaged>HID_USAGE_LED_FAST_FORWARD</unmanaged>\t\n            <unmanaged-short>HID_USAGE_LED_FAST_FORWARD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.LedPlay\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_LED_PLAY']/*\"/>\t\n            <unmanaged>HID_USAGE_LED_PLAY</unmanaged>\t\n            <unmanaged-short>HID_USAGE_LED_PLAY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.LedPause\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_LED_PAUSE']/*\"/>\t\n            <unmanaged>HID_USAGE_LED_PAUSE</unmanaged>\t\n            <unmanaged-short>HID_USAGE_LED_PAUSE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.LedRecord\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_LED_RECORD']/*\"/>\t\n            <unmanaged>HID_USAGE_LED_RECORD</unmanaged>\t\n            <unmanaged-short>HID_USAGE_LED_RECORD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.LedError\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_LED_ERROR']/*\"/>\t\n            <unmanaged>HID_USAGE_LED_ERROR</unmanaged>\t\n            <unmanaged-short>HID_USAGE_LED_ERROR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.LedSelectedIndicator\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_LED_SELECTED_INDICATOR']/*\"/>\t\n            <unmanaged>HID_USAGE_LED_SELECTED_INDICATOR</unmanaged>\t\n            <unmanaged-short>HID_USAGE_LED_SELECTED_INDICATOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.LedInUseIndicator\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_LED_IN_USE_INDICATOR']/*\"/>\t\n            <unmanaged>HID_USAGE_LED_IN_USE_INDICATOR</unmanaged>\t\n            <unmanaged-short>HID_USAGE_LED_IN_USE_INDICATOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.LedMultiModeIndicator\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_LED_MULTI_MODE_INDICATOR']/*\"/>\t\n            <unmanaged>HID_USAGE_LED_MULTI_MODE_INDICATOR</unmanaged>\t\n            <unmanaged-short>HID_USAGE_LED_MULTI_MODE_INDICATOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.LedIndicatorOn\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_LED_INDICATOR_ON']/*\"/>\t\n            <unmanaged>HID_USAGE_LED_INDICATOR_ON</unmanaged>\t\n            <unmanaged-short>HID_USAGE_LED_INDICATOR_ON</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.LedIndicatorFlash\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_LED_INDICATOR_FLASH']/*\"/>\t\n            <unmanaged>HID_USAGE_LED_INDICATOR_FLASH</unmanaged>\t\n            <unmanaged-short>HID_USAGE_LED_INDICATOR_FLASH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.LedIndicatorSlowBlink\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_LED_INDICATOR_SLOW_BLINK']/*\"/>\t\n            <unmanaged>HID_USAGE_LED_INDICATOR_SLOW_BLINK</unmanaged>\t\n            <unmanaged-short>HID_USAGE_LED_INDICATOR_SLOW_BLINK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.LedIndicatorFastBlink\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_LED_INDICATOR_FAST_BLINK']/*\"/>\t\n            <unmanaged>HID_USAGE_LED_INDICATOR_FAST_BLINK</unmanaged>\t\n            <unmanaged-short>HID_USAGE_LED_INDICATOR_FAST_BLINK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.LedIndicatorOff\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_LED_INDICATOR_OFF']/*\"/>\t\n            <unmanaged>HID_USAGE_LED_INDICATOR_OFF</unmanaged>\t\n            <unmanaged-short>HID_USAGE_LED_INDICATOR_OFF</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.LedFlashOnTime\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_LED_FLASH_ON_TIME']/*\"/>\t\n            <unmanaged>HID_USAGE_LED_FLASH_ON_TIME</unmanaged>\t\n            <unmanaged-short>HID_USAGE_LED_FLASH_ON_TIME</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.LedSlowBlinkOnTime\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_LED_SLOW_BLINK_ON_TIME']/*\"/>\t\n            <unmanaged>HID_USAGE_LED_SLOW_BLINK_ON_TIME</unmanaged>\t\n            <unmanaged-short>HID_USAGE_LED_SLOW_BLINK_ON_TIME</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.LedSlowBlinkOffTime\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_LED_SLOW_BLINK_OFF_TIME']/*\"/>\t\n            <unmanaged>HID_USAGE_LED_SLOW_BLINK_OFF_TIME</unmanaged>\t\n            <unmanaged-short>HID_USAGE_LED_SLOW_BLINK_OFF_TIME</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.LedFastBlinkOnTime\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_LED_FAST_BLINK_ON_TIME']/*\"/>\t\n            <unmanaged>HID_USAGE_LED_FAST_BLINK_ON_TIME</unmanaged>\t\n            <unmanaged-short>HID_USAGE_LED_FAST_BLINK_ON_TIME</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.LedFastBlinkOffTime\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_LED_FAST_BLINK_OFF_TIME']/*\"/>\t\n            <unmanaged>HID_USAGE_LED_FAST_BLINK_OFF_TIME</unmanaged>\t\n            <unmanaged-short>HID_USAGE_LED_FAST_BLINK_OFF_TIME</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.LedIndicatorColor\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_LED_INDICATOR_COLOR']/*\"/>\t\n            <unmanaged>HID_USAGE_LED_INDICATOR_COLOR</unmanaged>\t\n            <unmanaged-short>HID_USAGE_LED_INDICATOR_COLOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.LedRed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_LED_RED']/*\"/>\t\n            <unmanaged>HID_USAGE_LED_RED</unmanaged>\t\n            <unmanaged-short>HID_USAGE_LED_RED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.LedGreen\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_LED_GREEN']/*\"/>\t\n            <unmanaged>HID_USAGE_LED_GREEN</unmanaged>\t\n            <unmanaged-short>HID_USAGE_LED_GREEN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.LedAmber\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_LED_AMBER']/*\"/>\t\n            <unmanaged>HID_USAGE_LED_AMBER</unmanaged>\t\n            <unmanaged-short>HID_USAGE_LED_AMBER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.LedGenericIndicator\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_LED_GENERIC_INDICATOR']/*\"/>\t\n            <unmanaged>HID_USAGE_LED_GENERIC_INDICATOR</unmanaged>\t\n            <unmanaged-short>HID_USAGE_LED_GENERIC_INDICATOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.TelephonyPhone\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_TELEPHONY_PHONE']/*\"/>\t\n            <unmanaged>HID_USAGE_TELEPHONY_PHONE</unmanaged>\t\n            <unmanaged-short>HID_USAGE_TELEPHONY_PHONE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.TelephonyAnsweringMachine\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_TELEPHONY_ANSWERING_MACHINE']/*\"/>\t\n            <unmanaged>HID_USAGE_TELEPHONY_ANSWERING_MACHINE</unmanaged>\t\n            <unmanaged-short>HID_USAGE_TELEPHONY_ANSWERING_MACHINE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.TelephonyMessageControls\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_TELEPHONY_MESSAGE_CONTROLS']/*\"/>\t\n            <unmanaged>HID_USAGE_TELEPHONY_MESSAGE_CONTROLS</unmanaged>\t\n            <unmanaged-short>HID_USAGE_TELEPHONY_MESSAGE_CONTROLS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.TelephonyHandset\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_TELEPHONY_HANDSET']/*\"/>\t\n            <unmanaged>HID_USAGE_TELEPHONY_HANDSET</unmanaged>\t\n            <unmanaged-short>HID_USAGE_TELEPHONY_HANDSET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.TelephonyHeadset\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_TELEPHONY_HEADSET']/*\"/>\t\n            <unmanaged>HID_USAGE_TELEPHONY_HEADSET</unmanaged>\t\n            <unmanaged-short>HID_USAGE_TELEPHONY_HEADSET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.TelephonyKeypad\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_TELEPHONY_KEYPAD']/*\"/>\t\n            <unmanaged>HID_USAGE_TELEPHONY_KEYPAD</unmanaged>\t\n            <unmanaged-short>HID_USAGE_TELEPHONY_KEYPAD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.TelephonyProgrammableButton\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_TELEPHONY_PROGRAMMABLE_BUTTON']/*\"/>\t\n            <unmanaged>HID_USAGE_TELEPHONY_PROGRAMMABLE_BUTTON</unmanaged>\t\n            <unmanaged-short>HID_USAGE_TELEPHONY_PROGRAMMABLE_BUTTON</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.TelephonyRedial\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_TELEPHONY_REDIAL']/*\"/>\t\n            <unmanaged>HID_USAGE_TELEPHONY_REDIAL</unmanaged>\t\n            <unmanaged-short>HID_USAGE_TELEPHONY_REDIAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.TelephonyTransfer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_TELEPHONY_TRANSFER']/*\"/>\t\n            <unmanaged>HID_USAGE_TELEPHONY_TRANSFER</unmanaged>\t\n            <unmanaged-short>HID_USAGE_TELEPHONY_TRANSFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.TelephonyDrop\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_TELEPHONY_DROP']/*\"/>\t\n            <unmanaged>HID_USAGE_TELEPHONY_DROP</unmanaged>\t\n            <unmanaged-short>HID_USAGE_TELEPHONY_DROP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.TelephonyLine\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_TELEPHONY_LINE']/*\"/>\t\n            <unmanaged>HID_USAGE_TELEPHONY_LINE</unmanaged>\t\n            <unmanaged-short>HID_USAGE_TELEPHONY_LINE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.TelephonyRingEnable\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_TELEPHONY_RING_ENABLE']/*\"/>\t\n            <unmanaged>HID_USAGE_TELEPHONY_RING_ENABLE</unmanaged>\t\n            <unmanaged-short>HID_USAGE_TELEPHONY_RING_ENABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.TelephonySend\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_TELEPHONY_SEND']/*\"/>\t\n            <unmanaged>HID_USAGE_TELEPHONY_SEND</unmanaged>\t\n            <unmanaged-short>HID_USAGE_TELEPHONY_SEND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.TelephonyKeypad0\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_TELEPHONY_KEYPAD_0']/*\"/>\t\n            <unmanaged>HID_USAGE_TELEPHONY_KEYPAD_0</unmanaged>\t\n            <unmanaged-short>HID_USAGE_TELEPHONY_KEYPAD_0</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.TelephonyKeypadD\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_TELEPHONY_KEYPAD_D']/*\"/>\t\n            <unmanaged>HID_USAGE_TELEPHONY_KEYPAD_D</unmanaged>\t\n            <unmanaged-short>HID_USAGE_TELEPHONY_KEYPAD_D</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.TelephonyHostAvailable\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_TELEPHONY_HOST_AVAILABLE']/*\"/>\t\n            <unmanaged>HID_USAGE_TELEPHONY_HOST_AVAILABLE</unmanaged>\t\n            <unmanaged-short>HID_USAGE_TELEPHONY_HOST_AVAILABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.MsBthHfDialnumber\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_MS_BTH_HF_DIALNUMBER']/*\"/>\t\n            <unmanaged>HID_USAGE_MS_BTH_HF_DIALNUMBER</unmanaged>\t\n            <unmanaged-short>HID_USAGE_MS_BTH_HF_DIALNUMBER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.MsBthHfDialmemory\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_MS_BTH_HF_DIALMEMORY']/*\"/>\t\n            <unmanaged>HID_USAGE_MS_BTH_HF_DIALMEMORY</unmanaged>\t\n            <unmanaged-short>HID_USAGE_MS_BTH_HF_DIALMEMORY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.Consumerctrl\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_CONSUMERCTRL']/*\"/>\t\n            <unmanaged>HID_USAGE_CONSUMERCTRL</unmanaged>\t\n            <unmanaged-short>HID_USAGE_CONSUMERCTRL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.DigitizerPen\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_DIGITIZER_PEN']/*\"/>\t\n            <unmanaged>HID_USAGE_DIGITIZER_PEN</unmanaged>\t\n            <unmanaged-short>HID_USAGE_DIGITIZER_PEN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.DigitizerInRange\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_DIGITIZER_IN_RANGE']/*\"/>\t\n            <unmanaged>HID_USAGE_DIGITIZER_IN_RANGE</unmanaged>\t\n            <unmanaged-short>HID_USAGE_DIGITIZER_IN_RANGE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.DigitizerTipSwitch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_DIGITIZER_TIP_SWITCH']/*\"/>\t\n            <unmanaged>HID_USAGE_DIGITIZER_TIP_SWITCH</unmanaged>\t\n            <unmanaged-short>HID_USAGE_DIGITIZER_TIP_SWITCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsageId.DigitizerBarrelSwitch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_DIGITIZER_BARREL_SWITCH']/*\"/>\t\n            <unmanaged>HID_USAGE_DIGITIZER_BARREL_SWITCH</unmanaged>\t\n            <unmanaged-short>HID_USAGE_DIGITIZER_BARREL_SWITCH</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Multimedia.UsagePage\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_PAGE']/*\"/>\t\n            <unmanaged>HID_USAGE_PAGE</unmanaged>\t\n            <unmanaged-short>HID_USAGE_PAGE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsagePage.Undefined\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_PAGE_UNDEFINED']/*\"/>\t\n            <unmanaged>HID_USAGE_PAGE_UNDEFINED</unmanaged>\t\n            <unmanaged-short>HID_USAGE_PAGE_UNDEFINED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsagePage.Generic\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_PAGE_GENERIC']/*\"/>\t\n            <unmanaged>HID_USAGE_PAGE_GENERIC</unmanaged>\t\n            <unmanaged-short>HID_USAGE_PAGE_GENERIC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsagePage.Simulation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_PAGE_SIMULATION']/*\"/>\t\n            <unmanaged>HID_USAGE_PAGE_SIMULATION</unmanaged>\t\n            <unmanaged-short>HID_USAGE_PAGE_SIMULATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsagePage.Vr\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_PAGE_VR']/*\"/>\t\n            <unmanaged>HID_USAGE_PAGE_VR</unmanaged>\t\n            <unmanaged-short>HID_USAGE_PAGE_VR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsagePage.Sport\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_PAGE_SPORT']/*\"/>\t\n            <unmanaged>HID_USAGE_PAGE_SPORT</unmanaged>\t\n            <unmanaged-short>HID_USAGE_PAGE_SPORT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsagePage.Game\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_PAGE_GAME']/*\"/>\t\n            <unmanaged>HID_USAGE_PAGE_GAME</unmanaged>\t\n            <unmanaged-short>HID_USAGE_PAGE_GAME</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsagePage.Keyboard\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_PAGE_KEYBOARD']/*\"/>\t\n            <unmanaged>HID_USAGE_PAGE_KEYBOARD</unmanaged>\t\n            <unmanaged-short>HID_USAGE_PAGE_KEYBOARD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsagePage.Led\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_PAGE_LED']/*\"/>\t\n            <unmanaged>HID_USAGE_PAGE_LED</unmanaged>\t\n            <unmanaged-short>HID_USAGE_PAGE_LED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsagePage.Button\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_PAGE_BUTTON']/*\"/>\t\n            <unmanaged>HID_USAGE_PAGE_BUTTON</unmanaged>\t\n            <unmanaged-short>HID_USAGE_PAGE_BUTTON</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsagePage.Ordinal\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_PAGE_ORDINAL']/*\"/>\t\n            <unmanaged>HID_USAGE_PAGE_ORDINAL</unmanaged>\t\n            <unmanaged-short>HID_USAGE_PAGE_ORDINAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsagePage.Telephony\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_PAGE_TELEPHONY']/*\"/>\t\n            <unmanaged>HID_USAGE_PAGE_TELEPHONY</unmanaged>\t\n            <unmanaged-short>HID_USAGE_PAGE_TELEPHONY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsagePage.Consumer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_PAGE_CONSUMER']/*\"/>\t\n            <unmanaged>HID_USAGE_PAGE_CONSUMER</unmanaged>\t\n            <unmanaged-short>HID_USAGE_PAGE_CONSUMER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsagePage.Digitizer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_PAGE_DIGITIZER']/*\"/>\t\n            <unmanaged>HID_USAGE_PAGE_DIGITIZER</unmanaged>\t\n            <unmanaged-short>HID_USAGE_PAGE_DIGITIZER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsagePage.Unicode\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_PAGE_UNICODE']/*\"/>\t\n            <unmanaged>HID_USAGE_PAGE_UNICODE</unmanaged>\t\n            <unmanaged-short>HID_USAGE_PAGE_UNICODE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsagePage.Alphanumeric\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_PAGE_ALPHANUMERIC']/*\"/>\t\n            <unmanaged>HID_USAGE_PAGE_ALPHANUMERIC</unmanaged>\t\n            <unmanaged-short>HID_USAGE_PAGE_ALPHANUMERIC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsagePage.MicrosoftBluetoothHandsfree\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_PAGE_MICROSOFT_BLUETOOTH_HANDSFREE']/*\"/>\t\n            <unmanaged>HID_USAGE_PAGE_MICROSOFT_BLUETOOTH_HANDSFREE</unmanaged>\t\n            <unmanaged-short>HID_USAGE_PAGE_MICROSOFT_BLUETOOTH_HANDSFREE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsagePage.Medical\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_PAGE_MEDICAL']/*\"/>\t\n            <unmanaged>HID_USAGE_PAGE_MEDICAL</unmanaged>\t\n            <unmanaged-short>HID_USAGE_PAGE_MEDICAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsagePage.MonitorPage0\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_PAGE_MONITOR_PAGE0']/*\"/>\t\n            <unmanaged>HID_USAGE_PAGE_MONITOR_PAGE0</unmanaged>\t\n            <unmanaged-short>HID_USAGE_PAGE_MONITOR_PAGE0</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsagePage.MonitorPage1\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_PAGE_MONITOR_PAGE1']/*\"/>\t\n            <unmanaged>HID_USAGE_PAGE_MONITOR_PAGE1</unmanaged>\t\n            <unmanaged-short>HID_USAGE_PAGE_MONITOR_PAGE1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsagePage.MonitorPage2\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_PAGE_MONITOR_PAGE2']/*\"/>\t\n            <unmanaged>HID_USAGE_PAGE_MONITOR_PAGE2</unmanaged>\t\n            <unmanaged-short>HID_USAGE_PAGE_MONITOR_PAGE2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsagePage.MonitorPage3\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_PAGE_MONITOR_PAGE3']/*\"/>\t\n            <unmanaged>HID_USAGE_PAGE_MONITOR_PAGE3</unmanaged>\t\n            <unmanaged-short>HID_USAGE_PAGE_MONITOR_PAGE3</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsagePage.PowerPage0\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_PAGE_POWER_PAGE0']/*\"/>\t\n            <unmanaged>HID_USAGE_PAGE_POWER_PAGE0</unmanaged>\t\n            <unmanaged-short>HID_USAGE_PAGE_POWER_PAGE0</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsagePage.PowerPage1\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_PAGE_POWER_PAGE1']/*\"/>\t\n            <unmanaged>HID_USAGE_PAGE_POWER_PAGE1</unmanaged>\t\n            <unmanaged-short>HID_USAGE_PAGE_POWER_PAGE1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsagePage.PowerPage2\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_PAGE_POWER_PAGE2']/*\"/>\t\n            <unmanaged>HID_USAGE_PAGE_POWER_PAGE2</unmanaged>\t\n            <unmanaged-short>HID_USAGE_PAGE_POWER_PAGE2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsagePage.PowerPage3\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_PAGE_POWER_PAGE3']/*\"/>\t\n            <unmanaged>HID_USAGE_PAGE_POWER_PAGE3</unmanaged>\t\n            <unmanaged-short>HID_USAGE_PAGE_POWER_PAGE3</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsagePage.Barcode\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_PAGE_BARCODE']/*\"/>\t\n            <unmanaged>HID_USAGE_PAGE_BARCODE</unmanaged>\t\n            <unmanaged-short>HID_USAGE_PAGE_BARCODE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsagePage.Scale\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_PAGE_SCALE']/*\"/>\t\n            <unmanaged>HID_USAGE_PAGE_SCALE</unmanaged>\t\n            <unmanaged-short>HID_USAGE_PAGE_SCALE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.UsagePage.Msr\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='HID_USAGE_PAGE_MSR']/*\"/>\t\n            <unmanaged>HID_USAGE_PAGE_MSR</unmanaged>\t\n            <unmanaged-short>HID_USAGE_PAGE_MSR</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Multimedia.WaveFormatEncoding\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_ENCODING']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_ENCODING</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_ENCODING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.Unknown\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_UNKNOWN']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_UNKNOWN</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_UNKNOWN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.Adpcm\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_ADPCM']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_ADPCM</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_ADPCM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.IeeeFloat\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_IEEE_FLOAT']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_IEEE_FLOAT</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_IEEE_FLOAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.Vselp\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_VSELP']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_VSELP</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_VSELP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.IbmCvsd\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_IBM_CVSD']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_IBM_CVSD</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_IBM_CVSD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.Alaw\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_ALAW']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_ALAW</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_ALAW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.Mulaw\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_MULAW']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_MULAW</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_MULAW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.Dts\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_DTS']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_DTS</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_DTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.Drm\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_DRM']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_DRM</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_DRM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.Wmavoice9\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_WMAVOICE9']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_WMAVOICE9</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_WMAVOICE9</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.Wmavoice10\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_WMAVOICE10']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_WMAVOICE10</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_WMAVOICE10</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.OkiAdpcm\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_OKI_ADPCM']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_OKI_ADPCM</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_OKI_ADPCM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.DviAdpcm\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_DVI_ADPCM']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_DVI_ADPCM</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_DVI_ADPCM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.ImaAdpcm\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_IMA_ADPCM']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_IMA_ADPCM</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_IMA_ADPCM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.MediaspaceAdpcm\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_MEDIASPACE_ADPCM']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_MEDIASPACE_ADPCM</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_MEDIASPACE_ADPCM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.SierraAdpcm\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_SIERRA_ADPCM']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_SIERRA_ADPCM</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_SIERRA_ADPCM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.G723Adpcm\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_G723_ADPCM']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_G723_ADPCM</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_G723_ADPCM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.Digistd\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_DIGISTD']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_DIGISTD</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_DIGISTD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.Digifix\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_DIGIFIX']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_DIGIFIX</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_DIGIFIX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.DialogicOkiAdpcm\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_DIALOGIC_OKI_ADPCM']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_DIALOGIC_OKI_ADPCM</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_DIALOGIC_OKI_ADPCM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.MediavisionAdpcm\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_MEDIAVISION_ADPCM']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_MEDIAVISION_ADPCM</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_MEDIAVISION_ADPCM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.CuCodec\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_CU_CODEC']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_CU_CODEC</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_CU_CODEC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.YamahaAdpcm\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_YAMAHA_ADPCM']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_YAMAHA_ADPCM</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_YAMAHA_ADPCM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.Sonarc\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_SONARC']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_SONARC</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_SONARC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.DspgroupTruespeech\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_DSPGROUP_TRUESPEECH']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_DSPGROUP_TRUESPEECH</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_DSPGROUP_TRUESPEECH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.Echosc1\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_ECHOSC1']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_ECHOSC1</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_ECHOSC1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.AudiofileAf36\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_AUDIOFILE_AF36']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_AUDIOFILE_AF36</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_AUDIOFILE_AF36</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.Aptx\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_APTX']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_APTX</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_APTX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.AudiofileAf10\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_AUDIOFILE_AF10']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_AUDIOFILE_AF10</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_AUDIOFILE_AF10</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.Prosody1612\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_PROSODY_1612']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_PROSODY_1612</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_PROSODY_1612</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.Lrc\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_LRC']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_LRC</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_LRC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.DolbyAc2\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_DOLBY_AC2']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_DOLBY_AC2</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_DOLBY_AC2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.DefaultGsm610\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_GSM610']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_GSM610</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_GSM610</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.Msnaudio\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_MSNAUDIO']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_MSNAUDIO</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_MSNAUDIO</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.AntexAdpcme\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_ANTEX_ADPCME']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_ANTEX_ADPCME</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_ANTEX_ADPCME</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.ControlResVqlpc\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_CONTROL_RES_VQLPC']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_CONTROL_RES_VQLPC</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_CONTROL_RES_VQLPC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.Digireal\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_DIGIREAL']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_DIGIREAL</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_DIGIREAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.Digiadpcm\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_DIGIADPCM']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_DIGIADPCM</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_DIGIADPCM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.ControlResCr10\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_CONTROL_RES_CR10']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_CONTROL_RES_CR10</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_CONTROL_RES_CR10</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.NmsVbxadpcm\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_NMS_VBXADPCM']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_NMS_VBXADPCM</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_NMS_VBXADPCM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.CsImaadpcm\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_CS_IMAADPCM']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_CS_IMAADPCM</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_CS_IMAADPCM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.Echosc3\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_ECHOSC3']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_ECHOSC3</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_ECHOSC3</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.RockwellAdpcm\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_ROCKWELL_ADPCM']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_ROCKWELL_ADPCM</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_ROCKWELL_ADPCM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.RockwellDigitalk\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_ROCKWELL_DIGITALK']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_ROCKWELL_DIGITALK</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_ROCKWELL_DIGITALK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.Xebec\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_XEBEC']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_XEBEC</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_XEBEC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.G721Adpcm\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_G721_ADPCM']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_G721_ADPCM</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_G721_ADPCM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.G728Celp\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_G728_CELP']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_G728_CELP</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_G728_CELP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.Msg723\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_MSG723']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_MSG723</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_MSG723</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.Mpeg\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_MPEG']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_MPEG</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_MPEG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.Rt24\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_RT24']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_RT24</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_RT24</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.Pac\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_PAC']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_PAC</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_PAC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.Mpeglayer3\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_MPEGLAYER3']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_MPEGLAYER3</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_MPEGLAYER3</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.LucentG723\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_LUCENT_G723']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_LUCENT_G723</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_LUCENT_G723</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.Cirrus\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_CIRRUS']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_CIRRUS</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_CIRRUS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.Espcm\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_ESPCM']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_ESPCM</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_ESPCM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.Voxware\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_VOXWARE']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_VOXWARE</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_VOXWARE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.CanopusAtrac\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_CANOPUS_ATRAC']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_CANOPUS_ATRAC</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_CANOPUS_ATRAC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.G726Adpcm\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_G726_ADPCM']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_G726_ADPCM</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_G726_ADPCM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.G722Adpcm\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_G722_ADPCM']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_G722_ADPCM</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_G722_ADPCM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.DsatDisplay\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_DSAT_DISPLAY']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_DSAT_DISPLAY</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_DSAT_DISPLAY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.VoxwareByteAligned\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_VOXWARE_BYTE_ALIGNED']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_VOXWARE_BYTE_ALIGNED</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_VOXWARE_BYTE_ALIGNED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.VoxwareAc8\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_VOXWARE_AC8']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_VOXWARE_AC8</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_VOXWARE_AC8</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.VoxwareAc10\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_VOXWARE_AC10']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_VOXWARE_AC10</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_VOXWARE_AC10</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.VoxwareAc16\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_VOXWARE_AC16']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_VOXWARE_AC16</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_VOXWARE_AC16</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.VoxwareAc20\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_VOXWARE_AC20']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_VOXWARE_AC20</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_VOXWARE_AC20</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.VoxwareRt24\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_VOXWARE_RT24']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_VOXWARE_RT24</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_VOXWARE_RT24</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.VoxwareRt29\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_VOXWARE_RT29']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_VOXWARE_RT29</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_VOXWARE_RT29</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.VoxwareRt29hw\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_VOXWARE_RT29HW']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_VOXWARE_RT29HW</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_VOXWARE_RT29HW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.VoxwareVr12\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_VOXWARE_VR12']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_VOXWARE_VR12</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_VOXWARE_VR12</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.VoxwareVr18\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_VOXWARE_VR18']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_VOXWARE_VR18</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_VOXWARE_VR18</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.VoxwareTq40\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_VOXWARE_TQ40']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_VOXWARE_TQ40</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_VOXWARE_TQ40</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.Softsound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_SOFTSOUND']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_SOFTSOUND</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_SOFTSOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.VoxwareTq60\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_VOXWARE_TQ60']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_VOXWARE_TQ60</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_VOXWARE_TQ60</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.Msrt24\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_MSRT24']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_MSRT24</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_MSRT24</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.G729A\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_G729A']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_G729A</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_G729A</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.MviMvi2\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_MVI_MVI2']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_MVI_MVI2</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_MVI_MVI2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.DfG726\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_DF_G726']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_DF_G726</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_DF_G726</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.DfGsm610\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_DF_GSM610']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_DF_GSM610</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_DF_GSM610</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.Isiaudio\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_ISIAUDIO']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_ISIAUDIO</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_ISIAUDIO</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.Onlive\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_ONLIVE']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_ONLIVE</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_ONLIVE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.Sbc24\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_SBC24']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_SBC24</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_SBC24</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.DolbyAc3Spdif\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_DOLBY_AC3_SPDIF']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_DOLBY_AC3_SPDIF</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_DOLBY_AC3_SPDIF</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.MediasonicG723\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_MEDIASONIC_G723']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_MEDIASONIC_G723</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_MEDIASONIC_G723</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.Prosody8kbps\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_PROSODY_8KBPS']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_PROSODY_8KBPS</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_PROSODY_8KBPS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.ZyxelAdpcm\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_ZYXEL_ADPCM']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_ZYXEL_ADPCM</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_ZYXEL_ADPCM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.PhilipsLpcbb\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_PHILIPS_LPCBB']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_PHILIPS_LPCBB</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_PHILIPS_LPCBB</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.Packed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_PACKED']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_PACKED</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_PACKED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.MaldenPhonytalk\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_MALDEN_PHONYTALK']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_MALDEN_PHONYTALK</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_MALDEN_PHONYTALK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.RawAac1\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_RAW_AAC1']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_RAW_AAC1</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_RAW_AAC1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.RhetorexAdpcm\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_RHETOREX_ADPCM']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_RHETOREX_ADPCM</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_RHETOREX_ADPCM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.Irat\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_IRAT']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_IRAT</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_IRAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.VivoG723\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_VIVO_G723']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_VIVO_G723</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_VIVO_G723</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.VivoSiren\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_VIVO_SIREN']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_VIVO_SIREN</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_VIVO_SIREN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.DigitalG723\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_DIGITAL_G723']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_DIGITAL_G723</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_DIGITAL_G723</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.SanyoLdAdpcm\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_SANYO_LD_ADPCM']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_SANYO_LD_ADPCM</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_SANYO_LD_ADPCM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.SiprolabAceplnet\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_SIPROLAB_ACEPLNET']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_SIPROLAB_ACEPLNET</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_SIPROLAB_ACEPLNET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.SiprolabAcelp4800\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_SIPROLAB_ACELP4800']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_SIPROLAB_ACELP4800</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_SIPROLAB_ACELP4800</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.SiprolabAcelp8v3\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_SIPROLAB_ACELP8V3']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_SIPROLAB_ACELP8V3</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_SIPROLAB_ACELP8V3</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.SiprolabG729\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_SIPROLAB_G729']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_SIPROLAB_G729</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_SIPROLAB_G729</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.SiprolabG729A\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_SIPROLAB_G729A']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_SIPROLAB_G729A</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_SIPROLAB_G729A</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.SiprolabKelvin\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_SIPROLAB_KELVIN']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_SIPROLAB_KELVIN</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_SIPROLAB_KELVIN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.G726ADPCM\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_G726ADPCM']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_G726ADPCM</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_G726ADPCM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.QualcommPurevoice\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_QUALCOMM_PUREVOICE']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_QUALCOMM_PUREVOICE</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_QUALCOMM_PUREVOICE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.QualcommHalfrate\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_QUALCOMM_HALFRATE']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_QUALCOMM_HALFRATE</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_QUALCOMM_HALFRATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.Tubgsm\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_TUBGSM']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_TUBGSM</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_TUBGSM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.Msaudio1\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_MSAUDIO1']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_MSAUDIO1</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_MSAUDIO1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.Wmaudio2\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_WMAUDIO2']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_WMAUDIO2</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_WMAUDIO2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.Wmaudio3\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_WMAUDIO3']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_WMAUDIO3</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_WMAUDIO3</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.WmaudioLossless\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_WMAUDIO_LOSSLESS']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_WMAUDIO_LOSSLESS</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_WMAUDIO_LOSSLESS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.Wmaspdif\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_WMASPDIF']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_WMASPDIF</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_WMASPDIF</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.UnisysNapAdpcm\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_UNISYS_NAP_ADPCM']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_UNISYS_NAP_ADPCM</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_UNISYS_NAP_ADPCM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.UnisysNapUlaw\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_UNISYS_NAP_ULAW']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_UNISYS_NAP_ULAW</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_UNISYS_NAP_ULAW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.UnisysNapAlaw\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_UNISYS_NAP_ALAW']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_UNISYS_NAP_ALAW</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_UNISYS_NAP_ALAW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.UnisysNap16k\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_UNISYS_NAP_16K']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_UNISYS_NAP_16K</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_UNISYS_NAP_16K</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.CreativeAdpcm\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_CREATIVE_ADPCM']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_CREATIVE_ADPCM</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_CREATIVE_ADPCM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.CreativeFastspeech8\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_CREATIVE_FASTSPEECH8']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_CREATIVE_FASTSPEECH8</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_CREATIVE_FASTSPEECH8</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.CreativeFastspeech10\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_CREATIVE_FASTSPEECH10']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_CREATIVE_FASTSPEECH10</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_CREATIVE_FASTSPEECH10</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.UherAdpcm\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_UHER_ADPCM']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_UHER_ADPCM</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_UHER_ADPCM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.Quarterdeck\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_QUARTERDECK']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_QUARTERDECK</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_QUARTERDECK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.IlinkVc\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_ILINK_VC']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_ILINK_VC</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_ILINK_VC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.RawSport\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_RAW_SPORT']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_RAW_SPORT</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_RAW_SPORT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.EsstAc3\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_ESST_AC3']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_ESST_AC3</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_ESST_AC3</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.GenericPassthru\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_GENERIC_PASSTHRU']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_GENERIC_PASSTHRU</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_GENERIC_PASSTHRU</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.IpiHsx\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_IPI_HSX']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_IPI_HSX</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_IPI_HSX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.IpiRpelp\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_IPI_RPELP']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_IPI_RPELP</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_IPI_RPELP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.Cs2\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_CS2']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_CS2</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_CS2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.SonyScx\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_SONY_SCX']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_SONY_SCX</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_SONY_SCX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.FmTownsSnd\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_FM_TOWNS_SND']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_FM_TOWNS_SND</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_FM_TOWNS_SND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.BtvDigital\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_BTV_DIGITAL']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_BTV_DIGITAL</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_BTV_DIGITAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.QdesignMusic\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_QDESIGN_MUSIC']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_QDESIGN_MUSIC</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_QDESIGN_MUSIC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.VmeVmpcm\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_VME_VMPCM']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_VME_VMPCM</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_VME_VMPCM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.Tpc\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_TPC']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_TPC</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_TPC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.Oligsm\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_OLIGSM']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_OLIGSM</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_OLIGSM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.Oliadpcm\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_OLIADPCM']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_OLIADPCM</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_OLIADPCM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.Olicelp\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_OLICELP']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_OLICELP</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_OLICELP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.Olisbc\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_OLISBC']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_OLISBC</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_OLISBC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.Oliopr\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_OLIOPR']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_OLIOPR</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_OLIOPR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.LhCodec\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_LH_CODEC']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_LH_CODEC</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_LH_CODEC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.Norris\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_NORRIS']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_NORRIS</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_NORRIS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.SoundspaceMusicompress\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_SOUNDSPACE_MUSICOMPRESS']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_SOUNDSPACE_MUSICOMPRESS</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_SOUNDSPACE_MUSICOMPRESS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.MpegAdtsAac\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_MPEG_ADTS_AAC']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_MPEG_ADTS_AAC</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_MPEG_ADTS_AAC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.MpegRawAac\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_MPEG_RAW_AAC']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_MPEG_RAW_AAC</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_MPEG_RAW_AAC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.MpegLoas\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_MPEG_LOAS']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_MPEG_LOAS</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_MPEG_LOAS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.NokiaMpegAdtsAac\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_NOKIA_MPEG_ADTS_AAC']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_NOKIA_MPEG_ADTS_AAC</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_NOKIA_MPEG_ADTS_AAC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.NokiaMpegRawAac\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_NOKIA_MPEG_RAW_AAC']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_NOKIA_MPEG_RAW_AAC</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_NOKIA_MPEG_RAW_AAC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.VodafoneMpegAdtsAac\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_VODAFONE_MPEG_ADTS_AAC']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_VODAFONE_MPEG_ADTS_AAC</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_VODAFONE_MPEG_ADTS_AAC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.VodafoneMpegRawAac\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_VODAFONE_MPEG_RAW_AAC']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_VODAFONE_MPEG_RAW_AAC</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_VODAFONE_MPEG_RAW_AAC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.MpegHeaac\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_MPEG_HEAAC']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_MPEG_HEAAC</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_MPEG_HEAAC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.Dvm\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_DVM']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_DVM</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_DVM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.Dts2\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_DTS2']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_DTS2</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_DTS2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.Extensible\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_EXTENSIBLE']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_EXTENSIBLE</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_EXTENSIBLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.Development\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_DEVELOPMENT']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_DEVELOPMENT</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_DEVELOPMENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatEncoding.Pcm\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='WAVE_FORMAT_PCM']/*\"/>\t\n            <unmanaged>WAVE_FORMAT_PCM</unmanaged>\t\n            <unmanaged-short>WAVE_FORMAT_PCM</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Win32.CommitFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='STGC']/*\"/>\t\n            <unmanaged>STGC</unmanaged>\t\n            <unmanaged-short>STGC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.CommitFlags.Default\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='STGC_DEFAULT']/*\"/>\t\n            <unmanaged>STGC_DEFAULT</unmanaged>\t\n            <unmanaged-short>STGC_DEFAULT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.CommitFlags.Overwrite\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='STGC_OVERWRITE']/*\"/>\t\n            <unmanaged>STGC_OVERWRITE</unmanaged>\t\n            <unmanaged-short>STGC_OVERWRITE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.CommitFlags.OnlyCurrent\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='STGC_ONLYIFCURRENT']/*\"/>\t\n            <unmanaged>STGC_ONLYIFCURRENT</unmanaged>\t\n            <unmanaged-short>STGC_ONLYIFCURRENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.CommitFlags.DangerouslyCommitMerelyToDiskCache\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE']/*\"/>\t\n            <unmanaged>STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE</unmanaged>\t\n            <unmanaged-short>STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.CommitFlags.Consolidate\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='STGC_CONSOLIDATE']/*\"/>\t\n            <unmanaged>STGC_CONSOLIDATE</unmanaged>\t\n            <unmanaged-short>STGC_CONSOLIDATE</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Win32.ErrorCode\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='SHARPDX_ERRORCODE']/*\"/>\t\n            <unmanaged>SHARPDX_ERRORCODE</unmanaged>\t\n            <unmanaged-short>SHARPDX_ERRORCODE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.Success\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SUCCESS']/*\"/>\t\n            <unmanaged>ERROR_SUCCESS</unmanaged>\t\n            <unmanaged-short>ERROR_SUCCESS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidFunction\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_FUNCTION']/*\"/>\t\n            <unmanaged>ERROR_INVALID_FUNCTION</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_FUNCTION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.FileNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_FILE_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_FILE_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_FILE_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.PathNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_PATH_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_PATH_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_PATH_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.TooManyOpenFiles\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_TOO_MANY_OPEN_FILES']/*\"/>\t\n            <unmanaged>ERROR_TOO_MANY_OPEN_FILES</unmanaged>\t\n            <unmanaged-short>ERROR_TOO_MANY_OPEN_FILES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.AccessDenied\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_ACCESS_DENIED']/*\"/>\t\n            <unmanaged>ERROR_ACCESS_DENIED</unmanaged>\t\n            <unmanaged-short>ERROR_ACCESS_DENIED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidHandle\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_HANDLE']/*\"/>\t\n            <unmanaged>ERROR_INVALID_HANDLE</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_HANDLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ArenaTrashed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_ARENA_TRASHED']/*\"/>\t\n            <unmanaged>ERROR_ARENA_TRASHED</unmanaged>\t\n            <unmanaged-short>ERROR_ARENA_TRASHED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NotEnoughMemory\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NOT_ENOUGH_MEMORY']/*\"/>\t\n            <unmanaged>ERROR_NOT_ENOUGH_MEMORY</unmanaged>\t\n            <unmanaged-short>ERROR_NOT_ENOUGH_MEMORY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidBlock\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_BLOCK']/*\"/>\t\n            <unmanaged>ERROR_INVALID_BLOCK</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_BLOCK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.BadEnvironment\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_BAD_ENVIRONMENT']/*\"/>\t\n            <unmanaged>ERROR_BAD_ENVIRONMENT</unmanaged>\t\n            <unmanaged-short>ERROR_BAD_ENVIRONMENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.BadFormat\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_BAD_FORMAT']/*\"/>\t\n            <unmanaged>ERROR_BAD_FORMAT</unmanaged>\t\n            <unmanaged-short>ERROR_BAD_FORMAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidAccess\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_ACCESS']/*\"/>\t\n            <unmanaged>ERROR_INVALID_ACCESS</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_ACCESS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidData\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_DATA']/*\"/>\t\n            <unmanaged>ERROR_INVALID_DATA</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_DATA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.Outofmemory\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_OUTOFMEMORY']/*\"/>\t\n            <unmanaged>ERROR_OUTOFMEMORY</unmanaged>\t\n            <unmanaged-short>ERROR_OUTOFMEMORY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidDrive\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_DRIVE']/*\"/>\t\n            <unmanaged>ERROR_INVALID_DRIVE</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_DRIVE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CurrentDirectory\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CURRENT_DIRECTORY']/*\"/>\t\n            <unmanaged>ERROR_CURRENT_DIRECTORY</unmanaged>\t\n            <unmanaged-short>ERROR_CURRENT_DIRECTORY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NotSameDevice\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NOT_SAME_DEVICE']/*\"/>\t\n            <unmanaged>ERROR_NOT_SAME_DEVICE</unmanaged>\t\n            <unmanaged-short>ERROR_NOT_SAME_DEVICE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NoMoreFiles\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NO_MORE_FILES']/*\"/>\t\n            <unmanaged>ERROR_NO_MORE_FILES</unmanaged>\t\n            <unmanaged-short>ERROR_NO_MORE_FILES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.WriteProtect\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_WRITE_PROTECT']/*\"/>\t\n            <unmanaged>ERROR_WRITE_PROTECT</unmanaged>\t\n            <unmanaged-short>ERROR_WRITE_PROTECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.BadUnit\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_BAD_UNIT']/*\"/>\t\n            <unmanaged>ERROR_BAD_UNIT</unmanaged>\t\n            <unmanaged-short>ERROR_BAD_UNIT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NotReady\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NOT_READY']/*\"/>\t\n            <unmanaged>ERROR_NOT_READY</unmanaged>\t\n            <unmanaged-short>ERROR_NOT_READY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.BadCommand\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_BAD_COMMAND']/*\"/>\t\n            <unmanaged>ERROR_BAD_COMMAND</unmanaged>\t\n            <unmanaged-short>ERROR_BAD_COMMAND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.Crc\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CRC']/*\"/>\t\n            <unmanaged>ERROR_CRC</unmanaged>\t\n            <unmanaged-short>ERROR_CRC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.BadLength\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_BAD_LENGTH']/*\"/>\t\n            <unmanaged>ERROR_BAD_LENGTH</unmanaged>\t\n            <unmanaged-short>ERROR_BAD_LENGTH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.Seek\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SEEK']/*\"/>\t\n            <unmanaged>ERROR_SEEK</unmanaged>\t\n            <unmanaged-short>ERROR_SEEK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NotDosDisk\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NOT_DOS_DISK']/*\"/>\t\n            <unmanaged>ERROR_NOT_DOS_DISK</unmanaged>\t\n            <unmanaged-short>ERROR_NOT_DOS_DISK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SectorNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SECTOR_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_SECTOR_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_SECTOR_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.OutOfPaper\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_OUT_OF_PAPER']/*\"/>\t\n            <unmanaged>ERROR_OUT_OF_PAPER</unmanaged>\t\n            <unmanaged-short>ERROR_OUT_OF_PAPER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.WriteFault\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_WRITE_FAULT']/*\"/>\t\n            <unmanaged>ERROR_WRITE_FAULT</unmanaged>\t\n            <unmanaged-short>ERROR_WRITE_FAULT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ReadFault\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_READ_FAULT']/*\"/>\t\n            <unmanaged>ERROR_READ_FAULT</unmanaged>\t\n            <unmanaged-short>ERROR_READ_FAULT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GenFailure\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GEN_FAILURE']/*\"/>\t\n            <unmanaged>ERROR_GEN_FAILURE</unmanaged>\t\n            <unmanaged-short>ERROR_GEN_FAILURE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SharingViolation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SHARING_VIOLATION']/*\"/>\t\n            <unmanaged>ERROR_SHARING_VIOLATION</unmanaged>\t\n            <unmanaged-short>ERROR_SHARING_VIOLATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.LockViolation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_LOCK_VIOLATION']/*\"/>\t\n            <unmanaged>ERROR_LOCK_VIOLATION</unmanaged>\t\n            <unmanaged-short>ERROR_LOCK_VIOLATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.WrongDisk\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_WRONG_DISK']/*\"/>\t\n            <unmanaged>ERROR_WRONG_DISK</unmanaged>\t\n            <unmanaged-short>ERROR_WRONG_DISK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SharingBufferExceeded\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SHARING_BUFFER_EXCEEDED']/*\"/>\t\n            <unmanaged>ERROR_SHARING_BUFFER_EXCEEDED</unmanaged>\t\n            <unmanaged-short>ERROR_SHARING_BUFFER_EXCEEDED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.HandleEof\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_HANDLE_EOF']/*\"/>\t\n            <unmanaged>ERROR_HANDLE_EOF</unmanaged>\t\n            <unmanaged-short>ERROR_HANDLE_EOF</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.HandleDiskFull\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_HANDLE_DISK_FULL']/*\"/>\t\n            <unmanaged>ERROR_HANDLE_DISK_FULL</unmanaged>\t\n            <unmanaged-short>ERROR_HANDLE_DISK_FULL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NotSupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NOT_SUPPORTED']/*\"/>\t\n            <unmanaged>ERROR_NOT_SUPPORTED</unmanaged>\t\n            <unmanaged-short>ERROR_NOT_SUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.RemNotList\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_REM_NOT_LIST']/*\"/>\t\n            <unmanaged>ERROR_REM_NOT_LIST</unmanaged>\t\n            <unmanaged-short>ERROR_REM_NOT_LIST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DupName\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DUP_NAME']/*\"/>\t\n            <unmanaged>ERROR_DUP_NAME</unmanaged>\t\n            <unmanaged-short>ERROR_DUP_NAME</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.BadNetpath\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_BAD_NETPATH']/*\"/>\t\n            <unmanaged>ERROR_BAD_NETPATH</unmanaged>\t\n            <unmanaged-short>ERROR_BAD_NETPATH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NetworkBusy\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NETWORK_BUSY']/*\"/>\t\n            <unmanaged>ERROR_NETWORK_BUSY</unmanaged>\t\n            <unmanaged-short>ERROR_NETWORK_BUSY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DevNotExist\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DEV_NOT_EXIST']/*\"/>\t\n            <unmanaged>ERROR_DEV_NOT_EXIST</unmanaged>\t\n            <unmanaged-short>ERROR_DEV_NOT_EXIST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.TooManyCmds\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_TOO_MANY_CMDS']/*\"/>\t\n            <unmanaged>ERROR_TOO_MANY_CMDS</unmanaged>\t\n            <unmanaged-short>ERROR_TOO_MANY_CMDS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.AdapHdwErr\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_ADAP_HDW_ERR']/*\"/>\t\n            <unmanaged>ERROR_ADAP_HDW_ERR</unmanaged>\t\n            <unmanaged-short>ERROR_ADAP_HDW_ERR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.BadNetResp\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_BAD_NET_RESP']/*\"/>\t\n            <unmanaged>ERROR_BAD_NET_RESP</unmanaged>\t\n            <unmanaged-short>ERROR_BAD_NET_RESP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.UnexpNetErr\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_UNEXP_NET_ERR']/*\"/>\t\n            <unmanaged>ERROR_UNEXP_NET_ERR</unmanaged>\t\n            <unmanaged-short>ERROR_UNEXP_NET_ERR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.BadRemAdap\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_BAD_REM_ADAP']/*\"/>\t\n            <unmanaged>ERROR_BAD_REM_ADAP</unmanaged>\t\n            <unmanaged-short>ERROR_BAD_REM_ADAP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.PrintqFull\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_PRINTQ_FULL']/*\"/>\t\n            <unmanaged>ERROR_PRINTQ_FULL</unmanaged>\t\n            <unmanaged-short>ERROR_PRINTQ_FULL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NoSpoolSpace\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NO_SPOOL_SPACE']/*\"/>\t\n            <unmanaged>ERROR_NO_SPOOL_SPACE</unmanaged>\t\n            <unmanaged-short>ERROR_NO_SPOOL_SPACE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.PrintCancelled\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_PRINT_CANCELLED']/*\"/>\t\n            <unmanaged>ERROR_PRINT_CANCELLED</unmanaged>\t\n            <unmanaged-short>ERROR_PRINT_CANCELLED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NetnameDeleted\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NETNAME_DELETED']/*\"/>\t\n            <unmanaged>ERROR_NETNAME_DELETED</unmanaged>\t\n            <unmanaged-short>ERROR_NETNAME_DELETED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NetworkAccessDenied\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NETWORK_ACCESS_DENIED']/*\"/>\t\n            <unmanaged>ERROR_NETWORK_ACCESS_DENIED</unmanaged>\t\n            <unmanaged-short>ERROR_NETWORK_ACCESS_DENIED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.BadDevType\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_BAD_DEV_TYPE']/*\"/>\t\n            <unmanaged>ERROR_BAD_DEV_TYPE</unmanaged>\t\n            <unmanaged-short>ERROR_BAD_DEV_TYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.BadNetName\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_BAD_NET_NAME']/*\"/>\t\n            <unmanaged>ERROR_BAD_NET_NAME</unmanaged>\t\n            <unmanaged-short>ERROR_BAD_NET_NAME</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.TooManyNames\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_TOO_MANY_NAMES']/*\"/>\t\n            <unmanaged>ERROR_TOO_MANY_NAMES</unmanaged>\t\n            <unmanaged-short>ERROR_TOO_MANY_NAMES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.TooManySess\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_TOO_MANY_SESS']/*\"/>\t\n            <unmanaged>ERROR_TOO_MANY_SESS</unmanaged>\t\n            <unmanaged-short>ERROR_TOO_MANY_SESS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SharingPaused\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SHARING_PAUSED']/*\"/>\t\n            <unmanaged>ERROR_SHARING_PAUSED</unmanaged>\t\n            <unmanaged-short>ERROR_SHARING_PAUSED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ReqNotAccep\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_REQ_NOT_ACCEP']/*\"/>\t\n            <unmanaged>ERROR_REQ_NOT_ACCEP</unmanaged>\t\n            <unmanaged-short>ERROR_REQ_NOT_ACCEP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.RedirPaused\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_REDIR_PAUSED']/*\"/>\t\n            <unmanaged>ERROR_REDIR_PAUSED</unmanaged>\t\n            <unmanaged-short>ERROR_REDIR_PAUSED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.FileExists\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_FILE_EXISTS']/*\"/>\t\n            <unmanaged>ERROR_FILE_EXISTS</unmanaged>\t\n            <unmanaged-short>ERROR_FILE_EXISTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CannotMake\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CANNOT_MAKE']/*\"/>\t\n            <unmanaged>ERROR_CANNOT_MAKE</unmanaged>\t\n            <unmanaged-short>ERROR_CANNOT_MAKE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.FailI24\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_FAIL_I24']/*\"/>\t\n            <unmanaged>ERROR_FAIL_I24</unmanaged>\t\n            <unmanaged-short>ERROR_FAIL_I24</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.OutOfStructures\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_OUT_OF_STRUCTURES']/*\"/>\t\n            <unmanaged>ERROR_OUT_OF_STRUCTURES</unmanaged>\t\n            <unmanaged-short>ERROR_OUT_OF_STRUCTURES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.AlreadyAssigned\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_ALREADY_ASSIGNED']/*\"/>\t\n            <unmanaged>ERROR_ALREADY_ASSIGNED</unmanaged>\t\n            <unmanaged-short>ERROR_ALREADY_ASSIGNED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidPassword\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_PASSWORD']/*\"/>\t\n            <unmanaged>ERROR_INVALID_PASSWORD</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_PASSWORD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidParameter\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_PARAMETER']/*\"/>\t\n            <unmanaged>ERROR_INVALID_PARAMETER</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_PARAMETER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NetWriteFault\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NET_WRITE_FAULT']/*\"/>\t\n            <unmanaged>ERROR_NET_WRITE_FAULT</unmanaged>\t\n            <unmanaged-short>ERROR_NET_WRITE_FAULT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NoProcSlots\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NO_PROC_SLOTS']/*\"/>\t\n            <unmanaged>ERROR_NO_PROC_SLOTS</unmanaged>\t\n            <unmanaged-short>ERROR_NO_PROC_SLOTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.TooManySemaphores\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_TOO_MANY_SEMAPHORES']/*\"/>\t\n            <unmanaged>ERROR_TOO_MANY_SEMAPHORES</unmanaged>\t\n            <unmanaged-short>ERROR_TOO_MANY_SEMAPHORES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ExclSemAlreadyOwned\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_EXCL_SEM_ALREADY_OWNED']/*\"/>\t\n            <unmanaged>ERROR_EXCL_SEM_ALREADY_OWNED</unmanaged>\t\n            <unmanaged-short>ERROR_EXCL_SEM_ALREADY_OWNED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SemIsSet\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SEM_IS_SET']/*\"/>\t\n            <unmanaged>ERROR_SEM_IS_SET</unmanaged>\t\n            <unmanaged-short>ERROR_SEM_IS_SET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.TooManySemRequests\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_TOO_MANY_SEM_REQUESTS']/*\"/>\t\n            <unmanaged>ERROR_TOO_MANY_SEM_REQUESTS</unmanaged>\t\n            <unmanaged-short>ERROR_TOO_MANY_SEM_REQUESTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidAtInterruptTime\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_AT_INTERRUPT_TIME']/*\"/>\t\n            <unmanaged>ERROR_INVALID_AT_INTERRUPT_TIME</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_AT_INTERRUPT_TIME</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SemOwnerDied\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SEM_OWNER_DIED']/*\"/>\t\n            <unmanaged>ERROR_SEM_OWNER_DIED</unmanaged>\t\n            <unmanaged-short>ERROR_SEM_OWNER_DIED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SemUserLimit\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SEM_USER_LIMIT']/*\"/>\t\n            <unmanaged>ERROR_SEM_USER_LIMIT</unmanaged>\t\n            <unmanaged-short>ERROR_SEM_USER_LIMIT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DiskChange\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DISK_CHANGE']/*\"/>\t\n            <unmanaged>ERROR_DISK_CHANGE</unmanaged>\t\n            <unmanaged-short>ERROR_DISK_CHANGE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DriveLocked\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DRIVE_LOCKED']/*\"/>\t\n            <unmanaged>ERROR_DRIVE_LOCKED</unmanaged>\t\n            <unmanaged-short>ERROR_DRIVE_LOCKED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.BrokenPipe\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_BROKEN_PIPE']/*\"/>\t\n            <unmanaged>ERROR_BROKEN_PIPE</unmanaged>\t\n            <unmanaged-short>ERROR_BROKEN_PIPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.OpenFailed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_OPEN_FAILED']/*\"/>\t\n            <unmanaged>ERROR_OPEN_FAILED</unmanaged>\t\n            <unmanaged-short>ERROR_OPEN_FAILED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.BufferOverflow\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_BUFFER_OVERFLOW']/*\"/>\t\n            <unmanaged>ERROR_BUFFER_OVERFLOW</unmanaged>\t\n            <unmanaged-short>ERROR_BUFFER_OVERFLOW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DiskFull\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DISK_FULL']/*\"/>\t\n            <unmanaged>ERROR_DISK_FULL</unmanaged>\t\n            <unmanaged-short>ERROR_DISK_FULL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NoMoreSearchHandles\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NO_MORE_SEARCH_HANDLES']/*\"/>\t\n            <unmanaged>ERROR_NO_MORE_SEARCH_HANDLES</unmanaged>\t\n            <unmanaged-short>ERROR_NO_MORE_SEARCH_HANDLES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidTargetHandle\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_TARGET_HANDLE']/*\"/>\t\n            <unmanaged>ERROR_INVALID_TARGET_HANDLE</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_TARGET_HANDLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidCategory\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_CATEGORY']/*\"/>\t\n            <unmanaged>ERROR_INVALID_CATEGORY</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_CATEGORY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidVerifySwitch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_VERIFY_SWITCH']/*\"/>\t\n            <unmanaged>ERROR_INVALID_VERIFY_SWITCH</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_VERIFY_SWITCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.BadDriverLevel\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_BAD_DRIVER_LEVEL']/*\"/>\t\n            <unmanaged>ERROR_BAD_DRIVER_LEVEL</unmanaged>\t\n            <unmanaged-short>ERROR_BAD_DRIVER_LEVEL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CallNotImplemented\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CALL_NOT_IMPLEMENTED']/*\"/>\t\n            <unmanaged>ERROR_CALL_NOT_IMPLEMENTED</unmanaged>\t\n            <unmanaged-short>ERROR_CALL_NOT_IMPLEMENTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SemTimeout\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SEM_TIMEOUT']/*\"/>\t\n            <unmanaged>ERROR_SEM_TIMEOUT</unmanaged>\t\n            <unmanaged-short>ERROR_SEM_TIMEOUT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InsufficientBuffer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INSUFFICIENT_BUFFER']/*\"/>\t\n            <unmanaged>ERROR_INSUFFICIENT_BUFFER</unmanaged>\t\n            <unmanaged-short>ERROR_INSUFFICIENT_BUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidName\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_NAME']/*\"/>\t\n            <unmanaged>ERROR_INVALID_NAME</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_NAME</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidLevel\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_LEVEL']/*\"/>\t\n            <unmanaged>ERROR_INVALID_LEVEL</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_LEVEL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NoVolumeLabel\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NO_VOLUME_LABEL']/*\"/>\t\n            <unmanaged>ERROR_NO_VOLUME_LABEL</unmanaged>\t\n            <unmanaged-short>ERROR_NO_VOLUME_LABEL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ModNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_MOD_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_MOD_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_MOD_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ProcNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_PROC_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_PROC_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_PROC_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.WaitNoChildren\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_WAIT_NO_CHILDREN']/*\"/>\t\n            <unmanaged>ERROR_WAIT_NO_CHILDREN</unmanaged>\t\n            <unmanaged-short>ERROR_WAIT_NO_CHILDREN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ChildNotComplete\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CHILD_NOT_COMPLETE']/*\"/>\t\n            <unmanaged>ERROR_CHILD_NOT_COMPLETE</unmanaged>\t\n            <unmanaged-short>ERROR_CHILD_NOT_COMPLETE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DirectAccessHandle\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DIRECT_ACCESS_HANDLE']/*\"/>\t\n            <unmanaged>ERROR_DIRECT_ACCESS_HANDLE</unmanaged>\t\n            <unmanaged-short>ERROR_DIRECT_ACCESS_HANDLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NegativeSeek\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NEGATIVE_SEEK']/*\"/>\t\n            <unmanaged>ERROR_NEGATIVE_SEEK</unmanaged>\t\n            <unmanaged-short>ERROR_NEGATIVE_SEEK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SeekOnDevice\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SEEK_ON_DEVICE']/*\"/>\t\n            <unmanaged>ERROR_SEEK_ON_DEVICE</unmanaged>\t\n            <unmanaged-short>ERROR_SEEK_ON_DEVICE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IsJoinTarget\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IS_JOIN_TARGET']/*\"/>\t\n            <unmanaged>ERROR_IS_JOIN_TARGET</unmanaged>\t\n            <unmanaged-short>ERROR_IS_JOIN_TARGET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IsJoined\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IS_JOINED']/*\"/>\t\n            <unmanaged>ERROR_IS_JOINED</unmanaged>\t\n            <unmanaged-short>ERROR_IS_JOINED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IsSubsted\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IS_SUBSTED']/*\"/>\t\n            <unmanaged>ERROR_IS_SUBSTED</unmanaged>\t\n            <unmanaged-short>ERROR_IS_SUBSTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NotJoined\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NOT_JOINED']/*\"/>\t\n            <unmanaged>ERROR_NOT_JOINED</unmanaged>\t\n            <unmanaged-short>ERROR_NOT_JOINED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NotSubsted\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NOT_SUBSTED']/*\"/>\t\n            <unmanaged>ERROR_NOT_SUBSTED</unmanaged>\t\n            <unmanaged-short>ERROR_NOT_SUBSTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.JoinToJoin\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_JOIN_TO_JOIN']/*\"/>\t\n            <unmanaged>ERROR_JOIN_TO_JOIN</unmanaged>\t\n            <unmanaged-short>ERROR_JOIN_TO_JOIN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SubstToSubst\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SUBST_TO_SUBST']/*\"/>\t\n            <unmanaged>ERROR_SUBST_TO_SUBST</unmanaged>\t\n            <unmanaged-short>ERROR_SUBST_TO_SUBST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.JoinToSubst\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_JOIN_TO_SUBST']/*\"/>\t\n            <unmanaged>ERROR_JOIN_TO_SUBST</unmanaged>\t\n            <unmanaged-short>ERROR_JOIN_TO_SUBST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SubstToJoin\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SUBST_TO_JOIN']/*\"/>\t\n            <unmanaged>ERROR_SUBST_TO_JOIN</unmanaged>\t\n            <unmanaged-short>ERROR_SUBST_TO_JOIN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.BusyDrive\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_BUSY_DRIVE']/*\"/>\t\n            <unmanaged>ERROR_BUSY_DRIVE</unmanaged>\t\n            <unmanaged-short>ERROR_BUSY_DRIVE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SameDrive\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SAME_DRIVE']/*\"/>\t\n            <unmanaged>ERROR_SAME_DRIVE</unmanaged>\t\n            <unmanaged-short>ERROR_SAME_DRIVE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DirNotRoot\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DIR_NOT_ROOT']/*\"/>\t\n            <unmanaged>ERROR_DIR_NOT_ROOT</unmanaged>\t\n            <unmanaged-short>ERROR_DIR_NOT_ROOT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DirNotEmpty\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DIR_NOT_EMPTY']/*\"/>\t\n            <unmanaged>ERROR_DIR_NOT_EMPTY</unmanaged>\t\n            <unmanaged-short>ERROR_DIR_NOT_EMPTY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IsSubstPath\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IS_SUBST_PATH']/*\"/>\t\n            <unmanaged>ERROR_IS_SUBST_PATH</unmanaged>\t\n            <unmanaged-short>ERROR_IS_SUBST_PATH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IsJoinPath\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IS_JOIN_PATH']/*\"/>\t\n            <unmanaged>ERROR_IS_JOIN_PATH</unmanaged>\t\n            <unmanaged-short>ERROR_IS_JOIN_PATH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.PathBusy\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_PATH_BUSY']/*\"/>\t\n            <unmanaged>ERROR_PATH_BUSY</unmanaged>\t\n            <unmanaged-short>ERROR_PATH_BUSY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IsSubstTarget\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IS_SUBST_TARGET']/*\"/>\t\n            <unmanaged>ERROR_IS_SUBST_TARGET</unmanaged>\t\n            <unmanaged-short>ERROR_IS_SUBST_TARGET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SystemTrace\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SYSTEM_TRACE']/*\"/>\t\n            <unmanaged>ERROR_SYSTEM_TRACE</unmanaged>\t\n            <unmanaged-short>ERROR_SYSTEM_TRACE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidEventCount\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_EVENT_COUNT']/*\"/>\t\n            <unmanaged>ERROR_INVALID_EVENT_COUNT</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_EVENT_COUNT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.TooManyMuxwaiters\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_TOO_MANY_MUXWAITERS']/*\"/>\t\n            <unmanaged>ERROR_TOO_MANY_MUXWAITERS</unmanaged>\t\n            <unmanaged-short>ERROR_TOO_MANY_MUXWAITERS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidListFormat\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_LIST_FORMAT']/*\"/>\t\n            <unmanaged>ERROR_INVALID_LIST_FORMAT</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_LIST_FORMAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.LabelTooLong\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_LABEL_TOO_LONG']/*\"/>\t\n            <unmanaged>ERROR_LABEL_TOO_LONG</unmanaged>\t\n            <unmanaged-short>ERROR_LABEL_TOO_LONG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.TooManyTcbs\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_TOO_MANY_TCBS']/*\"/>\t\n            <unmanaged>ERROR_TOO_MANY_TCBS</unmanaged>\t\n            <unmanaged-short>ERROR_TOO_MANY_TCBS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SignalRefused\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SIGNAL_REFUSED']/*\"/>\t\n            <unmanaged>ERROR_SIGNAL_REFUSED</unmanaged>\t\n            <unmanaged-short>ERROR_SIGNAL_REFUSED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.Discarded\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DISCARDED']/*\"/>\t\n            <unmanaged>ERROR_DISCARDED</unmanaged>\t\n            <unmanaged-short>ERROR_DISCARDED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NotLocked\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NOT_LOCKED']/*\"/>\t\n            <unmanaged>ERROR_NOT_LOCKED</unmanaged>\t\n            <unmanaged-short>ERROR_NOT_LOCKED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.BadThreadidAddr\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_BAD_THREADID_ADDR']/*\"/>\t\n            <unmanaged>ERROR_BAD_THREADID_ADDR</unmanaged>\t\n            <unmanaged-short>ERROR_BAD_THREADID_ADDR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.BadArguments\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_BAD_ARGUMENTS']/*\"/>\t\n            <unmanaged>ERROR_BAD_ARGUMENTS</unmanaged>\t\n            <unmanaged-short>ERROR_BAD_ARGUMENTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.BadPathname\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_BAD_PATHNAME']/*\"/>\t\n            <unmanaged>ERROR_BAD_PATHNAME</unmanaged>\t\n            <unmanaged-short>ERROR_BAD_PATHNAME</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SignalPending\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SIGNAL_PENDING']/*\"/>\t\n            <unmanaged>ERROR_SIGNAL_PENDING</unmanaged>\t\n            <unmanaged-short>ERROR_SIGNAL_PENDING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.MaxThrdsReached\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_MAX_THRDS_REACHED']/*\"/>\t\n            <unmanaged>ERROR_MAX_THRDS_REACHED</unmanaged>\t\n            <unmanaged-short>ERROR_MAX_THRDS_REACHED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.LockFailed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_LOCK_FAILED']/*\"/>\t\n            <unmanaged>ERROR_LOCK_FAILED</unmanaged>\t\n            <unmanaged-short>ERROR_LOCK_FAILED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.Busy\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_BUSY']/*\"/>\t\n            <unmanaged>ERROR_BUSY</unmanaged>\t\n            <unmanaged-short>ERROR_BUSY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CancelViolation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CANCEL_VIOLATION']/*\"/>\t\n            <unmanaged>ERROR_CANCEL_VIOLATION</unmanaged>\t\n            <unmanaged-short>ERROR_CANCEL_VIOLATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.AtomicLocksNotSupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_ATOMIC_LOCKS_NOT_SUPPORTED']/*\"/>\t\n            <unmanaged>ERROR_ATOMIC_LOCKS_NOT_SUPPORTED</unmanaged>\t\n            <unmanaged-short>ERROR_ATOMIC_LOCKS_NOT_SUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidSegmentNumber\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_SEGMENT_NUMBER']/*\"/>\t\n            <unmanaged>ERROR_INVALID_SEGMENT_NUMBER</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_SEGMENT_NUMBER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidOrdinal\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_ORDINAL']/*\"/>\t\n            <unmanaged>ERROR_INVALID_ORDINAL</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_ORDINAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.AlreadyExists\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_ALREADY_EXISTS']/*\"/>\t\n            <unmanaged>ERROR_ALREADY_EXISTS</unmanaged>\t\n            <unmanaged-short>ERROR_ALREADY_EXISTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidFlagNumber\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_FLAG_NUMBER']/*\"/>\t\n            <unmanaged>ERROR_INVALID_FLAG_NUMBER</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_FLAG_NUMBER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SemNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SEM_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_SEM_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_SEM_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidStartingCodeseg\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_STARTING_CODESEG']/*\"/>\t\n            <unmanaged>ERROR_INVALID_STARTING_CODESEG</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_STARTING_CODESEG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidStackseg\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_STACKSEG']/*\"/>\t\n            <unmanaged>ERROR_INVALID_STACKSEG</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_STACKSEG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidModuletype\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_MODULETYPE']/*\"/>\t\n            <unmanaged>ERROR_INVALID_MODULETYPE</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_MODULETYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidExeSignature\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_EXE_SIGNATURE']/*\"/>\t\n            <unmanaged>ERROR_INVALID_EXE_SIGNATURE</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_EXE_SIGNATURE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ExeMarkedInvalid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_EXE_MARKED_INVALID']/*\"/>\t\n            <unmanaged>ERROR_EXE_MARKED_INVALID</unmanaged>\t\n            <unmanaged-short>ERROR_EXE_MARKED_INVALID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.BadExeFormat\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_BAD_EXE_FORMAT']/*\"/>\t\n            <unmanaged>ERROR_BAD_EXE_FORMAT</unmanaged>\t\n            <unmanaged-short>ERROR_BAD_EXE_FORMAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IteratedDataExceeds64k\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_ITERATED_DATA_EXCEEDS_64k']/*\"/>\t\n            <unmanaged>ERROR_ITERATED_DATA_EXCEEDS_64k</unmanaged>\t\n            <unmanaged-short>ERROR_ITERATED_DATA_EXCEEDS_64k</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidMinallocsize\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_MINALLOCSIZE']/*\"/>\t\n            <unmanaged>ERROR_INVALID_MINALLOCSIZE</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_MINALLOCSIZE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DynlinkFromInvalidRing\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DYNLINK_FROM_INVALID_RING']/*\"/>\t\n            <unmanaged>ERROR_DYNLINK_FROM_INVALID_RING</unmanaged>\t\n            <unmanaged-short>ERROR_DYNLINK_FROM_INVALID_RING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IoplNotEnabled\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IOPL_NOT_ENABLED']/*\"/>\t\n            <unmanaged>ERROR_IOPL_NOT_ENABLED</unmanaged>\t\n            <unmanaged-short>ERROR_IOPL_NOT_ENABLED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidSegdpl\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_SEGDPL']/*\"/>\t\n            <unmanaged>ERROR_INVALID_SEGDPL</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_SEGDPL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.AutodatasegExceeds64k\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_AUTODATASEG_EXCEEDS_64k']/*\"/>\t\n            <unmanaged>ERROR_AUTODATASEG_EXCEEDS_64k</unmanaged>\t\n            <unmanaged-short>ERROR_AUTODATASEG_EXCEEDS_64k</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.Ring2segMustBeMovable\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_RING2SEG_MUST_BE_MOVABLE']/*\"/>\t\n            <unmanaged>ERROR_RING2SEG_MUST_BE_MOVABLE</unmanaged>\t\n            <unmanaged-short>ERROR_RING2SEG_MUST_BE_MOVABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.RelocChainXeedsSeglim\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_RELOC_CHAIN_XEEDS_SEGLIM']/*\"/>\t\n            <unmanaged>ERROR_RELOC_CHAIN_XEEDS_SEGLIM</unmanaged>\t\n            <unmanaged-short>ERROR_RELOC_CHAIN_XEEDS_SEGLIM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InfloopInRelocChain\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INFLOOP_IN_RELOC_CHAIN']/*\"/>\t\n            <unmanaged>ERROR_INFLOOP_IN_RELOC_CHAIN</unmanaged>\t\n            <unmanaged-short>ERROR_INFLOOP_IN_RELOC_CHAIN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.EnvvarNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_ENVVAR_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_ENVVAR_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_ENVVAR_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NoSignalSent\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NO_SIGNAL_SENT']/*\"/>\t\n            <unmanaged>ERROR_NO_SIGNAL_SENT</unmanaged>\t\n            <unmanaged-short>ERROR_NO_SIGNAL_SENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.FilenameExcedRange\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_FILENAME_EXCED_RANGE']/*\"/>\t\n            <unmanaged>ERROR_FILENAME_EXCED_RANGE</unmanaged>\t\n            <unmanaged-short>ERROR_FILENAME_EXCED_RANGE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.Ring2StackInUse\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_RING2_STACK_IN_USE']/*\"/>\t\n            <unmanaged>ERROR_RING2_STACK_IN_USE</unmanaged>\t\n            <unmanaged-short>ERROR_RING2_STACK_IN_USE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.MetaExpansionTooLong\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_META_EXPANSION_TOO_LONG']/*\"/>\t\n            <unmanaged>ERROR_META_EXPANSION_TOO_LONG</unmanaged>\t\n            <unmanaged-short>ERROR_META_EXPANSION_TOO_LONG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidSignalNumber\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_SIGNAL_NUMBER']/*\"/>\t\n            <unmanaged>ERROR_INVALID_SIGNAL_NUMBER</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_SIGNAL_NUMBER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.Thread1Inactive\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_THREAD_1_INACTIVE']/*\"/>\t\n            <unmanaged>ERROR_THREAD_1_INACTIVE</unmanaged>\t\n            <unmanaged-short>ERROR_THREAD_1_INACTIVE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.Locked\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_LOCKED']/*\"/>\t\n            <unmanaged>ERROR_LOCKED</unmanaged>\t\n            <unmanaged-short>ERROR_LOCKED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.TooManyModules\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_TOO_MANY_MODULES']/*\"/>\t\n            <unmanaged>ERROR_TOO_MANY_MODULES</unmanaged>\t\n            <unmanaged-short>ERROR_TOO_MANY_MODULES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NestingNotAllowed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NESTING_NOT_ALLOWED']/*\"/>\t\n            <unmanaged>ERROR_NESTING_NOT_ALLOWED</unmanaged>\t\n            <unmanaged-short>ERROR_NESTING_NOT_ALLOWED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ExeMachineTypeMismatch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_EXE_MACHINE_TYPE_MISMATCH']/*\"/>\t\n            <unmanaged>ERROR_EXE_MACHINE_TYPE_MISMATCH</unmanaged>\t\n            <unmanaged-short>ERROR_EXE_MACHINE_TYPE_MISMATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ExeCannotModifySignedBinary\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_EXE_CANNOT_MODIFY_SIGNED_BINARY']/*\"/>\t\n            <unmanaged>ERROR_EXE_CANNOT_MODIFY_SIGNED_BINARY</unmanaged>\t\n            <unmanaged-short>ERROR_EXE_CANNOT_MODIFY_SIGNED_BINARY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ExeCannotModifyStrongSignedBinary\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_EXE_CANNOT_MODIFY_STRONG_SIGNED_BINARY']/*\"/>\t\n            <unmanaged>ERROR_EXE_CANNOT_MODIFY_STRONG_SIGNED_BINARY</unmanaged>\t\n            <unmanaged-short>ERROR_EXE_CANNOT_MODIFY_STRONG_SIGNED_BINARY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.FileCheckedOut\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_FILE_CHECKED_OUT']/*\"/>\t\n            <unmanaged>ERROR_FILE_CHECKED_OUT</unmanaged>\t\n            <unmanaged-short>ERROR_FILE_CHECKED_OUT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CheckoutRequired\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CHECKOUT_REQUIRED']/*\"/>\t\n            <unmanaged>ERROR_CHECKOUT_REQUIRED</unmanaged>\t\n            <unmanaged-short>ERROR_CHECKOUT_REQUIRED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.BadFileType\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_BAD_FILE_TYPE']/*\"/>\t\n            <unmanaged>ERROR_BAD_FILE_TYPE</unmanaged>\t\n            <unmanaged-short>ERROR_BAD_FILE_TYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.FileTooLarge\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_FILE_TOO_LARGE']/*\"/>\t\n            <unmanaged>ERROR_FILE_TOO_LARGE</unmanaged>\t\n            <unmanaged-short>ERROR_FILE_TOO_LARGE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.FormsAuthRequired\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_FORMS_AUTH_REQUIRED']/*\"/>\t\n            <unmanaged>ERROR_FORMS_AUTH_REQUIRED</unmanaged>\t\n            <unmanaged-short>ERROR_FORMS_AUTH_REQUIRED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VirusInfected\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VIRUS_INFECTED']/*\"/>\t\n            <unmanaged>ERROR_VIRUS_INFECTED</unmanaged>\t\n            <unmanaged-short>ERROR_VIRUS_INFECTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VirusDeleted\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VIRUS_DELETED']/*\"/>\t\n            <unmanaged>ERROR_VIRUS_DELETED</unmanaged>\t\n            <unmanaged-short>ERROR_VIRUS_DELETED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.PipeLocal\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_PIPE_LOCAL']/*\"/>\t\n            <unmanaged>ERROR_PIPE_LOCAL</unmanaged>\t\n            <unmanaged-short>ERROR_PIPE_LOCAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.BadPipe\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_BAD_PIPE']/*\"/>\t\n            <unmanaged>ERROR_BAD_PIPE</unmanaged>\t\n            <unmanaged-short>ERROR_BAD_PIPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.PipeBusy\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_PIPE_BUSY']/*\"/>\t\n            <unmanaged>ERROR_PIPE_BUSY</unmanaged>\t\n            <unmanaged-short>ERROR_PIPE_BUSY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NoData\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NO_DATA']/*\"/>\t\n            <unmanaged>ERROR_NO_DATA</unmanaged>\t\n            <unmanaged-short>ERROR_NO_DATA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.PipeNotConnected\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_PIPE_NOT_CONNECTED']/*\"/>\t\n            <unmanaged>ERROR_PIPE_NOT_CONNECTED</unmanaged>\t\n            <unmanaged-short>ERROR_PIPE_NOT_CONNECTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.MoreData\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_MORE_DATA']/*\"/>\t\n            <unmanaged>ERROR_MORE_DATA</unmanaged>\t\n            <unmanaged-short>ERROR_MORE_DATA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VcDisconnected\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VC_DISCONNECTED']/*\"/>\t\n            <unmanaged>ERROR_VC_DISCONNECTED</unmanaged>\t\n            <unmanaged-short>ERROR_VC_DISCONNECTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidEaName\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_EA_NAME']/*\"/>\t\n            <unmanaged>ERROR_INVALID_EA_NAME</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_EA_NAME</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.EaListInconsistent\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_EA_LIST_INCONSISTENT']/*\"/>\t\n            <unmanaged>ERROR_EA_LIST_INCONSISTENT</unmanaged>\t\n            <unmanaged-short>ERROR_EA_LIST_INCONSISTENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NoMoreItems\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NO_MORE_ITEMS']/*\"/>\t\n            <unmanaged>ERROR_NO_MORE_ITEMS</unmanaged>\t\n            <unmanaged-short>ERROR_NO_MORE_ITEMS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CannotCopy\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CANNOT_COPY']/*\"/>\t\n            <unmanaged>ERROR_CANNOT_COPY</unmanaged>\t\n            <unmanaged-short>ERROR_CANNOT_COPY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.Directory\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DIRECTORY']/*\"/>\t\n            <unmanaged>ERROR_DIRECTORY</unmanaged>\t\n            <unmanaged-short>ERROR_DIRECTORY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.EasDidntFit\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_EAS_DIDNT_FIT']/*\"/>\t\n            <unmanaged>ERROR_EAS_DIDNT_FIT</unmanaged>\t\n            <unmanaged-short>ERROR_EAS_DIDNT_FIT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.EaFileCorrupt\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_EA_FILE_CORRUPT']/*\"/>\t\n            <unmanaged>ERROR_EA_FILE_CORRUPT</unmanaged>\t\n            <unmanaged-short>ERROR_EA_FILE_CORRUPT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.EaTableFull\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_EA_TABLE_FULL']/*\"/>\t\n            <unmanaged>ERROR_EA_TABLE_FULL</unmanaged>\t\n            <unmanaged-short>ERROR_EA_TABLE_FULL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidEaHandle\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_EA_HANDLE']/*\"/>\t\n            <unmanaged>ERROR_INVALID_EA_HANDLE</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_EA_HANDLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.EasNotSupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_EAS_NOT_SUPPORTED']/*\"/>\t\n            <unmanaged>ERROR_EAS_NOT_SUPPORTED</unmanaged>\t\n            <unmanaged-short>ERROR_EAS_NOT_SUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NotOwner\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NOT_OWNER']/*\"/>\t\n            <unmanaged>ERROR_NOT_OWNER</unmanaged>\t\n            <unmanaged-short>ERROR_NOT_OWNER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.TooManyPosts\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_TOO_MANY_POSTS']/*\"/>\t\n            <unmanaged>ERROR_TOO_MANY_POSTS</unmanaged>\t\n            <unmanaged-short>ERROR_TOO_MANY_POSTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.PartialCopy\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_PARTIAL_COPY']/*\"/>\t\n            <unmanaged>ERROR_PARTIAL_COPY</unmanaged>\t\n            <unmanaged-short>ERROR_PARTIAL_COPY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.OplockNotGranted\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_OPLOCK_NOT_GRANTED']/*\"/>\t\n            <unmanaged>ERROR_OPLOCK_NOT_GRANTED</unmanaged>\t\n            <unmanaged-short>ERROR_OPLOCK_NOT_GRANTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidOplockProtocol\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_OPLOCK_PROTOCOL']/*\"/>\t\n            <unmanaged>ERROR_INVALID_OPLOCK_PROTOCOL</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_OPLOCK_PROTOCOL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DiskTooFragmented\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DISK_TOO_FRAGMENTED']/*\"/>\t\n            <unmanaged>ERROR_DISK_TOO_FRAGMENTED</unmanaged>\t\n            <unmanaged-short>ERROR_DISK_TOO_FRAGMENTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DeletePending\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DELETE_PENDING']/*\"/>\t\n            <unmanaged>ERROR_DELETE_PENDING</unmanaged>\t\n            <unmanaged-short>ERROR_DELETE_PENDING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IncompatibleWithGlobalShortNameRegistrySetting\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INCOMPATIBLE_WITH_GLOBAL_SHORT_NAME_REGISTRY_SETTING']/*\"/>\t\n            <unmanaged>ERROR_INCOMPATIBLE_WITH_GLOBAL_SHORT_NAME_REGISTRY_SETTING</unmanaged>\t\n            <unmanaged-short>ERROR_INCOMPATIBLE_WITH_GLOBAL_SHORT_NAME_REGISTRY_SETTING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ShortNamesNotEnabledOnVolume\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SHORT_NAMES_NOT_ENABLED_ON_VOLUME']/*\"/>\t\n            <unmanaged>ERROR_SHORT_NAMES_NOT_ENABLED_ON_VOLUME</unmanaged>\t\n            <unmanaged-short>ERROR_SHORT_NAMES_NOT_ENABLED_ON_VOLUME</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SecurityStreamIsInconsistent\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SECURITY_STREAM_IS_INCONSISTENT']/*\"/>\t\n            <unmanaged>ERROR_SECURITY_STREAM_IS_INCONSISTENT</unmanaged>\t\n            <unmanaged-short>ERROR_SECURITY_STREAM_IS_INCONSISTENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidLockRange\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_LOCK_RANGE']/*\"/>\t\n            <unmanaged>ERROR_INVALID_LOCK_RANGE</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_LOCK_RANGE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ImageSubsystemNotPresent\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IMAGE_SUBSYSTEM_NOT_PRESENT']/*\"/>\t\n            <unmanaged>ERROR_IMAGE_SUBSYSTEM_NOT_PRESENT</unmanaged>\t\n            <unmanaged-short>ERROR_IMAGE_SUBSYSTEM_NOT_PRESENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NotificationGuidAlreadyDefined\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NOTIFICATION_GUID_ALREADY_DEFINED']/*\"/>\t\n            <unmanaged>ERROR_NOTIFICATION_GUID_ALREADY_DEFINED</unmanaged>\t\n            <unmanaged-short>ERROR_NOTIFICATION_GUID_ALREADY_DEFINED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.MrMidNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_MR_MID_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_MR_MID_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_MR_MID_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ScopeNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SCOPE_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_SCOPE_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_SCOPE_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.FailNoactionReboot\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_FAIL_NOACTION_REBOOT']/*\"/>\t\n            <unmanaged>ERROR_FAIL_NOACTION_REBOOT</unmanaged>\t\n            <unmanaged-short>ERROR_FAIL_NOACTION_REBOOT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.FailShutdown\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_FAIL_SHUTDOWN']/*\"/>\t\n            <unmanaged>ERROR_FAIL_SHUTDOWN</unmanaged>\t\n            <unmanaged-short>ERROR_FAIL_SHUTDOWN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.FailRestart\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_FAIL_RESTART']/*\"/>\t\n            <unmanaged>ERROR_FAIL_RESTART</unmanaged>\t\n            <unmanaged-short>ERROR_FAIL_RESTART</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.MaxSessionsReached\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_MAX_SESSIONS_REACHED']/*\"/>\t\n            <unmanaged>ERROR_MAX_SESSIONS_REACHED</unmanaged>\t\n            <unmanaged-short>ERROR_MAX_SESSIONS_REACHED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ThreadModeAlreadyBackground\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_THREAD_MODE_ALREADY_BACKGROUND']/*\"/>\t\n            <unmanaged>ERROR_THREAD_MODE_ALREADY_BACKGROUND</unmanaged>\t\n            <unmanaged-short>ERROR_THREAD_MODE_ALREADY_BACKGROUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ThreadModeNotBackground\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_THREAD_MODE_NOT_BACKGROUND']/*\"/>\t\n            <unmanaged>ERROR_THREAD_MODE_NOT_BACKGROUND</unmanaged>\t\n            <unmanaged-short>ERROR_THREAD_MODE_NOT_BACKGROUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ProcessModeAlreadyBackground\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_PROCESS_MODE_ALREADY_BACKGROUND']/*\"/>\t\n            <unmanaged>ERROR_PROCESS_MODE_ALREADY_BACKGROUND</unmanaged>\t\n            <unmanaged-short>ERROR_PROCESS_MODE_ALREADY_BACKGROUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ProcessModeNotBackground\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_PROCESS_MODE_NOT_BACKGROUND']/*\"/>\t\n            <unmanaged>ERROR_PROCESS_MODE_NOT_BACKGROUND</unmanaged>\t\n            <unmanaged-short>ERROR_PROCESS_MODE_NOT_BACKGROUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidAddress\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_ADDRESS']/*\"/>\t\n            <unmanaged>ERROR_INVALID_ADDRESS</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_ADDRESS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.UserProfileLoad\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_USER_PROFILE_LOAD']/*\"/>\t\n            <unmanaged>ERROR_USER_PROFILE_LOAD</unmanaged>\t\n            <unmanaged-short>ERROR_USER_PROFILE_LOAD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ArithmeticOverflow\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_ARITHMETIC_OVERFLOW']/*\"/>\t\n            <unmanaged>ERROR_ARITHMETIC_OVERFLOW</unmanaged>\t\n            <unmanaged-short>ERROR_ARITHMETIC_OVERFLOW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.PipeConnected\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_PIPE_CONNECTED']/*\"/>\t\n            <unmanaged>ERROR_PIPE_CONNECTED</unmanaged>\t\n            <unmanaged-short>ERROR_PIPE_CONNECTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.PipeListening\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_PIPE_LISTENING']/*\"/>\t\n            <unmanaged>ERROR_PIPE_LISTENING</unmanaged>\t\n            <unmanaged-short>ERROR_PIPE_LISTENING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VerifierStop\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VERIFIER_STOP']/*\"/>\t\n            <unmanaged>ERROR_VERIFIER_STOP</unmanaged>\t\n            <unmanaged-short>ERROR_VERIFIER_STOP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.AbiosError\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_ABIOS_ERROR']/*\"/>\t\n            <unmanaged>ERROR_ABIOS_ERROR</unmanaged>\t\n            <unmanaged-short>ERROR_ABIOS_ERROR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.Wx86Warning\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_WX86_WARNING']/*\"/>\t\n            <unmanaged>ERROR_WX86_WARNING</unmanaged>\t\n            <unmanaged-short>ERROR_WX86_WARNING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.Wx86Error\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_WX86_ERROR']/*\"/>\t\n            <unmanaged>ERROR_WX86_ERROR</unmanaged>\t\n            <unmanaged-short>ERROR_WX86_ERROR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.TimerNotCanceled\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_TIMER_NOT_CANCELED']/*\"/>\t\n            <unmanaged>ERROR_TIMER_NOT_CANCELED</unmanaged>\t\n            <unmanaged-short>ERROR_TIMER_NOT_CANCELED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.Unwind\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_UNWIND']/*\"/>\t\n            <unmanaged>ERROR_UNWIND</unmanaged>\t\n            <unmanaged-short>ERROR_UNWIND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.BadStack\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_BAD_STACK']/*\"/>\t\n            <unmanaged>ERROR_BAD_STACK</unmanaged>\t\n            <unmanaged-short>ERROR_BAD_STACK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidUnwindTarget\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_UNWIND_TARGET']/*\"/>\t\n            <unmanaged>ERROR_INVALID_UNWIND_TARGET</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_UNWIND_TARGET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidPortAttributes\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_PORT_ATTRIBUTES']/*\"/>\t\n            <unmanaged>ERROR_INVALID_PORT_ATTRIBUTES</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_PORT_ATTRIBUTES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.PortMessageTooLong\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_PORT_MESSAGE_TOO_LONG']/*\"/>\t\n            <unmanaged>ERROR_PORT_MESSAGE_TOO_LONG</unmanaged>\t\n            <unmanaged-short>ERROR_PORT_MESSAGE_TOO_LONG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidQuotaLower\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_QUOTA_LOWER']/*\"/>\t\n            <unmanaged>ERROR_INVALID_QUOTA_LOWER</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_QUOTA_LOWER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DeviceAlreadyAttached\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DEVICE_ALREADY_ATTACHED']/*\"/>\t\n            <unmanaged>ERROR_DEVICE_ALREADY_ATTACHED</unmanaged>\t\n            <unmanaged-short>ERROR_DEVICE_ALREADY_ATTACHED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InstructionMisalignment\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INSTRUCTION_MISALIGNMENT']/*\"/>\t\n            <unmanaged>ERROR_INSTRUCTION_MISALIGNMENT</unmanaged>\t\n            <unmanaged-short>ERROR_INSTRUCTION_MISALIGNMENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ProfilingNotStarted\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_PROFILING_NOT_STARTED']/*\"/>\t\n            <unmanaged>ERROR_PROFILING_NOT_STARTED</unmanaged>\t\n            <unmanaged-short>ERROR_PROFILING_NOT_STARTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ProfilingNotStopped\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_PROFILING_NOT_STOPPED']/*\"/>\t\n            <unmanaged>ERROR_PROFILING_NOT_STOPPED</unmanaged>\t\n            <unmanaged-short>ERROR_PROFILING_NOT_STOPPED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CouldNotInterpret\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_COULD_NOT_INTERPRET']/*\"/>\t\n            <unmanaged>ERROR_COULD_NOT_INTERPRET</unmanaged>\t\n            <unmanaged-short>ERROR_COULD_NOT_INTERPRET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ProfilingAtLimit\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_PROFILING_AT_LIMIT']/*\"/>\t\n            <unmanaged>ERROR_PROFILING_AT_LIMIT</unmanaged>\t\n            <unmanaged-short>ERROR_PROFILING_AT_LIMIT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CantWait\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CANT_WAIT']/*\"/>\t\n            <unmanaged>ERROR_CANT_WAIT</unmanaged>\t\n            <unmanaged-short>ERROR_CANT_WAIT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CantTerminateSelf\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CANT_TERMINATE_SELF']/*\"/>\t\n            <unmanaged>ERROR_CANT_TERMINATE_SELF</unmanaged>\t\n            <unmanaged-short>ERROR_CANT_TERMINATE_SELF</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.UnexpectedMmCreateErr\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_UNEXPECTED_MM_CREATE_ERR']/*\"/>\t\n            <unmanaged>ERROR_UNEXPECTED_MM_CREATE_ERR</unmanaged>\t\n            <unmanaged-short>ERROR_UNEXPECTED_MM_CREATE_ERR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.UnexpectedMmMapError\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_UNEXPECTED_MM_MAP_ERROR']/*\"/>\t\n            <unmanaged>ERROR_UNEXPECTED_MM_MAP_ERROR</unmanaged>\t\n            <unmanaged-short>ERROR_UNEXPECTED_MM_MAP_ERROR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.UnexpectedMmExtendErr\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_UNEXPECTED_MM_EXTEND_ERR']/*\"/>\t\n            <unmanaged>ERROR_UNEXPECTED_MM_EXTEND_ERR</unmanaged>\t\n            <unmanaged-short>ERROR_UNEXPECTED_MM_EXTEND_ERR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.BadFunctionTable\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_BAD_FUNCTION_TABLE']/*\"/>\t\n            <unmanaged>ERROR_BAD_FUNCTION_TABLE</unmanaged>\t\n            <unmanaged-short>ERROR_BAD_FUNCTION_TABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NoGuidTranslation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NO_GUID_TRANSLATION']/*\"/>\t\n            <unmanaged>ERROR_NO_GUID_TRANSLATION</unmanaged>\t\n            <unmanaged-short>ERROR_NO_GUID_TRANSLATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidLdtSize\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_LDT_SIZE']/*\"/>\t\n            <unmanaged>ERROR_INVALID_LDT_SIZE</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_LDT_SIZE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidLdtOffset\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_LDT_OFFSET']/*\"/>\t\n            <unmanaged>ERROR_INVALID_LDT_OFFSET</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_LDT_OFFSET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidLdtDescriptor\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_LDT_DESCRIPTOR']/*\"/>\t\n            <unmanaged>ERROR_INVALID_LDT_DESCRIPTOR</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_LDT_DESCRIPTOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.TooManyThreads\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_TOO_MANY_THREADS']/*\"/>\t\n            <unmanaged>ERROR_TOO_MANY_THREADS</unmanaged>\t\n            <unmanaged-short>ERROR_TOO_MANY_THREADS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ThreadNotInProcess\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_THREAD_NOT_IN_PROCESS']/*\"/>\t\n            <unmanaged>ERROR_THREAD_NOT_IN_PROCESS</unmanaged>\t\n            <unmanaged-short>ERROR_THREAD_NOT_IN_PROCESS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.PagefileQuotaExceeded\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_PAGEFILE_QUOTA_EXCEEDED']/*\"/>\t\n            <unmanaged>ERROR_PAGEFILE_QUOTA_EXCEEDED</unmanaged>\t\n            <unmanaged-short>ERROR_PAGEFILE_QUOTA_EXCEEDED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.LogonServerConflict\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_LOGON_SERVER_CONFLICT']/*\"/>\t\n            <unmanaged>ERROR_LOGON_SERVER_CONFLICT</unmanaged>\t\n            <unmanaged-short>ERROR_LOGON_SERVER_CONFLICT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SynchronizationRequired\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SYNCHRONIZATION_REQUIRED']/*\"/>\t\n            <unmanaged>ERROR_SYNCHRONIZATION_REQUIRED</unmanaged>\t\n            <unmanaged-short>ERROR_SYNCHRONIZATION_REQUIRED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NetOpenFailed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NET_OPEN_FAILED']/*\"/>\t\n            <unmanaged>ERROR_NET_OPEN_FAILED</unmanaged>\t\n            <unmanaged-short>ERROR_NET_OPEN_FAILED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IoPrivilegeFailed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IO_PRIVILEGE_FAILED']/*\"/>\t\n            <unmanaged>ERROR_IO_PRIVILEGE_FAILED</unmanaged>\t\n            <unmanaged-short>ERROR_IO_PRIVILEGE_FAILED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ControlCExit\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CONTROL_C_EXIT']/*\"/>\t\n            <unmanaged>ERROR_CONTROL_C_EXIT</unmanaged>\t\n            <unmanaged-short>ERROR_CONTROL_C_EXIT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.MissingSystemfile\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_MISSING_SYSTEMFILE']/*\"/>\t\n            <unmanaged>ERROR_MISSING_SYSTEMFILE</unmanaged>\t\n            <unmanaged-short>ERROR_MISSING_SYSTEMFILE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.UnhandledException\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_UNHANDLED_EXCEPTION']/*\"/>\t\n            <unmanaged>ERROR_UNHANDLED_EXCEPTION</unmanaged>\t\n            <unmanaged-short>ERROR_UNHANDLED_EXCEPTION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.AppInitFailure\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_APP_INIT_FAILURE']/*\"/>\t\n            <unmanaged>ERROR_APP_INIT_FAILURE</unmanaged>\t\n            <unmanaged-short>ERROR_APP_INIT_FAILURE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.PagefileCreateFailed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_PAGEFILE_CREATE_FAILED']/*\"/>\t\n            <unmanaged>ERROR_PAGEFILE_CREATE_FAILED</unmanaged>\t\n            <unmanaged-short>ERROR_PAGEFILE_CREATE_FAILED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidImageHash\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_IMAGE_HASH']/*\"/>\t\n            <unmanaged>ERROR_INVALID_IMAGE_HASH</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_IMAGE_HASH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NoPagefile\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NO_PAGEFILE']/*\"/>\t\n            <unmanaged>ERROR_NO_PAGEFILE</unmanaged>\t\n            <unmanaged-short>ERROR_NO_PAGEFILE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IllegalFloatContext\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_ILLEGAL_FLOAT_CONTEXT']/*\"/>\t\n            <unmanaged>ERROR_ILLEGAL_FLOAT_CONTEXT</unmanaged>\t\n            <unmanaged-short>ERROR_ILLEGAL_FLOAT_CONTEXT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NoEventPair\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NO_EVENT_PAIR']/*\"/>\t\n            <unmanaged>ERROR_NO_EVENT_PAIR</unmanaged>\t\n            <unmanaged-short>ERROR_NO_EVENT_PAIR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DomainCtrlrConfigError\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DOMAIN_CTRLR_CONFIG_ERROR']/*\"/>\t\n            <unmanaged>ERROR_DOMAIN_CTRLR_CONFIG_ERROR</unmanaged>\t\n            <unmanaged-short>ERROR_DOMAIN_CTRLR_CONFIG_ERROR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IllegalCharacter\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_ILLEGAL_CHARACTER']/*\"/>\t\n            <unmanaged>ERROR_ILLEGAL_CHARACTER</unmanaged>\t\n            <unmanaged-short>ERROR_ILLEGAL_CHARACTER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.UndefinedCharacter\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_UNDEFINED_CHARACTER']/*\"/>\t\n            <unmanaged>ERROR_UNDEFINED_CHARACTER</unmanaged>\t\n            <unmanaged-short>ERROR_UNDEFINED_CHARACTER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.FloppyVolume\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_FLOPPY_VOLUME']/*\"/>\t\n            <unmanaged>ERROR_FLOPPY_VOLUME</unmanaged>\t\n            <unmanaged-short>ERROR_FLOPPY_VOLUME</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.BiosFailedToConnectInterrupt\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_BIOS_FAILED_TO_CONNECT_INTERRUPT']/*\"/>\t\n            <unmanaged>ERROR_BIOS_FAILED_TO_CONNECT_INTERRUPT</unmanaged>\t\n            <unmanaged-short>ERROR_BIOS_FAILED_TO_CONNECT_INTERRUPT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.BackupController\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_BACKUP_CONTROLLER']/*\"/>\t\n            <unmanaged>ERROR_BACKUP_CONTROLLER</unmanaged>\t\n            <unmanaged-short>ERROR_BACKUP_CONTROLLER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.MutantLimitExceeded\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_MUTANT_LIMIT_EXCEEDED']/*\"/>\t\n            <unmanaged>ERROR_MUTANT_LIMIT_EXCEEDED</unmanaged>\t\n            <unmanaged-short>ERROR_MUTANT_LIMIT_EXCEEDED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.FsDriverRequired\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_FS_DRIVER_REQUIRED']/*\"/>\t\n            <unmanaged>ERROR_FS_DRIVER_REQUIRED</unmanaged>\t\n            <unmanaged-short>ERROR_FS_DRIVER_REQUIRED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CannotLoadRegistryFile\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CANNOT_LOAD_REGISTRY_FILE']/*\"/>\t\n            <unmanaged>ERROR_CANNOT_LOAD_REGISTRY_FILE</unmanaged>\t\n            <unmanaged-short>ERROR_CANNOT_LOAD_REGISTRY_FILE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DebugAttachFailed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DEBUG_ATTACH_FAILED']/*\"/>\t\n            <unmanaged>ERROR_DEBUG_ATTACH_FAILED</unmanaged>\t\n            <unmanaged-short>ERROR_DEBUG_ATTACH_FAILED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SystemProcessTerminated\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SYSTEM_PROCESS_TERMINATED']/*\"/>\t\n            <unmanaged>ERROR_SYSTEM_PROCESS_TERMINATED</unmanaged>\t\n            <unmanaged-short>ERROR_SYSTEM_PROCESS_TERMINATED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DataNotAccepted\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DATA_NOT_ACCEPTED']/*\"/>\t\n            <unmanaged>ERROR_DATA_NOT_ACCEPTED</unmanaged>\t\n            <unmanaged-short>ERROR_DATA_NOT_ACCEPTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VdmHardError\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VDM_HARD_ERROR']/*\"/>\t\n            <unmanaged>ERROR_VDM_HARD_ERROR</unmanaged>\t\n            <unmanaged-short>ERROR_VDM_HARD_ERROR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DriverCancelTimeout\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DRIVER_CANCEL_TIMEOUT']/*\"/>\t\n            <unmanaged>ERROR_DRIVER_CANCEL_TIMEOUT</unmanaged>\t\n            <unmanaged-short>ERROR_DRIVER_CANCEL_TIMEOUT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ReplyMessageMismatch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_REPLY_MESSAGE_MISMATCH']/*\"/>\t\n            <unmanaged>ERROR_REPLY_MESSAGE_MISMATCH</unmanaged>\t\n            <unmanaged-short>ERROR_REPLY_MESSAGE_MISMATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.LostWritebehindData\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_LOST_WRITEBEHIND_DATA']/*\"/>\t\n            <unmanaged>ERROR_LOST_WRITEBEHIND_DATA</unmanaged>\t\n            <unmanaged-short>ERROR_LOST_WRITEBEHIND_DATA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClientServerParametersInvalid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLIENT_SERVER_PARAMETERS_INVALID']/*\"/>\t\n            <unmanaged>ERROR_CLIENT_SERVER_PARAMETERS_INVALID</unmanaged>\t\n            <unmanaged-short>ERROR_CLIENT_SERVER_PARAMETERS_INVALID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NotTinyStream\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NOT_TINY_STREAM']/*\"/>\t\n            <unmanaged>ERROR_NOT_TINY_STREAM</unmanaged>\t\n            <unmanaged-short>ERROR_NOT_TINY_STREAM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.StackOverflowRead\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_STACK_OVERFLOW_READ']/*\"/>\t\n            <unmanaged>ERROR_STACK_OVERFLOW_READ</unmanaged>\t\n            <unmanaged-short>ERROR_STACK_OVERFLOW_READ</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ConvertToLarge\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CONVERT_TO_LARGE']/*\"/>\t\n            <unmanaged>ERROR_CONVERT_TO_LARGE</unmanaged>\t\n            <unmanaged-short>ERROR_CONVERT_TO_LARGE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.FoundOutOfScope\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_FOUND_OUT_OF_SCOPE']/*\"/>\t\n            <unmanaged>ERROR_FOUND_OUT_OF_SCOPE</unmanaged>\t\n            <unmanaged-short>ERROR_FOUND_OUT_OF_SCOPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.AllocateBucket\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_ALLOCATE_BUCKET']/*\"/>\t\n            <unmanaged>ERROR_ALLOCATE_BUCKET</unmanaged>\t\n            <unmanaged-short>ERROR_ALLOCATE_BUCKET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.MarshallOverflow\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_MARSHALL_OVERFLOW']/*\"/>\t\n            <unmanaged>ERROR_MARSHALL_OVERFLOW</unmanaged>\t\n            <unmanaged-short>ERROR_MARSHALL_OVERFLOW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidVariant\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_VARIANT']/*\"/>\t\n            <unmanaged>ERROR_INVALID_VARIANT</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_VARIANT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.BadCompressionBuffer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_BAD_COMPRESSION_BUFFER']/*\"/>\t\n            <unmanaged>ERROR_BAD_COMPRESSION_BUFFER</unmanaged>\t\n            <unmanaged-short>ERROR_BAD_COMPRESSION_BUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.AuditFailed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_AUDIT_FAILED']/*\"/>\t\n            <unmanaged>ERROR_AUDIT_FAILED</unmanaged>\t\n            <unmanaged-short>ERROR_AUDIT_FAILED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.TimerResolutionNotSet\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_TIMER_RESOLUTION_NOT_SET']/*\"/>\t\n            <unmanaged>ERROR_TIMER_RESOLUTION_NOT_SET</unmanaged>\t\n            <unmanaged-short>ERROR_TIMER_RESOLUTION_NOT_SET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InsufficientLogonInfo\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INSUFFICIENT_LOGON_INFO']/*\"/>\t\n            <unmanaged>ERROR_INSUFFICIENT_LOGON_INFO</unmanaged>\t\n            <unmanaged-short>ERROR_INSUFFICIENT_LOGON_INFO</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.BadDllEntrypoint\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_BAD_DLL_ENTRYPOINT']/*\"/>\t\n            <unmanaged>ERROR_BAD_DLL_ENTRYPOINT</unmanaged>\t\n            <unmanaged-short>ERROR_BAD_DLL_ENTRYPOINT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.BadServiceEntrypoint\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_BAD_SERVICE_ENTRYPOINT']/*\"/>\t\n            <unmanaged>ERROR_BAD_SERVICE_ENTRYPOINT</unmanaged>\t\n            <unmanaged-short>ERROR_BAD_SERVICE_ENTRYPOINT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpAddressConflict1\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IP_ADDRESS_CONFLICT1']/*\"/>\t\n            <unmanaged>ERROR_IP_ADDRESS_CONFLICT1</unmanaged>\t\n            <unmanaged-short>ERROR_IP_ADDRESS_CONFLICT1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpAddressConflict2\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IP_ADDRESS_CONFLICT2']/*\"/>\t\n            <unmanaged>ERROR_IP_ADDRESS_CONFLICT2</unmanaged>\t\n            <unmanaged-short>ERROR_IP_ADDRESS_CONFLICT2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.RegistryQuotaLimit\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_REGISTRY_QUOTA_LIMIT']/*\"/>\t\n            <unmanaged>ERROR_REGISTRY_QUOTA_LIMIT</unmanaged>\t\n            <unmanaged-short>ERROR_REGISTRY_QUOTA_LIMIT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NoCallbackActive\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NO_CALLBACK_ACTIVE']/*\"/>\t\n            <unmanaged>ERROR_NO_CALLBACK_ACTIVE</unmanaged>\t\n            <unmanaged-short>ERROR_NO_CALLBACK_ACTIVE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.PwdTooShort\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_PWD_TOO_SHORT']/*\"/>\t\n            <unmanaged>ERROR_PWD_TOO_SHORT</unmanaged>\t\n            <unmanaged-short>ERROR_PWD_TOO_SHORT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.PwdTooRecent\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_PWD_TOO_RECENT']/*\"/>\t\n            <unmanaged>ERROR_PWD_TOO_RECENT</unmanaged>\t\n            <unmanaged-short>ERROR_PWD_TOO_RECENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.PwdHistoryConflict\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_PWD_HISTORY_CONFLICT']/*\"/>\t\n            <unmanaged>ERROR_PWD_HISTORY_CONFLICT</unmanaged>\t\n            <unmanaged-short>ERROR_PWD_HISTORY_CONFLICT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.UnsupportedCompression\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_UNSUPPORTED_COMPRESSION']/*\"/>\t\n            <unmanaged>ERROR_UNSUPPORTED_COMPRESSION</unmanaged>\t\n            <unmanaged-short>ERROR_UNSUPPORTED_COMPRESSION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidHwProfile\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_HW_PROFILE']/*\"/>\t\n            <unmanaged>ERROR_INVALID_HW_PROFILE</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_HW_PROFILE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidPlugplayDevicePath\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_PLUGPLAY_DEVICE_PATH']/*\"/>\t\n            <unmanaged>ERROR_INVALID_PLUGPLAY_DEVICE_PATH</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_PLUGPLAY_DEVICE_PATH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.QuotaListInconsistent\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_QUOTA_LIST_INCONSISTENT']/*\"/>\t\n            <unmanaged>ERROR_QUOTA_LIST_INCONSISTENT</unmanaged>\t\n            <unmanaged-short>ERROR_QUOTA_LIST_INCONSISTENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.EvaluationExpiration\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_EVALUATION_EXPIRATION']/*\"/>\t\n            <unmanaged>ERROR_EVALUATION_EXPIRATION</unmanaged>\t\n            <unmanaged-short>ERROR_EVALUATION_EXPIRATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IllegalDllRelocation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_ILLEGAL_DLL_RELOCATION']/*\"/>\t\n            <unmanaged>ERROR_ILLEGAL_DLL_RELOCATION</unmanaged>\t\n            <unmanaged-short>ERROR_ILLEGAL_DLL_RELOCATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DllInitFailedLogoff\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DLL_INIT_FAILED_LOGOFF']/*\"/>\t\n            <unmanaged>ERROR_DLL_INIT_FAILED_LOGOFF</unmanaged>\t\n            <unmanaged-short>ERROR_DLL_INIT_FAILED_LOGOFF</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ValidateContinue\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VALIDATE_CONTINUE']/*\"/>\t\n            <unmanaged>ERROR_VALIDATE_CONTINUE</unmanaged>\t\n            <unmanaged-short>ERROR_VALIDATE_CONTINUE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NoMoreMatches\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NO_MORE_MATCHES']/*\"/>\t\n            <unmanaged>ERROR_NO_MORE_MATCHES</unmanaged>\t\n            <unmanaged-short>ERROR_NO_MORE_MATCHES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.RangeListConflict\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_RANGE_LIST_CONFLICT']/*\"/>\t\n            <unmanaged>ERROR_RANGE_LIST_CONFLICT</unmanaged>\t\n            <unmanaged-short>ERROR_RANGE_LIST_CONFLICT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ServerSidMismatch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SERVER_SID_MISMATCH']/*\"/>\t\n            <unmanaged>ERROR_SERVER_SID_MISMATCH</unmanaged>\t\n            <unmanaged-short>ERROR_SERVER_SID_MISMATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CantEnableDenyOnly\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CANT_ENABLE_DENY_ONLY']/*\"/>\t\n            <unmanaged>ERROR_CANT_ENABLE_DENY_ONLY</unmanaged>\t\n            <unmanaged-short>ERROR_CANT_ENABLE_DENY_ONLY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.FloatMultipleFaults\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_FLOAT_MULTIPLE_FAULTS']/*\"/>\t\n            <unmanaged>ERROR_FLOAT_MULTIPLE_FAULTS</unmanaged>\t\n            <unmanaged-short>ERROR_FLOAT_MULTIPLE_FAULTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.FloatMultipleTraps\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_FLOAT_MULTIPLE_TRAPS']/*\"/>\t\n            <unmanaged>ERROR_FLOAT_MULTIPLE_TRAPS</unmanaged>\t\n            <unmanaged-short>ERROR_FLOAT_MULTIPLE_TRAPS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.Nointerface\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NOINTERFACE']/*\"/>\t\n            <unmanaged>ERROR_NOINTERFACE</unmanaged>\t\n            <unmanaged-short>ERROR_NOINTERFACE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DriverFailedSleep\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DRIVER_FAILED_SLEEP']/*\"/>\t\n            <unmanaged>ERROR_DRIVER_FAILED_SLEEP</unmanaged>\t\n            <unmanaged-short>ERROR_DRIVER_FAILED_SLEEP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CorruptSystemFile\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CORRUPT_SYSTEM_FILE']/*\"/>\t\n            <unmanaged>ERROR_CORRUPT_SYSTEM_FILE</unmanaged>\t\n            <unmanaged-short>ERROR_CORRUPT_SYSTEM_FILE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CommitmentMinimum\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_COMMITMENT_MINIMUM']/*\"/>\t\n            <unmanaged>ERROR_COMMITMENT_MINIMUM</unmanaged>\t\n            <unmanaged-short>ERROR_COMMITMENT_MINIMUM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.PnpRestartEnumeration\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_PNP_RESTART_ENUMERATION']/*\"/>\t\n            <unmanaged>ERROR_PNP_RESTART_ENUMERATION</unmanaged>\t\n            <unmanaged-short>ERROR_PNP_RESTART_ENUMERATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SystemImageBadSignature\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SYSTEM_IMAGE_BAD_SIGNATURE']/*\"/>\t\n            <unmanaged>ERROR_SYSTEM_IMAGE_BAD_SIGNATURE</unmanaged>\t\n            <unmanaged-short>ERROR_SYSTEM_IMAGE_BAD_SIGNATURE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.PnpRebootRequired\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_PNP_REBOOT_REQUIRED']/*\"/>\t\n            <unmanaged>ERROR_PNP_REBOOT_REQUIRED</unmanaged>\t\n            <unmanaged-short>ERROR_PNP_REBOOT_REQUIRED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InsufficientPower\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INSUFFICIENT_POWER']/*\"/>\t\n            <unmanaged>ERROR_INSUFFICIENT_POWER</unmanaged>\t\n            <unmanaged-short>ERROR_INSUFFICIENT_POWER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.MultipleFaultViolation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_MULTIPLE_FAULT_VIOLATION']/*\"/>\t\n            <unmanaged>ERROR_MULTIPLE_FAULT_VIOLATION</unmanaged>\t\n            <unmanaged-short>ERROR_MULTIPLE_FAULT_VIOLATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SystemShutdown\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SYSTEM_SHUTDOWN']/*\"/>\t\n            <unmanaged>ERROR_SYSTEM_SHUTDOWN</unmanaged>\t\n            <unmanaged-short>ERROR_SYSTEM_SHUTDOWN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.PortNotSet\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_PORT_NOT_SET']/*\"/>\t\n            <unmanaged>ERROR_PORT_NOT_SET</unmanaged>\t\n            <unmanaged-short>ERROR_PORT_NOT_SET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsVersionCheckFailure\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_VERSION_CHECK_FAILURE']/*\"/>\t\n            <unmanaged>ERROR_DS_VERSION_CHECK_FAILURE</unmanaged>\t\n            <unmanaged-short>ERROR_DS_VERSION_CHECK_FAILURE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.RangeNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_RANGE_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_RANGE_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_RANGE_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NotSafeModeDriver\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NOT_SAFE_MODE_DRIVER']/*\"/>\t\n            <unmanaged>ERROR_NOT_SAFE_MODE_DRIVER</unmanaged>\t\n            <unmanaged-short>ERROR_NOT_SAFE_MODE_DRIVER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.FailedDriverEntry\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_FAILED_DRIVER_ENTRY']/*\"/>\t\n            <unmanaged>ERROR_FAILED_DRIVER_ENTRY</unmanaged>\t\n            <unmanaged-short>ERROR_FAILED_DRIVER_ENTRY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DeviceEnumerationError\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DEVICE_ENUMERATION_ERROR']/*\"/>\t\n            <unmanaged>ERROR_DEVICE_ENUMERATION_ERROR</unmanaged>\t\n            <unmanaged-short>ERROR_DEVICE_ENUMERATION_ERROR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.MountPointNotResolved\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_MOUNT_POINT_NOT_RESOLVED']/*\"/>\t\n            <unmanaged>ERROR_MOUNT_POINT_NOT_RESOLVED</unmanaged>\t\n            <unmanaged-short>ERROR_MOUNT_POINT_NOT_RESOLVED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidDeviceObjectParameter\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_DEVICE_OBJECT_PARAMETER']/*\"/>\t\n            <unmanaged>ERROR_INVALID_DEVICE_OBJECT_PARAMETER</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_DEVICE_OBJECT_PARAMETER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.McaOccured\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_MCA_OCCURED']/*\"/>\t\n            <unmanaged>ERROR_MCA_OCCURED</unmanaged>\t\n            <unmanaged-short>ERROR_MCA_OCCURED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DriverDatabaseError\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DRIVER_DATABASE_ERROR']/*\"/>\t\n            <unmanaged>ERROR_DRIVER_DATABASE_ERROR</unmanaged>\t\n            <unmanaged-short>ERROR_DRIVER_DATABASE_ERROR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SystemHiveTooLarge\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SYSTEM_HIVE_TOO_LARGE']/*\"/>\t\n            <unmanaged>ERROR_SYSTEM_HIVE_TOO_LARGE</unmanaged>\t\n            <unmanaged-short>ERROR_SYSTEM_HIVE_TOO_LARGE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DriverFailedPriorUnload\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DRIVER_FAILED_PRIOR_UNLOAD']/*\"/>\t\n            <unmanaged>ERROR_DRIVER_FAILED_PRIOR_UNLOAD</unmanaged>\t\n            <unmanaged-short>ERROR_DRIVER_FAILED_PRIOR_UNLOAD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolsnapPrepareHibernate\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLSNAP_PREPARE_HIBERNATE']/*\"/>\t\n            <unmanaged>ERROR_VOLSNAP_PREPARE_HIBERNATE</unmanaged>\t\n            <unmanaged-short>ERROR_VOLSNAP_PREPARE_HIBERNATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.HibernationFailure\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_HIBERNATION_FAILURE']/*\"/>\t\n            <unmanaged>ERROR_HIBERNATION_FAILURE</unmanaged>\t\n            <unmanaged-short>ERROR_HIBERNATION_FAILURE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.FileSystemLimitation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_FILE_SYSTEM_LIMITATION']/*\"/>\t\n            <unmanaged>ERROR_FILE_SYSTEM_LIMITATION</unmanaged>\t\n            <unmanaged-short>ERROR_FILE_SYSTEM_LIMITATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.AssertionFailure\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_ASSERTION_FAILURE']/*\"/>\t\n            <unmanaged>ERROR_ASSERTION_FAILURE</unmanaged>\t\n            <unmanaged-short>ERROR_ASSERTION_FAILURE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.AcpiError\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_ACPI_ERROR']/*\"/>\t\n            <unmanaged>ERROR_ACPI_ERROR</unmanaged>\t\n            <unmanaged-short>ERROR_ACPI_ERROR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.WowAssertion\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_WOW_ASSERTION']/*\"/>\t\n            <unmanaged>ERROR_WOW_ASSERTION</unmanaged>\t\n            <unmanaged-short>ERROR_WOW_ASSERTION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.PnpBadMpsTable\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_PNP_BAD_MPS_TABLE']/*\"/>\t\n            <unmanaged>ERROR_PNP_BAD_MPS_TABLE</unmanaged>\t\n            <unmanaged-short>ERROR_PNP_BAD_MPS_TABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.PnpTranslationFailed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_PNP_TRANSLATION_FAILED']/*\"/>\t\n            <unmanaged>ERROR_PNP_TRANSLATION_FAILED</unmanaged>\t\n            <unmanaged-short>ERROR_PNP_TRANSLATION_FAILED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.PnpIrqTranslationFailed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_PNP_IRQ_TRANSLATION_FAILED']/*\"/>\t\n            <unmanaged>ERROR_PNP_IRQ_TRANSLATION_FAILED</unmanaged>\t\n            <unmanaged-short>ERROR_PNP_IRQ_TRANSLATION_FAILED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.PnpInvalidId\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_PNP_INVALID_ID']/*\"/>\t\n            <unmanaged>ERROR_PNP_INVALID_ID</unmanaged>\t\n            <unmanaged-short>ERROR_PNP_INVALID_ID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.WakeSystemDebugger\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_WAKE_SYSTEM_DEBUGGER']/*\"/>\t\n            <unmanaged>ERROR_WAKE_SYSTEM_DEBUGGER</unmanaged>\t\n            <unmanaged-short>ERROR_WAKE_SYSTEM_DEBUGGER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.HandlesClosed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_HANDLES_CLOSED']/*\"/>\t\n            <unmanaged>ERROR_HANDLES_CLOSED</unmanaged>\t\n            <unmanaged-short>ERROR_HANDLES_CLOSED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ExtraneousInformation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_EXTRANEOUS_INFORMATION']/*\"/>\t\n            <unmanaged>ERROR_EXTRANEOUS_INFORMATION</unmanaged>\t\n            <unmanaged-short>ERROR_EXTRANEOUS_INFORMATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.RxactCommitNecessary\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_RXACT_COMMIT_NECESSARY']/*\"/>\t\n            <unmanaged>ERROR_RXACT_COMMIT_NECESSARY</unmanaged>\t\n            <unmanaged-short>ERROR_RXACT_COMMIT_NECESSARY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.MediaCheck\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_MEDIA_CHECK']/*\"/>\t\n            <unmanaged>ERROR_MEDIA_CHECK</unmanaged>\t\n            <unmanaged-short>ERROR_MEDIA_CHECK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GuidSubstitutionMade\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GUID_SUBSTITUTION_MADE']/*\"/>\t\n            <unmanaged>ERROR_GUID_SUBSTITUTION_MADE</unmanaged>\t\n            <unmanaged-short>ERROR_GUID_SUBSTITUTION_MADE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.StoppedOnSymlink\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_STOPPED_ON_SYMLINK']/*\"/>\t\n            <unmanaged>ERROR_STOPPED_ON_SYMLINK</unmanaged>\t\n            <unmanaged-short>ERROR_STOPPED_ON_SYMLINK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.Longjump\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_LONGJUMP']/*\"/>\t\n            <unmanaged>ERROR_LONGJUMP</unmanaged>\t\n            <unmanaged-short>ERROR_LONGJUMP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.PlugplayQueryVetoed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_PLUGPLAY_QUERY_VETOED']/*\"/>\t\n            <unmanaged>ERROR_PLUGPLAY_QUERY_VETOED</unmanaged>\t\n            <unmanaged-short>ERROR_PLUGPLAY_QUERY_VETOED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.UnwindConsolidate\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_UNWIND_CONSOLIDATE']/*\"/>\t\n            <unmanaged>ERROR_UNWIND_CONSOLIDATE</unmanaged>\t\n            <unmanaged-short>ERROR_UNWIND_CONSOLIDATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.RegistryHiveRecovered\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_REGISTRY_HIVE_RECOVERED']/*\"/>\t\n            <unmanaged>ERROR_REGISTRY_HIVE_RECOVERED</unmanaged>\t\n            <unmanaged-short>ERROR_REGISTRY_HIVE_RECOVERED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DllMightBeInsecure\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DLL_MIGHT_BE_INSECURE']/*\"/>\t\n            <unmanaged>ERROR_DLL_MIGHT_BE_INSECURE</unmanaged>\t\n            <unmanaged-short>ERROR_DLL_MIGHT_BE_INSECURE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DllMightBeIncompatible\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DLL_MIGHT_BE_INCOMPATIBLE']/*\"/>\t\n            <unmanaged>ERROR_DLL_MIGHT_BE_INCOMPATIBLE</unmanaged>\t\n            <unmanaged-short>ERROR_DLL_MIGHT_BE_INCOMPATIBLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DbgExceptionNotHandled\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DBG_EXCEPTION_NOT_HANDLED']/*\"/>\t\n            <unmanaged>ERROR_DBG_EXCEPTION_NOT_HANDLED</unmanaged>\t\n            <unmanaged-short>ERROR_DBG_EXCEPTION_NOT_HANDLED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DbgReplyLater\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DBG_REPLY_LATER']/*\"/>\t\n            <unmanaged>ERROR_DBG_REPLY_LATER</unmanaged>\t\n            <unmanaged-short>ERROR_DBG_REPLY_LATER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DbgUnableToProvideHandle\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DBG_UNABLE_TO_PROVIDE_HANDLE']/*\"/>\t\n            <unmanaged>ERROR_DBG_UNABLE_TO_PROVIDE_HANDLE</unmanaged>\t\n            <unmanaged-short>ERROR_DBG_UNABLE_TO_PROVIDE_HANDLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DbgTerminateThread\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DBG_TERMINATE_THREAD']/*\"/>\t\n            <unmanaged>ERROR_DBG_TERMINATE_THREAD</unmanaged>\t\n            <unmanaged-short>ERROR_DBG_TERMINATE_THREAD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DbgTerminateProcess\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DBG_TERMINATE_PROCESS']/*\"/>\t\n            <unmanaged>ERROR_DBG_TERMINATE_PROCESS</unmanaged>\t\n            <unmanaged-short>ERROR_DBG_TERMINATE_PROCESS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DbgControlC\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DBG_CONTROL_C']/*\"/>\t\n            <unmanaged>ERROR_DBG_CONTROL_C</unmanaged>\t\n            <unmanaged-short>ERROR_DBG_CONTROL_C</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DbgPrintexceptionC\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DBG_PRINTEXCEPTION_C']/*\"/>\t\n            <unmanaged>ERROR_DBG_PRINTEXCEPTION_C</unmanaged>\t\n            <unmanaged-short>ERROR_DBG_PRINTEXCEPTION_C</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DbgRipexception\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DBG_RIPEXCEPTION']/*\"/>\t\n            <unmanaged>ERROR_DBG_RIPEXCEPTION</unmanaged>\t\n            <unmanaged-short>ERROR_DBG_RIPEXCEPTION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DbgControlBreak\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DBG_CONTROL_BREAK']/*\"/>\t\n            <unmanaged>ERROR_DBG_CONTROL_BREAK</unmanaged>\t\n            <unmanaged-short>ERROR_DBG_CONTROL_BREAK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DbgCommandException\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DBG_COMMAND_EXCEPTION']/*\"/>\t\n            <unmanaged>ERROR_DBG_COMMAND_EXCEPTION</unmanaged>\t\n            <unmanaged-short>ERROR_DBG_COMMAND_EXCEPTION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ObjectNameExists\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_OBJECT_NAME_EXISTS']/*\"/>\t\n            <unmanaged>ERROR_OBJECT_NAME_EXISTS</unmanaged>\t\n            <unmanaged-short>ERROR_OBJECT_NAME_EXISTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ThreadWasSuspended\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_THREAD_WAS_SUSPENDED']/*\"/>\t\n            <unmanaged>ERROR_THREAD_WAS_SUSPENDED</unmanaged>\t\n            <unmanaged-short>ERROR_THREAD_WAS_SUSPENDED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ImageNotAtBase\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IMAGE_NOT_AT_BASE']/*\"/>\t\n            <unmanaged>ERROR_IMAGE_NOT_AT_BASE</unmanaged>\t\n            <unmanaged-short>ERROR_IMAGE_NOT_AT_BASE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.RxactStateCreated\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_RXACT_STATE_CREATED']/*\"/>\t\n            <unmanaged>ERROR_RXACT_STATE_CREATED</unmanaged>\t\n            <unmanaged-short>ERROR_RXACT_STATE_CREATED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SegmentNotification\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SEGMENT_NOTIFICATION']/*\"/>\t\n            <unmanaged>ERROR_SEGMENT_NOTIFICATION</unmanaged>\t\n            <unmanaged-short>ERROR_SEGMENT_NOTIFICATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.BadCurrentDirectory\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_BAD_CURRENT_DIRECTORY']/*\"/>\t\n            <unmanaged>ERROR_BAD_CURRENT_DIRECTORY</unmanaged>\t\n            <unmanaged-short>ERROR_BAD_CURRENT_DIRECTORY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.FtReadRecoveryFromBackup\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_FT_READ_RECOVERY_FROM_BACKUP']/*\"/>\t\n            <unmanaged>ERROR_FT_READ_RECOVERY_FROM_BACKUP</unmanaged>\t\n            <unmanaged-short>ERROR_FT_READ_RECOVERY_FROM_BACKUP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.FtWriteRecovery\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_FT_WRITE_RECOVERY']/*\"/>\t\n            <unmanaged>ERROR_FT_WRITE_RECOVERY</unmanaged>\t\n            <unmanaged-short>ERROR_FT_WRITE_RECOVERY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ImageMachineTypeMismatch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IMAGE_MACHINE_TYPE_MISMATCH']/*\"/>\t\n            <unmanaged>ERROR_IMAGE_MACHINE_TYPE_MISMATCH</unmanaged>\t\n            <unmanaged-short>ERROR_IMAGE_MACHINE_TYPE_MISMATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ReceivePartial\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_RECEIVE_PARTIAL']/*\"/>\t\n            <unmanaged>ERROR_RECEIVE_PARTIAL</unmanaged>\t\n            <unmanaged-short>ERROR_RECEIVE_PARTIAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ReceiveExpedited\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_RECEIVE_EXPEDITED']/*\"/>\t\n            <unmanaged>ERROR_RECEIVE_EXPEDITED</unmanaged>\t\n            <unmanaged-short>ERROR_RECEIVE_EXPEDITED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ReceivePartialExpedited\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_RECEIVE_PARTIAL_EXPEDITED']/*\"/>\t\n            <unmanaged>ERROR_RECEIVE_PARTIAL_EXPEDITED</unmanaged>\t\n            <unmanaged-short>ERROR_RECEIVE_PARTIAL_EXPEDITED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.EventDone\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_EVENT_DONE']/*\"/>\t\n            <unmanaged>ERROR_EVENT_DONE</unmanaged>\t\n            <unmanaged-short>ERROR_EVENT_DONE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.EventPending\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_EVENT_PENDING']/*\"/>\t\n            <unmanaged>ERROR_EVENT_PENDING</unmanaged>\t\n            <unmanaged-short>ERROR_EVENT_PENDING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CheckingFileSystem\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CHECKING_FILE_SYSTEM']/*\"/>\t\n            <unmanaged>ERROR_CHECKING_FILE_SYSTEM</unmanaged>\t\n            <unmanaged-short>ERROR_CHECKING_FILE_SYSTEM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.FatalAppExit\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_FATAL_APP_EXIT']/*\"/>\t\n            <unmanaged>ERROR_FATAL_APP_EXIT</unmanaged>\t\n            <unmanaged-short>ERROR_FATAL_APP_EXIT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.PredefinedHandle\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_PREDEFINED_HANDLE']/*\"/>\t\n            <unmanaged>ERROR_PREDEFINED_HANDLE</unmanaged>\t\n            <unmanaged-short>ERROR_PREDEFINED_HANDLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.WasUnlocked\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_WAS_UNLOCKED']/*\"/>\t\n            <unmanaged>ERROR_WAS_UNLOCKED</unmanaged>\t\n            <unmanaged-short>ERROR_WAS_UNLOCKED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ServiceNotification\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SERVICE_NOTIFICATION']/*\"/>\t\n            <unmanaged>ERROR_SERVICE_NOTIFICATION</unmanaged>\t\n            <unmanaged-short>ERROR_SERVICE_NOTIFICATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.WasLocked\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_WAS_LOCKED']/*\"/>\t\n            <unmanaged>ERROR_WAS_LOCKED</unmanaged>\t\n            <unmanaged-short>ERROR_WAS_LOCKED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.LogHardError\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_LOG_HARD_ERROR']/*\"/>\t\n            <unmanaged>ERROR_LOG_HARD_ERROR</unmanaged>\t\n            <unmanaged-short>ERROR_LOG_HARD_ERROR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.AlreadyWin32\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_ALREADY_WIN32']/*\"/>\t\n            <unmanaged>ERROR_ALREADY_WIN32</unmanaged>\t\n            <unmanaged-short>ERROR_ALREADY_WIN32</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ImageMachineTypeMismatchExe\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IMAGE_MACHINE_TYPE_MISMATCH_EXE']/*\"/>\t\n            <unmanaged>ERROR_IMAGE_MACHINE_TYPE_MISMATCH_EXE</unmanaged>\t\n            <unmanaged-short>ERROR_IMAGE_MACHINE_TYPE_MISMATCH_EXE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NoYieldPerformed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NO_YIELD_PERFORMED']/*\"/>\t\n            <unmanaged>ERROR_NO_YIELD_PERFORMED</unmanaged>\t\n            <unmanaged-short>ERROR_NO_YIELD_PERFORMED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.TimerResumeIgnored\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_TIMER_RESUME_IGNORED']/*\"/>\t\n            <unmanaged>ERROR_TIMER_RESUME_IGNORED</unmanaged>\t\n            <unmanaged-short>ERROR_TIMER_RESUME_IGNORED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ArbitrationUnhandled\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_ARBITRATION_UNHANDLED']/*\"/>\t\n            <unmanaged>ERROR_ARBITRATION_UNHANDLED</unmanaged>\t\n            <unmanaged-short>ERROR_ARBITRATION_UNHANDLED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CardbusNotSupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CARDBUS_NOT_SUPPORTED']/*\"/>\t\n            <unmanaged>ERROR_CARDBUS_NOT_SUPPORTED</unmanaged>\t\n            <unmanaged-short>ERROR_CARDBUS_NOT_SUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.MpProcessorMismatch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_MP_PROCESSOR_MISMATCH']/*\"/>\t\n            <unmanaged>ERROR_MP_PROCESSOR_MISMATCH</unmanaged>\t\n            <unmanaged-short>ERROR_MP_PROCESSOR_MISMATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.Hibernated\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_HIBERNATED']/*\"/>\t\n            <unmanaged>ERROR_HIBERNATED</unmanaged>\t\n            <unmanaged-short>ERROR_HIBERNATED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ResumeHibernation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_RESUME_HIBERNATION']/*\"/>\t\n            <unmanaged>ERROR_RESUME_HIBERNATION</unmanaged>\t\n            <unmanaged-short>ERROR_RESUME_HIBERNATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.FirmwareUpdated\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_FIRMWARE_UPDATED']/*\"/>\t\n            <unmanaged>ERROR_FIRMWARE_UPDATED</unmanaged>\t\n            <unmanaged-short>ERROR_FIRMWARE_UPDATED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DriversLeakingLockedPages\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DRIVERS_LEAKING_LOCKED_PAGES']/*\"/>\t\n            <unmanaged>ERROR_DRIVERS_LEAKING_LOCKED_PAGES</unmanaged>\t\n            <unmanaged-short>ERROR_DRIVERS_LEAKING_LOCKED_PAGES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.WakeSystem\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_WAKE_SYSTEM']/*\"/>\t\n            <unmanaged>ERROR_WAKE_SYSTEM</unmanaged>\t\n            <unmanaged-short>ERROR_WAKE_SYSTEM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.Wait1\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_WAIT_1']/*\"/>\t\n            <unmanaged>ERROR_WAIT_1</unmanaged>\t\n            <unmanaged-short>ERROR_WAIT_1</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.Wait2\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_WAIT_2']/*\"/>\t\n            <unmanaged>ERROR_WAIT_2</unmanaged>\t\n            <unmanaged-short>ERROR_WAIT_2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.Wait3\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_WAIT_3']/*\"/>\t\n            <unmanaged>ERROR_WAIT_3</unmanaged>\t\n            <unmanaged-short>ERROR_WAIT_3</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.Wait63\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_WAIT_63']/*\"/>\t\n            <unmanaged>ERROR_WAIT_63</unmanaged>\t\n            <unmanaged-short>ERROR_WAIT_63</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.AbandonedWait0\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_ABANDONED_WAIT_0']/*\"/>\t\n            <unmanaged>ERROR_ABANDONED_WAIT_0</unmanaged>\t\n            <unmanaged-short>ERROR_ABANDONED_WAIT_0</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.AbandonedWait63\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_ABANDONED_WAIT_63']/*\"/>\t\n            <unmanaged>ERROR_ABANDONED_WAIT_63</unmanaged>\t\n            <unmanaged-short>ERROR_ABANDONED_WAIT_63</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.UserApc\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_USER_APC']/*\"/>\t\n            <unmanaged>ERROR_USER_APC</unmanaged>\t\n            <unmanaged-short>ERROR_USER_APC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.KernelApc\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_KERNEL_APC']/*\"/>\t\n            <unmanaged>ERROR_KERNEL_APC</unmanaged>\t\n            <unmanaged-short>ERROR_KERNEL_APC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.Alerted\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_ALERTED']/*\"/>\t\n            <unmanaged>ERROR_ALERTED</unmanaged>\t\n            <unmanaged-short>ERROR_ALERTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ElevationRequired\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_ELEVATION_REQUIRED']/*\"/>\t\n            <unmanaged>ERROR_ELEVATION_REQUIRED</unmanaged>\t\n            <unmanaged-short>ERROR_ELEVATION_REQUIRED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.Reparse\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_REPARSE']/*\"/>\t\n            <unmanaged>ERROR_REPARSE</unmanaged>\t\n            <unmanaged-short>ERROR_REPARSE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.OplockBreakInProgress\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_OPLOCK_BREAK_IN_PROGRESS']/*\"/>\t\n            <unmanaged>ERROR_OPLOCK_BREAK_IN_PROGRESS</unmanaged>\t\n            <unmanaged-short>ERROR_OPLOCK_BREAK_IN_PROGRESS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolumeMounted\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLUME_MOUNTED']/*\"/>\t\n            <unmanaged>ERROR_VOLUME_MOUNTED</unmanaged>\t\n            <unmanaged-short>ERROR_VOLUME_MOUNTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.RxactCommitted\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_RXACT_COMMITTED']/*\"/>\t\n            <unmanaged>ERROR_RXACT_COMMITTED</unmanaged>\t\n            <unmanaged-short>ERROR_RXACT_COMMITTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NotifyCleanup\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NOTIFY_CLEANUP']/*\"/>\t\n            <unmanaged>ERROR_NOTIFY_CLEANUP</unmanaged>\t\n            <unmanaged-short>ERROR_NOTIFY_CLEANUP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.PrimaryTransportConnectFailed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_PRIMARY_TRANSPORT_CONNECT_FAILED']/*\"/>\t\n            <unmanaged>ERROR_PRIMARY_TRANSPORT_CONNECT_FAILED</unmanaged>\t\n            <unmanaged-short>ERROR_PRIMARY_TRANSPORT_CONNECT_FAILED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.PageFaultTransition\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_PAGE_FAULT_TRANSITION']/*\"/>\t\n            <unmanaged>ERROR_PAGE_FAULT_TRANSITION</unmanaged>\t\n            <unmanaged-short>ERROR_PAGE_FAULT_TRANSITION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.PageFaultDemandZero\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_PAGE_FAULT_DEMAND_ZERO']/*\"/>\t\n            <unmanaged>ERROR_PAGE_FAULT_DEMAND_ZERO</unmanaged>\t\n            <unmanaged-short>ERROR_PAGE_FAULT_DEMAND_ZERO</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.PageFaultCopyOnWrite\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_PAGE_FAULT_COPY_ON_WRITE']/*\"/>\t\n            <unmanaged>ERROR_PAGE_FAULT_COPY_ON_WRITE</unmanaged>\t\n            <unmanaged-short>ERROR_PAGE_FAULT_COPY_ON_WRITE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.PageFaultGuardPage\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_PAGE_FAULT_GUARD_PAGE']/*\"/>\t\n            <unmanaged>ERROR_PAGE_FAULT_GUARD_PAGE</unmanaged>\t\n            <unmanaged-short>ERROR_PAGE_FAULT_GUARD_PAGE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.PageFaultPagingFile\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_PAGE_FAULT_PAGING_FILE']/*\"/>\t\n            <unmanaged>ERROR_PAGE_FAULT_PAGING_FILE</unmanaged>\t\n            <unmanaged-short>ERROR_PAGE_FAULT_PAGING_FILE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CachePageLocked\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CACHE_PAGE_LOCKED']/*\"/>\t\n            <unmanaged>ERROR_CACHE_PAGE_LOCKED</unmanaged>\t\n            <unmanaged-short>ERROR_CACHE_PAGE_LOCKED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CrashDump\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CRASH_DUMP']/*\"/>\t\n            <unmanaged>ERROR_CRASH_DUMP</unmanaged>\t\n            <unmanaged-short>ERROR_CRASH_DUMP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.BufferAllZeros\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_BUFFER_ALL_ZEROS']/*\"/>\t\n            <unmanaged>ERROR_BUFFER_ALL_ZEROS</unmanaged>\t\n            <unmanaged-short>ERROR_BUFFER_ALL_ZEROS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ReparseObject\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_REPARSE_OBJECT']/*\"/>\t\n            <unmanaged>ERROR_REPARSE_OBJECT</unmanaged>\t\n            <unmanaged-short>ERROR_REPARSE_OBJECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ResourceRequirementsChanged\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_RESOURCE_REQUIREMENTS_CHANGED']/*\"/>\t\n            <unmanaged>ERROR_RESOURCE_REQUIREMENTS_CHANGED</unmanaged>\t\n            <unmanaged-short>ERROR_RESOURCE_REQUIREMENTS_CHANGED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.TranslationComplete\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_TRANSLATION_COMPLETE']/*\"/>\t\n            <unmanaged>ERROR_TRANSLATION_COMPLETE</unmanaged>\t\n            <unmanaged-short>ERROR_TRANSLATION_COMPLETE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NothingToTerminate\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NOTHING_TO_TERMINATE']/*\"/>\t\n            <unmanaged>ERROR_NOTHING_TO_TERMINATE</unmanaged>\t\n            <unmanaged-short>ERROR_NOTHING_TO_TERMINATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ProcessNotInJob\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_PROCESS_NOT_IN_JOB']/*\"/>\t\n            <unmanaged>ERROR_PROCESS_NOT_IN_JOB</unmanaged>\t\n            <unmanaged-short>ERROR_PROCESS_NOT_IN_JOB</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ProcessInJob\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_PROCESS_IN_JOB']/*\"/>\t\n            <unmanaged>ERROR_PROCESS_IN_JOB</unmanaged>\t\n            <unmanaged-short>ERROR_PROCESS_IN_JOB</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolsnapHibernateReady\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLSNAP_HIBERNATE_READY']/*\"/>\t\n            <unmanaged>ERROR_VOLSNAP_HIBERNATE_READY</unmanaged>\t\n            <unmanaged-short>ERROR_VOLSNAP_HIBERNATE_READY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.FsfilterOpCompletedSuccessfully\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_FSFILTER_OP_COMPLETED_SUCCESSFULLY']/*\"/>\t\n            <unmanaged>ERROR_FSFILTER_OP_COMPLETED_SUCCESSFULLY</unmanaged>\t\n            <unmanaged-short>ERROR_FSFILTER_OP_COMPLETED_SUCCESSFULLY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InterruptVectorAlreadyConnected\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INTERRUPT_VECTOR_ALREADY_CONNECTED']/*\"/>\t\n            <unmanaged>ERROR_INTERRUPT_VECTOR_ALREADY_CONNECTED</unmanaged>\t\n            <unmanaged-short>ERROR_INTERRUPT_VECTOR_ALREADY_CONNECTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InterruptStillConnected\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INTERRUPT_STILL_CONNECTED']/*\"/>\t\n            <unmanaged>ERROR_INTERRUPT_STILL_CONNECTED</unmanaged>\t\n            <unmanaged-short>ERROR_INTERRUPT_STILL_CONNECTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.WaitForOplock\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_WAIT_FOR_OPLOCK']/*\"/>\t\n            <unmanaged>ERROR_WAIT_FOR_OPLOCK</unmanaged>\t\n            <unmanaged-short>ERROR_WAIT_FOR_OPLOCK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DbgExceptionHandled\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DBG_EXCEPTION_HANDLED']/*\"/>\t\n            <unmanaged>ERROR_DBG_EXCEPTION_HANDLED</unmanaged>\t\n            <unmanaged-short>ERROR_DBG_EXCEPTION_HANDLED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DbgContinue\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DBG_CONTINUE']/*\"/>\t\n            <unmanaged>ERROR_DBG_CONTINUE</unmanaged>\t\n            <unmanaged-short>ERROR_DBG_CONTINUE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CallbackPopStack\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CALLBACK_POP_STACK']/*\"/>\t\n            <unmanaged>ERROR_CALLBACK_POP_STACK</unmanaged>\t\n            <unmanaged-short>ERROR_CALLBACK_POP_STACK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CompressionDisabled\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_COMPRESSION_DISABLED']/*\"/>\t\n            <unmanaged>ERROR_COMPRESSION_DISABLED</unmanaged>\t\n            <unmanaged-short>ERROR_COMPRESSION_DISABLED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.Cantfetchbackwards\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CANTFETCHBACKWARDS']/*\"/>\t\n            <unmanaged>ERROR_CANTFETCHBACKWARDS</unmanaged>\t\n            <unmanaged-short>ERROR_CANTFETCHBACKWARDS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.Cantscrollbackwards\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CANTSCROLLBACKWARDS']/*\"/>\t\n            <unmanaged>ERROR_CANTSCROLLBACKWARDS</unmanaged>\t\n            <unmanaged-short>ERROR_CANTSCROLLBACKWARDS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.Rowsnotreleased\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_ROWSNOTRELEASED']/*\"/>\t\n            <unmanaged>ERROR_ROWSNOTRELEASED</unmanaged>\t\n            <unmanaged-short>ERROR_ROWSNOTRELEASED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.BadAccessorFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_BAD_ACCESSOR_FLAGS']/*\"/>\t\n            <unmanaged>ERROR_BAD_ACCESSOR_FLAGS</unmanaged>\t\n            <unmanaged-short>ERROR_BAD_ACCESSOR_FLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ErrorsEncountered\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_ERRORS_ENCOUNTERED']/*\"/>\t\n            <unmanaged>ERROR_ERRORS_ENCOUNTERED</unmanaged>\t\n            <unmanaged-short>ERROR_ERRORS_ENCOUNTERED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NotCapable\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NOT_CAPABLE']/*\"/>\t\n            <unmanaged>ERROR_NOT_CAPABLE</unmanaged>\t\n            <unmanaged-short>ERROR_NOT_CAPABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.RequestOutOfSequence\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_REQUEST_OUT_OF_SEQUENCE']/*\"/>\t\n            <unmanaged>ERROR_REQUEST_OUT_OF_SEQUENCE</unmanaged>\t\n            <unmanaged-short>ERROR_REQUEST_OUT_OF_SEQUENCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VersionParseError\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VERSION_PARSE_ERROR']/*\"/>\t\n            <unmanaged>ERROR_VERSION_PARSE_ERROR</unmanaged>\t\n            <unmanaged-short>ERROR_VERSION_PARSE_ERROR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.Badstartposition\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_BADSTARTPOSITION']/*\"/>\t\n            <unmanaged>ERROR_BADSTARTPOSITION</unmanaged>\t\n            <unmanaged-short>ERROR_BADSTARTPOSITION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.MemoryHardware\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_MEMORY_HARDWARE']/*\"/>\t\n            <unmanaged>ERROR_MEMORY_HARDWARE</unmanaged>\t\n            <unmanaged-short>ERROR_MEMORY_HARDWARE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DiskRepairDisabled\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DISK_REPAIR_DISABLED']/*\"/>\t\n            <unmanaged>ERROR_DISK_REPAIR_DISABLED</unmanaged>\t\n            <unmanaged-short>ERROR_DISK_REPAIR_DISABLED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InsufficientResourceForSpecifiedSharedSectionSize\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INSUFFICIENT_RESOURCE_FOR_SPECIFIED_SHARED_SECTION_SIZE']/*\"/>\t\n            <unmanaged>ERROR_INSUFFICIENT_RESOURCE_FOR_SPECIFIED_SHARED_SECTION_SIZE</unmanaged>\t\n            <unmanaged-short>ERROR_INSUFFICIENT_RESOURCE_FOR_SPECIFIED_SHARED_SECTION_SIZE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SystemPowerstateTransition\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SYSTEM_POWERSTATE_TRANSITION']/*\"/>\t\n            <unmanaged>ERROR_SYSTEM_POWERSTATE_TRANSITION</unmanaged>\t\n            <unmanaged-short>ERROR_SYSTEM_POWERSTATE_TRANSITION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SystemPowerstateComplexTransition\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SYSTEM_POWERSTATE_COMPLEX_TRANSITION']/*\"/>\t\n            <unmanaged>ERROR_SYSTEM_POWERSTATE_COMPLEX_TRANSITION</unmanaged>\t\n            <unmanaged-short>ERROR_SYSTEM_POWERSTATE_COMPLEX_TRANSITION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.McaException\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_MCA_EXCEPTION']/*\"/>\t\n            <unmanaged>ERROR_MCA_EXCEPTION</unmanaged>\t\n            <unmanaged-short>ERROR_MCA_EXCEPTION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.AccessAuditByPolicy\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_ACCESS_AUDIT_BY_POLICY']/*\"/>\t\n            <unmanaged>ERROR_ACCESS_AUDIT_BY_POLICY</unmanaged>\t\n            <unmanaged-short>ERROR_ACCESS_AUDIT_BY_POLICY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.AccessDisabledNoSaferUiByPolicy\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_ACCESS_DISABLED_NO_SAFER_UI_BY_POLICY']/*\"/>\t\n            <unmanaged>ERROR_ACCESS_DISABLED_NO_SAFER_UI_BY_POLICY</unmanaged>\t\n            <unmanaged-short>ERROR_ACCESS_DISABLED_NO_SAFER_UI_BY_POLICY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.AbandonHiberfile\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_ABANDON_HIBERFILE']/*\"/>\t\n            <unmanaged>ERROR_ABANDON_HIBERFILE</unmanaged>\t\n            <unmanaged-short>ERROR_ABANDON_HIBERFILE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.LostWritebehindDataNetworkDisconnected\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_LOST_WRITEBEHIND_DATA_NETWORK_DISCONNECTED']/*\"/>\t\n            <unmanaged>ERROR_LOST_WRITEBEHIND_DATA_NETWORK_DISCONNECTED</unmanaged>\t\n            <unmanaged-short>ERROR_LOST_WRITEBEHIND_DATA_NETWORK_DISCONNECTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.LostWritebehindDataNetworkServerError\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_LOST_WRITEBEHIND_DATA_NETWORK_SERVER_ERROR']/*\"/>\t\n            <unmanaged>ERROR_LOST_WRITEBEHIND_DATA_NETWORK_SERVER_ERROR</unmanaged>\t\n            <unmanaged-short>ERROR_LOST_WRITEBEHIND_DATA_NETWORK_SERVER_ERROR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.LostWritebehindDataLocalDiskError\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_LOST_WRITEBEHIND_DATA_LOCAL_DISK_ERROR']/*\"/>\t\n            <unmanaged>ERROR_LOST_WRITEBEHIND_DATA_LOCAL_DISK_ERROR</unmanaged>\t\n            <unmanaged-short>ERROR_LOST_WRITEBEHIND_DATA_LOCAL_DISK_ERROR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.BadMcfgTable\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_BAD_MCFG_TABLE']/*\"/>\t\n            <unmanaged>ERROR_BAD_MCFG_TABLE</unmanaged>\t\n            <unmanaged-short>ERROR_BAD_MCFG_TABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.OplockSwitchedToNewHandle\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_OPLOCK_SWITCHED_TO_NEW_HANDLE']/*\"/>\t\n            <unmanaged>ERROR_OPLOCK_SWITCHED_TO_NEW_HANDLE</unmanaged>\t\n            <unmanaged-short>ERROR_OPLOCK_SWITCHED_TO_NEW_HANDLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CannotGrantRequestedOplock\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CANNOT_GRANT_REQUESTED_OPLOCK']/*\"/>\t\n            <unmanaged>ERROR_CANNOT_GRANT_REQUESTED_OPLOCK</unmanaged>\t\n            <unmanaged-short>ERROR_CANNOT_GRANT_REQUESTED_OPLOCK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CannotBreakOplock\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CANNOT_BREAK_OPLOCK']/*\"/>\t\n            <unmanaged>ERROR_CANNOT_BREAK_OPLOCK</unmanaged>\t\n            <unmanaged-short>ERROR_CANNOT_BREAK_OPLOCK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.OplockHandleClosed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_OPLOCK_HANDLE_CLOSED']/*\"/>\t\n            <unmanaged>ERROR_OPLOCK_HANDLE_CLOSED</unmanaged>\t\n            <unmanaged-short>ERROR_OPLOCK_HANDLE_CLOSED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NoAceCondition\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NO_ACE_CONDITION']/*\"/>\t\n            <unmanaged>ERROR_NO_ACE_CONDITION</unmanaged>\t\n            <unmanaged-short>ERROR_NO_ACE_CONDITION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidAceCondition\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_ACE_CONDITION']/*\"/>\t\n            <unmanaged>ERROR_INVALID_ACE_CONDITION</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_ACE_CONDITION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.EaAccessDenied\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_EA_ACCESS_DENIED']/*\"/>\t\n            <unmanaged>ERROR_EA_ACCESS_DENIED</unmanaged>\t\n            <unmanaged-short>ERROR_EA_ACCESS_DENIED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.OperationAborted\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_OPERATION_ABORTED']/*\"/>\t\n            <unmanaged>ERROR_OPERATION_ABORTED</unmanaged>\t\n            <unmanaged-short>ERROR_OPERATION_ABORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IoIncomplete\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IO_INCOMPLETE']/*\"/>\t\n            <unmanaged>ERROR_IO_INCOMPLETE</unmanaged>\t\n            <unmanaged-short>ERROR_IO_INCOMPLETE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IoPending\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IO_PENDING']/*\"/>\t\n            <unmanaged>ERROR_IO_PENDING</unmanaged>\t\n            <unmanaged-short>ERROR_IO_PENDING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.Noaccess\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NOACCESS']/*\"/>\t\n            <unmanaged>ERROR_NOACCESS</unmanaged>\t\n            <unmanaged-short>ERROR_NOACCESS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.Swaperror\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SWAPERROR']/*\"/>\t\n            <unmanaged>ERROR_SWAPERROR</unmanaged>\t\n            <unmanaged-short>ERROR_SWAPERROR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.StackOverflow\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_STACK_OVERFLOW']/*\"/>\t\n            <unmanaged>ERROR_STACK_OVERFLOW</unmanaged>\t\n            <unmanaged-short>ERROR_STACK_OVERFLOW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidMessage\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_MESSAGE']/*\"/>\t\n            <unmanaged>ERROR_INVALID_MESSAGE</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_MESSAGE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CanNotComplete\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CAN_NOT_COMPLETE']/*\"/>\t\n            <unmanaged>ERROR_CAN_NOT_COMPLETE</unmanaged>\t\n            <unmanaged-short>ERROR_CAN_NOT_COMPLETE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidFlags\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_FLAGS']/*\"/>\t\n            <unmanaged>ERROR_INVALID_FLAGS</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_FLAGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.UnrecognizedVolume\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_UNRECOGNIZED_VOLUME']/*\"/>\t\n            <unmanaged>ERROR_UNRECOGNIZED_VOLUME</unmanaged>\t\n            <unmanaged-short>ERROR_UNRECOGNIZED_VOLUME</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.FileInvalid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_FILE_INVALID']/*\"/>\t\n            <unmanaged>ERROR_FILE_INVALID</unmanaged>\t\n            <unmanaged-short>ERROR_FILE_INVALID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.FullscreenMode\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_FULLSCREEN_MODE']/*\"/>\t\n            <unmanaged>ERROR_FULLSCREEN_MODE</unmanaged>\t\n            <unmanaged-short>ERROR_FULLSCREEN_MODE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NoToken\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NO_TOKEN']/*\"/>\t\n            <unmanaged>ERROR_NO_TOKEN</unmanaged>\t\n            <unmanaged-short>ERROR_NO_TOKEN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.Baddb\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_BADDB']/*\"/>\t\n            <unmanaged>ERROR_BADDB</unmanaged>\t\n            <unmanaged-short>ERROR_BADDB</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.Badkey\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_BADKEY']/*\"/>\t\n            <unmanaged>ERROR_BADKEY</unmanaged>\t\n            <unmanaged-short>ERROR_BADKEY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.Cantopen\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CANTOPEN']/*\"/>\t\n            <unmanaged>ERROR_CANTOPEN</unmanaged>\t\n            <unmanaged-short>ERROR_CANTOPEN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.Cantread\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CANTREAD']/*\"/>\t\n            <unmanaged>ERROR_CANTREAD</unmanaged>\t\n            <unmanaged-short>ERROR_CANTREAD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.Cantwrite\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CANTWRITE']/*\"/>\t\n            <unmanaged>ERROR_CANTWRITE</unmanaged>\t\n            <unmanaged-short>ERROR_CANTWRITE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.RegistryRecovered\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_REGISTRY_RECOVERED']/*\"/>\t\n            <unmanaged>ERROR_REGISTRY_RECOVERED</unmanaged>\t\n            <unmanaged-short>ERROR_REGISTRY_RECOVERED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.RegistryCorrupt\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_REGISTRY_CORRUPT']/*\"/>\t\n            <unmanaged>ERROR_REGISTRY_CORRUPT</unmanaged>\t\n            <unmanaged-short>ERROR_REGISTRY_CORRUPT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.RegistryIoFailed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_REGISTRY_IO_FAILED']/*\"/>\t\n            <unmanaged>ERROR_REGISTRY_IO_FAILED</unmanaged>\t\n            <unmanaged-short>ERROR_REGISTRY_IO_FAILED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NotRegistryFile\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NOT_REGISTRY_FILE']/*\"/>\t\n            <unmanaged>ERROR_NOT_REGISTRY_FILE</unmanaged>\t\n            <unmanaged-short>ERROR_NOT_REGISTRY_FILE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.KeyDeleted\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_KEY_DELETED']/*\"/>\t\n            <unmanaged>ERROR_KEY_DELETED</unmanaged>\t\n            <unmanaged-short>ERROR_KEY_DELETED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NoLogSpace\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NO_LOG_SPACE']/*\"/>\t\n            <unmanaged>ERROR_NO_LOG_SPACE</unmanaged>\t\n            <unmanaged-short>ERROR_NO_LOG_SPACE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.KeyHasChildren\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_KEY_HAS_CHILDREN']/*\"/>\t\n            <unmanaged>ERROR_KEY_HAS_CHILDREN</unmanaged>\t\n            <unmanaged-short>ERROR_KEY_HAS_CHILDREN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ChildMustBeVolatile\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CHILD_MUST_BE_VOLATILE']/*\"/>\t\n            <unmanaged>ERROR_CHILD_MUST_BE_VOLATILE</unmanaged>\t\n            <unmanaged-short>ERROR_CHILD_MUST_BE_VOLATILE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NotifyEnumDir\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NOTIFY_ENUM_DIR']/*\"/>\t\n            <unmanaged>ERROR_NOTIFY_ENUM_DIR</unmanaged>\t\n            <unmanaged-short>ERROR_NOTIFY_ENUM_DIR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DependentServicesRunning\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DEPENDENT_SERVICES_RUNNING']/*\"/>\t\n            <unmanaged>ERROR_DEPENDENT_SERVICES_RUNNING</unmanaged>\t\n            <unmanaged-short>ERROR_DEPENDENT_SERVICES_RUNNING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidServiceControl\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_SERVICE_CONTROL']/*\"/>\t\n            <unmanaged>ERROR_INVALID_SERVICE_CONTROL</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_SERVICE_CONTROL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ServiceRequestTimeout\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SERVICE_REQUEST_TIMEOUT']/*\"/>\t\n            <unmanaged>ERROR_SERVICE_REQUEST_TIMEOUT</unmanaged>\t\n            <unmanaged-short>ERROR_SERVICE_REQUEST_TIMEOUT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ServiceNoThread\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SERVICE_NO_THREAD']/*\"/>\t\n            <unmanaged>ERROR_SERVICE_NO_THREAD</unmanaged>\t\n            <unmanaged-short>ERROR_SERVICE_NO_THREAD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ServiceDatabaseLocked\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SERVICE_DATABASE_LOCKED']/*\"/>\t\n            <unmanaged>ERROR_SERVICE_DATABASE_LOCKED</unmanaged>\t\n            <unmanaged-short>ERROR_SERVICE_DATABASE_LOCKED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ServiceAlreadyRunning\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SERVICE_ALREADY_RUNNING']/*\"/>\t\n            <unmanaged>ERROR_SERVICE_ALREADY_RUNNING</unmanaged>\t\n            <unmanaged-short>ERROR_SERVICE_ALREADY_RUNNING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidServiceAccount\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_SERVICE_ACCOUNT']/*\"/>\t\n            <unmanaged>ERROR_INVALID_SERVICE_ACCOUNT</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_SERVICE_ACCOUNT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ServiceDisabled\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SERVICE_DISABLED']/*\"/>\t\n            <unmanaged>ERROR_SERVICE_DISABLED</unmanaged>\t\n            <unmanaged-short>ERROR_SERVICE_DISABLED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CircularDependency\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CIRCULAR_DEPENDENCY']/*\"/>\t\n            <unmanaged>ERROR_CIRCULAR_DEPENDENCY</unmanaged>\t\n            <unmanaged-short>ERROR_CIRCULAR_DEPENDENCY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ServiceDoesNotExist\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SERVICE_DOES_NOT_EXIST']/*\"/>\t\n            <unmanaged>ERROR_SERVICE_DOES_NOT_EXIST</unmanaged>\t\n            <unmanaged-short>ERROR_SERVICE_DOES_NOT_EXIST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ServiceCannotAcceptCtrl\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SERVICE_CANNOT_ACCEPT_CTRL']/*\"/>\t\n            <unmanaged>ERROR_SERVICE_CANNOT_ACCEPT_CTRL</unmanaged>\t\n            <unmanaged-short>ERROR_SERVICE_CANNOT_ACCEPT_CTRL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ServiceNotActive\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SERVICE_NOT_ACTIVE']/*\"/>\t\n            <unmanaged>ERROR_SERVICE_NOT_ACTIVE</unmanaged>\t\n            <unmanaged-short>ERROR_SERVICE_NOT_ACTIVE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.FailedServiceControllerConnect\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_FAILED_SERVICE_CONTROLLER_CONNECT']/*\"/>\t\n            <unmanaged>ERROR_FAILED_SERVICE_CONTROLLER_CONNECT</unmanaged>\t\n            <unmanaged-short>ERROR_FAILED_SERVICE_CONTROLLER_CONNECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ExceptionInService\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_EXCEPTION_IN_SERVICE']/*\"/>\t\n            <unmanaged>ERROR_EXCEPTION_IN_SERVICE</unmanaged>\t\n            <unmanaged-short>ERROR_EXCEPTION_IN_SERVICE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DatabaseDoesNotExist\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DATABASE_DOES_NOT_EXIST']/*\"/>\t\n            <unmanaged>ERROR_DATABASE_DOES_NOT_EXIST</unmanaged>\t\n            <unmanaged-short>ERROR_DATABASE_DOES_NOT_EXIST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ServiceSpecificError\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SERVICE_SPECIFIC_ERROR']/*\"/>\t\n            <unmanaged>ERROR_SERVICE_SPECIFIC_ERROR</unmanaged>\t\n            <unmanaged-short>ERROR_SERVICE_SPECIFIC_ERROR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ProcessAborted\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_PROCESS_ABORTED']/*\"/>\t\n            <unmanaged>ERROR_PROCESS_ABORTED</unmanaged>\t\n            <unmanaged-short>ERROR_PROCESS_ABORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ServiceDependencyFail\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SERVICE_DEPENDENCY_FAIL']/*\"/>\t\n            <unmanaged>ERROR_SERVICE_DEPENDENCY_FAIL</unmanaged>\t\n            <unmanaged-short>ERROR_SERVICE_DEPENDENCY_FAIL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ServiceLogonFailed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SERVICE_LOGON_FAILED']/*\"/>\t\n            <unmanaged>ERROR_SERVICE_LOGON_FAILED</unmanaged>\t\n            <unmanaged-short>ERROR_SERVICE_LOGON_FAILED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ServiceStartHang\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SERVICE_START_HANG']/*\"/>\t\n            <unmanaged>ERROR_SERVICE_START_HANG</unmanaged>\t\n            <unmanaged-short>ERROR_SERVICE_START_HANG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidServiceLock\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_SERVICE_LOCK']/*\"/>\t\n            <unmanaged>ERROR_INVALID_SERVICE_LOCK</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_SERVICE_LOCK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ServiceMarkedForDelete\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SERVICE_MARKED_FOR_DELETE']/*\"/>\t\n            <unmanaged>ERROR_SERVICE_MARKED_FOR_DELETE</unmanaged>\t\n            <unmanaged-short>ERROR_SERVICE_MARKED_FOR_DELETE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ServiceExists\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SERVICE_EXISTS']/*\"/>\t\n            <unmanaged>ERROR_SERVICE_EXISTS</unmanaged>\t\n            <unmanaged-short>ERROR_SERVICE_EXISTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.AlreadyRunningLkg\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_ALREADY_RUNNING_LKG']/*\"/>\t\n            <unmanaged>ERROR_ALREADY_RUNNING_LKG</unmanaged>\t\n            <unmanaged-short>ERROR_ALREADY_RUNNING_LKG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ServiceDependencyDeleted\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SERVICE_DEPENDENCY_DELETED']/*\"/>\t\n            <unmanaged>ERROR_SERVICE_DEPENDENCY_DELETED</unmanaged>\t\n            <unmanaged-short>ERROR_SERVICE_DEPENDENCY_DELETED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.BootAlreadyAccepted\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_BOOT_ALREADY_ACCEPTED']/*\"/>\t\n            <unmanaged>ERROR_BOOT_ALREADY_ACCEPTED</unmanaged>\t\n            <unmanaged-short>ERROR_BOOT_ALREADY_ACCEPTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ServiceNeverStarted\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SERVICE_NEVER_STARTED']/*\"/>\t\n            <unmanaged>ERROR_SERVICE_NEVER_STARTED</unmanaged>\t\n            <unmanaged-short>ERROR_SERVICE_NEVER_STARTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DuplicateServiceName\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DUPLICATE_SERVICE_NAME']/*\"/>\t\n            <unmanaged>ERROR_DUPLICATE_SERVICE_NAME</unmanaged>\t\n            <unmanaged-short>ERROR_DUPLICATE_SERVICE_NAME</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DifferentServiceAccount\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DIFFERENT_SERVICE_ACCOUNT']/*\"/>\t\n            <unmanaged>ERROR_DIFFERENT_SERVICE_ACCOUNT</unmanaged>\t\n            <unmanaged-short>ERROR_DIFFERENT_SERVICE_ACCOUNT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CannotDetectDriverFailure\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CANNOT_DETECT_DRIVER_FAILURE']/*\"/>\t\n            <unmanaged>ERROR_CANNOT_DETECT_DRIVER_FAILURE</unmanaged>\t\n            <unmanaged-short>ERROR_CANNOT_DETECT_DRIVER_FAILURE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CannotDetectProcessAbort\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CANNOT_DETECT_PROCESS_ABORT']/*\"/>\t\n            <unmanaged>ERROR_CANNOT_DETECT_PROCESS_ABORT</unmanaged>\t\n            <unmanaged-short>ERROR_CANNOT_DETECT_PROCESS_ABORT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NoRecoveryProgram\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NO_RECOVERY_PROGRAM']/*\"/>\t\n            <unmanaged>ERROR_NO_RECOVERY_PROGRAM</unmanaged>\t\n            <unmanaged-short>ERROR_NO_RECOVERY_PROGRAM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ServiceNotInExe\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SERVICE_NOT_IN_EXE']/*\"/>\t\n            <unmanaged>ERROR_SERVICE_NOT_IN_EXE</unmanaged>\t\n            <unmanaged-short>ERROR_SERVICE_NOT_IN_EXE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NotSafebootService\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NOT_SAFEBOOT_SERVICE']/*\"/>\t\n            <unmanaged>ERROR_NOT_SAFEBOOT_SERVICE</unmanaged>\t\n            <unmanaged-short>ERROR_NOT_SAFEBOOT_SERVICE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.EndOfMedia\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_END_OF_MEDIA']/*\"/>\t\n            <unmanaged>ERROR_END_OF_MEDIA</unmanaged>\t\n            <unmanaged-short>ERROR_END_OF_MEDIA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.FilemarkDetected\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_FILEMARK_DETECTED']/*\"/>\t\n            <unmanaged>ERROR_FILEMARK_DETECTED</unmanaged>\t\n            <unmanaged-short>ERROR_FILEMARK_DETECTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.BeginningOfMedia\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_BEGINNING_OF_MEDIA']/*\"/>\t\n            <unmanaged>ERROR_BEGINNING_OF_MEDIA</unmanaged>\t\n            <unmanaged-short>ERROR_BEGINNING_OF_MEDIA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SetmarkDetected\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SETMARK_DETECTED']/*\"/>\t\n            <unmanaged>ERROR_SETMARK_DETECTED</unmanaged>\t\n            <unmanaged-short>ERROR_SETMARK_DETECTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NoDataDetected\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NO_DATA_DETECTED']/*\"/>\t\n            <unmanaged>ERROR_NO_DATA_DETECTED</unmanaged>\t\n            <unmanaged-short>ERROR_NO_DATA_DETECTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.PartitionFailure\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_PARTITION_FAILURE']/*\"/>\t\n            <unmanaged>ERROR_PARTITION_FAILURE</unmanaged>\t\n            <unmanaged-short>ERROR_PARTITION_FAILURE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidBlockLength\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_BLOCK_LENGTH']/*\"/>\t\n            <unmanaged>ERROR_INVALID_BLOCK_LENGTH</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_BLOCK_LENGTH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DeviceNotPartitioned\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DEVICE_NOT_PARTITIONED']/*\"/>\t\n            <unmanaged>ERROR_DEVICE_NOT_PARTITIONED</unmanaged>\t\n            <unmanaged-short>ERROR_DEVICE_NOT_PARTITIONED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.UnableToLockMedia\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_UNABLE_TO_LOCK_MEDIA']/*\"/>\t\n            <unmanaged>ERROR_UNABLE_TO_LOCK_MEDIA</unmanaged>\t\n            <unmanaged-short>ERROR_UNABLE_TO_LOCK_MEDIA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.UnableToUnloadMedia\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_UNABLE_TO_UNLOAD_MEDIA']/*\"/>\t\n            <unmanaged>ERROR_UNABLE_TO_UNLOAD_MEDIA</unmanaged>\t\n            <unmanaged-short>ERROR_UNABLE_TO_UNLOAD_MEDIA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.MediaChanged\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_MEDIA_CHANGED']/*\"/>\t\n            <unmanaged>ERROR_MEDIA_CHANGED</unmanaged>\t\n            <unmanaged-short>ERROR_MEDIA_CHANGED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.BusReset\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_BUS_RESET']/*\"/>\t\n            <unmanaged>ERROR_BUS_RESET</unmanaged>\t\n            <unmanaged-short>ERROR_BUS_RESET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NoMediaInDrive\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NO_MEDIA_IN_DRIVE']/*\"/>\t\n            <unmanaged>ERROR_NO_MEDIA_IN_DRIVE</unmanaged>\t\n            <unmanaged-short>ERROR_NO_MEDIA_IN_DRIVE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NoUnicodeTranslation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NO_UNICODE_TRANSLATION']/*\"/>\t\n            <unmanaged>ERROR_NO_UNICODE_TRANSLATION</unmanaged>\t\n            <unmanaged-short>ERROR_NO_UNICODE_TRANSLATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DllInitFailed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DLL_INIT_FAILED']/*\"/>\t\n            <unmanaged>ERROR_DLL_INIT_FAILED</unmanaged>\t\n            <unmanaged-short>ERROR_DLL_INIT_FAILED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ShutdownInProgress\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SHUTDOWN_IN_PROGRESS']/*\"/>\t\n            <unmanaged>ERROR_SHUTDOWN_IN_PROGRESS</unmanaged>\t\n            <unmanaged-short>ERROR_SHUTDOWN_IN_PROGRESS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NoShutdownInProgress\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NO_SHUTDOWN_IN_PROGRESS']/*\"/>\t\n            <unmanaged>ERROR_NO_SHUTDOWN_IN_PROGRESS</unmanaged>\t\n            <unmanaged-short>ERROR_NO_SHUTDOWN_IN_PROGRESS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IoDevice\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IO_DEVICE']/*\"/>\t\n            <unmanaged>ERROR_IO_DEVICE</unmanaged>\t\n            <unmanaged-short>ERROR_IO_DEVICE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SerialNoDevice\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SERIAL_NO_DEVICE']/*\"/>\t\n            <unmanaged>ERROR_SERIAL_NO_DEVICE</unmanaged>\t\n            <unmanaged-short>ERROR_SERIAL_NO_DEVICE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IrqBusy\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IRQ_BUSY']/*\"/>\t\n            <unmanaged>ERROR_IRQ_BUSY</unmanaged>\t\n            <unmanaged-short>ERROR_IRQ_BUSY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.MoreWrites\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_MORE_WRITES']/*\"/>\t\n            <unmanaged>ERROR_MORE_WRITES</unmanaged>\t\n            <unmanaged-short>ERROR_MORE_WRITES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CounterTimeout\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_COUNTER_TIMEOUT']/*\"/>\t\n            <unmanaged>ERROR_COUNTER_TIMEOUT</unmanaged>\t\n            <unmanaged-short>ERROR_COUNTER_TIMEOUT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.FloppyIdMarkNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_FLOPPY_ID_MARK_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_FLOPPY_ID_MARK_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_FLOPPY_ID_MARK_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.FloppyWrongCylinder\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_FLOPPY_WRONG_CYLINDER']/*\"/>\t\n            <unmanaged>ERROR_FLOPPY_WRONG_CYLINDER</unmanaged>\t\n            <unmanaged-short>ERROR_FLOPPY_WRONG_CYLINDER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.FloppyUnknownError\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_FLOPPY_UNKNOWN_ERROR']/*\"/>\t\n            <unmanaged>ERROR_FLOPPY_UNKNOWN_ERROR</unmanaged>\t\n            <unmanaged-short>ERROR_FLOPPY_UNKNOWN_ERROR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.FloppyBadRegisters\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_FLOPPY_BAD_REGISTERS']/*\"/>\t\n            <unmanaged>ERROR_FLOPPY_BAD_REGISTERS</unmanaged>\t\n            <unmanaged-short>ERROR_FLOPPY_BAD_REGISTERS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DiskRecalibrateFailed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DISK_RECALIBRATE_FAILED']/*\"/>\t\n            <unmanaged>ERROR_DISK_RECALIBRATE_FAILED</unmanaged>\t\n            <unmanaged-short>ERROR_DISK_RECALIBRATE_FAILED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DiskOperationFailed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DISK_OPERATION_FAILED']/*\"/>\t\n            <unmanaged>ERROR_DISK_OPERATION_FAILED</unmanaged>\t\n            <unmanaged-short>ERROR_DISK_OPERATION_FAILED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DiskResetFailed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DISK_RESET_FAILED']/*\"/>\t\n            <unmanaged>ERROR_DISK_RESET_FAILED</unmanaged>\t\n            <unmanaged-short>ERROR_DISK_RESET_FAILED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.EomOverflow\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_EOM_OVERFLOW']/*\"/>\t\n            <unmanaged>ERROR_EOM_OVERFLOW</unmanaged>\t\n            <unmanaged-short>ERROR_EOM_OVERFLOW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NotEnoughServerMemory\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NOT_ENOUGH_SERVER_MEMORY']/*\"/>\t\n            <unmanaged>ERROR_NOT_ENOUGH_SERVER_MEMORY</unmanaged>\t\n            <unmanaged-short>ERROR_NOT_ENOUGH_SERVER_MEMORY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.PossibleDeadlock\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_POSSIBLE_DEADLOCK']/*\"/>\t\n            <unmanaged>ERROR_POSSIBLE_DEADLOCK</unmanaged>\t\n            <unmanaged-short>ERROR_POSSIBLE_DEADLOCK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.MappedAlignment\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_MAPPED_ALIGNMENT']/*\"/>\t\n            <unmanaged>ERROR_MAPPED_ALIGNMENT</unmanaged>\t\n            <unmanaged-short>ERROR_MAPPED_ALIGNMENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SetPowerStateVetoed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SET_POWER_STATE_VETOED']/*\"/>\t\n            <unmanaged>ERROR_SET_POWER_STATE_VETOED</unmanaged>\t\n            <unmanaged-short>ERROR_SET_POWER_STATE_VETOED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SetPowerStateFailed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SET_POWER_STATE_FAILED']/*\"/>\t\n            <unmanaged>ERROR_SET_POWER_STATE_FAILED</unmanaged>\t\n            <unmanaged-short>ERROR_SET_POWER_STATE_FAILED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.TooManyLinks\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_TOO_MANY_LINKS']/*\"/>\t\n            <unmanaged>ERROR_TOO_MANY_LINKS</unmanaged>\t\n            <unmanaged-short>ERROR_TOO_MANY_LINKS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.OldWinVersion\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_OLD_WIN_VERSION']/*\"/>\t\n            <unmanaged>ERROR_OLD_WIN_VERSION</unmanaged>\t\n            <unmanaged-short>ERROR_OLD_WIN_VERSION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.AppWrongOs\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_APP_WRONG_OS']/*\"/>\t\n            <unmanaged>ERROR_APP_WRONG_OS</unmanaged>\t\n            <unmanaged-short>ERROR_APP_WRONG_OS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SingleInstanceApp\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SINGLE_INSTANCE_APP']/*\"/>\t\n            <unmanaged>ERROR_SINGLE_INSTANCE_APP</unmanaged>\t\n            <unmanaged-short>ERROR_SINGLE_INSTANCE_APP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.RmodeApp\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_RMODE_APP']/*\"/>\t\n            <unmanaged>ERROR_RMODE_APP</unmanaged>\t\n            <unmanaged-short>ERROR_RMODE_APP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidDll\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_DLL']/*\"/>\t\n            <unmanaged>ERROR_INVALID_DLL</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_DLL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NoAssociation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NO_ASSOCIATION']/*\"/>\t\n            <unmanaged>ERROR_NO_ASSOCIATION</unmanaged>\t\n            <unmanaged-short>ERROR_NO_ASSOCIATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DdeFail\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DDE_FAIL']/*\"/>\t\n            <unmanaged>ERROR_DDE_FAIL</unmanaged>\t\n            <unmanaged-short>ERROR_DDE_FAIL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DllNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DLL_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_DLL_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_DLL_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NoMoreUserHandles\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NO_MORE_USER_HANDLES']/*\"/>\t\n            <unmanaged>ERROR_NO_MORE_USER_HANDLES</unmanaged>\t\n            <unmanaged-short>ERROR_NO_MORE_USER_HANDLES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.MessageSyncOnly\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_MESSAGE_SYNC_ONLY']/*\"/>\t\n            <unmanaged>ERROR_MESSAGE_SYNC_ONLY</unmanaged>\t\n            <unmanaged-short>ERROR_MESSAGE_SYNC_ONLY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SourceElementEmpty\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SOURCE_ELEMENT_EMPTY']/*\"/>\t\n            <unmanaged>ERROR_SOURCE_ELEMENT_EMPTY</unmanaged>\t\n            <unmanaged-short>ERROR_SOURCE_ELEMENT_EMPTY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DestinationElementFull\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DESTINATION_ELEMENT_FULL']/*\"/>\t\n            <unmanaged>ERROR_DESTINATION_ELEMENT_FULL</unmanaged>\t\n            <unmanaged-short>ERROR_DESTINATION_ELEMENT_FULL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IllegalElementAddress\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_ILLEGAL_ELEMENT_ADDRESS']/*\"/>\t\n            <unmanaged>ERROR_ILLEGAL_ELEMENT_ADDRESS</unmanaged>\t\n            <unmanaged-short>ERROR_ILLEGAL_ELEMENT_ADDRESS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.MagazineNotPresent\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_MAGAZINE_NOT_PRESENT']/*\"/>\t\n            <unmanaged>ERROR_MAGAZINE_NOT_PRESENT</unmanaged>\t\n            <unmanaged-short>ERROR_MAGAZINE_NOT_PRESENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DeviceReinitializationNeeded\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DEVICE_REINITIALIZATION_NEEDED']/*\"/>\t\n            <unmanaged>ERROR_DEVICE_REINITIALIZATION_NEEDED</unmanaged>\t\n            <unmanaged-short>ERROR_DEVICE_REINITIALIZATION_NEEDED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DeviceRequiresCleaning\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DEVICE_REQUIRES_CLEANING']/*\"/>\t\n            <unmanaged>ERROR_DEVICE_REQUIRES_CLEANING</unmanaged>\t\n            <unmanaged-short>ERROR_DEVICE_REQUIRES_CLEANING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DeviceDoorOpen\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DEVICE_DOOR_OPEN']/*\"/>\t\n            <unmanaged>ERROR_DEVICE_DOOR_OPEN</unmanaged>\t\n            <unmanaged-short>ERROR_DEVICE_DOOR_OPEN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DeviceNotConnected\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DEVICE_NOT_CONNECTED']/*\"/>\t\n            <unmanaged>ERROR_DEVICE_NOT_CONNECTED</unmanaged>\t\n            <unmanaged-short>ERROR_DEVICE_NOT_CONNECTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NoMatch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NO_MATCH']/*\"/>\t\n            <unmanaged>ERROR_NO_MATCH</unmanaged>\t\n            <unmanaged-short>ERROR_NO_MATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SetNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SET_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_SET_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_SET_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.PointNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_POINT_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_POINT_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_POINT_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NoTrackingService\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NO_TRACKING_SERVICE']/*\"/>\t\n            <unmanaged>ERROR_NO_TRACKING_SERVICE</unmanaged>\t\n            <unmanaged-short>ERROR_NO_TRACKING_SERVICE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NoVolumeId\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NO_VOLUME_ID']/*\"/>\t\n            <unmanaged>ERROR_NO_VOLUME_ID</unmanaged>\t\n            <unmanaged-short>ERROR_NO_VOLUME_ID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.UnableToRemoveReplaced\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_UNABLE_TO_REMOVE_REPLACED']/*\"/>\t\n            <unmanaged>ERROR_UNABLE_TO_REMOVE_REPLACED</unmanaged>\t\n            <unmanaged-short>ERROR_UNABLE_TO_REMOVE_REPLACED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.UnableToMoveReplacement\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_UNABLE_TO_MOVE_REPLACEMENT']/*\"/>\t\n            <unmanaged>ERROR_UNABLE_TO_MOVE_REPLACEMENT</unmanaged>\t\n            <unmanaged-short>ERROR_UNABLE_TO_MOVE_REPLACEMENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.UnableToMoveReplacement2\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_UNABLE_TO_MOVE_REPLACEMENT_2']/*\"/>\t\n            <unmanaged>ERROR_UNABLE_TO_MOVE_REPLACEMENT_2</unmanaged>\t\n            <unmanaged-short>ERROR_UNABLE_TO_MOVE_REPLACEMENT_2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.JournalDeleteInProgress\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_JOURNAL_DELETE_IN_PROGRESS']/*\"/>\t\n            <unmanaged>ERROR_JOURNAL_DELETE_IN_PROGRESS</unmanaged>\t\n            <unmanaged-short>ERROR_JOURNAL_DELETE_IN_PROGRESS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.JournalNotActive\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_JOURNAL_NOT_ACTIVE']/*\"/>\t\n            <unmanaged>ERROR_JOURNAL_NOT_ACTIVE</unmanaged>\t\n            <unmanaged-short>ERROR_JOURNAL_NOT_ACTIVE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.PotentialFileFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_POTENTIAL_FILE_FOUND']/*\"/>\t\n            <unmanaged>ERROR_POTENTIAL_FILE_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_POTENTIAL_FILE_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.JournalEntryDeleted\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_JOURNAL_ENTRY_DELETED']/*\"/>\t\n            <unmanaged>ERROR_JOURNAL_ENTRY_DELETED</unmanaged>\t\n            <unmanaged-short>ERROR_JOURNAL_ENTRY_DELETED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ShutdownIsScheduled\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SHUTDOWN_IS_SCHEDULED']/*\"/>\t\n            <unmanaged>ERROR_SHUTDOWN_IS_SCHEDULED</unmanaged>\t\n            <unmanaged-short>ERROR_SHUTDOWN_IS_SCHEDULED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ShutdownUsersLoggedOn\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SHUTDOWN_USERS_LOGGED_ON']/*\"/>\t\n            <unmanaged>ERROR_SHUTDOWN_USERS_LOGGED_ON</unmanaged>\t\n            <unmanaged-short>ERROR_SHUTDOWN_USERS_LOGGED_ON</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.BadDevice\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_BAD_DEVICE']/*\"/>\t\n            <unmanaged>ERROR_BAD_DEVICE</unmanaged>\t\n            <unmanaged-short>ERROR_BAD_DEVICE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ConnectionUnavail\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CONNECTION_UNAVAIL']/*\"/>\t\n            <unmanaged>ERROR_CONNECTION_UNAVAIL</unmanaged>\t\n            <unmanaged-short>ERROR_CONNECTION_UNAVAIL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DeviceAlreadyRemembered\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DEVICE_ALREADY_REMEMBERED']/*\"/>\t\n            <unmanaged>ERROR_DEVICE_ALREADY_REMEMBERED</unmanaged>\t\n            <unmanaged-short>ERROR_DEVICE_ALREADY_REMEMBERED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NoNetOrBadPath\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NO_NET_OR_BAD_PATH']/*\"/>\t\n            <unmanaged>ERROR_NO_NET_OR_BAD_PATH</unmanaged>\t\n            <unmanaged-short>ERROR_NO_NET_OR_BAD_PATH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.BadProvider\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_BAD_PROVIDER']/*\"/>\t\n            <unmanaged>ERROR_BAD_PROVIDER</unmanaged>\t\n            <unmanaged-short>ERROR_BAD_PROVIDER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CannotOpenProfile\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CANNOT_OPEN_PROFILE']/*\"/>\t\n            <unmanaged>ERROR_CANNOT_OPEN_PROFILE</unmanaged>\t\n            <unmanaged-short>ERROR_CANNOT_OPEN_PROFILE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.BadProfile\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_BAD_PROFILE']/*\"/>\t\n            <unmanaged>ERROR_BAD_PROFILE</unmanaged>\t\n            <unmanaged-short>ERROR_BAD_PROFILE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NotContainer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NOT_CONTAINER']/*\"/>\t\n            <unmanaged>ERROR_NOT_CONTAINER</unmanaged>\t\n            <unmanaged-short>ERROR_NOT_CONTAINER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ExtendedError\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_EXTENDED_ERROR']/*\"/>\t\n            <unmanaged>ERROR_EXTENDED_ERROR</unmanaged>\t\n            <unmanaged-short>ERROR_EXTENDED_ERROR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidGroupname\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_GROUPNAME']/*\"/>\t\n            <unmanaged>ERROR_INVALID_GROUPNAME</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_GROUPNAME</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidComputername\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_COMPUTERNAME']/*\"/>\t\n            <unmanaged>ERROR_INVALID_COMPUTERNAME</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_COMPUTERNAME</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidEventname\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_EVENTNAME']/*\"/>\t\n            <unmanaged>ERROR_INVALID_EVENTNAME</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_EVENTNAME</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidDomainname\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_DOMAINNAME']/*\"/>\t\n            <unmanaged>ERROR_INVALID_DOMAINNAME</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_DOMAINNAME</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidServicename\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_SERVICENAME']/*\"/>\t\n            <unmanaged>ERROR_INVALID_SERVICENAME</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_SERVICENAME</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidNetname\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_NETNAME']/*\"/>\t\n            <unmanaged>ERROR_INVALID_NETNAME</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_NETNAME</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidSharename\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_SHARENAME']/*\"/>\t\n            <unmanaged>ERROR_INVALID_SHARENAME</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_SHARENAME</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidPasswordname\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_PASSWORDNAME']/*\"/>\t\n            <unmanaged>ERROR_INVALID_PASSWORDNAME</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_PASSWORDNAME</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidMessagename\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_MESSAGENAME']/*\"/>\t\n            <unmanaged>ERROR_INVALID_MESSAGENAME</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_MESSAGENAME</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidMessagedest\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_MESSAGEDEST']/*\"/>\t\n            <unmanaged>ERROR_INVALID_MESSAGEDEST</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_MESSAGEDEST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SessionCredentialConflict\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SESSION_CREDENTIAL_CONFLICT']/*\"/>\t\n            <unmanaged>ERROR_SESSION_CREDENTIAL_CONFLICT</unmanaged>\t\n            <unmanaged-short>ERROR_SESSION_CREDENTIAL_CONFLICT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.RemoteSessionLimitExceeded\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_REMOTE_SESSION_LIMIT_EXCEEDED']/*\"/>\t\n            <unmanaged>ERROR_REMOTE_SESSION_LIMIT_EXCEEDED</unmanaged>\t\n            <unmanaged-short>ERROR_REMOTE_SESSION_LIMIT_EXCEEDED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DupDomainname\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DUP_DOMAINNAME']/*\"/>\t\n            <unmanaged>ERROR_DUP_DOMAINNAME</unmanaged>\t\n            <unmanaged-short>ERROR_DUP_DOMAINNAME</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NoNetwork\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NO_NETWORK']/*\"/>\t\n            <unmanaged>ERROR_NO_NETWORK</unmanaged>\t\n            <unmanaged-short>ERROR_NO_NETWORK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.Cancelled\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CANCELLED']/*\"/>\t\n            <unmanaged>ERROR_CANCELLED</unmanaged>\t\n            <unmanaged-short>ERROR_CANCELLED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.UserMappedFile\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_USER_MAPPED_FILE']/*\"/>\t\n            <unmanaged>ERROR_USER_MAPPED_FILE</unmanaged>\t\n            <unmanaged-short>ERROR_USER_MAPPED_FILE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ConnectionRefused\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CONNECTION_REFUSED']/*\"/>\t\n            <unmanaged>ERROR_CONNECTION_REFUSED</unmanaged>\t\n            <unmanaged-short>ERROR_CONNECTION_REFUSED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GracefulDisconnect\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRACEFUL_DISCONNECT']/*\"/>\t\n            <unmanaged>ERROR_GRACEFUL_DISCONNECT</unmanaged>\t\n            <unmanaged-short>ERROR_GRACEFUL_DISCONNECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.AddressAlreadyAssociated\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_ADDRESS_ALREADY_ASSOCIATED']/*\"/>\t\n            <unmanaged>ERROR_ADDRESS_ALREADY_ASSOCIATED</unmanaged>\t\n            <unmanaged-short>ERROR_ADDRESS_ALREADY_ASSOCIATED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.AddressNotAssociated\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_ADDRESS_NOT_ASSOCIATED']/*\"/>\t\n            <unmanaged>ERROR_ADDRESS_NOT_ASSOCIATED</unmanaged>\t\n            <unmanaged-short>ERROR_ADDRESS_NOT_ASSOCIATED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ConnectionInvalid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CONNECTION_INVALID']/*\"/>\t\n            <unmanaged>ERROR_CONNECTION_INVALID</unmanaged>\t\n            <unmanaged-short>ERROR_CONNECTION_INVALID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ConnectionActive\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CONNECTION_ACTIVE']/*\"/>\t\n            <unmanaged>ERROR_CONNECTION_ACTIVE</unmanaged>\t\n            <unmanaged-short>ERROR_CONNECTION_ACTIVE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NetworkUnreachable\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NETWORK_UNREACHABLE']/*\"/>\t\n            <unmanaged>ERROR_NETWORK_UNREACHABLE</unmanaged>\t\n            <unmanaged-short>ERROR_NETWORK_UNREACHABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.HostUnreachable\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_HOST_UNREACHABLE']/*\"/>\t\n            <unmanaged>ERROR_HOST_UNREACHABLE</unmanaged>\t\n            <unmanaged-short>ERROR_HOST_UNREACHABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ProtocolUnreachable\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_PROTOCOL_UNREACHABLE']/*\"/>\t\n            <unmanaged>ERROR_PROTOCOL_UNREACHABLE</unmanaged>\t\n            <unmanaged-short>ERROR_PROTOCOL_UNREACHABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.PortUnreachable\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_PORT_UNREACHABLE']/*\"/>\t\n            <unmanaged>ERROR_PORT_UNREACHABLE</unmanaged>\t\n            <unmanaged-short>ERROR_PORT_UNREACHABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.RequestAborted\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_REQUEST_ABORTED']/*\"/>\t\n            <unmanaged>ERROR_REQUEST_ABORTED</unmanaged>\t\n            <unmanaged-short>ERROR_REQUEST_ABORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ConnectionAborted\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CONNECTION_ABORTED']/*\"/>\t\n            <unmanaged>ERROR_CONNECTION_ABORTED</unmanaged>\t\n            <unmanaged-short>ERROR_CONNECTION_ABORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.Retry\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_RETRY']/*\"/>\t\n            <unmanaged>ERROR_RETRY</unmanaged>\t\n            <unmanaged-short>ERROR_RETRY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ConnectionCountLimit\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CONNECTION_COUNT_LIMIT']/*\"/>\t\n            <unmanaged>ERROR_CONNECTION_COUNT_LIMIT</unmanaged>\t\n            <unmanaged-short>ERROR_CONNECTION_COUNT_LIMIT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.LoginTimeRestriction\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_LOGIN_TIME_RESTRICTION']/*\"/>\t\n            <unmanaged>ERROR_LOGIN_TIME_RESTRICTION</unmanaged>\t\n            <unmanaged-short>ERROR_LOGIN_TIME_RESTRICTION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.LoginWkstaRestriction\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_LOGIN_WKSTA_RESTRICTION']/*\"/>\t\n            <unmanaged>ERROR_LOGIN_WKSTA_RESTRICTION</unmanaged>\t\n            <unmanaged-short>ERROR_LOGIN_WKSTA_RESTRICTION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IncorrectAddress\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INCORRECT_ADDRESS']/*\"/>\t\n            <unmanaged>ERROR_INCORRECT_ADDRESS</unmanaged>\t\n            <unmanaged-short>ERROR_INCORRECT_ADDRESS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.AlreadyRegistered\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_ALREADY_REGISTERED']/*\"/>\t\n            <unmanaged>ERROR_ALREADY_REGISTERED</unmanaged>\t\n            <unmanaged-short>ERROR_ALREADY_REGISTERED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ServiceNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SERVICE_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_SERVICE_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_SERVICE_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NotAuthenticated\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NOT_AUTHENTICATED']/*\"/>\t\n            <unmanaged>ERROR_NOT_AUTHENTICATED</unmanaged>\t\n            <unmanaged-short>ERROR_NOT_AUTHENTICATED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NotLoggedOn\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NOT_LOGGED_ON']/*\"/>\t\n            <unmanaged>ERROR_NOT_LOGGED_ON</unmanaged>\t\n            <unmanaged-short>ERROR_NOT_LOGGED_ON</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.Continue\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CONTINUE']/*\"/>\t\n            <unmanaged>ERROR_CONTINUE</unmanaged>\t\n            <unmanaged-short>ERROR_CONTINUE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.AlreadyInitialized\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_ALREADY_INITIALIZED']/*\"/>\t\n            <unmanaged>ERROR_ALREADY_INITIALIZED</unmanaged>\t\n            <unmanaged-short>ERROR_ALREADY_INITIALIZED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NoMoreDevices\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NO_MORE_DEVICES']/*\"/>\t\n            <unmanaged>ERROR_NO_MORE_DEVICES</unmanaged>\t\n            <unmanaged-short>ERROR_NO_MORE_DEVICES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NoSuchSite\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NO_SUCH_SITE']/*\"/>\t\n            <unmanaged>ERROR_NO_SUCH_SITE</unmanaged>\t\n            <unmanaged-short>ERROR_NO_SUCH_SITE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DomainControllerExists\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DOMAIN_CONTROLLER_EXISTS']/*\"/>\t\n            <unmanaged>ERROR_DOMAIN_CONTROLLER_EXISTS</unmanaged>\t\n            <unmanaged-short>ERROR_DOMAIN_CONTROLLER_EXISTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.OnlyIfConnected\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_ONLY_IF_CONNECTED']/*\"/>\t\n            <unmanaged>ERROR_ONLY_IF_CONNECTED</unmanaged>\t\n            <unmanaged-short>ERROR_ONLY_IF_CONNECTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.OverrideNochanges\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_OVERRIDE_NOCHANGES']/*\"/>\t\n            <unmanaged>ERROR_OVERRIDE_NOCHANGES</unmanaged>\t\n            <unmanaged-short>ERROR_OVERRIDE_NOCHANGES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.BadUserProfile\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_BAD_USER_PROFILE']/*\"/>\t\n            <unmanaged>ERROR_BAD_USER_PROFILE</unmanaged>\t\n            <unmanaged-short>ERROR_BAD_USER_PROFILE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NotSupportedOnSbs\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NOT_SUPPORTED_ON_SBS']/*\"/>\t\n            <unmanaged>ERROR_NOT_SUPPORTED_ON_SBS</unmanaged>\t\n            <unmanaged-short>ERROR_NOT_SUPPORTED_ON_SBS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ServerShutdownInProgress\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SERVER_SHUTDOWN_IN_PROGRESS']/*\"/>\t\n            <unmanaged>ERROR_SERVER_SHUTDOWN_IN_PROGRESS</unmanaged>\t\n            <unmanaged-short>ERROR_SERVER_SHUTDOWN_IN_PROGRESS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.HostDown\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_HOST_DOWN']/*\"/>\t\n            <unmanaged>ERROR_HOST_DOWN</unmanaged>\t\n            <unmanaged-short>ERROR_HOST_DOWN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NonAccountSid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NON_ACCOUNT_SID']/*\"/>\t\n            <unmanaged>ERROR_NON_ACCOUNT_SID</unmanaged>\t\n            <unmanaged-short>ERROR_NON_ACCOUNT_SID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NonDomainSid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NON_DOMAIN_SID']/*\"/>\t\n            <unmanaged>ERROR_NON_DOMAIN_SID</unmanaged>\t\n            <unmanaged-short>ERROR_NON_DOMAIN_SID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ApphelpBlock\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_APPHELP_BLOCK']/*\"/>\t\n            <unmanaged>ERROR_APPHELP_BLOCK</unmanaged>\t\n            <unmanaged-short>ERROR_APPHELP_BLOCK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.AccessDisabledByPolicy\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_ACCESS_DISABLED_BY_POLICY']/*\"/>\t\n            <unmanaged>ERROR_ACCESS_DISABLED_BY_POLICY</unmanaged>\t\n            <unmanaged-short>ERROR_ACCESS_DISABLED_BY_POLICY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.RegNatConsumption\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_REG_NAT_CONSUMPTION']/*\"/>\t\n            <unmanaged>ERROR_REG_NAT_CONSUMPTION</unmanaged>\t\n            <unmanaged-short>ERROR_REG_NAT_CONSUMPTION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CscshareOffline\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CSCSHARE_OFFLINE']/*\"/>\t\n            <unmanaged>ERROR_CSCSHARE_OFFLINE</unmanaged>\t\n            <unmanaged-short>ERROR_CSCSHARE_OFFLINE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.PkinitFailure\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_PKINIT_FAILURE']/*\"/>\t\n            <unmanaged>ERROR_PKINIT_FAILURE</unmanaged>\t\n            <unmanaged-short>ERROR_PKINIT_FAILURE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SmartcardSubsystemFailure\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SMARTCARD_SUBSYSTEM_FAILURE']/*\"/>\t\n            <unmanaged>ERROR_SMARTCARD_SUBSYSTEM_FAILURE</unmanaged>\t\n            <unmanaged-short>ERROR_SMARTCARD_SUBSYSTEM_FAILURE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DowngradeDetected\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DOWNGRADE_DETECTED']/*\"/>\t\n            <unmanaged>ERROR_DOWNGRADE_DETECTED</unmanaged>\t\n            <unmanaged-short>ERROR_DOWNGRADE_DETECTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.MachineLocked\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_MACHINE_LOCKED']/*\"/>\t\n            <unmanaged>ERROR_MACHINE_LOCKED</unmanaged>\t\n            <unmanaged-short>ERROR_MACHINE_LOCKED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CallbackSuppliedInvalidData\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CALLBACK_SUPPLIED_INVALID_DATA']/*\"/>\t\n            <unmanaged>ERROR_CALLBACK_SUPPLIED_INVALID_DATA</unmanaged>\t\n            <unmanaged-short>ERROR_CALLBACK_SUPPLIED_INVALID_DATA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SyncForegroundRefreshRequired\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SYNC_FOREGROUND_REFRESH_REQUIRED']/*\"/>\t\n            <unmanaged>ERROR_SYNC_FOREGROUND_REFRESH_REQUIRED</unmanaged>\t\n            <unmanaged-short>ERROR_SYNC_FOREGROUND_REFRESH_REQUIRED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DriverBlocked\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DRIVER_BLOCKED']/*\"/>\t\n            <unmanaged>ERROR_DRIVER_BLOCKED</unmanaged>\t\n            <unmanaged-short>ERROR_DRIVER_BLOCKED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidImportOfNonDll\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_IMPORT_OF_NON_DLL']/*\"/>\t\n            <unmanaged>ERROR_INVALID_IMPORT_OF_NON_DLL</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_IMPORT_OF_NON_DLL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.AccessDisabledWebblade\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_ACCESS_DISABLED_WEBBLADE']/*\"/>\t\n            <unmanaged>ERROR_ACCESS_DISABLED_WEBBLADE</unmanaged>\t\n            <unmanaged-short>ERROR_ACCESS_DISABLED_WEBBLADE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.AccessDisabledWebbladeTamper\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_ACCESS_DISABLED_WEBBLADE_TAMPER']/*\"/>\t\n            <unmanaged>ERROR_ACCESS_DISABLED_WEBBLADE_TAMPER</unmanaged>\t\n            <unmanaged-short>ERROR_ACCESS_DISABLED_WEBBLADE_TAMPER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.RecoveryFailure\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_RECOVERY_FAILURE']/*\"/>\t\n            <unmanaged>ERROR_RECOVERY_FAILURE</unmanaged>\t\n            <unmanaged-short>ERROR_RECOVERY_FAILURE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.AlreadyFiber\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_ALREADY_FIBER']/*\"/>\t\n            <unmanaged>ERROR_ALREADY_FIBER</unmanaged>\t\n            <unmanaged-short>ERROR_ALREADY_FIBER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.AlreadyThread\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_ALREADY_THREAD']/*\"/>\t\n            <unmanaged>ERROR_ALREADY_THREAD</unmanaged>\t\n            <unmanaged-short>ERROR_ALREADY_THREAD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.StackBufferOverrun\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_STACK_BUFFER_OVERRUN']/*\"/>\t\n            <unmanaged>ERROR_STACK_BUFFER_OVERRUN</unmanaged>\t\n            <unmanaged-short>ERROR_STACK_BUFFER_OVERRUN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ParameterQuotaExceeded\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_PARAMETER_QUOTA_EXCEEDED']/*\"/>\t\n            <unmanaged>ERROR_PARAMETER_QUOTA_EXCEEDED</unmanaged>\t\n            <unmanaged-short>ERROR_PARAMETER_QUOTA_EXCEEDED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DebuggerInactive\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DEBUGGER_INACTIVE']/*\"/>\t\n            <unmanaged>ERROR_DEBUGGER_INACTIVE</unmanaged>\t\n            <unmanaged-short>ERROR_DEBUGGER_INACTIVE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DelayLoadFailed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DELAY_LOAD_FAILED']/*\"/>\t\n            <unmanaged>ERROR_DELAY_LOAD_FAILED</unmanaged>\t\n            <unmanaged-short>ERROR_DELAY_LOAD_FAILED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VdmDisallowed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VDM_DISALLOWED']/*\"/>\t\n            <unmanaged>ERROR_VDM_DISALLOWED</unmanaged>\t\n            <unmanaged-short>ERROR_VDM_DISALLOWED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.UnidentifiedError\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_UNIDENTIFIED_ERROR']/*\"/>\t\n            <unmanaged>ERROR_UNIDENTIFIED_ERROR</unmanaged>\t\n            <unmanaged-short>ERROR_UNIDENTIFIED_ERROR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidCruntimeParameter\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_CRUNTIME_PARAMETER']/*\"/>\t\n            <unmanaged>ERROR_INVALID_CRUNTIME_PARAMETER</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_CRUNTIME_PARAMETER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.BeyondVdl\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_BEYOND_VDL']/*\"/>\t\n            <unmanaged>ERROR_BEYOND_VDL</unmanaged>\t\n            <unmanaged-short>ERROR_BEYOND_VDL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IncompatibleServiceSidType\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INCOMPATIBLE_SERVICE_SID_TYPE']/*\"/>\t\n            <unmanaged>ERROR_INCOMPATIBLE_SERVICE_SID_TYPE</unmanaged>\t\n            <unmanaged-short>ERROR_INCOMPATIBLE_SERVICE_SID_TYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DriverProcessTerminated\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DRIVER_PROCESS_TERMINATED']/*\"/>\t\n            <unmanaged>ERROR_DRIVER_PROCESS_TERMINATED</unmanaged>\t\n            <unmanaged-short>ERROR_DRIVER_PROCESS_TERMINATED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ImplementationLimit\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IMPLEMENTATION_LIMIT']/*\"/>\t\n            <unmanaged>ERROR_IMPLEMENTATION_LIMIT</unmanaged>\t\n            <unmanaged-short>ERROR_IMPLEMENTATION_LIMIT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ProcessIsProtected\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_PROCESS_IS_PROTECTED']/*\"/>\t\n            <unmanaged>ERROR_PROCESS_IS_PROTECTED</unmanaged>\t\n            <unmanaged-short>ERROR_PROCESS_IS_PROTECTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ServiceNotifyClientLagging\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SERVICE_NOTIFY_CLIENT_LAGGING']/*\"/>\t\n            <unmanaged>ERROR_SERVICE_NOTIFY_CLIENT_LAGGING</unmanaged>\t\n            <unmanaged-short>ERROR_SERVICE_NOTIFY_CLIENT_LAGGING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DiskQuotaExceeded\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DISK_QUOTA_EXCEEDED']/*\"/>\t\n            <unmanaged>ERROR_DISK_QUOTA_EXCEEDED</unmanaged>\t\n            <unmanaged-short>ERROR_DISK_QUOTA_EXCEEDED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ContentBlocked\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CONTENT_BLOCKED']/*\"/>\t\n            <unmanaged>ERROR_CONTENT_BLOCKED</unmanaged>\t\n            <unmanaged-short>ERROR_CONTENT_BLOCKED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IncompatibleServicePrivilege\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INCOMPATIBLE_SERVICE_PRIVILEGE']/*\"/>\t\n            <unmanaged>ERROR_INCOMPATIBLE_SERVICE_PRIVILEGE</unmanaged>\t\n            <unmanaged-short>ERROR_INCOMPATIBLE_SERVICE_PRIVILEGE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.AppHang\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_APP_HANG']/*\"/>\t\n            <unmanaged>ERROR_APP_HANG</unmanaged>\t\n            <unmanaged-short>ERROR_APP_HANG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidLabel\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_LABEL']/*\"/>\t\n            <unmanaged>ERROR_INVALID_LABEL</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_LABEL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NotAllAssigned\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NOT_ALL_ASSIGNED']/*\"/>\t\n            <unmanaged>ERROR_NOT_ALL_ASSIGNED</unmanaged>\t\n            <unmanaged-short>ERROR_NOT_ALL_ASSIGNED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SomeNotMapped\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SOME_NOT_MAPPED']/*\"/>\t\n            <unmanaged>ERROR_SOME_NOT_MAPPED</unmanaged>\t\n            <unmanaged-short>ERROR_SOME_NOT_MAPPED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NoQuotasForAccount\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NO_QUOTAS_FOR_ACCOUNT']/*\"/>\t\n            <unmanaged>ERROR_NO_QUOTAS_FOR_ACCOUNT</unmanaged>\t\n            <unmanaged-short>ERROR_NO_QUOTAS_FOR_ACCOUNT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.LocalUserSessionKey\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_LOCAL_USER_SESSION_KEY']/*\"/>\t\n            <unmanaged>ERROR_LOCAL_USER_SESSION_KEY</unmanaged>\t\n            <unmanaged-short>ERROR_LOCAL_USER_SESSION_KEY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NullLmPassword\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NULL_LM_PASSWORD']/*\"/>\t\n            <unmanaged>ERROR_NULL_LM_PASSWORD</unmanaged>\t\n            <unmanaged-short>ERROR_NULL_LM_PASSWORD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.UnknownRevision\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_UNKNOWN_REVISION']/*\"/>\t\n            <unmanaged>ERROR_UNKNOWN_REVISION</unmanaged>\t\n            <unmanaged-short>ERROR_UNKNOWN_REVISION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.RevisionMismatch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_REVISION_MISMATCH']/*\"/>\t\n            <unmanaged>ERROR_REVISION_MISMATCH</unmanaged>\t\n            <unmanaged-short>ERROR_REVISION_MISMATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidOwner\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_OWNER']/*\"/>\t\n            <unmanaged>ERROR_INVALID_OWNER</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_OWNER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidPrimaryGroup\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_PRIMARY_GROUP']/*\"/>\t\n            <unmanaged>ERROR_INVALID_PRIMARY_GROUP</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_PRIMARY_GROUP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NoImpersonationToken\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NO_IMPERSONATION_TOKEN']/*\"/>\t\n            <unmanaged>ERROR_NO_IMPERSONATION_TOKEN</unmanaged>\t\n            <unmanaged-short>ERROR_NO_IMPERSONATION_TOKEN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CantDisableMandatory\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CANT_DISABLE_MANDATORY']/*\"/>\t\n            <unmanaged>ERROR_CANT_DISABLE_MANDATORY</unmanaged>\t\n            <unmanaged-short>ERROR_CANT_DISABLE_MANDATORY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NoLogonServers\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NO_LOGON_SERVERS']/*\"/>\t\n            <unmanaged>ERROR_NO_LOGON_SERVERS</unmanaged>\t\n            <unmanaged-short>ERROR_NO_LOGON_SERVERS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NoSuchLogonSession\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NO_SUCH_LOGON_SESSION']/*\"/>\t\n            <unmanaged>ERROR_NO_SUCH_LOGON_SESSION</unmanaged>\t\n            <unmanaged-short>ERROR_NO_SUCH_LOGON_SESSION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NoSuchPrivilege\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NO_SUCH_PRIVILEGE']/*\"/>\t\n            <unmanaged>ERROR_NO_SUCH_PRIVILEGE</unmanaged>\t\n            <unmanaged-short>ERROR_NO_SUCH_PRIVILEGE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.PrivilegeNotHeld\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_PRIVILEGE_NOT_HELD']/*\"/>\t\n            <unmanaged>ERROR_PRIVILEGE_NOT_HELD</unmanaged>\t\n            <unmanaged-short>ERROR_PRIVILEGE_NOT_HELD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidAccountName\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_ACCOUNT_NAME']/*\"/>\t\n            <unmanaged>ERROR_INVALID_ACCOUNT_NAME</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_ACCOUNT_NAME</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.UserExists\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_USER_EXISTS']/*\"/>\t\n            <unmanaged>ERROR_USER_EXISTS</unmanaged>\t\n            <unmanaged-short>ERROR_USER_EXISTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NoSuchUser\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NO_SUCH_USER']/*\"/>\t\n            <unmanaged>ERROR_NO_SUCH_USER</unmanaged>\t\n            <unmanaged-short>ERROR_NO_SUCH_USER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GroupExists\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GROUP_EXISTS']/*\"/>\t\n            <unmanaged>ERROR_GROUP_EXISTS</unmanaged>\t\n            <unmanaged-short>ERROR_GROUP_EXISTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NoSuchGroup\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NO_SUCH_GROUP']/*\"/>\t\n            <unmanaged>ERROR_NO_SUCH_GROUP</unmanaged>\t\n            <unmanaged-short>ERROR_NO_SUCH_GROUP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.MemberInGroup\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_MEMBER_IN_GROUP']/*\"/>\t\n            <unmanaged>ERROR_MEMBER_IN_GROUP</unmanaged>\t\n            <unmanaged-short>ERROR_MEMBER_IN_GROUP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.MemberNotInGroup\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_MEMBER_NOT_IN_GROUP']/*\"/>\t\n            <unmanaged>ERROR_MEMBER_NOT_IN_GROUP</unmanaged>\t\n            <unmanaged-short>ERROR_MEMBER_NOT_IN_GROUP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.LastAdmin\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_LAST_ADMIN']/*\"/>\t\n            <unmanaged>ERROR_LAST_ADMIN</unmanaged>\t\n            <unmanaged-short>ERROR_LAST_ADMIN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.WrongPassword\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_WRONG_PASSWORD']/*\"/>\t\n            <unmanaged>ERROR_WRONG_PASSWORD</unmanaged>\t\n            <unmanaged-short>ERROR_WRONG_PASSWORD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IllFormedPassword\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_ILL_FORMED_PASSWORD']/*\"/>\t\n            <unmanaged>ERROR_ILL_FORMED_PASSWORD</unmanaged>\t\n            <unmanaged-short>ERROR_ILL_FORMED_PASSWORD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.PasswordRestriction\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_PASSWORD_RESTRICTION']/*\"/>\t\n            <unmanaged>ERROR_PASSWORD_RESTRICTION</unmanaged>\t\n            <unmanaged-short>ERROR_PASSWORD_RESTRICTION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.LogonFailure\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_LOGON_FAILURE']/*\"/>\t\n            <unmanaged>ERROR_LOGON_FAILURE</unmanaged>\t\n            <unmanaged-short>ERROR_LOGON_FAILURE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.AccountRestriction\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_ACCOUNT_RESTRICTION']/*\"/>\t\n            <unmanaged>ERROR_ACCOUNT_RESTRICTION</unmanaged>\t\n            <unmanaged-short>ERROR_ACCOUNT_RESTRICTION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidLogonHours\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_LOGON_HOURS']/*\"/>\t\n            <unmanaged>ERROR_INVALID_LOGON_HOURS</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_LOGON_HOURS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidWorkstation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_WORKSTATION']/*\"/>\t\n            <unmanaged>ERROR_INVALID_WORKSTATION</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_WORKSTATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.PasswordExpired\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_PASSWORD_EXPIRED']/*\"/>\t\n            <unmanaged>ERROR_PASSWORD_EXPIRED</unmanaged>\t\n            <unmanaged-short>ERROR_PASSWORD_EXPIRED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.AccountDisabled\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_ACCOUNT_DISABLED']/*\"/>\t\n            <unmanaged>ERROR_ACCOUNT_DISABLED</unmanaged>\t\n            <unmanaged-short>ERROR_ACCOUNT_DISABLED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NoneMapped\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NONE_MAPPED']/*\"/>\t\n            <unmanaged>ERROR_NONE_MAPPED</unmanaged>\t\n            <unmanaged-short>ERROR_NONE_MAPPED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.TooManyLuidsRequested\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_TOO_MANY_LUIDS_REQUESTED']/*\"/>\t\n            <unmanaged>ERROR_TOO_MANY_LUIDS_REQUESTED</unmanaged>\t\n            <unmanaged-short>ERROR_TOO_MANY_LUIDS_REQUESTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.LuidsExhausted\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_LUIDS_EXHAUSTED']/*\"/>\t\n            <unmanaged>ERROR_LUIDS_EXHAUSTED</unmanaged>\t\n            <unmanaged-short>ERROR_LUIDS_EXHAUSTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidSubAuthority\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_SUB_AUTHORITY']/*\"/>\t\n            <unmanaged>ERROR_INVALID_SUB_AUTHORITY</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_SUB_AUTHORITY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidAcl\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_ACL']/*\"/>\t\n            <unmanaged>ERROR_INVALID_ACL</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_ACL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidSid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_SID']/*\"/>\t\n            <unmanaged>ERROR_INVALID_SID</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_SID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidSecurityDescr\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_SECURITY_DESCR']/*\"/>\t\n            <unmanaged>ERROR_INVALID_SECURITY_DESCR</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_SECURITY_DESCR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.BadInheritanceAcl\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_BAD_INHERITANCE_ACL']/*\"/>\t\n            <unmanaged>ERROR_BAD_INHERITANCE_ACL</unmanaged>\t\n            <unmanaged-short>ERROR_BAD_INHERITANCE_ACL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ServerDisabled\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SERVER_DISABLED']/*\"/>\t\n            <unmanaged>ERROR_SERVER_DISABLED</unmanaged>\t\n            <unmanaged-short>ERROR_SERVER_DISABLED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ServerNotDisabled\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SERVER_NOT_DISABLED']/*\"/>\t\n            <unmanaged>ERROR_SERVER_NOT_DISABLED</unmanaged>\t\n            <unmanaged-short>ERROR_SERVER_NOT_DISABLED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidIdAuthority\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_ID_AUTHORITY']/*\"/>\t\n            <unmanaged>ERROR_INVALID_ID_AUTHORITY</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_ID_AUTHORITY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.AllottedSpaceExceeded\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_ALLOTTED_SPACE_EXCEEDED']/*\"/>\t\n            <unmanaged>ERROR_ALLOTTED_SPACE_EXCEEDED</unmanaged>\t\n            <unmanaged-short>ERROR_ALLOTTED_SPACE_EXCEEDED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidGroupAttributes\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_GROUP_ATTRIBUTES']/*\"/>\t\n            <unmanaged>ERROR_INVALID_GROUP_ATTRIBUTES</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_GROUP_ATTRIBUTES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.BadImpersonationLevel\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_BAD_IMPERSONATION_LEVEL']/*\"/>\t\n            <unmanaged>ERROR_BAD_IMPERSONATION_LEVEL</unmanaged>\t\n            <unmanaged-short>ERROR_BAD_IMPERSONATION_LEVEL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CantOpenAnonymous\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CANT_OPEN_ANONYMOUS']/*\"/>\t\n            <unmanaged>ERROR_CANT_OPEN_ANONYMOUS</unmanaged>\t\n            <unmanaged-short>ERROR_CANT_OPEN_ANONYMOUS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.BadValidationClass\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_BAD_VALIDATION_CLASS']/*\"/>\t\n            <unmanaged>ERROR_BAD_VALIDATION_CLASS</unmanaged>\t\n            <unmanaged-short>ERROR_BAD_VALIDATION_CLASS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.BadTokenType\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_BAD_TOKEN_TYPE']/*\"/>\t\n            <unmanaged>ERROR_BAD_TOKEN_TYPE</unmanaged>\t\n            <unmanaged-short>ERROR_BAD_TOKEN_TYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NoSecurityOnObject\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NO_SECURITY_ON_OBJECT']/*\"/>\t\n            <unmanaged>ERROR_NO_SECURITY_ON_OBJECT</unmanaged>\t\n            <unmanaged-short>ERROR_NO_SECURITY_ON_OBJECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CantAccessDomainInfo\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CANT_ACCESS_DOMAIN_INFO']/*\"/>\t\n            <unmanaged>ERROR_CANT_ACCESS_DOMAIN_INFO</unmanaged>\t\n            <unmanaged-short>ERROR_CANT_ACCESS_DOMAIN_INFO</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidServerState\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_SERVER_STATE']/*\"/>\t\n            <unmanaged>ERROR_INVALID_SERVER_STATE</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_SERVER_STATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidDomainState\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_DOMAIN_STATE']/*\"/>\t\n            <unmanaged>ERROR_INVALID_DOMAIN_STATE</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_DOMAIN_STATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidDomainRole\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_DOMAIN_ROLE']/*\"/>\t\n            <unmanaged>ERROR_INVALID_DOMAIN_ROLE</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_DOMAIN_ROLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NoSuchDomain\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NO_SUCH_DOMAIN']/*\"/>\t\n            <unmanaged>ERROR_NO_SUCH_DOMAIN</unmanaged>\t\n            <unmanaged-short>ERROR_NO_SUCH_DOMAIN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DomainExists\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DOMAIN_EXISTS']/*\"/>\t\n            <unmanaged>ERROR_DOMAIN_EXISTS</unmanaged>\t\n            <unmanaged-short>ERROR_DOMAIN_EXISTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DomainLimitExceeded\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DOMAIN_LIMIT_EXCEEDED']/*\"/>\t\n            <unmanaged>ERROR_DOMAIN_LIMIT_EXCEEDED</unmanaged>\t\n            <unmanaged-short>ERROR_DOMAIN_LIMIT_EXCEEDED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InternalDbCorruption\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INTERNAL_DB_CORRUPTION']/*\"/>\t\n            <unmanaged>ERROR_INTERNAL_DB_CORRUPTION</unmanaged>\t\n            <unmanaged-short>ERROR_INTERNAL_DB_CORRUPTION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InternalError\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INTERNAL_ERROR']/*\"/>\t\n            <unmanaged>ERROR_INTERNAL_ERROR</unmanaged>\t\n            <unmanaged-short>ERROR_INTERNAL_ERROR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GenericNotMapped\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GENERIC_NOT_MAPPED']/*\"/>\t\n            <unmanaged>ERROR_GENERIC_NOT_MAPPED</unmanaged>\t\n            <unmanaged-short>ERROR_GENERIC_NOT_MAPPED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.BadDescriptorFormat\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_BAD_DESCRIPTOR_FORMAT']/*\"/>\t\n            <unmanaged>ERROR_BAD_DESCRIPTOR_FORMAT</unmanaged>\t\n            <unmanaged-short>ERROR_BAD_DESCRIPTOR_FORMAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NotLogonProcess\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NOT_LOGON_PROCESS']/*\"/>\t\n            <unmanaged>ERROR_NOT_LOGON_PROCESS</unmanaged>\t\n            <unmanaged-short>ERROR_NOT_LOGON_PROCESS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.LogonSessionExists\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_LOGON_SESSION_EXISTS']/*\"/>\t\n            <unmanaged>ERROR_LOGON_SESSION_EXISTS</unmanaged>\t\n            <unmanaged-short>ERROR_LOGON_SESSION_EXISTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NoSuchPackage\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NO_SUCH_PACKAGE']/*\"/>\t\n            <unmanaged>ERROR_NO_SUCH_PACKAGE</unmanaged>\t\n            <unmanaged-short>ERROR_NO_SUCH_PACKAGE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.BadLogonSessionState\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_BAD_LOGON_SESSION_STATE']/*\"/>\t\n            <unmanaged>ERROR_BAD_LOGON_SESSION_STATE</unmanaged>\t\n            <unmanaged-short>ERROR_BAD_LOGON_SESSION_STATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.LogonSessionCollision\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_LOGON_SESSION_COLLISION']/*\"/>\t\n            <unmanaged>ERROR_LOGON_SESSION_COLLISION</unmanaged>\t\n            <unmanaged-short>ERROR_LOGON_SESSION_COLLISION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidLogonType\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_LOGON_TYPE']/*\"/>\t\n            <unmanaged>ERROR_INVALID_LOGON_TYPE</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_LOGON_TYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CannotImpersonate\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CANNOT_IMPERSONATE']/*\"/>\t\n            <unmanaged>ERROR_CANNOT_IMPERSONATE</unmanaged>\t\n            <unmanaged-short>ERROR_CANNOT_IMPERSONATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.RxactInvalidState\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_RXACT_INVALID_STATE']/*\"/>\t\n            <unmanaged>ERROR_RXACT_INVALID_STATE</unmanaged>\t\n            <unmanaged-short>ERROR_RXACT_INVALID_STATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.RxactCommitFailure\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_RXACT_COMMIT_FAILURE']/*\"/>\t\n            <unmanaged>ERROR_RXACT_COMMIT_FAILURE</unmanaged>\t\n            <unmanaged-short>ERROR_RXACT_COMMIT_FAILURE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SpecialAccount\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SPECIAL_ACCOUNT']/*\"/>\t\n            <unmanaged>ERROR_SPECIAL_ACCOUNT</unmanaged>\t\n            <unmanaged-short>ERROR_SPECIAL_ACCOUNT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SpecialGroup\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SPECIAL_GROUP']/*\"/>\t\n            <unmanaged>ERROR_SPECIAL_GROUP</unmanaged>\t\n            <unmanaged-short>ERROR_SPECIAL_GROUP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SpecialUser\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SPECIAL_USER']/*\"/>\t\n            <unmanaged>ERROR_SPECIAL_USER</unmanaged>\t\n            <unmanaged-short>ERROR_SPECIAL_USER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.MembersPrimaryGroup\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_MEMBERS_PRIMARY_GROUP']/*\"/>\t\n            <unmanaged>ERROR_MEMBERS_PRIMARY_GROUP</unmanaged>\t\n            <unmanaged-short>ERROR_MEMBERS_PRIMARY_GROUP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.TokenAlreadyInUse\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_TOKEN_ALREADY_IN_USE']/*\"/>\t\n            <unmanaged>ERROR_TOKEN_ALREADY_IN_USE</unmanaged>\t\n            <unmanaged-short>ERROR_TOKEN_ALREADY_IN_USE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NoSuchAlias\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NO_SUCH_ALIAS']/*\"/>\t\n            <unmanaged>ERROR_NO_SUCH_ALIAS</unmanaged>\t\n            <unmanaged-short>ERROR_NO_SUCH_ALIAS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.MemberNotInAlias\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_MEMBER_NOT_IN_ALIAS']/*\"/>\t\n            <unmanaged>ERROR_MEMBER_NOT_IN_ALIAS</unmanaged>\t\n            <unmanaged-short>ERROR_MEMBER_NOT_IN_ALIAS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.MemberInAlias\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_MEMBER_IN_ALIAS']/*\"/>\t\n            <unmanaged>ERROR_MEMBER_IN_ALIAS</unmanaged>\t\n            <unmanaged-short>ERROR_MEMBER_IN_ALIAS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.AliasExists\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_ALIAS_EXISTS']/*\"/>\t\n            <unmanaged>ERROR_ALIAS_EXISTS</unmanaged>\t\n            <unmanaged-short>ERROR_ALIAS_EXISTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.LogonNotGranted\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_LOGON_NOT_GRANTED']/*\"/>\t\n            <unmanaged>ERROR_LOGON_NOT_GRANTED</unmanaged>\t\n            <unmanaged-short>ERROR_LOGON_NOT_GRANTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.TooManySecrets\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_TOO_MANY_SECRETS']/*\"/>\t\n            <unmanaged>ERROR_TOO_MANY_SECRETS</unmanaged>\t\n            <unmanaged-short>ERROR_TOO_MANY_SECRETS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SecretTooLong\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SECRET_TOO_LONG']/*\"/>\t\n            <unmanaged>ERROR_SECRET_TOO_LONG</unmanaged>\t\n            <unmanaged-short>ERROR_SECRET_TOO_LONG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InternalDbError\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INTERNAL_DB_ERROR']/*\"/>\t\n            <unmanaged>ERROR_INTERNAL_DB_ERROR</unmanaged>\t\n            <unmanaged-short>ERROR_INTERNAL_DB_ERROR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.TooManyContextIds\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_TOO_MANY_CONTEXT_IDS']/*\"/>\t\n            <unmanaged>ERROR_TOO_MANY_CONTEXT_IDS</unmanaged>\t\n            <unmanaged-short>ERROR_TOO_MANY_CONTEXT_IDS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.LogonTypeNotGranted\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_LOGON_TYPE_NOT_GRANTED']/*\"/>\t\n            <unmanaged>ERROR_LOGON_TYPE_NOT_GRANTED</unmanaged>\t\n            <unmanaged-short>ERROR_LOGON_TYPE_NOT_GRANTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NtCrossEncryptionRequired\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NT_CROSS_ENCRYPTION_REQUIRED']/*\"/>\t\n            <unmanaged>ERROR_NT_CROSS_ENCRYPTION_REQUIRED</unmanaged>\t\n            <unmanaged-short>ERROR_NT_CROSS_ENCRYPTION_REQUIRED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NoSuchMember\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NO_SUCH_MEMBER']/*\"/>\t\n            <unmanaged>ERROR_NO_SUCH_MEMBER</unmanaged>\t\n            <unmanaged-short>ERROR_NO_SUCH_MEMBER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidMember\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_MEMBER']/*\"/>\t\n            <unmanaged>ERROR_INVALID_MEMBER</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_MEMBER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.TooManySids\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_TOO_MANY_SIDS']/*\"/>\t\n            <unmanaged>ERROR_TOO_MANY_SIDS</unmanaged>\t\n            <unmanaged-short>ERROR_TOO_MANY_SIDS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.LmCrossEncryptionRequired\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_LM_CROSS_ENCRYPTION_REQUIRED']/*\"/>\t\n            <unmanaged>ERROR_LM_CROSS_ENCRYPTION_REQUIRED</unmanaged>\t\n            <unmanaged-short>ERROR_LM_CROSS_ENCRYPTION_REQUIRED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NoInheritance\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NO_INHERITANCE']/*\"/>\t\n            <unmanaged>ERROR_NO_INHERITANCE</unmanaged>\t\n            <unmanaged-short>ERROR_NO_INHERITANCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.FileCorrupt\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_FILE_CORRUPT']/*\"/>\t\n            <unmanaged>ERROR_FILE_CORRUPT</unmanaged>\t\n            <unmanaged-short>ERROR_FILE_CORRUPT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DiskCorrupt\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DISK_CORRUPT']/*\"/>\t\n            <unmanaged>ERROR_DISK_CORRUPT</unmanaged>\t\n            <unmanaged-short>ERROR_DISK_CORRUPT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NoUserSessionKey\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NO_USER_SESSION_KEY']/*\"/>\t\n            <unmanaged>ERROR_NO_USER_SESSION_KEY</unmanaged>\t\n            <unmanaged-short>ERROR_NO_USER_SESSION_KEY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.LicenseQuotaExceeded\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_LICENSE_QUOTA_EXCEEDED']/*\"/>\t\n            <unmanaged>ERROR_LICENSE_QUOTA_EXCEEDED</unmanaged>\t\n            <unmanaged-short>ERROR_LICENSE_QUOTA_EXCEEDED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.WrongTargetName\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_WRONG_TARGET_NAME']/*\"/>\t\n            <unmanaged>ERROR_WRONG_TARGET_NAME</unmanaged>\t\n            <unmanaged-short>ERROR_WRONG_TARGET_NAME</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.MutualAuthFailed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_MUTUAL_AUTH_FAILED']/*\"/>\t\n            <unmanaged>ERROR_MUTUAL_AUTH_FAILED</unmanaged>\t\n            <unmanaged-short>ERROR_MUTUAL_AUTH_FAILED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.TimeSkew\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_TIME_SKEW']/*\"/>\t\n            <unmanaged>ERROR_TIME_SKEW</unmanaged>\t\n            <unmanaged-short>ERROR_TIME_SKEW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CurrentDomainNotAllowed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CURRENT_DOMAIN_NOT_ALLOWED']/*\"/>\t\n            <unmanaged>ERROR_CURRENT_DOMAIN_NOT_ALLOWED</unmanaged>\t\n            <unmanaged-short>ERROR_CURRENT_DOMAIN_NOT_ALLOWED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidWindowHandle\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_WINDOW_HANDLE']/*\"/>\t\n            <unmanaged>ERROR_INVALID_WINDOW_HANDLE</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_WINDOW_HANDLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidMenuHandle\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_MENU_HANDLE']/*\"/>\t\n            <unmanaged>ERROR_INVALID_MENU_HANDLE</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_MENU_HANDLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidCursorHandle\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_CURSOR_HANDLE']/*\"/>\t\n            <unmanaged>ERROR_INVALID_CURSOR_HANDLE</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_CURSOR_HANDLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidAccelHandle\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_ACCEL_HANDLE']/*\"/>\t\n            <unmanaged>ERROR_INVALID_ACCEL_HANDLE</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_ACCEL_HANDLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidHookHandle\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_HOOK_HANDLE']/*\"/>\t\n            <unmanaged>ERROR_INVALID_HOOK_HANDLE</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_HOOK_HANDLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidDwpHandle\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_DWP_HANDLE']/*\"/>\t\n            <unmanaged>ERROR_INVALID_DWP_HANDLE</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_DWP_HANDLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.TlwWithWschild\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_TLW_WITH_WSCHILD']/*\"/>\t\n            <unmanaged>ERROR_TLW_WITH_WSCHILD</unmanaged>\t\n            <unmanaged-short>ERROR_TLW_WITH_WSCHILD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CannotFindWndClass\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CANNOT_FIND_WND_CLASS']/*\"/>\t\n            <unmanaged>ERROR_CANNOT_FIND_WND_CLASS</unmanaged>\t\n            <unmanaged-short>ERROR_CANNOT_FIND_WND_CLASS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.WindowOfOtherThread\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_WINDOW_OF_OTHER_THREAD']/*\"/>\t\n            <unmanaged>ERROR_WINDOW_OF_OTHER_THREAD</unmanaged>\t\n            <unmanaged-short>ERROR_WINDOW_OF_OTHER_THREAD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.HotkeyAlreadyRegistered\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_HOTKEY_ALREADY_REGISTERED']/*\"/>\t\n            <unmanaged>ERROR_HOTKEY_ALREADY_REGISTERED</unmanaged>\t\n            <unmanaged-short>ERROR_HOTKEY_ALREADY_REGISTERED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClassAlreadyExists\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLASS_ALREADY_EXISTS']/*\"/>\t\n            <unmanaged>ERROR_CLASS_ALREADY_EXISTS</unmanaged>\t\n            <unmanaged-short>ERROR_CLASS_ALREADY_EXISTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClassDoesNotExist\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLASS_DOES_NOT_EXIST']/*\"/>\t\n            <unmanaged>ERROR_CLASS_DOES_NOT_EXIST</unmanaged>\t\n            <unmanaged-short>ERROR_CLASS_DOES_NOT_EXIST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClassHasWindows\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLASS_HAS_WINDOWS']/*\"/>\t\n            <unmanaged>ERROR_CLASS_HAS_WINDOWS</unmanaged>\t\n            <unmanaged-short>ERROR_CLASS_HAS_WINDOWS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidIndex\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_INDEX']/*\"/>\t\n            <unmanaged>ERROR_INVALID_INDEX</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_INDEX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidIconHandle\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_ICON_HANDLE']/*\"/>\t\n            <unmanaged>ERROR_INVALID_ICON_HANDLE</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_ICON_HANDLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.PrivateDialogIndex\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_PRIVATE_DIALOG_INDEX']/*\"/>\t\n            <unmanaged>ERROR_PRIVATE_DIALOG_INDEX</unmanaged>\t\n            <unmanaged-short>ERROR_PRIVATE_DIALOG_INDEX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ListboxIdNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_LISTBOX_ID_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_LISTBOX_ID_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_LISTBOX_ID_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NoWildcardCharacters\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NO_WILDCARD_CHARACTERS']/*\"/>\t\n            <unmanaged>ERROR_NO_WILDCARD_CHARACTERS</unmanaged>\t\n            <unmanaged-short>ERROR_NO_WILDCARD_CHARACTERS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClipboardNotOpen\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLIPBOARD_NOT_OPEN']/*\"/>\t\n            <unmanaged>ERROR_CLIPBOARD_NOT_OPEN</unmanaged>\t\n            <unmanaged-short>ERROR_CLIPBOARD_NOT_OPEN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.HotkeyNotRegistered\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_HOTKEY_NOT_REGISTERED']/*\"/>\t\n            <unmanaged>ERROR_HOTKEY_NOT_REGISTERED</unmanaged>\t\n            <unmanaged-short>ERROR_HOTKEY_NOT_REGISTERED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.WindowNotDialog\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_WINDOW_NOT_DIALOG']/*\"/>\t\n            <unmanaged>ERROR_WINDOW_NOT_DIALOG</unmanaged>\t\n            <unmanaged-short>ERROR_WINDOW_NOT_DIALOG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ControlIdNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CONTROL_ID_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_CONTROL_ID_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_CONTROL_ID_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidComboboxMessage\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_COMBOBOX_MESSAGE']/*\"/>\t\n            <unmanaged>ERROR_INVALID_COMBOBOX_MESSAGE</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_COMBOBOX_MESSAGE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.WindowNotCombobox\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_WINDOW_NOT_COMBOBOX']/*\"/>\t\n            <unmanaged>ERROR_WINDOW_NOT_COMBOBOX</unmanaged>\t\n            <unmanaged-short>ERROR_WINDOW_NOT_COMBOBOX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidEditHeight\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_EDIT_HEIGHT']/*\"/>\t\n            <unmanaged>ERROR_INVALID_EDIT_HEIGHT</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_EDIT_HEIGHT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DcNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DC_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_DC_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_DC_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidHookFilter\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_HOOK_FILTER']/*\"/>\t\n            <unmanaged>ERROR_INVALID_HOOK_FILTER</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_HOOK_FILTER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidFilterProc\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_FILTER_PROC']/*\"/>\t\n            <unmanaged>ERROR_INVALID_FILTER_PROC</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_FILTER_PROC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.HookNeedsHmod\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_HOOK_NEEDS_HMOD']/*\"/>\t\n            <unmanaged>ERROR_HOOK_NEEDS_HMOD</unmanaged>\t\n            <unmanaged-short>ERROR_HOOK_NEEDS_HMOD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GlobalOnlyHook\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GLOBAL_ONLY_HOOK']/*\"/>\t\n            <unmanaged>ERROR_GLOBAL_ONLY_HOOK</unmanaged>\t\n            <unmanaged-short>ERROR_GLOBAL_ONLY_HOOK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.JournalHookSet\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_JOURNAL_HOOK_SET']/*\"/>\t\n            <unmanaged>ERROR_JOURNAL_HOOK_SET</unmanaged>\t\n            <unmanaged-short>ERROR_JOURNAL_HOOK_SET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.HookNotInstalled\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_HOOK_NOT_INSTALLED']/*\"/>\t\n            <unmanaged>ERROR_HOOK_NOT_INSTALLED</unmanaged>\t\n            <unmanaged-short>ERROR_HOOK_NOT_INSTALLED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidLbMessage\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_LB_MESSAGE']/*\"/>\t\n            <unmanaged>ERROR_INVALID_LB_MESSAGE</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_LB_MESSAGE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SetcountOnBadLb\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SETCOUNT_ON_BAD_LB']/*\"/>\t\n            <unmanaged>ERROR_SETCOUNT_ON_BAD_LB</unmanaged>\t\n            <unmanaged-short>ERROR_SETCOUNT_ON_BAD_LB</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.LbWithoutTabstops\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_LB_WITHOUT_TABSTOPS']/*\"/>\t\n            <unmanaged>ERROR_LB_WITHOUT_TABSTOPS</unmanaged>\t\n            <unmanaged-short>ERROR_LB_WITHOUT_TABSTOPS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DestroyObjectOfOtherThread\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DESTROY_OBJECT_OF_OTHER_THREAD']/*\"/>\t\n            <unmanaged>ERROR_DESTROY_OBJECT_OF_OTHER_THREAD</unmanaged>\t\n            <unmanaged-short>ERROR_DESTROY_OBJECT_OF_OTHER_THREAD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ChildWindowMenu\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CHILD_WINDOW_MENU']/*\"/>\t\n            <unmanaged>ERROR_CHILD_WINDOW_MENU</unmanaged>\t\n            <unmanaged-short>ERROR_CHILD_WINDOW_MENU</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NoSystemMenu\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NO_SYSTEM_MENU']/*\"/>\t\n            <unmanaged>ERROR_NO_SYSTEM_MENU</unmanaged>\t\n            <unmanaged-short>ERROR_NO_SYSTEM_MENU</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidMsgboxStyle\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_MSGBOX_STYLE']/*\"/>\t\n            <unmanaged>ERROR_INVALID_MSGBOX_STYLE</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_MSGBOX_STYLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidSpiValue\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_SPI_VALUE']/*\"/>\t\n            <unmanaged>ERROR_INVALID_SPI_VALUE</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_SPI_VALUE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ScreenAlreadyLocked\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SCREEN_ALREADY_LOCKED']/*\"/>\t\n            <unmanaged>ERROR_SCREEN_ALREADY_LOCKED</unmanaged>\t\n            <unmanaged-short>ERROR_SCREEN_ALREADY_LOCKED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.HwndsHaveDiffParent\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_HWNDS_HAVE_DIFF_PARENT']/*\"/>\t\n            <unmanaged>ERROR_HWNDS_HAVE_DIFF_PARENT</unmanaged>\t\n            <unmanaged-short>ERROR_HWNDS_HAVE_DIFF_PARENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NotChildWindow\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NOT_CHILD_WINDOW']/*\"/>\t\n            <unmanaged>ERROR_NOT_CHILD_WINDOW</unmanaged>\t\n            <unmanaged-short>ERROR_NOT_CHILD_WINDOW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidGwCommand\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_GW_COMMAND']/*\"/>\t\n            <unmanaged>ERROR_INVALID_GW_COMMAND</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_GW_COMMAND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidThreadId\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_THREAD_ID']/*\"/>\t\n            <unmanaged>ERROR_INVALID_THREAD_ID</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_THREAD_ID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NonMdichildWindow\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NON_MDICHILD_WINDOW']/*\"/>\t\n            <unmanaged>ERROR_NON_MDICHILD_WINDOW</unmanaged>\t\n            <unmanaged-short>ERROR_NON_MDICHILD_WINDOW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.PopupAlreadyActive\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_POPUP_ALREADY_ACTIVE']/*\"/>\t\n            <unmanaged>ERROR_POPUP_ALREADY_ACTIVE</unmanaged>\t\n            <unmanaged-short>ERROR_POPUP_ALREADY_ACTIVE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NoScrollbars\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NO_SCROLLBARS']/*\"/>\t\n            <unmanaged>ERROR_NO_SCROLLBARS</unmanaged>\t\n            <unmanaged-short>ERROR_NO_SCROLLBARS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidScrollbarRange\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_SCROLLBAR_RANGE']/*\"/>\t\n            <unmanaged>ERROR_INVALID_SCROLLBAR_RANGE</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_SCROLLBAR_RANGE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidShowwinCommand\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_SHOWWIN_COMMAND']/*\"/>\t\n            <unmanaged>ERROR_INVALID_SHOWWIN_COMMAND</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_SHOWWIN_COMMAND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NoSystemResources\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NO_SYSTEM_RESOURCES']/*\"/>\t\n            <unmanaged>ERROR_NO_SYSTEM_RESOURCES</unmanaged>\t\n            <unmanaged-short>ERROR_NO_SYSTEM_RESOURCES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NonpagedSystemResources\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NONPAGED_SYSTEM_RESOURCES']/*\"/>\t\n            <unmanaged>ERROR_NONPAGED_SYSTEM_RESOURCES</unmanaged>\t\n            <unmanaged-short>ERROR_NONPAGED_SYSTEM_RESOURCES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.PagedSystemResources\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_PAGED_SYSTEM_RESOURCES']/*\"/>\t\n            <unmanaged>ERROR_PAGED_SYSTEM_RESOURCES</unmanaged>\t\n            <unmanaged-short>ERROR_PAGED_SYSTEM_RESOURCES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.WorkingSetQuota\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_WORKING_SET_QUOTA']/*\"/>\t\n            <unmanaged>ERROR_WORKING_SET_QUOTA</unmanaged>\t\n            <unmanaged-short>ERROR_WORKING_SET_QUOTA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.PagefileQuota\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_PAGEFILE_QUOTA']/*\"/>\t\n            <unmanaged>ERROR_PAGEFILE_QUOTA</unmanaged>\t\n            <unmanaged-short>ERROR_PAGEFILE_QUOTA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CommitmentLimit\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_COMMITMENT_LIMIT']/*\"/>\t\n            <unmanaged>ERROR_COMMITMENT_LIMIT</unmanaged>\t\n            <unmanaged-short>ERROR_COMMITMENT_LIMIT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.MenuItemNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_MENU_ITEM_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_MENU_ITEM_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_MENU_ITEM_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidKeyboardHandle\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_KEYBOARD_HANDLE']/*\"/>\t\n            <unmanaged>ERROR_INVALID_KEYBOARD_HANDLE</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_KEYBOARD_HANDLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.HookTypeNotAllowed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_HOOK_TYPE_NOT_ALLOWED']/*\"/>\t\n            <unmanaged>ERROR_HOOK_TYPE_NOT_ALLOWED</unmanaged>\t\n            <unmanaged-short>ERROR_HOOK_TYPE_NOT_ALLOWED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.RequiresInteractiveWindowstation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_REQUIRES_INTERACTIVE_WINDOWSTATION']/*\"/>\t\n            <unmanaged>ERROR_REQUIRES_INTERACTIVE_WINDOWSTATION</unmanaged>\t\n            <unmanaged-short>ERROR_REQUIRES_INTERACTIVE_WINDOWSTATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.Timeout\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_TIMEOUT']/*\"/>\t\n            <unmanaged>ERROR_TIMEOUT</unmanaged>\t\n            <unmanaged-short>ERROR_TIMEOUT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidMonitorHandle\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_MONITOR_HANDLE']/*\"/>\t\n            <unmanaged>ERROR_INVALID_MONITOR_HANDLE</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_MONITOR_HANDLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IncorrectSize\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INCORRECT_SIZE']/*\"/>\t\n            <unmanaged>ERROR_INCORRECT_SIZE</unmanaged>\t\n            <unmanaged-short>ERROR_INCORRECT_SIZE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SymlinkClassDisabled\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SYMLINK_CLASS_DISABLED']/*\"/>\t\n            <unmanaged>ERROR_SYMLINK_CLASS_DISABLED</unmanaged>\t\n            <unmanaged-short>ERROR_SYMLINK_CLASS_DISABLED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SymlinkNotSupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SYMLINK_NOT_SUPPORTED']/*\"/>\t\n            <unmanaged>ERROR_SYMLINK_NOT_SUPPORTED</unmanaged>\t\n            <unmanaged-short>ERROR_SYMLINK_NOT_SUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.XmlParseError\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_XML_PARSE_ERROR']/*\"/>\t\n            <unmanaged>ERROR_XML_PARSE_ERROR</unmanaged>\t\n            <unmanaged-short>ERROR_XML_PARSE_ERROR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.XmldsigError\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_XMLDSIG_ERROR']/*\"/>\t\n            <unmanaged>ERROR_XMLDSIG_ERROR</unmanaged>\t\n            <unmanaged-short>ERROR_XMLDSIG_ERROR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.RestartApplication\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_RESTART_APPLICATION']/*\"/>\t\n            <unmanaged>ERROR_RESTART_APPLICATION</unmanaged>\t\n            <unmanaged-short>ERROR_RESTART_APPLICATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.WrongCompartment\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_WRONG_COMPARTMENT']/*\"/>\t\n            <unmanaged>ERROR_WRONG_COMPARTMENT</unmanaged>\t\n            <unmanaged-short>ERROR_WRONG_COMPARTMENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.AuthipFailure\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_AUTHIP_FAILURE']/*\"/>\t\n            <unmanaged>ERROR_AUTHIP_FAILURE</unmanaged>\t\n            <unmanaged-short>ERROR_AUTHIP_FAILURE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NoNvramResources\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NO_NVRAM_RESOURCES']/*\"/>\t\n            <unmanaged>ERROR_NO_NVRAM_RESOURCES</unmanaged>\t\n            <unmanaged-short>ERROR_NO_NVRAM_RESOURCES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.EventlogFileCorrupt\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_EVENTLOG_FILE_CORRUPT']/*\"/>\t\n            <unmanaged>ERROR_EVENTLOG_FILE_CORRUPT</unmanaged>\t\n            <unmanaged-short>ERROR_EVENTLOG_FILE_CORRUPT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.EventlogCantStart\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_EVENTLOG_CANT_START']/*\"/>\t\n            <unmanaged>ERROR_EVENTLOG_CANT_START</unmanaged>\t\n            <unmanaged-short>ERROR_EVENTLOG_CANT_START</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.LogFileFull\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_LOG_FILE_FULL']/*\"/>\t\n            <unmanaged>ERROR_LOG_FILE_FULL</unmanaged>\t\n            <unmanaged-short>ERROR_LOG_FILE_FULL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.EventlogFileChanged\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_EVENTLOG_FILE_CHANGED']/*\"/>\t\n            <unmanaged>ERROR_EVENTLOG_FILE_CHANGED</unmanaged>\t\n            <unmanaged-short>ERROR_EVENTLOG_FILE_CHANGED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidTaskName\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_TASK_NAME']/*\"/>\t\n            <unmanaged>ERROR_INVALID_TASK_NAME</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_TASK_NAME</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidTaskIndex\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_TASK_INDEX']/*\"/>\t\n            <unmanaged>ERROR_INVALID_TASK_INDEX</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_TASK_INDEX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ThreadAlreadyInTask\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_THREAD_ALREADY_IN_TASK']/*\"/>\t\n            <unmanaged>ERROR_THREAD_ALREADY_IN_TASK</unmanaged>\t\n            <unmanaged-short>ERROR_THREAD_ALREADY_IN_TASK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InstallServiceFailure\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INSTALL_SERVICE_FAILURE']/*\"/>\t\n            <unmanaged>ERROR_INSTALL_SERVICE_FAILURE</unmanaged>\t\n            <unmanaged-short>ERROR_INSTALL_SERVICE_FAILURE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InstallUserexit\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INSTALL_USEREXIT']/*\"/>\t\n            <unmanaged>ERROR_INSTALL_USEREXIT</unmanaged>\t\n            <unmanaged-short>ERROR_INSTALL_USEREXIT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InstallFailure\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INSTALL_FAILURE']/*\"/>\t\n            <unmanaged>ERROR_INSTALL_FAILURE</unmanaged>\t\n            <unmanaged-short>ERROR_INSTALL_FAILURE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InstallSuspend\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INSTALL_SUSPEND']/*\"/>\t\n            <unmanaged>ERROR_INSTALL_SUSPEND</unmanaged>\t\n            <unmanaged-short>ERROR_INSTALL_SUSPEND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.UnknownProduct\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_UNKNOWN_PRODUCT']/*\"/>\t\n            <unmanaged>ERROR_UNKNOWN_PRODUCT</unmanaged>\t\n            <unmanaged-short>ERROR_UNKNOWN_PRODUCT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.UnknownFeature\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_UNKNOWN_FEATURE']/*\"/>\t\n            <unmanaged>ERROR_UNKNOWN_FEATURE</unmanaged>\t\n            <unmanaged-short>ERROR_UNKNOWN_FEATURE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.UnknownComponent\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_UNKNOWN_COMPONENT']/*\"/>\t\n            <unmanaged>ERROR_UNKNOWN_COMPONENT</unmanaged>\t\n            <unmanaged-short>ERROR_UNKNOWN_COMPONENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.UnknownProperty\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_UNKNOWN_PROPERTY']/*\"/>\t\n            <unmanaged>ERROR_UNKNOWN_PROPERTY</unmanaged>\t\n            <unmanaged-short>ERROR_UNKNOWN_PROPERTY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidHandleState\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_HANDLE_STATE']/*\"/>\t\n            <unmanaged>ERROR_INVALID_HANDLE_STATE</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_HANDLE_STATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.BadConfiguration\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_BAD_CONFIGURATION']/*\"/>\t\n            <unmanaged>ERROR_BAD_CONFIGURATION</unmanaged>\t\n            <unmanaged-short>ERROR_BAD_CONFIGURATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IndexAbsent\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INDEX_ABSENT']/*\"/>\t\n            <unmanaged>ERROR_INDEX_ABSENT</unmanaged>\t\n            <unmanaged-short>ERROR_INDEX_ABSENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InstallSourceAbsent\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INSTALL_SOURCE_ABSENT']/*\"/>\t\n            <unmanaged>ERROR_INSTALL_SOURCE_ABSENT</unmanaged>\t\n            <unmanaged-short>ERROR_INSTALL_SOURCE_ABSENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InstallPackageVersion\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INSTALL_PACKAGE_VERSION']/*\"/>\t\n            <unmanaged>ERROR_INSTALL_PACKAGE_VERSION</unmanaged>\t\n            <unmanaged-short>ERROR_INSTALL_PACKAGE_VERSION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ProductUninstalled\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_PRODUCT_UNINSTALLED']/*\"/>\t\n            <unmanaged>ERROR_PRODUCT_UNINSTALLED</unmanaged>\t\n            <unmanaged-short>ERROR_PRODUCT_UNINSTALLED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.BadQuerySyntax\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_BAD_QUERY_SYNTAX']/*\"/>\t\n            <unmanaged>ERROR_BAD_QUERY_SYNTAX</unmanaged>\t\n            <unmanaged-short>ERROR_BAD_QUERY_SYNTAX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidField\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_FIELD']/*\"/>\t\n            <unmanaged>ERROR_INVALID_FIELD</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_FIELD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DeviceRemoved\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DEVICE_REMOVED']/*\"/>\t\n            <unmanaged>ERROR_DEVICE_REMOVED</unmanaged>\t\n            <unmanaged-short>ERROR_DEVICE_REMOVED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InstallAlreadyRunning\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INSTALL_ALREADY_RUNNING']/*\"/>\t\n            <unmanaged>ERROR_INSTALL_ALREADY_RUNNING</unmanaged>\t\n            <unmanaged-short>ERROR_INSTALL_ALREADY_RUNNING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InstallPackageOpenFailed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INSTALL_PACKAGE_OPEN_FAILED']/*\"/>\t\n            <unmanaged>ERROR_INSTALL_PACKAGE_OPEN_FAILED</unmanaged>\t\n            <unmanaged-short>ERROR_INSTALL_PACKAGE_OPEN_FAILED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InstallPackageInvalid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INSTALL_PACKAGE_INVALID']/*\"/>\t\n            <unmanaged>ERROR_INSTALL_PACKAGE_INVALID</unmanaged>\t\n            <unmanaged-short>ERROR_INSTALL_PACKAGE_INVALID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InstallUiFailure\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INSTALL_UI_FAILURE']/*\"/>\t\n            <unmanaged>ERROR_INSTALL_UI_FAILURE</unmanaged>\t\n            <unmanaged-short>ERROR_INSTALL_UI_FAILURE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InstallLogFailure\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INSTALL_LOG_FAILURE']/*\"/>\t\n            <unmanaged>ERROR_INSTALL_LOG_FAILURE</unmanaged>\t\n            <unmanaged-short>ERROR_INSTALL_LOG_FAILURE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InstallLanguageUnsupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INSTALL_LANGUAGE_UNSUPPORTED']/*\"/>\t\n            <unmanaged>ERROR_INSTALL_LANGUAGE_UNSUPPORTED</unmanaged>\t\n            <unmanaged-short>ERROR_INSTALL_LANGUAGE_UNSUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InstallTransformFailure\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INSTALL_TRANSFORM_FAILURE']/*\"/>\t\n            <unmanaged>ERROR_INSTALL_TRANSFORM_FAILURE</unmanaged>\t\n            <unmanaged-short>ERROR_INSTALL_TRANSFORM_FAILURE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InstallPackageRejected\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INSTALL_PACKAGE_REJECTED']/*\"/>\t\n            <unmanaged>ERROR_INSTALL_PACKAGE_REJECTED</unmanaged>\t\n            <unmanaged-short>ERROR_INSTALL_PACKAGE_REJECTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.FunctionNotCalled\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_FUNCTION_NOT_CALLED']/*\"/>\t\n            <unmanaged>ERROR_FUNCTION_NOT_CALLED</unmanaged>\t\n            <unmanaged-short>ERROR_FUNCTION_NOT_CALLED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.FunctionFailed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_FUNCTION_FAILED']/*\"/>\t\n            <unmanaged>ERROR_FUNCTION_FAILED</unmanaged>\t\n            <unmanaged-short>ERROR_FUNCTION_FAILED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidTable\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_TABLE']/*\"/>\t\n            <unmanaged>ERROR_INVALID_TABLE</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_TABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DatatypeMismatch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DATATYPE_MISMATCH']/*\"/>\t\n            <unmanaged>ERROR_DATATYPE_MISMATCH</unmanaged>\t\n            <unmanaged-short>ERROR_DATATYPE_MISMATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.UnsupportedType\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_UNSUPPORTED_TYPE']/*\"/>\t\n            <unmanaged>ERROR_UNSUPPORTED_TYPE</unmanaged>\t\n            <unmanaged-short>ERROR_UNSUPPORTED_TYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CreateFailed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CREATE_FAILED']/*\"/>\t\n            <unmanaged>ERROR_CREATE_FAILED</unmanaged>\t\n            <unmanaged-short>ERROR_CREATE_FAILED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InstallTempUnwritable\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INSTALL_TEMP_UNWRITABLE']/*\"/>\t\n            <unmanaged>ERROR_INSTALL_TEMP_UNWRITABLE</unmanaged>\t\n            <unmanaged-short>ERROR_INSTALL_TEMP_UNWRITABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InstallPlatformUnsupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INSTALL_PLATFORM_UNSUPPORTED']/*\"/>\t\n            <unmanaged>ERROR_INSTALL_PLATFORM_UNSUPPORTED</unmanaged>\t\n            <unmanaged-short>ERROR_INSTALL_PLATFORM_UNSUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InstallNotused\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INSTALL_NOTUSED']/*\"/>\t\n            <unmanaged>ERROR_INSTALL_NOTUSED</unmanaged>\t\n            <unmanaged-short>ERROR_INSTALL_NOTUSED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.PatchPackageOpenFailed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_PATCH_PACKAGE_OPEN_FAILED']/*\"/>\t\n            <unmanaged>ERROR_PATCH_PACKAGE_OPEN_FAILED</unmanaged>\t\n            <unmanaged-short>ERROR_PATCH_PACKAGE_OPEN_FAILED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.PatchPackageInvalid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_PATCH_PACKAGE_INVALID']/*\"/>\t\n            <unmanaged>ERROR_PATCH_PACKAGE_INVALID</unmanaged>\t\n            <unmanaged-short>ERROR_PATCH_PACKAGE_INVALID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.PatchPackageUnsupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_PATCH_PACKAGE_UNSUPPORTED']/*\"/>\t\n            <unmanaged>ERROR_PATCH_PACKAGE_UNSUPPORTED</unmanaged>\t\n            <unmanaged-short>ERROR_PATCH_PACKAGE_UNSUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ProductVersion\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_PRODUCT_VERSION']/*\"/>\t\n            <unmanaged>ERROR_PRODUCT_VERSION</unmanaged>\t\n            <unmanaged-short>ERROR_PRODUCT_VERSION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidCommandLine\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_COMMAND_LINE']/*\"/>\t\n            <unmanaged>ERROR_INVALID_COMMAND_LINE</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_COMMAND_LINE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InstallRemoteDisallowed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INSTALL_REMOTE_DISALLOWED']/*\"/>\t\n            <unmanaged>ERROR_INSTALL_REMOTE_DISALLOWED</unmanaged>\t\n            <unmanaged-short>ERROR_INSTALL_REMOTE_DISALLOWED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SuccessRebootInitiated\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SUCCESS_REBOOT_INITIATED']/*\"/>\t\n            <unmanaged>ERROR_SUCCESS_REBOOT_INITIATED</unmanaged>\t\n            <unmanaged-short>ERROR_SUCCESS_REBOOT_INITIATED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.PatchTargetNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_PATCH_TARGET_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_PATCH_TARGET_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_PATCH_TARGET_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.PatchPackageRejected\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_PATCH_PACKAGE_REJECTED']/*\"/>\t\n            <unmanaged>ERROR_PATCH_PACKAGE_REJECTED</unmanaged>\t\n            <unmanaged-short>ERROR_PATCH_PACKAGE_REJECTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InstallTransformRejected\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INSTALL_TRANSFORM_REJECTED']/*\"/>\t\n            <unmanaged>ERROR_INSTALL_TRANSFORM_REJECTED</unmanaged>\t\n            <unmanaged-short>ERROR_INSTALL_TRANSFORM_REJECTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InstallRemoteProhibited\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INSTALL_REMOTE_PROHIBITED']/*\"/>\t\n            <unmanaged>ERROR_INSTALL_REMOTE_PROHIBITED</unmanaged>\t\n            <unmanaged-short>ERROR_INSTALL_REMOTE_PROHIBITED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.PatchRemovalUnsupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_PATCH_REMOVAL_UNSUPPORTED']/*\"/>\t\n            <unmanaged>ERROR_PATCH_REMOVAL_UNSUPPORTED</unmanaged>\t\n            <unmanaged-short>ERROR_PATCH_REMOVAL_UNSUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.UnknownPatch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_UNKNOWN_PATCH']/*\"/>\t\n            <unmanaged>ERROR_UNKNOWN_PATCH</unmanaged>\t\n            <unmanaged-short>ERROR_UNKNOWN_PATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.PatchNoSequence\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_PATCH_NO_SEQUENCE']/*\"/>\t\n            <unmanaged>ERROR_PATCH_NO_SEQUENCE</unmanaged>\t\n            <unmanaged-short>ERROR_PATCH_NO_SEQUENCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.PatchRemovalDisallowed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_PATCH_REMOVAL_DISALLOWED']/*\"/>\t\n            <unmanaged>ERROR_PATCH_REMOVAL_DISALLOWED</unmanaged>\t\n            <unmanaged-short>ERROR_PATCH_REMOVAL_DISALLOWED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidPatchXml\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_PATCH_XML']/*\"/>\t\n            <unmanaged>ERROR_INVALID_PATCH_XML</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_PATCH_XML</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.PatchManagedAdvertisedProduct\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_PATCH_MANAGED_ADVERTISED_PRODUCT']/*\"/>\t\n            <unmanaged>ERROR_PATCH_MANAGED_ADVERTISED_PRODUCT</unmanaged>\t\n            <unmanaged-short>ERROR_PATCH_MANAGED_ADVERTISED_PRODUCT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InstallServiceSafeboot\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INSTALL_SERVICE_SAFEBOOT']/*\"/>\t\n            <unmanaged>ERROR_INSTALL_SERVICE_SAFEBOOT</unmanaged>\t\n            <unmanaged-short>ERROR_INSTALL_SERVICE_SAFEBOOT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.FailFastException\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_FAIL_FAST_EXCEPTION']/*\"/>\t\n            <unmanaged>ERROR_FAIL_FAST_EXCEPTION</unmanaged>\t\n            <unmanaged-short>ERROR_FAIL_FAST_EXCEPTION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidUserBuffer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_USER_BUFFER']/*\"/>\t\n            <unmanaged>ERROR_INVALID_USER_BUFFER</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_USER_BUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.UnrecognizedMedia\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_UNRECOGNIZED_MEDIA']/*\"/>\t\n            <unmanaged>ERROR_UNRECOGNIZED_MEDIA</unmanaged>\t\n            <unmanaged-short>ERROR_UNRECOGNIZED_MEDIA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NoTrustLsaSecret\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NO_TRUST_LSA_SECRET']/*\"/>\t\n            <unmanaged>ERROR_NO_TRUST_LSA_SECRET</unmanaged>\t\n            <unmanaged-short>ERROR_NO_TRUST_LSA_SECRET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NoTrustSamAccount\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NO_TRUST_SAM_ACCOUNT']/*\"/>\t\n            <unmanaged>ERROR_NO_TRUST_SAM_ACCOUNT</unmanaged>\t\n            <unmanaged-short>ERROR_NO_TRUST_SAM_ACCOUNT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.TrustedDomainFailure\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_TRUSTED_DOMAIN_FAILURE']/*\"/>\t\n            <unmanaged>ERROR_TRUSTED_DOMAIN_FAILURE</unmanaged>\t\n            <unmanaged-short>ERROR_TRUSTED_DOMAIN_FAILURE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.TrustedRelationshipFailure\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_TRUSTED_RELATIONSHIP_FAILURE']/*\"/>\t\n            <unmanaged>ERROR_TRUSTED_RELATIONSHIP_FAILURE</unmanaged>\t\n            <unmanaged-short>ERROR_TRUSTED_RELATIONSHIP_FAILURE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.TrustFailure\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_TRUST_FAILURE']/*\"/>\t\n            <unmanaged>ERROR_TRUST_FAILURE</unmanaged>\t\n            <unmanaged-short>ERROR_TRUST_FAILURE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NetlogonNotStarted\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NETLOGON_NOT_STARTED']/*\"/>\t\n            <unmanaged>ERROR_NETLOGON_NOT_STARTED</unmanaged>\t\n            <unmanaged-short>ERROR_NETLOGON_NOT_STARTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.AccountExpired\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_ACCOUNT_EXPIRED']/*\"/>\t\n            <unmanaged>ERROR_ACCOUNT_EXPIRED</unmanaged>\t\n            <unmanaged-short>ERROR_ACCOUNT_EXPIRED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.RedirectorHasOpenHandles\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_REDIRECTOR_HAS_OPEN_HANDLES']/*\"/>\t\n            <unmanaged>ERROR_REDIRECTOR_HAS_OPEN_HANDLES</unmanaged>\t\n            <unmanaged-short>ERROR_REDIRECTOR_HAS_OPEN_HANDLES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.PrinterDriverAlreadyInstalled\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_PRINTER_DRIVER_ALREADY_INSTALLED']/*\"/>\t\n            <unmanaged>ERROR_PRINTER_DRIVER_ALREADY_INSTALLED</unmanaged>\t\n            <unmanaged-short>ERROR_PRINTER_DRIVER_ALREADY_INSTALLED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.UnknownPort\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_UNKNOWN_PORT']/*\"/>\t\n            <unmanaged>ERROR_UNKNOWN_PORT</unmanaged>\t\n            <unmanaged-short>ERROR_UNKNOWN_PORT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.UnknownPrinterDriver\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_UNKNOWN_PRINTER_DRIVER']/*\"/>\t\n            <unmanaged>ERROR_UNKNOWN_PRINTER_DRIVER</unmanaged>\t\n            <unmanaged-short>ERROR_UNKNOWN_PRINTER_DRIVER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.UnknownPrintprocessor\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_UNKNOWN_PRINTPROCESSOR']/*\"/>\t\n            <unmanaged>ERROR_UNKNOWN_PRINTPROCESSOR</unmanaged>\t\n            <unmanaged-short>ERROR_UNKNOWN_PRINTPROCESSOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidSeparatorFile\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_SEPARATOR_FILE']/*\"/>\t\n            <unmanaged>ERROR_INVALID_SEPARATOR_FILE</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_SEPARATOR_FILE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidPriority\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_PRIORITY']/*\"/>\t\n            <unmanaged>ERROR_INVALID_PRIORITY</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_PRIORITY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidPrinterName\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_PRINTER_NAME']/*\"/>\t\n            <unmanaged>ERROR_INVALID_PRINTER_NAME</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_PRINTER_NAME</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.PrinterAlreadyExists\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_PRINTER_ALREADY_EXISTS']/*\"/>\t\n            <unmanaged>ERROR_PRINTER_ALREADY_EXISTS</unmanaged>\t\n            <unmanaged-short>ERROR_PRINTER_ALREADY_EXISTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidPrinterCommand\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_PRINTER_COMMAND']/*\"/>\t\n            <unmanaged>ERROR_INVALID_PRINTER_COMMAND</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_PRINTER_COMMAND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidDatatype\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_DATATYPE']/*\"/>\t\n            <unmanaged>ERROR_INVALID_DATATYPE</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_DATATYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidEnvironment\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_ENVIRONMENT']/*\"/>\t\n            <unmanaged>ERROR_INVALID_ENVIRONMENT</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_ENVIRONMENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NologonInterdomainTrustAccount\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT']/*\"/>\t\n            <unmanaged>ERROR_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT</unmanaged>\t\n            <unmanaged-short>ERROR_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NologonWorkstationTrustAccount\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NOLOGON_WORKSTATION_TRUST_ACCOUNT']/*\"/>\t\n            <unmanaged>ERROR_NOLOGON_WORKSTATION_TRUST_ACCOUNT</unmanaged>\t\n            <unmanaged-short>ERROR_NOLOGON_WORKSTATION_TRUST_ACCOUNT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NologonServerTrustAccount\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NOLOGON_SERVER_TRUST_ACCOUNT']/*\"/>\t\n            <unmanaged>ERROR_NOLOGON_SERVER_TRUST_ACCOUNT</unmanaged>\t\n            <unmanaged-short>ERROR_NOLOGON_SERVER_TRUST_ACCOUNT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DomainTrustInconsistent\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DOMAIN_TRUST_INCONSISTENT']/*\"/>\t\n            <unmanaged>ERROR_DOMAIN_TRUST_INCONSISTENT</unmanaged>\t\n            <unmanaged-short>ERROR_DOMAIN_TRUST_INCONSISTENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ServerHasOpenHandles\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SERVER_HAS_OPEN_HANDLES']/*\"/>\t\n            <unmanaged>ERROR_SERVER_HAS_OPEN_HANDLES</unmanaged>\t\n            <unmanaged-short>ERROR_SERVER_HAS_OPEN_HANDLES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ResourceDataNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_RESOURCE_DATA_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_RESOURCE_DATA_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_RESOURCE_DATA_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ResourceTypeNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_RESOURCE_TYPE_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_RESOURCE_TYPE_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_RESOURCE_TYPE_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ResourceNameNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_RESOURCE_NAME_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_RESOURCE_NAME_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_RESOURCE_NAME_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ResourceLangNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_RESOURCE_LANG_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_RESOURCE_LANG_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_RESOURCE_LANG_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NotEnoughQuota\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NOT_ENOUGH_QUOTA']/*\"/>\t\n            <unmanaged>ERROR_NOT_ENOUGH_QUOTA</unmanaged>\t\n            <unmanaged-short>ERROR_NOT_ENOUGH_QUOTA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidTime\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_TIME']/*\"/>\t\n            <unmanaged>ERROR_INVALID_TIME</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_TIME</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidFormName\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_FORM_NAME']/*\"/>\t\n            <unmanaged>ERROR_INVALID_FORM_NAME</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_FORM_NAME</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidFormSize\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_FORM_SIZE']/*\"/>\t\n            <unmanaged>ERROR_INVALID_FORM_SIZE</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_FORM_SIZE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.AlreadyWaiting\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_ALREADY_WAITING']/*\"/>\t\n            <unmanaged>ERROR_ALREADY_WAITING</unmanaged>\t\n            <unmanaged-short>ERROR_ALREADY_WAITING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.PrinterDeleted\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_PRINTER_DELETED']/*\"/>\t\n            <unmanaged>ERROR_PRINTER_DELETED</unmanaged>\t\n            <unmanaged-short>ERROR_PRINTER_DELETED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidPrinterState\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_PRINTER_STATE']/*\"/>\t\n            <unmanaged>ERROR_INVALID_PRINTER_STATE</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_PRINTER_STATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.PasswordMustChange\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_PASSWORD_MUST_CHANGE']/*\"/>\t\n            <unmanaged>ERROR_PASSWORD_MUST_CHANGE</unmanaged>\t\n            <unmanaged-short>ERROR_PASSWORD_MUST_CHANGE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DomainControllerNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DOMAIN_CONTROLLER_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_DOMAIN_CONTROLLER_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_DOMAIN_CONTROLLER_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.AccountLockedOut\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_ACCOUNT_LOCKED_OUT']/*\"/>\t\n            <unmanaged>ERROR_ACCOUNT_LOCKED_OUT</unmanaged>\t\n            <unmanaged-short>ERROR_ACCOUNT_LOCKED_OUT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NoSitename\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NO_SITENAME']/*\"/>\t\n            <unmanaged>ERROR_NO_SITENAME</unmanaged>\t\n            <unmanaged-short>ERROR_NO_SITENAME</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CantAccessFile\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CANT_ACCESS_FILE']/*\"/>\t\n            <unmanaged>ERROR_CANT_ACCESS_FILE</unmanaged>\t\n            <unmanaged-short>ERROR_CANT_ACCESS_FILE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CantResolveFilename\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CANT_RESOLVE_FILENAME']/*\"/>\t\n            <unmanaged>ERROR_CANT_RESOLVE_FILENAME</unmanaged>\t\n            <unmanaged-short>ERROR_CANT_RESOLVE_FILENAME</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.KmDriverBlocked\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_KM_DRIVER_BLOCKED']/*\"/>\t\n            <unmanaged>ERROR_KM_DRIVER_BLOCKED</unmanaged>\t\n            <unmanaged-short>ERROR_KM_DRIVER_BLOCKED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ContextExpired\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CONTEXT_EXPIRED']/*\"/>\t\n            <unmanaged>ERROR_CONTEXT_EXPIRED</unmanaged>\t\n            <unmanaged-short>ERROR_CONTEXT_EXPIRED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.PerUserTrustQuotaExceeded\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_PER_USER_TRUST_QUOTA_EXCEEDED']/*\"/>\t\n            <unmanaged>ERROR_PER_USER_TRUST_QUOTA_EXCEEDED</unmanaged>\t\n            <unmanaged-short>ERROR_PER_USER_TRUST_QUOTA_EXCEEDED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.AllUserTrustQuotaExceeded\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_ALL_USER_TRUST_QUOTA_EXCEEDED']/*\"/>\t\n            <unmanaged>ERROR_ALL_USER_TRUST_QUOTA_EXCEEDED</unmanaged>\t\n            <unmanaged-short>ERROR_ALL_USER_TRUST_QUOTA_EXCEEDED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.UserDeleteTrustQuotaExceeded\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_USER_DELETE_TRUST_QUOTA_EXCEEDED']/*\"/>\t\n            <unmanaged>ERROR_USER_DELETE_TRUST_QUOTA_EXCEEDED</unmanaged>\t\n            <unmanaged-short>ERROR_USER_DELETE_TRUST_QUOTA_EXCEEDED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.AuthenticationFirewallFailed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_AUTHENTICATION_FIREWALL_FAILED']/*\"/>\t\n            <unmanaged>ERROR_AUTHENTICATION_FIREWALL_FAILED</unmanaged>\t\n            <unmanaged-short>ERROR_AUTHENTICATION_FIREWALL_FAILED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.RemotePrintConnectionsBlocked\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_REMOTE_PRINT_CONNECTIONS_BLOCKED']/*\"/>\t\n            <unmanaged>ERROR_REMOTE_PRINT_CONNECTIONS_BLOCKED</unmanaged>\t\n            <unmanaged-short>ERROR_REMOTE_PRINT_CONNECTIONS_BLOCKED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NtlmBlocked\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NTLM_BLOCKED']/*\"/>\t\n            <unmanaged>ERROR_NTLM_BLOCKED</unmanaged>\t\n            <unmanaged-short>ERROR_NTLM_BLOCKED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidPixelFormat\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_PIXEL_FORMAT']/*\"/>\t\n            <unmanaged>ERROR_INVALID_PIXEL_FORMAT</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_PIXEL_FORMAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.BadDriver\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_BAD_DRIVER']/*\"/>\t\n            <unmanaged>ERROR_BAD_DRIVER</unmanaged>\t\n            <unmanaged-short>ERROR_BAD_DRIVER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidWindowStyle\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_WINDOW_STYLE']/*\"/>\t\n            <unmanaged>ERROR_INVALID_WINDOW_STYLE</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_WINDOW_STYLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.MetafileNotSupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_METAFILE_NOT_SUPPORTED']/*\"/>\t\n            <unmanaged>ERROR_METAFILE_NOT_SUPPORTED</unmanaged>\t\n            <unmanaged-short>ERROR_METAFILE_NOT_SUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.TransformNotSupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_TRANSFORM_NOT_SUPPORTED']/*\"/>\t\n            <unmanaged>ERROR_TRANSFORM_NOT_SUPPORTED</unmanaged>\t\n            <unmanaged-short>ERROR_TRANSFORM_NOT_SUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClippingNotSupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLIPPING_NOT_SUPPORTED']/*\"/>\t\n            <unmanaged>ERROR_CLIPPING_NOT_SUPPORTED</unmanaged>\t\n            <unmanaged-short>ERROR_CLIPPING_NOT_SUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidCmm\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_CMM']/*\"/>\t\n            <unmanaged>ERROR_INVALID_CMM</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_CMM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidProfile\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_PROFILE']/*\"/>\t\n            <unmanaged>ERROR_INVALID_PROFILE</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_PROFILE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.TagNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_TAG_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_TAG_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_TAG_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.TagNotPresent\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_TAG_NOT_PRESENT']/*\"/>\t\n            <unmanaged>ERROR_TAG_NOT_PRESENT</unmanaged>\t\n            <unmanaged-short>ERROR_TAG_NOT_PRESENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DuplicateTag\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DUPLICATE_TAG']/*\"/>\t\n            <unmanaged>ERROR_DUPLICATE_TAG</unmanaged>\t\n            <unmanaged-short>ERROR_DUPLICATE_TAG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ProfileNotAssociatedWithDevice\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_PROFILE_NOT_ASSOCIATED_WITH_DEVICE']/*\"/>\t\n            <unmanaged>ERROR_PROFILE_NOT_ASSOCIATED_WITH_DEVICE</unmanaged>\t\n            <unmanaged-short>ERROR_PROFILE_NOT_ASSOCIATED_WITH_DEVICE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ProfileNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_PROFILE_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_PROFILE_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_PROFILE_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidColorspace\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_COLORSPACE']/*\"/>\t\n            <unmanaged>ERROR_INVALID_COLORSPACE</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_COLORSPACE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IcmNotEnabled\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_ICM_NOT_ENABLED']/*\"/>\t\n            <unmanaged>ERROR_ICM_NOT_ENABLED</unmanaged>\t\n            <unmanaged-short>ERROR_ICM_NOT_ENABLED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DeletingIcmXform\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DELETING_ICM_XFORM']/*\"/>\t\n            <unmanaged>ERROR_DELETING_ICM_XFORM</unmanaged>\t\n            <unmanaged-short>ERROR_DELETING_ICM_XFORM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidTransform\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_TRANSFORM']/*\"/>\t\n            <unmanaged>ERROR_INVALID_TRANSFORM</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_TRANSFORM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ColorspaceMismatch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_COLORSPACE_MISMATCH']/*\"/>\t\n            <unmanaged>ERROR_COLORSPACE_MISMATCH</unmanaged>\t\n            <unmanaged-short>ERROR_COLORSPACE_MISMATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidColorindex\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_COLORINDEX']/*\"/>\t\n            <unmanaged>ERROR_INVALID_COLORINDEX</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_COLORINDEX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ProfileDoesNotMatchDevice\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_PROFILE_DOES_NOT_MATCH_DEVICE']/*\"/>\t\n            <unmanaged>ERROR_PROFILE_DOES_NOT_MATCH_DEVICE</unmanaged>\t\n            <unmanaged-short>ERROR_PROFILE_DOES_NOT_MATCH_DEVICE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ConnectedOtherPassword\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CONNECTED_OTHER_PASSWORD']/*\"/>\t\n            <unmanaged>ERROR_CONNECTED_OTHER_PASSWORD</unmanaged>\t\n            <unmanaged-short>ERROR_CONNECTED_OTHER_PASSWORD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ConnectedOtherPasswordDefault\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CONNECTED_OTHER_PASSWORD_DEFAULT']/*\"/>\t\n            <unmanaged>ERROR_CONNECTED_OTHER_PASSWORD_DEFAULT</unmanaged>\t\n            <unmanaged-short>ERROR_CONNECTED_OTHER_PASSWORD_DEFAULT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.BadUsername\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_BAD_USERNAME']/*\"/>\t\n            <unmanaged>ERROR_BAD_USERNAME</unmanaged>\t\n            <unmanaged-short>ERROR_BAD_USERNAME</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NotConnected\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NOT_CONNECTED']/*\"/>\t\n            <unmanaged>ERROR_NOT_CONNECTED</unmanaged>\t\n            <unmanaged-short>ERROR_NOT_CONNECTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.OpenFiles\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_OPEN_FILES']/*\"/>\t\n            <unmanaged>ERROR_OPEN_FILES</unmanaged>\t\n            <unmanaged-short>ERROR_OPEN_FILES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ActiveConnections\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_ACTIVE_CONNECTIONS']/*\"/>\t\n            <unmanaged>ERROR_ACTIVE_CONNECTIONS</unmanaged>\t\n            <unmanaged-short>ERROR_ACTIVE_CONNECTIONS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DeviceInUse\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DEVICE_IN_USE']/*\"/>\t\n            <unmanaged>ERROR_DEVICE_IN_USE</unmanaged>\t\n            <unmanaged-short>ERROR_DEVICE_IN_USE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.UnknownPrintMonitor\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_UNKNOWN_PRINT_MONITOR']/*\"/>\t\n            <unmanaged>ERROR_UNKNOWN_PRINT_MONITOR</unmanaged>\t\n            <unmanaged-short>ERROR_UNKNOWN_PRINT_MONITOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.PrinterDriverInUse\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_PRINTER_DRIVER_IN_USE']/*\"/>\t\n            <unmanaged>ERROR_PRINTER_DRIVER_IN_USE</unmanaged>\t\n            <unmanaged-short>ERROR_PRINTER_DRIVER_IN_USE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SpoolFileNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SPOOL_FILE_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_SPOOL_FILE_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_SPOOL_FILE_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SplNoStartdoc\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SPL_NO_STARTDOC']/*\"/>\t\n            <unmanaged>ERROR_SPL_NO_STARTDOC</unmanaged>\t\n            <unmanaged-short>ERROR_SPL_NO_STARTDOC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SplNoAddjob\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SPL_NO_ADDJOB']/*\"/>\t\n            <unmanaged>ERROR_SPL_NO_ADDJOB</unmanaged>\t\n            <unmanaged-short>ERROR_SPL_NO_ADDJOB</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.PrintProcessorAlreadyInstalled\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_PRINT_PROCESSOR_ALREADY_INSTALLED']/*\"/>\t\n            <unmanaged>ERROR_PRINT_PROCESSOR_ALREADY_INSTALLED</unmanaged>\t\n            <unmanaged-short>ERROR_PRINT_PROCESSOR_ALREADY_INSTALLED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.PrintMonitorAlreadyInstalled\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_PRINT_MONITOR_ALREADY_INSTALLED']/*\"/>\t\n            <unmanaged>ERROR_PRINT_MONITOR_ALREADY_INSTALLED</unmanaged>\t\n            <unmanaged-short>ERROR_PRINT_MONITOR_ALREADY_INSTALLED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidPrintMonitor\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_PRINT_MONITOR']/*\"/>\t\n            <unmanaged>ERROR_INVALID_PRINT_MONITOR</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_PRINT_MONITOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.PrintMonitorInUse\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_PRINT_MONITOR_IN_USE']/*\"/>\t\n            <unmanaged>ERROR_PRINT_MONITOR_IN_USE</unmanaged>\t\n            <unmanaged-short>ERROR_PRINT_MONITOR_IN_USE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.PrinterHasJobsQueued\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_PRINTER_HAS_JOBS_QUEUED']/*\"/>\t\n            <unmanaged>ERROR_PRINTER_HAS_JOBS_QUEUED</unmanaged>\t\n            <unmanaged-short>ERROR_PRINTER_HAS_JOBS_QUEUED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SuccessRebootRequired\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SUCCESS_REBOOT_REQUIRED']/*\"/>\t\n            <unmanaged>ERROR_SUCCESS_REBOOT_REQUIRED</unmanaged>\t\n            <unmanaged-short>ERROR_SUCCESS_REBOOT_REQUIRED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SuccessRestartRequired\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SUCCESS_RESTART_REQUIRED']/*\"/>\t\n            <unmanaged>ERROR_SUCCESS_RESTART_REQUIRED</unmanaged>\t\n            <unmanaged-short>ERROR_SUCCESS_RESTART_REQUIRED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.PrinterNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_PRINTER_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_PRINTER_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_PRINTER_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.PrinterDriverWarned\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_PRINTER_DRIVER_WARNED']/*\"/>\t\n            <unmanaged>ERROR_PRINTER_DRIVER_WARNED</unmanaged>\t\n            <unmanaged-short>ERROR_PRINTER_DRIVER_WARNED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.PrinterDriverBlocked\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_PRINTER_DRIVER_BLOCKED']/*\"/>\t\n            <unmanaged>ERROR_PRINTER_DRIVER_BLOCKED</unmanaged>\t\n            <unmanaged-short>ERROR_PRINTER_DRIVER_BLOCKED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.PrinterDriverPackageInUse\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_PRINTER_DRIVER_PACKAGE_IN_USE']/*\"/>\t\n            <unmanaged>ERROR_PRINTER_DRIVER_PACKAGE_IN_USE</unmanaged>\t\n            <unmanaged-short>ERROR_PRINTER_DRIVER_PACKAGE_IN_USE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CoreDriverPackageNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CORE_DRIVER_PACKAGE_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_CORE_DRIVER_PACKAGE_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_CORE_DRIVER_PACKAGE_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.FailRebootRequired\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_FAIL_REBOOT_REQUIRED']/*\"/>\t\n            <unmanaged>ERROR_FAIL_REBOOT_REQUIRED</unmanaged>\t\n            <unmanaged-short>ERROR_FAIL_REBOOT_REQUIRED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.FailRebootInitiated\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_FAIL_REBOOT_INITIATED']/*\"/>\t\n            <unmanaged>ERROR_FAIL_REBOOT_INITIATED</unmanaged>\t\n            <unmanaged-short>ERROR_FAIL_REBOOT_INITIATED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.PrinterDriverDownloadNeeded\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_PRINTER_DRIVER_DOWNLOAD_NEEDED']/*\"/>\t\n            <unmanaged>ERROR_PRINTER_DRIVER_DOWNLOAD_NEEDED</unmanaged>\t\n            <unmanaged-short>ERROR_PRINTER_DRIVER_DOWNLOAD_NEEDED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.PrintJobRestartRequired\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_PRINT_JOB_RESTART_REQUIRED']/*\"/>\t\n            <unmanaged>ERROR_PRINT_JOB_RESTART_REQUIRED</unmanaged>\t\n            <unmanaged-short>ERROR_PRINT_JOB_RESTART_REQUIRED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IoReissueAsCached\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IO_REISSUE_AS_CACHED']/*\"/>\t\n            <unmanaged>ERROR_IO_REISSUE_AS_CACHED</unmanaged>\t\n            <unmanaged-short>ERROR_IO_REISSUE_AS_CACHED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.WinsInternal\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_WINS_INTERNAL']/*\"/>\t\n            <unmanaged>ERROR_WINS_INTERNAL</unmanaged>\t\n            <unmanaged-short>ERROR_WINS_INTERNAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CanNotDelLocalWins\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CAN_NOT_DEL_LOCAL_WINS']/*\"/>\t\n            <unmanaged>ERROR_CAN_NOT_DEL_LOCAL_WINS</unmanaged>\t\n            <unmanaged-short>ERROR_CAN_NOT_DEL_LOCAL_WINS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.StaticInit\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_STATIC_INIT']/*\"/>\t\n            <unmanaged>ERROR_STATIC_INIT</unmanaged>\t\n            <unmanaged-short>ERROR_STATIC_INIT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IncBackup\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INC_BACKUP']/*\"/>\t\n            <unmanaged>ERROR_INC_BACKUP</unmanaged>\t\n            <unmanaged-short>ERROR_INC_BACKUP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.FullBackup\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_FULL_BACKUP']/*\"/>\t\n            <unmanaged>ERROR_FULL_BACKUP</unmanaged>\t\n            <unmanaged-short>ERROR_FULL_BACKUP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.RecNonExistent\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_REC_NON_EXISTENT']/*\"/>\t\n            <unmanaged>ERROR_REC_NON_EXISTENT</unmanaged>\t\n            <unmanaged-short>ERROR_REC_NON_EXISTENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.RplNotAllowed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_RPL_NOT_ALLOWED']/*\"/>\t\n            <unmanaged>ERROR_RPL_NOT_ALLOWED</unmanaged>\t\n            <unmanaged-short>ERROR_RPL_NOT_ALLOWED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DhcpAddressConflict\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DHCP_ADDRESS_CONFLICT']/*\"/>\t\n            <unmanaged>ERROR_DHCP_ADDRESS_CONFLICT</unmanaged>\t\n            <unmanaged-short>ERROR_DHCP_ADDRESS_CONFLICT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.WmiGuidNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_WMI_GUID_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_WMI_GUID_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_WMI_GUID_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.WmiInstanceNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_WMI_INSTANCE_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_WMI_INSTANCE_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_WMI_INSTANCE_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.WmiItemidNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_WMI_ITEMID_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_WMI_ITEMID_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_WMI_ITEMID_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.WmiTryAgain\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_WMI_TRY_AGAIN']/*\"/>\t\n            <unmanaged>ERROR_WMI_TRY_AGAIN</unmanaged>\t\n            <unmanaged-short>ERROR_WMI_TRY_AGAIN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.WmiDpNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_WMI_DP_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_WMI_DP_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_WMI_DP_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.WmiUnresolvedInstanceRef\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_WMI_UNRESOLVED_INSTANCE_REF']/*\"/>\t\n            <unmanaged>ERROR_WMI_UNRESOLVED_INSTANCE_REF</unmanaged>\t\n            <unmanaged-short>ERROR_WMI_UNRESOLVED_INSTANCE_REF</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.WmiAlreadyEnabled\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_WMI_ALREADY_ENABLED']/*\"/>\t\n            <unmanaged>ERROR_WMI_ALREADY_ENABLED</unmanaged>\t\n            <unmanaged-short>ERROR_WMI_ALREADY_ENABLED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.WmiGuidDisconnected\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_WMI_GUID_DISCONNECTED']/*\"/>\t\n            <unmanaged>ERROR_WMI_GUID_DISCONNECTED</unmanaged>\t\n            <unmanaged-short>ERROR_WMI_GUID_DISCONNECTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.WmiServerUnavailable\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_WMI_SERVER_UNAVAILABLE']/*\"/>\t\n            <unmanaged>ERROR_WMI_SERVER_UNAVAILABLE</unmanaged>\t\n            <unmanaged-short>ERROR_WMI_SERVER_UNAVAILABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.WmiDpFailed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_WMI_DP_FAILED']/*\"/>\t\n            <unmanaged>ERROR_WMI_DP_FAILED</unmanaged>\t\n            <unmanaged-short>ERROR_WMI_DP_FAILED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.WmiInvalidMof\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_WMI_INVALID_MOF']/*\"/>\t\n            <unmanaged>ERROR_WMI_INVALID_MOF</unmanaged>\t\n            <unmanaged-short>ERROR_WMI_INVALID_MOF</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.WmiInvalidReginfo\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_WMI_INVALID_REGINFO']/*\"/>\t\n            <unmanaged>ERROR_WMI_INVALID_REGINFO</unmanaged>\t\n            <unmanaged-short>ERROR_WMI_INVALID_REGINFO</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.WmiAlreadyDisabled\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_WMI_ALREADY_DISABLED']/*\"/>\t\n            <unmanaged>ERROR_WMI_ALREADY_DISABLED</unmanaged>\t\n            <unmanaged-short>ERROR_WMI_ALREADY_DISABLED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.WmiReadOnly\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_WMI_READ_ONLY']/*\"/>\t\n            <unmanaged>ERROR_WMI_READ_ONLY</unmanaged>\t\n            <unmanaged-short>ERROR_WMI_READ_ONLY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.WmiSetFailure\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_WMI_SET_FAILURE']/*\"/>\t\n            <unmanaged>ERROR_WMI_SET_FAILURE</unmanaged>\t\n            <unmanaged-short>ERROR_WMI_SET_FAILURE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidMedia\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_MEDIA']/*\"/>\t\n            <unmanaged>ERROR_INVALID_MEDIA</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_MEDIA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidLibrary\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_LIBRARY']/*\"/>\t\n            <unmanaged>ERROR_INVALID_LIBRARY</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_LIBRARY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidMediaPool\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_MEDIA_POOL']/*\"/>\t\n            <unmanaged>ERROR_INVALID_MEDIA_POOL</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_MEDIA_POOL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DriveMediaMismatch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DRIVE_MEDIA_MISMATCH']/*\"/>\t\n            <unmanaged>ERROR_DRIVE_MEDIA_MISMATCH</unmanaged>\t\n            <unmanaged-short>ERROR_DRIVE_MEDIA_MISMATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.MediaOffline\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_MEDIA_OFFLINE']/*\"/>\t\n            <unmanaged>ERROR_MEDIA_OFFLINE</unmanaged>\t\n            <unmanaged-short>ERROR_MEDIA_OFFLINE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.LibraryOffline\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_LIBRARY_OFFLINE']/*\"/>\t\n            <unmanaged>ERROR_LIBRARY_OFFLINE</unmanaged>\t\n            <unmanaged-short>ERROR_LIBRARY_OFFLINE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.Empty\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_EMPTY']/*\"/>\t\n            <unmanaged>ERROR_EMPTY</unmanaged>\t\n            <unmanaged-short>ERROR_EMPTY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NotEmpty\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NOT_EMPTY']/*\"/>\t\n            <unmanaged>ERROR_NOT_EMPTY</unmanaged>\t\n            <unmanaged-short>ERROR_NOT_EMPTY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.MediaUnavailable\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_MEDIA_UNAVAILABLE']/*\"/>\t\n            <unmanaged>ERROR_MEDIA_UNAVAILABLE</unmanaged>\t\n            <unmanaged-short>ERROR_MEDIA_UNAVAILABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ResourceDisabled\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_RESOURCE_DISABLED']/*\"/>\t\n            <unmanaged>ERROR_RESOURCE_DISABLED</unmanaged>\t\n            <unmanaged-short>ERROR_RESOURCE_DISABLED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidCleaner\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_CLEANER']/*\"/>\t\n            <unmanaged>ERROR_INVALID_CLEANER</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_CLEANER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.UnableToClean\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_UNABLE_TO_CLEAN']/*\"/>\t\n            <unmanaged>ERROR_UNABLE_TO_CLEAN</unmanaged>\t\n            <unmanaged-short>ERROR_UNABLE_TO_CLEAN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ObjectNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_OBJECT_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_OBJECT_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_OBJECT_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DatabaseFailure\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DATABASE_FAILURE']/*\"/>\t\n            <unmanaged>ERROR_DATABASE_FAILURE</unmanaged>\t\n            <unmanaged-short>ERROR_DATABASE_FAILURE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DatabaseFull\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DATABASE_FULL']/*\"/>\t\n            <unmanaged>ERROR_DATABASE_FULL</unmanaged>\t\n            <unmanaged-short>ERROR_DATABASE_FULL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.MediaIncompatible\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_MEDIA_INCOMPATIBLE']/*\"/>\t\n            <unmanaged>ERROR_MEDIA_INCOMPATIBLE</unmanaged>\t\n            <unmanaged-short>ERROR_MEDIA_INCOMPATIBLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ResourceNotPresent\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_RESOURCE_NOT_PRESENT']/*\"/>\t\n            <unmanaged>ERROR_RESOURCE_NOT_PRESENT</unmanaged>\t\n            <unmanaged-short>ERROR_RESOURCE_NOT_PRESENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidOperation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_OPERATION']/*\"/>\t\n            <unmanaged>ERROR_INVALID_OPERATION</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_OPERATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.MediaNotAvailable\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_MEDIA_NOT_AVAILABLE']/*\"/>\t\n            <unmanaged>ERROR_MEDIA_NOT_AVAILABLE</unmanaged>\t\n            <unmanaged-short>ERROR_MEDIA_NOT_AVAILABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DeviceNotAvailable\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DEVICE_NOT_AVAILABLE']/*\"/>\t\n            <unmanaged>ERROR_DEVICE_NOT_AVAILABLE</unmanaged>\t\n            <unmanaged-short>ERROR_DEVICE_NOT_AVAILABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.RequestRefused\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_REQUEST_REFUSED']/*\"/>\t\n            <unmanaged>ERROR_REQUEST_REFUSED</unmanaged>\t\n            <unmanaged-short>ERROR_REQUEST_REFUSED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidDriveObject\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_DRIVE_OBJECT']/*\"/>\t\n            <unmanaged>ERROR_INVALID_DRIVE_OBJECT</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_DRIVE_OBJECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.LibraryFull\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_LIBRARY_FULL']/*\"/>\t\n            <unmanaged>ERROR_LIBRARY_FULL</unmanaged>\t\n            <unmanaged-short>ERROR_LIBRARY_FULL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.MediumNotAccessible\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_MEDIUM_NOT_ACCESSIBLE']/*\"/>\t\n            <unmanaged>ERROR_MEDIUM_NOT_ACCESSIBLE</unmanaged>\t\n            <unmanaged-short>ERROR_MEDIUM_NOT_ACCESSIBLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.UnableToLoadMedium\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_UNABLE_TO_LOAD_MEDIUM']/*\"/>\t\n            <unmanaged>ERROR_UNABLE_TO_LOAD_MEDIUM</unmanaged>\t\n            <unmanaged-short>ERROR_UNABLE_TO_LOAD_MEDIUM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.UnableToInventoryDrive\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_UNABLE_TO_INVENTORY_DRIVE']/*\"/>\t\n            <unmanaged>ERROR_UNABLE_TO_INVENTORY_DRIVE</unmanaged>\t\n            <unmanaged-short>ERROR_UNABLE_TO_INVENTORY_DRIVE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.UnableToInventorySlot\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_UNABLE_TO_INVENTORY_SLOT']/*\"/>\t\n            <unmanaged>ERROR_UNABLE_TO_INVENTORY_SLOT</unmanaged>\t\n            <unmanaged-short>ERROR_UNABLE_TO_INVENTORY_SLOT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.UnableToInventoryTransport\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_UNABLE_TO_INVENTORY_TRANSPORT']/*\"/>\t\n            <unmanaged>ERROR_UNABLE_TO_INVENTORY_TRANSPORT</unmanaged>\t\n            <unmanaged-short>ERROR_UNABLE_TO_INVENTORY_TRANSPORT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.TransportFull\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_TRANSPORT_FULL']/*\"/>\t\n            <unmanaged>ERROR_TRANSPORT_FULL</unmanaged>\t\n            <unmanaged-short>ERROR_TRANSPORT_FULL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ControllingIeport\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CONTROLLING_IEPORT']/*\"/>\t\n            <unmanaged>ERROR_CONTROLLING_IEPORT</unmanaged>\t\n            <unmanaged-short>ERROR_CONTROLLING_IEPORT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.UnableToEjectMountedMedia\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_UNABLE_TO_EJECT_MOUNTED_MEDIA']/*\"/>\t\n            <unmanaged>ERROR_UNABLE_TO_EJECT_MOUNTED_MEDIA</unmanaged>\t\n            <unmanaged-short>ERROR_UNABLE_TO_EJECT_MOUNTED_MEDIA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CleanerSlotSet\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLEANER_SLOT_SET']/*\"/>\t\n            <unmanaged>ERROR_CLEANER_SLOT_SET</unmanaged>\t\n            <unmanaged-short>ERROR_CLEANER_SLOT_SET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CleanerSlotNotSet\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLEANER_SLOT_NOT_SET']/*\"/>\t\n            <unmanaged>ERROR_CLEANER_SLOT_NOT_SET</unmanaged>\t\n            <unmanaged-short>ERROR_CLEANER_SLOT_NOT_SET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CleanerCartridgeSpent\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLEANER_CARTRIDGE_SPENT']/*\"/>\t\n            <unmanaged>ERROR_CLEANER_CARTRIDGE_SPENT</unmanaged>\t\n            <unmanaged-short>ERROR_CLEANER_CARTRIDGE_SPENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.UnexpectedOmid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_UNEXPECTED_OMID']/*\"/>\t\n            <unmanaged>ERROR_UNEXPECTED_OMID</unmanaged>\t\n            <unmanaged-short>ERROR_UNEXPECTED_OMID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CantDeleteLastItem\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CANT_DELETE_LAST_ITEM']/*\"/>\t\n            <unmanaged>ERROR_CANT_DELETE_LAST_ITEM</unmanaged>\t\n            <unmanaged-short>ERROR_CANT_DELETE_LAST_ITEM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.MessageExceedsMaxSize\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_MESSAGE_EXCEEDS_MAX_SIZE']/*\"/>\t\n            <unmanaged>ERROR_MESSAGE_EXCEEDS_MAX_SIZE</unmanaged>\t\n            <unmanaged-short>ERROR_MESSAGE_EXCEEDS_MAX_SIZE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolumeContainsSysFiles\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLUME_CONTAINS_SYS_FILES']/*\"/>\t\n            <unmanaged>ERROR_VOLUME_CONTAINS_SYS_FILES</unmanaged>\t\n            <unmanaged-short>ERROR_VOLUME_CONTAINS_SYS_FILES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IndigenousType\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INDIGENOUS_TYPE']/*\"/>\t\n            <unmanaged>ERROR_INDIGENOUS_TYPE</unmanaged>\t\n            <unmanaged-short>ERROR_INDIGENOUS_TYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NoSupportingDrives\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NO_SUPPORTING_DRIVES']/*\"/>\t\n            <unmanaged>ERROR_NO_SUPPORTING_DRIVES</unmanaged>\t\n            <unmanaged-short>ERROR_NO_SUPPORTING_DRIVES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CleanerCartridgeInstalled\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLEANER_CARTRIDGE_INSTALLED']/*\"/>\t\n            <unmanaged>ERROR_CLEANER_CARTRIDGE_INSTALLED</unmanaged>\t\n            <unmanaged-short>ERROR_CLEANER_CARTRIDGE_INSTALLED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IeportFull\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IEPORT_FULL']/*\"/>\t\n            <unmanaged>ERROR_IEPORT_FULL</unmanaged>\t\n            <unmanaged-short>ERROR_IEPORT_FULL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.FileOffline\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_FILE_OFFLINE']/*\"/>\t\n            <unmanaged>ERROR_FILE_OFFLINE</unmanaged>\t\n            <unmanaged-short>ERROR_FILE_OFFLINE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.RemoteStorageNotActive\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_REMOTE_STORAGE_NOT_ACTIVE']/*\"/>\t\n            <unmanaged>ERROR_REMOTE_STORAGE_NOT_ACTIVE</unmanaged>\t\n            <unmanaged-short>ERROR_REMOTE_STORAGE_NOT_ACTIVE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.RemoteStorageMediaError\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_REMOTE_STORAGE_MEDIA_ERROR']/*\"/>\t\n            <unmanaged>ERROR_REMOTE_STORAGE_MEDIA_ERROR</unmanaged>\t\n            <unmanaged-short>ERROR_REMOTE_STORAGE_MEDIA_ERROR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NotAReparsePoint\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NOT_A_REPARSE_POINT']/*\"/>\t\n            <unmanaged>ERROR_NOT_A_REPARSE_POINT</unmanaged>\t\n            <unmanaged-short>ERROR_NOT_A_REPARSE_POINT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ReparseAttributeConflict\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_REPARSE_ATTRIBUTE_CONFLICT']/*\"/>\t\n            <unmanaged>ERROR_REPARSE_ATTRIBUTE_CONFLICT</unmanaged>\t\n            <unmanaged-short>ERROR_REPARSE_ATTRIBUTE_CONFLICT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidReparseData\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_REPARSE_DATA']/*\"/>\t\n            <unmanaged>ERROR_INVALID_REPARSE_DATA</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_REPARSE_DATA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ReparseTagInvalid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_REPARSE_TAG_INVALID']/*\"/>\t\n            <unmanaged>ERROR_REPARSE_TAG_INVALID</unmanaged>\t\n            <unmanaged-short>ERROR_REPARSE_TAG_INVALID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ReparseTagMismatch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_REPARSE_TAG_MISMATCH']/*\"/>\t\n            <unmanaged>ERROR_REPARSE_TAG_MISMATCH</unmanaged>\t\n            <unmanaged-short>ERROR_REPARSE_TAG_MISMATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolumeNotSisEnabled\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLUME_NOT_SIS_ENABLED']/*\"/>\t\n            <unmanaged>ERROR_VOLUME_NOT_SIS_ENABLED</unmanaged>\t\n            <unmanaged-short>ERROR_VOLUME_NOT_SIS_ENABLED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DependentResourceExists\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DEPENDENT_RESOURCE_EXISTS']/*\"/>\t\n            <unmanaged>ERROR_DEPENDENT_RESOURCE_EXISTS</unmanaged>\t\n            <unmanaged-short>ERROR_DEPENDENT_RESOURCE_EXISTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DependencyNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DEPENDENCY_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_DEPENDENCY_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_DEPENDENCY_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DependencyAlreadyExists\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DEPENDENCY_ALREADY_EXISTS']/*\"/>\t\n            <unmanaged>ERROR_DEPENDENCY_ALREADY_EXISTS</unmanaged>\t\n            <unmanaged-short>ERROR_DEPENDENCY_ALREADY_EXISTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ResourceNotOnline\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_RESOURCE_NOT_ONLINE']/*\"/>\t\n            <unmanaged>ERROR_RESOURCE_NOT_ONLINE</unmanaged>\t\n            <unmanaged-short>ERROR_RESOURCE_NOT_ONLINE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.HostNodeNotAvailable\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_HOST_NODE_NOT_AVAILABLE']/*\"/>\t\n            <unmanaged>ERROR_HOST_NODE_NOT_AVAILABLE</unmanaged>\t\n            <unmanaged-short>ERROR_HOST_NODE_NOT_AVAILABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ResourceNotAvailable\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_RESOURCE_NOT_AVAILABLE']/*\"/>\t\n            <unmanaged>ERROR_RESOURCE_NOT_AVAILABLE</unmanaged>\t\n            <unmanaged-short>ERROR_RESOURCE_NOT_AVAILABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ResourceNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_RESOURCE_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_RESOURCE_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_RESOURCE_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ShutdownCluster\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SHUTDOWN_CLUSTER']/*\"/>\t\n            <unmanaged>ERROR_SHUTDOWN_CLUSTER</unmanaged>\t\n            <unmanaged-short>ERROR_SHUTDOWN_CLUSTER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CantEvictActiveNode\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CANT_EVICT_ACTIVE_NODE']/*\"/>\t\n            <unmanaged>ERROR_CANT_EVICT_ACTIVE_NODE</unmanaged>\t\n            <unmanaged-short>ERROR_CANT_EVICT_ACTIVE_NODE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ObjectAlreadyExists\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_OBJECT_ALREADY_EXISTS']/*\"/>\t\n            <unmanaged>ERROR_OBJECT_ALREADY_EXISTS</unmanaged>\t\n            <unmanaged-short>ERROR_OBJECT_ALREADY_EXISTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ObjectInList\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_OBJECT_IN_LIST']/*\"/>\t\n            <unmanaged>ERROR_OBJECT_IN_LIST</unmanaged>\t\n            <unmanaged-short>ERROR_OBJECT_IN_LIST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GroupNotAvailable\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GROUP_NOT_AVAILABLE']/*\"/>\t\n            <unmanaged>ERROR_GROUP_NOT_AVAILABLE</unmanaged>\t\n            <unmanaged-short>ERROR_GROUP_NOT_AVAILABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GroupNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GROUP_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_GROUP_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_GROUP_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GroupNotOnline\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GROUP_NOT_ONLINE']/*\"/>\t\n            <unmanaged>ERROR_GROUP_NOT_ONLINE</unmanaged>\t\n            <unmanaged-short>ERROR_GROUP_NOT_ONLINE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.HostNodeNotResourceOwner\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_HOST_NODE_NOT_RESOURCE_OWNER']/*\"/>\t\n            <unmanaged>ERROR_HOST_NODE_NOT_RESOURCE_OWNER</unmanaged>\t\n            <unmanaged-short>ERROR_HOST_NODE_NOT_RESOURCE_OWNER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.HostNodeNotGroupOwner\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_HOST_NODE_NOT_GROUP_OWNER']/*\"/>\t\n            <unmanaged>ERROR_HOST_NODE_NOT_GROUP_OWNER</unmanaged>\t\n            <unmanaged-short>ERROR_HOST_NODE_NOT_GROUP_OWNER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ResmonCreateFailed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_RESMON_CREATE_FAILED']/*\"/>\t\n            <unmanaged>ERROR_RESMON_CREATE_FAILED</unmanaged>\t\n            <unmanaged-short>ERROR_RESMON_CREATE_FAILED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ResmonOnlineFailed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_RESMON_ONLINE_FAILED']/*\"/>\t\n            <unmanaged>ERROR_RESMON_ONLINE_FAILED</unmanaged>\t\n            <unmanaged-short>ERROR_RESMON_ONLINE_FAILED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ResourceOnline\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_RESOURCE_ONLINE']/*\"/>\t\n            <unmanaged>ERROR_RESOURCE_ONLINE</unmanaged>\t\n            <unmanaged-short>ERROR_RESOURCE_ONLINE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.QuorumResource\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_QUORUM_RESOURCE']/*\"/>\t\n            <unmanaged>ERROR_QUORUM_RESOURCE</unmanaged>\t\n            <unmanaged-short>ERROR_QUORUM_RESOURCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NotQuorumCapable\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NOT_QUORUM_CAPABLE']/*\"/>\t\n            <unmanaged>ERROR_NOT_QUORUM_CAPABLE</unmanaged>\t\n            <unmanaged-short>ERROR_NOT_QUORUM_CAPABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterShuttingDown\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_SHUTTING_DOWN']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_SHUTTING_DOWN</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_SHUTTING_DOWN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidState\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_STATE']/*\"/>\t\n            <unmanaged>ERROR_INVALID_STATE</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_STATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ResourcePropertiesStored\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_RESOURCE_PROPERTIES_STORED']/*\"/>\t\n            <unmanaged>ERROR_RESOURCE_PROPERTIES_STORED</unmanaged>\t\n            <unmanaged-short>ERROR_RESOURCE_PROPERTIES_STORED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NotQuorumClass\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NOT_QUORUM_CLASS']/*\"/>\t\n            <unmanaged>ERROR_NOT_QUORUM_CLASS</unmanaged>\t\n            <unmanaged-short>ERROR_NOT_QUORUM_CLASS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CoreResource\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CORE_RESOURCE']/*\"/>\t\n            <unmanaged>ERROR_CORE_RESOURCE</unmanaged>\t\n            <unmanaged-short>ERROR_CORE_RESOURCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.QuorumResourceOnlineFailed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_QUORUM_RESOURCE_ONLINE_FAILED']/*\"/>\t\n            <unmanaged>ERROR_QUORUM_RESOURCE_ONLINE_FAILED</unmanaged>\t\n            <unmanaged-short>ERROR_QUORUM_RESOURCE_ONLINE_FAILED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.QuorumlogOpenFailed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_QUORUMLOG_OPEN_FAILED']/*\"/>\t\n            <unmanaged>ERROR_QUORUMLOG_OPEN_FAILED</unmanaged>\t\n            <unmanaged-short>ERROR_QUORUMLOG_OPEN_FAILED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterlogCorrupt\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTERLOG_CORRUPT']/*\"/>\t\n            <unmanaged>ERROR_CLUSTERLOG_CORRUPT</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTERLOG_CORRUPT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterlogRecordExceedsMaxsize\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTERLOG_RECORD_EXCEEDS_MAXSIZE']/*\"/>\t\n            <unmanaged>ERROR_CLUSTERLOG_RECORD_EXCEEDS_MAXSIZE</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTERLOG_RECORD_EXCEEDS_MAXSIZE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterlogExceedsMaxsize\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTERLOG_EXCEEDS_MAXSIZE']/*\"/>\t\n            <unmanaged>ERROR_CLUSTERLOG_EXCEEDS_MAXSIZE</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTERLOG_EXCEEDS_MAXSIZE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterlogChkpointNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTERLOG_CHKPOINT_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_CLUSTERLOG_CHKPOINT_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTERLOG_CHKPOINT_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterlogNotEnoughSpace\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTERLOG_NOT_ENOUGH_SPACE']/*\"/>\t\n            <unmanaged>ERROR_CLUSTERLOG_NOT_ENOUGH_SPACE</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTERLOG_NOT_ENOUGH_SPACE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.QuorumOwnerAlive\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_QUORUM_OWNER_ALIVE']/*\"/>\t\n            <unmanaged>ERROR_QUORUM_OWNER_ALIVE</unmanaged>\t\n            <unmanaged-short>ERROR_QUORUM_OWNER_ALIVE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NetworkNotAvailable\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NETWORK_NOT_AVAILABLE']/*\"/>\t\n            <unmanaged>ERROR_NETWORK_NOT_AVAILABLE</unmanaged>\t\n            <unmanaged-short>ERROR_NETWORK_NOT_AVAILABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NodeNotAvailable\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NODE_NOT_AVAILABLE']/*\"/>\t\n            <unmanaged>ERROR_NODE_NOT_AVAILABLE</unmanaged>\t\n            <unmanaged-short>ERROR_NODE_NOT_AVAILABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.AllNodesNotAvailable\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_ALL_NODES_NOT_AVAILABLE']/*\"/>\t\n            <unmanaged>ERROR_ALL_NODES_NOT_AVAILABLE</unmanaged>\t\n            <unmanaged-short>ERROR_ALL_NODES_NOT_AVAILABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ResourceFailed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_RESOURCE_FAILED']/*\"/>\t\n            <unmanaged>ERROR_RESOURCE_FAILED</unmanaged>\t\n            <unmanaged-short>ERROR_RESOURCE_FAILED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterInvalidNode\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_INVALID_NODE']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_INVALID_NODE</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_INVALID_NODE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterNodeExists\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_NODE_EXISTS']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_NODE_EXISTS</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_NODE_EXISTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterJoinInProgress\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_JOIN_IN_PROGRESS']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_JOIN_IN_PROGRESS</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_JOIN_IN_PROGRESS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterNodeNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_NODE_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_NODE_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_NODE_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterLocalNodeNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_LOCAL_NODE_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_LOCAL_NODE_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_LOCAL_NODE_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterNetworkExists\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_NETWORK_EXISTS']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_NETWORK_EXISTS</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_NETWORK_EXISTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterNetworkNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_NETWORK_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_NETWORK_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_NETWORK_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterNetinterfaceExists\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_NETINTERFACE_EXISTS']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_NETINTERFACE_EXISTS</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_NETINTERFACE_EXISTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterNetinterfaceNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_NETINTERFACE_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_NETINTERFACE_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_NETINTERFACE_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterInvalidRequest\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_INVALID_REQUEST']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_INVALID_REQUEST</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_INVALID_REQUEST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterInvalidNetworkProvider\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_INVALID_NETWORK_PROVIDER']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_INVALID_NETWORK_PROVIDER</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_INVALID_NETWORK_PROVIDER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterNodeDown\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_NODE_DOWN']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_NODE_DOWN</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_NODE_DOWN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterNodeUnreachable\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_NODE_UNREACHABLE']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_NODE_UNREACHABLE</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_NODE_UNREACHABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterNodeNotMember\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_NODE_NOT_MEMBER']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_NODE_NOT_MEMBER</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_NODE_NOT_MEMBER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterJoinNotInProgress\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_JOIN_NOT_IN_PROGRESS']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_JOIN_NOT_IN_PROGRESS</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_JOIN_NOT_IN_PROGRESS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterInvalidNetwork\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_INVALID_NETWORK']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_INVALID_NETWORK</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_INVALID_NETWORK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterNodeUp\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_NODE_UP']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_NODE_UP</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_NODE_UP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterIpaddrInUse\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_IPADDR_IN_USE']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_IPADDR_IN_USE</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_IPADDR_IN_USE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterNodeNotPaused\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_NODE_NOT_PAUSED']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_NODE_NOT_PAUSED</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_NODE_NOT_PAUSED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterNoSecurityContext\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_NO_SECURITY_CONTEXT']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_NO_SECURITY_CONTEXT</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_NO_SECURITY_CONTEXT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterNetworkNotInternal\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_NETWORK_NOT_INTERNAL']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_NETWORK_NOT_INTERNAL</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_NETWORK_NOT_INTERNAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterNodeAlreadyUp\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_NODE_ALREADY_UP']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_NODE_ALREADY_UP</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_NODE_ALREADY_UP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterNodeAlreadyDown\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_NODE_ALREADY_DOWN']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_NODE_ALREADY_DOWN</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_NODE_ALREADY_DOWN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterNetworkAlreadyOnline\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_NETWORK_ALREADY_ONLINE']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_NETWORK_ALREADY_ONLINE</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_NETWORK_ALREADY_ONLINE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterNetworkAlreadyOffline\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_NETWORK_ALREADY_OFFLINE']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_NETWORK_ALREADY_OFFLINE</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_NETWORK_ALREADY_OFFLINE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterNodeAlreadyMember\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_NODE_ALREADY_MEMBER']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_NODE_ALREADY_MEMBER</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_NODE_ALREADY_MEMBER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterLastInternalNetwork\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_LAST_INTERNAL_NETWORK']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_LAST_INTERNAL_NETWORK</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_LAST_INTERNAL_NETWORK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterNetworkHasDependents\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_NETWORK_HAS_DEPENDENTS']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_NETWORK_HAS_DEPENDENTS</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_NETWORK_HAS_DEPENDENTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidOperationOnQuorum\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_OPERATION_ON_QUORUM']/*\"/>\t\n            <unmanaged>ERROR_INVALID_OPERATION_ON_QUORUM</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_OPERATION_ON_QUORUM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DependencyNotAllowed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DEPENDENCY_NOT_ALLOWED']/*\"/>\t\n            <unmanaged>ERROR_DEPENDENCY_NOT_ALLOWED</unmanaged>\t\n            <unmanaged-short>ERROR_DEPENDENCY_NOT_ALLOWED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterNodePaused\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_NODE_PAUSED']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_NODE_PAUSED</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_NODE_PAUSED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NodeCantHostResource\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NODE_CANT_HOST_RESOURCE']/*\"/>\t\n            <unmanaged>ERROR_NODE_CANT_HOST_RESOURCE</unmanaged>\t\n            <unmanaged-short>ERROR_NODE_CANT_HOST_RESOURCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterNodeNotReady\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_NODE_NOT_READY']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_NODE_NOT_READY</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_NODE_NOT_READY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterNodeShuttingDown\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_NODE_SHUTTING_DOWN']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_NODE_SHUTTING_DOWN</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_NODE_SHUTTING_DOWN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterJoinAborted\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_JOIN_ABORTED']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_JOIN_ABORTED</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_JOIN_ABORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterIncompatibleVersions\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_INCOMPATIBLE_VERSIONS']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_INCOMPATIBLE_VERSIONS</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_INCOMPATIBLE_VERSIONS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterMaxnumOfResourcesExceeded\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_MAXNUM_OF_RESOURCES_EXCEEDED']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_MAXNUM_OF_RESOURCES_EXCEEDED</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_MAXNUM_OF_RESOURCES_EXCEEDED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterSystemConfigChanged\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_SYSTEM_CONFIG_CHANGED']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_SYSTEM_CONFIG_CHANGED</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_SYSTEM_CONFIG_CHANGED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterResourceTypeNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_RESOURCE_TYPE_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_RESOURCE_TYPE_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_RESOURCE_TYPE_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterRestypeNotSupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_RESTYPE_NOT_SUPPORTED']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_RESTYPE_NOT_SUPPORTED</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_RESTYPE_NOT_SUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterResnameNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_RESNAME_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_RESNAME_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_RESNAME_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterNoRpcPackagesRegistered\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_NO_RPC_PACKAGES_REGISTERED']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_NO_RPC_PACKAGES_REGISTERED</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_NO_RPC_PACKAGES_REGISTERED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterOwnerNotInPreflist\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_OWNER_NOT_IN_PREFLIST']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_OWNER_NOT_IN_PREFLIST</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_OWNER_NOT_IN_PREFLIST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterDatabaseSeqmismatch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_DATABASE_SEQMISMATCH']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_DATABASE_SEQMISMATCH</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_DATABASE_SEQMISMATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ResmonInvalidState\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_RESMON_INVALID_STATE']/*\"/>\t\n            <unmanaged>ERROR_RESMON_INVALID_STATE</unmanaged>\t\n            <unmanaged-short>ERROR_RESMON_INVALID_STATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterGumNotLocker\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_GUM_NOT_LOCKER']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_GUM_NOT_LOCKER</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_GUM_NOT_LOCKER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.QuorumDiskNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_QUORUM_DISK_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_QUORUM_DISK_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_QUORUM_DISK_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DatabaseBackupCorrupt\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DATABASE_BACKUP_CORRUPT']/*\"/>\t\n            <unmanaged>ERROR_DATABASE_BACKUP_CORRUPT</unmanaged>\t\n            <unmanaged-short>ERROR_DATABASE_BACKUP_CORRUPT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterNodeAlreadyHasDfsRoot\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_NODE_ALREADY_HAS_DFS_ROOT']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_NODE_ALREADY_HAS_DFS_ROOT</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_NODE_ALREADY_HAS_DFS_ROOT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ResourcePropertyUnchangeable\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_RESOURCE_PROPERTY_UNCHANGEABLE']/*\"/>\t\n            <unmanaged>ERROR_RESOURCE_PROPERTY_UNCHANGEABLE</unmanaged>\t\n            <unmanaged-short>ERROR_RESOURCE_PROPERTY_UNCHANGEABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterMembershipInvalidState\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_MEMBERSHIP_INVALID_STATE']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_MEMBERSHIP_INVALID_STATE</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_MEMBERSHIP_INVALID_STATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterQuorumlogNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_QUORUMLOG_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_QUORUMLOG_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_QUORUMLOG_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterMembershipHalt\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_MEMBERSHIP_HALT']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_MEMBERSHIP_HALT</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_MEMBERSHIP_HALT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterInstanceIdMismatch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_INSTANCE_ID_MISMATCH']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_INSTANCE_ID_MISMATCH</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_INSTANCE_ID_MISMATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterNetworkNotFoundForIp\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_NETWORK_NOT_FOUND_FOR_IP']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_NETWORK_NOT_FOUND_FOR_IP</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_NETWORK_NOT_FOUND_FOR_IP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterPropertyDataTypeMismatch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_PROPERTY_DATA_TYPE_MISMATCH']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_PROPERTY_DATA_TYPE_MISMATCH</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_PROPERTY_DATA_TYPE_MISMATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterEvictWithoutCleanup\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_EVICT_WITHOUT_CLEANUP']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_EVICT_WITHOUT_CLEANUP</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_EVICT_WITHOUT_CLEANUP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterParameterMismatch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_PARAMETER_MISMATCH']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_PARAMETER_MISMATCH</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_PARAMETER_MISMATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NodeCannotBeClustered\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NODE_CANNOT_BE_CLUSTERED']/*\"/>\t\n            <unmanaged>ERROR_NODE_CANNOT_BE_CLUSTERED</unmanaged>\t\n            <unmanaged-short>ERROR_NODE_CANNOT_BE_CLUSTERED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterWrongOsVersion\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_WRONG_OS_VERSION']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_WRONG_OS_VERSION</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_WRONG_OS_VERSION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterCantCreateDupClusterName\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_CANT_CREATE_DUP_CLUSTER_NAME']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_CANT_CREATE_DUP_CLUSTER_NAME</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_CANT_CREATE_DUP_CLUSTER_NAME</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CluscfgAlreadyCommitted\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSCFG_ALREADY_COMMITTED']/*\"/>\t\n            <unmanaged>ERROR_CLUSCFG_ALREADY_COMMITTED</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSCFG_ALREADY_COMMITTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CluscfgRollbackFailed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSCFG_ROLLBACK_FAILED']/*\"/>\t\n            <unmanaged>ERROR_CLUSCFG_ROLLBACK_FAILED</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSCFG_ROLLBACK_FAILED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CluscfgSystemDiskDriveLetterConflict\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSCFG_SYSTEM_DISK_DRIVE_LETTER_CONFLICT']/*\"/>\t\n            <unmanaged>ERROR_CLUSCFG_SYSTEM_DISK_DRIVE_LETTER_CONFLICT</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSCFG_SYSTEM_DISK_DRIVE_LETTER_CONFLICT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterOldVersion\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_OLD_VERSION']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_OLD_VERSION</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_OLD_VERSION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterMismatchedComputerAcctName\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_MISMATCHED_COMPUTER_ACCT_NAME']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_MISMATCHED_COMPUTER_ACCT_NAME</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_MISMATCHED_COMPUTER_ACCT_NAME</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterNoNetAdapters\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_NO_NET_ADAPTERS']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_NO_NET_ADAPTERS</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_NO_NET_ADAPTERS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterPoisoned\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_POISONED']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_POISONED</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_POISONED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterGroupMoving\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_GROUP_MOVING']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_GROUP_MOVING</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_GROUP_MOVING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterResourceTypeBusy\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_RESOURCE_TYPE_BUSY']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_RESOURCE_TYPE_BUSY</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_RESOURCE_TYPE_BUSY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ResourceCallTimedOut\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_RESOURCE_CALL_TIMED_OUT']/*\"/>\t\n            <unmanaged>ERROR_RESOURCE_CALL_TIMED_OUT</unmanaged>\t\n            <unmanaged-short>ERROR_RESOURCE_CALL_TIMED_OUT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidClusterIpv6Address\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_CLUSTER_IPV6_ADDRESS']/*\"/>\t\n            <unmanaged>ERROR_INVALID_CLUSTER_IPV6_ADDRESS</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_CLUSTER_IPV6_ADDRESS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterInternalInvalidFunction\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_INTERNAL_INVALID_FUNCTION']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_INTERNAL_INVALID_FUNCTION</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_INTERNAL_INVALID_FUNCTION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterParameterOutOfBounds\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_PARAMETER_OUT_OF_BOUNDS']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_PARAMETER_OUT_OF_BOUNDS</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_PARAMETER_OUT_OF_BOUNDS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterPartialSend\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_PARTIAL_SEND']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_PARTIAL_SEND</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_PARTIAL_SEND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterRegistryInvalidFunction\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_REGISTRY_INVALID_FUNCTION']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_REGISTRY_INVALID_FUNCTION</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_REGISTRY_INVALID_FUNCTION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterInvalidStringTermination\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_INVALID_STRING_TERMINATION']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_INVALID_STRING_TERMINATION</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_INVALID_STRING_TERMINATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterInvalidStringFormat\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_INVALID_STRING_FORMAT']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_INVALID_STRING_FORMAT</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_INVALID_STRING_FORMAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterDatabaseTransactionInProgress\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_DATABASE_TRANSACTION_IN_PROGRESS']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_DATABASE_TRANSACTION_IN_PROGRESS</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_DATABASE_TRANSACTION_IN_PROGRESS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterDatabaseTransactionNotInProgress\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_DATABASE_TRANSACTION_NOT_IN_PROGRESS']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_DATABASE_TRANSACTION_NOT_IN_PROGRESS</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_DATABASE_TRANSACTION_NOT_IN_PROGRESS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterNullData\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_NULL_DATA']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_NULL_DATA</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_NULL_DATA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterPartialRead\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_PARTIAL_READ']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_PARTIAL_READ</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_PARTIAL_READ</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterPartialWrite\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_PARTIAL_WRITE']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_PARTIAL_WRITE</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_PARTIAL_WRITE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterCantDeserializeData\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_CANT_DESERIALIZE_DATA']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_CANT_DESERIALIZE_DATA</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_CANT_DESERIALIZE_DATA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DependentResourcePropertyConflict\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DEPENDENT_RESOURCE_PROPERTY_CONFLICT']/*\"/>\t\n            <unmanaged>ERROR_DEPENDENT_RESOURCE_PROPERTY_CONFLICT</unmanaged>\t\n            <unmanaged-short>ERROR_DEPENDENT_RESOURCE_PROPERTY_CONFLICT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterNoQuorum\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_NO_QUORUM']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_NO_QUORUM</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_NO_QUORUM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterInvalidIpv6Network\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_INVALID_IPV6_NETWORK']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_INVALID_IPV6_NETWORK</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_INVALID_IPV6_NETWORK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterInvalidIpv6TunnelNetwork\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_INVALID_IPV6_TUNNEL_NETWORK']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_INVALID_IPV6_TUNNEL_NETWORK</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_INVALID_IPV6_TUNNEL_NETWORK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.QuorumNotAllowedInThisGroup\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_QUORUM_NOT_ALLOWED_IN_THIS_GROUP']/*\"/>\t\n            <unmanaged>ERROR_QUORUM_NOT_ALLOWED_IN_THIS_GROUP</unmanaged>\t\n            <unmanaged-short>ERROR_QUORUM_NOT_ALLOWED_IN_THIS_GROUP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DependencyTreeTooComplex\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DEPENDENCY_TREE_TOO_COMPLEX']/*\"/>\t\n            <unmanaged>ERROR_DEPENDENCY_TREE_TOO_COMPLEX</unmanaged>\t\n            <unmanaged-short>ERROR_DEPENDENCY_TREE_TOO_COMPLEX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ExceptionInResourceCall\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_EXCEPTION_IN_RESOURCE_CALL']/*\"/>\t\n            <unmanaged>ERROR_EXCEPTION_IN_RESOURCE_CALL</unmanaged>\t\n            <unmanaged-short>ERROR_EXCEPTION_IN_RESOURCE_CALL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterRhsFailedInitialization\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_RHS_FAILED_INITIALIZATION']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_RHS_FAILED_INITIALIZATION</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_RHS_FAILED_INITIALIZATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterNotInstalled\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_NOT_INSTALLED']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_NOT_INSTALLED</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_NOT_INSTALLED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterResourcesMustBeOnlineOnTheSameNode\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_RESOURCES_MUST_BE_ONLINE_ON_THE_SAME_NODE']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_RESOURCES_MUST_BE_ONLINE_ON_THE_SAME_NODE</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_RESOURCES_MUST_BE_ONLINE_ON_THE_SAME_NODE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterMaxNodesInCluster\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_MAX_NODES_IN_CLUSTER']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_MAX_NODES_IN_CLUSTER</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_MAX_NODES_IN_CLUSTER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterTooManyNodes\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_TOO_MANY_NODES']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_TOO_MANY_NODES</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_TOO_MANY_NODES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterObjectAlreadyUsed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_OBJECT_ALREADY_USED']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_OBJECT_ALREADY_USED</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_OBJECT_ALREADY_USED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NoncoreGroupsFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NONCORE_GROUPS_FOUND']/*\"/>\t\n            <unmanaged>ERROR_NONCORE_GROUPS_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_NONCORE_GROUPS_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.FileShareResourceConflict\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_FILE_SHARE_RESOURCE_CONFLICT']/*\"/>\t\n            <unmanaged>ERROR_FILE_SHARE_RESOURCE_CONFLICT</unmanaged>\t\n            <unmanaged-short>ERROR_FILE_SHARE_RESOURCE_CONFLICT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterEvictInvalidRequest\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_EVICT_INVALID_REQUEST']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_EVICT_INVALID_REQUEST</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_EVICT_INVALID_REQUEST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterSingletonResource\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_SINGLETON_RESOURCE']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_SINGLETON_RESOURCE</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_SINGLETON_RESOURCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterGroupSingletonResource\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_GROUP_SINGLETON_RESOURCE']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_GROUP_SINGLETON_RESOURCE</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_GROUP_SINGLETON_RESOURCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterResourceProviderFailed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_RESOURCE_PROVIDER_FAILED']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_RESOURCE_PROVIDER_FAILED</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_RESOURCE_PROVIDER_FAILED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterResourceConfigurationError\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_RESOURCE_CONFIGURATION_ERROR']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_RESOURCE_CONFIGURATION_ERROR</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_RESOURCE_CONFIGURATION_ERROR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterGroupBusy\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_GROUP_BUSY']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_GROUP_BUSY</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_GROUP_BUSY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterNotSharedVolume\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_NOT_SHARED_VOLUME']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_NOT_SHARED_VOLUME</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_NOT_SHARED_VOLUME</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterInvalidSecurityDescriptor\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_INVALID_SECURITY_DESCRIPTOR']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_INVALID_SECURITY_DESCRIPTOR</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_INVALID_SECURITY_DESCRIPTOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterSharedVolumesInUse\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_SHARED_VOLUMES_IN_USE']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_SHARED_VOLUMES_IN_USE</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_SHARED_VOLUMES_IN_USE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterUseSharedVolumesApi\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_USE_SHARED_VOLUMES_API']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_USE_SHARED_VOLUMES_API</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_USE_SHARED_VOLUMES_API</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterBackupInProgress\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_BACKUP_IN_PROGRESS']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_BACKUP_IN_PROGRESS</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_BACKUP_IN_PROGRESS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NonCsvPath\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NON_CSV_PATH']/*\"/>\t\n            <unmanaged>ERROR_NON_CSV_PATH</unmanaged>\t\n            <unmanaged-short>ERROR_NON_CSV_PATH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CsvVolumeNotLocal\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CSV_VOLUME_NOT_LOCAL']/*\"/>\t\n            <unmanaged>ERROR_CSV_VOLUME_NOT_LOCAL</unmanaged>\t\n            <unmanaged-short>ERROR_CSV_VOLUME_NOT_LOCAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ClusterWatchdogTerminating\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CLUSTER_WATCHDOG_TERMINATING']/*\"/>\t\n            <unmanaged>ERROR_CLUSTER_WATCHDOG_TERMINATING</unmanaged>\t\n            <unmanaged-short>ERROR_CLUSTER_WATCHDOG_TERMINATING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.EncryptionFailed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_ENCRYPTION_FAILED']/*\"/>\t\n            <unmanaged>ERROR_ENCRYPTION_FAILED</unmanaged>\t\n            <unmanaged-short>ERROR_ENCRYPTION_FAILED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DecryptionFailed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DECRYPTION_FAILED']/*\"/>\t\n            <unmanaged>ERROR_DECRYPTION_FAILED</unmanaged>\t\n            <unmanaged-short>ERROR_DECRYPTION_FAILED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.FileEncrypted\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_FILE_ENCRYPTED']/*\"/>\t\n            <unmanaged>ERROR_FILE_ENCRYPTED</unmanaged>\t\n            <unmanaged-short>ERROR_FILE_ENCRYPTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NoRecoveryPolicy\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NO_RECOVERY_POLICY']/*\"/>\t\n            <unmanaged>ERROR_NO_RECOVERY_POLICY</unmanaged>\t\n            <unmanaged-short>ERROR_NO_RECOVERY_POLICY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NoEfs\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NO_EFS']/*\"/>\t\n            <unmanaged>ERROR_NO_EFS</unmanaged>\t\n            <unmanaged-short>ERROR_NO_EFS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.WrongEfs\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_WRONG_EFS']/*\"/>\t\n            <unmanaged>ERROR_WRONG_EFS</unmanaged>\t\n            <unmanaged-short>ERROR_WRONG_EFS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NoUserKeys\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NO_USER_KEYS']/*\"/>\t\n            <unmanaged>ERROR_NO_USER_KEYS</unmanaged>\t\n            <unmanaged-short>ERROR_NO_USER_KEYS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.FileNotEncrypted\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_FILE_NOT_ENCRYPTED']/*\"/>\t\n            <unmanaged>ERROR_FILE_NOT_ENCRYPTED</unmanaged>\t\n            <unmanaged-short>ERROR_FILE_NOT_ENCRYPTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NotExportFormat\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NOT_EXPORT_FORMAT']/*\"/>\t\n            <unmanaged>ERROR_NOT_EXPORT_FORMAT</unmanaged>\t\n            <unmanaged-short>ERROR_NOT_EXPORT_FORMAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.FileReadOnly\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_FILE_READ_ONLY']/*\"/>\t\n            <unmanaged>ERROR_FILE_READ_ONLY</unmanaged>\t\n            <unmanaged-short>ERROR_FILE_READ_ONLY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DirEfsDisallowed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DIR_EFS_DISALLOWED']/*\"/>\t\n            <unmanaged>ERROR_DIR_EFS_DISALLOWED</unmanaged>\t\n            <unmanaged-short>ERROR_DIR_EFS_DISALLOWED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.EfsServerNotTrusted\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_EFS_SERVER_NOT_TRUSTED']/*\"/>\t\n            <unmanaged>ERROR_EFS_SERVER_NOT_TRUSTED</unmanaged>\t\n            <unmanaged-short>ERROR_EFS_SERVER_NOT_TRUSTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.BadRecoveryPolicy\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_BAD_RECOVERY_POLICY']/*\"/>\t\n            <unmanaged>ERROR_BAD_RECOVERY_POLICY</unmanaged>\t\n            <unmanaged-short>ERROR_BAD_RECOVERY_POLICY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.EfsAlgBlobTooBig\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_EFS_ALG_BLOB_TOO_BIG']/*\"/>\t\n            <unmanaged>ERROR_EFS_ALG_BLOB_TOO_BIG</unmanaged>\t\n            <unmanaged-short>ERROR_EFS_ALG_BLOB_TOO_BIG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolumeNotSupportEfs\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLUME_NOT_SUPPORT_EFS']/*\"/>\t\n            <unmanaged>ERROR_VOLUME_NOT_SUPPORT_EFS</unmanaged>\t\n            <unmanaged-short>ERROR_VOLUME_NOT_SUPPORT_EFS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.EfsDisabled\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_EFS_DISABLED']/*\"/>\t\n            <unmanaged>ERROR_EFS_DISABLED</unmanaged>\t\n            <unmanaged-short>ERROR_EFS_DISABLED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.EfsVersionNotSupport\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_EFS_VERSION_NOT_SUPPORT']/*\"/>\t\n            <unmanaged>ERROR_EFS_VERSION_NOT_SUPPORT</unmanaged>\t\n            <unmanaged-short>ERROR_EFS_VERSION_NOT_SUPPORT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CsEncryptionInvalidServerResponse\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CS_ENCRYPTION_INVALID_SERVER_RESPONSE']/*\"/>\t\n            <unmanaged>ERROR_CS_ENCRYPTION_INVALID_SERVER_RESPONSE</unmanaged>\t\n            <unmanaged-short>ERROR_CS_ENCRYPTION_INVALID_SERVER_RESPONSE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CsEncryptionUnsupportedServer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CS_ENCRYPTION_UNSUPPORTED_SERVER']/*\"/>\t\n            <unmanaged>ERROR_CS_ENCRYPTION_UNSUPPORTED_SERVER</unmanaged>\t\n            <unmanaged-short>ERROR_CS_ENCRYPTION_UNSUPPORTED_SERVER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CsEncryptionExistingEncryptedFile\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CS_ENCRYPTION_EXISTING_ENCRYPTED_FILE']/*\"/>\t\n            <unmanaged>ERROR_CS_ENCRYPTION_EXISTING_ENCRYPTED_FILE</unmanaged>\t\n            <unmanaged-short>ERROR_CS_ENCRYPTION_EXISTING_ENCRYPTED_FILE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CsEncryptionNewEncryptedFile\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CS_ENCRYPTION_NEW_ENCRYPTED_FILE']/*\"/>\t\n            <unmanaged>ERROR_CS_ENCRYPTION_NEW_ENCRYPTED_FILE</unmanaged>\t\n            <unmanaged-short>ERROR_CS_ENCRYPTION_NEW_ENCRYPTED_FILE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CsEncryptionFileNotCse\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CS_ENCRYPTION_FILE_NOT_CSE']/*\"/>\t\n            <unmanaged>ERROR_CS_ENCRYPTION_FILE_NOT_CSE</unmanaged>\t\n            <unmanaged-short>ERROR_CS_ENCRYPTION_FILE_NOT_CSE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.EncryptionPolicyDeniesOperation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_ENCRYPTION_POLICY_DENIES_OPERATION']/*\"/>\t\n            <unmanaged>ERROR_ENCRYPTION_POLICY_DENIES_OPERATION</unmanaged>\t\n            <unmanaged-short>ERROR_ENCRYPTION_POLICY_DENIES_OPERATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NoBrowserServersFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NO_BROWSER_SERVERS_FOUND']/*\"/>\t\n            <unmanaged>ERROR_NO_BROWSER_SERVERS_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_NO_BROWSER_SERVERS_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.LogSectorInvalid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_LOG_SECTOR_INVALID']/*\"/>\t\n            <unmanaged>ERROR_LOG_SECTOR_INVALID</unmanaged>\t\n            <unmanaged-short>ERROR_LOG_SECTOR_INVALID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.LogSectorParityInvalid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_LOG_SECTOR_PARITY_INVALID']/*\"/>\t\n            <unmanaged>ERROR_LOG_SECTOR_PARITY_INVALID</unmanaged>\t\n            <unmanaged-short>ERROR_LOG_SECTOR_PARITY_INVALID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.LogSectorRemapped\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_LOG_SECTOR_REMAPPED']/*\"/>\t\n            <unmanaged>ERROR_LOG_SECTOR_REMAPPED</unmanaged>\t\n            <unmanaged-short>ERROR_LOG_SECTOR_REMAPPED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.LogBlockIncomplete\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_LOG_BLOCK_INCOMPLETE']/*\"/>\t\n            <unmanaged>ERROR_LOG_BLOCK_INCOMPLETE</unmanaged>\t\n            <unmanaged-short>ERROR_LOG_BLOCK_INCOMPLETE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.LogInvalidRange\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_LOG_INVALID_RANGE']/*\"/>\t\n            <unmanaged>ERROR_LOG_INVALID_RANGE</unmanaged>\t\n            <unmanaged-short>ERROR_LOG_INVALID_RANGE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.LogBlocksExhausted\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_LOG_BLOCKS_EXHAUSTED']/*\"/>\t\n            <unmanaged>ERROR_LOG_BLOCKS_EXHAUSTED</unmanaged>\t\n            <unmanaged-short>ERROR_LOG_BLOCKS_EXHAUSTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.LogReadContextInvalid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_LOG_READ_CONTEXT_INVALID']/*\"/>\t\n            <unmanaged>ERROR_LOG_READ_CONTEXT_INVALID</unmanaged>\t\n            <unmanaged-short>ERROR_LOG_READ_CONTEXT_INVALID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.LogRestartInvalid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_LOG_RESTART_INVALID']/*\"/>\t\n            <unmanaged>ERROR_LOG_RESTART_INVALID</unmanaged>\t\n            <unmanaged-short>ERROR_LOG_RESTART_INVALID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.LogBlockVersion\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_LOG_BLOCK_VERSION']/*\"/>\t\n            <unmanaged>ERROR_LOG_BLOCK_VERSION</unmanaged>\t\n            <unmanaged-short>ERROR_LOG_BLOCK_VERSION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.LogBlockInvalid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_LOG_BLOCK_INVALID']/*\"/>\t\n            <unmanaged>ERROR_LOG_BLOCK_INVALID</unmanaged>\t\n            <unmanaged-short>ERROR_LOG_BLOCK_INVALID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.LogReadModeInvalid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_LOG_READ_MODE_INVALID']/*\"/>\t\n            <unmanaged>ERROR_LOG_READ_MODE_INVALID</unmanaged>\t\n            <unmanaged-short>ERROR_LOG_READ_MODE_INVALID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.LogNoRestart\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_LOG_NO_RESTART']/*\"/>\t\n            <unmanaged>ERROR_LOG_NO_RESTART</unmanaged>\t\n            <unmanaged-short>ERROR_LOG_NO_RESTART</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.LogMetadataCorrupt\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_LOG_METADATA_CORRUPT']/*\"/>\t\n            <unmanaged>ERROR_LOG_METADATA_CORRUPT</unmanaged>\t\n            <unmanaged-short>ERROR_LOG_METADATA_CORRUPT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.LogMetadataInvalid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_LOG_METADATA_INVALID']/*\"/>\t\n            <unmanaged>ERROR_LOG_METADATA_INVALID</unmanaged>\t\n            <unmanaged-short>ERROR_LOG_METADATA_INVALID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.LogMetadataInconsistent\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_LOG_METADATA_INCONSISTENT']/*\"/>\t\n            <unmanaged>ERROR_LOG_METADATA_INCONSISTENT</unmanaged>\t\n            <unmanaged-short>ERROR_LOG_METADATA_INCONSISTENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.LogReservationInvalid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_LOG_RESERVATION_INVALID']/*\"/>\t\n            <unmanaged>ERROR_LOG_RESERVATION_INVALID</unmanaged>\t\n            <unmanaged-short>ERROR_LOG_RESERVATION_INVALID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.LogCantDelete\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_LOG_CANT_DELETE']/*\"/>\t\n            <unmanaged>ERROR_LOG_CANT_DELETE</unmanaged>\t\n            <unmanaged-short>ERROR_LOG_CANT_DELETE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.LogContainerLimitExceeded\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_LOG_CONTAINER_LIMIT_EXCEEDED']/*\"/>\t\n            <unmanaged>ERROR_LOG_CONTAINER_LIMIT_EXCEEDED</unmanaged>\t\n            <unmanaged-short>ERROR_LOG_CONTAINER_LIMIT_EXCEEDED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.LogStartOfLog\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_LOG_START_OF_LOG']/*\"/>\t\n            <unmanaged>ERROR_LOG_START_OF_LOG</unmanaged>\t\n            <unmanaged-short>ERROR_LOG_START_OF_LOG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.LogPolicyAlreadyInstalled\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_LOG_POLICY_ALREADY_INSTALLED']/*\"/>\t\n            <unmanaged>ERROR_LOG_POLICY_ALREADY_INSTALLED</unmanaged>\t\n            <unmanaged-short>ERROR_LOG_POLICY_ALREADY_INSTALLED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.LogPolicyNotInstalled\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_LOG_POLICY_NOT_INSTALLED']/*\"/>\t\n            <unmanaged>ERROR_LOG_POLICY_NOT_INSTALLED</unmanaged>\t\n            <unmanaged-short>ERROR_LOG_POLICY_NOT_INSTALLED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.LogPolicyInvalid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_LOG_POLICY_INVALID']/*\"/>\t\n            <unmanaged>ERROR_LOG_POLICY_INVALID</unmanaged>\t\n            <unmanaged-short>ERROR_LOG_POLICY_INVALID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.LogPolicyConflict\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_LOG_POLICY_CONFLICT']/*\"/>\t\n            <unmanaged>ERROR_LOG_POLICY_CONFLICT</unmanaged>\t\n            <unmanaged-short>ERROR_LOG_POLICY_CONFLICT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.LogPinnedArchiveTail\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_LOG_PINNED_ARCHIVE_TAIL']/*\"/>\t\n            <unmanaged>ERROR_LOG_PINNED_ARCHIVE_TAIL</unmanaged>\t\n            <unmanaged-short>ERROR_LOG_PINNED_ARCHIVE_TAIL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.LogRecordNonexistent\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_LOG_RECORD_NONEXISTENT']/*\"/>\t\n            <unmanaged>ERROR_LOG_RECORD_NONEXISTENT</unmanaged>\t\n            <unmanaged-short>ERROR_LOG_RECORD_NONEXISTENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.LogRecordsReservedInvalid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_LOG_RECORDS_RESERVED_INVALID']/*\"/>\t\n            <unmanaged>ERROR_LOG_RECORDS_RESERVED_INVALID</unmanaged>\t\n            <unmanaged-short>ERROR_LOG_RECORDS_RESERVED_INVALID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.LogSpaceReservedInvalid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_LOG_SPACE_RESERVED_INVALID']/*\"/>\t\n            <unmanaged>ERROR_LOG_SPACE_RESERVED_INVALID</unmanaged>\t\n            <unmanaged-short>ERROR_LOG_SPACE_RESERVED_INVALID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.LogTailInvalid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_LOG_TAIL_INVALID']/*\"/>\t\n            <unmanaged>ERROR_LOG_TAIL_INVALID</unmanaged>\t\n            <unmanaged-short>ERROR_LOG_TAIL_INVALID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.LogFull\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_LOG_FULL']/*\"/>\t\n            <unmanaged>ERROR_LOG_FULL</unmanaged>\t\n            <unmanaged-short>ERROR_LOG_FULL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CouldNotResizeLog\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_COULD_NOT_RESIZE_LOG']/*\"/>\t\n            <unmanaged>ERROR_COULD_NOT_RESIZE_LOG</unmanaged>\t\n            <unmanaged-short>ERROR_COULD_NOT_RESIZE_LOG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.LogMultiplexed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_LOG_MULTIPLEXED']/*\"/>\t\n            <unmanaged>ERROR_LOG_MULTIPLEXED</unmanaged>\t\n            <unmanaged-short>ERROR_LOG_MULTIPLEXED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.LogDedicated\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_LOG_DEDICATED']/*\"/>\t\n            <unmanaged>ERROR_LOG_DEDICATED</unmanaged>\t\n            <unmanaged-short>ERROR_LOG_DEDICATED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.LogArchiveNotInProgress\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_LOG_ARCHIVE_NOT_IN_PROGRESS']/*\"/>\t\n            <unmanaged>ERROR_LOG_ARCHIVE_NOT_IN_PROGRESS</unmanaged>\t\n            <unmanaged-short>ERROR_LOG_ARCHIVE_NOT_IN_PROGRESS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.LogArchiveInProgress\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_LOG_ARCHIVE_IN_PROGRESS']/*\"/>\t\n            <unmanaged>ERROR_LOG_ARCHIVE_IN_PROGRESS</unmanaged>\t\n            <unmanaged-short>ERROR_LOG_ARCHIVE_IN_PROGRESS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.LogEphemeral\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_LOG_EPHEMERAL']/*\"/>\t\n            <unmanaged>ERROR_LOG_EPHEMERAL</unmanaged>\t\n            <unmanaged-short>ERROR_LOG_EPHEMERAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.LogNotEnoughContainers\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_LOG_NOT_ENOUGH_CONTAINERS']/*\"/>\t\n            <unmanaged>ERROR_LOG_NOT_ENOUGH_CONTAINERS</unmanaged>\t\n            <unmanaged-short>ERROR_LOG_NOT_ENOUGH_CONTAINERS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.LogClientAlreadyRegistered\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_LOG_CLIENT_ALREADY_REGISTERED']/*\"/>\t\n            <unmanaged>ERROR_LOG_CLIENT_ALREADY_REGISTERED</unmanaged>\t\n            <unmanaged-short>ERROR_LOG_CLIENT_ALREADY_REGISTERED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.LogClientNotRegistered\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_LOG_CLIENT_NOT_REGISTERED']/*\"/>\t\n            <unmanaged>ERROR_LOG_CLIENT_NOT_REGISTERED</unmanaged>\t\n            <unmanaged-short>ERROR_LOG_CLIENT_NOT_REGISTERED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.LogFullHandlerInProgress\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_LOG_FULL_HANDLER_IN_PROGRESS']/*\"/>\t\n            <unmanaged>ERROR_LOG_FULL_HANDLER_IN_PROGRESS</unmanaged>\t\n            <unmanaged-short>ERROR_LOG_FULL_HANDLER_IN_PROGRESS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.LogContainerReadFailed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_LOG_CONTAINER_READ_FAILED']/*\"/>\t\n            <unmanaged>ERROR_LOG_CONTAINER_READ_FAILED</unmanaged>\t\n            <unmanaged-short>ERROR_LOG_CONTAINER_READ_FAILED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.LogContainerWriteFailed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_LOG_CONTAINER_WRITE_FAILED']/*\"/>\t\n            <unmanaged>ERROR_LOG_CONTAINER_WRITE_FAILED</unmanaged>\t\n            <unmanaged-short>ERROR_LOG_CONTAINER_WRITE_FAILED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.LogContainerOpenFailed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_LOG_CONTAINER_OPEN_FAILED']/*\"/>\t\n            <unmanaged>ERROR_LOG_CONTAINER_OPEN_FAILED</unmanaged>\t\n            <unmanaged-short>ERROR_LOG_CONTAINER_OPEN_FAILED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.LogContainerStateInvalid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_LOG_CONTAINER_STATE_INVALID']/*\"/>\t\n            <unmanaged>ERROR_LOG_CONTAINER_STATE_INVALID</unmanaged>\t\n            <unmanaged-short>ERROR_LOG_CONTAINER_STATE_INVALID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.LogStateInvalid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_LOG_STATE_INVALID']/*\"/>\t\n            <unmanaged>ERROR_LOG_STATE_INVALID</unmanaged>\t\n            <unmanaged-short>ERROR_LOG_STATE_INVALID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.LogPinned\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_LOG_PINNED']/*\"/>\t\n            <unmanaged>ERROR_LOG_PINNED</unmanaged>\t\n            <unmanaged-short>ERROR_LOG_PINNED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.LogMetadataFlushFailed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_LOG_METADATA_FLUSH_FAILED']/*\"/>\t\n            <unmanaged>ERROR_LOG_METADATA_FLUSH_FAILED</unmanaged>\t\n            <unmanaged-short>ERROR_LOG_METADATA_FLUSH_FAILED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.LogInconsistentSecurity\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_LOG_INCONSISTENT_SECURITY']/*\"/>\t\n            <unmanaged>ERROR_LOG_INCONSISTENT_SECURITY</unmanaged>\t\n            <unmanaged-short>ERROR_LOG_INCONSISTENT_SECURITY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.LogAppendedFlushFailed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_LOG_APPENDED_FLUSH_FAILED']/*\"/>\t\n            <unmanaged>ERROR_LOG_APPENDED_FLUSH_FAILED</unmanaged>\t\n            <unmanaged-short>ERROR_LOG_APPENDED_FLUSH_FAILED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.LogPinnedReservation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_LOG_PINNED_RESERVATION']/*\"/>\t\n            <unmanaged>ERROR_LOG_PINNED_RESERVATION</unmanaged>\t\n            <unmanaged-short>ERROR_LOG_PINNED_RESERVATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidTransaction\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_TRANSACTION']/*\"/>\t\n            <unmanaged>ERROR_INVALID_TRANSACTION</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_TRANSACTION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.TransactionNotActive\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_TRANSACTION_NOT_ACTIVE']/*\"/>\t\n            <unmanaged>ERROR_TRANSACTION_NOT_ACTIVE</unmanaged>\t\n            <unmanaged-short>ERROR_TRANSACTION_NOT_ACTIVE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.TransactionRequestNotValid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_TRANSACTION_REQUEST_NOT_VALID']/*\"/>\t\n            <unmanaged>ERROR_TRANSACTION_REQUEST_NOT_VALID</unmanaged>\t\n            <unmanaged-short>ERROR_TRANSACTION_REQUEST_NOT_VALID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.TransactionNotRequested\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_TRANSACTION_NOT_REQUESTED']/*\"/>\t\n            <unmanaged>ERROR_TRANSACTION_NOT_REQUESTED</unmanaged>\t\n            <unmanaged-short>ERROR_TRANSACTION_NOT_REQUESTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.TransactionAlreadyAborted\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_TRANSACTION_ALREADY_ABORTED']/*\"/>\t\n            <unmanaged>ERROR_TRANSACTION_ALREADY_ABORTED</unmanaged>\t\n            <unmanaged-short>ERROR_TRANSACTION_ALREADY_ABORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.TransactionAlreadyCommitted\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_TRANSACTION_ALREADY_COMMITTED']/*\"/>\t\n            <unmanaged>ERROR_TRANSACTION_ALREADY_COMMITTED</unmanaged>\t\n            <unmanaged-short>ERROR_TRANSACTION_ALREADY_COMMITTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.TmInitializationFailed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_TM_INITIALIZATION_FAILED']/*\"/>\t\n            <unmanaged>ERROR_TM_INITIALIZATION_FAILED</unmanaged>\t\n            <unmanaged-short>ERROR_TM_INITIALIZATION_FAILED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ResourcemanagerReadOnly\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_RESOURCEMANAGER_READ_ONLY']/*\"/>\t\n            <unmanaged>ERROR_RESOURCEMANAGER_READ_ONLY</unmanaged>\t\n            <unmanaged-short>ERROR_RESOURCEMANAGER_READ_ONLY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.TransactionNotJoined\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_TRANSACTION_NOT_JOINED']/*\"/>\t\n            <unmanaged>ERROR_TRANSACTION_NOT_JOINED</unmanaged>\t\n            <unmanaged-short>ERROR_TRANSACTION_NOT_JOINED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.TransactionSuperiorExists\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_TRANSACTION_SUPERIOR_EXISTS']/*\"/>\t\n            <unmanaged>ERROR_TRANSACTION_SUPERIOR_EXISTS</unmanaged>\t\n            <unmanaged-short>ERROR_TRANSACTION_SUPERIOR_EXISTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CrmProtocolAlreadyExists\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CRM_PROTOCOL_ALREADY_EXISTS']/*\"/>\t\n            <unmanaged>ERROR_CRM_PROTOCOL_ALREADY_EXISTS</unmanaged>\t\n            <unmanaged-short>ERROR_CRM_PROTOCOL_ALREADY_EXISTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.TransactionPropagationFailed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_TRANSACTION_PROPAGATION_FAILED']/*\"/>\t\n            <unmanaged>ERROR_TRANSACTION_PROPAGATION_FAILED</unmanaged>\t\n            <unmanaged-short>ERROR_TRANSACTION_PROPAGATION_FAILED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CrmProtocolNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CRM_PROTOCOL_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_CRM_PROTOCOL_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_CRM_PROTOCOL_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.TransactionInvalidMarshallBuffer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_TRANSACTION_INVALID_MARSHALL_BUFFER']/*\"/>\t\n            <unmanaged>ERROR_TRANSACTION_INVALID_MARSHALL_BUFFER</unmanaged>\t\n            <unmanaged-short>ERROR_TRANSACTION_INVALID_MARSHALL_BUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CurrentTransactionNotValid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CURRENT_TRANSACTION_NOT_VALID']/*\"/>\t\n            <unmanaged>ERROR_CURRENT_TRANSACTION_NOT_VALID</unmanaged>\t\n            <unmanaged-short>ERROR_CURRENT_TRANSACTION_NOT_VALID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.TransactionNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_TRANSACTION_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_TRANSACTION_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_TRANSACTION_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ResourcemanagerNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_RESOURCEMANAGER_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_RESOURCEMANAGER_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_RESOURCEMANAGER_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.EnlistmentNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_ENLISTMENT_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_ENLISTMENT_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_ENLISTMENT_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.TransactionmanagerNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_TRANSACTIONMANAGER_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_TRANSACTIONMANAGER_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_TRANSACTIONMANAGER_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.TransactionmanagerNotOnline\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_TRANSACTIONMANAGER_NOT_ONLINE']/*\"/>\t\n            <unmanaged>ERROR_TRANSACTIONMANAGER_NOT_ONLINE</unmanaged>\t\n            <unmanaged-short>ERROR_TRANSACTIONMANAGER_NOT_ONLINE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.TransactionmanagerRecoveryNameCollision\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_TRANSACTIONMANAGER_RECOVERY_NAME_COLLISION']/*\"/>\t\n            <unmanaged>ERROR_TRANSACTIONMANAGER_RECOVERY_NAME_COLLISION</unmanaged>\t\n            <unmanaged-short>ERROR_TRANSACTIONMANAGER_RECOVERY_NAME_COLLISION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.TransactionNotRoot\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_TRANSACTION_NOT_ROOT']/*\"/>\t\n            <unmanaged>ERROR_TRANSACTION_NOT_ROOT</unmanaged>\t\n            <unmanaged-short>ERROR_TRANSACTION_NOT_ROOT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.TransactionObjectExpired\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_TRANSACTION_OBJECT_EXPIRED']/*\"/>\t\n            <unmanaged>ERROR_TRANSACTION_OBJECT_EXPIRED</unmanaged>\t\n            <unmanaged-short>ERROR_TRANSACTION_OBJECT_EXPIRED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.TransactionResponseNotEnlisted\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_TRANSACTION_RESPONSE_NOT_ENLISTED']/*\"/>\t\n            <unmanaged>ERROR_TRANSACTION_RESPONSE_NOT_ENLISTED</unmanaged>\t\n            <unmanaged-short>ERROR_TRANSACTION_RESPONSE_NOT_ENLISTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.TransactionRecordTooLong\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_TRANSACTION_RECORD_TOO_LONG']/*\"/>\t\n            <unmanaged>ERROR_TRANSACTION_RECORD_TOO_LONG</unmanaged>\t\n            <unmanaged-short>ERROR_TRANSACTION_RECORD_TOO_LONG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ImplicitTransactionNotSupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IMPLICIT_TRANSACTION_NOT_SUPPORTED']/*\"/>\t\n            <unmanaged>ERROR_IMPLICIT_TRANSACTION_NOT_SUPPORTED</unmanaged>\t\n            <unmanaged-short>ERROR_IMPLICIT_TRANSACTION_NOT_SUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.TransactionIntegrityViolated\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_TRANSACTION_INTEGRITY_VIOLATED']/*\"/>\t\n            <unmanaged>ERROR_TRANSACTION_INTEGRITY_VIOLATED</unmanaged>\t\n            <unmanaged-short>ERROR_TRANSACTION_INTEGRITY_VIOLATED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.TransactionmanagerIdentityMismatch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_TRANSACTIONMANAGER_IDENTITY_MISMATCH']/*\"/>\t\n            <unmanaged>ERROR_TRANSACTIONMANAGER_IDENTITY_MISMATCH</unmanaged>\t\n            <unmanaged-short>ERROR_TRANSACTIONMANAGER_IDENTITY_MISMATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.RmCannotBeFrozenForSnapshot\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_RM_CANNOT_BE_FROZEN_FOR_SNAPSHOT']/*\"/>\t\n            <unmanaged>ERROR_RM_CANNOT_BE_FROZEN_FOR_SNAPSHOT</unmanaged>\t\n            <unmanaged-short>ERROR_RM_CANNOT_BE_FROZEN_FOR_SNAPSHOT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.TransactionMustWritethrough\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_TRANSACTION_MUST_WRITETHROUGH']/*\"/>\t\n            <unmanaged>ERROR_TRANSACTION_MUST_WRITETHROUGH</unmanaged>\t\n            <unmanaged-short>ERROR_TRANSACTION_MUST_WRITETHROUGH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.TransactionNoSuperior\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_TRANSACTION_NO_SUPERIOR']/*\"/>\t\n            <unmanaged>ERROR_TRANSACTION_NO_SUPERIOR</unmanaged>\t\n            <unmanaged-short>ERROR_TRANSACTION_NO_SUPERIOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.HeuristicDamagePossible\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_HEURISTIC_DAMAGE_POSSIBLE']/*\"/>\t\n            <unmanaged>ERROR_HEURISTIC_DAMAGE_POSSIBLE</unmanaged>\t\n            <unmanaged-short>ERROR_HEURISTIC_DAMAGE_POSSIBLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.TransactionalConflict\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_TRANSACTIONAL_CONFLICT']/*\"/>\t\n            <unmanaged>ERROR_TRANSACTIONAL_CONFLICT</unmanaged>\t\n            <unmanaged-short>ERROR_TRANSACTIONAL_CONFLICT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.RmNotActive\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_RM_NOT_ACTIVE']/*\"/>\t\n            <unmanaged>ERROR_RM_NOT_ACTIVE</unmanaged>\t\n            <unmanaged-short>ERROR_RM_NOT_ACTIVE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.RmMetadataCorrupt\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_RM_METADATA_CORRUPT']/*\"/>\t\n            <unmanaged>ERROR_RM_METADATA_CORRUPT</unmanaged>\t\n            <unmanaged-short>ERROR_RM_METADATA_CORRUPT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DirectoryNotRm\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DIRECTORY_NOT_RM']/*\"/>\t\n            <unmanaged>ERROR_DIRECTORY_NOT_RM</unmanaged>\t\n            <unmanaged-short>ERROR_DIRECTORY_NOT_RM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.TransactionsUnsupportedRemote\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_TRANSACTIONS_UNSUPPORTED_REMOTE']/*\"/>\t\n            <unmanaged>ERROR_TRANSACTIONS_UNSUPPORTED_REMOTE</unmanaged>\t\n            <unmanaged-short>ERROR_TRANSACTIONS_UNSUPPORTED_REMOTE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.LogResizeInvalidSize\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_LOG_RESIZE_INVALID_SIZE']/*\"/>\t\n            <unmanaged>ERROR_LOG_RESIZE_INVALID_SIZE</unmanaged>\t\n            <unmanaged-short>ERROR_LOG_RESIZE_INVALID_SIZE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ObjectNoLongerExists\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_OBJECT_NO_LONGER_EXISTS']/*\"/>\t\n            <unmanaged>ERROR_OBJECT_NO_LONGER_EXISTS</unmanaged>\t\n            <unmanaged-short>ERROR_OBJECT_NO_LONGER_EXISTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.StreamMiniversionNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_STREAM_MINIVERSION_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_STREAM_MINIVERSION_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_STREAM_MINIVERSION_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.StreamMiniversionNotValid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_STREAM_MINIVERSION_NOT_VALID']/*\"/>\t\n            <unmanaged>ERROR_STREAM_MINIVERSION_NOT_VALID</unmanaged>\t\n            <unmanaged-short>ERROR_STREAM_MINIVERSION_NOT_VALID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.MiniversionInaccessibleFromSpecifiedTransaction\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_MINIVERSION_INACCESSIBLE_FROM_SPECIFIED_TRANSACTION']/*\"/>\t\n            <unmanaged>ERROR_MINIVERSION_INACCESSIBLE_FROM_SPECIFIED_TRANSACTION</unmanaged>\t\n            <unmanaged-short>ERROR_MINIVERSION_INACCESSIBLE_FROM_SPECIFIED_TRANSACTION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CantOpenMiniversionWithModifyIntent\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CANT_OPEN_MINIVERSION_WITH_MODIFY_INTENT']/*\"/>\t\n            <unmanaged>ERROR_CANT_OPEN_MINIVERSION_WITH_MODIFY_INTENT</unmanaged>\t\n            <unmanaged-short>ERROR_CANT_OPEN_MINIVERSION_WITH_MODIFY_INTENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CantCreateMoreStreamMiniversions\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CANT_CREATE_MORE_STREAM_MINIVERSIONS']/*\"/>\t\n            <unmanaged>ERROR_CANT_CREATE_MORE_STREAM_MINIVERSIONS</unmanaged>\t\n            <unmanaged-short>ERROR_CANT_CREATE_MORE_STREAM_MINIVERSIONS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.RemoteFileVersionMismatch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_REMOTE_FILE_VERSION_MISMATCH']/*\"/>\t\n            <unmanaged>ERROR_REMOTE_FILE_VERSION_MISMATCH</unmanaged>\t\n            <unmanaged-short>ERROR_REMOTE_FILE_VERSION_MISMATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.HandleNoLongerValid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_HANDLE_NO_LONGER_VALID']/*\"/>\t\n            <unmanaged>ERROR_HANDLE_NO_LONGER_VALID</unmanaged>\t\n            <unmanaged-short>ERROR_HANDLE_NO_LONGER_VALID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NoTxfMetadata\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NO_TXF_METADATA']/*\"/>\t\n            <unmanaged>ERROR_NO_TXF_METADATA</unmanaged>\t\n            <unmanaged-short>ERROR_NO_TXF_METADATA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.LogCorruptionDetected\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_LOG_CORRUPTION_DETECTED']/*\"/>\t\n            <unmanaged>ERROR_LOG_CORRUPTION_DETECTED</unmanaged>\t\n            <unmanaged-short>ERROR_LOG_CORRUPTION_DETECTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CantRecoverWithHandleOpen\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CANT_RECOVER_WITH_HANDLE_OPEN']/*\"/>\t\n            <unmanaged>ERROR_CANT_RECOVER_WITH_HANDLE_OPEN</unmanaged>\t\n            <unmanaged-short>ERROR_CANT_RECOVER_WITH_HANDLE_OPEN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.RmDisconnected\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_RM_DISCONNECTED']/*\"/>\t\n            <unmanaged>ERROR_RM_DISCONNECTED</unmanaged>\t\n            <unmanaged-short>ERROR_RM_DISCONNECTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.EnlistmentNotSuperior\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_ENLISTMENT_NOT_SUPERIOR']/*\"/>\t\n            <unmanaged>ERROR_ENLISTMENT_NOT_SUPERIOR</unmanaged>\t\n            <unmanaged-short>ERROR_ENLISTMENT_NOT_SUPERIOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.RecoveryNotNeeded\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_RECOVERY_NOT_NEEDED']/*\"/>\t\n            <unmanaged>ERROR_RECOVERY_NOT_NEEDED</unmanaged>\t\n            <unmanaged-short>ERROR_RECOVERY_NOT_NEEDED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.RmAlreadyStarted\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_RM_ALREADY_STARTED']/*\"/>\t\n            <unmanaged>ERROR_RM_ALREADY_STARTED</unmanaged>\t\n            <unmanaged-short>ERROR_RM_ALREADY_STARTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.FileIdentityNotPersistent\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_FILE_IDENTITY_NOT_PERSISTENT']/*\"/>\t\n            <unmanaged>ERROR_FILE_IDENTITY_NOT_PERSISTENT</unmanaged>\t\n            <unmanaged-short>ERROR_FILE_IDENTITY_NOT_PERSISTENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CantBreakTransactionalDependency\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CANT_BREAK_TRANSACTIONAL_DEPENDENCY']/*\"/>\t\n            <unmanaged>ERROR_CANT_BREAK_TRANSACTIONAL_DEPENDENCY</unmanaged>\t\n            <unmanaged-short>ERROR_CANT_BREAK_TRANSACTIONAL_DEPENDENCY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CantCrossRmBoundary\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CANT_CROSS_RM_BOUNDARY']/*\"/>\t\n            <unmanaged>ERROR_CANT_CROSS_RM_BOUNDARY</unmanaged>\t\n            <unmanaged-short>ERROR_CANT_CROSS_RM_BOUNDARY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.TxfDirNotEmpty\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_TXF_DIR_NOT_EMPTY']/*\"/>\t\n            <unmanaged>ERROR_TXF_DIR_NOT_EMPTY</unmanaged>\t\n            <unmanaged-short>ERROR_TXF_DIR_NOT_EMPTY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IndoubtTransactionsExist\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INDOUBT_TRANSACTIONS_EXIST']/*\"/>\t\n            <unmanaged>ERROR_INDOUBT_TRANSACTIONS_EXIST</unmanaged>\t\n            <unmanaged-short>ERROR_INDOUBT_TRANSACTIONS_EXIST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.TmVolatile\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_TM_VOLATILE']/*\"/>\t\n            <unmanaged>ERROR_TM_VOLATILE</unmanaged>\t\n            <unmanaged-short>ERROR_TM_VOLATILE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.RollbackTimerExpired\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_ROLLBACK_TIMER_EXPIRED']/*\"/>\t\n            <unmanaged>ERROR_ROLLBACK_TIMER_EXPIRED</unmanaged>\t\n            <unmanaged-short>ERROR_ROLLBACK_TIMER_EXPIRED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.TxfAttributeCorrupt\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_TXF_ATTRIBUTE_CORRUPT']/*\"/>\t\n            <unmanaged>ERROR_TXF_ATTRIBUTE_CORRUPT</unmanaged>\t\n            <unmanaged-short>ERROR_TXF_ATTRIBUTE_CORRUPT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.EfsNotAllowedInTransaction\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_EFS_NOT_ALLOWED_IN_TRANSACTION']/*\"/>\t\n            <unmanaged>ERROR_EFS_NOT_ALLOWED_IN_TRANSACTION</unmanaged>\t\n            <unmanaged-short>ERROR_EFS_NOT_ALLOWED_IN_TRANSACTION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.TransactionalOpenNotAllowed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_TRANSACTIONAL_OPEN_NOT_ALLOWED']/*\"/>\t\n            <unmanaged>ERROR_TRANSACTIONAL_OPEN_NOT_ALLOWED</unmanaged>\t\n            <unmanaged-short>ERROR_TRANSACTIONAL_OPEN_NOT_ALLOWED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.LogGrowthFailed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_LOG_GROWTH_FAILED']/*\"/>\t\n            <unmanaged>ERROR_LOG_GROWTH_FAILED</unmanaged>\t\n            <unmanaged-short>ERROR_LOG_GROWTH_FAILED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.TransactedMappingUnsupportedRemote\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_TRANSACTED_MAPPING_UNSUPPORTED_REMOTE']/*\"/>\t\n            <unmanaged>ERROR_TRANSACTED_MAPPING_UNSUPPORTED_REMOTE</unmanaged>\t\n            <unmanaged-short>ERROR_TRANSACTED_MAPPING_UNSUPPORTED_REMOTE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.TxfMetadataAlreadyPresent\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_TXF_METADATA_ALREADY_PRESENT']/*\"/>\t\n            <unmanaged>ERROR_TXF_METADATA_ALREADY_PRESENT</unmanaged>\t\n            <unmanaged-short>ERROR_TXF_METADATA_ALREADY_PRESENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.TransactionScopeCallbacksNotSet\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_TRANSACTION_SCOPE_CALLBACKS_NOT_SET']/*\"/>\t\n            <unmanaged>ERROR_TRANSACTION_SCOPE_CALLBACKS_NOT_SET</unmanaged>\t\n            <unmanaged-short>ERROR_TRANSACTION_SCOPE_CALLBACKS_NOT_SET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.TransactionRequiredPromotion\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_TRANSACTION_REQUIRED_PROMOTION']/*\"/>\t\n            <unmanaged>ERROR_TRANSACTION_REQUIRED_PROMOTION</unmanaged>\t\n            <unmanaged-short>ERROR_TRANSACTION_REQUIRED_PROMOTION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CannotExecuteFileInTransaction\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CANNOT_EXECUTE_FILE_IN_TRANSACTION']/*\"/>\t\n            <unmanaged>ERROR_CANNOT_EXECUTE_FILE_IN_TRANSACTION</unmanaged>\t\n            <unmanaged-short>ERROR_CANNOT_EXECUTE_FILE_IN_TRANSACTION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.TransactionsNotFrozen\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_TRANSACTIONS_NOT_FROZEN']/*\"/>\t\n            <unmanaged>ERROR_TRANSACTIONS_NOT_FROZEN</unmanaged>\t\n            <unmanaged-short>ERROR_TRANSACTIONS_NOT_FROZEN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.TransactionFreezeInProgress\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_TRANSACTION_FREEZE_IN_PROGRESS']/*\"/>\t\n            <unmanaged>ERROR_TRANSACTION_FREEZE_IN_PROGRESS</unmanaged>\t\n            <unmanaged-short>ERROR_TRANSACTION_FREEZE_IN_PROGRESS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NotSnapshotVolume\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NOT_SNAPSHOT_VOLUME']/*\"/>\t\n            <unmanaged>ERROR_NOT_SNAPSHOT_VOLUME</unmanaged>\t\n            <unmanaged-short>ERROR_NOT_SNAPSHOT_VOLUME</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NoSavepointWithOpenFiles\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NO_SAVEPOINT_WITH_OPEN_FILES']/*\"/>\t\n            <unmanaged>ERROR_NO_SAVEPOINT_WITH_OPEN_FILES</unmanaged>\t\n            <unmanaged-short>ERROR_NO_SAVEPOINT_WITH_OPEN_FILES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DataLostRepair\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DATA_LOST_REPAIR']/*\"/>\t\n            <unmanaged>ERROR_DATA_LOST_REPAIR</unmanaged>\t\n            <unmanaged-short>ERROR_DATA_LOST_REPAIR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SparseNotAllowedInTransaction\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SPARSE_NOT_ALLOWED_IN_TRANSACTION']/*\"/>\t\n            <unmanaged>ERROR_SPARSE_NOT_ALLOWED_IN_TRANSACTION</unmanaged>\t\n            <unmanaged-short>ERROR_SPARSE_NOT_ALLOWED_IN_TRANSACTION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.TmIdentityMismatch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_TM_IDENTITY_MISMATCH']/*\"/>\t\n            <unmanaged>ERROR_TM_IDENTITY_MISMATCH</unmanaged>\t\n            <unmanaged-short>ERROR_TM_IDENTITY_MISMATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.FloatedSection\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_FLOATED_SECTION']/*\"/>\t\n            <unmanaged>ERROR_FLOATED_SECTION</unmanaged>\t\n            <unmanaged-short>ERROR_FLOATED_SECTION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CannotAcceptTransactedWork\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CANNOT_ACCEPT_TRANSACTED_WORK']/*\"/>\t\n            <unmanaged>ERROR_CANNOT_ACCEPT_TRANSACTED_WORK</unmanaged>\t\n            <unmanaged-short>ERROR_CANNOT_ACCEPT_TRANSACTED_WORK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CannotAbortTransactions\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CANNOT_ABORT_TRANSACTIONS']/*\"/>\t\n            <unmanaged>ERROR_CANNOT_ABORT_TRANSACTIONS</unmanaged>\t\n            <unmanaged-short>ERROR_CANNOT_ABORT_TRANSACTIONS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.BadClusters\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_BAD_CLUSTERS']/*\"/>\t\n            <unmanaged>ERROR_BAD_CLUSTERS</unmanaged>\t\n            <unmanaged-short>ERROR_BAD_CLUSTERS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CompressionNotAllowedInTransaction\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_COMPRESSION_NOT_ALLOWED_IN_TRANSACTION']/*\"/>\t\n            <unmanaged>ERROR_COMPRESSION_NOT_ALLOWED_IN_TRANSACTION</unmanaged>\t\n            <unmanaged-short>ERROR_COMPRESSION_NOT_ALLOWED_IN_TRANSACTION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolumeDirty\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLUME_DIRTY']/*\"/>\t\n            <unmanaged>ERROR_VOLUME_DIRTY</unmanaged>\t\n            <unmanaged-short>ERROR_VOLUME_DIRTY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NoLinkTrackingInTransaction\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NO_LINK_TRACKING_IN_TRANSACTION']/*\"/>\t\n            <unmanaged>ERROR_NO_LINK_TRACKING_IN_TRANSACTION</unmanaged>\t\n            <unmanaged-short>ERROR_NO_LINK_TRACKING_IN_TRANSACTION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.OperationNotSupportedInTransaction\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_OPERATION_NOT_SUPPORTED_IN_TRANSACTION']/*\"/>\t\n            <unmanaged>ERROR_OPERATION_NOT_SUPPORTED_IN_TRANSACTION</unmanaged>\t\n            <unmanaged-short>ERROR_OPERATION_NOT_SUPPORTED_IN_TRANSACTION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ExpiredHandle\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_EXPIRED_HANDLE']/*\"/>\t\n            <unmanaged>ERROR_EXPIRED_HANDLE</unmanaged>\t\n            <unmanaged-short>ERROR_EXPIRED_HANDLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.TransactionNotEnlisted\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_TRANSACTION_NOT_ENLISTED']/*\"/>\t\n            <unmanaged>ERROR_TRANSACTION_NOT_ENLISTED</unmanaged>\t\n            <unmanaged-short>ERROR_TRANSACTION_NOT_ENLISTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CtxWinstationNameInvalid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CTX_WINSTATION_NAME_INVALID']/*\"/>\t\n            <unmanaged>ERROR_CTX_WINSTATION_NAME_INVALID</unmanaged>\t\n            <unmanaged-short>ERROR_CTX_WINSTATION_NAME_INVALID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CtxInvalidPd\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CTX_INVALID_PD']/*\"/>\t\n            <unmanaged>ERROR_CTX_INVALID_PD</unmanaged>\t\n            <unmanaged-short>ERROR_CTX_INVALID_PD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CtxPdNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CTX_PD_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_CTX_PD_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_CTX_PD_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CtxWdNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CTX_WD_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_CTX_WD_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_CTX_WD_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CtxCannotMakeEventlogEntry\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CTX_CANNOT_MAKE_EVENTLOG_ENTRY']/*\"/>\t\n            <unmanaged>ERROR_CTX_CANNOT_MAKE_EVENTLOG_ENTRY</unmanaged>\t\n            <unmanaged-short>ERROR_CTX_CANNOT_MAKE_EVENTLOG_ENTRY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CtxServiceNameCollision\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CTX_SERVICE_NAME_COLLISION']/*\"/>\t\n            <unmanaged>ERROR_CTX_SERVICE_NAME_COLLISION</unmanaged>\t\n            <unmanaged-short>ERROR_CTX_SERVICE_NAME_COLLISION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CtxClosePending\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CTX_CLOSE_PENDING']/*\"/>\t\n            <unmanaged>ERROR_CTX_CLOSE_PENDING</unmanaged>\t\n            <unmanaged-short>ERROR_CTX_CLOSE_PENDING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CtxNoOutbuf\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CTX_NO_OUTBUF']/*\"/>\t\n            <unmanaged>ERROR_CTX_NO_OUTBUF</unmanaged>\t\n            <unmanaged-short>ERROR_CTX_NO_OUTBUF</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CtxModemInfNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CTX_MODEM_INF_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_CTX_MODEM_INF_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_CTX_MODEM_INF_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CtxInvalidModemname\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CTX_INVALID_MODEMNAME']/*\"/>\t\n            <unmanaged>ERROR_CTX_INVALID_MODEMNAME</unmanaged>\t\n            <unmanaged-short>ERROR_CTX_INVALID_MODEMNAME</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CtxModemResponseError\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CTX_MODEM_RESPONSE_ERROR']/*\"/>\t\n            <unmanaged>ERROR_CTX_MODEM_RESPONSE_ERROR</unmanaged>\t\n            <unmanaged-short>ERROR_CTX_MODEM_RESPONSE_ERROR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CtxModemResponseTimeout\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CTX_MODEM_RESPONSE_TIMEOUT']/*\"/>\t\n            <unmanaged>ERROR_CTX_MODEM_RESPONSE_TIMEOUT</unmanaged>\t\n            <unmanaged-short>ERROR_CTX_MODEM_RESPONSE_TIMEOUT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CtxModemResponseNoCarrier\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CTX_MODEM_RESPONSE_NO_CARRIER']/*\"/>\t\n            <unmanaged>ERROR_CTX_MODEM_RESPONSE_NO_CARRIER</unmanaged>\t\n            <unmanaged-short>ERROR_CTX_MODEM_RESPONSE_NO_CARRIER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CtxModemResponseNoDialtone\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CTX_MODEM_RESPONSE_NO_DIALTONE']/*\"/>\t\n            <unmanaged>ERROR_CTX_MODEM_RESPONSE_NO_DIALTONE</unmanaged>\t\n            <unmanaged-short>ERROR_CTX_MODEM_RESPONSE_NO_DIALTONE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CtxModemResponseBusy\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CTX_MODEM_RESPONSE_BUSY']/*\"/>\t\n            <unmanaged>ERROR_CTX_MODEM_RESPONSE_BUSY</unmanaged>\t\n            <unmanaged-short>ERROR_CTX_MODEM_RESPONSE_BUSY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CtxModemResponseVoice\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CTX_MODEM_RESPONSE_VOICE']/*\"/>\t\n            <unmanaged>ERROR_CTX_MODEM_RESPONSE_VOICE</unmanaged>\t\n            <unmanaged-short>ERROR_CTX_MODEM_RESPONSE_VOICE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CtxTdError\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CTX_TD_ERROR']/*\"/>\t\n            <unmanaged>ERROR_CTX_TD_ERROR</unmanaged>\t\n            <unmanaged-short>ERROR_CTX_TD_ERROR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CtxWinstationNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CTX_WINSTATION_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_CTX_WINSTATION_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_CTX_WINSTATION_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CtxWinstationAlreadyExists\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CTX_WINSTATION_ALREADY_EXISTS']/*\"/>\t\n            <unmanaged>ERROR_CTX_WINSTATION_ALREADY_EXISTS</unmanaged>\t\n            <unmanaged-short>ERROR_CTX_WINSTATION_ALREADY_EXISTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CtxWinstationBusy\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CTX_WINSTATION_BUSY']/*\"/>\t\n            <unmanaged>ERROR_CTX_WINSTATION_BUSY</unmanaged>\t\n            <unmanaged-short>ERROR_CTX_WINSTATION_BUSY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CtxBadVideoMode\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CTX_BAD_VIDEO_MODE']/*\"/>\t\n            <unmanaged>ERROR_CTX_BAD_VIDEO_MODE</unmanaged>\t\n            <unmanaged-short>ERROR_CTX_BAD_VIDEO_MODE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CtxGraphicsInvalid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CTX_GRAPHICS_INVALID']/*\"/>\t\n            <unmanaged>ERROR_CTX_GRAPHICS_INVALID</unmanaged>\t\n            <unmanaged-short>ERROR_CTX_GRAPHICS_INVALID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CtxLogonDisabled\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CTX_LOGON_DISABLED']/*\"/>\t\n            <unmanaged>ERROR_CTX_LOGON_DISABLED</unmanaged>\t\n            <unmanaged-short>ERROR_CTX_LOGON_DISABLED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CtxNotConsole\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CTX_NOT_CONSOLE']/*\"/>\t\n            <unmanaged>ERROR_CTX_NOT_CONSOLE</unmanaged>\t\n            <unmanaged-short>ERROR_CTX_NOT_CONSOLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CtxClientQueryTimeout\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CTX_CLIENT_QUERY_TIMEOUT']/*\"/>\t\n            <unmanaged>ERROR_CTX_CLIENT_QUERY_TIMEOUT</unmanaged>\t\n            <unmanaged-short>ERROR_CTX_CLIENT_QUERY_TIMEOUT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CtxConsoleDisconnect\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CTX_CONSOLE_DISCONNECT']/*\"/>\t\n            <unmanaged>ERROR_CTX_CONSOLE_DISCONNECT</unmanaged>\t\n            <unmanaged-short>ERROR_CTX_CONSOLE_DISCONNECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CtxConsoleConnect\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CTX_CONSOLE_CONNECT']/*\"/>\t\n            <unmanaged>ERROR_CTX_CONSOLE_CONNECT</unmanaged>\t\n            <unmanaged-short>ERROR_CTX_CONSOLE_CONNECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CtxShadowDenied\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CTX_SHADOW_DENIED']/*\"/>\t\n            <unmanaged>ERROR_CTX_SHADOW_DENIED</unmanaged>\t\n            <unmanaged-short>ERROR_CTX_SHADOW_DENIED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CtxWinstationAccessDenied\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CTX_WINSTATION_ACCESS_DENIED']/*\"/>\t\n            <unmanaged>ERROR_CTX_WINSTATION_ACCESS_DENIED</unmanaged>\t\n            <unmanaged-short>ERROR_CTX_WINSTATION_ACCESS_DENIED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CtxInvalidWd\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CTX_INVALID_WD']/*\"/>\t\n            <unmanaged>ERROR_CTX_INVALID_WD</unmanaged>\t\n            <unmanaged-short>ERROR_CTX_INVALID_WD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CtxShadowInvalid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CTX_SHADOW_INVALID']/*\"/>\t\n            <unmanaged>ERROR_CTX_SHADOW_INVALID</unmanaged>\t\n            <unmanaged-short>ERROR_CTX_SHADOW_INVALID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CtxShadowDisabled\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CTX_SHADOW_DISABLED']/*\"/>\t\n            <unmanaged>ERROR_CTX_SHADOW_DISABLED</unmanaged>\t\n            <unmanaged-short>ERROR_CTX_SHADOW_DISABLED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CtxClientLicenseInUse\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CTX_CLIENT_LICENSE_IN_USE']/*\"/>\t\n            <unmanaged>ERROR_CTX_CLIENT_LICENSE_IN_USE</unmanaged>\t\n            <unmanaged-short>ERROR_CTX_CLIENT_LICENSE_IN_USE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CtxClientLicenseNotSet\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CTX_CLIENT_LICENSE_NOT_SET']/*\"/>\t\n            <unmanaged>ERROR_CTX_CLIENT_LICENSE_NOT_SET</unmanaged>\t\n            <unmanaged-short>ERROR_CTX_CLIENT_LICENSE_NOT_SET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CtxLicenseNotAvailable\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CTX_LICENSE_NOT_AVAILABLE']/*\"/>\t\n            <unmanaged>ERROR_CTX_LICENSE_NOT_AVAILABLE</unmanaged>\t\n            <unmanaged-short>ERROR_CTX_LICENSE_NOT_AVAILABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CtxLicenseClientInvalid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CTX_LICENSE_CLIENT_INVALID']/*\"/>\t\n            <unmanaged>ERROR_CTX_LICENSE_CLIENT_INVALID</unmanaged>\t\n            <unmanaged-short>ERROR_CTX_LICENSE_CLIENT_INVALID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CtxLicenseExpired\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CTX_LICENSE_EXPIRED']/*\"/>\t\n            <unmanaged>ERROR_CTX_LICENSE_EXPIRED</unmanaged>\t\n            <unmanaged-short>ERROR_CTX_LICENSE_EXPIRED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CtxShadowNotRunning\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CTX_SHADOW_NOT_RUNNING']/*\"/>\t\n            <unmanaged>ERROR_CTX_SHADOW_NOT_RUNNING</unmanaged>\t\n            <unmanaged-short>ERROR_CTX_SHADOW_NOT_RUNNING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CtxShadowEndedByModeChange\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CTX_SHADOW_ENDED_BY_MODE_CHANGE']/*\"/>\t\n            <unmanaged>ERROR_CTX_SHADOW_ENDED_BY_MODE_CHANGE</unmanaged>\t\n            <unmanaged-short>ERROR_CTX_SHADOW_ENDED_BY_MODE_CHANGE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ActivationCountExceeded\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_ACTIVATION_COUNT_EXCEEDED']/*\"/>\t\n            <unmanaged>ERROR_ACTIVATION_COUNT_EXCEEDED</unmanaged>\t\n            <unmanaged-short>ERROR_ACTIVATION_COUNT_EXCEEDED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CtxWinstationsDisabled\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CTX_WINSTATIONS_DISABLED']/*\"/>\t\n            <unmanaged>ERROR_CTX_WINSTATIONS_DISABLED</unmanaged>\t\n            <unmanaged-short>ERROR_CTX_WINSTATIONS_DISABLED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CtxEncryptionLevelRequired\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CTX_ENCRYPTION_LEVEL_REQUIRED']/*\"/>\t\n            <unmanaged>ERROR_CTX_ENCRYPTION_LEVEL_REQUIRED</unmanaged>\t\n            <unmanaged-short>ERROR_CTX_ENCRYPTION_LEVEL_REQUIRED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CtxSessionInUse\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CTX_SESSION_IN_USE']/*\"/>\t\n            <unmanaged>ERROR_CTX_SESSION_IN_USE</unmanaged>\t\n            <unmanaged-short>ERROR_CTX_SESSION_IN_USE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CtxNoForceLogoff\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CTX_NO_FORCE_LOGOFF']/*\"/>\t\n            <unmanaged>ERROR_CTX_NO_FORCE_LOGOFF</unmanaged>\t\n            <unmanaged-short>ERROR_CTX_NO_FORCE_LOGOFF</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CtxAccountRestriction\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CTX_ACCOUNT_RESTRICTION']/*\"/>\t\n            <unmanaged>ERROR_CTX_ACCOUNT_RESTRICTION</unmanaged>\t\n            <unmanaged-short>ERROR_CTX_ACCOUNT_RESTRICTION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.RdpProtocolError\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_RDP_PROTOCOL_ERROR']/*\"/>\t\n            <unmanaged>ERROR_RDP_PROTOCOL_ERROR</unmanaged>\t\n            <unmanaged-short>ERROR_RDP_PROTOCOL_ERROR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CtxCdmConnect\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CTX_CDM_CONNECT']/*\"/>\t\n            <unmanaged>ERROR_CTX_CDM_CONNECT</unmanaged>\t\n            <unmanaged-short>ERROR_CTX_CDM_CONNECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CtxCdmDisconnect\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CTX_CDM_DISCONNECT']/*\"/>\t\n            <unmanaged>ERROR_CTX_CDM_DISCONNECT</unmanaged>\t\n            <unmanaged-short>ERROR_CTX_CDM_DISCONNECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CtxSecurityLayerError\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CTX_SECURITY_LAYER_ERROR']/*\"/>\t\n            <unmanaged>ERROR_CTX_SECURITY_LAYER_ERROR</unmanaged>\t\n            <unmanaged-short>ERROR_CTX_SECURITY_LAYER_ERROR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.TsIncompatibleSessions\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_TS_INCOMPATIBLE_SESSIONS']/*\"/>\t\n            <unmanaged>ERROR_TS_INCOMPATIBLE_SESSIONS</unmanaged>\t\n            <unmanaged-short>ERROR_TS_INCOMPATIBLE_SESSIONS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.TsVideoSubsystemError\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_TS_VIDEO_SUBSYSTEM_ERROR']/*\"/>\t\n            <unmanaged>ERROR_TS_VIDEO_SUBSYSTEM_ERROR</unmanaged>\t\n            <unmanaged-short>ERROR_TS_VIDEO_SUBSYSTEM_ERROR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsNotInstalled\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_NOT_INSTALLED']/*\"/>\t\n            <unmanaged>ERROR_DS_NOT_INSTALLED</unmanaged>\t\n            <unmanaged-short>ERROR_DS_NOT_INSTALLED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsMembershipEvaluatedLocally\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_MEMBERSHIP_EVALUATED_LOCALLY']/*\"/>\t\n            <unmanaged>ERROR_DS_MEMBERSHIP_EVALUATED_LOCALLY</unmanaged>\t\n            <unmanaged-short>ERROR_DS_MEMBERSHIP_EVALUATED_LOCALLY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsNoAttributeOrValue\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_NO_ATTRIBUTE_OR_VALUE']/*\"/>\t\n            <unmanaged>ERROR_DS_NO_ATTRIBUTE_OR_VALUE</unmanaged>\t\n            <unmanaged-short>ERROR_DS_NO_ATTRIBUTE_OR_VALUE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsInvalidAttributeSyntax\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_INVALID_ATTRIBUTE_SYNTAX']/*\"/>\t\n            <unmanaged>ERROR_DS_INVALID_ATTRIBUTE_SYNTAX</unmanaged>\t\n            <unmanaged-short>ERROR_DS_INVALID_ATTRIBUTE_SYNTAX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsAttributeTypeUndefined\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_ATTRIBUTE_TYPE_UNDEFINED']/*\"/>\t\n            <unmanaged>ERROR_DS_ATTRIBUTE_TYPE_UNDEFINED</unmanaged>\t\n            <unmanaged-short>ERROR_DS_ATTRIBUTE_TYPE_UNDEFINED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsAttributeOrValueExists\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_ATTRIBUTE_OR_VALUE_EXISTS']/*\"/>\t\n            <unmanaged>ERROR_DS_ATTRIBUTE_OR_VALUE_EXISTS</unmanaged>\t\n            <unmanaged-short>ERROR_DS_ATTRIBUTE_OR_VALUE_EXISTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsBusy\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_BUSY']/*\"/>\t\n            <unmanaged>ERROR_DS_BUSY</unmanaged>\t\n            <unmanaged-short>ERROR_DS_BUSY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsUnavailable\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_UNAVAILABLE']/*\"/>\t\n            <unmanaged>ERROR_DS_UNAVAILABLE</unmanaged>\t\n            <unmanaged-short>ERROR_DS_UNAVAILABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsNoRidsAllocated\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_NO_RIDS_ALLOCATED']/*\"/>\t\n            <unmanaged>ERROR_DS_NO_RIDS_ALLOCATED</unmanaged>\t\n            <unmanaged-short>ERROR_DS_NO_RIDS_ALLOCATED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsNoMoreRids\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_NO_MORE_RIDS']/*\"/>\t\n            <unmanaged>ERROR_DS_NO_MORE_RIDS</unmanaged>\t\n            <unmanaged-short>ERROR_DS_NO_MORE_RIDS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsIncorrectRoleOwner\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_INCORRECT_ROLE_OWNER']/*\"/>\t\n            <unmanaged>ERROR_DS_INCORRECT_ROLE_OWNER</unmanaged>\t\n            <unmanaged-short>ERROR_DS_INCORRECT_ROLE_OWNER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsRidmgrInitError\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_RIDMGR_INIT_ERROR']/*\"/>\t\n            <unmanaged>ERROR_DS_RIDMGR_INIT_ERROR</unmanaged>\t\n            <unmanaged-short>ERROR_DS_RIDMGR_INIT_ERROR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsObjClassViolation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_OBJ_CLASS_VIOLATION']/*\"/>\t\n            <unmanaged>ERROR_DS_OBJ_CLASS_VIOLATION</unmanaged>\t\n            <unmanaged-short>ERROR_DS_OBJ_CLASS_VIOLATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsCantOnNonLeaf\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_CANT_ON_NON_LEAF']/*\"/>\t\n            <unmanaged>ERROR_DS_CANT_ON_NON_LEAF</unmanaged>\t\n            <unmanaged-short>ERROR_DS_CANT_ON_NON_LEAF</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsCantOnRdn\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_CANT_ON_RDN']/*\"/>\t\n            <unmanaged>ERROR_DS_CANT_ON_RDN</unmanaged>\t\n            <unmanaged-short>ERROR_DS_CANT_ON_RDN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsCantModObjClass\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_CANT_MOD_OBJ_CLASS']/*\"/>\t\n            <unmanaged>ERROR_DS_CANT_MOD_OBJ_CLASS</unmanaged>\t\n            <unmanaged-short>ERROR_DS_CANT_MOD_OBJ_CLASS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsCrossDomMoveError\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_CROSS_DOM_MOVE_ERROR']/*\"/>\t\n            <unmanaged>ERROR_DS_CROSS_DOM_MOVE_ERROR</unmanaged>\t\n            <unmanaged-short>ERROR_DS_CROSS_DOM_MOVE_ERROR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsGcNotAvailable\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_GC_NOT_AVAILABLE']/*\"/>\t\n            <unmanaged>ERROR_DS_GC_NOT_AVAILABLE</unmanaged>\t\n            <unmanaged-short>ERROR_DS_GC_NOT_AVAILABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SharedPolicy\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SHARED_POLICY']/*\"/>\t\n            <unmanaged>ERROR_SHARED_POLICY</unmanaged>\t\n            <unmanaged-short>ERROR_SHARED_POLICY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.PolicyObjectNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_POLICY_OBJECT_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_POLICY_OBJECT_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_POLICY_OBJECT_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.PolicyOnlyInDs\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_POLICY_ONLY_IN_DS']/*\"/>\t\n            <unmanaged>ERROR_POLICY_ONLY_IN_DS</unmanaged>\t\n            <unmanaged-short>ERROR_POLICY_ONLY_IN_DS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.PromotionActive\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_PROMOTION_ACTIVE']/*\"/>\t\n            <unmanaged>ERROR_PROMOTION_ACTIVE</unmanaged>\t\n            <unmanaged-short>ERROR_PROMOTION_ACTIVE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NoPromotionActive\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NO_PROMOTION_ACTIVE']/*\"/>\t\n            <unmanaged>ERROR_NO_PROMOTION_ACTIVE</unmanaged>\t\n            <unmanaged-short>ERROR_NO_PROMOTION_ACTIVE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsOperationsError\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_OPERATIONS_ERROR']/*\"/>\t\n            <unmanaged>ERROR_DS_OPERATIONS_ERROR</unmanaged>\t\n            <unmanaged-short>ERROR_DS_OPERATIONS_ERROR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsProtocolError\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_PROTOCOL_ERROR']/*\"/>\t\n            <unmanaged>ERROR_DS_PROTOCOL_ERROR</unmanaged>\t\n            <unmanaged-short>ERROR_DS_PROTOCOL_ERROR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsTimelimitExceeded\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_TIMELIMIT_EXCEEDED']/*\"/>\t\n            <unmanaged>ERROR_DS_TIMELIMIT_EXCEEDED</unmanaged>\t\n            <unmanaged-short>ERROR_DS_TIMELIMIT_EXCEEDED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsSizelimitExceeded\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_SIZELIMIT_EXCEEDED']/*\"/>\t\n            <unmanaged>ERROR_DS_SIZELIMIT_EXCEEDED</unmanaged>\t\n            <unmanaged-short>ERROR_DS_SIZELIMIT_EXCEEDED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsAdminLimitExceeded\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_ADMIN_LIMIT_EXCEEDED']/*\"/>\t\n            <unmanaged>ERROR_DS_ADMIN_LIMIT_EXCEEDED</unmanaged>\t\n            <unmanaged-short>ERROR_DS_ADMIN_LIMIT_EXCEEDED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsCompareFalse\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_COMPARE_FALSE']/*\"/>\t\n            <unmanaged>ERROR_DS_COMPARE_FALSE</unmanaged>\t\n            <unmanaged-short>ERROR_DS_COMPARE_FALSE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsCompareTrue\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_COMPARE_TRUE']/*\"/>\t\n            <unmanaged>ERROR_DS_COMPARE_TRUE</unmanaged>\t\n            <unmanaged-short>ERROR_DS_COMPARE_TRUE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsAuthMethodNotSupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_AUTH_METHOD_NOT_SUPPORTED']/*\"/>\t\n            <unmanaged>ERROR_DS_AUTH_METHOD_NOT_SUPPORTED</unmanaged>\t\n            <unmanaged-short>ERROR_DS_AUTH_METHOD_NOT_SUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsStrongAuthRequired\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_STRONG_AUTH_REQUIRED']/*\"/>\t\n            <unmanaged>ERROR_DS_STRONG_AUTH_REQUIRED</unmanaged>\t\n            <unmanaged-short>ERROR_DS_STRONG_AUTH_REQUIRED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsInappropriateAuth\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_INAPPROPRIATE_AUTH']/*\"/>\t\n            <unmanaged>ERROR_DS_INAPPROPRIATE_AUTH</unmanaged>\t\n            <unmanaged-short>ERROR_DS_INAPPROPRIATE_AUTH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsAuthUnknown\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_AUTH_UNKNOWN']/*\"/>\t\n            <unmanaged>ERROR_DS_AUTH_UNKNOWN</unmanaged>\t\n            <unmanaged-short>ERROR_DS_AUTH_UNKNOWN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsReferral\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_REFERRAL']/*\"/>\t\n            <unmanaged>ERROR_DS_REFERRAL</unmanaged>\t\n            <unmanaged-short>ERROR_DS_REFERRAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsUnavailableCritExtension\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_UNAVAILABLE_CRIT_EXTENSION']/*\"/>\t\n            <unmanaged>ERROR_DS_UNAVAILABLE_CRIT_EXTENSION</unmanaged>\t\n            <unmanaged-short>ERROR_DS_UNAVAILABLE_CRIT_EXTENSION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsConfidentialityRequired\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_CONFIDENTIALITY_REQUIRED']/*\"/>\t\n            <unmanaged>ERROR_DS_CONFIDENTIALITY_REQUIRED</unmanaged>\t\n            <unmanaged-short>ERROR_DS_CONFIDENTIALITY_REQUIRED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsInappropriateMatching\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_INAPPROPRIATE_MATCHING']/*\"/>\t\n            <unmanaged>ERROR_DS_INAPPROPRIATE_MATCHING</unmanaged>\t\n            <unmanaged-short>ERROR_DS_INAPPROPRIATE_MATCHING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsConstraintViolation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_CONSTRAINT_VIOLATION']/*\"/>\t\n            <unmanaged>ERROR_DS_CONSTRAINT_VIOLATION</unmanaged>\t\n            <unmanaged-short>ERROR_DS_CONSTRAINT_VIOLATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsNoSuchObject\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_NO_SUCH_OBJECT']/*\"/>\t\n            <unmanaged>ERROR_DS_NO_SUCH_OBJECT</unmanaged>\t\n            <unmanaged-short>ERROR_DS_NO_SUCH_OBJECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsAliasProblem\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_ALIAS_PROBLEM']/*\"/>\t\n            <unmanaged>ERROR_DS_ALIAS_PROBLEM</unmanaged>\t\n            <unmanaged-short>ERROR_DS_ALIAS_PROBLEM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsInvalidDnSyntax\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_INVALID_DN_SYNTAX']/*\"/>\t\n            <unmanaged>ERROR_DS_INVALID_DN_SYNTAX</unmanaged>\t\n            <unmanaged-short>ERROR_DS_INVALID_DN_SYNTAX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsIsLeaf\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_IS_LEAF']/*\"/>\t\n            <unmanaged>ERROR_DS_IS_LEAF</unmanaged>\t\n            <unmanaged-short>ERROR_DS_IS_LEAF</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsAliasDerefProblem\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_ALIAS_DEREF_PROBLEM']/*\"/>\t\n            <unmanaged>ERROR_DS_ALIAS_DEREF_PROBLEM</unmanaged>\t\n            <unmanaged-short>ERROR_DS_ALIAS_DEREF_PROBLEM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsUnwillingToPerform\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_UNWILLING_TO_PERFORM']/*\"/>\t\n            <unmanaged>ERROR_DS_UNWILLING_TO_PERFORM</unmanaged>\t\n            <unmanaged-short>ERROR_DS_UNWILLING_TO_PERFORM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsLoopDetect\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_LOOP_DETECT']/*\"/>\t\n            <unmanaged>ERROR_DS_LOOP_DETECT</unmanaged>\t\n            <unmanaged-short>ERROR_DS_LOOP_DETECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsNamingViolation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_NAMING_VIOLATION']/*\"/>\t\n            <unmanaged>ERROR_DS_NAMING_VIOLATION</unmanaged>\t\n            <unmanaged-short>ERROR_DS_NAMING_VIOLATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsObjectResultsTooLarge\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_OBJECT_RESULTS_TOO_LARGE']/*\"/>\t\n            <unmanaged>ERROR_DS_OBJECT_RESULTS_TOO_LARGE</unmanaged>\t\n            <unmanaged-short>ERROR_DS_OBJECT_RESULTS_TOO_LARGE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsAffectsMultipleDsas\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_AFFECTS_MULTIPLE_DSAS']/*\"/>\t\n            <unmanaged>ERROR_DS_AFFECTS_MULTIPLE_DSAS</unmanaged>\t\n            <unmanaged-short>ERROR_DS_AFFECTS_MULTIPLE_DSAS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsServerDown\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_SERVER_DOWN']/*\"/>\t\n            <unmanaged>ERROR_DS_SERVER_DOWN</unmanaged>\t\n            <unmanaged-short>ERROR_DS_SERVER_DOWN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsLocalError\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_LOCAL_ERROR']/*\"/>\t\n            <unmanaged>ERROR_DS_LOCAL_ERROR</unmanaged>\t\n            <unmanaged-short>ERROR_DS_LOCAL_ERROR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsEncodingError\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_ENCODING_ERROR']/*\"/>\t\n            <unmanaged>ERROR_DS_ENCODING_ERROR</unmanaged>\t\n            <unmanaged-short>ERROR_DS_ENCODING_ERROR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsDecodingError\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_DECODING_ERROR']/*\"/>\t\n            <unmanaged>ERROR_DS_DECODING_ERROR</unmanaged>\t\n            <unmanaged-short>ERROR_DS_DECODING_ERROR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsFilterUnknown\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_FILTER_UNKNOWN']/*\"/>\t\n            <unmanaged>ERROR_DS_FILTER_UNKNOWN</unmanaged>\t\n            <unmanaged-short>ERROR_DS_FILTER_UNKNOWN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsParamError\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_PARAM_ERROR']/*\"/>\t\n            <unmanaged>ERROR_DS_PARAM_ERROR</unmanaged>\t\n            <unmanaged-short>ERROR_DS_PARAM_ERROR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsNotSupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_NOT_SUPPORTED']/*\"/>\t\n            <unmanaged>ERROR_DS_NOT_SUPPORTED</unmanaged>\t\n            <unmanaged-short>ERROR_DS_NOT_SUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsNoResultsReturned\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_NO_RESULTS_RETURNED']/*\"/>\t\n            <unmanaged>ERROR_DS_NO_RESULTS_RETURNED</unmanaged>\t\n            <unmanaged-short>ERROR_DS_NO_RESULTS_RETURNED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsControlNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_CONTROL_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_DS_CONTROL_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_DS_CONTROL_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsClientLoop\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_CLIENT_LOOP']/*\"/>\t\n            <unmanaged>ERROR_DS_CLIENT_LOOP</unmanaged>\t\n            <unmanaged-short>ERROR_DS_CLIENT_LOOP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsReferralLimitExceeded\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_REFERRAL_LIMIT_EXCEEDED']/*\"/>\t\n            <unmanaged>ERROR_DS_REFERRAL_LIMIT_EXCEEDED</unmanaged>\t\n            <unmanaged-short>ERROR_DS_REFERRAL_LIMIT_EXCEEDED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsSortControlMissing\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_SORT_CONTROL_MISSING']/*\"/>\t\n            <unmanaged>ERROR_DS_SORT_CONTROL_MISSING</unmanaged>\t\n            <unmanaged-short>ERROR_DS_SORT_CONTROL_MISSING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsOffsetRangeError\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_OFFSET_RANGE_ERROR']/*\"/>\t\n            <unmanaged>ERROR_DS_OFFSET_RANGE_ERROR</unmanaged>\t\n            <unmanaged-short>ERROR_DS_OFFSET_RANGE_ERROR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsRootMustBeNc\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_ROOT_MUST_BE_NC']/*\"/>\t\n            <unmanaged>ERROR_DS_ROOT_MUST_BE_NC</unmanaged>\t\n            <unmanaged-short>ERROR_DS_ROOT_MUST_BE_NC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsAddReplicaInhibited\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_ADD_REPLICA_INHIBITED']/*\"/>\t\n            <unmanaged>ERROR_DS_ADD_REPLICA_INHIBITED</unmanaged>\t\n            <unmanaged-short>ERROR_DS_ADD_REPLICA_INHIBITED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsAttNotDefInSchema\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_ATT_NOT_DEF_IN_SCHEMA']/*\"/>\t\n            <unmanaged>ERROR_DS_ATT_NOT_DEF_IN_SCHEMA</unmanaged>\t\n            <unmanaged-short>ERROR_DS_ATT_NOT_DEF_IN_SCHEMA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsMaxObjSizeExceeded\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_MAX_OBJ_SIZE_EXCEEDED']/*\"/>\t\n            <unmanaged>ERROR_DS_MAX_OBJ_SIZE_EXCEEDED</unmanaged>\t\n            <unmanaged-short>ERROR_DS_MAX_OBJ_SIZE_EXCEEDED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsObjStringNameExists\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_OBJ_STRING_NAME_EXISTS']/*\"/>\t\n            <unmanaged>ERROR_DS_OBJ_STRING_NAME_EXISTS</unmanaged>\t\n            <unmanaged-short>ERROR_DS_OBJ_STRING_NAME_EXISTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsNoRdnDefinedInSchema\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_NO_RDN_DEFINED_IN_SCHEMA']/*\"/>\t\n            <unmanaged>ERROR_DS_NO_RDN_DEFINED_IN_SCHEMA</unmanaged>\t\n            <unmanaged-short>ERROR_DS_NO_RDN_DEFINED_IN_SCHEMA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsRdnDoesntMatchSchema\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_RDN_DOESNT_MATCH_SCHEMA']/*\"/>\t\n            <unmanaged>ERROR_DS_RDN_DOESNT_MATCH_SCHEMA</unmanaged>\t\n            <unmanaged-short>ERROR_DS_RDN_DOESNT_MATCH_SCHEMA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsNoRequestedAttsFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_NO_REQUESTED_ATTS_FOUND']/*\"/>\t\n            <unmanaged>ERROR_DS_NO_REQUESTED_ATTS_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_DS_NO_REQUESTED_ATTS_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsUserBufferToSmall\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_USER_BUFFER_TO_SMALL']/*\"/>\t\n            <unmanaged>ERROR_DS_USER_BUFFER_TO_SMALL</unmanaged>\t\n            <unmanaged-short>ERROR_DS_USER_BUFFER_TO_SMALL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsAttIsNotOnObj\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_ATT_IS_NOT_ON_OBJ']/*\"/>\t\n            <unmanaged>ERROR_DS_ATT_IS_NOT_ON_OBJ</unmanaged>\t\n            <unmanaged-short>ERROR_DS_ATT_IS_NOT_ON_OBJ</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsIllegalModOperation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_ILLEGAL_MOD_OPERATION']/*\"/>\t\n            <unmanaged>ERROR_DS_ILLEGAL_MOD_OPERATION</unmanaged>\t\n            <unmanaged-short>ERROR_DS_ILLEGAL_MOD_OPERATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsObjTooLarge\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_OBJ_TOO_LARGE']/*\"/>\t\n            <unmanaged>ERROR_DS_OBJ_TOO_LARGE</unmanaged>\t\n            <unmanaged-short>ERROR_DS_OBJ_TOO_LARGE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsBadInstanceType\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_BAD_INSTANCE_TYPE']/*\"/>\t\n            <unmanaged>ERROR_DS_BAD_INSTANCE_TYPE</unmanaged>\t\n            <unmanaged-short>ERROR_DS_BAD_INSTANCE_TYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsMasterdsaRequired\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_MASTERDSA_REQUIRED']/*\"/>\t\n            <unmanaged>ERROR_DS_MASTERDSA_REQUIRED</unmanaged>\t\n            <unmanaged-short>ERROR_DS_MASTERDSA_REQUIRED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsObjectClassRequired\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_OBJECT_CLASS_REQUIRED']/*\"/>\t\n            <unmanaged>ERROR_DS_OBJECT_CLASS_REQUIRED</unmanaged>\t\n            <unmanaged-short>ERROR_DS_OBJECT_CLASS_REQUIRED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsMissingRequiredAtt\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_MISSING_REQUIRED_ATT']/*\"/>\t\n            <unmanaged>ERROR_DS_MISSING_REQUIRED_ATT</unmanaged>\t\n            <unmanaged-short>ERROR_DS_MISSING_REQUIRED_ATT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsAttNotDefForClass\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_ATT_NOT_DEF_FOR_CLASS']/*\"/>\t\n            <unmanaged>ERROR_DS_ATT_NOT_DEF_FOR_CLASS</unmanaged>\t\n            <unmanaged-short>ERROR_DS_ATT_NOT_DEF_FOR_CLASS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsAttAlreadyExists\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_ATT_ALREADY_EXISTS']/*\"/>\t\n            <unmanaged>ERROR_DS_ATT_ALREADY_EXISTS</unmanaged>\t\n            <unmanaged-short>ERROR_DS_ATT_ALREADY_EXISTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsCantAddAttValues\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_CANT_ADD_ATT_VALUES']/*\"/>\t\n            <unmanaged>ERROR_DS_CANT_ADD_ATT_VALUES</unmanaged>\t\n            <unmanaged-short>ERROR_DS_CANT_ADD_ATT_VALUES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsSingleValueConstraint\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_SINGLE_VALUE_CONSTRAINT']/*\"/>\t\n            <unmanaged>ERROR_DS_SINGLE_VALUE_CONSTRAINT</unmanaged>\t\n            <unmanaged-short>ERROR_DS_SINGLE_VALUE_CONSTRAINT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsRangeConstraint\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_RANGE_CONSTRAINT']/*\"/>\t\n            <unmanaged>ERROR_DS_RANGE_CONSTRAINT</unmanaged>\t\n            <unmanaged-short>ERROR_DS_RANGE_CONSTRAINT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsAttValAlreadyExists\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_ATT_VAL_ALREADY_EXISTS']/*\"/>\t\n            <unmanaged>ERROR_DS_ATT_VAL_ALREADY_EXISTS</unmanaged>\t\n            <unmanaged-short>ERROR_DS_ATT_VAL_ALREADY_EXISTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsCantRemMissingAtt\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_CANT_REM_MISSING_ATT']/*\"/>\t\n            <unmanaged>ERROR_DS_CANT_REM_MISSING_ATT</unmanaged>\t\n            <unmanaged-short>ERROR_DS_CANT_REM_MISSING_ATT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsCantRemMissingAttVal\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_CANT_REM_MISSING_ATT_VAL']/*\"/>\t\n            <unmanaged>ERROR_DS_CANT_REM_MISSING_ATT_VAL</unmanaged>\t\n            <unmanaged-short>ERROR_DS_CANT_REM_MISSING_ATT_VAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsRootCantBeSubref\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_ROOT_CANT_BE_SUBREF']/*\"/>\t\n            <unmanaged>ERROR_DS_ROOT_CANT_BE_SUBREF</unmanaged>\t\n            <unmanaged-short>ERROR_DS_ROOT_CANT_BE_SUBREF</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsNoChaining\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_NO_CHAINING']/*\"/>\t\n            <unmanaged>ERROR_DS_NO_CHAINING</unmanaged>\t\n            <unmanaged-short>ERROR_DS_NO_CHAINING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsNoChainedEval\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_NO_CHAINED_EVAL']/*\"/>\t\n            <unmanaged>ERROR_DS_NO_CHAINED_EVAL</unmanaged>\t\n            <unmanaged-short>ERROR_DS_NO_CHAINED_EVAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsNoParentObject\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_NO_PARENT_OBJECT']/*\"/>\t\n            <unmanaged>ERROR_DS_NO_PARENT_OBJECT</unmanaged>\t\n            <unmanaged-short>ERROR_DS_NO_PARENT_OBJECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsParentIsAnAlias\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_PARENT_IS_AN_ALIAS']/*\"/>\t\n            <unmanaged>ERROR_DS_PARENT_IS_AN_ALIAS</unmanaged>\t\n            <unmanaged-short>ERROR_DS_PARENT_IS_AN_ALIAS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsCantMixMasterAndReps\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_CANT_MIX_MASTER_AND_REPS']/*\"/>\t\n            <unmanaged>ERROR_DS_CANT_MIX_MASTER_AND_REPS</unmanaged>\t\n            <unmanaged-short>ERROR_DS_CANT_MIX_MASTER_AND_REPS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsChildrenExist\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_CHILDREN_EXIST']/*\"/>\t\n            <unmanaged>ERROR_DS_CHILDREN_EXIST</unmanaged>\t\n            <unmanaged-short>ERROR_DS_CHILDREN_EXIST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsObjNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_OBJ_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_DS_OBJ_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_DS_OBJ_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsAliasedObjMissing\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_ALIASED_OBJ_MISSING']/*\"/>\t\n            <unmanaged>ERROR_DS_ALIASED_OBJ_MISSING</unmanaged>\t\n            <unmanaged-short>ERROR_DS_ALIASED_OBJ_MISSING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsBadNameSyntax\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_BAD_NAME_SYNTAX']/*\"/>\t\n            <unmanaged>ERROR_DS_BAD_NAME_SYNTAX</unmanaged>\t\n            <unmanaged-short>ERROR_DS_BAD_NAME_SYNTAX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsAliasPointsToAlias\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_ALIAS_POINTS_TO_ALIAS']/*\"/>\t\n            <unmanaged>ERROR_DS_ALIAS_POINTS_TO_ALIAS</unmanaged>\t\n            <unmanaged-short>ERROR_DS_ALIAS_POINTS_TO_ALIAS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsCantDerefAlias\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_CANT_DEREF_ALIAS']/*\"/>\t\n            <unmanaged>ERROR_DS_CANT_DEREF_ALIAS</unmanaged>\t\n            <unmanaged-short>ERROR_DS_CANT_DEREF_ALIAS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsOutOfScope\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_OUT_OF_SCOPE']/*\"/>\t\n            <unmanaged>ERROR_DS_OUT_OF_SCOPE</unmanaged>\t\n            <unmanaged-short>ERROR_DS_OUT_OF_SCOPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsObjectBeingRemoved\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_OBJECT_BEING_REMOVED']/*\"/>\t\n            <unmanaged>ERROR_DS_OBJECT_BEING_REMOVED</unmanaged>\t\n            <unmanaged-short>ERROR_DS_OBJECT_BEING_REMOVED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsCantDeleteDsaObj\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_CANT_DELETE_DSA_OBJ']/*\"/>\t\n            <unmanaged>ERROR_DS_CANT_DELETE_DSA_OBJ</unmanaged>\t\n            <unmanaged-short>ERROR_DS_CANT_DELETE_DSA_OBJ</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsGenericError\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_GENERIC_ERROR']/*\"/>\t\n            <unmanaged>ERROR_DS_GENERIC_ERROR</unmanaged>\t\n            <unmanaged-short>ERROR_DS_GENERIC_ERROR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsDsaMustBeIntMaster\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_DSA_MUST_BE_INT_MASTER']/*\"/>\t\n            <unmanaged>ERROR_DS_DSA_MUST_BE_INT_MASTER</unmanaged>\t\n            <unmanaged-short>ERROR_DS_DSA_MUST_BE_INT_MASTER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsClassNotDsa\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_CLASS_NOT_DSA']/*\"/>\t\n            <unmanaged>ERROR_DS_CLASS_NOT_DSA</unmanaged>\t\n            <unmanaged-short>ERROR_DS_CLASS_NOT_DSA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsInsuffAccessRights\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_INSUFF_ACCESS_RIGHTS']/*\"/>\t\n            <unmanaged>ERROR_DS_INSUFF_ACCESS_RIGHTS</unmanaged>\t\n            <unmanaged-short>ERROR_DS_INSUFF_ACCESS_RIGHTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsIllegalSuperior\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_ILLEGAL_SUPERIOR']/*\"/>\t\n            <unmanaged>ERROR_DS_ILLEGAL_SUPERIOR</unmanaged>\t\n            <unmanaged-short>ERROR_DS_ILLEGAL_SUPERIOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsAttributeOwnedBySam\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_ATTRIBUTE_OWNED_BY_SAM']/*\"/>\t\n            <unmanaged>ERROR_DS_ATTRIBUTE_OWNED_BY_SAM</unmanaged>\t\n            <unmanaged-short>ERROR_DS_ATTRIBUTE_OWNED_BY_SAM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsNameTooManyParts\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_NAME_TOO_MANY_PARTS']/*\"/>\t\n            <unmanaged>ERROR_DS_NAME_TOO_MANY_PARTS</unmanaged>\t\n            <unmanaged-short>ERROR_DS_NAME_TOO_MANY_PARTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsNameTooLong\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_NAME_TOO_LONG']/*\"/>\t\n            <unmanaged>ERROR_DS_NAME_TOO_LONG</unmanaged>\t\n            <unmanaged-short>ERROR_DS_NAME_TOO_LONG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsNameValueTooLong\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_NAME_VALUE_TOO_LONG']/*\"/>\t\n            <unmanaged>ERROR_DS_NAME_VALUE_TOO_LONG</unmanaged>\t\n            <unmanaged-short>ERROR_DS_NAME_VALUE_TOO_LONG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsNameUnparseable\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_NAME_UNPARSEABLE']/*\"/>\t\n            <unmanaged>ERROR_DS_NAME_UNPARSEABLE</unmanaged>\t\n            <unmanaged-short>ERROR_DS_NAME_UNPARSEABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsNameTypeUnknown\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_NAME_TYPE_UNKNOWN']/*\"/>\t\n            <unmanaged>ERROR_DS_NAME_TYPE_UNKNOWN</unmanaged>\t\n            <unmanaged-short>ERROR_DS_NAME_TYPE_UNKNOWN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsNotAnObject\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_NOT_AN_OBJECT']/*\"/>\t\n            <unmanaged>ERROR_DS_NOT_AN_OBJECT</unmanaged>\t\n            <unmanaged-short>ERROR_DS_NOT_AN_OBJECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsSecDescTooShort\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_SEC_DESC_TOO_SHORT']/*\"/>\t\n            <unmanaged>ERROR_DS_SEC_DESC_TOO_SHORT</unmanaged>\t\n            <unmanaged-short>ERROR_DS_SEC_DESC_TOO_SHORT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsSecDescInvalid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_SEC_DESC_INVALID']/*\"/>\t\n            <unmanaged>ERROR_DS_SEC_DESC_INVALID</unmanaged>\t\n            <unmanaged-short>ERROR_DS_SEC_DESC_INVALID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsNoDeletedName\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_NO_DELETED_NAME']/*\"/>\t\n            <unmanaged>ERROR_DS_NO_DELETED_NAME</unmanaged>\t\n            <unmanaged-short>ERROR_DS_NO_DELETED_NAME</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsSubrefMustHaveParent\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_SUBREF_MUST_HAVE_PARENT']/*\"/>\t\n            <unmanaged>ERROR_DS_SUBREF_MUST_HAVE_PARENT</unmanaged>\t\n            <unmanaged-short>ERROR_DS_SUBREF_MUST_HAVE_PARENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsNcnameMustBeNc\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_NCNAME_MUST_BE_NC']/*\"/>\t\n            <unmanaged>ERROR_DS_NCNAME_MUST_BE_NC</unmanaged>\t\n            <unmanaged-short>ERROR_DS_NCNAME_MUST_BE_NC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsCantAddSystemOnly\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_CANT_ADD_SYSTEM_ONLY']/*\"/>\t\n            <unmanaged>ERROR_DS_CANT_ADD_SYSTEM_ONLY</unmanaged>\t\n            <unmanaged-short>ERROR_DS_CANT_ADD_SYSTEM_ONLY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsClassMustBeConcrete\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_CLASS_MUST_BE_CONCRETE']/*\"/>\t\n            <unmanaged>ERROR_DS_CLASS_MUST_BE_CONCRETE</unmanaged>\t\n            <unmanaged-short>ERROR_DS_CLASS_MUST_BE_CONCRETE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsInvalidDmd\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_INVALID_DMD']/*\"/>\t\n            <unmanaged>ERROR_DS_INVALID_DMD</unmanaged>\t\n            <unmanaged-short>ERROR_DS_INVALID_DMD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsObjGuidExists\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_OBJ_GUID_EXISTS']/*\"/>\t\n            <unmanaged>ERROR_DS_OBJ_GUID_EXISTS</unmanaged>\t\n            <unmanaged-short>ERROR_DS_OBJ_GUID_EXISTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsNotOnBacklink\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_NOT_ON_BACKLINK']/*\"/>\t\n            <unmanaged>ERROR_DS_NOT_ON_BACKLINK</unmanaged>\t\n            <unmanaged-short>ERROR_DS_NOT_ON_BACKLINK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsNoCrossrefForNc\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_NO_CROSSREF_FOR_NC']/*\"/>\t\n            <unmanaged>ERROR_DS_NO_CROSSREF_FOR_NC</unmanaged>\t\n            <unmanaged-short>ERROR_DS_NO_CROSSREF_FOR_NC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsShuttingDown\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_SHUTTING_DOWN']/*\"/>\t\n            <unmanaged>ERROR_DS_SHUTTING_DOWN</unmanaged>\t\n            <unmanaged-short>ERROR_DS_SHUTTING_DOWN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsUnknownOperation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_UNKNOWN_OPERATION']/*\"/>\t\n            <unmanaged>ERROR_DS_UNKNOWN_OPERATION</unmanaged>\t\n            <unmanaged-short>ERROR_DS_UNKNOWN_OPERATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsInvalidRoleOwner\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_INVALID_ROLE_OWNER']/*\"/>\t\n            <unmanaged>ERROR_DS_INVALID_ROLE_OWNER</unmanaged>\t\n            <unmanaged-short>ERROR_DS_INVALID_ROLE_OWNER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsCouldntContactFsmo\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_COULDNT_CONTACT_FSMO']/*\"/>\t\n            <unmanaged>ERROR_DS_COULDNT_CONTACT_FSMO</unmanaged>\t\n            <unmanaged-short>ERROR_DS_COULDNT_CONTACT_FSMO</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsCrossNcDnRename\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_CROSS_NC_DN_RENAME']/*\"/>\t\n            <unmanaged>ERROR_DS_CROSS_NC_DN_RENAME</unmanaged>\t\n            <unmanaged-short>ERROR_DS_CROSS_NC_DN_RENAME</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsCantModSystemOnly\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_CANT_MOD_SYSTEM_ONLY']/*\"/>\t\n            <unmanaged>ERROR_DS_CANT_MOD_SYSTEM_ONLY</unmanaged>\t\n            <unmanaged-short>ERROR_DS_CANT_MOD_SYSTEM_ONLY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsReplicatorOnly\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_REPLICATOR_ONLY']/*\"/>\t\n            <unmanaged>ERROR_DS_REPLICATOR_ONLY</unmanaged>\t\n            <unmanaged-short>ERROR_DS_REPLICATOR_ONLY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsObjClassNotDefined\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_OBJ_CLASS_NOT_DEFINED']/*\"/>\t\n            <unmanaged>ERROR_DS_OBJ_CLASS_NOT_DEFINED</unmanaged>\t\n            <unmanaged-short>ERROR_DS_OBJ_CLASS_NOT_DEFINED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsObjClassNotSubclass\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_OBJ_CLASS_NOT_SUBCLASS']/*\"/>\t\n            <unmanaged>ERROR_DS_OBJ_CLASS_NOT_SUBCLASS</unmanaged>\t\n            <unmanaged-short>ERROR_DS_OBJ_CLASS_NOT_SUBCLASS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsNameReferenceInvalid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_NAME_REFERENCE_INVALID']/*\"/>\t\n            <unmanaged>ERROR_DS_NAME_REFERENCE_INVALID</unmanaged>\t\n            <unmanaged-short>ERROR_DS_NAME_REFERENCE_INVALID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsCrossRefExists\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_CROSS_REF_EXISTS']/*\"/>\t\n            <unmanaged>ERROR_DS_CROSS_REF_EXISTS</unmanaged>\t\n            <unmanaged-short>ERROR_DS_CROSS_REF_EXISTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsCantDelMasterCrossref\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_CANT_DEL_MASTER_CROSSREF']/*\"/>\t\n            <unmanaged>ERROR_DS_CANT_DEL_MASTER_CROSSREF</unmanaged>\t\n            <unmanaged-short>ERROR_DS_CANT_DEL_MASTER_CROSSREF</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsSubtreeNotifyNotNcHead\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_SUBTREE_NOTIFY_NOT_NC_HEAD']/*\"/>\t\n            <unmanaged>ERROR_DS_SUBTREE_NOTIFY_NOT_NC_HEAD</unmanaged>\t\n            <unmanaged-short>ERROR_DS_SUBTREE_NOTIFY_NOT_NC_HEAD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsNotifyFilterTooComplex\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_NOTIFY_FILTER_TOO_COMPLEX']/*\"/>\t\n            <unmanaged>ERROR_DS_NOTIFY_FILTER_TOO_COMPLEX</unmanaged>\t\n            <unmanaged-short>ERROR_DS_NOTIFY_FILTER_TOO_COMPLEX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsDupRdn\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_DUP_RDN']/*\"/>\t\n            <unmanaged>ERROR_DS_DUP_RDN</unmanaged>\t\n            <unmanaged-short>ERROR_DS_DUP_RDN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsDupOid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_DUP_OID']/*\"/>\t\n            <unmanaged>ERROR_DS_DUP_OID</unmanaged>\t\n            <unmanaged-short>ERROR_DS_DUP_OID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsDupMapiId\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_DUP_MAPI_ID']/*\"/>\t\n            <unmanaged>ERROR_DS_DUP_MAPI_ID</unmanaged>\t\n            <unmanaged-short>ERROR_DS_DUP_MAPI_ID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsDupSchemaIdGuid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_DUP_SCHEMA_ID_GUID']/*\"/>\t\n            <unmanaged>ERROR_DS_DUP_SCHEMA_ID_GUID</unmanaged>\t\n            <unmanaged-short>ERROR_DS_DUP_SCHEMA_ID_GUID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsDupLdapDisplayName\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_DUP_LDAP_DISPLAY_NAME']/*\"/>\t\n            <unmanaged>ERROR_DS_DUP_LDAP_DISPLAY_NAME</unmanaged>\t\n            <unmanaged-short>ERROR_DS_DUP_LDAP_DISPLAY_NAME</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsSemanticAttTest\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_SEMANTIC_ATT_TEST']/*\"/>\t\n            <unmanaged>ERROR_DS_SEMANTIC_ATT_TEST</unmanaged>\t\n            <unmanaged-short>ERROR_DS_SEMANTIC_ATT_TEST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsSyntaxMismatch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_SYNTAX_MISMATCH']/*\"/>\t\n            <unmanaged>ERROR_DS_SYNTAX_MISMATCH</unmanaged>\t\n            <unmanaged-short>ERROR_DS_SYNTAX_MISMATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsExistsInMustHave\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_EXISTS_IN_MUST_HAVE']/*\"/>\t\n            <unmanaged>ERROR_DS_EXISTS_IN_MUST_HAVE</unmanaged>\t\n            <unmanaged-short>ERROR_DS_EXISTS_IN_MUST_HAVE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsExistsInMayHave\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_EXISTS_IN_MAY_HAVE']/*\"/>\t\n            <unmanaged>ERROR_DS_EXISTS_IN_MAY_HAVE</unmanaged>\t\n            <unmanaged-short>ERROR_DS_EXISTS_IN_MAY_HAVE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsNonexistentMayHave\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_NONEXISTENT_MAY_HAVE']/*\"/>\t\n            <unmanaged>ERROR_DS_NONEXISTENT_MAY_HAVE</unmanaged>\t\n            <unmanaged-short>ERROR_DS_NONEXISTENT_MAY_HAVE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsNonexistentMustHave\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_NONEXISTENT_MUST_HAVE']/*\"/>\t\n            <unmanaged>ERROR_DS_NONEXISTENT_MUST_HAVE</unmanaged>\t\n            <unmanaged-short>ERROR_DS_NONEXISTENT_MUST_HAVE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsAuxClsTestFail\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_AUX_CLS_TEST_FAIL']/*\"/>\t\n            <unmanaged>ERROR_DS_AUX_CLS_TEST_FAIL</unmanaged>\t\n            <unmanaged-short>ERROR_DS_AUX_CLS_TEST_FAIL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsNonexistentPossSup\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_NONEXISTENT_POSS_SUP']/*\"/>\t\n            <unmanaged>ERROR_DS_NONEXISTENT_POSS_SUP</unmanaged>\t\n            <unmanaged-short>ERROR_DS_NONEXISTENT_POSS_SUP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsSubClsTestFail\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_SUB_CLS_TEST_FAIL']/*\"/>\t\n            <unmanaged>ERROR_DS_SUB_CLS_TEST_FAIL</unmanaged>\t\n            <unmanaged-short>ERROR_DS_SUB_CLS_TEST_FAIL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsBadRdnAttIdSyntax\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_BAD_RDN_ATT_ID_SYNTAX']/*\"/>\t\n            <unmanaged>ERROR_DS_BAD_RDN_ATT_ID_SYNTAX</unmanaged>\t\n            <unmanaged-short>ERROR_DS_BAD_RDN_ATT_ID_SYNTAX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsExistsInAuxCls\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_EXISTS_IN_AUX_CLS']/*\"/>\t\n            <unmanaged>ERROR_DS_EXISTS_IN_AUX_CLS</unmanaged>\t\n            <unmanaged-short>ERROR_DS_EXISTS_IN_AUX_CLS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsExistsInSubCls\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_EXISTS_IN_SUB_CLS']/*\"/>\t\n            <unmanaged>ERROR_DS_EXISTS_IN_SUB_CLS</unmanaged>\t\n            <unmanaged-short>ERROR_DS_EXISTS_IN_SUB_CLS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsExistsInPossSup\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_EXISTS_IN_POSS_SUP']/*\"/>\t\n            <unmanaged>ERROR_DS_EXISTS_IN_POSS_SUP</unmanaged>\t\n            <unmanaged-short>ERROR_DS_EXISTS_IN_POSS_SUP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsRecalcschemaFailed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_RECALCSCHEMA_FAILED']/*\"/>\t\n            <unmanaged>ERROR_DS_RECALCSCHEMA_FAILED</unmanaged>\t\n            <unmanaged-short>ERROR_DS_RECALCSCHEMA_FAILED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsTreeDeleteNotFinished\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_TREE_DELETE_NOT_FINISHED']/*\"/>\t\n            <unmanaged>ERROR_DS_TREE_DELETE_NOT_FINISHED</unmanaged>\t\n            <unmanaged-short>ERROR_DS_TREE_DELETE_NOT_FINISHED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsCantDelete\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_CANT_DELETE']/*\"/>\t\n            <unmanaged>ERROR_DS_CANT_DELETE</unmanaged>\t\n            <unmanaged-short>ERROR_DS_CANT_DELETE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsAttSchemaReqId\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_ATT_SCHEMA_REQ_ID']/*\"/>\t\n            <unmanaged>ERROR_DS_ATT_SCHEMA_REQ_ID</unmanaged>\t\n            <unmanaged-short>ERROR_DS_ATT_SCHEMA_REQ_ID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsBadAttSchemaSyntax\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_BAD_ATT_SCHEMA_SYNTAX']/*\"/>\t\n            <unmanaged>ERROR_DS_BAD_ATT_SCHEMA_SYNTAX</unmanaged>\t\n            <unmanaged-short>ERROR_DS_BAD_ATT_SCHEMA_SYNTAX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsCantCacheAtt\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_CANT_CACHE_ATT']/*\"/>\t\n            <unmanaged>ERROR_DS_CANT_CACHE_ATT</unmanaged>\t\n            <unmanaged-short>ERROR_DS_CANT_CACHE_ATT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsCantCacheClass\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_CANT_CACHE_CLASS']/*\"/>\t\n            <unmanaged>ERROR_DS_CANT_CACHE_CLASS</unmanaged>\t\n            <unmanaged-short>ERROR_DS_CANT_CACHE_CLASS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsCantRemoveAttCache\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_CANT_REMOVE_ATT_CACHE']/*\"/>\t\n            <unmanaged>ERROR_DS_CANT_REMOVE_ATT_CACHE</unmanaged>\t\n            <unmanaged-short>ERROR_DS_CANT_REMOVE_ATT_CACHE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsCantRemoveClassCache\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_CANT_REMOVE_CLASS_CACHE']/*\"/>\t\n            <unmanaged>ERROR_DS_CANT_REMOVE_CLASS_CACHE</unmanaged>\t\n            <unmanaged-short>ERROR_DS_CANT_REMOVE_CLASS_CACHE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsCantRetrieveDn\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_CANT_RETRIEVE_DN']/*\"/>\t\n            <unmanaged>ERROR_DS_CANT_RETRIEVE_DN</unmanaged>\t\n            <unmanaged-short>ERROR_DS_CANT_RETRIEVE_DN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsMissingSupref\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_MISSING_SUPREF']/*\"/>\t\n            <unmanaged>ERROR_DS_MISSING_SUPREF</unmanaged>\t\n            <unmanaged-short>ERROR_DS_MISSING_SUPREF</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsCantRetrieveInstance\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_CANT_RETRIEVE_INSTANCE']/*\"/>\t\n            <unmanaged>ERROR_DS_CANT_RETRIEVE_INSTANCE</unmanaged>\t\n            <unmanaged-short>ERROR_DS_CANT_RETRIEVE_INSTANCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsCodeInconsistency\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_CODE_INCONSISTENCY']/*\"/>\t\n            <unmanaged>ERROR_DS_CODE_INCONSISTENCY</unmanaged>\t\n            <unmanaged-short>ERROR_DS_CODE_INCONSISTENCY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsDatabaseError\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_DATABASE_ERROR']/*\"/>\t\n            <unmanaged>ERROR_DS_DATABASE_ERROR</unmanaged>\t\n            <unmanaged-short>ERROR_DS_DATABASE_ERROR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsGovernsidMissing\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_GOVERNSID_MISSING']/*\"/>\t\n            <unmanaged>ERROR_DS_GOVERNSID_MISSING</unmanaged>\t\n            <unmanaged-short>ERROR_DS_GOVERNSID_MISSING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsMissingExpectedAtt\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_MISSING_EXPECTED_ATT']/*\"/>\t\n            <unmanaged>ERROR_DS_MISSING_EXPECTED_ATT</unmanaged>\t\n            <unmanaged-short>ERROR_DS_MISSING_EXPECTED_ATT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsNcnameMissingCrRef\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_NCNAME_MISSING_CR_REF']/*\"/>\t\n            <unmanaged>ERROR_DS_NCNAME_MISSING_CR_REF</unmanaged>\t\n            <unmanaged-short>ERROR_DS_NCNAME_MISSING_CR_REF</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsSecurityCheckingError\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_SECURITY_CHECKING_ERROR']/*\"/>\t\n            <unmanaged>ERROR_DS_SECURITY_CHECKING_ERROR</unmanaged>\t\n            <unmanaged-short>ERROR_DS_SECURITY_CHECKING_ERROR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsSchemaNotLoaded\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_SCHEMA_NOT_LOADED']/*\"/>\t\n            <unmanaged>ERROR_DS_SCHEMA_NOT_LOADED</unmanaged>\t\n            <unmanaged-short>ERROR_DS_SCHEMA_NOT_LOADED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsSchemaAllocFailed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_SCHEMA_ALLOC_FAILED']/*\"/>\t\n            <unmanaged>ERROR_DS_SCHEMA_ALLOC_FAILED</unmanaged>\t\n            <unmanaged-short>ERROR_DS_SCHEMA_ALLOC_FAILED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsAttSchemaReqSyntax\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_ATT_SCHEMA_REQ_SYNTAX']/*\"/>\t\n            <unmanaged>ERROR_DS_ATT_SCHEMA_REQ_SYNTAX</unmanaged>\t\n            <unmanaged-short>ERROR_DS_ATT_SCHEMA_REQ_SYNTAX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsGcverifyError\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_GCVERIFY_ERROR']/*\"/>\t\n            <unmanaged>ERROR_DS_GCVERIFY_ERROR</unmanaged>\t\n            <unmanaged-short>ERROR_DS_GCVERIFY_ERROR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsDraSchemaMismatch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_DRA_SCHEMA_MISMATCH']/*\"/>\t\n            <unmanaged>ERROR_DS_DRA_SCHEMA_MISMATCH</unmanaged>\t\n            <unmanaged-short>ERROR_DS_DRA_SCHEMA_MISMATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsCantFindDsaObj\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_CANT_FIND_DSA_OBJ']/*\"/>\t\n            <unmanaged>ERROR_DS_CANT_FIND_DSA_OBJ</unmanaged>\t\n            <unmanaged-short>ERROR_DS_CANT_FIND_DSA_OBJ</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsCantFindExpectedNc\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_CANT_FIND_EXPECTED_NC']/*\"/>\t\n            <unmanaged>ERROR_DS_CANT_FIND_EXPECTED_NC</unmanaged>\t\n            <unmanaged-short>ERROR_DS_CANT_FIND_EXPECTED_NC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsCantFindNcInCache\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_CANT_FIND_NC_IN_CACHE']/*\"/>\t\n            <unmanaged>ERROR_DS_CANT_FIND_NC_IN_CACHE</unmanaged>\t\n            <unmanaged-short>ERROR_DS_CANT_FIND_NC_IN_CACHE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsCantRetrieveChild\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_CANT_RETRIEVE_CHILD']/*\"/>\t\n            <unmanaged>ERROR_DS_CANT_RETRIEVE_CHILD</unmanaged>\t\n            <unmanaged-short>ERROR_DS_CANT_RETRIEVE_CHILD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsSecurityIllegalModify\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_SECURITY_ILLEGAL_MODIFY']/*\"/>\t\n            <unmanaged>ERROR_DS_SECURITY_ILLEGAL_MODIFY</unmanaged>\t\n            <unmanaged-short>ERROR_DS_SECURITY_ILLEGAL_MODIFY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsCantReplaceHiddenRec\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_CANT_REPLACE_HIDDEN_REC']/*\"/>\t\n            <unmanaged>ERROR_DS_CANT_REPLACE_HIDDEN_REC</unmanaged>\t\n            <unmanaged-short>ERROR_DS_CANT_REPLACE_HIDDEN_REC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsBadHierarchyFile\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_BAD_HIERARCHY_FILE']/*\"/>\t\n            <unmanaged>ERROR_DS_BAD_HIERARCHY_FILE</unmanaged>\t\n            <unmanaged-short>ERROR_DS_BAD_HIERARCHY_FILE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsBuildHierarchyTableFailed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_BUILD_HIERARCHY_TABLE_FAILED']/*\"/>\t\n            <unmanaged>ERROR_DS_BUILD_HIERARCHY_TABLE_FAILED</unmanaged>\t\n            <unmanaged-short>ERROR_DS_BUILD_HIERARCHY_TABLE_FAILED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsConfigParamMissing\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_CONFIG_PARAM_MISSING']/*\"/>\t\n            <unmanaged>ERROR_DS_CONFIG_PARAM_MISSING</unmanaged>\t\n            <unmanaged-short>ERROR_DS_CONFIG_PARAM_MISSING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsCountingAbIndicesFailed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_COUNTING_AB_INDICES_FAILED']/*\"/>\t\n            <unmanaged>ERROR_DS_COUNTING_AB_INDICES_FAILED</unmanaged>\t\n            <unmanaged-short>ERROR_DS_COUNTING_AB_INDICES_FAILED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsHierarchyTableMallocFailed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_HIERARCHY_TABLE_MALLOC_FAILED']/*\"/>\t\n            <unmanaged>ERROR_DS_HIERARCHY_TABLE_MALLOC_FAILED</unmanaged>\t\n            <unmanaged-short>ERROR_DS_HIERARCHY_TABLE_MALLOC_FAILED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsInternalFailure\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_INTERNAL_FAILURE']/*\"/>\t\n            <unmanaged>ERROR_DS_INTERNAL_FAILURE</unmanaged>\t\n            <unmanaged-short>ERROR_DS_INTERNAL_FAILURE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsUnknownError\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_UNKNOWN_ERROR']/*\"/>\t\n            <unmanaged>ERROR_DS_UNKNOWN_ERROR</unmanaged>\t\n            <unmanaged-short>ERROR_DS_UNKNOWN_ERROR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsRootRequiresClassTop\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_ROOT_REQUIRES_CLASS_TOP']/*\"/>\t\n            <unmanaged>ERROR_DS_ROOT_REQUIRES_CLASS_TOP</unmanaged>\t\n            <unmanaged-short>ERROR_DS_ROOT_REQUIRES_CLASS_TOP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsRefusingFsmoRoles\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_REFUSING_FSMO_ROLES']/*\"/>\t\n            <unmanaged>ERROR_DS_REFUSING_FSMO_ROLES</unmanaged>\t\n            <unmanaged-short>ERROR_DS_REFUSING_FSMO_ROLES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsMissingFsmoSettings\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_MISSING_FSMO_SETTINGS']/*\"/>\t\n            <unmanaged>ERROR_DS_MISSING_FSMO_SETTINGS</unmanaged>\t\n            <unmanaged-short>ERROR_DS_MISSING_FSMO_SETTINGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsUnableToSurrenderRoles\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_UNABLE_TO_SURRENDER_ROLES']/*\"/>\t\n            <unmanaged>ERROR_DS_UNABLE_TO_SURRENDER_ROLES</unmanaged>\t\n            <unmanaged-short>ERROR_DS_UNABLE_TO_SURRENDER_ROLES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsDraGeneric\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_DRA_GENERIC']/*\"/>\t\n            <unmanaged>ERROR_DS_DRA_GENERIC</unmanaged>\t\n            <unmanaged-short>ERROR_DS_DRA_GENERIC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsDraInvalidParameter\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_DRA_INVALID_PARAMETER']/*\"/>\t\n            <unmanaged>ERROR_DS_DRA_INVALID_PARAMETER</unmanaged>\t\n            <unmanaged-short>ERROR_DS_DRA_INVALID_PARAMETER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsDraBusy\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_DRA_BUSY']/*\"/>\t\n            <unmanaged>ERROR_DS_DRA_BUSY</unmanaged>\t\n            <unmanaged-short>ERROR_DS_DRA_BUSY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsDraBadDn\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_DRA_BAD_DN']/*\"/>\t\n            <unmanaged>ERROR_DS_DRA_BAD_DN</unmanaged>\t\n            <unmanaged-short>ERROR_DS_DRA_BAD_DN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsDraBadNc\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_DRA_BAD_NC']/*\"/>\t\n            <unmanaged>ERROR_DS_DRA_BAD_NC</unmanaged>\t\n            <unmanaged-short>ERROR_DS_DRA_BAD_NC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsDraDnExists\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_DRA_DN_EXISTS']/*\"/>\t\n            <unmanaged>ERROR_DS_DRA_DN_EXISTS</unmanaged>\t\n            <unmanaged-short>ERROR_DS_DRA_DN_EXISTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsDraInternalError\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_DRA_INTERNAL_ERROR']/*\"/>\t\n            <unmanaged>ERROR_DS_DRA_INTERNAL_ERROR</unmanaged>\t\n            <unmanaged-short>ERROR_DS_DRA_INTERNAL_ERROR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsDraInconsistentDit\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_DRA_INCONSISTENT_DIT']/*\"/>\t\n            <unmanaged>ERROR_DS_DRA_INCONSISTENT_DIT</unmanaged>\t\n            <unmanaged-short>ERROR_DS_DRA_INCONSISTENT_DIT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsDraConnectionFailed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_DRA_CONNECTION_FAILED']/*\"/>\t\n            <unmanaged>ERROR_DS_DRA_CONNECTION_FAILED</unmanaged>\t\n            <unmanaged-short>ERROR_DS_DRA_CONNECTION_FAILED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsDraBadInstanceType\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_DRA_BAD_INSTANCE_TYPE']/*\"/>\t\n            <unmanaged>ERROR_DS_DRA_BAD_INSTANCE_TYPE</unmanaged>\t\n            <unmanaged-short>ERROR_DS_DRA_BAD_INSTANCE_TYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsDraOutOfMem\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_DRA_OUT_OF_MEM']/*\"/>\t\n            <unmanaged>ERROR_DS_DRA_OUT_OF_MEM</unmanaged>\t\n            <unmanaged-short>ERROR_DS_DRA_OUT_OF_MEM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsDraMailProblem\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_DRA_MAIL_PROBLEM']/*\"/>\t\n            <unmanaged>ERROR_DS_DRA_MAIL_PROBLEM</unmanaged>\t\n            <unmanaged-short>ERROR_DS_DRA_MAIL_PROBLEM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsDraRefAlreadyExists\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_DRA_REF_ALREADY_EXISTS']/*\"/>\t\n            <unmanaged>ERROR_DS_DRA_REF_ALREADY_EXISTS</unmanaged>\t\n            <unmanaged-short>ERROR_DS_DRA_REF_ALREADY_EXISTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsDraRefNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_DRA_REF_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_DS_DRA_REF_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_DS_DRA_REF_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsDraObjIsRepSource\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_DRA_OBJ_IS_REP_SOURCE']/*\"/>\t\n            <unmanaged>ERROR_DS_DRA_OBJ_IS_REP_SOURCE</unmanaged>\t\n            <unmanaged-short>ERROR_DS_DRA_OBJ_IS_REP_SOURCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsDraDbError\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_DRA_DB_ERROR']/*\"/>\t\n            <unmanaged>ERROR_DS_DRA_DB_ERROR</unmanaged>\t\n            <unmanaged-short>ERROR_DS_DRA_DB_ERROR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsDraNoReplica\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_DRA_NO_REPLICA']/*\"/>\t\n            <unmanaged>ERROR_DS_DRA_NO_REPLICA</unmanaged>\t\n            <unmanaged-short>ERROR_DS_DRA_NO_REPLICA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsDraAccessDenied\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_DRA_ACCESS_DENIED']/*\"/>\t\n            <unmanaged>ERROR_DS_DRA_ACCESS_DENIED</unmanaged>\t\n            <unmanaged-short>ERROR_DS_DRA_ACCESS_DENIED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsDraNotSupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_DRA_NOT_SUPPORTED']/*\"/>\t\n            <unmanaged>ERROR_DS_DRA_NOT_SUPPORTED</unmanaged>\t\n            <unmanaged-short>ERROR_DS_DRA_NOT_SUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsDraRpcCancelled\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_DRA_RPC_CANCELLED']/*\"/>\t\n            <unmanaged>ERROR_DS_DRA_RPC_CANCELLED</unmanaged>\t\n            <unmanaged-short>ERROR_DS_DRA_RPC_CANCELLED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsDraSourceDisabled\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_DRA_SOURCE_DISABLED']/*\"/>\t\n            <unmanaged>ERROR_DS_DRA_SOURCE_DISABLED</unmanaged>\t\n            <unmanaged-short>ERROR_DS_DRA_SOURCE_DISABLED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsDraSinkDisabled\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_DRA_SINK_DISABLED']/*\"/>\t\n            <unmanaged>ERROR_DS_DRA_SINK_DISABLED</unmanaged>\t\n            <unmanaged-short>ERROR_DS_DRA_SINK_DISABLED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsDraNameCollision\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_DRA_NAME_COLLISION']/*\"/>\t\n            <unmanaged>ERROR_DS_DRA_NAME_COLLISION</unmanaged>\t\n            <unmanaged-short>ERROR_DS_DRA_NAME_COLLISION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsDraSourceReinstalled\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_DRA_SOURCE_REINSTALLED']/*\"/>\t\n            <unmanaged>ERROR_DS_DRA_SOURCE_REINSTALLED</unmanaged>\t\n            <unmanaged-short>ERROR_DS_DRA_SOURCE_REINSTALLED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsDraMissingParent\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_DRA_MISSING_PARENT']/*\"/>\t\n            <unmanaged>ERROR_DS_DRA_MISSING_PARENT</unmanaged>\t\n            <unmanaged-short>ERROR_DS_DRA_MISSING_PARENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsDraPreempted\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_DRA_PREEMPTED']/*\"/>\t\n            <unmanaged>ERROR_DS_DRA_PREEMPTED</unmanaged>\t\n            <unmanaged-short>ERROR_DS_DRA_PREEMPTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsDraAbandonSync\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_DRA_ABANDON_SYNC']/*\"/>\t\n            <unmanaged>ERROR_DS_DRA_ABANDON_SYNC</unmanaged>\t\n            <unmanaged-short>ERROR_DS_DRA_ABANDON_SYNC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsDraShutdown\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_DRA_SHUTDOWN']/*\"/>\t\n            <unmanaged>ERROR_DS_DRA_SHUTDOWN</unmanaged>\t\n            <unmanaged-short>ERROR_DS_DRA_SHUTDOWN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsDraIncompatiblePartialSet\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_DRA_INCOMPATIBLE_PARTIAL_SET']/*\"/>\t\n            <unmanaged>ERROR_DS_DRA_INCOMPATIBLE_PARTIAL_SET</unmanaged>\t\n            <unmanaged-short>ERROR_DS_DRA_INCOMPATIBLE_PARTIAL_SET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsDraSourceIsPartialReplica\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_DRA_SOURCE_IS_PARTIAL_REPLICA']/*\"/>\t\n            <unmanaged>ERROR_DS_DRA_SOURCE_IS_PARTIAL_REPLICA</unmanaged>\t\n            <unmanaged-short>ERROR_DS_DRA_SOURCE_IS_PARTIAL_REPLICA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsDraExtnConnectionFailed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_DRA_EXTN_CONNECTION_FAILED']/*\"/>\t\n            <unmanaged>ERROR_DS_DRA_EXTN_CONNECTION_FAILED</unmanaged>\t\n            <unmanaged-short>ERROR_DS_DRA_EXTN_CONNECTION_FAILED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsInstallSchemaMismatch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_INSTALL_SCHEMA_MISMATCH']/*\"/>\t\n            <unmanaged>ERROR_DS_INSTALL_SCHEMA_MISMATCH</unmanaged>\t\n            <unmanaged-short>ERROR_DS_INSTALL_SCHEMA_MISMATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsDupLinkId\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_DUP_LINK_ID']/*\"/>\t\n            <unmanaged>ERROR_DS_DUP_LINK_ID</unmanaged>\t\n            <unmanaged-short>ERROR_DS_DUP_LINK_ID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsNameErrorResolving\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_NAME_ERROR_RESOLVING']/*\"/>\t\n            <unmanaged>ERROR_DS_NAME_ERROR_RESOLVING</unmanaged>\t\n            <unmanaged-short>ERROR_DS_NAME_ERROR_RESOLVING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsNameErrorNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_NAME_ERROR_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_DS_NAME_ERROR_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_DS_NAME_ERROR_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsNameErrorNotUnique\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_NAME_ERROR_NOT_UNIQUE']/*\"/>\t\n            <unmanaged>ERROR_DS_NAME_ERROR_NOT_UNIQUE</unmanaged>\t\n            <unmanaged-short>ERROR_DS_NAME_ERROR_NOT_UNIQUE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsNameErrorNoMapping\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_NAME_ERROR_NO_MAPPING']/*\"/>\t\n            <unmanaged>ERROR_DS_NAME_ERROR_NO_MAPPING</unmanaged>\t\n            <unmanaged-short>ERROR_DS_NAME_ERROR_NO_MAPPING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsNameErrorDomainOnly\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_NAME_ERROR_DOMAIN_ONLY']/*\"/>\t\n            <unmanaged>ERROR_DS_NAME_ERROR_DOMAIN_ONLY</unmanaged>\t\n            <unmanaged-short>ERROR_DS_NAME_ERROR_DOMAIN_ONLY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsNameErrorNoSyntacticalMapping\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_NAME_ERROR_NO_SYNTACTICAL_MAPPING']/*\"/>\t\n            <unmanaged>ERROR_DS_NAME_ERROR_NO_SYNTACTICAL_MAPPING</unmanaged>\t\n            <unmanaged-short>ERROR_DS_NAME_ERROR_NO_SYNTACTICAL_MAPPING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsConstructedAttMod\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_CONSTRUCTED_ATT_MOD']/*\"/>\t\n            <unmanaged>ERROR_DS_CONSTRUCTED_ATT_MOD</unmanaged>\t\n            <unmanaged-short>ERROR_DS_CONSTRUCTED_ATT_MOD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsWrongOmObjClass\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_WRONG_OM_OBJ_CLASS']/*\"/>\t\n            <unmanaged>ERROR_DS_WRONG_OM_OBJ_CLASS</unmanaged>\t\n            <unmanaged-short>ERROR_DS_WRONG_OM_OBJ_CLASS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsDraReplPending\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_DRA_REPL_PENDING']/*\"/>\t\n            <unmanaged>ERROR_DS_DRA_REPL_PENDING</unmanaged>\t\n            <unmanaged-short>ERROR_DS_DRA_REPL_PENDING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsDsRequired\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_DS_REQUIRED']/*\"/>\t\n            <unmanaged>ERROR_DS_DS_REQUIRED</unmanaged>\t\n            <unmanaged-short>ERROR_DS_DS_REQUIRED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsInvalidLdapDisplayName\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_INVALID_LDAP_DISPLAY_NAME']/*\"/>\t\n            <unmanaged>ERROR_DS_INVALID_LDAP_DISPLAY_NAME</unmanaged>\t\n            <unmanaged-short>ERROR_DS_INVALID_LDAP_DISPLAY_NAME</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsNonBaseSearch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_NON_BASE_SEARCH']/*\"/>\t\n            <unmanaged>ERROR_DS_NON_BASE_SEARCH</unmanaged>\t\n            <unmanaged-short>ERROR_DS_NON_BASE_SEARCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsCantRetrieveAtts\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_CANT_RETRIEVE_ATTS']/*\"/>\t\n            <unmanaged>ERROR_DS_CANT_RETRIEVE_ATTS</unmanaged>\t\n            <unmanaged-short>ERROR_DS_CANT_RETRIEVE_ATTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsBacklinkWithoutLink\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_BACKLINK_WITHOUT_LINK']/*\"/>\t\n            <unmanaged>ERROR_DS_BACKLINK_WITHOUT_LINK</unmanaged>\t\n            <unmanaged-short>ERROR_DS_BACKLINK_WITHOUT_LINK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsEpochMismatch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_EPOCH_MISMATCH']/*\"/>\t\n            <unmanaged>ERROR_DS_EPOCH_MISMATCH</unmanaged>\t\n            <unmanaged-short>ERROR_DS_EPOCH_MISMATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsSrcNameMismatch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_SRC_NAME_MISMATCH']/*\"/>\t\n            <unmanaged>ERROR_DS_SRC_NAME_MISMATCH</unmanaged>\t\n            <unmanaged-short>ERROR_DS_SRC_NAME_MISMATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsSrcAndDstNcIdentical\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_SRC_AND_DST_NC_IDENTICAL']/*\"/>\t\n            <unmanaged>ERROR_DS_SRC_AND_DST_NC_IDENTICAL</unmanaged>\t\n            <unmanaged-short>ERROR_DS_SRC_AND_DST_NC_IDENTICAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsDstNcMismatch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_DST_NC_MISMATCH']/*\"/>\t\n            <unmanaged>ERROR_DS_DST_NC_MISMATCH</unmanaged>\t\n            <unmanaged-short>ERROR_DS_DST_NC_MISMATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsNotAuthoritiveForDstNc\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_NOT_AUTHORITIVE_FOR_DST_NC']/*\"/>\t\n            <unmanaged>ERROR_DS_NOT_AUTHORITIVE_FOR_DST_NC</unmanaged>\t\n            <unmanaged-short>ERROR_DS_NOT_AUTHORITIVE_FOR_DST_NC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsSrcGuidMismatch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_SRC_GUID_MISMATCH']/*\"/>\t\n            <unmanaged>ERROR_DS_SRC_GUID_MISMATCH</unmanaged>\t\n            <unmanaged-short>ERROR_DS_SRC_GUID_MISMATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsCantMoveDeletedObject\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_CANT_MOVE_DELETED_OBJECT']/*\"/>\t\n            <unmanaged>ERROR_DS_CANT_MOVE_DELETED_OBJECT</unmanaged>\t\n            <unmanaged-short>ERROR_DS_CANT_MOVE_DELETED_OBJECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsPdcOperationInProgress\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_PDC_OPERATION_IN_PROGRESS']/*\"/>\t\n            <unmanaged>ERROR_DS_PDC_OPERATION_IN_PROGRESS</unmanaged>\t\n            <unmanaged-short>ERROR_DS_PDC_OPERATION_IN_PROGRESS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsCrossDomainCleanupReqd\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_CROSS_DOMAIN_CLEANUP_REQD']/*\"/>\t\n            <unmanaged>ERROR_DS_CROSS_DOMAIN_CLEANUP_REQD</unmanaged>\t\n            <unmanaged-short>ERROR_DS_CROSS_DOMAIN_CLEANUP_REQD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsIllegalXdomMoveOperation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_ILLEGAL_XDOM_MOVE_OPERATION']/*\"/>\t\n            <unmanaged>ERROR_DS_ILLEGAL_XDOM_MOVE_OPERATION</unmanaged>\t\n            <unmanaged-short>ERROR_DS_ILLEGAL_XDOM_MOVE_OPERATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsCantWithAcctGroupMembershps\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_CANT_WITH_ACCT_GROUP_MEMBERSHPS']/*\"/>\t\n            <unmanaged>ERROR_DS_CANT_WITH_ACCT_GROUP_MEMBERSHPS</unmanaged>\t\n            <unmanaged-short>ERROR_DS_CANT_WITH_ACCT_GROUP_MEMBERSHPS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsNcMustHaveNcParent\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_NC_MUST_HAVE_NC_PARENT']/*\"/>\t\n            <unmanaged>ERROR_DS_NC_MUST_HAVE_NC_PARENT</unmanaged>\t\n            <unmanaged-short>ERROR_DS_NC_MUST_HAVE_NC_PARENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsCrImpossibleToValidate\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_CR_IMPOSSIBLE_TO_VALIDATE']/*\"/>\t\n            <unmanaged>ERROR_DS_CR_IMPOSSIBLE_TO_VALIDATE</unmanaged>\t\n            <unmanaged-short>ERROR_DS_CR_IMPOSSIBLE_TO_VALIDATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsDstDomainNotNative\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_DST_DOMAIN_NOT_NATIVE']/*\"/>\t\n            <unmanaged>ERROR_DS_DST_DOMAIN_NOT_NATIVE</unmanaged>\t\n            <unmanaged-short>ERROR_DS_DST_DOMAIN_NOT_NATIVE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsMissingInfrastructureContainer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_MISSING_INFRASTRUCTURE_CONTAINER']/*\"/>\t\n            <unmanaged>ERROR_DS_MISSING_INFRASTRUCTURE_CONTAINER</unmanaged>\t\n            <unmanaged-short>ERROR_DS_MISSING_INFRASTRUCTURE_CONTAINER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsCantMoveAccountGroup\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_CANT_MOVE_ACCOUNT_GROUP']/*\"/>\t\n            <unmanaged>ERROR_DS_CANT_MOVE_ACCOUNT_GROUP</unmanaged>\t\n            <unmanaged-short>ERROR_DS_CANT_MOVE_ACCOUNT_GROUP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsCantMoveResourceGroup\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_CANT_MOVE_RESOURCE_GROUP']/*\"/>\t\n            <unmanaged>ERROR_DS_CANT_MOVE_RESOURCE_GROUP</unmanaged>\t\n            <unmanaged-short>ERROR_DS_CANT_MOVE_RESOURCE_GROUP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsInvalidSearchFlag\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_INVALID_SEARCH_FLAG']/*\"/>\t\n            <unmanaged>ERROR_DS_INVALID_SEARCH_FLAG</unmanaged>\t\n            <unmanaged-short>ERROR_DS_INVALID_SEARCH_FLAG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsNoTreeDeleteAboveNc\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_NO_TREE_DELETE_ABOVE_NC']/*\"/>\t\n            <unmanaged>ERROR_DS_NO_TREE_DELETE_ABOVE_NC</unmanaged>\t\n            <unmanaged-short>ERROR_DS_NO_TREE_DELETE_ABOVE_NC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsCouldntLockTreeForDelete\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_COULDNT_LOCK_TREE_FOR_DELETE']/*\"/>\t\n            <unmanaged>ERROR_DS_COULDNT_LOCK_TREE_FOR_DELETE</unmanaged>\t\n            <unmanaged-short>ERROR_DS_COULDNT_LOCK_TREE_FOR_DELETE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsCouldntIdentifyObjectsForTreeDelete\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_COULDNT_IDENTIFY_OBJECTS_FOR_TREE_DELETE']/*\"/>\t\n            <unmanaged>ERROR_DS_COULDNT_IDENTIFY_OBJECTS_FOR_TREE_DELETE</unmanaged>\t\n            <unmanaged-short>ERROR_DS_COULDNT_IDENTIFY_OBJECTS_FOR_TREE_DELETE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsSamInitFailure\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_SAM_INIT_FAILURE']/*\"/>\t\n            <unmanaged>ERROR_DS_SAM_INIT_FAILURE</unmanaged>\t\n            <unmanaged-short>ERROR_DS_SAM_INIT_FAILURE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsSensitiveGroupViolation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_SENSITIVE_GROUP_VIOLATION']/*\"/>\t\n            <unmanaged>ERROR_DS_SENSITIVE_GROUP_VIOLATION</unmanaged>\t\n            <unmanaged-short>ERROR_DS_SENSITIVE_GROUP_VIOLATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsCantModPrimarygroupid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_CANT_MOD_PRIMARYGROUPID']/*\"/>\t\n            <unmanaged>ERROR_DS_CANT_MOD_PRIMARYGROUPID</unmanaged>\t\n            <unmanaged-short>ERROR_DS_CANT_MOD_PRIMARYGROUPID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsIllegalBaseSchemaMod\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_ILLEGAL_BASE_SCHEMA_MOD']/*\"/>\t\n            <unmanaged>ERROR_DS_ILLEGAL_BASE_SCHEMA_MOD</unmanaged>\t\n            <unmanaged-short>ERROR_DS_ILLEGAL_BASE_SCHEMA_MOD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsNonsafeSchemaChange\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_NONSAFE_SCHEMA_CHANGE']/*\"/>\t\n            <unmanaged>ERROR_DS_NONSAFE_SCHEMA_CHANGE</unmanaged>\t\n            <unmanaged-short>ERROR_DS_NONSAFE_SCHEMA_CHANGE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsSchemaUpdateDisallowed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_SCHEMA_UPDATE_DISALLOWED']/*\"/>\t\n            <unmanaged>ERROR_DS_SCHEMA_UPDATE_DISALLOWED</unmanaged>\t\n            <unmanaged-short>ERROR_DS_SCHEMA_UPDATE_DISALLOWED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsCantCreateUnderSchema\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_CANT_CREATE_UNDER_SCHEMA']/*\"/>\t\n            <unmanaged>ERROR_DS_CANT_CREATE_UNDER_SCHEMA</unmanaged>\t\n            <unmanaged-short>ERROR_DS_CANT_CREATE_UNDER_SCHEMA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsInstallNoSrcSchVersion\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_INSTALL_NO_SRC_SCH_VERSION']/*\"/>\t\n            <unmanaged>ERROR_DS_INSTALL_NO_SRC_SCH_VERSION</unmanaged>\t\n            <unmanaged-short>ERROR_DS_INSTALL_NO_SRC_SCH_VERSION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsInstallNoSchVersionInInifile\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_INSTALL_NO_SCH_VERSION_IN_INIFILE']/*\"/>\t\n            <unmanaged>ERROR_DS_INSTALL_NO_SCH_VERSION_IN_INIFILE</unmanaged>\t\n            <unmanaged-short>ERROR_DS_INSTALL_NO_SCH_VERSION_IN_INIFILE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsInvalidGroupType\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_INVALID_GROUP_TYPE']/*\"/>\t\n            <unmanaged>ERROR_DS_INVALID_GROUP_TYPE</unmanaged>\t\n            <unmanaged-short>ERROR_DS_INVALID_GROUP_TYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsNoNestGlobalgroupInMixeddomain\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_NO_NEST_GLOBALGROUP_IN_MIXEDDOMAIN']/*\"/>\t\n            <unmanaged>ERROR_DS_NO_NEST_GLOBALGROUP_IN_MIXEDDOMAIN</unmanaged>\t\n            <unmanaged-short>ERROR_DS_NO_NEST_GLOBALGROUP_IN_MIXEDDOMAIN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsNoNestLocalgroupInMixeddomain\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_NO_NEST_LOCALGROUP_IN_MIXEDDOMAIN']/*\"/>\t\n            <unmanaged>ERROR_DS_NO_NEST_LOCALGROUP_IN_MIXEDDOMAIN</unmanaged>\t\n            <unmanaged-short>ERROR_DS_NO_NEST_LOCALGROUP_IN_MIXEDDOMAIN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsGlobalCantHaveLocalMember\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_GLOBAL_CANT_HAVE_LOCAL_MEMBER']/*\"/>\t\n            <unmanaged>ERROR_DS_GLOBAL_CANT_HAVE_LOCAL_MEMBER</unmanaged>\t\n            <unmanaged-short>ERROR_DS_GLOBAL_CANT_HAVE_LOCAL_MEMBER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsGlobalCantHaveUniversalMember\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_GLOBAL_CANT_HAVE_UNIVERSAL_MEMBER']/*\"/>\t\n            <unmanaged>ERROR_DS_GLOBAL_CANT_HAVE_UNIVERSAL_MEMBER</unmanaged>\t\n            <unmanaged-short>ERROR_DS_GLOBAL_CANT_HAVE_UNIVERSAL_MEMBER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsUniversalCantHaveLocalMember\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_UNIVERSAL_CANT_HAVE_LOCAL_MEMBER']/*\"/>\t\n            <unmanaged>ERROR_DS_UNIVERSAL_CANT_HAVE_LOCAL_MEMBER</unmanaged>\t\n            <unmanaged-short>ERROR_DS_UNIVERSAL_CANT_HAVE_LOCAL_MEMBER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsGlobalCantHaveCrossdomainMember\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_GLOBAL_CANT_HAVE_CROSSDOMAIN_MEMBER']/*\"/>\t\n            <unmanaged>ERROR_DS_GLOBAL_CANT_HAVE_CROSSDOMAIN_MEMBER</unmanaged>\t\n            <unmanaged-short>ERROR_DS_GLOBAL_CANT_HAVE_CROSSDOMAIN_MEMBER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsLocalCantHaveCrossdomainLocalMember\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_LOCAL_CANT_HAVE_CROSSDOMAIN_LOCAL_MEMBER']/*\"/>\t\n            <unmanaged>ERROR_DS_LOCAL_CANT_HAVE_CROSSDOMAIN_LOCAL_MEMBER</unmanaged>\t\n            <unmanaged-short>ERROR_DS_LOCAL_CANT_HAVE_CROSSDOMAIN_LOCAL_MEMBER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsHavePrimaryMembers\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_HAVE_PRIMARY_MEMBERS']/*\"/>\t\n            <unmanaged>ERROR_DS_HAVE_PRIMARY_MEMBERS</unmanaged>\t\n            <unmanaged-short>ERROR_DS_HAVE_PRIMARY_MEMBERS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsStringSdConversionFailed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_STRING_SD_CONVERSION_FAILED']/*\"/>\t\n            <unmanaged>ERROR_DS_STRING_SD_CONVERSION_FAILED</unmanaged>\t\n            <unmanaged-short>ERROR_DS_STRING_SD_CONVERSION_FAILED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsNamingMasterGc\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_NAMING_MASTER_GC']/*\"/>\t\n            <unmanaged>ERROR_DS_NAMING_MASTER_GC</unmanaged>\t\n            <unmanaged-short>ERROR_DS_NAMING_MASTER_GC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsDnsLookupFailure\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_DNS_LOOKUP_FAILURE']/*\"/>\t\n            <unmanaged>ERROR_DS_DNS_LOOKUP_FAILURE</unmanaged>\t\n            <unmanaged-short>ERROR_DS_DNS_LOOKUP_FAILURE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsCouldntUpdateSpns\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_COULDNT_UPDATE_SPNS']/*\"/>\t\n            <unmanaged>ERROR_DS_COULDNT_UPDATE_SPNS</unmanaged>\t\n            <unmanaged-short>ERROR_DS_COULDNT_UPDATE_SPNS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsCantRetrieveSd\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_CANT_RETRIEVE_SD']/*\"/>\t\n            <unmanaged>ERROR_DS_CANT_RETRIEVE_SD</unmanaged>\t\n            <unmanaged-short>ERROR_DS_CANT_RETRIEVE_SD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsKeyNotUnique\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_KEY_NOT_UNIQUE']/*\"/>\t\n            <unmanaged>ERROR_DS_KEY_NOT_UNIQUE</unmanaged>\t\n            <unmanaged-short>ERROR_DS_KEY_NOT_UNIQUE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsWrongLinkedAttSyntax\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_WRONG_LINKED_ATT_SYNTAX']/*\"/>\t\n            <unmanaged>ERROR_DS_WRONG_LINKED_ATT_SYNTAX</unmanaged>\t\n            <unmanaged-short>ERROR_DS_WRONG_LINKED_ATT_SYNTAX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsSamNeedBootkeyPassword\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_SAM_NEED_BOOTKEY_PASSWORD']/*\"/>\t\n            <unmanaged>ERROR_DS_SAM_NEED_BOOTKEY_PASSWORD</unmanaged>\t\n            <unmanaged-short>ERROR_DS_SAM_NEED_BOOTKEY_PASSWORD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsSamNeedBootkeyFloppy\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_SAM_NEED_BOOTKEY_FLOPPY']/*\"/>\t\n            <unmanaged>ERROR_DS_SAM_NEED_BOOTKEY_FLOPPY</unmanaged>\t\n            <unmanaged-short>ERROR_DS_SAM_NEED_BOOTKEY_FLOPPY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsCantStart\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_CANT_START']/*\"/>\t\n            <unmanaged>ERROR_DS_CANT_START</unmanaged>\t\n            <unmanaged-short>ERROR_DS_CANT_START</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsInitFailure\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_INIT_FAILURE']/*\"/>\t\n            <unmanaged>ERROR_DS_INIT_FAILURE</unmanaged>\t\n            <unmanaged-short>ERROR_DS_INIT_FAILURE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsNoPktPrivacyOnConnection\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_NO_PKT_PRIVACY_ON_CONNECTION']/*\"/>\t\n            <unmanaged>ERROR_DS_NO_PKT_PRIVACY_ON_CONNECTION</unmanaged>\t\n            <unmanaged-short>ERROR_DS_NO_PKT_PRIVACY_ON_CONNECTION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsSourceDomainInForest\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_SOURCE_DOMAIN_IN_FOREST']/*\"/>\t\n            <unmanaged>ERROR_DS_SOURCE_DOMAIN_IN_FOREST</unmanaged>\t\n            <unmanaged-short>ERROR_DS_SOURCE_DOMAIN_IN_FOREST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsDestinationDomainNotInForest\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_DESTINATION_DOMAIN_NOT_IN_FOREST']/*\"/>\t\n            <unmanaged>ERROR_DS_DESTINATION_DOMAIN_NOT_IN_FOREST</unmanaged>\t\n            <unmanaged-short>ERROR_DS_DESTINATION_DOMAIN_NOT_IN_FOREST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsDestinationAuditingNotEnabled\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_DESTINATION_AUDITING_NOT_ENABLED']/*\"/>\t\n            <unmanaged>ERROR_DS_DESTINATION_AUDITING_NOT_ENABLED</unmanaged>\t\n            <unmanaged-short>ERROR_DS_DESTINATION_AUDITING_NOT_ENABLED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsCantFindDcForSrcDomain\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_CANT_FIND_DC_FOR_SRC_DOMAIN']/*\"/>\t\n            <unmanaged>ERROR_DS_CANT_FIND_DC_FOR_SRC_DOMAIN</unmanaged>\t\n            <unmanaged-short>ERROR_DS_CANT_FIND_DC_FOR_SRC_DOMAIN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsSrcObjNotGroupOrUser\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_SRC_OBJ_NOT_GROUP_OR_USER']/*\"/>\t\n            <unmanaged>ERROR_DS_SRC_OBJ_NOT_GROUP_OR_USER</unmanaged>\t\n            <unmanaged-short>ERROR_DS_SRC_OBJ_NOT_GROUP_OR_USER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsSrcSidExistsInForest\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_SRC_SID_EXISTS_IN_FOREST']/*\"/>\t\n            <unmanaged>ERROR_DS_SRC_SID_EXISTS_IN_FOREST</unmanaged>\t\n            <unmanaged-short>ERROR_DS_SRC_SID_EXISTS_IN_FOREST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsSrcAndDstObjectClassMismatch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_SRC_AND_DST_OBJECT_CLASS_MISMATCH']/*\"/>\t\n            <unmanaged>ERROR_DS_SRC_AND_DST_OBJECT_CLASS_MISMATCH</unmanaged>\t\n            <unmanaged-short>ERROR_DS_SRC_AND_DST_OBJECT_CLASS_MISMATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SamInitFailure\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SAM_INIT_FAILURE']/*\"/>\t\n            <unmanaged>ERROR_SAM_INIT_FAILURE</unmanaged>\t\n            <unmanaged-short>ERROR_SAM_INIT_FAILURE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsDraSchemaInfoShip\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_DRA_SCHEMA_INFO_SHIP']/*\"/>\t\n            <unmanaged>ERROR_DS_DRA_SCHEMA_INFO_SHIP</unmanaged>\t\n            <unmanaged-short>ERROR_DS_DRA_SCHEMA_INFO_SHIP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsDraSchemaConflict\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_DRA_SCHEMA_CONFLICT']/*\"/>\t\n            <unmanaged>ERROR_DS_DRA_SCHEMA_CONFLICT</unmanaged>\t\n            <unmanaged-short>ERROR_DS_DRA_SCHEMA_CONFLICT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsDraEarlierSchemaConflict\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_DRA_EARLIER_SCHEMA_CONFLICT']/*\"/>\t\n            <unmanaged>ERROR_DS_DRA_EARLIER_SCHEMA_CONFLICT</unmanaged>\t\n            <unmanaged-short>ERROR_DS_DRA_EARLIER_SCHEMA_CONFLICT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsDraObjNcMismatch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_DRA_OBJ_NC_MISMATCH']/*\"/>\t\n            <unmanaged>ERROR_DS_DRA_OBJ_NC_MISMATCH</unmanaged>\t\n            <unmanaged-short>ERROR_DS_DRA_OBJ_NC_MISMATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsNcStillHasDsas\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_NC_STILL_HAS_DSAS']/*\"/>\t\n            <unmanaged>ERROR_DS_NC_STILL_HAS_DSAS</unmanaged>\t\n            <unmanaged-short>ERROR_DS_NC_STILL_HAS_DSAS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsGcRequired\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_GC_REQUIRED']/*\"/>\t\n            <unmanaged>ERROR_DS_GC_REQUIRED</unmanaged>\t\n            <unmanaged-short>ERROR_DS_GC_REQUIRED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsLocalMemberOfLocalOnly\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_LOCAL_MEMBER_OF_LOCAL_ONLY']/*\"/>\t\n            <unmanaged>ERROR_DS_LOCAL_MEMBER_OF_LOCAL_ONLY</unmanaged>\t\n            <unmanaged-short>ERROR_DS_LOCAL_MEMBER_OF_LOCAL_ONLY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsNoFpoInUniversalGroups\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_NO_FPO_IN_UNIVERSAL_GROUPS']/*\"/>\t\n            <unmanaged>ERROR_DS_NO_FPO_IN_UNIVERSAL_GROUPS</unmanaged>\t\n            <unmanaged-short>ERROR_DS_NO_FPO_IN_UNIVERSAL_GROUPS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsCantAddToGc\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_CANT_ADD_TO_GC']/*\"/>\t\n            <unmanaged>ERROR_DS_CANT_ADD_TO_GC</unmanaged>\t\n            <unmanaged-short>ERROR_DS_CANT_ADD_TO_GC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsNoCheckpointWithPdc\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_NO_CHECKPOINT_WITH_PDC']/*\"/>\t\n            <unmanaged>ERROR_DS_NO_CHECKPOINT_WITH_PDC</unmanaged>\t\n            <unmanaged-short>ERROR_DS_NO_CHECKPOINT_WITH_PDC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsSourceAuditingNotEnabled\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_SOURCE_AUDITING_NOT_ENABLED']/*\"/>\t\n            <unmanaged>ERROR_DS_SOURCE_AUDITING_NOT_ENABLED</unmanaged>\t\n            <unmanaged-short>ERROR_DS_SOURCE_AUDITING_NOT_ENABLED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsCantCreateInNondomainNc\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_CANT_CREATE_IN_NONDOMAIN_NC']/*\"/>\t\n            <unmanaged>ERROR_DS_CANT_CREATE_IN_NONDOMAIN_NC</unmanaged>\t\n            <unmanaged-short>ERROR_DS_CANT_CREATE_IN_NONDOMAIN_NC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsInvalidNameForSpn\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_INVALID_NAME_FOR_SPN']/*\"/>\t\n            <unmanaged>ERROR_DS_INVALID_NAME_FOR_SPN</unmanaged>\t\n            <unmanaged-short>ERROR_DS_INVALID_NAME_FOR_SPN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsFilterUsesContructedAttrs\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_FILTER_USES_CONTRUCTED_ATTRS']/*\"/>\t\n            <unmanaged>ERROR_DS_FILTER_USES_CONTRUCTED_ATTRS</unmanaged>\t\n            <unmanaged-short>ERROR_DS_FILTER_USES_CONTRUCTED_ATTRS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsUnicodepwdNotInQuotes\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_UNICODEPWD_NOT_IN_QUOTES']/*\"/>\t\n            <unmanaged>ERROR_DS_UNICODEPWD_NOT_IN_QUOTES</unmanaged>\t\n            <unmanaged-short>ERROR_DS_UNICODEPWD_NOT_IN_QUOTES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsMachineAccountQuotaExceeded\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_MACHINE_ACCOUNT_QUOTA_EXCEEDED']/*\"/>\t\n            <unmanaged>ERROR_DS_MACHINE_ACCOUNT_QUOTA_EXCEEDED</unmanaged>\t\n            <unmanaged-short>ERROR_DS_MACHINE_ACCOUNT_QUOTA_EXCEEDED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsMustBeRunOnDstDc\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_MUST_BE_RUN_ON_DST_DC']/*\"/>\t\n            <unmanaged>ERROR_DS_MUST_BE_RUN_ON_DST_DC</unmanaged>\t\n            <unmanaged-short>ERROR_DS_MUST_BE_RUN_ON_DST_DC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsSrcDcMustBeSp4OrGreater\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_SRC_DC_MUST_BE_SP4_OR_GREATER']/*\"/>\t\n            <unmanaged>ERROR_DS_SRC_DC_MUST_BE_SP4_OR_GREATER</unmanaged>\t\n            <unmanaged-short>ERROR_DS_SRC_DC_MUST_BE_SP4_OR_GREATER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsCantTreeDeleteCriticalObj\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_CANT_TREE_DELETE_CRITICAL_OBJ']/*\"/>\t\n            <unmanaged>ERROR_DS_CANT_TREE_DELETE_CRITICAL_OBJ</unmanaged>\t\n            <unmanaged-short>ERROR_DS_CANT_TREE_DELETE_CRITICAL_OBJ</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsInitFailureConsole\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_INIT_FAILURE_CONSOLE']/*\"/>\t\n            <unmanaged>ERROR_DS_INIT_FAILURE_CONSOLE</unmanaged>\t\n            <unmanaged-short>ERROR_DS_INIT_FAILURE_CONSOLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsSamInitFailureConsole\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_SAM_INIT_FAILURE_CONSOLE']/*\"/>\t\n            <unmanaged>ERROR_DS_SAM_INIT_FAILURE_CONSOLE</unmanaged>\t\n            <unmanaged-short>ERROR_DS_SAM_INIT_FAILURE_CONSOLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsForestVersionTooHigh\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_FOREST_VERSION_TOO_HIGH']/*\"/>\t\n            <unmanaged>ERROR_DS_FOREST_VERSION_TOO_HIGH</unmanaged>\t\n            <unmanaged-short>ERROR_DS_FOREST_VERSION_TOO_HIGH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsDomainVersionTooHigh\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_DOMAIN_VERSION_TOO_HIGH']/*\"/>\t\n            <unmanaged>ERROR_DS_DOMAIN_VERSION_TOO_HIGH</unmanaged>\t\n            <unmanaged-short>ERROR_DS_DOMAIN_VERSION_TOO_HIGH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsForestVersionTooLow\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_FOREST_VERSION_TOO_LOW']/*\"/>\t\n            <unmanaged>ERROR_DS_FOREST_VERSION_TOO_LOW</unmanaged>\t\n            <unmanaged-short>ERROR_DS_FOREST_VERSION_TOO_LOW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsDomainVersionTooLow\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_DOMAIN_VERSION_TOO_LOW']/*\"/>\t\n            <unmanaged>ERROR_DS_DOMAIN_VERSION_TOO_LOW</unmanaged>\t\n            <unmanaged-short>ERROR_DS_DOMAIN_VERSION_TOO_LOW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsIncompatibleVersion\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_INCOMPATIBLE_VERSION']/*\"/>\t\n            <unmanaged>ERROR_DS_INCOMPATIBLE_VERSION</unmanaged>\t\n            <unmanaged-short>ERROR_DS_INCOMPATIBLE_VERSION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsLowDsaVersion\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_LOW_DSA_VERSION']/*\"/>\t\n            <unmanaged>ERROR_DS_LOW_DSA_VERSION</unmanaged>\t\n            <unmanaged-short>ERROR_DS_LOW_DSA_VERSION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsNoBehaviorVersionInMixeddomain\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_NO_BEHAVIOR_VERSION_IN_MIXEDDOMAIN']/*\"/>\t\n            <unmanaged>ERROR_DS_NO_BEHAVIOR_VERSION_IN_MIXEDDOMAIN</unmanaged>\t\n            <unmanaged-short>ERROR_DS_NO_BEHAVIOR_VERSION_IN_MIXEDDOMAIN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsNotSupportedSortOrder\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_NOT_SUPPORTED_SORT_ORDER']/*\"/>\t\n            <unmanaged>ERROR_DS_NOT_SUPPORTED_SORT_ORDER</unmanaged>\t\n            <unmanaged-short>ERROR_DS_NOT_SUPPORTED_SORT_ORDER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsNameNotUnique\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_NAME_NOT_UNIQUE']/*\"/>\t\n            <unmanaged>ERROR_DS_NAME_NOT_UNIQUE</unmanaged>\t\n            <unmanaged-short>ERROR_DS_NAME_NOT_UNIQUE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsMachineAccountCreatedPrent4\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_MACHINE_ACCOUNT_CREATED_PRENT4']/*\"/>\t\n            <unmanaged>ERROR_DS_MACHINE_ACCOUNT_CREATED_PRENT4</unmanaged>\t\n            <unmanaged-short>ERROR_DS_MACHINE_ACCOUNT_CREATED_PRENT4</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsOutOfVersionStore\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_OUT_OF_VERSION_STORE']/*\"/>\t\n            <unmanaged>ERROR_DS_OUT_OF_VERSION_STORE</unmanaged>\t\n            <unmanaged-short>ERROR_DS_OUT_OF_VERSION_STORE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsIncompatibleControlsUsed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_INCOMPATIBLE_CONTROLS_USED']/*\"/>\t\n            <unmanaged>ERROR_DS_INCOMPATIBLE_CONTROLS_USED</unmanaged>\t\n            <unmanaged-short>ERROR_DS_INCOMPATIBLE_CONTROLS_USED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsNoRefDomain\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_NO_REF_DOMAIN']/*\"/>\t\n            <unmanaged>ERROR_DS_NO_REF_DOMAIN</unmanaged>\t\n            <unmanaged-short>ERROR_DS_NO_REF_DOMAIN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsReservedLinkId\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_RESERVED_LINK_ID']/*\"/>\t\n            <unmanaged>ERROR_DS_RESERVED_LINK_ID</unmanaged>\t\n            <unmanaged-short>ERROR_DS_RESERVED_LINK_ID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsLinkIdNotAvailable\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_LINK_ID_NOT_AVAILABLE']/*\"/>\t\n            <unmanaged>ERROR_DS_LINK_ID_NOT_AVAILABLE</unmanaged>\t\n            <unmanaged-short>ERROR_DS_LINK_ID_NOT_AVAILABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsAgCantHaveUniversalMember\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_AG_CANT_HAVE_UNIVERSAL_MEMBER']/*\"/>\t\n            <unmanaged>ERROR_DS_AG_CANT_HAVE_UNIVERSAL_MEMBER</unmanaged>\t\n            <unmanaged-short>ERROR_DS_AG_CANT_HAVE_UNIVERSAL_MEMBER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsModifydnDisallowedByInstanceType\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_MODIFYDN_DISALLOWED_BY_INSTANCE_TYPE']/*\"/>\t\n            <unmanaged>ERROR_DS_MODIFYDN_DISALLOWED_BY_INSTANCE_TYPE</unmanaged>\t\n            <unmanaged-short>ERROR_DS_MODIFYDN_DISALLOWED_BY_INSTANCE_TYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsNoObjectMoveInSchemaNc\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_NO_OBJECT_MOVE_IN_SCHEMA_NC']/*\"/>\t\n            <unmanaged>ERROR_DS_NO_OBJECT_MOVE_IN_SCHEMA_NC</unmanaged>\t\n            <unmanaged-short>ERROR_DS_NO_OBJECT_MOVE_IN_SCHEMA_NC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsModifydnDisallowedByFlag\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_MODIFYDN_DISALLOWED_BY_FLAG']/*\"/>\t\n            <unmanaged>ERROR_DS_MODIFYDN_DISALLOWED_BY_FLAG</unmanaged>\t\n            <unmanaged-short>ERROR_DS_MODIFYDN_DISALLOWED_BY_FLAG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsModifydnWrongGrandparent\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_MODIFYDN_WRONG_GRANDPARENT']/*\"/>\t\n            <unmanaged>ERROR_DS_MODIFYDN_WRONG_GRANDPARENT</unmanaged>\t\n            <unmanaged-short>ERROR_DS_MODIFYDN_WRONG_GRANDPARENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsNameErrorTrustReferral\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_NAME_ERROR_TRUST_REFERRAL']/*\"/>\t\n            <unmanaged>ERROR_DS_NAME_ERROR_TRUST_REFERRAL</unmanaged>\t\n            <unmanaged-short>ERROR_DS_NAME_ERROR_TRUST_REFERRAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NotSupportedOnStandardServer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NOT_SUPPORTED_ON_STANDARD_SERVER']/*\"/>\t\n            <unmanaged>ERROR_NOT_SUPPORTED_ON_STANDARD_SERVER</unmanaged>\t\n            <unmanaged-short>ERROR_NOT_SUPPORTED_ON_STANDARD_SERVER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsCantAccessRemotePartOfAd\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_CANT_ACCESS_REMOTE_PART_OF_AD']/*\"/>\t\n            <unmanaged>ERROR_DS_CANT_ACCESS_REMOTE_PART_OF_AD</unmanaged>\t\n            <unmanaged-short>ERROR_DS_CANT_ACCESS_REMOTE_PART_OF_AD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsCrImpossibleToValidateV2\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_CR_IMPOSSIBLE_TO_VALIDATE_V2']/*\"/>\t\n            <unmanaged>ERROR_DS_CR_IMPOSSIBLE_TO_VALIDATE_V2</unmanaged>\t\n            <unmanaged-short>ERROR_DS_CR_IMPOSSIBLE_TO_VALIDATE_V2</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsThreadLimitExceeded\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_THREAD_LIMIT_EXCEEDED']/*\"/>\t\n            <unmanaged>ERROR_DS_THREAD_LIMIT_EXCEEDED</unmanaged>\t\n            <unmanaged-short>ERROR_DS_THREAD_LIMIT_EXCEEDED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsNotClosest\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_NOT_CLOSEST']/*\"/>\t\n            <unmanaged>ERROR_DS_NOT_CLOSEST</unmanaged>\t\n            <unmanaged-short>ERROR_DS_NOT_CLOSEST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsCantDeriveSpnWithoutServerRef\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_CANT_DERIVE_SPN_WITHOUT_SERVER_REF']/*\"/>\t\n            <unmanaged>ERROR_DS_CANT_DERIVE_SPN_WITHOUT_SERVER_REF</unmanaged>\t\n            <unmanaged-short>ERROR_DS_CANT_DERIVE_SPN_WITHOUT_SERVER_REF</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsSingleUserModeFailed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_SINGLE_USER_MODE_FAILED']/*\"/>\t\n            <unmanaged>ERROR_DS_SINGLE_USER_MODE_FAILED</unmanaged>\t\n            <unmanaged-short>ERROR_DS_SINGLE_USER_MODE_FAILED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsNtdscriptSyntaxError\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_NTDSCRIPT_SYNTAX_ERROR']/*\"/>\t\n            <unmanaged>ERROR_DS_NTDSCRIPT_SYNTAX_ERROR</unmanaged>\t\n            <unmanaged-short>ERROR_DS_NTDSCRIPT_SYNTAX_ERROR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsNtdscriptProcessError\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_NTDSCRIPT_PROCESS_ERROR']/*\"/>\t\n            <unmanaged>ERROR_DS_NTDSCRIPT_PROCESS_ERROR</unmanaged>\t\n            <unmanaged-short>ERROR_DS_NTDSCRIPT_PROCESS_ERROR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsDifferentReplEpochs\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_DIFFERENT_REPL_EPOCHS']/*\"/>\t\n            <unmanaged>ERROR_DS_DIFFERENT_REPL_EPOCHS</unmanaged>\t\n            <unmanaged-short>ERROR_DS_DIFFERENT_REPL_EPOCHS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsDrsExtensionsChanged\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_DRS_EXTENSIONS_CHANGED']/*\"/>\t\n            <unmanaged>ERROR_DS_DRS_EXTENSIONS_CHANGED</unmanaged>\t\n            <unmanaged-short>ERROR_DS_DRS_EXTENSIONS_CHANGED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsReplicaSetChangeNotAllowedOnDisabledCr\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_REPLICA_SET_CHANGE_NOT_ALLOWED_ON_DISABLED_CR']/*\"/>\t\n            <unmanaged>ERROR_DS_REPLICA_SET_CHANGE_NOT_ALLOWED_ON_DISABLED_CR</unmanaged>\t\n            <unmanaged-short>ERROR_DS_REPLICA_SET_CHANGE_NOT_ALLOWED_ON_DISABLED_CR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsNoMsdsIntid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_NO_MSDS_INTID']/*\"/>\t\n            <unmanaged>ERROR_DS_NO_MSDS_INTID</unmanaged>\t\n            <unmanaged-short>ERROR_DS_NO_MSDS_INTID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsDupMsdsIntid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_DUP_MSDS_INTID']/*\"/>\t\n            <unmanaged>ERROR_DS_DUP_MSDS_INTID</unmanaged>\t\n            <unmanaged-short>ERROR_DS_DUP_MSDS_INTID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsExistsInRdnattid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_EXISTS_IN_RDNATTID']/*\"/>\t\n            <unmanaged>ERROR_DS_EXISTS_IN_RDNATTID</unmanaged>\t\n            <unmanaged-short>ERROR_DS_EXISTS_IN_RDNATTID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsAuthorizationFailed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_AUTHORIZATION_FAILED']/*\"/>\t\n            <unmanaged>ERROR_DS_AUTHORIZATION_FAILED</unmanaged>\t\n            <unmanaged-short>ERROR_DS_AUTHORIZATION_FAILED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsInvalidScript\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_INVALID_SCRIPT']/*\"/>\t\n            <unmanaged>ERROR_DS_INVALID_SCRIPT</unmanaged>\t\n            <unmanaged-short>ERROR_DS_INVALID_SCRIPT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsRemoteCrossrefOpFailed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_REMOTE_CROSSREF_OP_FAILED']/*\"/>\t\n            <unmanaged>ERROR_DS_REMOTE_CROSSREF_OP_FAILED</unmanaged>\t\n            <unmanaged-short>ERROR_DS_REMOTE_CROSSREF_OP_FAILED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsCrossRefBusy\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_CROSS_REF_BUSY']/*\"/>\t\n            <unmanaged>ERROR_DS_CROSS_REF_BUSY</unmanaged>\t\n            <unmanaged-short>ERROR_DS_CROSS_REF_BUSY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsCantDeriveSpnForDeletedDomain\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_CANT_DERIVE_SPN_FOR_DELETED_DOMAIN']/*\"/>\t\n            <unmanaged>ERROR_DS_CANT_DERIVE_SPN_FOR_DELETED_DOMAIN</unmanaged>\t\n            <unmanaged-short>ERROR_DS_CANT_DERIVE_SPN_FOR_DELETED_DOMAIN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsCantDemoteWithWriteableNc\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_CANT_DEMOTE_WITH_WRITEABLE_NC']/*\"/>\t\n            <unmanaged>ERROR_DS_CANT_DEMOTE_WITH_WRITEABLE_NC</unmanaged>\t\n            <unmanaged-short>ERROR_DS_CANT_DEMOTE_WITH_WRITEABLE_NC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsDuplicateIdFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_DUPLICATE_ID_FOUND']/*\"/>\t\n            <unmanaged>ERROR_DS_DUPLICATE_ID_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_DS_DUPLICATE_ID_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsInsufficientAttrToCreateObject\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_INSUFFICIENT_ATTR_TO_CREATE_OBJECT']/*\"/>\t\n            <unmanaged>ERROR_DS_INSUFFICIENT_ATTR_TO_CREATE_OBJECT</unmanaged>\t\n            <unmanaged-short>ERROR_DS_INSUFFICIENT_ATTR_TO_CREATE_OBJECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsGroupConversionError\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_GROUP_CONVERSION_ERROR']/*\"/>\t\n            <unmanaged>ERROR_DS_GROUP_CONVERSION_ERROR</unmanaged>\t\n            <unmanaged-short>ERROR_DS_GROUP_CONVERSION_ERROR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsCantMoveAppBasicGroup\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_CANT_MOVE_APP_BASIC_GROUP']/*\"/>\t\n            <unmanaged>ERROR_DS_CANT_MOVE_APP_BASIC_GROUP</unmanaged>\t\n            <unmanaged-short>ERROR_DS_CANT_MOVE_APP_BASIC_GROUP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsCantMoveAppQueryGroup\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_CANT_MOVE_APP_QUERY_GROUP']/*\"/>\t\n            <unmanaged>ERROR_DS_CANT_MOVE_APP_QUERY_GROUP</unmanaged>\t\n            <unmanaged-short>ERROR_DS_CANT_MOVE_APP_QUERY_GROUP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsRoleNotVerified\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_ROLE_NOT_VERIFIED']/*\"/>\t\n            <unmanaged>ERROR_DS_ROLE_NOT_VERIFIED</unmanaged>\t\n            <unmanaged-short>ERROR_DS_ROLE_NOT_VERIFIED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsWkoContainerCannotBeSpecial\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_WKO_CONTAINER_CANNOT_BE_SPECIAL']/*\"/>\t\n            <unmanaged>ERROR_DS_WKO_CONTAINER_CANNOT_BE_SPECIAL</unmanaged>\t\n            <unmanaged-short>ERROR_DS_WKO_CONTAINER_CANNOT_BE_SPECIAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsDomainRenameInProgress\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_DOMAIN_RENAME_IN_PROGRESS']/*\"/>\t\n            <unmanaged>ERROR_DS_DOMAIN_RENAME_IN_PROGRESS</unmanaged>\t\n            <unmanaged-short>ERROR_DS_DOMAIN_RENAME_IN_PROGRESS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsExistingAdChildNc\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_EXISTING_AD_CHILD_NC']/*\"/>\t\n            <unmanaged>ERROR_DS_EXISTING_AD_CHILD_NC</unmanaged>\t\n            <unmanaged-short>ERROR_DS_EXISTING_AD_CHILD_NC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsReplLifetimeExceeded\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_REPL_LIFETIME_EXCEEDED']/*\"/>\t\n            <unmanaged>ERROR_DS_REPL_LIFETIME_EXCEEDED</unmanaged>\t\n            <unmanaged-short>ERROR_DS_REPL_LIFETIME_EXCEEDED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsDisallowedInSystemContainer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_DISALLOWED_IN_SYSTEM_CONTAINER']/*\"/>\t\n            <unmanaged>ERROR_DS_DISALLOWED_IN_SYSTEM_CONTAINER</unmanaged>\t\n            <unmanaged-short>ERROR_DS_DISALLOWED_IN_SYSTEM_CONTAINER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsLdapSendQueueFull\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_LDAP_SEND_QUEUE_FULL']/*\"/>\t\n            <unmanaged>ERROR_DS_LDAP_SEND_QUEUE_FULL</unmanaged>\t\n            <unmanaged-short>ERROR_DS_LDAP_SEND_QUEUE_FULL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsDraOutScheduleWindow\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_DRA_OUT_SCHEDULE_WINDOW']/*\"/>\t\n            <unmanaged>ERROR_DS_DRA_OUT_SCHEDULE_WINDOW</unmanaged>\t\n            <unmanaged-short>ERROR_DS_DRA_OUT_SCHEDULE_WINDOW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsPolicyNotKnown\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_POLICY_NOT_KNOWN']/*\"/>\t\n            <unmanaged>ERROR_DS_POLICY_NOT_KNOWN</unmanaged>\t\n            <unmanaged-short>ERROR_DS_POLICY_NOT_KNOWN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NoSiteSettingsObject\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NO_SITE_SETTINGS_OBJECT']/*\"/>\t\n            <unmanaged>ERROR_NO_SITE_SETTINGS_OBJECT</unmanaged>\t\n            <unmanaged-short>ERROR_NO_SITE_SETTINGS_OBJECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NoSecrets\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NO_SECRETS']/*\"/>\t\n            <unmanaged>ERROR_NO_SECRETS</unmanaged>\t\n            <unmanaged-short>ERROR_NO_SECRETS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NoWritableDcFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NO_WRITABLE_DC_FOUND']/*\"/>\t\n            <unmanaged>ERROR_NO_WRITABLE_DC_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_NO_WRITABLE_DC_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsNoServerObject\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_NO_SERVER_OBJECT']/*\"/>\t\n            <unmanaged>ERROR_DS_NO_SERVER_OBJECT</unmanaged>\t\n            <unmanaged-short>ERROR_DS_NO_SERVER_OBJECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsNoNtdsaObject\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_NO_NTDSA_OBJECT']/*\"/>\t\n            <unmanaged>ERROR_DS_NO_NTDSA_OBJECT</unmanaged>\t\n            <unmanaged-short>ERROR_DS_NO_NTDSA_OBJECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsNonAsqSearch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_NON_ASQ_SEARCH']/*\"/>\t\n            <unmanaged>ERROR_DS_NON_ASQ_SEARCH</unmanaged>\t\n            <unmanaged-short>ERROR_DS_NON_ASQ_SEARCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsAuditFailure\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_AUDIT_FAILURE']/*\"/>\t\n            <unmanaged>ERROR_DS_AUDIT_FAILURE</unmanaged>\t\n            <unmanaged-short>ERROR_DS_AUDIT_FAILURE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsInvalidSearchFlagSubtree\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_INVALID_SEARCH_FLAG_SUBTREE']/*\"/>\t\n            <unmanaged>ERROR_DS_INVALID_SEARCH_FLAG_SUBTREE</unmanaged>\t\n            <unmanaged-short>ERROR_DS_INVALID_SEARCH_FLAG_SUBTREE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsInvalidSearchFlagTuple\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_INVALID_SEARCH_FLAG_TUPLE']/*\"/>\t\n            <unmanaged>ERROR_DS_INVALID_SEARCH_FLAG_TUPLE</unmanaged>\t\n            <unmanaged-short>ERROR_DS_INVALID_SEARCH_FLAG_TUPLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsHierarchyTableTooDeep\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_HIERARCHY_TABLE_TOO_DEEP']/*\"/>\t\n            <unmanaged>ERROR_DS_HIERARCHY_TABLE_TOO_DEEP</unmanaged>\t\n            <unmanaged-short>ERROR_DS_HIERARCHY_TABLE_TOO_DEEP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsDraCorruptUtdVector\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_DRA_CORRUPT_UTD_VECTOR']/*\"/>\t\n            <unmanaged>ERROR_DS_DRA_CORRUPT_UTD_VECTOR</unmanaged>\t\n            <unmanaged-short>ERROR_DS_DRA_CORRUPT_UTD_VECTOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsDraSecretsDenied\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_DRA_SECRETS_DENIED']/*\"/>\t\n            <unmanaged>ERROR_DS_DRA_SECRETS_DENIED</unmanaged>\t\n            <unmanaged-short>ERROR_DS_DRA_SECRETS_DENIED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsReservedMapiId\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_RESERVED_MAPI_ID']/*\"/>\t\n            <unmanaged>ERROR_DS_RESERVED_MAPI_ID</unmanaged>\t\n            <unmanaged-short>ERROR_DS_RESERVED_MAPI_ID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsMapiIdNotAvailable\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_MAPI_ID_NOT_AVAILABLE']/*\"/>\t\n            <unmanaged>ERROR_DS_MAPI_ID_NOT_AVAILABLE</unmanaged>\t\n            <unmanaged-short>ERROR_DS_MAPI_ID_NOT_AVAILABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsDraMissingKrbtgtSecret\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_DRA_MISSING_KRBTGT_SECRET']/*\"/>\t\n            <unmanaged>ERROR_DS_DRA_MISSING_KRBTGT_SECRET</unmanaged>\t\n            <unmanaged-short>ERROR_DS_DRA_MISSING_KRBTGT_SECRET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsDomainNameExistsInForest\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_DOMAIN_NAME_EXISTS_IN_FOREST']/*\"/>\t\n            <unmanaged>ERROR_DS_DOMAIN_NAME_EXISTS_IN_FOREST</unmanaged>\t\n            <unmanaged-short>ERROR_DS_DOMAIN_NAME_EXISTS_IN_FOREST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsFlatNameExistsInForest\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_FLAT_NAME_EXISTS_IN_FOREST']/*\"/>\t\n            <unmanaged>ERROR_DS_FLAT_NAME_EXISTS_IN_FOREST</unmanaged>\t\n            <unmanaged-short>ERROR_DS_FLAT_NAME_EXISTS_IN_FOREST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.InvalidUserPrincipalName\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_INVALID_USER_PRINCIPAL_NAME']/*\"/>\t\n            <unmanaged>ERROR_INVALID_USER_PRINCIPAL_NAME</unmanaged>\t\n            <unmanaged-short>ERROR_INVALID_USER_PRINCIPAL_NAME</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsOidMappedGroupCantHaveMembers\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_OID_MAPPED_GROUP_CANT_HAVE_MEMBERS']/*\"/>\t\n            <unmanaged>ERROR_DS_OID_MAPPED_GROUP_CANT_HAVE_MEMBERS</unmanaged>\t\n            <unmanaged-short>ERROR_DS_OID_MAPPED_GROUP_CANT_HAVE_MEMBERS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsOidNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_OID_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_DS_OID_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_DS_OID_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.DsDraRecycledTarget\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_DS_DRA_RECYCLED_TARGET']/*\"/>\t\n            <unmanaged>ERROR_DS_DRA_RECYCLED_TARGET</unmanaged>\t\n            <unmanaged-short>ERROR_DS_DRA_RECYCLED_TARGET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecQmPolicyExists\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_QM_POLICY_EXISTS']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_QM_POLICY_EXISTS</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_QM_POLICY_EXISTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecQmPolicyNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_QM_POLICY_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_QM_POLICY_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_QM_POLICY_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecQmPolicyInUse\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_QM_POLICY_IN_USE']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_QM_POLICY_IN_USE</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_QM_POLICY_IN_USE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecMmPolicyExists\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_MM_POLICY_EXISTS']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_MM_POLICY_EXISTS</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_MM_POLICY_EXISTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecMmPolicyNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_MM_POLICY_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_MM_POLICY_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_MM_POLICY_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecMmPolicyInUse\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_MM_POLICY_IN_USE']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_MM_POLICY_IN_USE</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_MM_POLICY_IN_USE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecMmFilterExists\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_MM_FILTER_EXISTS']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_MM_FILTER_EXISTS</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_MM_FILTER_EXISTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecMmFilterNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_MM_FILTER_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_MM_FILTER_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_MM_FILTER_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecTransportFilterExists\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_TRANSPORT_FILTER_EXISTS']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_TRANSPORT_FILTER_EXISTS</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_TRANSPORT_FILTER_EXISTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecTransportFilterNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_TRANSPORT_FILTER_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_TRANSPORT_FILTER_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_TRANSPORT_FILTER_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecMmAuthExists\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_MM_AUTH_EXISTS']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_MM_AUTH_EXISTS</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_MM_AUTH_EXISTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecMmAuthNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_MM_AUTH_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_MM_AUTH_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_MM_AUTH_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecMmAuthInUse\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_MM_AUTH_IN_USE']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_MM_AUTH_IN_USE</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_MM_AUTH_IN_USE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecDefaultMmPolicyNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_DEFAULT_MM_POLICY_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_DEFAULT_MM_POLICY_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_DEFAULT_MM_POLICY_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecDefaultMmAuthNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_DEFAULT_MM_AUTH_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_DEFAULT_MM_AUTH_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_DEFAULT_MM_AUTH_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecDefaultQmPolicyNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_DEFAULT_QM_POLICY_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_DEFAULT_QM_POLICY_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_DEFAULT_QM_POLICY_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecTunnelFilterExists\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_TUNNEL_FILTER_EXISTS']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_TUNNEL_FILTER_EXISTS</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_TUNNEL_FILTER_EXISTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecTunnelFilterNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_TUNNEL_FILTER_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_TUNNEL_FILTER_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_TUNNEL_FILTER_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecMmFilterPendingDeletion\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_MM_FILTER_PENDING_DELETION']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_MM_FILTER_PENDING_DELETION</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_MM_FILTER_PENDING_DELETION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecTransportFilterPendingDeletion\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_TRANSPORT_FILTER_PENDING_DELETION']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_TRANSPORT_FILTER_PENDING_DELETION</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_TRANSPORT_FILTER_PENDING_DELETION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecTunnelFilterPendingDeletion\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_TUNNEL_FILTER_PENDING_DELETION']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_TUNNEL_FILTER_PENDING_DELETION</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_TUNNEL_FILTER_PENDING_DELETION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecMmPolicyPendingDeletion\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_MM_POLICY_PENDING_DELETION']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_MM_POLICY_PENDING_DELETION</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_MM_POLICY_PENDING_DELETION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecMmAuthPendingDeletion\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_MM_AUTH_PENDING_DELETION']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_MM_AUTH_PENDING_DELETION</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_MM_AUTH_PENDING_DELETION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecQmPolicyPendingDeletion\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_QM_POLICY_PENDING_DELETION']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_QM_POLICY_PENDING_DELETION</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_QM_POLICY_PENDING_DELETION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeNegStatusBegin\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_NEG_STATUS_BEGIN']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_NEG_STATUS_BEGIN</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_NEG_STATUS_BEGIN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeAuthFail\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_AUTH_FAIL']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_AUTH_FAIL</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_AUTH_FAIL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeAttribFail\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_ATTRIB_FAIL']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_ATTRIB_FAIL</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_ATTRIB_FAIL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeNegotiationPending\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_NEGOTIATION_PENDING']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_NEGOTIATION_PENDING</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_NEGOTIATION_PENDING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeGeneralProcessingError\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_GENERAL_PROCESSING_ERROR']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_GENERAL_PROCESSING_ERROR</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_GENERAL_PROCESSING_ERROR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeTimedOut\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_TIMED_OUT']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_TIMED_OUT</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_TIMED_OUT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeNoCert\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_NO_CERT']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_NO_CERT</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_NO_CERT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeSaDeleted\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_SA_DELETED']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_SA_DELETED</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_SA_DELETED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeSaReaped\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_SA_REAPED']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_SA_REAPED</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_SA_REAPED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeMmAcquireDrop\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_MM_ACQUIRE_DROP']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_MM_ACQUIRE_DROP</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_MM_ACQUIRE_DROP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeQmAcquireDrop\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_QM_ACQUIRE_DROP']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_QM_ACQUIRE_DROP</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_QM_ACQUIRE_DROP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeQueueDropMm\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_QUEUE_DROP_MM']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_QUEUE_DROP_MM</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_QUEUE_DROP_MM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeQueueDropNoMm\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_QUEUE_DROP_NO_MM']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_QUEUE_DROP_NO_MM</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_QUEUE_DROP_NO_MM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeDropNoResponse\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_DROP_NO_RESPONSE']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_DROP_NO_RESPONSE</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_DROP_NO_RESPONSE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeMmDelayDrop\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_MM_DELAY_DROP']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_MM_DELAY_DROP</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_MM_DELAY_DROP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeQmDelayDrop\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_QM_DELAY_DROP']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_QM_DELAY_DROP</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_QM_DELAY_DROP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeError\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_ERROR']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_ERROR</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_ERROR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeCrlFailed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_CRL_FAILED']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_CRL_FAILED</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_CRL_FAILED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeInvalidKeyUsage\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_INVALID_KEY_USAGE']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_INVALID_KEY_USAGE</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_INVALID_KEY_USAGE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeInvalidCertType\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_INVALID_CERT_TYPE']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_INVALID_CERT_TYPE</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_INVALID_CERT_TYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeNoPrivateKey\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_NO_PRIVATE_KEY']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_NO_PRIVATE_KEY</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_NO_PRIVATE_KEY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeSimultaneousRekey\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_SIMULTANEOUS_REKEY']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_SIMULTANEOUS_REKEY</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_SIMULTANEOUS_REKEY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeDhFail\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_DH_FAIL']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_DH_FAIL</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_DH_FAIL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeCriticalPayloadNotRecognized\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_CRITICAL_PAYLOAD_NOT_RECOGNIZED']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_CRITICAL_PAYLOAD_NOT_RECOGNIZED</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_CRITICAL_PAYLOAD_NOT_RECOGNIZED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeInvalidHeader\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_INVALID_HEADER']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_INVALID_HEADER</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_INVALID_HEADER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeNoPolicy\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_NO_POLICY']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_NO_POLICY</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_NO_POLICY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeInvalidSignature\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_INVALID_SIGNATURE']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_INVALID_SIGNATURE</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_INVALID_SIGNATURE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeKerberosError\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_KERBEROS_ERROR']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_KERBEROS_ERROR</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_KERBEROS_ERROR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeNoPublicKey\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_NO_PUBLIC_KEY']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_NO_PUBLIC_KEY</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_NO_PUBLIC_KEY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeProcessErr\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_PROCESS_ERR']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_PROCESS_ERR</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_PROCESS_ERR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeProcessErrSa\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_PROCESS_ERR_SA']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_PROCESS_ERR_SA</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_PROCESS_ERR_SA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeProcessErrProp\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_PROCESS_ERR_PROP']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_PROCESS_ERR_PROP</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_PROCESS_ERR_PROP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeProcessErrTrans\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_PROCESS_ERR_TRANS']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_PROCESS_ERR_TRANS</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_PROCESS_ERR_TRANS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeProcessErrKe\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_PROCESS_ERR_KE']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_PROCESS_ERR_KE</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_PROCESS_ERR_KE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeProcessErrId\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_PROCESS_ERR_ID']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_PROCESS_ERR_ID</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_PROCESS_ERR_ID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeProcessErrCert\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_PROCESS_ERR_CERT']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_PROCESS_ERR_CERT</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_PROCESS_ERR_CERT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeProcessErrCertReq\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_PROCESS_ERR_CERT_REQ']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_PROCESS_ERR_CERT_REQ</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_PROCESS_ERR_CERT_REQ</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeProcessErrHash\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_PROCESS_ERR_HASH']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_PROCESS_ERR_HASH</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_PROCESS_ERR_HASH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeProcessErrSig\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_PROCESS_ERR_SIG']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_PROCESS_ERR_SIG</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_PROCESS_ERR_SIG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeProcessErrNonce\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_PROCESS_ERR_NONCE']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_PROCESS_ERR_NONCE</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_PROCESS_ERR_NONCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeProcessErrNotify\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_PROCESS_ERR_NOTIFY']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_PROCESS_ERR_NOTIFY</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_PROCESS_ERR_NOTIFY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeProcessErrDelete\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_PROCESS_ERR_DELETE']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_PROCESS_ERR_DELETE</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_PROCESS_ERR_DELETE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeProcessErrVendor\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_PROCESS_ERR_VENDOR']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_PROCESS_ERR_VENDOR</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_PROCESS_ERR_VENDOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeInvalidPayload\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_INVALID_PAYLOAD']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_INVALID_PAYLOAD</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_INVALID_PAYLOAD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeLoadSoftSa\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_LOAD_SOFT_SA']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_LOAD_SOFT_SA</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_LOAD_SOFT_SA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeSoftSaTornDown\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_SOFT_SA_TORN_DOWN']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_SOFT_SA_TORN_DOWN</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_SOFT_SA_TORN_DOWN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeInvalidCookie\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_INVALID_COOKIE']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_INVALID_COOKIE</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_INVALID_COOKIE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeNoPeerCert\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_NO_PEER_CERT']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_NO_PEER_CERT</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_NO_PEER_CERT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkePeerCrlFailed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_PEER_CRL_FAILED']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_PEER_CRL_FAILED</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_PEER_CRL_FAILED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkePolicyChange\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_POLICY_CHANGE']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_POLICY_CHANGE</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_POLICY_CHANGE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeNoMmPolicy\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_NO_MM_POLICY']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_NO_MM_POLICY</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_NO_MM_POLICY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeNotcbpriv\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_NOTCBPRIV']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_NOTCBPRIV</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_NOTCBPRIV</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeSecloadfail\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_SECLOADFAIL']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_SECLOADFAIL</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_SECLOADFAIL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeFailsspinit\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_FAILSSPINIT']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_FAILSSPINIT</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_FAILSSPINIT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeFailqueryssp\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_FAILQUERYSSP']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_FAILQUERYSSP</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_FAILQUERYSSP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeSrvacqfail\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_SRVACQFAIL']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_SRVACQFAIL</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_SRVACQFAIL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeSrvquerycred\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_SRVQUERYCRED']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_SRVQUERYCRED</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_SRVQUERYCRED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeGetspifail\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_GETSPIFAIL']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_GETSPIFAIL</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_GETSPIFAIL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeInvalidFilter\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_INVALID_FILTER']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_INVALID_FILTER</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_INVALID_FILTER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeOutOfMemory\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_OUT_OF_MEMORY']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_OUT_OF_MEMORY</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_OUT_OF_MEMORY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeAddUpdateKeyFailed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_ADD_UPDATE_KEY_FAILED']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_ADD_UPDATE_KEY_FAILED</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_ADD_UPDATE_KEY_FAILED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeInvalidPolicy\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_INVALID_POLICY']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_INVALID_POLICY</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_INVALID_POLICY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeUnknownDoi\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_UNKNOWN_DOI']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_UNKNOWN_DOI</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_UNKNOWN_DOI</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeInvalidSituation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_INVALID_SITUATION']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_INVALID_SITUATION</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_INVALID_SITUATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeDhFailure\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_DH_FAILURE']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_DH_FAILURE</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_DH_FAILURE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeInvalidGroup\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_INVALID_GROUP']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_INVALID_GROUP</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_INVALID_GROUP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeEncrypt\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_ENCRYPT']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_ENCRYPT</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_ENCRYPT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeDecrypt\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_DECRYPT']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_DECRYPT</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_DECRYPT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkePolicyMatch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_POLICY_MATCH']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_POLICY_MATCH</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_POLICY_MATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeUnsupportedId\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_UNSUPPORTED_ID']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_UNSUPPORTED_ID</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_UNSUPPORTED_ID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeInvalidHash\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_INVALID_HASH']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_INVALID_HASH</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_INVALID_HASH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeInvalidHashAlg\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_INVALID_HASH_ALG']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_INVALID_HASH_ALG</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_INVALID_HASH_ALG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeInvalidHashSize\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_INVALID_HASH_SIZE']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_INVALID_HASH_SIZE</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_INVALID_HASH_SIZE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeInvalidEncryptAlg\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_INVALID_ENCRYPT_ALG']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_INVALID_ENCRYPT_ALG</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_INVALID_ENCRYPT_ALG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeInvalidAuthAlg\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_INVALID_AUTH_ALG']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_INVALID_AUTH_ALG</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_INVALID_AUTH_ALG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeInvalidSig\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_INVALID_SIG']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_INVALID_SIG</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_INVALID_SIG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeLoadFailed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_LOAD_FAILED']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_LOAD_FAILED</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_LOAD_FAILED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeRpcDelete\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_RPC_DELETE']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_RPC_DELETE</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_RPC_DELETE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeBenignReinit\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_BENIGN_REINIT']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_BENIGN_REINIT</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_BENIGN_REINIT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeInvalidResponderLifetimeNotify\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_INVALID_RESPONDER_LIFETIME_NOTIFY']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_INVALID_RESPONDER_LIFETIME_NOTIFY</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_INVALID_RESPONDER_LIFETIME_NOTIFY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeInvalidMajorVersion\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_INVALID_MAJOR_VERSION']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_INVALID_MAJOR_VERSION</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_INVALID_MAJOR_VERSION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeInvalidCertKeylen\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_INVALID_CERT_KEYLEN']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_INVALID_CERT_KEYLEN</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_INVALID_CERT_KEYLEN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeMmLimit\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_MM_LIMIT']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_MM_LIMIT</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_MM_LIMIT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeNegotiationDisabled\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_NEGOTIATION_DISABLED']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_NEGOTIATION_DISABLED</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_NEGOTIATION_DISABLED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeQmLimit\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_QM_LIMIT']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_QM_LIMIT</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_QM_LIMIT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeMmExpired\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_MM_EXPIRED']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_MM_EXPIRED</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_MM_EXPIRED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkePeerMmAssumedInvalid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_PEER_MM_ASSUMED_INVALID']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_PEER_MM_ASSUMED_INVALID</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_PEER_MM_ASSUMED_INVALID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeCertChainPolicyMismatch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_CERT_CHAIN_POLICY_MISMATCH']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_CERT_CHAIN_POLICY_MISMATCH</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_CERT_CHAIN_POLICY_MISMATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeUnexpectedMessageId\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_UNEXPECTED_MESSAGE_ID']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_UNEXPECTED_MESSAGE_ID</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_UNEXPECTED_MESSAGE_ID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeInvalidAuthPayload\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_INVALID_AUTH_PAYLOAD']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_INVALID_AUTH_PAYLOAD</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_INVALID_AUTH_PAYLOAD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeDosCookieSent\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_DOS_COOKIE_SENT']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_DOS_COOKIE_SENT</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_DOS_COOKIE_SENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeShuttingDown\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_SHUTTING_DOWN']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_SHUTTING_DOWN</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_SHUTTING_DOWN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeCgaAuthFailed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_CGA_AUTH_FAILED']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_CGA_AUTH_FAILED</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_CGA_AUTH_FAILED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeProcessErrNatoa\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_PROCESS_ERR_NATOA']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_PROCESS_ERR_NATOA</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_PROCESS_ERR_NATOA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeInvalidMmForQm\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_INVALID_MM_FOR_QM']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_INVALID_MM_FOR_QM</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_INVALID_MM_FOR_QM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeQmExpired\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_QM_EXPIRED']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_QM_EXPIRED</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_QM_EXPIRED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeTooManyFilters\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_TOO_MANY_FILTERS']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_TOO_MANY_FILTERS</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_TOO_MANY_FILTERS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeNegStatusEnd\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_NEG_STATUS_END']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_NEG_STATUS_END</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_NEG_STATUS_END</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeKillDummyNapTunnel\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_KILL_DUMMY_NAP_TUNNEL']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_KILL_DUMMY_NAP_TUNNEL</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_KILL_DUMMY_NAP_TUNNEL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeInnerIpAssignmentFailure\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_INNER_IP_ASSIGNMENT_FAILURE']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_INNER_IP_ASSIGNMENT_FAILURE</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_INNER_IP_ASSIGNMENT_FAILURE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeRequireCpPayloadMissing\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_REQUIRE_CP_PAYLOAD_MISSING']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_REQUIRE_CP_PAYLOAD_MISSING</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_REQUIRE_CP_PAYLOAD_MISSING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecKeyModuleImpersonationNegotiationPending\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_KEY_MODULE_IMPERSONATION_NEGOTIATION_PENDING']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_KEY_MODULE_IMPERSONATION_NEGOTIATION_PENDING</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_KEY_MODULE_IMPERSONATION_NEGOTIATION_PENDING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeCoexistenceSuppress\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_COEXISTENCE_SUPPRESS']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_COEXISTENCE_SUPPRESS</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_COEXISTENCE_SUPPRESS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeRatelimitDrop\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_RATELIMIT_DROP']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_RATELIMIT_DROP</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_RATELIMIT_DROP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkePeerDoesntSupportMobike\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_PEER_DOESNT_SUPPORT_MOBIKE']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_PEER_DOESNT_SUPPORT_MOBIKE</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_PEER_DOESNT_SUPPORT_MOBIKE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeAuthorizationFailure\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_AUTHORIZATION_FAILURE']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_AUTHORIZATION_FAILURE</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_AUTHORIZATION_FAILURE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeStrongCredAuthorizationFailure\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_STRONG_CRED_AUTHORIZATION_FAILURE']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_STRONG_CRED_AUTHORIZATION_FAILURE</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_STRONG_CRED_AUTHORIZATION_FAILURE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeAuthorizationFailureWithOptionalRetry\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_AUTHORIZATION_FAILURE_WITH_OPTIONAL_RETRY']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_AUTHORIZATION_FAILURE_WITH_OPTIONAL_RETRY</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_AUTHORIZATION_FAILURE_WITH_OPTIONAL_RETRY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeStrongCredAuthorizationAndCertmapFailure\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_STRONG_CRED_AUTHORIZATION_AND_CERTMAP_FAILURE']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_STRONG_CRED_AUTHORIZATION_AND_CERTMAP_FAILURE</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_STRONG_CRED_AUTHORIZATION_AND_CERTMAP_FAILURE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIkeNegStatusExtendedEnd\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_IKE_NEG_STATUS_EXTENDED_END']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_IKE_NEG_STATUS_EXTENDED_END</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_IKE_NEG_STATUS_EXTENDED_END</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecBadSpi\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_BAD_SPI']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_BAD_SPI</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_BAD_SPI</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecSaLifetimeExpired\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_SA_LIFETIME_EXPIRED']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_SA_LIFETIME_EXPIRED</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_SA_LIFETIME_EXPIRED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecWrongSa\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_WRONG_SA']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_WRONG_SA</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_WRONG_SA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecReplayCheckFailed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_REPLAY_CHECK_FAILED']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_REPLAY_CHECK_FAILED</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_REPLAY_CHECK_FAILED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecInvalidPacket\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_INVALID_PACKET']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_INVALID_PACKET</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_INVALID_PACKET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecIntegrityCheckFailed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_INTEGRITY_CHECK_FAILED']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_INTEGRITY_CHECK_FAILED</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_INTEGRITY_CHECK_FAILED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecClearTextDrop\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_CLEAR_TEXT_DROP']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_CLEAR_TEXT_DROP</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_CLEAR_TEXT_DROP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecAuthFirewallDrop\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_AUTH_FIREWALL_DROP']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_AUTH_FIREWALL_DROP</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_AUTH_FIREWALL_DROP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecThrottleDrop\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_THROTTLE_DROP']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_THROTTLE_DROP</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_THROTTLE_DROP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecDospBlock\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_DOSP_BLOCK']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_DOSP_BLOCK</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_DOSP_BLOCK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecDospReceivedMulticast\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_DOSP_RECEIVED_MULTICAST']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_DOSP_RECEIVED_MULTICAST</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_DOSP_RECEIVED_MULTICAST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecDospInvalidPacket\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_DOSP_INVALID_PACKET']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_DOSP_INVALID_PACKET</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_DOSP_INVALID_PACKET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecDospStateLookupFailed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_DOSP_STATE_LOOKUP_FAILED']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_DOSP_STATE_LOOKUP_FAILED</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_DOSP_STATE_LOOKUP_FAILED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecDospMaxEntries\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_DOSP_MAX_ENTRIES']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_DOSP_MAX_ENTRIES</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_DOSP_MAX_ENTRIES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecDospKeymodNotAllowed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_DOSP_KEYMOD_NOT_ALLOWED']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_DOSP_KEYMOD_NOT_ALLOWED</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_DOSP_KEYMOD_NOT_ALLOWED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecDospNotInstalled\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_DOSP_NOT_INSTALLED']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_DOSP_NOT_INSTALLED</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_DOSP_NOT_INSTALLED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.IpsecDospMaxPerIpRatelimitQueues\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_IPSEC_DOSP_MAX_PER_IP_RATELIMIT_QUEUES']/*\"/>\t\n            <unmanaged>ERROR_IPSEC_DOSP_MAX_PER_IP_RATELIMIT_QUEUES</unmanaged>\t\n            <unmanaged-short>ERROR_IPSEC_DOSP_MAX_PER_IP_RATELIMIT_QUEUES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsSectionNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_SECTION_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_SXS_SECTION_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_SECTION_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsCantGenActctx\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_CANT_GEN_ACTCTX']/*\"/>\t\n            <unmanaged>ERROR_SXS_CANT_GEN_ACTCTX</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_CANT_GEN_ACTCTX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsInvalidActctxdataFormat\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_INVALID_ACTCTXDATA_FORMAT']/*\"/>\t\n            <unmanaged>ERROR_SXS_INVALID_ACTCTXDATA_FORMAT</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_INVALID_ACTCTXDATA_FORMAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsAssemblyNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_ASSEMBLY_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_SXS_ASSEMBLY_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_ASSEMBLY_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsManifestFormatError\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_MANIFEST_FORMAT_ERROR']/*\"/>\t\n            <unmanaged>ERROR_SXS_MANIFEST_FORMAT_ERROR</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_MANIFEST_FORMAT_ERROR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsManifestParseError\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_MANIFEST_PARSE_ERROR']/*\"/>\t\n            <unmanaged>ERROR_SXS_MANIFEST_PARSE_ERROR</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_MANIFEST_PARSE_ERROR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsActivationContextDisabled\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_ACTIVATION_CONTEXT_DISABLED']/*\"/>\t\n            <unmanaged>ERROR_SXS_ACTIVATION_CONTEXT_DISABLED</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_ACTIVATION_CONTEXT_DISABLED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsKeyNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_KEY_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_SXS_KEY_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_KEY_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsVersionConflict\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_VERSION_CONFLICT']/*\"/>\t\n            <unmanaged>ERROR_SXS_VERSION_CONFLICT</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_VERSION_CONFLICT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsWrongSectionType\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_WRONG_SECTION_TYPE']/*\"/>\t\n            <unmanaged>ERROR_SXS_WRONG_SECTION_TYPE</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_WRONG_SECTION_TYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsThreadQueriesDisabled\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_THREAD_QUERIES_DISABLED']/*\"/>\t\n            <unmanaged>ERROR_SXS_THREAD_QUERIES_DISABLED</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_THREAD_QUERIES_DISABLED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsProcessDefaultAlreadySet\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_PROCESS_DEFAULT_ALREADY_SET']/*\"/>\t\n            <unmanaged>ERROR_SXS_PROCESS_DEFAULT_ALREADY_SET</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_PROCESS_DEFAULT_ALREADY_SET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsUnknownEncodingGroup\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_UNKNOWN_ENCODING_GROUP']/*\"/>\t\n            <unmanaged>ERROR_SXS_UNKNOWN_ENCODING_GROUP</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_UNKNOWN_ENCODING_GROUP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsUnknownEncoding\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_UNKNOWN_ENCODING']/*\"/>\t\n            <unmanaged>ERROR_SXS_UNKNOWN_ENCODING</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_UNKNOWN_ENCODING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsInvalidXmlNamespaceUri\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_INVALID_XML_NAMESPACE_URI']/*\"/>\t\n            <unmanaged>ERROR_SXS_INVALID_XML_NAMESPACE_URI</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_INVALID_XML_NAMESPACE_URI</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsRootManifestDependencyNotInstalled\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_ROOT_MANIFEST_DEPENDENCY_NOT_INSTALLED']/*\"/>\t\n            <unmanaged>ERROR_SXS_ROOT_MANIFEST_DEPENDENCY_NOT_INSTALLED</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_ROOT_MANIFEST_DEPENDENCY_NOT_INSTALLED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsLeafManifestDependencyNotInstalled\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_LEAF_MANIFEST_DEPENDENCY_NOT_INSTALLED']/*\"/>\t\n            <unmanaged>ERROR_SXS_LEAF_MANIFEST_DEPENDENCY_NOT_INSTALLED</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_LEAF_MANIFEST_DEPENDENCY_NOT_INSTALLED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsInvalidAssemblyIdentityAttribute\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE']/*\"/>\t\n            <unmanaged>ERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsManifestMissingRequiredDefaultNamespace\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_MANIFEST_MISSING_REQUIRED_DEFAULT_NAMESPACE']/*\"/>\t\n            <unmanaged>ERROR_SXS_MANIFEST_MISSING_REQUIRED_DEFAULT_NAMESPACE</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_MANIFEST_MISSING_REQUIRED_DEFAULT_NAMESPACE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsManifestInvalidRequiredDefaultNamespace\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_MANIFEST_INVALID_REQUIRED_DEFAULT_NAMESPACE']/*\"/>\t\n            <unmanaged>ERROR_SXS_MANIFEST_INVALID_REQUIRED_DEFAULT_NAMESPACE</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_MANIFEST_INVALID_REQUIRED_DEFAULT_NAMESPACE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsPrivateManifestCrossPathWithReparsePoint\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_PRIVATE_MANIFEST_CROSS_PATH_WITH_REPARSE_POINT']/*\"/>\t\n            <unmanaged>ERROR_SXS_PRIVATE_MANIFEST_CROSS_PATH_WITH_REPARSE_POINT</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_PRIVATE_MANIFEST_CROSS_PATH_WITH_REPARSE_POINT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsDuplicateDllName\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_DUPLICATE_DLL_NAME']/*\"/>\t\n            <unmanaged>ERROR_SXS_DUPLICATE_DLL_NAME</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_DUPLICATE_DLL_NAME</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsDuplicateWindowclassName\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_DUPLICATE_WINDOWCLASS_NAME']/*\"/>\t\n            <unmanaged>ERROR_SXS_DUPLICATE_WINDOWCLASS_NAME</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_DUPLICATE_WINDOWCLASS_NAME</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsDuplicateClsid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_DUPLICATE_CLSID']/*\"/>\t\n            <unmanaged>ERROR_SXS_DUPLICATE_CLSID</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_DUPLICATE_CLSID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsDuplicateIid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_DUPLICATE_IID']/*\"/>\t\n            <unmanaged>ERROR_SXS_DUPLICATE_IID</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_DUPLICATE_IID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsDuplicateTlbid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_DUPLICATE_TLBID']/*\"/>\t\n            <unmanaged>ERROR_SXS_DUPLICATE_TLBID</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_DUPLICATE_TLBID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsDuplicateProgid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_DUPLICATE_PROGID']/*\"/>\t\n            <unmanaged>ERROR_SXS_DUPLICATE_PROGID</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_DUPLICATE_PROGID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsDuplicateAssemblyName\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_DUPLICATE_ASSEMBLY_NAME']/*\"/>\t\n            <unmanaged>ERROR_SXS_DUPLICATE_ASSEMBLY_NAME</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_DUPLICATE_ASSEMBLY_NAME</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsFileHashMismatch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_FILE_HASH_MISMATCH']/*\"/>\t\n            <unmanaged>ERROR_SXS_FILE_HASH_MISMATCH</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_FILE_HASH_MISMATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsPolicyParseError\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_POLICY_PARSE_ERROR']/*\"/>\t\n            <unmanaged>ERROR_SXS_POLICY_PARSE_ERROR</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_POLICY_PARSE_ERROR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsXmlEMissingquote\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_XML_E_MISSINGQUOTE']/*\"/>\t\n            <unmanaged>ERROR_SXS_XML_E_MISSINGQUOTE</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_XML_E_MISSINGQUOTE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsXmlECommentsyntax\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_XML_E_COMMENTSYNTAX']/*\"/>\t\n            <unmanaged>ERROR_SXS_XML_E_COMMENTSYNTAX</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_XML_E_COMMENTSYNTAX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsXmlEBadstartnamechar\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_XML_E_BADSTARTNAMECHAR']/*\"/>\t\n            <unmanaged>ERROR_SXS_XML_E_BADSTARTNAMECHAR</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_XML_E_BADSTARTNAMECHAR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsXmlEBadnamechar\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_XML_E_BADNAMECHAR']/*\"/>\t\n            <unmanaged>ERROR_SXS_XML_E_BADNAMECHAR</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_XML_E_BADNAMECHAR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsXmlEBadcharinstring\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_XML_E_BADCHARINSTRING']/*\"/>\t\n            <unmanaged>ERROR_SXS_XML_E_BADCHARINSTRING</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_XML_E_BADCHARINSTRING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsXmlEXmldeclsyntax\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_XML_E_XMLDECLSYNTAX']/*\"/>\t\n            <unmanaged>ERROR_SXS_XML_E_XMLDECLSYNTAX</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_XML_E_XMLDECLSYNTAX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsXmlEBadchardata\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_XML_E_BADCHARDATA']/*\"/>\t\n            <unmanaged>ERROR_SXS_XML_E_BADCHARDATA</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_XML_E_BADCHARDATA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsXmlEMissingwhitespace\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_XML_E_MISSINGWHITESPACE']/*\"/>\t\n            <unmanaged>ERROR_SXS_XML_E_MISSINGWHITESPACE</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_XML_E_MISSINGWHITESPACE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsXmlEExpectingtagend\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_XML_E_EXPECTINGTAGEND']/*\"/>\t\n            <unmanaged>ERROR_SXS_XML_E_EXPECTINGTAGEND</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_XML_E_EXPECTINGTAGEND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsXmlEMissingsemicolon\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_XML_E_MISSINGSEMICOLON']/*\"/>\t\n            <unmanaged>ERROR_SXS_XML_E_MISSINGSEMICOLON</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_XML_E_MISSINGSEMICOLON</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsXmlEUnbalancedparen\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_XML_E_UNBALANCEDPAREN']/*\"/>\t\n            <unmanaged>ERROR_SXS_XML_E_UNBALANCEDPAREN</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_XML_E_UNBALANCEDPAREN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsXmlEInternalerror\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_XML_E_INTERNALERROR']/*\"/>\t\n            <unmanaged>ERROR_SXS_XML_E_INTERNALERROR</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_XML_E_INTERNALERROR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsXmlEUnexpectedWhitespace\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_XML_E_UNEXPECTED_WHITESPACE']/*\"/>\t\n            <unmanaged>ERROR_SXS_XML_E_UNEXPECTED_WHITESPACE</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_XML_E_UNEXPECTED_WHITESPACE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsXmlEIncompleteEncoding\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_XML_E_INCOMPLETE_ENCODING']/*\"/>\t\n            <unmanaged>ERROR_SXS_XML_E_INCOMPLETE_ENCODING</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_XML_E_INCOMPLETE_ENCODING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsXmlEMissingParen\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_XML_E_MISSING_PAREN']/*\"/>\t\n            <unmanaged>ERROR_SXS_XML_E_MISSING_PAREN</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_XML_E_MISSING_PAREN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsXmlEExpectingclosequote\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_XML_E_EXPECTINGCLOSEQUOTE']/*\"/>\t\n            <unmanaged>ERROR_SXS_XML_E_EXPECTINGCLOSEQUOTE</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_XML_E_EXPECTINGCLOSEQUOTE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsXmlEMultipleColons\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_XML_E_MULTIPLE_COLONS']/*\"/>\t\n            <unmanaged>ERROR_SXS_XML_E_MULTIPLE_COLONS</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_XML_E_MULTIPLE_COLONS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsXmlEInvalidDecimal\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_XML_E_INVALID_DECIMAL']/*\"/>\t\n            <unmanaged>ERROR_SXS_XML_E_INVALID_DECIMAL</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_XML_E_INVALID_DECIMAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsXmlEInvalidHexidecimal\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_XML_E_INVALID_HEXIDECIMAL']/*\"/>\t\n            <unmanaged>ERROR_SXS_XML_E_INVALID_HEXIDECIMAL</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_XML_E_INVALID_HEXIDECIMAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsXmlEInvalidUnicode\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_XML_E_INVALID_UNICODE']/*\"/>\t\n            <unmanaged>ERROR_SXS_XML_E_INVALID_UNICODE</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_XML_E_INVALID_UNICODE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsXmlEWhitespaceorquestionmark\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_XML_E_WHITESPACEORQUESTIONMARK']/*\"/>\t\n            <unmanaged>ERROR_SXS_XML_E_WHITESPACEORQUESTIONMARK</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_XML_E_WHITESPACEORQUESTIONMARK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsXmlEUnexpectedendtag\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_XML_E_UNEXPECTEDENDTAG']/*\"/>\t\n            <unmanaged>ERROR_SXS_XML_E_UNEXPECTEDENDTAG</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_XML_E_UNEXPECTEDENDTAG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsXmlEUnclosedtag\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_XML_E_UNCLOSEDTAG']/*\"/>\t\n            <unmanaged>ERROR_SXS_XML_E_UNCLOSEDTAG</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_XML_E_UNCLOSEDTAG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsXmlEDuplicateattribute\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_XML_E_DUPLICATEATTRIBUTE']/*\"/>\t\n            <unmanaged>ERROR_SXS_XML_E_DUPLICATEATTRIBUTE</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_XML_E_DUPLICATEATTRIBUTE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsXmlEMultipleroots\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_XML_E_MULTIPLEROOTS']/*\"/>\t\n            <unmanaged>ERROR_SXS_XML_E_MULTIPLEROOTS</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_XML_E_MULTIPLEROOTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsXmlEInvalidatrootlevel\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_XML_E_INVALIDATROOTLEVEL']/*\"/>\t\n            <unmanaged>ERROR_SXS_XML_E_INVALIDATROOTLEVEL</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_XML_E_INVALIDATROOTLEVEL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsXmlEBadxmldecl\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_XML_E_BADXMLDECL']/*\"/>\t\n            <unmanaged>ERROR_SXS_XML_E_BADXMLDECL</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_XML_E_BADXMLDECL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsXmlEMissingroot\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_XML_E_MISSINGROOT']/*\"/>\t\n            <unmanaged>ERROR_SXS_XML_E_MISSINGROOT</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_XML_E_MISSINGROOT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsXmlEUnexpectedeof\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_XML_E_UNEXPECTEDEOF']/*\"/>\t\n            <unmanaged>ERROR_SXS_XML_E_UNEXPECTEDEOF</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_XML_E_UNEXPECTEDEOF</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsXmlEBadperefinsubset\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_XML_E_BADPEREFINSUBSET']/*\"/>\t\n            <unmanaged>ERROR_SXS_XML_E_BADPEREFINSUBSET</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_XML_E_BADPEREFINSUBSET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsXmlEUnclosedstarttag\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_XML_E_UNCLOSEDSTARTTAG']/*\"/>\t\n            <unmanaged>ERROR_SXS_XML_E_UNCLOSEDSTARTTAG</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_XML_E_UNCLOSEDSTARTTAG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsXmlEUnclosedendtag\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_XML_E_UNCLOSEDENDTAG']/*\"/>\t\n            <unmanaged>ERROR_SXS_XML_E_UNCLOSEDENDTAG</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_XML_E_UNCLOSEDENDTAG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsXmlEUnclosedstring\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_XML_E_UNCLOSEDSTRING']/*\"/>\t\n            <unmanaged>ERROR_SXS_XML_E_UNCLOSEDSTRING</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_XML_E_UNCLOSEDSTRING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsXmlEUnclosedcomment\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_XML_E_UNCLOSEDCOMMENT']/*\"/>\t\n            <unmanaged>ERROR_SXS_XML_E_UNCLOSEDCOMMENT</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_XML_E_UNCLOSEDCOMMENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsXmlEUncloseddecl\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_XML_E_UNCLOSEDDECL']/*\"/>\t\n            <unmanaged>ERROR_SXS_XML_E_UNCLOSEDDECL</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_XML_E_UNCLOSEDDECL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsXmlEUnclosedcdata\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_XML_E_UNCLOSEDCDATA']/*\"/>\t\n            <unmanaged>ERROR_SXS_XML_E_UNCLOSEDCDATA</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_XML_E_UNCLOSEDCDATA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsXmlEReservednamespace\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_XML_E_RESERVEDNAMESPACE']/*\"/>\t\n            <unmanaged>ERROR_SXS_XML_E_RESERVEDNAMESPACE</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_XML_E_RESERVEDNAMESPACE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsXmlEInvalidencoding\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_XML_E_INVALIDENCODING']/*\"/>\t\n            <unmanaged>ERROR_SXS_XML_E_INVALIDENCODING</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_XML_E_INVALIDENCODING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsXmlEInvalidswitch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_XML_E_INVALIDSWITCH']/*\"/>\t\n            <unmanaged>ERROR_SXS_XML_E_INVALIDSWITCH</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_XML_E_INVALIDSWITCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsXmlEBadxmlcase\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_XML_E_BADXMLCASE']/*\"/>\t\n            <unmanaged>ERROR_SXS_XML_E_BADXMLCASE</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_XML_E_BADXMLCASE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsXmlEInvalidStandalone\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_XML_E_INVALID_STANDALONE']/*\"/>\t\n            <unmanaged>ERROR_SXS_XML_E_INVALID_STANDALONE</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_XML_E_INVALID_STANDALONE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsXmlEUnexpectedStandalone\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_XML_E_UNEXPECTED_STANDALONE']/*\"/>\t\n            <unmanaged>ERROR_SXS_XML_E_UNEXPECTED_STANDALONE</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_XML_E_UNEXPECTED_STANDALONE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsXmlEInvalidVersion\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_XML_E_INVALID_VERSION']/*\"/>\t\n            <unmanaged>ERROR_SXS_XML_E_INVALID_VERSION</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_XML_E_INVALID_VERSION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsXmlEMissingequals\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_XML_E_MISSINGEQUALS']/*\"/>\t\n            <unmanaged>ERROR_SXS_XML_E_MISSINGEQUALS</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_XML_E_MISSINGEQUALS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsProtectionRecoveryFailed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_PROTECTION_RECOVERY_FAILED']/*\"/>\t\n            <unmanaged>ERROR_SXS_PROTECTION_RECOVERY_FAILED</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_PROTECTION_RECOVERY_FAILED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsProtectionPublicKeyTooShort\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_PROTECTION_PUBLIC_KEY_TOO_SHORT']/*\"/>\t\n            <unmanaged>ERROR_SXS_PROTECTION_PUBLIC_KEY_TOO_SHORT</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_PROTECTION_PUBLIC_KEY_TOO_SHORT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsProtectionCatalogNotValid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_PROTECTION_CATALOG_NOT_VALID']/*\"/>\t\n            <unmanaged>ERROR_SXS_PROTECTION_CATALOG_NOT_VALID</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_PROTECTION_CATALOG_NOT_VALID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsUntranslatableHresult\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_UNTRANSLATABLE_HRESULT']/*\"/>\t\n            <unmanaged>ERROR_SXS_UNTRANSLATABLE_HRESULT</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_UNTRANSLATABLE_HRESULT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsProtectionCatalogFileMissing\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_PROTECTION_CATALOG_FILE_MISSING']/*\"/>\t\n            <unmanaged>ERROR_SXS_PROTECTION_CATALOG_FILE_MISSING</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_PROTECTION_CATALOG_FILE_MISSING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsMissingAssemblyIdentityAttribute\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_MISSING_ASSEMBLY_IDENTITY_ATTRIBUTE']/*\"/>\t\n            <unmanaged>ERROR_SXS_MISSING_ASSEMBLY_IDENTITY_ATTRIBUTE</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_MISSING_ASSEMBLY_IDENTITY_ATTRIBUTE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsInvalidAssemblyIdentityAttributeName\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE_NAME']/*\"/>\t\n            <unmanaged>ERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE_NAME</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE_NAME</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsAssemblyMissing\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_ASSEMBLY_MISSING']/*\"/>\t\n            <unmanaged>ERROR_SXS_ASSEMBLY_MISSING</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_ASSEMBLY_MISSING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsCorruptActivationStack\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_CORRUPT_ACTIVATION_STACK']/*\"/>\t\n            <unmanaged>ERROR_SXS_CORRUPT_ACTIVATION_STACK</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_CORRUPT_ACTIVATION_STACK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsCorruption\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_CORRUPTION']/*\"/>\t\n            <unmanaged>ERROR_SXS_CORRUPTION</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_CORRUPTION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsEarlyDeactivation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_EARLY_DEACTIVATION']/*\"/>\t\n            <unmanaged>ERROR_SXS_EARLY_DEACTIVATION</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_EARLY_DEACTIVATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsInvalidDeactivation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_INVALID_DEACTIVATION']/*\"/>\t\n            <unmanaged>ERROR_SXS_INVALID_DEACTIVATION</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_INVALID_DEACTIVATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsMultipleDeactivation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_MULTIPLE_DEACTIVATION']/*\"/>\t\n            <unmanaged>ERROR_SXS_MULTIPLE_DEACTIVATION</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_MULTIPLE_DEACTIVATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsProcessTerminationRequested\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_PROCESS_TERMINATION_REQUESTED']/*\"/>\t\n            <unmanaged>ERROR_SXS_PROCESS_TERMINATION_REQUESTED</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_PROCESS_TERMINATION_REQUESTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsReleaseActivationContext\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_RELEASE_ACTIVATION_CONTEXT']/*\"/>\t\n            <unmanaged>ERROR_SXS_RELEASE_ACTIVATION_CONTEXT</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_RELEASE_ACTIVATION_CONTEXT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsSystemDefaultActivationContextEmpty\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_SYSTEM_DEFAULT_ACTIVATION_CONTEXT_EMPTY']/*\"/>\t\n            <unmanaged>ERROR_SXS_SYSTEM_DEFAULT_ACTIVATION_CONTEXT_EMPTY</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_SYSTEM_DEFAULT_ACTIVATION_CONTEXT_EMPTY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsInvalidIdentityAttributeValue\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_INVALID_IDENTITY_ATTRIBUTE_VALUE']/*\"/>\t\n            <unmanaged>ERROR_SXS_INVALID_IDENTITY_ATTRIBUTE_VALUE</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_INVALID_IDENTITY_ATTRIBUTE_VALUE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsInvalidIdentityAttributeName\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_INVALID_IDENTITY_ATTRIBUTE_NAME']/*\"/>\t\n            <unmanaged>ERROR_SXS_INVALID_IDENTITY_ATTRIBUTE_NAME</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_INVALID_IDENTITY_ATTRIBUTE_NAME</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsIdentityDuplicateAttribute\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_IDENTITY_DUPLICATE_ATTRIBUTE']/*\"/>\t\n            <unmanaged>ERROR_SXS_IDENTITY_DUPLICATE_ATTRIBUTE</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_IDENTITY_DUPLICATE_ATTRIBUTE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsIdentityParseError\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_IDENTITY_PARSE_ERROR']/*\"/>\t\n            <unmanaged>ERROR_SXS_IDENTITY_PARSE_ERROR</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_IDENTITY_PARSE_ERROR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.MalformedSubstitutionString\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_MALFORMED_SUBSTITUTION_STRING']/*\"/>\t\n            <unmanaged>ERROR_MALFORMED_SUBSTITUTION_STRING</unmanaged>\t\n            <unmanaged-short>ERROR_MALFORMED_SUBSTITUTION_STRING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsIncorrectPublicKeyToken\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_INCORRECT_PUBLIC_KEY_TOKEN']/*\"/>\t\n            <unmanaged>ERROR_SXS_INCORRECT_PUBLIC_KEY_TOKEN</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_INCORRECT_PUBLIC_KEY_TOKEN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.UnmappedSubstitutionString\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_UNMAPPED_SUBSTITUTION_STRING']/*\"/>\t\n            <unmanaged>ERROR_UNMAPPED_SUBSTITUTION_STRING</unmanaged>\t\n            <unmanaged-short>ERROR_UNMAPPED_SUBSTITUTION_STRING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsAssemblyNotLocked\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_ASSEMBLY_NOT_LOCKED']/*\"/>\t\n            <unmanaged>ERROR_SXS_ASSEMBLY_NOT_LOCKED</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_ASSEMBLY_NOT_LOCKED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsComponentStoreCorrupt\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_COMPONENT_STORE_CORRUPT']/*\"/>\t\n            <unmanaged>ERROR_SXS_COMPONENT_STORE_CORRUPT</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_COMPONENT_STORE_CORRUPT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.AdvancedInstallerFailed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_ADVANCED_INSTALLER_FAILED']/*\"/>\t\n            <unmanaged>ERROR_ADVANCED_INSTALLER_FAILED</unmanaged>\t\n            <unmanaged-short>ERROR_ADVANCED_INSTALLER_FAILED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.XmlEncodingMismatch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_XML_ENCODING_MISMATCH']/*\"/>\t\n            <unmanaged>ERROR_XML_ENCODING_MISMATCH</unmanaged>\t\n            <unmanaged-short>ERROR_XML_ENCODING_MISMATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsManifestIdentitySameButContentsDifferent\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_MANIFEST_IDENTITY_SAME_BUT_CONTENTS_DIFFERENT']/*\"/>\t\n            <unmanaged>ERROR_SXS_MANIFEST_IDENTITY_SAME_BUT_CONTENTS_DIFFERENT</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_MANIFEST_IDENTITY_SAME_BUT_CONTENTS_DIFFERENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsIdentitiesDifferent\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_IDENTITIES_DIFFERENT']/*\"/>\t\n            <unmanaged>ERROR_SXS_IDENTITIES_DIFFERENT</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_IDENTITIES_DIFFERENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsAssemblyIsNotADeployment\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_ASSEMBLY_IS_NOT_A_DEPLOYMENT']/*\"/>\t\n            <unmanaged>ERROR_SXS_ASSEMBLY_IS_NOT_A_DEPLOYMENT</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_ASSEMBLY_IS_NOT_A_DEPLOYMENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsFileNotPartOfAssembly\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_FILE_NOT_PART_OF_ASSEMBLY']/*\"/>\t\n            <unmanaged>ERROR_SXS_FILE_NOT_PART_OF_ASSEMBLY</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_FILE_NOT_PART_OF_ASSEMBLY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsManifestTooBig\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_MANIFEST_TOO_BIG']/*\"/>\t\n            <unmanaged>ERROR_SXS_MANIFEST_TOO_BIG</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_MANIFEST_TOO_BIG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsSettingNotRegistered\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_SETTING_NOT_REGISTERED']/*\"/>\t\n            <unmanaged>ERROR_SXS_SETTING_NOT_REGISTERED</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_SETTING_NOT_REGISTERED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsTransactionClosureIncomplete\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_TRANSACTION_CLOSURE_INCOMPLETE']/*\"/>\t\n            <unmanaged>ERROR_SXS_TRANSACTION_CLOSURE_INCOMPLETE</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_TRANSACTION_CLOSURE_INCOMPLETE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SmiPrimitiveInstallerFailed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SMI_PRIMITIVE_INSTALLER_FAILED']/*\"/>\t\n            <unmanaged>ERROR_SMI_PRIMITIVE_INSTALLER_FAILED</unmanaged>\t\n            <unmanaged-short>ERROR_SMI_PRIMITIVE_INSTALLER_FAILED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GenericCommandFailed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GENERIC_COMMAND_FAILED']/*\"/>\t\n            <unmanaged>ERROR_GENERIC_COMMAND_FAILED</unmanaged>\t\n            <unmanaged-short>ERROR_GENERIC_COMMAND_FAILED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SxsFileHashMissing\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SXS_FILE_HASH_MISSING']/*\"/>\t\n            <unmanaged>ERROR_SXS_FILE_HASH_MISSING</unmanaged>\t\n            <unmanaged-short>ERROR_SXS_FILE_HASH_MISSING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.EvtInvalidChannelPath\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_EVT_INVALID_CHANNEL_PATH']/*\"/>\t\n            <unmanaged>ERROR_EVT_INVALID_CHANNEL_PATH</unmanaged>\t\n            <unmanaged-short>ERROR_EVT_INVALID_CHANNEL_PATH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.EvtInvalidQuery\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_EVT_INVALID_QUERY']/*\"/>\t\n            <unmanaged>ERROR_EVT_INVALID_QUERY</unmanaged>\t\n            <unmanaged-short>ERROR_EVT_INVALID_QUERY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.EvtPublisherMetadataNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_EVT_PUBLISHER_METADATA_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_EVT_PUBLISHER_METADATA_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_EVT_PUBLISHER_METADATA_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.EvtEventTemplateNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_EVT_EVENT_TEMPLATE_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_EVT_EVENT_TEMPLATE_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_EVT_EVENT_TEMPLATE_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.EvtInvalidPublisherName\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_EVT_INVALID_PUBLISHER_NAME']/*\"/>\t\n            <unmanaged>ERROR_EVT_INVALID_PUBLISHER_NAME</unmanaged>\t\n            <unmanaged-short>ERROR_EVT_INVALID_PUBLISHER_NAME</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.EvtInvalidEventData\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_EVT_INVALID_EVENT_DATA']/*\"/>\t\n            <unmanaged>ERROR_EVT_INVALID_EVENT_DATA</unmanaged>\t\n            <unmanaged-short>ERROR_EVT_INVALID_EVENT_DATA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.EvtChannelNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_EVT_CHANNEL_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_EVT_CHANNEL_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_EVT_CHANNEL_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.EvtMalformedXmlText\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_EVT_MALFORMED_XML_TEXT']/*\"/>\t\n            <unmanaged>ERROR_EVT_MALFORMED_XML_TEXT</unmanaged>\t\n            <unmanaged-short>ERROR_EVT_MALFORMED_XML_TEXT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.EvtSubscriptionToDirectChannel\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_EVT_SUBSCRIPTION_TO_DIRECT_CHANNEL']/*\"/>\t\n            <unmanaged>ERROR_EVT_SUBSCRIPTION_TO_DIRECT_CHANNEL</unmanaged>\t\n            <unmanaged-short>ERROR_EVT_SUBSCRIPTION_TO_DIRECT_CHANNEL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.EvtConfigurationError\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_EVT_CONFIGURATION_ERROR']/*\"/>\t\n            <unmanaged>ERROR_EVT_CONFIGURATION_ERROR</unmanaged>\t\n            <unmanaged-short>ERROR_EVT_CONFIGURATION_ERROR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.EvtQueryResultStale\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_EVT_QUERY_RESULT_STALE']/*\"/>\t\n            <unmanaged>ERROR_EVT_QUERY_RESULT_STALE</unmanaged>\t\n            <unmanaged-short>ERROR_EVT_QUERY_RESULT_STALE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.EvtQueryResultInvalidPosition\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_EVT_QUERY_RESULT_INVALID_POSITION']/*\"/>\t\n            <unmanaged>ERROR_EVT_QUERY_RESULT_INVALID_POSITION</unmanaged>\t\n            <unmanaged-short>ERROR_EVT_QUERY_RESULT_INVALID_POSITION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.EvtNonValidatingMsxml\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_EVT_NON_VALIDATING_MSXML']/*\"/>\t\n            <unmanaged>ERROR_EVT_NON_VALIDATING_MSXML</unmanaged>\t\n            <unmanaged-short>ERROR_EVT_NON_VALIDATING_MSXML</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.EvtFilterAlreadyscoped\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_EVT_FILTER_ALREADYSCOPED']/*\"/>\t\n            <unmanaged>ERROR_EVT_FILTER_ALREADYSCOPED</unmanaged>\t\n            <unmanaged-short>ERROR_EVT_FILTER_ALREADYSCOPED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.EvtFilterNoteltset\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_EVT_FILTER_NOTELTSET']/*\"/>\t\n            <unmanaged>ERROR_EVT_FILTER_NOTELTSET</unmanaged>\t\n            <unmanaged-short>ERROR_EVT_FILTER_NOTELTSET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.EvtFilterInvarg\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_EVT_FILTER_INVARG']/*\"/>\t\n            <unmanaged>ERROR_EVT_FILTER_INVARG</unmanaged>\t\n            <unmanaged-short>ERROR_EVT_FILTER_INVARG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.EvtFilterInvtest\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_EVT_FILTER_INVTEST']/*\"/>\t\n            <unmanaged>ERROR_EVT_FILTER_INVTEST</unmanaged>\t\n            <unmanaged-short>ERROR_EVT_FILTER_INVTEST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.EvtFilterInvtype\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_EVT_FILTER_INVTYPE']/*\"/>\t\n            <unmanaged>ERROR_EVT_FILTER_INVTYPE</unmanaged>\t\n            <unmanaged-short>ERROR_EVT_FILTER_INVTYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.EvtFilterParseerr\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_EVT_FILTER_PARSEERR']/*\"/>\t\n            <unmanaged>ERROR_EVT_FILTER_PARSEERR</unmanaged>\t\n            <unmanaged-short>ERROR_EVT_FILTER_PARSEERR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.EvtFilterUnsupportedop\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_EVT_FILTER_UNSUPPORTEDOP']/*\"/>\t\n            <unmanaged>ERROR_EVT_FILTER_UNSUPPORTEDOP</unmanaged>\t\n            <unmanaged-short>ERROR_EVT_FILTER_UNSUPPORTEDOP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.EvtFilterUnexpectedtoken\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_EVT_FILTER_UNEXPECTEDTOKEN']/*\"/>\t\n            <unmanaged>ERROR_EVT_FILTER_UNEXPECTEDTOKEN</unmanaged>\t\n            <unmanaged-short>ERROR_EVT_FILTER_UNEXPECTEDTOKEN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.EvtInvalidOperationOverEnabledDirectChannel\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_EVT_INVALID_OPERATION_OVER_ENABLED_DIRECT_CHANNEL']/*\"/>\t\n            <unmanaged>ERROR_EVT_INVALID_OPERATION_OVER_ENABLED_DIRECT_CHANNEL</unmanaged>\t\n            <unmanaged-short>ERROR_EVT_INVALID_OPERATION_OVER_ENABLED_DIRECT_CHANNEL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.EvtInvalidChannelPropertyValue\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_EVT_INVALID_CHANNEL_PROPERTY_VALUE']/*\"/>\t\n            <unmanaged>ERROR_EVT_INVALID_CHANNEL_PROPERTY_VALUE</unmanaged>\t\n            <unmanaged-short>ERROR_EVT_INVALID_CHANNEL_PROPERTY_VALUE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.EvtInvalidPublisherPropertyValue\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_EVT_INVALID_PUBLISHER_PROPERTY_VALUE']/*\"/>\t\n            <unmanaged>ERROR_EVT_INVALID_PUBLISHER_PROPERTY_VALUE</unmanaged>\t\n            <unmanaged-short>ERROR_EVT_INVALID_PUBLISHER_PROPERTY_VALUE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.EvtChannelCannotActivate\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_EVT_CHANNEL_CANNOT_ACTIVATE']/*\"/>\t\n            <unmanaged>ERROR_EVT_CHANNEL_CANNOT_ACTIVATE</unmanaged>\t\n            <unmanaged-short>ERROR_EVT_CHANNEL_CANNOT_ACTIVATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.EvtFilterTooComplex\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_EVT_FILTER_TOO_COMPLEX']/*\"/>\t\n            <unmanaged>ERROR_EVT_FILTER_TOO_COMPLEX</unmanaged>\t\n            <unmanaged-short>ERROR_EVT_FILTER_TOO_COMPLEX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.EvtMessageNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_EVT_MESSAGE_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_EVT_MESSAGE_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_EVT_MESSAGE_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.EvtMessageIdNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_EVT_MESSAGE_ID_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_EVT_MESSAGE_ID_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_EVT_MESSAGE_ID_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.EvtUnresolvedValueInsert\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_EVT_UNRESOLVED_VALUE_INSERT']/*\"/>\t\n            <unmanaged>ERROR_EVT_UNRESOLVED_VALUE_INSERT</unmanaged>\t\n            <unmanaged-short>ERROR_EVT_UNRESOLVED_VALUE_INSERT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.EvtUnresolvedParameterInsert\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_EVT_UNRESOLVED_PARAMETER_INSERT']/*\"/>\t\n            <unmanaged>ERROR_EVT_UNRESOLVED_PARAMETER_INSERT</unmanaged>\t\n            <unmanaged-short>ERROR_EVT_UNRESOLVED_PARAMETER_INSERT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.EvtMaxInsertsReached\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_EVT_MAX_INSERTS_REACHED']/*\"/>\t\n            <unmanaged>ERROR_EVT_MAX_INSERTS_REACHED</unmanaged>\t\n            <unmanaged-short>ERROR_EVT_MAX_INSERTS_REACHED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.EvtEventDefinitionNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_EVT_EVENT_DEFINITION_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_EVT_EVENT_DEFINITION_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_EVT_EVENT_DEFINITION_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.EvtMessageLocaleNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_EVT_MESSAGE_LOCALE_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_EVT_MESSAGE_LOCALE_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_EVT_MESSAGE_LOCALE_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.EvtVersionTooOld\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_EVT_VERSION_TOO_OLD']/*\"/>\t\n            <unmanaged>ERROR_EVT_VERSION_TOO_OLD</unmanaged>\t\n            <unmanaged-short>ERROR_EVT_VERSION_TOO_OLD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.EvtVersionTooNew\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_EVT_VERSION_TOO_NEW']/*\"/>\t\n            <unmanaged>ERROR_EVT_VERSION_TOO_NEW</unmanaged>\t\n            <unmanaged-short>ERROR_EVT_VERSION_TOO_NEW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.EvtCannotOpenChannelOfQuery\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_EVT_CANNOT_OPEN_CHANNEL_OF_QUERY']/*\"/>\t\n            <unmanaged>ERROR_EVT_CANNOT_OPEN_CHANNEL_OF_QUERY</unmanaged>\t\n            <unmanaged-short>ERROR_EVT_CANNOT_OPEN_CHANNEL_OF_QUERY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.EvtPublisherDisabled\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_EVT_PUBLISHER_DISABLED']/*\"/>\t\n            <unmanaged>ERROR_EVT_PUBLISHER_DISABLED</unmanaged>\t\n            <unmanaged-short>ERROR_EVT_PUBLISHER_DISABLED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.EvtFilterOutOfRange\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_EVT_FILTER_OUT_OF_RANGE']/*\"/>\t\n            <unmanaged>ERROR_EVT_FILTER_OUT_OF_RANGE</unmanaged>\t\n            <unmanaged-short>ERROR_EVT_FILTER_OUT_OF_RANGE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.EcSubscriptionCannotActivate\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_EC_SUBSCRIPTION_CANNOT_ACTIVATE']/*\"/>\t\n            <unmanaged>ERROR_EC_SUBSCRIPTION_CANNOT_ACTIVATE</unmanaged>\t\n            <unmanaged-short>ERROR_EC_SUBSCRIPTION_CANNOT_ACTIVATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.EcLogDisabled\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_EC_LOG_DISABLED']/*\"/>\t\n            <unmanaged>ERROR_EC_LOG_DISABLED</unmanaged>\t\n            <unmanaged-short>ERROR_EC_LOG_DISABLED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.EcCircularForwarding\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_EC_CIRCULAR_FORWARDING']/*\"/>\t\n            <unmanaged>ERROR_EC_CIRCULAR_FORWARDING</unmanaged>\t\n            <unmanaged-short>ERROR_EC_CIRCULAR_FORWARDING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.EcCredstoreFull\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_EC_CREDSTORE_FULL']/*\"/>\t\n            <unmanaged>ERROR_EC_CREDSTORE_FULL</unmanaged>\t\n            <unmanaged-short>ERROR_EC_CREDSTORE_FULL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.EcCredNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_EC_CRED_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_EC_CRED_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_EC_CRED_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.EcNoActiveChannel\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_EC_NO_ACTIVE_CHANNEL']/*\"/>\t\n            <unmanaged>ERROR_EC_NO_ACTIVE_CHANNEL</unmanaged>\t\n            <unmanaged-short>ERROR_EC_NO_ACTIVE_CHANNEL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.MuiFileNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_MUI_FILE_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_MUI_FILE_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_MUI_FILE_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.MuiInvalidFile\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_MUI_INVALID_FILE']/*\"/>\t\n            <unmanaged>ERROR_MUI_INVALID_FILE</unmanaged>\t\n            <unmanaged-short>ERROR_MUI_INVALID_FILE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.MuiInvalidRcConfig\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_MUI_INVALID_RC_CONFIG']/*\"/>\t\n            <unmanaged>ERROR_MUI_INVALID_RC_CONFIG</unmanaged>\t\n            <unmanaged-short>ERROR_MUI_INVALID_RC_CONFIG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.MuiInvalidLocaleName\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_MUI_INVALID_LOCALE_NAME']/*\"/>\t\n            <unmanaged>ERROR_MUI_INVALID_LOCALE_NAME</unmanaged>\t\n            <unmanaged-short>ERROR_MUI_INVALID_LOCALE_NAME</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.MuiInvalidUltimatefallbackName\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_MUI_INVALID_ULTIMATEFALLBACK_NAME']/*\"/>\t\n            <unmanaged>ERROR_MUI_INVALID_ULTIMATEFALLBACK_NAME</unmanaged>\t\n            <unmanaged-short>ERROR_MUI_INVALID_ULTIMATEFALLBACK_NAME</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.MuiFileNotLoaded\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_MUI_FILE_NOT_LOADED']/*\"/>\t\n            <unmanaged>ERROR_MUI_FILE_NOT_LOADED</unmanaged>\t\n            <unmanaged-short>ERROR_MUI_FILE_NOT_LOADED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.ResourceEnumUserStop\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_RESOURCE_ENUM_USER_STOP']/*\"/>\t\n            <unmanaged>ERROR_RESOURCE_ENUM_USER_STOP</unmanaged>\t\n            <unmanaged-short>ERROR_RESOURCE_ENUM_USER_STOP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.MuiIntlsettingsUilangNotInstalled\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_MUI_INTLSETTINGS_UILANG_NOT_INSTALLED']/*\"/>\t\n            <unmanaged>ERROR_MUI_INTLSETTINGS_UILANG_NOT_INSTALLED</unmanaged>\t\n            <unmanaged-short>ERROR_MUI_INTLSETTINGS_UILANG_NOT_INSTALLED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.MuiIntlsettingsInvalidLocaleName\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_MUI_INTLSETTINGS_INVALID_LOCALE_NAME']/*\"/>\t\n            <unmanaged>ERROR_MUI_INTLSETTINGS_INVALID_LOCALE_NAME</unmanaged>\t\n            <unmanaged-short>ERROR_MUI_INTLSETTINGS_INVALID_LOCALE_NAME</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.McaInvalidCapabilitiesString\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_MCA_INVALID_CAPABILITIES_STRING']/*\"/>\t\n            <unmanaged>ERROR_MCA_INVALID_CAPABILITIES_STRING</unmanaged>\t\n            <unmanaged-short>ERROR_MCA_INVALID_CAPABILITIES_STRING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.McaInvalidVcpVersion\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_MCA_INVALID_VCP_VERSION']/*\"/>\t\n            <unmanaged>ERROR_MCA_INVALID_VCP_VERSION</unmanaged>\t\n            <unmanaged-short>ERROR_MCA_INVALID_VCP_VERSION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.McaMonitorViolatesMccsSpecification\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_MCA_MONITOR_VIOLATES_MCCS_SPECIFICATION']/*\"/>\t\n            <unmanaged>ERROR_MCA_MONITOR_VIOLATES_MCCS_SPECIFICATION</unmanaged>\t\n            <unmanaged-short>ERROR_MCA_MONITOR_VIOLATES_MCCS_SPECIFICATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.McaMccsVersionMismatch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_MCA_MCCS_VERSION_MISMATCH']/*\"/>\t\n            <unmanaged>ERROR_MCA_MCCS_VERSION_MISMATCH</unmanaged>\t\n            <unmanaged-short>ERROR_MCA_MCCS_VERSION_MISMATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.McaUnsupportedMccsVersion\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_MCA_UNSUPPORTED_MCCS_VERSION']/*\"/>\t\n            <unmanaged>ERROR_MCA_UNSUPPORTED_MCCS_VERSION</unmanaged>\t\n            <unmanaged-short>ERROR_MCA_UNSUPPORTED_MCCS_VERSION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.McaInternalError\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_MCA_INTERNAL_ERROR']/*\"/>\t\n            <unmanaged>ERROR_MCA_INTERNAL_ERROR</unmanaged>\t\n            <unmanaged-short>ERROR_MCA_INTERNAL_ERROR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.McaInvalidTechnologyTypeReturned\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_MCA_INVALID_TECHNOLOGY_TYPE_RETURNED']/*\"/>\t\n            <unmanaged>ERROR_MCA_INVALID_TECHNOLOGY_TYPE_RETURNED</unmanaged>\t\n            <unmanaged-short>ERROR_MCA_INVALID_TECHNOLOGY_TYPE_RETURNED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.McaUnsupportedColorTemperature\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_MCA_UNSUPPORTED_COLOR_TEMPERATURE']/*\"/>\t\n            <unmanaged>ERROR_MCA_UNSUPPORTED_COLOR_TEMPERATURE</unmanaged>\t\n            <unmanaged-short>ERROR_MCA_UNSUPPORTED_COLOR_TEMPERATURE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.AmbiguousSystemDevice\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_AMBIGUOUS_SYSTEM_DEVICE']/*\"/>\t\n            <unmanaged>ERROR_AMBIGUOUS_SYSTEM_DEVICE</unmanaged>\t\n            <unmanaged-short>ERROR_AMBIGUOUS_SYSTEM_DEVICE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.SystemDeviceNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_SYSTEM_DEVICE_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_SYSTEM_DEVICE_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_SYSTEM_DEVICE_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.HashNotSupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_HASH_NOT_SUPPORTED']/*\"/>\t\n            <unmanaged>ERROR_HASH_NOT_SUPPORTED</unmanaged>\t\n            <unmanaged-short>ERROR_HASH_NOT_SUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.HashNotPresent\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_HASH_NOT_PRESENT']/*\"/>\t\n            <unmanaged>ERROR_HASH_NOT_PRESENT</unmanaged>\t\n            <unmanaged-short>ERROR_HASH_NOT_PRESENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.AuditingDisabled\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_AUDITING_DISABLED']/*\"/>\t\n            <unmanaged>ERROR_AUDITING_DISABLED</unmanaged>\t\n            <unmanaged-short>ERROR_AUDITING_DISABLED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.AllSidsFiltered\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_ALL_SIDS_FILTERED']/*\"/>\t\n            <unmanaged>ERROR_ALL_SIDS_FILTERED</unmanaged>\t\n            <unmanaged-short>ERROR_ALL_SIDS_FILTERED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.BizrulesNotEnabled\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_BIZRULES_NOT_ENABLED']/*\"/>\t\n            <unmanaged>ERROR_BIZRULES_NOT_ENABLED</unmanaged>\t\n            <unmanaged-short>ERROR_BIZRULES_NOT_ENABLED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.CredRequiresConfirmation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_CRED_REQUIRES_CONFIRMATION']/*\"/>\t\n            <unmanaged>ERROR_CRED_REQUIRES_CONFIRMATION</unmanaged>\t\n            <unmanaged-short>ERROR_CRED_REQUIRES_CONFIRMATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.FltIoComplete\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_FLT_IO_COMPLETE']/*\"/>\t\n            <unmanaged>ERROR_FLT_IO_COMPLETE</unmanaged>\t\n            <unmanaged-short>ERROR_FLT_IO_COMPLETE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.FltNoHandlerDefined\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_FLT_NO_HANDLER_DEFINED']/*\"/>\t\n            <unmanaged>ERROR_FLT_NO_HANDLER_DEFINED</unmanaged>\t\n            <unmanaged-short>ERROR_FLT_NO_HANDLER_DEFINED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.FltContextAlreadyDefined\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_FLT_CONTEXT_ALREADY_DEFINED']/*\"/>\t\n            <unmanaged>ERROR_FLT_CONTEXT_ALREADY_DEFINED</unmanaged>\t\n            <unmanaged-short>ERROR_FLT_CONTEXT_ALREADY_DEFINED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.FltInvalidAsynchronousRequest\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_FLT_INVALID_ASYNCHRONOUS_REQUEST']/*\"/>\t\n            <unmanaged>ERROR_FLT_INVALID_ASYNCHRONOUS_REQUEST</unmanaged>\t\n            <unmanaged-short>ERROR_FLT_INVALID_ASYNCHRONOUS_REQUEST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.FltDisallowFastIo\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_FLT_DISALLOW_FAST_IO']/*\"/>\t\n            <unmanaged>ERROR_FLT_DISALLOW_FAST_IO</unmanaged>\t\n            <unmanaged-short>ERROR_FLT_DISALLOW_FAST_IO</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.FltInvalidNameRequest\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_FLT_INVALID_NAME_REQUEST']/*\"/>\t\n            <unmanaged>ERROR_FLT_INVALID_NAME_REQUEST</unmanaged>\t\n            <unmanaged-short>ERROR_FLT_INVALID_NAME_REQUEST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.FltNotSafeToPostOperation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_FLT_NOT_SAFE_TO_POST_OPERATION']/*\"/>\t\n            <unmanaged>ERROR_FLT_NOT_SAFE_TO_POST_OPERATION</unmanaged>\t\n            <unmanaged-short>ERROR_FLT_NOT_SAFE_TO_POST_OPERATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.FltNotInitialized\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_FLT_NOT_INITIALIZED']/*\"/>\t\n            <unmanaged>ERROR_FLT_NOT_INITIALIZED</unmanaged>\t\n            <unmanaged-short>ERROR_FLT_NOT_INITIALIZED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.FltFilterNotReady\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_FLT_FILTER_NOT_READY']/*\"/>\t\n            <unmanaged>ERROR_FLT_FILTER_NOT_READY</unmanaged>\t\n            <unmanaged-short>ERROR_FLT_FILTER_NOT_READY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.FltPostOperationCleanup\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_FLT_POST_OPERATION_CLEANUP']/*\"/>\t\n            <unmanaged>ERROR_FLT_POST_OPERATION_CLEANUP</unmanaged>\t\n            <unmanaged-short>ERROR_FLT_POST_OPERATION_CLEANUP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.FltInternalError\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_FLT_INTERNAL_ERROR']/*\"/>\t\n            <unmanaged>ERROR_FLT_INTERNAL_ERROR</unmanaged>\t\n            <unmanaged-short>ERROR_FLT_INTERNAL_ERROR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.FltDeletingObject\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_FLT_DELETING_OBJECT']/*\"/>\t\n            <unmanaged>ERROR_FLT_DELETING_OBJECT</unmanaged>\t\n            <unmanaged-short>ERROR_FLT_DELETING_OBJECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.FltMustBeNonpagedPool\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_FLT_MUST_BE_NONPAGED_POOL']/*\"/>\t\n            <unmanaged>ERROR_FLT_MUST_BE_NONPAGED_POOL</unmanaged>\t\n            <unmanaged-short>ERROR_FLT_MUST_BE_NONPAGED_POOL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.FltDuplicateEntry\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_FLT_DUPLICATE_ENTRY']/*\"/>\t\n            <unmanaged>ERROR_FLT_DUPLICATE_ENTRY</unmanaged>\t\n            <unmanaged-short>ERROR_FLT_DUPLICATE_ENTRY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.FltCbdqDisabled\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_FLT_CBDQ_DISABLED']/*\"/>\t\n            <unmanaged>ERROR_FLT_CBDQ_DISABLED</unmanaged>\t\n            <unmanaged-short>ERROR_FLT_CBDQ_DISABLED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.FltDoNotAttach\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_FLT_DO_NOT_ATTACH']/*\"/>\t\n            <unmanaged>ERROR_FLT_DO_NOT_ATTACH</unmanaged>\t\n            <unmanaged-short>ERROR_FLT_DO_NOT_ATTACH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.FltDoNotDetach\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_FLT_DO_NOT_DETACH']/*\"/>\t\n            <unmanaged>ERROR_FLT_DO_NOT_DETACH</unmanaged>\t\n            <unmanaged-short>ERROR_FLT_DO_NOT_DETACH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.FltInstanceAltitudeCollision\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_FLT_INSTANCE_ALTITUDE_COLLISION']/*\"/>\t\n            <unmanaged>ERROR_FLT_INSTANCE_ALTITUDE_COLLISION</unmanaged>\t\n            <unmanaged-short>ERROR_FLT_INSTANCE_ALTITUDE_COLLISION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.FltInstanceNameCollision\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_FLT_INSTANCE_NAME_COLLISION']/*\"/>\t\n            <unmanaged>ERROR_FLT_INSTANCE_NAME_COLLISION</unmanaged>\t\n            <unmanaged-short>ERROR_FLT_INSTANCE_NAME_COLLISION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.FltFilterNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_FLT_FILTER_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_FLT_FILTER_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_FLT_FILTER_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.FltVolumeNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_FLT_VOLUME_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_FLT_VOLUME_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_FLT_VOLUME_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.FltInstanceNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_FLT_INSTANCE_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_FLT_INSTANCE_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_FLT_INSTANCE_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.FltContextAllocationNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_FLT_CONTEXT_ALLOCATION_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_FLT_CONTEXT_ALLOCATION_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_FLT_CONTEXT_ALLOCATION_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.FltInvalidContextRegistration\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_FLT_INVALID_CONTEXT_REGISTRATION']/*\"/>\t\n            <unmanaged>ERROR_FLT_INVALID_CONTEXT_REGISTRATION</unmanaged>\t\n            <unmanaged-short>ERROR_FLT_INVALID_CONTEXT_REGISTRATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.FltNameCacheMiss\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_FLT_NAME_CACHE_MISS']/*\"/>\t\n            <unmanaged>ERROR_FLT_NAME_CACHE_MISS</unmanaged>\t\n            <unmanaged-short>ERROR_FLT_NAME_CACHE_MISS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.FltNoDeviceObject\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_FLT_NO_DEVICE_OBJECT']/*\"/>\t\n            <unmanaged>ERROR_FLT_NO_DEVICE_OBJECT</unmanaged>\t\n            <unmanaged-short>ERROR_FLT_NO_DEVICE_OBJECT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.FltVolumeAlreadyMounted\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_FLT_VOLUME_ALREADY_MOUNTED']/*\"/>\t\n            <unmanaged>ERROR_FLT_VOLUME_ALREADY_MOUNTED</unmanaged>\t\n            <unmanaged-short>ERROR_FLT_VOLUME_ALREADY_MOUNTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.FltAlreadyEnlisted\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_FLT_ALREADY_ENLISTED']/*\"/>\t\n            <unmanaged>ERROR_FLT_ALREADY_ENLISTED</unmanaged>\t\n            <unmanaged-short>ERROR_FLT_ALREADY_ENLISTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.FltContextAlreadyLinked\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_FLT_CONTEXT_ALREADY_LINKED']/*\"/>\t\n            <unmanaged>ERROR_FLT_CONTEXT_ALREADY_LINKED</unmanaged>\t\n            <unmanaged-short>ERROR_FLT_CONTEXT_ALREADY_LINKED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.FltNoWaiterForReply\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_FLT_NO_WAITER_FOR_REPLY']/*\"/>\t\n            <unmanaged>ERROR_FLT_NO_WAITER_FOR_REPLY</unmanaged>\t\n            <unmanaged-short>ERROR_FLT_NO_WAITER_FOR_REPLY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.HungDisplayDriverThread\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_HUNG_DISPLAY_DRIVER_THREAD']/*\"/>\t\n            <unmanaged>ERROR_HUNG_DISPLAY_DRIVER_THREAD</unmanaged>\t\n            <unmanaged-short>ERROR_HUNG_DISPLAY_DRIVER_THREAD</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.MonitorNoDescriptor\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_MONITOR_NO_DESCRIPTOR']/*\"/>\t\n            <unmanaged>ERROR_MONITOR_NO_DESCRIPTOR</unmanaged>\t\n            <unmanaged-short>ERROR_MONITOR_NO_DESCRIPTOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.MonitorUnknownDescriptorFormat\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_MONITOR_UNKNOWN_DESCRIPTOR_FORMAT']/*\"/>\t\n            <unmanaged>ERROR_MONITOR_UNKNOWN_DESCRIPTOR_FORMAT</unmanaged>\t\n            <unmanaged-short>ERROR_MONITOR_UNKNOWN_DESCRIPTOR_FORMAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.MonitorInvalidDescriptorChecksum\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_MONITOR_INVALID_DESCRIPTOR_CHECKSUM']/*\"/>\t\n            <unmanaged>ERROR_MONITOR_INVALID_DESCRIPTOR_CHECKSUM</unmanaged>\t\n            <unmanaged-short>ERROR_MONITOR_INVALID_DESCRIPTOR_CHECKSUM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.MonitorInvalidStandardTimingBlock\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_MONITOR_INVALID_STANDARD_TIMING_BLOCK']/*\"/>\t\n            <unmanaged>ERROR_MONITOR_INVALID_STANDARD_TIMING_BLOCK</unmanaged>\t\n            <unmanaged-short>ERROR_MONITOR_INVALID_STANDARD_TIMING_BLOCK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.MonitorWmiDatablockRegistrationFailed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_MONITOR_WMI_DATABLOCK_REGISTRATION_FAILED']/*\"/>\t\n            <unmanaged>ERROR_MONITOR_WMI_DATABLOCK_REGISTRATION_FAILED</unmanaged>\t\n            <unmanaged-short>ERROR_MONITOR_WMI_DATABLOCK_REGISTRATION_FAILED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.MonitorInvalidSerialNumberMondscBlock\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_MONITOR_INVALID_SERIAL_NUMBER_MONDSC_BLOCK']/*\"/>\t\n            <unmanaged>ERROR_MONITOR_INVALID_SERIAL_NUMBER_MONDSC_BLOCK</unmanaged>\t\n            <unmanaged-short>ERROR_MONITOR_INVALID_SERIAL_NUMBER_MONDSC_BLOCK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.MonitorInvalidUserFriendlyMondscBlock\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_MONITOR_INVALID_USER_FRIENDLY_MONDSC_BLOCK']/*\"/>\t\n            <unmanaged>ERROR_MONITOR_INVALID_USER_FRIENDLY_MONDSC_BLOCK</unmanaged>\t\n            <unmanaged-short>ERROR_MONITOR_INVALID_USER_FRIENDLY_MONDSC_BLOCK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.MonitorNoMoreDescriptorData\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_MONITOR_NO_MORE_DESCRIPTOR_DATA']/*\"/>\t\n            <unmanaged>ERROR_MONITOR_NO_MORE_DESCRIPTOR_DATA</unmanaged>\t\n            <unmanaged-short>ERROR_MONITOR_NO_MORE_DESCRIPTOR_DATA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.MonitorInvalidDetailedTimingBlock\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_MONITOR_INVALID_DETAILED_TIMING_BLOCK']/*\"/>\t\n            <unmanaged>ERROR_MONITOR_INVALID_DETAILED_TIMING_BLOCK</unmanaged>\t\n            <unmanaged-short>ERROR_MONITOR_INVALID_DETAILED_TIMING_BLOCK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.MonitorInvalidManufactureDate\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_MONITOR_INVALID_MANUFACTURE_DATE']/*\"/>\t\n            <unmanaged>ERROR_MONITOR_INVALID_MANUFACTURE_DATE</unmanaged>\t\n            <unmanaged-short>ERROR_MONITOR_INVALID_MANUFACTURE_DATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsNotExclusiveModeOwner\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_NOT_EXCLUSIVE_MODE_OWNER']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_NOT_EXCLUSIVE_MODE_OWNER</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_NOT_EXCLUSIVE_MODE_OWNER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsInsufficientDmaBuffer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_INSUFFICIENT_DMA_BUFFER']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_INSUFFICIENT_DMA_BUFFER</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_INSUFFICIENT_DMA_BUFFER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsInvalidDisplayAdapter\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_INVALID_DISPLAY_ADAPTER']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_INVALID_DISPLAY_ADAPTER</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_INVALID_DISPLAY_ADAPTER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsAdapterWasReset\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_ADAPTER_WAS_RESET']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_ADAPTER_WAS_RESET</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_ADAPTER_WAS_RESET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsInvalidDriverModel\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_INVALID_DRIVER_MODEL']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_INVALID_DRIVER_MODEL</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_INVALID_DRIVER_MODEL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsPresentModeChanged\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_PRESENT_MODE_CHANGED']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_PRESENT_MODE_CHANGED</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_PRESENT_MODE_CHANGED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsPresentOccluded\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_PRESENT_OCCLUDED']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_PRESENT_OCCLUDED</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_PRESENT_OCCLUDED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsPresentDenied\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_PRESENT_DENIED']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_PRESENT_DENIED</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_PRESENT_DENIED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsCannotcolorconvert\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_CANNOTCOLORCONVERT']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_CANNOTCOLORCONVERT</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_CANNOTCOLORCONVERT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsDriverMismatch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_DRIVER_MISMATCH']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_DRIVER_MISMATCH</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_DRIVER_MISMATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsPartialDataPopulated\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_PARTIAL_DATA_POPULATED']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_PARTIAL_DATA_POPULATED</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_PARTIAL_DATA_POPULATED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsPresentRedirectionDisabled\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_PRESENT_REDIRECTION_DISABLED']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_PRESENT_REDIRECTION_DISABLED</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_PRESENT_REDIRECTION_DISABLED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsPresentUnoccluded\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_PRESENT_UNOCCLUDED']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_PRESENT_UNOCCLUDED</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_PRESENT_UNOCCLUDED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsNoVideoMemory\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_NO_VIDEO_MEMORY']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_NO_VIDEO_MEMORY</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_NO_VIDEO_MEMORY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsCantLockMemory\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_CANT_LOCK_MEMORY']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_CANT_LOCK_MEMORY</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_CANT_LOCK_MEMORY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsAllocationBusy\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_ALLOCATION_BUSY']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_ALLOCATION_BUSY</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_ALLOCATION_BUSY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsTooManyReferences\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_TOO_MANY_REFERENCES']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_TOO_MANY_REFERENCES</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_TOO_MANY_REFERENCES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsTryAgainLater\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_TRY_AGAIN_LATER']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_TRY_AGAIN_LATER</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_TRY_AGAIN_LATER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsTryAgainNow\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_TRY_AGAIN_NOW']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_TRY_AGAIN_NOW</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_TRY_AGAIN_NOW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsAllocationInvalid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_ALLOCATION_INVALID']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_ALLOCATION_INVALID</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_ALLOCATION_INVALID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsUnswizzlingApertureUnavailable\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_UNSWIZZLING_APERTURE_UNAVAILABLE']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_UNSWIZZLING_APERTURE_UNAVAILABLE</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_UNSWIZZLING_APERTURE_UNAVAILABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsUnswizzlingApertureUnsupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_UNSWIZZLING_APERTURE_UNSUPPORTED']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_UNSWIZZLING_APERTURE_UNSUPPORTED</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_UNSWIZZLING_APERTURE_UNSUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsCantEvictPinnedAllocation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_CANT_EVICT_PINNED_ALLOCATION']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_CANT_EVICT_PINNED_ALLOCATION</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_CANT_EVICT_PINNED_ALLOCATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsInvalidAllocationUsage\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_INVALID_ALLOCATION_USAGE']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_INVALID_ALLOCATION_USAGE</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_INVALID_ALLOCATION_USAGE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsCantRenderLockedAllocation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_CANT_RENDER_LOCKED_ALLOCATION']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_CANT_RENDER_LOCKED_ALLOCATION</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_CANT_RENDER_LOCKED_ALLOCATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsAllocationClosed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_ALLOCATION_CLOSED']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_ALLOCATION_CLOSED</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_ALLOCATION_CLOSED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsInvalidAllocationInstance\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_INVALID_ALLOCATION_INSTANCE']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_INVALID_ALLOCATION_INSTANCE</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_INVALID_ALLOCATION_INSTANCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsInvalidAllocationHandle\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_INVALID_ALLOCATION_HANDLE']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_INVALID_ALLOCATION_HANDLE</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_INVALID_ALLOCATION_HANDLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsWrongAllocationDevice\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_WRONG_ALLOCATION_DEVICE']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_WRONG_ALLOCATION_DEVICE</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_WRONG_ALLOCATION_DEVICE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsAllocationContentLost\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_ALLOCATION_CONTENT_LOST']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_ALLOCATION_CONTENT_LOST</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_ALLOCATION_CONTENT_LOST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsGpuExceptionOnDevice\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_GPU_EXCEPTION_ON_DEVICE']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_GPU_EXCEPTION_ON_DEVICE</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_GPU_EXCEPTION_ON_DEVICE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsInvalidVidpnTopology\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_INVALID_VIDPN_TOPOLOGY']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_INVALID_VIDPN_TOPOLOGY</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_INVALID_VIDPN_TOPOLOGY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsVidpnTopologyNotSupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_VIDPN_TOPOLOGY_NOT_SUPPORTED']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_VIDPN_TOPOLOGY_NOT_SUPPORTED</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_VIDPN_TOPOLOGY_NOT_SUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsVidpnTopologyCurrentlyNotSupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_VIDPN_TOPOLOGY_CURRENTLY_NOT_SUPPORTED']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_VIDPN_TOPOLOGY_CURRENTLY_NOT_SUPPORTED</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_VIDPN_TOPOLOGY_CURRENTLY_NOT_SUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsInvalidVidpn\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_INVALID_VIDPN']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_INVALID_VIDPN</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_INVALID_VIDPN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsInvalidVideoPresentSource\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_INVALID_VIDEO_PRESENT_SOURCE']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_INVALID_VIDEO_PRESENT_SOURCE</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_INVALID_VIDEO_PRESENT_SOURCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsInvalidVideoPresentTarget\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_INVALID_VIDEO_PRESENT_TARGET']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_INVALID_VIDEO_PRESENT_TARGET</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_INVALID_VIDEO_PRESENT_TARGET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsVidpnModalityNotSupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_VIDPN_MODALITY_NOT_SUPPORTED']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_VIDPN_MODALITY_NOT_SUPPORTED</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_VIDPN_MODALITY_NOT_SUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsModeNotPinned\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_MODE_NOT_PINNED']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_MODE_NOT_PINNED</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_MODE_NOT_PINNED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsInvalidVidpnSourcemodeset\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_INVALID_VIDPN_SOURCEMODESET']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_INVALID_VIDPN_SOURCEMODESET</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_INVALID_VIDPN_SOURCEMODESET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsInvalidVidpnTargetmodeset\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_INVALID_VIDPN_TARGETMODESET']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_INVALID_VIDPN_TARGETMODESET</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_INVALID_VIDPN_TARGETMODESET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsInvalidFrequency\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_INVALID_FREQUENCY']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_INVALID_FREQUENCY</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_INVALID_FREQUENCY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsInvalidActiveRegion\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_INVALID_ACTIVE_REGION']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_INVALID_ACTIVE_REGION</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_INVALID_ACTIVE_REGION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsInvalidTotalRegion\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_INVALID_TOTAL_REGION']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_INVALID_TOTAL_REGION</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_INVALID_TOTAL_REGION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsInvalidVideoPresentSourceMode\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_INVALID_VIDEO_PRESENT_SOURCE_MODE']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_INVALID_VIDEO_PRESENT_SOURCE_MODE</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_INVALID_VIDEO_PRESENT_SOURCE_MODE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsInvalidVideoPresentTargetMode\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_INVALID_VIDEO_PRESENT_TARGET_MODE']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_INVALID_VIDEO_PRESENT_TARGET_MODE</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_INVALID_VIDEO_PRESENT_TARGET_MODE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsPinnedModeMustRemainInSet\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_PINNED_MODE_MUST_REMAIN_IN_SET']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_PINNED_MODE_MUST_REMAIN_IN_SET</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_PINNED_MODE_MUST_REMAIN_IN_SET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsPathAlreadyInTopology\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_PATH_ALREADY_IN_TOPOLOGY']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_PATH_ALREADY_IN_TOPOLOGY</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_PATH_ALREADY_IN_TOPOLOGY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsModeAlreadyInModeset\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_MODE_ALREADY_IN_MODESET']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_MODE_ALREADY_IN_MODESET</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_MODE_ALREADY_IN_MODESET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsInvalidVideopresentsourceset\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_INVALID_VIDEOPRESENTSOURCESET']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_INVALID_VIDEOPRESENTSOURCESET</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_INVALID_VIDEOPRESENTSOURCESET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsInvalidVideopresenttargetset\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_INVALID_VIDEOPRESENTTARGETSET']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_INVALID_VIDEOPRESENTTARGETSET</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_INVALID_VIDEOPRESENTTARGETSET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsSourceAlreadyInSet\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_SOURCE_ALREADY_IN_SET']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_SOURCE_ALREADY_IN_SET</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_SOURCE_ALREADY_IN_SET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsTargetAlreadyInSet\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_TARGET_ALREADY_IN_SET']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_TARGET_ALREADY_IN_SET</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_TARGET_ALREADY_IN_SET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsInvalidVidpnPresentPath\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_INVALID_VIDPN_PRESENT_PATH']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_INVALID_VIDPN_PRESENT_PATH</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_INVALID_VIDPN_PRESENT_PATH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsNoRecommendedVidpnTopology\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_NO_RECOMMENDED_VIDPN_TOPOLOGY']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_NO_RECOMMENDED_VIDPN_TOPOLOGY</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_NO_RECOMMENDED_VIDPN_TOPOLOGY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsInvalidMonitorFrequencyrangeset\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGESET']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGESET</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGESET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsInvalidMonitorFrequencyrange\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGE']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGE</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsFrequencyrangeNotInSet\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_FREQUENCYRANGE_NOT_IN_SET']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_FREQUENCYRANGE_NOT_IN_SET</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_FREQUENCYRANGE_NOT_IN_SET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsNoPreferredMode\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_NO_PREFERRED_MODE']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_NO_PREFERRED_MODE</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_NO_PREFERRED_MODE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsFrequencyrangeAlreadyInSet\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_FREQUENCYRANGE_ALREADY_IN_SET']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_FREQUENCYRANGE_ALREADY_IN_SET</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_FREQUENCYRANGE_ALREADY_IN_SET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsStaleModeset\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_STALE_MODESET']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_STALE_MODESET</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_STALE_MODESET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsInvalidMonitorSourcemodeset\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_INVALID_MONITOR_SOURCEMODESET']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_INVALID_MONITOR_SOURCEMODESET</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_INVALID_MONITOR_SOURCEMODESET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsInvalidMonitorSourceMode\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_INVALID_MONITOR_SOURCE_MODE']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_INVALID_MONITOR_SOURCE_MODE</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_INVALID_MONITOR_SOURCE_MODE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsNoRecommendedFunctionalVidpn\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_NO_RECOMMENDED_FUNCTIONAL_VIDPN']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_NO_RECOMMENDED_FUNCTIONAL_VIDPN</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_NO_RECOMMENDED_FUNCTIONAL_VIDPN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsModeIdMustBeUnique\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_MODE_ID_MUST_BE_UNIQUE']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_MODE_ID_MUST_BE_UNIQUE</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_MODE_ID_MUST_BE_UNIQUE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsEmptyAdapterMonitorModeSupportIntersection\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_EMPTY_ADAPTER_MONITOR_MODE_SUPPORT_INTERSECTION']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_EMPTY_ADAPTER_MONITOR_MODE_SUPPORT_INTERSECTION</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_EMPTY_ADAPTER_MONITOR_MODE_SUPPORT_INTERSECTION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsVideoPresentTargetsLessThanSources\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_VIDEO_PRESENT_TARGETS_LESS_THAN_SOURCES']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_VIDEO_PRESENT_TARGETS_LESS_THAN_SOURCES</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_VIDEO_PRESENT_TARGETS_LESS_THAN_SOURCES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsPathNotInTopology\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_PATH_NOT_IN_TOPOLOGY']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_PATH_NOT_IN_TOPOLOGY</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_PATH_NOT_IN_TOPOLOGY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsAdapterMustHaveAtLeastOneSource\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_ADAPTER_MUST_HAVE_AT_LEAST_ONE_SOURCE']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_ADAPTER_MUST_HAVE_AT_LEAST_ONE_SOURCE</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_ADAPTER_MUST_HAVE_AT_LEAST_ONE_SOURCE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsAdapterMustHaveAtLeastOneTarget\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_ADAPTER_MUST_HAVE_AT_LEAST_ONE_TARGET']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_ADAPTER_MUST_HAVE_AT_LEAST_ONE_TARGET</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_ADAPTER_MUST_HAVE_AT_LEAST_ONE_TARGET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsInvalidMonitordescriptorset\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_INVALID_MONITORDESCRIPTORSET']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_INVALID_MONITORDESCRIPTORSET</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_INVALID_MONITORDESCRIPTORSET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsInvalidMonitordescriptor\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_INVALID_MONITORDESCRIPTOR']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_INVALID_MONITORDESCRIPTOR</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_INVALID_MONITORDESCRIPTOR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsMonitordescriptorNotInSet\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_MONITORDESCRIPTOR_NOT_IN_SET']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_MONITORDESCRIPTOR_NOT_IN_SET</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_MONITORDESCRIPTOR_NOT_IN_SET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsMonitordescriptorAlreadyInSet\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_MONITORDESCRIPTOR_ALREADY_IN_SET']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_MONITORDESCRIPTOR_ALREADY_IN_SET</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_MONITORDESCRIPTOR_ALREADY_IN_SET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsMonitordescriptorIdMustBeUnique\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_MONITORDESCRIPTOR_ID_MUST_BE_UNIQUE']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_MONITORDESCRIPTOR_ID_MUST_BE_UNIQUE</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_MONITORDESCRIPTOR_ID_MUST_BE_UNIQUE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsInvalidVidpnTargetSubsetType\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_INVALID_VIDPN_TARGET_SUBSET_TYPE']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_INVALID_VIDPN_TARGET_SUBSET_TYPE</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_INVALID_VIDPN_TARGET_SUBSET_TYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsResourcesNotRelated\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_RESOURCES_NOT_RELATED']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_RESOURCES_NOT_RELATED</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_RESOURCES_NOT_RELATED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsSourceIdMustBeUnique\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_SOURCE_ID_MUST_BE_UNIQUE']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_SOURCE_ID_MUST_BE_UNIQUE</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_SOURCE_ID_MUST_BE_UNIQUE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsTargetIdMustBeUnique\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_TARGET_ID_MUST_BE_UNIQUE']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_TARGET_ID_MUST_BE_UNIQUE</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_TARGET_ID_MUST_BE_UNIQUE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsNoAvailableVidpnTarget\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_NO_AVAILABLE_VIDPN_TARGET']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_NO_AVAILABLE_VIDPN_TARGET</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_NO_AVAILABLE_VIDPN_TARGET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsMonitorCouldNotBeAssociatedWithAdapter\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_MONITOR_COULD_NOT_BE_ASSOCIATED_WITH_ADAPTER']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_MONITOR_COULD_NOT_BE_ASSOCIATED_WITH_ADAPTER</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_MONITOR_COULD_NOT_BE_ASSOCIATED_WITH_ADAPTER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsNoVidpnmgr\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_NO_VIDPNMGR']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_NO_VIDPNMGR</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_NO_VIDPNMGR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsNoActiveVidpn\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_NO_ACTIVE_VIDPN']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_NO_ACTIVE_VIDPN</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_NO_ACTIVE_VIDPN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsStaleVidpnTopology\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_STALE_VIDPN_TOPOLOGY']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_STALE_VIDPN_TOPOLOGY</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_STALE_VIDPN_TOPOLOGY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsMonitorNotConnected\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_MONITOR_NOT_CONNECTED']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_MONITOR_NOT_CONNECTED</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_MONITOR_NOT_CONNECTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsSourceNotInTopology\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_SOURCE_NOT_IN_TOPOLOGY']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_SOURCE_NOT_IN_TOPOLOGY</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_SOURCE_NOT_IN_TOPOLOGY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsInvalidPrimarysurfaceSize\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_INVALID_PRIMARYSURFACE_SIZE']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_INVALID_PRIMARYSURFACE_SIZE</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_INVALID_PRIMARYSURFACE_SIZE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsInvalidVisibleregionSize\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_INVALID_VISIBLEREGION_SIZE']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_INVALID_VISIBLEREGION_SIZE</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_INVALID_VISIBLEREGION_SIZE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsInvalidStride\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_INVALID_STRIDE']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_INVALID_STRIDE</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_INVALID_STRIDE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsInvalidPixelformat\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_INVALID_PIXELFORMAT']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_INVALID_PIXELFORMAT</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_INVALID_PIXELFORMAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsInvalidColorbasis\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_INVALID_COLORBASIS']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_INVALID_COLORBASIS</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_INVALID_COLORBASIS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsInvalidPixelvalueaccessmode\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_INVALID_PIXELVALUEACCESSMODE']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_INVALID_PIXELVALUEACCESSMODE</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_INVALID_PIXELVALUEACCESSMODE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsTargetNotInTopology\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_TARGET_NOT_IN_TOPOLOGY']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_TARGET_NOT_IN_TOPOLOGY</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_TARGET_NOT_IN_TOPOLOGY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsNoDisplayModeManagementSupport\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_NO_DISPLAY_MODE_MANAGEMENT_SUPPORT']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_NO_DISPLAY_MODE_MANAGEMENT_SUPPORT</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_NO_DISPLAY_MODE_MANAGEMENT_SUPPORT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsVidpnSourceInUse\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_VIDPN_SOURCE_IN_USE']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_VIDPN_SOURCE_IN_USE</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_VIDPN_SOURCE_IN_USE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsCantAccessActiveVidpn\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_CANT_ACCESS_ACTIVE_VIDPN']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_CANT_ACCESS_ACTIVE_VIDPN</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_CANT_ACCESS_ACTIVE_VIDPN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsInvalidPathImportanceOrdinal\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_INVALID_PATH_IMPORTANCE_ORDINAL']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_INVALID_PATH_IMPORTANCE_ORDINAL</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_INVALID_PATH_IMPORTANCE_ORDINAL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsInvalidPathContentGeometryTransformation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_INVALID_PATH_CONTENT_GEOMETRY_TRANSFORMATION']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_INVALID_PATH_CONTENT_GEOMETRY_TRANSFORMATION</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_INVALID_PATH_CONTENT_GEOMETRY_TRANSFORMATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsPathContentGeometryTransformationNotSupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_PATH_CONTENT_GEOMETRY_TRANSFORMATION_NOT_SUPPORTED']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_PATH_CONTENT_GEOMETRY_TRANSFORMATION_NOT_SUPPORTED</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_PATH_CONTENT_GEOMETRY_TRANSFORMATION_NOT_SUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsInvalidGammaRamp\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_INVALID_GAMMA_RAMP']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_INVALID_GAMMA_RAMP</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_INVALID_GAMMA_RAMP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsGammaRampNotSupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_GAMMA_RAMP_NOT_SUPPORTED']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_GAMMA_RAMP_NOT_SUPPORTED</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_GAMMA_RAMP_NOT_SUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsMultisamplingNotSupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_MULTISAMPLING_NOT_SUPPORTED']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_MULTISAMPLING_NOT_SUPPORTED</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_MULTISAMPLING_NOT_SUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsModeNotInModeset\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_MODE_NOT_IN_MODESET']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_MODE_NOT_IN_MODESET</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_MODE_NOT_IN_MODESET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsDatasetIsEmpty\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_DATASET_IS_EMPTY']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_DATASET_IS_EMPTY</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_DATASET_IS_EMPTY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsNoMoreElementsInDataset\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_NO_MORE_ELEMENTS_IN_DATASET']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_NO_MORE_ELEMENTS_IN_DATASET</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_NO_MORE_ELEMENTS_IN_DATASET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsInvalidVidpnTopologyRecommendationReason\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_INVALID_VIDPN_TOPOLOGY_RECOMMENDATION_REASON']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_INVALID_VIDPN_TOPOLOGY_RECOMMENDATION_REASON</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_INVALID_VIDPN_TOPOLOGY_RECOMMENDATION_REASON</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsInvalidPathContentType\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_INVALID_PATH_CONTENT_TYPE']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_INVALID_PATH_CONTENT_TYPE</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_INVALID_PATH_CONTENT_TYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsInvalidCopyprotectionType\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_INVALID_COPYPROTECTION_TYPE']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_INVALID_COPYPROTECTION_TYPE</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_INVALID_COPYPROTECTION_TYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsUnassignedModesetAlreadyExists\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_UNASSIGNED_MODESET_ALREADY_EXISTS']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_UNASSIGNED_MODESET_ALREADY_EXISTS</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_UNASSIGNED_MODESET_ALREADY_EXISTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsPathContentGeometryTransformationNotPinned\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_PATH_CONTENT_GEOMETRY_TRANSFORMATION_NOT_PINNED']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_PATH_CONTENT_GEOMETRY_TRANSFORMATION_NOT_PINNED</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_PATH_CONTENT_GEOMETRY_TRANSFORMATION_NOT_PINNED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsInvalidScanlineOrdering\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_INVALID_SCANLINE_ORDERING']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_INVALID_SCANLINE_ORDERING</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_INVALID_SCANLINE_ORDERING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsTopologyChangesNotAllowed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_TOPOLOGY_CHANGES_NOT_ALLOWED']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_TOPOLOGY_CHANGES_NOT_ALLOWED</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_TOPOLOGY_CHANGES_NOT_ALLOWED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsNoAvailableImportanceOrdinals\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_NO_AVAILABLE_IMPORTANCE_ORDINALS']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_NO_AVAILABLE_IMPORTANCE_ORDINALS</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_NO_AVAILABLE_IMPORTANCE_ORDINALS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsIncompatiblePrivateFormat\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_INCOMPATIBLE_PRIVATE_FORMAT']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_INCOMPATIBLE_PRIVATE_FORMAT</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_INCOMPATIBLE_PRIVATE_FORMAT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsInvalidModePruningAlgorithm\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_INVALID_MODE_PRUNING_ALGORITHM']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_INVALID_MODE_PRUNING_ALGORITHM</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_INVALID_MODE_PRUNING_ALGORITHM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsInvalidMonitorCapabilityOrigin\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_INVALID_MONITOR_CAPABILITY_ORIGIN']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_INVALID_MONITOR_CAPABILITY_ORIGIN</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_INVALID_MONITOR_CAPABILITY_ORIGIN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsInvalidMonitorFrequencyrangeConstraint\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGE_CONSTRAINT']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGE_CONSTRAINT</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGE_CONSTRAINT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsMaxNumPathsReached\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_MAX_NUM_PATHS_REACHED']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_MAX_NUM_PATHS_REACHED</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_MAX_NUM_PATHS_REACHED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsCancelVidpnTopologyAugmentation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_CANCEL_VIDPN_TOPOLOGY_AUGMENTATION']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_CANCEL_VIDPN_TOPOLOGY_AUGMENTATION</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_CANCEL_VIDPN_TOPOLOGY_AUGMENTATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsInvalidClientType\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_INVALID_CLIENT_TYPE']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_INVALID_CLIENT_TYPE</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_INVALID_CLIENT_TYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsClientvidpnNotSet\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_CLIENTVIDPN_NOT_SET']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_CLIENTVIDPN_NOT_SET</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_CLIENTVIDPN_NOT_SET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsSpecifiedChildAlreadyConnected\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_SPECIFIED_CHILD_ALREADY_CONNECTED']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_SPECIFIED_CHILD_ALREADY_CONNECTED</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_SPECIFIED_CHILD_ALREADY_CONNECTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsChildDescriptorNotSupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_CHILD_DESCRIPTOR_NOT_SUPPORTED']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_CHILD_DESCRIPTOR_NOT_SUPPORTED</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_CHILD_DESCRIPTOR_NOT_SUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsUnknownChildStatus\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_UNKNOWN_CHILD_STATUS']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_UNKNOWN_CHILD_STATUS</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_UNKNOWN_CHILD_STATUS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsNotALinkedAdapter\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_NOT_A_LINKED_ADAPTER']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_NOT_A_LINKED_ADAPTER</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_NOT_A_LINKED_ADAPTER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsLeadlinkNotEnumerated\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_LEADLINK_NOT_ENUMERATED']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_LEADLINK_NOT_ENUMERATED</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_LEADLINK_NOT_ENUMERATED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsChainlinksNotEnumerated\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_CHAINLINKS_NOT_ENUMERATED']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_CHAINLINKS_NOT_ENUMERATED</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_CHAINLINKS_NOT_ENUMERATED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsAdapterChainNotReady\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_ADAPTER_CHAIN_NOT_READY']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_ADAPTER_CHAIN_NOT_READY</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_ADAPTER_CHAIN_NOT_READY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsChainlinksNotStarted\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_CHAINLINKS_NOT_STARTED']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_CHAINLINKS_NOT_STARTED</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_CHAINLINKS_NOT_STARTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsChainlinksNotPoweredOn\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_CHAINLINKS_NOT_POWERED_ON']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_CHAINLINKS_NOT_POWERED_ON</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_CHAINLINKS_NOT_POWERED_ON</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsInconsistentDeviceLinkState\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_INCONSISTENT_DEVICE_LINK_STATE']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_INCONSISTENT_DEVICE_LINK_STATE</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_INCONSISTENT_DEVICE_LINK_STATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsLeadlinkStartDeferred\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_LEADLINK_START_DEFERRED']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_LEADLINK_START_DEFERRED</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_LEADLINK_START_DEFERRED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsNotPostDeviceDriver\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_NOT_POST_DEVICE_DRIVER']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_NOT_POST_DEVICE_DRIVER</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_NOT_POST_DEVICE_DRIVER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsPollingTooFrequently\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_POLLING_TOO_FREQUENTLY']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_POLLING_TOO_FREQUENTLY</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_POLLING_TOO_FREQUENTLY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsStartDeferred\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_START_DEFERRED']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_START_DEFERRED</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_START_DEFERRED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsAdapterAccessNotExcluded\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_ADAPTER_ACCESS_NOT_EXCLUDED']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_ADAPTER_ACCESS_NOT_EXCLUDED</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_ADAPTER_ACCESS_NOT_EXCLUDED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsOpmNotSupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_OPM_NOT_SUPPORTED']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_OPM_NOT_SUPPORTED</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_OPM_NOT_SUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsCoppNotSupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_COPP_NOT_SUPPORTED']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_COPP_NOT_SUPPORTED</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_COPP_NOT_SUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsUabNotSupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_UAB_NOT_SUPPORTED']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_UAB_NOT_SUPPORTED</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_UAB_NOT_SUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsOpmInvalidEncryptedParameters\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_OPM_INVALID_ENCRYPTED_PARAMETERS']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_OPM_INVALID_ENCRYPTED_PARAMETERS</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_OPM_INVALID_ENCRYPTED_PARAMETERS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsOpmNoVideoOutputsExist\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_OPM_NO_VIDEO_OUTPUTS_EXIST']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_OPM_NO_VIDEO_OUTPUTS_EXIST</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_OPM_NO_VIDEO_OUTPUTS_EXIST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsOpmInternalError\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_OPM_INTERNAL_ERROR']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_OPM_INTERNAL_ERROR</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_OPM_INTERNAL_ERROR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsOpmInvalidHandle\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_OPM_INVALID_HANDLE']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_OPM_INVALID_HANDLE</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_OPM_INVALID_HANDLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsPvpInvalidCertificateLength\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_PVP_INVALID_CERTIFICATE_LENGTH']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_PVP_INVALID_CERTIFICATE_LENGTH</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_PVP_INVALID_CERTIFICATE_LENGTH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsOpmSpanningModeEnabled\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_OPM_SPANNING_MODE_ENABLED']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_OPM_SPANNING_MODE_ENABLED</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_OPM_SPANNING_MODE_ENABLED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsOpmTheaterModeEnabled\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_OPM_THEATER_MODE_ENABLED']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_OPM_THEATER_MODE_ENABLED</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_OPM_THEATER_MODE_ENABLED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsPvpHfsFailed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_PVP_HFS_FAILED']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_PVP_HFS_FAILED</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_PVP_HFS_FAILED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsOpmInvalidSrm\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_OPM_INVALID_SRM']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_OPM_INVALID_SRM</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_OPM_INVALID_SRM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsOpmOutputDoesNotSupportHdcp\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_HDCP']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_HDCP</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_HDCP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsOpmOutputDoesNotSupportAcp\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_ACP']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_ACP</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_ACP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsOpmOutputDoesNotSupportCgmsa\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_CGMSA']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_CGMSA</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_CGMSA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsOpmHdcpSrmNeverSet\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_OPM_HDCP_SRM_NEVER_SET']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_OPM_HDCP_SRM_NEVER_SET</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_OPM_HDCP_SRM_NEVER_SET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsOpmResolutionTooHigh\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_OPM_RESOLUTION_TOO_HIGH']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_OPM_RESOLUTION_TOO_HIGH</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_OPM_RESOLUTION_TOO_HIGH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsOpmAllHdcpHardwareAlreadyInUse\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_OPM_ALL_HDCP_HARDWARE_ALREADY_IN_USE']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_OPM_ALL_HDCP_HARDWARE_ALREADY_IN_USE</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_OPM_ALL_HDCP_HARDWARE_ALREADY_IN_USE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsOpmVideoOutputNoLongerExists\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_OPM_VIDEO_OUTPUT_NO_LONGER_EXISTS']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_OPM_VIDEO_OUTPUT_NO_LONGER_EXISTS</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_OPM_VIDEO_OUTPUT_NO_LONGER_EXISTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsOpmSessionTypeChangeInProgress\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_OPM_SESSION_TYPE_CHANGE_IN_PROGRESS']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_OPM_SESSION_TYPE_CHANGE_IN_PROGRESS</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_OPM_SESSION_TYPE_CHANGE_IN_PROGRESS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsOpmVideoOutputDoesNotHaveCoppSemantics\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_OPM_VIDEO_OUTPUT_DOES_NOT_HAVE_COPP_SEMANTICS']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_OPM_VIDEO_OUTPUT_DOES_NOT_HAVE_COPP_SEMANTICS</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_OPM_VIDEO_OUTPUT_DOES_NOT_HAVE_COPP_SEMANTICS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsOpmInvalidInformationRequest\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_OPM_INVALID_INFORMATION_REQUEST']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_OPM_INVALID_INFORMATION_REQUEST</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_OPM_INVALID_INFORMATION_REQUEST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsOpmDriverInternalError\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_OPM_DRIVER_INTERNAL_ERROR']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_OPM_DRIVER_INTERNAL_ERROR</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_OPM_DRIVER_INTERNAL_ERROR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsOpmVideoOutputDoesNotHaveOpmSemantics\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_OPM_VIDEO_OUTPUT_DOES_NOT_HAVE_OPM_SEMANTICS']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_OPM_VIDEO_OUTPUT_DOES_NOT_HAVE_OPM_SEMANTICS</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_OPM_VIDEO_OUTPUT_DOES_NOT_HAVE_OPM_SEMANTICS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsOpmSignalingNotSupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_OPM_SIGNALING_NOT_SUPPORTED']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_OPM_SIGNALING_NOT_SUPPORTED</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_OPM_SIGNALING_NOT_SUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsOpmInvalidConfigurationRequest\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_OPM_INVALID_CONFIGURATION_REQUEST']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_OPM_INVALID_CONFIGURATION_REQUEST</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_OPM_INVALID_CONFIGURATION_REQUEST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsI2CNotSupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_I2C_NOT_SUPPORTED']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_I2C_NOT_SUPPORTED</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_I2C_NOT_SUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsI2CDeviceDoesNotExist\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_I2C_DEVICE_DOES_NOT_EXIST']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_I2C_DEVICE_DOES_NOT_EXIST</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_I2C_DEVICE_DOES_NOT_EXIST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsI2CErrorTransmittingData\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_I2C_ERROR_TRANSMITTING_DATA']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_I2C_ERROR_TRANSMITTING_DATA</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_I2C_ERROR_TRANSMITTING_DATA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsI2CErrorReceivingData\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_I2C_ERROR_RECEIVING_DATA']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_I2C_ERROR_RECEIVING_DATA</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_I2C_ERROR_RECEIVING_DATA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsDdcciVcpNotSupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_DDCCI_VCP_NOT_SUPPORTED']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_DDCCI_VCP_NOT_SUPPORTED</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_DDCCI_VCP_NOT_SUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsDdcciInvalidData\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_DDCCI_INVALID_DATA']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_DDCCI_INVALID_DATA</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_DDCCI_INVALID_DATA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsDdcciMonitorReturnedInvalidTimingStatusByte\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_DDCCI_MONITOR_RETURNED_INVALID_TIMING_STATUS_BYTE']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_DDCCI_MONITOR_RETURNED_INVALID_TIMING_STATUS_BYTE</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_DDCCI_MONITOR_RETURNED_INVALID_TIMING_STATUS_BYTE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsMcaInvalidCapabilitiesString\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_MCA_INVALID_CAPABILITIES_STRING']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_MCA_INVALID_CAPABILITIES_STRING</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_MCA_INVALID_CAPABILITIES_STRING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsMcaInternalError\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_MCA_INTERNAL_ERROR']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_MCA_INTERNAL_ERROR</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_MCA_INTERNAL_ERROR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsDdcciInvalidMessageCommand\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_DDCCI_INVALID_MESSAGE_COMMAND']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_DDCCI_INVALID_MESSAGE_COMMAND</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_DDCCI_INVALID_MESSAGE_COMMAND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsDdcciInvalidMessageLength\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_DDCCI_INVALID_MESSAGE_LENGTH']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_DDCCI_INVALID_MESSAGE_LENGTH</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_DDCCI_INVALID_MESSAGE_LENGTH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsDdcciInvalidMessageChecksum\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_DDCCI_INVALID_MESSAGE_CHECKSUM']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_DDCCI_INVALID_MESSAGE_CHECKSUM</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_DDCCI_INVALID_MESSAGE_CHECKSUM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsInvalidPhysicalMonitorHandle\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_INVALID_PHYSICAL_MONITOR_HANDLE']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_INVALID_PHYSICAL_MONITOR_HANDLE</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_INVALID_PHYSICAL_MONITOR_HANDLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsMonitorNoLongerExists\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_MONITOR_NO_LONGER_EXISTS']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_MONITOR_NO_LONGER_EXISTS</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_MONITOR_NO_LONGER_EXISTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsDdcciCurrentCurrentValueGreaterThanMaximumValue\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_DDCCI_CURRENT_CURRENT_VALUE_GREATER_THAN_MAXIMUM_VALUE']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_DDCCI_CURRENT_CURRENT_VALUE_GREATER_THAN_MAXIMUM_VALUE</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_DDCCI_CURRENT_CURRENT_VALUE_GREATER_THAN_MAXIMUM_VALUE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsMcaInvalidVcpVersion\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_MCA_INVALID_VCP_VERSION']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_MCA_INVALID_VCP_VERSION</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_MCA_INVALID_VCP_VERSION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsMcaMonitorViolatesMccsSpecification\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_MCA_MONITOR_VIOLATES_MCCS_SPECIFICATION']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_MCA_MONITOR_VIOLATES_MCCS_SPECIFICATION</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_MCA_MONITOR_VIOLATES_MCCS_SPECIFICATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsMcaMccsVersionMismatch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_MCA_MCCS_VERSION_MISMATCH']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_MCA_MCCS_VERSION_MISMATCH</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_MCA_MCCS_VERSION_MISMATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsMcaUnsupportedMccsVersion\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_MCA_UNSUPPORTED_MCCS_VERSION']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_MCA_UNSUPPORTED_MCCS_VERSION</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_MCA_UNSUPPORTED_MCCS_VERSION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsMcaInvalidTechnologyTypeReturned\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_MCA_INVALID_TECHNOLOGY_TYPE_RETURNED']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_MCA_INVALID_TECHNOLOGY_TYPE_RETURNED</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_MCA_INVALID_TECHNOLOGY_TYPE_RETURNED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsMcaUnsupportedColorTemperature\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_MCA_UNSUPPORTED_COLOR_TEMPERATURE']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_MCA_UNSUPPORTED_COLOR_TEMPERATURE</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_MCA_UNSUPPORTED_COLOR_TEMPERATURE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsOnlyConsoleSessionSupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_ONLY_CONSOLE_SESSION_SUPPORTED']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_ONLY_CONSOLE_SESSION_SUPPORTED</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_ONLY_CONSOLE_SESSION_SUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsNoDisplayDeviceCorrespondsToName\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_NO_DISPLAY_DEVICE_CORRESPONDS_TO_NAME']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_NO_DISPLAY_DEVICE_CORRESPONDS_TO_NAME</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_NO_DISPLAY_DEVICE_CORRESPONDS_TO_NAME</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsDisplayDeviceNotAttachedToDesktop\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_DISPLAY_DEVICE_NOT_ATTACHED_TO_DESKTOP']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_DISPLAY_DEVICE_NOT_ATTACHED_TO_DESKTOP</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_DISPLAY_DEVICE_NOT_ATTACHED_TO_DESKTOP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsMirroringDevicesNotSupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_MIRRORING_DEVICES_NOT_SUPPORTED']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_MIRRORING_DEVICES_NOT_SUPPORTED</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_MIRRORING_DEVICES_NOT_SUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsInvalidPointer\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_INVALID_POINTER']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_INVALID_POINTER</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_INVALID_POINTER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsNoMonitorsCorrespondToDisplayDevice\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_NO_MONITORS_CORRESPOND_TO_DISPLAY_DEVICE']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_NO_MONITORS_CORRESPOND_TO_DISPLAY_DEVICE</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_NO_MONITORS_CORRESPOND_TO_DISPLAY_DEVICE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsParameterArrayTooSmall\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_PARAMETER_ARRAY_TOO_SMALL']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_PARAMETER_ARRAY_TOO_SMALL</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_PARAMETER_ARRAY_TOO_SMALL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsInternalError\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_INTERNAL_ERROR']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_INTERNAL_ERROR</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_INTERNAL_ERROR</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.GraphicsSessionTypeChangeInProgress\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_GRAPHICS_SESSION_TYPE_CHANGE_IN_PROGRESS']/*\"/>\t\n            <unmanaged>ERROR_GRAPHICS_SESSION_TYPE_CHANGE_IN_PROGRESS</unmanaged>\t\n            <unmanaged-short>ERROR_GRAPHICS_SESSION_TYPE_CHANGE_IN_PROGRESS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NdisInterfaceClosing\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NDIS_INTERFACE_CLOSING']/*\"/>\t\n            <unmanaged>ERROR_NDIS_INTERFACE_CLOSING</unmanaged>\t\n            <unmanaged-short>ERROR_NDIS_INTERFACE_CLOSING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NdisBadVersion\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NDIS_BAD_VERSION']/*\"/>\t\n            <unmanaged>ERROR_NDIS_BAD_VERSION</unmanaged>\t\n            <unmanaged-short>ERROR_NDIS_BAD_VERSION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NdisBadCharacteristics\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NDIS_BAD_CHARACTERISTICS']/*\"/>\t\n            <unmanaged>ERROR_NDIS_BAD_CHARACTERISTICS</unmanaged>\t\n            <unmanaged-short>ERROR_NDIS_BAD_CHARACTERISTICS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NdisAdapterNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NDIS_ADAPTER_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_NDIS_ADAPTER_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_NDIS_ADAPTER_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NdisOpenFailed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NDIS_OPEN_FAILED']/*\"/>\t\n            <unmanaged>ERROR_NDIS_OPEN_FAILED</unmanaged>\t\n            <unmanaged-short>ERROR_NDIS_OPEN_FAILED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NdisDeviceFailed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NDIS_DEVICE_FAILED']/*\"/>\t\n            <unmanaged>ERROR_NDIS_DEVICE_FAILED</unmanaged>\t\n            <unmanaged-short>ERROR_NDIS_DEVICE_FAILED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NdisMulticastFull\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NDIS_MULTICAST_FULL']/*\"/>\t\n            <unmanaged>ERROR_NDIS_MULTICAST_FULL</unmanaged>\t\n            <unmanaged-short>ERROR_NDIS_MULTICAST_FULL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NdisMulticastExists\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NDIS_MULTICAST_EXISTS']/*\"/>\t\n            <unmanaged>ERROR_NDIS_MULTICAST_EXISTS</unmanaged>\t\n            <unmanaged-short>ERROR_NDIS_MULTICAST_EXISTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NdisMulticastNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NDIS_MULTICAST_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_NDIS_MULTICAST_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_NDIS_MULTICAST_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NdisRequestAborted\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NDIS_REQUEST_ABORTED']/*\"/>\t\n            <unmanaged>ERROR_NDIS_REQUEST_ABORTED</unmanaged>\t\n            <unmanaged-short>ERROR_NDIS_REQUEST_ABORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NdisResetInProgress\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NDIS_RESET_IN_PROGRESS']/*\"/>\t\n            <unmanaged>ERROR_NDIS_RESET_IN_PROGRESS</unmanaged>\t\n            <unmanaged-short>ERROR_NDIS_RESET_IN_PROGRESS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NdisNotSupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NDIS_NOT_SUPPORTED']/*\"/>\t\n            <unmanaged>ERROR_NDIS_NOT_SUPPORTED</unmanaged>\t\n            <unmanaged-short>ERROR_NDIS_NOT_SUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NdisInvalidPacket\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NDIS_INVALID_PACKET']/*\"/>\t\n            <unmanaged>ERROR_NDIS_INVALID_PACKET</unmanaged>\t\n            <unmanaged-short>ERROR_NDIS_INVALID_PACKET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NdisAdapterNotReady\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NDIS_ADAPTER_NOT_READY']/*\"/>\t\n            <unmanaged>ERROR_NDIS_ADAPTER_NOT_READY</unmanaged>\t\n            <unmanaged-short>ERROR_NDIS_ADAPTER_NOT_READY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NdisInvalidLength\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NDIS_INVALID_LENGTH']/*\"/>\t\n            <unmanaged>ERROR_NDIS_INVALID_LENGTH</unmanaged>\t\n            <unmanaged-short>ERROR_NDIS_INVALID_LENGTH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NdisInvalidData\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NDIS_INVALID_DATA']/*\"/>\t\n            <unmanaged>ERROR_NDIS_INVALID_DATA</unmanaged>\t\n            <unmanaged-short>ERROR_NDIS_INVALID_DATA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NdisBufferTooShort\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NDIS_BUFFER_TOO_SHORT']/*\"/>\t\n            <unmanaged>ERROR_NDIS_BUFFER_TOO_SHORT</unmanaged>\t\n            <unmanaged-short>ERROR_NDIS_BUFFER_TOO_SHORT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NdisInvalidOid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NDIS_INVALID_OID']/*\"/>\t\n            <unmanaged>ERROR_NDIS_INVALID_OID</unmanaged>\t\n            <unmanaged-short>ERROR_NDIS_INVALID_OID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NdisAdapterRemoved\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NDIS_ADAPTER_REMOVED']/*\"/>\t\n            <unmanaged>ERROR_NDIS_ADAPTER_REMOVED</unmanaged>\t\n            <unmanaged-short>ERROR_NDIS_ADAPTER_REMOVED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NdisUnsupportedMedia\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NDIS_UNSUPPORTED_MEDIA']/*\"/>\t\n            <unmanaged>ERROR_NDIS_UNSUPPORTED_MEDIA</unmanaged>\t\n            <unmanaged-short>ERROR_NDIS_UNSUPPORTED_MEDIA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NdisGroupAddressInUse\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NDIS_GROUP_ADDRESS_IN_USE']/*\"/>\t\n            <unmanaged>ERROR_NDIS_GROUP_ADDRESS_IN_USE</unmanaged>\t\n            <unmanaged-short>ERROR_NDIS_GROUP_ADDRESS_IN_USE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NdisFileNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NDIS_FILE_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_NDIS_FILE_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_NDIS_FILE_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NdisErrorReadingFile\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NDIS_ERROR_READING_FILE']/*\"/>\t\n            <unmanaged>ERROR_NDIS_ERROR_READING_FILE</unmanaged>\t\n            <unmanaged-short>ERROR_NDIS_ERROR_READING_FILE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NdisAlreadyMapped\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NDIS_ALREADY_MAPPED']/*\"/>\t\n            <unmanaged>ERROR_NDIS_ALREADY_MAPPED</unmanaged>\t\n            <unmanaged-short>ERROR_NDIS_ALREADY_MAPPED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NdisResourceConflict\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NDIS_RESOURCE_CONFLICT']/*\"/>\t\n            <unmanaged>ERROR_NDIS_RESOURCE_CONFLICT</unmanaged>\t\n            <unmanaged-short>ERROR_NDIS_RESOURCE_CONFLICT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NdisMediaDisconnected\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NDIS_MEDIA_DISCONNECTED']/*\"/>\t\n            <unmanaged>ERROR_NDIS_MEDIA_DISCONNECTED</unmanaged>\t\n            <unmanaged-short>ERROR_NDIS_MEDIA_DISCONNECTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NdisInvalidAddress\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NDIS_INVALID_ADDRESS']/*\"/>\t\n            <unmanaged>ERROR_NDIS_INVALID_ADDRESS</unmanaged>\t\n            <unmanaged-short>ERROR_NDIS_INVALID_ADDRESS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NdisInvalidDeviceRequest\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NDIS_INVALID_DEVICE_REQUEST']/*\"/>\t\n            <unmanaged>ERROR_NDIS_INVALID_DEVICE_REQUEST</unmanaged>\t\n            <unmanaged-short>ERROR_NDIS_INVALID_DEVICE_REQUEST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NdisPaused\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NDIS_PAUSED']/*\"/>\t\n            <unmanaged>ERROR_NDIS_PAUSED</unmanaged>\t\n            <unmanaged-short>ERROR_NDIS_PAUSED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NdisInterfaceNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NDIS_INTERFACE_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_NDIS_INTERFACE_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_NDIS_INTERFACE_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NdisUnsupportedRevision\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NDIS_UNSUPPORTED_REVISION']/*\"/>\t\n            <unmanaged>ERROR_NDIS_UNSUPPORTED_REVISION</unmanaged>\t\n            <unmanaged-short>ERROR_NDIS_UNSUPPORTED_REVISION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NdisInvalidPort\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NDIS_INVALID_PORT']/*\"/>\t\n            <unmanaged>ERROR_NDIS_INVALID_PORT</unmanaged>\t\n            <unmanaged-short>ERROR_NDIS_INVALID_PORT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NdisInvalidPortState\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NDIS_INVALID_PORT_STATE']/*\"/>\t\n            <unmanaged>ERROR_NDIS_INVALID_PORT_STATE</unmanaged>\t\n            <unmanaged-short>ERROR_NDIS_INVALID_PORT_STATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NdisLowPowerState\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NDIS_LOW_POWER_STATE']/*\"/>\t\n            <unmanaged>ERROR_NDIS_LOW_POWER_STATE</unmanaged>\t\n            <unmanaged-short>ERROR_NDIS_LOW_POWER_STATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NdisDot11AutoConfigEnabled\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NDIS_DOT11_AUTO_CONFIG_ENABLED']/*\"/>\t\n            <unmanaged>ERROR_NDIS_DOT11_AUTO_CONFIG_ENABLED</unmanaged>\t\n            <unmanaged-short>ERROR_NDIS_DOT11_AUTO_CONFIG_ENABLED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NdisDot11MediaInUse\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NDIS_DOT11_MEDIA_IN_USE']/*\"/>\t\n            <unmanaged>ERROR_NDIS_DOT11_MEDIA_IN_USE</unmanaged>\t\n            <unmanaged-short>ERROR_NDIS_DOT11_MEDIA_IN_USE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NdisDot11PowerStateInvalid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NDIS_DOT11_POWER_STATE_INVALID']/*\"/>\t\n            <unmanaged>ERROR_NDIS_DOT11_POWER_STATE_INVALID</unmanaged>\t\n            <unmanaged-short>ERROR_NDIS_DOT11_POWER_STATE_INVALID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NdisPmWolPatternListFull\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NDIS_PM_WOL_PATTERN_LIST_FULL']/*\"/>\t\n            <unmanaged>ERROR_NDIS_PM_WOL_PATTERN_LIST_FULL</unmanaged>\t\n            <unmanaged-short>ERROR_NDIS_PM_WOL_PATTERN_LIST_FULL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NdisPmProtocolOffloadListFull\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NDIS_PM_PROTOCOL_OFFLOAD_LIST_FULL']/*\"/>\t\n            <unmanaged>ERROR_NDIS_PM_PROTOCOL_OFFLOAD_LIST_FULL</unmanaged>\t\n            <unmanaged-short>ERROR_NDIS_PM_PROTOCOL_OFFLOAD_LIST_FULL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NdisIndicationRequired\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NDIS_INDICATION_REQUIRED']/*\"/>\t\n            <unmanaged>ERROR_NDIS_INDICATION_REQUIRED</unmanaged>\t\n            <unmanaged-short>ERROR_NDIS_INDICATION_REQUIRED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NdisOffloadPolicy\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NDIS_OFFLOAD_POLICY']/*\"/>\t\n            <unmanaged>ERROR_NDIS_OFFLOAD_POLICY</unmanaged>\t\n            <unmanaged-short>ERROR_NDIS_OFFLOAD_POLICY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NdisOffloadConnectionRejected\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NDIS_OFFLOAD_CONNECTION_REJECTED']/*\"/>\t\n            <unmanaged>ERROR_NDIS_OFFLOAD_CONNECTION_REJECTED</unmanaged>\t\n            <unmanaged-short>ERROR_NDIS_OFFLOAD_CONNECTION_REJECTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.NdisOffloadPathRejected\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_NDIS_OFFLOAD_PATH_REJECTED']/*\"/>\t\n            <unmanaged>ERROR_NDIS_OFFLOAD_PATH_REJECTED</unmanaged>\t\n            <unmanaged-short>ERROR_NDIS_OFFLOAD_PATH_REJECTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.HvInvalidHypercallCode\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_HV_INVALID_HYPERCALL_CODE']/*\"/>\t\n            <unmanaged>ERROR_HV_INVALID_HYPERCALL_CODE</unmanaged>\t\n            <unmanaged-short>ERROR_HV_INVALID_HYPERCALL_CODE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.HvInvalidHypercallInput\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_HV_INVALID_HYPERCALL_INPUT']/*\"/>\t\n            <unmanaged>ERROR_HV_INVALID_HYPERCALL_INPUT</unmanaged>\t\n            <unmanaged-short>ERROR_HV_INVALID_HYPERCALL_INPUT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.HvInvalidAlignment\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_HV_INVALID_ALIGNMENT']/*\"/>\t\n            <unmanaged>ERROR_HV_INVALID_ALIGNMENT</unmanaged>\t\n            <unmanaged-short>ERROR_HV_INVALID_ALIGNMENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.HvInvalidParameter\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_HV_INVALID_PARAMETER']/*\"/>\t\n            <unmanaged>ERROR_HV_INVALID_PARAMETER</unmanaged>\t\n            <unmanaged-short>ERROR_HV_INVALID_PARAMETER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.HvAccessDenied\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_HV_ACCESS_DENIED']/*\"/>\t\n            <unmanaged>ERROR_HV_ACCESS_DENIED</unmanaged>\t\n            <unmanaged-short>ERROR_HV_ACCESS_DENIED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.HvInvalidPartitionState\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_HV_INVALID_PARTITION_STATE']/*\"/>\t\n            <unmanaged>ERROR_HV_INVALID_PARTITION_STATE</unmanaged>\t\n            <unmanaged-short>ERROR_HV_INVALID_PARTITION_STATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.HvOperationDenied\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_HV_OPERATION_DENIED']/*\"/>\t\n            <unmanaged>ERROR_HV_OPERATION_DENIED</unmanaged>\t\n            <unmanaged-short>ERROR_HV_OPERATION_DENIED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.HvUnknownProperty\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_HV_UNKNOWN_PROPERTY']/*\"/>\t\n            <unmanaged>ERROR_HV_UNKNOWN_PROPERTY</unmanaged>\t\n            <unmanaged-short>ERROR_HV_UNKNOWN_PROPERTY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.HvPropertyValueOutOfRange\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_HV_PROPERTY_VALUE_OUT_OF_RANGE']/*\"/>\t\n            <unmanaged>ERROR_HV_PROPERTY_VALUE_OUT_OF_RANGE</unmanaged>\t\n            <unmanaged-short>ERROR_HV_PROPERTY_VALUE_OUT_OF_RANGE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.HvInsufficientMemory\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_HV_INSUFFICIENT_MEMORY']/*\"/>\t\n            <unmanaged>ERROR_HV_INSUFFICIENT_MEMORY</unmanaged>\t\n            <unmanaged-short>ERROR_HV_INSUFFICIENT_MEMORY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.HvPartitionTooDeep\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_HV_PARTITION_TOO_DEEP']/*\"/>\t\n            <unmanaged>ERROR_HV_PARTITION_TOO_DEEP</unmanaged>\t\n            <unmanaged-short>ERROR_HV_PARTITION_TOO_DEEP</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.HvInvalidPartitionId\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_HV_INVALID_PARTITION_ID']/*\"/>\t\n            <unmanaged>ERROR_HV_INVALID_PARTITION_ID</unmanaged>\t\n            <unmanaged-short>ERROR_HV_INVALID_PARTITION_ID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.HvInvalidVpIndex\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_HV_INVALID_VP_INDEX']/*\"/>\t\n            <unmanaged>ERROR_HV_INVALID_VP_INDEX</unmanaged>\t\n            <unmanaged-short>ERROR_HV_INVALID_VP_INDEX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.HvInvalidPortId\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_HV_INVALID_PORT_ID']/*\"/>\t\n            <unmanaged>ERROR_HV_INVALID_PORT_ID</unmanaged>\t\n            <unmanaged-short>ERROR_HV_INVALID_PORT_ID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.HvInvalidConnectionId\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_HV_INVALID_CONNECTION_ID']/*\"/>\t\n            <unmanaged>ERROR_HV_INVALID_CONNECTION_ID</unmanaged>\t\n            <unmanaged-short>ERROR_HV_INVALID_CONNECTION_ID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.HvInsufficientBuffers\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_HV_INSUFFICIENT_BUFFERS']/*\"/>\t\n            <unmanaged>ERROR_HV_INSUFFICIENT_BUFFERS</unmanaged>\t\n            <unmanaged-short>ERROR_HV_INSUFFICIENT_BUFFERS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.HvNotAcknowledged\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_HV_NOT_ACKNOWLEDGED']/*\"/>\t\n            <unmanaged>ERROR_HV_NOT_ACKNOWLEDGED</unmanaged>\t\n            <unmanaged-short>ERROR_HV_NOT_ACKNOWLEDGED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.HvAcknowledged\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_HV_ACKNOWLEDGED']/*\"/>\t\n            <unmanaged>ERROR_HV_ACKNOWLEDGED</unmanaged>\t\n            <unmanaged-short>ERROR_HV_ACKNOWLEDGED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.HvInvalidSaveRestoreState\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_HV_INVALID_SAVE_RESTORE_STATE']/*\"/>\t\n            <unmanaged>ERROR_HV_INVALID_SAVE_RESTORE_STATE</unmanaged>\t\n            <unmanaged-short>ERROR_HV_INVALID_SAVE_RESTORE_STATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.HvInvalidSynicState\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_HV_INVALID_SYNIC_STATE']/*\"/>\t\n            <unmanaged>ERROR_HV_INVALID_SYNIC_STATE</unmanaged>\t\n            <unmanaged-short>ERROR_HV_INVALID_SYNIC_STATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.HvObjectInUse\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_HV_OBJECT_IN_USE']/*\"/>\t\n            <unmanaged>ERROR_HV_OBJECT_IN_USE</unmanaged>\t\n            <unmanaged-short>ERROR_HV_OBJECT_IN_USE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.HvInvalidProximityDomainInfo\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_HV_INVALID_PROXIMITY_DOMAIN_INFO']/*\"/>\t\n            <unmanaged>ERROR_HV_INVALID_PROXIMITY_DOMAIN_INFO</unmanaged>\t\n            <unmanaged-short>ERROR_HV_INVALID_PROXIMITY_DOMAIN_INFO</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.HvNoData\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_HV_NO_DATA']/*\"/>\t\n            <unmanaged>ERROR_HV_NO_DATA</unmanaged>\t\n            <unmanaged-short>ERROR_HV_NO_DATA</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.HvInactive\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_HV_INACTIVE']/*\"/>\t\n            <unmanaged>ERROR_HV_INACTIVE</unmanaged>\t\n            <unmanaged-short>ERROR_HV_INACTIVE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.HvNoResources\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_HV_NO_RESOURCES']/*\"/>\t\n            <unmanaged>ERROR_HV_NO_RESOURCES</unmanaged>\t\n            <unmanaged-short>ERROR_HV_NO_RESOURCES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.HvFeatureUnavailable\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_HV_FEATURE_UNAVAILABLE']/*\"/>\t\n            <unmanaged>ERROR_HV_FEATURE_UNAVAILABLE</unmanaged>\t\n            <unmanaged-short>ERROR_HV_FEATURE_UNAVAILABLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.HvNotPresent\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_HV_NOT_PRESENT']/*\"/>\t\n            <unmanaged>ERROR_HV_NOT_PRESENT</unmanaged>\t\n            <unmanaged-short>ERROR_HV_NOT_PRESENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VidDuplicateHandler\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VID_DUPLICATE_HANDLER']/*\"/>\t\n            <unmanaged>ERROR_VID_DUPLICATE_HANDLER</unmanaged>\t\n            <unmanaged-short>ERROR_VID_DUPLICATE_HANDLER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VidTooManyHandlers\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VID_TOO_MANY_HANDLERS']/*\"/>\t\n            <unmanaged>ERROR_VID_TOO_MANY_HANDLERS</unmanaged>\t\n            <unmanaged-short>ERROR_VID_TOO_MANY_HANDLERS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VidQueueFull\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VID_QUEUE_FULL']/*\"/>\t\n            <unmanaged>ERROR_VID_QUEUE_FULL</unmanaged>\t\n            <unmanaged-short>ERROR_VID_QUEUE_FULL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VidHandlerNotPresent\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VID_HANDLER_NOT_PRESENT']/*\"/>\t\n            <unmanaged>ERROR_VID_HANDLER_NOT_PRESENT</unmanaged>\t\n            <unmanaged-short>ERROR_VID_HANDLER_NOT_PRESENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VidInvalidObjectName\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VID_INVALID_OBJECT_NAME']/*\"/>\t\n            <unmanaged>ERROR_VID_INVALID_OBJECT_NAME</unmanaged>\t\n            <unmanaged-short>ERROR_VID_INVALID_OBJECT_NAME</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VidPartitionNameTooLong\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VID_PARTITION_NAME_TOO_LONG']/*\"/>\t\n            <unmanaged>ERROR_VID_PARTITION_NAME_TOO_LONG</unmanaged>\t\n            <unmanaged-short>ERROR_VID_PARTITION_NAME_TOO_LONG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VidMessageQueueNameTooLong\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VID_MESSAGE_QUEUE_NAME_TOO_LONG']/*\"/>\t\n            <unmanaged>ERROR_VID_MESSAGE_QUEUE_NAME_TOO_LONG</unmanaged>\t\n            <unmanaged-short>ERROR_VID_MESSAGE_QUEUE_NAME_TOO_LONG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VidPartitionAlreadyExists\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VID_PARTITION_ALREADY_EXISTS']/*\"/>\t\n            <unmanaged>ERROR_VID_PARTITION_ALREADY_EXISTS</unmanaged>\t\n            <unmanaged-short>ERROR_VID_PARTITION_ALREADY_EXISTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VidPartitionDoesNotExist\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VID_PARTITION_DOES_NOT_EXIST']/*\"/>\t\n            <unmanaged>ERROR_VID_PARTITION_DOES_NOT_EXIST</unmanaged>\t\n            <unmanaged-short>ERROR_VID_PARTITION_DOES_NOT_EXIST</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VidPartitionNameNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VID_PARTITION_NAME_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_VID_PARTITION_NAME_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_VID_PARTITION_NAME_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VidMessageQueueAlreadyExists\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VID_MESSAGE_QUEUE_ALREADY_EXISTS']/*\"/>\t\n            <unmanaged>ERROR_VID_MESSAGE_QUEUE_ALREADY_EXISTS</unmanaged>\t\n            <unmanaged-short>ERROR_VID_MESSAGE_QUEUE_ALREADY_EXISTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VidExceededMbpEntryMapLimit\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VID_EXCEEDED_MBP_ENTRY_MAP_LIMIT']/*\"/>\t\n            <unmanaged>ERROR_VID_EXCEEDED_MBP_ENTRY_MAP_LIMIT</unmanaged>\t\n            <unmanaged-short>ERROR_VID_EXCEEDED_MBP_ENTRY_MAP_LIMIT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VidMbStillReferenced\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VID_MB_STILL_REFERENCED']/*\"/>\t\n            <unmanaged>ERROR_VID_MB_STILL_REFERENCED</unmanaged>\t\n            <unmanaged-short>ERROR_VID_MB_STILL_REFERENCED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VidChildGpaPageSetCorrupted\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VID_CHILD_GPA_PAGE_SET_CORRUPTED']/*\"/>\t\n            <unmanaged>ERROR_VID_CHILD_GPA_PAGE_SET_CORRUPTED</unmanaged>\t\n            <unmanaged-short>ERROR_VID_CHILD_GPA_PAGE_SET_CORRUPTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VidInvalidNumaSettings\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VID_INVALID_NUMA_SETTINGS']/*\"/>\t\n            <unmanaged>ERROR_VID_INVALID_NUMA_SETTINGS</unmanaged>\t\n            <unmanaged-short>ERROR_VID_INVALID_NUMA_SETTINGS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VidInvalidNumaNodeIndex\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VID_INVALID_NUMA_NODE_INDEX']/*\"/>\t\n            <unmanaged>ERROR_VID_INVALID_NUMA_NODE_INDEX</unmanaged>\t\n            <unmanaged-short>ERROR_VID_INVALID_NUMA_NODE_INDEX</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VidNotificationQueueAlreadyAssociated\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VID_NOTIFICATION_QUEUE_ALREADY_ASSOCIATED']/*\"/>\t\n            <unmanaged>ERROR_VID_NOTIFICATION_QUEUE_ALREADY_ASSOCIATED</unmanaged>\t\n            <unmanaged-short>ERROR_VID_NOTIFICATION_QUEUE_ALREADY_ASSOCIATED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VidInvalidMemoryBlockHandle\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VID_INVALID_MEMORY_BLOCK_HANDLE']/*\"/>\t\n            <unmanaged>ERROR_VID_INVALID_MEMORY_BLOCK_HANDLE</unmanaged>\t\n            <unmanaged-short>ERROR_VID_INVALID_MEMORY_BLOCK_HANDLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VidPageRangeOverflow\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VID_PAGE_RANGE_OVERFLOW']/*\"/>\t\n            <unmanaged>ERROR_VID_PAGE_RANGE_OVERFLOW</unmanaged>\t\n            <unmanaged-short>ERROR_VID_PAGE_RANGE_OVERFLOW</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VidInvalidMessageQueueHandle\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VID_INVALID_MESSAGE_QUEUE_HANDLE']/*\"/>\t\n            <unmanaged>ERROR_VID_INVALID_MESSAGE_QUEUE_HANDLE</unmanaged>\t\n            <unmanaged-short>ERROR_VID_INVALID_MESSAGE_QUEUE_HANDLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VidInvalidGpaRangeHandle\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VID_INVALID_GPA_RANGE_HANDLE']/*\"/>\t\n            <unmanaged>ERROR_VID_INVALID_GPA_RANGE_HANDLE</unmanaged>\t\n            <unmanaged-short>ERROR_VID_INVALID_GPA_RANGE_HANDLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VidNoMemoryBlockNotificationQueue\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VID_NO_MEMORY_BLOCK_NOTIFICATION_QUEUE']/*\"/>\t\n            <unmanaged>ERROR_VID_NO_MEMORY_BLOCK_NOTIFICATION_QUEUE</unmanaged>\t\n            <unmanaged-short>ERROR_VID_NO_MEMORY_BLOCK_NOTIFICATION_QUEUE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VidMemoryBlockLockCountExceeded\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VID_MEMORY_BLOCK_LOCK_COUNT_EXCEEDED']/*\"/>\t\n            <unmanaged>ERROR_VID_MEMORY_BLOCK_LOCK_COUNT_EXCEEDED</unmanaged>\t\n            <unmanaged-short>ERROR_VID_MEMORY_BLOCK_LOCK_COUNT_EXCEEDED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VidInvalidPpmHandle\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VID_INVALID_PPM_HANDLE']/*\"/>\t\n            <unmanaged>ERROR_VID_INVALID_PPM_HANDLE</unmanaged>\t\n            <unmanaged-short>ERROR_VID_INVALID_PPM_HANDLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VidMbpsAreLocked\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VID_MBPS_ARE_LOCKED']/*\"/>\t\n            <unmanaged>ERROR_VID_MBPS_ARE_LOCKED</unmanaged>\t\n            <unmanaged-short>ERROR_VID_MBPS_ARE_LOCKED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VidMessageQueueClosed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VID_MESSAGE_QUEUE_CLOSED']/*\"/>\t\n            <unmanaged>ERROR_VID_MESSAGE_QUEUE_CLOSED</unmanaged>\t\n            <unmanaged-short>ERROR_VID_MESSAGE_QUEUE_CLOSED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VidVirtualProcessorLimitExceeded\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VID_VIRTUAL_PROCESSOR_LIMIT_EXCEEDED']/*\"/>\t\n            <unmanaged>ERROR_VID_VIRTUAL_PROCESSOR_LIMIT_EXCEEDED</unmanaged>\t\n            <unmanaged-short>ERROR_VID_VIRTUAL_PROCESSOR_LIMIT_EXCEEDED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VidStopPending\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VID_STOP_PENDING']/*\"/>\t\n            <unmanaged>ERROR_VID_STOP_PENDING</unmanaged>\t\n            <unmanaged-short>ERROR_VID_STOP_PENDING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VidInvalidProcessorState\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VID_INVALID_PROCESSOR_STATE']/*\"/>\t\n            <unmanaged>ERROR_VID_INVALID_PROCESSOR_STATE</unmanaged>\t\n            <unmanaged-short>ERROR_VID_INVALID_PROCESSOR_STATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VidExceededKmContextCountLimit\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VID_EXCEEDED_KM_CONTEXT_COUNT_LIMIT']/*\"/>\t\n            <unmanaged>ERROR_VID_EXCEEDED_KM_CONTEXT_COUNT_LIMIT</unmanaged>\t\n            <unmanaged-short>ERROR_VID_EXCEEDED_KM_CONTEXT_COUNT_LIMIT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VidKmInterfaceAlreadyInitialized\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VID_KM_INTERFACE_ALREADY_INITIALIZED']/*\"/>\t\n            <unmanaged>ERROR_VID_KM_INTERFACE_ALREADY_INITIALIZED</unmanaged>\t\n            <unmanaged-short>ERROR_VID_KM_INTERFACE_ALREADY_INITIALIZED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VidMbPropertyAlreadySetReset\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VID_MB_PROPERTY_ALREADY_SET_RESET']/*\"/>\t\n            <unmanaged>ERROR_VID_MB_PROPERTY_ALREADY_SET_RESET</unmanaged>\t\n            <unmanaged-short>ERROR_VID_MB_PROPERTY_ALREADY_SET_RESET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VidMmioRangeDestroyed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VID_MMIO_RANGE_DESTROYED']/*\"/>\t\n            <unmanaged>ERROR_VID_MMIO_RANGE_DESTROYED</unmanaged>\t\n            <unmanaged-short>ERROR_VID_MMIO_RANGE_DESTROYED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VidInvalidChildGpaPageSet\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VID_INVALID_CHILD_GPA_PAGE_SET']/*\"/>\t\n            <unmanaged>ERROR_VID_INVALID_CHILD_GPA_PAGE_SET</unmanaged>\t\n            <unmanaged-short>ERROR_VID_INVALID_CHILD_GPA_PAGE_SET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VidReservePageSetIsBeingUsed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VID_RESERVE_PAGE_SET_IS_BEING_USED']/*\"/>\t\n            <unmanaged>ERROR_VID_RESERVE_PAGE_SET_IS_BEING_USED</unmanaged>\t\n            <unmanaged-short>ERROR_VID_RESERVE_PAGE_SET_IS_BEING_USED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VidReservePageSetTooSmall\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VID_RESERVE_PAGE_SET_TOO_SMALL']/*\"/>\t\n            <unmanaged>ERROR_VID_RESERVE_PAGE_SET_TOO_SMALL</unmanaged>\t\n            <unmanaged-short>ERROR_VID_RESERVE_PAGE_SET_TOO_SMALL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VidMbpAlreadyLockedUsingReservedPage\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VID_MBP_ALREADY_LOCKED_USING_RESERVED_PAGE']/*\"/>\t\n            <unmanaged>ERROR_VID_MBP_ALREADY_LOCKED_USING_RESERVED_PAGE</unmanaged>\t\n            <unmanaged-short>ERROR_VID_MBP_ALREADY_LOCKED_USING_RESERVED_PAGE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VidMbpCountExceededLimit\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VID_MBP_COUNT_EXCEEDED_LIMIT']/*\"/>\t\n            <unmanaged>ERROR_VID_MBP_COUNT_EXCEEDED_LIMIT</unmanaged>\t\n            <unmanaged-short>ERROR_VID_MBP_COUNT_EXCEEDED_LIMIT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VidSavedStateCorrupt\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VID_SAVED_STATE_CORRUPT']/*\"/>\t\n            <unmanaged>ERROR_VID_SAVED_STATE_CORRUPT</unmanaged>\t\n            <unmanaged-short>ERROR_VID_SAVED_STATE_CORRUPT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VidSavedStateUnrecognizedItem\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VID_SAVED_STATE_UNRECOGNIZED_ITEM']/*\"/>\t\n            <unmanaged>ERROR_VID_SAVED_STATE_UNRECOGNIZED_ITEM</unmanaged>\t\n            <unmanaged-short>ERROR_VID_SAVED_STATE_UNRECOGNIZED_ITEM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VidSavedStateIncompatible\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VID_SAVED_STATE_INCOMPATIBLE']/*\"/>\t\n            <unmanaged>ERROR_VID_SAVED_STATE_INCOMPATIBLE</unmanaged>\t\n            <unmanaged-short>ERROR_VID_SAVED_STATE_INCOMPATIBLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VidRemoteNodeParentGpaPagesUsed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VID_REMOTE_NODE_PARENT_GPA_PAGES_USED']/*\"/>\t\n            <unmanaged>ERROR_VID_REMOTE_NODE_PARENT_GPA_PAGES_USED</unmanaged>\t\n            <unmanaged-short>ERROR_VID_REMOTE_NODE_PARENT_GPA_PAGES_USED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrIncompleteRegeneration\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_INCOMPLETE_REGENERATION']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_INCOMPLETE_REGENERATION</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_INCOMPLETE_REGENERATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrIncompleteDiskMigration\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_INCOMPLETE_DISK_MIGRATION']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_INCOMPLETE_DISK_MIGRATION</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_INCOMPLETE_DISK_MIGRATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrDatabaseFull\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_DATABASE_FULL']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_DATABASE_FULL</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_DATABASE_FULL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrDiskConfigurationCorrupted\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_DISK_CONFIGURATION_CORRUPTED']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_DISK_CONFIGURATION_CORRUPTED</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_DISK_CONFIGURATION_CORRUPTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrDiskConfigurationNotInSync\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_DISK_CONFIGURATION_NOT_IN_SYNC']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_DISK_CONFIGURATION_NOT_IN_SYNC</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_DISK_CONFIGURATION_NOT_IN_SYNC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrPackConfigUpdateFailed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_PACK_CONFIG_UPDATE_FAILED']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_PACK_CONFIG_UPDATE_FAILED</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_PACK_CONFIG_UPDATE_FAILED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrDiskContainsNonSimpleVolume\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_DISK_CONTAINS_NON_SIMPLE_VOLUME']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_DISK_CONTAINS_NON_SIMPLE_VOLUME</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_DISK_CONTAINS_NON_SIMPLE_VOLUME</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrDiskDuplicate\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_DISK_DUPLICATE']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_DISK_DUPLICATE</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_DISK_DUPLICATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrDiskDynamic\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_DISK_DYNAMIC']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_DISK_DYNAMIC</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_DISK_DYNAMIC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrDiskIdInvalid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_DISK_ID_INVALID']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_DISK_ID_INVALID</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_DISK_ID_INVALID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrDiskInvalid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_DISK_INVALID']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_DISK_INVALID</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_DISK_INVALID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrDiskLastVoter\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_DISK_LAST_VOTER']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_DISK_LAST_VOTER</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_DISK_LAST_VOTER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrDiskLayoutInvalid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_DISK_LAYOUT_INVALID']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_DISK_LAYOUT_INVALID</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_DISK_LAYOUT_INVALID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrDiskLayoutNonBasicBetweenBasicPartitions\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_DISK_LAYOUT_NON_BASIC_BETWEEN_BASIC_PARTITIONS']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_DISK_LAYOUT_NON_BASIC_BETWEEN_BASIC_PARTITIONS</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_DISK_LAYOUT_NON_BASIC_BETWEEN_BASIC_PARTITIONS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrDiskLayoutNotCylinderAligned\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_DISK_LAYOUT_NOT_CYLINDER_ALIGNED']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_DISK_LAYOUT_NOT_CYLINDER_ALIGNED</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_DISK_LAYOUT_NOT_CYLINDER_ALIGNED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrDiskLayoutPartitionsTooSmall\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_DISK_LAYOUT_PARTITIONS_TOO_SMALL']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_DISK_LAYOUT_PARTITIONS_TOO_SMALL</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_DISK_LAYOUT_PARTITIONS_TOO_SMALL</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrDiskLayoutPrimaryBetweenLogicalPartitions\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_DISK_LAYOUT_PRIMARY_BETWEEN_LOGICAL_PARTITIONS']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_DISK_LAYOUT_PRIMARY_BETWEEN_LOGICAL_PARTITIONS</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_DISK_LAYOUT_PRIMARY_BETWEEN_LOGICAL_PARTITIONS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrDiskLayoutTooManyPartitions\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_DISK_LAYOUT_TOO_MANY_PARTITIONS']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_DISK_LAYOUT_TOO_MANY_PARTITIONS</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_DISK_LAYOUT_TOO_MANY_PARTITIONS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrDiskMissing\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_DISK_MISSING']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_DISK_MISSING</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_DISK_MISSING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrDiskNotEmpty\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_DISK_NOT_EMPTY']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_DISK_NOT_EMPTY</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_DISK_NOT_EMPTY</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrDiskNotEnoughSpace\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_DISK_NOT_ENOUGH_SPACE']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_DISK_NOT_ENOUGH_SPACE</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_DISK_NOT_ENOUGH_SPACE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrDiskRevectoringFailed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_DISK_REVECTORING_FAILED']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_DISK_REVECTORING_FAILED</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_DISK_REVECTORING_FAILED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrDiskSectorSizeInvalid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_DISK_SECTOR_SIZE_INVALID']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_DISK_SECTOR_SIZE_INVALID</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_DISK_SECTOR_SIZE_INVALID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrDiskSetNotContained\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_DISK_SET_NOT_CONTAINED']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_DISK_SET_NOT_CONTAINED</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_DISK_SET_NOT_CONTAINED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrDiskUsedByMultipleMembers\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_DISK_USED_BY_MULTIPLE_MEMBERS']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_DISK_USED_BY_MULTIPLE_MEMBERS</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_DISK_USED_BY_MULTIPLE_MEMBERS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrDiskUsedByMultiplePlexes\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_DISK_USED_BY_MULTIPLE_PLEXES']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_DISK_USED_BY_MULTIPLE_PLEXES</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_DISK_USED_BY_MULTIPLE_PLEXES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrDynamicDiskNotSupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_DYNAMIC_DISK_NOT_SUPPORTED']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_DYNAMIC_DISK_NOT_SUPPORTED</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_DYNAMIC_DISK_NOT_SUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrExtentAlreadyUsed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_EXTENT_ALREADY_USED']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_EXTENT_ALREADY_USED</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_EXTENT_ALREADY_USED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrExtentNotContiguous\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_EXTENT_NOT_CONTIGUOUS']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_EXTENT_NOT_CONTIGUOUS</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_EXTENT_NOT_CONTIGUOUS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrExtentNotInPublicRegion\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_EXTENT_NOT_IN_PUBLIC_REGION']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_EXTENT_NOT_IN_PUBLIC_REGION</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_EXTENT_NOT_IN_PUBLIC_REGION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrExtentNotSectorAligned\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_EXTENT_NOT_SECTOR_ALIGNED']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_EXTENT_NOT_SECTOR_ALIGNED</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_EXTENT_NOT_SECTOR_ALIGNED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrExtentOverlapsEbrPartition\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_EXTENT_OVERLAPS_EBR_PARTITION']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_EXTENT_OVERLAPS_EBR_PARTITION</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_EXTENT_OVERLAPS_EBR_PARTITION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrExtentVolumeLengthsDoNotMatch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_EXTENT_VOLUME_LENGTHS_DO_NOT_MATCH']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_EXTENT_VOLUME_LENGTHS_DO_NOT_MATCH</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_EXTENT_VOLUME_LENGTHS_DO_NOT_MATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrFaultTolerantNotSupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_FAULT_TOLERANT_NOT_SUPPORTED']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_FAULT_TOLERANT_NOT_SUPPORTED</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_FAULT_TOLERANT_NOT_SUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrInterleaveLengthInvalid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_INTERLEAVE_LENGTH_INVALID']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_INTERLEAVE_LENGTH_INVALID</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_INTERLEAVE_LENGTH_INVALID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrMaximumRegisteredUsers\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_MAXIMUM_REGISTERED_USERS']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_MAXIMUM_REGISTERED_USERS</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_MAXIMUM_REGISTERED_USERS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrMemberInSync\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_MEMBER_IN_SYNC']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_MEMBER_IN_SYNC</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_MEMBER_IN_SYNC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrMemberIndexDuplicate\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_MEMBER_INDEX_DUPLICATE']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_MEMBER_INDEX_DUPLICATE</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_MEMBER_INDEX_DUPLICATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrMemberIndexInvalid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_MEMBER_INDEX_INVALID']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_MEMBER_INDEX_INVALID</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_MEMBER_INDEX_INVALID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrMemberMissing\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_MEMBER_MISSING']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_MEMBER_MISSING</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_MEMBER_MISSING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrMemberNotDetached\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_MEMBER_NOT_DETACHED']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_MEMBER_NOT_DETACHED</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_MEMBER_NOT_DETACHED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrMemberRegenerating\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_MEMBER_REGENERATING']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_MEMBER_REGENERATING</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_MEMBER_REGENERATING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrAllDisksFailed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_ALL_DISKS_FAILED']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_ALL_DISKS_FAILED</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_ALL_DISKS_FAILED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrNoRegisteredUsers\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_NO_REGISTERED_USERS']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_NO_REGISTERED_USERS</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_NO_REGISTERED_USERS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrNoSuchUser\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_NO_SUCH_USER']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_NO_SUCH_USER</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_NO_SUCH_USER</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrNotificationReset\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_NOTIFICATION_RESET']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_NOTIFICATION_RESET</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_NOTIFICATION_RESET</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrNumberOfMembersInvalid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_NUMBER_OF_MEMBERS_INVALID']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_NUMBER_OF_MEMBERS_INVALID</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_NUMBER_OF_MEMBERS_INVALID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrNumberOfPlexesInvalid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_NUMBER_OF_PLEXES_INVALID']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_NUMBER_OF_PLEXES_INVALID</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_NUMBER_OF_PLEXES_INVALID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrPackDuplicate\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_PACK_DUPLICATE']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_PACK_DUPLICATE</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_PACK_DUPLICATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrPackIdInvalid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_PACK_ID_INVALID']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_PACK_ID_INVALID</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_PACK_ID_INVALID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrPackInvalid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_PACK_INVALID']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_PACK_INVALID</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_PACK_INVALID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrPackNameInvalid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_PACK_NAME_INVALID']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_PACK_NAME_INVALID</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_PACK_NAME_INVALID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrPackOffline\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_PACK_OFFLINE']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_PACK_OFFLINE</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_PACK_OFFLINE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrPackHasQuorum\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_PACK_HAS_QUORUM']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_PACK_HAS_QUORUM</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_PACK_HAS_QUORUM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrPackWithoutQuorum\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_PACK_WITHOUT_QUORUM']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_PACK_WITHOUT_QUORUM</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_PACK_WITHOUT_QUORUM</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrPartitionStyleInvalid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_PARTITION_STYLE_INVALID']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_PARTITION_STYLE_INVALID</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_PARTITION_STYLE_INVALID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrPartitionUpdateFailed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_PARTITION_UPDATE_FAILED']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_PARTITION_UPDATE_FAILED</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_PARTITION_UPDATE_FAILED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrPlexInSync\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_PLEX_IN_SYNC']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_PLEX_IN_SYNC</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_PLEX_IN_SYNC</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrPlexIndexDuplicate\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_PLEX_INDEX_DUPLICATE']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_PLEX_INDEX_DUPLICATE</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_PLEX_INDEX_DUPLICATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrPlexIndexInvalid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_PLEX_INDEX_INVALID']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_PLEX_INDEX_INVALID</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_PLEX_INDEX_INVALID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrPlexLastActive\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_PLEX_LAST_ACTIVE']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_PLEX_LAST_ACTIVE</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_PLEX_LAST_ACTIVE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrPlexMissing\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_PLEX_MISSING']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_PLEX_MISSING</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_PLEX_MISSING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrPlexRegenerating\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_PLEX_REGENERATING']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_PLEX_REGENERATING</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_PLEX_REGENERATING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrPlexTypeInvalid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_PLEX_TYPE_INVALID']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_PLEX_TYPE_INVALID</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_PLEX_TYPE_INVALID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrPlexNotRaid5\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_PLEX_NOT_RAID5']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_PLEX_NOT_RAID5</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_PLEX_NOT_RAID5</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrPlexNotSimple\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_PLEX_NOT_SIMPLE']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_PLEX_NOT_SIMPLE</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_PLEX_NOT_SIMPLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrStructureSizeInvalid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_STRUCTURE_SIZE_INVALID']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_STRUCTURE_SIZE_INVALID</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_STRUCTURE_SIZE_INVALID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrTooManyNotificationRequests\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_TOO_MANY_NOTIFICATION_REQUESTS']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_TOO_MANY_NOTIFICATION_REQUESTS</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_TOO_MANY_NOTIFICATION_REQUESTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrTransactionInProgress\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_TRANSACTION_IN_PROGRESS']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_TRANSACTION_IN_PROGRESS</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_TRANSACTION_IN_PROGRESS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrUnexpectedDiskLayoutChange\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_UNEXPECTED_DISK_LAYOUT_CHANGE']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_UNEXPECTED_DISK_LAYOUT_CHANGE</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_UNEXPECTED_DISK_LAYOUT_CHANGE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrVolumeContainsMissingDisk\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_VOLUME_CONTAINS_MISSING_DISK']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_VOLUME_CONTAINS_MISSING_DISK</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_VOLUME_CONTAINS_MISSING_DISK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrVolumeIdInvalid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_VOLUME_ID_INVALID']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_VOLUME_ID_INVALID</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_VOLUME_ID_INVALID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrVolumeLengthInvalid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_VOLUME_LENGTH_INVALID']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_VOLUME_LENGTH_INVALID</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_VOLUME_LENGTH_INVALID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrVolumeLengthNotSectorSizeMultiple\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_VOLUME_LENGTH_NOT_SECTOR_SIZE_MULTIPLE']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_VOLUME_LENGTH_NOT_SECTOR_SIZE_MULTIPLE</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_VOLUME_LENGTH_NOT_SECTOR_SIZE_MULTIPLE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrVolumeNotMirrored\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_VOLUME_NOT_MIRRORED']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_VOLUME_NOT_MIRRORED</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_VOLUME_NOT_MIRRORED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrVolumeNotRetained\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_VOLUME_NOT_RETAINED']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_VOLUME_NOT_RETAINED</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_VOLUME_NOT_RETAINED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrVolumeOffline\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_VOLUME_OFFLINE']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_VOLUME_OFFLINE</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_VOLUME_OFFLINE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrVolumeRetained\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_VOLUME_RETAINED']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_VOLUME_RETAINED</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_VOLUME_RETAINED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrNumberOfExtentsInvalid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_NUMBER_OF_EXTENTS_INVALID']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_NUMBER_OF_EXTENTS_INVALID</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_NUMBER_OF_EXTENTS_INVALID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrDifferentSectorSize\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_DIFFERENT_SECTOR_SIZE']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_DIFFERENT_SECTOR_SIZE</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_DIFFERENT_SECTOR_SIZE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrBadBootDisk\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_BAD_BOOT_DISK']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_BAD_BOOT_DISK</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_BAD_BOOT_DISK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrPackConfigOffline\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_PACK_CONFIG_OFFLINE']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_PACK_CONFIG_OFFLINE</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_PACK_CONFIG_OFFLINE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrPackConfigOnline\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_PACK_CONFIG_ONLINE']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_PACK_CONFIG_ONLINE</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_PACK_CONFIG_ONLINE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrNotPrimaryPack\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_NOT_PRIMARY_PACK']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_NOT_PRIMARY_PACK</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_NOT_PRIMARY_PACK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrPackLogUpdateFailed\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_PACK_LOG_UPDATE_FAILED']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_PACK_LOG_UPDATE_FAILED</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_PACK_LOG_UPDATE_FAILED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrNumberOfDisksInPlexInvalid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_NUMBER_OF_DISKS_IN_PLEX_INVALID']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_NUMBER_OF_DISKS_IN_PLEX_INVALID</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_NUMBER_OF_DISKS_IN_PLEX_INVALID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrNumberOfDisksInMemberInvalid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_NUMBER_OF_DISKS_IN_MEMBER_INVALID']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_NUMBER_OF_DISKS_IN_MEMBER_INVALID</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_NUMBER_OF_DISKS_IN_MEMBER_INVALID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrVolumeMirrored\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_VOLUME_MIRRORED']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_VOLUME_MIRRORED</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_VOLUME_MIRRORED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrPlexNotSimpleSpanned\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_PLEX_NOT_SIMPLE_SPANNED']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_PLEX_NOT_SIMPLE_SPANNED</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_PLEX_NOT_SIMPLE_SPANNED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrNoValidLogCopies\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_NO_VALID_LOG_COPIES']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_NO_VALID_LOG_COPIES</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_NO_VALID_LOG_COPIES</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrPrimaryPackPresent\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_PRIMARY_PACK_PRESENT']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_PRIMARY_PACK_PRESENT</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_PRIMARY_PACK_PRESENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrNumberOfDisksInvalid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_NUMBER_OF_DISKS_INVALID']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_NUMBER_OF_DISKS_INVALID</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_NUMBER_OF_DISKS_INVALID</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrMirrorNotSupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_MIRROR_NOT_SUPPORTED']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_MIRROR_NOT_SUPPORTED</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_MIRROR_NOT_SUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VolmgrRaid5NotSupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VOLMGR_RAID5_NOT_SUPPORTED']/*\"/>\t\n            <unmanaged>ERROR_VOLMGR_RAID5_NOT_SUPPORTED</unmanaged>\t\n            <unmanaged-short>ERROR_VOLMGR_RAID5_NOT_SUPPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.BcdNotAllEntriesImported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_BCD_NOT_ALL_ENTRIES_IMPORTED']/*\"/>\t\n            <unmanaged>ERROR_BCD_NOT_ALL_ENTRIES_IMPORTED</unmanaged>\t\n            <unmanaged-short>ERROR_BCD_NOT_ALL_ENTRIES_IMPORTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.BcdTooManyElements\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_BCD_TOO_MANY_ELEMENTS']/*\"/>\t\n            <unmanaged>ERROR_BCD_TOO_MANY_ELEMENTS</unmanaged>\t\n            <unmanaged-short>ERROR_BCD_TOO_MANY_ELEMENTS</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.BcdNotAllEntriesSynchronized\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_BCD_NOT_ALL_ENTRIES_SYNCHRONIZED']/*\"/>\t\n            <unmanaged>ERROR_BCD_NOT_ALL_ENTRIES_SYNCHRONIZED</unmanaged>\t\n            <unmanaged-short>ERROR_BCD_NOT_ALL_ENTRIES_SYNCHRONIZED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VhdDriveFooterMissing\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VHD_DRIVE_FOOTER_MISSING']/*\"/>\t\n            <unmanaged>ERROR_VHD_DRIVE_FOOTER_MISSING</unmanaged>\t\n            <unmanaged-short>ERROR_VHD_DRIVE_FOOTER_MISSING</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VhdDriveFooterChecksumMismatch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VHD_DRIVE_FOOTER_CHECKSUM_MISMATCH']/*\"/>\t\n            <unmanaged>ERROR_VHD_DRIVE_FOOTER_CHECKSUM_MISMATCH</unmanaged>\t\n            <unmanaged-short>ERROR_VHD_DRIVE_FOOTER_CHECKSUM_MISMATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VhdDriveFooterCorrupt\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VHD_DRIVE_FOOTER_CORRUPT']/*\"/>\t\n            <unmanaged>ERROR_VHD_DRIVE_FOOTER_CORRUPT</unmanaged>\t\n            <unmanaged-short>ERROR_VHD_DRIVE_FOOTER_CORRUPT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VhdFormatUnknown\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VHD_FORMAT_UNKNOWN']/*\"/>\t\n            <unmanaged>ERROR_VHD_FORMAT_UNKNOWN</unmanaged>\t\n            <unmanaged-short>ERROR_VHD_FORMAT_UNKNOWN</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VhdFormatUnsupportedVersion\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VHD_FORMAT_UNSUPPORTED_VERSION']/*\"/>\t\n            <unmanaged>ERROR_VHD_FORMAT_UNSUPPORTED_VERSION</unmanaged>\t\n            <unmanaged-short>ERROR_VHD_FORMAT_UNSUPPORTED_VERSION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VhdSparseHeaderChecksumMismatch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VHD_SPARSE_HEADER_CHECKSUM_MISMATCH']/*\"/>\t\n            <unmanaged>ERROR_VHD_SPARSE_HEADER_CHECKSUM_MISMATCH</unmanaged>\t\n            <unmanaged-short>ERROR_VHD_SPARSE_HEADER_CHECKSUM_MISMATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VhdSparseHeaderUnsupportedVersion\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VHD_SPARSE_HEADER_UNSUPPORTED_VERSION']/*\"/>\t\n            <unmanaged>ERROR_VHD_SPARSE_HEADER_UNSUPPORTED_VERSION</unmanaged>\t\n            <unmanaged-short>ERROR_VHD_SPARSE_HEADER_UNSUPPORTED_VERSION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VhdSparseHeaderCorrupt\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VHD_SPARSE_HEADER_CORRUPT']/*\"/>\t\n            <unmanaged>ERROR_VHD_SPARSE_HEADER_CORRUPT</unmanaged>\t\n            <unmanaged-short>ERROR_VHD_SPARSE_HEADER_CORRUPT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VhdBlockAllocationFailure\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VHD_BLOCK_ALLOCATION_FAILURE']/*\"/>\t\n            <unmanaged>ERROR_VHD_BLOCK_ALLOCATION_FAILURE</unmanaged>\t\n            <unmanaged-short>ERROR_VHD_BLOCK_ALLOCATION_FAILURE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VhdBlockAllocationTableCorrupt\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VHD_BLOCK_ALLOCATION_TABLE_CORRUPT']/*\"/>\t\n            <unmanaged>ERROR_VHD_BLOCK_ALLOCATION_TABLE_CORRUPT</unmanaged>\t\n            <unmanaged-short>ERROR_VHD_BLOCK_ALLOCATION_TABLE_CORRUPT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VhdInvalidBlockSize\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VHD_INVALID_BLOCK_SIZE']/*\"/>\t\n            <unmanaged>ERROR_VHD_INVALID_BLOCK_SIZE</unmanaged>\t\n            <unmanaged-short>ERROR_VHD_INVALID_BLOCK_SIZE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VhdBitmapMismatch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VHD_BITMAP_MISMATCH']/*\"/>\t\n            <unmanaged>ERROR_VHD_BITMAP_MISMATCH</unmanaged>\t\n            <unmanaged-short>ERROR_VHD_BITMAP_MISMATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VhdParentVhdNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VHD_PARENT_VHD_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_VHD_PARENT_VHD_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_VHD_PARENT_VHD_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VhdChildParentIdMismatch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VHD_CHILD_PARENT_ID_MISMATCH']/*\"/>\t\n            <unmanaged>ERROR_VHD_CHILD_PARENT_ID_MISMATCH</unmanaged>\t\n            <unmanaged-short>ERROR_VHD_CHILD_PARENT_ID_MISMATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VhdChildParentTimestampMismatch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VHD_CHILD_PARENT_TIMESTAMP_MISMATCH']/*\"/>\t\n            <unmanaged>ERROR_VHD_CHILD_PARENT_TIMESTAMP_MISMATCH</unmanaged>\t\n            <unmanaged-short>ERROR_VHD_CHILD_PARENT_TIMESTAMP_MISMATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VhdMetadataReadFailure\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VHD_METADATA_READ_FAILURE']/*\"/>\t\n            <unmanaged>ERROR_VHD_METADATA_READ_FAILURE</unmanaged>\t\n            <unmanaged-short>ERROR_VHD_METADATA_READ_FAILURE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VhdMetadataWriteFailure\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VHD_METADATA_WRITE_FAILURE']/*\"/>\t\n            <unmanaged>ERROR_VHD_METADATA_WRITE_FAILURE</unmanaged>\t\n            <unmanaged-short>ERROR_VHD_METADATA_WRITE_FAILURE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VhdInvalidSize\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VHD_INVALID_SIZE']/*\"/>\t\n            <unmanaged>ERROR_VHD_INVALID_SIZE</unmanaged>\t\n            <unmanaged-short>ERROR_VHD_INVALID_SIZE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VhdInvalidFileSize\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VHD_INVALID_FILE_SIZE']/*\"/>\t\n            <unmanaged>ERROR_VHD_INVALID_FILE_SIZE</unmanaged>\t\n            <unmanaged-short>ERROR_VHD_INVALID_FILE_SIZE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VirtdiskProviderNotFound\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VIRTDISK_PROVIDER_NOT_FOUND']/*\"/>\t\n            <unmanaged>ERROR_VIRTDISK_PROVIDER_NOT_FOUND</unmanaged>\t\n            <unmanaged-short>ERROR_VIRTDISK_PROVIDER_NOT_FOUND</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VirtdiskNotVirtualDisk\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VIRTDISK_NOT_VIRTUAL_DISK']/*\"/>\t\n            <unmanaged>ERROR_VIRTDISK_NOT_VIRTUAL_DISK</unmanaged>\t\n            <unmanaged-short>ERROR_VIRTDISK_NOT_VIRTUAL_DISK</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VhdParentVhdAccessDenied\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VHD_PARENT_VHD_ACCESS_DENIED']/*\"/>\t\n            <unmanaged>ERROR_VHD_PARENT_VHD_ACCESS_DENIED</unmanaged>\t\n            <unmanaged-short>ERROR_VHD_PARENT_VHD_ACCESS_DENIED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VhdChildParentSizeMismatch\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VHD_CHILD_PARENT_SIZE_MISMATCH']/*\"/>\t\n            <unmanaged>ERROR_VHD_CHILD_PARENT_SIZE_MISMATCH</unmanaged>\t\n            <unmanaged-short>ERROR_VHD_CHILD_PARENT_SIZE_MISMATCH</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VhdDifferencingChainCycleDetected\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VHD_DIFFERENCING_CHAIN_CYCLE_DETECTED']/*\"/>\t\n            <unmanaged>ERROR_VHD_DIFFERENCING_CHAIN_CYCLE_DETECTED</unmanaged>\t\n            <unmanaged-short>ERROR_VHD_DIFFERENCING_CHAIN_CYCLE_DETECTED</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VhdDifferencingChainErrorInParent\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VHD_DIFFERENCING_CHAIN_ERROR_IN_PARENT']/*\"/>\t\n            <unmanaged>ERROR_VHD_DIFFERENCING_CHAIN_ERROR_IN_PARENT</unmanaged>\t\n            <unmanaged-short>ERROR_VHD_DIFFERENCING_CHAIN_ERROR_IN_PARENT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VirtualDiskLimitation\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VIRTUAL_DISK_LIMITATION']/*\"/>\t\n            <unmanaged>ERROR_VIRTUAL_DISK_LIMITATION</unmanaged>\t\n            <unmanaged-short>ERROR_VIRTUAL_DISK_LIMITATION</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VhdInvalidType\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VHD_INVALID_TYPE']/*\"/>\t\n            <unmanaged>ERROR_VHD_INVALID_TYPE</unmanaged>\t\n            <unmanaged-short>ERROR_VHD_INVALID_TYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VhdInvalidState\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VHD_INVALID_STATE']/*\"/>\t\n            <unmanaged>ERROR_VHD_INVALID_STATE</unmanaged>\t\n            <unmanaged-short>ERROR_VHD_INVALID_STATE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.VirtdiskUnsupportedDiskSectorSize\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_VIRTDISK_UNSUPPORTED_DISK_SECTOR_SIZE']/*\"/>\t\n            <unmanaged>ERROR_VIRTDISK_UNSUPPORTED_DISK_SECTOR_SIZE</unmanaged>\t\n            <unmanaged-short>ERROR_VIRTDISK_UNSUPPORTED_DISK_SECTOR_SIZE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.ErrorCode.QueryStorageError\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ERROR_QUERY_STORAGE_ERROR']/*\"/>\t\n            <unmanaged>ERROR_QUERY_STORAGE_ERROR</unmanaged>\t\n            <unmanaged-short>ERROR_QUERY_STORAGE_ERROR</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Win32.LockType\">\n            <summary>\t\n            <p> The \t\n            <strong><see cref=\"T:SharpDX.Win32.LockType\"/></strong> enumeration values indicate the type of locking requested for the specified range of bytes. The values are used in the \t\n            <strong>ILockBytes::LockRegion</strong> and \t\n            <strong><see cref=\"M:SharpDX.Win32.IStream.LockRegion(System.Int64,System.Int64,SharpDX.Win32.LockType)\"/></strong> methods.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='LOCKTYPE']/*\"/>\t\n            <msdn-id>aa380048</msdn-id>\t\n            <unmanaged>LOCKTYPE</unmanaged>\t\n            <unmanaged-short>LOCKTYPE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.LockType.Write\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='LOCK_WRITE']/*\"/>\t\n            <unmanaged>LOCK_WRITE</unmanaged>\t\n            <unmanaged-short>LOCK_WRITE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.LockType.Exclusive\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='LOCK_EXCLUSIVE']/*\"/>\t\n            <unmanaged>LOCK_EXCLUSIVE</unmanaged>\t\n            <unmanaged-short>LOCK_EXCLUSIVE</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.LockType.OnlyOnce\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='LOCK_ONLYONCE']/*\"/>\t\n            <unmanaged>LOCK_ONLYONCE</unmanaged>\t\n            <unmanaged-short>LOCK_ONLYONCE</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Win32.StorageStatisticsFlags\">\n            <summary>\t\n            <p> The \t\n            <strong><see cref=\"T:SharpDX.Win32.StorageStatisticsFlags\"/></strong> enumeration values indicate whether the method should try to return a name in the <strong>pwcsName</strong> member of the \t\n            <strong><see cref=\"T:SharpDX.Win32.StorageStatistics\"/></strong> structure. The values are used in the \t\n            <strong>ILockBytes::Stat</strong>, \t\n            <strong>IStorage::Stat</strong>, and \t\n            <strong><see cref=\"M:SharpDX.Win32.IStream.GetStatistics(SharpDX.Win32.StorageStatisticsFlags)\"/></strong> methods to save memory when the <strong>pwcsName</strong> member is not required.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='STATFLAG']/*\"/>\t\n            <msdn-id>aa380316</msdn-id>\t\n            <unmanaged>STATFLAG</unmanaged>\t\n            <unmanaged-short>STATFLAG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.StorageStatisticsFlags.Default\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='STATFLAG_DEFAULT']/*\"/>\t\n            <unmanaged>STATFLAG_DEFAULT</unmanaged>\t\n            <unmanaged-short>STATFLAG_DEFAULT</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.StorageStatisticsFlags.NoName\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='STATFLAG_NONAME']/*\"/>\t\n            <unmanaged>STATFLAG_NONAME</unmanaged>\t\n            <unmanaged-short>STATFLAG_NONAME</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.StorageStatisticsFlags.None\">\n            <summary>\t\n            None.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='']/*\"/>\t\n            <unmanaged>None</unmanaged>\t\n            <unmanaged-short>None</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Win32.ComStream\">\n            <summary>\t\n            <p> The \t\n            <strong><see cref=\"T:SharpDX.Win32.IStream\"/></strong> interface lets you read and write data to stream objects. Stream objects contain the data in a structured storage object, where storages provide the structure. Simple data can be written directly to a stream but, most frequently, streams are elements nested within a storage object. They are similar to standard files.</p><p>The \t\n            <strong><see cref=\"T:SharpDX.Win32.IStream\"/></strong> interface defines methods similar to the MS-DOS FAT file functions. For example, each stream object has its own access rights and a seek reference. The main difference between a DOS file and a stream object is that in the latter case, streams are opened using an \t\n            <strong><see cref=\"T:SharpDX.Win32.IStream\"/></strong> interface reference rather than a file handle.</p><p>The methods in this interface present your object's data as a contiguous sequence of bytes that you can read or write. There are also methods for committing and reverting changes on streams that are open in transacted mode and methods for restricting access to a range of bytes in the stream.</p><p>Streams can remain open for long periods of time without consuming file-system resources. The <strong>IUnknown::Release</strong> method is similar to a close function on a file. Once released, the stream object is no longer valid and cannot be used.</p><p>Clients of asynchronous monikers can choose between a data-pull or data-push model for driving an asynchronous \t\n            <strong>IMoniker::BindToStorage</strong> operation and for receiving asynchronous notifications. See \t\n            URL Monikers for more information. The following table compares the behavior of asynchronous \t\n            <strong><see cref=\"M:SharpDX.Win32.IStreamBase.Read(System.IntPtr,System.Int32)\"/></strong> and \t\n            <strong><see cref=\"M:SharpDX.Win32.IStream.Seek(System.Int64,System.IO.SeekOrigin)\"/></strong> calls returned in <strong>IBindStatusCallback::OnDataAvailable</strong> in these two download models:</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IStream']/*\"/>\t\n            <msdn-id>aa380034</msdn-id>\t\n            <unmanaged>IStream</unmanaged>\t\n            <unmanaged-short>IStream</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Win32.ComStreamBase\">\n            <summary>\t\n            <p> The \t\n            <strong><see cref=\"T:SharpDX.Win32.IStreamBase\"/></strong> interface supports simplified sequential access to stream objects. The \t\n            <strong><see cref=\"T:SharpDX.Win32.IStream\"/></strong> interface inherits its \t\n            <strong>Read</strong> and \t\n            <strong>Write</strong> methods from \t\n            <strong><see cref=\"T:SharpDX.Win32.IStreamBase\"/></strong>.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ISequentialStream']/*\"/>\t\n            <msdn-id>aa380010</msdn-id>\t\n            <unmanaged>ISequentialStream</unmanaged>\t\n            <unmanaged-short>ISequentialStream</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Win32.IStreamBase\">\n            <summary>\t\n            <p> The \t\n            <strong><see cref=\"T:SharpDX.Win32.IStreamBase\"/></strong> interface supports simplified sequential access to stream objects. The \t\n            <strong><see cref=\"T:SharpDX.Win32.IStream\"/></strong> interface inherits its \t\n            <strong>Read</strong> and \t\n            <strong>Write</strong> methods from \t\n            <strong><see cref=\"T:SharpDX.Win32.IStreamBase\"/></strong>.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ISequentialStream']/*\"/>\t\n            <msdn-id>aa380010</msdn-id>\t\n            <unmanaged>ISequentialStream</unmanaged>\t\n            <unmanaged-short>ISequentialStream</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Win32.IStreamBase.Read(System.IntPtr,System.Int32)\">\n            <summary>\n            Reads a specified number of bytes from the stream object into memory starting at the current seek pointer.\n            </summary>\n            <param name=\"buffer\">The read buffer.</param>\n            <param name=\"numberOfBytesToRead\">The number of bytes to read.</param>\n            <returns>The actual number of bytes read from the stream object. </returns>\n        </member>\n        <member name=\"M:SharpDX.Win32.IStreamBase.Write(System.IntPtr,System.Int32)\">\n            <summary>\n            Writes a specified number of bytes into the stream object starting at the current seek pointer.\n            </summary>\n            <param name=\"buffer\">The buffer.</param>\n            <param name=\"numberOfBytesToRead\">The number of bytes to read.</param>\n            <returns>The actual number of bytes written to the stream object</returns>\n        </member>\n        <member name=\"M:SharpDX.Win32.ComStreamBase.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Win32.ComStreamBase\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Win32.ComStreamBase.op_Explicit(System.IntPtr)~SharpDX.Win32.ComStreamBase\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Win32.ComStreamBase\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Win32.ComStreamBase.Read(System.IntPtr,System.Int32)\">\n            <summary>\t\n            <p> The <strong>Read</strong> method reads a specified number of bytes from the stream object into memory, starting at the current seek reference.</p>\t\n            </summary>\t\n            <param name=\"vRef\"><dd> <p>A reference to the buffer which the stream data is read into.</p> </dd></param>\t\n            <param name=\"cb\"><dd> <p>The number of bytes of data to read from the stream object.</p> </dd></param>\t\n            <returns><dd> <p>A reference to a <strong>ULONG</strong> variable that receives the actual number of bytes read from the stream object. </p> <p><strong>Note</strong>??The number of bytes read may be zero.</p> </dd></returns>\t\n            <remarks>\t\n            <p>This method reads bytes from this stream object into memory. The stream object must be opened in <strong>STGM_READ</strong> mode. This method adjusts the seek reference by the actual number of bytes read.</p><p>The number of bytes actually read is also returned in the <em>pcbRead</em> parameter.</p>Notes to Callers<p>The actual number of bytes read can be less than the number of bytes requested if an error occurs or if the end of the stream is reached during the read operation.  The number of bytes returned should always  be compared to the number of bytes requested.  If the number of bytes returned is less than the number of bytes requested, it usually means the <strong>Read</strong> method attempted to read  past the end of the stream.</p><p>The application should handle both a returned error  and <strong><see cref=\"F:SharpDX.Result.Ok\"/></strong> return values on end-of-stream read operations.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ISequentialStream::Read']/*\"/>\t\n            <msdn-id>aa380011</msdn-id>\t\n            <unmanaged>HRESULT ISequentialStream::Read([Out, Buffer] void* pv,[In] unsigned int cb,[Out, Optional] unsigned int* pcbRead)</unmanaged>\t\n            <unmanaged-short>ISequentialStream::Read</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Win32.ComStreamBase.Write(System.IntPtr,System.Int32)\">\n            <summary>\t\n            <p> The <strong>Write</strong> method writes a specified number of bytes into the stream object starting at the current seek reference.</p>\t\n            </summary>\t\n            <param name=\"vRef\"><dd> <p>A reference to the buffer that contains the data that is to be written to the stream. A valid reference must be provided for this parameter even when <em>cb</em> is zero.</p> </dd></param>\t\n            <param name=\"cb\"><dd> <p>The number of bytes of data to attempt to write into the stream. This value can be zero.</p> </dd></param>\t\n            <returns><dd> <p>A reference to a <strong>ULONG</strong> variable where this method writes the actual number of bytes written to the stream object. The caller can set this reference to <strong><c>null</c></strong>, in which case this method does not provide the actual number of bytes written.</p> </dd></returns>\t\n            <remarks>\t\n            <p><strong><see cref=\"M:SharpDX.Win32.IStreamBase.Write(System.IntPtr,System.Int32)\"/></strong> writes the specified data to a stream object. The seek reference is adjusted for the number of bytes actually written. The number of bytes actually written is returned in the <em>pcbWritten</em> parameter. If the byte count is zero bytes, the write operation has no effect.</p><p>If the seek reference is currently past the end of the stream and the byte count is nonzero, this method increases the size of the stream to the seek reference and writes the specified bytes starting at the seek reference. The fill bytes written to the stream are not initialized to any particular value. This is the same as the end-of-file behavior in the MS-DOS FAT file system.</p><p>With a zero byte count and a seek reference past the end of the stream, this method does not create the fill bytes to increase the stream to the seek reference. In this case, you must call the \t\n            <strong><see cref=\"M:SharpDX.Win32.IStream.SetSize(System.Int64)\"/></strong> method to increase the size of the stream and write the fill bytes.</p><p>The <em>pcbWritten</em> parameter can have a value even if an error occurs.</p><p>In the COM-provided implementation, stream objects are not sparse. Any fill bytes are eventually allocated on the disk and assigned to the stream.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='ISequentialStream::Write']/*\"/>\t\n            <msdn-id>aa380014</msdn-id>\t\n            <unmanaged>HRESULT ISequentialStream::Write([In, Buffer] const void* pv,[In] unsigned int cb,[Out, Optional] unsigned int* pcbWritten)</unmanaged>\t\n            <unmanaged-short>ISequentialStream::Write</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Win32.IStream\">\n            <summary>\t\n            <p> The \t\n            <strong><see cref=\"T:SharpDX.Win32.IStream\"/></strong> interface lets you read and write data to stream objects. Stream objects contain the data in a structured storage object, where storages provide the structure. Simple data can be written directly to a stream but, most frequently, streams are elements nested within a storage object. They are similar to standard files.</p><p>The \t\n            <strong><see cref=\"T:SharpDX.Win32.IStream\"/></strong> interface defines methods similar to the MS-DOS FAT file functions. For example, each stream object has its own access rights and a seek reference. The main difference between a DOS file and a stream object is that in the latter case, streams are opened using an \t\n            <strong><see cref=\"T:SharpDX.Win32.IStream\"/></strong> interface reference rather than a file handle.</p><p>The methods in this interface present your object's data as a contiguous sequence of bytes that you can read or write. There are also methods for committing and reverting changes on streams that are open in transacted mode and methods for restricting access to a range of bytes in the stream.</p><p>Streams can remain open for long periods of time without consuming file-system resources. The <strong>IUnknown::Release</strong> method is similar to a close function on a file. Once released, the stream object is no longer valid and cannot be used.</p><p>Clients of asynchronous monikers can choose between a data-pull or data-push model for driving an asynchronous \t\n            <strong>IMoniker::BindToStorage</strong> operation and for receiving asynchronous notifications. See \t\n            URL Monikers for more information. The following table compares the behavior of asynchronous \t\n            <strong><see cref=\"M:SharpDX.Win32.IStreamBase.Read(System.IntPtr,System.Int32)\"/></strong> and \t\n            <strong><see cref=\"M:SharpDX.Win32.IStream.Seek(System.Int64,System.IO.SeekOrigin)\"/></strong> calls returned in <strong>IBindStatusCallback::OnDataAvailable</strong> in these two download models:</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IStream']/*\"/>\t\n            <msdn-id>aa380034</msdn-id>\t\n            <unmanaged>IStream</unmanaged>\t\n            <unmanaged-short>IStream</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Win32.IStream.Seek(System.Int64,System.IO.SeekOrigin)\">\n            <summary>\n            Changes the seek pointer to a new location relative to the beginning of the stream, to the end of the stream, or to the current seek pointer.\n            </summary>\n            <param name=\"offset\">The offset.</param>\n            <param name=\"origin\">The origin.</param>\n            <returns>The offset of the seek pointer from the beginning of the stream.</returns>\n        </member>\n        <member name=\"M:SharpDX.Win32.IStream.SetSize(System.Int64)\">\n            <summary>\n            Changes the size of the stream object.\n            </summary>\n            <param name=\"newSize\">The new size.</param>\n        </member>\n        <member name=\"M:SharpDX.Win32.IStream.CopyTo(SharpDX.Win32.IStream,System.Int64,System.Int64@)\">\n            <summary>\n            Copies a specified number of bytes from the current seek pointer in the stream to the current seek pointer in another stream.\n            </summary>\n            <param name=\"streamDest\">The stream destination.</param>\n            <param name=\"numberOfBytesToCopy\">The number of bytes to copy.</param>\n            <param name=\"bytesWritten\">The number of bytes written.</param>\n            <returns>The number of bytes read</returns>\n        </member>\n        <member name=\"M:SharpDX.Win32.IStream.Commit(SharpDX.Win32.CommitFlags)\">\n            <summary>\n            Commit method ensures that any changes made to a stream object open in transacted mode are reflected in the parent storage. If the stream object is open in direct mode, Commit has no effect other than flushing all memory buffers to the next-level storage object. The COM compound file implementation of streams does not support opening streams in transacted mode.\n            </summary>\n            <param name=\"commitFlags\">The GRF commit flags.</param>\n        </member>\n        <member name=\"M:SharpDX.Win32.IStream.Revert\">\n            <summary>\n            Discards all changes that have been made to a transacted stream since the last <see cref=\"M:SharpDX.Win32.IStream.Commit(SharpDX.Win32.CommitFlags)\"/> call. \n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Win32.IStream.LockRegion(System.Int64,System.Int64,SharpDX.Win32.LockType)\">\n            <summary>\n            Restricts access to a specified range of bytes in the stream.\n            </summary>\n            <param name=\"offset\">The offset.</param>\n            <param name=\"numberOfBytesToLock\">The number of bytes to lock.</param>\n            <param name=\"dwLockType\">Type of the dw lock.</param>\n        </member>\n        <member name=\"M:SharpDX.Win32.IStream.UnlockRegion(System.Int64,System.Int64,SharpDX.Win32.LockType)\">\n            <summary>\n            Unlocks access to a specified range of bytes in the stream.\n            </summary>\n            <param name=\"offset\">The offset.</param>\n            <param name=\"numberOfBytesToLock\">The number of bytes to lock.</param>\n            <param name=\"dwLockType\">Type of the dw lock.</param>\n        </member>\n        <member name=\"M:SharpDX.Win32.IStream.GetStatistics(SharpDX.Win32.StorageStatisticsFlags)\">\n            <summary>\n            Gets the statistics.\n            </summary>\n            <param name=\"storageStatisticsFlags\">The storage statistics flags.</param>\n            <returns></returns>\n        </member>\n        <member name=\"M:SharpDX.Win32.IStream.Clone\">\n            <summary>\n            Clones this instance.\n            </summary>\n            <returns></returns>\n        </member>\n        <member name=\"M:SharpDX.Win32.ComStream.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Win32.ComStream\"/> class.\n            </summary>\n            <param name=\"nativePtr\">The native pointer.</param>\t\n        </member>\n        <member name=\"M:SharpDX.Win32.ComStream.op_Explicit(System.IntPtr)~SharpDX.Win32.ComStream\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.Win32.ComStream\"/>. (This method is a shortcut to <see cref=\"P:SharpDX.CppObject.NativePointer\"/>) \n            </summary>\n            <param name=\"nativePointer\">The native pointer.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Win32.ComStream.Seek(System.Int64,System.IO.SeekOrigin)\">\n            <summary>\t\n            <p> The <strong>Seek</strong> method changes the seek reference to a new location.  The new location is relative to either the beginning of the stream, the end of the stream, or the current seek reference.</p>\t\n            </summary>\t\n            <param name=\"dlibMove\"><dd> <p>The displacement to be added to the location indicated by the <em>dwOrigin</em> parameter. If <em>dwOrigin</em> is <strong>STREAM_SEEK_SET</strong>, this is interpreted as an unsigned value rather than a signed value.</p> </dd></param>\t\n            <param name=\"dwOrigin\"><dd> <p>The origin for the displacement specified in <em>dlibMove</em>. The origin can be the beginning of the file (<strong>STREAM_SEEK_SET</strong>), the current seek reference (<strong>STREAM_SEEK_CUR</strong>), or the end of the file (<strong>STREAM_SEEK_END</strong>). For more information about values, see the <strong>STREAM_SEEK</strong> enumeration.</p> </dd></param>\t\n            <returns><dd> <p>A reference to the location where this method writes the value of the new seek reference from the beginning of the stream. </p> <p>You can set this reference to <strong><c>null</c></strong>. In this case, this method does not provide the new seek reference.</p> </dd></returns>\t\n            <remarks>\t\n            <p><strong><see cref=\"M:SharpDX.Win32.IStream.Seek(System.Int64,System.IO.SeekOrigin)\"/></strong> changes the seek reference so that subsequent read and write operations can be performed at a different location in the stream object. It is an error to seek before the beginning of the stream. It is not, however, an error to seek past the end of the stream. Seeking past the end of the stream is useful for subsequent write operations, as the stream byte range will be extended to the new seek position immediately before the write is complete.</p><p>You can also use this method to obtain the current value of the seek reference by calling this method with the <em>dwOrigin</em> parameter set to <strong>STREAM_SEEK_CUR</strong> and the <em>dlibMove</em> parameter set to 0 so that the seek reference is not changed. The current seek reference is returned in the <em>plibNewPosition</em> parameter.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IStream::Seek']/*\"/>\t\n            <msdn-id>aa380043</msdn-id>\t\n            <unmanaged>HRESULT IStream::Seek([In] LARGE_INTEGER dlibMove,[In] SHARPDX_SEEKORIGIN dwOrigin,[Out, Optional] ULARGE_INTEGER* plibNewPosition)</unmanaged>\t\n            <unmanaged-short>IStream::Seek</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Win32.ComStream.SetSize(System.Int64)\">\n            <summary>\t\n            <p>The <strong>SetSize</strong> method changes the size of the stream object.</p>\t\n            </summary>\t\n            <param name=\"libNewSize\"><dd> <p>Specifies the new size of the stream as a number of bytes.</p> </dd></param>\t\n            <returns><p>This method can return one of the following values.</p><dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> <dd> <p>The size of the stream object was successfully changed.</p> </dd> <dt><strong>E_PENDING</strong></dt> <dd> <p>Asynchronous Storage only: Part or all of the stream's data is currently unavailable. For more information see <strong>IFillLockBytes</strong> and Asynchronous Storage.</p> </dd> <dt><strong>STG_E_MEDIUMFULL</strong></dt> <dd> <p>The stream size is not changed because there is no space left on the storage device.</p> </dd> <dt><strong>STG_E_INVALIDFUNCTION</strong></dt> <dd> <p>The value of the <em>libNewSize</em> parameter is not valid. Since streams cannot be greater than 232 bytes in the COM-provided implementation, the high <strong>DWORD</strong> data type of <em>libNewSize</em> must be 0. If it is nonzero, this parameter is not valid.</p> </dd> <dt><strong>STG_E_REVERTED</strong></dt> <dd> <p>The object has been invalidated by a revert operation above it in the transaction tree.</p> </dd> </dl></returns>\t\n            <remarks>\t\n            <p><strong><see cref=\"M:SharpDX.Win32.IStream.SetSize(System.Int64)\"/></strong> changes the size of the stream object. Call this method to preallocate space for the stream. If the <em>libNewSize</em> parameter is larger than the current stream size, the stream is extended to the indicated size by filling the intervening space with bytes of undefined value. This operation is similar to the \t\n            <strong><see cref=\"M:SharpDX.Win32.IStreamBase.Write(System.IntPtr,System.Int32)\"/></strong> method if the seek reference is past the current end of stream.</p><p>If the <em>libNewSize</em> parameter is smaller than the current stream, the stream is truncated to the indicated size.</p><p>The seek reference is not affected by the change in stream size.</p><p>Calling <strong><see cref=\"M:SharpDX.Win32.IStream.SetSize(System.Int64)\"/></strong> can be an effective way to obtain a large chunk of contiguous space.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IStream::SetSize']/*\"/>\t\n            <msdn-id>aa380044</msdn-id>\t\n            <unmanaged>HRESULT IStream::SetSize([In] ULARGE_INTEGER libNewSize)</unmanaged>\t\n            <unmanaged-short>IStream::SetSize</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Win32.ComStream.CopyTo_(System.IntPtr,System.Int64,System.Int64@)\">\n            <summary>\t\n            <p>The <strong>CopyTo</strong> method copies a specified number of bytes from the current seek reference in the stream to the current seek reference in another stream.</p>\t\n            </summary>\t\n            <param name=\"stmRef\"><dd> <p>A reference to the destination stream. The stream pointed to by <em>pstm</em> can be a new stream or a clone of the source stream.</p> </dd></param>\t\n            <param name=\"cb\"><dd> <p>The number of bytes to copy from the source stream.</p> </dd></param>\t\n            <param name=\"cbWrittenRef\"><dd> <p>A reference to the location where this method writes the actual number of bytes written to the destination. You can set this reference to <strong><c>null</c></strong>. In this case, this method does not provide the actual number of bytes written.</p> </dd></param>\t\n            <returns><dd> <p>A reference to the location where this method writes the actual number of bytes read from the source. You can set this reference to <strong><c>null</c></strong>. In this case, this method does not provide the actual number of bytes read.</p> </dd></returns>\t\n            <remarks>\t\n            <p>The <strong>CopyTo</strong> method copies the specified bytes from one stream to another. It can also be used to copy a stream to itself. The seek reference in each stream instance is adjusted for the number of bytes read or written. This method is equivalent to reading <em>cb</em> bytes into memory using \t\n            <strong><see cref=\"M:SharpDX.Win32.IStreamBase.Read(System.IntPtr,System.Int32)\"/></strong> and then immediately writing them to the destination stream using \t\n            <strong><see cref=\"M:SharpDX.Win32.IStreamBase.Write(System.IntPtr,System.Int32)\"/></strong>, although <strong><see cref=\"!:SharpDX.Win32.IStream.CopyTo_\"/></strong> will be more efficient.</p><p>The destination stream can be a clone of the source stream created by calling the \t\n            <strong><see cref=\"M:SharpDX.Win32.IStream.Clone\"/></strong> method.</p><p>If <strong><see cref=\"!:SharpDX.Win32.IStream.CopyTo_\"/></strong> returns an error, you cannot assume that the seek references are valid for either the source or destination. Additionally, the values of <em>pcbRead</em> and <em>pcbWritten</em> are not meaningful even though they are returned.</p><p>If <strong><see cref=\"!:SharpDX.Win32.IStream.CopyTo_\"/></strong> returns successfully, the actual number of bytes read and written are the same.</p><p>To copy the remainder of the source from the current seek reference, specify the maximum large integer value for the <em>cb</em> parameter. If the seek reference is the beginning of the stream, this operation copies the entire stream.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IStream::CopyTo']/*\"/>\t\n            <msdn-id>aa380038</msdn-id>\t\n            <unmanaged>HRESULT IStream::CopyTo([In] IStream* pstm,[In] ULARGE_INTEGER cb,[Out] ULARGE_INTEGER* pcbRead,[Out] ULARGE_INTEGER* pcbWritten)</unmanaged>\t\n            <unmanaged-short>IStream::CopyTo</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Win32.ComStream.Commit(SharpDX.Win32.CommitFlags)\">\n            <summary>\t\n            <p>The <strong>Commit</strong> method ensures that any changes made to a stream object open in transacted mode are reflected in the parent storage. If the stream object is open in direct mode, <strong><see cref=\"M:SharpDX.Win32.IStream.Commit(SharpDX.Win32.CommitFlags)\"/></strong> has no effect other than flushing all memory buffers to the next-level storage object. The COM compound file implementation of streams does not support opening streams in transacted mode.</p>\t\n            </summary>\t\n            <param name=\"grfCommitFlags\"><dd> <p>Controls how the changes for the stream object are committed. See the <strong><see cref=\"T:SharpDX.Win32.CommitFlags\"/></strong> enumeration for a definition of these values.</p> </dd></param>\t\n            <returns><p>This method can return one of the following values.</p><dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> <dd> <p>Changes to the stream object were successfully committed to the parent level.</p> </dd> <dt><strong>E_PENDING</strong></dt> <dd> <p>Asynchronous Storage only: Part or all of the stream's data is currently unavailable. For more information see <strong>IFillLockBytes</strong> and Asynchronous Storage.</p> </dd> <dt><strong>STG_E_MEDIUMFULL</strong></dt> <dd> <p>The commit operation failed due to lack of space on the storage device.</p> </dd> <dt><strong>STG_E_REVERTED</strong></dt> <dd> <p>The object has been invalidated by a revert operation above it in the transaction tree.</p> </dd> </dl></returns>\t\n            <remarks>\t\n            <p>The <strong>Commit</strong> method ensures that changes to a stream object opened in transacted mode are reflected in the parent storage. Changes that have been made to the stream since it was opened or last committed are reflected to the parent storage object. If the parent is opened in transacted mode, the parent may revert at a later time, rolling back the changes to this stream object. The compound file implementation does not support the opening of streams in transacted mode, so this method has very little effect other than to flush memory buffers. For more information, see \t\n            <see cref=\"T:SharpDX.Win32.IStream\"/> - Compound File Implementation.</p><p>If the stream is open in direct mode, this method ensures that any memory buffers have been flushed out to the underlying storage object. This is much like a flush in traditional file systems.</p><p>The <strong><see cref=\"M:SharpDX.Win32.IStream.Commit(SharpDX.Win32.CommitFlags)\"/></strong> method is useful on a direct mode stream when the implementation of the \t\n            <strong><see cref=\"T:SharpDX.Win32.IStream\"/></strong> interface is a wrapper for underlying file system APIs. In this case, <strong><see cref=\"M:SharpDX.Win32.IStream.Commit(SharpDX.Win32.CommitFlags)\"/></strong> would be connected to the file system's flush call.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IStream::Commit']/*\"/>\t\n            <msdn-id>aa380036</msdn-id>\t\n            <unmanaged>HRESULT IStream::Commit([In] STGC grfCommitFlags)</unmanaged>\t\n            <unmanaged-short>IStream::Commit</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Win32.ComStream.Revert\">\n            <summary>\t\n            <p>The <strong>Revert</strong> method discards all changes that have been made to a transacted stream since the last \t\n            <strong><see cref=\"M:SharpDX.Win32.IStream.Commit(SharpDX.Win32.CommitFlags)\"/></strong> call. On streams open in direct mode and streams using the COM compound file implementation of <strong><see cref=\"M:SharpDX.Win32.IStream.Revert\"/></strong>, this method has no effect.</p>\t\n            </summary>\t\n            <returns><p>This method can return one of the following values.</p><dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> <dd> <p>The stream was successfully reverted to its previous version.</p> </dd> <dt><strong>E_PENDING</strong></dt> <dd> <p>Asynchronous Storage only: Part or all of the stream's data is currently unavailable. For more information see <strong>IFillLockBytes</strong> and Asynchronous Storage.</p> </dd> </dl></returns>\t\n            <remarks>\t\n            <p>The <strong>Revert</strong> method discards changes made to a transacted stream since the last commit operation.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IStream::Revert']/*\"/>\t\n            <msdn-id>aa380042</msdn-id>\t\n            <unmanaged>HRESULT IStream::Revert()</unmanaged>\t\n            <unmanaged-short>IStream::Revert</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Win32.ComStream.LockRegion(System.Int64,System.Int64,SharpDX.Win32.LockType)\">\n            <summary>\t\n            <p>The <strong>LockRegion</strong> method restricts access to a specified range of bytes in the stream. Supporting this functionality is optional since some file systems do not provide it.</p>\t\n            </summary>\t\n            <param name=\"libOffset\"><dd> <p>Integer that specifies the byte offset for the beginning of the range.</p> </dd></param>\t\n            <param name=\"cb\"><dd> <p>Integer that specifies the length of the range, in bytes, to be restricted.</p> </dd></param>\t\n            <param name=\"dwLockType\"><dd> <p>Specifies the restrictions being requested on accessing the range.</p> </dd></param>\t\n            <returns><p>This method can return one of the following values.</p><dl> <dt><strong><see cref=\"F:SharpDX.Result.Ok\"/></strong></dt> <dd> <p>The specified range of bytes was locked.</p> </dd> <dt><strong>E_PENDING</strong></dt> <dd> <p>Asynchronous Storage only: Part or all of the stream's data is currently unavailable. For more information, see <strong>IFillLockBytes</strong> and Asynchronous Storage.</p> </dd> <dt><strong>STG_E_INVALIDFUNCTION</strong></dt> <dd> <p>Locking is not supported at all or the specific type of lock requested is not supported.</p> </dd> <dt><strong>STG_E_LOCKVIOLATION</strong></dt> <dd> <p>Requested lock is supported, but cannot be granted because of an existing lock.</p> </dd> <dt><strong>STG_E_REVERTED</strong></dt> <dd> <p>The object has been invalidated by a revert operation above it in the transaction tree.</p> </dd> </dl></returns>\t\n            <remarks>\t\n            <p>The byte range of the stream can be extended.  Locking an extended range for the stream is useful as a method of communication between different instances of the stream without changing data that is actually part of the stream.</p><p>Three types of locking can be supported: locking to exclude other writers, locking to exclude other readers or writers, and locking that allows only one requester to obtain a lock on the given range, which is usually an alias for one of the other two lock types. A given stream instance might support either of the first two types, or both. The lock type is specified by <em>dwLockType</em>, using a value from the \t\n            <strong><see cref=\"T:SharpDX.Win32.LockType\"/></strong> enumeration.</p><p>Any region locked with <strong><see cref=\"M:SharpDX.Win32.IStream.LockRegion(System.Int64,System.Int64,SharpDX.Win32.LockType)\"/></strong> must later be explicitly unlocked by calling \t\n            <strong><see cref=\"M:SharpDX.Win32.IStream.UnlockRegion(System.Int64,System.Int64,SharpDX.Win32.LockType)\"/></strong> with exactly the same values for the <em>libOffset</em>, <em>cb</em>, and <em>dwLockType</em> parameters. The region must be unlocked before the stream is released. Two adjacent regions cannot be locked separately and then unlocked with a single unlock call.</p>Notes to Callers<p>Since the type of locking supported is optional and can vary in different implementations of \t\n            <strong><see cref=\"T:SharpDX.Win32.IStream\"/></strong>, you must provide code to deal with the STG_E_INVALIDFUNCTION error.</p><p>The <strong>LockRegion</strong> method has no effect in the compound file implementation, because the implementation does not support range locking.</p>Notes to Implementers<p>Support for this method is optional for implementations of stream objects since it may not be supported by the underlying file system. The type of locking supported is also optional. The STG_E_INVALIDFUNCTION error is returned if the requested type of locking is not supported.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IStream::LockRegion']/*\"/>\t\n            <msdn-id>aa380039</msdn-id>\t\n            <unmanaged>HRESULT IStream::LockRegion([In] ULARGE_INTEGER libOffset,[In] ULARGE_INTEGER cb,[In] LOCKTYPE dwLockType)</unmanaged>\t\n            <unmanaged-short>IStream::LockRegion</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Win32.ComStream.UnlockRegion(System.Int64,System.Int64,SharpDX.Win32.LockType)\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <param name=\"libOffset\">No documentation.</param>\t\n            <param name=\"cb\">No documentation.</param>\t\n            <param name=\"dwLockType\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IStream::UnlockRegion']/*\"/>\t\n            <unmanaged>HRESULT IStream::UnlockRegion([In] ULARGE_INTEGER libOffset,[In] ULARGE_INTEGER cb,[In] LOCKTYPE dwLockType)</unmanaged>\t\n            <unmanaged-short>IStream::UnlockRegion</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Win32.ComStream.GetStatistics(SharpDX.Win32.StorageStatisticsFlags)\">\n            <summary>\t\n            <p> The <strong>Stat</strong> method retrieves the \t\n            <strong><see cref=\"T:SharpDX.Win32.StorageStatistics\"/></strong> structure for this stream.</p>\t\n            </summary>\t\n            <param name=\"grfStatFlag\">No documentation.</param>\t\n            <returns>No documentation.</returns>\t\n            <remarks>\t\n            <p><strong><see cref=\"M:SharpDX.Win32.IStream.GetStatistics(SharpDX.Win32.StorageStatisticsFlags)\"/></strong> retrieves a reference to the \t\n            <strong><see cref=\"T:SharpDX.Win32.StorageStatistics\"/></strong> structure that contains information about this open stream. When this stream is within a structured storage and \t\n            <strong>IStorage::EnumElements</strong> is called, it creates an enumerator object with the \t\n            <strong>IEnumSTATSTG</strong> interface on it, which can be called to enumerate the storages and streams through the \t\n            <strong><see cref=\"T:SharpDX.Win32.StorageStatistics\"/></strong> structures associated with each of them.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IStream::Stat']/*\"/>\t\n            <msdn-id>aa380045</msdn-id>\t\n            <unmanaged>HRESULT IStream::Stat([Out] STATSTG* pstatstg,[In] STATFLAG grfStatFlag)</unmanaged>\t\n            <unmanaged-short>IStream::Stat</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Win32.ComStream.Clone\">\n            <summary>\t\n            <p> The <strong>Clone</strong> method creates a new stream object with its own seek reference that references the same bytes as the original stream.</p>\t\n            </summary>\t\n            <returns><dd> <p>When successful, reference to the location of an <strong><see cref=\"T:SharpDX.Win32.IStream\"/></strong> reference to the new stream object. If an error occurs, this parameter is <strong><c>null</c></strong>.</p> </dd></returns>\t\n            <remarks>\t\n            <p>The <strong>Clone</strong> method creates a new stream object for accessing the same bytes but using a separate seek reference. The new stream object sees the same data as the source-stream object. Changes written to one object are immediately visible in the other. Range locking is shared between the stream objects.</p><p>The initial setting of the seek reference in the cloned stream instance is the same as the current setting of the seek reference in the original stream at the time of the clone operation.</p>\t\n            </remarks>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='IStream::Clone']/*\"/>\t\n            <msdn-id>aa380035</msdn-id>\t\n            <unmanaged>HRESULT IStream::Clone([Out] IStream** ppstm)</unmanaged>\t\n            <unmanaged-short>IStream::Clone</unmanaged-short>\t\n        </member>\n        <member name=\"M:SharpDX.Win32.ComStream.CopyTo(SharpDX.Win32.IStream,System.Int64,System.Int64@)\">\n            <summary>\n            Copies a specified number of bytes from the current seek pointer in the stream to the current seek pointer in another stream.\n            </summary>\n            <param name=\"streamDest\">The stream destination.</param>\n            <param name=\"numberOfBytesToCopy\">The number of bytes to copy.</param>\n            <param name=\"bytesWritten\">The bytes written.</param>\n            <returns>The number of bytes read from this instance</returns>\n        </member>\n        <member name=\"M:SharpDX.Win32.ComStream.ToIntPtr(SharpDX.Win32.IStream)\">\n            <summary>\n            Gets a com pointer to the underlying <see cref=\"T:SharpDX.Win32.IStream\"/> object.\n            </summary>\n            <param name=\"stream\">The stream.</param>\n            <returns>A Com pointer</returns>\n        </member>\n        <member name=\"T:SharpDX.Win32.StorageStatistics\">\n            <summary>\t\n            <p> The \t\n            <strong><see cref=\"T:SharpDX.Win32.StorageStatistics\"/></strong> structure contains statistical data about an open storage, stream, or byte-array object. This structure is used in the \t\n            <strong>IEnumSTATSTG</strong>, \t\n            <strong>ILockBytes</strong>, \t\n            <strong>IStorage</strong>, and \t\n            <strong><see cref=\"T:SharpDX.Win32.IStream\"/></strong> interfaces.</p>\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='STATSTG']/*\"/>\t\n            <msdn-id>aa380319</msdn-id>\t\n            <unmanaged>STATSTG</unmanaged>\t\n            <unmanaged-short>STATSTG</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.StorageStatistics.PwcsName\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='STATSTG::pwcsName']/*\"/>\t\n            <unmanaged>wchar_t* pwcsName</unmanaged>\t\n            <unmanaged-short>wchar_t pwcsName</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.StorageStatistics.Type\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='STATSTG::type']/*\"/>\t\n            <unmanaged>unsigned int type</unmanaged>\t\n            <unmanaged-short>unsigned int type</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.StorageStatistics.CbSize\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='STATSTG::cbSize']/*\"/>\t\n            <unmanaged>ULARGE_INTEGER cbSize</unmanaged>\t\n            <unmanaged-short>ULARGE_INTEGER cbSize</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.StorageStatistics.Mtime\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='STATSTG::mtime']/*\"/>\t\n            <unmanaged>FILETIME mtime</unmanaged>\t\n            <unmanaged-short>FILETIME mtime</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.StorageStatistics.Ctime\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='STATSTG::ctime']/*\"/>\t\n            <unmanaged>FILETIME ctime</unmanaged>\t\n            <unmanaged-short>FILETIME ctime</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.StorageStatistics.Atime\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='STATSTG::atime']/*\"/>\t\n            <unmanaged>FILETIME atime</unmanaged>\t\n            <unmanaged-short>FILETIME atime</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.StorageStatistics.GrfMode\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='STATSTG::grfMode']/*\"/>\t\n            <unmanaged>unsigned int grfMode</unmanaged>\t\n            <unmanaged-short>unsigned int grfMode</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.StorageStatistics.GrfLocksSupported\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='STATSTG::grfLocksSupported']/*\"/>\t\n            <unmanaged>unsigned int grfLocksSupported</unmanaged>\t\n            <unmanaged-short>unsigned int grfLocksSupported</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.StorageStatistics.Clsid\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='STATSTG::clsid']/*\"/>\t\n            <unmanaged>GUID clsid</unmanaged>\t\n            <unmanaged-short>GUID clsid</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.StorageStatistics.GrfStateBits\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='STATSTG::grfStateBits']/*\"/>\t\n            <unmanaged>unsigned int grfStateBits</unmanaged>\t\n            <unmanaged-short>unsigned int grfStateBits</unmanaged-short>\t\n        </member>\n        <member name=\"F:SharpDX.Win32.StorageStatistics.Reserved\">\n            <summary>\t\n            No documentation.\t\n            </summary>\t\n            <!-- No matching elements were found for the following include tag --><include file=\"..\\..\\Documentation\\CodeComments.xml\" path=\"/comments/comment[@id='STATSTG::reserved']/*\"/>\t\n            <unmanaged>unsigned int reserved</unmanaged>\t\n            <unmanaged-short>unsigned int reserved</unmanaged-short>\t\n        </member>\n        <member name=\"T:SharpDX.Half\">\n            <summary>\n            A half precision (16 bit) floating point value.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Half.PrecisionDigits\">\n            <summary>\n            Number of decimal digits of precision.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Half.MantissaBits\">\n            <summary>\n            Number of bits in the mantissa.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Half.MaximumDecimalExponent\">\n            <summary>\n            Maximum decimal exponent.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Half.MaximumBinaryExponent\">\n            <summary>\n            Maximum binary exponent.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Half.MinimumDecimalExponent\">\n            <summary>\n            Minimum decimal exponent.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Half.MinimumBinaryExponent\">\n            <summary>\n            Minimum binary exponent.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Half.ExponentRadix\">\n            <summary>\n            Exponent radix.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Half.AdditionRounding\">\n            <summary>\n            Additional rounding.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Half.Epsilon\">\n            <summary>\n            Smallest such that 1.0 + epsilon != 1.0\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Half.MaxValue\">\n            <summary>\n            Maximum value of the number.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Half.MinValue\">\n            <summary>\n            Minimum value of the number.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Half.#ctor(System.Single)\">\n            <summary>\n            Initializes a new instance of the <see cref = \"T:SharpDX.Half\" /> structure.\n            </summary>\n            <param name = \"value\">The floating point value that should be stored in 16 bit format.</param>\n        </member>\n        <member name=\"M:SharpDX.Half.ConvertToFloat(SharpDX.Half[])\">\n            <summary>\n            Converts an array of half precision values into full precision values.\n            </summary>\n            <param name = \"values\">The values to be converted.</param>\n            <returns>An array of converted values.</returns>\n        </member>\n        <member name=\"M:SharpDX.Half.ConvertToHalf(System.Single[])\">\n            <summary>\n            Converts an array of full precision values into half precision values.\n            </summary>\n            <param name = \"values\">The values to be converted.</param>\n            <returns>An array of converted values.</returns>\n        </member>\n        <member name=\"M:SharpDX.Half.op_Implicit(System.Single)~SharpDX.Half\">\n            <summary>\n            Performs an explicit conversion from <see cref = \"T:System.Single\" /> to <see cref = \"T:SharpDX.Half\" />.\n            </summary>\n            <param name = \"value\">The value to be converted.</param>\n            <returns>The converted value.</returns>\n        </member>\n        <member name=\"M:SharpDX.Half.op_Implicit(SharpDX.Half)~System.Single\">\n            <summary>\n            Performs an implicit conversion from <see cref = \"T:SharpDX.Half\" /> to <see cref = \"T:System.Single\" />.\n            </summary>\n            <param name = \"value\">The value to be converted.</param>\n            <returns>The converted value.</returns>\n        </member>\n        <member name=\"M:SharpDX.Half.op_Equality(SharpDX.Half,SharpDX.Half)\">\n            <summary>\n            Tests for equality between two objects.\n            </summary>\n            <param name = \"left\">The first value to compare.</param>\n            <param name = \"right\">The second value to compare.</param>\n            <returns>\n            <c>true</c> if <paramref name = \"left\" /> has the same value as <paramref name = \"right\" />; otherwise, <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Half.op_Inequality(SharpDX.Half,SharpDX.Half)\">\n            <summary>\n            Tests for inequality between two objects.\n            </summary>\n            <param name = \"left\">The first value to compare.</param>\n            <param name = \"right\">The second value to compare.</param>\n            <returns>\n            <c>true</c> if <paramref name = \"left\" /> has a different value than <paramref name = \"right\" />; otherwise, <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Half.ToString\">\n            <summary>\n            Converts the value of the object to its equivalent string representation.\n            </summary>\n            <returns>The string representation of the value of this instance.</returns>\n        </member>\n        <member name=\"M:SharpDX.Half.GetHashCode\">\n            <summary>\n            Returns the hash code for this instance.\n            </summary>\n            <returns>A 32-bit signed integer hash code.</returns>\n        </member>\n        <member name=\"M:SharpDX.Half.SharpDX#Serialization#IDataSerializable#Serialize(SharpDX.Serialization.BinarySerializer)\">\n            <inheritdoc/>\n        </member>\n        <member name=\"M:SharpDX.Half.Equals(SharpDX.Half@,SharpDX.Half@)\">\n            <summary>\n            Determines whether the specified object instances are considered equal.\n            </summary>\n            <param name = \"value1\" />\n            <param name = \"value2\" />\n            <returns>\n            <c>true</c> if <paramref name = \"value1\" /> is the same instance as <paramref name = \"value2\" /> or \n            if both are <c>null</c> references or if <c>value1.Equals(value2)</c> returns <c>true</c>; otherwise, <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Half.Equals(SharpDX.Half)\">\n            <summary>\n            Returns a value that indicates whether the current instance is equal to the specified object.\n            </summary>\n            <param name = \"other\">Object to make the comparison with.</param>\n            <returns>\n            <c>true</c> if the current instance is equal to the specified object; <c>false</c> otherwise.</returns>\n        </member>\n        <member name=\"M:SharpDX.Half.Equals(System.Object)\">\n            <summary>\n            Returns a value that indicates whether the current instance is equal to a specified object.\n            </summary>\n            <param name = \"obj\">Object to make the comparison with.</param>\n            <returns>\n            <c>true</c> if the current instance is equal to the specified object; <c>false</c> otherwise.</returns>\n        </member>\n        <member name=\"P:SharpDX.Half.RawValue\">\n            <summary>\n            Gets or sets the raw 16 bit value used to back this half-float.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Half2\">\n            <summary>\n            Defines a two component vector, using half precision floating point coordinates.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Half2.X\">\n            <summary>\n            Gets or sets the X component of the vector.\n            </summary>\n            <value>The X component of the vector.</value>\n        </member>\n        <member name=\"F:SharpDX.Half2.Y\">\n            <summary>\n            Gets or sets the Y component of the vector.\n            </summary>\n            <value>The Y component of the vector.</value>\n        </member>\n        <member name=\"M:SharpDX.Half2.#ctor(SharpDX.Half,SharpDX.Half)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Half2\" /> structure.\n            </summary>\n            <param name=\"x\">The X component.</param>\n            <param name=\"y\">The Y component.</param>\n        </member>\n        <member name=\"M:SharpDX.Half2.#ctor(SharpDX.Half)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Half2\" /> structure.\n            </summary>\n            <param name=\"value\">The value to set for both the X and Y components.</param>\n        </member>\n        <member name=\"M:SharpDX.Half2.op_Implicit(SharpDX.Vector2)~SharpDX.Half2\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:SharpDX.Vector2\"/> to <see cref=\"T:SharpDX.Half2\"/>.\n            </summary>\n            <param name=\"value\">The value.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"M:SharpDX.Half2.op_Implicit(SharpDX.Half2)~SharpDX.Vector2\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:SharpDX.Half2\"/> to <see cref=\"T:SharpDX.Vector2\"/>.\n            </summary>\n            <param name=\"value\">The value.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"M:SharpDX.Half2.op_Equality(SharpDX.Half2,SharpDX.Half2)\">\n            <summary>\n            Tests for equality between two objects.\n            </summary>\n            <param name=\"left\">The first value to compare.</param>\n            <param name=\"right\">The second value to compare.</param>\n            <returns>\n            <c>true</c> if <paramref name=\"left\" /> has the same value as <paramref name=\"right\" />; otherwise, <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Half2.op_Inequality(SharpDX.Half2,SharpDX.Half2)\">\n            <summary>\n            Tests for inequality between two objects.\n            </summary>\n            <param name=\"left\">The first value to compare.</param>\n            <param name=\"right\">The second value to compare.</param>\n            <returns>\n            <c>true</c> if <paramref name=\"left\" /> has a different value than <paramref name=\"right\" />; otherwise, <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Half2.GetHashCode\">\n            <summary>\n            Returns the hash code for this instance.\n            </summary>\n            <returns>A 32-bit signed integer hash code.</returns>\n        </member>\n        <member name=\"M:SharpDX.Half2.SharpDX#Serialization#IDataSerializable#Serialize(SharpDX.Serialization.BinarySerializer)\">\n            <inheritdoc/>\n        </member>\n        <member name=\"M:SharpDX.Half2.Equals(SharpDX.Half2@,SharpDX.Half2@)\">\n            <summary>\n            Determines whether the specified object instances are considered equal. \n            </summary>\n            <param name=\"value1\" />\n            <param name=\"value2\" />\n            <returns>\n            <c>true</c> if <paramref name=\"value1\" /> is the same instance as <paramref name=\"value2\" /> or \n            if both are <c>null</c> references or if <c>value1.Equals(value2)</c> returns <c>true</c>; otherwise, <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Half2.Equals(SharpDX.Half2)\">\n            <summary>\n            Returns a value that indicates whether the current instance is equal to the specified object. \n            </summary>\n            <param name=\"other\">Object to make the comparison with.</param>\n            <returns>\n            <c>true</c> if the current instance is equal to the specified object; <c>false</c> otherwise.</returns>\n        </member>\n        <member name=\"M:SharpDX.Half2.Equals(System.Object)\">\n            <summary>\n            Returns a value that indicates whether the current instance is equal to a specified object. \n            </summary>\n            <param name=\"obj\">Object to make the comparison with.</param>\n            <returns>\n            <c>true</c> if the current instance is equal to the specified object; <c>false</c> otherwise.</returns>\n        </member>\n        <member name=\"T:SharpDX.Half3\">\n            <summary>\n            Defines a three component vector, using half precision floating point coordinates.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Half3.X\">\n            <summary>\n            Gets or sets the X component of the vector.\n            </summary>\n            <value>The X component of the vector.</value>\n        </member>\n        <member name=\"F:SharpDX.Half3.Y\">\n            <summary>\n            Gets or sets the Y component of the vector.\n            </summary>\n            <value>The Y component of the vector.</value>\n        </member>\n        <member name=\"F:SharpDX.Half3.Z\">\n            <summary>\n            Gets or sets the Z component of the vector.\n            </summary>\n            <value>The Z component of the vector.</value>\n        </member>\n        <member name=\"M:SharpDX.Half3.#ctor(SharpDX.Half,SharpDX.Half,SharpDX.Half)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Half3\" /> structure.\n            </summary>\n            <param name=\"x\">The X component.</param>\n            <param name=\"y\">The Y component.</param>\n            <param name=\"z\">The Z component.</param>\n        </member>\n        <member name=\"M:SharpDX.Half3.#ctor(SharpDX.Half)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Half3\" /> structure.\n            </summary>\n            <param name=\"value\">The value to set for the X, Y, and Z components.</param>\n        </member>\n        <member name=\"M:SharpDX.Half3.op_Implicit(SharpDX.Vector3)~SharpDX.Half3\">\n            <summary>\n            Performs an implicit conversion from <see cref=\"T:SharpDX.Vector3\"/> to <see cref=\"T:SharpDX.Half3\"/>.\n            </summary>\n            <param name=\"value\">The value.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"M:SharpDX.Half3.op_Implicit(SharpDX.Half3)~SharpDX.Vector3\">\n            <summary>\n            Performs an implicit conversion from <see cref=\"T:SharpDX.Half3\"/> to <see cref=\"T:SharpDX.Vector3\"/>.\n            </summary>\n            <param name=\"value\">The value.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"M:SharpDX.Half3.op_Explicit(SharpDX.Vector2)~SharpDX.Half3\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:SharpDX.Vector2\"/> to <see cref=\"T:SharpDX.Half3\"/>.\n            </summary>\n            <param name=\"value\">The value.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"M:SharpDX.Half3.op_Explicit(SharpDX.Half3)~SharpDX.Vector2\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:SharpDX.Half3\"/> to <see cref=\"T:SharpDX.Vector2\"/>.\n            </summary>\n            <param name=\"value\">The value.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"M:SharpDX.Half3.op_Equality(SharpDX.Half3,SharpDX.Half3)\">\n            <summary>\n            Tests for equality between two objects.\n            </summary>\n            <param name=\"left\">The first value to compare.</param>\n            <param name=\"right\">The second value to compare.</param>\n            <returns>\n            <c>true</c> if <paramref name=\"left\" /> has the same value as <paramref name=\"right\" />; otherwise, <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Half3.op_Inequality(SharpDX.Half3,SharpDX.Half3)\">\n            <summary>\n            Tests for inequality between two objects.\n            </summary>\n            <param name=\"left\">The first value to compare.</param>\n            <param name=\"right\">The second value to compare.</param>\n            <returns>\n            <c>true</c> if <paramref name=\"left\" /> has a different value than <paramref name=\"right\" />; otherwise, <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Half3.GetHashCode\">\n            <summary>\n            Returns the hash code for this instance.\n            </summary>\n            <returns>A 32-bit signed integer hash code.</returns>\n        </member>\n        <member name=\"M:SharpDX.Half3.SharpDX#Serialization#IDataSerializable#Serialize(SharpDX.Serialization.BinarySerializer)\">\n            <inheritdoc/>\n        </member>\n        <member name=\"M:SharpDX.Half3.Equals(SharpDX.Half3@,SharpDX.Half3@)\">\n            <summary>\n            Determines whether the specified object instances are considered equal. \n            </summary>\n            <param name=\"value1\" />\n            <param name=\"value2\" />\n            <returns>\n            <c>true</c> if <paramref name=\"value1\" /> is the same instance as <paramref name=\"value2\" /> or \n            if both are <c>null</c> references or if <c>value1.Equals(value2)</c> returns <c>true</c>; otherwise, <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Half3.Equals(SharpDX.Half3)\">\n            <summary>\n            Returns a value that indicates whether the current instance is equal to the specified object. \n            </summary>\n            <param name=\"other\">Object to make the comparison with.</param>\n            <returns>\n            <c>true</c> if the current instance is equal to the specified object; <c>false</c> otherwise.</returns>\n        </member>\n        <member name=\"M:SharpDX.Half3.Equals(System.Object)\">\n            <summary>\n            Returns a value that indicates whether the current instance is equal to a specified object. \n            </summary>\n            <param name=\"obj\">Object to make the comparison with.</param>\n            <returns>\n            <c>true</c> if the current instance is equal to the specified object; <c>false</c> otherwise.</returns>\n        </member>\n        <member name=\"T:SharpDX.Half4\">\n            <summary>\n            Defines a four component vector, using half precision floating point coordinates.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Half4.X\">\n            <summary>\n            Gets or sets the X component of the vector.\n            </summary>\n            <value>The X component of the vector.</value>\n        </member>\n        <member name=\"F:SharpDX.Half4.Y\">\n            <summary>\n            Gets or sets the Y component of the vector.\n            </summary>\n            <value>The Y component of the vector.</value>\n        </member>\n        <member name=\"F:SharpDX.Half4.Z\">\n            <summary>\n            Gets or sets the Z component of the vector.\n            </summary>\n            <value>The Z component of the vector.</value>\n        </member>\n        <member name=\"F:SharpDX.Half4.W\">\n            <summary>\n            Gets or sets the W component of the vector.\n            </summary>\n            <value>The W component of the vector.</value>\n        </member>\n        <member name=\"M:SharpDX.Half4.#ctor(SharpDX.Half,SharpDX.Half,SharpDX.Half,SharpDX.Half)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Half4\" /> structure.\n            </summary>\n            <param name=\"x\">The X component.</param>\n            <param name=\"y\">The Y component.</param>\n            <param name=\"z\">The Z component.</param>\n            <param name=\"w\">The W component.</param>\n        </member>\n        <member name=\"M:SharpDX.Half4.#ctor(SharpDX.Half)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Half4\" /> structure.\n            </summary>\n            <param name=\"value\">The value to set for the X, Y, Z, and W components.</param>\n        </member>\n        <member name=\"M:SharpDX.Half4.op_Implicit(SharpDX.Vector4)~SharpDX.Half4\">\n            <summary>\n            Performs an implicit conversion from <see cref=\"T:SharpDX.Vector4\"/> to <see cref=\"T:SharpDX.Half4\"/>.\n            </summary>\n            <param name=\"value\">The value.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"M:SharpDX.Half4.op_Implicit(SharpDX.Half4)~SharpDX.Vector4\">\n            <summary>\n            Performs an implicit conversion from <see cref=\"T:SharpDX.Half4\"/> to <see cref=\"T:SharpDX.Vector4\"/>.\n            </summary>\n            <param name=\"value\">The value.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"M:SharpDX.Half4.op_Explicit(SharpDX.Vector3)~SharpDX.Half4\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:SharpDX.Vector3\"/> to <see cref=\"T:SharpDX.Half4\"/>.\n            </summary>\n            <param name=\"value\">The value.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"M:SharpDX.Half4.op_Explicit(SharpDX.Half4)~SharpDX.Vector3\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:SharpDX.Half4\"/> to <see cref=\"T:SharpDX.Vector3\"/>.\n            </summary>\n            <param name=\"value\">The value.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"M:SharpDX.Half4.op_Explicit(SharpDX.Vector2)~SharpDX.Half4\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:SharpDX.Vector2\"/> to <see cref=\"T:SharpDX.Half4\"/>.\n            </summary>\n            <param name=\"value\">The value.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"M:SharpDX.Half4.op_Explicit(SharpDX.Half4)~SharpDX.Vector2\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:SharpDX.Half4\"/> to <see cref=\"T:SharpDX.Vector2\"/>.\n            </summary>\n            <param name=\"value\">The value.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"M:SharpDX.Half4.op_Equality(SharpDX.Half4,SharpDX.Half4)\">\n            <summary>\n            Tests for equality between two objects.\n            </summary>\n            <param name=\"left\">The first value to compare.</param>\n            <param name=\"right\">The second value to compare.</param>\n            <returns>\n            <c>true</c> if <paramref name=\"left\" /> has the same value as <paramref name=\"right\" />; otherwise, <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Half4.op_Inequality(SharpDX.Half4,SharpDX.Half4)\">\n            <summary>\n            Tests for inequality between two objects.\n            </summary>\n            <param name=\"left\">The first value to compare.</param>\n            <param name=\"right\">The second value to compare.</param>\n            <returns>\n            <c>true</c> if <paramref name=\"left\" /> has a different value than <paramref name=\"right\" />; otherwise, <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Half4.GetHashCode\">\n            <summary>\n            Returns the hash code for this instance.\n            </summary>\n            <returns>A 32-bit signed integer hash code.</returns>\n        </member>\n        <member name=\"M:SharpDX.Half4.SharpDX#Serialization#IDataSerializable#Serialize(SharpDX.Serialization.BinarySerializer)\">\n            <inheritdoc/>\n        </member>\n        <member name=\"M:SharpDX.Half4.Equals(SharpDX.Half4@,SharpDX.Half4@)\">\n            <summary>\n            Determines whether the specified object instances are considered equal. \n            </summary>\n            <param name=\"value1\" />\n            <param name=\"value2\" />\n            <returns>\n            <c>true</c> if <paramref name=\"value1\" /> is the same instance as <paramref name=\"value2\" /> or \n            if both are <c>null</c> references or if <c>value1.Equals(value2)</c> returns <c>true</c>; otherwise, <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Half4.Equals(SharpDX.Half4)\">\n            <summary>\n            Returns a value that indicates whether the current instance is equal to the specified object. \n            </summary>\n            <param name=\"other\">Object to make the comparison with.</param>\n            <returns>\n            <c>true</c> if the current instance is equal to the specified object; <c>false</c> otherwise.</returns>\n        </member>\n        <member name=\"M:SharpDX.Half4.Equals(System.Object)\">\n            <summary>\n            Returns a value that indicates whether the current instance is equal to a specified object. \n            </summary>\n            <param name=\"obj\">Object to make the comparison with.</param>\n            <returns>\n            <c>true</c> if the current instance is equal to the specified object; <c>false</c> otherwise.</returns>\n        </member>\n        <member name=\"T:SharpDX.HalfUtils\">\n            <summary>\n            Helper class to perform Half/Float conversion.\n            Code extract from paper : www.fox-toolkit.org/ftp/fasthalffloatconversion.pdf by Jeroen van der Zijp\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.HalfUtils.Unpack(System.UInt16)\">\n            <summary>\n            Unpacks the specified h.\n            </summary>\n            <param name=\"h\">The h.</param>\n            <returns></returns>\n        </member>\n        <member name=\"M:SharpDX.HalfUtils.Pack(System.Single)\">\n            <summary>\n            Packs the specified f.\n            </summary>\n            <param name=\"f\">The f.</param>\n            <returns></returns>\n        </member>\n        <member name=\"T:SharpDX.Int4\">\n            <summary>\n            Represents a four dimensional mathematical vector.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Int4.SizeInBytes\">\n            <summary>\n            The size of the <see cref=\"T:SharpDX.Int4\"/> type, in bytes.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Int4.Zero\">\n            <summary>\n            A <see cref=\"T:SharpDX.Int4\"/> with all of its components set to zero.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Int4.UnitX\">\n            <summary>\n            The X unit <see cref=\"T:SharpDX.Int4\"/> (1, 0, 0, 0).\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Int4.UnitY\">\n            <summary>\n            The Y unit <see cref=\"T:SharpDX.Int4\"/> (0, 1, 0, 0).\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Int4.UnitZ\">\n            <summary>\n            The Z unit <see cref=\"T:SharpDX.Int4\"/> (0, 0, 1, 0).\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Int4.UnitW\">\n            <summary>\n            The W unit <see cref=\"T:SharpDX.Int4\"/> (0, 0, 0, 1).\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Int4.One\">\n            <summary>\n            A <see cref=\"T:SharpDX.Int4\"/> with all of its components set to one.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Int4.X\">\n            <summary>\n            The X component of the vector.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Int4.Y\">\n            <summary>\n            The Y component of the vector.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Int4.Z\">\n            <summary>\n            The Z component of the vector.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Int4.W\">\n            <summary>\n            The W component of the vector.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Int4.#ctor(System.Int32)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Int4\"/> struct.\n            </summary>\n            <param name=\"value\">The value that will be assigned to all components.</param>\n        </member>\n        <member name=\"M:SharpDX.Int4.#ctor(System.Int32,System.Int32,System.Int32,System.Int32)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Int4\"/> struct.\n            </summary>\n            <param name=\"x\">Initial value for the X component of the vector.</param>\n            <param name=\"y\">Initial value for the Y component of the vector.</param>\n            <param name=\"z\">Initial value for the Z component of the vector.</param>\n            <param name=\"w\">Initial value for the W component of the vector.</param>\n        </member>\n        <member name=\"M:SharpDX.Int4.#ctor(System.Int32[])\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Int4\"/> struct.\n            </summary>\n            <param name=\"values\">The values to assign to the X, Y, Z, and W components of the vector. This must be an array with four elements.</param>\n            <exception cref=\"T:System.ArgumentNullException\">Thrown when <paramref name=\"values\"/> is <c>null</c>.</exception>\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">Thrown when <paramref name=\"values\"/> contains more or less than four elements.</exception>\n        </member>\n        <member name=\"M:SharpDX.Int4.ToArray\">\n            <summary>\n            Creates an array containing the elements of the vector.\n            </summary>\n            <returns>A four-element array containing the components of the vector.</returns>\n        </member>\n        <member name=\"M:SharpDX.Int4.Add(SharpDX.Int4@,SharpDX.Int4@,SharpDX.Int4@)\">\n            <summary>\n            Adds two vectors.\n            </summary>\n            <param name = \"left\">The first vector to add.</param>\n            <param name = \"right\">The second vector to add.</param>\n            <param name = \"result\">When the method completes, contains the sum of the two vectors.</param>\n        </member>\n        <member name=\"M:SharpDX.Int4.Add(SharpDX.Int4,SharpDX.Int4)\">\n            <summary>\n            Adds two vectors.\n            </summary>\n            <param name = \"left\">The first vector to add.</param>\n            <param name = \"right\">The second vector to add.</param>\n            <returns>The sum of the two vectors.</returns>\n        </member>\n        <member name=\"M:SharpDX.Int4.Subtract(SharpDX.Int4@,SharpDX.Int4@,SharpDX.Int4@)\">\n            <summary>\n            Subtracts two vectors.\n            </summary>\n            <param name = \"left\">The first vector to subtract.</param>\n            <param name = \"right\">The second vector to subtract.</param>\n            <param name = \"result\">When the method completes, contains the difference of the two vectors.</param>\n        </member>\n        <member name=\"M:SharpDX.Int4.Subtract(SharpDX.Int4,SharpDX.Int4)\">\n            <summary>\n            Subtracts two vectors.\n            </summary>\n            <param name = \"left\">The first vector to subtract.</param>\n            <param name = \"right\">The second vector to subtract.</param>\n            <returns>The difference of the two vectors.</returns>\n        </member>\n        <member name=\"M:SharpDX.Int4.Multiply(SharpDX.Int4@,System.Int32,SharpDX.Int4@)\">\n            <summary>\n            Scales a vector by the given value.\n            </summary>\n            <param name = \"value\">The vector to scale.</param>\n            <param name = \"scale\">The amount by which to scale the vector.</param>\n            <param name = \"result\">When the method completes, contains the scaled vector.</param>\n        </member>\n        <member name=\"M:SharpDX.Int4.Multiply(SharpDX.Int4,System.Int32)\">\n            <summary>\n            Scales a vector by the given value.\n            </summary>\n            <param name = \"value\">The vector to scale.</param>\n            <param name = \"scale\">The amount by which to scale the vector.</param>\n            <returns>The scaled vector.</returns>\n        </member>\n        <member name=\"M:SharpDX.Int4.Modulate(SharpDX.Int4@,SharpDX.Int4@,SharpDX.Int4@)\">\n            <summary>\n            Modulates a vector with another by performing component-wise multiplication.\n            </summary>\n            <param name = \"left\">The first vector to modulate.</param>\n            <param name = \"right\">The second vector to modulate.</param>\n            <param name = \"result\">When the method completes, contains the modulated vector.</param>\n        </member>\n        <member name=\"M:SharpDX.Int4.Modulate(SharpDX.Int4,SharpDX.Int4)\">\n            <summary>\n            Modulates a vector with another by performing component-wise multiplication.\n            </summary>\n            <param name = \"left\">The first vector to modulate.</param>\n            <param name = \"right\">The second vector to modulate.</param>\n            <returns>The modulated vector.</returns>\n        </member>\n        <member name=\"M:SharpDX.Int4.Divide(SharpDX.Int4@,System.Int32,SharpDX.Int4@)\">\n            <summary>\n            Scales a vector by the given value.\n            </summary>\n            <param name = \"value\">The vector to scale.</param>\n            <param name = \"scale\">The amount by which to scale the vector.</param>\n            <param name = \"result\">When the method completes, contains the scaled vector.</param>\n        </member>\n        <member name=\"M:SharpDX.Int4.Divide(SharpDX.Int4,System.Int32)\">\n            <summary>\n            Scales a vector by the given value.\n            </summary>\n            <param name = \"value\">The vector to scale.</param>\n            <param name = \"scale\">The amount by which to scale the vector.</param>\n            <returns>The scaled vector.</returns>\n        </member>\n        <member name=\"M:SharpDX.Int4.Negate(SharpDX.Int4@,SharpDX.Int4@)\">\n            <summary>\n            Reverses the direction of a given vector.\n            </summary>\n            <param name = \"value\">The vector to negate.</param>\n            <param name = \"result\">When the method completes, contains a vector facing in the opposite direction.</param>\n        </member>\n        <member name=\"M:SharpDX.Int4.Negate(SharpDX.Int4)\">\n            <summary>\n            Reverses the direction of a given vector.\n            </summary>\n            <param name = \"value\">The vector to negate.</param>\n            <returns>A vector facing in the opposite direction.</returns>\n        </member>\n        <member name=\"M:SharpDX.Int4.Clamp(SharpDX.Int4@,SharpDX.Int4@,SharpDX.Int4@,SharpDX.Int4@)\">\n            <summary>\n            Restricts a value to be within a specified range.\n            </summary>\n            <param name = \"value\">The value to clamp.</param>\n            <param name = \"min\">The minimum value.</param>\n            <param name = \"max\">The maximum value.</param>\n            <param name = \"result\">When the method completes, contains the clamped value.</param>\n        </member>\n        <member name=\"M:SharpDX.Int4.Clamp(SharpDX.Int4,SharpDX.Int4,SharpDX.Int4)\">\n            <summary>\n            Restricts a value to be within a specified range.\n            </summary>\n            <param name = \"value\">The value to clamp.</param>\n            <param name = \"min\">The minimum value.</param>\n            <param name = \"max\">The maximum value.</param>\n            <returns>The clamped value.</returns>\n        </member>\n        <member name=\"M:SharpDX.Int4.Max(SharpDX.Int4@,SharpDX.Int4@,SharpDX.Int4@)\">\n            <summary>\n            Returns a vector containing the smallest components of the specified vectors.\n            </summary>\n            <param name = \"left\">The first source vector.</param>\n            <param name = \"right\">The second source vector.</param>\n            <param name = \"result\">When the method completes, contains an new vector composed of the largest components of the source vectors.</param>\n        </member>\n        <member name=\"M:SharpDX.Int4.Max(SharpDX.Int4,SharpDX.Int4)\">\n            <summary>\n            Returns a vector containing the largest components of the specified vectors.\n            </summary>\n            <param name = \"left\">The first source vector.</param>\n            <param name = \"right\">The second source vector.</param>\n            <returns>A vector containing the largest components of the source vectors.</returns>\n        </member>\n        <member name=\"M:SharpDX.Int4.Min(SharpDX.Int4@,SharpDX.Int4@,SharpDX.Int4@)\">\n            <summary>\n            Returns a vector containing the smallest components of the specified vectors.\n            </summary>\n            <param name = \"left\">The first source vector.</param>\n            <param name = \"right\">The second source vector.</param>\n            <param name = \"result\">When the method completes, contains an new vector composed of the smallest components of the source vectors.</param>\n        </member>\n        <member name=\"M:SharpDX.Int4.Min(SharpDX.Int4,SharpDX.Int4)\">\n            <summary>\n            Returns a vector containing the smallest components of the specified vectors.\n            </summary>\n            <param name = \"left\">The first source vector.</param>\n            <param name = \"right\">The second source vector.</param>\n            <returns>A vector containing the smallest components of the source vectors.</returns>\n        </member>\n        <member name=\"M:SharpDX.Int4.op_Addition(SharpDX.Int4,SharpDX.Int4)\">\n            <summary>\n            Adds two vectors.\n            </summary>\n            <param name = \"left\">The first vector to add.</param>\n            <param name = \"right\">The second vector to add.</param>\n            <returns>The sum of the two vectors.</returns>\n        </member>\n        <member name=\"M:SharpDX.Int4.op_UnaryPlus(SharpDX.Int4)\">\n            <summary>\n            Assert a vector (return it unchanged).\n            </summary>\n            <param name = \"value\">The vector to assert (unchange).</param>\n            <returns>The asserted (unchanged) vector.</returns>\n        </member>\n        <member name=\"M:SharpDX.Int4.op_Subtraction(SharpDX.Int4,SharpDX.Int4)\">\n            <summary>\n            Subtracts two vectors.\n            </summary>\n            <param name = \"left\">The first vector to subtract.</param>\n            <param name = \"right\">The second vector to subtract.</param>\n            <returns>The difference of the two vectors.</returns>\n        </member>\n        <member name=\"M:SharpDX.Int4.op_UnaryNegation(SharpDX.Int4)\">\n            <summary>\n            Reverses the direction of a given vector.\n            </summary>\n            <param name = \"value\">The vector to negate.</param>\n            <returns>A vector facing in the opposite direction.</returns>\n        </member>\n        <member name=\"M:SharpDX.Int4.op_Multiply(System.Int32,SharpDX.Int4)\">\n            <summary>\n            Scales a vector by the given value.\n            </summary>\n            <param name = \"value\">The vector to scale.</param>\n            <param name = \"scale\">The amount by which to scale the vector.</param>\n            <returns>The scaled vector.</returns>\n        </member>\n        <member name=\"M:SharpDX.Int4.op_Multiply(SharpDX.Int4,System.Int32)\">\n            <summary>\n            Scales a vector by the given value.\n            </summary>\n            <param name = \"value\">The vector to scale.</param>\n            <param name = \"scale\">The amount by which to scale the vector.</param>\n            <returns>The scaled vector.</returns>\n        </member>\n        <member name=\"M:SharpDX.Int4.op_Division(SharpDX.Int4,System.Int32)\">\n            <summary>\n            Scales a vector by the given value.\n            </summary>\n            <param name = \"value\">The vector to scale.</param>\n            <param name = \"scale\">The amount by which to scale the vector.</param>\n            <returns>The scaled vector.</returns>\n        </member>\n        <member name=\"M:SharpDX.Int4.op_Equality(SharpDX.Int4,SharpDX.Int4)\">\n            <summary>\n            Tests for equality between two objects.\n            </summary>\n            <param name = \"left\">The first value to compare.</param>\n            <param name = \"right\">The second value to compare.</param>\n            <returns><c>true</c> if <paramref name = \"left\" /> has the same value as <paramref name = \"right\" />; otherwise, <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Int4.op_Inequality(SharpDX.Int4,SharpDX.Int4)\">\n            <summary>\n            Tests for inequality between two objects.\n            </summary>\n            <param name = \"left\">The first value to compare.</param>\n            <param name = \"right\">The second value to compare.</param>\n            <returns><c>true</c> if <paramref name = \"left\" /> has a different value than <paramref name = \"right\" />; otherwise, <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Int4.op_Explicit(SharpDX.Int4)~SharpDX.Vector2\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:SharpDX.Int4\"/> to <see cref=\"T:SharpDX.Vector2\"/>.\n            </summary>\n            <param name=\"value\">The value.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"M:SharpDX.Int4.op_Explicit(SharpDX.Int4)~SharpDX.Vector3\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:SharpDX.Int4\"/> to <see cref=\"T:SharpDX.Vector3\"/>.\n            </summary>\n            <param name=\"value\">The value.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"M:SharpDX.Int4.op_Explicit(SharpDX.Int4)~SharpDX.Vector4\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:SharpDX.Int4\"/> to <see cref=\"T:SharpDX.Vector4\"/>.\n            </summary>\n            <param name=\"value\">The value.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"M:SharpDX.Int4.ToString\">\n            <summary>\n            Returns a <see cref=\"T:System.String\"/> that represents this instance.\n            </summary>\n            <returns>\n            A <see cref=\"T:System.String\"/> that represents this instance.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Int4.ToString(System.String)\">\n            <summary>\n            Returns a <see cref=\"T:System.String\"/> that represents this instance.\n            </summary>\n            <param name=\"format\">The format.</param>\n            <returns>\n            A <see cref=\"T:System.String\"/> that represents this instance.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Int4.ToString(System.IFormatProvider)\">\n            <summary>\n            Returns a <see cref=\"T:System.String\"/> that represents this instance.\n            </summary>\n            <param name=\"formatProvider\">The format provider.</param>\n            <returns>\n            A <see cref=\"T:System.String\"/> that represents this instance.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Int4.ToString(System.String,System.IFormatProvider)\">\n            <summary>\n            Returns a <see cref=\"T:System.String\"/> that represents this instance.\n            </summary>\n            <param name=\"format\">The format.</param>\n            <param name=\"formatProvider\">The format provider.</param>\n            <returns>\n            A <see cref=\"T:System.String\"/> that represents this instance.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Int4.GetHashCode\">\n            <summary>\n            Returns a hash code for this instance.\n            </summary>\n            <returns>\n            A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. \n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Int4.SharpDX#Serialization#IDataSerializable#Serialize(SharpDX.Serialization.BinarySerializer)\">\n            <inheritdoc/>\n        </member>\n        <member name=\"M:SharpDX.Int4.Equals(SharpDX.Int4)\">\n            <summary>\n            Determines whether the specified <see cref=\"T:SharpDX.Int4\"/> is equal to this instance.\n            </summary>\n            <param name=\"other\">The <see cref=\"T:SharpDX.Int4\"/> to compare with this instance.</param>\n            <returns>\n            <c>true</c> if the specified <see cref=\"T:SharpDX.Int4\"/> is equal to this instance; otherwise, <c>false</c>.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Int4.Equals(System.Object)\">\n            <summary>\n            Determines whether the specified <see cref=\"T:System.Object\"/> is equal to this instance.\n            </summary>\n            <param name=\"value\">The <see cref=\"T:System.Object\"/> to compare with this instance.</param>\n            <returns>\n            <c>true</c> if the specified <see cref=\"T:System.Object\"/> is equal to this instance; otherwise, <c>false</c>.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Int4.op_Implicit(System.Int32[])~SharpDX.Int4\">\n            <summary>\n            Performs an implicit conversion from <see cref=\"T:System.Int32\"/> array to <see cref=\"T:SharpDX.Int4\"/>.\n            </summary>\n            <param name=\"input\">The input.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"M:SharpDX.Int4.op_Implicit(SharpDX.Int4)~System.Int32[]\">\n            <summary>\n            Performs an implicit conversion from <see cref=\"T:SharpDX.Int4\"/> to <see cref=\"T:System.Int32\"/> array.\n            </summary>\n            <param name=\"input\">The input.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"P:SharpDX.Int4.Item(System.Int32)\">\n            <summary>\n            Gets or sets the component at the specified index.\n            </summary>\n            <value>The value of the X, Y, Z, or W component, depending on the index.</value>\n            <param name=\"index\">The index of the component to access. Use 0 for the X component, 1 for the Y component, 2 for the Z component, and 3 for the W component.</param>\n            <returns>The value of the component at the specified index.</returns>\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">Thrown when the <paramref name=\"index\"/> is out of the range [0, 3].</exception>\n        </member>\n        <member name=\"T:SharpDX.Interop\">\n            <summary>\n            The implementation of this class is filled by InteropBuilder post-building-event.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Interop.Fixed``1(``0@)\">\n            <summary>\n            Provides a fixed statement working with generics.\n            </summary>\n            <typeparam name=\"T\"></typeparam>\n            <param name=\"data\">The data.</param>\n            <returns>A fixed pointer to the referenced structure</returns>\n            <remarks>\n            This is the only function in this class that is inlined in order to inline the fixed statement correctly.\n            </remarks>\n        </member>\n        <member name=\"F:SharpDX.MathUtil.ZeroTolerance\">\n            <summary>\n            The value for which all absolute numbers smaller than are considered equal to zero.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.MathUtil.Pi\">\n            <summary>\n            A value specifying the approximation of π which is 180 degrees.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.MathUtil.TwoPi\">\n            <summary>\n            A value specifying the approximation of 2π which is 360 degrees.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.MathUtil.PiOverTwo\">\n            <summary>\n            A value specifying the approximation of π/2 which is 90 degrees.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.MathUtil.PiOverFour\">\n            <summary>\n            A value specifying the approximation of π/4 which is 45 degrees.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.MathUtil.WithinEpsilon(System.Single,System.Single)\">\n            <summary>\n            Checks if a - b are almost equals within a float epsilon.\n            </summary>\n            <param name=\"a\">The left value to compare.</param>\n            <param name=\"b\">The right value to compare.</param>\n            <returns><c>true</c> if a almost equal to b within a float epsilon, <c>false</c> otherwise</returns>\n        </member>\n        <member name=\"M:SharpDX.MathUtil.Array``1(``0,System.Int32)\">\n            <summary>\n            Does something with arrays.\n            </summary>\n            <typeparam name=\"T\">Most likely the type of elements in the array.</typeparam>\n            <param name=\"value\">Who knows what this is for.</param>\n            <param name=\"count\">Probably the length of the array.</param>\n            <returns>An array of who knows what.</returns>\n        </member>\n        <member name=\"M:SharpDX.MathUtil.RevolutionsToDegrees(System.Single)\">\n            <summary>\n            Converts revolutions to degrees.\n            </summary>\n            <param name=\"revolution\">The value to convert.</param>\n            <returns>The converted value.</returns>\n        </member>\n        <member name=\"M:SharpDX.MathUtil.RevolutionsToRadians(System.Single)\">\n            <summary>\n            Converts revolutions to radians.\n            </summary>\n            <param name=\"revolution\">The value to convert.</param>\n            <returns>The converted value.</returns>\n        </member>\n        <member name=\"M:SharpDX.MathUtil.RevolutionsToGradians(System.Single)\">\n            <summary>\n            Converts revolutions to gradians.\n            </summary>\n            <param name=\"revolution\">The value to convert.</param>\n            <returns>The converted value.</returns>\n        </member>\n        <member name=\"M:SharpDX.MathUtil.DegreesToRevolutions(System.Single)\">\n            <summary>\n            Converts degrees to revolutions.\n            </summary>\n            <param name=\"degree\">The value to convert.</param>\n            <returns>The converted value.</returns>\n        </member>\n        <member name=\"M:SharpDX.MathUtil.DegreesToRadians(System.Single)\">\n            <summary>\n            Converts degrees to radians.\n            </summary>\n            <param name=\"degree\">The value to convert.</param>\n            <returns>The converted value.</returns>\n        </member>\n        <member name=\"M:SharpDX.MathUtil.RadiansToRevolutions(System.Single)\">\n            <summary>\n            Converts radians to revolutions.\n            </summary>\n            <param name=\"radian\">The value to convert.</param>\n            <returns>The converted value.</returns>\n        </member>\n        <member name=\"M:SharpDX.MathUtil.RadiansToGradians(System.Single)\">\n            <summary>\n            Converts radians to gradians.\n            </summary>\n            <param name=\"radian\">The value to convert.</param>\n            <returns>The converted value.</returns>\n        </member>\n        <member name=\"M:SharpDX.MathUtil.GradiansToRevolutions(System.Single)\">\n            <summary>\n            Converts gradians to revolutions.\n            </summary>\n            <param name=\"gradian\">The value to convert.</param>\n            <returns>The converted value.</returns>\n        </member>\n        <member name=\"M:SharpDX.MathUtil.GradiansToDegrees(System.Single)\">\n            <summary>\n            Converts gradians to degrees.\n            </summary>\n            <param name=\"gradian\">The value to convert.</param>\n            <returns>The converted value.</returns>\n        </member>\n        <member name=\"M:SharpDX.MathUtil.GradiansToRadians(System.Single)\">\n            <summary>\n            Converts gradians to radians.\n            </summary>\n            <param name=\"gradian\">The value to convert.</param>\n            <returns>The converted value.</returns>\n        </member>\n        <member name=\"M:SharpDX.MathUtil.RadiansToDegrees(System.Single)\">\n            <summary>\n            Converts radians to degrees.\n            </summary>\n            <param name=\"radian\">The value to convert.</param>\n            <returns>The converted value.</returns>\n        </member>\n        <member name=\"M:SharpDX.MathUtil.Clamp(System.Single,System.Single,System.Single)\">\n            <summary>\n            Clamps the specified value.\n            </summary>\n            <param name=\"value\">The value.</param>\n            <param name=\"min\">The min.</param>\n            <param name=\"max\">The max.</param>\n            <returns>The result of clamiping a value between min and max</returns>\n        </member>\n        <member name=\"M:SharpDX.MathUtil.Clamp(System.Int32,System.Int32,System.Int32)\">\n            <summary>\n            Clamps the specified value.\n            </summary>\n            <param name=\"value\">The value.</param>\n            <param name=\"min\">The min.</param>\n            <param name=\"max\">The max.</param>\n            <returns>The result of clamiping a value between min and max</returns>\n        </member>\n        <member name=\"M:SharpDX.MathUtil.Mod(System.Single,System.Single)\">\n            <summary>\n            Calculates the modulo of the specified value.\n            </summary>\n            <param name=\"value\">The value.</param>\n            <param name=\"modulo\">The modulo.</param>\n            <returns>The result of the modulo applied to value</returns>\n        </member>\n        <member name=\"M:SharpDX.MathUtil.Mod2PI(System.Single)\">\n            <summary>\n            Calculates the modulo 2*PI of the specified value.\n            </summary>\n            <param name=\"value\">The value.</param>\n            <returns>The result of the modulo applied to value</returns>\n        </member>\n        <member name=\"M:SharpDX.MathUtil.Wrap(System.Int32,System.Int32,System.Int32)\">\n            <summary>\n            Wraps the specified value into a range.\n            </summary>\n            <param name=\"value\">The value to wrap.</param>\n            <param name=\"min\">The min.</param>\n            <param name=\"max\">The max.</param>\n            <returns>Result of the wrapping.</returns>\n        </member>\n        <member name=\"M:SharpDX.MathUtil.Wrap(System.Single,System.Single,System.Single)\">\n            <summary>\n            Wraps the specified value into a range.\n            </summary>\n            <param name=\"value\">The value.</param>\n            <param name=\"min\">The min.</param>\n            <param name=\"max\">The max.</param>\n            <returns>Result of the wrapping.</returns>\n        </member>\n        <member name=\"M:SharpDX.MathUtil.Gauss(System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single)\">\n            <summary>\n            Gauss function.\n            </summary>\n            <param name=\"amplitude\">Curve amplitude.</param>\n            <param name=\"x\">Position X.</param>\n            <param name=\"y\">Position Y</param>\n            <param name=\"radX\">Radius X.</param>\n            <param name=\"radY\">Radius Y.</param>\n            <param name=\"sigmaX\">Curve sigma X.</param>\n            <param name=\"sigmaY\">Curve sigma Y.</param>\n            <returns>The result of gaussian function.</returns>\n        </member>\n        <member name=\"M:SharpDX.MathUtil.Gauss(System.Double,System.Double,System.Double,System.Double,System.Double,System.Double,System.Double)\">\n            <summary>\n            Gauss function.\n            </summary>\n            <param name=\"amplitude\">Curve amplitude.</param>\n            <param name=\"x\">Position X.</param>\n            <param name=\"y\">Position Y</param>\n            <param name=\"radX\">Radius X.</param>\n            <param name=\"radY\">Radius Y.</param>\n            <param name=\"sigmaX\">Curve sigma X.</param>\n            <param name=\"sigmaY\">Curve sigma Y.</param>\n            <returns>The result of gaussian function.</returns>\n        </member>\n        <member name=\"M:SharpDX.MathUtil.NextFloat(System.Random,System.Single,System.Single)\">\n            <summary>\n            Gets random <c>float</c> number within range.\n            </summary>\n            <param name=\"random\">Current <see cref=\"T:System.Random\"/>.</param>\n            <param name=\"min\">Minimum.</param>\n            <param name=\"max\">Maximum.</param>\n            <returns>Random <c>float</c> number.</returns>\n        </member>\n        <member name=\"M:SharpDX.MathUtil.NextDouble(System.Random,System.Double,System.Double)\">\n            <summary>\n            Gets random <c>double</c> number within range.\n            </summary>\n            <param name=\"random\">Current <see cref=\"T:System.Random\"/>.</param>\n            <param name=\"min\">Minimum.</param>\n            <param name=\"max\">Maximum.</param>\n            <returns>Random <c>double</c> number.</returns>\n        </member>\n        <member name=\"M:SharpDX.MathUtil.NextLong(System.Random)\">\n            <summary>\n            Gets random <c>long</c> number.\n            </summary>\n            <param name=\"random\">Current <see cref=\"T:System.Random\"/>.</param>\n            <returns>Random <c>long</c> number.</returns>\n        </member>\n        <member name=\"M:SharpDX.MathUtil.NextLong(System.Random,System.Int64,System.Int64)\">\n            <summary>\n            Gets random <c>long</c> number within range.\n            </summary>\n            <param name=\"random\">Current <see cref=\"T:System.Random\"/>.</param>\n            <param name=\"min\">Minimum.</param>\n            <param name=\"max\">Maximum.</param>\n            <returns>Random <c>long</c> number.</returns>\n        </member>\n        <member name=\"M:SharpDX.MathUtil.NextVector2(System.Random,SharpDX.Vector2,SharpDX.Vector2)\">\n            <summary>\n            Gets random <see cref=\"T:SharpDX.Vector2\"/> within range.\n            </summary>\n            <param name=\"random\">Current <see cref=\"T:System.Random\"/>.</param>\n            <param name=\"min\">Minimum.</param>\n            <param name=\"max\">Maximum.</param>\n            <returns>Random <see cref=\"T:SharpDX.Vector2\"/>.</returns>\n        </member>\n        <member name=\"M:SharpDX.MathUtil.NextVector3(System.Random,SharpDX.Vector3,SharpDX.Vector3)\">\n            <summary>\n            Gets random <see cref=\"T:SharpDX.Vector3\"/> within range.\n            </summary>\n            <param name=\"random\">Current <see cref=\"T:System.Random\"/>.</param>\n            <param name=\"min\">Minimum.</param>\n            <param name=\"max\">Maximum.</param>\n            <returns>Random <see cref=\"T:SharpDX.Vector3\"/>.</returns>\n        </member>\n        <member name=\"M:SharpDX.MathUtil.NextVector4(System.Random,SharpDX.Vector4,SharpDX.Vector4)\">\n            <summary>\n            Gets random <see cref=\"T:SharpDX.Vector4\"/> within range.\n            </summary>\n            <param name=\"random\">Current <see cref=\"T:System.Random\"/>.</param>\n            <param name=\"min\">Minimum.</param>\n            <param name=\"max\">Maximum.</param>\n            <returns>Random <see cref=\"T:SharpDX.Vector4\"/>.</returns>\n        </member>\n        <member name=\"M:SharpDX.MathUtil.NextColor(System.Random)\">\n            <summary>\n            Gets random opaque <see cref=\"T:SharpDX.Color\"/>.\n            </summary>\n            <param name=\"random\">Current <see cref=\"T:System.Random\"/>.</param>\n            <returns>Random <see cref=\"T:SharpDX.Color\"/>.</returns>\n        </member>\n        <member name=\"M:SharpDX.MathUtil.NextColor(System.Random,System.Single,System.Single)\">\n            <summary>\n            Gets random opaque <see cref=\"T:SharpDX.Color\"/>.\n            </summary>\n            <param name=\"random\">Current <see cref=\"T:System.Random\"/>.</param>\n            <param name=\"minBrightness\">Minimum brightness.</param>\n            <param name=\"maxBrightness\">Maximum brightness</param>\n            <returns>Random <see cref=\"T:SharpDX.Color\"/>.</returns>\n        </member>\n        <member name=\"M:SharpDX.MathUtil.NextColor(System.Random,System.Single,System.Single,System.Single)\">\n            <summary>\n            Gets random <see cref=\"T:SharpDX.Color\"/>.\n            </summary>\n            <param name=\"random\">Current <see cref=\"T:System.Random\"/>.</param>   \n            <param name=\"minBrightness\">Minimum brightness.</param>\n            <param name=\"maxBrightness\">Maximum brightness</param>\n            <param name=\"alpha\">Alpha value.</param>\n            <returns>Random <see cref=\"T:SharpDX.Color\"/>.</returns>\n        </member>\n        <member name=\"M:SharpDX.MathUtil.NextColor(System.Random,System.Single,System.Single,System.Single,System.Single)\">\n            <summary>\n            Gets random <see cref=\"T:SharpDX.Color\"/>.\n            </summary>\n            <param name=\"random\">Current <see cref=\"T:System.Random\"/>.</param>\n            <param name=\"minBrightness\">Minimum brightness.</param>\n            <param name=\"maxBrightness\">Maximum brightness</param>\n            <param name=\"minAlpha\">Minimum alpha.</param>\n            <param name=\"maxAlpha\">Maximum alpha.</param>\n            <returns>Random <see cref=\"T:SharpDX.Color\"/>.</returns>\n        </member>\n        <member name=\"M:SharpDX.MathUtil.NextDPoint(System.Random,SharpDX.DrawingPoint,SharpDX.DrawingPoint)\">\n            <summary>\n            Gets random <see cref=\"T:SharpDX.DrawingPoint\"/>.\n            </summary>\n            <param name=\"random\">Current <see cref=\"T:System.Random\"/>.</param>\n            <param name=\"min\">Minimum.</param>\n            <param name=\"max\">Maximum.</param>\n            <returns>Random <see cref=\"T:SharpDX.DrawingPoint\"/>.</returns>\n        </member>\n        <member name=\"M:SharpDX.MathUtil.NextDPointF(System.Random,SharpDX.DrawingPointF,SharpDX.DrawingPointF)\">\n            <summary>\n            Gets random <see cref=\"T:SharpDX.DrawingPointF\"/>.\n            </summary>\n            <param name=\"random\">Current <see cref=\"T:System.Random\"/>.</param>\n            <param name=\"min\">Minimum.</param>\n            <param name=\"max\">Maximum.</param>\n            <returns>Random <see cref=\"T:SharpDX.DrawingPointF\"/>.</returns>\n        </member>\n        <member name=\"M:SharpDX.MathUtil.NextTime(System.Random,System.TimeSpan,System.TimeSpan)\">\n            <summary>\n            Gets random <see cref=\"T:System.TimeSpan\"/>.\n            </summary>\n            <param name=\"random\">Current <see cref=\"T:System.Random\"/>.</param>\n            <param name=\"min\">Minimum.</param>\n            <param name=\"max\">Maximum.</param>\n            <returns>Random <see cref=\"T:System.TimeSpan\"/>.</returns>\n        </member>\n        <member name=\"T:SharpDX.Matrix\">\n            <summary>\n            Represents a 4x4 mathematical matrix.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Matrix.SizeInBytes\">\n            <summary>\n            The size of the <see cref=\"T:SharpDX.Matrix\"/> type, in bytes.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Matrix.Zero\">\n            <summary>\n            A <see cref=\"T:SharpDX.Matrix\"/> with all of its components set to zero.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Matrix.Identity\">\n            <summary>\n            The identity <see cref=\"T:SharpDX.Matrix\"/>.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Matrix.M11\">\n            <summary>\n            Value at row 1 column 1 of the matrix.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Matrix.M12\">\n            <summary>\n            Value at row 1 column 2 of the matrix.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Matrix.M13\">\n            <summary>\n            Value at row 1 column 3 of the matrix.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Matrix.M14\">\n            <summary>\n            Value at row 1 column 4 of the matrix.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Matrix.M21\">\n            <summary>\n            Value at row 2 column 1 of the matrix.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Matrix.M22\">\n            <summary>\n            Value at row 2 column 2 of the matrix.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Matrix.M23\">\n            <summary>\n            Value at row 2 column 3 of the matrix.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Matrix.M24\">\n            <summary>\n            Value at row 2 column 4 of the matrix.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Matrix.M31\">\n            <summary>\n            Value at row 3 column 1 of the matrix.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Matrix.M32\">\n            <summary>\n            Value at row 3 column 2 of the matrix.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Matrix.M33\">\n            <summary>\n            Value at row 3 column 3 of the matrix.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Matrix.M34\">\n            <summary>\n            Value at row 3 column 4 of the matrix.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Matrix.M41\">\n            <summary>\n            Value at row 4 column 1 of the matrix.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Matrix.M42\">\n            <summary>\n            Value at row 4 column 2 of the matrix.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Matrix.M43\">\n            <summary>\n            Value at row 4 column 3 of the matrix.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Matrix.M44\">\n            <summary>\n            Value at row 4 column 4 of the matrix.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Matrix.#ctor(System.Single)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Matrix\"/> struct.\n            </summary>\n            <param name=\"value\">The value that will be assigned to all components.</param>\n        </member>\n        <member name=\"M:SharpDX.Matrix.#ctor(System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Matrix\"/> struct.\n            </summary>\n            <param name=\"M11\">The value to assign at row 1 column 1 of the matrix.</param>\n            <param name=\"M12\">The value to assign at row 1 column 2 of the matrix.</param>\n            <param name=\"M13\">The value to assign at row 1 column 3 of the matrix.</param>\n            <param name=\"M14\">The value to assign at row 1 column 4 of the matrix.</param>\n            <param name=\"M21\">The value to assign at row 2 column 1 of the matrix.</param>\n            <param name=\"M22\">The value to assign at row 2 column 2 of the matrix.</param>\n            <param name=\"M23\">The value to assign at row 2 column 3 of the matrix.</param>\n            <param name=\"M24\">The value to assign at row 2 column 4 of the matrix.</param>\n            <param name=\"M31\">The value to assign at row 3 column 1 of the matrix.</param>\n            <param name=\"M32\">The value to assign at row 3 column 2 of the matrix.</param>\n            <param name=\"M33\">The value to assign at row 3 column 3 of the matrix.</param>\n            <param name=\"M34\">The value to assign at row 3 column 4 of the matrix.</param>\n            <param name=\"M41\">The value to assign at row 4 column 1 of the matrix.</param>\n            <param name=\"M42\">The value to assign at row 4 column 2 of the matrix.</param>\n            <param name=\"M43\">The value to assign at row 4 column 3 of the matrix.</param>\n            <param name=\"M44\">The value to assign at row 4 column 4 of the matrix.</param>\n        </member>\n        <member name=\"M:SharpDX.Matrix.#ctor(System.Single[])\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Matrix\"/> struct.\n            </summary>\n            <param name=\"values\">The values to assign to the components of the matrix. This must be an array with sixteen elements.</param>\n            <exception cref=\"T:System.ArgumentNullException\">Thrown when <paramref name=\"values\"/> is <c>null</c>.</exception>\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">Thrown when <paramref name=\"values\"/> contains more or less than sixteen elements.</exception>\n        </member>\n        <member name=\"M:SharpDX.Matrix.Determinant\">\n            <summary>\n            Calculates the determinant of the matrix.\n            </summary>\n            <returns>The determinant of the matrix.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix.Invert\">\n            <summary>\n            Inverts the matrix.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Matrix.Transpose\">\n            <summary>\n            Transposes the matrix.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Matrix.Orthogonalize\">\n            <summary>\n            Orthogonalizes the specified matrix.\n            </summary>\n            <remarks>\n            <para>Orthogonalization is the process of making all rows orthogonal to each other. This\n            means that any given row in the matrix will be orthogonal to any other given row in the\n            matrix.</para>\n            <para>Because this method uses the modified Gram-Schmidt process, the resulting matrix\n            tends to be numerically unstable. The numeric stability decreases according to the rows\n            so that the first row is the most stable and the last row is the least stable.</para>\n            <para>This operation is performed on the rows of the matrix rather than the columns.\n            If you wish for this operation to be performed on the columns, first transpose the\n            input and than transpose the output.</para>\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Matrix.Orthonormalize\">\n            <summary>\n            Orthonormalizes the specified matrix.\n            </summary>\n            <remarks>\n            <para>Orthonormalization is the process of making all rows and columns orthogonal to each\n            other and making all rows and columns of unit length. This means that any given row will\n            be orthogonal to any other given row and any given column will be orthogonal to any other\n            given column. Any given row will not be orthogonal to any given column. Every row and every\n            column will be of unit length.</para>\n            <para>Because this method uses the modified Gram-Schmidt process, the resulting matrix\n            tends to be numerically unstable. The numeric stability decreases according to the rows\n            so that the first row is the most stable and the last row is the least stable.</para>\n            <para>This operation is performed on the rows of the matrix rather than the columns.\n            If you wish for this operation to be performed on the columns, first transpose the\n            input and than transpose the output.</para>\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Matrix.DecomposeQR(SharpDX.Matrix@,SharpDX.Matrix@)\">\n            <summary>\n            Decomposes a matrix into an orthonormalized matrix Q and a right traingular matrix R.\n            </summary>\n            <param name=\"Q\">When the method completes, contains the orthonormalized matrix of the decomposition.</param>\n            <param name=\"R\">When the method completes, contains the right triangular matrix of the decomposition.</param>\n        </member>\n        <member name=\"M:SharpDX.Matrix.DecomposeLQ(SharpDX.Matrix@,SharpDX.Matrix@)\">\n            <summary>\n            Decomposes a matrix into a lower triangular matrix L and an orthonormalized matrix Q.\n            </summary>\n            <param name=\"L\">When the method completes, contains the lower triangular matrix of the decomposition.</param>\n            <param name=\"Q\">When the method completes, contains the orthonormalized matrix of the decomposition.</param>\n        </member>\n        <member name=\"M:SharpDX.Matrix.Decompose(SharpDX.Vector3@,SharpDX.Quaternion@,SharpDX.Vector3@)\">\n            <summary>\n            Decomposes a matrix into a scale, rotation, and translation.\n            </summary>\n            <param name=\"scale\">When the method completes, contains the scaling component of the decomposed matrix.</param>\n            <param name=\"rotation\">When the method completes, contains the rtoation component of the decomposed matrix.</param>\n            <param name=\"translation\">When the method completes, contains the translation component of the decomposed matrix.</param>\n            <remarks>\n            This method is designed to decompose an SRT transformation matrix only.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Matrix.ExchangeRows(System.Int32,System.Int32)\">\n            <summary>\n            Exchanges two rows in the matrix.\n            </summary>\n            <param name=\"firstRow\">The first row to exchange. This is an index of the row starting at zero.</param>\n            <param name=\"secondRow\">The second row to exchange. This is an index of the row starting at zero.</param>\n        </member>\n        <member name=\"M:SharpDX.Matrix.ExchangeColumns(System.Int32,System.Int32)\">\n            <summary>\n            \n            </summary>\n            <param name=\"firstColumn\"></param>\n            <param name=\"secondColumn\"></param>\n        </member>\n        <member name=\"M:SharpDX.Matrix.ToArray\">\n            <summary>\n            Creates an array containing the elements of the matrix.\n            </summary>\n            <returns>A sixteen-element array containing the components of the matrix.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix.Add(SharpDX.Matrix@,SharpDX.Matrix@,SharpDX.Matrix@)\">\n            <summary>\n            Determines the sum of two matrices.\n            </summary>\n            <param name=\"left\">The first matrix to add.</param>\n            <param name=\"right\">The second matrix to add.</param>\n            <param name=\"result\">When the method completes, contains the sum of the two matrices.</param>\n        </member>\n        <member name=\"M:SharpDX.Matrix.Add(SharpDX.Matrix,SharpDX.Matrix)\">\n            <summary>\n            Determines the sum of two matrices.\n            </summary>\n            <param name=\"left\">The first matrix to add.</param>\n            <param name=\"right\">The second matrix to add.</param>\n            <returns>The sum of the two matrices.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix.Subtract(SharpDX.Matrix@,SharpDX.Matrix@,SharpDX.Matrix@)\">\n            <summary>\n            Determines the difference between two matrices.\n            </summary>\n            <param name=\"left\">The first matrix to subtract.</param>\n            <param name=\"right\">The second matrix to subtract.</param>\n            <param name=\"result\">When the method completes, contains the difference between the two matrices.</param>\n        </member>\n        <member name=\"M:SharpDX.Matrix.Subtract(SharpDX.Matrix,SharpDX.Matrix)\">\n            <summary>\n            Determines the difference between two matrices.\n            </summary>\n            <param name=\"left\">The first matrix to subtract.</param>\n            <param name=\"right\">The second matrix to subtract.</param>\n            <returns>The difference between the two matrices.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix.Multiply(SharpDX.Matrix@,System.Single,SharpDX.Matrix@)\">\n            <summary>\n            Scales a matrix by the given value.\n            </summary>\n            <param name=\"left\">The matrix to scale.</param>\n            <param name=\"right\">The amount by which to scale.</param>\n            <param name=\"result\">When the method completes, contains the scaled matrix.</param>\n        </member>\n        <member name=\"M:SharpDX.Matrix.Multiply(SharpDX.Matrix,System.Single)\">\n            <summary>\n            Scales a matrix by the given value.\n            </summary>\n            <param name=\"left\">The matrix to scale.</param>\n            <param name=\"right\">The amount by which to scale.</param>\n            <returns>The scaled matrix.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix.Multiply(SharpDX.Matrix@,SharpDX.Matrix@,SharpDX.Matrix@)\">\n            <summary>\n            Determines the product of two matrices.\n            </summary>\n            <param name=\"left\">The first matrix to multiply.</param>\n            <param name=\"right\">The second matrix to multiply.</param>\n            <param name=\"result\">The product of the two matrices.</param>\n        </member>\n        <member name=\"M:SharpDX.Matrix.Multiply(SharpDX.Matrix,SharpDX.Matrix)\">\n            <summary>\n            Determines the product of two matrices.\n            </summary>\n            <param name=\"left\">The first matrix to multiply.</param>\n            <param name=\"right\">The second matrix to multiply.</param>\n            <returns>The product of the two matrices.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix.Divide(SharpDX.Matrix@,System.Single,SharpDX.Matrix@)\">\n            <summary>\n            Scales a matrix by the given value.\n            </summary>\n            <param name=\"left\">The matrix to scale.</param>\n            <param name=\"right\">The amount by which to scale.</param>\n            <param name=\"result\">When the method completes, contains the scaled matrix.</param>\n        </member>\n        <member name=\"M:SharpDX.Matrix.Divide(SharpDX.Matrix,System.Single)\">\n            <summary>\n            Scales a matrix by the given value.\n            </summary>\n            <param name=\"left\">The matrix to scale.</param>\n            <param name=\"right\">The amount by which to scale.</param>\n            <returns>The scaled matrix.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix.Divide(SharpDX.Matrix@,SharpDX.Matrix@,SharpDX.Matrix@)\">\n            <summary>\n            Determines the quotient of two matrices.\n            </summary>\n            <param name=\"left\">The first matrix to divide.</param>\n            <param name=\"right\">The second matrix to divide.</param>\n            <param name=\"result\">When the method completes, contains the quotient of the two matrices.</param>\n        </member>\n        <member name=\"M:SharpDX.Matrix.Divide(SharpDX.Matrix,SharpDX.Matrix)\">\n            <summary>\n            Determines the quotient of two matrices.\n            </summary>\n            <param name=\"left\">The first matrix to divide.</param>\n            <param name=\"right\">The second matrix to divide.</param>\n            <returns>The quotient of the two matrices.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix.Exponent(SharpDX.Matrix@,System.Int32,SharpDX.Matrix@)\">\n            <summary>\n            Performs the exponential operation on a matrix.\n            </summary>\n            <param name=\"value\">The matrix to perform the operation on.</param>\n            <param name=\"exponent\">The exponent to raise the matrix to.</param>\n            <param name=\"result\">When the method completes, contains the exponential matrix.</param>\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">Thrown when the <paramref name=\"exponent\"/> is negative.</exception>\n        </member>\n        <member name=\"M:SharpDX.Matrix.Exponent(SharpDX.Matrix,System.Int32)\">\n            <summary>\n            Performs the exponential operation on a matrix.\n            </summary>\n            <param name=\"value\">The matrix to perform the operation on.</param>\n            <param name=\"exponent\">The exponent to raise the matrix to.</param>\n            <returns>The exponential matrix.</returns>\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">Thrown when the <paramref name=\"exponent\"/> is negative.</exception>\n        </member>\n        <member name=\"M:SharpDX.Matrix.Negate(SharpDX.Matrix@,SharpDX.Matrix@)\">\n            <summary>\n            Negates a matrix.\n            </summary>\n            <param name=\"value\">The matrix to be negated.</param>\n            <param name=\"result\">When the method completes, contains the negated matrix.</param>\n        </member>\n        <member name=\"M:SharpDX.Matrix.Negate(SharpDX.Matrix)\">\n            <summary>\n            Negates a matrix.\n            </summary>\n            <param name=\"value\">The matrix to be negated.</param>\n            <returns>The negated matrix.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix.Lerp(SharpDX.Matrix@,SharpDX.Matrix@,System.Single,SharpDX.Matrix@)\">\n            <summary>\n            Performs a linear interpolation between two matricies.\n            </summary>\n            <param name=\"start\">Start matrix.</param>\n            <param name=\"end\">End matrix.</param>\n            <param name=\"amount\">Value between 0 and 1 indicating the weight of <paramref name=\"end\"/>.</param>\n            <param name=\"result\">When the method completes, contains the linear interpolation of the two matricies.</param>\n            <remarks>\n            This method performs the linear interpolation based on the following formula.\n            <code>start + (end - start) * amount</code>\n            Passing <paramref name=\"amount\"/> a value of 0 will cause <paramref name=\"start\"/> to be returned; a value of 1 will cause <paramref name=\"end\"/> to be returned. \n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Matrix.Lerp(SharpDX.Matrix,SharpDX.Matrix,System.Single)\">\n            <summary>\n            Performs a linear interpolation between two matricies.\n            </summary>\n            <param name=\"start\">Start matrix.</param>\n            <param name=\"end\">End matrix.</param>\n            <param name=\"amount\">Value between 0 and 1 indicating the weight of <paramref name=\"end\"/>.</param>\n            <returns>The linear interpolation of the two matrices.</returns>\n            <remarks>\n            This method performs the linear interpolation based on the following formula.\n            <code>start + (end - start) * amount</code>\n            Passing <paramref name=\"amount\"/> a value of 0 will cause <paramref name=\"start\"/> to be returned; a value of 1 will cause <paramref name=\"end\"/> to be returned. \n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Matrix.SmoothStep(SharpDX.Matrix@,SharpDX.Matrix@,System.Single,SharpDX.Matrix@)\">\n            <summary>\n            Performs a cubic interpolation between two matricies.\n            </summary>\n            <param name=\"start\">Start matrix.</param>\n            <param name=\"end\">End matrix.</param>\n            <param name=\"amount\">Value between 0 and 1 indicating the weight of <paramref name=\"end\"/>.</param>\n            <param name=\"result\">When the method completes, contains the cubic interpolation of the two matrices.</param>\n        </member>\n        <member name=\"M:SharpDX.Matrix.SmoothStep(SharpDX.Matrix,SharpDX.Matrix,System.Single)\">\n            <summary>\n            Performs a cubic interpolation between two matrices.\n            </summary>\n            <param name=\"start\">Start matrix.</param>\n            <param name=\"end\">End matrix.</param>\n            <param name=\"amount\">Value between 0 and 1 indicating the weight of <paramref name=\"end\"/>.</param>\n            <returns>The cubic interpolation of the two matrices.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix.Transpose(SharpDX.Matrix@,SharpDX.Matrix@)\">\n            <summary>\n            Calculates the transpose of the specified matrix.\n            </summary>\n            <param name=\"value\">The matrix whose transpose is to be calculated.</param>\n            <param name=\"result\">When the method completes, contains the transpose of the specified matrix.</param>\n        </member>\n        <member name=\"M:SharpDX.Matrix.TransposeByRef(SharpDX.Matrix@,SharpDX.Matrix@)\">\n            <summary>\n            Calculates the transpose of the specified matrix.\n            </summary>\n            <param name=\"value\">The matrix whose transpose is to be calculated.</param>\n            <param name=\"result\">When the method completes, contains the transpose of the specified matrix.</param>\n        </member>\n        <member name=\"M:SharpDX.Matrix.Transpose(SharpDX.Matrix)\">\n            <summary>\n            Calculates the transpose of the specified matrix.\n            </summary>\n            <param name=\"value\">The matrix whose transpose is to be calculated.</param>\n            <returns>The transpose of the specified matrix.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix.Invert(SharpDX.Matrix@,SharpDX.Matrix@)\">\n            <summary>\n            Calculates the inverse of the specified matrix.\n            </summary>\n            <param name=\"value\">The matrix whose inverse is to be calculated.</param>\n            <param name=\"result\">When the method completes, contains the inverse of the specified matrix.</param>\n        </member>\n        <member name=\"M:SharpDX.Matrix.Invert(SharpDX.Matrix)\">\n            <summary>\n            Calculates the inverse of the specified matrix.\n            </summary>\n            <param name=\"value\">The matrix whose inverse is to be calculated.</param>\n            <returns>The inverse of the specified matrix.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix.Orthogonalize(SharpDX.Matrix@,SharpDX.Matrix@)\">\n            <summary>\n            Orthogonalizes the specified matrix.\n            </summary>\n            <param name=\"value\">The matrix to orthogonalize.</param>\n            <param name=\"result\">When the method completes, contains the orthogonalized matrix.</param>\n            <remarks>\n            <para>Orthogonalization is the process of making all rows orthogonal to each other. This\n            means that any given row in the matrix will be orthogonal to any other given row in the\n            matrix.</para>\n            <para>Because this method uses the modified Gram-Schmidt process, the resulting matrix\n            tends to be numerically unstable. The numeric stability decreases according to the rows\n            so that the first row is the most stable and the last row is the least stable.</para>\n            <para>This operation is performed on the rows of the matrix rather than the columns.\n            If you wish for this operation to be performed on the columns, first transpose the\n            input and than transpose the output.</para>\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Matrix.Orthogonalize(SharpDX.Matrix)\">\n            <summary>\n            Orthogonalizes the specified matrix.\n            </summary>\n            <param name=\"value\">The matrix to orthogonalize.</param>\n            <returns>The orthogonalized matrix.</returns>\n            <remarks>\n            <para>Orthogonalization is the process of making all rows orthogonal to each other. This\n            means that any given row in the matrix will be orthogonal to any other given row in the\n            matrix.</para>\n            <para>Because this method uses the modified Gram-Schmidt process, the resulting matrix\n            tends to be numerically unstable. The numeric stability decreases according to the rows\n            so that the first row is the most stable and the last row is the least stable.</para>\n            <para>This operation is performed on the rows of the matrix rather than the columns.\n            If you wish for this operation to be performed on the columns, first transpose the\n            input and than transpose the output.</para>\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Matrix.Orthonormalize(SharpDX.Matrix@,SharpDX.Matrix@)\">\n            <summary>\n            Orthonormalizes the specified matrix.\n            </summary>\n            <param name=\"value\">The matrix to orthonormalize.</param>\n            <param name=\"result\">When the method completes, contains the orthonormalized matrix.</param>\n            <remarks>\n            <para>Orthonormalization is the process of making all rows and columns orthogonal to each\n            other and making all rows and columns of unit length. This means that any given row will\n            be orthogonal to any other given row and any given column will be orthogonal to any other\n            given column. Any given row will not be orthogonal to any given column. Every row and every\n            column will be of unit length.</para>\n            <para>Because this method uses the modified Gram-Schmidt process, the resulting matrix\n            tends to be numerically unstable. The numeric stability decreases according to the rows\n            so that the first row is the most stable and the last row is the least stable.</para>\n            <para>This operation is performed on the rows of the matrix rather than the columns.\n            If you wish for this operation to be performed on the columns, first transpose the\n            input and than transpose the output.</para>\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Matrix.Orthonormalize(SharpDX.Matrix)\">\n            <summary>\n            Orthonormalizes the specified matrix.\n            </summary>\n            <param name=\"value\">The matrix to orthonormalize.</param>\n            <returns>The orthonormalized matrix.</returns>\n            <remarks>\n            <para>Orthonormalization is the process of making all rows and columns orthogonal to each\n            other and making all rows and columns of unit length. This means that any given row will\n            be orthogonal to any other given row and any given column will be orthogonal to any other\n            given column. Any given row will not be orthogonal to any given column. Every row and every\n            column will be of unit length.</para>\n            <para>Because this method uses the modified Gram-Schmidt process, the resulting matrix\n            tends to be numerically unstable. The numeric stability decreases according to the rows\n            so that the first row is the most stable and the last row is the least stable.</para>\n            <para>This operation is performed on the rows of the matrix rather than the columns.\n            If you wish for this operation to be performed on the columns, first transpose the\n            input and than transpose the output.</para>\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Matrix.UpperTriangularForm(SharpDX.Matrix@,SharpDX.Matrix@)\">\n            <summary>\n            Brings the matrix into upper triangular form using elementry row operations.\n            </summary>\n            <param name=\"value\">The matrix to put into upper triangular form.</param>\n            <param name=\"result\">When the method completes, contains the upper triangular matrix.</param>\n            <remarks>\n            If the matrix is not invertable (i.e. its determinant is zero) than the result of this\n            method may produce Single.Nan and Single.Inf values. When the matrix represents a system\n            of linear equations, than this often means that either no solution exists or an infinite\n            number of solutions exist.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Matrix.UpperTriangularForm(SharpDX.Matrix)\">\n            <summary>\n            Brings the matrix into upper triangular form using elementry row operations.\n            </summary>\n            <param name=\"value\">The matrix to put into upper triangular form.</param>\n            <returns>The upper triangular matrix.</returns>\n            <remarks>\n            If the matrix is not invertable (i.e. its determinant is zero) than the result of this\n            method may produce Single.Nan and Single.Inf values. When the matrix represents a system\n            of linear equations, than this often means that either no solution exists or an infinite\n            number of solutions exist.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Matrix.LowerTriangularForm(SharpDX.Matrix@,SharpDX.Matrix@)\">\n            <summary>\n            Brings the matrix into lower triangular form using elementry row operations.\n            </summary>\n            <param name=\"value\">The matrix to put into lower triangular form.</param>\n            <param name=\"result\">When the method completes, contains the lower triangular matrix.</param>\n            <remarks>\n            If the matrix is not invertable (i.e. its determinant is zero) than the result of this\n            method may produce Single.Nan and Single.Inf values. When the matrix represents a system\n            of linear equations, than this often means that either no solution exists or an infinite\n            number of solutions exist.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Matrix.LowerTriangularForm(SharpDX.Matrix)\">\n            <summary>\n            Brings the matrix into lower triangular form using elementry row operations.\n            </summary>\n            <param name=\"value\">The matrix to put into lower triangular form.</param>\n            <returns>The lower triangular matrix.</returns>\n            <remarks>\n            If the matrix is not invertable (i.e. its determinant is zero) than the result of this\n            method may produce Single.Nan and Single.Inf values. When the matrix represents a system\n            of linear equations, than this often means that either no solution exists or an infinite\n            number of solutions exist.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Matrix.RowEchelonForm(SharpDX.Matrix@,SharpDX.Matrix@)\">\n            <summary>\n            Brings the matrix into row echelon form using elementry row operations;\n            </summary>\n            <param name=\"value\">The matrix to put into row echelon form.</param>\n            <param name=\"result\">When the method completes, contains the row echelon form of the matrix.</param>\n        </member>\n        <member name=\"M:SharpDX.Matrix.RowEchelonForm(SharpDX.Matrix)\">\n            <summary>\n            Brings the matrix into row echelon form using elementry row operations;\n            </summary>\n            <param name=\"value\">The matrix to put into row echelon form.</param>\n            <returns>When the method completes, contains the row echelon form of the matrix.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix.ReducedRowEchelonForm(SharpDX.Matrix@,SharpDX.Vector4@,SharpDX.Matrix@,SharpDX.Vector4@)\">\n            <summary>\n            Brings the matrix into reduced row echelon form using elementry row operations.\n            </summary>\n            <param name=\"value\">The matrix to put into reduced row echelon form.</param>\n            <param name=\"augment\">The fifth column of the matrix.</param>\n            <param name=\"result\">When the method completes, contains the resultant matrix after the operation.</param>\n            <param name=\"augmentResult\">When the method completes, contains the resultant fifth column of the matrix.</param>\n            <remarks>\n            <para>The fifth column is often called the agumented part of the matrix. This is because the fifth\n            column is really just an extension of the matrix so that there is a place to put all of the\n            non-zero components after the operation is complete.</para>\n            <para>Often times the resultant matrix will the identity matrix or a matrix similar to the identity\n            matrix. Sometimes, however, that is not possible and numbers other than zero and one may appear.</para>\n            <para>This method can be used to solve systems of linear equations. Upon completion of this method,\n            the <paramref name=\"augmentResult\"/> will contain the solution for the system. It is up to the user\n            to analyze both the input and the result to determine if a solution really exists.</para>\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Matrix.Billboard(SharpDX.Vector3@,SharpDX.Vector3@,SharpDX.Vector3@,SharpDX.Vector3@,SharpDX.Matrix@)\">\n            <summary>\n            Creates a spherical billboard that rotates around a specified object position.\n            </summary>\n            <param name=\"objectPosition\">The position of the object around which the billboard will rotate.</param>\n            <param name=\"cameraPosition\">The position of the camera.</param>\n            <param name=\"cameraUpVector\">The up vector of the camera.</param>\n            <param name=\"cameraForwardVector\">The forward vector of the camera.</param>\n            <param name=\"result\">When the method completes, contains the created billboard matrix.</param>\n        </member>\n        <member name=\"M:SharpDX.Matrix.Billboard(SharpDX.Vector3,SharpDX.Vector3,SharpDX.Vector3,SharpDX.Vector3)\">\n            <summary>\n            Creates a spherical billboard that rotates around a specified object position.\n            </summary>\n            <param name=\"objectPosition\">The position of the object around which the billboard will rotate.</param>\n            <param name=\"cameraPosition\">The position of the camera.</param>\n            <param name=\"cameraUpVector\">The up vector of the camera.</param>\n            <param name=\"cameraForwardVector\">The forward vector of the camera.</param>\n            <returns>The created billboard matrix.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix.LookAtLH(SharpDX.Vector3@,SharpDX.Vector3@,SharpDX.Vector3@,SharpDX.Matrix@)\">\n            <summary>\n            Creates a left-handed, look-at matrix.\n            </summary>\n            <param name=\"eye\">The position of the viewer's eye.</param>\n            <param name=\"target\">The camera look-at target.</param>\n            <param name=\"up\">The camera's up vector.</param>\n            <param name=\"result\">When the method completes, contains the created look-at matrix.</param>\n        </member>\n        <member name=\"M:SharpDX.Matrix.LookAtLH(SharpDX.Vector3,SharpDX.Vector3,SharpDX.Vector3)\">\n            <summary>\n            Creates a left-handed, look-at matrix.\n            </summary>\n            <param name=\"eye\">The position of the viewer's eye.</param>\n            <param name=\"target\">The camera look-at target.</param>\n            <param name=\"up\">The camera's up vector.</param>\n            <returns>The created look-at matrix.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix.LookAtRH(SharpDX.Vector3@,SharpDX.Vector3@,SharpDX.Vector3@,SharpDX.Matrix@)\">\n            <summary>\n            Creates a right-handed, look-at matrix.\n            </summary>\n            <param name=\"eye\">The position of the viewer's eye.</param>\n            <param name=\"target\">The camera look-at target.</param>\n            <param name=\"up\">The camera's up vector.</param>\n            <param name=\"result\">When the method completes, contains the created look-at matrix.</param>\n        </member>\n        <member name=\"M:SharpDX.Matrix.LookAtRH(SharpDX.Vector3,SharpDX.Vector3,SharpDX.Vector3)\">\n            <summary>\n            Creates a right-handed, look-at matrix.\n            </summary>\n            <param name=\"eye\">The position of the viewer's eye.</param>\n            <param name=\"target\">The camera look-at target.</param>\n            <param name=\"up\">The camera's up vector.</param>\n            <returns>The created look-at matrix.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix.OrthoLH(System.Single,System.Single,System.Single,System.Single,SharpDX.Matrix@)\">\n            <summary>\n            Creates a left-handed, orthographic projection matrix.\n            </summary>\n            <param name=\"width\">Width of the viewing volume.</param>\n            <param name=\"height\">Height of the viewing volume.</param>\n            <param name=\"znear\">Minimum z-value of the viewing volume.</param>\n            <param name=\"zfar\">Maximum z-value of the viewing volume.</param>\n            <param name=\"result\">When the method completes, contains the created projection matrix.</param>\n        </member>\n        <member name=\"M:SharpDX.Matrix.OrthoLH(System.Single,System.Single,System.Single,System.Single)\">\n            <summary>\n            Creates a left-handed, orthographic projection matrix.\n            </summary>\n            <param name=\"width\">Width of the viewing volume.</param>\n            <param name=\"height\">Height of the viewing volume.</param>\n            <param name=\"znear\">Minimum z-value of the viewing volume.</param>\n            <param name=\"zfar\">Maximum z-value of the viewing volume.</param>\n            <returns>The created projection matrix.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix.OrthoRH(System.Single,System.Single,System.Single,System.Single,SharpDX.Matrix@)\">\n            <summary>\n            Creates a right-handed, orthographic projection matrix.\n            </summary>\n            <param name=\"width\">Width of the viewing volume.</param>\n            <param name=\"height\">Height of the viewing volume.</param>\n            <param name=\"znear\">Minimum z-value of the viewing volume.</param>\n            <param name=\"zfar\">Maximum z-value of the viewing volume.</param>\n            <param name=\"result\">When the method completes, contains the created projection matrix.</param>\n        </member>\n        <member name=\"M:SharpDX.Matrix.OrthoRH(System.Single,System.Single,System.Single,System.Single)\">\n            <summary>\n            Creates a right-handed, orthographic projection matrix.\n            </summary>\n            <param name=\"width\">Width of the viewing volume.</param>\n            <param name=\"height\">Height of the viewing volume.</param>\n            <param name=\"znear\">Minimum z-value of the viewing volume.</param>\n            <param name=\"zfar\">Maximum z-value of the viewing volume.</param>\n            <returns>The created projection matrix.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix.OrthoOffCenterLH(System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,SharpDX.Matrix@)\">\n            <summary>\n            Creates a left-handed, customized orthographic projection matrix.\n            </summary>\n            <param name=\"left\">Minimum x-value of the viewing volume.</param>\n            <param name=\"right\">Maximum x-value of the viewing volume.</param>\n            <param name=\"bottom\">Minimum y-value of the viewing volume.</param>\n            <param name=\"top\">Maximum y-value of the viewing volume.</param>\n            <param name=\"znear\">Minimum z-value of the viewing volume.</param>\n            <param name=\"zfar\">Maximum z-value of the viewing volume.</param>\n            <param name=\"result\">When the method completes, contains the created projection matrix.</param>\n        </member>\n        <member name=\"M:SharpDX.Matrix.OrthoOffCenterLH(System.Single,System.Single,System.Single,System.Single,System.Single,System.Single)\">\n            <summary>\n            Creates a left-handed, customized orthographic projection matrix.\n            </summary>\n            <param name=\"left\">Minimum x-value of the viewing volume.</param>\n            <param name=\"right\">Maximum x-value of the viewing volume.</param>\n            <param name=\"bottom\">Minimum y-value of the viewing volume.</param>\n            <param name=\"top\">Maximum y-value of the viewing volume.</param>\n            <param name=\"znear\">Minimum z-value of the viewing volume.</param>\n            <param name=\"zfar\">Maximum z-value of the viewing volume.</param>\n            <returns>The created projection matrix.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix.OrthoOffCenterRH(System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,SharpDX.Matrix@)\">\n            <summary>\n            Creates a right-handed, customized orthographic projection matrix.\n            </summary>\n            <param name=\"left\">Minimum x-value of the viewing volume.</param>\n            <param name=\"right\">Maximum x-value of the viewing volume.</param>\n            <param name=\"bottom\">Minimum y-value of the viewing volume.</param>\n            <param name=\"top\">Maximum y-value of the viewing volume.</param>\n            <param name=\"znear\">Minimum z-value of the viewing volume.</param>\n            <param name=\"zfar\">Maximum z-value of the viewing volume.</param>\n            <param name=\"result\">When the method completes, contains the created projection matrix.</param>\n        </member>\n        <member name=\"M:SharpDX.Matrix.OrthoOffCenterRH(System.Single,System.Single,System.Single,System.Single,System.Single,System.Single)\">\n            <summary>\n            Creates a right-handed, customized orthographic projection matrix.\n            </summary>\n            <param name=\"left\">Minimum x-value of the viewing volume.</param>\n            <param name=\"right\">Maximum x-value of the viewing volume.</param>\n            <param name=\"bottom\">Minimum y-value of the viewing volume.</param>\n            <param name=\"top\">Maximum y-value of the viewing volume.</param>\n            <param name=\"znear\">Minimum z-value of the viewing volume.</param>\n            <param name=\"zfar\">Maximum z-value of the viewing volume.</param>\n            <returns>The created projection matrix.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix.PerspectiveLH(System.Single,System.Single,System.Single,System.Single,SharpDX.Matrix@)\">\n            <summary>\n            Creates a left-handed, perspective projection matrix.\n            </summary>\n            <param name=\"width\">Width of the viewing volume.</param>\n            <param name=\"height\">Height of the viewing volume.</param>\n            <param name=\"znear\">Minimum z-value of the viewing volume.</param>\n            <param name=\"zfar\">Maximum z-value of the viewing volume.</param>\n            <param name=\"result\">When the method completes, contains the created projection matrix.</param>\n        </member>\n        <member name=\"M:SharpDX.Matrix.PerspectiveLH(System.Single,System.Single,System.Single,System.Single)\">\n            <summary>\n            Creates a left-handed, perspective projection matrix.\n            </summary>\n            <param name=\"width\">Width of the viewing volume.</param>\n            <param name=\"height\">Height of the viewing volume.</param>\n            <param name=\"znear\">Minimum z-value of the viewing volume.</param>\n            <param name=\"zfar\">Maximum z-value of the viewing volume.</param>\n            <returns>The created projection matrix.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix.PerspectiveRH(System.Single,System.Single,System.Single,System.Single,SharpDX.Matrix@)\">\n            <summary>\n            Creates a right-handed, perspective projection matrix.\n            </summary>\n            <param name=\"width\">Width of the viewing volume.</param>\n            <param name=\"height\">Height of the viewing volume.</param>\n            <param name=\"znear\">Minimum z-value of the viewing volume.</param>\n            <param name=\"zfar\">Maximum z-value of the viewing volume.</param>\n            <param name=\"result\">When the method completes, contains the created projection matrix.</param>\n        </member>\n        <member name=\"M:SharpDX.Matrix.PerspectiveRH(System.Single,System.Single,System.Single,System.Single)\">\n            <summary>\n            Creates a right-handed, perspective projection matrix.\n            </summary>\n            <param name=\"width\">Width of the viewing volume.</param>\n            <param name=\"height\">Height of the viewing volume.</param>\n            <param name=\"znear\">Minimum z-value of the viewing volume.</param>\n            <param name=\"zfar\">Maximum z-value of the viewing volume.</param>\n            <returns>The created projection matrix.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix.PerspectiveFovLH(System.Single,System.Single,System.Single,System.Single,SharpDX.Matrix@)\">\n            <summary>\n            Creates a left-handed, perspective projection matrix based on a field of view.\n            </summary>\n            <param name=\"fov\">Field of view in the y direction, in radians.</param>\n            <param name=\"aspect\">Aspect ratio, defined as view space width divided by height.</param>\n            <param name=\"znear\">Minimum z-value of the viewing volume.</param>\n            <param name=\"zfar\">Maximum z-value of the viewing volume.</param>\n            <param name=\"result\">When the method completes, contains the created projection matrix.</param>\n        </member>\n        <member name=\"M:SharpDX.Matrix.PerspectiveFovLH(System.Single,System.Single,System.Single,System.Single)\">\n            <summary>\n            Creates a left-handed, perspective projection matrix based on a field of view.\n            </summary>\n            <param name=\"fov\">Field of view in the y direction, in radians.</param>\n            <param name=\"aspect\">Aspect ratio, defined as view space width divided by height.</param>\n            <param name=\"znear\">Minimum z-value of the viewing volume.</param>\n            <param name=\"zfar\">Maximum z-value of the viewing volume.</param>\n            <returns>The created projection matrix.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix.PerspectiveFovRH(System.Single,System.Single,System.Single,System.Single,SharpDX.Matrix@)\">\n            <summary>\n            Creates a right-handed, perspective projection matrix based on a field of view.\n            </summary>\n            <param name=\"fov\">Field of view in the y direction, in radians.</param>\n            <param name=\"aspect\">Aspect ratio, defined as view space width divided by height.</param>\n            <param name=\"znear\">Minimum z-value of the viewing volume.</param>\n            <param name=\"zfar\">Maximum z-value of the viewing volume.</param>\n            <param name=\"result\">When the method completes, contains the created projection matrix.</param>\n        </member>\n        <member name=\"M:SharpDX.Matrix.PerspectiveFovRH(System.Single,System.Single,System.Single,System.Single)\">\n            <summary>\n            Creates a right-handed, perspective projection matrix based on a field of view.\n            </summary>\n            <param name=\"fov\">Field of view in the y direction, in radians.</param>\n            <param name=\"aspect\">Aspect ratio, defined as view space width divided by height.</param>\n            <param name=\"znear\">Minimum z-value of the viewing volume.</param>\n            <param name=\"zfar\">Maximum z-value of the viewing volume.</param>\n            <returns>The created projection matrix.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix.PerspectiveOffCenterLH(System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,SharpDX.Matrix@)\">\n            <summary>\n            Creates a left-handed, customized perspective projection matrix.\n            </summary>\n            <param name=\"left\">Minimum x-value of the viewing volume.</param>\n            <param name=\"right\">Maximum x-value of the viewing volume.</param>\n            <param name=\"bottom\">Minimum y-value of the viewing volume.</param>\n            <param name=\"top\">Maximum y-value of the viewing volume.</param>\n            <param name=\"znear\">Minimum z-value of the viewing volume.</param>\n            <param name=\"zfar\">Maximum z-value of the viewing volume.</param>\n            <param name=\"result\">When the method completes, contains the created projection matrix.</param>\n        </member>\n        <member name=\"M:SharpDX.Matrix.PerspectiveOffCenterLH(System.Single,System.Single,System.Single,System.Single,System.Single,System.Single)\">\n            <summary>\n            Creates a left-handed, customized perspective projection matrix.\n            </summary>\n            <param name=\"left\">Minimum x-value of the viewing volume.</param>\n            <param name=\"right\">Maximum x-value of the viewing volume.</param>\n            <param name=\"bottom\">Minimum y-value of the viewing volume.</param>\n            <param name=\"top\">Maximum y-value of the viewing volume.</param>\n            <param name=\"znear\">Minimum z-value of the viewing volume.</param>\n            <param name=\"zfar\">Maximum z-value of the viewing volume.</param>\n            <returns>The created projection matrix.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix.PerspectiveOffCenterRH(System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,SharpDX.Matrix@)\">\n            <summary>\n            Creates a right-handed, customized perspective projection matrix.\n            </summary>\n            <param name=\"left\">Minimum x-value of the viewing volume.</param>\n            <param name=\"right\">Maximum x-value of the viewing volume.</param>\n            <param name=\"bottom\">Minimum y-value of the viewing volume.</param>\n            <param name=\"top\">Maximum y-value of the viewing volume.</param>\n            <param name=\"znear\">Minimum z-value of the viewing volume.</param>\n            <param name=\"zfar\">Maximum z-value of the viewing volume.</param>\n            <param name=\"result\">When the method completes, contains the created projection matrix.</param>\n        </member>\n        <member name=\"M:SharpDX.Matrix.PerspectiveOffCenterRH(System.Single,System.Single,System.Single,System.Single,System.Single,System.Single)\">\n            <summary>\n            Creates a right-handed, customized perspective projection matrix.\n            </summary>\n            <param name=\"left\">Minimum x-value of the viewing volume.</param>\n            <param name=\"right\">Maximum x-value of the viewing volume.</param>\n            <param name=\"bottom\">Minimum y-value of the viewing volume.</param>\n            <param name=\"top\">Maximum y-value of the viewing volume.</param>\n            <param name=\"znear\">Minimum z-value of the viewing volume.</param>\n            <param name=\"zfar\">Maximum z-value of the viewing volume.</param>\n            <returns>The created projection matrix.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix.Reflection(SharpDX.Plane@,SharpDX.Matrix@)\">\n            <summary>\n            Builds a matrix that can be used to reflect vectors about a plane.\n            </summary>\n            <param name=\"plane\">The plane for which the reflection occurs. This parameter is assumed to be normalized.</param>\n            <param name=\"result\">When the method completes, contains the reflection matrix.</param>\n        </member>\n        <member name=\"M:SharpDX.Matrix.Reflection(SharpDX.Plane)\">\n            <summary>\n            Builds a matrix that can be used to reflect vectors about a plane.\n            </summary>\n            <param name=\"plane\">The plane for which the reflection occurs. This parameter is assumed to be normalized.</param>\n            <returns>The reflection matrix.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix.Shadow(SharpDX.Vector4@,SharpDX.Plane@,SharpDX.Matrix@)\">\n            <summary>\n            Creates a matrix that flattens geometry into a shadow.\n            </summary>\n            <param name=\"light\">The light direction. If the W component is 0, the light is directional light; if the\n            W component is 1, the light is a point light.</param>\n            <param name=\"plane\">The plane onto which to project the geometry as a shadow. This parameter is assumed to be normalized.</param>\n            <param name=\"result\">When the method completes, contains the shadow matrix.</param>\n        </member>\n        <member name=\"M:SharpDX.Matrix.Shadow(SharpDX.Vector4,SharpDX.Plane)\">\n            <summary>\n            Creates a matrix that flattens geometry into a shadow.\n            </summary>\n            <param name=\"light\">The light direction. If the W component is 0, the light is directional light; if the\n            W component is 1, the light is a point light.</param>\n            <param name=\"plane\">The plane onto which to project the geometry as a shadow. This parameter is assumed to be normalized.</param>\n            <returns>The shadow matrix.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix.Scaling(SharpDX.Vector3@,SharpDX.Matrix@)\">\n            <summary>\n            Creates a matrix that scales along the x-axis, y-axis, and y-axis.\n            </summary>\n            <param name=\"scale\">Scaling factor for all three axes.</param>\n            <param name=\"result\">When the method completes, contains the created scaling matrix.</param>\n        </member>\n        <member name=\"M:SharpDX.Matrix.Scaling(SharpDX.Vector3)\">\n            <summary>\n            Creates a matrix that scales along the x-axis, y-axis, and y-axis.\n            </summary>\n            <param name=\"scale\">Scaling factor for all three axes.</param>\n            <returns>The created scaling matrix.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix.Scaling(System.Single,System.Single,System.Single,SharpDX.Matrix@)\">\n            <summary>\n            Creates a matrix that scales along the x-axis, y-axis, and y-axis.\n            </summary>\n            <param name=\"x\">Scaling factor that is applied along the x-axis.</param>\n            <param name=\"y\">Scaling factor that is applied along the y-axis.</param>\n            <param name=\"z\">Scaling factor that is applied along the z-axis.</param>\n            <param name=\"result\">When the method completes, contains the created scaling matrix.</param>\n        </member>\n        <member name=\"M:SharpDX.Matrix.Scaling(System.Single,System.Single,System.Single)\">\n            <summary>\n            Creates a matrix that scales along the x-axis, y-axis, and y-axis.\n            </summary>\n            <param name=\"x\">Scaling factor that is applied along the x-axis.</param>\n            <param name=\"y\">Scaling factor that is applied along the y-axis.</param>\n            <param name=\"z\">Scaling factor that is applied along the z-axis.</param>\n            <returns>The created scaling matrix.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix.Scaling(System.Single,SharpDX.Matrix@)\">\n            <summary>\n            Creates a matrix that uniformally scales along all three axis.\n            </summary>\n            <param name=\"scale\">The uniform scale that is applied along all axis.</param>\n            <param name=\"result\">When the method completes, contains the created scaling matrix.</param>\n        </member>\n        <member name=\"M:SharpDX.Matrix.Scaling(System.Single)\">\n            <summary>\n            Creates a matrix that uniformally scales along all three axis.\n            </summary>\n            <param name=\"scale\">The uniform scale that is applied along all axis.</param>\n            <returns>The created scaling matrix.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix.RotationX(System.Single,SharpDX.Matrix@)\">\n            <summary>\n            Creates a matrix that rotates around the x-axis.\n            </summary>\n            <param name=\"angle\">Angle of rotation in radians. Angles are measured clockwise when looking along the rotation axis toward the origin.</param>\n            <param name=\"result\">When the method completes, contains the created rotation matrix.</param>\n        </member>\n        <member name=\"M:SharpDX.Matrix.RotationX(System.Single)\">\n            <summary>\n            Creates a matrix that rotates around the x-axis.\n            </summary>\n            <param name=\"angle\">Angle of rotation in radians. Angles are measured clockwise when looking along the rotation axis toward the origin.</param>\n            <returns>The created rotation matrix.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix.RotationY(System.Single,SharpDX.Matrix@)\">\n            <summary>\n            Creates a matrix that rotates around the y-axis.\n            </summary>\n            <param name=\"angle\">Angle of rotation in radians. Angles are measured clockwise when looking along the rotation axis toward the origin.</param>\n            <param name=\"result\">When the method completes, contains the created rotation matrix.</param>\n        </member>\n        <member name=\"M:SharpDX.Matrix.RotationY(System.Single)\">\n            <summary>\n            Creates a matrix that rotates around the y-axis.\n            </summary>\n            <param name=\"angle\">Angle of rotation in radians. Angles are measured clockwise when looking along the rotation axis toward the origin.</param>\n            <returns>The created rotation matrix.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix.RotationZ(System.Single,SharpDX.Matrix@)\">\n            <summary>\n            Creates a matrix that rotates around the z-axis.\n            </summary>\n            <param name=\"angle\">Angle of rotation in radians. Angles are measured clockwise when looking along the rotation axis toward the origin.</param>\n            <param name=\"result\">When the method completes, contains the created rotation matrix.</param>\n        </member>\n        <member name=\"M:SharpDX.Matrix.RotationZ(System.Single)\">\n            <summary>\n            Creates a matrix that rotates around the z-axis.\n            </summary>\n            <param name=\"angle\">Angle of rotation in radians. Angles are measured clockwise when looking along the rotation axis toward the origin.</param>\n            <returns>The created rotation matrix.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix.RotationAxis(SharpDX.Vector3@,System.Single,SharpDX.Matrix@)\">\n            <summary>\n            Creates a matrix that rotates around an arbitary axis.\n            </summary>\n            <param name=\"axis\">The axis around which to rotate. This parameter is assumed to be normalized.</param>\n            <param name=\"angle\">Angle of rotation in radians. Angles are measured clockwise when looking along the rotation axis toward the origin.</param>\n            <param name=\"result\">When the method completes, contains the created rotation matrix.</param>\n        </member>\n        <member name=\"M:SharpDX.Matrix.RotationAxis(SharpDX.Vector3,System.Single)\">\n            <summary>\n            Creates a matrix that rotates around an arbitary axis.\n            </summary>\n            <param name=\"axis\">The axis around which to rotate. This parameter is assumed to be normalized.</param>\n            <param name=\"angle\">Angle of rotation in radians. Angles are measured clockwise when looking along the rotation axis toward the origin.</param>\n            <returns>The created rotation matrix.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix.RotationQuaternion(SharpDX.Quaternion@,SharpDX.Matrix@)\">\n            <summary>\n            Creates a rotation matrix from a quaternion.\n            </summary>\n            <param name=\"rotation\">The quaternion to use to build the matrix.</param>\n            <param name=\"result\">The created rotation matrix.</param>\n        </member>\n        <member name=\"M:SharpDX.Matrix.RotationQuaternion(SharpDX.Quaternion)\">\n            <summary>\n            Creates a rotation matrix from a quaternion.\n            </summary>\n            <param name=\"rotation\">The quaternion to use to build the matrix.</param>\n            <returns>The created rotation matrix.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix.RotationYawPitchRoll(System.Single,System.Single,System.Single,SharpDX.Matrix@)\">\n            <summary>\n            Creates a rotation matrix with a specified yaw, pitch, and roll.\n            </summary>\n            <param name=\"yaw\">Yaw around the y-axis, in radians.</param>\n            <param name=\"pitch\">Pitch around the x-axis, in radians.</param>\n            <param name=\"roll\">Roll around the z-axis, in radians.</param>\n            <param name=\"result\">When the method completes, contains the created rotation matrix.</param>\n        </member>\n        <member name=\"M:SharpDX.Matrix.RotationYawPitchRoll(System.Single,System.Single,System.Single)\">\n            <summary>\n            Creates a rotation matrix with a specified yaw, pitch, and roll.\n            </summary>\n            <param name=\"yaw\">Yaw around the y-axis, in radians.</param>\n            <param name=\"pitch\">Pitch around the x-axis, in radians.</param>\n            <param name=\"roll\">Roll around the z-axis, in radians.</param>\n            <returns>The created rotation matrix.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix.Translation(SharpDX.Vector3@,SharpDX.Matrix@)\">\n            <summary>\n            Creates a translation matrix using the specified offsets.\n            </summary>\n            <param name=\"value\">The offset for all three coordinate planes.</param>\n            <param name=\"result\">When the method completes, contains the created translation matrix.</param>\n        </member>\n        <member name=\"M:SharpDX.Matrix.Translation(SharpDX.Vector3)\">\n            <summary>\n            Creates a translation matrix using the specified offsets.\n            </summary>\n            <param name=\"value\">The offset for all three coordinate planes.</param>\n            <returns>The created translation matrix.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix.Translation(System.Single,System.Single,System.Single,SharpDX.Matrix@)\">\n            <summary>\n            Creates a translation matrix using the specified offsets.\n            </summary>\n            <param name=\"x\">X-coordinate offset.</param>\n            <param name=\"y\">Y-coordinate offset.</param>\n            <param name=\"z\">Z-coordinate offset.</param>\n            <param name=\"result\">When the method completes, contains the created translation matrix.</param>\n        </member>\n        <member name=\"M:SharpDX.Matrix.Translation(System.Single,System.Single,System.Single)\">\n            <summary>\n            Creates a translation matrix using the specified offsets.\n            </summary>\n            <param name=\"x\">X-coordinate offset.</param>\n            <param name=\"y\">Y-coordinate offset.</param>\n            <param name=\"z\">Z-coordinate offset.</param>\n            <returns>The created translation matrix.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix.AffineTransformation(System.Single,SharpDX.Quaternion@,SharpDX.Vector3@,SharpDX.Matrix@)\">\n            <summary>\n            Creates a 3D affine transformation matrix.\n            </summary>\n            <param name=\"scaling\">Scaling factor.</param>\n            <param name=\"rotation\">The rotation of the transformation.</param>\n            <param name=\"translation\">The translation factor of the transformation.</param>\n            <param name=\"result\">When the method completes, contains the created affine transformation matrix.</param>\n        </member>\n        <member name=\"M:SharpDX.Matrix.AffineTransformation(System.Single,SharpDX.Quaternion,SharpDX.Vector3)\">\n            <summary>\n            Creates a 3D affine transformation matrix.\n            </summary>\n            <param name=\"scaling\">Scaling factor.</param>\n            <param name=\"rotation\">The rotation of the transformation.</param>\n            <param name=\"translation\">The translation factor of the transformation.</param>\n            <returns>The created affine transformation matrix.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix.AffineTransformation(System.Single,SharpDX.Vector3@,SharpDX.Quaternion@,SharpDX.Vector3@,SharpDX.Matrix@)\">\n            <summary>\n            Creates a 3D affine transformation matrix.\n            </summary>\n            <param name=\"scaling\">Scaling factor.</param>\n            <param name=\"rotationCenter\">The center of the rotation.</param>\n            <param name=\"rotation\">The rotation of the transformation.</param>\n            <param name=\"translation\">The translation factor of the transformation.</param>\n            <param name=\"result\">When the method completes, contains the created affine transformation matrix.</param>\n        </member>\n        <member name=\"M:SharpDX.Matrix.AffineTransformation(System.Single,SharpDX.Vector3,SharpDX.Quaternion,SharpDX.Vector3)\">\n            <summary>\n            Creates a 3D affine transformation matrix.\n            </summary>\n            <param name=\"scaling\">Scaling factor.</param>\n            <param name=\"rotationCenter\">The center of the rotation.</param>\n            <param name=\"rotation\">The rotation of the transformation.</param>\n            <param name=\"translation\">The translation factor of the transformation.</param>\n            <returns>The created affine transformation matrix.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix.AffineTransformation2D(System.Single,System.Single,SharpDX.Vector2@,SharpDX.Matrix@)\">\n            <summary>\n            Creates a 2D affine transformation matrix.\n            </summary>\n            <param name=\"scaling\">Scaling factor.</param>\n            <param name=\"rotation\">The rotation of the transformation.</param>\n            <param name=\"translation\">The translation factor of the transformation.</param>\n            <param name=\"result\">When the method completes, contains the created affine transformation matrix.</param>\n        </member>\n        <member name=\"M:SharpDX.Matrix.AffineTransformation2D(System.Single,System.Single,SharpDX.Vector2)\">\n            <summary>\n            Creates a 2D affine transformation matrix.\n            </summary>\n            <param name=\"scaling\">Scaling factor.</param>\n            <param name=\"rotation\">The rotation of the transformation.</param>\n            <param name=\"translation\">The translation factor of the transformation.</param>\n            <returns>The created affine transformation matrix.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix.AffineTransformation2D(System.Single,SharpDX.Vector2@,System.Single,SharpDX.Vector2@,SharpDX.Matrix@)\">\n            <summary>\n            Creates a 2D affine transformation matrix.\n            </summary>\n            <param name=\"scaling\">Scaling factor.</param>\n            <param name=\"rotationCenter\">The center of the rotation.</param>\n            <param name=\"rotation\">The rotation of the transformation.</param>\n            <param name=\"translation\">The translation factor of the transformation.</param>\n            <param name=\"result\">When the method completes, contains the created affine transformation matrix.</param>\n        </member>\n        <member name=\"M:SharpDX.Matrix.AffineTransformation2D(System.Single,SharpDX.Vector2,System.Single,SharpDX.Vector2)\">\n            <summary>\n            Creates a 2D affine transformation matrix.\n            </summary>\n            <param name=\"scaling\">Scaling factor.</param>\n            <param name=\"rotationCenter\">The center of the rotation.</param>\n            <param name=\"rotation\">The rotation of the transformation.</param>\n            <param name=\"translation\">The translation factor of the transformation.</param>\n            <returns>The created affine transformation matrix.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix.Transformation(SharpDX.Vector3@,SharpDX.Quaternion@,SharpDX.Vector3@,SharpDX.Vector3@,SharpDX.Quaternion@,SharpDX.Vector3@,SharpDX.Matrix@)\">\n            <summary>\n            Creates a transformation matrix.\n            </summary>\n            <param name=\"scalingCenter\">Center point of the scaling operation.</param>\n            <param name=\"scalingRotation\">Scaling rotation amount.</param>\n            <param name=\"scaling\">Scaling factor.</param>\n            <param name=\"rotationCenter\">The center of the rotation.</param>\n            <param name=\"rotation\">The rotation of the transformation.</param>\n            <param name=\"translation\">The translation factor of the transformation.</param>\n            <param name=\"result\">When the method completes, contains the created transformation matrix.</param>\n        </member>\n        <member name=\"M:SharpDX.Matrix.Transformation(SharpDX.Vector3,SharpDX.Quaternion,SharpDX.Vector3,SharpDX.Vector3,SharpDX.Quaternion,SharpDX.Vector3)\">\n            <summary>\n            Creates a transformation matrix.\n            </summary>\n            <param name=\"scalingCenter\">Center point of the scaling operation.</param>\n            <param name=\"scalingRotation\">Scaling rotation amount.</param>\n            <param name=\"scaling\">Scaling factor.</param>\n            <param name=\"rotationCenter\">The center of the rotation.</param>\n            <param name=\"rotation\">The rotation of the transformation.</param>\n            <param name=\"translation\">The translation factor of the transformation.</param>\n            <returns>The created transformation matrix.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix.Transformation2D(SharpDX.Vector2@,System.Single,SharpDX.Vector2@,SharpDX.Vector2@,System.Single,SharpDX.Vector2@,SharpDX.Matrix@)\">\n            <summary>\n            Creates a 2D transformation matrix.\n            </summary>\n            <param name=\"scalingCenter\">Center point of the scaling operation.</param>\n            <param name=\"scalingRotation\">Scaling rotation amount.</param>\n            <param name=\"scaling\">Scaling factor.</param>\n            <param name=\"rotationCenter\">The center of the rotation.</param>\n            <param name=\"rotation\">The rotation of the transformation.</param>\n            <param name=\"translation\">The translation factor of the transformation.</param>\n            <param name=\"result\">When the method completes, contains the created transformation matrix.</param>\n        </member>\n        <member name=\"M:SharpDX.Matrix.Transformation2D(SharpDX.Vector2,System.Single,SharpDX.Vector2,SharpDX.Vector2,System.Single,SharpDX.Vector2)\">\n            <summary>\n            Creates a 2D transformation matrix.\n            </summary>\n            <param name=\"scalingCenter\">Center point of the scaling operation.</param>\n            <param name=\"scalingRotation\">Scaling rotation amount.</param>\n            <param name=\"scaling\">Scaling factor.</param>\n            <param name=\"rotationCenter\">The center of the rotation.</param>\n            <param name=\"rotation\">The rotation of the transformation.</param>\n            <param name=\"translation\">The translation factor of the transformation.</param>\n            <returns>The created transformation matrix.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix.op_Addition(SharpDX.Matrix,SharpDX.Matrix)\">\n            <summary>\n            Adds two matricies.\n            </summary>\n            <param name=\"left\">The first matrix to add.</param>\n            <param name=\"right\">The second matrix to add.</param>\n            <returns>The sum of the two matricies.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix.op_UnaryPlus(SharpDX.Matrix)\">\n            <summary>\n            Assert a matrix (return it unchanged).\n            </summary>\n            <param name=\"value\">The matrix to assert (unchange).</param>\n            <returns>The asserted (unchanged) matrix.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix.op_Subtraction(SharpDX.Matrix,SharpDX.Matrix)\">\n            <summary>\n            Subtracts two matricies.\n            </summary>\n            <param name=\"left\">The first matrix to subtract.</param>\n            <param name=\"right\">The second matrix to subtract.</param>\n            <returns>The difference between the two matricies.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix.op_UnaryNegation(SharpDX.Matrix)\">\n            <summary>\n            Negates a matrix.\n            </summary>\n            <param name=\"value\">The matrix to negate.</param>\n            <returns>The negated matrix.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix.op_Multiply(System.Single,SharpDX.Matrix)\">\n            <summary>\n            Scales a matrix by a given value.\n            </summary>\n            <param name=\"right\">The matrix to scale.</param>\n            <param name=\"left\">The amount by which to scale.</param>\n            <returns>The scaled matrix.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix.op_Multiply(SharpDX.Matrix,System.Single)\">\n            <summary>\n            Scales a matrix by a given value.\n            </summary>\n            <param name=\"left\">The matrix to scale.</param>\n            <param name=\"right\">The amount by which to scale.</param>\n            <returns>The scaled matrix.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix.op_Multiply(SharpDX.Matrix,SharpDX.Matrix)\">\n            <summary>\n            Multiplies two matricies.\n            </summary>\n            <param name=\"left\">The first matrix to multiply.</param>\n            <param name=\"right\">The second matrix to multiply.</param>\n            <returns>The product of the two matricies.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix.op_Division(SharpDX.Matrix,System.Single)\">\n            <summary>\n            Scales a matrix by a given value.\n            </summary>\n            <param name=\"left\">The matrix to scale.</param>\n            <param name=\"right\">The amount by which to scale.</param>\n            <returns>The scaled matrix.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix.op_Division(SharpDX.Matrix,SharpDX.Matrix)\">\n            <summary>\n            Divides two matricies.\n            </summary>\n            <param name=\"left\">The first matrix to divide.</param>\n            <param name=\"right\">The second matrix to divide.</param>\n            <returns>The quotient of the two matricies.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix.op_Equality(SharpDX.Matrix,SharpDX.Matrix)\">\n            <summary>\n            Tests for equality between two objects.\n            </summary>\n            <param name=\"left\">The first value to compare.</param>\n            <param name=\"right\">The second value to compare.</param>\n            <returns><c>true</c> if <paramref name=\"left\"/> has the same value as <paramref name=\"right\"/>; otherwise, <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix.op_Inequality(SharpDX.Matrix,SharpDX.Matrix)\">\n            <summary>\n            Tests for inequality between two objects.\n            </summary>\n            <param name=\"left\">The first value to compare.</param>\n            <param name=\"right\">The second value to compare.</param>\n            <returns><c>true</c> if <paramref name=\"left\"/> has a different value than <paramref name=\"right\"/>; otherwise, <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix.ToString\">\n            <summary>\n            Returns a <see cref=\"T:System.String\"/> that represents this instance.\n            </summary>\n            <returns>\n            A <see cref=\"T:System.String\"/> that represents this instance.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix.ToString(System.String)\">\n            <summary>\n            Returns a <see cref=\"T:System.String\"/> that represents this instance.\n            </summary>\n            <param name=\"format\">The format.</param>\n            <returns>\n            A <see cref=\"T:System.String\"/> that represents this instance.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix.ToString(System.IFormatProvider)\">\n            <summary>\n            Returns a <see cref=\"T:System.String\"/> that represents this instance.\n            </summary>\n            <param name=\"formatProvider\">The format provider.</param>\n            <returns>\n            A <see cref=\"T:System.String\"/> that represents this instance.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix.ToString(System.String,System.IFormatProvider)\">\n            <summary>\n            Returns a <see cref=\"T:System.String\"/> that represents this instance.\n            </summary>\n            <param name=\"format\">The format.</param>\n            <param name=\"formatProvider\">The format provider.</param>\n            <returns>\n            A <see cref=\"T:System.String\"/> that represents this instance.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix.GetHashCode\">\n            <summary>\n            Returns a hash code for this instance.\n            </summary>\n            <returns>\n            A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. \n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix.SharpDX#Serialization#IDataSerializable#Serialize(SharpDX.Serialization.BinarySerializer)\">\n            <inheritdoc/>\n        </member>\n        <member name=\"M:SharpDX.Matrix.Equals(SharpDX.Matrix)\">\n            <summary>\n            Determines whether the specified <see cref=\"T:SharpDX.Matrix\"/> is equal to this instance.\n            </summary>\n            <param name=\"other\">The <see cref=\"T:SharpDX.Matrix\"/> to compare with this instance.</param>\n            <returns>\n            <c>true</c> if the specified <see cref=\"T:SharpDX.Matrix\"/> is equal to this instance; otherwise, <c>false</c>.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Matrix.Equals(System.Object)\">\n            <summary>\n            Determines whether the specified <see cref=\"T:System.Object\"/> is equal to this instance.\n            </summary>\n            <param name=\"value\">The <see cref=\"T:System.Object\"/> to compare with this instance.</param>\n            <returns>\n            <c>true</c> if the specified <see cref=\"T:System.Object\"/> is equal to this instance; otherwise, <c>false</c>.\n            </returns>\n        </member>\n        <member name=\"P:SharpDX.Matrix.Up\">\n            <summary>\n            Gets or sets the up <see cref=\"T:SharpDX.Vector3\"/> of the matrix; that is M21, M22, and M23.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Matrix.Down\">\n            <summary>\n            Gets or sets the down <see cref=\"T:SharpDX.Vector3\"/> of the matrix; that is -M21, -M22, and -M23.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Matrix.Right\">\n            <summary>\n            Gets or sets the right <see cref=\"T:SharpDX.Vector3\"/> of the matrix; that is M11, M12, and M13.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Matrix.Left\">\n            <summary>\n            Gets or sets the left <see cref=\"T:SharpDX.Vector3\"/> of the matrix; that is -M11, -M12, and -M13.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Matrix.Forward\">\n            <summary>\n            Gets or sets the forward <see cref=\"T:SharpDX.Vector3\"/> of the matrix; that is -M31, -M32, and -M33.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Matrix.Backward\">\n            <summary>\n            Gets or sets the backward <see cref=\"T:SharpDX.Vector3\"/> of the matrix; that is M31, M32, and M33.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Matrix.Row1\">\n            <summary>\n            Gets or sets the first row in the matrix; that is M11, M12, M13, and M14.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Matrix.Row2\">\n            <summary>\n            Gets or sets the second row in the matrix; that is M21, M22, M23, and M24.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Matrix.Row3\">\n            <summary>\n            Gets or sets the third row in the matrix; that is M31, M32, M33, and M34.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Matrix.Row4\">\n            <summary>\n            Gets or sets the fourth row in the matrix; that is M41, M42, M43, and M44.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Matrix.Column1\">\n            <summary>\n            Gets or sets the first column in the matrix; that is M11, M21, M31, and M41.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Matrix.Column2\">\n            <summary>\n            Gets or sets the second column in the matrix; that is M12, M22, M32, and M42.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Matrix.Column3\">\n            <summary>\n            Gets or sets the third column in the matrix; that is M13, M23, M33, and M43.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Matrix.Column4\">\n            <summary>\n            Gets or sets the fourth column in the matrix; that is M14, M24, M34, and M44.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Matrix.TranslationVector\">\n            <summary>\n            Gets or sets the translation of the matrix; that is M41, M42, and M43.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Matrix.ScaleVector\">\n            <summary>\n            Gets or sets the scale of the matrix; that is M11, M22, and M33.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Matrix.IsIdentity\">\n            <summary>\n            Gets a value indicating whether this instance is an identity matrix.\n            </summary>\n            <value>\n            <c>true</c> if this instance is an identity matrix; otherwise, <c>false</c>.\n            </value>\n        </member>\n        <member name=\"P:SharpDX.Matrix.Item(System.Int32)\">\n            <summary>\n            Gets or sets the component at the specified index.\n            </summary>\n            <value>The value of the matrix component, depending on the index.</value>\n            <param name=\"index\">The zero-based index of the component to access.</param>\n            <returns>The value of the component at the specified index.</returns>\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">Thrown when the <paramref name=\"index\"/> is out of the range [0, 15].</exception>\n        </member>\n        <member name=\"P:SharpDX.Matrix.Item(System.Int32,System.Int32)\">\n            <summary>\n            Gets or sets the component at the specified index.\n            </summary>\n            <value>The value of the matrix component, depending on the index.</value>\n            <param name=\"row\">The row of the matrix to access.</param>\n            <param name=\"column\">The column of the matrix to access.</param>\n            <returns>The value of the component at the specified index.</returns>\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">Thrown when the <paramref name=\"row\"/> or <paramref name=\"column\"/>is out of the range [0, 3].</exception>\n        </member>\n        <member name=\"T:SharpDX.Multimedia.SoundStream\">\n            <summary>\n            Generic sound input stream supporting WAV (Pcm,Float), ADPCM, xWMA sound file formats.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Multimedia.SoundStream.#ctor(System.IO.Stream)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Multimedia.SoundStream\"/> class.\n            </summary>\n            <param name=\"stream\">The sound stream.</param>\n        </member>\n        <member name=\"M:SharpDX.Multimedia.SoundStream.Initialize(System.IO.Stream)\">\n            <summary>\n            Initializes the specified stream.\n            </summary>\n            <param name=\"stream\">The stream.</param>\n        </member>\n        <member name=\"M:SharpDX.Multimedia.SoundStream.ToDataStream\">\n            <summary>\n            Converts this stream to a DataStream by loading all the data from the source stream.\n            </summary>\n            <returns></returns>\n        </member>\n        <member name=\"M:SharpDX.Multimedia.SoundStream.op_Implicit(SharpDX.Multimedia.SoundStream)~SharpDX.DataStream\">\n            <summary>\n            Performs an implicit conversion from <see cref=\"T:SharpDX.Multimedia.SoundStream\"/> to <see cref=\"T:SharpDX.DataStream\"/>.\n            </summary>\n            <param name=\"stream\">The stream.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Multimedia.SoundStream.Flush\">\n            <summary>\n            When overridden in a derived class, clears all buffers for this stream and causes any buffered data to be written to the underlying device.\n            </summary>\n            <exception cref=\"T:System.IO.IOException\">\n            An I/O error occurs.\n              </exception>\n        </member>\n        <member name=\"M:SharpDX.Multimedia.SoundStream.Seek(System.Int64,System.IO.SeekOrigin)\">\n            <summary>\n            When overridden in a derived class, sets the position within the current stream.\n            </summary>\n            <param name=\"offset\">A byte offset relative to the <paramref name=\"origin\"/> parameter.</param>\n            <param name=\"origin\">A value of type <see cref=\"T:System.IO.SeekOrigin\"/> indicating the reference point used to obtain the new position.</param>\n            <returns>\n            The new position within the current stream.\n            </returns>\n            <exception cref=\"T:System.IO.IOException\">\n            An I/O error occurs.\n              </exception>\n              \n            <exception cref=\"T:System.NotSupportedException\">\n            The stream does not support seeking, such as if the stream is constructed from a pipe or console output.\n              </exception>\n              \n            <exception cref=\"T:System.ObjectDisposedException\">\n            Methods were called after the stream was closed.\n              </exception>\n        </member>\n        <member name=\"M:SharpDX.Multimedia.SoundStream.SetLength(System.Int64)\">\n            <summary>\n            When overridden in a derived class, sets the length of the current stream.\n            </summary>\n            <param name=\"value\">The desired length of the current stream in bytes.</param>\n            <exception cref=\"T:System.IO.IOException\">\n            An I/O error occurs.\n              </exception>\n              \n            <exception cref=\"T:System.NotSupportedException\">\n            The stream does not support both writing and seeking, such as if the stream is constructed from a pipe or console output.\n              </exception>\n              \n            <exception cref=\"T:System.ObjectDisposedException\">\n            Methods were called after the stream was closed.\n              </exception>\n        </member>\n        <member name=\"M:SharpDX.Multimedia.SoundStream.Read(System.Byte[],System.Int32,System.Int32)\">\n            <summary>\n            When overridden in a derived class, reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read.\n            </summary>\n            <param name=\"buffer\">An array of bytes. When this method returns, the buffer contains the specified byte array with the values between <paramref name=\"offset\"/> and (<paramref name=\"offset\"/> + <paramref name=\"count\"/> - 1) replaced by the bytes read from the current source.</param>\n            <param name=\"offset\">The zero-based byte offset in <paramref name=\"buffer\"/> at which to begin storing the data read from the current stream.</param>\n            <param name=\"count\">The maximum number of bytes to be read from the current stream.</param>\n            <returns>\n            The total number of bytes read into the buffer. This can be less than the number of bytes requested if that many bytes are not currently available, or zero (0) if the end of the stream has been reached.\n            </returns>\n            <exception cref=\"T:System.ArgumentException\">\n            The sum of <paramref name=\"offset\"/> and <paramref name=\"count\"/> is larger than the buffer length.\n              </exception>\n              \n            <exception cref=\"T:System.ArgumentNullException\">\n              <paramref name=\"buffer\"/> is null.\n              </exception>\n              \n            <exception cref=\"T:System.ArgumentOutOfRangeException\">\n              <paramref name=\"offset\"/> or <paramref name=\"count\"/> is negative.\n              </exception>\n              \n            <exception cref=\"T:System.IO.IOException\">\n            An I/O error occurs.\n              </exception>\n              \n            <exception cref=\"T:System.NotSupportedException\">\n            The stream does not support reading.\n              </exception>\n              \n            <exception cref=\"T:System.ObjectDisposedException\">\n            Methods were called after the stream was closed.\n              </exception>\n        </member>\n        <member name=\"M:SharpDX.Multimedia.SoundStream.Write(System.Byte[],System.Int32,System.Int32)\">\n            <summary>\n            When overridden in a derived class, writes a sequence of bytes to the current stream and advances the current position within this stream by the number of bytes written.\n            </summary>\n            <param name=\"buffer\">An array of bytes. This method copies <paramref name=\"count\"/> bytes from <paramref name=\"buffer\"/> to the current stream.</param>\n            <param name=\"offset\">The zero-based byte offset in <paramref name=\"buffer\"/> at which to begin copying bytes to the current stream.</param>\n            <param name=\"count\">The number of bytes to be written to the current stream.</param>\n            <exception cref=\"T:System.ArgumentException\">\n            The sum of <paramref name=\"offset\"/> and <paramref name=\"count\"/> is greater than the buffer length.\n              </exception>\n              \n            <exception cref=\"T:System.ArgumentNullException\">\n              <paramref name=\"buffer\"/> is null.\n              </exception>\n              \n            <exception cref=\"T:System.ArgumentOutOfRangeException\">\n              <paramref name=\"offset\"/> or <paramref name=\"count\"/> is negative.\n              </exception>\n              \n            <exception cref=\"T:System.IO.IOException\">\n            An I/O error occurs.\n              </exception>\n              \n            <exception cref=\"T:System.NotSupportedException\">\n            The stream does not support writing.\n              </exception>\n              \n            <exception cref=\"T:System.ObjectDisposedException\">\n            Methods were called after the stream was closed.\n              </exception>\n        </member>\n        <member name=\"P:SharpDX.Multimedia.SoundStream.DecodedPacketsInfo\">\n            <summary>\n            Gets the decoded packets info.\n            </summary>\n            <remarks>\n            This property is only valid for XWMA stream.</remarks>\n        </member>\n        <member name=\"P:SharpDX.Multimedia.SoundStream.Format\">\n            <summary>\n            Gets the wave format of this instance.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Multimedia.SoundStream.CanRead\">\n            <summary>\n            When overridden in a derived class, gets a value indicating whether the current stream supports reading.\n            </summary>\n            <returns>true if the stream supports reading; otherwise, false.\n              </returns>\n        </member>\n        <member name=\"P:SharpDX.Multimedia.SoundStream.CanSeek\">\n            <summary>\n            When overridden in a derived class, gets a value indicating whether the current stream supports seeking.\n            </summary>\n            <returns>true if the stream supports seeking; otherwise, false.\n              </returns>\n        </member>\n        <member name=\"P:SharpDX.Multimedia.SoundStream.CanWrite\">\n            <summary>\n            When overridden in a derived class, gets a value indicating whether the current stream supports writing.\n            </summary>\n            <returns>true if the stream supports writing; otherwise, false.\n              </returns>\n        </member>\n        <member name=\"P:SharpDX.Multimedia.SoundStream.Position\">\n            <summary>\n            When overridden in a derived class, gets or sets the position within the current stream.\n            </summary>\n            <returns>\n            The current position within the stream.\n              </returns>\n              \n            <exception cref=\"T:System.IO.IOException\">\n            An I/O error occurs.\n              </exception>\n              \n            <exception cref=\"T:System.NotSupportedException\">\n            The stream does not support seeking.\n              </exception>\n              \n            <exception cref=\"T:System.ObjectDisposedException\">\n            Methods were called after the stream was closed.\n              </exception>\n        </member>\n        <member name=\"P:SharpDX.Multimedia.SoundStream.Length\">\n            <summary>\n            When overridden in a derived class, gets the length in bytes of the stream.\n            </summary>\n            <returns>\n            A long value representing the length of the stream in bytes.\n              </returns>\n              \n            <exception cref=\"T:System.NotSupportedException\">\n            A class derived from Stream does not support seeking.\n              </exception>\n              \n            <exception cref=\"T:System.ObjectDisposedException\">\n            Methods were called after the stream was closed.\n              </exception>\n        </member>\n        <member name=\"T:SharpDX.Multimedia.WaveFormatAdpcm\">\n            <summary>\n            WaveFormatAdpcm\n            http://msdn.microsoft.com/en-us/library/microsoft.directx_sdk.xaudio2.adpcmwaveformat%28v=vs.85%29.aspx\n            Additional documentation: http://icculus.org/SDL_sound/downloads/external_documentation/wavecomp.htm\n            </summary>\n            <unmanaged>WAVEFORMATADPCM</unmanaged>\n        </member>\n        <member name=\"T:SharpDX.Multimedia.WaveFormat\">\n            <summary>\n            Represents a Wave file format\n            </summary>\n            <unmanaged>WAVEFORMATEX</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormat.waveFormatTag\">\n            <summary>format type</summary>\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormat.channels\">\n            <summary>number of channels</summary>\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormat.sampleRate\">\n            <summary>sample rate</summary>\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormat.averageBytesPerSecond\">\n            <summary>for buffer estimation</summary>\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormat.blockAlign\">\n            <summary>block size of data</summary>\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormat.bitsPerSample\">\n            <summary>number of bits per sample of mono data</summary>\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormat.extraSize\">\n            <summary>number of following bytes</summary>\n        </member>\n        <member name=\"M:SharpDX.Multimedia.WaveFormat.#ctor\">\n            <summary>\n            Creates a new PCM 44.1Khz stereo 16 bit format\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Multimedia.WaveFormat.#ctor(System.Int32,System.Int32)\">\n            <summary>\n            Creates a new 16 bit wave format with the specified sample\n            rate and channel count\n            </summary>\n            <param name=\"sampleRate\">Sample Rate</param>\n            <param name=\"channels\">Number of channels</param>\n        </member>\n        <member name=\"M:SharpDX.Multimedia.WaveFormat.ConvertLatencyToByteSize(System.Int32)\">\n            <summary>\n            Gets the size of a wave buffer equivalent to the latency in milliseconds.\n            </summary>\n            <param name=\"milliseconds\">The milliseconds.</param>\n            <returns></returns>\n        </member>\n        <member name=\"M:SharpDX.Multimedia.WaveFormat.CreateCustomFormat(SharpDX.Multimedia.WaveFormatEncoding,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32)\">\n            <summary>\n            Creates a WaveFormat with custom members\n            </summary>\n            <param name=\"tag\">The encoding</param>\n            <param name=\"sampleRate\">Sample Rate</param>\n            <param name=\"channels\">Number of channels</param>\n            <param name=\"averageBytesPerSecond\">Average Bytes Per Second</param>\n            <param name=\"blockAlign\">Block Align</param>\n            <param name=\"bitsPerSample\">Bits Per Sample</param>\n            <returns></returns>\n        </member>\n        <member name=\"M:SharpDX.Multimedia.WaveFormat.CreateALawFormat(System.Int32,System.Int32)\">\n            <summary>\n            Creates an A-law wave format\n            </summary>\n            <param name=\"sampleRate\">Sample Rate</param>\n            <param name=\"channels\">Number of Channels</param>\n            <returns>Wave Format</returns>\n        </member>\n        <member name=\"M:SharpDX.Multimedia.WaveFormat.CreateMuLawFormat(System.Int32,System.Int32)\">\n            <summary>\n            Creates a Mu-law wave format\n            </summary>\n            <param name=\"sampleRate\">Sample Rate</param>\n            <param name=\"channels\">Number of Channels</param>\n            <returns>Wave Format</returns>\n        </member>\n        <member name=\"M:SharpDX.Multimedia.WaveFormat.#ctor(System.Int32,System.Int32,System.Int32)\">\n            <summary>\n            Creates a new PCM format with the specified sample rate, bit depth and channels\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Multimedia.WaveFormat.CreateIeeeFloatWaveFormat(System.Int32,System.Int32)\">\n            <summary>\n            Creates a new 32 bit IEEE floating point wave format\n            </summary>\n            <param name=\"sampleRate\">sample rate</param>\n            <param name=\"channels\">number of channels</param>\n        </member>\n        <member name=\"M:SharpDX.Multimedia.WaveFormat.MarshalFrom(System.Byte[])\">\n            <summary>\n            Helper function to retrieve a WaveFormat structure from a pointer\n            </summary>\n            <param name=\"rawdata\">Buffer to the WaveFormat rawdata</param>\n            <returns>WaveFormat structure</returns>\n        </member>\n        <member name=\"M:SharpDX.Multimedia.WaveFormat.MarshalFrom(System.IntPtr)\">\n            <summary>\n            Helper function to retrieve a WaveFormat structure from a pointer\n            </summary>\n            <param name=\"pointer\">Pointer to the WaveFormat rawdata</param>\n            <returns>WaveFormat structure</returns>\n        </member>\n        <member name=\"M:SharpDX.Multimedia.WaveFormat.MarshalToPtr(SharpDX.Multimedia.WaveFormat)\">\n            <summary>\n            Helper function to marshal WaveFormat to an IntPtr\n            </summary>\n            <param name=\"format\">WaveFormat</param>\n            <returns>IntPtr to WaveFormat structure (needs to be freed by callee)</returns>\n        </member>\n        <member name=\"M:SharpDX.Multimedia.WaveFormat.#ctor(System.IO.BinaryReader)\">\n            <summary>\n            Reads a new WaveFormat object from a stream\n            </summary>\n            <param name=\"br\">A binary reader that wraps the stream</param>\n        </member>\n        <member name=\"M:SharpDX.Multimedia.WaveFormat.ToString\">\n            <summary>\n            Reports this WaveFormat as a string\n            </summary>\n            <returns>String describing the wave format</returns>\n        </member>\n        <member name=\"M:SharpDX.Multimedia.WaveFormat.Equals(System.Object)\">\n            <summary>\n            Compares with another WaveFormat object\n            </summary>\n            <param name=\"obj\">Object to compare to</param>\n            <returns>True if the objects are the same</returns>\n        </member>\n        <member name=\"M:SharpDX.Multimedia.WaveFormat.GetHashCode\">\n            <summary>\n            Provides a Hashcode for this WaveFormat\n            </summary>\n            <returns>A hashcode</returns>\n        </member>\n        <member name=\"P:SharpDX.Multimedia.WaveFormat.Encoding\">\n            <summary>\n            Returns the encoding type used\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Multimedia.WaveFormat.Channels\">\n            <summary>\n            Returns the number of channels (1=mono,2=stereo etc)\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Multimedia.WaveFormat.SampleRate\">\n            <summary>\n            Returns the sample rate (samples per second)\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Multimedia.WaveFormat.AverageBytesPerSecond\">\n            <summary>\n            Returns the average number of bytes used per second\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Multimedia.WaveFormat.BlockAlign\">\n            <summary>\n            Returns the block alignment\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Multimedia.WaveFormat.BitsPerSample\">\n            <summary>\n            Returns the number of bits per sample (usually 16 or 32, sometimes 24 or 8)\n            Can be 0 for some codecs\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Multimedia.WaveFormat.ExtraSize\">\n            <summary>\n            Returns the number of extra bytes used by this waveformat. Often 0,\n            except for compressed formats which store extra data after the WAVEFORMATEX header\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormat.__Native.extraSize\">\n            <summary>number of following bytes</summary>\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormat.__PcmNative.waveFormatTag\">\n            <summary>format type</summary>\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormat.__PcmNative.channels\">\n            <summary>number of channels</summary>\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormat.__PcmNative.sampleRate\">\n            <summary>sample rate</summary>\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormat.__PcmNative.averageBytesPerSecond\">\n            <summary>for buffer estimation</summary>\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormat.__PcmNative.blockAlign\">\n            <summary>block size of data</summary>\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormat.__PcmNative.bitsPerSample\">\n            <summary>number of bits per sample of mono data</summary>\n        </member>\n        <member name=\"M:SharpDX.Multimedia.WaveFormatAdpcm.#ctor\">\n            <summary>\n            Parameterless constructor for marshalling\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Multimedia.WaveFormatAdpcm.#ctor(System.Int32,System.Int32,System.Int32)\">\n            <summary>\n            Creates a new WaveFormatAdpcm for MicrosoftADPCM\n            </summary>\n            <param name=\"rate\">The rate.</param>\n            <param name=\"channels\">The channels.</param>\n            <param name=\"blockAlign\">The block align. If 0, then 256 for [0, 11KHz], 512 for ]11KHz, 22Khz], 1024 for ]22Khz, +inf]</param>\n        </member>\n        <member name=\"P:SharpDX.Multimedia.WaveFormatAdpcm.SamplesPerBlock\">\n            <summary>\n            Gets or sets the samples per block.\n            </summary>\n            <value>\n            The samples per block.\n            </value>\n        </member>\n        <member name=\"P:SharpDX.Multimedia.WaveFormatAdpcm.Coefficients1\">\n            <summary>\n            Gets or sets the coefficients.\n            </summary>\n            <value>\n            The coefficients.\n            </value>\n        </member>\n        <member name=\"P:SharpDX.Multimedia.WaveFormatAdpcm.Coefficients2\">\n            <summary>\n            Gets or sets the coefficients.\n            </summary>\n            <value>\n            The coefficients.\n            </value>\n        </member>\n        <member name=\"T:SharpDX.Multimedia.FourCC\">\n            <summary>\n            A FourCC descriptor.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Multimedia.FourCC.Empty\">\n            <summary>\n            Empty FourCC.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Multimedia.FourCC.#ctor(System.String)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Multimedia.FourCC\"/> struct.\n            </summary>\n            <param name=\"fourCC\">The fourCC value as a string .</param>\n        </member>\n        <member name=\"M:SharpDX.Multimedia.FourCC.#ctor(System.Char,System.Char,System.Char,System.Char)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Multimedia.FourCC\"/> struct.\n            </summary>\n            <param name=\"byte1\">The byte1.</param>\n            <param name=\"byte2\">The byte2.</param>\n            <param name=\"byte3\">The byte3.</param>\n            <param name=\"byte4\">The byte4.</param>\n        </member>\n        <member name=\"M:SharpDX.Multimedia.FourCC.#ctor(System.UInt32)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Multimedia.FourCC\"/> struct.\n            </summary>\n            <param name=\"fourCC\">The fourCC value as an uint.</param>\n        </member>\n        <member name=\"M:SharpDX.Multimedia.FourCC.#ctor(System.Int32)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Multimedia.FourCC\"/> struct.\n            </summary>\n            <param name=\"fourCC\">The fourCC value as an int.</param>\n        </member>\n        <member name=\"M:SharpDX.Multimedia.FourCC.op_Implicit(SharpDX.Multimedia.FourCC)~System.UInt32\">\n            <summary>\n            Performs an implicit conversion from <see cref=\"T:SharpDX.Multimedia.FourCC\"/> to <see cref=\"T:System.Int32\"/>.\n            </summary>\n            <param name=\"d\">The d.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Multimedia.FourCC.op_Implicit(SharpDX.Multimedia.FourCC)~System.Int32\">\n            <summary>\n            Performs an implicit conversion from <see cref=\"T:SharpDX.Multimedia.FourCC\"/> to <see cref=\"T:System.Int32\"/>.\n            </summary>\n            <param name=\"d\">The d.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Multimedia.FourCC.op_Implicit(System.UInt32)~SharpDX.Multimedia.FourCC\">\n            <summary>\n            Performs an implicit conversion from <see cref=\"T:System.Int32\"/> to <see cref=\"T:SharpDX.Multimedia.FourCC\"/>.\n            </summary>\n            <param name=\"d\">The d.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Multimedia.FourCC.op_Implicit(System.Int32)~SharpDX.Multimedia.FourCC\">\n            <summary>\n            Performs an implicit conversion from <see cref=\"T:System.Int32\"/> to <see cref=\"T:SharpDX.Multimedia.FourCC\"/>.\n            </summary>\n            <param name=\"d\">The d.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Multimedia.FourCC.op_Implicit(SharpDX.Multimedia.FourCC)~System.String\">\n            <summary>\n            Performs an implicit conversion from <see cref=\"T:SharpDX.Multimedia.FourCC\"/> to <see cref=\"T:System.String\"/>.\n            </summary>\n            <param name=\"d\">The d.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Multimedia.FourCC.op_Implicit(System.String)~SharpDX.Multimedia.FourCC\">\n            <summary>\n            Performs an implicit conversion from <see cref=\"T:System.String\"/> to <see cref=\"T:SharpDX.Multimedia.FourCC\"/>.\n            </summary>\n            <param name=\"d\">The d.</param>\n            <returns>\n            The result of the conversion.\n            </returns>\n        </member>\n        <member name=\"T:SharpDX.Multimedia.RiffChunk\">\n            <summary>\n            A chunk of a Riff stream.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Multimedia.RiffChunk.#ctor(System.IO.Stream,SharpDX.Multimedia.FourCC,System.UInt32,System.UInt32,System.Boolean,System.Boolean)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Multimedia.RiffChunk\"/> class.\n            </summary>\n            <param name=\"stream\">The stream holding this chunk</param>\n            <param name=\"type\">The type.</param>\n            <param name=\"size\">The size.</param>\n            <param name=\"dataPosition\">The data offset.</param>\n            <param name=\"isList\">if set to <c>true</c> [is list].</param>\n            <param name=\"isHeader\">if set to <c>true</c> [is header].</param>\n        </member>\n        <member name=\"M:SharpDX.Multimedia.RiffChunk.GetData\">\n            <summary>\n            Gets the raw data contained in this chunk.\n            </summary>\n            <returns></returns>\n        </member>\n        <member name=\"M:SharpDX.Multimedia.RiffChunk.GetDataAs``1\">\n            <summary>\n            Gets structured data contained in this chunk.\n            </summary>\n            <typeparam name=\"T\">The type of the data to return</typeparam>\n            <returns>\n            A structure filled with the chunk data\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Multimedia.RiffChunk.GetDataAsArray``1\">\n            <summary>\n            Gets structured data contained in this chunk.\n            </summary>\n            <typeparam name=\"T\">The type of the data to return</typeparam>\n            <returns>A structure filled with the chunk data</returns>\n        </member>\n        <member name=\"M:SharpDX.Multimedia.RiffChunk.ToString\">\n            <summary>\n            Returns a <see cref=\"T:System.String\"/> that represents this instance.\n            </summary>\n            <returns>\n            A <see cref=\"T:System.String\"/> that represents this instance.\n            </returns>\n        </member>\n        <member name=\"P:SharpDX.Multimedia.RiffChunk.Stream\">\n            <summary>\n            Gets the type.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Multimedia.RiffChunk.Type\">\n            <summary>\n            Gets the <see cref=\"T:SharpDX.Multimedia.FourCC\"/> of this chunk.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Multimedia.RiffChunk.Size\">\n            <summary>\n            Gets the size of the data enbedded by this chunk.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Multimedia.RiffChunk.DataPosition\">\n            <summary>\n            Gets the position of the data embedded by this chunk relative to the stream.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Multimedia.RiffChunk.IsList\">\n            <summary>\n            Gets or sets a value indicating whether this instance is a list chunk.\n            </summary>\n            <value>\n              <c>true</c> if this instance is list; otherwise, <c>false</c>.\n            </value>\n        </member>\n        <member name=\"P:SharpDX.Multimedia.RiffChunk.IsHeader\">\n            <summary>\n            Gets a value indicating whether this instance is a header chunk.\n            </summary>\n            <value>\n              <c>true</c> if this instance is a header; otherwise, <c>false</c>.\n            </value>\n        </member>\n        <member name=\"T:SharpDX.Multimedia.RiffParser\">\n            <summary>\n            Riff chunk enumerator.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Multimedia.RiffParser.#ctor(System.IO.Stream)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Multimedia.RiffParser\"/> class.\n            </summary>\n            <param name=\"input\">The input.</param>\n        </member>\n        <member name=\"M:SharpDX.Multimedia.RiffParser.Dispose\">\n            <summary>\n            Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Multimedia.RiffParser.MoveNext\">\n            <summary>\n            Advances the enumerator to the next element of the collection.\n            </summary>\n            <returns>\n            true if the enumerator was successfully advanced to the next element; false if the enumerator has passed the end of the collection.\n            </returns>\n            <exception cref=\"T:System.InvalidOperationException\">\n            The collection was modified after the enumerator was created.\n              </exception>\n        </member>\n        <member name=\"M:SharpDX.Multimedia.RiffParser.Reset\">\n            <summary>\n            Sets the enumerator to its initial position, which is before the first element in the collection.\n            </summary>\n            <exception cref=\"T:System.InvalidOperationException\">\n            The collection was modified after the enumerator was created.\n              </exception>\n        </member>\n        <member name=\"M:SharpDX.Multimedia.RiffParser.Ascend\">\n            <summary>\n            Ascends to the outer chunk.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Multimedia.RiffParser.Descend\">\n            <summary>\n            Descends to the current chunk.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Multimedia.RiffParser.GetAllChunks\">\n            <summary>\n            Gets all chunks.\n            </summary>\n            <returns></returns>\n        </member>\n        <member name=\"M:SharpDX.Multimedia.RiffParser.GetEnumerator\">\n            <summary>\n            Returns an enumerator that iterates through the collection.\n            </summary>\n            <returns>\n            A <see cref=\"T:System.Collections.Generic.IEnumerator`1\"/> that can be used to iterate through the collection.\n            </returns>\n        </member>\n        <member name=\"P:SharpDX.Multimedia.RiffParser.ChunkStack\">\n            <summary>\n            Gets the current stack of chunks.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Multimedia.RiffParser.Current\">\n            <summary>\n            Gets the element in the collection at the current position of the enumerator.\n            </summary>\n            <returns>\n            The element in the collection at the current position of the enumerator.\n              </returns>\n        </member>\n        <member name=\"T:SharpDX.Multimedia.SpeakersExtensions\">\n            <summary>\n            Helper class for Speaker mask.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Multimedia.SpeakersExtensions.ToChannelCount(SharpDX.Multimedia.Speakers)\">\n            <summary>\n            Counts the channels from a speaker mask.\n            </summary>\n            <param name=\"speakers\">The speakers mask.</param>\n            <returns></returns>\n        </member>\n        <member name=\"T:SharpDX.Multimedia.WaveFormatExtensible\">\n            <summary>\n            WaveFormatExtensible\n            http://www.microsoft.com/whdc/device/audio/multichaud.mspx\n            </summary>\n            <unmanaged>WAVEFORMATEXTENSIBLE</unmanaged>\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatExtensible.GuidSubFormat\">\n            <summary>\n            Guid of the subformat.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Multimedia.WaveFormatExtensible.ChannelMask\">\n            <summary>\n            Speaker configuration\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Multimedia.WaveFormatExtensible.#ctor\">\n            <summary>\n            Parameterless constructor for marshalling\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Multimedia.WaveFormatExtensible.#ctor(System.Int32,System.Int32,System.Int32)\">\n            <summary>\n            Creates a new WaveFormatExtensible for PCM or IEEE\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Multimedia.WaveFormatExtensible.ToString\">\n            <summary>\n            String representation\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.NamespaceDoc\">\n            <summary>\n            The <see cref=\"N:SharpDX\"/> namespace contains fundamental classes used by SharpDX.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.TagAttribute\">\n            <summary>\n            A general purpose tag attribute.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.TagAttribute.#ctor(System.String)\">\n            <summary>\n            Initializes a new instance of <see cref=\"T:SharpDX.TagAttribute\"/> class.\n            </summary>\n            <param name=\"value\"></param>\n        </member>\n        <member name=\"P:SharpDX.TagAttribute.Value\">\n            <summary>\n            Gets the value.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Text.Encoding\">\n            <summary>\n            Overrides <see cref=\"T:System.Text.ASCIIEncoding\"/> in order to provide <see cref=\"T:SharpDX.Text.ASCIIEncoding\"/> for Win8 Modern App.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Text.ASCIIEncoding\">\n            <summary>\n            Provides a basic implementation to replace <see cref=\"T:System.Text.ASCIIEncoding\"/> (not available on Win8 Modern App).\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Text.NamespaceDoc\">\n            <summary>\n            The <see cref=\"N:SharpDX.Text\"/> namespace provides missing ASCIIEncoding for Win8 Modern platform.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.TimerTick\">\n            <summary>\n            This provides timing information similar to <see cref=\"T:System.Diagnostics.Stopwatch\"/> but an update occuring only on a <see cref=\"M:SharpDX.TimerTick.Tick\"/> method.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.TimerTick.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.TimerTick\"/> class.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.TimerTick.Reset\">\n            <summary>\n            Resets this instance. <see cref=\"P:SharpDX.TimerTick.TotalTime\"/> is set to zero.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.TimerTick.Resume\">\n            <summary>\n            Resumes this instance, only if a call to <see cref=\"M:SharpDX.TimerTick.Pause\"/> has been already issued.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.TimerTick.Tick\">\n            <summary>\n            Update the <see cref=\"P:SharpDX.TimerTick.TotalTime\"/> and <see cref=\"P:SharpDX.TimerTick.ElapsedTime\"/>,\n            </summary>\n            <remarks>\n            This method must be called on a regular basis at every *tick*.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.TimerTick.Pause\">\n            <summary>\n            Pauses this instance.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.TimerTick.ConvertRawToTimestamp(System.Int64)\">\n            <summary>\n            Converts a <see cref=\"T:System.Diagnostics.Stopwatch\"/> raw time to a <see cref=\"T:System.TimeSpan\"/>.\n            </summary>\n            <param name=\"delta\">The delta.</param>\n            <returns>The <see cref=\"T:System.TimeSpan\"/>.</returns>\n        </member>\n        <member name=\"P:SharpDX.TimerTick.TotalTime\">\n            <summary>\n            Gets the total time elasped since the last reset or when this timer was created.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.TimerTick.ElapsedAdjustedTime\">\n            <summary>\n            Gets the elapsed adjusted time since the previous call to <see cref=\"M:SharpDX.TimerTick.Tick\"/> taking into account <see cref=\"M:SharpDX.TimerTick.Pause\"/> time.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.TimerTick.ElapsedTime\">\n            <summary>\n            Gets the elapsed time since the previous call to <see cref=\"M:SharpDX.TimerTick.Tick\"/>.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.TimerTick.IsPaused\">\n            <summary>\n            Gets a value indicating whether this instance is paused.\n            </summary>\n            <value><c>true</c> if this instance is paused; otherwise, <c>false</c>.</value>\n        </member>\n        <member name=\"T:SharpDX.Viewport\">\n            <summary>\n            Defines the viewport dimensions.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Viewport.X\">\n            <summary>\n            Position of the pixel coordinate of the upper-left corner of the viewport.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Viewport.Y\">\n            <summary>\n            Position of the pixel coordinate of the upper-left corner of the viewport.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Viewport.Width\">\n            <summary>\n            Width dimension of the viewport.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Viewport.Height\">\n            <summary>\n            Height dimension of the viewport.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Viewport.MinDepth\">\n            <summary>\n            Gets or sets the minimum depth of the clip volume.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Viewport.MaxDepth\">\n            <summary>\n            Gets or sets the maximum depth of the clip volume.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Viewport.#ctor(System.Int32,System.Int32,System.Int32,System.Int32)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Viewport\"/> struct.\n            </summary>\n            <param name=\"x\">The x coordinate of the upper-left corner of the viewport in pixels.</param>\n            <param name=\"y\">The y coordinate of the upper-left corner of the viewport in pixels.</param>\n            <param name=\"width\">The width of the viewport in pixels.</param>\n            <param name=\"height\">The height of the viewport in pixels.</param>\n        </member>\n        <member name=\"M:SharpDX.Viewport.#ctor(System.Int32,System.Int32,System.Int32,System.Int32,System.Single,System.Single)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.ViewportF\"/> struct.\n            </summary>\n            <param name=\"x\">The x coordinate of the upper-left corner of the viewport in pixels.</param>\n            <param name=\"y\">The y coordinate of the upper-left corner of the viewport in pixels.</param>\n            <param name=\"width\">The width of the viewport in pixels.</param>\n            <param name=\"height\">The height of the viewport in pixels.</param>\n            <param name=\"minDepth\">The minimum depth of the clip volume.</param>\n            <param name=\"maxDepth\">The maximum depth of the clip volume.</param>\n        </member>\n        <member name=\"M:SharpDX.Viewport.#ctor(SharpDX.DrawingRectangle)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Viewport\"/> struct.\n            </summary>\n            <param name=\"bounds\">A bounding box that defines the location and size of the viewport in a render target.</param>\n        </member>\n        <member name=\"M:SharpDX.Viewport.ToString\">\n            <summary>\n            Retrieves a string representation of this object.\n            </summary>\n            <returns>A <see cref=\"T:System.String\"/> that represents this instance.</returns>\n        </member>\n        <member name=\"M:SharpDX.Viewport.Project(SharpDX.Vector3,SharpDX.Matrix,SharpDX.Matrix,SharpDX.Matrix)\">\n            <summary>\n            Projects a 3D vector from object space into screen space.\n            </summary>\n            <param name=\"source\">The vector to project.</param>\n            <param name=\"projection\">The projection matrix.</param>\n            <param name=\"view\">The view matrix.</param>\n            <param name=\"world\">The world matrix.</param>\n            <returns>Vector3.</returns>\n        </member>\n        <member name=\"M:SharpDX.Viewport.Unproject(SharpDX.Vector3,SharpDX.Matrix,SharpDX.Matrix,SharpDX.Matrix)\">\n            <summary>\n            Converts a screen space point into a corresponding point in world space.\n            </summary>\n            <param name=\"source\">The vector to project.</param>\n            <param name=\"projection\">The projection matrix.</param>\n            <param name=\"view\">The view matrix.</param>\n            <param name=\"world\">The world matrix.</param>\n            <returns>Vector3.</returns>\n        </member>\n        <member name=\"P:SharpDX.Viewport.Bounds\">\n            <summary>\n            Gets the size of this resource.\n            </summary>\n            <value>The bounds.</value>\n        </member>\n        <member name=\"P:SharpDX.Viewport.AspectRatio\">\n            <summary>\n            Gets the aspect ratio used by the viewport\n            </summary>\n            <value>The aspect ratio.</value>\n        </member>\n        <member name=\"T:SharpDX.Win32Native\">\n            <summary>\n            Internal class to interact with Native Message\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Plane\">\n            <summary>\n            Represents a plane in three dimensional space.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Plane.Normal\">\n            <summary>\n            The normal vector of the plane.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Plane.D\">\n            <summary>\n            The distance of the plane along its normal from the origin.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Plane.#ctor(System.Single)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Plane\"/> struct.\n            </summary>\n            <param name=\"value\">The value that will be assigned to all components.</param>\n        </member>\n        <member name=\"M:SharpDX.Plane.#ctor(System.Single,System.Single,System.Single,System.Single)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Plane\"/> struct.\n            </summary>\n            <param name=\"a\">The X component of the normal.</param>\n            <param name=\"b\">The Y component of the normal.</param>\n            <param name=\"c\">The Z component of the normal.</param>\n            <param name=\"d\">The distance of the plane along its normal from the origin.</param>\n        </member>\n        <member name=\"M:SharpDX.Plane.#ctor(SharpDX.Vector3,SharpDX.Vector3)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Plane\" /> class.\n            </summary>\n            <param name=\"point\">Any point that lies along the plane.</param>\n            <param name=\"normal\">The normal vector to the plane.</param>\n        </member>\n        <member name=\"M:SharpDX.Plane.#ctor(SharpDX.Vector3,System.Single)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Plane\"/> struct.\n            </summary>\n            <param name=\"value\">The normal of the plane.</param>\n            <param name=\"d\">The distance of the plane along its normal from the origin</param>\n        </member>\n        <member name=\"M:SharpDX.Plane.#ctor(SharpDX.Vector3,SharpDX.Vector3,SharpDX.Vector3)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Plane\"/> struct.\n            </summary>\n            <param name=\"point1\">First point of a triangle defining the plane.</param>\n            <param name=\"point2\">Second point of a triangle defining the plane.</param>\n            <param name=\"point3\">Third point of a triangle defining the plane.</param>\n        </member>\n        <member name=\"M:SharpDX.Plane.#ctor(System.Single[])\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Plane\"/> struct.\n            </summary>\n            <param name=\"values\">The values to assign to the A, B, C, and D components of the plane. This must be an array with four elements.</param>\n            <exception cref=\"T:System.ArgumentNullException\">Thrown when <paramref name=\"values\"/> is <c>null</c>.</exception>\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">Thrown when <paramref name=\"values\"/> contains more or less than four elements.</exception>\n        </member>\n        <member name=\"M:SharpDX.Plane.Normalize\">\n            <summary>\n            Changes the coefficients of the normal vector of the plane to make it of unit length.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Plane.ToArray\">\n            <summary>\n            Creates an array containing the elements of the plane.\n            </summary>\n            <returns>A four-element array containing the components of the plane.</returns>\n        </member>\n        <member name=\"M:SharpDX.Plane.Intersects(SharpDX.Vector3@)\">\n            <summary>\n            Determines if there is an intersection between the current object and a point.\n            </summary>\n            <param name=\"point\">The point to test.</param>\n            <returns>Whether the two objects intersected.</returns>\n        </member>\n        <member name=\"M:SharpDX.Plane.Intersects(SharpDX.Ray@)\">\n            <summary>\n            Determines if there is an intersection between the current object and a <see cref=\"T:SharpDX.Ray\"/>.\n            </summary>\n            <param name=\"ray\">The ray to test.</param>\n            <returns>Whether the two objects intersected.</returns>\n        </member>\n        <member name=\"M:SharpDX.Plane.Intersects(SharpDX.Ray@,System.Single@)\">\n            <summary>\n            Determines if there is an intersection between the current object and a <see cref=\"T:SharpDX.Ray\"/>.\n            </summary>\n            <param name=\"ray\">The ray to test.</param>\n            <param name=\"distance\">When the method completes, contains the distance of the intersection,\n            or 0 if there was no intersection.</param>\n            <returns>Whether the two objects intersected.</returns>\n        </member>\n        <member name=\"M:SharpDX.Plane.Intersects(SharpDX.Ray@,SharpDX.Vector3@)\">\n            <summary>\n            Determines if there is an intersection between the current object and a <see cref=\"T:SharpDX.Ray\"/>.\n            </summary>\n            <param name=\"ray\">The ray to test.</param>\n            <param name=\"point\">When the method completes, contains the point of intersection,\n            or <see cref=\"F:SharpDX.Vector3.Zero\"/> if there was no intersection.</param>\n            <returns>Whether the two objects intersected.</returns>\n        </member>\n        <member name=\"M:SharpDX.Plane.Intersects(SharpDX.Plane@)\">\n            <summary>\n            Determines if there is an intersection between the current object and a <see cref=\"T:SharpDX.Plane\"/>.\n            </summary>\n            <param name=\"plane\">The plane to test.</param>\n            <returns>Whether the two objects intersected.</returns>\n        </member>\n        <member name=\"M:SharpDX.Plane.Intersects(SharpDX.Plane@,SharpDX.Ray@)\">\n            <summary>\n            Determines if there is an intersection between the current object and a <see cref=\"T:SharpDX.Plane\"/>.\n            </summary>\n            <param name=\"plane\">The plane to test.</param>\n            <param name=\"line\">When the method completes, contains the line of intersection\n            as a <see cref=\"T:SharpDX.Ray\"/>, or a zero ray if there was no intersection.</param>\n            <returns>Whether the two objects intersected.</returns>\n        </member>\n        <member name=\"M:SharpDX.Plane.Intersects(SharpDX.Vector3@,SharpDX.Vector3@,SharpDX.Vector3@)\">\n            <summary>\n            Determines if there is an intersection between the current object and a triangle.\n            </summary>\n            <param name=\"vertex1\">The first vertex of the triangle to test.</param>\n            <param name=\"vertex2\">The second vertex of the triagnle to test.</param>\n            <param name=\"vertex3\">The third vertex of the triangle to test.</param>\n            <returns>Whether the two objects intersected.</returns>\n        </member>\n        <member name=\"M:SharpDX.Plane.Intersects(SharpDX.BoundingBox@)\">\n            <summary>\n            Determines if there is an intersection between the current object and a <see cref=\"T:SharpDX.BoundingBox\"/>.\n            </summary>\n            <param name=\"box\">The box to test.</param>\n            <returns>Whether the two objects intersected.</returns>\n        </member>\n        <member name=\"M:SharpDX.Plane.Intersects(SharpDX.BoundingSphere@)\">\n            <summary>\n            Determines if there is an intersection between the current object and a <see cref=\"T:SharpDX.BoundingSphere\"/>.\n            </summary>\n            <param name=\"sphere\">The sphere to test.</param>\n            <returns>Whether the two objects intersected.</returns>\n        </member>\n        <member name=\"M:SharpDX.Plane.Multiply(SharpDX.Plane@,System.Single,SharpDX.Plane@)\">\n            <summary>\n            Scales the plane by the given scaling factor.\n            </summary>\n            <param name=\"value\">The plane to scale.</param>\n            <param name=\"scale\">The amount by which to scale the plane.</param>\n            <param name=\"result\">When the method completes, contains the scaled plane.</param>\n        </member>\n        <member name=\"M:SharpDX.Plane.Multiply(SharpDX.Plane,System.Single)\">\n            <summary>\n            Scales the plane by the given scaling factor.\n            </summary>\n            <param name=\"value\">The plane to scale.</param>\n            <param name=\"scale\">The amount by which to scale the plane.</param>\n            <returns>The scaled plane.</returns>\n        </member>\n        <member name=\"M:SharpDX.Plane.Dot(SharpDX.Plane@,SharpDX.Vector4@,System.Single@)\">\n            <summary>\n            Calculates the dot product of the specified vector and plane.\n            </summary>\n            <param name=\"left\">The source plane.</param>\n            <param name=\"right\">The source vector.</param>\n            <param name=\"result\">When the method completes, contains the dot product of the specified plane and vector.</param>\n        </member>\n        <member name=\"M:SharpDX.Plane.Dot(SharpDX.Plane,SharpDX.Vector4)\">\n            <summary>\n            Calculates the dot product of the specified vector and plane.\n            </summary>\n            <param name=\"left\">The source plane.</param>\n            <param name=\"right\">The source vector.</param>\n            <returns>The dot product of the specified plane and vector.</returns>\n        </member>\n        <member name=\"M:SharpDX.Plane.DotCoordinate(SharpDX.Plane@,SharpDX.Vector3@,System.Single@)\">\n            <summary>\n            Calculates the dot product of a specified vector and the normal of the plane plus the distance value of the plane.\n            </summary>\n            <param name=\"left\">The source plane.</param>\n            <param name=\"right\">The source vector.</param>\n            <param name=\"result\">When the method completes, contains the dot product of a specified vector and the normal of the Plane plus the distance value of the plane.</param>\n        </member>\n        <member name=\"M:SharpDX.Plane.DotCoordinate(SharpDX.Plane,SharpDX.Vector3)\">\n            <summary>\n            Calculates the dot product of a specified vector and the normal of the plane plus the distance value of the plane.\n            </summary>\n            <param name=\"left\">The source plane.</param>\n            <param name=\"right\">The source vector.</param>\n            <returns>The dot product of a specified vector and the normal of the Plane plus the distance value of the plane.</returns>\n        </member>\n        <member name=\"M:SharpDX.Plane.DotNormal(SharpDX.Plane@,SharpDX.Vector3@,System.Single@)\">\n            <summary>\n            Calculates the dot product of the specified vector and the normal of the plane.\n            </summary>\n            <param name=\"left\">The source plane.</param>\n            <param name=\"right\">The source vector.</param>\n            <param name=\"result\">When the method completes, contains the dot product of the specified vector and the normal of the plane.</param>\n        </member>\n        <member name=\"M:SharpDX.Plane.DotNormal(SharpDX.Plane,SharpDX.Vector3)\">\n            <summary>\n            Calculates the dot product of the specified vector and the normal of the plane.\n            </summary>\n            <param name=\"left\">The source plane.</param>\n            <param name=\"right\">The source vector.</param>\n            <returns>The dot product of the specified vector and the normal of the plane.</returns>\n        </member>\n        <member name=\"M:SharpDX.Plane.Normalize(SharpDX.Plane@,SharpDX.Plane@)\">\n            <summary>\n            Changes the coefficients of the normal vector of the plane to make it of unit length.\n            </summary>\n            <param name=\"plane\">The source plane.</param>\n            <param name=\"result\">When the method completes, contains the normalized plane.</param>\n        </member>\n        <member name=\"M:SharpDX.Plane.Normalize(SharpDX.Plane)\">\n            <summary>\n            Changes the coefficients of the normal vector of the plane to make it of unit length.\n            </summary>\n            <param name=\"plane\">The source plane.</param>\n            <returns>The normalized plane.</returns>\n        </member>\n        <member name=\"M:SharpDX.Plane.Transform(SharpDX.Plane@,SharpDX.Quaternion@,SharpDX.Plane@)\">\n            <summary>\n            Transforms a normalized plane by a quaternion rotation.\n            </summary>\n            <param name=\"plane\">The normalized source plane.</param>\n            <param name=\"rotation\">The quaternion rotation.</param>\n            <param name=\"result\">When the method completes, contains the transformed plane.</param>\n        </member>\n        <member name=\"M:SharpDX.Plane.Transform(SharpDX.Plane,SharpDX.Quaternion)\">\n            <summary>\n            Transforms a normalized plane by a quaternion rotation.\n            </summary>\n            <param name=\"plane\">The normalized source plane.</param>\n            <param name=\"rotation\">The quaternion rotation.</param>\n            <returns>The transformed plane.</returns>\n        </member>\n        <member name=\"M:SharpDX.Plane.Transform(SharpDX.Plane[],SharpDX.Quaternion@)\">\n            <summary>\n            Transforms an array of normalized planes by a quaternion rotation.\n            </summary>\n            <param name=\"planes\">The array of normalized planes to transform.</param>\n            <param name=\"rotation\">The quaternion rotation.</param>\n            <exception cref=\"T:System.ArgumentNullException\">Thrown when <paramref name=\"planes\"/> is <c>null</c>.</exception>\n        </member>\n        <member name=\"M:SharpDX.Plane.Transform(SharpDX.Plane@,SharpDX.Matrix@,SharpDX.Plane@)\">\n            <summary>\n            Transforms a normalized plane by a matrix.\n            </summary>\n            <param name=\"plane\">The normalized source plane.</param>\n            <param name=\"transformation\">The transformation matrix.</param>\n            <param name=\"result\">When the method completes, contains the transformed plane.</param>\n        </member>\n        <member name=\"M:SharpDX.Plane.Transform(SharpDX.Plane,SharpDX.Matrix)\">\n            <summary>\n            Transforms a normalized plane by a matrix.\n            </summary>\n            <param name=\"plane\">The normalized source plane.</param>\n            <param name=\"transformation\">The transformation matrix.</param>\n            <returns>When the method completes, contains the transformed plane.</returns>\n        </member>\n        <member name=\"M:SharpDX.Plane.Transform(SharpDX.Plane[],SharpDX.Matrix@)\">\n            <summary>\n            Transforms an array of normalized planes by a matrix.\n            </summary>\n            <param name=\"planes\">The array of normalized planes to transform.</param>\n            <param name=\"transformation\">The transformation matrix.</param>\n            <exception cref=\"T:System.ArgumentNullException\">Thrown when <paramref name=\"planes\"/> is <c>null</c>.</exception>\n        </member>\n        <member name=\"M:SharpDX.Plane.op_Multiply(System.Single,SharpDX.Plane)\">\n            <summary>\n            Scales a plane by the given value.\n            </summary>\n            <param name=\"scale\">The amount by which to scale the plane.</param>\n            <param name=\"plane\">The plane to scale.</param>\n            <returns>The scaled plane.</returns>\n        </member>\n        <member name=\"M:SharpDX.Plane.op_Multiply(SharpDX.Plane,System.Single)\">\n            <summary>\n            Scales a plane by the given value.\n            </summary>\n            <param name=\"plane\">The plane to scale.</param>\n            <param name=\"scale\">The amount by which to scale the plane.</param>\n            <returns>The scaled plane.</returns>\n        </member>\n        <member name=\"M:SharpDX.Plane.op_Equality(SharpDX.Plane,SharpDX.Plane)\">\n            <summary>\n            Tests for equality between two objects.\n            </summary>\n            <param name=\"left\">The first value to compare.</param>\n            <param name=\"right\">The second value to compare.</param>\n            <returns><c>true</c> if <paramref name=\"left\"/> has the same value as <paramref name=\"right\"/>; otherwise, <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Plane.op_Inequality(SharpDX.Plane,SharpDX.Plane)\">\n            <summary>\n            Tests for inequality between two objects.\n            </summary>\n            <param name=\"left\">The first value to compare.</param>\n            <param name=\"right\">The second value to compare.</param>\n            <returns><c>true</c> if <paramref name=\"left\"/> has a different value than <paramref name=\"right\"/>; otherwise, <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Plane.ToString\">\n            <summary>\n            Returns a <see cref=\"T:System.String\"/> that represents this instance.\n            </summary>\n            <returns>\n            A <see cref=\"T:System.String\"/> that represents this instance.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Plane.ToString(System.String)\">\n            <summary>\n            Returns a <see cref=\"T:System.String\"/> that represents this instance.\n            </summary>\n            <param name=\"format\">The format.</param>\n            <returns>\n            A <see cref=\"T:System.String\"/> that represents this instance.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Plane.ToString(System.IFormatProvider)\">\n            <summary>\n            Returns a <see cref=\"T:System.String\"/> that represents this instance.\n            </summary>\n            <param name=\"formatProvider\">The format provider.</param>\n            <returns>\n            A <see cref=\"T:System.String\"/> that represents this instance.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Plane.ToString(System.String,System.IFormatProvider)\">\n            <summary>\n            Returns a <see cref=\"T:System.String\"/> that represents this instance.\n            </summary>\n            <param name=\"format\">The format.</param>\n            <param name=\"formatProvider\">The format provider.</param>\n            <returns>\n            A <see cref=\"T:System.String\"/> that represents this instance.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Plane.GetHashCode\">\n            <summary>\n            Returns a hash code for this instance.\n            </summary>\n            <returns>\n            A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. \n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Plane.Equals(SharpDX.Plane)\">\n            <summary>\n            Determines whether the specified <see cref=\"T:SharpDX.Vector4\"/> is equal to this instance.\n            </summary>\n            <param name=\"value\">The <see cref=\"T:SharpDX.Vector4\"/> to compare with this instance.</param>\n            <returns>\n            <c>true</c> if the specified <see cref=\"T:SharpDX.Vector4\"/> is equal to this instance; otherwise, <c>false</c>.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Plane.Equals(System.Object)\">\n            <summary>\n            Determines whether the specified <see cref=\"T:System.Object\"/> is equal to this instance.\n            </summary>\n            <param name=\"value\">The <see cref=\"T:System.Object\"/> to compare with this instance.</param>\n            <returns>\n            <c>true</c> if the specified <see cref=\"T:System.Object\"/> is equal to this instance; otherwise, <c>false</c>.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Plane.SharpDX#Serialization#IDataSerializable#Serialize(SharpDX.Serialization.BinarySerializer)\">\n            <inheritdoc/>\n        </member>\n        <member name=\"P:SharpDX.Plane.Item(System.Int32)\">\n            <summary>\n            Gets or sets the component at the specified index.\n            </summary>\n            <value>The value of the A, B, C, or D component, depending on the index.</value>\n            <param name=\"index\">The index of the component to access. Use 0 for the A component, 1 for the B component, 2 for the C component, and 3 for the D component.</param>\n            <returns>The value of the component at the specified index.</returns>\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">Thrown when the <paramref name=\"index\"/> is out of the range [0, 3].</exception>\n        </member>\n        <member name=\"T:SharpDX.Quaternion\">\n            <summary>\n            Represents a four dimensional mathematical quaternion.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Quaternion.SizeInBytes\">\n            <summary>\n            The size of the <see cref=\"T:SharpDX.Quaternion\"/> type, in bytes.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Quaternion.Zero\">\n            <summary>\n            A <see cref=\"T:SharpDX.Quaternion\"/> with all of its components set to zero.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Quaternion.One\">\n            <summary>\n            A <see cref=\"T:SharpDX.Quaternion\"/> with all of its components set to one.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Quaternion.Identity\">\n            <summary>\n            The identity <see cref=\"T:SharpDX.Quaternion\"/> (0, 0, 0, 1).\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Quaternion.X\">\n            <summary>\n            The X component of the quaternion.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Quaternion.Y\">\n            <summary>\n            The Y component of the quaternion.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Quaternion.Z\">\n            <summary>\n            The Z component of the quaternion.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Quaternion.W\">\n            <summary>\n            The W component of the quaternion.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Quaternion.#ctor(System.Single)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Quaternion\"/> struct.\n            </summary>\n            <param name=\"value\">The value that will be assigned to all components.</param>\n        </member>\n        <member name=\"M:SharpDX.Quaternion.#ctor(SharpDX.Vector4)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Quaternion\"/> struct.\n            </summary>\n            <param name=\"value\">A vector containing the values with which to initialize the components.</param>\n        </member>\n        <member name=\"M:SharpDX.Quaternion.#ctor(SharpDX.Vector3,System.Single)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Quaternion\"/> struct.\n            </summary>\n            <param name=\"value\">A vector containing the values with which to initialize the X, Y, and Z components.</param>\n            <param name=\"w\">Initial value for the W component of the quaternion.</param>\n        </member>\n        <member name=\"M:SharpDX.Quaternion.#ctor(SharpDX.Vector2,System.Single,System.Single)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Quaternion\"/> struct.\n            </summary>\n            <param name=\"value\">A vector containing the values with which to initialize the X and Y components.</param>\n            <param name=\"z\">Initial value for the Z component of the quaternion.</param>\n            <param name=\"w\">Initial value for the W component of the quaternion.</param>\n        </member>\n        <member name=\"M:SharpDX.Quaternion.#ctor(System.Single,System.Single,System.Single,System.Single)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Quaternion\"/> struct.\n            </summary>\n            <param name=\"x\">Initial value for the X component of the quaternion.</param>\n            <param name=\"y\">Initial value for the Y component of the quaternion.</param>\n            <param name=\"z\">Initial value for the Z component of the quaternion.</param>\n            <param name=\"w\">Initial value for the W component of the quaternion.</param>\n        </member>\n        <member name=\"M:SharpDX.Quaternion.#ctor(System.Single[])\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Quaternion\"/> struct.\n            </summary>\n            <param name=\"values\">The values to assign to the X, Y, Z, and W components of the quaternion. This must be an array with four elements.</param>\n            <exception cref=\"T:System.ArgumentNullException\">Thrown when <paramref name=\"values\"/> is <c>null</c>.</exception>\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">Thrown when <paramref name=\"values\"/> contains more or less than four elements.</exception>\n        </member>\n        <member name=\"M:SharpDX.Quaternion.Conjugate\">\n            <summary>\n            Conjugates the quaternion.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Quaternion.Invert\">\n            <summary>\n            Conjugates and renormalizes the quaternion.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Quaternion.Length\">\n            <summary>\n            Calculates the length of the quaternion.\n            </summary>\n            <returns>The length of the quaternion.</returns>\n            <remarks>\n            <see cref=\"M:SharpDX.Quaternion.LengthSquared\"/> may be preferred when only the relative length is needed\n            and speed is of the essence.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Quaternion.LengthSquared\">\n            <summary>\n            Calculates the squared length of the quaternion.\n            </summary>\n            <returns>The squared length of the quaternion.</returns>\n            <remarks>\n            This method may be preferred to <see cref=\"M:SharpDX.Quaternion.Length\"/> when only a relative length is needed\n            and speed is of the essence.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Quaternion.Normalize\">\n            <summary>\n            Converts the quaternion into a unit quaternion.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Quaternion.ToArray\">\n            <summary>\n            Creates an array containing the elements of the quaternion.\n            </summary>\n            <returns>A four-element array containing the components of the quaternion.</returns>\n        </member>\n        <member name=\"M:SharpDX.Quaternion.Add(SharpDX.Quaternion@,SharpDX.Quaternion@,SharpDX.Quaternion@)\">\n            <summary>\n            Adds two quaternions.\n            </summary>\n            <param name=\"left\">The first quaternion to add.</param>\n            <param name=\"right\">The second quaternion to add.</param>\n            <param name=\"result\">When the method completes, contains the sum of the two quaternions.</param>\n        </member>\n        <member name=\"M:SharpDX.Quaternion.Add(SharpDX.Quaternion,SharpDX.Quaternion)\">\n            <summary>\n            Adds two quaternions.\n            </summary>\n            <param name=\"left\">The first quaternion to add.</param>\n            <param name=\"right\">The second quaternion to add.</param>\n            <returns>The sum of the two quaternions.</returns>\n        </member>\n        <member name=\"M:SharpDX.Quaternion.Subtract(SharpDX.Quaternion@,SharpDX.Quaternion@,SharpDX.Quaternion@)\">\n            <summary>\n            Subtracts two quaternions.\n            </summary>\n            <param name=\"left\">The first quaternion to subtract.</param>\n            <param name=\"right\">The second quaternion to subtract.</param>\n            <param name=\"result\">When the method completes, contains the difference of the two quaternions.</param>\n        </member>\n        <member name=\"M:SharpDX.Quaternion.Subtract(SharpDX.Quaternion,SharpDX.Quaternion)\">\n            <summary>\n            Subtracts two quaternions.\n            </summary>\n            <param name=\"left\">The first quaternion to subtract.</param>\n            <param name=\"right\">The second quaternion to subtract.</param>\n            <returns>The difference of the two quaternions.</returns>\n        </member>\n        <member name=\"M:SharpDX.Quaternion.Multiply(SharpDX.Quaternion@,System.Single,SharpDX.Quaternion@)\">\n            <summary>\n            Scales a quaternion by the given value.\n            </summary>\n            <param name=\"value\">The quaternion to scale.</param>\n            <param name=\"scale\">The amount by which to scale the quaternion.</param>\n            <param name=\"result\">When the method completes, contains the scaled quaternion.</param>\n        </member>\n        <member name=\"M:SharpDX.Quaternion.Multiply(SharpDX.Quaternion,System.Single)\">\n            <summary>\n            Scales a quaternion by the given value.\n            </summary>\n            <param name=\"value\">The quaternion to scale.</param>\n            <param name=\"scale\">The amount by which to scale the quaternion.</param>\n            <returns>The scaled quaternion.</returns>\n        </member>\n        <member name=\"M:SharpDX.Quaternion.Multiply(SharpDX.Quaternion@,SharpDX.Quaternion@,SharpDX.Quaternion@)\">\n            <summary>\n            Modulates a quaternion by another.\n            </summary>\n            <param name=\"left\">The first quaternion to modulate.</param>\n            <param name=\"right\">The second quaternion to modulate.</param>\n            <param name=\"result\">When the moethod completes, contains the modulated quaternion.</param>\n        </member>\n        <member name=\"M:SharpDX.Quaternion.Multiply(SharpDX.Quaternion,SharpDX.Quaternion)\">\n            <summary>\n            Modulates a quaternion by another.\n            </summary>\n            <param name=\"left\">The first quaternion to modulate.</param>\n            <param name=\"right\">The second quaternion to modulate.</param>\n            <returns>The modulated quaternion.</returns>\n        </member>\n        <member name=\"M:SharpDX.Quaternion.Negate(SharpDX.Quaternion@,SharpDX.Quaternion@)\">\n            <summary>\n            Reverses the direction of a given quaternion.\n            </summary>\n            <param name=\"value\">The quaternion to negate.</param>\n            <param name=\"result\">When the method completes, contains a quaternion facing in the opposite direction.</param>\n        </member>\n        <member name=\"M:SharpDX.Quaternion.Negate(SharpDX.Quaternion)\">\n            <summary>\n            Reverses the direction of a given quaternion.\n            </summary>\n            <param name=\"value\">The quaternion to negate.</param>\n            <returns>A quaternion facing in the opposite direction.</returns>\n        </member>\n        <member name=\"M:SharpDX.Quaternion.Barycentric(SharpDX.Quaternion@,SharpDX.Quaternion@,SharpDX.Quaternion@,System.Single,System.Single,SharpDX.Quaternion@)\">\n            <summary>\n            Returns a <see cref=\"T:SharpDX.Quaternion\"/> containing the 4D Cartesian coordinates of a point specified in Barycentric coordinates relative to a 2D triangle.\n            </summary>\n            <param name=\"value1\">A <see cref=\"T:SharpDX.Quaternion\"/> containing the 4D Cartesian coordinates of vertex 1 of the triangle.</param>\n            <param name=\"value2\">A <see cref=\"T:SharpDX.Quaternion\"/> containing the 4D Cartesian coordinates of vertex 2 of the triangle.</param>\n            <param name=\"value3\">A <see cref=\"T:SharpDX.Quaternion\"/> containing the 4D Cartesian coordinates of vertex 3 of the triangle.</param>\n            <param name=\"amount1\">Barycentric coordinate b2, which expresses the weighting factor toward vertex 2 (specified in <paramref name=\"value2\"/>).</param>\n            <param name=\"amount2\">Barycentric coordinate b3, which expresses the weighting factor toward vertex 3 (specified in <paramref name=\"value3\"/>).</param>\n            <param name=\"result\">When the method completes, contains a new <see cref=\"T:SharpDX.Quaternion\"/> containing the 4D Cartesian coordinates of the specified point.</param>\n        </member>\n        <member name=\"M:SharpDX.Quaternion.Barycentric(SharpDX.Quaternion,SharpDX.Quaternion,SharpDX.Quaternion,System.Single,System.Single)\">\n            <summary>\n            Returns a <see cref=\"T:SharpDX.Quaternion\"/> containing the 4D Cartesian coordinates of a point specified in Barycentric coordinates relative to a 2D triangle.\n            </summary>\n            <param name=\"value1\">A <see cref=\"T:SharpDX.Quaternion\"/> containing the 4D Cartesian coordinates of vertex 1 of the triangle.</param>\n            <param name=\"value2\">A <see cref=\"T:SharpDX.Quaternion\"/> containing the 4D Cartesian coordinates of vertex 2 of the triangle.</param>\n            <param name=\"value3\">A <see cref=\"T:SharpDX.Quaternion\"/> containing the 4D Cartesian coordinates of vertex 3 of the triangle.</param>\n            <param name=\"amount1\">Barycentric coordinate b2, which expresses the weighting factor toward vertex 2 (specified in <paramref name=\"value2\"/>).</param>\n            <param name=\"amount2\">Barycentric coordinate b3, which expresses the weighting factor toward vertex 3 (specified in <paramref name=\"value3\"/>).</param>\n            <returns>A new <see cref=\"T:SharpDX.Quaternion\"/> containing the 4D Cartesian coordinates of the specified point.</returns>\n        </member>\n        <member name=\"M:SharpDX.Quaternion.Conjugate(SharpDX.Quaternion@,SharpDX.Quaternion@)\">\n            <summary>\n            Conjugates a quaternion.\n            </summary>\n            <param name=\"value\">The quaternion to conjugate.</param>\n            <param name=\"result\">When the method completes, contains the conjugated quaternion.</param>\n        </member>\n        <member name=\"M:SharpDX.Quaternion.Conjugate(SharpDX.Quaternion)\">\n            <summary>\n            Conjugates a quaternion.\n            </summary>\n            <param name=\"value\">The quaternion to conjugate.</param>\n            <returns>The conjugated quaternion.</returns>\n        </member>\n        <member name=\"M:SharpDX.Quaternion.Dot(SharpDX.Quaternion@,SharpDX.Quaternion@,System.Single@)\">\n            <summary>\n            Calculates the dot product of two quaternions.\n            </summary>\n            <param name=\"left\">First source quaternion.</param>\n            <param name=\"right\">Second source quaternion.</param>\n            <param name=\"result\">When the method completes, contains the dot product of the two quaternions.</param>\n        </member>\n        <member name=\"M:SharpDX.Quaternion.Dot(SharpDX.Quaternion,SharpDX.Quaternion)\">\n            <summary>\n            Calculates the dot product of two quaternions.\n            </summary>\n            <param name=\"left\">First source quaternion.</param>\n            <param name=\"right\">Second source quaternion.</param>\n            <returns>The dot product of the two quaternions.</returns>\n        </member>\n        <member name=\"M:SharpDX.Quaternion.Exponential(SharpDX.Quaternion@,SharpDX.Quaternion@)\">\n            <summary>\n            Exponentiates a quaternion.\n            </summary>\n            <param name=\"value\">The quaternion to exponentiate.</param>\n            <param name=\"result\">When the method completes, contains the exponentiated quaternion.</param>\n        </member>\n        <member name=\"M:SharpDX.Quaternion.Exponential(SharpDX.Quaternion)\">\n            <summary>\n            Exponentiates a quaternion.\n            </summary>\n            <param name=\"value\">The quaternion to exponentiate.</param>\n            <returns>The exponentiated quaternion.</returns>\n        </member>\n        <member name=\"M:SharpDX.Quaternion.Invert(SharpDX.Quaternion@,SharpDX.Quaternion@)\">\n            <summary>\n            Conjugates and renormalizes the quaternion.\n            </summary>\n            <param name=\"value\">The quaternion to conjugate and renormalize.</param>\n            <param name=\"result\">When the method completes, contains the conjugated and renormalized quaternion.</param>\n        </member>\n        <member name=\"M:SharpDX.Quaternion.Invert(SharpDX.Quaternion)\">\n            <summary>\n            Conjugates and renormalizes the quaternion.\n            </summary>\n            <param name=\"value\">The quaternion to conjugate and renormalize.</param>\n            <returns>The conjugated and renormalized quaternion.</returns>\n        </member>\n        <member name=\"M:SharpDX.Quaternion.Lerp(SharpDX.Quaternion@,SharpDX.Quaternion@,System.Single,SharpDX.Quaternion@)\">\n            <summary>\n            Performs a linear interpolation between two quaternions.\n            </summary>\n            <param name=\"start\">Start quaternion.</param>\n            <param name=\"end\">End quaternion.</param>\n            <param name=\"amount\">Value between 0 and 1 indicating the weight of <paramref name=\"end\"/>.</param>\n            <param name=\"result\">When the method completes, contains the linear interpolation of the two quaternions.</param>\n            <remarks>\n            This method performs the linear interpolation based on the following formula.\n            <code>start + (end - start) * amount</code>\n            Passing <paramref name=\"amount\"/> a value of 0 will cause <paramref name=\"start\"/> to be returned; a value of 1 will cause <paramref name=\"end\"/> to be returned. \n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Quaternion.Lerp(SharpDX.Quaternion,SharpDX.Quaternion,System.Single)\">\n            <summary>\n            Performs a linear interpolation between two quaternion.\n            </summary>\n            <param name=\"start\">Start quaternion.</param>\n            <param name=\"end\">End quaternion.</param>\n            <param name=\"amount\">Value between 0 and 1 indicating the weight of <paramref name=\"end\"/>.</param>\n            <returns>The linear interpolation of the two quaternions.</returns>\n            <remarks>\n            This method performs the linear interpolation based on the following formula.\n            <code>start + (end - start) * amount</code>\n            Passing <paramref name=\"amount\"/> a value of 0 will cause <paramref name=\"start\"/> to be returned; a value of 1 will cause <paramref name=\"end\"/> to be returned. \n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Quaternion.Logarithm(SharpDX.Quaternion@,SharpDX.Quaternion@)\">\n            <summary>\n            Calculates the natural logarithm of the specified quaternion.\n            </summary>\n            <param name=\"value\">The quaternion whose logarithm will be calculated.</param>\n            <param name=\"result\">When the method completes, contains the natural logarithm of the quaternion.</param>\n        </member>\n        <member name=\"M:SharpDX.Quaternion.Logarithm(SharpDX.Quaternion)\">\n            <summary>\n            Calculates the natural logarithm of the specified quaternion.\n            </summary>\n            <param name=\"value\">The quaternion whose logarithm will be calculated.</param>\n            <returns>The natural logarithm of the quaternion.</returns>\n        </member>\n        <member name=\"M:SharpDX.Quaternion.Normalize(SharpDX.Quaternion@,SharpDX.Quaternion@)\">\n            <summary>\n            Converts the quaternion into a unit quaternion.\n            </summary>\n            <param name=\"value\">The quaternion to normalize.</param>\n            <param name=\"result\">When the method completes, contains the normalized quaternion.</param>\n        </member>\n        <member name=\"M:SharpDX.Quaternion.Normalize(SharpDX.Quaternion)\">\n            <summary>\n            Converts the quaternion into a unit quaternion.\n            </summary>\n            <param name=\"value\">The quaternion to normalize.</param>\n            <returns>The normalized quaternion.</returns>\n        </member>\n        <member name=\"M:SharpDX.Quaternion.RotationAxis(SharpDX.Vector3@,System.Single,SharpDX.Quaternion@)\">\n            <summary>\n            Creates a quaternion given a rotation and an axis.\n            </summary>\n            <param name=\"axis\">The axis of rotation.</param>\n            <param name=\"angle\">The angle of rotation.</param>\n            <param name=\"result\">When the method completes, contains the newly created quaternion.</param>\n        </member>\n        <member name=\"M:SharpDX.Quaternion.RotationAxis(SharpDX.Vector3,System.Single)\">\n            <summary>\n            Creates a quaternion given a rotation and an axis.\n            </summary>\n            <param name=\"axis\">The axis of rotation.</param>\n            <param name=\"angle\">The angle of rotation.</param>\n            <returns>The newly created quaternion.</returns>\n        </member>\n        <member name=\"M:SharpDX.Quaternion.RotationMatrix(SharpDX.Matrix@,SharpDX.Quaternion@)\">\n            <summary>\n            Creates a quaternion given a rotation matrix.\n            </summary>\n            <param name=\"matrix\">The rotation matrix.</param>\n            <param name=\"result\">When the method completes, contains the newly created quaternion.</param>\n        </member>\n        <member name=\"M:SharpDX.Quaternion.RotationMatrix(SharpDX.Matrix)\">\n            <summary>\n            Creates a quaternion given a rotation matrix.\n            </summary>\n            <param name=\"matrix\">The rotation matrix.</param>\n            <returns>The newly created quaternion.</returns>\n        </member>\n        <member name=\"M:SharpDX.Quaternion.RotationYawPitchRoll(System.Single,System.Single,System.Single,SharpDX.Quaternion@)\">\n            <summary>\n            Creates a quaternion given a yaw, pitch, and roll value.\n            </summary>\n            <param name=\"yaw\">The yaw of rotation.</param>\n            <param name=\"pitch\">The pitch of rotation.</param>\n            <param name=\"roll\">The roll of rotation.</param>\n            <param name=\"result\">When the method completes, contains the newly created quaternion.</param>\n        </member>\n        <member name=\"M:SharpDX.Quaternion.RotationYawPitchRoll(System.Single,System.Single,System.Single)\">\n            <summary>\n            Creates a quaternion given a yaw, pitch, and roll value.\n            </summary>\n            <param name=\"yaw\">The yaw of rotation.</param>\n            <param name=\"pitch\">The pitch of rotation.</param>\n            <param name=\"roll\">The roll of rotation.</param>\n            <returns>The newly created quaternion.</returns>\n        </member>\n        <member name=\"M:SharpDX.Quaternion.Slerp(SharpDX.Quaternion@,SharpDX.Quaternion@,System.Single,SharpDX.Quaternion@)\">\n            <summary>\n            Interpolates between two quaternions, using spherical linear interpolation.\n            </summary>\n            <param name=\"start\">Start quaternion.</param>\n            <param name=\"end\">End quaternion.</param>\n            <param name=\"amount\">Value between 0 and 1 indicating the weight of <paramref name=\"end\"/>.</param>\n            <param name=\"result\">When the method completes, contains the spherical linear interpolation of the two quaternions.</param>\n        </member>\n        <member name=\"M:SharpDX.Quaternion.Slerp(SharpDX.Quaternion,SharpDX.Quaternion,System.Single)\">\n            <summary>\n            Interpolates between two quaternions, using spherical linear interpolation.\n            </summary>\n            <param name=\"start\">Start quaternion.</param>\n            <param name=\"end\">End quaternion.</param>\n            <param name=\"amount\">Value between 0 and 1 indicating the weight of <paramref name=\"end\"/>.</param>\n            <returns>The spherical linear interpolation of the two quaternions.</returns>\n        </member>\n        <member name=\"M:SharpDX.Quaternion.Squad(SharpDX.Quaternion@,SharpDX.Quaternion@,SharpDX.Quaternion@,SharpDX.Quaternion@,System.Single,SharpDX.Quaternion@)\">\n            <summary>\n            Interpolates between quaternions, using spherical quadrangle interpolation.\n            </summary>\n            <param name=\"value1\">First source quaternion.</param>\n            <param name=\"value2\">Second source quaternion.</param>\n            <param name=\"value3\">Thrid source quaternion.</param>\n            <param name=\"value4\">Fourth source quaternion.</param>\n            <param name=\"amount\">Value between 0 and 1 indicating the weight of interpolation.</param>\n            <param name=\"result\">When the method completes, contains the spherical quadrangle interpolation of the quaternions.</param>\n        </member>\n        <member name=\"M:SharpDX.Quaternion.Squad(SharpDX.Quaternion,SharpDX.Quaternion,SharpDX.Quaternion,SharpDX.Quaternion,System.Single)\">\n            <summary>\n            Interpolates between quaternions, using spherical quadrangle interpolation.\n            </summary>\n            <param name=\"value1\">First source quaternion.</param>\n            <param name=\"value2\">Second source quaternion.</param>\n            <param name=\"value3\">Thrid source quaternion.</param>\n            <param name=\"value4\">Fourth source quaternion.</param>\n            <param name=\"amount\">Value between 0 and 1 indicating the weight of interpolation.</param>\n            <returns>The spherical quadrangle interpolation of the quaternions.</returns>\n        </member>\n        <member name=\"M:SharpDX.Quaternion.SquadSetup(SharpDX.Quaternion,SharpDX.Quaternion,SharpDX.Quaternion,SharpDX.Quaternion)\">\n            <summary>\n            Sets up control points for spherical quadrangle interpolation.\n            </summary>\n            <param name=\"value1\">First source quaternion.</param>\n            <param name=\"value2\">Second source quaternion.</param>\n            <param name=\"value3\">Third source quaternion.</param>\n            <param name=\"value4\">Fourth source quaternion.</param>\n            <returns>An array of three quaternions that represent control points for spherical quadrangle interpolation.</returns>\n        </member>\n        <member name=\"M:SharpDX.Quaternion.op_Addition(SharpDX.Quaternion,SharpDX.Quaternion)\">\n            <summary>\n            Adds two quaternions.\n            </summary>\n            <param name=\"left\">The first quaternion to add.</param>\n            <param name=\"right\">The second quaternion to add.</param>\n            <returns>The sum of the two quaternions.</returns>\n        </member>\n        <member name=\"M:SharpDX.Quaternion.op_Subtraction(SharpDX.Quaternion,SharpDX.Quaternion)\">\n            <summary>\n            Subtracts two quaternions.\n            </summary>\n            <param name=\"left\">The first quaternion to subtract.</param>\n            <param name=\"right\">The second quaternion to subtract.</param>\n            <returns>The difference of the two quaternions.</returns>\n        </member>\n        <member name=\"M:SharpDX.Quaternion.op_UnaryNegation(SharpDX.Quaternion)\">\n            <summary>\n            Reverses the direction of a given quaternion.\n            </summary>\n            <param name=\"value\">The quaternion to negate.</param>\n            <returns>A quaternion facing in the opposite direction.</returns>\n        </member>\n        <member name=\"M:SharpDX.Quaternion.op_Multiply(System.Single,SharpDX.Quaternion)\">\n            <summary>\n            Scales a quaternion by the given value.\n            </summary>\n            <param name=\"value\">The quaternion to scale.</param>\n            <param name=\"scale\">The amount by which to scale the quaternion.</param>\n            <returns>The scaled quaternion.</returns>\n        </member>\n        <member name=\"M:SharpDX.Quaternion.op_Multiply(SharpDX.Quaternion,System.Single)\">\n            <summary>\n            Scales a quaternion by the given value.\n            </summary>\n            <param name=\"value\">The quaternion to scale.</param>\n            <param name=\"scale\">The amount by which to scale the quaternion.</param>\n            <returns>The scaled quaternion.</returns>\n        </member>\n        <member name=\"M:SharpDX.Quaternion.op_Multiply(SharpDX.Quaternion,SharpDX.Quaternion)\">\n            <summary>\n            Multiplies a quaternion by another.\n            </summary>\n            <param name=\"left\">The first quaternion to multiply.</param>\n            <param name=\"right\">The second quaternion to multiply.</param>\n            <returns>The multiplied quaternion.</returns>\n        </member>\n        <member name=\"M:SharpDX.Quaternion.op_Equality(SharpDX.Quaternion,SharpDX.Quaternion)\">\n            <summary>\n            Tests for equality between two objects.\n            </summary>\n            <param name=\"left\">The first value to compare.</param>\n            <param name=\"right\">The second value to compare.</param>\n            <returns><c>true</c> if <paramref name=\"left\"/> has the same value as <paramref name=\"right\"/>; otherwise, <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Quaternion.op_Inequality(SharpDX.Quaternion,SharpDX.Quaternion)\">\n            <summary>\n            Tests for inequality between two objects.\n            </summary>\n            <param name=\"left\">The first value to compare.</param>\n            <param name=\"right\">The second value to compare.</param>\n            <returns><c>true</c> if <paramref name=\"left\"/> has a different value than <paramref name=\"right\"/>; otherwise, <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Quaternion.ToString\">\n            <summary>\n            Returns a <see cref=\"T:System.String\"/> that represents this instance.\n            </summary>\n            <returns>\n            A <see cref=\"T:System.String\"/> that represents this instance.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Quaternion.ToString(System.String)\">\n            <summary>\n            Returns a <see cref=\"T:System.String\"/> that represents this instance.\n            </summary>\n            <param name=\"format\">The format.</param>\n            <returns>\n            A <see cref=\"T:System.String\"/> that represents this instance.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Quaternion.ToString(System.IFormatProvider)\">\n            <summary>\n            Returns a <see cref=\"T:System.String\"/> that represents this instance.\n            </summary>\n            <param name=\"formatProvider\">The format provider.</param>\n            <returns>\n            A <see cref=\"T:System.String\"/> that represents this instance.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Quaternion.ToString(System.String,System.IFormatProvider)\">\n            <summary>\n            Returns a <see cref=\"T:System.String\"/> that represents this instance.\n            </summary>\n            <param name=\"format\">The format.</param>\n            <param name=\"formatProvider\">The format provider.</param>\n            <returns>\n            A <see cref=\"T:System.String\"/> that represents this instance.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Quaternion.GetHashCode\">\n            <summary>\n            Returns a hash code for this instance.\n            </summary>\n            <returns>\n            A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. \n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Quaternion.SharpDX#Serialization#IDataSerializable#Serialize(SharpDX.Serialization.BinarySerializer)\">\n            <inheritdoc/>\n        </member>\n        <member name=\"M:SharpDX.Quaternion.Equals(SharpDX.Quaternion)\">\n            <summary>\n            Determines whether the specified <see cref=\"T:SharpDX.Quaternion\"/> is equal to this instance.\n            </summary>\n            <param name=\"other\">The <see cref=\"T:SharpDX.Quaternion\"/> to compare with this instance.</param>\n            <returns>\n            <c>true</c> if the specified <see cref=\"T:SharpDX.Quaternion\"/> is equal to this instance; otherwise, <c>false</c>.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Quaternion.Equals(System.Object)\">\n            <summary>\n            Determines whether the specified <see cref=\"T:System.Object\"/> is equal to this instance.\n            </summary>\n            <param name=\"value\">The <see cref=\"T:System.Object\"/> to compare with this instance.</param>\n            <returns>\n            <c>true</c> if the specified <see cref=\"T:System.Object\"/> is equal to this instance; otherwise, <c>false</c>.\n            </returns>\n        </member>\n        <member name=\"P:SharpDX.Quaternion.IsIdentity\">\n            <summary>\n            Gets a value indicating whether this instance is equivalent to the identity quaternion.\n            </summary>\n            <value>\n            <c>true</c> if this instance is an identity quaternion; otherwise, <c>false</c>.\n            </value>\n        </member>\n        <member name=\"P:SharpDX.Quaternion.IsNormalized\">\n            <summary>\n            Gets a value indicting whether this instance is normalized.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Quaternion.Angle\">\n            <summary>\n            Gets the angle of the quaternion.\n            </summary>\n            <value>The quaternion's angle.</value>\n        </member>\n        <member name=\"P:SharpDX.Quaternion.Axis\">\n            <summary>\n            Gets the axis components of the quaternion.\n            </summary>\n            <value>The axis components of the quaternion.</value>\n        </member>\n        <member name=\"P:SharpDX.Quaternion.Item(System.Int32)\">\n            <summary>\n            Gets or sets the component at the specified index.\n            </summary>\n            <value>The value of the X, Y, Z, or W component, depending on the index.</value>\n            <param name=\"index\">The index of the component to access. Use 0 for the X component, 1 for the Y component, 2 for the Z component, and 3 for the W component.</param>\n            <returns>The value of the component at the specified index.</returns>\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">Thrown when the <paramref name=\"index\"/> is out of the range [0, 3].</exception>\n        </member>\n        <member name=\"T:SharpDX.Ray\">\n            <summary>\n            Represents a three dimensional line based on a point in space and a direction.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Ray.Position\">\n            <summary>\n            The position in three dimensional space where the ray starts.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Ray.Direction\">\n            <summary>\n            The normalized direction in which the ray points.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Ray.#ctor(SharpDX.Vector3,SharpDX.Vector3)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Ray\"/> struct.\n            </summary>\n            <param name=\"position\">The position in three dimensional space of the origin of the ray.</param>\n            <param name=\"direction\">The normalized direction of the ray.</param>\n        </member>\n        <member name=\"M:SharpDX.Ray.Intersects(SharpDX.Vector3@)\">\n            <summary>\n            Determines if there is an intersection between the current object and a point.\n            </summary>\n            <param name=\"point\">The point to test.</param>\n            <returns>Whether the two objects intersected.</returns>\n        </member>\n        <member name=\"M:SharpDX.Ray.Intersects(SharpDX.Ray@)\">\n            <summary>\n            Determines if there is an intersection between the current object and a <see cref=\"T:SharpDX.Ray\"/>.\n            </summary>\n            <param name=\"ray\">The ray to test.</param>\n            <returns>Whether the two objects intersected.</returns>\n        </member>\n        <member name=\"M:SharpDX.Ray.Intersects(SharpDX.Ray@,SharpDX.Vector3@)\">\n            <summary>\n            Determines if there is an intersection between the current object and a <see cref=\"T:SharpDX.Ray\"/>.\n            </summary>\n            <param name=\"ray\">The ray to test.</param>\n            <param name=\"point\">When the method completes, contains the point of intersection,\n            or <see cref=\"F:SharpDX.Vector3.Zero\"/> if there was no intersection.</param>\n            <returns>Whether the two objects intersected.</returns>\n        </member>\n        <member name=\"M:SharpDX.Ray.Intersects(SharpDX.Plane@)\">\n            <summary>\n            Determines if there is an intersection between the current object and a <see cref=\"T:SharpDX.Plane\"/>.\n            </summary>\n            <param name=\"plane\">The plane to test</param>\n            <returns>Whether the two objects intersected.</returns>\n        </member>\n        <member name=\"M:SharpDX.Ray.Intersects(SharpDX.Plane@,System.Single@)\">\n            <summary>\n            Determines if there is an intersection between the current object and a <see cref=\"T:SharpDX.Plane\"/>.\n            </summary>\n            <param name=\"plane\">The plane to test.</param>\n            <param name=\"distance\">When the method completes, contains the distance of the intersection,\n            or 0 if there was no intersection.</param>\n            <returns>Whether the two objects intersected.</returns>\n        </member>\n        <member name=\"M:SharpDX.Ray.Intersects(SharpDX.Plane@,SharpDX.Vector3@)\">\n            <summary>\n            Determines if there is an intersection between the current object and a <see cref=\"T:SharpDX.Plane\"/>.\n            </summary>\n            <param name=\"plane\">The plane to test.</param>\n            <param name=\"point\">When the method completes, contains the point of intersection,\n            or <see cref=\"F:SharpDX.Vector3.Zero\"/> if there was no intersection.</param>\n            <returns>Whether the two objects intersected.</returns>\n        </member>\n        <member name=\"M:SharpDX.Ray.Intersects(SharpDX.Vector3@,SharpDX.Vector3@,SharpDX.Vector3@)\">\n            <summary>\n            Determines if there is an intersection between the current object and a triangle.\n            </summary>\n            <param name=\"vertex1\">The first vertex of the triangle to test.</param>\n            <param name=\"vertex2\">The second vertex of the triangle to test.</param>\n            <param name=\"vertex3\">The third vertex of the triangle to test.</param>\n            <returns>Whether the two objects intersected.</returns>\n        </member>\n        <member name=\"M:SharpDX.Ray.Intersects(SharpDX.Vector3@,SharpDX.Vector3@,SharpDX.Vector3@,System.Single@)\">\n            <summary>\n            Determines if there is an intersection between the current object and a triangle.\n            </summary>\n            <param name=\"vertex1\">The first vertex of the triangle to test.</param>\n            <param name=\"vertex2\">The second vertex of the triangle to test.</param>\n            <param name=\"vertex3\">The third vertex of the triangle to test.</param>\n            <param name=\"distance\">When the method completes, contains the distance of the intersection,\n            or 0 if there was no intersection.</param>\n            <returns>Whether the two objects intersected.</returns>\n        </member>\n        <member name=\"M:SharpDX.Ray.Intersects(SharpDX.Vector3@,SharpDX.Vector3@,SharpDX.Vector3@,SharpDX.Vector3@)\">\n            <summary>\n            Determines if there is an intersection between the current object and a triangle.\n            </summary>\n            <param name=\"vertex1\">The first vertex of the triangle to test.</param>\n            <param name=\"vertex2\">The second vertex of the triangle to test.</param>\n            <param name=\"vertex3\">The third vertex of the triangle to test.</param>\n            <param name=\"point\">When the method completes, contains the point of intersection,\n            or <see cref=\"F:SharpDX.Vector3.Zero\"/> if there was no intersection.</param>\n            <returns>Whether the two objects intersected.</returns>\n        </member>\n        <member name=\"M:SharpDX.Ray.Intersects(SharpDX.BoundingBox@)\">\n            <summary>\n            Determines if there is an intersection between the current object and a <see cref=\"T:SharpDX.BoundingBox\"/>.\n            </summary>\n            <param name=\"box\">The box to test.</param>\n            <returns>Whether the two objects intersected.</returns>\n        </member>\n        <member name=\"M:SharpDX.Ray.Intersects(SharpDX.BoundingBox)\">\n            <summary>\n            Determines if there is an intersection between the current object and a <see cref=\"T:SharpDX.BoundingBox\"/>.\n            </summary>\n            <param name=\"box\">The box to test.</param>\n            <returns>Whether the two objects intersected.</returns>\n        </member>\n        <member name=\"M:SharpDX.Ray.Intersects(SharpDX.BoundingBox@,System.Single@)\">\n            <summary>\n            Determines if there is an intersection between the current object and a <see cref=\"T:SharpDX.BoundingBox\"/>.\n            </summary>\n            <param name=\"box\">The box to test.</param>\n            <param name=\"distance\">When the method completes, contains the distance of the intersection,\n            or 0 if there was no intersection.</param>\n            <returns>Whether the two objects intersected.</returns>\n        </member>\n        <member name=\"M:SharpDX.Ray.Intersects(SharpDX.BoundingBox@,SharpDX.Vector3@)\">\n            <summary>\n            Determines if there is an intersection between the current object and a <see cref=\"T:SharpDX.BoundingBox\"/>.\n            </summary>\n            <param name=\"box\">The box to test.</param>\n            <param name=\"point\">When the method completes, contains the point of intersection,\n            or <see cref=\"F:SharpDX.Vector3.Zero\"/> if there was no intersection.</param>\n            <returns>Whether the two objects intersected.</returns>\n        </member>\n        <member name=\"M:SharpDX.Ray.Intersects(SharpDX.BoundingSphere@)\">\n            <summary>\n            Determines if there is an intersection between the current object and a <see cref=\"T:SharpDX.BoundingSphere\"/>.\n            </summary>\n            <param name=\"sphere\">The sphere to test.</param>\n            <returns>Whether the two objects intersected.</returns>\n        </member>\n        <member name=\"M:SharpDX.Ray.Intersects(SharpDX.BoundingSphere)\">\n            <summary>\n            Determines if there is an intersection between the current object and a <see cref=\"T:SharpDX.BoundingSphere\"/>.\n            </summary>\n            <param name=\"sphere\">The sphere to test.</param>\n            <returns>Whether the two objects intersected.</returns>\n        </member>\n        <member name=\"M:SharpDX.Ray.Intersects(SharpDX.BoundingSphere@,System.Single@)\">\n            <summary>\n            Determines if there is an intersection between the current object and a <see cref=\"T:SharpDX.BoundingSphere\"/>.\n            </summary>\n            <param name=\"sphere\">The sphere to test.</param>\n            <param name=\"distance\">When the method completes, contains the distance of the intersection,\n            or 0 if there was no intersection.</param>\n            <returns>Whether the two objects intersected.</returns>\n        </member>\n        <member name=\"M:SharpDX.Ray.Intersects(SharpDX.BoundingSphere@,SharpDX.Vector3@)\">\n            <summary>\n            Determines if there is an intersection between the current object and a <see cref=\"T:SharpDX.BoundingSphere\"/>.\n            </summary>\n            <param name=\"sphere\">The sphere to test.</param>\n            <param name=\"point\">When the method completes, contains the point of intersection,\n            or <see cref=\"F:SharpDX.Vector3.Zero\"/> if there was no intersection.</param>\n            <returns>Whether the two objects intersected.</returns>\n        </member>\n        <member name=\"M:SharpDX.Ray.GetPickRay(System.Int32,System.Int32,SharpDX.ViewportF,SharpDX.Matrix)\">\n            <summary>\n            Calculates a world space <see cref=\"T:SharpDX.Ray\"/> from 2d screen coordinates.\n            </summary>\n            <param name=\"x\">X coordinate on 2d screen.</param>\n            <param name=\"y\">Y coordinate on 2d screen.</param>\n            <param name=\"viewport\"><see cref=\"T:SharpDX.ViewportF\"/>.</param>\n            <param name=\"worldViewProjection\">Transformation <see cref=\"T:SharpDX.Matrix\"/>.</param>\n            <returns>Resulting <see cref=\"T:SharpDX.Ray\"/>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Ray.op_Equality(SharpDX.Ray,SharpDX.Ray)\">\n            <summary>\n            Tests for equality between two objects.\n            </summary>\n            <param name=\"left\">The first value to compare.</param>\n            <param name=\"right\">The second value to compare.</param>\n            <returns><c>true</c> if <paramref name=\"left\"/> has the same value as <paramref name=\"right\"/>; otherwise, <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Ray.op_Inequality(SharpDX.Ray,SharpDX.Ray)\">\n            <summary>\n            Tests for inequality between two objects.\n            </summary>\n            <param name=\"left\">The first value to compare.</param>\n            <param name=\"right\">The second value to compare.</param>\n            <returns><c>true</c> if <paramref name=\"left\"/> has a different value than <paramref name=\"right\"/>; otherwise, <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Ray.ToString\">\n            <summary>\n            Returns a <see cref=\"T:System.String\"/> that represents this instance.\n            </summary>\n            <returns>\n            A <see cref=\"T:System.String\"/> that represents this instance.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Ray.ToString(System.String)\">\n            <summary>\n            Returns a <see cref=\"T:System.String\"/> that represents this instance.\n            </summary>\n            <param name=\"format\">The format.</param>\n            <returns>\n            A <see cref=\"T:System.String\"/> that represents this instance.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Ray.ToString(System.IFormatProvider)\">\n            <summary>\n            Returns a <see cref=\"T:System.String\"/> that represents this instance.\n            </summary>\n            <param name=\"formatProvider\">The format provider.</param>\n            <returns>\n            A <see cref=\"T:System.String\"/> that represents this instance.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Ray.ToString(System.String,System.IFormatProvider)\">\n            <summary>\n            Returns a <see cref=\"T:System.String\"/> that represents this instance.\n            </summary>\n            <param name=\"format\">The format.</param>\n            <param name=\"formatProvider\">The format provider.</param>\n            <returns>\n            A <see cref=\"T:System.String\"/> that represents this instance.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Ray.GetHashCode\">\n            <summary>\n            Returns a hash code for this instance.\n            </summary>\n            <returns>\n            A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. \n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Ray.Equals(SharpDX.Ray)\">\n            <summary>\n            Determines whether the specified <see cref=\"T:SharpDX.Vector4\"/> is equal to this instance.\n            </summary>\n            <param name=\"value\">The <see cref=\"T:SharpDX.Vector4\"/> to compare with this instance.</param>\n            <returns>\n            <c>true</c> if the specified <see cref=\"T:SharpDX.Vector4\"/> is equal to this instance; otherwise, <c>false</c>.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Ray.Equals(System.Object)\">\n            <summary>\n            Determines whether the specified <see cref=\"T:System.Object\"/> is equal to this instance.\n            </summary>\n            <param name=\"value\">The <see cref=\"T:System.Object\"/> to compare with this instance.</param>\n            <returns>\n            <c>true</c> if the specified <see cref=\"T:System.Object\"/> is equal to this instance; otherwise, <c>false</c>.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Ray.SharpDX#Serialization#IDataSerializable#Serialize(SharpDX.Serialization.BinarySerializer)\">\n            <inheritdoc/>\n        </member>\n        <member name=\"T:SharpDX.Rectangle\">\n            <summary>\n            Define a Rectangle. This structure is slightly different from System.Drawing.Rectangle as It is \n            internally storing Left,Top,Right,Bottom instead of Left,Top,Width,Height.\n            Although automatic casting from a to System.Drawing.Rectangle is provided by this class.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Rectangle.Empty\">\n            <summary>\n            An empty rectangle.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Rectangle.#ctor(System.Int32,System.Int32,System.Int32,System.Int32)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Rectangle\"/> struct.\n            </summary>\n            <param name=\"left\">The left.</param>\n            <param name=\"top\">The top.</param>\n            <param name=\"right\">The right.</param>\n            <param name=\"bottom\">The bottom.</param>\n        </member>\n        <member name=\"M:SharpDX.Rectangle.Contains(System.Int32,System.Int32)\">\n            <summary>\n            Checks, if specified point is inside <see cref=\"T:SharpDX.Rectangle\"/>.\n            </summary>\n            <param name=\"x\">X point coordinate.</param>\n            <param name=\"y\">Y point coordinate.</param>\n            <returns><c>true</c> if point is inside <see cref=\"T:SharpDX.Rectangle\"/>, otherwise <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Rectangle.Contains(System.Single,System.Single)\">\n            <summary>\n            Checks, if specified point is inside <see cref=\"T:SharpDX.Rectangle\"/>.\n            </summary>\n            <param name=\"x\">X point coordinate.</param>\n            <param name=\"y\">Y point coordinate.</param>\n            <returns><c>true</c> if point is inside <see cref=\"T:SharpDX.Rectangle\"/>, otherwise <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Rectangle.Contains(SharpDX.Vector2)\">\n            <summary>\n            Checks, if specified <see cref=\"T:SharpDX.Vector2\"/> is inside <see cref=\"T:SharpDX.Rectangle\"/>. \n            </summary> \n            <param name=\"vector2D\">Coordinate <see cref=\"T:SharpDX.Vector2\"/>.</param>\n            <returns><c>true</c> if <see cref=\"T:SharpDX.Vector2\"/> is inside <see cref=\"T:SharpDX.Rectangle\"/>, otherwise <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Rectangle.Contains(SharpDX.DrawingPoint)\">\n            <summary>\n            Checks, if specified <see cref=\"T:SharpDX.DrawingPoint\"/> is inside <see cref=\"T:SharpDX.Rectangle\"/>. \n            </summary>\n            <param name=\"point\">Coordinate <see cref=\"T:SharpDX.DrawingPoint\"/>.</param> \n            <returns><c>true</c> if <see cref=\"T:SharpDX.DrawingPoint\"/> is inside <see cref=\"T:SharpDX.Rectangle\"/>, otherwise <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Rectangle.Contains(SharpDX.DrawingPointF)\">\n            <summary>\n            Checks, if specified <see cref=\"T:SharpDX.DrawingPointF\"/> is inside <see cref=\"T:SharpDX.Rectangle\"/>. \n            </summary>\n            <param name=\"point\">Coordinate <see cref=\"T:SharpDX.DrawingPointF\"/>.</param> \n            <returns><c>true</c> if <see cref=\"T:SharpDX.DrawingPointF\"/> is inside <see cref=\"T:SharpDX.Rectangle\"/>, otherwise <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Rectangle.Equals(System.Object)\">\n            <summary>\n            Determines whether the specified <see cref=\"T:System.Object\"/> is equal to this instance.\n            </summary>\n            <param name=\"obj\">The <see cref=\"T:System.Object\"/> to compare with this instance.</param>\n            <returns>\n            <c>true</c> if the specified <see cref=\"T:System.Object\"/> is equal to this instance; otherwise, <c>false</c>.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Rectangle.Equals(SharpDX.Rectangle)\">\n            <summary>\n            Determines whether the specified <see cref=\"T:SharpDX.Rectangle\"/> is equal to this instance.\n            </summary>\n            <param name=\"other\">The <see cref=\"T:SharpDX.Rectangle\"/> to compare with this instance.</param>\n            <returns>\n            <c>true</c> if the specified <see cref=\"T:SharpDX.Rectangle\"/> is equal to this instance; otherwise, <c>false</c>.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Rectangle.GetHashCode\">\n            <summary>\n            Returns a hash code for this instance.\n            </summary>\n            <returns>\n            A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. \n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Rectangle.op_Implicit(SharpDX.DrawingRectangle)~SharpDX.Rectangle\">\n            <summary>\n            Performs an implicit conversion from <see cref=\"T:SharpDX.DrawingRectangle\"/> to <see cref=\"T:SharpDX.Rectangle\"/>.\n            </summary>\n            <param name=\"input\">The input.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"M:SharpDX.Rectangle.op_Implicit(SharpDX.Rectangle)~SharpDX.DrawingRectangle\">\n            <summary>\n            Performs an implicit conversion from <see cref=\"T:SharpDX.Rectangle\"/> to <see cref=\"T:SharpDX.DrawingRectangle\"/>.\n            </summary>\n            <param name=\"input\">The input.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"M:SharpDX.Rectangle.op_Equality(SharpDX.Rectangle,SharpDX.Rectangle)\">\n            <summary>\n            Implements the operator ==.\n            </summary>\n            <param name=\"left\">The left.</param>\n            <param name=\"right\">The right.</param>\n            <returns>The result of the operator.</returns>\n        </member>\n        <member name=\"M:SharpDX.Rectangle.op_Inequality(SharpDX.Rectangle,SharpDX.Rectangle)\">\n            <summary>\n            Implements the operator !=.\n            </summary>\n            <param name=\"left\">The left.</param>\n            <param name=\"right\">The right.</param>\n            <returns>The result of the operator.</returns>\n        </member>\n        <member name=\"M:SharpDX.Rectangle.SharpDX#Serialization#IDataSerializable#Serialize(SharpDX.Serialization.BinarySerializer)\">\n            <inheritdoc/>\n        </member>\n        <member name=\"P:SharpDX.Rectangle.Left\">\n            <summary>\n            Gets or sets the left.\n            </summary>\n            <value>The left.</value>\n        </member>\n        <member name=\"P:SharpDX.Rectangle.Top\">\n            <summary>\n            Gets or sets the top.\n            </summary>\n            <value>The top.</value>\n        </member>\n        <member name=\"P:SharpDX.Rectangle.Right\">\n            <summary>\n            Gets or sets the right.\n            </summary>\n            <value>The right.</value>\n        </member>\n        <member name=\"P:SharpDX.Rectangle.Bottom\">\n            <summary>\n            Gets or sets the bottom.\n            </summary>\n            <value>The bottom.</value>\n        </member>\n        <member name=\"P:SharpDX.Rectangle.X\">\n            <summary>\n            Gets the left position.\n            </summary>\n            <value>The left position.</value>\n        </member>\n        <member name=\"P:SharpDX.Rectangle.Y\">\n            <summary>\n            Gets the top position.\n            </summary>\n            <value>The top position.</value>\n        </member>\n        <member name=\"P:SharpDX.Rectangle.Width\">\n            <summary>\n            Gets the width.\n            </summary>\n            <value>The width.</value>\n        </member>\n        <member name=\"P:SharpDX.Rectangle.Height\">\n            <summary>\n            Gets the height.\n            </summary>\n            <value>The height.</value>\n        </member>\n        <member name=\"T:SharpDX.RectangleF\">\n            <summary>\n            Define a RectangleF. This structure is slightly different from System.Drawing.RectangleF as It is \n            internally storing Left,Top,Right,Bottom instead of Left,Top,Width,Height.\n            Although automatic casting from a to System.Drawing.Rectangle is provided by this class.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.RectangleF.Empty\">\n            <summary>\n            An empty rectangle\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.RectangleF.#ctor(System.Single,System.Single,System.Single,System.Single)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.RectangleF\"/> struct.\n            </summary>\n            <param name=\"left\">The left.</param>\n            <param name=\"top\">The top.</param>\n            <param name=\"right\">The right.</param>\n            <param name=\"bottom\">The bottom.</param>\n        </member>\n        <member name=\"M:SharpDX.RectangleF.Contains(System.Int32,System.Int32)\">\n            <summary>\n            Checks, if specified point is inside <see cref=\"T:SharpDX.RectangleF\"/>.\n            </summary>\n            <param name=\"x\">X point coordinate.</param>\n            <param name=\"y\">Y point coordinate.</param>\n            <returns><c>true</c> if point is inside <see cref=\"T:SharpDX.RectangleF\"/>, otherwise <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.RectangleF.Contains(System.Single,System.Single)\">\n            <summary>\n            Checks, if specified point is inside <see cref=\"T:SharpDX.RectangleF\"/>.\n            </summary>\n            <param name=\"x\">X point coordinate.</param>\n            <param name=\"y\">Y point coordinate.</param>\n            <returns><c>true</c> if point is inside <see cref=\"T:SharpDX.RectangleF\"/>, otherwise <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.RectangleF.Contains(SharpDX.Vector2)\">\n            <summary>\n            Checks, if specified <see cref=\"T:SharpDX.Vector2\"/> is inside <see cref=\"T:SharpDX.RectangleF\"/>. \n            </summary> \n            <param name=\"vector2D\">Coordinate <see cref=\"T:SharpDX.Vector2\"/>.</param>\n            <returns><c>true</c> if <see cref=\"T:SharpDX.Vector2\"/> is inside <see cref=\"T:SharpDX.RectangleF\"/>, otherwise <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.RectangleF.Contains(SharpDX.DrawingPoint)\">\n            <summary>\n            Checks, if specified <see cref=\"T:SharpDX.DrawingPoint\"/> is inside <see cref=\"T:SharpDX.RectangleF\"/>. \n            </summary>\n            <param name=\"point\">Coordinate <see cref=\"T:SharpDX.DrawingPoint\"/>.</param> \n            <returns><c>true</c> if <see cref=\"T:SharpDX.DrawingPoint\"/> is inside <see cref=\"T:SharpDX.RectangleF\"/>, otherwise <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.RectangleF.Contains(SharpDX.DrawingPointF)\">\n            <summary>\n            Checks, if specified <see cref=\"T:SharpDX.DrawingPointF\"/> is inside <see cref=\"T:SharpDX.RectangleF\"/>. \n            </summary>\n            <param name=\"point\">Coordinate <see cref=\"T:SharpDX.DrawingPointF\"/>.</param> \n            <returns><c>true</c> if <see cref=\"T:SharpDX.DrawingPointF\"/> is inside <see cref=\"T:SharpDX.RectangleF\"/>, otherwise <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.RectangleF.Equals(System.Object)\">\n            <summary>\n            Determines whether the specified <see cref=\"T:System.Object\"/> is equal to this instance.\n            </summary>\n            <param name=\"obj\">The <see cref=\"T:System.Object\"/> to compare with this instance.</param>\n            <returns>\n            \t<c>true</c> if the specified <see cref=\"T:System.Object\"/> is equal to this instance; otherwise, <c>false</c>.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.RectangleF.Equals(SharpDX.RectangleF)\">\n            <inheritdoc/>\n        </member>\n        <member name=\"M:SharpDX.RectangleF.GetHashCode\">\n            <summary>\n            Returns a hash code for this instance.\n            </summary>\n            <returns>\n            A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. \n            </returns>\n        </member>\n        <member name=\"M:SharpDX.RectangleF.op_Implicit(SharpDX.DrawingRectangleF)~SharpDX.RectangleF\">\n            <summary>\n            Performs an implicit conversion from <see cref=\"T:System.Drawing.RectangleF\"/> to <see cref=\"T:SharpDX.RectangleF\"/>.\n            </summary>\n            <param name=\"input\">The input.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"M:SharpDX.RectangleF.op_Implicit(SharpDX.RectangleF)~SharpDX.DrawingRectangleF\">\n            <summary>\n            Rectangles the F.\n            </summary>\n            <param name=\"input\">The input.</param>\n            <returns></returns>\n        </member>\n        <member name=\"M:SharpDX.RectangleF.op_Equality(SharpDX.RectangleF,SharpDX.RectangleF)\">\n            <summary>\n            Implements the operator ==.\n            </summary>\n            <param name=\"left\">The left.</param>\n            <param name=\"right\">The right.</param>\n            <returns>The result of the operator.</returns>\n        </member>\n        <member name=\"M:SharpDX.RectangleF.op_Inequality(SharpDX.RectangleF,SharpDX.RectangleF)\">\n            <summary>\n            Implements the operator !=.\n            </summary>\n            <param name=\"left\">The left.</param>\n            <param name=\"right\">The right.</param>\n            <returns>The result of the operator.</returns>\n        </member>\n        <member name=\"M:SharpDX.RectangleF.SharpDX#Serialization#IDataSerializable#Serialize(SharpDX.Serialization.BinarySerializer)\">\n            <inheritdoc/>\n        </member>\n        <member name=\"P:SharpDX.RectangleF.Left\">\n            <summary>\n            Gets or sets the left.\n            </summary>\n            <value>The left.</value>\n        </member>\n        <member name=\"P:SharpDX.RectangleF.Top\">\n            <summary>\n            Gets or sets the top.\n            </summary>\n            <value>The top.</value>\n        </member>\n        <member name=\"P:SharpDX.RectangleF.Right\">\n            <summary>\n            Gets or sets the right.\n            </summary>\n            <value>The right.</value>\n        </member>\n        <member name=\"P:SharpDX.RectangleF.Bottom\">\n            <summary>\n            Gets or sets the bottom.\n            </summary>\n            <value>The bottom.</value>\n        </member>\n        <member name=\"P:SharpDX.RectangleF.X\">\n            <summary>\n            Gets or sets the left position.\n            </summary>\n            <value>The left position.</value>\n        </member>\n        <member name=\"P:SharpDX.RectangleF.Y\">\n            <summary>\n            Gets or sets the top position.\n            </summary>\n            <value>The top position.</value>\n        </member>\n        <member name=\"P:SharpDX.RectangleF.Width\">\n            <summary>\n            Gets or sets the width.\n            </summary>\n            <value>The width.</value>\n        </member>\n        <member name=\"P:SharpDX.RectangleF.Height\">\n            <summary>\n            Gets or sets the height.\n            </summary>\n            <value>The height.</value>\n        </member>\n        <member name=\"T:SharpDX.Result\">\n            <summary>\n            Result structure for COM methods.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Result.#ctor(System.Int32)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Result\"/> struct.\n            </summary>\n            <param name=\"code\">The HRESULT error code.</param>\n        </member>\n        <member name=\"M:SharpDX.Result.#ctor(System.UInt32)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Result\"/> struct.\n            </summary>\n            <param name=\"code\">The HRESULT error code.</param>\n        </member>\n        <member name=\"M:SharpDX.Result.op_Explicit(SharpDX.Result)~System.Int32\">\n            <summary>\n            Performs an implicit conversion from <see cref=\"T:SharpDX.Result\"/> to <see cref=\"T:System.Int32\"/>.\n            </summary>\n            <param name=\"result\">The result.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"M:SharpDX.Result.op_Explicit(SharpDX.Result)~System.UInt32\">\n            <summary>\n            Performs an implicit conversion from <see cref=\"T:SharpDX.Result\"/> to <see cref=\"T:System.UInt32\"/>.\n            </summary>\n            <param name=\"result\">The result.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"M:SharpDX.Result.op_Implicit(System.Int32)~SharpDX.Result\">\n            <summary>\n            Performs an implicit conversion from <see cref=\"T:System.Int32\"/> to <see cref=\"T:SharpDX.Result\"/>.\n            </summary>\n            <param name=\"result\">The result.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"M:SharpDX.Result.op_Implicit(System.UInt32)~SharpDX.Result\">\n            <summary>\n            Performs an implicit conversion from <see cref=\"T:System.UInt32\"/> to <see cref=\"T:SharpDX.Result\"/>.\n            </summary>\n            <param name=\"result\">The result.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"M:SharpDX.Result.Equals(SharpDX.Result)\">\n            <summary>\n            Equalses the specified other.\n            </summary>\n            <param name=\"other\">The other.</param>\n            <returns></returns>\n        </member>\n        <member name=\"M:SharpDX.Result.Equals(System.Object)\">\n            <summary>\n            Determines whether the specified <see cref=\"T:System.Object\"/> is equal to this instance.\n            </summary>\n            <param name=\"obj\">The <see cref=\"T:System.Object\"/> to compare with this instance.</param>\n            <returns>\n            \t<c>true</c> if the specified <see cref=\"T:System.Object\"/> is equal to this instance; otherwise, <c>false</c>.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Result.GetHashCode\">\n            <summary>\n            Returns a hash code for this instance.\n            </summary>\n            <returns>\n            A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. \n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Result.SharpDX#Serialization#IDataSerializable#Serialize(SharpDX.Serialization.BinarySerializer)\">\n            <inheritdoc/>\n        </member>\n        <member name=\"M:SharpDX.Result.op_Equality(SharpDX.Result,SharpDX.Result)\">\n            <summary>\n            Implements the operator ==.\n            </summary>\n            <param name=\"left\">The left.</param>\n            <param name=\"right\">The right.</param>\n            <returns>The result of the operator.</returns>\n        </member>\n        <member name=\"M:SharpDX.Result.op_Inequality(SharpDX.Result,SharpDX.Result)\">\n            <summary>\n            Implements the operator !=.\n            </summary>\n            <param name=\"left\">The left.</param>\n            <param name=\"right\">The right.</param>\n            <returns>The result of the operator.</returns>\n        </member>\n        <member name=\"M:SharpDX.Result.ToString\">\n            <summary>\n            Returns a <see cref=\"T:System.String\"/> that represents this instance.\n            </summary>\n            <returns>\n            A <see cref=\"T:System.String\"/> that represents this instance.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Result.CheckError\">\n            <summary>\n            Checks the error.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Result.GetResultFromException(System.Exception)\">\n            <summary>\n            Gets a <see cref=\"T:SharpDX.Result\"/> from an <see cref=\"T:System.Exception\"/>.\n            </summary>\n            <param name=\"ex\">The exception</param>\n            <returns>The associated result code</returns>\n        </member>\n        <member name=\"M:SharpDX.Result.GetResultFromWin32Error(System.Int32)\">\n            <summary>\n            Gets the result from win32 error.\n            </summary>\n            <param name=\"win32Error\">The win32Error.</param>\n            <returns>A HRESULT.</returns>\n        </member>\n        <member name=\"F:SharpDX.Result.Ok\">\n            <summary>\n            Result code Ok\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Result.False\">\n            <summary>\n            Result code False\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Result.Abord\">\n            <summary>\n            Result code Abord\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Result.AccessDenied\">\n            <summary>\n            Result code AccessDenied\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Result.Fail\">\n            <summary>\n            Result code Fail\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Result.Handle\">\n            <summary>\n            Resuld code Handle\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Result.InvalidArg\">\n            <summary>\n            Result code invalid argument\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Result.NoInterface\">\n            <summary>\n            Result code no interface\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Result.NotImplemented\">\n            <summary>\n            Result code not implemented\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Result.OutOfMemory\">\n            <summary>\n            Result code out of memory\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Result.InvalidPointer\">\n            <summary>\n            Result code Invalid pointer\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Result.UnexpectedFailure\">\n            <summary>\n            Unexpected failure\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Result.Code\">\n            <summary>\n            Gets the HRESULT error code.\n            </summary>\n            <value>The HRESULT error code.</value>\n        </member>\n        <member name=\"P:SharpDX.Result.Success\">\n            <summary>\n            Gets a value indicating whether this <see cref=\"T:SharpDX.Result\"/> is success.\n            </summary>\n            <value><c>true</c> if success; otherwise, <c>false</c>.</value>\n        </member>\n        <member name=\"P:SharpDX.Result.Failure\">\n            <summary>\n            Gets a value indicating whether this <see cref=\"T:SharpDX.Result\"/> is failure.\n            </summary>\n            <value><c>true</c> if failure; otherwise, <c>false</c>.</value>\n        </member>\n        <member name=\"T:SharpDX.PointerSize\">\n            <summary>\n              The maximum number of bytes to which a pointer can point. Use for a count that must span the full range of a pointer.\n              Equivalent to Windows type SIZE_T.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.PointerSize.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.PointerSize\"/> struct.\n            </summary>\n            <param name=\"size\">The size.</param>\n        </member>\n        <member name=\"M:SharpDX.PointerSize.#ctor(System.Void*)\">\n            <summary>\n              Default constructor.\n            </summary>\n            <param name = \"size\">value to set</param>\n        </member>\n        <member name=\"M:SharpDX.PointerSize.#ctor(System.Int32)\">\n            <summary>\n              Default constructor.\n            </summary>\n            <param name = \"size\">value to set</param>\n        </member>\n        <member name=\"M:SharpDX.PointerSize.#ctor(System.Int64)\">\n            <summary>\n              Default constructor.\n            </summary>\n            <param name = \"size\">value to set</param>\n        </member>\n        <member name=\"M:SharpDX.PointerSize.ToString\">\n            <summary>\n              Returns a <see cref=\"T:System.String\"/> that represents this instance.\n            </summary>\n            <returns>\n              A <see cref=\"T:System.String\"/> that represents this instance.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.PointerSize.ToString(System.String)\">\n            <summary>\n              Returns a <see cref=\"T:System.String\"/> that represents this instance.\n            </summary>\n            <param name=\"format\">The format.</param>\n            <returns>\n              A <see cref=\"T:System.String\"/> that represents this instance.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.PointerSize.GetHashCode\">\n            <summary>\n              Returns a hash code for this instance.\n            </summary>\n            <returns>\n              A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. \n            </returns>\n        </member>\n        <member name=\"M:SharpDX.PointerSize.Equals(SharpDX.PointerSize)\">\n            <summary>\n              Determines whether the specified <see cref=\"T:SharpDX.PointerSize\"/> is equal to this instance.\n            </summary>\n            <param name=\"other\">The <see cref=\"T:SharpDX.PointerSize\"/> to compare with this instance.</param>\n            <returns>\n              <c>true</c> if the specified <see cref=\"T:SharpDX.PointerSize\"/> is equal to this instance; otherwise, <c>false</c>.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.PointerSize.Equals(System.Object)\">\n            <summary>\n              Determines whether the specified <see cref=\"T:System.Object\"/> is equal to this instance.\n            </summary>\n            <param name=\"value\">The <see cref=\"T:System.Object\"/> to compare with this instance.</param>\n            <returns>\n              <c>true</c> if the specified <see cref=\"T:System.Object\"/> is equal to this instance; otherwise, <c>false</c>.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.PointerSize.op_Addition(SharpDX.PointerSize,SharpDX.PointerSize)\">\n            <summary>\n              Adds two sizes.\n            </summary>\n            <param name = \"left\">The first size to add.</param>\n            <param name = \"right\">The second size to add.</param>\n            <returns>The sum of the two sizes.</returns>\n        </member>\n        <member name=\"M:SharpDX.PointerSize.op_UnaryPlus(SharpDX.PointerSize)\">\n            <summary>\n              Assert a size (return it unchanged).\n            </summary>\n            <param name = \"value\">The size to assert (unchange).</param>\n            <returns>The asserted (unchanged) size.</returns>\n        </member>\n        <member name=\"M:SharpDX.PointerSize.op_Subtraction(SharpDX.PointerSize,SharpDX.PointerSize)\">\n            <summary>\n              Subtracts two sizes.\n            </summary>\n            <param name = \"left\">The first size to subtract.</param>\n            <param name = \"right\">The second size to subtract.</param>\n            <returns>The difference of the two sizes.</returns>\n        </member>\n        <member name=\"M:SharpDX.PointerSize.op_UnaryNegation(SharpDX.PointerSize)\">\n            <summary>\n              Reverses the direction of a given size.\n            </summary>\n            <param name = \"value\">The size to negate.</param>\n            <returns>A size facing in the opposite direction.</returns>\n        </member>\n        <member name=\"M:SharpDX.PointerSize.op_Multiply(System.Int32,SharpDX.PointerSize)\">\n            <summary>\n              Scales a size by the given value.\n            </summary>\n            <param name = \"value\">The size to scale.</param>\n            <param name = \"scale\">The amount by which to scale the size.</param>\n            <returns>The scaled size.</returns>\n        </member>\n        <member name=\"M:SharpDX.PointerSize.op_Multiply(SharpDX.PointerSize,System.Int32)\">\n            <summary>\n              Scales a size by the given value.\n            </summary>\n            <param name = \"value\">The size to scale.</param>\n            <param name = \"scale\">The amount by which to scale the size.</param>\n            <returns>The scaled size.</returns>\n        </member>\n        <member name=\"M:SharpDX.PointerSize.op_Division(SharpDX.PointerSize,System.Int32)\">\n            <summary>\n              Scales a size by the given value.\n            </summary>\n            <param name = \"value\">The size to scale.</param>\n            <param name = \"scale\">The amount by which to scale the size.</param>\n            <returns>The scaled size.</returns>\n        </member>\n        <member name=\"M:SharpDX.PointerSize.op_Equality(SharpDX.PointerSize,SharpDX.PointerSize)\">\n            <summary>\n              Tests for equality between two objects.\n            </summary>\n            <param name = \"left\">The first value to compare.</param>\n            <param name = \"right\">The second value to compare.</param>\n            <returns><c>true</c> if <paramref name = \"left\" /> has the same value as <paramref name = \"right\" />; otherwise, <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.PointerSize.op_Inequality(SharpDX.PointerSize,SharpDX.PointerSize)\">\n            <summary>\n              Tests for inequality between two objects.\n            </summary>\n            <param name = \"left\">The first value to compare.</param>\n            <param name = \"right\">The second value to compare.</param>\n            <returns><c>true</c> if <paramref name = \"left\" /> has a different value than <paramref name = \"right\" />; otherwise, <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.PointerSize.op_Implicit(SharpDX.PointerSize)~System.Int32\">\n            <summary>\n              Performs an implicit conversion from <see cref=\"T:SharpDX.PointerSize\"/> to <see cref=\"T:System.Int32\"/>.\n            </summary>\n            <param name=\"value\">The value.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"M:SharpDX.PointerSize.op_Implicit(SharpDX.PointerSize)~System.Int64\">\n            <summary>\n              Performs an implicit conversion from <see cref=\"T:SharpDX.PointerSize\"/> to <see cref=\"T:System.Int64\"/>.\n            </summary>\n            <param name=\"value\">The value.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"M:SharpDX.PointerSize.op_Implicit(System.Int32)~SharpDX.PointerSize\">\n            <summary>\n              Performs an implicit conversion from <see cref=\"T:SharpDX.PointerSize\"/> to <see cref=\"T:System.Int32\"/>.\n            </summary>\n            <param name=\"value\">The value.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"M:SharpDX.PointerSize.op_Implicit(System.Int64)~SharpDX.PointerSize\">\n            <summary>\n              Performs an implicit conversion from <see cref=\"T:SharpDX.PointerSize\"/> to <see cref=\"T:System.Int64\"/>.\n            </summary>\n            <param name=\"value\">The value.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"M:SharpDX.PointerSize.op_Implicit(System.IntPtr)~SharpDX.PointerSize\">\n            <summary>\n            Performs an implicit conversion from <see cref=\"T:System.IntPtr\"/> to <see cref=\"T:SharpDX.PointerSize\"/>.\n            </summary>\n            <param name=\"value\">The value.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"M:SharpDX.PointerSize.op_Implicit(SharpDX.PointerSize)~System.IntPtr\">\n            <summary>\n              Performs an implicit conversion from <see cref=\"T:SharpDX.PointerSize\"/> to <see cref=\"T:System.IntPtr\"/>.\n            </summary>\n            <param name=\"value\">The value.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"M:SharpDX.PointerSize.op_Implicit(System.Void*)~SharpDX.PointerSize\">\n            <summary>\n              Performs an implicit conversion from void* to <see cref=\"T:SharpDX.PointerSize\"/>.\n            </summary>\n            <param name=\"value\">The value.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"M:SharpDX.PointerSize.op_Implicit(SharpDX.PointerSize)~System.Void*\">\n            <summary>\n              Performs an implicit conversion from <see cref=\"T:SharpDX.PointerSize\"/> to void*.\n            </summary>\n            <param name=\"value\">The value.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"T:SharpDX.GetValueFastDelegate`1\">\n            <summary>\n            A Delegate to get a property value from an object.\n            </summary>\n            <typeparam name=\"T\">Type of the getter.</typeparam>\n            <param name=\"obj\">The obj to get the property from.</param>\n            <param name=\"value\">The value to get.</param>\n        </member>\n        <member name=\"T:SharpDX.SetValueFastDelegate`1\">\n            <summary>\n            A Delegate to set a property value to an object.\n            </summary>\n            <typeparam name=\"T\">Type of the setter.</typeparam>\n            <param name=\"obj\">The obj to set the property from.</param>\n            <param name=\"value\">The value to set.</param>\n        </member>\n        <member name=\"T:SharpDX.Utilities\">\n            <summary>\n            Utility class.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Utilities.CopyMemory(System.IntPtr,System.IntPtr,System.Int32)\">\n            <summary>\n            Native memcpy.\n            </summary>\n            <param name=\"dest\">The destination memory location.</param>\n            <param name=\"src\">The source memory location.</param>\n            <param name=\"sizeInBytesToCopy\">The byte count.</param>\n        </member>\n        <member name=\"M:SharpDX.Utilities.CompareMemory(System.IntPtr,System.IntPtr,System.Int32)\">\n            <summary>\n            Compares two block of memory.\n            </summary>\n            <param name=\"from\">The pointer to compare from.</param>\n            <param name=\"against\">The pointer to compare against.</param>\n            <param name=\"sizeToCompare\">The size in bytes to compare.</param>\n            <returns><c>true</c> if the buffers are equivalent; otherwise, <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Utilities.ClearMemory(System.IntPtr,System.Byte,System.Int32)\">\n            <summary>\n            Clears the memory.\n            </summary>\n            <param name=\"dest\">The dest.</param>\n            <param name=\"value\">The value.</param>\n            <param name=\"sizeInBytesToClear\">The size in bytes to clear.</param>\n        </member>\n        <member name=\"M:SharpDX.Utilities.SizeOf``1\">\n            <summary>\n            Return the sizeof a struct from a CLR. Equivalent to sizeof operator but works on generics too.\n            </summary>\n            <typeparam name=\"T\">A struct to evaluate.</typeparam>\n            <returns>Size of this struct.</returns>\n        </member>\n        <member name=\"M:SharpDX.Utilities.SizeOf``1(``0[])\">\n            <summary>\n            Return the sizeof an array of struct. Equivalent to sizeof operator but works on generics too.\n            </summary>\n            <typeparam name=\"T\">A struct.</typeparam>\n            <param name=\"array\">The array of struct to evaluate.</param>\n            <returns>Size in bytes of this array of struct.</returns>\n        </member>\n        <member name=\"M:SharpDX.Utilities.Pin``1(``0@,System.Action{System.IntPtr})\">\n            <summary>\n            Pins the specified source and call an action with the pinned pointer.\n            </summary>\n            <typeparam name=\"T\">The type of the structure to pin.</typeparam>\n            <param name=\"source\">The source.</param>\n            <param name=\"pinAction\">The pin action to perform on the pinned pointer.</param>\n        </member>\n        <member name=\"M:SharpDX.Utilities.Pin``1(``0[],System.Action{System.IntPtr})\">\n            <summary>\n            Pins the specified source and call an action with the pinned pointer.\n            </summary>\n            <typeparam name=\"T\">The type of the structure to pin.</typeparam>\n            <param name=\"source\">The source array.</param>\n            <param name=\"pinAction\">The pin action to perform on the pinned pointer.</param>\n        </member>\n        <member name=\"M:SharpDX.Utilities.ToByteArray``1(``0[])\">\n            <summary>\n            Converts a structured array to an equivalent byte array.\n            </summary>\n            <typeparam name=\"T\">The type of source array.</typeparam>\n            <param name=\"source\">The source array.</param>\n            <returns>Converted byte array.</returns>\n        </member>\n        <member name=\"M:SharpDX.Utilities.Read``1(System.IntPtr)\">\n            <summary>\n            Reads the specified T data from a memory location.\n            </summary>\n            <typeparam name=\"T\">Type of a data to read.</typeparam>\n            <param name=\"source\">Memory location to read from.</param>\n            <returns>The data read from the memory location.</returns>\n        </member>\n        <member name=\"M:SharpDX.Utilities.Read``1(System.IntPtr,``0@)\">\n            <summary>\n            Reads the specified T data from a memory location.\n            </summary>\n            <typeparam name=\"T\">Type of a data to read.</typeparam>\n            <param name=\"source\">Memory location to read from.</param>\n            <param name=\"data\">The data write to.</param>\n            <returns>source pointer + sizeof(T).</returns>\n        </member>\n        <member name=\"M:SharpDX.Utilities.ReadOut``1(System.IntPtr,``0@)\">\n            <summary>\n            Reads the specified T data from a memory location.\n            </summary>\n            <typeparam name=\"T\">Type of a data to read.</typeparam>\n            <param name=\"source\">Memory location to read from.</param>\n            <param name=\"data\">The data write to.</param>\n            <returns>source pointer + sizeof(T).</returns>\n        </member>\n        <member name=\"M:SharpDX.Utilities.ReadAndPosition``1(System.IntPtr,``0@)\">\n            <summary>\n            Reads the specified T data from a memory location.\n            </summary>\n            <typeparam name=\"T\">Type of a data to read.</typeparam>\n            <param name=\"source\">Memory location to read from.</param>\n            <param name=\"data\">The data write to.</param>\n            <returns>source pointer + sizeof(T).</returns>\n        </member>\n        <member name=\"M:SharpDX.Utilities.Read``1(System.IntPtr,``0[],System.Int32,System.Int32)\">\n            <summary>\n            Reads the specified array T[] data from a memory location.\n            </summary>\n            <typeparam name=\"T\">Type of a data to read.</typeparam>\n            <param name=\"source\">Memory location to read from.</param>\n            <param name=\"data\">The data write to.</param>\n            <param name=\"offset\">The offset in the array to write to.</param>\n            <param name=\"count\">The number of T element to read from the memory location.</param>\n            <returns>source pointer + sizeof(T) * count.</returns>\n        </member>\n        <member name=\"M:SharpDX.Utilities.Write``1(System.IntPtr,``0@)\">\n            <summary>\n            Writes the specified T data to a memory location.\n            </summary>\n            <typeparam name=\"T\">Type of a data to write.</typeparam>\n            <param name=\"destination\">Memory location to write to.</param>\n            <param name=\"data\">The data to write.</param>\n            <returns>destination pointer + sizeof(T).</returns>\n        </member>\n        <member name=\"M:SharpDX.Utilities.WriteAndPosition``1(System.IntPtr,``0@)\">\n            <summary>\n            Writes the specified T data to a memory location.\n            </summary>\n            <typeparam name=\"T\">Type of a data to write.</typeparam>\n            <param name=\"destination\">Memory location to write to.</param>\n            <param name=\"data\">The data to write.</param>\n            <returns>destination pointer + sizeof(T).</returns>\n        </member>\n        <member name=\"M:SharpDX.Utilities.Write``1(System.IntPtr,``0[],System.Int32,System.Int32)\">\n            <summary>\n            Writes the specified array T[] data to a memory location.\n            </summary>\n            <typeparam name=\"T\">Type of a data to write.</typeparam>\n            <param name=\"destination\">Memory location to write to.</param>\n            <param name=\"data\">The array of T data to write.</param>\n            <param name=\"offset\">The offset in the array to read from.</param>\n            <param name=\"count\">The number of T element to write to the memory location.</param>\n            <returns>destination pointer + sizeof(T) * count.</returns>\n        </member>\n        <member name=\"M:SharpDX.Utilities.ConvertToIntArray(System.Boolean[],System.Int32*)\">\n            <summary>\n            Converts bool array to integer pointers array.\n            </summary>\n            <param name=\"array\">The bool array.</param>\n            <param name=\"dest\">The destination array of int pointers.</param>\n        </member>\n        <member name=\"M:SharpDX.Utilities.ConvertToIntArray(System.Boolean[])\">\n            <summary>\n            Converts bool array to <see cref=\"T:SharpDX.Bool\"/> array.\n            </summary>\n            <param name=\"array\">The bool array.</param>\n            <returns>Converted array of <see cref=\"T:SharpDX.Bool\"/>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Utilities.ConvertToBoolArray(System.Int32*,System.Int32)\">\n            <summary>\n            Converts integer pointer array to bool array.\n            </summary>\n            <param name=\"array\">The array of integer pointers.</param>\n            <param name=\"length\">Array size.</param>\n            <returns>Converted array of bool.</returns>\n        </member>\n        <member name=\"M:SharpDX.Utilities.ConvertToBoolArray(SharpDX.Bool[])\">\n            <summary>\n            Converts <see cref=\"T:SharpDX.Bool\"/> array to bool array.\n            </summary>\n            <param name=\"array\">The array.</param>\n            <returns>Converted array of bool.</returns>\n        </member>\n        <member name=\"M:SharpDX.Utilities.GetGuidFromType(System.Type)\">\n            <summary>\n            Gets the <see cref=\"T:System.Guid\"/> from a type.\n            </summary>\n            <param name=\"type\">The type.</param>\n            <returns>The guid associated with this type.</returns>\n        </member>\n        <member name=\"M:SharpDX.Utilities.AllocateMemory(System.Int32,System.Int32)\">\n            <summary>\n            Allocate an aligned memory buffer.\n            </summary>\n            <param name=\"sizeInBytes\">Size of the buffer to allocate.</param>\n            <param name=\"align\">Alignment, 16 bytes by default.</param>\n            <returns>A pointer to a buffer aligned.</returns>\n            <remarks>\n            To free this buffer, call <see cref=\"M:SharpDX.Utilities.FreeMemory(System.IntPtr)\"/>.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Utilities.AllocateClearedMemory(System.Int32,System.Byte,System.Int32)\">\n            <summary>\n            Allocate an aligned memory buffer and clear it with a specified value (0 by defaault).\n            </summary>\n            <param name=\"sizeInBytes\">Size of the buffer to allocate.</param>\n            <param name=\"clearValue\">Default value used to clear the buffer.</param>\n            <param name=\"align\">Alignment, 16 bytes by default.</param>\n            <returns>A pointer to a buffer aligned.</returns>\n            <remarks>\n            To free this buffer, call <see cref=\"M:SharpDX.Utilities.FreeMemory(System.IntPtr)\"/>.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Utilities.IsMemoryAligned(System.IntPtr,System.Int32)\">\n            <summary>\n            Determines whether the specified memory pointer is aligned in memory.\n            </summary>\n            <param name=\"memoryPtr\">The memory pointer.</param>\n            <param name=\"align\">The align.</param>\n            <returns><c>true</c> if the specified memory pointer is aligned in memory; otherwise, <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Utilities.FreeMemory(System.IntPtr)\">\n            <summary>\n            Allocate an aligned memory buffer.\n            </summary>\n            <returns>A pointer to a buffer aligned.</returns>\n            <remarks>\n            The buffer must have been allocated with <see cref=\"M:SharpDX.Utilities.AllocateMemory(System.Int32,System.Int32)\"/>.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Utilities.PtrToStringAnsi(System.IntPtr,System.Int32)\">\n            <summary>\n            Converts a pointer to a null-terminating string up to maxLength characters to a .Net string.\n            </summary>\n            <param name=\"pointer\">The pointer to an ansi null string.</param>\n            <param name=\"maxLength\">Maximum length of the string.</param>\n            <returns>The converted string.</returns>\n        </member>\n        <member name=\"M:SharpDX.Utilities.PtrToStringUni(System.IntPtr,System.Int32)\">\n            <summary>\n            Converts a pointer to a null-terminating string up to maxLength characters to a .Net string.\n            </summary>\n            <param name=\"pointer\">The pointer to an unicode null string.</param>\n            <param name=\"maxLength\">Maximum length of the string.</param>\n            <returns>The converted string.</returns>\n        </member>\n        <member name=\"M:SharpDX.Utilities.StringToHGlobalAnsi(System.String)\">\n            <summary>\n            Copies the contents of a managed String into unmanaged memory, converting into ANSI format as it copies.\n            </summary>\n            <param name=\"s\">A managed string to be copied.</param> \n            <returns>The address, in unmanaged memory, to where s was copied, or IntPtr.Zero if s is null.</returns>\n        </member>\n        <member name=\"M:SharpDX.Utilities.StringToHGlobalUni(System.String)\">\n            <summary>\n            Copies the contents of a managed String into unmanaged memory.\n            </summary>\n            <param name=\"s\">A managed string to be copied.</param> \n            <returns>The address, in unmanaged memory, to where s was copied, or IntPtr.Zero if s is null.</returns>\n        </member>\n        <member name=\"M:SharpDX.Utilities.GetIUnknownForObject(System.Object)\">\n            <summary>\n            Gets the IUnknown from object. Similar to <see cref=\"M:System.Runtime.InteropServices.Marshal.GetIUnknownForObject(System.Object)\"/> but accept null object\n            by returning an IntPtr.Zero IUnknown pointer.\n            </summary>\n            <param name=\"obj\">The managed object.</param>\n            <returns>An IUnknown pointer to a  managed object.</returns>\n        </member>\n        <member name=\"M:SharpDX.Utilities.GetObjectForIUnknown(System.IntPtr)\">\n            <summary>\n            Gets an object from an IUnknown pointer. Similar to <see cref=\"M:System.Runtime.InteropServices.Marshal.GetObjectForIUnknown(System.IntPtr)\"/> but accept IntPtr.Zero\n            by returning a null object.\n            </summary>\n            <param name=\"iunknownPtr\">an IUnknown pointer to a  managed object.</param>\n            <returns>The managed object.</returns>\n        </member>\n        <member name=\"M:SharpDX.Utilities.Join``1(System.String,``0[])\">\n            <summary>\n            String helper join method to display an array of object as a single string.\n            </summary>\n            <param name=\"separator\">The separator.</param>\n            <param name=\"array\">The array.</param>\n            <returns>A string with array elements serparated by the seperator.</returns>\n        </member>\n        <member name=\"M:SharpDX.Utilities.Join(System.String,System.Collections.IEnumerable)\">\n            <summary>\n            String helper join method to display an enumrable of object as a single string.\n            </summary>\n            <param name=\"separator\">The separator.</param>\n            <param name=\"elements\">The enumerable.</param>\n            <returns>A string with array elements serparated by the seperator.</returns>\n        </member>\n        <member name=\"M:SharpDX.Utilities.Join(System.String,System.Collections.IEnumerator)\">\n            <summary>\n            String helper join method to display an enumrable of object as a single string.\n            </summary>\n            <param name=\"separator\">The separator.</param>\n            <param name=\"elements\">The enumerable.</param>\n            <returns>A string with array elements serparated by the seperator.</returns>\n        </member>\n        <member name=\"M:SharpDX.Utilities.BlobToString(SharpDX.Direct3D.Blob)\">\n            <summary>\n            Converts a blob to a string.\n            </summary>\n            <param name=\"blob\">A blob.</param>\n            <returns>A string extracted from a blob.</returns>\n        </member>\n        <member name=\"M:SharpDX.Utilities.IntPtrAdd(System.IntPtr,System.Int32)\">\n            <summary>\n            Equivalent to IntPtr.Add method from 3.5+ .NET Framework.\n            Adds an offset to the value of a pointer.\n            </summary>\n            <param name=\"ptr\">A native pointer.</param>\n            <param name=\"offset\">The offset to add (number of bytes).</param>\n            <returns>A new pointer that reflects the addition of offset to pointer.</returns>\n        </member>\n        <member name=\"M:SharpDX.Utilities.ReadStream(System.IO.Stream)\">\n            <summary>\n            Read stream to a byte[] buffer.\n            </summary>\n            <param name=\"stream\">Input stream.</param>\n            <returns>A byte[] buffer.</returns>\n        </member>\n        <member name=\"M:SharpDX.Utilities.ReadStream(System.IO.Stream,System.Int32@)\">\n            <summary>\n            Read stream to a byte[] buffer.\n            </summary>\n            <param name=\"stream\">Input stream.</param>\n            <param name=\"readLength\">Length to read.</param>\n            <returns>A byte[] buffer.</returns>\n        </member>\n        <member name=\"M:SharpDX.Utilities.Compare(System.Collections.IEnumerable,System.Collections.IEnumerable)\">\n            <summary>\n            Compares two collection, element by elements.\n            </summary>\n            <param name=\"left\">A \"from\" enumerator.</param>\n            <param name=\"right\">A \"to\" enumerator.</param>\n            <returns><c>true</c> if lists are identical, <c>false</c> otherwis.</returns>\n        </member>\n        <member name=\"M:SharpDX.Utilities.Compare(System.Collections.IEnumerator,System.Collections.IEnumerator)\">\n            <summary>\n            Compares two collection, element by elements.\n            </summary>\n            <param name=\"leftIt\">A \"from\" enumerator.</param>\n            <param name=\"rightIt\">A \"to\" enumerator.</param>\n            <returns><c>true</c> if lists are identical; otherwise, <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Utilities.Compare(System.Collections.ICollection,System.Collections.ICollection)\">\n            <summary>\n            Compares two collection, element by elements.\n            </summary>\n            <param name=\"left\">The collection to compare from.</param>\n            <param name=\"right\">The colllection to compare to.</param>\n            <returns><c>true</c> if lists are identical (but no necessarely of the same time); otherwise , <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Utilities.GetCustomAttribute``1(System.Reflection.MemberInfo,System.Boolean)\">\n            <summary>\n            Gets the custom attribute.\n            </summary>\n            <typeparam name=\"T\">Type of the custom attribute.</typeparam>\n            <param name=\"memberInfo\">The member info.</param>\n            <param name=\"inherited\">if set to <c>true</c> [inherited].</param>\n            <returns>The custom attribute or null if not found.</returns>\n        </member>\n        <member name=\"M:SharpDX.Utilities.GetCustomAttributes``1(System.Reflection.MemberInfo,System.Boolean)\">\n            <summary>\n            Gets the custom attributes.\n            </summary>\n            <typeparam name=\"T\">Type of the custom attribute.</typeparam>\n            <param name=\"memberInfo\">The member info.</param>\n            <param name=\"inherited\">if set to <c>true</c> [inherited].</param>\n            <returns>The custom attribute or null if not found.</returns>\n        </member>\n        <member name=\"M:SharpDX.Utilities.IsAssignableFrom(System.Type,System.Type)\">\n            <summary>\n            Determines whether fromType can be assigned to toType.\n            </summary>\n            <param name=\"toType\">To type.</param>\n            <param name=\"fromType\">From type.</param>\n            <returns>\n            <c>true</c> if [is assignable from] [the specified to type]; otherwise, <c>false</c>.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Utilities.IsEnum(System.Type)\">\n            <summary>\n            Determines whether the specified type to test is an enum.\n            </summary>\n            <param name=\"typeToTest\">The type to test.</param>\n            <returns>\n            <c>true</c> if the specified type to test is an enum; otherwise, <c>false</c>.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Utilities.IsValueType(System.Type)\">\n            <summary>\n            Determines whether the specified type to test is a valuetype.\n            </summary>\n            <param name=\"typeToTest\">The type to test.</param>\n            <returns>\n            <c>true</c> if the specified type to test is a valuetype; otherwise, <c>false</c>.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Utilities.BuildPropertyGetter``1(System.Type,System.Reflection.PropertyInfo)\">\n            <summary>\n            Builds a fast property getter from a type and a property info.\n            </summary>\n            <typeparam name=\"T\">Type of the getter.</typeparam>\n            <param name=\"customEffectType\">Type of the custom effect.</param>\n            <param name=\"propertyInfo\">The property info to get the value from.</param>\n            <returns>A compiled delegate.</returns>\n        </member>\n        <member name=\"M:SharpDX.Utilities.BuildPropertySetter``1(System.Type,System.Reflection.PropertyInfo)\">\n            <summary>\n            Builds a fast property setter from a type and a property info.\n            </summary>\n            <typeparam name=\"T\">Type of the setter.</typeparam>\n            <param name=\"customEffectType\">Type of the custom effect.</param>\n            <param name=\"propertyInfo\">The property info to set the value to.</param>\n            <returns>A compiled delegate.</returns>\n        </member>\n        <member name=\"M:SharpDX.Utilities.Sleep(System.TimeSpan)\">\n            <summary>\n            Suspends the current thread of a <see cref=\"!:sleepTimeInMillis\"/>.\n            </summary>\n            <param name=\"sleepTimeInMillis\">The duration to sleep in milliseconds.</param>\n        </member>\n        <member name=\"M:SharpDX.Utilities.FindExplicitConverstion(System.Type,System.Type)\">\n            <summary>\n            Finds an explicit converstion between a source type and a target type.\n            </summary>\n            <param name=\"sourceType\">Type of the source.</param>\n            <param name=\"targetType\">Type of the target.</param>\n            <returns>The method to perform the conversion. null if not found.</returns>\n        </member>\n        <member name=\"M:SharpDX.Utilities.LoadLibrary(System.String)\">\n            <summary>\n            Loads a native library.\n            </summary>\n            <param name=\"dllName\">Name of the DLL.</param>\n            <exception cref=\"T:System.DllNotFoundException\">If dll was not found.</exception>\n            <returns>Handle to the module.</returns>\n        </member>\n        <member name=\"M:SharpDX.Utilities.GetProcAddress(System.IntPtr,System.String)\">\n            <summary>\n            Gets the proc address of a dll.\n            </summary>\n            <param name=\"handle\">The handle.</param>\n            <param name=\"dllFunctionToImport\">The DLL function to import.</param>\n            <exception cref=\"T:SharpDX.SharpDXException\">If the function was not found.</exception>\n            <returns>Pointer to address of the exported function or variable.</returns>\n        </member>\n        <member name=\"M:SharpDX.Utilities.ComputeHashFNVModified(System.Byte[])\">\n            <summary>\n            Compute a FNV1-modified Hash from <a href=\"http://bretm.home.comcast.net/~bretm/hash/6.html\">Fowler/Noll/Vo Hash</a> improved version.\n            </summary>\n            <param name=\"data\">Data to compute the hash from.</param>\n            <returns>A hash value.</returns>\n        </member>\n        <member name=\"M:SharpDX.Utilities.Dispose``1(``0@)\">\n            <summary>\n            Safely dispose a referencem if not null, and set it to null after dispose.\n            </summary>\n            <typeparam name=\"T\">The type of COM interface to dispose.</typeparam>\n            <param name=\"comObject\">Object to dispose.</param>\n            <remarks>\n            The reference will be set to null after dispose.\n            </remarks>\n        </member>\n        <member name=\"T:SharpDX.Utilities.CoInit\">\n            <summary>Determines the concurrency model used for incoming calls to objects created by this thread. This concurrency model can be either apartment-threaded or multi-threaded.</summary>\n        </member>\n        <member name=\"F:SharpDX.Utilities.CoInit.MultiThreaded\">\n            <summary>\n            Initializes the thread for apartment-threaded object concurrency.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Utilities.CoInit.ApartmentThreaded\">\n            <summary>\n            Initializes the thread for multi-threaded object concurrency.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Utilities.CoInit.DisableOle1Dde\">\n            <summary>\n            Disables DDE for OLE1 support.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Utilities.CoInit.SpeedOverMemory\">\n            <summary>\n            Trade memory for speed.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Vector2\">\n            <summary>\n            Represents a two dimensional mathematical vector.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Vector2.SizeInBytes\">\n            <summary>\n            The size of the <see cref=\"T:SharpDX.Vector2\"/> type, in bytes.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Vector2.Zero\">\n            <summary>\n            A <see cref=\"T:SharpDX.Vector2\"/> with all of its components set to zero.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Vector2.UnitX\">\n            <summary>\n            The X unit <see cref=\"T:SharpDX.Vector2\"/> (1, 0).\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Vector2.UnitY\">\n            <summary>\n            The Y unit <see cref=\"T:SharpDX.Vector2\"/> (0, 1).\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Vector2.One\">\n            <summary>\n            A <see cref=\"T:SharpDX.Vector2\"/> with all of its components set to one.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Vector2.X\">\n            <summary>\n            The X component of the vector.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Vector2.Y\">\n            <summary>\n            The Y component of the vector.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Vector2.#ctor(System.Single)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Vector2\"/> struct.\n            </summary>\n            <param name=\"value\">The value that will be assigned to all components.</param>\n        </member>\n        <member name=\"M:SharpDX.Vector2.#ctor(System.Single,System.Single)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Vector2\"/> struct.\n            </summary>\n            <param name=\"x\">Initial value for the X component of the vector.</param>\n            <param name=\"y\">Initial value for the Y component of the vector.</param>\n        </member>\n        <member name=\"M:SharpDX.Vector2.#ctor(System.Single[])\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Vector2\"/> struct.\n            </summary>\n            <param name=\"values\">The values to assign to the X and Y components of the vector. This must be an array with two elements.</param>\n            <exception cref=\"T:System.ArgumentNullException\">Thrown when <paramref name=\"values\"/> is <c>null</c>.</exception>\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">Thrown when <paramref name=\"values\"/> contains more or less than two elements.</exception>\n        </member>\n        <member name=\"M:SharpDX.Vector2.Length\">\n            <summary>\n            Calculates the length of the vector.\n            </summary>\n            <returns>The length of the vector.</returns>\n            <remarks>\n            <see cref=\"M:SharpDX.Vector2.LengthSquared\"/> may be preferred when only the relative length is needed\n            and speed is of the essence.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Vector2.LengthSquared\">\n            <summary>\n            Calculates the squared length of the vector.\n            </summary>\n            <returns>The squared length of the vector.</returns>\n            <remarks>\n            This method may be preferred to <see cref=\"M:SharpDX.Vector2.Length\"/> when only a relative length is needed\n            and speed is of the essence.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Vector2.Normalize\">\n            <summary>\n            Converts the vector into a unit vector.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Vector2.ToArray\">\n            <summary>\n            Creates an array containing the elements of the vector.\n            </summary>\n            <returns>A two-element array containing the components of the vector.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector2.Add(SharpDX.Vector2@,SharpDX.Vector2@,SharpDX.Vector2@)\">\n            <summary>\n            Adds two vectors.\n            </summary>\n            <param name=\"left\">The first vector to add.</param>\n            <param name=\"right\">The second vector to add.</param>\n            <param name=\"result\">When the method completes, contains the sum of the two vectors.</param>\n        </member>\n        <member name=\"M:SharpDX.Vector2.Add(SharpDX.Vector2,SharpDX.Vector2)\">\n            <summary>\n            Adds two vectors.\n            </summary>\n            <param name=\"left\">The first vector to add.</param>\n            <param name=\"right\">The second vector to add.</param>\n            <returns>The sum of the two vectors.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector2.Subtract(SharpDX.Vector2@,SharpDX.Vector2@,SharpDX.Vector2@)\">\n            <summary>\n            Subtracts two vectors.\n            </summary>\n            <param name=\"left\">The first vector to subtract.</param>\n            <param name=\"right\">The second vector to subtract.</param>\n            <param name=\"result\">When the method completes, contains the difference of the two vectors.</param>\n        </member>\n        <member name=\"M:SharpDX.Vector2.Subtract(SharpDX.Vector2,SharpDX.Vector2)\">\n            <summary>\n            Subtracts two vectors.\n            </summary>\n            <param name=\"left\">The first vector to subtract.</param>\n            <param name=\"right\">The second vector to subtract.</param>\n            <returns>The difference of the two vectors.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector2.Multiply(SharpDX.Vector2@,System.Single,SharpDX.Vector2@)\">\n            <summary>\n            Scales a vector by the given value.\n            </summary>\n            <param name=\"value\">The vector to scale.</param>\n            <param name=\"scale\">The amount by which to scale the vector.</param>\n            <param name=\"result\">When the method completes, contains the scaled vector.</param>\n        </member>\n        <member name=\"M:SharpDX.Vector2.Multiply(SharpDX.Vector2,System.Single)\">\n            <summary>\n            Scales a vector by the given value.\n            </summary>\n            <param name=\"value\">The vector to scale.</param>\n            <param name=\"scale\">The amount by which to scale the vector.</param>\n            <returns>The scaled vector.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector2.Modulate(SharpDX.Vector2@,SharpDX.Vector2@,SharpDX.Vector2@)\">\n            <summary>\n            Modulates a vector with another by performing component-wise multiplication.\n            </summary>\n            <param name=\"left\">The first vector to modulate.</param>\n            <param name=\"right\">The second vector to modulate.</param>\n            <param name=\"result\">When the method completes, contains the modulated vector.</param>\n        </member>\n        <member name=\"M:SharpDX.Vector2.Modulate(SharpDX.Vector2,SharpDX.Vector2)\">\n            <summary>\n            Modulates a vector with another by performing component-wise multiplication.\n            </summary>\n            <param name=\"left\">The first vector to modulate.</param>\n            <param name=\"right\">The second vector to modulate.</param>\n            <returns>The modulated vector.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector2.Divide(SharpDX.Vector2@,System.Single,SharpDX.Vector2@)\">\n            <summary>\n            Scales a vector by the given value.\n            </summary>\n            <param name=\"value\">The vector to scale.</param>\n            <param name=\"scale\">The amount by which to scale the vector.</param>\n            <param name=\"result\">When the method completes, contains the scaled vector.</param>\n        </member>\n        <member name=\"M:SharpDX.Vector2.Divide(SharpDX.Vector2,System.Single)\">\n            <summary>\n            Scales a vector by the given value.\n            </summary>\n            <param name=\"value\">The vector to scale.</param>\n            <param name=\"scale\">The amount by which to scale the vector.</param>\n            <returns>The scaled vector.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector2.Negate(SharpDX.Vector2@,SharpDX.Vector2@)\">\n            <summary>\n            Reverses the direction of a given vector.\n            </summary>\n            <param name=\"value\">The vector to negate.</param>\n            <param name=\"result\">When the method completes, contains a vector facing in the opposite direction.</param>\n        </member>\n        <member name=\"M:SharpDX.Vector2.Negate(SharpDX.Vector2)\">\n            <summary>\n            Reverses the direction of a given vector.\n            </summary>\n            <param name=\"value\">The vector to negate.</param>\n            <returns>A vector facing in the opposite direction.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector2.Barycentric(SharpDX.Vector2@,SharpDX.Vector2@,SharpDX.Vector2@,System.Single,System.Single,SharpDX.Vector2@)\">\n            <summary>\n            Returns a <see cref=\"T:SharpDX.Vector2\"/> containing the 2D Cartesian coordinates of a point specified in Barycentric coordinates relative to a 2D triangle.\n            </summary>\n            <param name=\"value1\">A <see cref=\"T:SharpDX.Vector2\"/> containing the 2D Cartesian coordinates of vertex 1 of the triangle.</param>\n            <param name=\"value2\">A <see cref=\"T:SharpDX.Vector2\"/> containing the 2D Cartesian coordinates of vertex 2 of the triangle.</param>\n            <param name=\"value3\">A <see cref=\"T:SharpDX.Vector2\"/> containing the 2D Cartesian coordinates of vertex 3 of the triangle.</param>\n            <param name=\"amount1\">Barycentric coordinate b2, which expresses the weighting factor toward vertex 2 (specified in <paramref name=\"value2\"/>).</param>\n            <param name=\"amount2\">Barycentric coordinate b3, which expresses the weighting factor toward vertex 3 (specified in <paramref name=\"value3\"/>).</param>\n            <param name=\"result\">When the method completes, contains the 2D Cartesian coordinates of the specified point.</param>\n        </member>\n        <member name=\"M:SharpDX.Vector2.Barycentric(SharpDX.Vector2,SharpDX.Vector2,SharpDX.Vector2,System.Single,System.Single)\">\n            <summary>\n            Returns a <see cref=\"T:SharpDX.Vector2\"/> containing the 2D Cartesian coordinates of a point specified in Barycentric coordinates relative to a 2D triangle.\n            </summary>\n            <param name=\"value1\">A <see cref=\"T:SharpDX.Vector2\"/> containing the 2D Cartesian coordinates of vertex 1 of the triangle.</param>\n            <param name=\"value2\">A <see cref=\"T:SharpDX.Vector2\"/> containing the 2D Cartesian coordinates of vertex 2 of the triangle.</param>\n            <param name=\"value3\">A <see cref=\"T:SharpDX.Vector2\"/> containing the 2D Cartesian coordinates of vertex 3 of the triangle.</param>\n            <param name=\"amount1\">Barycentric coordinate b2, which expresses the weighting factor toward vertex 2 (specified in <paramref name=\"value2\"/>).</param>\n            <param name=\"amount2\">Barycentric coordinate b3, which expresses the weighting factor toward vertex 3 (specified in <paramref name=\"value3\"/>).</param>\n            <returns>A new <see cref=\"T:SharpDX.Vector2\"/> containing the 2D Cartesian coordinates of the specified point.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector2.Clamp(SharpDX.Vector2@,SharpDX.Vector2@,SharpDX.Vector2@,SharpDX.Vector2@)\">\n            <summary>\n            Restricts a value to be within a specified range.\n            </summary>\n            <param name=\"value\">The value to clamp.</param>\n            <param name=\"min\">The minimum value.</param>\n            <param name=\"max\">The maximum value.</param>\n            <param name=\"result\">When the method completes, contains the clamped value.</param>\n        </member>\n        <member name=\"M:SharpDX.Vector2.Clamp(SharpDX.Vector2,SharpDX.Vector2,SharpDX.Vector2)\">\n            <summary>\n            Restricts a value to be within a specified range.\n            </summary>\n            <param name=\"value\">The value to clamp.</param>\n            <param name=\"min\">The minimum value.</param>\n            <param name=\"max\">The maximum value.</param>\n            <returns>The clamped value.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector2.Distance(SharpDX.Vector2@,SharpDX.Vector2@,System.Single@)\">\n            <summary>\n            Calculates the distance between two vectors.\n            </summary>\n            <param name=\"value1\">The first vector.</param>\n            <param name=\"value2\">The second vector.</param>\n            <param name=\"result\">When the method completes, contains the distance between the two vectors.</param>\n            <remarks>\n            <see cref=\"M:SharpDX.Vector2.DistanceSquared(SharpDX.Vector2@,SharpDX.Vector2@,System.Single@)\"/> may be preferred when only the relative distance is needed\n            and speed is of the essence.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Vector2.Distance(SharpDX.Vector2,SharpDX.Vector2)\">\n            <summary>\n            Calculates the distance between two vectors.\n            </summary>\n            <param name=\"value1\">The first vector.</param>\n            <param name=\"value2\">The second vector.</param>\n            <returns>The distance between the two vectors.</returns>\n            <remarks>\n            <see cref=\"M:SharpDX.Vector2.DistanceSquared(SharpDX.Vector2,SharpDX.Vector2)\"/> may be preferred when only the relative distance is needed\n            and speed is of the essence.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Vector2.DistanceSquared(SharpDX.Vector2@,SharpDX.Vector2@,System.Single@)\">\n            <summary>\n            Calculates the squared distance between two vectors.\n            </summary>\n            <param name=\"value1\">The first vector.</param>\n            <param name=\"value2\">The second vector</param>\n            <param name=\"result\">When the method completes, contains the squared distance between the two vectors.</param>\n            <remarks>Distance squared is the value before taking the square root. \n            Distance squared can often be used in place of distance if relative comparisons are being made. \n            For example, consider three points A, B, and C. To determine whether B or C is further from A, \n            compare the distance between A and B to the distance between A and C. Calculating the two distances \n            involves two square roots, which are computationally expensive. However, using distance squared \n            provides the same information and avoids calculating two square roots.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Vector2.DistanceSquared(SharpDX.Vector2,SharpDX.Vector2)\">\n            <summary>\n            Calculates the squared distance between two vectors.\n            </summary>\n            <param name=\"value1\">The first vector.</param>\n            <param name=\"value2\">The second vector.</param>\n            <returns>The squared distance between the two vectors.</returns>\n            <remarks>Distance squared is the value before taking the square root. \n            Distance squared can often be used in place of distance if relative comparisons are being made. \n            For example, consider three points A, B, and C. To determine whether B or C is further from A, \n            compare the distance between A and B to the distance between A and C. Calculating the two distances \n            involves two square roots, which are computationally expensive. However, using distance squared \n            provides the same information and avoids calculating two square roots.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Vector2.Dot(SharpDX.Vector2@,SharpDX.Vector2@,System.Single@)\">\n            <summary>\n            Calculates the dot product of two vectors.\n            </summary>\n            <param name=\"left\">First source vector.</param>\n            <param name=\"right\">Second source vector.</param>\n            <param name=\"result\">When the method completes, contains the dot product of the two vectors.</param>\n        </member>\n        <member name=\"M:SharpDX.Vector2.Dot(SharpDX.Vector2,SharpDX.Vector2)\">\n            <summary>\n            Calculates the dot product of two vectors.\n            </summary>\n            <param name=\"left\">First source vector.</param>\n            <param name=\"right\">Second source vector.</param>\n            <returns>The dot product of the two vectors.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector2.Normalize(SharpDX.Vector2@,SharpDX.Vector2@)\">\n            <summary>\n            Converts the vector into a unit vector.\n            </summary>\n            <param name=\"value\">The vector to normalize.</param>\n            <param name=\"result\">When the method completes, contains the normalized vector.</param>\n        </member>\n        <member name=\"M:SharpDX.Vector2.Normalize(SharpDX.Vector2)\">\n            <summary>\n            Converts the vector into a unit vector.\n            </summary>\n            <param name=\"value\">The vector to normalize.</param>\n            <returns>The normalized vector.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector2.Lerp(SharpDX.Vector2@,SharpDX.Vector2@,System.Single,SharpDX.Vector2@)\">\n            <summary>\n            Performs a linear interpolation between two vectors.\n            </summary>\n            <param name=\"start\">Start vector.</param>\n            <param name=\"end\">End vector.</param>\n            <param name=\"amount\">Value between 0 and 1 indicating the weight of <paramref name=\"end\"/>.</param>\n            <param name=\"result\">When the method completes, contains the linear interpolation of the two vectors.</param>\n            <remarks>\n            This method performs the linear interpolation based on the following formula.\n            <code>start + (end - start) * amount</code>\n            Passing <paramref name=\"amount\"/> a value of 0 will cause <paramref name=\"start\"/> to be returned; a value of 1 will cause <paramref name=\"end\"/> to be returned. \n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Vector2.Lerp(SharpDX.Vector2,SharpDX.Vector2,System.Single)\">\n            <summary>\n            Performs a linear interpolation between two vectors.\n            </summary>\n            <param name=\"start\">Start vector.</param>\n            <param name=\"end\">End vector.</param>\n            <param name=\"amount\">Value between 0 and 1 indicating the weight of <paramref name=\"end\"/>.</param>\n            <returns>The linear interpolation of the two vectors.</returns>\n            <remarks>\n            This method performs the linear interpolation based on the following formula.\n            <code>start + (end - start) * amount</code>\n            Passing <paramref name=\"amount\"/> a value of 0 will cause <paramref name=\"start\"/> to be returned; a value of 1 will cause <paramref name=\"end\"/> to be returned. \n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Vector2.SmoothStep(SharpDX.Vector2@,SharpDX.Vector2@,System.Single,SharpDX.Vector2@)\">\n            <summary>\n            Performs a cubic interpolation between two vectors.\n            </summary>\n            <param name=\"start\">Start vector.</param>\n            <param name=\"end\">End vector.</param>\n            <param name=\"amount\">Value between 0 and 1 indicating the weight of <paramref name=\"end\"/>.</param>\n            <param name=\"result\">When the method completes, contains the cubic interpolation of the two vectors.</param>\n        </member>\n        <member name=\"M:SharpDX.Vector2.SmoothStep(SharpDX.Vector2,SharpDX.Vector2,System.Single)\">\n            <summary>\n            Performs a cubic interpolation between two vectors.\n            </summary>\n            <param name=\"start\">Start vector.</param>\n            <param name=\"end\">End vector.</param>\n            <param name=\"amount\">Value between 0 and 1 indicating the weight of <paramref name=\"end\"/>.</param>\n            <returns>The cubic interpolation of the two vectors.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector2.Hermite(SharpDX.Vector2@,SharpDX.Vector2@,SharpDX.Vector2@,SharpDX.Vector2@,System.Single,SharpDX.Vector2@)\">\n            <summary>\n            Performs a Hermite spline interpolation.\n            </summary>\n            <param name=\"value1\">First source position vector.</param>\n            <param name=\"tangent1\">First source tangent vector.</param>\n            <param name=\"value2\">Second source position vector.</param>\n            <param name=\"tangent2\">Second source tangent vector.</param>\n            <param name=\"amount\">Weighting factor.</param>\n            <param name=\"result\">When the method completes, contains the result of the Hermite spline interpolation.</param>\n        </member>\n        <member name=\"M:SharpDX.Vector2.Hermite(SharpDX.Vector2,SharpDX.Vector2,SharpDX.Vector2,SharpDX.Vector2,System.Single)\">\n            <summary>\n            Performs a Hermite spline interpolation.\n            </summary>\n            <param name=\"value1\">First source position vector.</param>\n            <param name=\"tangent1\">First source tangent vector.</param>\n            <param name=\"value2\">Second source position vector.</param>\n            <param name=\"tangent2\">Second source tangent vector.</param>\n            <param name=\"amount\">Weighting factor.</param>\n            <returns>The result of the Hermite spline interpolation.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector2.CatmullRom(SharpDX.Vector2@,SharpDX.Vector2@,SharpDX.Vector2@,SharpDX.Vector2@,System.Single,SharpDX.Vector2@)\">\n            <summary>\n            Performs a Catmull-Rom interpolation using the specified positions.\n            </summary>\n            <param name=\"value1\">The first position in the interpolation.</param>\n            <param name=\"value2\">The second position in the interpolation.</param>\n            <param name=\"value3\">The third position in the interpolation.</param>\n            <param name=\"value4\">The fourth position in the interpolation.</param>\n            <param name=\"amount\">Weighting factor.</param>\n            <param name=\"result\">When the method completes, contains the result of the Catmull-Rom interpolation.</param>\n        </member>\n        <member name=\"M:SharpDX.Vector2.CatmullRom(SharpDX.Vector2,SharpDX.Vector2,SharpDX.Vector2,SharpDX.Vector2,System.Single)\">\n            <summary>\n            Performs a Catmull-Rom interpolation using the specified positions.\n            </summary>\n            <param name=\"value1\">The first position in the interpolation.</param>\n            <param name=\"value2\">The second position in the interpolation.</param>\n            <param name=\"value3\">The third position in the interpolation.</param>\n            <param name=\"value4\">The fourth position in the interpolation.</param>\n            <param name=\"amount\">Weighting factor.</param>\n            <returns>A vector that is the result of the Catmull-Rom interpolation.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector2.Max(SharpDX.Vector2@,SharpDX.Vector2@,SharpDX.Vector2@)\">\n            <summary>\n            Returns a vector containing the largest components of the specified vectors.\n            </summary>\n            <param name=\"left\">The first source vector.</param>\n            <param name=\"right\">The second source vector.</param>\n            <param name=\"result\">When the method completes, contains an new vector composed of the largest components of the source vectors.</param>\n        </member>\n        <member name=\"M:SharpDX.Vector2.Max(SharpDX.Vector2,SharpDX.Vector2)\">\n            <summary>\n            Returns a vector containing the largest components of the specified vectors.\n            </summary>\n            <param name=\"left\">The first source vector.</param>\n            <param name=\"right\">The second source vector.</param>\n            <returns>A vector containing the largest components of the source vectors.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector2.Min(SharpDX.Vector2@,SharpDX.Vector2@,SharpDX.Vector2@)\">\n            <summary>\n            Returns a vector containing the smallest components of the specified vectors.\n            </summary>\n            <param name=\"left\">The first source vector.</param>\n            <param name=\"right\">The second source vector.</param>\n            <param name=\"result\">When the method completes, contains an new vector composed of the smallest components of the source vectors.</param>\n        </member>\n        <member name=\"M:SharpDX.Vector2.Min(SharpDX.Vector2,SharpDX.Vector2)\">\n            <summary>\n            Returns a vector containing the smallest components of the specified vectors.\n            </summary>\n            <param name=\"left\">The first source vector.</param>\n            <param name=\"right\">The second source vector.</param>\n            <returns>A vector containing the smallest components of the source vectors.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector2.Reflect(SharpDX.Vector2@,SharpDX.Vector2@,SharpDX.Vector2@)\">\n            <summary>\n            Returns the reflection of a vector off a surface that has the specified normal. \n            </summary>\n            <param name=\"vector\">The source vector.</param>\n            <param name=\"normal\">Normal of the surface.</param>\n            <param name=\"result\">When the method completes, contains the reflected vector.</param>\n            <remarks>Reflect only gives the direction of a reflection off a surface, it does not determine \n            whether the original vector was close enough to the surface to hit it.</remarks>\n        </member>\n        <member name=\"M:SharpDX.Vector2.Reflect(SharpDX.Vector2,SharpDX.Vector2)\">\n            <summary>\n            Returns the reflection of a vector off a surface that has the specified normal. \n            </summary>\n            <param name=\"vector\">The source vector.</param>\n            <param name=\"normal\">Normal of the surface.</param>\n            <returns>The reflected vector.</returns>\n            <remarks>Reflect only gives the direction of a reflection off a surface, it does not determine \n            whether the original vector was close enough to the surface to hit it.</remarks>\n        </member>\n        <member name=\"M:SharpDX.Vector2.Orthogonalize(SharpDX.Vector2[],SharpDX.Vector2[])\">\n            <summary>\n            Orthogonalizes a list of vectors.\n            </summary>\n            <param name=\"destination\">The list of orthogonalized vectors.</param>\n            <param name=\"source\">The list of vectors to orthogonalize.</param>\n            <remarks>\n            <para>Orthogonalization is the process of making all vectors orthogonal to each other. This\n            means that any given vector in the list will be orthogonal to any other given vector in the\n            list.</para>\n            <para>Because this method uses the modified Gram-Schmidt process, the resulting vectors\n            tend to be numerically unstable. The numeric stability decreases according to the vectors\n            position in the list so that the first vector is the most stable and the last vector is the\n            least stable.</para>\n            </remarks>\n            <exception cref=\"T:System.ArgumentNullException\">Thrown when <paramref name=\"source\"/> or <paramref name=\"destination\"/> is <c>null</c>.</exception>\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">Thrown when <paramref name=\"destination\"/> is shorter in length than <paramref name=\"source\"/>.</exception>\n        </member>\n        <member name=\"M:SharpDX.Vector2.Orthonormalize(SharpDX.Vector2[],SharpDX.Vector2[])\">\n            <summary>\n            Orthonormalizes a list of vectors.\n            </summary>\n            <param name=\"destination\">The list of orthonormalized vectors.</param>\n            <param name=\"source\">The list of vectors to orthonormalize.</param>\n            <remarks>\n            <para>Orthonormalization is the process of making all vectors orthogonal to each\n            other and making all vectors of unit length. This means that any given vector will\n            be orthogonal to any other given vector in the list.</para>\n            <para>Because this method uses the modified Gram-Schmidt process, the resulting vectors\n            tend to be numerically unstable. The numeric stability decreases according to the vectors\n            position in the list so that the first vector is the most stable and the last vector is the\n            least stable.</para>\n            </remarks>\n            <exception cref=\"T:System.ArgumentNullException\">Thrown when <paramref name=\"source\"/> or <paramref name=\"destination\"/> is <c>null</c>.</exception>\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">Thrown when <paramref name=\"destination\"/> is shorter in length than <paramref name=\"source\"/>.</exception>\n        </member>\n        <member name=\"M:SharpDX.Vector2.Transform(SharpDX.Vector2@,SharpDX.Quaternion@,SharpDX.Vector2@)\">\n            <summary>\n            Transforms a 2D vector by the given <see cref=\"T:SharpDX.Quaternion\"/> rotation.\n            </summary>\n            <param name=\"vector\">The vector to rotate.</param>\n            <param name=\"rotation\">The <see cref=\"T:SharpDX.Quaternion\"/> rotation to apply.</param>\n            <param name=\"result\">When the method completes, contains the transformed <see cref=\"T:SharpDX.Vector4\"/>.</param>\n        </member>\n        <member name=\"M:SharpDX.Vector2.Transform(SharpDX.Vector2,SharpDX.Quaternion)\">\n            <summary>\n            Transforms a 2D vector by the given <see cref=\"T:SharpDX.Quaternion\"/> rotation.\n            </summary>\n            <param name=\"vector\">The vector to rotate.</param>\n            <param name=\"rotation\">The <see cref=\"T:SharpDX.Quaternion\"/> rotation to apply.</param>\n            <returns>The transformed <see cref=\"T:SharpDX.Vector4\"/>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector2.Transform(SharpDX.Vector2[],SharpDX.Quaternion@,SharpDX.Vector2[])\">\n            <summary>\n            Transforms an array of vectors by the given <see cref=\"T:SharpDX.Quaternion\"/> rotation.\n            </summary>\n            <param name=\"source\">The array of vectors to transform.</param>\n            <param name=\"rotation\">The <see cref=\"T:SharpDX.Quaternion\"/> rotation to apply.</param>\n            <param name=\"destination\">The array for which the transformed vectors are stored.\n            This array may be the same array as <paramref name=\"source\"/>.</param>\n            <exception cref=\"T:System.ArgumentNullException\">Thrown when <paramref name=\"source\"/> or <paramref name=\"destination\"/> is <c>null</c>.</exception>\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">Thrown when <paramref name=\"destination\"/> is shorter in length than <paramref name=\"source\"/>.</exception>\n        </member>\n        <member name=\"M:SharpDX.Vector2.Transform(SharpDX.Vector2@,SharpDX.Matrix@,SharpDX.Vector4@)\">\n            <summary>\n            Transforms a 2D vector by the given <see cref=\"T:SharpDX.Matrix\"/>.\n            </summary>\n            <param name=\"vector\">The source vector.</param>\n            <param name=\"transform\">The transformation <see cref=\"T:SharpDX.Matrix\"/>.</param>\n            <param name=\"result\">When the method completes, contains the transformed <see cref=\"T:SharpDX.Vector4\"/>.</param>\n        </member>\n        <member name=\"M:SharpDX.Vector2.Transform(SharpDX.Vector2,SharpDX.Matrix)\">\n            <summary>\n            Transforms a 2D vector by the given <see cref=\"T:SharpDX.Matrix\"/>.\n            </summary>\n            <param name=\"vector\">The source vector.</param>\n            <param name=\"transform\">The transformation <see cref=\"T:SharpDX.Matrix\"/>.</param>\n            <returns>The transformed <see cref=\"T:SharpDX.Vector4\"/>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector2.Transform(SharpDX.Vector2[],SharpDX.Matrix@,SharpDX.Vector4[])\">\n            <summary>\n            Transforms an array of 2D vectors by the given <see cref=\"T:SharpDX.Matrix\"/>.\n            </summary>\n            <param name=\"source\">The array of vectors to transform.</param>\n            <param name=\"transform\">The transformation <see cref=\"T:SharpDX.Matrix\"/>.</param>\n            <param name=\"destination\">The array for which the transformed vectors are stored.</param>\n            <exception cref=\"T:System.ArgumentNullException\">Thrown when <paramref name=\"source\"/> or <paramref name=\"destination\"/> is <c>null</c>.</exception>\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">Thrown when <paramref name=\"destination\"/> is shorter in length than <paramref name=\"source\"/>.</exception>\n        </member>\n        <member name=\"M:SharpDX.Vector2.TransformCoordinate(SharpDX.Vector2@,SharpDX.Matrix@,SharpDX.Vector2@)\">\n            <summary>\n            Performs a coordinate transformation using the given <see cref=\"T:SharpDX.Matrix\"/>.\n            </summary>\n            <param name=\"coordinate\">The coordinate vector to transform.</param>\n            <param name=\"transform\">The transformation <see cref=\"T:SharpDX.Matrix\"/>.</param>\n            <param name=\"result\">When the method completes, contains the transformed coordinates.</param>\n            <remarks>\n            A coordinate transform performs the transformation with the assumption that the w component\n            is one. The four dimensional vector obtained from the transformation operation has each\n            component in the vector divided by the w component. This forces the wcomponent to be one and\n            therefore makes the vector homogeneous. The homogeneous vector is often prefered when working\n            with coordinates as the w component can safely be ignored.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Vector2.TransformCoordinate(SharpDX.Vector2,SharpDX.Matrix)\">\n            <summary>\n            Performs a coordinate transformation using the given <see cref=\"T:SharpDX.Matrix\"/>.\n            </summary>\n            <param name=\"coordinate\">The coordinate vector to transform.</param>\n            <param name=\"transform\">The transformation <see cref=\"T:SharpDX.Matrix\"/>.</param>\n            <returns>The transformed coordinates.</returns>\n            <remarks>\n            A coordinate transform performs the transformation with the assumption that the w component\n            is one. The four dimensional vector obtained from the transformation operation has each\n            component in the vector divided by the w component. This forces the wcomponent to be one and\n            therefore makes the vector homogeneous. The homogeneous vector is often prefered when working\n            with coordinates as the w component can safely be ignored.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Vector2.TransformCoordinate(SharpDX.Vector2[],SharpDX.Matrix@,SharpDX.Vector2[])\">\n            <summary>\n            Performs a coordinate transformation on an array of vectors using the given <see cref=\"T:SharpDX.Matrix\"/>.\n            </summary>\n            <param name=\"source\">The array of coordinate vectors to trasnform.</param>\n            <param name=\"transform\">The transformation <see cref=\"T:SharpDX.Matrix\"/>.</param>\n            <param name=\"destination\">The array for which the transformed vectors are stored.\n            This array may be the same array as <paramref name=\"source\"/>.</param>\n            <exception cref=\"T:System.ArgumentNullException\">Thrown when <paramref name=\"source\"/> or <paramref name=\"destination\"/> is <c>null</c>.</exception>\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">Thrown when <paramref name=\"destination\"/> is shorter in length than <paramref name=\"source\"/>.</exception>\n            <remarks>\n            A coordinate transform performs the transformation with the assumption that the w component\n            is one. The four dimensional vector obtained from the transformation operation has each\n            component in the vector divided by the w component. This forces the wcomponent to be one and\n            therefore makes the vector homogeneous. The homogeneous vector is often prefered when working\n            with coordinates as the w component can safely be ignored.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Vector2.TransformNormal(SharpDX.Vector2@,SharpDX.Matrix@,SharpDX.Vector2@)\">\n            <summary>\n            Performs a normal transformation using the given <see cref=\"T:SharpDX.Matrix\"/>.\n            </summary>\n            <param name=\"normal\">The normal vector to transform.</param>\n            <param name=\"transform\">The transformation <see cref=\"T:SharpDX.Matrix\"/>.</param>\n            <param name=\"result\">When the method completes, contains the transformed normal.</param>\n            <remarks>\n            A normal transform performs the transformation with the assumption that the w component\n            is zero. This causes the fourth row and fourth collumn of the matrix to be unused. The\n            end result is a vector that is not translated, but all other transformation properties\n            apply. This is often prefered for normal vectors as normals purely represent direction\n            rather than location because normal vectors should not be translated.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Vector2.TransformNormal(SharpDX.Vector2,SharpDX.Matrix)\">\n            <summary>\n            Performs a normal transformation using the given <see cref=\"T:SharpDX.Matrix\"/>.\n            </summary>\n            <param name=\"normal\">The normal vector to transform.</param>\n            <param name=\"transform\">The transformation <see cref=\"T:SharpDX.Matrix\"/>.</param>\n            <returns>The transformed normal.</returns>\n            <remarks>\n            A normal transform performs the transformation with the assumption that the w component\n            is zero. This causes the fourth row and fourth collumn of the matrix to be unused. The\n            end result is a vector that is not translated, but all other transformation properties\n            apply. This is often prefered for normal vectors as normals purely represent direction\n            rather than location because normal vectors should not be translated.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Vector2.TransformNormal(SharpDX.Vector2[],SharpDX.Matrix@,SharpDX.Vector2[])\">\n            <summary>\n            Performs a normal transformation on an array of vectors using the given <see cref=\"T:SharpDX.Matrix\"/>.\n            </summary>\n            <param name=\"source\">The array of normal vectors to transform.</param>\n            <param name=\"transform\">The transformation <see cref=\"T:SharpDX.Matrix\"/>.</param>\n            <param name=\"destination\">The array for which the transformed vectors are stored.\n            This array may be the same array as <paramref name=\"source\"/>.</param>\n            <exception cref=\"T:System.ArgumentNullException\">Thrown when <paramref name=\"source\"/> or <paramref name=\"destination\"/> is <c>null</c>.</exception>\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">Thrown when <paramref name=\"destination\"/> is shorter in length than <paramref name=\"source\"/>.</exception>\n            <remarks>\n            A normal transform performs the transformation with the assumption that the w component\n            is zero. This causes the fourth row and fourth collumn of the matrix to be unused. The\n            end result is a vector that is not translated, but all other transformation properties\n            apply. This is often prefered for normal vectors as normals purely represent direction\n            rather than location because normal vectors should not be translated.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Vector2.op_Addition(SharpDX.Vector2,SharpDX.Vector2)\">\n            <summary>\n            Adds two vectors.\n            </summary>\n            <param name=\"left\">The first vector to add.</param>\n            <param name=\"right\">The second vector to add.</param>\n            <returns>The sum of the two vectors.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector2.op_Multiply(SharpDX.Vector2,SharpDX.Vector2)\">\n            <summary>\n            Modulates a vector with another by performing component-wise multiplication equivalent to <see cref=\"M:SharpDX.Vector2.Modulate(SharpDX.Vector2@,SharpDX.Vector2@,SharpDX.Vector2@)\"/>.\n            </summary>\n            <param name=\"left\">The first vector to multiply.</param>\n            <param name=\"right\">The second vector to multiply.</param>\n            <returns>The multiplication of the two vectors.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector2.op_UnaryPlus(SharpDX.Vector2)\">\n            <summary>\n            Assert a vector (return it unchanged).\n            </summary>\n            <param name=\"value\">The vector to assert (unchange).</param>\n            <returns>The asserted (unchanged) vector.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector2.op_Subtraction(SharpDX.Vector2,SharpDX.Vector2)\">\n            <summary>\n            Subtracts two vectors.\n            </summary>\n            <param name=\"left\">The first vector to subtract.</param>\n            <param name=\"right\">The second vector to subtract.</param>\n            <returns>The difference of the two vectors.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector2.op_UnaryNegation(SharpDX.Vector2)\">\n            <summary>\n            Reverses the direction of a given vector.\n            </summary>\n            <param name=\"value\">The vector to negate.</param>\n            <returns>A vector facing in the opposite direction.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector2.op_Multiply(System.Single,SharpDX.Vector2)\">\n            <summary>\n            Scales a vector by the given value.\n            </summary>\n            <param name=\"value\">The vector to scale.</param>\n            <param name=\"scale\">The amount by which to scale the vector.</param>\n            <returns>The scaled vector.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector2.op_Multiply(SharpDX.Vector2,System.Single)\">\n            <summary>\n            Scales a vector by the given value.\n            </summary>\n            <param name=\"value\">The vector to scale.</param>\n            <param name=\"scale\">The amount by which to scale the vector.</param>\n            <returns>The scaled vector.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector2.op_Division(SharpDX.Vector2,System.Single)\">\n            <summary>\n            Scales a vector by the given value.\n            </summary>\n            <param name=\"value\">The vector to scale.</param>\n            <param name=\"scale\">The amount by which to scale the vector.</param>\n            <returns>The scaled vector.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector2.op_Division(SharpDX.Vector2,SharpDX.Vector2)\">\n            <summary>\n            Scales a vector by the given value.\n            </summary>\n            <param name=\"value\">The vector to scale.</param>\n            <param name=\"scale\">The amount by which to scale the vector.</param>\n            <returns>The scaled vector.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector2.op_Equality(SharpDX.Vector2,SharpDX.Vector2)\">\n            <summary>\n            Tests for equality between two objects.\n            </summary>\n            <param name=\"left\">The first value to compare.</param>\n            <param name=\"right\">The second value to compare.</param>\n            <returns><c>true</c> if <paramref name=\"left\"/> has the same value as <paramref name=\"right\"/>; otherwise, <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector2.op_Inequality(SharpDX.Vector2,SharpDX.Vector2)\">\n            <summary>\n            Tests for inequality between two objects.\n            </summary>\n            <param name=\"left\">The first value to compare.</param>\n            <param name=\"right\">The second value to compare.</param>\n            <returns><c>true</c> if <paramref name=\"left\"/> has a different value than <paramref name=\"right\"/>; otherwise, <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector2.op_Explicit(SharpDX.Vector2)~SharpDX.Vector3\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:SharpDX.Vector2\"/> to <see cref=\"T:SharpDX.Vector3\"/>.\n            </summary>\n            <param name=\"value\">The value.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector2.op_Explicit(SharpDX.Vector2)~SharpDX.Vector4\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:SharpDX.Vector2\"/> to <see cref=\"T:SharpDX.Vector4\"/>.\n            </summary>\n            <param name=\"value\">The value.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector2.ToString\">\n            <summary>\n            Returns a <see cref=\"T:System.String\"/> that represents this instance.\n            </summary>\n            <returns>\n            A <see cref=\"T:System.String\"/> that represents this instance.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Vector2.ToString(System.String)\">\n            <summary>\n            Returns a <see cref=\"T:System.String\"/> that represents this instance.\n            </summary>\n            <param name=\"format\">The format.</param>\n            <returns>\n            A <see cref=\"T:System.String\"/> that represents this instance.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Vector2.ToString(System.IFormatProvider)\">\n            <summary>\n            Returns a <see cref=\"T:System.String\"/> that represents this instance.\n            </summary>\n            <param name=\"formatProvider\">The format provider.</param>\n            <returns>\n            A <see cref=\"T:System.String\"/> that represents this instance.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Vector2.ToString(System.String,System.IFormatProvider)\">\n            <summary>\n            Returns a <see cref=\"T:System.String\"/> that represents this instance.\n            </summary>\n            <param name=\"format\">The format.</param>\n            <param name=\"formatProvider\">The format provider.</param>\n            <returns>\n            A <see cref=\"T:System.String\"/> that represents this instance.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Vector2.GetHashCode\">\n            <summary>\n            Returns a hash code for this instance.\n            </summary>\n            <returns>\n            A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. \n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Vector2.SharpDX#Serialization#IDataSerializable#Serialize(SharpDX.Serialization.BinarySerializer)\">\n            <inheritdoc/>\n        </member>\n        <member name=\"M:SharpDX.Vector2.Equals(SharpDX.Vector2)\">\n            <summary>\n            Determines whether the specified <see cref=\"T:SharpDX.Vector2\"/> is equal to this instance.\n            </summary>\n            <param name=\"other\">The <see cref=\"T:SharpDX.Vector2\"/> to compare with this instance.</param>\n            <returns>\n            \t<c>true</c> if the specified <see cref=\"T:SharpDX.Vector2\"/> is equal to this instance; otherwise, <c>false</c>.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Vector2.Equals(System.Object)\">\n            <summary>\n            Determines whether the specified <see cref=\"T:System.Object\"/> is equal to this instance.\n            </summary>\n            <param name=\"value\">The <see cref=\"T:System.Object\"/> to compare with this instance.</param>\n            <returns>\n            \t<c>true</c> if the specified <see cref=\"T:System.Object\"/> is equal to this instance; otherwise, <c>false</c>.\n            </returns>\n        </member>\n        <member name=\"P:SharpDX.Vector2.IsNormalized\">\n            <summary>\n            Gets a value indicting whether this instance is normalized.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Vector2.Item(System.Int32)\">\n            <summary>\n            Gets or sets the component at the specified index.\n            </summary>\n            <value>The value of the X or Y component, depending on the index.</value>\n            <param name=\"index\">The index of the component to access. Use 0 for the X component and 1 for the Y component.</param>\n            <returns>The value of the component at the specified index.</returns>\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">Thrown when the <paramref name=\"index\"/> is out of the range [0, 1].</exception>\n        </member>\n        <member name=\"T:SharpDX.Vector3\">\n            <summary>\n            Represents a three dimensional mathematical vector.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Vector3.SizeInBytes\">\n            <summary>\n            The size of the <see cref=\"T:SharpDX.Vector3\"/> type, in bytes.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Vector3.Zero\">\n            <summary>\n            A <see cref=\"T:SharpDX.Vector3\"/> with all of its components set to zero.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Vector3.UnitX\">\n            <summary>\n            The X unit <see cref=\"T:SharpDX.Vector3\"/> (1, 0, 0).\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Vector3.UnitY\">\n            <summary>\n            The Y unit <see cref=\"T:SharpDX.Vector3\"/> (0, 1, 0).\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Vector3.UnitZ\">\n            <summary>\n            The Z unit <see cref=\"T:SharpDX.Vector3\"/> (0, 0, 1).\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Vector3.One\">\n            <summary>\n            A <see cref=\"T:SharpDX.Vector3\"/> with all of its components set to one.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Vector3.X\">\n            <summary>\n            The X component of the vector.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Vector3.Y\">\n            <summary>\n            The Y component of the vector.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Vector3.Z\">\n            <summary>\n            The Z component of the vector.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Vector3.#ctor(System.Single)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Vector3\"/> struct.\n            </summary>\n            <param name=\"value\">The value that will be assigned to all components.</param>\n        </member>\n        <member name=\"M:SharpDX.Vector3.#ctor(System.Single,System.Single,System.Single)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Vector3\"/> struct.\n            </summary>\n            <param name=\"x\">Initial value for the X component of the vector.</param>\n            <param name=\"y\">Initial value for the Y component of the vector.</param>\n            <param name=\"z\">Initial value for the Z component of the vector.</param>\n        </member>\n        <member name=\"M:SharpDX.Vector3.#ctor(SharpDX.Vector2,System.Single)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Vector3\"/> struct.\n            </summary>\n            <param name=\"value\">A vector containing the values with which to initialize the X and Y components.</param>\n            <param name=\"z\">Initial value for the Z component of the vector.</param>\n        </member>\n        <member name=\"M:SharpDX.Vector3.#ctor(System.Single[])\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Vector3\"/> struct.\n            </summary>\n            <param name=\"values\">The values to assign to the X, Y, and Z components of the vector. This must be an array with three elements.</param>\n            <exception cref=\"T:System.ArgumentNullException\">Thrown when <paramref name=\"values\"/> is <c>null</c>.</exception>\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">Thrown when <paramref name=\"values\"/> contains more or less than three elements.</exception>\n        </member>\n        <member name=\"M:SharpDX.Vector3.Length\">\n            <summary>\n            Calculates the length of the vector.\n            </summary>\n            <returns>The length of the vector.</returns>\n            <remarks>\n            <see cref=\"M:SharpDX.Vector3.LengthSquared\"/> may be preferred when only the relative length is needed\n            and speed is of the essence.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Vector3.LengthSquared\">\n            <summary>\n            Calculates the squared length of the vector.\n            </summary>\n            <returns>The squared length of the vector.</returns>\n            <remarks>\n            This method may be preferred to <see cref=\"M:SharpDX.Vector3.Length\"/> when only a relative length is needed\n            and speed is of the essence.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Vector3.Normalize\">\n            <summary>\n            Converts the vector into a unit vector.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Vector3.ToArray\">\n            <summary>\n            Creates an array containing the elements of the vector.\n            </summary>\n            <returns>A three-element array containing the components of the vector.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector3.Add(SharpDX.Vector3@,SharpDX.Vector3@,SharpDX.Vector3@)\">\n            <summary>\n            Adds two vectors.\n            </summary>\n            <param name=\"left\">The first vector to add.</param>\n            <param name=\"right\">The second vector to add.</param>\n            <param name=\"result\">When the method completes, contains the sum of the two vectors.</param>\n        </member>\n        <member name=\"M:SharpDX.Vector3.Add(SharpDX.Vector3,SharpDX.Vector3)\">\n            <summary>\n            Adds two vectors.\n            </summary>\n            <param name=\"left\">The first vector to add.</param>\n            <param name=\"right\">The second vector to add.</param>\n            <returns>The sum of the two vectors.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector3.Subtract(SharpDX.Vector3@,SharpDX.Vector3@,SharpDX.Vector3@)\">\n            <summary>\n            Subtracts two vectors.\n            </summary>\n            <param name=\"left\">The first vector to subtract.</param>\n            <param name=\"right\">The second vector to subtract.</param>\n            <param name=\"result\">When the method completes, contains the difference of the two vectors.</param>\n        </member>\n        <member name=\"M:SharpDX.Vector3.Subtract(SharpDX.Vector3,SharpDX.Vector3)\">\n            <summary>\n            Subtracts two vectors.\n            </summary>\n            <param name=\"left\">The first vector to subtract.</param>\n            <param name=\"right\">The second vector to subtract.</param>\n            <returns>The difference of the two vectors.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector3.Multiply(SharpDX.Vector3@,System.Single,SharpDX.Vector3@)\">\n            <summary>\n            Scales a vector by the given value.\n            </summary>\n            <param name=\"value\">The vector to scale.</param>\n            <param name=\"scale\">The amount by which to scale the vector.</param>\n            <param name=\"result\">When the method completes, contains the scaled vector.</param>\n        </member>\n        <member name=\"M:SharpDX.Vector3.Multiply(SharpDX.Vector3,System.Single)\">\n            <summary>\n            Scales a vector by the given value.\n            </summary>\n            <param name=\"value\">The vector to scale.</param>\n            <param name=\"scale\">The amount by which to scale the vector.</param>\n            <returns>The scaled vector.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector3.Modulate(SharpDX.Vector3@,SharpDX.Vector3@,SharpDX.Vector3@)\">\n            <summary>\n            Modulates a vector with another by performing component-wise multiplication.\n            </summary>\n            <param name=\"left\">The first vector to modulate.</param>\n            <param name=\"right\">The second vector to modulate.</param>\n            <param name=\"result\">When the method completes, contains the modulated vector.</param>\n        </member>\n        <member name=\"M:SharpDX.Vector3.Modulate(SharpDX.Vector3,SharpDX.Vector3)\">\n            <summary>\n            Modulates a vector with another by performing component-wise multiplication.\n            </summary>\n            <param name=\"left\">The first vector to modulate.</param>\n            <param name=\"right\">The second vector to modulate.</param>\n            <returns>The modulated vector.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector3.Divide(SharpDX.Vector3@,System.Single,SharpDX.Vector3@)\">\n            <summary>\n            Scales a vector by the given value.\n            </summary>\n            <param name=\"value\">The vector to scale.</param>\n            <param name=\"scale\">The amount by which to scale the vector.</param>\n            <param name=\"result\">When the method completes, contains the scaled vector.</param>\n        </member>\n        <member name=\"M:SharpDX.Vector3.Divide(SharpDX.Vector3,System.Single)\">\n            <summary>\n            Scales a vector by the given value.\n            </summary>\n            <param name=\"value\">The vector to scale.</param>\n            <param name=\"scale\">The amount by which to scale the vector.</param>\n            <returns>The scaled vector.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector3.Negate(SharpDX.Vector3@,SharpDX.Vector3@)\">\n            <summary>\n            Reverses the direction of a given vector.\n            </summary>\n            <param name=\"value\">The vector to negate.</param>\n            <param name=\"result\">When the method completes, contains a vector facing in the opposite direction.</param>\n        </member>\n        <member name=\"M:SharpDX.Vector3.Negate(SharpDX.Vector3)\">\n            <summary>\n            Reverses the direction of a given vector.\n            </summary>\n            <param name=\"value\">The vector to negate.</param>\n            <returns>A vector facing in the opposite direction.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector3.Barycentric(SharpDX.Vector3@,SharpDX.Vector3@,SharpDX.Vector3@,System.Single,System.Single,SharpDX.Vector3@)\">\n            <summary>\n            Returns a <see cref=\"T:SharpDX.Vector3\"/> containing the 3D Cartesian coordinates of a point specified in Barycentric coordinates relative to a 3D triangle.\n            </summary>\n            <param name=\"value1\">A <see cref=\"T:SharpDX.Vector3\"/> containing the 3D Cartesian coordinates of vertex 1 of the triangle.</param>\n            <param name=\"value2\">A <see cref=\"T:SharpDX.Vector3\"/> containing the 3D Cartesian coordinates of vertex 2 of the triangle.</param>\n            <param name=\"value3\">A <see cref=\"T:SharpDX.Vector3\"/> containing the 3D Cartesian coordinates of vertex 3 of the triangle.</param>\n            <param name=\"amount1\">Barycentric coordinate b2, which expresses the weighting factor toward vertex 2 (specified in <paramref name=\"value2\"/>).</param>\n            <param name=\"amount2\">Barycentric coordinate b3, which expresses the weighting factor toward vertex 3 (specified in <paramref name=\"value3\"/>).</param>\n            <param name=\"result\">When the method completes, contains the 3D Cartesian coordinates of the specified point.</param>\n        </member>\n        <member name=\"M:SharpDX.Vector3.Barycentric(SharpDX.Vector3,SharpDX.Vector3,SharpDX.Vector3,System.Single,System.Single)\">\n            <summary>\n            Returns a <see cref=\"T:SharpDX.Vector3\"/> containing the 3D Cartesian coordinates of a point specified in Barycentric coordinates relative to a 3D triangle.\n            </summary>\n            <param name=\"value1\">A <see cref=\"T:SharpDX.Vector3\"/> containing the 3D Cartesian coordinates of vertex 1 of the triangle.</param>\n            <param name=\"value2\">A <see cref=\"T:SharpDX.Vector3\"/> containing the 3D Cartesian coordinates of vertex 2 of the triangle.</param>\n            <param name=\"value3\">A <see cref=\"T:SharpDX.Vector3\"/> containing the 3D Cartesian coordinates of vertex 3 of the triangle.</param>\n            <param name=\"amount1\">Barycentric coordinate b2, which expresses the weighting factor toward vertex 2 (specified in <paramref name=\"value2\"/>).</param>\n            <param name=\"amount2\">Barycentric coordinate b3, which expresses the weighting factor toward vertex 3 (specified in <paramref name=\"value3\"/>).</param>\n            <returns>A new <see cref=\"T:SharpDX.Vector3\"/> containing the 3D Cartesian coordinates of the specified point.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector3.Clamp(SharpDX.Vector3@,SharpDX.Vector3@,SharpDX.Vector3@,SharpDX.Vector3@)\">\n            <summary>\n            Restricts a value to be within a specified range.\n            </summary>\n            <param name=\"value\">The value to clamp.</param>\n            <param name=\"min\">The minimum value.</param>\n            <param name=\"max\">The maximum value.</param>\n            <param name=\"result\">When the method completes, contains the clamped value.</param>\n        </member>\n        <member name=\"M:SharpDX.Vector3.Clamp(SharpDX.Vector3,SharpDX.Vector3,SharpDX.Vector3)\">\n            <summary>\n            Restricts a value to be within a specified range.\n            </summary>\n            <param name=\"value\">The value to clamp.</param>\n            <param name=\"min\">The minimum value.</param>\n            <param name=\"max\">The maximum value.</param>\n            <returns>The clamped value.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector3.Cross(SharpDX.Vector3@,SharpDX.Vector3@,SharpDX.Vector3@)\">\n            <summary>\n            Calculates the cross product of two vectors.\n            </summary>\n            <param name=\"left\">First source vector.</param>\n            <param name=\"right\">Second source vector.</param>\n            <param name=\"result\">When the method completes, contains he cross product of the two vectors.</param>\n        </member>\n        <member name=\"M:SharpDX.Vector3.Cross(SharpDX.Vector3,SharpDX.Vector3)\">\n            <summary>\n            Calculates the cross product of two vectors.\n            </summary>\n            <param name=\"left\">First source vector.</param>\n            <param name=\"right\">Second source vector.</param>\n            <returns>The cross product of the two vectors.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector3.Distance(SharpDX.Vector3@,SharpDX.Vector3@,System.Single@)\">\n            <summary>\n            Calculates the distance between two vectors.\n            </summary>\n            <param name=\"value1\">The first vector.</param>\n            <param name=\"value2\">The second vector.</param>\n            <param name=\"result\">When the method completes, contains the distance between the two vectors.</param>\n            <remarks>\n            <see cref=\"M:SharpDX.Vector3.DistanceSquared(SharpDX.Vector3@,SharpDX.Vector3@,System.Single@)\"/> may be preferred when only the relative distance is needed\n            and speed is of the essence.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Vector3.Distance(SharpDX.Vector3,SharpDX.Vector3)\">\n            <summary>\n            Calculates the distance between two vectors.\n            </summary>\n            <param name=\"value1\">The first vector.</param>\n            <param name=\"value2\">The second vector.</param>\n            <returns>The distance between the two vectors.</returns>\n            <remarks>\n            <see cref=\"M:SharpDX.Vector3.DistanceSquared(SharpDX.Vector3,SharpDX.Vector3)\"/> may be preferred when only the relative distance is needed\n            and speed is of the essence.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Vector3.DistanceSquared(SharpDX.Vector3@,SharpDX.Vector3@,System.Single@)\">\n            <summary>\n            Calculates the squared distance between two vectors.\n            </summary>\n            <param name=\"value1\">The first vector.</param>\n            <param name=\"value2\">The second vector.</param>\n            <param name=\"result\">When the method completes, contains the squared distance between the two vectors.</param>\n            <remarks>Distance squared is the value before taking the square root. \n            Distance squared can often be used in place of distance if relative comparisons are being made. \n            For example, consider three points A, B, and C. To determine whether B or C is further from A, \n            compare the distance between A and B to the distance between A and C. Calculating the two distances \n            involves two square roots, which are computationally expensive. However, using distance squared \n            provides the same information and avoids calculating two square roots.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Vector3.DistanceSquared(SharpDX.Vector3,SharpDX.Vector3)\">\n            <summary>\n            Calculates the squared distance between two vectors.\n            </summary>\n            <param name=\"value1\">The first vector.</param>\n            <param name=\"value2\">The second vector.</param>\n            <returns>The squared distance between the two vectors.</returns>\n            <remarks>Distance squared is the value before taking the square root. \n            Distance squared can often be used in place of distance if relative comparisons are being made. \n            For example, consider three points A, B, and C. To determine whether B or C is further from A, \n            compare the distance between A and B to the distance between A and C. Calculating the two distances \n            involves two square roots, which are computationally expensive. However, using distance squared \n            provides the same information and avoids calculating two square roots.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Vector3.Dot(SharpDX.Vector3@,SharpDX.Vector3@,System.Single@)\">\n            <summary>\n            Calculates the dot product of two vectors.\n            </summary>\n            <param name=\"left\">First source vector.</param>\n            <param name=\"right\">Second source vector.</param>\n            <param name=\"result\">When the method completes, contains the dot product of the two vectors.</param>\n        </member>\n        <member name=\"M:SharpDX.Vector3.Dot(SharpDX.Vector3,SharpDX.Vector3)\">\n            <summary>\n            Calculates the dot product of two vectors.\n            </summary>\n            <param name=\"left\">First source vector.</param>\n            <param name=\"right\">Second source vector.</param>\n            <returns>The dot product of the two vectors.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector3.Normalize(SharpDX.Vector3@,SharpDX.Vector3@)\">\n            <summary>\n            Converts the vector into a unit vector.\n            </summary>\n            <param name=\"value\">The vector to normalize.</param>\n            <param name=\"result\">When the method completes, contains the normalized vector.</param>\n        </member>\n        <member name=\"M:SharpDX.Vector3.Normalize(SharpDX.Vector3)\">\n            <summary>\n            Converts the vector into a unit vector.\n            </summary>\n            <param name=\"value\">The vector to normalize.</param>\n            <returns>The normalized vector.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector3.Lerp(SharpDX.Vector3@,SharpDX.Vector3@,System.Single,SharpDX.Vector3@)\">\n            <summary>\n            Performs a linear interpolation between two vectors.\n            </summary>\n            <param name=\"start\">Start vector.</param>\n            <param name=\"end\">End vector.</param>\n            <param name=\"amount\">Value between 0 and 1 indicating the weight of <paramref name=\"end\"/>.</param>\n            <param name=\"result\">When the method completes, contains the linear interpolation of the two vectors.</param>\n            <remarks>\n            This method performs the linear interpolation based on the following formula.\n            <code>start + (end - start) * amount</code>\n            Passing <paramref name=\"amount\"/> a value of 0 will cause <paramref name=\"start\"/> to be returned; a value of 1 will cause <paramref name=\"end\"/> to be returned. \n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Vector3.Lerp(SharpDX.Vector3,SharpDX.Vector3,System.Single)\">\n            <summary>\n            Performs a linear interpolation between two vectors.\n            </summary>\n            <param name=\"start\">Start vector.</param>\n            <param name=\"end\">End vector.</param>\n            <param name=\"amount\">Value between 0 and 1 indicating the weight of <paramref name=\"end\"/>.</param>\n            <returns>The linear interpolation of the two vectors.</returns>\n            <remarks>\n            This method performs the linear interpolation based on the following formula.\n            <code>start + (end - start) * amount</code>\n            Passing <paramref name=\"amount\"/> a value of 0 will cause <paramref name=\"start\"/> to be returned; a value of 1 will cause <paramref name=\"end\"/> to be returned. \n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Vector3.SmoothStep(SharpDX.Vector3@,SharpDX.Vector3@,System.Single,SharpDX.Vector3@)\">\n            <summary>\n            Performs a cubic interpolation between two vectors.\n            </summary>\n            <param name=\"start\">Start vector.</param>\n            <param name=\"end\">End vector.</param>\n            <param name=\"amount\">Value between 0 and 1 indicating the weight of <paramref name=\"end\"/>.</param>\n            <param name=\"result\">When the method completes, contains the cubic interpolation of the two vectors.</param>\n        </member>\n        <member name=\"M:SharpDX.Vector3.SmoothStep(SharpDX.Vector3,SharpDX.Vector3,System.Single)\">\n            <summary>\n            Performs a cubic interpolation between two vectors.\n            </summary>\n            <param name=\"start\">Start vector.</param>\n            <param name=\"end\">End vector.</param>\n            <param name=\"amount\">Value between 0 and 1 indicating the weight of <paramref name=\"end\"/>.</param>\n            <returns>The cubic interpolation of the two vectors.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector3.Hermite(SharpDX.Vector3@,SharpDX.Vector3@,SharpDX.Vector3@,SharpDX.Vector3@,System.Single,SharpDX.Vector3@)\">\n            <summary>\n            Performs a Hermite spline interpolation.\n            </summary>\n            <param name=\"value1\">First source position vector.</param>\n            <param name=\"tangent1\">First source tangent vector.</param>\n            <param name=\"value2\">Second source position vector.</param>\n            <param name=\"tangent2\">Second source tangent vector.</param>\n            <param name=\"amount\">Weighting factor.</param>\n            <param name=\"result\">When the method completes, contains the result of the Hermite spline interpolation.</param>\n        </member>\n        <member name=\"M:SharpDX.Vector3.Hermite(SharpDX.Vector3,SharpDX.Vector3,SharpDX.Vector3,SharpDX.Vector3,System.Single)\">\n            <summary>\n            Performs a Hermite spline interpolation.\n            </summary>\n            <param name=\"value1\">First source position vector.</param>\n            <param name=\"tangent1\">First source tangent vector.</param>\n            <param name=\"value2\">Second source position vector.</param>\n            <param name=\"tangent2\">Second source tangent vector.</param>\n            <param name=\"amount\">Weighting factor.</param>\n            <returns>The result of the Hermite spline interpolation.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector3.CatmullRom(SharpDX.Vector3@,SharpDX.Vector3@,SharpDX.Vector3@,SharpDX.Vector3@,System.Single,SharpDX.Vector3@)\">\n            <summary>\n            Performs a Catmull-Rom interpolation using the specified positions.\n            </summary>\n            <param name=\"value1\">The first position in the interpolation.</param>\n            <param name=\"value2\">The second position in the interpolation.</param>\n            <param name=\"value3\">The third position in the interpolation.</param>\n            <param name=\"value4\">The fourth position in the interpolation.</param>\n            <param name=\"amount\">Weighting factor.</param>\n            <param name=\"result\">When the method completes, contains the result of the Catmull-Rom interpolation.</param>\n        </member>\n        <member name=\"M:SharpDX.Vector3.CatmullRom(SharpDX.Vector3,SharpDX.Vector3,SharpDX.Vector3,SharpDX.Vector3,System.Single)\">\n            <summary>\n            Performs a Catmull-Rom interpolation using the specified positions.\n            </summary>\n            <param name=\"value1\">The first position in the interpolation.</param>\n            <param name=\"value2\">The second position in the interpolation.</param>\n            <param name=\"value3\">The third position in the interpolation.</param>\n            <param name=\"value4\">The fourth position in the interpolation.</param>\n            <param name=\"amount\">Weighting factor.</param>\n            <returns>A vector that is the result of the Catmull-Rom interpolation.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector3.Max(SharpDX.Vector3@,SharpDX.Vector3@,SharpDX.Vector3@)\">\n            <summary>\n            Returns a vector containing the largest components of the specified vectors.\n            </summary>\n            <param name=\"left\">The first source vector.</param>\n            <param name=\"right\">The second source vector.</param>\n            <param name=\"result\">When the method completes, contains an new vector composed of the largest components of the source vectors.</param>\n        </member>\n        <member name=\"M:SharpDX.Vector3.Max(SharpDX.Vector3,SharpDX.Vector3)\">\n            <summary>\n            Returns a vector containing the largest components of the specified vectors.\n            </summary>\n            <param name=\"left\">The first source vector.</param>\n            <param name=\"right\">The second source vector.</param>\n            <returns>A vector containing the largest components of the source vectors.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector3.Min(SharpDX.Vector3@,SharpDX.Vector3@,SharpDX.Vector3@)\">\n            <summary>\n            Returns a vector containing the smallest components of the specified vectors.\n            </summary>\n            <param name=\"left\">The first source vector.</param>\n            <param name=\"right\">The second source vector.</param>\n            <param name=\"result\">When the method completes, contains an new vector composed of the smallest components of the source vectors.</param>\n        </member>\n        <member name=\"M:SharpDX.Vector3.Min(SharpDX.Vector3,SharpDX.Vector3)\">\n            <summary>\n            Returns a vector containing the smallest components of the specified vectors.\n            </summary>\n            <param name=\"left\">The first source vector.</param>\n            <param name=\"right\">The second source vector.</param>\n            <returns>A vector containing the smallest components of the source vectors.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector3.Project(SharpDX.Vector3@,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,SharpDX.Matrix@,SharpDX.Vector3@)\">\n            <summary>\n            Projects a 3D vector from object space into screen space. \n            </summary>\n            <param name=\"vector\">The vector to project.</param>\n            <param name=\"x\">The X position of the viewport.</param>\n            <param name=\"y\">The Y position of the viewport.</param>\n            <param name=\"width\">The width of the viewport.</param>\n            <param name=\"height\">The height of the viewport.</param>\n            <param name=\"minZ\">The minimum depth of the viewport.</param>\n            <param name=\"maxZ\">The maximum depth of the viewport.</param>\n            <param name=\"worldViewProjection\">The combined world-view-projection matrix.</param>\n            <param name=\"result\">When the method completes, contains the vector in screen space.</param>\n        </member>\n        <member name=\"M:SharpDX.Vector3.Project(SharpDX.Vector3,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,SharpDX.Matrix)\">\n            <summary>\n            Projects a 3D vector from object space into screen space. \n            </summary>\n            <param name=\"vector\">The vector to project.</param>\n            <param name=\"x\">The X position of the viewport.</param>\n            <param name=\"y\">The Y position of the viewport.</param>\n            <param name=\"width\">The width of the viewport.</param>\n            <param name=\"height\">The height of the viewport.</param>\n            <param name=\"minZ\">The minimum depth of the viewport.</param>\n            <param name=\"maxZ\">The maximum depth of the viewport.</param>\n            <param name=\"worldViewProjection\">The combined world-view-projection matrix.</param>\n            <returns>The vector in screen space.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector3.Unproject(SharpDX.Vector3@,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,SharpDX.Matrix@,SharpDX.Vector3@)\">\n            <summary>\n            Projects a 3D vector from screen space into object space. \n            </summary>\n            <param name=\"vector\">The vector to project.</param>\n            <param name=\"x\">The X position of the viewport.</param>\n            <param name=\"y\">The Y position of the viewport.</param>\n            <param name=\"width\">The width of the viewport.</param>\n            <param name=\"height\">The height of the viewport.</param>\n            <param name=\"minZ\">The minimum depth of the viewport.</param>\n            <param name=\"maxZ\">The maximum depth of the viewport.</param>\n            <param name=\"worldViewProjection\">The combined world-view-projection matrix.</param>\n            <param name=\"result\">When the method completes, contains the vector in object space.</param>\n        </member>\n        <member name=\"M:SharpDX.Vector3.Unproject(SharpDX.Vector3,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,SharpDX.Matrix)\">\n            <summary>\n            Projects a 3D vector from screen space into object space. \n            </summary>\n            <param name=\"vector\">The vector to project.</param>\n            <param name=\"x\">The X position of the viewport.</param>\n            <param name=\"y\">The Y position of the viewport.</param>\n            <param name=\"width\">The width of the viewport.</param>\n            <param name=\"height\">The height of the viewport.</param>\n            <param name=\"minZ\">The minimum depth of the viewport.</param>\n            <param name=\"maxZ\">The maximum depth of the viewport.</param>\n            <param name=\"worldViewProjection\">The combined world-view-projection matrix.</param>\n            <returns>The vector in object space.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector3.Reflect(SharpDX.Vector3@,SharpDX.Vector3@,SharpDX.Vector3@)\">\n            <summary>\n            Returns the reflection of a vector off a surface that has the specified normal. \n            </summary>\n            <param name=\"vector\">The source vector.</param>\n            <param name=\"normal\">Normal of the surface.</param>\n            <param name=\"result\">When the method completes, contains the reflected vector.</param>\n            <remarks>Reflect only gives the direction of a reflection off a surface, it does not determine \n            whether the original vector was close enough to the surface to hit it.</remarks>\n        </member>\n        <member name=\"M:SharpDX.Vector3.Reflect(SharpDX.Vector3,SharpDX.Vector3)\">\n            <summary>\n            Returns the reflection of a vector off a surface that has the specified normal. \n            </summary>\n            <param name=\"vector\">The source vector.</param>\n            <param name=\"normal\">Normal of the surface.</param>\n            <returns>The reflected vector.</returns>\n            <remarks>Reflect only gives the direction of a reflection off a surface, it does not determine \n            whether the original vector was close enough to the surface to hit it.</remarks>\n        </member>\n        <member name=\"M:SharpDX.Vector3.Orthogonalize(SharpDX.Vector3[],SharpDX.Vector3[])\">\n            <summary>\n            Orthogonalizes a list of vectors.\n            </summary>\n            <param name=\"destination\">The list of orthogonalized vectors.</param>\n            <param name=\"source\">The list of vectors to orthogonalize.</param>\n            <remarks>\n            <para>Orthogonalization is the process of making all vectors orthogonal to each other. This\n            means that any given vector in the list will be orthogonal to any other given vector in the\n            list.</para>\n            <para>Because this method uses the modified Gram-Schmidt process, the resulting vectors\n            tend to be numerically unstable. The numeric stability decreases according to the vectors\n            position in the list so that the first vector is the most stable and the last vector is the\n            least stable.</para>\n            </remarks>\n            <exception cref=\"T:System.ArgumentNullException\">Thrown when <paramref name=\"source\"/> or <paramref name=\"destination\"/> is <c>null</c>.</exception>\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">Thrown when <paramref name=\"destination\"/> is shorter in length than <paramref name=\"source\"/>.</exception>\n        </member>\n        <member name=\"M:SharpDX.Vector3.Orthonormalize(SharpDX.Vector3[],SharpDX.Vector3[])\">\n            <summary>\n            Orthonormalizes a list of vectors.\n            </summary>\n            <param name=\"destination\">The list of orthonormalized vectors.</param>\n            <param name=\"source\">The list of vectors to orthonormalize.</param>\n            <remarks>\n            <para>Orthonormalization is the process of making all vectors orthogonal to each\n            other and making all vectors of unit length. This means that any given vector will\n            be orthogonal to any other given vector in the list.</para>\n            <para>Because this method uses the modified Gram-Schmidt process, the resulting vectors\n            tend to be numerically unstable. The numeric stability decreases according to the vectors\n            position in the list so that the first vector is the most stable and the last vector is the\n            least stable.</para>\n            </remarks>\n            <exception cref=\"T:System.ArgumentNullException\">Thrown when <paramref name=\"source\"/> or <paramref name=\"destination\"/> is <c>null</c>.</exception>\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">Thrown when <paramref name=\"destination\"/> is shorter in length than <paramref name=\"source\"/>.</exception>\n        </member>\n        <member name=\"M:SharpDX.Vector3.Transform(SharpDX.Vector3@,SharpDX.Quaternion@,SharpDX.Vector3@)\">\n            <summary>\n            Transforms a 3D vector by the given <see cref=\"T:SharpDX.Quaternion\"/> rotation.\n            </summary>\n            <param name=\"vector\">The vector to rotate.</param>\n            <param name=\"rotation\">The <see cref=\"T:SharpDX.Quaternion\"/> rotation to apply.</param>\n            <param name=\"result\">When the method completes, contains the transformed <see cref=\"T:SharpDX.Vector4\"/>.</param>\n        </member>\n        <member name=\"M:SharpDX.Vector3.Transform(SharpDX.Vector3,SharpDX.Quaternion)\">\n            <summary>\n            Transforms a 3D vector by the given <see cref=\"T:SharpDX.Quaternion\"/> rotation.\n            </summary>\n            <param name=\"vector\">The vector to rotate.</param>\n            <param name=\"rotation\">The <see cref=\"T:SharpDX.Quaternion\"/> rotation to apply.</param>\n            <returns>The transformed <see cref=\"T:SharpDX.Vector4\"/>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector3.Transform(SharpDX.Vector3[],SharpDX.Quaternion@,SharpDX.Vector3[])\">\n            <summary>\n            Transforms an array of vectors by the given <see cref=\"T:SharpDX.Quaternion\"/> rotation.\n            </summary>\n            <param name=\"source\">The array of vectors to transform.</param>\n            <param name=\"rotation\">The <see cref=\"T:SharpDX.Quaternion\"/> rotation to apply.</param>\n            <param name=\"destination\">The array for which the transformed vectors are stored.\n            This array may be the same array as <paramref name=\"source\"/>.</param>\n            <exception cref=\"T:System.ArgumentNullException\">Thrown when <paramref name=\"source\"/> or <paramref name=\"destination\"/> is <c>null</c>.</exception>\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">Thrown when <paramref name=\"destination\"/> is shorter in length than <paramref name=\"source\"/>.</exception>\n        </member>\n        <member name=\"M:SharpDX.Vector3.Transform(SharpDX.Vector3@,SharpDX.Matrix@,SharpDX.Vector4@)\">\n            <summary>\n            Transforms a 3D vector by the given <see cref=\"T:SharpDX.Matrix\"/>.\n            </summary>\n            <param name=\"vector\">The source vector.</param>\n            <param name=\"transform\">The transformation <see cref=\"T:SharpDX.Matrix\"/>.</param>\n            <param name=\"result\">When the method completes, contains the transformed <see cref=\"T:SharpDX.Vector4\"/>.</param>\n        </member>\n        <member name=\"M:SharpDX.Vector3.Transform(SharpDX.Vector3,SharpDX.Matrix)\">\n            <summary>\n            Transforms a 3D vector by the given <see cref=\"T:SharpDX.Matrix\"/>.\n            </summary>\n            <param name=\"vector\">The source vector.</param>\n            <param name=\"transform\">The transformation <see cref=\"T:SharpDX.Matrix\"/>.</param>\n            <returns>The transformed <see cref=\"T:SharpDX.Vector4\"/>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector3.Transform(SharpDX.Vector3[],SharpDX.Matrix@,SharpDX.Vector4[])\">\n            <summary>\n            Transforms an array of 3D vectors by the given <see cref=\"T:SharpDX.Matrix\"/>.\n            </summary>\n            <param name=\"source\">The array of vectors to transform.</param>\n            <param name=\"transform\">The transformation <see cref=\"T:SharpDX.Matrix\"/>.</param>\n            <param name=\"destination\">The array for which the transformed vectors are stored.</param>\n            <exception cref=\"T:System.ArgumentNullException\">Thrown when <paramref name=\"source\"/> or <paramref name=\"destination\"/> is <c>null</c>.</exception>\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">Thrown when <paramref name=\"destination\"/> is shorter in length than <paramref name=\"source\"/>.</exception>\n        </member>\n        <member name=\"M:SharpDX.Vector3.TransformCoordinate(SharpDX.Vector3@,SharpDX.Matrix@,SharpDX.Vector3@)\">\n            <summary>\n            Performs a coordinate transformation using the given <see cref=\"T:SharpDX.Matrix\"/>.\n            </summary>\n            <param name=\"coordinate\">The coordinate vector to transform.</param>\n            <param name=\"transform\">The transformation <see cref=\"T:SharpDX.Matrix\"/>.</param>\n            <param name=\"result\">When the method completes, contains the transformed coordinates.</param>\n            <remarks>\n            A coordinate transform performs the transformation with the assumption that the w component\n            is one. The four dimensional vector obtained from the transformation operation has each\n            component in the vector divided by the w component. This forces the wcomponent to be one and\n            therefore makes the vector homogeneous. The homogeneous vector is often prefered when working\n            with coordinates as the w component can safely be ignored.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Vector3.TransformCoordinate(SharpDX.Vector3,SharpDX.Matrix)\">\n            <summary>\n            Performs a coordinate transformation using the given <see cref=\"T:SharpDX.Matrix\"/>.\n            </summary>\n            <param name=\"coordinate\">The coordinate vector to transform.</param>\n            <param name=\"transform\">The transformation <see cref=\"T:SharpDX.Matrix\"/>.</param>\n            <returns>The transformed coordinates.</returns>\n            <remarks>\n            A coordinate transform performs the transformation with the assumption that the w component\n            is one. The four dimensional vector obtained from the transformation operation has each\n            component in the vector divided by the w component. This forces the wcomponent to be one and\n            therefore makes the vector homogeneous. The homogeneous vector is often prefered when working\n            with coordinates as the w component can safely be ignored.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Vector3.TransformCoordinate(SharpDX.Vector3[],SharpDX.Matrix@,SharpDX.Vector3[])\">\n            <summary>\n            Performs a coordinate transformation on an array of vectors using the given <see cref=\"T:SharpDX.Matrix\"/>.\n            </summary>\n            <param name=\"source\">The array of coordinate vectors to trasnform.</param>\n            <param name=\"transform\">The transformation <see cref=\"T:SharpDX.Matrix\"/>.</param>\n            <param name=\"destination\">The array for which the transformed vectors are stored.\n            This array may be the same array as <paramref name=\"source\"/>.</param>\n            <exception cref=\"T:System.ArgumentNullException\">Thrown when <paramref name=\"source\"/> or <paramref name=\"destination\"/> is <c>null</c>.</exception>\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">Thrown when <paramref name=\"destination\"/> is shorter in length than <paramref name=\"source\"/>.</exception>\n            <remarks>\n            A coordinate transform performs the transformation with the assumption that the w component\n            is one. The four dimensional vector obtained from the transformation operation has each\n            component in the vector divided by the w component. This forces the wcomponent to be one and\n            therefore makes the vector homogeneous. The homogeneous vector is often prefered when working\n            with coordinates as the w component can safely be ignored.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Vector3.TransformNormal(SharpDX.Vector3@,SharpDX.Matrix@,SharpDX.Vector3@)\">\n            <summary>\n            Performs a normal transformation using the given <see cref=\"T:SharpDX.Matrix\"/>.\n            </summary>\n            <param name=\"normal\">The normal vector to transform.</param>\n            <param name=\"transform\">The transformation <see cref=\"T:SharpDX.Matrix\"/>.</param>\n            <param name=\"result\">When the method completes, contains the transformed normal.</param>\n            <remarks>\n            A normal transform performs the transformation with the assumption that the w component\n            is zero. This causes the fourth row and fourth collumn of the matrix to be unused. The\n            end result is a vector that is not translated, but all other transformation properties\n            apply. This is often prefered for normal vectors as normals purely represent direction\n            rather than location because normal vectors should not be translated.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Vector3.TransformNormal(SharpDX.Vector3,SharpDX.Matrix)\">\n            <summary>\n            Performs a normal transformation using the given <see cref=\"T:SharpDX.Matrix\"/>.\n            </summary>\n            <param name=\"normal\">The normal vector to transform.</param>\n            <param name=\"transform\">The transformation <see cref=\"T:SharpDX.Matrix\"/>.</param>\n            <returns>The transformed normal.</returns>\n            <remarks>\n            A normal transform performs the transformation with the assumption that the w component\n            is zero. This causes the fourth row and fourth collumn of the matrix to be unused. The\n            end result is a vector that is not translated, but all other transformation properties\n            apply. This is often prefered for normal vectors as normals purely represent direction\n            rather than location because normal vectors should not be translated.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Vector3.TransformNormal(SharpDX.Vector3[],SharpDX.Matrix@,SharpDX.Vector3[])\">\n            <summary>\n            Performs a normal transformation on an array of vectors using the given <see cref=\"T:SharpDX.Matrix\"/>.\n            </summary>\n            <param name=\"source\">The array of normal vectors to transform.</param>\n            <param name=\"transform\">The transformation <see cref=\"T:SharpDX.Matrix\"/>.</param>\n            <param name=\"destination\">The array for which the transformed vectors are stored.\n            This array may be the same array as <paramref name=\"source\"/>.</param>\n            <exception cref=\"T:System.ArgumentNullException\">Thrown when <paramref name=\"source\"/> or <paramref name=\"destination\"/> is <c>null</c>.</exception>\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">Thrown when <paramref name=\"destination\"/> is shorter in length than <paramref name=\"source\"/>.</exception>\n            <remarks>\n            A normal transform performs the transformation with the assumption that the w component\n            is zero. This causes the fourth row and fourth collumn of the matrix to be unused. The\n            end result is a vector that is not translated, but all other transformation properties\n            apply. This is often prefered for normal vectors as normals purely represent direction\n            rather than location because normal vectors should not be translated.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Vector3.op_Addition(SharpDX.Vector3,SharpDX.Vector3)\">\n            <summary>\n            Adds two vectors.\n            </summary>\n            <param name=\"left\">The first vector to add.</param>\n            <param name=\"right\">The second vector to add.</param>\n            <returns>The sum of the two vectors.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector3.op_Multiply(SharpDX.Vector3,SharpDX.Vector3)\">\n            <summary>\n            Modulates a vector with another by performing component-wise multiplication equivalent to <see cref=\"M:SharpDX.Vector3.Modulate(SharpDX.Vector3@,SharpDX.Vector3@,SharpDX.Vector3@)\"/>.\n            </summary>\n            <param name=\"left\">The first vector to multiply.</param>\n            <param name=\"right\">The second vector to multiply.</param>\n            <returns>The multiplication of the two vectors.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector3.op_UnaryPlus(SharpDX.Vector3)\">\n            <summary>\n            Assert a vector (return it unchanged).\n            </summary>\n            <param name=\"value\">The vector to assert (unchange).</param>\n            <returns>The asserted (unchanged) vector.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector3.op_Subtraction(SharpDX.Vector3,SharpDX.Vector3)\">\n            <summary>\n            Subtracts two vectors.\n            </summary>\n            <param name=\"left\">The first vector to subtract.</param>\n            <param name=\"right\">The second vector to subtract.</param>\n            <returns>The difference of the two vectors.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector3.op_UnaryNegation(SharpDX.Vector3)\">\n            <summary>\n            Reverses the direction of a given vector.\n            </summary>\n            <param name=\"value\">The vector to negate.</param>\n            <returns>A vector facing in the opposite direction.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector3.op_Multiply(System.Single,SharpDX.Vector3)\">\n            <summary>\n            Scales a vector by the given value.\n            </summary>\n            <param name=\"value\">The vector to scale.</param>\n            <param name=\"scale\">The amount by which to scale the vector.</param>\n            <returns>The scaled vector.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector3.op_Multiply(SharpDX.Vector3,System.Single)\">\n            <summary>\n            Scales a vector by the given value.\n            </summary>\n            <param name=\"value\">The vector to scale.</param>\n            <param name=\"scale\">The amount by which to scale the vector.</param>\n            <returns>The scaled vector.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector3.op_Division(SharpDX.Vector3,System.Single)\">\n            <summary>\n            Scales a vector by the given value.\n            </summary>\n            <param name=\"value\">The vector to scale.</param>\n            <param name=\"scale\">The amount by which to scale the vector.</param>\n            <returns>The scaled vector.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector3.op_Division(SharpDX.Vector3,SharpDX.Vector3)\">\n            <summary>\n            Scales a vector by the given value.\n            </summary>\n            <param name=\"value\">The vector to scale.</param>\n            <param name=\"scale\">The amount by which to scale the vector.</param>\n            <returns>The scaled vector.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector3.op_Equality(SharpDX.Vector3,SharpDX.Vector3)\">\n            <summary>\n            Tests for equality between two objects.\n            </summary>\n            <param name=\"left\">The first value to compare.</param>\n            <param name=\"right\">The second value to compare.</param>\n            <returns><c>true</c> if <paramref name=\"left\"/> has the same value as <paramref name=\"right\"/>; otherwise, <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector3.op_Inequality(SharpDX.Vector3,SharpDX.Vector3)\">\n            <summary>\n            Tests for inequality between two objects.\n            </summary>\n            <param name=\"left\">The first value to compare.</param>\n            <param name=\"right\">The second value to compare.</param>\n            <returns><c>true</c> if <paramref name=\"left\"/> has a different value than <paramref name=\"right\"/>; otherwise, <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector3.op_Explicit(SharpDX.Vector3)~SharpDX.Vector2\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:SharpDX.Vector3\"/> to <see cref=\"T:SharpDX.Vector2\"/>.\n            </summary>\n            <param name=\"value\">The value.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector3.op_Explicit(SharpDX.Vector3)~SharpDX.Vector4\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:SharpDX.Vector3\"/> to <see cref=\"T:SharpDX.Vector4\"/>.\n            </summary>\n            <param name=\"value\">The value.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector3.ToString\">\n            <summary>\n            Returns a <see cref=\"T:System.String\"/> that represents this instance.\n            </summary>\n            <returns>\n            A <see cref=\"T:System.String\"/> that represents this instance.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Vector3.ToString(System.String)\">\n            <summary>\n            Returns a <see cref=\"T:System.String\"/> that represents this instance.\n            </summary>\n            <param name=\"format\">The format.</param>\n            <returns>\n            A <see cref=\"T:System.String\"/> that represents this instance.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Vector3.ToString(System.IFormatProvider)\">\n            <summary>\n            Returns a <see cref=\"T:System.String\"/> that represents this instance.\n            </summary>\n            <param name=\"formatProvider\">The format provider.</param>\n            <returns>\n            A <see cref=\"T:System.String\"/> that represents this instance.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Vector3.ToString(System.String,System.IFormatProvider)\">\n            <summary>\n            Returns a <see cref=\"T:System.String\"/> that represents this instance.\n            </summary>\n            <param name=\"format\">The format.</param>\n            <param name=\"formatProvider\">The format provider.</param>\n            <returns>\n            A <see cref=\"T:System.String\"/> that represents this instance.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Vector3.GetHashCode\">\n            <summary>\n            Returns a hash code for this instance.\n            </summary>\n            <returns>\n            A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. \n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Vector3.SharpDX#Serialization#IDataSerializable#Serialize(SharpDX.Serialization.BinarySerializer)\">\n            <inheritdoc/>\n        </member>\n        <member name=\"M:SharpDX.Vector3.Equals(SharpDX.Vector3)\">\n            <summary>\n            Determines whether the specified <see cref=\"T:SharpDX.Vector3\"/> is equal to this instance.\n            </summary>\n            <param name=\"other\">The <see cref=\"T:SharpDX.Vector3\"/> to compare with this instance.</param>\n            <returns>\n            \t<c>true</c> if the specified <see cref=\"T:SharpDX.Vector3\"/> is equal to this instance; otherwise, <c>false</c>.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Vector3.Equals(System.Object)\">\n            <summary>\n            Determines whether the specified <see cref=\"T:System.Object\"/> is equal to this instance.\n            </summary>\n            <param name=\"value\">The <see cref=\"T:System.Object\"/> to compare with this instance.</param>\n            <returns>\n            \t<c>true</c> if the specified <see cref=\"T:System.Object\"/> is equal to this instance; otherwise, <c>false</c>.\n            </returns>\n        </member>\n        <member name=\"P:SharpDX.Vector3.IsNormalized\">\n            <summary>\n            Gets a value indicting whether this instance is normalized.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Vector3.Item(System.Int32)\">\n            <summary>\n            Gets or sets the component at the specified index.\n            </summary>\n            <value>The value of the X, Y, or Z component, depending on the index.</value>\n            <param name=\"index\">The index of the component to access. Use 0 for the X component, 1 for the Y component, and 2 for the Z component.</param>\n            <returns>The value of the component at the specified index.</returns>\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">Thrown when the <paramref name=\"index\"/> is out of the range [0, 2].</exception>\n        </member>\n        <member name=\"T:SharpDX.Vector4\">\n            <summary>\n            Represents a four dimensional mathematical vector.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Vector4.SizeInBytes\">\n            <summary>\n            The size of the <see cref=\"T:SharpDX.Vector4\"/> type, in bytes.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Vector4.Zero\">\n            <summary>\n            A <see cref=\"T:SharpDX.Vector4\"/> with all of its components set to zero.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Vector4.UnitX\">\n            <summary>\n            The X unit <see cref=\"T:SharpDX.Vector4\"/> (1, 0, 0, 0).\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Vector4.UnitY\">\n            <summary>\n            The Y unit <see cref=\"T:SharpDX.Vector4\"/> (0, 1, 0, 0).\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Vector4.UnitZ\">\n            <summary>\n            The Z unit <see cref=\"T:SharpDX.Vector4\"/> (0, 0, 1, 0).\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Vector4.UnitW\">\n            <summary>\n            The W unit <see cref=\"T:SharpDX.Vector4\"/> (0, 0, 0, 1).\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Vector4.One\">\n            <summary>\n            A <see cref=\"T:SharpDX.Vector4\"/> with all of its components set to one.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Vector4.X\">\n            <summary>\n            The X component of the vector.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Vector4.Y\">\n            <summary>\n            The Y component of the vector.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Vector4.Z\">\n            <summary>\n            The Z component of the vector.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Vector4.W\">\n            <summary>\n            The W component of the vector.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Vector4.#ctor(System.Single)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Vector4\"/> struct.\n            </summary>\n            <param name=\"value\">The value that will be assigned to all components.</param>\n        </member>\n        <member name=\"M:SharpDX.Vector4.#ctor(System.Single,System.Single,System.Single,System.Single)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Vector4\"/> struct.\n            </summary>\n            <param name=\"x\">Initial value for the X component of the vector.</param>\n            <param name=\"y\">Initial value for the Y component of the vector.</param>\n            <param name=\"z\">Initial value for the Z component of the vector.</param>\n            <param name=\"w\">Initial value for the W component of the vector.</param>\n        </member>\n        <member name=\"M:SharpDX.Vector4.#ctor(SharpDX.Vector3,System.Single)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Vector4\"/> struct.\n            </summary>\n            <param name=\"value\">A vector containing the values with which to initialize the X, Y, and Z components.</param>\n            <param name=\"w\">Initial value for the W component of the vector.</param>\n        </member>\n        <member name=\"M:SharpDX.Vector4.#ctor(SharpDX.Vector2,System.Single,System.Single)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Vector4\"/> struct.\n            </summary>\n            <param name=\"value\">A vector containing the values with which to initialize the X and Y components.</param>\n            <param name=\"z\">Initial value for the Z component of the vector.</param>\n            <param name=\"w\">Initial value for the W component of the vector.</param>\n        </member>\n        <member name=\"M:SharpDX.Vector4.#ctor(System.Single[])\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Vector4\"/> struct.\n            </summary>\n            <param name=\"values\">The values to assign to the X, Y, Z, and W components of the vector. This must be an array with four elements.</param>\n            <exception cref=\"T:System.ArgumentNullException\">Thrown when <paramref name=\"values\"/> is <c>null</c>.</exception>\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">Thrown when <paramref name=\"values\"/> contains more or less than four elements.</exception>\n        </member>\n        <member name=\"M:SharpDX.Vector4.Length\">\n            <summary>\n            Calculates the length of the vector.\n            </summary>\n            <returns>The length of the vector.</returns>\n            <remarks>\n            <see cref=\"M:SharpDX.Vector4.LengthSquared\"/> may be preferred when only the relative length is needed\n            and speed is of the essence.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Vector4.LengthSquared\">\n            <summary>\n            Calculates the squared length of the vector.\n            </summary>\n            <returns>The squared length of the vector.</returns>\n            <remarks>\n            This method may be preferred to <see cref=\"M:SharpDX.Vector4.Length\"/> when only a relative length is needed\n            and speed is of the essence.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Vector4.Normalize\">\n            <summary>\n            Converts the vector into a unit vector.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Vector4.ToArray\">\n            <summary>\n            Creates an array containing the elements of the vector.\n            </summary>\n            <returns>A four-element array containing the components of the vector.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector4.Add(SharpDX.Vector4@,SharpDX.Vector4@,SharpDX.Vector4@)\">\n            <summary>\n            Adds two vectors.\n            </summary>\n            <param name=\"left\">The first vector to add.</param>\n            <param name=\"right\">The second vector to add.</param>\n            <param name=\"result\">When the method completes, contains the sum of the two vectors.</param>\n        </member>\n        <member name=\"M:SharpDX.Vector4.Add(SharpDX.Vector4,SharpDX.Vector4)\">\n            <summary>\n            Adds two vectors.\n            </summary>\n            <param name=\"left\">The first vector to add.</param>\n            <param name=\"right\">The second vector to add.</param>\n            <returns>The sum of the two vectors.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector4.Subtract(SharpDX.Vector4@,SharpDX.Vector4@,SharpDX.Vector4@)\">\n            <summary>\n            Subtracts two vectors.\n            </summary>\n            <param name=\"left\">The first vector to subtract.</param>\n            <param name=\"right\">The second vector to subtract.</param>\n            <param name=\"result\">When the method completes, contains the difference of the two vectors.</param>\n        </member>\n        <member name=\"M:SharpDX.Vector4.Subtract(SharpDX.Vector4,SharpDX.Vector4)\">\n            <summary>\n            Subtracts two vectors.\n            </summary>\n            <param name=\"left\">The first vector to subtract.</param>\n            <param name=\"right\">The second vector to subtract.</param>\n            <returns>The difference of the two vectors.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector4.Multiply(SharpDX.Vector4@,System.Single,SharpDX.Vector4@)\">\n            <summary>\n            Scales a vector by the given value.\n            </summary>\n            <param name=\"value\">The vector to scale.</param>\n            <param name=\"scale\">The amount by which to scale the vector.</param>\n            <param name=\"result\">When the method completes, contains the scaled vector.</param>\n        </member>\n        <member name=\"M:SharpDX.Vector4.Multiply(SharpDX.Vector4,System.Single)\">\n            <summary>\n            Scales a vector by the given value.\n            </summary>\n            <param name=\"value\">The vector to scale.</param>\n            <param name=\"scale\">The amount by which to scale the vector.</param>\n            <returns>The scaled vector.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector4.Modulate(SharpDX.Vector4@,SharpDX.Vector4@,SharpDX.Vector4@)\">\n            <summary>\n            Modulates a vector with another by performing component-wise multiplication.\n            </summary>\n            <param name=\"left\">The first vector to modulate.</param>\n            <param name=\"right\">The second vector to modulate.</param>\n            <param name=\"result\">When the method completes, contains the modulated vector.</param>\n        </member>\n        <member name=\"M:SharpDX.Vector4.Modulate(SharpDX.Vector4,SharpDX.Vector4)\">\n            <summary>\n            Modulates a vector with another by performing component-wise multiplication.\n            </summary>\n            <param name=\"left\">The first vector to modulate.</param>\n            <param name=\"right\">The second vector to modulate.</param>\n            <returns>The modulated vector.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector4.Divide(SharpDX.Vector4@,System.Single,SharpDX.Vector4@)\">\n            <summary>\n            Scales a vector by the given value.\n            </summary>\n            <param name=\"value\">The vector to scale.</param>\n            <param name=\"scale\">The amount by which to scale the vector.</param>\n            <param name=\"result\">When the method completes, contains the scaled vector.</param>\n        </member>\n        <member name=\"M:SharpDX.Vector4.Divide(SharpDX.Vector4,System.Single)\">\n            <summary>\n            Scales a vector by the given value.\n            </summary>\n            <param name=\"value\">The vector to scale.</param>\n            <param name=\"scale\">The amount by which to scale the vector.</param>\n            <returns>The scaled vector.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector4.Negate(SharpDX.Vector4@,SharpDX.Vector4@)\">\n            <summary>\n            Reverses the direction of a given vector.\n            </summary>\n            <param name=\"value\">The vector to negate.</param>\n            <param name=\"result\">When the method completes, contains a vector facing in the opposite direction.</param>\n        </member>\n        <member name=\"M:SharpDX.Vector4.Negate(SharpDX.Vector4)\">\n            <summary>\n            Reverses the direction of a given vector.\n            </summary>\n            <param name=\"value\">The vector to negate.</param>\n            <returns>A vector facing in the opposite direction.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector4.Barycentric(SharpDX.Vector4@,SharpDX.Vector4@,SharpDX.Vector4@,System.Single,System.Single,SharpDX.Vector4@)\">\n            <summary>\n            Returns a <see cref=\"T:SharpDX.Vector4\"/> containing the 4D Cartesian coordinates of a point specified in Barycentric coordinates relative to a 4D triangle.\n            </summary>\n            <param name=\"value1\">A <see cref=\"T:SharpDX.Vector4\"/> containing the 4D Cartesian coordinates of vertex 1 of the triangle.</param>\n            <param name=\"value2\">A <see cref=\"T:SharpDX.Vector4\"/> containing the 4D Cartesian coordinates of vertex 2 of the triangle.</param>\n            <param name=\"value3\">A <see cref=\"T:SharpDX.Vector4\"/> containing the 4D Cartesian coordinates of vertex 3 of the triangle.</param>\n            <param name=\"amount1\">Barycentric coordinate b2, which expresses the weighting factor toward vertex 2 (specified in <paramref name=\"value2\"/>).</param>\n            <param name=\"amount2\">Barycentric coordinate b3, which expresses the weighting factor toward vertex 3 (specified in <paramref name=\"value3\"/>).</param>\n            <param name=\"result\">When the method completes, contains the 4D Cartesian coordinates of the specified point.</param>\n        </member>\n        <member name=\"M:SharpDX.Vector4.Barycentric(SharpDX.Vector4,SharpDX.Vector4,SharpDX.Vector4,System.Single,System.Single)\">\n            <summary>\n            Returns a <see cref=\"T:SharpDX.Vector4\"/> containing the 4D Cartesian coordinates of a point specified in Barycentric coordinates relative to a 4D triangle.\n            </summary>\n            <param name=\"value1\">A <see cref=\"T:SharpDX.Vector4\"/> containing the 4D Cartesian coordinates of vertex 1 of the triangle.</param>\n            <param name=\"value2\">A <see cref=\"T:SharpDX.Vector4\"/> containing the 4D Cartesian coordinates of vertex 2 of the triangle.</param>\n            <param name=\"value3\">A <see cref=\"T:SharpDX.Vector4\"/> containing the 4D Cartesian coordinates of vertex 3 of the triangle.</param>\n            <param name=\"amount1\">Barycentric coordinate b2, which expresses the weighting factor toward vertex 2 (specified in <paramref name=\"value2\"/>).</param>\n            <param name=\"amount2\">Barycentric coordinate b3, which expresses the weighting factor toward vertex 3 (specified in <paramref name=\"value3\"/>).</param>\n            <returns>A new <see cref=\"T:SharpDX.Vector4\"/> containing the 4D Cartesian coordinates of the specified point.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector4.Clamp(SharpDX.Vector4@,SharpDX.Vector4@,SharpDX.Vector4@,SharpDX.Vector4@)\">\n            <summary>\n            Restricts a value to be within a specified range.\n            </summary>\n            <param name=\"value\">The value to clamp.</param>\n            <param name=\"min\">The minimum value.</param>\n            <param name=\"max\">The maximum value.</param>\n            <param name=\"result\">When the method completes, contains the clamped value.</param>\n        </member>\n        <member name=\"M:SharpDX.Vector4.Clamp(SharpDX.Vector4,SharpDX.Vector4,SharpDX.Vector4)\">\n            <summary>\n            Restricts a value to be within a specified range.\n            </summary>\n            <param name=\"value\">The value to clamp.</param>\n            <param name=\"min\">The minimum value.</param>\n            <param name=\"max\">The maximum value.</param>\n            <returns>The clamped value.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector4.Distance(SharpDX.Vector4@,SharpDX.Vector4@,System.Single@)\">\n            <summary>\n            Calculates the distance between two vectors.\n            </summary>\n            <param name=\"value1\">The first vector.</param>\n            <param name=\"value2\">The second vector.</param>\n            <param name=\"result\">When the method completes, contains the distance between the two vectors.</param>\n            <remarks>\n            <see cref=\"M:SharpDX.Vector4.DistanceSquared(SharpDX.Vector4@,SharpDX.Vector4@,System.Single@)\"/> may be preferred when only the relative distance is needed\n            and speed is of the essence.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Vector4.Distance(SharpDX.Vector4,SharpDX.Vector4)\">\n            <summary>\n            Calculates the distance between two vectors.\n            </summary>\n            <param name=\"value1\">The first vector.</param>\n            <param name=\"value2\">The second vector.</param>\n            <returns>The distance between the two vectors.</returns>\n            <remarks>\n            <see cref=\"M:SharpDX.Vector4.DistanceSquared(SharpDX.Vector4,SharpDX.Vector4)\"/> may be preferred when only the relative distance is needed\n            and speed is of the essence.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Vector4.DistanceSquared(SharpDX.Vector4@,SharpDX.Vector4@,System.Single@)\">\n            <summary>\n            Calculates the squared distance between two vectors.\n            </summary>\n            <param name=\"value1\">The first vector.</param>\n            <param name=\"value2\">The second vector.</param>\n            <param name=\"result\">When the method completes, contains the squared distance between the two vectors.</param>\n            <remarks>Distance squared is the value before taking the square root. \n            Distance squared can often be used in place of distance if relative comparisons are being made. \n            For example, consider three points A, B, and C. To determine whether B or C is further from A, \n            compare the distance between A and B to the distance between A and C. Calculating the two distances \n            involves two square roots, which are computationally expensive. However, using distance squared \n            provides the same information and avoids calculating two square roots.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Vector4.DistanceSquared(SharpDX.Vector4,SharpDX.Vector4)\">\n            <summary>\n            Calculates the squared distance between two vectors.\n            </summary>\n            <param name=\"value1\">The first vector.</param>\n            <param name=\"value2\">The second vector.</param>\n            <returns>The squared distance between the two vectors.</returns>\n            <remarks>Distance squared is the value before taking the square root. \n            Distance squared can often be used in place of distance if relative comparisons are being made. \n            For example, consider three points A, B, and C. To determine whether B or C is further from A, \n            compare the distance between A and B to the distance between A and C. Calculating the two distances \n            involves two square roots, which are computationally expensive. However, using distance squared \n            provides the same information and avoids calculating two square roots.\n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Vector4.Dot(SharpDX.Vector4@,SharpDX.Vector4@,System.Single@)\">\n            <summary>\n            Calculates the dot product of two vectors.\n            </summary>\n            <param name=\"left\">First source vector</param>\n            <param name=\"right\">Second source vector.</param>\n            <param name=\"result\">When the method completes, contains the dot product of the two vectors.</param>\n        </member>\n        <member name=\"M:SharpDX.Vector4.Dot(SharpDX.Vector4,SharpDX.Vector4)\">\n            <summary>\n            Calculates the dot product of two vectors.\n            </summary>\n            <param name=\"left\">First source vector.</param>\n            <param name=\"right\">Second source vector.</param>\n            <returns>The dot product of the two vectors.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector4.Normalize(SharpDX.Vector4@,SharpDX.Vector4@)\">\n            <summary>\n            Converts the vector into a unit vector.\n            </summary>\n            <param name=\"value\">The vector to normalize.</param>\n            <param name=\"result\">When the method completes, contains the normalized vector.</param>\n        </member>\n        <member name=\"M:SharpDX.Vector4.Normalize(SharpDX.Vector4)\">\n            <summary>\n            Converts the vector into a unit vector.\n            </summary>\n            <param name=\"value\">The vector to normalize.</param>\n            <returns>The normalized vector.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector4.Lerp(SharpDX.Vector4@,SharpDX.Vector4@,System.Single,SharpDX.Vector4@)\">\n            <summary>\n            Performs a linear interpolation between two vectors.\n            </summary>\n            <param name=\"start\">Start vector.</param>\n            <param name=\"end\">End vector.</param>\n            <param name=\"amount\">Value between 0 and 1 indicating the weight of <paramref name=\"end\"/>.</param>\n            <param name=\"result\">When the method completes, contains the linear interpolation of the two vectors.</param>\n            <remarks>\n            This method performs the linear interpolation based on the following formula.\n            <code>start + (end - start) * amount</code>\n            Passing <paramref name=\"amount\"/> a value of 0 will cause <paramref name=\"start\"/> to be returned; a value of 1 will cause <paramref name=\"end\"/> to be returned. \n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Vector4.Lerp(SharpDX.Vector4,SharpDX.Vector4,System.Single)\">\n            <summary>\n            Performs a linear interpolation between two vectors.\n            </summary>\n            <param name=\"start\">Start vector.</param>\n            <param name=\"end\">End vector.</param>\n            <param name=\"amount\">Value between 0 and 1 indicating the weight of <paramref name=\"end\"/>.</param>\n            <returns>The linear interpolation of the two vectors.</returns>\n            <remarks>\n            This method performs the linear interpolation based on the following formula.\n            <code>start + (end - start) * amount</code>\n            Passing <paramref name=\"amount\"/> a value of 0 will cause <paramref name=\"start\"/> to be returned; a value of 1 will cause <paramref name=\"end\"/> to be returned. \n            </remarks>\n        </member>\n        <member name=\"M:SharpDX.Vector4.SmoothStep(SharpDX.Vector4@,SharpDX.Vector4@,System.Single,SharpDX.Vector4@)\">\n            <summary>\n            Performs a cubic interpolation between two vectors.\n            </summary>\n            <param name=\"start\">Start vector.</param>\n            <param name=\"end\">End vector.</param>\n            <param name=\"amount\">Value between 0 and 1 indicating the weight of <paramref name=\"end\"/>.</param>\n            <param name=\"result\">When the method completes, contains the cubic interpolation of the two vectors.</param>\n        </member>\n        <member name=\"M:SharpDX.Vector4.SmoothStep(SharpDX.Vector4,SharpDX.Vector4,System.Single)\">\n            <summary>\n            Performs a cubic interpolation between two vectors.\n            </summary>\n            <param name=\"start\">Start vector.</param>\n            <param name=\"end\">End vector.</param>\n            <param name=\"amount\">Value between 0 and 1 indicating the weight of <paramref name=\"end\"/>.</param>\n            <returns>The cubic interpolation of the two vectors.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector4.Hermite(SharpDX.Vector4@,SharpDX.Vector4@,SharpDX.Vector4@,SharpDX.Vector4@,System.Single,SharpDX.Vector4@)\">\n            <summary>\n            Performs a Hermite spline interpolation.\n            </summary>\n            <param name=\"value1\">First source position vector.</param>\n            <param name=\"tangent1\">First source tangent vector.</param>\n            <param name=\"value2\">Second source position vector.</param>\n            <param name=\"tangent2\">Second source tangent vector.</param>\n            <param name=\"amount\">Weighting factor.</param>\n            <param name=\"result\">When the method completes, contains the result of the Hermite spline interpolation.</param>\n        </member>\n        <member name=\"M:SharpDX.Vector4.Hermite(SharpDX.Vector4,SharpDX.Vector4,SharpDX.Vector4,SharpDX.Vector4,System.Single)\">\n            <summary>\n            Performs a Hermite spline interpolation.\n            </summary>\n            <param name=\"value1\">First source position vector.</param>\n            <param name=\"tangent1\">First source tangent vector.</param>\n            <param name=\"value2\">Second source position vector.</param>\n            <param name=\"tangent2\">Second source tangent vector.</param>\n            <param name=\"amount\">Weighting factor.</param>\n            <returns>The result of the Hermite spline interpolation.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector4.CatmullRom(SharpDX.Vector4@,SharpDX.Vector4@,SharpDX.Vector4@,SharpDX.Vector4@,System.Single,SharpDX.Vector4@)\">\n            <summary>\n            Performs a Catmull-Rom interpolation using the specified positions.\n            </summary>\n            <param name=\"value1\">The first position in the interpolation.</param>\n            <param name=\"value2\">The second position in the interpolation.</param>\n            <param name=\"value3\">The third position in the interpolation.</param>\n            <param name=\"value4\">The fourth position in the interpolation.</param>\n            <param name=\"amount\">Weighting factor.</param>\n            <param name=\"result\">When the method completes, contains the result of the Catmull-Rom interpolation.</param>\n        </member>\n        <member name=\"M:SharpDX.Vector4.CatmullRom(SharpDX.Vector4,SharpDX.Vector4,SharpDX.Vector4,SharpDX.Vector4,System.Single)\">\n            <summary>\n            Performs a Catmull-Rom interpolation using the specified positions.\n            </summary>\n            <param name=\"value1\">The first position in the interpolation.</param>\n            <param name=\"value2\">The second position in the interpolation.</param>\n            <param name=\"value3\">The third position in the interpolation.</param>\n            <param name=\"value4\">The fourth position in the interpolation.</param>\n            <param name=\"amount\">Weighting factor.</param>\n            <returns>A vector that is the result of the Catmull-Rom interpolation.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector4.Max(SharpDX.Vector4@,SharpDX.Vector4@,SharpDX.Vector4@)\">\n            <summary>\n            Returns a vector containing the largest components of the specified vectors.\n            </summary>\n            <param name=\"left\">The first source vector.</param>\n            <param name=\"right\">The second source vector.</param>\n            <param name=\"result\">When the method completes, contains an new vector composed of the largest components of the source vectors.</param>\n        </member>\n        <member name=\"M:SharpDX.Vector4.Max(SharpDX.Vector4,SharpDX.Vector4)\">\n            <summary>\n            Returns a vector containing the largest components of the specified vectors.\n            </summary>\n            <param name=\"left\">The first source vector.</param>\n            <param name=\"right\">The second source vector.</param>\n            <returns>A vector containing the largest components of the source vectors.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector4.Min(SharpDX.Vector4@,SharpDX.Vector4@,SharpDX.Vector4@)\">\n            <summary>\n            Returns a vector containing the smallest components of the specified vectors.\n            </summary>\n            <param name=\"left\">The first source vector.</param>\n            <param name=\"right\">The second source vector.</param>\n            <param name=\"result\">When the method completes, contains an new vector composed of the smallest components of the source vectors.</param>\n        </member>\n        <member name=\"M:SharpDX.Vector4.Min(SharpDX.Vector4,SharpDX.Vector4)\">\n            <summary>\n            Returns a vector containing the smallest components of the specified vectors.\n            </summary>\n            <param name=\"left\">The first source vector.</param>\n            <param name=\"right\">The second source vector.</param>\n            <returns>A vector containing the smallest components of the source vectors.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector4.Orthogonalize(SharpDX.Vector4[],SharpDX.Vector4[])\">\n            <summary>\n            Orthogonalizes a list of vectors.\n            </summary>\n            <param name=\"destination\">The list of orthogonalized vectors.</param>\n            <param name=\"source\">The list of vectors to orthogonalize.</param>\n            <remarks>\n            <para>Orthogonalization is the process of making all vectors orthogonal to each other. This\n            means that any given vector in the list will be orthogonal to any other given vector in the\n            list.</para>\n            <para>Because this method uses the modified Gram-Schmidt process, the resulting vectors\n            tend to be numerically unstable. The numeric stability decreases according to the vectors\n            position in the list so that the first vector is the most stable and the last vector is the\n            least stable.</para>\n            </remarks>\n            <exception cref=\"T:System.ArgumentNullException\">Thrown when <paramref name=\"source\"/> or <paramref name=\"destination\"/> is <c>null</c>.</exception>\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">Thrown when <paramref name=\"destination\"/> is shorter in length than <paramref name=\"source\"/>.</exception>\n        </member>\n        <member name=\"M:SharpDX.Vector4.Orthonormalize(SharpDX.Vector4[],SharpDX.Vector4[])\">\n            <summary>\n            Orthonormalizes a list of vectors.\n            </summary>\n            <param name=\"destination\">The list of orthonormalized vectors.</param>\n            <param name=\"source\">The list of vectors to orthonormalize.</param>\n            <remarks>\n            <para>Orthonormalization is the process of making all vectors orthogonal to each\n            other and making all vectors of unit length. This means that any given vector will\n            be orthogonal to any other given vector in the list.</para>\n            <para>Because this method uses the modified Gram-Schmidt process, the resulting vectors\n            tend to be numerically unstable. The numeric stability decreases according to the vectors\n            position in the list so that the first vector is the most stable and the last vector is the\n            least stable.</para>\n            </remarks>\n            <exception cref=\"T:System.ArgumentNullException\">Thrown when <paramref name=\"source\"/> or <paramref name=\"destination\"/> is <c>null</c>.</exception>\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">Thrown when <paramref name=\"destination\"/> is shorter in length than <paramref name=\"source\"/>.</exception>\n        </member>\n        <member name=\"M:SharpDX.Vector4.Transform(SharpDX.Vector4@,SharpDX.Quaternion@,SharpDX.Vector4@)\">\n            <summary>\n            Transforms a 4D vector by the given <see cref=\"T:SharpDX.Quaternion\"/> rotation.\n            </summary>\n            <param name=\"vector\">The vector to rotate.</param>\n            <param name=\"rotation\">The <see cref=\"T:SharpDX.Quaternion\"/> rotation to apply.</param>\n            <param name=\"result\">When the method completes, contains the transformed <see cref=\"T:SharpDX.Vector4\"/>.</param>\n        </member>\n        <member name=\"M:SharpDX.Vector4.Transform(SharpDX.Vector4,SharpDX.Quaternion)\">\n            <summary>\n            Transforms a 4D vector by the given <see cref=\"T:SharpDX.Quaternion\"/> rotation.\n            </summary>\n            <param name=\"vector\">The vector to rotate.</param>\n            <param name=\"rotation\">The <see cref=\"T:SharpDX.Quaternion\"/> rotation to apply.</param>\n            <returns>The transformed <see cref=\"T:SharpDX.Vector4\"/>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector4.Transform(SharpDX.Vector4[],SharpDX.Quaternion@,SharpDX.Vector4[])\">\n            <summary>\n            Transforms an array of vectors by the given <see cref=\"T:SharpDX.Quaternion\"/> rotation.\n            </summary>\n            <param name=\"source\">The array of vectors to transform.</param>\n            <param name=\"rotation\">The <see cref=\"T:SharpDX.Quaternion\"/> rotation to apply.</param>\n            <param name=\"destination\">The array for which the transformed vectors are stored.\n            This array may be the same array as <paramref name=\"source\"/>.</param>\n            <exception cref=\"T:System.ArgumentNullException\">Thrown when <paramref name=\"source\"/> or <paramref name=\"destination\"/> is <c>null</c>.</exception>\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">Thrown when <paramref name=\"destination\"/> is shorter in length than <paramref name=\"source\"/>.</exception>\n        </member>\n        <member name=\"M:SharpDX.Vector4.Transform(SharpDX.Vector4@,SharpDX.Matrix@,SharpDX.Vector4@)\">\n            <summary>\n            Transforms a 4D vector by the given <see cref=\"T:SharpDX.Matrix\"/>.\n            </summary>\n            <param name=\"vector\">The source vector.</param>\n            <param name=\"transform\">The transformation <see cref=\"T:SharpDX.Matrix\"/>.</param>\n            <param name=\"result\">When the method completes, contains the transformed <see cref=\"T:SharpDX.Vector4\"/>.</param>\n        </member>\n        <member name=\"M:SharpDX.Vector4.Transform(SharpDX.Vector4,SharpDX.Matrix)\">\n            <summary>\n            Transforms a 4D vector by the given <see cref=\"T:SharpDX.Matrix\"/>.\n            </summary>\n            <param name=\"vector\">The source vector.</param>\n            <param name=\"transform\">The transformation <see cref=\"T:SharpDX.Matrix\"/>.</param>\n            <returns>The transformed <see cref=\"T:SharpDX.Vector4\"/>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector4.Transform(SharpDX.Vector4@,SharpDX.Matrix5x4@,SharpDX.Vector4@)\">\n            <summary>\n            Transforms a 4D vector by the given <see cref=\"T:SharpDX.Matrix5x4\"/>.\n            </summary>\n            <param name=\"vector\">The source vector.</param>\n            <param name=\"transform\">The transformation <see cref=\"T:SharpDX.Matrix5x4\"/>.</param>\n            <param name=\"result\">When the method completes, contains the transformed <see cref=\"T:SharpDX.Vector4\"/>.</param>\n        </member>\n        <member name=\"M:SharpDX.Vector4.Transform(SharpDX.Vector4,SharpDX.Matrix5x4)\">\n            <summary>\n            Transforms a 4D vector by the given <see cref=\"T:SharpDX.Matrix5x4\"/>.\n            </summary>\n            <param name=\"vector\">The source vector.</param>\n            <param name=\"transform\">The transformation <see cref=\"T:SharpDX.Matrix5x4\"/>.</param>\n            <returns>The transformed <see cref=\"T:SharpDX.Vector4\"/>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector4.Transform(SharpDX.Vector4[],SharpDX.Matrix@,SharpDX.Vector4[])\">\n            <summary>\n            Transforms an array of 4D vectors by the given <see cref=\"T:SharpDX.Matrix\"/>.\n            </summary>\n            <param name=\"source\">The array of vectors to transform.</param>\n            <param name=\"transform\">The transformation <see cref=\"T:SharpDX.Matrix\"/>.</param>\n            <param name=\"destination\">The array for which the transformed vectors are stored.\n            This array may be the same array as <paramref name=\"source\"/>.</param>\n            <exception cref=\"T:System.ArgumentNullException\">Thrown when <paramref name=\"source\"/> or <paramref name=\"destination\"/> is <c>null</c>.</exception>\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">Thrown when <paramref name=\"destination\"/> is shorter in length than <paramref name=\"source\"/>.</exception>\n        </member>\n        <member name=\"M:SharpDX.Vector4.op_Addition(SharpDX.Vector4,SharpDX.Vector4)\">\n            <summary>\n            Adds two vectors.\n            </summary>\n            <param name=\"left\">The first vector to add.</param>\n            <param name=\"right\">The second vector to add.</param>\n            <returns>The sum of the two vectors.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector4.op_Multiply(SharpDX.Vector4,SharpDX.Vector4)\">\n            <summary>\n            Modulates a vector with another by performing component-wise multiplication equivalent to <see cref=\"M:SharpDX.Vector4.Modulate(SharpDX.Vector4@,SharpDX.Vector4@,SharpDX.Vector4@)\"/>.\n            </summary>\n            <param name=\"left\">The first vector to multiply.</param>\n            <param name=\"right\">The second vector to multiply.</param>\n            <returns>The multiplication of the two vectors.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector4.op_UnaryPlus(SharpDX.Vector4)\">\n            <summary>\n            Assert a vector (return it unchanged).\n            </summary>\n            <param name=\"value\">The vector to assert (unchange).</param>\n            <returns>The asserted (unchanged) vector.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector4.op_Subtraction(SharpDX.Vector4,SharpDX.Vector4)\">\n            <summary>\n            Subtracts two vectors.\n            </summary>\n            <param name=\"left\">The first vector to subtract.</param>\n            <param name=\"right\">The second vector to subtract.</param>\n            <returns>The difference of the two vectors.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector4.op_UnaryNegation(SharpDX.Vector4)\">\n            <summary>\n            Reverses the direction of a given vector.\n            </summary>\n            <param name=\"value\">The vector to negate.</param>\n            <returns>A vector facing in the opposite direction.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector4.op_Multiply(System.Single,SharpDX.Vector4)\">\n            <summary>\n            Scales a vector by the given value.\n            </summary>\n            <param name=\"value\">The vector to scale.</param>\n            <param name=\"scale\">The amount by which to scale the vector.</param>\n            <returns>The scaled vector.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector4.op_Multiply(SharpDX.Vector4,System.Single)\">\n            <summary>\n            Scales a vector by the given value.\n            </summary>\n            <param name=\"value\">The vector to scale.</param>\n            <param name=\"scale\">The amount by which to scale the vector.</param>\n            <returns>The scaled vector.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector4.op_Division(SharpDX.Vector4,System.Single)\">\n            <summary>\n            Scales a vector by the given value.\n            </summary>\n            <param name=\"value\">The vector to scale.</param>\n            <param name=\"scale\">The amount by which to scale the vector.</param>\n            <returns>The scaled vector.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector4.op_Division(SharpDX.Vector4,SharpDX.Vector4)\">\n            <summary>\n            Scales a vector by the given value.\n            </summary>\n            <param name=\"value\">The vector to scale.</param>\n            <param name=\"scale\">The amount by which to scale the vector.</param>\n            <returns>The scaled vector.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector4.op_Equality(SharpDX.Vector4,SharpDX.Vector4)\">\n            <summary>\n            Tests for equality between two objects.\n            </summary>\n            <param name=\"left\">The first value to compare.</param>\n            <param name=\"right\">The second value to compare.</param>\n            <returns><c>true</c> if <paramref name=\"left\"/> has the same value as <paramref name=\"right\"/>; otherwise, <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector4.op_Inequality(SharpDX.Vector4,SharpDX.Vector4)\">\n            <summary>\n            Tests for inequality between two objects.\n            </summary>\n            <param name=\"left\">The first value to compare.</param>\n            <param name=\"right\">The second value to compare.</param>\n            <returns><c>true</c> if <paramref name=\"left\"/> has a different value than <paramref name=\"right\"/>; otherwise, <c>false</c>.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector4.op_Explicit(SharpDX.Vector4)~SharpDX.Vector2\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:SharpDX.Vector4\"/> to <see cref=\"T:SharpDX.Vector2\"/>.\n            </summary>\n            <param name=\"value\">The value.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector4.op_Explicit(SharpDX.Vector4)~SharpDX.Vector3\">\n            <summary>\n            Performs an explicit conversion from <see cref=\"T:SharpDX.Vector4\"/> to <see cref=\"T:SharpDX.Vector3\"/>.\n            </summary>\n            <param name=\"value\">The value.</param>\n            <returns>The result of the conversion.</returns>\n        </member>\n        <member name=\"M:SharpDX.Vector4.ToString\">\n            <summary>\n            Returns a <see cref=\"T:System.String\"/> that represents this instance.\n            </summary>\n            <returns>\n            A <see cref=\"T:System.String\"/> that represents this instance.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Vector4.ToString(System.String)\">\n            <summary>\n            Returns a <see cref=\"T:System.String\"/> that represents this instance.\n            </summary>\n            <param name=\"format\">The format.</param>\n            <returns>\n            A <see cref=\"T:System.String\"/> that represents this instance.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Vector4.ToString(System.IFormatProvider)\">\n            <summary>\n            Returns a <see cref=\"T:System.String\"/> that represents this instance.\n            </summary>\n            <param name=\"formatProvider\">The format provider.</param>\n            <returns>\n            A <see cref=\"T:System.String\"/> that represents this instance.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Vector4.ToString(System.String,System.IFormatProvider)\">\n            <summary>\n            Returns a <see cref=\"T:System.String\"/> that represents this instance.\n            </summary>\n            <param name=\"format\">The format.</param>\n            <param name=\"formatProvider\">The format provider.</param>\n            <returns>\n            A <see cref=\"T:System.String\"/> that represents this instance.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Vector4.GetHashCode\">\n            <summary>\n            Returns a hash code for this instance.\n            </summary>\n            <returns>\n            A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. \n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Vector4.SharpDX#Serialization#IDataSerializable#Serialize(SharpDX.Serialization.BinarySerializer)\">\n            <inheritdoc/>\n        </member>\n        <member name=\"M:SharpDX.Vector4.Equals(SharpDX.Vector4)\">\n            <summary>\n            Determines whether the specified <see cref=\"T:SharpDX.Vector4\"/> is equal to this instance.\n            </summary>\n            <param name=\"other\">The <see cref=\"T:SharpDX.Vector4\"/> to compare with this instance.</param>\n            <returns>\n            <c>true</c> if the specified <see cref=\"T:SharpDX.Vector4\"/> is equal to this instance; otherwise, <c>false</c>.\n            </returns>\n        </member>\n        <member name=\"M:SharpDX.Vector4.Equals(System.Object)\">\n            <summary>\n            Determines whether the specified <see cref=\"T:System.Object\"/> is equal to this instance.\n            </summary>\n            <param name=\"value\">The <see cref=\"T:System.Object\"/> to compare with this instance.</param>\n            <returns>\n            <c>true</c> if the specified <see cref=\"T:System.Object\"/> is equal to this instance; otherwise, <c>false</c>.\n            </returns>\n        </member>\n        <member name=\"P:SharpDX.Vector4.IsNormalized\">\n            <summary>\n            Gets a value indicting whether this instance is normalized.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Vector4.Item(System.Int32)\">\n            <summary>\n            Gets or sets the component at the specified index.\n            </summary>\n            <value>The value of the X, Y, Z, or W component, depending on the index.</value>\n            <param name=\"index\">The index of the component to access. Use 0 for the X component, 1 for the Y component, 2 for the Z component, and 3 for the W component.</param>\n            <returns>The value of the component at the specified index.</returns>\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">Thrown when the <paramref name=\"index\"/> is out of the range [0, 3].</exception>\n        </member>\n        <member name=\"T:SharpDX.Win32.ComStreamShadow\">\n            <summary>\n            Internal FontFileEnumerator callback\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Win32.ComStreamBaseShadow\">\n            <summary>\n            Internal FontFileEnumerator Callback\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Win32.ComStreamBaseShadow.ComStreamBaseVtbl.ReadDelegate\">\n            <unmanaged>HRESULT ISequentialStream::Read([Out, Buffer] void* pv,[In] unsigned int cb,[Out, Optional] unsigned int* pcbRead)</unmanaged>\t\n        </member>\n        <member name=\"T:SharpDX.Win32.ComStreamBaseShadow.ComStreamBaseVtbl.WriteDelegate\">\n            <unmanaged>HRESULT ISequentialStream::Write([In, Buffer] const void* pv,[In] unsigned int cb,[Out, Optional] unsigned int* pcbWritten)</unmanaged>\t\n        </member>\n        <member name=\"M:SharpDX.Win32.ComStreamShadow.ToIntPtr(SharpDX.Win32.IStream)\">\n            <summary>\n            Callbacks to pointer.\n            </summary>\n            <param name=\"stream\">The stream.</param>\n            <returns></returns>\n        </member>\n        <member name=\"T:SharpDX.Win32.ComStreamShadow.ComStreamVtbl.SeekDelegate\">\n            <unmanaged>HRESULT IStream::Seek([In] LARGE_INTEGER dlibMove,[In] SHARPDX_SEEKORIGIN dwOrigin,[Out, Optional] ULARGE_INTEGER* plibNewPosition)</unmanaged>\t\n        </member>\n        <member name=\"T:SharpDX.Win32.ComStreamShadow.ComStreamVtbl.SetSizeDelegate\">\n            <unmanaged>HRESULT IStream::SetSize([In] ULARGE_INTEGER libNewSize)</unmanaged>\t\n        </member>\n        <member name=\"T:SharpDX.Win32.ComStreamShadow.ComStreamVtbl.CopyToDelegate\">\n            <unmanaged>HRESULT IStream::CopyTo([In] IStream* pstm,[In] ULARGE_INTEGER cb,[Out, Optional] ULARGE_INTEGER* pcbRead,[Out, Optional] ULARGE_INTEGER* pcbWritten)</unmanaged>\t\n        </member>\n        <member name=\"T:SharpDX.Win32.ComStreamShadow.ComStreamVtbl.CommitDelegate\">\n            <unmanaged>HRESULT IStream::Commit([In] STGC grfCommitFlags)</unmanaged>\t\n        </member>\n        <member name=\"T:SharpDX.Win32.ComStreamShadow.ComStreamVtbl.RevertDelegate\">\n            <unmanaged>HRESULT IStream::Revert()</unmanaged>\t\n        </member>\n        <member name=\"T:SharpDX.Win32.ComStreamShadow.ComStreamVtbl.LockRegionDelegate\">\n            <unmanaged>HRESULT IStream::LockRegion([In] ULARGE_INTEGER libOffset,[In] ULARGE_INTEGER cb,[In] LOCKTYPE dwLockType)</unmanaged>\t\n        </member>\n        <member name=\"T:SharpDX.Win32.ComStreamShadow.ComStreamVtbl.UnlockRegionDelegate\">\n            <unmanaged>HRESULT IStream::UnlockRegion([In] ULARGE_INTEGER libOffset,[In] ULARGE_INTEGER cb,[In] LOCKTYPE dwLockType)</unmanaged>\t\n        </member>\n        <member name=\"T:SharpDX.Win32.ComStreamShadow.ComStreamVtbl.StatDelegate\">\n            <unmanaged>HRESULT IStream::Stat([Out] STATSTG* pstatstg,[In] STATFLAG grfStatFlag)</unmanaged>\t\n        </member>\n        <member name=\"T:SharpDX.Win32.ComStreamShadow.ComStreamVtbl.CloneDelegate\">\n            <unmanaged>HRESULT IStream::Clone([Out] IStream** ppstm)</unmanaged>\t\n        </member>\n        <member name=\"M:SharpDX.Win32.ErrorCodeHelper.ToResult(SharpDX.Win32.ErrorCode)\">\n            <summary>\n            Converts a win32 error code to a <see cref=\"T:SharpDX.Result\"/>.\n            </summary>\n            <param name=\"errorCode\">The error code.</param>\n            <returns>A HRESULT code</returns>\n        </member>\n        <member name=\"M:SharpDX.Win32.ErrorCodeHelper.ToResult(System.Int32)\">\n            <summary>\n            Converts a win32 error code to a <see cref=\"T:SharpDX.Result\"/>.\n            </summary>\n            <param name=\"errorCode\">The error code.</param>\n            <returns>A HRESULT code</returns>\n        </member>\n        <member name=\"T:SharpDX.Win32.MessageFilterHook\">\n            <summary>\n            Provides a hook to WndProc of an existing window handle using <see cref=\"T:System.Windows.Forms.IMessageFilter\"/>.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Win32.MessageFilterHook.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Win32.MessageFilterHook\"/> class.\n            </summary>\n            <param name=\"hwnd\">The HWND.</param>\n        </member>\n        <member name=\"M:SharpDX.Win32.MessageFilterHook.AddMessageFilter(System.IntPtr,System.Windows.Forms.IMessageFilter)\">\n            <summary>\n            Adds a message filter to a window.\n            </summary>\n            <param name=\"hwnd\">The handle of the window.</param>\n            <param name=\"messageFilter\">The message filter.</param>\n        </member>\n        <member name=\"M:SharpDX.Win32.MessageFilterHook.RemoveMessageFilter(System.IntPtr,System.Windows.Forms.IMessageFilter)\">\n            <summary>\n            Removes a message filter associated with a window.\n            </summary>\n            <param name=\"hwnd\">The handle of the window.</param>\n            <param name=\"messageFilter\">The message filter.</param>\n        </member>\n        <member name=\"T:SharpDX.Win32.NamespaceDoc\">\n            <summary>\n            The <see cref=\"N:SharpDX.Win32\"/> namespace contains common enumerations, structures and helper classes for Win32 low-level API.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Win32.PropertyBag\">\n            <summary>\n            Implementation of OLE IPropertyBag2.\n            </summary>\n            <unmanaged>IPropertyBag2</unmanaged>\n        </member>\n        <member name=\"M:SharpDX.Win32.PropertyBag.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Win32.PropertyBag\"/> class.\n            </summary>\n            <param name=\"propertyBagPointer\">The property bag pointer.</param>\n        </member>\n        <member name=\"M:SharpDX.Win32.PropertyBag.Get(System.String)\">\n            <summary>\n            Gets the value of the property with this name.\n            </summary>\n            <param name=\"name\">The name.</param>\n            <returns>Value of the property</returns>\n        </member>\n        <member name=\"M:SharpDX.Win32.PropertyBag.Get``2(SharpDX.Win32.PropertyKey{``0,``1})\">\n            <summary>\n            Gets the value of the property by using a <see cref=\"T:SharpDX.Win32.PropertyKey`2\"/>\n            </summary>\n            <typeparam name=\"T1\">The public type of this property.</typeparam>\n            <typeparam name=\"T2\">The marshaling type of this property.</typeparam>\n            <param name=\"propertyKey\">The property key.</param>\n            <returns>Value of the property</returns>\n        </member>\n        <member name=\"M:SharpDX.Win32.PropertyBag.Set(System.String,System.Object)\">\n            <summary>\n            Sets the value of the property with this name\n            </summary>\n            <param name=\"name\">The name.</param>\n            <param name=\"value\">The value.</param>\n        </member>\n        <member name=\"M:SharpDX.Win32.PropertyBag.Set``2(SharpDX.Win32.PropertyKey{``0,``1},``0)\">\n            <summary>\n            Sets the value of the property by using a <see cref=\"T:SharpDX.Win32.PropertyKey`2\"/>\n            </summary>\n            <typeparam name=\"T1\">The public type of this property.</typeparam>\n            <typeparam name=\"T2\">The marshaling type of this property.</typeparam>\n            <param name=\"propertyKey\">The property key.</param>\n            <param name=\"value\">The value.</param>\n        </member>\n        <member name=\"P:SharpDX.Win32.PropertyBag.Count\">\n            <summary>\n            Gets the number of properties.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Win32.PropertyBag.Keys\">\n            <summary>\n            Gets the keys.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Win32.PropertyKey`2\">\n            <summary>\n            Identifies a typed property in a <see cref=\"T:SharpDX.Win32.PropertyBag\"/>.\n            </summary>\n            <typeparam name=\"T1\">The public type of this property.</typeparam>\n            <typeparam name=\"T2\">The marshaling type of this property.</typeparam>\n        </member>\n        <member name=\"M:SharpDX.Win32.PropertyKey`2.#ctor(System.String)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Win32.PropertyKey`2\"/> class.\n            </summary>\n            <param name=\"name\">The name.</param>\n        </member>\n        <member name=\"P:SharpDX.Win32.PropertyKey`2.Name\">\n            <summary>\n            Gets the name.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Win32.ComStringEnumerator\">\n            <summary>\n            An enumerator using internally a <see cref=\"T:System.Runtime.InteropServices.ComTypes.IEnumString\"/>.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Win32.ComStringEnumerator.#ctor(System.IntPtr)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Win32.ComStringEnumerator\"/> class.\n            </summary>\n            <param name=\"ptrToIEnumString\">The PTR to I enum string.</param>\n        </member>\n        <member name=\"T:SharpDX.Win32.SecurityAttributes\">\n            <summary>\n            Security attributes.\n            </summary>\n            <unmanaged>SECURITY_ATTRIBUTES</unmanaged>\t    \n        </member>\n        <member name=\"F:SharpDX.Win32.SecurityAttributes.Length\">\n            <summary>\n            Length.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Win32.SecurityAttributes.Descriptor\">\n            <summary>\n            Descriptor.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Win32.SecurityAttributes.InheritHandle\">\n            <summary>\n            Gets or sets a value indicating whether [inherit handle].\n            </summary>\n            <value>\n              <c>true</c> if [inherit handle]; otherwise, <c>false</c>.\n            </value>\n        </member>\n        <member name=\"T:SharpDX.Win32.Variant\">\n            <summary>\n            Variant COM.\n            </summary>\n            <unmanaged>PROPVARIANT</unmanaged>\n        </member>\n        <member name=\"P:SharpDX.Win32.Variant.ElementType\">\n            <summary>\n            Gets the type of the element.\n            </summary>\n            <value>\n            The type of the element.\n            </value>\n        </member>\n        <member name=\"P:SharpDX.Win32.Variant.Type\">\n            <summary>\n            Gets the type.\n            </summary>\n        </member>\n        <member name=\"P:SharpDX.Win32.Variant.Value\">\n            <summary>\n            Gets or sets the value.\n            </summary>\n            <value>\n            The value.\n            </value>\n        </member>\n        <member name=\"T:SharpDX.Win32.VariantElementType\">\n            <summary>\n            Type of a simple variant value.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Win32.VariantType\">\n            <summary>\n            Type of a variant\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Win32.VariantType.Default\">\n            <summary>\n            Simple value\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Win32.VariantType.Vector\">\n            <summary>\n            Vector value.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Win32.VariantType.Array\">\n            <summary>\n            Array value.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Win32.VariantType.ByRef\">\n            <summary>\n            By reference.\n            </summary>\n        </member>\n        <member name=\"F:SharpDX.Win32.VariantType.Reserved\">\n            <summary>\n            Reserved value.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Windows.NamespaceDoc\">\n            <summary>\n            The <see cref=\"N:SharpDX.Windows\"/> namespace contains <see cref=\"N:System.Windows.Forms\"/> basic controls used to render DirectX content.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Windows.RenderLoop\">\n            <summary>\n            RenderLoop provides a rendering loop infrastructure.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Windows.RenderLoop.Run(System.Windows.Forms.ApplicationContext,SharpDX.Windows.RenderLoop.RenderCallback)\">\n            <summary>\n            Runs the specified main loop in the specified context.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Windows.RenderLoop.Run(System.Windows.Forms.Control,SharpDX.Windows.RenderLoop.RenderCallback)\">\n            <summary>\n            Runs the specified main loop for the specified windows form.\n            </summary>\n            <param name=\"form\">The form.</param>\n            <param name=\"renderCallback\">The rendering callback.</param>\n        </member>\n        <member name=\"P:SharpDX.Windows.RenderLoop.IsIdle\">\n            <summary>\n            Gets a value indicating whether this instance is application idle.\n            </summary>\n            <value>\n            \t<c>true</c> if this instance is application idle; otherwise, <c>false</c>.\n            </value>\n        </member>\n        <member name=\"P:SharpDX.Windows.RenderLoop.UseCustomDoEvents\">\n            <summary>\n            Gets or sets a value indicating whether the render loop should use a custom windows event handler (default false).\n            </summary>\n            <value>\n              <c>true</c> if the render loop should use a custom windows event handler (default false); otherwise, <c>false</c>.\n            </value>\n            <remarks>\n            By default, RenderLoop is using <see cref=\"M:System.Windows.Forms.Application.DoEvents\"/> to process windows event message. Set this parameter to true to use a custom event handler that could\n            lead to better performance. Note that using a custom windows event message handler is not compatible with <see cref=\"M:System.Windows.Forms.Application.AddMessageFilter(System.Windows.Forms.IMessageFilter)\"/> or any other features\n            that are part of <see cref=\"T:System.Windows.Forms.Application\"/>.\n            </remarks>\n        </member>\n        <member name=\"T:SharpDX.Windows.RenderLoop.RenderCallback\">\n            <summary>\n            Delegate for the rendering loop.\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Windows.RenderLoop.ProxyNativeWindow\">\n            <summary>\n            ProxyNativeWindow, used only to detect if the original window is destroyed\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Windows.RenderLoop.ProxyNativeWindow.#ctor(System.Windows.Forms.Control)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Windows.RenderLoop.ProxyNativeWindow\"/> class.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Windows.RenderLoop.ProxyNativeWindow.Run(SharpDX.Windows.RenderLoop.RenderCallback)\">\n            <summary>\n            Private rendering loop\n            </summary>\n        </member>\n        <member name=\"T:SharpDX.Windows.RenderControl\">\n            <summary>\n            A Renderable UserControl.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Windows.RenderControl.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Windows.RenderForm\"/> class.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Windows.RenderControl.OnPaintBackground(System.Windows.Forms.PaintEventArgs)\">\n            <summary>\n            Paints the background of the control.\n            </summary>\n            <param name=\"e\">A <see cref=\"T:System.Windows.Forms.PaintEventArgs\"/> that contains the event data.</param>\n        </member>\n        <member name=\"M:SharpDX.Windows.RenderControl.OnPaint(System.Windows.Forms.PaintEventArgs)\">\n            <summary>\n            Raises the <see cref=\"E:System.Windows.Forms.Control.Paint\"/> event.\n            </summary>\n            <param name=\"e\">A <see cref=\"T:System.Windows.Forms.PaintEventArgs\"/> that contains the event data.</param>\n        </member>\n        <member name=\"T:SharpDX.Windows.RenderForm\">\n            <summary>\n            Default Rendering Form.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Windows.RenderForm.#ctor\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Windows.RenderForm\"/> class.\n            </summary>\n        </member>\n        <member name=\"M:SharpDX.Windows.RenderForm.#ctor(System.String)\">\n            <summary>\n            Initializes a new instance of the <see cref=\"T:SharpDX.Windows.RenderForm\"/> class.\n            </summary>\n            <param name=\"text\">The text.</param>\n        </member>\n        <member name=\"M:SharpDX.Windows.RenderForm.OnResizeBegin(System.EventArgs)\">\n            <summary>\n            Raises the <see cref=\"E:System.Windows.Forms.Form.ResizeBegin\"/> event.\n            </summary>\n            <param name=\"e\">A <see cref=\"T:System.EventArgs\"/> that contains the event data.</param>\n        </member>\n        <member name=\"M:SharpDX.Windows.RenderForm.OnResizeEnd(System.EventArgs)\">\n            <summary>\n            Raises the <see cref=\"E:System.Windows.Forms.Form.ResizeEnd\"/> event.\n            </summary>\n            <param name=\"e\">A <see cref=\"T:System.EventArgs\"/> that contains the event data.</param>\n        </member>\n        <member name=\"M:SharpDX.Windows.RenderForm.OnLoad(System.EventArgs)\">\n            <summary>\n            Raises the <see cref=\"E:System.Windows.Forms.Form.Load\"/> event.\n            </summary>\n            <param name=\"e\">An <see cref=\"T:System.EventArgs\"/> that contains the event data.</param>\n        </member>\n        <member name=\"M:SharpDX.Windows.RenderForm.OnPaintBackground(System.Windows.Forms.PaintEventArgs)\">\n            <summary>\n            Paints the background of the control.\n            </summary>\n            <param name=\"e\">A <see cref=\"T:System.Windows.Forms.PaintEventArgs\"/> that contains the event data.</param>\n        </member>\n        <member name=\"M:SharpDX.Windows.RenderForm.OnPauseRendering(System.EventArgs)\">\n            <summary>\n            Raises the Pause Rendering event.\n            </summary>\n            <param name=\"e\">The <see cref=\"T:System.EventArgs\"/> instance containing the event data.</param>\n        </member>\n        <member name=\"M:SharpDX.Windows.RenderForm.OnResumeRendering(System.EventArgs)\">\n            <summary>\n            Raises the Resume Rendering event.\n            </summary>\n            <param name=\"e\">The <see cref=\"T:System.EventArgs\"/> instance containing the event data.</param>\n        </member>\n        <member name=\"M:SharpDX.Windows.RenderForm.OnUserResized(System.EventArgs)\">\n            <summary>\n            Raises the User resized event.\n            </summary>\n            <param name=\"e\">The <see cref=\"T:System.EventArgs\"/> instance containing the event data.</param>\n        </member>\n        <member name=\"M:SharpDX.Windows.RenderForm.OnAppActivated(System.EventArgs)\">\n            <summary>\n            Raises the On App Activated event.\n            </summary>\n            <param name=\"e\">The <see cref=\"T:System.EventArgs\"/> instance containing the event data.</param>\n        </member>\n        <member name=\"M:SharpDX.Windows.RenderForm.OnAppDeactivated(System.EventArgs)\">\n            <summary>\n            Raises the App Deactivated event\n            </summary>\n            <param name=\"e\">The <see cref=\"T:System.EventArgs\"/> instance containing the event data.</param>\n        </member>\n        <member name=\"M:SharpDX.Windows.RenderForm.OnSystemSuspend(System.EventArgs)\">\n            <summary>\n            Raises the System Suspend event\n            </summary>\n            <param name=\"e\">The <see cref=\"T:System.EventArgs\"/> instance containing the event data.</param>\n        </member>\n        <member name=\"M:SharpDX.Windows.RenderForm.OnSystemResume(System.EventArgs)\">\n            <summary>\n            Raises the System Resume event\n            </summary>\n            <param name=\"e\">The <see cref=\"T:System.EventArgs\"/> instance containing the event data.</param>\n        </member>\n        <member name=\"M:SharpDX.Windows.RenderForm.OnScreensaver(System.ComponentModel.CancelEventArgs)\">\n            <summary>\n            Raises the <see cref=\"E:Screensaver\"/> event.\n            </summary>\n            <param name=\"e\">The <see cref=\"T:System.ComponentModel.CancelEventArgs\"/> instance containing the event data.</param>\n        </member>\n        <member name=\"M:SharpDX.Windows.RenderForm.WndProc(System.Windows.Forms.Message@)\">\n            <summary>\n            Override windows message loop handling.\n            </summary>\n            <param name=\"m\">The Windows <see cref=\"T:System.Windows.Forms.Message\"/> to process.</param>\n        </member>\n        <member name=\"M:SharpDX.Windows.RenderForm.UpdateScreen\">\n            <summary>\n            Updates the screen.\n            </summary>\n        </member>\n        <member name=\"E:SharpDX.Windows.RenderForm.AppActivated\">\n            <summary>\n            Occurs when [app activated].\n            </summary>\n        </member>\n        <member name=\"E:SharpDX.Windows.RenderForm.AppDeactivated\">\n            <summary>\n            Occurs when [app deactivated].\n            </summary>\n        </member>\n        <member name=\"E:SharpDX.Windows.RenderForm.MonitorChanged\">\n            <summary>\n            Occurs when [monitor changed].\n            </summary>\n        </member>\n        <member name=\"E:SharpDX.Windows.RenderForm.PauseRendering\">\n            <summary>\n            Occurs when [pause rendering].\n            </summary>\n        </member>\n        <member name=\"E:SharpDX.Windows.RenderForm.ResumeRendering\">\n            <summary>\n            Occurs when [resume rendering].\n            </summary>\n        </member>\n        <member name=\"E:SharpDX.Windows.RenderForm.Screensaver\">\n            <summary>\n            Occurs when [screensaver].\n            </summary>\n        </member>\n        <member name=\"E:SharpDX.Windows.RenderForm.SystemResume\">\n            <summary>\n            Occurs when [system resume].\n            </summary>\n        </member>\n        <member name=\"E:SharpDX.Windows.RenderForm.SystemSuspend\">\n            <summary>\n            Occurs when [system suspend].\n            </summary>\n        </member>\n        <member name=\"E:SharpDX.Windows.RenderForm.UserResized\">\n            <summary>\n            Occurs when [user resized].\n            </summary>\n        </member>\n    </members>\n</doc>\n"
  },
  {
    "path": "3rd/TraceTool2/License.txt",
    "content": "The accompanying program , along with any associated source code and files,\nis licensed under The Common Public License Version 1.0 (CPL) :\nhttp://www.opensource.org/licenses/cpl1.0.php\n"
  },
  {
    "path": "3rd/TraceTool2/TraceTool.xml",
    "content": "<?xml version=\"1.0\"?>\n<Config><General><LastStyleSheet Value=\"\"/><LastSavedPath Value=\"C:\\Users\\keen\\Desktop\\\"/><SocketPort Value=\"8090\"/><SocketPort2 Value=\"4502\"/><Udp1 Value=\"false\"/><Udp2 Value=\"false\"/><HTTPPort Value=\"0\"/><ShowSocketWarning Value=\"false\"/><SocketPolicyServer Value=\"false\"/><HttpPolicyServer Value=\"false\"/></General><AppDisplay><SmallBut Value=\"true\"/><ToolbarStandard Value=\"true\"/><ToolbarSearch Value=\"true\"/><ToolbarBookmark Value=\"true\"/><ToolbarFilter Value=\"true\"/><HideViewer Value=\"false\"/><DisableInternalLog Value=\"false\"/><ApplicationTitle Value=\"Trace and Object inspector Tool\"/><Left Value=\"215\"/><Top Value=\"193\"/><Width Value=\"1461\"/><Height Value=\"581\"/><StayOnTop Value=\"false\"/><ShowOnstartup Value=\"true\"/><ShowOnMessageReceived Value=\"false\"/><FocusToReceivedMessage Value=\"true\"/><Maximized Value=\"false\"/><IconFile Value=\"\"/><MinimizeToSystray Value=\"false\"/></AppDisplay><Framework><ShowMembers Value=\"true\"/><AutoClear Value=\"true\"/><MaxNode Value=\"2000\"/><MinNode Value=\"1000\"/><Enabled Value=\"true\"/><VisibleMenu Value=\"true\"/><MainTraceTitle Value=\"Traces\"/><Trace><FontName Value=\"MS Sans Serif\"/><FontSize Value=\"8\"/><NodeHeight Value=\"18\"/></Trace><Info><FontName Value=\"MS Sans Serif\"/><FontSize Value=\"8\"/><NodeHeight Value=\"18\"/></Info><Orphans><DeletedNode Value=\"CreateUnderLostAndFound\"/><DefaultLeftText Value=\"Restored\"/><DefaultRightText Value=\"\"/><LostAndFoundLeftText Value=\"Lost and found\"/><LostAndFoundRightText Value=\"\"/></Orphans></Framework><Watches><Enabled Value=\"false\"/><VisibleMenu Value=\"true\"/><MainWatchesTitle Value=\"Watches\"/><Trace><FontName Value=\"MS Sans Serif\"/><FontSize Value=\"8\"/><NodeHeight Value=\"18\"/></Trace><Info><FontName Value=\"MS Sans Serif\"/><FontSize Value=\"8\"/></Info></Watches><Ods><Enabled Value=\"true\"/><Title Value=\"ODS\"/><AutoClear Value=\"true\"/><MaxNode Value=\"2000\"/><MinNode Value=\"1000\"/><VisibleMenu Value=\"true\"/><Trace><FontName Value=\"MS Sans Serif\"/><FontSize Value=\"8\"/><NodeHeight Value=\"18\"/></Trace><Info><FontName Value=\"MS Sans Serif\"/><FontSize Value=\"8\"/></Info></Ods><EventLog><VisibleMenu Value=\"true\"/><Trace><FontName Value=\"MS Sans Serif\"/><FontSize Value=\"8\"/><NodeHeight Value=\"18\"/></Trace><Info><FontName Value=\"MS Sans Serif\"/><FontSize Value=\"8\"/></Info></EventLog><Tail><LastPath Value=\"\"/><AutoClear Value=\"true\"/><MaxNode Value=\"2000\"/><MinNode Value=\"1000\"/><ColumnStyle Value=\"Multi\"/><AutoCreateColStyle Value=\"Each\"/><TextQualifier Value=\"None\"/><Separator Value=\"9\"/><FirstcolIsTitle Value=\"true\"/><FixedColCount Value=\"5\"/><OpenFromFavorites Value=\"false\"/><VisibleMenu Value=\"true\"/><Trace><FontName Value=\"MS Sans Serif\"/><FontSize Value=\"8\"/><NodeHeight Value=\"18\"/></Trace><Info><FontName Value=\"MS Sans Serif\"/><FontSize Value=\"8\"/></Info></Tail><TextExport><ProcessName Value=\"false\"/><ThreadId Value=\"true\"/><Time Value=\"true\"/><Col1 Value=\"true\"/><Col2 Value=\"true\"/><Separator Value=\"9\"/><GenerateColumnHeader Value=\"false\"/><TextQualifier Value=\"None\"/><TreeIndentation Value=\"3\"/></TextExport><Plugins><JVMEngine Value=\"\"/><JavaPLuginClassPath Value=\"\"/></Plugins></Config>\n"
  },
  {
    "path": "Effects/BackgroundCube/MyBackgroundBillboards.fx",
    "content": "float4x4 WorldViewProjectionMatrix;\n\nTexture BillboardTexture;\nsampler BillboardTextureSampler = sampler_state \n{ \n\ttexture = <BillboardTexture> ; \n\tmagfilter = LINEAR; \n\tminfilter = LINEAR; \n\tmipfilter = LINEAR; \n\tAddressU = clamp; \n\tAddressV = clamp;\n};\n\nstruct VertexShaderInput\n{\n    float4 Position : POSITION0;\n    float4 Color : TEXCOORD0;\n    float2 TexCoord : TEXCOORD1;\n};\n\nstruct VertexShaderOutput\n{\n    float4 Position : POSITION0;\n    float4 Color : TEXCOORD0;\n    float2 TexCoord : TEXCOORD1;\n};\n\nVertexShaderOutput VertexShaderFunction(VertexShaderInput input)\n{\n    VertexShaderOutput output;\n\n    output.Position = mul(input.Position, WorldViewProjectionMatrix);\n    output.Color = input.Color;\n    output.TexCoord = input.TexCoord;\n\n    return output;\n}\n\nfloat4 PixelShaderFunction(VertexShaderOutput input) : COLOR0\n{\t\n    return tex2D(BillboardTextureSampler, input.TexCoord) * input.Color;\n}\n\ntechnique Technique1\n{\n    pass Pass1\n    {\n        VertexShader = compile vs_3_0 VertexShaderFunction();\n        PixelShader = compile ps_3_0 PixelShaderFunction();\n    }\n}\n"
  },
  {
    "path": "Effects/BackgroundCube/MyBackgroundCube.fx",
    "content": "#include \"../MyEffectBase.fxh\"\n\nfloat4x4 ViewProjectionMatrix;\nfloat3 BackgroundColor = float3(1,1,1);\n\nTexture BackgroundTexture;\nsampler BackgroundTextureSampler = sampler_state \n{ \n    texture = <BackgroundTexture> ; \n    magfilter = LINEAR; \n    minfilter = LINEAR; \n    mipfilter = LINEAR; \n    AddressU = CLAMP; \n    AddressV = CLAMP;\n};\n\nstruct VertexShaderInput\n{\n    float4 Position : POSITION0;\n    float3 TexCoord : TEXCOORD0; \n};\n\nstruct VertexShaderOutput\n{\n    float4 Position : POSITION0;\n    float3 TexCoord : TEXCOORD0;    \n};\n\nVertexShaderOutput VertexShaderFunction(VertexShaderInput input)\n{\n    VertexShaderOutput output;\n    output.Position = mul(input.Position, ViewProjectionMatrix);\n    output.TexCoord = input.TexCoord;\n    \n    // Cube texture faces are swaped (up/down, left/right, front/back - that's reason for minus sign)\n    //output.TexCoord = -input.Position.xyz / input.Position.w;\n    return output;\n}\n\nfloat4 PixelShaderFunction(VertexShaderOutput input) : COLOR0\n{\n    float4 resultColor = texCUBE(BackgroundTextureSampler, input.TexCoord);\n\tresultColor.xyz *= BackgroundColor;\n    \n    return resultColor;\n}\n\ntechnique Technique1\n{\n    pass Pass1\n    {\n        VertexShader = compile vs_3_0 VertexShaderFunction();\n        PixelShader = compile ps_3_0 PixelShaderFunction();\n    }\n}\n"
  },
  {
    "path": "Effects/BackgroundCube/MyDistantImpostorEffect.fx",
    "content": "#include \"../MyEffectBase.fxh\"\n#include \"../MyPerlinNoise.fxh\"\n\nfloat4x4 ViewProjectionMatrix;\nfloat4x4 WorldMatrix;\nfloat3 CameraPos;\nfloat4 Animation;\nfloat2 ContrastAndIntensity;\nfloat3 Color;\nfloat3 SunDir;\n\nfloat Scale;\n\nTexture ImpostorTexture;\nsampler ImpostorTextureSampler = sampler_state \n{ \n\ttexture = <ImpostorTexture> ; \n\tmagfilter = LINEAR; \n\tminfilter = LINEAR; \n\tmipfilter = LINEAR; \n\tAddressU = WRAP; \n\tAddressV = WRAP;\n};\n\nstruct VertexShaderInput\n{\n    float4 Position : POSITION0;\n    float2 TexCoord : TEXCOORD0;\n};\n\nstruct VertexShaderOutput\n{\n    float4 Position : POSITION0;\n    float2 TexCoord : TEXCOORD0;\n};\n\nstruct VertexShaderInputColored\n{\n    float4 Position : POSITION0;\n    float2 TexCoord : TEXCOORD0;\n    float4 Color : COLOR0;\n};\n\nstruct VertexShaderOutputColored\n{\n    float4 Position : POSITION0;\n    float2 TexCoord : TEXCOORD0;\n    float4 Color : COLOR0;\n};\n\nstruct VertexShaderOutputTex3D\n{\n    float4 Position : POSITION0;\n    float2 TexCoord : TEXCOORD0;\n\tfloat3 WorldPos : TEXCOORD1;\n};\n\n\n\nVertexShaderOutput VertexShaderFunction(VertexShaderInput input)\n{\n    VertexShaderOutput output;\n\n    output.Position = mul(mul(input.Position, WorldMatrix), ViewProjectionMatrix);    \n    output.TexCoord = input.TexCoord;\n\n    return output;\n}\n\nVertexShaderOutputColored VertexShaderFunctionColoredLit(VertexShaderInputColored input)\n{\n    VertexShaderOutputColored output;\n\n\tfloat4 worldPos = mul(input.Position, WorldMatrix);\n    output.Position = mul(worldPos, ViewProjectionMatrix);    \n    output.TexCoord = input.TexCoord;\n\n\t//sundir must be there\n\tfloat sunLight = max(0, dot(SunDir, normalize(worldPos.xyz)));\n\n    output.Color = input.Color;\n\toutput.Color.xyz *= sunLight;\n\n    return output;\n}\n\nVertexShaderOutputColored VertexShaderFunctionColored(VertexShaderInputColored input)\n{\n    VertexShaderOutputColored output;\n\n\tfloat4 worldPos = mul(input.Position, WorldMatrix);\n    output.Position = mul(worldPos, ViewProjectionMatrix);    \n    output.TexCoord = input.TexCoord;\n\n    output.Color = input.Color;\n\n    return output;\n}\n\nVertexShaderOutputTex3D VertexShaderFunctionTex3D(VertexShaderInput input)\n{\n    VertexShaderOutputTex3D output;\n\n\tfloat4 worldPos = mul(input.Position, WorldMatrix);\n\n\toutput.WorldPos = worldPos.xyz;\n    output.Position = mul(worldPos, ViewProjectionMatrix);    \n    output.TexCoord = input.TexCoord;\n\t\n    return output;\n}\n\nfloat4 PixelShaderFunction(VertexShaderOutput input) : COLOR0\n{\n    float4 resultColor = tex2D(ImpostorTextureSampler, input.TexCoord);\n\treturn resultColor;\n}\n\nfloat4 PixelShaderFunctionColored(VertexShaderOutputColored input) : COLOR0\n{\n    float4 resultColor = tex2D(ImpostorTextureSampler, input.TexCoord) * input.Color;\n\n\t//resultColor.xyz = lerp(resultColor.xyz, FogColor, FogMultiplier);\n\n\treturn resultColor;\n}\n\nfloat4 PixelShaderFunctionTex3D(VertexShaderOutputTex3D input) : COLOR0\n{\n\tfloat f = noiseFogNebula(input.WorldPos, CameraPos, Scale, 0.000044f, Animation);\n\n\tf = pow(f, ContrastAndIntensity.x);\n\tf *= ContrastAndIntensity.y;\n\n\treturn float4(Color, 1) * f;\n}\n\n\ntechnique Colored\n{\n    pass Pass1\n    {\n        VertexShader = compile vs_2_0 VertexShaderFunctionColored();\n        PixelShader = compile ps_2_0 PixelShaderFunctionColored();\n    }\n}\n\ntechnique ColoredLit\n{\n    pass Pass1\n    {\n        VertexShader = compile vs_2_0 VertexShaderFunctionColoredLit();\n        PixelShader = compile ps_2_0 PixelShaderFunctionColored();\n    }\n}\n\ntechnique Textured3D\n{\n    pass Pass1\n    {\n        VertexShader = compile vs_3_0 VertexShaderFunctionTex3D();\n        PixelShader = compile ps_3_0 PixelShaderFunctionTex3D();\n    }\n}\n\n\ntechnique Default\n{\n    pass Pass1\n    {\n        VertexShader = compile vs_2_0 VertexShaderFunction();\n        PixelShader = compile ps_2_0 PixelShaderFunction();\n    }\n}\n"
  },
  {
    "path": "Effects/BackgroundCube/MyHudSectorBorder.fx",
    "content": "#include \"../MyEffectBase.fxh\"\n\nfloat SectorBorderWarningDistance;\nfloat4 SectorBorderAditionalColor;\nbool SectorBorderTabPressed;\nfloat4x4 WorldMatrix;\nfloat4x4 ViewProjectionMatrix;\nfloat3 EyePosition;\n\nTexture GridTexture;\nsampler GridTextureSampler = sampler_state \n{ \n\ttexture = <GridTexture> ; \n\tmagfilter = LINEAR; \n\tminfilter = LINEAR; \n\tmipfilter = LINEAR; \n\tAddressU = CLAMP; \n\tAddressV = CLAMP;\n};\n\nstruct VertexShaderInput\n{\n    float4 Position : POSITION0;\n    float3 TexCoord : TEXCOORD0; \n    float4 InColor : COLOR;\n};\n\nstruct VertexShaderOutput\n{\n    float4 Position : POSITION0;\n    float3 TexCoord : TEXCOORD0; \n    float3 WorldPosition\t\t: TEXCOORD2; \n    float4 Color\t\t\t: COLOR0;\n};\n\nVertexShaderOutput VertexShaderFunction(VertexShaderInput input)\n{\n    VertexShaderOutput output;\n    float4 worldPosition = mul(input.Position, WorldMatrix);\n    output.Position = mul(worldPosition, ViewProjectionMatrix);\n    output.WorldPosition = worldPosition;\n    output.TexCoord = input.TexCoord;\n    output.Color = input.InColor;\n    return output;\n}\n\nfloat4 PixelShaderFunction(VertexShaderOutput input) : COLOR0\n{\n\t//\tOur grid texture is stored only in 1 channel (for saving memory) so here we reconstruct it into all 4 channels\n\tfloat4 resultColor = tex2D(GridTextureSampler, input.TexCoord);\n\tresultColor = float4(resultColor.r, resultColor.r, resultColor.r, resultColor.r);\n\n\tresultColor.rgba *= SectorBorderAditionalColor.rgba;\n\n\t//\tWe display sector border in two cases: when user press TAB or when he approaches sector border\n\t//\tEach case has different behaviour.\n\tif (SectorBorderTabPressed == false)\n\t{\n\t\tfloat dist = length(input.WorldPosition - EyePosition);\n\t\tfloat alphaByDistance = (1 - saturate(dist / SectorBorderWarningDistance));\n\t\tresultColor.a *= saturate(alphaByDistance * 2.5f);\n\t}\n\n\t//\tDon't blend to full-fog-color, just little bit (we don't want to have farther objects same color)\n\t//\tBut don't change alpha\n\t//float4 fog = float4(FogColorForBackground.r, FogColorForBackground.g, FogColorForBackground.b, resultColor.a);\n    //return lerp(resultColor, fog, FogMultiplier * 0.3);\n\t//return resultColor;\n\treturn resultColor;\n}\n\ntechnique Technique1\n{\n    pass Pass1\n    {\n        VertexShader = compile vs_3_0 VertexShaderFunction();\n        PixelShader = compile ps_3_0 PixelShaderFunction();\n    }\n}\n"
  },
  {
    "path": "Effects/Decals/MyDecalEffect.fx",
    "content": "//#include \"../MyEffectBase.fxh\"\n#include \"../MyEffectDynamicLightingBase.fxh\"\n#include \"../MyEffectReflectorBase.fxh\"\n\nfloat3 VoxelMapPosition;\nfloat4x4 ViewProjectionMatrix;\nfloat4x4 WorldMatrix;\nfloat FadeoutDistance;\nfloat4 EmissiveColor = float4(1.0f, 0.2f, 0.02f, 1.0f);\n\n\nTexture DecalDiffuseTexture;\nsampler DecalDiffuseTextureSampler = sampler_state \n{ \n\ttexture = <DecalDiffuseTexture> ; \n\tmagfilter = LINEAR; \n\tminfilter = LINEAR; \n\tmipfilter = LINEAR; \n\tAddressU = CLAMP; \n\tAddressV = CLAMP;\n};\n\nTexture DecalNormalMapTexture;\nsampler DecalNormalMapTextureSampler = sampler_state \n{ \n\ttexture = <DecalNormalMapTexture> ; \n\tmagfilter = LINEAR; \n\tminfilter = LINEAR; \n\tmipfilter = LINEAR; \n\tAddressU = CLAMP; \n\tAddressV = CLAMP;\n};\n\nstruct VertexShaderInput\n{\n    float4 Position : POSITION0;\n    float2 TexCoord : TEXCOORD0;\n    float4 Color : COLOR0;\n    float4 Normal : NORMAL0;\n    float4 Tangent : TANGENT0;\n    float4 Binormal : BINORMAL0;\n\tfloat2 EmissiveRatio : TEXCOORD1;\n};\n\nstruct VertexShaderOutput\n{\n    float4 Position : POSITION0;\n    float2 TexCoord : TEXCOORD0;\n    float4 Color : TEXCOORD1;\n\tfloat EmissiveRatio: TEXCOORD2;\n\tfloat3x3 TangentToWorld    : TEXCOORD3;\n};\n\nstruct VertexShaderOutput_Forward\n{\n    float4 Position : POSITION0;\n\tfloat4 LightColor : COLOR0;\n    float2 TexCoord : TEXCOORD0;\n    float4 Color : TEXCOORD1;\n\tfloat3 WorldPos : TEXCOORD2;\n\tfloat EmissiveRatio: TEXCOORD3;\n};\n\nVertexShaderOutput VertexShaderFunction_VoxelDecals(VertexShaderInput input)\n{\n    VertexShaderOutput output;\n\n\tinput.Position = input.Position;\n\tinput.Normal = UnpackNormal(input.Normal);\n\tinput.Tangent = UnpackNormal(input.Tangent);\n\tinput.Binormal = UnpackNormal(input.Binormal);\n\n\tfloat4 worldPosition = float4(input.Position + VoxelMapPosition, 1);\n\t\n    output.Position = mul(worldPosition, ViewProjectionMatrix);    \n    output.TexCoord = input.TexCoord;\n\n\tfloat range = FadeoutDistance / 10;\n\tfloat fadeout = saturate( (range - max(0, abs(output.Position.z)-FadeoutDistance) ) / range );\n    output.Color = input.Color;\n\toutput.Color.a *= fadeout;\n\n    output.TangentToWorld[0] = input.Tangent;\n    output.TangentToWorld[1] = input.Binormal;\n    output.TangentToWorld[2] = input.Normal.xyz;\n\n\toutput.EmissiveRatio = input.EmissiveRatio.x;\n\n    return output;\n}\n\nVertexShaderOutput VertexShaderFunction_ModelDecals(VertexShaderInput input)\n{\n    VertexShaderOutput output;\n\n\tinput.Position = input.Position;\n\tinput.Normal = UnpackNormal(input.Normal);\n\tinput.Tangent = UnpackNormal(input.Tangent);\n\tinput.Binormal = UnpackNormal(input.Binormal);\n\n    float4 worldPosition = mul(input.Position, WorldMatrix);    \n    \n    output.Position = mul(worldPosition, ViewProjectionMatrix);    \n    output.TexCoord = input.TexCoord;\n\n\tfloat range = FadeoutDistance / 10;\n\tfloat fadeout = saturate( (range - max(0, /*abs*/(output.Position.z)-FadeoutDistance) ) / range );\n    output.Color = input.Color;\n\toutput.Color.a *= fadeout;\n\toutput.EmissiveRatio = input.EmissiveRatio.x;\n\t\n    output.TangentToWorld[0] = mul(input.Tangent.xyz, WorldMatrix);\n    output.TangentToWorld[1] = mul(input.Binormal.xyz, WorldMatrix);\n    output.TangentToWorld[2] = mul(input.Normal.xyz, WorldMatrix);\n\n    return output;\n}\n\nMyGbufferPixelShaderOutput PixelShaderFunction(VertexShaderOutput input)\n{\n\n\t//return GetGbufferPixelShaderOutputBlended(float4(1,0,0,0), float4(1,0,0,1), 1,  0);\n\n\tfloat4 diffuse = tex2D(DecalDiffuseTextureSampler, input.TexCoord);\n\n\t//This is optimization for large decals where most of the pixels are totaly transparent\n\tif (diffuse.w <= 0.0) \n    {\n\t\tdiscard;\n    }\t \n\n\tfloat4 normalAndNormalAlpha = tex2D(DecalNormalMapTextureSampler, input.TexCoord);\n\tfloat3 normal = GetNormalVectorFromDDS(normalAndNormalAlpha).xyz;\n\tfloat normalAlpha = normalAndNormalAlpha.w;\n\n\tinput.TangentToWorld[0] = normalize(input.TangentToWorld[0]);\n\tinput.TangentToWorld[1] = normalize(input.TangentToWorld[1]);\n\tinput.TangentToWorld[2] = normalize(input.TangentToWorld[2]);\n    normal.xyz = normalize(mul(normal.xyz, input.TangentToWorld)); \n\tnormal = input.TangentToWorld[2];\n\n\tdiffuse = diffuse * input.Color;\n\n\tfloat emissivity = saturate(diffuse.w * diffuse.w * diffuse.w * diffuse.w - 0.2f);\n\n\tdiffuse = lerp(diffuse, emissivity * EmissiveColor, input.EmissiveRatio);\n\temissivity = lerp(0, diffuse.w, input.EmissiveRatio);\n\n\t//\tOutput into MRT\n\tMyGbufferPixelShaderOutput output = GetGbufferPixelShaderOutputBlended(float4(normal.xyz, normalAlpha), diffuse, emissivity,  0);\n\t//MyGbufferPixelShaderOutput output = GetGbufferPixelShaderOutputBlended(normal.xyz, float4(input.Color.www, 1), 0,  0);\n\treturn output;\n}\n\n\nVertexShaderOutput_Forward VertexShaderFunction_VoxelDecals_Forward(VertexShaderInput input)\n{\n    VertexShaderOutput_Forward output;\n\n\tinput.Position = input.Position;\n\tinput.Normal = UnpackNormal(input.Normal);\n\n\tfloat4 worldPosition = float4(input.Position + VoxelMapPosition, 1);\n\t\n    output.Position = mul(worldPosition, ViewProjectionMatrix);    \n\toutput.WorldPos = worldPosition.xyz;\n    output.TexCoord = input.TexCoord;\n\n\tfloat range = FadeoutDistance / 10;\n\tfloat fadeout = saturate( (range - max(0, abs(output.Position.z)-FadeoutDistance) ) / range );\n    output.Color = input.Color;\n\t//output.Color.a *= fadeout;\n\n\toutput.EmissiveRatio = input.EmissiveRatio.x;\n\n\t// Lighting\n\tfloat4 lightColor = CalculateDynamicLight_Diffuse(worldPosition, input.Normal);\n\toutput.LightColor = lightColor;\n\n    return output;\n}\n\n\nVertexShaderOutput_Forward VertexShaderFunction_ModelDecals_Forward(VertexShaderInput input)\n{\n\tVertexShaderOutput_Forward output;\n\n\tinput.Position = input.Position;\n\tinput.Normal = UnpackNormal(input.Normal);\n\n\tfloat4 worldPosition = mul(input.Position, WorldMatrix);    \n\n\toutput.Position = mul(worldPosition, ViewProjectionMatrix);    \n\toutput.WorldPos = worldPosition.xyz;\n\toutput.TexCoord = input.TexCoord;\n\n\tfloat range = FadeoutDistance / 10;\n\tfloat fadeout = saturate( (range - max(0, /*abs*/(output.Position.z)-FadeoutDistance) ) / range );\n\toutput.Color = input.Color;\n\t//output.Color.a *= fadeout;\n\toutput.EmissiveRatio = input.EmissiveRatio.x;\n\n\t// Lighting\n\tfloat4 lightColor = CalculateDynamicLight_Diffuse(worldPosition, input.Normal);\n\toutput.LightColor = lightColor;\n\n\treturn output;\n}\n\nfloat4 PixelShaderFunction_Forward(VertexShaderOutput_Forward input) : COLOR0\n{\n\tfloat4 diffuse = tex2D(DecalDiffuseTextureSampler, input.TexCoord);\n\n\t//This is optimization for large decals where most of the pixels are totaly transparent\n    if (diffuse.w <= 0.0) \n    {\n\t\tdiscard;\n    }\n\t\n\tfloat ambient = 0.1f;\n\tfloat4 color = float4(diffuse.rgb * ambient + diffuse.rgb * (input.LightColor.rgb + GetReflectorColor(input.WorldPos)), diffuse.w);\n\n\treturn color;// * input.Color;\n}\n\ntechnique TechniqueVoxelDecals\n{\n    pass Pass1\n    {\n        VertexShader = compile vs_3_0 VertexShaderFunction_VoxelDecals();\n        PixelShader = compile ps_3_0 PixelShaderFunction();\n    }\n}\n\ntechnique TechniqueModelDecals\n{\n    pass Pass1\n    {\n        VertexShader = compile vs_3_0 VertexShaderFunction_ModelDecals();\n        PixelShader = compile ps_3_0 PixelShaderFunction();\n    }\n}\n\ntechnique TechniqueVoxelDecals_Forward\n{\n\tpass Pass1\n\t{\n\t\tVertexShader = compile vs_3_0 VertexShaderFunction_VoxelDecals_Forward();\n\t\tPixelShader = compile ps_3_0 PixelShaderFunction_Forward();\n\t}\n}\n\ntechnique TechniqueModelDecals_Forward\n{\n\tpass Pass1\n\t{\n\t\tVertexShader = compile vs_3_0 VertexShaderFunction_ModelDecals_Forward();\n\t\tPixelShader = compile ps_3_0 PixelShaderFunction_Forward();\n\t}\n}\n"
  },
  {
    "path": "Effects/Fullscreen/MyEffectAmbientPrecalculation.fx",
    "content": "#include \"../MyEffectBase.fxh\"\n\nfloat2 HalfPixel;\n\nfloat4x4 FaceMatrix;\n\nint RandomTextureSize;\nint IterationCount = 20;\nfloat MainVectorWeight = 1.0f;\nfloat4 BacklightColorAndIntensity = float4(1,0,0,1);\n\ntexture RandomTexture;\nsampler RandomTextureSampler = sampler_state\n{\n\ttexture = <RandomTexture>;\n\tminfilter = POINT;\n\tmagfilter = POINT;\n\tmipfilter = NONE;\n\tAddressU = WRAP; \n\tAddressV = WRAP;\n};\n\n//\tTexture contains scene from LOD0\nTextureCube EnvironmentMap;\nsampler EnvironmentMapTextureSampler = sampler_state \n{ \n\ttexture = <EnvironmentMap>;\n\tmagfilter = LINEAR; \n\tminfilter = LINEAR; \n\tmipfilter = NONE; \n\tAddressU = clamp; \n\tAddressV = clamp;\n};\n\nfloat GetRandomNumber(int index)\n{\n\tfloat2 coord = float2(index / (float)RandomTextureSize, 1);\n\treturn tex2D(RandomTextureSampler, coord).x;\n}\n\nfloat3 GetRandomVector(int index)\n{\n\treturn float3(GetRandomNumber(index * 3), GetRandomNumber(index * 3 + 1), GetRandomNumber(index * 3 + 2));\n}\n\nstruct VertexShaderInput\n{\n    float4 Position : POSITION0;\n    float2 TexCoord : TEXCOORD0;\n};\n\nstruct VertexShaderOutput\n{\n    float4 Position : POSITION0;\n    float2 TexCoord : TEXCOORD0;\n};\n\nVertexShaderOutput VertexShaderFunction(VertexShaderInput input)\n{\n\t//\tWe're using a full screen quad, no need for transforming vertices.\n\tVertexShaderOutput output;\n\toutput.Position = input.Position;\n\toutput.TexCoord = input.TexCoord;\n\treturn output;\n}\n\nfloat4 PixelShaderFunction(VertexShaderOutput input) : COLOR0\n{\n\tfloat2 screenPos = input.TexCoord;\n\tscreenPos.x = 1 - screenPos.x;\n\n\tfloat3 center = float3(0.5f, 0.5f, 0.5f);\n\tfloat3 normal = float3(screenPos, 1.0f) - center;\n\tnormal = mul(normal, FaceMatrix);\n\n\tfloat4 environment = texCUBE(EnvironmentMapTextureSampler, normal);\n\tfloat4 ambientAcc = environment * MainVectorWeight;\n\tfloat ambientAccWeights = MainVectorWeight;\n\n\tfor(int i = 0; i < IterationCount; i++)\n\t{\n\t\tfloat3 vec = GetRandomVector(i);\n\t\tif(dot(vec, normal) < 0)\n\t\t{\n\t\t\tvec = -vec;\n\t\t}\n\n\t\t// Weight and also n dot L (normal dot light vector)\n\t\tfloat weight = dot(normal, vec);\n\n\t\tambientAcc += texCUBE(EnvironmentMapTextureSampler, vec) * weight;\n\t\tambientAccWeights += weight;\n\t}\n\n\tfloat4 ambientColor = ambientAcc / ambientAccWeights;\n\treturn float4(lerp(ambientColor.xyz, BacklightColorAndIntensity.xyz, BacklightColorAndIntensity.w * ambientColor.w), ambientColor.w );\n}\n\ntechnique BasicTechnique\n{\n    pass Pass1\n    {\n        VertexShader = compile vs_3_0 VertexShaderFunction();\n\t\tPixelShader = compile ps_3_0 PixelShaderFunction();\n    }\n}\n"
  },
  {
    "path": "Effects/Fullscreen/MyEffectAntiAlias.fx",
    "content": "#define FXAA_HLSL_3 1\n#define FXAA_PRESET 3\n\n// Copyright (c) 2010 NVIDIA Corporation. All rights reserved.\n//\n// TO  THE MAXIMUM  EXTENT PERMITTED  BY APPLICABLE  LAW, THIS SOFTWARE  IS PROVIDED\n// *AS IS*  AND NVIDIA AND  ITS SUPPLIERS DISCLAIM  ALL WARRANTIES,  EITHER  EXPRESS\n// OR IMPLIED, INCLUDING, BUT NOT LIMITED  TO, IMPLIED WARRANTIES OF MERCHANTABILITY\n// AND FITNESS FOR A PARTICULAR PURPOSE.  IN NO EVENT SHALL  NVIDIA OR ITS SUPPLIERS\n// BE  LIABLE  FOR  ANY  SPECIAL,  INCIDENTAL,  INDIRECT,  OR  CONSEQUENTIAL DAMAGES\n// WHATSOEVER (INCLUDING, WITHOUT LIMITATION,  DAMAGES FOR LOSS OF BUSINESS PROFITS,\n// BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR ANY OTHER PECUNIARY LOSS)\n// ARISING OUT OF THE  USE OF OR INABILITY  TO USE THIS SOFTWARE, EVEN IF NVIDIA HAS\n// BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.\n\n/*============================================================================\n \n                                    FXAA                                 \n \n============================================================================*/\n \n/*============================================================================\n                                 API PORTING\n============================================================================*/\n#ifndef     FXAA_GLSL_120\n    #define FXAA_GLSL_120 0\n#endif\n#ifndef     FXAA_GLSL_130\n    #define FXAA_GLSL_130 0\n#endif\n#ifndef     FXAA_HLSL_3\n    #define FXAA_HLSL_3 0\n#endif\n#ifndef     FXAA_HLSL_4\n    #define FXAA_HLSL_4 0\n#endif    \n/*--------------------------------------------------------------------------*/\n#if FXAA_GLSL_120\n    // Requires,\n    //  #version 120\n    //  #extension GL_EXT_gpu_shader4 : enable\n    #define int2 ivec2\n    #define float2 vec2\n    #define float3 vec3\n    #define float4 vec4\n    #define FxaaBool3 bvec3\n    #define FxaaInt2 ivec2\n    #define FxaaFloat2 vec2\n    #define FxaaFloat3 vec3\n    #define FxaaFloat4 vec4\n    #define FxaaBool2Float(a) mix(0.0, 1.0, (a))\n    #define FxaaPow3(x, y) pow(x, y)\n    #define FxaaSel3(f, t, b) mix((f), (t), (b))\n    #define FxaaTex sampler2D\n    #define FxaaTexLod0(t, p) texture2DLod(t, p, 0.0)\n    #define FxaaTexOff(t, p, o, r) texture2DLodOffset(t, p, 0.0, o)\n#endif\n/*--------------------------------------------------------------------------*/\n#if FXAA_GLSL_130\n    // Requires \"#version 130\" or better\n    #define int2 ivec2\n    #define float2 vec2\n    #define float3 vec3\n    #define float4 vec4\n    #define FxaaBool3 bvec3\n    #define FxaaInt2 ivec2\n    #define FxaaFloat2 vec2\n    #define FxaaFloat3 vec3\n    #define FxaaFloat4 vec4\n    #define FxaaBool2Float(a) mix(0.0, 1.0, (a))\n    #define FxaaPow3(x, y) pow(x, y)\n    #define FxaaSel3(f, t, b) mix((f), (t), (b))\n    #define FxaaTex sampler2D\n    #define FxaaTexLod0(t, p) textureLod(t, p, 0.0)\n    #define FxaaTexOff(t, p, o, r) textureLodOffset(t, p, 0.0, o)\n#endif\n/*--------------------------------------------------------------------------*/\n#if FXAA_HLSL_3\n    #define int2 float2\n    #define FxaaInt2 float2\n    #define FxaaFloat2 float2\n    #define FxaaFloat3 float3\n    #define FxaaFloat4 float4\n    #define FxaaBool2Float(a) (a)\n    #define FxaaPow3(x, y) pow(x, y)\n    #define FxaaSel3(f, t, b) ((f)*(!b) + (t)*(b))\n    #define FxaaTex sampler2D\n    #define FxaaTexLod0(t, p) tex2Dlod(t, float4(p, 0.0, 0.0))\n    #define FxaaTexOff(t, p, o, r) tex2Dlod(t, float4(p + (o * r), 0, 0))\n#endif\n/*--------------------------------------------------------------------------*/\n#if FXAA_HLSL_4\n    #define FxaaInt2 int2\n    #define FxaaFloat2 float2\n    #define FxaaFloat3 float3\n    #define FxaaFloat4 float4\n    #define FxaaBool2Float(a) (a)\n    #define FxaaPow3(x, y) pow(x, y)\n    #define FxaaSel3(f, t, b) ((f)*(!b) + (t)*(b))\n    struct FxaaTex { SamplerState smpl; Texture2D tex; };\n    #define FxaaTexLod0(t, p) t.tex.SampleLevel(t.smpl, p, 0.0) \n    #define FxaaTexOff(t, p, o, r) t.tex.SampleLevel(t.smpl, p, 0.0, o)\n#endif\n/*--------------------------------------------------------------------------*/\n#define FxaaToFloat3(a) FxaaFloat3((a), (a), (a))\nfloat4 FxaaTexGrad(FxaaTex tex, float2 pos, float2 grad) {\n    #if FXAA_GLSL_120\n        return texture2DGrad(tex, pos.xy, grad, grad);\n    #endif\n    #if FXAA_GLSL_130\n        return textureGrad(tex, pos.xy, grad, grad);\n    #endif\n    #if FXAA_HLSL_3\n        return tex2Dgrad(tex, pos.xy, grad, grad); \n    #endif\n    #if FXAA_HLSL_4\n        return tex.tex.SampleGrad(tex.smpl, pos.xy, grad, grad);\n    #endif\n}\n\n/*============================================================================\n                                 SRGB KNOBS\n------------------------------------------------------------------------------\nFXAA_SRGB_ROP - Set to 1 when applying FXAA to an sRGB back buffer (DX10/11).\n                This will do the sRGB to linear transform, \n                as ROP will expect linear color from this shader,\n                and this shader works in non-linear color.\n============================================================================*/\n#define FXAA_SRGB_ROP 0\n\n/*============================================================================\n                                DEBUG KNOBS\n------------------------------------------------------------------------------\nAll debug knobs draw FXAA-untouched pixels in FXAA computed luma (monochrome).\n \nFXAA_DEBUG_PASSTHROUGH - Red for pixels which are filtered by FXAA with a\n                         yellow tint on sub-pixel aliasing filtered by FXAA.\nFXAA_DEBUG_HORZVERT    - Blue for horizontal edges, gold for vertical edges. \nFXAA_DEBUG_PAIR        - Blue/green for the 2 pixel pair choice. \nFXAA_DEBUG_NEGPOS      - Red/blue for which side of center of span.\nFXAA_DEBUG_OFFSET      - Red/blue for -/+ x, gold/skyblue for -/+ y.\n============================================================================*/\n#ifndef     FXAA_DEBUG_PASSTHROUGH\n    #define FXAA_DEBUG_PASSTHROUGH 0\n#endif    \n#ifndef     FXAA_DEBUG_HORZVERT\n    #define FXAA_DEBUG_HORZVERT    0\n#endif    \n#ifndef     FXAA_DEBUG_PAIR   \n    #define FXAA_DEBUG_PAIR        0\n#endif    \n#ifndef     FXAA_DEBUG_NEGPOS\n    #define FXAA_DEBUG_NEGPOS      0\n#endif\n#ifndef     FXAA_DEBUG_OFFSET\n    #define FXAA_DEBUG_OFFSET      0\n#endif    \n/*--------------------------------------------------------------------------*/\n#if FXAA_DEBUG_PASSTHROUGH || FXAA_DEBUG_HORZVERT || FXAA_DEBUG_PAIR\n    #define FXAA_DEBUG 1\n#endif    \n#if FXAA_DEBUG_NEGPOS || FXAA_DEBUG_OFFSET\n    #define FXAA_DEBUG 1\n#endif\n#ifndef FXAA_DEBUG\n    #define FXAA_DEBUG 0\n#endif\n  \n/*============================================================================\n                              COMPILE-IN KNOBS\n------------------------------------------------------------------------------\nFXAA_PRESET - Choose compile-in knob preset 0-5.\n------------------------------------------------------------------------------\nFXAA_EDGE_THRESHOLD - The minimum amount of local contrast required \n                      to apply algorithm.\n                      1.0/3.0  - too little\n                      1.0/4.0  - good start\n                      1.0/8.0  - applies to more edges\n                      1.0/16.0 - overkill\n------------------------------------------------------------------------------\nFXAA_EDGE_THRESHOLD_MIN - Trims the algorithm from processing darks.\n                          Perf optimization.\n                          1.0/32.0 - visible limit (smaller isn't visible)\n                          1.0/16.0 - good compromise\n                          1.0/12.0 - upper limit (seeing artifacts)\n------------------------------------------------------------------------------\nFXAA_SEARCH_STEPS - Maximum number of search steps for end of span.\n------------------------------------------------------------------------------\nFXAA_SEARCH_ACCELERATION - How much to accelerate search,\n                           1 - no acceleration\n                           2 - skip by 2 pixels\n                           3 - skip by 3 pixels\n                           4 - skip by 4 pixels\n------------------------------------------------------------------------------\nFXAA_SEARCH_THRESHOLD - Controls when to stop searching.\n                        1.0/4.0 - seems to be the best quality wise\n------------------------------------------------------------------------------\nFXAA_SUBPIX_FASTER - Turn on lower quality but faster subpix path.\n                     Not recomended, but used in preset 0.\n------------------------------------------------------------------------------\nFXAA_SUBPIX - Toggle subpix filtering.\n              0 - turn off\n              1 - turn on\n              2 - turn on full (ignores FXAA_SUBPIX_TRIM and CAP)\n------------------------------------------------------------------------------\nFXAA_SUBPIX_TRIM - Controls sub-pixel aliasing removal.\n                   1.0/2.0 - low removal\n                   1.0/3.0 - medium removal\n                   1.0/4.0 - default removal\n                   1.0/8.0 - high removal\n                   0.0 - complete removal\n------------------------------------------------------------------------------\nFXAA_SUBPIX_CAP - Insures fine detail is not completely removed.\n                  This is important for the transition of sub-pixel detail,\n                  like fences and wires.\n                  3.0/4.0 - default (medium amount of filtering)\n                  7.0/8.0 - high amount of filtering\n                  1.0 - no capping of sub-pixel aliasing removal\n============================================================================*/\n#ifndef FXAA_PRESET\n    #define FXAA_PRESET 3\n#endif\n/*--------------------------------------------------------------------------*/\n#if (FXAA_PRESET == 0)\n    #define FXAA_EDGE_THRESHOLD      (1.0/4.0)\n    #define FXAA_EDGE_THRESHOLD_MIN  (1.0/12.0)\n    #define FXAA_SEARCH_STEPS        2\n    #define FXAA_SEARCH_ACCELERATION 4\n    #define FXAA_SEARCH_THRESHOLD    (1.0/4.0)\n    #define FXAA_SUBPIX              1\n    #define FXAA_SUBPIX_FASTER       1\n    #define FXAA_SUBPIX_CAP          (2.0/3.0)\n    #define FXAA_SUBPIX_TRIM         (1.0/4.0)\n#endif\n/*--------------------------------------------------------------------------*/\n#if (FXAA_PRESET == 1)\n    #define FXAA_EDGE_THRESHOLD      (1.0/8.0)\n    #define FXAA_EDGE_THRESHOLD_MIN  (1.0/16.0)\n    #define FXAA_SEARCH_STEPS        4\n    #define FXAA_SEARCH_ACCELERATION 3\n    #define FXAA_SEARCH_THRESHOLD    (1.0/4.0)\n    #define FXAA_SUBPIX              1\n    #define FXAA_SUBPIX_FASTER       0\n    #define FXAA_SUBPIX_CAP          (3.0/4.0)\n    #define FXAA_SUBPIX_TRIM         (1.0/4.0)\n#endif\n/*--------------------------------------------------------------------------*/\n#if (FXAA_PRESET == 2)\n    #define FXAA_EDGE_THRESHOLD      (1.0/8.0)\n    #define FXAA_EDGE_THRESHOLD_MIN  (1.0/24.0)\n    #define FXAA_SEARCH_STEPS        8\n    #define FXAA_SEARCH_ACCELERATION 2\n    #define FXAA_SEARCH_THRESHOLD    (1.0/4.0)\n    #define FXAA_SUBPIX              1\n    #define FXAA_SUBPIX_FASTER       0\n    #define FXAA_SUBPIX_CAP          (3.0/4.0)\n    #define FXAA_SUBPIX_TRIM         (1.0/4.0)\n#endif\n/*--------------------------------------------------------------------------*/\n#if (FXAA_PRESET == 3)\n    #define FXAA_EDGE_THRESHOLD      (1.0/8.0)\n    #define FXAA_EDGE_THRESHOLD_MIN  (1.0/24.0)\n    #define FXAA_SEARCH_STEPS        16\n    #define FXAA_SEARCH_ACCELERATION 1\n    #define FXAA_SEARCH_THRESHOLD    (1.0/4.0)\n    #define FXAA_SUBPIX              1\n    #define FXAA_SUBPIX_FASTER       0\n    #define FXAA_SUBPIX_CAP          (3.0/4.0)\n    #define FXAA_SUBPIX_TRIM         (1.0/4.0)\n#endif\n/*--------------------------------------------------------------------------*/\n#if (FXAA_PRESET == 4)\n    #define FXAA_EDGE_THRESHOLD      (1.0/8.0)\n    #define FXAA_EDGE_THRESHOLD_MIN  (1.0/24.0)\n    #define FXAA_SEARCH_STEPS        24\n    #define FXAA_SEARCH_ACCELERATION 1\n    #define FXAA_SEARCH_THRESHOLD    (1.0/4.0)\n    #define FXAA_SUBPIX              1\n    #define FXAA_SUBPIX_FASTER       0\n    #define FXAA_SUBPIX_CAP          (3.0/4.0)\n    #define FXAA_SUBPIX_TRIM         (1.0/4.0)\n#endif\n/*--------------------------------------------------------------------------*/\n#if (FXAA_PRESET == 5)\n    #define FXAA_EDGE_THRESHOLD      (1.0/8.0)\n    #define FXAA_EDGE_THRESHOLD_MIN  (1.0/24.0)\n    #define FXAA_SEARCH_STEPS        32\n    #define FXAA_SEARCH_ACCELERATION 1\n    #define FXAA_SEARCH_THRESHOLD    (1.0/4.0)\n    #define FXAA_SUBPIX              1\n    #define FXAA_SUBPIX_FASTER       0\n    #define FXAA_SUBPIX_CAP          (3.0/4.0)\n    #define FXAA_SUBPIX_TRIM         (1.0/4.0)\n#endif\n/*--------------------------------------------------------------------------*/\n#define FXAA_SUBPIX_TRIM_SCALE (1.0/(1.0 - FXAA_SUBPIX_TRIM))\n\n/*============================================================================\n                                   HELPERS\n============================================================================*/\n// Return the luma, the estimation of luminance from rgb inputs.\n// This approximates luma using one FMA instruction,\n// skipping normalization and tossing out blue.\n// FxaaLuma() will range 0.0 to 2.963210702.\nfloat FxaaLuma(float3 rgb) {\n    return rgb.y * (0.587/0.299) + rgb.x; } \n/*--------------------------------------------------------------------------*/\nfloat3 FxaaLerp3(float3 a, float3 b, float amountOfA) {\n    return (FxaaToFloat3(-amountOfA) * b) + \n        ((a * FxaaToFloat3(amountOfA)) + b); } \n/*--------------------------------------------------------------------------*/\n// Support any extra filtering before returning color.\nfloat3 FxaaFilterReturn(float3 rgb) {\n    #if FXAA_SRGB_ROP\n        // Do sRGB encoded value to linear conversion.\n        return FxaaSel3(\n            rgb * FxaaToFloat3(1.0/12.92), \n            FxaaPow3(\n                rgb * FxaaToFloat3(1.0/1.055) + FxaaToFloat3(0.055/1.055), \n                FxaaToFloat3(2.4)),\n            rgb > FxaaToFloat3(0.04045)); \n    #else\n        return rgb;\n    #endif\n}\n \n/*============================================================================\n                                VERTEX SHADER\n============================================================================*/\nfloat2 FxaaVertexShader(\n// Both x and y range {-1.0 to 1.0 across screen}.\nfloat2 inPos) {\n    float2 pos;\n    pos.xy = (inPos.xy * FxaaFloat2(0.5, 0.5)) + FxaaFloat2(0.5, 0.5);\n    return pos; }  \n \n/*============================================================================\n \n                                PIXEL SHADER\n                                \n============================================================================*/\nfloat3 FxaaPixelShader(\n// Output of FxaaVertexShader interpolated across screen.\n//  xy -> actual texture position {0.0 to 1.0}\nfloat2 pos,\n// Input texture.\nFxaaTex tex,\n// RCPFRAME SHOULD PIXEL SHADER CONSTANTS!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n// {1.0/frameWidth, 1.0/frameHeight}\nfloat2 rcpFrame) {\n    \n/*----------------------------------------------------------------------------\n            EARLY EXIT IF LOCAL CONTRAST BELOW EDGE DETECT LIMIT\n------------------------------------------------------------------------------\nMajority of pixels of a typical image do not require filtering, \noften pixels are grouped into blocks which could benefit from early exit \nright at the beginning of the algorithm. \nGiven the following neighborhood, \n \n      N   \n    W M E\n      S   \n    \nIf the difference in local maximum and minimum luma (contrast \"range\") \nis lower than a threshold proportional to the maximum local luma (\"rangeMax\"), \nthen the shader early exits (no visible aliasing). \nThis threshold is clamped at a minimum value (\"FXAA_EDGE_THRESHOLD_MIN\")\nto avoid processing in really dark areas.    \n----------------------------------------------------------------------------*/\n    float3 rgbN = FxaaTexOff(tex, pos.xy, FxaaInt2( 0,-1), rcpFrame).xyz;\n    float3 rgbW = FxaaTexOff(tex, pos.xy, FxaaInt2(-1, 0), rcpFrame).xyz;\n    float3 rgbM = FxaaTexOff(tex, pos.xy, FxaaInt2( 0, 0), rcpFrame).xyz;\n    float3 rgbE = FxaaTexOff(tex, pos.xy, FxaaInt2( 1, 0), rcpFrame).xyz;\n    float3 rgbS = FxaaTexOff(tex, pos.xy, FxaaInt2( 0, 1), rcpFrame).xyz;\n    float lumaN = FxaaLuma(rgbN);\n    float lumaW = FxaaLuma(rgbW);\n    float lumaM = FxaaLuma(rgbM);\n    float lumaE = FxaaLuma(rgbE);\n    float lumaS = FxaaLuma(rgbS);\n    float rangeMin = min(lumaM, min(min(lumaN, lumaW), min(lumaS, lumaE)));\n    float rangeMax = max(lumaM, max(max(lumaN, lumaW), max(lumaS, lumaE)));\n    float range = rangeMax - rangeMin;\n    #if FXAA_DEBUG\n        float lumaO = lumaM / (1.0 + (0.587/0.299));\n    #endif        \n    if(range < max(FXAA_EDGE_THRESHOLD_MIN, rangeMax * FXAA_EDGE_THRESHOLD)) {\n        #if FXAA_DEBUG\n            return FxaaFilterReturn(FxaaToFloat3(lumaO));\n        #endif\n        return FxaaFilterReturn(rgbM); }\n    #if FXAA_SUBPIX > 0\n        #if FXAA_SUBPIX_FASTER\n            float3 rgbL = (rgbN + rgbW + rgbE + rgbS + rgbM) * \n                FxaaToFloat3(1.0/5.0);\n        #else\n            float3 rgbL = rgbN + rgbW + rgbM + rgbE + rgbS;\n        #endif\n    #endif        \n    \n/*----------------------------------------------------------------------------\n                               COMPUTE LOWPASS\n------------------------------------------------------------------------------\nFXAA computes a local neighborhood lowpass value as follows,\n \n  (N + W + E + S)/4\n  \nThen uses the ratio of the contrast range of the lowpass \nand the range found in the early exit check, \nas a sub-pixel aliasing detection filter. \nWhen FXAA detects sub-pixel aliasing (such as single pixel dots), \nit later blends in \"blendL\" amount \nof a lowpass value (computed in the next section) to the final result.\n----------------------------------------------------------------------------*/\n    #if FXAA_SUBPIX != 0\n        float lumaL = (lumaN + lumaW + lumaE + lumaS) * 0.25;\n        float rangeL = abs(lumaL - lumaM);\n    #endif        \n    #if FXAA_SUBPIX == 1\n        float blendL = max(0.0, \n            (rangeL / range) - FXAA_SUBPIX_TRIM) * FXAA_SUBPIX_TRIM_SCALE; \n        blendL = min(FXAA_SUBPIX_CAP, blendL);\n    #endif\n    #if FXAA_SUBPIX == 2\n        float blendL = rangeL / range; \n    #endif\n    #if FXAA_DEBUG_PASSTHROUGH\n        #if FXAA_SUBPIX == 0\n            float blendL = 0.0;\n        #endif\n        return FxaaFilterReturn(\n            FxaaFloat3(1.0, blendL/FXAA_SUBPIX_CAP, 0.0));\n    #endif    \n    \n/*----------------------------------------------------------------------------\n                    CHOOSE VERTICAL OR HORIZONTAL SEARCH\n------------------------------------------------------------------------------\nFXAA uses the following local neighborhood,\n \n    NW N NE\n    W  M  E\n    SW S SE\n    \nTo compute an edge amount for both vertical and horizontal directions.\nNote edge detect filters like Sobel fail on single pixel lines through M.\nFXAA takes the weighted average magnitude of the high-pass values \nfor rows and columns as an indication of local edge amount.\n \nA lowpass value for anti-sub-pixel-aliasing is computed as \n    (N+W+E+S+M+NW+NE+SW+SE)/9.\nThis full box pattern has higher quality than other options.\n \nNote following this block, both vertical and horizontal cases\nflow in parallel (reusing the horizontal variables).\n----------------------------------------------------------------------------*/\n    float3 rgbNW = FxaaTexOff(tex, pos.xy, FxaaInt2(-1,-1), rcpFrame).xyz;\n    float3 rgbNE = FxaaTexOff(tex, pos.xy, FxaaInt2( 1,-1), rcpFrame).xyz;\n    float3 rgbSW = FxaaTexOff(tex, pos.xy, FxaaInt2(-1, 1), rcpFrame).xyz;\n    float3 rgbSE = FxaaTexOff(tex, pos.xy, FxaaInt2( 1, 1), rcpFrame).xyz;\n    #if (FXAA_SUBPIX_FASTER == 0) && (FXAA_SUBPIX > 0)\n        rgbL += (rgbNW + rgbNE + rgbSW + rgbSE);\n        rgbL *= FxaaToFloat3(1.0/9.0);\n    #endif\n    float lumaNW = FxaaLuma(rgbNW);\n    float lumaNE = FxaaLuma(rgbNE);\n    float lumaSW = FxaaLuma(rgbSW);\n    float lumaSE = FxaaLuma(rgbSE);\n    float edgeVert = \n        abs((0.25 * lumaNW) + (-0.5 * lumaN) + (0.25 * lumaNE)) +\n        abs((0.50 * lumaW ) + (-1.0 * lumaM) + (0.50 * lumaE )) +\n        abs((0.25 * lumaSW) + (-0.5 * lumaS) + (0.25 * lumaSE));\n    float edgeHorz = \n        abs((0.25 * lumaNW) + (-0.5 * lumaW) + (0.25 * lumaSW)) +\n        abs((0.50 * lumaN ) + (-1.0 * lumaM) + (0.50 * lumaS )) +\n        abs((0.25 * lumaNE) + (-0.5 * lumaE) + (0.25 * lumaSE));\n    bool horzSpan = edgeHorz >= edgeVert;\n    #if FXAA_DEBUG_HORZVERT\n        if(horzSpan) return FxaaFilterReturn(FxaaFloat3(1.0, 0.75, 0.0));\n        else         return FxaaFilterReturn(FxaaFloat3(0.0, 0.50, 1.0));\n    #endif\n    float lengthSign = horzSpan ? -rcpFrame.y : -rcpFrame.x;\n    if(!horzSpan) lumaN = lumaW;\n    if(!horzSpan) lumaS = lumaE;\n    float gradientN = abs(lumaN - lumaM);\n    float gradientS = abs(lumaS - lumaM);\n    lumaN = (lumaN + lumaM) * 0.5;\n    lumaS = (lumaS + lumaM) * 0.5;\n    \n/*----------------------------------------------------------------------------\n                CHOOSE SIDE OF PIXEL WHERE GRADIENT IS HIGHEST\n------------------------------------------------------------------------------\nThis chooses a pixel pair. \nFor \"horzSpan == true\" this will be a vertical pair,\n \n    [N]     N\n    [M] or [M]\n     S     [S]\n \nNote following this block, both {N,M} and {S,M} cases\nflow in parallel (reusing the {N,M} variables).\n \nThis pair of image rows or columns is searched below\nin the positive and negative direction \nuntil edge status changes \n(or the maximum number of search steps is reached).\n----------------------------------------------------------------------------*/    \n    bool pairN = gradientN >= gradientS;\n    #if FXAA_DEBUG_PAIR\n        if(pairN) return FxaaFilterReturn(FxaaFloat3(0.0, 0.0, 1.0));\n        else      return FxaaFilterReturn(FxaaFloat3(0.0, 1.0, 0.0));\n    #endif\n    if(!pairN) lumaN = lumaS;\n    if(!pairN) gradientN = gradientS;\n    if(!pairN) lengthSign *= -1.0;\n    float2 posN;\n    posN.x = pos.x + (horzSpan ? 0.0 : lengthSign * 0.5);\n    posN.y = pos.y + (horzSpan ? lengthSign * 0.5 : 0.0);\n    \n/*----------------------------------------------------------------------------\n                         CHOOSE SEARCH LIMITING VALUES\n------------------------------------------------------------------------------\nSearch limit (+/- gradientN) is a function of local gradient.\n----------------------------------------------------------------------------*/\n    gradientN *= FXAA_SEARCH_THRESHOLD;\n    \n/*----------------------------------------------------------------------------\n    SEARCH IN BOTH DIRECTIONS UNTIL FIND LUMA PAIR AVERAGE IS OUT OF RANGE\n------------------------------------------------------------------------------\nThis loop searches either in vertical or horizontal directions,\nand in both the negative and positive direction in parallel.\nThis loop fusion is faster than searching separately.\n \nThe search is accelerated using FXAA_SEARCH_ACCELERATION length box filter\nvia anisotropic filtering with specified texture gradients.\n----------------------------------------------------------------------------*/\n    float2 posP = posN;\n    float2 offNP = horzSpan ? \n        FxaaFloat2(rcpFrame.x, 0.0) :\n        FxaaFloat2(0.0f, rcpFrame.y); \n    float lumaEndN = lumaN;\n    float lumaEndP = lumaN;\n    bool doneN = false;\n    bool doneP = false;\n    #if FXAA_SEARCH_ACCELERATION == 1\n        posN += offNP * FxaaFloat2(-1.0, -1.0);\n        posP += offNP * FxaaFloat2( 1.0,  1.0);\n    #endif\n    #if FXAA_SEARCH_ACCELERATION == 2\n        posN += offNP * FxaaFloat2(-1.5, -1.5);\n        posP += offNP * FxaaFloat2( 1.5,  1.5);\n        offNP *= FxaaFloat2(2.0, 2.0);\n    #endif\n    #if FXAA_SEARCH_ACCELERATION == 3\n        posN += offNP * FxaaFloat2(-2.0, -2.0);\n        posP += offNP * FxaaFloat2( 2.0,  2.0);\n        offNP *= FxaaFloat2(3.0, 3.0);\n    #endif\n    #if FXAA_SEARCH_ACCELERATION == 4\n        posN += offNP * FxaaFloat2(-2.5, -2.5);\n        posP += offNP * FxaaFloat2( 2.5,  2.5);\n        offNP *= FxaaFloat2(4.0, 4.0);\n    #endif\n    for(int i = 0; i < FXAA_SEARCH_STEPS; i++) {\n        #if FXAA_SEARCH_ACCELERATION == 1\n            if(!doneN) lumaEndN = \n                FxaaLuma(FxaaTexLod0(tex, posN.xy).xyz);\n            if(!doneP) lumaEndP = \n                FxaaLuma(FxaaTexLod0(tex, posP.xy).xyz);\n        #else\n            if(!doneN) lumaEndN = \n                FxaaLuma(FxaaTexGrad(tex, posN.xy, offNP).xyz);\n            if(!doneP) lumaEndP = \n                FxaaLuma(FxaaTexGrad(tex, posP.xy, offNP).xyz);\n        #endif\n        doneN = doneN || (abs(lumaEndN - lumaN) >= gradientN);\n        doneP = doneP || (abs(lumaEndP - lumaN) >= gradientN);\n        if(doneN && doneP) break;\n        if(!doneN) posN -= offNP;\n        if(!doneP) posP += offNP; }\n    \n/*----------------------------------------------------------------------------\n               HANDLE IF CENTER IS ON POSITIVE OR NEGATIVE SIDE \n------------------------------------------------------------------------------\nFXAA uses the pixel's position in the span \nin combination with the values (lumaEnd*) at the ends of the span,\nto determine filtering.\n \nThis step computes which side of the span the pixel is on. \nOn negative side if dstN < dstP,\n \n     posN        pos                      posP\n      |-----------|------|------------------|\n      |           |      |                  | \n      |<--dstN--->|<---------dstP---------->|\n                         |\n                    span center\n                    \n----------------------------------------------------------------------------*/\n    float dstN = horzSpan ? pos.x - posN.x : pos.y - posN.y;\n    float dstP = horzSpan ? posP.x - pos.x : posP.y - pos.y;\n    bool directionN = dstN < dstP;\n    #if FXAA_DEBUG_NEGPOS\n        if(directionN) return FxaaFilterReturn(FxaaFloat3(1.0, 0.0, 0.0));\n        else           return FxaaFilterReturn(FxaaFloat3(0.0, 0.0, 1.0));\n    #endif\n    lumaEndN = directionN ? lumaEndN : lumaEndP;\n    \n/*----------------------------------------------------------------------------\n         CHECK IF PIXEL IS IN SECTION OF SPAN WHICH GETS NO FILTERING\n------------------------------------------------------------------------------\nIf both the pair luma at the end of the span (lumaEndN) \nand middle pixel luma (lumaM)\nare on the same side of the middle pair average luma (lumaN),\nthen don't filter.\n \nCases,\n \n(1.) \"L\",\n  \n               lumaM\n                 |\n                 V    XXXXXXXX <- other line averaged\n         XXXXXXX[X]XXXXXXXXXXX <- source pixel line\n        |      .      | \n    --------------------------                    \n       [ ]xxxxxx[x]xx[X]XXXXXX <- pair average\n    --------------------------           \n        ^      ^ ^    ^\n        |      | |    |\n        .      |<---->|<---------- no filter region\n        .      | |    |\n        . center |    |\n        .        |  lumaEndN \n        .        |    .\n        .      lumaN  .\n        .             .\n        |<--- span -->|\n        \n                        \n(2.) \"^\" and \"-\",\n  \n                               <- other line averaged\n          XXXXX[X]XXX          <- source pixel line\n         |     |     | \n    --------------------------                    \n        [ ]xxxx[x]xx[ ]        <- pair average\n    --------------------------           \n         |     |     |\n         |<--->|<--->|<---------- filter both sides\n \n \n(3.) \"v\" and inverse of \"-\",\n  \n    XXXXXX           XXXXXXXXX <- other line averaged\n    XXXXXXXXXXX[X]XXXXXXXXXXXX <- source pixel line\n         |     |     |\n    --------------------------                    \n    XXXX[X]xxxx[x]xx[X]XXXXXXX <- pair average\n    --------------------------           \n         |     |     |\n         |<--->|<--->|<---------- don't filter both!\n \n         \nNote the \"v\" case for FXAA requires no filtering.\nThis is because the inverse of the \"-\" case is the \"v\".\nFiltering \"v\" case turns open spans like this,\n \n    XXXXXXXXX\n    \nInto this (which is not desired),\n \n    x+.   .+x\n    XXXXXXXXX\n \n----------------------------------------------------------------------------*/\n    if(((lumaM - lumaN) < 0.0) == ((lumaEndN - lumaN) < 0.0)) \n        lengthSign = 0.0;\n \n/*----------------------------------------------------------------------------\n                COMPUTE SUB-PIXEL OFFSET AND FILTER SPAN\n------------------------------------------------------------------------------\nFXAA filters using a bilinear texture fetch offset \nfrom the middle pixel M towards the center of the pair (NM below).\nMaximum filtering will be half way between pair.\nReminder, at this point in the code, \nthe {N,M} pair is also reused for all cases: {S,M}, {W,M}, and {E,M}.\n \n    +-------+\n    |       |    0.5 offset\n    |   N   |     |\n    |       |     V\n    +-------+....---\n    |       |\n    |   M...|....---\n    |       |     ^\n    +-------+     |\n    .       .    0.0 offset\n    .   S   .\n    .       .\n    .........\n \nPosition on span is used to compute sub-pixel filter offset using simple ramp,\n \n             posN           posP\n              |\\             |<------- 0.5 pixel offset into pair pixel\n              | \\            |\n              |  \\           |\n    ---.......|...\\..........|<------- 0.25 pixel offset into pair pixel\n     ^        |   ^\\         |\n     |        |   | \\        |\n     V        |   |  \\       |\n    ---.......|===|==========|<------- 0.0 pixel offset (ie M pixel)\n     ^        .   |   ^      .\n     |        .  pos  |      .\n     |        .   .   |      .\n     |        .   . center   .\n     |        .   .          .\n     |        |<->|<---------.-------- dstN\n     |        .   .          .    \n     |        .   |<-------->|<------- dstP    \n     |        .             .\n     |        |<------------>|<------- spanLength    \n     |\n    subPixelOffset\n    \n----------------------------------------------------------------------------*/\n    float spanLength = (dstP + dstN);\n    dstN = directionN ? dstN : dstP;\n    float subPixelOffset = (0.5 + (dstN * (-1.0/spanLength))) * lengthSign;\n    #if FXAA_DEBUG_OFFSET\n        float ox = horzSpan ? 0.0 : subPixelOffset*2.0/rcpFrame.x;\n        float oy = horzSpan ? subPixelOffset*2.0/rcpFrame.y : 0.0;\n        if(ox < 0.0) return FxaaFilterReturn(\n            FxaaLerp3(FxaaToFloat3(lumaO), \n                      FxaaFloat3(1.0, 0.0, 0.0), -ox));\n        if(ox > 0.0) return FxaaFilterReturn(\n            FxaaLerp3(FxaaToFloat3(lumaO), \n                      FxaaFloat3(0.0, 0.0, 1.0),  ox));\n        if(oy < 0.0) return FxaaFilterReturn(\n            FxaaLerp3(FxaaToFloat3(lumaO), \n                      FxaaFloat3(1.0, 0.6, 0.2), -oy));\n        if(oy > 0.0) return FxaaFilterReturn(\n            FxaaLerp3(FxaaToFloat3(lumaO), \n                      FxaaFloat3(0.2, 0.6, 1.0),  oy));\n        return FxaaFilterReturn(FxaaFloat3(lumaO, lumaO, lumaO));\n    #endif\n    float3 rgbF = FxaaTexLod0(tex, FxaaFloat2(\n        pos.x + (horzSpan ? 0.0 : subPixelOffset),\n        pos.y + (horzSpan ? subPixelOffset : 0.0))).xyz;\n    #if FXAA_SUBPIX == 0\n        return FxaaFilterReturn(rgbF); \n    #else        \n        return FxaaFilterReturn(FxaaLerp3(rgbL, rgbF, blendL)); \n    #endif\n}\n\n//************************************************************************************\n\n#include \"../MyEffectBase.fxh\"\n\nfloat2 HalfPixel;\nfloat2 FullPixel;\nTexture DiffuseTexture;\n\nsampler DiffuseTextureSampler = sampler_state \n{ \n\ttexture = <DiffuseTexture> ; \n\tmagfilter = LINEAR; \n\tminfilter = LINEAR; \n\tmipfilter = NONE; \n\tAddressU = clamp; \n\tAddressV = clamp;\n\tMaxAnisotropy = 4;\n};\n\nstruct VertexShaderInput\n{\n\tfloat4 Position : POSITION0;\n\tfloat2 TexCoord : TEXCOORD0;\n};\n\nstruct VertexShaderOutput\n{\n\tfloat4 Position : POSITION0;\n\tfloat2 TexCoord : TEXCOORD0;\n};\n\n//************************************************************************************\n\nVertexShaderOutput VertexShaderFunction(VertexShaderInput input)\n{\n\t//\tWe're using a full screen quad, no need for transforming vertices.\n\tVertexShaderOutput output;\n\toutput.Position = input.Position;\n\toutput.TexCoord = input.TexCoord + HalfPixel;\n\treturn output;\n}\n\nfloat4 PixelShaderFunctionDoFxaa(VertexShaderOutput input) : COLOR0\n{\n\treturn float4(FxaaPixelShader(input.TexCoord.xy, DiffuseTextureSampler, FullPixel).xyz, 1.0f);\n}\n\nfloat4 PixelShaderFunctionDisableFxaa(VertexShaderOutput input) : COLOR0\n{\n\treturn tex2D(DiffuseTextureSampler, input.TexCoord);\n}\n\n//************************************************************************************\n\ntechnique ApplyFxaa\n{\n\tpass Pass1\n\t{\n\t\tVertexShader = compile vs_3_0 VertexShaderFunction();\n\t\tPixelShader = compile ps_3_0 PixelShaderFunctionDoFxaa();\n\t}\n}\n\ntechnique NoAntialiasing\n{\n\tpass Pass1\n\t{\n\t\tVertexShader = compile vs_3_0 VertexShaderFunction();\n\t\tPixelShader = compile ps_3_0 PixelShaderFunctionDisableFxaa();\n\t}\n}\n"
  },
  {
    "path": "Effects/Fullscreen/MyEffectClearGbuffer.fx",
    "content": "//\tClears all render targets in our MRT to desired values\n\n#include \"../MyEffectBase.fxh\"\n\nstruct VertexShaderInput\n{\n    float4 Position : POSITION0;\n};\n\nstruct VertexShaderOutput\n{\n    float4 Position : POSITION0;\n};\n\nVertexShaderOutput VertexShaderFunction(VertexShaderInput input)\n{\n    //\tWe're using a full screen quad, no need for transforming vertices.\n    VertexShaderOutput output;\n    output.Position = input.Position;\n    return output;\n}\n\nMyGbufferPixelShaderOutput PixelShaderFunction(VertexShaderOutput input)\n{    \n    //\tOutput into MRT\n\tMyGbufferPixelShaderOutput output;\n\n\t//\tNormals are mapped from [-1..1] to [0..1]. This means we need to map the neutral value to [0..1] as well.\n    output.NormalAndSpecPower.xyz = GetNormalVectorIntoRenderTarget(float3(0,0,0));\n\toutput.NormalAndSpecPower.w = 1;\n\n\t//\tBlack color - zero alpha is needed for good LOD (but only if we output LOD alpha in diffuse RT, which is unlikely)\n\toutput.DiffuseAndSpecIntensity = float4(0, 0, 0, 0);\n\t\n\t//\tClear to maximum depth.\n    output.DepthAndEmissivity = EncodeFloatRGBA(0.99999f);\n\toutput.DepthAndEmissivity.w = PackGBufferEmissivityReflection(0, 0.0f); // zero emissivity, zero reflection\n\t\n    return output;    \n}\n\ntechnique Technique1\n{\n    pass Pass1\n    {\n\t\tVertexShader = compile vs_3_0 VertexShaderFunction();\n        PixelShader = compile ps_3_0 PixelShaderFunction();\n    }\n}"
  },
  {
    "path": "Effects/Fullscreen/MyEffectContrast.fx",
    "content": "#include \"../MyEffectBase.fxh\"\n\nfloat Contrast;\nfloat Hue;\nfloat Saturation;\n\nTexture DiffuseTexture;\nsampler DiffuseSampler = sampler_state \n{ \n\ttexture = <DiffuseTexture> ; \n\tmagfilter = POINT; \n\tminfilter = POINT; \n\tmipfilter = NONE; \n\tAddressU = CLAMP; \n\tAddressV = CLAMP;\n};\n\nfloat2 HalfPixel;\n\nstruct VertexShaderInput\n{\n\tfloat4 Position : POSITION0;\n\tfloat3 TexCoordAndCornerIndex\t: TEXCOORD0;\n};\n\nstruct VertexShaderOutput\n{\n\tfloat4 Position : POSITION0;\n\tfloat2 TexCoord : TEXCOORD0;\t\n};\n\nVertexShaderOutput VertexShaderFunction(VertexShaderInput input)\n{\n\tVertexShaderOutput output;\n\toutput.Position = input.Position;\n\toutput.TexCoord = input.TexCoordAndCornerIndex.xy + HalfPixel;\n\treturn output;\n}\n\n\n// Converts the rgb value to hsv, where H's range is -1 to 5\nfloat3 rgb_to_hsv(float3 RGB)\n{\n    float r = RGB.x;\n    float g = RGB.y;\n    float b = RGB.z;\n\n    float minChannel = min(r, min(g, b));\n    float maxChannel = max(r, max(g, b));\n\n    float h = 0;\n    float s = 0;\n    float v = maxChannel;\n\n    float delta = maxChannel - minChannel;\n\n    if (delta != 0)\n    {\n        s = delta / v;\n\n        if (r == v) h = (g - b) / delta;\n        else if (g == v) h = 2 + (b - r) / delta;\n        else if (b == v) h = 4 + (r - g) / delta;\n    }\n\n    return float3(h, s, v);\n}\n\nfloat3 hsv_to_rgb(float3 HSV)\n{\n    float3 RGB = HSV.z;\n\n    float h = HSV.x;\n    float s = HSV.y;\n    float v = HSV.z;\n\n    float i = floor(h);\n    float f = h - i;\n\n    float p = (1.0 - s);\n    float q = (1.0 - s * f);\n    float t = (1.0 - s * (1 - f));\n\n    if (i == 0) { RGB = float3(1, t, p); }\n    else if (i == 1) { RGB = float3(q, 1, p); }\n    else if (i == 2) { RGB = float3(p, 1, t); }\n    else if (i == 3) { RGB = float3(p, q, 1); }\n    else if (i == 4) { RGB = float3(t, p, 1); }\n    else /* i == -1 */ { RGB = float3(1, p, q); }\n\n    RGB *= v;\n\n    return RGB;\n}\n\n\nfloat4 PixelShaderFunction(VertexShaderOutput input, float2 screenPosition : VPOS) : COLOR0\n{\n\tfloat4 col = tex2D(DiffuseSampler, input.TexCoord);\n\t//float4 color = pow(source, Contrast);//float4(1,0,0,1);\n\n\n\n    float3 hsv = rgb_to_hsv(col.xyz);\n\n    hsv.x += 0.1f;\n    // Put the hue back to the -1 to 5 range\n    //if (hsv.x > 5) { hsv.x -= 6.0; }\n    hsv = hsv_to_rgb(hsv);\n    float4 newColor = float4(hsv,col.w);\n\n    float4 colorWithBrightnessAndContrast = newColor;\n\n\t\n    colorWithBrightnessAndContrast.rgb /= colorWithBrightnessAndContrast.a;\n    colorWithBrightnessAndContrast.rgb = colorWithBrightnessAndContrast.rgb + Hue;\n    colorWithBrightnessAndContrast.rgb = ((colorWithBrightnessAndContrast.rgb - 0.5f) * max(Contrast + 1.0, 0)) + 0.5f;  \n    colorWithBrightnessAndContrast.rgb *= colorWithBrightnessAndContrast.a;\n\n    float greyscale = dot(colorWithBrightnessAndContrast.rgb, float3(0.3, 0.59, 0.11)); \n    colorWithBrightnessAndContrast.rgb = lerp(greyscale, colorWithBrightnessAndContrast.rgb, col.a * (Saturation + 1.0));       \n    return colorWithBrightnessAndContrast;\n\n\n\n\n\n\n\n//Screen\n//color = 255 - ( ( 255 - bottom ) * ( 255 - top ) ) / 255\n\n//Overlay\n//color = bottom < 128 ? ( 2 * bottom * top ) / 255\n//                     : 255 - ( 2 * ( 255 - bottom ) * ( 255 - top ) / 255 )\n\n\n\t//return color;\n}\n\ntechnique Default\n{\n\tpass Pass1\n\t{\n\t\tVertexShader = compile vs_3_0 VertexShaderFunction();\n\t\tPixelShader = compile ps_3_0 PixelShaderFunction();\n\t}\n}\n"
  },
  {
    "path": "Effects/Fullscreen/MyEffectGaussianBlur.fx",
    "content": "//\tPixel shader applies a one dimensional gaussian blur filter.\n//\tThis is used twice, first to blur horizontally, and then again to blur vertically.\n\n#include \"../MyEffectBase.fxh\"\n\nTexture SourceTexture;\nsampler SourceTextureSampler = sampler_state \n{ \n\ttexture = <SourceTexture> ; \n\tmagfilter = LINEAR; \n\tminfilter = LINEAR; \n\tmipfilter = NONE; \n\tAddressU = clamp; \n\tAddressV = clamp;\n};\n\nfloat2\t\tHalfPixel;\n\n#define SAMPLE_COUNT 15\nfloat2 SampleOffsets[SAMPLE_COUNT];\nfloat SampleWeights[SAMPLE_COUNT];\n\nstruct VertexShaderInput\n{\n    float4 Position : POSITION0;\n    float2 TexCoord : TEXCOORD0;\n};\n\nstruct VertexShaderOutput\n{\n    float4 Position : POSITION0;\n    float2 TexCoord : TEXCOORD0;\n};\n\nVertexShaderOutput VertexShaderFunction(VertexShaderInput input)\n{\n    //\tWe're using a full screen quad, no need for transforming vertices.\n    VertexShaderOutput output;\n    output.Position = input.Position;\n    output.TexCoord = input.TexCoord + HalfPixel;\n    return output;\n}\n\nfloat4 PixelShaderFunction(float2 texCoord : TEXCOORD0) : COLOR0\n{\n    float4 c = 0;\n    \n    // Combine a number of weighted image filter taps.\n    for (int i = 0; i < SAMPLE_COUNT; i++)\n    {\n        c += tex2D(SourceTextureSampler, texCoord + SampleOffsets[i]) * SampleWeights[i];\n    }\n    \n    return c;\n}\n\ntechnique Technique1\n{\n    pass Pass1\n    {\n\t\tVertexShader = compile vs_3_0 VertexShaderFunction();\n\t\tPixelShader = compile ps_3_0 PixelShaderFunction();\n    }\n}"
  },
  {
    "path": "Effects/Fullscreen/MyEffectGodRays.fx",
    "content": "#include \"../MyEffectBase.fxh\"\n\n\n/*Values that are to be passed for getting ideal Light Scattering(Not Overdone)\nDensity = 0.34f;\nWeight = 0.5f;\nDecay = 0.97f;\n Exposition = 0.015f;\n*/\n \nTexture frameTex;\nsampler2D frameSampler = sampler_state\n{\n\t Texture = <frameTex>;\n\t ADDRESSU = CLAMP;\n\t ADDRESSV = CLAMP;\n\t MAGFILTER = POINT;\n\t MINFILTER = POINT;\n\t MIPFILTER = none;\n};\n\nTexture depthTex;\nsampler2D DepthsRTSampler = sampler_state\n{\n\t Texture = <depthTex>;\n\t ADDRESSU = CLAMP;\n\t ADDRESSV = CLAMP;\n\t MAGFILTER = POINT;\n\t MINFILTER = POINT;\n\t MIPFILTER = none;\n};\n\n\nfloat2 HalfPixel;\nfloat3 FrustumCorners[4];\n\nfloat4x4 View;\nfloat4x4 WorldViewProjection;\nfloat Density = 0.8f;\nfloat Weight = 0.9f;\nfloat Decay = 0.5f;\nfloat Exposition = 0.5f;\nfloat3 LightPosition;\nfloat3 LightDirection = {1.0f, 1.0f, 1.0f};\nfloat3 CameraPos;\nstatic int numSamples = 18;\n\nstruct VertexShaderInput\n{\n\tfloat4 Position : POSITION0;\n\tfloat3 TexCoordAndCornerIndex\t: TEXCOORD0;\n};\n\nstruct VertexShaderOutput\n{\n\tfloat4 Position : POSITION0;\n\tfloat2 TexCoord : TEXCOORD0;\t\n\tfloat3 FrustumCorner : TEXCOORD1; \n};\n\n\nVertexShaderOutput VertexShaderFunction(VertexShaderInput input)\n{\n\tVertexShaderOutput output;\n\toutput.Position = input.Position;\n\toutput.TexCoord = input.TexCoordAndCornerIndex.xy;// + HalfPixel;\n\toutput.FrustumCorner = FrustumCorners[input.TexCoordAndCornerIndex.z];\n\treturn output;\n}\n\n\nhalf4 PixelShaderFunction(VertexShaderOutput input, float2 screenPosition : VPOS) : COLOR0\n{\n    half4 screenPos = mul(LightPosition, WorldViewProjection); \n     \n    half2 ssPos = screenPos.xy / screenPos.w * float2(0.5,-0.5) + 0.5;\n   \n\thalf2 oriTexCoord = input.TexCoord;\n   \n\thalf2 deltaTexCoord = (input.TexCoord - ssPos);\n    \n    deltaTexCoord *= 1.0f / numSamples * Density;\n    \n    half3 color = tex2D(frameSampler, input.TexCoord);\n\t//half3 color2 = color;\n    \n    half illuminationDecay = 1.0f;\n    \n\tfloat2 texCoord = input.TexCoord;\n\n\tfloat depth\t=  DecodeFloatRGBA(tex2D(DepthsRTSampler, texCoord));\n\tfloat viewDistance = GetViewDistanceFromDepth(depth, input.FrustumCorner.xyz);\n\t\n\tilluminationDecay = saturate(viewDistance / 1000);\n\t\n\tfor (int i=0; i < numSamples; i++)\n\t{\t\t\n\t\tfloat depth\t=  DecodeFloatRGBA(tex2D(DepthsRTSampler, texCoord));\n\t\tfloat viewDistance = GetViewDistanceFromDepth(depth, input.FrustumCorner.xyz);\n\n\t\thalf3 sample = tex2D(frameSampler, texCoord);\n\t\t\n\n\t\tif(viewDistance < 50)\n\t\t{\n\t\t\tsample = 0;\n\t\t}\n\t\t\n\t\ttexCoord -= deltaTexCoord;\n   \n\t\tsample *= illuminationDecay * Weight;\n\t\tcolor += sample;\n\t\t\n\t\tilluminationDecay *= Decay;\n\t} \n\n\t//float4 smp = tex2D(frameSampler, input.TexCoord);\n \n\thalf amount = dot(mul(LightDirection,View), half3(0.0f,0.0f,1.0f));\n \n    //color = smoothstep(half3(0,0,0), half3(1,1,1), color); // Contrast\n\treturn float4( saturate(amount-0.5) * color * Exposition, 1);\n\t//return float4(amount, amount, amount, 1);\n\t//return float4(amount.xxx,1);\n}\n\n\ntechnique Scatter\n{\n    pass Pass1\n    {\n\t\tVertexShader = compile vs_3_0 VertexShaderFunction();\n\t\tPixelShader = compile ps_3_0 PixelShaderFunction();\n    }\n}\n\n"
  },
  {
    "path": "Effects/Fullscreen/MyEffectLodTransition2.fx",
    "content": "//\tThis shader blends between texture LOD0 and LOD1 according to depth buffer\n\n#include \"../MyEffectBase.fxh\"\n\nfloat2 HalfPixel;\nfloat2 Scale;\nfloat LodNear;\nfloat LodFar;\nfloat LodBackgroundStart;\nfloat LodBackgroundEnd;\nfloat4 ColorLayer;\nfloat3 FrustumCorners[4];\n\n//\tTexture contains scene from LOD0\nTexture Lod0Diffuse;\nsampler Lod0DiffuseSampler = sampler_state \n{ \n\ttexture = <Lod0Diffuse> ; \n\tmagfilter = POINT; \n\tminfilter = POINT; \n\tmipfilter = NONE; \n\tAddressU = clamp; \n\tAddressV = clamp;\n};\n\n//\tTexture contains scene from LOD1\nTexture Lod1Diffuse;\nsampler Lod1DiffuseSampler = sampler_state \n{ \n\ttexture = <Lod1Diffuse> ; \n\tmagfilter = POINT; \n\tminfilter = POINT; \n\tmipfilter = NONE; \n\tAddressU = clamp; \n\tAddressV = clamp;\n};\n\n//\tTexture for background\nTexture LodBackgroundTexture;\nsampler LodBackgroundTextureSampler = sampler_state \n{ \n\ttexture = <LodBackgroundTexture> ; \n\tmagfilter = POINT; \n\tminfilter = POINT; \n\tmipfilter = NONE; \n\tAddressU = clamp; \n\tAddressV = clamp;\n};\n\n//\tTexture contains normals from LOD0\nTexture Lod0Normals;\nsampler Lod0NormalsSampler = sampler_state \n{ \n\ttexture = <Lod0Normals> ; \n\tmagfilter = POINT; \n\tminfilter = POINT; \n\tmipfilter = NONE; \n\tAddressU = clamp; \n\tAddressV = clamp;\n};\n\n//\tTexture contains normals from LOD1\nTexture Lod1Normals;\nsampler Lod1NormalsSampler = sampler_state \n{ \n\ttexture = <Lod1Normals> ; \n\tmagfilter = POINT; \n\tminfilter = POINT; \n\tmipfilter = NONE; \n\tAddressU = clamp; \n\tAddressV = clamp;\n};\n\n//\tTexture contains depth from LOD0\nTexture Lod0Depth;\nsampler Lod0DepthSampler = sampler_state \n{ \n\ttexture = <Lod0Depth> ; \n\tmagfilter = POINT; \n\tminfilter = POINT; \n\tmipfilter = NONE; \n\tAddressU = clamp; \n\tAddressV = clamp;\n};\n\n//\tTexture contains depth from LOD1\nTexture Lod1Depth;\nsampler Lod1DepthSampler = sampler_state \n{ \n\ttexture = <Lod1Depth> ; \n\tmagfilter = POINT; \n\tminfilter = POINT; \n\tmipfilter = NONE; \n\tAddressU = clamp; \n\tAddressV = clamp;\n};\n\nstruct VertexShaderInput\n{\n\tfloat4 Position : POSITION0;\n\tfloat3 TexCoordAndCornerIndex\t: TEXCOORD0;\n};\n\nstruct VertexShaderOutput\n{\n\tfloat4 Position : POSITION0;\n\tfloat2 TexCoord : TEXCOORD0;\n\tfloat4 ScreenPosition : TEXCOORD1;\n\tfloat3 FrustumCorner : TEXCOORD2; \n};\n\nVertexShaderOutput VertexShaderFunction(VertexShaderInput input)\n{\n\tVertexShaderOutput output;\n\toutput.Position = input.Position;\n\toutput.TexCoord = (input.TexCoordAndCornerIndex.xy + HalfPixel) * Scale;\n\toutput.ScreenPosition = input.Position;\n\toutput.FrustumCorner = FrustumCorners[input.TexCoordAndCornerIndex.z];\n\treturn output;\n}\n\nMyGbufferPixelShaderOutput GetGbufferPixelShaderOutput2(float4 normal, float4 diffuse, float depth)\n{\n\t//\tOutput into MRT\n\tMyGbufferPixelShaderOutput output;\n\toutput.NormalAndSpecPower = normal;\n\toutput.DiffuseAndSpecIntensity = diffuse;\n\toutput.DepthAndEmissivity = EncodeFloatRGBA(depth);\t\t\n    return output;\n}\n\nMyGbufferPixelShaderOutput CalculateBlend(VertexShaderOutput input, int showColorLayer) \n{\n\tfloat4 encodedDepth0 = tex2D(Lod0DepthSampler, input.TexCoord);\n\tfloat4 encodedDepth1 = tex2D(Lod1DepthSampler, input.TexCoord);\n\n\tfloat depth0 = DecodeFloatRGBA(encodedDepth0);\n\tfloat depth1 = DecodeFloatRGBA(encodedDepth1);\n\t\t\n\tfloat depth0ForTest = GetViewDistanceFromDepth(depth0, input.FrustumCorner);\n\tfloat depth1ForTest = GetViewDistanceFromDepth(depth1, input.FrustumCorner);\n\n\tfloat4 diffuse;\n\tfloat3 normal = float3(1,0,0);\n\tfloat depth = 1;\n\tfloat emissive = 0;\n\tfloat reflectivity = 0;\n\tfloat specularPower = 0;\n\tfloat specularIntensity = 0;\n\n\tfloat4 diffuse0 = tex2D(Lod0DiffuseSampler, input.TexCoord);\n\tfloat4 encodedNormal0 = tex2D(Lod0NormalsSampler, input.TexCoord);\n\tfloat3 normal0 = GetNormalVectorFromRenderTargetNormalized(encodedNormal0.xyz);\n\n\tfloat4 diffuse1 = tex2D(Lod1DiffuseSampler, input.TexCoord);\n\tfloat4 encodedNormal1 = tex2D(Lod1NormalsSampler, input.TexCoord);\n\tfloat3 normal1 = GetNormalVectorFromRenderTargetNormalized(encodedNormal1.xyz);\n\t\n\tfloat4 diffuseBackground = tex2D(LodBackgroundTextureSampler, input.TexCoord);\n\t\n\tdiffuse0 = IsDepthBackground(depth0) ? float4(diffuseBackground.xyz, 0) : diffuse0;\n\tdiffuse1 = IsDepthBackground(depth1) ? float4(diffuseBackground.xyz, 0) : diffuse1;\n\n\tfloat depthForTest = depth0ForTest <= depth1ForTest ? depth0ForTest : depth1ForTest;\n\tfloat backgroundBlend = 0;\n\n\tif (depth1ForTest > LodFar)\n\t{\n\t\tif (depth1ForTest < LodBackgroundStart)\n\t\t{\n\t\t\tif (showColorLayer)\n\t\t\t\tdiffuse1 = float4(lerp(diffuse1.rgb, ColorLayer.rgb, ColorLayer.a), diffuse1.a);\n\t\t}\n\t\telse if (depth1ForTest > LodBackgroundEnd)\n\t\t{\n\t\t\tdiffuse1 = diffuseBackground;\n\t\t\tdiffuse1.w = 0; //disable specular on background\n\t\t\tdepth1 = 0.99999f;\n\t\t\tnormal1 = 0;\n\t//\t\tbackgroundBlend = 1;\n//\t\t\tdiffuse1 = float4(0,0,1,1);\n//\t\t\tdiffuse1 = diffuseBackground;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif (showColorLayer)\n\t\t\t\tdiffuse1 = float4(lerp(diffuse1.rgb, ColorLayer.rgb, ColorLayer.a), diffuse1.a);\n\n\t\t\tfloat blend = (depth1ForTest - LodBackgroundStart) / (LodBackgroundEnd - LodBackgroundStart);\n\t\t\tdiffuse1 = lerp(diffuse1, float4(diffuseBackground.xyz, 0), blend);\n\t\t\tnormal1 *= (1 - blend);\n\t\t\t//diffuse1 = float4(0,0,1,1);\n\t\t}\n\t\t//diffuse1 = float4(0,0,1,1);\n\t}\n\telse\n\tif (depth1ForTest < LodNear)\n\t{   //tunnel in the ring + cut in the station asteroid\n\t\t//vs. borders at asteroid field\n\t\tif (!IsDepthBackground(depth0))\n\t\t{   //Must not happen now\n\t\t\tdiffuse1 = float4(0,1,0,1);\n\t\t\tdiffuse1.w = 0;\n\t\t\tnormal1 = 0;\n\t\t\tdepth1 = 0.99999f;\n\t\t}\n\t}\n\t\n\tif (IsDepthBackground(depth0) && (depthForTest == depth1ForTest))\n\t{\t//solves transparent stripes at full asteroids sector \n\t\tdiffuse0 = diffuse1;\n\t\tnormal0 = normal1;\n\t\tdepth0 = depth1;\n\t}\n\n\n\tif (depthForTest < LodNear)\n\t{\n\t\tif (IsDepthBackground(depth0) && (depthForTest == depth1ForTest))\n\t\t{ //we have empty LOD0 and another LOD1 behind\n\t\t\tdiffuse = diffuse1;\n\t\t\tnormal = normal1;\n\t\t\tdepth = depth1;\n\t\t\temissive = UnpackGBufferEmissivity(encodedDepth1.w);\n\t\t\treflectivity = UnpackGBufferReflection(encodedDepth1.w);\n\t\t\tspecularPower = encodedNormal1.w;\n\t\t\tspecularIntensity = diffuse1.w;\n\t\t}\t\n\t\telse\n\t\t{\n\t\t\tdiffuse = diffuse0;\n\t\t\tnormal = normal0;\n\t\t\tdepth = depth0;\n\t\t\temissive = UnpackGBufferEmissivity(encodedDepth0.w);\n\t\t\treflectivity = UnpackGBufferReflection(encodedDepth0.w);\n\t\t\tspecularPower = encodedNormal0.w;\n\t\t\tspecularIntensity = diffuse0.w;\n\n\t\t//\tdiffuse = float4(0,1,0,1);\n\t\t//\tnormal = float3(0,0,1);\n\n\t\t}\t\t\n\t\t\n\t\t//diffuse = float4(1,1,0,1);\t\n\t\t//normal = float3(0,0,1);\n\t}\t\n\telse\n\tif (depthForTest > LodFar)\n\t{\n\t\tnormal = normal1;\n\t\tdepth = depth1;\n\t\temissive = UnpackGBufferEmissivity(encodedDepth1.w);\n\t\treflectivity = UnpackGBufferReflection(encodedDepth1.w);\n\t\tspecularPower = encodedNormal1.w;\n\t\tspecularIntensity = diffuse1.w;\n\n\t\t//Because in LOD1 can be totally different object, which can be blended into background\n\t\t//depthForTest = depth1ForTest;\n\t  \tdiffuse = float4(1,1,1,1);\n\n\t\tif (depthForTest < LodBackgroundStart)\n\t\t{\n\t\t\tif (showColorLayer)\n\t\t\t\tdiffuse1 = float4(lerp(diffuse1.rgb, ColorLayer.rgb, ColorLayer.a), diffuse1.a);\n\n\t\t\tdiffuse = diffuse1;\n\t\t}\n\t\telse\n\t\tif (depthForTest > LodBackgroundEnd)\n\t\t{\n\t\t\n\t\t\tdiffuse = diffuseBackground;\n\t\t\tdiffuse.w = 0; //disable specular on background\n\t\t\t//diffuseBackground.w = 0; //disable specular on background\n\t\t\t//diffuse = diffuseBackground;\n\t\t\tdepth = 0.99999f;\n\t\t\tnormal = 0;\n\t\t\tbackgroundBlend = 1;\n\t\t\n\t\t}\n\t\telse\t\n\t\t{\t\t\t\t\t\t\t   \n\t\t\tif (showColorLayer)\n\t\t\t\tdiffuse1 = float4(lerp(diffuse1.rgb, ColorLayer.rgb, ColorLayer.a), diffuse1.a);\n\n\t\t\tbackgroundBlend = (depthForTest - LodBackgroundStart) / (LodBackgroundEnd - LodBackgroundStart);\n\t\t\tdiffuse = lerp(diffuse1, float4(diffuseBackground.xyz, 0), backgroundBlend);\n\t\t\tnormal *= (1 - backgroundBlend);\t \n\n\t\t\t/*\n\t\t\tif (depthForTest < LodBackgroundStart)\n\t\t\t{\n\t\t\t\t diffuse = float4(0,1,1,1);\n\t\t\t} */\n\t\t\t//diffuse = diffuse1;\n\t\t}\n\n\t\t//diffuse = float4(0,1,1,1);\t\n\t\t//normal = float3(0,0,1);\n\t}\n\telse\n\t{\n\t\tif (showColorLayer)\n\t\t\tdiffuse1 = float4(lerp(diffuse1.rgb, ColorLayer.rgb, ColorLayer.a), diffuse1.a);\n\n\t\tfloat blend = (depthForTest - LodNear) / (LodFar - LodNear);\n\t\tdiffuse = lerp(diffuse0, diffuse1, blend);\n\t\tspecularPower = encodedNormal0.w;\n\t\tspecularIntensity = diffuse0.w;\n\n\t\tif (IsDepthBackground(depth1))\n\t\t{\n\t\t\tdepth = depth0;\n\t\t\tnormal = normal0;\n\t\t\tnormal *= (1 - blend); //blend to background\n\t\t\tbackgroundBlend = blend;\n\t\t}\n\t\telse\n\t\t{\n\n\t\t\tif (IsDepthBackground(depth0))\n\t\t\t{ //we have LOD1 bigger than LOD0 and something is behind us\n\t\t\t\tnormal = normal1;\n\t\t\t\tdepth = depth1;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t//depth =  depth0; //looks better than lerp\n\t\t\t\t//depth =  min(depth0, depth1);\n\n\t\t\t\t//If not used abs here, then false shadows/lighting is on blended LOD0/1 with large z difference. In this case\n\t\t\t\t//we want to use closer object lighting, not interpolated\n\t\t\t\tif (abs(depth1ForTest - depth0ForTest) > 20)\n\t\t\t\t{\n\t\t\t\t\tdepth = min(depth0, depth1);\n\t\t\t\t}\n\t\t\t\telse \n\t\t\t\t{\n\t\t\t\t\tdepth = lerp(depth0, depth1, blend);\n\t\t\t\t\t//depth = min(depth0, depth1);\n\t\t\t\t}\n\t\t\t\tnormal = lerp(normal0, normal1, blend);\n\t\t\t\tdiffuse = lerp(diffuse0, diffuse1, blend);\n\t\t\t\t//diffuse = float4(1,1,0,1);\n\t\t\t}\n\n\t\t\t//normal = normal0;\n\t\t\t//With normalize causes sharp transition inside very lowpoly ring\n\t\t\t//With normalize causes also black borders at big asteroids on LOD0/1 transitions\n\t\t\t//Without normalize causes transluent blend with background on LOD0/1\n\t\t\tnormal = normalize(normal); \n\n\t\t\t//diffuse = float4(1,0,1,1);\t\n\t\t\t//normal = float3(0,0,1);\n\t\t}\n\t\t\n//diffuse = diffuse1;\n\t\tfloat emissive0 = UnpackGBufferEmissivity(encodedDepth0.w);\n\t\tfloat emissive1 = UnpackGBufferEmissivity(encodedDepth1.w);\n\t\temissive = lerp(emissive0, emissive1, blend);\n\n\n\t\tif (depth0ForTest <= depth1ForTest)\n\t\t{\n\t\t\t//depth = depth0;\n\t\t\treflectivity = UnpackGBufferReflection(encodedDepth0.w);\n\t\t}\n\t\telse\n\t\t{\n\t\t\t//depth = depth1;\n\t\t\treflectivity = UnpackGBufferReflection(encodedDepth1.w);\n\t\t}\n\t}\n\n\tfloat4 encodedNormal;\n\tencodedNormal.xyz = GetNormalVectorIntoRenderTarget(normal);\n\tencodedNormal.w = specularPower;\n\n\tdiffuse.w = specularIntensity;\n\n\t//\tOutput into MRT\n\tMyGbufferPixelShaderOutput output = GetGbufferPixelShaderOutput2(encodedNormal, diffuse, depth);\n\t//output.Diffuse.rgb = float3( 1 - emissive,1 - emissive,1 - emissive);\n\n\tif (backgroundBlend > 0)\n\t{\n\t\temissive += FogBacklightMultiplier * diffuseBackground.w * backgroundBlend;\n\t}\n\n\toutput.DepthAndEmissivity.a = PackGBufferEmissivityReflection(emissive, reflectivity);\n\t\n\treturn output;\n}\n\nMyGbufferPixelShaderOutput PixelShaderFunction(VertexShaderOutput input)\n{\n\treturn CalculateBlend(input, 0);\n}\n\n\nMyGbufferPixelShaderOutput PixelShaderFunctionColorLayer(VertexShaderOutput input)\n{\n\treturn CalculateBlend(input, 1);\n}\n\n\ntechnique BasicTechnique\n{\n\tpass Pass1\n\t{\n\t\tVertexShader = compile vs_3_0 VertexShaderFunction();\n\t\tPixelShader = compile ps_3_0 PixelShaderFunction();\n\t}\n}\n\ntechnique ColorLayerTechnique\n{\n\tpass Pass1\n\t{\n\t\tVertexShader = compile vs_3_0 VertexShaderFunction();\n\t\tPixelShader = compile ps_3_0 PixelShaderFunctionColorLayer();\n\t}\n}"
  },
  {
    "path": "Effects/Fullscreen/MyEffectScreenshot.fx",
    "content": "#include \"../MyEffectBase.fxh\"\n\nfloat2 HalfPixel;\n\n//\tTexture contains scene from LOD0\nTexture SourceTexture;\nsampler SourceTextureSampler = sampler_state \n{ \n\ttexture = <SourceTexture> ; \n\tmagfilter = POINT; \n\tminfilter = POINT; \n\tmipfilter = NONE; \n\tAddressU = clamp; \n\tAddressV = clamp;\n};\n\nsampler SourceTextureLinearSampler = sampler_state \n{ \n\ttexture = <SourceTexture> ; \n\tmagfilter = LINEAR; \n\tminfilter = LINEAR; \n\tmipfilter = NONE; \n\tAddressU = clamp; \n\tAddressV = clamp;\n};\n\n\nfloat2 Scale = float2(1.0f, 1.0f);\n\nstruct VertexShaderInput\n{\n\tfloat4 Position : POSITION0;\n\tfloat2 TexCoord : TEXCOORD0;\n};\n\nstruct VertexShaderOutput\n{\n\tfloat4 Position : POSITION0;\n\tfloat2 TexCoord : TEXCOORD0;\n};\n\nVertexShaderOutput VertexShaderFunction(VertexShaderInput input)\n{\n\t//\tWe're using a full screen quad, no need for transforming vertices.\n\tVertexShaderOutput output;\n\toutput.Position = input.Position;\n\toutput.TexCoord = (input.TexCoord + HalfPixel) * Scale;\n\treturn output;\n}\n\n\n\nfloat4 PixelShaderFunction(VertexShaderOutput input) : COLOR0\n{\n\tfloat4 diffuseColor = tex2D(SourceTextureSampler, input.TexCoord);\n\n\t//diffuseColor = float4(1,0,0,1);\n\t\n\treturn diffuseColor;\n}\n\nfloat4 PixelShaderFunctionLinear(VertexShaderOutput input) : COLOR0\n{\n\tfloat4 diffuseColor = tex2D(SourceTextureLinearSampler, input.TexCoord);\n\n\t//diffuseColor = float4(1,0,0,1);\n\t\n\treturn diffuseColor;\n}\n\nfloat4 PixelShaderFunctionColor(VertexShaderOutput input) : COLOR0\n{\n\tfloat4 diffuseColor = tex2D(SourceTextureSampler, input.TexCoord);\n\tdiffuseColor.a = 1;\n\t\n\treturn diffuseColor;\n}\n\nfloat4 PixelShaderFunctionHDR(VertexShaderOutput input) : COLOR0\n{\n\tfloat4 diffuseColor = tex2D(SourceTextureSampler, input.TexCoord);\n\tdiffuseColor = Decode1010102(diffuseColor);\n\tdiffuseColor.a = 1;\n\t\n\treturn diffuseColor;\n}\n\nfloat4 PixelShaderFunctionAlpha(VertexShaderOutput input) : COLOR0\n{\n\tfloat4 diffuseColor = tex2D(SourceTextureSampler, input.TexCoord);\n\t\n\treturn float4(diffuseColor.www, 1);\n}\n\nfloat4 PixelShaderFunctionDepthToAlpha(VertexShaderOutput input) : COLOR0\n{\n\tfloat4 depthColor = tex2D(SourceTextureSampler, input.TexCoord);\n\tfloat depth = DecodeFloatRGBA(depthColor);\n\t\n\treturn float4(0,0,1, depth);\n}\n\ntechnique BasicTechnique\n{\n\tpass Pass1\n\t{\n\t\tVertexShader = compile vs_3_0 VertexShaderFunction();\n\t\tPixelShader = compile ps_3_0 PixelShaderFunction();\n\t}\n}\n\ntechnique ColorTechnique\n{\n\tpass Pass1\n\t{\n\t\tVertexShader = compile vs_3_0 VertexShaderFunction();\n\t\tPixelShader = compile ps_3_0 PixelShaderFunctionColor();\n\t}\n}\n\ntechnique HDRTechnique\n{\n\tpass Pass1\n\t{\n\t\tVertexShader = compile vs_3_0 VertexShaderFunction();\n\t\tPixelShader = compile ps_3_0 PixelShaderFunctionHDR();\n\t}\n}\n\ntechnique AlphaTechnique\n{\n\tpass Pass1\n\t{\n\t\tVertexShader = compile vs_3_0 VertexShaderFunction();\n\t\tPixelShader = compile ps_3_0 PixelShaderFunctionAlpha();\n\t}\n}\n\ntechnique DepthToAlphaTechnique\n{\n\tpass Pass1\n\t{\n\t\tVertexShader = compile vs_3_0 VertexShaderFunction();\n\t\tPixelShader = compile ps_3_0 PixelShaderFunctionDepthToAlpha();\n\t}\n}\n\ntechnique LinearTechnique\n{\n\tpass Pass1\n\t{\n\t\tVertexShader = compile vs_3_0 VertexShaderFunction();\n\t\tPixelShader = compile ps_3_0 PixelShaderFunctionLinear();\n\t}\n}\n"
  },
  {
    "path": "Effects/Fullscreen/MyEffectVolumetricFog.fx",
    "content": "#include \"../MyEffectBase.fxh\"\n#include \"../MyPerlinNoise.fxh\"\n\n\nTexture SourceRT;\nsampler SourceRTSampler = sampler_state \n{ \n\ttexture = <SourceRT> ; \n\tmagfilter = POINT; \n\tminfilter = POINT; \n\tmipfilter = NONE; \n\tAddressU = CLAMP; \n\tAddressV = CLAMP;\n};\n\nTexture DepthsRT;\nsampler DepthsRTSampler = sampler_state \n{ \n\ttexture = <DepthsRT> ; \n\tmagfilter = POINT; \n\tminfilter = POINT; \n\tmipfilter = NONE; \n\tAddressU = CLAMP; \n\tAddressV = CLAMP;\n};\n\nTexture NormalsTexture;\nsampler NormalsTextureSampler = sampler_state \n{ \n\ttexture = <NormalsTexture> ; \n\tmagfilter = LINEAR; \n\tminfilter = LINEAR; \n\tmipfilter = NONE; \n\tAddressU = WRAP; \n\tAddressV = WRAP;\n};\n\n\nfloat2 HalfPixel;\nfloat3 FrustumCorners[4];\n\nfloat4x4 WorldMatrix;\nfloat4x4 ViewProjectionMatrix;\nfloat4x4 CameraMatrix;\nfloat3 CameraPos;\n\nfloat2 Scale = float2(1.0f, 1.0f);\n\nstruct VertexShaderInput\n{\n\tfloat4 Position : POSITION0;\n\tfloat3 TexCoordAndCornerIndex\t: TEXCOORD0;\n};\n\nstruct VertexShaderOutput\n{\n\tfloat4 Position : POSITION0;\n\tfloat2 TexCoord : TEXCOORD0;\t\n\t//float3 WorldPos : TEXCOORD1;\n\tfloat3 FrustumCorner : TEXCOORD1; \n};\n\nVertexShaderOutput VertexShaderFunction(VertexShaderInput input)\n{\n\tVertexShaderOutput output;\n\toutput.Position = input.Position;\n\toutput.TexCoord = (input.TexCoordAndCornerIndex.xy + HalfPixel) * Scale;\n\toutput.FrustumCorner = FrustumCorners[input.TexCoordAndCornerIndex.z];\n\treturn output;\n}\n\nfloat4 PixelShaderFunction(VertexShaderOutput input, float2 screenPosition : VPOS) : COLOR0\n{\n\tfloat4 encodedDepth = tex2D(DepthsRTSampler, input.TexCoord);\n\tfloat depth = DecodeFloatRGBA(encodedDepth);\n\tfloat depthForTest = GetViewDistanceFromDepth(depth, input.FrustumCorner);\n\tfloat4 sourceColor = tex2D(SourceRTSampler, input.TexCoord);\n\n\tfloat3 normal = GetNormalVectorFromRenderTarget(tex2D(NormalsTextureSampler, input.TexCoord).xyz);\n\tfloat blend = length(normal);\n//\tif(length(normal) < 0.1f) \n//\t\treturn sourceColor;\n\t/*\n\tfloat4 viewPos = float4(GetViewPositionFromDepth(min(0.4f, depth), input.FrustumCorner), 1);\n\tfloat4 worldPos4 = mul(viewPos, CameraMatrix);\n\tfloat3 worldPos = worldPos4.xyz;\n\tfloat f = noiseFog(worldPos, CameraPos, 0.001f, 4.4f, 0);\n\t\n\treturn float4(f.xxx, 1.0f); \n*/\n\t//Linear fog\n\t\n\t//Exponential fog\n\tfloat density = 0.36f;\n\t//float3 diffuse = CalculateFogExponencial(sourceColor.xyz, depthForTest, density);\n\n\tfloat3 diffuse = sourceColor;\n\n\t//if (length(sourceColor) < 2)\n\treturn CalculateFogLinear(sourceColor.xyz, depthForTest, blend);\n\n\t//float f = turbulence(input.WorldPos * 0.1f, 4, 0);\n\t//return float4(sourceColor.xyz, 1.0f);\n\t//return float4(diffuse, 1.0f);\n}\n\n\n\nfloat4 SkipBackgroundPixelShaderFunction(VertexShaderOutput input, float2 screenPosition : VPOS) : COLOR0\n{\n\tfloat4 encodedDepth = tex2D(DepthsRTSampler, input.TexCoord);\n\tfloat depth = DecodeFloatRGBA(encodedDepth);\n\tfloat depthForTest = GetViewDistanceFromDepth(depth, input.FrustumCorner);\n\tfloat4 sourceColor = tex2D(SourceRTSampler, input.TexCoord);\n\n\tfloat3 normal = GetNormalVectorFromRenderTarget(tex2D(NormalsTextureSampler, input.TexCoord).xyz);\n\tfloat blend = length(normal);\n\n\t//Linear fog\n\n\tfloat4 returnColor = float4(0,0,0,0);\n\n\tif (depthForTest < 50000)\t\n\t\treturnColor = CalculateFogLinear(sourceColor.xyz, depthForTest, blend);\n\t\n\treturn returnColor;\n}\n\ntechnique Technique1\n{\n\tpass Pass1\n\t{\n\t\tVertexShader = compile vs_3_0 VertexShaderFunction();\n\t\tPixelShader = compile ps_3_0 PixelShaderFunction();\n\t}\n}\n\ntechnique SkipBackgroundTechnique\n{\n\tpass Pass1\n\t{\n\t\tVertexShader = compile vs_3_0 VertexShaderFunction();\n\t\tPixelShader = compile ps_3_0 SkipBackgroundPixelShaderFunction();\n\t}\n}\n"
  },
  {
    "path": "Effects/HDR/MyEffectHDR.fx",
    "content": "#include \"MyEffectHDRBase.fxh\"\n\ntexture2D SourceTexture;\nsampler2D PointSamplerMod = sampler_state\n{\n    Texture = <SourceTexture>;\n    MinFilter = point;\n    MagFilter = point;\n    MipFilter = none;\n    AddressU = CLAMP;\n    AddressV = CLAMP;\n};\n\ntexture2D SourceTextureDiv;\nsampler2D PointSamplerDiv = sampler_state\n{\n    Texture = <SourceTextureDiv>;\n    MinFilter = point;\n    MagFilter = point;\n    MipFilter = none;\n    AddressU = CLAMP;\n    AddressV = CLAMP;\n};\n\ntexture2D BloomTexture;\nsampler2D BloomSampler = sampler_state\n{\n    Texture = <BloomTexture>;\n    MinFilter = point;\n    MagFilter = linear;\n    MipFilter = NONE;\n    AddressU = CLAMP;\n    AddressV = CLAMP;\n};\n\nfloat4 ApplyToneMapAndBloomPS (\tVertexShaderOutput input ) : COLOR0\n{\n\t// Sample the original HDR image\n\t//float4 vSampleMod = tex2D(PointSamplerMod, input.TexCoord);\n\t//float4 vSampleDiv = tex2D(PointSamplerDiv, input.TexCoord);\n\tfloat4 vHDRColor = tex2D(PointSamplerMod, input.TexCoord);\n\n\t//vHDRColor = DecodeHDR(vSampleMod, vSampleDiv);\n\t\t\n\t// Do the tone-mapping\n\tfloat3 vToneMapped = ToneMap(vHDRColor.rgb);\n\n\t// Add in the bloom component\n\tfloat4 bloom = Decode1010102( tex2D(BloomSampler, input.TexCoord) );\n\tfloat3 vColor = vToneMapped + bloom.rgb;\n\t\n\treturn float4(vColor, 1.0f);\n}\n\ntechnique BasicTechnique\n{\n    pass Pass1\n    {\n        VertexShader = compile vs_3_0 VertexShaderFunction();\n        PixelShader = compile ps_3_0 ApplyToneMapAndBloomPS();\n    }\n}\n"
  },
  {
    "path": "Effects/HDR/MyEffectHDRBase.fxh",
    "content": "#include \"../MyEffectBase.fxh\"\n\nstatic const float MiddleGrey = 0.9f; // not used right now\nstatic const float MaxLuminance = 4.0f; // because of RGBA1010102\nfloat Exposure = 1.85f;\n\nfloat2 HalfPixel;\n\ntexture2D LumTexture;\nsampler2D LumSampler = sampler_state\n{\n    Texture = <LumTexture>;\n    MinFilter = point;\n    MagFilter = point;\n    MipFilter = none;\n    AddressU = CLAMP;\n    AddressV = CLAMP;\n};\n\nstruct VertexShaderInput\n{\n\tfloat4 Position : POSITION0;\n\tfloat2 TexCoord : TEXCOORD0;\n};\n\nstruct VertexShaderOutput\n{\n\tfloat4 Position : POSITION0;\n\tfloat2 TexCoord : TEXCOORD0;\n};\n\nVertexShaderOutput VertexShaderFunction(VertexShaderInput input)\n{\n\t//\tWe're using a full screen quad, no need for transforming vertices.\n\tVertexShaderOutput output;\n\toutput.Position = input.Position;\n\toutput.TexCoord = input.TexCoord + HalfPixel;\n\treturn output;\n}\n\nfloat3 ToneMap(float3 vColor)\n{\n\t// Perform tone-mapping\n\tfloat Y = ConvertRGBToGray(vColor.rgb);\n\tfloat YD = Exposure * (Exposure/MaxLuminance + 1.0f) / (Exposure + 1.0f);\n\tvColor *= YD;\n\treturn vColor;\n\n\t// ----- other tone mapping operator: -----\n\t/*\n\t// Get the calculated average luminance \n\tfloat fLumAvg = tex2D(LumSampler, float2(0.5f, 0.5f)).r;\t\n\n\t// Calculate the luminance of the current pixel\n\tfloat fLumPixel = ConvertRGBToGray(vColor);\t\n\t\n\t// Apply the modified operator (Eq. 4)\n\tfloat fLumScaled = (fLumPixel * MiddleGrey) / fLumAvg;\t\n\tfloat fLumCompressed = (fLumScaled * (1 + (fLumScaled / (MaxLuminance * MaxLuminance)))) / (1 + fLumScaled);\n\treturn fLumCompressed * vColor;\n\t*/\n}"
  },
  {
    "path": "Effects/HDR/MyEffectLuminance.fx",
    "content": "#include \"MyEffectHDRBase.fxh\"\n\nfloat DT;\nfloat Tau = 0.5f;\nfloat MipLevel;\n\ntexture2D SourceTexture;\nsampler2D LinearSampler = sampler_state\n{\n    Texture = <SourceTexture>;\n    MinFilter = linear;\n    MagFilter = linear;\n    MipFilter = linear;\n    AddressU = CLAMP;\n    AddressV = CLAMP;\n};\nsampler2D PointSampler = sampler_state\n{\n    Texture = <SourceTexture>;\n    MinFilter = point;\n    MagFilter = point;\n    MipFilter = none;\n    AddressU = CLAMP;\n    AddressV = CLAMP;\n};\n\ntexture2D SourceTexture2;\nsampler2D PointSampler2 = sampler_state\n{\n    Texture = <SourceTexture2>;\n    MinFilter = point;\n    MagFilter = point;\n    MipFilter = none;\n    AddressU = CLAMP;\n    AddressV = CLAMP;\n};\n\nfloat4 LuminancePS ( VertexShaderOutput input )\t: COLOR0\n{\t\t\t\t\t\t\n    float4 vSample = tex2D(LinearSampler, input.TexCoord);\n    float3 vColor;\n\tvColor = Decode1010102(vSample);\n\t\n    // calculate the luminance using a weighted average\n    float Luminance = ConvertRGBToGray(vColor);\n                \n    float LogLuminance = log(1e-5 + Luminance); \n\t//float LogLuminance = Luminance;\n        \n    // Output the luminance to the render target\n    //return float4(LogLuminance, 1.0f, 0.0f, 0.0f);\n\treturn float4(LogLuminance, LogLuminance, LogLuminance, 1.0f);\n}\n\nfloat4 LuminanceMipmapPS ( VertexShaderOutput input )\t: COLOR0\n{\n\tfloat logLum = tex2Dlod(LinearSampler, float4(input.TexCoord, 0, MipLevel)).r;\n\t//return tex2Dlod(LinearSampler, float4(input.TexCoord, 0, MipLevel));\n\tfloat tmp = exp(logLum);\n\t//float tmp = logLum;\n\treturn float4(tmp, tmp, tmp, 1.0f);\n}\n\nfloat4 CalcAdaptedLumPS (VertexShaderOutput input)\t: COLOR0\n{\n\tfloat fLastLum = tex2D(PointSampler2, float2(0.5f, 0.5f)).r;\n    float fCurrentLum = tex2D(PointSampler, float2(0.5f, 0.5f)).r;\n    \n    // Adapt the luminance using Pattanaik's technique\n    float fAdaptedLum = fLastLum + (fCurrentLum - fLastLum) * (1 - exp(-DT * Tau));\n    \n    return float4(fAdaptedLum, fAdaptedLum, fAdaptedLum, 1.0f);\n}\n\ntechnique Luminance\n{\n    pass Pass1\n    {\n        VertexShader = compile vs_3_0 VertexShaderFunction();\n        PixelShader = compile ps_3_0 LuminancePS();\n    }\n}\n\ntechnique LuminanceMipmap\n{\n    pass Pass1\n    {\n        VertexShader = compile vs_3_0 VertexShaderFunction();\n        PixelShader = compile ps_3_0 LuminanceMipmapPS();\n    }\n}\n\ntechnique CalcAdaptedLuminance\n{\n    pass Pass1\n    {\n        VertexShader = compile vs_3_0 VertexShaderFunction();\n        PixelShader = compile ps_3_0 CalcAdaptedLumPS();\n    }\n}\n"
  },
  {
    "path": "Effects/HDR/MyEffectScale.fx",
    "content": "#include \"MyEffectHDRBase.fxh\"\n\ntexture2D SourceTexture;\nsampler2D LinearSampler = sampler_state\n{\n    Texture = <SourceTexture>;\n    MinFilter = linear;\n    MagFilter = linear;\n    MipFilter = linear;\n    AddressU = CLAMP;\n    AddressV = CLAMP;\n};\n\ntexture2D SourceTextureDiv;\nsampler2D LinearSamplerDiv = sampler_state\n{\n    Texture = <SourceTextureDiv>;\n    MinFilter = linear;\n    MagFilter = linear;\n    MipFilter = linear;\n    AddressU = CLAMP;\n    AddressV = CLAMP;\n};\n\nfloat2 Scale = float2(1.0f, 1.0f);\n\nVertexShaderOutput VertexShaderFunctionScale(VertexShaderInput input)\n{\n\t//\tWe're using a full screen quad, no need for transforming vertices.\n\tVertexShaderOutput output;\n\toutput.Position = input.Position;\n\toutput.TexCoord = (input.TexCoord + HalfPixel) * Scale;\n\treturn output;\n}\n\n/*\nfloat2 SourceDimensions;\n\nstatic const float Offsets[4] = {-1.5f, -0.5f, 0.5f, 1.5f};\n\n// Downscales to 1/4 size, using 16 samples.\n// Is currently not used.\nfloat4 DownscalePS (\tVertexShaderOutput input,\n\t\t\t\t\t\tuniform bool bDecodeLuminance\t)\t: COLOR0\n{\n\tfloat4 vColor = 0;\n\tfor (int x = 0; x < 4; x++)\n\t{\n\t\tfor (int y = 0; y < 4; y++)\n\t\t{\n\t\t\tfloat2 vOffset;\n\t\t\tvOffset = float2(Offsets[x], Offsets[y]) / SourceDimensions;\n\t\t\tfloat4 vSample = tex2D(PointSampler, input.TexCoord + vOffset);\n\t\t\tvColor += vSample;\n\t\t}\n\t}\n\n\tvColor /= 16.0f;\n\t\t\n\tif (bDecodeLuminance)\n\t\tvColor = float4(exp(vColor.r), 1.0f, 1.0f, 1.0f);\n\t\n\treturn vColor;\n}\n*/\n\n// Upscales or downscales using hardware bilinear filtering\nfloat4 HWScalePS ( VertexShaderOutput input )\t: COLOR0\n{\n\treturn tex2D(LinearSampler, input.TexCoord);\n}\n\n// Downscales using level 3 mipmaps (and also decodes 2-RT HDR format and encodes to 1010102 format)\nfloat4 Downscale8PS ( VertexShaderOutput input )\t: COLOR0\n{\n\treturn Encode1010102( tex2Dlod(LinearSampler, float4(input.TexCoord, 0, 3.0f)));\n}\n\n// Downscales using level 2 mipmaps (and also decodes 2-RT HDR format and encodes to 1010102 format)\nfloat4 Downscale4PS ( VertexShaderOutput input )\t: COLOR0\n{\n\treturn Encode1010102( tex2Dlod(LinearSampler, float4(input.TexCoord, 0, 2.0f)));\n}\n\ntechnique HWScale\n{\n    pass Pass1\n    {\n        VertexShader = compile vs_3_0 VertexShaderFunction();\n        PixelShader = compile ps_3_0 HWScalePS();\n    }\n}\n\ntechnique HWScalePrefabPreviews\n{\n    pass Pass1\n    {\n        VertexShader = compile vs_3_0 VertexShaderFunctionScale();\n        PixelShader = compile ps_3_0 HWScalePS();\n    }\n}\n\n/*\ntechnique Downscale\n{\n    pass Pass1\n    {\n        VertexShader = compile vs_3_0 VertexShaderFunction();\n        PixelShader = compile ps_3_0 DownscalePS(false);\n    }\n}\n\ntechnique DownscaleLuminance\n{\n    pass Pass1\n    {\n        VertexShader = compile vs_3_0 VertexShaderFunction();\n        PixelShader = compile ps_3_0 DownscalePS(true);\n    }\n}*/\n\ntechnique Downscale4\n{\n    pass Pass1\n    {\n        VertexShader = compile vs_3_0 VertexShaderFunction();\n        PixelShader = compile ps_3_0 Downscale4PS();\n    }\n}\n\ntechnique Downscale8\n{\n    pass Pass1\n    {\n        VertexShader = compile vs_3_0 VertexShaderFunction();\n        PixelShader = compile ps_3_0 Downscale8PS();\n    }\n}"
  },
  {
    "path": "Effects/HDR/MyEffectSunGlare.fx",
    "content": "#include \"../MyEffectBase.fxh\"\n\nsampler TextureSampler : register(s0);\n\nfloat sunColorMultiplier;\n\nfloat4 LDR_PS(float4 color : COLOR0, float2 texCoord : TEXCOORD0) : COLOR0\n{\n\treturn color * tex2D(TextureSampler, texCoord);\n}\n\ntechnique LDR\n{\n    pass Pass1\n    {\n        PixelShader = compile ps_2_0 LDR_PS();\n    }\n}\n"
  },
  {
    "path": "Effects/HDR/MyEffectThreshold.fx",
    "content": "#include \"MyEffectHDRBase.fxh\"\n\nfloat Threshold;\nfloat BloomIntensity;\nfloat BloomIntensityBackground;\n\ntexture2D SourceTexture;\nsampler2D PointSamplerMod = sampler_state\n{\n\tTexture = <SourceTexture>;\n\tMinFilter = point;\n\tMagFilter = point;\n\tMipFilter = none;\n\tAddressU = CLAMP;\n\tAddressV = CLAMP;\n};\n\ntexture2D SourceTextureDiv;\nsampler2D PointSamplerDiv = sampler_state\n{\n\tTexture = <SourceTextureDiv>;\n\tMinFilter = point;\n\tMagFilter = point;\n\tMipFilter = none;\n\tAddressU = CLAMP;\n\tAddressV = CLAMP;\n};\n\nfloat4 ThresholdPS ( VertexShaderOutput input ): COLOR0\n{\n\t//return float4(1,0,0, 1);\n\t\n\t// Sample the original HDR image\n\t//float4 vSampleMod = tex2D(PointSamplerMod, input.TexCoord);\n\t//float4 vSampleDiv = tex2D(PointSamplerDiv, input.TexCoord);\n\t\n\t//float4 vHDRColor = DecodeHDR(vSampleMod, vSampleDiv);\n\tfloat4 vHDRColor = tex2D(PointSamplerMod, input.TexCoord);\n\n\t// TODO remove ifs?\n\n\n\t// most emissive parts\n\tif (vHDRColor.a > 0.99f)\n\t{\n\t\tvHDRColor.rgb = 1.5f * BloomIntensityBackground * vHDRColor.rgb;\n\t\treturn float4(ToneMap(vHDRColor.rgb), 1.0f);\n\t\t//return float4(1,0,0, 1.0f);\n\t}\n\n\t\n\t// Usual emissivity\n\tif (vHDRColor.a > 0.35f)\n\t{\n\t\tvHDRColor *= vHDRColor.a;\n\t\tvHDRColor.rgb = 1.5f * BloomIntensity * vHDRColor.rgb;\n\t\treturn float4(ToneMap(vHDRColor.rgb), 1.0f);\n\t\t//return float4(0,1,0, 1.0f);\n\t}\n\n\t//return float4(vHDRColor.www, 1);\n\t\n\tvHDRColor = float4(ToneMap(vHDRColor.rgb), 1.0f);\n\n\tfloat luminance = ConvertRGBToGray(vHDRColor.rgb);\n\tluminance -= Threshold;\n\tluminance = max(luminance, 0.0f);\n\tvHDRColor.rgb *= luminance;\n\t\n\tvHDRColor.rgb = BloomIntensity * vHDRColor.rgb;\n\t\n\treturn vHDRColor;\n\t//return vHDRColor.a > 0.09? float4(1,0,0,0) : float4(0,1,0,1);\n}\n\ntechnique BasicTechnique\n{\n\tpass Pass1\n\t{\n\t\tVertexShader = compile vs_3_0 VertexShaderFunction();\n\t\tPixelShader = compile ps_3_0 ThresholdPS();\n\t}\n}"
  },
  {
    "path": "Effects/HUD/MyEffectCockpitGlass.fx",
    "content": "#include \"../MyEffectDynamicLightingBase.fxh\"\n\nfloat4\t\tGlassDirtLevelAlpha;\nfloat2\t\tHalfPixel;\nfloat4x4    WorldViewProjectionMatrix;\nfloat4x4    WorldMatrix;\nfloat4x4    ViewMatrix;\nfloat3\t\tCockpitInteriorLight;\nfloat3\t\tReflectorPosition;\n\n//\tNear light (fake reflector light) - coming from the camera/player\n//\tUsed for lighting near voxels and guns visible from the cockpit. It's also nice when guns are shoting.\nfloat\t\tNearLightRange;\nfloat4\t\tNearLightColor;\n\n\n\n\nTexture CockpitGlassTexture;\nsampler CockpitGlassTextureSampler = sampler_state \n{ \n\ttexture = <CockpitGlassTexture> ; \n\tmagfilter = LINEAR; \n\tminfilter = LINEAR; \n\tmipfilter = LINEAR; \n\tAddressU = CLAMP; \n\tAddressV = CLAMP;\n};\n\nTexture DepthsRT;\nsampler DepthsRTSampler = sampler_state \n{ \n\ttexture = <DepthsRT> ; \n\tmagfilter = POINT; \n\tminfilter = POINT; \n\tmipfilter = NONE; \n\tAddressU = clamp; \n\tAddressV = clamp;\n};\n\n\nstruct VertexShaderInput\n{\n\tfloat4 PositionAndAlpha : POSITION0;\n\tfloat4 Normal : NORMAL0;\n\tfloat2 TexCoord : TEXCOORD0;\n};\nstruct VertexShaderOutput\n{\n\tfloat4 Position : POSITION;\n\tfloat3 TexCoordAndAlpha : TEXCOORD0;\n\tfloat4 ScreenPosition : TEXCOORD1;\n\tfloat3 ViewPosition : TEXCOORD2;\n\tfloat3 LightAndSunShadowColor : TEXCOORD3;\n};\n\n\n\n//\tThis light is here only because I want dynamic light on cockpit, even if in total dark. But I don't want big differences, so that's why here is LERP.\n//\tThis light is connected to miner ship reflector or 'near light'. Thus if reflector is off or player isn't shooting, it's black.\nfloat GetCockpitLightDiffuseMultiplier(float3 normal, float3 directionToReflector)\n{\n    //float cockpitLightDiffuseMultiplier = saturate(dot(normal, directionToReflector));\n    //cockpitLightDiffuseMultiplier = lerp(0.25, 0.75, cockpitLightDiffuseMultiplier);\n\n    return 0.3 + 0.4 * saturate(dot(normal, directionToReflector));\n}\n\n\n\n//\tSun - diffuse (see that I use ABS for the angle, because I want to have sun affecting the glass from both sides\nfloat GetSunDiffuseMultiplierForCockpitGlassAndDecals(float3 normal)\n{\n\treturn saturate(abs(dot(normal, DirectionToSun)));\n}\n\n\n\nVertexShaderOutput VS_GlassForward(VertexShaderInput input)\n{\n\tVertexShaderOutput output;\n\n\tfloat4 Position = float4(input.PositionAndAlpha.xyz, 1);\n\toutput.TexCoordAndAlpha.z = input.PositionAndAlpha.w;\n\tinput.Normal = UnpackNormal(input.Normal);\n\t\n\toutput.Position = mul(Position, WorldViewProjectionMatrix);\n\toutput.ScreenPosition = output.Position;\n\toutput.TexCoordAndAlpha.xy = input.TexCoord;\n\n\tinput.Normal = input.Normal;\n\n\t//*-1 becuse of inverted normals for dynamic lights\n\tfloat3 normal = mul(input.Normal * -1, WorldMatrix);\n\tfloat3 worldPosition = mul(Position, WorldMatrix);\n\t\n\tfloat3 directionToReflector = normalize(ReflectorPosition - worldPosition);\n\toutput.ViewPosition = mul(worldPosition, ViewMatrix);\n\n\t//\tSun - diffuse (see that I use ABS for the angle, because I want to have sun affecting the glass from both sides\n\tfloat sunDiffuseMultiplier = GetSunDiffuseMultiplierForCockpitGlassAndDecals(normal);\n\t\n\t//\tThis light is connected to miner ship reflector or 'near light'. Thus if reflector is off or player isn't shooting, it's black.\n    float cockpitLightDiffuseMultiplier = GetCockpitLightDiffuseMultiplier(normal, directionToReflector);\n\tfloat cockpitLight = CockpitInteriorLight.xyz * cockpitLightDiffuseMultiplier + NearLightColor;\n\n//\tAdd dynamic lights - this is not neceserary for cockpit glass, it just tried it. May be disabled if you need optimizations.\n\tfloat3 dynamicLight = 0;\n    for (int i = 0; i < DynamicLightsCount; i++)\n    {\n\t\tdynamicLight += CalculateDynamicLight_Diffuse(DynamicLights[i], worldPosition, normal).xyz;\n    }\n    \n\toutput.LightAndSunShadowColor = SunColor.xyz * sunDiffuseMultiplier + cockpitLight + dynamicLight;\n\t\n\treturn output;\n}\n\n\nVertexShaderOutput VS_GlassDefault(VertexShaderInput input)\n{\n\tVertexShaderOutput output;\n\n\tfloat4 Position = float4(input.PositionAndAlpha.xyz, 1);\n\toutput.TexCoordAndAlpha.z = input.PositionAndAlpha.w;\n\tinput.Normal = UnpackNormal(input.Normal);\n\t\n\toutput.Position = mul(Position, WorldViewProjectionMatrix);\n\toutput.ScreenPosition = output.Position;\n\toutput.TexCoordAndAlpha.xy = input.TexCoord;\n\n\tinput.Normal = input.Normal;\n\n\t//*-1 becuse of inverted normals for dynamic lights\n\tfloat3 normal = mul(input.Normal * -1, WorldMatrix);\n\tfloat3 worldPosition = mul(Position, WorldMatrix);\n\t\n\tfloat3 directionToReflector = normalize(ReflectorPosition - worldPosition);\n\toutput.ViewPosition = mul(worldPosition, ViewMatrix);\n\n\t//\tSun - diffuse (see that I use ABS for the angle, because I want to have sun affecting the glass from both sides\n\tfloat sunDiffuseMultiplier = GetSunDiffuseMultiplierForCockpitGlassAndDecals(normal);\n\t\n\t//\tThis light is connected to miner ship reflector or 'near light'. Thus if reflector is off or player isn't shooting, it's black.\n    float cockpitLightDiffuseMultiplier = GetCockpitLightDiffuseMultiplier(normal, directionToReflector);\n\tfloat cockpitLight = CockpitInteriorLight.xyz * cockpitLightDiffuseMultiplier + NearLightColor;\n\n//\tAdd dynamic lights - this is not neceserary for cockpit glass, it just tried it. May be disabled if you need optimizations.\n\tfloat3 dynamicLight = 0;\n    for (int i = 0; i < DynamicLightsCount; i++)\n    {\n\t\tdynamicLight += CalculateDynamicLight_Diffuse(DynamicLights[i], worldPosition, normal).xyz;\n    }\n    \n\tfloat diff = 0;\n#ifdef COLOR_SHADOW_MAP_FORMAT\n\tfloat3 sunShadow = 1.0f;\n#else\n\tfloat3 sunShadow = GetShadowTermFromPosition(float4(output.ViewPosition, 1), output.ViewPosition.z, 3, 0, diff);\n#endif\n\t\n\toutput.LightAndSunShadowColor = SunColor.xyz * sunDiffuseMultiplier * saturate(sunShadow) + cockpitLight + dynamicLight;\n\t\n\treturn output;\n}\n\n\n\nfloat GetNearLightAttenuation(float distanceToReflector)\n{\n    //\tThis light's range depends on normalized distance, so here we take it from it\n\t//\tMake the light not too bright, so it will be in interval <0..0,8>\n    return (1 - saturate(distanceToReflector / NearLightRange)) * 0.8;\n}\n\n\nfloat4 PS_GlassForward(VertexShaderOutput input) : COLOR0\n{\t\n\t//\tCockpit glass texture is only grayscale (for saving memory), thus we have to extract alpha component from it.\n\tfloat4 glassTexture = tex2D(CockpitGlassTextureSampler, input.TexCoordAndAlpha.xy);\n\n\t//\tCreate alpha from color and then increase it\n\tglassTexture = dot(glassTexture, GlassDirtLevelAlpha);//1.5;//1.2;\n\n\t//\tDecrease color of texture, we don't want dirt to be white\n\tglassTexture.xyz *= 0.5;\n\t\n\tfloat4 result;\n\t\n\t//\tApply ambient + sun + near light\n\tresult.xyz = glassTexture * (AmbientColor + input.LightAndSunShadowColor);\n\t\t\n    //\tRetain original alpha, not affected by lights\n    result.w = glassTexture.w;\n\n\t// Apply fadeint/out blending \n\tresult.w *= input.TexCoordAndAlpha.z;\n\treturn result;\n}\n\n\nfloat4 PS_GlassDefault(VertexShaderOutput input) : COLOR0\n{\t\n    float2 screenSpaceTexCoord = GetScreenSpaceTextureCoord(input.ScreenPosition, HalfPixel);\n\n\tfloat mistAlpha = 0;\n\n    float depthBufferDistance = DecodeFloatRGBA(tex2D(DepthsRTSampler, screenSpaceTexCoord)) * FAR_PLANE_DISTANCE;    \n\n\tfloat viewDistance = -input.ViewPosition.z;\n\n\tif (viewDistance > depthBufferDistance)\n\t{\n\t\tdiscard;\n\t\t//return float4(1,1,1,1);\n\t}\n\n\tmistAlpha = saturate((depthBufferDistance - viewDistance) / 0.1f );\n\n\t//\tCockpit glass texture is only grayscale (for saving memory), thus we have to extract alpha component from it.\n\tfloat4 glassTexture = tex2D(CockpitGlassTextureSampler, input.TexCoordAndAlpha.xy);\n\t\n\t//\tCreate alpha from color and then increase it\n\tglassTexture = dot(glassTexture, GlassDirtLevelAlpha);//1.5;//1.2;\n\t\n\t//\tDecrease color of texture, we don't want dirt to be white\n\tglassTexture.xyz *= 0.5;\n\t\n\tfloat4 result;\n\t\n\t//\tApply ambient + sun + near light\n\tresult.xyz = glassTexture * (AmbientColor + input.LightAndSunShadowColor);\n\t\t\n    //\tRetain original alpha, not affected by lights\n    result.w = glassTexture.w * mistAlpha;\n\n\t// Apply fadeint/out blending \n\tresult.w *= input.TexCoordAndAlpha.z;\n\treturn result;\n}\n\n\n\ntechnique GlassDefault\n{\n\tpass Pass0\n\t{\n\t\tVertexShader = compile vs_3_0 VS_GlassDefault();\n\t\tPixelShader = compile ps_3_0 PS_GlassDefault();\n\t}\n}\n\ntechnique GlassForward\n{\n\tpass Pass0\n\t{\n\t\tVertexShader = compile vs_3_0 VS_GlassForward();\n\t\tPixelShader = compile ps_3_0 PS_GlassForward();\n\t}\n}"
  },
  {
    "path": "Effects/HUD/MyHudEffect.fx",
    "content": "#include \"../MyEffectBase.fxh\"\n\nfloat4x4 ProjectionMatrix;\n\nTexture HudTexture;\nsampler HudTextureSampler = sampler_state \n{ \n\ttexture = <HudTexture> ; \n\tmagfilter = LINEAR; \n\tminfilter = LINEAR; \n\tmipfilter = LINEAR; \n\tAddressU = clamp; \n\tAddressV = clamp;\n};\n\nstruct VertexShaderInput\n{\n    float4 Position : POSITION0;\n    float2 TexCoord : TEXCOORD0;\n    float4 Color : COLOR0;\n};\n\nstruct VertexShaderOutput\n{\n    float4 Position : POSITION0;\n    float2 TexCoord : TEXCOORD0;\n    float4 Color : COLOR0;\n};\n\nVertexShaderOutput VertexShaderFunction(VertexShaderInput input)\n{\n    VertexShaderOutput output;\n\n    output.Position = mul(input.Position, ProjectionMatrix);\n    output.TexCoord = input.TexCoord;\n    output.Color = input.Color;\n\n    return output;\n}\n\nfloat4 PixelShaderFunction(VertexShaderOutput input) : COLOR0\n{\n    //return float4(1, 0, 0, 1);\n    \n    return tex2D(HudTextureSampler, input.TexCoord) * input.Color;    \n}\n\ntechnique Technique1\n{\n    pass Pass1\n    {\n        VertexShader = compile vs_2_0 VertexShaderFunction();\n        PixelShader = compile ps_2_0 PixelShaderFunction();\n    }\n}\n"
  },
  {
    "path": "Effects/HUD/MyHudRadarEffect.fx",
    "content": "#include \"../MyEffectBase.fxh\"\n\nfloat4x4\tViewProjectionMatrix;\n\nTexture Texture;\nsampler TextureSampler = sampler_state \n{ \n\ttexture = <Texture> ; \n\tmagfilter = LINEAR; \n\tminfilter = LINEAR; \n\tmipfilter = LINEAR; \n\tAddressU = clamp; \n\tAddressV = clamp;\n};\n\nstruct VertexShaderInput\n{\n    float4 Position : POSITION0;\n    float2 TexCoord : TEXCOORD0;\n    float4 Color : COLOR0;\n};\n\nstruct VertexShaderOutput\n{\n    float4 Position : POSITION0;\n    float2 TexCoord : TEXCOORD0;\n    float4 Color : COLOR0;\n};\n\nVertexShaderOutput VertexShaderFunction(VertexShaderInput input)\n{\n    VertexShaderOutput output;\n\n\t//float4 worldPosition = mul(input.Position, WorldMatrix);\n    //output.Position = mul(worldPosition, ViewProjectionMatrix);\n    \n    output.Position = mul(input.Position, ViewProjectionMatrix);\n    \n    output.TexCoord = input.TexCoord;\n    output.Color = input.Color;\n\n    return output;\n}\n\nfloat4 PixelShaderFunction(VertexShaderOutput input) : COLOR0\n{\n    //return float4(1, 0, 0, 1);\n    \n    return tex2D(TextureSampler, input.TexCoord) * input.Color;    \n    //return tex2D(TextureSampler, input.TexCoord);\n}\n\ntechnique Technique1\n{\n    pass Pass1\n    {\n        VertexShader = compile vs_2_0 VertexShaderFunction();\n        PixelShader = compile ps_2_0 PixelShaderFunction();\n    }\n}\n"
  },
  {
    "path": "Effects/Lights/MyEffectBlendLights.fx",
    "content": "#include \"../MyEffectBase.fxh\"\n\nfloat2 HalfPixel;\nfloat2 Scale;\nfloat3 AmbientColor = float3(0.0f, 0.0f, 0.0f);\n\n//\tTexture contains scene from LOD0\nTexture DiffuseTexture;\nsampler DiffuseTextureSampler = sampler_state \n{ \n\ttexture = <DiffuseTexture> ; \n\tmagfilter = POINT; \n\tminfilter = POINT; \n\tmipfilter = NONE; \n\tAddressU = clamp; \n\tAddressV = clamp;\n};\n\nTexture LightTexture;\nsampler LightTextureSampler = sampler_state \n{ \n\ttexture = <LightTexture> ; \n\tmagfilter = POINT; \n\tminfilter = POINT; \n\tmipfilter = NONE; \n\tAddressU = clamp; \n\tAddressV = clamp;\n};\n\nTexture LightTextureMod;\nsampler LightTextureModSampler = sampler_state \n{ \n\ttexture = <LightTextureMod> ; \n\tmagfilter = POINT; \n\tminfilter = POINT; \n\tmipfilter = NONE; \n\tAddressU = clamp; \n\tAddressV = clamp;\n};\n\nTexture LightTextureDiv;\nsampler LightTextureDivSampler = sampler_state \n{ \n\ttexture = <LightTextureDiv> ; \n\tmagfilter = POINT; \n\tminfilter = POINT; \n\tmipfilter = NONE; \n\tAddressU = clamp; \n\tAddressV = clamp;\n};\n\nTexture DepthTexture;\nsampler DepthTextureSampler = sampler_state \n{ \n\ttexture = <DepthTexture> ; \n\tmagfilter = POINT; \n\tminfilter = POINT; \n\tmipfilter = NONE; \n\tAddressU = clamp; \n\tAddressV = clamp;\n};\n\nTexture NormalsTexture;\nsampler NormalsTextureSampler = sampler_state \n{ \n\ttexture = <NormalsTexture> ; \n\tmagfilter = POINT; \n\tminfilter = POINT; \n\tmipfilter = NONE; \n\tAddressU = clamp; \n\tAddressV = clamp;\n};\n\nTexture BackgroundTexture;\nsampler BackgroundTextureSampler = sampler_state \n{ \n\ttexture = <BackgroundTexture> ; \n\tmagfilter = LINEAR; \n\tminfilter = LINEAR; \n\tmipfilter = NONE; \n\tAddressU = clamp; \n\tAddressV = clamp;\n};\n\n\n\nstruct VertexShaderInput\n{\n\tfloat4 Position : POSITION0;\n\tfloat2 TexCoord : TEXCOORD0;\n};\n\nstruct VertexShaderOutput\n{\n\tfloat4 Position : POSITION0;\n\tfloat2 TexCoord : TEXCOORD0;\n};\n\nVertexShaderOutput VertexShaderFunction(VertexShaderInput input)\n{\n\t//\tWe're using a full screen quad, no need for transforming vertices.\n\tVertexShaderOutput output;\n\toutput.Position = input.Position;\n\toutput.TexCoord = (input.TexCoord + HalfPixel) * Scale;\n\treturn output;\n}\n\nfloat4 PixelShaderFunctionLDR(VertexShaderOutput input) : COLOR0\n{\n\tfloat4 color = tex2D(BackgroundTextureSampler, input.TexCoord);\n\tfloat4 background = color;\n\t//background.xyz = lerp(background.xyz, FogColor.xyz, FogMultiplier);\n//\tbackground.w = 0;\n\n\tfloat3 normal = GetNormalVectorFromRenderTarget(tex2D(NormalsTextureSampler, input.TexCoord).xyz);\n\n\tfloat blend = length(normal);\n\n\tbackground.w = 1 - blend;\n\n\treturn background;\n\t//return float4(color.xyz, 1);\n\t//return float4(blend.xxx, 1);\n\t//return float4(normal.xyz, 1);\n}\n\nfloat4 PixelShaderFunctionDisable(VertexShaderOutput input) : COLOR0\n{\n\tfloat4 diffuseColor = tex2D(DiffuseTextureSampler, input.TexCoord);\n\n\tfloat4 background = tex2D(BackgroundTextureSampler, input.TexCoord);\n\tbackground.w = 0;\n\n\tfloat3 normal = GetNormalVectorFromRenderTarget(tex2D(NormalsTextureSampler, input.TexCoord).xyz);\n\n\tfloat blend = length(normal);\n\n\tfloat4 color = lerp(background, diffuseColor, blend);\n\n\treturn color;\n    //return float4(normal.xyz, 1);\n}\n\nfloat4 PixelShaderFunctionOnlyLights(VertexShaderOutput input) : COLOR0\n{\n\tfloat4 light = tex2D(LightTextureSampler, input.TexCoord);\n    return float4(light.rgb, 1);\n}\n\nfloat4 PixelShaderFunctionOnlySpecularIntensity(VertexShaderOutput input) : COLOR0\n{\n    float4 diffuse = tex2D(DiffuseTextureSampler, input.TexCoord);\n\tfloat specularIntensity = diffuse.a * SPECULAR_INTENSITY_RATIO;\n\n\treturn float4(specularIntensity.xxx, 1);\n}\n\nfloat4 PixelShaderFunctionOnlySpecularPower(VertexShaderOutput input) : COLOR0\n{\n\tfloat4 normal = tex2D(NormalsTextureSampler, input.TexCoord);\n\tfloat specularPower = normal.a;\n\n\treturn float4(specularPower.xxx, 1);\n}\n\nfloat4 PixelShaderFunctionOnlyEmissivity(VertexShaderOutput input) : COLOR0\n{\n\tfloat4 depth = tex2D(DepthTextureSampler, input.TexCoord);\n\tfloat emissivity = UnpackGBufferEmissivity(depth.a);\n\n\treturn float4(emissivity.xxx, 1);\n}\n\nfloat4 PixelShaderFunctionOnlyReflectivity(VertexShaderOutput input) : COLOR0\n{\n\tfloat4 depth = tex2D(DepthTextureSampler, input.TexCoord);\n\tfloat reflectivity = UnpackGBufferReflection(depth.a);\n\n\treturn float4(reflectivity.xxx, 1);\n}\n\nfloat4 PixelShaderFunctionCopyEmissivity(VertexShaderOutput input) : COLOR0\n{\n\t//float4 diffuseColor = tex2D(DiffuseTextureSampler, input.TexCoord);\n\t\n\tfloat4 encodedDepth = tex2D(DepthTextureSampler, input.TexCoord);\n\tfloat4 diffuse = tex2D(DiffuseTextureSampler, input.TexCoord);\n\tfloat4 background = tex2D(BackgroundTextureSampler, input.TexCoord);\n\n\tfloat3 normal = GetNormalVectorFromRenderTarget(tex2D(NormalsTextureSampler, input.TexCoord).xyz);\n\tfloat blend = 1 - length(normal);\n\n\tfloat emissive = UnpackGBufferEmissivity(encodedDepth.w);\n\temissive *= 1 + FogMultiplier * FogMultiplier * blend;\n\treturn float4(diffuse.xyz * emissive.xxx, emissive + background.w * blend * FogBacklightMultiplier);\n\n\t//return float4(1,1,1,0);\n\t\n\t//return float4(diffuse * emissive.xxx, emissive / (1 - FogMultiplier * blend / 4));\n\t//return float4(diffuse * emissive.xxx, emissive + emissive * FogMultiplier * FogMultiplier * blend);\n\t//float4(diffuseColor * emissiveReal.xxx,1)\n}\n\ntechnique BasicTechnique\n{\n\tpass Pass1\n\t{\n\t\tVertexShader = compile vs_3_0 VertexShaderFunction();\n\t\tPixelShader = compile ps_3_0 PixelShaderFunctionLDR();\n\t}\n}\n\ntechnique DisableLightsTechnique\n{\n\tpass Pass1\n\t{\n\t\tVertexShader = compile vs_3_0 VertexShaderFunction();\n\t\tPixelShader = compile ps_3_0 PixelShaderFunctionDisable();\n\t}\n}\n\ntechnique OnlyLightsTechnique\n{\n\tpass Pass1\n\t{\n\t\tVertexShader = compile vs_3_0 VertexShaderFunction();\n\t\tPixelShader = compile ps_3_0 PixelShaderFunctionOnlyLights();\n\t}\n}\n\ntechnique OnlySpecularIntensity\n{\n\tpass Pass1\n\t{\n\t\tVertexShader = compile vs_3_0 VertexShaderFunction();\n\t\tPixelShader = compile ps_3_0 PixelShaderFunctionOnlySpecularIntensity();\n\t}\n}\n\ntechnique OnlySpecularPower\n{\n\tpass Pass1\n\t{\n\t\tVertexShader = compile vs_3_0 VertexShaderFunction();\n\t\tPixelShader = compile ps_3_0 PixelShaderFunctionOnlySpecularPower();\n\t}\n}\n\ntechnique OnlyEmissivity\n{\n\tpass Pass1\n\t{\n\t\tVertexShader = compile vs_3_0 VertexShaderFunction();\n\t\tPixelShader = compile ps_3_0 PixelShaderFunctionOnlyEmissivity();\n\t}\n}\n\ntechnique OnlyReflectivity\n{\n\tpass Pass1\n\t{\n\t\tVertexShader = compile vs_3_0 VertexShaderFunction();\n\t\tPixelShader = compile ps_3_0 PixelShaderFunctionOnlyReflectivity();\n\t}\n}\n\ntechnique CopyEmissivity\n{\n\tpass Pass1\n\t{\n\t\tVertexShader = compile vs_3_0 VertexShaderFunction();\n\t\tPixelShader = compile ps_3_0 PixelShaderFunctionCopyEmissivity();\n\t}\n}"
  },
  {
    "path": "Effects/Lights/MyEffectDirectionalLight.fx",
    "content": "#include \"../MyEffectShadowBase.fxh\"\n\n#define SHADOW_FILTERING 2\n\n\nuniform int EnableCascadeBlending = 1;\nuniform int EnableAmbientEnv = 1;\nuniform int EnableReflectionEnv = 1;\n\n\nfloat4 HalfPixelAndScale;\nfloat4 LightColorAndIntensity;\nfloat4 BacklightColorAndIntensity;\n\nfloat4 AmbientMinimumAndIntensity = float4(0.1f, 0.1f, 0.1f, 0.75f);\n\n\nfloat3 LightDirection;\nfloat TextureEnvironmentBlendFactor;\n\nfloat3 LightSpecularColor;\nfloat NearSlopeBiasDistance;\n\nfloat VoxelReflectionMultiplier = 0.1f;\nfloat3 CameraPosition; \n\n\nfloat2 ShadowHalfPixel;\n\n\nfloat4x4 WorldViewProjMatrix;\nfloat4x4 CameraMatrix;\n\nfloat3 FrustumCorners[4];\n\n\nTexture NormalsRT;\nsampler NormalsRTSampler = sampler_state \n{ \n\ttexture = <NormalsRT> ; \n\tmagfilter = POINT; \n\tminfilter = POINT; \n\tmipfilter = NONE; \n\tAddressU = clamp; \n\tAddressV = clamp;\n};\n\n\nTexture DiffuseRT;\nsampler DiffuseRTSampler = sampler_state \n{ \n\ttexture = <DiffuseRT> ; \n\tmagfilter = POINT; \n\tminfilter = POINT; \n\tmipfilter = NONE; \n\tAddressU = clamp; \n\tAddressV = clamp;\n};\n\nTexture DepthsRT;\nsampler DepthsRTSampler = sampler_state \n{ \n\ttexture = <DepthsRT> ; \n\tmagfilter = POINT; \n\tminfilter = POINT; \n\tmipfilter = NONE; \n\tAddressU = clamp; \n\tAddressV = clamp;\n};\n\nTextureCube TextureEnvironmentMain;\nsampler TextureEnvironmentMainSampler = sampler_state\n{\n\ttexture = <TextureEnvironmentMain>;\n\tminfilter = LINEAR;\n\tmagfilter = LINEAR;\n\tmipfilter = NONE;\n\tAddressU = CLAMP; \n\tAddressV = CLAMP;\n};\n\nTextureCube TextureEnvironmentAux;\nsampler TextureEnvironmentAuxSampler = sampler_state\n{\n\ttexture = <TextureEnvironmentAux>;\n\tminfilter = LINEAR;\n\tmagfilter = LINEAR;\n\tmipfilter = NONE;\n\tAddressU = CLAMP; \n\tAddressV = CLAMP;\n};\n\nTextureCube TextureAmbientMain;\nsampler TextureAmbientMainSampler = sampler_state\n{\n\ttexture = <TextureAmbientMain>;\n\tminfilter = LINEAR;\n\tmagfilter = LINEAR;\n\tmipfilter = NONE;\n\tAddressU = CLAMP; \n\tAddressV = CLAMP;\n};\n\nTextureCube TextureAmbientAux;\nsampler TextureAmbientAuxSampler = sampler_state\n{\n\ttexture = <TextureAmbientAux>;\n\tminfilter = LINEAR;\n\tmagfilter = LINEAR;\n\tmipfilter = NONE;\n\tAddressU = CLAMP; \n\tAddressV = CLAMP;\n};\n\nstruct VertexShaderInput\n{\n\tfloat4 Position : POSITION0;\n\tfloat3 TexCoordAndCornerIndex\t: TEXCOORD0;\n};\n\nstruct VertexShaderOutput\n{\n\tfloat4 Position : POSITION0;\n\tfloat2 TexCoord : TEXCOORD0;\n\tfloat4 ScreenPosition : TEXCOORD1;\n\tfloat3 FrustumCorner : TEXCOORD2; \n};\n\nVertexShaderOutput VertexShaderFunction(VertexShaderInput input)\n{\n\tVertexShaderOutput output;\n\toutput.Position = input.Position;\n\toutput.TexCoord = (input.TexCoordAndCornerIndex.xy + HalfPixelAndScale.xy) * HalfPixelAndScale.zw;\n\toutput.ScreenPosition = input.Position;\n\toutput.FrustumCorner = FrustumCorners[input.TexCoordAndCornerIndex.z];\n\treturn output;\n}\n\n\nstruct CalculatedValues\n{\n\tfloat3 Position;\n\tfloat3 Normal;\n\tfloat3 Specular;\n\tfloat4 Diffuse;\n};\n\nfloat4 SampleAmbientTexture(float3 ambientTexCoord)\n{\n\tfloat4 mainColor = texCUBE(TextureAmbientMainSampler, ambientTexCoord);\n\tfloat4 auxColor = texCUBE(TextureAmbientAuxSampler, ambientTexCoord);\n\treturn lerp(mainColor, auxColor, TextureEnvironmentBlendFactor);\n}\n\nfloat4 SampleEnvironmentTexture(float3 texCoord)\n{\n\tfloat4 mainColor = texCUBE(TextureEnvironmentMainSampler, texCoord);\n\tfloat4 auxColor = texCUBE(TextureEnvironmentAuxSampler, texCoord);\n\tfloat4 blendedColor = lerp(mainColor, auxColor, TextureEnvironmentBlendFactor);\n\treturn blendedColor;\n}\n\nfloat4 CalculateLighting(VertexShaderOutput input, out CalculatedValues values, uniform int shadowsDisabled, uniform int lightingEnabled,float4 screenPos : VPOS) : COLOR0\n{\n\tfloat4 encodedDepth = tex2D(DepthsRTSampler, input.TexCoord);\n\n\tfloat fSceneDepthNorm = DecodeFloatRGBA(encodedDepth);\n\n\t//if, else, discard\n\tif (fSceneDepthNorm >= 0.99999f)\n\t{\n\t\treturn float4(0,0,0,0);\n\t}\n\n\tfloat emissive;\n\tfloat reflection;\n\tUnpackGBufferEmissivityReflection(encodedDepth.w, emissive, reflection);\n\n\t// Get viewspace position\n\tfloat4 vPositionVS = float4(GetViewPositionFromDepth(fSceneDepthNorm, input.FrustumCorner.xyz), 1);\n\n\tfloat4 worldPosition = mul(vPositionVS, CameraMatrix);\n\tvalues.Position = worldPosition.xyz;\n\t\n\tfloat4 normal = tex2D(NormalsRTSampler, input.TexCoord);\n\tfloat specularPower = normal.a * SPECULAR_POWER_RATIO;\n\n\tnormal.xyz = GetNormalVectorFromRenderTarget(normal.xyz);\n\tfloat blend = length(normal.xyz);\n\tnormal.xyz = normalize(normal.xyz);\n\tvalues.Normal = normal.xyz;\n\n\tvalues.Diffuse = tex2D(DiffuseRTSampler, input.TexCoord);\n\n\tfloat specularIntensity = values.Diffuse.a * SPECULAR_INTENSITY_RATIO;\n\t\n\t//compute diffuse light\n\tfloat NdLbase = dot(normal.xyz, LightDirection);\n\tfloat NdL = max(0,NdLbase);\n\tfloat3 diffuseLight = NdL * LightColorAndIntensity.xyz * values.Diffuse.rgb;\n\n\t//compute back diffuse light\n\tfloat backNdL = max(0,-NdLbase);\n\tfloat3 backDiffuseLight = backNdL * BacklightColorAndIntensity.xyz * values.Diffuse.rgb;\n\n\t//reflection vector\n\tfloat3 reflectionVector = -(reflect(LightDirection, normal.xyz));\n\tfloat3 reflectionVectorBack = -(reflect(-LightDirection, normal.xyz));\n\n\t//camera-to-surface vector\n\tfloat3 directionToCamera = normalize(CameraPosition - worldPosition.xyz);\n\n\n\tfloat3 shadows = 0;\n\n\tif (dot(diffuseLight, 1) + specularIntensity > 0)\n\t{\n\t\t//Sun shadows\n\t\tfloat diff = 0;\n\t\tfloat length0 = length(vPositionVS.xyz);\n\t\tfloat bias = (length0 < NearSlopeBiasDistance) ? 20.0f : 1 - NdL; //cockpit\n\n\t\tfloat3 fShadowTerm1 = GetShadowTermFromPosition(vPositionVS, -length0, SHADOW_FILTERING, bias, diff);\n\t\tshadows = fShadowTerm1;\n\n\t\tif (EnableCascadeBlending > 0)\n\t\t{\n\t\t\tfloat blendDiff = length0 * 0.2f;\n\t\t\tfloat testDepth = length0 - blendDiff;\n\t\n\t\t\tfloat3 fShadowTerm2 = GetShadowTermFromPosition(vPositionVS, -testDepth, 0, bias, diff);\n\t\t\tfloat blend = saturate(-diff / blendDiff);\n\t\t\n\t\t\tshadows = lerp(fShadowTerm1, fShadowTerm2, blend);\n\t\t} \n\t}\n\t  /*\n\telse\n\t{\n\t\treturn float4(1,0,0,1);\n\t\tdiscard;\n\t} \t*/\n\n\n\tvalues.Specular = float3(0,0,0);\n\n\tfloat specularLight = 0;\n\tif ((shadows.x + specularIntensity) > 0)\n\t{\n\t\t//compute specular light\n\t\tfloat specularLight = specularIntensity * (reflection > 0 ? 10 : 1) * pow( saturate(dot(reflectionVector, directionToCamera)), specularPower);\n\t\tvalues.Specular = specularLight.xxx * LightSpecularColor * lerp(LightSpecularColor, values.Diffuse.rgb, 0.5);\n\t}\n\n\tfloat backSpecular = specularIntensity * pow( saturate(dot(reflectionVectorBack, directionToCamera)), specularPower) * 0.5f;\n\tbackSpecular = backSpecular.xxx * float3(1,1,1) * lerp(float3(1,1,1), values.Diffuse.rgb, 0.5);\n\n\tfloat3 ambientTexCoord = -normal.xyz;\n\tfloat4 ambientSample = SampleAmbientTexture(ambientTexCoord);\n\tfloat3 ambientColor = AmbientMinimumAndIntensity.w * ambientSample.xyz * EnableAmbientEnv;\n\tfloat3 finalAmbientColor =  max(ambientColor, AmbientMinimumAndIntensity.xyz) * values.Diffuse.rgb;\n\n\tfloat4 lightColor =  float4(((LightColorAndIntensity.w * (diffuseLight + values.Specular))) * max(shadows, shadowsDisabled), 1) * lightingEnabled;\n\tlightColor += float4(finalAmbientColor + BacklightColorAndIntensity.w * (backDiffuseLight + backSpecular) * ambientSample.w, 1);\n\tfloat4 result = lightColor;\n\n\tif ((reflection > 0) && (specularIntensity > 0))\n\t{\n\t\tfloat reflectionCoeficient = saturate(specularIntensity) * max(reflection * 0.8f, VoxelReflectionMultiplier) * EnableReflectionEnv;\n\t\treflectionCoeficient = min(0.5f, reflectionCoeficient); //becase full mirror can get became dark\n\n\t\tfloat3 reflectedEyeDirection = -reflect(-directionToCamera, normal.xyz);\n\t\tfloat4 reflectionColor = SampleEnvironmentTexture(reflectedEyeDirection);\n\n\t\tresult = lerp(lightColor, reflectionColor, reflectionCoeficient);\n\t}\n\n\tresult.a = specularLight; //strength for HDR\n\t\n\t// Alpha must be clamped to ensure proper blending\n\tresult.a = saturate(result.a);\n\treturn blend * result;\n}\n\nfloat4 PSLighting(VertexShaderOutput input, uniform int shadowsDisabled, uniform int lightingEnabled,float4 screenPos : VPOS) : COLOR0\n{\n\tCalculatedValues values;\n\tfloat4 color = CalculateLighting(input, values, shadowsDisabled, lightingEnabled, screenPos);\n\treturn color;\n\t//return float4(1,0,0,1);\n}\n\nfloat4 PixelShaderFunction_SpecularIntensity(VertexShaderOutput input) : COLOR0\n{\n\tfloat2 texCoord = GetScreenSpaceTextureCoord(input.ScreenPosition, HalfPixelAndScale.xy) * HalfPixelAndScale.zw;\n\tfloat4 diffuse = tex2D(DiffuseRTSampler, texCoord);\n\tfloat specularIntensity = diffuse.a * SPECULAR_INTENSITY_RATIO;\n\n\treturn float4(specularIntensity, specularIntensity, specularIntensity, 1);\n}\n\nfloat4 PixelShaderFunction_SpecularPower(VertexShaderOutput input) : COLOR0\n{\n\tfloat2 texCoord = GetScreenSpaceTextureCoord(input.ScreenPosition, HalfPixelAndScale.xy) * HalfPixelAndScale.zw;\n\tfloat4 normal = tex2D(NormalsRTSampler, texCoord);\n\tfloat specularPower = normal.a;\n\n\treturn float4(specularPower, specularPower, specularPower, 1);\n}\n\ntechnique Technique_Lighting\n{\n\tpass Pass1\n\t{\n\t\tVertexShader = compile vs_3_0 VertexShaderFunction();\n\t\tPixelShader = compile ps_3_0 PSLighting(0, 1);\n\t}\n}\n\ntechnique Technique_NoLighting\n{\n\tpass Pass1\n\t{\n\t\tVertexShader = compile vs_3_0 VertexShaderFunction();\n\t\tPixelShader = compile ps_3_0 PSLighting(0, 0);\n\t}\n}\n\ntechnique Technique_LightingWithoutShadows\n{\n\tpass Pass1\n\t{\n\t\tVertexShader = compile vs_3_0 VertexShaderFunction();\n\t\tPixelShader = compile ps_3_0 PSLighting(1, 1);\n\t}\n}\n"
  },
  {
    "path": "Effects/Lights/MyEffectPointLight.fx",
    "content": "#include \"../MyEffectSpotShadowBase.fxh\"\n#include \"../MyEffectReflectorBase.fxh\"\n\n#define SHADOW_FILTERING 3\n\nfloat2 HalfPixel;\nfloat2 Scale;\n\nfloat3 LightPosition;\nfloat LightRadius;\n\nfloat3 LightColor;\nfloat LightIntensity;\n\nfloat3 LightSpecularColor;\nfloat Falloff;\nfloat NearSlopeBiasDistance;\n\n\nfloat4x4 LightViewProjection;\nfloat4x4 WorldViewProjMatrix;\nfloat4x4 ViewProjMatrix;\nfloat4x4 WorldMatrix;\nfloat4x4 ViewMatrix;\n\nTexture NormalsRT;\nsampler NormalsRTSampler = sampler_state \n{ \n\ttexture = <NormalsRT> ; \n\tmagfilter = POINT; \n\tminfilter = POINT; \n\tmipfilter = NONE; \n\tAddressU = clamp; \n\tAddressV = clamp;\n};\n\nTexture DiffuseRT;\nsampler DiffuseRTSampler = sampler_state \n{ \n\ttexture = <DiffuseRT> ; \n\tmagfilter = POINT; \n\tminfilter = POINT; \n\tmipfilter = NONE; \n\tAddressU = clamp; \n\tAddressV = clamp;\n};\n\nTexture DepthsRT;\nsampler DepthsRTSampler = sampler_state \n{ \n\ttexture = <DepthsRT> ; \n\tmagfilter = POINT; \n\tminfilter = POINT; \n\tmipfilter = NONE; \n\tAddressU = clamp; \n\tAddressV = clamp;\n};\n\nstruct VertexShaderInput\n{\n    float4 Position : POSITION0;\n};\n\n\nstruct VertexShaderOutput\n{\n    float4 Position : POSITION0;\n    float4 ScreenPosition : TEXCOORD0;\n\tfloat4 WorldPosition : TEXCOORD1;\n\tfloat4 ViewPosition : TEXCOORD2;\n};\n\nVertexShaderOutput VertexShaderFunction(VertexShaderInput input)\n{\n    VertexShaderOutput output;\n    output.Position = mul(input.Position, WorldViewProjMatrix);\n\toutput.ScreenPosition = output.Position;\n\toutput.WorldPosition = mul(input.Position, WorldMatrix);\n\toutput.ViewPosition = mul(output.WorldPosition, ViewMatrix);\n    return output;\n}\n\nstruct CalculatedWorldValues\n{\n    float3 Position;\n\tfloat3 ViewPosition;\n    float3 ViewDir;\n\tfloat2 TexCoord;\n};\n\nstruct CalculatedColorValues\n{\n\tfloat3 Normal;\n\tfloat3 Specular;\n\tfloat4 Diffuse;\n\tfloat NdL;\n};\n\n//\tCalculate the intensity of the light with exponential falloff\nfloat GetDynamicLightBaseIntensity(float distance, float range, float falloff)\n{\n\treturn 1 - pow(saturate(distance / range), falloff);\n}\n\n//calc, not load\nvoid LoadWorldValues(VertexShaderOutput input, out CalculatedWorldValues values)\n{\n\tvalues.TexCoord = GetScreenSpaceTextureCoord(input.ScreenPosition, HalfPixel) * Scale;\n\n\tfloat4 encodedDepth = tex2D(DepthsRTSampler, values.TexCoord);\n\tfloat depthNormalized = DecodeFloatRGBA(encodedDepth);\n\t\n\t//VS\n\tvalues.ViewDir = input.ViewPosition.xyz / input.ViewPosition.w;\t\n\tvalues.ViewPosition = GetViewPositionFromDepth(depthNormalized, values.ViewDir);\n\n\tfloat4 wPosition = mul(float4(values.ViewPosition,1), InvViewMatrix);\n\twPosition.xyz = wPosition.xyz / wPosition.w;\n\tvalues.Position = wPosition.xyz;\n\n\n}\n\nfloat4 CalculateColorValues(CalculatedWorldValues worldValues, out CalculatedColorValues colorValues, float3 lightVector, float radius, float3 lightColor, float3 specularColor, float intensity, float falloff): COLOR0\n{\n\tfloat4 normal = tex2D(NormalsRTSampler, worldValues.TexCoord);\n\tfloat specularPower = normal.a * SPECULAR_POWER_RATIO;\n\n\n//blend?\n\tnormal.xyz = GetNormalVectorFromRenderTargetNormalized(normal.xyz);\n\tcolorValues.Normal = normal;\n\n    colorValues.Diffuse = tex2D(DiffuseRTSampler, worldValues.TexCoord);\n\n\tfloat specularIntensity = colorValues.Diffuse.a * SPECULAR_INTENSITY_RATIO;\n\n\tfloat attenuation = GetDynamicLightBaseIntensity(length(lightVector), radius, falloff); \n\n\t//if att > 0, int > 0\n\n\tlightVector = normalize(lightVector);\n\n\t//reflection vector\n    float3 reflectionVector = normalize(reflect(-lightVector, normal));\n\n    //camera-to-surface vector\n    float3 directionToCamera = normalize(CameraPosition - worldValues.Position);\n\n    //compute specular light\n    float specularLight = specularIntensity * pow( saturate(dot(reflectionVector, directionToCamera)), specularPower);\n\n\tcolorValues.NdL = max(0,dot(normal,lightVector));\n\n    float3 diffuseLight = colorValues.NdL * lightColor * colorValues.Diffuse.rgb;\n\tcolorValues.Specular = specularLight.xxx * lerp(float3(1,1,1), colorValues.Diffuse.rgb, 0.5);\n\n\treturn float4(attenuation * intensity * (diffuseLight + colorValues.Specular), 1);\n}\n\n\n//what is it for?\nhalf4 CalculateShadow(float3 viewPosition, float NdL, uniform int filterSize, float nearSlopeBiasDistance)\n{\n\t// Spot shadows\n\thalf length0 = length(viewPosition.xyz);\n\thalf bias = 1 - NdL;\n\t//??\n\tif (length0 < nearSlopeBiasDistance) //cockpit\n\t\tbias = 4.0f;\n\treturn half4(GetShadowTermFromPosition(float4(viewPosition, 1), -length0, SHADOW_FILTERING, bias), 1);\n}\n\nfloat4 CalculatePointLighting(VertexShaderOutput input): COLOR0\n{\n\tCalculatedWorldValues values;\n\tLoadWorldValues(input, values);\n\n\tfloat3 lightVector = LightPosition - values.Position;\n\t//test if lit pixel is too far from light\n    if (length(lightVector) > LightRadius)\n    {\n\t\tdiscard;\n\t\t// Adding return could save us precious processing power\n\t\t// http://www.jb101.co.uk/2008/02/14/hlsl-discard-doesnt-return/\n\t\treturn float4(0,0,0,1);\n    }//else\n\n\tCalculatedColorValues colorValues;\n\treturn CalculateColorValues(values, colorValues, lightVector, LightRadius, LightColor, LightSpecularColor, LightIntensity, Falloff);\n}\n\n//duplicity\nfloat4 CalculateReflectorLighting(VertexShaderOutput input): COLOR0\n{\n\tCalculatedWorldValues values;\n\tLoadWorldValues(input, values);\n\n\tfloat3 lightVector = LightPosition - values.Position;\n\t//test if lit pixel is too far from light\n    if (length(lightVector) > LightRadius)\n    {\n\t\tdiscard;\n\t\t// Adding return could save us precious processing power\n\t\t// http://www.jb101.co.uk/2008/02/14/hlsl-discard-doesnt-return/\n\t\treturn float4(0,0,0,1);\n    }//else\n\n\tCalculatedColorValues colorValues;\n\tfloat4 color = CalculateColorValues(values, colorValues, lightVector, LightRadius, LightColor, LightSpecularColor, LightIntensity, Falloff);\n\n\tfloat3 directionToReflector = -values.ViewDir;\n\t //\tReflector - diffuse\n    float reflectorDiffuseMultiplier = saturate(dot(colorValues.Normal, directionToReflector));\n   \n   \tfloat distanceToReflector = GetDistanceToReflector(values.Position);\n\tfloat distanceToReflectorInverted = 1 - saturate(distanceToReflector / ReflectorRange);\n\n\t//\tReflector - attenuation\n    float4 reflectorAttenuation = GetReflectorAttenuation(distanceToReflectorInverted, directionToReflector);       \n\n    //take into account attenuation and lightIntensity.\n\tfloat4 colorRefl = float4(reflectorAttenuation * (ReflectorColor * reflectorDiffuseMultiplier * colorValues.Diffuse.xyz + colorValues.Specular), 1);\n\n\treturn color + colorRefl;\n}\n\nfloat4 CalculateSpotLighting(VertexShaderOutput input, uniform int enableShadows): COLOR0\n{\n\tCalculatedWorldValues values;\n\tLoadWorldValues(input, values);\n\n\tfloat3 lightVector = LightPosition - values.Position;\n\t//test if lit pixel is too far from light\n    if (length(lightVector) > ReflectorRange)\n    {\n\t\tdiscard;\n\t\t// Adding return could save us precious processing power\n\t\t// http://www.jb101.co.uk/2008/02/14/hlsl-discard-doesnt-return/\n\t\treturn float4(0,0,0,1);\n    }\n\n\tfloat SdL = dot(normalize(ReflectorDirection), normalize(-lightVector));\n\tif(SdL < ReflectorConeMaxAngleCos)\n\t{\n\t\tdiscard;\n\t\t// Adding return could save us precious processing power\n\t\t// http://www.jb101.co.uk/2008/02/14/hlsl-discard-doesnt-return/\n\t\treturn float4(0.0f,0.0f,0,1);\n\t}\n\n\tCalculatedColorValues colorValues;\n\tfloat4 color = CalculateColorValues(values, colorValues, lightVector, ReflectorRange, ReflectorColor, LightSpecularColor, ReflectorIntensity, ReflectorFalloff);\n\n\tif(enableShadows)\n\t{\n\t\thalf4 shadow = CalculateShadow(values.ViewPosition, colorValues.NdL, SHADOW_FILTERING, NearSlopeBiasDistance);\n\t\tcolor *= shadow;\n\t}\n\n\t// This makes light fade out when no texture set\n\tfloat spotIntensity = lerp((SdL - ReflectorConeMaxAngleCos) / (1 - ReflectorConeMaxAngleCos), 1.0f, 0);\n\tcolor.xyz *= spotIntensity;\n\n\treturn color;\n}\n\n\nfloat4x4 PerspectiveOffCenter(float left, float right, float bottom, float top, float nearPlaneDistance, float farPlaneDistance)\n{\n\tfloat4x4 m;\n\n\tm._m00 = (2 * nearPlaneDistance) / (right - left);\n\tm._m01_m02_m03 = 0;\n\tm._m11 = (2 * nearPlaneDistance) / (top - bottom);\n\tm._m10_m12_m13 = 0;\n\tm._m20 = (left + right) / (right - left);\n\tm._m21 = (top + bottom) / (top - bottom);\n\tm._m22 = farPlaneDistance / (nearPlaneDistance - farPlaneDistance);\n\tm._m23 = -1;\n\tm._m32 = (nearPlaneDistance * farPlaneDistance) / (nearPlaneDistance - farPlaneDistance);\n\tm._m30_m31_m33 = 0;\n\n\treturn m;\n}\n\n\nfloat4 PSLighting(VertexShaderOutput input) : COLOR0\n{\n\treturn CalculatePointLighting(input);\n}\n\nfloat4 PSLightingWithReflector(VertexShaderOutput input) : COLOR0\n{\n\treturn CalculateReflectorLighting(input);\n}\n\nfloat4 PSLightingSpot(VertexShaderOutput input, uniform int enableShadows) : COLOR0\n{\n\treturn CalculateSpotLighting(input, enableShadows);\n}\n\n// No HDR techniques\ntechnique Technique_Lighting //PointLight\n{\n    pass Pass1\n    {\n\t\tVertexShader = compile vs_3_0 VertexShaderFunction();\n        PixelShader = compile ps_3_0 PSLighting();\n    }\n}\n\n\ntechnique Technique_Spot\n{\n\tpass Pass1\n\t{\n\t\tVertexShader = compile vs_3_0 VertexShaderFunction();\n        PixelShader = compile ps_3_0 PSLightingSpot(0);\n\t}\n}\n\ntechnique Technique_SpotShadows\n{\n\tpass Pass1\n\t{\n\t\tVertexShader = compile vs_3_0 VertexShaderFunction();\n        PixelShader = compile ps_3_0 PSLightingSpot(1);\n\t}\n}\n\ntechnique Technique_LightingWithReflector\n{\n    pass Pass1\n    {\n\t\tVertexShader = compile vs_3_0 VertexShaderFunction();\n        PixelShader = compile ps_3_0 PSLightingWithReflector();\n    }\n}"
  },
  {
    "path": "Effects/Models/MyEffectModelsDNS.fx",
    "content": "\n#include \"../MyEffectDynamicLightingBase.fxh\"\n#include \"../MyEffectReflectorBase.fxh\"\n\n//\tThis shader renders a model with diffuse & specular & normal map textures, so it requires certain vertex shader data\n\n//const float CHANNEL_TEXTURE_SCALE = 40;\n\nfloat4x4\tWorldMatrix;\nfloat4x4\tViewMatrix;\nfloat4x4\tProjectionMatrix;\nfloat3\t    DiffuseColor; \nfloat\t    Emissivity = 0; \nfloat\t    EmissivityOffset = 0; \nfloat2\t    EmissivityUVAnim; \nfloat2\t    DiffuseUVAnim; \nfloat3\t    Highlight = 0; \n\nfloat\t\tSpecularIntensity = 1;\nfloat\t\tSpecularPower = 1;\n\n//float\t\tChannel0Intensity = 0;\n//float\t\tChannel1Intensity = 0;\n//float\t\tChannel2Intensity = 0;\n//float\t\tChannel3Intensity = 0;\n\nfloat2 HalfPixel;\nfloat2 Scale;\n\nTexture TextureDiffuse;\nsampler TextureDiffuseSampler = sampler_state \n{ \n\ttexture = <TextureDiffuse> ; \n\tmipfilter = LINEAR; \n\tAddressU = WRAP; \n\tAddressV = WRAP;\n};\n\nTexture TextureNormal;\nsampler TextureNormalSampler = sampler_state \n{ \n\ttexture = <TextureNormal> ; \n\tmipfilter = LINEAR; \n\tAddressU = WRAP; \n\tAddressV = WRAP;\n};\n\n/*\nTexture TextureMask;\nsampler TextureMaskSampler = sampler_state \n{ \n\ttexture = <TextureMask> ; \n\tmipfilter = LINEAR; \n\tAddressU = WRAP; \n\tAddressV = WRAP;\n};\n\nTexture TextureChannel0;\nsampler TextureChannel0Sampler = sampler_state \n{ \n\ttexture = <TextureChannel0> ; \n\tmipfilter = LINEAR; \n\tAddressU = WRAP; \n\tAddressV = WRAP;\n};\n\nTexture TextureChannel1;\nsampler TextureChannel1Sampler = sampler_state \n{ \n\ttexture = <TextureChannel1> ; \n\tmipfilter = LINEAR; \n\tAddressU = WRAP; \n\tAddressV = WRAP;\n};\n  */\n\n//This sampler is used for HOLO objects\nTexture DepthTextureNear;\nsampler DepthTextureNearSampler = sampler_state \n{ \n\ttexture = <DepthTextureNear>; \n\tmagfilter = POINT; \n\tminfilter = POINT;\n\tmipfilter = NONE; \n\tAddressU = WRAP; \n\tAddressV = WRAP;\n};\n\n//This sampler is used for HOLO objects\nTexture DepthTextureFar;\nsampler DepthTextureFarSampler = sampler_state \n{ \n\ttexture = <DepthTextureFar>; \n\tmagfilter = POINT; \n\tminfilter = POINT;\n\tmipfilter = NONE; \n\tAddressU = WRAP; \n\tAddressV = WRAP;\n};\n\n// DNS low\nstruct VertexShaderInputLow_DNS\n{\n    float4 Position : POSITION0;\n    float4 Normal : NORMAL;\n    float2 TexCoord : TEXCOORD0;\n};\n\nstruct VertexShaderOutputLow_DNS\n{\n    float4 Position : POSITION0;\n    float4 TexCoordAndViewDistance : TEXCOORD0; //z is linear depth, w is radial depth\n\tfloat4 ScreenPosition : TEXCOORD1;\n\tfloat3 Normal : TEXCOORD2;\n\tfloat3 WorldPos : TEXCOORD3;\n};\n\nstruct VertexShaderOutputForward_DNS\n{\n    float4 Position : POSITION0;\n\tfloat4 LightColor : COLOR0;\n    float2 TexCoord : TEXCOORD0;\n\tfloat3 WorldPos : TEXCOORD1;\n};\n\nstruct VertexShaderOutputInstance\n{\n\tfloat4 Diffuse : BLENDWEIGHT0;\n\tfloat4 SpecularIntensity_SpecularPower_Emisivity_None : BLENDWEIGHT1;\n\tfloat3 Highlight : BLENDWEIGHT2;\n};\n\nstruct VertexShaderOutputLow_DNS_Instanced\n{\n\tVertexShaderOutputLow_DNS BaseOutput;\n\tVertexShaderOutputInstance InstanceOutput;\n};\n\n// DNS normal\nstruct VertexShaderInput_DNS\n{\n    VertexShaderInputLow_DNS BaseInput;\n    float4 Tangent : TANGENT;\n    float4 Binormal : BINORMAL;\n};\n\nstruct VertexShaderOutput_DNS\n{\n    VertexShaderOutputLow_DNS BaseOutput;\n    float3x3 TangentToWorld : TEXCOORD5;\n};\n\nstruct VertexShaderOutput_DNS_Instanced\n{\n\tVertexShaderOutput_DNS BaseOutput;\n\tVertexShaderOutputInstance InstanceOutput;\n};\n\t\t  /*\n// Channels normal & higher\nstruct VertexShaderInput_DNS_Channels\n{\n    VertexShaderInput_DNS Input;\n\tfloat2 MaskCoord : TEXCOORD1;\n};\n\nstruct VertexShaderOutput_DNS_Channels\n{\n    VertexShaderOutput_DNS Output;\n\tfloat2 MaskCoord : TEXCOORD8;\n};\n\t\t\t\n// Instance data\nstruct VertexShaderInput_Instance\n{\n\tfloat4 worldMatrixRow0 : BLENDWEIGHT0;\n \tfloat4 worldMatrixRow1 : BLENDWEIGHT1;\n \tfloat4 worldMatrixRow2 : BLENDWEIGHT2;\n \tfloat4 worldMatrixRow3 : BLENDWEIGHT3;\n\tfloat4 diffuse : BLENDWEIGHT4;\n\tfloat4 SpecularIntensity_SpecularPower_Emisivity_None : BLENDWEIGHT5;\n\tfloat3 Highlight : BLENDWEIGHT6;\n};\n\nVertexShaderOutputInstance VertexShaderInstance_Base(VertexShaderInput_Instance instanceData)\n{\n\tVertexShaderOutputInstance output;\n\toutput.Diffuse = instanceData.diffuse;\n\toutput.SpecularIntensity_SpecularPower_Emisivity_None = instanceData.SpecularIntensity_SpecularPower_Emisivity_None;\n\toutput.Highlight = instanceData.Highlight;\n\treturn output;\n}\n\t\t\t*/\n// Low VS\n\nVertexShaderOutputLow_DNS VertexShaderFunctionLow_DNS_Base(VertexShaderInputLow_DNS input, float4x4 world)\n{\n\tVertexShaderOutputLow_DNS output;\n\n\tinput.Position = UnpackPositionAndScale(input.Position);\n\tinput.Normal = UnpackNormal(input.Normal);\n\n\toutput.WorldPos = input.Position;\n\toutput.Position = mul(input.Position, world);\n    output.Position = mul(output.Position, ViewMatrix);\n\toutput.TexCoordAndViewDistance.z = -output.Position.z;\n\toutput.TexCoordAndViewDistance.w = length(output.Position.xyz);\n    output.Position = mul(output.Position, ProjectionMatrix);    \n\toutput.ScreenPosition = output.Position;\n    output.TexCoordAndViewDistance.xy = input.TexCoord;\n\toutput.Normal =  normalize(mul(input.Normal.xyz, (float3x3)world));    \n\n    return output;\n}\n\nVertexShaderOutputLow_DNS VertexShaderFunctionLow_DNS(VertexShaderInputLow_DNS input)\n{\n    return VertexShaderFunctionLow_DNS_Base(input, WorldMatrix);\n}\n/*\nVertexShaderOutputLow_DNS_Instanced VertexShaderFunctionLow_DNS_Instanced(VertexShaderInputLow_DNS input, VertexShaderInput_Instance instanceData)\n{\n\tfloat4x4 instanceWorldMatrix = {instanceData.worldMatrixRow0,\n\t\t\t\t\t\t\t\t\tinstanceData.worldMatrixRow1,\n\t\t\t\t\t\t\t\t\tinstanceData.worldMatrixRow2,\n\t\t\t\t\t\t\t\t\tinstanceData.worldMatrixRow3};\n\n\tVertexShaderOutputLow_DNS_Instanced output;\n    output.BaseOutput = VertexShaderFunctionLow_DNS_Base(input, instanceWorldMatrix);\n\toutput.InstanceOutput = VertexShaderInstance_Base(instanceData);\n\treturn output;\n}\n  */\n// Normal, High, Extreme VS\n\nVertexShaderOutput_DNS VertexShaderFunction_DNS_Base(VertexShaderInput_DNS input, float4x4 world)\n{\n\tVertexShaderOutput_DNS output;\n\n\toutput.BaseOutput = VertexShaderFunctionLow_DNS_Base(input.BaseInput, world);\n\t\n\tinput.Tangent = UnpackNormal(input.Tangent);\n\tinput.Binormal = UnpackNormal(input.Binormal);\n\t\n    output.TangentToWorld[0] = mul(input.Tangent, (float3x3)world);\n    output.TangentToWorld[1] = mul(input.Binormal, (float3x3)world);\n    output.TangentToWorld[2] = output.BaseOutput.Normal;\n\n    return output;\n}\n\nVertexShaderOutput_DNS VertexShaderFunction_DNS(VertexShaderInput_DNS input)\n{\n    return VertexShaderFunction_DNS_Base(input, WorldMatrix);\n}\n/*\nVertexShaderOutput_DNS_Instanced VertexShaderFunction_DNS_Instanced(VertexShaderInput_DNS input, VertexShaderInput_Instance instanceData)\n{\n\tfloat4x4 instanceWorldMatrix = {instanceData.worldMatrixRow0,\n\t\t\t\t\t\t\t\t\tinstanceData.worldMatrixRow1,\n\t\t\t\t\t\t\t\t\tinstanceData.worldMatrixRow2,\n\t\t\t\t\t\t\t\t\tinstanceData.worldMatrixRow3};\n\n\tVertexShaderOutput_DNS_Instanced output;\n\n\toutput.BaseOutput = VertexShaderFunction_DNS_Base(input, instanceWorldMatrix);\n\toutput.InstanceOutput = VertexShaderInstance_Base(instanceData);\n\treturn output;\n} */\n\t\t\t\t\t\t\t  /*\nVertexShaderOutput_DNS_Channels VertexShaderFunction_DNS_Channels(VertexShaderInput_DNS_Channels input)\n{\n\tVertexShaderOutput_DNS_Channels output;\n\toutput.Output = VertexShaderFunction_DNS(input.Input);\n\toutput.MaskCoord = input.MaskCoord;\n\treturn output;\n}\t\t\t\t\t\t\t\t*/\n\nVertexShaderOutputForward_DNS VertexShaderFunctionLow_DNS_Forward(VertexShaderInputLow_DNS input)\n{\n\tVertexShaderOutputForward_DNS output = (VertexShaderOutputForward_DNS)0;\n\n\tfloat4 worldPos = mul(input.Position, WorldMatrix);\n\toutput.WorldPos = worldPos.xyz;\n\tfloat4 viewPos = mul(worldPos, ViewMatrix);\n\toutput.Position = mul(viewPos, ProjectionMatrix);\n    output.TexCoord = input.TexCoord;\n\n\t// Lighting\t\n\tfloat4 lightColor = CalculateDynamicLight_Diffuse(worldPos, input.Normal);\n\toutput.LightColor = lightColor;\n\n\treturn output;\n}\n\n\n\nfloat4 PixelShaderFunctionLow_DNS_Forward(VertexShaderOutputForward_DNS input) : COLOR0\n{\n//return float4(1,1,1,1);\n\t/*if (IsPixelCut(input.ViewDistance))\n\t{\n\t\tdiscard;\n\t\treturn float4(1,1,1,1);\n\t}*/\n\n\tfloat4 diffuseTexture = tex2D(TextureDiffuseSampler, input.TexCoord);\n\n\tfloat3 diffuse = diffuseTexture.xyz * DiffuseColor.xyz;\n\n\tfloat emissivity = 1 - diffuseTexture.w;\n\n\tfloat4 color = float4(diffuse*AmbientColor + diffuse* (emissivity + input.LightColor /*+ GetSunColor(input.Normal) */ + GetReflectorColor(input.WorldPos)) + Highlight, 1);\n\t//color = float4(1,1,1,1);\n\treturn color;\n}\n\nMyGbufferPixelShaderOutput CalculateOutput(VertexShaderOutputLow_DNS input, float3 normal, float specularIntensity, float3 diffuseColor, float3 si_sp_e, float3 highlight)\n{\n\t//To check normals from vertices\n\t//normal.xyz = normalize(input.TangentToWorld[2]);    \n\t//float3 diffusec = GetNormalVectorIntoRenderTarget(normalize(input.TangentToWorld[1]));\n\n\tfloat4 diffuseTexture = tex2D(TextureDiffuseSampler, input.TexCoordAndViewDistance.xy);\n\n\tfloat3 diffuse = diffuseTexture.xyz * diffuseColor.xyz;\n\t//float fogBlend = (input.TexCoordAndViewDistance.z - FogDistanceNear) / (FogDistanceFar - FogDistanceNear);\n\t//diffuse = lerp(diffuse, FogColor, saturate(fogBlend) * FogMultiplier);\n\n\t//\tOutput into MRT\n\tMyGbufferPixelShaderOutput output = GetGbufferPixelShaderOutput(normal.xyz,  diffuse + highlight, \n\tspecularIntensity * si_sp_e.x / SPECULAR_INTENSITY_RATIO, si_sp_e.y / SPECULAR_POWER_RATIO, input.TexCoordAndViewDistance.z);\n\n\t//inverted emissivity, reflection by specular intensity\n\toutput.DepthAndEmissivity.a = PackGBufferEmissivityReflection((1 - diffuseTexture.w) + (si_sp_e.z + length(highlight)), 1.0f);\n\treturn output;\n}\n\n// Low PS\n\nMyGbufferPixelShaderOutput PixelShaderFunctionLow_DNS_Base(VertexShaderOutputLow_DNS input, float3 diffuse, float3 si_sp_e, float3 highlight)\n{\n\treturn CalculateOutput(input, input.Normal, 1, diffuse, si_sp_e, highlight);\n}\n\nMyGbufferPixelShaderOutput PixelShaderFunctionLow_DNS(VertexShaderOutputLow_DNS input)\n{\n    return PixelShaderFunctionLow_DNS_Base(input, DiffuseColor, float3(SpecularIntensity, SpecularPower, Emissivity), Highlight);\n}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   /*\nMyGbufferPixelShaderOutput PixelShaderFunctionLow_DNS_Instanced(VertexShaderOutputLow_DNS_Instanced input)\n{\n\tfloat3 si_sp_e = input.InstanceOutput.SpecularIntensity_SpecularPower_Emisivity_None.xyz;\n\treturn PixelShaderFunctionLow_DNS_Base(input.BaseOutput, input.InstanceOutput.Diffuse, si_sp_e, input.InstanceOutput.Highlight);\n}\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t */\n\n// Normal, High, Extreme PS\n\nMyGbufferPixelShaderOutput PixelShaderFunction_DNS_Base(VertexShaderOutput_DNS input, float3 diffuse, float3 si_sp_e, float3 highlight)\n{\n\tfloat4 diffuseTexture = tex2D(TextureDiffuseSampler, input.BaseOutput.TexCoordAndViewDistance.xy);\n\n\tinput.TangentToWorld[0] = normalize(input.TangentToWorld[0]);\n\tinput.TangentToWorld[1] = normalize(input.TangentToWorld[1]);\n\tinput.TangentToWorld[2] = normalize(input.TangentToWorld[2]);\n    \n\tfloat4 encodedNormal = tex2D(TextureNormalSampler, input.BaseOutput.TexCoordAndViewDistance.xy);\n    float3 normal = GetNormalVectorFromDDS(encodedNormal);\n    normal.xyz = normalize(mul(normal.xyz, input.TangentToWorld));    \n\n\t//float specularIntensity = encodedNormal.x; //swizzled x and w\n\tfloat specularIntensity = encodedNormal.w; //non-swizzled x and w\n\t\n\treturn CalculateOutput(input.BaseOutput, normal, specularIntensity, diffuse, si_sp_e, highlight);\n}\n\nMyGbufferPixelShaderOutput PixelShaderFunction_DNS(VertexShaderOutput_DNS input)\n{\n    //Cut pixels from LOD1 which are before LodNear\n\t/*if (input.BaseOutput.TexCoordAndViewDistance.w < LodCut)\n\t{\n\t\tdiscard;\n\t\treturn (MyGbufferPixelShaderOutput)0;\n\t\t//return PixelShaderFunction_Base(input, float4(1,0,0,1), Highlight, float3(SpecularIntensity, SpecularPower, 0), renderQuality);\n\t}\n\telse*/\n\tif (IsPixelCut(input.BaseOutput.TexCoordAndViewDistance.w))\n\t{\n\t\tdiscard;\n\t\treturn (MyGbufferPixelShaderOutput)0;\n\t}\n\telse\n\t{\n\t\treturn PixelShaderFunction_DNS_Base(input, DiffuseColor, float3(SpecularIntensity, SpecularPower, Emissivity), Highlight);\n\t}\n}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t/*\nMyGbufferPixelShaderOutput PixelShaderFunction_DNS_Instanced(VertexShaderOutput_DNS_Instanced input)\n{\n\tfloat3 si_sp_e = input.InstanceOutput.SpecularIntensity_SpecularPower_Emisivity_None.xyz;\n\treturn PixelShaderFunction_DNS_Base(input.BaseOutput, input.InstanceOutput.Diffuse, si_sp_e, input.InstanceOutput.Highlight);\n}\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t  */\n\t\t\t\t /*\n// Rounds normal, return vector where most significant component is 1, others are 0\nfloat3 RoundNormal(float3 normal)\n{\n\tnormal = abs(normal);\n\n\tfloat3 normalShift = float3(normal.z, normal.x, normal.y);\n\tfloat3 normalStep = step(normal, normalShift); // return 1 where shift is more\n\treturn float3(normalStep.y * (1 - normalStep.x), normalStep.z * (1 - normalStep.y), normalStep.x * (1 - normalStep.z));\n}\n\t\t\t\t \nfloat4 AddChannels(float4 diffuseAndSpecular, float2 maskCoord, float3 worldPos, float3 normal)\n{\n\tworldPos /= CHANNEL_TEXTURE_SCALE;\n\t\n\tnormal = RoundNormal(normal);\n\tfloat2 chanCoord = normal.x * worldPos.zy + normal.y * worldPos.xz + normal.z * worldPos.xy;\n\tfloat4 mask = tex2D(TextureMaskSampler, maskCoord);\n\n\tfloat4 chan0 = float4(0,0,0,1) * (1 - mask.x);\n\tfloat4 chan1 = tex2D(TextureChannel1Sampler, chanCoord) * (1 - mask.x);\n\n\tchan0.a *= Channel0Intensity;\n\tchan1.a *= Channel1Intensity;\n\n\t// Channel 1 is on the top of channel 0\n\tfloat4 blend;\n\tblend.rgb = lerp(chan0.rgb, chan1.rgb, chan1.a);\n\n\t// Combine alpha, example: 0.6 & 0.6 = 0.84\n\tblend.a = (1 - (1 - chan0.a) * (1 - chan1.a));\n\n\tfloat power = 3;\n\tfloat v = saturate((blend.a) + 0.5f - pow(0.5f, power));\n\tfloat lerpCoef = pow(v, power);\n\n\tfloat4 res = lerp(diffuseAndSpecular, float4(blend.rgb, diffuseAndSpecular.a * 0.25f), lerpCoef); //we blend to zero spec\n\treturn res;\n\t\n}\n\nMyGbufferPixelShaderOutput PixelShaderFunction_DNS_Channels(VertexShaderOutput_DNS_Channels input)\n{\n\tMyGbufferPixelShaderOutput output = PixelShaderFunction_DNS(input.Output);\n\toutput.DiffuseAndSpecIntensity =  AddChannels(output.DiffuseAndSpecIntensity.rgba * float4(DiffuseColor.xyz, 1) , input.MaskCoord, input.Output.BaseOutput.WorldPos, input.Output.BaseOutput.Normal);\n\treturn output;\n}\n\t\t\t\t   */\nMyGbufferPixelShaderOutput CalculateValuesBlended(VertexShaderOutputLow_DNS input, float4 normal)\n{\n\tfloat4 diffuseTexture = tex2D(TextureDiffuseSampler, input.TexCoordAndViewDistance.xy);\n  \n\tfloat4 diffuseColor = float4(diffuseTexture.xyz * DiffuseColor.xyz + Highlight, diffuseTexture.a);\n\n\tfloat emissivity = (1 - normal.w) + (Emissivity + length(Highlight));\n\n\t//diffuseColor = float4(1,1,0,1);\n\n\t//\tOutput into MRT\n\tMyGbufferPixelShaderOutput output = GetGbufferPixelShaderOutputBlended(float4(normal.xyz, diffuseColor.a), diffuseColor, emissivity, 1.0f);\t\n\toutput.DepthAndEmissivity.a = PackGBufferEmissivityReflection(emissivity, 1.0f);\n\treturn output;\n}\n\nMyGbufferPixelShaderOutput PixelShaderFunctionLow_DNS_Blended(VertexShaderOutputLow_DNS input)\n{\n\tfloat4 normal = GetNormalVectorFromRenderTarget(tex2D(TextureNormalSampler, input.TexCoordAndViewDistance.xy));\n\tnormal.xyz = input.Normal;\n\tnormal.w = 0;\n\treturn CalculateValuesBlended(input, normal);\n}\n\n\nMyGbufferPixelShaderOutput PixelShaderFunction_DNS_Blended(VertexShaderOutput_DNS input)\n{\n\tfloat4 diffuseTexture = tex2D(TextureDiffuseSampler, input.BaseOutput.TexCoordAndViewDistance.xy);\n\n\tinput.TangentToWorld[0] = normalize(input.TangentToWorld[0]);\n\tinput.TangentToWorld[1] = normalize(input.TangentToWorld[1]);\n\tinput.TangentToWorld[2] = normalize(input.TangentToWorld[2]);\n    \n    float4 normal = GetNormalVectorFromRenderTarget(tex2D(TextureNormalSampler, input.BaseOutput.TexCoordAndViewDistance.xy));\n    normal.xyz = normalize(mul(normal.xyz, input.TangentToWorld));    \n    \n\treturn CalculateValuesBlended(input.BaseOutput, normal);\n}\n\nMyGbufferPixelShaderOutput CalculateOutputHolo(VertexShaderOutputLow_DNS input, float4 normal)\n{\t\n\tfloat4 diffuseTexture = tex2D(TextureDiffuseSampler, input.TexCoordAndViewDistance.xy + EmissivityOffset * DiffuseUVAnim);\n    float emissivity2 = 1 - tex2D(TextureNormalSampler, input.TexCoordAndViewDistance.xy + EmissivityOffset * EmissivityUVAnim).w;\n\n\tfloat4 diffuseColor = float4(diffuseTexture.xyz * DiffuseColor.xyz + Highlight, diffuseTexture.a);\n\t\t\t\t\t \n\tfloat emissivity = emissivity2 * diffuseTexture.a + (length(Highlight));\n\t\n\t//diffuseColor = float4(1,0,1,1);\n\n\t//\tOutput into MRT\n\tMyGbufferPixelShaderOutput output = GetGbufferPixelShaderOutputBlended(float4(normal.xyz, diffuseColor.a), diffuseColor, emissivity, 1.0f);\n\treturn output; \n}\n\n\nfloat4 PixelShaderFunction_Holo_Forward(VertexShaderOutputForward_DNS input) : COLOR\n{\n\tfloat4 diffuseTexture = tex2D(TextureDiffuseSampler, input.TexCoord);\n    \n\tfloat4 diffuseColor = float4(diffuseTexture.xyz * DiffuseColor.xyz + Highlight, diffuseTexture.a);\n\t\t\t\t\t \n\tfloat emissivity = 0.5f;\n\n\tfloat4 color = diffuseTexture;\n\n\treturn color; \n}\n\nMyGbufferPixelShaderOutput PixelShaderFunction_Holo(VertexShaderOutput_DNS input)\n{\n\tfloat2 texCoord = GetScreenSpaceTextureCoord(input.BaseOutput.ScreenPosition, HalfPixel) * Scale;\n\t/*float nearDepth = DecodeFloatRGBA(tex2D(DepthTextureNearSampler, texCoord));\n\tfloat farDepth = DecodeFloatRGBA(tex2D(DepthTextureFarSampler, texCoord));\n\n\tfloat depth = min(nearDepth, farDepth) * FAR_PLANE_DISTANCE;\n\tif (depth + 0.01f < input.BaseOutput.TexCoordAndViewDistance.z)\n\t\tdiscard;*/\n\n\tfloat4 diffuseTexture = tex2D(TextureDiffuseSampler, input.BaseOutput.TexCoordAndViewDistance.xy);\n\n\t\n\tinput.TangentToWorld[0] = normalize(input.TangentToWorld[0]);\n\tinput.TangentToWorld[1] = normalize(input.TangentToWorld[1]);\n\tinput.TangentToWorld[2] = normalize(input.TangentToWorld[2]);\n    \n    float4 normal = GetNormalVectorFromRenderTarget(tex2D(TextureNormalSampler, input.BaseOutput.TexCoordAndViewDistance.xy));\n    normal.xyz = normalize(mul(normal.xyz, input.TangentToWorld));    \n    \t\t\t\t\t\t\t  \n\treturn CalculateOutputHolo(input.BaseOutput, normal);\n}\n\nMyGbufferPixelShaderOutput PixelShaderFunction_Holo_IgnoreDepth(VertexShaderOutput_DNS input)\n{\n\tfloat4 diffuseTexture = tex2D(TextureDiffuseSampler, input.BaseOutput.TexCoordAndViewDistance.xy);\n\n\tinput.TangentToWorld[0] = normalize(input.TangentToWorld[0]);\n\tinput.TangentToWorld[1] = normalize(input.TangentToWorld[1]);\n\tinput.TangentToWorld[2] = normalize(input.TangentToWorld[2]);\n    \n    float4 normal = GetNormalVectorFromRenderTarget(tex2D(TextureNormalSampler, input.BaseOutput.TexCoordAndViewDistance.xy));\n    normal.xyz = normalize(mul(normal.xyz, input.TangentToWorld));    \n    \t\t\t\t\t\t\t  \n\treturn CalculateOutputHolo(input.BaseOutput, normal);\n}\n\n\nMyGbufferPixelShaderOutput PixelShaderFunction_DNS_Masked(VertexShaderOutput_DNS input)\n{\n\tfloat4 diffuseTexture = tex2D(TextureDiffuseSampler, input.BaseOutput.TexCoordAndViewDistance.xy);\n\n\tif (diffuseTexture.a == 0)\n\t\tdiscard;\n\n    return PixelShaderFunction_DNS(input);\n}\n\nfloat4 PixelShaderFunction_DNS_LowMasked(VertexShaderOutputForward_DNS input) : COLOR\n{\n\tfloat4 diffuseTexture = tex2D(TextureDiffuseSampler, input.TexCoord);\n    \n\tif (diffuseTexture.a == 0)\n\t\tdiscard;\n\n\tfloat4 color = diffuseTexture;\n\n\treturn color; \n}\n\nMyGbufferPixelShaderOutput PixelShaderFunction_Stencil(VertexShaderOutput_DNS input)\n{\n\treturn GetGbufferPixelShaderOutput(float3(0,0,0), float3(0,0,0), input.BaseOutput.TexCoordAndViewDistance.z);\n}\n\nMyGbufferPixelShaderOutput PixelShaderFunction_Stencil_Low(VertexShaderOutputLow_DNS input)\n{\n\treturn GetGbufferPixelShaderOutput(float3(0,0,0), float3(0,0,0), input.TexCoordAndViewDistance.z);\n}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t/*\nMyGbufferPixelShaderOutput PixelShaderFunction_Stencil_Instanced(VertexShaderOutput_DNS_Instanced input)\n{\n\treturn GetGbufferPixelShaderOutput(float3(0,0,0), float3(0,0,0), input.BaseOutput.BaseOutput.TexCoordAndViewDistance.z);\n}\n\nMyGbufferPixelShaderOutput PixelShaderFunction_Stencil_Low_Instanced(VertexShaderOutputLow_DNS_Instanced input)\n{\n\treturn GetGbufferPixelShaderOutput(float3(0,0,0), float3(0,0,0), input.BaseOutput.TexCoordAndViewDistance.z);\n}\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t  */\n\ntechnique Technique_RenderQualityLow_Forward\n{\n\tpass Pass1\n\t{\n\t\tMinFilter[0] = LINEAR; \n\t\tMagFilter[0] = LINEAR; \n\n\t\tMinFilter[1] = LINEAR; \n\t\tMagFilter[1] = LINEAR; \n\n\t\tMinFilter[2] = LINEAR; \n\t\tMagFilter[2] = LINEAR; \n\n\t\tVertexShader = compile vs_2_0 VertexShaderFunctionLow_DNS_Forward();\n\t\tPixelShader = compile ps_2_0 PixelShaderFunctionLow_DNS_Forward();\n\t}\n}\n\ntechnique Technique_RenderQualityLow\n{\n    pass Pass1\n    {\n        MinFilter[0] = LINEAR; \n        MagFilter[0] = LINEAR; \n\n        MinFilter[1] = LINEAR; \n        MagFilter[1] = LINEAR; \n\n        MinFilter[2] = LINEAR; \n        MagFilter[2] = LINEAR; \n\n        VertexShader = compile vs_3_0 VertexShaderFunctionLow_DNS();\n        PixelShader = compile ps_3_0 PixelShaderFunctionLow_DNS();\n    }\n}\n\ntechnique Technique_RenderQualityNormal\n{\n    pass Pass1\n    {\n        MinFilter[0] = LINEAR; \n        MagFilter[0] = LINEAR; \n\n        MinFilter[1] = LINEAR; \n        MagFilter[1] = LINEAR; \n\n        MinFilter[2] = LINEAR; \n        MagFilter[2] = LINEAR; \n\n        VertexShader = compile vs_3_0 VertexShaderFunction_DNS();\n        PixelShader = compile ps_3_0 PixelShaderFunction_DNS();\n    }\n}\n\ntechnique Technique_RenderQualityHigh\n{\n    pass Pass1\n    {\n        MinFilter[0] = LINEAR; \n        MagFilter[0] = LINEAR; \n\n        MinFilter[1] = LINEAR; \n        MagFilter[1] = LINEAR; \n\n        MinFilter[2] = LINEAR; \n        MagFilter[2] = LINEAR; \n\t\t\n        VertexShader = compile vs_3_0 VertexShaderFunction_DNS();\n        PixelShader = compile ps_3_0 PixelShaderFunction_DNS();\n    }\n}\n\ntechnique Technique_RenderQualityExtreme\n{\n    pass Pass1\n    {\n        MinFilter[0] = ANISOTROPIC; \n        MagFilter[0] = ANISOTROPIC; \n        MaxAnisotropy[0] = 16;\n\n        MinFilter[1] = ANISOTROPIC; \n        MagFilter[1] = ANISOTROPIC; \n        MaxAnisotropy[1] = 16;\n\n        MinFilter[2] = ANISOTROPIC; \n        MagFilter[2] = ANISOTROPIC; \n        MaxAnisotropy[2] = 16;\n\n        VertexShader = compile vs_3_0 VertexShaderFunction_DNS();\n        PixelShader = compile ps_3_0 PixelShaderFunction_DNS();\n    }\n}\n\ntechnique Technique_Holo\n{\n    pass Pass1\n    {\n        MinFilter[0] = LINEAR; \n        MagFilter[0] = LINEAR; \n\n        MinFilter[1] = LINEAR; \n        MagFilter[1] = LINEAR; \n\n        MinFilter[2] = LINEAR; \n        MagFilter[2] = LINEAR; \n\n        VertexShader = compile vs_3_0 VertexShaderFunction_DNS();\n        PixelShader = compile ps_3_0 PixelShaderFunction_Holo();\n    }\n}\n\ntechnique Technique_Holo_IgnoreDepth\n{\n    pass Pass1\n    {\n        MinFilter[0] = LINEAR; \n        MagFilter[0] = LINEAR; \n\n        MinFilter[1] = LINEAR; \n        MagFilter[1] = LINEAR; \n\n        MinFilter[2] = LINEAR; \n        MagFilter[2] = LINEAR; \n\n        VertexShader = compile vs_3_0 VertexShaderFunction_DNS();\n        PixelShader = compile ps_3_0 PixelShaderFunction_Holo_IgnoreDepth();\n    }\n}\n\ntechnique Technique_HoloForward\n{\n    pass Pass1\n    {\n        MinFilter[0] = LINEAR; \n        MagFilter[0] = LINEAR; \n\n        MinFilter[1] = LINEAR; \n        MagFilter[1] = LINEAR; \n\n        MinFilter[2] = LINEAR; \n        MagFilter[2] = LINEAR; \n        \n        VertexShader = compile vs_2_0 VertexShaderFunctionLow_DNS_Forward();\n        PixelShader = compile ps_2_0 PixelShaderFunction_Holo_Forward();\n    }\n}\ntechnique Technique_Stencil\n{\n    pass Pass1\n    {\n        MinFilter[0] = LINEAR; \n        MagFilter[0] = LINEAR; \n\n        MinFilter[1] = LINEAR; \n        MagFilter[1] = LINEAR; \n\n        MinFilter[2] = LINEAR; \n        MagFilter[2] = LINEAR; \n\n        VertexShader = compile vs_3_0 VertexShaderFunction_DNS();\n        PixelShader = compile ps_3_0 PixelShaderFunction_Stencil();\n    }\n}\n\t\t\t \t\ntechnique Technique_StencilLow\n{\n    pass Pass1\n    {\n        MinFilter[0] = LINEAR; \n        MagFilter[0] = LINEAR; \n\n        MinFilter[1] = LINEAR; \n        MagFilter[1] = LINEAR; \n\n        MinFilter[2] = LINEAR; \n        MagFilter[2] = LINEAR; \n        \n        VertexShader = compile vs_3_0 VertexShaderFunctionLow_DNS();\n        PixelShader = compile ps_3_0 PixelShaderFunction_Stencil_Low();\n    }\n}\t \t\ntechnique Technique_RenderQualityLowBlended_Forward\n{\n\tpass Pass1\n\t{\n\t\tMinFilter[0] = LINEAR; \n\t\tMagFilter[0] = LINEAR; \n\n\t\tMinFilter[1] = LINEAR; \n\t\tMagFilter[1] = LINEAR; \n\n\t\tMinFilter[2] = LINEAR; \n\t\tMagFilter[2] = LINEAR; \n\n\t\tVertexShader = compile vs_3_0 VertexShaderFunctionLow_DNS_Forward();\n\t\tPixelShader = compile ps_3_0 PixelShaderFunctionLow_DNS_Forward();\n\t}\n}\n\ntechnique Technique_RenderQualityNormalBlended\n{\n    pass Pass1\n    {\n        MinFilter[0] = LINEAR; \n        MagFilter[0] = LINEAR; \n\n        MinFilter[1] = LINEAR; \n        MagFilter[1] = LINEAR; \n\n        MinFilter[2] = LINEAR; \n        MagFilter[2] = LINEAR; \n\n        VertexShader = compile vs_3_0 VertexShaderFunction_DNS();\n        PixelShader = compile ps_3_0 PixelShaderFunction_DNS_Blended();\n    }\n}\n\ntechnique Technique_RenderQualityHighBlended\n{\n    pass Pass1\n    {\n        MinFilter[0] = LINEAR; \n        MagFilter[0] = LINEAR; \n\n        MinFilter[1] = LINEAR; \n        MagFilter[1] = LINEAR; \n\n        MinFilter[2] = LINEAR; \n        MagFilter[2] = LINEAR; \n\n        VertexShader = compile vs_3_0 VertexShaderFunction_DNS();\n        PixelShader = compile ps_3_0 PixelShaderFunction_DNS_Blended();\n    }\n}\n\ntechnique Technique_RenderQualityExtremeBlended\n{\n    pass Pass1\n    {\n        MinFilter[0] = ANISOTROPIC; \n        MagFilter[0] = ANISOTROPIC; \n        MaxAnisotropy[0] = 16;\n\n        MinFilter[1] = ANISOTROPIC; \n        MagFilter[1] = ANISOTROPIC; \n        MaxAnisotropy[1] = 16;\n\n        MinFilter[2] = ANISOTROPIC; \n        MagFilter[2] = ANISOTROPIC; \n        MaxAnisotropy[2] = 16;\n\n        VertexShader = compile vs_3_0 VertexShaderFunction_DNS();\n        PixelShader = compile ps_3_0 PixelShaderFunction_DNS_Blended();\n    }\n}\n\n\ntechnique Technique_RenderQualityLowMasked\n{\n    pass Pass1\n    {\n        MinFilter[0] = LINEAR; \n        MagFilter[0] = LINEAR; \n\n        MinFilter[1] = LINEAR; \n        MagFilter[1] = LINEAR; \n\n        MinFilter[2] = LINEAR; \n        MagFilter[2] = LINEAR; \n\n        VertexShader = compile vs_3_0 VertexShaderFunctionLow_DNS();\n        PixelShader = compile ps_3_0 PixelShaderFunction_DNS_LowMasked();\n    }\n}\n\ntechnique Technique_RenderQualityNormalMasked\n{\n    pass Pass1\n    {\n        MinFilter[0] = LINEAR; \n        MagFilter[0] = LINEAR; \n\n        MinFilter[1] = LINEAR; \n        MagFilter[1] = LINEAR; \n\n        MinFilter[2] = LINEAR; \n        MagFilter[2] = LINEAR; \n\n        VertexShader = compile vs_3_0 VertexShaderFunction_DNS();\n        PixelShader = compile ps_3_0 PixelShaderFunction_DNS_Masked();\n    }\n}\n\ntechnique Technique_RenderQualityHighMasked\n{\n    pass Pass1\n    {\n        MinFilter[0] = LINEAR; \n        MagFilter[0] = LINEAR; \n\n        MinFilter[1] = LINEAR; \n        MagFilter[1] = LINEAR; \n\n        MinFilter[2] = LINEAR; \n        MagFilter[2] = LINEAR; \n\n        VertexShader = compile vs_3_0 VertexShaderFunction_DNS();\n        PixelShader = compile ps_3_0 PixelShaderFunction_DNS_Masked();\n    }\n}\n\ntechnique Technique_RenderQualityExtremeMasked\n{\n    pass Pass1\n    {\n        MinFilter[0] = ANISOTROPIC; \n        MagFilter[0] = ANISOTROPIC; \n        MaxAnisotropy[0] = 16;\n\n        MinFilter[1] = ANISOTROPIC; \n        MagFilter[1] = ANISOTROPIC; \n        MaxAnisotropy[1] = 16;\n\n        MinFilter[2] = ANISOTROPIC; \n        MagFilter[2] = ANISOTROPIC; \n        MaxAnisotropy[2] = 16;\n\n        VertexShader = compile vs_3_0 VertexShaderFunction_DNS();\n        PixelShader = compile ps_3_0 PixelShaderFunction_DNS_Masked();\n    }\n}\n\t\t"
  },
  {
    "path": "Effects/Models/MyEffectModelsDiffuse.fx",
    "content": "#include \"../MyEffectBase.fxh\"\n\n//\tThis shader renders a model with diffuse & specular & normal map textures, so it requires certain vertex shader data\n\nfloat4x4\tWorldMatrix;\nfloat4x4\tViewMatrix;\nfloat4x4\tProjectionMatrix;\nfloat4\t    DiffuseColor = float4(1,1,1,1); \n\nstruct VertexShaderInputPositionColor\n{\n    float4 Position : POSITION0;\n\tfloat4 Color : COLOR0;\n};\n\nstruct VertexShaderOutputPositionColor\n{\n    float4 Position : POSITION0;\n    float4 Color : COLOR0;\n};\n\nstruct VertexShaderInputPosition\n{\n    float4 Position : POSITION0;\n};\n\nstruct VertexShaderOutputPosition\n{\n    float4 Position : POSITION0;\n};\n\n\nVertexShaderOutputPositionColor VertexShaderFunction1(VertexShaderInputPositionColor input)\n{\n    VertexShaderOutputPositionColor output;\n\n\toutput.Position = mul(input.Position, WorldMatrix);\n    output.Position = mul(output.Position, ViewMatrix);\n    output.Position = mul(output.Position, ProjectionMatrix);    \n    output.Color = input.Color;\n    return output;\n}\n\nfloat4 PixelShaderFunction1(VertexShaderOutputPositionColor input) : COLOR0\n{\n\treturn input.Color * DiffuseColor;\n}\n\nVertexShaderOutputPosition VertexShaderFunction2(VertexShaderInputPosition input)\n{\n    VertexShaderOutputPosition output;\n\n\toutput.Position = mul(input.Position, WorldMatrix);\n    output.Position = mul(output.Position, ViewMatrix);\n    output.Position = mul(output.Position, ProjectionMatrix);    \n    return output;\n}\n\nfloat4 PixelShaderFunction2(VertexShaderOutputPosition input) : COLOR0\n{\n\treturn DiffuseColor.xyzw;\n}\n\n\ntechnique Technique_PositionColor\n{\n    pass Pass1\n    {\n        VertexShader = compile vs_3_0 VertexShaderFunction1();\n        PixelShader = compile ps_3_0 PixelShaderFunction1();\n    }\n}\n\ntechnique Technique_Position\n{\n    pass Pass1\n    {\n        VertexShader = compile vs_3_0 VertexShaderFunction2();\n        PixelShader = compile ps_3_0 PixelShaderFunction2();\n    }\n}\n\n"
  },
  {
    "path": "Effects/Models/MyEffectOcclusionQueryDraw.fx",
    "content": "#include \"../MyEffectBase.fxh\"\n\nfloat4x4\tWorldMatrix;\nfloat4x4\tViewMatrix;\nfloat4x4\tProjectionMatrix;\n\nfloat2 HalfPixel;\nfloat2 Scale;\n\nTexture DepthsRT;\nsampler DepthsRTSampler = sampler_state \n{ \n\ttexture = <DepthsRT> ; \n\tmagfilter = POINT; \n\tminfilter = POINT; \n\tmipfilter = NONE; \n\tAddressU = clamp; \n\tAddressV = clamp;\n};\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n//\tHere begins single-material rendering part\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\nstruct VertexShaderInput\n{\n    float4 Position : POSITION0;\n    float3 Normal : NORMAL;\n    float2 TexCoord : TEXCOORD;\n};\n\nstruct VertexShaderOutput\n{\n    float4 Position : POSITION0;\n\tfloat4 ScreenPosition : TEXCOORD0;\n\tfloat4 ViewPosition: TEXCOORD1;\n};\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nMyGbufferPixelShaderOutput PixelShaderFunction(VertexShaderOutput input)\n{\n\tfloat2 texCoord = Scale * GetScreenSpaceTextureCoord(input.ScreenPosition, HalfPixel);\n\tfloat4 encodedDepth = tex2D(DepthsRTSampler, texCoord);\n\tfloat3 viewDir = input.ViewPosition.xyz;\n\n\tfloat viewDistance = length(input.ViewPosition.xyz);\n\n\tfloat depth = GetViewDistanceFromDepth(DecodeFloatRGBA(encodedDepth), viewDir);\n\n\tif(viewDistance > depth)\n\t{\n\t\tdiscard;\n\t}\n\n\tfloat3 normal = float3(0.0,1.0,0.0);\n\tfloat3 diffuse = float3(0.1f,0.1f,0.1f);\n\n\tMyGbufferPixelShaderOutput output;\n\toutput = GetGbufferPixelShaderOutput(normal, diffuse, viewDistance);\n\toutput.DiffuseAndSpecIntensity.a = 0.5f;\n\treturn output;\n}\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nfloat4 PixelShaderFunctionNoDepthTest(VertexShaderOutput input) : COLOR\n{\n\treturn float4(0,1,0,1);\n}\n\n\nfloat4 PixelShaderFunctionNonMRT(VertexShaderOutput input): COLOR\n{\n\tfloat2 texCoord = Scale * GetScreenSpaceTextureCoord(input.ScreenPosition, HalfPixel);\n\tfloat4 encodedDepth = tex2D(DepthsRTSampler, texCoord);\n\tfloat3 viewDir = input.ViewPosition.xyz;\n\n\tfloat viewDistance = length(input.ViewPosition.xyz);\n\n\tfloat depth = GetViewDistanceFromDepth(DecodeFloatRGBA(encodedDepth), viewDir);\n\n\tif(viewDistance > depth)\n\t{\n\t\tdiscard;\n\t\treturn float4(0,0,0,0);\n\t}\n\n\treturn float4(0,1,0,1);\n}\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nfloat4 PixelShaderFunctionNoDepthTestNonMRT(VertexShaderOutput input) : COLOR\n{\n\treturn float4(0,1,0,1);\n}\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nVertexShaderOutput VertexShaderFunction(VertexShaderInput input)\n{\n    VertexShaderOutput output;\n\n\toutput.Position = mul(input.Position, WorldMatrix);\n    output.Position = mul(output.Position, ViewMatrix);\n\toutput.ViewPosition = output.Position;\n    output.Position = mul(output.Position, ProjectionMatrix); \n\toutput.ScreenPosition = output.Position;   \n    return output;\n}\n\ntechnique EnableDepthTest\n{\n    pass Pass1\n    {\t\t\n        VertexShader = compile vs_3_0 VertexShaderFunction();\n        PixelShader = compile ps_3_0 PixelShaderFunction();\n    }\n}\n\n\ntechnique DisableDepthTest\n{\n    pass Pass1\n    {\t\t\n        VertexShader = compile vs_3_0 VertexShaderFunction();\n        PixelShader = compile ps_3_0 PixelShaderFunctionNoDepthTest();\n    }\n}\n\n\ntechnique EnableDepthTestNonMRT\n{\n    pass Pass1\n    {\t\t\n        VertexShader = compile vs_3_0 VertexShaderFunction();\n        PixelShader = compile ps_3_0 PixelShaderFunctionNonMRT();\n    }\n}\n\n\ntechnique DisableDepthTestNonMRT\n{\n    pass Pass1\n    {\t\t\n        VertexShader = compile vs_3_0 VertexShaderFunction();\n        PixelShader = compile ps_3_0 PixelShaderFunctionNoDepthTestNonMRT();\n    }\n}\n"
  },
  {
    "path": "Effects/Models/MyEffectRenderGizmo.fx",
    "content": "#include \"../MyEffectBase.fxh\"\n\n//\tThis shader renders a model with diffuse & specular & normal map textures, so it requires certain vertex shader data\n\nfloat4x4\tWorldViewProjectionMatrix;\nfloat3\t    DiffuseColor; \nfloat3\t\tLIGHT_DIRECTION = normalize(float3(1.0f, 1.0f, -1.0f));\nfloat4\t\tAMBIENT_COLOR = float4(0.3f, 0.3f, 0.3f, 1);\n\nstruct VertexShaderInputGizmo\n{\n    float4 Position : POSITION0;\n\tfloat3 Normal : NORMAL;\n    float3 Tangent : TANGENT;\n    float3 Binormal : BINORMAL;\n};\n\nstruct VertexShaderOutputGizmo\n{\n    float4 Position : POSITION0;\n\tfloat4 Color : TEXCOORD1;\n};\n\nVertexShaderOutputGizmo VertexShaderFunctionGizmo(VertexShaderInputGizmo input)\n{\n    VertexShaderOutputGizmo output;\n\n\toutput.Position = mul(input.Position, WorldViewProjectionMatrix);\n\tfloat3 normal = normalize(mul(input.Normal, WorldViewProjectionMatrix));\t\n\toutput.Color = AMBIENT_COLOR + float4(DiffuseColor.xyz * dot(normal, LIGHT_DIRECTION), 1);\n    return output;\n}\n\nfloat4 PixelShaderFunctionGizmo(VertexShaderOutputGizmo input) : COLOR0\n{\n\treturn input.Color;\n}\n\ntechnique Technique_RenderGizmo\n{\n    pass Pass1\n    {\n        VertexShader = compile vs_3_0 VertexShaderFunctionGizmo();\n        PixelShader = compile ps_3_0 PixelShaderFunctionGizmo();\n    }\n}\n\n\n"
  },
  {
    "path": "Effects/MyEffectBase.fxh",
    "content": "//\tThis common effects header file is common for ALL effects we use. Every effect includes it.\n\n// Define optimized vertex format. See MyVertexFormats.cs. Same definition must be also in engine preprocesor.\n#define PACKED_VERTEX_FORMAT\n\n\n// Define optimized vertex format. See MyVertexFormats.cs. Same definition must be also in engine preprocesor.\n//#define COLOR_SHADOW_MAP_FORMAT\n\n//These values are set from the game\nconst float NEAR_PLANE_DISTANCE;\nconst float FAR_PLANE_DISTANCE;\n\n//\tThese are three types of render quality. It's like an enum, but we can't use enums in HLSL so I used numeric constants.\n//\t\"static\" hides the variable from the Effect system - without the static keyword it will show up in your Effect Parameters\nstatic const int RENDER_QUALITY_LOW = 0;\nstatic const int RENDER_QUALITY_NORMAL = 1;\nstatic const int RENDER_QUALITY_HIGH = 2;\nstatic const int RENDER_QUALITY_EXTREME = 3;\n\n//Maximum value of specular intensity which can be used (otherwise is truncated)\nstatic const float SPECULAR_INTENSITY_RATIO = 32.0f;\n\n//Maximum value of specular power which can be used (otherwise is truncated)\nstatic const float SPECULAR_POWER_RATIO = 32.0f;\n\n//Used in forward render. If >0, it cuts all pixels which depth is >LodCut. If LodCut<0, then it cut all pixels which depth is <LodCut\nfloat LodCut;\nfloat LodBackgroundCut;\n\nfloat FogDistanceNear = 1000;\nfloat FogDistanceFar = 2500;\nfloat FogMultiplier = 0.8f;\nfloat FogBacklightMultiplier = 1.0f;\n\nfloat3 FogColor = float3(1,0,0);\n\n\n//\tPixel shader output when rendering into MRTs\nstruct MyGbufferPixelShaderOutput\n{\n    float4 NormalAndSpecPower : COLOR0;\n    float4 DiffuseAndSpecIntensity : COLOR1;\n    float4 DepthAndEmissivity : COLOR2;\t\n};\n\n//\tGets the screen-space texel coordinate from clip-space position (or just from 4D position)\n//\tOnce you've transformed your position by a projection matrix, you need to perform homogeneous \n//\tdivision by w...in other words divide X and Y by W. This gives you X and Y such that X = -1 is the \n//\tleft side of the screen, X = 1 is the right, Y = -1 is the bottom, and Y = 1 is the top. \n//\tSo you just need to so a little bit more conversion to get a texture coordinate (and also account \n//\tfor the half-pixel offset if you're using D3D9):\nfloat2 GetScreenSpaceTextureCoord(float4 position, float2 halfPixel)\n{\n    float2 texCoord = position.xy / position.w;\n\n\t#if 0\n    texCoord = texCoord * 0.5f + 0.5f;    \n    texCoord.y = 1.0f - texCoord.y; \n\t#else\n\ttexCoord = texCoord * float2(0.5f,-0.5f) + 0.5f;  \t\n\t#endif\n\n\t//\tFixing half-pixel position    \n    texCoord += halfPixel;\n    \n    return texCoord;\n}\n\n//\tConvert normal vector so it can be saved in texture or render target. Basically rescales from\n//\tinterval [-1 ... +1] to [0 ... +1]\nfloat3 GetNormalVectorIntoRenderTarget(float3 normal)\n{\n\treturn 0.5f * (normal + 1.0f);\n}\n\n//\tTranform normal back into [-1,1] range\nfloat3 GetNormalVectorFromRenderTarget(float3 normal)\n{\n\t return 2.0f * normal - 1.0f;\n}\n\n//\tTranform normal back into [-1,1] range from swizzled DDS\nfloat3 GetNormalVectorFromDDS(float4 normal)\n{\n\t// ! don't need to swizzle, now we have non-swizzled rgba normalmaps!\n\t//normal = normal.wyzx;\n\n\treturn 2.0f * normal.xyz - 1.0f;\n}\n\n//\tTranform normal back into [-1,1] range, but leaves alpha unchanged because it probably contains something not related to normals (e.g. alpha or emisivity)\nfloat4 GetNormalVectorFromRenderTarget(float4 normal)\n{\n\t return float4(2.0f * normal.xyz - 1.0f, normal.w);\n}\n\n //tranform normal back into [-1,1] range\nfloat3 GetNormalVectorFromRenderTargetNormalized(float3 normal)\n{\n#if 0\n\t normal = GetNormalVectorFromRenderTarget(normal);\n\t return length(normal.xyz) > 0.01f ? normalize(normal.xyz) : 0;\n#else\n\n\tfloat3\tn = GetNormalVectorFromRenderTarget(normal);\n\n\tnormalize(n);\n\n\treturn n;\n#endif\n}\n\n//Determines, if this normalized depth is background depth or not\nbool IsDepthBackground(float depth)\n{\n\treturn depth >= 0.99999f;\n}\n\ninline float4 EncodeFloatRGBA( float v ) \n{\n  //float4 enc = float4(1.0, 255.0, 65025.0, 160581375.0) * v;\n  float4 enc = float4(1.0, 255.0, 65025.0, 0.0) * v;\n  enc = frac(enc);\n  enc -= enc.yzww * float4(1.0/255.0,1.0/255.0,1.0/255.0,0.0);\n  return enc;\n}\n\ninline float4 EncodeFloatRGBAPrecise( float v ) \n{\n  float4 enc = float4(1.0, 255.0, 65025.0, 160581375.0) * v;\n  enc = frac(enc);\n  enc -= enc.yzww * float4(1.0/255.0,1.0/255.0,1.0/255.0,0.0);\n  return enc;\n}\n\ninline float DecodeFloatRGBA( float4 rgba ) \n{\n#if 0\n\trgba.a = 0; //we store specular here\n\treturn dot( rgba, float4(1.0, 1/255.0, 1/65025.0, 1/160581375.0) );\n#else\n\treturn dot( rgba, float4(1.0, 1/255.0, 1/65025.0, 0) );\n#endif\n}\n\ninline float ConvertRGBToGray(float3 rgb)\n{\n#if 0\n\treturn 0.299f * rgb.x + 0.587f * rgb.y + 0.114f * rgb.z;\n#else\n\treturn dot(float3(0.299f,0.587f,0.114f),rgb);\n#endif\n}\n\nfloat3 GetViewPositionFromDepth(float depth, float3 viewDir)\n{\n\tfloat fSceneDepth = depth * FAR_PLANE_DISTANCE;\n\treturn viewDir.xyz / -viewDir.z * fSceneDepth;\n} \n\nfloat GetViewDistanceFromDepth(float depth, float3 viewDir)\n{\n\tfloat3 vPositionVS = GetViewPositionFromDepth(depth, viewDir);\n\treturn length(vPositionVS);\n} \n\n//\tPacks all data required for our gbuffer deferred shader, that outputs them into MRT (multiple render targets)\nMyGbufferPixelShaderOutput GetGbufferPixelShaderOutput(float3 normal, float3 diffuse, float viewDistance)\n{\n\t//\tOutput into MRT\n\tMyGbufferPixelShaderOutput output;\n\toutput.NormalAndSpecPower.rgb = GetNormalVectorIntoRenderTarget(normal);\n\toutput.NormalAndSpecPower.a = 1;\t\n\toutput.DiffuseAndSpecIntensity.rgb = diffuse;\n\toutput.DiffuseAndSpecIntensity.a = 1;\n\toutput.DepthAndEmissivity = EncodeFloatRGBA(viewDistance / FAR_PLANE_DISTANCE);\t\t\n\toutput.DepthAndEmissivity.a = 0.0f; //zero emissivity\n    return output;\n}\n\nfloat Pack4(float lower, float upper)\n{\n\tint l = (int)round(saturate(lower) * 15);\t\t// convert lower to 0 ~ 15\n\tint u = (int)round(saturate(upper) * 15) * 16;   // convert upper to 0,16,32,48,64...etc.\n\treturn (l + u) / 255.0f;\n}\n\nfloat Unpack4Lower(float packedValue)\n{\n\tint value = ((int)(packedValue * 255)) % 16;// get lower 4 bytes to range 0 ~ 15\n\treturn value / 15.0f;\t\t\t\t\t\t// scale to 0.0 ~ 1.0\n}\n\nfloat Unpack4Upper(float packedValue)\n{\n\tint value = ((int)(packedValue * 255)) / 16;// get upper 4 bytes to range 0 ~ 15\n\treturn value / 15.0f;\t\t\t\t\t\t// scale to 0.0 ~ 1.0\n}\n\nfloat Pack7to1(float lower, float upper)\n{\n\tfloat l = round(saturate(lower) * 127) * 2; // convert lower to odd\n\tfloat u = round(saturate(upper));\t\t\t// convert upper to 0 or 1\n\treturn (l + u) * (1.0f / 255.0f);\n}\n\nfloat Unpack7to1Lower(float packedValue)\n{\n\treturn packedValue;\n}\n\nfloat Unpack7to1Upper(float packedValue)\n{\n\treturn (packedValue * 255) % 2;\n}\n\nvoid Unpack7to1(float packedValue, out float upper, out float lower)\n{\n\tlower = packedValue;\n\tupper = (packedValue * 255) % 2;\n}\n\nfloat PackGBufferEmissivityReflection(float emissivity, float reflection)\n{\n\t//return emissivity;\n\treturn Pack7to1(emissivity, reflection);\n}\n\nvoid UnpackGBufferEmissivityReflection(float packedValue, out float emissivity, out float reflection)\n{\n\t//emissivity = packedValue;\n\t//reflection = 0;\n\t//return;\n\tUnpack7to1(packedValue, reflection, emissivity);\n}\n\nfloat UnpackGBufferEmissivity(float packedValue)\n{\n\treturn Unpack7to1Lower(packedValue);\n}\n\nfloat UnpackGBufferReflection(float packedValue)\n{\n\treturn Unpack7to1Upper(packedValue);\n}\n\n//\tPacks all data required for our gbuffer deferred shader, that outputs them into MRT (multiple render targets)\n// This version does not write in depth buffer (alpha blending must be enabled)\n// Normal has also alpha channel (blends between surface normal and decal normal)\nMyGbufferPixelShaderOutput GetGbufferPixelShaderOutputBlended(float4 normal, float4 diffuse, float emissivity, float reflection)\n{\n\t//\tOutput into MRT\n\tMyGbufferPixelShaderOutput output;\n\toutput.NormalAndSpecPower.rgb = GetNormalVectorIntoRenderTarget(normal.xyz);\n\toutput.NormalAndSpecPower.a = normal.w;\n\toutput.DiffuseAndSpecIntensity = diffuse;\n\toutput.DepthAndEmissivity = float4(0,0,0,PackGBufferEmissivityReflection(emissivity, reflection));\n    return output;\n}\n\n//\tPacks all data required for our gbuffer deferred shader, that outputs them into MRT (multiple render targets)\nMyGbufferPixelShaderOutput GetGbufferPixelShaderOutput(float3 normal, float3 diffuse, float specularIntensity, float specularPower, float viewDistance)\n{\n\t//\tOutput into MRT\n\tMyGbufferPixelShaderOutput output;\n\toutput.NormalAndSpecPower.rgb = GetNormalVectorIntoRenderTarget(normal);\n\toutput.NormalAndSpecPower.a = specularPower;\t\n\toutput.DiffuseAndSpecIntensity.rgb = diffuse;\n\toutput.DiffuseAndSpecIntensity.a = specularIntensity;\n\toutput.DepthAndEmissivity = EncodeFloatRGBA(viewDistance / FAR_PLANE_DISTANCE);\t\t\n\toutput.DepthAndEmissivity.a = PackGBufferEmissivityReflection(0.0f, 0.0f); //zero emissivity, zero reflection\n    return output;\n}\n\nfloat4 Encode1010102( float4 color )\n{\n\tfloat4 result;\n\tresult.rgb = 0.25f * color.rgb;\n\tresult.a = color.a;\n\treturn result;\n}\n\nfloat4 Decode1010102( float4 color )\n{\n\tfloat4 result;\n\tresult.rgb = 4.0f * color.rgb;\n\tresult.a = color.a;\n\treturn result;\n}\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\n// Constants for vertex compression. Values must be same as in engine. See MyConstants.MyVertexCompression.\nstatic const int COMPRESSION_VOXEL_OFFSET = 32767;                           // Offset to add to coordinates when mapping voxel from float<0, 8191> to short<-32767, 32767>.\nstatic const int COMPRESSION_VOXEL_MULTIPLIER = 8;                           // Multiplier for mapping voxel from float to short.\nstatic const int COMPRESSION_AMBIENT_MULTIPLIER = 32767;                     // Multiplier for mapping value from float<-1, 1> to short<-32767, 32767>.\n\nfloat4 UnpackNormal(float4 packedNormal)\n{\n#ifdef PACKED_VERTEX_FORMAT\n\n\t// get sign of Z from last bit of Y\n\tfloat sign = packedNormal.y > 127.5f ? 1.0f : -1.0f;\n\n\t// clear last bit of Y\n\tif(sign > 0)\n\t\tpackedNormal.y -= 128.0f;\n\n\t// construct X and Y into format <0, 32767>\n\tfloat x = packedNormal.x + (256.0f * packedNormal.y);\n\tfloat y = packedNormal.z + (256.0f * packedNormal.w);\n\n\t// normalize X and Y to <0,1>\n\tx /= 32767.0f;\n\ty /= 32767.0f;\n\n\t// transform X and Y to <-1, 1>\n\tfloat nx = (2 * x) - 1.0f;\n\tfloat ny = (2 * y) - 1.0f;\n\n\t// compute Z\n\tfloat nz = sign * sqrt(max(0, 1 - nx * nx - ny * ny));\n\n\t// output vector is already normalized\n\treturn float4(nx, ny, nz, 1);\n#else\n\treturn packedNormal.xyzw;\n#endif\n}\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nfloat3 UnpackVoxelPosition(float4 PositionAndAmbient)\n{\n#ifdef PACKED_VERTEX_FORMAT\n\treturn float3((PositionAndAmbient.xyz + COMPRESSION_VOXEL_OFFSET) / COMPRESSION_VOXEL_MULTIPLIER);\n#else\n\treturn PositionAndAmbient.xyz;\n#endif\n}\n\nfloat UnpackVoxelAmbient(float4 PositionAndAmbient)\n{\n\treturn (PositionAndAmbient.w % 8192) / 8191.0f;\n\t//return frac(PositionAndAmbient.w / 8192.0f); // This is faster? But it does not work (can't handle negative values?)\n}\n\nfloat3 UnpackVoxelAlpha(float4 PositionAndAmbient)\n{\n\tint index = (int)abs(PositionAndAmbient.w / 8192.0f);\n\treturn float3(step(0, -index), step(abs(index - 1), 0), step(2, index));\n}\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nfloat4 UnpackPositionAndScale(float4 Position)\n{\n#ifdef PACKED_VERTEX_FORMAT\n\treturn float4(Position.xyz * Position.w, 1);\n#else\n\treturn Position;\n#endif\n}\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nfloat3 UnpackMaterialAlpha(float3 MaterialAlpha)\n{\n#ifdef PACKED_VERTEX_FORMAT\n\treturn MaterialAlpha / 255;\n#else\n\treturn MaterialAlpha.xyz;\n#endif\n}\n\nbool IsPixelCut(float viewDistance)\n{\n\tfloat blendDistance = 80;\n\n\tif ((LodCut > 0) && (viewDistance > (LodCut + blendDistance)))\n\t{\n\t\treturn true;\n\t}\n\telse\t \n\tif ((LodCut < 0) && (viewDistance < (-LodCut - blendDistance)))\n\t{\n\t\treturn true;\n\t}\n\telse\n\tif (viewDistance > LodBackgroundCut)\n\t{\n\t\treturn true;\n\t}\n\n\treturn false;\n}\n\nfloat4 CalculateFogLinear(float3 sourceColor, float distance, float backgroundBlend)\n{\n\tfloat fogBlend = saturate((distance - FogDistanceNear) / (FogDistanceFar - FogDistanceNear));\n\n\treturn float4(FogColor, fogBlend * FogMultiplier);\n\n\t// This is no hack, it's just interpolator based on background blend and fog blend, it's pretty complicated, but right\n\tfloat i = (backgroundBlend * (fogBlend + backgroundBlend - 2) + 1) * FogMultiplier;\n\t//return lerp(sourceColor.xyz, FogColor, i);\n\treturn float4(FogColor, i);\n}\n\nfloat3 CalculateFogExponencial(float3 sourceColor, float distance, float density)\n{\n\tfloat fogBlend = 1.0f/exp(abs(distance / FogDistanceFar) * density);\n\tfloat3 diffuse = lerp(sourceColor.xyz, FogColor, (1 - saturate(fogBlend)) * FogMultiplier);\n\treturn diffuse;\n}\n"
  },
  {
    "path": "Effects/MyEffectDynamicLightingBase.fxh",
    "content": "#include \"../MyEffectShadowBase.fxh\"\n\n//\tDynamic light\nstruct DynamicLight \n{\n    float3 Position;\n    float4 Color;\n    float Falloff;\n    float Range;\n};\n\n//\tHere we define array for holding lights with max size. No more light can be used, but less can. It depends on how many lights\n//\tare near object we want to draw and max number of light set by user in game options.\n//\tIf you change length of this array, change it too in MyLightsConstants.MAX_LIGHTS_FOR_EFFECT\nDynamicLight DynamicLights[8];\n\n//\tThis number is set specificaly for every model or voxel cell and tells us how many light to use for lighting calculations\nint DynamicLightsCount;\n\n\n//\tColor of sun light. This one will influence 'sun' factor comming from shadows.\nfloat3 SunColor;\nfloat SunIntensity;\nfloat3 DirectionToSun = normalize(float3(0, 0, -1));\nfloat3 AmbientColor;\n\n\n//\tCalculate the intensity of the light with exponential falloff\nfloat GetDynamicLightBaseIntensity(DynamicLight light, float distance)\n{\n\treturn 1 - pow(saturate(distance / light.Range), light.Falloff);\n}\n\n//\tCalculate point light with attenuation, diffuse and specular texture. Can be used for normal mapping too.\nfloat4 CalculateDynamicLight_Diffuse(DynamicLight light, float3 position, float3 normal)\n{\n\tfloat3 lightVector = light.Position - position;\n\tfloat lightDist = length(lightVector);\n\tfloat3 directionToLight = normalize(lightVector);\n\n\tfloat baseIntensity = GetDynamicLightBaseIntensity(light, lightDist);\n\n\tfloat diffuseIntensity = saturate( dot(directionToLight, normal));\n\tfloat4 diffuse = diffuseIntensity * light.Color;\n\n\treturn baseIntensity * diffuse;\n\t//return float4(abs(directionToLight),1) * light.Color;\n}\n\n\n//\tCalculate point light with attenuation for particle. Works with particle diffuse texture.\nfloat3 CalculateDynamicLightForParticle(DynamicLight light, float3 position)\n{\n\tfloat3 lightVector = light.Position - position;\n\tfloat lightDist = length(lightVector);\n\t// This wasn't used so I put it in comment\n\t//float3 directionToLight = normalize(lightVector);\n\n\tfloat baseIntensity = GetDynamicLightBaseIntensity(light, lightDist);\n\n\treturn baseIntensity * light.Color.xyz;\n}\n\nfloat4 CalculateDynamicLight_Diffuse(float3 position, float3 normal)\n{\n\tfloat4 lightColor = float4(0,0,0,0);\n\n\tfor (int i = 0; i < DynamicLightsCount; i++)\n\t{\n\t\tlightColor += CalculateDynamicLight_Diffuse(DynamicLights[i], position, normal);\n\t}\n\n\treturn lightColor;\n}\n\nfloat GetSunColor(float3 normal)\n{\n//\tSun - diffuse    \n\tfloat sunDiffuseMultiplier = saturate(dot(normal, DirectionToSun));\n\treturn sunDiffuseMultiplier * SunColor * SunIntensity;\n}"
  },
  {
    "path": "Effects/MyEffectLights.fx",
    "content": "#include \"MyEffectBase.fxh\"\n\nfloat2 HalfPixel;\nfloat3 LightPosition;\nfloat LightRadius;\nfloat LightIntensity;\nfloat3 CameraPosition;\nfloat3 LightColor;\nfloat3 LightSpecularColor;\nfloat4x4 WorldViewProjMatrix;\nfloat4x4 WorldMatrix;\n\n//\tReflector light - coming from the camera/player\nfloat3 ReflectorDirection;\nfloat ReflectorConeMaxAngleCos;\nfloat4 ReflectorColor;\nfloat ReflectorRange;\n\n\nTexture NormalsRT;\nsampler NormalsRTSampler = sampler_state \n{ \n\ttexture = <NormalsRT> ; \n\tmagfilter = POINT; \n\tminfilter = POINT; \n\tmipfilter = NONE; \n\tAddressU = clamp; \n\tAddressV = clamp;\n};\n\nTexture DiffuseRT;\nsampler DiffuseRTSampler = sampler_state \n{ \n\ttexture = <DiffuseRT> ; \n\tmagfilter = LINEAR; \n\tminfilter = LINEAR; \n\tmipfilter = NONE; \n\tAddressU = clamp; \n\tAddressV = clamp;\n};\n\nTexture DepthsRT;\nsampler DepthsRTSampler = sampler_state \n{ \n\ttexture = <DepthsRT> ; \n\tmagfilter = POINT; \n\tminfilter = POINT; \n\tmipfilter = NONE; \n\tAddressU = clamp; \n\tAddressV = clamp;\n};\n\nstruct VertexShaderInput\n{\n    float4 Position : POSITION0;\n};\n\nstruct VertexShaderOutput\n{\n    float4 Position : POSITION0;\n    float4 ScreenPosition : TEXCOORD0;\n\tfloat3 WorldPosition : TEXCOORD1;\n};\n\nVertexShaderOutput VertexShaderFunction(VertexShaderInput input)\n{\n    VertexShaderOutput output;\n    output.Position = mul(input.Position, WorldViewProjMatrix);\n\toutput.ScreenPosition = output.Position;\n\toutput.WorldPosition = mul(input.Position, WorldMatrix);\n    return output;\n}\n\n\nstruct CalculatedValues\n{\n    float3 Position;\n    float3 ViewDir;\n\tfloat3 Normal;\n\tfloat3 Specular;\n\tfloat4 Diffuse;\n};\n\n\n//\tCalculate attenuation factor of reflector light. Result will be in interval <0..1> and can be used to multiply diffuse/specular components.\nfloat4 GetReflectorAttenuation(float distanceToReflectorInvertedNormalized, float3 directionToReflector)\n{\n\tfloat actualAngle = 1 - dot(ReflectorDirection, -directionToReflector);\t\n\tfloat4 ret = 6 * distanceToReflectorInvertedNormalized;\n\n\t//\tAttenuate by cone angle\n\tret *= 1 - saturate(actualAngle / ReflectorConeMaxAngleCos);\n\tret = saturate(ret);\n\t\n\t//\tMake the light not too bright, so it will be in interval <0..0,6>\n    ret = ret * 0.6;\n\treturn ret;\n}\n\n\n//\tCompute distance from camera to vertex. This is then interpolated by pixel shader.\n//\tNotice: this value IS NOT in range <0..1>, but contains reall distance in meters.\nfloat GetDistanceToReflector(float3 position)\n{\n\treturn length(CameraPosition - position);\n}\n\n\nfloat4 CalculateLighting(VertexShaderOutput input, out CalculatedValues values) : COLOR0\n{\n    float2 texCoord = GetScreenSpaceTextureCoord(input.ScreenPosition, HalfPixel);\n\n\tfloat4 encodedDepth = tex2D(DepthsRTSampler, texCoord);\n\tfloat emissive = encodedDepth.w;\n\tfloat viewDistanceNormalized = DecodeFloatRGBA(encodedDepth);\n\tfloat viewDistance = viewDistanceNormalized * FAR_PLANE_DISTANCE;\n\tvalues.ViewDir = normalize(input.WorldPosition - CameraPosition);\n\n\tfloat4 normal = tex2D(NormalsRTSampler, texCoord);\n\tfloat specularPower = normal.a * SPECULAR_POWER_RATIO;\n\n\tnormal.xyz = GetNormalVectorFromRenderTarget(normal.xyz);\n\tvalues.Normal = normal;\n\n    values.Diffuse = tex2D(DiffuseRTSampler, texCoord);\n\n\tfloat specularIntensity = values.Diffuse.a * SPECULAR_INTENSITY_RATIO;\n\t\n\n\tvalues.Position = values.ViewDir * viewDistance + CameraPosition;\n\n\t//surface-to-light vector\n    float3 lightVector = LightPosition - values.Position;\n\n\t//reflection vector\n    float3 reflectionVector = normalize(reflect(-lightVector, normal));\n\n    //camera-to-surface vector\n    float3 directionToCamera = normalize(CameraPosition - values.Position);\n\n    //compute specular light\n    float specularLight = specularIntensity * pow( saturate(dot(reflectionVector, directionToCamera)), specularPower);\n\n    //compute attenuation based on distance - linear attenuation\n    float attenuation = saturate(1.0f - length(lightVector)/LightRadius); \n\n    //normalize light vector\n    lightVector = normalize(lightVector); \n\n    //compute diffuse light\n    float NdL = max(0,dot(normal,lightVector));\n\n    float3 diffuseLight = NdL * LightColor * values.Diffuse.rgb;\n\n\tvalues.Specular = specularLight.xxx * LightSpecularColor;\n\n    //take into account attenuation and lightIntensity.\n    return  float4(attenuation * (LightIntensity * diffuseLight + values.Specular), 1);\n    \n\t//return  float4(specularLight.xxx, attenuation);\n\t//return  float4(LightIntensity * diffuseLight + float3(0,0,0), attenuation);\n\t//return float4(specularLight,specularLight,specularLight,attenuation);\n\t//return float4(emissive,emissive,emissive,1);\n}\n\n\nfloat4 PSLighting(VertexShaderOutput input) : COLOR0\n{\n\tCalculatedValues values;\n\tfloat4 color = CalculateLighting(input, values);\n\treturn color;\n}\n\nfloat4 PSLightingWithReflector(VertexShaderOutput input) : COLOR0\n{\n\tCalculatedValues values;\n    float4 color = CalculateLighting(input, values);\n\n\tfloat3 directionToReflector = -values.ViewDir;\n\t //\tReflector - diffuse\n    float reflectorDiffuseMultiplier = saturate(dot(values.Normal, directionToReflector));\n   \n   \tfloat distanceToReflector = GetDistanceToReflector(values.Position);\n\tfloat distanceToReflectorInverted = 1 - saturate(distanceToReflector / ReflectorRange);\n\n\t//\tReflector - attenuation\n    float4 reflectorAttenuation = GetReflectorAttenuation(distanceToReflectorInverted, directionToReflector);       \n\n    //take into account attenuation and lightIntensity.\n\tfloat4 colorRefl = float4(reflectorAttenuation * (ReflectorColor * reflectorDiffuseMultiplier * values.Diffuse.xyz + values.Specular), 1);\n\n\treturn  color + colorRefl;\n\n\t//return  float4(specularLight.xxx, attenuation);\n\t//return  float4(LightIntensity * diffuseLight + float3(0,0,0), attenuation);\n\t//return float4(specularLight,specularLight,specularLight,attenuation);\n\t//return float4(emissive,emissive,emissive,1);\n}\n\nfloat4 PixelShaderFunction_SpecularIntensity(VertexShaderOutput input) : COLOR0\n{\n\tfloat2 texCoord = GetScreenSpaceTextureCoord(input.ScreenPosition, HalfPixel);\n    float4 diffuse = tex2D(DiffuseRTSampler, texCoord);\n\tfloat specularIntensity = diffuse.a * SPECULAR_INTENSITY_RATIO;\n\n\tfloat4 encodedDepth = tex2D(DepthsRTSampler, texCoord);\n\tfloat emissive = encodedDepth.w;\n\tfloat viewDistanceNormalized = DecodeFloatRGBA(encodedDepth);\n\tfloat viewDistance = viewDistanceNormalized * FAR_PLANE_DISTANCE;\n\n\tfloat3 viewDir = normalize(input.WorldPosition - CameraPosition);\n\tfloat3 position = viewDir * viewDistance + CameraPosition;\n\n\t//surface-to-light vector\n    float3 lightVector = LightPosition - position;\n\n    //compute attenuation based on distance - linear attenuation\n    float attenuation = saturate(1.0f - length(lightVector)/LightRadius); \n\n\n\treturn float4(specularIntensity, specularIntensity, specularIntensity, attenuation);\n}\n\nfloat4 PixelShaderFunction_SpecularPower(VertexShaderOutput input) : COLOR0\n{\n\tfloat2 texCoord = GetScreenSpaceTextureCoord(input.ScreenPosition, HalfPixel);\n\tfloat4 normal = tex2D(NormalsRTSampler, texCoord);\n\tfloat specularPower = normal.a;\n\n\tfloat4 encodedDepth = tex2D(DepthsRTSampler, texCoord);\n\tfloat emissive = encodedDepth.w;\n\tfloat viewDistanceNormalized = DecodeFloatRGBA(encodedDepth);\n\tfloat viewDistance = viewDistanceNormalized * FAR_PLANE_DISTANCE;\n\n\tfloat3 viewDir = normalize(input.WorldPosition - CameraPosition);\n\tfloat3 position = viewDir * viewDistance + CameraPosition;\n\n\t//surface-to-light vector\n    float3 lightVector = LightPosition - position;\n\n    //compute attenuation based on distance - linear attenuation\n    float attenuation = saturate(1.0f - length(lightVector)/LightRadius); \n\n\treturn float4(specularPower, specularPower, specularPower, attenuation);\n}\n\ntechnique Technique_Lighting\n{\n    pass Pass1\n    {\n\t\tVertexShader = compile vs_3_0 VertexShaderFunction();\n        PixelShader = compile ps_3_0 PSLighting();\n    }\n}\n\ntechnique Technique_LightingWithReflector\n{\n    pass Pass1\n    {\n\t\tVertexShader = compile vs_3_0 VertexShaderFunction();\n        PixelShader = compile ps_3_0 PSLightingWithReflector();\n    }\n}\n\ntechnique Technique_ShowSpecularIntensity\n{\n    pass Pass1\n    {\n\t\tVertexShader = compile vs_3_0 VertexShaderFunction();\n        PixelShader = compile ps_3_0 PixelShaderFunction_SpecularIntensity();\n    }\n}\n\n\ntechnique Technique_ShowSpecularPower\n{\n    pass Pass1\n    {\n\t\tVertexShader = compile vs_3_0 VertexShaderFunction();\n        PixelShader = compile ps_3_0 PixelShaderFunction_SpecularPower();\n    }\n}"
  },
  {
    "path": "Effects/MyEffectLodTransition.fx",
    "content": "//\tThis shader blends between texture LOD0 and LOD1 according to distance or alpha (will depend on final implementation)\n\nfloat2 HalfPixel;\n\n//\tTexture contains scene from LOD0\nTexture Lod0RT;\nsampler Lod0RTSampler = sampler_state \n{ \n\ttexture = <Lod0RT> ; \n\tmagfilter = POINT; \n\tminfilter = POINT; \n\tmipfilter = NONE; \n\tAddressU = clamp; \n\tAddressV = clamp;\n};\n\n//\tTexture contains scene from LOD1\nTexture Lod1RT;\nsampler Lod1RTSampler = sampler_state \n{ \n\ttexture = <Lod1RT> ; \n\tmagfilter = POINT; \n\tminfilter = POINT; \n\tmipfilter = NONE; \n\tAddressU = clamp; \n\tAddressV = clamp;\n};\n\nstruct VertexShaderInput\n{\n    float4 Position : POSITION0;\n    float2 TexCoord : TEXCOORD0;\n};\n\nstruct VertexShaderOutput\n{\n    float4 Position : POSITION0;\n    float2 TexCoord : TEXCOORD0;\n};\n\nVertexShaderOutput VertexShaderFunction(VertexShaderInput input)\n{\n    //\tWe're using a full screen quad, no need for transforming vertices.\n    VertexShaderOutput output;\n    output.Position = input.Position;\n    output.TexCoord = input.TexCoord + HalfPixel;\n    return output;\n}\n\nfloat4 PixelShaderFunction(VertexShaderOutput input) : COLOR0\n{\n\tfloat4 Lod0RT = tex2D(Lod0RTSampler, input.TexCoord);\n\tfloat4 Lod1RT = tex2D(Lod1RTSampler, input.TexCoord);\n    \n\t//return float4(Lod0RT.rgb, 1);\n    //return float4(Lod1RT.rgb, 1);\n    \n    //return float4(0,1,0,1);\n    \n    return float4(Lod0RT.rgb * Lod0RT.a + Lod1RT.rgb * (1 - Lod0RT.a), 1);    \n    \n    //return float4(Lod0RT.rgb + Lod1RT.rgb, 1);\n    //return float4(Lod0RT.rgb * Lod0RT.a + Lod1RT.rgb * Lod1RT.a, 1);\n    /*\n    return float4(Lod1RT.rgb * (1 - Lod1RT.a), 1);\n    \n    float alpha0 = Lod0RT.a;\n    float alpha1 = 1 - Lod1RT.a;\n    float sum = alpha0 + alpha1;\n    //alpha0 = alpha0 / sum;\n    //alpha1 = alpha1 / sum;\n    if (sum > 1)\n    {\n\t\talpha1 = 1 - alpha0;\n    }\n    \n    return float4(Lod0RT.rgb * alpha0 + Lod1RT.rgb * alpha1, 1);\n    */\n    //return float4(Lod0RT.rgb * Lod0RT.a + Lod1RT.rgb * (1 - Lod1RT.a), 1);\n    //return float4(Lod1RT.rgb * (1 - Lod1RT.a), 1);\n}\n\ntechnique Technique1\n{\n    pass Pass1\n    {\n\t\tVertexShader = compile vs_3_0 VertexShaderFunction();\n        PixelShader = compile ps_3_0 PixelShaderFunction();\n    }\n}"
  },
  {
    "path": "Effects/MyEffectModelsDS.fx",
    "content": "#include \"MyEffectBase.fxh\"\n\n//\tThis shader renders a model with diffuse and specular textures, so it requires certain vertex shader data\n\nfloat4x4\tWorldMatrix;\nfloat4x4\tViewMatrix;\nfloat4x4\tProjectionMatrix;\nfloat3\t    DiffuseColorAdd;\n\nTexture TextureDiffuseAndSpecular;\nsampler TextureDiffuseAndSpecularSampler = sampler_state \n{ \n\ttexture = <TextureDiffuseAndSpecular> ; \n\tmipfilter = LINEAR; \n\tAddressU = WRAP; \n\tAddressV = WRAP;\n};\n\nstruct VertexShaderInput_DS\n{\n    float4 Position : POSITION0;\n    float3 Normal : NORMAL;\n    float2 TexCoord : TEXCOORD;\n};\n\nstruct VertexShaderOutput_DS\n{\n    float4 Position : POSITION0;\n    float2 TexCoord : TEXCOORD0;\n    float ViewDistance : TEXCOORD1;\n    float3 Normal : TEXCOORD2;\n};\n\nVertexShaderOutput_DS VertexShaderFunction_DS(VertexShaderInput_DS input)\n{\n    VertexShaderOutput_DS output;\n\n\toutput.Position = mul(input.Position, WorldMatrix);\n    output.Position = mul(output.Position, ViewMatrix);\n    output.ViewDistance = length(output.Position.xyz);\n    output.Position = mul(output.Position, ProjectionMatrix);    \n    output.TexCoord = input.TexCoord;\n    output.Normal = mul(input.Normal, (float3x3)WorldMatrix);\n    return output;\n}\n\nGbufferPixelShaderOutput PixelShaderFunction_DS(VertexShaderOutput_DS input)\n{\n\tfloat3 normal = normalize(input.Normal);\n\n\tfloat4 diffuseAndSpecularTexture = tex2D(TextureDiffuseAndSpecularSampler, input.TexCoord);\n    float3 diffuseTexture = diffuseAndSpecularTexture.rgb;\n    float specularTexture = diffuseAndSpecularTexture.a;\t\t//\tSpecular is stored in alpha channel of diffuse texture\n    \n\t//\tOutput into MRT\n\tGbufferPixelShaderOutput output = GetGbufferPixelShaderOutput(normal, diffuseTexture, input.ViewDistance);\n\toutput.Diffuse.rgb = output.Diffuse.rgb + DiffuseColorAdd;\n\treturn output;\n}\n\ntechnique Technique_RenderQualityNormal\n{\n    pass Pass1\n    {\n        Texture[0] = <TextureDiffuseAndSpecular>;\t\t\t//\tI think this Texture[] assignement isn't needed but I rather did it\n        MinFilter[0] = LINEAR; \n        MagFilter[0] = LINEAR; \n\n        VertexShader = compile vs_3_0 VertexShaderFunction_DS();\n        PixelShader = compile ps_3_0 PixelShaderFunction_DS();\n    }\n}\n\ntechnique Technique_RenderQualityHigh\n{\n    pass Pass1\n    {\n        Texture[0] = <TextureDiffuseAndSpecular>;\t\t\t//\tI think this Texture[] assignement isn't needed but I rather did it\n        MinFilter[0] = ANISOTROPIC; \n        MagFilter[0] = LINEAR; \n        MaxAnisotropy[0] = 16;\n\n        VertexShader = compile vs_3_0 VertexShaderFunction_DS();\n        PixelShader = compile ps_3_0 PixelShaderFunction_DS();\n    }\n}\n\ntechnique Technique_RenderQualityExtreme\n{\n    pass Pass1\n    {\n        Texture[0] = <TextureDiffuseAndSpecular>;\t\t\t//\tI think this Texture[] assignement isn't needed but I rather did it\n        MinFilter[0] = ANISOTROPIC; \n        MagFilter[0] = LINEAR; \n        MaxAnisotropy[0] = 16;\n\n        VertexShader = compile vs_3_0 VertexShaderFunction_DS();\n        PixelShader = compile ps_3_0 PixelShaderFunction_DS();\n    }\n}"
  },
  {
    "path": "Effects/MyEffectReflectorBase.fxh",
    "content": "//Reflector light - coming from the camera/player\n// Also used for spot lights\nfloat3 ReflectorDirection;\nfloat ReflectorConeMaxAngleCos;\nfloat4 ReflectorColor;\nfloat ReflectorRange;\nfloat3 CameraPosition;\nint ReflectorTextureEnabled;\nfloat ReflectorIntensity;\nfloat ReflectorFalloff;\n\nTexture ReflectorTexture;\nsampler ReflectorTextureSampler = sampler_state \n{ \n\ttexture = <ReflectorTexture>; \n\tmagfilter = LINEAR; \n\tminfilter = LINEAR; \n\tmipfilter = NONE; \n\tAddressU = WRAP; \n\tAddressV = WRAP;\n};\n\n//\tCalculate attenuation factor of reflector light. Result will be in interval <0..1> and can be used to multiply diffuse/specular components.\nfloat4 GetReflectorAttenuation(float distanceToReflectorInvertedNormalized, float3 directionToReflector)\n{\n\tfloat actualAngle = 1 - dot(ReflectorDirection, -directionToReflector);\t\n\tfloat4 ret = 6 * distanceToReflectorInvertedNormalized;\n\n\t//\tAttenuate by cone angle\n\tret *= 1 - saturate(actualAngle / ReflectorConeMaxAngleCos);\n\tret = saturate(ret);\n\t\n\t//\tMake the light not too bright, so it will be in interval <0..0,6>\n    ret = ret * 0.6;\n\treturn ret;\n}\n\n\n//\tCompute distance from camera to vertex. This is then interpolated by pixel shader.\n//\tNotice: this value IS NOT in range <0..1>, but contains reall distance in meters.\nfloat GetDistanceToReflector(float3 position)\n{\n\treturn length(CameraPosition - position);\n}\n\n//\tCalculate the light direction ( from the surface to the light ), which is not normalized and is in world space\nfloat3 GetDirectionToReflector(float3 position)\n{\n\treturn CameraPosition - position;\n}\n\n\nfloat3 GetReflectorAttenuation(float3 worldPosition)\n{\n\tfloat distanceToReflector = GetDistanceToReflector(worldPosition);\n\tfloat3 directionToReflector = GetDirectionToReflector(worldPosition);\n\tfloat distanceToReflectorInverted = 1 - saturate(distanceToReflector / ReflectorRange);\n\treturn GetReflectorAttenuation(distanceToReflectorInverted, normalize(directionToReflector));       \n}\n\nfloat3 GetReflectorColor(float3 worldPosition)\n{\n\treturn ReflectorColor * GetReflectorAttenuation(worldPosition);\n}\n\nfloat3 GetReflectorColor(float attenution)\n{\n\treturn ReflectorColor * attenution;\n}"
  },
  {
    "path": "Effects/MyEffectShadowBase.fxh",
    "content": "#include \"../MyEffectBase.fxh\"\n\n#define NUM_SPLITS 4\n#define CASCADE_FAR_BLEND_DISTANCE 300\n\n\n#define NUM_SPLITS_INV (1.0f / NUM_SPLITS)\n\nuniform float4 ShadowMapSize; //z = 1/x, w = 1/y\n\nfloat4x4\tInvViewMatrix;\nfloat4x4\tLightViewProjMatrices [NUM_SPLITS];\nfloat2\t\tClipPlanes[NUM_SPLITS];\nbool\t\tShowSplitColors = false;\nfloat3\t\tFAR_SHADOW_COLOR = float3(1.0f,1.0f,1.0f);\n\nfloat ShadowBias = 0.000195f;\nfloat SlopeBias = 0.0195f;\nfloat SlopeCascadeMultiplier = 1;\n\n\nhalf3 vSplitColors [4] = \n{\n\thalf3(1, 0, 0),\n\thalf3(0, 1, 0),\n\thalf3(0, 0, 1),\n\thalf3(1, 1, 0)\n};\n\n\n//x = bias multiplier, y = slopebias multiplier\nfloat2 cascadeBiases[4] =  \n{\n\tfloat2(1, 0),\n\tfloat2(2, 1),\n\tfloat2(20, 2),\n\tfloat2(4, 3),\n};\n\nfloat offsets[4] = \n{\n\t0.0f,\n\t1.0f / NUM_SPLITS,\n\t2.0f / NUM_SPLITS,\n\t3.0f / NUM_SPLITS,\n};\n\n\ntexture ShadowMap;\nsampler2D ShadowMapSampler = sampler_state\n{\n    Texture = <ShadowMap>;\n    MinFilter = POINT; \n    MagFilter = POINT; \n    MipFilter = none; \n};\n\n\nfloat CalcShadowTermRndRot(float2 uv,float2 rot,float depth,float bias)\n{\n\n\tstatic const float4 filterTaps[4] =\n\t{\n\t\t {1.0,\t\t 1.0,\t\t0,0},\n\t\t { 1.0 / 2,\t-1.0 / 2,\t0,0},\n\t\t {-1.0,\t\t-1.0,\t\t0,0},\n\t\t {-1.0 / 2,\t 1.0 / 2,\t0,0}\n\t};\n\n\tfloat4 samples;\n\n\tsamples.x = tex2Dlod(ShadowMapSampler,uv.xyyy + filterTaps[0] * rot.xyyy).x;\n\tsamples.y = tex2Dlod(ShadowMapSampler,uv.xyyy + filterTaps[1] * rot.yxxx).x;\n\tsamples.z = tex2Dlod(ShadowMapSampler,uv.xyyy + filterTaps[2] * rot.xyyy).x;\n\tsamples.w = tex2Dlod(ShadowMapSampler,uv.xyyy + filterTaps[3] * rot.yxxx).x;\n\n\treturn dot(step(depth,samples + bias),float4(0.25f,0.25f,0.25f,0.25f));\n}\n\n// Calculates the shadow occlusion using bilinear PCF\nfloat CalcShadowTermPCF(float fLightDepth, float2 vShadowTexCoord, float bias)\n{\n\t// transform to texel space\n\tfloat2 vShadowMapCoord = ShadowMapSize.xy * vShadowTexCoord;\n    \n\t// Determine the lerp amounts           \n\tfloat2 vLerps = frac(vShadowMapCoord);\n\n\t// Read in the 4 samples, doing a depth check for each\n\tfloat4 vShadowTexCoord4 = float4(vShadowTexCoord.x,vShadowTexCoord.y,0,0);\n\n\t/*\n#ifdef COLOR_SHADOW_MAP_FORMAT\n\tfloat sample1 = DecodeFloatRGBA(tex2D(ShadowMapSampler, vShadowTexCoord4));\n\tfloat sample2 = DecodeFloatRGBA(tex2D(ShadowMapSampler, vShadowTexCoord4 + float2(1.0/ShadowMapSize.x, 0)));\n\tfloat sample3 = DecodeFloatRGBA(tex2D(ShadowMapSampler, vShadowTexCoord4 + float2(0, 1.0/ShadowMapSize.y))); \n\tfloat sample4 = DecodeFloatRGBA(tex2D(ShadowMapSampler, vShadowTexCoord4 + float2(1.0/ShadowMapSize.x, 1.0/ShadowMapSize.y)));\n#else\n\tfloat sample1 = tex2Dlod(ShadowMapSampler, vShadowTexCoord4).x;\n\tfloat sample2 = tex2Dlod(ShadowMapSampler, vShadowTexCoord4 + float4(1.0/ShadowMapSize.x, 0,0,0)).x;\n\tfloat sample3 = tex2Dlod(ShadowMapSampler, vShadowTexCoord4 + float4(0, 1.0/ShadowMapSize.y,0,0)).x;\n\tfloat sample4 = tex2Dlod(ShadowMapSampler, vShadowTexCoord4 + float4(1.0/ShadowMapSize.x, 1.0/ShadowMapSize.y,0,0)).x;\n#endif\n*/\t\n\n#ifdef COLOR_SHADOW_MAP_FORMAT\n\tfloat sample1 = DecodeFloatRGBA(tex2D(ShadowMapSampler, vShadowTexCoord4));\n\tfloat sample2 = DecodeFloatRGBA(tex2D(ShadowMapSampler, vShadowTexCoord4 + float2(ShadowMapSize.z, 0)));\n\tfloat sample3 = DecodeFloatRGBA(tex2D(ShadowMapSampler, vShadowTexCoord4 + float2(0, ShadowMapSize.w))); \n\tfloat sample4 = DecodeFloatRGBA(tex2D(ShadowMapSampler, vShadowTexCoord4 + float2(ShadowMapSize.z, ShadowMapSize.w)));\n#else\n\n\tfloat4 sample = float4(\n\ttex2Dlod(ShadowMapSampler, vShadowTexCoord4).x,\n\ttex2Dlod(ShadowMapSampler, vShadowTexCoord4 + float4(ShadowMapSize.z, 0,0,0)).x,\n\ttex2Dlod(ShadowMapSampler, vShadowTexCoord4 + float4(0, ShadowMapSize.w,0,0)).x,\n\ttex2Dlod(ShadowMapSampler, vShadowTexCoord4 + float4(ShadowMapSize.z, ShadowMapSize.w,0,0)).x\n\t);\n#endif\n\n/*\n\tfSamples[0] = (sample1 + bias < fLightDepth) ? 0.0f: 1.0f;  \n\tfSamples[1] = (sample2 + bias < fLightDepth) ? 0.0f: 1.0f;  \n\tfSamples[2] = (sample3 + bias < fLightDepth) ? 0.0f: 1.0f;  \n\tfSamples[3] = (sample4 + bias < fLightDepth) ? 0.0f: 1.0f;  \n\t*/\n\t/*\n\tfloat4 fSamples = float4(\n\tstep(fLightDepth, sample1 + bias),\n\tstep(fLightDepth, sample2 + bias),\n\tstep(fLightDepth, sample3 + bias),\n\tstep(fLightDepth, sample4 + bias));\n\t  */\n\n\t//float4 fSamples = step(fLightDepth, sample + bias);\n\t//float4 fSamples = (fLightDepth <= sample + bias ? 1 : saturate((1 - sample*3))); //causes bad shadowing in interiors\n\tfloat4 fSamples = (fLightDepth <= sample + bias ? 1 : 0);\n\n    \n\t// lerp between the shadow values to calculate our light amount\n\tfloat fShadowTermL = lerp(lerp(fSamples[0], fSamples[1], vLerps.x), lerp( fSamples[2], fSamples[3], vLerps.x), vLerps.y);\t\t\t\t\t\t\t  \n\n\treturn fShadowTermL;\t\t\t\t\t\t\t\t \n}\n\nfloat GetShadowSample(float2 vSamplePoint, float fLightDepth, float bias)\n{\n#ifdef COLOR_SHADOW_MAP_FORMAT\n\t\t\tfloat fDepth = DecodeFloatRGBA(tex2D(ShadowMapSampler, float2(vSamplePoint.x,vSamplePoint.y)));\n#else\n\t\t\tfloat fDepth = tex2Dlod(ShadowMapSampler, float4(vSamplePoint.x,vSamplePoint.y,0,0)).x;\n#endif\n\n\t//float fSample = (fLightDepth <= fDepth + bias ? 1 : (1 - fDepth));\n\tfloat fSample = (fLightDepth <= fDepth + bias ? 1 : 0);\n\treturn fSample;\n}\n\n// Calculates the shadow term using PCF soft-shadowing\nfloat CalcShadowTermSoftPCF(float fLightDepth, float2 vShadowTexCoord, int iSqrtSamples, float bias)\n{\n\tfloat fShadowTerm = 0.0f;  \n\t\t\n\tfloat fRadius = (iSqrtSamples - 1.0f) / 2;\n\tfloat fWeightAccum = 0.0f;\n\t\n\tfor (float y = -fRadius; y <= fRadius; y++)\n\t{\n\t\tfor (float x = -fRadius; x <= fRadius; x++)\n\t\t{\n\t\t\tfloat2 vOffset = 0;\n\t\t\tvOffset = float2(x, y);\t\t\t\t\n\t\t\tvOffset *= ShadowMapSize.zw;\n\t\t\tfloat2 vSamplePoint = vShadowTexCoord + vOffset;\t\t\t\n\t\t\tfloat fSample = GetShadowSample(vSamplePoint, fLightDepth, bias);\n\t\t\t\n\t\t\t// Edge tap smoothing\n\t\t\tfloat xWeight = 1;\n\t\t\tfloat yWeight = 1;\n\t\t\t\n\t\t\tif (x == -fRadius)\n\t\t\t\txWeight = 1 - frac(vShadowTexCoord.x * ShadowMapSize.x);\n\t\t\telse if (x == fRadius)\n\t\t\t\txWeight = frac(vShadowTexCoord.x * ShadowMapSize.x);\n\t\t\t\t\n\t\t\tif (y == -fRadius)\n\t\t\t\tyWeight = 1 - frac(vShadowTexCoord.y * ShadowMapSize.y);\n\t\t\telse if (y == fRadius)\n\t\t\t\tyWeight = frac(vShadowTexCoord.y * ShadowMapSize.y);\n\t\t\t\t\n\t\t\tfShadowTerm += fSample * xWeight * yWeight;\n\t\t\tfWeightAccum = xWeight * yWeight;\n\t\t}\t\t\t\t\t\t\t\t\t\t\t\n\t}\t\t\n\t\n\tfShadowTerm /= (iSqrtSamples * iSqrtSamples);\n\tfShadowTerm *= 1.55f;\t\n\t\n\treturn fShadowTerm;\n}\n\n\nfloat3 GetShadowTermFromPosition(float4 vPositionVS, float testDepth, int iFilterSize, float bias, out float diff)\n{\n\t//\n\t// Trick to efficiently select appropriate cascade http://aras-p.info/blog/2009/11/04/deferred-cascaded-shadow-maps/\n\t//\n\n\n\thalf3 vColor = half3(1,1,1);\n\tint iCurrentSplit = 0;\n\n\n\t\t\t\t/*\n\t// Unrolling the loop allows for a performance boost on the 360\n\tfor (int i = 1; i < NUM_SPLITS; i++)\n\t{\n\t\tif (testDepth <= ClipPlanes[i].x && testDepth > ClipPlanes[i].y)\n\t\t{\n\t\t\tiCurrentSplit = i;\n\t\t}\n\t}\n\t\t\t  */\n\n\tfloat4 nears = testDepth <= float4(ClipPlanes[0].x,ClipPlanes[1].x,ClipPlanes[2].x,ClipPlanes[3].x);\n\tfloat4 fars = testDepth > float4(ClipPlanes[0].y,ClipPlanes[1].y,ClipPlanes[2].y,ClipPlanes[3].y);\n\n\tiCurrentSplit = (int)dot(nears * fars, float4(0,1,2,3));\n\t\t\t\t\n\n\tdiff = ClipPlanes[iCurrentSplit].y - testDepth;\n\n\tif (testDepth <= ClipPlanes[3].y)\n\t{\n\t\t\t//discard;\n\t\t\t//iCurrentSplit = 2;\n\t\t\treturn FAR_SHADOW_COLOR;\n\t}\n\n\tfloat farBlend = testDepth + CASCADE_FAR_BLEND_DISTANCE <= ClipPlanes[3].y ? (testDepth - ClipPlanes[3].y) / CASCADE_FAR_BLEND_DISTANCE : 1.0f;\n\n\n\t// Figure out which split this pixel belongs to, based on view-space depth.\n\tfloat fOffset = offsets[iCurrentSplit];\n\t\t\t\n\t// If we're showing the split colors, set the coloring\n\tvColor = ShowSplitColors ? vSplitColors[iCurrentSplit] : vColor;\n\t\n\t////////////////////////////////////////////////////\n\t// Determine the depth of the pixel with respect to the light\n\tfloat4x4 matViewToLightViewProj = LightViewProjMatrices[iCurrentSplit];\n\t//float4x4 matViewToLightViewProj = mul(InvViewMatrix, matLightViewProj);\n\t\n\tfloat4 vPositionLightCS = mul(vPositionVS, matViewToLightViewProj);\n\t\n\tvPositionLightCS /= vPositionLightCS.w;\n\n\t// Transform from light space to shadow map texture space.\n    float2 vShadowTexCoord = 0.5 * vPositionLightCS.xy + float2(0.5f, 0.5f);\n    vShadowTexCoord.x = vShadowTexCoord.x * NUM_SPLITS_INV + fOffset;\n    vShadowTexCoord.y = 1.0f - vShadowTexCoord.y;\n        \n    // Offset the coordinate by half a texel so we sample it correctly\n    vShadowTexCoord += (0.5f * ShadowMapSize.zw);\n\t\n\t////////////////////////////////////////////////////\n\n\t// -> predpocitat shadowmap matrices\n        \n\n\t// Get the shadow occlusion factor and output it\n\tfloat fShadowTerm = 0;\n\n\t// bias -> pri rendru shadowmapy\n\t//float biasTotal = ShadowBias * (iCurrentSplit + 1) + SlopeBias * bias * (iCurrentSplit == 0 ? 1 : iCurrentSplit * SlopeCascadeMultiplier);\n\tfloat biasTotal = ShadowBias * cascadeBiases[iCurrentSplit].x + SlopeBias * bias * (iCurrentSplit == 0 ? 1 : cascadeBiases[iCurrentSplit].y * SlopeCascadeMultiplier);\n\t\t  \n\tfShadowTerm = CalcShadowTermPCF(vPositionLightCS.z, vShadowTexCoord,  biasTotal);\n\n\t//fShadowTerm = GetShadowSample(vShadowTexCoord, vPositionLightCS.z,  biasTotal);\n\n\t\n\t/*\n\t#if 0\n\tif (iFilterSize == 2)\n\t\tfShadowTerm = CalcShadowTermPCF(fLightDepth, vShadowTexCoord,  biasTotal);\n\telse\n\t\tfShadowTerm = CalcShadowTermSoftPCF(fLightDepth, vShadowTexCoord, iFilterSize, biasTotal);\n\t#else\n\t\tfShadowTerm = CalcShadowTermRndRot(vShadowTexCoord,rndRot,fLightDepth,biasTotal);\n\t#endif\n\t\t*/\n\t//return fShadowTerm * vColor;\t\n\n\t\t//return float3(SlopeBias*abs(ddistddx), SlopeBias*abs(ddistddy), 0);\n\treturn  lerp(FAR_SHADOW_COLOR, fShadowTerm * vColor, farBlend);\n}\n\n\n"
  },
  {
    "path": "Effects/MyEffectSpotShadowBase.fxh",
    "content": "#include \"../MyEffectBase.fxh\"\n\nfloat\t\tShadowBias = 0.000195f;\nfloat\t\tSlopeBias = 0.0195f;\nfloat2\t\tShadowMapSize;\nfloat4x4\tInvViewMatrix;\nfloat4x4\tLightViewProjectionShadow;\n\ntexture ShadowMap;\nsampler2D ShadowMapSampler = sampler_state\n{\n    Texture = <ShadowMap>;\n    MinFilter = POINT; \n    MagFilter = POINT; \n    MipFilter = none; \n};\n\n// Calculates the shadow occlusion using bilinear PCF\nfloat CalcShadowTermPCF(float fLightDepth, float2 vShadowTexCoord, float bias)\n{\n\t// transform to texel space\n\tfloat2 vShadowMapCoord = ShadowMapSize * vShadowTexCoord;\n    \n\t// Determine the lerp amounts           \n\tfloat2 vLerps = frac(vShadowMapCoord);\n\n\t// Read in the 4 samples, doing a depth check for each\n\tfloat fSamples[4];\t\n\tfloat4 vShadowTexCoord4 = float4(vShadowTexCoord.x,vShadowTexCoord.y,0,0);\n\tfSamples[0] = (tex2Dlod(ShadowMapSampler, vShadowTexCoord4).x + bias < fLightDepth) ? 0.0f: 1.0f;  \n\tfSamples[1] = (tex2Dlod(ShadowMapSampler, vShadowTexCoord4 + float4(1.0/ShadowMapSize.x, 0,0,0)).x + bias < fLightDepth) ? 0.0f: 1.0f;  \n\tfSamples[2] = (tex2Dlod(ShadowMapSampler, vShadowTexCoord4 + float4(0, 1.0/ShadowMapSize.y,0,0)).x + bias < fLightDepth) ? 0.0f: 1.0f;  \n\tfSamples[3] = (tex2Dlod(ShadowMapSampler, vShadowTexCoord4 + float4(1.0/ShadowMapSize.x, 1.0/ShadowMapSize.y,0,0)).x + bias < fLightDepth) ? 0.0f: 1.0f;  \n    \n\t// lerp between the shadow values to calculate our light amount\n\tfloat fShadowTermL = lerp(lerp(fSamples[0], fSamples[1], vLerps.x), lerp( fSamples[2], fSamples[3], vLerps.x), vLerps.y);\t\t\t\t\t\t\t  \n\n\treturn fShadowTermL;\t\t\t\t\t\t\t\t \n}\n\n\nfloat GetShadowSample(float2 vSamplePoint, float fLightDepth, float bias)\n{\n\tfloat fDepth = tex2Dlod(ShadowMapSampler, float4(vSamplePoint.x,vSamplePoint.y,0,0)).x;\n\tfloat fSample = (fLightDepth <= fDepth + bias);\n\treturn fSample;\n}\n\n// Calculates the shadow term using PCF soft-shadowing\nfloat CalcShadowTermSoftPCF(float fLightDepth, float2 vShadowTexCoord, int iSqrtSamples, float bias)\n{\n\tfloat fShadowTerm = 0.0f;  \n\t\t\n\tfloat fRadius = (iSqrtSamples - 1.0f) / 2;\n\tfloat fWeightAccum = 0.0f;\n\t\n\tfor (float y = -fRadius; y <= fRadius; y++)\n\t{\n\t\tfor (float x = -fRadius; x <= fRadius; x++)\n\t\t{\n\t\t\tfloat2 vOffset = 0;\n\t\t\tvOffset = float2(x, y);\t\t\t\t\n\t\t\tvOffset /= ShadowMapSize;\n\t\t\tfloat2 vSamplePoint = vShadowTexCoord + vOffset;\t\t\t\n\t\t\tfloat fSample = GetShadowSample(vSamplePoint, fLightDepth, bias);\n\t\t\t\n\t\t\t// Edge tap smoothing\n\t\t\tfloat xWeight = 1;\n\t\t\tfloat yWeight = 1;\n\t\t\t\n\t\t\tif (x == -fRadius)\n\t\t\t\txWeight = 1 - frac(vShadowTexCoord.x * ShadowMapSize.x);\n\t\t\telse if (x == fRadius)\n\t\t\t\txWeight = frac(vShadowTexCoord.x * ShadowMapSize.x);\n\t\t\t\t\n\t\t\tif (y == -fRadius)\n\t\t\t\tyWeight = 1 - frac(vShadowTexCoord.y * ShadowMapSize.y);\n\t\t\telse if (y == fRadius)\n\t\t\t\tyWeight = frac(vShadowTexCoord.y * ShadowMapSize.y);\n\t\t\t\t\n\t\t\tfShadowTerm += fSample * xWeight * yWeight;\n\t\t\tfWeightAccum = xWeight * yWeight;\n\t\t}\t\t\t\t\t\t\t\t\t\t\t\n\t}\t\t\n\t\n\tfShadowTerm /= (iSqrtSamples * iSqrtSamples);\n\tfShadowTerm *= 1.55f;\t\n\t\n\treturn fShadowTerm;\n}\n\n\nfloat3 GetShadowTermFromPosition(float4 vPositionVS, float testDepth, uniform int iFilterSize, float bias)\n{\n\t// Determine the depth of the pixel with respect to the light\n\tfloat4x4 matViewToLightViewProj = mul(InvViewMatrix, LightViewProjectionShadow);\n\t\n\tfloat4 vPositionLightCS = mul(vPositionVS, matViewToLightViewProj);\n\t\n\thalf fLightDepth = vPositionLightCS.z / vPositionLightCS.w;\t\n\t\n\t// Transform from light space to shadow map texture space.\n    half2 vShadowTexCoord = 0.5 * vPositionLightCS.xy / vPositionLightCS.w + float2(0.5f, 0.5f);\n    vShadowTexCoord.x = vShadowTexCoord.x;\n    vShadowTexCoord.y = 1.0f - vShadowTexCoord.y;\n        \n    // Offset the coordinate by half a texel so we sample it correctly\n    vShadowTexCoord += (0.5f / ShadowMapSize);\n\t\n\tfloat fShadowTerm = 0;\n\n\tif (iFilterSize > 0)\n\t{\n\t\thalf biasTotal = ShadowBias + SlopeBias * bias * bias * bias;\n\n\t\t// Get the shadow occlusion factor and output it\n\t\tfShadowTerm = CalcShadowTermSoftPCF(fLightDepth, vShadowTexCoord, iFilterSize, biasTotal);\n\t}\n\telse\n\t{\n\t\tfShadowTerm = GetShadowSample(vShadowTexCoord, fLightDepth, 0);\n\t}\n\t\t\n\treturn fShadowTerm;\t\n\n\t\t//return float3(SlopeBias*abs(ddistddx), SlopeBias*abs(ddistddy), 0);\n\t//return  lerp(FAR_SHADOW_COLOR, fShadowTerm * vColor, farBlend);\n}"
  },
  {
    "path": "Effects/MyEffectSprite.fx",
    "content": "#include \"MyEffectBase.fxh\"\n\nfloat2 HalfPixel;\n\nTexture SpriteTexture;\nsampler SpriteTextureSampler = sampler_state \n{ \n\ttexture = <SpriteTexture> ; \n\tmagfilter = LINEAR; \n\tminfilter = LINEAR; \n\tmipfilter = LINEAR; \n\tAddressU = clamp; \n\tAddressV = clamp;\n};\n\nstruct VertexShaderInput\n{\n    float4 Position : POSITION0;\n    float2 TexCoord : TEXCOORD0;\n    float4 Color : COLOR0;\n};\n\nstruct VertexShaderOutput\n{\n    float4 Position : POSITION0;\n    float2 TexCoord : TEXCOORD0;\n    float4 Color : COLOR0;\n};\n\nVertexShaderOutput VertexShaderFunction(VertexShaderInput input)\n{\n    VertexShaderOutput output;\n    output.Position = input.Position;\n    output.TexCoord = input.TexCoord + HalfPixel;\n    output.Color = input.Color;\n    return output;\n}\n\nfloat4 PixelShaderFunction(VertexShaderOutput input) : COLOR0\n{\n    return tex2D(SpriteTextureSampler, input.TexCoord) * input.Color;    \n}\n\ntechnique Technique_RenderQualityNormal\n{\n    pass Pass1\n    {\n\t\tVertexShader = compile vs_3_0 VertexShaderFunction();\n        PixelShader = compile ps_3_0 PixelShaderFunction();\n    }\n}"
  },
  {
    "path": "Effects/MyEffectSpriteBatchShader.fx",
    "content": "sampler TextureSampler : register(s0);\n\n#define DECLARE_TEXTURE(Name, index) \\\n    texture2D Name; \\\n    sampler Name##Sampler : register(s##index) = sampler_state { Texture = (Name); AddressU = WRAP; AddressV = WRAP; magfilter = LINEAR; minfilter = LINEAR; mipfilter = LINEAR;  };\n\n#define SAMPLE_TEXTURE(Name, texCoord)  tex2D(Name##Sampler, texCoord)\n\nDECLARE_TEXTURE(Texture1, 1);\nDECLARE_TEXTURE(Texture2, 2);\nfloat2 Texture2Tiling = (1.0,1.0);\n\n\nfloat4 TextureOverlapMergeEffectMain(float4 color : COLOR0, float2 texCoord : TEXCOORD0) : COLOR0\n{\n\n    float4 tex1color = tex2D(TextureSampler, texCoord);\n    float4 tex2overlay = SAMPLE_TEXTURE(Texture2, texCoord * Texture2Tiling);\n\t\n    float4 retColor = tex1color;\n    retColor *= color;\n    retColor *= (1-tex2overlay.a);\n    retColor.a = 0/*(tex1color.r+tex1color.g+tex1color.b)/3.0*/;\n    return retColor;\n\n}\n\n\n\ntechnique TextureOverlapMergeEffect\n{\n    pass Pass1\n    {\n        PixelShader = compile ps_2_0 TextureOverlapMergeEffectMain();\n    }\n}\n\n\n\n"
  },
  {
    "path": "Effects/MyPerlinNoise.fxh",
    "content": "/*\n    FX implementation of Ken Perlin's \"Improved Noise\"\n    sgg 6/26/04\n    http://mrl.nyu.edu/~perlin/noise/\n*/\n\n// permutation table\nstatic int permutation[] = { 151,160,137,91,90,15,\n131,13,201,95,96,53,194,233,7,225,140,36,103,30,69,142,8,99,37,240,21,10,23,\n190, 6,148,247,120,234,75,0,26,197,62,94,252,219,203,117,35,11,32,57,177,33,\n88,237,149,56,87,174,20,125,136,171,168, 68,175,74,165,71,134,139,48,27,166,\n77,146,158,231,83,111,229,122,60,211,133,230,220,105,92,41,55,46,245,40,244,\n102,143,54, 65,25,63,161, 1,216,80,73,209,76,132,187,208, 89,18,169,200,196,\n135,130,116,188,159,86,164,100,109,198,173,186, 3,64,52,217,226,250,124,123,\n5,202,38,147,118,126,255,82,85,212,207,206,59,227,47,16,58,17,182,189,28,42,\n223,183,170,213,119,248,152, 2,44,154,163, 70,221,153,101,155,167, 43,172,9,\n129,22,39,253, 19,98,108,110,79,113,224,232,178,185, 112,104,218,246,97,228,\n251,34,242,193,238,210,144,12,191,179,162,241, 81,51,145,235,249,14,239,107,\n49,192,214, 31,181,199,106,157,184, 84,204,176,115,121,50,45,127, 4,150,254,\n138,236,205,93,222,114,67,29,24,72,243,141,128,195,78,66,215,61,156,180\n};\n\n// gradients for 3d noise\nstatic float3 g[] = {\n    1,1,0,\n    -1,1,0,\n    1,-1,0,\n    -1,-1,0,\n    1,0,1,\n    -1,0,1,\n    1,0,-1,\n    -1,0,-1, \n    0,1,1,\n    0,-1,1,\n    0,1,-1,\n    0,-1,-1,\n    1,1,0,\n    0,-1,1,\n    -1,1,0,\n    0,-1,-1,\n};\n\n// gradients for 4D noise\nstatic float4 g4[] = {\n\t0, -1, -1, -1,\n\t0, -1, -1, 1,\n\t0, -1, 1, -1,\n\t0, -1, 1, 1,\n\t0, 1, -1, -1,\n\t0, 1, -1, 1,\n\t0, 1, 1, -1,\n\t0, 1, 1, 1,\n\t-1, -1, 0, -1,\n\t-1, 1, 0, -1,\n\t1, -1, 0, -1,\n\t1, 1, 0, -1,\n\t-1, -1, 0, 1,\n\t-1, 1, 0, 1,\n\t1, -1, 0, 1,\n\t1, 1, 0, 1,\n\t\n\t-1, 0, -1, -1,\n\t1, 0, -1, -1,\n\t-1, 0, -1, 1,\n\t1, 0, -1, 1,\n\t-1, 0, 1, -1,\n\t1, 0, 1, -1,\n\t-1, 0, 1, 1,\n\t1, 0, 1, 1,\n\t0, -1, -1, 0,\n\t0, -1, -1, 0,\n\t0, -1, 1, 0,\n\t0, -1, 1, 0,\n\t0, 1, -1, 0,\n\t0, 1, -1, 0,\n\t0, 1, 1, 0,\n\t0, 1, 1, 0,\n};\t\n\n\n// Textures\n\ntexture permTexture\n<\n    string texturetype = \"2D\";\n    string format = \"l8\";\n\tstring function = \"GeneratePermTexture\";\n\tint width = 256, height = 1;\n>;\n\ntexture permTexture2d\n<\n    string texturetype = \"2D\";\n    string format = \"a8r8g8b8\";\n\tstring function = \"GeneratePermTexture2d\";\n\tint width = 256, height = 256;\n>;\n\ntexture gradTexture\n<\n    string texturetype = \"2D\";\n\tstring format = \"q8w8v8u8\";\n\tstring function = \"GenerateGradTexture\";\n\tint width = 16, height = 1;\n>;\n\ntexture permGradTexture\n<\n    string texturetype = \"2D\";\n\tstring format = \"q8w8v8u8\";\n\tstring function = \"GeneratePermGradTexture\";\n\tint width = 256, height = 1;\n>;\n\ntexture permGrad4dTexture\n<\n    string texturetype = \"2D\";\n\tstring format = \"q8w8v8u8\";\n\tstring function = \"GeneratePermGrad4dTexture\";\n\tint width = 256, height = 1;\n>;\n\ntexture gradTexture4d\n<\n    string texturetype = \"2D\";\n\tstring format = \"q8w8v8u8\";\n\tstring function = \"GenerateGradTexture4d\";\n\tint width = 32, height = 1;\n>;\n\n// Functions to generate textures using CPU runtime\n\nfloat4 GeneratePermTexture(float p : POSITION) : COLOR\n{\n\treturn permutation[p*256] / 255.0;\n}\n\n// 2d permutation texture for optimized version\nint perm(int i)\n{\n\treturn permutation[i % 256];\n}\n\nfloat4 GeneratePermTexture2d(float2 p : POSITION) : COLOR\n{\n\tp *= 256;\n\tint A = perm(p.x) + p.y;\n\tint AA = perm(A);\n\tint AB = perm(A + 1);\n  \tint B =  perm(p.x + 1) + p.y;\n  \tint BA = perm(B);\n  \tint BB = perm(B + 1);\n\treturn float4(AA, AB, BA, BB) / 255.0;\n}\n\nfloat3 GenerateGradTexture(float p : POSITION) : COLOR\n{\n\treturn g[p*16];\n}\n\n// permuted gradient texture for optimized version\nfloat3 GeneratePermGradTexture(float p : POSITION) : COLOR\n{\n\treturn g[ permutation[p*256] % 16 ];\n}\n\nfloat3 GeneratePermGrad4dTexture(float p : POSITION) : COLOR\n{\n\treturn g4[ permutation[p*256] % 32 ];\n}\n\nfloat4 GenerateGradTexture4d(float p : POSITION) : COLOR\n{\n\treturn g4[p*32];\n}\n\nsampler permSampler = sampler_state \n{\n    texture = <permTexture>;\n    AddressU  = Wrap;        \n    AddressV  = Clamp;\n    MAGFILTER = POINT;\n    MINFILTER = POINT;\n    MIPFILTER = NONE;   \n};\n\nsampler permSampler2d = sampler_state \n{\n    texture = <permTexture2d>;\n    AddressU  = Wrap;        \n    AddressV  = Wrap;\n    MAGFILTER = POINT;\n    MINFILTER = POINT;\n    MIPFILTER = NONE;   \n};\n\nsampler gradSampler = sampler_state \n{\n    texture = <gradTexture>;\n    AddressU  = Wrap;        \n    AddressV  = Clamp;\n    MAGFILTER = POINT;\n    MINFILTER = POINT;\n    MIPFILTER = NONE;\n};\n\nsampler permGradSampler = sampler_state \n{\n    texture = <permGradTexture>;\n    AddressU  = Wrap;        \n    AddressV  = Clamp;\n    MAGFILTER = POINT;\n    MINFILTER = POINT;\n    MIPFILTER = NONE;\n};\n\nsampler permGrad4dSampler = sampler_state \n{\n    texture = <permGrad4dTexture>;\n    AddressU  = Wrap;        \n    AddressV  = Clamp;\n    MAGFILTER = POINT;\n    MINFILTER = POINT;\n    MIPFILTER = NONE;\n};\n\nsampler gradSampler4d = sampler_state \n{\n    texture = <gradTexture4d>;\n    AddressU  = Wrap;        \n    AddressV  = Clamp;\n    MAGFILTER = POINT;\n    MINFILTER = POINT;\n    MIPFILTER = NONE;\n};\n\nfloat3 fade(float3 t)\n{\n\treturn t * t * t * (t * (t * 6 - 15) + 10); // new curve\n//\treturn t * t * (3 - 2 * t); // old curve\n}\n\nfloat4 fade(float4 t)\n{\n\treturn t * t * t * (t * (t * 6 - 15) + 10); // new curve\n//\treturn t * t * (3 - 2 * t); // old curve\n}\n\nfloat perm(float x)\n{\n\treturn tex1D(permSampler, x);\n}\n\nfloat4 perm2d(float2 p)\n{\n\treturn tex2D(permSampler2d, p);\n}\n\nfloat grad(float x, float3 p)\n{\n\treturn dot(tex1D(gradSampler, x*16), p);\n}\n\nfloat gradperm(float x, float3 p)\n{\n\treturn dot(tex1D(permGradSampler, x), p);\n}\n\n// 4d versions\nfloat grad(float x, float4 p)\n{\n\treturn dot(tex1D(gradSampler4d, x), p);\n}\n\nfloat gradperm(float x, float4 p)\n{\n\treturn dot(tex1D(permGrad4dSampler, x), p);\n}\n\n// 3D noise\n#if 0\n\n// original version\nfloat inoise(float3 p)\n{\n\tfloat3 P = fmod(floor(p), 256.0);\t// FIND UNIT CUBE THAT CONTAINS POINT\n  \tp -= floor(p);                      // FIND RELATIVE X,Y,Z OF POINT IN CUBE.\n\tfloat3 f = fade(p);                 // COMPUTE FADE CURVES FOR EACH OF X,Y,Z.\n\n\tP = P / 256.0;\n\tconst float one = 1.0 / 256.0;\n\t\n    // HASH COORDINATES OF THE 8 CUBE CORNERS\n  \tfloat A = perm(P.x) + P.y;\n  \tfloat4 AA;\n  \tAA.x = perm(A) + P.z;\n\tAA.y = perm(A + one) + P.z;\n  \tfloat B =  perm(P.x + one) + P.y;\n  \tAA.z = perm(B) + P.z;\n  \tAA.w = perm(B + one) + P.z;\n \n\t// AND ADD BLENDED RESULTS FROM 8 CORNERS OF CUBE\n  \treturn lerp( lerp( lerp( grad(perm(AA.x    ), p ),  \n                             grad(perm(AA.z    ), p + float3(-1, 0, 0) ), f.x),\n                       lerp( grad(perm(AA.y    ), p + float3(0, -1, 0) ),\n                             grad(perm(AA.w    ), p + float3(-1, -1, 0) ), f.x), f.y),\n                             \n                 lerp( lerp( grad(perm(AA.x+one), p + float3(0, 0, -1) ),\n                             grad(perm(AA.z+one), p + float3(-1, 0, -1) ), f.x),\n                       lerp( grad(perm(AA.y+one), p + float3(0, -1, -1) ),\n                             grad(perm(AA.w+one), p + float3(-1, -1, -1) ), f.x), f.y), f.z);\n}\n\n#else\n\n// optimized version\nfloat inoise(float3 p)\n{\n\tfloat3 P = fmod(floor(p), 256.0);\t// FIND UNIT CUBE THAT CONTAINS POINT\n  \tp -= floor(p);                      // FIND RELATIVE X,Y,Z OF POINT IN CUBE.\n\tfloat3 f = fade(p);                 // COMPUTE FADE CURVES FOR EACH OF X,Y,Z.\n\n\tP = P / 256.0;\n\tconst float one = 1.0 / 256.0;\n\t\n    // HASH COORDINATES OF THE 8 CUBE CORNERS\n\tfloat4 AA = perm2d(P.xy) + P.z;\n \n\t// AND ADD BLENDED RESULTS FROM 8 CORNERS OF CUBE\n  \treturn lerp( lerp( lerp( gradperm(AA.x, p ),  \n                             gradperm(AA.z, p + float3(-1, 0, 0) ), f.x),\n                       lerp( gradperm(AA.y, p + float3(0, -1, 0) ),\n                             gradperm(AA.w, p + float3(-1, -1, 0) ), f.x), f.y),\n                             \n                 lerp( lerp( gradperm(AA.x+one, p + float3(0, 0, -1) ),\n                             gradperm(AA.z+one, p + float3(-1, 0, -1) ), f.x),\n                       lerp( gradperm(AA.y+one, p + float3(0, -1, -1) ),\n                             gradperm(AA.w+one, p + float3(-1, -1, -1) ), f.x), f.y), f.z);\n}\n\n#endif\n\n// 4D noise\nfloat inoise(float4 p)\n{\n\tfloat4 P = fmod(floor(p), 256.0);\t// FIND UNIT HYPERCUBE THAT CONTAINS POINT\n  \tp -= floor(p);                      // FIND RELATIVE X,Y,Z OF POINT IN CUBE.\n\tfloat4 f = fade(p);                 // COMPUTE FADE CURVES FOR EACH OF X,Y,Z, W\n\tP = P / 256.0;\n\tconst float one = 1.0 / 256.0;\n\t\n    // HASH COORDINATES OF THE 16 CORNERS OF THE HYPERCUBE\n  \tfloat A = perm(P.x) + P.y;\n  \tfloat AA = perm(A) + P.z;\n  \tfloat AB = perm(A + one) + P.z;\n  \tfloat B =  perm(P.x + one) + P.y;\n  \tfloat BA = perm(B) + P.z;\n  \tfloat BB = perm(B + one) + P.z;\n\n\tfloat AAA = perm(AA)+P.w, AAB = perm(AA+one)+P.w;\n    float ABA = perm(AB)+P.w, ABB = perm(AB+one)+P.w;\n    float BAA = perm(BA)+P.w, BAB = perm(BA+one)+P.w;\n    float BBA = perm(BB)+P.w, BBB = perm(BB+one)+P.w;\n\n\t// INTERPOLATE DOWN\n  \treturn lerp(\n  \t\t\t\tlerp( lerp( lerp( grad(perm(AAA), p ),  \n                                  grad(perm(BAA), p + float4(-1, 0, 0, 0) ), f.x),\n                            lerp( grad(perm(ABA), p + float4(0, -1, 0, 0) ),\n                                  grad(perm(BBA), p + float4(-1, -1, 0, 0) ), f.x), f.y),\n                                  \n                      lerp( lerp( grad(perm(AAB), p + float4(0, 0, -1, 0) ),\n                                  grad(perm(BAB), p + float4(-1, 0, -1, 0) ), f.x),\n                            lerp( grad(perm(ABB), p + float4(0, -1, -1, 0) ),\n                                  grad(perm(BBB), p + float4(-1, -1, -1, 0) ), f.x), f.y), f.z),\n                            \n  \t\t\t\t lerp( lerp( lerp( grad(perm(AAA+one), p + float4(0, 0, 0, -1)),\n                                   grad(perm(BAA+one), p + float4(-1, 0, 0, -1) ), f.x),\n                             lerp( grad(perm(ABA+one), p + float4(0, -1, 0, -1) ),\n                                   grad(perm(BBA+one), p + float4(-1, -1, 0, -1) ), f.x), f.y),\n                                   \n                       lerp( lerp( grad(perm(AAB+one), p + float4(0, 0, -1, -1) ),\n                                   grad(perm(BAB+one), p + float4(-1, 0, -1, -1) ), f.x),\n                             lerp( grad(perm(ABB+one), p + float4(0, -1, -1, -1) ),\n                                   grad(perm(BBB+one), p + float4(-1, -1, -1, -1) ), f.x), f.y), f.z), f.w);\n}\n\n\n// utility functions\n\n// calculate gradient of noise (expensive!)\nfloat3 inoiseGradient(float3 p, float d)\n{\n\tfloat f0 = inoise(p);\n\tfloat fx = inoise(p + float3(d, 0, 0));\t\n\tfloat fy = inoise(p + float3(0, d, 0));\n\tfloat fz = inoise(p + float3(0, 0, d));\n\treturn float3(fx - f0, fy - f0, fz - f0) / d;\n}\n\n// fractal sum\nfloat fBm(float3 p, int octaves, float lacunarity = 2.0, float gain = 0.5)\n{\n\tfloat freq = 1.0, amp = 0.5;\n\tfloat sum = 0;\t\n\tfor(int i=0; i<octaves; i++) {\n\t\tsum += inoise(p*freq)*amp;\n\t\tfreq *= lacunarity;\n\t\tamp *= gain;\n\t}\n\treturn sum;\n}\n\nfloat turbulence(float3 p, int octaves, float4 offsets, float lacunarity = 2.0, float gain = 0.5)\n{\n\tfloat sum = 0;\n\tfloat freq = 1.0, amp = 1.0;\n\tfor(int i=0; i<octaves; i++) \n\t{\n\t\tsum += abs(inoise(p*freq + offsets[i%4]))*amp;\n\t\tfreq *= lacunarity;\n\t\tamp *= gain;\n\t}\n\treturn sum;\n}\n\n\nfloat noiseFog(float3 worldPos, float3 cameraPos, float scale, float density, float4 animation)\n{\n\tfloat Turbulence = turbulence(worldPos * scale, 4, animation);\n\tfloat Density = density * Turbulence;\n\n\t// calculating the fog factor\n\tfloat f = exp(-pow(Density * distance(cameraPos, worldPos) / FAR_PLANE_DISTANCE, 2.0f));\n\treturn f;\n}\n\nfloat noiseFogNebula(float3 worldPos, float3 cameraPos, float scale, float density, float4 animation)\n{\n\tfloat Turbulence = turbulence(worldPos * scale, 4, animation);\n\tfloat Density = density * Turbulence;\n\n\t// calculating the fog factor\n\tfloat f = exp(-pow(Density * distance(cameraPos, worldPos), 2.0f));\n\treturn f;\n}\n\n\n// Ridged multifractal\n// See \"Texturing & Modeling, A Procedural Approach\", Chapter 12\nfloat ridge(float h, float offset)\n{\n    h = abs(h);\n    h = offset - h;\n    h = h * h;\n    return h;\n}\n\nfloat ridgedmf(float3 p, int octaves, float lacunarity = 2.0, float gain = 0.5, float offset = 1.0)\n{\n\tfloat sum = 0;\n\tfloat freq = 1.0, amp = 0.5;\n\tfloat prev = 1.0;\n\tfor(int i=0; i<octaves; i++) {\n\t\tfloat n = ridge(inoise(p*freq), offset);\n\t\tsum += n*amp*prev;\n\t\tprev = n;\n\t\tfreq *= lacunarity;\n\t\tamp *= gain;\n\t}\n\treturn sum;\n}\n"
  },
  {
    "path": "Effects/SSAO/MyEffectDownsampleDepthForSSAO.fx",
    "content": "//\tThis shader runs on fullscreen quad and for each destination pixel finds four neighbourhood pixels in SourceDepthsRT\n//\tThen find the largest value and writes it into destination pixel.\n\n#include \"../MyEffectBase.fxh\"\n\nfloat2\t\tHalfPixel;\n\nTexture SourceDepthsRT;\nsampler SourceDepthsRTSampler = sampler_state \n{ \n\ttexture = <SourceDepthsRT> ; \n\tmagfilter = POINT; \n\tminfilter = POINT; \n\tmipfilter = NONE; \n\tAddressU = clamp; \n\tAddressV = clamp;\n};\n\nstruct VertexShaderInput\n{\n    float4 Position : POSITION0;\n    float2 TexCoord : TEXCOORD0;\n};\n\nstruct VertexShaderOutput\n{\n    float4 Position : POSITION0;\n    float2 TexCoord : TEXCOORD0;\n};\n\nVertexShaderOutput VertexShaderFunction(VertexShaderInput input)\n{\n    //\tWe're using a full screen quad, no need for transforming vertices.\n    VertexShaderOutput output;\n    output.Position = input.Position;\n    output.TexCoord = input.TexCoord + 2 * HalfPixel;\n    return output;\n}\n\nfloat4 PixelShaderFunction(VertexShaderOutput input) : COLOR0\n{\t\n\t//\tWe find values at four texels around our texel, and then later find the largest values (most distant distance)\n\tfloat leftTop = DecodeFloatRGBA(tex2D(SourceDepthsRTSampler, input.TexCoord + float2(-HalfPixel.x, -HalfPixel.y)));\n\tfloat rightTop = DecodeFloatRGBA(tex2D(SourceDepthsRTSampler, input.TexCoord + float2(+HalfPixel.x, -HalfPixel.y)));\t\n\tfloat rightBottom = DecodeFloatRGBA(tex2D(SourceDepthsRTSampler, input.TexCoord + float2(+HalfPixel.x, +HalfPixel.y)));\n\tfloat leftBottom = DecodeFloatRGBA(tex2D(SourceDepthsRTSampler, input.TexCoord + float2(-HalfPixel.x, +HalfPixel.y)));\t\n\t\n\tfloat minDistance = leftTop;\n\tminDistance = min(minDistance, rightTop);\n\tminDistance = min(minDistance, rightBottom);\n\tminDistance = min(minDistance, leftBottom);\n\t\n\treturn EncodeFloatRGBA(minDistance);\t\t\n}\n\ntechnique Technique1\n{\n    pass Pass1\n    {\n\t\tVertexShader = compile vs_3_0 VertexShaderFunction();\n        PixelShader = compile ps_3_0 PixelShaderFunction();\n    }\n}"
  },
  {
    "path": "Effects/SSAO/MyEffectSSAOBlur2.fx",
    "content": "#include \"../MyEffectBase.fxh\"\n\nfloat2 HalfPixel;\nfloat2 BlurDirection;\nfloat2 SSAOHalfPixel;\nfloat samplesDiff;\n\ntexture DepthsRT;\nsampler2D DepthsRTSampler = sampler_state\n{\n\tTexture = <DepthsRT>;\n    ADDRESSU = CLAMP;\n\tADDRESSV = CLAMP;\n\tMAGFILTER = POINT;\n\tMINFILTER = POINT;\n};\n\ntexture SsaoRT;\nsampler2D SsaoRTSampler = sampler_state\n{\n\tTexture = <SsaoRT>;\n    ADDRESSU = CLAMP;\n\tADDRESSV = CLAMP;\n\tMAGFILTER = POINT;\n\tMINFILTER = POINT;\n\tMIPFILTER = NONE;\n};\n\nstruct VertexShaderInput\n{\n    float4 Position : POSITION0;\n    float2 TexCoord : TEXCOORD0;\n};\n\nstruct VertexShaderOutput\n{\n    float4 Position : POSITION0;\n    float2 TexCoord : TEXCOORD0;\n};\n\nVertexShaderOutput VertexShaderFunction(VertexShaderInput input)\n{\n    VertexShaderOutput output;\n    output.Position = input.Position;\n    output.TexCoord = input.TexCoord;\n    return output;\n}\n\nfloat4\tSSAOBlur4EmbeddedDepth(\n\t\t\t\t\t\t\t\t\t\t\tfloat2 uv0: TEXCOORD0,\n\t\t\t\t\t\t\t\t\t\t\tfloat2 uv1: TEXCOORD1,\n\t\t\t\t\t\t\t\t\t\t\tfloat2 uv2: TEXCOORD2,\n\t\t\t\t\t\t\t\t\t\t\tfloat2 uv3: TEXCOORD3,\n\t\t\t\t\t\t\t\t\t\t\tfloat2 uv4: TEXCOORD4)\n{\n\tfloat4\tsample[5];\n\tfloat4\tdepths;\n\tfloat4\tdepths2 = 0;\n\n\tsample[0] = tex2D(SsaoRTSampler, uv0 + SSAOHalfPixel);// 'pivot' sample\n\tsample[1] = tex2D(SsaoRTSampler, uv1 + SSAOHalfPixel);\n\tsample[2] = tex2D(SsaoRTSampler, uv2 + SSAOHalfPixel);\n\tsample[3] = tex2D(SsaoRTSampler, uv3 + SSAOHalfPixel);\n\tsample[4] = tex2D(SsaoRTSampler, uv4 + SSAOHalfPixel);\n\n\tdepths.x = DecodeFloatRGBA(tex2D(DepthsRTSampler, uv0 + HalfPixel)); \n\tdepths.y = DecodeFloatRGBA(tex2D(DepthsRTSampler, uv1 + HalfPixel)); \n\tdepths.z = DecodeFloatRGBA(tex2D(DepthsRTSampler, uv2 + HalfPixel)); \n\tdepths.w = DecodeFloatRGBA(tex2D(DepthsRTSampler, uv3 + HalfPixel)); \n\tdepths2.x = DecodeFloatRGBA(tex2D(DepthsRTSampler, uv4 + HalfPixel)); \n\n\tfloat4\tdiff\t\t\t= 8 * (float(1).xxxx - depths / depths.x);\n\tfloat4\tweights\t\t= saturate(float(0.5).xxxx - 0.75 * abs(diff) - 0.25 * diff);\n\tfloat\t\tsumWeight\t= weights.x + weights.y + weights.z + weights.w;\n\tfloat4\t\tsumColor;\n\n\t/*\n\tsumColor  = sample[0] * weights.x;\n\tsumColor += sample[1] * weights.y;\n\tsumColor += sample[2] * weights.z;\n\tsumColor += sample[3] * weights.w;\n\t  */\n\n\tsumColor  = sample[0];\n\tsumColor += sample[1];\n\tsumColor += sample[2];\n\tsumColor += sample[3];\n\tsumColor += sample[4];\n\n\t//return saturate(sumColor / sumWeight);\n\treturn saturate(sumColor / 5);\n}\n\n\nfloat4 PixelShaderFunction(float2 TexCoord :TEXCOORD0) : COLOR0\n{\t\t\t\t\t\t\t\t\t\t\t\t\t\t /*\n\tfloat2 uv0 = TexCoord + float2(BlurDirection.x, 0); \n\tfloat2 uv1 = TexCoord - float2(BlurDirection.x, 0);\n\tfloat2 uv2 = TexCoord + float2(0, BlurDirection.y);\n\tfloat2 uv3 = TexCoord - float2(0, BlurDirection.y);*/\n\n\tfloat2 uv0 = TexCoord; \n\tfloat2 uv1 = TexCoord - BlurDirection;\n\tfloat2 uv2 = TexCoord + BlurDirection;\n\tfloat2 uv3 = TexCoord - 2*BlurDirection;\n\tfloat2 uv4 = TexCoord + 2*BlurDirection;\n\n\treturn SSAOBlur4EmbeddedDepth(uv0, uv1, uv2, uv3, uv4);\n\t//return tex2D(SsaoRTSampler, uv1/ + SSAOHalfPixel*/);\n}\n\ntechnique SSAOBlur\n{\n    pass Pass1\n    {\n\t\tVertexShader = compile vs_3_0 VertexShaderFunction();\n        PixelShader = compile ps_3_0 PixelShaderFunction();\n    }\n}"
  },
  {
    "path": "Effects/SSAO/MyEffectVolumetricSSAO2.fx",
    "content": "#include \"../MyEffectBase.fxh\"\n\n\nTexture DepthsRT;\nsampler DepthsRTSampler = sampler_state \n{ \n\ttexture = <DepthsRT>; \n\tmagfilter = POINT; \n\tminfilter = POINT; \n\tmipfilter = none; \n\tAddressU = CLAMP; \n\tAddressV = CLAMP;\n};\n\nTexture NormalsTexture;\nsampler NormalsTextureSampler = sampler_state \n{ \n\ttexture = <NormalsTexture>; \n\tmagfilter = POINT; \n\tminfilter = POINT; \n\tmipfilter = none; \n\tAddressU = WRAP; \n\tAddressV = WRAP;\n};\n\n\nfloat2 HalfPixel;\nfloat3 FrustumCorners[4];\n\nfloat4x4 ViewMatrix;\nfloat4x4 ProjectionMatrix;\n\n\n\nstruct VertexShaderInput\n{\n\tfloat4 Position : POSITION0;\n\tfloat3 TexCoordAndCornerIndex\t: TEXCOORD0;\n};\n\nstruct VertexShaderOutput\n{\n\tfloat4 Position : POSITION0;\n\tfloat2 TexCoord : TEXCOORD0;\t\n\tfloat3 FrustumCorner : TEXCOORD1; \n};\n\nVertexShaderOutput VertexShaderFunction(VertexShaderInput input)\n{\n\tVertexShaderOutput output;\n\toutput.Position = input.Position;\n\toutput.TexCoord = input.TexCoordAndCornerIndex.xy + HalfPixel;\n\toutput.FrustumCorner = FrustumCorners[input.TexCoordAndCornerIndex.z];\n\treturn output;\n}\n\n\n\n//\n// Volumetric Ambient Occlusion\n//\tLaszlo Szirmay-Kalos at el.\n// \n// See:\n//\n// http://www.iit.bme.hu/~szirmay/ambient8.pdf\n//\n\n#define NUM_SAMPLES 8\n#define NUM_FOURS_BATCHES 2\n\n// SSAOParams.x = minRadius\n// SSAOParams.y = maxRadius\n// SSAOParams.z = radiusGrowZscale\n// SSAOParams.w = camera zfar\nuniform float4\tSSAOParams;\t\t\t\t\n\n// SSAOParams2.x = bias\n// SSAOParams2.y = fallof\n// SSAOParams2.z = occlusion samples normalization value * color scale\nuniform float4\tSSAOParams2;\n\t\nuniform float4\tProjViewPortCoef;\n\nuniform float4\tOcclPos[NUM_SAMPLES];\nuniform float4\tOcclPosFlipped[NUM_SAMPLES];\t\n\nfloat Contrast = 1.0f;\n\n\t\t\nvoid CalcOrthonormalBasisNoY(float3 dir,out float3 right,out float3 up)\n{\n    right   = float3(dir[2],0,-dir[0]);\n    up      = cross(dir,right);\n}\n\nfloat\t\tCalcAmbientOCBatch4(in int i, in float2 rndRot, in float3 wrldPos, in float3 T, in float3 B, in float zfar, in float radius, in float fallof)\n{\t\n\t\tfloat2\troffs[4];\t\t\t\n\t\troffs[0]\t\t= rndRot.yx * OcclPos[i].xy   + rndRot.xy * OcclPosFlipped[i].xy;\n\t\troffs[1]\t\t= rndRot.yx * OcclPos[i+1].xy + rndRot.xy * OcclPosFlipped[i+1].xy;\n\t\troffs[2]\t\t= rndRot.yx * OcclPos[i+2].xy + rndRot.xy * OcclPosFlipped[i+2].xy;\n\t\troffs[3]\t\t= rndRot.yx * OcclPos[i+3].xy + rndRot.xy * OcclPosFlipped[i+3].xy;\n\t\n// construct world pos sample on plane\n\t\tfloat3\tocclPos[4];\t\t\n\t\tocclPos[0]\t\t= wrldPos + roffs[0].x * T + roffs[0].y * B;\n\t\tocclPos[1]\t\t= wrldPos + roffs[1].x * T + roffs[1].y * B;\n\t\tocclPos[2]\t\t= wrldPos + roffs[2].x * T + roffs[2].y * B;\n\t\tocclPos[3]\t\t= wrldPos + roffs[3].x * T + roffs[3].y * B;\n\n// view space  version\n\n\t\tfloat2\tocclProjPos[4];\n\n\t\t\n\t\tocclProjPos[0]\t= occlPos[0].xy / occlPos[0].z;\t\n\t\tocclProjPos[1]\t= occlPos[1].xy / occlPos[1].z;\t\n\t\tocclProjPos[2]\t= occlPos[2].xy / occlPos[2].z;\t\n\t\tocclProjPos[3]\t= occlPos[3].xy / occlPos[3].z;\t\n\n\t\t \n\t\tocclProjPos[0]\t= GetScreenSpaceTextureCoord(mul(float4(occlPos[0], 1), ProjectionMatrix), HalfPixel);\n\t\tocclProjPos[1]\t= GetScreenSpaceTextureCoord(mul(float4(occlPos[1], 1), ProjectionMatrix), HalfPixel);\n\t\tocclProjPos[2]\t= GetScreenSpaceTextureCoord(mul(float4(occlPos[2], 1), ProjectionMatrix), HalfPixel);\n\t\tocclProjPos[3]\t= GetScreenSpaceTextureCoord(mul(float4(occlPos[3], 1), ProjectionMatrix), HalfPixel);\n\t\t   \n// sample depth\n\t\tfloat4\tzi;\n\t\tzi.x\t\t\t= DecodeFloatRGBA(tex2D(DepthsRTSampler,occlProjPos[0]));\n\t\tzi.y\t\t\t= DecodeFloatRGBA(tex2D(DepthsRTSampler,occlProjPos[1]));\n\t\tzi.z\t\t\t= DecodeFloatRGBA(tex2D(DepthsRTSampler,occlProjPos[2]));\n\t\tzi.w\t\t\t= DecodeFloatRGBA(tex2D(DepthsRTSampler,occlProjPos[3]));\n\t\tzi\t\t\t\t*= zfar;\n\t\n// compute ao portion of the sample\t\n\t\tfloat4\tzExtreme\t= float4(OcclPos[i].w,OcclPos[i+1].w,OcclPos[i+2].w,OcclPos[i+3].w) * radius;\t\n//viewspace version\n\t\tfloat4\tzmin\t\t= -float4(occlPos[0].z, occlPos[1].z, occlPos[2].z, occlPos[3].z) - zExtreme;\n\t\n\t\tfloat4\tD\t\t\t= float4(zExtreme) * 2;\t\n\t\tfloat4\tdz\t\t\t= min(max(zi - zmin,0),D);\n\t\n// distant occluder attenuation\n\t\tfloat4 x\t\t\t= saturate((zmin - zi) * fallof);\n\t\tfloat4 attDz\t\t= x * x * D;\n\n\t\tfloat4 k\t\t\t= step(zmin, zi);\n\t\tdz\t\t\t\t\t= dz * k + (1-k) * attDz;\n\t\n\t\treturn dot(float(1).xxxx, dz);\n\t\t//return x;\n\t\t//return zi * zfar;\n}\n\nfloat4 SSAO(float2 uv, float3 eyeDir, float2 screenPos)\n{\t\n\t//float4 cl = tex2D(DepthsRTSampler, uv);\n\t//return float4(cl.x,cl.y,cl.z,length(cl));\n\t//return float4(cl.x,cl.y,cl.z,0.5f);\n\n\tfloat\tdepth\t=  DecodeFloatRGBA(tex2D(DepthsRTSampler, uv));\n\n\tif (IsDepthBackground(depth))\n\t{\n\t\t//discard;\n\t\treturn float4(0,0,0,0.0f);\n\t}\n\n\tfloat\tzfar\t= SSAOParams.w;\n\t\t\n\tfloat\tradius\t= SSAOParams.x + (1 - pow(SSAOParams.z, - depth)) * (SSAOParams.y - SSAOParams.x);\n\tfloat\tbias\t= radius * SSAOParams2.x;\n\tfloat\tfallof\t= SSAOParams2.y;\n\t\n//viewspace pos\n\tfloat3 viewPos = GetViewPositionFromDepth(depth, eyeDir);\n\t\t \n\t\n\tfloat3 N;\n\tfloat3 T = float3(1,0,0);\n\tfloat3 B = float3(0,1,0);\n\t\n// view space normal\t\n\tN = GetNormalVectorFromRenderTargetNormalized(tex2D(NormalsTextureSampler, uv));\n\tN = normalize(mul(N, (float3x3)ViewMatrix));\n\t\t\t\t\n\n//\tCalcOrthonormalBasisNoY(N,T,B);\n\t\t\t\t\n\tfloat2\trndRot;\t\t\n\tfloat\tnoise\t= dot(screenPos, float2(8.1,5.7));\t\t\n\tsincos(noise, rndRot.x, rndRot.y);\n\trndRot\t*= radius;\t\n\n// view space\n\tviewPos += 0.5 * (bias + radius) * N;\n\t\n\tfloat\toccl\t= 0;\n\tfor (int i = 0; i < NUM_FOURS_BATCHES; i++)\n\t{\t\n\t\toccl += CalcAmbientOCBatch4(i * 4, rndRot, viewPos, T, B, zfar, radius, fallof);\n\t}\n\t\n// normalize ao by the sphere volume\n\toccl =  saturate(occl * SSAOParams2.z / radius );\t \n\n\t//occl = max((occl - 0.5f)*Contrast + 0.5f,0.2f);\n\toccl = (occl - 0.5f)*Contrast + 0.5f;\n\n\t//return float(occl).xxxx;\t\t\t\t\t\t\t \n\treturn float4(float(0).xxx, 1 - occl);\t\t\t\t\t\t\t \n\t//return float4(float(0).xxx, 1.0f);\t\t\t\t\t\t\t \n\n\t\n\t//float occl = CalcAmbientOCBatch4(0, rndRot, viewPos, T, B, zfar, radius, fallof);\n\n\t//return float4(rndRot.x, rndRot.y, 0,1);\n\t//return float4(occl.xxx, 1) * SSAOParams2.z;\n}\t\n\n\n\n\n\n\n\nfloat4 PixelShaderFunction(VertexShaderOutput input, float2 screenPosition : VPOS) : COLOR0\n{\n\treturn SSAO(input.TexCoord, input.FrustumCorner.xyz, screenPosition);\n}\n\ntechnique Technique1\n{\n\tpass Pass1\n\t{\n\t\tVertexShader = compile vs_3_0 VertexShaderFunction();\n\t\tPixelShader = compile ps_3_0 PixelShaderFunction();\n\t}\n}\n"
  },
  {
    "path": "Effects/Shadows/MyEffectShadowMap.fx",
    "content": "#include \"../MyEffectShadowBase.fxh\"\n\nfloat4x4\tWorldMatrix;\nfloat4x4\tViewProjMatrix;\nfloat2\t\tShadowTermHalfPixel;\nfloat3\t\tFrustumCornersVS[4];\nfloat2\t\tHalfPixel;\n\ntexture DepthTexture;\nsampler2D DepthTextureSampler = sampler_state\n{\n    Texture = <DepthTexture>;\n    MinFilter = POINT;\n    MagFilter = POINT;\n    MipFilter = none;\n};\n\n// Instance data\nstruct VertexShaderInput_Instance\n{\n\tfloat4 worldMatrixRow0 : BLENDWEIGHT0;\n \tfloat4 worldMatrixRow1 : BLENDWEIGHT1;\n \tfloat4 worldMatrixRow2 : BLENDWEIGHT2;\n \tfloat4 worldMatrixRow3 : BLENDWEIGHT3;\n};\n\nvoid GenerateShadowMapVS_Base(in float4 in_vPositionOS, in float4x4 worldMatrix, out float4 out_vPositionCS, out float2 out_vDepthCS)\n{\n\t// Unpack position\n\tin_vPositionOS = UnpackPositionAndScale(in_vPositionOS);\n\n\t// Figure out the position of the vertex in view space and clip space\n\tout_vPositionCS = mul(in_vPositionOS, worldMatrix);\n    out_vPositionCS = mul(out_vPositionCS, ViewProjMatrix);\n\tout_vDepthCS = out_vPositionCS.zw;\n}\n\n// Vertex shader for outputting light-space depth to the shadow map\nvoid GenerateShadowMapVS(\tin float4 in_vPositionOS\t: POSITION,\n\t\t\t\t\t\t\tout float4 out_vPositionCS\t: POSITION,\n\t\t\t\t\t\t\tout float2 out_vDepthCS\t\t: TEXCOORD0\t)\n{\n\tGenerateShadowMapVS_Base(in_vPositionOS, WorldMatrix, out_vPositionCS, out_vDepthCS);\n}\n\nvoid GenerateShadowMapVS_Instanced(\tin float4 in_vPositionOS\t: POSITION,\n\t\t\t\t\t\t\tin VertexShaderInput_Instance instanceData,\n\t\t\t\t\t\t\tout float4 out_vPositionCS\t: POSITION,\n\t\t\t\t\t\t\tout float2 out_vDepthCS\t\t: TEXCOORD0\t)\n{\n\tfloat4x4 instanceWorldMatrix = {instanceData.worldMatrixRow0,\n\t\t\t\t\t\t\t\t\tinstanceData.worldMatrixRow1,\n\t\t\t\t\t\t\t\t\tinstanceData.worldMatrixRow2,\n\t\t\t\t\t\t\t\t\tinstanceData.worldMatrixRow3};\n\n\tGenerateShadowMapVS_Base(in_vPositionOS, instanceWorldMatrix, out_vPositionCS, out_vDepthCS);\n}\n\n// Vertex shader for outputting light-space depth to the shadow map for voxels\nvoid GenerateVoxelShadowMapVS(\tin float4 in_vPositionOS\t: POSITION,\n\t\t\t\t\t\t\tout float4 out_vPositionCS\t: POSITION,\n\t\t\t\t\t\t\tout float2 out_vDepthCS\t\t: TEXCOORD0\t)\n{\n\t// Unpack voxel position\n\tfloat4 Position = float4(UnpackVoxelPosition(in_vPositionOS), 1);\n\n\t// Figure out the position of the vertex in view space and clip space\n\t\n\tPosition =  mul(Position, WorldMatrix);\n\tout_vPositionCS = mul(Position, ViewProjMatrix);\n\tout_vDepthCS = out_vPositionCS.zw;\n}\n\nvoid GenerateVoxelShadowMapVS_Instanced(in float4 in_vPositionOS\t: POSITION,\n\t\t\t\t\t\t\tin VertexShaderInput_Instance instanceData,\n\t\t\t\t\t\t\tout float4 out_vPositionCS\t: POSITION,\n\t\t\t\t\t\t\tout float2 out_vDepthCS\t\t: TEXCOORD0\t)\n{\n\tfloat4x4 instanceWorldMatrix = {instanceData.worldMatrixRow0,\n\t\t\t\t\t\t\t\t\tinstanceData.worldMatrixRow1,\n\t\t\t\t\t\t\t\t\tinstanceData.worldMatrixRow2,\n\t\t\t\t\t\t\t\t\tinstanceData.worldMatrixRow3};\n\n\t// Unpack voxel position\n\tfloat4 Position = float4(UnpackVoxelPosition(in_vPositionOS), 1);\n\n\t// Figure out the position of the vertex in view space and clip space\n\t\n\tPosition =  mul(Position, instanceWorldMatrix);\n\tout_vPositionCS = mul(Position, ViewProjMatrix);\n\tout_vDepthCS = out_vPositionCS.zw;\n}\n\n// Pixel shader for outputting light-space depth to the shadow map\nfloat4 GenerateShadowMapPS(in float2 in_vDepthCS : TEXCOORD0) : COLOR0\n{\n\t// Negate and divide by distance to far clip (so that depth is in range [0,1])\n\tfloat fDepth = in_vDepthCS.x / in_vDepthCS.y;\t\t\t\n\t\t\n#ifdef COLOR_SHADOW_MAP_FORMAT\n\treturn EncodeFloatRGBAPrecise(fDepth);\n#else\n    return float4(fDepth, 0, 0, 0); \n#endif\t\n}\n\n// Vertex shader for rendering the full-screen quad used for calculating\n// the shadow occlusion factor.\nvoid ShadowTermVS (\tin float3 in_vPositionOS\t\t\t\t: POSITION,\n\t\t\t\t\tin float3 in_vTexCoordAndCornerIndex\t: TEXCOORD0,\t\t\n\t\t\t\t\tout float4 out_vPositionCS\t\t\t\t: POSITION,\n\t\t\t\t\tout float2 out_vTexCoord\t\t\t\t: TEXCOORD0,\n\t\t\t\t\tout float3 out_vFrustumCornerVS\t\t\t: TEXCOORD1\t)\n{\n\t// Offset the position by half a pixel to correctly align texels to pixels\n\tout_vPositionCS.x = in_vPositionOS.x - ShadowTermHalfPixel.x;\n\tout_vPositionCS.y = in_vPositionOS.y + ShadowTermHalfPixel.y;\n\tout_vPositionCS.z = in_vPositionOS.z;\n\tout_vPositionCS.w = 1.0f;\n\t\n\t// Pass along the texture coordiante and the position of the frustum corner\n\tout_vTexCoord = in_vTexCoordAndCornerIndex.xy + HalfPixel;\n\tout_vFrustumCornerVS = FrustumCornersVS[in_vTexCoordAndCornerIndex.z];\n}\t\n\n// Pixel shader for computing the shadow occlusion factor\nfloat4 ShadowTermPS(\tin float2 in_vTexCoord\t\t\t: TEXCOORD0,\n\t\t\t\t\t\tin float3 in_vFrustumCornerVS\t: TEXCOORD1,\n\t\t\t\t\t\tuniform int iFilterSize\t)\t: COLOR0\n{\n/*\n\tNOT USED\n\tfloat fSceneDepth = DecodeFloatRGBA(tex2D(DepthTextureSampler,in_vTexCoord)) * FAR_PLANE_DISTANCE;\n\t\n\tfloat4 vPositionVS = float4(normalize(in_vFrustumCornerVS) * fSceneDepth, 1);\n\t\n\tfloat diff = 0;\n\tfloat3 fShadowTerm1 = GetShadowTermFromPosition(vPositionVS, vPositionVS.z, iFilterSize, 0, diff);\n\n\tfloat blendDiff = vPositionVS.z / -10.0f;\n\tfloat testDepth = vPositionVS.z - blendDiff;\n\t\n\tfloat3 fShadowTerm2 = GetShadowTermFromPosition(vPositionVS, testDepth, iFilterSize, 0, diff);\n\tfloat blend = saturate(diff / blendDiff);\n\t\t\n\treturn float4( fShadowTerm1 * (1 - blend) + fShadowTerm2 * blend, 1);\n\t*/\n\treturn float4(0,0,0, 1);\n}\n\nstruct VertexShaderInput\n{\n\tfloat4 Position : POSITION0;\n\tfloat2 TexCoord : TEXCOORD0;\n};\n\nVertexShaderInput ClearVS(VertexShaderInput input)\n{\n\t//\tWe're using a full screen quad, no need for transforming vertices.\n\tVertexShaderInput output;\n\toutput.Position = input.Position;\n\toutput.TexCoord = input.TexCoord + HalfPixel;\n\treturn output;\n}\n\nfloat4 ClearPS(VertexShaderInput input) : COLOR0\n{\n\treturn float4(1,1,1,1);\n}\n\ntechnique GenerateShadowMap\n{\n\tpass p0\n\t{\n\t\tVertexShader = compile vs_2_0 GenerateShadowMapVS();\n        PixelShader = compile ps_2_0 GenerateShadowMapPS();\n\t}\n}\n\ntechnique GenerateVoxelShadowMap\n{\n\tpass p0\n\t{\n\t\tVertexShader = compile vs_2_0 GenerateVoxelShadowMapVS();\n        PixelShader = compile ps_2_0 GenerateShadowMapPS();\n\t}\n}\n\n// Instancing requires SM 3.0\ntechnique GenerateShadowMapInstanced\n{\n\tpass p0\n\t{\n\t\tVertexShader = compile vs_3_0 GenerateShadowMapVS_Instanced();\n        PixelShader = compile ps_3_0 GenerateShadowMapPS();\n\t}\n}\n\n// Instancing requires SM 3.0\ntechnique GenerateVoxelShadowMapInstanced\n{\n\tpass p0\n\t{\n\t\tVertexShader = compile vs_3_0 GenerateVoxelShadowMapVS_Instanced();\n        PixelShader = compile ps_3_0 GenerateShadowMapPS();\n\t}\n}\n\ntechnique CreateShadowTerm2x2PCF\n{\n    pass p0\n    {\n\t\tZWriteEnable = false;\n\t\tZEnable = false;\n\t\tAlphaBlendEnable = false;\n\t\tCullMode = NONE;\n\n        VertexShader = compile vs_3_0 ShadowTermVS();\n        PixelShader = compile ps_3_0 ShadowTermPS(2);\t\n    }\n}\n\ntechnique CreateShadowTerm3x3PCF\n{\n    pass p0\n    {\n\t\tZWriteEnable = false;\n\t\tZEnable = false;\n\t\tAlphaBlendEnable = false;\n\t\tCullMode = NONE;\n\n        VertexShader = compile vs_3_0 ShadowTermVS();\n        PixelShader = compile ps_3_0 ShadowTermPS(3);\t\n    }\n}\n\ntechnique CreateShadowTerm5x5PCF\n{\n    pass p0\n    {\n\t\tZWriteEnable = false;\n\t\tZEnable = false;\n\t\tAlphaBlendEnable = false;\n\t\tCullMode = NONE;\n\n        VertexShader = compile vs_3_0 ShadowTermVS();\n        PixelShader = compile ps_3_0 ShadowTermPS(5);\t\n    }\n}\n\ntechnique CreateShadowTerm7x7PCF\n{\n    pass p0\n    {\n\t\tZWriteEnable = false;\n\t\tZEnable = false;\n\t\tAlphaBlendEnable = false;\n\t\tCullMode = NONE;\n\n        VertexShader = compile vs_3_0 ShadowTermVS();\n        PixelShader = compile ps_3_0 ShadowTermPS(7);\t\n    }\n}\n\ntechnique Clear\n{\n\tpass p0\n\t{\n\t\tVertexShader = compile vs_3_0 ClearVS();\n        PixelShader = compile ps_3_0 ClearPS();\n\t}\n}\n"
  },
  {
    "path": "Effects/Shadows/MyEffectShadowOcclusion.fx",
    "content": "#include \"../MyEffectShadowBase.fxh\"\n\nfloat4x4\tWorldMatrix;\nfloat4x4\tViewProjMatrix;\nfloat2\t\tShadowTermHalfPixel;\nfloat3\t\tFrustumCornersVS[4];\nfloat2\t\tHalfPixel;\n\n\n// Vertex shader for outputting light-space depth to the shadow map\nvoid GenerateShadowMapVS(\tin float4 in_vPositionOS\t: POSITION,\n\t\t\t\t\t\t\tout float4 out_vPositionCS\t: POSITION,\n\t\t\t\t\t\t\tout float2 out_vDepthCS\t\t: TEXCOORD0\t)\n{\n\t// Unpack position\n\tin_vPositionOS = in_vPositionOS;\n\n\t// Figure out the position of the vertex in view space and clip space\n\tout_vPositionCS = mul(in_vPositionOS, WorldMatrix);\n    out_vPositionCS = mul(out_vPositionCS, ViewProjMatrix);\n\tout_vDepthCS = out_vPositionCS.zw;\n}\n\n\n// Pixel shader for outputting light-space depth to the shadow map\nfloat4 GenerateShadowMapPS(in float2 in_vDepthCS : TEXCOORD0) : COLOR0\n{\n\t// Negate and divide by distance to far clip (so that depth is in range [0,1])\n\tfloat fDepth = in_vDepthCS.x / in_vDepthCS.y;\t\t\t\n\t\t\n    return float4(fDepth, 1, 1, 1); \n}\n\n\ntechnique GenerateShadowMap\n{\n\tpass p0\n\t{\n\t\tVertexShader = compile vs_2_0 GenerateShadowMapVS();\n        PixelShader = compile ps_2_0 GenerateShadowMapPS();\n\t}\n}\n\n\n"
  },
  {
    "path": "Effects/SolarSystemMap/MySolarSystemMapGrid.fx",
    "content": "#include \"../MyEffectBase.fxh\"\n\nfloat3 ColorA;\nfloat AlphaA;\n\nfloat4x4 WorldMatrix;\nfloat4x4 ViewProjectionMatrix;\n\nTexture GridTexture;\nsampler GridTextureSampler = sampler_state \n{ \n\ttexture = <GridTexture> ; \n\tmagfilter = LINEAR; \n\tminfilter = LINEAR; \n\tmipfilter = LINEAR; \n\tAddressU = WRAP;\n\tAddressV = WRAP;\n};\n\nstruct VertexShaderInput\n{\n    float4 Position : POSITION0;\n    float3 TexCoord : TEXCOORD0;\n};\n\nstruct VertexShaderOutput\n{\n    float4 Position : POSITION0;\n    float3 TexCoord : TEXCOORD0;\n};\n\nVertexShaderOutput VertexShaderFunction(VertexShaderInput input)\n{\n    VertexShaderOutput output;\n    float4 worldPosition = mul(input.Position, WorldMatrix);\n    output.Position = mul(worldPosition, ViewProjectionMatrix);\n    output.TexCoord = input.TexCoord;\n    return output;\n}\n\nfloat4 PixelShaderFunction(VertexShaderOutput input) : COLOR0\n{\n\tfloat alpha = tex2D(GridTextureSampler, input.TexCoord).a;\n\tfloat4 resultColor = float4(ColorA, alpha * AlphaA);\n\treturn resultColor;\n}\n\ntechnique Technique1\n{\n    pass Pass1\n    {\n        VertexShader = compile vs_3_0 VertexShaderFunction();\n        PixelShader = compile ps_3_0 PixelShaderFunction();\n    }\n}\n"
  },
  {
    "path": "Effects/Sprites/MyEffectSprite.fx",
    "content": "#include \"../MyEffectBase.fxh\"\n\nfloat2 HalfPixel;\n\nTexture SpriteTexture;\nsampler SpriteTextureSampler = sampler_state \n{ \n\ttexture = <SpriteTexture> ; \n\tmagfilter = LINEAR; \n\tminfilter = LINEAR; \n\tmipfilter = LINEAR; \n\tAddressU = clamp; \n\tAddressV = clamp;\n};\n\nTextureCube SpriteTextureCube;\nsampler SpriteTextureSamplerCube = sampler_state \n{ \n\ttexture = <SpriteTextureCube> ; \n\tmagfilter = LINEAR; \n\tminfilter = LINEAR; \n\tmipfilter = NONE; \n\tAddressU = clamp; \n\tAddressV = clamp;\n};\n\n\nstruct VertexShaderInput\n{\n    float4 Position : POSITION0;\n    float2 TexCoord : TEXCOORD0;\n    float4 Color : COLOR0;\n};\n\nstruct VertexShaderOutput\n{\n    float4 Position : POSITION0;\n    float2 TexCoord : TEXCOORD0;\n    float4 Color : COLOR0;\n};\n\nVertexShaderOutput VertexShaderFunction(VertexShaderInput input)\n{\n    VertexShaderOutput output;\n    output.Position = input.Position;\n    output.TexCoord = input.TexCoord + HalfPixel;\n    output.Color = input.Color;\n    return output;\n}\n\nfloat4 PixelShaderFunction(VertexShaderOutput input) : COLOR0\n{\n    return tex2D(SpriteTextureSampler, input.TexCoord) * input.Color;    \n}\n\nfloat4 PixelShaderFunctionCube(VertexShaderOutput input, uniform int faceIndex) : COLOR0\n{\n\tfloat2 c = (input.TexCoord - 0.5f) * 2;\n\n\tfloat3 coord;\n\n\tif(faceIndex == 0) coord = float3(1, -c.y, -c.x);\n\telse if(faceIndex == 1) coord = float3(-1, -c.y, c.x);\n\telse if(faceIndex == 2) coord = float3(c.x, 1, c.y);\n\telse if(faceIndex == 3) coord = float3(c.x, -1, -c.y);\n\telse if(faceIndex == 4) coord = float3(c.x, -c.y, 1.0f);\n\telse coord = float3(-c.x, -c.y, -1.0f);\n\n    return texCUBE(SpriteTextureSamplerCube, coord) * input.Color;    \n}\n\ntechnique Technique_RenderQualityNormal\n{\n    pass Pass1\n    {\n\t\tVertexShader = compile vs_3_0 VertexShaderFunction();\n        PixelShader = compile ps_3_0 PixelShaderFunction();\n    }\n}\n\ntechnique Technique_RenderQualityNormalCube0\n{\n    pass Pass1\n    {\n\t\tVertexShader = compile vs_3_0 VertexShaderFunction();\n        PixelShader = compile ps_3_0 PixelShaderFunctionCube(0);\n    }\n}\n\ntechnique Technique_RenderQualityNormalCube1\n{\n    pass Pass1\n    {\n\t\tVertexShader = compile vs_3_0 VertexShaderFunction();\n        PixelShader = compile ps_3_0 PixelShaderFunctionCube(1);\n    }\n}\n\ntechnique Technique_RenderQualityNormalCube2\n{\n    pass Pass1\n    {\n\t\tVertexShader = compile vs_3_0 VertexShaderFunction();\n        PixelShader = compile ps_3_0 PixelShaderFunctionCube(2);\n    }\n}\n\ntechnique Technique_RenderQualityNormalCube3\n{\n    pass Pass1\n    {\n\t\tVertexShader = compile vs_3_0 VertexShaderFunction();\n        PixelShader = compile ps_3_0 PixelShaderFunctionCube(3);\n    }\n}\n\ntechnique Technique_RenderQualityNormalCube4\n{\n    pass Pass1\n    {\n\t\tVertexShader = compile vs_3_0 VertexShaderFunction();\n        PixelShader = compile ps_3_0 PixelShaderFunctionCube(4);\n    }\n}\n\ntechnique Technique_RenderQualityNormalCube5\n{\n    pass Pass1\n    {\n\t\tVertexShader = compile vs_3_0 VertexShaderFunction();\n        PixelShader = compile ps_3_0 PixelShaderFunctionCube(5);\n    }\n}\n"
  },
  {
    "path": "Effects/Sprites/MyEffectSpriteBatchOriginal.fx",
    "content": "//-----------------------------------------------------------------------------\n// SpriteBatch.fx\n//\n// Microsoft XNA Community Game Platform\n// Copyright (C) Microsoft Corporation. All rights reserved.\n//-----------------------------------------------------------------------------\n\n\n// Input parameters.\n//float2   ViewportSize    : register(c0);\n//float2   TextureSize     : register(c1);\nfloat4x4 MatrixTransform : register(c0);\nsampler  TextureSampler  : register(s0);\n\nstruct vsOut\n{\n\tfloat4 pos: POSITION0;\n\tfloat4 color: COLOR0;\n\tfloat2 tex: TEXCOORD0;\n};\n\n// Vertex shader for rendering sprites on Windows.\nvsOut SpriteVertexShader(float4 color : COLOR0, float2 texCoord : TEXCOORD0, float4 position : POSITION0)\n{\n    // Apply the matrix transform.\n\tvsOut output;\n\n    //output.pos = mul(position, transpose(MatrixTransform));\n\toutput.pos = mul(position, MatrixTransform);\n    output.color = color;\n\toutput.tex = texCoord;\n\n\treturn output;\n\t// Half pixel offset for correct texel centering.\n\t//position.xy -= 0.5;\n//\n\t//// Viewport adjustment.\n\t//position.xy /= ViewportSize;\n\t//position.xy *= float2(2, -2);\n\t//position.xy -= float2(1, -1);\n//\n\t//// Compute the texture coordinate.\n\t//texCoord /= TextureSize;\n}\n\n// Pixel shader for rendering sprites (shared between Windows and Xbox).\nvoid SpritePixelShader(inout float4 color : COLOR0, float2 texCoord : TEXCOORD0)\n{\n    color *= tex2D(TextureSampler, texCoord);\n}\n\n\ntechnique SpriteBatch\n{\n\tpass\n\t{\n\t\tVertexShader = compile vs_3_0 SpriteVertexShader();\n\t\tPixelShader  = compile ps_3_0 SpritePixelShader();\n\t}\n}\n"
  },
  {
    "path": "Effects/Sprites/MyEffectSpriteBatchShader.fx",
    "content": "#include \"../MyEffectBase.fxh\"\n\nsampler TextureSampler : register(s0);\n\n#define DECLARE_TEXTURE(Name, index) \\\n    texture2D Name; \\\n    sampler Name##Sampler : register(s##index) = sampler_state { Texture = (Name); AddressU = WRAP; AddressV = WRAP; magfilter = LINEAR; minfilter = LINEAR; mipfilter = LINEAR;  };\n\n#define SAMPLE_TEXTURE(Name, texCoord)  tex2D(Name##Sampler, texCoord)\n\nDECLARE_TEXTURE(Texture1, 1);\nDECLARE_TEXTURE(Texture2, 2);\nfloat2 Texture2Tiling = (1.0,1.0);\n\n\nfloat4 TextureOverlapMergeEffectMain(float4 color : COLOR0, float2 texCoord : TEXCOORD0) : COLOR0\n{\n\n    float4 tex1color = tex2D(TextureSampler, texCoord);\n    float4 tex2overlay = SAMPLE_TEXTURE(Texture2, texCoord * Texture2Tiling);\n\t\n    float4 retColor = tex1color;\n    retColor *= color;\n    retColor *= (1-tex2overlay.a);\n    retColor.a = 0/*(tex1color.r+tex1color.g+tex1color.b)/3.0*/;\n    return retColor;\n\n}\n\n\n\ntechnique TextureOverlapMergeEffect\n{\n    pass Pass1\n    {\n        PixelShader = compile ps_2_0 TextureOverlapMergeEffectMain();\n    }\n}\n\n\n\n"
  },
  {
    "path": "Effects/TODO/MyCommonEffects.fxh",
    "content": "////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n//\tQuality values:\n//\t\t0: high quality\n//\t\t1: normal quality (without normal map texture; without specular texture and light - but only on voxels, other shaders are unaffected)\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\n\nconst float TextureScaleModelDetail = 20;//3;\n\nconst float VoxelTextureScaleNear = 100;\nconst float VoxelTextureScaleFar = 1000;\nconst float VoxelTextureDistanceNear = 100;//10;\nconst float VoxelTextureDistanceFar = 1000;\n\nconst float ExplosionDebrisTextureScale = 60 * 0.25;\n\nfloat FogDistanceNear;\nfloat FogDistanceFar;\n\n//\tThis will allow to blend result color not to full fog, but only e.g. 40% of it so distant object will still preserve part of their texture\nconst float FogMultiplier = 0.5;//0.4;\n\n//\tThis is direction vector from every pixel (voxel, model, etc) to sun. It's not enough if you change it, because MyShadows assume that sun is in negative Z direction.\n//\tSo, if you want to have sun on e.g. left side of background cube, change this vector and change logic in MyShadows. Or if you want to have sun in some not 90 degre\n//\tposition (e.g. 20 degres on the horizont), than you must change a lot in MyShadows...\nfloat3 DirectionToSun;// = normalize(float3(0, 0, -1));\n\n//\tColor of sun light. This one will influence 'sun' factor comming from shadows.\nfloat4 SunColor;\n\n//\tThis will make reflector's near light (not cone, but point, thus sphere around camera) little bit less shiny and less bright\nconst float ReflectorNearLightDistanceMultiplier = 0.5;\n\n//\tAmbient light coming from stars, not from sun. For particles.\n//  If you change it here, change it also in MyConstants.cs in constant: AMBIENT_COLOR\nconst float AmbientColor = 0.07f;\n\n//\tCockpit interior reflector is always offseted from camera position, so it feels like light is dynamic\nconst float3 CockpitReflectorPositionDelta = float3(1, 1, 1);\n\nfloat4 CockpitInteriorLight;\n\nfloat TextureScale;\n\nfloat4x4\tWorldViewProjectionMatrix;\nfloat4x4\tWorldMatrix;\nfloat4x4\tViewProjectionMatrix;\nfloat3\t\tEyePosition;\n\n//\tFog\nfloat\t\tReflectorRange;\nfloat4\t\tFogColor;\nfloat4\t\tFogColorForBackground;\n\n//\tReflector light - coming from the camera/player\nfloat3\t\tReflectorPosition;\nfloat3\t\tReflectorDirection;\nfloat\t\tReflectorConeMaxAngleCos;\nfloat4\t\tReflectorColor;\n\n//\tNear light (fake reflector light) - coming from the camera/player\n//\tUsed for lighting near voxels and guns visible from the cockpit. It's also nice when guns are shoting.\nfloat\t\tNearLightRange;\nfloat\t\tNearLightRangeOneMinus;\nfloat4\t\tNearLightColor;\n\n//\tMaterial attributes\nfloat\t\tShininess;\t\t\t//\tOutput from phong specular will be scaled by this amount\nfloat\t\tSpecularPower;\t\t//\tSpecular exponent from phong lighting model.  controls the \"tightness\" of specular highlights.\n\n//\tDynamic light\nstruct DynamicLight \n{\n    float3 Position;\n    float4 Color;\n    float Falloff;\n    float Range;\n};\n\n//\tHere we define array for holding lights with max size. No more light can be used, but less can. It depends on how many lights\n//\tare near object we want to draw and max number of light set by user in game options.\n//\tIf you change length of this array, change it too in MyLightsConstants.MAX_LIGHTS_FOR_EFFECT\nDynamicLight DynamicLights[8];\n\n//\tThis number is set specificaly for every model or voxel cell and tells us how many light to use for lighting calculations\nint DynamicLightsCount;\nfloat ModelAlpha;\n\n\nstruct GbufferPixelShaderOutput\n{\n    float4 Depth : COLOR0;\n    float4 Normal : COLOR1;\n};\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n//\tVoxel rendering - This part is common for single-material, multi-material and multi-material clear too\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nTexture TextureDiffuseForAxisXZ;\nsampler TextureDiffuseForAxisXZSampler = sampler_state \n{ \n\ttexture = <TextureDiffuseForAxisXZ> ; \n\tmagfilter = LINEAR; \n\tminfilter = LINEAR; \n\tmipfilter = LINEAR; \n\tAddressU = WRAP; \n\tAddressV = WRAP;\n};\n\nTexture TextureDiffuseForAxisY;\nsampler TextureDiffuseForAxisYSampler = sampler_state \n{ \n\ttexture = <TextureDiffuseForAxisY> ; \n\tmagfilter = LINEAR; \n\tminfilter = LINEAR; \n\tmipfilter = LINEAR; \n\tAddressU = WRAP; \n\tAddressV = WRAP;\n};\n\nTexture TextureNormalMapForAxisXZ;\nsampler TextureNormalMapForAxisXZSampler = sampler_state \n{ \n\ttexture = <TextureNormalMapForAxisXZ> ; \n\tmagfilter = LINEAR; \n\tminfilter = LINEAR; \n\tmipfilter = LINEAR; \n\tAddressU = WRAP; \n\tAddressV = WRAP;\n};\n\nTexture TextureNormalMapForAxisY;\nsampler TextureNormalMapForAxisYSampler = sampler_state \n{ \n\ttexture = <TextureNormalMapForAxisY> ; \n\tmagfilter = LINEAR; \n\tminfilter = LINEAR; \n\tmipfilter = LINEAR; \n\tAddressU = WRAP; \n\tAddressV = WRAP;\n};\n\nTexture TextureSpecularForAxisXZ;\nsampler TextureSpecularForAxisXZSampler = sampler_state \n{ \n\ttexture = <TextureSpecularForAxisXZ> ; \n\tmagfilter = LINEAR; \n\tminfilter = LINEAR; \n\tmipfilter = LINEAR; \n\tAddressU = WRAP; \n\tAddressV = WRAP;\n};\n\nTexture TextureSpecularForAxisY;\nsampler TextureSpecularForAxisYSampler = sampler_state \n{ \n\ttexture = <TextureSpecularForAxisY> ; \n\tmagfilter = LINEAR; \n\tminfilter = LINEAR; \n\tmipfilter = LINEAR; \n\tAddressU = WRAP; \n\tAddressV = WRAP;\n};\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n//\tTextures for models / phys objects\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nTexture TextureMainDiffuse;\nsampler TextureMainDiffuseSampler = sampler_state \n{ \n\ttexture = <TextureMainDiffuse> ; \n\tmagfilter = LINEAR; \n\tminfilter = LINEAR; \n\tmipfilter = LINEAR; \n\tAddressU = WRAP; \n\tAddressV = WRAP;\n};\n\nTexture TextureMainNormal;\nsampler TextureMainNormalSampler = sampler_state \n{ \n\ttexture = <TextureMainNormal> ; \n\tmagfilter = LINEAR; \n\tminfilter = LINEAR; \n\tmipfilter = LINEAR; \n\tAddressU = WRAP; \n\tAddressV = WRAP;\n};\n\nTexture TextureMainSpecular;\nsampler TextureMainSpecularSampler = sampler_state \n{ \n\ttexture = <TextureMainSpecular> ; \n\tmagfilter = LINEAR; \n\tminfilter = LINEAR; \n\tmipfilter = LINEAR; \n\tAddressU = WRAP; \n\tAddressV = WRAP;\n};\n\nTexture TextureLightMap;\nsampler TextureLightMapSampler = sampler_state \n{ \n\ttexture = <TextureLightMap> ; \n\tmagfilter = LINEAR; \n\tminfilter = LINEAR; \n\tmipfilter = LINEAR; \n\tAddressU = WRAP; \n\tAddressV = WRAP;\n};\n\nTexture TextureDetailDiffuse;\nsampler TextureDetailDiffuseSampler = sampler_state \n{ \n\ttexture = <TextureDetailDiffuse> ; \n\tmagfilter = LINEAR; \n\tminfilter = LINEAR; \n\tmipfilter = LINEAR; \n\tAddressU = WRAP; \n\tAddressV = WRAP;\n};\n\nTexture TextureDetailSpecular;\nsampler TextureDetailSpecularSampler = sampler_state \n{ \n\ttexture = <TextureDetailSpecular> ; \n\tmagfilter = LINEAR; \n\tminfilter = LINEAR; \n\tmipfilter = LINEAR; \n\tAddressU = WRAP; \n\tAddressV = WRAP;\n};\n\nTexture TextureDetailNormal;\nsampler TextureDetailNormalSampler = sampler_state \n{ \n\ttexture = <TextureDetailNormal> ; \n\tmagfilter = LINEAR; \n\tminfilter = LINEAR; \n\tmipfilter = LINEAR; \n\tAddressU = WRAP; \n\tAddressV = WRAP;\n};\n\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n//\tFunctions used by all types of shaders\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\n//\tCalculate weight for triplaner mapping.\nfloat3 GetTriplanarWeights(float3 normal)\n{\n\tfloat3 axisWeights;\n\taxisWeights = (abs(normal.xyz) - 0.2) * 7;\n\taxisWeights = pow(axisWeights, 3.0);\t\n\taxisWeights /= (axisWeights.x + axisWeights.y + axisWeights.z).xxx;\t\n\treturn axisWeights;\n}\n\n//\tCalculate the intensity of the light with exponential falloff\nfloat GetDynamicLightBaseIntensity(DynamicLight light, float distance)\n{\n\treturn pow(saturate((light.Range - distance) / light.Range), light.Falloff);\n}\n\n//\tCalculate point light with attenuation, diffuse and specular texture. Can be used for normal mapping too.\nfloat4 CalculateDynamicLight_DiffuseSpecular(DynamicLight light, float3 position, float3 normal, float4 diffuseTexture, float4 specularTexture)\n{\n\tfloat3 lightVector = light.Position - position;\n\tfloat lightDist = length(lightVector);\n\tfloat3 directionToLight = normalize(lightVector);\n\n\tfloat baseIntensity = GetDynamicLightBaseIntensity(light, lightDist);\n\n\tfloat diffuseIntensity = saturate( dot(directionToLight, normal));\n\tfloat4 diffuse = diffuseIntensity * light.Color * diffuseTexture;\n\n\t//\tCalculate Phong components per-pixel\n\tfloat3 reflectionVector = normalize(reflect(-directionToLight, normal));\n\tfloat3 directionToCamera = normalize(EyePosition - position);\n\t\n\t//\tCalculate specular component\n\tfloat4 specular = light.Color * specularTexture * Shininess * pow(saturate(dot(reflectionVector, directionToCamera)), SpecularPower);\n\n\treturn baseIntensity * (diffuse + specular);\n}\n\n\n//\tCompute distance from camera to vertex. This is then interpolated by pixel shader.\n//\tNotice: this value IS NOT in range <0..1>, but contains reall distance in meters.\nfloat GetDistanceToReflector(float3 position)\n{\n\treturn length(EyePosition - position);\n\n\t//float dist = length(EyePosition - position);\n    //return 1 - saturate(dist / ReflectorRange);\n    \n    //return pow(1 - saturate(dist / ReflectorRange), 5);\n    \n    //float ret = 1 - saturate(dist / ReflectorRange);\n    \n    //ret = 1 / exp((1 - ret) * 0.33);\n    //ret = exp(ret * 0.33);\n    \n    //return ret;\n}\n\n\n\n//\tCalculate the view direction, from the eye to the surface.  not normalized, in world space.\nfloat3 GetViewDirection(float3 position)\n{\n    return position - EyePosition;    \n}\n\n//\tCalculate attenuation factor of reflector light. Result will be in interval <0..1> and can be used to multiply diffuse/specular components.\nfloat4 GetReflectorColorWithAttenuation(float distanceToReflectorInvertedNormalized, float3 directionToReflector)\n{\n\tfloat actualAngle = 1 - dot(ReflectorDirection, -directionToReflector);\t\n\tfloat4 ret = 6 * distanceToReflectorInvertedNormalized;\n\n\t//\tAttenuate by cone angle\n\tret *= 1 - saturate(actualAngle / ReflectorConeMaxAngleCos);\n\tret = saturate(ret);\n\t\n\t//\tMake the light not too bright, so it will be in interval <0..0,6>\n    ret = ret * 0.6 * ReflectorColor;\n\treturn ret;\n}\n\nfloat GetNearLightAttenuation(float distanceToReflector)\n{\n    //\tThis light's range depends on normalized distance, so here we take it from it\n\t//\tMake the light not too bright, so it will be in interval <0..0,8>\n    //return saturate((distanceToReflectorInvertedNormalized - NearLightRangeOneMinus) / NearLightRange) * 0.8;\n    return (1 - saturate(distanceToReflector / NearLightRange)) * 0.8;\n}\n\n//\tThis light is here only because I want dynamic light on cockpit, even if in total dark. But I don't want big differences, so that's why here is LERP.\n//\tThis light is connected to miner ship reflector or 'near light'. Thus if reflector is off or player isn't shooting, it's black.\nfloat GetCockpitLightDiffuseMultiplier(float3 normal, float3 directionToReflector)\n{\n    //float cockpitLightDiffuseMultiplier = saturate(dot(normal, directionToReflector));\n    //cockpitLightDiffuseMultiplier = lerp(0.25, 0.75, cockpitLightDiffuseMultiplier);\n\n    return 0.3 + 0.4 * saturate(dot(normal, directionToReflector));\n}\n\n//\tSun - diffuse (see that I use ABS for the angle, because I want to have sun affecting the glass from both sides\nfloat GetSunDiffuseMultiplierForCockpitGlassAndDecals(float3 normal)\n{\n\treturn saturate(abs(dot(normal, DirectionToSun)));\n}\n\n//\tVoxel rendering\nvoid GetTextureForLowQuality(float2 uvForAxisX, float2 uvForAxisY, float2 uvForAxisZ, float3 triplanarWeights, out float4 diffuseTexture)\n{\n    diffuseTexture = \n\t\ttex2D(TextureDiffuseForAxisXZSampler, uvForAxisX) * triplanarWeights.x + \n\t\ttex2D(TextureDiffuseForAxisYSampler, uvForAxisY) * triplanarWeights.y + \n\t\ttex2D(TextureDiffuseForAxisXZSampler, uvForAxisZ) * triplanarWeights.z; \n}\n\n//\tVoxel rendering\nvoid GetTextureForHighQuality(float2 uvForAxisX, float2 uvForAxisY, float2 uvForAxisZ, float3 normal, float3 triplanarWeights, out float4 diffuseTexture, out float4 specularTexture, out float3 normalNew)\n{\n    diffuseTexture = \n\t\ttex2D(TextureDiffuseForAxisXZSampler, uvForAxisX) * triplanarWeights.x + \n\t\ttex2D(TextureDiffuseForAxisYSampler, uvForAxisY) * triplanarWeights.y + \n\t\ttex2D(TextureDiffuseForAxisXZSampler, uvForAxisZ) * triplanarWeights.z; \n\n    specularTexture = \n\t\ttex2D(TextureSpecularForAxisXZSampler, uvForAxisX) * triplanarWeights.x + \n\t\ttex2D(TextureSpecularForAxisYSampler, uvForAxisY) * triplanarWeights.y + \n\t\ttex2D(TextureSpecularForAxisXZSampler, uvForAxisZ) * triplanarWeights.z; \n\n    ////////////////////////////////////////////////////////////////////////////////////\n    //\tThis is trick like hell. We don't do trasnformation of normal from texture to world space\n    //\tusing tangent space as others do. Because our textures are always on three axis, we can\n    //\textract xyz from texture and just put it into world space. Always with regard to texture axis.\n    //\tSo we don't need to do matrix multiplications.\n    //\tYou can see that we don't need tangent or binormal vectors. Even 'normal' we use only for getting\n    //\tproper orientation.\n    ////////////////////////////////////////////////////////////////////////////////////\n    \n    //\tNormal for axis X\n    float3 normalForAxisX = tex2D(TextureNormalMapForAxisXZSampler, uvForAxisX).zyx;\n    normalForAxisX.x *= sign(normal.x);\n    \n    //\tNormal for axis Y\n    float3 normalForAxisY = tex2D(TextureNormalMapForAxisYSampler, uvForAxisY).xzy;\n    normalForAxisY.y *= sign(normal.y);\n    \n    //\tNormal for axis Z\n    float3 normalForAxisZ = tex2D(TextureNormalMapForAxisXZSampler, uvForAxisZ).yxz;\n    normalForAxisZ.z *= sign(normal.z);\n    \n    //\tBlend normals using triplanar weights\n    normalNew = \n\t\tnormalForAxisX * triplanarWeights.x + \n\t\tnormalForAxisY * triplanarWeights.y + \n\t\tnormalForAxisZ * triplanarWeights.z;\n\t\t\n\t//\tI guess we don't need to normalize because it works even without it.\n    //normalNew = normalize(normalNew);\n} \n\n//\tVoxel rendering\nGbufferPixelShaderOutput GetVoxelTexturedLitBumpTriplanarPixel(float3 worldPositionForTextureCoords, float3 worldPosition, float3 triplanarWeights, float3 normal, float ambient, float sun, int quality)\n{\n\t//return float4(0,0,1,1);\n\n\tGbufferPixelShaderOutput output;\n\t\n    normal = normalize(normal);\n    //viewDirection = normalize(viewDirection);\n    //directionToReflector = normalize(directionToReflector);    \n\t\n\tfloat distanceToReflector = GetDistanceToReflector(worldPosition);\n\tfloat distanceForTextures = saturate((distanceToReflector - VoxelTextureDistanceNear) / (VoxelTextureDistanceFar - VoxelTextureDistanceNear));\n\t//float distanceToReflectorInverted = 1 - saturate(distanceToReflector / ReflectorRange);\n\t//float distanceForFog = saturate((distanceToReflector - FogDistanceNear) / (FogDistanceFar - FogDistanceNear));\n\n\t//\tNear texture\t\t\n\tfloat2 uvForAxisX_Near = worldPositionForTextureCoords.zy / VoxelTextureScaleNear;\n\tfloat2 uvForAxisY_Near = worldPositionForTextureCoords.xz / VoxelTextureScaleNear;\n\tfloat2 uvForAxisZ_Near = worldPositionForTextureCoords.xy / VoxelTextureScaleNear;\n\tfloat4 diffuseTextureNear;\n\tfloat4 specularTextureNear;\n\tfloat3 normalNear;\n\n\t//\tFar texture\n\tfloat2 uvForAxisX_Far = worldPositionForTextureCoords.zy / VoxelTextureScaleFar;\n\tfloat2 uvForAxisY_Far = worldPositionForTextureCoords.xz / VoxelTextureScaleFar;\n\tfloat2 uvForAxisZ_Far = worldPositionForTextureCoords.xy / VoxelTextureScaleFar;\n\tfloat4 diffuseTextureFar;\n\tfloat4 specularTextureFar;\n\tfloat3 normalFar;\n\n\tfloat4 specularTexture;\n\tif (quality == 0)\n\t{\t    \n\t\tGetTextureForHighQuality(uvForAxisX_Near, uvForAxisY_Near, uvForAxisZ_Near, normal, triplanarWeights, diffuseTextureNear, specularTextureNear, normalNear);\n\t\tGetTextureForHighQuality(uvForAxisX_Far, uvForAxisY_Far, uvForAxisZ_Far, normal, triplanarWeights, diffuseTextureFar, specularTextureFar, normalFar);\n\t\tnormal = lerp(normalNear, normalFar, distanceForTextures);\n\t\tspecularTexture = lerp(specularTextureNear, specularTextureFar, distanceForTextures);\t\t\n\t}\n\telse\t\t\n\t{\n\t\tGetTextureForLowQuality(uvForAxisX_Near, uvForAxisY_Near, uvForAxisZ_Near, triplanarWeights, diffuseTextureNear);\n\t\tGetTextureForLowQuality(uvForAxisX_Far, uvForAxisY_Far, uvForAxisZ_Far, triplanarWeights, diffuseTextureFar);\n\t}\t\n\t\n\t//\tCombine near and far textures\n\tfloat4 diffuseTexture = lerp(diffuseTextureNear, diffuseTextureFar, distanceForTextures);\n\t\n    ////////////////////////////////////////////////////////////////////////////////////\n    //\tCalculate lighting (diffuse + specular + attenuation)\n    ////////////////////////////////////////////////////////////////////////////////////\n    \n    //\tSun - diffuse\n\t//float sunDiffuseMultiplier = saturate(dot(normal, DirectionToSun));\n\n    //\tReflector - diffuse\n    //float reflectorDiffuseMultiplier = saturate(dot(normal, directionToReflector));\n   \n\t//\tReflector - attenuation\n    //float4 reflectorAttenuation = GetReflectorColorWithAttenuation(distanceToReflectorInverted, directionToReflector);       \n\n\t//\tCombine sun + ambient + reflector + near light (diffuse)\n\t//\tNear light is made almost two times: first is more distant near light and it's in fact reflector spread in 360 degress, but not as far; Second is really near light, and is visible when player shoots\n\t//float4 resultColor = ambient + SunColor * sun * sunDiffuseMultiplier + reflectorDiffuseMultiplier * (ReflectorNearLightDistanceMultiplier * distanceToReflectorInverted * ReflectorColor + reflectorAttenuation + nearLight);\n\t//resultColor *= diffuseTexture;\n\t\n\t/*\n\t//\tCombine sun + reflector + near light (specular)\n\tif (quality == 0)\n\t{\t    \n\t\t//\tSun - specular\n\t\tfloat3 sunReflectedLight = reflect(DirectionToSun, normal);\n\t\tfloat sunrDotV = saturate(dot(sunReflectedLight, viewDirection));        \n\t\tfloat4 sunSpecularMultiplier = Shininess * pow(sunrDotV, SpecularPower);    \n\n\t\t//\tReflector - specular\n\t\tfloat3 reflectorReflectedLight = reflect(directionToReflector, normal);\n\t\tfloat reflectorrDotV = saturate(dot(reflectorReflectedLight, viewDirection));        \n\t\tfloat4 reflectorSpecularMultiplier = Shininess * pow(reflectorrDotV, SpecularPower);    \n\n\t    resultColor += specularTexture * (reflectorSpecularMultiplier * reflectorAttenuation + SunColor * sun * sunSpecularMultiplier);\n\t}\n    \n    //\tAdd dynamic lights\n    for (int i = 0; i < DynamicLightsCount; i++)\n    {\n\t\tif (quality == 0)\n\t\t{\n\t\t\tresultColor += CalculateDynamicLight_DiffuseSpecular(DynamicLights[i], worldPosition, normal, diffuseTexture, specularTexture);\n\t\t}\n\t\telse if (quality == 1)\n\t\t{\n\t\t\tresultColor += CalculateDynamicLight_Diffuse(DynamicLights[i], worldPosition, normal, diffuseTexture);\n\t\t}\n    }\n\n\t//\tDon't blend to full-fog-color, just little bit (we don't want to have farther objects same color)\n    return lerp(resultColor, FogColor, FogMultiplier * distanceForFog);\n    */\n    \n\toutput.Depth = float4(1, 1.0f, 1.0f, 1.0f); //float4(-input.ViewDepth / FarPlane, 1.0f, 1.0f, 1.0f);\toutput.Normal.rgb = 0.5f * (normalize(input.Normal) + 1.0f);\n\toutput.Normal.xyz = normal;\n\toutput.Normal.a = 1;\t\n    \n    return output;\n}"
  },
  {
    "path": "Effects/TODO/MyEffectStencilMask.fx",
    "content": "float4x4 ProjectionMatrix;\nfloat ThresholdAlpha;\n\nTexture StencilTexture;\nsampler StencilTextureSampler = sampler_state \n{ \n\ttexture = <StencilTexture> ; \n\tmagfilter = LINEAR; \n\tminfilter = LINEAR; \n\tmipfilter = LINEAR; \n\tAddressU = clamp; \n\tAddressV = clamp;\n};\n\nstruct VertexShaderInput\n{\n    float4 Position : POSITION0;\n    float2 TexCoord : TEXCOORD0;\n};\n\nstruct VertexShaderOutput\n{\n    float4 Position : POSITION0;\n    float2 TexCoord : TEXCOORD0;\n};\n\nVertexShaderOutput VertexShaderFunction(VertexShaderInput input)\n{\n    VertexShaderOutput output;\n\n    output.Position = mul(input.Position, ProjectionMatrix);\n    output.TexCoord = input.TexCoord;\n\n    return output;\n}\n\nfloat4 PixelShaderFunction(VertexShaderOutput input) : COLOR0\n{\t\n\tfloat alphaTexture = tex2D(StencilTextureSampler, input.TexCoord).x;\n\t\n\t//\tFunction 'clip' - discards the current pixel if the specified value is less than zero.\t\n\t//\tSo the pixel will survive only if its texel alpha is greater or equal than 'threshold alpha' - it will survive and will get rendered as 1 into stencil buffer.\n\t//\tOtherwise it gets discarded and will not be written into stencil buffer (and of course not into color buffer)\n\tclip(alphaTexture >= ThresholdAlpha ? 0 : -1);\n\n\t//\tThis will be called only if pixel survived the 'discard' above (but I also think that GPU will execute it no matter what and only then do the discard operation)\n    return float4(1, 1, 1, alphaTexture);\n}\n\ntechnique Technique1\n{\n    pass Pass1\n    {\n        VertexShader = compile vs_3_0 VertexShaderFunction();\n        PixelShader = compile ps_3_0 PixelShaderFunction();\n    }\n}"
  },
  {
    "path": "Effects/Toolkit/Macros.fxh",
    "content": "// Macros for targetting shader model 2.0 (DX9)\n\n#define BEGIN_CONSTANTS\n#define MATRIX_CONSTANTS\n#define END_CONSTANTS\n\n\n#define DECLARE_TEXTURE(Name, index) \\\n    texture2D Name; \\\n    sampler Name##Sampler : register(s##index) = sampler_state { Texture = (Name); };\n\n#define DECLARE_CUBEMAP(Name, index) \\\n    textureCUBE Name; \\\n    sampler Name##Sampler : register(s##index) = sampler_state { Texture = (Name); };\n\n#define SAMPLE_TEXTURE(Name, texCoord)  tex2D(Name##Sampler, texCoord)\n#define SAMPLE_CUBEMAP(Name, texCoord)  texCUBE(Name##Sampler, texCoord)\n\n"
  },
  {
    "path": "Effects/Toolkit/SpriteEffect.fx",
    "content": "//-----------------------------------------------------------------------------\n// SpriteEffect.fx\n//\n// Microsoft XNA Community Game Platform\n// Copyright (C) Microsoft Corporation. All rights reserved.\n//-----------------------------------------------------------------------------\n\n#include \"Macros.fxh\"\n\n\nDECLARE_TEXTURE(Texture, 0);\n\nTextureCube SpriteTextureCube;\nsampler SpriteTextureSamplerCube = sampler_state \n{ \n\ttexture = <SpriteTextureCube> ; \n\tmagfilter = LINEAR; \n\tminfilter = LINEAR; \n\tmipfilter = NONE; \n\tAddressU = clamp; \n\tAddressV = clamp;\n};\n\n\nBEGIN_CONSTANTS\nMATRIX_CONSTANTS\n\n    float4x4 MatrixTransform ;\n\nEND_CONSTANTS\n\n\nvoid SpriteVertexShader(inout float4 position : POSITION,\n\t\t\t\t\t\tinout float4 color    : COLOR0,\n                        inout float2 texCoord : TEXCOORD0)\n{\n    position = mul(position, MatrixTransform);\n}\n\n\nfloat4 SpritePixelShader(float4 color : COLOR0,\t float2 texCoord : TEXCOORD0) : COLOR0\n{\n  return SAMPLE_TEXTURE(Texture, texCoord) * color;\n  //return float4(texCoord.x, texCoord.x, texCoord.x, 1) * color;\n  //return color;\n}\n\nfloat4 SpritePixelShaderCube(float4 color : COLOR0,\t float2 texCoord : TEXCOORD0, uniform int faceIndex) : COLOR0\n{\n\tfloat2 c = (texCoord - 0.5f) * 2;\n\n\tfloat3 coord;\n\n\tif(faceIndex == 0) coord = float3(1, -c.y, -c.x);\n\telse if(faceIndex == 1) coord = float3(-1, -c.y, c.x);\n\telse if(faceIndex == 2) coord = float3(c.x, 1, c.y);\n\telse if(faceIndex == 3) coord = float3(c.x, -1, -c.y);\n\telse if(faceIndex == 4) coord = float3(c.x, -c.y, 1.0f);\n\telse coord = float3(-c.x, -c.y, -1.0f);\n\n    return texCUBE(SpriteTextureSamplerCube, coord) * color;    \n}\n\n\ntechnique SpriteBatch\n{\n    pass\n    {\n        VertexShader = compile vs_3_0 SpriteVertexShader();\n        PixelShader  = compile ps_3_0 SpritePixelShader();\n    }\n}\n\ntechnique SpriteBatchCube0\n{\n    pass Pass1\n    {\n\t\tVertexShader = compile vs_3_0 SpriteVertexShader();\n        PixelShader = compile ps_3_0 SpritePixelShaderCube(0);\n    }\n}\n\ntechnique SpriteBatchCube1\n{\n    pass Pass1\n    {\n\t\tVertexShader = compile vs_3_0 SpriteVertexShader();\n        PixelShader = compile ps_3_0 SpritePixelShaderCube(1);\n    }\n}\n\ntechnique SpriteBatchCube2\n{\n    pass Pass1\n    {\n\t\tVertexShader = compile vs_3_0 SpriteVertexShader();\n        PixelShader = compile ps_3_0 SpritePixelShaderCube(2);\n    }\n}\n\ntechnique SpriteBatchCube3\n{\n    pass Pass1\n    {\n\t\tVertexShader = compile vs_3_0 SpriteVertexShader();\n        PixelShader = compile ps_3_0 SpritePixelShaderCube(3);\n    }\n}\n\ntechnique SpriteBatchCube4\n{\n    pass Pass1\n    {\n\t\tVertexShader = compile vs_3_0 SpriteVertexShader();\n        PixelShader = compile ps_3_0 SpritePixelShaderCube(4);\n    }\n}\n\ntechnique SpriteBatchCube5\n{\n    pass Pass1\n    {\n\t\tVertexShader = compile vs_3_0 SpriteVertexShader();\n        PixelShader = compile ps_3_0 SpritePixelShaderCube(5);\n    }\n}\n"
  },
  {
    "path": "Effects/TransparentGeometry/MyEffectTransparentGeometry.fx",
    "content": "#include \"../MyEffectDynamicLightingBase.fxh\"\n#include \"../MyEffectReflectorBase.fxh\"\n\n//\tRenders transparent quads (billboards, polyline...) through forward renderer, therefore needs to \n//\thandle lights, shadows, fog... we can't use deferred rendering here.\n\nfloat2\t\tHalfPixel;\nfloat2\t\tScale;\nfloat4x4\tWorldMatrix;\nfloat4x4\tViewMatrix;\nfloat4x4\tProjectionMatrix;\nfloat\t\tSoftParticleDistanceScale;\n\nfloat4x4\tWorldViewMatrix;\nfloat4x4\tWorldViewProjectionMatrix;\n\nfloat4\t\tColorizeColor;\nfloat3\t\tColorizePlaneNormal;\nfloat\t\tColorizePlaneDistance;\nfloat\t\tColorizeSoftDistance;\n\nfloat2\t\tAlphaMultiplierSaturation = float2(1,1);\n\nTexture BillboardTexture;\nsampler BillboardTextureSampler = sampler_state \n{ \n\ttexture = <BillboardTexture> ; \n\tMipFilter = LINEAR;\n\tMinFilter = LINEAR;\n\tMagFilter = LINEAR;\n\tAddressU = wrap; \n\tAddressV = wrap;\n};\n\nTexture BillboardBlendTexture;\nsampler BillboardBlendTextureSampler = sampler_state \n{ \n\ttexture = <BillboardBlendTexture> ; \n\tMipFilter = LINEAR;\n\tMinFilter = LINEAR;\n\tMagFilter = LINEAR;\n\tAddressU = clamp; \n\tAddressV = clamp;\n};\n\nTexture DepthsRT;\nsampler DepthsRTSampler = sampler_state \n{ \n\ttexture = <DepthsRT> ; \n\tmagfilter = POINT; \n\tminfilter = POINT; \n\tmipfilter = NONE; \n\tAddressU = clamp; \n\tAddressV = clamp;\n};\n\nstruct VertexShaderInput\n{\n\tfloat4 Position : POSITION0;\n\tfloat4 Color : NORMAL0;\n\tfloat4 TexCoord : TEXCOORD0;\n\tfloat2 TexCoord2 : TEXCOORD1; //blend tex coords\n};\n\n\nstruct VertexShaderUnlitOutput\n{\n\tfloat4 Position : POSITION0;\n\tfloat4 Color : NORMAL0;\t\t\t\t\t\t//\tColor must be passed as NORMAL0 (and not COLOR0), because we need to pass values higher than 1, and COLOR0 was clamping them to <0..1>\n\tfloat4 TexCoord: TEXCOORD0;\t\t\t\t//\tIn XY we pass texture coordinate, in Z texture blend \n\tfloat3 WorldPosition : TEXCOORD1;\n\tfloat4 ViewPosition : TEXCOORD2;\n\tfloat4 ProjectedPosition: TEXCOORD3;\n\tfloat2 TexCoord2: TEXCOORD4;\n};\n\nstruct VertexShaderLitOutput\n{\n\tVertexShaderUnlitOutput UnlitOutput;\n\tfloat2 ShadowColorAndReflectorAtt : TEXCOORD5;\n\tfloat3 LightColor : TEXCOORD6;\n};\n\n\nVertexShaderUnlitOutput VertexShaderFunctionUnlit(VertexShaderInput input)\n{\n\tVertexShaderUnlitOutput output;\n\t\n\toutput.Position = mul(input.Position, WorldMatrix);\n\toutput.WorldPosition = output.Position;\n\toutput.ViewPosition = mul(output.Position, ViewMatrix);\n\toutput.Position = mul(output.ViewPosition, ProjectionMatrix);\n\t//output.ViewPosition = mul(input.Position, WorldViewMatrix);    \n\t//output.Position = mul(input.Position, WorldViewProjectionMatrix);    \n\toutput.ProjectedPosition = output.Position;\n\toutput.TexCoord = input.TexCoord;\n\toutput.TexCoord2 = input.TexCoord2;  \n\toutput.Color = input.Color;\n\n\treturn output;\n}\n\n\nVertexShaderLitOutput VertexShaderFunctionLit(VertexShaderInput input)\n{\n\tVertexShaderUnlitOutput output = VertexShaderFunctionUnlit(input);\n\tVertexShaderLitOutput litOutput;\n\tlitOutput.UnlitOutput = output;\n\n\tfloat diff = 0;\n#ifdef COLOR_SHADOW_MAP_FORMAT\n\tlitOutput.ShadowColorAndReflectorAtt.x = 1.0f; \n#else\n\tlitOutput.ShadowColorAndReflectorAtt.x = GetShadowTermFromPosition(float4(output.ViewPosition.xyz, 1), output.ViewPosition.z, 0, 0, diff);\n#endif\n\n\tfloat distanceToReflector = GetDistanceToReflector(litOutput.UnlitOutput.WorldPosition);\n\tfloat3 directionToReflector = GetDirectionToReflector(litOutput.UnlitOutput.WorldPosition);\n\tfloat distanceToReflectorInverted = 1 - saturate(distanceToReflector / ReflectorRange);\n\n\t\n\t//\tReflector - attenuation\n\tlitOutput.ShadowColorAndReflectorAtt.y = GetReflectorAttenuation(distanceToReflectorInverted, normalize(directionToReflector));       \n\t//litOutput.ShadowColorAndReflectorAtt.y = 0;       \n\n\tlitOutput.LightColor = float3(0,0,0);\n\n\tfor (int i = 0; i < DynamicLightsCount; i++)\n\t{\n\t\tlitOutput.LightColor += CalculateDynamicLightForParticle(DynamicLights[i], output.WorldPosition);\n\t}\n\n\t//litOutput.LightColor = saturate(litOutput.LightColor);\n\n\treturn litOutput;\n}\n\nfloat4 SaturateAlpha(float4 resultColor, float alpha)\n{\n\tif (AlphaMultiplierSaturation.y < 1)\n\t{\n\t\tfloat invSat = 1 - AlphaMultiplierSaturation.y;\n\t\tfloat alphaSaturate = clamp(alpha - invSat, 0, 1) / AlphaMultiplierSaturation.y;\n\t\tresultColor += float4(1,1,1,1) * float4(alphaSaturate.xxx, 0) * alpha * AlphaMultiplierSaturation.y;// *  *\n\t}\n\treturn resultColor;\n}\n\nfloat4 calculateColor( VertexShaderUnlitOutput input, bool depthTest )\n{\n\t//\tConversion of 4D position into 'screen space texture coord' must be calculated in pixel shader, because W is \n\t//\tnot linear and it would give wrong results if calculated in vertex shader and interpolated into pixel shader.\n\t//\tIMPORTANT: HalfPixel is calculated from depth render target size, not from regular screen\n\tfloat2 screenSpaceTexCoord = GetScreenSpaceTextureCoord(input.ProjectedPosition, HalfPixel) * Scale;\n\t\n\tfloat softParticleFade = 1;\n\n\tif (depthTest)\n\t{\n\t\t//\tPixel distance must be calculated per-pixel (not in vertex shader and then interpolated) because\n\t\t//\totherwise we won't get good distance due to perspective projection\n\t\t//\tThis is a specific feature of camera facing billboards\n\t\tfloat viewDistance = length(input.ViewPosition.xyz);\n\t\tfloat depthBufferDistance = GetViewDistanceFromDepth( DecodeFloatRGBA(tex2D(DepthsRTSampler, screenSpaceTexCoord)), input.ViewPosition.xyz);    \n\n\t\t\n\t\tif (SoftParticleDistanceScale >= 10000)\n\t\t{\n\t\t\tviewDistance -= 2;\n\t\t}\n\n\n\t\t//\tThis is just an optimization, based on distance. Don't do it on \"alpha <= 0\", because now we use\n\t\t//\tpre-multiplied alpha and we render particles even if their alpha is zero.\n\t\tif (viewDistance > depthBufferDistance)\n\t\t{\t\n\t\t\tdiscard;\n\t\t\treturn float4(1,1,1,1);\n\t\t}\n\n\t\tsoftParticleFade = saturate(SoftParticleDistanceScale * (depthBufferDistance - viewDistance));\t\t\t\n\t}\n\n\n\tfloat4 resultColor = tex2D(BillboardTextureSampler, input.TexCoord.xy);\n\tfloat alpha = resultColor.x*resultColor.y*resultColor.z;\n\tif (input.TexCoord.z > 0)\n\t{\n\t\tfloat4 blendColor = tex2D(BillboardBlendTextureSampler, input.TexCoord2.xy);\n\t\tresultColor = lerp(resultColor, blendColor, input.TexCoord.z);\n\t}\n\t\t\n\tresultColor = saturate (resultColor * input.Color * AlphaMultiplierSaturation.x);            \n\t\n\tresultColor += 100 * input.TexCoord.w * resultColor; \n\n\tresultColor = SaturateAlpha(resultColor, alpha);\n\n\tresultColor *= softParticleFade;\t\n\n\treturn resultColor;\n}\n\nfloat4 calculateColorIgnoreDepth( VertexShaderUnlitOutput input )\n{\n\t//\tConversion of 4D position into 'screen space texture coord' must be calculated in pixel shader, because W is \n\t//\tnot linear and it would give wrong results if calculated in vertex shader and interpolated into pixel shader.\n\t//\tIMPORTANT: HalfPixel is calculated from depth render target size, not from regular screen\n\tfloat2 screenSpaceTexCoord = GetScreenSpaceTextureCoord(input.ProjectedPosition, HalfPixel) * Scale;\n\tfloat4 resultColor = tex2D(BillboardTextureSampler, input.TexCoord.xy);\n\tfloat alpha = resultColor.x * resultColor.y * resultColor.z;\n\treturn SaturateAlpha(resultColor * input.Color, alpha);\n}\n\nfloat4 PixelShaderFunctionColorizeHeight(VertexShaderUnlitOutput input) : COLOR0\n{\t\n\tfloat4 color = calculateColorIgnoreDepth(input);\n\n\tfloat dist = dot(input.WorldPosition, normalize(ColorizePlaneNormal)) + ColorizePlaneDistance;\n\tfloat softDist = ColorizeSoftDistance;\n\treturn color - color * ColorizeColor * saturate((-dist) / softDist);\n\t//return color * ColorizeColor * saturate((ColorizeSoftDistance - dist) / ColorizeSoftDistance);\n}\n\nfloat4 PixelShaderFunctionUnlit(VertexShaderUnlitOutput input) : COLOR0\n{\t\n\treturn calculateColor( input, true );\n}\n\nfloat4 PixelShaderFunctionUnlit_Forward(VertexShaderUnlitOutput input) : COLOR0\n{\t\n\treturn calculateColor( input, false);\n}\n\nfloat4 PixelShaderFunctionLit(VertexShaderLitOutput input) : COLOR0\n{\t\n\tfloat4 resultColor = calculateColor( input.UnlitOutput, true );\n\t//If this particle can be influenced by light\n\tresultColor.xyz = resultColor.xyz * (input.ShadowColorAndReflectorAtt.x + input.ShadowColorAndReflectorAtt.y * ReflectorColor + input.LightColor);\n\t\n\t/*resultColor.xyz = resultColor.xyz * (input.ShadowColorAndReflectorAtt.x) + input.LightColor * resultColor.w;\n\t\n\tfloat distanceToReflector = GetDistanceToReflector(input.UnlitOutput.WorldPosition);\n\tfloat3 directionToReflector = GetDirectionToReflector(input.UnlitOutput.WorldPosition);\n\tfloat distanceToReflectorInverted = 1 - saturate(distanceToReflector / ReflectorRange);\n\n\tfloat reflectorAtt = GetReflectorAttenuation(distanceToReflectorInverted, normalize(directionToReflector));       \n\n\tresultColor.xyz += reflectorAtt * ReflectorColor * resultColor.w;\n\t*/\n\n\treturn resultColor;\n}\n\nfloat4 PixelShaderFunctionIgnoreDepth(VertexShaderUnlitOutput input) : COLOR0\n{\t\n\treturn calculateColorIgnoreDepth( input );\n}\n\nfloat4 PixelShaderFunctionVisualizeOverdraw(VertexShaderUnlitOutput input) : COLOR0\n{\t\n\treturn float4(1,0,0,1);\n}\n\n\ntechnique Technique_UnlitBasic\n{\n\tpass Pass1\n\t{\n\t\tVertexShader = compile vs_3_0 VertexShaderFunctionUnlit();\n\t\tPixelShader = compile ps_3_0 PixelShaderFunctionUnlit();\n\t}\n}\n\ntechnique Technique_UnlitBasic_Forward\n{\n\tpass Pass1\n\t{\n\t\tVertexShader = compile vs_3_0 VertexShaderFunctionUnlit();\n\t\tPixelShader = compile ps_3_0 PixelShaderFunctionUnlit_Forward();\n\t}\n}\n\ntechnique Technique_LitBasic\n{\n\tpass Pass1\n\t{\n\t\tVertexShader = compile vs_3_0 VertexShaderFunctionLit();\n\t\tPixelShader = compile ps_3_0 PixelShaderFunctionLit();\n\t}\n}\n\ntechnique Technique_IgnoreDepthBasic\n{\n\tpass Pass1\n\t{\n\t\tVertexShader = compile vs_3_0 VertexShaderFunctionUnlit();\n\t\tPixelShader = compile ps_3_0 PixelShaderFunctionIgnoreDepth();\n\t}\n}\n\ntechnique Technique_ColorizeHeight\n{\n\tpass Pass1\n\t{\n\t\tVertexShader = compile vs_3_0 VertexShaderFunctionUnlit();\n\t\tPixelShader = compile ps_3_0 PixelShaderFunctionColorizeHeight();\n\t}\n}\n\ntechnique Technique_VisualizeOverdraw\n{\n\tpass Pass1\n\t{\n\t\tVertexShader = compile vs_3_0 VertexShaderFunctionUnlit();\n\t\tPixelShader = compile ps_3_0 PixelShaderFunctionVisualizeOverdraw();\n\t}\n}"
  },
  {
    "path": "Effects/Voxels/MyEffectVoxels.fx",
    "content": "#include \"MyEffectVoxelsBase.fxh\"\n\n\nfloat3\t\tVoxelMapPosition;\nfloat4x4\tViewMatrix;\nfloat4x4\tProjectionMatrix;\nfloat3      DiffuseColor;\nfloat3      Highlight;\n\n// for forward render\nfloat4x4\tWorldViewProjectionMatrix;\nfloat4x4\tWorldMatrix;\n\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nMyGbufferPixelShaderOutput PixelShaderFunction(VertexShaderOutput input, uniform int renderQuality)\n{\n    //Cut pixels from LOD1 which are before LodNear\n\n    if (IsPixelCut(input.ViewDistance.y))\n    {\n        discard;\n        return (MyGbufferPixelShaderOutput)0;\n    }\n    else\t \n    {\n        MyGbufferPixelShaderOutput output = GetTriplanarPixel(0, input.WorldPositionForTextureCoords, input.TriplanarWeights, input.Normal, input.ViewDistance.x, SpecularIntensity, SpecularPower, input.Ambient, renderQuality);\n        output.DiffuseAndSpecIntensity.rgb = output.DiffuseAndSpecIntensity.rgb * DiffuseColor + Highlight;\n        output.DepthAndEmissivity.a = PackGBufferEmissivityReflection((1 - output.DepthAndEmissivity.w) + length(Highlight), 0.0f); //inverted emissivity, zero reflection\n        return output;\n    }\n}\n\nMyGbufferPixelShaderOutput PixelShaderFunction_Multimaterial(VertexShaderOutput_Multimaterial multiInput, uniform int renderQuality)\n{\n\tVertexShaderOutput input = multiInput.Single;\n\tif (IsPixelCut(input.ViewDistance.y))\n    {\n        discard;\n        return (MyGbufferPixelShaderOutput)0;\n    }\n\telse\t \n    {\n\t\tVertexShaderOutput input = multiInput.Single;\n\n\t\tMyGbufferPixelShaderOutput output0 = GetTriplanarPixel(0, input.WorldPositionForTextureCoords, input.TriplanarWeights, input.Normal, input.ViewDistance.x, SpecularIntensity, SpecularPower, input.Ambient, renderQuality);\n\t\tMyGbufferPixelShaderOutput output1 = GetTriplanarPixel(1, input.WorldPositionForTextureCoords, input.TriplanarWeights, input.Normal, input.ViewDistance.x, SpecularIntensity2, SpecularPower2, input.Ambient, renderQuality);\n\t\tMyGbufferPixelShaderOutput output2 = GetTriplanarPixel(2, input.WorldPositionForTextureCoords, input.TriplanarWeights, input.Normal, input.ViewDistance.x, SpecularIntensity3, SpecularPower3, input.Ambient, renderQuality);\n\n\t\tMyGbufferPixelShaderOutput output;\n\t\toutput.NormalAndSpecPower = output0.NormalAndSpecPower * multiInput.Alpha.x + output1.NormalAndSpecPower * multiInput.Alpha.y + output2.NormalAndSpecPower * multiInput.Alpha.z;\n\t\toutput.DiffuseAndSpecIntensity = output0.DiffuseAndSpecIntensity * multiInput.Alpha.x + output1.DiffuseAndSpecIntensity * multiInput.Alpha.y + output2.DiffuseAndSpecIntensity * multiInput.Alpha.z;\n\t\toutput.DepthAndEmissivity = output0.DepthAndEmissivity * multiInput.Alpha.x + output1.DepthAndEmissivity * multiInput.Alpha.y + output2.DepthAndEmissivity * multiInput.Alpha.z;\n\n\t\toutput.DiffuseAndSpecIntensity.rgb = output.DiffuseAndSpecIntensity.rgb * DiffuseColor + Highlight;\n\t\toutput.DepthAndEmissivity.a = PackGBufferEmissivityReflection((1 - output.DepthAndEmissivity.w) + length(Highlight), 0.0f); //inverted emissivity, zero reflection\n\n\t\treturn output;\n\t}\n}\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nVertexShaderOutput VertexShaderFunction(VertexShaderInput input)\n{\n    VertexShaderOutput output;\n\n    input.PositionAndAmbient.xyz = UnpackVoxelPosition(input.PositionAndAmbient);\n    output.Ambient = UnpackVoxelAmbient(input.PositionAndAmbient);\n    input.Normal = UnpackNormal(input.Normal);\n\n    output.WorldPositionForTextureCoords = input.PositionAndAmbient.xyz;\t\n    float4 viewPosition = mul(float4(input.PositionAndAmbient.xyz + VoxelMapPosition, 1), ViewMatrix);\n\n    //\tWe need distance between camera and the vertex. We don't want to use just Z, or Z/W, we just need that distance.\t\n    output.ViewDistance.x = -viewPosition.z;\n    output.ViewDistance.y = length(viewPosition);\n    \n    output.Position = mul(viewPosition, ProjectionMatrix);\n    //output.ViewDistance = output.Position.z;\n    output.Normal = input.Normal;\n    output.TriplanarWeights = GetTriplanarWeights(output.Normal);\n    \n    return output;\n}\n\nVertexShaderOutput_Multimaterial VertexShaderFunction_Multimaterial(VertexShaderInput input)\n{\n    VertexShaderOutput_Multimaterial output;\n    output.Alpha = UnpackVoxelAlpha(input.PositionAndAmbient);\n    output.Single = VertexShaderFunction(input);\n    return output;\n}\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nVertexShaderOutput_Forward VertexShaderFunction_Forward(VertexShaderInput input)\n{\n    VertexShaderOutput_Forward output;\n\n    input.PositionAndAmbient.xyz = UnpackVoxelPosition(input.PositionAndAmbient);\n    input.Normal = UnpackNormal(input.Normal);\n\n    output.WorldPositionForTextureCoords = input.PositionAndAmbient.xyz;\t\n    float4 worldPosition = float4(input.PositionAndAmbient.xyz + VoxelMapPosition, 1);\n    float4 viewPosition = mul(worldPosition, ViewMatrix);\n    output.WorldPosition = worldPosition.xyz;\t\n    output.Ambient = UnpackVoxelAmbient(input.PositionAndAmbient);\n\n    //\tWe need distance between camera and the vertex. We don't want to use just Z, or Z/W, we just need that distance.\t\n    output.ViewDistance = -viewPosition.z;\n    //output.ViewDistanceRadial = length(viewPosition);\n    \n    output.Position = mul(viewPosition, ProjectionMatrix);\n    output.Normal = input.Normal;\n    output.TriplanarWeights = GetTriplanarWeights(output.Normal);\n\n    //Lighting\n    float4 lightColor = CalculateDynamicLight_Diffuse(worldPosition, input.Normal);\n    output.LightColor = lightColor;\n\n    return output;\n}\n\n\nfloat4 PixelShaderFunctionLow_Forward(VertexShaderOutput_Forward input, uniform int renderQuality) : COLOR0\n{\n//\tMyGbufferPixelShaderOutput output = GetTriplanarPixel(0, input.WorldPositionForTextureCoords, input.TriplanarWeights, input.Normal, input.ViewDistance, SpecularIntensity, SpecularPower, input.Ambient, renderQuality);\n//\toutput.DiffuseAndSpecIntensity.rgb = output.DiffuseAndSpecIntensity.rgb * DiffuseColor + Highlight;\n//\toutput.DepthAndEmissivity.a = PackGBufferEmissivityReflection((1 - output.DepthAndEmissivity.w) - length(Highlight), 0.0f); //inverted emissivity, zero reflection\n//\treturn output;\n        \n               \n    if (IsPixelCut(input.ViewDistance.x))\n    {\n        discard;\n        return float4(1,1,1,1);\n    }\t  \n\n    //float4 diffuseTexture = tex2D(TextureDiffuseForAxisXZSampler[0], input.WorldPositionForTextureCoords.zy / TEXTURE_SCALE_FAR); \n    float3 diffuseTexture = GetTriplanarPixel(0, input.WorldPositionForTextureCoords, input.TriplanarWeights, input.Normal, input.ViewDistance.x, SpecularIntensity, SpecularPower, input.Ambient, renderQuality).DiffuseAndSpecIntensity.rgb;\n\n    //MyGbufferPixelShaderOutput output = GetTriplanarPixel(0, input.WorldPositionForTextureCoords, input.TriplanarWeights, input.Normal, input.ViewDistance, SpecularIntensity, SpecularPower, input.Ambient, renderQuality);\n\n    //output.DiffuseAndSpecIntensity.rgb = output.DiffuseAndSpecIntensity.rgb * DiffuseColor + Highlight;\n    //output.DepthAndEmissivity.a = PackGBufferEmissivityReflection((1 - output.DepthAndEmissivity.w) + length(Highlight), 0.0f); //inverted emissivity, zero reflection\n\n    float4 color = float4(diffuseTexture, 1) * float4(DiffuseColor, 1);\n    color.xyz = color * (/*input.Ambient +*/ AmbientColor + Highlight  + input.LightColor + /*GetSunColor(input.Normal) + */GetReflectorColor(input.WorldPosition));\n    color.w = 1;\n\n    return color;\n}\n\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\ntechnique Technique_RenderQualityLow_Forward\n{\n    pass Pass1\n    {\n        DECLARE_TEXTURES_QUALITY_LOW\n\n        VertexShader = compile vs_2_0 VertexShaderFunction_Forward();\n        PixelShader = compile ps_2_0 PixelShaderFunctionLow_Forward(RENDER_QUALITY_LOW);\n    }\n}\n\ntechnique Technique_RenderQualityLow\n{\n    pass Pass1\n    {\n        DECLARE_TEXTURES_QUALITY_LOW\n\n        VertexShader = compile vs_3_0 VertexShaderFunction();\n        PixelShader = compile ps_3_0 PixelShaderFunction(RENDER_QUALITY_LOW);\n    }\n}\n\n\ntechnique Technique_RenderQualityNormal\n{\n    pass Pass1\n    {\n        DECLARE_TEXTURES_QUALITY_NORMAL\n\n        VertexShader = compile vs_3_0 VertexShaderFunction();\n        PixelShader = compile ps_3_0 PixelShaderFunction(RENDER_QUALITY_NORMAL);\n    }\n}\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\ntechnique Technique_RenderQualityHigh\n{\n    pass Pass1\n    {\n        DECLARE_TEXTURES_QUALITY_HIGH\n\n        VertexShader = compile vs_3_0 VertexShaderFunction();\n        PixelShader = compile ps_3_0 PixelShaderFunction(RENDER_QUALITY_HIGH);\n    }\n}\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\ntechnique Technique_RenderQualityExtreme\n{\n    pass Pass1\n    {\t\t\n        DECLARE_TEXTURES_QUALITY_EXTREME\n        \n        VertexShader = compile vs_3_0 VertexShaderFunction();\n        PixelShader = compile ps_3_0 PixelShaderFunction(RENDER_QUALITY_EXTREME);\n    }\n}\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\ntechnique Technique_RenderQualityNormal_Multimaterial\n{\n    pass Pass1\n    {\n        DECLARE_TEXTURES_QUALITY_NORMAL\n\n        VertexShader = compile vs_3_0 VertexShaderFunction_Multimaterial();\n        PixelShader = compile ps_3_0 PixelShaderFunction_Multimaterial(RENDER_QUALITY_NORMAL);\n    }\n}\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\ntechnique Technique_RenderQualityHigh_Multimaterial\n{\n    pass Pass1\n    {\n        DECLARE_TEXTURES_QUALITY_HIGH\n\n        VertexShader = compile vs_3_0 VertexShaderFunction_Multimaterial();\n        PixelShader = compile ps_3_0 PixelShaderFunction_Multimaterial(RENDER_QUALITY_HIGH);\n    }\n}\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\ntechnique Technique_RenderQualityExtreme_Multimaterial\n{\n    pass Pass1\n    {\t\t\n        DECLARE_TEXTURES_QUALITY_EXTREME\n        \n        VertexShader = compile vs_3_0 VertexShaderFunction_Multimaterial();\n        PixelShader = compile ps_3_0 PixelShaderFunction_Multimaterial(RENDER_QUALITY_EXTREME);\n    }\n}\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n"
  },
  {
    "path": "Effects/Voxels/MyEffectVoxelsBase.fxh",
    "content": "//#include \"../MyEffectBase.fxh\"\n#include \"../MyEffectDynamicLightingBase.fxh\"\n#include \"../MyEffectReflectorBase.fxh\"\n\n//\tThis header implements all triplanar vertex/pixel shader logic used by dedicated model shader and voxel shader\n\n\n//\tVoxel 'texture scale by distance' trick (this is not about LOD at all)\nconst float TEXTURE_SCALE_NEAR = 100;\nconst float TEXTURE_SCALE_FAR = 1000;\n\nint EnablePerVertexAmbient = 1;\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n//\tMaterial\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\n// Specular properties for material 1\nfloat\t\tSpecularIntensity;\nfloat\t\tSpecularPower;\n\n// Specular properties for material 2\nfloat\t\tSpecularIntensity2;\nfloat\t\tSpecularPower2;\n\n// Specular properties for material 3\nfloat\t\tSpecularIntensity3;\nfloat\t\tSpecularPower3;\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n//\tTextures for different axis - common for single-material or multi-material voxels\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nTexture TextureDiffuseForAxisXZ;\nTexture TextureDiffuseForAxisY;\nTexture TextureNormalMapForAxisXZ;\nTexture TextureNormalMapForAxisY;\n\nTexture TextureDiffuseForAxisXZ2;\nTexture TextureDiffuseForAxisY2;\nTexture TextureNormalMapForAxisXZ2;\nTexture TextureNormalMapForAxisY2;\n\nTexture TextureDiffuseForAxisXZ3;\nTexture TextureDiffuseForAxisY3;\nTexture TextureNormalMapForAxisXZ3;\nTexture TextureNormalMapForAxisY3;\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n//\tTexture samplers\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nsampler TextureDiffuseForAxisXZSampler[3] =\n{\n\tsampler_state\n\t{\n\t\ttexture = <TextureDiffuseForAxisXZ> ; \n\t\tmipfilter = LINEAR; \n\t\tAddressU = WRAP; \n\t\tAddressV = WRAP;\n\t},\n\n\tsampler_state\n\t{\n\t\ttexture = <TextureDiffuseForAxisXZ2> ; \n\t\tmipfilter = LINEAR; \n\t\tAddressU = WRAP; \n\t\tAddressV = WRAP;\n\t},\n\n\tsampler_state\n\t{\n\t\ttexture = <TextureDiffuseForAxisXZ3> ; \n\t\tmipfilter = LINEAR; \n\t\tAddressU = WRAP; \n\t\tAddressV = WRAP;\n\t}\n};\n\nsampler TextureDiffuseForAxisYSampler[3] =\n{\n\tsampler_state\n\t{\n\t\ttexture = <TextureDiffuseForAxisY> ; \n\t\tmipfilter = LINEAR; \n\t\tAddressU = WRAP; \n\t\tAddressV = WRAP;\n\t},\n\n\tsampler_state\n\t{\n\t\ttexture = <TextureDiffuseForAxisY2> ; \n\t\tmipfilter = LINEAR; \n\t\tAddressU = WRAP; \n\t\tAddressV = WRAP;\n\t},\n\n\tsampler_state\n\t{\n\t\ttexture = <TextureDiffuseForAxisY3> ; \n\t\tmipfilter = LINEAR; \n\t\tAddressU = WRAP; \n\t\tAddressV = WRAP;\n\t}\n};\n\nsampler TextureNormalMapForAxisXZSampler[3] =\n{\n\tsampler_state\n\t{\n\t\ttexture = <TextureNormalMapForAxisXZ> ; \n\t\tmipfilter = LINEAR; \n\t\tAddressU = WRAP; \n\t\tAddressV = WRAP;\n\t},\n\n\tsampler_state\n\t{\n\t\ttexture = <TextureNormalMapForAxisXZ2> ; \n\t\tmipfilter = LINEAR; \n\t\tAddressU = WRAP; \n\t\tAddressV = WRAP;\n\t},\n\n\tsampler_state\n\t{\n\t\ttexture = <TextureNormalMapForAxisXZ3> ; \n\t\tmipfilter = LINEAR; \n\t\tAddressU = WRAP; \n\t\tAddressV = WRAP;\n\t}\n};\n\nsampler TextureNormalMapForAxisYSampler[3] =\n{ \n\tsampler_state\n\t{\n\t\ttexture = <TextureNormalMapForAxisY> ; \n\t\tmipfilter = LINEAR; \n\t\tAddressU = WRAP; \n\t\tAddressV = WRAP;\n\t},\n\n\tsampler_state\n\t{\n\t\ttexture = <TextureNormalMapForAxisY2> ; \n\t\tmipfilter = LINEAR; \n\t\tAddressU = WRAP; \n\t\tAddressV = WRAP;\n\t},\n\n\tsampler_state\n\t{\n\t\ttexture = <TextureNormalMapForAxisY3> ; \n\t\tmipfilter = LINEAR; \n\t\tAddressU = WRAP; \n\t\tAddressV = WRAP;\n\t}\n};\n\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n//\tCalculate weight for triplaner mapping.\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nfloat3 GetTriplanarWeights(float3 normal)\n{\n\tfloat3 axisWeights;\n\taxisWeights = (abs(normal.xyz) - 0.2) * 7;\n\taxisWeights = pow(axisWeights, 3.0);\t\n\taxisWeights /= (axisWeights.x + axisWeights.y + axisWeights.z).xxx;\t\n\treturn axisWeights;\n}\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n//\tTri-planar texture mapping for render quality low and normal\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nvoid GetTextureForRenderQualityLow(int materialIndex, float2 uvForAxis, out float4 diffuseTexture)\n{\n    diffuseTexture = \n\t\ttex2D(TextureDiffuseForAxisXZSampler[materialIndex], uvForAxis); \n}\n\nvoid GetTextureForRenderQualityNormal(int materialIndex, float2 uvForAxisX, float2 uvForAxisY, float2 uvForAxisZ, float3 triplanarWeights, out float4 diffuseTexture)\n{\n    diffuseTexture = \n\t\ttex2D(TextureDiffuseForAxisXZSampler[materialIndex], uvForAxisX) * triplanarWeights.x + \n\t\ttex2D(TextureDiffuseForAxisYSampler[materialIndex], uvForAxisY) * triplanarWeights.y + \n\t\ttex2D(TextureDiffuseForAxisXZSampler[materialIndex], uvForAxisZ) * triplanarWeights.z; \n}\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n//\tTri-planar texture mapping for render quality high or extreme\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nvoid GetTextureForRenderQualityHighOrExtreme(\n\tint materialIndex, float2 uvForAxisX, float2 uvForAxisY, float2 uvForAxisZ, float3 normal, float3 triplanarWeights, \n\tout float4 diffuseTexture, out float4 normalNew)\n{\n    diffuseTexture = \n\t\ttex2D(TextureDiffuseForAxisXZSampler[materialIndex], uvForAxisX) * triplanarWeights.x + \n\t\ttex2D(TextureDiffuseForAxisYSampler[materialIndex], uvForAxisY) * triplanarWeights.y + \n\t\ttex2D(TextureDiffuseForAxisXZSampler[materialIndex], uvForAxisZ) * triplanarWeights.z; \n\n    ////////////////////////////////////////////////////////////////////////////////////\n    //\tThis is trick like hell. We don't do trasnformation of normal from texture to world space\n    //\tusing tangent space as others do. Because our textures are always on three axis, we can\n    //\textract xyz from texture and just put it into world space. Always with regard to texture axis.\n    //\tSo we don't need to do matrix multiplications.\n    //\tYou can see that we don't need tangent or binormal vectors. Even 'normal' we use only for getting\n    //\tproper orientation.\n    ////////////////////////////////////////////////////////////////////////////////////\n\n    //\tNormal for axis X\n\tfloat4 encodedNormalX = tex2D(TextureNormalMapForAxisXZSampler[materialIndex], uvForAxisX);\n    float3 normalForAxisX = GetNormalVectorFromDDS(encodedNormalX).zyx;\n    normalForAxisX.x *= sign(normal.x);\n    \n    //\tNormal for axis Y\n\tfloat4 encodedNormalY = tex2D(TextureNormalMapForAxisYSampler[materialIndex], uvForAxisY);\n    float3 normalForAxisY = GetNormalVectorFromDDS(encodedNormalY).xzy;\n    normalForAxisY.y *= sign(normal.y);\n    \n    //\tNormal for axis Z\n\tfloat4 encodedNormalZ = tex2D(TextureNormalMapForAxisXZSampler[materialIndex], uvForAxisZ);\n    float3 normalForAxisZ = GetNormalVectorFromDDS(encodedNormalZ).yxz;\n    normalForAxisZ.z *= sign(normal.z);\n    \n    //\tBlend normals using triplanar weights\n    normalNew = float4( \n\t\tnormalForAxisX * triplanarWeights.x + \n\t\tnormalForAxisY * triplanarWeights.y + \n\t\tnormalForAxisZ * triplanarWeights.z, 1.0f);\n\n \n #if 0\n\t//\tWe don't need to normalize because it works even without it - I haven't noticed any problems\n    //normalNew.xyz = normalize(normalNew);\n\n#else\n\n\t//\n\t// NOTE:\n\t//\n\t// It seems, that upper version of voxel surface geometry normal calculation is wrong. At least it completely\n\t// removes low-frequency surface details and substitutes it with tangent space normal swizzled to worldspace\n\t//\n\n\tnormalNew.xyz = normalize(normal + normalNew * 2);\t\n\n#endif\n\n\n\n\t//emissivity\n\t//we read from w component because normals in our DDS are encoded as RGBA\n\tnormalNew.w = \n\t\tencodedNormalX.w * triplanarWeights.x + \n\t\tencodedNormalY.w * triplanarWeights.y + \n\t\tencodedNormalZ.w * triplanarWeights.z;\n} \n\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n//\tTriplanar rendering\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nMyGbufferPixelShaderOutput GetTriplanarPixel(int materialIndex, float3 worldPositionForTextureCoords, float3 triplanarWeights, float3 normal, float viewDistance, float specularIntensity, float specularPower, float perVertexAmbient, uniform int renderQuality)\n{\n\t//\tVertex normal vector\t\n    normal = normalize(normal);\t\n\n\tfloat4 diffuseTextureNear;\n\tfloat4 diffuseTextureFar;\n\tfloat4 normalNear;\n\tfloat4 normalFar;\n\tfloat4 diffuseTexture;\n\n\tfloat baseScale = 1 + 9 * step(1000, viewDistance);\n\n\tfloat SCALE_NEAR = TEXTURE_SCALE_NEAR * baseScale;\n\tfloat SCALE_FAR = TEXTURE_SCALE_FAR * baseScale;\n\n\t//\tVoxel 'texture scale by distance' trick (this is not about LOD at all)\n\tfloat interpolatorForTextureByDistance = saturate((viewDistance - SCALE_NEAR) / (SCALE_FAR - SCALE_NEAR));\n\n\tfloat3 texCoordNear = worldPositionForTextureCoords.xyz / SCALE_NEAR;\n\tfloat3 texCoordFar = worldPositionForTextureCoords.xyz / SCALE_FAR;\n\n\t//\tNear texture\t\t\n\tfloat2 uvForAxisX_Near = texCoordNear.zy;\n\tfloat2 uvForAxisY_Near = texCoordNear.xz;\n\tfloat2 uvForAxisZ_Near = texCoordNear.xy;\n\n\t//\tFar texture\n\tfloat2 uvForAxisX_Far = texCoordFar.zy;\n\tfloat2 uvForAxisY_Far = texCoordFar.xz;\n\tfloat2 uvForAxisZ_Far = texCoordFar.xy;\n\n\tif (renderQuality == RENDER_QUALITY_LOW)\n\t{\n\t\tGetTextureForRenderQualityNormal(materialIndex, uvForAxisX_Near, uvForAxisY_Near, uvForAxisZ_Near, triplanarWeights, diffuseTextureNear);\n\t\tGetTextureForRenderQualityNormal(materialIndex, uvForAxisX_Far, uvForAxisY_Far, uvForAxisZ_Far, triplanarWeights, diffuseTextureFar);\n\t}\n\telse \t//\tThis else will be executed for: RENDER_QUALITY_NORMAL, RENDER_QUALITY_HIGH, RENDER_QUALITY_EXTREME\n\t{\n\t\tGetTextureForRenderQualityHighOrExtreme(materialIndex, uvForAxisX_Near, uvForAxisY_Near, uvForAxisZ_Near, normal, triplanarWeights, diffuseTextureNear, normalNear);\n\t\tGetTextureForRenderQualityHighOrExtreme(materialIndex, uvForAxisX_Far, uvForAxisY_Far, uvForAxisZ_Far, normal, triplanarWeights, diffuseTextureFar, normalFar);\n\t\tnormal = lerp(normalNear, normalFar, interpolatorForTextureByDistance);\n\t\tspecularIntensity = normalNear.w * specularIntensity;\n\t}\n\n\t\t//\tCombine near and far textures\n\tdiffuseTexture = lerp(diffuseTextureNear, diffuseTextureFar, interpolatorForTextureByDistance);\n\t\t\n\tif (renderQuality != RENDER_QUALITY_LOW)\n\t{\n\t\tfloat highAmbientStart = 2000;\n\t\tfloat highAmbientFull = 2500;\n\t\tfloat ambientMultiplier = lerp(1.0f, 1.5f, (viewDistance - highAmbientStart) / (highAmbientFull - highAmbientStart));\n\t\tambientMultiplier = clamp(ambientMultiplier, 1, 1.5f);\n\t\tdiffuseTexture.xyz += EnablePerVertexAmbient * perVertexAmbient * diffuseTexture.xyz * ambientMultiplier;\n\t}\n\t\n\t//\tOutput into MRT\n\tMyGbufferPixelShaderOutput output = GetGbufferPixelShaderOutput(normal, diffuseTexture.xyz, specularIntensity / SPECULAR_INTENSITY_RATIO, specularPower / SPECULAR_POWER_RATIO, viewDistance);\n\toutput.DepthAndEmissivity.a = diffuseTexture.w;\n\treturn output;\n}\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n//\tTriplanar rendering - for forward render (low details)\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nfloat4 GetTriplanarPixelForward(int materialIndex, float3 worldPositionForTextureCoords, float3 triplanarWeights, float3 normal, float viewDistance, float specularIntensity, float specularPower, float perVertexAmbient, uniform int renderQuality)\n{\n\t//\tVertex normal vector\t\n\tnormal = normalize(normal);\n\n\t//\tNear texture\t\t\n\tfloat2 uvForAxisX_Near = worldPositionForTextureCoords.zy / TEXTURE_SCALE_NEAR;\n\tfloat2 uvForAxisY_Near = worldPositionForTextureCoords.xz / TEXTURE_SCALE_NEAR;\n\tfloat2 uvForAxisZ_Near = worldPositionForTextureCoords.xy / TEXTURE_SCALE_NEAR;\n\n\t// Get diffuse\n\tfloat4 diffuseTextureNear;\n\tGetTextureForRenderQualityNormal(materialIndex, uvForAxisX_Near, uvForAxisY_Near, uvForAxisZ_Near, triplanarWeights, diffuseTextureNear);\n\n\t// Add per vertex Ambient\n\tdiffuseTextureNear += EnablePerVertexAmbient * perVertexAmbient * diffuseTextureNear;\n\n\t// Fog\n\tfloat fogBlend = (viewDistance - FogDistanceNear) / (FogDistanceFar - FogDistanceNear);\n\tdiffuseTextureNear.xyz = lerp(diffuseTextureNear.xyz, FogColor, saturate(fogBlend) * FogMultiplier);\n\n\treturn diffuseTextureNear;\n}\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n//\tHere begins single-material rendering part\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nstruct VertexShaderInput\n{\n    float4 PositionAndAmbient : POSITION0;\n    float4 Normal : NORMAL;\n};\n\nstruct VertexShaderOutput\n{\n    float4 Position : POSITION0;\n    float2 ViewDistance : TEXCOORD0; //Store linear depth in x, radial in y\n\tfloat3 WorldPositionForTextureCoords : TEXCOORD1;\n    float3 Normal : TEXCOORD2;\n    float3 TriplanarWeights : TEXCOORD3;\n\tfloat Ambient: TEXCOORD4;\n};\n\nstruct VertexShaderOutput_Forward\n{\n    float4 Position : POSITION0;\n\tfloat4 LightColor : COLOR0;\n    float ViewDistance : TEXCOORD0;\n\tfloat3 WorldPositionForTextureCoords : TEXCOORD1;\n    float3 Normal : TEXCOORD2;\n\tfloat3 WorldPosition : TEXCOORD3;\n\tfloat3 TriplanarWeights : TEXCOORD4;\n\tfloat Ambient: TEXCOORD5;\n};\n\nstruct VertexShaderOutput_Multimaterial\n{\n\tVertexShaderOutput Single;\n\tfloat3 Alpha : TEXCOORD5;\n};\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n//\n//\tMacro for texture quality NORMAL\n//\n//\tI think this Texture[] assignement isn't needed but I rather did it\n\n#define DECLARE_TEXTURES_QUALITY_LOW \\\n    MinFilter[0] = LINEAR; \\\n    MagFilter[0] = LINEAR; \\\n    MinFilter[1] = LINEAR; \\\n    MagFilter[1] = LINEAR; \\\n    MinFilter[2] = LINEAR; \\\n    MagFilter[2] = LINEAR; \\\n    MinFilter[3] = LINEAR; \\\n    MagFilter[3] = LINEAR; \\\n    MinFilter[4] = LINEAR; \\\n    MagFilter[4] = LINEAR; \\\n    MinFilter[5] = LINEAR; \\\n    MagFilter[5] = LINEAR; \\\n\n\n\n#define DECLARE_TEXTURES_QUALITY_NORMAL \\\n    MinFilter[0] = LINEAR; \\\n    MagFilter[0] = LINEAR; \\\n    MinFilter[1] = LINEAR; \\\n    MagFilter[1] = LINEAR; \\\n    MinFilter[2] = LINEAR; \\\n    MagFilter[2] = LINEAR; \\\n    MinFilter[3] = LINEAR; \\\n    MagFilter[3] = LINEAR; \\\n    MinFilter[4] = LINEAR; \\\n    MagFilter[4] = LINEAR; \\\n    MinFilter[5] = LINEAR; \\\n    MagFilter[5] = LINEAR; \\\n    MinFilter[6] = LINEAR; \\\n    MagFilter[6] = LINEAR; \\\n    MinFilter[7] = LINEAR; \\\n    MagFilter[7] = LINEAR; \\\n    MinFilter[8] = LINEAR; \\\n    MagFilter[8] = LINEAR; \\\n    MinFilter[9] = LINEAR; \\\n    MagFilter[9] = LINEAR; \\\n    MinFilter[10] = LINEAR; \\\n    MagFilter[10] = LINEAR; \\\n    MinFilter[11] = LINEAR; \\\n    MagFilter[11] = LINEAR; \\\n  \n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n//\n//\tMacro for texture quality HIGH and EXTREME\n//\n//\tI think this Texture[] assignement isn't needed but I rather did it\n\n#define DECLARE_TEXTURES_QUALITY_HIGH \\\n    MinFilter[0] = LINEAR; \\\n    MagFilter[0] = LINEAR; \\\n    MinFilter[1] = LINEAR; \\\n    MagFilter[1] = LINEAR; \\\n    MinFilter[2] = LINEAR; \\\n    MagFilter[2] = LINEAR; \\\n    MinFilter[3] = LINEAR; \\\n    MagFilter[3] = LINEAR; \\\n    MinFilter[4] = LINEAR; \\\n    MagFilter[4] = LINEAR; \\\n    MinFilter[5] = LINEAR; \\\n    MagFilter[5] = LINEAR; \\\n    MinFilter[6] = LINEAR; \\\n    MagFilter[6] = LINEAR; \\\n    MinFilter[7] = LINEAR; \\\n    MagFilter[7] = LINEAR; \\\n    MinFilter[8] = LINEAR; \\\n    MagFilter[8] = LINEAR; \\\n    MinFilter[9] = LINEAR; \\\n    MagFilter[9] = LINEAR; \\\n    MinFilter[10] = LINEAR; \\\n    MagFilter[10] = LINEAR; \\\n    MinFilter[11] = LINEAR; \\\n    MagFilter[11] = LINEAR; \\\n\tMinFilter[12] = LINEAR; \\\n    MagFilter[12] = LINEAR; \\\n\tMinFilter[13] = LINEAR; \\\n    MagFilter[13] = LINEAR; \\\n\tMinFilter[14] = LINEAR; \\\n    MagFilter[14] = LINEAR; \\\n\tMinFilter[15] = LINEAR; \\\n    MagFilter[15] = LINEAR; \\\n\n\n\t#define DECLARE_TEXTURES_QUALITY_EXTREME \\\n    MinFilter[0] = ANISOTROPIC; \\\n    MagFilter[0] = ANISOTROPIC; \\\n    MaxAnisotropy[0] = 16; \\\n    MinFilter[1] = ANISOTROPIC; \\\n    MagFilter[1] = ANISOTROPIC; \\\n    MaxAnisotropy[1] = 16; \\\n    MinFilter[2] = ANISOTROPIC; \\\n    MagFilter[2] = ANISOTROPIC; \\\n    MaxAnisotropy[2] = 16; \\\n    MinFilter[3] = ANISOTROPIC; \\\n    MagFilter[3] = ANISOTROPIC; \\\n    MaxAnisotropy[3] = 16; \\\n    MinFilter[4] = ANISOTROPIC; \\\n    MagFilter[4] = ANISOTROPIC; \\\n    MaxAnisotropy[4] = 16; \\\n    MinFilter[5] = ANISOTROPIC; \\\n    MagFilter[5] = ANISOTROPIC; \\\n    MaxAnisotropy[5] = 16; \\\n    MinFilter[6] = ANISOTROPIC; \\\n    MagFilter[6] = LINEAR; \\\n    MaxAnisotropy[6] = 16; \\\n    MinFilter[7] = ANISOTROPIC; \\\n    MagFilter[7] = LINEAR; \\\n    MaxAnisotropy[7] = 16; \\\n    MinFilter[8] = ANISOTROPIC; \\\n    MagFilter[8] = ANISOTROPIC; \\\n    MaxAnisotropy[8] = 16; \\\n    MinFilter[9] = ANISOTROPIC; \\\n    MagFilter[9] = ANISOTROPIC; \\\n    MaxAnisotropy[9] = 16; \\\n    MinFilter[10] = ANISOTROPIC; \\\n    MagFilter[10] = ANISOTROPIC; \\\n    MaxAnisotropy[10] = 16; \\\n    MinFilter[11] = ANISOTROPIC; \\\n    MagFilter[11] = LINEAR; \\\n    MaxAnisotropy[11] = 16; \\\n\tMinFilter[12] = ANISOTROPIC; \\\n    MagFilter[12] = ANISOTROPIC; \\\n    MaxAnisotropy[12] = 16; \\\n\tMinFilter[13] = ANISOTROPIC; \\\n    MagFilter[13] = ANISOTROPIC; \\\n    MaxAnisotropy[13] = 16; \\\n\tMinFilter[14] = ANISOTROPIC; \\\n    MagFilter[14] = ANISOTROPIC; \\\n    MaxAnisotropy[14] = 16; \\\n\tMinFilter[15] = ANISOTROPIC; \\\n    MagFilter[15] = ANISOTROPIC; \\\n    MaxAnisotropy[15] = 16; \\\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\n"
  },
  {
    "path": "Effects/Voxels/MyEffectVoxelsDebris.fx",
    "content": "#include \"../Voxels/MyEffectVoxelsBase.fxh\"\n\n//\tThis shader renders a model with same shader as voxels (triplanar mapping), using diffuse & specular & normal map textures\n//\tBut we use one texture-set for XZ plane, and the other for Y plan\n\nfloat4x4\tWorldMatrix;\nfloat4x4\tViewWorldScaleMatrix;\nfloat4x4\tProjectionMatrix;\n\n//  This applies only for explosion debris, because we want to add some randomization to 'world position to texture coord' transformation\nfloat\t\tTextureCoordRandomPositionOffset;\nfloat\t\tTextureCoordScale;\n\n//\tAdd random color overlay on explosion debris diffuse texture output\nfloat\t\tDiffuseTextureColorMultiplier;\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nMyGbufferPixelShaderOutput PixelShaderFunction(VertexShaderOutput input, uniform int renderQuality)\n{\n\tMyGbufferPixelShaderOutput output = GetTriplanarPixel(0, input.WorldPositionForTextureCoords, input.TriplanarWeights, input.Normal, input.ViewDistance.x, SpecularIntensity, SpecularPower, input.Ambient, renderQuality);\n\toutput.DiffuseAndSpecIntensity.rgb *= DiffuseTextureColorMultiplier;\n\toutput.DepthAndEmissivity.a = PackGBufferEmissivityReflection(1 - output.DepthAndEmissivity.w, 0.0f); //inverted emissivity, zero reflection\n\treturn output;\n}\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nVertexShaderOutput VertexShaderFunction(VertexShaderInput input)\n{\n    VertexShaderOutput output;\n\n\tinput.PositionAndAmbient = UnpackPositionAndScale(input.PositionAndAmbient);\n\tfloat4 Position = float4(input.PositionAndAmbient.xyz, 1);\n\tfloat Ambient = input.PositionAndAmbient.w;\n\tinput.Normal = UnpackNormal(input.Normal);\n\n\t//\tHere we get texture coord based on object-space coordinates of model. The correct way would be to do this\n\t//\tafter ScaleMatrix multiplication, but this version is faster (one less mul in vertex shader) and it looks\n\t//\tfine, I am going with this one.\n\toutput.WorldPositionForTextureCoords = (Position + TextureCoordRandomPositionOffset) * TextureCoordScale;\n\tfloat4 viewPosition = mul(Position, ViewWorldScaleMatrix);\n\n\t//\tWe need distance between camera and the vertex. We don't want to use just Z, or Z/W, we just need that distance.\t\n\toutput.ViewDistance.x = -viewPosition.z;\n\toutput.ViewDistance.y = length(viewPosition);\n\t\n    output.Position = mul(viewPosition, ProjectionMatrix);        \t\n    output.Normal = normalize(mul(input.Normal.xyz, (float3x3)WorldMatrix));\n    output.TriplanarWeights = GetTriplanarWeights(output.Normal);\n\toutput.Ambient = Ambient;\n    return output;\n}\n\nVertexShaderOutput VertexShaderFunction_Forward(VertexShaderInput input)\n{\n\tVertexShaderOutput output;\n\n\tinput.PositionAndAmbient = UnpackPositionAndScale(input.PositionAndAmbient);\n\tfloat4 Position = float4(input.PositionAndAmbient.xyz, 1);\n\tfloat Ambient = input.PositionAndAmbient.w;\n\tinput.Normal = UnpackNormal(input.Normal);\n\n\t//\tHere we get texture coord based on object-space coordinates of model. The correct way would be to do this\n\t//\tafter ScaleMatrix multiplication, but this version is faster (one less mul in vertex shader) and it looks\n\t//\tfine, I am going with this one.\n\toutput.WorldPositionForTextureCoords = (Position + TextureCoordRandomPositionOffset) * TextureCoordScale;\n\tfloat4 viewPosition = mul(Position, ViewWorldScaleMatrix);\n\n\t//\tWe need distance between camera and the vertex. We don't want to use just Z, or Z/W, we just need that distance.\t\n\toutput.ViewDistance.x = -viewPosition.z;\n\toutput.ViewDistance.y = length(viewPosition);\n\n\n\toutput.Position = mul(viewPosition, ProjectionMatrix);        \t\n\toutput.Normal = normalize(mul(input.Normal.xyz, (float3x3)WorldMatrix));\n\toutput.TriplanarWeights = GetTriplanarWeights(output.Normal);\n\toutput.Ambient = Ambient;\n\n\tfloat4 worldPosition = mul(Position, WorldMatrix);\n\n\t// Lighting\n\t//float lightIntensity = ComputeForwardLighting(worldPosition.xyz, output.Normal);\n\n\tfloat4 lightColor = 0;//ComputeForwardLighting(worldPosition, input.Normal);\n\tfloat3 ambient = 0.15f * float3(1,1,1);\n\toutput.Normal = lightColor.xyz + ambient;\n\n\t//output.Ambient = 0.1f + saturate(0.25 * output.Ambient) + lightIntensity;\n\n\treturn output;\n}\n\nfloat4 PixelShaderFunction_Forward(VertexShaderOutput input, uniform int renderQuality) : COLOR0\n{\n\tMyGbufferPixelShaderOutput output = GetTriplanarPixel(0, input.WorldPositionForTextureCoords, input.TriplanarWeights, input.Normal, input.ViewDistance.x, SpecularIntensity, SpecularPower, input.Ambient, renderQuality);\n\toutput.DiffuseAndSpecIntensity.rgb *= DiffuseTextureColorMultiplier;\n\toutput.DepthAndEmissivity.a = PackGBufferEmissivityReflection(1 - output.DepthAndEmissivity.w, 0.0f); //inverted emissivity, zero reflection\n\n\toutput.NormalAndSpecPower = float4(1,0,0,1);\n\treturn float4(output.DiffuseAndSpecIntensity.rgb * input.Normal /*Color is in Normal*/, 1);\n}\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\ntechnique Technique_RenderQualityLow_Forward\n{\n\tpass Pass1\n\t{\n\t\tDECLARE_TEXTURES_QUALITY_LOW\n\n\t\tVertexShader = compile vs_3_0 VertexShaderFunction_Forward();\n\t\tPixelShader = compile ps_3_0 PixelShaderFunction_Forward(RENDER_QUALITY_LOW);\n\t}\n}\n\ntechnique Technique_RenderQualityLow\n{\n    pass Pass1\n    {\n        DECLARE_TEXTURES_QUALITY_LOW\n\n        VertexShader = compile vs_3_0 VertexShaderFunction();\n        PixelShader = compile ps_3_0 PixelShaderFunction(RENDER_QUALITY_LOW);\n    }\n}\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\ntechnique Technique_RenderQualityNormal\n{\n    pass Pass1\n    {\n        DECLARE_TEXTURES_QUALITY_NORMAL\n\n        VertexShader = compile vs_3_0 VertexShaderFunction();\n        PixelShader = compile ps_3_0 PixelShaderFunction(RENDER_QUALITY_NORMAL);\n    }\n}\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\ntechnique Technique_RenderQualityHigh\n{\n    pass Pass1\n    {\n        DECLARE_TEXTURES_QUALITY_HIGH\n\n        VertexShader = compile vs_3_0 VertexShaderFunction();\n        PixelShader = compile ps_3_0 PixelShaderFunction(RENDER_QUALITY_HIGH);\n    }\n}\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\ntechnique Technique_RenderQualityExtreme\n{\n    pass Pass1\n    {\t\t\n        DECLARE_TEXTURES_QUALITY_EXTREME\n        \n        VertexShader = compile vs_3_0 VertexShaderFunction();\n        PixelShader = compile ps_3_0 PixelShaderFunction(RENDER_QUALITY_EXTREME);\n    }\n}\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////"
  },
  {
    "path": "Effects/Voxels/MyEffectVoxelsStaticAsteroid.fx",
    "content": "#include \"MyEffectVoxelsBase.fxh\"\n#include \"../MyPerlinNoise.fxh\"\n\nfloat4x4\tViewMatrix;\nfloat4x4\tWorldMatrix;\nfloat4x4\tProjectionMatrix;\nfloat3\t    DiffuseColor;\nfloat3\t    Highlight = 0;\n\nfloat3\t    FieldStart;\nfloat3\t    FieldDir;\n\nfloat EmissivityPower1;\nfloat Time;\n\nstruct VertexShaderInputInstance\n{\n\tfloat4 worldMatrixRow0 : BLENDWEIGHT0;\n \tfloat4 worldMatrixRow1 : BLENDWEIGHT1;\n \tfloat4 worldMatrixRow2 : BLENDWEIGHT2;\n \tfloat4 worldMatrixRow3 : BLENDWEIGHT3;\n\tfloat4 diffuse : BLENDWEIGHT4;\n\tfloat4 SpecularIntensity_SpecularPower_Emisivity_HighlightFlag : BLENDWEIGHT5;\n};\n\nstruct VertexShaderOutputInstance\n{\n\tfloat4 Diffuse : BLENDWEIGHT0;\n\tfloat4 SpecularIntensity_SpecularPower_Emisivity_HighlightFlag : BLENDWEIGHT1;\n};\n\nstruct VertexShaderOutput_Instanced\n{\n\tVertexShaderOutput BaseOutput;\n\tVertexShaderOutputInstance InstanceOutput;\n};\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nMyGbufferPixelShaderOutput PixelShaderFunction_Base(VertexShaderOutput input, float3 diffuse, float3 highlight, float3 si_sp_e, uniform int renderQuality)\n{\n\tMyGbufferPixelShaderOutput output = GetTriplanarPixel(0, input.WorldPositionForTextureCoords, input.TriplanarWeights, input.Normal, input.ViewDistance.x, si_sp_e.x, si_sp_e.y, input.Ambient, renderQuality);\n\toutput.DiffuseAndSpecIntensity.rgb = output.DiffuseAndSpecIntensity.rgb * diffuse + highlight;\n\toutput.DepthAndEmissivity.a = PackGBufferEmissivityReflection((1 - output.DepthAndEmissivity.a) - length(highlight), 0.0f); //Shader wont compile if I put there only length(highlight)...\n\treturn output;\n}\n\n\nMyGbufferPixelShaderOutput PixelShaderFunction_Multimaterial(VertexShaderOutput input, uniform int renderQuality)\n{/*\n\tif (input.ViewDistance < 200)\n\t{\n\t\tdiscard;\n\t\treturn (MyGbufferPixelShaderOutput)0;\n\t}\n*/\n\tMyGbufferPixelShaderOutput output0 = GetTriplanarPixel(0, input.WorldPositionForTextureCoords, input.TriplanarWeights, input.Normal, input.ViewDistance.x, SpecularIntensity, SpecularPower, input.Ambient, renderQuality);\n\tMyGbufferPixelShaderOutput output1 = GetTriplanarPixel(1, input.WorldPositionForTextureCoords, input.TriplanarWeights, input.Normal, input.ViewDistance.x, SpecularIntensity2, SpecularPower2, input.Ambient, renderQuality);\n\n\n//\tfloat noise = fBm(input.Normal, 32, 16, 0.01) * 0.5f + 0.5f;\n\t//float noise = noiseFog(input.WorldPositionForTextureCoords, 0, 0.001f, 50.0f, 0);\n//\tfloat noise = noiseFog(input.WorldPositionForTextureCoords, 0, 0.0007f, 20.4f, Time * 0.0001f);\n\tfloat noise = turbulence(input.WorldPositionForTextureCoords * 0.007f, 4, Time * 0.0001f);\n\n\tfloat field = clamp(dot(normalize(input.WorldPositionForTextureCoords - FieldStart), FieldDir), 0, 1);\n\n\tfloat3 color0 = output0.DiffuseAndSpecIntensity.rgb * DiffuseColor + Highlight;\n\tfloat3 color1 = output1.DiffuseAndSpecIntensity.rgb * DiffuseColor + Highlight;\n\n\tfloat3 color = lerp(color0, color1, field);\n\toutput1.DepthAndEmissivity.a = pow(abs(output1.DepthAndEmissivity.a), EmissivityPower1);\n\tfloat emissivity = lerp(output0.DepthAndEmissivity.a, output1.DepthAndEmissivity.a-0.5f, field* noise);\n\n\tMyGbufferPixelShaderOutput output = output0;\n\toutput.DiffuseAndSpecIntensity.rgb = color;\n\toutput.DepthAndEmissivity.a = PackGBufferEmissivityReflection((1- emissivity)  -length(Highlight), 0.0f); //Shader wont compile if I put there only length(highlight)...\n\treturn output;\n}\n\nMyGbufferPixelShaderOutput PixelShaderFunction(VertexShaderOutput input, uniform int renderQuality)\n{\n\t//Cut pixels from LOD1 which are before LodNear\n\tif (IsPixelCut(input.ViewDistance.y))\n\t{\n\t\tdiscard;\n\t\treturn (MyGbufferPixelShaderOutput)0;\n\t\t//return PixelShaderFunction_Base(input, float4(1,0,0,1), Highlight, float3(SpecularIntensity, SpecularPower, 0), renderQuality);\n\t}\n\telse\t\t\t\t\t\n\t\treturn PixelShaderFunction_Base(input, DiffuseColor, Highlight, float3(SpecularIntensity, SpecularPower, 0), renderQuality);\n}\n\nMyGbufferPixelShaderOutput PixelShaderFunction_Instanced(VertexShaderOutput_Instanced input, uniform int renderQuality)\n{\n\tfloat3 si_sp_e = input.InstanceOutput.SpecularIntensity_SpecularPower_Emisivity_HighlightFlag.xyz;\n\tfloat3 highlight = input.InstanceOutput.SpecularIntensity_SpecularPower_Emisivity_HighlightFlag.w * Highlight;\n\treturn PixelShaderFunction_Base(input.BaseOutput, input.InstanceOutput.Diffuse, highlight, si_sp_e, renderQuality);\n}\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nVertexShaderOutputInstance VertexShaderInstance_Copy(VertexShaderInputInstance instanceData)\n{\n\tVertexShaderOutputInstance output;\n\toutput.Diffuse = instanceData.diffuse;\n\toutput.SpecularIntensity_SpecularPower_Emisivity_HighlightFlag = instanceData.SpecularIntensity_SpecularPower_Emisivity_HighlightFlag;\n\treturn output;\n}\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nVertexShaderOutput VertexShaderFunction_Base(VertexShaderInput input, float4x4 world)\n{\n\tVertexShaderOutput output;\n\n\tfloat4 Position = UnpackPositionAndScale(input.PositionAndAmbient);\n\tfloat Ambient = 0;\n\tinput.Normal = UnpackNormal(input.Normal);\n\n\toutput.WorldPositionForTextureCoords = mul(Position.xyz, (float3x3)world);\n\tfloat4 viewPosition = mul(Position, world);\n\tviewPosition = mul(viewPosition, ViewMatrix);\n\n\t//\tWe need distance between camera and the vertex. We don't want to use just Z, or Z/W, we just need that distance.\t\n\toutput.ViewDistance.x = -viewPosition.z;\n\toutput.ViewDistance.y = length(viewPosition);\n\t\n\t\n    output.Position = mul(viewPosition, ProjectionMatrix);        \t\n\t//output.ViewDistance = output.Position.z;\n\n    output.Normal = mul(input.Normal.xyz, (float3x3)world);\n    output.TriplanarWeights = GetTriplanarWeights(output.Normal);\n\toutput.Ambient = Ambient;\n    return output;\n}\n\nVertexShaderOutput VertexShaderFunction(VertexShaderInput input)\n{\n    return VertexShaderFunction_Base(input, WorldMatrix);\n}\n\nVertexShaderOutput_Instanced VertexShaderFunction_Instanced(VertexShaderInput input, VertexShaderInputInstance instanceData)\n{\n\tfloat4x4 instanceWorldMatrix = {instanceData.worldMatrixRow0,\n\t\t\t\t\t\t\t\t\tinstanceData.worldMatrixRow1,\n\t\t\t\t\t\t\t\t\tinstanceData.worldMatrixRow2,\n\t\t\t\t\t\t\t\t\tinstanceData.worldMatrixRow3};\n\n\tVertexShaderOutput_Instanced output;\n    output.BaseOutput = VertexShaderFunction_Base(input, instanceWorldMatrix);\n\toutput.InstanceOutput = VertexShaderInstance_Copy(instanceData);\n\treturn output;\n}\n\n\n\nfloat4 PixelShaderFunction_Forward(VertexShaderOutput input, uniform int renderQuality) : COLOR0\n{\n\tMyGbufferPixelShaderOutput output = GetTriplanarPixel(0, input.WorldPositionForTextureCoords, input.TriplanarWeights, input.Normal, input.ViewDistance, SpecularIntensity, SpecularPower, input.Ambient, renderQuality);\n\treturn float4(output.DiffuseAndSpecIntensity.rgb * input.Normal * DiffuseColor + Highlight, 1);\n}\n\nVertexShaderOutput VertexShaderFunction_Forward(VertexShaderInput input)\n{\n\tVertexShaderOutput output;\n\n\tfloat4 Position = UnpackPositionAndScale(input.PositionAndAmbient);\n\tfloat Ambient = 0;\n\tinput.Normal = UnpackNormal(input.Normal);\n\n\toutput.WorldPositionForTextureCoords = mul(Position.xyz, (float3x3)WorldMatrix);\n\tfloat4 worldPosition = mul(Position, WorldMatrix);\n\tfloat4 viewPosition = mul(worldPosition, ViewMatrix);\n\n\t//\tWe need distance between camera and the vertex. We don't want to use just Z, or Z/W, we just need that distance.\t\n\toutput.ViewDistance.x = -viewPosition.z;\n\toutput.ViewDistance.y = length(viewPosition);\n\n\toutput.Position = mul(viewPosition, ProjectionMatrix);        \t\n\t//output.ViewDistance = output.Position.z;\n\n\toutput.Normal = mul(input.Normal.xyz, (float3x3)WorldMatrix);\n\toutput.TriplanarWeights = GetTriplanarWeights(output.Normal);\n// \toutput.Ambient = Ambient;\n// \treturn output;\n\n\t// Forward lighting\n\t//float lightIntensity = ComputeForwardLighting(worldPosition, input.Normal);\n\t//output.Ambient = 0.1f /*+ saturate(0.3f * output.Ambient)*/ + 0.7f * saturate(abs(lightIntensity));\n\n\tfloat4 lightColor = 0;//ComputeForwardLighting(worldPosition, input.Normal);\n\tfloat ambient = 0.15f * float3(1,1,1);\n\toutput.Normal = lightColor.xyz + ambient;\n\toutput.Ambient = 0;\n\n\treturn output;\n}\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\ntechnique Technique_RenderQualityLow_Forward\n{\n\tpass Pass1\n\t{\n\t\tDECLARE_TEXTURES_QUALITY_LOW\n\n\t\tVertexShader = compile vs_3_0 VertexShaderFunction_Forward();\n\t\tPixelShader = compile ps_3_0 PixelShaderFunction_Forward(RENDER_QUALITY_LOW);\n\t}\n}\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\ntechnique Technique_RenderQualityLow\n{\n    pass Pass1\n    {\n        DECLARE_TEXTURES_QUALITY_LOW\n\n        VertexShader = compile vs_3_0 VertexShaderFunction();\n        PixelShader = compile ps_3_0 PixelShaderFunction(RENDER_QUALITY_LOW);\n    }\n}\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\ntechnique Technique_RenderQualityNormal\n{\n    pass Pass1\n    {\n        DECLARE_TEXTURES_QUALITY_NORMAL\n\n        VertexShader = compile vs_3_0 VertexShaderFunction();\n        PixelShader = compile ps_3_0 PixelShaderFunction(RENDER_QUALITY_NORMAL);\n    }\n}\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\ntechnique Technique_RenderQualityHigh\n{\n    pass Pass1\n    {\n        DECLARE_TEXTURES_QUALITY_HIGH\n\n        VertexShader = compile vs_3_0 VertexShaderFunction();\n        PixelShader = compile ps_3_0 PixelShaderFunction(RENDER_QUALITY_HIGH);\n    }\n}\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\ntechnique Technique_RenderQualityExtreme\n{\n    pass Pass1\n    {\t\t\n        DECLARE_TEXTURES_QUALITY_EXTREME\n        \n        VertexShader = compile vs_3_0 VertexShaderFunction();\n        PixelShader = compile ps_3_0 PixelShaderFunction(RENDER_QUALITY_EXTREME);\n    }\n}\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\n\n\ntechnique Technique_RenderQualityLow_Instanced\n{\n    pass Pass1\n    {\n        DECLARE_TEXTURES_QUALITY_LOW\n\n        VertexShader = compile vs_3_0 VertexShaderFunction_Instanced();\n        PixelShader = compile ps_3_0 PixelShaderFunction_Instanced(RENDER_QUALITY_LOW);\n    }\n}\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\ntechnique Technique_RenderQualityNormal_Instanced\n{\n    pass Pass1\n    {\n        DECLARE_TEXTURES_QUALITY_NORMAL\n\n        VertexShader = compile vs_3_0 VertexShaderFunction_Instanced();\n        PixelShader = compile ps_3_0 PixelShaderFunction_Instanced(RENDER_QUALITY_NORMAL);\n    }\n}\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\ntechnique Technique_RenderQualityHigh_Instanced\n{\n    pass Pass1\n    {\n        DECLARE_TEXTURES_QUALITY_HIGH\n\n        VertexShader = compile vs_3_0 VertexShaderFunction_Instanced();\n        PixelShader = compile ps_3_0 PixelShaderFunction_Instanced(RENDER_QUALITY_HIGH);\n    }\n}\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\ntechnique Technique_RenderQualityExtreme_Instanced\n{\n    pass Pass1\n    {\t\t\n        DECLARE_TEXTURES_QUALITY_EXTREME\n        \n        VertexShader = compile vs_3_0 VertexShaderFunction_Instanced();\n        PixelShader = compile ps_3_0 PixelShaderFunction_Instanced(RENDER_QUALITY_EXTREME);\n    }\n}\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\ntechnique Technique_RenderQualityNormal_Multimaterial\n{\n    pass Pass1\n    {\n        DECLARE_TEXTURES_QUALITY_NORMAL\n\n        VertexShader = compile vs_3_0 VertexShaderFunction();\n        PixelShader = compile ps_3_0 PixelShaderFunction_Multimaterial(RENDER_QUALITY_NORMAL);\n    }\n}\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\ntechnique Technique_RenderQualityHigh_Multimaterial\n{\n    pass Pass1\n    {\n        DECLARE_TEXTURES_QUALITY_HIGH\n\n        VertexShader = compile vs_3_0 VertexShaderFunction();\n        PixelShader = compile ps_3_0 PixelShaderFunction_Multimaterial(RENDER_QUALITY_HIGH);\n    }\n}\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\ntechnique Technique_RenderQualityExtreme_Multimaterial\n{\n    pass Pass1\n    {\t\t\n        DECLARE_TEXTURES_QUALITY_EXTREME\n        \n        VertexShader = compile vs_3_0 VertexShaderFunction();\n        PixelShader = compile ps_3_0 PixelShaderFunction_Multimaterial(RENDER_QUALITY_EXTREME);\n    }\n}\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////"
  },
  {
    "path": "License.txt",
    "content": "=======================================================\nMiner Wars 2081 Source Code Release - March 8, 2013\n=======================================================\n\nVRAGE, Miner Wars™, Miner Wars 2081™, Miner Wars MMO™, Miner Wars Arena™ are trademarks of Keen Software House a. s. \nCopyright © 2008-2013 Keen Software House a. s. \n\nThis source code and art assets must not to be mistaken for free software, an open source in a free-software \nactivist understanding, copy-left or public domain software. All source code and art assets remain copyrighted \nand licensed by Keen Software House a. s. and you are allowed to use them (modify, tweak, make a derivative work, \ndistribute, etc.) only under following conditions.\n\nYou are not allowed to distribute original art assets (textures, models, fonts, etc. stored in Content folder of \nMiner Wars 2081 folder). The only exception is sounds and music, which can be distributed if your mod requires it \n(this is because our XACT audio project requires all sound and music files when building and without our original \nfiles you won’t be able to make audio modifications).\n\nThe source code, modifications or derivative works can be distributed only if they are intended to be used as a \nmod for Miner Wars 2081, and only if valid customers would be able to use them. You are not allowed to bypass \nthis restriction and create a standalone application or use our code in your projects.\n\nIn other words, everyone who wants to develop and/or use mods based on this source code is required to own \nvalid Steam version of Miner Wars 2081. You are not allowed to use this source code in an application other \nthan Miner Wars 2081.\n\nThis source release does not contain any game data (except audio). The game data is still covered by the original\nlicense and must be obeyed as usual. \nMiner Wars 2081 is available from the Steam store at http://store.steampowered.com/app/223430/\n\nYou are allowed to share the source files with other developers (crediting us when logical/reasonable), \ndownloading and compiling the game locally, modifying and tweaking the game locally, and even publicly forking, \nmodifying, and tweaking the game source on GitHub.\nThe origin of this software must not be misrepresented; you must not claim that you wrote the original software. \n\nAltered source versions must be plainly marked as such, and must not be misrepresented as being the original software. \nThis notice may not be removed or altered from any source distribution. Commercial usage is allowed only after you\nobtain an agreement from us (Keen Software House a.s.). Send us an email: info@keenswh.com\n\nThat's it! No more rules. If the above wasn't clear, here's a summary: use this source code only for developing \nmods for Miner Wars 2081. Mod is a DLL that's launched by valid and purchased Miner Wars 2081 (distributed by Steam).\n\nWe reserve the right to change this license at any time with or without notice, with immediate and/or retroactive \neffect. We believe that what we ask is reasonable, so please don't try to bypass it. Miner Wars 2081 still pays our \nmonthly bills and without this income we wouldn't be able to finish our next project. We're trying to be open and \nhonest, and we hope people treat us the same way back. Basically, don't be ridiculous and we won't. \n\nThis software is provided 'as-is', without any express or implied warranty. In no event will the authors be held \nliable for any damages arising from the use of this software.\n\nDon’t be afraid to experiment with the source code. If you break something, you can always revert by downloading it \nagain. \n\nIf there's anything legal you're wondering about that isn't answered from this page, don't do it and ask us about it. \nIf there's anything you don't understand or you consider confusing, please email us your suggestions: info@keenswh.com\n\nThank you and have fun!\n\nKeen Software House\nwww.keenswh.com \nwww.minerwars.com\n\n===\n\nFXAA - Copyright (c) 2010 NVIDIA Corporation. All rights reserved.\nLidgren networking library - Copyright (c) 2010 Michael Lidgren\nStringBuilderExt - Copyright (c) Gavin Pugh 2010 - Released under the zlib license\nSharpDX - Copyright (c) 2010-2012 SharpDX - Alexandre Mutel\nParallel Tasks - Microsoft Public License (Ms-PL), http://paralleltasks.codeplex.com/\nPerlin's Improved Noise - http://mrl.nyu.edu/~perlin/noise/, http://mrl.nyu.edu/~perlin/paper445.pdf, sgg 6/26/04\nTrace Tool - Common Public License Version 1.0 (CPL), http://www.codeproject.com/Articles/5498/TraceTool-12-4-The-Swiss-Army-Knife-of-Trace\nGImpact - Copyright  (c) 2006 , Francisco León.\n"
  },
  {
    "path": "License_MicrosoftPublicLicense.txt",
    "content": "This license is for \"Parallel Tasks\" library.\n\nMicrosoft Public License (Ms-PL)\n\nThis license governs use of the accompanying software. If you use the software, you accept this license. If you do not accept the license, do not use the software.\n\n1. Definitions\n\nThe terms \"reproduce,\" \"reproduction,\" \"derivative works,\" and \"distribution\" have the same meaning here as under U.S. copyright law.\n\nA \"contribution\" is the original software, or any additions or changes to the software.\n\nA \"contributor\" is any person that distributes its contribution under this license.\n\n\"Licensed patents\" are a contributor's patent claims that read directly on its contribution.\n\n2. Grant of Rights\n\n(A) Copyright Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free copyright license to reproduce its contribution, prepare derivative works of its contribution, and distribute its contribution or any derivative works that you create.\n\n(B) Patent Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free license under its licensed patents to make, have made, use, sell, offer for sale, import, and/or otherwise dispose of its contribution in the software or derivative works of the contribution in the software.\n\n3. Conditions and Limitations\n\n(A) No Trademark License- This license does not grant you rights to use any contributors' name, logo, or trademarks.\n\n(B) If you bring a patent claim against any contributor over patents that you claim are infringed by the software, your patent license from such contributor to the software ends automatically.\n\n(C) If you distribute any portion of the software, you must retain all copyright, patent, trademark, and attribution notices that are present in the software.\n\n(D) If you distribute any portion of the software in source code form, you may do so only under this license by including a complete copy of this license with your distribution. If you distribute any portion of the software in compiled or object code form, you may only do so under a license that complies with this license.\n\n(E) The software is licensed \"as-is.\" You bear the risk of using it. The contributors give no express warranties, guarantees or conditions. You may have additional consumer rights under your local laws which this license cannot change. To the extent permitted under your local laws, the contributors exclude the implied warranties of merchantability, fitness for a particular purpose and non-infringement.\n"
  },
  {
    "path": "MinerWars2081.sln",
    "content": "﻿\nMicrosoft Visual Studio Solution File, Format Version 11.00\n# Visual Studio 2010\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"MinerWars.GameLib\", \"Sources\\MinerWars.GameLib\\MinerWars.GameLib.csproj\", \"{F2AA32D9-F560-4DEF-BBF2-3DCCF4B17320}\"\nEndProject\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"MinerWarsCommonLIB\", \"Sources\\CommonLIB\\MinerWarsCommonLIB.csproj\", \"{2C96F0AB-7962-4B73-A075-B0E0B09F6195}\"\nEndProject\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"Library\", \"Sources\\Library\\Library.csproj\", \"{26FE022E-42AB-40BE-BA9D-97CBE34E7D99}\"\nEndProject\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"MinerWarsMath\", \"Sources\\MinerWarsMath\\MinerWarsMath.csproj\", \"{40CE67D5-C89F-4A56-AE52-85DB1BEA07FE}\"\nEndProject\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"Library.Trace\", \"Sources\\Library.Trace\\Library.Trace.csproj\", \"{8E36615C-ACDA-4002-BF65-8032577E754C}\"\nEndProject\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"MinerWarsPluginAPI\", \"Sources\\MinerWarsPluginAPI\\MinerWarsPluginAPI.csproj\", \"{5609DC59-63E9-4262-90BB-4E31329244B1}\"\nEndProject\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"ParallelTasks\", \"Sources\\ParallelTasks\\ParallelTasks.csproj\", \"{D0B69D3D-70AD-4C7C-BEFB-AFF902AB9BD2}\"\nEndProject\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"MinerWars.GameServices\", \"Sources\\MinerWars.GameServices\\MinerWars.GameServices.csproj\", \"{7B22B556-B0CD-4EA0-A638-1F33975C7764}\"\nEndProject\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"MinerWarsExpressLauncher\", \"Sources\\MinerWarsExpressLauncher\\MinerWarsExpressLauncher.csproj\", \"{0565D1C3-0F16-41AE-8561-44FF4E0494B4}\"\nEndProject\nGlobal\n\tGlobalSection(SolutionConfigurationPlatforms) = preSolution\n\t\tDebug|x86 = Debug|x86\n\t\tRelease|x86 = Release|x86\n\tEndGlobalSection\n\tGlobalSection(ProjectConfigurationPlatforms) = postSolution\n\t\t{F2AA32D9-F560-4DEF-BBF2-3DCCF4B17320}.Debug|x86.ActiveCfg = Debug|x86\n\t\t{F2AA32D9-F560-4DEF-BBF2-3DCCF4B17320}.Debug|x86.Build.0 = Debug|x86\n\t\t{F2AA32D9-F560-4DEF-BBF2-3DCCF4B17320}.Release|x86.ActiveCfg = Release|x86\n\t\t{F2AA32D9-F560-4DEF-BBF2-3DCCF4B17320}.Release|x86.Build.0 = Release|x86\n\t\t{2C96F0AB-7962-4B73-A075-B0E0B09F6195}.Debug|x86.ActiveCfg = Debug|x86\n\t\t{2C96F0AB-7962-4B73-A075-B0E0B09F6195}.Debug|x86.Build.0 = Debug|x86\n\t\t{2C96F0AB-7962-4B73-A075-B0E0B09F6195}.Release|x86.ActiveCfg = Release|x86\n\t\t{2C96F0AB-7962-4B73-A075-B0E0B09F6195}.Release|x86.Build.0 = Release|x86\n\t\t{26FE022E-42AB-40BE-BA9D-97CBE34E7D99}.Debug|x86.ActiveCfg = Debug|x86\n\t\t{26FE022E-42AB-40BE-BA9D-97CBE34E7D99}.Debug|x86.Build.0 = Debug|x86\n\t\t{26FE022E-42AB-40BE-BA9D-97CBE34E7D99}.Release|x86.ActiveCfg = Release|x86\n\t\t{26FE022E-42AB-40BE-BA9D-97CBE34E7D99}.Release|x86.Build.0 = Release|x86\n\t\t{40CE67D5-C89F-4A56-AE52-85DB1BEA07FE}.Debug|x86.ActiveCfg = Debug|x86\n\t\t{40CE67D5-C89F-4A56-AE52-85DB1BEA07FE}.Debug|x86.Build.0 = Debug|x86\n\t\t{40CE67D5-C89F-4A56-AE52-85DB1BEA07FE}.Release|x86.ActiveCfg = Release|x86\n\t\t{40CE67D5-C89F-4A56-AE52-85DB1BEA07FE}.Release|x86.Build.0 = Release|x86\n\t\t{8E36615C-ACDA-4002-BF65-8032577E754C}.Debug|x86.ActiveCfg = Debug|x86\n\t\t{8E36615C-ACDA-4002-BF65-8032577E754C}.Debug|x86.Build.0 = Debug|x86\n\t\t{8E36615C-ACDA-4002-BF65-8032577E754C}.Release|x86.ActiveCfg = Release|x86\n\t\t{8E36615C-ACDA-4002-BF65-8032577E754C}.Release|x86.Build.0 = Release|x86\n\t\t{5609DC59-63E9-4262-90BB-4E31329244B1}.Debug|x86.ActiveCfg = Debug|x86\n\t\t{5609DC59-63E9-4262-90BB-4E31329244B1}.Debug|x86.Build.0 = Debug|x86\n\t\t{5609DC59-63E9-4262-90BB-4E31329244B1}.Release|x86.ActiveCfg = Release|x86\n\t\t{5609DC59-63E9-4262-90BB-4E31329244B1}.Release|x86.Build.0 = Release|x86\n\t\t{D0B69D3D-70AD-4C7C-BEFB-AFF902AB9BD2}.Debug|x86.ActiveCfg = Debug|x86\n\t\t{D0B69D3D-70AD-4C7C-BEFB-AFF902AB9BD2}.Debug|x86.Build.0 = Debug|x86\n\t\t{D0B69D3D-70AD-4C7C-BEFB-AFF902AB9BD2}.Release|x86.ActiveCfg = Release|x86\n\t\t{D0B69D3D-70AD-4C7C-BEFB-AFF902AB9BD2}.Release|x86.Build.0 = Release|x86\n\t\t{7B22B556-B0CD-4EA0-A638-1F33975C7764}.Debug|x86.ActiveCfg = Debug|x86\n\t\t{7B22B556-B0CD-4EA0-A638-1F33975C7764}.Debug|x86.Build.0 = Debug|x86\n\t\t{7B22B556-B0CD-4EA0-A638-1F33975C7764}.Release|x86.ActiveCfg = Release|x86\n\t\t{7B22B556-B0CD-4EA0-A638-1F33975C7764}.Release|x86.Build.0 = Release|x86\n\t\t{0565D1C3-0F16-41AE-8561-44FF4E0494B4}.Debug|x86.ActiveCfg = Debug|x86\n\t\t{0565D1C3-0F16-41AE-8561-44FF4E0494B4}.Debug|x86.Build.0 = Debug|x86\n\t\t{0565D1C3-0F16-41AE-8561-44FF4E0494B4}.Release|x86.ActiveCfg = Release|x86\n\t\t{0565D1C3-0F16-41AE-8561-44FF4E0494B4}.Release|x86.Build.0 = Release|x86\n\tEndGlobalSection\n\tGlobalSection(SolutionProperties) = preSolution\n\t\tHideSolutionNode = FALSE\n\tEndGlobalSection\nEndGlobal\n"
  },
  {
    "path": "Readme.txt",
    "content": "======================\nMiner Wars 2081 MOD KIT\n======================\n\nYou need to own Steam version of Miner Wars 2081 to create or play MODS!\nMinerWars.exe and Original Content (textures, models, audio) is not part of MOD KIT (3rd party resources can be provided)\n\nSource code repository: https://github.com/KeenSoftwareHouse/Miner-Wars-2081\nOfficial modding website: http://www.MinerWars.com/SourceCode.aspx\nOfficial modding forum: http://www.minerwars.com/ForumCategory.aspx?id=13\nSource code: https://github.com/KeenSoftwareHouse/Miner-Wars-2081\nSource code ZIP, direct download: https://github.com/KeenSoftwareHouse/Miner-Wars-2081/archive/master.zip\n2 minute video tutorial: http://youtu.be/4z3JbBxhMYI\n\nWhen we refer to MinerWars folder, we have MinerWars folder in Steam client on our mind. \nUsually C:\\Program Files\\Steam\\steamapps\\common\\MinerWars\\ or C:\\Program Files (x86)\\Steam\\steamapps\\common\\MinerWars\\\n\nMake your MOD\n=============\n1) Make sure you have installed latest updates (including service packs)\n2) Download and install free Visual C# 2010 Express: http://www.microsoft.com/visualstudio/eng#downloads+d-2010-express\n3) Install DirectX Runtime: http://www.microsoft.com/en-us/download/details.aspx?id=35\n4) Download zip with Miner Wars 2081 source code from GitHub and unpack:\n   https://github.com/KeenSoftwareHouse/Miner-Wars-2081/archive/master.zip\n5) Make sure Steam is running and you own MinerWars 2081\n6) Double-click MinerWars2081.sln\n7) Click Debug in Visual studio menu, click \"Start debugging\"\n8) When you're done with your MOD and want to distribute it -> test it first without Visual Studio (see Distribute your MOD and Use your MOD sections)\n\nDistribute your MOD\n===================\n1) Open file MinerWarsCommonLIB\\AppCode\\Utils\\MyMwcSecrets.cs\n   a) Fill MOD_NAME\n   b) Fill GAME_HASH - you can generate new GUID (Main menu, Tools, Create GUID) and put it here in format: \"F80AE059ABF7401893E3724AE573FA1E\" (dashes removed)\n2) Select \"Release\" in Visual C# (Debug/Release combo box)\n3) Click Build/Rebuild solution\n4) Rename \"Release\" folder in \"Sources\\MinerWars.GameLib\\bin\\x86\\\" to \"MyMod\" (use name of your mod)\n5) Zip \"MyMod\" folder\n6) Distribute zipped folder\n\nUse your MOD\n============\n1) Unzip MOD into [MinerWars folder]\\Mods (eg. C:\\Program Files\\Steam\\steamapps\\common\\MinerWars\\Mods\\MyMod should contain MinerWars.GameLib.dll)\n2) Create shortcut to MinerWars.exe\n3) Edit shortcut (right-click, properties)\n   a) Write after quotes space and this: -FromLauncher -mod MyMod\n   b) It should look like: \"C:\\....\\MinerWars.exe\" -FromLauncher -mod MyMod\n   - replace MyMod with mod name\n4) Run shortcut\n\n\nTips when developing your own mod\n=================================\n- When you see \"Please run this game from Steam\", make sure you have:\n  a) Steam client running, user logged in, owns Miner Wars 2081\n  b) File \"steam_appid.txt\" exists in MinerWars Steam folder (See step 1 in Make your MOD) and contains: 223430\n- When MinerWars is started, it checks for permissions, when it detects admin permissions, it restarts as \"Basic User\".\n  This check is disabled when running mod from Visual Studio.\n  Make sure you don't write to C:\\ or other protected locations, because it won't work when you distribute your MOD.\n- Content (textures, models, audio) can be modified too, check Readme_Content.txt\n- To quickly find classes and members, use file search tool, \"DPack\" (Visual studio addin) is great! Also CTRL+comma works quite good.\n- You should not replace original files in Content folder, instead place your files to Mods/YourMod folder and change source codes to use files in this directory.\n- Almost all classes starts with \"My\" prefix\n- You can distribute only your MOD dir, original Content and EXE distribution is prohibited (see License.txt for details)\n- When you're not sure how something works, just put breakpoint (press F9) to some method and see values when breakpoint is hit (Yes, you can DEBUG actual game!)\n- You can't add new steam achievements!\n- When you write something which makes development of other mods easy, you can submit the code and we add it to official MOD branch (on GitHub), so other developers can use it too\n  (e.g. support for new audio files, better texture loading for mods, some plugin API and so on)\n- Don't modify GameServices (or be very careful), it may crash the game when you change anything (e.g. number of arguments in constructor)\n"
  },
  {
    "path": "Readme_Content.txt",
    "content": "======================================\nMinerWars 2081 MOD KIT - Content Tools\n======================================\n\nAudio\n=====\n1) Download complete Audio pack, http://sourceforge.net/projects/minerwars2081/files/\n2) Install DirectX SDK, http://www.microsoft.com/en-us/download/details.aspx?id=6812\n3) Open Audio.xap in \"Microsoft Cross-Platform Audio Creation Tool 3 (XACT3)\"\n4) Edit sounds\n5) Click File/Build...\n6) Add Audio content to you mod dir\n7) Change sources codes (MyPlugins.cs, GetAudioFolder() method) to use your audio instead of official audio\n\nTextures\n========\nMinerWars 2081 uses mainly 2 textures:\na) \"de\" - diffuse, emmissive. Texture contains diffuse color in RGB channel and emissivity in Alpha channel\nb) \"ns\" - normal, specular. Texture contains normal in RGB channel and specular in Alpha channel\n\nAll textures should be DXT5 compressed DDS files, but game also handles loading png's.\nIf you don't know what this means, you can just use classic texture (saved as PNG) as \"de\" texture, it will work.\n\n1) Add modified textures to you mod dir\n2) Change sources codes (MyTextureManager.cs, LoadTexture() method) to use your textures first, then (when texture in your mod dir not found) to use official textures.\n\nModels\n======\nAll models must be FBX files (many editors can export to FBX)\n\n1) Install XNA Game Studio (required to build models)\n2) Copy your FBX models to \"Utils/MwmBuilder/Content/Custom\" (relative to this file)\n3) Run \"Utils/MwmBuilder/Models.bat\"\n4) Copy compiled models from \"Utils/MwmBuilder/Output/Custom\" to you mod dir\n5) Change sources codes (MyModels.cs, MyModel constructor and Load methods) to use your models first, then (when model in your mod file not found) to use official models\n\nFeel free to edit Models.bat and experiment with parameters\nWhen your model is deformed, not textured or you have any other issue, take a look at Ship model in \"Utils/MwmBuilder/Content/Custom\", it could be your starting point\n\nShaders\n=======\nAll shader source codes are in \"Effects\" folder\n\n1) It's recommended to install NShader addin to edit .fx files or use shader editor\n2) Copy modified \".fx\" to your mod dir\n3) Change sources codes (MyEffectBase, constructor) to use your shaders first, then (when shader is not found in your mod dir) to use official shader\n\nShaders are automatically compiled to .fxo files when game detect's that .fx file is newer than .fxo\nMake sure game can write to your mod directory (or where you place your .fx files) You can run Visual Studio as admin\nYou only need to distribute .fxo file, .fx file can be deleted when you're done with it (backup it somewhere)\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/GImpact/BulletCollision/BoxCollision.cs",
    "content": "﻿/*\n * \n * C# / XNA  port of Bullet (c) 2011 Mark Neale <xexuxjy@hotmail.com>\n *\nThis source file is part of GIMPACT Library.\n\nFor the latest info, see http://gimpact.sourceforge.net/\n\nCopyright (c) 2007 Francisco Leon Najera. C.C. 80087371.\nemail: projectileman@yahoo.com\n\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose,\nincluding commercial applications, and to alter it and redistribute it freely,\nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\nusing System;\nusing BulletXNA.LinearMath;\nusing MinerWarsMath;\n\nnamespace BulletXNA.BulletCollision\n{\n    public enum BT_PLANE_INTERSECTION_TYPE\n    {\n        BT_CONST_BACK_PLANE = 0,\n        BT_CONST_COLLIDE_PLANE,\n        BT_CONST_FRONT_PLANE\n    }\n\n    public class BoxCollision\n    {\n\n\n\n        ///Swap numbers\n        //#define BT_SWAP_NUMBERS(a,b){ \\\n        //    a = a+b; \\\n        //    b = a-b; \\\n        //    a = a-b; \\\n        //}\\\n\n\n        //#define BoxCollision.BT_MAX(a,b) (a<b?b:a)\n        //#define BoxCollision.BT_MIN(a,b) (a>b?b:a)\n\n        //#define BT_GREATER(x, y)\tMath.Abs(x) > (y)\n\n        //#define BoxCollision.BT_MAX3(a,b,c) BoxCollision.BT_MAX(a,BT_MAX(b,c))\n        //#define BoxCollision.BT_MIN3(a,b,c) BoxCollision.BT_MIN(a,BT_MIN(b,c))\n\n        public static bool BT_GREATER(float x, float y)\n        {\n            return Math.Abs(x) > y;\n        }\n\n        public static float BT_MAX(float a, float b)\n        {\n            return Math.Max(a, b);\n        }\n\n        public static float BT_MIN(float a, float b)\n        {\n            return Math.Min(a, b);\n        }\n\n        public static float BT_MAX3(float a, float b, float c)\n        {\n            return Math.Max(a, Math.Max(b, c));\n        }\n\n        public static float BT_MIN3(float a, float b, float c)\n        {\n            return Math.Min(a, Math.Min(b, c));\n        }\n\n\n\n        // bool test_cross_edge_box(\n        //\t ref IndexedVector3 edge,\n        //\t ref IndexedVector3 absolute_edge,\n        //\t ref IndexedVector3 pointa,\n        //\t ref IndexedVector3 pointb,  ref IndexedVector3 extend,\n        //\tint dir_index0,\n        //\tint dir_index1\n        //\tint component_index0,\n        //\tint component_index1)\n        //{\n        //\t// dir coords are -z and y\n        //\n        //\t float dir0 = -edge[dir_index0];\n        //\t float dir1 = edge[dir_index1];\n        //\tfloat pmin = pointa[component_index0]*dir0 + pointa[component_index1]*dir1;\n        //\tfloat pmax = pointb[component_index0]*dir0 + pointb[component_index1]*dir1;\n        //\t//find minmax\n        //\tif(pmin>pmax)\n        //\t{\n        //\t\tBT_SWAP_NUMBERS(pmin,pmax);\n        //\t}\n        //\t//find extends\n        //\t float rad = extend[component_index0] * absolute_edge[dir_index0] +\n        //\t\t\t\t\textend[component_index1] * absolute_edge[dir_index1];\n        //\n        //\tif(pmin>rad || -rad>pmax) return false;\n        //\treturn true;\n        //}\n        //\n        // bool test_cross_edge_box_X_axis(\n        //\t ref IndexedVector3 edge,\n        //\t ref IndexedVector3 absolute_edge,\n        //\t ref IndexedVector3 pointa,\n        //\t ref IndexedVector3 pointb, ref IndexedVector3 extend)\n        //{\n        //\n        //\treturn test_cross_edge_box(edge,absolute_edge,pointa,pointb,extend,2,1,1,2);\n        //}\n        //\n        //\n        // bool test_cross_edge_box_Y_axis(\n        //\t ref IndexedVector3 edge,\n        //\t ref IndexedVector3 absolute_edge,\n        //\t ref IndexedVector3 pointa,\n        //\t ref IndexedVector3 pointb, ref IndexedVector3 extend)\n        //{\n        //\n        //\treturn test_cross_edge_box(edge,absolute_edge,pointa,pointb,extend,0,2,2,0);\n        //}\n        //\n        // bool test_cross_edge_box_Z_axis(\n        //\t ref IndexedVector3 edge,\n        //\t ref IndexedVector3 absolute_edge,\n        //\t ref IndexedVector3 pointa,\n        //\t ref IndexedVector3 pointb, ref IndexedVector3 extend)\n        //{\n        //\n        //\treturn test_cross_edge_box(edge,absolute_edge,pointa,pointb,extend,1,0,0,1);\n        //}\n\n\n        public static bool TEST_CROSS_EDGE_BOX_MCR(ref IndexedVector3 edge, ref IndexedVector3 absolute_edge, ref IndexedVector3 pointa, ref IndexedVector3 pointb, ref IndexedVector3 _extend, int i_dir_0, int i_dir_1, int i_comp_0, int i_comp_1)\n        {\n\tfloat dir0 = -edge[i_dir_0];\n\tfloat dir1 = edge[i_dir_1];\n\tfloat pmin = pointa[i_comp_0]*dir0 + pointa[i_comp_1]*dir1;\n\tfloat pmax = pointb[i_comp_0]*dir0 + pointb[i_comp_1]*dir1;\n\tif(pmin>pmax)\n\t{\n        pmin = pmin + pmax;\n        pmax = pmin - pmax;\n        pmin = pmin - pmax;\n    }\n\tfloat abs_dir0 = absolute_edge[i_dir_0];\n\tfloat abs_dir1 = absolute_edge[i_dir_1];\n\tfloat rad = _extend[i_comp_0] * abs_dir0 + _extend[i_comp_1] * abs_dir1;\n    if (pmin > rad || -rad > pmax)\n    {\n        return false;\n    }\n    return true;\n        }\n        //    float dir0 = -MathUtil.VectorComponent(ref edge, i_dir_0);\n        //    float dir1 = MathUtil.VectorComponent(ref edge, i_dir_1);\n        //    float pmin = MathUtil.VectorComponent(ref pointa, i_comp_0) * dir0 + MathUtil.VectorComponent(ref pointa, i_comp_1) * dir1;\n        //    float pmax = MathUtil.VectorComponent(ref pointb, i_comp_0) * dir0 + MathUtil.VectorComponent(ref pointb, i_comp_1) * dir1;\n        //    if (pmin > pmax)\n        //    {\n        //        pmin = pmin + pmax;\n        //        pmax = pmin - pmax;\n        //        pmin = pmin - pmax;\n        //    }\n        //    float abs_dir0 = MathUtil.VectorComponent(ref absolute_edge, i_dir_0);\n        //    float abs_dir1 = MathUtil.VectorComponent(ref absolute_edge, i_dir_1);\n        //    float rad = MathUtil.VectorComponent(ref _extend, i_comp_0) * abs_dir0 + MathUtil.VectorComponent(ref _extend, i_comp_1) * abs_dir1;\n        //    if (pmin > rad || -rad > pmax)\n        //    {\n        //        return false;\n        //    }\n        //    return true;\n        //}\n\n\n        public static bool TEST_CROSS_EDGE_BOX_X_AXIS_MCR(ref IndexedVector3 edge, ref IndexedVector3 absolute_edge, ref IndexedVector3 pointa, ref IndexedVector3 pointb, ref IndexedVector3 _extend)\n        {\n            return TEST_CROSS_EDGE_BOX_MCR(ref edge, ref absolute_edge, ref pointa, ref pointb, ref _extend, 2, 1, 1, 2);\n        }\n\n        public static bool TEST_CROSS_EDGE_BOX_Y_AXIS_MCR(ref IndexedVector3 edge, ref IndexedVector3 absolute_edge, ref IndexedVector3 pointa, ref IndexedVector3 pointb, ref IndexedVector3 _extend)\n        {\n            return TEST_CROSS_EDGE_BOX_MCR(ref edge, ref absolute_edge, ref pointa, ref pointb, ref _extend, 0, 2, 2, 0);\n        }\n\n        public static bool TEST_CROSS_EDGE_BOX_Z_AXIS_MCR(ref IndexedVector3 edge, ref IndexedVector3 absolute_edge, ref IndexedVector3 pointa, ref IndexedVector3 pointb, ref IndexedVector3 _extend)\n        {\n            return TEST_CROSS_EDGE_BOX_MCR(ref edge, ref absolute_edge, ref pointa, ref pointb, ref _extend, 1, 0, 0, 1);\n        }\n\n\n        //! Returns the dot product between a vec3f and the col of a matrix\n        // float bt_mat3_dot_col(\n        // btMatrix3x3 & mat,  ref IndexedVector3 vec3, int colindex)\n        //{\n        //    return vec3[0]*mat[0][colindex] + vec3[1]*mat[1][colindex] + vec3[2]*mat[2][colindex];\n        //}\n\n\n\n\n        public const float BOX_PLANE_EPSILON = 0.000001f;\n\n\n\n        //! Compairison of transformation objects\n        bool CompareTransformsEqual(ref IndexedMatrix t1, ref IndexedMatrix t2)\n        {\n            return t1.Equals(t2);\n        }\n    }\n\n    //! Axis aligned box\n    public struct AABB\n    {\n        public IndexedVector3 m_min;\n        public IndexedVector3 m_max;\n\n        public AABB(ref IndexedVector3 V1,\n                 ref IndexedVector3 V2,\n                 ref IndexedVector3 V3)\n        {\n            m_min = new IndexedVector3();\n            m_max = new IndexedVector3();\n\n            m_min.X = BoxCollision.BT_MIN3(V1.X, V2.X, V3.X);\n            m_min.Y = BoxCollision.BT_MIN3(V1.Y, V2.Y, V3.Y);\n            m_min.Z = BoxCollision.BT_MIN3(V1.Z, V2.Z, V3.Z);\n\n            m_max.X = BoxCollision.BT_MAX3(V1.X, V2.X, V3.X);\n            m_max.Y = BoxCollision.BT_MAX3(V1.Y, V2.Y, V3.Y);\n            m_max.Z = BoxCollision.BT_MAX3(V1.Z, V2.Z, V3.Z);\n        }\n\n        public AABB(ref IndexedVector3 V1, ref IndexedVector3 V2, ref IndexedVector3 V3, float margin)\n        {\n            m_min = new IndexedVector3();\n            m_max = new IndexedVector3();\n            m_min.X = BoxCollision.BT_MIN3(V1.X, V2.X, V3.X);\n            m_min.Y = BoxCollision.BT_MIN3(V1.Y, V2.Y, V3.Y);\n            m_min.Z = BoxCollision.BT_MIN3(V1.Z, V2.Z, V3.Z);\n\n            m_max.X = BoxCollision.BT_MAX3(V1.X, V2.X, V3.X);\n            m_max.Y = BoxCollision.BT_MAX3(V1.Y, V2.Y, V3.Y);\n            m_max.Z = BoxCollision.BT_MAX3(V1.Z, V2.Z, V3.Z);\n\n            m_min.X -= margin;\n            m_min.Y -= margin;\n            m_min.Z -= margin;\n            m_max.X += margin;\n            m_max.Y += margin;\n            m_max.Z += margin;\n        }\n\n        public AABB(ref IndexedVector3 min, ref IndexedVector3 max)\n        {\n            m_min = min;\n            m_max = max;\n        }\n\n        public AABB(ref Vector3 min, ref Vector3 max)\n        {\n            m_min = min;\n            m_max = max;\n        }\n\n        public AABB(ref AABB other)\n        {\n            m_max = other.m_max;\n            m_min = other.m_min;\n        }\n\n        public AABB(ref AABB other, float margin)\n        {\n            m_max = other.m_max;\n            m_min = other.m_min;\n\n            m_min.X -= margin;\n            m_min.Y -= margin;\n            m_min.Z -= margin;\n            m_max.X += margin;\n            m_max.Y += margin;\n            m_max.Z += margin;\n        }\n\n        public void Invalidate()\n        {\n            m_min.X = MathUtil.SIMD_INFINITY;\n            m_min.Y = MathUtil.SIMD_INFINITY;\n            m_min.Z = MathUtil.SIMD_INFINITY;\n            m_max.X = -MathUtil.SIMD_INFINITY;\n            m_max.Y = -MathUtil.SIMD_INFINITY;\n            m_max.Z = -MathUtil.SIMD_INFINITY;\n        }\n\n        public void IncrementMargin(float margin)\n        {\n            m_min.X -= margin;\n            m_min.Y -= margin;\n            m_min.Z -= margin;\n            m_max.X += margin;\n            m_max.Y += margin;\n            m_max.Z += margin;\n        }\n\n        public void CopyWithMargin(ref AABB other, float margin)\n        {\n            m_min.X = other.m_min.X - margin;\n            m_min.Y = other.m_min.Y - margin;\n            m_min.Z = other.m_min.Z - margin;\n\n            m_max.X = other.m_max.X + margin;\n            m_max.Y = other.m_max.Y + margin;\n            m_max.Z = other.m_max.Z + margin;\n        }\n\n        public void CalcFromTriangle(ref IndexedVector3 V1, ref IndexedVector3 V2, ref IndexedVector3 V3)\n        {\n            m_min.X = BoxCollision.BT_MIN3(V1.X, V2.X, V3.X);\n            m_min.Y = BoxCollision.BT_MIN3(V1.Y, V2.Y, V3.Y);\n            m_min.Z = BoxCollision.BT_MIN3(V1.Z, V2.Z, V3.Z);\n\n            m_max.X = BoxCollision.BT_MAX3(V1.X, V2.X, V3.X);\n            m_max.Y = BoxCollision.BT_MAX3(V1.Y, V2.Y, V3.Y);\n            m_max.Z = BoxCollision.BT_MAX3(V1.Z, V2.Z, V3.Z);\n\n        }\n\n        public void CalcFromTriangleMargin(ref IndexedVector3 V1, ref IndexedVector3 V2, ref IndexedVector3 V3, float margin)\n        {\n            m_min.X = BoxCollision.BT_MIN3(V1.X, V2.X, V3.X);\n            m_min.Y = BoxCollision.BT_MIN3(V1.Y, V2.Y, V3.Y);\n            m_min.Z = BoxCollision.BT_MIN3(V1.Z, V2.Z, V3.Z);\n\n            m_max.X = BoxCollision.BT_MAX3(V1.X, V2.X, V3.X);\n            m_max.Y = BoxCollision.BT_MAX3(V1.Y, V2.Y, V3.Y);\n            m_max.Z = BoxCollision.BT_MAX3(V1.Z, V2.Z, V3.Z);\n\n            m_min.X -= margin;\n            m_min.Y -= margin;\n            m_min.Z -= margin;\n            m_max.X += margin;\n            m_max.Y += margin;\n            m_max.Z += margin;\n        }\n\n        //! Apply a transform to an AABB\n        public void ApplyTransform(ref IndexedMatrix trans)\n        {\n            IndexedVector3 center = (m_max + m_min) * 0.5f;\n            IndexedVector3 extends = m_max - center;\n            // Compute new center\n            center = trans * center;\n\n            IndexedVector3 textends = new IndexedVector3(extends.Dot(trans._basis.GetRow(0).Absolute()),\n                 extends.Dot(trans._basis.GetRow(1).Absolute()),\n                 extends.Dot(trans._basis.GetRow(2).Absolute()));\n\n            m_min = center - textends;\n            m_max = center + textends;\n        }\n\n\n        //! Apply a transform to an AABB\n        public void ApplyTransformTransCache(ref BT_BOX_BOX_TRANSFORM_CACHE trans)\n        {\n            IndexedVector3 center = (m_max + m_min) * 0.5f;\n            IndexedVector3 extends = m_max - center;\n            // Compute new center\n            center = trans.Transform(ref center);\n\n            IndexedBasisMatrix absMatrix = trans.m_R1to0.Absolute();\n\n\t\t    IndexedVector3 textends = new IndexedVector3(extends.Dot(trans.m_R1to0.GetRow(0).Absolute()),\n \t\t\t\t extends.Dot(trans.m_R1to0.GetRow(1).Absolute()),\n\t\t\t\t extends.Dot(trans.m_R1to0.GetRow(2).Absolute()));\n\n            m_min = center - textends;\n            m_max = center + textends;\n        }\n\n        //! Merges a Box\n        public void Merge(AABB box)\n        {\n            Merge(ref box);\n        }\n\n        public void Merge(ref AABB box)\n        {\n            m_min.X = BoxCollision.BT_MIN(m_min.X, box.m_min.X);\n            m_min.Y = BoxCollision.BT_MIN(m_min.Y, box.m_min.Y);\n            m_min.Z = BoxCollision.BT_MIN(m_min.Z, box.m_min.Z);\n\n            m_max.X = BoxCollision.BT_MAX(m_max.X, box.m_max.X);\n            m_max.Y = BoxCollision.BT_MAX(m_max.Y, box.m_max.Y);\n            m_max.Z = BoxCollision.BT_MAX(m_max.Z, box.m_max.Z);\n        }\n\n        //! Merges a point\n        public void MergePoint(ref IndexedVector3 point)\n        {\n            m_min.X = BoxCollision.BT_MIN(m_min.X, point.X);\n            m_min.Y = BoxCollision.BT_MIN(m_min.Y, point.Y);\n            m_min.Z = BoxCollision.BT_MIN(m_min.Z, point.Z);\n\n            m_max.X = BoxCollision.BT_MAX(m_max.X, point.X);\n            m_max.Y = BoxCollision.BT_MAX(m_max.Y, point.Y);\n            m_max.Z = BoxCollision.BT_MAX(m_max.Z, point.Z);\n        }\n\n        //! Gets the extend and center\n        public void GetCenterExtend(out IndexedVector3 center, out IndexedVector3 extend)\n        {\n            center = new IndexedVector3((m_max + m_min) * 0.5f);\n            extend = new IndexedVector3(m_max - center);\n        }\n\n\n        //! Finds the intersecting box between this box and the other.\n        public void FindIntersection(ref AABB other, ref AABB intersection)\n        {\n            intersection.m_min.X = BoxCollision.BT_MAX(other.m_min.X, m_min.X);\n            intersection.m_min.Y = BoxCollision.BT_MAX(other.m_min.Y, m_min.Y);\n            intersection.m_min.Z = BoxCollision.BT_MAX(other.m_min.Z, m_min.Z);\n\n            intersection.m_max.X = BoxCollision.BT_MIN(other.m_max.X, m_max.X);\n            intersection.m_max.Y = BoxCollision.BT_MIN(other.m_max.Y, m_max.Y);\n            intersection.m_max.Z = BoxCollision.BT_MIN(other.m_max.Z, m_max.Z);\n        }\n\n\n        public bool HasCollision(ref AABB other)\n        {\n            if (m_min.X > other.m_max.X ||\n               m_max.X < other.m_min.X ||\n               m_min.Y > other.m_max.Y ||\n               m_max.Y < other.m_min.Y ||\n               m_min.Z > other.m_max.Z ||\n               m_max.Z < other.m_min.Z)\n            {\n                return false;\n            }\n            return true;\n        }\n\n        /*! \\brief Finds the Ray intersection parameter.\n        \\param aabb Aligned box\n        \\param vorigin A vec3f with the origin of the ray\n        \\param vdir A vec3f with the direction of the ray\n        */\n        public bool CollideRay(ref IndexedVector3 vorigin, ref IndexedVector3 vdir)\n        {\n            IndexedVector3 extents, center;\n            GetCenterExtend(out center, out extents);\n\n            float Dx = vorigin.X - center.X;\n            if (BoxCollision.BT_GREATER(Dx, extents.X) && Dx * vdir.X >= 0.0f) return false;\n            float Dy = vorigin.Y - center.Y;\n            if (BoxCollision.BT_GREATER(Dy, extents.Y) && Dy * vdir.Y >= 0.0f) return false;\n            float Dz = vorigin.Z - center.Z;\n            if (BoxCollision.BT_GREATER(Dz, extents.Z) && Dz * vdir.Z >= 0.0f) return false;\n\n\n            float f = vdir.Y * Dz - vdir.Z * Dy;\n            if (Math.Abs(f) > extents.Y * Math.Abs(vdir.Z) + extents.Z * Math.Abs(vdir.Y)) return false;\n            f = vdir.Z * Dx - vdir.X * Dz;\n            if (Math.Abs(f) > extents.X * Math.Abs(vdir.Z) + extents.Z * Math.Abs(vdir.X)) return false;\n            f = vdir.X * Dy - vdir.Y * Dx;\n            if (Math.Abs(f) > extents.X * Math.Abs(vdir.Y) + extents.Y * Math.Abs(vdir.X)) return false;\n            return true;\n        }\n\n        public float? CollideRayDistance(ref IndexedVector3 origin, ref IndexedVector3 direction)\n        {\n            // r.dir is unit direction vector of ray\n            IndexedVector3 dirfrac = new IndexedVector3(1.0f / direction.X, 1.0f / direction.Y, 1.0f / direction.Z);\n            \n            // m_min is the corner of AABB with minimal coordinates - left bottom, m_max is maximal corner\n            // r.org is origin of ray\n            float t1 = (m_min.X - origin.X) * dirfrac.X;\n            float t2 = (m_max.X - origin.X) * dirfrac.X;\n            float t3 = (m_min.Y - origin.Y) * dirfrac.Y;\n            float t4 = (m_max.Y - origin.Y) * dirfrac.Y;\n            float t5 = (m_min.Z - origin.Z) * dirfrac.Z;\n            float t6 = (m_max.Z - origin.Z) * dirfrac.Z;\n\n            float tmin = Math.Max(Math.Max(Math.Min(t1, t2), Math.Min(t3, t4)), Math.Min(t5, t6));\n            float tmax = Math.Min(Math.Min(Math.Max(t1, t2), Math.Max(t3, t4)), Math.Max(t5, t6));\n\n            float t;\n\n            // if tmax < 0, ray (line) is intersecting AABB, but whole AABB is behing us\n            if (tmax < 0)\n            {\n                t = tmax;\n                return null;\n            }\n\n            // if tmin > tmax, ray doesn't intersect AABB\n            if (tmin > tmax)\n            {\n                t = tmax;\n                return null;\n            }\n\n            t = tmin;\n            return t;\n        }\n\n        public void ProjectionInterval(ref Vector4 direction, out float vmin, out float vmax)\n        {\n            IndexedVector3 temp = new IndexedVector3(direction.X, direction.Y, direction.Z);\n            ProjectionInterval(ref temp, out vmin, out vmax);\n        }\n\n        public void ProjectionInterval(ref IndexedVector3 direction, out float vmin, out float vmax)\n        {\n            IndexedVector3 center = (m_max + m_min) * 0.5f;\n            IndexedVector3 extend = m_max - center;\n\n            float _fOrigin = direction.Dot(ref center);\n            float _fMaximumExtent = extend.Dot(direction.Absolute());\n            vmin = _fOrigin - _fMaximumExtent;\n            vmax = _fOrigin + _fMaximumExtent;\n        }\n\n        // seems silly to duplicate this stuff when it's in xna plane, but a cleanup will wait\n        // till it's 'working'\n        public BT_PLANE_INTERSECTION_TYPE PlaneClassify(ref Vector4 plane)\n        {\n            float _fmin, _fmax;\n            ProjectionInterval(ref plane, out _fmin, out _fmax);\n\n            if (plane.W > _fmax + BoxCollision.BOX_PLANE_EPSILON)\n            {\n                return BT_PLANE_INTERSECTION_TYPE.BT_CONST_BACK_PLANE; // 0\n            }\n\n            if (plane.W + BoxCollision.BOX_PLANE_EPSILON >= _fmin)\n            {\n                return BT_PLANE_INTERSECTION_TYPE.BT_CONST_COLLIDE_PLANE; //1\n            }\n            return BT_PLANE_INTERSECTION_TYPE.BT_CONST_FRONT_PLANE;//2\n        }\n\n        public bool OverlappingTransConservative(ref AABB box, ref IndexedMatrix trans1_to_0)\n        {\n            AABB tbox = box;\n            tbox.ApplyTransform(ref trans1_to_0);\n            return HasCollision(ref tbox);\n        }\n\n        public bool OverlappingTransConservative2(ref AABB box,\n            BT_BOX_BOX_TRANSFORM_CACHE trans1_to_0)\n        {\n            AABB tbox = box;\n            tbox.ApplyTransformTransCache(ref trans1_to_0);\n            return HasCollision(ref tbox);\n        }\n\n        //! transcache is the transformation cache from box to this AABB\n        public bool OverlappingTransCache(ref AABB box, ref BT_BOX_BOX_TRANSFORM_CACHE transcache, bool fulltest)\n        {\n\n            //Taken from OPCODE\n            IndexedVector3 ea, eb;//extends\n            IndexedVector3 ca, cb;//extends\n            GetCenterExtend(out ca, out ea);\n            box.GetCenterExtend(out cb, out eb);\n\n\n\n            IndexedVector3 T = new IndexedVector3(0, 0, 0);\n            float t, t2;\n            int i;\n\n            // Class I : A's basis vectors\n\n            for (i = 0; i < 3; i++)\n            {\n                T[i] = transcache.m_R1to0[i].Dot(ref cb) + transcache.m_T1to0[i] - ca[i];\n                t = transcache.m_AR[i].Dot(ref eb) + ea[i];\n\n                if (BoxCollision.BT_GREATER(T[i], t))\n                {\n                    return false;\n                }\n            }\n            // Class II : B's basis vectors\n            for (i = 0; i < 3; i++)\n            {\n                t = Mat3DotCol(ref transcache.m_R1to0, ref T, i);\n                t2 = Mat3DotCol(ref transcache.m_AR, ref ea, i) + eb[i];\n                if (BoxCollision.BT_GREATER(t, t2))\n                {\n                    return false;\n                }\n            }\n            // Class III : 9 cross products\n            if (fulltest)\n            {\n                // check to see if these need to be restored back or are read-only\n                float[,] m_R1to0 = MathUtil.BasisMatrixToFloatArray(ref transcache.m_R1to0);\n                float[,] m_AR = MathUtil.BasisMatrixToFloatArray(ref transcache.m_AR);\n\n\n                int j, m, n, o, p, q, r;\n                for (i = 0; i < 3; i++)\n                {\n                    m = (i + 1) % 3;\n                    n = (i + 2) % 3;\n                    o = i == 0 ? 1 : 0;\n                    p = i == 2 ? 1 : 2;\n                    for (j = 0; j < 3; j++)\n                    {\n                        q = j == 2 ? 1 : 2;\n                        r = j == 0 ? 1 : 0;\n                        t = T[n] * m_R1to0[m, j] - T[m] * m_R1to0[n, j];\n                        t2 = ea[o] * m_AR[p, j] + ea[p] * m_AR[o, j] +\n                            eb[r] * m_AR[i, q] + eb[q] * m_AR[i, r];\n                        if (BoxCollision.BT_GREATER(t, t2)) return false;\n                    }\n                }\n            }\n            return true;\n        }\n\n        public static float Mat3DotCol(ref IndexedBasisMatrix mat, ref IndexedVector3 vec3, int colindex)\n        {\n            return vec3[0] * mat[0,colindex] + vec3[1] * mat[1,colindex] + vec3[2] * mat[2,colindex];\n        }\n\n        public static float Mat3DotCol(IndexedBasisMatrix mat, ref IndexedVector3 vec3, int colindex)\n        {\n            return vec3[0] * mat[0, colindex] + vec3[1] * mat[1, colindex] + vec3[2] * mat[2, colindex];\n        }\n\n        //! Simple test for planes.\n        public bool CollidePlane(ref Vector4 plane)\n        {\n            BT_PLANE_INTERSECTION_TYPE classify = PlaneClassify(ref plane);\n            return (classify == BT_PLANE_INTERSECTION_TYPE.BT_CONST_COLLIDE_PLANE);\n        }\n\n        //! test for a triangle, with edges\n        public bool CollideTriangleExact(ref IndexedVector3 p1, ref IndexedVector3 p2, ref IndexedVector3 p3, ref Vector4 triangle_plane)\n        {\n            if (!CollidePlane(ref triangle_plane))\n            {\n                return false;\n            }\n\n            IndexedVector3 center, extends;\n            GetCenterExtend(out center, out extends);\n\n            IndexedVector3 v1 = (p1 - center);\n            IndexedVector3 v2 = (p2 - center);\n            IndexedVector3 v3 = (p3 - center);\n\n            //First axis\n            IndexedVector3 diff = (v2 - v1);\n            IndexedVector3 abs_diff = diff.Absolute();\n\n            //Test With X axis\n            BoxCollision.TEST_CROSS_EDGE_BOX_X_AXIS_MCR(ref diff, ref abs_diff, ref v1, ref v3, ref extends);\n            //Test With Y axis\n            BoxCollision.TEST_CROSS_EDGE_BOX_Y_AXIS_MCR(ref diff, ref abs_diff, ref v1, ref v3, ref extends);\n            //Test With Z axis\n            BoxCollision.TEST_CROSS_EDGE_BOX_Z_AXIS_MCR(ref diff, ref abs_diff, ref v1, ref v3, ref extends);\n\n\n            diff = v3 - v2;\n            abs_diff = diff.Absolute();\n            //Test With X axis\n            BoxCollision.TEST_CROSS_EDGE_BOX_X_AXIS_MCR(ref diff, ref abs_diff, ref v2, ref v1, ref extends);\n            //Test With Y axis\n            BoxCollision.TEST_CROSS_EDGE_BOX_Y_AXIS_MCR(ref diff, ref abs_diff, ref v2, ref v1, ref extends);\n            //Test With Z axis\n            BoxCollision.TEST_CROSS_EDGE_BOX_Z_AXIS_MCR(ref diff, ref abs_diff, ref v2, ref v1, ref extends);\n\n            diff = v1 - v3;\n            abs_diff = diff.Absolute();\n\n            //Test With X axis\n            BoxCollision.TEST_CROSS_EDGE_BOX_X_AXIS_MCR(ref diff, ref abs_diff, ref v3, ref v2, ref extends);\n            //Test With Y axis\n            BoxCollision.TEST_CROSS_EDGE_BOX_Y_AXIS_MCR(ref diff, ref abs_diff, ref v3, ref v2, ref extends);\n            //Test With Z axis\n            BoxCollision.TEST_CROSS_EDGE_BOX_Z_AXIS_MCR(ref diff, ref abs_diff, ref v3, ref v2, ref extends);\n\n            return true;\n        }\n    }\n    //!  Class for transforming a model1 to the space of model0\n    public struct BT_BOX_BOX_TRANSFORM_CACHE\n    {\n        public IndexedVector3 m_T1to0;//!< Transforms translation of model1 to model 0\n        public IndexedBasisMatrix m_R1to0;//!< Transforms Rotation of model1 to model 0, equal  to R0' * R1\n        public IndexedBasisMatrix m_AR;//!< Absolute value of m_R1to0\n\n        public void CalcAbsoluteMatrix()\n        {\n            //\t\tstatic  IndexedVector3 vepsi(1e-6f,1e-6f,1e-6f);\n            //\t\tm_AR[0] = vepsi + m_R1to0[0].absolute();\n            //\t\tm_AR[1] = vepsi + m_R1to0[1].absolute();\n            //\t\tm_AR[2] = vepsi + m_R1to0[2].absolute();\n\n            int i, j;\n\n            for (i = 0; i < 3; i++)\n            {\n                for (j = 0; j < 3; j++)\n                {\n                    m_AR[i,j] = 1e-6f + Math.Abs(m_R1to0[i,j]);\n                }\n            }\n        }\n\n\n        //! Calc the transformation relative  1 to 0. Inverts matrics by transposing\n        public void CalcFromHomogenic(ref IndexedMatrix trans0, ref IndexedMatrix trans1)\n        {\n            IndexedMatrix temp_trans = trans0.Inverse();\n            temp_trans = temp_trans * trans1;\n\n            m_T1to0 = temp_trans._origin;\n            m_R1to0 = temp_trans._basis;\n\n            CalcAbsoluteMatrix();\n        }\n\n        //! Calcs the full invertion of the matrices. Useful for scaling matrices\n        public void CalcFromFullInvert(ref IndexedMatrix trans0, ref IndexedMatrix trans1)\n        {\n            m_R1to0 = trans0._basis.Inverse();\n            m_T1to0 = m_R1to0 * (-trans0._origin);\n\n            m_T1to0 += m_R1to0 * trans1._origin;\n            m_R1to0 *= trans1._basis;\n\n            CalcAbsoluteMatrix();\n        }\n\n        public IndexedVector3 Transform(ref IndexedVector3 point)\n        {\n            return new IndexedVector3(m_R1to0[0].Dot(ref point) + m_T1to0.X,\n                m_R1to0[1].Dot(ref point) + m_T1to0.Y,\n                m_R1to0[2].Dot(ref point) + m_T1to0.Z);\n        }\n    }\n\n}"
  },
  {
    "path": "Sources/CommonLIB/AppCode/GImpact/BulletCollision/ClipPolygon.cs",
    "content": "﻿/*\n * \n * C# / XNA  port of Bullet (c) 2011 Mark Neale <xexuxjy@hotmail.com>\n *\nThis source file is part of GIMPACT Library.\n\nFor the latest info, see http://gimpact.sourceforge.net/\n\nCopyright (c) 2007 Francisco Leon Najera. C.C. 80087371.\nemail: projectileman@yahoo.com\n\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose,\nincluding commercial applications, and to alter it and redistribute it freely,\nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\nusing BulletXNA.LinearMath;\nusing MinerWarsMath;\n\nnamespace BulletXNA.BulletCollision\n{\n    public class ClipPolygon\n    {\n\n        public static float DistancePointPlane(ref Vector4 plane, ref IndexedVector3 point)\n        {\n            return point.Dot(new IndexedVector3(plane.X, plane.Y, plane.Z)) - plane.W;\n        }\n\n        /*! Vector blending\n        Takes two vectors a, b, blends them together*/\n        public static void VecBlend(ref IndexedVector3 vr, ref IndexedVector3 va, ref IndexedVector3 vb, float blend_factor)\n        {\n            vr = (1 - blend_factor) * va + blend_factor * vb;\n        }\n\n        //! This function calcs the distance from a 3D plane\n        public static void PlaneClipPolygonCollect(\n                               ref IndexedVector3 point0,\n                               ref IndexedVector3 point1,\n                               float dist0,\n                               float dist1,\n                               ObjectArray<IndexedVector3> clipped,\n                               ref int clipped_count)\n        {\n            bool _prevclassif = (dist0 > MathUtil.SIMD_EPSILON);\n            bool _classif = (dist1 > MathUtil.SIMD_EPSILON);\n            if (_classif != _prevclassif)\n            {\n                float blendfactor = -dist0 / (dist1 - dist0);\n                VecBlend(ref clipped.GetRawArray()[clipped_count], ref point0, ref point1, blendfactor);\n                clipped_count++;\n            }\n            if (!_classif)\n            {\n                clipped[clipped_count] = point1;\n                clipped_count++;\n            }\n        }\n\n\n        //! Clips a polygon by a plane\n        /*!\n        *\\return The count of the clipped counts\n        */\n        public static int PlaneClipPolygon(\n                               ref Vector4 plane,\n                               ObjectArray<IndexedVector3> polygon_points,\n                               int polygon_point_count,\n                               ObjectArray<IndexedVector3> clipped)\n        {\n            int clipped_count = 0;\n\n            IndexedVector3[] rawPoints = polygon_points.GetRawArray();\n\n            //clip first point\n            float firstdist = DistancePointPlane(ref plane, ref rawPoints[0]); ;\n            if (!(firstdist > MathUtil.SIMD_EPSILON))\n            {\n                clipped[clipped_count] = polygon_points[0];\n                clipped_count++;\n            }\n\n            float olddist = firstdist;\n            for (int i = 1; i < polygon_point_count; i++)\n            {\n                float dist = DistancePointPlane(ref plane, ref rawPoints[i]);\n\n                PlaneClipPolygonCollect(\n                                ref rawPoints[i - 1], ref rawPoints[i],\n                                olddist,\n                                dist,\n                                clipped,\n                                ref clipped_count);\n\n\n                olddist = dist;\n            }\n\n            //RETURN TO FIRST  point\n\n            PlaneClipPolygonCollect(\n                            ref rawPoints[polygon_point_count - 1], ref rawPoints[0],\n                            olddist,\n                            firstdist,\n                            clipped,\n                            ref clipped_count);\n\n            return clipped_count;\n        }\n\n        //! Clips a polygon by a plane\n        /*!\n        *\\param clipped must be an array of 16 points.\n        *\\return The count of the clipped counts\n        */\n        public static int PlaneClipTriangle(\n                               ref Vector4 plane,\n                               ref IndexedVector3 point0,\n                               ref IndexedVector3 point1,\n                               ref IndexedVector3 point2,\n                               ObjectArray<IndexedVector3> clipped // an allocated array of 16 points at least\n                               )\n        {\n            int clipped_count = 0;\n\n            //clip first point0\n            float firstdist = DistancePointPlane(ref plane, ref point0);\n            if (!(firstdist > MathUtil.SIMD_EPSILON))\n            {\n                clipped[clipped_count] = point0;\n                clipped_count++;\n            }\n\n            // point 1\n            float olddist = firstdist;\n            float dist = DistancePointPlane(ref plane, ref point1);\n\n            PlaneClipPolygonCollect(\n                            ref point0, ref point1,\n                            olddist,\n                            dist,\n                            clipped,\n                            ref clipped_count);\n\n            olddist = dist;\n\n\n            // point 2\n            dist = DistancePointPlane(ref plane, ref point2);\n\n            PlaneClipPolygonCollect(\n                            ref point1, ref point2,\n                            olddist,\n                            dist,\n                            clipped,\n                            ref clipped_count);\n            olddist = dist;\n\n\n\n            //RETURN TO FIRST  point0\n            PlaneClipPolygonCollect(\n                            ref point2, ref point0,\n                            olddist,\n                            firstdist,\n                            clipped,\n                            ref clipped_count);\n\n            return clipped_count;\n        }\n    }\n}\n\n\n\n\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/GImpact/BulletCollision/GImpactBvh.cs",
    "content": "/*\n * \n * C# / XNA  port of Bullet (c) 2011 Mark Neale <xexuxjy@hotmail.com>\n *\nThis source file is part of GIMPACT Library.\n\nFor the latest info, see http://gimpact.sourceforge.net/\n\nCopyright (c) 2007 Francisco Leon Najera. C.C. 80087371.\nemail: projectileman@yahoo.com\n\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose,\nincluding commercial applications, and to alter it and redistribute it freely,\nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\nusing System.Diagnostics;\nusing BulletXNA.LinearMath;\n\nnamespace BulletXNA.BulletCollision\n{\n    public class GImpactBvh\n    {\n        protected BvhTree m_box_tree;\n        protected IPrimitiveManagerBase m_primitive_manager;\n\n        //stackless refit\n        protected void Refit()\n        {\n            int nodecount = GetNodeCount();\n            while (nodecount-- != 0)\n            {\n                if (IsLeafNode(nodecount))\n                {\n                    AABB leafbox;\n                    m_primitive_manager.GetPrimitiveBox(GetNodeData(nodecount), out leafbox);\n                    SetNodeBound(nodecount, ref leafbox);\n                }\n                else\n                {\n                    //const GIM_BVH_TREE_NODE * nodepointer = get_node_pointer(nodecount);\n                    //get left bound\n                    AABB bound = new AABB();\n                    bound.Invalidate();\n\n                    AABB temp_box;\n\n                    int child_node = GetLeftNode(nodecount);\n                    if (child_node != 0)\n                    {\n                        GetNodeBound(child_node, out temp_box);\n                        bound.Merge(ref temp_box);\n                    }\n\n                    child_node = GetRightNode(nodecount);\n                    if (child_node != 0)\n                    {\n                        GetNodeBound(child_node, out temp_box);\n                        bound.Merge(ref temp_box);\n                    }\n\n                    SetNodeBound(nodecount, ref bound);\n                }\n            }\n\n        }\n\n        //! this constructor doesn't build the tree. you must call\tbuildSet\n        public GImpactBvh()\n        {\n            m_primitive_manager = null;\n        }\n\n        //! this constructor doesn't build the tree. you must call\tbuildSet\n        public GImpactBvh(IPrimitiveManagerBase primitive_manager)\n        {\n            m_primitive_manager = primitive_manager;\n        }\n\n        public AABB GetGlobalBox()\n        {\n            AABB totalbox;\n            GetNodeBound(0, out totalbox);\n            return totalbox;\n        }\n\n        public void SetPrimitiveManager(IPrimitiveManagerBase primitive_manager)\n        {\n            m_primitive_manager = primitive_manager;\n        }\n\n        public IPrimitiveManagerBase GetPrimitiveManager()\n        {\n            return m_primitive_manager;\n        }\n\n\n        //! node manager prototype functions\n        ///@{\n\n        //! this attemps to refit the box set.\n        public void Update()\n        {\n            Refit();\n        }\n\n        //! this rebuild the entire set\n        public void BuildSet()\n        {\n            //obtain primitive boxes\n            GIM_BVH_DATA_ARRAY primitive_boxes = new GIM_BVH_DATA_ARRAY();\n            //primitive_boxes.resize(m_primitive_manager.get_primitive_count());\n            primitive_boxes.Capacity = m_primitive_manager.GetPrimitiveCount();\n            for (int i = 0; i < primitive_boxes.Count; i++)\n            {\n                m_primitive_manager.GetPrimitiveBox(i, out primitive_boxes.GetRawArray()[i].m_bound);\n                primitive_boxes.GetRawArray()[i].m_data = i;\n            }\n\n            m_box_tree.BuildTree(primitive_boxes);\n\n        }\n\n        //! returns the indices of the primitives in the m_primitive_manager\n        public bool BoxQuery(ref AABB box, ObjectArray<int> collided_results)\n        {\n            int curIndex = 0;\n            int numNodes = GetNodeCount();\n\n            while (curIndex < numNodes)\n            {\n                AABB bound = new AABB();\n                GetNodeBound(curIndex, out bound);\n\n                //catch bugs in tree data\n\n                bool aabbOverlap = bound.HasCollision(ref box);\n                bool isleafnode = IsLeafNode(curIndex);\n\n                if (isleafnode && aabbOverlap)\n                {\n                    collided_results.Add(GetNodeData(curIndex));\n                }\n\n                if (aabbOverlap || isleafnode)\n                {\n                    //next subnode\n                    curIndex++;\n                }\n                else\n                {\n                    //skip node\n                    curIndex += GetEscapeNodeIndex(curIndex);\n                }\n            }\n            if (collided_results.Count > 0) return true;\n            return false;\n\n        }\n\n        //! returns the indices of the primitives in the m_primitive_manager\n        public bool BoxQueryTrans(ref AABB box,\n         ref IndexedMatrix transform, ObjectArray<int> collided_results)\n        {\n            AABB transbox = box;\n            transbox.ApplyTransform(ref transform);\n            return BoxQuery(ref transbox, collided_results);\n        }\n\n        //! returns the indices of the primitives in the m_primitive_manager\n        public bool RayQuery(ref IndexedVector3 ray_dir, ref IndexedVector3 ray_origin,\n            ObjectArray<int> collided_results)\n        {\n            int curIndex = 0;\n            int numNodes = GetNodeCount();\n\n            while (curIndex < numNodes)\n            {\n                AABB bound = new AABB();\n                GetNodeBound(curIndex, out bound);\n\n                //catch bugs in tree data\n\n                bool aabbOverlap = bound.CollideRay(ref ray_origin, ref ray_dir);\n                bool isleafnode = IsLeafNode(curIndex);\n\n                if (isleafnode && aabbOverlap)\n                {\n                    collided_results.Add(GetNodeData(curIndex));\n                }\n\n                if (aabbOverlap || isleafnode)\n                {\n                    //next subnode\n                    curIndex++;\n                }\n                else\n                {\n                    //skip node\n                    curIndex += GetEscapeNodeIndex(curIndex);\n                }\n            }\n            if (collided_results.Count > 0) return true;\n            return false;\n\n        }\n\n        //! tells if this set has hierarcht\n        public bool HasHierarchy()\n        {\n            return true;\n        }\n\n        //! tells if this set is a trimesh\n        public bool IsTrimesh()\n        {\n            return m_primitive_manager.IsTrimesh();\n        }\n\n        //! node count\n        public int GetNodeCount()\n        {\n            return m_box_tree.GetNodeCount();\n        }\n\n        //! tells if the node is a leaf\n        public bool IsLeafNode(int nodeindex)\n        {\n            return m_box_tree.IsLeafNode(nodeindex);\n        }\n\n        public int GetNodeData(int nodeindex)\n        {\n            return m_box_tree.GetNodeData(nodeindex);\n        }\n\n        public void GetNodeBound(int nodeindex, out AABB bound)\n        {\n            m_box_tree.GetNodeBound(nodeindex, out bound);\n        }\n\n        public void SetNodeBound(int nodeindex, ref AABB bound)\n        {\n            m_box_tree.SetNodeBound(nodeindex, ref bound);\n        }\n\n\n        public int GetLeftNode(int nodeindex)\n        {\n            return m_box_tree.GetLeftNode(nodeindex);\n        }\n\n        public int GetRightNode(int nodeindex)\n        {\n            return m_box_tree.GetRightNode(nodeindex);\n        }\n\n        public int GetEscapeNodeIndex(int nodeindex)\n        {\n            return m_box_tree.GetEscapeNodeIndex(nodeindex);\n        }\n\n        public void GetNodeTriangle(int nodeindex, PrimitiveTriangle triangle)\n        {\n            m_primitive_manager.GetPrimitiveTriangle(GetNodeData(nodeindex), triangle);\n        }\n\n\n        //public const GIM_BVH_TREE_NODE * get_node_pointer(int index = 0)\n        //{\n        //    return m_box_tree.get_node_pointer(index);\n        //}\n\n\n        public static float GetAverageTreeCollisionTime()\n        {\n            // no implementation?\n            return 0.0f;\n        }\n\n\n        public static void FindCollision(GImpactBvh boxset1, ref IndexedMatrix trans1,\n            GImpactBvh boxset2, ref IndexedMatrix trans2,\n            PairSet collision_pairs)\n        {\n            if (boxset1.GetNodeCount() == 0 || boxset2.GetNodeCount() == 0) return;\n\n            BT_BOX_BOX_TRANSFORM_CACHE trans_cache_1to0 = new BT_BOX_BOX_TRANSFORM_CACHE();\n\n            trans_cache_1to0.CalcFromHomogenic(ref trans1, ref trans2);\n\n#if TRI_COLLISION_PROFILING\n\tbt_begin_gim02_tree_time();\n#endif //TRI_COLLISION_PROFILING\n\n            FindCollisionPairsRecursive(boxset1, boxset2, collision_pairs, trans_cache_1to0, 0, 0, true);\n#if TRI_COLLISION_PROFILING\n\tbt_end_gim02_tree_time();\n#endif //TRI_COLLISION_PROFILING\n\n\n        }\n\n        public static bool NodeCollision(\n            GImpactBvh boxset0, GImpactBvh boxset1,\n            ref BT_BOX_BOX_TRANSFORM_CACHE trans_cache_1to0,\n            int node0, int node1, bool complete_primitive_tests)\n        {\n            AABB box0;\n            boxset0.GetNodeBound(node0, out box0);\n            AABB box1;\n            boxset1.GetNodeBound(node1, out box1);\n\n            return box0.OverlappingTransCache(ref box1, ref trans_cache_1to0, complete_primitive_tests);\n            //\tbox1.appy_transform_trans_cache(trans_cache_1to0);\n            //\treturn box0.has_collision(box1);\n\n        }\n\n        public static void FindCollisionPairsRecursive(\n        GImpactBvh boxset0, GImpactBvh boxset1,\n        PairSet collision_pairs,\n        BT_BOX_BOX_TRANSFORM_CACHE trans_cache_1to0,\n        int node0, int node1, bool complete_primitive_tests)\n        {\n\n\n\n            if (NodeCollision(\n                boxset0, boxset1, ref trans_cache_1to0,\n                node0, node1, complete_primitive_tests) == false) return;//avoid colliding internal nodes\n\n            if (boxset0.IsLeafNode(node0))\n            {\n                if (boxset1.IsLeafNode(node1))\n                {\n                    // collision result\n                    collision_pairs.PushPair(\n                        boxset0.GetNodeData(node0), boxset1.GetNodeData(node1));\n                    return;\n                }\n                else\n                {\n\n                    //collide left recursive\n\n                    FindCollisionPairsRecursive(\n                                        boxset0, boxset1,\n                                        collision_pairs, trans_cache_1to0,\n                                        node0, boxset1.GetLeftNode(node1), false);\n\n                    //collide right recursive\n                    FindCollisionPairsRecursive(\n                                        boxset0, boxset1,\n                                        collision_pairs, trans_cache_1to0,\n                                        node0, boxset1.GetRightNode(node1), false);\n\n\n                }\n            }\n            else\n            {\n                if (boxset1.IsLeafNode(node1))\n                {\n\n                    //collide left recursive\n                    FindCollisionPairsRecursive(\n                                        boxset0, boxset1,\n                                        collision_pairs, trans_cache_1to0,\n                                        boxset0.GetLeftNode(node0), node1, false);\n\n\n                    //collide right recursive\n\n                    FindCollisionPairsRecursive(\n                                        boxset0, boxset1,\n                                        collision_pairs, trans_cache_1to0,\n                                        boxset0.GetRightNode(node0), node1, false);\n\n\n                }\n                else\n                {\n                    //collide left0 left1\n\n\n\n                    FindCollisionPairsRecursive(\n                        boxset0, boxset1,\n                        collision_pairs, trans_cache_1to0,\n                        boxset0.GetLeftNode(node0), boxset1.GetLeftNode(node1), false);\n\n                    //collide left0 right1\n\n                    FindCollisionPairsRecursive(\n                        boxset0, boxset1,\n                        collision_pairs, trans_cache_1to0,\n                        boxset0.GetLeftNode(node0), boxset1.GetRightNode(node1), false);\n\n\n                    //collide right0 left1\n\n                    FindCollisionPairsRecursive(\n                        boxset0, boxset1,\n                        collision_pairs, trans_cache_1to0,\n                        boxset0.GetRightNode(node0), boxset1.GetLeftNode(node1), false);\n\n                    //collide right0 right1\n\n                    FindCollisionPairsRecursive(\n                        boxset0, boxset1,\n                        collision_pairs, trans_cache_1to0,\n                        boxset0.GetRightNode(node0), boxset1.GetRightNode(node1), false);\n\n                }// else if node1 is not a leaf\n            }// else if node0 is not a leaf\n        }\n\n    }\n\n    public struct GIM_PAIR\n    {\n        public int m_index1;\n        public int m_index2;\n\n        public GIM_PAIR(ref GIM_PAIR p)\n        {\n            m_index1 = p.m_index1;\n            m_index2 = p.m_index2;\n        }\n\n        public GIM_PAIR(int index1, int index2)\n        {\n            m_index1 = index1;\n            m_index2 = index2;\n        }\n    }\n\n    //! A pairset array\n    public class PairSet : ObjectArray<GIM_PAIR>\n    {\n        public PairSet()\n            : base(32)\n        {\n\n        }\n\n        public void PushPair(int index1, int index2)\n        {\n            Add(new GIM_PAIR(index1, index2));\n        }\n\n        public void PushPairInv(int index1, int index2)\n        {\n            Add(new GIM_PAIR(index2, index1));\n        }\n    }\n\n    public struct GIM_BVH_DATA\n    {\n        public AABB m_bound;\n        public int m_data;\n    }\n\n\n    public class GIM_BVH_TREE_NODE\n    {\n        public AABB m_bound = new AABB();\n        protected int m_escapeIndexOrDataIndex;\n\n        public GIM_BVH_TREE_NODE()\n        {\n            m_escapeIndexOrDataIndex = 0;\n        }\n\n        public bool IsLeafNode()\n        {\n            //skipindex is negative (internal node), triangleindex >=0 (leafnode)\n            return (m_escapeIndexOrDataIndex >= 0);\n        }\n\n        public int GetEscapeIndex()\n        {\n            //btAssert(m_escapeIndexOrDataIndex < 0);\n            return -m_escapeIndexOrDataIndex;\n        }\n\n        public void SetEscapeIndex(int index)\n        {\n            m_escapeIndexOrDataIndex = -index;\n        }\n\n        public int GetDataIndex()\n        {\n            //btAssert(m_escapeIndexOrDataIndex >= 0);\n\n            return m_escapeIndexOrDataIndex;\n        }\n\n        public void SetDataIndex(int index)\n        {\n            m_escapeIndexOrDataIndex = index;\n        }\n\n    }\n\n    public class GIM_BVH_DATA_ARRAY : ObjectArray<GIM_BVH_DATA>\n    {\n        public GIM_BVH_DATA_ARRAY()\n        { }\n\n        public GIM_BVH_DATA_ARRAY(int reserve)\n            : base(reserve)\n        {\n\n        }\n    }\n\n\n    public class GIM_BVH_TREE_NODE_ARRAY : ObjectArray<GIM_BVH_TREE_NODE>\n    {\n    }\n\n\n    public class BvhTree\n    {\n        protected int m_num_nodes;\n        protected GIM_BVH_TREE_NODE_ARRAY m_node_array = new GIM_BVH_TREE_NODE_ARRAY();\n        protected int SortAndCalcSplittingIndex(\n            GIM_BVH_DATA_ARRAY primitive_boxes,\n             int startIndex, int endIndex, int splitAxis)\n        {\n            int i;\n            int splitIndex = startIndex;\n            int numIndices = endIndex - startIndex;\n\n            // average of centers\n            float splitValue = 0.0f;\n\n            IndexedVector3 means = IndexedVector3.Zero;\n            for (i = startIndex; i < endIndex; i++)\n            {\n                IndexedVector3 center = 0.5f * (primitive_boxes[i].m_bound.m_max +\n                             primitive_boxes[i].m_bound.m_min);\n                means += center;\n            }\n            means *= (1.0f) / (float)numIndices;\n\n            splitValue = means[splitAxis];\n\n\n            //sort leafNodes so all values larger then splitValue comes first, and smaller values start from 'splitIndex'.\n            for (i = startIndex; i < endIndex; i++)\n            {\n                IndexedVector3 center = 0.5f * (primitive_boxes[i].m_bound.m_max +\n                             primitive_boxes[i].m_bound.m_min);\n                if (center[splitAxis] > splitValue)\n                {\n                    //swap\n                    primitive_boxes.Swap(i, splitIndex);\n                    //swapLeafNodes(i,splitIndex);\n                    splitIndex++;\n                }\n            }\n\n            //if the splitIndex causes unbalanced trees, fix this by using the center in between startIndex and endIndex\n            //otherwise the tree-building might fail due to stack-overflows in certain cases.\n            //unbalanced1 is unsafe: it can cause stack overflows\n            //bool unbalanced1 = ((splitIndex==startIndex) || (splitIndex == (endIndex-1)));\n\n            //unbalanced2 should work too: always use center (perfect balanced trees)\n            //bool unbalanced2 = true;\n\n            //this should be safe too:\n            int rangeBalancedIndices = numIndices / 3;\n            bool unbalanced = ((splitIndex <= (startIndex + rangeBalancedIndices)) || (splitIndex >= (endIndex - 1 - rangeBalancedIndices)));\n\n            if (unbalanced)\n            {\n                splitIndex = startIndex + (numIndices >> 1);\n            }\n\n            Debug.Assert(!((splitIndex == startIndex) || (splitIndex == (endIndex))));\n\n            return splitIndex;\n\n\n        }\n\n        protected int CalcSplittingAxis(GIM_BVH_DATA_ARRAY primitive_boxes, int startIndex, int endIndex)\n        {\n            int i;\n\n            IndexedVector3 means = IndexedVector3.Zero;\n            IndexedVector3 variance = IndexedVector3.Zero;\n            int numIndices = endIndex - startIndex;\n\n            for (i = startIndex; i < endIndex; i++)\n            {\n                IndexedVector3 center = 0.5f * (primitive_boxes[i].m_bound.m_max +\n                             primitive_boxes[i].m_bound.m_min);\n                means += center;\n            }\n            means *= (1.0f) / (float)numIndices;\n\n            for (i = startIndex; i < endIndex; i++)\n            {\n                IndexedVector3 center = 0.5f * (primitive_boxes[i].m_bound.m_max +\n                             primitive_boxes[i].m_bound.m_min);\n                IndexedVector3 diff2 = center - means;\n                diff2 = diff2 * diff2;\n                variance += diff2;\n            }\n            variance *= (1.0f) / ((float)numIndices - 1);\n\n            return MathUtil.MaxAxis(ref variance);\n\n        }\n\n        protected void BuildSubTree(GIM_BVH_DATA_ARRAY primitive_boxes, int startIndex, int endIndex)\n        {\n            int curIndex = m_num_nodes;\n            m_num_nodes++;\n\n            Debug.Assert((endIndex - startIndex) > 0);\n\n            if ((endIndex - startIndex) == 1)\n            {\n                //We have a leaf node\n                SetNodeBound(curIndex, ref primitive_boxes.GetRawArray()[startIndex].m_bound);\n                m_node_array[curIndex].SetDataIndex(primitive_boxes[startIndex].m_data);\n\n                return;\n            }\n            //calculate Best Splitting Axis and where to split it. Sort the incoming 'leafNodes' array within range 'startIndex/endIndex'.\n\n            //split axis\n            int splitIndex = CalcSplittingAxis(primitive_boxes, startIndex, endIndex);\n\n            splitIndex = SortAndCalcSplittingIndex(\n                    primitive_boxes, startIndex, endIndex,\n                    splitIndex//split axis\n                    );\n\n\n            //calc this node bounding box\n\n            AABB node_bound = new AABB();\n            node_bound.Invalidate();\n\n            for (int i = startIndex; i < endIndex; i++)\n            {\n                node_bound.Merge(ref primitive_boxes.GetRawArray()[i].m_bound);\n            }\n\n            SetNodeBound(curIndex, ref node_bound);\n\n\n            //build left branch\n            BuildSubTree(primitive_boxes, startIndex, splitIndex);\n\n\n            //build right branch\n            BuildSubTree(primitive_boxes, splitIndex, endIndex);\n\n            m_node_array[curIndex].SetEscapeIndex(m_num_nodes - curIndex);\n        }\n\n        public BvhTree()\n        {\n            m_num_nodes = 0;\n        }\n\n        //! prototype functions for box tree management\n        //!@{\n        public void BuildTree(GIM_BVH_DATA_ARRAY primitive_boxes)\n        {\n            // initialize node count to 0\n            m_num_nodes = 0;\n            // allocate nodes\n            m_node_array.Capacity = (primitive_boxes.Count * 2);\n\n            // check this- should be capacity or count??\n            BuildSubTree(primitive_boxes, 0, primitive_boxes.Count);\n\n        }\n\n        public void ClearNodes()\n        {\n            m_node_array.Clear();\n            m_num_nodes = 0;\n        }\n\n        //! node count\n        public int GetNodeCount()\n        {\n            return m_num_nodes;\n        }\n\n        //! tells if the node is a leaf\n        public bool IsLeafNode(int nodeindex)\n        {\n            return m_node_array[nodeindex].IsLeafNode();\n        }\n\n        public int GetNodeData(int nodeindex)\n        {\n            return m_node_array[nodeindex].GetDataIndex();\n        }\n\n        public void GetNodeBound(int nodeindex, out AABB bound)\n        {\n            bound = m_node_array[nodeindex].m_bound;\n        }\n\n        public void SetNodeBound(int nodeindex, ref AABB bound)\n        {\n            m_node_array[nodeindex].m_bound = bound;\n        }\n\n        public int GetLeftNode(int nodeindex)\n        {\n            return nodeindex + 1;\n        }\n\n        public int GetRightNode(int nodeindex)\n        {\n            if (m_node_array[nodeindex + 1].IsLeafNode()) return nodeindex + 2;\n            return nodeindex + 1 + m_node_array[nodeindex + 1].GetEscapeIndex();\n        }\n\n        public int GetEscapeNodeIndex(int nodeindex)\n        {\n            return m_node_array[nodeindex].GetEscapeIndex();\n        }\n\n        //public const GIM_BVH_TREE_NODE * get_node_pointer(int index = 0)\n        //{\n        //    return &m_node_array[index];\n        //}\n\n        //!@}\n    }\n\n    public interface IPrimitiveManagerBase\n    {\n        void Cleanup();\n        //! determines if this manager consist on only triangles, which special case will be optimized\n        bool IsTrimesh();\n        int GetPrimitiveCount();\n        void GetPrimitiveBox(int prim_index, out AABB primbox);\n        //! retrieves only the points of the triangle, and the collision margin\n        void GetPrimitiveTriangle(int prim_index, PrimitiveTriangle triangle);\n    }\n\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/GImpact/BulletCollision/GImpactQuantization.cs",
    "content": "﻿/*\n * \n * C# / XNA  port of Bullet (c) 2011 Mark Neale <xexuxjy@hotmail.com>\n *\nThis source file is part of GIMPACT Library.\n\nFor the latest info, see http://gimpact.sourceforge.net/\n\nCopyright (c) 2007 Francisco Leon Najera. C.C. 80087371.\nemail: projectileman@yahoo.com\n\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose,\nincluding commercial applications, and to alter it and redistribute it freely,\nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n/*! \\file btQuantization.h\n*\\author Francisco Len Nßjera\n\n*/\n/*\nThis source file is part of GIMPACT Library.\n\nFor the latest info, see http://gimpact.sourceforge.net/\n\nCopyright (c) 2007 Francisco Leon Najera. C.C. 80087371.\nemail: projectileman@yahoo.com\n\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose,\nincluding commercial applications, and to alter it and redistribute it freely,\nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\nusing BulletXNA.LinearMath;\n\nnamespace BulletXNA.BulletCollision\n{\n    public class GImpactQuantization\n    {\n\n        public static void CalcQuantizationParameters(\n        out IndexedVector3 outMinBound,\n        out IndexedVector3 outMaxBound,\n        out IndexedVector3 bvhQuantization,\n        ref IndexedVector3 srcMinBound, ref IndexedVector3 srcMaxBound,\n        float quantizationMargin)\n        {\n            //enlarge the AABB to avoid division by zero when initializing the quantization values\n            IndexedVector3 clampValue = new IndexedVector3(quantizationMargin);\n            outMinBound = srcMinBound - clampValue;\n            outMaxBound = srcMaxBound + clampValue;\n            IndexedVector3 aabbSize = outMaxBound - outMinBound;\n            bvhQuantization = new IndexedVector3(65535.0f) / aabbSize;\n        }\n\n\n        public static void QuantizeClamp(out UShortVector3 output,\n            ref IndexedVector3 point,\n            ref IndexedVector3 min_bound,\n            ref IndexedVector3 max_bound,\n            ref IndexedVector3 bvhQuantization)\n        {\n\n            IndexedVector3 clampedPoint = point;\n            MathUtil.VectorMax(ref min_bound, ref clampedPoint);\n            MathUtil.VectorMin(ref max_bound, ref clampedPoint);\n\n            IndexedVector3 v = (clampedPoint - min_bound) * bvhQuantization;\n            output = new UShortVector3();\n            output[0] = (ushort)(v.X + 0.5f);\n            output[1] = (ushort)(v.Y + 0.5f);\n            output[2] = (ushort)(v.Z + 0.5f);\n        }\n\n\n        public static IndexedVector3 Unquantize(\n        ref UShortVector3 vecIn,\n        ref IndexedVector3 offset,\n        ref IndexedVector3 bvhQuantization)\n        {\n            IndexedVector3 vecOut = new IndexedVector3(\n                (float)(vecIn[0]) / (bvhQuantization.X),\n                (float)(vecIn[1]) / (bvhQuantization.Y),\n                (float)(vecIn[2]) / (bvhQuantization.Z));\n            vecOut += offset;\n            return vecOut;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/GImpact/BulletCollision/GImpactQuantizedBvh.cs",
    "content": "﻿/*\n * \n * C# / XNA  port of Bullet (c) 2011 Mark Neale <xexuxjy@hotmail.com>\n *\nThis source file is part of GIMPACT Library.\n\nFor the latest info, see http://gimpact.sourceforge.net/\n\nCopyright (c) 2007 Francisco Leon Najera. C.C. 80087371.\nemail: projectileman@yahoo.com\n\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose,\nincluding commercial applications, and to alter it and redistribute it freely,\nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\nusing System.Diagnostics;\nusing BulletXNA.LinearMath;\nusing System.IO;\nusing System;\n\nnamespace BulletXNA.BulletCollision\n{\n    public delegate float? ProcessCollisionHandler(int triangleIndex);\n\n    public class GImpactQuantizedBvh\n    {\n\n        protected QuantizedBvhTree m_box_tree;\n        protected IPrimitiveManagerBase m_primitive_manager;\n        protected int m_size = 0;\n\n        static bool QuantizedNodeCollision(\n            GImpactQuantizedBvh boxset0, GImpactQuantizedBvh boxset1,\n            BT_BOX_BOX_TRANSFORM_CACHE trans_cache_1to0,\n            int node0, int node1, bool complete_primitive_tests)\n        {\n            AABB box0;\n            boxset0.GetNodeBound(node0, out box0);\n            AABB box1;\n            boxset1.GetNodeBound(node1, out box1);\n\n            return box0.OverlappingTransCache(ref box1, ref trans_cache_1to0, complete_primitive_tests);\n            //\tbox1.appy_transform_trans_cache(trans_cache_1to0);\n            //\treturn box0.has_collision(box1);\n\n        }\n\n        public byte[] Save()\n        {\n            return m_box_tree.Save();\n        }\n\n        public int Size\n        {\n            get { return m_size; }\n        }\n\n\n        public void Load(byte[] byteArray)\n        {\n            m_box_tree.Load(byteArray);\n            m_size = byteArray.Length;\n        }\n\n        //stackless refit\n        //protected void Refit()\n        //{\n        //    int nodecount = GetNodeCount();\n        //    while (nodecount-- != 0)\n        //    {\n        //        if (IsLeafNode(nodecount))\n        //        {\n        //            AABB leafbox;\n        //            m_primitive_manager.GetPrimitiveBox(GetNodeData(nodecount), out leafbox);\n        //            SetNodeBound(nodecount, ref leafbox);\n        //        }\n        //        else\n        //        {\n        //            //const GIM_BVH_TREE_NODE * nodepointer = get_node_pointer(nodecount);\n        //            //get left bound\n        //            AABB bound = new AABB();\n        //            bound.Invalidate();\n\n        //            AABB temp_box;\n\n        //            int child_node = GetLeftNode(nodecount);\n        //            if (child_node != 0)\n        //            {\n        //                GetNodeBound(child_node, out temp_box);\n        //                bound.Merge(ref temp_box);\n        //            }\n\n        //            child_node = GetRightNode(nodecount);\n        //            if (child_node != 0)\n        //            {\n        //                GetNodeBound(child_node, out temp_box);\n        //                bound.Merge(ref temp_box);\n        //            }\n\n        //            SetNodeBound(nodecount, ref bound);\n        //        }\n        //    }\n        //}\n\n        //! this constructor doesn't build the tree. you must call\tbuildSet\n        public GImpactQuantizedBvh()\n        {\n            m_box_tree = new QuantizedBvhTree();\n        }\n\n        //! this constructor doesn't build the tree. you must call\tbuildSet\n        public GImpactQuantizedBvh(IPrimitiveManagerBase primitive_manager)\n        {\n            m_primitive_manager = primitive_manager;\n            m_box_tree = new QuantizedBvhTree();\n        }\n\n        public AABB GetGlobalBox()\n        {\n            AABB totalbox;\n            GetNodeBound(0, out totalbox);\n            return totalbox;\n        }\n\n        public void SetPrimitiveManager(IPrimitiveManagerBase primitive_manager)\n        {\n            m_primitive_manager = primitive_manager;\n        }\n\n        public IPrimitiveManagerBase GetPrimitiveManager()\n        {\n            return m_primitive_manager;\n        }\n\n\n        //! node manager prototype functions\n        ///@{\n\n        //! this attemps to refit the box set.\n        //public void Update()\n        //{\n        //    Refit();\n        //}\n\n        //! this rebuild the entire set\n        public void BuildSet()\n        {\n            //obtain primitive boxes\n            int listSize = m_primitive_manager.GetPrimitiveCount();\n            GIM_BVH_DATA_ARRAY primitive_boxes = new GIM_BVH_DATA_ARRAY(listSize);\n            // forces boxes to be allocated\n            primitive_boxes.Resize(listSize);\n\n            GIM_BVH_DATA[] rawArray = primitive_boxes.GetRawArray();\n            for (int i = 0; i < listSize; i++)\n            {\n                m_primitive_manager.GetPrimitiveBox(i, out rawArray[i].m_bound);\n                rawArray[i].m_data = i;\n            }\n\n            m_box_tree.BuildTree(primitive_boxes);\n\n        }\n\n        //! returns the indices of the primitives in the m_primitive_manager\n        public bool BoxQuery(ref AABB box, ObjectArray<int> collided_results)\n        {\n            return BoxQuery(ref box, collided_results, false);\n        }\n        public bool BoxQuery(ref AABB box, ObjectArray<int> collided_results, bool graphics)\n        {\n            int curIndex = 0;\n            int numNodes = GetNodeCount();\n\n            if (BulletGlobals.g_streamWriter != null && BulletGlobals.debugGimpactBVH && !graphics)\n            {\n                BulletGlobals.g_streamWriter.WriteLine(\"QIQBVH BoxQuery [{0}]\", numNodes);\n            }\n\n            //quantize box\n\n            UShortVector3 quantizedMin;\n            UShortVector3 quantizedMax;\n\n            m_box_tree.QuantizePoint(out quantizedMin, ref box.m_min);\n            m_box_tree.QuantizePoint(out quantizedMax, ref box.m_max);\n\n\n            while (curIndex < numNodes)\n            {\n\n                //catch bugs in tree data\n\n                bool aabbOverlap = m_box_tree.TestQuantizedBoxOverlap(curIndex, ref quantizedMin, ref quantizedMax);\n                bool isLeafNode = IsLeafNode(curIndex);\n\n\n                if (BulletGlobals.g_streamWriter != null && BulletGlobals.debugGimpactBVH && !graphics)\n                {\n                    BulletGlobals.g_streamWriter.WriteLine(\"QIQBVH BoxQuery [{0}] o[{1}] l[{2}]\", curIndex, aabbOverlap ? 1 : 0, isLeafNode ? 1 : 0);\n                }\n\n                if (isLeafNode && aabbOverlap)\n                {\n                    foreach (var i in GetNodeData(curIndex))\n                    {\n                        collided_results.Add(i);\n                    }\n                }\n\n                if (aabbOverlap || isLeafNode)\n                {\n                    //next subnode\n                    curIndex++;\n                }\n                else\n                {\n                    //skip node\n                    curIndex += GetEscapeNodeIndex(curIndex);\n                }\n            }\n            if (collided_results.Count > 0) return true;\n            return false;\n        }\n\n        //! returns the indices of the primitives in the m_primitive_manager\n        public bool BoxQueryTrans(ref AABB box,\n             ref IndexedMatrix transform, ObjectArray<int> collided_results)\n        {\n            AABB transbox = box;\n            transbox.ApplyTransform(ref transform);\n            return BoxQuery(ref transbox, collided_results);\n        }\n\n        public bool RayQueryClosest(ref IndexedVector3 ray_dir, ref IndexedVector3 ray_origin, ProcessCollisionHandler handler)\n        {\n            int curIndex = 0;\n            int numNodes = GetNodeCount();\n            float distance = float.PositiveInfinity;\n\n            while (curIndex < numNodes)\n            {\n                AABB bound;\n                GetNodeBound(curIndex, out bound);\n\n                //catch bugs in tree data\n\n                float? aabbDist = bound.CollideRayDistance(ref ray_origin, ref ray_dir);\n                bool isLeafNode = IsLeafNode(curIndex);\n                bool aabbOverlapSignificant = aabbDist.HasValue && aabbDist.Value < distance;\n\n                if (aabbOverlapSignificant && isLeafNode)\n                {\n                    foreach (var i in GetNodeData(curIndex))\n                    {\n                        float? newDist = handler(i);\n                        if (newDist.HasValue && newDist.Value < distance)\n                        {\n                            distance = newDist.Value;\n                        }\n                    }\n                }\n\n                if (aabbOverlapSignificant || isLeafNode)\n                {\n                    //next subnode\n                    curIndex++;\n                }\n                else\n                {\n                    //skip node\n                    curIndex += GetEscapeNodeIndex(curIndex);\n                }\n            }\n            return distance != float.PositiveInfinity;\n        }\n\n        //! returns the indices of the primitives in the m_primitive_manager\n        public bool RayQuery(ref IndexedVector3 ray_dir, ref IndexedVector3 ray_origin,\n            ObjectArray<int> collided_results)\n        {\n            int curIndex = 0;\n            int numNodes = GetNodeCount();\n\n            while (curIndex < numNodes)\n            {\n                AABB bound;\n                GetNodeBound(curIndex, out bound);\n\n                //catch bugs in tree data\n\n                bool aabbOverlap = bound.CollideRay(ref ray_origin, ref ray_dir);\n                bool isLeafNode = IsLeafNode(curIndex);\n\n                if (isLeafNode && aabbOverlap)\n                {\n                    foreach (var i in GetNodeData(curIndex))\n                    {\n                        collided_results.Add(i);\n                    }\n                }\n\n                if (aabbOverlap || isLeafNode)\n                {\n                    //next subnode\n                    curIndex++;\n                }\n                else\n                {\n                    //skip node\n                    curIndex += GetEscapeNodeIndex(curIndex);\n                }\n            }\n            if (collided_results.Count > 0) return true;\n            return false;\n        }\n\n        //! tells if this set has hierarcht\n        public bool HasHierarchy()\n        {\n            return true;\n        }\n\n        //! tells if this set is a trimesh\n        public bool IsTrimesh()\n        {\n            return m_primitive_manager.IsTrimesh();\n        }\n\n        //! node count\n        public int GetNodeCount()\n        {\n            return m_box_tree.GetNodeCount();\n        }\n\n        //! tells if the node is a leaf\n        public bool IsLeafNode(int nodeindex)\n        {\n            return m_box_tree.IsLeafNode(nodeindex);\n        }\n\n        public int[] GetNodeData(int nodeindex)\n        {\n            return m_box_tree.GetNodeData(nodeindex);\n        }\n\n        public void GetNodeBound(int nodeindex, out AABB bound)\n        {\n            m_box_tree.GetNodeBound(nodeindex, out bound);\n        }\n\n        public void SetNodeBound(int nodeindex, ref AABB bound)\n        {\n            m_box_tree.SetNodeBound(nodeindex, ref bound);\n        }\n\n\n        public int GetLeftNode(int nodeindex)\n        {\n            return m_box_tree.GetLeftNode(nodeindex);\n        }\n\n        public int GetRightNode(int nodeindex)\n        {\n            return m_box_tree.GetRightNode(nodeindex);\n        }\n\n        public int GetEscapeNodeIndex(int nodeindex)\n        {\n            return m_box_tree.GetEscapeNodeIndex(nodeindex);\n        }\n\n        //public void GetNodeTriangle(int nodeindex, PrimitiveTriangle triangle)\n        //{\n        //    m_primitive_manager.GetPrimitiveTriangle(GetNodeData(nodeindex), triangle);\n        //}\n\n\n        //SIMD_FORCE_INLINE const BT_QUANTIZED_BVH_NODE * get_node_pointer(int index = 0) const\n        //{\n        //    return m_box_tree.get_node_pointer(index);\n        //}\n\n\n        public static float GetAverageTreeCollisionTime()\n        {\n            return 1.0f;\n        }\n\n\n        //public static void FindQuantizedCollisionPairsRecursive(\n        //    GImpactQuantizedBvh boxset0, GImpactQuantizedBvh boxset1,\n        //    PairSet collision_pairs,\n        //    ref BT_BOX_BOX_TRANSFORM_CACHE trans_cache_1to0,\n        //    int node0, int node1, bool complete_primitive_tests)\n        //{\n\n\n\n        //    if (QuantizedNodeCollision(\n        //        boxset0, boxset1, trans_cache_1to0,\n        //        node0, node1, complete_primitive_tests) == false) return;//avoid colliding internal nodes\n\n        //    if (boxset0.IsLeafNode(node0))\n        //    {\n        //        if (boxset1.IsLeafNode(node1))\n        //        {\n        //            // collision result\n        //            collision_pairs.PushPair(boxset0.GetNodeData(node0), boxset1.GetNodeData(node1));\n        //            return;\n        //        }\n        //        else\n        //        {\n\n        //            //collide left recursive\n\n        //            FindQuantizedCollisionPairsRecursive(\n        //                                boxset0, boxset1,\n        //                                collision_pairs, ref trans_cache_1to0,\n        //                                node0, boxset1.GetLeftNode(node1), false);\n\n        //            //collide right recursive\n        //            FindQuantizedCollisionPairsRecursive(\n        //                                boxset0, boxset1,\n        //                                collision_pairs, ref trans_cache_1to0,\n        //                                node0, boxset1.GetRightNode(node1), false);\n\n\n        //        }\n        //    }\n        //    else\n        //    {\n        //        if (boxset1.IsLeafNode(node1))\n        //        {\n\n        //            //collide left recursive\n        //            FindQuantizedCollisionPairsRecursive(\n        //                                boxset0, boxset1,\n        //                                collision_pairs, ref trans_cache_1to0,\n        //                                boxset0.GetLeftNode(node0), node1, false);\n\n\n        //            //collide right recursive\n\n        //            FindQuantizedCollisionPairsRecursive(\n        //                                boxset0, boxset1,\n        //                                collision_pairs, ref trans_cache_1to0,\n        //                                boxset0.GetRightNode(node0), node1, false);\n\n\n        //        }\n        //        else\n        //        {\n        //            //collide left0 left1\n\n\n\n        //            FindQuantizedCollisionPairsRecursive(\n        //                boxset0, boxset1,\n        //                collision_pairs, ref trans_cache_1to0,\n        //                boxset0.GetLeftNode(node0), boxset1.GetLeftNode(node1), false);\n\n        //            //collide left0 right1\n\n        //            FindQuantizedCollisionPairsRecursive(\n        //                boxset0, boxset1,\n        //                collision_pairs, ref trans_cache_1to0,\n        //                boxset0.GetLeftNode(node0), boxset1.GetRightNode(node1), false);\n\n\n        //            //collide right0 left1\n\n        //            FindQuantizedCollisionPairsRecursive(\n        //                boxset0, boxset1,\n        //                collision_pairs, ref trans_cache_1to0,\n        //                boxset0.GetRightNode(node0), boxset1.GetLeftNode(node1), false);\n\n        //            //collide right0 right1\n\n        //            FindQuantizedCollisionPairsRecursive(\n        //                boxset0, boxset1,\n        //                collision_pairs, ref trans_cache_1to0,\n        //                boxset0.GetRightNode(node0), boxset1.GetRightNode(node1), false);\n\n        //        }// else if node1 is not a leaf\n        //    }// else if node0 is not a leaf\n        //}\n\n\n//        public static void FindCollision(GImpactQuantizedBvh boxset0, ref IndexedMatrix trans0,\n//        GImpactQuantizedBvh boxset1, ref IndexedMatrix trans1,\n//        PairSet collision_pairs)\n//        {\n//            if (boxset0.GetNodeCount() == 0 || boxset1.GetNodeCount() == 0)\n//            {\n//                return;\n//            }\n\n//            BT_BOX_BOX_TRANSFORM_CACHE trans_cache_1to0 = new BT_BOX_BOX_TRANSFORM_CACHE();\n\n//            trans_cache_1to0.CalcFromHomogenic(ref trans0, ref trans1);\n\n//#if TRI_COLLISION_PROFILING\n//    BulletGlobals.StartProfile(\"GIMPACT-TRIMESH\");\n//#endif //TRI_COLLISION_PROFILING\n\n//            FindQuantizedCollisionPairsRecursive(boxset0, boxset1, collision_pairs, ref trans_cache_1to0, 0, 0, true);\n//#if TRI_COLLISION_PROFILING\n//    BulletGlobals.StopProfile();\n//#endif //TRI_COLLISION_PROFILING\n\n//        }\n    }\n\n    public class BT_QUANTIZED_BVH_NODE\n    {\n        //12 bytes\n        public UShortVector3 m_quantizedAabbMin;\n        public UShortVector3 m_quantizedAabbMax;\n        //4 bytes\n        public int[] m_escapeIndexOrDataIndex;\n        //public int[] m_indices;\n\n        public bool IsLeafNode()\n        {\n            //skipindex is negative (internal node), triangleindex >=0 (leafnode)\n            return (m_escapeIndexOrDataIndex[0] >= 0);\n        }\n\n        public int GetEscapeIndex()\n        {\n            //btAssert(m_escapeIndexOrDataIndex < 0);\n            return m_escapeIndexOrDataIndex == null ? 0 : - m_escapeIndexOrDataIndex[0];\n        }\n\n        public void SetEscapeIndex(int index)\n        {\n            m_escapeIndexOrDataIndex = new int[] { -index };\n        }\n\n        public void SetDataIndices(int[] indices)\n        {\n            m_escapeIndexOrDataIndex = indices;\n        }\n\n        public int[] GetDataIndices()\n        {\n            return m_escapeIndexOrDataIndex;\n        }\n\n        //public int GetDataIndex()\n        //{\n        //    //btAssert(m_escapeIndexOrDataIndex >= 0);\n\n        //    return m_escapeIndexOrDataIndex[0];\n        //}\n\n        //public void SetDataIndex(int index)\n        //{\n        //    m_escapeIndexOrDataIndex[0] = index;\n        //}\n\n        public bool TestQuantizedBoxOverlapp(ref UShortVector3 quantizedMin, ref UShortVector3 quantizedMax)\n        {\n            if (m_quantizedAabbMin.X > quantizedMax.X ||\n               m_quantizedAabbMax.X < quantizedMin.X ||\n               m_quantizedAabbMin.Y > quantizedMax.Y ||\n               m_quantizedAabbMax.Y < quantizedMin.Y ||\n               m_quantizedAabbMin.Z > quantizedMax.Z ||\n               m_quantizedAabbMax.Z < quantizedMin.Z)\n            {\n                return false;\n            }\n            return true;\n        }\n\n    }\n\n\n\n    public class GIM_QUANTIZED_BVH_NODE_ARRAY : ObjectArray<BT_QUANTIZED_BVH_NODE>\n    {\n        public GIM_QUANTIZED_BVH_NODE_ARRAY()\n        {\n        }\n\n        public GIM_QUANTIZED_BVH_NODE_ARRAY(int capacity)\n            : base(capacity)\n        {\n        }\n    }\n\n    //! Basic Box tree structure\n    public class QuantizedBvhTree\n    {\n        public const int MAX_INDICES_PER_NODE = 6;\n\n        protected int m_num_nodes;\n        protected GIM_QUANTIZED_BVH_NODE_ARRAY m_node_array;\n        protected AABB m_global_bound;\n        protected IndexedVector3 m_bvhQuantization;\n\n        static void WriteIndexedVector3(IndexedVector3 vector, BinaryWriter bw)\n        {\n            bw.Write(vector.X);\n            bw.Write(vector.Y);\n            bw.Write(vector.Z);\n        }\n\n        static IndexedVector3 ReadIndexedVector3(BinaryReader br)\n        {\n            return new IndexedVector3(br.ReadSingle(), br.ReadSingle(), br.ReadSingle());\n        }\n\n        static void WriteUShortVector3(UShortVector3 vector, BinaryWriter bw)\n        {\n            bw.Write(vector.X);\n            bw.Write(vector.Y);\n            bw.Write(vector.Z);\n        }\n\n        static UShortVector3 ReadUShortVector3(BinaryReader br)\n        {\n            var vec = new UShortVector3();\n            vec.X = br.ReadUInt16();\n            vec.Y = br.ReadUInt16();\n            vec.Z = br.ReadUInt16();\n            return vec;\n        }\n\n        public byte[] Save()\n        {\n            using (MemoryStream ms = new MemoryStream())\n            using (BinaryWriter bw = new BinaryWriter(ms))\n            {\n                bw.Write(m_num_nodes);\n                WriteIndexedVector3(m_global_bound.m_min, bw);\n                WriteIndexedVector3(m_global_bound.m_max, bw);\n                WriteIndexedVector3(m_bvhQuantization, bw);\n\n                for (int i = 0; i < m_num_nodes; i++)\n                {\n                    bw.Write((Int32)m_node_array[i].m_escapeIndexOrDataIndex.Length);\n                    for (int j = 0; j < m_node_array[i].m_escapeIndexOrDataIndex.Length; j++)\n                    {\n                        bw.Write((Int32)m_node_array[i].m_escapeIndexOrDataIndex[j]);\n                    }\n                    WriteUShortVector3(m_node_array[i].m_quantizedAabbMin, bw);\n                    WriteUShortVector3(m_node_array[i].m_quantizedAabbMax, bw);\n                }\n\n                return ms.ToArray();\n            }\n        }\n\n        public void Load(byte[] byteArray)\n        {\n            using (MemoryStream ms = new MemoryStream(byteArray))\n            using (BinaryReader br = new BinaryReader(ms))\n            {\n                m_num_nodes = br.ReadInt32();\n                var min = ReadIndexedVector3(br);\n                var max = ReadIndexedVector3(br);\n                m_global_bound = new AABB(ref min, ref max);\n                m_bvhQuantization = ReadIndexedVector3(br);\n\n                m_node_array = new GIM_QUANTIZED_BVH_NODE_ARRAY(m_num_nodes);\n                for (int i = 0; i < m_num_nodes; i++)\n                {\n                    int count = br.ReadInt32();\n\n                    BT_QUANTIZED_BVH_NODE node = new BT_QUANTIZED_BVH_NODE();\n                    node.m_escapeIndexOrDataIndex = new int[count];\n                    for (int j = 0; j < count; j++)\n                    {\n                        node.m_escapeIndexOrDataIndex[j] = br.ReadInt32();\n                    }\n                    node.m_quantizedAabbMin = ReadUShortVector3(br);\n                    node.m_quantizedAabbMax = ReadUShortVector3(br);\n                    m_node_array.Add(node);\n                }\n            }\n        }\n\n        protected void CalcQuantization(GIM_BVH_DATA_ARRAY primitive_boxes)\n        {\n            CalcQuantization(primitive_boxes, 1.0f);\n        }\n        protected void CalcQuantization(GIM_BVH_DATA_ARRAY primitive_boxes, float boundMargin)\n        {\n            //calc globa box\n            AABB global_bound = new AABB();\n            global_bound.Invalidate();\n\n            int count = primitive_boxes.Count;\n            for (int i = 0; i < count; i++)\n            {\n                global_bound.Merge(ref primitive_boxes.GetRawArray()[i].m_bound);\n            }\n\n            GImpactQuantization.CalcQuantizationParameters(out m_global_bound.m_min, out m_global_bound.m_max, out m_bvhQuantization, ref global_bound.m_min, ref global_bound.m_max, boundMargin);\n\n        }\n\n        protected int SortAndCalcSplittingIndex(GIM_BVH_DATA_ARRAY primitive_boxes, int startIndex, int endIndex, int splitAxis)\n        {\n            int i;\n            int splitIndex = startIndex;\n            int numIndices = endIndex - startIndex;\n\n            // average of centers\n            float splitValue = 0.0f;\n\n            IndexedVector3 means = IndexedVector3.Zero;\n            for (i = startIndex; i < endIndex; i++)\n            {\n                IndexedVector3 center = 0.5f * (primitive_boxes[i].m_bound.m_max +\n                             primitive_boxes[i].m_bound.m_min);\n                means += center;\n            }\n            means *= ((1.0f) / (float)numIndices);\n\n            splitValue = means[splitAxis];\n\n\n            //sort leafNodes so all values larger then splitValue comes first, and smaller values start from 'splitIndex'.\n            for (i = startIndex; i < endIndex; i++)\n            {\n                IndexedVector3 center = 0.5f * (primitive_boxes[i].m_bound.m_max +\n                             primitive_boxes[i].m_bound.m_min);\n                if (center[splitAxis] > splitValue)\n                {\n                    //swap\n                    primitive_boxes.Swap(i, splitIndex);\n                    //swapLeafNodes(i,splitIndex);\n                    splitIndex++;\n                }\n            }\n\n            //if the splitIndex causes unbalanced trees, fix this by using the center in between startIndex and endIndex\n            //otherwise the tree-building might fail due to stack-overflows in certain cases.\n            //unbalanced1 is unsafe: it can cause stack overflows\n            //bool unbalanced1 = ((splitIndex==startIndex) || (splitIndex == (endIndex-1)));\n\n            //unbalanced2 should work too: always use center (perfect balanced trees)\n            //bool unbalanced2 = true;\n\n            //this should be safe too:\n            int rangeBalancedIndices = numIndices / 3;\n            bool unbalanced = ((splitIndex <= (startIndex + rangeBalancedIndices)) || (splitIndex >= (endIndex - 1 - rangeBalancedIndices)));\n\n            if (unbalanced)\n            {\n                splitIndex = startIndex + (numIndices >> 1);\n            }\n\n            Debug.Assert(!((splitIndex == startIndex) || (splitIndex == (endIndex))));\n\n            return splitIndex;\n\n\n        }\n\n        protected int CalcSplittingAxis(GIM_BVH_DATA_ARRAY primitive_boxes, int startIndex, int endIndex)\n        {\n            int i;\n\n            IndexedVector3 means = IndexedVector3.Zero;\n            IndexedVector3 variance = IndexedVector3.Zero;\n            int numIndices = endIndex - startIndex;\n\n            for (i = startIndex; i < endIndex; i++)\n            {\n                IndexedVector3 center = 0.5f * (primitive_boxes[i].m_bound.m_max +\n                             primitive_boxes[i].m_bound.m_min);\n                means += center;\n            }\n            means *= (1.0f / (float)numIndices);\n\n            for (i = startIndex; i < endIndex; i++)\n            {\n                IndexedVector3 center = 0.5f * (primitive_boxes[i].m_bound.m_max +\n                             primitive_boxes[i].m_bound.m_min);\n                IndexedVector3 diff2 = center - means;\n                diff2 = diff2 * diff2;\n                variance += diff2;\n            }\n            variance *= (1.0f) / ((float)numIndices - 1);\n\n            return MathUtil.MaxAxis(ref variance);\n        }\n\n        protected void BuildSubTree(GIM_BVH_DATA_ARRAY primitive_boxes, int startIndex, int endIndex)\n        {\n            int curIndex = m_num_nodes;\n            m_num_nodes++;\n\n            Debug.Assert((endIndex - startIndex) > 0);\n\n            if ((endIndex - startIndex) <= MAX_INDICES_PER_NODE)\n            {\n                //We have a leaf node\n                int count = endIndex - startIndex;\n                int[] indices = new int[count];\n                AABB bounds = new AABB();\n                bounds.Invalidate();\n\n                for (int i = 0; i < count; i++)\n                {\n                    indices[i] = primitive_boxes[startIndex + i].m_data;\n                    bounds.Merge(primitive_boxes.GetRawArray()[startIndex + i].m_bound);\n                }\n                SetNodeBound(curIndex, ref bounds);\n                m_node_array[curIndex].SetDataIndices(indices);\n\n                if (BulletGlobals.g_streamWriter != null && BulletGlobals.debugGimpactBVH)\n                {\n                    BulletGlobals.g_streamWriter.WriteLine(\"bst curIndex[{0}] dataIndex[{1}]\", curIndex, primitive_boxes[startIndex].m_data);\n                    MathUtil.PrintVector3(BulletGlobals.g_streamWriter, \"bst min\", primitive_boxes[startIndex].m_bound.m_min);\n                    MathUtil.PrintVector3(BulletGlobals.g_streamWriter, \"bst max\", primitive_boxes[startIndex].m_bound.m_max);\n                }\n\n                return;\n            }\n            //calculate Best Splitting Axis and where to split it. Sort the incoming 'leafNodes' array within range 'startIndex/endIndex'.\n\n            //split axis\n            int splitIndex = CalcSplittingAxis(primitive_boxes, startIndex, endIndex);\n\n            splitIndex = SortAndCalcSplittingIndex(\n                    primitive_boxes, startIndex, endIndex,\n                    splitIndex//split axis\n                    );\n\n\n            //calc this node bounding box\n\n            AABB node_bound = new AABB();\n            node_bound.Invalidate();\n\n            for (int i = startIndex; i < endIndex; i++)\n            {\n                node_bound.Merge(ref primitive_boxes.GetRawArray()[i].m_bound);\n            }\n\n            SetNodeBound(curIndex, ref node_bound);\n\n\n            //build left branch\n            BuildSubTree(primitive_boxes, startIndex, splitIndex);\n\n\n            //build right branch\n            BuildSubTree(primitive_boxes, splitIndex, endIndex);\n\n            m_node_array.GetRawArray()[curIndex].SetEscapeIndex(m_num_nodes - curIndex);\n\n            if (BulletGlobals.g_streamWriter != null && BulletGlobals.debugGimpactBVH)\n            {\n                BulletGlobals.g_streamWriter.WriteLine(\"bst curIndex[{0}] escapeIndex[{1}]\", curIndex, m_node_array.GetRawArray()[curIndex].GetEscapeIndex());\n                MathUtil.PrintVector3(BulletGlobals.g_streamWriter, \"bst node min\", node_bound.m_min);\n                MathUtil.PrintVector3(BulletGlobals.g_streamWriter, \"bst node max\", node_bound.m_max);\n            }\n\n\n        }\n\n        public QuantizedBvhTree()\n        {\n            m_num_nodes = 0;\n            m_node_array = new GIM_QUANTIZED_BVH_NODE_ARRAY();\n        }\n\n        public QuantizedBvhTree(int defaultCapacity)\n        {\n            m_num_nodes = 0;\n            m_node_array = new GIM_QUANTIZED_BVH_NODE_ARRAY(defaultCapacity);\n        }\n\n        //! prototype functions for box tree management\n        //!@{\n        public void BuildTree(GIM_BVH_DATA_ARRAY primitive_boxes)\n        {\n            CalcQuantization(primitive_boxes);\n            // initialize node count to 0\n            m_num_nodes = 0;\n            // allocate nodes\n            m_node_array.Resize(primitive_boxes.Count * 2);\n\n            BuildSubTree(primitive_boxes, 0, primitive_boxes.Count);\n        }\n\n        public void QuantizePoint(out UShortVector3 quantizedpoint, ref IndexedVector3 point)\n        {\n            GImpactQuantization.QuantizeClamp(out quantizedpoint, ref point, ref m_global_bound.m_min, ref m_global_bound.m_max, ref m_bvhQuantization);\n        }\n\n\n        public bool TestQuantizedBoxOverlap(int node_index, ref UShortVector3 quantizedMin, ref UShortVector3 quantizedMax)\n        {\n            return m_node_array[node_index].TestQuantizedBoxOverlapp(ref quantizedMin, ref quantizedMax);\n        }\n\n        public void ClearNodes()\n        {\n            m_node_array.Clear();\n            m_num_nodes = 0;\n        }\n\n        //! node count\n        public int GetNodeCount()\n        {\n            return m_num_nodes;\n        }\n\n        //! tells if the node is a leaf\n        public bool IsLeafNode(int nodeindex)\n        {\n            return m_node_array[nodeindex].IsLeafNode();\n        }\n\n        public int[] GetNodeData(int nodeindex)\n        {\n            return m_node_array[nodeindex].GetDataIndices();\n        }\n\n        public void GetNodeBound(int nodeindex, out AABB bound)\n        {\n            bound.m_min = GImpactQuantization.Unquantize(\n                ref m_node_array.GetRawArray()[nodeindex].m_quantizedAabbMin,\n                ref m_global_bound.m_min, ref m_bvhQuantization);\n\n            bound.m_max = GImpactQuantization.Unquantize(\n                ref m_node_array.GetRawArray()[nodeindex].m_quantizedAabbMax,\n                ref m_global_bound.m_min, ref m_bvhQuantization);\n        }\n\n        public void SetNodeBound(int nodeindex, ref AABB bound)\n        {\n            GImpactQuantization.QuantizeClamp(out m_node_array.GetRawArray()[nodeindex].m_quantizedAabbMin,\n                                ref bound.m_min,\n                                ref m_global_bound.m_min,\n                                ref m_global_bound.m_max,\n                                ref m_bvhQuantization);\n\n            GImpactQuantization.QuantizeClamp(out m_node_array.GetRawArray()[nodeindex].m_quantizedAabbMax,\n                                ref bound.m_max,\n                                ref m_global_bound.m_min,\n                                ref m_global_bound.m_max,\n                                ref m_bvhQuantization);\n        }\n\n        public int GetLeftNode(int nodeindex)\n        {\n            return nodeindex + 1;\n        }\n\n        public int GetRightNode(int nodeindex)\n        {\n            if (m_node_array[nodeindex + 1].IsLeafNode()) return nodeindex + 2;\n            return nodeindex + 1 + m_node_array[nodeindex + 1].GetEscapeIndex();\n        }\n\n        public int GetEscapeNodeIndex(int nodeindex)\n        {\n            return m_node_array[nodeindex].GetEscapeIndex();\n        }\n\n        //public const BT_QUANTIZED_BVH_NODE * get_node_pointer(int index = 0)\n        //{\n        //    return &m_node_array[index];\n        //}\n\n        //!@}\n    }\n\n\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/GImpact/BulletCollision/GeometeryOperations.cs",
    "content": "/*\n * \n * C# / XNA  port of Bullet (c) 2011 Mark Neale <xexuxjy@hotmail.com>\n *\nThis source file is part of GIMPACT Library.\n\nFor the latest info, see http://gimpact.sourceforge.net/\n\nCopyright (c) 2007 Francisco Leon Najera. C.C. 80087371.\nemail: projectileman@yahoo.com\n\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose,\nincluding commercial applications, and to alter it and redistribute it freely,\nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\nusing MinerWarsMath;\nusing BulletXNA.LinearMath;\n\nnamespace BulletXNA.BulletCollision\n{\n    public class GeometeryOperations\n    {\n        public static void bt_edge_plane(ref IndexedVector3 e1, ref IndexedVector3 e2, ref IndexedVector3 normal, out Vector4 plane)\n        {\n            IndexedVector3 planenormal = (e2-e1).Cross(ref normal);\n            planenormal.Normalize();\n            plane = new Vector4(planenormal.ToVector3(), e2.Dot(ref planenormal));\n        }\n\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/GImpact/BulletCollision/TriangleShapeEx.cs",
    "content": "/*\n * \n * C# / XNA  port of Bullet (c) 2011 Mark Neale <xexuxjy@hotmail.com>\n *\nThis source file is part of GIMPACT Library.\n\nFor the latest info, see http://gimpact.sourceforge.net/\n\nCopyright (c) 2007 Francisco Leon Najera. C.C. 80087371.\nemail: projectileman@yahoo.com\n\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose,\nincluding commercial applications, and to alter it and redistribute it freely,\nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\nusing BulletXNA.LinearMath;\nusing MinerWarsMath;\n\nnamespace BulletXNA.BulletCollision\n{\n    //! Structure for collision\n    public class GIM_TRIANGLE_CONTACT\n    {\n        public const int MAX_TRI_CLIPPING = 16;\n\n        public float m_penetration_depth;\n        public int m_point_count;\n        public Vector4 m_separating_normal;\n        public IndexedVector3[] m_points = new IndexedVector3[MAX_TRI_CLIPPING];\n\n        public void CopyFrom(GIM_TRIANGLE_CONTACT other)\n        {\n            m_penetration_depth = other.m_penetration_depth;\n            m_separating_normal = other.m_separating_normal;\n            m_point_count = other.m_point_count;\n            int i = m_point_count;\n            while (i-- != 0)\n            {\n                m_points[i] = other.m_points[i];\n            }\n        }\n\n        public GIM_TRIANGLE_CONTACT()\n        {\n        }\n\n        public GIM_TRIANGLE_CONTACT(GIM_TRIANGLE_CONTACT other)\n        {\n            CopyFrom(other);\n        }\n\n        //! classify points that are closer\n        public void MergePoints(ref Vector4 plane, float margin, ObjectArray<IndexedVector3> points, int point_count)\n        {\n            m_point_count = 0;\n            m_penetration_depth = -1000.0f;\n\n            int[] point_indices = new int[MAX_TRI_CLIPPING];\n\n            int _k;\n\n            for (_k = 0; _k < point_count; _k++)\n            {\n                float _dist = -ClipPolygon.DistancePointPlane(ref plane, ref points.GetRawArray()[_k]) + margin;\n\n                if (_dist >= 0.0f)\n                {\n                    if (_dist > m_penetration_depth)\n                    {\n                        m_penetration_depth = _dist;\n                        point_indices[0] = _k;\n                        m_point_count = 1;\n                    }\n                    else if ((_dist + MathUtil.SIMD_EPSILON) >= m_penetration_depth)\n                    {\n                        point_indices[m_point_count] = _k;\n                        m_point_count++;\n                    }\n                }\n            }\n\n            for (_k = 0; _k < m_point_count; _k++)\n            {\n                m_points[_k] = points[point_indices[_k]];\n            }\n        }\n\n    }\n\n    public class PrimitiveTriangle\n    {\n        public IndexedVector3[] m_vertices = new IndexedVector3[3];\n        public Vector4 m_plane;\n        public float m_margin;\n        //float m_dummy;\n        public PrimitiveTriangle()\n        {\n            m_margin = 0.01f;\n        }\n\n\n        public void BuildTriPlane()\n        {\n            IndexedVector3 normal = IndexedVector3.Cross(m_vertices[1] - m_vertices[0], m_vertices[2] - m_vertices[0]);\n            normal.Normalize();\n            m_plane = new Vector4(normal.ToVector3(), IndexedVector3.Dot(m_vertices[0], normal));\n        }\n\n        //! Test if triangles could collide\n        public bool OverlapTestConservative(PrimitiveTriangle other)\n        {\n            float total_margin = m_margin + other.m_margin;\n            // classify points on other triangle\n            float dis0 = ClipPolygon.DistancePointPlane(ref m_plane, ref other.m_vertices[0]) - total_margin;\n\n            float dis1 = ClipPolygon.DistancePointPlane(ref m_plane, ref other.m_vertices[1]) - total_margin;\n\n            float dis2 = ClipPolygon.DistancePointPlane(ref m_plane, ref other.m_vertices[2]) - total_margin;\n\n            if (dis0 > 0.0f && dis1 > 0.0f && dis2 > 0.0f) return false;\n\n            // classify points on this triangle\n            dis0 = ClipPolygon.DistancePointPlane(ref other.m_plane, ref m_vertices[0]) - total_margin;\n\n            dis1 = ClipPolygon.DistancePointPlane(ref other.m_plane, ref m_vertices[1]) - total_margin;\n\n            dis2 = ClipPolygon.DistancePointPlane(ref other.m_plane, ref m_vertices[2]) - total_margin;\n\n            if (dis0 > 0.0f && dis1 > 0.0f && dis2 > 0.0f) return false;\n\n            return true;\n\n        }\n\n        //! Calcs the plane which is paralele to the edge and perpendicular to the triangle plane\n        /*!\n        \\pre this triangle must have its plane calculated.\n        */\n        public void GetEdgePlane(int edge_index, out Vector4 plane)\n        {\n            IndexedVector3 e0 = m_vertices[edge_index];\n            IndexedVector3 e1 = m_vertices[(edge_index + 1) % 3];\n            IndexedVector3 planeNormal = new IndexedVector3(m_plane.X, m_plane.Y, m_plane.Z);\n            GeometeryOperations.bt_edge_plane(ref e0, ref e1, ref planeNormal, out plane);\n        }\n\n        public void ApplyTransform(ref IndexedMatrix t)\n        {\n            IndexedVector3.Transform(m_vertices, ref t, m_vertices);\n        }\n\n        //! Clips the triangle against this\n        /*!\n        \\pre clipped_points must have MAX_TRI_CLIPPING size, and this triangle must have its plane calculated.\n        \\return the number of clipped points\n        */\n        public int ClipTriangle(PrimitiveTriangle other, ObjectArray<IndexedVector3> clipped_points)\n        {\n            // edge 0\n\n            ObjectArray<IndexedVector3> temp_points = new ObjectArray<IndexedVector3>(GIM_TRIANGLE_CONTACT.MAX_TRI_CLIPPING);\n\n            Vector4 edgeplane;\n\n            GetEdgePlane(0, out edgeplane);\n\n\n            int clipped_count = ClipPolygon.PlaneClipTriangle(ref edgeplane, ref other.m_vertices[0], ref other.m_vertices[1], ref other.m_vertices[2], temp_points);\n\n            if (clipped_count == 0)\n            {\n                return 0;\n            }\n\n            ObjectArray<IndexedVector3> temp_points1 = new ObjectArray<IndexedVector3>(GIM_TRIANGLE_CONTACT.MAX_TRI_CLIPPING);\n\n\n            // edge 1\n            GetEdgePlane(1, out edgeplane);\n\n\n            clipped_count = ClipPolygon.PlaneClipPolygon(ref edgeplane, temp_points, clipped_count, temp_points1);\n\n            if (clipped_count == 0)\n            {\n                return 0;\n            }\n\n            // edge 2\n            GetEdgePlane(2, out edgeplane);\n\n            clipped_count = ClipPolygon.PlaneClipPolygon(ref edgeplane, temp_points1, clipped_count, clipped_points);\n\n            return clipped_count;\n\n        }\n\n        //! Find collision using the clipping method\n        /*!\n        \\pre this triangle and other must have their triangles calculated\n        */\n        public bool FindTriangleCollisionClipMethod(PrimitiveTriangle other, GIM_TRIANGLE_CONTACT contacts)\n        {\n            float margin = m_margin + other.m_margin;\n\n            ObjectArray<IndexedVector3> clipped_points = new ObjectArray<IndexedVector3>(GIM_TRIANGLE_CONTACT.MAX_TRI_CLIPPING);\n\n            int clipped_count;\n            //create planes\n            // plane v vs U points\n\n            GIM_TRIANGLE_CONTACT contacts1 = new GIM_TRIANGLE_CONTACT();\n\n            contacts1.m_separating_normal = m_plane;\n\n            clipped_count = ClipTriangle(other, clipped_points);\n\n            if (clipped_count == 0)\n            {\n                return false;//Reject\n            }\n\n            //find most deep interval face1\n            contacts1.MergePoints(ref contacts1.m_separating_normal, margin, clipped_points, clipped_count);\n            if (contacts1.m_point_count == 0)\n            {\n                return false; // too far\n            }\n            //Normal pointing to this triangle\n            contacts1.m_separating_normal *= -1.0f;\n\n\n            //Clip tri1 by tri2 edges\n            GIM_TRIANGLE_CONTACT contacts2 = new GIM_TRIANGLE_CONTACT();\n            contacts2.m_separating_normal = other.m_plane;\n\n            clipped_count = other.ClipTriangle(this, clipped_points);\n\n            if (clipped_count == 0)\n            {\n                return false;//Reject\n            }\n\n            //find most deep interval face1\n            contacts2.MergePoints(ref contacts2.m_separating_normal, margin, clipped_points, clipped_count);\n            if (contacts2.m_point_count == 0)\n            {\n                return false; // too far\n            }\n\n            ////check most dir for contacts\n            if (contacts2.m_penetration_depth < contacts1.m_penetration_depth)\n            {\n                contacts.CopyFrom(contacts2);\n            }\n            else\n            {\n                contacts.CopyFrom(contacts1);\n            }\n            return true;\n\n        }\n    }\n\n\n\n    //! Helper class for colliding Bullet Triangle Shapes\n    /*!\n    This class implements a better getAabb method than the previous btTriangleShape class\n    */\n    //public class TriangleShapeEx : TriangleShape\n    //{\n    //    public TriangleShapeEx()\n    //        : base(IndexedVector3.Zero, IndexedVector3.Zero, IndexedVector3.Zero)\n    //    {\n    //    }\n\n    //    public TriangleShapeEx(ref IndexedVector3 p0, ref IndexedVector3 p1, ref IndexedVector3 p2)\n    //        : base(ref p0, ref p1, ref p2)\n    //    {\n    //    }\n\n    //    public TriangleShapeEx(TriangleShapeEx other)\n    //        : base(ref other.m_vertices1[0], ref other.m_vertices1[1], ref other.m_vertices1[2])\n    //    {\n    //    }\n\n    //    public virtual void GetAabb(ref IndexedMatrix t, ref IndexedVector3 aabbMin, ref IndexedVector3 aabbMax)\n    //    {\n    //        IndexedVector3 tv0 = t * m_vertices1[0];\n    //        IndexedVector3 tv1 = t * m_vertices1[1];\n    //        IndexedVector3 tv2 = t * m_vertices1[2];\n\n    //        AABB trianglebox = new AABB(ref tv0, ref tv1, ref tv2, m_collisionMargin);\n    //        aabbMin = trianglebox.m_min;\n    //        aabbMax = trianglebox.m_max;\n    //    }\n\n    //    public void ApplyTransform(ref IndexedMatrix t)\n    //    {\n    //        IndexedVector3.Transform(m_vertices1, ref t, m_vertices1);\n    //    }\n\n    //    public void BuildTriPlane(out Vector4 plane)\n    //    {\n    //        IndexedVector3 normal = IndexedVector3.Cross(m_vertices1[1] - m_vertices1[0], m_vertices1[2] - m_vertices1[0]);\n    //        normal.Normalize();\n    //        plane = new Vector4(normal.ToVector3(), IndexedVector3.Dot(m_vertices1[0], normal));\n    //    }\n\n    //    public bool OverlapTestConservative(TriangleShapeEx other)\n    //    {\n    //        float total_margin = GetMargin() + other.GetMargin();\n\n    //        Vector4 plane0;\n    //        BuildTriPlane(out plane0);\n    //        Vector4 plane1;\n    //        other.BuildTriPlane(out plane1);\n\n    //        // classify points on other triangle\n    //        float dis0 = ClipPolygon.DistancePointPlane(ref plane0, ref other.m_vertices1[0]) - total_margin;\n\n    //        float dis1 = ClipPolygon.DistancePointPlane(ref plane0, ref other.m_vertices1[1]) - total_margin;\n\n    //        float dis2 = ClipPolygon.DistancePointPlane(ref plane0, ref other.m_vertices1[2]) - total_margin;\n\n    //        if (dis0 > 0.0f && dis1 > 0.0f && dis2 > 0.0f) return false;\n\n    //        // classify points on this triangle\n    //        dis0 = ClipPolygon.DistancePointPlane(ref plane1, ref m_vertices1[0]) - total_margin;\n\n    //        dis1 = ClipPolygon.DistancePointPlane(ref plane1, ref m_vertices1[1]) - total_margin;\n\n    //        dis2 = ClipPolygon.DistancePointPlane(ref plane1, ref m_vertices1[2]) - total_margin;\n\n    //        if (dis0 > 0.0f && dis1 > 0.0f && dis2 > 0.0f) return false;\n\n    //        return true;\n\n    //    }\n    //}\n\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/GImpact/BulletGlobalsFake.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.IO;\n\nnamespace BulletXNA.BulletCollision\n{\n    class BulletGlobals\n    {\n        public const bool debugGimpactBVH = false;\n\n        public static StreamWriter g_streamWriter;\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/GImpact/LinearMath/AabbUtil2.cs",
    "content": "﻿/*\n * C# / XNA  port of Bullet (c) 2011 Mark Neale <xexuxjy@hotmail.com>\n *\n * Bullet Continuous Collision Detection and Physics Library\n * Copyright (c) 2003-2008 Erwin Coumans  http://www.bulletphysics.com/\n *\n * This software is provided 'as-is', without any express or implied warranty.\n * In no event will the authors be held liable for any damages arising from\n * the use of this software.\n * \n * Permission is granted to anyone to use this software for any purpose, \n * including commercial applications, and to alter it and redistribute it\n * freely, subject to the following restrictions:\n * \n * 1. The origin of this software must not be misrepresented; you must not\n *    claim that you wrote the original software. If you use this software\n *    in a product, an acknowledgment in the product documentation would be\n *    appreciated but is not required.\n * 2. Altered source versions must be plainly marked as such, and must not be\n *    misrepresented as being the original software.\n * 3. This notice may not be removed or altered from any source distribution.\n */\n\nusing System;\nusing System.Diagnostics;\nusing BulletXNA.LinearMath;\n\nnamespace BulletXNA\n{\n    public static class AabbUtil2\n    {\n        public static void AabbExpand(ref IndexedVector3 aabbMin,\n                                   ref IndexedVector3 aabbMax,\n                                   ref IndexedVector3 expansionMin,\n                                   ref IndexedVector3 expansionMax)\n        {\n            aabbMin = aabbMin + expansionMin;\n            aabbMax = aabbMax + expansionMax;\n        }\n\n        /// conservative test for overlap between two aabbs\n        public static bool TestPointAgainstAabb2(ref IndexedVector3 aabbMin1, ref IndexedVector3 aabbMax1, ref IndexedVector3 point)\n        {\n            bool overlap = true;\n            overlap = (aabbMin1.X > point.X || aabbMax1.X < point.X) ? false : overlap;\n            overlap = (aabbMin1.Z > point.Z || aabbMax1.Z < point.Z) ? false : overlap;\n            overlap = (aabbMin1.Y > point.Y || aabbMax1.Y < point.Y) ? false : overlap;\n            return overlap;\n        }\n\n\n        /// conservative test for overlap between two aabbs\n        public static bool TestAabbAgainstAabb2(ref IndexedVector3 aabbMin1, ref IndexedVector3 aabbMax1,\n                                        ref IndexedVector3 aabbMin2, ref IndexedVector3 aabbMax2)\n        {\n            bool overlap = true;\n            overlap = (aabbMin1.X > aabbMax2.X || aabbMax1.X < aabbMin2.X) ? false : overlap;\n            overlap = (aabbMin1.Z > aabbMax2.Z || aabbMax1.Z < aabbMin2.Z) ? false : overlap;\n            overlap = (aabbMin1.Y > aabbMax2.Y || aabbMax1.Y < aabbMin2.Y) ? false : overlap;\n            return overlap;\n        }\n\n        /// conservative test for overlap between triangle and aabb\n        public static bool TestTriangleAgainstAabb2(ref IndexedVector3 vertices0, ref IndexedVector3 vertices1, ref IndexedVector3 vertices2,\n                                            ref IndexedVector3 aabbMin, ref IndexedVector3 aabbMax)\n        {\n            if (Math.Min(Math.Min(vertices0.X, vertices1.X), vertices2.X) > aabbMax.X) return false;\n            if (Math.Max(Math.Max(vertices0.X, vertices1.X), vertices2.X) < aabbMin.X) return false;\n\n            if (Math.Min(Math.Min(vertices0.Z, vertices1.Z), vertices2.Z) > aabbMax.Z) return false;\n            if (Math.Max(Math.Max(vertices0.Z, vertices1.Z), vertices2.Z) < aabbMin.Z) return false;\n\n            if (Math.Min(Math.Min(vertices0.Y, vertices1.Y), vertices2.Y) > aabbMax.Y) return false;\n            if (Math.Max(Math.Max(vertices0.Y, vertices1.Y), vertices2.Y) < aabbMin.Y) return false;\n            return true;\n        }\n\n\n        //public static bool TestTriangleAgainstAabb2(IList<IndexedVector3> vertices,\n        //                            ref IndexedVector3 aabbMin, ref IndexedVector3 aabbMax)\n        //{\n        //    if (Math.Min(Math.Min(vertices[0].X, vertices[1].X), vertices[2].X) > aabbMax.X) return false;\n        //    if (Math.Max(Math.Max(vertices[0].X, vertices[1].X), vertices[2].X) < aabbMin.X) return false;\n\n        //    if (Math.Min(Math.Min(vertices[0].Z, vertices[1].Z), vertices[2].Z) > aabbMax.Z) return false;\n        //    if (Math.Max(Math.Max(vertices[0].Z, vertices[1].Z), vertices[2].Z) < aabbMin.Z) return false;\n\n        //    if (Math.Min(Math.Min(vertices[0].Y, vertices[1].Y), vertices[2].Y) > aabbMax.Y) return false;\n        //    if (Math.Max(Math.Max(vertices[0].Y, vertices[1].Y), vertices[2].Y) < aabbMin.Y) return false;\n        //    return true;\n        //}\n\n\n\n\n        public static int Outcode(ref IndexedVector3 p, ref IndexedVector3 halfExtent)\n        {\n            return (p.X < -halfExtent.X ? 0x01 : 0x0) |\n                   (p.X > halfExtent.X ? 0x08 : 0x0) |\n                   (p.Y < -halfExtent.Y ? 0x02 : 0x0) |\n                   (p.Y > halfExtent.Y ? 0x10 : 0x0) |\n                   (p.Z < -halfExtent.Z ? 0x4 : 0x0) |\n                   (p.Z > halfExtent.Z ? 0x20 : 0x0);\n        }\n\n\n\n        public static bool RayAabb2(ref IndexedVector3 rayFrom,\n                                  ref IndexedVector3 rayInvDirection,\n                                  bool[] raySign,\n                                  IndexedVector3[] bounds,\n                                  out float tmin,\n                                  float lambda_min,\n                                  float lambda_max)\n        {\n            float tmax, tymin, tymax, tzmin, tzmax;\n            tmin = (bounds[raySign[0] ? 1 : 0].X - rayFrom.X) * rayInvDirection.X;\n            tmax = (bounds[1 - (raySign[0] ? 1 : 0)].X - rayFrom.X) * rayInvDirection.X;\n            tymin = (bounds[raySign[1] ? 1 : 0].Y - rayFrom.Y) * rayInvDirection.Y;\n            tymax = (bounds[1 - (raySign[1] ? 1 : 0)].Y - rayFrom.Y) * rayInvDirection.Y;\n\n            if ((tmin > tymax) || (tymin > tmax))\n                return false;\n\n            if (tymin > tmin)\n                tmin = tymin;\n\n            if (tymax < tmax)\n                tmax = tymax;\n\n            tzmin = (bounds[(raySign[2] ? 1 : 0)].Z - rayFrom.Z) * rayInvDirection.Z;\n            tzmax = (bounds[1 - (raySign[2] ? 1 : 0)].Z - rayFrom.Z) * rayInvDirection.Z;\n\n            if ((tmin > tzmax) || (tzmin > tmax))\n                return false;\n            if (tzmin > tmin)\n                tmin = tzmin;\n            if (tzmax < tmax)\n                tmax = tzmax;\n            return ((tmin < lambda_max) && (tmax > lambda_min));\n        }\n\n\n        public static bool RayAabb(IndexedVector3 rayFrom,\n                                    IndexedVector3 rayTo,\n                                    ref IndexedVector3 aabbMin,\n                                    ref IndexedVector3 aabbMax,\n                                    ref float param, out IndexedVector3 normal)\n        {\n            return RayAabb(ref rayFrom, ref rayTo, ref aabbMin, ref aabbMax, ref param, out normal);\n        }\n\n\n        public static bool RayAabb(ref IndexedVector3 rayFrom,\n                                    ref IndexedVector3 rayTo,\n                                    ref IndexedVector3 aabbMin,\n                                    ref IndexedVector3 aabbMax,\n                                    ref float param, out IndexedVector3 normal)\n        {\n            IndexedVector3 aabbHalfExtent = (aabbMax - aabbMin) * 0.5f;\n            IndexedVector3 aabbCenter = (aabbMax + aabbMin) * 0.5f;\n            IndexedVector3 source = rayFrom - aabbCenter;\n            IndexedVector3 target = rayTo - aabbCenter;\n            int sourceOutcode = Outcode(ref source, ref aabbHalfExtent);\n            int targetOutcode = Outcode(ref target, ref aabbHalfExtent);\n            if ((sourceOutcode & targetOutcode) == 0x0)\n            {\n                float lambda_enter = 0f;\n                float lambda_exit = param;\n                IndexedVector3 r = target - source;\n                int i;\n                float normSign = 1;\n                IndexedVector3 hitNormal = IndexedVector3.Zero;\n                int bit = 1;\n\n                for (int j = 0; j < 2; j++)\n                {\n                    for (i = 0; i != 3; ++i)\n                    {\n                        if ((sourceOutcode & bit) != 0)\n                        {\n                            float lambda = (-source[i] - aabbHalfExtent[i] * normSign) / r[i];\n\n                            if (lambda_enter <= lambda)\n                            {\n                                lambda_enter = lambda;\n                                hitNormal = IndexedVector3.Zero;\n                                hitNormal[i] = normSign;\n                            }\n                        }\n                        else if ((targetOutcode & bit) != 0)\n                        {\n                            float lambda = (-source[i] - aabbHalfExtent[i] * normSign) / r[i];\n                            lambda_exit = Math.Min(lambda_exit, lambda);\n                        }\n                        bit <<= 1;\n                    }\n                    normSign = -1f;\n                }\n                if (lambda_enter <= lambda_exit)\n                {\n                    param = lambda_enter;\n                    normal = hitNormal;\n                    return true;\n                }\n            }\n            param = 0f;\n            normal = IndexedVector3.Zero;\n            return false;\n        }\n\n        //This block replaces the block below and uses no branches, and replaces the 8 bit return with a 32 bit return for improved performance (~3x on XBox 360)\n        public static bool TestQuantizedAabbAgainstQuantizedAabb(ref UShortVector3 aabbMin1, ref UShortVector3 aabbMax1, ref UShortVector3 aabbMin2, ref UShortVector3 aabbMax2)\n        {\n            //return ((aabbMin1[0] <= aabbMax2[0]) && (aabbMax1[0] >= aabbMin2[0])\n            //    & (aabbMin1[2] <= aabbMax2[2]) && (aabbMax1[2] >= aabbMin2[2])\n            //    & (aabbMin1[1] <= aabbMax2[1]) && (aabbMax1[1] >= aabbMin2[1]));\n            //return (MathUtil.select(val,1, 0));\n\n            // MAN - Not sure why this version isn't just replaced by anding all of the above, it's still not conditional as theres a quick ref.\n            bool overlap = true;\n            overlap = (aabbMin1.X > aabbMax2.X || aabbMax1.X < aabbMin2.X) ? false : overlap;\n            overlap = (aabbMin1.Z > aabbMax2.Z || aabbMax1.Z < aabbMin2.Z) ? false : overlap;\n            overlap = (aabbMin1.Y > aabbMax2.Y || aabbMax1.Y < aabbMin2.Y) ? false : overlap;\n            return overlap;\n        }\n\n        public static void TransformAabb(IndexedVector3 halfExtents, float margin, ref IndexedMatrix t, out IndexedVector3 aabbMinOut, out IndexedVector3 aabbMaxOut)\n        {\n            TransformAabb(ref halfExtents, margin, ref t, out aabbMinOut, out aabbMaxOut);\n        }\n\n        public static void TransformAabb(ref IndexedVector3 halfExtents, float margin, ref IndexedMatrix t, out IndexedVector3 aabbMinOut, out IndexedVector3 aabbMaxOut)\n        {\n            IndexedVector3 halfExtentsWithMargin = halfExtents + new IndexedVector3(margin);\n            IndexedBasisMatrix  abs_b = t._basis.Absolute();\n            IndexedVector3 center = t._origin;\n\n            IndexedVector3 extent = new IndexedVector3(abs_b[0].Dot(ref halfExtentsWithMargin),\n                                                        abs_b[1].Dot(ref halfExtentsWithMargin),\n                                                        abs_b[2].Dot(ref halfExtentsWithMargin));\n\n            aabbMinOut = center - extent;\n            aabbMaxOut = center + extent;\n        }\n\n        public static void TransformAabb(IndexedVector3 localAabbMin, IndexedVector3 localAabbMax, float margin, ref IndexedMatrix trans, out IndexedVector3 aabbMinOut, out IndexedVector3 aabbMaxOut)\n        {\n            Debug.Assert(localAabbMin.X <= localAabbMax.X);\n            Debug.Assert(localAabbMin.Y <= localAabbMax.Y);\n            Debug.Assert(localAabbMin.Z <= localAabbMax.Z);\n            IndexedVector3 localHalfExtents = -.5f * (localAabbMax - localAabbMin);\n            localHalfExtents += new IndexedVector3(margin);\n\n            IndexedVector3 localCenter = 0.5f * (localAabbMax + localAabbMin);\n            IndexedBasisMatrix abs_b = trans._basis.Absolute();\n            IndexedVector3 center = trans * localCenter;\n\n            IndexedVector3 extent = new IndexedVector3(abs_b[0].Dot(ref localHalfExtents),\n                                                        abs_b[1].Dot(ref localHalfExtents),\n                                                        abs_b[2].Dot(ref localHalfExtents));\n\n            aabbMinOut = center - extent;\n            aabbMaxOut = center + extent;\n        }\n\n        public static void TransformAabb(ref IndexedVector3 localAabbMin, ref IndexedVector3 localAabbMax, float margin, ref IndexedMatrix trans, out IndexedVector3 aabbMinOut, out IndexedVector3 aabbMaxOut)\n        {\n            Debug.Assert(localAabbMin.X <= localAabbMax.X);\n            Debug.Assert(localAabbMin.Y <= localAabbMax.Y);\n            Debug.Assert(localAabbMin.Z <= localAabbMax.Z);\n            IndexedVector3 localHalfExtents = 0.5f * (localAabbMax - localAabbMin);\n            localHalfExtents += new IndexedVector3(margin);\n\n            IndexedVector3 localCenter = 0.5f * (localAabbMax + localAabbMin);\n            IndexedBasisMatrix abs_b = trans._basis.Absolute();\n            IndexedVector3 center = trans * localCenter;\n\n            IndexedVector3 extent = new IndexedVector3(abs_b[0].Dot(ref localHalfExtents),\n                                                        abs_b[1].Dot(ref localHalfExtents),\n                                                        abs_b[2].Dot(ref localHalfExtents));\n\n            aabbMinOut = center - extent;\n            aabbMaxOut = center + extent;\n        }\n    }\n}"
  },
  {
    "path": "Sources/CommonLIB/AppCode/GImpact/LinearMath/ConvexHull.cs",
    "content": "﻿/*\n * \n * * C# / XNA  port of Bullet (c) 2011 Mark Neale <xexuxjy@hotmail.com>\n \nStan Melax Convex Hull Computation\nCopyright (c) 2003-2006 Stan Melax http://www.melax.com/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\nusing System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing MinerWarsMath;\n\nnamespace BulletXNA.LinearMath\n{\n\n    //#include <string.h>\n\n    //#include \"btConvexHull.h\"\n    //#include \"LinearMath/List.h\"\n    //#include \"LinearMath/btMinMax.h\"\n    //#include \"LinearMath/IndexedVector3.h\"\n\n    public class ConvexHull\n    {\n    }\n\n\n\n    //template <class T>\n    //void Swap(T &a,T &b)\n    //{\n    //    T tmp = a;\n    //    a=b;\n    //    b=tmp;\n    //}\n\n\n    //----------------------------------\n\n    public class int3\n    {\n        public int x, y, z;\n        public int3()\n        {\n        }\n        public int3(int _x, int _y, int _z)\n        {\n            x = _x;\n            y = _y;\n            z = _z;\n        }\n\n        public override bool Equals(object obj)\n        {\n            int3 b = (int3)obj;\n            if (x != b.x || y != b.y || z != b.z)\n            {\n                return false;\n            }\n            return true;\n        }\n\n        public override int GetHashCode()\n        {\n            unchecked\n            {\n                int result = x.GetHashCode();\n                result = (result * 397) ^ y.GetHashCode();\n                result = (result * 397) ^ z.GetHashCode();\n                return result;\n            }\n        }\n\n        public int At(int index)\n        {\n            if (index == 0) return x;\n            if (index == 1) return y;\n            if (index == 2) return z;\n            return -1;\n        }\n\n        public void At(int index, int value)\n        {\n            if (index == 0) x = value;\n            else if (index == 1) y = value;\n            else if (index == 2) z = value;\n        }\n\n\n    }\n\n    public class int4\n    {\n        public int x, y, z, w;\n        public int4() { }\n        public int4(int _x, int _y, int _z, int _w) { x = _x; y = _y; z = _z; w = _w; }\n        public int At(int index)\n        {\n            if (index == 0) return x;\n            if (index == 1) return y;\n            if (index == 2) return z;\n            if (index == 3) return w;\n            return -1;\n        }\n\n        public void At(int index, int value)\n        {\n            if (index == 0)\n            {\n                x = value;\n            }\n            else if (index == 1)\n            {\n                y = value;\n            }\n            else if (index == 2)\n            {\n                z = value;\n            }\n            else if (index == 3)\n            {\n                w = value;\n            }\n        }\n    }\n\n    //------- Plane ----------\n\n\n    //public static Plane PlaneFlip(Plane &plane){return Plane(-plane.normal,-plane.dist);}\n    //inline int operator==( Plane &a, Plane &b ) { return (a.normal==b.normal && a.dist==b.dist); }\n    //inline int coplanar( Plane &a, Plane &b ) { return (a==b || a==PlaneFlip(b)); }\n\n\n    //--------- Utility Functions ------\n\n    //IndexedVector3  PlaneLineIntersection(Plane plane, IndexedVector3 p0, IndexedVector3 p1);\n    //IndexedVector3  PlaneProject(Plane plane, IndexedVector3 point);\n\n    //IndexedVector3  ThreePlaneIntersection(Plane p0,Plane p1, Plane p2);\n\n    //float   DistanceBetweenLines(ref IndexedVector3 ustart, ref IndexedVector3 udir, ref IndexedVector3 vstart, ref IndexedVector3 vdir, IndexedVector3 *upoint=NULL, IndexedVector3 *vpoint=NULL);\n    //IndexedVector3  TriNormal(ref IndexedVector3 v0, ref IndexedVector3 v1, ref IndexedVector3 v2);\n    //IndexedVector3  NormalOf(IndexedVector3 *vert, int n);\n\n\n    [Flags]\n    public enum PlaneIntersectType\n    {\n        COPLANAR = 0, //(0)\n        UNDER = 1,  //(1)\n        OVER = 2,  //(2)\n        SPLIT = 3 //(OVER|UNDER)\n    }\n\n    public enum HullError\n    {\n        QE_OK,            // success!\n        QE_FAIL           // failed.\n    }\n\n    //typedef ConvexH::HalfEdge HalfEdge;\n\n\n    public class ConvexH\n    {\n        public class HalfEdge\n        {\n            public short ea;         // the other half of the edge (index into edges list)\n            public byte v;  // the vertex at the start of this edge (index into vertices list)\n            public byte p;  // the facet on which this edge lies (index into facets list)\n            public HalfEdge() { }\n            HalfEdge(short _ea, byte _v, byte _p)\n            {\n                ea = _ea;\n                v = _v;\n                p = _p;\n            }\n        }\n        ConvexH()\n        {\n        }\n        public IList<IndexedVector3> vertices = new ObjectArray<IndexedVector3>();\n        public IList<HalfEdge> edges = new ObjectArray<HalfEdge>();\n        public IList<Plane> facets = new ObjectArray<Plane>();\n\n        public ConvexH(int vertices_size, int edges_size, int facets_size)\n        {\n            //vertices.Capacity = vertices_size;\n            //edges.Capacity = edges_size;\n            //facets.Capacity = facets_size;\n        }\n    }\n\n\n\n\n\n    public class VertFlag\n    {\n        public byte planetest;\n        public byte junk;\n        public byte undermap;\n        public byte overmap;\n    }\n\n    public class EdgeFlag\n    {\n        public byte planetest;\n        public byte fixes;\n        public short undermap;\n        public short overmap;\n    }\n\n    public class PlaneFlag\n    {\n        public byte undermap;\n        public byte overmap;\n    }\n\n    public class Coplanar\n    {\n        public ushort ea;\n        public byte v0;\n        public byte v1;\n    }\n\n    public class HullResult\n    {\n        public HullResult()\n        {\n            mPolygons = true;\n            mNumOutputVertices = 0;\n            mNumFaces = 0;\n            mNumIndices = 0;\n        }\n        public bool mPolygons;                  // true if indices represents polygons, false indices are triangles\n        public int mNumOutputVertices;         // number of vertices in the output hull\n        public IList<IndexedVector3> m_OutputVertices = new List<IndexedVector3>();            // array of vertices\n        public int mNumFaces;                  // the number of faces produced\n        public int mNumIndices;                // the total number of indices\n        public IList<int> m_Indices = new List<int>();                   // pointer to indices.\n\n        // If triangles, then indices are array indexes into the vertex list.\n        // If polygons, indices are in the form (number of points in face) (p1, p2, p3, ..) etc..\n    }\n\n\n    public class PHullResult\n    {\n        public PHullResult()\n        {\n            mVcount = 0;\n            mIndexCount = 0;\n            mFaceCount = 0;\n        }\n\n        public int mVcount;\n        public int mIndexCount;\n        public int mFaceCount;\n        public IList<IndexedVector3> mVertices = new List<IndexedVector3>();\n        public IList<int> m_Indices = new List<int>();\n    }\n\n    [Flags]\n    public enum HullFlag\n    {\n        QF_TRIANGLES = (1 << 0),             // report results as triangles, not polygons.\n        QF_REVERSE_ORDER = (1 << 1),             // reverse order of the triangle indices.\n    }\n\n    public class HullDesc\n    {\n        public HullDesc()\n        {\n            mFlags = HullFlag.QF_TRIANGLES;\n            mVcount = 0;\n            //mVertices       = 0;\n            //mVertexStride   = sizeof(btVector3);\n            mNormalEpsilon = 0.001f;\n            mMaxVertices = 4096; // maximum number of points to be considered for a convex hull.\n            mMaxFaces = 4096;\n        }\n\n        public HullDesc(HullFlag flag,\n             int vcount,\n             IList<IndexedVector3> vertices)\n        {\n            mFlags = flag;\n            mVcount = vcount;\n            mVertices = vertices;\n            //mVertexStride   = stride;\n            mNormalEpsilon = 0.001f;\n            mMaxVertices = 4096;\n        }\n\n        public bool HasHullFlag(HullFlag flag)\n        {\n            return ((mFlags & flag) != 0);\n        }\n\n        void SetHullFlag(HullFlag flag)\n        {\n            mFlags |= flag;\n        }\n\n        void ClearHullFlag(HullFlag flag)\n        {\n            mFlags &= ~flag;\n        }\n\n        public HullFlag mFlags;           // flags to use when generating the convex hull.\n        public int mVcount;          // number of vertices in the input point cloud\n        public IList<IndexedVector3> mVertices = new List<IndexedVector3>();        // the array of vertices.\n        public int mVertexStride;    // the stride of each vertex, in bytes.\n        public float mNormalEpsilon;   // the epsilon for removing duplicates.  This is a normalized value, if normalized bit is on.\n        public int mMaxVertices;     // maximum number of vertices to be considered for the hull!\n        public int mMaxFaces;\n    }\n\n\n\n\n\n\n\n    //int operator ==(int3 &a,int3 &b);\n    //int operator ==(int3 &a,int3 &b) \n    //{\n    //    for(int i=0;i<3;i++) \n    //    {\n    //        if(a[i]!=b[i]) return 0;\n    //    }\n    //    return 1;\n    //}\n\n\n    //int above(IndexedVector3* vertices,int3& t, ref IndexedVector3 p, float epsilon);\n\n    public class HullTriangle : int3\n    {\n        public int3 n;\n        public int id;\n        public int vmax;\n        public float rise;\n\n        public HullTriangle(int a, int b, int c)\n            : base(a, b, c)\n        {\n            n = new int3(-1, -1, -1);\n            vmax = -1;\n            rise = 0.0f;\n        }\n\n        public int Neib(int a, int b)\n        {\n            int er = -1;\n            int i;\n            for (i = 0; i < 3; i++)\n            {\n                int i1 = (i + 1) % 3;\n                int i2 = (i + 2) % 3;\n                if ((At(i) == a && At(i1) == b)) return n.At(i2);\n                if ((At(i) == b && At(i1) == a)) return n.At(i2);\n            }\n            Debug.Assert(false);\n            return er;\n        }\n\n        public void Neib(int a, int b, int value)\n        {\n            int i;\n            for (i = 0; i < 3; i++)\n            {\n                int i1 = (i + 1) % 3;\n                int i2 = (i + 2) % 3;\n                if ((At(i) == a && At(i1) == b))\n                {\n                    n.At(i2, value);\n                    break;\n                }\n                if ((At(i) == b && At(i1) == a))\n                {\n                    n.At(i2, value);\n                    break;\n                }\n            }\n        }\n\n    }\n\n    public class HullLibrary\n    {\n        public static int MaxDirFiltered(IList<IndexedVector3> p, int count, ref IndexedVector3 dir, IList<int> allow)\n        {\n            Debug.Assert(count != 0);\n            int m = -1;\n            for (int i = 0; i < count; i++)\n            {\n                if (allow[i] != 0)\n                {\n                    if (m == -1 || IndexedVector3.Dot(p[i], dir) > IndexedVector3.Dot(p[m], dir))\n                        m = i;\n                }\n            }\n            Debug.Assert(m != -1);\n            return m;\n        }\n\n        public static IndexedVector3 Orth(ref IndexedVector3 v)\n        {\n            IndexedVector3 a = IndexedVector3.Cross(v, new IndexedVector3(0, 0, 1));\n            IndexedVector3 b = IndexedVector3.Cross(v, new IndexedVector3(0, 1, 0));\n            if (a.Length() > b.Length())\n            {\n                return IndexedVector3.Normalize(a);\n            }\n            else\n            {\n                return IndexedVector3.Normalize(b);\n            }\n        }\n        public static int MaxDirSterId(IList<IndexedVector3> p, int count, IndexedVector3 dir, IList<int> allow)\n        {\n            return MaxDirSterId(p, count, ref dir, allow);\n        }\n\n        public static int MaxDirSterId(IList<IndexedVector3> p, int count, ref IndexedVector3 dir, IList<int> allow)\n        {\n            int m = -1;\n            while (m == -1)\n            {\n                m = MaxDirFiltered(p, count, ref dir, allow);\n                if (allow[m] == 3) return m;\n                IndexedVector3 u = Orth(ref dir);\n                IndexedVector3 v = IndexedVector3.Cross(u, dir);\n                int ma = -1;\n                for (float x = 0.0f; x <= 360.0f; x += 45.0f)\n                {\n                    float s = (float)Math.Sin(MathUtil.SIMD_RADS_PER_DEG * (x));\n                    float c = (float)Math.Cos(MathUtil.SIMD_RADS_PER_DEG * (x));\n                    IndexedVector3 adjustedDir = dir + (u * s + v * c) * 0.025f;\n                    int mb = MaxDirFiltered(p, count, ref adjustedDir, allow);\n                    if (ma == m && mb == m)\n                    {\n                        allow[m] = 3;\n                        return m;\n                    }\n                    if (ma != -1 && ma != mb)  // Yuck - this is really ugly\n                    {\n                        int mc = ma;\n                        for (float xx = x - 40.0f; xx <= x; xx += 5.0f)\n                        {\n                            float s1 = (float)Math.Sin(MathUtil.SIMD_RADS_PER_DEG * (xx));\n                            float c1 = (float)Math.Cos(MathUtil.SIMD_RADS_PER_DEG * (xx));\n                            IndexedVector3 adjustedDir2 = dir + (u * s1 + v * c1) * 0.025f;\n                            int md = MaxDirFiltered(p, count, ref adjustedDir2, allow);\n                            if (mc == m && md == m)\n                            {\n                                allow[m] = 3;\n                                return m;\n                            }\n                            mc = md;\n                        }\n                    }\n                    ma = mb;\n                }\n                allow[m] = 0;\n                m = -1;\n            }\n            Debug.Assert(false);\n            return m;\n        }\n\n        public bool Above(IList<IndexedVector3> vertices, int3 t, IndexedVector3 p, float epsilon)\n        {\n            return Above(vertices, t, ref p, epsilon);\n        }\n\n        public bool Above(IList<IndexedVector3> vertices, int3 t, ref IndexedVector3 p, float epsilon)\n        {\n            IndexedVector3 n = HullLibrary.TriNormal(vertices[t.At(0)], vertices[t.At(1)], vertices[t.At(2)]);\n            return (IndexedVector3.Dot(n, p - vertices[t.At(0)]) > epsilon); // EPSILON???\n        }\n\n        public bool HasEdge(int3 t, int a, int b)\n        {\n            for (int i = 0; i < 3; i++)\n            {\n                int i1 = (i + 1) % 3;\n                if (t.At(i) == a && t.At(i1) == b) return true;\n            }\n            return false;\n        }\n\n        public bool HasVert(int3 t, int v)\n        {\n            return (t.At(0) == v || t.At(1) == v || t.At(2) == v);\n        }\n\n        public int ShareEdge(int3 a, int3 b)\n        {\n            int i;\n            for (i = 0; i < 3; i++)\n            {\n                int i1 = (i + 1) % 3;\n                if (HasEdge(a, b.At(i1), b.At(i))) return 1;\n            }\n            return 0;\n        }\n\n        public void B2bFix(HullTriangle s, HullTriangle t)\n        {\n            for (int i = 0; i < 3; i++)\n            {\n                int i1 = (i + 1) % 3;\n                int i2 = (i + 2) % 3;\n                int a = s.At(i1);\n                int b = s.At(i2);\n                Debug.Assert(m_tris[s.Neib(a, b)].Neib(b, a) == s.id);\n                Debug.Assert(m_tris[t.Neib(a, b)].Neib(b, a) == t.id);\n                m_tris[s.Neib(a, b)].Neib(b, a, t.Neib(b, a));\n                m_tris[t.Neib(b, a)].Neib(a, b, s.Neib(a, b));\n            }\n        }\n\n        void RemoveB2b(HullTriangle s, HullTriangle t)\n        {\n            B2bFix(s, t);\n            DeAllocateTriangle(s);\n\n            DeAllocateTriangle(t);\n        }\n\n        void CheckIt(HullTriangle t)\n        {\n            //(void)t;\n\n            Debug.Assert(m_tris[t.id] == t);\n            for (int i = 0; i < 3; i++)\n            {\n                int i1 = (i + 1) % 3;\n                int i2 = (i + 2) % 3;\n                int a = t.At(i1);\n                int b = t.At(i2);\n\n                // release compile fix\n                //(void)i1;\n                //(void)i2;\n                //(void)a;\n                //(void)b;\n\n                Debug.Assert(a != b);\n                Debug.Assert(m_tris[t.n.At(i)].Neib(b, a) == t.id);\n            }\n        }\n\n        public HullTriangle AllocateTriangle(int a, int b, int c)\n        {\n            HullTriangle tr = new HullTriangle(a, b, c);\n            tr.id = m_tris.Count;\n            m_tris.Add(tr);\n            return tr;\n        }\n\n        public void DeAllocateTriangle(HullTriangle tri)\n        {\n            Debug.Assert(m_tris[tri.id] == tri);\n            m_tris[tri.id] = null;\n        }\n\n\n        public void Extrude(HullTriangle t0, int v)\n        {\n            int3 t = t0;\n            int n = m_tris.Count;\n            HullTriangle ta = AllocateTriangle(v, t.At(1), t.At(2));\n            ta.n = new int3(t0.n.At(0), n + 1, n + 2);\n            m_tris[t0.n.At(0)].Neib(t.At(1), t.At(2), n + 0);\n            HullTriangle tb = AllocateTriangle(v, t.At(2), t.At(0));\n            tb.n = new int3(t0.n.At(1), n + 2, n + 0);\n            m_tris[t0.n.At(1)].Neib(t.At(2), t.At(0), n + 1);\n            HullTriangle tc = AllocateTriangle(v, t.At(0), t.At(1));\n            tc.n = new int3(t0.n.At(2), n + 0, n + 1);\n            m_tris[t0.n.At(2)].Neib(t.At(0), t.At(1), n + 2);\n            CheckIt(ta);\n            CheckIt(tb);\n            CheckIt(tc);\n            if (HasVert(m_tris[ta.n.At(0)], v))\n            {\n                RemoveB2b(ta, m_tris[ta.n.At(0)]);\n            }\n            if (HasVert(m_tris[tb.n.At(0)], v))\n            {\n                RemoveB2b(tb, m_tris[tb.n.At(0)]);\n            }\n            if (HasVert(m_tris[tc.n.At(0)], v))\n            {\n                RemoveB2b(tc, m_tris[tc.n.At(0)]);\n            }\n            DeAllocateTriangle(t0);\n        }\n\n        public HullTriangle Extrudable(float epsilon)\n        {\n            HullTriangle t = null;\n            for (int i = 0; i < m_tris.Count; i++)\n            {\n                if (t == null || (m_tris[i] != null && t.rise < m_tris[i].rise))\n                {\n                    t = m_tris[i];\n                }\n            }\n            return (t.rise > epsilon) ? t : null;\n        }\n\n        public int4 FindSimplex(IList<IndexedVector3> verts, int verts_count, IList<int> allow)\n        {\n            IndexedVector3[] basis = new IndexedVector3[3];\n            basis[0] = new IndexedVector3(0.01f, 0.02f, 1.0f);\n            int p0 = HullLibrary.MaxDirSterId(verts, verts_count, basis[0], allow);\n            int p1 = HullLibrary.MaxDirSterId(verts, verts_count, -basis[0], allow);\n            basis[0] = verts[p0] - verts[p1];\n            if (p0 == p1 || basis[0] == IndexedVector3.Zero)\n            {\n                return new int4(-1, -1, -1, -1);\n            }\n            basis[1] = IndexedVector3.Cross(new IndexedVector3(1f, 0.02f, 0f), basis[0]);\n            basis[2] = IndexedVector3.Cross(new IndexedVector3(-0.02f, 1f, 0f), basis[0]);\n            if (basis[1].Length() > basis[2].Length())\n            {\n                basis[1].Normalize();\n            }\n            else\n            {\n                basis[1] = basis[2];\n                basis[1].Normalize();\n            }\n            int p2 = MaxDirSterId(verts, verts_count, basis[1], allow);\n            if (p2 == p0 || p2 == p1)\n            {\n                p2 = MaxDirSterId(verts, verts_count, -basis[1], allow);\n            }\n            if (p2 == p0 || p2 == p1)\n            {\n                return new int4(-1, -1, -1, -1);\n            }\n            basis[1] = verts[p2] - verts[p0];\n            basis[2] = IndexedVector3.Normalize(IndexedVector3.Cross(basis[1], basis[0]));\n            int p3 = MaxDirSterId(verts, verts_count, basis[2], allow);\n            if (p3 == p0 || p3 == p1 || p3 == p2)\n            {\n                p3 = MaxDirSterId(verts, verts_count, -basis[2], allow);\n            }\n            if (p3 == p0 || p3 == p1 || p3 == p2)\n            {\n                return new int4(-1, -1, -1, -1);\n            }\n            Debug.Assert(!(p0 == p1 || p0 == p2 || p0 == p3 || p1 == p2 || p1 == p3 || p2 == p3));\n            if (IndexedVector3.Dot(verts[p3] - verts[p0], IndexedVector3.Cross(verts[p1] - verts[p0], verts[p2] - verts[p0])) < 0)\n            {\n                // Swap\n                int temp = p2;\n                p2 = p3;\n                p3 = temp;\n            }\n            return new int4(p0, p1, p2, p3);\n        }\n\n        public int CalcHullGen(IList<IndexedVector3> verts, int verts_count, int vlimit)\n        {\n            if (verts_count < 4) return 0;\n            if (vlimit == 0)\n            {\n                vlimit = 1000000000;\n            }\n            IndexedVector3 bmin = MathUtil.MAX_VECTOR;\n            IndexedVector3 bmax = MathUtil.MIN_VECTOR;\n\n            IList<int> isextreme = new List<int>(verts_count);\n            IList<int> allow = new List<int>(verts_count);\n\n            for (int j = 0; j < verts_count; j++)\n            {\n                allow.Add(1);\n                isextreme.Add(0);\n                MathUtil.VectorMin(verts[j], ref bmin);\n                MathUtil.VectorMax(verts[j], ref bmax);\n            }\n            float epsilon = (bmax - bmin).Length() * 0.001f;\n            Debug.Assert(epsilon != 0.0);\n\n            int4 p = FindSimplex(verts, verts_count, allow);\n            if (p.x == -1) return 0; // simplex failed\n\n            IndexedVector3 center = (verts[p.At(0)] + verts[p.At(1)] + verts[p.At(2)] + verts[p.At(3)]) / 4.0f;  // a valid interior point\n            HullTriangle t0 = AllocateTriangle(p.At(2), p.At(3), p.At(1)); t0.n = new int3(2, 3, 1);\n            HullTriangle t1 = AllocateTriangle(p.At(3), p.At(2), p.At(0)); t1.n = new int3(3, 2, 0);\n            HullTriangle t2 = AllocateTriangle(p.At(0), p.At(1), p.At(3)); t2.n = new int3(0, 1, 3);\n            HullTriangle t3 = AllocateTriangle(p.At(1), p.At(0), p.At(2)); t3.n = new int3(1, 0, 2);\n            isextreme[p.At(0)] = isextreme[p.At(1)] = isextreme[p.At(2)] = isextreme[p.At(3)] = 1;\n            CheckIt(t0); CheckIt(t1); CheckIt(t2); CheckIt(t3);\n\n            for (int j = 0; j < m_tris.Count; j++)\n            {\n                HullTriangle t = m_tris[j];\n                Debug.Assert(t != null);\n                Debug.Assert(t.vmax < 0);\n                IndexedVector3 n = HullLibrary.TriNormal(verts[t.At(0)], verts[t.At(1)], verts[t.At(2)]);\n                t.vmax = MaxDirSterId(verts, verts_count, n, allow);\n                t.rise = IndexedVector3.Dot(n, verts[t.vmax] - verts[t.At(0)]);\n            }\n            HullTriangle te = null;\n            vlimit -= 4;\n            while (vlimit > 0 && ((te = Extrudable(epsilon)) != null))\n            {\n                int3 ti = te;\n                int v = te.vmax;\n                Debug.Assert(v != -1);\n                Debug.Assert(isextreme[v] == 0);  // wtf we've already done this vertex\n                isextreme[v] = 1;\n                //if(v==p0 || v==p1 || v==p2 || v==p3) continue; // done these already\n                int j = m_tris.Count;\n                while (j-- > 0)\n                {\n                    if (m_tris[j] == null)\n                    {\n                        continue;\n                    }\n                    int3 t = m_tris[j];\n                    if (Above(verts, t, verts[v], 0.01f * epsilon))\n                    {\n                        Extrude(m_tris[j], v);\n                    }\n                }\n                // now check for those degenerate cases where we have a flipped triangle or a really skinny triangle\n                j = m_tris.Count;\n                while (j-- > 0)\n                {\n                    if (m_tris[j] == null)\n                    {\n                        continue;\n                    }\n                    if (!HasVert(m_tris[j], v))\n                    {\n                        break;\n                    }\n                    int3 nt = m_tris[j];\n                    if (Above(verts, nt, center, 0.01f * epsilon) || IndexedVector3.Cross(verts[nt.At(1)] - verts[nt.At(0)], verts[nt.At(2)] - verts[nt.At(1)]).Length() < epsilon * epsilon * 0.1f)\n                    {\n                        HullTriangle nb = m_tris[m_tris[j].n.At(0)];\n                        Debug.Assert(nb != null);\n                        Debug.Assert(!HasVert(nb, v));\n                        Debug.Assert(nb.id < j);\n                        Extrude(nb, v);\n                        j = m_tris.Count;\n                    }\n                }\n                j = m_tris.Count;\n                while (j-- != 0)\n                {\n                    HullTriangle t = m_tris[j];\n                    if (t == null)\n                    {\n                        continue;\n                    }\n                    if (t.vmax >= 0)\n                    {\n                        break;\n                    }\n                    IndexedVector3 n = TriNormal(verts[t.At(0)], verts[t.At(1)], verts[t.At(2)]);\n                    t.vmax = MaxDirSterId(verts, verts_count, n, allow);\n                    if (isextreme[t.vmax] != 0)\n                    {\n                        t.vmax = -1; // already done that vertex - algorithm needs to be able to terminate.\n                    }\n                    else\n                    {\n                        t.rise = IndexedVector3.Dot(n, verts[t.vmax] - verts[t.At(0)]);\n                    }\n                }\n                vlimit--;\n            }\n            return 1;\n        }\n\n        public int CalcHull(IList<IndexedVector3> verts, int verts_count, IList<int> tris_out, ref int tris_count, int vlimit)\n        {\n            int rc = CalcHullGen(verts, verts_count, vlimit);\n            if (rc == 0)\n            {\n                return 0;\n            }\n            IList<int> ts = new List<int>();\n            int i;\n\n            for (i = 0; i < m_tris.Count; i++)\n            {\n                if (m_tris[i] != null)\n                {\n                    for (int j = 0; j < 3; j++)\n                    {\n                        ts.Add((m_tris[i]).At(j));\n                    }\n                    DeAllocateTriangle(m_tris[i]);\n                }\n            }\n            tris_count = ts.Count / 3;\n            // FIXME\n            tris_out.Clear();\n\n            for (i = 0; i < ts.Count; i++)\n            {\n                tris_out.Add(ts[i]);\n            }\n            m_tris.Clear();\n\n            return 1;\n        }\n\n\n        public bool ComputeHull(int vcount, IList<IndexedVector3> vertices, PHullResult result, int vlimit)\n        {\n\n            int tris_count = 0;\n            int ret = CalcHull(vertices, vcount, result.m_Indices, ref tris_count, vlimit);\n            if (ret == 0)\n            {\n                return false;\n            }\n            result.mIndexCount = (int)(tris_count * 3);\n            result.mFaceCount = (int)tris_count;\n            result.mVertices = vertices;\n            result.mVcount = (int)vcount;\n            return true;\n\n        }\n\n\n        public void ReleaseHull(PHullResult result)\n        {\n            if (result.m_Indices.Count != 0)\n            {\n                result.m_Indices.Clear();\n            }\n\n            result.mVcount = 0;\n            result.mIndexCount = 0;\n            result.mVertices.Clear();\n        }\n\n\n        //*********************************************************************\n        //*********************************************************************\n        //********  HullLib header\n        //*********************************************************************\n        //*********************************************************************\n\n        //*********************************************************************\n        //*********************************************************************\n        //********  HullLib implementation\n        //*********************************************************************\n        //*********************************************************************\n\n        public HullError CreateConvexHull(HullDesc desc,           // describes the input request\n                                        HullResult result)         // contains the resulst\n        {\n            HullError ret = HullError.QE_FAIL;\n\n            PHullResult hr = new PHullResult();\n\n            int vcount = desc.mVcount;\n            if (vcount < 8)\n            {\n                vcount = 8;\n            }\n\n            IList<IndexedVector3> vertexSource = new List<IndexedVector3>((int)vcount);\n            for (int i = 0; i < vcount; ++i)\n            {\n                vertexSource.Add(IndexedVector3.Zero);\n            }\n\n\n            IndexedVector3 scale = new IndexedVector3(1);\n\n            int ovcount = 0;\n\n            bool ok = CleanupVertices(desc.mVcount, desc.mVertices, desc.mVertexStride, ref ovcount, vertexSource, desc.mNormalEpsilon, ref scale); // normalize point cloud, remove duplicates!\n\n            if (ok)\n            {\n                //\t\tif ( 1 ) // scale vertices back to their original size.\n                {\n                    for (int i = 0; i < ovcount; i++)\n                    {\n                        IndexedVector3 v = vertexSource[i];\n                        v.X *= scale.X;\n                        v.Y *= scale.Y;\n                        v.Z *= scale.Z;\n                        vertexSource[i] = v;\n                    }\n                }\n\n                ok = ComputeHull(ovcount, vertexSource, hr, desc.mMaxVertices);\n\n                if (ok)\n                {\n\n                    // re-index triangle mesh so it refers to only used vertices, rebuild a new vertex table.\n                    IList<IndexedVector3> vertexScratch = new ObjectArray<IndexedVector3>((int)hr.mVcount);\n\n                    BringOutYourDead(hr.mVertices, hr.mVcount, vertexScratch, ref ovcount, hr.m_Indices, hr.mIndexCount);\n\n                    ret = HullError.QE_OK;\n\n                    if (desc.HasHullFlag(HullFlag.QF_TRIANGLES)) // if he wants the results as triangle!\n                    {\n                        result.mPolygons = false;\n                        result.mNumOutputVertices = ovcount;\n                        //result.m_OutputVertices.resize(ovcount);\n                        result.m_OutputVertices.Clear();\n                        result.mNumFaces = hr.mFaceCount;\n                        result.mNumIndices = hr.mIndexCount;\n\n                        //result.m_Indices.resize(hr.mIndexCount);\n                        result.m_Indices.Clear();\n\n                        for (int i = 0; i < ovcount; ++i)\n                        {\n                            result.m_OutputVertices.Add(vertexScratch[i]);\n                        }\n                        //memcpy(&result.m_OutputVertices[0], &vertexScratch[0], sizeof(IndexedVector3) * ovcount);\n\n                        if (desc.HasHullFlag(HullFlag.QF_REVERSE_ORDER))\n                        {\n\n                            IList<int> source = hr.m_Indices;\n                            IList<int> dest = result.m_Indices;\n\n                            for (int i = 0; i < hr.mFaceCount; i++)\n                            {\n                                int index = (i * 3);\n                                //dest[index + 0] = source[index + 2];\n                                //dest[index + 1] = source[index + 1];\n                                //dest[index + 2] = source[index + 0];\n                                dest.Add(source[index + 2]);\n                                dest.Add(source[index + 1]);\n                                dest.Add(source[index + 0]);\n                            }\n                        }\n                        else\n                        {\n                            for (int i = 0; i < hr.mIndexCount; ++i)\n                            {\n                                //result.m_Indices[i] = hr.m_Indices[i];\n                                result.m_Indices.Add(hr.m_Indices[i]);\n                            }\n                            //memcpy(&result.m_Indices[0], &hr.m_Indices[0], sizeof(int) * hr.mIndexCount);\n                        }\n                    }\n                    else\n                    {\n                        result.mPolygons = true;\n                        result.mNumOutputVertices = ovcount;\n                        //result.m_OutputVertices.resize(ovcount);\n                        result.m_OutputVertices.Clear();\n                        result.mNumFaces = hr.mFaceCount;\n                        result.mNumIndices = hr.mIndexCount + hr.mFaceCount;\n                        //result.m_Indices.resize(result.mNumIndices);\n                        result.m_Indices.Clear();\n\n                        for (int i = 0; i < ovcount; ++i)\n                        {\n                            result.m_OutputVertices.Add(vertexScratch[i]);\n                        }\n                        //memcpy(&result.m_OutputVertices[0], &vertexScratch[0], sizeof(IndexedVector3) * ovcount);\n\n                        //\t\t\t\tif ( 1 )\n                        {\n                            IList<int> source = hr.m_Indices;\n                            IList<int> dest = result.m_Indices;\n\n                            for (int i = 0; i < hr.mFaceCount; i++)\n                            {\n                                int destIndex = (i * 4);\n                                int srcIndex = (i * 3);\n                                dest[0] = 3;\n                                if (desc.HasHullFlag(HullFlag.QF_REVERSE_ORDER))\n                                {\n                                    dest.Add(source[srcIndex + 2]);\n                                    dest.Add(source[srcIndex + 1]);\n                                    dest.Add(source[srcIndex + 0]);\n                                }\n                                else\n                                {\n                                    dest.Add(source[srcIndex + 0]);\n                                    dest.Add(source[srcIndex + 1]);\n                                    dest.Add(source[srcIndex + 2]);\n                                }\n                            }\n                        }\n                    }\n                    ReleaseHull(hr);\n                }\n            }\n\n            return ret;\n        }\n\n\n\n        public HullError ReleaseResult(HullResult result) // release memory allocated for this result, we are done with it.\n        {\n            if (result.m_OutputVertices.Count != 0)\n            {\n                result.mNumOutputVertices = 0;\n                result.m_OutputVertices.Clear();\n            }\n            if (result.m_Indices.Count != 0)\n            {\n                result.mNumIndices = 0;\n                result.m_Indices.Clear();\n            }\n            return HullError.QE_OK;\n        }\n\n\n        public static void AddPoint(ref int vcount, IList<IndexedVector3> p, float x, float y, float z)\n        {\n            // XXX, might be broken\n            IndexedVector3 dest = p[vcount];\n            dest.X = x;\n            dest.Y = y;\n            dest.Z = z;\n\n            vcount++;\n        }\n\n        public float GetDist(float px, float py, float pz, ref IndexedVector3 p2)\n        {\n\n            float dx = px - p2.X;\n            float dy = py - p2.Y;\n            float dz = pz - p2.Z;\n\n            return dx * dx + dy * dy + dz * dz;\n        }\n\n\n\n        public bool CleanupVertices(int svcount,\n                           IList<IndexedVector3> svertices,\n                           int stride,\n                           ref int vcount,       // output number of vertices\n                           IList<IndexedVector3> vertices,                 // location to store the results.\n                           float normalepsilon,\n                           ref IndexedVector3 scale)\n        {\n            if (svcount == 0)\n            {\n                return false;\n            }\n\n            m_vertexIndexMapping.Clear();\n\n            vcount = 0;\n\n            IndexedVector3 recip = new IndexedVector3();\n\n            scale = new IndexedVector3(1);\n\n            IndexedVector3 bmin = MathUtil.MAX_VECTOR;\n            IndexedVector3 bmax = MathUtil.MIN_VECTOR;\n\n            //char *vtx = (char *) svertices;\n\n            //\tif ( 1 )\n            {\n                for (int i = 0; i < svcount; i++)\n                {\n                    IndexedVector3 p = svertices[i];\n                    MathUtil.VectorMin(ref p, ref bmin);\n                    MathUtil.VectorMax(ref p, ref bmax);\n                    svertices[i] = p;\n                }\n            }\n\n            IndexedVector3 diff = bmax - bmin;\n\n            IndexedVector3 center = diff * 0.5f;\n            center += bmin;\n            if (diff.X < EPSILON || diff.Y < EPSILON || diff.Z < EPSILON || svcount < 3)\n            {\n\n                float len = float.MaxValue;\n\n                if (diff.X > EPSILON && diff.X < len) len = diff.X;\n                if (diff.Y > EPSILON && diff.Y < len) len = diff.Y;\n                if (diff.Z > EPSILON && diff.Z < len) len = diff.Z;\n\n                if (len == float.MaxValue)\n                {\n                    diff = new IndexedVector3(0.01f);\n                }\n                else\n                {\n                    if (diff.X < EPSILON) diff.X = len * 0.05f; // 1/5th the shortest non-zero edge.\n                    if (diff.Y < EPSILON) diff.Y = len * 0.05f;\n                    if (diff.Z < EPSILON) diff.Z = len * 0.05f;\n                }\n\n                float x1 = center.X - diff.X;\n                float x2 = center.X + diff.X;\n\n                float y1 = center.Y - diff.Y;\n                float y2 = center.Y + diff.Y;\n\n                float z1 = center.Z - diff.Z;\n                float z2 = center.Z + diff.Z;\n\n                AddPoint(ref vcount, vertices, x1, y1, z1);\n                AddPoint(ref vcount, vertices, x2, y1, z1);\n                AddPoint(ref vcount, vertices, x2, y2, z1);\n                AddPoint(ref vcount, vertices, x1, y2, z1);\n                AddPoint(ref vcount, vertices, x1, y1, z2);\n                AddPoint(ref vcount, vertices, x2, y1, z2);\n                AddPoint(ref vcount, vertices, x2, y2, z2);\n                AddPoint(ref vcount, vertices, x1, y2, z2);\n\n                return true; // return cube\n\n\n            }\n            else\n            {\n                if (scale.LengthSquared() > 0)\n                {\n                    scale = diff;\n                    //scale.Value.X = dx;\n                    //scale.Value.Y = dy;\n                    //scale.Value.Z = dz;\n\n                    recip.X = 1 / diff.X;\n                    recip.Y = 1 / diff.Y;\n                    recip.Z = 1 / diff.Z;\n\n                    //recip[0] = 1 / dx;\n                    //recip[1] = 1 / dy;\n                    //recip[2] = 1 / dz;\n\n                    center = center * recip;\n\n                    //center.X*=recip[0];\n                    //center.Y*=recip[1];\n                    //center.Z*=recip[2];\n\n                }\n\n            }\n\n            //vtx = (char *) svertices;\n\n            for (int i = 0; i < svcount; i++)\n            {\n                IndexedVector3 p = svertices[i];\n\n\n                if (scale.LengthSquared() > 0)\n                {\n                    //p.Normalize();\n                    p.X *= recip.X;\n                    p.Y *= recip.Y;\n                    p.Z *= recip.Z;\n                }\n\n                //\t\tif ( 1 )\n                {\n                    int j = 0;\n                    for (j = 0; j < vcount; j++)\n                    {\n                        /// XXX might be broken\n                        IndexedVector3 v = vertices[j];\n\n                        IndexedVector3 temp = v - p;\n\n                        IndexedVector3 absTemp = temp.Absolute();\n\n                        if (absTemp.X < normalepsilon && absTemp.Y < normalepsilon && absTemp.Z < normalepsilon)\n                        {\n                            // ok, it is close enough to the old one\n                            // now let us see if it is further from the center of the point cloud than the one we already recorded.\n                            // in which case we keep this one instead.\n\n                            float dist1 = (p - center).LengthSquared();\n                            float dist2 = (v - center).LengthSquared();\n\n                            if (dist1 > dist2)\n                            {\n                                vertices[j] = p;\n                            }\n\n                            break;\n                        }\n                    }\n\n                    if (j == vcount)\n                    {\n                        vertices[vcount] = p;\n                        vcount++;\n                    }\n                    m_vertexIndexMapping.Add(j);\n                }\n            }\n\n            // ok..now make sure we didn't prune so many vertices it is now invalid.\n            //\tif ( 1 )\n            {\n                float[] bmin2 = new float[] { float.MaxValue, float.MaxValue, float.MaxValue };\n                float[] bmax2 = new float[] { float.MinValue, float.MinValue, float.MinValue };\n\n                for (int i = 0; i < vcount; i++)\n                {\n                    IndexedVector3 p = vertices[i];\n                    if (p.X < bmin2[0]) bmin2[0] = p.X;\n                    if (p.X > bmax2[0]) bmax2[0] = p.X;\n                    if (p.Y < bmin2[1]) bmin2[1] = p.Y;\n                    if (p.Y > bmax2[1]) bmax2[1] = p.Y;\n                    if (p.Z < bmin2[2]) bmin2[2] = p.Z;\n                    if (p.Z > bmax2[2]) bmax2[2] = p.Z;\n\n                }\n\n                float dx2 = bmax2[0] - bmin2[0];\n                float dy2 = bmax2[1] - bmin2[1];\n                float dz2 = bmax2[2] - bmin2[2];\n\n                if (dx2 < EPSILON || dy2 < EPSILON || dz2 < EPSILON || vcount < 3)\n                {\n                    float cx = dx2 * 0.5f + bmin2[0];\n                    float cy = dy2 * 0.5f + bmin2[1];\n                    float cz = dz2 * 0.5f + bmin2[2];\n\n                    float len = float.MaxValue;\n\n                    if (dx2 >= EPSILON && dx2 < len) len = dx2;\n                    if (dy2 >= EPSILON && dy2 < len) len = dy2;\n                    if (dz2 >= EPSILON && dz2 < len) len = dz2;\n\n                    if (len == float.MaxValue)\n                    {\n                        dx2 = dy2 = dz2 = 0.01f; // one centimeter\n                    }\n                    else\n                    {\n                        if (dx2 < EPSILON) dx2 = len * 0.05f; // 1/5th the shortest non-zero edge.\n                        if (dy2 < EPSILON) dy2 = len * 0.05f;\n                        if (dz2 < EPSILON) dz2 = len * 0.05f;\n                    }\n\n                    float x1 = cx - dx2;\n                    float x2 = cx + dx2;\n\n                    float y1 = cy - dy2;\n                    float y2 = cy + dy2;\n\n                    float z1 = cz - dz2;\n                    float z2 = cz + dz2;\n\n                    vcount = 0; // add box\n\n                    AddPoint(ref vcount, vertices, x1, y1, z1);\n                    AddPoint(ref vcount, vertices, x2, y1, z1);\n                    AddPoint(ref vcount, vertices, x2, y2, z1);\n                    AddPoint(ref vcount, vertices, x1, y2, z1);\n                    AddPoint(ref vcount, vertices, x1, y1, z2);\n                    AddPoint(ref vcount, vertices, x2, y1, z2);\n                    AddPoint(ref vcount, vertices, x2, y2, z2);\n                    AddPoint(ref vcount, vertices, x1, y2, z2);\n\n                    return true;\n                }\n            }\n\n            return true;\n        }\n\n        public void BringOutYourDead(IList<IndexedVector3> verts, int vcount, IList<IndexedVector3> overts, ref int ocount, IList<int> indices, int indexcount)\n        {\n            IList<int> tmpIndices = new ObjectArray<int>(m_vertexIndexMapping.Count);\n\n            for (int i = 0; i < m_vertexIndexMapping.Count; i++)\n            {\n                tmpIndices[i] = m_vertexIndexMapping[i];\n            }\n\n            IList<int> usedIndices = new ObjectArray<int>((int)vcount);\n            //usedIndices.resize(static_cast<int>(vcount));\n            //memset(&usedIndices[0], 0, sizeof(int) * vcount);\n\n            ocount = 0;\n\n            for (int i = 0; i < indexcount; i++)\n            {\n                int v = indices[i]; // original array index\n\n                Debug.Assert(v >= 0 && v < vcount);\n\n                if (usedIndices[(int)v] != 0) // if already remapped\n                {\n                    indices[i] = usedIndices[(int)v] - 1; // index to new array\n                }\n                else\n                {\n                    indices[i] = ocount;      // new index mapping\n\n                    //overts[ocount][0] = verts[(int)v][0]; // copy old vert to new vert array\n                    //overts[ocount][1] = verts[(int)v][1];\n                    //overts[ocount][2] = verts[(int)v][2];\n\n                    overts[(int)ocount] = verts[(int)v];\n                    for (int k = 0; k < m_vertexIndexMapping.Count; k++)\n                    {\n                        if (tmpIndices[k] == v)\n                        {\n                            m_vertexIndexMapping[k] = ocount;\n                        }\n                    }\n\n                    ocount++; // increment output vert count\n\n                    Debug.Assert(ocount >= 0 && ocount <= vcount);\n\n                    usedIndices[(int)v] = ocount; // assign new index remapping\n                }\n            }\n        }\n        public static IndexedVector3 ThreePlaneIntersection(Plane p0, Plane p1, Plane p2)\n        {\n            IndexedVector3 N1 = new IndexedVector3(p0.Normal);\n            IndexedVector3 N2 = new IndexedVector3(p1.Normal);\n            IndexedVector3 N3 = new IndexedVector3(p2.Normal);\n\n            IndexedVector3 n2n3 = IndexedVector3.Cross(N2, N3);\n            IndexedVector3 n3n1 = IndexedVector3.Cross(N3, N1);\n            IndexedVector3 n1n2 = IndexedVector3.Cross(N1, N2);\n\n            float quotient = IndexedVector3.Dot(N1, n2n3);\n\n            Debug.Assert(Math.Abs(quotient) > 0.000001f);\n\n            quotient = -1.0f / quotient;\n            n2n3 *= p0.D;\n            n3n1 *= p1.D;\n            n1n2 *= p2.D;\n\n            IndexedVector3 potentialVertex = n2n3;\n            potentialVertex += n3n1;\n            potentialVertex += n1n2;\n            potentialVertex *= quotient;\n\n            IndexedVector3 result = potentialVertex;\n            return result;\n        }\n\n\n        public static IndexedVector3 PlaneLineIntersection(ref Plane plane, ref IndexedVector3 p0, ref IndexedVector3 p1)\n        {\n            // returns the point where the line p0-p1 intersects the plane n&\n            IndexedVector3 dif = p1 - p0;\n            float dn = IndexedVector3.Dot(plane.Normal, dif);\n            float t = -(plane.D + IndexedVector3.Dot(plane.Normal, p0)) / dn;\n            return p0 + (dif * t);\n        }\n\n        public static IndexedVector3 PlaneProject(ref Plane plane, ref IndexedVector3 point)\n        {\n            return point - new IndexedVector3(plane.Normal) * (IndexedVector3.Dot(point, plane.Normal) + plane.D);\n        }\n\n        public static IndexedVector3 TriNormal(IndexedVector3 v0, IndexedVector3 v1, IndexedVector3 v2)\n        {\n            return TriNormal(ref v0, ref v1, ref v2);\n        }\n\n        public static IndexedVector3 TriNormal(ref IndexedVector3 v0, ref IndexedVector3 v1, ref IndexedVector3 v2)\n        {\n            // return the normal of the triangle\n            // inscribed by v0, v1, and v2\n            IndexedVector3 cp = IndexedVector3.Cross(v1 - v0, v2 - v1);\n            float m = cp.Length();\n            if (m == 0)\n            {\n                return new IndexedVector3(1, 0, 0);\n            }\n            return cp * (1.0f / m);\n        }\n\n\n        public static float DistanceBetweenLines(ref IndexedVector3 ustart, ref IndexedVector3 udir, ref IndexedVector3 vstart, ref IndexedVector3 vdir, ref IndexedVector3? upoint, ref IndexedVector3? vpoint)\n        {\n            IndexedVector3 cp = IndexedVector3.Cross(udir, vdir);\n            cp.Normalize();\n\n            float distu = -IndexedVector3.Dot(cp, ustart);\n            float distv = -IndexedVector3.Dot(cp, vstart);\n            float dist = (float)Math.Abs(distu - distv);\n            if (upoint.HasValue)\n            {\n                Plane plane = new Plane();\n                plane.Normal = IndexedVector3.Cross(vdir, cp).ToVector3();\n                plane.Normal.Normalize();\n                plane.D = -IndexedVector3.Dot(plane.Normal, vstart);\n                IndexedVector3 a = ustart + udir;\n                upoint = PlaneLineIntersection(ref plane, ref ustart, ref a);\n            }\n            if (vpoint.HasValue)\n            {\n                Plane plane = new Plane();\n                plane.Normal = IndexedVector3.Cross(udir, cp).ToVector3();\n                plane.Normal.Normalize();\n                plane.D = -IndexedVector3.Dot(plane.Normal, ustart);\n                IndexedVector3 a = vstart + vdir;\n                vpoint = PlaneLineIntersection(ref plane, ref vstart, ref a);\n            }\n            return dist;\n        }\n\n        public static PlaneIntersectType PlaneTest(ref Plane p, ref IndexedVector3 v)\n        {\n            float planetestepsilon = 0.0001f;\n            float a = IndexedVector3.Dot(v, p.Normal) + p.D;\n            PlaneIntersectType flag = (a > planetestepsilon) ? PlaneIntersectType.OVER : ((a < -planetestepsilon) ? PlaneIntersectType.UNDER : PlaneIntersectType.COPLANAR);\n            return flag;\n        }\n\n        public static PlaneIntersectType SplitTest(ConvexH convex, ref Plane plane)\n        {\n            PlaneIntersectType flag = PlaneIntersectType.COPLANAR;\n            for (int i = 0; i < convex.vertices.Count; i++)\n            {\n                IndexedVector3 vtx = convex.vertices[i];\n                flag |= PlaneTest(ref plane, ref vtx);\n            }\n            return flag;\n        }\n\n\n\n        public const float PAPERWIDTH = 0.001f;\n        public const float planetestepsilon = PAPERWIDTH;\n\n\n        public IList<HullTriangle> m_tris = new List<HullTriangle>();\n        public IList<int> m_vertexIndexMapping = new List<int>();\n        public const float EPSILON = 0.000001f; /* close enough to consider two floating point numbers to be 'the same'. */\n\n    }\n}"
  },
  {
    "path": "Sources/CommonLIB/AppCode/GImpact/LinearMath/ConvexHullComputer.cs",
    "content": "﻿//#define DEBUG_CONVEX_HULL\n///*\n//Copyright (c) 2011 Ole Kniemeyer, MAXON, www.maxon.net\n\n//This software is provided 'as-is', without any express or implied warranty.\n//In no event will the authors be held liable for any damages arising from the use of this software.\n//Permission is granted to anyone to use this software for any purpose, \n//including commercial applications, and to alter it and redistribute it freely, \n//subject to the following restrictions:\n\n//1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n//2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n//3. This notice may not be removed or altered from any source distribution.\n//*/\n\n//using System;\n//using System.Collections.Generic;\n//using System.Text;\n//using MinerWarsMath;\n//using System.Diagnostics;\n\n\n//namespace BulletXNA.LinearMath\n//{\n///// Convex hull implementation based on Preparata and Hong\n///// See http://code.google.com/p/bullet/issues/detail?id=275\n///// Ole Kniemeyer, MAXON Computer GmbH\n//    public class ConvexHullComputer\n//    {\n//        // Vertices of the output hull\n//        public ObjectArray<IndexedVector3> vertices = new ObjectArray<IndexedVector3>();\n\n//        // Edges of the output hull\n//        public ObjectArray<Edge> edges = new ObjectArray<Edge>();\n\n//        // Faces of the convex hull. Each entry is an index into the \"edges\" array pointing to an edge of the face. Faces are planar n-gons\n//        public ObjectArray<int> faces = new ObjectArray<int>();\n\n//        /*\n//        Compute convex hull of \"count\" vertices stored in \"coords\". \"stride\" is the difference in bytes\n//        between the addresses of consecutive vertices. If \"shrink\" is positive, the convex hull is shrunken\n//        by that amount (each face is moved by \"shrink\" length units towards the center along its normal).\n//        If \"shrinkClamp\" is positive, \"shrink\" is clamped to not exceed \"shrinkClamp * innerRadius\", where \"innerRadius\"\n//        is the minimum distance of a face to the center of the convex hull.\n\n//        The returned value is the amount by which the hull has been shrunken. If it is negative, the amount was so large\n//        that the resulting convex hull is empty.\n\n//        The output convex hull can be found in the member variables \"vertices\", \"edges\", \"faces\".\n//        */\n//        public float Compute(float[] coords, int stride, int count, float shrink, float shrinkClamp)\n//        {\n//            return Compute(coords, false, stride, count, shrink, shrinkClamp);\n//        }\n\n//        private float Compute(float[] coords, bool doubleCoords, int stride, int count, float shrink, float shrinkClamp)\n//        {\n//            return 0.0f;\n//        }\n\n//}\n\n//    public struct Point32\n//    {\n//        public int X;\n//        public int Y;\n//        public int Z;\n//        public int index;\n//    }\n\n\n\n\n//        public class Edge\n//        {\n//            private int next;\n//            private int reverse;\n//            private int targetVertex;\n\n\n//                public int GetSourceVertex() \n//                {\n//                    return (this + reverse).targetVertex;\n//                }\n\n//                public int GetTargetVertex() \n//                {\n//                    return targetVertex;\n//                }\n\n//                public Edge GetNextEdgeOfVertex() // counter-clockwise list of all edges of a vertex\n//                {\n//                    return this + next;\n//                }\n\n//                public Edge GetNextEdgeOfFace() // clockwise list of all edges of a face\n//                {\n//                    return (this + reverse).GetNextEdgeOfVertex();\n//                }\n\n//                public Edge GetReverseEdge()\n//                {\n//                    return this + reverse;\n//                }\n//        }\n\n\n//    private class ConvexHullInternal\n//    {\n//    }\n\n//        public class Vertex\n//        {\n//                public Vertex next;\n//                public Vertex prev;\n//                ObjectArray<Edge> edges;\n//                public Face firstNearbyFace;\n//                public Face lastNearbyFace;\n//                //PointR128 point128;\n//                Point32 point;\n//                int copy;\n\t\t\t\t\n//                public Vertex()\n//                {\n//                    copy = -1;\n//                }\n\n//#if DEBUG_CONVEX_HULL\n//                void Print()\n//                {\n//                    System.Console.WriteLine(\"V{0} ({1})\", point.index, point);\n//                }\n\n//                void printGraph();\n//#endif\n\n//                public static Point32 operator -(Point32 value1, Vertex value2)\n//                {\n//                    return new Point32(value1.X - value2.point.X,value1.Y - value2.point.Y,value1.Z - value2.point.Z);\n//                }\n\n\n//                public float xvalue()\n//                {\n//                    return (point.index >= 0) ? float(point.x) : point128.xvalue();\n//                }\n\n//                public float yvalue()\n//                {\n//                    return (point.index >= 0) ? float(point.y) : point128.yvalue();\n//                }\n\n//                public float zvalue()\n//                {\n//                    return (point.index >= 0) ? float(point.z) : point128.zvalue();\n//                }\n\n//                void receiveNearbyFaces(Vertex* src)\n//                {\n//                    if (lastNearbyFace)\n//                    {\n//                        lastNearbyFace.nextWithSameNearbyVertex = src.firstNearbyFace;\n//                    }\n//                    else\n//                    {\n//                        firstNearbyFace = src.firstNearbyFace;\n//                    }\n//                    if (src.lastNearbyFace)\n//                    {\n//                        lastNearbyFace = src.lastNearbyFace;\n//                    }\n//                    for (Face* f = src.firstNearbyFace; f; f = f.nextWithSameNearbyVertex)\n//                    {\n//                        btAssert(f.nearbyVertex == src);\n//                        f.nearbyVertex = this;\n//                    }\n//                    src.firstNearbyFace = NULL;\n//                    src.lastNearbyFace = NULL;\n//                }\n//        }\n\n\n//        public class Edge\n//        {\n//                public Edge next;\n//                public Edge prev;\n//                public Edge reverse;\n//                public Vertex target;\n//                public Face face;\n//                int copy;\n\n//                //~Edge()\n//                //{\n//                //    next = NULL;\n//                //    prev = NULL;\n//                //    reverse = NULL;\n//                //    target = NULL;\n//                //    face = NULL;\n//                //}\n\n//                public void Link(Edge n)\n//                {\n//                    Debug.Assert(reverse.target == n.reverse.target);\n//                    next = n;\n//                    n.prev = this;\n//                }\n\n//#if DEBUG_CONVEX_HULL\n//                void print()\n//                {\n//                    System.Console.WriteLine(\"E{0} : {1} . {2},  n={3} p={4}   (0 {5}) . ({6})\", this, reverse.target.point.index, target.point.index, next, prev,\n//                                 reverse.target.point, target.point);\n//                }\n//#endif\n//        }\n\n//        public class Face\n//        {\n//                public Face next;\n//                public Vertex nearbyVertex;\n//                public Face nextWithSameNearbyVertex;\n//                Point32 origin;\n//                Point32 dir0;\n//                Point32 dir1;\n\n//                public Face()\n//                {\n//                }\n\n//                public void Init(Vertex a, Vertex b, Vertex c)\n//                {\n//                    nearbyVertex = a;\n//                    origin = a.point;\n//                    dir0 = *b - *a;\n//                    dir1 = *c - *a;\n//                    if (a.lastNearbyFace)\n//                    {\n//                        a.lastNearbyFace.nextWithSameNearbyVertex = this;\n//                    }\n//                    else\n//                    {\n//                        a.firstNearbyFace = this;\n//                    }\n//                    a.lastNearbyFace = this;\n//                }\n\n//        }\n\n//}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/GImpact/LinearMath/IndexedBasisMatrix.cs",
    "content": "﻿\nusing System.Diagnostics;\nusing System;\nusing MinerWarsMath;\nnamespace BulletXNA.LinearMath\n{\n    public struct IndexedBasisMatrix\n    {\n        private static IndexedBasisMatrix _identity = new IndexedBasisMatrix(1f, 0.0f, 0.0f, 0.0f, 1f, 0.0f, 0.0f, 0.0f, 1f);\n        public static IndexedBasisMatrix Identity\n        {\n            get\n            {\n                return IndexedBasisMatrix._identity;\n            }\n        }\n\n        public IndexedBasisMatrix Scaled(IndexedVector3 s)\n        {\n\n            return new IndexedBasisMatrix(_Row0.X * s.X, _Row0.Y * s.Y, _Row0.Z * s.Z,\n                                        _Row1.X * s.X, _Row1.Y * s.Y, _Row1.Z * s.Z,\n                                        _Row2.X * s.X, _Row2.Y * s.Y, _Row2.Z * s.Z);\n\n        }\n\n        public IndexedBasisMatrix Scaled(ref IndexedVector3 s)\n        {\n\n            return new IndexedBasisMatrix(_Row0.X * s.X, _Row0.Y * s.Y, _Row0.Z * s.Z,\n                                        _Row1.X * s.X, _Row1.Y * s.Y, _Row1.Z * s.Z,\n                                        _Row2.X * s.X, _Row2.Y * s.Y, _Row2.Z * s.Z);\n\n        }\n\n\n        public IndexedBasisMatrix(float m11, float m12, float m13, float m21, float m22, float m23, float m31, float m32, float m33)\n        {\n            _Row0 = new IndexedVector3(m11, m12, m13);\n            _Row1 = new IndexedVector3(m21, m22, m23);\n            _Row2 = new IndexedVector3(m31, m32, m33);\n        }\n\n        public IndexedBasisMatrix(IndexedVector3 row0, IndexedVector3 row1, IndexedVector3 row2)\n        {\n            _Row0 = row0;\n            _Row1 = row1;\n            _Row2 = row2;\n        }\n\n        public IndexedBasisMatrix(ref IndexedVector3 row0, ref IndexedVector3 row1, ref IndexedVector3 row2)\n        {\n            _Row0 = row0;\n            _Row1 = row1;\n            _Row2 = row2;\n        }\n\n        public IndexedBasisMatrix(Quaternion q)\n        {\n            float d = q.LengthSquared();\n            Debug.Assert(d != 0.0f);\n            float s = 2.0f / d;\n            float xs = q.X * s, ys = q.Y * s, zs = q.Z * s;\n            float wx = q.W * xs, wy = q.W * ys, wz = q.W * zs;\n            float xx = q.X * xs, xy = q.X * ys, xz = q.X * zs;\n            float yy = q.Y * ys, yz = q.Y * zs, zz = q.Z * zs;\n            _Row0 = new IndexedVector3(1.0f - (yy + zz), xy - wz, xz + wy);\n            _Row1 = new IndexedVector3(xy + wz, 1.0f - (xx + zz), yz - wx);\n            _Row2 = new IndexedVector3(xz - wy, yz + wx, 1.0f - (xx + yy));\n        }\n\n\n        public IndexedBasisMatrix(ref Quaternion q)\n        {\n            float d = q.LengthSquared();\n            Debug.Assert(d != 0.0f);\n            float s = 2.0f / d;\n            float xs = q.X * s, ys = q.Y * s, zs = q.Z * s;\n            float wx = q.W * xs, wy = q.W * ys, wz = q.W * zs;\n            float xx = q.X * xs, xy = q.X * ys, xz = q.X * zs;\n            float yy = q.Y * ys, yz = q.Y * zs, zz = q.Z * zs;\n            _Row0 = new IndexedVector3(1.0f - (yy + zz), xy - wz, xz + wy);\n            _Row1 = new IndexedVector3(xy + wz, 1.0f - (xx + zz), yz - wx);\n            _Row2 = new IndexedVector3(xz - wy, yz + wx, 1.0f - (xx + yy));\n        }\n\n\n\n        public void SetValue(float m11, float m12, float m13, float m21, float m22, float m23, float m31, float m32, float m33)\n        {\n            this[0] = new IndexedVector3(m11, m12, m13);\n            this[1] = new IndexedVector3(m21, m22, m23);\n            this[2] = new IndexedVector3(m31, m32, m33);\n        }\n\n\n        public IndexedVector3 GetColumn(int i)\n        {\n            Debug.Assert(i >= 0 && i < 3);\n            return new IndexedVector3(_Row0[i], _Row1[i], _Row2[i]);\n        }\n\n        public IndexedVector3 GetRow(int i)\n        {\n            Debug.Assert(i >= 0 && i < 3);\n            switch (i)\n            {\n                case (0):\n                    return _Row0;\n                case (1):\n                    return _Row1;\n                case (2):\n                    return _Row2;\n            }\n            Debug.Assert(false);\n            return IndexedVector3.Zero;\n        }\n\n        public override bool Equals(object obj)\n        {\n            if(!(obj is IndexedBasisMatrix))\n            {\n                return false;\n            }\n\n            var right = (IndexedBasisMatrix) obj;\n            return _Row0.Equals(right._Row0) && _Row1.Equals(right._Row1) && _Row2.Equals(right._Row2);\n        }\n\n        public float this[int i, int j]\n        {\n            get\n            {\n                switch (i)\n                {\n                    case (0):\n                        {\n                            switch (j)\n                            {\n                                case (0):\n                                    return _Row0.X;\n                                case (1):\n                                    return _Row0.Y;\n                                case (2):\n                                    return _Row0.Z;\n                                default:\n                                    break;\n                            }\n                            break;\n                        }\n                    case (1):\n                        {\n                            switch (j)\n                            {\n                                case (0):\n                                    return _Row1.X;\n                                case (1):\n                                    return _Row1.Y;\n                                case (2):\n                                    return _Row1.Z;\n                                default:\n                                    break;\n                            }\n                            break;\n                        }\n                    case (2):\n                        {\n                            switch (j)\n                            {\n                                case (0):\n                                    return _Row2.X;\n                                case (1):\n                                    return _Row2.Y;\n                                case (2):\n                                    return _Row2.Z;\n                                default:\n                                    break;\n                            }\n                            break;\n                        }\n                }\n                Debug.Assert(false);\n                return 0.0f;\n            }\n            set\n            {\n                switch (i)\n                {\n                    case (0):\n                        {\n                            switch (j)\n                            {\n                                case (0):\n                                    _Row0.X = value;\n                                    break;\n                                case (1):\n                                    _Row0.Y = value;\n                                    break;\n                                case (2):\n                                    _Row0.Z = value;\n                                    break;\n                                default:\n                                    break;\n                            }\n                            break;\n                        }\n                    case (1):\n                        {\n                            switch (j)\n                            {\n                                case (0):\n                                    _Row1.X = value;\n                                    break;\n                                case (1):\n                                    _Row1.Y = value;\n                                    break;\n                                case (2):\n                                    _Row1.Z = value;\n                                    break;\n                                default:\n                                    break;\n                            }\n                            break;\n                        }\n                    case (2):\n                        {\n                            switch (j)\n                            {\n                                case (0):\n                                    _Row2.X = value;\n                                    break;\n                                case (1):\n                                    _Row2.Y = value;\n                                    break;\n                                case (2):\n                                    _Row2.Z = value;\n                                    break;\n                                default:\n                                    break;\n                            }\n                            break;\n                        }\n                }\n            }\n\n        }\n\n\n        public IndexedVector3 this[int i]\n        {\n            get\n            {\n                Debug.Assert(i >= 0 && i < 3);\n                switch (i)\n                {\n                    case (0):\n                        return _Row0;\n                    case (1):\n                        return _Row1;\n                    case (2):\n                        return _Row2;\n                }\n                Debug.Assert(false);\n                return IndexedVector3.Zero;\n            }\n            set\n            {\n                Debug.Assert(i >= 0 && i < 3);\n\n                switch (i)\n                {\n                    case (0):\n                        _Row0 = value;\n                        break;\n                    case (1):\n                        _Row1 = value;\n                        break;\n                    case (2):\n                        _Row2 = value;\n                        break;\n                }\n            }\n        }\n\n\n\n        public static IndexedBasisMatrix Transpose(IndexedBasisMatrix IndexedMatrix)\n        {\n            return new IndexedBasisMatrix(IndexedMatrix._Row0.X, IndexedMatrix._Row1.X, IndexedMatrix._Row2.X,\n                IndexedMatrix._Row0.Y, IndexedMatrix._Row1.Y, IndexedMatrix._Row2.Y,\n                IndexedMatrix._Row0.Z, IndexedMatrix._Row1.Z, IndexedMatrix._Row2.Z);\n\n        }\n\n        public static void Transpose(ref IndexedBasisMatrix IndexedMatrix, out IndexedBasisMatrix result)\n        {\n            result = new IndexedBasisMatrix(IndexedMatrix._Row0.X, IndexedMatrix._Row1.X, IndexedMatrix._Row2.X,\n                IndexedMatrix._Row0.Y, IndexedMatrix._Row1.Y, IndexedMatrix._Row2.Y,\n                IndexedMatrix._Row0.Z, IndexedMatrix._Row1.Z, IndexedMatrix._Row2.Z);\n        }\n\n        public static bool operator ==(IndexedBasisMatrix matrix1, IndexedBasisMatrix matrix2)\n        {\n            return matrix1._Row0 == matrix2._Row0 &&\n                matrix1._Row1 == matrix2._Row1 &&\n                matrix1._Row2 == matrix2._Row2;\n        }\n\n        public static bool operator !=(IndexedBasisMatrix matrix1, IndexedBasisMatrix matrix2)\n        {\n            return matrix1._Row0 != matrix2._Row0 ||\n                matrix1._Row1 != matrix2._Row1 ||\n                matrix1._Row2 != matrix2._Row2;\n        }\n\n        public static IndexedVector3 operator *(IndexedBasisMatrix m, IndexedVector3 v)\n        {\n            return new IndexedVector3(m._Row0.Dot(ref v), m._Row1.Dot(ref v), m._Row2.Dot(ref v));\n        }\n\n        public static IndexedVector3 operator *(IndexedVector3 v, IndexedBasisMatrix m)\n        {\n            return new IndexedVector3(m.TDotX(ref v), m.TDotY(ref v), m.TDotZ(ref v));\n        }\n\n        public static IndexedBasisMatrix operator *(IndexedBasisMatrix m1, IndexedBasisMatrix m2)\n        {\n            return new IndexedBasisMatrix(\n                m2.TDotX(ref m1._Row0), m2.TDotY(ref m1._Row0), m2.TDotZ(ref m1._Row0),\n                m2.TDotX(ref m1._Row1), m2.TDotY(ref m1._Row1), m2.TDotZ(ref m1._Row1),\n                m2.TDotX(ref m1._Row2), m2.TDotY(ref m1._Row2), m2.TDotZ(ref m1._Row2));\n        }\n\n\n        public void SetEulerZYX(float eulerX, float eulerY, float eulerZ)\n        {\n            float ci = (float)Math.Cos(eulerX);\n            float cj = (float)Math.Cos(eulerY);\n            float ch = (float)Math.Cos(eulerZ);\n            float si = (float)Math.Sin(eulerX);\n            float sj = (float)Math.Sin(eulerY);\n            float sh = (float)Math.Sin(eulerZ);\n            float cc = ci * ch;\n            float cs = ci * sh;\n            float sc = si * ch;\n            float ss = si * sh;\n\n            SetValue(cj * ch, sj * sc - cs, sj * cc + ss, cj * sh, sj * ss + cc, sj * cs - sc, -sj, cj * si, cj * ci);\n\n        }\n\n        public float TDotX(ref IndexedVector3 v)\n        {\n            return _Row0.X * v.X + _Row1.X * v.Y + _Row2.X * v.Z;\n        }\n        public float TDotY(ref IndexedVector3 v)\n        {\n            return _Row0.Y * v.X + _Row1.Y * v.Y + _Row2.Y * v.Z;\n        }\n        public float TDotZ(ref IndexedVector3 v)\n        {\n            return _Row0.Z * v.X + _Row1.Z * v.Y + _Row2.Z * v.Z;\n        }\n\n        public IndexedBasisMatrix Inverse()\n        {\n            IndexedVector3 co = new IndexedVector3(Cofac(1, 1, 2, 2), Cofac(1, 2, 2, 0), Cofac(1, 0, 2, 1));\n            float det = this[0].Dot(co);\n            Debug.Assert(det != 0.0f);\n            float s = 1.0f / det;\n            return new IndexedBasisMatrix(co.X * s, Cofac(0, 2, 2, 1) * s, Cofac(0, 1, 1, 2) * s,\n                co.Y * s, Cofac(0, 0, 2, 2) * s, Cofac(0, 2, 1, 0) * s,\n                co.Z * s, Cofac(0, 1, 2, 0) * s, Cofac(0, 0, 1, 1) * s);\n\n        }\n\n        public float Cofac(int r1, int c1, int r2, int c2)\n        {\n            // slow?\n            return this[r1][c1] * this[r2][c2] - this[r1][c2] * this[r2][c1];\n        }\n\n        public IndexedBasisMatrix TransposeTimes(IndexedBasisMatrix m)\n        {\n            return new IndexedBasisMatrix(\n        _Row0.X * m._Row0.X + _Row1.X * m._Row1.X + _Row2.X * m._Row2.X,\n        _Row0.X * m._Row0.Y + _Row1.X * m._Row1.Y + _Row2.X * m._Row2.Y,\n        _Row0.X * m._Row0.Z + _Row1.X * m._Row1.Z + _Row2.X * m._Row2.Z,\n        _Row0.Y * m._Row0.X + _Row1.Y * m._Row1.X + _Row2.Y * m._Row2.X,\n        _Row0.Y * m._Row0.Y + _Row1.Y * m._Row1.Y + _Row2.Y * m._Row2.Y,\n        _Row0.Y * m._Row0.Z + _Row1.Y * m._Row1.Z + _Row2.Y * m._Row2.Z,\n        _Row0.Z * m._Row0.X + _Row1.Z * m._Row1.X + _Row2.Z * m._Row2.X,\n        _Row0.Z * m._Row0.Y + _Row1.Z * m._Row1.Y + _Row2.Z * m._Row2.Y,\n        _Row0.Z * m._Row0.Z + _Row1.Z * m._Row1.Z + _Row2.Z * m._Row2.Z);\n\n        }\n\n        public IndexedBasisMatrix TransposeTimes(ref IndexedBasisMatrix m)\n        {\n            return new IndexedBasisMatrix(\n        _Row0.X * m._Row0.X + _Row1.X * m._Row1.X + _Row2.X * m._Row2.X,\n        _Row0.X * m._Row0.Y + _Row1.X * m._Row1.Y + _Row2.X * m._Row2.Y,\n        _Row0.X * m._Row0.Z + _Row1.X * m._Row1.Z + _Row2.X * m._Row2.Z,\n        _Row0.Y * m._Row0.X + _Row1.Y * m._Row1.X + _Row2.Y * m._Row2.X,\n        _Row0.Y * m._Row0.Y + _Row1.Y * m._Row1.Y + _Row2.Y * m._Row2.Y,\n        _Row0.Y * m._Row0.Z + _Row1.Y * m._Row1.Z + _Row2.Y * m._Row2.Z,\n        _Row0.Z * m._Row0.X + _Row1.Z * m._Row1.X + _Row2.Z * m._Row2.X,\n        _Row0.Z * m._Row0.Y + _Row1.Z * m._Row1.Y + _Row2.Z * m._Row2.Y,\n        _Row0.Z * m._Row0.Z + _Row1.Z * m._Row1.Z + _Row2.Z * m._Row2.Z);\n\n        }\n\n        public IndexedBasisMatrix TimesTranspose(IndexedBasisMatrix m)\n        {\n            return new IndexedBasisMatrix(\n                _Row0.Dot(m._Row0), _Row0.Dot(m._Row1), _Row0.Dot(m._Row2),\n                _Row1.Dot(m._Row0), _Row1.Dot(m._Row1), _Row1.Dot(m._Row2),\n                _Row2.Dot(m._Row0), _Row2.Dot(m._Row1), _Row2.Dot(m._Row2));\n        }\n\n\n        public IndexedBasisMatrix Transpose()\n        {\n            return new IndexedBasisMatrix(_Row0.X, _Row1.X, _Row2.X,\n                _Row0.Y, _Row1.Y, _Row2.Y,\n                _Row0.Z, _Row1.Z, _Row2.Z);\n        }\n\n\n\n        public IndexedBasisMatrix Absolute()\n        {\n            return new IndexedBasisMatrix(_Row0.Abs(), _Row1.Abs(), _Row2.Abs());\n        }\n\n        public Quaternion GetRotation()\n        {\n            float trace = _Row0.X + _Row1.Y + _Row2.Z;\n            IndexedVector3 temp = new IndexedVector3();\n            float temp2 = 0f;\n            if (trace > 0.0f)\n            {\n                float s = (float)Math.Sqrt(trace + 1.0f);\n                temp2 = (s * 0.5f);\n                s = 0.5f / s;\n\n                temp[0] = ((_Row2.Y - _Row1.Z) * s);\n                temp[1] = ((_Row0.Z - _Row2.X) * s);\n                temp[2] = ((_Row1.X - _Row0.Y) * s);\n            }\n            else\n            {\n                int i = _Row0.X < _Row1.Y ?\n                    (_Row1.Y < _Row2.Z ? 2 : 1) :\n                    (_Row0.X < _Row2.Z ? 2 : 0);\n                int j = (i + 1) % 3;\n                int k = (i + 2) % 3;\n\n                float s = (float)Math.Sqrt(this[i][i] - this[j][j] - this[k][k] + 1.0f);\n                temp[i] = s * 0.5f;\n                s = 0.5f / s;\n\n                temp2 = (this[k][j] - this[j][k]) * s;\n                temp[j] = (this[j][i] + this[i][j]) * s;\n                temp[k] = (this[k][i] + this[i][k]) * s;\n            }\n            return new Quaternion(temp[0], temp[1], temp[2], temp2);\n\n        }\n\n\n\n        public void SetRotation(Quaternion q)\n        {\n            float d = q.LengthSquared();\n            Debug.Assert(d != 0.0f);\n            float s = 2.0f / d;\n            float xs = q.X * s, ys = q.Y * s, zs = q.Z * s;\n            float wx = q.W * xs, wy = q.W * ys, wz = q.W * zs;\n            float xx = q.X * xs, xy = q.X * ys, xz = q.X * zs;\n            float yy = q.Y * ys, yz = q.Y * zs, zz = q.Z * zs;\n            SetValue(1.0f - (yy + zz), xy - wz, xz + wy,\n                xy + wz, 1.0f - (xx + zz), yz - wx,\n                xz - wy, yz + wx, 1.0f - (xx + yy));\n        }\n\n        public void SetRotation(ref Quaternion q)\n        {\n            float d = q.LengthSquared();\n            Debug.Assert(d != 0.0f);\n            float s = 2.0f / d;\n            float xs = q.X * s, ys = q.Y * s, zs = q.Z * s;\n            float wx = q.W * xs, wy = q.W * ys, wz = q.W * zs;\n            float xx = q.X * xs, xy = q.X * ys, xz = q.X * zs;\n            float yy = q.Y * ys, yz = q.Y * zs, zz = q.Z * zs;\n            SetValue(1.0f - (yy + zz), xy - wz, xz + wy,\n                xy + wz, 1.0f - (xx + zz), yz - wx,\n                xz - wy, yz + wx, 1.0f - (xx + yy));\n        }\n\n\n\n        /**@brief diagonalizes this matrix by the Jacobi method.\n       * @param rot stores the rotation from the coordinate system in which the matrix is diagonal to the original\n       * coordinate system, i.e., old_this = rot * new_this * rot^T. \n       * @param threshold See iteration\n       * @param iteration The iteration stops when all off-diagonal elements are less than the threshold multiplied \n       * by the sum of the absolute values of the diagonal, or when maxSteps have been executed. \n       * \n       * Note that this matrix is assumed to be symmetric. \n       */\n        public void Diagonalize(out IndexedMatrix rot, float threshold, int maxSteps)\n        {\n\n            rot = IndexedMatrix.Identity;\n            for (int step = maxSteps; step > 0; step--)\n            {\n                // find off-diagonal element [p][q] with largest magnitude\n                int p = 0;\n                int q = 1;\n                int r = 2;\n                float max = Math.Abs(this[0][1]);\n                float v = Math.Abs(this[0][2]);\n                if (v > max)\n                {\n                    q = 2;\n                    r = 1;\n                    max = v;\n                }\n                v = Math.Abs(this[1][2]);\n                if (v > max)\n                {\n                    p = 1;\n                    q = 2;\n                    r = 0;\n                    max = v;\n                }\n\n                float t = threshold * (Math.Abs(this[0][0]) + Math.Abs(this[1][1]) + Math.Abs(this[2][2]));\n                if (max <= t)\n                {\n                    if (max <= MathUtil.SIMD_EPSILON * t)\n                    {\n                        return;\n                    }\n                    step = 1;\n                }\n\n                // compute Jacobi rotation J which leads to a zero for element [p][q] \n                float mpq = this[p][q];\n                float theta = (this[q][q] - this[p][p]) / (2 * mpq);\n                float theta2 = theta * theta;\n                float cos;\n                float sin;\n                if (theta2 * theta2 < (10.0f / MathUtil.SIMD_EPSILON))\n                {\n                    t = (theta >= 0.0f) ? (1.0f / (float)(theta + (float)Math.Sqrt(1 + theta2)))\n                        : (1 / (theta - (float)Math.Sqrt(1 + theta2)));\n                    cos = 1.0f / (float)Math.Sqrt(1 + t * t);\n                    sin = cos * t;\n                }\n                else\n                {\n                    // approximation for large theta-value, i.e., a nearly diagonal matrix\n                    t = 1 / (theta * (2 + 0.5f / theta2));\n                    cos = 1 - 0.5f * t * t;\n                    sin = cos * t;\n                }\n\n                // apply rotation to matrix (this = J^T * this * J)\n                this[p, q] = 0;\n                this[q, p] = 0;\n                this[p, p] -= t * mpq;\n                this[q, q] += t * mpq;\n                float mrp = this[r][p];\n                float mrq = this[r][q];\n                this[r, p] = this[p, r] = cos * mrp - sin * mrq;\n                this[r, q] = this[q, r] = cos * mrq + sin * mrp;\n\n                // apply rotation to rot (rot = rot * J)\n                for (int i = 0; i < 3; i++)\n                {\n                    mrp = this[i, p];\n                    mrq = this[i, q];\n                    this[i, p] = cos * mrp - sin * mrq;\n                    this[i, q] = cos * mrq + sin * mrp;\n                }\n            }\n        }\n\n\n\n        public IndexedVector3 _Row0;\n        public IndexedVector3 _Row1;\n        public IndexedVector3 _Row2;\n\n        public override int GetHashCode()\n        {\n            unchecked\n            {\n                int result = _Row0.GetHashCode();\n                result = (result * 397) ^ _Row1.GetHashCode();\n                result = (result * 397) ^ _Row2.GetHashCode();\n                return result;\n            }\n        }\n\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/GImpact/LinearMath/IndexedMatrix.cs",
    "content": "﻿using System;\nusing MinerWarsMath;\n\nnamespace BulletXNA.LinearMath\n{\n    public struct IndexedMatrix : IEquatable<IndexedMatrix>\n    {\n        private static IndexedMatrix _identity = new IndexedMatrix(1f, 0.0f, 0.0f, 0.0f, 1f, 0.0f,  0.0f, 0.0f, 1f,  0.0f, 0.0f, 0.0f);\n        public static IndexedMatrix Identity\n        {\n            get\n            {\n                return IndexedMatrix._identity;\n            }\n        }\n\n        public Matrix ToMatrix()\n        {\n            Matrix matrix = Matrix.Identity;\n            matrix.Right = _basis.GetColumn(0).ToVector3();\n            matrix.Up = _basis.GetColumn(1).ToVector3();\n            matrix.Backward = _basis.GetColumn(2).ToVector3();\n            //matrix.Right = _basis.GetRow(0).ToVector3();\n            //matrix.Up = _basis.GetRow(1).ToVector3();\n            //matrix.Backward = _basis.GetRow(2).ToVector3();\n\n            matrix.Translation = _origin.ToVector3();\n            return matrix;\n        }\n\n        // User-defined conversion from IndexedVector3 to Vector3\n        public static implicit operator Matrix(IndexedMatrix im)\n        {\n            Matrix matrix = Matrix.Identity;\n            matrix.Right = im._basis.GetColumn(0).ToVector3();\n            matrix.Up = im._basis.GetColumn(1).ToVector3();\n            matrix.Backward = im._basis.GetColumn(2).ToVector3();\n            matrix.Translation = im._origin.ToVector3();\n            return matrix;\n        }\n\n        // User-defined conversion from IndexedVector3 to Vector3\n        public static implicit operator IndexedMatrix(Matrix m)\n        {\n            IndexedMatrix im = new IndexedMatrix();\n            im._origin = new IndexedVector3(m.Translation);\n            //_basis = new IndexedBasisMatrix(new IndexedVector3(m.Right), new IndexedVector3(m.Up), new IndexedVector3(m.Backward)).Transpose();\n            im._basis = new IndexedBasisMatrix(new IndexedVector3(m.Right), new IndexedVector3(m.Up), new IndexedVector3(m.Backward));\n            return im;\n        }\n\n\n\n        public Matrix ToMatrixProjection()\n        {\n            Matrix matrix = Matrix.Identity;\n            matrix.Right = _basis.GetColumn(0).ToVector3();\n            matrix.Up = _basis.GetColumn(1).ToVector3();\n            matrix.Backward = _basis.GetColumn(2).ToVector3();\n            //matrix.Right = _basis.GetRow(0).ToVector3();\n            //matrix.Up = _basis.GetRow(1).ToVector3();\n            //matrix.Backward = _basis.GetRow(2).ToVector3();\n\n            matrix.Translation = _origin.ToVector3();\n            matrix.M34 = -1;\n            matrix.M44 = 0;\n            return matrix;\n        }\n\n\n        static IndexedMatrix()\n        {\n        }\n\n        public IndexedMatrix(float m11, float m12, float m13, float m21, float m22, float m23,  float m31, float m32, float m33,  float m41, float m42, float m43)\n        {\n            _basis = new IndexedBasisMatrix(m11, m12, m13, m21, m22, m23, m31, m32, m33);\n            _origin = new IndexedVector3(m41, m42, m43);\n\n        }\n\n        public IndexedMatrix(IndexedBasisMatrix basis, IndexedVector3 origin)\n        {\n            _basis = basis;\n            _origin = origin;\n        }\n\n        public IndexedMatrix(Matrix m)\n        {\n            _origin = new IndexedVector3(m.Translation);\n            //_basis = new IndexedBasisMatrix(new IndexedVector3(m.Right), new IndexedVector3(m.Up), new IndexedVector3(m.Backward)).Transpose();\n            _basis = new IndexedBasisMatrix(new IndexedVector3(m.Right), new IndexedVector3(m.Up), new IndexedVector3(m.Backward));\n        }\n\n        public static IndexedMatrix CreateLookAt(IndexedVector3 cameraPosition, IndexedVector3 cameraTarget, IndexedVector3 cameraUpVector)\n        {\n            IndexedVector3 vector3_1 = IndexedVector3.Normalize(cameraPosition - cameraTarget);\n            IndexedVector3 vector3_2 = IndexedVector3.Normalize(IndexedVector3.Cross(cameraUpVector, vector3_1));\n            IndexedVector3 vector1 = IndexedVector3.Cross(vector3_1, vector3_2);\n            IndexedMatrix matrix = IndexedMatrix.Identity;\n            //matrix._basis = new IndexedBasisMatrix(vector3_2.X, vector1.X, vector3_1.X, vector3_2.Y, vector1.Y, vector3_1.Y, vector3_2.Z, vector1.Z, vector3_1.Z).Transpose();\n            matrix._basis = new IndexedBasisMatrix(ref vector3_2, ref vector1, ref vector3_1);\n\n            matrix._origin = new IndexedVector3(-IndexedVector3.Dot(vector3_2, cameraPosition),\n            -IndexedVector3.Dot(vector1, cameraPosition),\n            -IndexedVector3.Dot(vector3_1, cameraPosition));\n            return matrix;\n        }\n\n        public static IndexedMatrix CreatePerspectiveFieldOfView(float fieldOfView, float aspectRatio, float nearPlaneDistance, float farPlaneDistance)\n        {\n        //    if ((double)fieldOfView <= 0.0 || (double)fieldOfView >= 3.14159274101257)\n        //        throw new ArgumentOutOfRangeException(\"fieldOfView\", string.Format((IFormatProvider)CultureInfo.CurrentCulture, FrameworkResources.OutRangeFieldOfView, new object[1]\n        //{\n        //  (object) \"fieldOfView\"\n        //}));\n        //    else if ((double)nearPlaneDistance <= 0.0)\n        //        throw new ArgumentOutOfRangeException(\"nearPlaneDistance\", string.Format((IFormatProvider)CultureInfo.CurrentCulture, FrameworkResources.NegativePlaneDistance, new object[1]\n        //{\n        //  (object) \"nearPlaneDistance\"\n        //}));\n        //    else if ((double)farPlaneDistance <= 0.0)\n        //    {\n        //        throw new ArgumentOutOfRangeException(\"farPlaneDistance\", string.Format((IFormatProvider)CultureInfo.CurrentCulture, FrameworkResources.NegativePlaneDistance, new object[1]\n        //{\n        //  (object) \"farPlaneDistance\"\n        //}));\n        //    }\n        //    else\n            {\n                //if ((double)nearPlaneDistance >= (double)farPlaneDistance)\n                //    throw new ArgumentOutOfRangeException(\"nearPlaneDistance\", FrameworkResources.OppositePlanes);\n                float num1 = 1f / (float)Math.Tan((double)fieldOfView * 0.5);\n                float num2 = num1 / aspectRatio;\n                IndexedMatrix matrix = IndexedMatrix.Identity ;\n                matrix._basis = new IndexedBasisMatrix(num2, 0, 0, 0, num1, 0, 0, 0, farPlaneDistance / (nearPlaneDistance - farPlaneDistance));\n                matrix._origin = new IndexedVector3(0,0,(float)((double)nearPlaneDistance * (double)farPlaneDistance / ((double)nearPlaneDistance - (double)farPlaneDistance)));\n                \n                return matrix;\n            }\n        }\n\n\n        public static bool operator ==(IndexedMatrix matrix1, IndexedMatrix matrix2)\n        {\n            return matrix1._basis == matrix2._basis &&\n                    matrix1._origin == matrix2._origin; \n        }\n\n        public static bool operator !=(IndexedMatrix matrix1, IndexedMatrix matrix2)\n        {\n            return matrix1._basis != matrix2._basis ||\n                    matrix1._origin != matrix2._origin;\n        }\n\n\t    public static IndexedVector3 operator *(IndexedMatrix matrix1,IndexedVector3 v)\n\t    {\n            //return new IndexedVector3(matrix1._basis[0].Dot(ref v) + matrix1._origin.X, \n            //                           matrix1._basis[1].Dot(ref v) + matrix1._origin.Y,\n            //                            matrix1._basis[2].Dot(ref v) + matrix1._origin.Z);\n            return new IndexedVector3(matrix1._basis._Row0.Dot(ref v) + matrix1._origin.X,\n                                                   matrix1._basis._Row1.Dot(ref v) + matrix1._origin.Y,\n                                                    matrix1._basis._Row2.Dot(ref v) + matrix1._origin.Z);\n        }\n\n        //public static IndexedVector3 operator *(IndexedVector3 v,IndexedMatrix matrix1)\n        //{\n        //    return new IndexedVector3(matrix1._basis[0].Dot(ref v) + matrix1._origin.X,\n        //                               matrix1._basis[1].Dot(ref v) + matrix1._origin.Y,\n        //                                matrix1._basis[2].Dot(ref v) + matrix1._origin.Z);\n        //}\n\n        public static IndexedMatrix operator *(IndexedMatrix matrix1, IndexedMatrix matrix2)\n        {\n            IndexedMatrix IndexedMatrix;\n            IndexedMatrix._basis = matrix1._basis * matrix2._basis;\n            IndexedMatrix._origin = matrix1 * matrix2._origin;\n\n            return IndexedMatrix;\n        }\n\n        //public static IndexedMatrix operator *(IndexedMatrix matrix1, float scaleFactor)\n        //{\n        //    float num = scaleFactor;\n        //    IndexedMatrix IndexedMatrix;\n        //    IndexedMatrix._basis._Row0 = matrix1._Row0  * scaleFactor;\n        //    IndexedMatrix._basis._Row1 = matrix1._Row1 * scaleFactor;\n        //    IndexedMatrix._basis._Row3 = matrix1._Row3 * scaleFactor;\n        //    IndexedMatrix._basis.Row3 = matrix1.Row3 * scaleFactor;\n        //    return IndexedMatrix;\n        //}\n\n        //public static IndexedMatrix operator *(float scaleFactor, IndexedMatrix matrix1)\n        //{\n        //    IndexedMatrix IndexedMatrix;\n        //    IndexedMatrix._basis._Row0 = matrix1._basis._Row0 * scaleFactor;\n        //    IndexedMatrix._basis._Row1 = matrix1._basis._Row1 * scaleFactor;\n        //    IndexedMatrix._basis._Row2 = matrix1._basis._Row2 * scaleFactor;\n        //    IndexedMatrix._origin = matrix1._origin* scaleFactor;\n        //    return IndexedMatrix;\n        //}\n\n        public static IndexedMatrix operator /(IndexedMatrix matrix1, IndexedMatrix matrix2)\n        {\n            IndexedMatrix IndexedMatrix;\n            IndexedMatrix._basis._Row0 = matrix1._basis._Row0 / matrix2._basis._Row0;\n            IndexedMatrix._basis._Row1 = matrix1._basis._Row1 / matrix2._basis._Row1;\n            IndexedMatrix._basis._Row2 = matrix1._basis._Row2 / matrix2._basis._Row2;\n            IndexedMatrix._origin = matrix1._origin / matrix2._origin;\n            return IndexedMatrix;\n        }\n\n        public static IndexedMatrix operator /(IndexedMatrix matrix1, float divider)\n        {\n            float num = 1f / divider;\n            IndexedMatrix IndexedMatrix;\n            IndexedMatrix._basis._Row0 = matrix1._basis._Row0 * num;\n            IndexedMatrix._basis._Row1 = matrix1._basis._Row1 * num;\n            IndexedMatrix._basis._Row2 = matrix1._basis._Row2 * num;\n            IndexedMatrix._origin = matrix1._origin * num;\n            return IndexedMatrix;\n        }\n\n\n        public static IndexedMatrix CreateTranslation(IndexedVector3 position)\n        {\n            IndexedMatrix IndexedMatrix;\n            IndexedMatrix._basis._Row0 = new IndexedVector3(1, 0, 0);\n            IndexedMatrix._basis._Row1 = new IndexedVector3(0, 1, 0);\n            IndexedMatrix._basis._Row2 = new IndexedVector3(0, 0, 1);\n            IndexedMatrix._origin = position;            \n            return IndexedMatrix;\n        }\n\n        public static void CreateTranslation(ref IndexedVector3 position, out IndexedMatrix result)\n        {\n            result._basis._Row0 = new IndexedVector3(1, 0, 0);\n            result._basis._Row1 = new IndexedVector3(0, 1, 0);\n            result._basis._Row2 = new IndexedVector3(0, 0, 1);\n            result._origin =  position;\n        }\n\n        public static IndexedMatrix CreateTranslation(float xPosition, float yPosition, float zPosition)\n        {\n            IndexedMatrix IndexedMatrix;\n            IndexedMatrix._basis._Row0 = new IndexedVector3(1, 0, 0);\n            IndexedMatrix._basis._Row1 = new IndexedVector3(0, 1, 0);\n            IndexedMatrix._basis._Row2 = new IndexedVector3(0, 0, 1);\n            IndexedMatrix._origin = new IndexedVector3(xPosition, yPosition, zPosition);\n            return IndexedMatrix;\n        }\n\n        public static void CreateTranslation(float xPosition, float yPosition, float zPosition, out IndexedMatrix result)\n        {\n            result._basis._Row0 = new IndexedVector3(1, 0, 0);\n            result._basis._Row1 = new IndexedVector3(0, 1, 0);\n            result._basis._Row2 = new IndexedVector3(0, 0, 1);\n            result._origin = new IndexedVector3(xPosition, yPosition, zPosition);\n        }\n\n        public static IndexedMatrix CreateScale(float xScale, float yScale, float zScale)\n        {\n            IndexedMatrix IndexedMatrix;\n            IndexedMatrix._basis._Row0 = new IndexedVector3(xScale, 0, 0);\n            IndexedMatrix._basis._Row1 = new IndexedVector3(0, yScale, 0);\n            IndexedMatrix._basis._Row2 = new IndexedVector3(0, 0, zScale);\n            IndexedMatrix._origin = new IndexedVector3(0, 0, 0);\n            return IndexedMatrix;\n        }\n\n        public static void CreateScale(float xScale, float yScale, float zScale, out IndexedMatrix result)\n        {\n            result._basis._Row0 = new IndexedVector3(xScale, 0, 0);\n            result._basis._Row1 = new IndexedVector3(0, yScale, 0);\n            result._basis._Row2 = new IndexedVector3(0, 0, zScale);\n            result._origin = new IndexedVector3(0,0,0);\n        }\n\n        public static IndexedMatrix CreateScale(IndexedVector3 scales)\n        {\n            IndexedMatrix IndexedMatrix;\n            IndexedMatrix._basis._Row0 = new IndexedVector3(scales.X, 0, 0);\n            IndexedMatrix._basis._Row1 = new IndexedVector3(0, scales.Y, 0);\n            IndexedMatrix._basis._Row2 = new IndexedVector3(0, 0, scales.Z);\n            IndexedMatrix._origin = new IndexedVector3(0, 0, 0);\n            return IndexedMatrix;\n        }\n\n        public static void CreateScale(ref IndexedVector3 scales, out IndexedMatrix result)\n        {\n            result._basis._Row0 = new IndexedVector3(scales.X, 0, 0);\n            result._basis._Row1 = new IndexedVector3(0, scales.Y, 0);\n            result._basis._Row2 = new IndexedVector3(0, 0, scales.Z);\n            result._origin = new IndexedVector3(0, 0, 0);\n        }\n\n        public static IndexedMatrix CreateScale(float scale)\n        {\n            IndexedMatrix IndexedMatrix;\n            IndexedMatrix._basis._Row0 = new IndexedVector3(scale, 0, 0);\n            IndexedMatrix._basis._Row1 = new IndexedVector3(0, scale, 0);\n            IndexedMatrix._basis._Row2 = new IndexedVector3(0, 0, scale);\n            IndexedMatrix._origin = new IndexedVector3(0, 0, 0);\n            return IndexedMatrix;\n        }\n\n        public static void CreateScale(float scale, out IndexedMatrix result)\n        {\n            result._basis._Row0 = new IndexedVector3(scale, 0, 0);\n            result._basis._Row1 = new IndexedVector3(0, scale, 0);\n            result._basis._Row2 = new IndexedVector3(0, 0, scale);\n            result._origin = new IndexedVector3(0, 0, 0);\n        }\n\n        public static IndexedMatrix CreateRotationX(float radians)\n        {\n            float num1 = (float)Math.Cos((double)radians);\n            float num2 = (float)Math.Sin((double)radians);\n            IndexedMatrix IndexedMatrix;\n            IndexedMatrix._basis._Row0 = new IndexedVector3(1, 0, 0);\n            IndexedMatrix._basis._Row1 = new IndexedVector3(0, num1, num2);\n            IndexedMatrix._basis._Row2 = new IndexedVector3(0, -num2, num1);\n            IndexedMatrix._origin = new IndexedVector3(0, 0, 0);\n            \n            return IndexedMatrix;\n        }\n\n        public static void CreateRotationX(float radians, out IndexedMatrix result)\n        {\n            float num1 = (float)Math.Cos((double)radians);\n            float num2 = (float)Math.Sin((double)radians);\n            result._basis._Row0 = new IndexedVector3(1, 0, 0);\n            result._basis._Row1 = new IndexedVector3(0, num1, num2);\n            result._basis._Row2 = new IndexedVector3(0, -num2, num1);\n            result._origin = new IndexedVector3(0, 0, 0);\n        }\n\n        public static IndexedMatrix CreateRotationY(float radians)\n        {\n            float num1 = (float)Math.Cos((double)radians);\n            float num2 = (float)Math.Sin((double)radians);\n            IndexedMatrix IndexedMatrix;\n            IndexedMatrix._basis._Row0 = new IndexedVector3(num1, 0, -num2);\n            IndexedMatrix._basis._Row1 = new IndexedVector3(0, 1, 0);\n            IndexedMatrix._basis._Row2 = new IndexedVector3(num2, -0, num1);\n            IndexedMatrix._origin = new IndexedVector3(0, 0, 0);\n            return IndexedMatrix;\n        }\n\n        public static void CreateRotationY(float radians, out IndexedMatrix result)\n        {\n            float num1 = (float)Math.Cos((double)radians);\n            float num2 = (float)Math.Sin((double)radians);\n            result._basis._Row0 = new IndexedVector3(num1, 0, -num2);\n            result._basis._Row1 = new IndexedVector3(0, 1, 0);\n            result._basis._Row2 = new IndexedVector3(num2, -0, num1);\n            result._origin = new IndexedVector3(0, 0, 0);\n        }\n\n        public static IndexedMatrix CreateRotationZ(float radians)\n        {\n            float num1 = (float)Math.Cos((double)radians);\n            float num2 = (float)Math.Sin((double)radians);\n            IndexedMatrix IndexedMatrix;\n            IndexedMatrix._basis._Row0 = new IndexedVector3(num1, num2, 0);\n            IndexedMatrix._basis._Row1 = new IndexedVector3(-num2, num1, 0);\n            IndexedMatrix._basis._Row2 = new IndexedVector3(0,0,1);\n            IndexedMatrix._origin = new IndexedVector3(0, 0, 0);\n            return IndexedMatrix;\n        }\n\n        public static void CreateRotationZ(float radians, out IndexedMatrix result)\n        {\n            float num1 = (float)Math.Cos((double)radians);\n            float num2 = (float)Math.Sin((double)radians);\n            result._basis._Row0 = new IndexedVector3(num1, num2, 0);\n            result._basis._Row1 = new IndexedVector3(-num2, num1, 0);\n            result._basis._Row2 = new IndexedVector3(0, 0, 1);\n            result._origin = new IndexedVector3(0, 0, 0);\n        }\n\n        public bool Equals(IndexedMatrix other)\n        {\n            return _basis.Equals(other._basis) && _origin.Equals(other._origin);\n        }\n\n        public override bool Equals(object obj)\n        {\n            bool flag = false;\n            if (obj is IndexedMatrix)\n                flag = this.Equals((IndexedMatrix)obj);\n            return flag;\n        }\n\n        public override int GetHashCode()\n        {\n            return this._basis.GetHashCode() + this._origin.GetHashCode();\n        }\n\n        public IndexedMatrix Inverse()\n\t    { \n\t\t    IndexedBasisMatrix inv = _basis.Transpose();\n            return new IndexedMatrix(inv, inv * -_origin);\n\t    }\n\n        public IndexedVector3 InvXform(IndexedVector3 inVec)\n        {\n            IndexedVector3 v = inVec - _origin;\n            return (_basis.Transpose() * v);\n        }\n\n        public IndexedVector3 InvXform(ref IndexedVector3 inVec)\n        {\n\t        IndexedVector3 v = inVec - _origin;\n\t        return (_basis.Transpose() * v);\n        }\n\n        public IndexedMatrix InverseTimes(ref IndexedMatrix t)\n        {\n            IndexedVector3 v = t._origin - _origin;\n            return new IndexedMatrix(_basis.TransposeTimes(t._basis),\n\t\t\t        v * _basis);\n        }\n\n\t    public Quaternion GetRotation() \n        { \n\t\t    return _basis.GetRotation();\n\t    }\n\n        public static IndexedMatrix CreateFromQuaternion(Quaternion q)\n        {\n            IndexedMatrix i = new IndexedMatrix();\n            i._basis.SetRotation(ref q);\n            return i;\n        }\n\n        public static IndexedMatrix CreateFromQuaternion(ref Quaternion q)\n        {\n            IndexedMatrix i = new IndexedMatrix();\n            i._basis.SetRotation(ref q);\n            return i;\n        }\n\n\n\n        public IndexedBasisMatrix _basis;\n        public IndexedVector3 _origin;\n    \n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/GImpact/LinearMath/IndexedVector3.cs",
    "content": "﻿using System;\nusing System.Diagnostics;\nusing MinerWarsMath;\n\nnamespace BulletXNA.LinearMath\n{\n    public struct IndexedVector3\n    {\n        public IndexedVector3(float x, float y, float z)\n        {\n            X = x;\n            Y = y;\n            Z = z;\n        }\n\n        public IndexedVector3(float x)\n        {\n            X = x;\n            Y = x;\n            Z = x;\n        }\n\n        public IndexedVector3(IndexedVector3 v)\n        {\n            X = v.X;\n            Y = v.Y;\n            Z = v.Z;\n        }\n\n        public IndexedVector3(ref IndexedVector3 v)\n        {\n            X = v.X;\n            Y = v.Y;\n            Z = v.Z;\n        }\n\n\n        public IndexedVector3(ref Vector3 v)\n        {\n            X = v.X;\n            Y = v.Y;\n            Z = v.Z;\n        }\n\n        public IndexedVector3(Vector3 v)\n        {\n            X = v.X;\n            Y = v.Y;\n            Z = v.Z;\n        }\n\n        public IndexedVector3(ref Vector4 v)\n        {\n            X = v.X;\n            Y = v.Y;\n            Z = v.Z;\n        }\n        public IndexedVector3(Vector4 v)\n        {\n            X = v.X;\n            Y = v.Y;\n            Z = v.Z;\n        }\n\n\n        public float Length()\n        {\n            return (float)Math.Sqrt(X * X + Y * Y + Z * Z);\n        }\n\n        public float LengthSquared()\n        {\n            return X * X + Y * Y + Z * Z;\n        }\n        public Vector3 ToVector3()\n        {\n            return new Vector3(X, Y, Z);\n        }\n\n        public void ToVector3(out Vector3 result)\n        {\n            result = new Vector3(X, Y, Z);\n        }\n\n        public void Abs(out IndexedVector3 result)\n        {\n            result.X = Math.Abs(X);\n            result.Y = Math.Abs(Y);\n            result.Z = Math.Abs(Z);\n        }\n\n        public IndexedVector3 Abs()\n        {\n            return new IndexedVector3(Math.Abs(X), Math.Abs(Y), Math.Abs(Z));\n        }\n\n        public IndexedVector3 Absolute()\n        {\n            return new IndexedVector3(Math.Abs(X), Math.Abs(Y), Math.Abs(Z));\n        }\n\n        public void Normalize()\n        {\n            float num = 1f / (float)Math.Sqrt(this.X * this.X + this.Y * this.Y + this.Z * this.Z);\n            this.X *= num;\n            this.Y *= num;\n            this.Z *= num;\n        }\n\n        public IndexedVector3 Normalized()\n        {\n            float num = 1f / (float)Math.Sqrt(X * X + Y * Y + Z * Z);\n            return new IndexedVector3(X * num, Y * num, Z * num);\n\n\n        }\n\n        public static void Transform(IndexedVector3[] source, ref IndexedMatrix t, IndexedVector3[] dest)\n        {\n            for (int i = 0; i < source.Length; ++i)\n            {\n                dest[i] = t * source[i];\n            }\n        }\n\n\n        public static IndexedVector3 Normalize(IndexedVector3 v)\n        {\n            float num = 1f / (float)Math.Sqrt(v.X * v.X + v.Y * v.Y + v.Z * v.Z);\n            return new IndexedVector3(v.X * num, v.Y * num, v.Z * num);\n        }\n\n        public static IndexedVector3 Normalize(ref IndexedVector3 v)\n        {\n            float num = 1f / (float)Math.Sqrt(v.X * v.X + v.Y * v.Y + v.Z * v.Z);\n            return new IndexedVector3(v.X * num, v.Y * num, v.Z * num);\n        }\n\n\n        public IndexedVector3 Cross(ref IndexedVector3 v)\n        {\n            return new IndexedVector3(\n                Y * v.Z - Z * v.Y,\n                Z * v.X - X * v.Z,\n                X * v.Y - Y * v.X);\n        }\n\n        public IndexedVector3 Cross(IndexedVector3 v)\n        {\n            return new IndexedVector3(\n                Y * v.Z - Z * v.Y,\n                Z * v.X - X * v.Z,\n                X * v.Y - Y * v.X);\n        }\n\n        public static IndexedVector3 Cross(IndexedVector3 v, IndexedVector3 v2)\n        {\n            return new IndexedVector3(\n                v.Y * v2.Z - v.Z * v2.Y,\n                v.Z * v2.X - v.X * v2.Z,\n                v.X * v2.Y - v.Y * v2.X);\n        }\n\n        public static IndexedVector3 Cross(ref IndexedVector3 v, ref IndexedVector3 v2)\n        {\n            return new IndexedVector3(\n                v.Y * v2.Z - v.Z * v2.Y,\n                v.Z * v2.X - v.X * v2.Z,\n                v.X * v2.Y - v.Y * v2.X);\n        }\n\n\n\n\n        public static float Dot(IndexedVector3 a, IndexedVector3 b)\n        {\n            return (a.X * b.X) + (a.Y * b.Y) + (a.Z * b.Z);\n        }\n\n        public static float Dot(ref IndexedVector3 a, ref IndexedVector3 b)\n        {\n            return (a.X * b.X) + (a.Y * b.Y) + (a.Z * b.Z);\n        }\n\n        public static void Dot(ref IndexedVector3 a, ref IndexedVector3 b, out float r)\n        {\n            r = (a.X * b.X) + (a.Y * b.Y) + (a.Z * b.Z);\n        }\n\n        public static float Dot(ref IndexedVector3 a, ref Vector3 b)\n        {\n            return (a.X * b.X) + (a.Y * b.Y) + (a.Z * b.Z);\n        }\n\n        public static float Dot(IndexedVector3 a, Vector3 b)\n        {\n            return (a.X * b.X) + (a.Y * b.Y) + (a.Z * b.Z);\n        }\n\n        public static float Dot(Vector3 a, IndexedVector3 b)\n        {\n            return (a.X * b.X) + (a.Y * b.Y) + (a.Z * b.Z);\n        }\n\n        public static IndexedVector3 operator +(IndexedVector3 value1, IndexedVector3 value2)\n        {\n            IndexedVector3 vector;\n            vector.X = value1.X + value2.X;\n            vector.Y = value1.Y + value2.Y;\n            vector.Z = value1.Z + value2.Z;\n            return vector;\n        }\n\n        public static IndexedVector3 operator +(Vector3 value1, IndexedVector3 value2)\n        {\n            IndexedVector3 vector;\n            vector.X = value1.X + value2.X;\n            vector.Y = value1.Y + value2.Y;\n            vector.Z = value1.Z + value2.Z;\n            return vector;\n        }\n\n        public static IndexedVector3 operator +(IndexedVector3 value1, Vector3 value2)\n        {\n            IndexedVector3 vector;\n            vector.X = value1.X + value2.X;\n            vector.Y = value1.Y + value2.Y;\n            vector.Z = value1.Z + value2.Z;\n            return vector;\n        }\n\n        public static IndexedVector3 operator -(Vector3 value1, IndexedVector3 value2)\n        {\n            IndexedVector3 vector;\n            vector.X = value1.X - value2.X;\n            vector.Y = value1.Y - value2.Y;\n            vector.Z = value1.Z - value2.Z;\n            return vector;\n        }\n\n        public static IndexedVector3 operator -(IndexedVector3 value1, Vector3 value2)\n        {\n            IndexedVector3 vector;\n            vector.X = value1.X - value2.X;\n            vector.Y = value1.Y - value2.Y;\n            vector.Z = value1.Z - value2.Z;\n            return vector;\n        }\n\n\n\n        public static IndexedVector3 operator -(IndexedVector3 value1, IndexedVector3 value2)\n        {\n            IndexedVector3 vector;\n            vector.X = value1.X - value2.X;\n            vector.Y = value1.Y - value2.Y;\n            vector.Z = value1.Z - value2.Z;\n            return vector;\n        }\n\n        public static IndexedVector3 operator *(IndexedVector3 value, float scaleFactor)\n        {\n            IndexedVector3 vector;\n            vector.X = value.X * scaleFactor;\n            vector.Y = value.Y * scaleFactor;\n            vector.Z = value.Z * scaleFactor;\n            return vector;\n        }\n\n        public static IndexedVector3 operator /(IndexedVector3 value, float scaleFactor)\n        {\n\n            float num = 1f / scaleFactor;\n            IndexedVector3 vector3;\n            vector3.X = value.X * num;\n            vector3.Y = value.Y * num;\n            vector3.Z = value.Z * num;\n            return vector3;\n        }\n\n\n        public static IndexedVector3 operator *(float scaleFactor, IndexedVector3 value)\n        {\n            IndexedVector3 vector;\n            vector.X = value.X * scaleFactor;\n            vector.Y = value.Y * scaleFactor;\n            vector.Z = value.Z * scaleFactor;\n            return vector;\n        }\n\n\n        public static IndexedVector3 operator -(IndexedVector3 value)\n        {\n            IndexedVector3 vector;\n            vector.X = -value.X;\n            vector.Y = -value.Y;\n            vector.Z = -value.Z;\n            return vector;\n        }\n\n        public static IndexedVector3 operator *(IndexedVector3 value1, IndexedVector3 value2)\n        {\n            IndexedVector3 vector;\n            vector.X = value1.X * value2.X;\n            vector.Y = value1.Y * value2.Y;\n            vector.Z = value1.Z * value2.Z;\n            return vector;\n        }\n\n        public static void Multiply(ref IndexedVector3 output, ref IndexedVector3 value1, ref IndexedVector3 value2)\n        {\n            output.X = value1.X * value2.X;\n            output.Y = value1.Y * value2.Y;\n            output.Z = value1.Z * value2.Z;\n        }\n\n        public static void Subtract(ref IndexedVector3 output, ref IndexedVector3 value1, ref IndexedVector3 value2)\n        {\n            output.X = value1.X - value2.X;\n            output.Y = value1.Y - value2.Y;\n            output.Z = value1.Z - value2.Z;\n        }\n\n\n        public static IndexedVector3 operator /(IndexedVector3 value1, IndexedVector3 value2)\n        {\n            IndexedVector3 vector;\n            vector.X = value1.X / value2.X;\n            vector.Y = value1.Y / value2.Y;\n            vector.Z = value1.Z / value2.Z;\n            return vector;\n        }\n\n        //public static IndexedVector3 Transform(IndexedVector3 position, IndexedMatrix matrix)\n        //{\n        //    IndexedVector3 vector;\n        //    float num3 = (((position.X * matrix.M11) + (position.Y * matrix.M21)) + (position.Z * matrix.M31)) + matrix.M41;\n        //    float num2 = (((position.X * matrix.M12) + (position.Y * matrix.M22)) + (position.Z * matrix.M32)) + matrix.M42;\n        //    float num = (((position.X * matrix.M13) + (position.Y * matrix.M23)) + (position.Z * matrix.M33)) + matrix.M43;\n        //    vector.X = num3;\n        //    vector.Y = num2;\n        //    vector.Z = num;\n        //    return vector;\n        //}\n\n\n        //public static IndexedVector3 Transform(ref IndexedVector3 position, ref IndexedMatrix matrix)\n        //{\n        //    IndexedVector3 vector;\n        //    float num3 = (((position.X * matrix.M11) + (position.Y * matrix.M21)) + (position.Z * matrix.M31)) + matrix.M41;\n        //    float num2 = (((position.X * matrix.M12) + (position.Y * matrix.M22)) + (position.Z * matrix.M32)) + matrix.M42;\n        //    float num = (((position.X * matrix.M13) + (position.Y * matrix.M23)) + (position.Z * matrix.M33)) + matrix.M43;\n        //    vector.X = num3;\n        //    vector.Y = num2;\n        //    vector.Z = num;\n        //    return vector;\n        //}\n\n        //public static void Transform(ref IndexedVector3 position, ref IndexedMatrix matrix,out IndexedVector3 vector)\n        //{\n        //    float num3 = (((position.X * matrix.M11) + (position.Y * matrix.M21)) + (position.Z * matrix.M31)) + matrix.M41;\n        //    float num2 = (((position.X * matrix.M12) + (position.Y * matrix.M22)) + (position.Z * matrix.M32)) + matrix.M42;\n        //    float num = (((position.X * matrix.M13) + (position.Y * matrix.M23)) + (position.Z * matrix.M33)) + matrix.M43;\n        //    vector.X = num3;\n        //    vector.Y = num2;\n        //    vector.Z = num;\n        //}\n\n\n        //public static IndexedVector3 TransformNormal(IndexedVector3 position, IndexedMatrix matrix)\n        //{\n        //    IndexedVector3 vector;\n        //    float num3 = (((position.X * matrix.M11) + (position.Y * matrix.M21)) + (position.Z * matrix.M31));\n        //    float num2 = (((position.X * matrix.M12) + (position.Y * matrix.M22)) + (position.Z * matrix.M32));\n        //    float num = (((position.X * matrix.M13) + (position.Y * matrix.M23)) + (position.Z * matrix.M33));\n        //    vector.X = num3;\n        //    vector.Y = num2;\n        //    vector.Z = num;\n        //    return vector;\n        //}\n\n        //public static IndexedVector3 TransformNormal(ref IndexedVector3 position, ref IndexedMatrix matrix)\n        //{\n        //    IndexedVector3 vector;\n        //    float num3 = (((position.X * matrix.M11) + (position.Y * matrix.M21)) + (position.Z * matrix.M31));\n        //    float num2 = (((position.X * matrix.M12) + (position.Y * matrix.M22)) + (position.Z * matrix.M32));\n        //    float num = (((position.X * matrix.M13) + (position.Y * matrix.M23)) + (position.Z * matrix.M33));\n        //    vector.X = num3;\n        //    vector.Y = num2;\n        //    vector.Z = num;\n        //    return vector;\n        //}\n\n        //public static void TransformNormal(ref IndexedVector3 position, ref IndexedMatrix matrix, out IndexedVector3 vector)\n        //{\n        //    float num3 = (((position.X * matrix.M11) + (position.Y * matrix.M21)) + (position.Z * matrix.M31));\n        //    float num2 = (((position.X * matrix.M12) + (position.Y * matrix.M22)) + (position.Z * matrix.M32));\n        //    float num = (((position.X * matrix.M13) + (position.Y * matrix.M23)) + (position.Z * matrix.M33));\n        //    vector.X = num3;\n        //    vector.Y = num2;\n        //    vector.Z = num;\n        //}\n\n\n        public float[] ToFloatArray()\n        {\n            return new float[] { X, Y, Z };\n        }\n\n        public static void Lerp(ref IndexedVector3 a, ref IndexedVector3 b, float t, out IndexedVector3 c)\n        {\n            c = new IndexedVector3(\n                a.X + (b.X - a.X) * t,\n                a.Y + (b.Y - a.Y) * t,\n                a.Z + (b.Z - a.Z) * t);\n        }\n\n        public static IndexedVector3 Lerp(ref IndexedVector3 a, ref IndexedVector3 b, float t)\n        {\n            return new IndexedVector3(\n                a.X + (b.X - a.X) * t,\n                a.Y + (b.Y - a.Y) * t,\n                a.Z + (b.Z - a.Z) * t);\n        }\n\n\n        // FIXME - try this as a switch??\n        public float this[int i]\n        {\n            get\n            {\n                switch (i)\n                {\n                    case (0): return X;\n                    case (1): return Y;\n                    case (2): return Z;\n                    default:\n                        {\n                            Debug.Assert(false);\n                            return 0.0f;\n                        }\n                }\n            }\n            set\n            {\n                switch (i)\n                {\n                    case (0): X = value; break;\n                    case (1): Y = value; break;\n                    case (2): Z = value; break;\n                    default:\n                        {\n                            Debug.Assert(false);\n                            break;\n                        }\n                }\n            }\n        }\n\n        public static bool operator ==(IndexedVector3 value1, IndexedVector3 value2)\n        {\n            if (value1.X == value2.X && value1.Y == value2.Y)\n                return value1.Z == value2.Z;\n            else\n                return false;\n        }\n\n        public static bool operator !=(IndexedVector3 value1, IndexedVector3 value2)\n        {\n            if (value1.X == value2.X && value1.Y == value2.Y)\n                return value1.Z != value2.Z;\n            else\n                return true;\n        }\n\n\n        public bool Equals(IndexedVector3 other)\n        {\n            if (this.X == other.X && this.Y == other.Y)\n                return this.Z == other.Z;\n            else\n                return false;\n        }\n\n        public override bool Equals(object obj)\n        {\n            bool flag = false;\n            if (obj is IndexedVector3)\n                flag = this.Equals((IndexedVector3)obj);\n            return flag;\n        }\n\n        public static IndexedVector3 Zero\n        {\n            get\n            {\n                return IndexedVector3._zero;\n            }\n        }\n\n        public static IndexedVector3 One\n        {\n            get\n            {\n                return IndexedVector3._one;\n            }\n        }\n\n        public static IndexedVector3 Up\n        {\n            get\n            {\n                return IndexedVector3._up;\n            }\n        }\n\n        public static IndexedVector3 Down\n        {\n            get\n            {\n                return -IndexedVector3._up;\n            }\n        }\n\n\n\n\n\n\n        public float Dot(ref IndexedVector3 v)\n        {\n            return X * v.X + Y * v.Y + Z * v.Z;\n        }\n\n        public float Dot(IndexedVector3 v)\n        {\n            return X * v.X + Y * v.Y + Z * v.Z;\n        }\n\n        public float Triple(ref IndexedVector3 b, ref IndexedVector3 c)\n        {\n            return X * (b.Y * c.Z - b.Z * c.Y) +\n                Y * (b.Z * c.X - b.X * c.Z) +\n                Z * (b.X * c.Y - b.Y * c.X);\n        }\n\n\n        public void SetMin(ref IndexedVector3 v)\n        {\n            if (v.X < X)\n            {\n                X = v.X;\n            }\n            if (v.Y < Y)\n            {\n                Y = v.Y;\n            }\n            if (v.Z < Z)\n            {\n                Z = v.Z;\n            }\n        }\n\n\n        public void SetMax(ref IndexedVector3 v)\n        {\n            if (v.X > X)\n            {\n                X = v.X;\n            }\n            if (v.Y > Y)\n            {\n                Y = v.Y;\n            }\n            if (v.Z > Z)\n            {\n                Z = v.Z;\n            }\n        }\n\n        public int MaxAxis()\n        {\n            return X < Y ? (Y < Z ? 2 : 1) : (X < Z ? 2 : 0);\n        }\n\n        public int MinAxis()\n        {\n            return X < Y ? (Y < Z ? 0 : 2) : (X < Z ? 1 : 2);\n        }\n\n        // User-defined conversion from IndexedVector3 to Vector3\n        public static implicit operator Vector3(IndexedVector3 v)\n        {\n            return new Vector3(v.X, v.Y, v.Z);\n        }\n\n        // User-defined conversion from IndexedVector3 to Vector3\n        public static implicit operator IndexedVector3(Vector3 v)\n        {\n            return new IndexedVector3(v.X, v.Y, v.Z);\n        }\n\n        public override int GetHashCode()\n        {\n            unchecked\n            {\n                int result = X.GetHashCode();\n                result = (result * 397) ^ Y.GetHashCode();\n                result = (result * 397) ^ Z.GetHashCode();\n                return result;\n            }\n        }\n\n        private static IndexedVector3 _zero = new IndexedVector3();\n        private static IndexedVector3 _one = new IndexedVector3(1);\n        private static IndexedVector3 _up = new IndexedVector3(0,1,0);\n\n\n        public float X;\n        public float Y;\n        public float Z;\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/GImpact/LinearMath/MathUtil.cs",
    "content": "﻿///*\n// * C# / XNA  port of Bullet (c) 2011 Mark Neale <xexuxjy@hotmail.com>\n// *\n// * Bullet Continuous Collision Detection and Physics Library\n// * Copyright (c) 2003-2008 Erwin Coumans  http://www.bulletphysics.com/\n// *\n// * This software is provided 'as-is', without any express or implied warranty.\n// * In no event will the authors be held liable for any damages arising from\n// * the use of this software.\n// * \n// * Permission is granted to anyone to use this software for any purpose, \n// * including commercial applications, and to alter it and redistribute it\n// * freely, subject to the following restrictions:\n// * \n// * 1. The origin of this software must not be misrepresented; you must not\n// *    claim that you wrote the original software. If you use this software\n// *    in a product, an acknowledgment in the product documentation would be\n// *    appreciated but is not required.\n// * 2. Altered source versions must be plainly marked as such, and must not be\n// *    misrepresented as being the original software.\n// * 3. This notice may not be removed or altered from any source distribution.\n// */\n\nusing System;\nusing System.Diagnostics;\nusing System.IO;\n//using BulletXNA.BulletCollision;\nusing BulletXNA.LinearMath;\nusing MinerWarsMath;\nusing System.Runtime.InteropServices;\n\nnamespace BulletXNA\n{\n    public static class MathUtil\n    {\n        public static float[,] BasisMatrixToFloatArray(ref IndexedBasisMatrix m)\n        {\n            float[,] result = new float[3, 3];\n            result[0, 0] = m._Row0.X;\n            result[0, 1] = m._Row0.Y;\n            result[0, 2] = m._Row0.Z;\n            result[1, 0] = m._Row1.X;\n            result[1, 1] = m._Row1.Y;\n            result[1, 2] = m._Row1.Z;\n            result[2, 0] = m._Row2.X;\n            result[2, 1] = m._Row2.Y;\n            result[2, 2] = m._Row2.Z;\n            return result;\n        }\n\n        public static void FloatArrayToBasisMatrix(float[,] f, ref IndexedBasisMatrix m)\n        {\n            m._Row0 = new IndexedVector3(f[0, 0], f[0, 1], f[0, 2]);\n            m._Row1 = new IndexedVector3(f[1, 0], f[1, 1], f[1, 2]);\n            m._Row2 = new IndexedVector3(f[2, 0], f[2, 1], f[2, 2]);\n        }\n\n\n\n        public static void InverseTransform(ref IndexedMatrix m, ref IndexedVector3 v, out IndexedVector3 o)\n        {\n            IndexedVector3 v1 = v - m._origin;\n            o = m._basis.Transpose() * v1;\n        }\n\n        public static IndexedVector3 InverseTransform(ref IndexedMatrix m, ref IndexedVector3 v)\n        {\n            IndexedVector3 v1 = v - m._origin;\n            return m._basis.Transpose() * v1;\n        }\n\n//        //public static IndexedMatrix TransposeTimesBasis(ref IndexedMatrix a, ref IndexedMatrix b)\n//        public static IndexedMatrix TransposeTimesBasis(ref IndexedMatrix mA, ref IndexedMatrix mB)\n\n//        {\n//            IndexedMatrix ba = MathUtil.BasisMatrix(ref mA);\n//            ba = IndexedMatrix.Transpose(ba);\n//            IndexedMatrix bb = MathUtil.BasisMatrix(ref mB);\n//            return BulletMatrixMultiply(ref ba, ref bb);\n//        }\n\n//        public static IndexedMatrix InverseTimes(IndexedMatrix a, IndexedMatrix b)\n//        {\n//            return InverseTimes(ref a, ref b);\n//        }\n\n//        public static IndexedMatrix InverseTimes(ref IndexedMatrix a, ref IndexedMatrix b)\n//        {\n//            IndexedMatrix m = IndexedMatrix.Invert(a);\n//            return BulletMatrixMultiply(ref m, ref b);\n//        }\n\n//        public static IndexedMatrix TransposeBasis(IndexedMatrix m)\n//        {\n//            return TransposeBasis(ref m);\n//        }\n\n//        public static IndexedMatrix TransposeBasis(ref IndexedMatrix m)\n//        {\n//            return IndexedMatrix.Transpose(BasisMatrix(ref m));\n//        }\n\n//        public static IndexedMatrix InverseBasis(IndexedMatrix m)\n//        {\n//            return InverseBasis(ref m);\n//        }\n\n//        public static IndexedMatrix InverseBasis(ref IndexedMatrix m)\n//        {\n//            IndexedMatrix b = BasisMatrix(ref m);\n//            b = IndexedMatrix.Invert(b);\n//            return b;\n//        }\n\n//        public static float Cofac(ref IndexedMatrix m,int r1, int c1, int r2, int c2)\n//        {\n//            float a = MatrixComponent(ref m, r1, c1);\n//            float b = MatrixComponent(ref m, r2, c2);\n//            float c = MatrixComponent(ref m, r1, c2);\n//            float d = MatrixComponent(ref m, r2, c1);\n\n//            return a * b - c * d;\n//        }\n\n\n        public static float FSel(float a, float b, float c)\n        {\n            // dodgy but seems necessary for rounding issues.\n            //return a >= -0.00001 ? b : c;\n            return a >= 0 ? b : c;\n        }\n\n        public static int MaxAxis(ref IndexedVector3 a)\n        {\n            return a.X < a.Y ? (a.Y < a.Z ? 2 : 1) : (a.X < a.Z ? 2 : 0);\n        }\n\n        public static int MaxAxis(Vector4 a)\n        {\n            return MaxAxis(ref a);\n        }\n\n        public static int MaxAxis(ref Vector4 a)\n        {\n            int maxIndex = -1;\n            float maxVal = -BT_LARGE_FLOAT;\n            if (a.X > maxVal)\n            {\n                maxIndex = 0;\n                maxVal = a.X;\n            }\n            if (a.Y > maxVal)\n            {\n                maxIndex = 1;\n                maxVal = a.Y;\n            }\n            if (a.Z > maxVal)\n            {\n                maxIndex = 2;\n                maxVal = a.Z;\n            }\n            if (a.W > maxVal)\n            {\n                maxIndex = 3;\n                //maxVal = a.W;\n            }\n            return maxIndex;\n        }\n\n        public static int ClosestAxis(ref Vector4 a)\n        {\n            return MaxAxis(AbsoluteVector4(ref a));\n        }\n\n\n        public static Vector4 AbsoluteVector4(ref Vector4 vec)\n        {\n            return new Vector4(Math.Abs(vec.X), Math.Abs(vec.Y), Math.Abs(vec.Z), Math.Abs(vec.W));\n        }\n\n//        public static float VectorComponent(IndexedVector3 v, int i)\n//        {\n//            return VectorComponent(ref v, i);\n//        }\n\n//        public static float VectorComponent(ref IndexedVector3 v, int i)\n//        {\n//            switch (i)\n//            {\n//                case 0:\n//                    return v.X;\n//                case 1:\n//                    return v.Y;\n//                case 2:\n//                    return v.Z;\n//                default:\n//                    Debug.Assert(false);\n//                    return 0.0f;\n//            }\n//        }\n\n//        public static void VectorComponent(ref IndexedVector3 v, int i, float f)\n//        {\n//            switch (i)\n//            {\n//                case 0:\n//                    v.X = f;\n//                    return;\n//                case 1:\n//                    v.Y = f;\n//                    return;\n//                case 2:\n//                    v.Z = f;\n//                    return;\n//            }\n//            Debug.Assert(false);\n//        }\n\n//        public static void VectorComponentAddAssign(ref IndexedVector3 v, int i, float f)\n//        {\n//            switch (i)\n//            {\n//                case 0:\n//                    v.X += f;\n//                    return;\n//                case 1:\n//                    v.Y += f;\n//                    return;\n//                case 2:\n//                    v.Z += f;\n//                    return;\n//            }\n//            Debug.Assert(false);\n//        }\n\n//        public static void VectorComponentMinusAssign(ref IndexedVector3 v, int i, float f)\n//        {\n//            switch (i)\n//            {\n//                case 0:\n//                    v.X -= f;\n//                    return;\n//                case 1:\n//                    v.Y -= f;\n//                    return;\n//                case 2:\n//                    v.Z -= f;\n//                    return;\n//            }\n//            Debug.Assert(false);\n//        }\n\n//        public static void VectorComponentMultiplyAssign(ref IndexedVector3 v, int i, float f)\n//        {\n//            switch (i)\n//            {\n//                case 0:\n//                    v.X *= f;\n//                    return;\n//                case 1:\n//                    v.Y *= f;\n//                    return;\n//                case 2:\n//                    v.Z *= f;\n//                    return;\n//            }\n//            Debug.Assert(false);\n//        }\n\n//        public static void VectorComponentDivideAssign(ref IndexedVector3 v, int i, float f)\n//        {\n//            switch (i)\n//            {\n//                case 0:\n//                    v.X /= f;\n//                    return;\n//                case 1:\n//                    v.Y /= f;\n//                    return;\n//                case 2:\n//                    v.Z /= f;\n//                    return;\n//            }\n//            Debug.Assert(false);\n//        }\n\n\n        public static float VectorComponent(Vector4 v, int i)\n        {\n            return VectorComponent(ref v, i);\n        }\n\n        public static float VectorComponent(ref Vector4 v, int i)\n        {\n            switch (i)\n            {\n                case 0:\n                    return v.X;\n                case 1:\n                    return v.Y;\n                case 2:\n                    return v.Z;\n                case 3:\n                    return v.W;\n                default:\n                    Debug.Assert(false);\n                    return 0.0f;\n            }\n        }\n\n\n\n        public static void VectorComponent(ref Vector4 v, int i, float f)\n        {\n            switch (i)\n            {\n                case 0:\n                    v.X = f;\n                    return;\n                case 1:\n                    v.Y = f;\n                    return;\n                case 2:\n                    v.Z = f;\n                    return;\n                case 3:\n                    v.W = f;\n                    return;\n            }\n            Debug.Assert(false);\n        }\n\n//        public static IndexedMatrix AbsoluteMatrix(IndexedMatrix input)\n//        {\n//            return AbsoluteMatrix(ref input);\n//        }\n\n//        public static IndexedMatrix AbsoluteMatrix(ref IndexedMatrix input)\n//        {\n//            IndexedMatrix output;\n//            AbsoluteMatrix(ref input, out output);\n//            return output;\n//        }\n\n//        public static void AbsoluteMatrix(ref IndexedMatrix input, out IndexedMatrix output)\n//        {\n//            output = new IndexedMatrix(\n//                Math.Abs(input.M11),\n//                Math.Abs(input.M12),\n//                Math.Abs(input.M13),\n//                Math.Abs(input.M14),\n//                Math.Abs(input.M21),\n//                Math.Abs(input.M22),\n//                Math.Abs(input.M23),\n//                Math.Abs(input.M24),\n//                Math.Abs(input.M31),\n//                Math.Abs(input.M32),\n//                Math.Abs(input.M33),\n//                Math.Abs(input.M34),\n//                Math.Abs(input.M41),\n//                Math.Abs(input.M42),\n//                Math.Abs(input.M43),\n//                Math.Abs(input.M44));\n//        }\n\n//        public static IndexedMatrix AbsoluteBasisMatrix(ref IndexedMatrix input)\n//        {\n//            IndexedMatrix output;\n//            AbsoluteBasisMatrix(ref input, out output);\n//            return output;\n//        }\n\n//        public static void AbsoluteBasisMatrix(ref IndexedMatrix input, out IndexedMatrix output)\n//        {\n//            output = new IndexedMatrix(\n//                Math.Abs(input.M11), Math.Abs(input.M12), Math.Abs(input.M13), 0.0f,\n//                Math.Abs(input.M21), Math.Abs(input.M22), Math.Abs(input.M23), 0.0f,\n//                Math.Abs(input.M31), Math.Abs(input.M32), Math.Abs(input.M33), 0.0f,\n//                0.0f, 0.0f, 0.0f, 1.0f);\n//        }\n\n//        public static void AbsoluteVector(ref IndexedVector3 input, out IndexedVector3 output)\n//        {\n//            output = new IndexedVector3(\n//                Math.Abs(input.X),\n//                Math.Abs(input.Y),\n//                Math.Abs(input.Z));\n//        }\n\n//        public static void RotateVector(ref IndexedVector3 vec, ref IndexedMatrix m, out IndexedVector3 output)\n//        {\n//            Quaternion rotation;\n//            IndexedVector3 component;\n//            m.Decompose(out component, out rotation, out component);\n//            output = IndexedVector3.Transform(vec, rotation);\n//        }\n\n//        public static void TransformAabb(IndexedVector3 halfExtents, float margin, IndexedMatrix trans, out IndexedVector3 aabbMinOut, out IndexedVector3 aabbMaxOut)\n//        {\n//            //TransformAabb(ref halfExtents,margin,ref trans,out aabbMinOut,out aabbMaxOut);\n//            IndexedVector3 halfExtentsWithMargin = halfExtents + new IndexedVector3(margin);\n//            IndexedVector3 center, extent;\n//            AbsoluteExtents(ref trans, ref halfExtentsWithMargin, out center, out extent);\n//            aabbMinOut = center - extent;\n//            aabbMaxOut = center + extent;\n//        }\n\n//        public static void TransformAabb(ref IndexedVector3 halfExtents, float margin, ref IndexedMatrix trans, out IndexedVector3 aabbMinOut, out IndexedVector3 aabbMaxOut)\n//        {\n//            IndexedVector3 halfExtentsWithMargin = halfExtents + new IndexedVector3(margin);\n//            IndexedVector3 center, extent;\n//            AbsoluteExtents(ref trans, ref halfExtentsWithMargin, out center, out extent);\n//            aabbMinOut = center - extent;\n//            aabbMaxOut = center + extent;\n//        }\n\n//        public static void TransformAabb(IndexedVector3 localAabbMin, IndexedVector3 localAabbMax, float margin, IndexedMatrix trans, out IndexedVector3 aabbMinOut, out IndexedVector3 aabbMaxOut)\n//        {\n//            TransformAabb(ref localAabbMin, ref localAabbMax, margin, ref trans, out aabbMinOut, out aabbMaxOut);\n//        }\n\n//        public static void TransformAabb(ref IndexedVector3 localAabbMin, ref IndexedVector3 localAabbMax, float margin, ref IndexedMatrix trans, out IndexedVector3 aabbMinOut, out IndexedVector3 aabbMaxOut)\n//        {\n//            Debug.Assert(localAabbMin.X <= localAabbMax.X);\n//            Debug.Assert(localAabbMin.Y <= localAabbMax.Y);\n//            Debug.Assert(localAabbMin.Z <= localAabbMax.Z);\n//            IndexedVector3 localHalfExtents = 0.5f * (localAabbMax - localAabbMin);\n//            localHalfExtents += new IndexedVector3(margin);\n\n//            IndexedVector3 localCenter = 0.5f * (localAabbMax + localAabbMin);\n//            IndexedMatrix abs_b = MathUtil.AbsoluteBasisMatrix(ref trans);\n\n//            IndexedVector3 center = IndexedVector3.Transform(localCenter, trans);\n\n//            IndexedVector3 extent = new IndexedVector3(IndexedVector3.Dot(abs_b.Right, localHalfExtents),\n//                                            IndexedVector3.Dot(abs_b.Up, localHalfExtents),\n//                                            IndexedVector3.Dot(abs_b.Backward, localHalfExtents));\n\n//            aabbMinOut = center - extent;\n//            aabbMaxOut = center + extent;\n//        }\n\n//        public static void AbsoluteExtents(ref IndexedMatrix trans, ref IndexedVector3 vec, out IndexedVector3 center, out IndexedVector3 extent)\n//        {\n//            IndexedMatrix abs_b;\n//            AbsoluteMatrix(ref trans, out abs_b);\n\n//            center = trans._origin;\n//            extent = new IndexedVector3(IndexedVector3.Dot(abs_b.Right, vec),\n//                                            IndexedVector3.Dot(abs_b.Up, vec),\n//                                            IndexedVector3.Dot(abs_b.Backward, vec));\n//        }\n\n//        public static void SetMatrixVector(ref IndexedMatrix matrix, int row, IndexedVector3 vector)\n//        {\n//            SetMatrixVector(ref matrix, row, ref vector);\n//        }\n\n//        public static void SetMatrixVector(ref IndexedMatrix matrix, int row, ref IndexedVector3 vector)\n//        {\n//            switch (row)\n//            {\n//                case 0:\n//                    matrix.M11 = vector.X;\n//                    matrix.M12 = vector.Y;\n//                    matrix.M13 = vector.Z;\n//                    return;\n//                case 1:\n//                    matrix.M21 = vector.X;\n//                    matrix.M22 = vector.Y;\n//                    matrix.M23 = vector.Z;\n//                    return;\n//                case 2:\n//                    matrix.M31 = vector.X;\n//                    matrix.M32 = vector.Y;\n//                    matrix.M33 = vector.Z;\n//                    return;\n//                case 3:\n//                    matrix.M41 = vector.X;\n//                    matrix.M42 = vector.Y;\n//                    matrix.M43 = vector.Z;\n//                    return;\n//            }\n//            Debug.Assert(false);\n//        }\n\n//        public static void AddMatrixVector(ref IndexedMatrix matrix, int row, ref IndexedVector3 vector)\n//        {\n//            switch (row)\n//            {\n//                case 0:\n//                    matrix.M11 += vector.X;\n//                    matrix.M12 += vector.Y;\n//                    matrix.M13 += vector.Z;\n//                    return;\n//                case 1:\n//                    matrix.M21 += vector.X;\n//                    matrix.M22 += vector.Y;\n//                    matrix.M23 += vector.Z;\n//                    return;\n//                case 2:\n//                    matrix.M31 += vector.X;\n//                    matrix.M32 += vector.Y;\n//                    matrix.M33 += vector.Z;\n//                    return;\n//                case 3:\n//                    matrix.M41 += vector.X;\n//                    matrix.M42 += vector.Y;\n//                    matrix.M43 += vector.Z;\n//                    return;\n//            }\n//            Debug.Assert(false);\n//        }\n\n        public static float Vector3Triple(ref IndexedVector3 a, ref IndexedVector3 b, ref IndexedVector3 c)\n        {\n            return a.X * (b.Y * c.Z - b.Z * c.Y) +\n                a.Y * (b.Z * c.X - b.X * c.Z) +\n                a.Z * (b.X * c.Y - b.Y * c.X);\n        }\n\n//        // FIXME - MAN - make sure this is being called how we'd expect , may need to\n//        // swap i,j for row/column differences\n        \n//        public static float MatrixComponent(ref IndexedMatrix m, int index)\n//        {\n//            //int i = index % 4;\n//            //int j = index / 4;\n\n//            int j = index % 4;\n//            int i = index / 4;\n            \n//            return MatrixComponent(ref m,i,j);\n//        }\n        \n//        public static float MatrixComponent(ref IndexedMatrix m, int row, int column)\n//        {\n//            switch (row)\n//            {\n//                case 0:\n//                    if (column == 0) return m.M11;\n//                    if (column == 1) return m.M12;\n//                    if (column == 2) return m.M13;\n//                    if (column == 3) return m.M14;\n//                    break;\n//                case 1:\n//                    if (column == 0) return m.M21;\n//                    if (column == 1) return m.M22;\n//                    if (column == 2) return m.M23;\n//                    if (column == 3) return m.M24;\n//                    break;\n//                case 2:\n//                    if (column == 0) return m.M31;\n//                    if (column == 1) return m.M32;\n//                    if (column == 2) return m.M33;\n//                    if (column == 3) return m.M34;\n//                    break;\n//                case 3:\n//                    if (column == 0) return m.M41;\n//                    if (column == 1) return m.M42;\n//                    if (column == 2) return m.M43;\n//                    if (column == 3) return m.M44;\n//                    break;\n//            }\n//            return 0;\n//        }\n\n//        public static void MatrixComponent(ref IndexedMatrix m, int row, int column, float val)\n//        {\n//            switch (row)\n//            {\n//                case 0:\n//                    if (column == 0) m.M11 = val;\n//                    if (column == 1) m.M12 = val;\n//                    if (column == 2) m.M13 = val;\n//                    if (column == 3) m.M14 = val;\n//                    break;\n//                case 1:\n//                    if (column == 0) m.M21 = val;\n//                    if (column == 1) m.M22 = val;\n//                    if (column == 2) m.M23 = val;\n//                    if (column == 3) m.M24 = val;\n//                    break;\n//                case 2:\n//                    if (column == 0) m.M31 = val;\n//                    if (column == 1) m.M32 = val;\n//                    if (column == 2) m.M33 = val;\n//                    if (column == 3) m.M34 = val;\n//                    break;\n//                case 3:\n//                    if (column == 0) m.M41 = val;\n//                    if (column == 1) m.M42 = val;\n//                    if (column == 2) m.M43 = val;\n//                    if (column == 3) m.M44 = val;\n//                    break;\n//            }\n//        }\n\n//        public static IndexedVector3 MatrixColumn(IndexedMatrix matrix, int row)\n//        {\n//            return MatrixColumn(ref matrix, row);\n//        }\n\n//        public static IndexedVector3 MatrixColumn(ref IndexedMatrix matrix, int row)\n//        {\n//            IndexedVector3 vectorRow;\n//            MatrixColumn(ref matrix, row, out vectorRow);\n//            return vectorRow;\n//        }\n\n//        public static void MatrixColumn(IndexedMatrix matrix, int row, out IndexedVector3 vectorRow)\n//        {\n//            MatrixColumn(ref matrix,row, out vectorRow);\n//        }\n\n//        public static void MatrixColumn(ref IndexedMatrix matrix, int row, out IndexedVector3 vectorRow)\n//        {\n//            switch (row)\n//            {\n//                case 0:\n//                    vectorRow = new IndexedVector3(matrix.M11, matrix.M12, matrix.M13);\n//                    break;\n//                case 1:\n//                    vectorRow = new IndexedVector3(matrix.M21, matrix.M22, matrix.M23);\n//                    break;\n//                case 2:\n//                    vectorRow = new IndexedVector3(matrix.M31, matrix.M32, matrix.M33);\n//                    break;\n//                case 3:\n//                    vectorRow = new IndexedVector3(matrix.M41, matrix.M42, matrix.M43);\n//                    break;\n//                default:\n//                    vectorRow = IndexedVector3.Zero;\n//                    break;\n//            }\n//        }\n\n//        public static IndexedVector3 MatrixRow(IndexedMatrix matrix, int row)\n//        {\n//            switch (row)\n//            {\n//                case 0:\n//                    return new IndexedVector3(matrix.M11, matrix.M21, matrix.M31);\n//                case 1:\n//                    return new IndexedVector3(matrix.M12, matrix.M22, matrix.M32);\n//                case 2:\n//                    return new IndexedVector3(matrix.M13, matrix.M23, matrix.M33);\n//                case 3:\n//                    return new IndexedVector3(matrix.M14, matrix.M24, matrix.M34);\n//                default:\n//                    return IndexedVector3.Zero;\n//            }\n//        }\n\n//        public static IndexedVector3 MatrixRow(ref IndexedMatrix matrix, int row)\n//        {\n//            switch (row)\n//            {\n//                case 0:\n//                    return new IndexedVector3(matrix.M11, matrix.M21, matrix.M31);\n//                case 1:\n//                    return new IndexedVector3(matrix.M12, matrix.M22, matrix.M32);\n//                case 2:\n//                    return new IndexedVector3(matrix.M13, matrix.M23, matrix.M33);\n//                case 3:\n//                    return new IndexedVector3(matrix.M14, matrix.M24, matrix.M34);\n//                default:\n//                    return IndexedVector3.Zero;\n//            }\n//        }\n\n//        public static void MatrixRow(ref IndexedMatrix matrix, int row, out IndexedVector3 vectorRow)\n//        {\n//            switch (row)\n//            {\n//                case 0:\n//                    vectorRow = new IndexedVector3(matrix.M11, matrix.M21, matrix.M31);\n//                    break;\n//                case 1:\n//                    vectorRow = new IndexedVector3(matrix.M12, matrix.M22, matrix.M32);\n//                    break;\n//                case 2:\n//                    vectorRow = new IndexedVector3(matrix.M13, matrix.M23, matrix.M33);\n//                    break;\n//                case 3:\n//                    vectorRow = new IndexedVector3(matrix.M14, matrix.M24, matrix.M34);\n//                    break;\n//                default:\n//                    vectorRow = IndexedVector3.Zero;\n//                    break;\n//            }\n//        }\n\n\n\n        public static int GetQuantized(float x)\n        {\n            if (x < 0.0)\n            {\n                return (int)(x - 0.5);\n            }\n            return (int)(x + 0.5);\n        }\n\n        public static void VectorClampMax(ref IndexedVector3 input, ref IndexedVector3 bounds)\n        {\n            input.X = Math.Min(input.X, bounds.X);\n            input.Y = Math.Min(input.Y, bounds.Y);\n            input.Z = Math.Min(input.Z, bounds.Z);\n        }\n\n\n        public static void VectorClampMin(ref IndexedVector3 input, ref IndexedVector3 bounds)\n        {\n            input.X = Math.Max(input.X, bounds.X);\n            input.Y = Math.Max(input.Y, bounds.Y);\n            input.Z = Math.Max(input.Z, bounds.Z);\n        }\n\n        public static void VectorMin(IndexedVector3 input, ref IndexedVector3 output)\n        {\n            VectorMin(ref input, ref output);\n        }\n\n        public static void VectorMin(ref IndexedVector3 input, ref IndexedVector3 output)\n        {\n            output.X = Math.Min(input.X, output.X);\n            output.Y = Math.Min(input.Y, output.Y);\n            output.Z = Math.Min(input.Z, output.Z);\n        }\n\n        public static void VectorMin(ref IndexedVector3 input1, ref IndexedVector3 input2, out IndexedVector3 output)\n        {\n            output = new IndexedVector3(\n                Math.Min(input1.X, input2.X),\n                Math.Min(input1.Y, input2.Y),\n                Math.Min(input1.Z, input2.Z));\n        }\n\n        public static void VectorMax(IndexedVector3 input, ref IndexedVector3 output)\n        {\n            VectorMax(ref input, ref output);\n        }\n\n        public static void VectorMax(ref IndexedVector3 input, ref IndexedVector3 output)\n        {\n            output.X = Math.Max(input.X, output.X);\n            output.Y = Math.Max(input.Y, output.Y);\n            output.Z = Math.Max(input.Z, output.Z);\n        }\n\n        public static void VectorMax(ref IndexedVector3 input1, ref IndexedVector3 input2, out IndexedVector3 output)\n        {\n            output = new IndexedVector3(\n                Math.Max(input1.X, input2.X),\n                Math.Max(input1.Y, input2.Y),\n                Math.Max(input1.Z, input2.Z));\n        }\n\n        public static float RecipSqrt(float a)\n        {\n            return (float)(1 / Math.Sqrt(a));\n        }\n\n        public static bool CompareFloat(float val1, float val2)\n        {\n            return Math.Abs(val1 - val2) <= SIMD_EPSILON;\n        }\n\n        public static bool FuzzyZero(float val)\n        {\n            return Math.Abs(val) <= SIMD_EPSILON;\n        }\n\n        public static uint Select(uint condition, uint valueIfConditionNonZero, uint valueIfConditionZero)\n        {\n            // Set testNz to 0xFFFFFFFF if condition is nonzero, 0x00000000 if condition is zero\n            // Rely on positive value or'ed with its negative having sign bit on\n            // and zero value or'ed with its negative (which is still zero) having sign bit off \n            // Use arithmetic shift right, shifting the sign bit through all 32 bits\n            uint testNz = (uint)(((int)condition | -(int)condition) >> 31);\n            uint testEqz = ~testNz;\n            return ((valueIfConditionNonZero & testNz) | (valueIfConditionZero & testEqz));\n        }\n\n//        public static void BasisMatrix(IndexedMatrix matrixIn, out IndexedMatrix matrixOut)\n//        {\n//            BasisMatrix(ref matrixIn, out matrixOut);\n//        }\n//        public static void BasisMatrix(ref IndexedMatrix matrixIn, out IndexedMatrix matrixOut)\n//        {\n//            matrixOut = matrixIn;\n//            matrixOut.M41 = 0.0f;\n//            matrixOut.M42 = 0.0f;\n//            matrixOut.M43 = 0.0f;\n//            matrixOut.M44 = 1.0f;\n//        }\n\n//        public static IndexedMatrix BasisMatrix(IndexedMatrix matrixIn)\n//        {\n//            return BasisMatrix(ref matrixIn);\n//        }\n//        public static IndexedMatrix BasisMatrix(ref IndexedMatrix matrixIn)\n//        {\n//            IndexedMatrix matrixOut = matrixIn;\n//            matrixOut.M41 = 0.0f;\n//            matrixOut.M42 = 0.0f;\n//            matrixOut.M43 = 0.0f;\n//            matrixOut.M44 = 1.0f;\n//            return matrixOut;\n//        }\n\n        public static Quaternion ShortestArcQuat(IndexedVector3 axisInA, IndexedVector3 axisInB)\n        {\n            return ShortestArcQuat(ref axisInA, ref axisInB);\n        }\n        public static Quaternion ShortestArcQuat(ref IndexedVector3 axisInA, ref IndexedVector3 axisInB)\n        {\n            IndexedVector3 c = IndexedVector3.Cross(axisInA, axisInB);\n            float d = IndexedVector3.Dot(axisInA, axisInB);\n\n            if (d < -1.0 + SIMD_EPSILON)\n            {\n                return new Quaternion(0.0f, 1.0f, 0.0f, 0.0f); // just pick any vector\n            }\n\n            float s = (float)Math.Sqrt((1.0f + d) * 2.0f);\n            float rs = 1.0f / s;\n\n            return new Quaternion(c.X * rs, c.Y * rs, c.Z * rs, s * 0.5f);\n\n        }\n\n        public static float QuatAngle(ref Quaternion quat)\n        {\n            return 2f * (float)Math.Acos(quat.W);\n        }\n\n        public static Quaternion QuatFurthest(ref Quaternion input1, ref Quaternion input2)\n        {\n            Quaternion diff, sum;\n            diff = input1 - input2;\n            sum = input1 + input2;\n            if (Quaternion.Dot(diff, diff) > Quaternion.Dot(sum, sum))\n            {\n                return input2;\n            }\n            return (-input2);\n        }\n\n        public static IndexedVector3 QuatRotate(Quaternion rotation, IndexedVector3 v)\n        {\n            return QuatRotate(ref rotation, ref v);\n        }\n\n        public static IndexedVector3 QuatRotate(ref Quaternion rotation, ref IndexedVector3 v)\n        {\n            Quaternion q = QuatVectorMultiply(ref rotation, ref v);\n            q *= QuaternionInverse(ref rotation);\n            return new IndexedVector3(q.X, q.Y, q.Z);\n        }\n\n\n        public static Quaternion QuatVectorMultiply(ref Quaternion q, ref IndexedVector3 w)\n        {\n            return new Quaternion(q.W * w.X + q.Y * w.Z - q.Z * w.Y,\n                                    q.W * w.Y + q.Z * w.X - q.X * w.Z,\n                                    q.W * w.Z + q.X * w.Y - q.Y * w.X,\n                                    -q.X * w.X - q.Y * w.Y - q.Z * w.Z);\n        }\n\n//      /**@brief diagonalizes this matrix by the Jacobi method.\n//       * @param rot stores the rotation from the coordinate system in which the matrix is diagonal to the original\n//       * coordinate system, i.e., old_this = rot * new_this * rot^T. \n//       * @param threshold See iteration\n//       * @param iteration The iteration stops when all off-diagonal elements are less than the threshold multiplied \n//       * by the sum of the absolute values of the diagonal, or when maxSteps have been executed. \n//       * \n//       * Note that this matrix is assumed to be symmetric. \n//       */\n//        public static void Diagonalize(ref IndexedMatrix inMatrix,ref IndexedMatrix rot, float threshold, int maxSteps)\n//        {\n//            Debug.Assert(false);\n//            rot = IndexedMatrix.Identity;\n//            for (int step = maxSteps; step > 0; step--)\n//            {\n//                // find off-diagonal element [p][q] with largest magnitude\n//                int p = 0;\n//                int q = 1;\n//                int r = 2;\n//                float max = Math.Abs(inMatrix.M12);\n//                float v = Math.Abs(inMatrix.M13);\n//                if (v > max)\n//                {\n//                   q = 2;\n//                   r = 1;\n//                   max = v;\n//                }\n//                v = Math.Abs(inMatrix.M23);\n//                if (v > max)\n//                {\n//                   p = 1;\n//                   q = 2;\n//                   r = 0;\n//                   max = v;\n//                }\n\n//                float t = threshold * (Math.Abs(inMatrix.M11) + Math.Abs(inMatrix.M22) + Math.Abs(inMatrix.M33));\n//                if (max <= t)\n//                {\n//                   if (max <= SIMD_EPSILON * t)\n//                   {\n//                      return;\n//                   }\n//                   step = 1;\n//                }\n\n//                // compute Jacobi rotation J which leads to a zero for element [p][q] \n//                float mpq = MathUtil.MatrixComponent(ref inMatrix,p,q);\n//                float theta = (MathUtil.MatrixComponent(ref inMatrix,q,q)-MathUtil.MatrixComponent(ref inMatrix,p,p)) / (2 * mpq);\n//                float theta2 = theta * theta;\n//                float cos;\n//                float sin;\n//                if (theta2 * theta2 < 10f / SIMD_EPSILON)\n//                {\n//                   t = (theta >= 0f) ? (float)(1f / (theta + Math.Sqrt(1 + theta2)))\n//                                            : (float)(1f / (theta - Math.Sqrt(1 + theta2)));\n//                   cos = (float)(1f / Math.Sqrt(1 + t * t));\n//                   sin = cos * t;\n//                }\n//                else\n//                {\n//                   // approximation for large theta-value, i.e., a nearly diagonal matrix\n//                   t = 1 / (theta * (2 + 0.5f / theta2));\n//                   cos = 1 - 0.5f * t * t;\n//                   sin = cos * t;\n//                }\n\n//                // apply rotation to matrix (this = J^T * this * J)\n//                MathUtil.MatrixComponent(ref inMatrix,p,q,0f);\n//                MathUtil.MatrixComponent(ref inMatrix,q,p,0f);\n//                MathUtil.MatrixComponent(ref inMatrix,p,p,MathUtil.MatrixComponent(ref inMatrix,p,p)-t*mpq);\n//                MathUtil.MatrixComponent(ref inMatrix,q,q,MathUtil.MatrixComponent(ref inMatrix,q,q)+t*mpq);\n\n//                float  mrp = MathUtil.MatrixComponent(ref inMatrix,r,p);\n//                float  mrq = MathUtil.MatrixComponent(ref inMatrix,r,q);\n\n//                MathUtil.MatrixComponent(ref inMatrix,r,p,cos * mrp - sin * mrq);\n//                MathUtil.MatrixComponent(ref inMatrix,p,r,cos * mrp - sin * mrq);\n\n//                MathUtil.MatrixComponent(ref inMatrix,r,q,cos * mrp + sin * mrq);\n//                MathUtil.MatrixComponent(ref inMatrix,q,r,cos * mrp + sin * mrq);\n\n//                // apply rotation to rot (rot = rot * J)\n//                for (int i = 0; i < 3; i++)\n//                {\n//                    float  mrp2 = MathUtil.MatrixComponent(ref rot,i,p);\n//                    float  mrq2 = MathUtil.MatrixComponent(ref rot,i,q);\n//                    MathUtil.MatrixComponent(ref rot, i, p, cos * mrp - sin * mrq);\n//                    MathUtil.MatrixComponent(ref rot, i, q, cos * mrp + sin * mrq);\n//                }\n//            }\n//        }\n\n\n\n        public static void GetSkewSymmetricMatrix(ref IndexedVector3 vecin, out IndexedVector3 v0, out IndexedVector3 v1, out IndexedVector3 v2)\n        {\n            v0 = new IndexedVector3(0f, -vecin.Z, vecin.Y);\n            v1 = new IndexedVector3(vecin.Z, 0f, -vecin.X);\n            v2 = new IndexedVector3(-vecin.Y, vecin.X, 0f);\n        }\n        public static void SanityCheckVector(IndexedVector3 v)\n        {\n#if DEBUG\n            SanityCheckVector(ref v);\n#endif\n        }\n        public static void ZeroCheckVector(IndexedVector3 v)\n        {\n#if DEBUG\n\n            ZeroCheckVector(ref v);\n#endif\n        }\n\n        public static void ZeroCheckVector(ref IndexedVector3 v)\n        {\n#if DEBUG\n\n            if (FuzzyZero(v.LengthSquared()))\n            {\n                //Debug.Assert(false);\n            }\n#endif\n        }\n        public static void SanityCheckVector(ref IndexedVector3 v)\n        {\n#if DEBUG\n\n            if (float.IsNaN(v.X) || float.IsNaN(v.Y) || float.IsNaN(v.Z))\n            {\n                Debug.Assert(false);\n            }\n#endif\n        }\n\n        public static void SanityCheckFloat(float f)\n        {\n#if DEBUG\n\n            Debug.Assert(!float.IsInfinity(f) && !float.IsNaN(f));\n#endif\n\n        }\n\n//        public static void Vector3FromFloat(out IndexedVector3 v, float[] fa)\n//        {\n//            v = new IndexedVector3(fa[0], fa[1], fa[2]);\n//        }\n\n//        //public static void FloatFromVector3(IndexedVector3 v, float[] fa)\n//        //{\n//        //    FloatFromVector3(ref v, fa);\n//        //}\n\n//        //public static void FloatFromVector3(ref IndexedVector3 v, float[] fa)\n//        //{\n//        //    fa[0] = v.X;\n//        //    fa[1] = v.Y;\n//        //    fa[2] = v.Z;\n//        //}\n\n//        //public static float[] FloatFromVector3(IndexedVector3 v)\n//        //{\n//        //    return FloatFromVector3(ref v);\n//        //}\n\n//        //public static float[] FloatFromVector3(ref IndexedVector3 v)\n//        //{\n//        //    return new float[] { v.X, v.Y, v.Z };\n//        //}\n\n        public static float GetMatrixElem(IndexedBasisMatrix mat, int index)\n        {\n\t        int i = index%3;\n\t        int j = index/3;\n\t        return mat[i,j];\n        }\n\n        public static float GetMatrixElem(ref IndexedBasisMatrix mat, int index)\n        {\n            int i = index % 3;\n            int j = index / 3;\n            return mat[i, j];\n        }\n\n        public static bool MatrixToEulerXYZ(ref IndexedBasisMatrix mat, out IndexedVector3 xyz)\n        {\n            //\t// rot =  cy*cz          -cy*sz           sy\n            //\t//        cz*sx*sy+cx*sz  cx*cz-sx*sy*sz -cy*sx\n            //\t//       -cx*cz*sy+sx*sz  cz*sx+cx*sy*sz  cx*cy\n            //\n\n            float matElem0 = MathUtil.GetMatrixElem(ref mat, 0);\n            float matElem1 = MathUtil.GetMatrixElem(ref mat, 1);\n            float matElem2 = MathUtil.GetMatrixElem(ref mat, 2);\n            float matElem3 = MathUtil.GetMatrixElem(ref mat, 3);\n            float matElem4 = MathUtil.GetMatrixElem(ref mat, 4);\n            float matElem5 = MathUtil.GetMatrixElem(ref mat, 5);\n            float matElem6 = MathUtil.GetMatrixElem(ref mat, 6);\n            float matElem7 = MathUtil.GetMatrixElem(ref mat, 7);\n            float matElem8 = MathUtil.GetMatrixElem(ref mat, 8);\n\n            float fi = matElem2;\n            if (fi < 1.0f)\n            {\n                if (fi > -1.0f)\n                {\n                    xyz = new IndexedVector3(\n                        (float)Math.Atan2(-matElem5, matElem8),\n                        (float)Math.Asin(matElem2),\n                        (float)Math.Atan2(-matElem1, matElem0));\n                    return true;\n                }\n                else\n                {\n                    // WARNING.  Not unique.  XA - ZA = -atan2(r10,r11)\n                    xyz = new IndexedVector3(\n                        (float)-Math.Atan2(matElem3, matElem4),\n                        -SIMD_HALF_PI,\n                        0f);\n                    return false;\n                }\n            }\n            else\n            {\n                // WARNING.  Not unique.  XAngle + ZAngle = atan2(r10,r11)\n                xyz = new IndexedVector3(\n                    (float)Math.Atan2(matElem3, matElem4),\n                    SIMD_HALF_PI,\n                    0.0f);\n            }\n            return false;\n        }\n\n\n\n//        public static IndexedVector3 MatrixToEuler(ref IndexedMatrix m)\n//        {\n//            IndexedVector3 translate;\n//            IndexedVector3 scale;\n//            Quaternion rotate;\n//            m.Decompose(out scale, out rotate, out translate);\n//            return quaternionToEuler(ref rotate);\n//        }\n\n//        // Taken from Fabian Vikings post at : http://forums.xna.com/forums/p/4574/23763.aspx  \n//        public static IndexedVector3 quaternionToEuler(ref Quaternion q)\n//        {\n//            IndexedVector3 v = IndexedVector3.Zero;\n\n//            v.X = (float)Math.Atan2\n//            (\n//                2 * q.Y * q.W - 2 * q.X * q.Z,\n//                   1 - 2 * Math.Pow(q.Y, 2) - 2 * Math.Pow(q.Z, 2)\n//            );\n\n//            v.Z = (float)Math.Asin\n//            (\n//                2 * q.X * q.Y + 2 * q.Z * q.W\n//            );\n\n//            v.Y = (float)Math.Atan2\n//            (\n//                2 * q.X * q.W - 2 * q.Y * q.Z,\n//                1 - 2 * Math.Pow(q.X, 2) - 2 * Math.Pow(q.Z, 2)\n//            );\n\n//            if (q.X * q.Y + q.Z * q.W == 0.5)\n//            {\n//                v.X = (float)(2 * Math.Atan2(q.X, q.W));\n//                v.Y = 0;\n//            }\n\n//            else if (q.X * q.Y + q.Z * q.W == -0.5)\n//            {\n//                v.X = (float)(-2 * Math.Atan2(q.X, q.W));\n//                v.Y = 0;\n//            }\n\n//            return v;\n//        }\n\n        public static Quaternion QuaternionInverse(Quaternion q)\n        {\n            return QuaternionInverse(ref q);\n        }\n\n        public static Quaternion QuaternionInverse(ref Quaternion q)\n        {\n            return new Quaternion(-q.X, -q.Y, -q.Z, q.W);\n        }\n\n        public static Quaternion QuaternionMultiply(Quaternion a, Quaternion b)\n        {\n            return QuaternionMultiply(ref a, ref b);\n        }\n\n        public static Quaternion QuaternionMultiply(ref Quaternion a, ref Quaternion b)\n        {\n            return a * b;\n            //return b * a;\n        }\n\n        //public static IndexedMatrix BulletMatrixMultiply(IndexedMatrix m1, IndexedMatrix m2)\n        //{\n        //    return m1 * m2;\n        //}\n\n        //public static IndexedMatrix BulletMatrixMultiply(ref IndexedMatrix m1, ref IndexedMatrix m2)\n        //{\n        //    return m1 * m2;\n        //}\n\n//        public static IndexedMatrix BulletMatrixMultiplyBasis(IndexedMatrix m1, IndexedMatrix m2)\n//        {\n//            return BulletMatrixMultiplyBasis(ref m1, ref m2);\n//        }\n\n//        public static IndexedMatrix BulletMatrixMultiplyBasis(ref IndexedMatrix m1, ref IndexedMatrix m2)\n//        {\n//            IndexedMatrix mb1;\n//            BasisMatrix(ref m1, out mb1);\n//            IndexedMatrix mb2;\n//            BasisMatrix(ref m2, out mb2);\n//            return BulletMatrixMultiply(ref mb1, ref mb2);\n//        }\n\n\n\n        public static float NormalizeAngle(float angleInRadians)\n        {\n            // Need to check this mod operator works with floats...\n            angleInRadians = angleInRadians % SIMD_2_PI;\n            if (angleInRadians < -SIMD_PI)\n            {\n                return angleInRadians + SIMD_2_PI;\n            }\n            else if (angleInRadians > SIMD_PI)\n            {\n                return angleInRadians - SIMD_2_PI;\n            }\n            else\n            {\n                return angleInRadians;\n            }\n        }\n\n        public static float DegToRadians(float degrees)\n        {\n            return (degrees / 360.0f) * SIMD_2_PI;\n        }\n\n\n        public static IndexedVector3 Interpolate3(IndexedVector3 v0, IndexedVector3 v1, float rt)\n        {\n            float s = 1.0f - rt;\n            return new IndexedVector3(\n                s * v0.X + rt * v1.X,\n                s * v0.Y + rt * v1.Y,\n                s * v0.Z + rt * v1.Z);\n        }\n\n\n        public static IndexedVector3 Interpolate3(ref IndexedVector3 v0, ref IndexedVector3 v1, float rt)\n        {\n            float s = 1.0f - rt;\n            return new IndexedVector3(\n                s * v0.X + rt * v1.X,\n                s * v0.Y + rt * v1.Y,\n                s * v0.Z + rt * v1.Z);\n        }\n\n        public static IndexedMatrix SetEulerZYX(float eulerX, float eulerY, float eulerZ)\n        {\n            //return IndexedMatrix.CreateFromYawPitchRoll(y, x,z);\n            // This version tested and compared to c++ version. don't break it.\n            // note that the row/column settings are switched from c++\n            IndexedMatrix m = IndexedMatrix.Identity;\n            m._basis.SetEulerZYX(eulerX, eulerY, eulerZ);\n            return m;\n\n        }\n\n//        public static IndexedVector3 MatrixToVector(IndexedMatrix m, IndexedVector3 v)\n//        {\n//            return new IndexedVector3(\n//                IndexedVector3.Dot(new IndexedVector3(m.M11, m.M12, m.M13), v) + m._origin.X,\n//                IndexedVector3.Dot(new IndexedVector3(m.M21, m.M22, m.M23), v) + m._origin.Y,\n//                IndexedVector3.Dot(new IndexedVector3(m.M31, m.M32, m.M33), v) + m._origin.Z\n//                );\n//        }\n\n\n        public static IndexedVector3 Vector4ToVector3(Vector4 v4)\n        {\n            return new IndexedVector3(v4.X, v4.Y, v4.Z);\n        }\n\n        public static IndexedVector3 Vector4ToVector3(ref Vector4 v4)\n        {\n            return new IndexedVector3(v4.X, v4.Y, v4.Z);\n        }\n\n\n//        public static IndexedVector3 TransposeTransformNormal(IndexedVector3 v,IndexedMatrix m)\n//        {\n//            return TransposeTransformNormal(ref v, ref m);\n//        }\n\n//        public static IndexedVector3 TransposeTransformNormal(ref IndexedVector3 v,ref IndexedMatrix m)\n//        {\n//            IndexedMatrix mt = TransposeBasis(ref m);\n//            return IndexedVector3.TransformNormal(v, mt);\n//        }\n\n//        //public static IndexedVector3 TransposeTransformNormal(ref IndexedVector3 v, ref IndexedMatrix m)\n//        //{\n//        //    IndexedMatrix mt = TransposeBasis(ref m);\n//        //    return IndexedVector3.TransformNormal(ref v, ref mt);\n//        //}\n\n\n\n        public static void PrintQuaternion(TextWriter writer, Quaternion q)\n        {\n            writer.Write(String.Format(\"{{X:{0:0.00000000} Y:{1:0.00000000} Z:{2:0.00000000} W:{3:0.00000000}}}\", q.X, q.Y, q.Z, q.W));\n        }\n\n        public static void PrintVector3(TextWriter writer, IndexedVector3 v)\n        {\n            writer.WriteLine(String.Format(\"{{X:{0:0.00000000} Y:{1:0.00000000} Z:{2:0.00000000}}}\", v.X, v.Y, v.Z));\n        }\n\n        public static void PrintVector3(TextWriter writer, String name, IndexedVector3 v)\n        {\n            writer.WriteLine(String.Format(\"[{0}] {{X:{1:0.00000000} Y:{2:0.00000000} Z:{3:0.00000000}}}\", name, v.X, v.Y, v.Z));\n        }\n\n        public static void PrintVector4(TextWriter writer, Vector4 v)\n        {\n            writer.WriteLine(String.Format(\"{{X:{0:0.00000000} Y:{1:0.00000000} Z:{2:0.00000000} W:{3:0.00000000}}}\", v.X, v.Y, v.Z, v.W));\n        }\n\n        public static void PrintVector4(TextWriter writer, String name, Vector4 v)\n        {\n            writer.WriteLine(String.Format(\"[{0}] {{X:{1:0.00000000} Y:{2:0.00000000} Z:{3:0.00000000} W:{4:0.00000000}}}\", name, v.X, v.Y, v.Z, v.W));\n        }\n\n\n        public static void PrintMatrix(TextWriter writer, IndexedMatrix m)\n        {\n            PrintMatrix(writer, null, m);\n        }\n\n        public static void PrintMatrix(TextWriter writer, String name, IndexedMatrix m)\n        {\n            if (writer != null)\n            {\n                if (name != null)\n                {\n                    writer.WriteLine(name);\n                }\n                PrintVector3(writer, \"Right       \", m._basis.GetColumn(0));\n                PrintVector3(writer, \"Up          \", m._basis.GetColumn(1));\n                PrintVector3(writer, \"Backward    \", m._basis.GetColumn(2));\n                PrintVector3(writer, \"Translation \", m._origin);\n            }\n        }\n\n        public static void PrintMatrix(TextWriter writer, IndexedBasisMatrix m)\n        {\n            PrintMatrix(writer, null, m);\n        }\n\n        public static void PrintMatrix(TextWriter writer, String name, IndexedBasisMatrix m)\n        {\n            if (writer != null)\n            {\n                if (name != null)\n                {\n                    writer.WriteLine(name);\n                }\n                PrintVector3(writer, \"Right       \", m.GetColumn(0));\n                PrintVector3(writer, \"Up          \", m.GetColumn(1));\n                PrintVector3(writer, \"Backward    \", m.GetColumn(2));\n                PrintVector3(writer, \"Translation \", IndexedVector3.Zero);\n            }\n        }\n                \n        //public static void PrintContactPoint(StreamWriter streamWriter, ManifoldPoint mp)\n        //{\n        //    if (streamWriter != null)\n        //    {\n        //        streamWriter.WriteLine(\"ContactPoint\");\n        //        PrintVector3(streamWriter, \"localPointA\", mp.m_localPointA);\n        //        PrintVector3(streamWriter, \"localPointB\", mp.m_localPointB);\n        //        PrintVector3(streamWriter, \"posWorldA\", mp.m_positionWorldOnA);\n        //        PrintVector3(streamWriter, \"posWorldB\", mp.m_positionWorldOnB);\n        //        PrintVector3(streamWriter, \"normalWorldB\", mp.m_normalWorldOnB);\n        //    }\n        //}\n\n        public static bool IsAlmostZero(Vector3 v)\n        {\n            if (Math.Abs(v.X) > 1e-6 || Math.Abs(v.Y) > 1e-6 || Math.Abs(v.Z) > 1e-6) return false;\n            return true;\n\n        }\n\n        public static bool IsAlmostZero(ref Vector3 v)\n        {\n            if (Math.Abs(v.X) > 1e-6 || Math.Abs(v.Y) > 1e-6 || Math.Abs(v.Z) > 1e-6) return false;\n            return true;\n        }\n\n        public static bool IsAlmostZero(IndexedVector3 v)\n        {\n            if (Math.Abs(v.X) > 1e-6 || Math.Abs(v.Y) > 1e-6 || Math.Abs(v.Z) > 1e-6) return false;\n            return true;\n\n        }\n\n        public static bool IsAlmostZero(ref IndexedVector3 v)\n        {\n            if (Math.Abs(v.X) > 1e-6 || Math.Abs(v.Y) > 1e-6 || Math.Abs(v.Z) > 1e-6) return false;\n            return true;\n        }\n\n\n        public static IndexedVector3 Vector3Lerp(ref IndexedVector3 a, ref IndexedVector3 b, float t)\n        {\n            return new IndexedVector3(\n                a.X + (b.X - a.X) * t,\n                a.Y + (b.Y - a.Y) * t,\n                a.Z + (b.Z - a.Z) * t);\n        }\n\n\n        public static float Vector3Distance2XZ(IndexedVector3 x, IndexedVector3 y)\n        {\n            IndexedVector3 xa = new IndexedVector3(x.X, 0, x.Z);\n            IndexedVector3 ya = new IndexedVector3(y.X, 0, y.Z);\n            return (xa - ya).LengthSquared();\n        }\n\n        public static void PrintMatrix(TextWriter writer, Matrix m)\n        {\n            PrintMatrix(writer, null, m);\n        }\n\n        public static void PrintMatrix(TextWriter writer, String name, Matrix m)\n        {\n            if (writer != null)\n            {\n                if (name != null)\n                {\n                    writer.WriteLine(name);\n                }\n                PrintVector3(writer, \"Right       \", m.Right);\n                PrintVector3(writer, \"Up          \", m.Up);\n                PrintVector3(writer, \"Backward    \", m.Backward);\n                PrintVector3(writer, \"Translation \", m.Translation);\n            }\n        }\n\n        public static void PrintVector3(TextWriter writer, Vector3 v)\n        {\n            writer.WriteLine(String.Format(\"{{X:{0:0.00000000} Y:{1:0.00000000} Z:{2:0.00000000}}}\", v.X, v.Y, v.Z));\n        }\n\n        public static void PrintVector3(TextWriter writer, String name, Vector3 v)\n        {\n            writer.WriteLine(String.Format(\"[{0}] {{X:{1:0.00000000} Y:{2:0.00000000} Z:{3:0.00000000}}}\", name, v.X, v.Y, v.Z));\n        }\n\n\n        //public const float SIMD_EPSILON = 0.0000001f;\n        public const float SIMD_EPSILON = 1.192092896e-07f;\n        public const float SIMDSQRT12 = 0.7071067811865475244008443621048490f;\n\n        public const float BT_LARGE_FLOAT = 1e18f;\n        public static IndexedVector3 MAX_VECTOR = new IndexedVector3(BT_LARGE_FLOAT);\n        public static IndexedVector3 MIN_VECTOR = new IndexedVector3(-BT_LARGE_FLOAT);\n        public const float SIMD_2_PI = 6.283185307179586232f;\n        public const float SIMD_PI = SIMD_2_PI * 0.5f;\n        public const float SIMD_HALF_PI = SIMD_PI * 0.5f;\n        public const float SIMD_QUARTER_PI = SIMD_PI * 0.25f;\n\n        public const float SIMD_INFINITY = float.MaxValue;\n        public const float SIMD_RADS_PER_DEG = (SIMD_2_PI / 360.0f);\n        public const float SIMD_DEGS_PER_RAD = (360.0f / SIMD_2_PI);\n\n        \n        [StructLayout(LayoutKind.Explicit)]\n        private struct FloatIntUnion\n        {\n            [FieldOffset(0)]\n            public int i;\n            [FieldOffset(0)]\n            public float f;\n        }\n\n        //  Returns the next floating-point number after x in the direction of y.\n        public static float NextAfter(float x, float y)\n        {\n\n            if (float.IsNaN(x) || float.IsNaN(y)) return x + y;\n            if (x == y) return y;  // nextafter (0.0, -0.0) should return -0.0\n\n            FloatIntUnion u;\n            u.i = 0; u.f = x; // shut up the compiler\n\n            if (x == 0)\n            {\n                u.i = 1;\n                return y > 0 ? u.f : -u.f;\n            }\n\n            if ((x > 0) == (y > x))\n                u.i++;\n            else\n                u.i--;\n            return u.f;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/GImpact/LinearMath/ObjectArray.cs",
    "content": "﻿/*\n * C# / XNA  port of Bullet (c) 2011 Mark Neale <xexuxjy@hotmail.com>\n *\n * Bullet Continuous Collision Detection and Physics Library\n * Copyright (c) 2003-2008 Erwin Coumans  http://www.bulletphysics.com/\n *\n * This software is provided 'as-is', without any express or implied warranty.\n * In no event will the authors be held liable for any damages arising from\n * the use of this software.\n * \n * Permission is granted to anyone to use this software for any purpose, \n * including commercial applications, and to alter it and redistribute it\n * freely, subject to the following restrictions:\n * \n * 1. The origin of this software must not be misrepresented; you must not\n *    claim that you wrote the original software. If you use this software\n *    in a product, an acknowledgment in the product documentation would be\n *    appreciated but is not required.\n * 2. Altered source versions must be plainly marked as such, and must not be\n *    misrepresented as being the original software.\n * 3. This notice may not be removed or altered from any source distribution.\n */\n\nusing System;\nusing System.Collections;\nusing System.Collections.Generic;\nusing System.Collections.ObjectModel;\nusing System.Runtime.InteropServices;\nusing System.Threading;\n\nnamespace BulletXNA.LinearMath\n{\n\t//This is an implementation of the ObjectArray class which attempts to grow itself to a certain size if it's indexed out of bounds?\n\tpublic class ObjectArray<T> : IList<T>,\n\tICollection<T>, IEnumerable<T>, IList, ICollection, IEnumerable where T:new()\n\t{\n\n\t\t// Fields\n\t\tprivate const int _defaultCapacity = 4;\n\t\tprivate static T[] _emptyArray;\n\t\tprivate T[] _items;\n\t\tprivate int _size;\n\t\tprivate object _syncRoot;\n\t\tprivate int _version;\n\n\t\t// Methods\n\t\tstatic ObjectArray()\n\t\t{\n\t\t\tObjectArray<T>._emptyArray = new T[0];\n\t\t}\n\n\t\tpublic ObjectArray()\n\t\t{\n\t\t\tthis._items = ObjectArray<T>._emptyArray;\n\t\t}\n\n        public T[] GetRawArray()\n        {\n            return _items;\n        }\n\n\t\tpublic ObjectArray(IEnumerable<T> collection)\n\t\t{\n\t\t\tif (collection == null)\n\t\t\t{\n\t\t\t\tthrow new Exception(\"ThrowHelper.ThrowArgumentNullException(ExceptionArgument.collection\");\n\t\t\t}\n\t\t\tICollection<T> is2 = collection as ICollection<T>;\n\t\t\tif (is2 != null)\n\t\t\t{\n\t\t\t\tint count = is2.Count;\n\t\t\t\tthis._items = new T[count];\n\t\t\t\tis2.CopyTo(this._items, 0);\n\t\t\t\tthis._size = count;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis._size = 0;\n\t\t\t\tthis._items = new T[4];\n\t\t\t\tusing (IEnumerator<T> enumerator = collection.GetEnumerator())\n\t\t\t\t{\n\t\t\t\t\twhile (enumerator.MoveNext())\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.Add(enumerator.Current);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic ObjectArray(int capacity)\n\t\t{\n\t\t\tif (capacity < 0)\n\t\t\t{\n\t\t\t\tthrow new Exception(\"ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument.capacity, ExceptionResource.ArgumentOutOfRange_SmallCapacity\");\n\t\t\t}\n\t\t\tthis._items = new T[capacity];\n\t\t}\n\n\t\tpublic void Add(T item)\n\t\t{\n\t\t\tif (this._size == this._items.Length)\n\t\t\t{\n\t\t\t\tthis.EnsureCapacity(this._size + 1);\n\t\t\t}\n\t\t\tthis._items[this._size++] = item;\n\t\t\tthis._version++;\n\t\t}\n\n\t\tpublic void AddRange(IEnumerable<T> collection)\n\t\t{\n\t\t\tthis.InsertRange(this._size, collection);\n\t\t}\n\n\t\tpublic ReadOnlyCollection<T> AsReadOnly()\n\t\t{\n\t\t\treturn new ReadOnlyCollection<T>(this);\n\t\t}\n\n        public void Swap(int index0, int index1)\n        {\n            T temp = _items[index0];\n            _items[index0] = _items[index1];\n            _items[index1] = temp;\n        }\n\n        public void Resize(int newsize)\n        {\n            Resize(newsize, true);\n        }\n\n        public void\tResize(int newsize,bool allocate)\n\t\t{\n\t\t\tint curSize = Count;\n\n\t\t\tif (newsize < curSize)\n\t\t\t{\n                if (allocate)\n                {\n                    for (int i = newsize; i < curSize; i++)\n                    {\n                        this._items[i] = new T();\n                    }\n                }\n                else\n                {\n                    for (int i = newsize; i < curSize; i++)\n                    {\n                        this._items[i] = default(T);\n                    }\n                }\n\t\t\t} else\n\t\t\t{\n\t\t\t\tif (newsize > Count)\n\t\t\t\t{\n\t\t\t\t\tCapacity = newsize;\n\t\t\t\t}\n                if(allocate)\n                {\n\t\t\t\t    for (int i=curSize;i<newsize;i++)\n\t\t\t\t    {\n\t\t\t\t\t    this._items[i] = new T();\n\t\t\t\t    }\n                }\n\n\t\t\t}\n\n            this._size = newsize;\n\t\t}\n\t\n\n\n\t\tpublic int BinarySearch(T item)\n\t\t{\n\t\t\treturn this.BinarySearch(0, this.Count, item, null);\n\t\t}\n\n\t\tpublic int BinarySearch(T item, IComparer<T> comparer)\n\t\t{\n\t\t\treturn this.BinarySearch(0, this.Count, item, comparer);\n\t\t}\n\n\t\tpublic int BinarySearch(int index, int count, T item, IComparer<T> comparer)\n\t\t{\n\t\t\tif ((index < 0) || (count < 0))\n\t\t\t{\n\t\t\t\tthrow new Exception(\"ThrowHelper.ThrowArgumentOutOfRangeException((index < 0) ? ExceptionArgument.index : ExceptionArgument.count, ExceptionResource.ArgumentOutOfRange_NeedNonNegNum\");\n\t\t\t}\n\t\t\tif ((this._size - index) < count)\n\t\t\t{\n\t\t\t\tthrow new Exception(\"ExceptionResource  - Offlen\");\n\t\t\t}\n\t\t\treturn Array.BinarySearch<T>(this._items, index, count, item, comparer);\n\t\t}\n\n\t\tpublic void Clear()\n\t\t{\n\t\t\tif (this._size > 0)\n\t\t\t{\n\t\t\t\tArray.Clear(this._items, 0, this._size);\n\t\t\t\tthis._size = 0;\n\t\t\t}\n\t\t\tthis._version++;\n\t\t}\n\n\t\tpublic bool Contains(T item)\n\t\t{\n\t\t\tif (item == null)\n\t\t\t{\n\t\t\t\tfor (int j = 0; j < this._size; j++)\n\t\t\t\t{\n\t\t\t\t\tif (this._items[j] == null)\n\t\t\t\t\t{\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tEqualityComparer<T> comparer = EqualityComparer<T>.Default;\n\t\t\tfor (int i = 0; i < this._size; i++)\n\t\t\t{\n\t\t\t\tif (comparer.Equals(this._items[i], item))\n\t\t\t\t{\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\n\t\tpublic ObjectArray<TOutput> ConvertAll<TOutput>(Converter<T, TOutput> converter) where TOutput : new()\n\t\t{\n\t\t\tif (converter == null)\n\t\t\t{\n\t\t\t\tthrow new Exception(\"ThrowHelper.ThrowArgumentNullException(ExceptionArgument.converter\");\n\t\t\t}\n\t\t\tObjectArray<TOutput> list = new ObjectArray<TOutput>(this._size);\n\t\t\tfor (int i = 0; i < this._size; i++)\n\t\t\t{\n\t\t\t\tlist._items[i] = converter(this._items[i]);\n\t\t\t}\n\t\t\tlist._size = this._size;\n\t\t\treturn list;\n\t\t}\n\n\t\tpublic void CopyTo(T[] array)\n\t\t{\n\t\t\tthis.CopyTo(array, 0);\n\t\t}\n\n\t\tpublic void CopyTo(T[] array, int arrayIndex)\n\t\t{\n\t\t\tArray.Copy(this._items, 0, array, arrayIndex, this._size);\n\t\t}\n\n\t\tpublic void CopyTo(int index, T[] array, int arrayIndex, int count)\n\t\t{\n\t\t\tif ((this._size - index) < count)\n\t\t\t{\n\t\t\t\tthrow new Exception(\"ExceptionResource  - Offlen\");\n\t\t\t}\n\t\t\tArray.Copy(this._items, index, array, arrayIndex, count);\n\t\t}\n\n\t\tprivate void EnsureCapacity(int min)\n\t\t{\n\t\t\tif (this._items.Length < min)\n\t\t\t{\n\t\t\t\tint num = (this._items.Length == 0) ? 4 : (this._items.Length * 2);\n\t\t\t\tif (num < min)\n\t\t\t\t{\n\t\t\t\t\tnum = min;\n\t\t\t\t}\n\t\t\t\tthis.Capacity = num;\n\t\t\t}\n\t\t}\n\n\t\tpublic bool Exists(Predicate<T> match)\n\t\t{\n\t\t\treturn (this.FindIndex(match) != -1);\n\t\t}\n\n\t\tpublic T Find(Predicate<T> match)\n\t\t{\n\t\t\tif (match == null)\n\t\t\t{\n\t\t\t\tthrow new Exception(\"ThrowHelper.ThrowArgumentNullException(ExceptionArgument.match\");\n\t\t\t}\n\t\t\tfor (int i = 0; i < this._size; i++)\n\t\t\t{\n\t\t\t\tif (match(this._items[i]))\n\t\t\t\t{\n\t\t\t\t\treturn this._items[i];\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn default(T);\n\t\t}\n\n\t\tpublic ObjectArray<T> FindAll(Predicate<T> match)\n\t\t{\n\t\t\tif (match == null)\n\t\t\t{\n\t\t\t\tthrow new Exception(\"ThrowHelper.ThrowArgumentNullException(ExceptionArgument.match\");\n\t\t\t}\n\t\t\tObjectArray<T> list = new ObjectArray<T>();\n\t\t\tfor (int i = 0; i < this._size; i++)\n\t\t\t{\n\t\t\t\tif (match(this._items[i]))\n\t\t\t\t{\n\t\t\t\t\tlist.Add(this._items[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn list;\n\t\t}\n\n\t\tpublic int FindIndex(Predicate<T> match)\n\t\t{\n\t\t\treturn this.FindIndex(0, this._size, match);\n\t\t}\n\n\t\tpublic int FindIndex(int startIndex, Predicate<T> match)\n\t\t{\n\t\t\treturn this.FindIndex(startIndex, this._size - startIndex, match);\n\t\t}\n\n\t\tpublic int FindIndex(int startIndex, int count, Predicate<T> match)\n\t\t{\n\t\t\tif (startIndex > this._size)\n\t\t\t{\n\t\t\t\tthrow new Exception(\"ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument.startIndex, ExceptionResource.ArgumentOutOfRange_Index\");\n\t\t\t}\n\t\t\tif ((count < 0) || (startIndex > (this._size - count)))\n\t\t\t{\n\t\t\t\tthrow new Exception(\"ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument.count, ExceptionResource.ArgumentOutOfRange_Count\");\n\t\t\t}\n\t\t\tif (match == null)\n\t\t\t{\n\t\t\t\tthrow new Exception(\"ThrowHelper.ThrowArgumentNullException(ExceptionArgument.match\");\n\t\t\t}\n\t\t\tint num = startIndex + count;\n\t\t\tfor (int i = startIndex; i < num; i++)\n\t\t\t{\n\t\t\t\tif (match(this._items[i]))\n\t\t\t\t{\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn -1;\n\t\t}\n\n\t\tpublic T FindLast(Predicate<T> match)\n\t\t{\n\t\t\tif (match == null)\n\t\t\t{\n\t\t\t\tthrow new Exception(\"ThrowHelper.ThrowArgumentNullException(ExceptionArgument.match\");\n\t\t\t}\n\t\t\tfor (int i = this._size - 1; i >= 0; i--)\n\t\t\t{\n\t\t\t\tif (match(this._items[i]))\n\t\t\t\t{\n\t\t\t\t\treturn this._items[i];\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn default(T);\n\t\t}\n\n\t\tpublic int FindLastIndex(Predicate<T> match)\n\t\t{\n\t\t\treturn this.FindLastIndex(this._size - 1, this._size, match);\n\t\t}\n\n\t\tpublic int FindLastIndex(int startIndex, Predicate<T> match)\n\t\t{\n\t\t\treturn this.FindLastIndex(startIndex, startIndex + 1, match);\n\t\t}\n\n\t\tpublic int FindLastIndex(int startIndex, int count, Predicate<T> match)\n\t\t{\n\t\t\tif (match == null)\n\t\t\t{\n\t\t\t\tthrow new Exception(\"ThrowHelper.ThrowArgumentNullException(ExceptionArgument.match\");\n\t\t\t}\n\t\t\tif (this._size == 0)\n\t\t\t{\n\t\t\t\tif (startIndex != -1)\n\t\t\t\t{\n\t\t\t\t\tthrow new Exception(\"ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument.startIndex, ExceptionResource.ArgumentOutOfRange_Index\");\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (startIndex >= this._size)\n\t\t\t{\n\t\t\t\tthrow new Exception(\"ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument.startIndex, ExceptionResource.ArgumentOutOfRange_Index\");\n\t\t\t}\n\t\t\tif ((count < 0) || (((startIndex - count) + 1) < 0))\n\t\t\t{\n\t\t\t\tthrow new Exception(\"ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument.count, ExceptionResource.ArgumentOutOfRange_Count\");\n\t\t\t}\n\t\t\tint num = startIndex - count;\n\t\t\tfor (int i = startIndex; i > num; i--)\n\t\t\t{\n\t\t\t\tif (match(this._items[i]))\n\t\t\t\t{\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn -1;\n\t\t}\n\n\t\tpublic void ForEach(Action<T> action)\n\t\t{\n\t\t\tif (action == null)\n\t\t\t{\n\t\t\t\tthrow new Exception(\"ThrowHelper.ThrowArgumentNullException(ExceptionArgument.match\");\n\t\t\t}\n\t\t\tfor (int i = 0; i < this._size; i++)\n\t\t\t{\n\t\t\t\taction(this._items[i]);\n\t\t\t}\n\t\t}\n\n\t\t//public Enumerator<T> GetEnumerator()\n\t\t//{\n\t\t//    return new Enumerator<T>((ObjectArray<T>)this);\n\t\t//}\n\n\t\tpublic ObjectArray<T> GetRange(int index, int count)\n\t\t{\n\t\t\tif ((index < 0) || (count < 0))\n\t\t\t{\n\t\t\t\tthrow new Exception(\"ThrowHelper.ThrowArgumentOutOfRangeException((index < 0) ? ExceptionArgument.index : ExceptionArgument.count, ExceptionResource.ArgumentOutOfRange_NeedNonNegNum\");\n\t\t\t}\n\t\t\tif ((this._size - index) < count)\n\t\t\t{\n\t\t\t\tthrow new Exception(\"ExceptionResource  - Offlen\");\n\t\t\t}\n\t\t\tObjectArray<T> list = new ObjectArray<T>(count);\n\t\t\tArray.Copy(this._items, index, list._items, 0, count);\n\t\t\tlist._size = count;\n\t\t\treturn list;\n\t\t}\n\n\t\tpublic int IndexOf(T item)\n\t\t{\n\t\t\treturn Array.IndexOf<T>(this._items, item, 0, this._size);\n\t\t}\n\n\t\tpublic int IndexOf(T item, int index)\n\t\t{\n\t\t\tif (index > this._size)\n\t\t\t{\n\t\t\t\tthrow new Exception(\"ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument.index, ExceptionResource.ArgumentOutOfRange_Index\");\n\t\t\t}\n\t\t\treturn Array.IndexOf<T>(this._items, item, index, this._size - index);\n\t\t}\n\n\t\tpublic int IndexOf(T item, int index, int count)\n\t\t{\n\t\t\tif (index > this._size)\n\t\t\t{\n\t\t\t\tthrow new Exception(\"ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument.index, ExceptionResource.ArgumentOutOfRange_Index\");\n\t\t\t}\n\t\t\tif ((count < 0) || (index > (this._size - count)))\n\t\t\t{\n\t\t\t\tthrow new Exception(\"ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument.count, ExceptionResource.ArgumentOutOfRange_Count\");\n\t\t\t}\n\t\t\treturn Array.IndexOf<T>(this._items, item, index, count);\n\t\t}\n\n\t\tpublic void Insert(int index, T item)\n\t\t{\n\t\t\tif (index > this._size)\n\t\t\t{\n\t\t\t\tthrow new Exception(\"ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument.index, ExceptionResource.ArgumentOutOfRange_ListInsert\");\n\t\t\t}\n\t\t\tif (this._size == this._items.Length)\n\t\t\t{\n\t\t\t\tthis.EnsureCapacity(this._size + 1);\n\t\t\t}\n\t\t\tif (index < this._size)\n\t\t\t{\n\t\t\t\tArray.Copy(this._items, index, this._items, index + 1, this._size - index);\n\t\t\t}\n\t\t\tthis._items[index] = item;\n\t\t\tthis._size++;\n\t\t\tthis._version++;\n\t\t}\n\n\t\tpublic void InsertRange(int index, IEnumerable<T> collection)\n\t\t{\n\t\t\tif (collection == null)\n\t\t\t{\n\t\t\t\tthrow new Exception(\"ThrowHelper.ThrowArgumentNullException(ExceptionArgument.collection\");\n\t\t\t}\n\t\t\tif (index > this._size)\n\t\t\t{\n\t\t\t\tthrow new Exception(\"ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument.index, ExceptionResource.ArgumentOutOfRange_Index\");\n\t\t\t}\n\t\t\tICollection<T> is2 = collection as ICollection<T>;\n\t\t\tif (is2 != null)\n\t\t\t{\n\t\t\t\tint count = is2.Count;\n\t\t\t\tif (count > 0)\n\t\t\t\t{\n\t\t\t\t\tthis.EnsureCapacity(this._size + count);\n\t\t\t\t\tif (index < this._size)\n\t\t\t\t\t{\n\t\t\t\t\t\tArray.Copy(this._items, index, this._items, index + count, this._size - index);\n\t\t\t\t\t}\n\t\t\t\t\tif (this == is2)\n\t\t\t\t\t{\n\t\t\t\t\t\tArray.Copy(this._items, 0, this._items, index, index);\n\t\t\t\t\t\tArray.Copy(this._items, (int)(index + count), this._items, (int)(index * 2), (int)(this._size - index));\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tT[] array = new T[count];\n\t\t\t\t\t\tis2.CopyTo(array, 0);\n\t\t\t\t\t\tarray.CopyTo(this._items, index);\n\t\t\t\t\t}\n\t\t\t\t\tthis._size += count;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tusing (IEnumerator<T> enumerator = collection.GetEnumerator())\n\t\t\t\t{\n\t\t\t\t\twhile (enumerator.MoveNext())\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.Insert(index++, enumerator.Current);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._version++;\n\t\t}\n\n\t\tprivate static bool IsCompatibleObject(object value)\n\t\t{\n\t\t\tif (!(value is T) && ((value != null) || typeof(T).IsValueType))\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\n\t\tpublic int LastIndexOf(T item)\n\t\t{\n\t\t\treturn this.LastIndexOf(item, this._size - 1, this._size);\n\t\t}\n\n\t\tpublic int LastIndexOf(T item, int index)\n\t\t{\n\t\t\tif (index >= this._size)\n\t\t\t{\n\t\t\t\tthrow new Exception(\"ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument.index, ExceptionResource.ArgumentOutOfRange_Index\");\n\t\t\t}\n\t\t\treturn this.LastIndexOf(item, index, index + 1);\n\t\t}\n\n\t\tpublic int LastIndexOf(T item, int index, int count)\n\t\t{\n\t\t\tif (this._size == 0)\n\t\t\t{\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tif ((index < 0) || (count < 0))\n\t\t\t{\n\t\t\t\tthrow new Exception(\"ThrowHelper.ThrowArgumentOutOfRangeException((index < 0) ? ExceptionArgument.index : ExceptionArgument.count, ExceptionResource.ArgumentOutOfRange_NeedNonNegNum\");\n\t\t\t}\n\t\t\tif ((index >= this._size) || (count > (index + 1)))\n\t\t\t{\n\t\t\t\tthrow new Exception(\"ThrowHelper.ThrowArgumentOutOfRangeException((index >= this._size) ? ExceptionArgument.index : ExceptionArgument.count, ExceptionResource.ArgumentOutOfRange_BiggerThanCollection\");\n\t\t\t}\n\t\t\treturn Array.LastIndexOf<T>(this._items, item, index, count);\n\t\t}\n\n        // Remove the item if it exits, order of the data isn't preserved and last item is copied into it's place.\n        public bool RemoveQuick(T item)\n        {\n\t\t\tint index = this.IndexOf(item);\n\t\t\tif (index >= 0)\n\t\t\t{\n                if (_size > 0)\n                {\n                    // copy the last item to this position\n                    this._items[index] = this._items[_size - 1];\n                }\n                --_size;\n                return true;\n            }\n\t\t\treturn false;\n\t\t}\n\n        public bool RemoveAtQuick(int  index)\n        {\n            if (index >= 0)\n            {\n                if (_size > 0)\n                {\n                    // copy the last item to this position\n                    this._items[index] = this._items[_size - 1];\n                }\n                --_size;\n                return true;\n            }\n            return false;\n        }\n\n\t\tpublic bool Remove(T item)\n\t\t{\n\t\t\tint index = this.IndexOf(item);\n\t\t\tif (index >= 0)\n\t\t\t{\n\t\t\t\tthis.RemoveAt(index);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\n\t\tpublic int RemoveAll(Predicate<T> match)\n\t\t{\n\t\t\tif (match == null)\n\t\t\t{\n\t\t\t\tthrow new Exception(\"ThrowHelper.ThrowArgumentNullException(ExceptionArgument.match\");\n\t\t\t}\n\t\t\tint index = 0;\n\t\t\twhile ((index < this._size) && !match(this._items[index]))\n\t\t\t{\n\t\t\t\tindex++;\n\t\t\t}\n\t\t\tif (index >= this._size)\n\t\t\t{\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t\tint num2 = index + 1;\n\t\t\twhile (num2 < this._size)\n\t\t\t{\n\t\t\t\twhile ((num2 < this._size) && match(this._items[num2]))\n\t\t\t\t{\n\t\t\t\t\tnum2++;\n\t\t\t\t}\n\t\t\t\tif (num2 < this._size)\n\t\t\t\t{\n\t\t\t\t\tthis._items[index++] = this._items[num2++];\n\t\t\t\t}\n\t\t\t}\n\t\t\tArray.Clear(this._items, index, this._size - index);\n\t\t\tint num3 = this._size - index;\n\t\t\tthis._size = index;\n\t\t\tthis._version++;\n\t\t\treturn num3;\n\t\t}\n\n\t\tpublic void RemoveAt(int index)\n\t\t{\n\t\t\tif (index >= this._size)\n\t\t\t{\n\t\t\t\tthrow new Exception(\"ThrowHelper.ThrowArgumentOutOfRangeException\");\n\t\t\t}\n\t\t\tthis._size--;\n\t\t\tif (index < this._size)\n\t\t\t{\n\t\t\t\tArray.Copy(this._items, index + 1, this._items, index, this._size - index);\n\t\t\t}\n\t\t\tthis._items[this._size] = default(T);\n\t\t\tthis._version++;\n\t\t}\n\n\t\tpublic void RemoveRange(int index, int count)\n\t\t{\n\t\t\tif ((index < 0) || (count < 0))\n\t\t\t{\n\t\t\t\tthrow new Exception(\"ThrowHelper.ThrowArgumentOutOfRangeException((index < 0) ? ExceptionArgument.index : ExceptionArgument.count, ExceptionResource.ArgumentOutOfRange_NeedNonNegNum\");\n\t\t\t}\n\t\t\tif ((this._size - index) < count)\n\t\t\t{\n\t\t\t\tthrow new Exception(\"ExceptionResource  - Offlen\");\n\t\t\t}\n\t\t\tif (count > 0)\n\t\t\t{\n\t\t\t\tthis._size -= count;\n\t\t\t\tif (index < this._size)\n\t\t\t\t{\n\t\t\t\t\tArray.Copy(this._items, index + count, this._items, index, this._size - index);\n\t\t\t\t}\n\t\t\t\tArray.Clear(this._items, this._size, count);\n\t\t\t\tthis._version++;\n\t\t\t}\n\t\t}\n\n\t\tpublic void Reverse()\n\t\t{\n\t\t\tthis.Reverse(0, this.Count);\n\t\t}\n\n\t\tpublic void Reverse(int index, int count)\n\t\t{\n\t\t\tif ((index < 0) || (count < 0))\n\t\t\t{\n\t\t\t\tthrow new Exception(\"ThrowHelper.ThrowArgumentOutOfRangeException((index < 0) ? ExceptionArgument.index : ExceptionArgument.count, ExceptionResource.ArgumentOutOfRange_NeedNonNegNum\");\n\t\t\t}\n\t\t\tif ((this._size - index) < count)\n\t\t\t{\n\t\t\t\tthrow new Exception(\"ExceptionResource  - Offlen\");\n\t\t\t}\n\t\t\tArray.Reverse(this._items, index, count);\n\t\t\tthis._version++;\n\t\t}\n\n\t\tpublic void Sort()\n\t\t{\n\t\t\tthis.Sort(0, this.Count, null);\n\t\t}\n\n\t\tpublic void Sort(IComparer<T> comparer)\n\t\t{\n\t\t\tthis.Sort(0, this.Count, comparer);\n\t\t}\n\n\t\tpublic void Sort(Comparison<T> comparison)\n\t\t{\n\t\t\tif (comparison == null)\n\t\t\t{\n\t\t\t\tthrow new Exception(\"ThrowHelper.ThrowArgumentNullException(ExceptionArgument.match\");\n\t\t\t}\n\t\t\tif (this._size > 0)\n\t\t\t{\n\t\t\t\tIComparer<T> comparer = new ObjectArray<T>.FunctorComparer(comparison);\n\t\t\t\tArray.Sort<T>(this._items, 0, this._size, comparer);\n\t\t\t}\n\t\t}\n\n\t\tpublic void Sort(int index, int count, IComparer<T> comparer)\n\t\t{\n\t\t\tif ((index < 0) || (count < 0))\n\t\t\t{\n\t\t\t\tthrow new Exception(\"ThrowHelper.ThrowArgumentOutOfRangeException((index < 0) ? ExceptionArgument.index : ExceptionArgument.count, ExceptionResource.ArgumentOutOfRange_NeedNonNegNum\");\n\t\t\t}\n\t\t\tif ((this._size - index) < count)\n\t\t\t{\n\t\t\t\tthrow new Exception(\"ExceptionResource  - Offlen\");\n\t\t\t}\n\t\t\tArray.Sort<T>(this._items, index, count, comparer);\n\t\t\tthis._version++;\n\t\t}\n\n\t\tIEnumerator<T> IEnumerable<T>.GetEnumerator()\n\t\t{\n\t\t\treturn new Enumerator((ObjectArray<T>)this);\n\t\t}\n\n\t\tvoid ICollection.CopyTo(Array array, int arrayIndex)\n\t\t{\n\t\t\tif ((array != null) && (array.Rank != 1))\n\t\t\t{\n\t\t\t\tthrow new Exception(\"ThrowHelper.ThrowArgumentException(ExceptionResource.Arg_RankMultiDimNotSupported\");\n\t\t\t}\n\t\t\ttry\n\t\t\t{\n\t\t\t\tArray.Copy(this._items, 0, array, arrayIndex, this._size);\n\t\t\t}\n\t\t\tcatch (ArrayTypeMismatchException)\n\t\t\t{\n\t\t\t\tthrow new Exception(\"ThrowHelper.ThrowArgumentException(ExceptionResource.Argument_InvalidArrayType\");\n\t\t\t}\n\t\t}\n\n\t\tIEnumerator IEnumerable.GetEnumerator()\n\t\t{\n\t\t\treturn new Enumerator((ObjectArray<T>)this);\n\t\t}\n\n\t\tint IList.Add(object item)\n\t\t{\n\t\t\tObjectArray<T>.VerifyValueType(item);\n\t\t\tthis.Add((T)item);\n\t\t\treturn (this.Count - 1);\n\t\t}\n\n\t\tbool IList.Contains(object item)\n\t\t{\n\t\t\treturn (ObjectArray<T>.IsCompatibleObject(item) && this.Contains((T)item));\n\t\t}\n\n\t\tint IList.IndexOf(object item)\n\t\t{\n\t\t\tif (ObjectArray<T>.IsCompatibleObject(item))\n\t\t\t{\n\t\t\t\treturn this.IndexOf((T)item);\n\t\t\t}\n\t\t\treturn -1;\n\t\t}\n\n\t\tvoid IList.Insert(int index, object item)\n\t\t{\n\t\t\tObjectArray<T>.VerifyValueType(item);\n\t\t\tthis.Insert(index, (T)item);\n\t\t}\n\n\t\tvoid IList.Remove(object item)\n\t\t{\n\t\t\tif (ObjectArray<T>.IsCompatibleObject(item))\n\t\t\t{\n\t\t\t\tthis.Remove((T)item);\n\t\t\t}\n\t\t}\n\n\t\tpublic T[] ToArray()\n\t\t{\n\t\t\tT[] destinationArray = new T[this._size];\n\t\t\tArray.Copy(this._items, 0, destinationArray, 0, this._size);\n\t\t\treturn destinationArray;\n\t\t}\n\n\t\tpublic void TrimExcess()\n\t\t{\n\t\t\tint num = (int)(this._items.Length * 0.9);\n\t\t\tif (this._size < num)\n\t\t\t{\n\t\t\t\tthis.Capacity = this._size;\n\t\t\t}\n\t\t}\n\n\t\tpublic bool TrueForAll(Predicate<T> match)\n\t\t{\n\t\t\tif (match == null)\n\t\t\t{\n\t\t\t\tthrow new Exception(\"ThrowHelper.ThrowArgumentNullException(ExceptionArgument.match\");\n\t\t\t}\n\t\t\tfor (int i = 0; i < this._size; i++)\n\t\t\t{\n\t\t\t\tif (!match(this._items[i]))\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\n\t\tprivate static void VerifyValueType(object value)\n\t\t{\n\t\t\tif (!ObjectArray<T>.IsCompatibleObject(value))\n\t\t\t{\n\t\t\t\tthrow new Exception(\"ThrowHelper.ThrowWrongValueTypeArgumentException(value, typeof(T)\");\n\t\t\t}\n\t\t}\n\n\t\t// Properties\n\t\tpublic int Capacity\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\treturn this._items.Length;\n\t\t\t}\n\t\t\tset\n\t\t\t{\n\t\t\t\tif (value != this._items.Length)\n\t\t\t\t{\n\t\t\t\t\tif (value < this._size)\n\t\t\t\t\t{\n\t\t\t\t\t\tthrow new Exception(\"ExceptionResource ArgumentOutOfRange_SmallCapacity\");\n\t\t\t\t\t}\n\t\t\t\t\tif (value > 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tT[] destinationArray = new T[value];\n\t\t\t\t\t\tif (this._size > 0)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tArray.Copy(this._items, 0, destinationArray, 0, this._size);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._items = destinationArray;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tthis._items = ObjectArray<T>._emptyArray;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic int Count\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\treturn this._size;\n\t\t\t}\n\t\t}\n\n\t\tpublic T this[int index]\n\t\t{\n\t\t\tget\n\t\t\t{\n                //checkAndGrow(index);\n                int diff = index + 1 - _size;\n                for (int i = 0; i < diff; ++i)\n                {\n                    Add(new T());\n                }\n\n\t\t\t\tif (index >= this._size)\n\t\t\t\t{\n\t\t\t\t\tthrow new Exception(\"ThrowHelper.ThrowArgumentOutOfRangeException()\");\n\t\t\t\t}\n\t\t\t\treturn this._items[index];\n\t\t\t}\n\t\t\tset\n\t\t\t{\n                int diff = index + 1 - _size;\n                for (int i = 0; i < diff; ++i)\n                {\n                    Add(new T());\n                }\n\n                //checkAndGrow(index);\n\t\t\t\tif (index >= this._size)\n\t\t\t\t{\n\t\t\t\t\tthrow new Exception(\"ThrowHelper.ThrowArgumentOutOfRangeException()\");\n\t\t\t\t}\n\t\t\t\tthis._items[index] = value;\n\t\t\t\tthis._version++;\n\t\t\t}\n\t\t}\n\n\t\tbool ICollection<T>.IsReadOnly\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tbool ICollection.IsSynchronized\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tobject ICollection.SyncRoot\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\tif (this._syncRoot == null)\n\t\t\t\t{\n\t\t\t\t\tInterlocked.CompareExchange(ref this._syncRoot, new object(), null);\n\t\t\t\t}\n\t\t\t\treturn this._syncRoot;\n\t\t\t}\n\t\t}\n\n\t\tbool IList.IsFixedSize\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tbool IList.IsReadOnly\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\n\t\tobject IList.this[int index]\n\t\t{\n\t\t\tget\n\t\t\t{\n                //checkAndGrow(index);\n                int diff = index + 1 - _size;\n                for (int i = 0; i < diff; ++i)\n                {\n                    Add(new T());\n                }\n\n\t\t\t\treturn this[index];\n\t\t\t}\n\t\t\tset\n\t\t\t{\n                //checkAndGrow(index);\n                int diff = index + 1 - _size;\n                for (int i = 0; i < diff; ++i)\n                {\n                    Add(new T());\n                }\n\n\t\t\t\tObjectArray<T>.VerifyValueType(value);\n\t\t\t\tthis[index] = (T)value;\n\t\t\t}\n\t\t}\n\n\t\tprivate void checkAndGrow(int newSize)\n\t\t{\n\t\t\tint diff = newSize+1 - _size;\n\t\t\tfor(int i=0;i<diff;++i)\n\t\t\t{\n\t\t\t\tAdd(new T());\n\t\t\t}\n\t\t}\n\n\t\t// Nested Types\n\t\t[StructLayout(LayoutKind.Sequential)]\n\t\tpublic struct Enumerator : IEnumerator<T>, IDisposable, IEnumerator\n\t\t{\n\t\t\tprivate ObjectArray<T> list;\n\t\t\tprivate int index;\n\t\t\tprivate int version;\n\t\t\tprivate T current;\n\t\t\tinternal Enumerator(ObjectArray<T> list)\n\t\t\t{\n\t\t\t\tthis.list = list;\n\t\t\t\tthis.index = 0;\n\t\t\t\tthis.version = list._version;\n\t\t\t\tthis.current = default(T);\n\t\t\t}\n\n\t\t\tpublic void Dispose()\n\t\t\t{\n\t\t\t}\n\n\t\t\tpublic bool MoveNext()\n\t\t\t{\n\t\t\t\tObjectArray<T> list = this.list;\n\t\t\t\tif ((this.version == list._version) && (this.index < list._size))\n\t\t\t\t{\n\t\t\t\t\tthis.current = list._items[this.index];\n\t\t\t\t\tthis.index++;\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn this.MoveNextRare();\n\t\t\t}\n\n\t\t\tprivate bool MoveNextRare()\n\t\t\t{\n\t\t\t\tif (this.version != this.list._version)\n\t\t\t\t{\n\t\t\t\t\tthrow new Exception(\"InvalidOperation EnumFailedVersion\");\n\t\t\t\t}\n\t\t\t\tthis.index = this.list._size + 1;\n\t\t\t\tthis.current = default(T);\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tpublic T Current\n\t\t\t{\n\t\t\t\tget\n\t\t\t\t{\n\t\t\t\t\treturn this.current;\n\t\t\t\t}\n\t\t\t}\n\t\t\tobject IEnumerator.Current\n\t\t\t{\n\t\t\t\tget\n\t\t\t\t{\n\t\t\t\t\tif ((this.index == 0) || (this.index == (this.list._size + 1)))\n\t\t\t\t\t{\n\t\t\t\t\t\tthrow new Exception(\"InvalidOperation EnumOpCantHappen\");\n\t\t\t\t\t}\n\t\t\t\t\treturn this.Current;\n\t\t\t\t}\n\t\t\t}\n\t\t\tvoid IEnumerator.Reset()\n\t\t\t{\n\t\t\t\tif (this.version != this.list._version)\n\t\t\t\t{\n\t\t\t\t\tthrow new Exception(\"InvalidOperation EnumFailedVersion\");\n\t\t\t\t}\n\t\t\t\tthis.index = 0;\n\t\t\t\tthis.current = default(T);\n\t\t\t}\n\t\t}\n\n\t\tinternal sealed class FunctorComparer : IComparer<T>\n\t\t{\n\t\t\t// Fields\n\t\t\tprivate Comparer<T> c;\n\t\t\tprivate Comparison<T> comparison;\n\n\t\t\t// Methods\n\t\t\tpublic FunctorComparer(Comparison<T> comparison)\n\t\t\t{\n\t\t\t\tthis.c = Comparer<T>.Default;\n\t\t\t\tthis.comparison = comparison;\n\t\t\t}\n\n\t\t\tpublic int Compare(T x, T y)\n\t\t\t{\n\t\t\t\treturn this.comparison(x, y);\n\t\t\t}\n\t\t}\n\n\n\n\t}\n}\n\n \n \n \n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/GImpact/LinearMath/TransformUtil.cs",
    "content": "﻿/*\n * C# / XNA  port of Bullet (c) 2011 Mark Neale <xexuxjy@hotmail.com>\n *\n * Bullet Continuous Collision Detection and Physics Library\n * Copyright (c) 2003-2008 Erwin Coumans  http://www.bulletphysics.com/\n *\n * This software is provided 'as-is', without any express or implied warranty.\n * In no event will the authors be held liable for any damages arising from\n * the use of this software.\n * \n * Permission is granted to anyone to use this software for any purpose, \n * including commercial applications, and to alter it and redistribute it\n * freely, subject to the following restrictions:\n * \n * 1. The origin of this software must not be misrepresented; you must not\n *    claim that you wrote the original software. If you use this software\n *    in a product, an acknowledgment in the product documentation would be\n *    appreciated but is not required.\n * 2. Altered source versions must be plainly marked as such, and must not be\n *    misrepresented as being the original software.\n * 3. This notice may not be removed or altered from any source distribution.\n */\n\nusing System;\nusing System.Collections.Generic;\n\nusing MinerWarsMath;\nusing BulletXNA.LinearMath;\n\nnamespace BulletXNA\n{\n    public static class TransformUtil\n    {\n        public static IList<float> FloatToList(float f)\n        {\n            IList<float> list = new List<float>();\n            list.Add(f);\n            return list;\n        }\n\n        public static IList<float> VectorToList(IndexedVector3 vector)\n        {\n            return VectorToList(ref vector);\n        }\n\n        public static IList<float> VectorToList(ref IndexedVector3 vector)\n        {\n            IList<float> list = new List<float>();\n            list.Add(vector.X);\n            list.Add(vector.Y);\n            list.Add(vector.Z);\n            return list;\n        }\n\n        public static IList<IndexedVector3> VectorsFromList(IList<float> list)\n        {\n            IList<IndexedVector3> vecList = new List<IndexedVector3>();\n            int numVectors = list.Count / 3;\n            for(int i=0;i<numVectors;++i)\n            {\n                IndexedVector3 vec = new IndexedVector3(list[3*i],list[(3*i)+1],list[(3*i)+2]);\n                vecList.Add(vec);\n            }\n            return vecList;\n        }\n\n        //public static IndexedVector3 InverseTransform(ref IndexedVector3 v, ref IndexedMatrix m)\n        //{\n        //    return IndexedVector3.Transform(v, IndexedMatrix.Invert(m));\n        //}\n        \n        public static void PlaneSpace1(ref IndexedVector3 n, out IndexedVector3 p, out IndexedVector3 q)\n        {\n            if (Math.Abs(n.Z) > MathUtil.SIMDSQRT12)\n            {\n                // choose p in y-z plane\n                float a = n.Y * n.Y + n.Z * n.Z;\n                float k = MathUtil.RecipSqrt(a);\n                p = new IndexedVector3(0, -n.Z * k, n.Y * k);\n                // set q = n x p\n                q = new IndexedVector3(a * k, -n.X * p.Z, n.X * p.Y);\n            }\n            else\n            {\n                // choose p in x-y plane\n                float a = n.X * n.X + n.Y * n.Y;\n                float k = MathUtil.RecipSqrt(a);\n                p = new IndexedVector3(-n.Y * k, n.X * k, 0);\n                // set q = n x p\n                q = new IndexedVector3(-n.Z * p.Y, n.Z * p.X, a * k);\n            }\n        }\n\n\n        public static IndexedVector3 AabbSupport(ref IndexedVector3 halfExtents,ref IndexedVector3 supportDir)\n        {\n\t        return new IndexedVector3(supportDir.X < 0f ? -halfExtents.X : halfExtents.X,\n              supportDir.Y < 0f ? -halfExtents.Y : halfExtents.Y,\n              supportDir.Z < 0f ? -halfExtents.Z : halfExtents.Z); \n        }\n\n        public static void IntegrateTransform(IndexedMatrix curTrans, IndexedVector3 linvel, IndexedVector3 angvel, float timeStep, out IndexedMatrix predictedTransform)\n        {\n            IntegrateTransform(ref curTrans, ref linvel, ref angvel, timeStep, out predictedTransform);\n        }\n\n\t    public static void IntegrateTransform(ref IndexedMatrix curTrans,ref IndexedVector3 linvel,ref IndexedVector3 angvel,float timeStep,out IndexedMatrix predictedTransform)\n\t    {\n            predictedTransform = IndexedMatrix.CreateTranslation(curTrans._origin + linvel * timeStep);\n    //\t#define QUATERNION_DERIVATIVE\n\t    #if QUATERNION_DERIVATIVE\n            IndexedVector3 pos;\n            Quaternion predictedOrn;\n            IndexedVector3 scale;\n\n            curTrans.Decompose(ref scale, ref predictedOrn, ref pos);\n\n\n\t\t    predictedOrn += (angvel * predictedOrn) * (timeStep * .5f));\n\t\t    predictedOrn.Normalize();\n        #else\n            //Exponential map\n\t\t    //google for \"Practical Parameterization of Rotations Using the Exponential Map\", F. Sebastian Grassia\n\n\t\t    IndexedVector3 axis;\n\t\t    float\tfAngle = angvel.Length(); \n\t\t    //limit the angular motion\n\t\t    if (fAngle*timeStep > ANGULAR_MOTION_THRESHOLD)\n\t\t    {\n\t\t\t    fAngle = ANGULAR_MOTION_THRESHOLD / timeStep;\n\t\t    }\n\n\t\t    if ( fAngle < 0.001f )\n\t\t    {\n\t\t\t    // use Taylor's expansions of sync function\n\t\t\t    axis   = angvel*( 0.5f*timeStep-(timeStep*timeStep*timeStep)*(0.020833333333f)*fAngle*fAngle );\n\t\t    }\n\t\t    else\n\t\t    {\n\t\t\t    // sync(fAngle) = sin(c*fAngle)/t\n\t\t\t    axis   = angvel*( (float)Math.Sin(0.5f*fAngle*timeStep)/fAngle );\n\t\t    }\n\t\t    Quaternion dorn = new Quaternion(axis.X,axis.Y,axis.Z,(float)Math.Cos( fAngle*timeStep*.5f) );\n\n            Quaternion orn0 = curTrans.GetRotation();\n\n\t\t    Quaternion predictedOrn = dorn * orn0;\n\t\t    predictedOrn.Normalize();\n\t    #endif\n\n            IndexedMatrix newMatrix = IndexedMatrix.CreateFromQuaternion(predictedOrn);\n            predictedTransform._basis = newMatrix._basis;\n\t    }\n\n        public static void CalculateVelocityQuaternion(ref IndexedVector3 pos0, ref IndexedVector3 pos1, ref Quaternion orn0, ref Quaternion orn1, float timeStep, out IndexedVector3 linVel, out IndexedVector3 angVel)\n        {\n            linVel = (pos1 - pos0) / timeStep;\n            if (orn0 != orn1)\n            {\n                IndexedVector3 axis;\n                float angle;\n                CalculateDiffAxisAngleQuaternion(ref orn0, ref orn1, out axis, out angle);\n                angVel = axis * (angle / timeStep);\n            }\n            else\n            {\n                angVel = IndexedVector3.Zero;\n            }\n        }\n\n        public static void CalculateDiffAxisAngleQuaternion(ref Quaternion orn0, ref Quaternion orn1a, out IndexedVector3 axis, out float angle)\n        {\n            Quaternion orn1 = MathUtil.QuatFurthest(ref orn0, ref orn1a);\n            Quaternion dorn = orn1 * MathUtil.QuaternionInverse(ref orn0);\n\n            ///floating point inaccuracy can lead to w component > 1..., which breaks \n            dorn.Normalize();\n            angle = MathUtil.QuatAngle(ref dorn);\n            axis = new IndexedVector3(dorn.X, dorn.Y, dorn.Z);\n\n            //check for axis length\n            float len = axis.LengthSquared();\n            if (len < MathUtil.SIMD_EPSILON * MathUtil.SIMD_EPSILON)\n            {\n                axis = new IndexedVector3(1f, 0, 0);\n            }\n            else\n            {\n                axis.Normalize();\n            }\n        }\n\n        public static void CalculateVelocity(ref IndexedMatrix transform0, ref IndexedMatrix transform1, float timeStep, out IndexedVector3 linVel, out IndexedVector3 angVel)\n        {\n            linVel = (transform1._origin - transform0._origin) / timeStep;\n            MathUtil.SanityCheckVector(ref linVel);\n            IndexedVector3 axis;\n            float angle;\n            CalculateDiffAxisAngle(ref transform0, ref transform1, out axis, out angle);\n            angVel = axis * (angle / timeStep);\n            MathUtil.SanityCheckVector(ref angVel);\n        }\n\n        public static void CalculateDiffAxisAngle(ref IndexedMatrix transform0, ref IndexedMatrix transform1, out IndexedVector3 axis, out float angle)\n        {\n            //IndexedMatrix dmat = GetRotateMatrix(ref transform1) * IndexedMatrix.Invert(GetRotateMatrix(ref transform0));\n            IndexedBasisMatrix dmat = transform1._basis * transform0._basis.Inverse();\n            Quaternion dorn = Quaternion.Identity;\n            GetRotation(ref dmat, out dorn);\n\n            ///floating point inaccuracy can lead to w component > 1..., which breaks \n            dorn.Normalize();\n\n            angle = MathUtil.QuatAngle(ref dorn);\n\n            axis = new IndexedVector3(dorn.X, dorn.Y, dorn.Z);\n            //axis[3] = float(0.);\n            //check for axis length\n            float len = axis.LengthSquared();\n            if (len < MathUtil.SIMD_EPSILON * MathUtil.SIMD_EPSILON)\n            {\n                axis = new IndexedVector3(1,0,0);\n            }\n            else\n            {\n                axis.Normalize();\n            }\n        }\n\n\n\n        public static void GetRotation(ref IndexedBasisMatrix a, out Quaternion rot)\n        {\n            rot = a.GetRotation();\n        }\n\n        public static Quaternion GetRotation(ref IndexedBasisMatrix a)\n        {\n            return a.GetRotation();\n        }\n\n        public static float ANGULAR_MOTION_THRESHOLD = .5f * MathUtil.SIMD_HALF_PI;\n\n    }\n\n\n    ///The btConvexSeparatingDistanceUtil can help speed up convex collision detection \n    ///by conservatively updating a cached separating distance/vector instead of re-calculating the closest distance\n    public class ConvexSeparatingDistanceUtil\n    {\n        private Quaternion m_ornA;\n        private Quaternion m_ornB;\n        private IndexedVector3 m_posA;\n        private IndexedVector3 m_posB;\n\n        private IndexedVector3 m_separatingNormal;\n\n        private float m_boundingRadiusA;\n        private float m_boundingRadiusB;\n        private float m_separatingDistance;\n\n        public ConvexSeparatingDistanceUtil(float boundingRadiusA, float boundingRadiusB)\n        {\n            m_boundingRadiusA = boundingRadiusA;\n            m_boundingRadiusB = boundingRadiusB;\n            m_separatingDistance = 0f;\n        }\n\n        public float GetConservativeSeparatingDistance()\n        {\n            return m_separatingDistance;\n        }\n\n        public void UpdateSeparatingDistance(ref IndexedMatrix transA, ref IndexedMatrix transB)\n        {\n            IndexedVector3 toPosA = transA._origin;\n            IndexedVector3 toPosB = transB._origin;\n            Quaternion toOrnA = transA.GetRotation();\n            Quaternion toOrnB = transB.GetRotation();\n\n            if (m_separatingDistance > 0.0f)\n            {\n                IndexedVector3 linVelA;\n                IndexedVector3 angVelA;\n                IndexedVector3 linVelB;\n                IndexedVector3 angVelB;\n\n                TransformUtil.CalculateVelocityQuaternion(ref m_posA, ref toPosA, ref m_ornA, ref toOrnA, 1f, out linVelA, out angVelA);\n                TransformUtil.CalculateVelocityQuaternion(ref m_posB, ref toPosB, ref m_ornB, ref toOrnB, 1f, out linVelB, out angVelB);\n                float maxAngularProjectedVelocity = angVelA.Length() * m_boundingRadiusA + angVelB.Length() * m_boundingRadiusB;\n                IndexedVector3 relLinVel = (linVelB - linVelA);\n                float relLinVelocLength = IndexedVector3.Dot((linVelB - linVelA), m_separatingNormal);\n                if (relLinVelocLength < 0f)\n                {\n                    relLinVelocLength = 0f;\n                }\n\n                float projectedMotion = maxAngularProjectedVelocity + relLinVelocLength;\n                m_separatingDistance -= projectedMotion;\n            }\n\n            m_posA = toPosA;\n            m_posB = toPosB;\n            m_ornA = toOrnA;\n            m_ornB = toOrnB;\n        }\n\n        void InitSeparatingDistance(ref IndexedVector3 separatingVector, float separatingDistance, ref IndexedMatrix transA, ref IndexedMatrix transB)\n\t    {\n\t\t    m_separatingNormal = separatingVector;\n\t\t    m_separatingDistance = separatingDistance;\n    \t\t\n\t\t    IndexedVector3 toPosA = transA._origin;\n\t\t    IndexedVector3 toPosB = transB._origin;\n            Quaternion toOrnA = transA.GetRotation();\n            Quaternion toOrnB = transB.GetRotation();\n\t\t    m_posA = toPosA;\n\t\t    m_posB = toPosB;\n\t\t    m_ornA = toOrnA;\n\t\t    m_ornB = toOrnB;\n\t    }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/GImpact/LinearMath/UShortVector3.cs",
    "content": "﻿/*\n * C# / XNA  port of Bullet (c) 2011 Mark Neale <xexuxjy@hotmail.com>\n *\n * Bullet Continuous Collision Detection and Physics Library\n * Copyright (c) 2003-2008 Erwin Coumans  http://www.bulletphysics.com/\n *\n * This software is provided 'as-is', without any express or implied warranty.\n * In no event will the authors be held liable for any damages arising from\n * the use of this software.\n * \n * Permission is granted to anyone to use this software for any purpose, \n * including commercial applications, and to alter it and redistribute it\n * freely, subject to the following restrictions:\n * \n * 1. The origin of this software must not be misrepresented; you must not\n *    claim that you wrote the original software. If you use this software\n *    in a product, an acknowledgment in the product documentation would be\n *    appreciated but is not required.\n * 2. Altered source versions must be plainly marked as such, and must not be\n *    misrepresented as being the original software.\n * 3. This notice may not be removed or altered from any source distribution.\n */\n\n\nusing System.Diagnostics;\nnamespace BulletXNA.LinearMath\n{\n    public struct UShortVector3\n    {\n        public ushort X;\n        public ushort Y;\n        public ushort Z;\n\n        public void Min(ref UShortVector3 a)\n        {\n            if (X > a.X) X = a.X;\n            if (Y > a.Y) Y = a.Y;\n            if (Z > a.Z) Z = a.Z;\n        }\n\n        public void Max(ref UShortVector3 a)\n        {\n            if (X < a.X) X = a.X;\n            if (Y < a.Y) Y = a.Y;\n            if (Z < a.Z) Z = a.Z;\n        }\n\n        public ushort this[int i]\n        {\n            get\n            {\n                if (i == 0) return X;\n                if (i == 1) return Y;\n                if (i == 2) return Z;\n                Debug.Assert(false);\n                return 0;\n            }\n            set\n            {\n                if (i == 0) { X = value; return; }\n                if (i == 1) { Y = value; return; }\n                if (i == 2) { Z = value; return; }\n                Debug.Assert(false);\n            }\n        }\n\n    }\n\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Generics/MyDynamicObjectsPool.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace MinerWars.CommonLIB.AppCode.Generics\n{\n    /// <summary>\n    /// Dynamic object pool. It's allocate new instance when necessary.\n    /// </summary>\n    /// <typeparam name=\"T\"></typeparam>\n    public class MyDynamicObjectPool<T> where T : class\n    {\n        private Stack<T> m_poolStack;\n\n        public MyDynamicObjectPool(int capacity)\n        {\n            m_poolStack = new Stack<T>(capacity);\n            Preallocate(capacity);\n        }\n\n        private void Preallocate(int count)\n        {\n            for (int i = 0; i < count; i++)\n            {\n                T instance = Activator.CreateInstance<T>();\n                m_poolStack.Push(instance);\n            }\n        }\n\n        public T Allocate()\n        {\n            if (m_poolStack.Count == 0)\n            {\n                Preallocate(1);\n            }\n            T item = m_poolStack.Pop();\n            return item;\n        }\n\n        public void Deallocate(T item)\n        {\n            m_poolStack.Push(item);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Generics/MyObjectsPool.cs",
    "content": "﻿using System.Collections;\nusing System.Collections.Generic;\nusing System.Linq;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils.Utils;\n\n//  Object pool generic class\n//\n//  Use as a container for objects when you can't allocate new objects using new (because of GC). E.g. missiles, bullets, etc.\n//  All methods are O(1), including iterating over list of active objects.\n//  Pool holds only classess (not structs). It can can be extended, maybe.\n//  When you use only objects using this pool, no new objects will be initialized and GC can't happen. This was tested.\n//  Using foreach doesn't create garbage, because enumerator is created only once, not for each 'foreach'.\n//\n//  Usage: initialize with known max capacity. Then when object is needed, allocate it from pool using Allocate().\n//  If object isn't needed anymore (or died), mark it for deallocation using MarkForDeallocate(). This method doesn't\n//  deallocate object immediately, just mark it. Reason is: we often need to deallocate object during while we are\n//  iterating list of active objects.\n//  When you are done, call DeallocateAllMarked(). Again, don't call it during iterating the pool.\n//  Iteration is possible using 'foreach', and iterates only over active objects. It's fast, no enumerator is initialized\n//  for every 'foreach'. Iteration is not over T, but over LinkedListNode<T>\n//\n//  Example:\n//      MyObjectsPool<MyMissile> m_missiles;\n//      foreach (LinkedListNode<MyMissile> item in m_missiles)\n//      {\n//          m_missiles.MarkForDeallocate(item);\n//      }\n//      foreach (LinkedListNode<MyMissile> item in m_missiles)\n//      {\n//          m_missiles.MarkForDeallocate(item);\n//      }\n//      m_missiles.DeallocateAllMarked();\n//      for (int value = 0; value < MyFakes.MAX_MISSILES_COUNT; value++)\n//      {\n//          MyMissile temp = m_missiles.Allocate();\n//      } \n\n  \n\nnamespace MinerWars.CommonLIB.AppCode.Generics\n{\n    public class MyObjectsPoolEnumerator<T> : IEnumerator<LinkedListNode<T>>\n    {\n        LinkedList<T> m_list;\n        LinkedListNode<T> m_current = null;\n        bool m_reset;\n\n        public LinkedListNode<T> Current\n        {\n            get\n            {\n                return m_current;\n            }\n        }\n\n        object IEnumerator.Current\n        {\n            get\n            {\n                return m_current;\n            }\n        }\n\n        public bool MoveNext()\n        {\n            if (m_reset == true)\n            {\n                m_reset = false;\n\n                if (m_list.First == null)\n                {\n                    return false;\n                }\n                else\n                {\n                    m_current = m_list.First;\n                    return true;\n                }\n            }\n            else\n            {\n                if (m_current.Next == null)\n                {\n                    return false;\n                }\n                else\n                {\n                    m_current = m_current.Next;\n                    return true;\n                }\n            }\n        }\n\n        public void Reset()\n        {\n            m_reset = true;\n            m_current = null;\n        }\n\n        public void Dispose()\n        { \n        }\n\n        public MyObjectsPoolEnumerator(LinkedList<T> list)\n        {\n            m_list = list;\n        }\n    }\n    \n    public class MyObjectsPool<T> : IEnumerable<LinkedListNode<T>> where T : class, new()\n    {\n        ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\n        //  Preallocated array from which pool gives objects\n        LinkedListNode<T>[] m_itemsArray;\n\n        //  Linked list containing only active (allocated) items. So it doesn't contain all preallocated items.\n        LinkedList<T> m_activeItems;\n\n        //  References to items not-allocated yet to (they are only preallocated)\n        Stack<LinkedListNode<T>> m_notAllocatedItems;\n        \n        //  References to items to delete\n        Stack<LinkedListNode<T>> m_itemsToDelete;\n\n        //  When we want to find \"linked list node\" by object reference - because maintaining those nodes isn't really funny\n        Dictionary<T, LinkedListNode<T>> m_itemToListNode;\n        \n        //  Count of items allowed to store in this pool.\n        int m_capacity;\n\n        MyObjectsPoolEnumerator<T> m_enumerator;\n\n        ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\n        \n        //  Class doesn't support parameter-less constructor\n        private MyObjectsPool()\n        {\n        }\n\n        public MyObjectsPool(int capacity)\n        {\n            //  Pool should contain at least one preallocated item!\n            MyCommonDebugUtils.AssertRelease(capacity > 0);\n\n            m_capacity = capacity;\n            m_notAllocatedItems = new Stack<LinkedListNode<T>>(m_capacity);\n            m_itemsToDelete = new Stack<LinkedListNode<T>>(m_capacity);\n            m_activeItems = new LinkedList<T>();\n            m_itemToListNode = new Dictionary<T, LinkedListNode<T>>(m_capacity);\n\n            m_enumerator = new MyObjectsPoolEnumerator<T>(m_activeItems);\n\n            //  Preallocate items\n            m_itemsArray = new LinkedListNode<T>[m_capacity];\n            for (int i = 0; i < m_capacity; i++)\n            {\n                m_itemsArray[i] = new LinkedListNode<T>(new T());\n                m_notAllocatedItems.Push(m_itemsArray[i]);\n            }\n        }\n\n        //  Allocates new object in the pool and returns reference to it.\n        //  If pool doesn't have free object (it's full), null is returned. But this shouldn't happen if capacity is chosen carefully.\n        public T Allocate()\n        {\n            return Allocate(false);\n        }\n\n        //  Allocates new object in the pool and returns reference to it.\n        //  If pool doesn't have free object (it's full), null is returned. But this shouldn't happen if capacity is chosen carefully.\n        public T Allocate(bool nullAllowed)\n        {\n            LinkedListNode<T> ret = AllocateEx();\n            System.Diagnostics.Debug.Assert(nullAllowed ? true : ret != null, \"MyObjectsPool is full and cannot allocate any other item!\");\n            if (ret == null)\n            {\n                return null;\n            }\n            else\n            {\n                return ret.Value;\n            }\n        }\n\n        //  Allocates new object in the pool and returns reference to its linked list node.\n        //  If pool doesn't have free object (it's full), null is returned. But this shouldn't happen if capacity is chosen carefully.\n        //  Difference between Allocate() and AllocateEx() is that first returns object and second returns linked list node that contains this object.\n        public LinkedListNode<T> AllocateEx()\n        {\n            if (m_notAllocatedItems.Count <= 0)\n            {\n                return null;\n            }\n\n            //  Get free item from the stack\n            LinkedListNode<T> allocatedItem = m_notAllocatedItems.Pop();\n\n            //  Add it to active items linked list\n            m_activeItems.AddLast(allocatedItem);\n\n            //  When we want to find \"linked list node\" by object reference - because maintaining those nodes isn't really funny\n            m_itemToListNode.Add(allocatedItem.Value, allocatedItem);\n\n            //  Return reference to the caller\n            return allocatedItem;\n        }\n\n        //  Return count of active items in the pool\n        public int GetActiveCount()\n        {\n            return m_activeItems.Count();\n        }\n\n        //  Return max number of items in the pool\n        public int GetCapacity()\n        {\n            return m_capacity;\n        }\n\n        //  Deallocates object imediatelly. This is the version that accepts object, and then it find its node.\n        //  IMPORTANT: Don't call while iterating this object pool!\n        public void Deallocate(T item)\n        {\n            LinkedListNode<T> node;\n            try\n            {\n                node = m_itemToListNode[item];\n            }\n            catch (KeyNotFoundException ex) // This is just for making sure that the game will not crash\n            {\n                MyMwcLog.WriteLine(ex);\n                System.Diagnostics.Debug.Fail(ex.ToString());\n                return;\n            }\n\n            Deallocate(node);\n        }\n\n        //  Deallocates object imediatelly.\n        //  IMPORTANT: Don't call while iterating this object pool!\n        public void Deallocate(LinkedListNode<T> node)\n        {\n            //  Remove item from active items linked list\n            m_activeItems.Remove(node);\n\n            //  When we want to find \"linked list node\" by object reference - because maintaining those nodes isn't really funny\n            m_itemToListNode.Remove(node.Value);\n\n            //  Add item to stack of free items\n            m_notAllocatedItems.Push(node);\n        }\n\n        //  Marks object for deallocation, but doesn't remove it immediately. Call it during iterating the pool.\n        public void MarkForDeallocate(LinkedListNode<T> node)\n        {\n            m_itemsToDelete.Push(node);\n        }\n\n        //  Deallocates objects marked for deallocation. If same object was marked twice or more times for\n        //  deallocation, this method will handle it and deallocate it only once (rest is ignored).\n        //  IMPORTANT: Call only when not iterating the pool!!!\n        public void DeallocateAllMarked()\n        {\n            while (m_itemsToDelete.Count > 0)\n            {\n                LinkedListNode<T> node = m_itemsToDelete.Pop();\n\n                //  If a.List equals null, then object was already deallocated\n                if (node.List != null)\n                {\n                    Deallocate(node);\n                }\n            }\n        }\n        \n        //  Deallocates all objects\n        //  IMPORTANT: Call only when not iterating the pool!!!\n        public void DeallocateAll()\n        {\n            while (m_activeItems.Count > 0)\n            {\n                LinkedListNode<T> node = m_activeItems.First;\n\n                //  If a.List equals null, then object was already deallocated\n                if (node.List != null)\n                {\n                    Deallocate(node);\n                }\n            }\n        }\n\n        public IEnumerator<LinkedListNode<T>> GetEnumerator()\n        {\n            m_enumerator.Reset();\n            return m_enumerator;\n        }\n\n        IEnumerator IEnumerable.GetEnumerator()\n        {\n            m_enumerator.Reset();\n            return m_enumerator;\n        }\n\n        //  Return reference to array of preallocated items. Use it very carefully, as it's revealing private member.\n        //  Use it only if you need to initialize preallocated object (e.g. call Init() on phys-objects)\n        public LinkedListNode<T>[] GetPreallocatedItemsArray()\n        {\n            return m_itemsArray;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Generics/MyObjectsPoolSimple.cs",
    "content": "﻿using MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils.Utils;\n\n//  Object pool generic class - but simple version\n//\n//  Difference to MyObjectsPool is in that this class doesn't allow removing individual objects. Only all objects by calling ClearAllAllocated().\n//  So it can be used for example in draw call where we need to use lot of objects that live only in that draw call and then are cleared.  \n\nnamespace MinerWars.CommonLIB.AppCode.Generics\n{\n    public class MyObjectsPoolSimple<T> where T : class, new()\n    {\n        //  Preallocated array from which pool gives objects\n        T[] m_items;\n\n        int m_nextAllocateIndex;\n\n        \n        //  Class doesn't support parameter-less constructor\n        private MyObjectsPoolSimple() { }\n\n        public MyObjectsPoolSimple(int capacity)\n        {\n            //  Pool should contain at least one preallocated item!\n            MyCommonDebugUtils.AssertRelease(capacity > 0);\n\n            ClearAllAllocated();\n    \n            //  Preallocate items\n            m_items = new T[capacity];\n            for (int i = 0; i < m_items.Length; i++)\n            {\n                m_items[i] = new T();\n            }\n        }\n\n        //  Allocates new object in the pool and returns reference to it.\n        //  If pool doesn't have free object (it's full), null is returned. But this shouldn't happen if capacity is chosen carefully.\n        public T Allocate()\n        {\n            if (m_nextAllocateIndex >= m_items.Length)\n            {\n                return null;\n            }\n\n            T ret = m_items[m_nextAllocateIndex];\n            m_nextAllocateIndex++;\n            return ret;\n        }\n\n        //  Return count of active items in the pool\n        public int GetAllocatedCount()\n        {\n            return m_nextAllocateIndex;\n        }\n\n        //  Return max number of items in the pool\n        public int GetCapacity()\n        {\n            return m_items.Length;\n        }\n\n        //  Clear all objects. It won't really delete them (calling destructor, etc), just mark as deleted, so GetActiveCount() will return zero.\n        public void ClearAllAllocated()\n        {\n            m_nextAllocateIndex = 0;\n        }\n\n        //  Return reference to item from array, but only if object with requested index was allocated through Allocate().\n        //  Use this method to access already allocated objects. It won't allow access indexes that weren't allocated.\n        //  IMPORTANT: Don't iterate over whole array, iterate only to GetActiveCount()\n        public T GetAllocatedItem(int index)\n        {\n            MyCommonDebugUtils.AssertDebug(index < m_nextAllocateIndex);\n            return m_items[index];\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Generics/MyWeightDictionary.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace MinerWars.CommonLIB.AppCode.Generics\n{\n    /// <summary>\n    /// Contains items of any type. Each item has weight (float value).\n    /// Allows to get item based on weight.\n    /// </summary>\n    /// <typeparam name=\"T\">The item type</typeparam>\n    public class MyWeightDictionary<T>\n    {\n        Dictionary<T, float> m_data;\n        float m_sum;\n\n        /// <summary>\n        /// Initializes a new instance of the MyWeightDictionary class.\n        /// </summary>\n        /// <param name=\"data\">Dictionary with items and weights.</param>\n        public MyWeightDictionary(Dictionary<T, float> data)\n        {\n            m_data = data;\n            m_sum = 0;\n            foreach (var e in data)\n            {\n                m_sum += e.Value;\n            }\n        }\n\n        public int Count \n        { \n            get\n            {\n                return m_data.Count;\n            }\n        }\n\n        /// <summary>\n        /// Gets sum of weights.\n        /// </summary>\n        /// <returns>The sum of all weights.</returns>\n        public float GetSum()\n        {\n            return m_sum;\n        }\n\n        /// <summary>\n        /// Gets item based on weight.\n        /// </summary>\n        /// <param name=\"weightNormalized\">Weight, value from 0 to 1.</param>\n        /// <returns>The item.</returns>\n        public T GetItemByWeightNormalized(float weightNormalized)\n        {\n            return GetItemByWeight(weightNormalized * m_sum);\n        }\n\n        /// <summary>\n        /// Gets item based on weight.\n        /// </summary>\n        /// <param name=\"weight\">Weight, value from 0 to sum.</param>\n        /// <returns></returns>\n        public T GetItemByWeight(float weight)\n        {\n            float sum = 0;\n            T last = default(T);\n            foreach (var e in m_data)\n            {\n                last = e.Key;\n                sum += e.Value;\n                if (sum > weight)\n                    return last;\n            }\n            return last;\n        }\n\n        /// <summary>\n        /// Gets random item based on weight.\n        /// </summary>\n        /// <returns>The item.</returns>\n        public T GetRandomItem(Random rnd)\n        {\n            float val = (float)rnd.NextDouble() * m_sum;\n            return GetItemByWeight(val);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Import/MyImporterConstants.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace MinerWars.CommonLIB.AppCode.Import\n{\n    public static class MyImporterConstants\n    {\n        public const string TAG_DEBUG = \"Debug\";\n        public const string TAG_VERTICES = \"Vertices\";\n        public const string TAG_NORMALS = \"Normals\";\n        public const string TAG_INDICES = \"Indices\";\n        public const string TAG_TEXCOORDS0 = \"TexCoords0\";\n        public const string TAG_BINORMALS = \"Binormals\";\n        public const string TAG_TANGENTS = \"Tangents\";\n        public const string TAG_TEXCOORDS1 = \"TexCoords1\";\n        public const string TAG_RESCALE_TO_LENGTH_IN_METERS = \"RescaleToLengthInMeters\";\n        public const string TAG_LENGTH_IN_METERS = \"LengthInMeters\";\n        public const string TAG_CENTERED = \"Centered\";\n        public const string TAG_USE_CHANNEL_TEXTURES = \"UseChannelTextures\";\n        public const string TAG_SPECULAR_SHININESS = \"SpecularShininess\";\n        public const string TAG_SPECULAR_POWER = \"SpecularPower\";\n        public const string TAG_BOUNDING_BOX = \"BoundingBox\";\n        public const string TAG_BOUNDING_SPHERE = \"BoundingSphere\";\n        public const string TAG_RESCALE_FACTOR = \"RescaleFactor\";\n        public const string TAG_SWAP_WINDING_ORDER = \"SwapWindingOrder\";\n        public const string TAG_DUMMIES = \"Dummies\";\n        public const string TAG_MESH_PARTS = \"MeshParts\";\n        public const string TAG_MODEL_BVH = \"ModelBvh\";\n        public const string TAG_MODEL_INFO = \"ModelInfo\";\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Import/MyMaterialDescriptor.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing System.IO;\n\nnamespace MinerWars.CommonLIB.AppCode.Import\n{\n\t/// <summary>\n\t/// material params for export\n\t/// </summary>\n\tpublic class MyMaterialDescriptor\n\t{\n        public string MaterialName { get; private set; }\n\t\tpublic Vector3 m_DiffuseColor = Vector3.One;\n\t\tpublic float m_Glossiness;\n        public Vector3 m_SpecularColor = Vector3.Zero;\n\n\t\tpublic string m_DiffuseTextureName = null;\n\n\t\t/// <summary>\n\t\t/// c-tor\n\t\t/// </summary>\n\t\t/// <param name=\"materialName\"></param>\n\t\tpublic MyMaterialDescriptor(string materialName)\n\t\t{\n\t\t\tMaterialName = materialName;\n\t\t}\n\n\n        /// <summary>\n        /// c-tor\n        /// </summary>\n        /// <param name=\"materialName\"></param>\n        public MyMaterialDescriptor() {;}\n\n\t\t/// <summary>\n\t\t/// Write to binary file\n\t\t/// </summary>\n\t\t/// <param name=\"writer\"></param>\n\t\t/// <returns></returns>\n\t\tpublic bool Write(BinaryWriter writer)\n\t\t{\n\t\t\twriter.Write((MaterialName != null) ? MaterialName : \"\");\n\t\t\twriter.Write((m_DiffuseTextureName != null) ? m_DiffuseTextureName : \"\");\n\n\t\t\twriter.Write(m_Glossiness);\n\t\t\twriter.Write(m_DiffuseColor.X);\n\t\t\twriter.Write(m_DiffuseColor.Y);\n\t\t\twriter.Write(m_DiffuseColor.Z);\n            writer.Write(m_SpecularColor.X);\n            writer.Write(m_SpecularColor.Y);\n            writer.Write(m_SpecularColor.Z);\n\n\t\t\treturn true;\n\t\t}\n\n\t\tpublic bool Read(BinaryReader reader)\n\t\t{\n\t\t\tMaterialName = reader.ReadString();\n\t\t\tif (String.IsNullOrEmpty(MaterialName))\n\t\t\t\tMaterialName = null;\n\t\t\tm_DiffuseTextureName = reader.ReadString();\n\t\t\tif (String.IsNullOrEmpty(m_DiffuseTextureName))\n\t\t\t\tm_DiffuseTextureName = null;\n\n\t\t\tm_Glossiness = reader.ReadSingle();\n\t\t\tm_DiffuseColor.X = reader.ReadSingle();\n\t\t\tm_DiffuseColor.Y = reader.ReadSingle();\n\t\t\tm_DiffuseColor.Z = reader.ReadSingle();\n            m_SpecularColor.X = reader.ReadSingle();\n            m_SpecularColor.Y = reader.ReadSingle();\n            m_SpecularColor.Z = reader.ReadSingle();\n\n\t\t\treturn true;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Import/MyMeshPartSolver.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing MinerWarsMath;\nusing MinerWarsMath.Graphics.PackedVector;\n\nnamespace MinerWars.CommonLIB.AppCode.Import\n{\n    //  IMPORTANT: If you add/delete technique in this enum, don't forget to change code\n    //  in these methods: \n    //      MyModel.CreateVertexBuffer\n    public enum MyMeshDrawTechnique : byte\n    {\n        MESH,                      //  Renders using diffuse, normal map and specular textures\n        VOXELS_DEBRIS,              //  For explosion debris objects, with scaling and texture is calculated by tri-planar mapping (same as with voxel maps)\n        VOXELS_STATIC_ASTEROID,     //  For static asteroids, therefore texture is calculated by tri-planar mapping (same as with voxel maps)\n        VOXEL_MAP,                  //  Destroyable voxel asteroid\n        ALPHA_MASKED,               //  Alpha masked object\n\n        //Leave decal type last because it is alpha blended, meshes are sorted by this enum\n        DECAL,                      //  Alpha blended object, it has alpha in diffuse.a texture channel and emissivity in normal.a texture channel\n        HOLO,                       //  Advanced type of blended object, it has some special features decal doesnt have (cull none, no physics, sorting..)\n    }\n\n    public static class PositionPacker\n    {\n        static public HalfVector4 PackPosition(ref Vector3 position)\n        {\n            float max_value = System.Math.Max(System.Math.Abs(position.X), System.Math.Abs(position.Y));\n            max_value = System.Math.Max(max_value, System.Math.Abs(position.Z));\n            float multiplier = System.Math.Min((float)System.Math.Floor(max_value), 2048.0f);\n            float invMultiplier = 0;\n            if (multiplier > 0)\n                invMultiplier = 1.0f / multiplier;\n            else\n                multiplier = invMultiplier = 1.0f;\n\n            return new HalfVector4(invMultiplier * position.X, invMultiplier * position.Y, invMultiplier * position.Z, multiplier);\n        }\n\n        static public Vector3 UnpackPosition(ref HalfVector4 position)\n        {\n            Vector4 unpacked = position.ToVector4();\n            return unpacked.W * new Vector3(unpacked.X, unpacked.Y, unpacked.Z);\n        }\n    }\n\n\n    public class MyModelDummy\n    {\n        public Dictionary<string,object> CustomData;\n        public Matrix Matrix;\n    }\n\n    public class MyModelInfo\n    {\n        public int TrianglesCount;\n        public int VerticesCount;\n        public Vector3 BoundingBoxSize;\n\n        public MyModelInfo(int triCnt, int VertCnt, Vector3 BBsize)\n        {\n            this.TrianglesCount = triCnt;\n            this.VerticesCount = VertCnt;\n            this.BoundingBoxSize = BBsize;\n        }\n    }\n\n    public class MyMeshPartInfo\n    {\n        public int m_MaterialHash;\n\t\tpublic MyMaterialDescriptor m_MaterialDesc = null;\n        public List<int> m_Indicies = new List<int>();\n        public MyMeshDrawTechnique m_MeshRenderTechnique = MyMeshDrawTechnique.MESH;\n\n        public static bool IsPhysical(MyMeshDrawTechnique technique)\n        {\n            //return true;\n            return technique != MyMeshDrawTechnique.HOLO && technique != MyMeshDrawTechnique.DECAL && technique != MyMeshDrawTechnique.ALPHA_MASKED;\n        }\n\n        public bool Export(BinaryWriter writer)\n        {\n            writer.Write(m_MaterialHash);\n\t\t\twriter.Write((int)m_MeshRenderTechnique);\n            writer.Write(m_Indicies.Count);\n            foreach (int indice in m_Indicies)\n                writer.Write(indice);\n\n            bool bRes = true;\n            if (m_MaterialDesc != null)\n            {\n                writer.Write(true);\n                bRes = m_MaterialDesc.Write(writer);\n            }\n            else\n            {\n                writer.Write(false);\n            }\n\t\t\t\n\t\t\treturn bRes;\n        }\n\n        public bool Import(BinaryReader reader)\n        {\n            m_MaterialHash = reader.ReadInt32();\n            m_MeshRenderTechnique = (MyMeshDrawTechnique)reader.ReadInt32();\n            int nCount = reader.ReadInt32();\n            for (int i = 0; i < nCount; ++i)\n            {\n                m_Indicies.Add(reader.ReadInt32());\n            }\n\n            bool bMatDesc = reader.ReadBoolean();\n            bool bRes = true;\n            if (bMatDesc)\n            {\n                m_MaterialDesc = new MyMaterialDescriptor();\n                bRes = m_MaterialDesc.Read(reader);\n            }\n            else\n            {\n                m_MaterialDesc = null;\n            }\n            \n            return bRes;\n        }\n    }\n\n    public class MyMeshPartSolver\n    {\n        const string C_TEXTURE_IDENTIFICATOR_STR = \"Texture\";\n        static int C_TEXTURE_IDENTIFICATOR = C_TEXTURE_IDENTIFICATOR_STR.GetHashCode();\n        static string C_DECAL_PREFIX = \"decal_\";\n        static string C_HOLO_PREFIX = \"holo_\";\n        static string C_MASK_PREFIX = \"mask_\";\n\n        private Dictionary<int, MyMeshPartInfo> m_PartContainer = new Dictionary<int, MyMeshPartInfo>();    //hash of relativeFile\n        public Dictionary<int, MyMeshPartInfo> GetMeshPartContainer() { return m_PartContainer; }\n\n        //  IMPORTANT: If you change these constants, don't forget to change them also in MyMwcMathConstants\n        const float EPSILON = 0.00001f;\n        const float EPSILON_SQUARED = EPSILON * EPSILON;\n                      /*\n        public void SetMaterial(MaterialContent material)\n        {\n            if (material.Textures.Count == 0)\n                return;\n\n            int matHash = material.Name.GetHashCode();\n            if (!m_PartContainer.ContainsKey(matHash))\n                return;\n\n            MyMeshPartInfo mpInfo = m_PartContainer[matHash];\n\n            ExternalReference<TextureContent> tex;\n            if (material.Textures.TryGetValue(\"Texture\", out tex) == false) throw new Exception(\"Material doesn't have 'Texture' property specified. Please fix the FBX file. Stack trace: \" + Environment.StackTrace);\n\n\t\t\tMyMaterialDescriptor matDesc = new MyMaterialDescriptor(material.Name);\n\t\t\tmatDesc.m_DiffuseTextureName = tex.Filename;\n\n\t\t\tobject specColor = material.OpaqueData.GetValue(\"SpecularColor\", Vector3.Zero);\n            if (specColor != null && specColor is Vector3)\n\t\t\t{\n                matDesc.m_SpecularColor = ((Vector3)(specColor));\n\t\t\t}\n\n            object glossiness = material.OpaqueData.GetValue(\"SpecularPower\", 0f);\n            if (glossiness != null && glossiness is float)\n            {\n                matDesc.m_Glossiness = (float)glossiness;\n            }\n\t\t\n            object diffuseColor = material.OpaqueData.GetValue(\"DiffuseColor\", Vector3.One);\n            if (diffuseColor != null && diffuseColor is Vector3)\n            {\n                //Disabled because there is a lot of garbage in diffuse color in exported objects\n                //and it is not used at all however\n                //matDesc.m_DiffuseColor = (Vector3)diffuseColor;\n                matDesc.m_DiffuseColor = Vector3.One;\n            }\n\n\t\t\tmpInfo.m_MaterialDesc = matDesc;\n        }\n\n        public void GenerateSpecialRenderTechnique()\n        {\n            foreach (KeyValuePair<int, MyMeshPartInfo> pair in m_PartContainer)\n            {\n\t\t\t\tMyMaterialDescriptor matDesc = pair.Value.m_MaterialDesc;\n\t\t\t\tif (matDesc == null)\n\t\t\t\t\tcontinue;\n\n\t\t\t\tstring fileName = Path.GetFileNameWithoutExtension(matDesc.m_DiffuseTextureName);\n                if (fileName == null)\n                    continue;\n\n                fileName = fileName.ToLower();\n\n                if ((fileName.Length < C_DECAL_PREFIX.Length) || (fileName.Length < C_MASK_PREFIX.Length))\n                    continue;\n\n                if (fileName.Contains(C_DECAL_PREFIX))\n                {\n                    pair.Value.m_MeshRenderTechnique = MyMeshDrawTechnique.DECAL;\n                    continue;\n                }\n\n                if (fileName.Contains(C_HOLO_PREFIX))\n                {\n                    pair.Value.m_MeshRenderTechnique = MyMeshDrawTechnique.HOLO;\n                    continue;\n                }\n\n                if (fileName.Contains(C_MASK_PREFIX))\n                {\n                    pair.Value.m_MeshRenderTechnique = MyMeshDrawTechnique.ALPHA_MASKED;\n                    continue;\n                }\n            }\n        }\n\n        public void SetIndicies(NodeContent contentNode, ContentProcessorContext context, int matHash, int verticiesOffset, IndexCollection indicies, List<Vector3> vertices)\n        {\n            MyMeshPartInfo mpInfo;\n\n            if (m_PartContainer.TryGetValue(matHash, out mpInfo) == false)\n            {\n                mpInfo = new MyMeshPartInfo();\n                mpInfo.m_MaterialHash = matHash;\n                m_PartContainer.Add(matHash, mpInfo);\n            }\n\n            int numberOfWrongTriangles = 0;\n            for (int i = 0; i < indicies.Count; i += 3)\n            {\n                int index0 = indicies[i + 0] + verticiesOffset;\n                int index1 = indicies[i + 1] + verticiesOffset;\n                int index2 = indicies[i + 2] + verticiesOffset;\n\n                Vector3 vertex0 = vertices[index0];\n                Vector3 vertex1 = vertices[index1];\n                Vector3 vertex2 = vertices[index2];\n\n                HalfVector4 packedVertex0 = PositionPacker.PackPosition(ref vertex0);\n                HalfVector4 packedVertex1 = PositionPacker.PackPosition(ref vertex1);\n                HalfVector4 packedVertex2 = PositionPacker.PackPosition(ref vertex2);\n\n                Vector3 unpackedVertex0 = PositionPacker.UnpackPosition(ref packedVertex0);\n                Vector3 unpackedVertex1 = PositionPacker.UnpackPosition(ref packedVertex1);\n                Vector3 unpackedVertex2 = PositionPacker.UnpackPosition(ref packedVertex2);\n\n                if (IsWrongTriangle(unpackedVertex0, unpackedVertex1, unpackedVertex2) == true)\n                {\n                    numberOfWrongTriangles++;\n                }\n                else\n                {\n                    mpInfo.m_Indicies.Add(index0);\n                    mpInfo.m_Indicies.Add(index1);\n                    mpInfo.m_Indicies.Add(index2);\n                }\n            }\n\n            if (numberOfWrongTriangles > 0)\n            {\n                context.Logger.LogWarning(\"\", contentNode.Identity, \"WARNING! Mesh has \" + numberOfWrongTriangles + \" wrong triangles. They are going to be ignored, but artist should fix it!\");\n            }\n        }\n               */\n        public void Clear()\n        {\n            m_PartContainer.Clear();\n        }\n\n        //  We want to skip all wrong triangles, those that have two vertex at almost the same location, etc.\n        //  We do it simply, by calculating triangle normal and then checking if this normal has length large enough\n        bool IsWrongTriangle(Vector3 vertex0, Vector3 vertex1, Vector3 vertex2)\n        {\n            //  Distance between two vertexes is the fastest test\n            Vector3 triangleEdgeVector1 = vertex2 - vertex0;\n            if (triangleEdgeVector1.LengthSquared() <= EPSILON_SQUARED) return true;\n\n            //  Distance between two vertexes is the fastest test\n            Vector3 triangleEdgeVector2 = vertex1 - vertex0;\n            if (triangleEdgeVector2.LengthSquared() <= EPSILON_SQUARED) return true;\n\n            //  Distance between two vertexes is the fastest test\n            Vector3 triangleEdgeVector3 = vertex1 - vertex2;\n            if (triangleEdgeVector3.LengthSquared() <= EPSILON_SQUARED) return true;\n\n            //  But we also need to do a cross product, because distance tests are not sufficient in case when all vertexes lie on a line\n            Vector3 norm;\n            Vector3.Cross(ref triangleEdgeVector1, ref triangleEdgeVector2, out norm);\n            if (norm.Length() < EPSILON) return true;\n\n            return false;\n        }\n    }\n}"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Import/MyModelExporter.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWarsMath.Graphics.PackedVector;\nusing System.IO;\nusing BulletXNA.BulletCollision;\nusing MinerWars;\n\nnamespace MinerWars.CommonLIB.AppCode.Import\n{\n    public class MyModelExporter\n    {\n        private BinaryWriter m_writer = null;\n\n        private Dictionary<string, object> m_retTagData = new Dictionary<string, object>();\n\n        /// <summary>\n        /// c-tor\n        /// </summary>\n        /// <param name=\"filePath\"></param>\n        public MyModelExporter(string filePath)\n        {\n            FileStream fileStream = new FileStream(filePath, FileMode.Create);\n            m_writer = new BinaryWriter(fileStream);\n        }\n\n\n        /// <summary>\n        /// c-tor\n        /// </summary>\n        /// <param name=\"filePath\"></param>\n        public MyModelExporter()\n        {\n        }\n\n        /// <summary>\n        /// Close\n        /// </summary>\n        public void Close()\n        {\n            if (m_writer != null)\n                m_writer.Close();\n        }\n\n\n        /// <summary>\n        /// WriteTag\n        /// </summary>\n        /// <param name=\"tagName\"></param>\n        private void WriteTag(string tagName)\n        {\n            m_writer.Write(tagName);\n        }\n\n        /// <summary>\n        /// WriteVector3\n        /// </summary>\n        /// <param name=\"vct\"></param>\n        private void WriteVector3(ref Vector3 vct)\n        {\n            m_writer.Write(vct.X);\n            m_writer.Write(vct.Y);\n            m_writer.Write(vct.Z);\n        }\n\n\n        /// <summary>\n        /// WriteVector2\n        /// </summary>\n        /// <param name=\"vct\"></param>\n        private void WriteVector2(ref Vector2 vct)\n        {\n            m_writer.Write(vct.X);\n            m_writer.Write(vct.Y);\n        }\n\n\n        /// <summary>\n        /// WriteMatrix\n        /// </summary>\n        /// <param name=\"matrix\"></param>\n        private void WriteMatrix(ref Matrix matrix)\n        {\n            m_writer.Write(matrix.M11);\n            m_writer.Write(matrix.M12);\n            m_writer.Write(matrix.M13);\n            m_writer.Write(matrix.M14);\n\n            m_writer.Write(matrix.M21);\n            m_writer.Write(matrix.M22);\n            m_writer.Write(matrix.M23);\n            m_writer.Write(matrix.M24);\n\n            m_writer.Write(matrix.M31);\n            m_writer.Write(matrix.M32);\n            m_writer.Write(matrix.M33);\n            m_writer.Write(matrix.M34);\n\n            m_writer.Write(matrix.M41);\n            m_writer.Write(matrix.M42);\n            m_writer.Write(matrix.M43);\n            m_writer.Write(matrix.M44);\n        }\n\n        /// <summary>\n        /// Write HalfVector4\n        /// </summary>\n        private void WriteHalfVector4(ref HalfVector4 val)\n        {\n            m_writer.Write(val.PackedValue);\n        }\n\n        /// <summary>\n        /// Write HalfVector2\n        /// </summary>\n        private void WriteHalfVector2(ref HalfVector2 val)\n        {\n            m_writer.Write(val.PackedValue);\n        }\n\n        /// <summary>\n        /// Write Byte4\n        /// </summary>\n        private void WriteByte4(ref Byte4 val)\n        {\n            m_writer.Write(val.PackedValue);\n        }\n\n        public bool ExportDataPackedAsHV4(string tagName, Vector3[] vctArr)\n        {\n            WriteTag(tagName);\n\n            if (vctArr == null)\n            {\n                m_writer.Write(0);\n                return true;\n            }\n\n            m_writer.Write(vctArr.Length);\n            foreach (Vector3 vctVal in vctArr)\n            {\n                Vector3 v = vctVal;\n                HalfVector4 vct = VF_Packer.PackPosition(ref v);\n                WriteHalfVector4(ref vct);\n            }\n\n            return true;\n        }\n\n        public bool ExportDataPackedAsB4(string tagName, Vector3[] vctArr)\n        {\n            WriteTag(tagName);\n\n            if (vctArr == null)\n            {\n                m_writer.Write(0);\n                return true;\n            }\n\n            m_writer.Write(vctArr.Length);\n            foreach (Vector3 vctVal in vctArr)\n            {\n                Vector3 v = vctVal;\n                Byte4 vct = new Byte4();\n                vct.PackedValue = VF_Packer.PackNormal(ref v);\n                WriteByte4(ref vct);\n            }\n\n            return true;\n        }\n\n        public bool ExportDataPackedAsHV2(string tagName, Vector2[] vctArr)\n        {\n            WriteTag(tagName);\n\n            if (vctArr == null)\n            {\n                m_writer.Write(0);\n                return true;\n            }\n\n            m_writer.Write(vctArr.Length);\n            foreach (Vector2 vctVal in vctArr)\n            {\n                HalfVector2 vct = new HalfVector2(vctVal);\n                WriteHalfVector2(ref vct);\n            }\n\n            return true;\n        }\n\n\n        /// <summary>\n        /// ExportData\n        /// </summary>\n        /// <param name=\"tagName\"></param>\n        /// <param name=\"vctArray\"></param>\n        /// <returns></returns>\n        public bool ExportData(string tagName, Vector3[] vctArr)\n        {\n            if (vctArr == null)\n                return true;\n\n            WriteTag(tagName);\n            m_writer.Write(vctArr.Length);\n            foreach (Vector3 vctVal in vctArr)\n            {\n                Vector3 vct = vctVal;\n                WriteVector3(ref vct);\n            }\n\n            return true;\n        }\n\n\n        /// <summary>\n        /// ExportData\n        /// </summary>\n        /// <param name=\"tagName\"></param>\n        /// <param name=\"vctArray\"></param>\n        /// <returns></returns>\n        public bool ExportData(string tagName, Matrix[] matArr)\n        {\n            if (matArr == null)\n                return true;\n\n            WriteTag(tagName);\n            m_writer.Write(matArr.Length);\n            foreach (Matrix matVal in matArr)\n            {\n                Matrix mat = matVal;\n                WriteMatrix(ref mat);\n            }\n\n            return true;\n        }\n\n\n        /// <summary>\n        /// ExportData\n        /// </summary>\n        /// <param name=\"tagName\"></param>\n        /// <param name=\"vctArray\"></param>\n        /// <returns></returns>\n        public bool ExportData(string tagName, Vector2[] vctArr)\n        {\n            WriteTag(tagName);\n\n            if (vctArr == null)\n            {\n                m_writer.Write(0);\n                return true;\n            }\n\n            m_writer.Write(vctArr.Length);\n            foreach (Vector2 vctVal in vctArr)\n            {\n                Vector2 vct = vctVal;\n                WriteVector2(ref vct);\n            }\n\n            return true;\n        }\n\n\n        /// <summary>\n        /// ExportData\n        /// </summary>\n        /// <param name=\"tagName\"></param>\n        /// <param name=\"strArr\"></param>\n        /// <returns></returns>\n        public bool ExportData(string tagName, string[] strArr)\n        {\n            WriteTag(tagName);\n\n            if (strArr == null)\n            {\n                m_writer.Write(0);\n                return true;\n            }\n\n            m_writer.Write(strArr.Length);\n            foreach (string sVal in strArr)\n                m_writer.Write(sVal);\n\n            return true;\n        }\n\n\n        /// <summary>\n        /// ExportData\n        /// </summary>\n        /// <param name=\"tagName\"></param>\n        /// <param name=\"strArr\"></param>\n        /// <returns></returns>\n        public bool ExportData(string tagName, int[] intArr)\n        {\n            WriteTag(tagName);\n\n            if (intArr == null)\n            {\n                m_writer.Write(0);\n                return true;\n            }\n\n            m_writer.Write(intArr.Length);\n            foreach(int iVal in intArr)\n                m_writer.Write(iVal);\n\n            return true;\n        }\n\n\n        public bool ExportData(string tagName, byte[] byteArray)\n        {\n            WriteTag(tagName);\n\n            if (byteArray == null)\n            {\n                m_writer.Write(0);\n                return true;\n            }\n\n            m_writer.Write(byteArray.Length);\n            m_writer.Write(byteArray);\n            return true;\n        }\n\n        public bool ExportData(string tagName, MyModelInfo modelInfo)\n        {\n            WriteTag(tagName);\n\n            m_writer.Write(modelInfo.TrianglesCount);\n            m_writer.Write(modelInfo.VerticesCount);\n            WriteVector3(ref modelInfo.BoundingBoxSize);\n            return true;\n        }\n\n\n        /// <summary>\n        /// ExportData\n        /// </summary>\n        /// <param name=\"tagName\"></param>\n        /// <param name=\"strArr\"></param>\n        /// <returns></returns>\n        public bool ExportData(string tagName, ref BoundingBox boundingBox)\n        {\n            WriteTag(tagName);\n            WriteVector3(ref boundingBox.Min);\n            WriteVector3(ref boundingBox.Max);\n            return true;\n        }\n\n\n        /// <summary>\n        /// ExportData\n        /// </summary>\n        /// <param name=\"tagName\"></param>\n        /// <param name=\"strArr\"></param>\n        /// <returns></returns>\n        public bool ExportData(string tagName, ref BoundingSphere boundingSphere)\n        {\n            WriteTag(tagName);\n            WriteVector3(ref boundingSphere.Center);\n            m_writer.Write(boundingSphere.Radius);\n            return true;\n        }\n\n\n        /// <summary>\n        /// ExportData\n        /// </summary>\n        /// <param name=\"tagName\"></param>\n        /// <param name=\"dict\"></param>\n        /// <returns></returns>\n        public bool ExportData(string tagName, Dictionary<string, Matrix> dict)\n        {\n            WriteTag(tagName);\n            m_writer.Write(dict.Count);\n            foreach (KeyValuePair<string, Matrix> pair in dict)\n            {\n                m_writer.Write(pair.Key);\n                Matrix mat = pair.Value;\n                WriteMatrix(ref mat);\n            }\n            return true;\n        }\n\n\n        /// <summary>\n        /// ExportData\n        /// </summary>\n        /// <param name=\"tagName\"></param>\n        /// <param name=\"dict\"></param>\n        /// <returns></returns>\n        public bool ExportData(string tagName, Dictionary<int, MyMeshPartInfo> dict)\n        {\n            WriteTag(tagName);\n            m_writer.Write(dict.Count);\n            foreach (KeyValuePair<int, MyMeshPartInfo> pair in dict)\n            {\n                MyMeshPartInfo meshInfo = pair.Value;\n                meshInfo.Export(m_writer);\n            }\n\n\n            return true;\n        }\n\n        /// <summary>\n        /// ExportData\n        /// </summary>\n        /// <param name=\"tagName\"></param>\n        /// <param name=\"dict\"></param>\n        /// <returns></returns>\n        public bool ExportData(string tagName, Dictionary<string, MyModelDummy> dict)\n        {\n            WriteTag(tagName);\n            m_writer.Write(dict.Count);\n            foreach (KeyValuePair<string, MyModelDummy> pair in dict)\n            {\n                m_writer.Write(pair.Key);\n                Matrix mat = pair.Value.Matrix;\n                WriteMatrix(ref mat);\n\n                m_writer.Write(pair.Value.CustomData.Count);\n                foreach (KeyValuePair<string, object> customDataPair in pair.Value.CustomData)\n                {\n                    m_writer.Write(customDataPair.Key);\n                    m_writer.Write(customDataPair.Value.ToString());\n                }\n            }\n            return true;\n        }\n\n\n        /// <summary>\n        /// ExportFloat\n        /// </summary>\n        /// <param name=\"tagName\"></param>\n        /// <param name=\"value\"></param>\n        /// <returns></returns>\n        public bool ExportFloat(string tagName, float value)\n        {\n            WriteTag(tagName);\n            m_writer.Write(value);\n            return true;\n        }\n\n\n        /// <summary>\n        /// ExportFloat\n        /// </summary>\n        /// <param name=\"tagName\"></param>\n        /// <param name=\"value\"></param>\n        /// <returns></returns>\n        public bool ExportBool(string tagName, bool value)\n        {\n            WriteTag(tagName);\n            m_writer.Write(value);\n            return true;\n        }\n\n        /// <summary>\n        /// Read HalfVector4\n        /// </summary>\n        HalfVector4 ReadHalfVector4(BinaryReader reader)\n        {\n            HalfVector4 vct = new HalfVector4();\n            vct.PackedValue = reader.ReadUInt64();\n            return vct;\n        }\n\n        /// <summary>\n        /// Read HalfVector2\n        /// </summary>\n        HalfVector2 ReadHalfVector2(BinaryReader reader)\n        {\n            HalfVector2 vct = new HalfVector2();\n            vct.PackedValue = reader.ReadUInt32();\n            return vct;\n        }\n\n        /// <summary>\n        /// Read Byte4\n        /// </summary>\n        Byte4 ReadByte4(BinaryReader reader)\n        {\n            Byte4 vct = new Byte4();\n            vct.PackedValue = reader.ReadUInt32();\n            return vct;\n        }\n\n        /// <summary>\n        /// ImportVector3\n        /// </summary>\n        /// <param name=\"reader\"></param>\n        /// <returns></returns>\n        Vector3 ImportVector3(BinaryReader reader)\n        {\n            Vector3 vct;\n            vct.X = reader.ReadSingle();\n            vct.Y = reader.ReadSingle();\n            vct.Z = reader.ReadSingle();\n            return vct;\n        }\n\n\n        /// <summary>\n        /// ImportVector2\n        /// </summary>\n        /// <param name=\"reader\"></param>\n        /// <returns></returns>\n        Vector2 ImportVector2(BinaryReader reader)\n        {\n            Vector2 vct;\n            vct.X = reader.ReadSingle();\n            vct.Y = reader.ReadSingle();\n            return vct;\n        }\n\n        /// <summary>\n        /// Read array of HalfVector4\n        /// </summary>\n        private HalfVector4[] ReadArrayOfHalfVector4(BinaryReader reader)\n        {\n            int nCount = reader.ReadInt32();\n            HalfVector4[] vctArr = new HalfVector4[nCount];\n            for (int i = 0; i < nCount; ++i)\n            {\n                vctArr[i] = this.ReadHalfVector4(reader);\n            }\n\n            return vctArr;\n        }\n\n        /// <summary>\n        /// Read array of Byte4\n        /// </summary>\n        private Byte4[] ReadArrayOfByte4(BinaryReader reader)\n        {\n            int nCount = reader.ReadInt32();\n            Byte4[] vctArr = new Byte4[nCount];\n            for (int i = 0; i < nCount; ++i)\n            {\n                vctArr[i] = this.ReadByte4(reader);\n            }\n\n            return vctArr;\n        }\n\n        /// <summary>\n        /// Read array of HalfVector2\n        /// </summary>\n        private HalfVector2[] ReadArrayOfHalfVector2(BinaryReader reader)\n        {\n            int nCount = reader.ReadInt32();\n            HalfVector2[] vctArr = new HalfVector2[nCount];\n            for (int i = 0; i < nCount; ++i)\n            {\n                vctArr[i] = this.ReadHalfVector2(reader);\n            }\n\n            return vctArr;\n        }\n\n\n\n        /// <summary>\n        /// ReadArrayOfVector3\n        /// </summary>\n        /// <param name=\"br\"></param>\n        /// <returns></returns>\n        private Vector3[] ReadArrayOfVector3(BinaryReader reader)\n        {\n            int nCount = reader.ReadInt32();\n            Vector3[] vctArr = new Vector3[nCount];\n            for (int i = 0; i < nCount; ++i)\n            {\n                vctArr[i] = this.ImportVector3(reader);\n            }\n\n            return vctArr;\n        }\n\n\n        /// <summary>\n        /// ReadArrayOfVector2\n        /// </summary>\n        /// <param name=\"br\"></param>\n        /// <returns></returns>\n        private Vector2[] ReadArrayOfVector2(BinaryReader reader)\n        {\n            int nCount = reader.ReadInt32();\n            Vector2[] vctArr = new Vector2[nCount];\n            for (int i = 0; i < nCount; ++i)\n            {\n                vctArr[i] = this.ImportVector2(reader);\n            }\n\n            return vctArr;\n        }\n\n        /// <summary>\n        /// ReadArrayOfString\n        /// </summary>\n        /// <param name=\"reader\"></param>\n        /// <returns></returns>\n        private string[] ReadArrayOfString(BinaryReader reader)\n        {\n            int nCount = reader.ReadInt32();\n            string[] strArr = new string[nCount];\n            for (int i = 0; i < nCount; ++i)\n            {\n                strArr[i] = reader.ReadString();\n            }\n\n            return strArr;\n        }\n\n\n        /// <summary>\n        /// ReadBoundingBox\n        /// </summary>\n        /// <param name=\"reader\"></param>\n        /// <returns></returns>\n        private BoundingBox ReadBoundingBox(BinaryReader reader)\n        {\n            BoundingBox bbox;\n            bbox.Min = this.ImportVector3(reader);\n            bbox.Max = this.ImportVector3(reader);\n            return bbox;\n\n        }\n\n\n        /// <summary>\n        /// ReadBoundingSphere\n        /// </summary>\n        /// <param name=\"reader\"></param>\n        /// <returns></returns>\n        private BoundingSphere ReadBoundingSphere(BinaryReader reader)\n        {\n            BoundingSphere bsphere;\n            bsphere.Center = this.ImportVector3(reader);\n            bsphere.Radius = reader.ReadSingle();\n            return bsphere;\n        }\n\n\n        /// <summary>\n        /// ReadMatrix\n        /// </summary>\n        /// <param name=\"reader\"></param>\n        /// <returns></returns>\n        private Matrix ReadMatrix(BinaryReader reader)\n        {\n            Matrix mat;\n            mat.M11 = reader.ReadSingle();\n            mat.M12 = reader.ReadSingle();\n            mat.M13 = reader.ReadSingle();\n            mat.M14 = reader.ReadSingle();\n\n            mat.M21 = reader.ReadSingle();\n            mat.M22 = reader.ReadSingle();\n            mat.M23 = reader.ReadSingle();\n            mat.M24 = reader.ReadSingle();\n\n            mat.M31 = reader.ReadSingle();\n            mat.M32 = reader.ReadSingle();\n            mat.M33 = reader.ReadSingle();\n            mat.M34 = reader.ReadSingle();\n\n            mat.M41 = reader.ReadSingle();\n            mat.M42 = reader.ReadSingle();\n            mat.M43 = reader.ReadSingle();\n            mat.M44 = reader.ReadSingle();\n\n            return mat;\n        }\n\n\n        /// <summary>\n        /// ReadMeshParts\n        /// </summary>\n        /// <param name=\"reader\"></param>\n        /// <returns></returns>\n        private List<MyMeshPartInfo> ReadMeshParts(BinaryReader reader)\n        {\n            List<MyMeshPartInfo> list = new List<MyMeshPartInfo>();\n            int nCount = reader.ReadInt32();\n            for (int i = 0; i < nCount; ++i)\n            {\n                MyMeshPartInfo meshPart = new MyMeshPartInfo();\n                meshPart.Import(reader);\n                list.Add(meshPart);\n            }\n\n            return list;\n        }\n\n\n        /// <summary>\n        /// ReadDummies\n        /// </summary>\n        /// <param name=\"reader\"></param>\n        /// <returns></returns>\n        private Dictionary<string, MyModelDummy> ReadDummies(BinaryReader reader)\n        {\n            Dictionary<string, MyModelDummy> dummies = new Dictionary<string, MyModelDummy>();\n\n            int nCount = reader.ReadInt32();\n            for (int i = 0; i < nCount; ++i)\n            {\n                string str = reader.ReadString();\n                Matrix mat = this.ReadMatrix(reader);\n\n                MyModelDummy dummy = new MyModelDummy();\n                dummy.Matrix = mat;\n                dummy.CustomData = new Dictionary<string, object>();\n\n                int customDataCount = reader.ReadInt32();\n                for (int j = 0; j < customDataCount; ++j)\n                {\n                    string name = reader.ReadString();\n                    string value = reader.ReadString();\n                    dummy.CustomData.Add(name, value);\n                }\n\n                dummies.Add(str, dummy);\n            }\n\n            return dummies;\n        }\n\n\n        /// <summary>\n        /// ReadArrayOfInt\n        /// </summary>\n        /// <param name=\"reader\"></param>\n        /// <returns></returns>\n        private int[] ReadArrayOfInt(BinaryReader reader)\n        {\n            int nCount = reader.ReadInt32();\n            int[] intArr = new int[nCount];\n            for (int i = 0; i < nCount; ++i)\n            {\n                intArr[i] = reader.ReadInt32();\n            }\n\n            return intArr;\n        }\n\n\n        private byte[] ReadArrayOfBytes(BinaryReader reader)\n        {\n            int nCount = reader.ReadInt32();\n            byte[] data = reader.ReadBytes(nCount);\n            return data;\n        }\n\n\n        /// <summary>\n        /// ImportData\n        /// </summary>\n        /// <param name=\"assetFileName\"></param>\n        /// <returns></returns>\n        public void ImportData(string assetFileName)\n        {\n            m_retTagData.Clear();\n\n            using (FileStream fs = new FileStream(assetFileName, FileMode.Open, FileAccess.Read))\n            {\n                using (BinaryReader reader = new BinaryReader(fs))\n                {\n                    LoadTagData(reader);\n                }\n            }\n        }\n\n        /// <summary>\n        /// ImportCustomData\n        /// </summary>\n        /// <param name=\"assetFileName\"></param>\n        /// <returns></returns>\n        public void ImportCustomData(string assetFileName, SortedSet<string> tags)\n        {\n            using (FileStream fs = new FileStream(assetFileName, FileMode.Open, FileAccess.Read))\n            {\n                using (BinaryReader reader = new BinaryReader(fs))\n                {\n                    LoadCustomTagData(reader, tags);\n                }\n            }\n        }\n\n        /// <summary>\n        /// LoadTagData\n        /// </summary>\n        /// <returns></returns>\n        private bool LoadTagData(BinaryReader reader)\n        {\n            //m_retTagData\n            string tagName;\n            tagName = reader.ReadString();\n            string[] strArr = ReadArrayOfString(reader);\n            m_retTagData.Add(tagName, strArr);\n\n            //@ TAG_DUMMIES\n            tagName = reader.ReadString();\n            Dictionary<string, MyModelDummy> dummies = this.ReadDummies(reader);\n            m_retTagData.Add(tagName, dummies);\n\n            //@ verticies\n            tagName = reader.ReadString();\n#if !PACKED_VERTEX_FORMAT\n            Vector3[] VctArr = ReadArrayOfVector3(reader);\n#else\n            HalfVector4[] VctArr = ReadArrayOfHalfVector4(reader);\n#endif\n            m_retTagData.Add(tagName, VctArr);\n            //@ normals\n            tagName = reader.ReadString();\n#if !PACKED_VERTEX_FORMAT\n            VctArr = ReadArrayOfVector3(reader);\n            m_retTagData.Add(tagName, VctArr);\n#else\n            Byte4[] VctArr2 = ReadArrayOfByte4(reader);\n            m_retTagData.Add(tagName, VctArr2);\n#endif\n\n            //@ indicies\n            // removed TAG_INDICES from loading\n//          tagName = reader.ReadString();\n//          int[] intArr = ReadArrayOfInt(reader);\n//          m_retTagData.Add(tagName, intArr);\n\n            //@ texCoords0\n            tagName = reader.ReadString();\n#if !PACKED_VERTEX_FORMAT\n            Vector2[] vct2Arr = ReadArrayOfVector2(reader);\n#else\n            HalfVector2[] vct2Arr = ReadArrayOfHalfVector2(reader);\n#endif\n            m_retTagData.Add(tagName, vct2Arr);\n            //@ binormals \n            tagName = reader.ReadString();\n#if !PACKED_VERTEX_FORMAT\n            VctArr = ReadArrayOfVector3(reader);\n            m_retTagData.Add(tagName, VctArr);\n#else\n            VctArr2 = ReadArrayOfByte4(reader);\n            m_retTagData.Add(tagName, VctArr2);\n#endif\n            //@ tangents\n            tagName = reader.ReadString();\n#if !PACKED_VERTEX_FORMAT\n            VctArr = ReadArrayOfVector3(reader);\n            m_retTagData.Add(tagName, VctArr);\n#else\n            VctArr2 = ReadArrayOfByte4(reader);\n            m_retTagData.Add(tagName, VctArr2);\n#endif\n            //@ texcoords1\n            tagName = reader.ReadString();\n#if !PACKED_VERTEX_FORMAT\n            vct2Arr = ReadArrayOfVector2(reader);\n#else\n            vct2Arr = ReadArrayOfHalfVector2(reader);\n#endif\n            m_retTagData.Add(tagName, vct2Arr);\n\n            //////////////////////////////////////////////////////////////////////////\n\n            //@ TAG_RESCALE_TO_LENGTH_IN_METERS\n            tagName = reader.ReadString();\n            bool bVal = reader.ReadBoolean();\n            m_retTagData.Add(tagName, bVal);\n            //@ TAG_LENGTH_IN_METERS\n            tagName = reader.ReadString();\n            float fVal = reader.ReadSingle();\n            m_retTagData.Add(tagName, fVal);\n            //@ TAG_RESCALE_FACTOR\n            tagName = reader.ReadString();\n            fVal = reader.ReadSingle();\n            m_retTagData.Add(tagName, fVal);\n            //@ TAG_CENTERED\n            tagName = reader.ReadString();\n            bVal = reader.ReadBoolean();\n            m_retTagData.Add(tagName, bVal);\n            //@ TAG_USE_MASK\n            tagName = reader.ReadString();\n            bVal = reader.ReadBoolean();\n            m_retTagData.Add(tagName, bVal);\n            //@ TAG_SPECULAR_SHININESS\n            tagName = reader.ReadString();\n            fVal = reader.ReadSingle();\n            m_retTagData.Add(tagName, fVal);\n            //@ TAG_SPECULAR_POWER\n            tagName = reader.ReadString();\n            fVal = reader.ReadSingle();\n            m_retTagData.Add(tagName, fVal);\n            //@ TAG_BOUNDING_BOX\n            tagName = reader.ReadString();\n            BoundingBox bbox = this.ReadBoundingBox(reader);\n            m_retTagData.Add(tagName, bbox);\n            //@ TAG_BOUNDING_SPHERE\n            tagName = reader.ReadString();\n            BoundingSphere bSphere = this.ReadBoundingSphere(reader);\n            m_retTagData.Add(tagName, bSphere);\n            //@ TAG_SWAP_WINDING_ORDER\n            tagName = reader.ReadString();\n            bVal = reader.ReadBoolean();\n            m_retTagData.Add(tagName, bVal);\n\n            \n\n            //@ TAG_MESH_PARTS\n            tagName = reader.ReadString();\n            List<MyMeshPartInfo> meshes = this.ReadMeshParts(reader);\n            m_retTagData.Add(tagName, meshes);\n\n            //@ TAG_MODEL_BVH\n            tagName = reader.ReadString();\n            GImpactQuantizedBvh bvh = new GImpactQuantizedBvh();\n            bvh.Load(this.ReadArrayOfBytes(reader));\n            m_retTagData.Add(tagName, bvh);\n\n\n            //@ TAG_MODEL_INFO\n            tagName = reader.ReadString();\n            int tri, vert;\n            Vector3 bb;\n            tri = reader.ReadInt32();\n            vert = reader.ReadInt32();\n            bb = ImportVector3(reader);\n            m_retTagData.Add(tagName, new MyModelInfo(tri, vert, bb));\n\n            return true;\n        }\n\n        /// <summary>\n        /// LoadCustomTagData\n        /// </summary>\n        /// <returns></returns>\n        private bool LoadCustomTagData(BinaryReader reader, SortedSet<string> tags)\n        {\n            int tagsToRead = tags.Count;\n\n            //m_retTagData\n            string tagName;\n            tagName = reader.ReadString();\n            string[] strArr = ReadArrayOfString(reader);\n            if (tags.Contains(tagName))\n            {\n                m_retTagData.Add(tagName, strArr);\n                if (--tagsToRead <= 0) return true;\n            }\n\n            //@ TAG_DUMMIES\n            tagName = reader.ReadString();\n            Dictionary<string, MyModelDummy> dummies = this.ReadDummies(reader);\n            if (tags.Contains(tagName))\n            {\n                m_retTagData.Add(tagName, dummies);\n                if (--tagsToRead <= 0) return true;\n            }\n\n            //@ verticies\n            tagName = reader.ReadString();\n#if !PACKED_VERTEX_FORMAT\n            Vector3[] VctArr = ReadArrayOfVector3(reader);\n#else\n            HalfVector4[] VctArr = ReadArrayOfHalfVector4(reader);\n#endif\n            if (tags.Contains(tagName))\n            {\n                m_retTagData.Add(tagName, VctArr);\n                if (--tagsToRead <= 0) return true;\n            }\n            //@ normals\n            tagName = reader.ReadString();\n#if !PACKED_VERTEX_FORMAT\n            VctArr = ReadArrayOfVector3(reader);\n            if (tags.Contains(tagName))\n            {\n                m_retTagData.Add(tagName, VctArr);\n                if (--tagsToRead <= 0) return true;\n            }\n#else\n            Byte4[] VctArr2 = ReadArrayOfByte4(reader);\n            if (tags.Contains(tagName))\n            {\n                m_retTagData.Add(tagName, VctArr2);\n                if (--tagsToRead <= 0) return true;\n            }\n#endif\n            //@ indicies\n            // removed TAG_INDICES from loading\n            //          tagName = reader.ReadString();\n            //          int[] intArr = ReadArrayOfInt(reader);\n            //          m_retTagData.Add(tagName, intArr);\n\n            //@ texCoords0\n            tagName = reader.ReadString();\n#if !PACKED_VERTEX_FORMAT\n            Vector2[] vct2Arr = ReadArrayOfVector2(reader);\n#else\n            HalfVector2[] vct2Arr = ReadArrayOfHalfVector2(reader);\n#endif\n            if (tags.Contains(tagName))\n            {\n                m_retTagData.Add(tagName, vct2Arr);\n                if (--tagsToRead <= 0) return true;\n            }\n            //@ binormals \n            tagName = reader.ReadString();\n#if !PACKED_VERTEX_FORMAT\n            VctArr = ReadArrayOfVector3(reader);\n            if (tags.Contains(tagName))\n            {\n                m_retTagData.Add(tagName, VctArr);\n                if (--tagsToRead <= 0) return true;\n            }\n#else\n            VctArr2 = ReadArrayOfByte4(reader);\n            if (tags.Contains(tagName))\n            {\n                m_retTagData.Add(tagName, VctArr2);\n                if (--tagsToRead <= 0) return true;\n            }\n#endif\n            //@ tangents\n            tagName = reader.ReadString();\n#if !PACKED_VERTEX_FORMAT\n            VctArr = ReadArrayOfVector3(reader);\n            if (tags.Contains(tagName))\n            {\n                m_retTagData.Add(tagName, VctArr);\n                if (--tagsToRead <= 0) return true;\n            }\n#else\n            VctArr2 = ReadArrayOfByte4(reader);\n            if (tags.Contains(tagName))\n            {\n                m_retTagData.Add(tagName, VctArr2);\n                if (--tagsToRead <= 0) return true;\n            }\n#endif\n            //@ texcoords1\n            tagName = reader.ReadString();\n#if !PACKED_VERTEX_FORMAT\n            vct2Arr = ReadArrayOfVector2(reader);\n#else\n            vct2Arr = ReadArrayOfHalfVector2(reader);\n#endif\n            if (tags.Contains(tagName))\n            {\n                m_retTagData.Add(tagName, vct2Arr);\n                if (--tagsToRead <= 0) return true;\n            }\n            //////////////////////////////////////////////////////////////////////////\n\n            //@ TAG_RESCALE_TO_LENGTH_IN_METERS\n            tagName = reader.ReadString();\n            bool bVal = reader.ReadBoolean();\n            if (tags.Contains(tagName))\n            {\n                m_retTagData.Add(tagName, bVal);\n                if (--tagsToRead <= 0) return true;\n            }\n            //@ TAG_LENGTH_IN_METERS\n            tagName = reader.ReadString();\n            float fVal = reader.ReadSingle();\n            if (tags.Contains(tagName))\n            {\n                m_retTagData.Add(tagName, fVal);\n                if (--tagsToRead <= 0) return true;\n            }\n            //@ TAG_RESCALE_FACTOR\n            tagName = reader.ReadString();\n            fVal = reader.ReadSingle();\n            if (tags.Contains(tagName))\n            {\n                m_retTagData.Add(tagName, fVal);\n                if (--tagsToRead <= 0) return true;\n            }\n            //@ TAG_CENTERED\n            tagName = reader.ReadString();\n            bVal = reader.ReadBoolean();\n            if (tags.Contains(tagName))\n            {\n                m_retTagData.Add(tagName, bVal);\n                if (--tagsToRead <= 0) return true;\n            }\n            //@ TAG_USE_MASK\n            tagName = reader.ReadString();\n            bVal = reader.ReadBoolean();\n            if (tags.Contains(tagName))\n            {\n                m_retTagData.Add(tagName, bVal);\n                if (--tagsToRead <= 0) return true;\n            }\n            //@ TAG_SPECULAR_SHININESS\n            tagName = reader.ReadString();\n            fVal = reader.ReadSingle();\n            if (tags.Contains(tagName))\n            {\n                m_retTagData.Add(tagName, fVal);\n                if (--tagsToRead <= 0) return true;\n            }\n            //@ TAG_SPECULAR_POWER\n            tagName = reader.ReadString();\n            fVal = reader.ReadSingle();\n            if (tags.Contains(tagName))\n            {\n                m_retTagData.Add(tagName, fVal);\n                if (--tagsToRead <= 0) return true;\n            }\n            //@ TAG_BOUNDING_BOX\n            tagName = reader.ReadString();\n            BoundingBox bbox = this.ReadBoundingBox(reader);\n            if (tags.Contains(tagName))\n            {\n                m_retTagData.Add(tagName, bbox);\n                if (--tagsToRead <= 0) return true;\n            }\n            //@ TAG_BOUNDING_SPHERE\n            tagName = reader.ReadString();\n            BoundingSphere bSphere = this.ReadBoundingSphere(reader);\n            if (tags.Contains(tagName))\n            {\n                m_retTagData.Add(tagName, bSphere);\n                if (--tagsToRead <= 0) return true;\n            }\n            //@ TAG_SWAP_WINDING_ORDER\n            tagName = reader.ReadString();\n            bVal = reader.ReadBoolean();\n            if (tags.Contains(tagName))\n            {\n                m_retTagData.Add(tagName, bVal);\n                if (--tagsToRead <= 0) return true;\n            }\n            //@ TAG_MESH_PARTS\n            tagName = reader.ReadString();\n            List<MyMeshPartInfo> meshes = this.ReadMeshParts(reader);\n            if (tags.Contains(tagName))\n            {\n                m_retTagData.Add(tagName, meshes);\n                if (--tagsToRead <= 0) return true;\n            }\n\n            //@ TAG_MODEL_BVH\n            tagName = reader.ReadString();\n            var bvhBytes = this.ReadArrayOfBytes(reader);\n            if (tags.Contains(tagName))\n            {\n                GImpactQuantizedBvh bvh = new GImpactQuantizedBvh();\n                bvh.Load(bvhBytes);\n                m_retTagData.Add(tagName, bvh);\n                if (--tagsToRead <= 0) return true;\n            }\n\n            //@ TAG_MODEL_INFO\n            tagName = reader.ReadString();\n            int tri, vert;\n            Vector3 bb;\n            tri = reader.ReadInt32();\n            vert = reader.ReadInt32();\n            bb = ImportVector3(reader);\n            if (tags.Contains(tagName))\n            {\n                m_retTagData.Add(tagName, new MyModelInfo(tri, vert, bb));\n                if (--tagsToRead <= 0) return true;\n            }\n\n            return false;\n        }\n\n        /// <summary>\n        /// GetTagData\n        /// </summary>\n        /// <returns></returns>\n        public Dictionary<string, object> GetTagData() { return m_retTagData; }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Import/VF_Packer.cs",
    "content": "﻿using MinerWarsMath;\nusing MinerWarsMath.Graphics;\nusing MinerWarsMath.Graphics.PackedVector;\nusing System.Runtime.InteropServices;\nusing System;\nusing System.Diagnostics;\n\nnamespace MinerWars.CommonLIB.AppCode.Import\n{\n    // Vertex Format Packer\n    public class VF_Packer\n    {\n        public static short PackAmbientAndAlpha(float ambient, byte alpha)\n        {\n            Debug.Assert(alpha <= 2, \"Alpha can be 0, 1 or 2\");\n            Debug.Assert(ambient >= -1 && ambient <= 1);\n            short packed = (short)(ambient * 8191); // ambient in <-8191,8191>\n            int sign = packed < 0 ? -1 : 1;\n            packed += (short)(sign * (alpha * 8192));\n            return packed;\n        }\n\n        public static float UnpackAmbient(float packed)\n        {\n            // HLSL\n            //frac(PositionAndAmbient.w / 8192.0f);\n\n            return (packed % 8192.0f) / 8191.0f;\n        }\n\n        public static float UnpackAmbient(short packed)\n        {\n            // HLSL\n            //frac(PositionAndAmbient.w / 8192.0f);\n\n            return (packed % 8192.0f) / 8191.0f;\n        }\n\n        public static byte UnpackAlpha(short packed)\n        {\n            // HLSL\n            //int index = (int)abs(PositionAndAmbient.w / 8192);\n            //return float3(step(0, -index), step(abs(index - 1), 0), step(2, index));\n\n            return (byte)Math.Abs(packed / 8192);\n        }\n\n        public static byte UnpackAlpha(float packed)\n        {\n            // HLSL\n            //int index = (int)abs(PositionAndAmbient.w / 8192);\n            //return float3(step(0, -index), step(abs(index - 1), 0), step(2, index));\n\n            return (byte)Math.Abs(packed / 8192);\n        }\n\n        static public uint PackNormal(ref Vector3 normal)\n        {\n            Vector3 new_normal = normal;\n\n            // normal must be normalized!\n            //System.Diagnostics.Debug.Assert(System.Math.Abs(normal.LengthSquared() - 1.0f) < 0.005f);\n\n            // scale to 0.0 - 1.0 format\n            new_normal.X = 0.5f * (new_normal.X + 1.0f);\n            new_normal.Y = 0.5f * (new_normal.Y + 1.0f);\n\n            // scale to 0 - 32767\n            uint scaled_x = (ushort)((ushort)(new_normal.X * 32767));\n            uint scaled_y = (ushort)(new_normal.Y * 32767);\n\n            // set last bit of scaled_x to sign of normal.Z so we can recompute Z in HLSL\n            ushort z_sign = (ushort)(new_normal.Z > 0 ? 1 : 0);\n            scaled_x |= (ushort)(z_sign << 15);\n\n            return scaled_x | scaled_y << 16;\n        }\n\n        static public Byte4 PackNormalB4(ref Vector3 normal)\n        {\n            uint packedValue = PackNormal(ref normal);\n            Byte4 b4 = new Byte4();\n            b4.PackedValue = packedValue;\n            return b4;\n        }\n\n        static public Vector3 UnpackNormal(ref uint packedNormal)\n        {\n            Byte4 pn = new Byte4();\n            pn.PackedValue = packedNormal;\n            return UnpackNormal(ref pn);\n        }\n\n        static public Vector3 UnpackNormal(ref Byte4 packedNormal)\n        {\n            Vector4 unpacked = packedNormal.ToVector4();\n\n            // get sign of Z from last bit of Y\n            float z_sign = unpacked.Y > 127.5f ? 1.0f : -1.0f;\n\n            // clear last bit of Y\n            if (z_sign > 0)\n                unpacked.Y -= 128.0f;\n\n            // construct X and Y into format <0, 32767>\n            float x = unpacked.X + 256.0f * unpacked.Y;\n            float y = unpacked.Z + 256.0f * unpacked.W;\n\n            // normalize X and Y to <0,1>\n            x /= 32767.0f;\n            y /= 32767.0f;\n\n            // transform X and Y to <-1, 1>\n            float nx = (2 * x) - 1.0f;\n            float ny = (2 * y) - 1.0f;\n\n            // compute Z\n            float squaredZ = System.Math.Max(0, 1 - nx * nx - ny * ny);\n            float nz = z_sign * (float)System.Math.Sqrt(squaredZ);\n\n            return new Vector3(nx, ny, nz);\n        }\n\n        static public HalfVector4 PackPosition(ref Vector3 position)\n        {\n            return PositionPacker.PackPosition(ref position);\n        }\n\n        static public Vector3 UnpackPosition(ref HalfVector4 position)\n        {\n            return PositionPacker.UnpackPosition(ref position);\n        }\n\n        // This will pack and unpack position for model, so repacked position will be the same as in shader.\n        static public Vector3 RepackModelPosition(ref Vector3 position)\n        {\n            HalfVector4 packed = PackPosition(ref position);\n            return UnpackPosition(ref packed);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/MyMessageBox.cs",
    "content": "﻿using System;\n\nnamespace SysUtils\n{\n    using System.Runtime.InteropServices;\n\n    /// <summary>\n    /// Custom message box\n    /// </summary>\n    public static class MyMessageBox\n    {\n        [DllImport(\"user32.dll\", CharSet = CharSet.Auto)]\n        private static extern uint MessageBox(IntPtr hWndle, String text, String caption, int buttons);\n\n        public static void Show(string caption, string text)\n        {\n            MessageBox(new IntPtr(), text, caption, 0);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/MyMwcEnums.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace SysUtils\n{ \n    //  What game type we start when quick launch is enabled\n    public enum MyMwcQuickLaunchType : byte\n    {\n        NEW_STORY,\n        EDITOR_SANDBOX,\n        SANDBOX_RANDOM,\n        LOAD_CHECKPOINT,\n        LAST_SANDBOX\n    }\n\n    public enum MyMwcFinalBuildType : byte\n    {\n        TEST,        //  For our internal testing, not for public (although not ONLY for developers)\n        PUBLIC,      //  For everyone in the world\n        DEVELOP,      //  Only for developers, not for public nor testing\n    }\n\n    [Flags]\n    public enum LoggingOptions\n    {\n        NONE = 1 << 0,\n        ENUM_CHECKING = 1 << 1,\n        LOADING_MODELS = 1 << 2,\n        LOADING_TEXTURES = 1 << 3,\n        LOADING_CUSTOM_ASSETS = 1 << 4,\n        LOADING_SPRITE_VIDEO = 1 << 5,\n        VALIDATING_CUE_PARAMS = 1 << 6,\n        CONFIG_ACCESS = 1 << 7,\n        SIMPLE_NETWORKING = 1 << 8,\n        VOXEL_MAPS = 1 << 9,\n        MISC_RENDER_ASSETS = 1 << 10, // Decals, fonts, debug draw objects, simple draw objects\n        AUDIO = 1 << 11,\n        TRAILERS = 1 << 12,\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/MyMwcFinalBuildConstants.cs",
    "content": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing SysUtils.Utils;\nusing System.Net;\nusing MinerWars.CommonLIB.AppCode.Utils;\n\nnamespace SysUtils\n{\n    //  IMPORTANT: These are constants that must be checked before every official FINAL BUILD!\n    //  They must be set to proper values, some must be increased. See comments for each one.\n    public class MyMwcFinalBuildConstants\n    {\n        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n        //\n        //  Add sector servers to MyMwcServers constructor. It should contain master server and list of all sector servers\n        //\n        //  Check project properties for MinerWarsCommonLIB -> conditional symbol ENABLE_NETWORK_VERBOSE_LOGGING must un-defined in final build\n        //\n        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\n        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n        //  This is version of application or game used by PLAYER / SS / MS. Must be same on all running servers and clients!\n        //  FINAL BUILD VALUE: For production must be PUBLIC, for test build must be TEST\n        //  THIS  has been made private, use IsDevelop, IsTest or IsPublic instead (there are multiple public/test builds, so that's the reason)\n        //  DONT DELETE IFDEFs, IT'S FOR AUTOMATIC BUILD SCRIPTS!!!\n        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n#if PUBLIC\n        private const MyMwcFinalBuildType TYPE = MyMwcFinalBuildType.PUBLIC;\n#elif TEST\n        private const MyMwcFinalBuildType TYPE = MyMwcFinalBuildType.TEST;\n#elif DEVELOP\n        private const MyMwcFinalBuildType TYPE = MyMwcFinalBuildType.DEVELOP;\n#else\n        private const MyMwcFinalBuildType TYPE = MyMwcFinalBuildType.PUBLIC;\n#endif\n\n        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n        //  This is version of application\n        //  FINAL BUILD VALUE: Increase before every major build.\n        public const int APP_VERSION = 01109000;\n\n        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n        //  This is version of server network protocol, must be same on client and all servers!\n        //  When changing this value set it to same value as APP_VERSION (increase APP_VERSION when necessary)\n        //  FINAL BUILD VALUE: Increase ONLY when something changes in communication with server, e.g. object builder, server method.\n        public const int SERVER_PROTOCOL_VERSION = 01092000;\n\n        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n        //  Address of master server (e.g. masterserver.minerwars.com)\n        //  FINAL BUILD VALUE: masterserver.minerwars.com\n        public static string MASTER_SERVER_ADDRESS = GetValueForBuildType(\"masterserver.minerwars.com\", \"masterserver.test.minerwars.com\", MyMwcSecrets.MASTER_SERVER_ADDRESS_DEVELOP);\n        // LOCAL TEST // public static string MASTER_SERVER_ADDRESS = \"masterserver.develop.minerwars.com\";\n        //public static string MASTER_SERVER_ADDRESS = \"127.0.0.1\";\n        //public static string MASTER_SERVER_ADDRESS = \"192.168.1.2\";\n        //public static string MASTER_SERVER_ADDRESS = \"192.168.1.31\";\n\n        // When this is specified, it overrides url received from master server, set to null to use address received from master server\n        public static string SECTOR_SERVER_ADDRESS = null; // Null means received from master server\n        // LOCAL TEST \n        //public static string SECTOR_SERVER_ADDRESS = MASTER_SERVER_ADDRESS + \":\" + GetValueForBuildType(\"4505\", \"15000\", \"25000\"); // This means same as Master server with proper sector server port\n\n        // Address of multiplayer host, when null, uses master server\n        public static string MULTIPLAYER_HOST_ADDRESS = null; // Same as master server, always\n        //public static string MULTIPLAYER_HOST_ADDRESS = \"127.0.0.1\";\n        //public static string MULTIPLAYER_HOST_ADDRESS = GetValueForBuildType(null, null, \"masterserver.minerwars.com\"); // On ignum for develop\n\n        // Set to true when building game for steam\n        public const bool STEAM_BUILD = true;\n\n        // Set to true when building steam demo\n        public const bool STEAM_DEMO = false;\n\n        // For OnLive, CiiNOW and other cloud gaming services (disabled HW cursor, editor, multiplayer)\n        public const bool IS_CLOUD_GAMING = false;\n\n        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n        //  If not null, then loading screen and first main menu screen is skiped and we go directly to \n        //  the game (story, editor, ...). Use it during programming for saving your time.\n        //  FINAL BUILD VALUE: null\n        public static readonly MyMwcQuickLaunchType? QUICK_LAUNCH_VALUE = null;\n        public static readonly MyMwcQuickLaunchType? QUICK_LAUNCH = (IS_DEVELOP ? QUICK_LAUNCH_VALUE : null as MyMwcQuickLaunchType?);\n\n        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n        //  FINAL BUILD VALUE: Increase before every major build.\n        public const bool USE_P2P = true;\n\n        public static readonly StringBuilder APP_VERSION_STRING = new StringBuilder(MyMwcBuildNumbers.ConvertBuildNumberFromIntToString(MyMwcFinalBuildConstants.APP_VERSION));\n        public static readonly StringBuilder SERVER_PROTOCOL_VERSION_STRING = new StringBuilder(MyMwcBuildNumbers.ConvertBuildNumberFromIntToString(MyMwcFinalBuildConstants.SERVER_PROTOCOL_VERSION));\n        public static readonly string TYPE_AS_STRING = GetValueForBuildType(\"PUBLIC\", \"TEST\", \"DEVELOP\");\n\n        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n        //  Simulation of lost messages sent out (not sent, not delivered). If null, simulation is off. If filled, it defines probability of lost messages.\n        //  E.g. number 10 means every tenth sent message is lost.\n        //  FINAL BUILD VALUE: null\n        public static int? SIMULATE_LOST_MESSAGES_SENT_OUT = null;\n\n\n        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n        //  If true, then debug draw rendering is enabled\n        //  FINAL BUILD VALUE: false\n        public static bool EnableDebugDraw = true;\n\n        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n        //  If true then every object draws its normal vectors as wireframe lines. Voxel's don't draw yet.\n        //  FINAL BUILD VALUE: false\n        public static bool DrawNormalVectors = false;\n\n        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n        //  If true then every JLX object draws its collision primitives as wireframe object (sphere, box, capsule, static mesh). Voxel's don't draw.\n        //  FINAL BUILD VALUE: false\n        public static bool DrawJLXCollisionPrimitives = false;\n\n        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n        //  For extended logging in main update and draw methods\n        //  FINAL BUILD VALUE: false\n        public static bool EnableLoggingInDrawAndUpdateAndGuiLoops = false;\n\n        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n        //  When true, every update will contain few miliseconds of delay - use only for testing/debugging\n        //  FINAL BUILD VALUE: false\n        public static bool SimulateSlowUpdate = false;\n\n        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n        //  When true, every draw will contain few miliseconds of delay - use only for testing/debugging\n        //  FINAL BUILD VALUE: false\n        public static bool SimulateSlowDraw = false;\n\n        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n        //  Draws Vocel content as billboards.\n        //  FINAL BUILD VALUE: false\n        public static bool DrawVoxelContentAsBillboards = false;\n\n        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n        //  Drawing Helper Primitives\n        //  FINAL BUILD VALUE: false\n        public static bool DrawHelperPrimitives = false;\n\n        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n        //  Disables/Enables enemy bots\n        //  FINAL BUILD VALUE: false\n        public static bool DisableEnemyBots = false;\n\n        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n        //  Disables/Enables drawing of spots, where collisions occur in HUD\n        //  FINAL BUILD VALUE: false\n        public static bool DrawCollisionSpotsInHud = false;\n\n        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n        //  Disables/Enables Fast Aproximate Antialiasing\n        //  FINAL BUILD VALUE: true\n        public static bool EnableFxaa = true;\n        \n        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n        //  From where will the launcher download updates\n        //  FINAL BUILD VALUE: \"http://update2.minerwars.com/\"\n        //public static readonly string UPDATER_URL = \"http://192.168.24.100/UpdateMinerWarsCom/\";\n        public static readonly string UPDATER_URL = GetValueForBuildType(\"http://update2.minerwars.com/\", \"http://update2.test.minerwars.com/\", MyMwcSecrets.UPDATER_URL_DEVELOP);\n\n        //  For upload to S3\n        public static readonly string UPDATE_BUCKET_NAME = GetValueForBuildType(\"/update2.minerwars.com/\", \"/update2.test.minerwars.com/\", MyMwcSecrets.UPDATE_BUCKET_NAME_DEVELOP);\n\n        //  For upload to S3 Download mirror\n        public static readonly string DOWNLOAD_BUCKET_NAME = GetValueForBuildType(\"/mirror1.minerwars.com/Downloads/Public/\", \"/mirror1.minerwars.com/Downloads/Test/\", MyMwcSecrets.DOWNLOAD_BUCKET_NAME_DEVELOP);\n\n        public static readonly string P2P_CONTROLlER_ADDRESS = \"p2p.keenswh.com\";\n        public static readonly int P2P_CONTROLLER_PORT = GetValueForBuildType(11989, 11987, 11988);\n\n        public static readonly string ANNOUNCE_URL = GetValueForBuildType(\"http://p2p.keenswh.com:6969/announce\", \"http://p2p.keenswh.com:6967/announce\", MyMwcSecrets.ANNOUNCE_URL_DEVELOP);\n        public static readonly string TRACKER_URL = \"http://p2p.keenswh.com\";\n        public static readonly int TRACKER_PORT = GetValueForBuildType(6969, 6967, MyMwcSecrets.TRACKER_PORT_DEVELOP);\n\n        public static readonly string UPDATER_CDN_MIRROR_URL = GetValueForBuildType(\"http://cdn77.update2.minerwars.com\", \"http://cdn77.update2.test.minerwars.com\", MyMwcSecrets.UPDATER_CDN_MIRROR_URL_DEVELOP);\n\n        //  Url of MinerWarsSetup.torrent file\n        public static readonly string SETUPTORRENT_URL = GetValueForBuildType(\"http://mirror1.minerwars.com/Downloads/Public/\", \"http://mirror1.minerwars.com/Downloads/Test/\", MyMwcSecrets.SETUPTORRENT_URL_DEVELOP);\n        public static readonly string SETUPTORRENTMIRROR_URL = GetValueForBuildType(\"http://mirror2.update2.minerwars.com/\", \"http://mirror2.update2.test.minerwars.com/\", MyMwcSecrets.SETUPTORRENTMIRROR_URL_DEVELOP);\n        public static readonly string SETUPTORRENT_BUCKET_NAME = GetValueForBuildType(\"/mirror1.minerwars.com/Downloads/Public/\", \"/mirror1.minerwars.com/Downloads/Test/\", MyMwcSecrets.SETUPTORRENT_BUCKET_NAME_DEVELOP);\n\n        public static readonly int[] UNSUPPORTED_GPU_DEVICE_IDS = new int[] \n        { \n            0x791E, // Radeon X1200, only DX 9.0b, SM 2.0\n            0x791F, // Mobility radeon X1100, only DX 9.0b, SM 2.0\n        };\n\n        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n        //  If we log garbage collection. It's usefull only for debuging, not in final build.\n        //  FINAL BUILD VALUE: false\n        public static bool EnableLoggingGarbageCollectionCalls = false;\n\n        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n        //  If not null than it specified how many millisecond will server wait after receiving message from player before processing it\n        //  FINAL BUILD VALUE: null\n        public static readonly int? SIMULATED_DELAY_ON_SERVER_IN_MILLISECONDS = null;\n\n        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n        //  Some socket exception are better when ignored, because they can happen when hacker/cheater sends incorrect packet or something\n        //  else I can't predict. So normaly we ignore them. But during testing/debugging, it's better if they are unhandled, thus catched by debugger.\n        //  IMPORTANT: It's called \"ignore socket exceptions\" but actually it ignores other exception types too. Basically/\n        //  every exception that originates from sending or receiving networking data.            \n        //  FINAL BUILD VALUE: true\n        public const bool IGNORE_SOCKET_EXCEPTIONS = true;\n\n        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n        //  For saving phys-object positions and gunshots when creating trailer - it will create the tracking file at application end in user's folder\n        //  FINAL BUILD VALUE: false\n        public const bool ENABLE_TRAILER_SAVE = false;        \n\n        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n        //  If true, the game screen that normaly runs story/MMO will also run animation from trailer.xmlx\n        //  FINAL BUILD VALUE: false\n        public const bool ENABLE_TRAILER_ANIMATION_IN_GAMEPLAY_SCREEN = true;\n\n        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n        //  If true then PERFHUD (NVIDIA's debugging tool) can access this application. Final build of game should have it set to FALSE!!!\n        //  FINAL BUILD VALUE: false\n        public const bool ENABLE_PERFHUD = false;\n\n        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n        //  If true then collision particles and cues/sounds are generated when two objects collide\n        //  FINAL BUILD VALUE: true\n        public const bool ENABLE_COLLISION_CUES_AND_PARTICLES = true;\n\n        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n        //  If true, application accepts changes through developer keys so extended information or control is allowed\n        //  FINAL BUILD VALUE: false\n        //public const bool ENABLE_DEVELOPER_KEYS = IS_DEVELOP;\n\n        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n        //  If false, objects are not highlighted in editor (useful when debugging visual appearance)\n        //  FINAL BUILD VALUE: true\n        public const bool ENABLE_OBJECT_HIGHLIGHT = true;\n\n        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n        //  We encrypt/decrypt all packets between player and player, or player and master server, or player and sector server using this password\n        //  For master server to sector server packets we use PRIVATE_CRYPTO\n        //  FINAL BUILD VALUE: Randomly change values, but preserve number of elements.\n        public static readonly MyMwcSingleCrypto PUBLIC_CRYPTO = new MyMwcSingleCrypto(new byte[] { 244, 169, 21, 76, 179, 201, 34, 187 });\n\n        /// <summary>\n        /// Enable bot debug mode (like showing lines to their targets)\n        /// </summary>\n        public static bool BOT_DEBUG_MODE = false;\n\n        /// <summary>\n        /// Enable debug draw of vertex normals, if false then vertex buffer is destroyed after vertex buffer has been created\n        /// </summary>\n        public static bool ENABLE_VERTEX_NORMALS_DEBUG_DRAW = false;\n\n        /// <summary>\n        /// Sets events to log, default value is all\n        /// </summary>\n        public static MyMwcLogEventEnum LogType = MyMwcLogEventEnum.All;\n\n        /// <summary>\n        /// The version of the voxel cache file format. Increase everytime you change the format of the voxel cache.\n        /// </summary>\n        public const int VOXEL_CACHE_FILE_VERSION = 0002;\n\n        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n        \n        public const bool IS_DEVELOP = TYPE == MyMwcFinalBuildType.DEVELOP;\n        public const bool IS_TEST = TYPE == MyMwcFinalBuildType.TEST;\n        public const bool IS_PUBLIC = TYPE == MyMwcFinalBuildType.PUBLIC;\n        public const bool REQUIRES_LAUNCHER = !IS_DEVELOP && !IS_CLOUD_GAMING;\n\n        public static T GetValueForBuildType<T>(T ifPublic, T ifTest, T ifDevelop)\n        {\n            if (TYPE == MyMwcFinalBuildType.PUBLIC)\n            {                \n                return ifPublic;\n            }\n            else if (TYPE == MyMwcFinalBuildType.TEST)\n            {\n                return ifTest;\n            }\n            else if (TYPE == MyMwcFinalBuildType.DEVELOP)\n            {\n                return ifDevelop;\n            }\n            else\n            {\n                throw new MyMwcExceptionApplicationShouldNotGetHere();\n            }\n        }\n\n        public const string OBFUSCATION_EXCEPTION_FEATURE = \"cw symbol renaming\";\n\n        public const LoggingOptions LOGGING_OPTIONS = LoggingOptions.NONE;\n    }\n}\n\n\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/MyMwcSingleCrypto.cs",
    "content": "﻿//  This class is used for single encryption and decryption of byte arrays.\n//  It's symmetric and doesn't change number of bytes. Just changed the values.\n//  These passwords are stored in source code and never sent through network.\n//  These class can't be used to verify if encrypted values were encrypted with some password. It can just decrypt and hope it will be OK.\n\nnamespace SysUtils\n{\n    public class MyMwcSingleCrypto\n    {\n        readonly byte[] m_password;\n\n        private MyMwcSingleCrypto() \n        {\n        }\n\n        public MyMwcSingleCrypto(byte[] password)\n        {\n            m_password = (byte[])password.Clone();\n        }\n\n        //  Encrypts specified byte array, thus changing values, but not size of the array\n        public void Encrypt(byte[] data, int length)\n        {\n            int passwordPosition = 0;\n            for (int i = 0; i < length; i++)\n            {\n                //  This is the \"encoding\" part\n                data[i] = (byte)(data[i] + m_password[passwordPosition]);\n\n                passwordPosition++;\n                passwordPosition = passwordPosition % m_password.Length;\n            }\n        }\n\n        //  Decrypts specified byte array, thus changing values, but not size of the array\n        public void Decrypt(byte[] data, int length)\n        {\n            int passwordPosition = 0;\n            for (int i = 0; i < length; i++)\n            {\n                //  This is the \"decoding\" part\n                data[i] = (byte)(data[i] - m_password[passwordPosition]);\n\n                passwordPosition++;\n                passwordPosition = passwordPosition % m_password.Length;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/MyTraceClient.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Diagnostics;\nusing System.Runtime.InteropServices;\n\nnamespace SysUtils\n{\n\tpublic class MyTraceClient\n\t{\n\t\tpublic enum E_TraceMessageType\n\t\t{\n\t\t\tE_TMT_CLEAR_LIST = 0,\n\t\t\tE_TMT_INFO,\n\t\t\tE_TMT_WARNING,\n\t\t\tE_TMT_ERROR,\n\t\t\tE_TMT_STOP_ERROR\n\t\t};\n\n\t\tpublic struct COPYDATASTRUCT\n\t\t{\n\t\t\tpublic IntPtr dwData;\n\t\t\tpublic int cbData;\n\t\t\t[MarshalAs(UnmanagedType.LPStr)]\n\t\t\tpublic string lpData;\n\t\t}\n\n\t\treadonly static uint WM_COPYDATA = 0x004A;\n\t\t//[DllImport(\"coredll.dll\",EntryPoint=\"SendMessage\", SetLastError=true)]\t//Win7\n\t\t[DllImport(\"user32.dll\", EntryPoint = \"SendMessage\", SetLastError = true)]\t//XP\n\t\tpublic static extern int SendMessage(IntPtr hWnd, uint uMsg, int wParam, ref COPYDATASTRUCT lParam);\n\t\t[DllImport(\"user32.dll\", CharSet = CharSet.Auto)]\n\t\tpublic static extern IntPtr FindWindow(string strClassName, string strWindowName);\n\n\t\tprivate static IntPtr m_hWnd;\n\n\t\t/// <summary>\n\t\t/// InitTrace - run external TraceServer application\n\t\t/// </summary>\n\t\t/// <param name=\"fullPath\"></param>\n\t\t/// <returns></returns>\n\t\tpublic static bool InitTrace(String fullPath)\n\t\t{\n\t\t\t//run trace server\n\t\t\ttry\n\t\t\t{\n\t\t\t\tProcess.Start(fullPath);\n\t\t\t}\n\t\t\tcatch (System.ComponentModel.Win32Exception)\n\t\t\t{\n\t\t\t}\n\n\t\t\tm_hWnd = FindWindow(\"#32770\", \"TraceServer\");\n\t\t\tif (m_hWnd == null)\n\t\t\t\treturn false;\n\n\t\t\tTrace(E_TraceMessageType.E_TMT_CLEAR_LIST, String.Empty);\n\t\t\treturn true;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Trace\n\t\t/// </summary>\n\t\t/// <param name=\"type\"></param>\n\t\t/// <param name=\"str\"></param>\n        [Conditional(\"DEBUG\"), Conditional(\"DEVELOP\")]\n\t\tpublic static void Trace(E_TraceMessageType type, String str)\n\t\t{\n\t\t\tif (m_hWnd == null)\n\t\t\t\treturn;\n\n\t\t\tStackTrace trace = new StackTrace();\n\t\t\tStackFrame frame = trace.GetFrame(2);\n\t\t\tSystem.Reflection.MethodBase method = frame.GetMethod();\n\t\t\tString methodName = method.Name;\n\t\t\tString file = frame.GetFileName();\n\t\t\tint lineNumber = frame.GetFileLineNumber();\n\n\n\t\t\tbyte[] cArr = System.Text.Encoding.Default.GetBytes(str);\n\t\t\tCOPYDATASTRUCT myCD;\n\t\t\tmyCD.dwData = (IntPtr)500;\n\t\t\tint size = 4 * 3 + str.Length + 1 + methodName.Length + 1;\t//4*3 4bytes per size + type + lineNum\n\t\t\tmyCD.cbData = size;\n\n\t\t\tbyte[] strSize = BitConverter.GetBytes(size);\n\t\t\tbyte[] strType = BitConverter.GetBytes((int)type);\n\t\t\tbyte[] strLineNum = BitConverter.GetBytes(lineNumber);\n\n\t\t\tString strTmp = System.Text.ASCIIEncoding.ASCII.GetString(strSize);\n\t\t\tstrTmp += System.Text.ASCIIEncoding.ASCII.GetString(strType);\n\t\t\tstrTmp += System.Text.ASCIIEncoding.ASCII.GetString(strLineNum);\n\n\t\t\tbyte[] info = System.Text.Encoding.ASCII.GetBytes(str);\n\t\t\tstrTmp += System.Text.ASCIIEncoding.ASCII.GetString(info);\n\n\t\t\tbyte[] zero = { 0 };\n\t\t\tstrTmp += System.Text.ASCIIEncoding.ASCII.GetString(zero);\t//0\n\n\t\t\tinfo = System.Text.Encoding.ASCII.GetBytes(methodName);\n\t\t\tstrTmp += System.Text.ASCIIEncoding.ASCII.GetString(info);\n\n\t\t\tstrTmp += System.Text.ASCIIEncoding.ASCII.GetString(zero);\t//0\n\n\t\t\tmyCD.lpData = strTmp;//\n\n\t\t\ttry\n\t\t\t{\n\t\t\t\tSendMessage(m_hWnd, WM_COPYDATA, 0, ref myCD);\n\t\t\t}\n\t\t\tcatch (Exception ex)\n\t\t\t{\n\t\t\t\tthrow ex;\n\t\t\t}\n\t\t}\n\n\t\t/// <summary>\n\t\t/// TraceI\n\t\t/// </summary>\n\t\t/// <param name=\"str\"></param>\n        [Conditional(\"DEBUG\"), Conditional(\"DEVELOP\")]\n\t\tpublic static void TraceI(String str)\n\t\t{\n\t\t\tTrace(E_TraceMessageType.E_TMT_INFO, str);\n\t\t}\n        \n        [Conditional(\"DEBUG\"), Conditional(\"DEVELOP\")]\n\t\tpublic static void TraceW(String str) \n\t\t{\n\t\t\tTrace(E_TraceMessageType.E_TMT_WARNING, str);\n\t\t}\n\n        [Conditional(\"DEBUG\"), Conditional(\"DEVELOP\")]\n\t\tpublic static void TraceE(String str)\n\t\t{\n\t\t\tTrace(E_TraceMessageType.E_TMT_ERROR, str);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/IMyEvent.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.IO;\nusing System.Net;\nusing Lidgren.Network;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking\n{\n    public interface IMyEvent\n    {\n        bool Read(MyMessageReader msg);\n        void Write(MyMessageWriter msg);\n\n        NetConnection SenderConnection { get; set; }\n        IPEndPoint SenderEndpoint { get; set; }\n        MyEventEnum EventType { get; }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/IReadWriteMessage.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking\n{\n    public interface IReadWriteMessage\n    {\n        bool Read(MyMessageReader msg);\n        void Write(MyMessageWriter msg);\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Lidgren/Encryption/INetEncryption.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\n\nnamespace Lidgren.Network\n{\n\t/// <summary>\n\t/// Interface for an encryption algorithm\n\t/// </summary>\n\tpublic interface INetEncryption\n\t{\n\t\t/// <summary>\n\t\t/// Encrypt an outgoing message in place\n\t\t/// </summary>\n\t\tbool Encrypt(NetOutgoingMessage msg);\n\n\t\t/// <summary>\n\t\t/// Decrypt an incoming message in place\n\t\t/// </summary>\n\t\tbool Decrypt(NetIncomingMessage msg);\n\t}\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Lidgren/Encryption/NetAESEncryption.cs",
    "content": "using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Security.Cryptography;\nusing System.Text;\n\nnamespace Lidgren.Network\n{\n\t/// <summary>\n\t/// AES encryption\n\t/// </summary>\n\tpublic class NetAESEncryption : INetEncryption\n\t{\n\t\tprivate readonly byte[] m_key;\n\t\tprivate readonly byte[] m_iv;\n\t\tprivate readonly int m_bitSize;\n\t\tprivate static readonly List<int> m_keysizes;\n\t\tprivate static readonly List<int> m_blocksizes;\n\n\t\tstatic NetAESEncryption()\n\t\t{\n\n\t\t\tAesCryptoServiceProvider aes = new AesCryptoServiceProvider();\n\t\t\tList<int> temp = new List<int>();\n\t\t\tforeach (KeySizes keysize in aes.LegalKeySizes)\n\t\t\t{\n\t\t\t\tfor (int i = keysize.MinSize; i <= keysize.MaxSize; i += keysize.SkipSize)\n\t\t\t\t{\n\t\t\t\t\tif (!temp.Contains(i))\n\t\t\t\t\t\ttemp.Add(i);\n\t\t\t\t\tif (i == keysize.MaxSize)\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tm_keysizes = temp;\n\t\t\ttemp = new List<int>();\n\t\t\tforeach (KeySizes keysize in aes.LegalBlockSizes)\n\t\t\t{\n\t\t\t\tfor (int i = keysize.MinSize; i <= keysize.MaxSize; i += keysize.SkipSize)\n\t\t\t\t{\n\n\t\t\t\t\tif (!temp.Contains(i))\n\t\t\t\t\t\ttemp.Add(i);\n\t\t\t\t\tif (i == keysize.MaxSize)\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tm_blocksizes = temp;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// NetAESEncryption constructor\n\t\t/// </summary>\n\t\tpublic NetAESEncryption(byte[] key, byte[] iv)\n\t\t{\n\t\t\tif (!m_keysizes.Contains(key.Length * 8))\n\t\t\t{\n\t\t\t\tstring lengths = m_keysizes.Aggregate(\"\", (current, i) => current + string.Format(\"{0}, \", i));\n\t\t\t\tlengths = lengths.Remove(lengths.Length - 3);\n\t\t\t\tthrow new NetException(string.Format(\"Not a valid key size. (Valid values are: {0})\", lengths));\n\t\t\t}\n\n\t\t\tif (!m_blocksizes.Contains(iv.Length * 8))\n\t\t\t{\n\t\t\t\tstring lengths = m_blocksizes.Aggregate(\"\", (current, i) => current + string.Format(\"{0}, \", i));\n\t\t\t\tlengths = lengths.Remove(lengths.Length - 3);\n\t\t\t\tthrow new NetException(string.Format(\"Not a valid iv size. (Valid values are: {0})\", lengths));\n\t\t\t}\n\t\t\tm_key = key;\n\t\t\tm_iv = iv;\n\t\t\tm_bitSize = m_key.Length * 8;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// NetAESEncryption constructor\n\t\t/// </summary>\n\t\tpublic NetAESEncryption(string key, int bitsize)\n\t\t{\n\t\t\tif (!m_keysizes.Contains(bitsize))\n\t\t\t{\n\t\t\t\tstring lengths = m_keysizes.Aggregate(\"\", (current, i) => current + string.Format(\"{0}, \", i));\n\t\t\t\tlengths = lengths.Remove(lengths.Length - 3);\n\t\t\t\tthrow new NetException(string.Format(\"Not a valid key size. (Valid values are: {0})\", lengths));\n\t\t\t}\n\t\t\tbyte[] entropy = Encoding.UTF32.GetBytes(key);\n\t\t\t// I know hardcoding salts is bad, but in this case I think it is acceptable.\n\t\t\tHMACSHA512 hmacsha512 = new HMACSHA512(Convert.FromBase64String(\"i88NEiez3c50bHqr3YGasDc4p8jRrxJAaiRiqixpvp4XNAStP5YNoC2fXnWkURtkha6M8yY901Gj07IRVIRyGL==\"));\n\t\t\thmacsha512.Initialize();\n\t\t\tfor (int i = 0; i < 1000; i++)\n\t\t\t{\n\t\t\t\tentropy = hmacsha512.ComputeHash(entropy);\n\t\t\t}\n\t\t\tint keylen = bitsize / 8;\n\t\t\tm_key = new byte[keylen];\n\t\t\tBuffer.BlockCopy(entropy, 0, m_key, 0, keylen);\n\t\t\tm_iv = new byte[m_blocksizes[0] / 8];\n\n\t\t\tBuffer.BlockCopy(entropy, entropy.Length - m_iv.Length - 1, m_iv, 0, m_iv.Length);\n\t\t\tm_bitSize = bitsize;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// NetAESEncryption constructor\n\t\t/// </summary>\n\t\tpublic NetAESEncryption(string key)\n\t\t\t: this(key, m_keysizes.Max())\n\t\t{\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Encrypt outgoing message\n\t\t/// </summary>\n\t\tpublic bool Encrypt(NetOutgoingMessage msg)\n\t\t{\n\t\t\ttry\n\t\t\t{\n\t\t\t\t// nested usings are fun!\n\t\t\t\tusing (AesCryptoServiceProvider aesCryptoServiceProvider = new AesCryptoServiceProvider { KeySize = m_bitSize, Mode = CipherMode.CBC })\n\t\t\t\t{\n\t\t\t\t\tusing (ICryptoTransform cryptoTransform = aesCryptoServiceProvider.CreateEncryptor(m_key, m_iv))\n\t\t\t\t\t{\n\t\t\t\t\t\tusing (MemoryStream memoryStream = new MemoryStream())\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tusing (CryptoStream cryptoStream = new CryptoStream(memoryStream, cryptoTransform,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t CryptoStreamMode.Write))\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tcryptoStream.Write(msg.m_data, 0, msg.m_data.Length);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tmsg.m_data = memoryStream.ToArray();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t}\n\t\t\tcatch\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Decrypt incoming message\n\t\t/// </summary>\n\t\tpublic bool Decrypt(NetIncomingMessage msg)\n\t\t{\n\t\t\ttry\n\t\t\t{\n\t\t\t\t// nested usings are fun!\n\t\t\t\tusing (AesCryptoServiceProvider aesCryptoServiceProvider = new AesCryptoServiceProvider { KeySize = m_bitSize, Mode = CipherMode.CBC })\n\t\t\t\t{\n\t\t\t\t\tusing (ICryptoTransform cryptoTransform = aesCryptoServiceProvider.CreateDecryptor(m_key, m_iv))\n\t\t\t\t\t{\n\t\t\t\t\t\tusing (MemoryStream memoryStream = new MemoryStream())\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tusing (CryptoStream cryptoStream = new CryptoStream(memoryStream, cryptoTransform,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t CryptoStreamMode.Write))\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tcryptoStream.Write(msg.m_data, 0, msg.m_data.Length);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tmsg.m_data = memoryStream.ToArray();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t}\n\t\t\tcatch\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t}\n}"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Lidgren/Encryption/NetBlockEncryptionBase.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\n\nnamespace Lidgren.Network\n{\n\t/// <summary>\n\t/// Base for a non-threadsafe encryption class\n\t/// </summary>\n\tpublic abstract class NetBlockEncryptionBase : INetEncryption\n\t{\n\t\t// temporary space for one block to avoid reallocating every time\n\t\tprivate byte[] m_tmp;\n\n\t\t/// <summary>\n\t\t/// Block size in bytes for this cipher\n\t\t/// </summary>\n\t\tpublic abstract int BlockSize { get; }\n\n\t\t/// <summary>\n\t\t/// NetBlockEncryptionBase constructor\n\t\t/// </summary>\n\t\tpublic NetBlockEncryptionBase()\n\t\t{\n\t\t\tm_tmp = new byte[BlockSize];\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Encrypt am outgoing message with this algorithm; no writing can be done to the message after encryption, or message will be corrupted\n\t\t/// </summary>\n\t\tpublic bool Encrypt(NetOutgoingMessage msg)\n\t\t{\n\t\t\tint payloadBitLength = msg.LengthBits;\n\t\t\tint numBytes = msg.LengthBytes;\n\t\t\tint blockSize = BlockSize;\n\t\t\tint numBlocks = (int)Math.Ceiling((double)numBytes / (double)blockSize);\n\t\t\tint dstSize = numBlocks * blockSize;\n\n\t\t\tmsg.EnsureBufferSize(dstSize * 8 + (4 * 8)); // add 4 bytes for payload length at end\n\t\t\tmsg.LengthBits = dstSize * 8; // length will automatically adjust +4 bytes when payload length is written\n\n\t\t\tfor(int i=0;i<numBlocks;i++)\n\t\t\t{\n\t\t\t\tEncryptBlock(msg.m_data, (i * blockSize), m_tmp);\n\t\t\t\tBuffer.BlockCopy(m_tmp, 0, msg.m_data, (i * blockSize), m_tmp.Length);\n\t\t\t}\n\n\t\t\t// add true payload length last\n\t\t\tmsg.Write((UInt32)payloadBitLength);\n\n\t\t\treturn true;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Decrypt an incoming message encrypted with corresponding Encrypt\n\t\t/// </summary>\n\t\t/// <param name=\"msg\">message to decrypt</param>\n\t\t/// <returns>true if successful; false if failed</returns>\n\t\tpublic bool Decrypt(NetIncomingMessage msg)\n\t\t{\n\t\t\tint numEncryptedBytes = msg.LengthBytes - 4; // last 4 bytes is true bit length\n\t\t\tint blockSize = BlockSize;\n\t\t\tint numBlocks = numEncryptedBytes / blockSize;\n\t\t\tif (numBlocks * blockSize != numEncryptedBytes)\n\t\t\t\treturn false;\n\n\t\t\tfor (int i = 0; i < numBlocks; i++)\n\t\t\t{\n\t\t\t\tDecryptBlock(msg.m_data, (i * blockSize), m_tmp);\n\t\t\t\tBuffer.BlockCopy(m_tmp, 0, msg.m_data, (i * blockSize), m_tmp.Length);\n\t\t\t}\n\n\t\t\t// read 32 bits of true payload length\n\t\t\tuint realSize = NetBitWriter.ReadUInt32(msg.m_data, 32, (numEncryptedBytes * 8));\n\t\t\tmsg.m_bitLength = (int)realSize;\n\t\t\treturn true;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Encrypt a block of bytes\n\t\t/// </summary>\n\t\tprotected abstract void EncryptBlock(byte[] source, int sourceOffset, byte[] destination);\n\n\t\t/// <summary>\n\t\t/// Decrypt a block of bytes\n\t\t/// </summary>\n\t\tprotected abstract void DecryptBlock(byte[] source, int sourceOffset, byte[] destination);\n\t}\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Lidgren/Encryption/NetDESEncryption.cs",
    "content": "using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Security.Cryptography;\nusing System.Text;\n\nnamespace Lidgren.Network\n{\n\t/// <summary>\n\t/// DES encryption\n\t/// </summary>\n\tpublic class NetDESEncryption : INetEncryption\n\t{\n\t\tprivate readonly byte[] m_key;\n\t\tprivate readonly byte[] m_iv;\n\t\tprivate readonly int m_bitSize;\n\t\tprivate static readonly List<int> m_keysizes;\n\t\tprivate static readonly List<int> m_blocksizes;\n\n\t\tstatic NetDESEncryption()\n\t\t{\n\n\t\t\tDESCryptoServiceProvider des = new DESCryptoServiceProvider();\n\t\t\tList<int> temp = new List<int>();\n\t\t\tforeach (KeySizes keysize in des.LegalKeySizes)\n\t\t\t{\n\t\t\t\tfor (int i = keysize.MinSize; i <= keysize.MaxSize; i += keysize.SkipSize)\n\t\t\t\t{\n\t\t\t\t\tif (!temp.Contains(i))\n\t\t\t\t\t\ttemp.Add(i);\n\t\t\t\t\tif (i == keysize.MaxSize)\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tm_keysizes = temp;\n\t\t\ttemp = new List<int>();\n\t\t\tforeach (KeySizes keysize in des.LegalBlockSizes)\n\t\t\t{\n\t\t\t\tfor (int i = keysize.MinSize; i <= keysize.MaxSize; i += keysize.SkipSize)\n\t\t\t\t{\n\n\t\t\t\t\tif (!temp.Contains(i))\n\t\t\t\t\t\ttemp.Add(i);\n\t\t\t\t\tif (i == keysize.MaxSize)\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tm_blocksizes = temp;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// NetDESEncryption constructor\n\t\t/// </summary>\n\t\tpublic NetDESEncryption(byte[] key, byte[] iv)\n\t\t{\n\t\t\tif (!m_keysizes.Contains(key.Length * 8))\n\t\t\t{\n\t\t\t\tstring lengths = m_keysizes.Aggregate(\"\", (current, i) => current + string.Format(\"{0}, \", i));\n\t\t\t\tlengths = lengths.Remove(lengths.Length - 3);\n\t\t\t\tthrow new NetException(string.Format(\"Not a valid key size. (Valid values are: {0})\", lengths));\n\t\t\t}\n\n\t\t\tif (!m_blocksizes.Contains(iv.Length * 8))\n\t\t\t{\n\t\t\t\tstring lengths = m_blocksizes.Aggregate(\"\", (current, i) => current + string.Format(\"{0}, \", i));\n\t\t\t\tlengths = lengths.Remove(lengths.Length - 3);\n\t\t\t\tthrow new NetException(string.Format(\"Not a valid iv size. (Valid values are: {0})\", lengths));\n\t\t\t}\n\t\t\tm_key = key;\n\t\t\tm_iv = iv;\n\t\t\tm_bitSize = m_key.Length * 8;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// NetDESEncryption constructor\n\t\t/// </summary>\n\t\tpublic NetDESEncryption(string key, int bitsize)\n\t\t{\n\t\t\tif (!m_keysizes.Contains(bitsize))\n\t\t\t{\n\t\t\t\tstring lengths = m_keysizes.Aggregate(\"\", (current, i) => current + string.Format(\"{0}, \", i));\n\t\t\t\tlengths = lengths.Remove(lengths.Length - 3);\n\t\t\t\tthrow new NetException(string.Format(\"Not a valid key size. (Valid values are: {0})\", lengths));\n\t\t\t}\n\t\t\tbyte[] entropy = Encoding.UTF32.GetBytes(key);\n\t\t\t// I know hardcoding salts is bad, but in this case I think it is acceptable.\n\t\t\tHMACSHA512 hmacsha512 = new HMACSHA512(Convert.FromBase64String(\"i88NEiez3c50bHqr3YGasDc4p8jRrxJAaiRiqixpvp4XNAStP5YNoC2fXnWkURtkha6M8yY901Gj07IRVIRyGL==\"));\n\t\t\thmacsha512.Initialize();\n\t\t\tfor (int i = 0; i < 1000; i++)\n\t\t\t{\n\t\t\t\tentropy = hmacsha512.ComputeHash(entropy);\n\t\t\t}\n\t\t\tint keylen = bitsize / 8;\n\t\t\tm_key = new byte[keylen];\n\t\t\tBuffer.BlockCopy(entropy, 0, m_key, 0, keylen);\n\t\t\tm_iv = new byte[m_blocksizes[0] / 8];\n\n\t\t\tBuffer.BlockCopy(entropy, entropy.Length - m_iv.Length - 1, m_iv, 0, m_iv.Length);\n\t\t\tm_bitSize = bitsize;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// NetDESEncryption constructor\n\t\t/// </summary>\n\t\tpublic NetDESEncryption(string key)\n\t\t\t: this(key, m_keysizes.Max())\n\t\t{\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Encrypt outgoing message\n\t\t/// </summary>\n\t\tpublic bool Encrypt(NetOutgoingMessage msg)\n\t\t{\n\t\t\ttry\n\t\t\t{\n\t\t\t\t// nested usings are fun!\n\t\t\t\tusing (DESCryptoServiceProvider desCryptoServiceProvider = new DESCryptoServiceProvider { KeySize = m_bitSize, Mode = CipherMode.CBC })\n\t\t\t\t{\n\t\t\t\t\tusing (ICryptoTransform cryptoTransform = desCryptoServiceProvider.CreateEncryptor(m_key, m_iv))\n\t\t\t\t\t{\n\t\t\t\t\t\tusing (MemoryStream memoryStream = new MemoryStream())\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tusing (CryptoStream cryptoStream = new CryptoStream(memoryStream, cryptoTransform,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t CryptoStreamMode.Write))\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tcryptoStream.Write(msg.m_data, 0, msg.m_data.Length);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tmsg.m_data = memoryStream.ToArray();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t}\n\t\t\tcatch\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Decrypt incoming message\n\t\t/// </summary>\n\t\tpublic bool Decrypt(NetIncomingMessage msg)\n\t\t{\n\t\t\ttry\n\t\t\t{\n\t\t\t\t// nested usings are fun!\n\t\t\t\tusing (DESCryptoServiceProvider desCryptoServiceProvider = new DESCryptoServiceProvider { KeySize = m_bitSize, Mode = CipherMode.CBC })\n\t\t\t\t{\n\t\t\t\t\tusing (ICryptoTransform cryptoTransform = desCryptoServiceProvider.CreateDecryptor(m_key, m_iv))\n\t\t\t\t\t{\n\t\t\t\t\t\tusing (MemoryStream memoryStream = new MemoryStream())\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tusing (CryptoStream cryptoStream = new CryptoStream(memoryStream, cryptoTransform,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t CryptoStreamMode.Write))\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tcryptoStream.Write(msg.m_data, 0, msg.m_data.Length);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tmsg.m_data = memoryStream.ToArray();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t}\n\t\t\tcatch\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t}\n}"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Lidgren/Encryption/NetRC2Encryption.cs",
    "content": "using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Security.Cryptography;\nusing System.Text;\n\nnamespace Lidgren.Network\n{\n\t/// <summary>\n\t/// RC2 encryption\n\t/// </summary>\n\tpublic class NetRC2Encryption : INetEncryption\n\t{\n\t\tprivate readonly byte[] m_key;\n\t\tprivate readonly byte[] m_iv;\n\t\tprivate readonly int m_bitSize;\n\t\tprivate static readonly List<int> m_keysizes;\n\t\tprivate static readonly List<int> m_blocksizes;\n\n\t\tstatic NetRC2Encryption()\n\t\t{\n\n\t\t\tRC2CryptoServiceProvider rc2 = new RC2CryptoServiceProvider();\n\t\t\tList<int> temp = new List<int>();\n\t\t\tforeach (KeySizes keysize in rc2.LegalKeySizes)\n\t\t\t{\n\t\t\t\tfor (int i = keysize.MinSize; i <= keysize.MaxSize; i += keysize.SkipSize)\n\t\t\t\t{\n\t\t\t\t\tif (!temp.Contains(i))\n\t\t\t\t\t\ttemp.Add(i);\n\t\t\t\t\tif (i == keysize.MaxSize)\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tm_keysizes = temp;\n\t\t\ttemp = new List<int>();\n\t\t\tforeach (KeySizes keysize in rc2.LegalBlockSizes)\n\t\t\t{\n\t\t\t\tfor (int i = keysize.MinSize; i <= keysize.MaxSize; i += keysize.SkipSize)\n\t\t\t\t{\n\n\t\t\t\t\tif (!temp.Contains(i))\n\t\t\t\t\t\ttemp.Add(i);\n\t\t\t\t\tif (i == keysize.MaxSize)\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tm_blocksizes = temp;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// NetRC2Encryption constructor\n\t\t/// </summary>\n\t\tpublic NetRC2Encryption(byte[] key, byte[] iv)\n\t\t{\n\t\t\tif (!m_keysizes.Contains(key.Length * 8))\n\t\t\t{\n\t\t\t\tstring lengths = m_keysizes.Aggregate(\"\", (current, i) => current + string.Format(\"{0}, \", i));\n\t\t\t\tlengths = lengths.Remove(lengths.Length - 3);\n\t\t\t\tthrow new NetException(string.Format(\"Not a valid key size. (Valid values are: {0})\", lengths));\n\t\t\t}\n\n\t\t\tif (!m_blocksizes.Contains(iv.Length * 8))\n\t\t\t{\n\t\t\t\tstring lengths = m_blocksizes.Aggregate(\"\", (current, i) => current + string.Format(\"{0}, \", i));\n\t\t\t\tlengths = lengths.Remove(lengths.Length - 3);\n\t\t\t\tthrow new NetException(string.Format(\"Not a valid iv size. (Valid values are: {0})\", lengths));\n\t\t\t}\n\t\t\tm_key = key;\n\t\t\tm_iv = iv;\n\t\t\tm_bitSize = m_key.Length * 8;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// NetRC2Encryption constructor\n\t\t/// </summary>\n\t\tpublic NetRC2Encryption(string key, int bitsize)\n\t\t{\n\t\t\tif (!m_keysizes.Contains(bitsize))\n\t\t\t{\n\t\t\t\tstring lengths = m_keysizes.Aggregate(\"\", (current, i) => current + string.Format(\"{0}, \", i));\n\t\t\t\tlengths = lengths.Remove(lengths.Length - 3);\n\t\t\t\tthrow new NetException(string.Format(\"Not a valid key size. (Valid values are: {0})\", lengths));\n\t\t\t}\n\t\t\tbyte[] entropy = Encoding.UTF32.GetBytes(key);\n\t\t\t// I know hardcoding salts is bad, but in this case I think it is acceptable.\n\t\t\tHMACSHA512 hmacsha512 = new HMACSHA512(Convert.FromBase64String(\"i88NEiez3c50bHqr3YGasDc4p8jRrxJAaiRiqixpvp4XNAStP5YNoC2fXnWkURtkha6M8yY901Gj07IRVIRyGL==\"));\n\t\t\thmacsha512.Initialize();\n\t\t\tfor (int i = 0; i < 1000; i++)\n\t\t\t{\n\t\t\t\tentropy = hmacsha512.ComputeHash(entropy);\n\t\t\t}\n\t\t\tint keylen = bitsize / 8;\n\t\t\tm_key = new byte[keylen];\n\t\t\tBuffer.BlockCopy(entropy, 0, m_key, 0, keylen);\n\t\t\tm_iv = new byte[m_blocksizes[0] / 8];\n\n\t\t\tBuffer.BlockCopy(entropy, entropy.Length - m_iv.Length - 1, m_iv, 0, m_iv.Length);\n\t\t\tm_bitSize = bitsize;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// NetRC2Encryption constructor\n\t\t/// </summary>\n\t\t/// <param name=\"key\"></param>\n\t\tpublic NetRC2Encryption(string key)\n\t\t\t: this(key, m_keysizes.Max())\n\t\t{\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Encrypt outgoing message\n\t\t/// </summary>\n\t\tpublic bool Encrypt(NetOutgoingMessage msg)\n\t\t{\n\t\t\ttry\n\t\t\t{\n\t\t\t\t// nested usings are fun!\n\t\t\t\tusing (RC2CryptoServiceProvider rc2CryptoServiceProvider = new RC2CryptoServiceProvider { KeySize = m_bitSize, Mode = CipherMode.CBC })\n\t\t\t\t{\n\t\t\t\t\tusing (ICryptoTransform cryptoTransform = rc2CryptoServiceProvider.CreateEncryptor(m_key, m_iv))\n\t\t\t\t\t{\n\t\t\t\t\t\tusing (MemoryStream memoryStream = new MemoryStream())\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tusing (CryptoStream cryptoStream = new CryptoStream(memoryStream, cryptoTransform,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t CryptoStreamMode.Write))\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tcryptoStream.Write(msg.m_data, 0, msg.m_data.Length);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tmsg.m_data = memoryStream.ToArray();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t}\n\t\t\tcatch\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Decrypt incoming message\n\t\t/// </summary>\n\t\tpublic bool Decrypt(NetIncomingMessage msg)\n\t\t{\n\t\t\ttry\n\t\t\t{\n\t\t\t\t// nested usings are fun!\n\t\t\t\tusing (RC2CryptoServiceProvider rc2CryptoServiceProvider = new RC2CryptoServiceProvider { KeySize = m_bitSize, Mode = CipherMode.CBC })\n\t\t\t\t{\n\t\t\t\t\tusing (ICryptoTransform cryptoTransform = rc2CryptoServiceProvider.CreateDecryptor(m_key, m_iv))\n\t\t\t\t\t{\n\t\t\t\t\t\tusing (MemoryStream memoryStream = new MemoryStream())\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tusing (CryptoStream cryptoStream = new CryptoStream(memoryStream, cryptoTransform,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t CryptoStreamMode.Write))\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tcryptoStream.Write(msg.m_data, 0, msg.m_data.Length);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tmsg.m_data = memoryStream.ToArray();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t}\n\t\t\tcatch\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t}\n}"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Lidgren/Encryption/NetTripleDESEncryption.cs",
    "content": "using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Security.Cryptography;\nusing System.Text;\n\nnamespace Lidgren.Network\n{\n\t/// <summary>\n\t/// Triple DES encryption\n\t/// </summary>\n\tpublic class NetTripleDESEncryption : INetEncryption\n\t{\n\t\tprivate readonly byte[] m_key;\n\t\tprivate readonly byte[] m_iv;\n\t\tprivate readonly int m_bitSize;\n\t\tprivate static readonly List<int> m_keysizes;\n\t\tprivate static readonly List<int> m_blocksizes;\n\n\t\tstatic NetTripleDESEncryption()\n\t\t{\n\n\t\t\tTripleDESCryptoServiceProvider tripleDES = new TripleDESCryptoServiceProvider();\n\t\t\tList<int> temp = new List<int>();\n\t\t\tforeach (KeySizes keysize in tripleDES.LegalKeySizes)\n\t\t\t{\n\t\t\t\tfor (int i = keysize.MinSize; i <= keysize.MaxSize; i += keysize.SkipSize)\n\t\t\t\t{\n\t\t\t\t\tif (!temp.Contains(i))\n\t\t\t\t\t\ttemp.Add(i);\n\t\t\t\t\tif (i == keysize.MaxSize)\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tm_keysizes = temp;\n\t\t\ttemp = new List<int>();\n\t\t\tforeach (KeySizes keysize in tripleDES.LegalBlockSizes)\n\t\t\t{\n\t\t\t\tfor (int i = keysize.MinSize; i <= keysize.MaxSize; i += keysize.SkipSize)\n\t\t\t\t{\n\n\t\t\t\t\tif (!temp.Contains(i))\n\t\t\t\t\t\ttemp.Add(i);\n\t\t\t\t\tif (i == keysize.MaxSize)\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tm_blocksizes = temp;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// NetTriplsDESEncryption constructor\n\t\t/// </summary>\n\t\tpublic NetTripleDESEncryption(byte[] key, byte[] iv)\n\t\t{\n\t\t\tif (!m_keysizes.Contains(key.Length * 8))\n\t\t\t{\n\t\t\t\tstring lengths = m_keysizes.Aggregate(\"\", (current, i) => current + string.Format(\"{0}, \", i));\n\t\t\t\tlengths = lengths.Remove(lengths.Length - 3);\n\t\t\t\tthrow new NetException(string.Format(\"Not a valid key size. (Valid values are: {0})\", lengths));\n\t\t\t}\n\n\t\t\tif (!m_blocksizes.Contains(iv.Length * 8))\n\t\t\t{\n\t\t\t\tstring lengths = m_blocksizes.Aggregate(\"\", (current, i) => current + string.Format(\"{0}, \", i));\n\t\t\t\tlengths = lengths.Remove(lengths.Length - 3);\n\t\t\t\tthrow new NetException(string.Format(\"Not a valid iv size. (Valid values are: {0})\", lengths));\n\t\t\t}\n\t\t\tm_key = key;\n\t\t\tm_iv = iv;\n\t\t\tm_bitSize = m_key.Length * 8;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// NetTriplsDESEncryption constructor\n\t\t/// </summary>\n\t\tpublic NetTripleDESEncryption(string key, int bitsize)\n\t\t{\n\t\t\tif (!m_keysizes.Contains(bitsize))\n\t\t\t{\n\t\t\t\tstring lengths = m_keysizes.Aggregate(\"\", (current, i) => current + string.Format(\"{0}, \", i));\n\t\t\t\tlengths = lengths.Remove(lengths.Length - 3);\n\t\t\t\tthrow new NetException(string.Format(\"Not a valid key size. (Valid values are: {0})\", lengths));\n\t\t\t}\n\t\t\tbyte[] entropy = Encoding.UTF32.GetBytes(key);\n\t\t\t// I know hardcoding salts is bad, but in this case I think it is acceptable.\n\t\t\tHMACSHA512 hmacsha512 = new HMACSHA512(Convert.FromBase64String(\"i88NEiez3c50bHqr3YGasDc4p8jRrxJAaiRiqixpvp4XNAStP5YNoC2fXnWkURtkha6M8yY901Gj07IRVIRyGL==\"));\n\t\t\thmacsha512.Initialize();\n\t\t\tfor (int i = 0; i < 1000; i++)\n\t\t\t{\n\t\t\t\tentropy = hmacsha512.ComputeHash(entropy);\n\t\t\t}\n\t\t\tint keylen = bitsize / 8;\n\t\t\tm_key = new byte[keylen];\n\t\t\tBuffer.BlockCopy(entropy, 0, m_key, 0, keylen);\n\t\t\tm_iv = new byte[m_blocksizes[0] / 8];\n\n\t\t\tBuffer.BlockCopy(entropy, entropy.Length - m_iv.Length - 1, m_iv, 0, m_iv.Length);\n\t\t\tm_bitSize = bitsize;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// NetTriplsDESEncryption constructor\n\t\t/// </summary>\n\t\tpublic NetTripleDESEncryption(string key)\n\t\t\t: this(key, m_keysizes.Max())\n\t\t{\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Encrypt outgoing message\n\t\t/// </summary>\n\t\tpublic bool Encrypt(NetOutgoingMessage msg)\n\t\t{\n\t\t\ttry\n\t\t\t{\n\t\t\t\t// nested usings are fun!\n\t\t\t\tusing (TripleDESCryptoServiceProvider tripleDESCryptoServiceProvider = new TripleDESCryptoServiceProvider { KeySize = m_bitSize, Mode = CipherMode.CBC })\n\t\t\t\t{\n\t\t\t\t\tusing (ICryptoTransform cryptoTransform = tripleDESCryptoServiceProvider.CreateEncryptor(m_key, m_iv))\n\t\t\t\t\t{\n\t\t\t\t\t\tusing (MemoryStream memoryStream = new MemoryStream())\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tusing (CryptoStream cryptoStream = new CryptoStream(memoryStream, cryptoTransform,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t CryptoStreamMode.Write))\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tcryptoStream.Write(msg.m_data, 0, msg.m_data.Length);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tmsg.m_data = memoryStream.ToArray();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t}\n\t\t\tcatch\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Decrypt incoming message\n\t\t/// </summary>\n\t\tpublic bool Decrypt(NetIncomingMessage msg)\n\t\t{\n\t\t\ttry\n\t\t\t{\n\t\t\t\t// nested usings are fun!\n\t\t\t\tusing (TripleDESCryptoServiceProvider tripleDESCryptoServiceProvider = new TripleDESCryptoServiceProvider { KeySize = m_bitSize, Mode = CipherMode.CBC })\n\t\t\t\t{\n\t\t\t\t\tusing (ICryptoTransform cryptoTransform = tripleDESCryptoServiceProvider.CreateDecryptor(m_key, m_iv))\n\t\t\t\t\t{\n\t\t\t\t\t\tusing (MemoryStream memoryStream = new MemoryStream())\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tusing (CryptoStream cryptoStream = new CryptoStream(memoryStream, cryptoTransform,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t CryptoStreamMode.Write))\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tcryptoStream.Write(msg.m_data, 0, msg.m_data.Length);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tmsg.m_data = memoryStream.ToArray();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t}\n\t\t\tcatch\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t}\n}"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Lidgren/Encryption/NetXorEncryption.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Text;\n\nnamespace Lidgren.Network\n{\n\t/// <summary>\n\t/// Example class; not very good encryption\n\t/// </summary>\n\tpublic class NetXorEncryption : INetEncryption\n\t{\n\t\tprivate byte[] m_key;\n\n\t\t/// <summary>\n\t\t/// NetXorEncryption constructor\n\t\t/// </summary>\n\t\tpublic NetXorEncryption(byte[] key)\n\t\t{\n\t\t\tm_key = key;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// NetXorEncryption constructor\n\t\t/// </summary>\n\t\tpublic NetXorEncryption(string key)\n\t\t{\n\t\t\tm_key = Encoding.ASCII.GetBytes(key);\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Encrypt an outgoing message\n\t\t/// </summary>\n\t\tpublic bool Encrypt(NetOutgoingMessage msg)\n\t\t{\n\t\t\tint numBytes = msg.LengthBytes;\n\t\t\tfor (int i = 0; i < numBytes; i++)\n\t\t\t{\n\t\t\t\tint offset = i % m_key.Length;\n\t\t\t\tmsg.m_data[i] = (byte)(msg.m_data[i] ^ m_key[offset]);\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Decrypt an incoming message\n\t\t/// </summary>\n\t\tpublic bool Decrypt(NetIncomingMessage msg)\n\t\t{\n\t\t\tint numBytes = msg.LengthBytes;\n\t\t\tfor (int i = 0; i < numBytes; i++)\n\t\t\t{\n\t\t\t\tint offset = i % m_key.Length;\n\t\t\t\tmsg.m_data[i] = (byte)(msg.m_data[i] ^ m_key[offset]);\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Lidgren/Encryption/NetXteaEncryption.cs",
    "content": "﻿/* Copyright (c) 2010 Michael Lidgren\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software\nand associated documentation files (the \"Software\"), to deal in the Software without\nrestriction, including without limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to permit persons to whom\nthe Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or\nsubstantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\nINCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR\nPURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\nUSE OR OTHER DEALINGS IN THE SOFTWARE.\n*/\nusing System;\nusing System.Security.Cryptography;\nusing System.Text;\nusing System.Security;\n\nnamespace Lidgren.Network\n{\n\t/// <summary>\n\t/// Methods to encrypt and decrypt data using the XTEA algorithm\n\t/// </summary>\n\tpublic sealed class NetXtea : NetBlockEncryptionBase\n\t{\n\t\tprivate const int c_blockSize = 8;\n\t\tprivate const int c_keySize = 16;\n\t\tprivate const int c_delta = unchecked((int)0x9E3779B9);\n\n\t\tprivate readonly int m_numRounds;\n\t\tprivate readonly uint[] m_sum0;\n\t\tprivate readonly uint[] m_sum1;\n\n\t\t/// <summary>\n\t\t/// Gets the block size for this cipher\n\t\t/// </summary>\n\t\tpublic override int BlockSize { get { return c_blockSize; } }\n\n\t\t/// <summary>\n\t\t/// 16 byte key\n\t\t/// </summary>\n\t\tpublic NetXtea(byte[] key, int rounds)\n\t\t{\n\t\t\tif (key.Length < c_keySize)\n\t\t\t\tthrow new NetException(\"Key too short!\");\n\n\t\t\tm_numRounds = rounds;\n\t\t\tm_sum0 = new uint[m_numRounds];\n\t\t\tm_sum1 = new uint[m_numRounds];\n\t\t\tuint[] tmp = new uint[8];\n\n\t\t\tint num2;\n\t\t\tint index = num2 = 0;\n\t\t\twhile (index < 4)\n\t\t\t{\n\t\t\t\ttmp[index] = BitConverter.ToUInt32(key, num2);\n\t\t\t\tindex++;\n\t\t\t\tnum2 += 4;\n\t\t\t}\n\t\t\tfor (index = num2 = 0; index < 32; index++)\n\t\t\t{\n\t\t\t\tm_sum0[index] = ((uint)num2) + tmp[num2 & 3];\n\t\t\t\tnum2 += -1640531527;\n\t\t\t\tm_sum1[index] = ((uint)num2) + tmp[(num2 >> 11) & 3];\n\t\t\t}\n\t\t}\n\n\t\t/// <summary>\n\t\t/// 16 byte key\n\t\t/// </summary>\n\t\tpublic NetXtea(byte[] key)\n\t\t\t: this(key, 32)\n\t\t{\n\t\t}\n\n\t\t/// <summary>\n\t\t/// String to hash for key\n\t\t/// </summary>\n\t\tpublic NetXtea(string key)\n\t\t\t: this(SHA1.Create().ComputeHash(Encoding.ASCII.GetBytes(key)), 32)\n\t\t{\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Encrypts a block of bytes\n\t\t/// </summary>\n\t\tprotected override void EncryptBlock(byte[] source, int sourceOffset, byte[] destination)\n\t\t{\n\t\t\tuint v0 = BytesToUInt(source, sourceOffset);\n\t\t\tuint v1 = BytesToUInt(source, sourceOffset + 4);\n\n\t\t\tfor (int i = 0; i != m_numRounds; i++)\n\t\t\t{\n\t\t\t\tv0 += (((v1 << 4) ^ (v1 >> 5)) + v1) ^ m_sum0[i];\n\t\t\t\tv1 += (((v0 << 4) ^ (v0 >> 5)) + v0) ^ m_sum1[i];\n\t\t\t}\n\n\t\t\tUIntToBytes(v0, destination, 0);\n\t\t\tUIntToBytes(v1, destination, 0 + 4);\n\n\t\t\treturn;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Decrypts a block of bytes\n\t\t/// </summary>\n\t\tprotected override void DecryptBlock(byte[] source, int sourceOffset, byte[] destination)\n\t\t{\n\t\t\t// Pack bytes into integers\n\t\t\tuint v0 = BytesToUInt(source, sourceOffset);\n\t\t\tuint v1 = BytesToUInt(source, sourceOffset + 4);\n\n\t\t\tfor (int i = m_numRounds - 1; i >= 0; i--)\n\t\t\t{\n\t\t\t\tv1 -= (((v0 << 4) ^ (v0 >> 5)) + v0) ^ m_sum1[i];\n\t\t\t\tv0 -= (((v1 << 4) ^ (v1 >> 5)) + v1) ^ m_sum0[i];\n\t\t\t}\n\n\t\t\tUIntToBytes(v0, destination, 0);\n\t\t\tUIntToBytes(v1, destination, 0 + 4);\n\n\t\t\treturn;\n\t\t}\n\n\t\tprivate static uint BytesToUInt(byte[] bytes, int offset)\n\t\t{\n\t\t\tuint retval = (uint)(bytes[offset] << 24);\n\t\t\tretval |= (uint)(bytes[++offset] << 16);\n\t\t\tretval |= (uint)(bytes[++offset] << 8);\n\t\t\treturn (retval | bytes[++offset]);\n\t\t}\n\n\t\tprivate static void UIntToBytes(uint value, byte[] destination, int destinationOffset)\n\t\t{\n\t\t\tdestination[destinationOffset++] = (byte)(value >> 24);\n\t\t\tdestination[destinationOffset++] = (byte)(value >> 16);\n\t\t\tdestination[destinationOffset++] = (byte)(value >> 8);\n\t\t\tdestination[destinationOffset++] = (byte)value;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Lidgren/NetBigInteger.cs",
    "content": "﻿using System;\nusing System.Text;\nusing System.Collections;\nusing System.Diagnostics;\nusing System.Globalization;\n\nnamespace Lidgren.Network\n{\n\t/// <summary>\n\t/// Big integer class based on BouncyCastle (http://www.bouncycastle.org) big integer code\n\t/// </summary>\n\tinternal class NetBigInteger\n\t{\n\t\tprivate const long IMASK = 0xffffffffL;\n\t\tprivate static readonly ulong UIMASK = (ulong)IMASK;\n\n\t\tprivate static readonly int[] ZeroMagnitude = new int[0];\n\t\tprivate static readonly byte[] ZeroEncoding = new byte[0];\n\n\t\tpublic static readonly NetBigInteger Zero = new NetBigInteger(0, ZeroMagnitude, false);\n\t\tpublic static readonly NetBigInteger One = createUValueOf(1);\n\t\tpublic static readonly NetBigInteger Two = createUValueOf(2);\n\t\tpublic static readonly NetBigInteger Three = createUValueOf(3);\n\t\tpublic static readonly NetBigInteger Ten = createUValueOf(10);\n\n\t\tprivate static readonly int chunk2 = 1;\n\t\tprivate static readonly NetBigInteger radix2 = ValueOf(2);\n\t\tprivate static readonly NetBigInteger radix2E = radix2.Pow(chunk2);\n\n\t\tprivate static readonly int chunk10 = 19;\n\t\tprivate static readonly NetBigInteger radix10 = ValueOf(10);\n\t\tprivate static readonly NetBigInteger radix10E = radix10.Pow(chunk10);\n\n\t\tprivate static readonly int chunk16 = 16;\n\t\tprivate static readonly NetBigInteger radix16 = ValueOf(16);\n\t\tprivate static readonly NetBigInteger radix16E = radix16.Pow(chunk16);\n\n\t\tprivate const int BitsPerByte = 8;\n\t\tprivate const int BitsPerInt = 32;\n\t\tprivate const int BytesPerInt = 4;\n\n\t\tprivate int m_sign; // -1 means -ve; +1 means +ve; 0 means 0;\n\t\tprivate int[] m_magnitude; // array of ints with [0] being the most significant\n\t\tprivate int m_numBits = -1; // cache BitCount() value\n\t\tprivate int m_numBitLength = -1; // cache calcBitLength() value\n\t\tprivate long m_quote = -1L; // -m^(-1) mod b, b = 2^32 (see Montgomery mult.)\n\n\t\tprivate static int GetByteLength(\n\t\t\tint nBits)\n\t\t{\n\t\t\treturn (nBits + BitsPerByte - 1) / BitsPerByte;\n\t\t}\n\n\t\tprivate NetBigInteger()\n\t\t{\n\t\t}\n\n\t\tprivate NetBigInteger(\n\t\t\tint signum,\n\t\t\tint[] mag,\n\t\t\tbool checkMag)\n\t\t{\n\t\t\tif (checkMag)\n\t\t\t{\n\t\t\t\tint i = 0;\n\t\t\t\twhile (i < mag.Length && mag[i] == 0)\n\t\t\t\t{\n\t\t\t\t\t++i;\n\t\t\t\t}\n\n\t\t\t\tif (i == mag.Length)\n\t\t\t\t{\n\t\t\t\t\t//\t\t\t\t\tsign = 0;\n\t\t\t\t\tm_magnitude = ZeroMagnitude;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tm_sign = signum;\n\n\t\t\t\t\tif (i == 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tm_magnitude = mag;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\t// strip leading 0 words\n\t\t\t\t\t\tm_magnitude = new int[mag.Length - i];\n\t\t\t\t\t\tArray.Copy(mag, i, m_magnitude, 0, m_magnitude.Length);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tm_sign = signum;\n\t\t\t\tm_magnitude = mag;\n\t\t\t}\n\t\t}\n\n\t\tpublic NetBigInteger(\n\t\t\tstring value)\n\t\t\t: this(value, 10)\n\t\t{\n\t\t}\n\n\t\tpublic NetBigInteger(\n\t\t\tstring str,\n\t\t\tint radix)\n\t\t{\n\t\t\tif (str.Length == 0)\n\t\t\t\tthrow new FormatException(\"Zero length BigInteger\");\n\n\t\t\tNumberStyles style;\n\t\t\tint chunk;\n\t\t\tNetBigInteger r;\n\t\t\tNetBigInteger rE;\n\n\t\t\tswitch (radix)\n\t\t\t{\n\t\t\t\tcase 2:\n\t\t\t\t\t// Is there anyway to restrict to binary digits?\n\t\t\t\t\tstyle = NumberStyles.Integer;\n\t\t\t\t\tchunk = chunk2;\n\t\t\t\t\tr = radix2;\n\t\t\t\t\trE = radix2E;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 10:\n\t\t\t\t\t// This style seems to handle spaces and minus sign already (our processing redundant?)\n\t\t\t\t\tstyle = NumberStyles.Integer;\n\t\t\t\t\tchunk = chunk10;\n\t\t\t\t\tr = radix10;\n\t\t\t\t\trE = radix10E;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 16:\n\t\t\t\t\t// TODO Should this be HexNumber?\n\t\t\t\t\tstyle = NumberStyles.AllowHexSpecifier;\n\t\t\t\t\tchunk = chunk16;\n\t\t\t\t\tr = radix16;\n\t\t\t\t\trE = radix16E;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new FormatException(\"Only bases 2, 10, or 16 allowed\");\n\t\t\t}\n\n\n\t\t\tint index = 0;\n\t\t\tm_sign = 1;\n\n\t\t\tif (str[0] == '-')\n\t\t\t{\n\t\t\t\tif (str.Length == 1)\n\t\t\t\t\tthrow new FormatException(\"Zero length BigInteger\");\n\n\t\t\t\tm_sign = -1;\n\t\t\t\tindex = 1;\n\t\t\t}\n\n\t\t\t// strip leading zeros from the string str\n\t\t\twhile (index < str.Length && Int32.Parse(str[index].ToString(), style) == 0)\n\t\t\t{\n\t\t\t\tindex++;\n\t\t\t}\n\n\t\t\tif (index >= str.Length)\n\t\t\t{\n\t\t\t\t// zero value - we're done\n\t\t\t\tm_sign = 0;\n\t\t\t\tm_magnitude = ZeroMagnitude;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t//////\n\t\t\t// could we work out the max number of ints required to store\n\t\t\t// str.Length digits in the given base, then allocate that\n\t\t\t// storage in one hit?, then Generate the magnitude in one hit too?\n\t\t\t//////\n\n\t\t\tNetBigInteger b = Zero;\n\n\n\t\t\tint next = index + chunk;\n\n\t\t\tif (next <= str.Length)\n\t\t\t{\n\t\t\t\tdo\n\t\t\t\t{\n\t\t\t\t\tstring s = str.Substring(index, chunk);\n\t\t\t\t\tulong i = ulong.Parse(s, style);\n\t\t\t\t\tNetBigInteger bi = createUValueOf(i);\n\n\t\t\t\t\tswitch (radix)\n\t\t\t\t\t{\n\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\tif (i > 1)\n\t\t\t\t\t\t\t\tthrow new FormatException(\"Bad character in radix 2 string: \" + s);\n\n\t\t\t\t\t\t\tb = b.ShiftLeft(1);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 16:\n\t\t\t\t\t\t\tb = b.ShiftLeft(64);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tb = b.Multiply(rE);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tb = b.Add(bi);\n\n\t\t\t\t\tindex = next;\n\t\t\t\t\tnext += chunk;\n\t\t\t\t}\n\t\t\t\twhile (next <= str.Length);\n\t\t\t}\n\n\t\t\tif (index < str.Length)\n\t\t\t{\n\t\t\t\tstring s = str.Substring(index);\n\t\t\t\tulong i = ulong.Parse(s, style);\n\t\t\t\tNetBigInteger bi = createUValueOf(i);\n\n\t\t\t\tif (b.m_sign > 0)\n\t\t\t\t{\n\t\t\t\t\tif (radix == 2)\n\t\t\t\t\t{\n\t\t\t\t\t\t// NB: Can't reach here since we are parsing one char at a time\n\t\t\t\t\t\tDebug.Assert(false);\n\t\t\t\t\t}\n\t\t\t\t\telse if (radix == 16)\n\t\t\t\t\t{\n\t\t\t\t\t\tb = b.ShiftLeft(s.Length << 2);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tb = b.Multiply(r.Pow(s.Length));\n\t\t\t\t\t}\n\n\t\t\t\t\tb = b.Add(bi);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tb = bi;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Note: This is the previous (slower) algorithm\n\t\t\t//\t\t\twhile (index < value.Length)\n\t\t\t//            {\n\t\t\t//\t\t\t\tchar c = value[index];\n\t\t\t//\t\t\t\tstring s = c.ToString();\n\t\t\t//\t\t\t\tint i = Int32.Parse(s, style);\n\t\t\t//\n\t\t\t//                b = b.Multiply(r).Add(ValueOf(i));\n\t\t\t//                index++;\n\t\t\t//            }\n\n\t\t\tm_magnitude = b.m_magnitude;\n\t\t}\n\n\t\tpublic NetBigInteger(\n\t\t\tbyte[] bytes)\n\t\t\t: this(bytes, 0, bytes.Length)\n\t\t{\n\t\t}\n\n\t\tpublic NetBigInteger(\n\t\t\tbyte[] bytes,\n\t\t\tint offset,\n\t\t\tint length)\n\t\t{\n\t\t\tif (length == 0)\n\t\t\t\tthrow new FormatException(\"Zero length BigInteger\");\n\t\t\tif ((sbyte)bytes[offset] < 0)\n\t\t\t{\n\t\t\t\tm_sign = -1;\n\n\t\t\t\tint end = offset + length;\n\n\t\t\t\tint iBval;\n\t\t\t\t// strip leading sign bytes\n\t\t\t\tfor (iBval = offset; iBval < end && ((sbyte)bytes[iBval] == -1); iBval++)\n\t\t\t\t{\n\t\t\t\t}\n\n\t\t\t\tif (iBval >= end)\n\t\t\t\t{\n\t\t\t\t\tm_magnitude = One.m_magnitude;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tint numBytes = end - iBval;\n\t\t\t\t\tbyte[] inverse = new byte[numBytes];\n\n\t\t\t\t\tint index = 0;\n\t\t\t\t\twhile (index < numBytes)\n\t\t\t\t\t{\n\t\t\t\t\t\tinverse[index++] = (byte)~bytes[iBval++];\n\t\t\t\t\t}\n\n\t\t\t\t\tDebug.Assert(iBval == end);\n\n\t\t\t\t\twhile (inverse[--index] == byte.MaxValue)\n\t\t\t\t\t{\n\t\t\t\t\t\tinverse[index] = byte.MinValue;\n\t\t\t\t\t}\n\n\t\t\t\t\tinverse[index]++;\n\n\t\t\t\t\tm_magnitude = MakeMagnitude(inverse, 0, inverse.Length);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t// strip leading zero bytes and return magnitude bytes\n\t\t\t\tm_magnitude = MakeMagnitude(bytes, offset, length);\n\t\t\t\tm_sign = m_magnitude.Length > 0 ? 1 : 0;\n\t\t\t}\n\t\t}\n\n\t\tprivate static int[] MakeMagnitude(\n\t\t\tbyte[] bytes,\n\t\t\tint offset,\n\t\t\tint length)\n\t\t{\n\t\t\tint end = offset + length;\n\n\t\t\t// strip leading zeros\n\t\t\tint firstSignificant;\n\t\t\tfor (firstSignificant = offset; firstSignificant < end\n\t\t\t\t&& bytes[firstSignificant] == 0; firstSignificant++)\n\t\t\t{\n\t\t\t}\n\n\t\t\tif (firstSignificant >= end)\n\t\t\t{\n\t\t\t\treturn ZeroMagnitude;\n\t\t\t}\n\n\t\t\tint nInts = (end - firstSignificant + 3) / BytesPerInt;\n\t\t\tint bCount = (end - firstSignificant) % BytesPerInt;\n\t\t\tif (bCount == 0)\n\t\t\t{\n\t\t\t\tbCount = BytesPerInt;\n\t\t\t}\n\n\t\t\tif (nInts < 1)\n\t\t\t{\n\t\t\t\treturn ZeroMagnitude;\n\t\t\t}\n\n\t\t\tint[] mag = new int[nInts];\n\n\t\t\tint v = 0;\n\t\t\tint magnitudeIndex = 0;\n\t\t\tfor (int i = firstSignificant; i < end; ++i)\n\t\t\t{\n\t\t\t\tv <<= 8;\n\t\t\t\tv |= bytes[i] & 0xff;\n\t\t\t\tbCount--;\n\t\t\t\tif (bCount <= 0)\n\t\t\t\t{\n\t\t\t\t\tmag[magnitudeIndex] = v;\n\t\t\t\t\tmagnitudeIndex++;\n\t\t\t\t\tbCount = BytesPerInt;\n\t\t\t\t\tv = 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (magnitudeIndex < mag.Length)\n\t\t\t{\n\t\t\t\tmag[magnitudeIndex] = v;\n\t\t\t}\n\n\t\t\treturn mag;\n\t\t}\n\n\t\tpublic NetBigInteger(\n\t\t\tint sign,\n\t\t\tbyte[] bytes)\n\t\t\t: this(sign, bytes, 0, bytes.Length)\n\t\t{\n\t\t}\n\n\t\tpublic NetBigInteger(\n\t\t\tint sign,\n\t\t\tbyte[] bytes,\n\t\t\tint offset,\n\t\t\tint length)\n\t\t{\n\t\t\tif (sign < -1 || sign > 1)\n\t\t\t\tthrow new FormatException(\"Invalid sign value\");\n\n\t\t\tif (sign == 0)\n\t\t\t{\n\t\t\t\t//sign = 0;\n\t\t\t\tm_magnitude = ZeroMagnitude;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t// copy bytes\n\t\t\t\tm_magnitude = MakeMagnitude(bytes, offset, length);\n\t\t\t\tm_sign = m_magnitude.Length < 1 ? 0 : sign;\n\t\t\t}\n\t\t}\n\n\t\tpublic NetBigInteger Abs()\n\t\t{\n\t\t\treturn m_sign >= 0 ? this : Negate();\n\t\t}\n\n\t\t// return a = a + b - b preserved.\n\t\tprivate static int[] AddMagnitudes(\n\t\t\tint[] a,\n\t\t\tint[] b)\n\t\t{\n\t\t\tint tI = a.Length - 1;\n\t\t\tint vI = b.Length - 1;\n\t\t\tlong m = 0;\n\n\t\t\twhile (vI >= 0)\n\t\t\t{\n\t\t\t\tm += ((long)(uint)a[tI] + (long)(uint)b[vI--]);\n\t\t\t\ta[tI--] = (int)m;\n\t\t\t\tm = (long)((ulong)m >> 32);\n\t\t\t}\n\n\t\t\tif (m != 0)\n\t\t\t{\n\t\t\t\twhile (tI >= 0 && ++a[tI--] == 0)\n\t\t\t\t{\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn a;\n\t\t}\n\n\t\tpublic NetBigInteger Add(\n\t\t\tNetBigInteger value)\n\t\t{\n\t\t\tif (m_sign == 0)\n\t\t\t\treturn value;\n\n\t\t\tif (m_sign != value.m_sign)\n\t\t\t{\n\t\t\t\tif (value.m_sign == 0)\n\t\t\t\t\treturn this;\n\n\t\t\t\tif (value.m_sign < 0)\n\t\t\t\t\treturn Subtract(value.Negate());\n\n\t\t\t\treturn value.Subtract(Negate());\n\t\t\t}\n\n\t\t\treturn AddToMagnitude(value.m_magnitude);\n\t\t}\n\n\t\tprivate NetBigInteger AddToMagnitude(\n\t\t\tint[] magToAdd)\n\t\t{\n\t\t\tint[] big, small;\n\t\t\tif (m_magnitude.Length < magToAdd.Length)\n\t\t\t{\n\t\t\t\tbig = magToAdd;\n\t\t\t\tsmall = m_magnitude;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tbig = m_magnitude;\n\t\t\t\tsmall = magToAdd;\n\t\t\t}\n\n\t\t\t// Conservatively avoid over-allocation when no overflow possible\n\t\t\tuint limit = uint.MaxValue;\n\t\t\tif (big.Length == small.Length)\n\t\t\t\tlimit -= (uint)small[0];\n\n\t\t\tbool possibleOverflow = (uint)big[0] >= limit;\n\n\t\t\tint[] bigCopy;\n\t\t\tif (possibleOverflow)\n\t\t\t{\n\t\t\t\tbigCopy = new int[big.Length + 1];\n\t\t\t\tbig.CopyTo(bigCopy, 1);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tbigCopy = (int[])big.Clone();\n\t\t\t}\n\n\t\t\tbigCopy = AddMagnitudes(bigCopy, small);\n\n\t\t\treturn new NetBigInteger(m_sign, bigCopy, possibleOverflow);\n\t\t}\n\n\t\tpublic NetBigInteger And(\n\t\t\tNetBigInteger value)\n\t\t{\n\t\t\tif (m_sign == 0 || value.m_sign == 0)\n\t\t\t{\n\t\t\t\treturn Zero;\n\t\t\t}\n\n\t\t\tint[] aMag = m_sign > 0\n\t\t\t\t? m_magnitude\n\t\t\t\t: Add(One).m_magnitude;\n\n\t\t\tint[] bMag = value.m_sign > 0\n\t\t\t\t? value.m_magnitude\n\t\t\t\t: value.Add(One).m_magnitude;\n\n\t\t\tbool resultNeg = m_sign < 0 && value.m_sign < 0;\n\t\t\tint resultLength = System.Math.Max(aMag.Length, bMag.Length);\n\t\t\tint[] resultMag = new int[resultLength];\n\n\t\t\tint aStart = resultMag.Length - aMag.Length;\n\t\t\tint bStart = resultMag.Length - bMag.Length;\n\n\t\t\tfor (int i = 0; i < resultMag.Length; ++i)\n\t\t\t{\n\t\t\t\tint aWord = i >= aStart ? aMag[i - aStart] : 0;\n\t\t\t\tint bWord = i >= bStart ? bMag[i - bStart] : 0;\n\n\t\t\t\tif (m_sign < 0)\n\t\t\t\t{\n\t\t\t\t\taWord = ~aWord;\n\t\t\t\t}\n\n\t\t\t\tif (value.m_sign < 0)\n\t\t\t\t{\n\t\t\t\t\tbWord = ~bWord;\n\t\t\t\t}\n\n\t\t\t\tresultMag[i] = aWord & bWord;\n\n\t\t\t\tif (resultNeg)\n\t\t\t\t{\n\t\t\t\t\tresultMag[i] = ~resultMag[i];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tNetBigInteger result = new NetBigInteger(1, resultMag, true);\n\n\t\t\tif (resultNeg)\n\t\t\t{\n\t\t\t\tresult = result.Not();\n\t\t\t}\n\n\t\t\treturn result;\n\t\t}\n\t\n\t\tprivate int calcBitLength(\n\t\t\tint indx,\n\t\t\tint[] mag)\n\t\t{\n\t\t\tfor (; ; )\n\t\t\t{\n\t\t\t\tif (indx >= mag.Length)\n\t\t\t\t\treturn 0;\n\n\t\t\t\tif (mag[indx] != 0)\n\t\t\t\t\tbreak;\n\n\t\t\t\t++indx;\n\t\t\t}\n\n\t\t\t// bit length for everything after the first int\n\t\t\tint bitLength = 32 * ((mag.Length - indx) - 1);\n\n\t\t\t// and determine bitlength of first int\n\t\t\tint firstMag = mag[indx];\n\t\t\tbitLength += BitLen(firstMag);\n\n\t\t\t// Check for negative powers of two\n\t\t\tif (m_sign < 0 && ((firstMag & -firstMag) == firstMag))\n\t\t\t{\n\t\t\t\tdo\n\t\t\t\t{\n\t\t\t\t\tif (++indx >= mag.Length)\n\t\t\t\t\t{\n\t\t\t\t\t\t--bitLength;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\twhile (mag[indx] == 0);\n\t\t\t}\n\n\t\t\treturn bitLength;\n\t\t}\n\n\t\tpublic int BitLength\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\tif (m_numBitLength == -1)\n\t\t\t\t{\n\t\t\t\t\tm_numBitLength = m_sign == 0\n\t\t\t\t\t\t? 0\n\t\t\t\t\t\t: calcBitLength(0, m_magnitude);\n\t\t\t\t}\n\n\t\t\t\treturn m_numBitLength;\n\t\t\t}\n\t\t}\n\n\t\t//\n\t\t// BitLen(value) is the number of bits in value.\n\t\t//\n\t\tprivate static int BitLen(\n\t\t\tint w)\n\t\t{\n\t\t\t// Binary search - decision tree (5 tests, rarely 6)\n\t\t\treturn (w < 1 << 15 ? (w < 1 << 7\n\t\t\t\t? (w < 1 << 3 ? (w < 1 << 1\n\t\t\t\t? (w < 1 << 0 ? (w < 0 ? 32 : 0) : 1)\n\t\t\t\t: (w < 1 << 2 ? 2 : 3)) : (w < 1 << 5\n\t\t\t\t? (w < 1 << 4 ? 4 : 5)\n\t\t\t\t: (w < 1 << 6 ? 6 : 7)))\n\t\t\t\t: (w < 1 << 11\n\t\t\t\t? (w < 1 << 9 ? (w < 1 << 8 ? 8 : 9) : (w < 1 << 10 ? 10 : 11))\n\t\t\t\t: (w < 1 << 13 ? (w < 1 << 12 ? 12 : 13) : (w < 1 << 14 ? 14 : 15)))) : (w < 1 << 23 ? (w < 1 << 19\n\t\t\t\t? (w < 1 << 17 ? (w < 1 << 16 ? 16 : 17) : (w < 1 << 18 ? 18 : 19))\n\t\t\t\t: (w < 1 << 21 ? (w < 1 << 20 ? 20 : 21) : (w < 1 << 22 ? 22 : 23))) : (w < 1 << 27\n\t\t\t\t? (w < 1 << 25 ? (w < 1 << 24 ? 24 : 25) : (w < 1 << 26 ? 26 : 27))\n\t\t\t\t: (w < 1 << 29 ? (w < 1 << 28 ? 28 : 29) : (w < 1 << 30 ? 30 : 31)))));\n\t\t}\n\n\t\tprivate bool QuickPow2Check()\n\t\t{\n\t\t\treturn m_sign > 0 && m_numBits == 1;\n\t\t}\n\n\t\tpublic int CompareTo(\n\t\t\tobject obj)\n\t\t{\n\t\t\treturn CompareTo((NetBigInteger)obj);\n\t\t}\n\n\t\t\n\t\t// unsigned comparison on two arrays - note the arrays may\n\t\t// start with leading zeros.\n\t\tprivate static int CompareTo(\n\t\t\tint xIndx,\n\t\t\tint[] x,\n\t\t\tint yIndx,\n\t\t\tint[] y)\n\t\t{\n\t\t\twhile (xIndx != x.Length && x[xIndx] == 0)\n\t\t\t{\n\t\t\t\txIndx++;\n\t\t\t}\n\n\t\t\twhile (yIndx != y.Length && y[yIndx] == 0)\n\t\t\t{\n\t\t\t\tyIndx++;\n\t\t\t}\n\n\t\t\treturn CompareNoLeadingZeroes(xIndx, x, yIndx, y);\n\t\t}\n\n\t\tprivate static int CompareNoLeadingZeroes(\n\t\t\tint xIndx,\n\t\t\tint[] x,\n\t\t\tint yIndx,\n\t\t\tint[] y)\n\t\t{\n\t\t\tint diff = (x.Length - y.Length) - (xIndx - yIndx);\n\n\t\t\tif (diff != 0)\n\t\t\t{\n\t\t\t\treturn diff < 0 ? -1 : 1;\n\t\t\t}\n\n\t\t\t// lengths of magnitudes the same, test the magnitude values\n\n\t\t\twhile (xIndx < x.Length)\n\t\t\t{\n\t\t\t\tuint v1 = (uint)x[xIndx++];\n\t\t\t\tuint v2 = (uint)y[yIndx++];\n\n\t\t\t\tif (v1 != v2)\n\t\t\t\t\treturn v1 < v2 ? -1 : 1;\n\t\t\t}\n\n\t\t\treturn 0;\n\t\t}\n\n\t\tpublic int CompareTo(\n\t\t\tNetBigInteger value)\n\t\t{\n\t\t\treturn m_sign < value.m_sign ? -1\n\t\t\t\t: m_sign > value.m_sign ? 1\n\t\t\t\t: m_sign == 0 ? 0\n\t\t\t\t: m_sign * CompareNoLeadingZeroes(0, m_magnitude, 0, value.m_magnitude);\n\t\t}\n\n\t\t// return z = x / y - done in place (z value preserved, x contains the remainder)\n\t\tprivate int[] Divide(\n\t\t\tint[] x,\n\t\t\tint[] y)\n\t\t{\n\t\t\tint xStart = 0;\n\t\t\twhile (xStart < x.Length && x[xStart] == 0)\n\t\t\t{\n\t\t\t\t++xStart;\n\t\t\t}\n\n\t\t\tint yStart = 0;\n\t\t\twhile (yStart < y.Length && y[yStart] == 0)\n\t\t\t{\n\t\t\t\t++yStart;\n\t\t\t}\n\n\t\t\tDebug.Assert(yStart < y.Length);\n\n\t\t\tint xyCmp = CompareNoLeadingZeroes(xStart, x, yStart, y);\n\t\t\tint[] count;\n\n\t\t\tif (xyCmp > 0)\n\t\t\t{\n\t\t\t\tint yBitLength = calcBitLength(yStart, y);\n\t\t\t\tint xBitLength = calcBitLength(xStart, x);\n\t\t\t\tint shift = xBitLength - yBitLength;\n\n\t\t\t\tint[] iCount;\n\t\t\t\tint iCountStart = 0;\n\n\t\t\t\tint[] c;\n\t\t\t\tint cStart = 0;\n\t\t\t\tint cBitLength = yBitLength;\n\t\t\t\tif (shift > 0)\n\t\t\t\t{\n\t\t\t\t\t//\t\t\t\t\tiCount = ShiftLeft(One.magnitude, shift);\n\t\t\t\t\tiCount = new int[(shift >> 5) + 1];\n\t\t\t\t\tiCount[0] = 1 << (shift % 32);\n\n\t\t\t\t\tc = ShiftLeft(y, shift);\n\t\t\t\t\tcBitLength += shift;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tiCount = new int[] { 1 };\n\n\t\t\t\t\tint len = y.Length - yStart;\n\t\t\t\t\tc = new int[len];\n\t\t\t\t\tArray.Copy(y, yStart, c, 0, len);\n\t\t\t\t}\n\n\t\t\t\tcount = new int[iCount.Length];\n\n\t\t\t\tfor (; ; )\n\t\t\t\t{\n\t\t\t\t\tif (cBitLength < xBitLength\n\t\t\t\t\t\t|| CompareNoLeadingZeroes(xStart, x, cStart, c) >= 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tSubtract(xStart, x, cStart, c);\n\t\t\t\t\t\tAddMagnitudes(count, iCount);\n\n\t\t\t\t\t\twhile (x[xStart] == 0)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (++xStart == x.Length)\n\t\t\t\t\t\t\t\treturn count;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t//xBitLength = calcBitLength(xStart, x);\n\t\t\t\t\t\txBitLength = 32 * (x.Length - xStart - 1) + BitLen(x[xStart]);\n\n\t\t\t\t\t\tif (xBitLength <= yBitLength)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (xBitLength < yBitLength)\n\t\t\t\t\t\t\t\treturn count;\n\n\t\t\t\t\t\t\txyCmp = CompareNoLeadingZeroes(xStart, x, yStart, y);\n\n\t\t\t\t\t\t\tif (xyCmp <= 0)\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tshift = cBitLength - xBitLength;\n\n\t\t\t\t\t// NB: The case where c[cStart] is 1-bit is harmless\n\t\t\t\t\tif (shift == 1)\n\t\t\t\t\t{\n\t\t\t\t\t\tuint firstC = (uint)c[cStart] >> 1;\n\t\t\t\t\t\tuint firstX = (uint)x[xStart];\n\t\t\t\t\t\tif (firstC > firstX)\n\t\t\t\t\t\t\t++shift;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (shift < 2)\n\t\t\t\t\t{\n\t\t\t\t\t\tc = ShiftRightOneInPlace(cStart, c);\n\t\t\t\t\t\t--cBitLength;\n\t\t\t\t\t\tiCount = ShiftRightOneInPlace(iCountStart, iCount);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tc = ShiftRightInPlace(cStart, c, shift);\n\t\t\t\t\t\tcBitLength -= shift;\n\t\t\t\t\t\tiCount = ShiftRightInPlace(iCountStart, iCount, shift);\n\t\t\t\t\t}\n\n\t\t\t\t\t//cStart = c.Length - ((cBitLength + 31) / 32);\n\t\t\t\t\twhile (c[cStart] == 0)\n\t\t\t\t\t{\n\t\t\t\t\t\t++cStart;\n\t\t\t\t\t}\n\n\t\t\t\t\twhile (iCount[iCountStart] == 0)\n\t\t\t\t\t{\n\t\t\t\t\t\t++iCountStart;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tcount = new int[1];\n\t\t\t}\n\n\t\t\tif (xyCmp == 0)\n\t\t\t{\n\t\t\t\tAddMagnitudes(count, One.m_magnitude);\n\t\t\t\tArray.Clear(x, xStart, x.Length - xStart);\n\t\t\t}\n\n\t\t\treturn count;\n\t\t}\n\n\t\tpublic NetBigInteger Divide(\n\t\t\tNetBigInteger val)\n\t\t{\n\t\t\tif (val.m_sign == 0)\n\t\t\t\tthrow new ArithmeticException(\"Division by zero error\");\n\n\t\t\tif (m_sign == 0)\n\t\t\t\treturn Zero;\n\n\t\t\tif (val.QuickPow2Check()) // val is power of two\n\t\t\t{\n\t\t\t\tNetBigInteger result = Abs().ShiftRight(val.Abs().BitLength - 1);\n\t\t\t\treturn val.m_sign == m_sign ? result : result.Negate();\n\t\t\t}\n\n\t\t\tint[] mag = (int[])m_magnitude.Clone();\n\n\t\t\treturn new NetBigInteger(m_sign * val.m_sign, Divide(mag, val.m_magnitude), true);\n\t\t}\n\n\t\tpublic NetBigInteger[] DivideAndRemainder(\n\t\t\tNetBigInteger val)\n\t\t{\n\t\t\tif (val.m_sign == 0)\n\t\t\t\tthrow new ArithmeticException(\"Division by zero error\");\n\n\t\t\tNetBigInteger[] biggies = new NetBigInteger[2];\n\n\t\t\tif (m_sign == 0)\n\t\t\t{\n\t\t\t\tbiggies[0] = Zero;\n\t\t\t\tbiggies[1] = Zero;\n\t\t\t}\n\t\t\telse if (val.QuickPow2Check()) // val is power of two\n\t\t\t{\n\t\t\t\tint e = val.Abs().BitLength - 1;\n\t\t\t\tNetBigInteger quotient = Abs().ShiftRight(e);\n\t\t\t\tint[] remainder = LastNBits(e);\n\n\t\t\t\tbiggies[0] = val.m_sign == m_sign ? quotient : quotient.Negate();\n\t\t\t\tbiggies[1] = new NetBigInteger(m_sign, remainder, true);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tint[] remainder = (int[])m_magnitude.Clone();\n\t\t\t\tint[] quotient = Divide(remainder, val.m_magnitude);\n\n\t\t\t\tbiggies[0] = new NetBigInteger(m_sign * val.m_sign, quotient, true);\n\t\t\t\tbiggies[1] = new NetBigInteger(m_sign, remainder, true);\n\t\t\t}\n\n\t\t\treturn biggies;\n\t\t}\n\n\t\tpublic override bool Equals(\n\t\t\tobject obj)\n\t\t{\n\t\t\tif (obj == this)\n\t\t\t\treturn true;\n\n\t\t\tNetBigInteger biggie = obj as NetBigInteger;\n\t\t\tif (biggie == null)\n\t\t\t\treturn false;\n\n\t\t\tif (biggie.m_sign != m_sign || biggie.m_magnitude.Length != m_magnitude.Length)\n\t\t\t\treturn false;\n\n\t\t\tfor (int i = 0; i < m_magnitude.Length; i++)\n\t\t\t{\n\t\t\t\tif (biggie.m_magnitude[i] != m_magnitude[i])\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn true;\n\t\t}\n\n\t\tpublic NetBigInteger Gcd(\n\t\t\tNetBigInteger value)\n\t\t{\n\t\t\tif (value.m_sign == 0)\n\t\t\t\treturn Abs();\n\n\t\t\tif (m_sign == 0)\n\t\t\t\treturn value.Abs();\n\n\t\t\tNetBigInteger r;\n\t\t\tNetBigInteger u = this;\n\t\t\tNetBigInteger v = value;\n\n\t\t\twhile (v.m_sign != 0)\n\t\t\t{\n\t\t\t\tr = u.Mod(v);\n\t\t\t\tu = v;\n\t\t\t\tv = r;\n\t\t\t}\n\n\t\t\treturn u;\n\t\t}\n\n\t\tpublic override int GetHashCode()\n\t\t{\n\t\t\tint hc = m_magnitude.Length;\n\t\t\tif (m_magnitude.Length > 0)\n\t\t\t{\n\t\t\t\thc ^= m_magnitude[0];\n\n\t\t\t\tif (m_magnitude.Length > 1)\n\t\t\t\t{\n\t\t\t\t\thc ^= m_magnitude[m_magnitude.Length - 1];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn m_sign < 0 ? ~hc : hc;\n\t\t}\n\n\t\tprivate NetBigInteger Inc()\n\t\t{\n\t\t\tif (m_sign == 0)\n\t\t\t\treturn One;\n\n\t\t\tif (m_sign < 0)\n\t\t\t\treturn new NetBigInteger(-1, doSubBigLil(m_magnitude, One.m_magnitude), true);\n\n\t\t\treturn AddToMagnitude(One.m_magnitude);\n\t\t}\n\n\t\tpublic int IntValue\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\treturn m_sign == 0 ? 0\n\t\t\t\t\t: m_sign > 0 ? m_magnitude[m_magnitude.Length - 1]\n\t\t\t\t\t: -m_magnitude[m_magnitude.Length - 1];\n\t\t\t}\n\t\t}\n\t\n\t\tpublic NetBigInteger Max(\n\t\t\tNetBigInteger value)\n\t\t{\n\t\t\treturn CompareTo(value) > 0 ? this : value;\n\t\t}\n\n\t\tpublic NetBigInteger Min(\n\t\t\tNetBigInteger value)\n\t\t{\n\t\t\treturn CompareTo(value) < 0 ? this : value;\n\t\t}\n\n\t\tpublic NetBigInteger Mod(\n\t\t\tNetBigInteger m)\n\t\t{\n\t\t\tif (m.m_sign < 1)\n\t\t\t\tthrow new ArithmeticException(\"Modulus must be positive\");\n\n\t\t\tNetBigInteger biggie = Remainder(m);\n\n\t\t\treturn (biggie.m_sign >= 0 ? biggie : biggie.Add(m));\n\t\t}\n\n\t\tpublic NetBigInteger ModInverse(\n\t\t\tNetBigInteger m)\n\t\t{\n\t\t\tif (m.m_sign < 1)\n\t\t\t\tthrow new ArithmeticException(\"Modulus must be positive\");\n\n\t\t\tNetBigInteger x = new NetBigInteger();\n\t\t\tNetBigInteger gcd = ExtEuclid(this, m, x, null);\n\n\t\t\tif (!gcd.Equals(One))\n\t\t\t\tthrow new ArithmeticException(\"Numbers not relatively prime.\");\n\n\t\t\tif (x.m_sign < 0)\n\t\t\t{\n\t\t\t\tx.m_sign = 1;\n\t\t\t\t//x = m.Subtract(x);\n\t\t\t\tx.m_magnitude = doSubBigLil(m.m_magnitude, x.m_magnitude);\n\t\t\t}\n\n\t\t\treturn x;\n\t\t}\n\n\t\tprivate static NetBigInteger ExtEuclid(\n\t\t\tNetBigInteger a,\n\t\t\tNetBigInteger b,\n\t\t\tNetBigInteger u1Out,\n\t\t\tNetBigInteger u2Out)\n\t\t{\n\t\t\tNetBigInteger u1 = One;\n\t\t\tNetBigInteger u3 = a;\n\t\t\tNetBigInteger v1 = Zero;\n\t\t\tNetBigInteger v3 = b;\n\n\t\t\twhile (v3.m_sign > 0)\n\t\t\t{\n\t\t\t\tNetBigInteger[] q = u3.DivideAndRemainder(v3);\n\n\t\t\t\tNetBigInteger tmp = v1.Multiply(q[0]);\n\t\t\t\tNetBigInteger tn = u1.Subtract(tmp);\n\t\t\t\tu1 = v1;\n\t\t\t\tv1 = tn;\n\n\t\t\t\tu3 = v3;\n\t\t\t\tv3 = q[1];\n\t\t\t}\n\n\t\t\tif (u1Out != null)\n\t\t\t{\n\t\t\t\tu1Out.m_sign = u1.m_sign;\n\t\t\t\tu1Out.m_magnitude = u1.m_magnitude;\n\t\t\t}\n\n\t\t\tif (u2Out != null)\n\t\t\t{\n\t\t\t\tNetBigInteger tmp = u1.Multiply(a);\n\t\t\t\ttmp = u3.Subtract(tmp);\n\t\t\t\tNetBigInteger res = tmp.Divide(b);\n\t\t\t\tu2Out.m_sign = res.m_sign;\n\t\t\t\tu2Out.m_magnitude = res.m_magnitude;\n\t\t\t}\n\n\t\t\treturn u3;\n\t\t}\n\n\t\tprivate static void ZeroOut(\n\t\t\tint[] x)\n\t\t{\n\t\t\tArray.Clear(x, 0, x.Length);\n\t\t}\n\n\t\tpublic NetBigInteger ModPow(\n\t\t\tNetBigInteger exponent,\n\t\t\tNetBigInteger m)\n\t\t{\n\t\t\tif (m.m_sign < 1)\n\t\t\t\tthrow new ArithmeticException(\"Modulus must be positive\");\n\n\t\t\tif (m.Equals(One))\n\t\t\t\treturn Zero;\n\n\t\t\tif (exponent.m_sign == 0)\n\t\t\t\treturn One;\n\n\t\t\tif (m_sign == 0)\n\t\t\t\treturn Zero;\n\n\t\t\tint[] zVal = null;\n\t\t\tint[] yAccum = null;\n\t\t\tint[] yVal;\n\n\t\t\t// Montgomery exponentiation is only possible if the modulus is odd,\n\t\t\t// but AFAIK, this is always the case for crypto algo's\n\t\t\tbool useMonty = ((m.m_magnitude[m.m_magnitude.Length - 1] & 1) == 1);\n\t\t\tlong mQ = 0;\n\t\t\tif (useMonty)\n\t\t\t{\n\t\t\t\tmQ = m.GetMQuote();\n\n\t\t\t\t// tmp = this * R mod m\n\t\t\t\tNetBigInteger tmp = ShiftLeft(32 * m.m_magnitude.Length).Mod(m);\n\t\t\t\tzVal = tmp.m_magnitude;\n\n\t\t\t\tuseMonty = (zVal.Length <= m.m_magnitude.Length);\n\n\t\t\t\tif (useMonty)\n\t\t\t\t{\n\t\t\t\t\tyAccum = new int[m.m_magnitude.Length + 1];\n\t\t\t\t\tif (zVal.Length < m.m_magnitude.Length)\n\t\t\t\t\t{\n\t\t\t\t\t\tint[] longZ = new int[m.m_magnitude.Length];\n\t\t\t\t\t\tzVal.CopyTo(longZ, longZ.Length - zVal.Length);\n\t\t\t\t\t\tzVal = longZ;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!useMonty)\n\t\t\t{\n\t\t\t\tif (m_magnitude.Length <= m.m_magnitude.Length)\n\t\t\t\t{\n\t\t\t\t\t//zAccum = new int[m.magnitude.Length * 2];\n\t\t\t\t\tzVal = new int[m.m_magnitude.Length];\n\t\t\t\t\tm_magnitude.CopyTo(zVal, zVal.Length - m_magnitude.Length);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t//\n\t\t\t\t\t// in normal practice we'll never see ..\n\t\t\t\t\t//\n\t\t\t\t\tNetBigInteger tmp = Remainder(m);\n\n\t\t\t\t\t//zAccum = new int[m.magnitude.Length * 2];\n\t\t\t\t\tzVal = new int[m.m_magnitude.Length];\n\t\t\t\t\ttmp.m_magnitude.CopyTo(zVal, zVal.Length - tmp.m_magnitude.Length);\n\t\t\t\t}\n\n\t\t\t\tyAccum = new int[m.m_magnitude.Length * 2];\n\t\t\t}\n\n\t\t\tyVal = new int[m.m_magnitude.Length];\n\n\t\t\t//\n\t\t\t// from LSW to MSW\n\t\t\t//\n\t\t\tfor (int i = 0; i < exponent.m_magnitude.Length; i++)\n\t\t\t{\n\t\t\t\tint v = exponent.m_magnitude[i];\n\t\t\t\tint bits = 0;\n\n\t\t\t\tif (i == 0)\n\t\t\t\t{\n\t\t\t\t\twhile (v > 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tv <<= 1;\n\t\t\t\t\t\tbits++;\n\t\t\t\t\t}\n\n\t\t\t\t\t//\n\t\t\t\t\t// first time in initialise y\n\t\t\t\t\t//\n\t\t\t\t\tzVal.CopyTo(yVal, 0);\n\n\t\t\t\t\tv <<= 1;\n\t\t\t\t\tbits++;\n\t\t\t\t}\n\n\t\t\t\twhile (v != 0)\n\t\t\t\t{\n\t\t\t\t\tif (useMonty)\n\t\t\t\t\t{\n\t\t\t\t\t\t// Montgomery square algo doesn't exist, and a normal\n\t\t\t\t\t\t// square followed by a Montgomery reduction proved to\n\t\t\t\t\t\t// be almost as heavy as a Montgomery mulitply.\n\t\t\t\t\t\tMultiplyMonty(yAccum, yVal, yVal, m.m_magnitude, mQ);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tSquare(yAccum, yVal);\n\t\t\t\t\t\tRemainder(yAccum, m.m_magnitude);\n\t\t\t\t\t\tArray.Copy(yAccum, yAccum.Length - yVal.Length, yVal, 0, yVal.Length);\n\t\t\t\t\t\tZeroOut(yAccum);\n\t\t\t\t\t}\n\t\t\t\t\tbits++;\n\n\t\t\t\t\tif (v < 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (useMonty)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tMultiplyMonty(yAccum, yVal, zVal, m.m_magnitude, mQ);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tMultiply(yAccum, yVal, zVal);\n\t\t\t\t\t\t\tRemainder(yAccum, m.m_magnitude);\n\t\t\t\t\t\t\tArray.Copy(yAccum, yAccum.Length - yVal.Length, yVal, 0,\n\t\t\t\t\t\t\t\tyVal.Length);\n\t\t\t\t\t\t\tZeroOut(yAccum);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tv <<= 1;\n\t\t\t\t}\n\n\t\t\t\twhile (bits < 32)\n\t\t\t\t{\n\t\t\t\t\tif (useMonty)\n\t\t\t\t\t{\n\t\t\t\t\t\tMultiplyMonty(yAccum, yVal, yVal, m.m_magnitude, mQ);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tSquare(yAccum, yVal);\n\t\t\t\t\t\tRemainder(yAccum, m.m_magnitude);\n\t\t\t\t\t\tArray.Copy(yAccum, yAccum.Length - yVal.Length, yVal, 0, yVal.Length);\n\t\t\t\t\t\tZeroOut(yAccum);\n\t\t\t\t\t}\n\t\t\t\t\tbits++;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (useMonty)\n\t\t\t{\n\t\t\t\t// Return y * R^(-1) mod m by doing y * 1 * R^(-1) mod m\n\t\t\t\tZeroOut(zVal);\n\t\t\t\tzVal[zVal.Length - 1] = 1;\n\t\t\t\tMultiplyMonty(yAccum, yVal, zVal, m.m_magnitude, mQ);\n\t\t\t}\n\n\t\t\tNetBigInteger result = new NetBigInteger(1, yVal, true);\n\n\t\t\treturn exponent.m_sign > 0\n\t\t\t\t? result\n\t\t\t\t: result.ModInverse(m);\n\t\t}\n\n\t\t// return w with w = x * x - w is assumed to have enough space.\n\t\tprivate static int[] Square(\n\t\t\tint[] w,\n\t\t\tint[] x)\n\t\t{\n\t\t\t// Note: this method allows w to be only (2 * x.Length - 1) words if result will fit\n\t\t\t//\t\t\tif (w.Length != 2 * x.Length)\n\t\t\t//\t\t\t\tthrow new ArgumentException(\"no I don't think so...\");\n\n\t\t\tulong u1, u2, c;\n\n\t\t\tint wBase = w.Length - 1;\n\n\t\t\tfor (int i = x.Length - 1; i != 0; i--)\n\t\t\t{\n\t\t\t\tulong v = (ulong)(uint)x[i];\n\n\t\t\t\tu1 = v * v;\n\t\t\t\tu2 = u1 >> 32;\n\t\t\t\tu1 = (uint)u1;\n\n\t\t\t\tu1 += (ulong)(uint)w[wBase];\n\n\t\t\t\tw[wBase] = (int)(uint)u1;\n\t\t\t\tc = u2 + (u1 >> 32);\n\n\t\t\t\tfor (int j = i - 1; j >= 0; j--)\n\t\t\t\t{\n\t\t\t\t\t--wBase;\n\t\t\t\t\tu1 = v * (ulong)(uint)x[j];\n\t\t\t\t\tu2 = u1 >> 31; // multiply by 2!\n\t\t\t\t\tu1 = (uint)(u1 << 1); // multiply by 2!\n\t\t\t\t\tu1 += c + (ulong)(uint)w[wBase];\n\n\t\t\t\t\tw[wBase] = (int)(uint)u1;\n\t\t\t\t\tc = u2 + (u1 >> 32);\n\t\t\t\t}\n\n\t\t\t\tc += (ulong)(uint)w[--wBase];\n\t\t\t\tw[wBase] = (int)(uint)c;\n\n\t\t\t\tif (--wBase >= 0)\n\t\t\t\t{\n\t\t\t\t\tw[wBase] = (int)(uint)(c >> 32);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tDebug.Assert((uint)(c >> 32) == 0);\n\t\t\t\t}\n\t\t\t\twBase += i;\n\t\t\t}\n\n\t\t\tu1 = (ulong)(uint)x[0];\n\t\t\tu1 = u1 * u1;\n\t\t\tu2 = u1 >> 32;\n\t\t\tu1 = u1 & IMASK;\n\n\t\t\tu1 += (ulong)(uint)w[wBase];\n\n\t\t\tw[wBase] = (int)(uint)u1;\n\t\t\tif (--wBase >= 0)\n\t\t\t{\n\t\t\t\tw[wBase] = (int)(uint)(u2 + (u1 >> 32) + (ulong)(uint)w[wBase]);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tDebug.Assert((uint)(u2 + (u1 >> 32)) == 0);\n\t\t\t}\n\n\t\t\treturn w;\n\t\t}\n\n\t\t// return x with x = y * z - x is assumed to have enough space.\n\t\tprivate static int[] Multiply(\n\t\t\tint[] x,\n\t\t\tint[] y,\n\t\t\tint[] z)\n\t\t{\n\t\t\tint i = z.Length;\n\n\t\t\tif (i < 1)\n\t\t\t\treturn x;\n\n\t\t\tint xBase = x.Length - y.Length;\n\n\t\t\tfor (; ; )\n\t\t\t{\n\t\t\t\tlong a = z[--i] & IMASK;\n\t\t\t\tlong val = 0;\n\n\t\t\t\tfor (int j = y.Length - 1; j >= 0; j--)\n\t\t\t\t{\n\t\t\t\t\tval += a * (y[j] & IMASK) + (x[xBase + j] & IMASK);\n\n\t\t\t\t\tx[xBase + j] = (int)val;\n\n\t\t\t\t\tval = (long)((ulong)val >> 32);\n\t\t\t\t}\n\n\t\t\t\t--xBase;\n\n\t\t\t\tif (i < 1)\n\t\t\t\t{\n\t\t\t\t\tif (xBase >= 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tx[xBase] = (int)val;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tDebug.Assert(val == 0);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tx[xBase] = (int)val;\n\t\t\t}\n\n\t\t\treturn x;\n\t\t}\n\n\t\tprivate static long FastExtEuclid(\n\t\t\tlong a,\n\t\t\tlong b,\n\t\t\tlong[] uOut)\n\t\t{\n\t\t\tlong u1 = 1;\n\t\t\tlong u3 = a;\n\t\t\tlong v1 = 0;\n\t\t\tlong v3 = b;\n\n\t\t\twhile (v3 > 0)\n\t\t\t{\n\t\t\t\tlong q, tn;\n\n\t\t\t\tq = u3 / v3;\n\n\t\t\t\ttn = u1 - (v1 * q);\n\t\t\t\tu1 = v1;\n\t\t\t\tv1 = tn;\n\n\t\t\t\ttn = u3 - (v3 * q);\n\t\t\t\tu3 = v3;\n\t\t\t\tv3 = tn;\n\t\t\t}\n\n\t\t\tuOut[0] = u1;\n\t\t\tuOut[1] = (u3 - (u1 * a)) / b;\n\n\t\t\treturn u3;\n\t\t}\n\n\t\tprivate static long FastModInverse(\n\t\t\tlong v,\n\t\t\tlong m)\n\t\t{\n\t\t\tif (m < 1)\n\t\t\t\tthrow new ArithmeticException(\"Modulus must be positive\");\n\n\t\t\tlong[] x = new long[2];\n\t\t\tlong gcd = FastExtEuclid(v, m, x);\n\n\t\t\tif (gcd != 1)\n\t\t\t\tthrow new ArithmeticException(\"Numbers not relatively prime.\");\n\n\t\t\tif (x[0] < 0)\n\t\t\t{\n\t\t\t\tx[0] += m;\n\t\t\t}\n\n\t\t\treturn x[0];\n\t\t}\n\n\t\tprivate long GetMQuote()\n\t\t{\n\t\t\tDebug.Assert(m_sign > 0);\n\n\t\t\tif (m_quote != -1)\n\t\t\t{\n\t\t\t\treturn m_quote; // already calculated\n\t\t\t}\n\n\t\t\tif (m_magnitude.Length == 0 || (m_magnitude[m_magnitude.Length - 1] & 1) == 0)\n\t\t\t{\n\t\t\t\treturn -1; // not for even numbers\n\t\t\t}\n\n\t\t\tlong v = (((~m_magnitude[m_magnitude.Length - 1]) | 1) & 0xffffffffL);\n\t\t\tm_quote = FastModInverse(v, 0x100000000L);\n\n\t\t\treturn m_quote;\n\t\t}\n\n\t\tprivate static void MultiplyMonty(\n\t\t\tint[] a,\n\t\t\tint[] x,\n\t\t\tint[] y,\n\t\t\tint[] m,\n\t\t\tlong mQuote)\n\t\t// mQuote = -m^(-1) mod b\n\t\t{\n\t\t\tif (m.Length == 1)\n\t\t\t{\n\t\t\t\tx[0] = (int)MultiplyMontyNIsOne((uint)x[0], (uint)y[0], (uint)m[0], (ulong)mQuote);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tint n = m.Length;\n\t\t\tint nMinus1 = n - 1;\n\t\t\tlong y_0 = y[nMinus1] & IMASK;\n\n\t\t\t// 1. a = 0 (Notation: a = (a_{n} a_{n-1} ... a_{0})_{b} )\n\t\t\tArray.Clear(a, 0, n + 1);\n\n\t\t\t// 2. for i from 0 to (n - 1) do the following:\n\t\t\tfor (int i = n; i > 0; i--)\n\t\t\t{\n\t\t\t\tlong x_i = x[i - 1] & IMASK;\n\n\t\t\t\t// 2.1 u = ((a[0] + (x[i] * y[0]) * mQuote) mod b\n\t\t\t\tlong u = ((((a[n] & IMASK) + ((x_i * y_0) & IMASK)) & IMASK) * mQuote) & IMASK;\n\n\t\t\t\t// 2.2 a = (a + x_i * y + u * m) / b\n\t\t\t\tlong prod1 = x_i * y_0;\n\t\t\t\tlong prod2 = u * (m[nMinus1] & IMASK);\n\t\t\t\tlong tmp = (a[n] & IMASK) + (prod1 & IMASK) + (prod2 & IMASK);\n\t\t\t\tlong carry = (long)((ulong)prod1 >> 32) + (long)((ulong)prod2 >> 32) + (long)((ulong)tmp >> 32);\n\t\t\t\tfor (int j = nMinus1; j > 0; j--)\n\t\t\t\t{\n\t\t\t\t\tprod1 = x_i * (y[j - 1] & IMASK);\n\t\t\t\t\tprod2 = u * (m[j - 1] & IMASK);\n\t\t\t\t\ttmp = (a[j] & IMASK) + (prod1 & IMASK) + (prod2 & IMASK) + (carry & IMASK);\n\t\t\t\t\tcarry = (long)((ulong)carry >> 32) + (long)((ulong)prod1 >> 32) +\n\t\t\t\t\t\t(long)((ulong)prod2 >> 32) + (long)((ulong)tmp >> 32);\n\t\t\t\t\ta[j + 1] = (int)tmp; // division by b\n\t\t\t\t}\n\t\t\t\tcarry += (a[0] & IMASK);\n\t\t\t\ta[1] = (int)carry;\n\t\t\t\ta[0] = (int)((ulong)carry >> 32); // OJO!!!!!\n\t\t\t}\n\n\t\t\t// 3. if x >= m the x = x - m\n\t\t\tif (CompareTo(0, a, 0, m) >= 0)\n\t\t\t{\n\t\t\t\tSubtract(0, a, 0, m);\n\t\t\t}\n\n\t\t\t// put the result in x\n\t\t\tArray.Copy(a, 1, x, 0, n);\n\t\t}\n\n\t\tprivate static uint MultiplyMontyNIsOne(\n\t\t\tuint x,\n\t\t\tuint y,\n\t\t\tuint m,\n\t\t\tulong mQuote)\n\t\t{\n\t\t\tulong um = m;\n\t\t\tulong prod1 = (ulong)x * (ulong)y;\n\t\t\tulong u = (prod1 * mQuote) & UIMASK;\n\t\t\tulong prod2 = u * um;\n\t\t\tulong tmp = (prod1 & UIMASK) + (prod2 & UIMASK);\n\t\t\tulong carry = (prod1 >> 32) + (prod2 >> 32) + (tmp >> 32);\n\n\t\t\tif (carry > um)\n\t\t\t{\n\t\t\t\tcarry -= um;\n\t\t\t}\n\n\t\t\treturn (uint)(carry & UIMASK);\n\t\t}\n\n\t\tpublic NetBigInteger Modulus(\n\t\t\tNetBigInteger val)\n\t\t{\n\t\t\treturn Mod(val);\n\t\t}\n\n\t\tpublic NetBigInteger Multiply(\n\t\t\tNetBigInteger val)\n\t\t{\n\t\t\tif (m_sign == 0 || val.m_sign == 0)\n\t\t\t\treturn Zero;\n\n\t\t\tif (val.QuickPow2Check()) // val is power of two\n\t\t\t{\n\t\t\t\tNetBigInteger result = ShiftLeft(val.Abs().BitLength - 1);\n\t\t\t\treturn val.m_sign > 0 ? result : result.Negate();\n\t\t\t}\n\n\t\t\tif (QuickPow2Check()) // this is power of two\n\t\t\t{\n\t\t\t\tNetBigInteger result = val.ShiftLeft(Abs().BitLength - 1);\n\t\t\t\treturn m_sign > 0 ? result : result.Negate();\n\t\t\t}\n\n\t\t\tint maxBitLength = BitLength + val.BitLength;\n\t\t\tint resLength = (maxBitLength + BitsPerInt - 1) / BitsPerInt;\n\n\t\t\tint[] res = new int[resLength];\n\n\t\t\tif (val == this)\n\t\t\t{\n\t\t\t\tSquare(res, m_magnitude);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tMultiply(res, m_magnitude, val.m_magnitude);\n\t\t\t}\n\n\t\t\treturn new NetBigInteger(m_sign * val.m_sign, res, true);\n\t\t}\n\n\t\tpublic NetBigInteger Negate()\n\t\t{\n\t\t\tif (m_sign == 0)\n\t\t\t\treturn this;\n\n\t\t\treturn new NetBigInteger(-m_sign, m_magnitude, false);\n\t\t}\n\n\t\tpublic NetBigInteger Not()\n\t\t{\n\t\t\treturn Inc().Negate();\n\t\t}\n\n\t\tpublic NetBigInteger Pow(int exp)\n\t\t{\n\t\t\tif (exp < 0)\n\t\t\t{\n\t\t\t\tthrow new ArithmeticException(\"Negative exponent\");\n\t\t\t}\n\n\t\t\tif (exp == 0)\n\t\t\t{\n\t\t\t\treturn One;\n\t\t\t}\n\n\t\t\tif (m_sign == 0 || Equals(One))\n\t\t\t{\n\t\t\t\treturn this;\n\t\t\t}\n\n\t\t\tNetBigInteger y = One;\n\t\t\tNetBigInteger z = this;\n\n\t\t\tfor (; ; )\n\t\t\t{\n\t\t\t\tif ((exp & 0x1) == 1)\n\t\t\t\t{\n\t\t\t\t\ty = y.Multiply(z);\n\t\t\t\t}\n\t\t\t\texp >>= 1;\n\t\t\t\tif (exp == 0) break;\n\t\t\t\tz = z.Multiply(z);\n\t\t\t}\n\n\t\t\treturn y;\n\t\t}\n\t\t\n\t\tprivate int Remainder(\n\t\t\tint m)\n\t\t{\n\t\t\tDebug.Assert(m > 0);\n\n\t\t\tlong acc = 0;\n\t\t\tfor (int pos = 0; pos < m_magnitude.Length; ++pos)\n\t\t\t{\n\t\t\t\tlong posVal = (uint)m_magnitude[pos];\n\t\t\t\tacc = (acc << 32 | posVal) % m;\n\t\t\t}\n\n\t\t\treturn (int)acc;\n\t\t}\n\n\t\t// return x = x % y - done in place (y value preserved)\n\t\tprivate int[] Remainder(\n\t\t\tint[] x,\n\t\t\tint[] y)\n\t\t{\n\t\t\tint xStart = 0;\n\t\t\twhile (xStart < x.Length && x[xStart] == 0)\n\t\t\t{\n\t\t\t\t++xStart;\n\t\t\t}\n\n\t\t\tint yStart = 0;\n\t\t\twhile (yStart < y.Length && y[yStart] == 0)\n\t\t\t{\n\t\t\t\t++yStart;\n\t\t\t}\n\n\t\t\tDebug.Assert(yStart < y.Length);\n\n\t\t\tint xyCmp = CompareNoLeadingZeroes(xStart, x, yStart, y);\n\n\t\t\tif (xyCmp > 0)\n\t\t\t{\n\t\t\t\tint yBitLength = calcBitLength(yStart, y);\n\t\t\t\tint xBitLength = calcBitLength(xStart, x);\n\t\t\t\tint shift = xBitLength - yBitLength;\n\n\t\t\t\tint[] c;\n\t\t\t\tint cStart = 0;\n\t\t\t\tint cBitLength = yBitLength;\n\t\t\t\tif (shift > 0)\n\t\t\t\t{\n\t\t\t\t\tc = ShiftLeft(y, shift);\n\t\t\t\t\tcBitLength += shift;\n\t\t\t\t\tDebug.Assert(c[0] != 0);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tint len = y.Length - yStart;\n\t\t\t\t\tc = new int[len];\n\t\t\t\t\tArray.Copy(y, yStart, c, 0, len);\n\t\t\t\t}\n\n\t\t\t\tfor (; ; )\n\t\t\t\t{\n\t\t\t\t\tif (cBitLength < xBitLength\n\t\t\t\t\t\t|| CompareNoLeadingZeroes(xStart, x, cStart, c) >= 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tSubtract(xStart, x, cStart, c);\n\n\t\t\t\t\t\twhile (x[xStart] == 0)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (++xStart == x.Length)\n\t\t\t\t\t\t\t\treturn x;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t//xBitLength = calcBitLength(xStart, x);\n\t\t\t\t\t\txBitLength = 32 * (x.Length - xStart - 1) + BitLen(x[xStart]);\n\n\t\t\t\t\t\tif (xBitLength <= yBitLength)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (xBitLength < yBitLength)\n\t\t\t\t\t\t\t\treturn x;\n\n\t\t\t\t\t\t\txyCmp = CompareNoLeadingZeroes(xStart, x, yStart, y);\n\n\t\t\t\t\t\t\tif (xyCmp <= 0)\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tshift = cBitLength - xBitLength;\n\n\t\t\t\t\t// NB: The case where c[cStart] is 1-bit is harmless\n\t\t\t\t\tif (shift == 1)\n\t\t\t\t\t{\n\t\t\t\t\t\tuint firstC = (uint)c[cStart] >> 1;\n\t\t\t\t\t\tuint firstX = (uint)x[xStart];\n\t\t\t\t\t\tif (firstC > firstX)\n\t\t\t\t\t\t\t++shift;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (shift < 2)\n\t\t\t\t\t{\n\t\t\t\t\t\tc = ShiftRightOneInPlace(cStart, c);\n\t\t\t\t\t\t--cBitLength;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tc = ShiftRightInPlace(cStart, c, shift);\n\t\t\t\t\t\tcBitLength -= shift;\n\t\t\t\t\t}\n\n\t\t\t\t\t//cStart = c.Length - ((cBitLength + 31) / 32);\n\t\t\t\t\twhile (c[cStart] == 0)\n\t\t\t\t\t{\n\t\t\t\t\t\t++cStart;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (xyCmp == 0)\n\t\t\t{\n\t\t\t\tArray.Clear(x, xStart, x.Length - xStart);\n\t\t\t}\n\n\t\t\treturn x;\n\t\t}\n\n\t\tpublic NetBigInteger Remainder(\n\t\t\tNetBigInteger n)\n\t\t{\n\t\t\tif (n.m_sign == 0)\n\t\t\t\tthrow new ArithmeticException(\"Division by zero error\");\n\n\t\t\tif (m_sign == 0)\n\t\t\t\treturn Zero;\n\n\t\t\t// For small values, use fast remainder method\n\t\t\tif (n.m_magnitude.Length == 1)\n\t\t\t{\n\t\t\t\tint val = n.m_magnitude[0];\n\n\t\t\t\tif (val > 0)\n\t\t\t\t{\n\t\t\t\t\tif (val == 1)\n\t\t\t\t\t\treturn Zero;\n\n\t\t\t\t\tint rem = Remainder(val);\n\n\t\t\t\t\treturn rem == 0\n\t\t\t\t\t\t? Zero\n\t\t\t\t\t\t: new NetBigInteger(m_sign, new int[] { rem }, false);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (CompareNoLeadingZeroes(0, m_magnitude, 0, n.m_magnitude) < 0)\n\t\t\t\treturn this;\n\n\t\t\tint[] result;\n\t\t\tif (n.QuickPow2Check())  // n is power of two\n\t\t\t{\n\t\t\t\tresult = LastNBits(n.Abs().BitLength - 1);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tresult = (int[])m_magnitude.Clone();\n\t\t\t\tresult = Remainder(result, n.m_magnitude);\n\t\t\t}\n\n\t\t\treturn new NetBigInteger(m_sign, result, true);\n\t\t}\n\n\t\tprivate int[] LastNBits(\n\t\t\tint n)\n\t\t{\n\t\t\tif (n < 1)\n\t\t\t\treturn ZeroMagnitude;\n\n\t\t\tint numWords = (n + BitsPerInt - 1) / BitsPerInt;\n\t\t\tnumWords = System.Math.Min(numWords, m_magnitude.Length);\n\t\t\tint[] result = new int[numWords];\n\n\t\t\tArray.Copy(m_magnitude, m_magnitude.Length - numWords, result, 0, numWords);\n\n\t\t\tint hiBits = n % 32;\n\t\t\tif (hiBits != 0)\n\t\t\t{\n\t\t\t\tresult[0] &= ~(-1 << hiBits);\n\t\t\t}\n\n\t\t\treturn result;\n\t\t}\n\n\n\t\t// do a left shift - this returns a new array.\n\t\tprivate static int[] ShiftLeft(\n\t\t\tint[] mag,\n\t\t\tint n)\n\t\t{\n\t\t\tint nInts = (int)((uint)n >> 5);\n\t\t\tint nBits = n & 0x1f;\n\t\t\tint magLen = mag.Length;\n\t\t\tint[] newMag;\n\n\t\t\tif (nBits == 0)\n\t\t\t{\n\t\t\t\tnewMag = new int[magLen + nInts];\n\t\t\t\tmag.CopyTo(newMag, 0);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tint i = 0;\n\t\t\t\tint nBits2 = 32 - nBits;\n\t\t\t\tint highBits = (int)((uint)mag[0] >> nBits2);\n\n\t\t\t\tif (highBits != 0)\n\t\t\t\t{\n\t\t\t\t\tnewMag = new int[magLen + nInts + 1];\n\t\t\t\t\tnewMag[i++] = highBits;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tnewMag = new int[magLen + nInts];\n\t\t\t\t}\n\n\t\t\t\tint m = mag[0];\n\t\t\t\tfor (int j = 0; j < magLen - 1; j++)\n\t\t\t\t{\n\t\t\t\t\tint next = mag[j + 1];\n\n\t\t\t\t\tnewMag[i++] = (m << nBits) | (int)((uint)next >> nBits2);\n\t\t\t\t\tm = next;\n\t\t\t\t}\n\n\t\t\t\tnewMag[i] = mag[magLen - 1] << nBits;\n\t\t\t}\n\n\t\t\treturn newMag;\n\t\t}\n\n\t\tpublic NetBigInteger ShiftLeft(\n\t\t\tint n)\n\t\t{\n\t\t\tif (m_sign == 0 || m_magnitude.Length == 0)\n\t\t\t\treturn Zero;\n\n\t\t\tif (n == 0)\n\t\t\t\treturn this;\n\n\t\t\tif (n < 0)\n\t\t\t\treturn ShiftRight(-n);\n\n\t\t\tNetBigInteger result = new NetBigInteger(m_sign, ShiftLeft(m_magnitude, n), true);\n\n\t\t\tif (m_numBits != -1)\n\t\t\t{\n\t\t\t\tresult.m_numBits = m_sign > 0\n\t\t\t\t\t? m_numBits\n\t\t\t\t\t: m_numBits + n;\n\t\t\t}\n\n\t\t\tif (m_numBitLength != -1)\n\t\t\t{\n\t\t\t\tresult.m_numBitLength = m_numBitLength + n;\n\t\t\t}\n\n\t\t\treturn result;\n\t\t}\n\n\t\t// do a right shift - this does it in place.\n\t\tprivate static int[] ShiftRightInPlace(\n\t\t\tint start,\n\t\t\tint[] mag,\n\t\t\tint n)\n\t\t{\n\t\t\tint nInts = (int)((uint)n >> 5) + start;\n\t\t\tint nBits = n & 0x1f;\n\t\t\tint magEnd = mag.Length - 1;\n\n\t\t\tif (nInts != start)\n\t\t\t{\n\t\t\t\tint delta = (nInts - start);\n\n\t\t\t\tfor (int i = magEnd; i >= nInts; i--)\n\t\t\t\t{\n\t\t\t\t\tmag[i] = mag[i - delta];\n\t\t\t\t}\n\t\t\t\tfor (int i = nInts - 1; i >= start; i--)\n\t\t\t\t{\n\t\t\t\t\tmag[i] = 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (nBits != 0)\n\t\t\t{\n\t\t\t\tint nBits2 = 32 - nBits;\n\t\t\t\tint m = mag[magEnd];\n\n\t\t\t\tfor (int i = magEnd; i > nInts; --i)\n\t\t\t\t{\n\t\t\t\t\tint next = mag[i - 1];\n\n\t\t\t\t\tmag[i] = (int)((uint)m >> nBits) | (next << nBits2);\n\t\t\t\t\tm = next;\n\t\t\t\t}\n\n\t\t\t\tmag[nInts] = (int)((uint)mag[nInts] >> nBits);\n\t\t\t}\n\n\t\t\treturn mag;\n\t\t}\n\n\t\t// do a right shift by one - this does it in place.\n\t\tprivate static int[] ShiftRightOneInPlace(\n\t\t\tint start,\n\t\t\tint[] mag)\n\t\t{\n\t\t\tint i = mag.Length;\n\t\t\tint m = mag[i - 1];\n\n\t\t\twhile (--i > start)\n\t\t\t{\n\t\t\t\tint next = mag[i - 1];\n\t\t\t\tmag[i] = ((int)((uint)m >> 1)) | (next << 31);\n\t\t\t\tm = next;\n\t\t\t}\n\n\t\t\tmag[start] = (int)((uint)mag[start] >> 1);\n\n\t\t\treturn mag;\n\t\t}\n\n\t\tpublic NetBigInteger ShiftRight(\n\t\t\tint n)\n\t\t{\n\t\t\tif (n == 0)\n\t\t\t\treturn this;\n\n\t\t\tif (n < 0)\n\t\t\t\treturn ShiftLeft(-n);\n\n\t\t\tif (n >= BitLength)\n\t\t\t\treturn (m_sign < 0 ? One.Negate() : Zero);\n\n\t\t\t//\t\t\tint[] res = (int[]) magnitude.Clone();\n\t\t\t//\n\t\t\t//\t\t\tres = ShiftRightInPlace(0, res, n);\n\t\t\t//\n\t\t\t//\t\t\treturn new BigInteger(sign, res, true);\n\n\t\t\tint resultLength = (BitLength - n + 31) >> 5;\n\t\t\tint[] res = new int[resultLength];\n\n\t\t\tint numInts = n >> 5;\n\t\t\tint numBits = n & 31;\n\n\t\t\tif (numBits == 0)\n\t\t\t{\n\t\t\t\tArray.Copy(m_magnitude, 0, res, 0, res.Length);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tint numBits2 = 32 - numBits;\n\n\t\t\t\tint magPos = m_magnitude.Length - 1 - numInts;\n\t\t\t\tfor (int i = resultLength - 1; i >= 0; --i)\n\t\t\t\t{\n\t\t\t\t\tres[i] = (int)((uint)m_magnitude[magPos--] >> numBits);\n\n\t\t\t\t\tif (magPos >= 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tres[i] |= m_magnitude[magPos] << numBits2;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tDebug.Assert(res[0] != 0);\n\n\t\t\treturn new NetBigInteger(m_sign, res, false);\n\t\t}\n\n\t\tpublic int SignValue\n\t\t{\n\t\t\tget { return m_sign; }\n\t\t}\n\n\t\t// returns x = x - y - we assume x is >= y\n\t\tprivate static int[] Subtract(\n\t\t\tint xStart,\n\t\t\tint[] x,\n\t\t\tint yStart,\n\t\t\tint[] y)\n\t\t{\n\t\t\tDebug.Assert(yStart < y.Length);\n\t\t\tDebug.Assert(x.Length - xStart >= y.Length - yStart);\n\n\t\t\tint iT = x.Length;\n\t\t\tint iV = y.Length;\n\t\t\tlong m;\n\t\t\tint borrow = 0;\n\n\t\t\tdo\n\t\t\t{\n\t\t\t\tm = (x[--iT] & IMASK) - (y[--iV] & IMASK) + borrow;\n\t\t\t\tx[iT] = (int)m;\n\n\t\t\t\t//\t\t\t\tborrow = (m < 0) ? -1 : 0;\n\t\t\t\tborrow = (int)(m >> 63);\n\t\t\t}\n\t\t\twhile (iV > yStart);\n\n\t\t\tif (borrow != 0)\n\t\t\t{\n\t\t\t\twhile (--x[--iT] == -1)\n\t\t\t\t{\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn x;\n\t\t}\n\n\t\tpublic NetBigInteger Subtract(\n\t\t\tNetBigInteger n)\n\t\t{\n\t\t\tif (n.m_sign == 0)\n\t\t\t\treturn this;\n\n\t\t\tif (m_sign == 0)\n\t\t\t\treturn n.Negate();\n\n\t\t\tif (m_sign != n.m_sign)\n\t\t\t\treturn Add(n.Negate());\n\n\t\t\tint compare = CompareNoLeadingZeroes(0, m_magnitude, 0, n.m_magnitude);\n\t\t\tif (compare == 0)\n\t\t\t\treturn Zero;\n\n\t\t\tNetBigInteger bigun, lilun;\n\t\t\tif (compare < 0)\n\t\t\t{\n\t\t\t\tbigun = n;\n\t\t\t\tlilun = this;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tbigun = this;\n\t\t\t\tlilun = n;\n\t\t\t}\n\n\t\t\treturn new NetBigInteger(m_sign * compare, doSubBigLil(bigun.m_magnitude, lilun.m_magnitude), true);\n\t\t}\n\n\t\tprivate static int[] doSubBigLil(\n\t\t\tint[] bigMag,\n\t\t\tint[] lilMag)\n\t\t{\n\t\t\tint[] res = (int[])bigMag.Clone();\n\n\t\t\treturn Subtract(0, res, 0, lilMag);\n\t\t}\n\n\t\tpublic byte[] ToByteArray()\n\t\t{\n\t\t\treturn ToByteArray(false);\n\t\t}\n\n\t\tpublic byte[] ToByteArrayUnsigned()\n\t\t{\n\t\t\treturn ToByteArray(true);\n\t\t}\n\n\t\tprivate byte[] ToByteArray(\n\t\t\tbool unsigned)\n\t\t{\n\t\t\tif (m_sign == 0)\n\t\t\t\treturn unsigned ? ZeroEncoding : new byte[1];\n\n\t\t\tint nBits = (unsigned && m_sign > 0)\n\t\t\t\t? BitLength\n\t\t\t\t: BitLength + 1;\n\n\t\t\tint nBytes = GetByteLength(nBits);\n\t\t\tbyte[] bytes = new byte[nBytes];\n\n\t\t\tint magIndex = m_magnitude.Length;\n\t\t\tint bytesIndex = bytes.Length;\n\n\t\t\tif (m_sign > 0)\n\t\t\t{\n\t\t\t\twhile (magIndex > 1)\n\t\t\t\t{\n\t\t\t\t\tuint mag = (uint)m_magnitude[--magIndex];\n\t\t\t\t\tbytes[--bytesIndex] = (byte)mag;\n\t\t\t\t\tbytes[--bytesIndex] = (byte)(mag >> 8);\n\t\t\t\t\tbytes[--bytesIndex] = (byte)(mag >> 16);\n\t\t\t\t\tbytes[--bytesIndex] = (byte)(mag >> 24);\n\t\t\t\t}\n\n\t\t\t\tuint lastMag = (uint)m_magnitude[0];\n\t\t\t\twhile (lastMag > byte.MaxValue)\n\t\t\t\t{\n\t\t\t\t\tbytes[--bytesIndex] = (byte)lastMag;\n\t\t\t\t\tlastMag >>= 8;\n\t\t\t\t}\n\n\t\t\t\tbytes[--bytesIndex] = (byte)lastMag;\n\t\t\t}\n\t\t\telse // sign < 0\n\t\t\t{\n\t\t\t\tbool carry = true;\n\n\t\t\t\twhile (magIndex > 1)\n\t\t\t\t{\n\t\t\t\t\tuint mag = ~((uint)m_magnitude[--magIndex]);\n\n\t\t\t\t\tif (carry)\n\t\t\t\t\t{\n\t\t\t\t\t\tcarry = (++mag == uint.MinValue);\n\t\t\t\t\t}\n\n\t\t\t\t\tbytes[--bytesIndex] = (byte)mag;\n\t\t\t\t\tbytes[--bytesIndex] = (byte)(mag >> 8);\n\t\t\t\t\tbytes[--bytesIndex] = (byte)(mag >> 16);\n\t\t\t\t\tbytes[--bytesIndex] = (byte)(mag >> 24);\n\t\t\t\t}\n\n\t\t\t\tuint lastMag = (uint)m_magnitude[0];\n\n\t\t\t\tif (carry)\n\t\t\t\t{\n\t\t\t\t\t// Never wraps because magnitude[0] != 0\n\t\t\t\t\t--lastMag;\n\t\t\t\t}\n\n\t\t\t\twhile (lastMag > byte.MaxValue)\n\t\t\t\t{\n\t\t\t\t\tbytes[--bytesIndex] = (byte)~lastMag;\n\t\t\t\t\tlastMag >>= 8;\n\t\t\t\t}\n\n\t\t\t\tbytes[--bytesIndex] = (byte)~lastMag;\n\n\t\t\t\tif (bytesIndex > 0)\n\t\t\t\t{\n\t\t\t\t\tbytes[--bytesIndex] = byte.MaxValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn bytes;\n\t\t}\n\n\t\tpublic override string ToString()\n\t\t{\n\t\t\treturn ToString(10);\n\t\t}\n\n\t\tpublic string ToString(\n\t\t\tint radix)\n\t\t{\n\t\t\tswitch (radix)\n\t\t\t{\n\t\t\t\tcase 2:\n\t\t\t\tcase 10:\n\t\t\t\tcase 16:\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new FormatException(\"Only bases 2, 10, 16 are allowed\");\n\t\t\t}\n\n\t\t\t// NB: Can only happen to internally managed instances\n\t\t\tif (m_magnitude == null)\n\t\t\t\treturn \"null\";\n\n\t\t\tif (m_sign == 0)\n\t\t\t\treturn \"0\";\n\n\t\t\tDebug.Assert(m_magnitude.Length > 0);\n\n\t\t\tStringBuilder sb = new StringBuilder();\n\n\t\t\tif (radix == 16)\n\t\t\t{\n\t\t\t\tsb.Append(m_magnitude[0].ToString(\"x\"));\n\n\t\t\t\tfor (int i = 1; i < m_magnitude.Length; i++)\n\t\t\t\t{\n\t\t\t\t\tsb.Append(m_magnitude[i].ToString(\"x8\"));\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (radix == 2)\n\t\t\t{\n\t\t\t\tsb.Append('1');\n\n\t\t\t\tfor (int i = BitLength - 2; i >= 0; --i)\n\t\t\t\t{\n\t\t\t\t\tsb.Append(TestBit(i) ? '1' : '0');\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t// This is algorithm 1a from chapter 4.4 in Seminumerical Algorithms, slow but it works\n\t\t\t\tStack S = new Stack();\n\t\t\t\tNetBigInteger bs = ValueOf(radix);\n\n\t\t\t\tNetBigInteger u = Abs();\n\t\t\t\tNetBigInteger b;\n\n\t\t\t\twhile (u.m_sign != 0)\n\t\t\t\t{\n\t\t\t\t\tb = u.Mod(bs);\n\t\t\t\t\tif (b.m_sign == 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tS.Push(\"0\");\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\t// see how to interact with different bases\n\t\t\t\t\t\tS.Push(b.m_magnitude[0].ToString(\"d\"));\n\t\t\t\t\t}\n\t\t\t\t\tu = u.Divide(bs);\n\t\t\t\t}\n\n\t\t\t\t// Then pop the stack\n\t\t\t\twhile (S.Count != 0)\n\t\t\t\t{\n\t\t\t\t\tsb.Append((string)S.Pop());\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tstring s = sb.ToString();\n\n\t\t\tDebug.Assert(s.Length > 0);\n\n\t\t\t// Strip leading zeros. (We know this number is not all zeroes though)\n\t\t\tif (s[0] == '0')\n\t\t\t{\n\t\t\t\tint nonZeroPos = 0;\n\t\t\t\twhile (s[++nonZeroPos] == '0') { }\n\n\t\t\t\ts = s.Substring(nonZeroPos);\n\t\t\t}\n\n\t\t\tif (m_sign == -1)\n\t\t\t{\n\t\t\t\ts = \"-\" + s;\n\t\t\t}\n\n\t\t\treturn s;\n\t\t}\n\n\t\tprivate static NetBigInteger createUValueOf(\n\t\t\tulong value)\n\t\t{\n\t\t\tint msw = (int)(value >> 32);\n\t\t\tint lsw = (int)value;\n\n\t\t\tif (msw != 0)\n\t\t\t\treturn new NetBigInteger(1, new int[] { msw, lsw }, false);\n\n\t\t\tif (lsw != 0)\n\t\t\t{\n\t\t\t\tNetBigInteger n = new NetBigInteger(1, new int[] { lsw }, false);\n\t\t\t\t// Check for a power of two\n\t\t\t\tif ((lsw & -lsw) == lsw)\n\t\t\t\t{\n\t\t\t\t\tn.m_numBits = 1;\n\t\t\t\t}\n\t\t\t\treturn n;\n\t\t\t}\n\n\t\t\treturn Zero;\n\t\t}\n\n\t\tprivate static NetBigInteger createValueOf(\n\t\t\tlong value)\n\t\t{\n\t\t\tif (value < 0)\n\t\t\t{\n\t\t\t\tif (value == long.MinValue)\n\t\t\t\t\treturn createValueOf(~value).Not();\n\n\t\t\t\treturn createValueOf(-value).Negate();\n\t\t\t}\n\n\t\t\treturn createUValueOf((ulong)value);\n\t\t}\n\n\t\tpublic static NetBigInteger ValueOf(\n\t\t\tlong value)\n\t\t{\n\t\t\tswitch (value)\n\t\t\t{\n\t\t\t\tcase 0:\n\t\t\t\t\treturn Zero;\n\t\t\t\tcase 1:\n\t\t\t\t\treturn One;\n\t\t\t\tcase 2:\n\t\t\t\t\treturn Two;\n\t\t\t\tcase 3:\n\t\t\t\t\treturn Three;\n\t\t\t\tcase 10:\n\t\t\t\t\treturn Ten;\n\t\t\t}\n\n\t\t\treturn createValueOf(value);\n\t\t}\n\n\t\tpublic int GetLowestSetBit()\n\t\t{\n\t\t\tif (m_sign == 0)\n\t\t\t\treturn -1;\n\n\t\t\tint w = m_magnitude.Length;\n\n\t\t\twhile (--w > 0)\n\t\t\t{\n\t\t\t\tif (m_magnitude[w] != 0)\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tint word = (int)m_magnitude[w];\n\t\t\tDebug.Assert(word != 0);\n\n\t\t\tint b = (word & 0x0000FFFF) == 0\n\t\t\t\t? (word & 0x00FF0000) == 0\n\t\t\t\t\t? 7\n\t\t\t\t\t: 15\n\t\t\t\t: (word & 0x000000FF) == 0\n\t\t\t\t\t? 23\n\t\t\t\t\t: 31;\n\n\t\t\twhile (b > 0)\n\t\t\t{\n\t\t\t\tif ((word << b) == int.MinValue)\n\t\t\t\t\tbreak;\n\n\t\t\t\tb--;\n\t\t\t}\n\n\t\t\treturn ((m_magnitude.Length - w) * 32 - (b + 1));\n\t\t}\n\n\t\tpublic bool TestBit(\n\t\t\tint n)\n\t\t{\n\t\t\tif (n < 0)\n\t\t\t\tthrow new ArithmeticException(\"Bit position must not be negative\");\n\n\t\t\tif (m_sign < 0)\n\t\t\t\treturn !Not().TestBit(n);\n\n\t\t\tint wordNum = n / 32;\n\t\t\tif (wordNum >= m_magnitude.Length)\n\t\t\t\treturn false;\n\n\t\t\tint word = m_magnitude[m_magnitude.Length - 1 - wordNum];\n\t\t\treturn ((word >> (n % 32)) & 1) > 0;\n\t\t}\n\t}\n}"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Lidgren/NetBitVector.cs",
    "content": "﻿/* Copyright (c) 2010 Michael Lidgren\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software\nand associated documentation files (the \"Software\"), to deal in the Software without\nrestriction, including without limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to permit persons to whom\nthe Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or\nsubstantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\nINCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR\nPURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\nUSE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\nusing System;\nusing System.Text;\n\nnamespace Lidgren.Network\n{\n\t/// <summary>\n\t/// Fixed size vector of booleans\n\t/// </summary>\n\tpublic sealed class NetBitVector\n\t{\n\t\tprivate readonly int m_capacity;\n\t\tprivate readonly int[] m_data;\n\t\tprivate int m_numBitsSet;\n\n\t\t/// <summary>\n\t\t/// Gets the number of bits/booleans stored in this vector\n\t\t/// </summary>\n\t\tpublic int Capacity { get { return m_capacity; } }\n\n\t\t/// <summary>\n\t\t/// NetBitVector constructor\n\t\t/// </summary>\n\t\tpublic NetBitVector(int bitsCapacity)\n\t\t{\n\t\t\tm_capacity = bitsCapacity;\n\t\t\tm_data = new int[(bitsCapacity + 31) / 32];\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Returns true if all bits/booleans are set to zero/false\n\t\t/// </summary>\n\t\tpublic bool IsEmpty()\n\t\t{\n\t\t\treturn (m_numBitsSet == 0);\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Returns the number of bits/booleans set to one/true\n\t\t/// </summary>\n\t\t/// <returns></returns>\n\t\tpublic int Count()\n\t\t{\n\t\t\treturn m_numBitsSet;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Shift all bits one step down, cycling the first bit to the top\n\t\t/// </summary>\n\t\tpublic void RotateDown()\n\t\t{\n\t\t\tint lenMinusOne = m_data.Length - 1;\n\n\t\t\tint firstBit = m_data[0] & 1;\n\t\t\tfor (int i = 0; i < lenMinusOne; i++)\n\t\t\t\tm_data[i] = ((m_data[i] >> 1) & ~(1 << 31)) | m_data[i + 1] << 31;\n\n\t\t\tint lastIndex = m_capacity - 1 - (32 * lenMinusOne);\n\n\t\t\t// special handling of last int\n\t\t\tint cur = m_data[lenMinusOne];\n\t\t\tcur = cur >> 1;\n\t\t\tcur |= firstBit << lastIndex;\n\n\t\t\tm_data[lenMinusOne] = cur;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Gets the first (lowest) index set to true\n\t\t/// </summary>\n\t\tpublic int GetFirstSetIndex()\n\t\t{\n\t\t\tint idx = 0;\n\n\t\t\tint data = m_data[0];\n\t\t\twhile (data == 0)\n\t\t\t{\n\t\t\t\tidx++;\n\t\t\t\tdata = m_data[idx];\n\t\t\t}\n\n\t\t\tint a = 0;\n\t\t\twhile (((data >> a) & 1) == 0)\n\t\t\t\ta++;\n\n\t\t\treturn (idx * 32) + a;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Gets the bit/bool at the specified index\n\t\t/// </summary>\n\t\tpublic bool Get(int bitIndex)\n\t\t{\n\t\t\tNetException.Assert(bitIndex >= 0 && bitIndex < m_capacity);\n\n\t\t\treturn (m_data[bitIndex / 32] & (1 << (bitIndex % 32))) != 0;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Sets or clears the bit/bool at the specified index\n\t\t/// </summary>\n\t\tpublic void Set(int bitIndex, bool value)\n\t\t{\n\t\t\tNetException.Assert(bitIndex >= 0 && bitIndex < m_capacity);\n\n\t\t\tint idx = bitIndex / 32;\n\t\t\tif (value)\n\t\t\t{\n\t\t\t\tif ((m_data[idx] & (1 << (bitIndex % 32))) == 0)\n\t\t\t\t\tm_numBitsSet++;\n\t\t\t\tm_data[idx] |= (1 << (bitIndex % 32));\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tif ((m_data[idx] & (1 << (bitIndex % 32))) != 0)\n\t\t\t\t\tm_numBitsSet--;\n\t\t\t\tm_data[idx] &= (~(1 << (bitIndex % 32)));\n\t\t\t}\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Gets the bit/bool at the specified index\n\t\t/// </summary>\n\t\t[System.Runtime.CompilerServices.IndexerName(\"Bit\")]\n\t\tpublic bool this[int index]\n\t\t{\n\t\t\tget { return Get(index); }\n\t\t\tset { Set(index, value); }\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Sets all bits/booleans to zero/false\n\t\t/// </summary>\n\t\tpublic void Clear()\n\t\t{\n\t\t\tArray.Clear(m_data, 0, m_data.Length);\n\t\t\tm_numBitsSet = 0;\n\t\t\tNetException.Assert(this.IsEmpty());\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Returns a string that represents this object\n\t\t/// </summary>\n\t\tpublic override string ToString()\n\t\t{\n\t\t\tStringBuilder bdr = new StringBuilder(m_capacity + 2);\n\t\t\tbdr.Append('[');\n\t\t\tfor (int i = 0; i < m_capacity; i++)\n\t\t\t\tbdr.Append(Get(m_capacity - i - 1) ? '1' : '0');\n\t\t\tbdr.Append(']');\n\t\t\treturn bdr.ToString();\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Lidgren/NetBitWriter.cs",
    "content": "﻿//#define UNSAFE\n//#define BIGENDIAN\n/* Copyright (c) 2010 Michael Lidgren\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software\nand associated documentation files (the \"Software\"), to deal in the Software without\nrestriction, including without limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to permit persons to whom\nthe Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or\nsubstantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\nINCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR\nPURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\nUSE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\nusing System;\nusing System.Collections.Generic;\n\nusing System.Diagnostics;\n\nnamespace Lidgren.Network\n{\n\t/// <summary>\n\t/// Helper class for NetBuffer to write/read bits\n\t/// </summary>\n\tpublic static class NetBitWriter\n\t{\n\t\t/// <summary>\n\t\t/// Read 1-8 bits from a buffer into a byte\n\t\t/// </summary>\n\t\tpublic static byte ReadByte(byte[] fromBuffer, int numberOfBits, int readBitOffset)\n\t\t{\n\t\t\tNetException.Assert(((numberOfBits > 0) && (numberOfBits < 9)), \"Read() can only read between 1 and 8 bits\");\n\n\t\t\tint bytePtr = readBitOffset >> 3;\n\t\t\tint startReadAtIndex = readBitOffset - (bytePtr * 8); // (readBitOffset % 8);\n\n\t\t\tif (startReadAtIndex == 0 && numberOfBits == 8)\n\t\t\t\treturn fromBuffer[bytePtr];\n\n\t\t\t// mask away unused bits lower than (right of) relevant bits in first byte\n\t\t\tbyte returnValue = (byte)(fromBuffer[bytePtr] >> startReadAtIndex);\n\n\t\t\tint numberOfBitsInSecondByte = numberOfBits - (8 - startReadAtIndex);\n\n\t\t\tif (numberOfBitsInSecondByte < 1)\n\t\t\t{\n\t\t\t\t// we don't need to read from the second byte, but we DO need\n\t\t\t\t// to mask away unused bits higher than (left of) relevant bits\n\t\t\t\treturn (byte)(returnValue & (255 >> (8 - numberOfBits)));\n\t\t\t}\n\n\t\t\tbyte second = fromBuffer[bytePtr + 1];\n\n\t\t\t// mask away unused bits higher than (left of) relevant bits in second byte\n\t\t\tsecond &= (byte)(255 >> (8 - numberOfBitsInSecondByte));\n\n\t\t\treturn (byte)(returnValue | (byte)(second << (numberOfBits - numberOfBitsInSecondByte)));\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Read several bytes from a buffer\n\t\t/// </summary>\n\t\tpublic static void ReadBytes(byte[] fromBuffer, int numberOfBytes, int readBitOffset, byte[] destination, int destinationByteOffset)\n\t\t{\n\t\t\tint readPtr = readBitOffset >> 3;\n\t\t\tint startReadAtIndex = readBitOffset - (readPtr * 8); // (readBitOffset % 8);\n\n\t\t\tif (startReadAtIndex == 0)\n\t\t\t{\n\t\t\t\tBuffer.BlockCopy(fromBuffer, readPtr, destination, destinationByteOffset, numberOfBytes);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tint secondPartLen = 8 - startReadAtIndex;\n\t\t\tint secondMask = 255 >> secondPartLen;\n\n\t\t\tfor (int i = 0; i < numberOfBytes; i++)\n\t\t\t{\n\t\t\t\t// mask away unused bits lower than (right of) relevant bits in byte\n\t\t\t\tint b = fromBuffer[readPtr] >> startReadAtIndex;\n\n\t\t\t\treadPtr++;\n\n\t\t\t\t// mask away unused bits higher than (left of) relevant bits in second byte\n\t\t\t\tint second = fromBuffer[readPtr] & secondMask;\n\n\t\t\t\tdestination[destinationByteOffset++] = (byte)(b | (second << secondPartLen));\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Write a byte consisting of 1-8 bits to a buffer; assumes buffer is previously allocated\n\t\t/// </summary>\n\t\tpublic static void WriteByte(byte source, int numberOfBits, byte[] destination, int destBitOffset)\n\t\t{\n\t\t\tNetException.Assert(((numberOfBits >= 1) && (numberOfBits <= 8)), \"Must write between 1 and 8 bits!\");\n\n\t\t\t// mask out unwanted bits in the source\n\t\t\tbyte isrc = (byte)((uint)source & ((~(uint)0) >> (8 - numberOfBits)));\n\n\t\t\tint bytePtr = destBitOffset >> 3;\n\n\t\t\tint localBitLen = (destBitOffset % 8);\n\t\t\tif (localBitLen == 0)\n\t\t\t{\n\t\t\t\tdestination[bytePtr] = (byte)isrc;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t//destination[bytePtr] &= (byte)(255 >> (8 - localBitLen)); // clear before writing\n\t\t\t//destination[bytePtr] |= (byte)(isrc << localBitLen); // write first half\n\t\t\tdestination[bytePtr] = (byte)(\n\t\t\t\t(uint)(destination[bytePtr] & (255 >> (8 - localBitLen))) |\n\t\t\t\t(uint)(isrc << localBitLen)\n\t\t\t);\n\n\t\t\t// need write into next byte?\n\t\t\tif (localBitLen + numberOfBits > 8)\n\t\t\t{\n\t\t\t\t//destination[bytePtr + 1] &= (byte)(255 << localBitLen); // clear before writing\n\t\t\t\t//destination[bytePtr + 1] |= (byte)(isrc >> (8 - localBitLen)); // write second half\n\t\t\t\tdestination[bytePtr + 1] = (byte)(\n\t\t\t\t\t(uint)(destination[bytePtr + 1] & (255 << localBitLen)) |\n\t\t\t\t\t(uint)(isrc >> (8 - localBitLen))\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Write several whole bytes\n\t\t/// </summary>\n\t\tpublic static void WriteBytes(byte[] source, int sourceByteOffset, int numberOfBytes, byte[] destination, int destBitOffset)\n\t\t{\n\t\t\tint dstBytePtr = destBitOffset >> 3;\n\t\t\tint firstPartLen = (destBitOffset % 8);\n\n\t\t\tif (firstPartLen == 0)\n\t\t\t{\n\t\t\t\tBuffer.BlockCopy(source, sourceByteOffset, destination, dstBytePtr, numberOfBytes);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tint lastPartLen = 8 - firstPartLen;\n\n\t\t\tfor (int i = 0; i < numberOfBytes; i++)\n\t\t\t{\n\t\t\t\tbyte src = source[sourceByteOffset + i];\n\n\t\t\t\t// write last part of this byte\n\t\t\t\tdestination[dstBytePtr] &= (byte)(255 >> lastPartLen); // clear before writing\n\t\t\t\tdestination[dstBytePtr] |= (byte)(src << firstPartLen); // write first half\n\n\t\t\t\tdstBytePtr++;\n\n\t\t\t\t// write first part of next byte\n\t\t\t\tdestination[dstBytePtr] &= (byte)(255 << firstPartLen); // clear before writing\n\t\t\t\tdestination[dstBytePtr] |= (byte)(src >> lastPartLen); // write second half\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\t[CLSCompliant(false)]\n#if UNSAFE\n\t\tpublic static unsafe ushort ReadUInt16(byte[] fromBuffer, int numberOfBits, int readBitOffset)\n\t\t{\n\t\t\tDebug.Assert(((numberOfBits > 0) && (numberOfBits <= 16)), \"ReadUInt16() can only read between 1 and 16 bits\");\n\n\t\t\tif (numberOfBits == 16 && ((readBitOffset % 8) == 0))\n\t\t\t{\n\t\t\t\tfixed (byte* ptr = &(fromBuffer[readBitOffset / 8]))\n\t\t\t\t{\n\t\t\t\t\treturn *(((ushort*)ptr));\n\t\t\t\t}\n\t\t\t}\n#else\n\t\tpublic static ushort ReadUInt16(byte[] fromBuffer, int numberOfBits, int readBitOffset)\n\t\t{\n\t\t\tDebug.Assert(((numberOfBits > 0) && (numberOfBits <= 16)), \"ReadUInt16() can only read between 1 and 16 bits\");\n#endif\n\t\t\tushort returnValue;\n\t\t\tif (numberOfBits <= 8)\n\t\t\t{\n\t\t\t\treturnValue = ReadByte(fromBuffer, numberOfBits, readBitOffset);\n\t\t\t\treturn returnValue;\n\t\t\t}\n\t\t\treturnValue = ReadByte(fromBuffer, 8, readBitOffset);\n\t\t\tnumberOfBits -= 8;\n\t\t\treadBitOffset += 8;\n\n\t\t\tif (numberOfBits <= 8)\n\t\t\t{\n\t\t\t\treturnValue |= (ushort)(ReadByte(fromBuffer, numberOfBits, readBitOffset) << 8);\n\t\t\t}\n\n#if BIGENDIAN\n\t\t\t// reorder bytes\n\t\t\tuint retVal = returnValue;\n\t\t\tretVal = ((retVal & 0x0000ff00) >> 8) | ((retVal & 0x000000ff) << 8);\n\t\t\treturn (ushort)retVal;\n#else\n\t\t\treturn returnValue;\n#endif\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Reads the specified number of bits into an UInt32\n\t\t/// </summary>\n\t\t[CLSCompliant(false)]\n#if UNSAFE\n\t\tpublic static unsafe uint ReadUInt32(byte[] fromBuffer, int numberOfBits, int readBitOffset)\n\t\t{\n\t\t\tNetException.Assert(((numberOfBits > 0) && (numberOfBits <= 32)), \"ReadUInt32() can only read between 1 and 32 bits\");\n\n\t\t\tif (numberOfBits == 32 && ((readBitOffset % 8) == 0))\n\t\t\t{\n\t\t\t\tfixed (byte* ptr = &(fromBuffer[readBitOffset / 8]))\n\t\t\t\t{\n\t\t\t\t\treturn *(((uint*)ptr));\n\t\t\t\t}\n\t\t\t}\n#else\n\t\t\n\t\tpublic static uint ReadUInt32(byte[] fromBuffer, int numberOfBits, int readBitOffset)\n\t\t{\n\t\t\tNetException.Assert(((numberOfBits > 0) && (numberOfBits <= 32)), \"ReadUInt32() can only read between 1 and 32 bits\");\n#endif\n\t\t\tuint returnValue;\n\t\t\tif (numberOfBits <= 8)\n\t\t\t{\n\t\t\t\treturnValue = ReadByte(fromBuffer, numberOfBits, readBitOffset);\n\t\t\t\treturn returnValue;\n\t\t\t}\n\t\t\treturnValue = ReadByte(fromBuffer, 8, readBitOffset);\n\t\t\tnumberOfBits -= 8;\n\t\t\treadBitOffset += 8;\n\n\t\t\tif (numberOfBits <= 8)\n\t\t\t{\n\t\t\t\treturnValue |= (uint)(ReadByte(fromBuffer, numberOfBits, readBitOffset) << 8);\n\t\t\t\treturn returnValue;\n\t\t\t}\n\t\t\treturnValue |= (uint)(ReadByte(fromBuffer, 8, readBitOffset) << 8);\n\t\t\tnumberOfBits -= 8;\n\t\t\treadBitOffset += 8;\n\n\t\t\tif (numberOfBits <= 8)\n\t\t\t{\n\t\t\t\tuint r = ReadByte(fromBuffer, numberOfBits, readBitOffset);\n\t\t\t\tr <<= 16;\n\t\t\t\treturnValue |= r;\n\t\t\t\treturn returnValue;\n\t\t\t}\n\t\t\treturnValue |= (uint)(ReadByte(fromBuffer, 8, readBitOffset) << 16);\n\t\t\tnumberOfBits -= 8;\n\t\t\treadBitOffset += 8;\n\n\t\t\treturnValue |= (uint)(ReadByte(fromBuffer, numberOfBits, readBitOffset) << 24);\n\n#if BIGENDIAN\n\t\t\t// reorder bytes\n\t\t\treturn\n\t\t\t\t((returnValue & 0xff000000) >> 24) |\n\t\t\t\t((returnValue & 0x00ff0000) >> 8) |\n\t\t\t\t((returnValue & 0x0000ff00) << 8) |\n\t\t\t\t((returnValue & 0x000000ff) << 24);\n#else\n\t\t\treturn returnValue;\n#endif\n\t\t}\n\n\t\t//[CLSCompliant(false)]\n\t\t//public static ulong ReadUInt64(byte[] fromBuffer, int numberOfBits, int readBitOffset)\n\n\t\t[CLSCompliant(false)]\n\t\tpublic static int WriteUInt16(ushort source, int numberOfBits, byte[] destination, int destinationBitOffset)\n\t\t{\n#if BIGENDIAN\n\t\t\t// reorder bytes\n\t\t\tuint intSource = source;\n\t\t\tintSource = ((intSource & 0x0000ff00) >> 8) | ((intSource & 0x000000ff) << 8);\n\t\t\tsource = (ushort)intSource;\n#endif\n\n\t\t\tint returnValue = destinationBitOffset + numberOfBits;\n\t\t\tif (numberOfBits <= 8)\n\t\t\t{\n\t\t\t\tNetBitWriter.WriteByte((byte)source, numberOfBits, destination, destinationBitOffset);\n\t\t\t\treturn returnValue;\n\t\t\t}\n\t\t\tNetBitWriter.WriteByte((byte)source, 8, destination, destinationBitOffset);\n\t\t\tdestinationBitOffset += 8;\n\t\t\tnumberOfBits -= 8;\n\n\t\t\tif (numberOfBits <= 8)\n\t\t\t{\n\t\t\t\tNetBitWriter.WriteByte((byte)(source >> 8), numberOfBits, destination, destinationBitOffset);\n\t\t\t\treturn returnValue;\n\t\t\t}\n\n\t\t\treturn returnValue;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Writes the specified number of bits into a byte array\n\t\t/// </summary>\n\t\t[CLSCompliant(false)]\n\t\tpublic static int WriteUInt32(uint source, int numberOfBits, byte[] destination, int destinationBitOffset)\n\t\t{\n#if BIGENDIAN\n\t\t\t// reorder bytes\n\t\t\tsource = ((source & 0xff000000) >> 24) |\n\t\t\t\t((source & 0x00ff0000) >> 8) |\n\t\t\t\t((source & 0x0000ff00) << 8) |\n\t\t\t\t((source & 0x000000ff) << 24);\n#endif\n\n\t\t\tint returnValue = destinationBitOffset + numberOfBits;\n\t\t\tif (numberOfBits <= 8)\n\t\t\t{\n\t\t\t\tNetBitWriter.WriteByte((byte)source, numberOfBits, destination, destinationBitOffset);\n\t\t\t\treturn returnValue;\n\t\t\t}\n\t\t\tNetBitWriter.WriteByte((byte)source, 8, destination, destinationBitOffset);\n\t\t\tdestinationBitOffset += 8;\n\t\t\tnumberOfBits -= 8;\n\n\t\t\tif (numberOfBits <= 8)\n\t\t\t{\n\t\t\t\tNetBitWriter.WriteByte((byte)(source >> 8), numberOfBits, destination, destinationBitOffset);\n\t\t\t\treturn returnValue;\n\t\t\t}\n\t\t\tNetBitWriter.WriteByte((byte)(source >> 8), 8, destination, destinationBitOffset);\n\t\t\tdestinationBitOffset += 8;\n\t\t\tnumberOfBits -= 8;\n\n\t\t\tif (numberOfBits <= 8)\n\t\t\t{\n\t\t\t\tNetBitWriter.WriteByte((byte)(source >> 16), numberOfBits, destination, destinationBitOffset);\n\t\t\t\treturn returnValue;\n\t\t\t}\n\t\t\tNetBitWriter.WriteByte((byte)(source >> 16), 8, destination, destinationBitOffset);\n\t\t\tdestinationBitOffset += 8;\n\t\t\tnumberOfBits -= 8;\n\n\t\t\tNetBitWriter.WriteByte((byte)(source >> 24), numberOfBits, destination, destinationBitOffset);\n\t\t\treturn returnValue;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Writes the specified number of bits into a byte array\n\t\t/// </summary>\n\t\t[CLSCompliant(false)]\n\t\tpublic static int WriteUInt64(ulong source, int numberOfBits, byte[] destination, int destinationBitOffset)\n\t\t{\n#if BIGENDIAN\n\t\t\tsource = ((source & 0xff00000000000000L) >> 56) |\n\t\t\t\t((source & 0x00ff000000000000L) >> 40) |\n\t\t\t\t((source & 0x0000ff0000000000L) >> 24) |\n\t\t\t\t((source & 0x000000ff00000000L) >> 8) |\n\t\t\t\t((source & 0x00000000ff000000L) << 8) |\n\t\t\t\t((source & 0x0000000000ff0000L) << 24) |\n\t\t\t\t((source & 0x000000000000ff00L) << 40) |\n\t\t\t\t((source & 0x00000000000000ffL) << 56);\n#endif\n\n\t\t\tint returnValue = destinationBitOffset + numberOfBits;\n\t\t\tif (numberOfBits <= 8)\n\t\t\t{\n\t\t\t\tNetBitWriter.WriteByte((byte)source, numberOfBits, destination, destinationBitOffset);\n\t\t\t\treturn returnValue;\n\t\t\t}\n\t\t\tNetBitWriter.WriteByte((byte)source, 8, destination, destinationBitOffset);\n\t\t\tdestinationBitOffset += 8;\n\t\t\tnumberOfBits -= 8;\n\n\t\t\tif (numberOfBits <= 8)\n\t\t\t{\n\t\t\t\tNetBitWriter.WriteByte((byte)(source >> 8), numberOfBits, destination, destinationBitOffset);\n\t\t\t\treturn returnValue;\n\t\t\t}\n\t\t\tNetBitWriter.WriteByte((byte)(source >> 8), 8, destination, destinationBitOffset);\n\t\t\tdestinationBitOffset += 8;\n\t\t\tnumberOfBits -= 8;\n\n\t\t\tif (numberOfBits <= 8)\n\t\t\t{\n\t\t\t\tNetBitWriter.WriteByte((byte)(source >> 16), numberOfBits, destination, destinationBitOffset);\n\t\t\t\treturn returnValue;\n\t\t\t}\n\t\t\tNetBitWriter.WriteByte((byte)(source >> 16), 8, destination, destinationBitOffset);\n\t\t\tdestinationBitOffset += 8;\n\t\t\tnumberOfBits -= 8;\n\n\t\t\tif (numberOfBits <= 8)\n\t\t\t{\n\t\t\t\tNetBitWriter.WriteByte((byte)(source >> 24), numberOfBits, destination, destinationBitOffset);\n\t\t\t\treturn returnValue;\n\t\t\t}\n\t\t\tNetBitWriter.WriteByte((byte)(source >> 24), 8, destination, destinationBitOffset);\n\t\t\tdestinationBitOffset += 8;\n\t\t\tnumberOfBits -= 8;\n\n\t\t\tif (numberOfBits <= 8)\n\t\t\t{\n\t\t\t\tNetBitWriter.WriteByte((byte)(source >> 32), numberOfBits, destination, destinationBitOffset);\n\t\t\t\treturn returnValue;\n\t\t\t}\n\t\t\tNetBitWriter.WriteByte((byte)(source >> 32), 8, destination, destinationBitOffset);\n\t\t\tdestinationBitOffset += 8;\n\t\t\tnumberOfBits -= 8;\n\n\t\t\tif (numberOfBits <= 8)\n\t\t\t{\n\t\t\t\tNetBitWriter.WriteByte((byte)(source >> 40), numberOfBits, destination, destinationBitOffset);\n\t\t\t\treturn returnValue;\n\t\t\t}\n\t\t\tNetBitWriter.WriteByte((byte)(source >> 40), 8, destination, destinationBitOffset);\n\t\t\tdestinationBitOffset += 8;\n\t\t\tnumberOfBits -= 8;\n\n\t\t\tif (numberOfBits <= 8)\n\t\t\t{\n\t\t\t\tNetBitWriter.WriteByte((byte)(source >> 48), numberOfBits, destination, destinationBitOffset);\n\t\t\t\treturn returnValue;\n\t\t\t}\n\t\t\tNetBitWriter.WriteByte((byte)(source >> 48), 8, destination, destinationBitOffset);\n\t\t\tdestinationBitOffset += 8;\n\t\t\tnumberOfBits -= 8;\n\n\t\t\tif (numberOfBits <= 8)\n\t\t\t{\n\t\t\t\tNetBitWriter.WriteByte((byte)(source >> 56), numberOfBits, destination, destinationBitOffset);\n\t\t\t\treturn returnValue;\n\t\t\t}\n\t\t\tNetBitWriter.WriteByte((byte)(source >> 56), 8, destination, destinationBitOffset);\n\t\t\tdestinationBitOffset += 8;\n\t\t\tnumberOfBits -= 8;\n\n\t\t\treturn returnValue;\n\t\t}\n\n\t\t//\n\t\t// Variable size\n\t\t//\n\n\t\t/// <summary>\n\t\t/// Write Base128 encoded variable sized unsigned integer\n\t\t/// </summary>\n\t\t/// <returns>number of bytes written</returns>\n\t\t[CLSCompliant(false)]\n\t\tpublic static int WriteVariableUInt32(byte[] intoBuffer, int offset, uint value)\n\t\t{\n\t\t\tint retval = 0;\n\t\t\tuint num1 = (uint)value;\n\t\t\twhile (num1 >= 0x80)\n\t\t\t{\n\t\t\t\tintoBuffer[offset + retval] = (byte)(num1 | 0x80);\n\t\t\t\tnum1 = num1 >> 7;\n\t\t\t\tretval++;\n\t\t\t}\n\t\t\tintoBuffer[offset + retval] = (byte)num1;\n\t\t\treturn retval + 1;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Reads a UInt32 written using WriteUnsignedVarInt(); will increment offset!\n\t\t/// </summary>\n\t\t[CLSCompliant(false)]\n\t\tpublic static uint ReadVariableUInt32(byte[] buffer, ref int offset)\n\t\t{\n\t\t\tint num1 = 0;\n\t\t\tint num2 = 0;\n\t\t\twhile (true)\n\t\t\t{\n\t\t\t\tif (num2 == 0x23)\n\t\t\t\t\tthrow new FormatException(\"Bad 7-bit encoded integer\");\n\n\t\t\t\tbyte num3 = buffer[offset++];\n\t\t\t\tnum1 |= (num3 & 0x7f) << (num2 & 0x1f);\n\t\t\t\tnum2 += 7;\n\t\t\t\tif ((num3 & 0x80) == 0)\n\t\t\t\t\treturn (uint)num1;\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Lidgren/NetBuffer.Peek.cs",
    "content": "﻿/* Copyright (c) 2010 Michael Lidgren\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software\nand associated documentation files (the \"Software\"), to deal in the Software without\nrestriction, including without limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to permit persons to whom\nthe Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or\nsubstantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\nINCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR\nPURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\nUSE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\nusing System;\nusing System.Diagnostics;\nusing System.Net;\n\nnamespace Lidgren.Network\n{\n\tpublic partial class NetBuffer\n\t{\n\t\t/// <summary>\n\t\t/// Gets the internal data buffer\n\t\t/// </summary>\n\t\tpublic byte[] PeekDataBuffer() { return m_data; }\n\n\t\t//\n\t\t// 1 bit\n\t\t//\n\t\t/// <summary>\n\t\t/// Reads a 1-bit Boolean without advancing the read pointer\n\t\t/// </summary>\n\t\tpublic bool PeekBoolean()\n\t\t{\n\t\t\tNetException.Assert(m_bitLength - m_readPosition >= 1, c_readOverflowError);\n\t\t\tbyte retval = NetBitWriter.ReadByte(m_data, 1, m_readPosition);\n\t\t\treturn (retval > 0 ? true : false);\n\t\t}\n\n\t\t//\n\t\t// 8 bit \n\t\t//\n\t\t/// <summary>\n\t\t/// Reads a Byte without advancing the read pointer\n\t\t/// </summary>\n\t\tpublic byte PeekByte()\n\t\t{\n\t\t\tNetException.Assert(m_bitLength - m_readPosition >= 8, c_readOverflowError);\n\t\t\tbyte retval = NetBitWriter.ReadByte(m_data, 8, m_readPosition);\n\t\t\treturn retval;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Reads an SByte without advancing the read pointer\n\t\t/// </summary>\n\t\t[CLSCompliant(false)]\n\t\tpublic sbyte PeekSByte()\n\t\t{\n\t\t\tNetException.Assert(m_bitLength - m_readPosition >= 8, c_readOverflowError);\n\t\t\tbyte retval = NetBitWriter.ReadByte(m_data, 8, m_readPosition);\n\t\t\treturn (sbyte)retval;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Reads the specified number of bits into a Byte without advancing the read pointer\n\t\t/// </summary>\n\t\tpublic byte PeekByte(int numberOfBits)\n\t\t{\n\t\t\tbyte retval = NetBitWriter.ReadByte(m_data, numberOfBits, m_readPosition);\n\t\t\treturn retval;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Reads the specified number of bytes without advancing the read pointer\n\t\t/// </summary>\n\t\tpublic byte[] PeekBytes(int numberOfBytes)\n\t\t{\n\t\t\tNetException.Assert(m_bitLength - m_readPosition >= (numberOfBytes * 8), c_readOverflowError);\n\n\t\t\tbyte[] retval = new byte[numberOfBytes];\n\t\t\tNetBitWriter.ReadBytes(m_data, numberOfBytes, m_readPosition, retval, 0);\n\t\t\treturn retval;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Reads the specified number of bytes without advancing the read pointer\n\t\t/// </summary>\n\t\tpublic void PeekBytes(byte[] into, int offset, int numberOfBytes)\n\t\t{\n\t\t\tNetException.Assert(m_bitLength - m_readPosition >= (numberOfBytes * 8), c_readOverflowError);\n\t\t\tNetException.Assert(offset + numberOfBytes <= into.Length);\n\n\t\t\tNetBitWriter.ReadBytes(m_data, numberOfBytes, m_readPosition, into, offset);\n\t\t\treturn;\n\t\t}\n\n\t\t//\n\t\t// 16 bit\n\t\t//\n\t\t/// <summary>\n\t\t/// Reads an Int16 without advancing the read pointer\n\t\t/// </summary>\n\t\tpublic Int16 PeekInt16()\n\t\t{\n\t\t\tNetException.Assert(m_bitLength - m_readPosition >= 16, c_readOverflowError);\n\t\t\tuint retval = NetBitWriter.ReadUInt16(m_data, 16, m_readPosition);\n\t\t\treturn (short)retval;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Reads a UInt16 without advancing the read pointer\n\t\t/// </summary>\n\t\t[CLSCompliant(false)]\n\t\tpublic UInt16 PeekUInt16()\n\t\t{\n\t\t\tNetException.Assert(m_bitLength - m_readPosition >= 16, c_readOverflowError);\n\t\t\tuint retval = NetBitWriter.ReadUInt16(m_data, 16, m_readPosition);\n\t\t\treturn (ushort)retval;\n\t\t}\n\n\t\t//\n\t\t// 32 bit\n\t\t//\n\t\t/// <summary>\n\t\t/// Reads an Int32 without advancing the read pointer\n\t\t/// </summary>\n\t\tpublic Int32 PeekInt32()\n\t\t{\n\t\t\tNetException.Assert(m_bitLength - m_readPosition >= 32, c_readOverflowError);\n\t\t\tuint retval = NetBitWriter.ReadUInt32(m_data, 32, m_readPosition);\n\t\t\treturn (Int32)retval;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Reads the specified number of bits into an Int32 without advancing the read pointer\n\t\t/// </summary>\n\t\tpublic Int32 PeekInt32(int numberOfBits)\n\t\t{\n\t\t\tNetException.Assert((numberOfBits > 0 && numberOfBits <= 32), \"ReadInt() can only read between 1 and 32 bits\");\n\t\t\tNetException.Assert(m_bitLength - m_readPosition >= numberOfBits, c_readOverflowError);\n\n\t\t\tuint retval = NetBitWriter.ReadUInt32(m_data, numberOfBits, m_readPosition);\n\n\t\t\tif (numberOfBits == 32)\n\t\t\t\treturn (int)retval;\n\n\t\t\tint signBit = 1 << (numberOfBits - 1);\n\t\t\tif ((retval & signBit) == 0)\n\t\t\t\treturn (int)retval; // positive\n\n\t\t\t// negative\n\t\t\tunchecked\n\t\t\t{\n\t\t\t\tuint mask = ((uint)-1) >> (33 - numberOfBits);\n\t\t\t\tuint tmp = (retval & mask) + 1;\n\t\t\t\treturn -((int)tmp);\n\t\t\t}\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Reads a UInt32 without advancing the read pointer\n\t\t/// </summary>\n\t\t[CLSCompliant(false)]\n\t\tpublic UInt32 PeekUInt32()\n\t\t{\n\t\t\tNetException.Assert(m_bitLength - m_readPosition >= 32, c_readOverflowError);\n\t\t\tuint retval = NetBitWriter.ReadUInt32(m_data, 32, m_readPosition);\n\t\t\treturn retval;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Reads the specified number of bits into a UInt32 without advancing the read pointer\n\t\t/// </summary>\n\t\t[CLSCompliant(false)]\n\t\tpublic UInt32 PeekUInt32(int numberOfBits)\n\t\t{\n\t\t\tNetException.Assert((numberOfBits > 0 && numberOfBits <= 32), \"ReadUInt() can only read between 1 and 32 bits\");\n\t\t\t//NetException.Assert(m_bitLength - m_readBitPtr >= numberOfBits, \"tried to read past buffer size\");\n\n\t\t\tUInt32 retval = NetBitWriter.ReadUInt32(m_data, numberOfBits, m_readPosition);\n\t\t\treturn retval;\n\t\t}\n\n\t\t//\n\t\t// 64 bit\n\t\t//\n\t\t/// <summary>\n\t\t/// Reads a UInt64 without advancing the read pointer\n\t\t/// </summary>\n\t\t[CLSCompliant(false)]\n\t\tpublic UInt64 PeekUInt64()\n\t\t{\n\t\t\tNetException.Assert(m_bitLength - m_readPosition >= 64, c_readOverflowError);\n\n\t\t\tulong low = NetBitWriter.ReadUInt32(m_data, 32, m_readPosition);\n\t\t\tulong high = NetBitWriter.ReadUInt32(m_data, 32, m_readPosition + 32);\n\n\t\t\tulong retval = low + (high << 32);\n\n\t\t\treturn retval;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Reads an Int64 without advancing the read pointer\n\t\t/// </summary>\n\t\tpublic Int64 PeekInt64()\n\t\t{\n\t\t\tNetException.Assert(m_bitLength - m_readPosition >= 64, c_readOverflowError);\n\t\t\tunchecked\n\t\t\t{\n\t\t\t\tulong retval = PeekUInt64();\n\t\t\t\tlong longRetval = (long)retval;\n\t\t\t\treturn longRetval;\n\t\t\t}\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Reads the specified number of bits into an UInt64 without advancing the read pointer\n\t\t/// </summary>\n\t\t[CLSCompliant(false)]\n\t\tpublic UInt64 PeekUInt64(int numberOfBits)\n\t\t{\n\t\t\tNetException.Assert((numberOfBits > 0 && numberOfBits <= 64), \"ReadUInt() can only read between 1 and 64 bits\");\n\t\t\tNetException.Assert(m_bitLength - m_readPosition >= numberOfBits, c_readOverflowError);\n\n\t\t\tulong retval;\n\t\t\tif (numberOfBits <= 32)\n\t\t\t{\n\t\t\t\tretval = (ulong)NetBitWriter.ReadUInt32(m_data, numberOfBits, m_readPosition);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tretval = NetBitWriter.ReadUInt32(m_data, 32, m_readPosition);\n\t\t\t\tretval |= NetBitWriter.ReadUInt32(m_data, numberOfBits - 32, m_readPosition) << 32;\n\t\t\t}\n\t\t\treturn retval;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Reads the specified number of bits into an Int64 without advancing the read pointer\n\t\t/// </summary>\n\t\tpublic Int64 PeekInt64(int numberOfBits)\n\t\t{\n\t\t\tNetException.Assert(((numberOfBits > 0) && (numberOfBits < 65)), \"ReadInt64(bits) can only read between 1 and 64 bits\");\n\t\t\treturn (long)PeekUInt64(numberOfBits);\n\t\t}\n\n\t\t//\n\t\t// Floating point\n\t\t//\n\t\t/// <summary>\n\t\t/// Reads a 32-bit Single without advancing the read pointer\n\t\t/// </summary>\n\t\tpublic float PeekFloat()\n\t\t{\n\t\t\treturn PeekSingle();\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Reads a 32-bit Single without advancing the read pointer\n\t\t/// </summary>\n\t\tpublic float PeekSingle()\n\t\t{\n\t\t\tNetException.Assert(m_bitLength - m_readPosition >= 32, c_readOverflowError);\n\n\t\t\tif ((m_readPosition & 7) == 0) // read directly\n\t\t\t{\n\t\t\t\tfloat retval = BitConverter.ToSingle(m_data, m_readPosition >> 3);\n\t\t\t\treturn retval;\n\t\t\t}\n\n\t\t\tbyte[] bytes = PeekBytes(4);\n\t\t\treturn BitConverter.ToSingle(bytes, 0);\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Reads a 64-bit Double without advancing the read pointer\n\t\t/// </summary>\n\t\tpublic double PeekDouble()\n\t\t{\n\t\t\tNetException.Assert(m_bitLength - m_readPosition >= 64, c_readOverflowError);\n\n\t\t\tif ((m_readPosition & 7) == 0) // read directly\n\t\t\t{\n\t\t\t\t// read directly\n\t\t\t\tdouble retval = BitConverter.ToDouble(m_data, m_readPosition >> 3);\n\t\t\t\treturn retval;\n\t\t\t}\n\n\t\t\tbyte[] bytes = PeekBytes(8);\n\t\t\treturn BitConverter.ToDouble(bytes, 0);\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Reads a string without advancing the read pointer\n\t\t/// </summary>\n\t\tpublic string PeekString()\n\t\t{\n\t\t\tint wasReadPosition = m_readPosition;\n\t\t\tstring retval = ReadString();\n\t\t\tm_readPosition = wasReadPosition;\n\t\t\treturn retval;\n\t\t}\n\t}\n}\n\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Lidgren/NetBuffer.Read.Reflection.cs",
    "content": "﻿/* Copyright (c) 2010 Michael Lidgren\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software\nand associated documentation files (the \"Software\"), to deal in the Software without\nrestriction, including without limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to permit persons to whom\nthe Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or\nsubstantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\nINCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR\nPURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\nUSE OR OTHER DEALINGS IN THE SOFTWARE.\n*/\nusing System;\nusing System.Reflection;\n\nnamespace Lidgren.Network\n{\n\tpublic partial class NetBuffer\n\t{\n\t\t/// <summary>\n\t\t/// Reads all public and private declared instance fields of the object in alphabetical order using reflection\n\t\t/// </summary>\n\t\tpublic void ReadAllFields(object target)\n\t\t{\n\t\t\tReadAllFields(target, BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public);\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Reads all fields with the specified binding of the object in alphabetical order using reflection\n\t\t/// </summary>\n\t\tpublic void ReadAllFields(object target, BindingFlags flags)\n\t\t{\n\t\t\tif (target == null)\n\t\t\t\treturn;\n\t\t\tType tp = target.GetType();\n\n\t\t\tFieldInfo[] fields = tp.GetFields(flags);\n\t\t\tNetUtility.SortMembersList(fields);\n\n\t\t\tforeach (FieldInfo fi in fields)\n\t\t\t{\n\t\t\t\tobject value;\n\n\t\t\t\t// find read method\n\t\t\t\tMethodInfo readMethod;\n\t\t\t\tif (s_readMethods.TryGetValue(fi.FieldType, out readMethod))\n\t\t\t\t{\n\t\t\t\t\t// read value\n\t\t\t\t\tvalue = readMethod.Invoke(this, null);\n\n\t\t\t\t\t// set the value\n\t\t\t\t\tfi.SetValue(target, value);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Reads all public and private declared instance fields of the object in alphabetical order using reflection\n\t\t/// </summary>\n\t\tpublic void ReadAllProperties(object target)\n\t\t{\n\t\t\tReadAllProperties(target, BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public);\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Reads all fields with the specified binding of the object in alphabetical order using reflection\n\t\t/// </summary>\n\t\tpublic void ReadAllProperties(object target, BindingFlags flags)\n\t\t{\n\t\t\tif (target == null)\n\t\t\t\tthrow new ArgumentNullException(\"target\");\n\n\t\t\tif (target == null)\n\t\t\t\treturn;\n\t\t\tType tp = target.GetType();\n\n\t\t\tPropertyInfo[] fields = tp.GetProperties(flags);\n\t\t\tNetUtility.SortMembersList(fields);\n\t\t\tforeach (PropertyInfo fi in fields)\n\t\t\t{\n\t\t\t\tobject value;\n\n\t\t\t\t// find read method\n\t\t\t\tMethodInfo readMethod;\n\t\t\t\tif (s_readMethods.TryGetValue(fi.PropertyType, out readMethod))\n\t\t\t\t{\n\t\t\t\t\t// read value\n\t\t\t\t\tvalue = readMethod.Invoke(this, null);\n\n\t\t\t\t\t// set the value\n\t\t\t\t\tMethodInfo setMethod = fi.GetSetMethod((flags & BindingFlags.NonPublic) == BindingFlags.NonPublic);\n\t\t\t\t\tsetMethod.Invoke(target, new object[] { value });\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Lidgren/NetBuffer.Read.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Reflection;\nusing System.Net;\n\nnamespace Lidgren.Network\n{\n\tpublic partial class NetBuffer\n\t{\n\t\tprivate const string c_readOverflowError = \"Trying to read past the buffer size - likely caused by mismatching Write/Reads, different size or order.\";\n\n\t\t/// <summary>\n\t\t/// Reads a boolean value (stored as a single bit) written using Write(bool)\n\t\t/// </summary>\n\t\tpublic bool ReadBoolean()\n\t\t{\n\t\t\tNetException.Assert(m_bitLength - m_readPosition >= 1, c_readOverflowError);\n\t\t\tbyte retval = NetBitWriter.ReadByte(m_data, 1, m_readPosition);\n\t\t\tm_readPosition += 1;\n\t\t\treturn (retval > 0 ? true : false);\n\t\t}\n\t\t\n\t\t/// <summary>\n\t\t/// Reads a byte\n\t\t/// </summary>\n\t\tpublic byte ReadByte()\n\t\t{\n\t\t\tNetException.Assert(m_bitLength - m_readPosition >= 8, c_readOverflowError);\n\t\t\tbyte retval = NetBitWriter.ReadByte(m_data, 8, m_readPosition);\n\t\t\tm_readPosition += 8;\n\t\t\treturn retval;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Reads a byte and returns true or false for success\n\t\t/// </summary>\n\t\tpublic bool ReadByte(out byte result)\n\t\t{\n\t\t\tif (m_bitLength - m_readPosition < 8)\n\t\t\t{\n\t\t\t\tresult = 0;\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tresult = NetBitWriter.ReadByte(m_data, 8, m_readPosition);\n\t\t\tm_readPosition += 8;\n\t\t\treturn true;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Reads a signed byte\n\t\t/// </summary>\n\t\t[CLSCompliant(false)]\n\t\tpublic sbyte ReadSByte()\n\t\t{\n\t\t\tNetException.Assert(m_bitLength - m_readPosition >= 8, c_readOverflowError);\n\t\t\tbyte retval = NetBitWriter.ReadByte(m_data, 8, m_readPosition);\n\t\t\tm_readPosition += 8;\n\t\t\treturn (sbyte)retval;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Reads 1 to 8 bits into a byte\n\t\t/// </summary>\n\t\tpublic byte ReadByte(int numberOfBits)\n\t\t{\n\t\t\tNetException.Assert(numberOfBits > 0 && numberOfBits <= 8, \"ReadByte(bits) can only read between 1 and 8 bits\");\n\t\t\tbyte retval = NetBitWriter.ReadByte(m_data, numberOfBits, m_readPosition);\n\t\t\tm_readPosition += numberOfBits;\n\t\t\treturn retval;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Reads the specified number of bytes\n\t\t/// </summary>\n\t\tpublic byte[] ReadBytes(int numberOfBytes)\n\t\t{\n\t\t\tNetException.Assert(m_bitLength - m_readPosition + 7 >= (numberOfBytes * 8), c_readOverflowError);\n\n\t\t\tbyte[] retval = new byte[numberOfBytes];\n\t\t\tNetBitWriter.ReadBytes(m_data, numberOfBytes, m_readPosition, retval, 0);\n\t\t\tm_readPosition += (8 * numberOfBytes);\n\t\t\treturn retval;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Reads the specified number of bytes and returns true for success\n\t\t/// </summary>\n\t\tpublic bool ReadBytes(int numberOfBytes, out byte[] result)\n\t\t{\n\t\t\tif (m_bitLength - m_readPosition + 7 < (numberOfBytes * 8))\n\t\t\t{\n\t\t\t\tresult = null;\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tresult = new byte[numberOfBytes];\n\t\t\tNetBitWriter.ReadBytes(m_data, numberOfBytes, m_readPosition, result, 0);\n\t\t\tm_readPosition += (8 * numberOfBytes);\n\t\t\treturn true;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Reads the specified number of bytes into a preallocated array\n\t\t/// </summary>\n\t\t/// <param name=\"into\">The destination array</param>\n\t\t/// <param name=\"offset\">The offset where to start writing in the destination array</param>\n\t\t/// <param name=\"numberOfBytes\">The number of bytes to read</param>\n\t\tpublic void ReadBytes(byte[] into, int offset, int numberOfBytes)\n\t\t{\n\t\t\tNetException.Assert(m_bitLength - m_readPosition + 7 >= (numberOfBytes * 8), c_readOverflowError);\n\t\t\tNetException.Assert(offset + numberOfBytes <= into.Length);\n\n\t\t\tNetBitWriter.ReadBytes(m_data, numberOfBytes, m_readPosition, into, offset);\n\t\t\tm_readPosition += (8 * numberOfBytes);\n\t\t\treturn;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Reads the specified number of bits into a preallocated array\n\t\t/// </summary>\n\t\t/// <param name=\"into\">The destination array</param>\n\t\t/// <param name=\"offset\">The offset where to start writing in the destination array</param>\n\t\t/// <param name=\"numberOfBits\">The number of bits to read</param>\n\t\tpublic void ReadBits(byte[] into, int offset, int numberOfBits)\n\t\t{\n\t\t\tNetException.Assert(m_bitLength - m_readPosition >= numberOfBits, c_readOverflowError);\n\t\t\tNetException.Assert(offset + NetUtility.BytesToHoldBits(numberOfBits) <= into.Length);\n\n\t\t\tint numberOfWholeBytes = numberOfBits / 8;\n\t\t\tint extraBits = numberOfBits - (numberOfWholeBytes * 8);\n\n\t\t\tNetBitWriter.ReadBytes(m_data, numberOfWholeBytes, m_readPosition, into, offset);\n\t\t\tm_readPosition += (8 * numberOfWholeBytes);\n\n\t\t\tif (extraBits > 0)\n\t\t\t\tinto[offset + numberOfWholeBytes] = ReadByte(extraBits);\n\n\t\t\treturn;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Reads a 16 bit signed integer written using Write(Int16)\n\t\t/// </summary>\n\t\tpublic Int16 ReadInt16()\n\t\t{\n\t\t\tNetException.Assert(m_bitLength - m_readPosition >= 16, c_readOverflowError);\n\t\t\tuint retval = NetBitWriter.ReadUInt16(m_data, 16, m_readPosition);\n\t\t\tm_readPosition += 16;\n\t\t\treturn (short)retval;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Reads a 16 bit unsigned integer written using Write(UInt16)\n\t\t/// </summary>\n\t\t[CLSCompliant(false)]\n\t\tpublic UInt16 ReadUInt16()\n\t\t{\n\t\t\tNetException.Assert(m_bitLength - m_readPosition >= 16, c_readOverflowError);\n\t\t\tuint retval = NetBitWriter.ReadUInt16(m_data, 16, m_readPosition);\n\t\t\tm_readPosition += 16;\n\t\t\treturn (ushort)retval;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Reads a 32 bit signed integer written using Write(Int32)\n\t\t/// </summary>\n\t\tpublic Int32 ReadInt32()\n\t\t{\n\t\t\tNetException.Assert(m_bitLength - m_readPosition >= 32, c_readOverflowError);\n\t\t\tuint retval = NetBitWriter.ReadUInt32(m_data, 32, m_readPosition);\n\t\t\tm_readPosition += 32;\n\t\t\treturn (Int32)retval;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Reads a 32 bit signed integer written using Write(Int32)\n\t\t/// </summary>\n\t\t[CLSCompliant(false)]\n\t\tpublic bool ReadInt32(out Int32 result)\n\t\t{\n\t\t\tif (m_bitLength - m_readPosition < 32)\n\t\t\t{\n\t\t\t\tresult = 0;\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tresult = (Int32)NetBitWriter.ReadUInt32(m_data, 32, m_readPosition);\n\t\t\tm_readPosition += 32;\n\t\t\treturn true;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Reads a signed integer stored in 1 to 32 bits, written using Write(Int32, Int32)\n\t\t/// </summary>\n\t\tpublic Int32 ReadInt32(int numberOfBits)\n\t\t{\n\t\t\tNetException.Assert(numberOfBits > 0 && numberOfBits <= 32, \"ReadInt32(bits) can only read between 1 and 32 bits\");\n\t\t\tNetException.Assert(m_bitLength - m_readPosition >= numberOfBits, c_readOverflowError);\n\n\t\t\tuint retval = NetBitWriter.ReadUInt32(m_data, numberOfBits, m_readPosition);\n\t\t\tm_readPosition += numberOfBits;\n\n\t\t\tif (numberOfBits == 32)\n\t\t\t\treturn (int)retval;\n\n\t\t\tint signBit = 1 << (numberOfBits - 1);\n\t\t\tif ((retval & signBit) == 0)\n\t\t\t\treturn (int)retval; // positive\n\n\t\t\t// negative\n\t\t\tunchecked\n\t\t\t{\n\t\t\t\tuint mask = ((uint)-1) >> (33 - numberOfBits);\n\t\t\t\tuint tmp = (retval & mask) + 1;\n\t\t\t\treturn -((int)tmp);\n\t\t\t}\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Reads an 32 bit unsigned integer written using Write(UInt32)\n\t\t/// </summary>\n\t\t[CLSCompliant(false)]\n\t\tpublic UInt32 ReadUInt32()\n\t\t{\n\t\t\tNetException.Assert(m_bitLength - m_readPosition >= 32, c_readOverflowError);\n\t\t\tuint retval = NetBitWriter.ReadUInt32(m_data, 32, m_readPosition);\n\t\t\tm_readPosition += 32;\n\t\t\treturn retval;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Reads an 32 bit unsigned integer written using Write(UInt32) and returns true for success\n\t\t/// </summary>\n\t\t[CLSCompliant(false)]\n\t\tpublic bool ReadUInt32(out UInt32 result)\n\t\t{\n\t\t\tif (m_bitLength - m_readPosition < 32)\n\t\t\t{\n\t\t\t\tresult = 0;\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tresult = NetBitWriter.ReadUInt32(m_data, 32, m_readPosition);\n\t\t\tm_readPosition += 32;\n\t\t\treturn true;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Reads an unsigned integer stored in 1 to 32 bits, written using Write(UInt32, Int32)\n\t\t/// </summary>\n\t\t[CLSCompliant(false)]\n\t\tpublic UInt32 ReadUInt32(int numberOfBits)\n\t\t{\n\t\t\tNetException.Assert(numberOfBits > 0 && numberOfBits <= 32, \"ReadUInt32(bits) can only read between 1 and 32 bits\");\n\t\t\t//NetException.Assert(m_bitLength - m_readBitPtr >= numberOfBits, \"tried to read past buffer size\");\n\n\t\t\tUInt32 retval = NetBitWriter.ReadUInt32(m_data, numberOfBits, m_readPosition);\n\t\t\tm_readPosition += numberOfBits;\n\t\t\treturn retval;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Reads a 64 bit unsigned integer written using Write(UInt64)\n\t\t/// </summary>\n\t\t[CLSCompliant(false)]\n\t\tpublic UInt64 ReadUInt64()\n\t\t{\n\t\t\tNetException.Assert(m_bitLength - m_readPosition >= 64, c_readOverflowError);\n\n\t\t\tulong low = NetBitWriter.ReadUInt32(m_data, 32, m_readPosition);\n\t\t\tm_readPosition += 32;\n\t\t\tulong high = NetBitWriter.ReadUInt32(m_data, 32, m_readPosition);\n\n\t\t\tulong retval = low + (high << 32);\n\n\t\t\tm_readPosition += 32;\n\t\t\treturn retval;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Reads a 64 bit signed integer written using Write(Int64)\n\t\t/// </summary>\n\t\tpublic Int64 ReadInt64()\n\t\t{\n\t\t\tNetException.Assert(m_bitLength - m_readPosition >= 64, c_readOverflowError);\n\t\t\tunchecked\n\t\t\t{\n\t\t\t\tulong retval = ReadUInt64();\n\t\t\t\tlong longRetval = (long)retval;\n\t\t\t\treturn longRetval;\n\t\t\t}\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Reads an unsigned integer stored in 1 to 64 bits, written using Write(UInt64, Int32)\n\t\t/// </summary>\n\t\t[CLSCompliant(false)]\n\t\tpublic UInt64 ReadUInt64(int numberOfBits)\n\t\t{\n\t\t\tNetException.Assert(numberOfBits > 0 && numberOfBits <= 64, \"ReadUInt64(bits) can only read between 1 and 64 bits\");\n\t\t\tNetException.Assert(m_bitLength - m_readPosition >= numberOfBits, c_readOverflowError);\n\n\t\t\tulong retval;\n\t\t\tif (numberOfBits <= 32)\n\t\t\t{\n\t\t\t\tretval = (ulong)NetBitWriter.ReadUInt32(m_data, numberOfBits, m_readPosition);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tretval = NetBitWriter.ReadUInt32(m_data, 32, m_readPosition);\n\t\t\t\tretval |= NetBitWriter.ReadUInt32(m_data, numberOfBits - 32, m_readPosition) << 32;\n\t\t\t}\n\t\t\tm_readPosition += numberOfBits;\n\t\t\treturn retval;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Reads a signed integer stored in 1 to 64 bits, written using Write(Int64, Int32)\n\t\t/// </summary>\n\t\tpublic Int64 ReadInt64(int numberOfBits)\n\t\t{\n\t\t\tNetException.Assert(((numberOfBits > 0) && (numberOfBits <= 64)), \"ReadInt64(bits) can only read between 1 and 64 bits\");\n\t\t\treturn (long)ReadUInt64(numberOfBits);\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Reads a 32 bit floating point value written using Write(Single)\n\t\t/// </summary>\n\t\tpublic float ReadFloat()\n\t\t{\n\t\t\treturn ReadSingle();\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Reads a 32 bit floating point value written using Write(Single)\n\t\t/// </summary>\n\t\tpublic float ReadSingle()\n\t\t{\n\t\t\tNetException.Assert(m_bitLength - m_readPosition >= 32, c_readOverflowError);\n\n\t\t\tif ((m_readPosition & 7) == 0) // read directly\n\t\t\t{\n\t\t\t\tfloat retval = BitConverter.ToSingle(m_data, m_readPosition >> 3);\n\t\t\t\tm_readPosition += 32;\n\t\t\t\treturn retval;\n\t\t\t}\n\n\t\t\tbyte[] bytes = ReadBytes(4);\n\t\t\treturn BitConverter.ToSingle(bytes, 0);\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Reads a 32 bit floating point value written using Write(Single)\n\t\t/// </summary>\n\t\tpublic bool ReadSingle(out float result)\n\t\t{\n\t\t\tif (m_bitLength - m_readPosition < 32)\n\t\t\t{\n\t\t\t\tresult = 0.0f;\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif ((m_readPosition & 7) == 0) // read directly\n\t\t\t{\n\t\t\t\tresult = BitConverter.ToSingle(m_data, m_readPosition >> 3);\n\t\t\t\tm_readPosition += 32;\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tbyte[] bytes = ReadBytes(4);\n\t\t\tresult = BitConverter.ToSingle(bytes, 0);\n\t\t\treturn true;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Reads a 64 bit floating point value written using Write(Double)\n\t\t/// </summary>\n\t\tpublic double ReadDouble()\n\t\t{\n\t\t\tNetException.Assert(m_bitLength - m_readPosition >= 64, c_readOverflowError);\n\n\t\t\tif ((m_readPosition & 7) == 0) // read directly\n\t\t\t{\n\t\t\t\t// read directly\n\t\t\t\tdouble retval = BitConverter.ToDouble(m_data, m_readPosition >> 3);\n\t\t\t\tm_readPosition += 64;\n\t\t\t\treturn retval;\n\t\t\t}\n\n\t\t\tbyte[] bytes = ReadBytes(8);\n\t\t\treturn BitConverter.ToDouble(bytes, 0);\n\t\t}\n\n\t\t//\n\t\t// Variable bit count\n\t\t//\n\n\t\t/// <summary>\n\t\t/// Reads a variable sized UInt32 written using WriteVariableUInt32()\n\t\t/// </summary>\n\t\t[CLSCompliant(false)]\n\t\tpublic uint ReadVariableUInt32()\n\t\t{\n\t\t\tint num1 = 0;\n\t\t\tint num2 = 0;\n\t\t\twhile (true)\n\t\t\t{\n\t\t\t\tbyte num3 = this.ReadByte();\n\t\t\t\tnum1 |= (num3 & 0x7f) << num2;\n\t\t\t\tnum2 += 7;\n\t\t\t\tif ((num3 & 0x80) == 0)\n\t\t\t\t\treturn (uint)num1;\n\t\t\t}\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Reads a variable sized UInt32 written using WriteVariableUInt32() and returns true for success\n\t\t/// </summary>\n\t\t[CLSCompliant(false)]\n\t\tpublic bool ReadVariableUInt32(out uint result)\n\t\t{\n\t\t\tint num1 = 0;\n\t\t\tint num2 = 0;\n\t\t\twhile (true)\n\t\t\t{\n\t\t\t\tbyte num3;\n\t\t\t\tif (ReadByte(out num3) == false)\n\t\t\t\t{\n\t\t\t\t\tresult = 0;\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tnum1 |= (num3 & 0x7f) << num2;\n\t\t\t\tnum2 += 7;\n\t\t\t\tif ((num3 & 0x80) == 0)\n\t\t\t\t{\n\t\t\t\t\tresult = (uint)num1;\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Reads a variable sized Int32 written using WriteVariableInt32()\n\t\t/// </summary>\n\t\tpublic int ReadVariableInt32()\n\t\t{\n\t\t\tuint n = ReadVariableUInt32();\n\t\t\treturn (int)(n >> 1) ^ -(int)(n & 1); // decode zigzag\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Reads a variable sized Int64 written using WriteVariableInt64()\n\t\t/// </summary>\n\t\tpublic Int64 ReadVariableInt64()\n\t\t{\n\t\t\tUInt64 n = ReadVariableUInt64();\n\t\t\treturn (Int64)(n >> 1) ^ -(long)(n & 1); // decode zigzag\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Reads a variable sized UInt32 written using WriteVariableInt64()\n\t\t/// </summary>\n\t\t[CLSCompliant(false)]\n\t\tpublic UInt64 ReadVariableUInt64()\n\t\t{\n\t\t\tUInt64 num1 = 0;\n\t\t\tint num2 = 0;\n\t\t\twhile (true)\n\t\t\t{\n\t\t\t\t//if (num2 == 0x23)\n\t\t\t\t//\tthrow new FormatException(\"Bad 7-bit encoded integer\");\n\n\t\t\t\tbyte num3 = this.ReadByte();\n\t\t\t\tnum1 |= ((UInt64)num3 & 0x7f) << num2;\n\t\t\t\tnum2 += 7;\n\t\t\t\tif ((num3 & 0x80) == 0)\n\t\t\t\t\treturn num1;\n\t\t\t}\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Reads a 32 bit floating point value written using WriteSignedSingle()\n\t\t/// </summary>\n\t\t/// <param name=\"numberOfBits\">The number of bits used when writing the value</param>\n\t\t/// <returns>A floating point value larger or equal to -1 and smaller or equal to 1</returns>\n\t\tpublic float ReadSignedSingle(int numberOfBits)\n\t\t{\n\t\t\tuint encodedVal = ReadUInt32(numberOfBits);\n\t\t\tint maxVal = (1 << numberOfBits) - 1;\n\t\t\treturn ((float)(encodedVal + 1) / (float)(maxVal + 1) - 0.5f) * 2.0f;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Reads a 32 bit floating point value written using WriteUnitSingle()\n\t\t/// </summary>\n\t\t/// <param name=\"numberOfBits\">The number of bits used when writing the value</param>\n\t\t/// <returns>A floating point value larger or equal to 0 and smaller or equal to 1</returns>\n\t\tpublic float ReadUnitSingle(int numberOfBits)\n\t\t{\n\t\t\tuint encodedVal = ReadUInt32(numberOfBits);\n\t\t\tint maxVal = (1 << numberOfBits) - 1;\n\t\t\treturn (float)(encodedVal + 1) / (float)(maxVal + 1);\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Reads a 32 bit floating point value written using WriteRangedSingle()\n\t\t/// </summary>\n\t\t/// <param name=\"min\">The minimum value used when writing the value</param>\n\t\t/// <param name=\"max\">The maximum value used when writing the value</param>\n\t\t/// <param name=\"numberOfBits\">The number of bits used when writing the value</param>\n\t\t/// <returns>A floating point value larger or equal to MIN and smaller or equal to MAX</returns>\n\t\tpublic float ReadRangedSingle(float min, float max, int numberOfBits)\n\t\t{\n\t\t\tfloat range = max - min;\n\t\t\tint maxVal = (1 << numberOfBits) - 1;\n\t\t\tfloat encodedVal = (float)ReadUInt32(numberOfBits);\n\t\t\tfloat unit = encodedVal / (float)maxVal;\n\t\t\treturn min + (unit * range);\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Reads a 32 bit integer value written using WriteRangedInteger()\n\t\t/// </summary>\n\t\t/// <param name=\"min\">The minimum value used when writing the value</param>\n\t\t/// <param name=\"max\">The maximum value used when writing the value</param>\n\t\t/// <returns>A signed integer value larger or equal to MIN and smaller or equal to MAX</returns>\n\t\tpublic int ReadRangedInteger(int min, int max)\n\t\t{\n\t\t\tuint range = (uint)(max - min);\n\t\t\tint numBits = NetUtility.BitsToHoldUInt(range);\n\n\t\t\tuint rvalue = ReadUInt32(numBits);\n\t\t\treturn (int)(min + rvalue);\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Reads a string written using Write(string)\n\t\t/// </summary>\n\t\tpublic string ReadString()\n\t\t{\n\t\t\tint byteLen = (int)ReadVariableUInt32();\n\n\t\t\tif (byteLen == 0)\n\t\t\t\treturn String.Empty;\n\n\t\t\tNetException.Assert(m_bitLength - m_readPosition >= (byteLen * 8), c_readOverflowError);\n\n\t\t\tif ((m_readPosition & 7) == 0)\n\t\t\t{\n\t\t\t\t// read directly\n\t\t\t\tstring retval = System.Text.Encoding.UTF8.GetString(m_data, m_readPosition >> 3, byteLen);\n\t\t\t\tm_readPosition += (8 * byteLen);\n\t\t\t\treturn retval;\n\t\t\t}\n\n\t\t\tbyte[] bytes = ReadBytes(byteLen);\n\t\t\treturn System.Text.Encoding.UTF8.GetString(bytes, 0, bytes.Length);\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Reads a string written using Write(string) and returns true for success\n\t\t/// </summary>\n\t\tpublic bool ReadString(out string result)\n\t\t{\n\t\t\tuint byteLen;\n\t\t\tif (ReadVariableUInt32(out byteLen) == false)\n\t\t\t{\n\t\t\t\tresult = String.Empty;\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (byteLen == 0)\n\t\t\t{\n\t\t\t\tresult = String.Empty;\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tif (m_bitLength - m_readPosition < (byteLen * 8))\n\t\t\t{\n\t\t\t\tresult = String.Empty;\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif ((m_readPosition & 7) == 0)\n\t\t\t{\n\t\t\t\t// read directly\n\t\t\t\tresult = System.Text.Encoding.UTF8.GetString(m_data, m_readPosition >> 3, (int)byteLen);\n\t\t\t\tm_readPosition += (8 * (int)byteLen);\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tbyte[] bytes;\n\t\t\tif (ReadBytes((int)byteLen, out bytes) == false)\n\t\t\t{\n\t\t\t\tresult = String.Empty;\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tresult = System.Text.Encoding.UTF8.GetString(bytes, 0, bytes.Length);\n\t\t\treturn true;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Reads a value, in local time comparable to NetTime.Now, written using WriteTime() for the connection supplied\n\t\t/// </summary>\n\t\tpublic double ReadTime(NetConnection connection, bool highPrecision)\n\t\t{\n\t\t\tdouble remoteTime = (highPrecision ? ReadDouble() : (double)ReadSingle());\n\n\t\t\tif (connection == null)\n\t\t\t\tthrow new NetException(\"Cannot call ReadTime() on message without a connected sender (ie. unconnected messages)\");\n\n\t\t\t// lets bypass NetConnection.GetLocalTime for speed\n\t\t\treturn remoteTime - connection.m_remoteTimeOffset;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Reads a stored IPv4 endpoint description\n\t\t/// </summary>\n\t\tpublic IPEndPoint ReadIPEndpoint()\n\t\t{\n\t\t\tbyte len = ReadByte();\n\t\t\tbyte[] addressBytes = ReadBytes(len);\n\t\t\tint port = (int)ReadUInt16();\n\n\t\t\tIPAddress address = new IPAddress(addressBytes);\n\t\t\treturn new IPEndPoint(address, port);\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Pads data with enough bits to reach a full byte. Decreases cpu usage for subsequent byte writes.\n\t\t/// </summary>\n\t\tpublic void SkipPadBits()\n\t\t{\n\t\t\tm_readPosition = ((m_readPosition + 7) >> 3) * 8;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Pads data with enough bits to reach a full byte. Decreases cpu usage for subsequent byte writes.\n\t\t/// </summary>\n\t\tpublic void ReadPadBits()\n\t\t{\n\t\t\tm_readPosition = ((m_readPosition + 7) >> 3) * 8;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Pads data with the specified number of bits.\n\t\t/// </summary>\n\t\tpublic void SkipPadBits(int numberOfBits)\n\t\t{\n\t\t\tm_readPosition += numberOfBits;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Lidgren/NetBuffer.Write.Reflection.cs",
    "content": "﻿/* Copyright (c) 2010 Michael Lidgren\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software\nand associated documentation files (the \"Software\"), to deal in the Software without\nrestriction, including without limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to permit persons to whom\nthe Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or\nsubstantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\nINCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR\nPURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\nUSE OR OTHER DEALINGS IN THE SOFTWARE.\n*/\nusing System;\nusing System.Reflection;\n\nnamespace Lidgren.Network\n{\n\tpublic partial class NetBuffer\n\t{\n\t\t/// <summary>\n\t\t/// Writes all public and private declared instance fields of the object in alphabetical order using reflection\n\t\t/// </summary>\n\t\tpublic void WriteAllFields(object ob)\n\t\t{\n\t\t\tWriteAllFields(ob, BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public);\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Writes all fields with specified binding in alphabetical order using reflection\n\t\t/// </summary>\n\t\tpublic void WriteAllFields(object ob, BindingFlags flags)\n\t\t{\n\t\t\tif (ob == null)\n\t\t\t\treturn;\n\t\t\tType tp = ob.GetType();\n\n\t\t\tFieldInfo[] fields = tp.GetFields(flags);\n\t\t\tNetUtility.SortMembersList(fields);\n\n\t\t\tforeach (FieldInfo fi in fields)\n\t\t\t{\n\t\t\t\tobject value = fi.GetValue(ob);\n\n\t\t\t\t// find the appropriate Write method\n\t\t\t\tMethodInfo writeMethod;\n\t\t\t\tif (s_writeMethods.TryGetValue(fi.FieldType, out writeMethod))\n\t\t\t\t\twriteMethod.Invoke(this, new object[] { value });\n\t\t\t\telse\n\t\t\t\t\tthrow new NetException(\"Failed to find write method for type \" + fi.FieldType);\n\t\t\t}\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Writes all public and private declared instance properties of the object in alphabetical order using reflection\n\t\t/// </summary>\n\t\tpublic void WriteAllProperties(object ob)\n\t\t{\n\t\t\tWriteAllProperties(ob, BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public);\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Writes all properties with specified binding in alphabetical order using reflection\n\t\t/// </summary>\n\t\tpublic void WriteAllProperties(object ob, BindingFlags flags)\n\t\t{\n\t\t\tif (ob == null)\n\t\t\t\treturn;\n\t\t\tType tp = ob.GetType();\n\n\t\t\tPropertyInfo[] fields = tp.GetProperties(flags);\n\t\t\tNetUtility.SortMembersList(fields);\n\n\t\t\tforeach (PropertyInfo fi in fields)\n\t\t\t{\n\t\t\t\tMethodInfo getMethod = fi.GetGetMethod((flags & BindingFlags.NonPublic) == BindingFlags.NonPublic);\n\t\t\t\tobject value = getMethod.Invoke(ob, null);\n\n\t\t\t\t// find the appropriate Write method\n\t\t\t\tMethodInfo writeMethod;\n\t\t\t\tif (s_writeMethods.TryGetValue(fi.PropertyType, out writeMethod))\n\t\t\t\t\twriteMethod.Invoke(this, new object[] { value });\n\t\t\t}\n\t\t}\n\t}\n}"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Lidgren/NetBuffer.Write.cs",
    "content": "﻿//#define UNSAFE\n//#define BIGENDIAN\n/* Copyright (c) 2010 Michael Lidgren\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software\nand associated documentation files (the \"Software\"), to deal in the Software without\nrestriction, including without limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to permit persons to whom\nthe Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or\nsubstantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\nINCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR\nPURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\nUSE OR OTHER DEALINGS IN THE SOFTWARE.\n*/\nusing System;\nusing System.Collections.Generic;\nusing System.Net;\nusing System.Reflection;\nusing System.Text;\nusing System.Runtime.InteropServices;\n\nnamespace Lidgren.Network\n{\n\t[StructLayout(LayoutKind.Explicit)]\n\tpublic struct SingleUIntUnion\n\t{\n\t\t[FieldOffset(0)]\n\t\tpublic float SingleValue;\n\n\t\t[FieldOffset(0)]\n\t\t[CLSCompliant(false)]\n\t\tpublic uint UIntValue;\n\t}\n\n\tpublic partial class NetBuffer\n\t{\n\t\t/// <summary>\n\t\t/// Ensures the buffer can hold this number of bits\n\t\t/// </summary>\n\t\tpublic void EnsureBufferSize(int numberOfBits)\n\t\t{\n\t\t\tint byteLen = ((numberOfBits + 7) >> 3);\n\t\t\tif (m_data == null)\n\t\t\t{\n\t\t\t\tm_data = new byte[byteLen + c_overAllocateAmount];\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (m_data.Length < byteLen)\n\t\t\t\tArray.Resize<byte>(ref m_data, byteLen + c_overAllocateAmount);\n\t\t\treturn;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Ensures the buffer can hold this number of bits\n\t\t/// </summary>\n\t\tinternal void InternalEnsureBufferSize(int numberOfBits)\n\t\t{\n\t\t\tint byteLen = ((numberOfBits + 7) >> 3);\n\t\t\tif (m_data == null)\n\t\t\t{\n\t\t\t\tm_data = new byte[byteLen];\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (m_data.Length < byteLen)\n\t\t\t\tArray.Resize<byte>(ref m_data, byteLen);\n\t\t\treturn;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Writes a boolean value using 1 bit\n\t\t/// </summary>\n\t\tpublic void Write(bool value)\n\t\t{\n\t\t\tEnsureBufferSize(m_bitLength + 1);\n\t\t\tNetBitWriter.WriteByte((value ? (byte)1 : (byte)0), 1, m_data, m_bitLength);\n\t\t\tm_bitLength += 1;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Write a byte\n\t\t/// </summary>\n\t\tpublic void Write(byte source)\n\t\t{\n\t\t\tEnsureBufferSize(m_bitLength + 8);\n\t\t\tNetBitWriter.WriteByte(source, 8, m_data, m_bitLength);\n\t\t\tm_bitLength += 8;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Writes a signed byte\n\t\t/// </summary>\n\t\t[CLSCompliant(false)]\n\t\tpublic void Write(sbyte source)\n\t\t{\n\t\t\tEnsureBufferSize(m_bitLength + 8);\n\t\t\tNetBitWriter.WriteByte((byte)source, 8, m_data, m_bitLength);\n\t\t\tm_bitLength += 8;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Writes 1 to 8 bits of a byte\n\t\t/// </summary>\n\t\tpublic void Write(byte source, int numberOfBits)\n\t\t{\n\t\t\tNetException.Assert((numberOfBits > 0 && numberOfBits <= 8), \"Write(byte, numberOfBits) can only write between 1 and 8 bits\");\n\t\t\tEnsureBufferSize(m_bitLength + numberOfBits);\n\t\t\tNetBitWriter.WriteByte(source, numberOfBits, m_data, m_bitLength);\n\t\t\tm_bitLength += numberOfBits;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Writes all bytes in an array\n\t\t/// </summary>\n\t\tpublic void Write(byte[] source)\n\t\t{\n\t\t\tif (source == null)\n\t\t\t\tthrow new ArgumentNullException(\"source\");\n\t\t\tint bits = source.Length * 8;\n\t\t\tEnsureBufferSize(m_bitLength + bits);\n\t\t\tNetBitWriter.WriteBytes(source, 0, source.Length, m_data, m_bitLength);\n\t\t\tm_bitLength += bits;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Writes the specified number of bytes from an array\n\t\t/// </summary>\n\t\tpublic void Write(byte[] source, int offsetInBytes, int numberOfBytes)\n\t\t{\n\t\t\tif (source == null)\n\t\t\t\tthrow new ArgumentNullException(\"source\");\n\t\t\tint bits = numberOfBytes * 8;\n\t\t\tEnsureBufferSize(m_bitLength + bits);\n\t\t\tNetBitWriter.WriteBytes(source, offsetInBytes, numberOfBytes, m_data, m_bitLength);\n\t\t\tm_bitLength += bits;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Writes an unsigned 16 bit integer\n\t\t/// </summary>\n\t\t/// <param name=\"source\"></param>\n\t\t[CLSCompliant(false)]\n\t\tpublic void Write(UInt16 source)\n\t\t{\n\t\t\tEnsureBufferSize(m_bitLength + 16);\n\t\t\tNetBitWriter.WriteUInt16(source, 16, m_data, m_bitLength);\n\t\t\tm_bitLength += 16;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Writes an unsigned integer using 1 to 16 bits\n\t\t/// </summary>\n\t\t[CLSCompliant(false)]\n\t\tpublic void Write(UInt16 source, int numberOfBits)\n\t\t{\n\t\t\tNetException.Assert((numberOfBits > 0 && numberOfBits <= 16), \"Write(ushort, numberOfBits) can only write between 1 and 16 bits\");\n\t\t\tEnsureBufferSize(m_bitLength + numberOfBits);\n\t\t\tNetBitWriter.WriteUInt16(source, numberOfBits, m_data, m_bitLength);\n\t\t\tm_bitLength += numberOfBits;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Writes a signed 16 bit integer\n\t\t/// </summary>\n\t\tpublic void Write(Int16 source)\n\t\t{\n\t\t\tEnsureBufferSize(m_bitLength + 16);\n\t\t\tNetBitWriter.WriteUInt16((ushort)source, 16, m_data, m_bitLength);\n\t\t\tm_bitLength += 16;\n\t\t}\n\n#if UNSAFE\n\t\t/// <summary>\n\t\t/// Writes a 32 bit signed integer\n\t\t/// </summary>\n\t\tpublic unsafe void Write(Int32 source)\n\t\t{\n\t\t\tEnsureBufferSize(m_bitLength + 32);\n\n\t\t\t// can write fast?\n\t\t\tif (m_bitLength % 8 == 0)\n\t\t\t{\n\t\t\t\tfixed (byte* numRef = &Data[m_bitLength / 8])\n\t\t\t\t{\n\t\t\t\t\t*((int*)numRef) = source;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tNetBitWriter.WriteUInt32((UInt32)source, 32, Data, m_bitLength);\n\t\t\t}\n\t\t\tm_bitLength += 32;\n\t\t}\n#else\n\t\t/// <summary>\n\t\t/// Writes a 32 bit signed integer\n\t\t/// </summary>\n\t\tpublic void Write(Int32 source)\n\t\t{\n\t\t\tEnsureBufferSize(m_bitLength + 32);\n\t\t\tNetBitWriter.WriteUInt32((UInt32)source, 32, m_data, m_bitLength);\n\t\t\tm_bitLength += 32;\n\t\t}\n#endif\n\n#if UNSAFE\n\t\t/// <summary>\n\t\t/// Writes a 32 bit unsigned integer\n\t\t/// </summary>\n\t\tpublic unsafe void Write(UInt32 source)\n\t\t{\n\t\t\tEnsureBufferSize(m_bitLength + 32);\n\n\t\t\t// can write fast?\n\t\t\tif (m_bitLength % 8 == 0)\n\t\t\t{\n\t\t\t\tfixed (byte* numRef = &Data[m_bitLength / 8])\n\t\t\t\t{\n\t\t\t\t\t*((uint*)numRef) = source;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tNetBitWriter.WriteUInt32(source, 32, Data, m_bitLength);\n\t\t\t}\n\n\t\t\tm_bitLength += 32;\n\t\t}\n#else\n\t\t/// <summary>\n\t\t/// Writes a 32 bit unsigned integer\n\t\t/// </summary>\n\t\t[CLSCompliant(false)]\n\t\tpublic void Write(UInt32 source)\n\t\t{\n\t\t\tEnsureBufferSize(m_bitLength + 32);\n\t\t\tNetBitWriter.WriteUInt32(source, 32, m_data, m_bitLength);\n\t\t\tm_bitLength += 32;\n\t\t}\n#endif\n\n\t\t/// <summary>\n\t\t/// Writes a 32 bit signed integer\n\t\t/// </summary>\n\t\t[CLSCompliant(false)]\n\t\tpublic void Write(UInt32 source, int numberOfBits)\n\t\t{\n\t\t\tNetException.Assert((numberOfBits > 0 && numberOfBits <= 32), \"Write(uint, numberOfBits) can only write between 1 and 32 bits\");\n\t\t\tEnsureBufferSize(m_bitLength + numberOfBits);\n\t\t\tNetBitWriter.WriteUInt32(source, numberOfBits, m_data, m_bitLength);\n\t\t\tm_bitLength += numberOfBits;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Writes a signed integer using 1 to 32 bits\n\t\t/// </summary>\n\t\tpublic void Write(Int32 source, int numberOfBits)\n\t\t{\n\t\t\tNetException.Assert((numberOfBits > 0 && numberOfBits <= 32), \"Write(int, numberOfBits) can only write between 1 and 32 bits\");\n\t\t\tEnsureBufferSize(m_bitLength + numberOfBits);\n\n\t\t\tif (numberOfBits != 32)\n\t\t\t{\n\t\t\t\t// make first bit sign\n\t\t\t\tint signBit = 1 << (numberOfBits - 1);\n\t\t\t\tif (source < 0)\n\t\t\t\t\tsource = (-source - 1) | signBit;\n\t\t\t\telse\n\t\t\t\t\tsource &= (~signBit);\n\t\t\t}\n\n\t\t\tNetBitWriter.WriteUInt32((uint)source, numberOfBits, m_data, m_bitLength);\n\n\t\t\tm_bitLength += numberOfBits;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Writes a 64 bit unsigned integer\n\t\t/// </summary>\n\t\t[CLSCompliant(false)]\n\t\tpublic void Write(UInt64 source)\n\t\t{\n\t\t\tEnsureBufferSize(m_bitLength + 64);\n\t\t\tNetBitWriter.WriteUInt64(source, 64, m_data, m_bitLength);\n\t\t\tm_bitLength += 64;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Writes an unsigned integer using 1 to 64 bits\n\t\t/// </summary>\n\t\t[CLSCompliant(false)]\n\t\tpublic void Write(UInt64 source, int numberOfBits)\n\t\t{\n\t\t\tEnsureBufferSize(m_bitLength + numberOfBits);\n\t\t\tNetBitWriter.WriteUInt64(source, numberOfBits, m_data, m_bitLength);\n\t\t\tm_bitLength += numberOfBits;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Writes a 64 bit signed integer\n\t\t/// </summary>\n\t\tpublic void Write(Int64 source)\n\t\t{\n\t\t\tEnsureBufferSize(m_bitLength + 64);\n\t\t\tulong usource = (ulong)source;\n\t\t\tNetBitWriter.WriteUInt64(usource, 64, m_data, m_bitLength);\n\t\t\tm_bitLength += 64;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Writes a signed integer using 1 to 64 bits\n\t\t/// </summary>\n\t\tpublic void Write(Int64 source, int numberOfBits)\n\t\t{\n\t\t\tEnsureBufferSize(m_bitLength + numberOfBits);\n\t\t\tulong usource = (ulong)source;\n\t\t\tNetBitWriter.WriteUInt64(usource, numberOfBits, m_data, m_bitLength);\n\t\t\tm_bitLength += numberOfBits;\n\t\t}\n\n\t\t//\n\t\t// Floating point\n\t\t//\n#if UNSAFE\n\t\t/// <summary>\n\t\t/// Writes a 32 bit floating point value\n\t\t/// </summary>\n\t\tpublic unsafe void Write(float source)\n\t\t{\n\t\t\tuint val = *((uint*)&source);\n#if BIGENDIAN\n\t\t\t\tval = NetUtility.SwapByteOrder(val);\n#endif\n\t\t\tWrite(val);\n\t\t}\n#else\n\t\t/// <summary>\n\t\t/// Writes a 32 bit floating point value\n\t\t/// </summary>\n\t\tpublic void Write(float source)\n\t\t{\n\t\t\t// Use union to avoid BitConverter.GetBytes() which allocates memory on the heap\n\t\t\tSingleUIntUnion su;\n\t\t\tsu.UIntValue = 0; // must initialize every member of the union to avoid warning\n\t\t\tsu.SingleValue = source;\n\n#if BIGENDIAN\n\t\t\t// swap byte order\n\t\t\tsu.UIntValue = NetUtility.SwapByteOrder(su.UIntValue);\n#endif\n\t\t\tWrite(su.UIntValue);\n\t\t}\n#endif\n\n#if UNSAFE\n\t\t/// <summary>\n\t\t/// Writes a 64 bit floating point value\n\t\t/// </summary>\n\t\tpublic unsafe void Write(double source)\n\t\t{\n\t\t\tulong val = *((ulong*)&source);\n#if BIGENDIAN\n\t\t\tval = NetUtility.SwapByteOrder(val);\n#endif\n\t\t\tWrite(val);\n\t\t}\n#else\n\t\t/// <summary>\n\t\t/// Writes a 64 bit floating point value\n\t\t/// </summary>\n\t\tpublic void Write(double source)\n\t\t{\n\t\t\tbyte[] val = BitConverter.GetBytes(source);\n#if BIGENDIAN\n\t\t\t// 0 1 2 3   4 5 6 7\n\n\t\t\t// swap byte order\n\t\t\tbyte tmp = val[7];\n\t\t\tval[7] = val[0];\n\t\t\tval[0] = tmp;\n\n\t\t\ttmp = val[6];\n\t\t\tval[6] = val[1];\n\t\t\tval[1] = tmp;\n\n\t\t\ttmp = val[5];\n\t\t\tval[5] = val[2];\n\t\t\tval[2] = tmp;\n\n\t\t\ttmp = val[4];\n\t\t\tval[4] = val[3];\n\t\t\tval[3] = tmp;\n#endif\n\t\t\tWrite(val);\n\t\t}\n#endif\n\n\t\t//\n\t\t// Variable bits\n\t\t//\n\n\t\t/// <summary>\n\t\t/// Write Base128 encoded variable sized unsigned integer of up to 32 bits\n\t\t/// </summary>\n\t\t/// <returns>number of bytes written</returns>\n\t\t[CLSCompliant(false)]\n\t\tpublic int WriteVariableUInt32(uint value)\n\t\t{\n\t\t\tint retval = 1;\n\t\t\tuint num1 = (uint)value;\n\t\t\twhile (num1 >= 0x80)\n\t\t\t{\n\t\t\t\tthis.Write((byte)(num1 | 0x80));\n\t\t\t\tnum1 = num1 >> 7;\n\t\t\t\tretval++;\n\t\t\t}\n\t\t\tthis.Write((byte)num1);\n\t\t\treturn retval;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Write Base128 encoded variable sized signed integer of up to 32 bits\n\t\t/// </summary>\n\t\t/// <returns>number of bytes written</returns>\n\t\tpublic int WriteVariableInt32(int value)\n\t\t{\n\t\t\tuint zigzag = (uint)(value << 1) ^ (uint)(value >> 31);\n\t\t\treturn WriteVariableUInt32(zigzag);\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Write Base128 encoded variable sized signed integer of up to 64 bits\n\t\t/// </summary>\n\t\t/// <returns>number of bytes written</returns>\n\t\tpublic int WriteVariableInt64(Int64 value)\n\t\t{\n\t\t\tulong zigzag = (ulong)(value << 1) ^ (ulong)(value >> 63);\n\t\t\treturn WriteVariableUInt64(zigzag);\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Write Base128 encoded variable sized unsigned integer of up to 64 bits\n\t\t/// </summary>\n\t\t/// <returns>number of bytes written</returns>\n\t\t[CLSCompliant(false)]\n\t\tpublic int WriteVariableUInt64(UInt64 value)\n\t\t{\n\t\t\tint retval = 1;\n\t\t\tUInt64 num1 = (UInt64)value;\n\t\t\twhile (num1 >= 0x80)\n\t\t\t{\n\t\t\t\tthis.Write((byte)(num1 | 0x80));\n\t\t\t\tnum1 = num1 >> 7;\n\t\t\t\tretval++;\n\t\t\t}\n\t\t\tthis.Write((byte)num1);\n\t\t\treturn retval;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Compress (lossy) a float in the range -1..1 using numberOfBits bits\n\t\t/// </summary>\n\t\tpublic void WriteSignedSingle(float value, int numberOfBits)\n\t\t{\n\t\t\tNetException.Assert(((value >= -1.0) && (value <= 1.0)), \" WriteSignedSingle() must be passed a float in the range -1 to 1; val is \" + value);\n\n\t\t\tfloat unit = (value + 1.0f) * 0.5f;\n\t\t\tint maxVal = (1 << numberOfBits) - 1;\n\t\t\tuint writeVal = (uint)(unit * (float)maxVal);\n\n\t\t\tWrite(writeVal, numberOfBits);\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Compress (lossy) a float in the range 0..1 using numberOfBits bits\n\t\t/// </summary>\n\t\tpublic void WriteUnitSingle(float value, int numberOfBits)\n\t\t{\n\t\t\tNetException.Assert(((value >= 0.0) && (value <= 1.0)), \" WriteUnitSingle() must be passed a float in the range 0 to 1; val is \" + value);\n\n\t\t\tint maxValue = (1 << numberOfBits) - 1;\n\t\t\tuint writeVal = (uint)(value * (float)maxValue);\n\n\t\t\tWrite(writeVal, numberOfBits);\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Compress a float within a specified range using a certain number of bits\n\t\t/// </summary>\n\t\tpublic void WriteRangedSingle(float value, float min, float max, int numberOfBits)\n\t\t{\n\t\t\tNetException.Assert(((value >= min) && (value <= max)), \" WriteRangedSingle() must be passed a float in the range MIN to MAX; val is \" + value);\n\n\t\t\tfloat range = max - min;\n\t\t\tfloat unit = ((value - min) / range);\n\t\t\tint maxVal = (1 << numberOfBits) - 1;\n\t\t\tWrite((UInt32)((float)maxVal * unit), numberOfBits);\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Writes an integer with the least amount of bits need for the specified range\n\t\t/// Returns number of bits written\n\t\t/// </summary>\n\t\tpublic int WriteRangedInteger(int min, int max, int value)\n\t\t{\n\t\t\tNetException.Assert(value >= min && value <= max, \"Value not within min/max range!\");\n\n\t\t\tuint range = (uint)(max - min);\n\t\t\tint numBits = NetUtility.BitsToHoldUInt(range);\n\n\t\t\tuint rvalue = (uint)(value - min);\n\t\t\tWrite(rvalue, numBits);\n\n\t\t\treturn numBits;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Write a string\n\t\t/// </summary>\n\t\tpublic void Write(string source)\n\t\t{\n\t\t\tif (string.IsNullOrEmpty(source))\n\t\t\t{\n\t\t\t\tEnsureBufferSize(m_bitLength + 8);\n\t\t\t\tWriteVariableUInt32(0);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tbyte[] bytes = Encoding.UTF8.GetBytes(source);\n\t\t\tEnsureBufferSize(m_bitLength + 8 + (bytes.Length * 8));\n\t\t\tWriteVariableUInt32((uint)bytes.Length);\n\t\t\tWrite(bytes);\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Writes an endpoint description\n\t\t/// </summary>\n\t\tpublic void Write(IPEndPoint endPoint)\n\t\t{\n\t\t\tbyte[] bytes = endPoint.Address.GetAddressBytes();\n\t\t\tWrite((byte)bytes.Length);\n\t\t\tWrite(bytes);\n\t\t\tWrite((ushort)endPoint.Port);\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Writes the current local time to a message; readable (and convertable to local time) by the remote host using ReadTime()\n\t\t/// </summary>\n\t\tpublic void WriteTime(bool highPrecision)\n\t\t{\n\t\t\tdouble localTime = NetTime.Now;\n\t\t\tif (highPrecision)\n\t\t\t\tWrite(localTime);\n\t\t\telse\n\t\t\t\tWrite((float)localTime);\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Writes a local timestamp to a message; readable (and convertable to local time) by the remote host using ReadTime()\n\t\t/// </summary>\n\t\tpublic void WriteTime(double localTime, bool highPrecision)\n\t\t{\n\t\t\tif (highPrecision)\n\t\t\t\tWrite(localTime);\n\t\t\telse\n\t\t\t\tWrite((float)localTime);\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Pads data with enough bits to reach a full byte. Decreases cpu usage for subsequent byte writes.\n\t\t/// </summary>\n\t\tpublic void WritePadBits()\n\t\t{\n\t\t\tm_bitLength = ((m_bitLength + 7) >> 3) * 8;\n\t\t\tEnsureBufferSize(m_bitLength);\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Pads data with the specified number of bits.\n\t\t/// </summary>\n\t\tpublic void WritePadBits(int numberOfBits)\n\t\t{\n\t\t\tm_bitLength += numberOfBits;\n\t\t\tEnsureBufferSize(m_bitLength);\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Append all the bits of message to this message\n\t\t/// </summary>\n\t\tpublic void Write(NetOutgoingMessage message)\n\t\t{\n\t\t\tEnsureBufferSize(m_bitLength + (message.LengthBytes * 8));\n\n\t\t\tWrite(message.m_data, 0, message.LengthBytes);\n\n\t\t\t// did we write excessive bits?\n\t\t\tint bitsInLastByte = (message.m_bitLength % 8);\n\t\t\tif (bitsInLastByte != 0)\n\t\t\t{\n\t\t\t\tint excessBits = 8 - bitsInLastByte;\n\t\t\t\tm_bitLength -= excessBits;\n\t\t\t}\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Append all the bits of message to this message\n\t\t/// </summary>\n\t\tpublic void Write(NetIncomingMessage message)\n\t\t{\n\t\t\tEnsureBufferSize(m_bitLength + (message.LengthBytes * 8));\n\n\t\t\tWrite(message.m_data, 0, message.LengthBytes);\n\n\t\t\t// did we write excessive bits?\n\t\t\tint bitsInLastByte = (message.m_bitLength % 8);\n\t\t\tif (bitsInLastByte != 0)\n\t\t\t{\n\t\t\t\tint excessBits = 8 - bitsInLastByte;\n\t\t\t\tm_bitLength -= excessBits;\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Lidgren/NetBuffer.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Reflection;\n\nnamespace Lidgren.Network\n{\n\tpublic partial class NetBuffer\n\t{\n\t\tprotected const int c_overAllocateAmount = 4;\n\n\t\tprivate static readonly Dictionary<Type, MethodInfo> s_readMethods;\n\t\tprivate static readonly Dictionary<Type, MethodInfo> s_writeMethods;\n\n\t\tinternal byte[] m_data;\n\t\tinternal int m_bitLength;\n\t\tinternal int m_readPosition;\n\n\t\t/// <summary>\n\t\t/// Gets or sets the internal data buffer\n\t\t/// </summary>\n\t\tpublic byte[] Data\n\t\t{\n\t\t\tget { return m_data; }\n\t\t\tset { m_data = value; }\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Gets or sets the length of the used portion of the buffer in bytes\n\t\t/// </summary>\n\t\tpublic int LengthBytes\n\t\t{\n\t\t\tget { return ((m_bitLength + 7) >> 3); }\n\t\t\tset\n\t\t\t{\n\t\t\t\tm_bitLength = value * 8;\n\t\t\t\tInternalEnsureBufferSize(m_bitLength);\n\t\t\t}\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Gets or sets the length of the used portion of the buffer in bits\n\t\t/// </summary>\n\t\tpublic int LengthBits\n\t\t{\n\t\t\tget { return m_bitLength; }\n\t\t\tset\n\t\t\t{\n\t\t\t\tm_bitLength = value;\n\t\t\t\tInternalEnsureBufferSize(m_bitLength);\n\t\t\t}\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Gets or sets the read position in the buffer, in bits (not bytes)\n\t\t/// </summary>\n\t\tpublic long Position\n\t\t{\n\t\t\tget { return (long)m_readPosition; }\n\t\t\tset { m_readPosition = (int)value; }\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Gets the position in the buffer in bytes; note that the bits of the first returned byte may already have been read - check the Position property to make sure.\n\t\t/// </summary>\n\t\tpublic int PositionInBytes\n\t\t{\n\t\t\tget { return (int)(m_readPosition / 8); }\n\t\t}\n\t\t\n\t\tstatic NetBuffer()\n\t\t{\n\t\t\tType[] integralTypes = typeof(Byte).Assembly.GetTypes();\n\n\t\t\ts_readMethods = new Dictionary<Type, MethodInfo>();\n\t\t\tMethodInfo[] methods = typeof(NetIncomingMessage).GetMethods(BindingFlags.Instance | BindingFlags.Public);\n\t\t\tforeach (MethodInfo mi in methods)\n\t\t\t{\n\t\t\t\tif (mi.GetParameters().Length == 0 && mi.Name.StartsWith(\"Read\", StringComparison.InvariantCulture) && mi.Name.Substring(4) == mi.ReturnType.Name)\n\t\t\t\t{\n\t\t\t\t\ts_readMethods[mi.ReturnType] = mi;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ts_writeMethods = new Dictionary<Type, MethodInfo>();\n\t\t\tmethods = typeof(NetOutgoingMessage).GetMethods(BindingFlags.Instance | BindingFlags.Public);\n\t\t\tforeach (MethodInfo mi in methods)\n\t\t\t{\n\t\t\t\tif (mi.Name.Equals(\"Write\", StringComparison.InvariantCulture))\n\t\t\t\t{\n\t\t\t\t\tParameterInfo[] pis = mi.GetParameters();\n\t\t\t\t\tif (pis.Length == 1)\n\t\t\t\t\t\ts_writeMethods[pis[0].ParameterType] = mi;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Lidgren/NetClient.cs",
    "content": "﻿/* Copyright (c) 2010 Michael Lidgren\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software\nand associated documentation files (the \"Software\"), to deal in the Software without\nrestriction, including without limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to permit persons to whom\nthe Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or\nsubstantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\nINCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR\nPURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\nUSE OR OTHER DEALINGS IN THE SOFTWARE.\n*/\nusing System;\nusing System.Net;\n\nnamespace Lidgren.Network\n{\n\t/// <summary>\n\t/// Specialized version of NetPeer used for a \"client\" connection. It does not accept any incoming connections and maintains a ServerConnection property\n\t/// </summary>\n\tpublic class NetClient : NetPeer\n\t{\n\t\t/// <summary>\n\t\t/// Gets the connection to the server, if any\n\t\t/// </summary>\n\t\tpublic NetConnection ServerConnection\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\tNetConnection retval = null;\n\t\t\t\tif (m_connections.Count > 0)\n\t\t\t\t{\n\t\t\t\t\ttry\n\t\t\t\t\t{\n\t\t\t\t\t\tretval = m_connections[0];\n\t\t\t\t\t}\n\t\t\t\t\tcatch\n\t\t\t\t\t{\n\t\t\t\t\t\t// preempted!\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn retval;\n\t\t\t}\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Gets the connection status of the server connection (or NetConnectionStatus.Disconnected if no connection)\n\t\t/// </summary>\n\t\tpublic NetConnectionStatus ConnectionStatus\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\tvar conn = ServerConnection;\n\t\t\t\tif (conn == null)\n\t\t\t\t\treturn NetConnectionStatus.Disconnected;\n\t\t\t\treturn conn.Status;\n\t\t\t}\n\t\t}\n\n\t\t/// <summary>\n\t\t/// NetClient constructor\n\t\t/// </summary>\n\t\t/// <param name=\"config\"></param>\n\t\tpublic NetClient(NetPeerConfiguration config)\n\t\t\t: base(config)\n\t\t{\n\t\t\tconfig.AcceptIncomingConnections = false;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Connect to a remote server\n\t\t/// </summary>\n\t\t/// <param name=\"remoteEndpoint\">The remote endpoint to connect to</param>\n\t\t/// <param name=\"hailMessage\">The hail message to pass</param>\n\t\t/// <returns>server connection, or null if already connected</returns>\n\t\tpublic override NetConnection Connect(IPEndPoint remoteEndpoint, NetOutgoingMessage hailMessage)\n\t\t{\n\t\t\tlock (m_connections)\n\t\t\t{\n\t\t\t\tif (m_connections.Count > 0)\n\t\t\t\t{\n\t\t\t\t\tLogWarning(\"Connect attempt failed; Already connected\");\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn base.Connect(remoteEndpoint, hailMessage);\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Disconnect from server\n\t\t/// </summary>\n\t\t/// <param name=\"byeMessage\">reason for disconnect</param>\n\t\tpublic void Disconnect(string byeMessage)\n\t\t{\n\t\t\tNetConnection serverConnection = ServerConnection;\n\t\t\tif (serverConnection == null)\n\t\t\t{\n\t\t\t\tlock (m_handshakes)\n\t\t\t\t{\n\t\t\t\t\tif (m_handshakes.Count > 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tLogVerbose(\"Aborting connection attempt\");\n\t\t\t\t\t\tforeach(var hs in m_handshakes)\n\t\t\t\t\t\t\ths.Value.Disconnect(byeMessage);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tLogWarning(\"Disconnect requested when not connected!\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tserverConnection.Disconnect(byeMessage);\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Sends message to server\n\t\t/// </summary>\n\t\tpublic NetSendResult SendMessage(NetOutgoingMessage msg, NetDeliveryMethod method)\n\t\t{\n\t\t\tNetConnection serverConnection = ServerConnection;\n\t\t\tif (serverConnection == null)\n\t\t\t{\n\t\t\t\tLogWarning(\"Cannot send message, no server connection!\");\n\t\t\t\treturn NetSendResult.FailedNotConnected;\n\t\t\t}\n\n\t\t\treturn serverConnection.SendMessage(msg, method, 0);\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Sends message to server\n\t\t/// </summary>\n\t\tpublic NetSendResult SendMessage(NetOutgoingMessage msg, NetDeliveryMethod method, int sequenceChannel)\n\t\t{\n\t\t\tNetConnection serverConnection = ServerConnection;\n\t\t\tif (serverConnection == null)\n\t\t\t{\n\t\t\t\tLogWarning(\"Cannot send message, no server connection!\");\n\t\t\t\treturn NetSendResult.FailedNotConnected;\n\t\t\t}\n\n\t\t\treturn serverConnection.SendMessage(msg, method, sequenceChannel);\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Returns a string that represents this object\n\t\t/// </summary>\n\t\tpublic override string ToString()\n\t\t{\n\t\t\treturn \"[NetClient \" + ServerConnection + \"]\";\n\t\t}\n\n\t}\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Lidgren/NetConnection.Handshake.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Text;\n\nnamespace Lidgren.Network\n{\n\tpublic partial class NetConnection\n\t{\n\t\tinternal bool m_connectRequested;\n\t\tinternal bool m_disconnectRequested;\n\t\tinternal bool m_connectionInitiator;\n\t\tinternal string m_disconnectMessage;\n\t\tinternal NetIncomingMessage m_remoteHailMessage;\n\t\tinternal float m_lastHandshakeSendTime;\n\t\tinternal int m_handshakeAttempts;\n\n\t\t/// <summary>\n\t\t/// The message that the remote part specified via Connect() or Approve() - can be null.\n\t\t/// </summary>\n\t\tpublic NetIncomingMessage RemoteHailMessage { get { return m_remoteHailMessage; } }\n\n\t\t// heartbeat called when connection still is in m_handshakes of NetPeer\n\t\tinternal void UnconnectedHeartbeat(float now)\n\t\t{\n\t\t\tm_peer.VerifyNetworkThread();\n\n\t\t\tif (m_disconnectRequested)\n\t\t\t\tExecuteDisconnect(m_disconnectMessage, true);\n\n\t\t\tif (m_connectRequested)\n\t\t\t{\n\t\t\t\tswitch (m_status)\n\t\t\t\t{\n\t\t\t\t\tcase NetConnectionStatus.Connected:\n\t\t\t\t\tcase NetConnectionStatus.RespondedConnect:\n\t\t\t\t\t\t// reconnect\n\t\t\t\t\t\tExecuteDisconnect(\"Reconnecting\", true);\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase NetConnectionStatus.InitiatedConnect:\n\t\t\t\t\t\t// send another connect attempt\n\t\t\t\t\t\tSendConnect(now);\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase NetConnectionStatus.Disconnected:\n\t\t\t\t\t\tthrow new NetException(\"This connection is Disconnected; spent. A new one should have been created\");\n\n\t\t\t\t\tcase NetConnectionStatus.Disconnecting:\n\t\t\t\t\t\t// let disconnect finish first\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase NetConnectionStatus.None:\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tSendConnect(now);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (now - m_lastHandshakeSendTime > m_peerConfiguration.m_resendHandshakeInterval)\n\t\t\t{\n\t\t\t\tif (m_handshakeAttempts >= m_peerConfiguration.m_maximumHandshakeAttempts)\n\t\t\t\t{\n\t\t\t\t\t// failed to connect\n\t\t\t\t\tExecuteDisconnect(\"Failed to establish connection - no response from remote host\", true);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// resend handshake\n\t\t\t\tswitch (m_status)\n\t\t\t\t{\n\t\t\t\t\tcase NetConnectionStatus.InitiatedConnect:\n\t\t\t\t\t\tSendConnect(now);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase NetConnectionStatus.RespondedConnect:\n\t\t\t\t\t\tSendConnectResponse(now, true);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase NetConnectionStatus.None:\n\t\t\t\t\t\tm_peer.LogWarning(\"Time to resend handshake, but status is \" + m_status);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase NetConnectionStatus.RespondedAwaitingApproval:\n\t\t\t\t\t\t// awaiting approval\n\t\t\t\t\t\tm_lastHandshakeSendTime = now; // postpone handshake resend\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tm_peer.LogWarning(\"Time to resend handshake, but status is \" + m_status);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tinternal void ExecuteDisconnect(string reason, bool sendByeMessage)\n\t\t{\n\t\t\tm_peer.VerifyNetworkThread();\n\n\t\t\t//m_peer.LogDebug(\"Executing disconnect\");\n\n\t\t\t// clear send queues\n\t\t\tfor (int i = 0; i < m_sendChannels.Length; i++)\n\t\t\t{\n\t\t\t\tNetSenderChannelBase channel = m_sendChannels[i];\n\t\t\t\tif (channel != null)\n\t\t\t\t\tchannel.Reset();\n\t\t\t}\n\n\t\t\tif (sendByeMessage)\n\t\t\t\tSendDisconnect(reason, true);\n\n\t\t\tSetStatus(NetConnectionStatus.Disconnected, reason);\n\n\t\t\t// in case we're still in handshake\n\t\t\tlock (m_peer.m_handshakes)\n\t\t\t\tm_peer.m_handshakes.Remove(m_remoteEndpoint);\n\n\t\t\tm_disconnectRequested = false;\n\t\t\tm_connectRequested = false;\n\t\t\tm_handshakeAttempts = 0;\n\t\t}\n\n\t\tinternal void SendConnect(float now)\n\t\t{\n\t\t\tm_peer.VerifyNetworkThread();\n\n\t\t\tNetOutgoingMessage om = m_peer.CreateMessage(m_peerConfiguration.AppIdentifier.Length + 1 + 4);\n\t\t\tom.m_messageType = NetMessageType.Connect;\n\t\t\tom.Write(m_peerConfiguration.AppIdentifier);\n\t\t\tom.Write(m_peer.m_uniqueIdentifier);\n\t\t\tom.Write(now);\n\n\t\t\tWriteLocalHail(om);\n\t\t\t\n\t\t\tm_peer.SendLibrary(om, m_remoteEndpoint);\n\n\t\t\tm_connectRequested = false;\n\t\t\tm_lastHandshakeSendTime = now;\n\t\t\tm_handshakeAttempts++;\n\n\t\t\tif (m_handshakeAttempts > 1)\n\t\t\t\tm_peer.LogDebug(\"Resending Connect...\");\n\t\t\tSetStatus(NetConnectionStatus.InitiatedConnect, \"Locally requested connect\");\n\t\t}\n\n\t\tinternal void SendConnectResponse(float now, bool onLibraryThread)\n\t\t{\n\t\t\tif (onLibraryThread)\n\t\t\t\tm_peer.VerifyNetworkThread();\n\n\t\t\tNetOutgoingMessage om = m_peer.CreateMessage(m_peerConfiguration.AppIdentifier.Length + 1 + 4);\n\t\t\tom.m_messageType = NetMessageType.ConnectResponse;\n\t\t\tom.Write(m_peerConfiguration.AppIdentifier);\n\t\t\tom.Write(m_peer.m_uniqueIdentifier);\n\t\t\tom.Write(now);\n\n\t\t\tWriteLocalHail(om);\n\n\t\t\tif (onLibraryThread)\n\t\t\t\tm_peer.SendLibrary(om, m_remoteEndpoint);\n\t\t\telse\n\t\t\t\tm_peer.m_unsentUnconnectedMessages.Enqueue(new NetTuple<System.Net.IPEndPoint, NetOutgoingMessage>(m_remoteEndpoint, om));\n\n\t\t\tm_lastHandshakeSendTime = now;\n\t\t\tm_handshakeAttempts++;\n\n\t\t\tif (m_handshakeAttempts > 1)\n\t\t\t\tm_peer.LogDebug(\"Resending ConnectResponse...\");\n\n\t\t\tSetStatus(NetConnectionStatus.RespondedConnect, \"Remotely requested connect\");\n\t\t}\n\n\t\tinternal void SendDisconnect(string reason, bool onLibraryThread)\n\t\t{\n\t\t\tif (onLibraryThread)\n\t\t\t\tm_peer.VerifyNetworkThread();\n\n\t\t\tNetOutgoingMessage om = m_peer.CreateMessage(reason);\n\t\t\tom.m_messageType = NetMessageType.Disconnect;\n\t\t\tif (onLibraryThread)\n\t\t\t\tm_peer.SendLibrary(om, m_remoteEndpoint);\n\t\t\telse\n\t\t\t\tm_peer.m_unsentUnconnectedMessages.Enqueue(new NetTuple<System.Net.IPEndPoint, NetOutgoingMessage>(m_remoteEndpoint, om));\n\t\t}\n\n\t\tprivate void WriteLocalHail(NetOutgoingMessage om)\n\t\t{\n\t\t\tif (m_localHailMessage != null)\n\t\t\t{\n\t\t\t\tbyte[] hi = m_localHailMessage.Data;\n\t\t\t\tif (hi != null && hi.Length >= m_localHailMessage.LengthBytes)\n\t\t\t\t{\n\t\t\t\t\tif (om.LengthBytes + m_localHailMessage.LengthBytes > m_peerConfiguration.m_maximumTransmissionUnit - 10)\n\t\t\t\t\t\tthrow new NetException(\"Hail message too large; can maximally be \" + (m_peerConfiguration.m_maximumTransmissionUnit - 10 - om.LengthBytes));\n\t\t\t\t\tom.Write(m_localHailMessage.Data, 0, m_localHailMessage.LengthBytes);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tinternal void SendConnectionEstablished()\n\t\t{\n\t\t\tNetOutgoingMessage om = m_peer.CreateMessage(0);\n\t\t\tom.m_messageType = NetMessageType.ConnectionEstablished;\n\t\t\tom.Write((float)NetTime.Now);\n\t\t\tm_peer.SendLibrary(om, m_remoteEndpoint);\n\n\t\t\tm_handshakeAttempts = 0;\n\n\t\t\tInitializePing();\n\t\t\tif (m_status != NetConnectionStatus.Connected)\n\t\t\t\tSetStatus(NetConnectionStatus.Connected, \"Connected to \" + NetUtility.ToHexString(m_remoteUniqueIdentifier));\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Approves this connection; sending a connection response to the remote host\n\t\t/// </summary>\n\t\tpublic void Approve()\n\t\t{\n\t\t\tif (m_status != NetConnectionStatus.RespondedAwaitingApproval)\n\t\t\t{\n\t\t\t\tm_peer.LogWarning(\"Approve() called in wrong status; expected RespondedAwaitingApproval; got \" + m_status);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tm_localHailMessage = null;\n\t\t\tm_handshakeAttempts = 0;\n\t\t\tSendConnectResponse((float)NetTime.Now, false);\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Approves this connection; sending a connection response to the remote host\n\t\t/// </summary>\n\t\t/// <param name=\"localHail\">The local hail message that will be set as RemoteHailMessage on the remote host</param>\n\t\tpublic void Approve(NetOutgoingMessage localHail)\n\t\t{\n\t\t\tif (m_status != NetConnectionStatus.RespondedAwaitingApproval)\n\t\t\t{\n\t\t\t\tm_peer.LogWarning(\"Approve() called in wrong status; expected RespondedAwaitingApproval; got \" + m_status);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tm_localHailMessage = localHail;\n\t\t\tm_handshakeAttempts = 0;\n\t\t\tSendConnectResponse((float)NetTime.Now, false);\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Denies this connection; disconnecting it\n\t\t/// </summary>\n\t\tpublic void Deny()\n\t\t{\n\t\t\tDeny(\"\");\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Denies this connection; disconnecting it\n\t\t/// </summary>\n\t\t/// <param name=\"reason\">The stated reason for the disconnect, readable as a string in the StatusChanged message on the remote host</param>\n\t\tpublic void Deny(string reason)\n\t\t{\n\t\t\t// send disconnect; remove from handshakes\n\t\t\tSendDisconnect(reason, false);\n\n\t\t\t// remove from handshakes\n\t\t\tm_peer.m_handshakes.Remove(m_remoteEndpoint); // TODO: make this more thread safe? we're on user thread\n\t\t}\n\n\t\tinternal void ReceivedHandshake(double now, NetMessageType tp, int ptr, int payloadLength)\n\t\t{\n\t\t\tm_peer.VerifyNetworkThread();\n\n\t\t\tbyte[] hail;\n\t\t\tswitch (tp)\n\t\t\t{\n\t\t\t\tcase NetMessageType.Connect:\n\t\t\t\t\tif (m_status == NetConnectionStatus.None)\n\t\t\t\t\t{\n\t\t\t\t\t\t// Whee! Server full has already been checked\n\t\t\t\t\t\tbool ok = ValidateHandshakeData(ptr, payloadLength, out hail);\n\t\t\t\t\t\tif (ok)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (hail != null)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tm_remoteHailMessage = m_peer.CreateIncomingMessage(NetIncomingMessageType.Data, hail);\n\t\t\t\t\t\t\t\tm_remoteHailMessage.LengthBits = (hail.Length * 8);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tm_remoteHailMessage = null; \n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (m_peerConfiguration.IsMessageTypeEnabled(NetIncomingMessageType.ConnectionApproval))\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t// ok, let's not add connection just yet\n\t\t\t\t\t\t\t\tNetIncomingMessage appMsg = m_peer.CreateIncomingMessage(NetIncomingMessageType.ConnectionApproval, (m_remoteHailMessage == null ? 0 : m_remoteHailMessage.LengthBytes));\n\t\t\t\t\t\t\t\tappMsg.m_receiveTime = now;\n\t\t\t\t\t\t\t\tappMsg.m_senderConnection = this;\n\t\t\t\t\t\t\t\tappMsg.m_senderEndpoint = this.m_remoteEndpoint;\n\t\t\t\t\t\t\t\tif (m_remoteHailMessage != null)\n\t\t\t\t\t\t\t\t\tappMsg.Write(m_remoteHailMessage.m_data, 0, m_remoteHailMessage.LengthBytes);\n\t\t\t\t\t\t\t\tSetStatus(NetConnectionStatus.RespondedAwaitingApproval, \"Awaiting approval\");\n\t\t\t\t\t\t\t\tm_peer.ReleaseMessage(appMsg);\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tSendConnectResponse((float)now, true);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tif (m_status == NetConnectionStatus.RespondedAwaitingApproval)\n\t\t\t\t\t{\n\t\t\t\t\t\tm_peer.LogWarning(\"Ignoring multiple Connect() most likely due to a delayed Approval\");\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tif (m_status == NetConnectionStatus.RespondedConnect)\n\t\t\t\t\t{\n\t\t\t\t\t\t// our ConnectResponse must have been lost\n\t\t\t\t\t\tSendConnectResponse((float)now, true);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tm_peer.LogDebug(\"Unhandled Connect: \" + tp + \", status is \" + m_status + \" length: \" + payloadLength);\n\t\t\t\t\tbreak;\n\t\t\t\tcase NetMessageType.ConnectResponse:\n\t\t\t\t\tswitch (m_status)\n\t\t\t\t\t{\n\t\t\t\t\t\tcase NetConnectionStatus.InitiatedConnect:\n\t\t\t\t\t\t\t// awesome\n\t\t\t\t\t\t\tbool ok = ValidateHandshakeData(ptr, payloadLength, out hail);\n\t\t\t\t\t\t\tif (ok)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tif (hail != null)\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tm_remoteHailMessage = m_peer.CreateIncomingMessage(NetIncomingMessageType.Data, hail);\n\t\t\t\t\t\t\t\t\tm_remoteHailMessage.LengthBits = (hail.Length * 8);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tm_remoteHailMessage = null;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tm_peer.AcceptConnection(this);\n\t\t\t\t\t\t\t\tSendConnectionEstablished();\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase NetConnectionStatus.RespondedConnect:\n\t\t\t\t\t\t\t// hello, wtf?\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase NetConnectionStatus.Disconnecting:\n\t\t\t\t\t\tcase NetConnectionStatus.Disconnected:\n\t\t\t\t\t\tcase NetConnectionStatus.None:\n\t\t\t\t\t\t\t// wtf? anyway, bye!\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase NetConnectionStatus.Connected:\n\t\t\t\t\t\t\t// my ConnectionEstablished must have been lost, send another one\n\t\t\t\t\t\t\tSendConnectionEstablished();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase NetMessageType.ConnectionEstablished:\n\t\t\t\t\tswitch (m_status)\n\t\t\t\t\t{\n\t\t\t\t\t\tcase NetConnectionStatus.Connected:\n\t\t\t\t\t\t\t// ok...\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase NetConnectionStatus.Disconnected:\n\t\t\t\t\t\tcase NetConnectionStatus.Disconnecting:\n\t\t\t\t\t\tcase NetConnectionStatus.None:\n\t\t\t\t\t\t\t// too bad, almost made it\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase NetConnectionStatus.InitiatedConnect:\n\t\t\t\t\t\t\t// weird, should have been ConnectResponse...\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase NetConnectionStatus.RespondedConnect:\n\t\t\t\t\t\t\t// awesome\n\t\t\t\t\n\t\t\t\t\t\t\tNetIncomingMessage msg = m_peer.SetupReadHelperMessage(ptr, payloadLength);\n\t\t\t\t\t\t\tInitializeRemoteTimeOffset(msg.ReadSingle());\n\n\t\t\t\t\t\t\tm_peer.AcceptConnection(this);\n\t\t\t\t\t\t\tInitializePing();\n\t\t\t\t\t\t\tSetStatus(NetConnectionStatus.Connected, \"Connected to \" + NetUtility.ToHexString(m_remoteUniqueIdentifier));\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase NetMessageType.Disconnect:\n\t\t\t\t\t// ouch\n\t\t\t\t\tstring reason = \"Ouch\";\n\t\t\t\t\ttry\n\t\t\t\t\t{\n\t\t\t\t\t\tNetIncomingMessage inc = m_peer.SetupReadHelperMessage(ptr, payloadLength);\n\t\t\t\t\t\treason = inc.ReadString();\n\t\t\t\t\t}\n\t\t\t\t\tcatch\n\t\t\t\t\t{\n\t\t\t\t\t}\n\t\t\t\t\tExecuteDisconnect(reason, false);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase NetMessageType.Discovery:\n\t\t\t\t\tm_peer.HandleIncomingDiscoveryRequest(now, m_remoteEndpoint, ptr, payloadLength);\n\t\t\t\t\treturn;\n\n\t\t\t\tcase NetMessageType.DiscoveryResponse:\n\t\t\t\t\tm_peer.HandleIncomingDiscoveryResponse(now, m_remoteEndpoint, ptr, payloadLength);\n\t\t\t\t\treturn;\n\n\t\t\t\tcase NetMessageType.Ping:\n\t\t\t\t\t// silently ignore\n\t\t\t\t\treturn;\n\n\t\t\t\tdefault:\n\t\t\t\t\tm_peer.LogDebug(\"Unhandled type during handshake: \" + tp + \" length: \" + payloadLength);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tprivate bool ValidateHandshakeData(int ptr, int payloadLength, out byte[] hail)\n\t\t{\n\t\t\thail = null;\n\n\t\t\t// create temporary incoming message\n\t\t\tNetIncomingMessage msg = m_peer.SetupReadHelperMessage(ptr, payloadLength);\n\t\t\ttry\n\t\t\t{\n\t\t\t\tstring remoteAppIdentifier = msg.ReadString();\n\t\t\t\tlong remoteUniqueIdentifier = msg.ReadInt64();\n\t\t\t\tInitializeRemoteTimeOffset(msg.ReadSingle());\n\n\t\t\t\tint remainingBytes = payloadLength - (msg.PositionInBytes - ptr);\n\t\t\t\tif (remainingBytes > 0)\n\t\t\t\t\thail = msg.ReadBytes(remainingBytes);\n\n\t\t\t\tif (remoteAppIdentifier != m_peer.m_configuration.AppIdentifier)\n\t\t\t\t{\n\t\t\t\t\t// wrong app identifier\n\t\t\t\t\tExecuteDisconnect(\"Wrong application identifier!\", true);\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tm_remoteUniqueIdentifier = remoteUniqueIdentifier;\n\t\t\t}\n\t\t\tcatch(Exception ex)\n\t\t\t{\n\t\t\t\t// whatever; we failed\n\t\t\t\tExecuteDisconnect(\"Handshake data validation failed\", true);\n\t\t\t\tm_peer.LogWarning(\"ReadRemoteHandshakeData failed: \" + ex.Message);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t\t\n\t\t/// <summary>\n\t\t/// Disconnect from the remote peer\n\t\t/// </summary>\n\t\t/// <param name=\"byeMessage\">the message to send with the disconnect message</param>\n\t\tpublic void Disconnect(string byeMessage)\n\t\t{\n\t\t\t// user or library thread\n\t\t\tif (m_status == NetConnectionStatus.None || m_status == NetConnectionStatus.Disconnected)\n\t\t\t\treturn;\n\n\t\t\tm_peer.LogVerbose(\"Disconnect requested for \" + this);\n\t\t\tm_disconnectMessage = byeMessage;\n\n\t\t\tif (m_status != NetConnectionStatus.Disconnected && m_status != NetConnectionStatus.None)\n\t\t\t\tSetStatus(NetConnectionStatus.Disconnecting, byeMessage);\n\n\t\t\tm_handshakeAttempts = 0;\n\t\t\tm_disconnectRequested = true;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Lidgren/NetConnection.Latency.cs",
    "content": "﻿using System;\n\nnamespace Lidgren.Network\n{\n\tpublic partial class NetConnection\n\t{\n\t\tprivate float m_sentPingTime;\n\t\tprivate int m_sentPingNumber;\n\t\tprivate float m_averageRoundtripTime;\n\t\tprivate float m_timeoutDeadline = float.MaxValue;\n\n\t\t// local time value + m_remoteTimeOffset = remote time value\n\t\tinternal double m_remoteTimeOffset;\n\n\t\t/// <summary>\n\t\t/// Gets the current average roundtrip time in seconds\n\t\t/// </summary>\n\t\tpublic float AverageRoundtripTime { get { return m_averageRoundtripTime; } }\n\n\t\t/// <summary>\n\t\t/// Time offset between this peer and the remote peer\n\t\t/// </summary>\n\t\tpublic float RemoteTimeOffset { get { return (float)m_remoteTimeOffset; } }\n\n\t\t// this might happen more than once\n\t\tinternal void InitializeRemoteTimeOffset(float remoteSendTime)\n\t\t{\n\t\t\tm_remoteTimeOffset = (remoteSendTime + (m_averageRoundtripTime / 2.0)) - NetTime.Now;\n\t\t}\n\t\t\n\t\t/// <summary>\n\t\t/// Gets local time value comparable to NetTime.Now from a remote value\n\t\t/// </summary>\n\t\tpublic double GetLocalTime(double remoteTimestamp)\n\t\t{\n\t\t\treturn remoteTimestamp - m_remoteTimeOffset;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Gets the remote time value for a local time value produced by NetTime.Now\n\t\t/// </summary>\n\t\tpublic double GetRemoteTime(double localTimestamp)\n\t\t{\n\t\t\treturn localTimestamp + m_remoteTimeOffset;\n\t\t}\n\n\t\tinternal void InitializePing()\n\t\t{\n\t\t\tfloat now = (float)NetTime.Now;\n\n\t\t\t// randomize ping sent time (0.25 - 1.0 x ping interval)\n\t\t\tm_sentPingTime = now;\n\t\t\tm_sentPingTime -= (m_peerConfiguration.PingInterval * 0.25f); // delay ping for a little while\n\t\t\tm_sentPingTime -= (NetRandom.Instance.NextSingle() * (m_peerConfiguration.PingInterval * 0.75f));\n\t\t\tm_timeoutDeadline = now + (m_peerConfiguration.m_connectionTimeout * 2.0f); // initially allow a little more time\n\n\t\t\t// make it better, quick :-)\n\t\t\tSendPing();\n\t\t}\n\n\t\tinternal void SendPing()\n\t\t{\n\t\t\tm_peer.VerifyNetworkThread();\n\n\t\t\tm_sentPingNumber++;\n\n\t\t\tm_sentPingTime = (float)NetTime.Now;\n\t\t\tNetOutgoingMessage om = m_peer.CreateMessage(1);\n\t\t\tom.Write((byte)m_sentPingNumber); // truncating to 0-255\n\t\t\tom.m_messageType = NetMessageType.Ping;\n\n\t\t\tint len = om.Encode(m_peer.m_sendBuffer, 0, 0);\n\t\t\tbool connectionReset;\n\t\t\tm_peer.SendPacket(len, m_remoteEndpoint, 1, out connectionReset);\n\n\t\t\tm_statistics.PacketSent(len, 1);\n\t\t}\n\n\t\tinternal void SendPong(int pingNumber)\n\t\t{\n\t\t\tm_peer.VerifyNetworkThread();\n\n\t\t\tNetOutgoingMessage om = m_peer.CreateMessage(5);\n\t\t\tom.Write((byte)pingNumber);\n\t\t\tom.Write((float)NetTime.Now); // we should update this value to reflect the exact point in time the packet is SENT\n\t\t\tom.m_messageType = NetMessageType.Pong;\n\n\t\t\tint len = om.Encode(m_peer.m_sendBuffer, 0, 0);\n\t\t\tbool connectionReset;\n\n\t\t\tm_peer.SendPacket(len, m_remoteEndpoint, 1, out connectionReset);\n\n\t\t\tm_statistics.PacketSent(len, 1);\n\t\t}\n\n\t\tinternal void ReceivedPong(float now, int pongNumber, float remoteSendTime)\n\t\t{\n\t\t\tif ((byte)pongNumber != (byte)m_sentPingNumber)\n\t\t\t{\n\t\t\t\tm_peer.LogVerbose(\"Ping/Pong mismatch; dropped message?\");\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tm_timeoutDeadline = now + m_peerConfiguration.m_connectionTimeout;\n\n\t\t\tfloat rtt = now - m_sentPingTime;\n\t\t\tNetException.Assert(rtt >= 0);\n\n\t\t\tdouble diff = (remoteSendTime + (rtt / 2.0)) - now;\n\n\t\t\tif (m_averageRoundtripTime < 0)\n\t\t\t{\n\t\t\t\tm_remoteTimeOffset = diff;\n\t\t\t\tm_averageRoundtripTime = rtt;\n\t\t\t\tm_peer.LogDebug(\"Initiated average roundtrip time to \" + NetTime.ToReadable(m_averageRoundtripTime) + \" Remote time is: \" + (now + diff));\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tm_averageRoundtripTime = (m_averageRoundtripTime * 0.7f) + (float)(rtt * 0.3f);\n\n\t\t\t\tm_remoteTimeOffset = ((m_remoteTimeOffset * (double)(m_sentPingNumber - 1)) + diff) / (double)m_sentPingNumber;\n\t\t\t\tm_peer.LogVerbose(\"Updated average roundtrip time to \" + NetTime.ToReadable(m_averageRoundtripTime) + \", remote time to \" + (now + m_remoteTimeOffset) + \" (ie. diff \" + m_remoteTimeOffset + \")\");\n\t\t\t}\n\n\t\t\t// update resend delay for all channels\n\t\t\tfloat resendDelay = GetResendDelay();\n\t\t\tforeach (var chan in m_sendChannels)\n\t\t\t{\n\t\t\t\tvar rchan = chan as NetReliableSenderChannel;\n\t\t\t\tif (rchan != null)\n\t\t\t\t\trchan.m_resendDelay = resendDelay;\n\t\t\t}\n\n\t\t\t// m_peer.LogVerbose(\"Timeout deadline pushed to  \" + m_timeoutDeadline);\n\n\t\t\t// notify the application that average rtt changed\n\t\t\tif (m_peer.m_configuration.IsMessageTypeEnabled(NetIncomingMessageType.ConnectionLatencyUpdated))\n\t\t\t{\n\t\t\t\tNetIncomingMessage update = m_peer.CreateIncomingMessage(NetIncomingMessageType.ConnectionLatencyUpdated, 4);\n\t\t\t\tupdate.m_senderConnection = this;\n\t\t\t\tupdate.m_senderEndpoint = this.m_remoteEndpoint;\n\t\t\t\tupdate.Write(rtt);\n\t\t\t\tm_peer.ReleaseMessage(update);\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Lidgren/NetConnection.MTU.cs",
    "content": "﻿using System;\n\nnamespace Lidgren.Network\n{\n\tpublic partial class NetConnection  \n\t{\n\t\tprivate enum ExpandMTUStatus\n\t\t{\n\t\t\tNone,\n\t\t\tInProgress,\n\t\t\tFinished\n\t\t}\n\n\t\tprivate const int c_protocolMaxMTU = (int)((((float)ushort.MaxValue / 8.0f) - 1.0f));\n\n\t\tprivate ExpandMTUStatus m_expandMTUStatus;\n\n\t\tprivate int m_largestSuccessfulMTU;\n\t\tprivate int m_smallestFailedMTU;\n\n\t\tprivate int m_lastSentMTUAttemptSize;\n\t\tprivate double m_lastSentMTUAttemptTime;\n\t\tprivate int m_mtuAttemptFails;\n\n\t\tinternal int m_currentMTU;\n\n        public int GetMTU()\n        {\n            return m_currentMTU;\n        }\n\n\t\tinternal void InitExpandMTU(double now)\n\t\t{\n\t\t\tm_lastSentMTUAttemptTime = now + m_peerConfiguration.m_expandMTUFrequency + 1.5f + m_averageRoundtripTime; // wait a tiny bit before starting to expand mtu\n\t\t\tm_largestSuccessfulMTU = 512;\n\t\t\tm_smallestFailedMTU = -1;\n\t\t\tm_currentMTU = m_peerConfiguration.MaximumTransmissionUnit;\n\t\t}\n\n\t\tprivate void MTUExpansionHeartbeat(double now)\n\t\t{\n\t\t\tif (m_expandMTUStatus == ExpandMTUStatus.Finished)\n\t\t\t\treturn;\n\n\t\t\tif (m_expandMTUStatus == ExpandMTUStatus.None)\n\t\t\t{\n\t\t\t\tif (m_peerConfiguration.m_autoExpandMTU == false)\n\t\t\t\t{\n\t\t\t\t\tFinalizeMTU(m_currentMTU);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// begin expansion\n\t\t\t\tExpandMTU(now, true);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (now > m_lastSentMTUAttemptTime + m_peerConfiguration.ExpandMTUFrequency)\n\t\t\t{\n\t\t\t\tm_mtuAttemptFails++;\n\t\t\t\tif (m_mtuAttemptFails == 3)\n\t\t\t\t{\n\t\t\t\t\tFinalizeMTU(m_currentMTU);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// timed out; ie. failed\n\t\t\t\tm_smallestFailedMTU = m_lastSentMTUAttemptSize;\n\t\t\t\tExpandMTU(now, false);\n\t\t\t}\n\t\t}\n\n\t\tprivate void ExpandMTU(double now, bool succeeded)\n\t\t{\n\t\t\tint tryMTU;\n\n\t\t\t// we've nevered encountered failure\n\t\t\tif (m_smallestFailedMTU == -1)\n\t\t\t{\n\t\t\t\t// we've never encountered failure; expand by 25% each time\n\t\t\t\ttryMTU = (int)((float)m_currentMTU * 1.25f);\n\t\t\t\t//m_peer.LogDebug(\"Trying MTU \" + tryMTU);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t// we HAVE encountered failure; so try in between\n\t\t\t\ttryMTU = (int)(((float)m_smallestFailedMTU + (float)m_largestSuccessfulMTU) / 2.0f);\n\t\t\t\t//m_peer.LogDebug(\"Trying MTU \" + m_smallestFailedMTU + \" <-> \" + m_largestSuccessfulMTU + \" = \" + tryMTU);\n\t\t\t}\n\n\t\t\tif (tryMTU > c_protocolMaxMTU)\n\t\t\t\ttryMTU = c_protocolMaxMTU;\n\n\t\t\tif (tryMTU == m_largestSuccessfulMTU)\n\t\t\t{\n\t\t\t\t//m_peer.LogDebug(\"Found optimal MTU - exiting\");\n\t\t\t\tFinalizeMTU(m_largestSuccessfulMTU);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tSendExpandMTU(now, tryMTU);\n\t\t}\n\n\t\tprivate void SendExpandMTU(double now, int size)\n\t\t{\n\t\t\tNetOutgoingMessage om = m_peer.CreateMessage(size);\n\t\t\tbyte[] tmp = new byte[size];\n\t\t\tom.Write(tmp);\n\t\t\tom.m_messageType = NetMessageType.ExpandMTURequest;\n\t\t\tint len = om.Encode(m_peer.m_sendBuffer, 0, 0);\n\n\t\t\tbool ok = m_peer.SendMTUPacket(len, m_remoteEndpoint);\n\t\t\tif (ok == false)\n\t\t\t{\n\t\t\t\t//m_peer.LogDebug(\"Send MTU failed for size \" + size);\n\n\t\t\t\t// failure\n\t\t\t\tif (m_smallestFailedMTU == -1 || size < m_smallestFailedMTU)\n\t\t\t\t{\n\t\t\t\t\tm_smallestFailedMTU = size;\n\t\t\t\t\tm_mtuAttemptFails++;\n\t\t\t\t\tif (m_mtuAttemptFails >= m_peerConfiguration.ExpandMTUFailAttempts)\n\t\t\t\t\t{\n\t\t\t\t\t\tFinalizeMTU(m_largestSuccessfulMTU);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tExpandMTU(now, false);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tm_lastSentMTUAttemptSize = size;\n\t\t\tm_lastSentMTUAttemptTime = now;\n\n\t\t\tm_statistics.PacketSent(len, 1);\n\t\t}\n\n\t\tprivate void FinalizeMTU(int size)\n\t\t{\n\t\t\tif (m_expandMTUStatus == ExpandMTUStatus.Finished)\n\t\t\t\treturn;\n\t\t\tm_expandMTUStatus = ExpandMTUStatus.Finished;\n\t\t\tm_currentMTU = size;\n\t\t\tif (m_currentMTU != m_peerConfiguration.m_maximumTransmissionUnit)\n\t\t\t\tm_peer.LogDebug(\"Expanded Maximum Transmission Unit to: \" + m_currentMTU + \" bytes\");\n\t\t\treturn;\n\t\t}\n\n\t\tprivate void SendMTUSuccess(int size)\n\t\t{\n\t\t\tNetOutgoingMessage om = m_peer.CreateMessage(1);\n\t\t\tom.Write(size);\n\t\t\tom.m_messageType = NetMessageType.ExpandMTUSuccess;\n\t\t\tint len = om.Encode(m_peer.m_sendBuffer, 0, 0);\n\t\t\tbool connectionReset;\n\t\t\tm_peer.SendPacket(len, m_remoteEndpoint, 1, out connectionReset);\n\n\t\t\t// m_peer.LogDebug(\"Received MTU expand request for \" + size + \" bytes\");\n\n\t\t\tm_statistics.PacketSent(len, 1);\n\t\t}\n\n\t\tprivate void HandleExpandMTUSuccess(double now, int size)\n\t\t{\n\t\t\tif (size > m_largestSuccessfulMTU)\n\t\t\t\tm_largestSuccessfulMTU = size;\n\n\t\t\tif (size < m_currentMTU)\n\t\t\t{\n\t\t\t\t//m_peer.LogDebug(\"Received low MTU expand success (size \" + size + \"); current mtu is \" + m_currentMTU);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t//m_peer.LogDebug(\"Expanding MTU to \" + size);\n\t\t\tm_currentMTU = size;\n\n\t\t\tExpandMTU(now, true);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Lidgren/NetConnection.cs",
    "content": "﻿using System;\nusing System.Net;\nusing System.Threading;\nusing System.Diagnostics;\n\nnamespace Lidgren.Network\n{\n\t/// <summary>\n\t/// Represents a connection to a remote peer\n\t/// </summary>\n\t[DebuggerDisplay(\"RemoteUniqueIdentifier={RemoteUniqueIdentifier} RemoteEndpoint={RemoteEndpoint}\")]\n\tpublic partial class NetConnection\n\t{\n\t\tinternal NetPeer m_peer;\n\t\tinternal NetPeerConfiguration m_peerConfiguration;\n\t\tinternal NetConnectionStatus m_status;\n\t\tinternal NetConnectionStatus m_visibleStatus;\n\t\tinternal IPEndPoint m_remoteEndpoint;\n\t\tinternal NetSenderChannelBase[] m_sendChannels;\n\t\tinternal NetReceiverChannelBase[] m_receiveChannels;\n\t\tinternal NetOutgoingMessage m_localHailMessage;\n\t\tinternal long m_remoteUniqueIdentifier;\n\t\tinternal NetQueue<NetTuple<NetMessageType, int>> m_queuedOutgoingAcks;\n\t\tinternal NetQueue<NetTuple<NetMessageType, int>> m_queuedIncomingAcks;\n\t\tprivate int m_sendBufferWritePtr;\n\t\tprivate int m_sendBufferNumMessages;\n\t\tprivate object m_tag;\n\t\tinternal NetConnectionStatistics m_statistics;\n\n\t\t/// <summary>\n\t\t/// Gets or sets the application defined object containing data about the connection\n\t\t/// </summary>\n\t\tpublic object Tag\n\t\t{\n\t\t\tget { return m_tag; }\n\t\t\tset { m_tag = value; }\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Gets the peer which holds this connection\n\t\t/// </summary>\n\t\tpublic NetPeer Peer { get { return m_peer; } }\n\n\t\t/// <summary>\n\t\t/// Gets the current status of the connection (synced to the last status message read)\n\t\t/// </summary>\n\t\tpublic NetConnectionStatus Status { get { return m_visibleStatus; } }\n\n\t\t/// <summary>\n\t\t/// Gets various statistics for this connection\n\t\t/// </summary>\n\t\tpublic NetConnectionStatistics Statistics { get { return m_statistics; } }\n\n\t\t/// <summary>\n\t\t/// Gets the remote endpoint for the connection\n\t\t/// </summary>\n\t\tpublic IPEndPoint RemoteEndpoint { get { return m_remoteEndpoint; } }\n\n\t\t/// <summary>\n\t\t/// Gets the unique identifier of the remote NetPeer for this connection\n\t\t/// </summary>\n\t\tpublic long RemoteUniqueIdentifier { get { return m_remoteUniqueIdentifier; } }\n\n\t\t/// <summary>\n\t\t/// Gets the local hail message that was sent as part of the handshake\n\t\t/// </summary>\n\t\tpublic NetOutgoingMessage LocalHailMessage { get { return m_localHailMessage; } }\n\n\t\t// gets the time before automatically resending an unacked message\n\t\tinternal float GetResendDelay()\n\t\t{\n\t\t\tfloat avgRtt = m_averageRoundtripTime;\n\t\t\tif (avgRtt <= 0)\n\t\t\t\tavgRtt = 0.1f; // \"default\" resend is based on 100 ms roundtrip time\n\t\t\treturn 0.02f + (avgRtt * 2.0f); // 20 ms + double rtt\n\t\t}\n\n\t\tinternal NetConnection(NetPeer peer, IPEndPoint remoteEndpoint)\n\t\t{\n\t\t\tm_peer = peer;\n\t\t\tm_peerConfiguration = m_peer.Configuration;\n\t\t\tm_status = NetConnectionStatus.None;\n\t\t\tm_visibleStatus = NetConnectionStatus.None;\n\t\t\tm_remoteEndpoint = remoteEndpoint;\n\t\t\tm_sendChannels = new NetSenderChannelBase[NetConstants.NumTotalChannels];\n\t\t\tm_receiveChannels = new NetReceiverChannelBase[NetConstants.NumTotalChannels];\n\t\t\tm_queuedOutgoingAcks = new NetQueue<NetTuple<NetMessageType, int>>(4);\n\t\t\tm_queuedIncomingAcks = new NetQueue<NetTuple<NetMessageType, int>>(4);\n\t\t\tm_statistics = new NetConnectionStatistics(this);\n\t\t\tm_averageRoundtripTime = -1.0f;\n\t\t\tm_currentMTU = m_peerConfiguration.MaximumTransmissionUnit;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Change the internal endpoint to this new one. Used when, during handshake, a switch in port is detected (due to NAT)\n\t\t/// </summary>\n\t\tinternal void MutateEndpoint(IPEndPoint endpoint)\n\t\t{\n\t\t\tm_remoteEndpoint = endpoint;\n\n\t\t}\n\n\t\tinternal void SetStatus(NetConnectionStatus status, string reason)\n\t\t{\n\t\t\t// user or library thread\n\n\t\t\tif (status == m_status)\n\t\t\t\treturn;\n\n\t\t\tm_status = status;\n\t\t\tif (reason == null)\n\t\t\t\treason = string.Empty;\n\n\t\t\tif (m_status == NetConnectionStatus.Connected)\n\t\t\t{\n\t\t\t\tm_timeoutDeadline = (float)NetTime.Now + m_peerConfiguration.m_connectionTimeout;\n\t\t\t\tm_peer.LogVerbose(\"Timeout deadline initialized to  \" + m_timeoutDeadline);\n\t\t\t}\n\n\t\t\tif (m_peerConfiguration.IsMessageTypeEnabled(NetIncomingMessageType.StatusChanged))\n\t\t\t{\n\t\t\t\tNetIncomingMessage info = m_peer.CreateIncomingMessage(NetIncomingMessageType.StatusChanged, 4 + reason.Length + (reason.Length > 126 ? 2 : 1));\n\t\t\t\tinfo.m_senderConnection = this;\n\t\t\t\tinfo.m_senderEndpoint = m_remoteEndpoint;\n\t\t\t\tinfo.Write((byte)m_status);\n\t\t\t\tinfo.Write(reason);\n\t\t\t\tm_peer.ReleaseMessage(info);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t// app dont want those messages, update visible status immediately\n\t\t\t\tm_visibleStatus = m_status;\n\t\t\t}\n\t\t}\n\n\t\tinternal void Heartbeat(float now, uint frameCounter)\n\t\t{\n\t\t\tm_peer.VerifyNetworkThread();\n\n\t\t\tNetException.Assert(m_status != NetConnectionStatus.InitiatedConnect && m_status != NetConnectionStatus.RespondedConnect);\n\n\t\t\tif ((frameCounter % 5) == 0)\n\t\t\t{\n\t\t\t\tif (now > m_timeoutDeadline)\n\t\t\t\t{\n\t\t\t\t\t//\n\t\t\t\t\t// connection timed out\n\t\t\t\t\t//\n\t\t\t\t\tm_peer.LogVerbose(\"Connection timed out at \" + now + \" deadline was \" + m_timeoutDeadline);\n\t\t\t\t\tExecuteDisconnect(\"Connection timed out\", true);\n\t\t\t\t}\n\n\t\t\t\t// send ping?\n\t\t\t\tif (m_status == NetConnectionStatus.Connected)\n\t\t\t\t{\n\t\t\t\t\tif (now > m_sentPingTime + m_peer.m_configuration.m_pingInterval)\n\t\t\t\t\t\tSendPing();\n\n\t\t\t\t\t// handle expand mtu\n\t\t\t\t\tMTUExpansionHeartbeat(now);\n\t\t\t\t}\n\n\t\t\t\tif (m_disconnectRequested)\n\t\t\t\t{\n\t\t\t\t\tExecuteDisconnect(m_disconnectMessage, true);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tbool connectionReset; // TODO: handle connection reset\n\n\t\t\t//\n\t\t\t// Note: at this point m_sendBufferWritePtr and m_sendBufferNumMessages may be non-null; resends may already be queued up\n\t\t\t//\n\n\t\t\tbyte[] sendBuffer = m_peer.m_sendBuffer;\n\t\t\tint mtu = m_currentMTU;\n\n\t\t\tif ((frameCounter % 3) == 0) // coalesce a few frames\n\t\t\t{\n\t\t\t\t//\n\t\t\t\t// send ack messages\n\t\t\t\t//\n\t\t\t\twhile (m_queuedOutgoingAcks.Count > 0)\n\t\t\t\t{\n\t\t\t\t\tint acks = (mtu - (m_sendBufferWritePtr + 5)) / 3; // 3 bytes per actual ack\n\t\t\t\t\tif (acks > m_queuedOutgoingAcks.Count)\n\t\t\t\t\t\tacks = m_queuedOutgoingAcks.Count;\n\n\t\t\t\t\tNetException.Assert(acks > 0);\n\n\t\t\t\t\tm_sendBufferNumMessages++;\n\n\t\t\t\t\t// write acks header\n\t\t\t\t\tsendBuffer[m_sendBufferWritePtr++] = (byte)NetMessageType.Acknowledge;\n\t\t\t\t\tsendBuffer[m_sendBufferWritePtr++] = 0; // no sequence number\n\t\t\t\t\tsendBuffer[m_sendBufferWritePtr++] = 0; // no sequence number\n\t\t\t\t\tint len = (acks * 3) * 8; // bits\n\t\t\t\t\tsendBuffer[m_sendBufferWritePtr++] = (byte)len;\n\t\t\t\t\tsendBuffer[m_sendBufferWritePtr++] = (byte)(len >> 8);\n\n\t\t\t\t\t// write acks\n\t\t\t\t\tfor (int i = 0; i < acks; i++)\n\t\t\t\t\t{\n\t\t\t\t\t\tNetTuple<NetMessageType, int> tuple;\n\t\t\t\t\t\tm_queuedOutgoingAcks.TryDequeue(out tuple);\n\n\t\t\t\t\t\t//m_peer.LogVerbose(\"Sending ack for \" + tuple.Item1 + \"#\" + tuple.Item2);\n\n\t\t\t\t\t\tsendBuffer[m_sendBufferWritePtr++] = (byte)tuple.Item1;\n\t\t\t\t\t\tsendBuffer[m_sendBufferWritePtr++] = (byte)tuple.Item2;\n\t\t\t\t\t\tsendBuffer[m_sendBufferWritePtr++] = (byte)(tuple.Item2 >> 8);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (m_queuedOutgoingAcks.Count > 0)\n\t\t\t\t\t{\n\t\t\t\t\t\t// send packet and go for another round of acks\n\t\t\t\t\t\tNetException.Assert(m_sendBufferWritePtr > 0 && m_sendBufferNumMessages > 0);\n\t\t\t\t\t\tm_peer.SendPacket(m_sendBufferWritePtr, m_remoteEndpoint, m_sendBufferNumMessages, out connectionReset);\n\t\t\t\t\t\tm_statistics.PacketSent(m_sendBufferWritePtr, 1);\n\t\t\t\t\t\tm_sendBufferWritePtr = 0;\n\t\t\t\t\t\tm_sendBufferNumMessages = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t//\n\t\t\t\t// Parse incoming acks (may trigger resends)\n\t\t\t\t//\n\t\t\t\tNetTuple<NetMessageType, int> incAck;\n\t\t\t\twhile (m_queuedIncomingAcks.TryDequeue(out incAck))\n\t\t\t\t{\n\t\t\t\t\t//m_peer.LogVerbose(\"Received ack for \" + acktp + \"#\" + seqNr);\n\t\t\t\t\tNetSenderChannelBase chan = m_sendChannels[(int)incAck.Item1 - 1];\n\t\t\t\t\tif (chan == null)\n\t\t\t\t\t\tchan = CreateSenderChannel(incAck.Item1);\n\t\t\t\t\tchan.ReceiveAcknowledge(now, incAck.Item2);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//\n\t\t\t// send queued messages\n\t\t\t//\n\t\t\tif (m_peer.m_executeFlushSendQueue)\n\t\t\t{\n\t\t\t\tfor (int i = m_sendChannels.Length - 1; i >= 0; i--)    // Reverse order so reliable messages are sent first\n\t\t\t\t{\n\t\t\t\t\tvar channel = m_sendChannels[i];\n\t\t\t\t\tNetException.Assert(m_sendBufferWritePtr < 1 || m_sendBufferNumMessages > 0);\n\t\t\t\t\tif (channel != null)\n\t\t\t\t\t\tchannel.SendQueuedMessages(now);\n\t\t\t\t\tNetException.Assert(m_sendBufferWritePtr < 1 || m_sendBufferNumMessages > 0);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//\n\t\t\t// Put on wire data has been written to send buffer but not yet sent\n\t\t\t//\n\t\t\tif (m_sendBufferWritePtr > 0)\n\t\t\t{\n\t\t\t\tm_peer.VerifyNetworkThread();\n\t\t\t\tNetException.Assert(m_sendBufferWritePtr > 0 && m_sendBufferNumMessages > 0);\n\t\t\t\tm_peer.SendPacket(m_sendBufferWritePtr, m_remoteEndpoint, m_sendBufferNumMessages, out connectionReset);\n\t\t\t\tm_statistics.PacketSent(m_sendBufferWritePtr, m_sendBufferNumMessages);\n\t\t\t\tm_sendBufferWritePtr = 0;\n\t\t\t\tm_sendBufferNumMessages = 0;\n\t\t\t}\n\t\t}\n\t\t\n\t\t// Queue an item for immediate sending on the wire\n\t\t// This method is called from the ISenderChannels\n\t\tinternal void QueueSendMessage(NetOutgoingMessage om, int seqNr)\n\t\t{\n\t\t\tm_peer.VerifyNetworkThread();\n\n\t\t\tint sz = om.GetEncodedSize();\n\t\t\tif (sz > m_currentMTU)\n\t\t\t\tm_peer.LogWarning(\"Message larger than MTU! Fragmentation must have failed!\");\n\n\t\t\tif (m_sendBufferWritePtr + sz > m_currentMTU)\n\t\t\t{\n\t\t\t\tbool connReset; // TODO: handle connection reset\n\t\t\t\tNetException.Assert(m_sendBufferWritePtr > 0 && m_sendBufferNumMessages > 0); // or else the message should have been fragmented earlier\n\t\t\t\tm_peer.SendPacket(m_sendBufferWritePtr, m_remoteEndpoint, m_sendBufferNumMessages, out connReset);\n\t\t\t\tm_statistics.PacketSent(m_sendBufferWritePtr, m_sendBufferNumMessages);\n\t\t\t\tm_sendBufferWritePtr = 0;\n\t\t\t\tm_sendBufferNumMessages = 0;\n\t\t\t}\n\n\t\t\tm_sendBufferWritePtr = om.Encode(m_peer.m_sendBuffer, m_sendBufferWritePtr, seqNr);\n\t\t\tm_sendBufferNumMessages++;\n\n\t\t\tNetException.Assert(m_sendBufferWritePtr > 0, \"Encoded zero size message?\");\n\t\t\tNetException.Assert(m_sendBufferNumMessages > 0);\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Send a message to this remote connection\n\t\t/// </summary>\n\t\t/// <param name=\"msg\">The message to send</param>\n\t\t/// <param name=\"method\">How to deliver the message</param>\n\t\t/// <param name=\"sequenceChannel\">Sequence channel within the delivery method</param>\n\t\tpublic NetSendResult SendMessage(NetOutgoingMessage msg, NetDeliveryMethod method, int sequenceChannel)\n\t\t{\n\t\t\treturn m_peer.SendMessage(msg, this, method, sequenceChannel);\n\t\t}\n\n\t\t// called by SendMessage() and NetPeer.SendMessage; ie. may be user thread\n\t\tinternal NetSendResult EnqueueMessage(NetOutgoingMessage msg, NetDeliveryMethod method, int sequenceChannel)\n\t\t{\n\t\t\tif (m_status != NetConnectionStatus.Connected)\n\t\t\t\treturn NetSendResult.FailedNotConnected;\n\n\t\t\tNetMessageType tp = (NetMessageType)((int)method + sequenceChannel);\n\t\t\tmsg.m_messageType = tp;\n\n\t\t\t// TODO: do we need to make this more thread safe?\n\t\t\tint channelSlot = (int)method - 1 + sequenceChannel;\n\t\t\tNetSenderChannelBase chan = m_sendChannels[channelSlot];\n\t\t\tif (chan == null)\n\t\t\t\tchan = CreateSenderChannel(tp);\n\n\t\t\tif (msg.GetEncodedSize() > m_currentMTU)\n\t\t\t\tthrow new NetException(\"Message too large! Fragmentation failure?\");\n\n\t\t\tvar retval = chan.Enqueue(msg);\n\t\t\tif (retval == NetSendResult.Sent && m_peerConfiguration.m_autoFlushSendQueue == false)\n\t\t\t\tretval = NetSendResult.Queued; // queued since we're not autoflushing\n\t\t\treturn retval;\n\t\t}\n\n\t\t// may be on user thread\n\t\tprivate NetSenderChannelBase CreateSenderChannel(NetMessageType tp)\n\t\t{\n\t\t\tNetSenderChannelBase chan;\n\t\t\tlock (m_sendChannels)\n\t\t\t{\n\t\t\t\tNetDeliveryMethod method = NetUtility.GetDeliveryMethod(tp);\n\t\t\t\tint sequenceChannel = (int)tp - (int)method;\n\n\t\t\t\tint channelSlot = (int)method - 1 + sequenceChannel;\n\t\t\t\tif (m_sendChannels[channelSlot] != null)\n\t\t\t\t{\n\t\t\t\t\t// we were pre-empted by another call to this method\n\t\t\t\t\tchan = m_sendChannels[channelSlot];\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\n\t\t\t\t\tswitch (method)\n\t\t\t\t\t{\n\t\t\t\t\t\tcase NetDeliveryMethod.Unreliable:\n\t\t\t\t\t\tcase NetDeliveryMethod.UnreliableSequenced:\n\t\t\t\t\t\t\tchan = new NetUnreliableSenderChannel(this, NetUtility.GetWindowSize(method));\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase NetDeliveryMethod.ReliableOrdered:\n\t\t\t\t\t\t\tchan = new NetReliableSenderChannel(this, NetUtility.GetWindowSize(method));\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase NetDeliveryMethod.ReliableSequenced:\n\t\t\t\t\t\tcase NetDeliveryMethod.ReliableUnordered:\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tchan = new NetReliableSenderChannel(this, NetUtility.GetWindowSize(method));\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tm_sendChannels[channelSlot] = chan;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn chan;\n\t\t}\n\n\t\t// received a library message while Connected\n\t\tinternal void ReceivedLibraryMessage(NetMessageType tp, int ptr, int payloadLength)\n\t\t{\n\t\t\tm_peer.VerifyNetworkThread();\n\n\t\t\tfloat now = (float)NetTime.Now;\n\n\t\t\tswitch (tp)\n\t\t\t{\n\t\t\t\tcase NetMessageType.Disconnect:\n\t\t\t\t\tNetIncomingMessage msg = m_peer.SetupReadHelperMessage(ptr, payloadLength);\n\t\t\t\t\tExecuteDisconnect(msg.ReadString(), false);\n\t\t\t\t\tbreak;\n\t\t\t\tcase NetMessageType.Acknowledge:\n\t\t\t\t\tfor (int i = 0; i < payloadLength; i+=3)\n\t\t\t\t\t{\n\t\t\t\t\t\tNetMessageType acktp = (NetMessageType)m_peer.m_receiveBuffer[ptr++]; // netmessagetype\n\t\t\t\t\t\tint seqNr = m_peer.m_receiveBuffer[ptr++];\n\t\t\t\t\t\tseqNr |= (m_peer.m_receiveBuffer[ptr++] << 8);\n\n\t\t\t\t\t\t// need to enqueue this and handle it in the netconnection heartbeat; so be able to send resends together with normal sends\n\t\t\t\t\t\tm_queuedIncomingAcks.Enqueue(new NetTuple<NetMessageType, int>(acktp, seqNr));\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase NetMessageType.Ping:\n\t\t\t\t\tint pingNr = m_peer.m_receiveBuffer[ptr++];\n\t\t\t\t\tSendPong(pingNr);\n\t\t\t\t\tbreak;\n\t\t\t\tcase NetMessageType.Pong:\n\t\t\t\t\tNetIncomingMessage pmsg = m_peer.SetupReadHelperMessage(ptr, payloadLength);\n\t\t\t\t\tint pongNr = pmsg.ReadByte();\n\t\t\t\t\tfloat remoteSendTime = pmsg.ReadSingle();\n\t\t\t\t\tReceivedPong(now, pongNr, remoteSendTime);\n\t\t\t\t\tbreak;\n\t\t\t\tcase NetMessageType.ExpandMTURequest:\n\t\t\t\t\tSendMTUSuccess(payloadLength);\n\t\t\t\t\tbreak;\n\t\t\t\tcase NetMessageType.ExpandMTUSuccess:\n\t\t\t\t\tNetIncomingMessage emsg = m_peer.SetupReadHelperMessage(ptr, payloadLength);\n\t\t\t\t\tint size = emsg.ReadInt32();\n\t\t\t\t\tHandleExpandMTUSuccess(now, size);\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tm_peer.LogWarning(\"Connection received unhandled library message: \" + tp);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tinternal void ReceivedMessage(NetIncomingMessage msg)\n\t\t{\n\t\t\tm_peer.VerifyNetworkThread();\n\n\t\t\tNetMessageType tp = msg.m_receivedMessageType;\n\n\t\t\tint channelSlot = (int)tp - 1;\n\t\t\tNetReceiverChannelBase chan = m_receiveChannels[channelSlot];\n\t\t\tif (chan == null)\n\t\t\t\tchan = CreateReceiverChannel(tp);\n\n\t\t\tchan.ReceiveMessage(msg);\n\t\t}\n\n\t\tprivate NetReceiverChannelBase CreateReceiverChannel(NetMessageType tp)\n\t\t{\n\t\t\tm_peer.VerifyNetworkThread();\n\n\t\t\t// create receiver channel\n\t\t\tNetReceiverChannelBase chan;\n\t\t\tNetDeliveryMethod method = NetUtility.GetDeliveryMethod(tp);\n\t\t\tswitch (method)\n\t\t\t{\n\t\t\t\tcase NetDeliveryMethod.Unreliable:\n\t\t\t\t\tchan = new NetUnreliableUnorderedReceiver(this);\n\t\t\t\t\tbreak;\n\t\t\t\tcase NetDeliveryMethod.ReliableOrdered:\n\t\t\t\t\tchan = new NetReliableOrderedReceiver(this, NetConstants.ReliableOrderedWindowSize);\n\t\t\t\t\tbreak;\n\t\t\t\tcase NetDeliveryMethod.UnreliableSequenced:\n\t\t\t\t\tchan = new NetUnreliableSequencedReceiver(this);\n\t\t\t\t\tbreak;\n\t\t\t\tcase NetDeliveryMethod.ReliableUnordered:\n\t\t\t\t\tchan = new NetReliableUnorderedReceiver(this, NetConstants.ReliableOrderedWindowSize);\n\t\t\t\t\tbreak;\n\t\t\t\tcase NetDeliveryMethod.ReliableSequenced:\n\t\t\t\t\tchan = new NetReliableSequencedReceiver(this, NetConstants.ReliableSequencedWindowSize);\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new NetException(\"Unhandled NetDeliveryMethod!\");\n\t\t\t}\n\n\t\t\tint channelSlot = (int)tp - 1;\n\t\t\tNetException.Assert(m_receiveChannels[channelSlot] == null);\n\t\t\tm_receiveChannels[channelSlot] = chan;\n\n\t\t\treturn chan;\n\t\t}\n\n\t\tinternal void QueueAck(NetMessageType tp, int sequenceNumber)\n\t\t{\n\t\t\tm_queuedOutgoingAcks.Enqueue(new NetTuple<NetMessageType, int>(tp, sequenceNumber));\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Zero windowSize indicates that the channel is not yet instantiated (used)\n\t\t/// Negative freeWindowSlots means this amount of messages are currently queued but delayed due to closed window\n\t\t/// </summary>\n\t\tpublic void GetSendQueueInfo(NetDeliveryMethod method, int sequenceChannel, out int windowSize, out int freeWindowSlots)\n\t\t{\n\t\t\tint channelSlot = (int)method - 1 + sequenceChannel;\n\t\t\tvar chan = m_sendChannels[channelSlot];\n\t\t\tif (chan == null)\n\t\t\t{\n\t\t\t\twindowSize = NetUtility.GetWindowSize(method);\n\t\t\t\tfreeWindowSlots = windowSize;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\twindowSize = chan.WindowSize;\n\t\t\tfreeWindowSlots = chan.GetAllowedSends() - chan.m_queuedSends.Count;\n\t\t\treturn;\n\t\t}\n\n\t\tinternal void Shutdown(string reason)\n\t\t{\n\t\t\tExecuteDisconnect(reason, true);\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Returns a string that represents this object\n\t\t/// </summary>\n\t\tpublic override string ToString()\n\t\t{\n\t\t\treturn \"[NetConnection to \" + m_remoteEndpoint + \"]\";\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Lidgren/NetConnectionStatistics.cs",
    "content": "﻿/* Copyright (c) 2010 Michael Lidgren\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software\nand associated documentation files (the \"Software\"), to deal in the Software without\nrestriction, including without limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to permit persons to whom\nthe Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or\nsubstantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\nINCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR\nPURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\nUSE OR OTHER DEALINGS IN THE SOFTWARE.\n*/\n\n// Uncomment the line below to get statistics in RELEASE builds\n//#define USE_RELEASE_STATISTICS\n\nusing System;\nusing System.Collections.Generic;\nusing System.Text;\nusing System.Diagnostics;\n\nnamespace Lidgren.Network\n{\n\tinternal enum MessageResendReason\n\t{\n\t\tDelay,\n\t\tHoleInSequence\n\t}\n\n\t/// <summary>\n\t/// Statistics for a NetConnection instance\n\t/// </summary>\n\tpublic sealed class NetConnectionStatistics\n\t{\n\t\tprivate readonly NetConnection m_connection;\n\n\t\tinternal int m_sentPackets;\n\t\tinternal int m_receivedPackets;\n\n\t\tinternal int m_sentMessages;\n\t\tinternal int m_receivedMessages;\n\n\t\tinternal int m_sentBytes;\n\t\tinternal int m_receivedBytes;\n\n\t\tinternal int m_resentMessagesDueToDelay;\n\t\tinternal int m_resentMessagesDueToHole;\n\n\t\tinternal NetConnectionStatistics(NetConnection conn)\n\t\t{\n\t\t\tm_connection = conn;\n\t\t\tReset();\n\t\t}\n\n\t\tinternal void Reset()\n\t\t{\n\t\t\tm_sentPackets = 0;\n\t\t\tm_receivedPackets = 0;\n\t\t\tm_sentBytes = 0;\n\t\t\tm_receivedBytes = 0;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Gets the number of sent packets for this connection\n\t\t/// </summary>\n\t\tpublic int SentPackets { get { return m_sentPackets; } }\n\n\t\t/// <summary>\n\t\t/// Gets the number of received packets for this connection\n\t\t/// </summary>\n\t\tpublic int ReceivedPackets { get { return m_receivedPackets; } }\n\n\t\t/// <summary>\n\t\t/// Gets the number of sent bytes for this connection\n\t\t/// </summary>\n\t\tpublic int SentBytes { get { return m_sentBytes; } }\n\n\t\t/// <summary>\n\t\t/// Gets the number of received bytes for this connection\n\t\t/// </summary>\n\t\tpublic int ReceivedBytes { get { return m_receivedBytes; } }\n\n\t\t/// <summary>\n\t\t/// Gets the number of resent reliable messages for this connection\n\t\t/// </summary>\n\t\tpublic int ResentMessages { get { return m_resentMessagesDueToHole + m_resentMessagesDueToDelay; } }\n\n\t\t// public double LastSendRespondedTo { get { return m_connection.m_lastSendRespondedTo; } }\n\n#if USE_RELEASE_STATISTICS\n\t\tinternal void PacketSent(int numBytes, int numMessages)\n\t\t{\n\t\t\tNetException.Assert(numBytes > 0 && numMessages > 0);\n\t\t\tm_sentPackets++;\n\t\t\tm_sentBytes += numBytes;\n\t\t\tm_sentMessages += numMessages;\n\t\t}\n#else\n\t\t[Conditional(\"DEBUG\")]\n\t\tinternal void PacketSent(int numBytes, int numMessages)\n\t\t{\n\t\t\tNetException.Assert(numBytes > 0 && numMessages > 0);\n\t\t\tm_sentPackets++;\n\t\t\tm_sentBytes += numBytes;\n\t\t\tm_sentMessages += numMessages;\n\t\t}\n#endif\n\n#if USE_RELEASE_STATISTICS\n\t\tinternal void PacketReceived(int numBytes, int numMessages)\n\t\t{\n\t\t\tNetException.Assert(numBytes > 0 && numMessages > 0);\n\t\t\tm_receivedPackets++;\n\t\t\tm_receivedBytes += numBytes;\n\t\t\tm_receivedMessages += numMessages;\n\t\t}\n#else\n\t\t[Conditional(\"DEBUG\")]\n\t\tinternal void PacketReceived(int numBytes, int numMessages)\n\t\t{\n\t\t\tNetException.Assert(numBytes > 0 && numMessages > 0);\n\t\t\tm_receivedPackets++;\n\t\t\tm_receivedBytes += numBytes;\n\t\t\tm_receivedMessages += numMessages;\n\t\t}\n#endif\n\n#if USE_RELEASE_STATISTICS\n\t\tinternal void MessageResent(MessageResendReason reason)\n\t\t{\n\t\t\tif (reason == MessageResendReason.Delay)\n\t\t\t\tm_resentMessagesDueToDelay++;\n\t\t\telse\n\t\t\t\tm_resentMessagesDueToHole++;\n\t\t}\n#else\n\t\t[Conditional(\"DEBUG\")]\n\t\tinternal void MessageResent(MessageResendReason reason)\n\t\t{\n\t\t\tif (reason == MessageResendReason.Delay)\n\t\t\t\tm_resentMessagesDueToDelay++;\n\t\t\telse\n\t\t\t\tm_resentMessagesDueToHole++;\n\t\t}\n#endif\n\n\t\t/// <summary>\n\t\t/// Returns a string that represents this object\n\t\t/// </summary>\n\t\tpublic override string ToString()\n\t\t{\n\t\t\tStringBuilder bdr = new StringBuilder();\n\t\t\t//bdr.AppendLine(\"Average roundtrip time: \" + NetTime.ToReadable(m_connection.m_averageRoundtripTime));\n\t\t\tbdr.AppendLine(\"Sent \" + m_sentBytes + \" bytes in \" + m_sentMessages + \" messages in \" + m_sentPackets + \" packets\");\n\t\t\tbdr.AppendLine(\"Received \" + m_receivedBytes + \" bytes in \" + m_receivedMessages + \" messages in \" + m_receivedPackets + \" packets\");\n\n\t\t\tif (m_resentMessagesDueToDelay > 0)\n\t\t\t\tbdr.AppendLine(\"Resent messages (delay): \" + m_resentMessagesDueToDelay);\n\t\t\tif (m_resentMessagesDueToDelay > 0)\n\t\t\t\tbdr.AppendLine(\"Resent messages (holes): \" + m_resentMessagesDueToHole);\n\n\t\t\tint numUnsent = 0;\n\t\t\tint numStored = 0;\n\t\t\tforeach (NetSenderChannelBase sendChan in m_connection.m_sendChannels)\n\t\t\t{\n\t\t\t\tif (sendChan == null)\n\t\t\t\t\tcontinue;\n\t\t\t\tnumUnsent += sendChan.m_queuedSends.Count;\n\n\t\t\t\tvar relSendChan = sendChan as NetReliableSenderChannel;\n\t\t\t\tif (relSendChan != null)\n\t\t\t\t{\n\t\t\t\t\tfor (int i = 0; i < relSendChan.m_storedMessages.Length; i++)\n\t\t\t\t\t\tif (relSendChan.m_storedMessages[i].Message != null)\n\t\t\t\t\t\t\tnumStored++;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tint numWithheld = 0;\n\t\t\tforeach (NetReceiverChannelBase recChan in m_connection.m_receiveChannels)\n\t\t\t{\n\t\t\t\tvar relRecChan = recChan as NetReliableOrderedReceiver;\n\t\t\t\tif (relRecChan != null)\n\t\t\t\t{\n\t\t\t\t\tfor (int i = 0; i < relRecChan.m_withheldMessages.Length; i++)\n\t\t\t\t\t\tif (relRecChan.m_withheldMessages[i] != null)\n\t\t\t\t\t\t\tnumWithheld++;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tbdr.AppendLine(\"Unsent messages: \" + numUnsent);\n\t\t\tbdr.AppendLine(\"Stored messages: \" + numStored);\n\t\t\tbdr.AppendLine(\"Withheld messages: \" + numWithheld);\n\n\t\t\treturn bdr.ToString();\n\t\t}\n\t}\n}"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Lidgren/NetConnectionStatus.cs",
    "content": "﻿/* Copyright (c) 2010 Michael Lidgren\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software\nand associated documentation files (the \"Software\"), to deal in the Software without\nrestriction, including without limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to permit persons to whom\nthe Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or\nsubstantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\nINCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR\nPURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\nUSE OR OTHER DEALINGS IN THE SOFTWARE.\n*/\nusing System;\n\nnamespace Lidgren.Network\n{\n\t/// <summary>\n\t/// Status for a NetConnection instance\n\t/// </summary>\n\tpublic enum NetConnectionStatus\n\t{\n\t\t/// <summary>\n\t\t/// No connection, or attempt, in place\n\t\t/// </summary>\n\t\tNone,\n\t\t\n\t\t/// <summary>\n\t\t/// Connect has been sent; waiting for ConnectResponse\n\t\t/// </summary>\n\t\tInitiatedConnect,\n\n\t\t/// <summary>\n\t\t/// Connect was received and ApprovalMessage released to the application; awaiting Approve() or Deny()\n\t\t/// </summary>\n\t\tRespondedAwaitingApproval, // We got Connect, released ApprovalMessage\n\n\t\t/// <summary>\n\t\t/// Connect was received and ConnectResponse has been sent; waiting for ConnectionEstablished\n\t\t/// </summary>\n\t\tRespondedConnect, // we got Connect, sent ConnectResponse\n\n\t\t/// <summary>\n\t\t/// Connected\n\t\t/// </summary>\n\t\tConnected,\t\t  // we received ConnectResponse (if initiator) or ConnectionEstablished (if passive)\n\n\t\t/// <summary>\n\t\t/// In the process of disconnecting\n\t\t/// </summary>\n\t\tDisconnecting,\n\n\t\t/// <summary>\n\t\t/// Disconnected\n\t\t/// </summary>\n\t\tDisconnected\n\t}\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Lidgren/NetConstants.cs",
    "content": "﻿/* Copyright (c) 2010 Michael Lidgren\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software\nand associated documentation files (the \"Software\"), to deal in the Software without\nrestriction, including without limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to permit persons to whom\nthe Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or\nsubstantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\nINCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR\nPURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\nUSE OR OTHER DEALINGS IN THE SOFTWARE.\n*/\nusing System;\n\nnamespace Lidgren.Network\n{\n\t/// <summary>\n\t/// All the constants used when compiling the library\n\t/// </summary>\n\tinternal static class NetConstants\n\t{\n\t\tinternal const int NumTotalChannels = 99;\n\n\t\tinternal const int NetChannelsPerDeliveryMethod = 32;\n\n\t\tinternal const int NumSequenceNumbers = 1024;\n\n\t\tinternal const int HeaderByteSize = 5;\n\n\t\tinternal const int UnreliableWindowSize = 128;\n\t\tinternal const int ReliableOrderedWindowSize = 64;\n\t\tinternal const int ReliableSequencedWindowSize = 64;\n\t\tinternal const int DefaultWindowSize = 64;\n\n\t\tinternal const int MaxFragmentationGroups = ushort.MaxValue - 1;\n\n\t\tinternal const int UnfragmentedMessageHeaderSize = 5;\n\n\t\t/// <summary>\n\t\t/// Number of channels which needs a sequence number to work\n\t\t/// </summary>\n\t\tinternal const int NumSequencedChannels = ((int)NetMessageType.UserReliableOrdered1 + NetConstants.NetChannelsPerDeliveryMethod) - (int)NetMessageType.UserSequenced1;\n\n\t\t/// <summary>\n\t\t/// Number of reliable channels\n\t\t/// </summary>\n\t\tinternal const int NumReliableChannels = ((int)NetMessageType.UserReliableOrdered1 + NetConstants.NetChannelsPerDeliveryMethod) - (int)NetMessageType.UserReliableUnordered;\n\t\t\n\t\tinternal const string ConnResetMessage = \"Connection was reset by remote host\";\n\t}\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Lidgren/NetDeliveryMethod.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Text;\n\nnamespace Lidgren.Network\n{\n\t/// <summary>\n\t/// How the library deals with resends and handling of late messages\n\t/// </summary>\n\tpublic enum NetDeliveryMethod : byte\n\t{\n\t\t//\n\t\t// Actually a publicly visible subset of NetMessageType\n\t\t//\n\n\t\t/// <summary>\n\t\t/// Indicates an error\n\t\t/// </summary>\n\t\tUnknown = 0,\n\n\t\t/// <summary>\n\t\t/// Unreliable, unordered delivery\n\t\t/// </summary>\n\t\tUnreliable = 1,\n\n\t\t/// <summary>\n\t\t/// Unreliable delivery, but automatically dropping late messages\n\t\t/// </summary>\n\t\tUnreliableSequenced = 2,\n\n\t\t/// <summary>\n\t\t/// Reliable delivery, but unordered\n\t\t/// </summary>\n\t\tReliableUnordered = 34,\n\n\t\t/// <summary>\n\t\t/// Reliable delivery, except for late messages which are dropped\n\t\t/// </summary>\n\t\tReliableSequenced = 35,\n\n\t\t/// <summary>\n\t\t/// Reliable, ordered delivery\n\t\t/// </summary>\n\t\tReliableOrdered = 67,\n\t}\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Lidgren/NetException.cs",
    "content": "﻿/* Copyright (c) 2010 Michael Lidgren\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software\nand associated documentation files (the \"Software\"), to deal in the Software without\nrestriction, including without limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to permit persons to whom\nthe Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or\nsubstantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\nINCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR\nPURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\nUSE OR OTHER DEALINGS IN THE SOFTWARE.\n*/\nusing System;\nusing System.Diagnostics;\nusing System.Runtime.Serialization;\n\nnamespace Lidgren.Network\n{\n\t/// <summary>\n\t/// Exception thrown in the Lidgren Network Library\n\t/// </summary>\n\t[Serializable]\n\tpublic sealed class NetException : Exception\n\t{\n\t\t/// <summary>\n\t\t/// NetException constructor\n\t\t/// </summary>\n\t\tpublic NetException()\n\t\t\t: base()\n\t\t{\n\t\t}\n\n\t\t/// <summary>\n\t\t/// NetException constructor\n\t\t/// </summary>\n\t\tpublic NetException(string message)\n\t\t\t: base(message)\n\t\t{\n\t\t}\n\n\t\t/// <summary>\n\t\t/// NetException constructor\n\t\t/// </summary>\n\t\tpublic NetException(string message, Exception inner)\n\t\t\t: base(message, inner)\n\t\t{\n\t\t}\n\n\t\t/// <summary>\n\t\t/// NetException constructor\n\t\t/// </summary>\n\t\tprivate NetException(SerializationInfo info, StreamingContext context)\n\t\t\t: base(info, context)\n\t\t{\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Throws an exception, in DEBUG only, if first parameter is false\n\t\t/// </summary>\n\t\t[Conditional(\"DEBUG\")]\n\t\tpublic static void Assert(bool isOk, string message)\n\t\t{\n\t\t\tif (!isOk)\n\t\t\t\tthrow new NetException(message);\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Throws an exception, in DEBUG only, if first parameter is false\n\t\t/// </summary>\n\t\t[Conditional(\"DEBUG\")]\n\t\tpublic static void Assert(bool isOk)\n\t\t{\n\t\t\tif (!isOk)\n\t\t\t\tthrow new NetException();\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Lidgren/NetFragmentationHelper.cs",
    "content": "﻿using System;\n\nnamespace Lidgren.Network\n{\n\tinternal static class NetFragmentationHelper\n\t{\n\t\tinternal static int WriteHeader(\n\t\t\tbyte[] destination,\n\t\t\tint ptr,\n\t\t\tint group,\n\t\t\tint totalBits,\n\t\t\tint chunkByteSize,\n\t\t\tint chunkNumber)\n\t\t{\n\t\t\tuint num1 = (uint)group;\n\t\t\twhile (num1 >= 0x80)\n\t\t\t{\n\t\t\t\tdestination[ptr++] = (byte)(num1 | 0x80);\n\t\t\t\tnum1 = num1 >> 7;\n\t\t\t}\n\t\t\tdestination[ptr++] = (byte)num1;\n\n\t\t\t// write variable length fragment total bits\n\t\t\tuint num2 = (uint)totalBits;\n\t\t\twhile (num2 >= 0x80)\n\t\t\t{\n\t\t\t\tdestination[ptr++] = (byte)(num2 | 0x80);\n\t\t\t\tnum2 = num2 >> 7;\n\t\t\t}\n\t\t\tdestination[ptr++] = (byte)num2;\n\n\t\t\t// write variable length fragment chunk size\n\t\t\tuint num3 = (uint)chunkByteSize;\n\t\t\twhile (num3 >= 0x80)\n\t\t\t{\n\t\t\t\tdestination[ptr++] = (byte)(num3 | 0x80);\n\t\t\t\tnum3 = num3 >> 7;\n\t\t\t}\n\t\t\tdestination[ptr++] = (byte)num3;\n\n\t\t\t// write variable length fragment chunk number\n\t\t\tuint num4 = (uint)chunkNumber;\n\t\t\twhile (num4 >= 0x80)\n\t\t\t{\n\t\t\t\tdestination[ptr++] = (byte)(num4 | 0x80);\n\t\t\t\tnum4 = num4 >> 7;\n\t\t\t}\n\t\t\tdestination[ptr++] = (byte)num4;\n\n\t\t\treturn ptr;\n\t\t}\n\n\t\tinternal static int ReadHeader(byte[] buffer, int ptr, out int group, out int totalBits, out int chunkByteSize, out int chunkNumber)\n\t\t{\n\t\t\tint num1 = 0;\n\t\t\tint num2 = 0;\n\t\t\twhile (true)\n\t\t\t{\n\t\t\t\tbyte num3 = buffer[ptr++];\n\t\t\t\tnum1 |= (num3 & 0x7f) << (num2 & 0x1f);\n\t\t\t\tnum2 += 7;\n\t\t\t\tif ((num3 & 0x80) == 0)\n\t\t\t\t{\n\t\t\t\t\tgroup = num1;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tnum1 = 0;\n\t\t\tnum2 = 0;\n\t\t\twhile (true)\n\t\t\t{\n\t\t\t\tbyte num3 = buffer[ptr++];\n\t\t\t\tnum1 |= (num3 & 0x7f) << (num2 & 0x1f);\n\t\t\t\tnum2 += 7;\n\t\t\t\tif ((num3 & 0x80) == 0)\n\t\t\t\t{\n\t\t\t\t\ttotalBits = num1;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tnum1 = 0;\n\t\t\tnum2 = 0;\n\t\t\twhile (true)\n\t\t\t{\n\t\t\t\tbyte num3 = buffer[ptr++];\n\t\t\t\tnum1 |= (num3 & 0x7f) << (num2 & 0x1f);\n\t\t\t\tnum2 += 7;\n\t\t\t\tif ((num3 & 0x80) == 0)\n\t\t\t\t{\n\t\t\t\t\tchunkByteSize = num1;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tnum1 = 0;\n\t\t\tnum2 = 0;\n\t\t\twhile (true)\n\t\t\t{\n\t\t\t\tbyte num3 = buffer[ptr++];\n\t\t\t\tnum1 |= (num3 & 0x7f) << (num2 & 0x1f);\n\t\t\t\tnum2 += 7;\n\t\t\t\tif ((num3 & 0x80) == 0)\n\t\t\t\t{\n\t\t\t\t\tchunkNumber = num1;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn ptr;\n\t\t}\n\n\t\tinternal static int GetFragmentationHeaderSize(int groupId, int totalBytes, int chunkByteSize, int numChunks)\n\t\t{\n\t\t\tint len = 4;\n\n\t\t\t// write variable length fragment group id\n\t\t\tuint num1 = (uint)groupId;\n\t\t\twhile (num1 >= 0x80)\n\t\t\t{\n\t\t\t\tlen++;\n\t\t\t\tnum1 = num1 >> 7;\n\t\t\t}\n\n\t\t\t// write variable length fragment total bits\n\t\t\tuint num2 = (uint)(totalBytes * 8);\n\t\t\twhile (num2 >= 0x80)\n\t\t\t{\n\t\t\t\tlen++;\n\t\t\t\tnum2 = num2 >> 7;\n\t\t\t}\n\n\t\t\t// write variable length fragment chunk byte size\n\t\t\tuint num3 = (uint)chunkByteSize;\n\t\t\twhile (num3 >= 0x80)\n\t\t\t{\n\t\t\t\tlen++;\n\t\t\t\tnum3 = num3 >> 7;\n\t\t\t}\n\n\t\t\t// write variable length fragment chunk number\n\t\t\tuint num4 = (uint)numChunks;\n\t\t\twhile (num4 >= 0x80)\n\t\t\t{\n\t\t\t\tlen++;\n\t\t\t\tnum4 = num4 >> 7;\n\t\t\t}\n\n\t\t\treturn len;\n\t\t}\n\n\t\tinternal static int GetBestChunkSize(int group, int totalBytes, int mtu)\n\t\t{\n\t\t\tint tryNumChunks = (totalBytes / (mtu - 8)) + 1;\n\t\t\tint tryChunkSize = (totalBytes / tryNumChunks) + 1; // +1 since we immediately decrement it in the loop\n\n\t\t\tint headerSize = 0;\n\t\t\tdo\n\t\t\t{\n\t\t\t\ttryChunkSize--; // keep reducing chunk size until it fits within MTU including header\n\n\t\t\t\tint numChunks = totalBytes / tryChunkSize;\n\t\t\t\tif (numChunks * tryChunkSize < totalBytes)\n\t\t\t\t\tnumChunks++;\n\n\t\t\t\theaderSize = GetFragmentationHeaderSize(group, totalBytes, tryChunkSize, numChunks);\n\n\t\t\t} while (tryChunkSize + headerSize + 5 + 1 >= mtu);\n\n\t\t\treturn tryChunkSize;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Lidgren/NetFragmentationInfo.cs",
    "content": "﻿using System;\n\nnamespace Lidgren.Network\n{\n\tpublic sealed class NetFragmentationInfo\n\t{\n\t\tpublic int TotalFragmentCount;\n\t\tpublic bool[] Received;\n\t\tpublic int TotalReceived;\n\t\tpublic int FragmentSize;\n\t}\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Lidgren/NetIncomingMessage.cs",
    "content": "﻿/* Copyright (c) 2010 Michael Lidgren\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software\nand associated documentation files (the \"Software\"), to deal in the Software without\nrestriction, including without limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to permit persons to whom\nthe Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or\nsubstantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\nINCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR\nPURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\nUSE OR OTHER DEALINGS IN THE SOFTWARE.\n*/\nusing System;\nusing System.Net;\nusing System.Diagnostics;\n\nnamespace Lidgren.Network\n{\n\t/// <summary>\n\t/// Incoming message either sent from a remote peer or generated within the library\n\t/// </summary>\n\t[DebuggerDisplay(\"Type={MessageType} LengthBits={LengthBits}\")]\n\tpublic sealed class NetIncomingMessage : NetBuffer\n\t{\n\t\tinternal NetIncomingMessageType m_incomingMessageType;\n\t\tinternal IPEndPoint m_senderEndpoint;\n\t\tinternal NetConnection m_senderConnection;\n\t\tinternal int m_sequenceNumber;\n\t\tinternal NetMessageType m_receivedMessageType;\n\t\tinternal bool m_isFragment;\n\t\tinternal double m_receiveTime;\n\n\t\t/// <summary>\n\t\t/// Gets the type of this incoming message\n\t\t/// </summary>\n\t\tpublic NetIncomingMessageType MessageType { get { return m_incomingMessageType; } }\n\n\t\t/// <summary>\n\t\t/// Gets the delivery method this message was sent with (if user data)\n\t\t/// </summary>\n\t\tpublic NetDeliveryMethod DeliveryMethod { get { return NetUtility.GetDeliveryMethod(m_receivedMessageType); } }\n\n\t\t/// <summary>\n\t\t/// Gets the sequence channel this message was sent with (if user data)\n\t\t/// </summary>\n\t\tpublic int SequenceChannel { get { return (int)m_receivedMessageType - (int)NetUtility.GetDeliveryMethod(m_receivedMessageType); } }\n\n\t\t/// <summary>\n\t\t/// IPEndPoint of sender, if any\n\t\t/// </summary>\n\t\tpublic IPEndPoint SenderEndpoint { get { return m_senderEndpoint; } }\n\n\t\t/// <summary>\n\t\t/// NetConnection of sender, if any\n\t\t/// </summary>\n\t\tpublic NetConnection SenderConnection { get { return m_senderConnection; } }\n\n\t\t/// <summary>\n\t\t/// What local time the message was received from the network\n\t\t/// </summary>\n\t\tpublic double ReceiveTime { get { return m_receiveTime; } }\n\n\t\tinternal NetIncomingMessage()\n\t\t{\n\t\t}\n\n\t\tinternal NetIncomingMessage(NetIncomingMessageType tp)\n\t\t{\n\t\t\tm_incomingMessageType = tp;\n\t\t}\n\n\t\tinternal void Reset()\n\t\t{\n\t\t\tm_incomingMessageType = NetIncomingMessageType.Error;\n\t\t\tm_readPosition = 0;\n\t\t\tm_receivedMessageType = NetMessageType.LibraryError;\n\t\t\tm_senderConnection = null;\n\t\t\tm_bitLength = 0;\n\t\t\tm_isFragment = false;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Decrypt a message\n\t\t/// </summary>\n\t\t/// <param name=\"encryption\">The encryption algorithm used to encrypt the message</param>\n\t\t/// <returns>true on success</returns>\n\t\tpublic bool Decrypt(INetEncryption encryption)\n\t\t{\n\t\t\treturn encryption.Decrypt(this);\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Reads a value, in local time comparable to NetTime.Now, written using WriteTime()\n\t\t/// Must have a connected sender\n\t\t/// </summary>\n\t\tpublic double ReadTime(bool highPrecision)\n\t\t{\n\t\t\treturn ReadTime(m_senderConnection, highPrecision);\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Returns a string that represents this object\n\t\t/// </summary>\n\t\tpublic override string ToString()\n\t\t{\n\t\t\treturn \"[NetIncomingMessage #\" + m_sequenceNumber + \" \" + this.LengthBytes + \" bytes]\";\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Lidgren/NetIncomingMessageType.cs",
    "content": "﻿/* Copyright (c) 2010 Michael Lidgren\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software\nand associated documentation files (the \"Software\"), to deal in the Software without\nrestriction, including without limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to permit persons to whom\nthe Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or\nsubstantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\nINCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR\nPURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\nUSE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\nusing System;\nusing System.Diagnostics.CodeAnalysis;\n\nnamespace Lidgren.Network\n{\n\t/// <summary>\n\t/// The type of a NetIncomingMessage\n\t/// </summary>\n\t[SuppressMessage(\"Microsoft.Design\", \"CA1027:MarkEnumsWithFlags\")]\n\tpublic enum NetIncomingMessageType\n\t{\n\t\t//\n\t\t// library note: values are power-of-two, but they are not flags - it's a convenience for NetPeerConfiguration.DisabledMessageTypes\n\t\t//\n\n\t\t/// <summary>\n\t\t/// Error; this value should never appear\n\t\t/// </summary>\n\t\tError = 0,\n\n\t\t/// <summary>\n\t\t/// Status for a connection changed\n\t\t/// </summary>\n\t\tStatusChanged = 1 << 0,\t\t\t// Data (string)\n\n\t\t/// <summary>\n\t\t/// Data sent using SendUnconnectedMessage\n\t\t/// </summary>\n\t\tUnconnectedData = 1 << 1,\t\t// Data\t\t\t\t\tBased on data received\n\n\t\t/// <summary>\n\t\t/// Connection approval is needed\n\t\t/// </summary>\n\t\tConnectionApproval = 1 << 2,\t// Data\n\n\t\t/// <summary>\n\t\t/// Application data\n\t\t/// </summary>\n\t\tData = 1 << 3,\t\t\t\t\t// Data\t\t\t\t\tBased on data received\n\n\t\t/// <summary>\n\t\t/// Receipt of delivery\n\t\t/// </summary>\n\t\tReceipt = 1 << 4,\t\t\t\t// Data\n\n\t\t/// <summary>\n\t\t/// Discovery request for a response\n\t\t/// </summary>\n\t\tDiscoveryRequest = 1 << 5,\t\t// (no data)\n\n\t\t/// <summary>\n\t\t/// Discovery response to a request\n\t\t/// </summary>\n\t\tDiscoveryResponse = 1 << 6,\t\t// Data\n\n\t\t/// <summary>\n\t\t/// Verbose debug message\n\t\t/// </summary>\n\t\tVerboseDebugMessage = 1 << 7,\t// Data (string)\n\n\t\t/// <summary>\n\t\t/// Debug message\n\t\t/// </summary>\n\t\tDebugMessage = 1 << 8,\t\t\t// Data (string)\n\n\t\t/// <summary>\n\t\t/// Warning message\n\t\t/// </summary>\n\t\tWarningMessage = 1 << 9,\t\t// Data (string)\n\n\t\t/// <summary>\n\t\t/// Error message\n\t\t/// </summary>\n\t\tErrorMessage = 1 << 10,\t\t\t// Data (string)\n\n\t\t/// <summary>\n\t\t/// NAT introduction was successful\n\t\t/// </summary>\n\t\tNatIntroductionSuccess = 1 << 11, // Data (as passed to master server)\n\n\t\t/// <summary>\n\t\t/// A roundtrip was measured and NetConnection.AverageRoundtripTime was updated\n\t\t/// </summary>\n\t\tConnectionLatencyUpdated = 1 << 12, // Seconds as a Single\n\t}\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Lidgren/NetMessageType.cs",
    "content": "﻿/* Copyright (c) 2010 Michael Lidgren\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software\nand associated documentation files (the \"Software\"), to deal in the Software without\nrestriction, including without limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to permit persons to whom\nthe Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or\nsubstantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\nINCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR\nPURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\nUSE OR OTHER DEALINGS IN THE SOFTWARE.\n*/\nusing System;\n\nnamespace Lidgren.Network\n{\n\tinternal enum NetMessageType : byte\n\t{\n\t\tUnconnected = 0,\n\n\t\tUserUnreliable = 1,\n\n\t\tUserSequenced1 = 2,\n\t\tUserSequenced2 = 3,\n\t\tUserSequenced3 = 4,\n\t\tUserSequenced4 = 5,\n\t\tUserSequenced5 = 6,\n\t\tUserSequenced6 = 7,\n\t\tUserSequenced7 = 8,\n\t\tUserSequenced8 = 9,\n\t\tUserSequenced9 = 10,\n\t\tUserSequenced10 = 11,\n\t\tUserSequenced11 = 12,\n\t\tUserSequenced12 = 13,\n\t\tUserSequenced13 = 14,\n\t\tUserSequenced14 = 15,\n\t\tUserSequenced15 = 16,\n\t\tUserSequenced16 = 17,\n\t\tUserSequenced17 = 18,\n\t\tUserSequenced18 = 19,\n\t\tUserSequenced19 = 20,\n\t\tUserSequenced20 = 21,\n\t\tUserSequenced21 = 22,\n\t\tUserSequenced22 = 23,\n\t\tUserSequenced23 = 24,\n\t\tUserSequenced24 = 25,\n\t\tUserSequenced25 = 26,\n\t\tUserSequenced26 = 27,\n\t\tUserSequenced27 = 28,\n\t\tUserSequenced28 = 29,\n\t\tUserSequenced29 = 30,\n\t\tUserSequenced30 = 31,\n\t\tUserSequenced31 = 32,\n\t\tUserSequenced32 = 33,\n\n\t\tUserReliableUnordered = 34,\n\n\t\tUserReliableSequenced1 = 35,\n\t\tUserReliableSequenced2 = 36,\n\t\tUserReliableSequenced3 = 37,\n\t\tUserReliableSequenced4 = 38,\n\t\tUserReliableSequenced5 = 39,\n\t\tUserReliableSequenced6 = 40,\n\t\tUserReliableSequenced7 = 41,\n\t\tUserReliableSequenced8 = 42,\n\t\tUserReliableSequenced9 = 43,\n\t\tUserReliableSequenced10 = 44,\n\t\tUserReliableSequenced11 = 45,\n\t\tUserReliableSequenced12 = 46,\n\t\tUserReliableSequenced13 = 47,\n\t\tUserReliableSequenced14 = 48,\n\t\tUserReliableSequenced15 = 49,\n\t\tUserReliableSequenced16 = 50,\n\t\tUserReliableSequenced17 = 51,\n\t\tUserReliableSequenced18 = 52,\n\t\tUserReliableSequenced19 = 53,\n\t\tUserReliableSequenced20 = 54,\n\t\tUserReliableSequenced21 = 55,\n\t\tUserReliableSequenced22 = 56,\n\t\tUserReliableSequenced23 = 57,\n\t\tUserReliableSequenced24 = 58,\n\t\tUserReliableSequenced25 = 59,\n\t\tUserReliableSequenced26 = 60,\n\t\tUserReliableSequenced27 = 61,\n\t\tUserReliableSequenced28 = 62,\n\t\tUserReliableSequenced29 = 63,\n\t\tUserReliableSequenced30 = 64,\n\t\tUserReliableSequenced31 = 65,\n\t\tUserReliableSequenced32 = 66,\n\n\t\tUserReliableOrdered1 = 67,\n\t\tUserReliableOrdered2 = 68,\n\t\tUserReliableOrdered3 = 69,\n\t\tUserReliableOrdered4 = 70,\n\t\tUserReliableOrdered5 = 71,\n\t\tUserReliableOrdered6 = 72,\n\t\tUserReliableOrdered7 = 73,\n\t\tUserReliableOrdered8 = 74,\n\t\tUserReliableOrdered9 = 75,\n\t\tUserReliableOrdered10 = 76,\n\t\tUserReliableOrdered11 = 77,\n\t\tUserReliableOrdered12 = 78,\n\t\tUserReliableOrdered13 = 79,\n\t\tUserReliableOrdered14 = 80,\n\t\tUserReliableOrdered15 = 81,\n\t\tUserReliableOrdered16 = 82,\n\t\tUserReliableOrdered17 = 83,\n\t\tUserReliableOrdered18 = 84,\n\t\tUserReliableOrdered19 = 85,\n\t\tUserReliableOrdered20 = 86,\n\t\tUserReliableOrdered21 = 87,\n\t\tUserReliableOrdered22 = 88,\n\t\tUserReliableOrdered23 = 89,\n\t\tUserReliableOrdered24 = 90,\n\t\tUserReliableOrdered25 = 91,\n\t\tUserReliableOrdered26 = 92,\n\t\tUserReliableOrdered27 = 93,\n\t\tUserReliableOrdered28 = 94,\n\t\tUserReliableOrdered29 = 95,\n\t\tUserReliableOrdered30 = 96,\n\t\tUserReliableOrdered31 = 97,\n\t\tUserReliableOrdered32 = 98,\n\n\t\tUnused1 = 99,\n\t\tUnused2 = 100,\n\t\tUnused3 = 101,\n\t\tUnused4 = 102,\n\t\tUnused5 = 103,\n\t\tUnused6 = 104,\n\t\tUnused7 = 105,\n\t\tUnused8 = 106,\n\t\tUnused9 = 107,\n\t\tUnused10 = 108,\n\t\tUnused11 = 109,\n\t\tUnused12 = 110,\n\t\tUnused13 = 111,\n\t\tUnused14 = 112,\n\t\tUnused15 = 113,\n\t\tUnused16 = 114,\n\t\tUnused17 = 115,\n\t\tUnused18 = 116,\n\t\tUnused19 = 117,\n\t\tUnused20 = 118,\n\t\tUnused21 = 119,\n\t\tUnused22 = 120,\n\t\tUnused23 = 121,\n\t\tUnused24 = 122,\n\t\tUnused25 = 123,\n\t\tUnused26 = 124,\n\t\tUnused27 = 125,\n\t\tUnused28 = 126,\n\t\tUnused29 = 127,\n\n\t\tLibraryError = 128,\n\t\tPing = 129, // used for RTT calculation\n\t\tPong = 130, // used for RTT calculation\n\t\tConnect = 131,\n\t\tConnectResponse = 132,\n\t\tConnectionEstablished = 133,\n\t\tAcknowledge = 134,\n\t\tDisconnect = 135,\n\t\tDiscovery = 136,\n\t\tDiscoveryResponse = 137,\n\t\tNatPunchMessage = 138, // send between peers\n\t\tNatIntroduction = 139, // send to master server\n\t\tExpandMTURequest = 140,\n\t\tExpandMTUSuccess = 141,\n\t}\n}"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Lidgren/NetNatIntroduction.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Net;\n\nnamespace Lidgren.Network\n{\n\tpublic partial class NetPeer\n\t{\n\t\t/// <summary>\n\t\t/// Send NetIntroduction to hostExternal and clientExternal; introducing client to host\n\t\t/// </summary>\n\t\tpublic void Introduce(\n\t\t\tIPEndPoint hostInternal,\n\t\t\tIPEndPoint hostExternal,\n\t\t\tIPEndPoint clientInternal,\n\t\t\tIPEndPoint clientExternal,\n\t\t\tstring token)\n\t\t{\n\t\t\t// send message to client\n\t\t\tNetOutgoingMessage msg = CreateMessage(10 + token.Length + 1);\n\t\t\tmsg.m_messageType = NetMessageType.NatIntroduction;\n\t\t\tmsg.Write(false);\n\t\t\tmsg.WritePadBits();\n\t\t\tmsg.Write(hostInternal);\n\t\t\tmsg.Write(hostExternal);\n\t\t\tmsg.Write(token);\n\t\t\tm_unsentUnconnectedMessages.Enqueue(new NetTuple<IPEndPoint, NetOutgoingMessage>(clientExternal, msg));\n\n\t\t\t// send message to host\n\t\t\tmsg = CreateMessage(10 + token.Length + 1);\n\t\t\tmsg.m_messageType = NetMessageType.NatIntroduction;\n\t\t\tmsg.Write(true);\n\t\t\tmsg.WritePadBits();\n\t\t\tmsg.Write(clientInternal);\n\t\t\tmsg.Write(clientExternal);\n\t\t\tmsg.Write(token);\n\t\t\tm_unsentUnconnectedMessages.Enqueue(new NetTuple<IPEndPoint, NetOutgoingMessage>(hostExternal, msg));\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Called when host/client receives a NatIntroduction message from a master server\n\t\t/// </summary>\n\t\tprivate void HandleNatIntroduction(int ptr)\n\t\t{\n\t\t\tVerifyNetworkThread();\n\n\t\t\t// read intro\n\t\t\tNetIncomingMessage tmp = SetupReadHelperMessage(ptr, 1000); // never mind length\n\n\t\t\tbyte hostByte = tmp.ReadByte();\n\t\t\tIPEndPoint remoteInternal = tmp.ReadIPEndpoint();\n\t\t\tIPEndPoint remoteExternal = tmp.ReadIPEndpoint();\n\t\t\tstring token = tmp.ReadString();\n\t\t\tbool isHost = (hostByte != 0);\n\n\t\t\tLogDebug(\"NAT introduction received; we are designated \" + (isHost ? \"host\" : \"client\"));\n\n\t\t\tNetOutgoingMessage punch;\n\n\t\t\tif (!isHost && m_configuration.IsMessageTypeEnabled(NetIncomingMessageType.NatIntroductionSuccess) == false)\n\t\t\t\treturn; // no need to punch - we're not listening for nat intros!\n\n\t\t\t// send internal punch\n\t\t\tpunch = CreateMessage(1);\n\t\t\tpunch.m_messageType = NetMessageType.NatPunchMessage;\n\t\t\tpunch.Write(hostByte);\n\t\t\tpunch.Write(token);\n\t\t\tm_unsentUnconnectedMessages.Enqueue(new NetTuple<IPEndPoint, NetOutgoingMessage>(remoteInternal, punch));\n\n\t\t\t// send external punch\n\t\t\tpunch = CreateMessage(1);\n\t\t\tpunch.m_messageType = NetMessageType.NatPunchMessage;\n\t\t\tpunch.Write(hostByte);\n\t\t\tpunch.Write(token);\n\t\t\tm_unsentUnconnectedMessages.Enqueue(new NetTuple<IPEndPoint, NetOutgoingMessage>(remoteExternal, punch));\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Called when receiving a NatPunchMessage from a remote endpoint\n\t\t/// </summary>\n\t\tprivate void HandleNatPunch(int ptr, IPEndPoint senderEndpoint)\n\t\t{\n\t\t\tNetIncomingMessage tmp = SetupReadHelperMessage(ptr, 1000); // never mind length\n\n\t\t\tbyte fromHostByte = tmp.ReadByte();\n\t\t\tif (fromHostByte == 0)\n\t\t\t{\n\t\t\t\t// it's from client\n\t\t\t\tLogDebug(\"NAT punch received from \" + senderEndpoint + \" we're host, so we ignore this\");\n\t\t\t\treturn; // don't alert hosts about nat punch successes; only clients\n\t\t\t}\n\t\t\tstring token = tmp.ReadString();\n\n\t\t\tLogDebug(\"NAT punch received from \" + senderEndpoint + \" we're client, so we've succeeded - token is \" + token);\n\n\t\t\t//\n\t\t\t// Release punch success to client; enabling him to Connect() to msg.SenderIPEndPoint if token is ok\n\t\t\t//\n\t\t\tNetIncomingMessage punchSuccess = CreateIncomingMessage(NetIncomingMessageType.NatIntroductionSuccess, 10);\n\t\t\tpunchSuccess.m_senderEndpoint = senderEndpoint;\n\t\t\tpunchSuccess.Write(token);\n\t\t\tReleaseMessage(punchSuccess);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Lidgren/NetOutgoingMessage.cs",
    "content": "﻿/* Copyright (c) 2010 Michael Lidgren\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software\nand associated documentation files (the \"Software\"), to deal in the Software without\nrestriction, including without limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to permit persons to whom\nthe Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or\nsubstantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\nINCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR\nPURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\nUSE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\nusing System;\nusing System.Diagnostics;\n\nnamespace Lidgren.Network\n{\n\t/// <summary>\n\t/// Outgoing message used to send data to remote peer(s)\n\t/// </summary>\n\t[DebuggerDisplay(\"LengthBits={LengthBits}\")]\n\tpublic sealed class NetOutgoingMessage : NetBuffer\n\t{\n\t\tinternal NetMessageType m_messageType;\n\t\tinternal bool m_isSent;\n\t\tinternal int m_recyclingCount;\n\n\t\tinternal int m_fragmentGroup;             // which group of fragments ths belongs to\n\t\tinternal int m_fragmentGroupTotalBits;    // total number of bits in this group\n\t\tinternal int m_fragmentChunkByteSize;\t  // size, in bytes, of every chunk but the last one\n\t\tinternal int m_fragmentChunkNumber;       // which number chunk this is, starting with 0\n\n\t\tinternal NetOutgoingMessage()\n\t\t{\n\t\t}\n\n\t\tinternal void Reset()\n\t\t{\n\t\t\tm_messageType = NetMessageType.LibraryError;\n\t\t\tm_bitLength = 0;\n\t\t\tm_isSent = false;\n\t\t\tm_recyclingCount = 0;\n\t\t\tm_fragmentGroup = 0;\n\t\t}\n\n\t\tinternal int Encode(byte[] intoBuffer, int ptr, int sequenceNumber)\n\t\t{\n\t\t\t//  8 bits - NetMessageType\n\t\t\t//  1 bit  - Fragment?\n\t\t\t// 15 bits - Sequence number\n\t\t\t// 16 bits - Payload length in bits\n\t\t\t\n\t\t\tintoBuffer[ptr++] = (byte)m_messageType;\n\n\t\t\tbyte low = (byte)((sequenceNumber << 1) | (m_fragmentGroup == 0 ? 0 : 1));\n\t\t\tintoBuffer[ptr++] = low;\n\t\t\tintoBuffer[ptr++] = (byte)(sequenceNumber >> 7);\n\n\t\t\tif (m_fragmentGroup == 0)\n\t\t\t{\n\t\t\t\tintoBuffer[ptr++] = (byte)m_bitLength;\n\t\t\t\tintoBuffer[ptr++] = (byte)(m_bitLength >> 8);\n\n\t\t\t\tint byteLen = NetUtility.BytesToHoldBits(m_bitLength);\n\t\t\t\tif (byteLen > 0)\n\t\t\t\t{\n\t\t\t\t\tBuffer.BlockCopy(m_data, 0, intoBuffer, ptr, byteLen);\n\t\t\t\t\tptr += byteLen;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tint wasPtr = ptr;\n\t\t\t\tintoBuffer[ptr++] = (byte)m_bitLength;\n\t\t\t\tintoBuffer[ptr++] = (byte)(m_bitLength >> 8);\n\n\t\t\t\t//\n\t\t\t\t// write fragmentation header\n\t\t\t\t//\n\t\t\t\tptr = NetFragmentationHelper.WriteHeader(intoBuffer, ptr, m_fragmentGroup, m_fragmentGroupTotalBits, m_fragmentChunkByteSize, m_fragmentChunkNumber);\n\t\t\t\tint hdrLen = ptr - wasPtr - 2;\n\n\t\t\t\t// update length\n\t\t\t\tint realBitLength = m_bitLength + (hdrLen * 8);\n\t\t\t\tintoBuffer[wasPtr] = (byte)realBitLength;\n\t\t\t\tintoBuffer[wasPtr + 1] = (byte)(realBitLength >> 8);\n\n\t\t\t\tint byteLen = NetUtility.BytesToHoldBits(m_bitLength);\n\t\t\t\tif (byteLen > 0)\n\t\t\t\t{\n\t\t\t\t\tBuffer.BlockCopy(m_data, (int)(m_fragmentChunkNumber * m_fragmentChunkByteSize), intoBuffer, ptr, byteLen);\n\t\t\t\t\tptr += byteLen;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tNetException.Assert(ptr > 0);\n\t\t\treturn ptr;\n\t\t}\n\n\t\tinternal int GetEncodedSize()\n\t\t{\n\t\t\tint retval = NetConstants.UnfragmentedMessageHeaderSize; // regular headers\n\t\t\tif (m_fragmentGroup != 0)\n\t\t\t\tretval += NetFragmentationHelper.GetFragmentationHeaderSize(m_fragmentGroup, m_fragmentGroupTotalBits / 8, m_fragmentChunkByteSize, m_fragmentChunkNumber);\n\t\t\tretval += this.LengthBytes;\n\t\t\treturn retval;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Encrypt this message using the provided algorithm; no more writing can be done before sending it or the message will be corrupt!\n\t\t/// </summary>\n\t\tpublic bool Encrypt(INetEncryption encryption)\n\t\t{\n\t\t\treturn encryption.Encrypt(this);\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Returns a string that represents this object\n\t\t/// </summary>\n\t\tpublic override string ToString()\n\t\t{\n\t\t\treturn \"[NetOutgoingMessage \" + m_messageType + \" \" + this.LengthBytes + \" bytes]\";\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Lidgren/NetPeer.Discovery.cs",
    "content": "﻿using System;\nusing System.Net;\n\nnamespace Lidgren.Network\n{\n\tpublic partial class NetPeer\n\t{\n\t\t/// <summary>\n\t\t/// Emit a discovery signal to all hosts on your subnet\n\t\t/// </summary>\n\t\tpublic void DiscoverLocalPeers(int serverPort)\n\t\t{\n\t\t\tNetOutgoingMessage om = CreateMessage(0);\n\t\t\tom.m_messageType = NetMessageType.Discovery;\n\t\t\tm_unsentUnconnectedMessages.Enqueue(new NetTuple<IPEndPoint, NetOutgoingMessage>(new IPEndPoint(IPAddress.Broadcast, serverPort), om));\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Emit a discovery signal to a single known host\n\t\t/// </summary>\n\t\tpublic bool DiscoverKnownPeer(string host, int serverPort)\n\t\t{\n\t\t\tIPAddress address = NetUtility.Resolve(host);\n\t\t\tif (address == null)\n\t\t\t\treturn false;\n\t\t\tDiscoverKnownPeer(new IPEndPoint(address, serverPort));\n\t\t\treturn true;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Emit a discovery signal to a single known host\n\t\t/// </summary>\n\t\tpublic void DiscoverKnownPeer(IPEndPoint endpoint)\n\t\t{\n\t\t\tNetOutgoingMessage om = CreateMessage(0);\n\t\t\tom.m_messageType = NetMessageType.Discovery;\n\t\t\tm_unsentUnconnectedMessages.Enqueue(new NetTuple<IPEndPoint, NetOutgoingMessage>(endpoint, om));\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Send a discovery response message\n\t\t/// </summary>\n\t\tpublic void SendDiscoveryResponse(NetOutgoingMessage msg, IPEndPoint recipient)\n\t\t{\n\t\t\tif (recipient == null)\n\t\t\t\tthrow new ArgumentNullException(\"recipient\");\n\n\t\t\tif (msg == null)\n\t\t\t\tmsg = CreateMessage(0);\n\t\t\telse if (msg.m_isSent)\n\t\t\t\tthrow new NetException(\"Message has already been sent!\");\n\n\t\t\tif (msg.LengthBytes >= m_configuration.MaximumTransmissionUnit)\n\t\t\t\tthrow new NetException(\"Cannot send discovery message larger than MTU (currently \" + m_configuration.MaximumTransmissionUnit + \" bytes)\");\n\n\t\t\tmsg.m_messageType = NetMessageType.DiscoveryResponse;\n\t\t\tm_unsentUnconnectedMessages.Enqueue(new NetTuple<IPEndPoint, NetOutgoingMessage>(recipient, msg));\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Lidgren/NetPeer.Fragmentation.cs",
    "content": "﻿using System;\nusing System.Threading;\nusing System.Collections.Generic;\n\nnamespace Lidgren.Network\n{\n\tinternal class ReceivedFragmentGroup\n\t{\n\t\tpublic float LastReceived;\n\t\tpublic byte[] Data;\n\t\tpublic NetBitVector ReceivedChunks;\n\t}\n\n\tpublic partial class NetPeer\n\t{\n\t\tprivate int m_lastUsedFragmentGroup;\n\n\t\tprivate Dictionary<NetConnection, Dictionary<int, ReceivedFragmentGroup>> m_receivedFragmentGroups;\n\n\t\t// on user thread\n\t\tprivate void SendFragmentedMessage(NetOutgoingMessage msg, IList<NetConnection> recipients, NetDeliveryMethod method, int sequenceChannel)\n\t\t{\n\t\t\t// Note: this group id is PER SENDING/NetPeer; ie. same id is sent to all recipients;\n\t\t\t// this should be ok however; as long as recipients differentiate between same id but different sender\n\t\t\tint group = Interlocked.Increment(ref m_lastUsedFragmentGroup);\n\t\t\tif (group >= NetConstants.MaxFragmentationGroups)\n\t\t\t{\n\t\t\t\t// @TODO: not thread safe; but in practice probably not an issue\n\t\t\t\tm_lastUsedFragmentGroup = 1;\n\t\t\t\tgroup = 1;\n\t\t\t}\n\t\t\tmsg.m_fragmentGroup = group;\n\n\t\t\t// do not send msg; but set fragmentgroup in case user tries to recycle it immediately\n\n\t\t\t// create fragmentation specifics\n\t\t\tint totalBytes = msg.LengthBytes;\n\n\t\t\t// determine minimum mtu for all recipients\n\t\t\tint mtu = GetMTU(recipients);\n\t\t\tint bytesPerChunk = NetFragmentationHelper.GetBestChunkSize(group, totalBytes, mtu);\n\n\t\t\tint numChunks = totalBytes / bytesPerChunk;\n\t\t\tif (numChunks * bytesPerChunk < totalBytes)\n\t\t\t\tnumChunks++;\n\n\t\t\tint bitsPerChunk = bytesPerChunk * 8;\n\t\t\tint bitsLeft = msg.LengthBits;\n\t\t\tfor (int i = 0; i < numChunks; i++)\n\t\t\t{\n\t\t\t\tNetOutgoingMessage chunk = CreateMessage(mtu);\n\n\t\t\t\tchunk.m_bitLength = (bitsLeft > bitsPerChunk ? bitsPerChunk : bitsLeft);\n\t\t\t\tchunk.m_data = msg.m_data;\n\t\t\t\tchunk.m_fragmentGroup = group;\n\t\t\t\tchunk.m_fragmentGroupTotalBits = totalBytes * 8;\n\t\t\t\tchunk.m_fragmentChunkByteSize = bytesPerChunk;\n\t\t\t\tchunk.m_fragmentChunkNumber = i;\n\n\t\t\t\tNetException.Assert(chunk.m_bitLength != 0);\n\t\t\t\tNetException.Assert(chunk.GetEncodedSize() < mtu);\n\n\t\t\t\tInterlocked.Add(ref chunk.m_recyclingCount, recipients.Count);\n\n\t\t\t\tforeach (NetConnection recipient in recipients)\n\t\t\t\t\trecipient.EnqueueMessage(chunk, method, sequenceChannel);\n\n\t\t\t\tbitsLeft -= bitsPerChunk;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tprivate void HandleReleasedFragment(NetIncomingMessage im)\n\t\t{\n\t\t\t//\n\t\t\t// read fragmentation header and combine fragments\n\t\t\t//\n\t\t\tint group;\n\t\t\tint totalBits;\n\t\t\tint chunkByteSize;\n\t\t\tint chunkNumber;\n\t\t\tint ptr = NetFragmentationHelper.ReadHeader(\n\t\t\t\tim.m_data, 0,\n\t\t\t\tout group,\n\t\t\t\tout totalBits,\n\t\t\t\tout chunkByteSize,\n\t\t\t\tout chunkNumber\n\t\t\t);\n\n\t\t\tNetException.Assert(im.LengthBytes > ptr);\n\n\t\t\tNetException.Assert(group > 0);\n\t\t\tNetException.Assert(totalBits > 0);\n\t\t\tNetException.Assert(chunkByteSize > 0);\n\t\t\t\n\t\t\tint totalBytes = NetUtility.BytesToHoldBits((int)totalBits);\n\t\t\tint totalNumChunks = totalBytes / chunkByteSize;\n\t\t\tif (totalNumChunks * chunkByteSize < totalBytes)\n\t\t\t\ttotalNumChunks++;\n\n\t\t\tNetException.Assert(chunkNumber < totalNumChunks);\n\n\t\t\tif (chunkNumber >= totalNumChunks)\n\t\t\t{\n\t\t\t\tLogWarning(\"Index out of bounds for chunk \" + chunkNumber + \" (total chunks \" + totalNumChunks + \")\");\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tDictionary<int, ReceivedFragmentGroup> groups;\n\t\t\tif (!m_receivedFragmentGroups.TryGetValue(im.SenderConnection, out groups))\n\t\t\t{\n\t\t\t\tgroups = new Dictionary<int, ReceivedFragmentGroup>();\n\t\t\t\tm_receivedFragmentGroups[im.SenderConnection] = groups;\n\t\t\t}\n\n\t\t\tReceivedFragmentGroup info;\n\t\t\tif (!groups.TryGetValue(group, out info))\n\t\t\t{\n\t\t\t\tinfo = new ReceivedFragmentGroup();\n\t\t\t\tinfo.Data = new byte[totalBytes];\n\t\t\t\tinfo.ReceivedChunks = new NetBitVector(totalNumChunks);\n\t\t\t\tgroups[group] = info;\n\t\t\t}\n\n\t\t\tinfo.ReceivedChunks[chunkNumber] = true;\n\t\t\tinfo.LastReceived = (float)NetTime.Now;\n\n\t\t\t// copy to data\n\t\t\tint offset = (chunkNumber * chunkByteSize);\n\t\t\tBuffer.BlockCopy(im.m_data, ptr, info.Data, offset, im.LengthBytes - ptr);\n\n\t\t\tint cnt = info.ReceivedChunks.Count();\n\t\t\t//LogVerbose(\"Found fragment #\" + chunkNumber + \" in group \" + group + \" offset \" + offset + \" of total bits \" + totalBits + \" (total chunks done \" + cnt + \")\");\n\n\t\t\tLogVerbose(\"Received fragment \" + chunkNumber + \" of \" + totalNumChunks + \" (\" + cnt + \" chunks received)\");\n\n\t\t\tif (info.ReceivedChunks.Count() == totalNumChunks)\n\t\t\t{\n\t\t\t\t// Done! Transform this incoming message\n\t\t\t\tim.m_data = info.Data;\n\t\t\t\tim.m_bitLength = (int)totalBits;\n\t\t\t\tim.m_isFragment = false;\n\n\t\t\t\tLogVerbose(\"Fragment group #\" + group + \" fully received in \" + totalNumChunks + \" chunks (\" + totalBits + \" bits)\");\n\t\t\t\tgroups.Remove(group);\n\n\t\t\t\tReleaseMessage(im);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t// data has been copied; recycle this incoming message\n\t\t\t\tRecycle(im);\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Lidgren/NetPeer.Internal.cs",
    "content": "﻿#define IS_MAC_AVAILABLE\n\nusing System;\nusing System.Net;\nusing System.Threading;\nusing System.Diagnostics;\nusing System.Security.Cryptography;\nusing System.Net.Sockets;\nusing System.Collections.Generic;\n\nnamespace Lidgren.Network\n{\n\tpublic partial class NetPeer\n\t{\n\t\tprivate NetPeerStatus m_status;\n\t\tprivate Thread m_networkThread;\n\t\tprivate Socket m_socket;\n\t\tinternal byte[] m_sendBuffer;\n\t\tinternal byte[] m_receiveBuffer;\n\t\tinternal NetIncomingMessage m_readHelperMessage;\n\t\tprivate EndPoint m_senderRemote;\n\t\tprivate object m_initializeLock = new object();\n\t\tprivate uint m_frameCounter;\n\t\tprivate double m_lastHeartbeat;\n\t\tprivate NetUPnP m_upnp;\n\n\t\tinternal readonly NetPeerConfiguration m_configuration;\n\t\tprivate readonly NetQueue<NetIncomingMessage> m_releasedIncomingMessages;\n\t\tinternal readonly NetQueue<NetTuple<IPEndPoint, NetOutgoingMessage>> m_unsentUnconnectedMessages;\n\n\t\tinternal Dictionary<IPEndPoint, NetConnection> m_handshakes;\n\n\t\tinternal readonly NetPeerStatistics m_statistics;\n\t\tinternal long m_uniqueIdentifier;\n\t\tinternal bool m_executeFlushSendQueue;\n\n\t\tprivate AutoResetEvent m_messageReceivedEvent = new AutoResetEvent(false);\n\t\tprivate List<NetTuple<SynchronizationContext, SendOrPostCallback>> m_receiveCallbacks;\n\n\t\t/// <summary>\n\t\t/// Gets the socket, if Start() has been called\n\t\t/// </summary>\n\t\tpublic Socket Socket { get { return m_socket; } }\n\n\t\t/// <summary>\n\t\t/// Call this to register a callback for when a new message arrives\n\t\t/// </summary>\n\t\tpublic void RegisterReceivedCallback(SendOrPostCallback callback)\n\t\t{\n\t\t\tif (SynchronizationContext.Current == null)\n\t\t\t\tthrow new NetException(\"Need a SynchronizationContext to register callback on correct thread!\");\n\t\t\tif (m_receiveCallbacks == null)\n\t\t\t\tm_receiveCallbacks = new List<NetTuple<SynchronizationContext, SendOrPostCallback>>();\n\t\t\tm_receiveCallbacks.Add(new NetTuple<SynchronizationContext, SendOrPostCallback>(SynchronizationContext.Current, callback));\n\t\t}\n\n\t\tinternal void ReleaseMessage(NetIncomingMessage msg)\n\t\t{\n\t\t\tNetException.Assert(msg.m_incomingMessageType != NetIncomingMessageType.Error);\n\n\t\t\tif (msg.m_isFragment)\n\t\t\t{\n\t\t\t\tHandleReleasedFragment(msg);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tm_releasedIncomingMessages.Enqueue(msg);\n\n\t\t\tif (m_messageReceivedEvent != null)\n\t\t\t\tm_messageReceivedEvent.Set();\n\n\t\t\tif (m_receiveCallbacks != null)\n\t\t\t{\n\t\t\t\tforeach (var tuple in m_receiveCallbacks)\n\t\t\t\t\ttuple.Item1.Post(tuple.Item2, this);\n\t\t\t}\n\t\t}\n\n\t\tprivate void InitializeNetwork()\n\t\t{\n\t\t\tlock (m_initializeLock)\n\t\t\t{\n\t\t\t\tm_configuration.Lock();\n\n\t\t\t\tif (m_status == NetPeerStatus.Running)\n\t\t\t\t\treturn;\n\n\t\t\t\tif (m_configuration.m_enableUPnP)\n\t\t\t\t\tm_upnp = new NetUPnP(this);\n\n\t\t\t\tInitializePools();\n\n\t\t\t\tm_releasedIncomingMessages.Clear();\n\t\t\t\tm_unsentUnconnectedMessages.Clear();\n\t\t\t\tm_handshakes.Clear();\n\n\t\t\t\t// bind to socket\n\t\t\t\tIPEndPoint iep = null;\n\n\t\t\t\tiep = new IPEndPoint(m_configuration.LocalAddress, m_configuration.Port);\n\t\t\t\tEndPoint ep = (EndPoint)iep;\n\n\t\t\t\tm_socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);\n\t\t\t\tm_socket.ReceiveBufferSize = m_configuration.ReceiveBufferSize;\n\t\t\t\tm_socket.SendBufferSize = m_configuration.SendBufferSize;\n\t\t\t\tm_socket.Blocking = false;\n\t\t\t\tm_socket.Bind(ep);\n\n\t\t\t\ttry\n\t\t\t\t{\n\t\t\t\t\tconst uint IOC_IN = 0x80000000;\n\t\t\t\t\tconst uint IOC_VENDOR = 0x18000000;\n\t\t\t\t\tuint SIO_UDP_CONNRESET = IOC_IN | IOC_VENDOR | 12;\n\t\t\t\t\tm_socket.IOControl((int)SIO_UDP_CONNRESET, new byte[] { Convert.ToByte(false) }, null);\n\t\t\t\t}\n\t\t\t\tcatch\n\t\t\t\t{\n\t\t\t\t\t// ignore; SIO_UDP_CONNRESET not supported on this platform\n\t\t\t\t}\n\n\t\t\t\tIPEndPoint boundEp = m_socket.LocalEndPoint as IPEndPoint;\n\t\t\t\tLogDebug(\"Socket bound to \" + boundEp + \": \" + m_socket.IsBound);\n\t\t\t\tm_listenPort = boundEp.Port;\n\n\t\t\t\tm_receiveBuffer = new byte[m_configuration.ReceiveBufferSize];\n\t\t\t\tm_sendBuffer = new byte[m_configuration.SendBufferSize];\n\t\t\t\tm_readHelperMessage = new NetIncomingMessage(NetIncomingMessageType.Error);\n\t\t\t\tm_readHelperMessage.m_data = m_receiveBuffer;\n\n\t\t\t\tbyte[] macBytes = new byte[8];\n\t\t\t\tNetRandom.Instance.NextBytes(macBytes);\n\n#if IS_MAC_AVAILABLE\n\t\t\t\ttry\n\t\t\t\t{\n\t\t\t\t\tSystem.Net.NetworkInformation.PhysicalAddress pa = NetUtility.GetMacAddress();\n\t\t\t\t\tif (pa != null)\n\t\t\t\t\t{\n\t\t\t\t\t\tmacBytes = pa.GetAddressBytes();\n\t\t\t\t\t\tLogVerbose(\"Mac address is \" + NetUtility.ToHexString(macBytes));\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tLogWarning(\"Failed to get Mac address\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcatch (NotSupportedException)\n\t\t\t\t{\n\t\t\t\t\t// not supported; lets just keep the random bytes set above\n\t\t\t\t}\n#endif\n\t\t\t\tbyte[] epBytes = BitConverter.GetBytes(boundEp.GetHashCode());\n\t\t\t\tbyte[] combined = new byte[epBytes.Length + macBytes.Length];\n\t\t\t\tArray.Copy(epBytes, 0, combined, 0, epBytes.Length);\n\t\t\t\tArray.Copy(macBytes, 0, combined, epBytes.Length, macBytes.Length);\n\t\t\t\tm_uniqueIdentifier = BitConverter.ToInt64(SHA1.Create().ComputeHash(combined), 0);\n\n\t\t\t\tm_status = NetPeerStatus.Running;\n\t\t\t}\n\t\t}\n\n\t\tprivate void NetworkLoop()\n\t\t{\n\t\t\tVerifyNetworkThread();\n\n\t\t\tLogDebug(\"Network thread started\");\n\n\t\t\t//\n\t\t\t// Network loop\n\t\t\t//\n\t\t\tdo\n\t\t\t{\n\t\t\t\ttry\n\t\t\t\t{\n\t\t\t\t\tHeartbeat();\n\t\t\t\t}\n\t\t\t\tcatch (Exception ex)\n\t\t\t\t{\n\t\t\t\t\tLogWarning(ex.ToString());\n\t\t\t\t}\n\t\t\t} while (m_status == NetPeerStatus.Running);\n\n\t\t\t//\n\t\t\t// perform shutdown\n\t\t\t//\n\t\t\tExecutePeerShutdown();\n\t\t}\n\n\t\tprivate void ExecutePeerShutdown()\n\t\t{\n\t\t\tVerifyNetworkThread();\n\n\t\t\tLogDebug(\"Shutting down...\");\n\n\t\t\t// disconnect and make one final heartbeat\n\t\t\tvar list = new List<NetConnection>(m_handshakes.Count + m_connections.Count);\n\t\t\tlock (m_connections)\n\t\t\t{\n\t\t\t\tforeach (var conn in m_connections)\n\t\t\t\t\tif (conn != null)\n\t\t\t\t\t\tlist.Add(conn);\n\n\t\t\t\tlock (m_handshakes)\n\t\t\t\t{\n\t\t\t\t\tforeach (var hs in m_handshakes.Values)\n\t\t\t\t\t\tif (hs != null)\n\t\t\t\t\t\t\tlist.Add(hs);\n\n\t\t\t\t\t// shut down connections\n\t\t\t\t\tforeach (NetConnection conn in list)\n\t\t\t\t\t\tconn.Shutdown(m_shutdownReason);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tFlushDelayedPackets();\n\n\t\t\t// one final heartbeat, will send stuff and do disconnect\n\t\t\tHeartbeat();\n\n\t\t\tThread.Sleep(10);\n\n\t\t\tlock (m_initializeLock)\n\t\t\t{\n\t\t\t\ttry\n\t\t\t\t{\n\t\t\t\t\tif (m_socket != null)\n\t\t\t\t\t{\n\t\t\t\t\t\ttry\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tm_socket.Shutdown(SocketShutdown.Receive);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcatch { }\n\t\t\t\t\t\tm_socket.Close(2); // 2 seconds timeout\n\t\t\t\t\t}\n\t\t\t\t\tif (m_messageReceivedEvent != null)\n\t\t\t\t\t{\n\t\t\t\t\t\tm_messageReceivedEvent.Set();\n\t\t\t\t\t\tm_messageReceivedEvent.Close();\n\t\t\t\t\t\tm_messageReceivedEvent = null;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfinally\n\t\t\t\t{\n\t\t\t\t\tm_socket = null;\n\t\t\t\t\tm_status = NetPeerStatus.NotRunning;\n\t\t\t\t\tLogDebug(\"Shutdown complete\");\n\t\t\t\t}\n\n\t\t\t\tm_receiveBuffer = null;\n\t\t\t\tm_sendBuffer = null;\n\t\t\t\tm_unsentUnconnectedMessages.Clear();\n\t\t\t\tm_connections.Clear();\n\t\t\t\tm_handshakes.Clear();\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tprivate void Heartbeat()\n\t\t{\n\t\t\tVerifyNetworkThread();\n\n\t\t\tdouble dnow = NetTime.Now;\n\t\t\tfloat now = (float)dnow;\n\n\t\t\tdouble delta = dnow - m_lastHeartbeat;\n\n\t\t\tint maxCHBpS = 1250 - m_connections.Count;\n\t\t\tif (maxCHBpS < 250)\n\t\t\t\tmaxCHBpS = 250;\n\t\t\tif (delta > (1.0 / (double)maxCHBpS)) // max connection heartbeats/second max\n\t\t\t{\n\t\t\t\tm_frameCounter++;\n\t\t\t\tm_lastHeartbeat = dnow;\n\n\t\t\t\t// do handshake heartbeats\n\t\t\t\tif ((m_frameCounter % 3) == 0)\n\t\t\t\t{\n\t\t\t\t\tforeach (var kvp in m_handshakes)\n\t\t\t\t\t{\n\t\t\t\t\t\tNetConnection conn = kvp.Value as NetConnection;\n#if DEBUG\n\t\t\t\t\t\t// sanity check\n\t\t\t\t\t\tif (kvp.Key != kvp.Key)\n\t\t\t\t\t\t\tLogWarning(\"Sanity fail! Connection in handshake list under wrong key!\");\n#endif\n\t\t\t\t\t\tconn.UnconnectedHeartbeat(now);\n\t\t\t\t\t\tif (conn.m_status == NetConnectionStatus.Connected || conn.m_status == NetConnectionStatus.Disconnected)\n\t\t\t\t\t\t{\n#if DEBUG\n\t\t\t\t\t\t\t// sanity check\n\t\t\t\t\t\t\tif (conn.m_status == NetConnectionStatus.Disconnected && m_handshakes.ContainsKey(conn.RemoteEndpoint))\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tLogWarning(\"Sanity fail! Handshakes list contained disconnected connection!\");\n\t\t\t\t\t\t\t\tm_handshakes.Remove(conn.RemoteEndpoint);\n\t\t\t\t\t\t\t}\n#endif\n\t\t\t\t\t\t\tbreak; // collection has been modified\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n#if DEBUG\n\t\t\t\tSendDelayedPackets();\n#endif\n\n\t\t\t\t// update m_executeFlushSendQueue\n\t\t\t\tif (m_configuration.m_autoFlushSendQueue)\n\t\t\t\t\tm_executeFlushSendQueue = true;\n\n\t\t\t\t// do connection heartbeats\n\t\t\t\tlock (m_connections)\n\t\t\t\t{\n\t\t\t\t\tforeach (NetConnection conn in m_connections)\n\t\t\t\t\t{\n\t\t\t\t\t\tconn.Heartbeat(now, m_frameCounter);\n\t\t\t\t\t\tif (conn.m_status == NetConnectionStatus.Disconnected)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t//\n\t\t\t\t\t\t\t// remove connection\n\t\t\t\t\t\t\t//\n\t\t\t\t\t\t\tm_connections.Remove(conn);\n\t\t\t\t\t\t\tm_connectionLookup.Remove(conn.RemoteEndpoint);\n\t\t\t\t\t\t\tbreak; // can't continue iteration here\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tm_executeFlushSendQueue = false;\n\n\t\t\t\t// send unsent unconnected messages\n\t\t\t\tNetTuple<IPEndPoint, NetOutgoingMessage> unsent;\n\t\t\t\twhile (m_unsentUnconnectedMessages.TryDequeue(out unsent))\n\t\t\t\t{\n\t\t\t\t\tNetOutgoingMessage om = unsent.Item2;\n\n\t\t\t\t\tbool connReset;\n\t\t\t\t\tint len = om.Encode(m_sendBuffer, 0, 0);\n\t\t\t\t\tSendPacket(len, unsent.Item1, 1, out connReset);\n\n\t\t\t\t\tInterlocked.Decrement(ref om.m_recyclingCount);\n\t\t\t\t\tif (om.m_recyclingCount <= 0)\n\t\t\t\t\t\tRecycle(om);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//\n\t\t\t// read from socket\n\t\t\t//\n\t\t\tif (m_socket == null)\n\t\t\t\treturn;\n\n\t\t\tif (!m_socket.Poll(1000, SelectMode.SelectRead)) // wait up to 1 ms for data to arrive\n\t\t\t\treturn;\n\n\t\t\t//if (m_socket == null || m_socket.Available < 1)\n\t\t\t//\treturn;\n\n\t\t\tdo\n\t\t\t{\n\t\t\t\tint bytesReceived = 0;\n\t\t\t\ttry\n\t\t\t\t{\n\t\t\t\t\tbytesReceived = m_socket.ReceiveFrom(m_receiveBuffer, 0, m_receiveBuffer.Length, SocketFlags.None, ref m_senderRemote);\n\t\t\t\t}\n\t\t\t\tcatch (SocketException sx)\n\t\t\t\t{\n\t\t\t\t\tif (sx.SocketErrorCode == SocketError.ConnectionReset)\n\t\t\t\t\t{\n\t\t\t\t\t\t// connection reset by peer, aka connection forcibly closed aka \"ICMP port unreachable\" \n\t\t\t\t\t\t// we should shut down the connection; but m_senderRemote seemingly cannot be trusted, so which connection should we shut down?!\n\t\t\t\t\t\t// So, what to do?\n\t\t\t\t\t\tLogWarning(\"ConnectionReset\");\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tLogWarning(sx.ToString());\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (bytesReceived < NetConstants.HeaderByteSize)\n\t\t\t\t\treturn;\n\n\t\t\t\t//LogVerbose(\"Received \" + bytesReceived + \" bytes\");\n\n\t\t\t\tIPEndPoint ipsender = (IPEndPoint)m_senderRemote;\n\n\t\t\t\tif (ipsender.Port == 1900)\n\t\t\t\t{\n\t\t\t\t\t// UPnP response\n\t\t\t\t\ttry\n\t\t\t\t\t{\n\t\t\t\t\t\tstring resp = System.Text.Encoding.ASCII.GetString(m_receiveBuffer, 0, bytesReceived);\n\t\t\t\t\t\tif (resp.Contains(\"upnp:rootdevice\"))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tresp = resp.Substring(resp.ToLower().IndexOf(\"location:\") + 9);\n\t\t\t\t\t\t\tresp = resp.Substring(0, resp.IndexOf(\"\\r\")).Trim();\n\t\t\t\t\t\t\tm_upnp.ExtractServiceUrl(resp);\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcatch { }\n\t\t\t\t}\n\n\t\t\t\tNetConnection sender = null;\n\t\t\t\tm_connectionLookup.TryGetValue(ipsender, out sender);\n\n\t\t\t\tdouble receiveTime = NetTime.Now;\n\t\t\t\t//\n\t\t\t\t// parse packet into messages\n\t\t\t\t//\n\t\t\t\tint numMessages = 0;\n\t\t\t\tint ptr = 0;\n\t\t\t\twhile ((bytesReceived - ptr) >= NetConstants.HeaderByteSize)\n\t\t\t\t{\n\t\t\t\t\t// decode header\n\t\t\t\t\t//  8 bits - NetMessageType\n\t\t\t\t\t//  1 bit  - Fragment?\n\t\t\t\t\t// 15 bits - Sequence number\n\t\t\t\t\t// 16 bits - Payload length in bits\n\n\t\t\t\t\tnumMessages++;\n\n\t\t\t\t\tNetMessageType tp = (NetMessageType)m_receiveBuffer[ptr++];\n\n\t\t\t\t\tbyte low = m_receiveBuffer[ptr++];\n\t\t\t\t\tbyte high = m_receiveBuffer[ptr++];\n\n\t\t\t\t\tbool isFragment = ((low & 1) == 1);\n\t\t\t\t\tushort sequenceNumber = (ushort)((low >> 1) | (((int)high) << 7));\n\n\t\t\t\t\tushort payloadBitLength = (ushort)(m_receiveBuffer[ptr++] | (m_receiveBuffer[ptr++] << 8));\n\t\t\t\t\tint payloadByteLength = NetUtility.BytesToHoldBits(payloadBitLength);\n\n\t\t\t\t\tif (bytesReceived - ptr < payloadByteLength)\n\t\t\t\t\t{\n\t\t\t\t\t\tLogWarning(\"Malformed packet; stated payload length \" + payloadByteLength + \", remaining bytes \" + (bytesReceived - ptr));\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\ttry\n\t\t\t\t\t{\n\t\t\t\t\t\tNetException.Assert(tp < NetMessageType.Unused1 || tp > NetMessageType.Unused29);\n\n\t\t\t\t\t\tif (tp >= NetMessageType.LibraryError)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (sender != null && tp != NetMessageType.NatIntroduction && tp != NetMessageType.NatPunchMessage)\n\t\t\t\t\t\t\t\tsender.ReceivedLibraryMessage(tp, ptr, payloadByteLength);\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tReceivedUnconnectedLibraryMessage(receiveTime, ipsender, tp, ptr, payloadByteLength);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (sender == null && !m_configuration.IsMessageTypeEnabled(NetIncomingMessageType.UnconnectedData))\n\t\t\t\t\t\t\t\treturn; // dropping unconnected message since it's not enabled\n\n\t\t\t\t\t\t\tNetIncomingMessage msg = CreateIncomingMessage(NetIncomingMessageType.Data, payloadByteLength);\n\t\t\t\t\t\t\tmsg.m_isFragment = isFragment;\n\t\t\t\t\t\t\tmsg.m_receiveTime = receiveTime;\n\t\t\t\t\t\t\tmsg.m_sequenceNumber = sequenceNumber;\n\t\t\t\t\t\t\tmsg.m_receivedMessageType = tp;\n\t\t\t\t\t\t\tmsg.m_senderConnection = sender;\n\t\t\t\t\t\t\tmsg.m_senderEndpoint = ipsender;\n\t\t\t\t\t\t\tmsg.m_bitLength = payloadBitLength;\n\t\t\t\t\t\t\tBuffer.BlockCopy(m_receiveBuffer, ptr, msg.m_data, 0, payloadByteLength);\n\t\t\t\t\t\t\tif (sender != null)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tif (tp == NetMessageType.Unconnected)\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t// We're connected; but we can still send unconnected messages to this peer\n\t\t\t\t\t\t\t\t\tmsg.m_incomingMessageType = NetIncomingMessageType.UnconnectedData;\n\t\t\t\t\t\t\t\t\tReleaseMessage(msg);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t// connected application (non-library) message\n\t\t\t\t\t\t\t\t\tsender.ReceivedMessage(msg);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t// at this point we know the message type is enabled\n\t\t\t\t\t\t\t\t// unconnected application (non-library) message\n\t\t\t\t\t\t\t\tmsg.m_incomingMessageType = NetIncomingMessageType.UnconnectedData;\n\t\t\t\t\t\t\t\tReleaseMessage(msg);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcatch (Exception ex)\n\t\t\t\t\t{\n\t\t\t\t\t\tLogError(\"Packet parsing error: \" + ex.Message + \" from \" + ipsender);\n\t\t\t\t\t}\n\t\t\t\t\tptr += payloadByteLength;\n\t\t\t\t}\n\n\t\t\t\tm_statistics.PacketReceived(bytesReceived, numMessages);\n\t\t\t\tif (sender != null)\n\t\t\t\t\tsender.m_statistics.PacketReceived(bytesReceived, numMessages);\n\n\t\t\t} while (m_socket.Available > 0);\n\t\t}\n\n\t\t/// <summary>\n\t\t/// If NetPeerConfiguration.AutoFlushSendQueue() is false; you need to call this to send all messages queued using SendMessage()\n\t\t/// </summary>\n\t\tpublic void FlushSendQueue()\n\t\t{\n\t\t\tm_executeFlushSendQueue = true;\n\t\t}\n\n\t\tinternal void HandleIncomingDiscoveryRequest(double now, IPEndPoint senderEndpoint, int ptr, int payloadByteLength)\n\t\t{\n\t\t\tif (m_configuration.IsMessageTypeEnabled(NetIncomingMessageType.DiscoveryRequest))\n\t\t\t{\n\t\t\t\tNetIncomingMessage dm = CreateIncomingMessage(NetIncomingMessageType.DiscoveryRequest, payloadByteLength);\n\t\t\t\tif (payloadByteLength > 0)\n\t\t\t\t\tBuffer.BlockCopy(m_receiveBuffer, ptr, dm.m_data, 0, payloadByteLength);\n\t\t\t\tdm.m_receiveTime = now;\n\t\t\t\tdm.m_bitLength = payloadByteLength * 8;\n\t\t\t\tdm.m_senderEndpoint = senderEndpoint;\n\t\t\t\tReleaseMessage(dm);\n\t\t\t}\n\t\t}\n\n\t\tinternal void HandleIncomingDiscoveryResponse(double now, IPEndPoint senderEndpoint, int ptr, int payloadByteLength)\n\t\t{\n\t\t\tif (m_configuration.IsMessageTypeEnabled(NetIncomingMessageType.DiscoveryResponse))\n\t\t\t{\n\t\t\t\tNetIncomingMessage dr = CreateIncomingMessage(NetIncomingMessageType.DiscoveryResponse, payloadByteLength);\n\t\t\t\tif (payloadByteLength > 0)\n\t\t\t\t\tBuffer.BlockCopy(m_receiveBuffer, ptr, dr.m_data, 0, payloadByteLength);\n\t\t\t\tdr.m_receiveTime = now;\n\t\t\t\tdr.m_bitLength = payloadByteLength * 8;\n\t\t\t\tdr.m_senderEndpoint = senderEndpoint;\n\t\t\t\tReleaseMessage(dr);\n\t\t\t}\n\t\t}\n\n\t\tprivate void ReceivedUnconnectedLibraryMessage(double now, IPEndPoint senderEndpoint, NetMessageType tp, int ptr, int payloadByteLength)\n\t\t{\n\t\t\tNetConnection shake;\n\t\t\tif (m_handshakes.TryGetValue(senderEndpoint, out shake))\n\t\t\t{\n\t\t\t\tshake.ReceivedHandshake(now, tp, ptr, payloadByteLength);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t//\n\t\t\t// Library message from a completely unknown sender; lets just accept Connect\n\t\t\t//\n\t\t\tswitch (tp)\n\t\t\t{\n\t\t\t\tcase NetMessageType.Discovery:\n\t\t\t\t\tHandleIncomingDiscoveryRequest(now, senderEndpoint, ptr, payloadByteLength);\n\t\t\t\t\treturn;\n\t\t\t\tcase NetMessageType.DiscoveryResponse:\n\t\t\t\t\tHandleIncomingDiscoveryResponse(now, senderEndpoint, ptr, payloadByteLength);\n\t\t\t\t\treturn;\n\t\t\t\tcase NetMessageType.NatIntroduction:\n\t\t\t\t\tHandleNatIntroduction(ptr);\n\t\t\t\t\treturn;\n\t\t\t\tcase NetMessageType.NatPunchMessage:\n\t\t\t\t\tHandleNatPunch(ptr, senderEndpoint);\n\t\t\t\t\treturn;\n\t\t\t\tcase NetMessageType.ConnectResponse:\n\n\t\t\t\t\tlock (m_handshakes)\n\t\t\t\t\t{\n\t\t\t\t\t\tforeach (var hs in m_handshakes)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (hs.Key.Address.Equals(senderEndpoint.Address))\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tif (hs.Value.m_connectionInitiator)\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t//\n\t\t\t\t\t\t\t\t\t// We are currently trying to connection to XX.XX.XX.XX:Y\n\t\t\t\t\t\t\t\t\t// ... but we just received a ConnectResponse from XX.XX.XX.XX:Z\n\t\t\t\t\t\t\t\t\t// Lets just assume the router decided to use this port instead\n\t\t\t\t\t\t\t\t\t//\n\t\t\t\t\t\t\t\t\tvar hsconn = hs.Value;\n\t\t\t\t\t\t\t\t\tm_connectionLookup.Remove(hs.Key);\n\t\t\t\t\t\t\t\t\tm_handshakes.Remove(hs.Key);\n\n\t\t\t\t\t\t\t\t\tLogDebug(\"Detected host port change; rerouting connection to \" + senderEndpoint);\n\t\t\t\t\t\t\t\t\thsconn.MutateEndpoint(senderEndpoint);\n\n\t\t\t\t\t\t\t\t\tm_connectionLookup.Add(senderEndpoint, hsconn);\n\t\t\t\t\t\t\t\t\tm_handshakes.Add(senderEndpoint, hsconn);\n\n\t\t\t\t\t\t\t\t\thsconn.ReceivedHandshake(now, tp, ptr, payloadByteLength);\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tLogWarning(\"Received unhandled library message \" + tp + \" from \" + senderEndpoint);\n\t\t\t\t\treturn;\n\t\t\t\tcase NetMessageType.Connect:\n\t\t\t\t\t// proceed\n\t\t\t\t\tbreak;\n\t\t\t\tcase NetMessageType.Disconnect:\n\t\t\t\t\t// this is probably ok\n\t\t\t\t\tLogVerbose(\"Received Disconnect from unconnected source: \" + senderEndpoint);\n\t\t\t\t\treturn;\n\t\t\t\tdefault:\n\t\t\t\t\tLogWarning(\"Received unhandled library message \" + tp + \" from \" + senderEndpoint);\n\t\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// It's someone wanting to shake hands with us!\n\n\t\t\tint reservedSlots = m_handshakes.Count + m_connections.Count;\n\t\t\tif (reservedSlots >= m_configuration.m_maximumConnections)\n\t\t\t{\n\t\t\t\t// server full\n\t\t\t\tNetOutgoingMessage full = CreateMessage(\"Server full\");\n\t\t\t\tfull.m_messageType = NetMessageType.Disconnect;\n\t\t\t\tSendLibrary(full, senderEndpoint);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Ok, start handshake!\n\t\t\tNetConnection conn = new NetConnection(this, senderEndpoint);\n\t\t\tm_handshakes.Add(senderEndpoint, conn);\n\t\t\tconn.ReceivedHandshake(now, tp, ptr, payloadByteLength);\n\n\t\t\treturn;\n\t\t}\n\n\t\tinternal void AcceptConnection(NetConnection conn)\n\t\t{\n\t\t\t// LogDebug(\"Accepted connection \" + conn);\n\t\t\tconn.InitExpandMTU(NetTime.Now);\n\n\t\t\tif (m_handshakes.Remove(conn.m_remoteEndpoint) == false)\n\t\t\t\tLogWarning(\"AcceptConnection called but m_handshakes did not contain it!\");\n\n\t\t\tlock (m_connections)\n\t\t\t{\n\t\t\t\tif (m_connections.Contains(conn))\n\t\t\t\t{\n\t\t\t\t\tLogWarning(\"AcceptConnection called but m_connection already contains it!\");\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tm_connections.Add(conn);\n\t\t\t\t\tm_connectionLookup.Add(conn.m_remoteEndpoint, conn);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t[Conditional(\"DEBUG\")]\n\t\tinternal void VerifyNetworkThread()\n\t\t{\n\t\t\tThread ct = Thread.CurrentThread;\n\t\t\tif (Thread.CurrentThread != m_networkThread)\n\t\t\t\tthrow new NetException(\"Executing on wrong thread! Should be library system thread (is \" + ct.Name + \" mId \" + ct.ManagedThreadId + \")\");\n\t\t}\n\n\t\tinternal NetIncomingMessage SetupReadHelperMessage(int ptr, int payloadLength)\n\t\t{\n\t\t\tVerifyNetworkThread();\n\n\t\t\tm_readHelperMessage.m_bitLength = (ptr + payloadLength) * 8;\n\t\t\tm_readHelperMessage.m_readPosition = (ptr * 8);\n\t\t\treturn m_readHelperMessage;\n\t\t}\n\t}\n}"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Lidgren/NetPeer.LatencySimulation.cs",
    "content": "﻿/* Copyright (c) 2010 Michael Lidgren\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software\nand associated documentation files (the \"Software\"), to deal in the Software without\nrestriction, including without limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to permit persons to whom\nthe Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or\nsubstantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\nINCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR\nPURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\nUSE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n//#define USE_RELEASE_STATISTICS\n\nusing System;\nusing System.Collections.Generic;\nusing System.Net;\nusing System.Net.Sockets;\nusing System.Diagnostics;\n\nnamespace Lidgren.Network\n{\n\tpublic partial class NetPeer\n\t{\n\n#if DEBUG\n\t\tprivate readonly List<DelayedPacket> m_delayedPackets = new List<DelayedPacket>();\n\n\t\tprivate class DelayedPacket\n\t\t{\n\t\t\tpublic byte[] Data;\n\t\t\tpublic double DelayedUntil;\n\t\t\tpublic IPEndPoint Target;\n\t\t}\n\n\t\tinternal void SendPacket(int numBytes, IPEndPoint target, int numMessages, out bool connectionReset)\n\t\t{\n\t\t\tconnectionReset = false;\n\n\t\t\t// simulate loss\n\t\t\tfloat loss = m_configuration.m_loss;\n\t\t\tif (loss > 0.0f)\n\t\t\t{\n\t\t\t\tif ((float)NetRandom.Instance.NextDouble() < loss)\n\t\t\t\t{\n\t\t\t\t\tLogVerbose(\"Sending packet \" + numBytes + \" bytes - SIMULATED LOST!\");\n\t\t\t\t\treturn; // packet \"lost\"\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tm_statistics.PacketSent(numBytes, numMessages);\n\n\t\t\t// simulate latency\n\t\t\tfloat m = m_configuration.m_minimumOneWayLatency;\n\t\t\tfloat r = m_configuration.m_randomOneWayLatency;\n\t\t\tif (m == 0.0f && r == 0.0f)\n\t\t\t{\n\t\t\t\t// no latency simulation\n\t\t\t\t// LogVerbose(\"Sending packet \" + numBytes + \" bytes\");\n\t\t\t\tbool wasSent = ActuallySendPacket(m_sendBuffer, numBytes, target, out connectionReset);\n\t\t\t\t// TODO: handle wasSent == false?\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tint num = 1;\n\t\t\tif (m_configuration.m_duplicates > 0.0f && NetRandom.Instance.NextSingle() < m_configuration.m_duplicates)\n\t\t\t\tnum++;\n\n\t\t\tfloat delay = 0;\n\t\t\tfor (int i = 0; i < num; i++)\n\t\t\t{\n\t\t\t\tdelay = m_configuration.m_minimumOneWayLatency + (NetRandom.Instance.NextSingle() * m_configuration.m_randomOneWayLatency);\n\n\t\t\t\t// Enqueue delayed packet\n\t\t\t\tDelayedPacket p = new DelayedPacket();\n\t\t\t\tp.Target = target;\n\t\t\t\tp.Data = new byte[numBytes];\n\t\t\t\tBuffer.BlockCopy(m_sendBuffer, 0, p.Data, 0, numBytes);\n\t\t\t\tp.DelayedUntil = NetTime.Now + delay;\n\n\t\t\t\tm_delayedPackets.Add(p);\n\t\t\t}\n\n\t\t\t// LogVerbose(\"Sending packet \" + numBytes + \" bytes - delayed \" + NetTime.ToReadable(delay));\n\t\t}\n\n\t\tprivate void SendDelayedPackets()\n\t\t{\n\t\t\tif (m_delayedPackets.Count <= 0)\n\t\t\t\treturn;\n\n\t\t\tdouble now = NetTime.Now;\n\n\t\t\tbool connectionReset;\n\n\t\tRestartDelaySending:\n\t\t\tforeach (DelayedPacket p in m_delayedPackets)\n\t\t\t{\n\t\t\t\tif (now > p.DelayedUntil)\n\t\t\t\t{\n\t\t\t\t\tActuallySendPacket(p.Data, p.Data.Length, p.Target, out connectionReset);\n\t\t\t\t\tm_delayedPackets.Remove(p);\n\t\t\t\t\tgoto RestartDelaySending;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tprivate void FlushDelayedPackets()\n\t\t{\n\t\t\ttry\n\t\t\t{\n\t\t\t\tbool connectionReset;\n\t\t\t\tforeach (DelayedPacket p in m_delayedPackets)\n\t\t\t\t\tActuallySendPacket(p.Data, p.Data.Length, p.Target, out connectionReset);\n\t\t\t\tm_delayedPackets.Clear();\n\t\t\t}\n\t\t\tcatch { }\n\t\t}\n\n\t\tinternal bool ActuallySendPacket(byte[] data, int numBytes, IPEndPoint target, out bool connectionReset)\n\t\t{\n\t\t\tconnectionReset = false;\n\t\t\ttry\n\t\t\t{\n\t\t\t\t// TODO: refactor this check outta here\n\t\t\t\tif (target.Address == IPAddress.Broadcast)\n\t\t\t\t\tm_socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, true);\n\n\t\t\t\tint bytesSent = m_socket.SendTo(data, 0, numBytes, SocketFlags.None, target);\n\t\t\t\tif (numBytes != bytesSent)\n\t\t\t\t\tLogWarning(\"Failed to send the full \" + numBytes + \"; only \" + bytesSent + \" bytes sent in packet!\");\n\n\t\t\t\t// LogDebug(\"Sent \" + numBytes + \" bytes\");\n\t\t\t}\n\t\t\tcatch (SocketException sx)\n\t\t\t{\n\t\t\t\tif (sx.SocketErrorCode == SocketError.WouldBlock)\n\t\t\t\t{\n\t\t\t\t\t// send buffer full?\n\t\t\t\t\tLogWarning(\"Socket threw exception; would block - send buffer full? Increase in NetPeerConfiguration\");\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tif (sx.SocketErrorCode == SocketError.ConnectionReset)\n\t\t\t\t{\n\t\t\t\t\t// connection reset by peer, aka connection forcibly closed aka \"ICMP port unreachable\" \n\t\t\t\t\tconnectionReset = true;\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tLogError(\"Failed to send packet: \" + sx);\n\t\t\t}\n\t\t\tcatch (Exception ex)\n\t\t\t{\n\t\t\t\tLogError(\"Failed to send packet: \" + ex);\n\t\t\t}\n\t\t\tfinally\n\t\t\t{\n\t\t\t\tif (target.Address == IPAddress.Broadcast)\n\t\t\t\t\tm_socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, false);\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\n\t\tinternal bool SendMTUPacket(int numBytes, IPEndPoint target)\n\t\t{\n\t\t\ttry\n\t\t\t{\n\t\t\t\tm_socket.DontFragment = true;\n\t\t\t\tint bytesSent = m_socket.SendTo(m_sendBuffer, 0, numBytes, SocketFlags.None, target);\n\t\t\t\tif (numBytes != bytesSent)\n\t\t\t\t\tLogWarning(\"Failed to send the full \" + numBytes + \"; only \" + bytesSent + \" bytes sent in packet!\");\n\t\t\t\n\t\t\t\tm_statistics.PacketSent(numBytes, 1);\n\t\t\t}\n\t\t\tcatch (SocketException sx)\n\t\t\t{\n\t\t\t\tif (sx.SocketErrorCode == SocketError.MessageSize)\n\t\t\t\t\treturn false;\n\t\t\t\tif (sx.SocketErrorCode == SocketError.WouldBlock)\n\t\t\t\t{\n\t\t\t\t\t// send buffer full?\n\t\t\t\t\tLogWarning(\"Socket threw exception; would block - send buffer full? Increase in NetPeerConfiguration\");\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tif (sx.SocketErrorCode == SocketError.ConnectionReset)\n\t\t\t\t\treturn true;\n\t\t\t\tLogError(\"Failed to send packet: (\" + sx.SocketErrorCode + \") \" + sx);\n\t\t\t}\n\t\t\tcatch (Exception ex)\n\t\t\t{\n\t\t\t\tLogError(\"Failed to send packet: \" + ex);\n\t\t\t}\n\t\t\tfinally\n\t\t\t{\n\t\t\t\tm_socket.DontFragment = false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n#else\n\t\tinternal bool SendMTUPacket(int numBytes, IPEndPoint target)\n\t\t{\n\t\t\ttry\n\t\t\t{\n\t\t\t\tm_socket.DontFragment = true;\n\t\t\t\tint bytesSent = m_socket.SendTo(m_sendBuffer, 0, numBytes, SocketFlags.None, target);\n\t\t\t\tif (numBytes != bytesSent)\n\t\t\t\t\tLogWarning(\"Failed to send the full \" + numBytes + \"; only \" + bytesSent + \" bytes sent in packet!\");\n\t\t\t}\n\t\t\tcatch (SocketException sx)\n\t\t\t{\n\t\t\t\tif (sx.SocketErrorCode == SocketError.MessageSize)\n\t\t\t\t\treturn false;\n\t\t\t\tif (sx.SocketErrorCode == SocketError.WouldBlock)\n\t\t\t\t{\n\t\t\t\t\t// send buffer full?\n\t\t\t\t\tLogWarning(\"Socket threw exception; would block - send buffer full? Increase in NetPeerConfiguration\");\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tif (sx.SocketErrorCode == SocketError.ConnectionReset)\n\t\t\t\t\treturn true;\n\t\t\t\tLogError(\"Failed to send packet: (\" + sx.SocketErrorCode + \") \" + sx);\n\t\t\t}\n\t\t\tcatch (Exception ex)\n\t\t\t{\n\t\t\t\tLogError(\"Failed to send packet: \" + ex);\n\t\t\t}\n\t\t\tfinally\n\t\t\t{\n\t\t\t\tm_socket.DontFragment = false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\n\t\t//\n\t\t// Release - just send the packet straight away\n\t\t//\n\t\tinternal void SendPacket(int numBytes, IPEndPoint target, int numMessages, out bool connectionReset)\n\t\t{\n#if USE_RELEASE_STATISTICS\n\t\t\tm_statistics.PacketSent(numBytes, numMessages);\n#endif\n\t\t\tconnectionReset = false;\n\t\t\ttry\n\t\t\t{\n\t\t\t\t// TODO: refactor this check outta here\n\t\t\t\tif (target.Address == IPAddress.Broadcast)\n\t\t\t\t\tm_socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, true);\n\n\t\t\t\tint bytesSent = m_socket.SendTo(m_sendBuffer, 0, numBytes, SocketFlags.None, target);\n\t\t\t\tif (numBytes != bytesSent)\n\t\t\t\t\tLogWarning(\"Failed to send the full \" + numBytes + \"; only \" + bytesSent + \" bytes sent in packet!\");\n\t\t\t}\n\t\t\tcatch (SocketException sx)\n\t\t\t{\n\t\t\t\tif (sx.SocketErrorCode == SocketError.WouldBlock)\n\t\t\t\t{\n\t\t\t\t\t// send buffer full?\n\t\t\t\t\tLogWarning(\"Socket threw exception; would block - send buffer full? Increase in NetPeerConfiguration\");\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (sx.SocketErrorCode == SocketError.ConnectionReset)\n\t\t\t\t{\n\t\t\t\t\t// connection reset by peer, aka connection forcibly closed aka \"ICMP port unreachable\" \n\t\t\t\t\tconnectionReset = true;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tLogError(\"Failed to send packet: \" + sx);\n\t\t\t}\n\t\t\tcatch (Exception ex)\n\t\t\t{\n\t\t\t\tLogError(\"Failed to send packet: \" + ex);\n\t\t\t}\n\t\t\tfinally\n\t\t\t{\n\t\t\t\tif (target.Address == IPAddress.Broadcast)\n\t\t\t\t\tm_socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, false);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tprivate void FlushDelayedPackets()\n\t\t{\n\t\t}\n\n\t\tprivate void SendCallBack(IAsyncResult res)\n\t\t{\n\t\t\tNetException.Assert(res.IsCompleted == true);\n\t\t\tm_socket.EndSendTo(res);\n\t\t}\n#endif\n\t}\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Lidgren/NetPeer.Logging.cs",
    "content": "﻿/* Copyright (c) 2010 Michael Lidgren\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software\nand associated documentation files (the \"Software\"), to deal in the Software without\nrestriction, including without limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to permit persons to whom\nthe Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or\nsubstantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\nINCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR\nPURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\nUSE OR OTHER DEALINGS IN THE SOFTWARE.\n*/\nusing System.Diagnostics;\n\nnamespace Lidgren.Network\n{\n\tpublic partial class NetPeer\n\t{\n\t\t[Conditional(\"DEBUG\")]\n\t\tinternal void LogVerbose(string message)\n\t\t{\n\t\t\tif (m_configuration.IsMessageTypeEnabled(NetIncomingMessageType.VerboseDebugMessage))\n\t\t\t\tReleaseMessage(CreateIncomingMessage(NetIncomingMessageType.VerboseDebugMessage, message));\n\t\t}\n\n\t\t[Conditional(\"DEBUG\")]\n\t\tinternal void LogDebug(string message)\n\t\t{\n\t\t\tif (m_configuration.IsMessageTypeEnabled(NetIncomingMessageType.DebugMessage))\n\t\t\t\tReleaseMessage(CreateIncomingMessage(NetIncomingMessageType.DebugMessage, message));\n\t\t}\n\n\t\tinternal void LogWarning(string message)\n\t\t{\n\t\t\tif (m_configuration.IsMessageTypeEnabled(NetIncomingMessageType.WarningMessage))\n\t\t\t\tReleaseMessage(CreateIncomingMessage(NetIncomingMessageType.WarningMessage, message));\n\t\t}\n\n\t\tinternal void LogError(string message)\n\t\t{\n\t\t\tif (m_configuration.IsMessageTypeEnabled(NetIncomingMessageType.ErrorMessage))\n\t\t\t\tReleaseMessage(CreateIncomingMessage(NetIncomingMessageType.ErrorMessage, message));\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Lidgren/NetPeer.MessagePools.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Text;\n\nnamespace Lidgren.Network\n{\n\tpublic partial class NetPeer\n\t{\n\t\tprivate List<byte[]> m_storagePool; // sorted smallest to largest\n\t\tprivate NetQueue<NetOutgoingMessage> m_outgoingMessagesPool;\n\t\tprivate NetQueue<NetIncomingMessage> m_incomingMessagesPool;\n\n\t\tinternal int m_storagePoolBytes;\n\n\t\tprivate void InitializePools()\n\t\t{\n\t\t\tif (m_configuration.UseMessageRecycling)\n\t\t\t{\n\t\t\t\tm_storagePool = new List<byte[]>(16);\n\t\t\t\tm_outgoingMessagesPool = new NetQueue<NetOutgoingMessage>(4);\n\t\t\t\tm_incomingMessagesPool = new NetQueue<NetIncomingMessage>(4);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tm_storagePool = null;\n\t\t\t\tm_outgoingMessagesPool = null;\n\t\t\t\tm_incomingMessagesPool = null;\n\t\t\t}\n\t\t}\n\n\t\tinternal byte[] GetStorage(int minimumCapacity)\n\t\t{\n\t\t\tif (m_storagePool == null)\n\t\t\t\treturn new byte[minimumCapacity];\n\n\t\t\tlock (m_storagePool)\n\t\t\t{\n\t\t\t\tfor (int i = 0; i < m_storagePool.Count; i++)\n\t\t\t\t{\n\t\t\t\t\tbyte[] retval = m_storagePool[i];\n\t\t\t\t\tif (retval != null && retval.Length >= minimumCapacity)\n\t\t\t\t\t{\n\t\t\t\t\t\tm_storagePool[i] = null;\n\t\t\t\t\t\tm_storagePoolBytes -= retval.Length;\n\t\t\t\t\t\treturn retval;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tm_statistics.m_bytesAllocated += minimumCapacity;\n\t\t\treturn new byte[minimumCapacity];\n\t\t}\n\n\t\tinternal void Recycle(byte[] storage)\n\t\t{\n\t\t\tif (m_storagePool == null)\n\t\t\t\treturn;\n\n\t\t\tlock (m_storagePool)\n\t\t\t{\n\t\t\t\tm_storagePoolBytes += storage.Length;\n\t\t\t\tint cnt = m_storagePool.Count;\n\t\t\t\tfor (int i = 0; i < cnt; i++)\n\t\t\t\t{\n\t\t\t\t\tif (m_storagePool[i] == null)\n\t\t\t\t\t{\n\t\t\t\t\t\tm_storagePool[i] = storage;\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tm_storagePool.Add(storage);\n\t\t\t}\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Creates a new message for sending\n\t\t/// </summary>\n\t\tpublic NetOutgoingMessage CreateMessage()\n\t\t{\n\t\t\treturn CreateMessage(m_configuration.m_defaultOutgoingMessageCapacity);\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Creates a new message for sending and writes the provided string to it\n\t\t/// </summary>\n\t\tpublic NetOutgoingMessage CreateMessage(string content)\n\t\t{\n\t\t\tbyte[] bytes = Encoding.UTF8.GetBytes(content);\n\t\t\tNetOutgoingMessage om = CreateMessage(2 + bytes.Length);\n\t\t\tom.WriteVariableUInt32((uint)bytes.Length);\n\t\t\tom.Write(bytes);\n\t\t\treturn om;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Creates a new message for sending\n\t\t/// </summary>\n\t\t/// <param name=\"initialCapacity\">initial capacity in bytes</param>\n\t\tpublic NetOutgoingMessage CreateMessage(int initialCapacity)\n\t\t{\n\t\t\tNetOutgoingMessage retval;\n\t\t\tif (m_outgoingMessagesPool == null || !m_outgoingMessagesPool.TryDequeue(out retval))\n\t\t\t\tretval = new NetOutgoingMessage();\n\n\t\t\tbyte[] storage = GetStorage(initialCapacity);\n\t\t\tretval.m_data = storage;\n\n\t\t\treturn retval;\n\t\t}\n\n\t\tinternal NetIncomingMessage CreateIncomingMessage(NetIncomingMessageType tp, byte[] useStorageData)\n\t\t{\n\t\t\tNetIncomingMessage retval;\n\t\t\tif (m_incomingMessagesPool == null || !m_incomingMessagesPool.TryDequeue(out retval))\n\t\t\t\tretval = new NetIncomingMessage(tp);\n\t\t\telse\n\t\t\t\tretval.m_incomingMessageType = tp;\n\t\t\tretval.m_data = useStorageData;\n\t\t\treturn retval;\n\t\t}\n\n\t\tinternal NetIncomingMessage CreateIncomingMessage(NetIncomingMessageType tp, int minimumByteSize)\n\t\t{\n\t\t\tNetIncomingMessage retval;\n\t\t\tif (m_incomingMessagesPool == null || !m_incomingMessagesPool.TryDequeue(out retval))\n\t\t\t\tretval = new NetIncomingMessage(tp);\n\t\t\telse\n\t\t\t\tretval.m_incomingMessageType = tp;\n\t\t\tretval.m_data = GetStorage(minimumByteSize);\n\t\t\treturn retval;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Recycles a NetIncomingMessage instance for reuse; taking pressure off the garbage collector\n\t\t/// </summary>\n\t\tpublic void Recycle(NetIncomingMessage msg)\n\t\t{\n\t\t\tif (m_incomingMessagesPool == null)\n\t\t\t\treturn;\n#if DEBUG\n\t\t\tif (m_incomingMessagesPool.Contains(msg))\n\t\t\t\tthrow new NetException(\"Recyling already recycled message! Thread race?\");\n#endif\n\t\t\tbyte[] storage = msg.m_data;\n\t\t\tmsg.m_data = null;\n\t\t\tRecycle(storage);\n\t\t\tmsg.Reset();\n\t\t\tm_incomingMessagesPool.Enqueue(msg);\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Recycles a list of NetIncomingMessage instances for reuse; taking pressure off the garbage collector\n\t\t/// </summary>\n\t\tpublic void Recycle(IEnumerable<NetIncomingMessage> toRecycle)\n\t\t{\n\t\t\tif (m_incomingMessagesPool == null)\n\t\t\t\treturn;\n\n\t\t\t// first recycle the storage of each message\n\t\t\tif (m_storagePool != null)\n\t\t\t{\n\t\t\t\tlock (m_storagePool)\n\t\t\t\t{\n\t\t\t\t\tforeach (var msg in toRecycle)\n\t\t\t\t\t{\n\t\t\t\t\t\tvar storage = msg.m_data;\n\t\t\t\t\t\tmsg.m_data = null;\n\t\t\t\t\t\tm_storagePoolBytes += storage.Length;\n\t\t\t\t\t\tint cnt = m_storagePool.Count;\n\t\t\t\t\t\tfor (int i = 0; i < cnt; i++)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (m_storagePool[i] == null)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tm_storagePool[i] = storage;\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmsg.Reset();\n\t\t\t\t\t\tm_storagePool.Add(storage);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// then recycle the message objects\n\t\t\tm_incomingMessagesPool.Enqueue(toRecycle);\n\t\t}\n\n\t\tinternal void Recycle(NetOutgoingMessage msg)\n\t\t{\n\t\t\tif (m_outgoingMessagesPool == null)\n\t\t\t\treturn;\n#if DEBUG\n\t\t\tif (m_outgoingMessagesPool.Contains(msg))\n\t\t\t\tthrow new NetException(\"Recyling already recycled message! Thread race?\");\n#endif\n\n\t\t\tbyte[] storage = msg.m_data;\n\t\t\tmsg.m_data = null;\n\t\t\t\n\t\t\t// message fragments cannot be recycled\n\t\t\t// TODO: find a way to recycle large message after all fragments has been acknowledged; or? possibly better just to garbage collect them\n\t\t\tif (msg.m_fragmentGroup == 0)\n\t\t\t\tRecycle(storage);\n\t\n\t\t\tmsg.Reset();\n\t\t\tm_outgoingMessagesPool.Enqueue(msg);\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Creates an incoming message with the required capacity for releasing to the application\n\t\t/// </summary>\n\t\tinternal NetIncomingMessage CreateIncomingMessage(NetIncomingMessageType tp, string text)\n\t\t{\n\t\t\tNetIncomingMessage retval;\n\t\t\tif (string.IsNullOrEmpty(text))\n\t\t\t{\n\t\t\t\tretval = CreateIncomingMessage(tp, 1);\n\t\t\t\tretval.Write(\"\");\n\t\t\t\treturn retval;\n\t\t\t}\n\n\t\t\tint numBytes = System.Text.Encoding.UTF8.GetByteCount(text);\n\t\t\tretval = CreateIncomingMessage(tp, numBytes + (numBytes > 127 ? 2 : 1));\n\t\t\tretval.Write(text);\n\n\t\t\treturn retval;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Lidgren/NetPeer.Send.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Threading;\nusing System.Net;\n\nnamespace Lidgren.Network\n{\n\tpublic partial class NetPeer\n\t{\n\t\t/// <summary>\n\t\t/// Send a message to a specific connection\n\t\t/// </summary>\n\t\t/// <param name=\"msg\">The message to send</param>\n\t\t/// <param name=\"recipient\">The recipient connection</param>\n\t\t/// <param name=\"method\">How to deliver the message</param>\n\t\tpublic NetSendResult SendMessage(NetOutgoingMessage msg, NetConnection recipient, NetDeliveryMethod method)\n\t\t{\n\t\t\treturn SendMessage(msg, recipient, method, 0);\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Send a message to a specific connection\n\t\t/// </summary>\n\t\t/// <param name=\"msg\">The message to send</param>\n\t\t/// <param name=\"recipient\">The recipient connection</param>\n\t\t/// <param name=\"method\">How to deliver the message</param>\n\t\t/// <param name=\"sequenceChannel\">Sequence channel within the delivery method</param>\n\t\tpublic NetSendResult SendMessage(NetOutgoingMessage msg, NetConnection recipient, NetDeliveryMethod method, int sequenceChannel)\n\t\t{\n\t\t\tif (msg == null)\n\t\t\t\tthrow new ArgumentNullException(\"msg\");\n\t\t\tif (recipient == null)\n\t\t\t\tthrow new ArgumentNullException(\"recipient\");\n\t\t\tif (sequenceChannel >= NetConstants.NetChannelsPerDeliveryMethod)\n\t\t\t\tthrow new ArgumentOutOfRangeException(\"sequenceChannel\");\n\n\t\t\tNetException.Assert(\n\t\t\t\t((method != NetDeliveryMethod.Unreliable && method != NetDeliveryMethod.ReliableUnordered) ||\n\t\t\t\t((method == NetDeliveryMethod.Unreliable || method == NetDeliveryMethod.ReliableUnordered) && sequenceChannel == 0)),\n\t\t\t\t\"Delivery method \" + method + \" cannot use sequence channels other than 0!\"\n\t\t\t);\n\n\t\t\tNetException.Assert(method != NetDeliveryMethod.Unknown, \"Bad delivery method!\");\n\n\t\t\tif (msg.m_isSent)\n\t\t\t\tthrow new NetException(\"This message has already been sent! Use NetPeer.SendMessage() to send to multiple recipients efficiently\");\n\t\t\tmsg.m_isSent = true;\n\n\t\t\tint len = NetConstants.UnfragmentedMessageHeaderSize + msg.LengthBytes; // headers + length, faster than calling msg.GetEncodedSize\n\t\t\tif (len <= recipient.m_currentMTU)\n\t\t\t{\n\t\t\t\tInterlocked.Increment(ref msg.m_recyclingCount);\n\t\t\t\treturn recipient.EnqueueMessage(msg, method, sequenceChannel);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t// message must be fragmented!\n\t\t\t\tif (recipient.m_status != NetConnectionStatus.Connected)\n\t\t\t\t\treturn NetSendResult.FailedNotConnected;\n\t\t\t\tSendFragmentedMessage(msg, new NetConnection[] { recipient }, method, sequenceChannel);\n\t\t\t\treturn NetSendResult.Queued; // could be different for each connection; Queued is \"most true\"\n\t\t\t}\n\t\t}\n\n\t\tinternal int GetMTU(IList<NetConnection> recipients)\n\t\t{\n\t\t\tNetException.Assert(recipients.Count > 0);\n\n\t\t\tint mtu = int.MaxValue;\n\t\t\tforeach (NetConnection conn in recipients)\n\t\t\t{\n\t\t\t\tint cmtu = conn.m_currentMTU;\n\t\t\t\tif (cmtu < mtu)\n\t\t\t\t\tmtu = cmtu;\n\t\t\t}\n\t\t\treturn mtu;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Send a message to a list of connections\n\t\t/// </summary>\n\t\t/// <param name=\"msg\">The message to send</param>\n\t\t/// <param name=\"recipients\">The list of recipients to send to</param>\n\t\t/// <param name=\"method\">How to deliver the message</param>\n\t\t/// <param name=\"sequenceChannel\">Sequence channel within the delivery method</param>\n\t\tpublic void SendMessage(NetOutgoingMessage msg, List<NetConnection> recipients, NetDeliveryMethod method, int sequenceChannel)\n\t\t{\n\t\t\tif (msg == null)\n\t\t\t\tthrow new ArgumentNullException(\"msg\");\n\t\t\tif (recipients == null)\n\t\t\t\tthrow new ArgumentNullException(\"recipients\");\n\t\t\tif (recipients.Count < 1)\n\t\t\t\tthrow new NetException(\"recipients must contain at least one item\");\n\t\t\tif (method == NetDeliveryMethod.Unreliable || method == NetDeliveryMethod.ReliableUnordered)\n\t\t\t\tNetException.Assert(sequenceChannel == 0, \"Delivery method \" + method + \" cannot use sequence channels other than 0!\");\n\t\t\tif (msg.m_isSent)\n\t\t\t\tthrow new NetException(\"This message has already been sent! Use NetPeer.SendMessage() to send to multiple recipients efficiently\");\n\n\t\t\tint mtu = GetMTU(recipients);\n\n\t\t\tmsg.m_isSent = true;\n\n\t\t\tint len = msg.GetEncodedSize();\n\t\t\tif (len <= mtu)\n\t\t\t{\n\t\t\t\tInterlocked.Add(ref msg.m_recyclingCount, recipients.Count);\n\t\t\t\tforeach (NetConnection conn in recipients)\n\t\t\t\t{\n\t\t\t\t\tif (conn == null)\n\t\t\t\t\t{\n\t\t\t\t\t\tInterlocked.Decrement(ref msg.m_recyclingCount);\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tNetSendResult res = conn.EnqueueMessage(msg, method, sequenceChannel);\n\t\t\t\t\tif (res != NetSendResult.Queued && res != NetSendResult.Sent)\n\t\t\t\t\t\tInterlocked.Decrement(ref msg.m_recyclingCount);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t// message must be fragmented!\n\t\t\t\tSendFragmentedMessage(msg, recipients, method, sequenceChannel);\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Send a message to an unconnected host\n\t\t/// </summary>\n\t\tpublic void SendUnconnectedMessage(NetOutgoingMessage msg, string host, int port)\n\t\t{\n\t\t\tif (msg == null)\n\t\t\t\tthrow new ArgumentNullException(\"msg\");\n\t\t\tif (host == null)\n\t\t\t\tthrow new ArgumentNullException(\"host\");\n\t\t\tif (msg.m_isSent)\n\t\t\t\tthrow new NetException(\"This message has already been sent! Use NetPeer.SendMessage() to send to multiple recipients efficiently\");\n\t\t\tif (msg.LengthBytes > m_configuration.MaximumTransmissionUnit)\n\t\t\t\tthrow new NetException(\"Unconnected messages too long! Must be shorter than NetConfiguration.MaximumTransmissionUnit (currently \" + m_configuration.MaximumTransmissionUnit + \")\");\n\n\t\t\tIPAddress adr = NetUtility.Resolve(host);\n\t\t\tif (adr == null)\n\t\t\t\tthrow new NetException(\"Failed to resolve \" + host);\n\n\t\t\tmsg.m_messageType = NetMessageType.Unconnected;\n\t\t\tmsg.m_isSent = true;\n\n\t\t\tInterlocked.Increment(ref msg.m_recyclingCount);\n\t\t\tm_unsentUnconnectedMessages.Enqueue(new NetTuple<IPEndPoint, NetOutgoingMessage>(new IPEndPoint(adr, port), msg));\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Send a message to an unconnected host\n\t\t/// </summary>\n\t\tpublic void SendUnconnectedMessage(NetOutgoingMessage msg, IPEndPoint recipient)\n\t\t{\n\t\t\tif (msg == null)\n\t\t\t\tthrow new ArgumentNullException(\"msg\");\n\t\t\tif (recipient == null)\n\t\t\t\tthrow new ArgumentNullException(\"recipient\");\n\t\t\tif (msg.m_isSent)\n\t\t\t\tthrow new NetException(\"This message has already been sent! Use NetPeer.SendMessage() to send to multiple recipients efficiently\");\n\t\t\tif (msg.LengthBytes > m_configuration.MaximumTransmissionUnit)\n\t\t\t\tthrow new NetException(\"Unconnected messages too long! Must be shorter than NetConfiguration.MaximumTransmissionUnit (currently \" + m_configuration.MaximumTransmissionUnit + \")\");\n\n\t\t\tmsg.m_messageType = NetMessageType.Unconnected;\n\t\t\tmsg.m_isSent = true;\n\n\t\t\tInterlocked.Increment(ref msg.m_recyclingCount);\n\t\t\tm_unsentUnconnectedMessages.Enqueue(new NetTuple<IPEndPoint, NetOutgoingMessage>(recipient, msg));\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Send a message to an unconnected host\n\t\t/// </summary>\n\t\tpublic void SendUnconnectedMessage(NetOutgoingMessage msg, IList<IPEndPoint> recipients)\n\t\t{\n\t\t\tif (msg == null)\n\t\t\t\tthrow new ArgumentNullException(\"msg\");\n\t\t\tif (recipients == null)\n\t\t\t\tthrow new ArgumentNullException(\"recipients\");\n\t\t\tif (recipients.Count < 1)\n\t\t\t\tthrow new NetException(\"recipients must contain at least one item\");\n\t\t\tif (msg.m_isSent)\n\t\t\t\tthrow new NetException(\"This message has already been sent! Use NetPeer.SendMessage() to send to multiple recipients efficiently\");\n\t\t\tif (msg.LengthBytes > m_configuration.MaximumTransmissionUnit)\n\t\t\t\tthrow new NetException(\"Unconnected messages too long! Must be shorter than NetConfiguration.MaximumTransmissionUnit (currently \" + m_configuration.MaximumTransmissionUnit + \")\");\n\n\t\t\tmsg.m_messageType = NetMessageType.Unconnected;\n\t\t\tmsg.m_isSent = true;\n\n\t\t\tInterlocked.Add(ref msg.m_recyclingCount, recipients.Count);\n\t\t\tforeach(IPEndPoint ep in recipients)\n\t\t\t\tm_unsentUnconnectedMessages.Enqueue(new NetTuple<IPEndPoint, NetOutgoingMessage>(ep, msg));\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Send a message to this exact same netpeer (loopback)\n\t\t/// </summary>\n\t\tpublic void SendUnconnectedToSelf(NetOutgoingMessage msg)\n\t\t{\n\t\t\tif (msg == null)\n\t\t\t\tthrow new ArgumentNullException(\"msg\");\n\t\t\tif (msg.m_isSent)\n\t\t\t\tthrow new NetException(\"This message has already been sent! Use NetPeer.SendMessage() to send to multiple recipients efficiently\");\n\n\t\t\tmsg.m_messageType = NetMessageType.Unconnected;\n\t\t\tmsg.m_isSent = true;\n\n\t\t\tif (m_configuration.IsMessageTypeEnabled(NetIncomingMessageType.UnconnectedData) == false)\n\t\t\t\treturn; // dropping unconnected message since it's not enabled for receiving\n\n\t\t\tNetIncomingMessage om = CreateIncomingMessage(NetIncomingMessageType.UnconnectedData, msg.LengthBytes);\n\t\t\tom.m_isFragment = false;\n\t\t\tom.m_receiveTime = NetTime.Now;\n\t\t\tom.m_senderConnection = null;\n\t\t\tom.m_senderEndpoint = m_socket.LocalEndPoint as IPEndPoint;\n\t\t\tom.m_bitLength = msg.LengthBits;\n\n\t\t\tReleaseMessage(om);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Lidgren/NetPeer.cs",
    "content": "﻿using System;\nusing System.Threading;\nusing System.Collections.Generic;\nusing System.Net;\n\nnamespace Lidgren.Network\n{\n\t/// <summary>\n\t/// Represents a local peer capable of holding zero, one or more connections to remote peers\n\t/// </summary>\n\tpublic partial class NetPeer\n\t{\n\t\tprivate static int s_initializedPeersCount;\n\n\t\tprivate int m_listenPort;\n\t\tprivate object m_tag;\n\n\t\tinternal readonly List<NetConnection> m_connections;\n\t\tprivate readonly Dictionary<IPEndPoint, NetConnection> m_connectionLookup;\n\n\t\tprivate string m_shutdownReason;\n\n\t\t/// <summary>\n\t\t/// Gets the NetPeerStatus of the NetPeer\n\t\t/// </summary>\n\t\tpublic NetPeerStatus Status { get { return m_status; } }\n\n\t\t/// <summary>\n\t\t/// Signalling event which can be waited on to determine when a message is queued for reading.\n\t\t/// Note that there is no guarantee that after the event is signaled the blocked thread will \n\t\t/// find the message in the queue. Other user created threads could be preempted and dequeue \n\t\t/// the message before the waiting thread wakes up.\n\t\t/// </summary>\n\t\tpublic AutoResetEvent MessageReceivedEvent { get { return m_messageReceivedEvent; } }\n\n\t\t/// <summary>\n\t\t/// Gets a unique identifier for this NetPeer based on Mac address and ip/port. Note! Not available until Start() has been called!\n\t\t/// </summary>\n\t\tpublic long UniqueIdentifier { get { return m_uniqueIdentifier; } }\n\n\t\t/// <summary>\n\t\t/// Gets the port number this NetPeer is listening and sending on, if Start() has been called\n\t\t/// </summary>\n\t\tpublic int Port { get { return m_listenPort; } }\n\n\t\t/// <summary>\n\t\t/// Returns an UPnP object if enabled in the NetPeerConfiguration\n\t\t/// </summary>\n\t\tpublic NetUPnP UPnP { get { return m_upnp; } }\n\n\t\t/// <summary>\n\t\t/// Gets or sets the application defined object containing data about the peer\n\t\t/// </summary>\n\t\tpublic object Tag\n\t\t{\n\t\t\tget { return m_tag; }\n\t\t\tset { m_tag = value; }\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Gets a copy of the list of connections\n\t\t/// </summary>\n\t\tpublic List<NetConnection> Connections\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\tlock (m_connections)\n\t\t\t\t\treturn new List<NetConnection>(m_connections);\n\t\t\t}\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Gets the number of active connections\n\t\t/// </summary>\n\t\tpublic int ConnectionsCount\n\t\t{\n\t\t\tget { return m_connections.Count; }\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Statistics on this NetPeer since it was initialized\n\t\t/// </summary>\n\t\tpublic NetPeerStatistics Statistics\n\t\t{\n\t\t\tget { return m_statistics; }\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Gets the configuration used to instanciate this NetPeer\n\t\t/// </summary>\n\t\tpublic NetPeerConfiguration Configuration { get { return m_configuration; } }\n\n\t\t/// <summary>\n\t\t/// NetPeer constructor\n\t\t/// </summary>\n\t\tpublic NetPeer(NetPeerConfiguration config)\n\t\t{\n\t\t\tm_configuration = config;\n\t\t\tm_statistics = new NetPeerStatistics(this);\n\t\t\tm_releasedIncomingMessages = new NetQueue<NetIncomingMessage>(4);\n\t\t\tm_unsentUnconnectedMessages = new NetQueue<NetTuple<IPEndPoint, NetOutgoingMessage>>(2);\n\t\t\tm_connections = new List<NetConnection>();\n\t\t\tm_connectionLookup = new Dictionary<IPEndPoint, NetConnection>();\n\t\t\tm_handshakes = new Dictionary<IPEndPoint, NetConnection>();\n\t\t\tm_senderRemote = (EndPoint)new IPEndPoint(IPAddress.Any, 0);\n\t\t\tm_status = NetPeerStatus.NotRunning;\n\t\t\tm_receivedFragmentGroups = new Dictionary<NetConnection, Dictionary<int, ReceivedFragmentGroup>>();\t\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Binds to socket and spawns the networking thread\n\t\t/// </summary>\n\t\tpublic void Start()\n\t\t{\n\t\t\tif (m_status != NetPeerStatus.NotRunning)\n\t\t\t{\n\t\t\t\t// already running! Just ignore...\n\t\t\t\tLogWarning(\"Start() called on already running NetPeer - ignoring.\");\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tm_status = NetPeerStatus.Starting;\n\n\t\t\t// fix network thread name\n\t\t\tif (m_configuration.NetworkThreadName == \"Lidgren network thread\")\n\t\t\t{\n\t\t\t\tint pc = Interlocked.Increment(ref s_initializedPeersCount);\n\t\t\t\tm_configuration.NetworkThreadName = \"Lidgren network thread \" + pc.ToString();\n\t\t\t}\n\n\t\t\tInitializeNetwork();\n\t\t\t\n\t\t\t// start network thread\n\t\t\tm_networkThread = new Thread(new ThreadStart(NetworkLoop));\n\t\t\tm_networkThread.Name = m_configuration.NetworkThreadName;\n\t\t\tm_networkThread.IsBackground = true;\n\t\t\tm_networkThread.Start();\n\n\t\t\t// send upnp discovery\n\t\t\tif (m_upnp != null)\n\t\t\t\tm_upnp.Discover(this);\n\n\t\t\t// allow some time for network thread to start up in case they call Connect() or UPnP calls immediately\n\t\t\tThread.Sleep(50);\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Get the connection, if any, for a certain remote endpoint\n\t\t/// </summary>\n\t\tpublic NetConnection GetConnection(IPEndPoint ep)\n\t\t{\n\t\t\tNetConnection retval;\n\n\t\t\t// this should not pose a threading problem, m_connectionLookup is never added to concurrently\n\t\t\t// and TryGetValue will not throw an exception on fail, only yield null, which is acceptable\n\t\t\tm_connectionLookup.TryGetValue(ep, out retval);\n\n\t\t\treturn retval;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Read a pending message from any connection, blocking up to maxMillis if needed\n\t\t/// </summary>\n\t\tpublic NetIncomingMessage WaitMessage(int maxMillis)\n\t\t{\n\t\t\tvar msg = ReadMessage();\n\t\t\tif (msg != null)\n\t\t\t\treturn msg; // no need to wait; we already have a message to deliver\n\t\t\tif (m_messageReceivedEvent != null)\n\t\t\t\tm_messageReceivedEvent.WaitOne(maxMillis);\n\t\t\treturn ReadMessage();\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Read a pending message from any connection, if any\n\t\t/// </summary>\n\t\tpublic NetIncomingMessage ReadMessage()\n\t\t{\n\t\t\tNetIncomingMessage retval;\n\t\t\tif (m_releasedIncomingMessages.TryDequeue(out retval))\n\t\t\t{\n\t\t\t\tif (retval.MessageType == NetIncomingMessageType.StatusChanged)\n\t\t\t\t{\n\t\t\t\t\tNetConnectionStatus status = (NetConnectionStatus)retval.PeekByte();\n\t\t\t\t\tretval.SenderConnection.m_visibleStatus = status;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn retval;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Read a pending message from any connection, if any\n\t\t/// </summary>\n\t\tpublic int ReadMessages(IList<NetIncomingMessage> addTo)\n\t\t{\n\t\t\tint added = m_releasedIncomingMessages.TryDrain(addTo);\n\t\t\tif (added > 0)\n\t\t\t{\n\t\t\t\tfor (int i = 0; i < added; i++)\n\t\t\t\t{\n\t\t\t\t\tvar index = addTo.Count - added + i;\n\t\t\t\t\tvar nim = addTo[index];\n\t\t\t\t\tif (nim.MessageType == NetIncomingMessageType.StatusChanged)\n\t\t\t\t\t{\n\t\t\t\t\t\tNetConnectionStatus status = (NetConnectionStatus)nim.PeekByte();\n\t\t\t\t\t\tnim.SenderConnection.m_visibleStatus = status;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn added;\n\t\t}\n\n\t\t// send message immediately\n\t\tinternal void SendLibrary(NetOutgoingMessage msg, IPEndPoint recipient)\n\t\t{\n\t\t\tVerifyNetworkThread();\n\t\t\tNetException.Assert(msg.m_isSent == false);\n\n\t\t\tbool connReset;\n\t\t\tint len = msg.Encode(m_sendBuffer, 0, 0);\n\t\t\tSendPacket(len, recipient, 1, out connReset);\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Create a connection to a remote endpoint\n\t\t/// </summary>\n\t\tpublic NetConnection Connect(string host, int port)\n\t\t{\n\t\t\treturn Connect(new IPEndPoint(NetUtility.Resolve(host), port), null);\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Create a connection to a remote endpoint\n\t\t/// </summary>\n\t\tpublic NetConnection Connect(string host, int port, NetOutgoingMessage hailMessage)\n\t\t{\n\t\t\treturn Connect(new IPEndPoint(NetUtility.Resolve(host), port), hailMessage);\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Create a connection to a remote endpoint\n\t\t/// </summary>\n\t\tpublic NetConnection Connect(IPEndPoint remoteEndpoint)\n\t\t{\n\t\t\treturn Connect(remoteEndpoint, null);\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Create a connection to a remote endpoint\n\t\t/// </summary>\n\t\tpublic virtual NetConnection Connect(IPEndPoint remoteEndpoint, NetOutgoingMessage hailMessage)\n\t\t{\n\t\t\tif (remoteEndpoint == null)\n\t\t\t\tthrow new ArgumentNullException(\"remoteEndpoint\");\n\n\t\t\tlock (m_connections)\n\t\t\t{\n\t\t\t\tif (m_status == NetPeerStatus.NotRunning)\n\t\t\t\t\tthrow new NetException(\"Must call Start() first\");\n\n\t\t\t\tif (m_connectionLookup.ContainsKey(remoteEndpoint))\n\t\t\t\t\tthrow new NetException(\"Already connected to that endpoint!\");\n\n\t\t\t\tNetConnection hs;\n\t\t\t\tif (m_handshakes.TryGetValue(remoteEndpoint, out hs))\n\t\t\t\t{\n\t\t\t\t\t// already trying to connect to that endpoint; make another try\n\t\t\t\t\tswitch (hs.Status)\n\t\t\t\t\t{\n\t\t\t\t\t\tcase NetConnectionStatus.InitiatedConnect:\n\t\t\t\t\t\t\t// send another connect\n\t\t\t\t\t\t\ths.m_connectRequested = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase NetConnectionStatus.RespondedConnect:\n\t\t\t\t\t\t\t// send another response\n\t\t\t\t\t\t\ths.SendConnectResponse((float)NetTime.Now, false);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t// weird\n\t\t\t\t\t\t\tLogWarning(\"Weird situation; Connect() already in progress to remote endpoint; but hs status is \" + hs.Status);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\treturn hs;\n\t\t\t\t}\n\n\t\t\t\tNetConnection conn = new NetConnection(this, remoteEndpoint);\n\t\t\t\tconn.m_status = NetConnectionStatus.InitiatedConnect;\n\t\t\t\tconn.m_localHailMessage = hailMessage;\n\n\t\t\t\t// handle on network thread\n\t\t\t\tconn.m_connectRequested = true;\n\t\t\t\tconn.m_connectionInitiator = true;\n\n\t\t\t\tm_handshakes.Add(remoteEndpoint, conn);\n\n\t\t\t\treturn conn;\n\t\t\t}\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Send raw bytes; only used for debugging\n\t\t/// </summary>\n#if DEBUG\n\t\tpublic void RawSend(byte[] arr, int offset, int length, IPEndPoint destination)\n#else\n\t\tinternal void RawSend(byte[] arr, int offset, int length, IPEndPoint destination)\n#endif\n\t{\n\t\t\t// wrong thread - this miiiight crash with network thread... but what's a boy to do.\n\t\t\tArray.Copy(arr, offset, m_sendBuffer, 0, length);\n\t\t\tbool unused;\n\t\t\tSendPacket(length, destination, 1, out unused);\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Disconnects all active connections and closes the socket\n\t\t/// </summary>\n\t\tpublic void Shutdown(string bye)\n\t\t{\n\t\t\t// called on user thread\n\t\t\tif (m_socket == null)\n\t\t\t\treturn; // already shut down\n\n\t\t\tLogDebug(\"Shutdown requested\");\n\t\t\tm_shutdownReason = bye;\n\t\t\tm_status = NetPeerStatus.ShutdownRequested;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Lidgren/NetPeerConfiguration.cs",
    "content": "﻿/* Copyright (c) 2010 Michael Lidgren\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software\nand associated documentation files (the \"Software\"), to deal in the Software without\nrestriction, including without limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to permit persons to whom\nthe Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or\nsubstantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\nINCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR\nPURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\nUSE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\nusing System;\nusing System.Net;\n\nnamespace Lidgren.Network\n{\n\t/// <summary>\n\t/// Partly immutable after NetPeer has been initialized\n\t/// </summary>\n\tpublic sealed class NetPeerConfiguration\n\t{\n\t\tprivate const string c_isLockedMessage = \"You may not modify the NetPeerConfiguration after it has been used to initialize a NetPeer\";\n\n\t\tprivate bool m_isLocked;\n\t\tprivate readonly string m_appIdentifier;\n\t\tprivate string m_networkThreadName;\n\t\tprivate IPAddress m_localAddress;\n\t\tinternal bool m_acceptIncomingConnections;\n\t\tinternal int m_maximumConnections;\n\t\tinternal int m_defaultOutgoingMessageCapacity;\n\t\tinternal float m_pingInterval;\n\t\tinternal bool m_useMessageRecycling;\n\t\tinternal float m_connectionTimeout;\n\t\tinternal bool m_enableUPnP;\n\t\tinternal bool m_autoFlushSendQueue;\n\n\t\tinternal NetIncomingMessageType m_disabledTypes;\n\t\tinternal int m_port;\n\t\tinternal int m_receiveBufferSize;\n\t\tinternal int m_sendBufferSize;\n\t\tinternal float m_resendHandshakeInterval;\n\t\tinternal int m_maximumHandshakeAttempts;\n\n\t\t// bad network simulation\n\t\tinternal float m_loss;\n\t\tinternal float m_duplicates;\n\t\tinternal float m_minimumOneWayLatency;\n\t\tinternal float m_randomOneWayLatency;\n\n\t\t// MTU\n\t\tinternal int m_maximumTransmissionUnit;\n\t\tinternal bool m_autoExpandMTU;\n\t\tinternal float m_expandMTUFrequency;\n\t\tinternal int m_expandMTUFailAttempts;\n\n\t\t/// <summary>\n\t\t/// NetPeerConfiguration constructor\n\t\t/// </summary>\n\t\tpublic NetPeerConfiguration(string appIdentifier)\n\t\t{\n\t\t\tif (string.IsNullOrEmpty(appIdentifier))\n\t\t\t\tthrow new NetException(\"App identifier must be at least one character long\");\n\t\t\tm_appIdentifier = appIdentifier.ToString(System.Globalization.CultureInfo.InvariantCulture);\n\n\t\t\t//\n\t\t\t// default values\n\t\t\t//\n\t\t\tm_disabledTypes = NetIncomingMessageType.ConnectionApproval | NetIncomingMessageType.UnconnectedData | NetIncomingMessageType.VerboseDebugMessage | NetIncomingMessageType.ConnectionLatencyUpdated;\n\t\t\tm_networkThreadName = \"Lidgren network thread\";\n\t\t\tm_localAddress = IPAddress.Any;\n\t\t\tm_port = 0;\n\t\t\tm_receiveBufferSize = 131071;\n\t\t\tm_sendBufferSize = 131071;\n\t\t\tm_acceptIncomingConnections = false;\n\t\t\tm_maximumConnections = 32;\n\t\t\tm_defaultOutgoingMessageCapacity = 16;\n\t\t\tm_pingInterval = 4.0f;\n\t\t\tm_connectionTimeout = 25.0f;\n\t\t\tm_useMessageRecycling = true;\n\t\t\tm_resendHandshakeInterval = 3.0f;\n\t\t\tm_maximumHandshakeAttempts = 5;\n\t\t\tm_autoFlushSendQueue = true;\n\n\t\t\t// Maximum transmission unit\n\t\t\t// Ethernet can take 1500 bytes of payload, so lets stay below that.\n\t\t\t// The aim is for a max full packet to be 1440 bytes (30 x 48 bytes, lower than 1468)\n\t\t\t// -20 bytes IP header\n\t\t\t//  -8 bytes UDP header\n\t\t\t//  -4 bytes to be on the safe side and align to 8-byte boundary\n\t\t\t// Total 1408 bytes\n\t\t\t// Note that lidgren headers (5 bytes) are not included here; since it's part of the \"mtu payload\"\n\t\t\tm_maximumTransmissionUnit = 1408;\n\t\t\tm_autoExpandMTU = false;\n\t\t\tm_expandMTUFrequency = 2.0f;\n\t\t\tm_expandMTUFailAttempts = 5;\n\n\t\t\tm_loss = 0.0f;\n\t\t\tm_minimumOneWayLatency = 0.0f;\n\t\t\tm_randomOneWayLatency = 0.0f;\n\t\t\tm_duplicates = 0.0f;\n\n\t\t\tm_isLocked = false;\n\t\t}\n\n\t\tinternal void Lock()\n\t\t{\n\t\t\tm_isLocked = true;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Gets the identifier of this application; the library can only connect to matching app identifier peers\n\t\t/// </summary>\n\t\tpublic string AppIdentifier\n\t\t{\n\t\t\tget { return m_appIdentifier; }\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Enables receiving of the specified type of message\n\t\t/// </summary>\n\t\tpublic void EnableMessageType(NetIncomingMessageType type)\n\t\t{\n\t\t\tm_disabledTypes &= (~type);\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Disables receiving of the specified type of message\n\t\t/// </summary>\n\t\tpublic void DisableMessageType(NetIncomingMessageType type)\n\t\t{\n\t\t\tm_disabledTypes |= type;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Enables or disables receiving of the specified type of message\n\t\t/// </summary>\n\t\tpublic void SetMessageTypeEnabled(NetIncomingMessageType type, bool enabled)\n\t\t{\n\t\t\tif (enabled)\n\t\t\t\tm_disabledTypes &= (~type);\n\t\t\telse\n\t\t\t\tm_disabledTypes |= type;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Gets if receiving of the specified type of message is enabled\n\t\t/// </summary>\n\t\tpublic bool IsMessageTypeEnabled(NetIncomingMessageType type)\n\t\t{\n\t\t\treturn !((m_disabledTypes & type) == type);\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Gets or sets the name of the library network thread. Cannot be changed once NetPeer is initialized.\n\t\t/// </summary>\n\t\tpublic string NetworkThreadName\n\t\t{\n\t\t\tget { return m_networkThreadName; }\n\t\t\tset\n\t\t\t{\n\t\t\t\tif (m_isLocked)\n\t\t\t\t\tthrow new NetException(\"NetworkThreadName may not be set after the NetPeer which uses the configuration has been started\");\n\t\t\t\tm_networkThreadName = value;\n\t\t\t}\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Gets or sets the maximum amount of connections this peer can hold. Cannot be changed once NetPeer is initialized.\n\t\t/// </summary>\n\t\tpublic int MaximumConnections\n\t\t{\n\t\t\tget { return m_maximumConnections; }\n\t\t\tset\n\t\t\t{\n\t\t\t\tif (m_isLocked)\n\t\t\t\t\tthrow new NetException(c_isLockedMessage);\n\t\t\t\tm_maximumConnections = value;\n\t\t\t}\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Gets or sets the maximum amount of bytes to send in a single packet, excluding ip, udp and lidgren headers. Cannot be changed once NetPeer is initialized.\n\t\t/// </summary>\n\t\tpublic int MaximumTransmissionUnit\n\t\t{\n\t\t\tget { return m_maximumTransmissionUnit; }\n\t\t\tset\n\t\t\t{\n\t\t\t\tif (m_isLocked)\n\t\t\t\t\tthrow new NetException(c_isLockedMessage);\n\t\t\t\tif (value < 1 || value >= ((ushort.MaxValue + 1) / 8))\n\t\t\t\t\tthrow new NetException(\"MaximumTransmissionUnit must be between 1 and \" + (((ushort.MaxValue + 1) / 8) - 1) + \" bytes\");\n\t\t\t\tm_maximumTransmissionUnit = value;\n\t\t\t}\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Gets or sets the default capacity in bytes when NetPeer.CreateMessage() is called without argument\n\t\t/// </summary>\n\t\tpublic int DefaultOutgoingMessageCapacity\n\t\t{\n\t\t\tget { return m_defaultOutgoingMessageCapacity; }\n\t\t\tset { m_defaultOutgoingMessageCapacity = value; }\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Gets or sets the time between latency calculating pings\n\t\t/// </summary>\n\t\tpublic float PingInterval\n\t\t{\n\t\t\tget { return m_pingInterval; }\n\t\t\tset { m_pingInterval = value; }\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Gets or sets if the library should recycling messages to avoid excessive garbage collection. Cannot be changed once NetPeer is initialized.\n\t\t/// </summary>\n\t\tpublic bool UseMessageRecycling\n\t\t{\n\t\t\tget { return m_useMessageRecycling; }\n\t\t\tset\n\t\t\t{\n\t\t\t\tif (m_isLocked)\n\t\t\t\t\tthrow new NetException(c_isLockedMessage);\n\t\t\t\tm_useMessageRecycling = value;\n\t\t\t}\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Gets or sets the number of seconds timeout will be postponed on a successful ping/pong\n\t\t/// </summary>\n\t\tpublic float ConnectionTimeout\n\t\t{\n\t\t\tget { return m_connectionTimeout; }\n\t\t\tset\n\t\t\t{\n\t\t\t\tif (value < m_pingInterval)\n\t\t\t\t\tthrow new NetException(\"Connection timeout cannot be lower than ping interval!\");\n\t\t\t\tm_connectionTimeout = value;\n\t\t\t}\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Enables UPnP support; enabling port forwarding and getting external ip\n\t\t/// </summary>\n\t\tpublic bool EnableUPnP\n\t\t{\n\t\t\tget { return m_enableUPnP; }\n\t\t\tset\n\t\t\t{\n\t\t\t\tif (m_isLocked)\n\t\t\t\t\tthrow new NetException(c_isLockedMessage);\n\t\t\t\tm_enableUPnP = value;\n\t\t\t}\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Enables or disables automatic flushing of the send queue. If disabled, you must manully call NetPeer.FlushSendQueue() to flush sent messages to network.\n\t\t/// </summary>\n\t\tpublic bool AutoFlushSendQueue\n\t\t{\n\t\t\tget { return m_autoFlushSendQueue; }\n\t\t\tset { m_autoFlushSendQueue = value; }\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Gets or sets the local ip address to bind to. Defaults to IPAddress.Any. Cannot be changed once NetPeer is initialized.\n\t\t/// </summary>\n\t\tpublic IPAddress LocalAddress\n\t\t{\n\t\t\tget { return m_localAddress; }\n\t\t\tset\n\t\t\t{\n\t\t\t\tif (m_isLocked)\n\t\t\t\t\tthrow new NetException(c_isLockedMessage);\n\t\t\t\tm_localAddress = value;\n\t\t\t}\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Gets or sets the local port to bind to. Defaults to 0. Cannot be changed once NetPeer is initialized.\n\t\t/// </summary>\n\t\tpublic int Port\n\t\t{\n\t\t\tget { return m_port; }\n\t\t\tset\n\t\t\t{\n\t\t\t\tif (m_isLocked)\n\t\t\t\t\tthrow new NetException(c_isLockedMessage);\n\t\t\t\tm_port = value;\n\t\t\t}\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Gets or sets the size in bytes of the receiving buffer. Defaults to 131071 bytes. Cannot be changed once NetPeer is initialized.\n\t\t/// </summary>\n\t\tpublic int ReceiveBufferSize\n\t\t{\n\t\t\tget { return m_receiveBufferSize; }\n\t\t\tset\n\t\t\t{\n\t\t\t\tif (m_isLocked)\n\t\t\t\t\tthrow new NetException(c_isLockedMessage);\n\t\t\t\tm_receiveBufferSize = value;\n\t\t\t}\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Gets or sets the size in bytes of the sending buffer. Defaults to 131071 bytes. Cannot be changed once NetPeer is initialized.\n\t\t/// </summary>\n\t\tpublic int SendBufferSize\n\t\t{\n\t\t\tget { return m_sendBufferSize; }\n\t\t\tset\n\t\t\t{\n\t\t\t\tif (m_isLocked)\n\t\t\t\t\tthrow new NetException(c_isLockedMessage);\n\t\t\t\tm_sendBufferSize = value;\n\t\t\t}\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Gets or sets if the NetPeer should accept incoming connections. This is automatically set to true in NetServer and false in NetClient.\n\t\t/// </summary>\n\t\tpublic bool AcceptIncomingConnections\n\t\t{\n\t\t\tget { return m_acceptIncomingConnections; }\n\t\t\tset { m_acceptIncomingConnections = value; }\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Gets or sets the number of seconds between handshake attempts\n\t\t/// </summary>\n\t\tpublic float ResendHandshakeInterval\n\t\t{\n\t\t\tget { return m_resendHandshakeInterval; }\n\t\t\tset { m_resendHandshakeInterval = value; }\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Gets or sets the maximum number of handshake attempts before failing to connect\n\t\t/// </summary>\n\t\tpublic int MaximumHandshakeAttempts\n\t\t{\n\t\t\tget { return m_maximumHandshakeAttempts; }\n\t\t\tset\n\t\t\t{\n\t\t\t\tif (value < 1)\n\t\t\t\t\tthrow new NetException(\"MaximumHandshakeAttempts must be at least 1\");\n\t\t\t\tm_maximumHandshakeAttempts = value;\n\t\t\t}\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Gets or sets if the NetPeer should send large messages to try to expand the maximum transmission unit size\n\t\t/// </summary>\n\t\tpublic bool AutoExpandMTU\n\t\t{\n\t\t\tget { return m_autoExpandMTU; }\n\t\t\tset\n\t\t\t{\n\t\t\t\tif (m_isLocked)\n\t\t\t\t\tthrow new NetException(c_isLockedMessage);\n\t\t\t\tm_autoExpandMTU = value;\n\t\t\t}\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Gets or sets how often to send large messages to expand MTU if AutoExpandMTU is enabled\n\t\t/// </summary>\n\t\tpublic float ExpandMTUFrequency\n\t\t{\n\t\t\tget { return m_expandMTUFrequency; }\n\t\t\tset { m_expandMTUFrequency = value; }\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Gets or sets the number of failed expand mtu attempts to perform before setting final MTU\n\t\t/// </summary>\n\t\tpublic int ExpandMTUFailAttempts\n\t\t{\n\t\t\tget { return m_expandMTUFailAttempts; }\n\t\t\tset { m_expandMTUFailAttempts = value; }\n\t\t}\n\n#if DEBUG\n\t\t/// <summary>\n\t\t/// Gets or sets the simulated amount of sent packets lost from 0.0f to 1.0f\n\t\t/// </summary>\n\t\tpublic float SimulatedLoss\n\t\t{\n\t\t\tget { return m_loss; }\n\t\t\tset { m_loss = value; }\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Gets or sets the minimum simulated amount of one way latency for sent packets in seconds\n\t\t/// </summary>\n\t\tpublic float SimulatedMinimumLatency\n\t\t{\n\t\t\tget { return m_minimumOneWayLatency; }\n\t\t\tset { m_minimumOneWayLatency = value; }\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Gets or sets the simulated added random amount of one way latency for sent packets in seconds\n\t\t/// </summary>\n\t\tpublic float SimulatedRandomLatency\n\t\t{\n\t\t\tget { return m_randomOneWayLatency; }\n\t\t\tset { m_randomOneWayLatency = value; }\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Gets the average simulated one way latency in seconds\n\t\t/// </summary>\n\t\tpublic float SimulatedAverageLatency\n\t\t{\n\t\t\tget { return m_minimumOneWayLatency + (m_randomOneWayLatency * 0.5f); }\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Gets or sets the simulated amount of duplicated packets from 0.0f to 1.0f\n\t\t/// </summary>\n\t\tpublic float SimulatedDuplicatesChance\n\t\t{\n\t\t\tget { return m_duplicates; }\n\t\t\tset { m_duplicates = value; }\n\t\t}\n#endif\n\n\t\t/// <summary>\n\t\t/// Creates a memberwise shallow clone of this configuration\n\t\t/// </summary>\n\t\tpublic NetPeerConfiguration Clone()\n\t\t{\n\t\t\tNetPeerConfiguration retval = this.MemberwiseClone() as NetPeerConfiguration;\n\t\t\tretval.m_isLocked = false;\n\t\t\treturn retval;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Lidgren/NetPeerStatistics.cs",
    "content": "﻿/* Copyright (c) 2010 Michael Lidgren\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software\nand associated documentation files (the \"Software\"), to deal in the Software without\nrestriction, including without limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to permit persons to whom\nthe Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or\nsubstantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\nINCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR\nPURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\nUSE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n// Uncomment the line below to get statistics in RELEASE builds\n//#define USE_RELEASE_STATISTICS\n\nusing System;\nusing System.Text;\nusing System.Diagnostics;\n\nnamespace Lidgren.Network\n{\n\t/// <summary>\n\t/// Statistics for a NetPeer instance\n\t/// </summary>\n\tpublic sealed class NetPeerStatistics\n\t{\n\t\tprivate readonly NetPeer m_peer;\n\n\t\tinternal int m_sentPackets;\n\t\tinternal int m_receivedPackets;\n\n\t\tinternal int m_sentMessages;\n\t\tinternal int m_receivedMessages;\n\n\t\tinternal int m_sentBytes;\n\t\tinternal int m_receivedBytes;\n\n\t\tinternal long m_bytesAllocated;\n\n\t\tinternal NetPeerStatistics(NetPeer peer)\n\t\t{\n\t\t\tm_peer = peer;\n\t\t\tReset();\n\t\t}\n\n\t\tinternal void Reset()\n\t\t{\n\t\t\tm_sentPackets = 0;\n\t\t\tm_receivedPackets = 0;\n\n\t\t\tm_sentMessages = 0;\n\t\t\tm_receivedMessages = 0;\n\n\t\t\tm_sentBytes = 0;\n\t\t\tm_receivedBytes = 0;\n\n\t\t\tm_bytesAllocated = 0;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Gets the number of sent packets since the NetPeer was initialized\n\t\t/// </summary>\n\t\tpublic int SentPackets { get { return m_sentPackets; } }\n\n\t\t/// <summary>\n\t\t/// Gets the number of received packets since the NetPeer was initialized\n\t\t/// </summary>\n\t\tpublic int ReceivedPackets { get { return m_receivedPackets; } }\n\n\t\t/// <summary>\n\t\t/// Gets the number of sent messages since the NetPeer was initialized\n\t\t/// </summary>\n\t\tpublic int SentMessages { get { return m_sentMessages; } }\n\n\t\t/// <summary>\n\t\t/// Gets the number of received messages since the NetPeer was initialized\n\t\t/// </summary>\n\t\tpublic int ReceivedMessages { get { return m_receivedMessages; } }\n\n\t\t/// <summary>\n\t\t/// Gets the number of sent bytes since the NetPeer was initialized\n\t\t/// </summary>\n\t\tpublic int SentBytes { get { return m_sentBytes; } }\n\n\t\t/// <summary>\n\t\t/// Gets the number of received bytes since the NetPeer was initialized\n\t\t/// </summary>\n\t\tpublic int ReceivedBytes { get { return m_receivedBytes; } }\n\n\t\t/// <summary>\n\t\t/// Gets the number of bytes allocated (and possibly garbage collected) for message storage\n\t\t/// </summary>\n\t\tpublic long StorageBytesAllocated { get { return m_bytesAllocated; } }\n\n\t\t/// <summary>\n\t\t/// Gets the number of bytes in the recycled pool\n\t\t/// </summary>\n\t\tpublic int BytesInRecyclePool { get { return m_peer.m_storagePoolBytes; } }\n\n#if USE_RELEASE_STATISTICS\n\t\tinternal void PacketSent(int numBytes, int numMessages)\n\t\t{\n\t\t\tm_sentPackets++;\n\t\t\tm_sentBytes += numBytes;\n\t\t\tm_sentMessages += numMessages;\n\t\t}\n#else\n\t\t[Conditional(\"DEBUG\")]\n\t\tinternal void PacketSent(int numBytes, int numMessages)\n\t\t{\n\t\t\tm_sentPackets++;\n\t\t\tm_sentBytes += numBytes;\n\t\t\tm_sentMessages += numMessages;\n\t\t}\n#endif\n\n#if USE_RELEASE_STATISTICS\n\t\tinternal void PacketReceived(int numBytes, int numMessages)\n\t\t{\n\t\t\tm_receivedPackets++;\n\t\t\tm_receivedBytes += numBytes;\n\t\t\tm_receivedMessages += numMessages;\n\t\t}\n#else\n\t\t[Conditional(\"DEBUG\")]\n\t\tinternal void PacketReceived(int numBytes, int numMessages)\n\t\t{\n\t\t\tm_receivedPackets++;\n\t\t\tm_receivedBytes += numBytes;\n\t\t\tm_receivedMessages += numMessages;\n\t\t}\n#endif\n\n\t\t/// <summary>\n\t\t/// Returns a string that represents this object\n\t\t/// </summary>\n\t\tpublic override string ToString()\n\t\t{\n\t\t\tStringBuilder bdr = new StringBuilder();\n\t\t\tbdr.AppendLine(m_peer.ConnectionsCount.ToString() + \" connections\");\n#if DEBUG || USE_RELEASE_STATISTICS\n\t\t\tbdr.AppendLine(\"Sent \" + m_sentBytes + \" bytes in \" + m_sentMessages + \" messages in \" + m_sentPackets + \" packets\");\n\t\t\tbdr.AppendLine(\"Received \" + m_receivedBytes + \" bytes in \" + m_receivedMessages + \" messages in \" + m_receivedPackets + \" packets\");\n#else\n\t\t\tbdr.AppendLine(\"Sent (n/a) bytes in (n/a) messages in (n/a) packets\");\n\t\t\tbdr.AppendLine(\"Received (n/a) bytes in (n/a) messages in (n/a) packets\");\n#endif\n\t\t\tbdr.AppendLine(\"Storage allocated \" + m_bytesAllocated + \" bytes\");\n\t\t\tbdr.AppendLine(\"Recycled pool \" + m_peer.m_storagePoolBytes + \" bytes\");\n\t\t\treturn bdr.ToString();\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Lidgren/NetPeerStatus.cs",
    "content": "﻿/* Copyright (c) 2010 Michael Lidgren\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software\nand associated documentation files (the \"Software\"), to deal in the Software without\nrestriction, including without limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to permit persons to whom\nthe Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or\nsubstantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\nINCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR\nPURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\nUSE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\nusing System;\n\nnamespace Lidgren.Network\n{\n\t/// <summary>\n\t/// Status for a NetPeer instance\n\t/// </summary>\n\tpublic enum NetPeerStatus\n\t{\n\t\t/// <summary>\n\t\t/// NetPeer is not running; socket is not bound\n\t\t/// </summary>\n\t\tNotRunning = 0,\n\n\t\t/// <summary>\n\t\t/// NetPeer is in the process of starting up\n\t\t/// </summary>\n\t\tStarting = 1,\n\n\t\t/// <summary>\n\t\t/// NetPeer is bound to socket and listening for packets\n\t\t/// </summary>\n\t\tRunning = 2,\n\n\t\t/// <summary>\n\t\t/// Shutdown has been requested and will be executed shortly\n\t\t/// </summary>\n\t\tShutdownRequested = 3,\n\t}\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Lidgren/NetQueue.cs",
    "content": "﻿/* Copyright (c) 2010 Michael Lidgren\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software\nand associated documentation files (the \"Software\"), to deal in the Software without\nrestriction, including without limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to permit persons to whom\nthe Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or\nsubstantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\nINCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR\nPURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\nUSE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\nusing System;\nusing System.Diagnostics;\nusing System.Collections.Generic;\n\n// @TODO: examine performance characteristics of using SpinLock when using .Net 4.0\n\nnamespace Lidgren.Network\n{\n\t/// <summary>\n\t/// Thread safe (blocking) expanding queue with TryDequeue() and EnqueueFirst()\n\t/// </summary>\n\t[DebuggerDisplay(\"Count={Count} Capacity={Capacity}\")]\n\tpublic sealed class NetQueue<T>\n\t{\n\t\t// Example:\n\t\t// m_capacity = 8\n\t\t// m_size = 6\n\t\t// m_head = 4\n\t\t//\n\t\t// [0] item\n\t\t// [1] item (tail = ((head + size - 1) % capacity)\n\t\t// [2] \n\t\t// [3] \n\t\t// [4] item (head)\n\t\t// [5] item\n\t\t// [6] item \n\t\t// [7] item\n\t\t//\n\t\tprivate T[] m_items;\n\t\tprivate readonly object m_lock;\n\t\tprivate int m_size;\n\t\tprivate int m_head;\n\n\t\t/// <summary>\n\t\t/// Gets the number of items in the queue\n\t\t/// </summary>\n\t\tpublic int Count { get { return m_size; } }\n\n\t\t/// <summary>\n\t\t/// Gets the current capacity for the queue\n\t\t/// </summary>\n\t\tpublic int Capacity { get { return m_items.Length; } }\n\n\t\t/// <summary>\n\t\t/// NetQueue constructor\n\t\t/// </summary>\n\t\tpublic NetQueue(int initialCapacity)\n\t\t{\n\t\t\tm_lock = new object();\n\t\t\tm_items = new T[initialCapacity];\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Adds an item last/tail of the queue\n\t\t/// </summary>\n\t\tpublic void Enqueue(T item)\n\t\t{\n\t\t\tlock (m_lock)\n\t\t\t{\n\t\t\t\tif (m_size == m_items.Length)\n\t\t\t\t\tSetCapacity(m_items.Length + 8);\n\n\t\t\t\tint slot = (m_head + m_size) % m_items.Length;\n\t\t\t\tm_items[slot] = item;\n\t\t\t\tm_size++;\n\t\t\t}\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Adds an item last/tail of the queue\n\t\t/// </summary>\n\t\tpublic void Enqueue(IEnumerable<T> items)\n\t\t{\n\t\t\tlock (m_lock)\n\t\t\t{\n\t\t\t\tforeach (var item in items)\n\t\t\t\t{\n\t\t\t\t\tif (m_size == m_items.Length)\n\t\t\t\t\t\tSetCapacity(m_items.Length + 8); // @TODO move this out of loop\n\n\t\t\t\t\tint slot = (m_head + m_size) % m_items.Length;\n\t\t\t\t\tm_items[slot] = item;\n\t\t\t\t\tm_size++;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Places an item first, at the head of the queue\n\t\t/// </summary>\n\t\tpublic void EnqueueFirst(T item)\n\t\t{\n\t\t\tlock (m_lock)\n\t\t\t{\n\t\t\t\tif (m_size >= m_items.Length)\n\t\t\t\t\tSetCapacity(m_items.Length + 8);\n\n\t\t\t\tm_head--;\n\t\t\t\tif (m_head < 0)\n\t\t\t\t\tm_head = m_items.Length - 1;\n\t\t\t\tm_items[m_head] = item;\n\t\t\t\tm_size++;\n\t\t\t}\n\t\t}\n\n\t\t// must be called from within a lock(m_lock) !\n\t\tprivate void SetCapacity(int newCapacity)\n\t\t{\n\t\t\tif (m_size == 0)\n\t\t\t{\n\t\t\t\tif (m_size == 0)\n\t\t\t\t{\n\t\t\t\t\tm_items = new T[newCapacity];\n\t\t\t\t\tm_head = 0;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tT[] newItems = new T[newCapacity];\n\n\t\t\tif (m_head + m_size - 1 < m_items.Length)\n\t\t\t{\n\t\t\t\tArray.Copy(m_items, m_head, newItems, 0, m_size);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tArray.Copy(m_items, m_head, newItems, 0, m_items.Length - m_head);\n\t\t\t\tArray.Copy(m_items, 0, newItems, m_items.Length - m_head, (m_size - (m_items.Length - m_head)));\n\t\t\t}\n\n\t\t\tm_items = newItems;\n\t\t\tm_head = 0;\n\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Gets an item from the head of the queue, or returns default(T) if empty\n\t\t/// </summary>\n\t\tpublic bool TryDequeue(out T item)\n\t\t{\n\t\t\tif (m_size == 0)\n\t\t\t{\n\t\t\t\titem = default(T);\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tlock (m_lock)\n\t\t\t{\n\t\t\t\tif (m_size == 0)\n\t\t\t\t{\n\t\t\t\t\titem = default(T);\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\titem = m_items[m_head];\n\t\t\t\tm_items[m_head] = default(T);\n\n\t\t\t\tm_head = (m_head + 1) % m_items.Length;\n\t\t\t\tm_size--;\n\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Gets an item from the head of the queue, or returns default(T) if empty\n\t\t/// </summary>\n\t\tpublic int TryDrain(IList<T> addTo)\n\t\t{\n\t\t\tif (m_size == 0)\n\t\t\t\treturn 0;\n\n\t\t\tlock (m_lock)\n\t\t\t{\n\t\t\t\tint added = m_size;\n\t\t\t\twhile (m_size > 0)\n\t\t\t\t{\n\t\t\t\t\tvar item = m_items[m_head];\n\t\t\t\t\taddTo.Add(item);\n\n\t\t\t\t\tm_items[m_head] = default(T);\n\t\t\t\t\tm_head = (m_head + 1) % m_items.Length;\n\t\t\t\t\tm_size--;\n\t\t\t\t}\n\t\t\t\treturn added;\n\t\t\t}\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Returns default(T) if queue is empty\n\t\t/// </summary>\n\t\tpublic T TryPeek(int offset)\n\t\t{\n\t\t\tif (m_size == 0)\n\t\t\t\treturn default(T);\n\n\t\t\tlock (m_lock)\n\t\t\t{\n\t\t\t\tif (m_size == 0)\n\t\t\t\t\treturn default(T);\n\t\t\t\treturn m_items[(m_head + offset) % m_items.Length];\n\t\t\t}\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Determines whether an item is in the queue\n\t\t/// </summary>\n\t\tpublic bool Contains(T item)\n\t\t{\n\t\t\tlock (m_lock)\n\t\t\t{\n\t\t\t\tint ptr = m_head;\n\t\t\t\tfor (int i = 0; i < m_size; i++)\n\t\t\t\t{\n\t\t\t\t\tif (m_items[ptr] == null)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (item == null)\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tif (m_items[ptr].Equals(item))\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\tptr = (ptr + 1) % m_items.Length;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Copies the queue items to a new array\n\t\t/// </summary>\n\t\tpublic T[] ToArray()\n\t\t{\n\t\t\tlock (m_lock)\n\t\t\t{\n\t\t\t\tT[] retval = new T[m_size];\n\t\t\t\tint ptr = m_head;\n\t\t\t\tfor (int i = 0; i < m_size; i++)\n\t\t\t\t{\n\t\t\t\t\tretval[i] = m_items[ptr++];\n\t\t\t\t\tif (ptr >= m_items.Length)\n\t\t\t\t\t\tptr = 0;\n\t\t\t\t}\n\t\t\t\treturn retval;\n\t\t\t}\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Removes all objects from the queue\n\t\t/// </summary>\n\t\tpublic void Clear()\n\t\t{\n\t\t\tlock (m_lock)\n\t\t\t{\n\t\t\t\tfor (int i = 0; i < m_items.Length; i++)\n\t\t\t\t\tm_items[i] = default(T);\n\t\t\t\tm_head = 0;\n\t\t\t\tm_size = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Lidgren/NetRandom.cs",
    "content": "﻿using System;\n\nnamespace Lidgren.Network\n{\n\t/// <summary>\n\t/// A fast random number generator for .NET\n\t/// Colin Green, January 2005\n\t/// </summary>\n\t/// September 4th 2005\n\t///\t Added NextBytesUnsafe() - commented out by default.\n\t///\t Fixed bug in Reinitialise() - y,z and w variables were not being reset.\n\t/// \n\t/// Key points:\n\t///  1) Based on a simple and fast xor-shift pseudo random number generator (RNG) specified in: \n\t///  Marsaglia, George. (2003). Xorshift RNGs.\n\t///  http://www.jstatsoft.org/v08/i14/xorshift.pdf\n\t///  \n\t///  This particular implementation of xorshift has a period of 2^128-1. See the above paper to see\n\t///  how this can be easily extened if you need a longer period. At the time of writing I could find no \n\t///  information on the period of System.Random for comparison.\n\t/// \n\t///  2) Faster than System.Random. Up to 8x faster, depending on which methods are called.\n\t/// \n\t///  3) Direct replacement for System.Random. This class implements all of the methods that System.Random \n\t///  does plus some additional methods. The like named methods are functionally equivalent.\n\t///  \n\t///  4) Allows fast re-initialisation with a seed, unlike System.Random which accepts a seed at construction\n\t///  time which then executes a relatively expensive initialisation routine. This provides a vast speed improvement\n\t///  if you need to reset the pseudo-random number sequence many times, e.g. if you want to re-generate the same\n\t///  sequence many times. An alternative might be to cache random numbers in an array, but that approach is limited\n\t///  by memory capacity and the fact that you may also want a large number of different sequences cached. Each sequence\n\t///  can each be represented by a single seed value (int) when using FastRandom.\n\t///  \n\t///  Notes.\n\t///  A further performance improvement can be obtained by declaring local variables as static, thus avoiding \n\t///  re-allocation of variables on each call. However care should be taken if multiple instances of\n\t///  FastRandom are in use or if being used in a multi-threaded environment.\n\tpublic class NetRandom\n\t{\n\t\t/// <summary>\n\t\t/// Gets a global NetRandom instance\n\t\t/// </summary>\n\t\tpublic static readonly NetRandom Instance = new NetRandom();\n\n\t\t// The +1 ensures NextDouble doesn't generate 1.0\n\t\tconst double REAL_UNIT_INT = 1.0 / ((double)int.MaxValue + 1.0);\n\t\tconst double REAL_UNIT_UINT = 1.0 / ((double)uint.MaxValue + 1.0);\n\t\tconst uint Y = 842502087, Z = 3579807591, W = 273326509;\n\n\t\tprivate static int s_extraSeed = 42;\n\n\t\tuint x, y, z, w;\n\n\t\t#region Constructors\n\n\t\t/// <summary>\n\t\t/// Initialises a new instance using time dependent seed.\n\t\t/// </summary>\n\t\tpublic NetRandom()\n\t\t{\n\t\t\t// Initialise using the system tick count.\n\t\t\tReinitialise(GetSeed(this));\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Initialises a new instance using an int value as seed.\n\t\t/// This constructor signature is provided to maintain compatibility with\n\t\t/// System.Random\n\t\t/// </summary>\n\t\tpublic NetRandom(int seed)\n\t\t{\n\t\t\tReinitialise(seed);\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Create a semi-random seed based on an object\n\t\t/// </summary>\n\t\tpublic int GetSeed(object forObject)\n\t\t{\n\t\t\t// mix some semi-random properties\n\t\t\tint seed = (int)Environment.TickCount;\n\t\t\tseed ^= forObject.GetHashCode();\n\t\t\t//seed ^= (int)(Stopwatch.GetTimestamp());\n\t\t\t//seed ^= (int)(Environment.WorkingSet); // will return 0 on mono\n\n\t\t\tint extraSeed = System.Threading.Interlocked.Increment(ref s_extraSeed);\n\n\t\t\treturn seed + extraSeed;\n\t\t}\n\n\t\t#endregion\n\n\t\t#region Public Methods [Reinitialisation]\n\n\t\t/// <summary>\n\t\t/// Reinitialises using an int value as a seed.\n\t\t/// </summary>\n\t\t/// <param name=\"seed\"></param>\n\t\tpublic void Reinitialise(int seed)\n\t\t{\n\t\t\t// The only stipulation stated for the xorshift RNG is that at least one of\n\t\t\t// the seeds x,y,z,w is non-zero. We fulfill that requirement by only allowing\n\t\t\t// resetting of the x seed\n\t\t\tx = (uint)seed;\n\t\t\ty = Y;\n\t\t\tz = Z;\n\t\t\tw = W;\n\t\t}\n\n\t\t#endregion\n\n\t\t#region Public Methods [System.Random functionally equivalent methods]\n\n\t\t/// <summary>\n\t\t/// Generates a random int over the range 0 to int.MaxValue-1.\n\t\t/// MaxValue is not generated in order to remain functionally equivalent to System.Random.Next().\n\t\t/// This does slightly eat into some of the performance gain over System.Random, but not much.\n\t\t/// For better performance see:\n\t\t/// \n\t\t/// Call NextInt() for an int over the range 0 to int.MaxValue.\n\t\t/// \n\t\t/// Call NextUInt() and cast the result to an int to generate an int over the full Int32 value range\n\t\t/// including negative values. \n\t\t/// </summary>\n\t\t/// <returns></returns>\n\t\tpublic int Next()\n\t\t{\n\t\t\tuint t = (x ^ (x << 11));\n\t\t\tx = y; y = z; z = w;\n\t\t\tw = (w ^ (w >> 19)) ^ (t ^ (t >> 8));\n\n\t\t\t// Handle the special case where the value int.MaxValue is generated. This is outside of \n\t\t\t// the range of permitted values, so we therefore call Next() to try again.\n\t\t\tuint rtn = w & 0x7FFFFFFF;\n\t\t\tif (rtn == 0x7FFFFFFF)\n\t\t\t\treturn Next();\n\t\t\treturn (int)rtn;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Generates a random int over the range 0 to upperBound-1, and not including upperBound.\n\t\t/// </summary>\n\t\t/// <param name=\"upperBound\"></param>\n\t\t/// <returns></returns>\n\t\tpublic int Next(int upperBound)\n\t\t{\n\t\t\tif (upperBound < 0)\n\t\t\t\tthrow new ArgumentOutOfRangeException(\"upperBound\", upperBound, \"upperBound must be >=0\");\n\n\t\t\tuint t = (x ^ (x << 11));\n\t\t\tx = y; y = z; z = w;\n\n\t\t\t// The explicit int cast before the first multiplication gives better performance.\n\t\t\t// See comments in NextDouble.\n\t\t\treturn (int)((REAL_UNIT_INT * (int)(0x7FFFFFFF & (w = (w ^ (w >> 19)) ^ (t ^ (t >> 8))))) * upperBound);\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Generates a random int over the range lowerBound to upperBound-1, and not including upperBound.\n\t\t/// upperBound must be >= lowerBound. lowerBound may be negative.\n\t\t/// </summary>\n\t\t/// <param name=\"lowerBound\"></param>\n\t\t/// <param name=\"upperBound\"></param>\n\t\t/// <returns></returns>\n\t\tpublic int Next(int lowerBound, int upperBound)\n\t\t{\n\t\t\tif (lowerBound > upperBound)\n\t\t\t\tthrow new ArgumentOutOfRangeException(\"upperBound\", upperBound, \"upperBound must be >=lowerBound\");\n\n\t\t\tuint t = (x ^ (x << 11));\n\t\t\tx = y; y = z; z = w;\n\n\t\t\t// The explicit int cast before the first multiplication gives better performance.\n\t\t\t// See comments in NextDouble.\n\t\t\tint range = upperBound - lowerBound;\n\t\t\tif (range < 0)\n\t\t\t{\t// If range is <0 then an overflow has occured and must resort to using long integer arithmetic instead (slower).\n\t\t\t\t// We also must use all 32 bits of precision, instead of the normal 31, which again is slower.\t\n\t\t\t\treturn lowerBound + (int)((REAL_UNIT_UINT * (double)(w = (w ^ (w >> 19)) ^ (t ^ (t >> 8)))) * (double)((long)upperBound - (long)lowerBound));\n\t\t\t}\n\n\t\t\t// 31 bits of precision will suffice if range<=int.MaxValue. This allows us to cast to an int and gain\n\t\t\t// a little more performance.\n\t\t\treturn lowerBound + (int)((REAL_UNIT_INT * (double)(int)(0x7FFFFFFF & (w = (w ^ (w >> 19)) ^ (t ^ (t >> 8))))) * (double)range);\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Generates a random double. Values returned are from 0.0 up to but not including 1.0.\n\t\t/// </summary>\n\t\t/// <returns></returns>\n\t\tpublic double NextDouble()\n\t\t{\n\t\t\tuint t = (x ^ (x << 11));\n\t\t\tx = y; y = z; z = w;\n\n\t\t\t// Here we can gain a 2x speed improvement by generating a value that can be cast to \n\t\t\t// an int instead of the more easily available uint. If we then explicitly cast to an \n\t\t\t// int the compiler will then cast the int to a double to perform the multiplication, \n\t\t\t// this final cast is a lot faster than casting from a uint to a double. The extra cast\n\t\t\t// to an int is very fast (the allocated bits remain the same) and so the overall effect \n\t\t\t// of the extra cast is a significant performance improvement.\n\t\t\t//\n\t\t\t// Also note that the loss of one bit of precision is equivalent to what occurs within \n\t\t\t// System.Random.\n\t\t\treturn (REAL_UNIT_INT * (int)(0x7FFFFFFF & (w = (w ^ (w >> 19)) ^ (t ^ (t >> 8)))));\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Generates a random single. Values returned are from 0.0 up to but not including 1.0.\n\t\t/// </summary>\n\t\tpublic float NextSingle()\n\t\t{\n\t\t\treturn (float)NextDouble();\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Fills the provided byte array with random bytes.\n\t\t/// This method is functionally equivalent to System.Random.NextBytes(). \n\t\t/// </summary>\n\t\t/// <param name=\"buffer\"></param>\n\t\tpublic void NextBytes(byte[] buffer)\n\t\t{\n\t\t\t// Fill up the bulk of the buffer in chunks of 4 bytes at a time.\n\t\t\tuint x = this.x, y = this.y, z = this.z, w = this.w;\n\t\t\tint i = 0;\n\t\t\tuint t;\n\t\t\tfor (int bound = buffer.Length - 3; i < bound; )\n\t\t\t{\n\t\t\t\t// Generate 4 bytes. \n\t\t\t\t// Increased performance is achieved by generating 4 random bytes per loop.\n\t\t\t\t// Also note that no mask needs to be applied to zero out the higher order bytes before\n\t\t\t\t// casting because the cast ignores thos bytes. Thanks to Stefan Troschütz for pointing this out.\n\t\t\t\tt = (x ^ (x << 11));\n\t\t\t\tx = y; y = z; z = w;\n\t\t\t\tw = (w ^ (w >> 19)) ^ (t ^ (t >> 8));\n\n\t\t\t\tbuffer[i++] = (byte)w;\n\t\t\t\tbuffer[i++] = (byte)(w >> 8);\n\t\t\t\tbuffer[i++] = (byte)(w >> 16);\n\t\t\t\tbuffer[i++] = (byte)(w >> 24);\n\t\t\t}\n\n\t\t\t// Fill up any remaining bytes in the buffer.\n\t\t\tif (i < buffer.Length)\n\t\t\t{\n\t\t\t\t// Generate 4 bytes.\n\t\t\t\tt = (x ^ (x << 11));\n\t\t\t\tx = y; y = z; z = w;\n\t\t\t\tw = (w ^ (w >> 19)) ^ (t ^ (t >> 8));\n\n\t\t\t\tbuffer[i++] = (byte)w;\n\t\t\t\tif (i < buffer.Length)\n\t\t\t\t{\n\t\t\t\t\tbuffer[i++] = (byte)(w >> 8);\n\t\t\t\t\tif (i < buffer.Length)\n\t\t\t\t\t{\n\t\t\t\t\t\tbuffer[i++] = (byte)(w >> 16);\n\t\t\t\t\t\tif (i < buffer.Length)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tbuffer[i] = (byte)(w >> 24);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.x = x; this.y = y; this.z = z; this.w = w;\n\t\t}\n\n\n\t\t//\t\t/// <summary>\n\t\t//\t\t/// A version of NextBytes that uses a pointer to set 4 bytes of the byte buffer in one operation\n\t\t//\t\t/// thus providing a nice speedup. The loop is also partially unrolled to allow out-of-order-execution,\n\t\t//\t\t/// this results in about a x2 speedup on an AMD Athlon. Thus performance may vary wildly on different CPUs\n\t\t//\t\t/// depending on the number of execution units available.\n\t\t//\t\t/// \n\t\t//\t\t/// Another significant speedup is obtained by setting the 4 bytes by indexing pDWord (e.g. pDWord[i++]=w)\n\t\t//\t\t/// instead of adjusting it dereferencing it (e.g. *pDWord++=w).\n\t\t//\t\t/// \n\t\t//\t\t/// Note that this routine requires the unsafe compilation flag to be specified and so is commented out by default.\n\t\t//\t\t/// </summary>\n\t\t//\t\t/// <param name=\"buffer\"></param>\n\t\t//\t\tpublic unsafe void NextBytesUnsafe(byte[] buffer)\n\t\t//\t\t{\n\t\t//\t\t\tif(buffer.Length % 8 != 0)\n\t\t//\t\t\t\tthrow new ArgumentException(\"Buffer length must be divisible by 8\", \"buffer\");\n\t\t//\n\t\t//\t\t\tuint x=this.x, y=this.y, z=this.z, w=this.w;\n\t\t//\t\t\t\n\t\t//\t\t\tfixed(byte* pByte0 = buffer)\n\t\t//\t\t\t{\n\t\t//\t\t\t\tuint* pDWord = (uint*)pByte0;\n\t\t//\t\t\t\tfor(int i=0, len=buffer.Length>>2; i < len; i+=2) \n\t\t//\t\t\t\t{\n\t\t//\t\t\t\t\tuint t=(x^(x<<11));\n\t\t//\t\t\t\t\tx=y; y=z; z=w;\n\t\t//\t\t\t\t\tpDWord[i] = w = (w^(w>>19))^(t^(t>>8));\n\t\t//\n\t\t//\t\t\t\t\tt=(x^(x<<11));\n\t\t//\t\t\t\t\tx=y; y=z; z=w;\n\t\t//\t\t\t\t\tpDWord[i+1] = w = (w^(w>>19))^(t^(t>>8));\n\t\t//\t\t\t\t}\n\t\t//\t\t\t}\n\t\t//\n\t\t//\t\t\tthis.x=x; this.y=y; this.z=z; this.w=w;\n\t\t//\t\t}\n\n\t\t#endregion\n\n\t\t#region Public Methods [Methods not present on System.Random]\n\n\t\t/// <summary>\n\t\t/// Generates a uint. Values returned are over the full range of a uint, \n\t\t/// uint.MinValue to uint.MaxValue, inclusive.\n\t\t/// \n\t\t/// This is the fastest method for generating a single random number because the underlying\n\t\t/// random number generator algorithm generates 32 random bits that can be cast directly to \n\t\t/// a uint.\n\t\t/// </summary>\n\t\t[CLSCompliant(false)]\n\t\tpublic uint NextUInt()\n\t\t{\n\t\t\tuint t = (x ^ (x << 11));\n\t\t\tx = y; y = z; z = w;\n\t\t\treturn (w = (w ^ (w >> 19)) ^ (t ^ (t >> 8)));\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Generates a random int over the range 0 to int.MaxValue, inclusive. \n\t\t/// This method differs from Next() only in that the range is 0 to int.MaxValue\n\t\t/// and not 0 to int.MaxValue-1.\n\t\t/// \n\t\t/// The slight difference in range means this method is slightly faster than Next()\n\t\t/// but is not functionally equivalent to System.Random.Next().\n\t\t/// </summary>\n\t\t/// <returns></returns>\n\t\tpublic int NextInt()\n\t\t{\n\t\t\tuint t = (x ^ (x << 11));\n\t\t\tx = y; y = z; z = w;\n\t\t\treturn (int)(0x7FFFFFFF & (w = (w ^ (w >> 19)) ^ (t ^ (t >> 8))));\n\t\t}\n\n\n\t\t// Buffer 32 bits in bitBuffer, return 1 at a time, keep track of how many have been returned\n\t\t// with bitBufferIdx.\n\t\tuint bitBuffer;\n\t\tuint bitMask = 1;\n\n\t\t/// <summary>\n\t\t/// Generates a single random bit.\n\t\t/// This method's performance is improved by generating 32 bits in one operation and storing them\n\t\t/// ready for future calls.\n\t\t/// </summary>\n\t\t/// <returns></returns>\n\t\tpublic bool NextBool()\n\t\t{\n\t\t\tif (bitMask == 1)\n\t\t\t{\n\t\t\t\t// Generate 32 more bits.\n\t\t\t\tuint t = (x ^ (x << 11));\n\t\t\t\tx = y; y = z; z = w;\n\t\t\t\tbitBuffer = w = (w ^ (w >> 19)) ^ (t ^ (t >> 8));\n\n\t\t\t\t// Reset the bitMask that tells us which bit to read next.\n\t\t\t\tbitMask = 0x80000000;\n\t\t\t\treturn (bitBuffer & bitMask) == 0;\n\t\t\t}\n\n\t\t\treturn (bitBuffer & (bitMask >>= 1)) == 0;\n\t\t}\n\n\t\t#endregion\n\t}\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Lidgren/NetReceiverChannelBase.cs",
    "content": "﻿using System;\n\nnamespace Lidgren.Network\n{\n\tinternal abstract class NetReceiverChannelBase\n\t{\n\t\tinternal NetPeer m_peer;\n\t\tinternal NetConnection m_connection;\n\n\t\tpublic NetReceiverChannelBase(NetConnection connection)\n\t\t{\n\t\t\tm_connection = connection;\n\t\t\tm_peer = connection.m_peer;\n\t\t}\n\n\t\tinternal abstract void ReceiveMessage(NetIncomingMessage msg);\n\t}\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Lidgren/NetReliableOrderedReceiver.cs",
    "content": "﻿using System;\n\nnamespace Lidgren.Network\n{\n\tinternal sealed class NetReliableOrderedReceiver : NetReceiverChannelBase\n\t{\n\t\tprivate int m_windowStart;\n\t\tprivate int m_windowSize;\n\t\tprivate NetBitVector m_earlyReceived;\n\t\tinternal NetIncomingMessage[] m_withheldMessages;\n\n\t\tpublic NetReliableOrderedReceiver(NetConnection connection, int windowSize)\n\t\t\t: base(connection)\n\t\t{\n\t\t\tm_windowSize = windowSize;\n\t\t\tm_withheldMessages = new NetIncomingMessage[windowSize];\n\t\t\tm_earlyReceived = new NetBitVector(windowSize);\n\t\t}\n\n\t\tprivate void AdvanceWindow()\n\t\t{\n\t\t\tm_earlyReceived.Set(m_windowStart % m_windowSize, false);\n\t\t\tm_windowStart = (m_windowStart + 1) % NetConstants.NumSequenceNumbers;\n\t\t}\n\n\t\tinternal override void ReceiveMessage(NetIncomingMessage message)\n\t\t{\n\t\t\tint relate = NetUtility.RelativeSequenceNumber(message.m_sequenceNumber, m_windowStart);\n\n\t\t\t// ack no matter what\n\t\t\tm_connection.QueueAck(message.m_receivedMessageType, message.m_sequenceNumber);\n\n\t\t\tif (relate == 0)\n\t\t\t{\n\t\t\t\t// Log(\"Received message #\" + message.SequenceNumber + \" right on time\");\n\n\t\t\t\t//\n\t\t\t\t// excellent, right on time\n\t\t\t\t//\n\t\t\t\t//m_peer.LogVerbose(\"Received RIGHT-ON-TIME \" + message);\n\n\t\t\t\tAdvanceWindow();\n\t\t\t\tm_peer.ReleaseMessage(message);\n\n\t\t\t\t// release withheld messages\n\t\t\t\tint nextSeqNr = (message.m_sequenceNumber + 1) % NetConstants.NumSequenceNumbers;\n\n\t\t\t\twhile (m_earlyReceived[nextSeqNr % m_windowSize])\n\t\t\t\t{\n\t\t\t\t\tmessage = m_withheldMessages[nextSeqNr % m_windowSize];\n\t\t\t\t\tNetException.Assert(message != null);\n\n\t\t\t\t\t// remove it from withheld messages\n\t\t\t\t\tm_withheldMessages[nextSeqNr % m_windowSize] = null;\n\n\t\t\t\t\tm_peer.LogVerbose(\"Releasing withheld message #\" + message);\n\n\t\t\t\t\tm_peer.ReleaseMessage(message);\n\n\t\t\t\t\tAdvanceWindow();\n\t\t\t\t\tnextSeqNr++;\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (relate < 0)\n\t\t\t{\n\t\t\t\tm_peer.LogVerbose(\"Received message #\" + message.m_sequenceNumber + \" DROPPING DUPLICATE\");\n\t\t\t\t// duplicate\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// relate > 0 = early message\n\t\t\tif (relate > m_windowSize)\n\t\t\t{\n\t\t\t\t// too early message!\n\t\t\t\tm_peer.LogDebug(\"Received \" + message + \" TOO EARLY! Expected \" + m_windowStart);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tm_earlyReceived.Set(message.m_sequenceNumber % m_windowSize, true);\n\t\t\tm_peer.LogVerbose(\"Received \" + message + \" WITHHOLDING, waiting for \" + m_windowStart);\n\t\t\tm_withheldMessages[message.m_sequenceNumber % m_windowSize] = message;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Lidgren/NetReliableSenderChannel.cs",
    "content": "﻿using System;\nusing System.Threading;\n\nnamespace Lidgren.Network\n{\n\t/// <summary>\n\t/// Sender part of Selective repeat ARQ for a particular NetChannel\n\t/// </summary>\n\tinternal sealed class NetReliableSenderChannel : NetSenderChannelBase\n\t{\n\t\tprivate NetConnection m_connection;\n\t\tprivate int m_windowStart;\n\t\tprivate int m_windowSize;\n\t\tprivate int m_sendStart;\n\n\t\tprivate NetBitVector m_receivedAcks;\n\t\tinternal NetStoredReliableMessage[] m_storedMessages;\n\n\t\tinternal float m_resendDelay;\n\n\t\tinternal override int WindowSize { get { return m_windowSize; } }\n\n\t\tinternal NetReliableSenderChannel(NetConnection connection, int windowSize)\n\t\t{\n\t\t\tm_connection = connection;\n\t\t\tm_windowSize = windowSize;\n\t\t\tm_windowStart = 0;\n\t\t\tm_sendStart = 0;\n\t\t\tm_receivedAcks = new NetBitVector(NetConstants.NumSequenceNumbers);\n\t\t\tm_storedMessages = new NetStoredReliableMessage[m_windowSize];\n\t\t\tm_queuedSends = new NetQueue<NetOutgoingMessage>(8);\n\t\t\tm_resendDelay = m_connection.GetResendDelay();\n\t\t}\n\n\t\tinternal override int GetAllowedSends()\n\t\t{\n\t\t\tint retval = m_windowSize - ((m_sendStart + NetConstants.NumSequenceNumbers) - m_windowStart) % NetConstants.NumSequenceNumbers;\n\t\t\tNetException.Assert(retval >= 0 && retval <= m_windowSize);\n\t\t\treturn retval;\n\t\t}\n\n\t\tinternal override void Reset()\n\t\t{\n\t\t\tm_receivedAcks.Clear();\n\t\t\tfor (int i = 0; i < m_storedMessages.Length; i++)\n\t\t\t\tm_storedMessages[i].Reset();\n\t\t\tm_queuedSends.Clear();\n\t\t\tm_windowStart = 0;\n\t\t\tm_sendStart = 0;\n\t\t}\n\n\t\tinternal override NetSendResult Enqueue(NetOutgoingMessage message)\n\t\t{\n\t\t\tm_queuedSends.Enqueue(message);\n\n\t\t\tint queueLen = m_queuedSends.Count;\n\t\t\tint left = m_windowSize - ((m_sendStart + NetConstants.NumSequenceNumbers) - m_windowStart) % NetConstants.NumSequenceNumbers;\n\t\t\tif (queueLen <= left)\n\t\t\t\treturn NetSendResult.Sent;\n\t\t\treturn NetSendResult.Queued;\n\t\t}\n\n\t\t// call this regularely\n\t\tinternal override void SendQueuedMessages(float now)\n\t\t{\n\t\t\t//\n\t\t\t// resends\n\t\t\t//\n\t\t\tfor (int i = 0; i < m_storedMessages.Length; i++)\n\t\t\t{\n\t\t\t\tNetOutgoingMessage om = m_storedMessages[i].Message;\n\t\t\t\tif (om == null)\n\t\t\t\t\tcontinue;\n\n\t\t\t\tfloat t = m_storedMessages[i].LastSent;\n\t\t\t\tif (t > 0 && (now - t) > m_resendDelay)\n\t\t\t\t{\n\t\t\t\t\t// deduce sequence number\n\t\t\t\t\tint startSlot = m_windowStart % m_windowSize;\n\t\t\t\t\tint seqNr = m_windowStart;\n\t\t\t\t\twhile (startSlot != i)\n\t\t\t\t\t{\n\t\t\t\t\t\tstartSlot--;\n\t\t\t\t\t\tif (startSlot < 0)\n\t\t\t\t\t\t\tstartSlot = m_windowSize - 1;\n\t\t\t\t\t\tseqNr--;\n\t\t\t\t\t}\n\n\t\t\t\t\t//m_connection.m_peer.LogVerbose(\"Resending due to delay #\" + seqNr + \" \" + om.ToString());\n\t\t\t\t\tm_connection.m_statistics.MessageResent(MessageResendReason.Delay);\n\n\t\t\t\t\tm_connection.QueueSendMessage(om, seqNr);\n\n\t\t\t\t\tm_storedMessages[i].LastSent = now;\n\t\t\t\t\tm_storedMessages[i].NumSent++;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tint num = GetAllowedSends();\n\t\t\tif (num < 1)\n\t\t\t\treturn;\n\n\t\t\t// queued sends\n\t\t\twhile (m_queuedSends.Count > 0 && num > 0)\n\t\t\t{\n\t\t\t\tNetOutgoingMessage om;\n\t\t\t\tif (m_queuedSends.TryDequeue(out om))\n\t\t\t\t\tExecuteSend(now, om);\n\t\t\t\tnum--;\n\t\t\t\tNetException.Assert(num == GetAllowedSends());\n\t\t\t}\n\t\t}\n\t\t\t\n\t\tprivate void ExecuteSend(float now, NetOutgoingMessage message)\n\t\t{\n\t\t\tint seqNr = m_sendStart;\n\t\t\tm_sendStart = (m_sendStart + 1) % NetConstants.NumSequenceNumbers;\n\n\t\t\tm_connection.QueueSendMessage(message, seqNr);\n\n\t\t\tint storeIndex = seqNr % m_windowSize;\n\t\t\tNetException.Assert(m_storedMessages[storeIndex].Message == null);\n\n\t\t\tm_storedMessages[storeIndex].NumSent++;\n\t\t\tm_storedMessages[storeIndex].Message = message;\n\t\t\tm_storedMessages[storeIndex].LastSent = now;\n\n\t\t\treturn;\n\t\t}\n\n\t\tprivate void DestoreMessage(int storeIndex)\n\t\t{\n\t\t\tNetOutgoingMessage storedMessage = m_storedMessages[storeIndex].Message;\n#if DEBUG\n\t\t\tif (storedMessage == null)\n\t\t\t\tthrow new NetException(\"m_storedMessages[\" + storeIndex + \"].Message is null; sent \" + m_storedMessages[storeIndex].NumSent + \" times, last time \" + (NetTime.Now - m_storedMessages[storeIndex].LastSent) + \" seconds ago\");\n#else\n\t\t\tif (storedMessage != null)\n\t\t\t{\n#endif\n\t\t\tInterlocked.Decrement(ref storedMessage.m_recyclingCount);\n\t\t\tif (storedMessage.m_recyclingCount <= 0)\n\t\t\t\tm_connection.m_peer.Recycle(storedMessage);\n\n#if !DEBUG\n\t\t\t}\n#endif\n\t\t\tm_storedMessages[storeIndex] = new NetStoredReliableMessage();\n\t\t}\n\n\t\t// remoteWindowStart is remote expected sequence number; everything below this has arrived properly\n\t\t// seqNr is the actual nr received\n\t\tinternal override void ReceiveAcknowledge(float now, int seqNr)\n\t\t{\n\t\t\t// late (dupe), on time or early ack?\n\t\t\tint relate = NetUtility.RelativeSequenceNumber(seqNr, m_windowStart);\n\n\t\t\tif (relate < 0)\n\t\t\t{\n\t\t\t\t//m_connection.m_peer.LogDebug(\"Received late/dupe ack for #\" + seqNr);\n\t\t\t\treturn; // late/duplicate ack\n\t\t\t}\n\n\t\t\tif (relate == 0)\n\t\t\t{\n\t\t\t\t//m_connection.m_peer.LogDebug(\"Received right-on-time ack for #\" + seqNr);\n\n\t\t\t\t// ack arrived right on time\n\t\t\t\tNetException.Assert(seqNr == m_windowStart);\n\n\t\t\t\tm_receivedAcks[m_windowStart] = false;\n\t\t\t\tDestoreMessage(m_windowStart % m_windowSize);\n\t\t\t\tm_windowStart = (m_windowStart + 1) % NetConstants.NumSequenceNumbers;\n\n\t\t\t\t// advance window if we already have early acks\n\t\t\t\twhile (m_receivedAcks.Get(m_windowStart))\n\t\t\t\t{\n\t\t\t\t\t//m_connection.m_peer.LogDebug(\"Using early ack for #\" + m_windowStart + \"...\");\n\t\t\t\t\tm_receivedAcks[m_windowStart] = false;\n\t\t\t\t\tDestoreMessage(m_windowStart % m_windowSize);\n\n\t\t\t\t\tNetException.Assert(m_storedMessages[m_windowStart % m_windowSize].Message == null); // should already be destored\n\t\t\t\t\tm_windowStart = (m_windowStart + 1) % NetConstants.NumSequenceNumbers;\n\t\t\t\t\t//m_connection.m_peer.LogDebug(\"Advancing window to #\" + m_windowStart);\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t//\n\t\t\t// early ack... (if it has been sent!)\n\t\t\t//\n\t\t\t// If it has been sent either the m_windowStart message was lost\n\t\t\t// ... or the ack for that message was lost\n\t\t\t//\n\n\t\t\t//m_connection.m_peer.LogDebug(\"Received early ack for #\" + seqNr);\n\n\t\t\tint sendRelate = NetUtility.RelativeSequenceNumber(seqNr, m_sendStart);\n\t\t\tif (sendRelate <= 0)\n\t\t\t{\n\t\t\t\t// yes, we've sent this message - it's an early (but valid) ack\n\t\t\t\tif (m_receivedAcks[seqNr])\n\t\t\t\t{\n\t\t\t\t\t// we've already destored/been acked for this message\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tm_receivedAcks[seqNr] = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (sendRelate > 0)\n\t\t\t{\n\t\t\t\t// uh... we haven't sent this message yet? Weird, dupe or error...\n\t\t\t\tNetException.Assert(true, \"Got ack for message not yet sent?\");\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Ok, lets resend all missing acks\n\t\t\tint rnr = seqNr;\n\t\t\tdo\n\t\t\t{\n\t\t\t\trnr--;\n\t\t\t\tif (rnr < 0)\n\t\t\t\t\trnr = NetConstants.NumSequenceNumbers - 1;\n\n\t\t\t\tif (m_receivedAcks[rnr])\n\t\t\t\t{\n\t\t\t\t\t// m_connection.m_peer.LogDebug(\"Not resending #\" + rnr + \" (since we got ack)\");\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tint slot = rnr % m_windowSize;\n\t\t\t\t\tNetException.Assert(m_storedMessages[slot].Message != null);\n\t\t\t\t\tif (m_storedMessages[slot].NumSent == 1)\n\t\t\t\t\t{\n\t\t\t\t\t\t// just sent once; resend immediately since we found gap in ack sequence\n\t\t\t\t\t\tNetOutgoingMessage rmsg = m_storedMessages[slot].Message;\n\t\t\t\t\t\t//m_connection.m_peer.LogVerbose(\"Resending #\" + rnr + \" (\" + rmsg + \")\");\n\n\t\t\t\t\t\tif (now - m_storedMessages[slot].LastSent < (m_resendDelay * 0.35f))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t// already resent recently\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tm_storedMessages[slot].LastSent = now;\n\t\t\t\t\t\t\tm_storedMessages[slot].NumSent++;\n\t\t\t\t\t\t\tm_connection.m_statistics.MessageResent(MessageResendReason.HoleInSequence);\n\t\t\t\t\t\t\tm_connection.QueueSendMessage(rmsg, rnr);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t} while (rnr != m_windowStart);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Lidgren/NetReliableSequencedReceiver.cs",
    "content": "﻿using System;\n\nnamespace Lidgren.Network\n{\n\tinternal sealed class NetReliableSequencedReceiver : NetReceiverChannelBase\n\t{\n\t\tprivate int m_windowStart;\n\t\tprivate int m_windowSize;\n\n\t\tpublic NetReliableSequencedReceiver(NetConnection connection, int windowSize)\n\t\t\t: base(connection)\n\t\t{\n\t\t\tm_windowSize = windowSize;\n\t\t}\n\n\t\tprivate void AdvanceWindow()\n\t\t{\n\t\t\tm_windowStart = (m_windowStart + 1) % NetConstants.NumSequenceNumbers;\n\t\t}\n\n\t\tinternal override void ReceiveMessage(NetIncomingMessage message)\n\t\t{\n\t\t\tint nr = message.m_sequenceNumber;\n\n\t\t\tint relate = NetUtility.RelativeSequenceNumber(nr, m_windowStart);\n\n\t\t\t// ack no matter what\n\t\t\tm_connection.QueueAck(message.m_receivedMessageType, nr);\n\n\t\t\tif (relate == 0)\n\t\t\t{\n\t\t\t\t// Log(\"Received message #\" + message.SequenceNumber + \" right on time\");\n\n\t\t\t\t//\n\t\t\t\t// excellent, right on time\n\t\t\t\t//\n\n\t\t\t\tAdvanceWindow();\n\t\t\t\tm_peer.ReleaseMessage(message);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (relate < 0)\n\t\t\t{\n\t\t\t\tm_peer.LogVerbose(\"Received message #\" + message.m_sequenceNumber + \" DROPPING LATE or DUPE\");\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// relate > 0 = early message\n\t\t\tif (relate > m_windowSize)\n\t\t\t{\n\t\t\t\t// too early message!\n\t\t\t\tm_peer.LogDebug(\"Received \" + message + \" TOO EARLY! Expected \" + m_windowStart);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// ok\n\t\t\tm_windowStart = (m_windowStart + relate) % NetConstants.NumSequenceNumbers;\n\t\t\tm_peer.ReleaseMessage(message);\n\t\t\treturn;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Lidgren/NetReliableUnorderedReceiver.cs",
    "content": "﻿using System;\n\nnamespace Lidgren.Network\n{\n\tinternal sealed class NetReliableUnorderedReceiver : NetReceiverChannelBase\n\t{\n\t\tprivate int m_windowStart;\n\t\tprivate int m_windowSize;\n\t\tprivate NetBitVector m_earlyReceived;\n\n\t\tpublic NetReliableUnorderedReceiver(NetConnection connection, int windowSize)\n\t\t\t: base(connection)\n\t\t{\n\t\t\tm_windowSize = windowSize;\n\t\t\tm_earlyReceived = new NetBitVector(windowSize);\n\t\t}\n\n\t\tprivate void AdvanceWindow()\n\t\t{\n\t\t\tm_earlyReceived.Set(m_windowStart % m_windowSize, false);\n\t\t\tm_windowStart = (m_windowStart + 1) % NetConstants.NumSequenceNumbers;\n\t\t}\n\n\t\tinternal override void ReceiveMessage(NetIncomingMessage message)\n\t\t{\n\t\t\tint relate = NetUtility.RelativeSequenceNumber(message.m_sequenceNumber, m_windowStart);\n\n\t\t\t// ack no matter what\n\t\t\tm_connection.QueueAck(message.m_receivedMessageType, message.m_sequenceNumber);\n\n\t\t\tif (relate == 0)\n\t\t\t{\n\t\t\t\t// Log(\"Received message #\" + message.SequenceNumber + \" right on time\");\n\n\t\t\t\t//\n\t\t\t\t// excellent, right on time\n\t\t\t\t//\n\t\t\t\t//m_peer.LogVerbose(\"Received RIGHT-ON-TIME \" + message);\n\n\t\t\t\tAdvanceWindow();\n\t\t\t\tm_peer.ReleaseMessage(message);\n\n\t\t\t\t// release withheld messages\n\t\t\t\tint nextSeqNr = (message.m_sequenceNumber + 1) % NetConstants.NumSequenceNumbers;\n\n\t\t\t\twhile (m_earlyReceived[nextSeqNr % m_windowSize])\n\t\t\t\t{\n\t\t\t\t\t//message = m_withheldMessages[nextSeqNr % m_windowSize];\n\t\t\t\t\t//NetException.Assert(message != null);\n\n\t\t\t\t\t// remove it from withheld messages\n\t\t\t\t\t//m_withheldMessages[nextSeqNr % m_windowSize] = null;\n\n\t\t\t\t\t//m_peer.LogVerbose(\"Releasing withheld message #\" + message);\n\n\t\t\t\t\t//m_peer.ReleaseMessage(message);\n\n\t\t\t\t\tAdvanceWindow();\n\t\t\t\t\tnextSeqNr++;\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (relate < 0)\n\t\t\t{\n\t\t\t\t// duplicate\n\t\t\t\tm_peer.LogVerbose(\"Received message #\" + message.m_sequenceNumber + \" DROPPING DUPLICATE\");\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// relate > 0 = early message\n\t\t\tif (relate > m_windowSize)\n\t\t\t{\n\t\t\t\t// too early message!\n\t\t\t\tm_peer.LogDebug(\"Received \" + message + \" TOO EARLY! Expected \" + m_windowStart);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tm_earlyReceived.Set(message.m_sequenceNumber % m_windowSize, true);\n\t\t\t//m_peer.LogVerbose(\"Received \" + message + \" WITHHOLDING, waiting for \" + m_windowStart);\n\t\t\t//m_withheldMessages[message.m_sequenceNumber % m_windowSize] = message;\n\n\t\t\tm_peer.ReleaseMessage(message);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Lidgren/NetSRP.cs",
    "content": "﻿#define USE_SHA256\n\nusing System;\nusing System.Security.Cryptography;\nusing System.Text;\n\nnamespace Lidgren.Network\n{\n\t/// <summary>\n\t/// Helper methods for implementing SRP authentication\n\t/// </summary>\n\tpublic static class NetSRP\n\t{\n\t\tprivate static readonly NetBigInteger N = new NetBigInteger(\"0115b8b692e0e045692cf280b436735c77a5a9e8a9e7ed56c965f87db5b2a2ece3\", 16);\n\t\tprivate static readonly NetBigInteger g = NetBigInteger.Two;\n\t\tprivate static readonly NetBigInteger k = ComputeMultiplier();\n\n\t\tprivate static HashAlgorithm GetHashAlgorithm()\n\t\t{\n#if USE_SHA256\n\t\t\t// this does not seem to work as of yet\n\t\t\treturn SHA256.Create();\n#else\n\t\t\treturn SHA1.Create();\n#endif\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Compute multiplier (k)\n\t\t/// </summary>\n\t\tprivate static NetBigInteger ComputeMultiplier()\n\t\t{\n\t\t\tstring one = NetUtility.ToHexString(N.ToByteArrayUnsigned());\n\t\t\tstring two = NetUtility.ToHexString(g.ToByteArrayUnsigned());\n\n\t\t\tstring ccstr = one + two.PadLeft(one.Length, '0');\n\t\t\tbyte[] cc = NetUtility.ToByteArray(ccstr);\n\n\t\t\tvar sha = GetHashAlgorithm();\n\t\t\tvar ccHashed = sha.ComputeHash(cc);\n\n\t\t\treturn new NetBigInteger(NetUtility.ToHexString(ccHashed), 16);\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Create 16 bytes of random salt\n\t\t/// </summary>\n\t\tpublic static byte[] CreateRandomSalt()\n\t\t{\n\t\t\tbyte[] retval = new byte[16];\n\t\t\tNetRandom.Instance.NextBytes(retval);\n\t\t\treturn retval;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Create 32 bytes of random ephemeral value\n\t\t/// </summary>\n\t\tpublic static byte[] CreateRandomEphemeral()\n\t\t{\n\t\t\tbyte[] retval = new byte[32];\n\t\t\tNetRandom.Instance.NextBytes(retval);\n\t\t\treturn retval;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Computer private key (x)\n\t\t/// </summary>\n\t\tpublic static byte[] ComputePrivateKey(string username, string password, byte[] salt)\n\t\t{\n\t\t\tvar sha = GetHashAlgorithm();\n\n\t\t\tbyte[] tmp = Encoding.ASCII.GetBytes(username + \":\" + password);\n\t\t\tbyte[] innerHash = sha.ComputeHash(tmp);\n\n\t\t\tbyte[] total = new byte[innerHash.Length + salt.Length];\n\t\t\tBuffer.BlockCopy(salt, 0, total, 0, salt.Length);\n\t\t\tBuffer.BlockCopy(innerHash, 0, total, salt.Length, innerHash.Length);\n\n\t\t\t// x   ie. H(salt || H(username || \":\" || password))\n\t\t\treturn new NetBigInteger(NetUtility.ToHexString(sha.ComputeHash(total)), 16).ToByteArrayUnsigned();\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Creates a verifier that the server can later use to authenticate users later on (v)\n\t\t/// </summary>\n\t\tpublic static byte[] ComputeServerVerifier(byte[] privateKey)\n\t\t{\n\t\t\tNetBigInteger x = new NetBigInteger(NetUtility.ToHexString(privateKey), 16);\n\n\t\t\t// Verifier (v) = g^x (mod N)\n\t\t\tvar serverVerifier = g.ModPow(x, N);\n\n\t\t\treturn serverVerifier.ToByteArrayUnsigned();\n\t\t}\n\n\t\t/// <summary>\n\t\t/// SHA hash data\n\t\t/// </summary>\n\t\tpublic static byte[] Hash(byte[] data)\n\t\t{\n\t\t\tvar sha = GetHashAlgorithm();\n\t\t\treturn sha.ComputeHash(data);\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Compute client public ephemeral value (A)\n\t\t/// </summary>\n\t\tpublic static byte[] ComputeClientEphemeral(byte[] clientPrivateEphemeral) // a\n\t\t{\n\t\t\t// A= g^a (mod N) \n\t\t\tNetBigInteger a = new NetBigInteger(NetUtility.ToHexString(clientPrivateEphemeral), 16);\n\t\t\tNetBigInteger retval = g.ModPow(a, N);\n\n\t\t\treturn retval.ToByteArrayUnsigned();\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Compute server ephemeral value (B)\n\t\t/// </summary>\n\t\tpublic static byte[] ComputeServerEphemeral(byte[] serverPrivateEphemeral, byte[] verifier) // b\n\t\t{\n\t\t\tvar b = new NetBigInteger(NetUtility.ToHexString(serverPrivateEphemeral), 16);\n\t\t\tvar v = new NetBigInteger(NetUtility.ToHexString(verifier), 16);\n\n\t\t\t// B = kv + g^b (mod N) \n\t\t\tvar bb = g.ModPow(b, N);\n\t\t\tvar kv = v.Multiply(k);\n\t\t\tvar B = (kv.Add(bb)).Mod(N);\n\n\t\t\treturn B.ToByteArrayUnsigned();\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Compute intermediate value (u)\n\t\t/// </summary>\n\t\tpublic static byte[] ComputeU(byte[] clientPublicEphemeral, byte[] serverPublicEphemeral)\n\t\t{\n\t\t\t// u = SHA-1(A || B)\n\t\t\tstring one = NetUtility.ToHexString(clientPublicEphemeral);\n\t\t\tstring two = NetUtility.ToHexString(serverPublicEphemeral);\n\n\t\t\tint len = 66; //  Math.Max(one.Length, two.Length);\n\t\t\tstring ccstr = one.PadLeft(len, '0') + two.PadLeft(len, '0');\n\n\t\t\tbyte[] cc = NetUtility.ToByteArray(ccstr);\n\n\t\t\tvar sha = GetHashAlgorithm();\n\t\t\tvar ccHashed = sha.ComputeHash(cc);\n\n\t\t\treturn new NetBigInteger(NetUtility.ToHexString(ccHashed), 16).ToByteArrayUnsigned();\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Computes the server session value\n\t\t/// </summary>\n\t\tpublic static byte[] ComputeServerSessionValue(byte[] clientPublicEphemeral, byte[] verifier, byte[] udata, byte[] serverPrivateEphemeral)\n\t\t{\n\t\t\t// S = (Av^u) ^ b (mod N)\n\t\t\tvar A = new NetBigInteger(NetUtility.ToHexString(clientPublicEphemeral), 16);\n\t\t\tvar v = new NetBigInteger(NetUtility.ToHexString(verifier), 16);\n\t\t\tvar u = new NetBigInteger(NetUtility.ToHexString(udata), 16);\n\t\t\tvar b = new NetBigInteger(NetUtility.ToHexString(serverPrivateEphemeral), 16);\n\n\t\t\tNetBigInteger retval = v.ModPow(u, N).Multiply(A).Mod(N).ModPow(b, N).Mod(N);\n\n\t\t\treturn retval.ToByteArrayUnsigned();\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Computes the client session value\n\t\t/// </summary>\n\t\tpublic static byte[] ComputeClientSessionValue(byte[] serverPublicEphemeral, byte[] xdata,  byte[] udata, byte[] clientPrivateEphemeral)\n\t\t{\n\t\t\t// (B - kg^x) ^ (a + ux)   (mod N)\n\t\t\tvar B = new NetBigInteger(NetUtility.ToHexString(serverPublicEphemeral), 16);\n\t\t\tvar x = new NetBigInteger(NetUtility.ToHexString(xdata), 16);\n\t\t\tvar u = new NetBigInteger(NetUtility.ToHexString(udata), 16);\n\t\t\tvar a = new NetBigInteger(NetUtility.ToHexString(clientPrivateEphemeral), 16);\n\n\t\t\tvar bx = g.ModPow(x, N);\n\t\t\tvar btmp = B.Add(N.Multiply(k)).Subtract(bx.Multiply(k)).Mod(N);\n\t\t\treturn btmp.ModPow(x.Multiply(u).Add(a), N).ToByteArrayUnsigned();\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Create XTEA symmetrical encryption object from sessionValue\n\t\t/// </summary>\n\t\tpublic static NetXtea CreateEncryption(byte[] sessionValue)\n\t\t{\n\t\t\tvar sha = GetHashAlgorithm();\n\t\t\tvar hash = sha.ComputeHash(sessionValue);\n\t\t\t\n\t\t\tvar key = new byte[16];\n\t\t\tfor(int i=0;i<16;i++)\n\t\t\t{\n\t\t\t\tkey[i] = hash[i];\n\t\t\t\tfor (int j = 1; j < hash.Length / 16; j++)\n\t\t\t\t\tkey[i] ^= hash[i + (j * 16)];\n\t\t\t}\n\n\t\t\treturn new NetXtea(key);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Lidgren/NetSendResult.cs",
    "content": "﻿using System;\n\nnamespace Lidgren.Network\n{\n\t/// <summary>\n\t/// Result of a SendMessage call\n\t/// </summary>\n\tpublic enum NetSendResult\n\t{\n\t\t/// <summary>\n\t\t/// Message failed to enqueue because there is no connection\n\t\t/// </summary>\n\t\tFailedNotConnected = 0,\n\n\t\t/// <summary>\n\t\t/// Message was immediately sent\n\t\t/// </summary>\n\t\tSent = 1,\n\n\t\t/// <summary>\n\t\t/// Message was queued for delivery\n\t\t/// </summary>\n\t\tQueued = 2,\n\n\t\t/// <summary>\n\t\t/// Message was dropped immediately since too many message were queued\n\t\t/// </summary>\n\t\tDropped = 3\n\t}\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Lidgren/NetSenderChannelBase.cs",
    "content": "﻿using System;\n\nnamespace Lidgren.Network\n{\n\tinternal abstract class NetSenderChannelBase\n\t{\n\t\t// access this directly to queue things in this channel\n\t\tinternal NetQueue<NetOutgoingMessage> m_queuedSends;\n\n\t\tinternal abstract int WindowSize { get; }\n\n\t\tinternal abstract int GetAllowedSends();\n\n\t\tinternal abstract NetSendResult Enqueue(NetOutgoingMessage message);\n\t\tinternal abstract void SendQueuedMessages(float now);\n\t\tinternal abstract void Reset();\n\t\tinternal abstract void ReceiveAcknowledge(float now, int sequenceNumber);\n\t}\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Lidgren/NetServer.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\n\nnamespace Lidgren.Network\n{\n\t/// <summary>\n\t/// Specialized version of NetPeer used for \"server\" peers\n\t/// </summary>\n\tpublic class NetServer : NetPeer\n\t{\n\t\t/// <summary>\n\t\t/// NetServer constructor\n\t\t/// </summary>\n\t\tpublic NetServer(NetPeerConfiguration config)\n\t\t\t: base(config)\n\t\t{\n\t\t\tconfig.AcceptIncomingConnections = true;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Send a message to all connections\n\t\t/// </summary>\n\t\t/// <param name=\"msg\">The message to send</param>\n\t\t/// <param name=\"method\">How to deliver the message</param>\n\t\tpublic void SendToAll(NetOutgoingMessage msg, NetDeliveryMethod method)\n\t\t{\n\t\t\tvar all = this.Connections;\n            if (all == null || all.Count <= 0)\n\t\t\t\treturn;\n\n\t\t\tSendMessage(msg, all, method, 0);\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Send a message to all connections except one\n\t\t/// </summary>\n\t\t/// <param name=\"msg\">The message to send</param>\n\t\t/// <param name=\"method\">How to deliver the message</param>\n\t\t/// <param name=\"except\">Don't send to this particular connection</param>\n\t\t/// <param name=\"sequenceChannel\">Which sequence channel to use for the message</param>\n\t\tpublic void SendToAll(NetOutgoingMessage msg, NetConnection except, NetDeliveryMethod method, int sequenceChannel)\n\t\t{\n\t\t\tvar all = this.Connections;\n\t\t\tif (all == null || all.Count <= 0)\n\t\t\t\treturn;\n\n\t\t\tif (except == null)\n\t\t\t{\n\t\t\t\tSendMessage(msg, all, method, sequenceChannel);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tList<NetConnection> recipients = new List<NetConnection>(all.Count - 1);\n\t\t\tforeach (var conn in all)\n\t\t\t\tif (conn != except)\n\t\t\t\t\trecipients.Add(conn);\n\n\t\t\tif (recipients.Count > 0)\n\t\t\t\tSendMessage(msg, recipients, method, sequenceChannel);\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Returns a string that represents this object\n\t\t/// </summary>\n\t\tpublic override string ToString()\n\t\t{\n\t\t\treturn \"[NetServer \" + ConnectionsCount + \" connections]\";\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Lidgren/NetStoredReliableMessage.cs",
    "content": "﻿using System;\n\nnamespace Lidgren.Network\n{\n\tinternal struct NetStoredReliableMessage\n\t{\n\t\tpublic int NumSent;\n\t\tpublic float LastSent;\n\t\tpublic NetOutgoingMessage Message;\n\n\t\tpublic void Reset()\n\t\t{\n\t\t\tNumSent = 0;\n\t\t\tLastSent = 0;\n\t\t\tMessage = null;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Lidgren/NetTime.cs",
    "content": "﻿/* Copyright (c) 2010 Michael Lidgren\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software\nand associated documentation files (the \"Software\"), to deal in the Software without\nrestriction, including without limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to permit persons to whom\nthe Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or\nsubstantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\nINCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR\nPURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\nUSE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n#define IS_STOPWATCH_AVAILABLE\n\nusing System;\nusing System.Collections.Generic;\nusing System.Text;\nusing System.Diagnostics;\n\nnamespace Lidgren.Network\n{\n\t/// <summary>\n\t/// Time service\n\t/// </summary>\n\tpublic static class NetTime\n\t{\n#if IS_STOPWATCH_AVAILABLE\n\t\tprivate static readonly long s_timeInitialized = Stopwatch.GetTimestamp();\n\t\tprivate static readonly double s_dInvFreq = 1.0 / (double)Stopwatch.Frequency;\n\n\t\t/// <summary>\n\t\t/// Get number of seconds since the application started\n\t\t/// </summary>\n\t\tpublic static double Now { get { return (double)(Stopwatch.GetTimestamp() - s_timeInitialized) * s_dInvFreq; } }\n#else\n\t\t/// <summary>\n\t\t/// Get number of seconds since the application started\n\t\t/// </summary>\n\t\tpublic static double Now { get { return (double)Environment.TickCount / 1000.0; } }\n#endif\n\n\t\t/// <summary>\n\t\t/// Given seconds it will output a human friendly readable string (milliseconds if less than 60 seconds)\n\t\t/// </summary>\n\t\tpublic static string ToReadable(double seconds)\n\t\t{\n\t\t\tif (seconds > 60)\n\t\t\t\treturn TimeSpan.FromSeconds(seconds).ToString();\n\t\t\treturn (seconds * 1000.0).ToString(\"N2\") + \" ms\";\n\t\t}\n\t}\n}"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Lidgren/NetTuple.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Text;\n\nnamespace Lidgren.Network\n{\n\t// replace with BCL 4.0 Tuple<> when appropriate\n\tinternal struct NetTuple<A, B>\n\t{\n\t\tpublic A Item1;\n\t\tpublic B Item2;\n\n\t\tpublic NetTuple(A item1, B item2)\n\t\t{\n\t\t\tItem1 = item1;\n\t\t\tItem2 = item2;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Lidgren/NetUPnP.cs",
    "content": "﻿using System;\nusing System.IO;\nusing System.Xml;\nusing System.Net;\nusing System.Net.Sockets;\nusing System.Threading;\n\nnamespace Lidgren.Network\n{\n\t/// <summary>\n\t/// UPnP support class\n\t/// </summary>\n\tpublic class NetUPnP\n\t{\n\t\tprivate const int c_discoveryTimeOutMillis = 1000;\n\n\t\tprivate string m_serviceUrl;\n\t\tprivate NetPeer m_peer;\n\t\tprivate ManualResetEvent m_discoveryComplete = new ManualResetEvent(false);\n\n\t\t/// <summary>\n\t\t/// NetUPnP constructor\n\t\t/// </summary>\n\t\tpublic NetUPnP(NetPeer peer)\n\t\t{\n\t\t\tm_peer = peer;\n\t\t}\n\n\t\tinternal void Discover(NetPeer peer)\n\t\t{\n\t\t\tstring str =\n\"M-SEARCH * HTTP/1.1\\r\\n\" +\n\"HOST: 239.255.255.250:1900\\r\\n\" +\n\"ST:upnp:rootdevice\\r\\n\" +\n\"MAN:\\\"ssdp:discover\\\"\\r\\n\" +\n\"MX:3\\r\\n\\r\\n\";\n\n\t\t\tbyte[] arr = System.Text.Encoding.ASCII.GetBytes(str);\n\n\t\t\tpeer.Socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, true);\n\t\t\tpeer.RawSend(arr, 0, arr.Length, new IPEndPoint(IPAddress.Broadcast, 1900));\n\t\t\tpeer.Socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, false);\n\n\t\t\t// allow some extra time for router to respond\n\t\t\t// System.Threading.Thread.Sleep(50);\n\t\t}\n\n\t\tinternal void ExtractServiceUrl(string resp)\n\t\t{\n#if !DEBUG\n            try\n            {\n#endif\n\t\t\tXmlDocument desc = new XmlDocument();\n\t\t\tdesc.Load(WebRequest.Create(resp).GetResponse().GetResponseStream());\n\t\t\tXmlNamespaceManager nsMgr = new XmlNamespaceManager(desc.NameTable);\n\t\t\tnsMgr.AddNamespace(\"tns\", \"urn:schemas-upnp-org:device-1-0\");\n\t\t\tXmlNode typen = desc.SelectSingleNode(\"//tns:device/tns:deviceType/text()\", nsMgr);\n\t\t\tif (!typen.Value.Contains(\"InternetGatewayDevice\"))\n\t\t\t\treturn;\n\t\t\tXmlNode node = desc.SelectSingleNode(\"//tns:service[tns:serviceType=\\\"urn:schemas-upnp-org:service:WANIPConnection:1\\\"]/tns:controlURL/text()\", nsMgr);\n\t\t\tif (node == null)\n\t\t\t\treturn;\n\t\t\tm_serviceUrl = CombineUrls(resp, node.Value);\n\t\t\tm_peer.LogDebug(\"UPnP service ready\");\n\t\t\tm_discoveryComplete.Set();\n#if !DEBUG\n            }\n            catch { return; }\n#endif\n\t\t}\n\n\t\tprivate static string CombineUrls(string gatewayURL, string subURL)\n\t\t{\n\t\t\t// Is Control URL an absolute URL?\n\t\t\tif ((subURL.Contains(\"http:\")) || (subURL.Contains(\".\")))\n\t\t\t\treturn subURL;\n\n\t\t\tgatewayURL = gatewayURL.Replace(\"http://\", \"\");  // strip any protocol\n\t\t\tint n = gatewayURL.IndexOf(\"/\");\n\t\t\tif (n != -1)\n\t\t\t\tgatewayURL = gatewayURL.Substring(0, n);  // Use first portion of URL\n\t\t\treturn \"http://\" + gatewayURL + subURL;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Add a forwarding rule to the router using UPnP\n\t\t/// </summary>\n\t\tpublic bool ForwardPort(int port, string description)\n\t\t{\n\t\t\tif (m_serviceUrl == null && !m_discoveryComplete.WaitOne(c_discoveryTimeOutMillis))\n\t\t\t\treturn false;\n\n\t\t\tIPAddress mask;\n\t\t\tvar client = NetUtility.GetMyAddress(out mask);\n\t\t\tif (client == null)\n\t\t\t\treturn false;\n\n\t\t\ttry\n\t\t\t{\n\t\t\t\tXmlDocument xdoc = SOAPRequest(m_serviceUrl,\n\t\t\t\t\t\"<u:AddPortMapping xmlns:u=\\\"urn:schemas-upnp-org:service:WANIPConnection:1\\\">\" +\n\t\t\t\t\t\"<NewRemoteHost></NewRemoteHost><NewExternalPort>\" + port.ToString() + \"</NewExternalPort>\" +\n\t\t\t\t\t\"<NewProtocol>\" + ProtocolType.Udp.ToString().ToUpper() + \"</NewProtocol>\" +\n\t\t\t\t\t\"<NewInternalPort>\" + port.ToString() + \"</NewInternalPort>\" +\n\t\t\t\t\t\"<NewInternalClient>\" + client.ToString() + \"</NewInternalClient>\" +\n\t\t\t\t\t\"<NewEnabled>1</NewEnabled>\" +\n\t\t\t\t\t\"<NewPortMappingDescription>\" + description + \"</NewPortMappingDescription>\" +\n\t\t\t\t\t\"<NewLeaseDuration>0</NewLeaseDuration>\" +\n\t\t\t\t\t\"</u:AddPortMapping>\",\n\t\t\t\t\t\"AddPortMapping\");\n\n\t\t\t\tm_peer.LogDebug(\"Sent UPnP port forward request\");\n\t\t\t\tSystem.Threading.Thread.Sleep(50);\n\t\t\t}\n\t\t\tcatch (Exception ex)\n\t\t\t{\n\t\t\t\tm_peer.LogWarning(\"UPnP port forward failed: \" + ex.Message);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Delete a forwarding rule from the router using UPnP\n\t\t/// </summary>\n\t\tpublic bool DeleteForwardingRule(int port)\n\t\t{\n\t\t\tif (m_serviceUrl == null && !m_discoveryComplete.WaitOne(c_discoveryTimeOutMillis))\n\t\t\t\treturn false;\n\t\t\ttry\n\t\t\t{\n\t\t\t\tXmlDocument xdoc = SOAPRequest(m_serviceUrl,\n\t\t\t\t\"<u:DeletePortMapping xmlns:u=\\\"urn:schemas-upnp-org:service:WANIPConnection:1\\\">\" +\n\t\t\t\t\"<NewRemoteHost>\" +\n\t\t\t\t\"</NewRemoteHost>\" +\n\t\t\t\t\"<NewExternalPort>\" + port + \"</NewExternalPort>\" +\n\t\t\t\t\"<NewProtocol>\" + ProtocolType.Udp.ToString().ToUpper() + \"</NewProtocol>\" +\n\t\t\t\t\"</u:DeletePortMapping>\", \"DeletePortMapping\");\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tcatch (Exception ex)\n\t\t\t{\n\t\t\t\tm_peer.LogWarning(\"UPnP delete forwarding rule failed: \" + ex.Message);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Retrieve the extern ip using UPnP\n\t\t/// </summary>\n\t\tpublic IPAddress GetExternalIP()\n\t\t{\n\t\t\tif (m_serviceUrl == null && !m_discoveryComplete.WaitOne(c_discoveryTimeOutMillis))\n\t\t\t\treturn null;\n\t\t\ttry\n\t\t\t{\n\t\t\t\tXmlDocument xdoc = SOAPRequest(m_serviceUrl, \"<u:GetExternalIPAddress xmlns:u=\\\"urn:schemas-upnp-org:service:WANIPConnection:1\\\">\" +\n\t\t\t\t\"</u:GetExternalIPAddress>\", \"GetExternalIPAddress\");\n\t\t\t\tXmlNamespaceManager nsMgr = new XmlNamespaceManager(xdoc.NameTable);\n\t\t\t\tnsMgr.AddNamespace(\"tns\", \"urn:schemas-upnp-org:device-1-0\");\n\t\t\t\tstring IP = xdoc.SelectSingleNode(\"//NewExternalIPAddress/text()\", nsMgr).Value;\n\t\t\t\treturn IPAddress.Parse(IP);\n\t\t\t}\n\t\t\tcatch (Exception ex)\n\t\t\t{\n\t\t\t\tm_peer.LogWarning(\"Failed to get external IP: \" + ex.Message);\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\n\t\tprivate XmlDocument SOAPRequest(string url, string soap, string function)\n\t\t{\n\t\t\tstring req = \"<?xml version=\\\"1.0\\\"?>\" +\n\t\t\t\"<s:Envelope xmlns:s=\\\"http://schemas.xmlsoap.org/soap/envelope/\\\" s:encodingStyle=\\\"http://schemas.xmlsoap.org/soap/encoding/\\\">\" +\n\t\t\t\"<s:Body>\" +\n\t\t\tsoap +\n\t\t\t\"</s:Body>\" +\n\t\t\t\"</s:Envelope>\";\n\t\t\tWebRequest r = HttpWebRequest.Create(url);\n\t\t\tr.Method = \"POST\";\n\t\t\tbyte[] b = System.Text.Encoding.UTF8.GetBytes(req);\n\t\t\tr.Headers.Add(\"SOAPACTION\", \"\\\"urn:schemas-upnp-org:service:WANIPConnection:1#\" + function + \"\\\"\");\n\t\t\tr.ContentType = \"text/xml; charset=\\\"utf-8\\\"\";\n\t\t\tr.ContentLength = b.Length;\n\t\t\tr.GetRequestStream().Write(b, 0, b.Length);\n\t\t\tXmlDocument resp = new XmlDocument();\n\t\t\tWebResponse wres = r.GetResponse();\n\t\t\tStream ress = wres.GetResponseStream();\n\t\t\tresp.Load(ress);\n\t\t\treturn resp;\n\t\t}\n\t}\n}"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Lidgren/NetUnreliableSenderChannel.cs",
    "content": "﻿using System;\nusing System.Threading;\n\nnamespace Lidgren.Network\n{\n\t/// <summary>\n\t/// Sender part of Selective repeat ARQ for a particular NetChannel\n\t/// </summary>\n\tinternal sealed class NetUnreliableSenderChannel : NetSenderChannelBase\n\t{\n\t\tprivate NetConnection m_connection;\n\t\tprivate int m_windowStart;\n\t\tprivate int m_windowSize;\n\t\tprivate int m_sendStart;\n\n\t\tprivate NetBitVector m_receivedAcks;\n\n\t\tinternal override int WindowSize { get { return m_windowSize; } }\n\n\t\tinternal NetUnreliableSenderChannel(NetConnection connection, int windowSize)\n\t\t{\n\t\t\tm_connection = connection;\n\t\t\tm_windowSize = windowSize;\n\t\t\tm_windowStart = 0;\n\t\t\tm_sendStart = 0;\n\t\t\tm_receivedAcks = new NetBitVector(NetConstants.NumSequenceNumbers);\n\t\t\tm_queuedSends = new NetQueue<NetOutgoingMessage>(8);\n\t\t}\n\n\t\tinternal override int GetAllowedSends()\n\t\t{\n\t\t\tint retval = m_windowSize - ((m_sendStart + NetConstants.NumSequenceNumbers) - m_windowStart) % m_windowSize;\n\t\t\tNetException.Assert(retval >= 0 && retval <= m_windowSize);\n\t\t\treturn retval;\n\t\t}\n\n\t\tinternal override void Reset()\n\t\t{\n\t\t\tm_receivedAcks.Clear();\n\t\t\tm_queuedSends.Clear();\n\t\t\tm_windowStart = 0;\n\t\t\tm_sendStart = 0;\n\t\t}\n\n\t\tinternal override NetSendResult Enqueue(NetOutgoingMessage message)\n\t\t{\n\t\t\tint queueLen = m_queuedSends.Count + 1;\n\t\t\tint left = m_windowSize - ((m_sendStart + NetConstants.NumSequenceNumbers) - m_windowStart) % NetConstants.NumSequenceNumbers;\n\t\t\tif (queueLen > left)\n\t\t\t\treturn NetSendResult.Dropped;\n\n\t\t\tm_queuedSends.Enqueue(message);\n\t\t\treturn NetSendResult.Sent;\n\t\t}\n\n\t\t// call this regularely\n\t\tinternal override void SendQueuedMessages(float now)\n\t\t{\n\t\t\tint num = GetAllowedSends();\n\t\t\tif (num < 1)\n\t\t\t\treturn;\n\n\t\t\t// queued sends\n\t\t\twhile (m_queuedSends.Count > 0 && num > 0)\n\t\t\t{\n\t\t\t\tNetOutgoingMessage om;\n\t\t\t\tif (m_queuedSends.TryDequeue(out om))\n\t\t\t\t\tExecuteSend(now, om);\n\t\t\t\tnum--;\n\t\t\t}\n\t\t}\n\n\t\tprivate void ExecuteSend(float now, NetOutgoingMessage message)\n\t\t{\n\t\t\tm_connection.m_peer.VerifyNetworkThread();\n\n\t\t\tint seqNr = m_sendStart;\n\t\t\tm_sendStart = (m_sendStart + 1) % NetConstants.NumSequenceNumbers;\n\n\t\t\tm_connection.QueueSendMessage(message, seqNr);\n\n\t\t\tInterlocked.Decrement(ref message.m_recyclingCount);\n\t\t\tif (message.m_recyclingCount <= 0)\n\t\t\t\tm_connection.m_peer.Recycle(message);\n\n\t\t\treturn;\n\t\t}\n\t\t\n\t\t// remoteWindowStart is remote expected sequence number; everything below this has arrived properly\n\t\t// seqNr is the actual nr received\n\t\tinternal override void ReceiveAcknowledge(float now, int seqNr)\n\t\t{\n\t\t\t// late (dupe), on time or early ack?\n\t\t\tint relate = NetUtility.RelativeSequenceNumber(seqNr, m_windowStart);\n\n\t\t\tif (relate < 0)\n\t\t\t{\n\t\t\t\t//m_connection.m_peer.LogDebug(\"Received late/dupe ack for #\" + seqNr);\n\t\t\t\treturn; // late/duplicate ack\n\t\t\t}\n\n\t\t\tif (relate == 0)\n\t\t\t{\n\t\t\t\t//m_connection.m_peer.LogDebug(\"Received right-on-time ack for #\" + seqNr);\n\n\t\t\t\t// ack arrived right on time\n\t\t\t\tNetException.Assert(seqNr == m_windowStart);\n\n\t\t\t\tm_receivedAcks[m_windowStart] = false;\n\t\t\t\tm_windowStart = (m_windowStart + 1) % NetConstants.NumSequenceNumbers;\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Advance window to this position\n\t\t\tm_receivedAcks[seqNr] = true;\n\n\t\t\twhile (m_windowStart != seqNr)\n\t\t\t{\n\t\t\t\tm_receivedAcks[m_windowStart] = false;\n\t\t\t\tm_windowStart = (m_windowStart + 1) % NetConstants.NumSequenceNumbers;\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Lidgren/NetUnreliableSequencedReceiver.cs",
    "content": "﻿using System;\n\nnamespace Lidgren.Network\n{\n\tinternal sealed class NetUnreliableSequencedReceiver : NetReceiverChannelBase\n\t{\n\t\tprivate int m_lastReceivedSequenceNumber;\n\n\t\tpublic NetUnreliableSequencedReceiver(NetConnection connection)\n\t\t\t: base(connection)\n\t\t{\n\t\t}\n\n\t\tinternal override void ReceiveMessage(NetIncomingMessage msg)\n\t\t{\n\t\t\tint nr = msg.m_sequenceNumber;\n\n\t\t\t// ack no matter what\n\t\t\tm_connection.QueueAck(msg.m_receivedMessageType, nr);\n\n\t\t\tint relate = NetUtility.RelativeSequenceNumber(nr, m_lastReceivedSequenceNumber);\n\t\t\tif (relate < 0)\n\t\t\t\treturn; // drop if late\n\n\t\t\tm_lastReceivedSequenceNumber = nr;\n\t\t\tm_peer.ReleaseMessage(msg);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Lidgren/NetUnreliableUnorderedReceiver.cs",
    "content": "﻿using System;\n\nnamespace Lidgren.Network\n{\n\tinternal sealed class NetUnreliableUnorderedReceiver : NetReceiverChannelBase\n\t{\n\t\tpublic NetUnreliableUnorderedReceiver(NetConnection connection)\n\t\t\t: base(connection)\n\t\t{\n\t\t}\n\n\t\tinternal override void ReceiveMessage(NetIncomingMessage msg)\n\t\t{\n\t\t\t// ack no matter what\n\t\t\tm_connection.QueueAck(msg.m_receivedMessageType, msg.m_sequenceNumber);\n\n\t\t\tm_peer.ReleaseMessage(msg);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Lidgren/NetUtility.cs",
    "content": "﻿/* Copyright (c) 2010 Michael Lidgren\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software\nand associated documentation files (the \"Software\"), to deal in the Software without\nrestriction, including without limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to permit persons to whom\nthe Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or\nsubstantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\nINCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR\nPURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\nUSE OR OTHER DEALINGS IN THE SOFTWARE.\n*/\n#define IS_FULL_NET_AVAILABLE\n\nusing System;\nusing System.Net;\nusing System.Net.NetworkInformation;\nusing System.Net.Sockets;\nusing System.Text;\nusing System.Text.RegularExpressions;\n\nnamespace Lidgren.Network\n{\n\t/// <summary>\n\t/// Utility methods\n\t/// </summary>\n\tpublic static class NetUtility\n\t{\n\t\tpublic delegate void ResolveEndPointCallback(IPEndPoint endpoint);\n\t\tpublic delegate void ResolveAddressCallback(IPAddress adr);\n\n\t\t/// <summary>\n\t\t/// Get IPv4 endpoint from notation (xxx.xxx.xxx.xxx) or hostname and port number (asynchronous version)\n\t\t/// </summary>\n\t\tpublic static void ResolveAsync(string ipOrHost, int port, ResolveEndPointCallback callback)\n\t\t{\n\t\t\tResolveAsync(ipOrHost, delegate(IPAddress adr)\n\t\t\t{\n\t\t\t\tif (adr == null)\n\t\t\t\t{\n\t\t\t\t\tcallback(null);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tcallback(new IPEndPoint(adr, port));\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Get IPv4 endpoint from notation (xxx.xxx.xxx.xxx) or hostname and port number\n\t\t/// </summary>\n\t\tpublic static IPEndPoint Resolve(string ipOrHost, int port)\n\t\t{\n\t\t\tIPAddress adr = Resolve(ipOrHost);\n\t\t\treturn new IPEndPoint(adr, port);\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Get IPv4 address from notation (xxx.xxx.xxx.xxx) or hostname (asynchronous version)\n\t\t/// </summary>\n\t\tpublic static void ResolveAsync(string ipOrHost, ResolveAddressCallback callback)\n\t\t{\n\t\t\tif (string.IsNullOrEmpty(ipOrHost))\n\t\t\t\tthrow new ArgumentException(\"Supplied string must not be empty\", \"ipOrHost\");\n\n\t\t\tipOrHost = ipOrHost.Trim();\n\n\t\t\tIPAddress ipAddress = null;\n\t\t\tif (IPAddress.TryParse(ipOrHost, out ipAddress))\n\t\t\t{\n\t\t\t\tif (ipAddress.AddressFamily == AddressFamily.InterNetwork)\n\t\t\t\t{\n\t\t\t\t\tcallback(ipAddress);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthrow new ArgumentException(\"This method will not currently resolve other than ipv4 addresses\");\n\t\t\t}\n\n\t\t\t// ok must be a host name\n\t\t\tIPHostEntry entry;\n\t\t\ttry\n\t\t\t{\n\t\t\t\tDns.BeginGetHostEntry(ipOrHost, delegate(IAsyncResult result)\n\t\t\t\t{\n\t\t\t\t\ttry\n\t\t\t\t\t{\n\t\t\t\t\t\tentry = Dns.EndGetHostEntry(result);\n\t\t\t\t\t}\n\t\t\t\t\tcatch (SocketException ex)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (ex.SocketErrorCode == SocketError.HostNotFound)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t//LogWrite(string.Format(CultureInfo.InvariantCulture, \"Failed to resolve host '{0}'.\", ipOrHost));\n\t\t\t\t\t\t\tcallback(null);\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tthrow;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (entry == null)\n\t\t\t\t\t{\n\t\t\t\t\t\tcallback(null);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t// check each entry for a valid IP address\n\t\t\t\t\tforeach (IPAddress ipCurrent in entry.AddressList)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (ipCurrent.AddressFamily == AddressFamily.InterNetwork)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcallback(ipCurrent);\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tcallback(null);\n\t\t\t\t}, null);\n\t\t\t}\n\t\t\tcatch (SocketException ex)\n\t\t\t{\n\t\t\t\tif (ex.SocketErrorCode == SocketError.HostNotFound)\n\t\t\t\t{\n\t\t\t\t\t//LogWrite(string.Format(CultureInfo.InvariantCulture, \"Failed to resolve host '{0}'.\", ipOrHost));\n\t\t\t\t\tcallback(null);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tthrow;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Get IPv4 address from notation (xxx.xxx.xxx.xxx) or hostname\n\t\t/// </summary>\n\t\tpublic static IPAddress Resolve(string ipOrHost)\n\t\t{\n\t\t\tif (string.IsNullOrEmpty(ipOrHost))\n\t\t\t\tthrow new ArgumentException(\"Supplied string must not be empty\", \"ipOrHost\");\n\n\t\t\tipOrHost = ipOrHost.Trim();\n\n\t\t\tIPAddress ipAddress = null;\n\t\t\tif (IPAddress.TryParse(ipOrHost, out ipAddress))\n\t\t\t{\n\t\t\t\tif (ipAddress.AddressFamily == AddressFamily.InterNetwork)\n\t\t\t\t\treturn ipAddress;\n\t\t\t\tthrow new ArgumentException(\"This method will not currently resolve other than ipv4 addresses\");\n\t\t\t}\n\n\t\t\t// ok must be a host name\n\t\t\tIPHostEntry entry;\n\t\t\ttry\n\t\t\t{\n\t\t\t\tentry = Dns.GetHostEntry(ipOrHost);\n\t\t\t\tif (entry == null)\n\t\t\t\t\treturn null;\n\n\t\t\t\t// check each entry for a valid IP address\n\t\t\t\tforeach (IPAddress ipCurrent in entry.AddressList)\n\t\t\t\t{\n\t\t\t\t\tif (ipCurrent.AddressFamily == AddressFamily.InterNetwork)\n\t\t\t\t\t\treturn ipCurrent;\n\t\t\t\t}\n\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tcatch (SocketException ex)\n\t\t\t{\n\t\t\t\tif (ex.SocketErrorCode == SocketError.HostNotFound)\n\t\t\t\t{\n\t\t\t\t\t//LogWrite(string.Format(CultureInfo.InvariantCulture, \"Failed to resolve host '{0}'.\", ipOrHost));\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tthrow;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n#if IS_FULL_NET_AVAILABLE\n\n\t\tprivate static NetworkInterface GetNetworkInterface()\n\t\t{\n\t\t\tIPGlobalProperties computerProperties = IPGlobalProperties.GetIPGlobalProperties();\n\t\t\tif (computerProperties == null)\n\t\t\t\treturn null;\n\n\t\t\tNetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces();\n\t\t\tif (nics == null || nics.Length < 1)\n\t\t\t\treturn null;\n\n\t\t\tNetworkInterface best = null;\n\t\t\tforeach (NetworkInterface adapter in nics)\n\t\t\t{\n\t\t\t\tif (adapter.NetworkInterfaceType == NetworkInterfaceType.Loopback || adapter.NetworkInterfaceType == NetworkInterfaceType.Unknown)\n\t\t\t\t\tcontinue;\n\t\t\t\tif (!adapter.Supports(NetworkInterfaceComponent.IPv4))\n\t\t\t\t\tcontinue;\n\t\t\t\tif (best == null)\n\t\t\t\t\tbest = adapter;\n\t\t\t\tif (adapter.OperationalStatus != OperationalStatus.Up)\n\t\t\t\t\tcontinue;\n\n\t\t\t\t// A computer could have several adapters (more than one network card)\n\t\t\t\t// here but just return the first one for now...\n\t\t\t\treturn adapter;\n\t\t\t}\n\t\t\treturn best;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Returns the physical (MAC) address for the first usable network interface\n\t\t/// </summary>\n\t\tpublic static PhysicalAddress GetMacAddress()\n\t\t{\n\t\t\tNetworkInterface ni = GetNetworkInterface();\n\t\t\tif (ni == null)\n\t\t\t\treturn null;\n\t\t\treturn ni.GetPhysicalAddress();\n\t\t}\n#endif\n\n\t\t/// <summary>\n\t\t/// Create a hex string from an Int64 value\n\t\t/// </summary>\n\t\tpublic static string ToHexString(long data)\n\t\t{\n\t\t\treturn ToHexString(BitConverter.GetBytes(data));\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Create a hex string from an array of bytes\n\t\t/// </summary>\n\t\tpublic static string ToHexString(byte[] data)\n\t\t{\n\t\t\tchar[] c = new char[data.Length * 2];\n\t\t\tbyte b;\n\t\t\tfor (int i = 0; i < data.Length; ++i)\n\t\t\t{\n\t\t\t\tb = ((byte)(data[i] >> 4));\n\t\t\t\tc[i * 2] = (char)(b > 9 ? b + 0x37 : b + 0x30);\n\t\t\t\tb = ((byte)(data[i] & 0xF));\n\t\t\t\tc[i * 2 + 1] = (char)(b > 9 ? b + 0x37 : b + 0x30);\n\t\t\t}\n\t\t\treturn new string(c);\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Gets my local IP address (not necessarily external) and subnet mask\n\t\t/// </summary>\n\t\tpublic static IPAddress GetMyAddress(out IPAddress mask)\n\t\t{\n#if IS_FULL_NET_AVAILABLE\n\t\t\tNetworkInterface ni = GetNetworkInterface();\n\t\t\tif (ni == null)\n\t\t\t{\n\t\t\t\tmask = null;\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tIPInterfaceProperties properties = ni.GetIPProperties();\n\t\t\tforeach (UnicastIPAddressInformation unicastAddress in properties.UnicastAddresses)\n\t\t\t{\n\t\t\t\tif (unicastAddress != null && unicastAddress.Address != null && unicastAddress.Address.AddressFamily == AddressFamily.InterNetwork)\n\t\t\t\t{\n\t\t\t\t\tmask = unicastAddress.IPv4Mask;\n\t\t\t\t\treturn unicastAddress.Address;\n\t\t\t\t}\n\t\t\t}\n#endif\n\t\t\tmask = null;\n\t\t\treturn null;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Returns true if the IPEndPoint supplied is on the same subnet as this host\n\t\t/// </summary>\n\t\tpublic static bool IsLocal(IPEndPoint endpoint)\n\t\t{\n\t\t\tif (endpoint == null)\n\t\t\t\treturn false;\n\t\t\treturn IsLocal(endpoint.Address);\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Returns true if the IPAddress supplied is on the same subnet as this host\n\t\t/// </summary>\n\t\tpublic static bool IsLocal(IPAddress remote)\n\t\t{\n\t\t\tIPAddress mask;\n\t\t\tIPAddress local = GetMyAddress(out mask);\n\n\t\t\tif (mask == null)\n\t\t\t\treturn false;\n\n\t\t\tuint maskBits = BitConverter.ToUInt32(mask.GetAddressBytes(), 0);\n\t\t\tuint remoteBits = BitConverter.ToUInt32(remote.GetAddressBytes(), 0);\n\t\t\tuint localBits = BitConverter.ToUInt32(local.GetAddressBytes(), 0);\n\n\t\t\t// compare network portions\n\t\t\treturn ((remoteBits & maskBits) == (localBits & maskBits));\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Returns how many bits are necessary to hold a certain number\n\t\t/// </summary>\n\t\t[CLSCompliant(false)]\n\t\tpublic static int BitsToHoldUInt(uint value)\n\t\t{\n\t\t\tint bits = 1;\n\t\t\twhile ((value >>= 1) != 0)\n\t\t\t\tbits++;\n\t\t\treturn bits;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Returns how many bytes are required to hold a certain number of bits\n\t\t/// </summary>\n\t\tpublic static int BytesToHoldBits(int numBits)\n\t\t{\n\t\t\treturn (numBits + 7) / 8;\n\t\t}\n\n\t\tinternal static UInt32 SwapByteOrder(UInt32 value)\n\t\t{\n\t\t\treturn\n\t\t\t\t((value & 0xff000000) >> 24) |\n\t\t\t\t((value & 0x00ff0000) >> 8) |\n\t\t\t\t((value & 0x0000ff00) << 8) |\n\t\t\t\t((value & 0x000000ff) << 24);\n\t\t}\n\n\t\tinternal static UInt64 SwapByteOrder(UInt64 value)\n\t\t{\n\t\t\treturn\n\t\t\t\t((value & 0xff00000000000000L) >> 56) |\n\t\t\t\t((value & 0x00ff000000000000L) >> 40) |\n\t\t\t\t((value & 0x0000ff0000000000L) >> 24) |\n\t\t\t\t((value & 0x000000ff00000000L) >> 8) |\n\t\t\t\t((value & 0x00000000ff000000L) << 8) |\n\t\t\t\t((value & 0x0000000000ff0000L) << 24) |\n\t\t\t\t((value & 0x000000000000ff00L) << 40) |\n\t\t\t\t((value & 0x00000000000000ffL) << 56);\n\t\t}\n\n\t\tinternal static bool CompareElements(byte[] one, byte[] two)\n\t\t{\n\t\t\tif (one.Length != two.Length)\n\t\t\t\treturn false;\n\t\t\tfor (int i = 0; i < one.Length; i++)\n\t\t\t\tif (one[i] != two[i])\n\t\t\t\t\treturn false;\n\t\t\treturn true;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Convert a hexadecimal string to a byte array\n\t\t/// </summary>\n\t\tpublic static byte[] ToByteArray(String hexString)\n\t\t{\n\t\t\tbyte[] retval = new byte[hexString.Length / 2];\n\t\t\tfor (int i = 0; i < hexString.Length; i += 2)\n\t\t\t\tretval[i / 2] = Convert.ToByte(hexString.Substring(i, 2), 16);\n\t\t\treturn retval;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Converts a number of bytes to a shorter, more readable string representation\n\t\t/// </summary>\n\t\tpublic static string ToHumanReadable(long bytes)\n\t\t{\n\t\t\tif (bytes < 4000) // 1-4 kb is printed in bytes\n\t\t\t\treturn bytes + \" bytes\";\n\t\t\tif (bytes < 1000 * 1000) // 4-999 kb is printed in kb\n\t\t\t\treturn Math.Round(((double)bytes / 1000.0), 2) + \" kilobytes\";\n\t\t\treturn Math.Round(((double)bytes / (1000.0 * 1000.0)), 2) + \" megabytes\"; // else megabytes\n\t\t}\n\n\t\tinternal static int RelativeSequenceNumber(int nr, int expected)\n\t\t{\n\t\t\tint retval = ((nr + NetConstants.NumSequenceNumbers) - expected) % NetConstants.NumSequenceNumbers;\n\t\t\tif (retval > (NetConstants.NumSequenceNumbers / 2))\n\t\t\t\tretval -= NetConstants.NumSequenceNumbers;\n\t\t\treturn retval;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Gets the window size used internally in the library for a certain delivery method\n\t\t/// </summary>\n\t\tpublic static int GetWindowSize(NetDeliveryMethod method)\n\t\t{\n\t\t\tswitch (method)\n\t\t\t{\n\t\t\t\tcase NetDeliveryMethod.Unknown:\n\t\t\t\t\treturn 0;\n\n\t\t\t\tcase NetDeliveryMethod.Unreliable:\n\t\t\t\tcase NetDeliveryMethod.UnreliableSequenced:\n\t\t\t\t\treturn NetConstants.UnreliableWindowSize;\n\n\t\t\t\tcase NetDeliveryMethod.ReliableOrdered:\n\t\t\t\t\treturn NetConstants.ReliableOrderedWindowSize;\n\n\t\t\t\tcase NetDeliveryMethod.ReliableSequenced:\n\t\t\t\tcase NetDeliveryMethod.ReliableUnordered:\n\t\t\t\tdefault:\n\t\t\t\t\treturn NetConstants.DefaultWindowSize;\n\t\t\t}\n\t\t}\n\n\t\t// shell sort\n\t\tinternal static void SortMembersList(System.Reflection.MemberInfo[] list)\n\t\t{\n\t\t\tint h;\n\t\t\tint j;\n\t\t\tSystem.Reflection.MemberInfo tmp;\n\n\t\t\th = 1;\n\t\t\twhile (h * 3 + 1 <= list.Length)\n\t\t\t\th = 3 * h + 1;\n\n\t\t\twhile (h > 0)\n\t\t\t{\n\t\t\t\tfor (int i = h - 1; i < list.Length; i++)\n\t\t\t\t{\n\t\t\t\t\ttmp = list[i];\n\t\t\t\t\tj = i;\n\t\t\t\t\twhile (true)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (j >= h)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (string.Compare(list[j - h].Name, tmp.Name, StringComparison.InvariantCulture) > 0)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tlist[j] = list[j - h];\n\t\t\t\t\t\t\t\tj -= h;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tlist[j] = tmp;\n\t\t\t\t}\n\t\t\t\th /= 3;\n\t\t\t}\n\t\t}\n\n\t\tinternal static NetDeliveryMethod GetDeliveryMethod(NetMessageType mtp)\n\t\t{\n\t\t\tif (mtp >= NetMessageType.UserReliableOrdered1)\n\t\t\t\treturn NetDeliveryMethod.ReliableOrdered;\n\t\t\telse if (mtp >= NetMessageType.UserReliableSequenced1)\n\t\t\t\treturn NetDeliveryMethod.ReliableSequenced;\n\t\t\telse if (mtp >= NetMessageType.UserReliableUnordered)\n\t\t\t\treturn NetDeliveryMethod.ReliableUnordered;\n\t\t\telse if (mtp >= NetMessageType.UserSequenced1)\n\t\t\t\treturn NetDeliveryMethod.UnreliableSequenced;\n\t\t\treturn NetDeliveryMethod.Unreliable;\n\t\t}\n\t}\n}"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Lidgren/SenderChannelBase.cs",
    "content": "﻿using System;\n\nnamespace Lidgren.Network\n{\n\tinternal abstract class SenderChannelBase\n\t{\n\t\tinternal abstract NetSendResult Send(float now, NetOutgoingMessage message);\n\t\tinternal abstract void SendQueuedMessages(float now);\n\t\tinternal abstract void Reset();\n\t}\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Multiplayer/MyEventAddExplosion.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Net;\nusing Lidgren.Network;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWarsMath;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking.Multiplayer\n{\n    [Flags]\n    public enum ExplosionFlags : byte\n    {\n        FORCE_DEBRIS,\n        CREATE_DECALS,\n    }\n\n    public struct MyEventAddExplosion : IMyEvent\n    {\n        public uint? EntityId;\n        public Vector3? Position;\n        public byte ExplosionType;\n        public float Radius;\n        public float Damage;\n        public ExplosionFlags ExplosionFlags;\n        public int? ParticleIDOverride;\n\n        public bool CreateDecals\n        {\n            get\n            {\n                return (ExplosionFlags & Multiplayer.ExplosionFlags.CREATE_DECALS) != 0;\n            }\n            set\n            {\n                if (value)\n                    ExplosionFlags |= Multiplayer.ExplosionFlags.CREATE_DECALS;\n                else\n                    ExplosionFlags &= ~Multiplayer.ExplosionFlags.CREATE_DECALS;\n            }\n        }\n\n        public bool ForceDebris\n        {\n            get\n            {\n                return (ExplosionFlags & Multiplayer.ExplosionFlags.FORCE_DEBRIS) != 0;\n            }\n            set\n            {\n                if (value)\n                    ExplosionFlags |= Multiplayer.ExplosionFlags.FORCE_DEBRIS;\n                else\n                    ExplosionFlags &= ~Multiplayer.ExplosionFlags.FORCE_DEBRIS;\n            }\n        }\n\n        public bool Read(MyMessageReader msg)\n        {\n            return msg.ReadUInt32Nullable(ref EntityId)\n                && msg.ReadByte(ref ExplosionType)\n                && msg.ReadVector3Nullable(ref Position)\n                && msg.ReadFloat(ref Radius)\n                && msg.ReadFloat(ref Damage)\n                && msg.ReadEnum(ref ExplosionFlags)\n                && msg.ReadInt32Nullable(ref ParticleIDOverride);\n        }\n\n        public void Write(MyMessageWriter msg)\n        {\n            msg.WriteUInt32Nullable(EntityId);\n            msg.WriteByte(ExplosionType);\n            msg.WriteVector3Nullable(Position);\n            msg.WriteFloat(Radius);\n            msg.WriteFloat(Damage);\n            msg.WriteEnum(ExplosionFlags);\n            msg.WriteInt32Nullable(ParticleIDOverride);\n        }\n\n        public NetConnection SenderConnection { get; set; }\n        public IPEndPoint SenderEndpoint { get; set; }\n        public MyEventEnum EventType { get { return MyEventEnum.ADD_EXPLOSION; } }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Multiplayer/MyEventAddVoxelHand.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.IO;\nusing System.Net;\nusing Lidgren.Network;\nusing MinerWarsMath;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking.Multiplayer\n{\n    public struct MyEventAddVoxelHand : IMyEvent\n    {\n        public uint VoxelMapEntityId;\n        public uint EntityId;\n        public float Radius;\n        public MyMwcVoxelHandModeTypeEnum HandMode;\n        public MyMwcVoxelMaterialsEnum? VoxelMaterial;\n\n        public bool Read(MyMessageReader msg)\n        {\n            return msg.ReadUInt32(ref VoxelMapEntityId)\n                && msg.ReadUInt32(ref EntityId)\n                && msg.ReadFloat(ref Radius)\n                && msg.ReadEnum(ref HandMode)\n                && msg.ReadEnumNullable(ref VoxelMaterial);\n        }\n\n        public void Write(MyMessageWriter msg)\n        {\n            msg.WriteUInt32(VoxelMapEntityId);\n            msg.WriteUInt32(EntityId);\n            msg.WriteFloat(Radius);\n            msg.WriteEnum(HandMode);\n            msg.WriteEnumNullable(VoxelMaterial);\n        }\n\n        public NetConnection SenderConnection { get; set; }\n        public IPEndPoint SenderEndpoint { get; set; }\n        public MyEventEnum EventType { get { return MyEventEnum.ADD_VOXEL_HAND; } }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Multiplayer/MyEventAfterburner.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.IO;\nusing System.Net;\nusing Lidgren.Network;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking.Multiplayer\n{\n    public struct MyEventAfterburner : IMyEvent\n    {\n        public uint EntityId;\n        public bool Enabled;\n\n        public bool Read(MyMessageReader msg)\n        {\n            return msg.ReadUInt32(ref EntityId)\n                && msg.ReadBool(ref Enabled);\n        }\n\n        public void Write(MyMessageWriter msg)\n        {\n            msg.WriteUInt32(EntityId);\n            msg.WriteBool(Enabled);\n        }\n\n        public NetConnection SenderConnection { get; set; }\n        public IPEndPoint SenderEndpoint { get; set; }\n        public MyEventEnum EventType { get { return MyEventEnum.AFTERBURNER; } }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Multiplayer/MyEventAmmoExplosion.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Net;\nusing System.IO;\nusing Lidgren.Network;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking.Multiplayer\n{\n    public struct MyEventAmmoExplosion : IMyEvent\n    {\n        public uint AmmoBaseEntityId;\n        public MyMwcPositionAndOrientation Position;\n\n        public bool Read(MyMessageReader msg)\n        {\n            return msg.ReadUInt32(ref AmmoBaseEntityId)\n                && msg.ReadPositionAndOrientation(ref Position);\n        }\n\n        public void Write(MyMessageWriter msg)\n        {\n            msg.WriteUInt32(AmmoBaseEntityId);\n            msg.WritePositionAndOrientation(Position);\n        }\n\n        public NetConnection SenderConnection { get; set; }\n\t\tpublic IPEndPoint SenderEndpoint { get; set; }\n        public MyEventEnum EventType { get { return MyEventEnum.AMMO_EXPLOSION; } }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Multiplayer/MyEventAmmoPosition.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Net;\nusing Microsoft.Xna.Framework;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking.Multiplayer\n{\n    public struct MyEventAmmoPosition : IMyEvent\n    {\n        // 64 B\n        public uint EntityId; // 4B\n        public MyMwcPositionAndOrientation Position; // 36B\n        public Vector3 Velocity; // 12B\n\n        public bool Read(MyMessageReader msg)\n        {\n            return msg.ReadUInt32(ref EntityId)\n                && msg.ReadPositionAndOrientation(ref Position)\n                && msg.ReadVector3(ref Velocity);\n        }\n\n        public void Write(MyMessageWriter msg)\n        {\n            msg.WriteUInt32(EntityId);\n            msg.WritePositionAndOrientation(Position);\n            msg.WriteVector3(Velocity);\n        }\n\n        public IPEndPoint SenderEndpoint { get; set; }\n        public MyEventEnum EventType { get { return MyEventEnum.AMMO_POSITION; } }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Multiplayer/MyEventAmmoUpdate.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Net;\nusing MinerWarsMath;\nusing Lidgren.Network;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking.Multiplayer\n{\n    public struct MyEventAmmoUpdate : IMyEvent\n    {\n        public uint EntityId; // 4B\n        public MyMwcPositionAndOrientation Position; // 36B\n        public Vector3 Velocity; // 12B\n\n        public bool Read(MyMessageReader msg)\n        {\n            return msg.ReadUInt32(ref EntityId)\n                && msg.ReadPositionAndOrientation(ref Position)\n                && msg.ReadVector3(ref Velocity);\n        }\n\n        public void Write(MyMessageWriter msg)\n        {\n            msg.WriteUInt32(EntityId);\n            msg.WritePositionAndOrientation(Position);\n            msg.WriteVector3(Velocity);\n        }\n\n        public NetConnection SenderConnection { get; set; }\n\t\tpublic IPEndPoint SenderEndpoint { get; set; }\n        public MyEventEnum EventType { get { return MyEventEnum.AMMO_UPDATE; } }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Multiplayer/MyEventChat.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.IO;\nusing System.Net;\nusing Lidgren.Network;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking.Multiplayer\n{\n    public struct MyEventChat : IMyEvent\n    {\n        public string Message;\n\n        public bool Read(MyMessageReader msg)\n        {\n            return msg.ReadString(ref Message);\n        }\n\n        public void Write(MyMessageWriter msg)\n        {\n            msg.WriteString(Message);\n        }\n\n        public NetConnection SenderConnection { get; set; }\n\t\tpublic IPEndPoint SenderEndpoint { get; set; }\n        public MyEventEnum EventType { get { return MyEventEnum.CHAT; } }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Multiplayer/MyEventChooseFaction.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing System.Net;\nusing Lidgren.Network;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking.Multiplayer\n{\n    public struct MyEventChooseFaction : IMyEvent\n    {\n        public MyMwcObjectBuilder_FactionEnum PreferredFaction;\n\n        public bool Read(MyMessageReader msg)\n        {\n            return msg.ReadObjectBuilder_FactionEnum(ref PreferredFaction);\n        }\n\n        public void Write(MyMessageWriter msg)\n        {\n            msg.WriteObjectBuilder_FactionEnum(PreferredFaction);\n        }\n\n        public NetConnection SenderConnection { get; set; }\n\t\tpublic IPEndPoint SenderEndpoint { get; set; }\n        public MyEventEnum EventType { get { return MyEventEnum.CHOOSE_FACTION; } }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Multiplayer/MyEventChooseFactionResponse.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing System.Net;\nusing Lidgren.Network;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking.Multiplayer\n{\n    public struct MyEventChooseFactionResponse : IMyEvent\n    {\n        public MyMwcObjectBuilder_FactionEnum AssignedFaction;\n\n        public bool Read(MyMessageReader msg)\n        {\n            return msg.ReadObjectBuilder_FactionEnum(ref AssignedFaction);\n        }\n\n        public void Write(MyMessageWriter msg)\n        {\n            msg.WriteObjectBuilder_FactionEnum(AssignedFaction);\n        }\n\n        public NetConnection SenderConnection { get; set; }\n\t\tpublic IPEndPoint SenderEndpoint { get; set; }\n        public MyEventEnum EventType { get { return MyEventEnum.CHOOSE_FACTION_RESPONSE; } }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Multiplayer/MyEventCountdown.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing Lidgren.Network;\nusing System.Net;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking.Multiplayer\n{\n    public struct MyEventCountdown: IMyEvent\n    {\n        public long m_ticks;\n\n        public TimeSpan Timespan\n        {\n            get\n            {\n                return TimeSpan.FromTicks(m_ticks);\n            }\n            set\n            {\n                m_ticks = value.Ticks;\n            }\n        }\n\n        public bool Read(MyMessageReader msg)\n        {\n            return msg.ReadInt64(ref m_ticks);\n        }\n\n        public void Write(MyMessageWriter msg)\n        {\n            msg.WriteInt64(m_ticks);\n        }\n\n        public NetConnection SenderConnection { get; set; }\n\t\tpublic IPEndPoint SenderEndpoint { get; set; }\n        public MyEventEnum EventType { get { return MyEventEnum.COUNTDOWN; } }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Multiplayer/MyEventCreateGame.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Net;\nusing System.IO;\nusing Lidgren.Network;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking.Multiplayer\n{\n    public struct MyEventCreateGame : IMyEvent\n    {\n        public string SectorName;\n        public string Password;\n        public MyGameTypes Type;\n        public MyJoinMode JoinMode;\n        public MyGameplayDifficultyEnum Difficulty;\n\n        public bool Read(MyMessageReader msg)\n        {\n            return msg.ReadString(ref SectorName)\n                && msg.ReadString(ref Password)\n                && msg.ReadEnum(ref Type)\n                && msg.ReadEnum(ref JoinMode)\n                && msg.ReadEnum(ref Difficulty);\n        }\n\n        public void Write(MyMessageWriter msg)\n        {\n            msg.WriteString(SectorName);\n            msg.WriteString(Password);\n            msg.WriteEnum(Type);\n            msg.WriteEnum(JoinMode);\n            msg.WriteEnum(Difficulty);\n        }\n\n        public NetConnection SenderConnection { get; set; }\n\t\tpublic IPEndPoint SenderEndpoint { get; set; }\n        public MyEventEnum EventType { get { return MyEventEnum.CREATE_GAME; } }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Multiplayer/MyEventCreateGameResponse.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing System.Net;\nusing System.IO;\nusing Lidgren.Network;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking.Multiplayer\n{\n    public struct MyEventCreateGameResponse : IMyEvent\n    {\n        public bool Read(MyMessageReader msg)\n        {\n            return true;\n        }\n\n        public void Write(MyMessageWriter msg)\n        {\n        }\n\n        public NetConnection SenderConnection { get; set; }\n\t\tpublic IPEndPoint SenderEndpoint { get; set; }\n        public MyEventEnum EventType { get { return MyEventEnum.CRAETE_GAME_RESPONSE; } }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Multiplayer/MyEventCutOut.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.IO;\nusing System.Net;\nusing Lidgren.Network;\nusing MinerWarsMath;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking.Multiplayer\n{\n    public struct MyEventCutOut : IMyEvent\n    {\n        public uint VoxelMapEntityId;\n        public Vector3 Position;\n        public float Radius;\n\n        public bool Read(MyMessageReader msg)\n        {\n            return msg.ReadUInt32(ref VoxelMapEntityId)\n                && msg.ReadVector3(ref Position)\n                && msg.ReadFloat(ref Radius);\n        }\n\n        public void Write(MyMessageWriter msg)\n        {\n            msg.WriteUInt32(VoxelMapEntityId);\n            msg.WriteVector3(Position);\n            msg.WriteFloat(Radius);\n        }\n\n        public NetConnection SenderConnection { get; set; }\n        public IPEndPoint SenderEndpoint { get; set; }\n        public MyEventEnum EventType { get { return MyEventEnum.CUT_OUT; } }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Multiplayer/MyEventDie.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.IO;\nusing System.Net;\nusing Lidgren.Network;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking.Multiplayer\n{\n    public struct MyEventDie : IMyEvent\n    {\n        public uint EntityId;\n        public MyMwcPositionAndOrientation Position;\n        public byte? KillerId;\n\n        public bool Read(MyMessageReader msg)\n        {\n            return msg.ReadUInt32(ref EntityId)\n                && msg.ReadPositionAndOrientation(ref Position)\n                && msg.ReadByteNullable(ref KillerId);\n        }\n\n        public void Write(MyMessageWriter msg)\n        {\n            msg.WriteUInt32(EntityId);\n            msg.WritePositionAndOrientation(Position);\n            msg.WriteByteNullable(KillerId);\n        }\n\n        public NetConnection SenderConnection { get; set; }\n\t\tpublic IPEndPoint SenderEndpoint { get; set; }\n        public MyEventEnum EventType { get { return MyEventEnum.DIE; } }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Multiplayer/MyEventDirectIntroductionResponse.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Net;\nusing System.IO;\nusing Lidgren.Network;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking.Multiplayer\n{\n    public struct MyEventDirectIntroductionResponse : IMyEvent\n    {\n        public int UserId;\n        public IPEndPoint EndPoint;\n\n        public bool Read(MyMessageReader msg)\n        {\n            return msg.ReadInt32(ref UserId)\n                && msg.ReadIPEndPoint(ref EndPoint);\n        }\n\n        public void Write(MyMessageWriter msg)\n        {\n            msg.WriteInt32(UserId);\n            msg.WriteIPEndPoint(EndPoint);\n        }\n\n        public NetConnection SenderConnection { get; set; }\n\t\tpublic IPEndPoint SenderEndpoint { get; set; }\n        public MyEventEnum EventType { get { return MyEventEnum.DIRECT_INTRODUCTION_RESPONSE; } }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Multiplayer/MyEventDoDamage.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Net;\nusing Lidgren.Network;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking.Multiplayer\n{\n    public struct MyEventDoDamage : IMyEvent\n    {\n        public uint TargetEntityId;\n        public float PlayerDamage;\n        public float Damage;\n        public float EmpDamage;\n        public byte DamageType;\n        public byte AmmoType;\n        public uint? DamageSource;\n        public float NewHealthRatio;\n\n        public bool Read(MyMessageReader msg)\n        {\n            return msg.ReadUInt32(ref TargetEntityId)\n                && msg.ReadFloat(ref PlayerDamage)\n                && msg.ReadFloat(ref Damage)\n                && msg.ReadFloat(ref EmpDamage)\n                && msg.ReadByte(ref DamageType)\n                && msg.ReadByte(ref AmmoType)\n                && msg.ReadUInt32Nullable(ref DamageSource)\n                && msg.ReadFloat(ref NewHealthRatio);\n        }\n\n        public void Write(MyMessageWriter msg)\n        {\n            msg.WriteUInt32(TargetEntityId);\n            msg.WriteFloat(PlayerDamage);\n            msg.WriteFloat(Damage);\n            msg.WriteFloat(EmpDamage);\n            msg.WriteByte((byte)DamageType);\n            msg.WriteByte((byte)AmmoType);\n            msg.WriteUInt32Nullable(DamageSource);\n            msg.WriteFloat(NewHealthRatio);\n        }\n\n        public NetConnection SenderConnection { get; set; }\n\t\tpublic IPEndPoint SenderEndpoint { get; set; }\n\n        public MyEventEnum EventType { get { return MyEventEnum.DO_DAMAGE; } }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Multiplayer/MyEventDummyFlags.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.IO;\nusing System.Net;\nusing Lidgren.Network;\nusing MinerWarsMath;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking.Multiplayer\n{\n    public struct MyEventDummyFlags : IMyEvent\n    {\n        public uint EntityId;\n        public MyDummyPointFlags Flags;\n\n        public bool Read(MyMessageReader msg)\n        {\n            return msg.ReadUInt32(ref EntityId)\n                && msg.ReadEnum(ref Flags);\n        }\n\n        public void Write(MyMessageWriter msg)\n        {\n            msg.WriteUInt32(EntityId);\n            msg.WriteEnum(Flags);\n        }\n\n        public NetConnection SenderConnection { get; set; }\n        public IPEndPoint SenderEndpoint { get; set; }\n        public MyEventEnum EventType { get { return MyEventEnum.DUMMY_FLAGS; } }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Multiplayer/MyEventEnterGame.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Net;\nusing Lidgren.Network;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking.Multiplayer\n{\n    public struct MyEventEnterGame : IMyEvent\n    {\n        static Action<MyMessageWriter, int> m_writer = (msg, value) => msg.WriteInt32(value);\n        static ReadHandler<int> m_reader = (msg) => { int result = 0; return msg.ReadInt32(ref result) ? result : (int?)null; };\n\n        public MyPlayerInfo PlayerInfo;\n        public List<int> ConnectedPlayers;\n\n        public bool Read(MyMessageReader msg)\n        {\n            return PlayerInfo.Read(msg)\n                && msg.ReadList(ref ConnectedPlayers, m_reader);\n        }\n\n        public void Write(MyMessageWriter msg)\n        {\n            PlayerInfo.Write(msg);\n            msg.WriteList(ConnectedPlayers, m_writer);\n        }\n\n        public NetConnection SenderConnection { get; set; }\n\t\tpublic IPEndPoint SenderEndpoint { get; set; }\n        public MyEventEnum EventType { get { return MyEventEnum.ENTER_GAME; } }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Multiplayer/MyEventEnterGameResponse.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Net;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing Lidgren.Network;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking.Multiplayer\n{\n    public struct MyEventEnterGameResponse : IMyEvent\n    {\n        public bool Allowed;\n        public byte PlayerId;\n\n        public bool Read(MyMessageReader msg)\n        {\n            return msg.ReadBool(ref Allowed) \n                && msg.ReadByte(ref PlayerId);\n        }\n\n        public void Write(MyMessageWriter msg)\n        {\n            msg.WriteBool(Allowed);\n            msg.WriteByte(PlayerId);\n        }\n\n        public NetConnection SenderConnection { get; set; }\n\t\tpublic IPEndPoint SenderEndpoint { get; set; }\n        public MyEventEnum EventType { get { return MyEventEnum.ENTER_GAME_RESPONSE; } }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Multiplayer/MyEventEntityReset.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Net;\nusing Lidgren.Network;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking.Multiplayer\n{\n    public struct MyEventEntityReset: IMyEvent\n    {\n        public uint EntityId;\n\n        public bool Read(MyMessageReader msg)\n        {\n            return msg.ReadUInt32(ref EntityId);\n        }\n\n        public void Write(MyMessageWriter msg)\n        {\n            msg.WriteUInt32(EntityId);\n        }\n\n        public NetConnection SenderConnection { get; set; }\n\t\tpublic IPEndPoint SenderEndpoint { get; set; }\n        public MyEventEnum EventType { get { return MyEventEnum.ENTITY_RESET; } }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Multiplayer/MyEventEvent.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.IO;\nusing System.Net;\nusing Lidgren.Network;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking.Multiplayer\n{\n    public struct MyEventEvent : IMyEvent\n    {\n        public MyMwcPositionAndOrientation Position;\n        public int EventTypeEnum;\n        public int Seed;\n\n        public bool Read(MyMessageReader msg)\n        {\n            return msg.ReadPositionAndOrientation(ref Position)\n                && msg.ReadInt32(ref EventTypeEnum)\n                && msg.ReadInt32(ref Seed);\n        }\n\n        public void Write(MyMessageWriter msg)\n        {\n            msg.WritePositionAndOrientation(Position);\n            msg.WriteInt32(EventTypeEnum);\n            msg.WriteInt32(Seed);\n        }\n\n        public NetConnection SenderConnection { get; set; }\n        public IPEndPoint SenderEndpoint { get; set; }\n        public MyEventEnum EventType { get { return MyEventEnum.EVENT; } }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Multiplayer/MyEventFlags.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.IO;\nusing System.Net;\nusing Lidgren.Network;\nusing MinerWarsMath;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking.Multiplayer\n{\n    public enum MyFlagsEnum: byte\n    {\n        ENABLE,\n        DISABLE,\n        HIDE,\n        UNHIDE,\n        PARK_SHIP,\n        CLOSE,\n        PARTICLE,\n        NUCLEAR_EXPLOSION,\n        DESTRUCTIBLE,\n        INDESTRUCTIBLE,\n        PREPARE_MOVE,\n        RETURN_FROM_MOVE,\n    }\n\n    public struct MyEventFlags : IMyEvent\n    {\n        public uint EntityId;\n        public MyFlagsEnum Flag;\n        public bool Param;\n\n        public bool Read(MyMessageReader msg)\n        {\n            return msg.ReadUInt32(ref EntityId)\n                && msg.ReadEnum(ref Flag)\n                && msg.ReadBool(ref Param);\n        }\n\n        public void Write(MyMessageWriter msg)\n        {\n            msg.WriteUInt32(EntityId);\n            msg.WriteEnum(Flag);\n            msg.WriteBool(Param);\n        }\n\n        public NetConnection SenderConnection { get; set; }\n        public IPEndPoint SenderEndpoint { get; set; }\n        public MyEventEnum EventType { get { return MyEventEnum.FLAGS; } }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Multiplayer/MyEventFriendlyFire.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.IO;\nusing System.Net;\nusing Lidgren.Network;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking.Multiplayer\n{\n    public enum MyFriendlyFireEnum\n    {\n        AGGRO, // Turn bots to enemies\n        GAME_FAILED, // Shows gameover screen\n    }\n\n    public struct MyEventFriendlyFire : IMyEvent\n    {\n        public MyFriendlyFireEnum FriendlyFireType;\n\n        public bool Read(MyMessageReader msg)\n        {\n            return msg.ReadEnum(ref FriendlyFireType);\n        }\n\n        public void Write(MyMessageWriter msg)\n        {\n            msg.WriteEnum(FriendlyFireType);\n        }\n\n        public NetConnection SenderConnection { get; set; }\n        public IPEndPoint SenderEndpoint { get; set; }\n        public MyEventEnum EventType { get { return MyEventEnum.FRIENDLY_FIRE; } }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Multiplayer/MyEventGetGames.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Net;\nusing Lidgren.Network;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking.Multiplayer\n{\n    [Flags]\n    public enum MyGameTypes\n    {\n        None       = 0,\n        Story      = 1 << 0,\n        Deathmatch = 1 << 1,\n        Editor     = 1 << 2,\n    }\n\n    public struct MyEventGetGames: IMyEvent\n    {\n        public string NameFilter;\n        public MyGameTypes GameTypeFilter;\n\n        public bool Read(MyMessageReader msg)\n        {\n            return msg.ReadString(ref NameFilter)\n                && msg.ReadEnum<MyGameTypes>(ref GameTypeFilter);\n        }\n\n        public void Write(MyMessageWriter msg)\n        {\n            msg.WriteString(NameFilter);\n            msg.WriteEnum(GameTypeFilter);\n        }\n\n        public NetConnection SenderConnection { get; set; }\n\t\tpublic IPEndPoint SenderEndpoint { get; set; }\n        public MyEventEnum EventType { get { return MyEventEnum.GET_GAMES; } }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Multiplayer/MyEventGetGamesResponse.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing System.IO;\nusing System.Net;\nusing Lidgren.Network;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking.Multiplayer\n{\n    public struct MyEventGetGamesResponse : IMyEvent\n    {\n        public List<MyGameInfo> Games;\n\n        public bool Read(MyMessageReader msg)\n        {\n            return msg.ReadList(ref Games);\n        }\n\n        public void Write(MyMessageWriter msg)\n        {\n            msg.WriteList(Games);\n        }\n\n        public NetConnection SenderConnection { get; set; }\n\t\tpublic IPEndPoint SenderEndpoint { get; set; }\n        public MyEventEnum EventType { get { return MyEventEnum.GET_GAMES_RESPONSE; } }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Multiplayer/MyEventGetPlayerList.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Net;\nusing Lidgren.Network;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking.Multiplayer\n{\n    public struct MyEventGetPlayerList: IMyEvent\n    {\n        public bool Read(MyMessageReader msg)\n        {\n            return true;\n        }\n\n        public void Write(MyMessageWriter msg)\n        {\n        }\n\n        public NetConnection SenderConnection { get; set; }\n        public IPEndPoint SenderEndpoint { get; set; }\n        public MyEventEnum EventType { get { return MyEventEnum.GET_PLAYER_LIST; } }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Multiplayer/MyEventGetPlayerListResponse.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Net;\nusing Lidgren.Network;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking.Multiplayer\n{\n    public struct MyEventGetPlayerListResponse : IMyEvent\n    {\n        public List<MyPlayerInfo> PlayerList;\n\n        public bool Read(MyMessageReader msg)\n        {\n            return msg.ReadList(ref PlayerList);\n        }\n\n        public void Write(MyMessageWriter msg)\n        {\n            msg.WriteList(PlayerList);\n        }\n\n        public NetConnection SenderConnection { get; set; }\n        public IPEndPoint SenderEndpoint { get; set; }\n        public MyEventEnum EventType { get { return MyEventEnum.GET_PLAYER_LIST_RESPONSE; } }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Multiplayer/MyEventGlobalFlag.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.IO;\nusing System.Net;\nusing Lidgren.Network;\nusing MinerWarsMath;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking.Multiplayer\n{\n    public enum MyGlobalFlagsEnum: byte\n    {\n        REGENERATE_WAYPOINTS,\n        REQUEST_INFO,\n    }\n\n    public struct MyEventGlobalFlag : IMyEvent\n    {\n        public MyGlobalFlagsEnum Flag;\n\n        public bool Read(MyMessageReader msg)\n        {\n            return msg.ReadEnum(ref Flag);\n        }\n\n        public void Write(MyMessageWriter msg)\n        {\n            msg.WriteEnum(Flag);\n        }\n\n        public NetConnection SenderConnection { get; set; }\n        public IPEndPoint SenderEndpoint { get; set; }\n        public MyEventEnum EventType { get { return MyEventEnum.GLOBAL_FLAGS; } }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Multiplayer/MyEventHeadshake.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.IO;\nusing System.Net;\nusing Lidgren.Network;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking.Multiplayer\n{\n    public struct MyEventHeadshake : IMyEvent\n    {\n        public float Amount;\n\n        public bool Read(MyMessageReader msg)\n        {\n            return msg.ReadFloat(ref Amount);\n        }\n\n        public void Write(MyMessageWriter msg)\n        {\n            msg.WriteFloat(Amount);\n        }\n\n        public NetConnection SenderConnection { get; set; }\n\t\tpublic IPEndPoint SenderEndpoint { get; set; }\n        public MyEventEnum EventType { get { return MyEventEnum.HEADSHAKE; } }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Multiplayer/MyEventHealthUpdate.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.IO;\nusing System.Net;\nusing Lidgren.Network;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking.Multiplayer\n{\n    public struct MyEventHealthUpdate : IMyEvent\n    {\n        public uint EntityId;\n        public float NewHealthRatio;\n\n        public bool Read(MyMessageReader msg)\n        {\n            return msg.ReadUInt32(ref EntityId)\n                && msg.ReadFloat(ref NewHealthRatio);\n        }\n\n        public void Write(MyMessageWriter msg)\n        {\n            msg.WriteUInt32(EntityId);\n            msg.WriteFloat(NewHealthRatio);\n        }\n\n        public NetConnection SenderConnection { get; set; }\n\t\tpublic IPEndPoint SenderEndpoint { get; set; }\n        public MyEventEnum EventType { get { return MyEventEnum.HEALTH_UPDATE; } }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Multiplayer/MyEventInventoryUpdate.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.IO;\nusing System.Net;\nusing Lidgren.Network;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking.Multiplayer\n{\n    public struct MyEventInventoryUpdate : IMyEvent\n    {\n        public uint EntityId;\n        public MyMwcObjectBuilder_Inventory InventoryBuilder;\n\n        public bool Read(MyMessageReader msg)\n        {\n            return msg.ReadUInt32(ref EntityId)\n                && msg.ReadObjectBuilder(ref InventoryBuilder);\n        }\n\n        public void Write(MyMessageWriter msg)\n        {\n            msg.WriteUInt32(EntityId);\n            msg.WriteObjectBuilder(InventoryBuilder);\n        }\n\n        public NetConnection SenderConnection { get; set; }\n        public IPEndPoint SenderEndpoint { get; set; }\n        public MyEventEnum EventType { get { return MyEventEnum.INVENTORY_UPDATE; } }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Multiplayer/MyEventJoinGame.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Net;\nusing Lidgren.Network;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking.Multiplayer\n{\n    public struct MyEventJoinGame: IMyEvent\n    {\n        public uint GameId;\n        public string Password;\n\n        public bool Read(MyMessageReader msg)\n        {\n            return msg.ReadUInt32(ref GameId)\n                && msg.ReadString(ref Password);\n        }\n\n        public void Write(MyMessageWriter msg)\n        {\n            msg.WriteUInt32(GameId);\n            msg.WriteString(Password);\n        }\n\n        public NetConnection SenderConnection { get; set; }\n\t\tpublic IPEndPoint SenderEndpoint { get; set; }\n        public MyEventEnum EventType { get { return MyEventEnum.JOIN_GAME; } }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Multiplayer/MyEventJoinGameResponse.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing System.IO;\nusing System.Net;\nusing Lidgren.Network;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking.Multiplayer\n{\n    public struct MyEventJoinGameResponse : IMyEvent\n    {\n        public MyResultCodeEnum ResultCode;\n        public int HostUserId;\n\n        public bool Read(MyMessageReader msg)\n        {\n            return msg.ReadResultCode(ref ResultCode)\n                && msg.ReadInt32(ref HostUserId);\n        }\n\n        public void Write(MyMessageWriter msg)\n        {\n            msg.WriteResultCode(ResultCode);\n            msg.WriteInt32(HostUserId);\n        }\n\n        public NetConnection SenderConnection { get; set; }\n\t\tpublic IPEndPoint SenderEndpoint { get; set; }\n        public MyEventEnum EventType { get { return MyEventEnum.JOIN_GAME_RESPONSE; } }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Multiplayer/MyEventLock.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.IO;\nusing System.Net;\nusing Lidgren.Network;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking.Multiplayer\n{\n    public enum MyLockEnum : byte\n    {\n        LOCK,\n        UNLOCK,\n    }\n\n    public struct MyEventLock : IMyEvent\n    {\n        public uint EntityId;\n        public MyLockEnum LockType;\n\n        public bool Read(MyMessageReader msg)\n        {\n            return msg.ReadUInt32(ref EntityId)\n                && msg.ReadEnum(ref LockType);\n        }\n\n        public void Write(MyMessageWriter msg)\n        {\n            msg.WriteUInt32(EntityId);\n            msg.WriteEnum(LockType);\n        }\n\n        public NetConnection SenderConnection { get; set; }\n\t\tpublic IPEndPoint SenderEndpoint { get; set; }\n        public MyEventEnum EventType { get { return MyEventEnum.LOCK; } }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Multiplayer/MyEventLockResult.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.IO;\nusing System.Net;\nusing Lidgren.Network;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking.Multiplayer\n{\n    public struct MyEventLockResult : IMyEvent\n    {\n        public uint EntityId;\n        public bool IsSuccess;\n\n        public bool Read(MyMessageReader msg)\n        {\n            return msg.ReadUInt32(ref EntityId)\n                && msg.ReadBool(ref IsSuccess);\n        }\n\n        public void Write(MyMessageWriter msg)\n        {\n            msg.WriteUInt32(EntityId);\n            msg.WriteBool(IsSuccess);\n        }\n\n        public NetConnection SenderConnection { get; set; }\n\t\tpublic IPEndPoint SenderEndpoint { get; set; }\n        public MyEventEnum EventType { get { return MyEventEnum.LOCK_RESULT; } }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Multiplayer/MyEventLogin.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Net;\nusing Lidgren.Network;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking.Multiplayer\n{\n    public struct MyEventLogin : IMyEvent\n    {\n        public int AppVersion;\n        public string Username;\n        public string PasswordHash;\n        public IPEndPoint InternalEndpoint;\n\n        public bool Read(MyMessageReader msg)\n        {\n            return msg.ReadInt32(ref AppVersion)\n                && msg.ReadString(ref Username)\n                && msg.ReadString(ref PasswordHash)\n                && msg.ReadIPEndPoint(ref InternalEndpoint);\n        }\n\n        public void Write(MyMessageWriter msg)\n        {\n            msg.WriteInt32(AppVersion);\n            msg.WriteString(Username);\n            msg.WriteString(PasswordHash);\n            msg.WriteIPEndPoint(InternalEndpoint);\n        }\n\n        public NetConnection SenderConnection { get; set; }\n\t\tpublic IPEndPoint SenderEndpoint { get; set; }\n        public MyEventEnum EventType { get { return MyEventEnum.LOGIN; } }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Multiplayer/MyEventLoginResponse.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Net;\nusing Lidgren.Network;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking.Multiplayer\n{\n    public struct MyEventLoginResponse : IMyEvent\n    {\n        public MyResultCodeEnum ResultCode;\n        public int MultiplayerUserId;\n\n        public bool Read(MyMessageReader msg)\n        {\n            return msg.ReadResultCode(ref ResultCode)\n                && msg.ReadInt32(ref MultiplayerUserId);\n        }\n\n        public void Write(MyMessageWriter msg)\n        {\n            msg.WriteResultCode(ResultCode);\n            msg.WriteInt32(MultiplayerUserId);\n        }\n\n        public NetConnection SenderConnection { get; set; }\n\t\tpublic IPEndPoint SenderEndpoint { get; set; }\n        public MyEventEnum EventType { get { return MyEventEnum.LOGIN_RESPONSE; } }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Multiplayer/MyEventLoginSteam.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Net;\nusing Lidgren.Network;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking.Multiplayer\n{\n    public struct MyEventLoginSteam : IMyEvent\n    {\n        public int AppVersion;\n        public string DisplayName;\n        public long SteamUserId;\n        public byte[] SteamTicket;\n        public IPEndPoint InternalEndpoint;\n\n        public bool Read(MyMessageReader msg)\n        {\n            ushort ticketLength = 0;\n            SteamTicket = null;\n\n            return msg.ReadInt32(ref AppVersion)\n                && msg.ReadString(ref DisplayName)\n                && msg.ReadInt64(ref SteamUserId)\n                && msg.ReadUInt16(ref ticketLength)\n                && msg.ReadBytes(ref SteamTicket, ticketLength)\n                && msg.ReadIPEndPoint(ref InternalEndpoint);\n        }\n\n        public void Write(MyMessageWriter msg)\n        {\n            msg.WriteInt32(AppVersion);\n            msg.WriteString(DisplayName);\n            msg.WriteInt64(SteamUserId);\n            msg.WriteUInt16((ushort)SteamTicket.Length);\n            msg.WriteBytes(SteamTicket);\n            msg.WriteIPEndPoint(InternalEndpoint);\n        }\n\n        public NetConnection SenderConnection { get; set; }\n        public IPEndPoint SenderEndpoint { get; set; }\n        public MyEventEnum EventType { get { return MyEventEnum.LOGIN_STEAM; } }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Multiplayer/MyEventMissionProgress.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Net;\nusing Lidgren.Network;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking.Multiplayer\n{\n    public enum MyMissionProgressType\n    {\n        Success,\n        Fail,\n        NewObjective,\n    }\n\n    public struct MyEventMissionProgress : IMyEvent\n    {\n        public int? MissionId;\n        public MyMissionProgressType ProgressType;\n        public int? MessageEnum;\n\n        public bool Read(MyMessageReader msg)\n        {\n            return msg.ReadInt32Nullable(ref MissionId) \n                && msg.ReadEnum<MyMissionProgressType>(ref ProgressType)\n                && msg.ReadInt32Nullable(ref MessageEnum);\n        }\n\n        public void Write(MyMessageWriter msg)\n        {\n            msg.WriteInt32Nullable(MissionId);\n            msg.WriteEnum<MyMissionProgressType>(ProgressType);\n            msg.WriteInt32Nullable(MessageEnum);\n        }\n\n        public NetConnection SenderConnection { get; set; }\n        public IPEndPoint SenderEndpoint { get; set; }\n        public MyEventEnum EventType { get { return MyEventEnum.MISSION_PROGRESS; } }\n\n\n        public override string ToString()\n        {\n            return string.Format(\"MissionId: {0}, ProgressType: {1}, SenderConnection: {2}, SenderEndpoint: {3}\", MissionId, ProgressType, SenderConnection, SenderEndpoint);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Multiplayer/MyEventMissionUpdateVars.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Net;\nusing Lidgren.Network;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking.Multiplayer\n{\n    // Synces mission variabled (timer so far)\n    public struct MyEventMissionUpdateVars : IMyEvent\n    {\n        public int MissionId;\n        public int ElapsedTime;\n\n        public bool Read(MyMessageReader msg)\n        {\n            return msg.ReadInt32(ref MissionId)\n                && msg.ReadInt32(ref ElapsedTime);\n        }\n\n        public void Write(MyMessageWriter msg)\n        {\n            msg.WriteInt32(MissionId);\n            msg.WriteInt32(ElapsedTime);\n        }\n\n        public NetConnection SenderConnection { get; set; }\n        public IPEndPoint SenderEndpoint { get; set; }\n        public MyEventEnum EventType { get { return MyEventEnum.MISSION_UPDATE_VARS; } }\n\n\n        public override string ToString()\n        {\n            return string.Format(\"MissionId: {0}, SenderConnection: {1}, SenderEndpoint: {2}\", MissionId, SenderConnection, SenderEndpoint);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Multiplayer/MyEventMusicTransition.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.IO;\nusing System.Net;\nusing Lidgren.Network;\nusing MinerWarsMath;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking.Multiplayer\n{\n    public enum MyMusicEventEnum\n    {\n        APPLY_TRANSITION,\n        STOP_TRANSITION,\n        STOP_MUSIC,\n    }\n\n    public struct MyEventMusicTransition : IMyEvent\n    {\n        public MyMusicEventEnum MusicEventType;\n        public int? TransitionEnum;\n        public int Priority;\n        public string Category;\n        public bool Loop;\n\n        public bool Read(MyMessageReader msg)\n        {\n            return msg.ReadEnum(ref MusicEventType)\n                && msg.ReadInt32Nullable(ref TransitionEnum)\n                && msg.ReadInt32(ref Priority)\n                && msg.ReadStringNullable(ref Category)\n                && msg.ReadBool(ref Loop);\n        }\n\n        public void Write(MyMessageWriter msg)\n        {\n            msg.WriteEnum(MusicEventType);\n            msg.WriteInt32Nullable(TransitionEnum);\n            msg.WriteInt32(Priority);\n            msg.WriteStringNullable(Category);\n            msg.WriteBool(Loop);\n        }\n\n        public NetConnection SenderConnection { get; set; }\n\t\tpublic IPEndPoint SenderEndpoint { get; set; }\n        public MyEventEnum EventType { get { return MyEventEnum.MUSIC_TRANSITION; } }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Multiplayer/MyEventNewEntity.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Net;\nusing Lidgren.Network;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking.Multiplayer\n{\n    public struct MyEventNewEntity : IMyEvent\n    {\n        public MyMwcPositionAndOrientation Position;\n        public MyMwcObjectBuilder_Base ObjectBuilder;\n\n        public bool Read(MyMessageReader msg)\n        {\n            return msg.ReadPositionAndOrientation(ref Position)\n                && msg.ReadObjectBuilder(ref ObjectBuilder);\n        }\n\n        public void Write(MyMessageWriter msg)\n        {\n            msg.WritePositionAndOrientation(Position);\n            msg.WriteObjectBuilder(ObjectBuilder);\n        }\n\n        public NetConnection SenderConnection { get; set; }\n        public IPEndPoint SenderEndpoint { get; set; }\n        public MyEventEnum EventType { get { return MyEventEnum.NEW_ENTITY; } }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Multiplayer/MyEventNewPlayer.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing System.Net;\nusing Lidgren.Network;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking.Multiplayer\n{\n    public struct MyEventNewPlayer : IMyEvent\n    {\n        public MyPlayerInfo PlayerInfo;\n\n        public bool Read(MyMessageReader msg)\n        {\n            return PlayerInfo.Read(msg);\n        }\n\n        public void Write(MyMessageWriter msg)\n        {\n            PlayerInfo.Write(msg);\n        }\n\n        public NetConnection SenderConnection { get; set; }\n\t\tpublic IPEndPoint SenderEndpoint { get; set; }\n        public MyEventEnum EventType { get { return MyEventEnum.NEW_PLAYER; } }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Multiplayer/MyEventNotification.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing Lidgren.Network;\nusing System.Net;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking.Multiplayer\n{\n    public enum MyNotificationType\n    {\n        Text,\n        WaitStart,\n        WaitEnd,\n    }\n\n    public struct MyEventNotification : IMyEvent\n    {\n        public MyNotificationType Type;\n        public int Text;\n        public string Arg0;\n        public string Arg1;\n        public string Arg2;\n        public string Arg3;\n\n        public bool Read(MyMessageReader msg)\n        {\n            return  msg.ReadEnum(ref Type)\n                && msg.ReadInt32(ref Text)\n                && msg.ReadStringNullable(ref Arg0)\n                && msg.ReadStringNullable(ref Arg1)\n                && msg.ReadStringNullable(ref Arg2)\n                && msg.ReadStringNullable(ref Arg3);\n        }\n\n        public void Write(MyMessageWriter msg)\n        {\n            msg.WriteEnum(Type);\n            msg.WriteInt32(Text);\n            msg.WriteStringNullable(Arg0);\n            msg.WriteStringNullable(Arg1);\n            msg.WriteStringNullable(Arg2);\n            msg.WriteStringNullable(Arg3);\n        }\n\n        public NetConnection SenderConnection { get; set; }\n\t\tpublic IPEndPoint SenderEndpoint { get; set; }\n        public MyEventEnum EventType { get { return MyEventEnum.NOTIFICATION; } }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Multiplayer/MyEventPilotDie.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing Lidgren.Network;\nusing System.Net;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking.Multiplayer\n{\n    public struct MyEventPilotDie : IMyEvent\n    {\n        public uint EntityId;\n        public byte? KillerId;\n\n        public bool Read(MyMessageReader msg)\n        {\n            return msg.ReadUInt32(ref EntityId)\n                && msg.ReadByteNullable(ref KillerId);\n        }\n\n        public void Write(MyMessageWriter msg)\n        {\n            msg.WriteUInt32(EntityId);\n            msg.WriteByteNullable(KillerId);\n        }\n\n        public NetConnection SenderConnection { get; set; }\n        public IPEndPoint SenderEndpoint { get; set; }\n        public MyEventEnum EventType { get { return MyEventEnum.PILOT_DIE; } }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Multiplayer/MyEventPlayDialogue.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.IO;\nusing System.Net;\nusing Lidgren.Network;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking.Multiplayer\n{\n    public struct MyEventPlayDialogue : IMyEvent\n    {\n        public int DialogueEnum;\n\n        public bool Read(MyMessageReader msg)\n        {\n            return msg.ReadInt32(ref DialogueEnum);\n        }\n\n        public void Write(MyMessageWriter msg)\n        {\n            msg.WriteInt32(DialogueEnum);\n        }\n\n        public NetConnection SenderConnection { get; set; }\n\t\tpublic IPEndPoint SenderEndpoint { get; set; }\n        public MyEventEnum EventType { get { return MyEventEnum.PLAY_DIALOGUE; } }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Multiplayer/MyEventPlaySound.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.IO;\nusing System.Net;\nusing Lidgren.Network;\nusing MinerWarsMath;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking.Multiplayer\n{\n    public struct MyEventPlaySound : IMyEvent\n    {\n        public int SoundEnum;\n        public Vector3? Position;\n\n        public bool Read(MyMessageReader msg)\n        {\n            return msg.ReadInt32(ref SoundEnum)\n                && msg.ReadVector3Nullable(ref Position);\n        }\n\n        public void Write(MyMessageWriter msg)\n        {\n            msg.WriteInt32(SoundEnum);\n            msg.WriteVector3Nullable(Position);\n        }\n\n        public NetConnection SenderConnection { get; set; }\n\t\tpublic IPEndPoint SenderEndpoint { get; set; }\n        public MyEventEnum EventType { get { return MyEventEnum.PLAY_SOUND; } }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Multiplayer/MyEventPlayerStateChanged.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.IO;\nusing System.Net;\nusing Lidgren.Network;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking.Multiplayer\n{\n    public enum MyMultiplayerStateEnum: byte\n    {\n        Joined,\n        Playing,\n        Disconnected,\n    }\n\n    public struct MyEventPlayerStateChanged : IMyEvent\n    {\n        public int UserId;\n        public MyMultiplayerStateEnum NewState;\n\n        public bool Read(MyMessageReader msg)\n        {\n            return msg.ReadInt32(ref UserId)\n                && msg.ReadMultiplayerStateEnum(ref NewState);\n        }\n\n        public void Write(MyMessageWriter msg)\n        {\n            msg.WriteInt32(UserId);\n            msg.WriteMultiplayerStateEnum(NewState);\n        }\n\n        public NetConnection SenderConnection { get; set; }\n\t\tpublic IPEndPoint SenderEndpoint { get; set; }\n        public MyEventEnum EventType { get { return MyEventEnum.PLAYER_STATE_CHANGED; } }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Multiplayer/MyEventProjectileHit.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing System.Net;\nusing Lidgren.Network;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking.Multiplayer\n{\n    public struct MyEventProjectileHit : IMyEvent\n    {\n        public uint TargetEntityId;\n        public Vector3 Position;\n        public Vector3 Direction;\n        public MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum AmmoType;\n        public uint? SourceEntityId;\n\n        public bool Read(MyMessageReader msg)\n        {\n            \n\n            return msg.ReadUInt32(ref TargetEntityId)\n                && msg.ReadVector3(ref Position)\n                && msg.ReadVector3(ref Direction)\n                && msg.ReadObjectBuilderSmallShipAmmoTypesEnum(ref AmmoType)\n                && msg.ReadUInt32Nullable(ref SourceEntityId);\n        }\n\n        public void Write(MyMessageWriter msg)\n        {\n            msg.WriteUInt32(TargetEntityId);\n            msg.WriteVector3(Position);\n            msg.WriteVector3(Direction);\n            msg.WriteObjectBuilderSmallShipAmmoTypesEnum(AmmoType);\n            msg.WriteUInt32Nullable(SourceEntityId);\n        }\n\n        public NetConnection SenderConnection { get; set; }\n\t\tpublic IPEndPoint SenderEndpoint { get; set; }\n        public MyEventEnum EventType { get { return MyEventEnum.PROJECTILE_HIT; } }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Multiplayer/MyEventRequestIntroduction.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Net;\nusing System.IO;\nusing Lidgren.Network;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking.Multiplayer\n{\n    public struct MyEventRequestIntroduction : IMyEvent\n    {\n        static Action<MyMessageWriter, int> m_writer = (msg, value) => msg.WriteInt32(value);\n        static ReadHandler<int> m_reader = (msg) => { int result = 0; return msg.ReadInt32(ref result) ? result : (int?)null; };\n\n        public uint GameId;\n        public List<int> UserList;\n        public bool RelayIntroduction;\n\n        public bool Read(MyMessageReader msg)\n        {\n            return msg.ReadUInt32(ref GameId)\n                && msg.ReadList(ref UserList, m_reader)\n                && msg.ReadBool(ref RelayIntroduction);\n        }\n\n        public void Write(MyMessageWriter msg)\n        {\n            msg.WriteUInt32(GameId);\n            msg.WriteList(UserList, m_writer);\n            msg.WriteBool(RelayIntroduction);\n        }\n\n        public NetConnection SenderConnection { get; set; }\n\t\tpublic IPEndPoint SenderEndpoint { get; set; }\n        public MyEventEnum EventType { get { return MyEventEnum.REQUEST_INTRODUCTION; } }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Multiplayer/MyEventRespawn.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Net;\nusing Lidgren.Network;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking.Multiplayer\n{\n    public struct MyEventRespawn: IMyEvent\n    {\n        public uint EntityId;\n        public MyMwcPositionAndOrientation Position;\n        public MyMwcObjectBuilder_SmallShip_TypesEnum ShipType;\n        public MyMwcObjectBuilder_Inventory Inventory;\n        public MyMwcObjectBuilder_FactionEnum Faction;\n\n        public bool Read(MyMessageReader msg)\n        {\n            return msg.ReadUInt32(ref EntityId)\n                && msg.ReadPositionAndOrientation(ref Position)\n                && msg.ReadObjectBuilder(ref Inventory)\n                && msg.ReadSmallShipType(ref ShipType)\n                && msg.ReadEnum(ref Faction);\n        }\n\n        public void Write(MyMessageWriter msg)\n        {\n            msg.WriteUInt32(EntityId);\n            msg.WritePositionAndOrientation(Position);\n            msg.WriteObjectBuilder(Inventory);\n            msg.WriteSmallShipType(ShipType);\n            msg.WriteEnum(Faction);\n        }\n\n        public NetConnection SenderConnection { get; set; }\n\t\tpublic IPEndPoint SenderEndpoint { get; set; }\n        public MyEventEnum EventType { get { return MyEventEnum.RESPAWN; } }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Multiplayer/MyEventSavePlayer.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing Lidgren.Network;\nusing System.Net;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking.Multiplayer\n{\n    public struct MyEventSavePlayer : IMyEvent\n    {\n        public MyMwcObjectBuilder_Player PlayerObjectBuilder;\n\n        public bool Read(MyMessageReader msg)\n        {\n            return msg.ReadObjectBuilder(ref PlayerObjectBuilder);\n        }\n\n        public void Write(MyMessageWriter msg)\n        {\n            msg.WriteObjectBuilder(PlayerObjectBuilder);\n        }\n\n        public NetConnection SenderConnection { get; set; }\n        public IPEndPoint SenderEndpoint { get; set; }\n        public MyEventEnum EventType { get { return MyEventEnum.SAVE_PLAYER; } }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Multiplayer/MyEventSectorData.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing System.Net;\nusing Lidgren.Network;\nusing SysUtils;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking.Multiplayer\n{\n    public struct MyEventCheckpoint : IMyEvent\n    {\n        public MyMwcObjectBuilder_Checkpoint Checkpoint;\n\n        public bool Read(MyMessageReader msg)\n        {\n            Checkpoint = MyMwcObjectBuilder_Base.ReadAndCreateNewObject(msg.Reader, msg.EndPoint) as MyMwcObjectBuilder_Checkpoint;\n            return Checkpoint != null\n                && Checkpoint.Read(msg.Reader, msg.EndPoint, MyMwcFinalBuildConstants.SERVER_PROTOCOL_VERSION);\n        }\n\n        public void Write(MyMessageWriter msg)\n        {\n            Checkpoint.Write(msg.Writer);\n        }\n\n        public NetConnection SenderConnection { get; set; }\n\t\tpublic IPEndPoint SenderEndpoint { get; set; }\n        public MyEventEnum EventType { get { return MyEventEnum.CHECKPOINT; } }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Multiplayer/MyEventSetActorFaction.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.IO;\nusing System.Net;\nusing Lidgren.Network;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking.Multiplayer\n{\n    public struct MyEventSetActorFaction : IMyEvent\n    {\n        public MyMwcObjectBuilder_FactionEnum Faction;\n        public int ActorId;\n\n        public bool Read(MyMessageReader msg)\n        {\n            return msg.ReadEnum(ref Faction)\n                && msg.ReadInt32(ref ActorId);\n        }\n\n        public void Write(MyMessageWriter msg)\n        {\n            msg.WriteEnum(Faction);\n            msg.WriteInt32(ActorId);\n        }\n\n        public NetConnection SenderConnection { get; set; }\n\t\tpublic IPEndPoint SenderEndpoint { get; set; }\n        public MyEventEnum EventType { get { return MyEventEnum.SET_ACTOR_FACTION; } }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Multiplayer/MyEventSetEntityFaction.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.IO;\nusing System.Net;\nusing Lidgren.Network;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking.Multiplayer\n{\n    public struct MyEventSetEntityFaction : IMyEvent\n    {\n        public MyMwcObjectBuilder_FactionEnum Faction;\n        public uint EntityId;\n\n        public bool Read(MyMessageReader msg)\n        {\n            return msg.ReadEnum(ref Faction)\n                && msg.ReadUInt32(ref EntityId);\n        }\n\n        public void Write(MyMessageWriter msg)\n        {\n            msg.WriteEnum(Faction);\n            msg.WriteUInt32(EntityId);\n        }\n\n        public NetConnection SenderConnection { get; set; }\n\t\tpublic IPEndPoint SenderEndpoint { get; set; }\n        public MyEventEnum EventType { get { return MyEventEnum.SET_ENTITY_FACTION; } }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Multiplayer/MyEventSetFaction.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing System.Net;\nusing Lidgren.Network;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking.Multiplayer\n{\n    public struct MyEventSetFaction : IMyEvent\n    {\n        public MyMwcObjectBuilder_FactionEnum Faction;\n\n        public bool Read(MyMessageReader msg)\n        {\n            return msg.ReadObjectBuilder_FactionEnum(ref Faction);\n        }\n\n        public void Write(MyMessageWriter msg)\n        {\n            msg.WriteObjectBuilder_FactionEnum(Faction);\n        }\n\n        public NetConnection SenderConnection { get; set; }\n\t\tpublic IPEndPoint SenderEndpoint { get; set; }\n        public MyEventEnum EventType { get { return MyEventEnum.SET_FACTION; } }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Multiplayer/MyEventSetFactionRelation.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.IO;\nusing System.Net;\nusing Lidgren.Network;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking.Multiplayer\n{\n    public struct MyEventSetFactionRelation : IMyEvent\n    {\n        public MyMwcObjectBuilder_FactionEnum FactionA;\n        public MyMwcObjectBuilder_FactionEnum FactionB;\n        public float Relation;\n\n        public bool Read(MyMessageReader msg)\n        {\n            return msg.ReadEnum(ref FactionA)\n                && msg.ReadEnum(ref FactionB)\n                && msg.ReadFloat(ref Relation);\n        }\n\n        public void Write(MyMessageWriter msg)\n        {\n            msg.WriteEnum(FactionA);\n            msg.WriteEnum(FactionB);\n            msg.WriteFloat(Relation);\n        }\n\n        public NetConnection SenderConnection { get; set; }\n\t\tpublic IPEndPoint SenderEndpoint { get; set; }\n        public MyEventEnum EventType { get { return MyEventEnum.SET_FACTION_RELATION; } }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Multiplayer/MyEventShipConfigUpdate.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing System.Net;\nusing Lidgren.Network;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking.Multiplayer\n{\n    public struct MyEventShipConfigUpdate : IMyEvent\n    {\n        [Flags]\n        enum ConfigValue : int\n        {\n            NONE = 0,\n            ENGINE = 1 << 0,\n            REFLECTOR_ON = 1 << 1,\n            REFLECTOR_LONG_RANGE = 1 << 2,\n            AUTOLEVELING = 1 << 3,\n            SLOWDOWN = 1 << 4,\n            JAMMER = 1 << 5,\n        }\n\n        ConfigValue m_config\n        {\n            get\n            {\n                ConfigValue result = ConfigValue.NONE;\n                if (EngineOn) result |= ConfigValue.ENGINE;\n                if (ReflectorOn) result |= ConfigValue.REFLECTOR_ON;\n                if (ReflectorLongRange) result |= ConfigValue.REFLECTOR_LONG_RANGE;\n                if (Autoleveling) result |= ConfigValue.AUTOLEVELING;\n                if (Slowdown) result |= ConfigValue.SLOWDOWN;\n                if (RadarJammer) result |= ConfigValue.JAMMER;\n                return result;\n            }\n            set\n            {\n                EngineOn = (value & ConfigValue.ENGINE) != 0;\n                ReflectorOn = (value & ConfigValue.REFLECTOR_ON) != 0;\n                ReflectorLongRange = (value & ConfigValue.REFLECTOR_LONG_RANGE) != 0;\n                Autoleveling = (value & ConfigValue.AUTOLEVELING) != 0;\n                Slowdown = (value & ConfigValue.SLOWDOWN) != 0;\n                RadarJammer = (value & ConfigValue.JAMMER) != 0;\n            }\n        }\n\n        public bool EngineOn;\n        public bool ReflectorOn;\n        public bool ReflectorLongRange;\n        public bool Autoleveling;\n        public bool Slowdown;\n        public bool RadarJammer;\n\n        public int TimeBombTimer;\n        public uint ShipId;\n\n        public bool Read(MyMessageReader msg)\n        {\n            int configValues = 0;\n\n            var result = msg.ReadInt32(ref configValues)\n                && msg.ReadInt32(ref TimeBombTimer)\n                && msg.ReadUInt32(ref ShipId);\n\n            m_config = (ConfigValue)configValues;\n            return result;\n        }\n\n        public void Write(MyMessageWriter msg)\n        {\n            msg.WriteInt32((int)m_config);\n            msg.WriteInt32(TimeBombTimer);\n            msg.WriteUInt32(ShipId);\n        }\n\n        public NetConnection SenderConnection { get; set; }\n        public IPEndPoint SenderEndpoint { get; set; }\n        public MyEventEnum EventType { get { return MyEventEnum.SHIP_CONFIG_UPDATE; } }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Multiplayer/MyEventShoot.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWarsMath;\nusing System.Net;\nusing Lidgren.Network;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking.Multiplayer\n{\n    public struct MyEventShoot : IMyEvent\n    {\n        public uint ShooterEntityId;\n        public uint? ProjectileEntityId;\n        public uint? TargetEntityId;\n        public MyMwcPositionAndOrientation Position;\n        public MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum Weapon;\n        public MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum Ammo;\n\n        public bool Read(MyMessageReader msg)\n        {\n            // 46B-54B\n            return msg.ReadUInt32(ref ShooterEntityId) // 4B\n                && msg.ReadUInt32Nullable(ref ProjectileEntityId) // 1B/5B\n                && msg.ReadUInt32Nullable(ref TargetEntityId) // 1B/5B\n                && msg.ReadPositionAndOrientation(ref Position) // 36B\n                && msg.ReadObjectBuilderSmallShipWeaponTypesEnum(ref Weapon) // 2B\n                && msg.ReadObjectBuilderSmallShipAmmoTypesEnum(ref Ammo); // 2B\n                \n        }\n\n        public void Write(MyMessageWriter msg)\n        {\n            msg.WriteUInt32(ShooterEntityId);\n            msg.WriteUInt32Nullable(ProjectileEntityId);\n            msg.WriteUInt32Nullable(TargetEntityId);\n            msg.WritePositionAndOrientation(Position);\n            msg.WriteObjectBuilderSmallShipWeaponTypesEnum(Weapon);\n            msg.WriteObjectBuilderSmallShipAmmoTypesEnum(Ammo);\n        }\n\n        public NetConnection SenderConnection { get; set; }\n\t\tpublic IPEndPoint SenderEndpoint { get; set; }\n        public MyEventEnum EventType { get { return MyEventEnum.SHOOT; } }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Multiplayer/MyEventSpawnBot.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Net;\nusing Lidgren.Network;\nusing MinerWarsMath;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking.Multiplayer\n{\n    public struct MyEventSpawnBot : IMyEvent\n    {\n        public uint SpawnPointId;\n        public uint DesiredBotId;\n        public int BotsIdx;\n        public Vector3 SpawnPosition;\n\n        public bool Read(MyMessageReader msg)\n        {\n            return msg.ReadUInt32(ref SpawnPointId)\n                && msg.ReadUInt32(ref DesiredBotId)\n                && msg.ReadInt32(ref BotsIdx)\n                && msg.ReadVector3(ref SpawnPosition);\n        }\n\n        public void Write(MyMessageWriter msg)\n        {\n            msg.WriteUInt32(SpawnPointId);\n            msg.WriteUInt32(DesiredBotId);\n            msg.WriteInt32(BotsIdx);\n            msg.WriteVector3(SpawnPosition);\n        }\n\n        public NetConnection SenderConnection { get; set; }\n        public IPEndPoint SenderEndpoint { get; set; }\n        public MyEventEnum EventType { get { return MyEventEnum.SPAWN_BOT; } }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Multiplayer/MyEventSpeacialWeapons.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Net;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing Lidgren.Network;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking.Multiplayer\n{\n    public enum MySpecialWeaponEventEnum: byte\n    {\n        HARVESTER_FIRE,\n        DRILL_ACTIVATED,\n        DRILL_DEACTIVATED,\n        DRILL_DRILLING,\n    }\n\n    public struct MyEventSpeacialWeapon : IMyEvent\n    {\n        public uint ShipEntityId; // 4B\n        public MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum Weapon; // 2B\n        public MySpecialWeaponEventEnum WeaponEvent; // 1B\n\n        public bool Read(MyMessageReader msg)\n        {\n            return msg.ReadUInt32(ref ShipEntityId) \n                && msg.ReadObjectBuilderSmallShipWeaponTypesEnum(ref Weapon)\n                && msg.ReadSpecialWeaponEventEnum(ref WeaponEvent);\n\n        }\n\n        public void Write(MyMessageWriter msg)\n        {\n            msg.WriteUInt32(ShipEntityId);\n            msg.WriteObjectBuilderSmallShipWeaponTypesEnum(Weapon);\n            msg.WriteSpecialWeaponEventEnum(WeaponEvent);\n        }\n\n        public NetConnection SenderConnection { get; set; }\n\t\tpublic IPEndPoint SenderEndpoint { get; set; }\n        public MyEventEnum EventType { get { return MyEventEnum.WEAPON_EVENT; } }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Multiplayer/MyEventStatsUpdate.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing System.Net;\nusing Lidgren.Network;\nusing SysUtils;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking.Multiplayer\n{\n    public struct MyEventStatsUpdate : IMyEvent\n    {\n        public MyMwcObjectBuilder_PlayerStatistics StatsBuilder;\n\n        public bool Read(MyMessageReader msg)\n        {            \n            StatsBuilder = MyMwcObjectBuilder_Base.ReadAndCreateNewObject(msg.Reader, msg.EndPoint) as MyMwcObjectBuilder_PlayerStatistics;\n            return StatsBuilder != null && StatsBuilder.Read(msg.Reader, msg.EndPoint, MyMwcFinalBuildConstants.SERVER_PROTOCOL_VERSION);\n        }\n\n        public void Write(MyMessageWriter msg)\n        {\n            StatsBuilder.Write(msg.Writer);\n        }\n\n        public NetConnection SenderConnection { get; set; }\n\t\tpublic IPEndPoint SenderEndpoint { get; set; }\n        public MyEventEnum EventType { get { return MyEventEnum.STATS_UPDATE; } }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Multiplayer/MyEventUpdateGame.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing Lidgren.Network;\nusing System.Net;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking.Multiplayer\n{\n    public struct MyEventUpdateGame : IMyEvent\n    {\n        public string Name;\n        public string Password;\n        public MyJoinMode JoinMode;\n\n\n        public bool Read(MyMessageReader msg)\n        {\n            return msg.ReadStringNullable(ref Name)\n                && msg.ReadStringNullable(ref Password)\n                && msg.ReadEnum(ref JoinMode);\n        }\n\n        public void Write(MyMessageWriter msg)\n        {\n            msg.WriteStringNullable(Name);\n            msg.WriteStringNullable(Password);\n            msg.WriteEnum(JoinMode);\n        }\n\n        public NetConnection SenderConnection { get; set; }\n        public IPEndPoint SenderEndpoint { get; set; }\n        public MyEventEnum EventType { get { return MyEventEnum.UPDATE_GAME; } }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Multiplayer/MyEventUpdatePosition.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing System.IO;\nusing System.Net;\nusing Lidgren.Network;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking.Multiplayer\n{\n    public struct MyEventUpdatePosition : IMyEvent\n    {\n        // 64 B\n        public uint EntityId; // 4B\n        public MyMwcPositionAndOrientation Position; // 36B\n        public Vector3 Velocity; // 12B\n        public Vector3 Acceleration; // 12B\n\n        public bool Read(MyMessageReader msg)\n        {\n            return msg.ReadUInt32(ref EntityId) \n                && msg.ReadPositionAndOrientation(ref Position)\n                && msg.ReadVector3(ref Velocity)\n                && msg.ReadVector3(ref Acceleration);\n        }\n\n        public void Write(MyMessageWriter msg)\n        {\n            msg.WriteUInt32(EntityId);\n            msg.WritePositionAndOrientation(Position);\n            msg.WriteVector3(Velocity);\n            msg.WriteVector3(Acceleration);\n        }\n\n        public NetConnection SenderConnection { get; set; }\n\t\tpublic IPEndPoint SenderEndpoint { get; set; }\n        public MyEventEnum EventType { get { return MyEventEnum.UPDATE_POSITION; } }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Multiplayer/MyEventUpdatePositionFast.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing System.IO;\nusing System.Net;\nusing Lidgren.Network;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking.Multiplayer\n{\n    public struct MyEventUpdatePositionFast : IMyEvent\n    {\n        // 16 B\n        public uint EntityId; // 4B\n        public Vector3 Position; // 12B\n        public Vector3? Up;\n        public Vector3? Forward;\n\n        public bool Read(MyMessageReader msg)\n        {\n            return msg.ReadUInt32(ref EntityId)\n                && msg.ReadVector3(ref Position)\n                && msg.ReadVector3Nullable(ref Up)\n                && msg.ReadVector3Nullable(ref Forward);\n        }\n\n        public void Write(MyMessageWriter msg)\n        {\n            msg.WriteUInt32(EntityId);\n            msg.WriteVector3(Position);\n            msg.WriteVector3Nullable(Up);\n            msg.WriteVector3Nullable(Forward);\n        }\n\n        public NetConnection SenderConnection { get; set; }\n\t\tpublic IPEndPoint SenderEndpoint { get; set; }\n        public MyEventEnum EventType { get { return MyEventEnum.UPDATE_POSITION_FAST; } }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Multiplayer/MyEventUpdateRotationFast.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing System.IO;\nusing System.Net;\nusing Lidgren.Network;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking.Multiplayer\n{\n    public struct MyEventUpdateRotationFast : IMyEvent\n    {\n        // 16 B\n        public uint EntityId; // 4B\n        public Vector3 Rotation; // 12B\n\n        public bool Read(MyMessageReader msg)\n        {\n            return msg.ReadUInt32(ref EntityId)\n                && msg.ReadVector3(ref Rotation);\n        }\n\n        public void Write(MyMessageWriter msg)\n        {\n            msg.WriteUInt32(EntityId);\n            msg.WriteVector3(Rotation);\n        }\n\n        public NetConnection SenderConnection { get; set; }\n\t\tpublic IPEndPoint SenderEndpoint { get; set; }\n        public MyEventEnum EventType { get { return MyEventEnum.UPDATE_ROTATION_FAST; } }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Multiplayer/MyEventValidateUser.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing Lidgren.Network;\nusing System.Net;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking.Multiplayer\n{\n    public struct MyEventValidateUser: IMyEvent\n    {\n        public string Token;\n        public long SteamUserId;\n        public byte[] SteamTicket;\n\n        public bool Read(MyMessageReader msg)\n        {\n            ushort ticketLength = 0;\n            SteamTicket = null;\n\n            return msg.ReadString(ref Token)\n                && msg.ReadInt64(ref SteamUserId)\n                && msg.ReadUInt16(ref ticketLength)\n                && msg.ReadBytes(ref SteamTicket, ticketLength);\n        }\n\n        public void Write(MyMessageWriter msg)\n        {\n            msg.WriteString(Token);\n            msg.WriteInt64(SteamUserId);\n            msg.WriteUInt16((ushort)SteamTicket.Length);\n            msg.WriteBytes(SteamTicket);\n        }\n\n        public NetConnection SenderConnection { get; set; }\n        public IPEndPoint SenderEndpoint { get; set; }\n        public MyEventEnum EventType { get { return MyEventEnum.VALIDATE_USER; } }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Multiplayer/MyEventValidateUserResponse.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing Lidgren.Network;\nusing System.Net;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking.Multiplayer\n{\n    public struct MyEventValidateUserResponse : IMyEvent\n    {\n        public byte[] Signature;\n\n        public bool Read(MyMessageReader msg)\n        {\n            ushort ticketLength = 0;\n            Signature = null;\n\n            return msg.ReadUInt16(ref ticketLength)\n                && msg.ReadBytes(ref Signature, ticketLength);\n        }\n\n        public void Write(MyMessageWriter msg)\n        {\n            msg.WriteUInt16((ushort)Signature.Length);\n            msg.WriteBytes(Signature);\n        }\n\n        public NetConnection SenderConnection { get; set; }\n        public IPEndPoint SenderEndpoint { get; set; }\n        public MyEventEnum EventType { get { return MyEventEnum.VALIDATE_USER_RESPONSE; } }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Multiplayer/MyGameInfo.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.IO;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking.Multiplayer\n{\n    public enum MyJoinMode\n    {\n        Open,\n        Closed,\n    }\n\n    public struct MyGameInfo : IReadWriteMessage\n    {\n        public uint GameId;\n        public string Name;\n\n        public int PlayerCount;\n        public int MaxPlayerCount;\n        public int HostId;\n        public string HostDisplayName;\n        public MyGameTypes GameType;\n        public MyGameplayDifficultyEnum Difficulty;\n        public MyJoinMode JoinMode;\n\n        public bool Read(MyMessageReader msg)\n        {\n            return msg.ReadUInt32(ref GameId)\n                && msg.ReadString(ref Name)\n                && msg.ReadInt32(ref PlayerCount)\n                && msg.ReadInt32(ref MaxPlayerCount)\n                && msg.ReadInt32(ref HostId)\n                && msg.ReadString(ref HostDisplayName)\n                && msg.ReadEnum(ref GameType)\n                && msg.ReadEnum(ref Difficulty)\n                && msg.ReadEnum(ref JoinMode);\n        }\n\n        public void Write(MyMessageWriter msg)\n        {\n            msg.WriteUInt32(GameId);\n            msg.WriteString(Name);\n            msg.WriteInt32(PlayerCount);\n            msg.WriteInt32(MaxPlayerCount);\n            msg.WriteInt32(HostId);\n            msg.WriteString(HostDisplayName);\n            msg.WriteEnum(GameType);\n            msg.WriteEnum(Difficulty);\n            msg.WriteEnum(JoinMode);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Multiplayer/MyPlayerInfo.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Net;\nusing System.IO;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking.Multiplayer\n{\n    public struct MyPlayerInfo : IReadWriteMessage\n    {\n        public int UserId;\n        public byte PlayerId;\n        public string DisplayName;\n        public MyMwcObjectBuilder_FactionEnum Faction;\n\n        public bool Read(MyMessageReader msg)\n        {\n            return msg.ReadInt32(ref UserId)\n                && msg.ReadString(ref DisplayName)\n                && msg.ReadByte(ref PlayerId)\n                && msg.ReadObjectBuilder_FactionEnum(ref Faction);\n        }\n\n        public void Write(MyMessageWriter msg)\n        {\n            msg.WriteInt32(UserId);\n            msg.WriteString(DisplayName);\n            msg.WriteByte(PlayerId);\n            msg.WriteObjectBuilder_FactionEnum(Faction);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Multiplayer/MyResultCode.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking.Multiplayer\n{\n    public enum MyResultCodeEnum: byte\n    {\n        OK = 1,\n        WRONG_USERNAME_OR_PASSWORD = 2,\n        WRONG_CLIENT_VERSION = 3,\n        ACCESS_RESTRICTED = 4,\n        GENERAL_FAILURE = 5,\n        GAME_NOT_EXISTS = 6,\n        GAME_ALREADY_JOINED = 7,\n        GAME_FULL = 8,\n        GAME_INVALID_PASSWORD = 9,\n        TIMEOUT = 10,\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/MyLidgrenExtensions.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.IO;\nusing Lidgren.Network;\nusing KeenSoftwareHouse.Library.Trace;\nusing KeenSoftwareHouse.Library.IO;\nusing System.Net;\nusing System.Threading;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking\n{\n    public static class MyLidgrenExtensions\n    {\n        /// <summary>\n        /// Wait until specified status is not set\n        /// </summary>\n        public static void WaitForStatus(this NetConnection connection, NetConnectionStatus status)\n        {\n            while (connection.Status != status)\n            {\n                Thread.Sleep(5);\n            }\n        }\n\n        /// <summary>\n        /// Waits until specified status in not cleared.\n        /// </summary>\n        public static void WaitForStatusCleared(this NetConnection connection, NetConnectionStatus status)\n        {\n            while (connection.Status == status)\n            {\n                Thread.Sleep(5);\n            }\n        }\n\n        /// <summary>\n        /// Wait until specified status is not set\n        /// </summary>\n        public static void WaitForStatus(this NetPeer peer, NetPeerStatus status)\n        {\n            while (peer.Status != status)\n            {\n                Thread.Sleep(5);\n            }\n        }\n\n        /// <summary>\n        /// Waits until specified status in not cleared.\n        /// </summary>\n        public static void WaitForStatusCleared(this NetPeer peer, NetPeerStatus status, TimeSpan maxWait)\n        {\n            var start = DateTime.Now;\n            while (peer.Status == status && (start + maxWait) > DateTime.Now)\n            {\n                Thread.Sleep(5);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/MyLidgrenPeer.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.IO;\nusing Lidgren.Network;\nusing KeenSoftwareHouse.Library.Trace;\nusing KeenSoftwareHouse.Library.IO;\nusing System.Net;\nusing SysUtils.Utils;\nusing System.Diagnostics;\nusing MinerWars.CommonLIB.AppCode.Utils;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking\n{\n    public enum MyEventEnum : byte\n    {\n        // Relay\n        RELAY = 0,\n\n        // Client-server\n        LOGIN = 1,\n        LOGIN_RESPONSE = 2,\n        CREATE_GAME = 3,\n        CRAETE_GAME_RESPONSE = 4,\n        GET_GAMES = 5,\n        GET_GAMES_RESPONSE = 6,\n        JOIN_GAME = 7,\n        JOIN_GAME_RESPONSE = 8,\n        PLAYER_STATE_CHANGED = 9,\n        REQUEST_INTRODUCTION = 10,\n        UPDATE_GAME = 11,\n        DIRECT_INTRODUCTION_RESPONSE = 12,\n        DISCONNECT = 13,\n        LOGIN_STEAM = 14,\n        VALIDATE_USER = 15,\n        VALIDATE_USER_RESPONSE = 16,\n\n        // Game logic\n        NEW_PLAYER = 33,\n        CHECKPOINT = 34,\n        SET_FACTION = 35,\n        RESPAWN = 36,\n        STATS_UPDATE = 37,\n        DIE = 38,\n        ENTER_GAME = 39,\n        ENTER_GAME_RESPONSE = 40,\n        GET_PLAYER_LIST = 41,\n        GET_PLAYER_LIST_RESPONSE = 42,\n        CHOOSE_FACTION = 43,\n        CHOOSE_FACTION_RESPONSE = 44,\n        SPAWN_BOT = 45,\n        PILOT_DIE = 46,\n        MISSION_PROGRESS = 47,\n        NOTIFICATION = 48,\n\n        // Game updates\n        SHOOT = 101,\n        AMMO_EXPLOSION = 102,\n        PROJECTILE_HIT = 103,\n        DO_DAMAGE = 104,\n        UPDATE_POSITION = 105,\n        AMMO_UPDATE = 106,\n        WEAPON_EVENT = 107,\n        CHAT = 108,\n        SHIP_CONFIG_UPDATE = 109,\n        INVENTORY_UPDATE = 110,\n        LOCK = 111,\n        LOCK_RESULT = 112,\n        ENTITY_RESET = 113,\n        HEALTH_UPDATE = 114,\n        AFTERBURNER = 115,\n        CUT_OUT = 116,\n        FLAGS = 117,\n        NEW_ENTITY = 118,\n        MISSION_UPDATE_VARS = 119,\n        ADD_EXPLOSION = 120,\n        DUMMY_FLAGS = 121,\n        ADD_VOXEL_HAND = 122,\n        UPDATE_POSITION_FAST = 123,\n        PLAY_DIALOGUE = 124,\n        PLAY_SOUND = 125,\n        HEADSHAKE = 126,\n        SET_ACTOR_FACTION = 127,\n        SET_FACTION_RELATION = 128,\n        COUNTDOWN = 129,\n        UPDATE_ROTATION_FAST = 130,\n        FRIENDLY_FIRE = 131,\n        SET_ENTITY_FACTION = 132,\n        MUSIC_TRANSITION = 133,\n        EVENT = 134,\n        GLOBAL_FLAGS = 135,\n        SAVE_PLAYER = 136,\n    }\n\n    public enum MyLoggingTypeEnum\n    {\n        NONE,\n        NAME,\n        FULL,\n    }\n\n    public delegate void EventCallback<T>(ref T obj);\n    public delegate bool MessageFilterHandler(NetConnection connection, IPEndPoint remoteEndpoint, MyEventEnum eventEnum);\n\n    public class MyLidgrenPeer : NetPeer\n    {\n        public const int DEFAULT_MAX_SIZE = 512;\n\n        static readonly HashSet<byte> m_allowedMessageTypes;\n        readonly HashSet<byte> m_bufferedEvents = new HashSet<byte>();\n        readonly Dictionary<byte, Action<NetIncomingMessage, MyEventEnum, IPEndPoint>> m_actions = new Dictionary<byte, Action<NetIncomingMessage, MyEventEnum, IPEndPoint>>();\n\n        readonly List<NetIncomingMessage> m_messageBuffer = new List<NetIncomingMessage>(256);\n\n        readonly Dictionary<IPEndPoint, MyRelayedConnection> m_relayedConnections = new Dictionary<IPEndPoint, MyRelayedConnection>();\n\n        ResetableMemoryStream m_stream;\n        BinaryReader m_reader;\n        BinaryWriter m_writer;\n\n        // 10 elements should be sufficient\n        private List<MyMessageQueueItem> m_messageQueue = new List<MyMessageQueueItem>(10);\n\n        public MessageFilterHandler MessageFilter;\n\n        Dictionary<int, MyLoggingTypeEnum> m_loggedMessages = new Dictionary<int, MyLoggingTypeEnum>();\n\n        public event Action<NetConnection> PeerConnected;\n        public event Action<NetConnection> PeerDisconnected;\n        public Action<IPEndPoint, string> NatIntroductionSuccess;\n\n        public NetConnection RelayServerConnection;\n        public bool IsRelayServer;\n        public long RelayedBytes = 0;\n\n        static MyLidgrenPeer()\n        {\n            m_allowedMessageTypes = new HashSet<byte>(Enum.GetValues(typeof(MyEventEnum)).Cast<byte>());\n        }\n\n        public MyLidgrenPeer(NetPeerConfiguration configuration)\n            : base(configuration)\n        {\n            m_stream = new ResetableMemoryStream();\n            m_reader = new BinaryReader(m_stream);\n            m_writer = new BinaryWriter(m_stream);\n        }\n\n        public MyRelayedConnection GetRelayedConnection(IPEndPoint targetEp)\n        {\n            MyRelayedConnection connection;\n            if (!m_relayedConnections.TryGetValue(targetEp, out connection))\n            {\n                connection = new MyRelayedConnection(this) { RelayTargetEp = targetEp };\n                m_relayedConnections[targetEp] = connection;\n            }\n            return connection;\n        }\n\n        public void LogAll()\n        {\n            foreach (var val in MyMwcEnums.GetAllowedValues<MyEventEnum>())\n            {\n                m_loggedMessages.Add(val, MyLoggingTypeEnum.NAME);\n            }\n        }\n\n        public void LogNone()\n        {\n            m_loggedMessages.Clear();\n        }\n\n        public void Log(MyEventEnum eventType, MyLoggingTypeEnum logType = MyLoggingTypeEnum.NAME)\n        {\n            if (logType != MyLoggingTypeEnum.NONE)\n            {\n                m_loggedMessages[(int)eventType] = logType;\n            }\n            else\n            {\n                m_loggedMessages.Remove((int)eventType);\n            }\n        }\n\n        public NetConnection Connect<T>(IPEndPoint endpoint, ref T hailEvent, int maxSize = DEFAULT_MAX_SIZE)\n            where T : struct, IMyEvent\n        {\n            var msg = CreateMessage(maxSize);\n            Write(msg, hailEvent);\n            try\n            {\n                return Connect(endpoint, msg);\n            }\n            catch (Exception e)\n            {\n                MyMwcLog.WriteLine(\"Error connecting to MP server or peer: \");\n                MyMwcLog.WriteLine(e);\n                return null;\n            }\n        }\n\n        public NetConnection Connect<T>(string host, int port, ref T hailEvent, int maxSize = DEFAULT_MAX_SIZE)\n            where T : struct, IMyEvent\n        {\n            var msg = CreateMessage(maxSize);\n            Write(msg, hailEvent);\n            try\n            {\n                return Connect(host, port, msg);\n            }\n            catch (Exception e)\n            {\n                MyMwcLog.WriteLine(\"Error connecting to MP server or peer: \");\n                MyMwcLog.WriteLine(e);\n                return null;\n            }\n        }\n\n        public void RegisterCallback<T>(EventCallback<T> callback)\n            where T : struct, IMyEvent\n        {\n            byte eventId = (byte)GetEventType<T>();\n            m_bufferedEvents.Remove(eventId);\n            m_actions[eventId] = (msg, eventType, endpoint) => ProcessCallbackMsg(msg, eventType, endpoint, callback);\n        }\n\n        public void RegisterBuffering<T>()\n            where T : struct, IMyEvent\n        {\n            m_bufferedEvents.Add((byte)GetEventType<T>());\n        }\n\n        public void ProcessBuffered()\n        {\n            foreach (var msg in m_messageBuffer)\n            {\n                ProcessMessage(msg);\n                Recycle(msg);\n            }\n            m_messageBuffer.Clear();\n        }\n\n        public void ClearBuffering()\n        {\n            foreach (var msg in m_messageBuffer)\n            {\n                Recycle(msg);\n            }\n            m_messageBuffer.Clear();\n            m_bufferedEvents.Clear();\n        }\n\n        public void ClearCallbacks()\n        {\n            m_actions.Clear();\n            NatIntroductionSuccess = null;\n        }\n\n        public void RemoveCallback<T>()\n            where T : struct, IMyEvent\n        {\n            m_actions.Remove((byte)GetEventType<T>());\n        }\n\n        public void Receive()\n        {\n            NetIncomingMessage msg;\n            while ((msg = this.ReadMessage()) != null)\n            {\n                if (msg.MessageType == NetIncomingMessageType.StatusChanged)\n                {\n                    var status = (NetConnectionStatus)msg.PeekByte();\n                    if (status == NetConnectionStatus.Connected)\n                    {\n                        RaisePeerConnected(msg.SenderConnection);\n                        if (msg.SenderConnection.RemoteHailMessage != null)\n                        {\n                            var hailMsg = msg.SenderConnection.RemoteHailMessage;\n                            hailMsg.m_senderConnection = msg.SenderConnection;\n                            hailMsg.m_senderEndpoint = msg.SenderEndpoint;\n                            // Recycle hail msg inside\n                            OnMessageReceived(hailMsg);\n                        }\n                        // Process send queue\n                        ProcessQueue();\n                    }\n                    else if (status == NetConnectionStatus.Disconnected)\n                    {\n                        RaisePeerDisconnected(msg.SenderConnection);\n                    }\n                    Recycle(msg);\n                }\n                else if (msg.MessageType == NetIncomingMessageType.NatIntroductionSuccess)\n                {\n                    RaiseNatIntroductionSuccess(msg.SenderEndpoint, msg.ReadString());\n                    Recycle(msg);\n                }\n                else if (msg.MessageType == NetIncomingMessageType.Data)\n                {\n                    // Recycle inside\n                    OnMessageReceived(msg);\n                }\n                else if (\n                    //msg.MessageType == NetIncomingMessageType.DebugMessage ||\n                    msg.MessageType == NetIncomingMessageType.WarningMessage ||\n                    msg.MessageType == NetIncomingMessageType.ErrorMessage)\n                {\n                    var text = msg.ReadString();\n                    MyTrace.Send(TraceWindow.MultiplayerAlerts, text);\n                    Recycle(msg);\n                }\n                else\n                {\n                    Recycle(msg);\n                }\n            }\n        }\n\n        public void OnMessageReceived(NetIncomingMessage msg)\n        {\n            if (m_bufferedEvents.Contains(msg.PeekByte()))\n            {\n                m_messageBuffer.Add(msg);\n            }\n            else\n            {\n                ProcessMessage(msg);\n                Recycle(msg);\n            }\n        }\n\n        public NetSendResult Send<T>(ref T evnt, NetConnection connection, NetDeliveryMethod deliveryMethod, int sequenceChannel, int maxSize = DEFAULT_MAX_SIZE)\n            where T : struct, IMyEvent\n        {\n            NetOutgoingMessage msg;\n            MyRelayedConnection relayedConnection = connection as MyRelayedConnection;\n\n            if (relayedConnection != null)\n            {\n                if (RelayServerConnection == null)\n                {\n                    //RaisePeerDisconnected(connection);\n                    return NetSendResult.FailedNotConnected;\n                }\n\n                maxSize += sizeof(byte); // Event type enum\n                maxSize += 16; // 16B for IPv6 addr\n                maxSize += sizeof(int); // Port\n\n                msg = CreateMessage(maxSize);\n\n                // Write relay header\n                msg.Write((byte)MyEventEnum.RELAY);\n                msg.Write(relayedConnection.RelayTargetEp);\n\n                connection = RelayServerConnection;\n            }\n            else\n            {\n                msg = CreateMessage(maxSize);\n            }\n\n            Write(msg, evnt);\n            if (CanEnqueue(connection.Status))\n            {\n                m_messageQueue.Add(new MyMessageQueueItem() { Message = msg, DeliveryMethod = deliveryMethod, SequenceChannel = sequenceChannel, EndPoint = connection.RemoteEndpoint });\n                return NetSendResult.Queued;\n            }\n            else\n            {\n                return connection.SendMessage(msg, deliveryMethod, sequenceChannel);\n            }\n        }\n\n        public void SendToAll<T>(ref T evnt, List<NetConnection> connections, NetDeliveryMethod deliveryMethod, int sequenceChannel, int maxSize = DEFAULT_MAX_SIZE)\n            where T : struct, IMyEvent\n        {\n            CheckConnectionsAreNotRelayed(connections);\n\n            var msg = CreateMessage(maxSize);\n            Write(msg, evnt);\n            SendMessage(msg, connections, deliveryMethod, sequenceChannel);\n        }\n\n        [Conditional(\"DEBUG\")]\n        private void CheckConnectionsAreNotRelayed(List<NetConnection> connections)\n        {\n            foreach (var c in connections)\n            {\n                Debug.Assert(!(c is MyRelayedConnection), \"Networking error, call OndrejPetrzilka\");\n            }\n        }\n\n        private MyEventEnum GetEventType<T>()\n            where T : struct, IMyEvent\n        {\n            return new T().EventType;\n        }\n\n        private void ProcessQueue()\n        {\n            int i = 0;\n            // Normally there would be zero messages\n            while (i < m_messageQueue.Count)\n            {\n                var connection = GetConnection(m_messageQueue[i].EndPoint);\n                if (connection != null)\n                {\n                    if (CanEnqueue(connection.Status))\n                    {\n                        i++;\n                    }\n                    else if (connection.Status == NetConnectionStatus.Connected)\n                    {\n                        connection.SendMessage(m_messageQueue[i].Message, m_messageQueue[i].DeliveryMethod, m_messageQueue[i].SequenceChannel);\n                        m_messageQueue.RemoveAt(i);\n                    }\n                    else\n                    {\n                        m_messageQueue.RemoveAt(i);\n                    }\n                }\n                else\n                {\n                    m_messageQueue.RemoveAt(i);\n                }\n            }\n        }\n\n        private bool CanEnqueue(NetConnectionStatus status)\n        {\n            return status == NetConnectionStatus.None\n                || status == NetConnectionStatus.InitiatedConnect\n                || status == NetConnectionStatus.RespondedAwaitingApproval\n                || status == NetConnectionStatus.RespondedConnect;\n        }\n\n        private void RaisePeerConnected(NetConnection connection)\n        {\n            var handler = PeerConnected;\n            if (handler != null)\n            {\n                handler(connection);\n            }\n        }\n\n        private void RaisePeerDisconnected(NetConnection connection)\n        {\n            var handler = PeerDisconnected;\n            if (handler != null && connection != null)\n            {\n                handler(connection);\n            }\n        }\n\n        private void RaiseNatIntroductionSuccess(IPEndPoint endpoint, string token)\n        {\n            var handler = NatIntroductionSuccess;\n            if (handler != null)\n            {\n                handler(endpoint, token);\n            }\n        }\n\n        private void Write<T>(NetOutgoingMessage msg, T multiplayerEvent)\n            where T : struct, IMyEvent\n        {\n            m_stream.Reset(msg.Data);\n            m_stream.Position = msg.LengthBytes;\n            m_writer.Write((byte)multiplayerEvent.EventType);\n            try\n            {\n                multiplayerEvent.Write(new MyMessageWriter(m_writer));\n                msg.LengthBytes = (int)m_writer.BaseStream.Position;\n            }\n            catch (EndOfStreamException)\n            {\n                Debug.Fail(\"Message size is too small for this type of message!\");\n                MyMwcLog.WriteLine(\"ERROR: message size is too small for this type of message!\");\n\n                // This could happen sometimes, for example for extremely large inventories...\n                msg.EnsureBufferSize(msg.LengthBits * 2);\n                Write(msg, multiplayerEvent);\n            }\n        }\n\n        private void ProcessCallbackMsg<T>(NetIncomingMessage msg, MyEventEnum eventType, IPEndPoint endpoint, EventCallback<T> callback)\n            where T : struct, IMyEvent\n        {\n            if (callback == null) return;\n\n            T inst = new T();\n            inst.SenderEndpoint = endpoint;\n            inst.SenderConnection = msg.SenderConnection;\n            if (ReadMessage(msg, ref inst))\n            {\n                LogMessage<T>(eventType, inst);\n                callback(ref inst);\n            }\n            else\n            {\n                MyMwcCheaterAlert.AddAlert(MyMwcCheaterAlertType.EXCEPTION_DURING_READING_MESSAGE, msg.SenderEndpoint, \"Invalid message, message type: \" + (int)inst.EventType);\n            }\n        }\n\n        [Conditional(\"DEBUG\")]\n        private void LogMessage<T>(MyEventEnum eventType, T inst)\n            where T : struct, IMyEvent\n        {\n            MyLoggingTypeEnum loggingType;\n            if (m_loggedMessages.TryGetValue((int)eventType, out loggingType))\n            {\n                switch (loggingType)\n                {\n                    case MyLoggingTypeEnum.NONE:\n                        break;\n                    case MyLoggingTypeEnum.NAME:\n                        MyTrace.Send(TraceWindow.Multiplayer, \"Received event \" + eventType.ToString() + \", from \" + (inst.SenderEndpoint != null ? inst.SenderEndpoint.ToString() : \"null\"));\n                        break;\n                    case MyLoggingTypeEnum.FULL:\n                        MyTrace.Send(TraceWindow.Multiplayer, inst.ToString());\n                        break;\n                    default:\n                        break;\n                }\n            }\n        }\n\n        private void ProcessMessage(NetIncomingMessage msg)\n        {\n            byte msgType;\n            if (!msg.ReadByte(out msgType))\n            {\n                MyMwcCheaterAlert.AddAlert(MyMwcCheaterAlertType.EXCEPTION_DURING_READING_MESSAGE, msg.SenderEndpoint, \"Cannot read message type\");\n                return;\n            }\n\n            if (msgType == (byte)MyEventEnum.RELAY)\n            {\n                ProcessRelayedMessage(msg);\n                return;\n            }\n\n            ProcessMessageBody(msg, msgType);\n        }\n\n        private void ProcessMessageBody(NetIncomingMessage msg, byte msgType)\n        {\n            if (!m_allowedMessageTypes.Contains(msgType))\n            {\n                MyMwcCheaterAlert.AddAlert(MyMwcCheaterAlertType.EXCEPTION_DURING_READING_MESSAGE, msg.SenderEndpoint, \"Unknown message type: \" + msgType);\n                return;\n            }\n\n            var handler = MessageFilter;\n            if (handler != null && !handler(msg.SenderConnection, msg.SenderEndpoint, (MyEventEnum)msgType))\n            {\n                return;\n            }\n\n            Action<NetIncomingMessage, MyEventEnum, IPEndPoint> callback;\n            if (m_actions.TryGetValue(msgType, out callback))\n            {\n                callback(msg, (MyEventEnum)msgType, msg.SenderEndpoint);\n            }\n        }\n\n        private void ProcessRelayedMessage(NetIncomingMessage msg)\n        {\n            var ep = msg.ReadIPEndpoint();\n\n            if (IsRelayServer)\n            {\n                RelayMessage(msg, ep);\n            }\n            else\n            {\n                byte innerMsgType;\n                if (!msg.ReadByte(out innerMsgType))\n                {\n                    MyMwcCheaterAlert.AddAlert(MyMwcCheaterAlertType.EXCEPTION_DURING_READING_MESSAGE, msg.SenderEndpoint, \"Cannot read message type of RELAYED message\");\n                    return;\n                }\n\n                msg.m_senderEndpoint = ep;\n                msg.m_senderConnection = GetRelayedConnection(ep);\n\n                if (innerMsgType == (byte)MyEventEnum.DISCONNECT)\n                {\n                    // TODO: msg.SenderConnection.Tag is not player, fix it\n                    this.RaisePeerDisconnected(msg.SenderConnection);\n                    return;\n                }\n\n                ProcessMessageBody(msg, innerMsgType);\n            }\n        }\n\n        private void RelayMessage(NetIncomingMessage msg, IPEndPoint targetEndpoint)\n        {\n            RelayedBytes += msg.LengthBytes;\n\n            NetConnection target = GetConnection(targetEndpoint);\n            if (target != null && target.Status != NetConnectionStatus.Disconnected && target.Status != NetConnectionStatus.Disconnecting)\n            {\n                // Rewrite header (header now contains sender EP)\n                NetOutgoingMessage outMsg = CreateMessage(msg.LengthBytes);\n                outMsg.Write((byte)MyEventEnum.RELAY);\n                outMsg.Write(msg.SenderEndpoint);\n\n                int bytesLeft = (msg.LengthBytes - msg.PositionInBytes);\n                outMsg.Write(msg.ReadBytes(bytesLeft));\n                SendMessage(outMsg, target, msg.DeliveryMethod, msg.SequenceChannel);\n            }\n            else\n            {\n                // Send disconnect back to sender\n                var response = CreateMessage();\n                response.Write((byte)MyEventEnum.RELAY);\n                response.Write(targetEndpoint);\n\n                response.Write((byte)MyEventEnum.DISCONNECT);\n                SendMessage(response, msg.SenderConnection, NetDeliveryMethod.ReliableOrdered, 0);\n            }\n        }\n\n        private bool ReadMessage<T>(NetIncomingMessage msg, ref T multiplayerEvent)\n            where T : struct, IMyEvent\n        {\n            m_stream.Reset(msg.Data);\n            m_stream.Position = msg.PositionInBytes;\n            return multiplayerEvent.Read(new MyMessageReader(m_reader, msg.SenderEndpoint));\n        }\n\n        public void Close()\n        {\n            ClearBuffering();\n            ClearCallbacks();\n            PeerConnected = null;\n            PeerDisconnected = null;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/MyMessageHelper.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.IO;\nusing System.Net;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking\n{\n    static class MyMessageHelper\n    {\n        public static void WriteStringDictionary(Dictionary<string, string> dictionary, BinaryWriter binaryWriter)\n        {\n            MyMwcMessageOut.WriteInt32(dictionary.Count, binaryWriter);\n            foreach (var item in dictionary)\n            {\n                MyMwcMessageOut.WriteString(item.Key, binaryWriter);\n                MyMwcMessageOut.WriteNullableString(item.Value, binaryWriter);\n            }\n        }\n\n        public static Dictionary<string, string> ReadStringDictionary(BinaryReader binaryReader, EndPoint senderEndpoint)\n        {\n            int? count = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndpoint);\n            if (!count.HasValue) return null;\n\n            var result = new Dictionary<string, string>();\n            for (int i = 0; i < count; i++)\n            {\n                string key = MyMwcMessageIn.ReadStringEx(binaryReader, senderEndpoint);\n                if (key == null) return null;\n\n                string value;\n                if (!MyMwcMessageIn.ReadNullableStringEx(binaryReader, senderEndpoint, out value)) return null;\n                result.Add(key, value);\n            }\n            return result;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/MyMessageQueueItem.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Net;\nusing Lidgren.Network;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking\n{\n    public struct MyMessageQueueItem\n    {\n        public IPEndPoint EndPoint;\n        public NetOutgoingMessage Message;\n        public NetDeliveryMethod DeliveryMethod;\n        public int SequenceChannel;\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/MyMessageReader.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.IO;\nusing System.Net;\nusing SysUtils.Utils;\nusing MinerWarsMath;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing System.Diagnostics;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.Networking.Multiplayer;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing SysUtils;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking\n{\n    public delegate T? ReadHandler<T>(MyMessageReader reader) where T : struct;\n\n    public struct MyMessageReader\n    {\n        EndPoint m_endpoint;\n        BinaryReader m_binaryReader;\n\n        public BinaryReader Reader { get { return m_binaryReader; } }\n        public EndPoint EndPoint { get { return m_endpoint; } }\n\n        public MyMessageReader(BinaryReader reader, EndPoint endpoint)\n        {\n            m_endpoint = endpoint;\n            m_binaryReader = reader;\n        }\n\n        void HandleError(Exception e)\n        {\n            HandleError(e.ToString());\n        }\n\n        void HandleError(string error)\n        {\n            MyMwcCheaterAlert.AddAlert(MyMwcCheaterAlertType.EXCEPTION_DURING_READING_MESSAGE, m_endpoint, error);\n        }\n\n        #region BASE_TYPES\n        public bool ReadBool(ref bool value)\n        {\n            try\n            {\n                value = m_binaryReader.ReadBoolean();\n                return true;\n            }\n            catch (Exception ex)\n            {\n                HandleError(ex);\n                return false;\n            }\n        }\n\n        public bool ReadSByte(ref sbyte value)\n        {\n            try\n            {\n                value = m_binaryReader.ReadSByte();\n                return true;\n            }\n            catch (Exception ex)\n            {\n                HandleError(ex);\n                return false;\n            }\n        }\n\n        public bool ReadInt16(ref Int16 value)\n        {\n            try\n            {\n                value = m_binaryReader.ReadInt16();\n                return true;\n            }\n            catch (Exception ex)\n            {\n                HandleError(ex);\n                return false;\n            }\n        }\n\n        public bool ReadInt32(ref Int32 value)\n        {\n            try\n            {\n                value = m_binaryReader.ReadInt32();\n                return true;\n            }\n            catch (Exception ex)\n            {\n                HandleError(ex);\n                return false;\n            }\n        }\n\n        public bool ReadInt64(ref Int64 value)\n        {\n            try\n            {\n                value = m_binaryReader.ReadInt64();\n                return true;\n            }\n            catch (Exception ex)\n            {\n                HandleError(ex);\n                return false;\n            }\n        }\n\n        public bool ReadByte(ref byte value)\n        {\n            try\n            {\n                value = m_binaryReader.ReadByte();\n                return true;\n            }\n            catch (Exception ex)\n            {\n                HandleError(ex);\n                return false;\n            }\n        }\n\n        public bool ReadUInt16(ref UInt16 value)\n        {\n            try\n            {\n                value = m_binaryReader.ReadUInt16();\n                return true;\n            }\n            catch (Exception ex)\n            {\n                HandleError(ex);\n                return false;\n            }\n        }\n\n        public bool ReadUInt32(ref UInt32 value)\n        {\n            try\n            {\n                value = m_binaryReader.ReadUInt32();\n                return true;\n            }\n            catch (Exception ex)\n            {\n                HandleError(ex);\n                return false;\n            }\n        }\n\n        public bool ReadUInt64(ref UInt64 value)\n        {\n            try\n            {\n                value = m_binaryReader.ReadUInt64();\n                return true;\n            }\n            catch (Exception ex)\n            {\n                HandleError(ex);\n                return false;\n            }\n        }\n        \n        public bool ReadFloat(ref float value)\n        {\n            try\n            {\n                value = m_binaryReader.ReadSingle();\n                if (!MyCommonDebugUtils.IsValid(value))\n                {\n                    HandleError(\"Invalid float\");\n                    return false;\n                }\n                return true;\n            }\n            catch (Exception ex)\n            {\n                HandleError(ex);\n                return false;\n            }\n        }\n\n        public bool ReadDouble(ref double value)\n        {\n            try\n            {\n                value = m_binaryReader.ReadDouble();\n                if (!MyCommonDebugUtils.IsValid(value))\n                {\n                    HandleError(\"Invalid double\");\n                    return false;\n                }\n                return true;\n            }\n            catch (Exception ex)\n            {\n                HandleError(ex);\n                return false;\n            }\n        }\n\n        public bool ReadStringNullable(ref string value)\n        {\n            try\n            {\n                bool notNull = false;\n                if (!ReadBool(ref notNull))\n                    return false;\n\n                if (notNull)\n                    return ReadString(ref value);\n\n                return true;\n            }\n            catch (Exception ex)\n            {\n                HandleError(ex);\n                return false;\n            }\n        }\n\n\n        public bool ReadString(ref string value)\n        {\n            try\n            {\n                value = m_binaryReader.ReadString();\n                if (value.Length > MyMwcNetworkingConstants.MAX_STRING_LENGTH)\n                {\n                    HandleError(\"String is too long\");\n                    return false;\n                }\n                return true;\n            }\n            catch (Exception ex)\n            {\n                HandleError(ex);\n                return false;\n            }\n        }\n\n        public bool ReadBytes(ref byte[] bytes, int byteCount)\n        {\n            if (bytes == null)\n                bytes = new byte[byteCount];\n\n            Debug.Assert(bytes != null && bytes.Length >= byteCount, \"Array is too small\");\n            try\n            {\n                for (int i = 0; i < byteCount; i++)\n                {\n                    if (!ReadByte(ref bytes[i]))\n                    {\n                        return false;\n                    }\n                }\n                return true;\n            }\n            catch (Exception ex)\n            {\n                HandleError(ex);\n                return false;\n            }\n        }\n        #endregion\n\n        #region NULLABLE_TYPES\n        public bool ReadByteNullable(ref byte? val)\n        {\n            try\n            {\n                if (m_binaryReader.ReadBoolean())\n                {\n                    val = m_binaryReader.ReadByte();\n                }\n                else\n                {\n                    val = null;\n                }\n                return true;\n            }\n            catch (Exception ex)\n            {\n                HandleError(ex);\n                return false;\n            }\n        }\n\n        public bool ReadInt32Nullable(ref Int32? val)\n        {\n            try\n            {\n                if (m_binaryReader.ReadBoolean())\n                {\n                    val = m_binaryReader.ReadInt32();\n                }\n                else\n                {\n                    val = null;\n                }\n                return true;\n            }\n            catch (Exception ex)\n            {\n                HandleError(ex);\n                return false;\n            }\n        }\n\n        public bool ReadUInt32Nullable(ref UInt32? val)\n        {\n            try\n            {\n                if (m_binaryReader.ReadBoolean())\n                {\n                    val = m_binaryReader.ReadUInt32();\n                }\n                else\n                {\n                    val = null;\n                }\n                return true;\n            }\n            catch (Exception ex)\n            {\n                HandleError(ex);\n                return false;\n            }\n        }\n\n        public bool ReadFloatNullable(ref float? value)\n        {\n            try\n            {\n                if (m_binaryReader.ReadBoolean())\n                {\n                    value = m_binaryReader.ReadSingle();\n                    if (!MyCommonDebugUtils.IsValid(value.Value))\n                    {\n                        HandleError(\"Invalid float\");\n                        return false;\n                    }\n                }\n                else\n                {\n                    value = null;\n                }\n                return true;\n            }\n            catch (Exception ex)\n            {\n                HandleError(ex);\n                return false;\n            }\n        }\n\n        public bool ReadVector3Nullable(ref Vector3? value)\n        {\n            try\n            {\n                if (m_binaryReader.ReadBoolean())\n                {\n                    Vector3 val = new Vector3();\n                    if (ReadVector3(ref val))\n                    {\n                        value = val;\n                        return true;\n                    }\n                    else\n                    {\n                        value = null;\n                        return false;\n                    }\n                }\n                else\n                {\n                    value = null;\n                }\n                return true;\n            }\n            catch (Exception ex)\n            {\n                HandleError(ex);\n                return false;\n            }\n        }\n\n        public bool ReadEnumNullable<T>(ref T? val) where T : struct, IConvertible\n        {\n            try\n            {\n                if (m_binaryReader.ReadBoolean())\n                {\n                    T value;\n                    if (MyMwcEnums.ReadEnum<T>(m_binaryReader, out value))\n                    {\n                        val = value;\n                    }\n                    else\n                    {\n                        return false;\n                    }\n                }\n                else\n                {\n                    val = null;\n                }\n                return true;\n            }\n            catch (Exception ex)\n            {\n                HandleError(ex);\n                return false;\n            }\n        }\n        #endregion\n\n        #region XNA_TYPES\n        public bool ReadVector3(ref Vector3 val)\n        {\n            return ReadFloat(ref val.X)\n                && ReadFloat(ref val.Y)\n                && ReadFloat(ref val.Z);\n        }\n\n        public bool ReadVector4(ref Vector4 val)\n        {\n            return ReadFloat(ref val.X)\n                && ReadFloat(ref val.Y)\n                && ReadFloat(ref val.Z)\n                && ReadFloat(ref val.W);\n        }\n        #endregion\n\n        #region COMPOSED_TYPES\n        public bool ReadPositionAndOrientation(ref MyMwcPositionAndOrientation positionAndOrientation)\n        {\n            return ReadVector3(ref positionAndOrientation.Position)\n                && ReadVector3(ref positionAndOrientation.Forward)\n                && ReadVector3(ref positionAndOrientation.Up);\n        }\n\n        public bool ReadIPAddess(ref IPAddress address)\n        {\n            try\n            {\n                byte ipAddressBytesLength = 0;\n\n                if (!ReadByte(ref ipAddressBytesLength))\n                {\n                    return false;\n                }\n\n                byte[] ipAddressBytes = new byte[ipAddressBytesLength];\n                if (!ReadBytes(ref ipAddressBytes, ipAddressBytesLength))\n                {\n                    return false;\n                }\n\n                address = new IPAddress(ipAddressBytes);\n                return true;\n            }\n            catch (Exception ex)\n            {\n                HandleError(ex);\n                return false;\n            }\n        }\n\n        public bool ReadIPEndPoint(ref IPEndPoint endpoint)\n        {\n            try\n            {\n                IPAddress address = null;\n                ushort port = 0;\n                if (!ReadIPAddess(ref address) || !ReadUInt16(ref port))\n                {\n                    return false;\n                }\n                endpoint = new IPEndPoint(address, port);\n                return true;\n            }\n            catch (Exception ex)\n            {\n                HandleError(ex);\n                return false;\n            }\n        }\n\n        public bool ReadObjectBuilder<T>(ref T objectBuilder)\n            where T : MyMwcObjectBuilder_Base\n        {\n            objectBuilder = MyMwcObjectBuilder_Base.ReadAndCreateNewObject(this.Reader, this.EndPoint) as T;\n            return objectBuilder != null && objectBuilder.Read(this.Reader, this.EndPoint, MyMwcFinalBuildConstants.SERVER_PROTOCOL_VERSION);\n        }\n\n        #endregion\n\n        #region ENUMS\n        public bool ReadResultCode(ref MyResultCodeEnum val)\n        {\n            byte numericValue = 0;\n            return ReadByte(ref numericValue) && MyMwcUtils.GetEnumFromNumber<MyResultCodeEnum, byte>(numericValue, ref val);\n        }\n\n        public bool ReadObjectBuilderSmallShipAmmoTypesEnum(ref MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum val)\n        {\n            ushort numericValue = 0;\n            return ReadUInt16(ref numericValue) && MyMwcUtils.GetEnumFromNumber<MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum, ushort>(numericValue, ref val);\n        }\n\n        public bool ReadObjectBuilderSmallShipWeaponTypesEnum(ref MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum val)\n        {\n            ushort numericValue = 0;\n            return ReadUInt16(ref numericValue) && MyMwcUtils.GetEnumFromNumber<MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum, ushort>(numericValue, ref val);\n        }\n\n        public bool ReadObjectBuilder_FactionEnum(ref MyMwcObjectBuilder_FactionEnum val)\n        {\n            int numericValue = 0;\n            return ReadInt32(ref numericValue) && MyMwcUtils.GetEnumFromNumber<MyMwcObjectBuilder_FactionEnum, int>(numericValue, ref val);\n        }\n\n        public bool ReadSpecialWeaponEventEnum(ref MySpecialWeaponEventEnum val)\n        {\n            byte numericValue = 0;\n            return ReadByte(ref numericValue) && MyMwcUtils.GetEnumFromNumber<MySpecialWeaponEventEnum, byte>(numericValue, ref val);\n        }\n\n        public bool ReadMultiplayerStateEnum(ref MyMultiplayerStateEnum val)\n        {\n            byte numericValue = 0;\n            return ReadByte(ref numericValue) && MyMwcUtils.GetEnumFromNumber<MyMultiplayerStateEnum, byte>(numericValue, ref val);\n        }\n\n        public bool ReadSmallShipType(ref MyMwcObjectBuilder_SmallShip_TypesEnum val)\n        {\n            byte numericValue = 0;\n            return ReadByte(ref numericValue) && MyMwcUtils.GetEnumFromNumber<MyMwcObjectBuilder_SmallShip_TypesEnum, byte>(numericValue, ref val);\n        }\n\n        public bool ReadEnum<T>(ref T val) where T : struct, IConvertible\n        {\n            try\n            {\n                return MyMwcEnums.ReadEnum<T>(m_binaryReader, out val);\n            }\n            catch (Exception ex)\n            {\n                HandleError(ex);\n                return false;\n            }\n        }\n\n        #endregion\n\n        #region COLLECTIONS\n        public bool ReadList<T>(ref List<T> result)\n           where T : struct, IReadWriteMessage\n        {\n            ushort count = 0;\n            if (!ReadUInt16(ref count)) return false;\n            if (result == null)\n            {\n                result = new List<T>(count);\n            }\n            else\n            {\n                result.Clear();\n            }\n            for (int i = 0; i < count; i++)\n            {\n                var item = new T();\n                if (!item.Read(this)) return false;\n                result.Add(item);\n            }\n            return true;\n        }\n\n        public bool ReadList<T>(ref List<T> result, ReadHandler<T> reader)\n           where T : struct\n        {\n            ushort count = 0;\n            if (!ReadUInt16(ref count)) return false;\n            if (result == null)\n            {\n                result = new List<T>(count);\n            }\n            else\n            {\n                result.Clear();\n            }\n            for (int i = 0; i < count; i++)\n            {\n                T? item = reader(this);\n                if (!item.HasValue) return false;\n                result.Add(item.Value);\n            }\n            return true;\n        }\n        #endregion\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/MyMessageWriter.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.IO;\nusing MinerWarsMath;\nusing System.Net;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.Networking.Multiplayer;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.CommonLIB.AppCode.Utils;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking\n{\n    public struct MyMessageWriter\n    {\n        BinaryWriter m_binaryWriter;\n\n        public BinaryWriter Writer { get { return m_binaryWriter; } }\n\n        public MyMessageWriter(BinaryWriter writer)\n        {\n            m_binaryWriter = writer;\n        }\n\n        #region BASE_TYPES\n        public void WriteBool(bool val)\n        {\n            m_binaryWriter.Write(val);\n        }\n\n        public void WriteSByte(sbyte val)\n        {\n            m_binaryWriter.Write(val);\n        }\n\n        public void WriteInt16(Int16 val)\n        {\n            m_binaryWriter.Write(val);\n        }\n\n        public void WriteInt32(Int32 val)\n        {\n            m_binaryWriter.Write(val);\n        }\n\n        public void WriteInt64(Int64 val)\n        {\n            m_binaryWriter.Write(val);\n        }\n\n        public void WriteByte(byte val)\n        {\n            m_binaryWriter.Write(val);\n        }\n\n        public void WriteUInt16(UInt16 val)\n        {\n            m_binaryWriter.Write(val);\n        }\n\n        public void WriteUInt32(UInt32 val)\n        {\n            m_binaryWriter.Write(val);\n        }\n\n        public void WriteUInt64(UInt64 val)\n        {\n            m_binaryWriter.Write(val);\n        }\n\n        public void WriteFloat(float val)\n        {\n            m_binaryWriter.Write(val);\n        }\n\n        public void WriteDouble(double val)\n        {\n            m_binaryWriter.Write(val);\n        }\n\n        public void WriteString(string val)\n        {\n            m_binaryWriter.Write(val);\n        }\n\n        public void WriteStringNullable(string val)\n        {\n            if (val == null)\n            {\n                WriteBool(false);\n            }\n            else\n            {\n                WriteBool(true);\n                m_binaryWriter.Write(val);\n            }\n        }\n\n        public void WriteBytes(byte[] bytes)\n        {\n            m_binaryWriter.Write(bytes);\n        }\n        #endregion\n\n        #region XNA_TYPES\n        public void WriteVector3(Vector3 val)\n        {\n            WriteFloat(val.X);\n            WriteFloat(val.Y);\n            WriteFloat(val.Z);\n        }\n\n        public void WriteVector4(Vector4 val)\n        {\n            WriteFloat(val.X);\n            WriteFloat(val.Y);\n            WriteFloat(val.Z);\n            WriteFloat(val.W);\n        }\n        #endregion\n\n        #region NULLABLE_TYPES\n        public void WriteByteNullable(byte? val)\n        {\n            m_binaryWriter.Write(val.HasValue);\n            if (val.HasValue) m_binaryWriter.Write(val.Value);\n        }\n\n        public void WriteInt32Nullable(Int32? val)\n        {\n            m_binaryWriter.Write(val.HasValue);\n            if (val.HasValue) m_binaryWriter.Write(val.Value);\n        }\n\n        public void WriteUInt32Nullable(UInt32? val)\n        {\n            m_binaryWriter.Write(val.HasValue);\n            if (val.HasValue) m_binaryWriter.Write(val.Value);\n        }\n\n        public void WriteFloatNullable(float? val)\n        {\n            m_binaryWriter.Write(val.HasValue);\n            if (val.HasValue) WriteFloat(val.Value);\n        }\n\n        public void WriteVector3Nullable(Vector3? val)\n        {\n            m_binaryWriter.Write(val.HasValue);\n            if (val.HasValue) WriteVector3(val.Value);\n        }\n\n        public void WriteEnumNullable<T>(T? val) where T : struct, IConvertible\n        {\n            m_binaryWriter.Write(val.HasValue);\n            if (val.HasValue) WriteEnum(val.Value);\n        }\n        #endregion\n\n        #region COMPOSED_TYPES\n        public void WritePositionAndOrientation(MyMwcPositionAndOrientation positionAndOrientation)\n        {\n            WriteVector3(positionAndOrientation.Position);\n            WriteVector3(positionAndOrientation.Forward);\n            WriteVector3(positionAndOrientation.Up);\n        }\n\n        public void WriteIPAddress(IPAddress val)\n        {\n            byte[] addressBytes = val.GetAddressBytes();\n            WriteByte((byte)addressBytes.Length); //  In case IP won't be 32bit, but 64bit\n            WriteBytes(addressBytes);\n        }\n\n        public void WriteIPEndPoint(IPEndPoint val)\n        {\n            WriteIPAddress(val.Address);\n            WriteUInt16((ushort)val.Port);\n        }\n\n        public void WriteObjectBuilder<T>(T objectBuilder)\n            where T : MyMwcObjectBuilder_Base\n        {\n            objectBuilder.Write(this.Writer);\n        }\n\n        #endregion\n\n        #region ENUMS\n        public void WriteResultCode(MyResultCodeEnum val)\n        {\n            m_binaryWriter.Write((byte)val);\n        }\n\n        public void WriteObjectBuilderSmallShipAmmoTypesEnum(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum val)\n        {\n            m_binaryWriter.Write((ushort)val);\n        }\n\n        public void WriteObjectBuilderSmallShipWeaponTypesEnum(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum val)\n        {\n            m_binaryWriter.Write((ushort)val);\n        }\n\n        public void WriteObjectBuilder_FactionEnum(MyMwcObjectBuilder_FactionEnum val)\n        {\n            m_binaryWriter.Write((int)val);\n        }\n\n        public void WriteSpecialWeaponEventEnum(MySpecialWeaponEventEnum val)\n        {\n            m_binaryWriter.Write((byte)val);\n        }\n\n        public void WriteMultiplayerStateEnum(MyMultiplayerStateEnum val)\n        {\n            m_binaryWriter.Write((byte)val);\n        }\n\n        public void WriteSmallShipType(MyMwcObjectBuilder_SmallShip_TypesEnum val)\n        {\n            m_binaryWriter.Write((byte)val);\n        }\n\n        public void WriteEnum<T>(T val) where T : struct, IConvertible\n        {\n            MyMwcEnums.WriteEnum<T>(m_binaryWriter, val);\n        }\n\n        #endregion\n\n        #region COLLECTIONS\n        public void WriteList<T>(List<T> list)\n            where T : struct, IReadWriteMessage\n        {\n            int count = list != null ? list.Count : 0;\n            if (count > ushort.MaxValue) throw new InvalidOperationException(\"List can have only \" + ushort.MaxValue + \"items\");\n            WriteUInt16((ushort)list.Count);\n            for (int i = 0; i < count; i++)\n            {\n                list[i].Write(this);\n            }\n        }\n\n        public void WriteList<T>(List<T> list, Action<MyMessageWriter, T> writer)\n            where T : struct\n        {\n            int count = list != null ? list.Count : 0;\n            if (count > ushort.MaxValue) throw new InvalidOperationException(\"List can have only \" + ushort.MaxValue + \"items\");\n            WriteUInt16((ushort)list.Count);\n            for (int i = 0; i < count; i++)\n            {\n                writer(this, list[i]);\n            }\n        }\n        #endregion\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/MyMwcCheaterAlert.cs",
    "content": "﻿using System.Net;\nusing SysUtils.Utils;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking\n{\n    //  IMPORTANT: Never change numeric values!\n    public enum MyMwcCheaterAlertType : byte\n    {\n        //  This is when we receive message type with unknown type or number\n        UNKNOWN_MESSAGE_TYPE = 0,                       \n        \n        //  We have this message type in our enum, but for some reasons it isn't handled in the receive messages switch\n        UNHANDLED_MESSAGE_TYPE = 1,                     \n\n        //  When message received on client-server that has not callback specified for that type of message (e.g. LOGIN sent from player to player)\n        NO_CALLBACK_SPECIFIED = 2,                      \n        \n        //  Message received from unknown end-point and it wasn't LOGIN or LOGIN_SS message\n        MESSAGE_FROM_UNKNOWN_ENDPOINT = 3,              \n\n        //  MAC code in the packet doesn't equal MAC code we expect from that end-point! Probably sent from different IP address or someone is trying to pretend to be other player.\n        WRONG_MAC = 4,                                  \n        \n        //  Too big message received, we ignore it.\n        MESSAGE_RECEIVED_TOO_BIG = 5,                    \n\n        //  Exception occured during we are reading message from memory stream. Message and also exception will be ignored, but we must know about it.\n        EXCEPTION_DURING_READING_MESSAGE = 6,           \n        \n        //  If we read byte from the message, but can't convert/case it to specified enum\n        UNKNOWN_ENUM_VALUE = 7,                         \n        \n        //  Player has received join sector notification from server on endpoint which he already has\n        DUPLICATE_ENTER_SECTOR_NOTIFICATION = 8,        \n\n        //  When player receives message from other player, but this message is supposed to be sent only from a server. In this case callback is \n        //  specified because player should handle those message, but only if received from server (he server shutdown notification, join sector notification, etc)\n        MESSAGE_RECEIVED_NOT_FROM_SERVER = 9,           \n        \n        //  Wrong value received (too large, not handled enum value, etc...)\n        WRONG_VALUE = 10,                               \n        \n        //  Message received from a player who is not logged in, but this message needs logged in player otherwise it can't work \n        //  properly (user not found by endpoint). Standard handling of this scenario is that server won't send any response to the player.\n        MESSAGE_FROM_PLAYER_WHO_IS_NOT_LOGGED_IN = 11,\n\n        //  Received \"start enter sector\" on user who is not right now in any game\n        START_ENTER_SECTOR_FOR_USER_WHO_IS_NOT_IN_GAME = 12,\n\n        //  Received \"end enter sector\" on user who is not right now in any game\n        END_ENTER_SECTOR_FOR_USER_WHO_IS_NOT_IN_GAME = 13,\n\n        //  Received \"leave sector\" on user who is not right now in any game\n        //LEAVE_SECTOR_FOR_USER_WHO_IS_NOT_IN_GAME = 14,\n        \n        //  If player sent message where we want to transfer between two sector that aren't adjacent - it's something we don't support and don't allow\n        TRANSFERING_BETWEEN_NOT_ADJACENT_SECTORS = 15,\n\n        //  For sequenced messages\n        SEQUENCED_MESSAGE_IS_TOO_LARGE = 16,\n        WHILE_PROCESSING_SEQUENCED_MESSAGE_ON_A_CHANNEL_MESSAGE_OF_DIFFERENT_TYPE_RECEIVED = 17\n    }\n\n    public static class MyMwcCheaterAlert\n    {\n        public static void AddAlert(MyMwcCheaterAlertType type, EndPoint cheaterAddress, string description)\n        {\n            MyMwcLog.WriteLine(\"Networking.MyMwcCheaterAlert - START\");\n            MyMwcLog.IncreaseIndent();\n\n            //  Write to local log too, because if sending cheater alert won't be successful, at least user can send us the log file.\n            MyMwcLog.WriteLine(\"Type: \" + (int)type);\n            MyMwcLog.WriteLine(\"CheaterAddress: \" + ((cheaterAddress == null) ? \"null\" : cheaterAddress.ToString()));\n            MyMwcLog.WriteLine(\"Description: \" + description.ToString());\n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"Networking.MyMwcCheaterAlert - END\");\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/MyMwcClientServer_Structs.cs",
    "content": "﻿using MinerWarsMath;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils.Utils;\nusing System.Runtime.Serialization;\nusing System.Reflection;\nusing SysUtils;\nusing System;\nusing System.Net;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking\n{\n    public static partial class MyMwcClientServer\n    {\n        internal static Nullable<T> GetEnumFromNumber<T, U>(U val, EndPoint senderEndPoint) where T : struct\n        {\n            Nullable<T> ret = MyMwcUtils.GetEnumFromNumber<T, U>(val);\n            if (ret == null)\n            {\n                //  Return null so caller will ignore this packet!\n                MyMwcCheaterAlert.AddAlert(MyMwcCheaterAlertType.UNKNOWN_ENUM_VALUE, senderEndPoint, \"val: \" + val.ToString());\n                return null;\n            }\n            else\n            {\n                return ret.Value;\n            }\n        }\n\n        // Obtain sector type based on the session type parameter\n        public static MyMwcSectorTypeEnum GetSectorTypeFromSessionType(MyMwcStartSessionRequestTypeEnum sessionType)\n        {\n            MyMwcSectorTypeEnum? sectorType = null;\n            if ((sessionType == MyMwcStartSessionRequestTypeEnum.EDITOR_SANDBOX) ||\n                (sessionType == MyMwcStartSessionRequestTypeEnum.SANDBOX_FRIENDS) ||\n                (sessionType == MyMwcStartSessionRequestTypeEnum.SANDBOX_OWN) ||\n                (sessionType == MyMwcStartSessionRequestTypeEnum.SANDBOX_RANDOM))\n            {\n                sectorType = MyMwcSectorTypeEnum.SANDBOX;\n            }\n            else if (\n                (sessionType == MyMwcStartSessionRequestTypeEnum.EDITOR_STORY) ||\n                (sessionType == MyMwcStartSessionRequestTypeEnum.NEW_STORY) ||\n                (sessionType == MyMwcStartSessionRequestTypeEnum.LOAD_CHECKPOINT))\n            {\n                sectorType = MyMwcSectorTypeEnum.STORY;\n            }\n            else if (\n                (sessionType == MyMwcStartSessionRequestTypeEnum.EDITOR_MMO) ||\n                (sessionType == MyMwcStartSessionRequestTypeEnum.MMO))\n            {\n                sectorType = MyMwcSectorTypeEnum.MMO;\n            }\n\n            MyCommonDebugUtils.AssertDebug(sectorType.HasValue);\n\n            return sectorType.Value;\n        }\n    }\n\n    public enum MyMwcServerCommandRequestTypesEnum : byte\n    {\n        GET_INFO,\n        CHECK_ALIVE,\n        SERVER_SHUTDOWN_NOTIFICATION\n    }\n    [Obfuscation(Feature = MyMwcFinalBuildConstants.OBFUSCATION_EXCEPTION_FEATURE, Exclude = true, ApplyToMembers = true)]\n    public enum MyMwcSessionStateEnum\n    {\n        NEW_GAME = 1,\n        LOAD_CHECKPOINT = 2,\n        JOIN_GAME = 3,\n        EDITOR = 4,\n    }\n\n    [Obfuscation(Feature = MyMwcFinalBuildConstants.OBFUSCATION_EXCEPTION_FEATURE, Exclude = true, ApplyToMembers = true)]\n    public enum MyMwcTravelTypeEnum\n    {\n        NEIGHBOUR = 1,\n        SOLAR = 2,\n    }\n\n    [Obfuscation(Feature = MyMwcFinalBuildConstants.OBFUSCATION_EXCEPTION_FEATURE, Exclude = true, ApplyToMembers = true)]\n    public enum MyMwcLeaveSectorReasonEnum : byte\n    {\n        LOGOUT,\n        EXIT_TO_MAIN_MENU,\n        // Travel handled in separate message\n        TRAVEL,\n        RELOAD,\n        //TRAVEL_IN_SOLAR_MAP\n    }\n\n    [Obfuscation(Feature = MyMwcFinalBuildConstants.OBFUSCATION_EXCEPTION_FEATURE, Exclude = true, ApplyToMembers = true)]\n    public enum MyMwcRegisterResponseResultEnum : byte\n    {\n        OK,\n        USERNAME_FORMAT_INVALID,\n        USERNAME_ALREADY_USED,\n        PASSWORD_FORMAT_INVALID,\n        EMAIL_FORMAT_INVALID,\n        WRONG_CLIENT_VERSION,\n        UNKNOWN_ERROR\n    }\n\n    [System.Obsolete(\"Use SessionStartTypeEnum & SessionTypeEnum instead\")]\n    public enum MyMwcStartSessionRequestTypeEnum : byte\n    {\n        NEW_STORY,                  //  Play new single-player story, from beginning (or from first chapter)\n        LOAD_CHECKPOINT,            //  Play single-player story from last checkpoint or from any chapter checkpoint\n        JOIN_FRIEND_STORY,          //  Join friend in his active single-player story\n        MMO,                        //  Play MMO game, common for all players on the server\n        SANDBOX_OWN,                //  Play your sandbox sectors\n        SANDBOX_FRIENDS,            //  Play sandbox sectors of your friend\n        JOIN_SANDBOX_FRIEND,        //  Join friend in his active sandbox game\n        EDITOR_SANDBOX,             //  Edit your sandbox sectors\n        EDITOR_STORY,               //  Edit story sectors\n        EDITOR_MMO,                 //  Edit MMO sectors\n        SANDBOX_RANDOM              //  Play random sandbox - without data from the server. Just local random sector.\n    }\n\n    [System.Obsolete(\"Use SessionStartTypeEnum & SessionTypeEnum instead\")]\n    public enum MyMwcStartSessionResponseTypeEnum : byte\n    {\n        OK                     //  OK - game started successfuly\n        //NO_PERMISSION,          //  Player can't start this game because he doesn't have permissions (e.g. when demo user starts MMO or when regular user tries to launch MMO editor)\n        //WRONG_PARAMETERS,       //  E.g. when CheckpointId was wrong\n        //USER_NOT_LOGGED_IN      //  User isn't logged in but he send this START GAME message\n    }\n\n    [Obfuscation(Feature = MyMwcFinalBuildConstants.OBFUSCATION_EXCEPTION_FEATURE, Exclude = true, ApplyToMembers = true)]\n    public enum MyMwcSelectSectorRequestTypeEnum : byte\n    {\n        RANDOM_FRIENDS,                 //request for loading random friend sectors from server \n        FIND_BY_PLAYER_NAME,             //request for loading friend sectors by entered player name\n        FIND_BY_PLAYER_NAME_FULLTEXT,\n        STORY,                          // request for loading story sectors\n    }\n\n    [Obfuscation(Feature = MyMwcFinalBuildConstants.OBFUSCATION_EXCEPTION_FEATURE, Exclude = true, ApplyToMembers = true)]\n    public enum MyMwcLoginResponseResultEnum : byte\n    {\n        OK,\n        WRONG_USERNAME_OR_PASSWORD,\n        USER_ALREADY_LOGGED_IN,\n        WRONG_CLIENT_VERSION,\n        ACCESS_RESTRICTED,\n        GENERAL_FAILURE,\n        INVALID_TIME,\n        USERNAME_OR_PASSWORD_EMPTY,\n    }\n\n    //  Must be struct because is used as key for dictionary and there only values are important not reference in memory\n    [DataContract]\n    public struct MyMwcSectorIdentifier\n    {\n        [DataMember(Name = \"SectorType\")]\n        public MyMwcSectorTypeEnum SectorType;          //  Type of sector(mmo, story, sandbox)\n\n        [DataMember(Name = \"Position\")]\n        public MyMwcVector3Int Position;                //  Position of this sector within this sector group\n\n        [DataMember(Name = \"UserId\")]\n        public int? UserId;                             //  Id of the user who saved the sector\n\n        [DataMember(Name = \"SectorName\")]\n        public string SectorName;                       //  Name of sector\n\n        public MyMwcSectorIdentifier(MyMwcSectorTypeEnum sectorType, int? userId, MyMwcVector3Int position, string sectorName)\n        {\n            SectorType = sectorType;\n            UserId = userId;\n            Position = position;\n            SectorName = sectorName == null ? string.Empty : sectorName;\n        }\n\n        public bool CanBeCheckpointSaved()\n        {\n            return true;\n        }\n\n        public bool CanBeSaved()\n        {\n            // Story sectors can be saved only on zero plane\n            return SectorType != MyMwcSectorTypeEnum.STORY || Position.Y == 0;\n        }\n\n        public override string ToString()\n        {\n            string sectorType;\n            bool useUserId;\n            switch (SectorType)\n            {\n                case MyMwcSectorTypeEnum.STORY:\n                    sectorType = \"STORY\";\n                    useUserId = false;\n                    break;\n                case MyMwcSectorTypeEnum.MMO:\n                    sectorType = \"MMO\";\n                    useUserId = false;\n                    break;\n                case MyMwcSectorTypeEnum.SANDBOX:\n                    sectorType = \"SANDBOX\";\n                    useUserId = true;\n                    break;\n                default:\n                    throw new MyMwcExceptionApplicationShouldNotGetHere();\n            }\n\n            if (useUserId)\n            {\n                useUserId = UserId.HasValue;\n            }\n\n            return sectorType + (useUserId ? \" - \" + UserId.Value + \" - \" + Position.ToString() : \" - \" + Position.ToString());\n        }\n\n        public int CompareTo(MyMwcSectorIdentifier compareWith)\n        {\n            int xA = Position.X;\n            int yA = Position.Y;\n            int zA = Position.Z;\n\n            int xB = compareWith.Position.X;\n            int yB = compareWith.Position.Y;\n            int zB = compareWith.Position.Z;\n\n            if (xA > xB) return -1;\n            if (xA < xB) return 1;\n            if (xA == xB)\n            {\n                if (yA > yB) return -1;\n                if (yA < yB) return 1;\n                if (yA == yB)\n                {\n                    if (zA > zB) return -1;\n                    if (zA < zB) return 1;\n                    if (zA == zB) return 0;\n                }\n            }\n\n            return 0;\n        }\n\n        public static bool Is25DSector(string sectorName)\n        {\n            return sectorName != null && (sectorName.ToLower().Contains(\"2.5d\") || sectorName.ToLower().Contains(\"2,5d\"));\n        }\n    }\n\n    //  Must be struct because we don't want to provocate garbage collector when received in MW game-client \n    public struct MyMwcPositionAndOrientation\n    {\n        public Vector3 Position;        //  Position within sector\n        public Vector3 Forward;         //  Forward vector (for orientation)\n        public Vector3 Up;              //  Up vector (for orientation)\n\n        public MyMwcPositionAndOrientation(Vector3 position, Vector3 forward, Vector3 up)\n        {\n            Position = position;\n            Forward = forward;\n            Up = up;\n        }\n\n        // Optimized version\n        public MyMwcPositionAndOrientation(ref Matrix matrix)\n        {\n            Position = matrix.Translation;\n            Forward = matrix.Forward;\n            Up = matrix.Up;\n        }\n\n        public MyMwcPositionAndOrientation(Matrix matrix)\n            : this(matrix.Translation, matrix.Forward, matrix.Up)\n        {\n\n        }\n\n        public Matrix GetMatrix()\n        {\n            return Matrix.CreateWorld(Position, Forward, Up);\n        }\n\n        public override string ToString()\n        {\n            return Position.ToString() + \"; \" + Forward.ToString() + \"; \" + Up.ToString();\n        }\n    }\n\n    [DataContract(Name = \"MyMwcUserDetail\")]\n    [Obfuscation(Feature = MyMwcFinalBuildConstants.OBFUSCATION_EXCEPTION_FEATURE, Exclude = true, ApplyToMembers = true)]\n    public struct MyMwcUserDetail\n    {\n        [DataMember(Name = \"UserId\")]\n        public int UserId;\n\n        [DataMember(Name = \"DisplayName\")]\n        public string DisplayName;\n\n        public MyMwcUserDetail(int userId, string displayName)\n        {\n            UserId = userId;\n            DisplayName = displayName;\n        }\n\n        public override string ToString()\n        {\n            return UserId.ToString() + \"; \" + DisplayName.ToString();\n        }\n    }\n\n    public enum MyMwcVoxelHandModeTypeEnum : byte\n    {\n        ADD = 0,\n        SUBTRACT = 1,\n        SOFTEN = 2,\n        SET_MATERIAL = 3,\n        WRINKLE = 4\n    }\n\n    //  IMPORTANT: Never delete or change numeric values from this enum. They are used in database too and we don't want inconsistency.\n    public enum MyMwcVoxelMapMergeTypeEnum : byte\n    {\n        ADD = 0,                    //  Merged voxels are added to actual voxel map only if they have more content than current, so empty voxels are ignored and full are added\n        INVERSE_AND_SUBTRACT = 1    //  Merged voxels are subtracted from actual voxel map, so where was full voxel and merged is empty, nothing happens. But if merged is full or mixed, empty/mixed voles is created.\n    }\n    \n    //  IMPORTANT: Never delete or change numeric values from this enum. They are used in database too and we don't want inconsistency.\n    [Obfuscation(Feature = MyMwcFinalBuildConstants.OBFUSCATION_EXCEPTION_FEATURE, Exclude = true, ApplyToMembers = true)]\n    public enum MyMwcVoxelMaterialsEnum : byte\n    {\n        Indestructible_01 = 0,\n        Indestructible_02 = 1,\n        Treasure_01 = 2,\n        Treasure_02 = 3,\n        Iron_01 = 4,\n        Iron_02 = 5,\n        Helium3_01 = 6,\n        Helium4_01 = 7,\n        Stone_01 = 8,\n        Stone_02 = 9,\n        Stone_03 = 10,\n        Stone_04 = 11,\n        Stone_05 = 12,\n        Stone_06 = 13,\n        Stone_07 = 14,\n        Stone_08 = 15,\n        Indestructible_03 = 16,\n        Stone_10 = 17,\n        Indestructible_04 = 18,\n        Indestructible_05_Craters_01 = 19,\n        Stone_13_Wall_01 = 20,\n        Ice_01 = 21,\n        Gold_01 = 22,\n        Silver_01 = 23,\n        Organic_01 = 24,\n        Nickel_01 = 25,\n        Magnesium_01 = 26,\n        Platinum_01 = 27,\n        Uranite_01 = 28,\n        Silicon_01 = 29,\n        Cobalt_01 = 30,\n        Snow_01 = 31,\n        Lava_01 = 32,\n        Concrete_01 = 33,\n        Concrete_02 = 34,\n        Sandstone_01 = 35,\n        Stone_Red = 36\n    }\n\n    //  IMPORTANT: Never delete or change numeric values from this enum. They are used in database too and we don't want inconsistency.\n    public enum MyMwcVoxelFilesEnum : short\n    {\n        PerfectSphereWithMassiveTunnels_512x512x512 = 0,\n        TorusWithSmallTunnel_256x128x256 = 1,\n        VerticalIsland_128x256x128 = 2,\n        PerfectSphereWithMassiveTunnels2_512x512x512 = 3,\n        PerfectSphereWithRaceTunnel2_512x512x512 = 4,\n        TorusWithManyTunnels_256x128x256 = 5,\n        PerfectSphereSplitted_512x512x512 = 6,\n        PerfectSphereWithFewTunnels_512x512x512 = 7,\n        PerfectSphereWithRaceTunnel_512x512x512 = 8,\n        SphereWithLargeCutOut_128x128x128 = 9,\n        VerticalIsland_128x128x128 = 10,\n        TorusStorySector_256x128x256 = 11,\n        VerticalIslandStorySector_128x256x128 = 12,\n        DeformedSphere1_64x64x64 = 13,\n        DeformedSphere2_64x64x64 = 14,\n        DeformedSphereWithCorridor_128x64x64 = 15,\n        DeformedSphereWithCorridor_256x256x256 = 16,\n        DeformedSphereWithCraters_128x128x128 = 17,\n        ScratchedBoulder_128x128x128 = 18,\n        DeformedSphereWithHoles_64x128x64 = 19,\n        TorusWithManyTunnels_2_256x128x256 = 20,\n        VoxelImporterTest = 21,\n        Fortress = 22,\n        AsteroidWithSpaceStationStartStorySector = 23,\n\n        Cube_128x128x128 = 24,\n        Cube_128x128x256 = 25,\n        Cube_128x128x64 = 26,\n        Cube_128x256x128 = 27,\n        Cube_128x256x256 = 28,\n        Cube_128x256x64 = 29,\n        Cube_128x64x128 = 30,\n        Cube_128x64x256 = 31,\n        Cube_128x64x64 = 32,\n        Cube_256x128x128 = 33,\n        Cube_256x128x256 = 34,\n        Cube_256x128x512 = 35,\n        Cube_256x256x128 = 36,\n        Cube_256x256x256 = 37,\n        Cube_256x256x512 = 38,\n        Cube_256x512x128 = 39,\n        Cube_256x512x256 = 40,\n        Cube_256x512x512 = 41,\n        Cube_512x256x256 = 42,\n        Cube_512x256x512 = 43,\n        Cube_512x512x256 = 44,\n        Cube_512x512x512 = 45,\n        Cube_64x128x128 = 46,\n        Cube_64x128x64 = 47,\n        Cube_64x64x128 = 48,\n        Cube_64x64x64 = 49,\n\n        Story02 = 50,\n        Mission01_01 = 51,\n        Mission01_02 = 52,\n        Mission07_01 = 53,\n\n        Mission01_asteroid_big = 54,\n        Mission01_asteroid_mine = 55,\n\n        SphereFull_64 = 56,\n        SphereFull_128 = 57,\n        SphereFull_256 = 58,\n        SphereFull_512 = 59,\n\n        EacPrisonAsteroid = 60,\n        piratebase_export = 61,\n\n        Chinese_Mines_CenterAsteroid = 62,\n        Chinese_Mines_FrontAsteroid = 63,\n        Chinese_Mines_FrontRightAsteroid = 64,\n        Chinese_Mines_LeftAsteroid = 65,\n        Chinese_Mines_MainAsteroid = 66,\n        Chinese_Mines_RightAsteroid = 67,\n\n        TowerWithConcreteBlock1 = 68,\n        TowerWithConcreteBlock2 = 69,\n\n        Warehouse = 70,\n\n        Barths_moon_base = 71,\n        Barths_moon_satelite = 72,\n        Fort_valiant_base = 73,\n        Fort_valiant_dungeon = 74,\n\n        JunkYardInhabited_256x128x256 = 75,\n        JunkYardToxic_128x128x128 = 76,\n\n        Empty_512x512x512 = 77,\n\n        JunkYardForge_256x256x256 = 78,\n\n        Barths_moon_camp = 79,\n\n        rift_base_bigger = 80,\n        rift_base_smaller = 81,\n\n        barths_moon_lab1 = 82,\n        barths_moon_lab2 = 83,\n\n        fort_val_box_128 = 84,\n\n        rift = 85,\n        rift_small_1 = 86,\n        rift_small_2 = 87,\n\n        Junkyard_Race_256x256x256 = 88,\n        Junkyard_RaceAsteroid_256x256x256 = 89,\n\n        ChineseRefinery_First_128x128x128 = 90,\n        ChineseRefinery_Second_128x128x128 = 91,\n        ChineseRefinery_Third_128x256x128 = 92,\n\n        Chinese_Corridor_Last_126x126x126 = 93,\n        Chinese_Corridor_Tunnel_256x256x256 = 94,\n\n        Bioresearch = 95,\n        \n        small2_asteroids = 96,\n        small3_asteroids = 97,\n        many_medium_asteroids = 98,\n        many_small_asteroids = 99,\n        many2_small_asteroids = 100,\n        rus_attack = 101,\n        RussianWarehouse =102,\n        MothershipFacility = 103,\n        SlaverBase = 104,\n        ResearchVessel =105,\n        BilitaryBase =106,\n        reef_ast = 107,\n\n        hopebase512 = 108,\n        hopefood128 = 109,\n        hopevault128 = 110,\n\n        New_Jerusalem_Asteroid = 111,\n        Chinese_Transmitter_Asteroid = 112,\n        Slaver_Base_2_Asteroid = 113,\n        Small_Pirate_Base_2_Asteroid = 114,\n        Small_Pirate_Base_Asteroid = 115,\n        Solar_Factory_EAC_Asteroid = 116,\n        Mines_Asteroid = 117,\n        Small_Pirate_Base_3_1 = 118,\n        Small_Pirate_Base_3_2 = 119,\n        Small_Pirate_Base_3_3 = 120,\n        Voxel_Arena_Tunnels = 121,\n        EACSurveyBigger_512_256_256 = 122,\n        EACSurvaySmaller_256_256_256 = 123,\n        Laika1_128_128_128 = 124,\n        Laika2_64_64_64 = 125,\n        Laika3_64_64_64 = 126,\n        Laika4_256_128_128 = 127,\n        Laika5_128_128_128 = 128,\n        Laika9_128_128_128 = 129,\n        Laika6_64_64_64 = 130,\n        Laika8_128_128_128 = 131,\n        Laika7_64_64_64 = 132,\n        Novaja_Zemlja = 133,\n\n        Arabian_Border_1 = 134,\n        Arabian_Border_2 = 135,\n        Arabian_Border_3 = 136,\n        Arabian_Border_4 = 137,\n        Arabian_Border_5 = 138,\n        Arabian_Border_6 = 139,\n        Arabian_Border_7 = 140,\n        Arabian_Border_Arabian = 141,\n        Arabian_Border_EAC = 142,\n\n        Chinese_Corridor_1 = 143,\n\n        Grave_Skull = 144,\n\n        Pirate_Base_1 = 145,\n        Pirate_Base_2 = 146,\n        Pirate_Base_3 = 147,\n\n        Plutonium_Mines = 148,\n\n        Fragile_Sector = 149,\n\n        Chinese_Solar_Array_Bottom = 150,\n        Chinese_Solar_Array_Main = 151,\n\n        Chinese_Mines_Small = 152,\n        Chinese_Mines_Side = 153,\n\n        Hippie_Outpost_Base = 154,\n        Hippie_Outpost_Tree = 155,\n\n        Laika_1 = 156,\n        Laika_2 = 157,\n        Laika_3 = 158,\n\n        Fortress_Sanc_1 = 159,\n        Fortress_Sanc_2 = 160,\n        Fortress_Sanc_3 = 161,\n        Fortress_Sanc_4 = 162,\n        Fortress_Sanc_5 = 163,\n        Fortress_Sanc_6 = 164,\n        Fortress_Sanc_7 = 165,\n        Fortress_Sanc_8 = 166,\n        Fortress_Sanc_9 = 167,\n        Fortress_Sanc_10 = 168,\n        Fortress_Sanc_11 = 169,\n\n        Russian_Transmitter_1 = 170,\n        Russian_Transmitter_2 = 171,\n        Russian_Transmitter_3 = 172,\n\n        Russian_Warehouse = 173,\n\n        ReichStag_1 = 174,\n        ReichStag_2 = 175,\n\n        New_Singapore = 176,\n\n        HallOfFame = 177,\n\n        IceCaveDeathmatch = 178,\n\n        WarehouseDeathmatch = 179,\n\n        Nearby_Station_1 = 180,\n        Nearby_Station_2 = 181,\n        Nearby_Station_3 = 182,\n        Nearby_Station_4 = 183,\n        Nearby_Station_5 = 184,\n        Nearby_Station_6 = 185,\n        Nearby_Station_7 = 186,\n        Nearby_Station_8 = 187,\n        Nearby_Station_9 = 188,\n        Nearby_Station_10 = 189,\n        Nearby_Station_11 = 190,\n        Nearby_Station_12 = 191,\n\n        VoxelArenaDeathmatch = 192,\n        \n        RiftStationSmaller = 193,\n     \n        Flat_256x64x256 = 194,\n        Flat_128x64x128 = 195,\n        Flat_512x64x512 = 196,\n\n        PirateBaseStaticAsteroid_A_1000m = 197,\n        PirateBaseStaticAsteroid_A_5000m_1 = 198,\n        PirateBaseStaticAsteroid_A_5000m_2 = 199,\n\n        d25asteroid_field = 200,\n        d25city_fight = 201,\n        d25gates_ofhell = 202,\n        d25junkyard = 203,\n        d25military_area = 204,\n        d25miner_outpost = 205,\n        d25plain = 206,\n        d25radioactive = 207,\n\n        Russian_Transmitter_Main = 208,\n        SphereFull_1024 = 209,\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/MyMwcMessageIn.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Net;\nusing System.Net.Sockets;\nusing System.Threading;\nusing MinerWarsMath;\nusing MinerWarsMath.Graphics;\nusing MinerWarsMath.Graphics.PackedVector;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Voxels;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.LargeShipTools;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.InfluenceSpheres;\nusing SysUtils;\nusing MinerWars.CommonLIB.AppCode.Networking.Multiplayer;\n\n//  Incomming / received message\n\n//  Method that have \"Ex\" suffix in the name are considered to be safe. They will not throw an exception\n//  when error during reading the data. \n\n//  This class is used to read one packet. It's wrapper for READING bytes/doubles/string/vectors/etc from bit/byte array.\n//  IMPORTANT: In constructor it allocated byte array, so preallocate it in client and then use one instance all.\n\nnamespace MinerWars.CommonLIB.AppCode.Networking\n{\n    public static class MyMwcMessageIn\n    {\n        static bool ReadBool(BinaryReader binaryReader)\n        {\n            return binaryReader.ReadBoolean();\n        }\n\n        //  Same as Read***() but if exception occurs during reading, we log that exception and ignore it or rethrow\n        //  If ignored, null is returned and caller knows that this message failed to read.\n        public static bool? ReadBoolEx(BinaryReader binaryReader, EndPoint senderEndPoint)\n        {\n            try\n            {\n                return ReadBool(binaryReader);\n            }\n            catch (Exception ex)\n            {\n                ExceptionDuringReadingMessage(ex, senderEndPoint);\n                return null;\n            }\n        }\n\n        public static bool ReadByteNullableEx(ref byte? value, BinaryReader binaryReader, EndPoint senderEndPoint)\n        {\n            try\n            {\n                if (ReadBool(binaryReader))\n                {\n                    value = ReadByte(binaryReader);\n                }\n                else\n                {\n                    value = null;\n                }\n                return true;\n            }\n            catch (Exception ex)\n            {\n                ExceptionDuringReadingMessage(ex, senderEndPoint);\n                return false;\n            }\n        }\n\n        public static bool ReadByteEx(ref byte value, BinaryReader reader, EndPoint sender)\n        {\n            try\n            {\n                value = reader.ReadByte();\n                return true;\n            }\n            catch (Exception ex)\n            {\n                ExceptionDuringReadingMessage(ex, sender);\n                return false;\n            }\n        }\n\n        static byte ReadByte(BinaryReader binaryReader)\n        {\n            return binaryReader.ReadByte();\n        }\n\n        //  Same as Read***() but if exception occurs during reading, we log that exception and ignore it or rethrow\n        //  If ignored, null is returned and caller knows that this message failed to read.\n        public static byte? ReadByteEx(BinaryReader binaryReader, EndPoint senderEndPoint)\n        {\n            try\n            {\n                return ReadByte(binaryReader);\n            }\n            catch (Exception ex)\n            {\n                ExceptionDuringReadingMessage(ex, senderEndPoint);\n                return null;\n            }\n        }\n\n        public static bool ReadInt32Ex(ref Int32 value, BinaryReader binaryReader, EndPoint senderEndPoint)\n        {\n            try\n            {\n                value = ReadInt32(binaryReader);\n                return true;\n            }\n            catch (Exception ex)\n            {\n                ExceptionDuringReadingMessage(ex, senderEndPoint);\n                return false;\n            }\n        }\n\n        //  Same as Read***() but if exception occurs during reading, we log that exception and ignore it or rethrow\n        //  If ignored, null is returned and caller knows that this message failed to read.\n        public static Int32? ReadInt32Ex(BinaryReader binaryReader, EndPoint senderEndPoint)\n        {\n            try\n            {\n                return ReadInt32(binaryReader);\n            }\n            catch (Exception ex)\n            {\n                ExceptionDuringReadingMessage(ex, senderEndPoint);\n                return null;\n            }\n        }\n\n        //  Same as Read***() but if exception occurs during reading, we log that exception and ignore it or rethrow\n        //  If ignored, null is returned and caller knows that this message failed to read.\n        public static Int64? ReadInt64Ex(BinaryReader binaryReader, EndPoint senderEndPoint)\n        {\n            try\n            {\n                return ReadInt64(binaryReader);\n            }\n            catch (Exception ex)\n            {\n                ExceptionDuringReadingMessage(ex, senderEndPoint);\n                return null;\n            }\n        }\n\n        //  Same as Read***() but if exception occurs during reading, we log that exception and ignore it or rethrow\n        //  If ignored, null is returned and caller knows that this message failed to read.\n        public static UInt16? ReadUInt16Ex(BinaryReader binaryReader, EndPoint senderEndPoint)\n        {\n            try\n            {\n                return ReadUInt16(binaryReader);\n            }\n            catch (Exception ex)\n            {\n                ExceptionDuringReadingMessage(ex, senderEndPoint);\n                return null;\n            }\n        }\n\n        public static bool ReadUInt32Ex(ref UInt32 result, BinaryReader binaryReader, EndPoint senderEndPoint)\n        {\n            try\n            {\n                result = ReadUInt32(binaryReader);\n                return true;\n            }\n            catch (Exception ex)\n            {\n                ExceptionDuringReadingMessage(ex, senderEndPoint);\n                return false;\n            }\n        }\n\n        public static UInt32? ReadUInt32Ex(BinaryReader binaryReader, EndPoint senderEndPoint)\n        {\n            try\n            {\n                return ReadUInt32(binaryReader);\n            }\n            catch (Exception ex)\n            {\n                ExceptionDuringReadingMessage(ex, senderEndPoint);\n                return null;\n            }\n        }\n\n        public static UInt64? ReadUInt64Ex(BinaryReader binaryReader, EndPoint senderEndPoint)\n        {\n            try\n            {\n                return ReadUInt64(binaryReader);\n            }\n            catch (Exception ex)\n            {\n                ExceptionDuringReadingMessage(ex, senderEndPoint);\n                return null;\n            }\n        }\n\n        static UInt64? ReadUInt64(BinaryReader binaryReader)\n        {\n            return binaryReader.ReadUInt64();\n        }\n\n        static Byte4 ReadByte4(BinaryReader binaryReader, EndPoint senderEndPoint)\n        {\n            Byte4 result = new Byte4();\n            result.PackedValue = binaryReader.ReadUInt32();\n\n            return result;\n        }\n\n        public static Byte4? ReadByte4Ex(BinaryReader binaryReader, EndPoint senderEndPoint)\n        {\n            try\n            {\n                return ReadByte4(binaryReader, senderEndPoint);\n            }\n            catch (Exception e)\n            {\n                ExceptionDuringReadingMessage(e, senderEndPoint);\n                return null;\n            }\n        }\n\n        public static Int16 ReadInt16(BinaryReader binaryReader)\n        {\n            return binaryReader.ReadInt16();\n        }\n\n        //  Same as Read***() but if exception occurs during reading, we log that exception and ignore it or rethrow\n        //  If ignored, null is returned and caller knows that this message failed to read.\n        public static Int16? ReadInt16Ex(BinaryReader binaryReader, EndPoint senderEndPoint)\n        {\n            try\n            {\n                return ReadInt16(binaryReader);\n            }\n            catch (Exception ex)\n            {\n                ExceptionDuringReadingMessage(ex, senderEndPoint);\n                return null;\n            }\n        }\n\n        static Color ReadColor(BinaryReader binaryReader)\n        {\n            return new Color(binaryReader.ReadByte(), binaryReader.ReadByte(), binaryReader.ReadByte(), binaryReader.ReadByte());\n        }\n\n        //  Same as Read***() but if exception occurs during reading, we log that exception and ignore it or rethrow\n        //  If ignored, null is returned and caller knows that this message failed to read.\n        public static Color? ReadColorEx(BinaryReader binaryReader, EndPoint senderEndPoint)\n        {\n            try\n            {\n                return ReadColor(binaryReader);\n            }\n            catch (Exception ex)\n            {\n                ExceptionDuringReadingMessage(ex, senderEndPoint);\n                return null;\n            }\n        }\n\n        static Int32 ReadInt32(BinaryReader binaryReader)\n        {\n            return binaryReader.ReadInt32();\n        }\n\n        static Int64 ReadInt64(BinaryReader binaryReader)\n        {\n            return binaryReader.ReadInt64();\n        }\n\n        static UInt16 ReadUInt16(BinaryReader binaryReader)\n        {\n            return binaryReader.ReadUInt16();\n        }\n\n        static UInt32 ReadUInt32(BinaryReader binaryReader)\n        {\n            return binaryReader.ReadUInt32();\n        }\n\n        public static float ReadFloat(BinaryReader binaryReader)\n        {\n            float result = binaryReader.ReadSingle();\n            MyMwcUtils.FixDenormalizedFloat(ref result);\n\n            if (!MyCommonDebugUtils.IsValid(result))\n            {\n                throw new InvalidOperationException(\"Cannot read float, float is infinity or NaN\");\n            }\n            return result;\n        }\n\n        static DateTime ReadDateTime(BinaryReader binaryReader)\n        {\n            return new DateTime(binaryReader.ReadInt64());\n        }\n\n        //  Same as Read***() but if exception occurs during reading, we log that exception and ignore it or rethrow\n        //  If ignored, null is returned and caller knows that this message failed to read.\n        public static DateTime? ReadDateTimeEx(BinaryReader binaryReader, EndPoint senderEndPoint)\n        {\n            try\n            {\n                return ReadDateTime(binaryReader);\n            }\n            catch (Exception ex)\n            {\n                ExceptionDuringReadingMessage(ex, senderEndPoint);\n                return null;\n            }\n        }\n\n        static Vector3 ReadVector3(BinaryReader binaryReader)\n        {\n            float x = ReadFloat(binaryReader);\n            float y = ReadFloat(binaryReader);\n            float z = ReadFloat(binaryReader);\n            return new Vector3(x, y, z);\n        }\n\n        static Vector4 ReadVector4(BinaryReader binaryReader)\n        {\n            float x = ReadFloat(binaryReader);\n            float y = ReadFloat(binaryReader);\n            float z = ReadFloat(binaryReader);\n            float w = ReadFloat(binaryReader);\n            return new Vector4(x, y, z, w);\n        }\n        \n        //  Same as Read***() but if exception occurs during reading, we log that exception and ignore it or rethrow\n        //  If ignored, null is returned and caller knows that this message failed to read.\n        public static Vector3? ReadVector3FloatEx(BinaryReader binaryReader, EndPoint senderEndPoint)\n        {\n            try\n            {\n                return ReadVector3(binaryReader);\n            }\n            catch (Exception ex)\n            {\n                ExceptionDuringReadingMessage(ex, senderEndPoint);\n                return null;\n            }\n        }\n\n\n        //  Same as Read***() but if exception occurs during reading, we log that exception and ignore it or rethrow\n        //  If ignored, null is returned and caller knows that this message failed to read.\n        public static Vector4? ReadVector4FloatEx(BinaryReader binaryReader, EndPoint senderEndPoint)\n        {\n            try\n            {\n                return ReadVector4(binaryReader);\n            }\n            catch (Exception ex)\n            {\n                ExceptionDuringReadingMessage(ex, senderEndPoint);\n                return null;\n            }\n        }\n\n        //  Same as Read***() but if exception occurs during reading, we log that exception and ignore it or rethrow\n        //  If ignored, null is returned and caller knows that this message failed to read.\n        public static MyMwcVector3Int? ReadVector3IntEx(BinaryReader binaryReader, EndPoint senderEndPoint)\n        {\n            try\n            {\n                int? x = ReadInt32Ex(binaryReader, senderEndPoint);\n                if (x == null) return null;\n\n                int? y = ReadInt32Ex(binaryReader, senderEndPoint);\n                if (y == null) return null;\n\n                int? z = ReadInt32Ex(binaryReader, senderEndPoint);\n                if (z == null) return null;\n\n                return new MyMwcVector3Int(x.Value, y.Value, z.Value);\n            }\n            catch (Exception ex)\n            {\n                ExceptionDuringReadingMessage(ex, senderEndPoint);\n                return null;\n            }\n        }\n\n        static MyMwcPositionAndOrientation ReadPositionAndOrientation(BinaryReader binaryReader, EndPoint senderEndPoint)\n        {\n            return new MyMwcPositionAndOrientation(\n                ReadVector3(binaryReader),\n                ReadVector3(binaryReader),\n                ReadVector3(binaryReader));\n        }\n\n        public static bool ReadPositionAndOrientationEx(ref MyMwcPositionAndOrientation positionAndOrientation, BinaryReader binaryReader, EndPoint senderEndPoint)\n        {\n            var value = ReadPositionAndOrientationEx(binaryReader, senderEndPoint);\n            if (value.HasValue)\n            {\n                positionAndOrientation = value.Value;\n                return true;\n            }\n            return false;\n        }\n        \n        //  Same as Read***() but if exception occurs during reading, we log that exception and ignore it or rethrow\n        //  If ignored, null is returned and caller knows that this message failed to read.\n        public static MyMwcPositionAndOrientation? ReadPositionAndOrientationEx(BinaryReader binaryReader, EndPoint senderEndPoint)\n        {\n            try\n            {\n                return ReadPositionAndOrientation(binaryReader, senderEndPoint);\n            }\n            catch (Exception ex)\n            {\n                ExceptionDuringReadingMessage(ex, senderEndPoint);\n                return null;\n            }\n        }\n\n        static MyMwcVector3Sbyte ReadVector3Sbyte(BinaryReader binaryReader)\n        {\n            sbyte x = binaryReader.ReadSByte();\n            sbyte y = binaryReader.ReadSByte();\n            sbyte z = binaryReader.ReadSByte();\n            return new MyMwcVector3Sbyte(x, y, z);\n        }\n\n        //  Same as Read***() but if exception occurs during reading, we log that exception and ignore it or rethrow\n        //  If ignored, null is returned and caller knows that this message failed to read.\n        public static MyMwcVector3Sbyte? ReadVector3SbyteEx(BinaryReader binaryReader, EndPoint senderEndPoint)\n        {\n            try\n            {\n                return ReadVector3Sbyte(binaryReader);\n            }\n            catch (Exception ex)\n            {\n                ExceptionDuringReadingMessage(ex, senderEndPoint);\n                return null;\n            }\n        }\n\n        static MyMwcVector3Short ReadVector3Short(BinaryReader binaryReader)\n        {\n            short x = binaryReader.ReadInt16();\n            short y = binaryReader.ReadInt16();\n            short z = binaryReader.ReadInt16();\n            return new MyMwcVector3Short(x, y, z);\n        }\n        \n        //  Same as Read***() but if exception occurs during reading, we log that exception and ignore it or rethrow\n        //  If ignored, null is returned and caller knows that this message failed to read.\n        public static MyMwcVector3Short? ReadVector3ShortEx(BinaryReader binaryReader, EndPoint senderEndPoint)\n        {\n            try\n            {\n                return ReadVector3Short(binaryReader);\n            }\n            catch (Exception ex)\n            {\n                ExceptionDuringReadingMessage(ex, senderEndPoint);\n                return null;\n            }\n        }\n\n        //  Same as Read***() but if exception occurs during reading, we log that exception and ignore it or rethrow\n        //  If ignored, null is returned and caller knows that this message failed to read.\n        public static MyMwcObjectBuilderTypeEnum? ReadObjectBuilderTypeEnumEx(BinaryReader binaryReader, EndPoint senderEndPoint)\n        {\n            //  Read\n            ushort? retUshort = ReadUInt16Ex(binaryReader, senderEndPoint);\n            if (retUshort == null) return null;\n            MyMwcLog.IfNetVerbose_AddToLog(\"MyMwcObjectBuilderTypeEnumEx: \" + retUshort);\n\n            //  Convert\n            MyMwcObjectBuilderTypeEnum? ret = MyMwcClientServer.GetEnumFromNumber<MyMwcObjectBuilderTypeEnum, ushort>(retUshort.Value, senderEndPoint);\n            if (ret == null) return null;\n            return ret;\n        }\n\n        //  Same as Read***() but if exception occurs during reading, we log that exception and ignore it or rethrow\n        //  If ignored, null is returned and caller knows that this message failed to read.\n        public static MyMwcObjectBuilder_SmallShip_TypesEnum? ReadObjectBuilderSmallShipTypesEnumEx(BinaryReader binaryReader, EndPoint senderEndPoint)\n        {\n            //  Read\n            byte? retByte = ReadByteEx(binaryReader, senderEndPoint);\n            if (retByte == null) return null;\n            MyMwcLog.IfNetVerbose_AddToLog(\"ReadObjectBuilder3DSmallShipTypesEnumEx: \" + retByte);\n\n            //  Convert\n            MyMwcObjectBuilder_SmallShip_TypesEnum? ret =\n                MyMwcClientServer.GetEnumFromNumber<MyMwcObjectBuilder_SmallShip_TypesEnum, byte>(retByte.Value, senderEndPoint);\n            if (ret == null) return null;\n            return ret;\n        }\n\n        //  Same as Read***() but if exception occurs during reading, we log that exception and ignore it or rethrow\n        //  If ignored, null is returned and caller knows that this message failed to read.\n        public static MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum? ReadObjectBuilderSmallShipWeaponTypesEnumEx(BinaryReader binaryReader, EndPoint senderEndPoint)\n        {\n            //  Read\n            ushort? retUshort = ReadUInt16Ex(binaryReader, senderEndPoint);\n            if (retUshort == null) return null;\n            MyMwcLog.IfNetVerbose_AddToLog(\"ReadObjectBuilderSmallShipWeaponTypesEnumEx: \" + retUshort);\n\n            //  Convert\n            MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum? ret =\n                MyMwcClientServer.GetEnumFromNumber<MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum, ushort>(retUshort.Value, senderEndPoint);\n            if (ret == null) return null;\n            return ret;\n        }\n\n        //  Same as Read***() but if exception occurs during reading, we log that exception and ignore it or rethrow\n        //  If ignored, null is returned and caller knows that this message failed to read.\n        public static MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum? ReadObjectBuilderSmallShipAmmoTypesEnumEx(BinaryReader binaryReader, EndPoint senderEndPoint)\n        {\n            //  Read\n            ushort? retUshort = ReadUInt16Ex(binaryReader, senderEndPoint);\n            if (retUshort == null) return null;\n            MyMwcLog.IfNetVerbose_AddToLog(\"ReadObjectBuilderSmallShipAmmoTypesEnumEx: \" + retUshort);\n\n            //  Convert\n            MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum? ret =\n                MyMwcClientServer.GetEnumFromNumber<MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum, ushort>(retUshort.Value, senderEndPoint);\n            if (ret == null) return null;\n            return ret;\n        }\n\n        //  Same as Read***() but if exception occurs during reading, we log that exception and ignore it or rethrow\n        //  If ignored, null is returned and caller knows that this message failed to read.\n        public static MyMwcObjectBuilder_SmallShip_Tool_TypesEnum? ReadObjectBuilderSmallShipToolTypesEnumEx(BinaryReader binaryReader, EndPoint senderEndPoint)\n        {\n            //  Read\n            ushort? retUshort = ReadUInt16Ex(binaryReader, senderEndPoint);\n            if (retUshort == null) return null;\n            MyMwcLog.IfNetVerbose_AddToLog(\"ReadObjectBuilderSmallShipToolTypesEnumEx: \" + retUshort);\n\n            //  Convert\n            MyMwcObjectBuilder_SmallShip_Tool_TypesEnum? ret =\n                MyMwcClientServer.GetEnumFromNumber<MyMwcObjectBuilder_SmallShip_Tool_TypesEnum, ushort>(retUshort.Value, senderEndPoint);\n            if (ret == null) return null;\n            return ret;\n        }\n\n        //  Same as Read***() but if exception occurs during reading, we log that exception and ignore it or rethrow\n        //  If ignored, null is returned and caller knows that this message failed to read.\n        public static MyMwcObjectBuilder_LargeShip_TypesEnum? ReadObjectBuilderLargeShipTypesEnumEx(BinaryReader binaryReader, EndPoint senderEndPoint)\n        {\n            //  Read\n            ushort? retUshort = ReadUInt16Ex(binaryReader, senderEndPoint);\n            if (retUshort == null) return null;\n            MyMwcLog.IfNetVerbose_AddToLog(\"ReadObjectBuilder3DLargeShipTypesEnumEx: \" + retUshort);\n\n            //  Convert\n            MyMwcObjectBuilder_LargeShip_TypesEnum? ret =\n                MyMwcClientServer.GetEnumFromNumber<MyMwcObjectBuilder_LargeShip_TypesEnum, ushort>(retUshort.Value, senderEndPoint);\n            if (ret == null) return null;\n            return ret;\n        }\n\n        //  Same as Read***() but if exception occurs during reading, we log that exception and ignore it or rethrow\n        //  If ignored, null is returned and caller knows that this message failed to read.\n        public static MyMwcObjectBuilder_LargeShip_Ammo_TypesEnum? ReadObjectBuilderLargeShipAmmoTypesEnumEx(BinaryReader binaryReader, EndPoint senderEndPoint)\n        {\n            //  Read\n            ushort? retUshort = ReadUInt16Ex(binaryReader, senderEndPoint);\n            if (retUshort == null) return null;\n            MyMwcLog.IfNetVerbose_AddToLog(\"ReadObjectBuilderLargeShipAmmoTypesEnumEx: \" + retUshort);\n\n            //  Convert\n            MyMwcObjectBuilder_LargeShip_Ammo_TypesEnum? ret =\n                MyMwcClientServer.GetEnumFromNumber<MyMwcObjectBuilder_LargeShip_Ammo_TypesEnum, ushort>(retUshort.Value, senderEndPoint);\n            if (ret == null) return null;\n            return ret;\n        }\n\n        //  Same as Read***() but if exception occurs during reading, we log that exception and ignore it or rethrow\n        //  If ignored, null is returned and caller knows that this message failed to read.\n        public static MyMwcObjectBuilder_PrefabContainer_TypesEnum? ReadObjectBuilderPrefabContainerTypesEnumEx(BinaryReader binaryReader, EndPoint senderEndPoint)\n        {\n            //  Read\n            ushort? retUshort = ReadUInt16Ex(binaryReader, senderEndPoint);\n            if (retUshort == null) return null;\n            MyMwcLog.IfNetVerbose_AddToLog(\"ReadObjectBuilderPrefabContainerTypesEnumEx: \" + retUshort);\n\n            //  Convert\n            MyMwcObjectBuilder_PrefabContainer_TypesEnum? ret =\n                MyMwcClientServer.GetEnumFromNumber<MyMwcObjectBuilder_PrefabContainer_TypesEnum, ushort>(retUshort.Value, senderEndPoint);\n            if (ret == null) return null;\n            return ret;\n        }\n\n        //  Same as Read***() but if exception occurs during reading, we log that exception and ignore it or rethrow\n        //  If ignored, null is returned and caller knows that this message failed to read.\n        public static MyMwcObjectBuilder_Prefab_TypesEnum? ReadObjectBuilderPrefabTypesEnumEx(BinaryReader binaryReader, EndPoint senderEndPoint)\n        {\n            //  Read\n            ushort? retUshort = ReadUInt16Ex(binaryReader, senderEndPoint);\n            if (retUshort == null) return null;\n            MyMwcLog.IfNetVerbose_AddToLog(\"ReadObjectBuilderPrefabTypesEnumEx: \" + retUshort);\n\n            //  Convert\n            MyMwcObjectBuilder_Prefab_TypesEnum? ret =\n                MyMwcClientServer.GetEnumFromNumber<MyMwcObjectBuilder_Prefab_TypesEnum, ushort>(retUshort.Value, senderEndPoint);\n            if (ret == null) return null;\n            return ret;\n        }\n\n        //  Same as Read***() but if exception occurs during reading, we log that exception and ignore it or rethrow\n        //  If ignored, null is returned and caller knows that this message failed to read.\n        public static MyMwcObjectBuilder_FireKeyEnum? ReadObjectBuilderSmallShipAssignmentOfAmmoFireKeyEnumEx(BinaryReader binaryReader, EndPoint senderEndPoint)\n        {\n            //  Read\n            byte? retByte = ReadByteEx(binaryReader, senderEndPoint);\n            if (retByte == null) return null;\n            MyMwcLog.IfNetVerbose_AddToLog(\"ReadObjectBuilderSmallShipAssignmentOfAmmoFireKeyEnumEx: \" + retByte);\n\n            //  Convert\n            MyMwcObjectBuilder_FireKeyEnum? ret =\n                MyMwcClientServer.GetEnumFromNumber<MyMwcObjectBuilder_FireKeyEnum, byte>(retByte.Value, senderEndPoint);\n            if (ret == null) return null;\n            return ret;\n        }\n\n        //  Same as Read***() but if exception occurs during reading, we log that exception and ignore it or rethrow\n        //  If ignored, null is returned and caller knows that this message failed to read.\n        public static MyMwcObjectBuilder_AmmoGroupEnum? ReadObjectBuilderSmallShipAssignmentOfAmmoGroupEnumEx(BinaryReader binaryReader, EndPoint senderEndPoint)\n        {\n            //  Read\n            byte? retByte = ReadByteEx(binaryReader, senderEndPoint);\n            if (retByte == null) return null;\n            MyMwcLog.IfNetVerbose_AddToLog(\"ReadObjectBuilderSmallShipAssignmentOfAmmoGroupEnumEx: \" + retByte);\n\n            //  Convert\n            MyMwcObjectBuilder_AmmoGroupEnum? ret =\n                MyMwcClientServer.GetEnumFromNumber<MyMwcObjectBuilder_AmmoGroupEnum, byte>(retByte.Value, senderEndPoint);\n            if (ret == null) return null;\n            return ret;\n        }\n\n        //  Same as Read***() but if exception occurs during reading, we log that exception and ignore it or rethrow\n        //  If ignored, null is returned and caller knows that this message failed to read.\n        public static MyMwcObjectBuilder_SmallShip_Engine_TypesEnum? ReadObjectBuilderSmallShipEngineTypesEnumEx(BinaryReader binaryReader, EndPoint senderEndPoint)\n        {\n            //  Read\n            ushort? retUshort = ReadUInt16Ex(binaryReader, senderEndPoint);\n            if (retUshort == null) return null;\n            MyMwcLog.IfNetVerbose_AddToLog(\"ReadObjectBuilderSmallShipEngineTypesEnumEx: \" + retUshort);\n\n            //  Convert\n            MyMwcObjectBuilder_SmallShip_Engine_TypesEnum? ret =\n                MyMwcClientServer.GetEnumFromNumber<MyMwcObjectBuilder_SmallShip_Engine_TypesEnum, ushort>(retUshort.Value, senderEndPoint);\n            if (ret == null) return null;\n            return ret;\n        }\n\n        //  Same as Read***() but if exception occurs during reading, we log that exception and ignore it or rethrow\n        //  If ignored, null is returned and caller knows that this message failed to read.\n        public static MyMwcObjectBuilder_SmallShip_HackingTool_TypesEnum? ReadObjectBuilderSmallShipHackingToolTypesEnumEx(BinaryReader binaryReader, EndPoint senderEndPoint)\n        {\n            //  Read\n            ushort? retUshort = ReadUInt16Ex(binaryReader, senderEndPoint);\n            if (retUshort == null) return null;\n            MyMwcLog.IfNetVerbose_AddToLog(\"ReadObjectBuilderSmallShipHackingToolTypesEnumEx: \" + retUshort);\n\n            //  Convert\n            MyMwcObjectBuilder_SmallShip_HackingTool_TypesEnum? ret =\n                MyMwcClientServer.GetEnumFromNumber<MyMwcObjectBuilder_SmallShip_HackingTool_TypesEnum, ushort>(retUshort.Value, senderEndPoint);\n            if (ret == null) return null;\n            return ret;\n        }\n\n        //  Same as Read***() but if exception occurs during reading, we log that exception and ignore it or rethrow\n        //  If ignored, null is returned and caller knows that this message failed to read.\n        public static MyMwcObjectBuilder_SmallDebris_TypesEnum? ReadObjectBuilderSmallDebrisTypesEnumEx(BinaryReader binaryReader, EndPoint senderEndPoint)\n        {\n            //  Read\n            ushort? retUshort = ReadUInt16Ex(binaryReader, senderEndPoint);\n            if (retUshort == null) return null;\n            MyMwcLog.IfNetVerbose_AddToLog(\"ReadObjectBuilderSmallDebrisTypesEnumEx: \" + retUshort);\n\n            //  Convert\n            MyMwcObjectBuilder_SmallDebris_TypesEnum? ret =\n                MyMwcClientServer.GetEnumFromNumber<MyMwcObjectBuilder_SmallDebris_TypesEnum, ushort>(retUshort.Value, senderEndPoint);\n            if (ret == null) return null;\n            return ret;\n        }\n\n        //  Same as Read***() but if exception occurs during reading, we log that exception and ignore it or rethrow\n        //  If ignored, null is returned and caller knows that this message failed to read.\n        public static MyMwcObjectBuilder_LargeDebrisField_TypesEnum? ReadObjectBuilderLargeDebrisFieldTypesEnumEx(BinaryReader binaryReader, EndPoint senderEndPoint)\n        {\n            //  Read\n            ushort? retUshort = ReadUInt16Ex(binaryReader, senderEndPoint);\n            if (retUshort == null) return null;\n            MyMwcLog.IfNetVerbose_AddToLog(\"MyMwcObjectBuilder_LargeDebrisField_TypesEnum: \" + retUshort);\n\n            //  Convert\n            MyMwcObjectBuilder_LargeDebrisField_TypesEnum? ret =\n                MyMwcClientServer.GetEnumFromNumber<MyMwcObjectBuilder_LargeDebrisField_TypesEnum, ushort>(retUshort.Value, senderEndPoint);\n            if (ret == null) return null;\n            return ret;\n        }\n\n        //  Same as Read***() but if exception occurs during reading, we log that exception and ignore it or rethrow\n        //  If ignored, null is returned and caller knows that this message failed to read.\n        public static MyMwcObjectBuilder_StaticAsteroid_TypesEnum? ReadObjectBuilderStaticAsteroidTypesEnumEx(BinaryReader binaryReader, EndPoint senderEndPoint)\n        {\n            //  Read\n            ushort? retUshort = ReadUInt16Ex(binaryReader, senderEndPoint);\n            if (retUshort == null) return null;\n            MyMwcLog.IfNetVerbose_AddToLog(\"MyMwcObjectBuilder_StaticAsteroid_TypesEnum: \" + retUshort);\n\n            //  Convert\n            MyMwcObjectBuilder_StaticAsteroid_TypesEnum? ret =\n                MyMwcClientServer.GetEnumFromNumber<MyMwcObjectBuilder_StaticAsteroid_TypesEnum, ushort>(retUshort.Value, senderEndPoint);\n            if (ret == null) return null;\n            return ret;\n        }\n\n        //  Same as Read***() but if exception occurs during reading, we log that exception and ignore it or rethrow\n        //  If ignored, null is returned and caller knows that this message failed to read.\n        public static MyMwcObjectBuilder_CargoBox_TypesEnum? ReadObjectBuilderCargoBoxTypesEnumEx(BinaryReader binaryReader, EndPoint senderEndPoint)\n        {\n            //  Read\n            byte? retByte = ReadByteEx(binaryReader, senderEndPoint);\n            if (retByte == null) return null;\n            MyMwcLog.IfNetVerbose_AddToLog(\"ReadObjectBuilderCargoBoxTypesEnumEx: \" + retByte);\n\n            //  Convert\n            MyMwcObjectBuilder_CargoBox_TypesEnum? ret =\n                MyMwcClientServer.GetEnumFromNumber<MyMwcObjectBuilder_CargoBox_TypesEnum, byte>(retByte.Value, senderEndPoint);\n            if (ret == null) return null;\n            return ret;\n        }\n\n        //  Same as Read***() but if exception occurs during reading, we log that exception and ignore it or rethrow\n        //  If ignored, null is returned and caller knows that this message failed to read.\n        public static MyMwcObjectBuilder_MysteriousCube_TypesEnum? ReadObjectBuilderMysteriousCubeTypesEnumEx(BinaryReader binaryReader, EndPoint senderEndPoint)\n        {\n            //  Read\n            byte? retByte = ReadByteEx(binaryReader, senderEndPoint);\n            if (retByte == null) return null;\n            MyMwcLog.IfNetVerbose_AddToLog(\"ReadObjectBuilderMysteriousBoxTypesEnumEx: \" + retByte);\n\n            //  Convert\n            MyMwcObjectBuilder_MysteriousCube_TypesEnum? ret =\n                MyMwcClientServer.GetEnumFromNumber<MyMwcObjectBuilder_MysteriousCube_TypesEnum, byte>(retByte.Value, senderEndPoint);\n            if (ret == null) return null;\n            return ret;\n        }\n        \n        //  Same as Read***() but if exception occurs during reading, we log that exception and ignore it or rethrow\n        //  If ignored, null is returned and caller knows that this message failed to read.\n        public static MyMwcVoxelFilesEnum? ReadVoxelFileEnumEx(BinaryReader binaryReader, EndPoint senderEndPoint)\n        {\n            //  Read\n            short? retShort = ReadInt16Ex(binaryReader, senderEndPoint);\n            if (retShort == null) return null;\n            MyMwcLog.IfNetVerbose_AddToLog(\"ReadVoxelFileEnumEx: \" + retShort);\n\n            //  Convert\n            MyMwcVoxelFilesEnum? ret = MyMwcClientServer.GetEnumFromNumber<MyMwcVoxelFilesEnum, short>(retShort.Value, senderEndPoint);\n            if (ret == null) return null;\n            return ret;\n        }\n\n        //  Same as Read***() but if exception occurs during reading, we log that exception and ignore it or rethrow\n        //  If ignored, null is returned and caller knows that this message failed to read.\n        public static MyMwcVoxelMaterialsEnum? ReadVoxelMaterialsEnumEx(BinaryReader binaryReader, EndPoint senderEndPoint)\n        {\n            //  Read\n            byte? retByte = ReadByteEx(binaryReader, senderEndPoint);\n            if (retByte == null) return null;\n            MyMwcLog.IfNetVerbose_AddToLog(\"ReadVoxelMaterialsEnumEx: \" + retByte);\n\n            //  Convert\n            MyMwcVoxelMaterialsEnum? ret = MyMwcClientServer.GetEnumFromNumber<MyMwcVoxelMaterialsEnum, byte>(retByte.Value, senderEndPoint);\n            if (ret == null) return null;\n            return ret;\n        }\n\n        //  Same as Read***() but if exception occurs during reading, we log that exception and ignore it or rethrow\n        //  If ignored, null is returned and caller knows that this message failed to read.\n        public static MyMwcVoxelMapMergeTypeEnum? ReadVoxelMapMergeTypeEnumEx(BinaryReader binaryReader, EndPoint senderEndPoint)\n        {\n            //  Read\n            byte? retByte = ReadByteEx(binaryReader, senderEndPoint);\n            if (retByte == null) return null;\n            MyMwcLog.IfNetVerbose_AddToLog(\"ReadVoxelMapMergeTypeEnumEx: \" + retByte);\n\n            //  Convert\n            MyMwcVoxelMapMergeTypeEnum? ret = MyMwcClientServer.GetEnumFromNumber<MyMwcVoxelMapMergeTypeEnum, byte>(retByte.Value, senderEndPoint);\n            if (ret == null) return null;\n            return ret;\n        }\n\n        //  Same as Read***() but if exception occurs during reading, we log that exception and ignore it or rethrow\n        //  If ignored, null is returned and caller knows that this message failed to read.\n        public static MyMwcVoxelHandModeTypeEnum? ReadVoxelHandModeTypeEnumEx(BinaryReader binaryReader, EndPoint senderEndPoint)\n        {\n            //  Read\n            byte? retByte = ReadByteEx(binaryReader, senderEndPoint);\n            if (retByte == null) return null;\n            MyMwcLog.IfNetVerbose_AddToLog(\"ReadVoxelHandModeTypeEnumEx: \" + retByte);\n\n            //  Convert\n            MyMwcVoxelHandModeTypeEnum? ret = MyMwcClientServer.GetEnumFromNumber<MyMwcVoxelHandModeTypeEnum, byte>(retByte.Value, senderEndPoint);\n            if (ret == null) return null;\n            return ret;\n        }\n\n        //  Same as Read***() but if exception occurs during reading, we log that exception and ignore it or rethrow\n        //  If ignored, null is returned and caller knows that this message failed to read.\n        public static MyMwcObjectBuilder_EntityDetector_TypesEnum? ReadObjectBuilderEntityDetectorTypesEnumEx(BinaryReader binaryReader, EndPoint senderEndPoint)\n        {\n            //  Read\n            byte? retByte = ReadByteEx(binaryReader, senderEndPoint);\n            if (retByte == null) return null;\n            MyMwcLog.IfNetVerbose_AddToLog(\"ReadObjectBuilder3DSmallShipTypesEnumEx: \" + retByte);\n\n            //  Convert\n            MyMwcObjectBuilder_EntityDetector_TypesEnum? ret =\n                MyMwcClientServer.GetEnumFromNumber<MyMwcObjectBuilder_EntityDetector_TypesEnum, byte>(retByte.Value, senderEndPoint);\n            if (ret == null) return null;\n            return ret;\n        }\n\n        public static MyMwcInventoryTemplateTypeEnum? ReadObjectBuilderInventoryTemplateTypesEnumEx(BinaryReader binaryReader, EndPoint senderEndPoint)\n        {\n            //  Read\n            byte? retByte = ReadByteEx(binaryReader, senderEndPoint);\n            if (retByte == null) return null;\n            MyMwcLog.IfNetVerbose_AddToLog(\"ReadObjectBuilderInventoryTemplateTypesEnumEx: \" + retByte);\n\n            //  Convert\n            MyMwcInventoryTemplateTypeEnum? ret =\n                MyMwcClientServer.GetEnumFromNumber<MyMwcInventoryTemplateTypeEnum, byte>(retByte.Value, senderEndPoint);\n            if (ret == null) return null;\n            return ret;\n        }\n\n        /// <summary>\n        /// Creates new array of objects\n        /// </summary>\n        public static bool ReadArray<T>(ref T[] result, BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n            where T : MyMwcObjectBuilder_Base\n        {\n            int? count = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);\n            if (!count.HasValue) return false;\n\n            result = new T[count.Value];\n            for (int i = 0; i < count.Value; i++)\n            {\n                var obj = MyMwcObjectBuilder_Base.ReadAndCreateNewObject(binaryReader, senderEndPoint) as T;\n                if (obj == null || !obj.Read(binaryReader, senderEndPoint, gameVersion)) return false;\n                result[i] = obj;\n            }\n            return true;\n        }\n\n        public static bool ReadObjectCollection<T>(ICollection<T> addObjectToCollection, BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n            where T : MyMwcObjectBuilder_Base\n        {\n            int? count = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);\n            if (!count.HasValue) return false;\n            for (int i = 0; i < count.Value; i++)\n            {\n                var obj = MyMwcObjectBuilder_Base.ReadAndCreateNewObject(binaryReader, senderEndPoint) as T;\n                if (obj == null || !obj.Read(binaryReader, senderEndPoint, gameVersion)) return false;\n                addObjectToCollection.Add(obj);\n            }\n            return true;\n        }\n\n        //  Same as Read***() but if exception occurs during reading, we log that exception and ignore it or rethrow\n        //  If ignored, null is returned and caller knows that this message failed to read.\n        public static MyMwcSectorIdentifier? ReadSectorIdentifierEx(BinaryReader binaryReader, EndPoint senderEndPoint)\n        {\n            //  Convert\n            short? sectorTypeShort = ReadInt16Ex(binaryReader, senderEndPoint);\n            if (sectorTypeShort == null) return null;\n            MyMwcLog.IfNetVerbose_AddToLog(\"SectorTypeShort: \" + sectorTypeShort);\n\n            //  Convert\n            MyMwcSectorTypeEnum? sectorType = MyMwcClientServer.GetEnumFromNumber<MyMwcSectorTypeEnum, short>(sectorTypeShort.Value, senderEndPoint);\n            if (sectorType == null) return null;\n            MyMwcLog.IfNetVerbose_AddToLog(\"SectorType: \" + (int)sectorType);\n\n            bool? hasValueUserId = ReadBoolEx(binaryReader, senderEndPoint);\n            if (hasValueUserId == null) return null;\n            MyMwcLog.IfNetVerbose_AddToLog(\"hasValueUserId: \" + hasValueUserId.ToString());\n\n            int? userId = null;\n            if (hasValueUserId.Value)\n            {\n                userId = ReadInt32Ex(binaryReader, senderEndPoint);\n                if (userId == null) return null;\n                MyMwcLog.IfNetVerbose_AddToLog(\"UserId: \" + userId);\n            }\n\n            int? x = ReadInt32Ex(binaryReader, senderEndPoint);\n            if (x == null) return null;\n            MyMwcLog.IfNetVerbose_AddToLog(\"X: \" + x);\n\n            int? y = ReadInt32Ex(binaryReader, senderEndPoint);\n            if (y == null) return null;\n            MyMwcLog.IfNetVerbose_AddToLog(\"Y: \" + y);\n\n            int? z = ReadInt32Ex(binaryReader, senderEndPoint);\n            if (z == null) return null;\n            MyMwcLog.IfNetVerbose_AddToLog(\"Z: \" + z);\n\n            //if ((x.Value < -MyMwcNetworkingMaxValuesConstants.SECTOR_IDENTIFIER_MAX_DISTANCE) ||\n            //    (x.Value > +MyMwcNetworkingMaxValuesConstants.SECTOR_IDENTIFIER_MAX_DISTANCE) ||\n            //    (y.Value < -MyMwcNetworkingMaxValuesConstants.SECTOR_IDENTIFIER_MAX_DISTANCE) ||\n            //    (y.Value > +MyMwcNetworkingMaxValuesConstants.SECTOR_IDENTIFIER_MAX_DISTANCE) ||\n            //    (z.Value < -MyMwcNetworkingMaxValuesConstants.SECTOR_IDENTIFIER_MAX_DISTANCE) ||\n            //    (z.Value > +MyMwcNetworkingMaxValuesConstants.SECTOR_IDENTIFIER_MAX_DISTANCE))\n            //{\n            //    return null;\n            //}\n\n            string sectorName = ReadStringEx(binaryReader, senderEndPoint);\n            if (sectorName == null) return null;\n\n            return new MyMwcSectorIdentifier(sectorType.Value, userId, new MyMwcVector3Int(x.Value, y.Value, z.Value), sectorName);\n        }\n\n        //  Same as Read***() but if exception occurs during reading, we log that exception and ignore it or rethrow\n        //  If ignored, null is returned and caller knows that this message failed to read.\n        public static MyMwcUserDetail? ReadUserDetailEx(BinaryReader binaryReader, EndPoint senderEndPoint)\n        {\n            //  read userId\n            int? userId = ReadInt32Ex(binaryReader, senderEndPoint);\n            if (userId == null) return null;\n            MyMwcLog.IfNetVerbose_AddToLog(\"UserId: \" + userId);\n\n            // read displayName\n            string displayName = ReadStringEx(binaryReader, senderEndPoint);\n            if (displayName == null) return null;\n            MyMwcLog.IfNetVerbose_AddToLog(\"DisplayName: \" + displayName);\n\n            return new MyMwcUserDetail(userId.Value, displayName);\n        }\n\n        public static string ReadString(BinaryReader binaryReader)\n        {\n            return binaryReader.ReadString();\n        }\n\n        public static bool ReadStringEx(ref string value, BinaryReader reader, EndPoint senderEndpoint)\n        {\n            try\n            {\n                value = ReadString(reader);\n                return value.Length < MyMwcNetworkingConstants.MAX_STRING_LENGTH;\n            }\n            catch (Exception ex)\n            {\n                ExceptionDuringReadingMessage(ex, senderEndpoint);\n                return false;\n            }\n        }\n\n        public static bool ReadNullableStringEx(BinaryReader binaryReader, EndPoint senderEndPoint, out string result)\n        {\n            result = null;\n\n            bool? hasStringValue = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n            if (!hasStringValue.HasValue) return false;\n            if (hasStringValue.Value)\n            {\n                result = MyMwcMessageIn.ReadStringEx(binaryReader, senderEndPoint);\n                if (result == null) return false;\n            }\n            return true;\n        }\n\n        //  Same as Read***() but if exception occurs during reading, we log that exception and ignore it or rethrow\n        //  If ignored, null is returned and caller knows that this message failed to read.\n        //  IMPORTANT: THIS METHOD RETURNS ONLY STRING NO LONGER THAT 500 CHARACTERS. THAT'S PROTECTION AGAINST ATTACKERS.\n        //  IF YOU NEED LONGER STRING, YOU MUST MAKE NEW METHOD AND THINK ABOUT ITS PROTECTION\n        public static string ReadStringEx(BinaryReader binaryReader, EndPoint senderAddress)\n        {\n            try\n            {\n                string s = ReadString(binaryReader);\n                if (s.Length > MyMwcNetworkingConstants.MAX_STRING_LENGTH)\n                {\n                    return null;\n                }\n                else\n                {\n                    return s;\n                }\n            }\n            catch (Exception ex)\n            {\n                ExceptionDuringReadingMessage(ex, senderAddress);\n                return null;\n            }\n        }\n\n        //  If exception occured during reading memory stream, we log this information or inform cheater alert, but ignore the error - application continues.\n        //  This is protection against users who may send messages with wrong format\n        //  Of course if IGNORE_SOCKET_EXCEPTIONS == false, then exception is rethrown.\n        static void ExceptionDuringReadingMessage(Exception ex, EndPoint senderEndPoint)\n        {\n            MyMwcCheaterAlert.AddAlert(MyMwcCheaterAlertType.EXCEPTION_DURING_READING_MESSAGE, senderEndPoint, ex.ToString());\n\n            if (MyMwcFinalBuildConstants.IGNORE_SOCKET_EXCEPTIONS == false)\n            {\n                throw ex;\n            }\n        }\n\n        //  Same as Read***() but if exception occurs during reading, we log that exception and ignore it or rethrow\n        //  If ignored, null is returned and caller knows that this message failed to read.\n        public static MyMwcObjectBuilder_SmallShip_Armor_TypesEnum? ReadObjectBuilderSmallShipArmorTypesEnumEx(BinaryReader binaryReader, EndPoint senderEndPoint)\n        {\n            //  Read\n            ushort? retUshort = ReadUInt16Ex(binaryReader, senderEndPoint);\n            if (retUshort == null) return null;\n            MyMwcLog.IfNetVerbose_AddToLog(\"ReadObjectBuilderSmallShipArmorTypesEnumEx: \" + retUshort);\n\n            //  Convert\n            MyMwcObjectBuilder_SmallShip_Armor_TypesEnum? ret =\n                MyMwcClientServer.GetEnumFromNumber<MyMwcObjectBuilder_SmallShip_Armor_TypesEnum, ushort>(retUshort.Value, senderEndPoint);\n            if (ret == null) return null;\n            return ret;\n        }\n\n        //  Same as Read***() but if exception occurs during reading, we log that exception and ignore it or rethrow\n        //  If ignored, null is returned and caller knows that this message failed to read.\n        public static MyMwcObjectBuilder_SmallShip_Radar_TypesEnum? ReadObjectBuilderSmallShipRadarTypesEnumEx(BinaryReader binaryReader, EndPoint senderEndPoint)\n        {\n            //  Read\n            ushort? retUshort = ReadUInt16Ex(binaryReader, senderEndPoint);\n            if (retUshort == null) return null;\n            MyMwcLog.IfNetVerbose_AddToLog(\"ReadObjectBuilderSmallShipRadarTypesEnumEx: \" + retUshort);\n\n            //  Convert\n            MyMwcObjectBuilder_SmallShip_Radar_TypesEnum? ret =\n                MyMwcClientServer.GetEnumFromNumber<MyMwcObjectBuilder_SmallShip_Radar_TypesEnum, ushort>(retUshort.Value, senderEndPoint);\n            if (ret == null) return null;\n            return ret;\n        }\n\n        //  Same as Read***() but if exception occurs during reading, we log that exception and ignore it or rethrow\n        //  If ignored, null is returned and caller knows that this message failed to read.\n        public static MyMwcObjectBuilder_Ore_TypesEnum? ReadObjectBuilderOreTypesEnumEx(BinaryReader binaryReader, EndPoint senderEndPoint)\n        {\n            //  Read\n            ushort? retUshort = ReadUInt16Ex(binaryReader, senderEndPoint);\n            if (retUshort == null) return null;\n            MyMwcLog.IfNetVerbose_AddToLog(\"ReadObjectBuilderOreTypesEnumEx: \" + retUshort);\n\n            //  Convert\n            MyMwcObjectBuilder_Ore_TypesEnum? ret =\n                MyMwcClientServer.GetEnumFromNumber<MyMwcObjectBuilder_Ore_TypesEnum, ushort>(retUshort.Value, senderEndPoint);\n            if (ret == null) return null;\n            return ret;\n        }\n\n        //  Same as Read***() but if exception occurs during reading, we log that exception and ignore it or rethrow\n        //  If ignored, null is returned and caller knows that this message failed to read.\n        public static MyMwcObjectBuilder_Blueprint_TypesEnum? ReadObjectBuilderBlueprintTypesEnumEx(BinaryReader binaryReader, EndPoint senderEndPoint)\n        {\n            //  Read\n            ushort? retUshort = ReadUInt16Ex(binaryReader, senderEndPoint);\n            if (retUshort == null) return null;\n            MyMwcLog.IfNetVerbose_AddToLog(\"ReadObjectBuilderBlueprintTypesEnumEx: \" + retUshort);\n\n            //  Convert\n            MyMwcObjectBuilder_Blueprint_TypesEnum? ret =\n                MyMwcClientServer.GetEnumFromNumber<MyMwcObjectBuilder_Blueprint_TypesEnum, ushort>(retUshort.Value, senderEndPoint);\n            if (ret == null) return null;\n            return ret;\n        }\n\n        public static EndPoint ReadEndpointEx(BinaryReader binaryReader, EndPoint senderEndPoint)\n        {\n            try\n            {\n                byte len = binaryReader.ReadByte();\n                var bytes = binaryReader.ReadBytes(len);\n                var port = binaryReader.ReadInt32();\n                return new IPEndPoint(new IPAddress(bytes), port);\n            }\n            catch (Exception)\n            {\n                return null;\n            }\n        }\n\n        public static bool ReadResultCode(ref MyResultCodeEnum resultCode, BinaryReader reader, EndPoint sender)\n        {\n            byte resultCodeByte = 0;\n            return ReadByteEx(ref resultCodeByte, reader, sender) && MyMwcUtils.GetEnumFromNumber<MyResultCodeEnum, byte>(resultCodeByte, ref resultCode);\n        }\n    }\n}"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/MyMwcMessageOut.cs",
    "content": "﻿using System;\nusing System.IO;\nusing System.Net;\nusing System.Net.Sockets;\nusing MinerWarsMath;\nusing MinerWarsMath.Graphics;\nusing MinerWarsMath.Graphics.PackedVector;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Voxels;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.LargeShipTools;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing SysUtils;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing MinerWars.CommonLIB.AppCode.Networking.Multiplayer;\n\n//  Outgoing / sent message\n\n//  Method that have \"Ex\" suffix in the name are considered to be safe. They will not throw an exception\n//  when error during reading the data. \n\nnamespace MinerWars.CommonLIB.AppCode.Networking\n{\n    public static class MyMwcMessageOut\n    {\n        public static void WriteBool(bool val, BinaryWriter binaryWriter)\n        {\n            binaryWriter.Write(val);\n        }\n\n        public static void WriteByteNullable(byte? val, BinaryWriter binaryWriter)\n        {\n            MyMwcMessageOut.WriteBool(val.HasValue, binaryWriter);\n            if (val.HasValue)\n            {\n                WriteByte(val.Value, binaryWriter);\n            }\n        }\n\n        public static void WriteByte(byte val, BinaryWriter binaryWriter)\n        {\n            binaryWriter.Write(val);\n        }\n        \n        public static void WriteByte4(Byte4 val, BinaryWriter binaryWriter)\n        {\n            binaryWriter.Write(val.PackedValue);\n        }\n\n        public static void WriteInt16(Int16 val, BinaryWriter binaryWriter)\n        {\n            binaryWriter.Write(val);\n        }\n\n        public static void WriteInt32(Int32 val, BinaryWriter binaryWriter)\n        {\n            binaryWriter.Write(val);\n        }\n\n        public static void WriteInt64(Int64 val, BinaryWriter binaryWriter)\n        {\n            binaryWriter.Write(val);\n        }\n\n        public static void WriteUInt32(UInt32 val, BinaryWriter binaryWriter)\n        {\n            binaryWriter.Write(val);\n        }\n\n        public static void WriteDateTime(DateTime val, BinaryWriter binaryWriter)\n        {\n            WriteInt64(val.Ticks, binaryWriter);\n        }\n\n        public static void WriteVector3(Vector3 val, BinaryWriter binaryWriter)\n        {\n            WriteFloat(val.X, binaryWriter);\n            WriteFloat(val.Y, binaryWriter);\n            WriteFloat(val.Z, binaryWriter);\n        }\n\n        public static void WriteVector4(Vector4 val, BinaryWriter binaryWriter)\n        {\n            WriteFloat(val.X, binaryWriter);\n            WriteFloat(val.Y, binaryWriter);\n            WriteFloat(val.Z, binaryWriter);\n            WriteFloat(val.W, binaryWriter);\n        }\n\n        public static void WritePositionAndOrientation(MyMwcPositionAndOrientation positionAndOrientation, BinaryWriter binaryWriter)\n        {\n            WriteVector3(positionAndOrientation.Position, binaryWriter);\n            WriteVector3(positionAndOrientation.Forward, binaryWriter);\n            WriteVector3(positionAndOrientation.Up, binaryWriter);\n        }\n\n        public static void WriteColor(Color val, BinaryWriter binaryWriter)\n        {\n            binaryWriter.Write(val.R);\n            binaryWriter.Write(val.G);\n            binaryWriter.Write(val.B);\n            binaryWriter.Write(val.A);\n        }\n\n        public static void WriteObjectBuilderTypeEnum(MyMwcObjectBuilderTypeEnum val, BinaryWriter binaryWriter)\n        {\n            binaryWriter.Write((ushort)val);\n        }\n\n        public static void WriteVoxelFilesEnum(MyMwcVoxelFilesEnum val, BinaryWriter binaryWriter)\n        {\n            binaryWriter.Write((short)val);\n        }\n\n        public static void WriteVoxelMaterialsEnum(MyMwcVoxelMaterialsEnum val, BinaryWriter binaryWriter)\n        {\n            binaryWriter.Write((byte)val);\n        }\n\n        public static void WriteVoxelMapMergeTypeEnum(MyMwcVoxelMapMergeTypeEnum val, BinaryWriter binaryWriter)\n        {\n            binaryWriter.Write((byte)val);\n        }\n\n        public static void WriteVoxelHandModeTypeEnum(MyMwcVoxelHandModeTypeEnum val, BinaryWriter binaryWriter)\n        {\n            binaryWriter.Write((byte)val);\n        }\n\n        public static void WriteObjectBuilder3DSmallShipTypesEnum(MyMwcObjectBuilder_SmallShip_TypesEnum val, BinaryWriter binaryWriter)\n        {\n            binaryWriter.Write((byte)val);\n        }\n\n        public static void WriteObjectBuilderSmallShipAmmoTypesEnum(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum val, BinaryWriter binaryWriter)\n        {\n            binaryWriter.Write((ushort)val);\n        }\n\n        public static void WriteObjectBuilderSmallShipWeaponTypesEnum(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum val, BinaryWriter binaryWriter)\n        {\n            binaryWriter.Write((ushort)val);\n        }\n\n        public static void WriteObjectBuilderSmallShipAssignmentOfAmmoFireKeyEnum(MyMwcObjectBuilder_FireKeyEnum val, BinaryWriter binaryWriter)\n        {\n            binaryWriter.Write((byte)val);\n        }\n\n        public static void WriteObjectBuilderSmallShipAssignmentOfAmmoGroupEnum(MyMwcObjectBuilder_AmmoGroupEnum val, BinaryWriter binaryWriter)\n        {\n            binaryWriter.Write((byte)val);\n        }\n\n        public static void WriteObjectBuilderSmallShipEngineTypesEnum(MyMwcObjectBuilder_SmallShip_Engine_TypesEnum val, BinaryWriter binaryWriter)\n        {\n            binaryWriter.Write((ushort)val);\n        }\n\n        public static void WriteObjectBuilderSmallShipHackingToolTypesEnum(MyMwcObjectBuilder_SmallShip_HackingTool_TypesEnum val, BinaryWriter binaryWriter)\n        {\n            binaryWriter.Write((ushort)val);\n        }\n        \n        public static void WriteObjectBuilderLargeShipAmmoTypesEnum(MyMwcObjectBuilder_LargeShip_Ammo_TypesEnum val, BinaryWriter binaryWriter)\n        {\n            binaryWriter.Write((ushort)val);\n        }\n\n        public static void WriteObjectBuilderSmallShipToolTypesEnum(MyMwcObjectBuilder_SmallShip_Tool_TypesEnum val, BinaryWriter binaryWriter)\n        {\n            binaryWriter.Write((ushort)val);\n        }\n\n        public static void WriteObjectBuilderLargeShipTypesEnum(MyMwcObjectBuilder_LargeShip_TypesEnum val, BinaryWriter binaryWriter)\n        {\n            binaryWriter.Write((ushort)val);\n        }\n\n        public static void WriteObjectBuilderSmallDebrisTypesEnum(MyMwcObjectBuilder_SmallDebris_TypesEnum val, BinaryWriter binaryWriter)\n        {\n            binaryWriter.Write((ushort)val);\n        }\n\n        public static void WriteObjectBuilderLargeDebrisFieldTypesEnum(MyMwcObjectBuilder_LargeDebrisField_TypesEnum val, BinaryWriter binaryWriter)\n        {\n            binaryWriter.Write((ushort)val);\n        }\n\n        public static void WriteObjectBuilderStaticAsteroidTypesEnum(MyMwcObjectBuilder_StaticAsteroid_TypesEnum val, BinaryWriter binaryWriter)\n        {\n            binaryWriter.Write((ushort)val);\n        }\n\n        public static void WriteObjectBuilderPrefabContainerTypesEnum(MyMwcObjectBuilder_PrefabContainer_TypesEnum val, BinaryWriter binaryWriter)\n        {\n            binaryWriter.Write((ushort)val);\n        }\n\n        public static void WriteObjectBuilderPrefabTypesEnum(MyMwcObjectBuilder_Prefab_TypesEnum val, BinaryWriter binaryWriter)\n        {\n            binaryWriter.Write((ushort)val);\n        }\n\n        public static void WriteObjectBuilderCargoBoxTypesEnum(MyMwcObjectBuilder_CargoBox_TypesEnum val, BinaryWriter binaryWriter)\n        {\n            binaryWriter.Write((byte)val);\n        }\n\n        public static void WriteObjectBuilderMysteriousCubeTypesEnum(MyMwcObjectBuilder_MysteriousCube_TypesEnum val, BinaryWriter binaryWriter)\n        {\n            binaryWriter.Write((byte)val);\n        }\n        \n        public static void WriteObjectBuilderEntityDetectorTypesEnum(MyMwcObjectBuilder_EntityDetector_TypesEnum val, BinaryWriter binaryWriter)\n        {\n            binaryWriter.Write((ushort)val);\n        }\n\n        public static void WriteObjectBuilderInventoryTemplateTypesEnum(MyMwcInventoryTemplateTypeEnum val, BinaryWriter binaryWriter) \n        {\n            binaryWriter.Write((byte)val);\n        }\n\n        public static void WriteVector3Sbyte(MyMwcVector3Sbyte val, BinaryWriter binaryWriter)\n        {\n            binaryWriter.Write(val.X);\n            binaryWriter.Write(val.Y);\n            binaryWriter.Write(val.Z);\n        }\n        \n        public static void WriteVector3Short(MyMwcVector3Short val, BinaryWriter binaryWriter)\n        {\n            binaryWriter.Write(val.X);\n            binaryWriter.Write(val.Y);\n            binaryWriter.Write(val.Z);\n        }\n\n        public static void WriteVector3Int(MyMwcVector3Int val, BinaryWriter binaryWriter)\n        {\n            binaryWriter.Write(val.X);\n            binaryWriter.Write(val.Y);\n            binaryWriter.Write(val.Z);\n        }\n        \n        public static void WriteFloat(float val, BinaryWriter binaryWriter)\n        {\n            MyMwcUtils.FixDenormalizedFloat(ref val);\n\n            if (!MyCommonDebugUtils.IsValid(val))\n            {\n                throw new InvalidOperationException(\"Cannot write invalid float (infinity or NaN) to network message!\");\n            }\n            binaryWriter.Write(val);\n        }\n\n        public static void WriteString(string val, BinaryWriter binaryWriter)\n        {\n            //  String can't be null because null is used to signal error in reading the packet. Instead use empty string.\n            MyCommonDebugUtils.AssertDebug(val != null);\n            binaryWriter.Write(val);\n        }\n\n        public static void WriteNullableString(string value, BinaryWriter binaryWriter)\n        {\n            bool hasValue = value != null;\n            MyMwcMessageOut.WriteBool(hasValue, binaryWriter);\n            if (hasValue)\n            {\n                MyMwcMessageOut.WriteString(value, binaryWriter);\n            }\n        }\n\n        public static void WriteCollection<T>(ICollection<T> collection, BinaryWriter binaryWriter)\n            where T : MyMwcObjectBuilder_Base\n        {\n            WriteCollection(collection, collection.Count, binaryWriter);\n        }\n\n        public static void WriteCollection<T>(IEnumerable<T> collection, int count, BinaryWriter binaryWriter)\n            where T : MyMwcObjectBuilder_Base\n        {\n            WriteInt32(count, binaryWriter);\n            int i = 0;\n            foreach (var obj in collection)\n            {\n                obj.Write(binaryWriter);\n                i++;\n            }\n            Debug.Assert(count == i, \"When writting object collection, number of elements found does not match count argument\");\n        }\n\n        public static void WriteSectorIdentifier(MyMwcSectorIdentifier val, BinaryWriter binaryWriter)\n        {\n            WriteInt16((short)val.SectorType, binaryWriter);\n            WriteBool(val.UserId.HasValue, binaryWriter);\n            if (val.UserId.HasValue)\n            {\n                WriteInt32(val.UserId.Value, binaryWriter);\n            }\n            WriteVector3Int(val.Position, binaryWriter);\n            WriteString(val.SectorName, binaryWriter);\n        }\n\n        public static void WriteUserDetail(MyMwcUserDetail val, BinaryWriter binaryWriter)\n        {\n            WriteInt32(val.UserId, binaryWriter);\n            WriteString(val.DisplayName, binaryWriter);\n\n        }\n\n        public static void WriteObjectBuilderSmallShipArmorTypesEnum(MyMwcObjectBuilder_SmallShip_Armor_TypesEnum val, BinaryWriter binaryWriter)\n        {\n            binaryWriter.Write((ushort)val);\n        }\n        \n        public static void WriteObjectBuilderSmallShipRadarTypesEnum(MyMwcObjectBuilder_SmallShip_Radar_TypesEnum val, BinaryWriter binaryWriter)\n        {\n            binaryWriter.Write((ushort)val);\n        }\n        \n        public static void WriteObjectBuilderOreTypesEnum(MyMwcObjectBuilder_Ore_TypesEnum val, BinaryWriter binaryWriter)\n        {\n            binaryWriter.Write((ushort)val);\n        }\n        \n        public static void WriteObjectBuildeBlueprintTypesEnum(MyMwcObjectBuilder_Blueprint_TypesEnum val, BinaryWriter binaryWriter)\n        {\n            binaryWriter.Write((ushort)val);\n        }\n\n        public static void WriteEndpoint(EndPoint endpoint, BinaryWriter binaryWriter)\n        {\n            IPEndPoint ep = endpoint as IPEndPoint;\n            if (ep == null)\n                throw new InvalidOperationException(\"Cannot write other endpoint than IPEndPoint\");\n\n            var bytes = ep.Address.GetAddressBytes();\n            binaryWriter.Write((byte)bytes.Length);\n            binaryWriter.Write(bytes);\n            binaryWriter.Write(ep.Port);\n        }\n\n        public static void WriteResultCode(MyResultCodeEnum resultCode, BinaryWriter writer)\n        {\n            writer.Write((byte)resultCode);\n        }\n    }\n}"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/MyMwcSectorGroups.cs",
    "content": "﻿using MinerWarsMath;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils.Utils;\nusing System.Reflection;\nusing SysUtils;\n\n\n//  Sector group is a origin/pivot point for a group of sectors in some area. In fact we don't\n//  need this if all sector will be relative to sun. But because I want more flexibility when\n//  size of sector changes (can happen in future during game-play-testing), I want to have areas\n//  where are sectors and those sectors are relative to their sector group.\n//  I assume player can't travel in his ship from sector group to other sector group. Distance will\n//  be just too large (assuming that traveling from sun to earth will take 7 years).\n\nnamespace MinerWars.CommonLIB.AppCode.Networking\n{\n    //  IMPORTANT: Never delete or change numeric values from this enum. They are used in database too and we don't want inconsistency.\n    [System.Obsolete(\"Use session type\")]\n    [Obfuscation(Feature = MyMwcFinalBuildConstants.OBFUSCATION_EXCEPTION_FEATURE, Exclude = true, ApplyToMembers = true)]\n    public enum MyMwcSectorTypeEnum : short\n    {\n        STORY = 1,\n        MMO = 2,\n        SANDBOX = 3\n    }\n\n}"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/MyRelayedConnection.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing Lidgren.Network;\nusing System.Net;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking\n{\n    public class MyRelayedConnection : NetConnection\n    {\n        public IPEndPoint RelayTargetEp;\n\n        public MyRelayedConnection(NetPeer peer)\n            :base(peer, null)\n        {\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Services/MyAlreadyLoggedInFault.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Runtime.Serialization;\nusing System.Reflection;\nusing SysUtils;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking.Services\n{\n    [Obfuscation(Feature = MyMwcFinalBuildConstants.OBFUSCATION_EXCEPTION_FEATURE, Exclude = true, ApplyToMembers = true)]\n    [DataContract]\n    public class MyAlreadyLoggedInFault\n    {\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Services/MyCertificateValidator.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.IdentityModel.Selectors;\nusing System.Security;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking.Services\n{\n    public class MyCertificateValidator: X509CertificateValidator\n    {\n        string hash;\n\n        /// <summary>\n        /// Empty hash means automatic always success\n        /// </summary>\n        /// <param name=\"certificateHash\"></param>\n        public MyCertificateValidator(string certificateHash)\n        {\n            hash = certificateHash;\n        }\n\n        public override void Validate(System.Security.Cryptography.X509Certificates.X509Certificate2 certificate)\n        {\n            if (!String.IsNullOrEmpty(hash) && certificate.GetCertHashString() != hash)\n            {\n                throw new SecurityException(\"Server cannot be authenticated\");\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Services/MyCheckpointNotExistsFault.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Runtime.Serialization;\nusing System.Reflection;\nusing SysUtils;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking.Services\n{\n    [Obfuscation(Feature = MyMwcFinalBuildConstants.OBFUSCATION_EXCEPTION_FEATURE, Exclude = true, ApplyToMembers = true)]\n    [DataContract]\n    public class MyCheckpointNotExistsFault\n    {\n        public MyCheckpointNotExistsFault()\n        {\n        }\n\n        public MyCheckpointNotExistsFault(string message)\n            : this()\n        {\n            Message = message;\n        }\n\n        [DataMember]\n        public string Message;\n        public override string ToString()\n        {\n            return Message;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Services/MyCheckpointRenameFault.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Reflection;\nusing System.Runtime.Serialization;\nusing SysUtils;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking.Services\n{\n    public enum MyCheckpointRenameFaultReason\n    {\n        NameAlreadyExists,\n        CheckpointNotFound\n    }\n\n    [Obfuscation(Feature = MyMwcFinalBuildConstants.OBFUSCATION_EXCEPTION_FEATURE, Exclude = true, ApplyToMembers = true)]\n    [DataContract]\n    public class MyCheckpointRenameFault\n    {\n        [DataMember(Name=\"Reason\")]\n        public MyCheckpointRenameFaultReason Reason;\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Services/MyCustomBinding.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.ServiceModel.Channels;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing System.ServiceModel.Security.Tokens;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking.Services\n{\n    public static class MyCustomBinding\n    {\n        public static Binding DecorateBinding(Binding binding, int? maxNegotiationCount)\n        {\n            CustomBinding customBinding = new CustomBinding(binding);\n            SymmetricSecurityBindingElement security = customBinding.Elements.Find<SymmetricSecurityBindingElement>();\n            if (security != null)\n            {\n                security.IncludeTimestamp = false;\n                security.LocalClientSettings.DetectReplays = false;\n                security.LocalServiceSettings.DetectReplays = false;\n                security.LocalClientSettings.MaxClockSkew = TimeSpan.MaxValue;\n                security.LocalServiceSettings.MaxClockSkew = TimeSpan.MaxValue;\n                security.LocalClientSettings.SessionKeyRenewalInterval = TimeSpan.MaxValue;\n                security.LocalServiceSettings.SessionKeyRenewalInterval = TimeSpan.FromMilliseconds(Int32.MaxValue);\n\n                if (maxNegotiationCount.HasValue)\n                {\n                    security.LocalServiceSettings.MaxPendingSessions = maxNegotiationCount.Value;\n                    security.LocalServiceSettings.MaxStatefulNegotiations = maxNegotiationCount.Value;\n                }\n\n                // Get the System.ServiceModel.Security.Tokens.SecureConversationSecurityTokenParameters\n                SecureConversationSecurityTokenParameters secureTokenParams = (SecureConversationSecurityTokenParameters)security.ProtectionTokenParameters;\n\n                // From the collection, get the bootstrap element.\n                SecurityBindingElement bootstrap = secureTokenParams.BootstrapSecurityBindingElement;\n\n                // Set the MaxClockSkew on the bootstrap element.\n                bootstrap.IncludeTimestamp = false;\n                bootstrap.LocalClientSettings.DetectReplays = false;\n                bootstrap.LocalServiceSettings.DetectReplays = false;\n                bootstrap.LocalClientSettings.MaxClockSkew = TimeSpan.MaxValue;\n                bootstrap.LocalServiceSettings.MaxClockSkew = TimeSpan.MaxValue;\n                bootstrap.LocalClientSettings.SessionKeyRenewalInterval = TimeSpan.MaxValue;\n                bootstrap.LocalServiceSettings.SessionKeyRenewalInterval = TimeSpan.FromMilliseconds(Int32.MaxValue);\n\n                if (maxNegotiationCount.HasValue)\n                {\n                    bootstrap.LocalServiceSettings.MaxPendingSessions = maxNegotiationCount.Value;\n                    bootstrap.LocalServiceSettings.MaxStatefulNegotiations = maxNegotiationCount.Value;\n                }\n\n                return customBinding;\n            }\n            else\n            {\n                return binding;\n            }\n        }\n\n        public static Binding DecorateBinding(Binding binding)\n        {\n            return DecorateBinding(binding, null);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Services/MyCustomFault.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Reflection;\nusing System.Runtime.Serialization;\nusing SysUtils;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking.Services\n{\n    [Obfuscation(Feature = MyMwcFinalBuildConstants.OBFUSCATION_EXCEPTION_FEATURE, Exclude = true, ApplyToMembers = true)]\n    public enum MyCustomFaultCode\n    {\n        Unknown = 0,\n        SectorNameExists,\n        UserNotFound,\n        SectorNotFound,\n        CheckpointTemplateNotExists,\n    }\n\n    [Obfuscation(Feature = MyMwcFinalBuildConstants.OBFUSCATION_EXCEPTION_FEATURE, Exclude = true, ApplyToMembers = true)]\n    [DataContract]\n    public class MyCustomFault\n    {\n        public MyCustomFault()\n        {\n            ErrorCode = MyCustomFaultCode.Unknown;\n        }\n\n        public MyCustomFault(string message)\n            : this()\n        {\n            Message = message;\n        }\n\n        [DataMember]\n        public MyCustomFaultCode ErrorCode;\n\n        [DataMember]\n        public string Message;\n\n        [DataMember]\n        public string StackTrace;\n\n        [DataMember]\n        public string FullText;\n\n        public override string ToString()\n        {\n            return String.Format(\"{0}: {1}\", ErrorCode, Message) + Environment.NewLine + String.Format(\"Stack trace: {0}\", StackTrace) + Environment.NewLine + FullText;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Services/MyServiceConstants.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.ServiceModel;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking.Services\n{\n    public static class MyServiceConstants\n    {\n        public const string FAULT_RESTRICTED = \"RESTRICTED\";\n        public const string FAULT_CREDENTIALS = \"CREDENTIALS\";\n        public const string FAULT_ALREADY_LOGGED = \"ALREADY_LOGGED\";\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Networking/Services/MyVersionFault.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Runtime.Serialization;\nusing System.Reflection;\nusing SysUtils;\n\nnamespace MinerWars.CommonLIB.AppCode.Networking.Services\n{\n    [Obfuscation(Feature = MyMwcFinalBuildConstants.OBFUSCATION_EXCEPTION_FEATURE, Exclude = true, ApplyToMembers = true)]\n    [DataContract]\n    public class MyVersionFault\n    {\n        [DataMember(Name = \"RequiredVersion\")]\n        public int RequiredVersion;\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/ObjectBuilders/IMyEntityIdRemapContext.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace MinerWars.CommonLIB.AppCode.ObjectBuilders\n{\n    public interface IMyEntityIdRemapContext\n    {\n        uint? RemapEntityId(uint? currentId);\n        string RemapWaypointGroupName(string currentName);\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/ObjectBuilders/InfluenceSpheres/MyMwcObjectBuilder_InfluenceSphere.cs",
    "content": "﻿using System;\nusing System.IO;\nusing System.Net;\nusing MinerWarsMath;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing SysUtils.Utils;\n\nnamespace MinerWars.CommonLIB.AppCode.ObjectBuilders.InfluenceSpheres\n{\n    // Do not change numbers, these are saved in DB\n    [Flags]\n    public enum MyInfluenceFlags\n    {\n        None = 0,\n        Dust = 1 << 0,\n        Sound = 1 << 1,\n        Radioactivity = 1 << 2,\n    }\n\n    //public enum MyInfluenceSphereSoundsEnum\n    //{\n    //    MUS_STORY_AMBIENT = 0\n    //}\n\n    public class MyMwcObjectBuilder_InfluenceSphere : MyMwcObjectBuilder_Object3dBase\n    {\n        public MyInfluenceFlags InfluenceFlags;\n\n        public float RadiusMin;\n        public float RadiusMax;\n        public Color DustColor;\n        public float Magnitude;\n        //public MyInfluenceSphereSoundsEnum SoundType;\n        public short SoundCueId;\n\n        #region Influence types\n\n        public bool IsDust\n        {\n            get\n            {\n                return (InfluenceFlags & MyInfluenceFlags.Dust) != 0;\n            }\n            set\n            {\n                if (value)\n                {\n                    InfluenceFlags |= MyInfluenceFlags.Dust;\n                }\n                else\n                {\n                    InfluenceFlags &= (~MyInfluenceFlags.Dust);\n                }\n            }\n        }\n\n        public bool IsRadioactivity\n        {\n            get\n            {\n                return (InfluenceFlags & MyInfluenceFlags.Radioactivity) != 0;\n            }\n            set\n            {\n                if (value)\n                {\n                    InfluenceFlags |= MyInfluenceFlags.Radioactivity;\n                }\n                else\n                {\n                    InfluenceFlags &= (~MyInfluenceFlags.Radioactivity);\n                }\n            }\n        }\n\n        public bool IsSound\n        {\n            get\n            {\n                return (InfluenceFlags & MyInfluenceFlags.Sound) != 0;\n            }\n            set\n            {\n                if (value)\n                {\n                    InfluenceFlags |= MyInfluenceFlags.Sound;\n                }\n                else\n                {\n                    InfluenceFlags &= (~MyInfluenceFlags.Sound);\n                }\n            }\n        }\n\n        #endregion\n\n        //  Write this object into message-out\n        public override MyMwcObjectBuilderTypeEnum GetObjectBuilderType()\n        {\n            return MyMwcObjectBuilderTypeEnum.InfluenceSphere;\n        }\n\n        internal override void Write(BinaryWriter binaryWriter)\n        {\n            base.Write(binaryWriter);\n\n            // Type\n            MyMwcLog.IfNetVerbose_AddToLog(\"InfluenceFlags: \" + InfluenceFlags);\n            MyMwcMessageOut.WriteInt16((short) InfluenceFlags, binaryWriter);\n\n            // RadiusMin\n            MyMwcLog.IfNetVerbose_AddToLog(\"RadiusMin: \" + RadiusMin);\n            MyMwcMessageOut.WriteFloat(RadiusMin, binaryWriter);\n\n            // RadiusMax\n            MyMwcLog.IfNetVerbose_AddToLog(\"RadiusMax: \" + RadiusMax);\n            MyMwcMessageOut.WriteFloat(RadiusMax, binaryWriter);\n\n            // Dust Color\n            MyMwcLog.IfNetVerbose_AddToLog(\"DustColor: \" + DustColor.ToString());\n            MyMwcMessageOut.WriteColor(DustColor, binaryWriter);\n\n            // Magnitude\n            MyMwcLog.IfNetVerbose_AddToLog(\"Magnitude: \" + Magnitude);\n            MyMwcMessageOut.WriteFloat(Magnitude, binaryWriter);\n\n            //// Sound Type\n            //MyMwcLog.IfNetVerbose_AddToLog(\"SoundType: \" + SoundType);\n            //MyMwcMessageOut.WriteInt16((short) SoundType, binaryWriter);\n\n            // Sound Cue Id\n            MyMwcLog.IfNetVerbose_AddToLog(\"SoundCueId: \" + SoundCueId);\n            MyMwcMessageOut.WriteInt16((short)SoundCueId, binaryWriter);\n        }\n\n        //  Read this object from message-in\n        internal override bool Read(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n        {\n            if (base.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n\n            // Type\n            short? flags = MyMwcMessageIn.ReadInt16Ex(binaryReader, senderEndPoint);\n            if (flags == null) return NetworkError();\n            InfluenceFlags = (MyInfluenceFlags) flags.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"InfluenceFlags: \" + InfluenceFlags);\n\n            // RadiusMin\n            float radiusMin = MyMwcMessageIn.ReadFloat(binaryReader);\n            RadiusMin = radiusMin;\n            MyMwcLog.IfNetVerbose_AddToLog(\"RadiusMin: \" + RadiusMin);\n\n            // RadiusMax\n            float radiusMax = MyMwcMessageIn.ReadFloat(binaryReader);\n            RadiusMax = radiusMax;\n            MyMwcLog.IfNetVerbose_AddToLog(\"RadiusMax: \" + RadiusMax);\n\n            // Dust color\n            Color? dustColor = MyMwcMessageIn.ReadColorEx(binaryReader, senderEndPoint);\n            if (dustColor == null) return NetworkError();\n            MyMwcLog.IfNetVerbose_AddToLog(\"dustColor: \" + dustColor.ToString());\n            DustColor = dustColor.Value;\n\n            // Magnitude\n            float magnitude = MyMwcMessageIn.ReadFloat(binaryReader);\n            MyMwcLog.IfNetVerbose_AddToLog(\"Magnitude: \" + magnitude);\n            Magnitude = magnitude;\n\n            //// Sound\n            //short? soundType = MyMwcMessageIn.ReadInt16Ex(binaryReader, senderEndPoint);\n            //if (soundType == null) return NetworkError();\n            //SoundType = (MyInfluenceSphereSoundsEnum) soundType.Value;\n            //MyMwcLog.IfNetVerbose_AddToLog(\"SoundType: \" + SoundType);\n\n            // Sound Cue Id\n            short? soundCueId = MyMwcMessageIn.ReadInt16Ex(binaryReader, senderEndPoint);\n            if (soundCueId == null) return NetworkError();\n            SoundCueId = soundCueId.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"SoundCueId: \" + SoundCueId);\n\n            return true;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/ObjectBuilders/MyMwcObjectBuilderClassDiagram.cd",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<ClassDiagram MajorVersion=\"1\" MinorVersion=\"1\">\n  <Class Name=\"MinerWars.CommonLIB.AppCode.ObjectBuilders.MyMwcObjectBuilder_Base\">\n    <Position X=\"22.5\" Y=\"0.5\" Width=\"2\" />\n    <TypeIdentifier>\n      <HashCode>AgAAAAAAAAAAgQAEAAACAAQgAAAAABAAAACIIAEAQAA=</HashCode>\n      <FileName>AppCode\\ObjectBuilders\\MyMwcObjectBuilder_Base.cs</FileName>\n    </TypeIdentifier>\n  </Class>\n  <Class Name=\"MinerWars.CommonLIB.AppCode.ObjectBuilders.MyMwcObjectBuilder_Sector\">\n    <Position X=\"25.75\" Y=\"5\" Width=\"2.25\" />\n    <TypeIdentifier>\n      <HashCode>IAAAAAAAAAAAAAAAAAAAACQgQAAAAAAAAACIAAEAAAA=</HashCode>\n      <FileName>AppCode\\ObjectBuilders\\MyMwcObjectBuilder_Sector.cs</FileName>\n    </TypeIdentifier>\n  </Class>\n  <Class Name=\"MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D.MyMwcObjectBuilder_LargeDebrisField\">\n    <Position X=\"11.25\" Y=\"8.5\" Width=\"3\" />\n    <TypeIdentifier>\n      <HashCode>AAAAAAAAAAAAAAAAAAAGAAAgAAAAAAAAAACAIAEAAAA=</HashCode>\n      <FileName>AppCode\\ObjectBuilders\\Object3D\\MyMwcObjectBuilder_LargeDebrisField.cs</FileName>\n    </TypeIdentifier>\n  </Class>\n  <Class Name=\"MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D.MyMwcObjectBuilder_LargeShip\">\n    <Position X=\"15\" Y=\"8.5\" Width=\"2.5\" />\n    <TypeIdentifier>\n      <HashCode>AAAAAAAAAAAAAABAAAACAAQgAAAAAAAAAACIIAEAAAA=</HashCode>\n      <FileName>AppCode\\ObjectBuilders\\Object3D\\MyMwcObjectBuilder_LargeShip.cs</FileName>\n    </TypeIdentifier>\n  </Class>\n  <Class Name=\"MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D.MyMwcObjectBuilder_SmallDebris\">\n    <Position X=\"18.25\" Y=\"8.5\" Width=\"2.5\" />\n    <TypeIdentifier>\n      <HashCode>AAAAAAAAAAAAAAAAAAAGAAQgAAAAABAAAACIICEAAAA=</HashCode>\n      <FileName>AppCode\\ObjectBuilders\\Object3D\\MyMwcObjectBuilder_SmallDebris.cs</FileName>\n    </TypeIdentifier>\n  </Class>\n  <Class Name=\"MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D.MyMwcObjectBuilder_SmallShip\">\n    <Position X=\"7.75\" Y=\"8.5\" Width=\"2.75\" />\n    <TypeIdentifier>\n      <HashCode>ACEAAAAAAAAAAABAAAACAAQgAAAAABAARACIIAEAABA=</HashCode>\n      <FileName>AppCode\\ObjectBuilders\\Object3D\\MyMwcObjectBuilder_SmallShip.cs</FileName>\n    </TypeIdentifier>\n  </Class>\n  <Class Name=\"MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D.MyMwcObjectBuilder_SmallShip_Player\">\n    <Position X=\"7.75\" Y=\"13.25\" Width=\"2.75\" />\n    <TypeIdentifier>\n      <HashCode>AAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAACIAAAAAAA=</HashCode>\n      <FileName>AppCode\\ObjectBuilders\\Object3D\\MyMwcObjectBuilder_SmallShip_Player.cs</FileName>\n    </TypeIdentifier>\n  </Class>\n  <Class Name=\"MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.MyMwcObjectBuilder_SubObjectBase\">\n    <Position X=\"35\" Y=\"5\" Width=\"2.5\" />\n    <TypeIdentifier>\n      <HashCode>AAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAIAAAAAAA=</HashCode>\n      <FileName>AppCode\\ObjectBuilders\\SubObjects\\MyMwcObjectBuilder_SubObjectBase.cs</FileName>\n    </TypeIdentifier>\n  </Class>\n  <Class Name=\"MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools.MyMwcObjectBuilder_SmallShip_Ammo\">\n    <Position X=\"32.75\" Y=\"7.5\" Width=\"3.25\" />\n    <TypeIdentifier>\n      <HashCode>AAAAAAABAAAAAAAAAAACAACgAAAAAAAAAACAIAEAAAA=</HashCode>\n      <FileName>AppCode\\ObjectBuilders\\SubObjects\\SmallShipTools\\MyMwcObjectBuilder_SmallShip_Ammo.cs</FileName>\n    </TypeIdentifier>\n  </Class>\n  <Class Name=\"MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools.MyMwcObjectBuilder_SmallShip_Engine\">\n    <Position X=\"36.75\" Y=\"7.5\" Width=\"3\" />\n    <TypeIdentifier>\n      <HashCode>AAAAAAAAAAAAAAAAAAACABAgAAAAAAAAAACAIAEAAAA=</HashCode>\n      <FileName>AppCode\\ObjectBuilders\\SubObjects\\SmallShipTools\\MyMwcObjectBuilder_SmallShip_Engine.cs</FileName>\n    </TypeIdentifier>\n  </Class>\n  <Class Name=\"MinerWars.CommonLIB.AppCode.ObjectBuilders.Voxels.MyMwcObjectBuilder_VoxelMap\">\n    <Position X=\"40.5\" Y=\"5\" Width=\"2.5\" />\n    <TypeIdentifier>\n      <HashCode>ACAAAgDAAAAAAAAACAAAAAQgAAAAAABAEICJAAEAAAA=</HashCode>\n      <FileName>AppCode\\ObjectBuilders\\Voxels\\MyMwcObjectBuilder_VoxelMap.cs</FileName>\n    </TypeIdentifier>\n  </Class>\n  <Class Name=\"MinerWars.CommonLIB.AppCode.ObjectBuilders.Voxels.MyMwcObjectBuilder_VoxelMap_MergeContent\">\n    <Position X=\"3.75\" Y=\"5\" Width=\"3.25\" />\n    <TypeIdentifier>\n      <HashCode>AgAAAACAAAAAAAAAAAAAAAQggAAAAAAAAACIAAEAAAA=</HashCode>\n      <FileName>AppCode\\ObjectBuilders\\Voxels\\MyMwcObjectBuilder_VoxelMap_MergeContent.cs</FileName>\n    </TypeIdentifier>\n  </Class>\n  <Class Name=\"MinerWars.CommonLIB.AppCode.ObjectBuilders.Voxels.MyMwcObjectBuilder_VoxelMap_MergeMaterial\">\n    <Position X=\"21.5\" Y=\"5\" Width=\"3.5\" />\n    <TypeIdentifier>\n      <HashCode>AAAAAACAAAAAAAAAAAAAAAQggAAAAAAAAACJAAEAAAA=</HashCode>\n      <FileName>AppCode\\ObjectBuilders\\Voxels\\MyMwcObjectBuilder_VoxelMap_MergeMaterial.cs</FileName>\n    </TypeIdentifier>\n  </Class>\n  <Class Name=\"MinerWars.CommonLIB.AppCode.ObjectBuilders.Voxels.MyMwcObjectBuilder_VoxelMap_Neighbour\">\n    <Position X=\"28.75\" Y=\"5\" Width=\"3.25\" />\n    <TypeIdentifier>\n      <HashCode>AAAAAACAAAAAAAAAAgAAAAQgAAAAAAAAEACJAAEAAAA=</HashCode>\n      <FileName>AppCode\\ObjectBuilders\\Voxels\\MyMwcObjectBuilder_VoxelMap_Neighbour.cs</FileName>\n    </TypeIdentifier>\n  </Class>\n  <Class Name=\"MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D.MyMwcObjectBuilder_Object3dBase\">\n    <Position X=\"13\" Y=\"5\" Width=\"2.5\" />\n    <TypeIdentifier>\n      <HashCode>AAAAAAIAAAAAAAAAIAAAAAQgAAAAAAAAAAAIAAEAAAA=</HashCode>\n      <FileName>AppCode\\ObjectBuilders\\Object3D\\MyMwcObjectBuilder_Object3dBase.cs</FileName>\n    </TypeIdentifier>\n  </Class>\n  <Enum Name=\"MinerWars.CommonLIB.AppCode.ObjectBuilders.MyMwcObjectBuilderTypeEnum\" Collapsed=\"true\">\n    <Position X=\"47.5\" Y=\"1.25\" Width=\"1.5\" />\n    <TypeIdentifier>\n      <HashCode>AUAAgABACAAAiAaAAgAQAyQQAABAEABAAAAIAAAAhJg=</HashCode>\n      <FileName>AppCode\\ObjectBuilders\\MyMwcObjectBuilder_Base.cs</FileName>\n    </TypeIdentifier>\n  </Enum>\n  <Enum Name=\"MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D.MyMwcObjectBuilder_LargeShip_TypesEnum\" Collapsed=\"true\">\n    <Position X=\"44\" Y=\"0.5\" Width=\"1.5\" />\n    <TypeIdentifier>\n      <HashCode>AAACQgAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAEAA=</HashCode>\n      <FileName>AppCode\\ObjectBuilders\\Object3D\\MyMwcObjectBuilder_LargeShip.cs</FileName>\n    </TypeIdentifier>\n  </Enum>\n  <Enum Name=\"MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D.MyMwcObjectBuilder_SmallShip_TypesEnum\" Collapsed=\"true\">\n    <Position X=\"44\" Y=\"1.25\" Width=\"1.5\" />\n    <TypeIdentifier>\n      <HashCode>AAAAAEAAAAhAAAAAAACAAQAAAgD6HwBgACAAAAAAAQA=</HashCode>\n      <FileName>AppCode\\ObjectBuilders\\Object3D\\MyMwcObjectBuilder_SmallShip.cs</FileName>\n    </TypeIdentifier>\n  </Enum>\n  <Enum Name=\"MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum\" Collapsed=\"true\">\n    <Position X=\"45.75\" Y=\"1.25\" Width=\"1.5\" />\n    <TypeIdentifier>\n      <HashCode>AAAAGgAAAAACAAAAAAAAAgAwAQAEAAKAAAEAAAAAAkg=</HashCode>\n      <FileName>AppCode\\ObjectBuilders\\SubObjects\\MyMwcObjectBuilder_SmallShip_Weapon.cs</FileName>\n    </TypeIdentifier>\n  </Enum>\n  <Enum Name=\"MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools.MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum\" Collapsed=\"true\">\n    <Position X=\"45.75\" Y=\"0.5\" Width=\"1.5\" />\n    <TypeIdentifier>\n      <HashCode>CICAVwAkAAASASgAARGUUAAAAQIDABAAAACAClCQFGc=</HashCode>\n      <FileName>AppCode\\ObjectBuilders\\SubObjects\\SmallShipTools\\MyMwcObjectBuilder_SmallShip_Ammo.cs</FileName>\n    </TypeIdentifier>\n  </Enum>\n  <Enum Name=\"MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools.MyMwcObjectBuilder_SmallShip_Engine_TypesEnum\" Collapsed=\"true\">\n    <Position X=\"47.5\" Y=\"0.5\" Width=\"1.5\" />\n    <TypeIdentifier>\n      <HashCode>AAAAAAAAAADLAAAgAAAAAAAAAAIAAAAAAAAAAAAAAAA=</HashCode>\n      <FileName>AppCode\\ObjectBuilders\\SubObjects\\SmallShipTools\\MyMwcObjectBuilder_SmallShip_Engine.cs</FileName>\n    </TypeIdentifier>\n  </Enum>\n  <Font Name=\"Segoe UI\" Size=\"8.83\" />\n</ClassDiagram>"
  },
  {
    "path": "Sources/CommonLIB/AppCode/ObjectBuilders/MyMwcObjectBuilder_Base.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Net;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Voxels;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.LargeShipTools;\nusing System.Data.SqlClient;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.InfluenceSpheres;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.Prefabs;\nusing System.IO.Compression;\nusing SysUtils;\n\n//  Object builder is object that defines how to create instance of particular MyPhysObject**\n//  Every object builder class must implement parameter-less constructor (needed when loading objects)\n\nnamespace MinerWars.CommonLIB.AppCode.ObjectBuilders\n{\n    // Do not change numbers, these are saved in DB\n    [Flags]\n    public enum MyPersistentEntityFlags\n    {\n        None = 0,\n        //CULL_OBJECT = 1 << 0, obsolete\n        Enabled = 1 << 1,\n        CastShadows = 1 << 2,\n        Secret = 1 << 3,\n        Deactivated = 1 << 4,   //need to be in negative form because of default value\n        Destructible = 1 << 5,\n        NotTradeable = 1 << 6,  //need to be in negative form because of default value\n        Parked = 1 << 7, // For ships\n        StaticPhysics = 1 << 8, // For anything, currently used only for ships\n        DisplayOnHud = 1 << 9,\n        ActivatedOnDifficultyEasy = 1 << 10,\n        ActivatedOnDifficultyNormal = 1 << 11,\n        ActivatedOnDifficultyHard = 1 << 12,\n\n        KinematicPhysics = 1 << 13, //Determines object which uses kinematic physics instead of default\n\n        ActivatedOnAllDifficulties = ActivatedOnDifficultyEasy | ActivatedOnDifficultyNormal | ActivatedOnDifficultyHard,\n    }\n\n    //  You can use this enum for knowing object type or you can get it from class type. Both ways should be equivalent.\n    //  IMPORTANT: Never change numeric values and never delete any enum item. These numbers are referenced e.g. from database.\n    //  IMPORTANT: Each new enum item add also to m_objectBuilderToType through AddObjectBuilderToType (see static constructor below)\n    public enum MyMwcObjectBuilderTypeEnum : ushort\n    {\n        SmallDebris = 0,\n        LargeDebrisField = 1,\n        LargeShip = 12,\n        SmallShip_Engine = 15,\n        SmallShip_Player = 16,\n        //SmallShip_Ally = 17,\n        SmallShip_Bot = 18,\n        Sector = 19,\n        VoxelMap = 20,\n        VoxelMap_MergeMaterial = 21,\n        VoxelMap_MergeContent = 22,\n        VoxelMap_Neighbour = 23,\n        VoxelHand_Sphere = 24,\n        VoxelHand_Box = 25,\n        VoxelHand_Cuboid = 26,\n        SmallShip_Ammo = 36,\n        //LargeShip_Weapon = 37,\n        SmallShip_Weapon = 38,\n        StaticAsteroid = 39,\n        SmallShip_Tool = 40,\n        SmallShip = 41,\n        SmallShip_AssignmentOfAmmo = 42,\n\n        //SmallShip_RearCamera = 50,\n        //SmallShip_LaserPointer = 51,\n        //SmallShip_AutoTargeting = 52,\n        //SmallShip_NightVision = 53,\n        //SmallShip_NanoRepairTool = 54,\n        //SmallShip_Medikit = 55,\n        //SmallShip_XRay = 56,\n        //SmallShip_AntiradiationMedicine = 57,\n        //SmallShip_RadarJammer = 58,\n        //SmallShip_PerformanceEnhancingMedicine = 59,\n        //SmallShip_HealthEnhancingMedicine = 60,\n        //SmallShip_ExtraFuelContainer = 61,\n        //SmallShip_ExtraElectricityContainer = 62,\n        //SmallShip_ExtraOxygenContainer = 63,\n        //SmallShip_OxygenConverter = 64,\n        //SmallShip_FuelConverter = 65,\n        //SmallShip_SolarPanel = 66,\n        //SmallShip_BoobyTrap = 67,\n        //SmallShip_Sensor = 68,\n        //SmallShip_RemoteCamera = 69,\n        //SmallShip_RemoteCameraOnDrone = 70,\n        //SmallShip_AlienObjectDetector = 71,\n        LargeShip_Ammo = 72,\n        Prefab = 73,\n        PrefabContainer = 74,\n        //InfluenceSphereDust = 75,\n        //InfluenceSphereSound = 76,\n        PrefabLight = 77,\n        SpawnPoint = 78,\n        SmallShip_Armor = 79,\n        SmallShip_Radar = 80,\n        Ore = 81,\n        Blueprint = 82,\n        FoundationFactory = 83,\n        Inventory = 84,\n        InventoryItem = 85,\n        Checkpoint = 86,\n        Player = 87,\n        PlayerStatistics = 88,\n        PrefabSound = 89,\n        PrefabParticles = 90,\n        PrefabKinematic = 91,\n        Session = 92,\n        Event = 93,\n        //WayPoint = 94,\n        //WayPointGroup = 95,\n        ObjectToBuild = 96,\n        ObjectGroup = 97,\n        PrefabLargeShip = 98,\n        PrefabLargeWeapon = 99,\n        PrefabHangar = 100,\n        DummyPoint = 101,\n        SnapPointLink = 102,\n        PrefabKinematicPart = 103,\n        EntityDetector = 104,\n        ShipConfig = 105,\n        PrefabFoundationFactory = 106,\n        PrefabSecurityControlHUB = 107,\n        FalseId = 108,\n        Drone = 109,\n        SmallShip_HackingTool = 110,\n        PrefabBankNode = 111,\n        EntityUseProperties = 112,\n        //WayPointPath = 113,\n        PrefabGenerator = 114,\n        CargoBox = 115,\n        SectorObjectGroups = 116,\n        WaypointNew = 117,\n        MysteriousCube = 118,\n        PrefabScanner = 119,\n        PrefabAlarm = 120,\n        PrefabCamera = 121,\n        //PrefabKinematicRotating = 122,\n        PrefabKinematicRotatingPart = 123,\n        Meteor = 124,\n        //InfluenceSphereRadioactivity = 125,\n        InfluenceSphere = 126,\n        SmallShipTemplate = 127,\n        SmallShipTemplates = 128,\n        FactionRelationChange = 129,\n\n        RemotePlayer = 130,\n\n        VoxelHand_Cylinder = 131,\n        GlobalData = 132,\n    }\n\n    // Do not change numbers, these are saved in DB\n    public enum MyMwcObjectBuilder_FactionEnum\n    {\n        None = 1 << 0,  //major factions\n        Euroamerican = 1 << 1,\n        China = 1 << 2,\n        FourthReich = 1 << 3,\n        Omnicorp = 1 << 4,\n\n        Russian = 1 << 5,  //minor factions\n        Japan = 1 << 6,\n        India = 1 << 7,\n        Saudi = 1 << 8,\n        Church = 1 << 9,\n        FSRE = 1 << 10,\n        FreeAsia = 1 << 11,\n\n        Pirates = 1 << 12, //groups\n        Miners = 1 << 13,\n        Freelancers = 1 << 14,\n        Ravens = 1 << 15,\n        Traders = 1 << 16,\n        Syndicate = 1 << 17,\n        Templars = 1 << 18,\n        Rangers = 1 << 19,\n        TTLtd = 1 << 20,\n        SMLtd = 1 << 21,\n        CSR = 1 << 22,\n        Russian_KGB = 1 << 23,\n        Slavers = 1 << 24,\n        WhiteWolves = 1 << 25,\n        Rainiers = 1 << 26,\n\n        // LIMIT IS 1 << 31!!!\n    }\n\n    public class MyMwcObjectBuilderDefinition\n    {\n        public Type Type { get; set; }\n        public int[] Ids { get; set; }\n\n        public MyMwcObjectBuilderDefinition(Type type, int[] ids)\n        {\n            Type = type;\n            Ids = ids;\n        }\n    }\n\n    public class MyMwcFactionsByIndex\n    {\n        private static Dictionary<int, MyMwcObjectBuilder_FactionEnum> m_indexesToFactionEnums;\n        private static Dictionary<MyMwcObjectBuilder_FactionEnum, int> m_factionEnumsToIndexes;\n        private static int[] m_factionsIndexes;\n\n        static MyMwcFactionsByIndex()\n        {\n            Array factionValues = Enum.GetValues(typeof(MyMwcObjectBuilder_FactionEnum));\n            m_indexesToFactionEnums = new Dictionary<int, MyMwcObjectBuilder_FactionEnum>();\n            m_factionEnumsToIndexes = new Dictionary<MyMwcObjectBuilder_FactionEnum, int>();\n            m_factionsIndexes = new int[factionValues.Length];\n            for (int i = 0; i < factionValues.Length; i++)\n            {\n                m_indexesToFactionEnums.Add(i, (MyMwcObjectBuilder_FactionEnum)factionValues.GetValue(i));\n                m_factionEnumsToIndexes.Add((MyMwcObjectBuilder_FactionEnum)factionValues.GetValue(i), i);\n                m_factionsIndexes[i] = i;\n            }\n        }\n\n        public static MyMwcObjectBuilder_FactionEnum GetFaction(int index)\n        {\n            return m_indexesToFactionEnums[index];\n        }\n\n        public static int GetFactionIndex(MyMwcObjectBuilder_FactionEnum faction)\n        {\n            // Check if faction is single value\n            int factionValue = (int)faction;\n            MyCommonDebugUtils.AssertDebug(((factionValue > 0) && ((factionValue & (factionValue - 1)) == 0)));\n\n            return m_factionEnumsToIndexes[faction];\n        }\n\n        public static int[] GetFactionsIndexes()\n        {\n            return m_factionsIndexes;\n        }\n    }\n\n    public abstract class MyMwcObjectBuilder_Base\n    {\n        /// <summary>\n        /// First version which is compatible with all future versions\n        /// </summary>\n        public const int FIRST_COMPATIBILITY_VERSION = 01084000;\n\n        static EndPoint fakeEp = new IPEndPoint(0x7F000001, 0); // 127.0.0.1\n\n        // To prevent allocations when cloning object builders (make it large enought to prevent reallocations in LOH)\n        static MemoryStream m_cloneStream = new MemoryStream(128 * 1024); // 128 KB should be enough\n        static BinaryWriter m_cloneWriter;\n        static BinaryReader m_cloneReader;\n\n        static string m_networkError;\n        public bool Generated = false;\n\n        //static Type[] m_objectBuilderToType = new Type[Enum.GetValues(typeof(MyMwcObjectBuilderTypeEnum)).Length];\n        //static readonly Type[] m_objectBuilderToType = new Type[MyMwcUtils.GetMaxValueFromEnum<MyMwcObjectBuilderTypeEnum>() + 1];\n        //static readonly int[][] m_objectBuilderIDs = new int[MyMwcUtils.GetMaxValueFromEnum<MyMwcObjectBuilderTypeEnum>() + 1][];\n        static readonly MyMwcObjectBuilderDefinition[] m_objectBuilderDefinitions = new MyMwcObjectBuilderDefinition[MyMwcUtils.GetMaxValueFromEnum<MyMwcObjectBuilderTypeEnum>() + 1];\n\n        internal MyMwcObjectBuilder_Base()\n        {\n            LoadPersistantFlags();\n        }\n\n        protected virtual void LoadPersistantFlags()\n        {\n            PersistentFlags |= MyPersistentEntityFlags.Destructible;\n            PersistentFlags |= GetDefaultPersistantFlags();\n        }\n\n        public static MyPersistentEntityFlags GetDefaultPersistantFlags()\n        {\n            MyPersistentEntityFlags defaultFlags = MyPersistentEntityFlags.None;\n\n            // by default all entities are activated on all difficulty levels\n            defaultFlags |= MyPersistentEntityFlags.ActivatedOnAllDifficulties | MyPersistentEntityFlags.CastShadows;\n\n            return defaultFlags;\n        }\n\n        static MyMwcObjectBuilder_Base()\n        {\n            m_cloneWriter = new BinaryWriter(m_cloneStream);\n            m_cloneReader = new BinaryReader(m_cloneStream);\n\n            AddObjectBuilderDefinition(MyMwcObjectBuilderTypeEnum.SmallDebris, typeof(MyMwcObjectBuilder_SmallDebris), typeof(MyMwcObjectBuilder_SmallDebris_TypesEnum));\n            AddObjectBuilderDefinition(MyMwcObjectBuilderTypeEnum.LargeDebrisField, typeof(MyMwcObjectBuilder_LargeDebrisField), typeof(MyMwcObjectBuilder_LargeDebrisField_TypesEnum));\n            AddObjectBuilderDefinition(MyMwcObjectBuilderTypeEnum.LargeShip, typeof(MyMwcObjectBuilder_LargeShip), typeof(MyMwcObjectBuilder_LargeShip_TypesEnum));\n            AddObjectBuilderDefinition(MyMwcObjectBuilderTypeEnum.SmallShip_Engine, typeof(MyMwcObjectBuilder_SmallShip_Engine), typeof(MyMwcObjectBuilder_SmallShip_Engine_TypesEnum));\n            AddObjectBuilderDefinition(MyMwcObjectBuilderTypeEnum.SmallShip_Player, typeof(MyMwcObjectBuilder_SmallShip_Player), typeof(MyMwcObjectBuilder_SmallShip_TypesEnum));\n            //AddObjectBuilderDefinition(MyMwcObjectBuilderTypeEnum.SmallShip_Ally, typeof(MyMwcObjectBuilder_SmallShip_Ally), null);\n            AddObjectBuilderDefinition(MyMwcObjectBuilderTypeEnum.SmallShip_Bot, typeof(MyMwcObjectBuilder_SmallShip_Bot), typeof(MyMwcObjectBuilder_SmallShip_TypesEnum));\n            AddObjectBuilderDefinition(MyMwcObjectBuilderTypeEnum.VoxelMap, typeof(MyMwcObjectBuilder_VoxelMap), (Type)null);\n            AddObjectBuilderDefinition(MyMwcObjectBuilderTypeEnum.VoxelMap_MergeMaterial, typeof(MyMwcObjectBuilder_VoxelMap_MergeMaterial), (Type)null);\n            AddObjectBuilderDefinition(MyMwcObjectBuilderTypeEnum.VoxelMap_MergeContent, typeof(MyMwcObjectBuilder_VoxelMap_MergeContent), (Type)null);\n            AddObjectBuilderDefinition(MyMwcObjectBuilderTypeEnum.Sector, typeof(MyMwcObjectBuilder_Sector), (Type)null);\n            AddObjectBuilderDefinition(MyMwcObjectBuilderTypeEnum.VoxelMap_Neighbour, typeof(MyMwcObjectBuilder_VoxelMap_Neighbour), (Type)null);\n            AddObjectBuilderDefinition(MyMwcObjectBuilderTypeEnum.VoxelHand_Sphere, typeof(MyMwcObjectBuilder_VoxelHand_Sphere), (Type)null);\n            AddObjectBuilderDefinition(MyMwcObjectBuilderTypeEnum.VoxelHand_Box, typeof(MyMwcObjectBuilder_VoxelHand_Box), (Type)null);\n            AddObjectBuilderDefinition(MyMwcObjectBuilderTypeEnum.VoxelHand_Cuboid, typeof(MyMwcObjectBuilder_VoxelHand_Cuboid), (Type)null);\n            AddObjectBuilderDefinition(MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, typeof(MyMwcObjectBuilder_SmallShip_Ammo), typeof(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum));\n            //AddObjectBuilderDefinition(MyMwcObjectBuilderTypeEnum.LargeShip_Weapon, typeof(MyMwcObjectBuilder_PrefabLargeWeapon), typeof(MyMwcObjectBuilder_LargeShip_Weapon_TypesEnum));\n            AddObjectBuilderDefinition(MyMwcObjectBuilderTypeEnum.SmallShip_Weapon, typeof(MyMwcObjectBuilder_SmallShip_Weapon), typeof(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum));\n            AddObjectBuilderDefinition(MyMwcObjectBuilderTypeEnum.StaticAsteroid, typeof(MyMwcObjectBuilder_StaticAsteroid), typeof(MyMwcObjectBuilder_StaticAsteroid_TypesEnum));\n            AddObjectBuilderDefinition(MyMwcObjectBuilderTypeEnum.SmallShip_Tool, typeof(MyMwcObjectBuilder_SmallShip_Tool), typeof(MyMwcObjectBuilder_SmallShip_Tool_TypesEnum));\n            AddObjectBuilderDefinition(MyMwcObjectBuilderTypeEnum.SmallShip, typeof(MyMwcObjectBuilder_SmallShip), typeof(MyMwcObjectBuilder_SmallShip_TypesEnum));\n            AddObjectBuilderDefinition(MyMwcObjectBuilderTypeEnum.SmallShip_AssignmentOfAmmo, typeof(MyMwcObjectBuilder_AssignmentOfAmmo), (Type)null);\n            AddObjectBuilderDefinition(MyMwcObjectBuilderTypeEnum.LargeShip_Ammo, typeof(MyMwcObjectBuilder_LargeShip_Ammo), typeof(MyMwcObjectBuilder_LargeShip_Ammo_TypesEnum));\n            AddObjectBuilderDefinition(MyMwcObjectBuilderTypeEnum.Prefab, typeof(MyMwcObjectBuilder_Prefab), typeof(MyMwcObjectBuilder_Prefab_TypesEnum));\n            AddObjectBuilderDefinition(MyMwcObjectBuilderTypeEnum.PrefabContainer, typeof(MyMwcObjectBuilder_PrefabContainer), typeof(MyMwcObjectBuilder_PrefabContainer_TypesEnum));\n            //AddObjectBuilderDefinition(MyMwcObjectBuilderTypeEnum.InfluenceSphereDust, typeof(MyMwcObjectBuilder_InfluenceSphereDust), (Type)null);\n            //AddObjectBuilderDefinition(MyMwcObjectBuilderTypeEnum.InfluenceSphereSound, typeof(MyMwcObjectBuilder_InfluenceSphereSound), (Type)null);\n            AddObjectBuilderDefinition(MyMwcObjectBuilderTypeEnum.PrefabLight, typeof(MyMwcObjectBuilder_PrefabLight), typeof(MyMwcObjectBuilder_PrefabLight_TypesEnum));\n            AddObjectBuilderDefinition(MyMwcObjectBuilderTypeEnum.SpawnPoint, typeof(MyMwcObjectBuilder_SpawnPoint), (Type)null);\n            AddObjectBuilderDefinition(MyMwcObjectBuilderTypeEnum.SmallShip_Armor, typeof(MyMwcObjectBuilder_SmallShip_Armor), typeof(MyMwcObjectBuilder_SmallShip_Armor_TypesEnum));\n            AddObjectBuilderDefinition(MyMwcObjectBuilderTypeEnum.SmallShip_Radar, typeof(MyMwcObjectBuilder_SmallShip_Radar), typeof(MyMwcObjectBuilder_SmallShip_Radar_TypesEnum));\n            AddObjectBuilderDefinition(MyMwcObjectBuilderTypeEnum.Ore, typeof(MyMwcObjectBuilder_Ore), typeof(MyMwcObjectBuilder_Ore_TypesEnum));\n            AddObjectBuilderDefinition(MyMwcObjectBuilderTypeEnum.Blueprint, typeof(MyMwcObjectBuilder_Blueprint), typeof(MyMwcObjectBuilder_Blueprint_TypesEnum));\n            AddObjectBuilderDefinition(MyMwcObjectBuilderTypeEnum.FoundationFactory, typeof(MyMwcObjectBuilder_FoundationFactory), (Type)null);\n            AddObjectBuilderDefinition(MyMwcObjectBuilderTypeEnum.Inventory, typeof(MyMwcObjectBuilder_Inventory), (Type)null);\n            AddObjectBuilderDefinition(MyMwcObjectBuilderTypeEnum.InventoryItem, typeof(MyMwcObjectBuilder_InventoryItem), (Type)null);\n            AddObjectBuilderDefinition(MyMwcObjectBuilderTypeEnum.Checkpoint, typeof(MyMwcObjectBuilder_Checkpoint), (Type)null);\n            AddObjectBuilderDefinition(MyMwcObjectBuilderTypeEnum.Player, typeof(MyMwcObjectBuilder_Player), (Type)null);\n            AddObjectBuilderDefinition(MyMwcObjectBuilderTypeEnum.PlayerStatistics, typeof(MyMwcObjectBuilder_PlayerStatistics), (Type)null);\n            AddObjectBuilderDefinition(MyMwcObjectBuilderTypeEnum.PrefabSound, typeof(MyMwcObjectBuilder_PrefabSound), typeof(MyMwcObjectBuilder_PrefabSound_TypesEnum));\n            AddObjectBuilderDefinition(MyMwcObjectBuilderTypeEnum.PrefabParticles, typeof(MyMwcObjectBuilder_PrefabParticles), typeof(MyMwcObjectBuilder_PrefabParticles_TypesEnum));\n            AddObjectBuilderDefinition(MyMwcObjectBuilderTypeEnum.PrefabKinematic, typeof(MyMwcObjectBuilder_PrefabKinematic), typeof(MyMwcObjectBuilder_PrefabKinematic_TypesEnum));\n            AddObjectBuilderDefinition(MyMwcObjectBuilderTypeEnum.Session, typeof(MyMwcObjectBuilder_Session), (Type)null);\n            AddObjectBuilderDefinition(MyMwcObjectBuilderTypeEnum.Event, typeof(MyMwcObjectBuilder_Event), (Type)null);\n            AddObjectBuilderDefinition(MyMwcObjectBuilderTypeEnum.ObjectToBuild, typeof(MyMwcObjectBuilder_ObjectToBuild), (Type)null);\n            AddObjectBuilderDefinition(MyMwcObjectBuilderTypeEnum.ObjectGroup, typeof(MyMwcObjectBuilder_ObjectGroup), (Type)null);\n            AddObjectBuilderDefinition(MyMwcObjectBuilderTypeEnum.PrefabLargeShip, typeof(MyMwcObjectBuilder_PrefabLargeShip), typeof(MyMwcObjectBuilder_PrefabLargeShip_TypesEnum));\n            AddObjectBuilderDefinition(MyMwcObjectBuilderTypeEnum.PrefabLargeWeapon, typeof(MyMwcObjectBuilder_PrefabLargeWeapon), typeof(MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum));\n            AddObjectBuilderDefinition(MyMwcObjectBuilderTypeEnum.PrefabHangar, typeof(MyMwcObjectBuilder_PrefabHangar), typeof(MyMwcObjectBuilder_PrefabHangar_TypesEnum));\n            AddObjectBuilderDefinition(MyMwcObjectBuilderTypeEnum.DummyPoint, typeof(MyMwcObjectBuilder_DummyPoint), (Type)null);\n            AddObjectBuilderDefinition(MyMwcObjectBuilderTypeEnum.SnapPointLink, typeof(MyMwcObjectBuilder_SnapPointLink), (Type)null);\n            AddObjectBuilderDefinition(MyMwcObjectBuilderTypeEnum.PrefabKinematicPart, typeof(MyMwcObjectBuilder_PrefabKinematicPart), typeof(MyMwcObjectBuilder_PrefabKinematicPart_TypesEnum));\n            AddObjectBuilderDefinition(MyMwcObjectBuilderTypeEnum.EntityDetector, typeof(MyMwcObjectBuilder_EntityDetector), typeof(MyMwcObjectBuilder_EntityDetector_TypesEnum));\n            AddObjectBuilderDefinition(MyMwcObjectBuilderTypeEnum.ShipConfig, typeof(MyMwcObjectBuilder_ShipConfig), (Type)null);\n            AddObjectBuilderDefinition(MyMwcObjectBuilderTypeEnum.PrefabFoundationFactory, typeof(MyMwcObjectBuilder_PrefabFoundationFactory), typeof(MyMwcObjectBuilder_PrefabFoundationFactory_TypesEnum));\n            AddObjectBuilderDefinition(MyMwcObjectBuilderTypeEnum.PrefabSecurityControlHUB, typeof(MyMwcObjectBuilder_PrefabSecurityControlHUB), typeof(MyMwcObjectBuilder_PrefabSecurityControlHUB_TypesEnum));\n            AddObjectBuilderDefinition(MyMwcObjectBuilderTypeEnum.FalseId, typeof(MyMwcObjectBuilder_FalseId), MyMwcFactionsByIndex.GetFactionsIndexes());\n            AddObjectBuilderDefinition(MyMwcObjectBuilderTypeEnum.Drone, typeof(MyMwcObjectBuilder_Drone), typeof(MyMwcObjectBuilder_Drone_TypesEnum));\n            AddObjectBuilderDefinition(MyMwcObjectBuilderTypeEnum.SmallShip_HackingTool, typeof(MyMwcObjectBuilder_SmallShip_HackingTool), typeof(MyMwcObjectBuilder_SmallShip_HackingTool_TypesEnum));\n            AddObjectBuilderDefinition(MyMwcObjectBuilderTypeEnum.PrefabBankNode, typeof(MyMwcObjectBuilder_PrefabBankNode), typeof(MyMwcObjectBuilder_PrefabBankNode_TypesEnum));\n            AddObjectBuilderDefinition(MyMwcObjectBuilderTypeEnum.EntityUseProperties, typeof(MyMwcObjectBuilder_EntityUseProperties), (Type)null);\n            AddObjectBuilderDefinition(MyMwcObjectBuilderTypeEnum.PrefabGenerator, typeof(MyMwcObjectBuilder_PrefabGenerator), typeof(MyMwcObjectBuilder_PrefabGenerator_TypesEnum));\n            AddObjectBuilderDefinition(MyMwcObjectBuilderTypeEnum.CargoBox, typeof(MyMwcObjectBuilder_CargoBox), typeof(MyMwcObjectBuilder_CargoBox_TypesEnum));\n            AddObjectBuilderDefinition(MyMwcObjectBuilderTypeEnum.SectorObjectGroups, typeof(MyMwcObjectBuilder_SectorObjectGroups), (Type)null);\n            AddObjectBuilderDefinition(MyMwcObjectBuilderTypeEnum.WaypointNew, typeof(MyMwcObjectBuilder_WaypointNew), (Type)null);\n            AddObjectBuilderDefinition(MyMwcObjectBuilderTypeEnum.MysteriousCube, typeof(MyMwcObjectBuilder_MysteriousCube), typeof(MyMwcObjectBuilder_MysteriousCube_TypesEnum));\n            AddObjectBuilderDefinition(MyMwcObjectBuilderTypeEnum.PrefabScanner, typeof(MyMwcObjectBuilder_PrefabScanner), typeof(MyMwcObjectBuilder_PrefabScanner_TypesEnum));\n            AddObjectBuilderDefinition(MyMwcObjectBuilderTypeEnum.PrefabAlarm, typeof(MyMwcObjectBuilder_PrefabAlarm), typeof(MyMwcObjectBuilder_PrefabAlarm_TypesEnum));\n            AddObjectBuilderDefinition(MyMwcObjectBuilderTypeEnum.PrefabCamera, typeof(MyMwcObjectBuilder_PrefabCamera), typeof(MyMwcObjectBuilder_PrefabCamera_TypesEnum));\n            //AddObjectBuilderDefinition(MyMwcObjectBuilderTypeEnum.PrefabKinematicRotating, typeof(MyMwcObjectBuilder_PrefabKinematicRotating), typeof(MyMwcObjectBuilder_PrefabKinematicRotating_TypesEnum));\n            AddObjectBuilderDefinition(MyMwcObjectBuilderTypeEnum.PrefabKinematicRotatingPart, typeof(MyMwcObjectBuilder_PrefabKinematicRotatingPart), typeof(MyMwcObjectBuilder_PrefabKinematicRotatingPart_TypesEnum));\n            AddObjectBuilderDefinition(MyMwcObjectBuilderTypeEnum.Meteor, typeof(MyMwcObjectBuilder_Meteor), typeof(MyMwcObjectBuilder_Meteor_TypesEnum));\n            //AddObjectBuilderDefinition(MyMwcObjectBuilderTypeEnum.InfluenceSphereRadioactivity, typeof(MyMwcObjectBuilder_InfluenceSphereRadioactivity), (Type)null);\n            AddObjectBuilderDefinition(MyMwcObjectBuilderTypeEnum.InfluenceSphere, typeof(MyMwcObjectBuilder_InfluenceSphere), (Type)null);\n            AddObjectBuilderDefinition(MyMwcObjectBuilderTypeEnum.SmallShipTemplate, typeof(MyMwcObjectBuilder_SmallShipTemplate), (Type)null);\n            AddObjectBuilderDefinition(MyMwcObjectBuilderTypeEnum.SmallShipTemplates, typeof(MyMwcObjectBuilder_SmallShipTemplates), (Type)null);\n            AddObjectBuilderDefinition(MyMwcObjectBuilderTypeEnum.FactionRelationChange, typeof(MyMwcObjectBuilder_FactionRelationChange), (Type)null);\n            AddObjectBuilderDefinition(MyMwcObjectBuilderTypeEnum.RemotePlayer, typeof(MyMwcObjectBuilder_RemotePlayer), (Type)null);\n            AddObjectBuilderDefinition(MyMwcObjectBuilderTypeEnum.VoxelHand_Cylinder, typeof(MyMwcObjectBuilder_VoxelHand_Cylinder), (Type)null);\n            AddObjectBuilderDefinition(MyMwcObjectBuilderTypeEnum.GlobalData, typeof(MyMwcObjectBuilder_GlobalData), (Type)null);\n\n            #region old\n            //AddObjectBuilderToType(MyMwcObjectBuilderTypeEnum.SmallDebris, typeof(MyMwcObjectBuilder_SmallDebris));\n            //AddObjectBuilderToType(MyMwcObjectBuilderTypeEnum.LargeDebrisField, typeof(MyMwcObjectBuilder_LargeDebrisField));\n            //AddObjectBuilderToType(MyMwcObjectBuilderTypeEnum.LargeShip, typeof(MyMwcObjectBuilder_LargeShip));\n            //AddObjectBuilderToType(MyMwcObjectBuilderTypeEnum.SmallShip_Engine, typeof(MyMwcObjectBuilder_SmallShip_Engine));\n            //AddObjectBuilderToType(MyMwcObjectBuilderTypeEnum.SmallShip_Player, typeof(MyMwcObjectBuilder_SmallShip_Player));\n            ////AddObjectBuilderToType(MyMwcObjectBuilderTypeEnum.SmallShip_Ally, typeof(MyMwcObjectBuilder_SmallShip_Ally));\n            //AddObjectBuilderToType(MyMwcObjectBuilderTypeEnum.SmallShip_Bot, typeof(MyMwcObjectBuilder_SmallShip_Bot));\n            //AddObjectBuilderToType(MyMwcObjectBuilderTypeEnum.VoxelMap, typeof(MyMwcObjectBuilder_VoxelMap));\n            //AddObjectBuilderToType(MyMwcObjectBuilderTypeEnum.VoxelMap_MergeMaterial, typeof(MyMwcObjectBuilder_VoxelMap_MergeMaterial));\n            //AddObjectBuilderToType(MyMwcObjectBuilderTypeEnum.VoxelMap_MergeContent, typeof(MyMwcObjectBuilder_VoxelMap_MergeContent));\n            //AddObjectBuilderToType(MyMwcObjectBuilderTypeEnum.Sector, typeof(MyMwcObjectBuilder_Sector));\n            //AddObjectBuilderToType(MyMwcObjectBuilderTypeEnum.VoxelMap_Neighbour, typeof(MyMwcObjectBuilder_VoxelMap_Neighbour));\n            //AddObjectBuilderToType(MyMwcObjectBuilderTypeEnum.VoxelHand_Sphere, typeof(MyMwcObjectBuilder_VoxelHand_Sphere));\n            //AddObjectBuilderToType(MyMwcObjectBuilderTypeEnum.VoxelHand_Box, typeof(MyMwcObjectBuilder_VoxelHand_Box));\n            //AddObjectBuilderToType(MyMwcObjectBuilderTypeEnum.VoxelHand_Cuboid, typeof(MyMwcObjectBuilder_VoxelHand_Cuboid));\n            //AddObjectBuilderToType(MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, typeof(MyMwcObjectBuilder_SmallShip_Ammo));\n            //AddObjectBuilderToType(MyMwcObjectBuilderTypeEnum.LargeShip_Weapon, typeof(MyMwcObjectBuilder_PrefabLargeWeapon));\n            //AddObjectBuilderToType(MyMwcObjectBuilderTypeEnum.SmallShip_Weapon, typeof(MyMwcObjectBuilder_SmallShip_Weapon));\n            //AddObjectBuilderToType(MyMwcObjectBuilderTypeEnum.StaticAsteroid, typeof(MyMwcObjectBuilder_StaticAsteroid));\n            //AddObjectBuilderToType(MyMwcObjectBuilderTypeEnum.SmallShip_Tool, typeof(MyMwcObjectBuilder_SmallShip_Tool));\n            //AddObjectBuilderToType(MyMwcObjectBuilderTypeEnum.SmallShip, typeof(MyMwcObjectBuilder_SmallShip));\n            //AddObjectBuilderToType(MyMwcObjectBuilderTypeEnum.SmallShip_AssignmentOfAmmo, typeof(MyMwcObjectBuilder_AssignmentOfAmmo));\n            //AddObjectBuilderToType(MyMwcObjectBuilderTypeEnum.LargeShip_Ammo, typeof(MyMwcObjectBuilder_LargeShip_Ammo));\n            //AddObjectBuilderToType(MyMwcObjectBuilderTypeEnum.Prefab, typeof(MyMwcObjectBuilder_Prefab));\n            //AddObjectBuilderToType(MyMwcObjectBuilderTypeEnum.PrefabContainer, typeof(MyMwcObjectBuilder_PrefabContainer));\n            //AddObjectBuilderToType(MyMwcObjectBuilderTypeEnum.InfluenceSphereDust, typeof(MyMwcObjectBuilder_InfluenceSphereDust));\n            //AddObjectBuilderToType(MyMwcObjectBuilderTypeEnum.InfluenceSphereSound, typeof(MyMwcObjectBuilder_InfluenceSphereSound));\n            //AddObjectBuilderToType(MyMwcObjectBuilderTypeEnum.PrefabLight, typeof(MyMwcObjectBuilder_PrefabLight));\n            //AddObjectBuilderToType(MyMwcObjectBuilderTypeEnum.SpawnPoint, typeof(MyMwcObjectBuilder_SpawnPoint));\n            //AddObjectBuilderToType(MyMwcObjectBuilderTypeEnum.SmallShip_Armor, typeof(MyMwcObjectBuilder_SmallShip_Armor));\n            //AddObjectBuilderToType(MyMwcObjectBuilderTypeEnum.SmallShip_Radar, typeof(MyMwcObjectBuilder_SmallShip_Radar));\n            //AddObjectBuilderToType(MyMwcObjectBuilderTypeEnum.Ore, typeof(MyMwcObjectBuilder_Ore));\n            //AddObjectBuilderToType(MyMwcObjectBuilderTypeEnum.Blueprint, typeof(MyMwcObjectBuilder_Blueprint));\n            //AddObjectBuilderToType(MyMwcObjectBuilderTypeEnum.FoundationFactory, typeof(MyMwcObjectBuilder_FoundationFactory));\n            //AddObjectBuilderToType(MyMwcObjectBuilderTypeEnum.Inventory, typeof(MyMwcObjectBuilder_Inventory));\n            //AddObjectBuilderToType(MyMwcObjectBuilderTypeEnum.InventoryItem, typeof(MyMwcObjectBuilder_InventoryItem));\n            //AddObjectBuilderToType(MyMwcObjectBuilderTypeEnum.Checkpoint, typeof(MyMwcObjectBuilder_Checkpoint));\n            //AddObjectBuilderToType(MyMwcObjectBuilderTypeEnum.Player, typeof(MyMwcObjectBuilder_Player));\n            //AddObjectBuilderToType(MyMwcObjectBuilderTypeEnum.PlayerStatistics, typeof(MyMwcObjectBuilder_PlayerStatistics));\n            //AddObjectBuilderToType(MyMwcObjectBuilderTypeEnum.PrefabSound, typeof(MyMwcObjectBuilder_PrefabSound));\n            //AddObjectBuilderToType(MyMwcObjectBuilderTypeEnum.PrefabParticles, typeof(MyMwcObjectBuilder_PrefabParticles));\n            //AddObjectBuilderToType(MyMwcObjectBuilderTypeEnum.PrefabKinematic, typeof(MyMwcObjectBuilder_PrefabKinematic));\n            //AddObjectBuilderToType(MyMwcObjectBuilderTypeEnum.Session, typeof(MyMwcObjectBuilder_Session));\n            //AddObjectBuilderToType(MyMwcObjectBuilderTypeEnum.Event, typeof(MyMwcObjectBuilder_Event));\n            //AddObjectBuilderToType(MyMwcObjectBuilderTypeEnum.WayPoint, typeof(MyMwcObjectBuilder_WayPoint));\n            //AddObjectBuilderToType(MyMwcObjectBuilderTypeEnum.WayPointGroup, typeof(MyMwcObjectBuilder_WayPointGroup));\n            //AddObjectBuilderToType(MyMwcObjectBuilderTypeEnum.ObjectToBuild, typeof(MyMwcObjectBuilder_ObjectToBuild));\n            //AddObjectBuilderToType(MyMwcObjectBuilderTypeEnum.ObjectGroup, typeof(MyMwcObjectBuilder_ObjectGroup));\n            //AddObjectBuilderToType(MyMwcObjectBuilderTypeEnum.PrefabLargeShip, typeof(MyMwcObjectBuilder_PrefabLargeShip));\n            //AddObjectBuilderToType(MyMwcObjectBuilderTypeEnum.PrefabLargeWeapon, typeof(MyMwcObjectBuilder_PrefabLargeWeapon));\n            //AddObjectBuilderToType(MyMwcObjectBuilderTypeEnum.PrefabHangar, typeof(MyMwcObjectBuilder_PrefabHangar));\n            //AddObjectBuilderToType(MyMwcObjectBuilderTypeEnum.DummyPoint, typeof(MyMwcObjectBuilder_DummyPoint));\n            //AddObjectBuilderToType(MyMwcObjectBuilderTypeEnum.SnapPointLink, typeof(MyMwcObjectBuilder_SnapPointLink));            \n\n            //AddObjectBuilderSubTypeEnums(MyMwcObjectBuilderTypeEnum.SmallDebris, typeof(MyMwcObjectBuilder_SmallDebris_TypesEnum));\n            //AddObjectBuilderSubTypeEnums(MyMwcObjectBuilderTypeEnum.LargeDebrisField, typeof(MyMwcObjectBuilder_LargeDebrisField_TypesEnum));\n            //AddObjectBuilderSubTypeEnums(MyMwcObjectBuilderTypeEnum.LargeShip, typeof(MyMwcObjectBuilder_LargeShip_TypesEnum));\n            //AddObjectBuilderSubTypeEnums(MyMwcObjectBuilderTypeEnum.SmallShip_Engine, typeof(MyMwcObjectBuilder_SmallShip_Engine_TypesEnum));\n            //AddObjectBuilderSubTypeEnums(MyMwcObjectBuilderTypeEnum.SmallShip_Player, typeof(MyMwcObjectBuilder_SmallShip_TypesEnum));\n            ////AddObjectBuilderSubTypeEnums(MyMwcObjectBuilderTypeEnum.SmallShip_Ally, null);\n            //AddObjectBuilderSubTypeEnums(MyMwcObjectBuilderTypeEnum.SmallShip_Bot, typeof(MyMwcObjectBuilder_SmallShip_TypesEnum));\n            //AddObjectBuilderSubTypeEnums(MyMwcObjectBuilderTypeEnum.VoxelMap, null);\n            //AddObjectBuilderSubTypeEnums(MyMwcObjectBuilderTypeEnum.VoxelMap_MergeMaterial, null);\n            //AddObjectBuilderSubTypeEnums(MyMwcObjectBuilderTypeEnum.VoxelMap_MergeContent,null);\n            //AddObjectBuilderSubTypeEnums(MyMwcObjectBuilderTypeEnum.Sector, null);\n            //AddObjectBuilderSubTypeEnums(MyMwcObjectBuilderTypeEnum.VoxelMap_Neighbour, null);\n            //AddObjectBuilderSubTypeEnums(MyMwcObjectBuilderTypeEnum.VoxelHand_Sphere, null);\n            //AddObjectBuilderSubTypeEnums(MyMwcObjectBuilderTypeEnum.VoxelHand_Box, null);\n            //AddObjectBuilderSubTypeEnums(MyMwcObjectBuilderTypeEnum.VoxelHand_Cuboid, null);\n            //AddObjectBuilderSubTypeEnums(MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, typeof(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum));\n            //AddObjectBuilderSubTypeEnums(MyMwcObjectBuilderTypeEnum.LargeShip_Weapon, typeof(MyMwcObjectBuilder_LargeShip_Weapon_TypesEnum));\n            //AddObjectBuilderSubTypeEnums(MyMwcObjectBuilderTypeEnum.SmallShip_Weapon, typeof(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum));\n            //AddObjectBuilderSubTypeEnums(MyMwcObjectBuilderTypeEnum.StaticAsteroid, typeof(MyMwcObjectBuilder_StaticAsteroid_TypesEnum));\n            //AddObjectBuilderSubTypeEnums(MyMwcObjectBuilderTypeEnum.SmallShip_Tool, typeof(MyMwcObjectBuilder_SmallShip_Tool_TypesEnum));\n            //AddObjectBuilderSubTypeEnums(MyMwcObjectBuilderTypeEnum.SmallShip, typeof(MyMwcObjectBuilder_SmallShip_TypesEnum));\n            //AddObjectBuilderSubTypeEnums(MyMwcObjectBuilderTypeEnum.SmallShip_AssignmentOfAmmo, null);\n            //AddObjectBuilderSubTypeEnums(MyMwcObjectBuilderTypeEnum.LargeShip_Ammo, typeof(MyMwcObjectBuilder_LargeShip_Ammo_TypesEnum));\n            //AddObjectBuilderSubTypeEnums(MyMwcObjectBuilderTypeEnum.Prefab, typeof(MyMwcObjectBuilder_Prefab_TypesEnum));\n            //AddObjectBuilderSubTypeEnums(MyMwcObjectBuilderTypeEnum.PrefabContainer, typeof(MyMwcObjectBuilder_PrefabContainer_TypesEnum));\n            //AddObjectBuilderSubTypeEnums(MyMwcObjectBuilderTypeEnum.InfluenceSphereDust, null);\n            //AddObjectBuilderSubTypeEnums(MyMwcObjectBuilderTypeEnum.InfluenceSphereSound, null);\n            //AddObjectBuilderIDs(MyMwcObjectBuilderTypeEnum.PrefabLight, \n            //                    new int[]{\n            //                        (int)MyMwcObjectBuilder_Prefab_TypesEnum.DEFAULT_LIGHT_0, \n            //                        (int)MyMwcObjectBuilder_Prefab_TypesEnum.P521_A01_LIGHT1, \n            //                        (int)MyMwcObjectBuilder_Prefab_TypesEnum.P521_A02_LIGHT2, \n            //                        (int)MyMwcObjectBuilder_Prefab_TypesEnum.P521_A03_LIGHT3, \n            //                        (int)MyMwcObjectBuilder_Prefab_TypesEnum.P521_A04_LIGHT4\n            //                    });\n            //AddObjectBuilderSubTypeEnums(MyMwcObjectBuilderTypeEnum.SpawnPoint, null);\n            //AddObjectBuilderSubTypeEnums(MyMwcObjectBuilderTypeEnum.SmallShip_Armor, typeof(MyMwcObjectBuilder_SmallShip_Armor_TypesEnum));\n            //AddObjectBuilderSubTypeEnums(MyMwcObjectBuilderTypeEnum.SmallShip_Radar, typeof(MyMwcObjectBuilder_SmallShip_Radar_TypesEnum));\n            //AddObjectBuilderSubTypeEnums(MyMwcObjectBuilderTypeEnum.Ore, typeof(MyMwcObjectBuilder_Ore_TypesEnum));\n            //AddObjectBuilderSubTypeEnums(MyMwcObjectBuilderTypeEnum.Blueprint, typeof(MyMwcObjectBuilder_Blueprint_TypesEnum));\n            //AddObjectBuilderSubTypeEnums(MyMwcObjectBuilderTypeEnum.FoundationFactory, null);\n            //AddObjectBuilderSubTypeEnums(MyMwcObjectBuilderTypeEnum.Inventory, null);\n            //AddObjectBuilderSubTypeEnums(MyMwcObjectBuilderTypeEnum.InventoryItem, null);\n            //AddObjectBuilderSubTypeEnums(MyMwcObjectBuilderTypeEnum.Checkpoint, null);\n            //AddObjectBuilderSubTypeEnums(MyMwcObjectBuilderTypeEnum.Player, null);\n            //AddObjectBuilderSubTypeEnums(MyMwcObjectBuilderTypeEnum.PlayerStatistics, null);\n            //AddObjectBuilderIDs(MyMwcObjectBuilderTypeEnum.PrefabSound, \n            //                    new int[]{\n            //                            (int)MyMwcObjectBuilder_Prefab_TypesEnum.DEFAULT_SOUND_PREFAB_0, \n            //                            (int)MyMwcObjectBuilder_Prefab_TypesEnum.P561_A01_SOUND, \n            //                            (int)MyMwcObjectBuilder_Prefab_TypesEnum.P561_B01_SOUND, \n            //                            (int)MyMwcObjectBuilder_Prefab_TypesEnum.P561_C01_SOUND, \n            //                            (int)MyMwcObjectBuilder_Prefab_TypesEnum.P561_D01_SOUND\n            //                    });\n            //AddObjectBuilderIDs(MyMwcObjectBuilderTypeEnum.PrefabParticles,\n            //                    new int[]{\n            //                            (int) MyMwcObjectBuilder_Prefab_TypesEnum.DEFAULT_PARTICLE_PREFAB_0,\n            //                            (int) MyMwcObjectBuilder_Prefab_TypesEnum.P551_A01_PARTICLES,\n            //                            (int) MyMwcObjectBuilder_Prefab_TypesEnum.P551_B01_PARTICLES,\n            //                            (int) MyMwcObjectBuilder_Prefab_TypesEnum.P551_C01_PARTICLES,\n            //                            (int) MyMwcObjectBuilder_Prefab_TypesEnum.P551_D01_PARTICLES\n            //                    });\n            //AddObjectBuilderIDs(MyMwcObjectBuilderTypeEnum.PrefabKinematic,\n            //                     new int[]{\n            //                            (int) MyMwcObjectBuilder_Prefab_TypesEnum.P415_A01_DOORCASE,\n            //                            (int) MyMwcObjectBuilder_Prefab_TypesEnum.P415_B01_DOORCASE,\n            //                    });\n\n\n            //AddObjectBuilderSubTypeEnums(MyMwcObjectBuilderTypeEnum.Session, null);\n            //AddObjectBuilderSubTypeEnums(MyMwcObjectBuilderTypeEnum.Event, null);\n            //AddObjectBuilderSubTypeEnums(MyMwcObjectBuilderTypeEnum.WayPoint, null);\n            //AddObjectBuilderSubTypeEnums(MyMwcObjectBuilderTypeEnum.WayPointGroup, null);\n            //AddObjectBuilderSubTypeEnums(MyMwcObjectBuilderTypeEnum.ObjectToBuild, null);\n            //AddObjectBuilderSubTypeEnums(MyMwcObjectBuilderTypeEnum.ObjectGroup, null);\n\n            //AddObjectBuilderIDs(MyMwcObjectBuilderTypeEnum.PrefabLargeShip,\n            //     new int[]{\n            //                            (int) MyMwcObjectBuilder_Prefab_TypesEnum.LARGESHIP_ARDANT,\n            //                            (int) MyMwcObjectBuilder_Prefab_TypesEnum.LARGESHIP_KAI,\n            //                            (int) MyMwcObjectBuilder_Prefab_TypesEnum.LARGESHIP_SAYA,\n            //                    });\n            //AddObjectBuilderIDs(MyMwcObjectBuilderTypeEnum.PrefabLargeWeapon,\n            //     new int[]{\n            //                            (int) MyMwcObjectBuilder_Prefab_TypesEnum.P352_A01_LARGESHIP_AUTOCANNON,\n            //                            (int) MyMwcObjectBuilder_Prefab_TypesEnum.P352_A01_LARGESHIP_MACHINEGUN,\n            //                            (int) MyMwcObjectBuilder_Prefab_TypesEnum.P352_A01_LARGESHIP_CIWS,\n            //                            (int) MyMwcObjectBuilder_Prefab_TypesEnum.P352_A01_LARGESHIP_MISSILE_BASIC4,\n            //                            (int) MyMwcObjectBuilder_Prefab_TypesEnum.P352_A01_LARGESHIP_MISSILE_BASIC6,\n            //                            (int) MyMwcObjectBuilder_Prefab_TypesEnum.P352_A01_LARGESHIP_MISSILE_BASIC9,\n            //                            (int) MyMwcObjectBuilder_Prefab_TypesEnum.P352_A02_LARGESHIP_MISSILE_GUIDED4,\n            //                            (int) MyMwcObjectBuilder_Prefab_TypesEnum.P352_A02_LARGESHIP_MISSILE_GUIDED6,\n            //                            (int) MyMwcObjectBuilder_Prefab_TypesEnum.P352_A02_LARGESHIP_MISSILE_GUIDED9,\n            //                            (int) MyMwcObjectBuilder_Prefab_TypesEnum.P351_A01_WEAPON_MOUNT,\n            //                    });\n\n            //AddObjectBuilderIDs(MyMwcObjectBuilderTypeEnum.PrefabHangar,\n            //     new int[]{\n            //                            (int) MyMwcObjectBuilder_Prefab_TypesEnum.P361_A02_HANGAR_PANEL,                                        \n            //                            (int) MyMwcObjectBuilder_Prefab_TypesEnum.P361_A01_SMALL_HANGAR,                                        \n            //                    });\n\n            //AddObjectBuilderSubTypeEnums(MyMwcObjectBuilderTypeEnum.DummyPoint, null);\n\n            //AddObjectBuilderSubTypeEnums(MyMwcObjectBuilderTypeEnum.SnapPointLink, null);\n            #endregion\n\n            //  This is just a check (assertion) if we didn't forget define something\n            foreach (ushort num in Enum.GetValues(typeof(MyMwcObjectBuilderTypeEnum)))\n            {\n                MyCommonDebugUtils.AssertDebug(m_objectBuilderDefinitions[num] != null);\n                MyCommonDebugUtils.AssertDebug(m_objectBuilderDefinitions[num].Ids != null);\n                MyCommonDebugUtils.AssertDebug(CreateNewObject((MyMwcObjectBuilderTypeEnum)num).GetObjectBuilderType() == (MyMwcObjectBuilderTypeEnum)num);\n\n                //MyCommonDebugUtils.AssertDebug(m_objectBuilderToType[num] != null);\n                //MyCommonDebugUtils.AssertDebug(m_objectBuilderIDs[num] != null && m_objectBuilderIDs[num].Length != 0);\n            }\n        }\n\n        // Used when loading objects from different sector\n        // EntityIds must be remapped to prevent id collision with existing entities\n        // Parent must call this on children! (e.g. prefab container on prefabs)\n        public virtual void RemapEntityIds(IMyEntityIdRemapContext remapContext)\n        {\n            EntityId = remapContext.RemapEntityId(EntityId);\n        }\n\n        public MyMwcObjectBuilder_Base Clone()\n        {\n            // Write\n            m_cloneWriter.Seek(0, SeekOrigin.Begin);\n            Write(m_cloneWriter);\n\n            // Read\n            m_cloneStream.Seek(0, SeekOrigin.Begin);\n\n            var result = MyMwcObjectBuilder_Base.ReadAndCreateNewObject(m_cloneReader, fakeEp);\n            if (result == null || !result.Read(m_cloneReader, fakeEp, MyMwcFinalBuildConstants.SERVER_PROTOCOL_VERSION))\n            {\n                throw new InvalidOperationException(\"Clone object error, (de)serialization is broken!\");\n            }\n            return result;\n        }\n\n        // this method is there because we need load and check asserts when the game started\n        public static void Check()\n        {\n            MyMwcLog.WriteLine(\"MyMwcObjectBuilder_Base.Check()\");\n        }\n\n        /// <summary>\n        /// Clears entity id for this object builder and for all childs\n        /// </summary>\n        public virtual void ClearEntityId()\n        {\n            this.EntityId = null;\n        }\n\n        //static void AddObjectBuilderToType(MyMwcObjectBuilderTypeEnum objectBuilderType, Type type)\n        //{\n        //    m_objectBuilderToType[(int)objectBuilderType] = type;\n        //}\n\n        protected bool NetworkError(string text = null)\n        {\n            // Only store first error\n            if (String.IsNullOrEmpty(m_networkError))\n            {\n                m_networkError = \"Object builder (de)serialization error\";\n                if (!String.IsNullOrEmpty(text))\n                {\n                    m_networkError += \": \" + text;\n                }\n\n                if (MyMwcFinalBuildConstants.IS_DEVELOP)\n                {\n                    m_networkError += Environment.NewLine + \"Stack trace: \" + Environment.NewLine + Environment.StackTrace;\n                }\n                else\n                {\n                    m_networkError += Environment.NewLine + \"Error in type: \" + this.GetObjectBuilderType().ToString();\n                }\n                m_networkError += Environment.NewLine;\n            }\n            return false;\n        }\n\n        static void AddObjectBuilderDefinition(MyMwcObjectBuilderTypeEnum objectBuilderType, Type type, int[] ids)\n        {\n            m_objectBuilderDefinitions[(int)objectBuilderType] = new MyMwcObjectBuilderDefinition(type, ids);\n        }\n\n        static void AddObjectBuilderDefinition(MyMwcObjectBuilderTypeEnum objectBuilderType, Type type, Type enumType)\n        {\n            if (enumType == null)\n            {\n                AddObjectBuilderDefinition(objectBuilderType, type, new int[] { 0 });\n            }\n            else\n            {\n                MyCommonDebugUtils.AssertDebug(enumType.IsEnum);\n\n                AddObjectBuilderDefinition(objectBuilderType, type, GetIntArrayFromEnum(enumType));\n            }\n        }\n\n        public static Type GetObjectBuilderToType(MyMwcObjectBuilderTypeEnum objectBuilderType)\n        {\n            //return m_objectBuilderToType[(int)objectBuilderType];\n            return m_objectBuilderDefinitions[(int)objectBuilderType].Type;\n        }\n\n        //static void AddObjectBuilderIDs(MyMwcObjectBuilderTypeEnum objectBuilderType, int[] ids)\n        //{\n        //    m_objectBuilderIDs[(int) objectBuilderType] = ids;\n        //}\n\n        //static void AddObjectBuilderSubTypeEnums(MyMwcObjectBuilderTypeEnum objectBuilderType, Type enumType)\n        //{\n        //    if(enumType == null)\n        //    {\n        //        AddObjectBuilderIDs(objectBuilderType, new int[]{0});\n        //    }\n        //    else\n        //    {\n        //        System.Diagnostics.Debug.Assert(enumType.IsEnum);\n\n        //        AddObjectBuilderIDs(objectBuilderType, GetIntArrayFromEnum(enumType));\n        //    }\n        //}\n\n        static int[] GetIntArrayFromEnum(Type enumType)\n        {\n            List<int> intValues = new List<int>();\n\n            Array values = Enum.GetValues(enumType);\n            Type underlyingType = Enum.GetUnderlyingType(enumType);\n            if (underlyingType == typeof(System.Byte))\n            {\n                foreach (byte value in values)\n                {\n                    intValues.Add(value);\n                }\n            }\n            else if (underlyingType == typeof(System.Int16))\n            {\n                foreach (short value in values)\n                {\n                    intValues.Add(value);\n                }\n            }\n            else if (underlyingType == typeof(System.UInt16))\n            {\n                foreach (ushort value in values)\n                {\n                    intValues.Add(value);\n                }\n            }\n            else if (underlyingType == typeof(System.Int32))\n            {\n                foreach (int value in values)\n                {\n                    intValues.Add(value);\n                }\n            }\n\n            return intValues.ToArray();\n        }\n\n        public static int[] GetObjectBuilderIDs(MyMwcObjectBuilderTypeEnum objectBuilderType)\n        {\n            //return m_objectBuilderIDs[(int) objectBuilderType];\n            return m_objectBuilderDefinitions[(ushort)objectBuilderType].Ids;\n        }\n\n        //[System.Obsolete(\"WCF needs some internal members for (de)serialization\")]\n        //public static MyMwcObjectBuilder_Base ReadAndCreateNewObjectWrapper(BinaryReader binaryReader, EndPoint senderEndPoint)\n        //{\n        //    return ReadAndCreateNewObject(binaryReader, senderEndPoint);\n        //}\n\n        //  Reads object type and then creates it\n        //  If error occures, null is returned.\n        internal static MyMwcObjectBuilder_Base ReadAndCreateNewObject(BinaryReader binaryReader, EndPoint senderEndPoint)\n        {\n            MyMwcObjectBuilderTypeEnum? objectBuilderType = MyMwcMessageIn.ReadObjectBuilderTypeEnumEx(binaryReader, senderEndPoint);\n            if (objectBuilderType == null) return null;\n            return CreateNewObject(objectBuilderType.Value);\n        }\n\n        //  Allocate new object builder according to specified type and returns it\n        static MyMwcObjectBuilder_Base CreateNewObject(MyMwcObjectBuilderTypeEnum objectBuilderType)\n        {\n            return (MyMwcObjectBuilder_Base)Activator.CreateInstance(GetObjectBuilderToType(objectBuilderType), true);\n        }\n\n        public static MyMwcObjectBuilder_Base CreateNewObject(MyMwcObjectBuilderTypeEnum objectBuilderType, int? objectBuilderId)\n        {\n            MyMwcObjectBuilder_Base objectBuilder = (MyMwcObjectBuilder_Base)Activator.CreateInstance(GetObjectBuilderToType(objectBuilderType), true);\n            objectBuilder.SetDefaultProperties(); // Health for prefabs etc\n            objectBuilder.SetObjectBuilderId(objectBuilderId);\n            return objectBuilder;\n        }\n\n        public MyPersistentEntityFlags PersistentFlags { get; set; }\n\n        public virtual bool Enabled\n        {\n            get\n            {\n                return (PersistentFlags & MyPersistentEntityFlags.Enabled) != 0;\n            }\n            set\n            {\n                if (value)\n                {\n                    PersistentFlags |= MyPersistentEntityFlags.Enabled;\n                }\n                else\n                {\n                    PersistentFlags &= (~MyPersistentEntityFlags.Enabled);\n                }\n            }\n        }\n\n        public virtual bool IsDestructible\n        {\n            get\n            {\n                return (PersistentFlags & MyPersistentEntityFlags.Destructible) != 0;\n            }\n            set\n            {\n                if (value)\n                {\n                    PersistentFlags |= MyPersistentEntityFlags.Destructible;\n                }\n                else\n                {\n                    PersistentFlags &= (~MyPersistentEntityFlags.Destructible);\n                }\n            }\n        }\n\n        private uint? eid;\n        public uint? EntityId\n        {\n            get { return eid; }\n            set { eid = value; }\n        }\n\n        public string Name;\n\n        public abstract MyMwcObjectBuilderTypeEnum GetObjectBuilderType();\n\n        // Most object builders contain enum values, that are definition of concrete objects of given object builder type. For the DB purpose,\n        // int is used, but for networking, most of these enums have different data type(ushort, byte, etc.). Some object builders does not have this\n        // enum(in its category, there wont be any more types of objects), thus it can be null.\n        public virtual int? GetObjectBuilderId()\n        {\n            return null;\n        }\n\n        // Each object builder will be able to uniquely set its definition of conrete object this way\n        internal virtual void SetObjectBuilderIdInternal(int? objectBuilderId)\n        {\n        }\n\n        // Set default properties, for example health for prefabs\n        public virtual void SetDefaultProperties()\n        {\n        }\n\n        public void SetObjectBuilderId(int? objectBuilderId)\n        {\n            // we need validate id first\n            int id = objectBuilderId == null ? 0 : objectBuilderId.Value;\n            MyCommonDebugUtils.AssertDebug(IsObjectBuilderIdValid(id));\n\n            SetObjectBuilderIdInternal(objectBuilderId);\n        }\n\n        //public virtual bool IsObjectBuilderIdValid(int objectBuilderId)\n        //{\n        //    return true;\n        //}\n\n        public bool IsObjectBuilderIdValid(int objectBuilderId)\n        {\n            return IsObjectBuilderIdValid(GetObjectBuilderType(), objectBuilderId);\n        }\n\n        public static bool IsObjectBuilderIdValid(MyMwcObjectBuilderTypeEnum objectBuilderType, int objectBuilderId)\n        {\n            foreach (int definedId in m_objectBuilderDefinitions[(int)objectBuilderType].Ids)\n            {\n                if (definedId == objectBuilderId)\n                {\n                    return true;\n                }\n            }\n            return false;\n        }\n\n        //  Write this object into message-out\n        internal virtual void Write(BinaryWriter binaryWriter)\n        {\n            MyMwcLog.IfNetVerbose_AddToLog(\"MyMwcObjectBuilder_Base.GetObjectBuilderType: \" + GetObjectBuilderType());\n            MyMwcMessageOut.WriteObjectBuilderTypeEnum(GetObjectBuilderType(), binaryWriter);\n\n            MyMwcLog.IfNetVerbose_AddToLog(\"MyMwcObjectBuilder_Base.EntityId.HasValue: \" + this.EntityId.HasValue);\n            MyMwcMessageOut.WriteBool(this.EntityId.HasValue, binaryWriter);\n            if (this.EntityId.HasValue)\n            {\n                MyMwcLog.IfNetVerbose_AddToLog(\"MyMwcObjectBuilder_Base.EntityId.Value: \" + this.EntityId.Value);\n                MyMwcMessageOut.WriteUInt32(this.EntityId.Value, binaryWriter);\n            }\n\n            if (Name != null)\n            {\n                MyMwcMessageOut.WriteBool(true, binaryWriter);\n                MyMwcLog.IfNetVerbose_AddToLog(\"MyMwcObjectBuilder_Base.Name: \" + this.Name);\n                MyMwcMessageOut.WriteString(Name, binaryWriter);\n            }\n            else\n            {\n                MyMwcLog.IfNetVerbose_AddToLog(\"MyMwcObjectBuilder_Base.Name: \" + \"null\");\n                MyMwcMessageOut.WriteBool(false, binaryWriter);\n            }\n\n            // Flags\n            MyMwcLog.IfNetVerbose_AddToLog(\"MyMwcObjectBuilder_Base.Flags: \" + this.PersistentFlags);\n            MyMwcMessageOut.WriteInt32((int)this.PersistentFlags, binaryWriter);\n        }\n\n        //  Read this object from message-in\n        //  Return true if reading was successful. False if reading one of the parameters failed - therefore if object is incomplete.\n        internal virtual bool Read(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n        {\n            if (gameVersion < FIRST_COMPATIBILITY_VERSION)\n                return false;\n\n            if (gameVersion > 01085000)\n            {\n                return Read_Current(binaryReader, senderEndPoint, gameVersion);\n            }\n            else\n            {\n                return Read_01085000(binaryReader, senderEndPoint, gameVersion);\n            }\n        }\n\n        private bool Read_Current(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n        {\n            //  Read method in this base class always returns true, because it actually doesn't read nothing\n            // It does, it reads EntityId\n\n            bool? hasId = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n            if (!hasId.HasValue) return NetworkError(); // Cannot read bool - whether entity id is null or not\n            MyMwcLog.IfNetVerbose_AddToLog(\"MyMwcObjectBuilder_Base.EntityId.HasValue: \" + hasId.Value);\n\n            // Testing whether entity id is null\n            if (hasId.Value)\n            {\n                // entity id has value - read the value\n                uint? entityId = MyMwcMessageIn.ReadUInt32Ex(binaryReader, senderEndPoint);\n                if (!entityId.HasValue) return NetworkError(); // Cannot read entityId\n\n                MyMwcLog.IfNetVerbose_AddToLog(\"MyMwcObjectBuilder_Base.EntityId.Value: \" + entityId.Value);\n                this.EntityId = entityId.Value;\n            }\n            else\n            {\n                this.EntityId = null;\n            }\n\n            bool? isNamed = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n            if (!isNamed.HasValue) return NetworkError();\n            if (isNamed.Value)\n            {\n                string name = MyMwcMessageIn.ReadStringEx(binaryReader, senderEndPoint);\n                if (name == null) return NetworkError();\n                MyMwcLog.IfNetVerbose_AddToLog(\"MyMwcObjectBuilder_Base.Name: \" + name);\n                Name = name;\n            }\n            else\n            {\n                MyMwcLog.IfNetVerbose_AddToLog(\"MyMwcObjectBuilder_Base.Name: \" + \"null\");\n                Name = null;\n            }\n\n            // Flags\n            int? flagsResult = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);\n            if (!flagsResult.HasValue) return NetworkError();\n\n            this.PersistentFlags = (MyPersistentEntityFlags)flagsResult.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"MyMwcObjectBuilder_Base.Flags: \" + this.PersistentFlags);\n\n            return true;\n        }\n\n        private bool Read_01085000(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n        {\n            //  Read method in this base class always returns true, because it actually doesn't read nothing\n            // It does, it reads EntityId\n\n            bool? hasId = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n            if (!hasId.HasValue) return NetworkError(); // Cannot read bool - whether entity id is null or not\n            MyMwcLog.IfNetVerbose_AddToLog(\"MyMwcObjectBuilder_Base.EntityId.HasValue: \" + hasId.Value);\n\n            // Testing whether entity id is null\n            if (hasId.Value)\n            {\n                // entity id has value - read the value\n                uint? entityId = MyMwcMessageIn.ReadUInt32Ex(binaryReader, senderEndPoint);\n                if (!entityId.HasValue) return NetworkError(); // Cannot read entityId\n\n                MyMwcLog.IfNetVerbose_AddToLog(\"MyMwcObjectBuilder_Base.EntityId.Value: \" + entityId.Value);\n                this.EntityId = entityId.Value;\n            }\n            else\n            {\n                this.EntityId = null;\n            }\n\n            bool? isNamed = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n            if (!isNamed.HasValue) return NetworkError();\n            if (isNamed.Value)\n            {\n                string name = MyMwcMessageIn.ReadStringEx(binaryReader, senderEndPoint);\n                if (name == null) return NetworkError();\n                MyMwcLog.IfNetVerbose_AddToLog(\"MyMwcObjectBuilder_Base.Name: \" + name);\n                Name = name;\n            }\n            else\n            {\n                MyMwcLog.IfNetVerbose_AddToLog(\"MyMwcObjectBuilder_Base.Name: \" + \"null\");\n                Name = null;\n            }\n\n            // Flags\n            int? flagsResult = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);\n            if (!flagsResult.HasValue) return NetworkError();\n\n            this.PersistentFlags = (MyPersistentEntityFlags)flagsResult.Value;\n            this.PersistentFlags |= MyPersistentEntityFlags.ActivatedOnDifficultyEasy | MyPersistentEntityFlags.ActivatedOnDifficultyNormal | MyPersistentEntityFlags.ActivatedOnDifficultyHard;\n            if (this is MyMwcObjectBuilder_CargoBox || this is MyMwcObjectBuilder_SmallShip) \n            {\n                this.PersistentFlags |= MyPersistentEntityFlags.DisplayOnHud;\n            }\n            MyMwcLog.IfNetVerbose_AddToLog(\"MyMwcObjectBuilder_Base.Flags: \" + this.PersistentFlags);\n\n            return true;\n        }\n\n        public static T FromBytes<T>(byte[] bytes, int gameVersion = MyMwcFinalBuildConstants.SERVER_PROTOCOL_VERSION)\n            where T : MyMwcObjectBuilder_Base\n        {\n            var fakeEndpoint = new System.Net.IPEndPoint(0, 0);\n\n            using (MemoryStream ms = new MemoryStream(bytes))\n            using (GZipStream gzip = new GZipStream(ms, CompressionMode.Decompress))\n            using (BinaryReader reader = new BinaryReader(gzip))\n            {\n                T result = MyMwcObjectBuilder_Base.ReadAndCreateNewObject(reader, fakeEndpoint) as T;\n                if (result == null || result.Read(reader, fakeEndpoint, gameVersion) == false)\n                {\n                    MyMwcLog.WriteLine(\"Networking deserialization error: \" + Environment.NewLine + GetAndClearLastError());\n                    return null;\n                }\n                return result;\n            }\n        }\n\n        public byte[] ToBytes()\n        {\n            // NOTE: To achieve better compression (30% ratio compared to 90%), \n            // it necessary to write data to uncompressed stream and then copy uncompressed stream to compressed stream\n            // It's because GZipStream compress each data written to stream separatelly\n\n            byte[] buffer = new byte[1024 * 1024];\n            long remaining = 0;\n\n            using (MemoryStream dataStream = new MemoryStream())\n            using (BinaryWriter writer = new BinaryWriter(dataStream))\n            {\n                this.Write(writer); // First write data to uncompressed stream\n\n                using (MemoryStream compressed = new MemoryStream())\n                using (GZipStream gzip = new GZipStream(compressed, CompressionMode.Compress, true))\n                {\n                    remaining = dataStream.Length;\n                    dataStream.Position = 0;\n\n                    while (remaining > 0)\n                    {\n                        //var dataBytes = dataStream.ToArray();\n                        long read = dataStream.Read(buffer, 0, (int)Math.Min(remaining, buffer.Length));\n                        \n                        //gzip.Write(dataBytes, 0, dataBytes.Length); // Write uncompressed stream to compressed stream\n                        gzip.Write(buffer, 0, (int)read); // Write uncompressed stream to compressed stream\n\n                        remaining -= read;\n                    }\n                    gzip.Close();\n                    return compressed.ToArray();\n                }\n            }\n            /*\n            using (MemoryStream compressed = new MemoryStream())\n            {\n                using (GZipStream gzip = new GZipStream(compressed, CompressionMode.Compress, true))\n                {\n                    using (BinaryWriter writer = new BinaryWriter(gzip))\n                    {\n                        this.Write(writer); // First write data to uncompressed stream\n                    }\n                }\n\n                return compressed.ToArray();\n            }*/\n\n        }\n\n        public static string GetAndClearLastError()\n        {\n            var result = m_networkError;\n            m_networkError = null;\n            return result;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/ObjectBuilders/MyMwcObjectBuilder_Checkpoint.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing KeenSoftwareHouse.Library.Trace;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\n\nnamespace MinerWars.CommonLIB.AppCode.ObjectBuilders\n{\n    public class MyMwcObjectBuilder_Checkpoint : MyMwcObjectBuilder_Base\n    {\n        public MyMwcObjectBuilder_Checkpoint()\n            : base()\n        {\n            Dictionary = new Dictionary<string, string>();\n        }\n\n        /// <summary>\n        /// Is null when loading sector which is not in database\n        /// </summary>\n        public MyMwcObjectBuilder_Sector SectorObjectBuilder { get; set; }\n        public MyMwcObjectBuilder_Player PlayerObjectBuilder { get; set; }\n\n        public List<MyMwcObjectBuilder_Event> EventLogObjectBuilder { get; set; }\n        public List<MyMwcObjectBuilder_FactionRelationChange> FactionRelationChangesBuilder { get; set; }\n\n        public MyMwcObjectBuilder_Inventory InventoryObjectBuilder { get; set; }\n\n        public Dictionary<string, string> Dictionary { get; set; }\n\n        /// <summary>\n        /// Gets or sets object builder of session which is parent of this checkpoint.\n        /// </summary>\n        public MyMwcObjectBuilder_Session SessionObjectBuilder { get; set; }\n\n        public DateTime GameTime { get; set; }\n\n        public int ActiveMissionID { get; set; }\n\n        public MyMwcSectorIdentifier CurrentSector;\n\n        [Obsolete(\"Checkpoint name is no longer used and is always null\")]\n        public string CheckpointName { get { return null; } set { } }\n\n        public override void RemapEntityIds(IMyEntityIdRemapContext remapContext)\n        {\n            base.RemapEntityIds(remapContext);\n            SectorObjectBuilder.RemapEntityIds(remapContext);\n            PlayerObjectBuilder.RemapEntityIds(remapContext);\n            InventoryObjectBuilder.RemapEntityIds(remapContext);\n            SessionObjectBuilder.RemapEntityIds(remapContext);\n            foreach (var evnt in EventLogObjectBuilder)\n            {\n                evnt.RemapEntityIds(remapContext);\n            }\n        }\n\n        public override MyMwcObjectBuilderTypeEnum GetObjectBuilderType()\n        {\n            return MyMwcObjectBuilderTypeEnum.Checkpoint;\n        }\n\n        [System.Diagnostics.Conditional(\"DEBUG\")]\n        public void WriteTrace()\n        {\n            if (SectorObjectBuilder != null)\n            {\n                SectorObjectBuilder.WriteTrace();\n            }\n            else\n            {\n                MyTrace.Send(TraceWindow.Saving, \"No sector object builder\");\n            }\n            InventoryObjectBuilder.WriteTrace();\n        }\n\n        internal override void Write(System.IO.BinaryWriter binaryWriter)\n        {\n            base.Write(binaryWriter);\n\n            // Sector ob\n            bool sectorObjectBuilderExists = SectorObjectBuilder != null;\n            MyMwcMessageOut.WriteBool(sectorObjectBuilderExists, binaryWriter);\n            MyMwcLog.IfNetVerbose_AddToLog(\"Sector exists \" + sectorObjectBuilderExists);\n\n            if (sectorObjectBuilderExists)\n            {\n                SectorObjectBuilder.Write(binaryWriter);\n                MyMwcLog.IfNetVerbose_AddToLog(\"Sector written\");\n            }\n\n            // Gametime\n            MyMwcMessageOut.WriteDateTime(this.GameTime, binaryWriter);\n            MyMwcLog.IfNetVerbose_AddToLog(\"Gametime: \" + this.GameTime);\n\n            // Player ob\n            bool playerObjectBuilderExists = PlayerObjectBuilder != null;\n            MyMwcMessageOut.WriteBool(playerObjectBuilderExists, binaryWriter);\n            MyMwcLog.IfNetVerbose_AddToLog(\"Player exists \" + playerObjectBuilderExists);\n\n            if (playerObjectBuilderExists)\n            {\n                PlayerObjectBuilder.Write(binaryWriter);\n                MyMwcLog.IfNetVerbose_AddToLog(\"Player written\");\n            }\n\n            // Session ob\n            bool sessionObjectBuilderExists = SessionObjectBuilder != null;\n            MyMwcMessageOut.WriteBool(sessionObjectBuilderExists, binaryWriter);\n            MyMwcLog.IfNetVerbose_AddToLog(\"Session exists \" + sessionObjectBuilderExists);\n\n            if (sessionObjectBuilderExists)\n            {\n                SessionObjectBuilder.Write(binaryWriter);\n                MyMwcLog.IfNetVerbose_AddToLog(\"Session written\");\n            }\n\n            // Active Mission\n            MyMwcMessageOut.WriteInt32(ActiveMissionID, binaryWriter);\n            MyMwcLog.IfNetVerbose_AddToLog(\"Active Mission ID: \" + this.ActiveMissionID);\n\n            //  Events\n            int countEvents = EventLogObjectBuilder == null ? 0 : EventLogObjectBuilder.Count;\n            MyMwcLog.IfNetVerbose_AddToLog(\"Count Events: \" + countEvents);\n            MyMwcMessageOut.WriteInt32(countEvents, binaryWriter);\n            for (int i = 0; i < countEvents; i++)\n            {\n                EventLogObjectBuilder[i].Write(binaryWriter);\n            }\n\n            //  Faction relation changes\n            int countFactionRelationChanges = FactionRelationChangesBuilder == null ? 0 : FactionRelationChangesBuilder.Count;\n            MyMwcLog.IfNetVerbose_AddToLog(\"Faction Relation Changes : \" + countFactionRelationChanges);\n            MyMwcMessageOut.WriteInt32(countFactionRelationChanges, binaryWriter);\n            for (int i = 0; i < countFactionRelationChanges; i++)\n            {\n                FactionRelationChangesBuilder[i].Write(binaryWriter);\n            }\n\n            // Inventory\n            bool inventoryObjectBuilderExists = InventoryObjectBuilder != null;\n            MyMwcMessageOut.WriteBool(inventoryObjectBuilderExists, binaryWriter);\n            MyMwcLog.IfNetVerbose_AddToLog(\"Inventory exists \" + inventoryObjectBuilderExists);\n\n            if (inventoryObjectBuilderExists)\n            {\n                InventoryObjectBuilder.Write(binaryWriter);\n                MyMwcLog.IfNetVerbose_AddToLog(\"Inventory written\");\n            }\n\n            // Current sector identifier\n            MyMwcMessageOut.WriteSectorIdentifier(this.CurrentSector, binaryWriter);\n            MyMwcLog.IfNetVerbose_AddToLog(\"Current sector: \" + CurrentSector.ToString());\n\n            // Checkpoint name\n            bool hasName = CheckpointName != null;\n            MyMwcMessageOut.WriteBool(hasName, binaryWriter);\n            MyMwcLog.IfNetVerbose_AddToLog(\"Has name: \" + hasName);\n            if (hasName)\n            {\n                MyMwcMessageOut.WriteString(CheckpointName, binaryWriter);\n                MyMwcLog.IfNetVerbose_AddToLog(\"Name: \" + CheckpointName.ToString());\n            }\n\n            MyMessageHelper.WriteStringDictionary(Dictionary, binaryWriter);\n        }\n\n        internal override bool Read(System.IO.BinaryReader binaryReader, System.Net.EndPoint senderEndPoint, int gameVersion)\n        {\n            if (!base.Read(binaryReader, senderEndPoint, gameVersion)) return NetworkError();\n\n            // Sector ob\n            bool? sectorBuilderExists = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n            if (!sectorBuilderExists.HasValue) return NetworkError();\n\n            MyMwcLog.IfNetVerbose_AddToLog(\"Sector exists \" + (SectorObjectBuilder != null));\n\n            if (sectorBuilderExists.Value)\n            {\n                SectorObjectBuilder = MyMwcObjectBuilder_Base.ReadAndCreateNewObject(binaryReader, senderEndPoint) as MyMwcObjectBuilder_Sector;\n                if (SectorObjectBuilder == null || !SectorObjectBuilder.Read(binaryReader, senderEndPoint, gameVersion)) return NetworkError();\n                MyMwcLog.IfNetVerbose_AddToLog(\"Sector read\");\n            }\n\n            // Gametime\n            DateTime? dateTime = MyMwcMessageIn.ReadDateTimeEx(binaryReader, senderEndPoint);\n            if (!dateTime.HasValue) return NetworkError();\n            this.GameTime = dateTime.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"Gametime: \" + this.GameTime);\n\n            // Player ob\n            bool? playerBuilderExists = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n            if (!playerBuilderExists.HasValue) return NetworkError();\n\n            MyMwcLog.IfNetVerbose_AddToLog(\"Player exists \" + (PlayerObjectBuilder != null));\n\n            if (playerBuilderExists.Value)\n            {\n                PlayerObjectBuilder = MyMwcObjectBuilder_Base.ReadAndCreateNewObject(binaryReader, senderEndPoint) as MyMwcObjectBuilder_Player;\n                if (PlayerObjectBuilder == null || !PlayerObjectBuilder.Read(binaryReader, senderEndPoint, gameVersion)) return NetworkError();\n                MyMwcLog.IfNetVerbose_AddToLog(\"Player read\");\n            }\n\n            // Session ob\n            bool? sessionBuilderExists = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n            if (!sessionBuilderExists.HasValue) return NetworkError();\n\n            MyMwcLog.IfNetVerbose_AddToLog(\"Session exists \" + (SessionObjectBuilder != null));\n\n            if (sessionBuilderExists.Value)\n            {\n                SessionObjectBuilder = MyMwcObjectBuilder_Base.ReadAndCreateNewObject(binaryReader, senderEndPoint) as MyMwcObjectBuilder_Session;\n                if (SessionObjectBuilder == null || !SessionObjectBuilder.Read(binaryReader, senderEndPoint, gameVersion)) return NetworkError();\n                MyMwcLog.IfNetVerbose_AddToLog(\"Session read\");\n            }\n\n            // Active mission\n            int? activeMissionID = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);\n            if (!activeMissionID.HasValue) return NetworkError();\n            this.ActiveMissionID = activeMissionID.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"Active Mission ID: \" + this.ActiveMissionID);\n\n            // Events\n            int? countEvents = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);\n            if (countEvents == null) return NetworkError();\n            MyMwcLog.IfNetVerbose_AddToLog(\"Count Events: \" + countEvents);\n            EventLogObjectBuilder = new List<MyMwcObjectBuilder_Event>(countEvents.Value);\n            for (int i = 0; i < countEvents; i++)\n            {\n                var eventItem = ReadAndCreateNewObject(binaryReader, senderEndPoint) as MyMwcObjectBuilder_Event;\n                if (eventItem == null) return NetworkError();\n                if (eventItem.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n                EventLogObjectBuilder.Add(eventItem);\n            }\n\n            // Faction relation changes\n            int? countFactionRelationChanges = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);\n            if (countFactionRelationChanges == null) return NetworkError();\n            MyMwcLog.IfNetVerbose_AddToLog(\"Factoin Relation Changes: \" + countFactionRelationChanges);\n            FactionRelationChangesBuilder = new List<MyMwcObjectBuilder_FactionRelationChange>(countFactionRelationChanges.Value);\n            for (int i = 0; i < countFactionRelationChanges; i++)\n            {\n                var factionRelationChangeItem = ReadAndCreateNewObject(binaryReader, senderEndPoint) as MyMwcObjectBuilder_FactionRelationChange;\n                if (factionRelationChangeItem == null) return NetworkError();\n                if (factionRelationChangeItem.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n                FactionRelationChangesBuilder.Add(factionRelationChangeItem);\n            }\n\n            // Inventory\n            bool? inventoryBuilderExists = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n            if (!inventoryBuilderExists.HasValue) return NetworkError();\n\n            MyMwcLog.IfNetVerbose_AddToLog(\"Inventory exists \" + (InventoryObjectBuilder != null));\n\n            if (inventoryBuilderExists.Value)\n            {\n                InventoryObjectBuilder = MyMwcObjectBuilder_Base.ReadAndCreateNewObject(binaryReader, senderEndPoint) as MyMwcObjectBuilder_Inventory;\n                if (InventoryObjectBuilder == null || !InventoryObjectBuilder.Read(binaryReader, senderEndPoint, gameVersion)) return NetworkError();\n                MyMwcLog.IfNetVerbose_AddToLog(\"Inventory read\");\n            }\n\n            // Current sector identifier\n            MyMwcSectorIdentifier? currentSector = MyMwcMessageIn.ReadSectorIdentifierEx(binaryReader, senderEndPoint);\n            if (!currentSector.HasValue) return NetworkError();\n            this.CurrentSector = currentSector.Value;\n\n            // Checkpoint name\n            bool? hasName = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n            if (!hasName.HasValue) return NetworkError();\n\n            if (hasName.Value)\n            {\n                CheckpointName = MyMwcMessageIn.ReadStringEx(binaryReader, senderEndPoint);\n                if (CheckpointName == null) return NetworkError(); // Has name set and name null? That's can't happen\n            }\n            else\n            {\n                CheckpointName = null;\n            }\n\n            Dictionary = MyMessageHelper.ReadStringDictionary(binaryReader, senderEndPoint);\n            if (Dictionary == null) return NetworkError();\n\n            return true;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/ObjectBuilders/MyMwcObjectBuilder_FactionRelationChange.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.IO;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing System.Net;\n\nnamespace MinerWars.CommonLIB.AppCode.ObjectBuilders\n{\n    public class MyMwcObjectBuilder_FactionRelationChange : MyMwcObjectBuilder_Base\n    {\n        public MyMwcObjectBuilder_FactionEnum Faction1 { get; set; }\n        public MyMwcObjectBuilder_FactionEnum Faction2 { get; set; }\n        public float Relation { get; set; }\n\n        internal MyMwcObjectBuilder_FactionRelationChange()\n            : base()\n        {\n        }\n\n        public MyMwcObjectBuilder_FactionRelationChange(MyMwcObjectBuilder_FactionEnum faction1, MyMwcObjectBuilder_FactionEnum faction2, float relation) \n        {\n            Faction1 = faction1;\n            Faction2 = faction2;\n            Relation = relation;\n        }        \n\n        internal override void Write(BinaryWriter binaryWriter)\n        {\n            base.Write(binaryWriter);\n\n            MyMwcMessageOut.WriteInt32((int)Faction1, binaryWriter);\n            MyMwcMessageOut.WriteInt32((int)Faction2, binaryWriter);\n            MyMwcMessageOut.WriteFloat(Relation, binaryWriter);\n        }\n\n        internal override bool Read(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n        {\n            if (!base.Read(binaryReader, senderEndPoint, gameVersion)) return NetworkError();\n\n            int? faction1 = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);\n            if (!faction1.HasValue) return NetworkError();\n            Faction1 = (MyMwcObjectBuilder_FactionEnum)faction1.Value;\n\n            int? faction2 = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);\n            if (!faction2.HasValue) return NetworkError();\n            Faction2 = (MyMwcObjectBuilder_FactionEnum)faction2.Value;\n\n            float? relation = MyMwcMessageIn.ReadFloat(binaryReader);\n            if (!relation.HasValue) return NetworkError();\n            Relation = relation.Value;\n\n            return true;\n        }\n\n        public override MyMwcObjectBuilderTypeEnum GetObjectBuilderType()\n        {\n            return MyMwcObjectBuilderTypeEnum.FactionRelationChange;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/ObjectBuilders/MyMwcObjectBuilder_GlobalData.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace MinerWars.CommonLIB.AppCode.ObjectBuilders\n{\n    public class MyMwcObjectBuilder_GlobalData : MyMwcObjectBuilder_Base\n    {\n        public MyMwcObjectBuilder_SmallShipTemplates Templates;\n\n        public override MyMwcObjectBuilderTypeEnum GetObjectBuilderType()\n        {\n            return MyMwcObjectBuilderTypeEnum.GlobalData;\n        }\n\n        public override void ClearEntityId()\n        {\n            base.ClearEntityId();\n            Templates.ClearEntityId();\n        }\n\n        public override void RemapEntityIds(IMyEntityIdRemapContext remapContext)\n        {\n            base.RemapEntityIds(remapContext);\n            Templates.RemapEntityIds(remapContext);\n        }\n\n        internal override bool Read(System.IO.BinaryReader binaryReader, System.Net.EndPoint senderEndPoint, int gameVersion)\n        {\n            if (!base.Read(binaryReader, senderEndPoint, gameVersion))\n                return NetworkError();\n\n            Templates = ReadAndCreateNewObject(binaryReader, senderEndPoint) as MyMwcObjectBuilder_SmallShipTemplates;\n            if (Templates == null || !Templates.Read(binaryReader, senderEndPoint, gameVersion)) return NetworkError();\n\n            return true;\n        }\n\n        internal override void Write(System.IO.BinaryWriter binaryWriter)\n        {\n            base.Write(binaryWriter);\n\n            Templates.Write(binaryWriter);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/ObjectBuilders/MyMwcObjectBuilder_ObjectGroup.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing System.IO;\nusing System.Net;\nusing System.Data.SqlClient;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\n\nnamespace MinerWars.CommonLIB.AppCode.ObjectBuilders\n{\n    public class MyMwcObjectBuilder_ObjectGroup : MyMwcObjectBuilder_Base\n    {\n        public List<uint> ObjectList { get; set; }\n\n        internal MyMwcObjectBuilder_ObjectGroup()\n            : base()\n        {\n        }\n\n        public MyMwcObjectBuilder_ObjectGroup(List<uint> objectList, String name)\n        {\n            ObjectList = objectList;\n            Name = name;\n        }\n\n        public override void RemapEntityIds(IMyEntityIdRemapContext remapContext)\n        {\n            base.RemapEntityIds(remapContext);\n            var newList = new List<uint>();\n            foreach (var obj in ObjectList)\n            {\n                newList.Add(remapContext.RemapEntityId(obj).Value);\n            }\n            ObjectList = newList;\n        }\n\n        public IEnumerable<MyMwcObjectBuilder_Base> GetRootBuilders(IEnumerable<MyMwcObjectBuilder_Base> entities)\n        {\n            return this.ObjectList.ConvertAll(entityId => entities.FirstOrDefault(entity => entity.EntityId == entityId) as MyMwcObjectBuilder_Object3dBase).Where(s => s != null);\n        }\n\n        public IEnumerable<MyMwcObjectBuilder_PrefabBase> GetPrefabBuilders(IEnumerable<MyMwcObjectBuilder_Base> entities)\n        {\n            var allPrefabs = entities.OfType<MyMwcObjectBuilder_PrefabContainer>().SelectMany(container => container.Prefabs);\n            return this.ObjectList.ConvertAll(a => allPrefabs.FirstOrDefault(b => b.EntityId == a)).Where(s => s != null);\n        }\n\n        internal override void Write(BinaryWriter binaryWriter)\n        {\n            base.Write(binaryWriter);\n\n            //  ObjectList\n            int countObjectList = ObjectList == null ? 0 : ObjectList.Count;\n            MyMwcLog.IfNetVerbose_AddToLog(\"countObjectList: \" + countObjectList);\n            MyMwcMessageOut.WriteInt32(countObjectList, binaryWriter);\n            for (int i = 0; i < countObjectList; i++)\n            {\n                MyMwcMessageOut.WriteInt32((int)ObjectList[i], binaryWriter);\n            }\n        }\n\n        internal override bool Read(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n        {\n            if (!base.Read(binaryReader, senderEndPoint, gameVersion)) return NetworkError();\n\n            // ObjectList\n            int? countObjectList = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);\n            if (countObjectList == null) return NetworkError();\n            MyMwcLog.IfNetVerbose_AddToLog(\"countObjectList: \" + countObjectList);\n            ObjectList = new List<uint>(countObjectList.Value);\n            for (int i = 0; i < countObjectList; i++)\n            {\n                int? objectId = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);\n                if (objectId == null) return NetworkError();\n                ObjectList.Add((uint)objectId.Value);\n                MyMwcLog.IfNetVerbose_AddToLog(string.Format(\"ObjectList[{0}]: {1}\", i, objectId));\n            }\n\n            return true;\n        }\n\n        public override MyMwcObjectBuilderTypeEnum GetObjectBuilderType()\n        {\n            return MyMwcObjectBuilderTypeEnum.ObjectGroup;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/ObjectBuilders/MyMwcObjectBuilder_Player.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing SysUtils.Utils;\n\nnamespace MinerWars.CommonLIB.AppCode.ObjectBuilders\n{\n    public class MyMwcObjectBuilder_Player : MyMwcObjectBuilder_Base\n    {\n        public float Health { get; set; }\n        public float Money { get; set; }\n        public MyMwcObjectBuilder_PlayerStatistics PlayerStatisticsObjectBuilder { get; set; }\n        public MyMwcObjectBuilder_SmallShip ShipObjectBuilder { get; set; }\n        public MyMwcObjectBuilder_ShipConfig ShipConfigObjectBuilder { get; set; }\n        public float WithoutOxygen { get; set; }\n\n        internal MyMwcObjectBuilder_Player()\n            : base()\n        {\n        }\n\n        public MyMwcObjectBuilder_Player(float health, float money, float withoutOxygen,\n            MyMwcObjectBuilder_PlayerStatistics playerStatisticsObjectBuilder, MyMwcObjectBuilder_SmallShip shipObjectBuilder, MyMwcObjectBuilder_ShipConfig shipConfigObjectBuilder)\n        {\n            Health = health;\n            Money = money;\n            WithoutOxygen = withoutOxygen;\n            PlayerStatisticsObjectBuilder = playerStatisticsObjectBuilder;\n            ShipObjectBuilder = shipObjectBuilder;\n            ShipConfigObjectBuilder = shipConfigObjectBuilder;\n        }\n\n        public override void RemapEntityIds(IMyEntityIdRemapContext remapContext)\n        {\n            base.RemapEntityIds(remapContext);\n            PlayerStatisticsObjectBuilder.RemapEntityIds(remapContext);\n            ShipConfigObjectBuilder.RemapEntityIds(remapContext);\n            ShipObjectBuilder.RemapEntityIds(remapContext);\n        }\n\n        public override MyMwcObjectBuilderTypeEnum GetObjectBuilderType()\n        {\n            return MyMwcObjectBuilderTypeEnum.Player;\n        }\n\n        internal override void Write(System.IO.BinaryWriter binaryWriter)\n        {\n            base.Write(binaryWriter);\n\n            // Health\n            MyMwcLog.IfNetVerbose_AddToLog(\"Health: \" + Health);\n            MyMwcMessageOut.WriteFloat(Health, binaryWriter);\n\n            // Money\n            MyMwcLog.IfNetVerbose_AddToLog(\"Money: \" + Money);\n            MyMwcMessageOut.WriteFloat(Money, binaryWriter);\n\n            // Without oxygen\n            MyMwcLog.IfNetVerbose_AddToLog(\"WithoutOxygen: \" + WithoutOxygen);\n            MyMwcMessageOut.WriteFloat(WithoutOxygen, binaryWriter);\n\n            // Player statistic's objectbuilder            \n            bool isPlayerStatisticsObjectBuilder = PlayerStatisticsObjectBuilder != null;\n            MyMwcMessageOut.WriteBool(isPlayerStatisticsObjectBuilder, binaryWriter);\n            if (isPlayerStatisticsObjectBuilder) PlayerStatisticsObjectBuilder.Write(binaryWriter);\n\n            // Ship's objectbuilder            \n            bool isShipObjectBuilder = ShipObjectBuilder != null;\n            MyMwcMessageOut.WriteBool(isShipObjectBuilder, binaryWriter);\n            if (isShipObjectBuilder) ShipObjectBuilder.Write(binaryWriter);\n\n            // ShipConfig's objectbuilder            \n            bool isShipConfigObjectBuilder = ShipConfigObjectBuilder != null;\n            MyMwcMessageOut.WriteBool(isShipConfigObjectBuilder, binaryWriter);\n            if (isShipConfigObjectBuilder) ShipConfigObjectBuilder.Write(binaryWriter);\n        }\n\n        internal override bool Read(System.IO.BinaryReader binaryReader, System.Net.EndPoint senderEndPoint, int gameVersion)\n        {\n            if (!base.Read(binaryReader, senderEndPoint, gameVersion)) return NetworkError();\n\n            // Health\n            float? health = MyMwcMessageIn.ReadFloat(binaryReader);\n            if (health == null) return NetworkError();\n            Health = health.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"Health: \" + Health);\n\n            // Money\n            float? money = MyMwcMessageIn.ReadFloat(binaryReader);\n            if (money == null) return NetworkError();\n            Money = money.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"Money: \" + Money);\n\n            // Without oxygen\n            float? withoutOxygen = MyMwcMessageIn.ReadFloat(binaryReader);\n            if (withoutOxygen == null) return NetworkError();\n            WithoutOxygen = withoutOxygen.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"WithoutOxygen: \" + WithoutOxygen);\n\n            //  Player statistic's objectbuilder\n            bool? isPlayerStatisticsObjectBuilder = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n            if (isPlayerStatisticsObjectBuilder == null) return NetworkError();\n            if (isPlayerStatisticsObjectBuilder.Value)\n            {\n                PlayerStatisticsObjectBuilder = MyMwcObjectBuilder_Base.ReadAndCreateNewObject(binaryReader, senderEndPoint) as MyMwcObjectBuilder_PlayerStatistics;\n                if (PlayerStatisticsObjectBuilder == null) return NetworkError();\n                if (PlayerStatisticsObjectBuilder.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n            }\n            else\n            {\n                PlayerStatisticsObjectBuilder = null;\n            }\n\n            //  Ship's objectbuilder\n            bool? isShipObjectBuilder = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n            if (isShipObjectBuilder == null) return NetworkError();\n            if (isShipObjectBuilder.Value)\n            {\n                ShipObjectBuilder = MyMwcObjectBuilder_Base.ReadAndCreateNewObject(binaryReader, senderEndPoint) as MyMwcObjectBuilder_SmallShip;\n                if (ShipObjectBuilder == null) return NetworkError();\n                if (ShipObjectBuilder.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n            }\n            else\n            {\n                ShipObjectBuilder = null;\n            }\n\n            //  ShipConfig's objectbuilder\n            bool? isShipConfigObjectBuilder = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n            if (isShipConfigObjectBuilder == null) return NetworkError();\n            if (isShipConfigObjectBuilder.Value)\n            {\n                ShipConfigObjectBuilder = MyMwcObjectBuilder_Base.ReadAndCreateNewObject(binaryReader, senderEndPoint) as MyMwcObjectBuilder_ShipConfig;\n                if (ShipConfigObjectBuilder == null) return NetworkError();\n                if (ShipConfigObjectBuilder.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n            }\n            else\n            {\n                ShipConfigObjectBuilder = null;\n            }\n\n            return true;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/ObjectBuilders/MyMwcObjectBuilder_PlayerStatistics.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Data.SqlClient;\nusing System.Linq;\nusing System.Net;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing SysUtils.Utils;\n\nnamespace MinerWars.CommonLIB.AppCode.ObjectBuilders\n{\n    public class MyMwcObjectBuilder_PlayerStatistics : MyMwcObjectBuilder_Base\n    {\n        public int PlayersKilled { get; set; }\n        public int BulletsShot { get; set; }\n        public int HarvestedOre { get; set; }\n        public int TunnelsDug { get; set; }\n        public int TraveledDistance { get; set; }\n        public int RescuedPlayers { get; set; }\n        public float GamePlayTime { get; set; }\n        public float OxygenSpent { get; set; }\n        public int FriendlyFire { get; set; }\n        public int Deaths { get; set; }\n\n        internal MyMwcObjectBuilder_PlayerStatistics()\n            : base()\n        {\n        }\n\n        public MyMwcObjectBuilder_PlayerStatistics(int playersKilled, int bulletsShot, int harvestedOre, int tunnelsDug, int traveledDistance, int rescuedPlayers, \n            float gamePlayTime, float oxygenSpent, int friendlyFire, int deaths)\n        {\n            PlayersKilled = playersKilled;\n            BulletsShot = bulletsShot;\n            HarvestedOre = harvestedOre;\n            TunnelsDug = tunnelsDug;\n            TraveledDistance = traveledDistance;\n            RescuedPlayers = rescuedPlayers;\n            GamePlayTime = gamePlayTime;\n            OxygenSpent = oxygenSpent;\n            FriendlyFire = friendlyFire;\n            Deaths = deaths;\n        }\n\n        internal override void Write(System.IO.BinaryWriter binaryWriter)\n        {\n            base.Write(binaryWriter);\n\n            // Players killed\n            MyMwcLog.IfNetVerbose_AddToLog(\"PlayersKilled: \" + PlayersKilled);\n            MyMwcMessageOut.WriteInt32(PlayersKilled, binaryWriter);\n\n            // Bullets shot\n            MyMwcLog.IfNetVerbose_AddToLog(\"BulletsShot: \" + BulletsShot);\n            MyMwcMessageOut.WriteInt32(BulletsShot, binaryWriter);\n\n            // Harvested ore\n            MyMwcLog.IfNetVerbose_AddToLog(\"HarvestedOre: \" + HarvestedOre);\n            MyMwcMessageOut.WriteInt32(HarvestedOre, binaryWriter);\n\n            // Tunnels dug\n            MyMwcLog.IfNetVerbose_AddToLog(\"TunnelsDug: \" + TunnelsDug);\n            MyMwcMessageOut.WriteInt32(TunnelsDug, binaryWriter);\n\n            // Traveled distance\n            MyMwcLog.IfNetVerbose_AddToLog(\"TraveledDistance: \" + TraveledDistance);\n            MyMwcMessageOut.WriteInt32(TraveledDistance, binaryWriter);\n\n            // Rescued players\n            MyMwcLog.IfNetVerbose_AddToLog(\"RescuedPlayers: \" + RescuedPlayers);\n            MyMwcMessageOut.WriteInt32(RescuedPlayers, binaryWriter);\n\n            // Gameplay time\n            MyMwcLog.IfNetVerbose_AddToLog(\"GamePlayTime: \" + GamePlayTime);\n            MyMwcMessageOut.WriteFloat(GamePlayTime, binaryWriter);\n\n            // Oxygen spent\n            MyMwcLog.IfNetVerbose_AddToLog(\"OxygenSpent: \" + OxygenSpent);\n            MyMwcMessageOut.WriteFloat(OxygenSpent, binaryWriter);\n\n            // Friendly fire\n            MyMwcLog.IfNetVerbose_AddToLog(\"FriendlyFire: \" + FriendlyFire);\n            MyMwcMessageOut.WriteInt32(FriendlyFire, binaryWriter);\n\n            // Deads\n            MyMwcLog.IfNetVerbose_AddToLog(\"Deaths: \" + Deaths);\n            MyMwcMessageOut.WriteInt32(Deaths, binaryWriter);\n        }\n\n        internal override bool Read(System.IO.BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n        {\n            if (base.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n\n            // Players killed\n            int? playersKilled = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);\n            if (playersKilled == null) return NetworkError();\n            PlayersKilled = playersKilled.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"PlayersKilled: \" + PlayersKilled);\n\n            // Bullets shot\n            int? bulletsShot = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);\n            if (bulletsShot == null) return NetworkError();\n            BulletsShot = bulletsShot.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"BulletsShot: \" + BulletsShot);\n\n            // Harvested ore\n            int? harvestedOre = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);\n            if (harvestedOre == null) return NetworkError();\n            HarvestedOre = harvestedOre.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"HarvestedOre: \" + HarvestedOre);\n\n            // Tunnels dug\n            int? tunnelsDug = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);\n            if (tunnelsDug == null) return NetworkError();\n            TunnelsDug = tunnelsDug.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"TunnelsDug: \" + TunnelsDug);\n\n            // Traveled distance\n            int? traveledDistance = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);\n            if (traveledDistance == null) return NetworkError();\n            TraveledDistance = traveledDistance.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"TraveledDistance: \" + TraveledDistance);\n\n            // Rescued players\n            int? rescuedPlayers = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);\n            if (rescuedPlayers == null) return NetworkError();\n            RescuedPlayers = rescuedPlayers.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"RescuedPlayers: \" + RescuedPlayers);\n\n            // Gameplay time\n            float? gamePlayTime = MyMwcMessageIn.ReadFloat(binaryReader);\n            if (gamePlayTime == null) return NetworkError();\n            GamePlayTime = gamePlayTime.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"GamePlayTime: \" + GamePlayTime);\n\n            // Oxygen spent\n            float? oxygenSpent = MyMwcMessageIn.ReadFloat(binaryReader);\n            if (oxygenSpent == null) return NetworkError();\n            OxygenSpent = oxygenSpent.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"OxygenSpent: \" + OxygenSpent);\n\n            // Friendly fire\n            int? friendlyFire = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);\n            if (friendlyFire == null) return NetworkError();\n            FriendlyFire = friendlyFire.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"FriendlyFire: \" + FriendlyFire);\n\n            // Deads\n            int? deaths = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);\n            if (deaths == null) return NetworkError();\n            Deaths = deaths.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"Deaths: \" + Deaths);\n\n            return true;\n        }\n\n        public override MyMwcObjectBuilderTypeEnum GetObjectBuilderType()\n        {\n            return MyMwcObjectBuilderTypeEnum.PlayerStatistics;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/ObjectBuilders/MyMwcObjectBuilder_RemotePlayer.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing System.Net;\n\nnamespace MinerWars.CommonLIB.AppCode.ObjectBuilders\n{\n    public class MyMwcObjectBuilder_RemotePlayer: MyMwcObjectBuilder_Base\n    {\n        public EndPoint Endpoint;\n\n        public byte GameUserId;\n        public int UserId;\n        public uint SmallShipEntityId;\n\n        public override MyMwcObjectBuilderTypeEnum GetObjectBuilderType()\n        {\n            return MyMwcObjectBuilderTypeEnum.RemotePlayer;\n        }\n\n        internal override bool Read(System.IO.BinaryReader binaryReader, System.Net.EndPoint senderEndPoint, int gameVersion)\n        {\n            if (!base.Read(binaryReader, senderEndPoint, gameVersion)) return NetworkError();\n\n            var endpoint = MyMwcMessageIn.ReadEndpointEx(binaryReader, senderEndPoint);\n            if (endpoint == null) return NetworkError();\n            Endpoint = endpoint;\n\n            var gameUserId = MyMwcMessageIn.ReadByteEx(binaryReader, senderEndPoint);\n            if (!gameUserId.HasValue) return NetworkError();\n            GameUserId = gameUserId.Value;\n\n            var userId = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);\n            if (!userId.HasValue) return NetworkError();\n            UserId = userId.Value;\n\n            var smallShipEntityId = MyMwcMessageIn.ReadUInt32Ex(binaryReader, senderEndPoint);\n            if (!smallShipEntityId.HasValue) return NetworkError();\n            SmallShipEntityId = smallShipEntityId.Value;\n\n            return true;\n        }\n\n        internal override void Write(System.IO.BinaryWriter binaryWriter)\n        {\n            base.Write(binaryWriter);\n\n            MyMwcMessageOut.WriteEndpoint(Endpoint, binaryWriter);\n            MyMwcMessageOut.WriteByte(GameUserId, binaryWriter);\n            MyMwcMessageOut.WriteInt32(UserId, binaryWriter);\n            MyMwcMessageOut.WriteUInt32(SmallShipEntityId, binaryWriter);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/ObjectBuilders/MyMwcObjectBuilder_Sector.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Data.SqlClient;\nusing System.IO;\nusing System.Linq;\nusing System.Net;\nusing KeenSoftwareHouse.Library.Trace;\nusing MinerWarsMath;\nusing MinerWarsMath.Graphics;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils.Utils;\n\nnamespace MinerWars.CommonLIB.AppCode.ObjectBuilders\n{\n    public class MyMwcObjectBuilder_Sector : MyMwcObjectBuilder_Base\n    {\n        // Area template, designer can choose sector area template\n        // When null, area is taken from universe generator\n        public MySolarSystemAreaEnum? AreaTemplate { get; set; }\n\n        // Number from <0;1>, interpolation between default area and template\n        // This number is used only for generator, it's never saved to database\n        public float AreaMultiplier { get; set; }\n\n        public MyMwcVector3Int Position;\n        public bool FromGenerator { get; set; }\n        public int Version { get; set; }\n\n        public List<MyMwcObjectBuilder_Base> SectorObjects { get; set; }\n        public List<MyMwcObjectBuilder_ObjectGroup> ObjectGroups { get; set; }\n        public List<MyMwcObjectBuilder_SnapPointLink> SnapPointLinks { get; set; }\n\n        public Dictionary<string, string> Dictionary { get; set; }\n\n        public MyMwcObjectBuilder_Sector()\n            : base()\n        {\n            Dictionary = new Dictionary<string, string>();\n        }\n\n        public override void RemapEntityIds(IMyEntityIdRemapContext remapContext)\n        {\n            base.RemapEntityIds(remapContext);\n            foreach (var sectorObj in SectorObjects)\n            {\n                sectorObj.RemapEntityIds(remapContext);\n            }\n\n            foreach (var link in SnapPointLinks)\n            {\n                link.RemapEntityIds(remapContext);\n            }\n        }\n\n        public static MyMwcObjectBuilder_Sector UseGenerator()\n        {\n            var sectorBuilder = MyMwcObjectBuilder_Base.CreateNewObject(MyMwcObjectBuilderTypeEnum.Sector, null) as MyMwcObjectBuilder_Sector;\n            sectorBuilder.FromGenerator = true;\n            sectorBuilder.Version = 0;\n            return sectorBuilder;\n        }\n\n        public override MyMwcObjectBuilderTypeEnum GetObjectBuilderType()\n        {\n            return MyMwcObjectBuilderTypeEnum.Sector;\n        }\n\n        [System.Diagnostics.Conditional(\"DEBUG\")]\n        public void WriteTrace()\n        {\n            var smallShips = SectorObjects.OfType<MyMwcObjectBuilder_SmallShip>();\n            MyTrace.Indent(TraceWindow.Saving, \"SmallShips\");\n            foreach (var smallShip in smallShips)\n            {\n                MyTrace.Send(TraceWindow.Saving, smallShip.DisplayName);\n            }\n            MyTrace.UnIndent(TraceWindow.Saving);\n        }\n\n        //  Write this object into message-out\n        internal override void Write(BinaryWriter binaryWriter)\n        {\n            base.Write(binaryWriter);\n\n            // TODO: remove\n            MyMwcLog.IfNetVerbose_AddToLog(\"DustColor: \" + Color.White.ToString());\n            MyMwcMessageOut.WriteColor(Color.White, binaryWriter);\n\n            List<MyMwcObjectBuilder_Base> objectToWrite = SectorObjects;\n\n            int countSectorObjects = objectToWrite == null ? 0 : objectToWrite.Count;\n            MyMwcLog.IfNetVerbose_AddToLog(\"Sector object count: \" + countSectorObjects);\n            MyMwcMessageOut.WriteInt32(countSectorObjects, binaryWriter);\n\n            for (int i = 0; i < countSectorObjects; i++)\n            {\n                objectToWrite[i].Write(binaryWriter);\n            }\n            MyMwcLog.IfNetVerbose_AddToLog(\"Sector objects written\");\n\n            // Write object groups\n            int countObjectGroups = 0;\n            if (ObjectGroups != null)\n            {\n                countObjectGroups = ObjectGroups.Count;\n            }\n            MyMwcLog.IfNetVerbose_AddToLog(\"Object groups count: \" + countObjectGroups);\n            MyMwcMessageOut.WriteInt32(countObjectGroups, binaryWriter);\n\n            for (int i = 0; i < countObjectGroups; i++)\n            {\n                ObjectGroups[i].Write(binaryWriter);\n            }\n            MyMwcLog.IfNetVerbose_AddToLog(\"Object groups written\");\n\n            // Write snap point links\n            int countSnapPointLinks = 0;\n            if (SnapPointLinks != null)\n            {\n                countSnapPointLinks = SnapPointLinks.Count;\n            }\n            MyMwcLog.IfNetVerbose_AddToLog(\"Snap point links count: \" + countSnapPointLinks);\n            MyMwcMessageOut.WriteInt32(countSnapPointLinks, binaryWriter);\n\n            for (int i = 0; i < countSnapPointLinks; i++)\n            {\n                SnapPointLinks[i].Write(binaryWriter);\n            }\n            MyMwcLog.IfNetVerbose_AddToLog(\"Snap point links written\");\n\n            MyMwcMessageOut.WriteBool(FromGenerator, binaryWriter);\n            MyMwcLog.IfNetVerbose_AddToLog(\"From generator: \" + FromGenerator);\n\n            // Version\n            MyMwcMessageOut.WriteInt32(Version, binaryWriter);\n            MyMwcLog.IfNetVerbose_AddToLog(\"Current sector version: \" + Version.ToString());\n\n            MyMwcMessageOut.WriteVector3Int(Position, binaryWriter);\n            MyMwcLog.IfNetVerbose_AddToLog(\"Position written: \" + Position);\n\n            MyMessageHelper.WriteStringDictionary(Dictionary, binaryWriter);\n        }\n\n        //  Read this object from message-in\n        internal override bool Read(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n        {\n            if (base.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n\n            // TODO: remove\n            Color? dustColor = MyMwcMessageIn.ReadColorEx(binaryReader, senderEndPoint);\n            if (dustColor == null) return NetworkError();\n            MyMwcLog.IfNetVerbose_AddToLog(\"dustColor: \" + dustColor.ToString());\n\n            int? countSectorObjects = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);\n            if (countSectorObjects == null) return NetworkError();\n            MyMwcLog.IfNetVerbose_AddToLog(\"Sector object count: \" + countSectorObjects);\n            SectorObjects = new List<MyMwcObjectBuilder_Base>(countSectorObjects.Value);\n            for (int i = 0; i < countSectorObjects; i++)\n            {\n                MyMwcObjectBuilder_Base sectorObject = MyMwcObjectBuilder_Base.ReadAndCreateNewObject(binaryReader, senderEndPoint);\n                if (sectorObject == null) return NetworkError();\n                if (sectorObject.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n                SectorObjects.Add(sectorObject);\n            }\n            MyMwcLog.IfNetVerbose_AddToLog(\"Sector objects read\");\n\n            // Read object groups\n            int? countObjectGroups = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);\n            if (countObjectGroups == null) return NetworkError();\n            MyMwcLog.IfNetVerbose_AddToLog(\"Object groups count: \" + countObjectGroups);\n            ObjectGroups = new List<MyMwcObjectBuilder_ObjectGroup>();\n            for (int i = 0; i < countObjectGroups; i++)\n            {\n                MyMwcObjectBuilder_ObjectGroup objectGroup = MyMwcObjectBuilder_ObjectGroup.ReadAndCreateNewObject(binaryReader, senderEndPoint) as MyMwcObjectBuilder_ObjectGroup;\n                if (objectGroup == null) return NetworkError();\n                if (objectGroup.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n                ObjectGroups.Add(objectGroup);\n            }\n            MyMwcLog.IfNetVerbose_AddToLog(\"Object groups read\");\n\n            // Read snap point links\n            int? countSnapPointLinks = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);\n            if (countSnapPointLinks == null) return NetworkError();\n            MyMwcLog.IfNetVerbose_AddToLog(\"Snap point links count: \" + countSnapPointLinks);\n            SnapPointLinks = new List<MyMwcObjectBuilder_SnapPointLink>();\n            for (int i = 0; i < countSnapPointLinks; i++)\n            {\n                MyMwcObjectBuilder_SnapPointLink snapPointLink = MyMwcObjectBuilder_SnapPointLink.ReadAndCreateNewObject(binaryReader, senderEndPoint) as MyMwcObjectBuilder_SnapPointLink;\n                if (snapPointLink == null) return NetworkError();\n                if (snapPointLink.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n                SnapPointLinks.Add(snapPointLink);\n            }\n            MyMwcLog.IfNetVerbose_AddToLog(\"Snap point links read\");\n\n            bool? fromGenerator = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n            if (!fromGenerator.HasValue) return NetworkError();\n            FromGenerator = fromGenerator.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"From generator read: \" + FromGenerator);\n\n            // Version\n            int? version = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);\n            if (!version.HasValue) return NetworkError();\n            this.Version = version.Value;\n\n            var position = MyMwcMessageIn.ReadVector3IntEx(binaryReader, senderEndPoint);\n            if (!position.HasValue) return NetworkError();\n            Position = position.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"Position: \" + Position);\n\n            Dictionary = MyMessageHelper.ReadStringDictionary(binaryReader, senderEndPoint);\n            if (Dictionary == null) return NetworkError();\n\n            return true;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/ObjectBuilders/MyMwcObjectBuilder_SectorObjectGroups.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.IO;\nusing System.Net;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\n\nnamespace MinerWars.CommonLIB.AppCode.ObjectBuilders\n{\n    public class MyMwcObjectBuilder_SectorObjectGroups: MyMwcObjectBuilder_Base\n    {\n        public List<MyMwcObjectBuilder_ObjectGroup> Groups;\n        public List<MyMwcObjectBuilder_Base> Entities;\n        \n        public override MyMwcObjectBuilderTypeEnum GetObjectBuilderType()\n        {\n            return MyMwcObjectBuilderTypeEnum.SectorObjectGroups;\n        }\n\n        public override void RemapEntityIds(IMyEntityIdRemapContext remapContext)\n        {\n            base.RemapEntityIds(remapContext);\n            foreach (var group in Groups)\n            {\n                group.RemapEntityIds(remapContext);\n            }\n            foreach (var entity in Entities)\n            {\n                entity.RemapEntityIds(remapContext);\n            }\n        }\n\n        internal override bool Read(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n        {\n            Groups = new List<MyMwcObjectBuilder_ObjectGroup>();\n            Entities = new List<MyMwcObjectBuilder_Base>();\n\n            if (!base.Read(binaryReader, senderEndPoint, gameVersion)) return NetworkError();\n\n            if (!MyMwcMessageIn.ReadObjectCollection(Groups, binaryReader, senderEndPoint, gameVersion)) return NetworkError();\n            if (!MyMwcMessageIn.ReadObjectCollection(Entities, binaryReader, senderEndPoint, gameVersion)) return NetworkError();\n\n            return true;\n        }\n\n        internal override void Write(BinaryWriter binaryWriter)\n        {\n            base.Write(binaryWriter);\n\n            MyMwcMessageOut.WriteCollection(Groups, binaryWriter);\n            MyMwcMessageOut.WriteCollection(Entities, binaryWriter);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/ObjectBuilders/MyMwcObjectBuilder_Session.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing SysUtils.Utils;\n\nnamespace MinerWars.CommonLIB.AppCode.ObjectBuilders\n{\n    public enum MyGameplayDifficultyEnum\n    {\n        EASY = 0,\n        NORMAL = 1,\n        HARD = 2,\n    }\n\n    public class MyMwcObjectBuilder_Session : MyMwcObjectBuilder_Base\n    {\n        public MyGameplayDifficultyEnum Difficulty { get; set; }\n\n        internal MyMwcObjectBuilder_Session()\n            : base()\n        {\n        }\n\n        public MyMwcObjectBuilder_Session(MyGameplayDifficultyEnum difficulty)\n        {\n            Difficulty = difficulty;\n        }\n\n        public override MyMwcObjectBuilderTypeEnum GetObjectBuilderType()\n        {\n            return MyMwcObjectBuilderTypeEnum.Session;\n        }\n\n        internal override bool Read(System.IO.BinaryReader binaryReader, System.Net.EndPoint senderEndPoint, int gameVersion)\n        {\n            if (!base.Read(binaryReader, senderEndPoint, gameVersion)) return NetworkError();\n\n            int? difficulty = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);\n            if (!difficulty.HasValue) return NetworkError();\n\n            Difficulty = (MyGameplayDifficultyEnum) difficulty.Value;\n\n            return true;\n        }\n\n        internal override void Write(System.IO.BinaryWriter binaryWriter)\n        {\n            base.Write(binaryWriter);\n\n            MyMwcMessageOut.WriteInt32((int)this.Difficulty, binaryWriter);\n            MyMwcLog.IfNetVerbose_AddToLog(\"Difficulty: \" + this.Difficulty);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/ObjectBuilders/MyMwcObjectBuilder_ShipConfig.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.IO;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.Networking;\n\nnamespace MinerWars.CommonLIB.AppCode.ObjectBuilders\n{\n    public class MyMwcObjectBuilder_ShipConfig : MyMwcObjectBuilder_Base\n    {\n        public bool Engine;\n        public byte RadarType;\n        public bool AutoLeveling;\n        public bool MovementSlowdown;\n        public bool BackCamera;\n        public byte ViewMode;\n\n        public MyMwcObjectBuilder_ShipConfig()\n        {\n\n        }\n\n        public MyMwcObjectBuilder_ShipConfig(bool engine, byte radarType, bool autoLeveling, bool movementSlowdown, bool backCamera, byte viewMode)\n        {\n            Engine = engine;\n            RadarType = radarType;\n            AutoLeveling = autoLeveling;\n            MovementSlowdown = movementSlowdown;\n            BackCamera = backCamera;\n            ViewMode = viewMode;\n        }\n\n        public override MyMwcObjectBuilderTypeEnum GetObjectBuilderType()\n        {\n            return MyMwcObjectBuilderTypeEnum.ShipConfig;\n        }\n\n        internal override void Write(BinaryWriter binaryWriter)\n        {\n            base.Write(binaryWriter);\n\n            // Engine\n            MyMwcLog.IfNetVerbose_AddToLog(\"Engine: \" + Engine);\n            MyMwcMessageOut.WriteBool(Engine, binaryWriter);\n\n            // RadarType\n            MyMwcLog.IfNetVerbose_AddToLog(\"RadarType: \" + RadarType);\n            MyMwcMessageOut.WriteByte(RadarType, binaryWriter);\n\n            // BackCamera\n            MyMwcLog.IfNetVerbose_AddToLog(\"BackCamera: \" + BackCamera);\n            MyMwcMessageOut.WriteBool(BackCamera, binaryWriter);\n\n            // MovementSlowdown\n            MyMwcLog.IfNetVerbose_AddToLog(\"MovementSlowdown: \" + MovementSlowdown);\n            MyMwcMessageOut.WriteBool(MovementSlowdown, binaryWriter);\n\n            // ViewMode\n            MyMwcLog.IfNetVerbose_AddToLog(\"ViewMode: \" + ViewMode);\n            MyMwcMessageOut.WriteByte(ViewMode, binaryWriter);\n        }\n\n        internal override bool Read(BinaryReader binaryReader, System.Net.EndPoint senderEndPoint, int gameVersion)\n        {\n            if (!base.Read(binaryReader, senderEndPoint, gameVersion)) return NetworkError();\n\n            // Engine\n            bool? engine = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n            if (engine == null) return NetworkError();\n            Engine = engine.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"Engine: \" + Engine);\n\n            // RadarType\n            byte? radarType = MyMwcMessageIn.ReadByteEx(binaryReader, senderEndPoint);\n            if (radarType == null) return NetworkError();\n            RadarType = radarType.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"RadarType: \" + RadarType);\n\n            // BackCamera\n            bool? backCamera = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n            if (backCamera == null) return NetworkError();\n            BackCamera = backCamera.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"BackCamera: \" + BackCamera);\n\n            // MovementSlowdown\n            bool? movementSlowdown = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n            if (movementSlowdown == null) return NetworkError();\n            MovementSlowdown = movementSlowdown.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"MovementSlowdown: \" + MovementSlowdown);\n\n            // ViewMode\n            byte? viewMode = MyMwcMessageIn.ReadByteEx(binaryReader, senderEndPoint);\n            if (viewMode == null) return NetworkError();\n            ViewMode = viewMode.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"ViewMode: \" + ViewMode);\n\n            return true;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/ObjectBuilders/MyMwcObjectBuilder_SmallShipTemplate.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing System.IO;\nusing System.Net;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing SysUtils.Utils;\n\nnamespace MinerWars.CommonLIB.AppCode.ObjectBuilders\n{\n    public class MyMwcObjectBuilder_SmallShipTemplate : MyMwcObjectBuilder_Base\n    {\n        public int ID { get; set; }\n\n        public string Name { get; set; }\n\n        public MyMwcObjectBuilder_SmallShip Builder { get; set; }        \n\n        internal MyMwcObjectBuilder_SmallShipTemplate()\n            : base()\n        {\n        }\n\n        public MyMwcObjectBuilder_SmallShipTemplate(int id, string name, MyMwcObjectBuilder_SmallShip builder) \n        {\n            ID = id;\n            Name = name;\n            Builder = builder;\n        }\n\n        public override void RemapEntityIds(IMyEntityIdRemapContext remapContext)\n        {\n            base.RemapEntityIds(remapContext);\n            Builder.RemapEntityIds(remapContext);          \n        }\n\n        internal override void Write(BinaryWriter binaryWriter)\n        {\n            base.Write(binaryWriter);\n\n            //  ID\n            MyMwcLog.IfNetVerbose_AddToLog(\"ID: \" + ID);\n            MyMwcMessageOut.WriteInt32(ID, binaryWriter);\n\n            //  Name\n            if (Name != null)\n            {\n                MyMwcMessageOut.WriteBool(true, binaryWriter);\n                MyMwcLog.IfNetVerbose_AddToLog(\"Name: \" + this.Name);\n                MyMwcMessageOut.WriteString(Name, binaryWriter);\n            }\n            else\n            {\n                MyMwcLog.IfNetVerbose_AddToLog(\"Name: \" + \"null\");\n                MyMwcMessageOut.WriteBool(false, binaryWriter);\n            }\n\n            //  Builder\n            bool hasBuilder = Builder != null;\n            MyMwcMessageOut.WriteBool(hasBuilder, binaryWriter);\n            if (hasBuilder) Builder.Write(binaryWriter);\n        }\n\n        internal override bool Read(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n        {\n            if (!base.Read(binaryReader, senderEndPoint, gameVersion)) return NetworkError();\n\n            //  ID\n            int? id = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);\n            if (id == null) return NetworkError();\n            ID = id.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"ID: \" + ID);\n\n            //  Name\n            bool? hasName = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n            if (!hasName.HasValue) return NetworkError();\n            if (hasName.Value)\n            {\n                string name = MyMwcMessageIn.ReadStringEx(binaryReader, senderEndPoint);\n                if (name == null) return NetworkError();\n                MyMwcLog.IfNetVerbose_AddToLog(\"Name: \" + Name);\n                Name = name;\n            }\n            else\n            {\n                MyMwcLog.IfNetVerbose_AddToLog(\"Name: \" + \"null\");\n                Name = null;\n            }\n\n            //  Builder\n            bool? hasBuilder = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n            if (hasBuilder == null) return NetworkError();\n            if (hasBuilder.Value)\n            {\n                Builder = MyMwcObjectBuilder_Base.ReadAndCreateNewObject(binaryReader, senderEndPoint) as MyMwcObjectBuilder_SmallShip;\n                if (Builder == null) return NetworkError();\n                if (Builder.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n            }\n            else\n            {\n                Builder = null;\n            }\n\n            return true;\n        }\n\n        public override MyMwcObjectBuilderTypeEnum GetObjectBuilderType()\n        {\n            return MyMwcObjectBuilderTypeEnum.SmallShipTemplate;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/ObjectBuilders/MyMwcObjectBuilder_SmallShipTemplates.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.IO;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing SysUtils.Utils;\nusing System.Net;\n\nnamespace MinerWars.CommonLIB.AppCode.ObjectBuilders\n{\n    public class MyMwcObjectBuilder_SmallShipTemplates : MyMwcObjectBuilder_Base\n    {\n        public List<MyMwcObjectBuilder_SmallShipTemplate> SmallShipTemplates { get; set; }\n\n        internal MyMwcObjectBuilder_SmallShipTemplates()\n            : base()\n        {\n        }\n\n        public MyMwcObjectBuilder_SmallShipTemplates(List<MyMwcObjectBuilder_SmallShipTemplate> smallShipTemplates) \n            : this()\n        {\n            SmallShipTemplates = smallShipTemplates;\n        }\n\n        public override void RemapEntityIds(IMyEntityIdRemapContext remapContext)\n        {\n            base.RemapEntityIds(remapContext);\n            if (SmallShipTemplates != null) \n            {\n                foreach (var smallShipTemplate in SmallShipTemplates) \n                {\n                    smallShipTemplate.RemapEntityIds(remapContext);\n                }\n            }    \n        }\n\n        internal override void Write(BinaryWriter binaryWriter)\n        {\n            base.Write(binaryWriter);\n\n            //  Small ship templates\n            int countTemplates = SmallShipTemplates == null ? 0 : SmallShipTemplates.Count;\n            MyMwcLog.IfNetVerbose_AddToLog(\"countTemplates: \" + countTemplates);\n            MyMwcMessageOut.WriteInt32(countTemplates, binaryWriter);\n            for (int i = 0; i < countTemplates; i++)\n            {\n                SmallShipTemplates[i].Write(binaryWriter);\n            }\n        }\n\n        internal override bool Read(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n        {\n            if (!base.Read(binaryReader, senderEndPoint, gameVersion)) return NetworkError();\n\n            //  Small ship templates\n            int? countTemplates = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);\n            if (countTemplates == null) return NetworkError();\n            MyMwcLog.IfNetVerbose_AddToLog(\"countTemplates: \" + countTemplates);\n            SmallShipTemplates = new List<MyMwcObjectBuilder_SmallShipTemplate>(countTemplates.Value);\n            for (int i = 0; i < countTemplates; i++)\n            {\n                MyMwcObjectBuilder_SmallShipTemplate templateBuilder = MyMwcObjectBuilder_Base.ReadAndCreateNewObject(binaryReader, senderEndPoint) as MyMwcObjectBuilder_SmallShipTemplate;\n                if (templateBuilder == null) return NetworkError();\n                if (templateBuilder.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n                SmallShipTemplates.Add(templateBuilder);\n            }\n\n            return true;\n        }\n\n        public override MyMwcObjectBuilderTypeEnum GetObjectBuilderType()\n        {\n            return MyMwcObjectBuilderTypeEnum.SmallShipTemplates;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/ObjectBuilders/MyMwcObjectBuilder_SnapPointLink.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing System.Data.SqlClient;\nusing System.Net;\nusing System.IO;\n\nnamespace MinerWars.CommonLIB.AppCode.ObjectBuilders\n{\n    public class MyMwcObjectBuilder_SnapPointLink : MyMwcObjectBuilder_Base\n    {\n        public class LinkElement\n        {\n            public uint EntityId { get; set; }\n            public short Index { get; set; }\n            public string SnapPointName { get; set; }\n\n            public LinkElement(uint entityId, short index, string snapPointName)\n            {\n                EntityId = entityId;\n                Index = index;\n                SnapPointName = snapPointName;\n            }\n        }\n\n        public List<LinkElement> Links { get; set; }\n\n        internal MyMwcObjectBuilder_SnapPointLink()\n            : base()\n        {\n        }\n\n        public override void RemapEntityIds(IMyEntityIdRemapContext remapContext)\n        {\n            base.RemapEntityIds(remapContext);\n            foreach (var element in Links)\n            {\n                element.EntityId = remapContext.RemapEntityId(element.EntityId).Value;\n            }\n        }\n\n        internal override void Write(BinaryWriter binaryWriter)\n        {\n            base.Write(binaryWriter);\n\n            //  ObjectList\n            int countLinks = Links == null ? 0 : Links.Count;\n            MyMwcLog.IfNetVerbose_AddToLog(\"countLinks: \" + countLinks);\n            MyMwcMessageOut.WriteInt32(countLinks, binaryWriter);\n            for (int i = 0; i < countLinks; i++)\n            {\n                MyMwcLog.IfNetVerbose_AddToLog(string.Format(\"Links[{0}].EntityId: {1}\", i, Links[i].EntityId));\n                MyMwcMessageOut.WriteInt32((int)Links[i].EntityId, binaryWriter);\n\n                MyMwcLog.IfNetVerbose_AddToLog(string.Format(\"Links[{0}].Index: {1}\", i, Links[i].Index));\n                MyMwcMessageOut.WriteInt16(Links[i].Index, binaryWriter);\n                if (Links[i].SnapPointName != null)\n                {\n                    MyMwcMessageOut.WriteBool(true, binaryWriter);\n                    MyMwcLog.IfNetVerbose_AddToLog(string.Format(\"Links[{0}].SnapPointName: {1}\", i, Links[i].SnapPointName));\n                    MyMwcMessageOut.WriteString(Links[i].SnapPointName, binaryWriter);\n                }\n                else\n                {\n                    MyMwcMessageOut.WriteBool(false, binaryWriter);\n                    MyMwcLog.IfNetVerbose_AddToLog(string.Format(\"Links[{0}].SnapPointName: {1}\", i, \"null\"));\n                }\n            }\n        }\n\n        internal override bool Read(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n        {\n            if (!base.Read(binaryReader, senderEndPoint, gameVersion)) return NetworkError();\n\n            // ObjectList\n            int? countLinks = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);\n            if (countLinks == null) return NetworkError();\n            MyMwcLog.IfNetVerbose_AddToLog(\"countLinks: \" + countLinks);\n            Links = new List<LinkElement>(countLinks.Value);\n            for (int i = 0; i < countLinks; i++)\n            {\n                int? entityId = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);\n                if (entityId == null) return NetworkError();\n                MyMwcLog.IfNetVerbose_AddToLog(string.Format(\"Links[{0}].EntityId: {1}\", i, entityId));\n\n                short? index = MyMwcMessageIn.ReadInt16Ex(binaryReader, senderEndPoint);\n                if (index == null) return NetworkError();\n                MyMwcLog.IfNetVerbose_AddToLog(string.Format(\"Links[{0}].Index: {1}\", i, index));\n\n                bool? hasSnapPointName = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n                if (!hasSnapPointName.HasValue) return NetworkError();\n                if (hasSnapPointName.Value)\n                {\n                    string snapPointName = MyMwcMessageIn.ReadStringEx(binaryReader, senderEndPoint);\n                    if (snapPointName == null) return NetworkError();\n                    MyMwcLog.IfNetVerbose_AddToLog(string.Format(\"Links[{0}].SnapPointName: {1}\", i, snapPointName));\n                    Links.Add(new LinkElement((uint)entityId.Value, index.Value, snapPointName));\n                }\n                else\n                {\n                    MyMwcLog.IfNetVerbose_AddToLog(\"Links[{0}].SnapPointName: null\");\n                    Links.Add(new LinkElement((uint)entityId.Value, index.Value, null));\n                }\n            }\n\n            return true;\n        }\n\n        public override MyMwcObjectBuilderTypeEnum GetObjectBuilderType()\n        {\n            return MyMwcObjectBuilderTypeEnum.SnapPointLink;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/ObjectBuilders/MySolarSystemAreaEnum.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace MinerWars.CommonLIB.AppCode.ObjectBuilders\n{\n    // NEVER EVER change numbers, these numbers are saved to database\n    // You can only add new one\n    public enum MySolarSystemAreaEnum\n    {\n        Mercury = 1,\n        Venus = 2,\n        Earth = 3,\n        Mars = 4,\n        AsteroidBelt = 5,\n        Jupiter = 6,\n        Saturn = 7,\n        Uranus = 8,\n        Neptune = 9,\n        AsteroidBelt2 = 10,\n        NearSun = 11,\n        Laika = 12,\n        PostJupiterBorder = 13,\n        Nebula = 14,\n        ChinaTrade = 15,\n        RussianTransmitter = 16,\n        SlaverBase = 17,\n        ChineseMines = 18,\n        ChineseRafinary = 19,\n        Junkyard = 20,\n        Rime = 21,\n        Mars3 = 22,\n        Jupiter2 = 23,\n        SmallPirateBase2 = 24,\n        SlaversBase2 = 25,\n        ChineseArea = 26,\n        Medina622 = 27,\n        Mars2 = 28,\n        Valiant = 29,\n        ThirdTransmitter = 30,\n        ChineseTransmitter = 31,\n        Hall = 32,\n        Hell25D = 33,\n        Sky = 34,\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/ObjectBuilders/Object3D/MyMwcObjectBuilder_CargoBox.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing System.IO;\nusing System.Net;\nusing SysUtils.Utils;\n\nnamespace MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D\n{\n    public enum MyMwcObjectBuilder_CargoBox_TypesEnum : byte\n    {\n        Type1 = 1,\n        Type2 = 2,\n        Type3 = 3,\n        Type4 = 4,\n        Type5 = 5,\n        Type6 = 6,\n        Type7 = 7,\n        Type8 = 8,\n        Type9 = 9,\n        Type10 = 10,\n        Type11 = 11,\n        Type12 = 12,\n        TypeProp_A = 13,\n        TypeProp_B = 14,\n        TypeProp_C = 15,\n        TypeProp_D = 16,\n        DroppedItems = 17,\n    }\n\n    public class MyMwcObjectBuilder_CargoBox : MyMwcObjectBuilder_Object3dBase\n    {\n        public MyMwcObjectBuilder_Inventory Inventory { get; set; }\n        public MyMwcObjectBuilder_CargoBox_TypesEnum CargoBoxType { get; set; }\n        public string DisplayName { get; set; }\n\n        internal MyMwcObjectBuilder_CargoBox() : base() \n        {\n            Inventory = new MyMwcObjectBuilder_Inventory();            \n        }\n\n        public MyMwcObjectBuilder_CargoBox(MyMwcObjectBuilder_Inventory inventory)            \n        {\n            Inventory = inventory;            \n        }\n\n        protected override void LoadPersistantFlags()\n        {\n \t        base.LoadPersistantFlags();\n            PersistentFlags |= MyPersistentEntityFlags.DisplayOnHud;\n            PersistentFlags &= ~MyPersistentEntityFlags.ActivatedOnDifficultyHard;\n            PersistentFlags &= ~MyPersistentEntityFlags.ActivatedOnDifficultyNormal;\n        }        \n\n        public override void RemapEntityIds(IMyEntityIdRemapContext remapContext)\n        {\n            base.RemapEntityIds(remapContext);\n            Inventory.RemapEntityIds(remapContext);\n        }\n\n        public override MyMwcObjectBuilderTypeEnum GetObjectBuilderType()\n        {\n            return MyMwcObjectBuilderTypeEnum.CargoBox;\n        }\n\n        public override int? GetObjectBuilderId()\n        {\n            return (int)CargoBoxType;\n        }\n\n        internal override void SetObjectBuilderIdInternal(int? objectBuilderId)\n        {\n            CargoBoxType = (MyMwcObjectBuilder_CargoBox_TypesEnum)Convert.ToUInt16(objectBuilderId);\n        }\n\n        //  Write this object into message-out\n        internal override void Write(BinaryWriter binaryWriter)\n        {\n            base.Write(binaryWriter);\n\n            //  Inventory\n            bool isInventory = Inventory != null;\n            MyMwcMessageOut.WriteBool(isInventory, binaryWriter);\n            if (isInventory) Inventory.Write(binaryWriter);\n\n            //  Cargo box type\n            MyMwcLog.IfNetVerbose_AddToLog(\"CargoBoxType: \" + CargoBoxType);\n            MyMwcMessageOut.WriteObjectBuilderCargoBoxTypesEnum(CargoBoxType, binaryWriter);\n\n            if (DisplayName != null)\n            {\n                MyMwcMessageOut.WriteBool(true, binaryWriter);\n                MyMwcLog.IfNetVerbose_AddToLog(\"DisplayName: \" + this.DisplayName);\n                MyMwcMessageOut.WriteString(DisplayName, binaryWriter);\n            }\n            else\n            {\n                MyMwcLog.IfNetVerbose_AddToLog(\"DisplayName: \" + \"null\");\n                MyMwcMessageOut.WriteBool(false, binaryWriter);\n            }\n        }\n\n        //  Read this object from message-in\n        internal override bool Read(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n        {\n            if (base.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n\n            //  Inventory\n            bool? isInventory = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n            if (isInventory == null) return NetworkError();\n            if (isInventory.Value)\n            {\n                Inventory = MyMwcObjectBuilder_Base.ReadAndCreateNewObject(binaryReader, senderEndPoint) as MyMwcObjectBuilder_Inventory;\n                if (Inventory == null) return NetworkError();\n                if (Inventory.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n            }\n            else\n            {\n                Inventory = null;\n            }\n\n            //  Cargo box type\n            MyMwcObjectBuilder_CargoBox_TypesEnum? cargoBoxType = MyMwcMessageIn.ReadObjectBuilderCargoBoxTypesEnumEx(binaryReader, senderEndPoint);\n            if (cargoBoxType == null) return NetworkError();\n            CargoBoxType = cargoBoxType.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"CargoBoxType: \" + CargoBoxType);\n\n            bool? hasDisplayName = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n            if (!hasDisplayName.HasValue) return NetworkError();\n            if (hasDisplayName.Value)\n            {\n                string displayName = MyMwcMessageIn.ReadStringEx(binaryReader, senderEndPoint);\n                if (displayName == null) return NetworkError();\n                MyMwcLog.IfNetVerbose_AddToLog(\"DisplayName: \" + displayName);\n                DisplayName = displayName;\n            }\n            else\n            {\n                MyMwcLog.IfNetVerbose_AddToLog(\"DisplayName: \" + \"null\");\n                Name = null;\n            }\n\n            return true;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/ObjectBuilders/Object3D/MyMwcObjectBuilder_Drone.cs",
    "content": "﻿using System.Collections.Generic;\nusing System.IO;\nusing System.Net;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing SysUtils.Utils;\n\nnamespace MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D\n{\n    public enum MyMwcObjectBuilder_Drone_TypesEnum : byte\n    {\n        DroneUS = 0,\n        DroneCN = 1,\n        DroneSS = 2,\n    }\n\n    public class MyMwcObjectBuilder_Drone : MyMwcObjectBuilder_SmallShip_Bot\n    {\n        public MyMwcObjectBuilder_Drone_TypesEnum DroneType;\n\n        public MyMwcObjectBuilder_Drone()\n        {\n            Inventory = new MyMwcObjectBuilder_Inventory(new List<MyMwcObjectBuilder_InventoryItem>(), 1);\n            Faction = MyMwcObjectBuilder_FactionEnum.None;\n        }\n\n        public MyMwcObjectBuilder_Drone(\n            MyMwcObjectBuilder_Drone_TypesEnum droneType = MyMwcObjectBuilder_Drone_TypesEnum.DroneUS, \n            MyMwcObjectBuilder_FactionEnum faction = MyMwcObjectBuilder_FactionEnum.None)\n            :this()\n        {\n            DroneType = droneType;\n            Faction = faction;\n        }\n\n        public override void RemapEntityIds(IMyEntityIdRemapContext remapContext)\n        {\n            base.RemapEntityIds(remapContext);\n        }\n\n        public override MyMwcObjectBuilderTypeEnum GetObjectBuilderType()\n        {\n            return MyMwcObjectBuilderTypeEnum.Drone;\n        }\n\n        internal override void SetObjectBuilderIdInternal(int? objectBuilderId)\n        {\n            DroneType = (MyMwcObjectBuilder_Drone_TypesEnum)objectBuilderId;\n        }\n\n        public override int? GetObjectBuilderId()\n        {\n            return (int)DroneType;\n        }\n\n        internal override void Write(BinaryWriter binaryWriter)\n        {\n            base.Write(binaryWriter);\n\n            MyCommonDebugUtils.AssertDebug(Inventory != null);\n\n            // Drone type\n            MyMwcLog.IfNetVerbose_AddToLog(\"DroneType: \" + DroneType);\n            MyMwcMessageOut.WriteByte((byte) DroneType, binaryWriter);\n        }\n\n        internal override bool Read(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n        {\n            if (base.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n\n            if (gameVersion > 01085002)\n            {\n                return ReadCurrent(binaryReader, senderEndPoint, gameVersion);\n            }\n            else\n            {\n                return Read01085002(binaryReader, senderEndPoint, gameVersion);\n            }\n\n\n            \n        }\n        private bool ReadCurrent(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n        {\n            var droneType = MyMwcMessageIn.ReadByteEx(binaryReader, senderEndPoint);\n            if (droneType == null) return false;\n            DroneType = (MyMwcObjectBuilder_Drone_TypesEnum)droneType.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"DroneType: \" + DroneType);\n\n            return true;\n        }\n\n        private bool Read01085002(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n        {\n            var droneType = MyMwcMessageIn.ReadByteEx(binaryReader, senderEndPoint);\n            if (droneType == null) return false;\n            DroneType = (MyMwcObjectBuilder_Drone_TypesEnum) droneType.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"DroneType: \" + DroneType);\n\n            // Owner Ship\n            bool? hasId = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n            if (!hasId.HasValue) return NetworkError(); // Cannot read bool - whether owner entity id is null or not\n            MyMwcLog.IfNetVerbose_AddToLog(\"MyMwcObjectBuilder_Drone.OwnerEntityId.HasValue: \" + hasId.Value);\n\n            // Testing whether owner entity id is null\n            if (hasId.Value)\n            {\n                // entity id has value - read the value\n                uint? ownerEntityID = MyMwcMessageIn.ReadUInt32Ex(binaryReader, senderEndPoint);\n                if (!ownerEntityID.HasValue) return NetworkError(); // Cannot read owner entity ID\n\n                MyMwcLog.IfNetVerbose_AddToLog(\"MyMwcObjectBuilder_Drone.OwnerEntityId.Value: \" + ownerEntityID.Value);\n                this.OwnerId = ownerEntityID.Value;\n            }\n            else\n            {\n                this.OwnerId = null;\n            }\n\n            return true;\n        }\n    }\n}"
  },
  {
    "path": "Sources/CommonLIB/AppCode/ObjectBuilders/Object3D/MyMwcObjectBuilder_DummyPoint.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWarsMath;\nusing System.IO;\nusing System.Net;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing SysUtils.Utils;\n\n\nnamespace MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects\n{\n    public enum MyDummyPointType\n    {\n        Sphere,\n        Box\n    }\n\n    // Do not change numbers, these are saved in DB\n    [Flags]\n    public enum MyDummyPointFlags\n    {\n        NONE =                      0,\n        COLOR_AREA =                1 << 0,\n        PLAYER_START =              1 << 1,\n        DETECTOR =                  1 << 2,\n        SIDE_MISSION =              1 << 3,\n        SAFE_AREA =                 1 << 4,\n        PARTICLE =                  1 << 5,\n        MOTHERSHIP_START =          1 << 6,\n        SURIVE_PREFAB_DESTRUCTION = 1 << 7,\n        RESPAWN_POINT =             1 << 8,\n        TEXTURE_QUAD =              1 << 9,\n        NOTE =                      1 << 10,\n        VOXEL_HAND =                1 << 11,\n    }\n\n    public class MyMwcObjectBuilder_DummyPoint : MyMwcObjectBuilder_Object3dBase\n    {\n        public MyDummyPointType Type { get; set; }\n        public Vector3 Size { get; set; }\n\n        public MyDummyPointFlags DummyFlags { get; set; }\n\n        public Color Color { get; set; }\n\n        public float Argument { get; set; }\n\n        public MyMwcObjectBuilder_FactionEnum RespawnPointFaction { get; set; }\n\n        internal MyMwcObjectBuilder_DummyPoint()\n            : base()\n        {\n            Size = Vector3.One;            \n        }\n\n        public override int? GetObjectBuilderId()\n        {\n            //only one main type\n            return null;\n        }\n\n        public override MyMwcObjectBuilderTypeEnum GetObjectBuilderType()\n        {\n            return MyMwcObjectBuilderTypeEnum.DummyPoint;\n        }\n\n        public override void SetDefaultProperties()\n        {\n            base.SetDefaultProperties();\n\n            RespawnPointFaction = MyMwcObjectBuilder_FactionEnum.None;\n        }\n\n        //  Read this object from message-in\n        internal override bool Read(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n        {\n            if (base.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n\n            // Type\n            ushort? type = MyMwcMessageIn.ReadUInt16Ex(binaryReader, senderEndPoint);\n            if (type == null) return NetworkError();\n            Type = (MyDummyPointType)type.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"Type: \" + Type);\n\n            // Size\n            Vector3? size = MyMwcMessageIn.ReadVector3FloatEx(binaryReader, senderEndPoint);\n            if (size == null) return NetworkError();\n            Size = size.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"Size: \" + Size.ToString());\n\n            // Dummy flags\n            int? flagsResult = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);\n            if (!flagsResult.HasValue) return NetworkError();\n\n            this.DummyFlags = (MyDummyPointFlags)flagsResult.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"DummyFlags: \" + this.DummyFlags);\n\n            // Dummy flags\n            Color? color = MyMwcMessageIn.ReadColorEx(binaryReader, senderEndPoint);\n            if (!color.HasValue) return NetworkError();\n\n            this.Color = color.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"DummyColor: \" + this.Color);\n\n            // Argument\n            Argument = MyMwcMessageIn.ReadFloat(binaryReader);\n\n            // RespawnPointFaction\n            int? respawnPointFaction = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);\n            if (!respawnPointFaction.HasValue) return NetworkError();\n            this.RespawnPointFaction = (MyMwcObjectBuilder_FactionEnum)respawnPointFaction.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"RespawnPointFaction: \" + this.RespawnPointFaction);\n\n            return true;\n        }\n\n        //  Write this object into message-out\n        internal override void Write(BinaryWriter binaryWriter)\n        {\n            base.Write(binaryWriter);\n\n            // Type\n            MyMwcLog.IfNetVerbose_AddToLog(\"Type: \" + Type);\n            binaryWriter.Write((ushort)Type);\n\n            // Size\n            MyMwcLog.IfNetVerbose_AddToLog(\"Size: \" + Size.ToString());\n            MyMwcMessageOut.WriteVector3(Size, binaryWriter);\n\n            // Dummy flags\n            MyMwcLog.IfNetVerbose_AddToLog(\"DummyFlags: \" + this.DummyFlags);\n            MyMwcMessageOut.WriteInt32((int)this.DummyFlags, binaryWriter);\n\n            // Dummy color\n            MyMwcLog.IfNetVerbose_AddToLog(\"DummyColor: \" + this.Color);\n            MyMwcMessageOut.WriteColor(this.Color, binaryWriter);\n\n            // Argument\n            MyMwcLog.IfNetVerbose_AddToLog(\"Argument: \" + this.Argument);\n            MyMwcMessageOut.WriteFloat(this.Argument, binaryWriter);\n\n            // RespawnPointFaction\n            MyMwcLog.IfNetVerbose_AddToLog(\"RespawnPointFaction: \" + this.RespawnPointFaction);\n            MyMwcMessageOut.WriteInt32((int)this.RespawnPointFaction, binaryWriter);\n        }\n    }\n}\n\n\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/ObjectBuilders/Object3D/MyMwcObjectBuilder_EntityDetector.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Net;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing SysUtils.Utils;\n\nnamespace MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D\n{\n    public enum MyMwcObjectBuilder_EntityDetector_TypesEnum : byte\n    {\n        Box,\n        Sphere,\n    }\n\n\n    public class MyMwcObjectBuilder_EntityDetector : MyMwcObjectBuilder_Object3dBase\n    {\n        public Vector3 Size { get; set; }\n        public MyMwcObjectBuilder_EntityDetector_TypesEnum EntityDetectorType { get; set; }\n\n        internal MyMwcObjectBuilder_EntityDetector()\n            : base()\n        {\n            Size = Vector3.Zero;\n        }\n\n        public MyMwcObjectBuilder_EntityDetector(Vector3 size, MyMwcObjectBuilder_EntityDetector_TypesEnum entityDetectorType)            \n        {\n            Size = size;\n            EntityDetectorType = entityDetectorType;\n        }\n\n        public override int? GetObjectBuilderId()\n        {\n            //only one main type\n            return null;\n        }\n\n        public override MyMwcObjectBuilderTypeEnum GetObjectBuilderType()\n        {\n            return MyMwcObjectBuilderTypeEnum.EntityDetector;\n        }\n\n        //  Read this object from message-in\n        internal override bool Read(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n        {\n            if (base.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n\n            //  Entity Detector Type\n            MyMwcObjectBuilder_EntityDetector_TypesEnum? entityDetectorType = MyMwcMessageIn.ReadObjectBuilderEntityDetectorTypesEnumEx(binaryReader, senderEndPoint);\n            if (entityDetectorType == null) return NetworkError();\n            EntityDetectorType = entityDetectorType.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"EntityDetectorType: \" + EntityDetectorType);\n\n            // Size\n            Vector3? size = MyMwcMessageIn.ReadVector3FloatEx(binaryReader, senderEndPoint);\n            if (size == null) return NetworkError();\n            Size = size.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"Size: \" + Size.ToString());\n\n            return true;\n        }\n\n        //  Write this object into message-out\n        internal override void Write(BinaryWriter binaryWriter)\n        {\n            base.Write(binaryWriter);\n\n            //  Entity detector Type\n            MyMwcLog.IfNetVerbose_AddToLog(\"EntityDetectorType: \" + EntityDetectorType);\n            MyMwcMessageOut.WriteObjectBuilderEntityDetectorTypesEnum(EntityDetectorType, binaryWriter);\n\n            // Size\n            MyMwcLog.IfNetVerbose_AddToLog(\"Size: \" + Size.ToString());\n            MyMwcMessageOut.WriteVector3(Size, binaryWriter);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/ObjectBuilders/Object3D/MyMwcObjectBuilder_FoundantionFactory.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Net;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing SysUtils.Utils;\n\nnamespace MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D\n{    \n    public class MyMwcObjectBuilder_FoundationFactory : MyMwcObjectBuilder_Object3dBase\n    {\n        public MyMwcObjectBuilder_PrefabContainer PrefabContainer { get; set; }\n        public bool IsBuilding { get; set; }\n        public int BuildingTimeFromStart { get; set; }\n        public MyMwcObjectBuilder_ObjectToBuild BuildingObject { get; set; }\n        public List<MyMwcObjectBuilder_ObjectToBuild> BuildingQueue { get; set; }\n\n        internal MyMwcObjectBuilder_FoundationFactory()\n            : base()\n        {\n            BuildingQueue = new List<MyMwcObjectBuilder_ObjectToBuild>();            \n        }\n\n        public MyMwcObjectBuilder_FoundationFactory(MyMwcObjectBuilder_PrefabContainer prefabContainer, bool isBuilding, int buildingTimeFromStart, \n            MyMwcObjectBuilder_ObjectToBuild buildingObject, List<MyMwcObjectBuilder_ObjectToBuild> buildingQueue)\n        {\n            PrefabContainer = prefabContainer;\n            IsBuilding = isBuilding;\n            BuildingTimeFromStart = buildingTimeFromStart;\n            BuildingObject = buildingObject;\n            BuildingQueue = buildingQueue;            \n        }\n\n        public override void RemapEntityIds(IMyEntityIdRemapContext remapContext)\n        {\n            base.RemapEntityIds(remapContext);\n            PrefabContainer.RemapEntityIds(remapContext);\n            BuildingObject.RemapEntityIds(remapContext);\n            foreach (var obj in BuildingQueue)\n            {\n                obj.RemapEntityIds(remapContext);\n            }\n        }\n\n        public override MyMwcObjectBuilderTypeEnum GetObjectBuilderType()\n        {\n            return MyMwcObjectBuilderTypeEnum.FoundationFactory;\n        }\n\n        //  Write this object into message-out\n        internal override void Write(BinaryWriter binaryWriter)\n        {\n            base.Write(binaryWriter);\n\n            //  Is building\n            MyMwcLog.IfNetVerbose_AddToLog(\"IsBuilding: \" + IsBuilding);\n            MyMwcMessageOut.WriteBool(IsBuilding, binaryWriter);\n\n            //  Building time from start\n            MyMwcLog.IfNetVerbose_AddToLog(\"BuildingTimeFromStart: \" + BuildingTimeFromStart);\n            MyMwcMessageOut.WriteInt32(BuildingTimeFromStart, binaryWriter);\n\n            //  Prefab container\n            bool isPrefabContainerObjectBuilder = PrefabContainer != null;\n            MyMwcMessageOut.WriteBool(isPrefabContainerObjectBuilder, binaryWriter);\n            if (isPrefabContainerObjectBuilder) PrefabContainer.Write(binaryWriter);\n\n            //  Building queue\n            int countBuildingQueueObjects = BuildingQueue == null ? 0 : BuildingQueue.Count;\n            MyMwcLog.IfNetVerbose_AddToLog(\"CountBuildingQueueObjects: \" + countBuildingQueueObjects);\n            MyMwcMessageOut.WriteInt32(countBuildingQueueObjects, binaryWriter);\n            for (int i = 0; i < countBuildingQueueObjects; i++)\n            {\n                BuildingQueue[i].Write(binaryWriter);\n            }\n\n            //  Building object\n            bool isBuildingObjectObjectBuilder = BuildingObject != null;\n            MyMwcMessageOut.WriteBool(isBuildingObjectObjectBuilder, binaryWriter);\n            if (isBuildingObjectObjectBuilder) BuildingObject.Write(binaryWriter);            \n        }\n\n        //  Read this object from message-in\n        internal override bool Read(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n        {\n            if (base.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n\n            //  Is building\n            bool? isBuilding = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n            if (isBuilding == null) return NetworkError();\n            IsBuilding = isBuilding.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"IsBuilding: \" + IsBuilding);\n\n            //  Building time from start\n            int? buildingTimeFromStart = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);\n            if (buildingTimeFromStart == null) return NetworkError();\n            BuildingTimeFromStart = buildingTimeFromStart.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"BuildingTimeFromStart: \" + BuildingTimeFromStart);\n\n            //  Prefab container\n            bool? isPrefabContainer = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n            if (isPrefabContainer == null) return NetworkError();\n            if (isPrefabContainer.Value)\n            {\n                PrefabContainer = MyMwcObjectBuilder_Base.ReadAndCreateNewObject(binaryReader, senderEndPoint) as MyMwcObjectBuilder_PrefabContainer;\n                if (PrefabContainer == null) return NetworkError();\n                if (PrefabContainer.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n            }\n            else\n            {\n                PrefabContainer = null;\n            }\n\n            //  Building queue\n            int? countBuildingQueueObjects = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);\n            if (countBuildingQueueObjects == null) return NetworkError();\n            MyMwcLog.IfNetVerbose_AddToLog(\"CountBuildingQueueObjects: \" + countBuildingQueueObjects);\n            BuildingQueue = new List<MyMwcObjectBuilder_ObjectToBuild>(countBuildingQueueObjects.Value);\n            for (int i = 0; i < countBuildingQueueObjects; i++)\n            {\n                MyMwcObjectBuilder_ObjectToBuild objectToBuild = MyMwcObjectBuilder_Base.ReadAndCreateNewObject(binaryReader, senderEndPoint) as MyMwcObjectBuilder_ObjectToBuild;\n                if (objectToBuild == null) return NetworkError();\n                if (objectToBuild.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n                BuildingQueue.Add(objectToBuild);\n            }\n\n            //  Building object\n            bool? isBuildingObject = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n            if (isBuildingObject == null) return NetworkError();\n            if (isBuildingObject.Value)\n            {\n                BuildingObject = MyMwcObjectBuilder_Base.ReadAndCreateNewObject(binaryReader, senderEndPoint) as MyMwcObjectBuilder_ObjectToBuild;\n                if (BuildingObject == null) return NetworkError();\n                if (BuildingObject.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n            }\n            else\n            {\n                BuildingObject = null;\n            }            \n\n            return true;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/ObjectBuilders/Object3D/MyMwcObjectBuilder_LargeDebrisField.cs",
    "content": "﻿using System;\nusing System.IO;\nusing System.Net;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing SysUtils.Utils;\n\nnamespace MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D\n{\n    //  IMPORTANT: Never change numeric values and never delete any enum item. These numbers are referenced e.g. from database.\n    public enum MyMwcObjectBuilder_LargeDebrisField_TypesEnum : ushort\n    {\n        Debris84 = 1\n    }\n\n    public class MyMwcObjectBuilder_LargeDebrisField : MyMwcObjectBuilder_Object3dBase\n    {\n        public MyMwcObjectBuilder_LargeDebrisField_TypesEnum DebrisType;\n\n        internal MyMwcObjectBuilder_LargeDebrisField()\n            : base()\n        {\n        }\n\n        public MyMwcObjectBuilder_LargeDebrisField(MyMwcObjectBuilder_LargeDebrisField_TypesEnum debrisType)\n        {\n            DebrisType = debrisType;\n        }\n\n        public override int? GetObjectBuilderId()\n        {\n            return (int)DebrisType;\n        }\n\n        internal override void SetObjectBuilderIdInternal(int? objectBuilderId)\n        {\n            DebrisType = (MyMwcObjectBuilder_LargeDebrisField_TypesEnum)Convert.ToUInt16(objectBuilderId);\n        }\n\n        public override MyMwcObjectBuilderTypeEnum GetObjectBuilderType()\n        {\n            return MyMwcObjectBuilderTypeEnum.LargeDebrisField;\n        }\n\n        //  Write this object into message-out\n        internal override void Write(BinaryWriter binaryWriter)\n        {\n            base.Write(binaryWriter);\n\n            // Debris Field Type\n            MyMwcLog.IfNetVerbose_AddToLog(\"DebrisType: \" + DebrisType);\n            MyMwcMessageOut.WriteObjectBuilderLargeDebrisFieldTypesEnum(DebrisType, binaryWriter);\n        }\n\n        //  Read this object from message-in\n        internal override bool Read(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n        {\n            if (base.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n\n            // Debris Field Type\n            MyMwcObjectBuilder_LargeDebrisField_TypesEnum? debrisFieldType = MyMwcMessageIn.ReadObjectBuilderLargeDebrisFieldTypesEnumEx(binaryReader, senderEndPoint);\n            if (debrisFieldType == null) return NetworkError();\n            DebrisType = debrisFieldType.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"DebrisType: \" + DebrisType);\n            return true;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/ObjectBuilders/Object3D/MyMwcObjectBuilder_LargeShip.cs",
    "content": "﻿using System.Collections.Generic;\nusing System.IO;\nusing System.Net;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.LargeShipTools;\nusing System.Data.SqlClient;\nusing System;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\n\nnamespace MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D\n{\n    //  IMPORTANT: Never change numeric values and never delete any enum item. These numbers are referenced e.g. from database.\n    public enum MyMwcObjectBuilder_LargeShip_TypesEnum : ushort\n    {\n        KAI = 1,\n        MOTHERSHIP_SAYA = 3,\n        JEROMIE_INTERIOR_STATION = 6, //temporary for test mission!!\n        CRUISER_SHIP = 7, //temporary for testing!!\n        ARDANT = 8\n    }\n\n    public class MyMwcObjectBuilder_LargeShip : MyMwcObjectBuilder_Ship\n    {\n        public MyMwcObjectBuilder_LargeShip_TypesEnum ShipType;\n\n        protected MyMwcObjectBuilder_LargeShip() : base()\n        {\n        }\n\n        public MyMwcObjectBuilder_LargeShip(MyMwcObjectBuilder_LargeShip_TypesEnum shipType)\n        {\n            ShipType = shipType;\n        }\n\n        public override int? GetObjectBuilderId()\n        {\n            return (int)ShipType;\n        }\n\n        internal override void SetObjectBuilderIdInternal(int? objectBuilderId)\n        {\n            ShipType = (MyMwcObjectBuilder_LargeShip_TypesEnum) Convert.ToUInt16(objectBuilderId);\n        }\n\n        public override MyMwcObjectBuilderTypeEnum GetObjectBuilderType()\n        {\n            return MyMwcObjectBuilderTypeEnum.LargeShip;\n        }\n\n        //  Write this object into message-out\n        internal override void Write(BinaryWriter binaryWriter)\n        {\n            base.Write(binaryWriter);\n\n            // Ship Type\n            MyMwcLog.IfNetVerbose_AddToLog(\"ShipType: \" + ShipType);\n            MyMwcMessageOut.WriteObjectBuilderLargeShipTypesEnum(ShipType, binaryWriter);\n        }\n\n        //  Read this object from message-in\n        internal override bool Read(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n        {\n            if (base.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n\n            // Ship Type\n            MyMwcObjectBuilder_LargeShip_TypesEnum? shipType = MyMwcMessageIn.ReadObjectBuilderLargeShipTypesEnumEx(binaryReader, senderEndPoint);\n            if (shipType == null) return NetworkError();\n            ShipType = shipType.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"ShipType: \" + ShipType);\n\n            return true;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/ObjectBuilders/Object3D/MyMwcObjectBuilder_Meteor.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWarsMath;\nusing SysUtils.Utils;\n\nnamespace MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D\n{\n    public enum MyMwcObjectBuilder_Meteor_TypesEnum\n    {\n        DEFAULT = 0,\n    }\n    public class MyMwcObjectBuilder_Meteor : MyMwcObjectBuilder_StaticAsteroid\n    {\n        public Vector3 Direction;\n        public int? EffectID;\n\n        public override MyMwcObjectBuilderTypeEnum GetObjectBuilderType()\n        {\n            return MyMwcObjectBuilderTypeEnum.Meteor;\n        }\n        public override int? GetObjectBuilderId()\n        {\n            return (int)MyMwcObjectBuilder_Meteor_TypesEnum.DEFAULT;\n        }\n\n        public MyMwcObjectBuilder_Meteor()\n        {\n        }\n\n        public MyMwcObjectBuilder_Meteor(Vector3 direction, int? effectID)\n        {\n            Direction = direction;\n            EffectID = effectID;\n        }\n        public MyMwcObjectBuilder_Meteor(MyMwcObjectBuilder_StaticAsteroid_TypesEnum asteroidType, MyMwcVoxelMaterialsEnum material)\n            : base(asteroidType, material)\n        {\n        }\n\n        internal override void Write(System.IO.BinaryWriter binaryWriter)\n        {\n            base.Write(binaryWriter);\n\n            // Direction\n            MyMwcLog.IfNetVerbose_AddToLog(\"Direction: \" + Direction);\n            MyMwcMessageOut.WriteVector3(Direction, binaryWriter);\n\n            // EffectID\n            MyMwcLog.IfNetVerbose_AddToLog(\"MyMwcObjectBuilder_Meteor.EffectID.HasValue: \" + this.EffectID.HasValue);\n            MyMwcMessageOut.WriteBool(this.EffectID.HasValue, binaryWriter);\n            if (this.EffectID.HasValue)\n            {\n                MyMwcLog.IfNetVerbose_AddToLog(\"MyMwcObjectBuilder_Meteor.EffectID.Value: \" + this.EffectID.Value);\n                MyMwcMessageOut.WriteInt16((byte)this.EffectID.Value, binaryWriter);\n            }\n        }\n\n        internal override bool Read(System.IO.BinaryReader binaryReader, System.Net.EndPoint senderEndPoint, int gameVersion)\n        {\n            if (base.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n\n            // Direction\n            Vector3? direction = MyMwcMessageIn.ReadVector3FloatEx(binaryReader, senderEndPoint);\n            if (direction == null) return NetworkError();\n            Direction = direction.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"Direction: \" + Direction);\n\n            // Effect ID\n            bool? hasId = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n            if (!hasId.HasValue) return NetworkError(); // Cannot read bool \n            MyMwcLog.IfNetVerbose_AddToLog(\"MyMwcObjectBuilder_Meteor.EffectID.HasValue: \" + hasId.Value);\n\n            // Testing whether Effect ID is null\n            if (hasId.Value)\n            {\n                // effect id has value - read the value\n                EffectID = MyMwcMessageIn.ReadInt16(binaryReader);\n\n                MyMwcLog.IfNetVerbose_AddToLog(\"MyMwcObjectBuilder_Meteor.EffectID.Value: \" + EffectID.Value);\n            }\n            else\n            {\n                this.EffectID = null;\n            }\n\n            return true;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/ObjectBuilders/Object3D/MyMwcObjectBuilder_MysteriousCube.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing System.IO;\nusing System.Net;\nusing SysUtils.Utils;\n\nnamespace MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D\n{\n    public enum MyMwcObjectBuilder_MysteriousCube_TypesEnum : byte\n    {\n        Type1 = 1,\n        Type2 = 2,\n        Type3 = 3,\n    }\n\n    public class MyMwcObjectBuilder_MysteriousCube : MyMwcObjectBuilder_Object3dBase\n    {\n        public MyMwcObjectBuilder_MysteriousCube_TypesEnum MysteriousCubeType { get; set; }\n\n        public MyMwcObjectBuilder_MysteriousCube() : base() \n        {\n        }\n\n        public MyMwcObjectBuilder_MysteriousCube(MyMwcPositionAndOrientation positionAndOrientation)\n            : base(positionAndOrientation) \n        {\n        }\n\n        public override MyMwcObjectBuilderTypeEnum GetObjectBuilderType()\n        {\n            return MyMwcObjectBuilderTypeEnum.MysteriousCube;\n        }\n\n        public override int? GetObjectBuilderId()\n        {\n            return (int)MysteriousCubeType;\n        }\n\n        internal override void SetObjectBuilderIdInternal(int? objectBuilderId)\n        {\n            MysteriousCubeType = (MyMwcObjectBuilder_MysteriousCube_TypesEnum)Convert.ToUInt16(objectBuilderId);\n        }\n\n        //  Write this object into message-out\n        internal override void Write(BinaryWriter binaryWriter)\n        {\n            base.Write(binaryWriter);\n\n            //  Cargo box type\n            MyMwcLog.IfNetVerbose_AddToLog(\"MysteriousCubeType: \" + MysteriousCubeType);\n            MyMwcMessageOut.WriteObjectBuilderMysteriousCubeTypesEnum(MysteriousCubeType, binaryWriter);\n        }\n\n        //  Read this object from message-in\n        internal override bool Read(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n        {\n            if (base.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n\n            //  Cargo box type\n            MyMwcObjectBuilder_MysteriousCube_TypesEnum? mysteriousCubeType = MyMwcMessageIn.ReadObjectBuilderMysteriousCubeTypesEnumEx(binaryReader, senderEndPoint);\n            if (mysteriousCubeType == null) return NetworkError();\n            MysteriousCubeType = mysteriousCubeType.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"MysteriousCubeType: \" + MysteriousCubeType);\n\n            return true;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/ObjectBuilders/Object3D/MyMwcObjectBuilder_Object3dBase.cs",
    "content": "﻿using System.IO;\nusing System.Net;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing System.Data.SqlClient;\nusing System;\nusing MinerWarsMath;\nusing System.Collections.Generic;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\n\n//  Object builder is object that defines how to create instance of particular MyPhysObject**\n//  MyMwcObjectBuilderBase3D - base for all object builder classes that have 3D position and orientation\n\nnamespace MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D\n{\n    public abstract class MyMwcObjectBuilder_Object3dBase : MyMwcObjectBuilder_Base\n    {\n        public MyMwcPositionAndOrientation PositionAndOrientation;\n\n        protected MyMwcObjectBuilder_Object3dBase()\n            : base()\n        {\n        }\n\n        protected MyMwcObjectBuilder_Object3dBase(MyMwcPositionAndOrientation positionAndOrientation)\n        {\n            PositionAndOrientation = positionAndOrientation;\n        }\n\n        //  Write this object into message-out\n        internal override void Write(BinaryWriter binaryWriter)\n        {\n            base.Write(binaryWriter);\n\n            MyMwcLog.IfNetVerbose_AddToLog(\"PositionAndOrientation: \" + PositionAndOrientation.ToString());\n            MyMwcMessageOut.WritePositionAndOrientation(PositionAndOrientation, binaryWriter);\n        }\n\n        //  Read this object from message-in\n        internal override bool Read(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n        {\n            if (base.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n\n            MyMwcPositionAndOrientation? objectPositionAndOrientation = MyMwcMessageIn.ReadPositionAndOrientationEx(binaryReader, senderEndPoint);\n            if (objectPositionAndOrientation == null) return NetworkError();\n            MyMwcLog.IfNetVerbose_AddToLog(\"objectPositionAndOrientation: \" + objectPositionAndOrientation.ToString());\n\n            PositionAndOrientation = objectPositionAndOrientation.Value;\n            return true;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/ObjectBuilders/Object3D/MyMwcObjectBuilder_PrefabContainer.cs",
    "content": "﻿using System.Collections.Generic;\nusing System.IO;\nusing System.Net;\nusing System.Data.SqlClient;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing System;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.Prefabs;\n\nnamespace MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D\n{\n    public enum MyMwcObjectBuilder_PrefabContainer_TypesEnum : ushort\n    {\n        TEMPLATE = 1,\n        INSTANCE = 2\n    }\n\n    //This class represents instance of prefab container\n    public class MyMwcObjectBuilder_PrefabContainer : MyMwcObjectBuilder_Object3dBase\n    {\n        /** Reference to template, container was created from - in case it was not modified, all prefabs will be loaded from template.\n         *  When creating new container and we create from template or copy from instance, that has template set, we copy this ID to new instance.\n         *  In future, we must be able to mark the template as deleted(player will have templates, that bothers him) - that will result in action,\n         *  when we will mark the template as deleted(bool objectProperty) and when loading templates, marked wont be included. It will be then usefull,\n         *  if there is some procedure running once in a time, which scans, if there are some templates, that are no longer referenced and thus can be deleted\n         *  physically and permanently.\n         */\n        public int? TemplateId;\n        public MyMwcObjectBuilder_PrefabContainer_TypesEnum ContainerType;\n        public int UserOwnerID;\n        public MyMwcObjectBuilder_FactionEnum Faction;\n        public MyMwcObjectBuilder_Inventory Inventory;\n        public string DisplayName;\n        public MyMwcObjectBuilder_EntityUseProperties UseProperties;\n        public bool AlarmOn;\n        public int? RefillTime;\n\n        /** When we create instance from template, we can watch if any modification has been done to it. In case it wasnt,\n         *  we wont fill this list - but \n         */\n        public List<MyMwcObjectBuilder_PrefabBase> Prefabs;\n\n        internal MyMwcObjectBuilder_PrefabContainer()\n            : base()\n        {\n            Inventory = new MyMwcObjectBuilder_Inventory();\n        }\n\n        public MyMwcObjectBuilder_PrefabContainer(int? templateId, MyMwcObjectBuilder_PrefabContainer_TypesEnum containerType,\n            List<MyMwcObjectBuilder_PrefabBase> prefabs, int userOwnerID, MyMwcObjectBuilder_FactionEnum faction, MyMwcObjectBuilder_Inventory inventory)\n        {\n            TemplateId = templateId;\n            ContainerType = containerType;\n            Prefabs = prefabs;\n            UserOwnerID = userOwnerID;\n            Faction = faction;\n            Inventory = inventory;\n        }\n\n        public override void RemapEntityIds(IMyEntityIdRemapContext remapContext)\n        {\n            base.RemapEntityIds(remapContext);\n            foreach (var prefab in Prefabs)\n            {\n                prefab.RemapEntityIds(remapContext);\n            }\n            Inventory.RemapEntityIds(remapContext);\n        }\n\n        public override MyMwcObjectBuilderTypeEnum GetObjectBuilderType()\n        {\n            return MyMwcObjectBuilderTypeEnum.PrefabContainer;\n        }\n\n        public override int? GetObjectBuilderId()\n        {\n            return (int)ContainerType;\n        }\n\n        public override void ClearEntityId()\n        {\n            base.ClearEntityId();\n            foreach (var p in Prefabs)\n            {\n                p.ClearEntityId();\n            }\n        }\n\n        internal override void SetObjectBuilderIdInternal(int? objectBuilderId)\n        {\n            ContainerType = (MyMwcObjectBuilder_PrefabContainer_TypesEnum)Convert.ToUInt16(objectBuilderId);\n        }\n\n        //  Write this object into message-out\n        internal override void Write(BinaryWriter binaryWriter)\n        {\n            base.Write(binaryWriter);\n\n            //  Template ID\n            MyMwcMessageOut.WriteBool(TemplateId.HasValue, binaryWriter);\n            if (TemplateId.HasValue)\n            {\n                MyMwcLog.IfNetVerbose_AddToLog(\"TemplateId: \" + TemplateId);\n                MyMwcMessageOut.WriteInt32(TemplateId.Value, binaryWriter);\n            }            \n\n            //  Container Type\n            MyMwcLog.IfNetVerbose_AddToLog(\"ContainerType: \" + (int)ContainerType);\n            MyMwcMessageOut.WriteObjectBuilderPrefabContainerTypesEnum(ContainerType, binaryWriter);\n\n            // Faction must be defined\n            System.Diagnostics.Debug.Assert(Enum.IsDefined(typeof(MyMwcObjectBuilder_FactionEnum), Faction));\n            // Faction            \n            MyMwcLog.IfNetVerbose_AddToLog(\"Faction: \" + (int)Faction);\n            MyMwcMessageOut.WriteInt32((int)Faction, binaryWriter);\n\n            // Prefabs\n            int countPrefabs = Prefabs == null ? 0 : Prefabs.Count;\n            MyMwcLog.IfNetVerbose_AddToLog(\"countPrefabs: \" + countPrefabs);\n            MyMwcMessageOut.WriteInt32(countPrefabs, binaryWriter);\n            for (int i = 0; i < countPrefabs; i++)\n            {\n                Prefabs[i].Write(binaryWriter);\n            }\n\n            // Inventory            \n            bool isInventory = Inventory != null;\n            MyMwcMessageOut.WriteBool(isInventory, binaryWriter);\n            if (isInventory) Inventory.Write(binaryWriter);\n\n            if (DisplayName != null)\n            {\n                MyMwcMessageOut.WriteBool(true, binaryWriter);\n                MyMwcLog.IfNetVerbose_AddToLog(\"DisplayName: \" + this.DisplayName);\n                MyMwcMessageOut.WriteString(DisplayName, binaryWriter);\n            }\n            else\n            {\n                MyMwcLog.IfNetVerbose_AddToLog(\"DisplayName: \" + \"null\");\n                MyMwcMessageOut.WriteBool(false, binaryWriter);\n            }\n\n            //  Use Properties\n            bool hasUseProperties = UseProperties != null;\n            MyMwcMessageOut.WriteBool(hasUseProperties, binaryWriter);\n            if (hasUseProperties) UseProperties.Write(binaryWriter);\n\n            //  Alarm On\n            MyMwcLog.IfNetVerbose_AddToLog(\"AlarmOn: \" + AlarmOn);\n            MyMwcMessageOut.WriteBool(AlarmOn, binaryWriter);\n\n            //  Refill time\n            MyMwcMessageOut.WriteBool(RefillTime.HasValue, binaryWriter);\n            if (RefillTime.HasValue)\n            {\n                MyMwcLog.IfNetVerbose_AddToLog(\"RefillTime: \" + RefillTime);\n                MyMwcMessageOut.WriteInt32(RefillTime.Value, binaryWriter);\n            }\n        }\n\n        //  Read this object from message-in\n        internal override bool Read(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n        {\n            if (base.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n\n            //  TemplateId\n            bool? isTemplateId = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n            if (isTemplateId == null) return NetworkError();\n            if (isTemplateId.Value)\n            {\n                TemplateId = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);\n            }\n            else\n            {\n                TemplateId = null;\n            }\n            \n            //  Container Type\n            MyMwcObjectBuilder_PrefabContainer_TypesEnum? containerType = MyMwcMessageIn.ReadObjectBuilderPrefabContainerTypesEnumEx(binaryReader, senderEndPoint);\n            if (containerType == null) return NetworkError();\n            ContainerType = containerType.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"ContainerType: \" + ContainerType);\n\n            // Faction\n            Faction = (MyMwcObjectBuilder_FactionEnum)MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);\n            // Faction must be defined\n            System.Diagnostics.Debug.Assert(Enum.IsDefined(typeof(MyMwcObjectBuilder_FactionEnum), Faction));\n\n            //  Prefabs\n            int? countPrefabs = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);\n            if (countPrefabs == null) return NetworkError();\n            MyMwcLog.IfNetVerbose_AddToLog(\"countPrefabs: \" + countPrefabs);\n            Prefabs = new List<MyMwcObjectBuilder_PrefabBase>(countPrefabs.Value);\n            for (int i = 0; i < countPrefabs; i++)\n            {\n                MyMwcObjectBuilder_PrefabBase prefab = MyMwcObjectBuilder_Base.ReadAndCreateNewObject(binaryReader, senderEndPoint) as MyMwcObjectBuilder_PrefabBase;\n                if (prefab == null) return NetworkError();\n                if (prefab.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n                Prefabs.Add(prefab);\n            }\n\n            //  Inventory\n            bool? isInventory = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n            if (isInventory == null) return NetworkError();\n            if (isInventory.Value)\n            {\n                Inventory = MyMwcObjectBuilder_Base.ReadAndCreateNewObject(binaryReader, senderEndPoint) as MyMwcObjectBuilder_Inventory;\n                if (Inventory == null) return NetworkError();\n                if (Inventory.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n            }\n            else\n            {\n                Inventory = null;\n            }\n\n\n            bool? hasDisplayName = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n            if (!hasDisplayName.HasValue) return NetworkError();\n            if (hasDisplayName.Value)\n            {\n                string displayName = MyMwcMessageIn.ReadStringEx(binaryReader, senderEndPoint);\n                if (displayName == null) return NetworkError();\n                MyMwcLog.IfNetVerbose_AddToLog(\"DisplayName: \" + displayName);\n                DisplayName = displayName;\n            }\n            else\n            {\n                MyMwcLog.IfNetVerbose_AddToLog(\"DisplayName: \" + \"null\");\n                DisplayName = null;\n            }\n\n            //  Use Properties\n            bool? hasUseProperties = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n            if (hasUseProperties == null) return NetworkError();\n            if (hasUseProperties.Value)\n            {\n                UseProperties = MyMwcObjectBuilder_Base.ReadAndCreateNewObject(binaryReader, senderEndPoint) as MyMwcObjectBuilder_EntityUseProperties;\n                if (UseProperties == null) return NetworkError();\n                if (UseProperties.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n            }\n            else\n            {\n                UseProperties = null;\n            }\n\n            //  Alarm On\n            bool? alarmOn = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n            if (alarmOn == null) return NetworkError();\n            AlarmOn = alarmOn.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"AlarmOn: \" + AlarmOn);\n\n            //  Refill time\n            bool? refillTime = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n            if (refillTime == null) return NetworkError();\n            if (refillTime.Value)\n            {\n                RefillTime = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);\n            }\n            else\n            {\n                RefillTime = null;\n            }\n\n            return true;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/ObjectBuilders/Object3D/MyMwcObjectBuilder_Ship.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Net;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing SysUtils.Utils;\n\nnamespace MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D\n{\n    public abstract class MyMwcObjectBuilder_Ship : MyMwcObjectBuilder_Object3dBase\n    {\n        public MyMwcObjectBuilder_FactionEnum Faction { get; set; }\n        public MyMwcObjectBuilder_Inventory Inventory { get; set; }\n        public string DisplayName { get; set; }\n\n        protected MyMwcObjectBuilder_Ship()\n            : base()\n        {            \n        }\n\n        protected MyMwcObjectBuilder_Ship(MyMwcObjectBuilder_Inventory inventory)\n            : this()\n        {\n            Inventory = inventory;\n        }\n\n        public override void RemapEntityIds(IMyEntityIdRemapContext remapContext)\n        {\n            base.RemapEntityIds(remapContext);\n            Inventory.RemapEntityIds(remapContext);\n        }\n\n        //  Write this object into message-out\n        internal override void Write(BinaryWriter binaryWriter)\n        {\n            base.Write(binaryWriter);            \n\n            //  Inventory\n            bool isInventory = Inventory != null;\n            MyMwcMessageOut.WriteBool(isInventory, binaryWriter);\n            if (isInventory) Inventory.Write(binaryWriter);\n            MyMwcMessageOut.WriteInt32((int)Faction, binaryWriter);\n\n            if (DisplayName != null)\n            {\n                MyMwcMessageOut.WriteBool(true, binaryWriter);\n                MyMwcLog.IfNetVerbose_AddToLog(\"DisplayName: \" + this.DisplayName);\n                MyMwcMessageOut.WriteString(DisplayName, binaryWriter);\n            }\n            else\n            {\n                MyMwcLog.IfNetVerbose_AddToLog(\"DisplayName: \" + \"null\");\n                MyMwcMessageOut.WriteBool(false, binaryWriter);\n            }\n        }\n\n        //  Read this object from message-in\n        internal override bool Read(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n        {\n            if (base.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();            \n\n            //  Inventory\n            bool? isInventory = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n            if (isInventory == null) return NetworkError();\n            if (isInventory.Value)\n            {\n                Inventory = MyMwcObjectBuilder_Base.ReadAndCreateNewObject(binaryReader, senderEndPoint) as MyMwcObjectBuilder_Inventory;\n                if (Inventory == null) return NetworkError();\n                if (Inventory.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n            }\n            else\n            {\n                Inventory = null;\n            }\n            Faction = (MyMwcObjectBuilder_FactionEnum)MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);\n\n            bool? hasDisplayName = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n            if (!hasDisplayName.HasValue) return NetworkError();\n            if (hasDisplayName.Value)\n            {\n                string displayName = MyMwcMessageIn.ReadStringEx(binaryReader, senderEndPoint);\n                if (displayName == null) return NetworkError();\n                MyMwcLog.IfNetVerbose_AddToLog(\"DisplayName: \" + displayName);\n                DisplayName = displayName;\n            }\n            else\n            {\n                MyMwcLog.IfNetVerbose_AddToLog(\"DisplayName: \" + \"null\");\n                DisplayName = null;\n            }\n\n            return true;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/ObjectBuilders/Object3D/MyMwcObjectBuilder_SmallDebris.cs",
    "content": "﻿using System;\nusing System.IO;\nusing System.Net;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing System.Collections.Generic;\nusing SysUtils.Utils;\nusing System.Data.SqlClient;\n\nnamespace MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D\n{\n    //  IMPORTANT: Never change numeric values and never delete any enum item. These numbers are referenced e.g. from database.\n    public enum MyMwcObjectBuilder_SmallDebris_TypesEnum : ushort\n    {\n        pipe_bundle = 1,\n        //sat_01 = 2,\n        Debris1 = 3,\n        Debris2 = 4,\n        Debris3 = 5,\n        Debris4 = 6,\n        Debris5 = 7,\n        Debris6 = 8,\n        Debris7 = 9,\n        Debris8 = 10,\n        Debris9 = 11,\n        Debris10 = 12,\n        Debris11 = 13,\n        Debris12 = 14,\n        Debris13 = 15,\n        Debris14 = 16,\n        Debris15 = 17,\n        Debris16 = 18,\n        Debris17 = 19,\n        Debris18 = 20,\n        Debris19 = 21,\n        Debris20 = 22,\n        Debris21 = 23,\n        Debris22 = 24,\n        Debris23 = 25,\n        Debris24 = 26,\n        Debris25 = 27,\n        Debris26 = 28,\n        Debris27 = 29,\n        Debris28 = 30,\n        Debris29 = 31,\n        Debris30 = 32,\n        Debris31 = 33,\n        Debris32_pilot = 34,\n        UtilityVehicle_1 = 35,\n        //UtilityVehicle_2 = 36,\n        Cistern = 37,\n        Standard_Container_1 = 38,\n        Standard_Container_2 = 39,\n        Standard_Container_3 = 40,\n        Standard_Container_4 = 41,\n        //DerelictShip01 = 42\n        //MechPlate1 = 43,\n        //MechPlate2 = 44,\n        //MechPlate3 = 45,\n        //ScrapPlate1 = 46,\n        //ScrapPlate2 = 47\n    }\n\n    enum MyMwcObjectBuilder_SmallDebris_PropertiesEnum : short\n    {\n        Immovable = 1\n    }\n    \n    public class MyMwcObjectBuilder_SmallDebris : MyMwcObjectBuilder_Object3dBase\n    {\n        public MyMwcObjectBuilder_SmallDebris_TypesEnum DebrisType;\n        public bool Immovable;\n        public float Mass;\n\n        internal MyMwcObjectBuilder_SmallDebris()\n            : base()\n        {\n        }\n\n        public MyMwcObjectBuilder_SmallDebris(MyMwcObjectBuilder_SmallDebris_TypesEnum debrisType, bool immovable, float mass)\n        {\n            DebrisType = debrisType;\n            Immovable = immovable;\n            Mass = mass;\n        }\n\n        public override int? GetObjectBuilderId()\n        {\n            return (int)DebrisType;\n        }\n\n        internal override void SetObjectBuilderIdInternal(int? objectBuilderId)\n        {\n            DebrisType = (MyMwcObjectBuilder_SmallDebris_TypesEnum) Convert.ToUInt16(objectBuilderId);\n        }\n\n        public override MyMwcObjectBuilderTypeEnum GetObjectBuilderType()\n        {\n            return MyMwcObjectBuilderTypeEnum.SmallDebris;\n        }\n\n        //  Write this object into message-out\n        internal override void Write(BinaryWriter binaryWriter)\n        {\n            base.Write(binaryWriter);\n\n            // Debris Type\n            MyMwcLog.IfNetVerbose_AddToLog(\"DebrisType: \" + DebrisType);\n            MyMwcMessageOut.WriteObjectBuilderSmallDebrisTypesEnum(DebrisType, binaryWriter);\n\n            //Immovable\n            MyMwcLog.IfNetVerbose_AddToLog(\"Immovable: \" + Immovable);\n            MyMwcMessageOut.WriteBool(Immovable, binaryWriter);\n\n        }\n\n        //  Read this object from message-in\n        internal override bool Read(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n        {\n            if (base.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n\n            // Ship Type\n            MyMwcObjectBuilder_SmallDebris_TypesEnum? debrisType = MyMwcMessageIn.ReadObjectBuilderSmallDebrisTypesEnumEx(binaryReader, senderEndPoint);\n            if (debrisType == null) return NetworkError();\n            DebrisType = debrisType.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"DebrisType: \" + DebrisType);\n\n            //Immovable\n            bool? immovable = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n            if (immovable == null) return NetworkError();\n            Immovable = immovable.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"Immovable: \" + Immovable);\n\n            return true;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/ObjectBuilders/Object3D/MyMwcObjectBuilder_SmallShip.cs",
    "content": "﻿using System.Collections.Generic;\nusing System.IO;\nusing System.Net;\nusing MinerWarsMath;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing System;\nusing System.Data.SqlClient;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\n\nnamespace MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D\n{\n    //  IMPORTANT: Never change numeric values and never delete any enum item. These numbers are referenced e.g. from database.\n    public enum MyMwcObjectBuilder_SmallShip_TypesEnum : byte\n    {\n        LIBERATOR = 1,\n        ENFORCER = 2,\n        KAMMLER = 3,\n        GETTYSBURG = 4,\n        VIRGINIA = 5,\n        BAER = 6,\n        HEWER = 7,\n        RAZORCLAW = 8,\n        GREISER = 9,\n        TRACER = 10,\n        //MINER_SHIP_11_RIGJ = 11,\n        //SMALL_SHIP_TALON = 12,\n        JACKNIFE = 13,\n        DOON = 14,\n        HAMMER = 15,\n        ORG = 16,\n        YG = 17,\n        HAWK = 18,\n        PHOENIX = 19,\n        LEVIATHAN = 20,\n        ROCKHEATER = 21,\n        STEELHEAD = 22,\n        FEDER = 23,\n        STANISLAV = 24\n    }\n\n    public class MyMwcObjectBuilder_SmallShip : MyMwcObjectBuilder_Ship\n    {\n        public MyMwcObjectBuilder_SmallShip_TypesEnum ShipType { get; set; }\n        public List<MyMwcObjectBuilder_SmallShip_Weapon> Weapons { get; set; }\n        [Obsolete(\"Ammo is now as inventory item\")]\n        public List<MyMwcObjectBuilder_SmallShip_Ammo> Ammo { get; set; }\n        [Obsolete(\"Tool is now as inventory item\")]\n        public List<MyMwcObjectBuilder_SmallShip_Tool> Tools { get; set; }\n        public MyMwcObjectBuilder_SmallShip_Engine Engine { get; set; }\n        public List<MyMwcObjectBuilder_AssignmentOfAmmo> AssignmentOfAmmo { get; set; }\n        public MyMwcObjectBuilder_SmallShip_Armor Armor { get; set; }\n        public MyMwcObjectBuilder_SmallShip_Radar Radar { get; set; }\n        public float? ShipMaxHealth { get; set; }\n        public float ShipHealthRatio { get; set; }\n        public float ArmorHealth { get; set; }\n        public float Oxygen { get; set; }\n        public float Fuel { get; set; }\n        public bool ReflectorLight { get; set; }\n        public bool ReflectorLongRange { get; set; }\n        public float ReflectorShadowDistance { get; set; }\n        public bool IsDummy { get; set; }\n        public int AIPriority { get; set; }\n\n        public uint? OwnerId { get; set; } // Not stored in DB\n\n        internal MyMwcObjectBuilder_SmallShip()\n            : base()\n        {\n            Weapons = new List<MyMwcObjectBuilder_SmallShip_Weapon>();\n            AssignmentOfAmmo = new List<MyMwcObjectBuilder_AssignmentOfAmmo>();\n        }\n\n        public MyMwcObjectBuilder_SmallShip(MyMwcObjectBuilder_SmallShip_TypesEnum shipType,\n            MyMwcObjectBuilder_Inventory inventory,\n            List<MyMwcObjectBuilder_SmallShip_Weapon> weapons,\n            MyMwcObjectBuilder_SmallShip_Engine engine, \n            List<MyMwcObjectBuilder_AssignmentOfAmmo> assignmentOfAmmo,\n            MyMwcObjectBuilder_SmallShip_Armor armor,\n            MyMwcObjectBuilder_SmallShip_Radar radar,\n            float? shipMaxHealth,\n            float shipHealthRatio,\n            float armorHealth,\n            float oxygen,\n            float fuel,\n            bool reflectorLight,\n            bool reflectorLongRange,\n            float reflectorShadowDistance,\n            int aiPriority)\n                : base(inventory)\n        {\n            ShipType = shipType;\n            Weapons = weapons;\n            Engine = engine;                        \n            AssignmentOfAmmo = assignmentOfAmmo;\n            Armor = armor;\n            Radar = radar;\n            ShipMaxHealth = shipMaxHealth;\n            ShipHealthRatio = shipHealthRatio;\n            ArmorHealth = armorHealth;\n            Oxygen = oxygen;\n            Fuel = fuel;\n            ReflectorLight = reflectorLight;\n            ReflectorLongRange = reflectorLongRange;\n            ReflectorShadowDistance = reflectorShadowDistance;\n            AIPriority = aiPriority;\n        }\n\n        protected override void LoadPersistantFlags()\n        {\n            base.LoadPersistantFlags();\n            PersistentFlags |= MyPersistentEntityFlags.DisplayOnHud;\n        }\n\n        public override void RemapEntityIds(IMyEntityIdRemapContext remapContext)\n        {\n            base.RemapEntityIds(remapContext);\n            if (Weapons != null)\n            {\n                foreach (var weapon in Weapons)\n                {\n                    weapon.RemapEntityIds(remapContext);\n                }\n            }\n\n            if (Ammo != null)\n            {\n                foreach (var ammo in Ammo)\n                {\n                    ammo.RemapEntityIds(remapContext);\n                }\n            }\n\n            if (Tools != null)\n            {\n                foreach (var tool in Tools)\n                {\n                    tool.RemapEntityIds(remapContext);\n                }\n            }\n\n            foreach (var assignment in AssignmentOfAmmo)\n            {\n                assignment.RemapEntityIds(remapContext);\n            }\n\n            if (Engine != null)\n                Engine.RemapEntityIds(remapContext);\n            \n            if (Armor != null)\n                Armor.RemapEntityIds(remapContext);\n\n            if (Radar != null)\n                Radar.RemapEntityIds(remapContext);\n\n            if (OwnerId != null)\n                OwnerId = remapContext.RemapEntityId(OwnerId);\n        }\n\n        //  Write this object into message-out\n        internal override void Write(BinaryWriter binaryWriter)\n        {\n            base.Write(binaryWriter);\n\n            //  Ship Type\n            int? objectBuilderId = GetObjectBuilderId();\n            System.Diagnostics.Trace.Assert(objectBuilderId.HasValue);\n            MyMwcLog.IfNetVerbose_AddToLog(\"ShipType: \" + objectBuilderId);\n            MyMwcMessageOut.WriteByte((byte) objectBuilderId.Value, binaryWriter);\n\n            //  Weapons\n            int countWeapons = Weapons == null ? 0 : Weapons.Count;\n            MyMwcLog.IfNetVerbose_AddToLog(\"countWeapons: \" + countWeapons);\n            MyMwcMessageOut.WriteInt32(countWeapons, binaryWriter);\n            for (int i = 0; i < countWeapons; i++)\n            {\n                Weapons[i].Write(binaryWriter);\n            }\n\n            ////  Ammo\n            //int countAmmo = Ammo == null ? 0 : Ammo.Count;\n            //MyMwcLog.IfNetVerbose_AddToLog(\"countAmmo: \" + countAmmo);\n            //MyMwcMessageOut.WriteInt32(countAmmo, binaryWriter);\n            //for (int i = 0; i < countAmmo; i++)\n            //{\n            //    Ammo[i].Write(binaryWriter);\n            //}\n\n            //  Assignment of ammo\n            int countAssignAmmo = AssignmentOfAmmo == null ? 0 : AssignmentOfAmmo.Count;\n            MyMwcLog.IfNetVerbose_AddToLog(\"countAssignAmmo: \" + countAssignAmmo);\n            MyMwcMessageOut.WriteInt32(countAssignAmmo, binaryWriter);\n            for (int i = 0; i < countAssignAmmo; i++)\n            {\n                AssignmentOfAmmo[i].Write(binaryWriter);\n            }\n\n            ////  Tools\n            //int countTools = Tools == null ? 0 : Tools.Count;\n            //MyMwcLog.IfNetVerbose_AddToLog(\"countTools: \" + countTools);\n            //MyMwcMessageOut.WriteInt32(countTools, binaryWriter);\n            //for (int i = 0; i < countTools; i++)\n            //{\n            //    Tools[i].Write(binaryWriter);\n            //}\n\n            //  Engine\n            bool isEngine = Engine != null;\n            MyMwcMessageOut.WriteBool(isEngine, binaryWriter);\n            if (isEngine) Engine.Write(binaryWriter);\n\n            //  Armor\n            bool isArmor = Armor != null;\n            MyMwcMessageOut.WriteBool(isArmor, binaryWriter);\n            if (isArmor) Armor.Write(binaryWriter);\n\n            //  Radar\n            bool isRadar = Radar != null;\n            MyMwcMessageOut.WriteBool(isRadar, binaryWriter);\n            if (isRadar) Radar.Write(binaryWriter);\n\n            bool hasMaxHealth = ShipMaxHealth != null;\n            MyMwcMessageOut.WriteBool(hasMaxHealth, binaryWriter);\n            if (hasMaxHealth)\n            {\n                if (float.IsNaN(ShipMaxHealth.Value) || float.IsInfinity(ShipMaxHealth.Value))\n                {\n                    System.Diagnostics.Debug.Fail(\"ShipMaxHealth is: \" + ShipMaxHealth.Value);\n                    ShipMaxHealth = null; // MyGameplayConstants.MAX_HEALTH_MAX;\n                }\n\n                // Ship's max health\n                MyMwcLog.IfNetVerbose_AddToLog(\"ShipMaxHealth: \" + ShipMaxHealth.Value);\n                MyMwcMessageOut.WriteFloat(ShipMaxHealth.Value, binaryWriter);\n            }\n\n            // Ship's health ratio\n            MyMwcLog.IfNetVerbose_AddToLog(\"ShipHealthRatio: \" + ShipHealthRatio);\n            System.Diagnostics.Debug.Assert(ShipHealthRatio <= 1f, \"Ship health ratio is greater than 1f\");\n            System.Diagnostics.Debug.Assert(ShipHealthRatio >= 0f, \"Ship health ratio is lesser than 0f\");\n            MyMwcMessageOut.WriteFloat(ShipHealthRatio, binaryWriter);\n\n            // Armor's health\n            MyMwcLog.IfNetVerbose_AddToLog(\"ArmorHealth: \" + ArmorHealth);\n            MyMwcMessageOut.WriteFloat(ArmorHealth, binaryWriter);\n\n            // Oxygen\n            MyMwcLog.IfNetVerbose_AddToLog(\"Oxygen: \" + Oxygen);\n            MyMwcMessageOut.WriteFloat(Oxygen, binaryWriter);\n\n            // Fuel\n            MyMwcLog.IfNetVerbose_AddToLog(\"Fuel: \" + Fuel);\n            MyMwcMessageOut.WriteFloat(Fuel, binaryWriter);\n\n            // Refelector light\n            MyMwcLog.IfNetVerbose_AddToLog(\"ReflectorLight: \" + ReflectorLight);\n            MyMwcMessageOut.WriteBool(ReflectorLight, binaryWriter);\n\n            // Refelector long range\n            MyMwcLog.IfNetVerbose_AddToLog(\"ReflectorLongRange: \" + ReflectorLongRange);\n            MyMwcMessageOut.WriteBool(ReflectorLongRange, binaryWriter);\n\n            // Reflector shadow distance\n            MyMwcLog.IfNetVerbose_AddToLog(\"ReflectorShadowDistance: \" + ReflectorShadowDistance);\n            MyMwcMessageOut.WriteFloat(ReflectorShadowDistance, binaryWriter);\n\n            // AI Priority\n            MyMwcLog.IfNetVerbose_AddToLog(\"AIPriority: \" + AIPriority);\n            MyMwcMessageOut.WriteInt32(AIPriority, binaryWriter);\n\n            // OwnerId\n            MyMwcLog.IfNetVerbose_AddToLog(\"OwnerId: \" + OwnerId);\n            MyMwcMessageOut.WriteBool(OwnerId.HasValue, binaryWriter);\n            if (OwnerId.HasValue)\n                MyMwcMessageOut.WriteUInt32(OwnerId.Value, binaryWriter);\n        }\n\n        //  Read this object from message-in\n        internal override bool Read(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n        {\n            if (base.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n\n            if (gameVersion > 01085002)\n            {\n                return Read_Current(binaryReader, senderEndPoint, gameVersion);\n            }\n            else\n            {\n                return Read_01085002(binaryReader, senderEndPoint, gameVersion);\n            }\n        }\n\n        private bool Read_Current(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n        {\n            //  Ship Type\n            byte? objectBuilderID = MyMwcMessageIn.ReadByteEx(binaryReader, senderEndPoint);\n            if (objectBuilderID == null) return NetworkError();\n            SetObjectBuilderId(objectBuilderID.Value);\n            MyMwcLog.IfNetVerbose_AddToLog(\"ShipType: \" + objectBuilderID.Value);\n\n            //  Weapons And Devices\n            int? countWeapons = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);\n            if (countWeapons == null) return NetworkError();\n            MyMwcLog.IfNetVerbose_AddToLog(\"countWeaponsAndDevices: \" + countWeapons);\n            Weapons = new List<MyMwcObjectBuilder_SmallShip_Weapon>(countWeapons.Value);\n            for (int i = 0; i < countWeapons; i++)\n            {\n                MyMwcObjectBuilder_SmallShip_Weapon newWAD =\n                    MyMwcObjectBuilder_Base.ReadAndCreateNewObject(binaryReader, senderEndPoint) as\n                    MyMwcObjectBuilder_SmallShip_Weapon;\n                if (newWAD == null) return NetworkError();\n                if (newWAD.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n\n                // Disabled weapons are not added\n                if (!MyMwcObjectBuilder_InventoryItem.IsDisabled(newWAD.GetObjectBuilderType(), newWAD.GetObjectBuilderId()))\n                {\n                    Weapons.Add(newWAD);\n                }\n            }\n\n            //  Assignment of ammo\n            int? countAssignAmmo = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);\n            if (countAssignAmmo == null) return NetworkError();\n            MyMwcLog.IfNetVerbose_AddToLog(\"countAssignAmmo: \" + countAssignAmmo);\n            AssignmentOfAmmo = new List<MyMwcObjectBuilder_AssignmentOfAmmo>(countAssignAmmo.Value);\n            for (int i = 0; i < countAssignAmmo; i++)\n            {\n                MyMwcObjectBuilder_AssignmentOfAmmo newAssignAmmo =\n                    MyMwcObjectBuilder_Base.ReadAndCreateNewObject(binaryReader, senderEndPoint) as\n                    MyMwcObjectBuilder_AssignmentOfAmmo;\n                if (newAssignAmmo == null) return NetworkError();\n                if (newAssignAmmo.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n                AssignmentOfAmmo.Add(newAssignAmmo);\n            }\n\n\n            //  Engine\n            bool? isEngine = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n            if (isEngine == null) return NetworkError();\n            if (isEngine.Value)\n            {\n                Engine =\n                    MyMwcObjectBuilder_Base.ReadAndCreateNewObject(binaryReader, senderEndPoint) as\n                    MyMwcObjectBuilder_SmallShip_Engine;\n                if (Engine == null) return NetworkError();\n                if (Engine.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n            }\n            else\n            {\n                Engine = null;\n            }\n\n            //  Armor\n            bool? isArmor = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n            if (isArmor == null) return NetworkError();\n            if (isArmor.Value)\n            {\n                Armor =\n                    MyMwcObjectBuilder_Base.ReadAndCreateNewObject(binaryReader, senderEndPoint) as\n                    MyMwcObjectBuilder_SmallShip_Armor;\n                if (Armor == null) return NetworkError();\n                if (Armor.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n            }\n            else\n            {\n                Armor = null;\n            }\n\n            //  Radar\n            bool? isRadar = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n            if (isRadar == null) return NetworkError();\n            if (isRadar.Value)\n            {\n                Radar =\n                    MyMwcObjectBuilder_Base.ReadAndCreateNewObject(binaryReader, senderEndPoint) as\n                    MyMwcObjectBuilder_SmallShip_Radar;\n                if (Radar == null) return NetworkError();\n                if (Radar.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n            }\n            else\n            {\n                Radar = null;\n            }\n\n            bool? hasMaxHealth = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n            if (!hasMaxHealth.HasValue) return NetworkError();\n            if (hasMaxHealth.Value)\n            {\n                //  Ship max health\n                float? shipMaxHealth = MyMwcMessageIn.ReadFloat(binaryReader);\n                if (shipMaxHealth == null) return NetworkError();\n                ShipMaxHealth = shipMaxHealth.Value;\n                MyMwcLog.IfNetVerbose_AddToLog(\"ShipMaxHealth: \" + ShipMaxHealth.Value);\n\n                if (float.IsNaN(ShipMaxHealth.Value) || float.IsInfinity(ShipMaxHealth.Value))\n                {\n                    System.Diagnostics.Debug.Fail(\"ShipMaxHealth is: \" + ShipMaxHealth.Value);\n                    ShipMaxHealth = null; // MyGameplayConstants.MAX_HEALTH_MAX;\n                }\n            }\n            else\n            {\n                MyMwcLog.IfNetVerbose_AddToLog(\"ShipMaxHealth is: null\");\n                ShipMaxHealth = null;\n            }\n\n            //  Ship health ratio\n            float? shipHealthRatio = MyMwcMessageIn.ReadFloat(binaryReader);\n            if (shipHealthRatio == null) return NetworkError();\n            ShipHealthRatio = shipHealthRatio.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"ShipHealthRatio: \" + ShipHealthRatio);\n\n            //  Armor health\n            float? armorHealth = MyMwcMessageIn.ReadFloat(binaryReader);\n            if (armorHealth == null) return NetworkError();\n            ArmorHealth = armorHealth.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"ArmorHealth: \" + ArmorHealth);\n\n            //  Oxygen\n            float? oxygen = MyMwcMessageIn.ReadFloat(binaryReader);\n            if (oxygen == null) return NetworkError();\n            Oxygen = oxygen.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"Oxygen: \" + Oxygen);\n\n            //  Fuel\n            float? fuel = MyMwcMessageIn.ReadFloat(binaryReader);\n            if (fuel == null) return NetworkError();\n            Fuel = fuel.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"Fuel: \" + Fuel);\n\n            // Reflector light\n            bool? reflectorLight = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n            if (reflectorLight == null) return NetworkError();\n            ReflectorLight = reflectorLight.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"ReflectorLight: \" + ReflectorLight);\n\n            // Reflector long range\n            bool? reflectorLongRange = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n            if (reflectorLongRange == null) return NetworkError();\n            ReflectorLongRange = reflectorLongRange.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"ReflectorLongRange: \" + ReflectorLongRange);\n\n            //  ReflectorShadowDistance\n            float? reflectorShadowDistance = MyMwcMessageIn.ReadFloat(binaryReader);\n            if (reflectorShadowDistance == null) return NetworkError();\n            ReflectorShadowDistance = reflectorShadowDistance.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"ReflectorShadowDistance: \" + ReflectorShadowDistance);\n\n            // AI Priority\n            int? aiPriority = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);\n            if (aiPriority == null) return NetworkError();\n            AIPriority = aiPriority.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"AIPriority: \" + AIPriority);\n\n            bool? hasOwnerId = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n            if (hasOwnerId == null) return NetworkError();\n            if (hasOwnerId.Value)\n            {\n                uint? ownerId = MyMwcMessageIn.ReadUInt32Ex(binaryReader, senderEndPoint);\n                if (ownerId == null) return NetworkError();\n                OwnerId = ownerId.Value;\n            }\n            else\n            {\n                OwnerId = null;\n            }\n            MyMwcLog.IfNetVerbose_AddToLog(\"OwnerId: \" + OwnerId);\n\n            return true;\n        }\n\n        private bool Read_01085002(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n        {\n            //  Ship Type\n            byte? objectBuilderID = MyMwcMessageIn.ReadByteEx(binaryReader, senderEndPoint);\n            if (objectBuilderID == null) return NetworkError();\n            SetObjectBuilderId(objectBuilderID.Value);\n            MyMwcLog.IfNetVerbose_AddToLog(\"ShipType: \" + objectBuilderID.Value);\n\n            //  Weapons And Devices\n            int? countWeapons = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);\n            if (countWeapons == null) return NetworkError();\n            MyMwcLog.IfNetVerbose_AddToLog(\"countWeaponsAndDevices: \" + countWeapons);\n            Weapons = new List<MyMwcObjectBuilder_SmallShip_Weapon>(countWeapons.Value);\n            for (int i = 0; i < countWeapons; i++)\n            {\n                MyMwcObjectBuilder_SmallShip_Weapon newWAD =\n                    MyMwcObjectBuilder_Base.ReadAndCreateNewObject(binaryReader, senderEndPoint) as\n                    MyMwcObjectBuilder_SmallShip_Weapon;\n                if (newWAD == null) return NetworkError();\n                if (newWAD.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n                Weapons.Add(newWAD);\n            }\n\n            //  Assignment of ammo\n            int? countAssignAmmo = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);\n            if (countAssignAmmo == null) return NetworkError();\n            MyMwcLog.IfNetVerbose_AddToLog(\"countAssignAmmo: \" + countAssignAmmo);\n            AssignmentOfAmmo = new List<MyMwcObjectBuilder_AssignmentOfAmmo>(countAssignAmmo.Value);\n            for (int i = 0; i < countAssignAmmo; i++)\n            {\n                MyMwcObjectBuilder_AssignmentOfAmmo newAssignAmmo =\n                    MyMwcObjectBuilder_Base.ReadAndCreateNewObject(binaryReader, senderEndPoint) as\n                    MyMwcObjectBuilder_AssignmentOfAmmo;\n                if (newAssignAmmo == null) return NetworkError();\n                if (newAssignAmmo.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n                AssignmentOfAmmo.Add(newAssignAmmo);\n            }\n\n\n            //  Engine\n            bool? isEngine = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n            if (isEngine == null) return NetworkError();\n            if (isEngine.Value)\n            {\n                Engine =\n                    MyMwcObjectBuilder_Base.ReadAndCreateNewObject(binaryReader, senderEndPoint) as\n                    MyMwcObjectBuilder_SmallShip_Engine;\n                if (Engine == null) return NetworkError();\n                if (Engine.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n            }\n            else\n            {\n                Engine = null;\n            }\n\n            //  Armor\n            bool? isArmor = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n            if (isArmor == null) return NetworkError();\n            if (isArmor.Value)\n            {\n                Armor =\n                    MyMwcObjectBuilder_Base.ReadAndCreateNewObject(binaryReader, senderEndPoint) as\n                    MyMwcObjectBuilder_SmallShip_Armor;\n                if (Armor == null) return NetworkError();\n                if (Armor.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n            }\n            else\n            {\n                Armor = null;\n            }\n\n            //  Radar\n            bool? isRadar = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n            if (isRadar == null) return NetworkError();\n            if (isRadar.Value)\n            {\n                Radar =\n                    MyMwcObjectBuilder_Base.ReadAndCreateNewObject(binaryReader, senderEndPoint) as\n                    MyMwcObjectBuilder_SmallShip_Radar;\n                if (Radar == null) return NetworkError();\n                if (Radar.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n            }\n            else\n            {\n                Radar = null;\n            }\n\n            bool? hasMaxHealth = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n            if (!hasMaxHealth.HasValue) return NetworkError();\n            if (hasMaxHealth.Value)\n            {\n                //  Ship max health\n                float? shipMaxHealth = MyMwcMessageIn.ReadFloat(binaryReader);\n                if (shipMaxHealth == null) return NetworkError();\n                ShipMaxHealth = shipMaxHealth.Value;\n                MyMwcLog.IfNetVerbose_AddToLog(\"ShipMaxHealth: \" + ShipMaxHealth.Value);\n\n                if (float.IsNaN(ShipMaxHealth.Value) || float.IsInfinity(ShipMaxHealth.Value))\n                {\n                    System.Diagnostics.Debug.Fail(\"ShipMaxHealth is: \" + ShipMaxHealth.Value);\n                    ShipMaxHealth = null; // MyGameplayConstants.MAX_HEALTH_MAX;\n                }\n            }\n            else\n            {\n                MyMwcLog.IfNetVerbose_AddToLog(\"ShipMaxHealth is: null\");\n                ShipMaxHealth = null;\n            }\n\n            //  Ship health ratio\n            float? shipHealthRatio = MyMwcMessageIn.ReadFloat(binaryReader);\n            if (shipHealthRatio == null) return NetworkError();\n            ShipHealthRatio = shipHealthRatio.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"ShipHealthRatio: \" + ShipHealthRatio);\n\n            //  Armor health\n            float? armorHealth = MyMwcMessageIn.ReadFloat(binaryReader);\n            if (armorHealth == null) return NetworkError();\n            ArmorHealth = armorHealth.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"ArmorHealth: \" + ArmorHealth);\n\n            //  Oxygen\n            float? oxygen = MyMwcMessageIn.ReadFloat(binaryReader);\n            if (oxygen == null) return NetworkError();\n            Oxygen = oxygen.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"Oxygen: \" + Oxygen);\n\n            //  Fuel\n            float? fuel = MyMwcMessageIn.ReadFloat(binaryReader);\n            if (fuel == null) return NetworkError();\n            Fuel = fuel.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"Fuel: \" + Fuel);\n\n            // Reflector light\n            bool? reflectorLight = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n            if (reflectorLight == null) return NetworkError();\n            ReflectorLight = reflectorLight.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"ReflectorLight: \" + ReflectorLight);\n\n            // Reflector long range\n            bool? reflectorLongRange = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n            if (reflectorLongRange == null) return NetworkError();\n            ReflectorLongRange = reflectorLongRange.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"ReflectorLongRange: \" + ReflectorLongRange);\n\n            //  ReflectorShadowDistance\n            float? reflectorShadowDistance = MyMwcMessageIn.ReadFloat(binaryReader);\n            if (reflectorShadowDistance == null) return NetworkError();\n            ReflectorShadowDistance = reflectorShadowDistance.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"ReflectorShadowDistance: \" + ReflectorShadowDistance);\n\n            // AI Priority\n            int? aiPriority = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);\n            if (aiPriority == null) return NetworkError();\n            AIPriority = aiPriority.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"AIPriority: \" + AIPriority);\n\n            return true;\n        }\n\n\n        public virtual bool IsSameAs(MyMwcObjectBuilder_Ship e)\n        {\n            MyMwcObjectBuilder_SmallShip  ent = e as MyMwcObjectBuilder_SmallShip;\n            if(ShipType != ent.ShipType)\n                return false;\n            if (Weapons != ent.Weapons)\n                return false;\n            if (ShipMaxHealth != ent.ShipMaxHealth)\n                return false;\n            if (ShipHealthRatio != ent.ShipHealthRatio)\n                return false;\n            if (ArmorHealth != ent.ArmorHealth)\n                return false;\n            if (Oxygen != ent.Oxygen)\n                return false;\n            if (Fuel != ent.Fuel)\n                return false;\n            if (ReflectorLight != ent.ReflectorLight)\n                return false;\n            if (ReflectorLongRange != ent.ReflectorLongRange)\n                return false;\n            return true;\n        }\n\n        public override int? GetObjectBuilderId()\n        {\n            return (int)ShipType;\n        }\n\n        internal override void SetObjectBuilderIdInternal(int? objectBuilderId)\n        {\n            ShipType = (MyMwcObjectBuilder_SmallShip_TypesEnum)Convert.ToByte(objectBuilderId);\n        }\n\n        public override MyMwcObjectBuilderTypeEnum GetObjectBuilderType()\n        {\n            return MyMwcObjectBuilderTypeEnum.SmallShip;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/ObjectBuilders/Object3D/MyMwcObjectBuilder_SmallShip_Bot.cs",
    "content": "﻿using System.Collections.Generic;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing System.IO;\nusing System.Net;\nusing SysUtils.Utils;\nusing System.Data.SqlClient;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing System;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.Prefabs;\n\nnamespace MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D\n{\n\n    public enum BotDesireType\n    {\n        IDLE = 0,\n        SEE_ENEMY = 1,\n        ATACKED_BY_ENEMY = 2,\n        NO_AMMO = 3,\n        LOW_HEALTH = 4,\n        KILL = 5,\n        CURIOUS = 6,\n        FLASHED = 7\n    }\n\n    public enum BotBehaviorType\n    {\n        IGNORE = 0,\n        PATROL = 1,\n        FOLLOW = 2,\n        ATTACK = 3,\n        RUN_AWAY = 4,\n        PANIC = 5,\n        KAMIKADZE = 6,\n        IDLE = 7,\n        CURIOUS = 8,\n    }\n\n    /// <summary>\n    /// IMPORTANT: update MyGuiSmallShipHelpers and BotAITemplates when you change this\n    /// </summary>\n    public enum MyAITemplateEnum\n    {\n        DEFAULT = 0,\n        AGGRESIVE = 1,\n        DEFENSIVE = 2,\n        FLEE = 3,\n        CRAZY = 4,\n        DRONE = 5,\n        PASSIVE = 6,\n    }\n\n    /// <summary>\n    /// Waypoint path patrol modes\n    /// </summary>\n    public enum MyPatrolMode\n    {\n        CYCLE,\n        PING_PONG,\n        ONE_WAY,\n    }\n\n    public class MyMwcObjectBuilder_SmallShip_Bot : MyMwcObjectBuilder_SmallShip\n    {\n        public MyAITemplateEnum AITemplate { get; set; }\n        public float Aggressivity { get; set; }\n        public float SeeDistance { get; set; }\n        public float SleepDistance { get; set; }\n        public MyPatrolMode PatrolMode { get; set; }\n        public int? ShipTemplateID { get; set; }\n        public uint? Leader { get; set; }\n        public BotBehaviorType IdleBehavior { get; set; }\n        public bool LeaderLostEnabled { get; set; }\n        public bool ActiveAI { get; set; }\n        public float SlowDown { get; set; } // Not stored in DB\n\n        internal MyMwcObjectBuilder_SmallShip_Bot()\n            : base()\n        {\n            IdleBehavior = BotBehaviorType.IDLE;\n            SlowDown = 1.0f;\n        }\n\n        public MyMwcObjectBuilder_SmallShip_Bot(MyMwcObjectBuilder_SmallShip smallShip)\n            : this(smallShip, MyAITemplateEnum.DEFAULT, 0, 1000, 1000, MyPatrolMode.CYCLE, null, null, BotBehaviorType.IDLE, smallShip.AIPriority, false, true)\n        { \n        }\n\n        public MyMwcObjectBuilder_SmallShip_Bot(MyMwcObjectBuilder_SmallShip smallShip,\n            MyAITemplateEnum aiTemplate,\n            float aggressivity,\n            float seeDistance,\n            float sleepDistance,\n            MyPatrolMode patrolMode,\n            int? shipTemplateId,\n            uint? leader,\n            BotBehaviorType idleBehavior,\n            int aiPriority,\n            bool leaderLostEnabled,\n            bool activeAI)\n            : this(smallShip.ShipType, smallShip.Inventory, smallShip.Weapons, smallShip.Engine, smallShip.AssignmentOfAmmo, smallShip.Armor, smallShip.Radar,\n            smallShip.ShipMaxHealth, smallShip.ShipHealthRatio, smallShip.ArmorHealth, smallShip.Oxygen, smallShip.Fuel,\n            smallShip.ReflectorLight, smallShip.ReflectorLongRange, smallShip.Faction, aiTemplate, aggressivity, seeDistance, sleepDistance, patrolMode, leader, idleBehavior, smallShip.ReflectorShadowDistance,\n            aiPriority, leaderLostEnabled, activeAI) \n        {\n            ShipTemplateID = shipTemplateId;\n        }\n\n        public MyMwcObjectBuilder_SmallShip_Bot(MyMwcObjectBuilder_SmallShip_TypesEnum shipType,\n            MyMwcObjectBuilder_Inventory inventory,\n            List<MyMwcObjectBuilder_SmallShip_Weapon> weapons,\n            MyMwcObjectBuilder_SmallShip_Engine engine, \n            List<MyMwcObjectBuilder_AssignmentOfAmmo> assignmentOfAmmo,\n            MyMwcObjectBuilder_SmallShip_Armor armor,\n            MyMwcObjectBuilder_SmallShip_Radar radar,            \n            float? shipMaxHealth,\n            float shipHealthRatio,\n            float armorHealth,\n            float oxygen,\n            float fuel,\n            bool reflectorLight,\n            bool reflectorLongRange,\n            MyMwcObjectBuilder_FactionEnum shipFaction,\n            MyAITemplateEnum aiTemplate,\n            float aggressivity,\n            float seeDistance,\n            float sleepDistance,\n            MyPatrolMode patrolMode,\n            uint? leader,\n            BotBehaviorType idleBehavior,\n            float reflectorShadowDistance,\n            int aiPriority,\n            bool leaderLostEnabled,\n            bool activeAI)\n            : base(shipType, inventory, weapons, engine, assignmentOfAmmo, armor, radar, shipMaxHealth, shipHealthRatio, armorHealth, oxygen, fuel, reflectorLight, reflectorLongRange, reflectorShadowDistance, aiPriority)\n        {\n            Faction = shipFaction;\n            AITemplate = aiTemplate;\n            Aggressivity = aggressivity;\n            SeeDistance = seeDistance;\n            SleepDistance = sleepDistance;\n            PatrolMode = patrolMode;\n            Leader = leader;\n            IdleBehavior = idleBehavior;\n            LeaderLostEnabled = leaderLostEnabled;\n            ActiveAI = activeAI;\n            SlowDown = 1;\n        }\n\n        public override bool IsSameAs(MyMwcObjectBuilder_Ship bot)\n        {\n            return base.IsSameAs(bot);\n        }\n\n        public override MyMwcObjectBuilderTypeEnum GetObjectBuilderType()\n        {\n            return MyMwcObjectBuilderTypeEnum.SmallShip_Bot;\n        }\n\n        internal override bool Read(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n        {\n            if (base.Read(binaryReader, senderEndPoint, gameVersion) == false) \n                return NetworkError();\n\n            if (gameVersion > 01085002)\n            {\n                return Read_Current(binaryReader, senderEndPoint, gameVersion);\n            }\n            else\n            {\n                return Read_01085002(binaryReader, senderEndPoint, gameVersion);\n            }\n        }\n\n        private bool Read_Current(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n        {\n            MyCommonDebugUtils.AssertDebug(Faction != 0);\n\n            // AITemplate\n            int? aiTemplate = MyMwcMessageIn.ReadByteEx(binaryReader, senderEndPoint);\n            if (aiTemplate == null) return NetworkError();\n            AITemplate = (MyAITemplateEnum) aiTemplate.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"AITemplate: \" + AITemplate);\n\n            //  Aggressivity\n            float? aggressivity = MyMwcMessageIn.ReadFloat(binaryReader);\n            if (aggressivity == null) return NetworkError();\n            Aggressivity = aggressivity.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"Aggressivity: \" + Aggressivity);\n\n            // SeeDistance\n            float? seeDistance = MyMwcMessageIn.ReadFloat(binaryReader);\n            if (seeDistance == null) return NetworkError();\n            SeeDistance = seeDistance.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"SeeDistance: \" + SeeDistance);\n\n            // SleepDistance\n            float? sleepDistance = MyMwcMessageIn.ReadFloat(binaryReader);\n            if (sleepDistance == null) return NetworkError();\n            SleepDistance = sleepDistance.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"SleepDistance: \" + SleepDistance);\n\n            // Patrol mode\n            int? patrolMode = MyMwcMessageIn.ReadByteEx(binaryReader, senderEndPoint);\n            if (patrolMode == null) return NetworkError();\n            PatrolMode = (MyPatrolMode) patrolMode.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"PatrolMode: \" + PatrolMode);\n\n            // Ship template ID\n            bool? hasShipTemplateID = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n            if (!hasShipTemplateID.HasValue) return NetworkError();\n\n            if (hasShipTemplateID.Value)\n            {\n                int? shipTemplateID = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);\n                if (shipTemplateID == null) return NetworkError();\n                ShipTemplateID = shipTemplateID.Value;\n                MyMwcLog.IfNetVerbose_AddToLog(\"ShipTemplateID: \" + ShipTemplateID);\n            }\n            else\n            {\n                ShipTemplateID = null;\n                MyMwcLog.IfNetVerbose_AddToLog(\"ShipTemplateID: null\");\n            }\n\n            // Leader\n            bool? hasLeader = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n            if (!hasLeader.HasValue) return NetworkError();\n\n            if (hasLeader.Value)\n            {\n                int? leader = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);\n                if (!leader.HasValue) return NetworkError();\n\n                Leader = (uint) leader.Value;\n                MyMwcLog.IfNetVerbose_AddToLog(\"Leader: \" + Leader);\n            }\n            else\n            {\n                Leader = null;\n                MyMwcLog.IfNetVerbose_AddToLog(\"Leader: null\");\n            }\n\n            // Idle Behavior\n            byte? idleBehavior = MyMwcMessageIn.ReadByteEx(binaryReader, senderEndPoint);\n            if (!idleBehavior.HasValue) NetworkError();\n\n            IdleBehavior = (BotBehaviorType) idleBehavior.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"IdleBehavior: \" + IdleBehavior);\n\n            // Leader Lost Enabled\n            bool? leaderLostEnabled = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n            if (!leaderLostEnabled.HasValue) return NetworkError();\n            LeaderLostEnabled = leaderLostEnabled.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"LeaderLostEnabled: \" + LeaderLostEnabled);\n\n            // Active AI\n            bool? activeAI = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n            if (!activeAI.HasValue) return NetworkError();\n            ActiveAI = activeAI.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"ActiveAI: \" + ActiveAI);\n\n            float slowDown = MyMwcMessageIn.ReadFloat(binaryReader);\n            SlowDown = slowDown;\n            MyMwcLog.IfNetVerbose_AddToLog(\"SlowDown: \" + SlowDown);\n\n\n            return true;\n        }\n\n        private bool Read_01085002(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n        {\n            MyCommonDebugUtils.AssertDebug(Faction != 0);\n\n            // AITemplate\n            int? aiTemplate = MyMwcMessageIn.ReadByteEx(binaryReader, senderEndPoint);\n            if (aiTemplate == null) return NetworkError();\n            AITemplate = (MyAITemplateEnum)aiTemplate.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"AITemplate: \" + AITemplate);\n\n            //  Aggressivity\n            float? aggressivity = MyMwcMessageIn.ReadFloat(binaryReader);\n            if (aggressivity == null) return NetworkError();\n            Aggressivity = aggressivity.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"Aggressivity: \" + Aggressivity);\n\n            // SeeDistance\n            float? seeDistance = MyMwcMessageIn.ReadFloat(binaryReader);\n            if (seeDistance == null) return NetworkError();\n            SeeDistance = seeDistance.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"SeeDistance: \" + SeeDistance);\n\n            // SleepDistance\n            float? sleepDistance = MyMwcMessageIn.ReadFloat(binaryReader);\n            if (sleepDistance == null) return NetworkError();\n            SleepDistance = sleepDistance.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"SleepDistance: \" + SleepDistance);\n\n            // Patrol mode\n            int? patrolMode = MyMwcMessageIn.ReadByteEx(binaryReader, senderEndPoint);\n            if (patrolMode == null) return NetworkError();\n            PatrolMode = (MyPatrolMode)patrolMode.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"PatrolMode: \" + PatrolMode);\n\n            // Ship template ID\n            bool? hasShipTemplateID = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n            if (!hasShipTemplateID.HasValue) return NetworkError();\n\n            if (hasShipTemplateID.Value)\n            {\n                int? shipTemplateID = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);\n                if (shipTemplateID == null) return NetworkError();\n                ShipTemplateID = shipTemplateID.Value;\n                MyMwcLog.IfNetVerbose_AddToLog(\"ShipTemplateID: \" + ShipTemplateID);\n            }\n            else\n            {\n                ShipTemplateID = null;\n                MyMwcLog.IfNetVerbose_AddToLog(\"ShipTemplateID: null\");\n            }\n\n            // Leader\n            bool? hasLeader = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n            if (!hasLeader.HasValue) return NetworkError();\n\n            if (hasLeader.Value)\n            {\n                int? leader = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);\n                if (!leader.HasValue) return NetworkError();\n\n                Leader = (uint)leader.Value;\n                MyMwcLog.IfNetVerbose_AddToLog(\"Leader: \" + Leader);\n            }\n            else\n            {\n                Leader = null;\n                MyMwcLog.IfNetVerbose_AddToLog(\"Leader: null\");\n            }\n\n            // Idle Behavior\n            byte? idleBehavior = MyMwcMessageIn.ReadByteEx(binaryReader, senderEndPoint);\n            if (!idleBehavior.HasValue) NetworkError();\n\n            IdleBehavior = (BotBehaviorType)idleBehavior.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"IdleBehavior: \" + IdleBehavior);\n\n            // Leader Lost Enabled\n            bool? leaderLostEnabled = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n            if (!leaderLostEnabled.HasValue) return NetworkError();\n            LeaderLostEnabled = leaderLostEnabled.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"LeaderLostEnabled: \" + LeaderLostEnabled);\n\n            // Active AI\n            bool? activeAI = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n            if (!activeAI.HasValue) return NetworkError();\n            ActiveAI = activeAI.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"ActiveAI: \" + ActiveAI);\n\n            SlowDown = 1;\n\n            return true;\n        }\n\n        internal override void Write(BinaryWriter binaryWriter)\n        {\n            base.Write(binaryWriter);\n\n            // AITemplate\n            MyMwcLog.IfNetVerbose_AddToLog(\"AITemplate: \" + AITemplate);\n            MyMwcMessageOut.WriteByte((byte)AITemplate, binaryWriter);\n\n            // Aggressivity\n            MyMwcLog.IfNetVerbose_AddToLog(\"Aggressivity: \" + Aggressivity);\n            MyMwcMessageOut.WriteFloat(Aggressivity, binaryWriter);\n\n            // SeeDistance\n            MyMwcLog.IfNetVerbose_AddToLog(\"SeeDistance: \" + SeeDistance);\n            MyMwcMessageOut.WriteFloat(SeeDistance, binaryWriter);\n\n            // SleepDistance\n            MyMwcLog.IfNetVerbose_AddToLog(\"SleepDistance: \" + SleepDistance);\n            MyMwcMessageOut.WriteFloat(SleepDistance, binaryWriter);\n\n            // PatrolMode\n            MyMwcLog.IfNetVerbose_AddToLog(\"PatrolMode: \" + PatrolMode);\n            MyMwcMessageOut.WriteByte((byte)PatrolMode, binaryWriter);\n\n            // Ship Template ID            \n            if (ShipTemplateID != null)\n            {\n                MyMwcMessageOut.WriteBool(true, binaryWriter);\n                \n                MyMwcLog.IfNetVerbose_AddToLog(\"ShipTemplateID: \" + ShipTemplateID);\n                MyMwcMessageOut.WriteInt32(ShipTemplateID.Value, binaryWriter);\n            }\n            else \n            {\n                MyMwcMessageOut.WriteBool(false, binaryWriter);\n\n                MyMwcLog.IfNetVerbose_AddToLog(\"ShipTemplateID: null\");\n            }\n\n            // Leader\n            MyMwcMessageOut.WriteBool(Leader.HasValue, binaryWriter);\n            if (Leader.HasValue)\n            {\n                MyMwcLog.IfNetVerbose_AddToLog(\"Leader: \" + Leader.Value);\n                MyMwcMessageOut.WriteInt32((int)Leader.Value, binaryWriter);\n            }\n            else\n            {\n                MyMwcLog.IfNetVerbose_AddToLog(\"Leader: null\");\n            }\n\n            // Idle Behavior\n            MyMwcLog.IfNetVerbose_AddToLog(\"IdleBehavior: \" + IdleBehavior);\n            MyMwcMessageOut.WriteByte((byte)IdleBehavior, binaryWriter);\n\n            // Leader Lost Enabled\n            MyMwcLog.IfNetVerbose_AddToLog(\"LeaderLostEnabled: \" + LeaderLostEnabled);\n            MyMwcMessageOut.WriteBool(LeaderLostEnabled, binaryWriter);\n\n            // Active AI\n            MyMwcLog.IfNetVerbose_AddToLog(\"ActiveAI: \" + ActiveAI);\n            MyMwcMessageOut.WriteBool(ActiveAI, binaryWriter);\n\n            // SlowDown\n            MyMwcLog.IfNetVerbose_AddToLog(\"SlowDown: \" + SlowDown);\n            MyMwcMessageOut.WriteFloat(SlowDown, binaryWriter);\n        }        \n\n        public static MyMwcObjectBuilder_SmallShip_Bot CreateObjectBuilderWithAllItems(MyMwcObjectBuilder_SmallShip_TypesEnum shipType, int maxInventoryItems)\n        {\n            List<MyMwcObjectBuilder_SmallShip_Weapon> weapons = new List<MyMwcObjectBuilder_SmallShip_Weapon>();\n            List<MyMwcObjectBuilder_AssignmentOfAmmo> ammoAssignment = new List<MyMwcObjectBuilder_AssignmentOfAmmo>();\n            List<MyMwcObjectBuilder_InventoryItem> inventoryItems = new List<MyMwcObjectBuilder_InventoryItem>();\n\n            // weapons\n            foreach (MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum weapon in Enum.GetValues(typeof(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum)))\n            {\n                var weaponBuilder = new MyMwcObjectBuilder_SmallShip_Weapon(weapon);\n                weaponBuilder.SetAutoMount();\n                weapons.Add(weaponBuilder);\n                // we want have 2x autocanon\n                if (weapon == MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Autocanon)\n                {\n                    var autocannonBuilder = new MyMwcObjectBuilder_SmallShip_Weapon(weapon);\n                    autocannonBuilder.SetAutoMount();\n                    weapons.Add(autocannonBuilder);\n                }\n            }\n\n            // ammo assignment\n            ammoAssignment.Add(new MyMwcObjectBuilder_AssignmentOfAmmo(MyMwcObjectBuilder_FireKeyEnum.Primary, MyMwcObjectBuilder_AmmoGroupEnum.Bullet, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_Basic));\n            ammoAssignment.Add(new MyMwcObjectBuilder_AssignmentOfAmmo(MyMwcObjectBuilder_FireKeyEnum.Secondary, MyMwcObjectBuilder_AmmoGroupEnum.Missile, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Missile_Basic));\n            ammoAssignment.Add(new MyMwcObjectBuilder_AssignmentOfAmmo(MyMwcObjectBuilder_FireKeyEnum.Third, MyMwcObjectBuilder_AmmoGroupEnum.UniversalLauncherFront, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Mine_Basic));\n            ammoAssignment.Add(new MyMwcObjectBuilder_AssignmentOfAmmo(MyMwcObjectBuilder_FireKeyEnum.Fourth, MyMwcObjectBuilder_AmmoGroupEnum.UniversalLauncherBack, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Mine_Smart));\n            ammoAssignment.Add(new MyMwcObjectBuilder_AssignmentOfAmmo(MyMwcObjectBuilder_FireKeyEnum.Fifth, MyMwcObjectBuilder_AmmoGroupEnum.Bullet, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_Basic));\n\n            // inventory items\n            // ammo\n            foreach (MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum ammo in Enum.GetValues(typeof(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum)))\n            {\n                inventoryItems.Add(new MyMwcObjectBuilder_InventoryItem(new MyMwcObjectBuilder_SmallShip_Ammo(ammo), 1000f));\n            }\n\n            // tools\n            foreach (MyMwcObjectBuilder_SmallShip_Tool_TypesEnum tool in Enum.GetValues(typeof(MyMwcObjectBuilder_SmallShip_Tool_TypesEnum)))\n            {\n                inventoryItems.Add(new MyMwcObjectBuilder_InventoryItem(new MyMwcObjectBuilder_SmallShip_Tool(tool), 1f));   \n            }\n\n            // radars\n            foreach (MyMwcObjectBuilder_SmallShip_Radar_TypesEnum radar in Enum.GetValues(typeof(MyMwcObjectBuilder_SmallShip_Radar_TypesEnum)))\n            {\n                inventoryItems.Add(new MyMwcObjectBuilder_InventoryItem(new MyMwcObjectBuilder_SmallShip_Radar(radar), 1f));\n            }\n\n            // engines\n            foreach (MyMwcObjectBuilder_SmallShip_Engine_TypesEnum engine in Enum.GetValues(typeof(MyMwcObjectBuilder_SmallShip_Engine_TypesEnum)))\n            {\n                if (engine != MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.PowerCells_1)\n                {\n                    inventoryItems.Add(new MyMwcObjectBuilder_InventoryItem(new MyMwcObjectBuilder_SmallShip_Engine(engine), 1f));\n                }\n            }\n\n            // armors\n            foreach (MyMwcObjectBuilder_SmallShip_Armor_TypesEnum armor in Enum.GetValues(typeof(MyMwcObjectBuilder_SmallShip_Armor_TypesEnum)))\n            {\n                if (armor != MyMwcObjectBuilder_SmallShip_Armor_TypesEnum.Basic)\n                {\n                    inventoryItems.Add(new MyMwcObjectBuilder_InventoryItem(new MyMwcObjectBuilder_SmallShip_Armor(armor), 1f));\n                }\n            }\n\n            // foundation factory\n            var foundationFactory = new MyMwcObjectBuilder_PrefabFoundationFactory();\n            foundationFactory.PrefabHealthRatio = 1f;\n            foundationFactory.PrefabMaxHealth = null;\n            inventoryItems.Add(new MyMwcObjectBuilder_InventoryItem(foundationFactory, 1f));\n            inventoryItems.RemoveAll(x => MyMwcObjectBuilder_InventoryItem.IsDisabled(x));\n\n            if (inventoryItems.Count > maxInventoryItems)\n            {\n                inventoryItems = inventoryItems.GetRange(0, maxInventoryItems);\n            }\n\n            MyMwcObjectBuilder_SmallShip_Bot builder =\n                new MyMwcObjectBuilder_SmallShip_Bot(\n                    shipType,\n                    new MyMwcObjectBuilder_Inventory(inventoryItems, maxInventoryItems),\n                    weapons,\n                    new MyMwcObjectBuilder_SmallShip_Engine(MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.PowerCells_1),\n                    ammoAssignment,\n                    new MyMwcObjectBuilder_SmallShip_Armor(MyMwcObjectBuilder_SmallShip_Armor_TypesEnum.Basic),\n                    new MyMwcObjectBuilder_SmallShip_Radar(MyMwcObjectBuilder_SmallShip_Radar_TypesEnum.Radar_1),\n                    null, 1f, float.MaxValue, float.MaxValue, float.MaxValue,\n                    true, false, MyMwcObjectBuilder_FactionEnum.None, MyAITemplateEnum.DEFAULT, 0, 1000, 1000, MyPatrolMode.CYCLE, null, BotBehaviorType.IDLE, 200f, 0, false, true);\n\n            return builder;\n        }\n\n        public void CopyBotParameters(MyMwcObjectBuilder_SmallShip_Bot copyFrom) \n        {\n            AITemplate = copyFrom.AITemplate;\n            Aggressivity = copyFrom.Aggressivity;\n            SeeDistance = copyFrom.SeeDistance;\n            SleepDistance = copyFrom.SleepDistance;\n            PatrolMode = copyFrom.PatrolMode;\n            ShipTemplateID = copyFrom.ShipTemplateID;\n        }\n\n        // For debugging purposes\n        public override string ToString()\n        {\n            return \"Bot: \" + DisplayName.ToString() + \", ID: \" + (EntityId.HasValue ? EntityId.Value.ToString() : \"null\");\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/ObjectBuilders/Object3D/MyMwcObjectBuilder_SmallShip_Player.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.Prefabs;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing System.Data.SqlClient;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWarsMath;\n\nnamespace MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D\n{\n    public class MyMwcObjectBuilder_SmallShip_Player : MyMwcObjectBuilder_SmallShip\n    {\n        internal MyMwcObjectBuilder_SmallShip_Player()\n            : base()\n        {\n            DisplayName = \"Player\";\n        }\n\n        public MyMwcObjectBuilder_SmallShip_Player(MyMwcObjectBuilder_SmallShip_TypesEnum shipType,\n            MyMwcObjectBuilder_Inventory inventory,\n            List<MyMwcObjectBuilder_SmallShip_Weapon> weapons,\n            MyMwcObjectBuilder_SmallShip_Engine engine,\n            List<MyMwcObjectBuilder_AssignmentOfAmmo> assignmentOfAmmo,\n            MyMwcObjectBuilder_SmallShip_Armor armor,\n            MyMwcObjectBuilder_SmallShip_Radar radar,\n            float? shipMaxHealth,\n            float shipHealthRatio,\n            float armorHealth,\n            float electricity,\n            float oxygen,\n            float fuel,\n            bool reflectorLight,\n            bool reflectorLongRange,\n            float reflectorShadowDistance,\n            int aiPriority)\n            : base(shipType, inventory, weapons, engine, assignmentOfAmmo, armor, radar, shipMaxHealth, shipHealthRatio, armorHealth, oxygen, fuel, reflectorLight, reflectorLongRange, reflectorShadowDistance, aiPriority)\n        {\n            DisplayName = \"Player\";\n        }\n\n        public MyMwcObjectBuilder_SmallShip_Player(MyMwcObjectBuilder_SmallShip ship)\n            : this(ship.ShipType, ship.Inventory, ship.Weapons, ship.Engine, ship.AssignmentOfAmmo, ship.Armor, ship.Radar, ship.ShipMaxHealth, ship.ShipHealthRatio, ship.ArmorHealth,\n            0, ship.Oxygen, ship.Fuel, ship.ReflectorLight, ship.ReflectorLongRange, ship.ReflectorShadowDistance, ship.AIPriority)\n        {\n        }\n\n        public override MyMwcObjectBuilderTypeEnum GetObjectBuilderType()\n        {\n            return MyMwcObjectBuilderTypeEnum.SmallShip_Player;\n        }\n\n        internal override void Write(System.IO.BinaryWriter binaryWriter)\n        {\n            // because we don't want save playership's entity id, we set to null\n            EntityId = null;\n\n            base.Write(binaryWriter);\n        }\n\n        internal override bool Read(System.IO.BinaryReader binaryReader, System.Net.EndPoint senderEndPoint, int gameVersion)\n        {\n            if (!base.Read(binaryReader, senderEndPoint, gameVersion))\n            {\n                return false;\n            }\n\n            // because we don't want load playership's entity id, we set to null\n            EntityId = null;\n\n            return true;\n        }\n\n        public static MyMwcObjectBuilder_SmallShip_Player CreateDefaultShip(MyMwcObjectBuilder_SmallShip_TypesEnum shipType, MyMwcObjectBuilder_FactionEnum faction, int maxItems)\n        {\n            var result = new MyMwcObjectBuilder_SmallShip_Player(shipType,\n                new MyMwcObjectBuilder_Inventory(\n                    new List<MyMwcObjectBuilder_InventoryItem>()\n                    {\n                        new MyMwcObjectBuilder_InventoryItem(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Missile_Basic), 1000f),\n                        new MyMwcObjectBuilder_InventoryItem(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Missile_Basic), 1000f),\n                        new MyMwcObjectBuilder_InventoryItem(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Missile_Basic), 1000f),\n                        new MyMwcObjectBuilder_InventoryItem(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_Basic), 1000f),\n                        new MyMwcObjectBuilder_InventoryItem(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_Basic), 1000f),\n                        new MyMwcObjectBuilder_InventoryItem(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_Basic), 1000f),\n                        new MyMwcObjectBuilder_InventoryItem(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Sniper_SAPHEI), 1000f),\n                        new MyMwcObjectBuilder_InventoryItem(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Sniper_SAPHEI), 1000f),\n                        new MyMwcObjectBuilder_InventoryItem(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Sniper_SAPHEI), 1000f),\n                    },\n                    maxItems),\n                new List<MyMwcObjectBuilder_SmallShip_Weapon>()\n                {\n                    new MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Autocanon) { MountedDescriptor = MyMwcObjectBuilder_SmallShip_Weapon.LEFT_SIDE_MOUNT_DESCRIPTOR },\n                    new MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Autocanon) { MountedDescriptor = MyMwcObjectBuilder_SmallShip_Weapon.RIGHT_SIDE_MOUNT_DESCRIPTOR },\n                    new MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Sniper) { MountedDescriptor = MyMwcObjectBuilder_SmallShip_Weapon.AUTO_MOUNT_DESCRIPTOR },\n                    new MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Missile_Launcher) { MountedDescriptor = MyMwcObjectBuilder_SmallShip_Weapon.AUTO_MOUNT_DESCRIPTOR },\n                },\n                new MyMwcObjectBuilder_SmallShip_Engine(MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.PowerCells_3),\n                new List<MyMwcObjectBuilder_AssignmentOfAmmo>()\n                {\n                    new MyMwcObjectBuilder_AssignmentOfAmmo(MyMwcObjectBuilder_FireKeyEnum.Primary, MyMwcObjectBuilder_AmmoGroupEnum.Bullet, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_Basic),\n                    new MyMwcObjectBuilder_AssignmentOfAmmo(MyMwcObjectBuilder_FireKeyEnum.Secondary, MyMwcObjectBuilder_AmmoGroupEnum.Missile, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Missile_Basic),\n                    new MyMwcObjectBuilder_AssignmentOfAmmo(MyMwcObjectBuilder_FireKeyEnum.Third, MyMwcObjectBuilder_AmmoGroupEnum.UniversalLauncherFront, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Mine_Basic),\n                    new MyMwcObjectBuilder_AssignmentOfAmmo(MyMwcObjectBuilder_FireKeyEnum.Fourth, MyMwcObjectBuilder_AmmoGroupEnum.UniversalLauncherBack, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Mine_Smart),\n                    new MyMwcObjectBuilder_AssignmentOfAmmo(MyMwcObjectBuilder_FireKeyEnum.Fifth, MyMwcObjectBuilder_AmmoGroupEnum.Bullet, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_Basic),\n                },\n                new MyMwcObjectBuilder_SmallShip_Armor(MyMwcObjectBuilder_SmallShip_Armor_TypesEnum.Advanced),\n                new MyMwcObjectBuilder_SmallShip_Radar(MyMwcObjectBuilder_SmallShip_Radar_TypesEnum.Radar_1),\n                null, 1f, float.MaxValue, float.MaxValue, float.MaxValue, float.MaxValue,\n                true,\n                false,\n                200, 0);\n            result.Faction = faction;\n            result.PositionAndOrientation = new MyMwcPositionAndOrientation(Matrix.Identity);\n            return result;\n        }\n\n        public static MyMwcObjectBuilder_SmallShip_Player CreateObjectBuilderWithAllItems(MyMwcObjectBuilder_SmallShip_TypesEnum shipType, MyMwcObjectBuilder_FactionEnum faction, int maxInventoryItems)\n        {\n            List<MyMwcObjectBuilder_SmallShip_Weapon> weapons = new List<MyMwcObjectBuilder_SmallShip_Weapon>();\n            List<MyMwcObjectBuilder_AssignmentOfAmmo> ammoAssignment = new List<MyMwcObjectBuilder_AssignmentOfAmmo>();\n            List<MyMwcObjectBuilder_InventoryItem> inventoryItems = new List<MyMwcObjectBuilder_InventoryItem>();\n\n            // weapons\n            foreach (MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum weapon in Enum.GetValues(typeof(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum)))\n            {\n                var weaponBuilder = new MyMwcObjectBuilder_SmallShip_Weapon(weapon);\n                weaponBuilder.SetAutoMount();\n                weapons.Add(weaponBuilder);\n                // we want have 2x autocanon\n                if (weapon == MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Autocanon)\n                {\n                    var autocannonBuilder = new MyMwcObjectBuilder_SmallShip_Weapon(weapon);\n                    autocannonBuilder.SetAutoMount();\n                    weapons.Add(autocannonBuilder);\n                }\n            }\n\n            // ammo assignment\n            ammoAssignment.Add(new MyMwcObjectBuilder_AssignmentOfAmmo(MyMwcObjectBuilder_FireKeyEnum.Primary, MyMwcObjectBuilder_AmmoGroupEnum.Bullet, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_Basic));\n            ammoAssignment.Add(new MyMwcObjectBuilder_AssignmentOfAmmo(MyMwcObjectBuilder_FireKeyEnum.Secondary, MyMwcObjectBuilder_AmmoGroupEnum.Missile, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Missile_Basic));\n            ammoAssignment.Add(new MyMwcObjectBuilder_AssignmentOfAmmo(MyMwcObjectBuilder_FireKeyEnum.Third, MyMwcObjectBuilder_AmmoGroupEnum.UniversalLauncherFront, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Mine_Basic));\n            ammoAssignment.Add(new MyMwcObjectBuilder_AssignmentOfAmmo(MyMwcObjectBuilder_FireKeyEnum.Fourth, MyMwcObjectBuilder_AmmoGroupEnum.UniversalLauncherBack, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Mine_Smart));\n            ammoAssignment.Add(new MyMwcObjectBuilder_AssignmentOfAmmo(MyMwcObjectBuilder_FireKeyEnum.Fifth, MyMwcObjectBuilder_AmmoGroupEnum.Bullet, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_Basic));\n\n            // inventory items\n            // ammo\n            foreach (MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum ammo in Enum.GetValues(typeof(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum)))\n            {\n                inventoryItems.Add(new MyMwcObjectBuilder_InventoryItem(new MyMwcObjectBuilder_SmallShip_Ammo(ammo), 1000f));\n            }\n\n            // tools\n            foreach (MyMwcObjectBuilder_SmallShip_Tool_TypesEnum tool in Enum.GetValues(typeof(MyMwcObjectBuilder_SmallShip_Tool_TypesEnum)))\n            {\n                inventoryItems.Add(new MyMwcObjectBuilder_InventoryItem(new MyMwcObjectBuilder_SmallShip_Tool(tool), 1f));\n            }\n\n            // radars\n            foreach (MyMwcObjectBuilder_SmallShip_Radar_TypesEnum radar in Enum.GetValues(typeof(MyMwcObjectBuilder_SmallShip_Radar_TypesEnum)))\n            {\n                inventoryItems.Add(new MyMwcObjectBuilder_InventoryItem(new MyMwcObjectBuilder_SmallShip_Radar(radar), 1f));\n            }\n\n            // engines\n            foreach (MyMwcObjectBuilder_SmallShip_Engine_TypesEnum engine in Enum.GetValues(typeof(MyMwcObjectBuilder_SmallShip_Engine_TypesEnum)))\n            {\n                if (engine != MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.PowerCells_1)\n                {\n                    inventoryItems.Add(new MyMwcObjectBuilder_InventoryItem(new MyMwcObjectBuilder_SmallShip_Engine(engine), 1f));\n                }\n            }\n\n            // armors\n            foreach (MyMwcObjectBuilder_SmallShip_Armor_TypesEnum armor in Enum.GetValues(typeof(MyMwcObjectBuilder_SmallShip_Armor_TypesEnum)))\n            {\n                if (armor != MyMwcObjectBuilder_SmallShip_Armor_TypesEnum.Basic)\n                {\n                    inventoryItems.Add(new MyMwcObjectBuilder_InventoryItem(new MyMwcObjectBuilder_SmallShip_Armor(armor), 1f));\n                }\n            }\n\n            // foundation factory\n            var foundationFactory = new MyMwcObjectBuilder_PrefabFoundationFactory();\n            foundationFactory.PrefabHealthRatio = 1f;\n            foundationFactory.PrefabMaxHealth = null;\n            inventoryItems.Add(new MyMwcObjectBuilder_InventoryItem(foundationFactory, 1f));\n            inventoryItems.RemoveAll(x => MyMwcObjectBuilder_InventoryItem.IsDisabled(x));\n\n            if (inventoryItems.Count > maxInventoryItems)\n            {\n                inventoryItems = inventoryItems.GetRange(0, maxInventoryItems);\n            }\n\n            MyMwcObjectBuilder_SmallShip_Player builder =\n                new MyMwcObjectBuilder_SmallShip_Player(\n                    shipType,\n                    new MyMwcObjectBuilder_Inventory(inventoryItems, maxInventoryItems),\n                    weapons,\n                    new MyMwcObjectBuilder_SmallShip_Engine(MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.PowerCells_1),\n                    ammoAssignment,\n                    new MyMwcObjectBuilder_SmallShip_Armor(MyMwcObjectBuilder_SmallShip_Armor_TypesEnum.Basic),\n                    new MyMwcObjectBuilder_SmallShip_Radar(MyMwcObjectBuilder_SmallShip_Radar_TypesEnum.Radar_1),\n                    null, 1f, float.MaxValue, float.MaxValue, float.MaxValue, float.MaxValue,\n                    true, false, 200f, 0);\n            builder.Faction = faction;\n\n            return builder;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/ObjectBuilders/Object3D/MyMwcObjectBuilder_SpawnPoint.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWarsMath;\nusing System.IO;\nusing System.Net;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing SysUtils.Utils;\n\n\nnamespace MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools\n{\n    public class MyMwcObjectBuilder_SpawnPoint : MyMwcObjectBuilder_Object3dBase\n    {\n        public bool SpawnInGroups;      // whole group spawn\n        public int SpawnCount;          // count of spawned bots\n        public float FirstSpawnTimer;   // time in ms for respawn\n        public float RespawnTimer;      // time in ms for respawn\n        public float BoundingRadius;    // world radius for spawning / we generate ships within this radius randomly\n        public bool Activated;\n\n        private int m_numberOfTemplates;\n        public List<MyMwcObjectBuilder_SmallShip_Bot> ShipTemplates;\n        public MyMwcObjectBuilder_FactionEnum Faction;\n        public String WayPointPath;\n        public MyPatrolMode PatrolMode { get; set; }\n\n        internal MyMwcObjectBuilder_SpawnPoint()\n            : base()\n        {\n            SpawnInGroups = false;\n            SpawnCount = -1;\n            FirstSpawnTimer = 1.0f;\n            RespawnTimer = 1.0f;\n            BoundingRadius = 1.0f;\n            ShipTemplates = new List<MyMwcObjectBuilder_SmallShip_Bot>();\n            Faction = MyMwcObjectBuilder_FactionEnum.China;\n            WayPointPath = \"None\";\n            Activated = true;\n            PatrolMode = MyPatrolMode.CYCLE;\n        }\n\n        public override void RemapEntityIds(IMyEntityIdRemapContext remapContext)\n        {\n            base.RemapEntityIds(remapContext);\n            foreach (var template in ShipTemplates)\n            {\n                template.RemapEntityIds(remapContext);\n            }\n        }\n\n        public override MyMwcObjectBuilderTypeEnum GetObjectBuilderType()\n        {\n            return MyMwcObjectBuilderTypeEnum.SpawnPoint;\n        }\n\n        //  Read this object from message-in\n        internal override bool Read(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n        {\n            if (base.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n\n            // NumberOfTemplates (why?)\n            int ?tempcount = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);\n            if (tempcount == null) return NetworkError();\n            m_numberOfTemplates = tempcount.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"NumberOfTemplates: \" + m_numberOfTemplates);\n\n            // Bot Templates\n            for (int c = 0; c < m_numberOfTemplates; c++)\n            {\n                MyMwcObjectBuilder_SmallShip_Bot nb = MyMwcObjectBuilder_Base.ReadAndCreateNewObject(binaryReader, senderEndPoint) as MyMwcObjectBuilder_SmallShip_Bot;\n                if (nb == null || nb.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n                ShipTemplates.Add(nb);\n            }\n\n            // WayPointPath\n            string pWPP = MyMwcMessageIn.ReadStringEx(binaryReader, senderEndPoint);\n            if (pWPP == null) return NetworkError();\n            WayPointPath = pWPP;\n            MyMwcLog.IfNetVerbose_AddToLog(\"WayPointPath: \" + WayPointPath);\n\n            // Faction\n            int ?pFaction = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);\n            if (pFaction == null) return NetworkError();\n            Faction = (MyMwcObjectBuilder_FactionEnum)pFaction.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"Faction: \" + Faction);\n\n            // SpawnInGroups\n            bool? spawnInGroups = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n            if (spawnInGroups == null) return NetworkError();\n            SpawnInGroups = spawnInGroups.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"SpawnInGroups: \" + SpawnInGroups);\n\n            // SpawnCount\n            int? spawnCount = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);\n            if (spawnCount == null) return NetworkError();\n            SpawnCount = spawnCount.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"SpawnCount: \" + SpawnCount);\n\n            // FirstSpawnTimer\n            float? firstSpawnTimer = MyMwcMessageIn.ReadFloat(binaryReader);\n            if (firstSpawnTimer == null) return NetworkError();\n            FirstSpawnTimer = firstSpawnTimer.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"FirstSpawnTimer: \" + FirstSpawnTimer);\n\n            // RespawnTimer\n            float? respawnTimer = MyMwcMessageIn.ReadFloat(binaryReader);\n            if (respawnTimer == null) return NetworkError();\n            RespawnTimer = respawnTimer.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"RespawnTimer: \" + RespawnTimer);\n\n            // BoundingRadius\n            float? pBR = MyMwcMessageIn.ReadFloat(binaryReader);\n            if (pBR == null) return NetworkError();\n            BoundingRadius = pBR.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"BoundingRadius: \" + BoundingRadius);\n\n            // Activated\n            bool? activated = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n            if (activated == null) return NetworkError();\n            Activated = activated.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"Activated: \" + Activated);\n\n            // Patrol mode\n            int? patrolMode = MyMwcMessageIn.ReadByteEx(binaryReader, senderEndPoint);\n            if (patrolMode == null) return NetworkError();\n            PatrolMode = (MyPatrolMode)patrolMode.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"PatrolMode: \" + PatrolMode);\n            \n            return true;\n        }\n\n        //  Write this object into message-out\n        internal override void Write(BinaryWriter binaryWriter)\n        {\n            m_numberOfTemplates = ShipTemplates.Count;\n\n            base.Write(binaryWriter);\n\n            MyMwcLog.IfNetVerbose_AddToLog(\"NumberOfTemplates: \" + m_numberOfTemplates);\n            MyMwcMessageOut.WriteInt32(m_numberOfTemplates, binaryWriter);\n\n            for (int c = 0; c < m_numberOfTemplates; c++)\n            {\n                ShipTemplates[c].Write(binaryWriter);\n            }\n\n            // WayPointPath\n            MyMwcLog.IfNetVerbose_AddToLog(\"WayPointPath: \" + WayPointPath);\n            MyMwcMessageOut.WriteString(WayPointPath, binaryWriter);\n\n            // Faction\n            MyMwcLog.IfNetVerbose_AddToLog(\"Faction: \" + Faction);\n            MyMwcMessageOut.WriteInt32((int)Faction, binaryWriter);\n\n            // SpawnInGroups\n            MyMwcLog.IfNetVerbose_AddToLog(\"SpawnInGroups: \" + SpawnInGroups);\n            MyMwcMessageOut.WriteBool(SpawnInGroups, binaryWriter);\n\n            // SpawnCount\n            MyMwcLog.IfNetVerbose_AddToLog(\"SpawnCount: \" + SpawnCount);\n            MyMwcMessageOut.WriteInt32(SpawnCount, binaryWriter);\n\n            // FirstSpawnTimer\n            MyMwcLog.IfNetVerbose_AddToLog(\"FirstSpawnTimer: \" + FirstSpawnTimer);\n            MyMwcMessageOut.WriteFloat(FirstSpawnTimer, binaryWriter);\n\n            // RespawnTimer\n            MyMwcLog.IfNetVerbose_AddToLog(\"RespawnTimer: \" + RespawnTimer);\n            MyMwcMessageOut.WriteFloat(RespawnTimer, binaryWriter);\n\n            // BoundingRadius\n            MyMwcLog.IfNetVerbose_AddToLog(\"BoundingRadius: \" + BoundingRadius);\n            MyMwcMessageOut.WriteFloat(BoundingRadius, binaryWriter);\n\n            // Activated\n            MyMwcLog.IfNetVerbose_AddToLog(\"Activated: \" + Activated);\n            MyMwcMessageOut.WriteBool(Activated, binaryWriter);\n\n            // PatrolMode\n            MyMwcLog.IfNetVerbose_AddToLog(\"PatrolMode: \" + PatrolMode);\n            MyMwcMessageOut.WriteByte((byte)PatrolMode, binaryWriter);\n        }\n    }\n}\n\n\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/ObjectBuilders/Object3D/MyMwcObjectBuilder_StaticAsteroid.cs",
    "content": "﻿using System;\nusing System.IO;\nusing System.Net;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing SysUtils.Utils;\nusing System.Data.SqlClient;\nusing System.Collections.Generic;\n\nnamespace MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D\n{\n    //  IMPORTANT: Never change numeric values and never delete any enum item. These numbers are referenced e.g. from database.\n    public enum MyMwcObjectBuilder_StaticAsteroid_TypesEnum : ushort\n    {\n        //JEROMIE = 1,        //  Jeromie is obsolete, don't use it\n        StaticAsteroid10m_A = 2,\n        StaticAsteroid20m_A = 3,\n        StaticAsteroid30m_A = 4,\n        StaticAsteroid50m_A = 5,\n        StaticAsteroid100m_A = 6,\n        StaticAsteroid300m_A = 7,\n        StaticAsteroid500m_A = 8,\n        StaticAsteroid1000m_A = 9,\n        StaticAsteroid2000m_A = 10,\n        StaticAsteroid5000m_A = 11,\n        StaticAsteroid10000m_A = 12,\n\n        StaticAsteroid10m_B = 13,\n        StaticAsteroid20m_B = 14,\n        StaticAsteroid30m_B = 15,\n        StaticAsteroid50m_B = 16,\n        StaticAsteroid100m_B = 17,\n        StaticAsteroid300m_B = 18,\n        StaticAsteroid500m_B = 19,\n        StaticAsteroid1000m_B = 20,\n        StaticAsteroid2000m_B = 21,\n        StaticAsteroid5000m_B = 22,\n        StaticAsteroid10000m_B = 23,\n\n        //Removed support \n        StaticAsteroid10m_C = 24,\n        StaticAsteroid20m_C = 25,\n        StaticAsteroid30m_C = 26,\n        StaticAsteroid50m_C = 27,\n        StaticAsteroid100m_C = 28,\n        StaticAsteroid300m_C = 29,\n        StaticAsteroid500m_C = 30,\n        StaticAsteroid1000m_C = 31,\n        StaticAsteroid2000m_C = 32,\n        StaticAsteroid5000m_C = 33,\n        StaticAsteroid10000m_C = 34,\n\n        //Removed support \n        StaticAsteroid10m_D = 35,\n        StaticAsteroid20m_D = 36,\n        StaticAsteroid30m_D = 37,\n        StaticAsteroid50m_D = 38,\n        StaticAsteroid100m_D = 39,\n        StaticAsteroid300m_D = 40,\n        StaticAsteroid500m_D = 41,\n        StaticAsteroid1000m_D = 42,\n        StaticAsteroid2000m_D = 43,\n        StaticAsteroid5000m_D = 44,\n        StaticAsteroid10000m_D = 45,\n\n        //Removed support \n        StaticAsteroid10m_E = 46,\n        StaticAsteroid20m_E = 47,\n        StaticAsteroid30m_E = 48,\n        StaticAsteroid50m_E = 49,\n        StaticAsteroid100m_E = 50,\n        StaticAsteroid300m_E = 51,\n        StaticAsteroid500m_E = 52,\n        StaticAsteroid1000m_E = 53,\n        StaticAsteroid2000m_E = 54,\n        StaticAsteroid5000m_E = 55,\n        StaticAsteroid10000m_E = 56,\n\n        //We support asteroids below\n        StaticAsteroid40000m_A = 57,\n    }\n\n    [Flags]\n    public enum MyStaticAsteroidTypeSetEnum\n    {\n        A = 0x1,\n        B = 0x2,\n\n        All = A | B,\n    }\n\n    public class MyMwcObjectBuilder_StaticAsteroid : MyMwcObjectBuilder_Object3dBase\n    {\n        public MyMwcObjectBuilder_StaticAsteroid_TypesEnum AsteroidType;\n        public MyMwcVoxelMaterialsEnum? AsteroidMaterial;\n        public MyMwcVoxelMaterialsEnum? AsteroidMaterial1;\n        public bool UseModelTechnique;\n        //These sizes are diameters\n        public static readonly List<int> AsteroidSizes = new List<int>()\n        {\n            10,\n            20,\n            30,\n            50,\n            100,\n            300,\n            500,\n            1000,\n            2000,\n            5000,\n            10000,\n        };\n        public MinerWarsMath.Vector3? FieldDir;\n            \n        static MyMwcObjectBuilder_StaticAsteroid()\n        {\n        }\n\n        internal MyMwcObjectBuilder_StaticAsteroid()\n            : base()\n        {\n            UseModelTechnique = false;\n        }\n\n        public MyMwcObjectBuilder_StaticAsteroid(MyMwcObjectBuilder_StaticAsteroid_TypesEnum asteroidType, MyMwcVoxelMaterialsEnum? material, MyMwcVoxelMaterialsEnum? material1 = null)\n        {\n            AsteroidType = asteroidType;\n            AsteroidMaterial = material;\n            AsteroidMaterial1 = material1;\n        }\n\n        public static void GetAsteroids(int sizeInMeters, MyStaticAsteroidTypeSetEnum material, List<MyMwcObjectBuilder_StaticAsteroid_TypesEnum> toList)\n        {\n            switch(sizeInMeters)\n            {\n                case 10:\n                    switch (material)\n                    {\n                        case MyStaticAsteroidTypeSetEnum.B:\n                            toList.Add(MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid10m_B);\n                            break;\n                        default:\n                            toList.Add(MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid10m_A);\n                            break;\n                    }\n/*\n                    toList.Add(MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid10m_C);\n                    toList.Add(MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid10m_D);\n                    toList.Add(MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid10m_E);\n * */\n                    break;\n\n                case 20:\n                    switch (material)\n                    {\n                        case MyStaticAsteroidTypeSetEnum.B:\n                            toList.Add(MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid20m_B);\n                            break;\n                        default:\n                            toList.Add(MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid20m_A);\n                            break;\n                    }\n                    /*\n                                        toList.Add(MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid20m_C);\n                                        toList.Add(MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid20m_D);\n                                        toList.Add(MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid20m_E);\n                     */ \n                    break;\n\n                case 30:\n                    switch (material)\n                    {\n                        case MyStaticAsteroidTypeSetEnum.B:\n                            toList.Add(MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid30m_B);\n                            break;\n                        default:\n                            toList.Add(MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid30m_A);\n                            break;\n                    }\n\n/*\n                    toList.Add(MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid30m_B);\n                    toList.Add(MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid30m_C);\n                    toList.Add(MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid30m_D);\n                    toList.Add(MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid30m_E);\n **/\n                    break;\n\n                case 50:\n                    switch (material)\n                    {\n                        case MyStaticAsteroidTypeSetEnum.B:\n                            toList.Add(MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid50m_B);\n                            break;\n                        default:\n                            toList.Add(MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid50m_A);\n                            break;\n                    }\n\n/*\n                    toList.Add(MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid50m_B);\n                    toList.Add(MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid50m_C);\n                    toList.Add(MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid50m_D);\n                    toList.Add(MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid50m_E);\n **/\n                    break;\n\n                case 100:\n                    switch (material)\n                    {\n                        case MyStaticAsteroidTypeSetEnum.B:\n                            toList.Add(MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid100m_B);\n                            break;\n                        default:\n                            toList.Add(MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid100m_A);\n                            break;\n                    }\n\n/*\n                    toList.Add(MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid100m_B);\n                    toList.Add(MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid100m_C);\n                    toList.Add(MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid100m_D);\n                    toList.Add(MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid100m_E);\n */ \n                    break;\n\n                case 300:\n                    switch (material)\n                    {\n                        case MyStaticAsteroidTypeSetEnum.B:\n                            toList.Add(MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid300m_B);\n                            break;\n                        default:\n                            toList.Add(MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid300m_A);\n                            break;\n                    }\n/*\n                    toList.Add(MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid300m_B);\n                    toList.Add(MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid300m_C);\n                    toList.Add(MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid300m_D);\n                    toList.Add(MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid300m_E);\n */ \n                    break;\n\n                case 500:\n                    switch (material)\n                    {\n                        case MyStaticAsteroidTypeSetEnum.B:\n                            toList.Add(MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid500m_B);\n                            break;\n                        default:\n                            toList.Add(MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid500m_A);\n                            break;\n                    }\n/*\n                    toList.Add(MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid500m_B);\n                    toList.Add(MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid500m_C);\n                    toList.Add(MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid500m_D);\n                    toList.Add(MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid500m_E);\n */ \n                    break;\n\n                case 1000:\n                    // Commented unoptimized asteroids (high poly count)\n                    switch (material)\n                    {\n                        case MyStaticAsteroidTypeSetEnum.B:\n                            toList.Add(MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid1000m_B);\n                            break;\n                        default:\n                            toList.Add(MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid1000m_A);\n                            break;\n                    }\n                    //toList.Add(MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid1000m_B);\n                    //toList.Add(MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid1000m_C);\n                    //toList.Add(MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid1000m_D);\n                    //toList.Add(MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid1000m_E);\n                    break;\n\n                case 2000:\n                    // Commented unoptimized asteroids (high poly count)\n                    switch (material)\n                    {\n                        case MyStaticAsteroidTypeSetEnum.B:\n                            toList.Add(MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid2000m_B);\n                            break;\n                        default:                                                                  \n                            toList.Add(MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid2000m_A);\n                            break;\n                    }\n                    //toList.Add(MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid2000m_B);\n                    //toList.Add(MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid2000m_C);\n                    //toList.Add(MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid2000m_D);\n                    //toList.Add(MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid2000m_E);\n                    break;\n\n                case 5000:\n                    switch (material)\n                    {\n                        case MyStaticAsteroidTypeSetEnum.B:\n                            toList.Add(MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid5000m_B);\n                            break;\n                        default:\n                            toList.Add(MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid5000m_A);\n                            break;\n                    }\n/*\n                    toList.Add(MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid5000m_B);\n                    toList.Add(MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid5000m_C);\n                    toList.Add(MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid5000m_D);\n                    toList.Add(MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid5000m_E);\n */ \n                    break;\n\n                case 10000:\n                    switch (material)\n                    {\n                        case MyStaticAsteroidTypeSetEnum.B:\n                            toList.Add(MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid10000m_B);\n                            break;\n                        default:\n                            toList.Add(MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid10000m_A);\n                            break;\n                    }\n/*\n                    toList.Add(MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid10000m_B);\n                    toList.Add(MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid10000m_C);\n                    toList.Add(MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid10000m_D);\n                    toList.Add(MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid10000m_E);\n */ \n                    break;\n\n                default:\n                    System.Diagnostics.Debug.Assert(true, \"Asteroid of this size does not exists\");\n                    break;\n            }\n        }\n\n        public override int? GetObjectBuilderId()\n        {\n            return (int)AsteroidType;\n        }\n\n        internal override void SetObjectBuilderIdInternal(int? objectBuilderId)\n        {\n            AsteroidType = (MyMwcObjectBuilder_StaticAsteroid_TypesEnum)Convert.ToUInt16(objectBuilderId);\n        }\n\n        public override MyMwcObjectBuilderTypeEnum GetObjectBuilderType()\n        {\n            return MyMwcObjectBuilderTypeEnum.StaticAsteroid;\n        }\n\n        //  Write this object into message-out\n        internal override void Write(BinaryWriter binaryWriter)\n        {\n            base.Write(binaryWriter);\n\n            // Asteroid Type\n            MyMwcLog.IfNetVerbose_AddToLog(\"AsteroidType: \" + AsteroidType);\n            MyMwcMessageOut.WriteObjectBuilderStaticAsteroidTypesEnum(AsteroidType, binaryWriter);\n\n            // Asteroid Material\n            MyMwcLog.IfNetVerbose_AddToLog(\"MyMwcObjectBuilder_StaticAsteroid.AsteroidMaterial.HasValue: \" + this.AsteroidMaterial.HasValue);\n            MyMwcMessageOut.WriteBool(this.AsteroidMaterial.HasValue, binaryWriter);\n            if (this.AsteroidMaterial.HasValue)\n            {\n                MyMwcLog.IfNetVerbose_AddToLog(\"MyMwcObjectBuilder_StaticAsteroid.AsteroidMaterial.Value: \" + this.AsteroidMaterial.Value);\n                MyMwcMessageOut.WriteByte((byte)this.AsteroidMaterial.Value, binaryWriter);\n            }\n        }\n\n        //  Read this object from message-in\n        internal override bool Read(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n        {\n            if (base.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n\n            // Asteroid Type\n            MyMwcObjectBuilder_StaticAsteroid_TypesEnum? asteroidType = MyMwcMessageIn.ReadObjectBuilderStaticAsteroidTypesEnumEx(binaryReader, senderEndPoint);\n            if (asteroidType == null) return NetworkError();\n            AsteroidType = asteroidType.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"AsteroidType: \" + AsteroidType);\n\n            // Asteroid Material\n            bool? hasId = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n            if (!hasId.HasValue) return NetworkError(); // Cannot read bool - whether owner asteroid material is null or not\n            MyMwcLog.IfNetVerbose_AddToLog(\"MyMwcObjectBuilder_StaticAsteroid.AsteroidMaterial.HasValue: \" + hasId.Value);\n\n            // Testing whether Asteroid Material is null\n            if (hasId.Value)\n            {\n                // asteroid material has value - read the value\n                byte? asteroidMaterial = MyMwcMessageIn.ReadByteEx(binaryReader, senderEndPoint);\n                if (!asteroidMaterial.HasValue) return NetworkError(); // Cannot read asteroid material\n\n                MyMwcLog.IfNetVerbose_AddToLog(\"MyMwcObjectBuilder_StaticAsteroid.AsteroidMaterial.Value: \" + asteroidMaterial.Value);\n                this.AsteroidMaterial = (MyMwcVoxelMaterialsEnum)asteroidMaterial.Value;\n            }\n            else\n            {\n                this.AsteroidMaterial = null;\n            }\n\n            return true;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/ObjectBuilders/Object3D/MyMwcObjectBuilder_WayPoint.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWarsMath;\nusing System.IO;\nusing System.Net;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing SysUtils.Utils;\nusing MinerWars.AppCode.Game;\n\nnamespace MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D\n{\n    public class MyMwcObjectBuilder_WaypointNew : MyMwcObjectBuilder_Object3dBase\n    {\n        public int? ParentEntityId;\n        public List<int> NeighborEntityIds;\n        public List<string> GroupNames;\n        public List<int> GroupPlacings;\n\n        internal MyMwcObjectBuilder_WaypointNew()\n            : base()\n        {\n            ParentEntityId = null;\n            NeighborEntityIds = new List<int>();\n            GroupNames = new List<string>();\n            GroupPlacings = new List<int>();\n        }\n\n        public override void RemapEntityIds(IMyEntityIdRemapContext remapContext)\n        {\n            base.RemapEntityIds(remapContext);\n            ParentEntityId = (int?)remapContext.RemapEntityId((uint?)ParentEntityId);\n            for (int i = 0; i < NeighborEntityIds.Count; i++)\n            {\n                NeighborEntityIds[i] = (int)remapContext.RemapEntityId((uint)NeighborEntityIds[i]).Value;\n            }\n            for (int i = 0; i < GroupNames.Count; i++)\n            {\n                GroupNames[i] = remapContext.RemapWaypointGroupName(GroupNames[i]);\n            }\n        }\n\n        public override MyMwcObjectBuilderTypeEnum GetObjectBuilderType()\n        {\n            return MyMwcObjectBuilderTypeEnum.WaypointNew;\n        }\n\n        internal override void Write(BinaryWriter binaryWriter)\n        {\n            base.Write(binaryWriter);\n\n            MyMwcMessageOut.WriteBool(ParentEntityId.HasValue, binaryWriter);\n            if (ParentEntityId.HasValue)\n            {\n                MyMwcLog.IfNetVerbose_AddToLog(\"Waypoint parent id: \" + ParentEntityId.Value.ToString());\n                MyMwcMessageOut.WriteInt32(ParentEntityId.Value, binaryWriter);\n            }\n\n            MyMwcMessageOut.WriteInt32(NeighborEntityIds.Count, binaryWriter);\n            MyMwcLog.IfNetVerbose_AddToLog(\"Neighbor count: \" + NeighborEntityIds.Count.ToString());\n            for (int i = 0; i < NeighborEntityIds.Count; i++)\n            {\n                MyMwcMessageOut.WriteInt32(NeighborEntityIds[i], binaryWriter);\n            }\n\n            System.Diagnostics.Debug.Assert(GroupPlacings.Count == GroupNames.Count);\n            MyMwcMessageOut.WriteInt32(GroupPlacings.Count, binaryWriter);\n            MyMwcLog.IfNetVerbose_AddToLog(\"Group count: \" + GroupPlacings.Count.ToString());\n            for (int i = 0; i < GroupPlacings.Count; i++)\n            {\n                MyMwcMessageOut.WriteString(GroupNames[i], binaryWriter);\n                MyMwcMessageOut.WriteInt32(GroupPlacings[i], binaryWriter);\n            }\n        }\n\n        internal override bool Read(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n        {\n            if (base.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n\n            bool? hasParent = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint); if (!hasParent.HasValue) return NetworkError();\n            ParentEntityId = null;\n            if (hasParent.Value)\n            {\n                int? id = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint); if (!id.HasValue) return NetworkError();\n                ParentEntityId = id.Value;\n                MyMwcLog.IfNetVerbose_AddToLog(\"Waypoint parent id: \" + ParentEntityId.Value.ToString());\n            }\n\n            int? nCount = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint); if (!nCount.HasValue) return NetworkError();\n            MyMwcLog.IfNetVerbose_AddToLog(\"Neighbor count: \" + nCount.Value.ToString());\n            NeighborEntityIds = new List<int>();\n            for (int i = 0; i < nCount.Value; i++)\n            {\n                int? index = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint); if (!index.HasValue) return NetworkError();\n                NeighborEntityIds.Add(index.Value);\n            }\n\n            int? gCount = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint); if (!nCount.HasValue) return NetworkError();\n            MyMwcLog.IfNetVerbose_AddToLog(\"Group count: \" + gCount.Value.ToString());\n            GroupNames = new List<string>();\n            GroupPlacings = new List<int>();\n            for (int i = 0; i < gCount.Value; i++)\n            {\n                string name = MyMwcMessageIn.ReadStringEx(binaryReader, senderEndPoint); if (name == null) return NetworkError();\n                GroupNames.Add(name);\n                int? placing = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint); if (!placing.HasValue) return NetworkError();\n                GroupPlacings.Add(placing.Value);\n            }\n\n            return true;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/ObjectBuilders/SubObjects/LargeShipTools/MyMwcObjectBuilder_LargeShip_Ammo.cs",
    "content": "﻿using System.IO;\nusing System.Net;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing System;\n\nnamespace MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.LargeShipTools\n{\n    //  IMPORTANT: Never change numeric values and never delete any enum item. These numbers are referenced e.g. from database.\n    public enum MyMwcObjectBuilder_LargeShip_Ammo_TypesEnum : ushort\n    {\n        CIWS_Armor_Piercing_Incendiary = 1,\n        CIWS_High_Explosive_Incendiary = 2,\n        CIWS_SAPHEI = 3,\n    }\n\n    public class MyMwcObjectBuilder_LargeShip_Ammo : MyMwcObjectBuilder_LargeShip_ToolBase\n    {\n        public int Amount;\n        public MyMwcObjectBuilder_LargeShip_Ammo_TypesEnum AmmoType;\n\n        internal MyMwcObjectBuilder_LargeShip_Ammo()\n            : base()\n        {\n        }\n\n        public MyMwcObjectBuilder_LargeShip_Ammo(int amount, MyMwcObjectBuilder_LargeShip_Ammo_TypesEnum ammoType)\n        {\n            Amount = amount;\n            AmmoType = ammoType;\n        }\n\n        public override MyMwcObjectBuilderTypeEnum GetObjectBuilderType()\n        {\n            return MyMwcObjectBuilderTypeEnum.LargeShip_Ammo;\n        }\n\n        public override int? GetObjectBuilderId()\n        {\n            return (int)AmmoType;\n        }\n\n        internal override void SetObjectBuilderIdInternal(int? objectBuilderId)\n        {\n            AmmoType = (MyMwcObjectBuilder_LargeShip_Ammo_TypesEnum)Convert.ToUInt16(objectBuilderId);\n        }\n\n        //  Write this object into message-out\n        internal override void Write(BinaryWriter binaryWriter)\n        {\n            base.Write(binaryWriter);\n\n            //  Amount\n            MyMwcLog.IfNetVerbose_AddToLog(\"Amount: \" + Amount);\n            MyMwcMessageOut.WriteInt32(Amount, binaryWriter);\n\n            //  Ammo Type\n            MyMwcLog.IfNetVerbose_AddToLog(\"AmmoType: \" + AmmoType);\n            MyMwcMessageOut.WriteObjectBuilderLargeShipAmmoTypesEnum(AmmoType, binaryWriter);\n        }\n\n        //  Read this object from message-in\n        internal override bool Read(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n        {\n            if (base.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n\n            int? amount = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);\n            if (amount == null) return NetworkError();\n            Amount = amount.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"Amount: \" + Amount);\n\n            //  Ammo Type\n            MyMwcObjectBuilder_LargeShip_Ammo_TypesEnum? ammoType = MyMwcMessageIn.ReadObjectBuilderLargeShipAmmoTypesEnumEx(binaryReader, senderEndPoint);\n            if (ammoType == null) return NetworkError();\n            AmmoType = ammoType.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"AmmoType: \" + AmmoType);\n\n            return true;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/ObjectBuilders/SubObjects/LargeShipTools/MyMwcObjectBuilder_LargeShip_ToolBase.cs",
    "content": "﻿namespace MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.LargeShipTools\n{\n    public abstract class MyMwcObjectBuilder_LargeShip_ToolBase : MyMwcObjectBuilder_SubObjectBase\n    {\n        protected MyMwcObjectBuilder_LargeShip_ToolBase() : base()\n        {\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/ObjectBuilders/SubObjects/MyMwcObjectBuilder_Blueprint.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Net;\nusing System.Reflection;\nusing System.Text;\nusing KeenSoftwareHouse.Library.Extensions;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing SysUtils.Utils;\n\nnamespace MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects\n{\n    //  IMPORTANT: Never change numeric values and never delete any enum item. These numbers are referenced e.g. from database.\n    public enum MyMwcObjectBuilder_Blueprint_TypesEnum : ushort\n    {\n        //P430_A01_PASSAGE_10M = 0,\n        //P430_A02_PASSAGE_40M  = 1,\n        //P424_A01_PIPE_BASE = 2,\n        //P423_A01_PIPE_JUNCTION = 3,\n        //P422_A01_PIPE_TURN_90 = 4,\n        //P421_A01_PIPE_STRAIGHT_80M = 5,\n        //P421_A02_PIPE_STRAIGHT_40M = 6,\n        //P421_A03_PIPE_STRAIGHT_10M = 7,\n        //P413_G01_JUNCTION_6AXES = 8,\n        //P414_G02_ENTRANCE_60M = 9,\n        //P410_G01_TURN_90_RIGHT_0M = 10,\n        //P411_G01_STRAIGHT_1 = 11,\n        //P411_G02_STRAIGHT_2 = 12,\n        //P411_G03_STRAIGHT_3 = 13,\n        //P411_G04_STRAIGHT_4 = 14,\n        //P414_F02_ENTRANCE_60M = 15,\n        //P412_F21_TURN_S_UP = 16,\n        //P412_F22_TURN_S_LEFT = 17,\n        //P412_F23_TURN_S_RIGHT = 18,\n        //P412_F24_TURN_S_DOWN = 19,\n        //P412_F01_TURN_90_UP_230M = 20,\n        //P412_F02_TURN_90_LEFT_230M = 21,\n        //P412_F03_TURN_90_RIGHT_230M = 22,\n        //P412_F04_TURN_90_DOWN_230M = 23,\n        //P411_F01_STRAIGHT_1 = 24,\n        //P411_F02_STRAIGHT_2 = 25,\n        //P411_F03_STRAIGHT_3 = 26,\n        //P414_E01_ENTRANCE_60M = 27,\n        //P411_E01_STRAIGHT_1 = 28,\n        //P411_E02_STRAIGHT_2 = 29,\n        //P411_E03_STRAIGHT_3 = 30,\n        //P411_E04_STRAIGHT_4 = 31,\n        //P411_E05_STRAIGHT_5 = 32,\n        //P415_D01_DOORCASE = 33,\n        //P415_D02_DOOR1 = 34,\n        //P415_D03_DOOR2_A = 35,\n        //P415_D03_DOOR2_B = 36,\n        //P413_D01_JUNCTION_T_HORIZONTAL = 37,\n        //P413_D03_JUNCTION_X_HORIZONTAL = 38,\n        //P414_D01_ENTRANCE_60M = 39,\n        //P411_D01_STRAIGHT_10M = 40,\n        //P411_D02_STRAIGHT_40M_WITH_HOLE = 41,\n        //P411_D03_STRAIGHT_60M = 42,\n        //P411_D04_STRAIGHT_120M = 43,\n        //P411_D05_STRAIGHT_180M = 44,\n        //P415_C01_DOOR1 = 45,\n        //P415_C01_DOOR2 = 46,\n        //P415_C01_DOOR3 = 47,\n        //P415_C01_DOOR4 = 48,\n        //P413_C01_JUNCTION_T_HORIZONTAL = 49,\n        //P413_C01_JUNCTION_X_HORIZONTAL = 50,\n        //P414_C01_ENTRANCE_60M = 51,\n        //P411_C01_STRAIGHT_10M = 52,\n        //P411_C02_STRAIGHT_40M_WITH_HOLE = 53,\n        //P411_C03_STRAIGHT_60M = 54,\n        //P411_C04_STRAIGHT_120M = 55,\n        //P411_C05_STRAIGHT_180M = 56,\n        //P415_B01_DOORCASE = 57,\n        //P415_B02_DOOR = 58,\n        //P413_B01_JUNCTION_T_HORIZONTAL = 59,\n        //P413_B02_JUNCTION_T_VERTICAL = 60,\n        //P414_B02_ENTRANCE_60M = 61,\n        //P412_B21_TURN_S_UP = 62,\n        //P412_B22_TURN_S_LEFT = 63,\n        //P412_B23_TURN_S_RIGHT = 64,\n        //P412_B24_TURN_S_DOWN = 65,\n        //P412_B11_TURN_90_UP_160M = 66,\n        //P412_B12_TURN_90_LEFT_160M = 67,\n        //P412_B13_TURN_90_RIGHT_160M = 68,\n        //P412_B14_TURN_90_DOWN_160M = 69,\n        //P412_B01_TURN_90_UP_80M = 70,\n        //P412_B02_TURN_90_LEFT_80M = 71,\n        //P412_B03_TURN_90_RIGHT_80M = 72,\n        //P412_B04_TURN_90_DOWN_80M = 73,\n        //P411_B01_STRAIGHT_10M = 74,\n        //p411_B02_STRAIGHT_30M_YELLOW = 75,\n        //p411_B03_STRAIGHT_320M = 76,\n        //p411_B04_STRAIGHT_80M_WITH_SIDE_GRATES = 77,\n        //p411_B05_STRAIGHT_80M_WITH_SIDE_OPEN = 78,\n        //p411_B06_STRAIGHT_180M_CONCRETE = 79,\n        //p411_B06_STRAIGHT_200M = 80,\n        //p411_B07_STRAIGHT_180M_BLUE = 81,\n        //p411_B09_STRAIGHT_30M_GRAY = 82,\n        //p411_B11_STRAIGHT_220M = 83,\n        //p411_B12_STRAIGHT_160M_DARK_METAL = 84,\n        //p411_B13_STRAIGHT_100M_TUBE_INSIDE = 85,\n        //P415_A01_DOORCASE = 86,\n        //P415_A02_DOOR = 87,\n        //P413_A01_JUNCTION_T_HORIZONTAL = 88,\n        //P413_A02_JUNCTION_T_VERTICAL = 89,\n        //P414_A01_ENTRANCE_30M = 90,\n        //P414_A02_ENTRANCE_60M = 91,\n        //P412_A21_TURN_S_UP = 92,\n        //P412_A22_TURN_S_LEFT = 93,\n        //P412_A23_TURN_S_RIGHT = 94,\n        //P412_A24_TURN_S_DOWN = 95,\n        //P412_A11_TURN_90_UP_160M = 96,\n        //P412_A12_TURN_90_LEFT_160M = 97,\n        //P412_A13_TURN_90_RIGHT_160M = 98,\n        //P412_A14_TURN_90_DOWN_160M = 99,\n        //P412_A01_TURN_90_UP_80M = 100,\n        //P412_A02_TURN_90_LEFT_80M = 101,\n        //P412_A03_TURN_90_RIGHT_80M = 102,\n        //P412_A04_TURN_90_DOWN_80M = 103,\n        //P411_A01_STRAIGHT_10M = 104,\n        //P411_A02_STRAIGHT_60M_WITH_HOLE = 105,\n        //P411_A03_STRAIGHT_120M = 106,\n        //P411_A04_STRAIGHT_80M = 107,\n        //P411_A05_STRAIGHT_80M_WITH_EXTENSION = 108,\n        //P382_E01_BRIDGE5 = 109,\n        //P382_D01_BRIDGE4 = 110,\n        //P382_C01_BRIDGE3 = 111,\n        //P382_B01_BRIDGE2 = 112,\n        //P382_A01_BRIDGE1 = 113,\n        //P381_C01_BUILDING3 = 114,\n        //P381_B01_BUILDING2 = 115,\n        //P381_A01_BUILDING1 = 116,\n        //P361_A01_SMALL_HANGAR = 117,\n        //P362_A01_SHORT_DISTANCE_ANTENNA = 118,\n        //P361_A01_LONG_DISTANCE_ANTENNA = 119,\n        //P351_A01_WEAPON_MOUNT = 120,\n        //P345_A01_REFINERY = 121,\n        //P344_A01_CONTAINER_ARM_FILLED = 122,\n        //P344_A02_CONTAINER_ARM_EMPTY = 123,\n        //P343_A01_ORE_STORAGE = 124,\n        //P342_A01_LOADING_BAY = 125,\n        //P341_B01_OPEN_DOCK_VARIATION1 = 126,\n        //P341_B02_OPEN_DOCK_VARIATION2 = 127,\n        //P341_A01_OPEN_DOCK_VARIATION1 = 128,\n        //P341_A02_OPEN_DOCK_VARIATION2 = 129,\n        //P333_A01_HYDROPONIC_BUILDING = 130,\n        //P332_A01_OXYGEN_STORAGE = 131,\n        //P331_A01_OXYGEN_GENERATOR = 132,\n        //P324B01_FUEL_STORAGE_B = 133,\n        //P324A01_FUEL_STORAGE_A = 134,\n        //P323A01_FUEL_GENERATOR = 135,\n        //P322A01_BATTERY = 136,\n        //P321C01_INERTIA_GENERATOR = 137,\n        //P321B01_NUCLEAR_REACTOR = 138,\n        //P321A01_SOLAR_PANEL = 139,\n        //P312A01_SHORT_TERM_THRUSTER_LATITUDE = 140,\n        //P312A02_SHORT_TERM_THRUSTER_LATERAL = 141,\n        //P311A01_LONG_TERM_THRUSTER = 142,\n        //P231A01_ARMOR = 143,\n        //P231A02_ARMOR = 144,\n        //P231A03_ARMOR = 145,\n        //P231A04_ARMOR = 146,\n        //P231A05_ARMOR = 147,\n        //P231A06_ARMOR = 148,\n        //P231A07_ARMOR = 149,\n        //P231A08_ARMOR = 150,\n        //P231A09_ARMOR = 151,\n        //P231A10_ARMOR = 152,\n        //P231A11_ARMOR = 153,\n        //P231A12_ARMOR = 154,\n        //P231A13_ARMOR = 155,\n        //P231A14_ARMOR = 156,\n        //P231A15_ARMOR = 157,\n        //P231A16_ARMOR = 158,\n        //P231A17_ARMOR = 159,\n        //P231A18_ARMOR = 160,\n        //P221E01_CHAMBER_V1 = 161,\n        //P221D01_CHAMBER_V1 = 162,\n        //P221C01_CHAMBER_V1 = 163,\n        //P221B01_CHAMBER_V1 = 164,\n        //P221A01_CHAMBER_V1 = 165,\n        //P211G01_PANEL_120MX60M = 166,\n        //P211G02_PANEL_60MX60M = 167,\n        //P211G03_PANEL_60MX30M = 168,\n        //P211F01_PANEL_120MX60M = 169,\n        //P211F02_PANEL_60MX60M = 170,\n        //P211F03_PANEL_60MX30M = 171,\n        //P211E01_PANEL_120MX60M = 172,\n        //P211E02_PANEL_60MX60M = 173,\n        //P211E03_PANEL_60MX30M = 174,\n        //P211D01_PANEL_120MX60M = 175,\n        //P211D02_PANEL_60MX60M = 176,\n        //P211D03_PANEL_60MX30M = 177,\n        //P211C01_PANEL_120MX60M = 178,\n        //P211C02_PANEL_60MX60M = 179,\n        //P211C03_PANEL_60MX30M = 180,\n        //P211B01_PANEL_120MX60M = 181,\n        //P211B02_PANEL_60MX60M = 182,\n        //P211B03_PANEL_60MX30M = 183,\n        //P211A01_PANEL_120MX60M = 184,\n        //P211A02_PANEL_60MX60M = 185,\n        //P211A03_PANEL_60MX30M = 186,\n        //P142B01_CAGE_EMPTY = 187,\n        //P142B02_CAGE_HALFCUT = 188,\n        //P142B03_CAGE_WITH_CORNERS = 189,\n        //P142B11_CAGE_PILLAR = 190,\n        //P142B12_CAGE_EDGE = 191,\n        //P142A01_CAGE_EMPTY = 192,\n        //P142A02_CAGE_HALFCUT = 193,\n        //P142A03_CAGE_WITH_CORNERS = 194,\n        //P142A11_CAGE_PILLAR = 195,\n        //P142A12_CAGE_EDGE = 196,\n        //P141B01_THICK_FRAME_STRAIGHT_10M = 197,\n        //P141B02_THICK_FRAME_STRAIGHT_60M = 198,\n        //P141B11_THICK_FRAME_EDGE = 199,\n        //P141B12_THICK_FRAME_CORNER = 200,\n        //P141B31_THICK_FRAME_JOINT = 201,\n        //P141A01_THICK_FRAME_STRAIGHT_10M = 202,\n        //P141A02_THICK_FRAME_STRAIGHT_60M = 203,\n        //P141A11_THICK_FRAME_EDGE = 204,\n        //P141A12_THICK_FRAME_CORNER = 205,\n        //P141A31_THICK_FRAME_JOINT = 206,\n        //P120J01_J_STRAIGHT_30M = 207,\n        //P130J02_J_STRAIGHT_10M = 208,\n        //P120I01_I_STRAIGHT_30M = 209,\n        //P130I02_I_STRAIGHT_10M = 210,\n        //P120H01_H_STRAIGHT_30M = 211,\n        //P130H02_H_STRAIGHT_10M = 212,\n        //P120G01_G_STRAIGHT_30M = 213,\n        //P130G02_G_STRAIGHT_10M = 214,\n        //P120F01_F_STRAIGHT_30M = 215,\n        //P130F02_F_STRAIGHT_10M = 216,\n        //P120E01_E_STRAIGHT_30M = 217,\n        //P130E02_E_STRAIGHT_10M = 218,\n        //P120D01_D_STRAIGHT_30M = 219,\n        //P130D02_D_STRAIGHT_10M = 220,\n        //P120C01_C_STRAIGHT_30M = 221,\n        //P130C02_C_STRAIGHT_10M = 222,\n        //P120B01_B_STRAIGHT_30M = 223,\n        //P130B02_B_STRAIGHT_10M = 224,\n        //P120A01_A_STRAIGHT_30M = 225,\n        //P130A02_A_STRAIGHT_10M = 226,\n        //P120D01_D_STRAIGHT_10M = 227,\n        //P120D02_D_STRAIGHT_40M = 228,\n        //P120C01_C_STRAIGHT_10M = 229,\n        //P120C02_C_STRAIGHT_40M = 230,\n        //P120B01_B_STRAIGHT_10M = 231,\n        //P120B02_B_STRAIGHT_40M = 232,\n        //P120A01_STRONG_LATTICE_STRAIGHT_10M = 233,\n        //P120A02_STRONG_LATTICE_STRAIGHT_60M = 234,\n        //P120A03_STRONG_LATTICE_STRAIGHT_120M = 235,\n        //P120A21_STRONG_LATTICE_JUNCTION_T_STRONG = 236,\n        //P120A22_STRONG_LATTICE_JUNCTION_T_WEAK = 237,\n        //P120A23_STRONG_LATTICE_JUNCTION_T_ROTATED = 238,\n        //P120A51_STRONG_TO_WEAK_LATTICE_2TO1 = 239,\n        //P120A52_STRONG_TO_WEAK_LATTICE_1TO2 = 240,\n        //P120A61_WEAK_LATTICE_JUNCTION_T_ROTATED = 241,\n        //P110B01_LATTICE_BEAM_STRAIGHT_10M = 242,\n        //P110B02_LATTICE_BEAM_STRAIGHT_30M = 243,\n        //P110B03_LATTICE_BEAM_STRAIGHT_60M = 244,\n        //P110B04_LATTICE_BEAM_STRAIGHT_60M_WITH_PANELS = 245,\n        //P110B21_LATTICE_BEAM_JUNCTION_T_STRONG = 246,\n        //P110B22_LATTICE_BEAM_JUNCTION_T_WEAK = 247,\n        //P110B31_LATTICE_BEAM_JOINT_HORIZONTAL = 248,\n        //P110B32_LATTICE_BEAM_JOINT_VERTICAL = 249,\n        //P110A01_SOLID_BEAM_STRAIGHT_10M = 250,\n        //P110A02_SOLID_BEAM_STRAIGHT_20M = 251,\n        //P110A03_SOLID_BEAM_STRAIGHT_40M_WITH_HOLE = 252,\n        //P110A04_SOLID_BEAM_STRAIGHT_40M_LATTICE = 253,\n        //P110A05_SOLID_BEAM_STRAIGHT_80M = 254,\n        //P110A11_SOLID_BEAM_JUNCTION_X_STRONG = 255,\n        //P110A12_SOLID_BEAM_JUNCTION_X_WEAK = 256,\n        //P110A13_SOLID_BEAM_JUNCTION_X_ROTATED = 257,\n        //P110A21_SOLID_BEAM_JUNCTION_T_STRONG = 258,\n        //P110A22_SOLID_BEAM_JUNCTION_T_WEAK = 259,\n        //P110A23_SOLID_BEAM_JUNCTION_T_ROTATED = 260,\n        //P110A31_SOLID_BEAM_JOINT_HORIZONTAL = 261,\n        //P110A32_SOLID_BEAM_JOINT_VERTICAL = 262,\n        //P110A33_SOLID_BEAM_JOINT_LONGITUDINAL = 263,\n        //P110A41_SOLID_BEAM_SUPERJOINT = 264,\n        //DEFAULT_LIGHT_0,//rename i = 265,\n        //P521_A01_LIGHT1 = 266,\n        //P521_A02_LIGHT2 = 267,\n        //P521_A03_LIGHT3 = 268,\n        //P521_A04_LIGHT4 = 269,\n        //DEFAULT_PARTICLE_PREFAB_0 = 270,\n        //P551_A01_PARTICLES = 271,\n        //P551_B01_PARTICLES = 272,\n        //P551_C01_PARTICLES = 273,\n        //P551_D01_PARTICLES = 274,\n        //DEFAULT_SOUND_PREFAB_0 = 275,\n        //P561_A01_SOUND = 276,\n        //P561_B01_SOUND = 277,\n        //P561_C01_SOUND = 278,\n        //P561_D01_SOUND = 279,\n        //P352_A01_LARGESHIP_AUTOCANNON = 280,\n        //P352_A01_LARGESHIP_MACHINEGUN = 281,\n        //P352_A01_LARGESHIP_CIWS = 282,\n        //P352_A01_LARGESHIP_MISSILE_BASIC4 = 283,\n        //P352_A01_LARGESHIP_MISSILE_BASIC6 = 284,\n        //P352_A01_LARGESHIP_MISSILE_BASIC9 = 285,\n        //P352_A02_LARGESHIP_MISSILE_GUIDED4 = 286,\n        //P352_A02_LARGESHIP_MISSILE_GUIDED6 = 287,\n        //P352_A02_LARGESHIP_MISSILE_GUIDED9 = 288,\n        //P511_A01_BILLBOARD = 289,\n        //P511_A02_BILLBOARD = 290,\n        //P511_A03_BILLBOARD = 291,\n        //P511_A04_BILLBOARD = 292,\n        //P511_A05_BILLBOARD = 293,\n        //P511_A06_BILLBOARD = 294,\n        //P511_A07_BILLBOARD = 295,\n        //P511_A08_BILLBOARD = 296,\n        //P511_A09_BILLBOARD = 297,\n        //P511_A10_BILLBOARD = 298,\n        //P511_A11_BILLBOARD = 299,\n        //P511_A12_BILLBOARD = 300,\n        //P511_A13_BILLBOARD = 301,\n        //P511_A14_BILLBOARD = 302,\n        //P511_A15_BILLBOARD = 303,\n        //P511_A16_BILLBOARD = 304,\n        //P531_A01_SIGN1 = 305,\n        //P531_A02_SIGN2 = 306,\n        //P531_A03_SIGN3 = 307,\n        //P531_A04_SIGN4 = 308,\n        //P531_A05_SIGN5 = 309,\n        //P531_A06_SIGN6 = 310,\n        //P531_A07_SIGN7 = 311,\n        //P531_A08_SIGN8 = 312,\n        //P531_A09_SIGN9 = 313,\n        //P531_A10_SIGN10 = 314,\n        //P531_A11_SIGN11 = 315,\n        //P531_A12_SIGN12 = 316,\n        //P221_A02_CHAMBER_V2 = 317,\n        //P221_B02_CHAMBER_V2 = 318,\n        //P221_C02_CHAMBER_V2 = 319,\n        //P221_D02_CHAMBER_V2 = 320,\n        //P221_E02_CHAMBER_V2 = 321,\n        //P130_A01_STRAIGHT_10M = 322,\n        //P130_A02_STRAIGHT_30M = 323,\n        //P130_B01_STRAIGHT_10M = 324,\n        //P130_B02_STRAIGHT_30M = 325,\n        //P130_C01_STRAIGHT_10M = 326,\n        //P130_C02_STRAIGHT_30M = 327,\n        //P130_D01_STRAIGHT_10M = 328,\n        //P130_D02_STRAIGHT_30M = 329,\n        //P130_E01_STRAIGHT_10M = 330,\n        //P130_E02_STRAIGHT_30M = 331,\n        //P321_B01_SOLAR_PANEL = 332,\n        //P321_C01_SOLAR_PANEL = 333,\n        //P413_D02_JUNCTION_T_VERTICAL = 334,\n        //P413_D04_JUNCTION_X_VERTICAL = 335,\n        //P412_F11_TURN_90_UP_230M = 336,\n        //P412_F12_TURN_90_LEFT_230M = 337,\n        //P412_F13_TURN_90_RIGHT_230M = 338,\n        //P412_F14_TURN_90_DOWN_230M = 339,\n        //P411_F04_STRAIGHT_4 = 340,\n        //P411_F05_STRAIGHT_5 = 341,\n        //P411_G05_STRAIGHT_5 = 342,\n        //P414_F01_ENTRANCE_60M = 343,\n        //P414_G01_ENTRANCE_60M = 344,\n        //P571_A01_TRAFFIC_SIGN = 345,\n        //P571_B01_TRAFFIC_SIGN = 346,\n        //P571_BOX01_TRAFFIC_SIGN = 347,\n        //P571_BOX02_TRAFFIC_SIGN = 348,\n        //P571_C01_TRAFFIC_SIGN = 349,\n        //P571_D01_TRAFFIC_SIGN = 350,\n        //P571_E01_TRAFFIC_SIGN = 351,\n        //P571_F01_TRAFFIC_SIGN = 352,\n        //P571_G01_TRAFFIC_SIGN = 353,\n        //P571_H01_TRAFFIC_SIGN = 354,\n        //P571_I01_TRAFFIC_SIGN = 355,\n        //P571_J01_TRAFFIC_SIGN = 356,\n        //P571_K01_TRAFFIC_SIGN = 357,\n        //P571_L01_TRAFFIC_SIGN = 358,\n        //SMALL_SHIP_WEAPON_CANNON = 359,\n        //SMALL_SHIP_WEAPON_AUTOCANNON = 360,\n        //SMALL_SHIP_WEAPON_SHOTGUN = 361,\n        //SMALL_SHIP_WEAPON_MACHINE_GUN = 362,\n        //SMALL_SHIP_WEAPON_SNIPER = 363,\n        //SMALL_SHIP_WEAPON_AUTOMATIC_RIFLE_WITH_SILENCER = 364,\n        //SMALL_SHIP_WEAPON_UNIVERSAL_LAUNCHER_BACK = 365,\n        //SMALL_SHIP_WEAPON_UNIVERSAL_LAUNCHER_FRONT = 366,\n        //SMALL_SHIP_WEAPON_HARVESTING_DEVICE = 367,\n        //SMALL_SHIP_WEAPON_DRILLING_DEVICE_CRUSHER = 368,\n        //SMALL_SHIP_WEAPON_DRILLING_DEVICE_THERMAL = 369,\n        //SMALL_SHIP_WEAPON_DRILLING_DEVICE_SAW = 370,\n        //SMALL_SHIP_WEAPON_DRILLING_DEVICE_NUCLEAR = 371,\n        //SMALL_SHIP_WEAPON_DRILLING_DEVICE_LASER = 372,\n        //SMALL_SHIP_WEAPON_DRILLING_DEVICE_PRESSURE = 373,\n        //SMALL_SHIP_WEAPON_MISSILE_LAUNCHER = 374,\n        //P385_A01_TEMPLE_900M = 375,\n        //P384_A01_HOSPITAL = 376,\n        //P383_A01_CHURCH = 377,\n        //P334_A01_FOOD_GROW = 378,\n        //P345_A01_BIO_EXP = 379,\n        //P345_A01_BIO_MACH_EXP = 380,\n        //P345_A01_RECYCLE = 381,\n        //P541_ESCAPE_POD = 382,\n        //P541_ESCAPE_POD_BASE = 383,\n        //P541_VENTILATOR_BODY = 384,\n        //P541_VENTILATOR_PROPELLER = 385,\n        //P349_A_TOWER = 386,\n        //P349_B_TOWER = 387,\n        //P349_C_TOWER = 388,\n        //P361_A02_HANGAR_PANEL = 389,\n\n        // new real blueprints\n        BasicConstructionKit = 390,\n        AdvancedConstructionKit = 391,\n        SuperiorConstructionKit = 392,\n        UtilitiesKit = 393,\n        FortificationKit = 394,\n        HonorableKit = 395,\n        WeaponKit = 369,\n    }\n    \n    public class MyMwcObjectBuilder_Blueprint : MyMwcObjectBuilder_SubObjectBase\n    {                \n        public MyMwcObjectBuilder_Blueprint_TypesEnum BlueprintType { get; set; }\n\n        internal MyMwcObjectBuilder_Blueprint()\n            : base()\n        {\n        }\n\n        public MyMwcObjectBuilder_Blueprint(MyMwcObjectBuilder_Blueprint_TypesEnum blueprintType)\n        {\n            BlueprintType = blueprintType;\n        }\n\n        public override MyMwcObjectBuilderTypeEnum GetObjectBuilderType()\n        {\n            return MyMwcObjectBuilderTypeEnum.Blueprint;\n        }\n\n        public override int? GetObjectBuilderId()\n        {\n            return (int)BlueprintType;\n        }\n\n        internal override void SetObjectBuilderIdInternal(int? objectBuilderId)\n        {\n            BlueprintType = (MyMwcObjectBuilder_Blueprint_TypesEnum)Convert.ToUInt16(objectBuilderId);\n        }\n\n        //  Write this object into message-out\n        internal override void Write(BinaryWriter binaryWriter)\n        {\n            base.Write(binaryWriter);\n\n            //  Blueprint type\n            MyMwcLog.IfNetVerbose_AddToLog(\"BlueprintType: \" + BlueprintType);\n            MyMwcMessageOut.WriteObjectBuildeBlueprintTypesEnum(BlueprintType, binaryWriter);\n        }\n\n        //  Read this object from message-in\n        internal override bool Read(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n        {\n            if (base.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n\n            //  Blueprint type\n            MyMwcObjectBuilder_Blueprint_TypesEnum? blueprintType = MyMwcMessageIn.ReadObjectBuilderBlueprintTypesEnumEx(binaryReader, senderEndPoint);\n            if (blueprintType == null) return NetworkError();\n            BlueprintType = blueprintType.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"BlueprintType: \" + BlueprintType);\n\n            return true;\n        }\n\n        public override string ToString()\n        {\n            return base.GetType().Name + \"(\" + BlueprintType.ToString() + \")\";\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/ObjectBuilders/SubObjects/MyMwcObjectBuilder_Event.cs",
    "content": "﻿using System;\nusing System.IO;\nusing System.Net;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing SysUtils.Utils;\n\nnamespace MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects\n{\n    public class MyMwcObjectBuilder_Event : MyMwcObjectBuilder_SubObjectBase\n    {\n        public byte Status { get; set; }\n        public byte EventType { get; set; }\n        public DateTime Time { get; set; }\n        public int EventTypeID { get; set; }\n\n        internal MyMwcObjectBuilder_Event()\n            : base()\n        {\n        }\n\n        public override MyMwcObjectBuilderTypeEnum GetObjectBuilderType()\n        {\n            return MyMwcObjectBuilderTypeEnum.Event;\n        }\n\n        internal override void Write(BinaryWriter binaryWriter)\n        {\n            base.Write(binaryWriter);\n\n            //  Status\n            MyMwcLog.IfNetVerbose_AddToLog(\"Status: \" + Status);\n            MyMwcMessageOut.WriteByte(Status, binaryWriter);\n\n            //  EventType\n            MyMwcLog.IfNetVerbose_AddToLog(\"EventType: \" + EventType);\n            MyMwcMessageOut.WriteByte(EventType, binaryWriter);\n\n            //  Time\n            MyMwcLog.IfNetVerbose_AddToLog(\"Time: \" + Time);\n            MyMwcMessageOut.WriteDateTime(Time, binaryWriter);\n\n            //  EventTypeID\n            MyMwcLog.IfNetVerbose_AddToLog(\"EventTypeID: \" + EventTypeID);\n            MyMwcMessageOut.WriteInt32(EventTypeID, binaryWriter);\n        }\n\n        internal override bool Read(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n        {\n            if (!base.Read(binaryReader, senderEndPoint, gameVersion))\n                return NetworkError();\n\n            //  Status\n            byte? status = MyMwcMessageIn.ReadByteEx(binaryReader, senderEndPoint);\n            if (status == null) return NetworkError();\n            Status = status.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"Status: \" + Status);\n\n            //  EventType\n            byte? eventType = MyMwcMessageIn.ReadByteEx(binaryReader, senderEndPoint);\n            if (eventType == null) return NetworkError();\n            EventType = eventType.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"EventType: \" + EventType);\n\n            // Time\n            DateTime? time = MyMwcMessageIn.ReadDateTimeEx(binaryReader, senderEndPoint);\n            if (time == null) return NetworkError();\n            Time = time.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"Time: \" + Time);\n\n            // EventTypeID\n            int? eventTypeID = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);\n            if (eventTypeID == null) return NetworkError();\n            EventTypeID = eventTypeID.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"EventTypeID: \" + EventTypeID);\n\n            return true;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/ObjectBuilders/SubObjects/MyMwcObjectBuilder_FalseId.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing System.IO;\nusing System.Net;\n\nnamespace MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects\n{\n    public class MyMwcObjectBuilder_FalseId : MyMwcObjectBuilder_SubObjectBase\n    {        \n        public int FactionIndex { get; set; }\n\n        public MyMwcObjectBuilder_FactionEnum Faction \n        {\n            get { return MyMwcFactionsByIndex.GetFaction(FactionIndex); }\n            set { FactionIndex = MyMwcFactionsByIndex.GetFactionIndex(value); }\n        }\n\n        internal MyMwcObjectBuilder_FalseId()\n            : base()\n        {                 \n        }\n\n        public MyMwcObjectBuilder_FalseId(int factionIndex)\n        {\n            FactionIndex = factionIndex;\n        }\n\n        public MyMwcObjectBuilder_FalseId(MyMwcObjectBuilder_FactionEnum faction)\n            : this(MyMwcFactionsByIndex.GetFactionIndex(faction))\n        {            \n        }\n\n        public override MyMwcObjectBuilderTypeEnum GetObjectBuilderType()\n        {\n            return MyMwcObjectBuilderTypeEnum.FalseId;\n        }        \n\n        internal override void SetObjectBuilderIdInternal(int? objectBuilderId)\n        {\n            FactionIndex = objectBuilderId.Value;\n        }\n\n        public override int? GetObjectBuilderId()\n        {\n            return FactionIndex;\n        }\n\n        //  Write this object into message-out\n        internal override void Write(BinaryWriter binaryWriter)\n        {\n            base.Write(binaryWriter);\n\n            MyMwcMessageOut.WriteInt32(FactionIndex, binaryWriter);\n        }\n\n        //  Read this object from message-in\n        internal override bool Read(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n        {\n            if (base.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n\n            FactionIndex = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint).Value;\n\n            return true;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/ObjectBuilders/SubObjects/MyMwcObjectBuilder_Inventory.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Net;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing SysUtils.Utils;\nusing KeenSoftwareHouse.Library.Trace;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\n\nnamespace MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects\n{\n    public enum MyMwcInventoryTemplateTypeEnum : byte\n    {\n        MerchantMixed = 1,\n        MerchantArmy = 2,\n        MerchantMedicine = 3,\n        MerchantBlueprint = 4,\n        MerchantTools = 5,\n        MPMerchantFrontLine = 6,\n        MPMerchantSupport = 7,\n\n        // --- merchants by tiers ---\n        MerchantMixed_Tier_1 = 8,\n        MerchantMixed_Tier_2 = 9,\n        MerchantMixed_Tier_3 = 10,\n        MerchantMixed_Tier_4 = 11,\n        MerchantMixed_Tier_5 = 12,\n        MerchantMixed_Tier_6 = 13,\n        MerchantMixed_Tier_7 = 14,\n        MerchantMixed_Tier_8 = 15,\n        MerchantMixed_Tier_9 = 16,\n        MerchantMixed_Tier_Special = 17,\n\n        MerchantArmy_Tier_1 = 18,\n        MerchantArmy_Tier_2 = 19,\n        MerchantArmy_Tier_3 = 20,\n        MerchantArmy_Tier_4 = 21,\n        MerchantArmy_Tier_5 = 22,\n        MerchantArmy_Tier_6 = 23,\n        MerchantArmy_Tier_7 = 24,\n        MerchantArmy_Tier_8 = 25,\n        MerchantArmy_Tier_9 = 26,\n        MerchantArmy_Tier_Special = 27,\n\n        MerchantMedicine_Tier_1 = 28,\n        MerchantMedicine_Tier_2 = 29,\n        MerchantMedicine_Tier_3 = 30,\n        MerchantMedicine_Tier_4 = 31,\n        MerchantMedicine_Tier_5 = 32,\n        MerchantMedicine_Tier_6 = 33,\n        MerchantMedicine_Tier_7 = 34,\n        MerchantMedicine_Tier_8 = 35,\n        MerchantMedicine_Tier_9 = 36,\n        MerchantMedicine_Tier_Special = 37,\n\n        MerchantTools_Tier_1 = 38,\n        MerchantTools_Tier_2 = 39,\n        MerchantTools_Tier_3 = 40,\n        MerchantTools_Tier_4 = 41,\n        MerchantTools_Tier_5 = 42,\n        MerchantTools_Tier_6 = 43,\n        MerchantTools_Tier_7 = 44,\n        MerchantTools_Tier_8 = 45,\n        MerchantTools_Tier_9 = 46,\n        MerchantTools_Tier_Special = 47,\n\n    }\n\n    public class MyMwcObjectBuilder_Inventory : MyMwcObjectBuilder_SubObjectBase\n    {\n        public List<MyMwcObjectBuilder_InventoryItem> InventoryItems { get; set; }\n        public int MaxItems { get; set; }\n        public MyMwcInventoryTemplateTypeEnum? TemplateType { get; set; }\n        public float? PriceCoeficient { get; set; }\n        public bool UnlimitedCapacity { get; set; }\n\n        internal MyMwcObjectBuilder_Inventory()\n            : base()\n        {\n            InventoryItems = new List<MyMwcObjectBuilder_InventoryItem>();\n        }\n\n        public MyMwcObjectBuilder_Inventory(List<MyMwcObjectBuilder_InventoryItem> inventoryItems, int maxItems)\n            : this(inventoryItems, maxItems, null, null)\n        {\n        }\n\n        public MyMwcObjectBuilder_Inventory(List<MyMwcObjectBuilder_InventoryItem> inventoryItems, int maxItems, MyMwcInventoryTemplateTypeEnum? templateType, float? priceCoeficient)\n        {\n            InventoryItems = inventoryItems;\n            MaxItems = maxItems;\n            TemplateType = templateType;\n            PriceCoeficient = priceCoeficient;\n        }\n\n        public override void RemapEntityIds(IMyEntityIdRemapContext remapContext)\n        {\n            base.RemapEntityIds(remapContext);\n            foreach (var item in InventoryItems)\n            {\n                item.RemapEntityIds(remapContext);\n            }\n        }\n\n        public override MyMwcObjectBuilderTypeEnum GetObjectBuilderType()\n        {\n            return MyMwcObjectBuilderTypeEnum.Inventory;\n        }\n\n        public void InsertBonusShipRazerClaw()\n        {\n            foreach (var item in InventoryItems)\n            {\n                var shipBuilder = item.ItemObjectBuilder as MyMwcObjectBuilder_SmallShip;\n                if (shipBuilder != null && shipBuilder.ShipType == MyMwcObjectBuilder_SmallShip_TypesEnum.RAZORCLAW)\n                {\n                    return;\n                }\n            }\n\n            var razorBuilder = MyMwcObjectBuilder_SmallShip_Player.CreateDefaultShip(MyMwcObjectBuilder_SmallShip_TypesEnum.RAZORCLAW, MyMwcObjectBuilder_FactionEnum.Rainiers, 100);\n            razorBuilder.Inventory.MaxItems = 60;\n            InventoryItems.Add(new MyMwcObjectBuilder_InventoryItem(razorBuilder, 1));\n        }\n\n        [System.Diagnostics.Conditional(\"DEBUG\")]\n        public void WriteTrace()\n        {\n            MyTrace.Indent(TraceWindow.Saving, \"Inventory SmallShips\");\n            foreach (var item in this.InventoryItems)\n            {\n                var smallShip = item.ItemObjectBuilder as MyMwcObjectBuilder_SmallShip;\n                if (smallShip != null)\n                {\n                    MyTrace.Send(TraceWindow.Saving, smallShip.DisplayName);\n                }\n            }\n            MyTrace.UnIndent(TraceWindow.Saving);\n        }\n\n        //  Write this object into message-out\n        internal override void Write(BinaryWriter binaryWriter)\n        {\n            base.Write(binaryWriter);\n\n            //  Inventory items\n            int countInventoryItems = InventoryItems == null ? 0 : InventoryItems.Count;\n            MyMwcLog.IfNetVerbose_AddToLog(\"countInventoryItems: \" + countInventoryItems);\n            MyMwcMessageOut.WriteInt32(countInventoryItems, binaryWriter);\n            for (int i = 0; i < countInventoryItems; i++)\n            {\n                InventoryItems[i].Write(binaryWriter);\n            }\n\n            // Max items\n            MyMwcLog.IfNetVerbose_AddToLog(\"MaxItems: \" + MaxItems);\n            MyMwcMessageOut.WriteInt32(MaxItems, binaryWriter);\n\n            // Price coeficient\n            bool hasPriceCoeficient = PriceCoeficient != null;\n            MyMwcMessageOut.WriteBool(hasPriceCoeficient, binaryWriter);\n            if (hasPriceCoeficient)\n            {\n                MyMwcLog.IfNetVerbose_AddToLog(\"PriceCoeficient: \" + PriceCoeficient.Value);\n                MyMwcMessageOut.WriteFloat(PriceCoeficient.Value, binaryWriter);\n            }\n\n            // Inventory template type\n            bool hasInventoryTemplateType = TemplateType != null;\n            MyMwcMessageOut.WriteBool(hasInventoryTemplateType, binaryWriter);\n            if (hasInventoryTemplateType)\n            {\n                MyMwcLog.IfNetVerbose_AddToLog(\"TemplateType: \" + TemplateType.Value);\n                MyMwcMessageOut.WriteObjectBuilderInventoryTemplateTypesEnum(TemplateType.Value, binaryWriter);\n            }\n\n            // Unlimited capacity\n            MyMwcLog.IfNetVerbose_AddToLog(\"UnlimitedCapacity: \" + UnlimitedCapacity);\n            MyMwcMessageOut.WriteBool(UnlimitedCapacity, binaryWriter);\n        }\n\n        //  Read this object from message-in\n        internal override bool Read(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n        {\n            if (base.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n\n            //  Inventory items\n            int? countInventoryItems = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);\n            if (countInventoryItems == null) return NetworkError();\n            MyMwcLog.IfNetVerbose_AddToLog(\"countInventoryItems: \" + countInventoryItems);\n            InventoryItems = new List<MyMwcObjectBuilder_InventoryItem>(countInventoryItems.Value);\n            for (int i = 0; i < countInventoryItems; i++)\n            {\n                MyMwcObjectBuilder_InventoryItem inventoryItem = MyMwcObjectBuilder_Base.ReadAndCreateNewObject(binaryReader, senderEndPoint) as MyMwcObjectBuilder_InventoryItem;\n                if (inventoryItem == null) return NetworkError();\n                if (inventoryItem.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n\n                if (!MyMwcObjectBuilder_InventoryItem.IsDisabled(inventoryItem))\n                {\n                    InventoryItems.Add(inventoryItem);\n                }\n            }\n\n            // Max items\n            int? maxItems = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);\n            if (maxItems == null) return NetworkError();\n            MaxItems = maxItems.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"MaxItems: \" + MaxItems);\n\n            // Price coeficient\n            bool? hasPriceCoeficient = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n            if (!hasPriceCoeficient.HasValue) return NetworkError();\n            if (hasPriceCoeficient.Value)\n            {\n                float? priceCoeficient = MyMwcMessageIn.ReadFloat(binaryReader);\n                if (priceCoeficient == null) return NetworkError();\n                PriceCoeficient = priceCoeficient.Value;\n                MyMwcLog.IfNetVerbose_AddToLog(\"PriceCoeficient: \" + PriceCoeficient.Value);\n            }\n            else\n            {\n                MyMwcLog.IfNetVerbose_AddToLog(\"PriceCoeficient is: null\");\n                PriceCoeficient = null;\n            }\n\n            // Inventory template type\n            bool? hasInventoryTemplateType = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n            if (!hasInventoryTemplateType.HasValue) return NetworkError();\n            if (hasInventoryTemplateType.Value)\n            {\n                MyMwcInventoryTemplateTypeEnum? inventoryTemplateType = MyMwcMessageIn.ReadObjectBuilderInventoryTemplateTypesEnumEx(binaryReader, senderEndPoint);\n                if (inventoryTemplateType == null) return NetworkError();\n                TemplateType = inventoryTemplateType.Value;\n                MyMwcLog.IfNetVerbose_AddToLog(\"TemplateType: \" + TemplateType.Value);\n            }\n            else\n            {\n                MyMwcLog.IfNetVerbose_AddToLog(\"TemplateType is: null\");\n                TemplateType = null;\n            }\n\n            // Unlimited capacity\n            bool? unlimitedCapacity = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n            if (unlimitedCapacity == null) return NetworkError();\n            UnlimitedCapacity = unlimitedCapacity.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"UnlimitedCapacity: \" + UnlimitedCapacity);\n\n            return true;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/ObjectBuilders/SubObjects/MyMwcObjectBuilder_InventoryItem.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Net;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\n\nnamespace MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects\n{\n    [Flags]\n    public enum MyInventoryItemTemporaryFlags \n    {\n        NONE = 0,\n        CANT_BE_MOVED = 1 << 0,\n        TEMPORARY_ITEM = 1 << 1,\n        NOT_ENOUGH_MONEY = 1 << 2,\n    }\n\n    public class MyMwcObjectBuilder_InventoryItem : MyMwcObjectBuilder_SubObjectBase\n    {\n        private static Dictionary<int, List<int>> DisabledItems = new Dictionary<int, List<int>>();\n\n        static MyMwcObjectBuilder_InventoryItem() \n        {\n            \n        }\n\n        public MyMwcObjectBuilder_Base ItemObjectBuilder { get; set; }\n        public float Amount { get; set; }\n        public MyInventoryItemTemporaryFlags TemporaryFlags { get; set; }\n\n        internal MyMwcObjectBuilder_InventoryItem()\n            : base()\n        {\n        }\n\n        public static void ReloadDisabledItems(bool enable25D)\n        {\n            DisabledItems.Clear();\n\n            DisabledItems.Add((int)MyMwcObjectBuilderTypeEnum.SmallShip_Tool,\n                new List<int>{ \n                    (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.NIGHT_VISION,\n                    (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.AUTO_TARGETING,\n                    (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.XRAY,\n                    (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.LASER_POINTER,\n                    (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.SOLAR_PANEL,\n                    (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.BOOBY_TRAP,\n                    (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.REMOTE_CAMERA,\n                    (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.REMOTE_CAMERA_ON_DRONE,\n                    (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.RADAR_UNUSED,\n                    (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.REAR_CAMERA,\n                    (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.ELECTRICITY_KIT,\n                    (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.EXTRA_ELECTRICITY_CONTAINER,\n                    (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.ALIEN_OBJECT_DETECTOR,\n                    (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.FUEL_CONVERTER,\n                    (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.OXYGEN_CONVERTER,\n                    (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.EXTRA_OXYGEN_CONTAINER_DISABLED,\n                    (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.EXTRA_FUEL_CONTAINER_DISABLED,\n                    (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.SENSOR,\n\n                });\n\n            DisabledItems.Add((int)MyMwcObjectBuilderTypeEnum.Ore,\n                new List<int>{\n                    (int)MyMwcObjectBuilder_Ore_TypesEnum.XENON\n                });\n\n            DisabledItems.Add((int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo,\n                new List<int>{\n                    (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_Armor_Piercing_Incendiary,\n                    (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Machine_Gun_Armor_Piercing_Incendiary,\n                    (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_Armor_Piercing_Incendiary,\n                    (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Gravity_Bomb,\n                });\n\n            DisabledItems.Add((int)MyMwcObjectBuilderTypeEnum.SmallShip_Radar,\n                new List<int>{\n                    (int)MyMwcObjectBuilder_SmallShip_Radar_TypesEnum.Radar_1,\n                    (int)MyMwcObjectBuilder_SmallShip_Radar_TypesEnum.Radar_2,\n                    (int)MyMwcObjectBuilder_SmallShip_Radar_TypesEnum.Radar_3,\n                });\n\n            DisabledItems.Add((int)MyMwcObjectBuilderTypeEnum.SmallShip_Weapon,\n                new List<int>{\n                    (int)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Laser,\n                    (int)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Pressure,\n                    (int)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Saw,\n                    (int)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Thermal,\n                });\n\n            if (!enable25D)\n            {\n                DisabledItems[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Weapon].Add(\n                    (int)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Nuclear\n                    );\n            }\n\n            DisabledItems.Add((int)MyMwcObjectBuilderTypeEnum.Blueprint,\n                new List<int>{\n                    (int)MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit,\n                    (int)MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit,\n                    (int)MyMwcObjectBuilder_Blueprint_TypesEnum.SuperiorConstructionKit,\n                    (int)MyMwcObjectBuilder_Blueprint_TypesEnum.UtilitiesKit,\n                    (int)MyMwcObjectBuilder_Blueprint_TypesEnum.FortificationKit,\n                    (int)MyMwcObjectBuilder_Blueprint_TypesEnum.HonorableKit,\n                    (int)MyMwcObjectBuilder_Blueprint_TypesEnum.WeaponKit,\n                });\n\n            DisabledItems.Add((int)MyMwcObjectBuilderTypeEnum.PrefabFoundationFactory,\n                new List<int>{\n                    0,\n                });\n\n            DisabledItems.Add((int)MyMwcObjectBuilderTypeEnum.FalseId, new List<int>(MyMwcFactionsByIndex.GetFactionsIndexes()));\n        }\n\n        public MyMwcObjectBuilder_InventoryItem(MyMwcObjectBuilder_Base itemObjectBuilder, float amount)\n        {\n            ItemObjectBuilder = itemObjectBuilder;\n            Amount = amount;\n        }\n\n        public override void RemapEntityIds(IMyEntityIdRemapContext remapContext)\n        {\n            base.RemapEntityIds(remapContext);\n            ItemObjectBuilder.RemapEntityIds(remapContext);\n        }\n\n        public override MyMwcObjectBuilderTypeEnum GetObjectBuilderType()\n        {\n            return MyMwcObjectBuilderTypeEnum.InventoryItem;\n        }        \n\n        //  Write this object into message-out\n        internal override void Write(BinaryWriter binaryWriter)\n        {\n            base.Write(binaryWriter);\n\n            //  Amount\n            MyMwcLog.IfNetVerbose_AddToLog(\"Amount: \" + Amount);\n            MyMwcMessageOut.WriteFloat(Amount, binaryWriter);\n\n            // Item's objectbuilder            \n            bool isItemsObjectBuilder = ItemObjectBuilder != null;\n            MyMwcMessageOut.WriteBool(isItemsObjectBuilder, binaryWriter);\n            if (isItemsObjectBuilder) ItemObjectBuilder.Write(binaryWriter);\n        }\n\n        //  Read this object from message-in\n        internal override bool Read(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n        {\n            if (base.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n\n            //  Amount\n            float? amount = MyMwcMessageIn.ReadFloat(binaryReader);\n            if (amount == null) return NetworkError();\n            Amount = amount.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"Amount: \" + Amount);\n\n            //  Item's objectbuilder\n            bool? isItemObjectBuilder = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n            if (isItemObjectBuilder == null) return NetworkError();\n            if (isItemObjectBuilder.Value)\n            {\n                ItemObjectBuilder = MyMwcObjectBuilder_Base.ReadAndCreateNewObject(binaryReader, senderEndPoint) as MyMwcObjectBuilder_Base;\n                if (ItemObjectBuilder == null) return NetworkError();\n                if (ItemObjectBuilder.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n            }\n            else\n            {\n                ItemObjectBuilder = null;\n            }\n\n            return true;\n        }\n\n        public bool CanBeMoved\n        {\n            get { return (TemporaryFlags & MyInventoryItemTemporaryFlags.CANT_BE_MOVED) == 0; }\n        }\n\n        public bool IsTemporaryItem\n        {\n            get { return (TemporaryFlags & MyInventoryItemTemporaryFlags.TEMPORARY_ITEM) != 0; }\n        }\n\n        public static bool IsDisabled(MyMwcObjectBuilder_InventoryItem inventoryItem) \n        {\n            int? builderId = inventoryItem.ItemObjectBuilder.GetObjectBuilderId();\n            MyMwcObjectBuilderTypeEnum builderType = inventoryItem.ItemObjectBuilder.GetObjectBuilderType();\n            return IsDisabled(builderType, builderId);\n        }\n\n        public static bool IsDisabled(MyMwcObjectBuilderTypeEnum builderType, int? builderId) \n        {\n            if (DisabledItems.ContainsKey((int)builderType))\n            {\n                List<int> disabledIds = DisabledItems[(int)builderType];\n                if (disabledIds == null)\n                {\n                    return builderId == null;\n                }\n                else\n                {\n                    if (builderId != null)\n                    {\n                        return disabledIds.Contains(builderId.Value);\n                    }\n                    else\n                    {\n                        return false;\n                    }\n                }\n            }\n            return false;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/ObjectBuilders/SubObjects/MyMwcObjectBuilder_ObjectToBuild.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Net;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing SysUtils.Utils;\n\nnamespace MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects\n{\n    public class MyMwcObjectBuilder_ObjectToBuild : MyMwcObjectBuilder_SubObjectBase\n    {\n        public const float DEFAULT_AMOUNT = 1f;\n\n        public MyMwcObjectBuilder_Base ObjectBuilder { get; set; }\n        public float Amount { get; set; }\n\n        internal MyMwcObjectBuilder_ObjectToBuild()\n            : base()\n        {\n\n        }\n\n        public MyMwcObjectBuilder_ObjectToBuild(MyMwcObjectBuilder_Base objectBuilder, float amount)\n        {\n            ObjectBuilder = objectBuilder;\n            Amount = amount;\n        }\n\n        public override void RemapEntityIds(IMyEntityIdRemapContext remapContext)\n        {\n            base.RemapEntityIds(remapContext);\n            ObjectBuilder.RemapEntityIds(remapContext);\n        }\n\n        public override MyMwcObjectBuilderTypeEnum GetObjectBuilderType()\n        {\n            return MyMwcObjectBuilderTypeEnum.ObjectToBuild;\n        }\n\n        //  Write this object into message-out\n        internal override void Write(BinaryWriter binaryWriter)\n        {\n            base.Write(binaryWriter);            \n\n            //  Amount\n            if (float.IsNaN(Amount) || float.IsInfinity(Amount))\n            {\n                System.Diagnostics.Debug.Fail(\"Amount is: \" + Amount);\n                Amount = DEFAULT_AMOUNT;\n            }\n            MyMwcLog.IfNetVerbose_AddToLog(\"Amount: \" + Amount);\n            MyMwcMessageOut.WriteFloat(Amount, binaryWriter);\n\n            //  Object builder\n            bool isObjectBuilder = ObjectBuilder != null;\n            MyMwcMessageOut.WriteBool(isObjectBuilder, binaryWriter);\n            if (isObjectBuilder) ObjectBuilder.Write(binaryWriter);            \n        }\n\n        //  Read this object from message-in\n        internal override bool Read(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n        {\n            if (base.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n            \n            //  Amount\n            float? amount = MyMwcMessageIn.ReadFloat(binaryReader);\n            if (amount == null) return NetworkError();\n            Amount = amount.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"Amount: \" + Amount);\n            if (float.IsNaN(Amount) || float.IsInfinity(Amount))\n            {\n                System.Diagnostics.Debug.Fail(\"Amount is: \" + Amount);\n                Amount = DEFAULT_AMOUNT;\n            }\n\n            //  Object builder\n            bool? isObjectBuilder = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n            if (isObjectBuilder == null) return NetworkError();\n            if (isObjectBuilder.Value)\n            {\n                ObjectBuilder = MyMwcObjectBuilder_Base.ReadAndCreateNewObject(binaryReader, senderEndPoint);\n                if (ObjectBuilder == null) return NetworkError();\n                if (ObjectBuilder.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n            }\n            else\n            {\n                ObjectBuilder = null;\n            }            \n\n            return true;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/ObjectBuilders/SubObjects/MyMwcObjectBuilder_Prefab.cs",
    "content": "﻿using MinerWars.CommonLIB.AppCode.Utils;\nusing System.IO;\nusing System.Net;\nusing System.Data.SqlClient;\nusing System;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWarsMath;\n\nnamespace MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects\n{\n    //  IMPORTANT: Never change numeric values and never delete any enum item. These numbers are referenced e.g. from database.\n    public enum MyMwcObjectBuilder_Prefab_TypesEnum : ushort\n    {\n        P430_A01_PASSAGE_10M=0,\n        P430_A02_PASSAGE_40M=1,\n        P424_A01_PIPE_BASE=2,\n        P423_A01_PIPE_JUNCTION=3,\n        P422_A01_PIPE_TURN_90=4,\n        P421_A01_PIPE_STRAIGHT_80M=5,\n        P421_A02_PIPE_STRAIGHT_40M=6,\n        P421_A03_PIPE_STRAIGHT_10M=7,\n        P413_G01_JUNCTION_6AXES=8,\n        P414_G02_ENTRANCE_60M=9,\n        P410_G01_TURN_90_RIGHT_0M=10,\n        P411_G01_STRAIGHT_1=11,\n        P411_G02_STRAIGHT_2=12,\n        P411_G03_STRAIGHT_3=13,\n        P411_G04_STRAIGHT_4=14,\n        //P414_F02_ENTRANCE_60M=15,\n        P412_F21_TURN_S_UP=16,\n        P412_F22_TURN_S_LEFT=17,\n        P412_F23_TURN_S_RIGHT=18,\n        P412_F24_TURN_S_DOWN=19,\n        P412_F01_TURN_90_UP_230M=20,\n        P412_F02_TURN_90_LEFT_230M=21,\n        P412_F03_TURN_90_RIGHT_230M=22,\n        P412_F04_TURN_90_DOWN_230M=23,\n        P411_F01_STRAIGHT_1=24,\n        P411_F02_STRAIGHT_2=25,\n        P411_F03_STRAIGHT_3=26,\n        P414_E01_ENTRANCE_60M=27,\n        P411_E01_STRAIGHT_1=28,\n        P411_E02_STRAIGHT_2=29,\n        P411_E03_STRAIGHT_3=30,\n        P411_E04_STRAIGHT_4=31,\n        P411_E05_STRAIGHT_5=32,\n        P415_D01_DOORCASE=33,\n        P415_D02_DOOR1=34,\n        P415_D03_DOOR2_A=35,\n        P415_D03_DOOR2_B=36,\n        P413_D01_JUNCTION_T_HORIZONTAL=37,\n        P413_D03_JUNCTION_X_HORIZONTAL=38,\n        P414_D01_ENTRANCE_60M=39,\n        P411_D01_STRAIGHT_10M=40,\n        P411_D02_STRAIGHT_40M_WITH_HOLE=41,\n        P411_D03_STRAIGHT_60M=42,\n        P411_D04_STRAIGHT_120M=43,\n        P411_D05_STRAIGHT_180M=44,\n        //P415_C01_DOOR1=45,\n        //P415_C01_DOOR2=46,\n        //P415_C01_DOOR3=47,\n        //P415_C01_DOOR4=48,\n        P413_C01_JUNCTION_T_HORIZONTAL=49,\n        P413_C01_JUNCTION_X_HORIZONTAL=50,\n        P414_C01_ENTRANCE_60M=51,\n        P411_C01_STRAIGHT_10M=52,\n        P411_C02_STRAIGHT_40M_WITH_HOLE=53,\n        P411_C03_STRAIGHT_60M=54,\n        P411_C04_STRAIGHT_120M=55,\n        P411_C05_STRAIGHT_180M=56,\n        P415_B01_DOORCASE=57,\n        //P415_B02_DOOR=58,\n        P413_B01_JUNCTION_T_HORIZONTAL=59,\n        P413_B02_JUNCTION_T_VERTICAL=60,\n        P414_B02_ENTRANCE_60M=61,\n        P412_B21_TURN_S_UP=62,\n        P412_B22_TURN_S_LEFT=63,\n        P412_B23_TURN_S_RIGHT=64,\n        P412_B24_TURN_S_DOWN=65,\n        P412_B11_TURN_90_UP_160M=66,\n        P412_B12_TURN_90_LEFT_160M=67,\n        P412_B13_TURN_90_RIGHT_160M=68,\n        P412_B14_TURN_90_DOWN_160M=69,\n        P412_B01_TURN_90_UP_80M=70,\n        P412_B02_TURN_90_LEFT_80M=71,\n        P412_B03_TURN_90_RIGHT_80M=72,\n        P412_B04_TURN_90_DOWN_80M=73,\n        P411_B01_STRAIGHT_10M=74,\n        p411_B02_STRAIGHT_30M_YELLOW=75,\n        p411_B03_STRAIGHT_320M=76,\n        p411_B04_STRAIGHT_80M_WITH_SIDE_GRATES=77,\n        p411_B05_STRAIGHT_80M_WITH_SIDE_OPEN=78,\n        //P415_A01_DOORCASE=79,\n        //P415_A02_DOOR_LEFT=80,\n        //P415_A02_DOOR_RIGHT=81,\n        P413_A01_JUNCTION_T_HORIZONTAL=82,\n        P413_A02_JUNCTION_T_VERTICAL=83,\n        //P414_A01_ENTRANCE_30M=84,\n        P414_A02_ENTRANCE_60M=85,\n        P412_A21_TURN_S_UP=86,\n        P412_A22_TURN_S_LEFT=87,\n        P412_A23_TURN_S_RIGHT=88,\n        P412_A24_TURN_S_DOWN=89,\n        P412_A11_TURN_90_UP_160M=90,\n        P412_A12_TURN_90_LEFT_160M=91,\n        P412_A13_TURN_90_RIGHT_160M=92,\n        P412_A14_TURN_90_DOWN_160M=93,\n        P412_A01_TURN_90_UP_80M=94,\n        P412_A02_TURN_90_LEFT_80M=95,\n        P412_A03_TURN_90_RIGHT_80M=96,\n        P412_A04_TURN_90_DOWN_80M=97,\n        P411_A01_STRAIGHT_10M=98,\n        P411_A02_STRAIGHT_60M_WITH_HOLE=99,\n        P411_A03_STRAIGHT_120M=100,\n        P411_A04_STRAIGHT_80M=101,\n        P411_A05_STRAIGHT_80M_WITH_EXTENSION=102,\n        P382_E01_BRIDGE5=103,\n        P382_D01_BRIDGE4=104,\n        P382_C01_BRIDGE3=105,\n        P382_B01_BRIDGE2=106,\n        P382_A01_BRIDGE1=107,\n        P381_C01_BUILDING3=108,\n        P381_B01_BUILDING2=109,\n        P381_A01_BUILDING1=110,\n        //P361_A01_SMALL_HANGAR=111,\n        P362_A01_SHORT_DISTANCE_ANTENNA=112,\n        P361_A01_LONG_DISTANCE_ANTENNA=113,\n        P351_A01_WEAPON_MOUNT=114,\n        P345_A01_REFINERY=115,\n        P344_A01_CONTAINER_ARM_FILLED=116,\n        P344_A02_CONTAINER_ARM_EMPTY=117,\n        P343_A01_ORE_STORAGE=118,\n        P342_A01_LOADING_BAY=119,\n        P341_B01_OPEN_DOCK_VARIATION1=120,\n        P341_B02_OPEN_DOCK_VARIATION2=121,\n        //P341_A01_OPEN_DOCK_VARIATION1=122,\n        P341_A02_OPEN_DOCK_VARIATION2=123,\n        P333_A01_HYDROPONIC_BUILDING=124,\n        P332_A01_OXYGEN_STORAGE=125,\n        P331_A01_OXYGEN_GENERATOR=126,\n        P324B01_FUEL_STORAGE_B=127,\n        P324A01_FUEL_STORAGE_A=128,\n        P323A01_FUEL_GENERATOR=129,\n        P322A01_BATTERY=130,\n        //P321C01_INERTIA_GENERATOR=131,\n        P321B01_NUCLEAR_REACTOR=132,\n        //P321A01_SOLAR_PANEL=133,\n        P312A01_SHORT_TERM_THRUSTER_LATITUDE=134,\n        P312A02_SHORT_TERM_THRUSTER_LATERAL=135,\n        P311A01_LONG_TERM_THRUSTER=136,\n        P231A01_ARMOR=137,\n        P231A02_ARMOR=138,\n        P231A03_ARMOR=139,\n        P231A04_ARMOR=140,\n        P231A05_ARMOR=141,\n        P231A06_ARMOR=142,\n        P231A07_ARMOR=143,\n        P231A08_ARMOR=144,\n        P231A09_ARMOR=145,\n        P231A10_ARMOR=146,\n        P231A11_ARMOR=147,\n        P231A12_ARMOR=148,\n        P231A13_ARMOR=149,\n        P231A14_ARMOR=150,\n        P231A15_ARMOR=151,\n        P231A16_ARMOR=152,\n        P231A17_ARMOR=153,\n        P231A18_ARMOR=154,\n        P221E01_CHAMBER_V1=155,\n        P221D01_CHAMBER_V1=156,\n        P221C01_CHAMBER_V1=157,\n        P221B01_CHAMBER_V1=158,\n        P221A01_CHAMBER_V1=159,\n        P211G01_PANEL_120MX60M=160,\n        P211G02_PANEL_60MX60M=161,\n        P211G03_PANEL_60MX30M=162,\n        P211F01_PANEL_120MX60M=163,\n        P211F02_PANEL_60MX60M=164,\n        P211F03_PANEL_60MX30M=165,\n        P211E01_PANEL_120MX60M=166,\n        P211E02_PANEL_60MX60M=167,\n        P211E03_PANEL_60MX30M=168,\n        P211D01_PANEL_120MX60M=169,\n        P211D02_PANEL_60MX60M=170,\n        P211D03_PANEL_60MX30M=171,\n        P211C01_PANEL_120MX60M=172,\n        P211C02_PANEL_60MX60M=173,\n        P211C03_PANEL_60MX30M=174,\n        P211B01_PANEL_120MX60M=175,\n        P211B02_PANEL_60MX60M=176,\n        P211B03_PANEL_60MX30M=177,\n        P211A01_PANEL_120MX60M=178,\n        P211A02_PANEL_60MX60M=179,\n        P211A03_PANEL_60MX30M=180,\n        P142B01_CAGE_EMPTY=181,\n        P142B02_CAGE_HALFCUT=182,\n        P142B03_CAGE_WITH_CORNERS=183,\n        P142B11_CAGE_PILLAR=184,\n        P142B12_CAGE_EDGE=185,\n        P142A01_CAGE_EMPTY=186,\n        P142A02_CAGE_HALFCUT=187,\n        P142A03_CAGE_WITH_CORNERS=188,\n        P142A11_CAGE_PILLAR=189,\n        P142A12_CAGE_EDGE=190,\n        P141B01_THICK_FRAME_STRAIGHT_10M=191,\n        P141B02_THICK_FRAME_STRAIGHT_60M=192,\n        P141B11_THICK_FRAME_EDGE=193,\n        P141B12_THICK_FRAME_CORNER=194,\n        P141B31_THICK_FRAME_JOINT=195,\n        P141A01_THICK_FRAME_STRAIGHT_10M=196,\n        P141A02_THICK_FRAME_STRAIGHT_60M=197,\n        P141A11_THICK_FRAME_EDGE=198,\n        P141A12_THICK_FRAME_CORNER=199,\n        P141A31_THICK_FRAME_JOINT=200,\n        P120J01_J_STRAIGHT_30M=201,\n        P130J02_J_STRAIGHT_10M=202,\n        P120I01_I_STRAIGHT_30M=203,\n        P130I02_I_STRAIGHT_10M=204,\n        P120H01_H_STRAIGHT_30M=205,\n        P130H02_H_STRAIGHT_10M=206,\n        //P120G01_G_STRAIGHT_30M=207,\n        //P130G02_G_STRAIGHT_10M=208,\n        //P120F01_F_STRAIGHT_30M=209,\n        //P130F02_F_STRAIGHT_10M=210,\n        //P120E01_E_STRAIGHT_30M=211,\n        //P130E02_E_STRAIGHT_10M=212,\n        //P120D01_D_STRAIGHT_30M=213,\n        //P130D02_D_STRAIGHT_10M=214,\n        //P120C01_C_STRAIGHT_30M=215,\n        //P130C02_C_STRAIGHT_10M=216,\n        //P120B01_B_STRAIGHT_30M=217,\n        //P130B02_B_STRAIGHT_10M=218,\n        //P120A01_A_STRAIGHT_30M=219,\n        //P130A02_A_STRAIGHT_10M=220,\n        P120D01_D_STRAIGHT_10M=221,\n        P120D02_D_STRAIGHT_40M=222,\n        P120C01_C_STRAIGHT_10M=223,\n        P120C02_C_STRAIGHT_40M=224,\n        P120B01_B_STRAIGHT_10M=225,\n        P120B02_B_STRAIGHT_40M=226,\n        P120A01_STRONG_LATTICE_STRAIGHT_10M=227,\n        P120A02_STRONG_LATTICE_STRAIGHT_60M=228,\n        P120A03_STRONG_LATTICE_STRAIGHT_120M=229,\n        P120A21_STRONG_LATTICE_JUNCTION_T_STRONG=230,\n        P120A22_STRONG_LATTICE_JUNCTION_T_WEAK=231,\n        P120A23_STRONG_LATTICE_JUNCTION_T_ROTATED=232,\n        P120A51_STRONG_TO_WEAK_LATTICE_2TO1=233,\n        P120A52_STRONG_TO_WEAK_LATTICE_1TO2=234,\n        P120A61_WEAK_LATTICE_JUNCTION_T_ROTATED=235,\n        P110B01_LATTICE_BEAM_STRAIGHT_10M=236,\n        P110B02_LATTICE_BEAM_STRAIGHT_30M=237,\n        P110B03_LATTICE_BEAM_STRAIGHT_60M=238,\n        P110B04_LATTICE_BEAM_STRAIGHT_60M_WITH_PANELS=239,\n        P110B21_LATTICE_BEAM_JUNCTION_T_STRONG=240,\n        P110B22_LATTICE_BEAM_JUNCTION_T_WEAK=241,\n        P110B31_LATTICE_BEAM_JOINT_HORIZONTAL=242,\n        P110B32_LATTICE_BEAM_JOINT_VERTICAL=243,\n        P110A01_SOLID_BEAM_STRAIGHT_10M=244,\n        P110A02_SOLID_BEAM_STRAIGHT_20M=245,\n        P110A03_SOLID_BEAM_STRAIGHT_40M_WITH_HOLE=246,\n        P110A04_SOLID_BEAM_STRAIGHT_40M_LATTICE=247,\n        P110A05_SOLID_BEAM_STRAIGHT_80M=248,\n        P110A11_SOLID_BEAM_JUNCTION_X_STRONG=249,\n        P110A12_SOLID_BEAM_JUNCTION_X_WEAK=250,\n        P110A13_SOLID_BEAM_JUNCTION_X_ROTATED=251,\n        P110A21_SOLID_BEAM_JUNCTION_T_STRONG=252,\n        P110A22_SOLID_BEAM_JUNCTION_T_WEAK=253,\n        P110A23_SOLID_BEAM_JUNCTION_T_ROTATED=254,\n        P110A31_SOLID_BEAM_JOINT_HORIZONTAL=255,\n        P110A32_SOLID_BEAM_JOINT_VERTICAL=256,\n        P110A33_SOLID_BEAM_JOINT_LONGITUDINAL=257,\n        P110A41_SOLID_BEAM_SUPERJOINT=258,\n        ////@ Lights\n        //DEFAULT_LIGHT_0=259,//rename it\n        //P521_A01_LIGHT1=260,\n        //P521_A02_LIGHT2=261,\n        //P521_A03_LIGHT3=262,\n        //P521_A04_LIGHT4=263,\n        ////@ Particles\n        //DEFAULT_PARTICLE_PREFAB_0=264,\n        //P551_A01_PARTICLES=265,\n        //P551_B01_PARTICLES=266,\n        //P551_C01_PARTICLES=267,\n        //P551_D01_PARTICLES=268,\n        ////@ Sounds\n        //DEFAULT_SOUND_PREFAB_0=269,\n        //P561_A01_SOUND=270,\n        //P561_B01_SOUND=271,\n        //P561_C01_SOUND=272,\n        //P561_D01_SOUND=273,\n\n        //P351_A01_WEAPON_MOUNT\n        //P352_A01_LARGESHIP_AUTOCANNON=274,\n        //P352_A01_LARGESHIP_MACHINEGUN=275,\n        //P352_A01_LARGESHIP_CIWS=276,\n        //P352_A01_LARGESHIP_MISSILE_BASIC4=277,\n        //P352_A01_LARGESHIP_MISSILE_BASIC6=278,\n        //P352_A01_LARGESHIP_MISSILE_BASIC9=279,\n        //P352_A02_LARGESHIP_MISSILE_GUIDED4=280,\n        //P352_A02_LARGESHIP_MISSILE_GUIDED6=281,\n        //P352_A02_LARGESHIP_MISSILE_GUIDED9=282,\n\n        //@ Details:\n        P511_A01_BILLBOARD=283,\n        P511_A02_BILLBOARD=284,\n        P511_A03_BILLBOARD=285,\n        P511_A04_BILLBOARD=286,\n        P511_A05_BILLBOARD=287,\n        P511_A06_BILLBOARD=288,\n        P511_A07_BILLBOARD=289,\n        P511_A08_BILLBOARD=290,\n        P511_A09_BILLBOARD=291,\n        P511_A10_BILLBOARD=292,\n        P511_A11_BILLBOARD=293,\n        P511_A12_BILLBOARD=294,\n        //P511_A13_BILLBOARD=295,\n        P511_A14_BILLBOARD=296,\n        P511_A15_BILLBOARD=297,\n        P511_A16_BILLBOARD=298,\n\n        //@ Signs:\n        P531_A01_SIGN1=299,\n        P531_A02_SIGN2=300,\n        P531_A03_SIGN3=301,\n        P531_A04_SIGN4=302,\n        P531_A05_SIGN5=303,\n        P531_A06_SIGN6=304,\n        P531_A07_SIGN7=305,\n        P531_A08_SIGN8=306,\n        P531_A09_SIGN9=307,\n        P531_A10_SIGN10=308,\n        P531_A11_SIGN11=309,\n        P531_A12_SIGN12=310,\n\n        //@ Chambers:\n        P221_A02_CHAMBER_V2=311,\n        P221_B02_CHAMBER_V2=312,\n        P221_C02_CHAMBER_V2=313,\n        P221_D02_CHAMBER_V2=314,\n        P221_E02_CHAMBER_V2=315,\n\n        //@ Straight prefab:\n        P130_A01_STRAIGHT_10M=316,\n        P130_A02_STRAIGHT_30M=317,\n        P130_B01_STRAIGHT_10M=318,\n        P130_B02_STRAIGHT_30M=319,\n        P130_C01_STRAIGHT_10M=320,\n        P130_C02_STRAIGHT_30M=321,\n        P130_D01_STRAIGHT_10M=322,\n        P130_D02_STRAIGHT_30M=323,\n        P130_E01_STRAIGHT_10M=324,\n        P130_E02_STRAIGHT_30M=325,\n\n        P321_B01_SOLAR_PANEL=326,\n        P321_C01_SOLAR_PANEL=327,\n\n        P413_D02_JUNCTION_T_VERTICAL=328,\n        P413_D04_JUNCTION_X_VERTICAL=329,\n\n        P412_F11_TURN_90_UP_230M=330,\n        P412_F12_TURN_90_LEFT_230M=331,\n        P412_F13_TURN_90_RIGHT_230M=332,\n        P412_F14_TURN_90_DOWN_230M=333,\n\n        P411_F04_STRAIGHT_4=334,\n        P411_F05_STRAIGHT_5=335,\n        P411_G05_STRAIGHT_5=336,\n        P414_F01_ENTRANCE_60M=337,\n        P414_G01_ENTRANCE_60M=338,\n\n        P571_A01_TRAFFIC_SIGN=339,\n        P571_B01_TRAFFIC_SIGN=340,\n        P571_BOX01_TRAFFIC_SIGN=341,\n        P571_BOX02_TRAFFIC_SIGN=342,\n        P571_C01_TRAFFIC_SIGN=343,\n        P571_D01_TRAFFIC_SIGN=344,\n        P571_E01_TRAFFIC_SIGN=345,\n        P571_F01_TRAFFIC_SIGN=346,\n        P571_G01_TRAFFIC_SIGN=347,\n        P571_H01_TRAFFIC_SIGN=348,\n        P571_I01_TRAFFIC_SIGN=349,\n        P571_J01_TRAFFIC_SIGN=350,\n        P571_K01_TRAFFIC_SIGN=351,\n        P571_L01_TRAFFIC_SIGN=352,\n\n        //User\n        SimpleObject=353,\n\n        //P415_C02_DOOR1_RIGHT=354,\n        //P415_C02_DOOR1_LEFT=355,\n        //P415_C03_DOOR2_A=356,\n        //P415_C03_DOOR2_B=357,\n        //P415_C03_DOOR2_A_LEFT=358,\n        //P415_C03_DOOR2_A_RIGHT=359,\n        //P415_C03_DOOR2_B_LEFT=360,\n        //P415_C03_DOOR2_B_RIGHT=361,\n        //P341_A01_OPEN_DOCK_VARIATION1_DOORLEFT=362,\n        //P341_A01_OPEN_DOCK_VARIATION1_DOORRIGHT=363,\n\n        p411_B06_STRAIGHT_180M_CONCRETE=364,\n        p411_B06_STRAIGHT_200M=365,\n        p411_B07_STRAIGHT_180M_BLUE=366,\n        p411_B09_STRAIGHT_30M_GRAY=367,\n        p411_B11_STRAIGHT_220M=368,\n        p411_B12_STRAIGHT_160M_DARK_METAL=369,\n        p411_B13_STRAIGHT_100M_TUBE_INSIDE=370,\n\n        P385_A01_TEMPLE_900M=371,\n        //P384_A01_HOSPITAL=372,\n        P383_A01_CHURCH=373,\n        P334_A01_FOOD_GROW=374,\n        P345_A01_BIO_EXP=375,\n        P345_A01_BIO_MACH_EXP=376,\n        P345_A01_RECYCLE=377,\n\n        //// Largeships\n        //LARGESHIP_KAI = 378,\n        //LARGESHIP_SAYA = 379,\n        //LARGESHIP_ARDANT = 380,\n\n        P541_ESCAPE_POD = 381,\n        P541_ESCAPE_POD_BASE = 382,\n        P541_VENTILATOR_BODY = 383,\n        P541_VENTILATOR_PROPELLER = 384,\n\n        P349_A_TOWER = 385,\n        P349_B_TOWER = 386,\n        P349_C_TOWER = 387,\n\n        //P361_A02_HANGAR_PANEL = 388,\n\n        //anotgher signs..\n        P531_B_FACTION = 389,\n        P531_B_FACTION_HOLO = 390,\n        ARMOR_HULL = 391,\n\n        //new concrete and metal bariers\n        P212A01_PANEL_LARGE = 392,\n        P212A01_PANEL_MEDIUM = 393,\n        P212A01_PANEL_SMALL = 394,\n        P212B02_PANEL_MEDIUM = 395,\n        P212B02_PANEL_SMALL = 396,\n        P212C03_PANEL_MEDIUM = 397,\n        P212C03_PANEL_SMALL = 398,\n        P212D04_PANEL_MEDIUM = 399,\n        P212D04_PANEL_SMALL = 400,\n        P212E05_PANEL_MEDIUM = 401,\n        P212E05_PANEL_SMALL = 402,\n\n        //new stuff, dock and chamber..\n        P221F01_CHAMBER_V1 = 403,\n        P341_C01_CLOSED_DOCK_V1 = 404,\n\n        //more concrete bariers (another size variations) \n        P212B02_PANEL_LARGE = 405,\n        P212C03_PANEL_LARGE = 406,\n        P212D04_PANEL_LARGE = 407,\n        P212E05_PANEL_LARGE = 408,\n        P212F01_PANEL_LARGE = 409,\n\n        P391_ALIEN_GATE = 410,\n\n        //P381_D01_BIO_EXP = 411,   \n        //P381_D02_CHURCH = 412,\n        P381_D03_HOSPITAL = 413,\n        //P381_D04_RECYCLE = 414,\n        P381_D05_FOOD_GROW = 415,\n        //P381_D06_TEMPLE_900M = 416,\n        //P381_D07_BIO_MACH_EXP = 417,\n        P381_C01_BUILDING4 = 418,\n\n        CABLE_CORNER_25M = 419,\n        CABLE_S_45M = 420,\n        CABLE_STRAIGHT_180 = 421,\n        CABLE_STRAIGHT_45 = 422,\n        CABLE_STRAIGHT_90 = 423,\n        CONNECTION_BOX = 424,\n\n        P221G01_CHAMBER_V1 = 425,\n        P221H01_CHAMBER_V1 = 426,\n        P221J01_CHAMBER_V1 = 427,\n        P221K01_CHAMBER_V1 = 428,\n\n        P211H01_PANEL_535MX130M = 429,\n\n        P531_C_ADMINISTRATIVE_AREA = 430,\n        P531_C_ARMORY = 431,\n        P531_C_ARROW_L = 432,\n        P531_C_ARROW_R = 433,\n        P531_C_ARROW_STR = 434,\n        P531_C_CARGO_BAY = 435,\n        P531_C_COMMAND_CENTER = 436,\n        P531_C_COMMERCIAL_AREA = 437,\n        P531_C_COMMUNICATIONS = 438,\n        P531_C_DEFENSES = 439,\n        P531_C_DOCKS = 440,\n        P531_C_EMERGENCY_EXIT = 441,\n        P531_C_ENGINEERING_AREA = 442,\n        P531_C_EXIT = 443,\n        P531_C_EXPERIMENTAL_LABS = 444,\n        P531_C_FOUNDRY = 445,\n        P531_C_HABITATS = 446,\n        P531_C_HANGARS = 447,\n        P531_C_INDUSTRIAL_AREA = 448,\n        P531_C_LANDING_BAY = 449,\n        P531_C_MAINTENANCE = 450,\n        P531_C_MILITARY_AREA = 451,\n        P531_C_MINES = 452,\n        P531_C_ORE_PROCESSING = 453,\n        P531_C_OUTER_AREA = 454,\n        P531_C_PRISON = 455,\n        P531_C_PUBLIC_AREA = 456,\n        P531_C_REACTOR = 457,\n        P531_C_RESEARCH = 458,\n        P531_C_RESTRICTED_AREA = 459,\n        P531_C_SECURITY = 460,\n        P531_C_SIGN = 461,\n        P531_C_STORAGE = 462,\n        P531_C_TECHNICAL_AREA = 463,\n        P531_C_TRADE_PORT = 464,\n\n        P321_D01_BIG_SOLAR_PANEL = 465,\n        P541_VENTILATOR = 466,\n        P361_B01_LONG_DISTANCE_ANTENNA_BIG = 467,\n        FOURTH_REICH_WRECK = 468,\n        P344_A03_CONTAINER = 469,\n        P231B01_ARMOR = 470,\n        P231B01_ARMOR_CORNER = 471,\n        P231B01_ARMOR_EDGE = 472,\n        P231B01_ARMOR_HOLE = 473,\n\n        P150A03_SHELF_1 = 474,\n        P150A02_SHELF_1X2 = 475,\n        P150A01_SHELF_1X3 = 476,\n        //AsteroidPrefabTest = 477,\n\n        P611_ASTEROID_PART_A = 478,\n        P611_ASTEROID_PART_B = 479,\n        P363_A01_BIG_ANTENNA_300M = 480,\n        P130D02_D_STRAIGHT_300M = 481,\n        P130J01_J_STRAIGHT_300M = 482,\n        P120C02_C_STRAIGHT_400M = 483,\n        P110B03_LATTICE_BEAM_STRAIGHT_420M = 484,\n        P110B04_LATTICE_BEAM_STRAIGHT_420M_WITH_PANELS = 485,\n        \n        P363_A01_BIG_ANTENNA_1500M = 486,\n        P4221_A01_COOLING_DEVICE_WALL_340X400 = 487,\n        P4222_A01_PIPES_CONNECTOR = 488,\n        P4223_A01_OPEN_PIPE = 489,\n        P311B01_LONG_TERM_THRUSTER = 490,\n        P221K01_CHAMBER_V2 = 491,\n\n        P581_A01_BARREL_BIOHAZARD = 492,\n        P581_A01_BARREL_BIOHAZARD_2 = 493,\n        P581_A01_NUKE_BARREL = 494,\n        P581_A01_RED_BARREL = 495,\n        P581_A01_SIMPLE_BARREL = 496,\n        P581_A01_SIMPLE_BARREL_2 = 497,\n        BARREL_PROP_A = 498,\n        BARREL_PROP_B = 499,\n        BARREL_PROP_C = 500,\n        CANNONBALL_CAPSULE_1 = 501,\n        MISSILE_PACK01 = 502,\n        MISSILE_PLAZMA01 = 503,\n        MISSILE_STACK_BIOCHEM01 = 504,\n        P581_A01_O2_BARREL = 505,\n        NUCLEAR_WARHEAD_CLOSED = 506,\n        NUCLEAR_WARHEAD_OPEN = 507,        \n        P581_A01_NUKE_BARREL_1 = 508,\n        P581_A01_SIMPLE_BARREL_3 = 509,\n        P221L01_CHAMBER_V1 = 510,\n\n        P221M01_CHAMBER_BOTTOM_V1 = 511,\n        P221M01_CHAMBER_CENTER_V1 = 512,\n        P221M01_CHAMBER_TOP_V1 = 513,\n        P321E01_SOLAR_PANEL = 514,\n        P110A06_SOLID_BEAM_STRAIGHT_420M = 515,\n\n        GATTLING_AMMO_BELT = 516,\n        MISSILE_PACK02 = 517,\n        //BARREL_PROP_D = 518,\n        //BARREL_PROP_E = 519,\n\n        P311B01_CUT_THRUSTER = 520,\n        P312B01_CUT_THRUSTER_LATERAL = 521,\n        P312B02_CUT_THRUSTER_LATITUDE = 522,\n        ALIEN_DETECTOR_UNIT = 523,\n        P381_C01_BUILDING5 = 524,\n        P381_C01_BUILDING6 = 525,\n        P381_C01_BUILDING7 = 526,\n        P221N01_CHAMBER_V1 = 527,\n        P531_D_MEDIC_CROSS = 528,\n        ALIEN_ARTEFACT = 529,\n        BOMB = 530,\n        RAIL_GUN = 531,\n        P345_A01_RECYCLE_SPHERE = 532,\n        PRISON = 533,\n        P511_A17_BILLBOARD_PORTRAIT_1 = 534,\n        P511_A18_BILLBOARD = 535,\n        P511_A19_BILLBOARD = 536,\n        //SOUNDS2 (do not use those numbers):\n        //MOTHERSHIP_SOUND = 535,\n        //MADELINE_MOTHERSHIP_SOUND = 536,\n\n        DEAD_PILOT = 537,\n        P511_A17_BILLBOARD_PORTRAIT_2 = 538,\n    }\n\n\n    public class MyMwcObjectBuilder_Prefab : MyMwcObjectBuilder_PrefabBase\n    {\n        [Obsolete(\"Changed to public for migration, set to internal when done\")]\n        public MyMwcObjectBuilder_Prefab()\n            : base()\n        {\n        }\n\n        public MyMwcObjectBuilder_Prefab(MyMwcObjectBuilder_Prefab_TypesEnum prefabType, MyMwcObjectBuilder_Prefab_AppearanceEnum appearance,\n            MyMwcVector3Short position, Vector3 anglesInContainer, float? prefabMaxHealth, float prefabHealthRatio, string displayName, float electricCapacity, bool? causesAlarm, int aiPriority)\n            : base((int)prefabType, appearance, position, anglesInContainer, prefabMaxHealth, prefabHealthRatio, displayName, electricCapacity, causesAlarm, aiPriority)\n        {\n        }\n\n        public override MyMwcObjectBuilderTypeEnum GetObjectBuilderType()\n        {\n            return MyMwcObjectBuilderTypeEnum.Prefab;\n        }\n\n        public MyMwcObjectBuilder_Prefab_TypesEnum PrefabType\n        {\n            get\n            {\n                return (MyMwcObjectBuilder_Prefab_TypesEnum) GetObjectBuilderId().Value;\n            }\n            set\n            {\n                SetObjectBuilderId((int)value);\n            }\n        }\n\n        //  Write this object into message-out\n        internal override void Write(BinaryWriter binaryWriter)\n        {\n            base.Write(binaryWriter);\n\n        }\n\n        //  Read this object from message-in\n        internal override bool Read(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n        {\n            if (base.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n\n\n            return true;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/ObjectBuilders/SubObjects/MyMwcObjectBuilder_PrefabBase.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Net;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.Prefabs;\n\nnamespace MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects\n{\n    /// <summary>\n    /// The available materials (styles) for prefabs based on the major factions.\n    /// </summary>\n    public enum MyMwcObjectBuilder_Prefab_AppearanceEnum : ushort\n    {\n        None = 0,\n        FourthReich = 1,\n        Chinese = 2,\n        Euroamerican = 3,\n        Omnicorp = 4,\n        Russian = 5,\n        Church = 6,\n        Saudi = 7,\n    }\n\n    public abstract class MyMwcObjectBuilder_PrefabBase : MyMwcObjectBuilder_SubObjectBase\n    {        \n        public MyMwcObjectBuilder_Prefab_AppearanceEnum FactionAppearance;\n        public MyMwcVector3Short PositionInContainer;\n        //Important - values in this vector contain 3 angles in radians\n        public Vector3 AnglesInContainer;\n        public float? PrefabMaxHealth;\n        public float PrefabHealthRatio;\n        public string DisplayName;\n        public float ElectricCapacity;\n        protected int PrefabObjectBuilderId;\n        public MyMwcObjectBuilder_EntityUseProperties UseProperties;\n        public bool? CausesAlarm;\n        public bool? RequiresEnergy;\n        public int AIPriority;\n\n        protected MyMwcObjectBuilder_PrefabBase() : base()\n        {\n            PersistentFlags |= MyPersistentEntityFlags.Enabled;\n        }\n\n        protected MyMwcObjectBuilder_PrefabBase(int prefabObjectBuilderId, MyMwcObjectBuilder_Prefab_AppearanceEnum appearance,\n            MyMwcVector3Short position, Vector3 anglesInContainer, float? prefabMaxHealth, float prefabHealthRatio, string displayName,\n            float electricCapacity, bool? causesAlarm, int aiPriority, bool requiresEnergy = false)\n            : this()\n        {\n            SetObjectBuilderId(prefabObjectBuilderId);\n            //PrefabObjectBuilderId = prefabObjectBuilderId;\n            FactionAppearance = appearance;\n            PositionInContainer = position;\n            AnglesInContainer = anglesInContainer;\n            PrefabMaxHealth = prefabMaxHealth;\n            PrefabHealthRatio = prefabHealthRatio;\n            DisplayName = displayName;\n            ElectricCapacity = electricCapacity;\n            CausesAlarm = causesAlarm;\n            RequiresEnergy = requiresEnergy;            \n            AIPriority = aiPriority;\n        }\n\n        public override MyMwcObjectBuilderTypeEnum GetObjectBuilderType()\n        {\n            return MyMwcObjectBuilderTypeEnum.Prefab;\n        }\n\n        public override int? GetObjectBuilderId()\n        {\n            return PrefabObjectBuilderId;\n        }\n\n        public override void SetDefaultProperties()\n        {\n            base.SetDefaultProperties();\n            this.PrefabHealthRatio = 1f; // MyGameplayConstants.MAX_HEALTH_MAX;\n        }\n\n        internal override void SetObjectBuilderIdInternal(int? objectBuilderId)\n        {\n            PrefabObjectBuilderId = objectBuilderId.Value;\n        }\n\n        //  Write this object into message-out\n        internal override void Write(BinaryWriter binaryWriter)\n        {\n            base.Write(binaryWriter);\n\n            // PrefabType\n            MyMwcLog.IfNetVerbose_AddToLog(\"PrefabObjectBuilderId: \" + PrefabObjectBuilderId);\n            MyMwcMessageOut.WriteInt32(PrefabObjectBuilderId, binaryWriter);\n\n            // PositionInContainer\n            MyMwcLog.IfNetVerbose_AddToLog(\"PositionInContainer: \" + PositionInContainer);\n            MyMwcMessageOut.WriteVector3Short(PositionInContainer, binaryWriter);\n\n            // AnglesInContainer\n            MyMwcLog.IfNetVerbose_AddToLog(\"AnglesInContainer: \" + AnglesInContainer.ToString());\n            MyMwcMessageOut.WriteVector3(AnglesInContainer, binaryWriter);\n\n            bool hasMaxHealth = PrefabMaxHealth != null;\n            MyMwcMessageOut.WriteBool(hasMaxHealth, binaryWriter);\n\n            if (hasMaxHealth)\n            {\n                if (float.IsNaN(PrefabMaxHealth.Value) || float.IsInfinity(PrefabMaxHealth.Value))\n                {\n                    System.Diagnostics.Debug.Fail(\"PrefabMaxHealth is: \" + PrefabMaxHealth.Value);\n                    PrefabMaxHealth = null; // MyGameplayConstants.MAX_HEALTH_MAX;\n            }\n \n                MyMwcLog.IfNetVerbose_AddToLog(\"PrefabMaxHealth: \" + PrefabMaxHealth.Value.ToString());\n                binaryWriter.Write(PrefabMaxHealth.Value);\n            }\n\n            //health ratio cannot be 0, prefab is dead \n            System.Diagnostics.Debug.Assert(PrefabHealthRatio != 0, \"Prefab health ratio is 0\");\n            System.Diagnostics.Debug.Assert(PrefabHealthRatio <= 1f, \"Prefab health ratio is greater than 1f\");\n            System.Diagnostics.Debug.Assert(PrefabHealthRatio >= 0f, \"Prefab health ratio is lesser than 0f\");\n\n            // PrefabHealthRatio\n            MyMwcLog.IfNetVerbose_AddToLog(\"PrefabHealthRatio: \" + PrefabHealthRatio.ToString());\n            binaryWriter.Write(PrefabHealthRatio);\n\n            if (DisplayName != null)\n            {\n                MyMwcMessageOut.WriteBool(true, binaryWriter);\n                MyMwcLog.IfNetVerbose_AddToLog(\"DisplayName: \" + this.DisplayName);\n                MyMwcMessageOut.WriteString(DisplayName, binaryWriter);\n            }\n            else\n            {\n                MyMwcLog.IfNetVerbose_AddToLog(\"DisplayName: \" + \"null\");\n                MyMwcMessageOut.WriteBool(false, binaryWriter);\n            }\n\n            // faction appearance (texture set)\n            MyMwcLog.IfNetVerbose_AddToLog(\"FactionAppearance: \" + FactionAppearance);\n            MyMwcMessageOut.WriteInt16((short)FactionAppearance, binaryWriter);\n\n            //  Use Properties\n            bool hasUseProperties = UseProperties != null;\n            MyMwcMessageOut.WriteBool(hasUseProperties, binaryWriter);\n            if (hasUseProperties) UseProperties.Write(binaryWriter);\n\n            //  Causes Alarm\n            bool hasCausesAlarm = CausesAlarm.HasValue;\n            MyMwcMessageOut.WriteBool(hasCausesAlarm, binaryWriter);\n            if (hasCausesAlarm) MyMwcMessageOut.WriteBool(CausesAlarm.Value, binaryWriter);\n\n            // Requires Energy\n            bool hasRequiresEnergy = RequiresEnergy.HasValue;\n            MyMwcMessageOut.WriteBool(hasRequiresEnergy, binaryWriter);\n            if (hasRequiresEnergy) MyMwcMessageOut.WriteBool(RequiresEnergy.Value, binaryWriter);\n\n            //MyMwcLog.IfNetVerbose_AddToLog(\"ElectricCapacity: \" + ElectricCapacity.ToString());\n            //binaryWriter.Write(ElectricCapacity);\n\n            // AI Priority\n            MyMwcLog.IfNetVerbose_AddToLog(\"AIPriority: \" + AIPriority);\n            MyMwcMessageOut.WriteInt32(AIPriority, binaryWriter);\n        }\n\n        //  Read this object from message-in\n        internal override bool Read(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n        {\n            if (base.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n\n            if (gameVersion > 01085000)\n            {\n                return Read_Current(binaryReader, senderEndPoint, gameVersion);\n            }\n            else\n            {\n                return Read_01085000(binaryReader, senderEndPoint, gameVersion);   \n            }\n        }\n\n        private bool Read_Current(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n        {\n            // PrefabType\n            int? prefabObjectBuilderId = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);\n            if (prefabObjectBuilderId == null) return NetworkError();\n            PrefabObjectBuilderId = prefabObjectBuilderId.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"PrefabObjectBuilderId: \" + PrefabObjectBuilderId);\n\n            // PositionInContainer\n            MyMwcVector3Short? positionInContainer = MyMwcMessageIn.ReadVector3ShortEx(binaryReader, senderEndPoint);\n            if (positionInContainer == null) return NetworkError();\n            PositionInContainer = positionInContainer.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"PositionInContainer: \" + PositionInContainer);\n\n            // AnglesInContainer\n            Vector3? anglesInContainer = MyMwcMessageIn.ReadVector3FloatEx(binaryReader, senderEndPoint);\n            if (anglesInContainer == null) return NetworkError();\n            AnglesInContainer = anglesInContainer.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"AnglesInContainer: \" + AnglesInContainer.ToString());\n\n            bool? hasMaxHealth = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n            if (!hasMaxHealth.HasValue) return NetworkError();\n            if (hasMaxHealth.Value)\n            {\n                // PrefabMaxHealth\n                float? prefabMaxHealth = MyMwcMessageIn.ReadFloat(binaryReader);\n                if (prefabMaxHealth == null) return NetworkError();\n                PrefabMaxHealth = prefabMaxHealth.Value;\n                MyMwcLog.IfNetVerbose_AddToLog(\"PrefabMaxHealth: \" + PrefabMaxHealth.Value.ToString());\n                if (float.IsNaN(PrefabMaxHealth.Value) || float.IsInfinity(PrefabMaxHealth.Value))\n                {\n                    System.Diagnostics.Debug.Fail(\"PrefabMaxHealth is: \" + PrefabMaxHealth.Value);\n                    PrefabMaxHealth = null; // MyGameplayConstants.MAX_HEALTH_MAX;\n                }\n            }\n            else\n            {\n                MyMwcLog.IfNetVerbose_AddToLog(\"PrefabMaxHealth is: null\");\n                PrefabMaxHealth = null;\n            }\n\n            // PrefabHealthRatio\n            float? prefabHealthRatio = MyMwcMessageIn.ReadFloat(binaryReader);\n            if (prefabHealthRatio == null) return NetworkError();\n            PrefabHealthRatio = prefabHealthRatio.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"PrefabHealth: \" + PrefabHealthRatio.ToString());\n\n            bool? hasDisplayName = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n            if (!hasDisplayName.HasValue) return NetworkError();\n            if (hasDisplayName.Value)\n            {\n                string displayName = MyMwcMessageIn.ReadStringEx(binaryReader, senderEndPoint);\n                if (displayName == null) return NetworkError();\n                MyMwcLog.IfNetVerbose_AddToLog(\"DisplayName: \" + displayName);\n                DisplayName = displayName;\n            }\n            else\n            {\n                MyMwcLog.IfNetVerbose_AddToLog(\"DisplayName: \" + \"null\");\n                DisplayName = null;\n            }\n\n            // faction appearance (texture set)\n            short? factionAppearance = MyMwcMessageIn.ReadInt16Ex(binaryReader, senderEndPoint);\n            if (!factionAppearance.HasValue) return NetworkError();\n            FactionAppearance = (MyMwcObjectBuilder_Prefab_AppearanceEnum)factionAppearance.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"FactionAppearance: \" + FactionAppearance);\n\n            //  Use Properties\n            bool? hasUseProperties = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n            if (hasUseProperties == null) return NetworkError();\n            if (hasUseProperties.Value)\n            {\n                UseProperties =\n                    MyMwcObjectBuilder_Base.ReadAndCreateNewObject(binaryReader, senderEndPoint) as\n                    MyMwcObjectBuilder_EntityUseProperties;\n                if (UseProperties == null) return NetworkError();\n                if (UseProperties.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n            }\n            else\n            {\n                UseProperties = null;\n            }\n\n            // Causes Alarm\n            bool? hasCausesAlarm = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n            if (!hasCausesAlarm.HasValue) return NetworkError();\n            if (hasCausesAlarm.Value)\n            {\n                bool? causesAlarm = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n                if (!causesAlarm.HasValue) return NetworkError();\n                MyMwcLog.IfNetVerbose_AddToLog(\"CausesAlarm: \" + CausesAlarm);\n                CausesAlarm = causesAlarm.Value;\n            }\n            else\n            {\n                MyMwcLog.IfNetVerbose_AddToLog(\"CausesAlarm: \" + \"null\");\n                CausesAlarm = null;\n            }\n\n            // Requires Energy\n            bool? hasRequiresEnergy = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n            if (!hasRequiresEnergy.HasValue) return NetworkError();\n            if (hasRequiresEnergy.Value)\n            {\n                bool? requiresEnergy = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n                if (!requiresEnergy.HasValue) return NetworkError();\n                MyMwcLog.IfNetVerbose_AddToLog(\"RequiresEnergy: \" + RequiresEnergy);\n                RequiresEnergy = requiresEnergy.Value;\n            }\n            else\n            {\n                MyMwcLog.IfNetVerbose_AddToLog(\"RequiresEnergy: \" + \"null\");\n                RequiresEnergy = null;\n            }\n\n            // AI Priority\n            int? aiPriority = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);\n            if (aiPriority == null) return NetworkError();\n            AIPriority = aiPriority.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"AIPriority: \" + AIPriority);\n\n            return true;\n        }\n\n        private bool Read_01085000(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n        {\n// PrefabType\n            int? prefabObjectBuilderId = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);\n            if (prefabObjectBuilderId == null) return NetworkError();\n            PrefabObjectBuilderId = prefabObjectBuilderId.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"PrefabObjectBuilderId: \" + PrefabObjectBuilderId);\n\n            // PositionInContainer\n            MyMwcVector3Short? positionInContainer = MyMwcMessageIn.ReadVector3ShortEx(binaryReader, senderEndPoint);\n            if (positionInContainer == null) return NetworkError();\n            PositionInContainer = positionInContainer.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"PositionInContainer: \" + PositionInContainer);\n\n            // AnglesInContainer\n            Vector3? anglesInContainer = MyMwcMessageIn.ReadVector3FloatEx(binaryReader, senderEndPoint);\n            if (anglesInContainer == null) return NetworkError();\n            AnglesInContainer = anglesInContainer.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"AnglesInContainer: \" + AnglesInContainer.ToString());\n\n            bool? hasMaxHealth = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n            if (!hasMaxHealth.HasValue) return NetworkError();\n            if (hasMaxHealth.Value)\n            {\n                // PrefabMaxHealth\n                float? prefabMaxHealth = MyMwcMessageIn.ReadFloat(binaryReader);\n                if (prefabMaxHealth == null) return NetworkError();\n                PrefabMaxHealth = prefabMaxHealth.Value;\n                MyMwcLog.IfNetVerbose_AddToLog(\"PrefabMaxHealth: \" + PrefabMaxHealth.Value.ToString());\n                if (float.IsNaN(PrefabMaxHealth.Value) || float.IsInfinity(PrefabMaxHealth.Value))\n                {\n                    System.Diagnostics.Debug.Fail(\"PrefabMaxHealth is: \" + PrefabMaxHealth.Value);\n                    PrefabMaxHealth = null; // MyGameplayConstants.MAX_HEALTH_MAX;\n                }\n            }\n            else\n            {\n                MyMwcLog.IfNetVerbose_AddToLog(\"PrefabMaxHealth is: null\");\n                PrefabMaxHealth = null;\n            }\n\n            // PrefabHealthRatio\n            float? prefabHealthRatio = MyMwcMessageIn.ReadFloat(binaryReader);\n            if (prefabHealthRatio == null) return NetworkError();\n            PrefabHealthRatio = prefabHealthRatio.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"PrefabHealth: \" + PrefabHealthRatio.ToString());\n\n            bool? hasDisplayName = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n            if (!hasDisplayName.HasValue) return NetworkError();\n            if (hasDisplayName.Value)\n            {\n                string displayName = MyMwcMessageIn.ReadStringEx(binaryReader, senderEndPoint);\n                if (displayName == null) return NetworkError();\n                MyMwcLog.IfNetVerbose_AddToLog(\"DisplayName: \" + displayName);\n                DisplayName = displayName;\n            }\n            else\n            {\n                MyMwcLog.IfNetVerbose_AddToLog(\"DisplayName: \" + \"null\");\n                DisplayName = null;\n            }\n\n            // faction appearance (texture set)\n            short? factionAppearance = MyMwcMessageIn.ReadInt16Ex(binaryReader, senderEndPoint);\n            if (!factionAppearance.HasValue) return NetworkError();\n            FactionAppearance = (MyMwcObjectBuilder_Prefab_AppearanceEnum) factionAppearance.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"FactionAppearance: \" + FactionAppearance);\n\n            //  Use Properties\n            bool? hasUseProperties = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n            if (hasUseProperties == null) return NetworkError();\n            if (hasUseProperties.Value)\n            {\n                UseProperties =\n                    MyMwcObjectBuilder_Base.ReadAndCreateNewObject(binaryReader, senderEndPoint) as\n                    MyMwcObjectBuilder_EntityUseProperties;\n                if (UseProperties == null) return NetworkError();\n                if (UseProperties.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n            }\n            else\n            {\n                UseProperties = null;\n            }\n\n            // Causes Alarm\n            bool? hasCausesAlarm = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n            if (!hasCausesAlarm.HasValue) return NetworkError();\n            if (hasCausesAlarm.Value)\n            {\n                bool? causesAlarm = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n                if (!causesAlarm.HasValue) return NetworkError();\n                MyMwcLog.IfNetVerbose_AddToLog(\"CausesAlarm: \" + CausesAlarm);\n                CausesAlarm = causesAlarm.Value;\n            }\n            else\n            {\n                MyMwcLog.IfNetVerbose_AddToLog(\"CausesAlarm: \" + \"null\");\n                CausesAlarm = null;\n            }\n\n            // Requires Energy\n            bool? hasRequiresEnergy = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n            if (!hasRequiresEnergy.HasValue) return NetworkError();\n            if (hasRequiresEnergy.Value)\n            {\n                bool? requiresEnergy = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n                if (!requiresEnergy.HasValue) return NetworkError();\n                MyMwcLog.IfNetVerbose_AddToLog(\"RequiresEnergy: \" + RequiresEnergy);\n                RequiresEnergy = requiresEnergy.Value;\n            }\n            else\n            {\n                MyMwcLog.IfNetVerbose_AddToLog(\"RequiresEnergy: \" + \"null\");\n                RequiresEnergy = null;\n            }\n\n            // Display HUD\n            bool? hasDisplayHud = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n            if (!hasDisplayHud.HasValue) return NetworkError();\n            if (hasDisplayHud.Value)\n            {\n                bool? displayHud = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n                if (!displayHud.HasValue) return NetworkError();\n                if (displayHud.Value)\n                    PersistentFlags |= MyPersistentEntityFlags.DisplayOnHud;\n                else\n                    PersistentFlags &= ~MyPersistentEntityFlags.DisplayOnHud;\n                MyMwcLog.IfNetVerbose_AddToLog(\"DisplayHud: \" + displayHud.Value);\n            }\n            else\n            {\n                MyMwcLog.IfNetVerbose_AddToLog(\"DisplayHud: \" + \"null\");\n            }\n\n            // AI Priority\n            int? aiPriority = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);\n            if (aiPriority == null) return NetworkError();\n            AIPriority = aiPriority.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"AIPriority: \" + AIPriority);\n\n            return true;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/ObjectBuilders/SubObjects/MyMwcObjectBuilder_SmallShip_Tool.cs",
    "content": "﻿using System;\nusing System.IO;\nusing System.Net;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.Utils;\n\nnamespace MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects\n{\n    //  IMPORTANT: Never change numeric values and never delete any enum item. These numbers are referenced e.g. from database.\n    public enum MyMwcObjectBuilder_SmallShip_Tool_TypesEnum : ushort\n    {\n        REAR_CAMERA = 1,\n        LASER_POINTER = 2,\n        AUTO_TARGETING = 3,\n        NIGHT_VISION = 4,\n        NANO_REPAIR_TOOL = 5,\n        MEDIKIT = 6,\n        XRAY = 7,\n        ANTIRADIATION_MEDICINE = 8,\n        RADAR_JAMMER = 9,\n        PERFORMANCE_ENHANCING_MEDICINE = 10,\n        HEALTH_ENHANCING_MEDICINE = 11,\n        EXTRA_FUEL_CONTAINER_DISABLED = 12,\n        EXTRA_ELECTRICITY_CONTAINER = 13,\n        EXTRA_OXYGEN_CONTAINER_DISABLED = 14,\n        OXYGEN_CONVERTER = 15,\n        FUEL_CONVERTER = 16,\n        SOLAR_PANEL = 17,\n        BOOBY_TRAP = 18,\n        SENSOR = 19,\n        REMOTE_CAMERA = 20,\n        REMOTE_CAMERA_ON_DRONE = 21,\n        ALIEN_OBJECT_DETECTOR = 22,\n        RADAR_UNUSED = 23,\n        HEALTH_KIT = 24,\n        REPAIR_KIT = 25,\n        OXYGEN_KIT = 26,\n        FUEL_KIT = 27,\n        ELECTRICITY_KIT = 28,\n    }\n\n    public class MyMwcObjectBuilder_SmallShip_Tool : MyMwcObjectBuilder_SubObjectBase\n    {\n        public MyMwcObjectBuilder_SmallShip_Tool_TypesEnum ToolType;\n\n        internal MyMwcObjectBuilder_SmallShip_Tool()\n            : base()\n        {\n        }\n\n        public MyMwcObjectBuilder_SmallShip_Tool(MyMwcObjectBuilder_SmallShip_Tool_TypesEnum toolType)\n        {\n            ToolType = toolType;\n        }\n\n        public override MyMwcObjectBuilderTypeEnum GetObjectBuilderType()\n        {\n            return MyMwcObjectBuilderTypeEnum.SmallShip_Tool;\n        }\n\n        public override int? GetObjectBuilderId()\n        {\n            return (int)ToolType;\n        }\n\n        internal override void SetObjectBuilderIdInternal(int? objectBuilderId)\n        {\n            ToolType = (MyMwcObjectBuilder_SmallShip_Tool_TypesEnum)Convert.ToUInt16(objectBuilderId);\n        }\n\n\n        //  Write this object into message-out\n        internal override void Write(BinaryWriter binaryWriter)\n        {\n            base.Write(binaryWriter);\n\n            //  Tool Type\n            MyMwcLog.IfNetVerbose_AddToLog(\"ToolType: \" + ToolType);\n            MyMwcMessageOut.WriteObjectBuilderSmallShipToolTypesEnum(ToolType, binaryWriter);\n        }\n\n        //  Read this object from message-in\n        internal override bool Read(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n        {\n            if (base.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n\n            //  Tool Type\n            MyMwcObjectBuilder_SmallShip_Tool_TypesEnum? toolType = MyMwcMessageIn.ReadObjectBuilderSmallShipToolTypesEnumEx(binaryReader, senderEndPoint);\n            if (toolType == null) return NetworkError();\n            ToolType = toolType.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"ToolType: \" + ToolType);\n\n            return true;\n        }\n\n        public override string ToString()\n        {\n            return base.GetType().Name + \"(\" + ToolType.ToString() + \")\";\n        }\n    }\n}"
  },
  {
    "path": "Sources/CommonLIB/AppCode/ObjectBuilders/SubObjects/MyMwcObjectBuilder_SmallShip_Weapon.cs",
    "content": "﻿using System;\nusing System.IO;\nusing System.Net;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.Utils;\n\nnamespace MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects\n{\n    //  IMPORTANT: Never change numeric values and never delete any enum item. These numbers are referenced e.g. from database.\n    public enum MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum : ushort\n    {\n        //Guided_Missile_Launcher = 1,\n        Cannon = 2,\n        Autocanon = 3,\n        //Flamethrower = 4, // future release\n        Shotgun = 5,\n        Machine_Gun = 6,\n        Sniper = 7,\n        Automatic_Rifle_With_Silencer = 8,\n        Universal_Launcher_Back = 9,\n        Universal_Launcher_Front = 10,\n\n        Harvesting_Device = 11,\n        Drilling_Device_Crusher = 12,\n        Drilling_Device_Thermal = 13,\n        Drilling_Device_Saw = 14,\n        Drilling_Device_Nuclear = 15,\n        Drilling_Device_Laser = 16,\n        Drilling_Device_Pressure = 18,\n\n        Missile_Launcher = 17,\n    }\n\n    public class MyMwcObjectBuilder_SmallShip_Weapon : MyMwcObjectBuilder_SubObjectBase\n    {\n        public MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum WeaponType;\n\n        internal MyMwcObjectBuilder_SmallShip_Weapon()\n            : base()\n        {\n        }\n\n        public MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum weaponType)\n        {\n            WeaponType = weaponType;\n        }\n\n        public override MyMwcObjectBuilderTypeEnum GetObjectBuilderType()\n        {\n            return MyMwcObjectBuilderTypeEnum.SmallShip_Weapon;\n        }\n\n        public override int? GetObjectBuilderId()\n        {\n            return (int) WeaponType;\n        }\n\n        internal override void SetObjectBuilderIdInternal(int? objectBuilderId)\n        {\n            WeaponType = (MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum) Convert.ToUInt16(objectBuilderId);\n        }\n\n        //  Write this object into message-out\n        internal override void Write(BinaryWriter binaryWriter)\n        {\n            base.Write(binaryWriter);\n\n            //  WeaponType\n            MyMwcLog.IfNetVerbose_AddToLog(\"WeaponType: \" + WeaponType);\n            MyMwcMessageOut.WriteObjectBuilderSmallShipWeaponTypesEnum(WeaponType, binaryWriter);\n        }\n\n        //  Read this object from message-in\n        internal override bool Read(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n        {\n            if (base.Read(binaryReader, senderEndPoint, gameVersion) == false)\n                return NetworkError();\n\n            //  WeaponType\n            MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum? weaponType =\n                MyMwcMessageIn.ReadObjectBuilderSmallShipWeaponTypesEnumEx(binaryReader, senderEndPoint);\n            if (weaponType == null)\n                return NetworkError();\n            WeaponType = weaponType.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"WeaponType: \" + WeaponType);\n\n            return true;\n        }\n\n        public override string ToString()\n        {\n            return base.GetType().Name + \"(\" + WeaponType.ToString() + \")\";\n        }\n\n        public bool IsHarvester\n        {\n            get { return WeaponType == MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Harvesting_Device; }\n        }\n\n        public bool IsDrill\n        {\n            get\n            {\n                switch (WeaponType)\n                {\n                    case MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Crusher:\n                    case MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Thermal:\n                    case MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Saw:\n                    case MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Nuclear:\n                    case MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Laser:\n                    case MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Pressure:\n                        return true;\n                }\n\n                return false;\n            }\n        }\n\n        public bool IsUniversalLauncher\n        {\n            get\n            {\n                return WeaponType == MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Universal_Launcher_Front ||\n                       WeaponType == MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Universal_Launcher_Back;\n            }\n        }\n\n        public bool IsNormalWeapon\n        {\n            get { return !IsDrill && !IsHarvester && !IsUniversalLauncher; }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/ObjectBuilders/SubObjects/MyMwcObjectBuilder_SubObjectBase.cs",
    "content": "﻿//  Object builder is object that defines how to create instance of particular MyPhysObject**\n//  MyMwcObjectBuilderBaseSubObject is base for all objects that don't have position/orientation, but are placed on another 3D object (for example weapons)\n\nusing System.Data.SqlClient;\nusing System;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing SysUtils.Utils;\n\nnamespace MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects\n{\n    public abstract class MyMwcObjectBuilder_SubObjectBase : MyMwcObjectBuilder_Base\n    {\n        protected MyMwcObjectBuilder_SubObjectBase() : base()\n        {\n        }\n\n        public const string AUTO_MOUNT_DESCRIPTOR = \"AUTO\";\n        public const string LEFT_SIDE_MOUNT_DESCRIPTOR = \"AUTO_LEFT\";\n        public const string RIGHT_SIDE_MOUNT_DESCRIPTOR = \"AUTO_RIGHT\";\n\n        /// <summary>\n        /// Provides the key of the slot in which the item is mounted. If null, the item is not mounted.\n        /// </summary>\n        public string MountedDescriptor;\n\n        internal override void Write(System.IO.BinaryWriter binaryWriter)\n        {\n            base.Write(binaryWriter);\n\n            // Mounted descriptor\n            MyMwcLog.IfNetVerbose_AddToLog(\"MountedDescriptor: \" + MountedDescriptor);\n            MyMwcMessageOut.WriteNullableString(MountedDescriptor, binaryWriter);\n        }\n\n        internal override bool Read(System.IO.BinaryReader binaryReader, System.Net.EndPoint senderEndPoint, int gameVersion)\n        {\n            if (!base.Read(binaryReader, senderEndPoint, gameVersion))\n                return false;\n\n            // MountedDescriptor\n            if (MyMwcMessageIn.ReadNullableStringEx(binaryReader, senderEndPoint, out MountedDescriptor))\n            {\n                MyMwcLog.IfNetVerbose_AddToLog(\"MountedDescriptor: \" + MountedDescriptor);\n            }\n            else\n            {\n                MyMwcLog.IfNetVerbose_AddToLog(\"MountedDescriptor: null\");\n            }\n\n            return true;\n        }\n\n        #region Mount methods\n\n        public bool AutoMountLeft\n        {\n            get { return String.Compare(MountedDescriptor, LEFT_SIDE_MOUNT_DESCRIPTOR, StringComparison.OrdinalIgnoreCase) == 0; }\n        }\n\n        public void SetAutoMountLeft()\n        {\n            MountedDescriptor = LEFT_SIDE_MOUNT_DESCRIPTOR;\n        }\n\n        public bool AutoMountRight\n        {\n            get { return String.Compare(MountedDescriptor, RIGHT_SIDE_MOUNT_DESCRIPTOR, StringComparison.OrdinalIgnoreCase) == 0; }\n        }\n\n        public void SetAutoMountRight()\n        {\n            MountedDescriptor = RIGHT_SIDE_MOUNT_DESCRIPTOR;\n        }\n\n        public bool AutoMount\n        {\n            get { return String.Compare(MountedDescriptor, AUTO_MOUNT_DESCRIPTOR, StringComparison.OrdinalIgnoreCase) == 0; }\n        }\n\n        public void SetAutoMount()\n        {\n            MountedDescriptor = AUTO_MOUNT_DESCRIPTOR;\n        }\n\n        #endregion\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/ObjectBuilders/SubObjects/MyMwcObjectbuilder_Ore.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Net;\nusing System.Text;\nusing System.Reflection;\nusing KeenSoftwareHouse.Library.Extensions;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing SysUtils.Utils;\n\nnamespace MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects\n{\n    //  IMPORTANT: Never change numeric values and never delete any enum item. These numbers are referenced e.g. from database.\n    public enum MyMwcObjectBuilder_Ore_TypesEnum : ushort\n    {\n        STONE = 1,\n        IRON = 2,\n        URANITE = 3,\n        HELIUM = 4,\n        ICE = 5,\n        GOLD = 6,\n        SILVER = 7,\n        //INDESTRUCTIBLE = 8,\n        SILICON = 9,\n        PLATINUM = 10,\n        NICKEL = 11,\n        COBALT = 12,\n        MAGNESIUM = 13,\n        TREASURE = 14,\n        ORGANIC = 15,\n        XENON = 16,\n        LAVA = 17,\n        SNOW = 18,\n        SANDSTONE = 19,\n        CONCRETE = 20,\n    }\n\n    public class MyMwcObjectBuilder_Ore : MyMwcObjectBuilder_SubObjectBase\n    {\n        public MyMwcObjectBuilder_Ore_TypesEnum OreType { get; set; }\n\n        internal MyMwcObjectBuilder_Ore()\n            : base()\n        {\n        }\n\n        public MyMwcObjectBuilder_Ore(MyMwcObjectBuilder_Ore_TypesEnum oreType)\n        {\n            OreType = oreType;\n        }\n\n        public override MyMwcObjectBuilderTypeEnum GetObjectBuilderType()\n        {\n            return MyMwcObjectBuilderTypeEnum.Ore;\n        }\n\n        public override int? GetObjectBuilderId()\n        {\n            return (int)OreType;\n        }\n\n        internal override void SetObjectBuilderIdInternal(int? objectBuilderId)\n        {\n            OreType = (MyMwcObjectBuilder_Ore_TypesEnum)Convert.ToUInt16(objectBuilderId);\n        }\n\n        //  Write this object into message-out\n        internal override void Write(BinaryWriter binaryWriter)\n        {\n            base.Write(binaryWriter);\n\n            //  Ore Type\n            MyMwcLog.IfNetVerbose_AddToLog(\"OreType: \" + OreType);\n            MyMwcMessageOut.WriteObjectBuilderOreTypesEnum(OreType, binaryWriter);\n        }\n\n        //  Read this object from message-in\n        internal override bool Read(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n        {\n            if (base.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n\n            //  Ore Type\n            MyMwcObjectBuilder_Ore_TypesEnum? oreType = MyMwcMessageIn.ReadObjectBuilderOreTypesEnumEx(binaryReader, senderEndPoint);\n            if (oreType == null) return NetworkError();\n            OreType = oreType.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"OreType: \" + OreType);\n\n            return true;\n        }\n\n        public override string ToString()\n        {\n            return base.GetType().Name + \"(\" + OreType.ToString() + \")\";\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/ObjectBuilders/SubObjects/Prefabs/MyMwcObjectBuilder_EntityUseProperties.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.IO;\nusing System.Net;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.Networking;\n\nnamespace MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.Prefabs\n{\n    public class MyMwcObjectBuilder_EntityUseProperties : MyMwcObjectBuilder_SubObjectBase\n    {\n        public int UseType { get; set; }\n        public int HackType { get; set; }\n        public int HackingLevel { get; set; }\n        public int HackingTime { get; set; }\n        public bool IsHacked { get; set; }\n\n        internal MyMwcObjectBuilder_EntityUseProperties()\n            : base()\n        {\n        }\n\n        public MyMwcObjectBuilder_EntityUseProperties(int useType, int hackType, int hackingLevel, int hackingTime, bool isHacked)\n        {\n            UseType = useType;\n            HackType = hackType;\n            HackingLevel = hackingLevel;\n            HackingTime = hackingTime;\n            IsHacked = isHacked;\n        }\n\n        public override MyMwcObjectBuilderTypeEnum GetObjectBuilderType()\n        {\n            return MyMwcObjectBuilderTypeEnum.EntityUseProperties;\n        }        \n\n        //  Write this object into message-out\n        internal override void Write(BinaryWriter binaryWriter)\n        {\n            base.Write(binaryWriter);\n\n            //  Use Type\n            MyMwcLog.IfNetVerbose_AddToLog(\"UseType: \" + UseType);\n            MyMwcMessageOut.WriteInt32(UseType, binaryWriter);\n\n            //  Hack Type\n            MyMwcLog.IfNetVerbose_AddToLog(\"HackType: \" + HackType);\n            MyMwcMessageOut.WriteInt32(HackType, binaryWriter);\n\n            //  Hacking Level\n            MyMwcLog.IfNetVerbose_AddToLog(\"HackingLevel: \" + HackingLevel);\n            MyMwcMessageOut.WriteInt32(HackingLevel, binaryWriter);\n\n            //  Hacking Time\n            MyMwcLog.IfNetVerbose_AddToLog(\"HackingTime: \" + HackingTime);\n            MyMwcMessageOut.WriteInt32(HackingTime, binaryWriter);\n\n            //  Is Hacked\n            MyMwcLog.IfNetVerbose_AddToLog(\"IsHacked: \" + IsHacked);\n            MyMwcMessageOut.WriteBool(IsHacked, binaryWriter);\n        }\n\n        //  Read this object from message-in\n        internal override bool Read(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n        {\n            if (base.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n\n            //  Use Type\n            int? useType = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);\n            if (useType == null) return NetworkError();\n            UseType = useType.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"UseType: \" + UseType);\n\n            //  Hack Type\n            int? hackType = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);\n            if (hackType == null) return NetworkError();\n            HackType = hackType.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"HackType: \" + HackType);\n\n            //  Hacking Level\n            int? hackingLevel = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);\n            if (hackingLevel == null) return NetworkError();\n            HackingLevel = hackingLevel.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"HackingLevel: \" + HackingLevel);\n\n            //  Hacking Time\n            int? hackingTime = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);\n            if (hackingTime == null) return NetworkError();\n            HackingTime = hackingTime.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"HackingTime: \" + HackingTime);\n\n            //  Is Hacked\n            bool? isHacked = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n            if (isHacked == null) return NetworkError();\n            IsHacked = isHacked.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"IsHacked: \" + IsHacked);\n\n            return true;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/ObjectBuilders/SubObjects/Prefabs/MyMwcObjectBuilder_PrefabAlarm.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWarsMath;\nusing System.IO;\nusing System.Net;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.Networking;\n\nnamespace MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.Prefabs\n{\n    //  IMPORTANT: Never change numeric values and never delete any enum item. These numbers are referenced e.g. from database.\n    public enum MyMwcObjectBuilder_PrefabAlarm_TypesEnum : ushort\n    {\n        DEFAULT = 1,\n    }\n\n    public class MyMwcObjectBuilder_PrefabAlarm : MyMwcObjectBuilder_PrefabBase\n    {\n        //public bool On { get; set; }\n\n        internal MyMwcObjectBuilder_PrefabAlarm()\n            : base()\n        {\n        }\n\n        public MyMwcObjectBuilder_PrefabAlarm(MyMwcObjectBuilder_PrefabAlarm_TypesEnum prefabType, MyMwcObjectBuilder_Prefab_AppearanceEnum appearance, MyMwcVector3Short position, Vector3 anglesInContainer, float? prefabMaxHealth, float prefabHealthRatio, string displayName, float electricCapacity, bool? causesAlarm, int aiPriority/*, bool on*/)\n            : base((int)prefabType, appearance, position, anglesInContainer, prefabMaxHealth, prefabHealthRatio, displayName, electricCapacity, causesAlarm, aiPriority)\n        {\n            //On = on;\n        }\n\n        /// <summary>\n        /// GetObjectBuilderType\n        /// </summary>\n        /// <returns></returns>\n        public override MyMwcObjectBuilderTypeEnum GetObjectBuilderType()\n        {\n            return MyMwcObjectBuilderTypeEnum.PrefabAlarm;\n        }\n\n        public MyMwcObjectBuilder_PrefabAlarm_TypesEnum PrefabAlarmType\n        {\n            get\n            {\n                return (MyMwcObjectBuilder_PrefabAlarm_TypesEnum)GetObjectBuilderId().Value;\n            }\n            set\n            {\n                SetObjectBuilderId((int)value);\n            }\n        }\n\n        //  Write this object into message-out\n        internal override void Write(BinaryWriter binaryWriter)\n        {\n            base.Write(binaryWriter);\n\n            ////  On\n            //MyMwcLog.IfNetVerbose_AddToLog(\"On: \" + On);\n            //MyMwcMessageOut.WriteBool(On, binaryWriter);\n        }\n\n        //  Read this object from message-in\n        internal override bool Read(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n        {\n            if (base.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n\n            ////  On\n            //bool? on = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n            //if (on == null) return NetworkError();\n            //On = on.Value;\n            //MyMwcLog.IfNetVerbose_AddToLog(\"On: \" + On);\n\n            return true;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/ObjectBuilders/SubObjects/Prefabs/MyMwcObjectBuilder_PrefabBankNode.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.IO;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing System.Net;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWarsMath;\n\nnamespace MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.Prefabs\n{\n    //  IMPORTANT: Never change numeric values and never delete any enum item. These numbers are referenced e.g. from database.\n    public enum MyMwcObjectBuilder_PrefabBankNode_TypesEnum : ushort\n    {\n        DEFAULT = 0,\n    }\n\n    public class MyMwcObjectBuilder_PrefabBankNode : MyMwcObjectBuilder_PrefabBase\n    {\n        public float Cash { get; set; }\n\n        internal MyMwcObjectBuilder_PrefabBankNode()\n            : base()\n        {            \n        }\n\n        public MyMwcObjectBuilder_PrefabBankNode(MyMwcObjectBuilder_PrefabBankNode_TypesEnum bankNodeType,\n            MyMwcObjectBuilder_Prefab_AppearanceEnum appearance, MyMwcVector3Short position, Vector3 anglesInContainer, float? prefabMaxHealth,\n            float prefabHealthRatio, string displayName, float electricCapacity, bool? causesAlarm, int aiPriority, float cash)\n            : base((int)bankNodeType, appearance, position, anglesInContainer, prefabMaxHealth, prefabHealthRatio, displayName, electricCapacity, causesAlarm, aiPriority)\n        {\n            Cash = cash;\n        }\n\n        /// <summary>\n        /// GetObjectBuilderType\n        /// </summary>\n        /// <returns></returns>\n        public override MyMwcObjectBuilderTypeEnum GetObjectBuilderType()\n        {\n            return MyMwcObjectBuilderTypeEnum.PrefabBankNode;\n        }\n\n        public MyMwcObjectBuilder_PrefabBankNode_TypesEnum BankNodeType\n        {\n            get\n            {\n                return (MyMwcObjectBuilder_PrefabBankNode_TypesEnum)GetObjectBuilderId().Value;\n            }\n            set\n            {\n                SetObjectBuilderId((int)value);\n            }\n        }\n\n        //  Write this object into message-out\n        internal override void Write(BinaryWriter binaryWriter)\n        {\n            base.Write(binaryWriter);\n            \n            //  Cash\n            MyMwcLog.IfNetVerbose_AddToLog(\"Cash: \" + Cash);\n            MyMwcMessageOut.WriteFloat(Cash, binaryWriter);            \n        }\n\n        //  Read this object from message-in\n        internal override bool Read(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n        {\n            if (base.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();           \n\n            //  Cash\n            float? cash = MyMwcMessageIn.ReadFloat(binaryReader);\n            if (cash == null) return NetworkError();\n            Cash = cash.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"Cash: \" + Cash);\n\n            return true;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/ObjectBuilders/SubObjects/Prefabs/MyMwcObjectBuilder_PrefabCamera.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWarsMath;\nusing System.IO;\nusing System.Net;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.Networking;\n\nnamespace MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.Prefabs\n{\n    //  IMPORTANT: Never change numeric values and never delete any enum item. These numbers are referenced e.g. from database.\n    public enum MyMwcObjectBuilder_PrefabCamera_TypesEnum : ushort\n    {\n        DEFAULT = 0\n    }\n\n    public class MyMwcObjectBuilder_PrefabCamera : MyMwcObjectBuilder_PrefabBase\n    {\n        //public bool On { get; set; }\n\n        internal MyMwcObjectBuilder_PrefabCamera()\n            : base()\n        {\n            //On = false;\n        }\n\n        public MyMwcObjectBuilder_PrefabCamera(MyMwcObjectBuilder_PrefabCamera_TypesEnum prefabType, MyMwcObjectBuilder_Prefab_AppearanceEnum appearance, MyMwcVector3Short position, Vector3 anglesInContainer, float? prefabMaxHealth, float prefabHealthRatio, string displayName, float electricCapacity, bool? causesAlarm, int aiPriority/*, bool on*/)\n            : base((int)prefabType, appearance, position, anglesInContainer, prefabMaxHealth, prefabHealthRatio, displayName, electricCapacity, causesAlarm, aiPriority)\n        {\n            //On = on;\n        }\n\n        /// <summary>\n        /// GetObjectBuilderType\n        /// </summary>\n        /// <returns></returns>\n        public override MyMwcObjectBuilderTypeEnum GetObjectBuilderType()\n        {\n            return MyMwcObjectBuilderTypeEnum.PrefabCamera;\n        }\n\n        public MyMwcObjectBuilder_PrefabCamera_TypesEnum PrefabCameraType\n        {\n            get\n            {\n                return (MyMwcObjectBuilder_PrefabCamera_TypesEnum)GetObjectBuilderId().Value;\n            }\n            set\n            {\n                SetObjectBuilderId((int)value);\n            }\n        }\n\n        //  Write this object into message-out\n        internal override void Write(BinaryWriter binaryWriter)\n        {\n            base.Write(binaryWriter);\n\n            ////  On\n            //MyMwcLog.IfNetVerbose_AddToLog(\"On: \" + On);\n            //MyMwcMessageOut.WriteBool(On, binaryWriter);\n        }\n\n        //  Read this object from message-in\n        internal override bool Read(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n        {\n            if (base.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n\n\n            ////  On\n            //bool? on = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n            //if (on == null) return NetworkError();\n            //On = on.Value;\n            //MyMwcLog.IfNetVerbose_AddToLog(\"On: \" + On);\n\n            return true;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/ObjectBuilders/SubObjects/Prefabs/MyMwcObjectBuilder_PrefabFoundationFactory.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Data.SqlClient;\nusing System.IO;\nusing System.Linq;\nusing System.Net;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils.Utils;\n\nnamespace MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.Prefabs\n{\n    //  IMPORTANT: Never change numeric values and never delete any enum item. These numbers are referenced e.g. from database.\n    public enum MyMwcObjectBuilder_PrefabFoundationFactory_TypesEnum : ushort\n    {\n        DEFAULT = 0,\n    }\n\n    public class MyMwcObjectBuilder_PrefabFoundationFactory : MyMwcObjectBuilder_PrefabBase\n    {\n        public bool IsBuilding { get; set; }\n        public int BuildingTimeFromStart { get; set; }\n        public MyMwcObjectBuilder_ObjectToBuild BuildingObject { get; set; }\n        public List<MyMwcObjectBuilder_ObjectToBuild> BuildingQueue { get; set; }\n\n        internal MyMwcObjectBuilder_PrefabFoundationFactory()\n            : base()\n        {\n            BuildingQueue = new List<MyMwcObjectBuilder_ObjectToBuild>();            \n        }\n\n        public MyMwcObjectBuilder_PrefabFoundationFactory(MyMwcObjectBuilder_PrefabFoundationFactory_TypesEnum foundationFactoryType,\n            MyMwcObjectBuilder_Prefab_AppearanceEnum appearance, MyMwcVector3Short position, Vector3 anglesInContainer, float? prefabMaxHealth,\n            float prefabHealthRatio, string displayName, float electricCapacity, bool? causesAlarm, int aiPriority, bool isBuilding, int buildingTimeFromStart,\n            MyMwcObjectBuilder_ObjectToBuild buildingObject, List<MyMwcObjectBuilder_ObjectToBuild> buildingQueue)\n            : base((int)foundationFactoryType, appearance, position, anglesInContainer, prefabMaxHealth, prefabHealthRatio, displayName, electricCapacity, causesAlarm, aiPriority)\n        {\n            IsBuilding = isBuilding;\n            BuildingTimeFromStart = buildingTimeFromStart;\n            BuildingObject = buildingObject;\n            BuildingQueue = buildingQueue;\n        }\n\n        /// <summary>\n        /// GetObjectBuilderType\n        /// </summary>\n        /// <returns></returns>\n        public override MyMwcObjectBuilderTypeEnum GetObjectBuilderType()\n        {\n            return MyMwcObjectBuilderTypeEnum.PrefabFoundationFactory;\n        }\n\n        public override void RemapEntityIds(IMyEntityIdRemapContext remapContext)\n        {\n            base.RemapEntityIds(remapContext);\n\n            if (BuildingObject != null)\n                BuildingObject.RemapEntityIds(remapContext);\n\n            foreach (var obj in BuildingQueue)\n            {\n                obj.RemapEntityIds(remapContext);\n            }\n        }\n\n        public MyMwcObjectBuilder_PrefabFoundationFactory_TypesEnum FoundationFactoryType\n        {\n            get\n            {\n                return (MyMwcObjectBuilder_PrefabFoundationFactory_TypesEnum)GetObjectBuilderId().Value;\n            }\n            set\n            {\n                SetObjectBuilderId((int)value);\n            }\n        }\n\n        //  Write this object into message-out\n        internal override void Write(BinaryWriter binaryWriter)\n        {\n            base.Write(binaryWriter);\n\n            //  Is building\n            MyMwcLog.IfNetVerbose_AddToLog(\"IsBuilding: \" + IsBuilding);\n            MyMwcMessageOut.WriteBool(IsBuilding, binaryWriter);\n\n            //  Building time from start\n            MyMwcLog.IfNetVerbose_AddToLog(\"BuildingTimeFromStart: \" + BuildingTimeFromStart);\n            MyMwcMessageOut.WriteInt32(BuildingTimeFromStart, binaryWriter);\n\n            //  Building queue\n            int countBuildingQueueObjects = BuildingQueue == null ? 0 : BuildingQueue.Count;\n            MyMwcLog.IfNetVerbose_AddToLog(\"CountBuildingQueueObjects: \" + countBuildingQueueObjects);\n            MyMwcMessageOut.WriteInt32(countBuildingQueueObjects, binaryWriter);\n            for (int i = 0; i < countBuildingQueueObjects; i++)\n            {\n                BuildingQueue[i].Write(binaryWriter);\n            }\n\n            //  Building object\n            bool isBuildingObjectObjectBuilder = BuildingObject != null;\n            MyMwcMessageOut.WriteBool(isBuildingObjectObjectBuilder, binaryWriter);\n            if (isBuildingObjectObjectBuilder) BuildingObject.Write(binaryWriter);    \n        }\n\n        //  Read this object from message-in\n        internal override bool Read(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n        {\n            if (base.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n\n            //  Is building\n            bool? isBuilding = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n            if (isBuilding == null) return NetworkError();\n            IsBuilding = isBuilding.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"IsBuilding: \" + IsBuilding);\n\n            //  Building time from start\n            int? buildingTimeFromStart = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);\n            if (buildingTimeFromStart == null) return NetworkError();\n            BuildingTimeFromStart = buildingTimeFromStart.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"BuildingTimeFromStart: \" + BuildingTimeFromStart);            \n\n            //  Building queue\n            int? countBuildingQueueObjects = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);\n            if (countBuildingQueueObjects == null) return NetworkError();\n            MyMwcLog.IfNetVerbose_AddToLog(\"CountBuildingQueueObjects: \" + countBuildingQueueObjects);\n            BuildingQueue = new List<MyMwcObjectBuilder_ObjectToBuild>(countBuildingQueueObjects.Value);\n            for (int i = 0; i < countBuildingQueueObjects; i++)\n            {\n                MyMwcObjectBuilder_ObjectToBuild objectToBuild = MyMwcObjectBuilder_Base.ReadAndCreateNewObject(binaryReader, senderEndPoint) as MyMwcObjectBuilder_ObjectToBuild;\n                if (objectToBuild == null) return NetworkError();\n                if (objectToBuild.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n                BuildingQueue.Add(objectToBuild);\n            }\n\n            //  Building object\n            bool? isBuildingObject = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n            if (isBuildingObject == null) return NetworkError();\n            if (isBuildingObject.Value)\n            {\n                BuildingObject = MyMwcObjectBuilder_Base.ReadAndCreateNewObject(binaryReader, senderEndPoint) as MyMwcObjectBuilder_ObjectToBuild;\n                if (BuildingObject == null) return NetworkError();\n                if (BuildingObject.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n            }\n            else\n            {\n                BuildingObject = null;\n            }            \n\n            return true;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/ObjectBuilders/SubObjects/Prefabs/MyMwcObjectBuilder_PrefabGenerator.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.IO;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing System.Net;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWarsMath;\n\nnamespace MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.Prefabs\n{\n    //  IMPORTANT: Never change numeric values and never delete any enum item. These numbers are referenced e.g. from database.\n    public enum MyMwcObjectBuilder_PrefabGenerator_TypesEnum : ushort\n    {\n        P321C01_INERTIA_GENERATOR = 0,\n        P321C03_CENTRIFUGE = 1,\n        P321C04_BOX_GENERATOR = 2,\n        P321C05_CENTRIFUGE_BIG = 3,\n        P321C02_GENERATOR_WALL_BIG = 4,\n        P321C06_INERTIA_GENERATOR_B = 5,\n        P321C07_GENERATOR = 6,\n    }\n\n    public class MyMwcObjectBuilder_PrefabGenerator : MyMwcObjectBuilder_PrefabBase\n    {\n        //public bool On { get; set; }\n\n        internal MyMwcObjectBuilder_PrefabGenerator()\n            : base()\n        {            \n        }\n\n        public MyMwcObjectBuilder_PrefabGenerator(MyMwcObjectBuilder_PrefabGenerator_TypesEnum generatorType,\n            MyMwcObjectBuilder_Prefab_AppearanceEnum appearance, MyMwcVector3Short position, Vector3 anglesInContainer, float? prefabMaxHealth,\n            float prefabHealthRatio, string displayName, float electricCapacity, bool? causesAlarm, int aiPriority, /*bool on,*/ float range)\n            : base((int)generatorType, appearance, position, anglesInContainer, prefabMaxHealth, prefabHealthRatio, displayName, electricCapacity, causesAlarm, aiPriority)\n        {\n            //On = on;\n        }\n\n        /// <summary>\n        /// GetObjectBuilderType\n        /// </summary>\n        /// <returns></returns>\n        public override MyMwcObjectBuilderTypeEnum GetObjectBuilderType()\n        {\n            return MyMwcObjectBuilderTypeEnum.PrefabGenerator;\n        }\n\n\n        public MyMwcObjectBuilder_PrefabGenerator_TypesEnum PrefabGeneratorType\n        {\n            get\n            {\n                return (MyMwcObjectBuilder_PrefabGenerator_TypesEnum)GetObjectBuilderId().Value;\n            }\n            set\n            {\n                SetObjectBuilderId((int)value);\n            }\n        }\n\n        //  Write this object into message-out\n        internal override void Write(BinaryWriter binaryWriter)\n        {\n            base.Write(binaryWriter);\n\n            ////  On\n            //MyMwcLog.IfNetVerbose_AddToLog(\"On: \" + On);\n            //MyMwcMessageOut.WriteBool(On, binaryWriter);\n        }\n\n        //  Read this object from message-in\n        internal override bool Read(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n        {\n            if (base.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n\n            ////  On\n            //bool? on = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n            //if (on == null) return NetworkError();\n            //On = on.Value;\n            //MyMwcLog.IfNetVerbose_AddToLog(\"On: \" + On);\n\n            return true;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/ObjectBuilders/SubObjects/Prefabs/MyMwcObjectBuilder_PrefabHangar.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Data.SqlClient;\nusing System.IO;\nusing System.Linq;\nusing System.Net;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.CommonLIB.AppCode.Utils;\n\nnamespace MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.Prefabs\n{\n    //  IMPORTANT: Never change numeric values and never delete any enum item. These numbers are referenced e.g. from database.\n    public enum MyMwcObjectBuilder_PrefabHangar_TypesEnum : ushort\n    {\n        VENDOR = 111,\n        HANGAR = 112,\n    }\n\n    public class MyMwcObjectBuilder_PrefabHangar : /*MyMwcObjectBuilder_Prefab*/ MyMwcObjectBuilder_PrefabBase\n    {\n        internal MyMwcObjectBuilder_PrefabHangar()\n            : base()\n        {\n        }\n\n        public MyMwcObjectBuilder_PrefabHangar(MyMwcObjectBuilder_PrefabHangar_TypesEnum prefabType, MyMwcObjectBuilder_Prefab_AppearanceEnum appearance, MyMwcVector3Short position, Vector3 anglesInContainer, float? prefabMaxHealth, float prefabHealthRatio, string displayName, float electricCapacity, bool? causesAlarm, int aiPriority)\n            : base((int)prefabType, appearance, position, anglesInContainer, prefabMaxHealth, prefabHealthRatio, displayName, electricCapacity, causesAlarm, aiPriority)\n        {\n        }\n\n        /// <summary>\n        /// GetObjectBuilderType\n        /// </summary>\n        /// <returns></returns>\n        public override MyMwcObjectBuilderTypeEnum GetObjectBuilderType()\n        {\n            return MyMwcObjectBuilderTypeEnum.PrefabHangar;\n        }\n\n        public MyMwcObjectBuilder_PrefabHangar_TypesEnum PrefabHangarType\n        {\n            get\n            {\n                return (MyMwcObjectBuilder_PrefabHangar_TypesEnum)GetObjectBuilderId().Value;\n            }\n            set\n            {\n                SetObjectBuilderId((int)value);\n            }\n        }\n\n        //  Write this object into message-out\n        internal override void Write(BinaryWriter binaryWriter)\n        {\n            base.Write(binaryWriter);\n        }\n\n        //  Read this object from message-in\n        internal override bool Read(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n        {\n            if (base.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n            return true;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/ObjectBuilders/SubObjects/Prefabs/MyMwcObjectBuilder_PrefabKinematic.cs",
    "content": "﻿using System;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWarsMath;\nusing System.IO;\nusing System.Net;\nusing System.Data.SqlClient;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.Networking;\n\nnamespace MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.Prefabs\n{\n    //  IMPORTANT: Never change numeric values and never delete any enum item. These numbers are referenced e.g. from database.\n    public enum MyMwcObjectBuilder_PrefabKinematic_TypesEnum : ushort\n    {\n        P415_C01_DOOR1 = 45,\n        P415_C01_DOOR2 = 46,\n        P415_C01_DOOR3 = 47,\n        P415_C01_DOOR4 = 48,\n        P341_A01_OPEN_DOCK_VARIATION1 = 122,\n        P415_A01_DOORCASE = 79,\n    }\n\n    public class MyMwcObjectBuilder_PrefabKinematic : /*MyMwcObjectBuilder_Prefab*/ MyMwcObjectBuilder_PrefabBase\n    {\n        public const int MAX_KINEMATIC_PARTS = 10;\n\n        // Kinematic parts healths        \n        public float?[] KinematicPartsHealth;\n        public float?[] KinematicPartsMaxHealth;\n        public uint?[] KinematicPartsEntityId;\n\n        internal MyMwcObjectBuilder_PrefabKinematic()\n            : base()\n        {\n            KinematicPartsHealth = new float?[MAX_KINEMATIC_PARTS];\n            KinematicPartsMaxHealth = new float?[MAX_KINEMATIC_PARTS];\n            KinematicPartsEntityId = new uint?[MAX_KINEMATIC_PARTS];\n        }\n\n        /// <summary>\n        /// c-tor\n        /// </summary>\n        /// <param name=\"prefabType\"></param>\n        /// <param name=\"position\"></param>\n        /// <param name=\"anglesInContainer\"></param>\n        public MyMwcObjectBuilder_PrefabKinematic(MyMwcObjectBuilder_PrefabKinematic_TypesEnum prefabType, MyMwcObjectBuilder_Prefab_AppearanceEnum appearance, MyMwcVector3Short position, Vector3 anglesInContainer, float? prefabMaxHealth, float prefabHealthRatio, string displayName, float electricCapacity, bool? causesAlarm, int aiPriority)\n            : base((int)prefabType, appearance, position, anglesInContainer, prefabMaxHealth, prefabHealthRatio, displayName, electricCapacity, causesAlarm, aiPriority)\n        {\n\n        }\n\n        /// <summary>\n        /// GetObjectBuilderType\n        /// </summary>\n        /// <returns></returns>\n        public override MyMwcObjectBuilderTypeEnum GetObjectBuilderType()\n        {\n            return MyMwcObjectBuilderTypeEnum.PrefabKinematic;\n        }\n\n        public override void ClearEntityId()\n        {\n            base.ClearEntityId();\n            for (int i = 0; i < MAX_KINEMATIC_PARTS; i++)\n            {\n                KinematicPartsEntityId[i] = null;\n            }\n        }\n\n        public override void RemapEntityIds(IMyEntityIdRemapContext remapContext)\n        {\n            base.RemapEntityIds(remapContext);\n            for (int i = 0; i < MAX_KINEMATIC_PARTS; i++)\n            {\n                KinematicPartsEntityId[i] = remapContext.RemapEntityId(KinematicPartsEntityId[i]);\n            }\n        }\n\n        public MyMwcObjectBuilder_PrefabKinematic_TypesEnum PrefabKinematicType\n        {\n            get\n            {\n                return (MyMwcObjectBuilder_PrefabKinematic_TypesEnum) GetObjectBuilderId().Value;\n            }\n            set\n            {\n                SetObjectBuilderId((int)value);\n            }\n        }\n\n        //  Write this object into message-out\n        internal override void Write(BinaryWriter binaryWriter)\n        {\n            base.Write(binaryWriter);\n\n            // Prefab parts healths and max healths\n            for (int i = 0; i < MAX_KINEMATIC_PARTS; i++) \n            {\n                float? prefabHealth = KinematicPartsHealth[i];                \n                if (prefabHealth != null)\n                {\n                    MyMwcMessageOut.WriteBool(true, binaryWriter);\n                    MyMwcLog.IfNetVerbose_AddToLog(\"PrefabHealth\" + (i + 1) + \": \" + prefabHealth);\n                    MyMwcMessageOut.WriteFloat(prefabHealth.Value, binaryWriter);\n                }\n                else\n                {\n                    MyMwcLog.IfNetVerbose_AddToLog(\"PrefabHealth\" + (i + 1) + \": \" + \"null\");\n                    MyMwcMessageOut.WriteBool(false, binaryWriter);\n                }\n\n                float? prefabMaxHealth = KinematicPartsMaxHealth[i];\n                if (prefabMaxHealth != null)\n                {\n                    MyMwcMessageOut.WriteBool(true, binaryWriter);\n                    MyMwcLog.IfNetVerbose_AddToLog(\"PrefabMaxHealth\" + (i + 1) + \": \" + prefabMaxHealth);\n                    MyMwcMessageOut.WriteFloat(prefabMaxHealth.Value, binaryWriter);\n                }\n                else\n                {\n                    MyMwcLog.IfNetVerbose_AddToLog(\"PrefabMaxHealth\" + (i + 1) + \": \" + \"null\");\n                    MyMwcMessageOut.WriteBool(false, binaryWriter);\n                }\n\n                uint? entityId = KinematicPartsEntityId[i];\n                if (entityId != null)\n                {\n                    MyMwcMessageOut.WriteBool(true, binaryWriter);\n                    MyMwcLog.IfNetVerbose_AddToLog(\"EntityId\" + (i + 1) + \": \" + entityId);\n                    MyMwcMessageOut.WriteUInt32(entityId.Value, binaryWriter);\n                }\n                else\n                {\n                    MyMwcLog.IfNetVerbose_AddToLog(\"EntityId\" + (i + 1) + \": \" + \"null\");\n                    MyMwcMessageOut.WriteBool(false, binaryWriter);\n                }\n            }            \n        }\n\n        //  Read this object from message-in\n        internal override bool Read(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n        {\n            if (base.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n\n            // Prefab parts healths and max healths\n            for (int i = 0; i < MAX_KINEMATIC_PARTS; i++) \n            {\n                bool? hasPrefabHealth = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n                if (!hasPrefabHealth.HasValue) return NetworkError();\n                if (hasPrefabHealth.Value)\n                {\n                    float prefabHealth = MyMwcMessageIn.ReadFloat(binaryReader);\n                    if (prefabHealth == null) return NetworkError();\n                    MyMwcLog.IfNetVerbose_AddToLog(\"PrefabHealth\" + (i + 1) + \": \" + prefabHealth);\n                    KinematicPartsHealth[i] = prefabHealth;\n                }\n                else\n                {\n                    MyMwcLog.IfNetVerbose_AddToLog(\"PrefabHealth\" + (i + 1) + \": \" + \"null\");\n                    KinematicPartsHealth[i] = null;\n                }\n\n                bool? hasPrefabMaxHealth = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n                if (!hasPrefabMaxHealth.HasValue) return NetworkError();\n                if (hasPrefabMaxHealth.Value)\n                {\n                    float prefabMaxHealth = MyMwcMessageIn.ReadFloat(binaryReader);\n                    if (prefabMaxHealth == null) return NetworkError();\n                    MyMwcLog.IfNetVerbose_AddToLog(\"PrefabMaxHealth\" + (i + 1) + \": \" + prefabMaxHealth);\n                    KinematicPartsMaxHealth[i] = prefabMaxHealth;\n                }\n                else\n                {\n                    MyMwcLog.IfNetVerbose_AddToLog(\"PrefabMaxHealth\" + (i + 1) + \": \" + \"null\");\n                    KinematicPartsMaxHealth[i] = null;\n                }\n\n                bool? hasEntityId = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n                if (!hasEntityId.HasValue) return NetworkError();\n                if (hasEntityId.Value)\n                {\n                    uint? entityId = MyMwcMessageIn.ReadUInt32Ex(binaryReader, senderEndPoint);\n                    if (entityId == null) return NetworkError();\n                    MyMwcLog.IfNetVerbose_AddToLog(\"EntityId\" + (i + 1) + \": \" + entityId);\n                    KinematicPartsEntityId[i] = entityId;\n                }\n                else\n                {\n                    MyMwcLog.IfNetVerbose_AddToLog(\"EntityId\" + (i + 1) + \": \" + \"null\");\n                    KinematicPartsEntityId[i] = null;\n                }\n            }\n\n            return true;\n        }\n    }\n}"
  },
  {
    "path": "Sources/CommonLIB/AppCode/ObjectBuilders/SubObjects/Prefabs/MyMwcObjectBuilder_PrefabKinematicPart.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Net;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.CommonLIB.AppCode.Utils;\n\nnamespace MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.Prefabs\n{\n    //  IMPORTANT: Never change numeric values and never delete any enum item. These numbers are referenced e.g. from database.\n    public enum MyMwcObjectBuilder_PrefabKinematicPart_TypesEnum : ushort\n    {\n        P415_A02_DOOR_LEFT = 80,\n        P415_A02_DOOR_RIGHT = 81,\n        P415_C02_DOOR1_RIGHT = 354,\n        P415_C02_DOOR1_LEFT = 355,\n        P415_C03_DOOR2_A = 356,\n        P415_C03_DOOR2_B = 357,\n        P415_C03_DOOR2_A_LEFT = 358,\n        P415_C03_DOOR2_A_RIGHT = 359,\n        P415_C03_DOOR2_B_LEFT = 360,\n        P415_C03_DOOR2_B_RIGHT = 361,\n        P341_A01_OPEN_DOCK_VARIATION1_DOORLEFT = 362,\n        P341_A01_OPEN_DOCK_VARIATION1_DOORRIGHT = 363,\n    }\n\n    public class MyMwcObjectBuilder_PrefabKinematicPart : MyMwcObjectBuilder_PrefabBase\n    {\n        internal MyMwcObjectBuilder_PrefabKinematicPart()\n            : base()\n        {\n        }\n\n        public MyMwcObjectBuilder_PrefabKinematicPart(MyMwcObjectBuilder_PrefabKinematicPart_TypesEnum prefabType, MyMwcObjectBuilder_Prefab_AppearanceEnum appearance,\n            MyMwcVector3Short position, Vector3 anglesInContainer, float? prefabMaxHealth, float prefabHealthRatio, string displayName, float electricCapacity, bool? causesAlarm, int aiPriority)\n            : base((int)prefabType, appearance, position, anglesInContainer, prefabMaxHealth, prefabHealthRatio, displayName, electricCapacity, causesAlarm, aiPriority)\n        {            \n        }\n\n        public override MyMwcObjectBuilderTypeEnum GetObjectBuilderType()\n        {\n            return MyMwcObjectBuilderTypeEnum.PrefabKinematicPart;\n        }\n\n        public MyMwcObjectBuilder_PrefabKinematicPart_TypesEnum PrefabKinematicPartType\n        {\n            get\n            {\n                return (MyMwcObjectBuilder_PrefabKinematicPart_TypesEnum)GetObjectBuilderId().Value;\n            }\n            set\n            {\n                SetObjectBuilderId((int)value);\n            }\n        }        \n\n        //  Write this object into message-out\n        internal override void Write(BinaryWriter binaryWriter)\n        {\n            base.Write(binaryWriter);            \n        }\n\n        //  Read this object from message-in\n        internal override bool Read(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n        {\n            if (base.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();            \n\n            return true;\n        }        \n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/ObjectBuilders/SubObjects/Prefabs/MyMwcObjectBuilder_PrefabKinematicRotatingPart.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.IO;\nusing System.Net;\nusing MinerWarsMath;\nusing MinerWars.CommonLIB.AppCode.Utils;\n\nnamespace MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.Prefabs\n{\n    //  IMPORTANT: Never change numeric values and never delete any enum item. These numbers are referenced e.g. from database.\n    public enum MyMwcObjectBuilder_PrefabKinematicRotatingPart_TypesEnum : ushort\n    {\n        DEFAULT = 0,\n    }\n\n    public class MyMwcObjectBuilder_PrefabKinematicRotatingPart : MyMwcObjectBuilder_PrefabBase\n    {\n        internal MyMwcObjectBuilder_PrefabKinematicRotatingPart()\n            : base()\n        {\n        }\n\n        public MyMwcObjectBuilder_PrefabKinematicRotatingPart(MyMwcObjectBuilder_PrefabKinematicRotatingPart_TypesEnum prefabType, MyMwcObjectBuilder_Prefab_AppearanceEnum appearance,\n            MyMwcVector3Short position, Vector3 anglesInContainer, float? prefabMaxHealth, float prefabHealthRatio, string displayName, float electricCapacity, bool? causesAlarm, int aiPriority)\n            : base((int)prefabType, appearance, position, anglesInContainer, prefabMaxHealth, prefabHealthRatio, displayName, electricCapacity, causesAlarm, aiPriority)\n        {            \n        }\n\n        public override MyMwcObjectBuilderTypeEnum GetObjectBuilderType()\n        {\n            return MyMwcObjectBuilderTypeEnum.PrefabKinematicRotatingPart;\n        }\n\n        public MyMwcObjectBuilder_PrefabKinematicRotatingPart_TypesEnum PrefabKinematicRotatingPartType\n        {\n            get\n            {\n                return (MyMwcObjectBuilder_PrefabKinematicRotatingPart_TypesEnum)GetObjectBuilderId().Value;\n            }\n            set\n            {\n                SetObjectBuilderId((int)value);\n            }\n        }        \n\n        //  Write this object into message-out\n        internal override void Write(BinaryWriter binaryWriter)\n        {\n            base.Write(binaryWriter);            \n        }\n\n        //  Read this object from message-in\n        internal override bool Read(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n        {\n            if (base.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();            \n\n            return true;\n        }       \n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/ObjectBuilders/SubObjects/Prefabs/MyMwcObjectBuilder_PrefabLargeShip.cs",
    "content": "﻿using System;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWarsMath;\nusing System.IO;\nusing System.Net;\nusing System.Data.SqlClient;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing System.Text;\n\nnamespace MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.Prefabs\n{\n    //  IMPORTANT: Never change numeric values and never delete any enum item. These numbers are referenced e.g. from database.\n    public enum MyMwcObjectBuilder_PrefabLargeShip_TypesEnum : ushort\n    {\n        LARGESHIP_KAI = 378,\n        LARGESHIP_SAYA = 379,\n        LARGESHIP_ARDANT = 380,\n        FOURTH_REICH_MOTHERSHIP = 392,\n        FOURTH_REICH_MOTHERSHIP_B = 393,\n        RUS_MOTHERSHIP = 394,\n        RUSSIAN_MOTHERSHIP_HUMMER = 395,\n        MSHIP_BODY = 396,\n        MSHIP_ENGINE = 397,\n        MSHIP_SHIELD_BACK_LARGE_LEFT = 398,\n        MSHIP_SHIELD_BACK_LARGE_RIGHT = 399,\n        MSHIP_SHIELD_BACK_SMALL_LEFT = 400,\n        MSHIP_SHIELD_BACK_SMALL_RIGHT = 401,\n        MSHIP_SHIELD_FRONT_LARGE_LEFT = 402,\n        MSHIP_SHIELD_FRONT_LARGE_RIGHT = 403,\n        MSHIP_SHIELD_FRONT_SMALL_LEFT = 404,\n        MSHIP_SHIELD_FRONT_SMALL_RIGHT = 405,\n        MSHIP_SHIELD_FRONT_SMALL02_LEFT = 406,\n        MSHIP_SHIELD_FRONT_SMALL02_RIGHT = 407,\n    }\n\n    public class MyMwcObjectBuilder_PrefabLargeShip : /*MyMwcObjectBuilder_Prefab*/ MyMwcObjectBuilder_PrefabBase\n    {\n        internal MyMwcObjectBuilder_PrefabLargeShip()\n            : base()\n        {\n        }\n\n        /// <summary>\n        /// c-tor\n        /// </summary>\n        /// <param name=\"prefabType\"></param>\n        /// <param name=\"position\"></param>\n        /// <param name=\"anglesInContainer\"></param>\n        public MyMwcObjectBuilder_PrefabLargeShip(MyMwcObjectBuilder_PrefabLargeShip_TypesEnum prefabType, MyMwcObjectBuilder_Prefab_AppearanceEnum appearance, MyMwcVector3Short position, Vector3 anglesInContainer, float? prefabMaxHealth, float prefabHealthRatio, string displayName, float electricCapacity, bool? causesAlarm, int aiPriority)\n            : base((int)prefabType, appearance, position, anglesInContainer, prefabMaxHealth, prefabHealthRatio, displayName, electricCapacity, causesAlarm, aiPriority)\n        {\n        }\n\n        /// <summary>\n        /// GetObjectBuilderType\n        /// </summary>\n        /// <returns></returns>\n        public override MyMwcObjectBuilderTypeEnum GetObjectBuilderType()\n        {\n            return MyMwcObjectBuilderTypeEnum.PrefabLargeShip;\n        }\n\n        public MyMwcObjectBuilder_PrefabLargeShip_TypesEnum PrefabLargeShipType\n        {\n            get\n            {\n                return (MyMwcObjectBuilder_PrefabLargeShip_TypesEnum) GetObjectBuilderId().Value;\n            }\n            set\n            {\n                SetObjectBuilderId((int)value);\n            }\n        }\n\n        //  Write this object into message-out\n        internal override void Write(BinaryWriter binaryWriter)\n        {\n            base.Write(binaryWriter);            \n        }\n\n        //  Read this object from message-in\n        internal override bool Read(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n        {\n            if (base.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();            \n\n            return true;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/ObjectBuilders/SubObjects/Prefabs/MyMwcObjectBuilder_PrefabLargeWeapon.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Data.SqlClient;\nusing System.IO;\nusing System.Linq;\nusing System.Net;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing SysUtils.Utils;\n\nnamespace MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.Prefabs\n{\n    //  IMPORTANT: Never change numeric values and never delete any enum item. These numbers are referenced e.g. from database.\n    public enum MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum : ushort\n    {\n        P352_A01_LARGESHIP_AUTOCANNON = 274,\n        P352_A01_LARGESHIP_MACHINEGUN = 275,\n        P352_A01_LARGESHIP_CIWS = 276,\n        P352_A01_LARGESHIP_MISSILE_BASIC4 = 277,\n        P352_A01_LARGESHIP_MISSILE_BASIC6 = 278,\n        P352_A01_LARGESHIP_MISSILE_BASIC9 = 279,\n        P352_A02_LARGESHIP_MISSILE_GUIDED4 = 280,\n        P352_A02_LARGESHIP_MISSILE_GUIDED6 = 281,\n        P352_A02_LARGESHIP_MISSILE_GUIDED9 = 282,\n    }\n\n    public class MyMwcObjectBuilder_PrefabLargeWeapon : MyMwcObjectBuilder_PrefabBase\n    {\n        public float AimingDistance;\n        public float SearchingDistance;\n\n        internal MyMwcObjectBuilder_PrefabLargeWeapon()\n            : base()\n        {\n            AimingDistance = 1000f;\n            SearchingDistance = 2000f;\n        }\n\n        public MyMwcObjectBuilder_PrefabLargeWeapon(MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum prefabType, MyMwcObjectBuilder_Prefab_AppearanceEnum appearance, MyMwcVector3Short position, Vector3 anglesInContainer, float? prefabMaxHealth, float prefabHealthRatio, string displayName, float electricCapacity, bool? causesAlarm, float aimingDistance, float searchingDistance, int aiPriority)\n            : base((int)prefabType, appearance, position, anglesInContainer, prefabMaxHealth, prefabHealthRatio, displayName, electricCapacity, causesAlarm, aiPriority)\n        {\n            AimingDistance = aimingDistance;\n            SearchingDistance = searchingDistance;\n        }\n\n        /// <summary>\n        /// GetObjectBuilderType\n        /// </summary>\n        /// <returns></returns>\n        public override MyMwcObjectBuilderTypeEnum GetObjectBuilderType()\n        {\n            return MyMwcObjectBuilderTypeEnum.PrefabLargeWeapon;\n        }\n\n        public MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum PrefabLargeWeaponType\n        {\n            get\n            {\n                return (MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum)GetObjectBuilderId().Value;\n            }\n            set\n            {\n                SetObjectBuilderId((int)value);\n            }\n        }\n\n        //  Write this object into message-out\n        internal override void Write(BinaryWriter binaryWriter)\n        {\n            base.Write(binaryWriter);\n\n            // Aiming distance\n            MyMwcLog.IfNetVerbose_AddToLog(\"AimingDistance: \" + AimingDistance);\n            binaryWriter.Write(AimingDistance);\n\n            // Searching distance\n            MyMwcLog.IfNetVerbose_AddToLog(\"SearchingDistance: \" + SearchingDistance);\n            binaryWriter.Write(SearchingDistance);\n        }\n\n        //  Read this object from message-in\n        internal override bool Read(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n        {\n            if (base.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n\n            // Aiming distance\n            float? aimingDistance = MyMwcMessageIn.ReadFloat(binaryReader);\n            if (aimingDistance == null) return NetworkError();\n            AimingDistance = aimingDistance.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"AimingDistance: \" + AimingDistance);\n\n            // Searching distance\n            float? searchingDistance = MyMwcMessageIn.ReadFloat(binaryReader);\n            if (searchingDistance == null) return NetworkError();\n            SearchingDistance = searchingDistance.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"SearchingDistance: \" + SearchingDistance);\n\n            return true;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/ObjectBuilders/SubObjects/Prefabs/MyMwcObjectBuilder_PrefabLight.cs",
    "content": "﻿using System;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWarsMath;\nusing System.IO;\nusing System.Net;\nusing System.Data.SqlClient;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing System.Text;\n\nnamespace MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.Prefabs\n{\n    //  IMPORTANT: Never change numeric values and never delete any enum item. These numbers are referenced e.g. from database.\n    public enum MyMwcObjectBuilder_PrefabLight_TypesEnum : ushort\n    {\n        DEFAULT_LIGHT_0 = 259,\n        P521_A01_LIGHT1 = 260,\n        P521_A02_LIGHT2 = 261,\n        P521_A03_LIGHT3 = 262,\n        P521_A04_LIGHT4 = 263,\n    }\n\n    public enum MyLightEffectTypeEnum : short\n    {\n        NORMAL = 0,//default\n        CONSTANT_FLASHING = 1,// sinus curve\n        RANDOM_FLASHING = 2,// every 100ms change to on//off\n        DISTANT_GLARE = 3, // distant light, that has glare visible from far away\n        DISTANT_GLARE_FLASHING = 4, // the same, but regular flashing\n        DISTANT_GLARE_RANDOM_FLASHING = 5, // the same, but random flashing\n    };\n\n    public enum MyLightPrefabTypeEnum : short\n    {\n        NOT_ASSIGNED = 0,\n        POINT_LIGHT = (1 << 0),\n        SPOT_LIGHT = (1 << 1),\n        HEMISPHERIC_LIGHT = (1 << 2),\n        //addhere more, always add to end in incremental fashion .. dont mess up with prev version saved data\n    };\n    \n    public class MyMwcObjectBuilder_PrefabLight : /*MyMwcObjectBuilder_Prefab*/ MyMwcObjectBuilder_PrefabBase\n    {\n        //\n        public Vector4 PointColor;\n        public Vector3 PointSpecular;\n        public float PointIntensity;\n        public float PointFalloff;\n        public float PointRange;\n        public float PointOffset;\n\n        public float FlashOffset;\n\n        [Obsolete(\"Use prefab light type, remove this!\")]\n        public bool PointEnabled;\n\n        //\n        public Vector4 SpotColor;\n        public Vector3 SpotSpecular;\n        public float SpotIntensity;\n        public float SpotFalloff;\n        public float SpotRange;\n\n\n        public float ShadowsDistance;\n\n\n        [Obsolete(\"Use prefab light type, remove this!\")]\n        public bool SpotEnabled;\n        public float SpotAgle;//0-150\n\n        //MyLightPrefabTypeEnum m_Type;\n        public MyLightEffectTypeEnum Effect;\n\n        public MyLightPrefabTypeEnum LightType = MyLightPrefabTypeEnum.POINT_LIGHT;\n        \n\n        internal MyMwcObjectBuilder_PrefabLight()\n            : base()\n        {\n        }\n\n        /// <summary>\n        /// c-tor\n        /// </summary>\n        /// <param name=\"prefabType\"></param>\n        /// <param name=\"position\"></param>\n        /// <param name=\"anglesInContainer\"></param>\n        public MyMwcObjectBuilder_PrefabLight(MyMwcObjectBuilder_PrefabLight_TypesEnum prefabType, MyMwcObjectBuilder_Prefab_AppearanceEnum appearance, MyMwcVector3Short position, Vector3 anglesInContainer, float? prefabMaxHealth, float prefabHealthRatio, string displayName, float electricCapacity, bool? causesAlarm, int aiPriority)\n            : base((int)prefabType, appearance, position, anglesInContainer, prefabMaxHealth, prefabHealthRatio, displayName, electricCapacity, causesAlarm, aiPriority)\n        {\n            PointFalloff = SpotFalloff = 1.0f;\n            PointIntensity = SpotIntensity = 1.0f;\n            SpotRange = SpotRange = 100.0f;\n            PointColor = SpotColor = new Vector4(1, 1, 1, 1);\n            PointSpecular = SpotSpecular = new Vector3(0, 0, 0);\n            PointOffset = 0;\n            Effect = MyLightEffectTypeEnum.NORMAL;\n            SpotAgle = 1;\n            ShadowsDistance = 200;\n        }\n\n        /// <summary>\n        /// GetObjectBuilderType\n        /// </summary>\n        /// <returns></returns>\n        public override MyMwcObjectBuilderTypeEnum GetObjectBuilderType()\n        {\n            return MyMwcObjectBuilderTypeEnum.PrefabLight;\n        }\n\n        public MyMwcObjectBuilder_PrefabLight_TypesEnum PrefaLightType\n        {\n            get\n            {\n                return (MyMwcObjectBuilder_PrefabLight_TypesEnum) GetObjectBuilderId().Value;\n            }\n            set\n            {\n                SetObjectBuilderId((int)value);\n            }\n        }\n\n        //  Write this object into message-out\n        internal override void Write(BinaryWriter binaryWriter)\n        {\n            base.Write(binaryWriter);\n            //\n            MyMwcLog.IfNetVerbose_AddToLog(\"m_PointColor: \" + PointColor);\n            MyMwcMessageOut.WriteVector4(PointColor, binaryWriter);\n            MyMwcLog.IfNetVerbose_AddToLog(\"m_PointSpecular: \" + PointSpecular);\n            MyMwcMessageOut.WriteVector3(PointSpecular, binaryWriter);\n            MyMwcLog.IfNetVerbose_AddToLog(\"m_PointIntensity: \" + PointIntensity);\n            MyMwcMessageOut.WriteFloat(PointIntensity, binaryWriter);\n            MyMwcLog.IfNetVerbose_AddToLog(\"m_PointFalloff: \" + PointFalloff);\n            MyMwcMessageOut.WriteFloat(PointFalloff, binaryWriter);\n            MyMwcLog.IfNetVerbose_AddToLog(\"m_PointRange: \" + PointRange);\n            MyMwcMessageOut.WriteFloat(PointRange, binaryWriter);\n            MyMwcLog.IfNetVerbose_AddToLog(\"Point offset: \" + PointOffset);\n            MyMwcMessageOut.WriteFloat(PointOffset, binaryWriter);\n\n            MyMwcLog.IfNetVerbose_AddToLog(\"m_SpotColor: \" + SpotColor);\n            MyMwcMessageOut.WriteVector4(SpotColor, binaryWriter);\n            MyMwcLog.IfNetVerbose_AddToLog(\"m_SpotSpecular: \" + SpotSpecular);\n            MyMwcMessageOut.WriteVector3(SpotSpecular, binaryWriter);\n            MyMwcLog.IfNetVerbose_AddToLog(\"m_SpotIntensity: \" + SpotIntensity);\n            MyMwcMessageOut.WriteFloat(SpotIntensity, binaryWriter);\n            MyMwcLog.IfNetVerbose_AddToLog(\"m_SpotFalloff: \" + SpotFalloff);\n            MyMwcMessageOut.WriteFloat(SpotFalloff, binaryWriter);\n            MyMwcLog.IfNetVerbose_AddToLog(\"m_SpotRange: \" + SpotRange);\n            MyMwcMessageOut.WriteFloat(SpotRange, binaryWriter);\n            MyMwcLog.IfNetVerbose_AddToLog(\"m_SpotAgle: \" + SpotAgle);\n            MyMwcMessageOut.WriteFloat(SpotAgle, binaryWriter);\n\n            // m_Effect\n            MyMwcLog.IfNetVerbose_AddToLog(\"Effect: \" + Effect);\n            MyMwcMessageOut.WriteInt16((short)Effect, binaryWriter);\n\n            MyMwcLog.IfNetVerbose_AddToLog(\"LightType: \" + LightType);\n            MyMwcMessageOut.WriteInt16((short)LightType, binaryWriter);\n\n            // FlashOffset\n            MyMwcLog.IfNetVerbose_AddToLog(\"FlashOffset: \" + FlashOffset);\n            MyMwcMessageOut.WriteFloat(FlashOffset, binaryWriter);    \n\n            \n            //shadows\n            MyMwcLog.IfNetVerbose_AddToLog(\"ShadowsDistance: \" + ShadowsDistance);\n            MyMwcMessageOut.WriteFloat(ShadowsDistance, binaryWriter);   \n            \n        }\n\n        //  Read this object from message-in\n        internal override bool Read(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n        {\n            if (base.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n\n            //////////////////////////////////// POINT PROPERTIES ////////////////////////////////////\n            Vector4 ?pPC = MyMwcMessageIn.ReadVector4FloatEx(binaryReader, senderEndPoint);\n            if (pPC == null) return NetworkError();\n            PointColor = pPC.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"m_PointColor: \" + PointColor);\n            //\n\n            Vector3 ? pPS = MyMwcMessageIn.ReadVector3FloatEx(binaryReader, senderEndPoint);\n            if (pPS == null) return NetworkError();\n            PointSpecular = pPS.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"m_PointSpecular: \" + PointSpecular);\n\n            //\n            float? pPI = MyMwcMessageIn.ReadFloat(binaryReader);\n            if (pPI == null) return NetworkError();\n            PointIntensity = pPI.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"m_PointIntensity: \" + PointIntensity);\n\n            //\n            float? pPF = MyMwcMessageIn.ReadFloat(binaryReader);\n            if (pPF == null) return NetworkError();\n            PointFalloff = pPF.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"m_PointFalloff: \" + PointFalloff);\n\n            //\n            float? pPR = MyMwcMessageIn.ReadFloat(binaryReader);\n            if (pPR == null) return NetworkError();\n            PointRange = pPR.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"m_PointRange: \" + PointRange);\n\n            // Point offset\n            float? offset = MyMwcMessageIn.ReadFloat(binaryReader);\n            if (offset == null) return NetworkError();\n            PointOffset = offset.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"Point offset: \" + PointOffset);\n\n\n            //////////////////////////////////// SPOT PROPERTIES ////////////////////////////////////\n            Vector4? pSC = MyMwcMessageIn.ReadVector4FloatEx(binaryReader, senderEndPoint);\n            if (pSC == null) return NetworkError();\n            SpotColor = pSC.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"m_SpotColor: \" + SpotColor);\n            //\n\n            Vector3? pSS = MyMwcMessageIn.ReadVector3FloatEx(binaryReader, senderEndPoint);\n            if (pSS == null) return NetworkError();\n            SpotSpecular = pSS.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"m_SpotSpecular: \" + SpotSpecular);\n\n\n            float? pSI = MyMwcMessageIn.ReadFloat(binaryReader);\n            if (pSI == null) return NetworkError();\n            SpotIntensity = pSI.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"m_SpotIntensity: \" + SpotIntensity);\n\n            //\n            float? pSF = MyMwcMessageIn.ReadFloat(binaryReader);\n            if (pSF == null) return NetworkError();\n            SpotFalloff = pSF.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"m_SpotFalloff: \" + SpotFalloff);\n\n            //\n            float? pSR = MyMwcMessageIn.ReadFloat(binaryReader);\n            if (pSR == null) return NetworkError();\n            SpotRange = pSR.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"m_SpotRange: \" + SpotRange);\n\n            //\n            float? pSA = MyMwcMessageIn.ReadFloat(binaryReader);\n            if (pSA == null) return NetworkError();\n            SpotAgle = pSA.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"m_SpotAgle: \" + SpotAgle);\n\n            // m_Effect\n            short? tEffect = MyMwcMessageIn.ReadInt16Ex(binaryReader, senderEndPoint);\n            if (tEffect == null) return NetworkError();\n            Effect = (MyLightEffectTypeEnum)tEffect.Value;\n\n            // light type\n            short? tLightType = MyMwcMessageIn.ReadInt16Ex(binaryReader, senderEndPoint);\n            if (tLightType == null) return NetworkError();\n            LightType = (MyLightPrefabTypeEnum) tLightType.Value;\n\n            // FlashOffset\n            float? flashOffset = MyMwcMessageIn.ReadFloat(binaryReader);\n            if (flashOffset == null) return NetworkError();\n            FlashOffset = flashOffset.Value;\n\n            \n            // ShadowsEnabled\n            float? shadowsDistance = MyMwcMessageIn.ReadFloat(binaryReader);\n            if (shadowsDistance == null) return NetworkError();\n            ShadowsDistance = shadowsDistance.Value;\n            \n\n            return true;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/ObjectBuilders/SubObjects/Prefabs/MyMwcObjectBuilder_PrefabParticles.cs",
    "content": "﻿using System;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWarsMath;\nusing System.IO;\nusing System.Net;\nusing System.Data.SqlClient;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.Networking;\n\nnamespace MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.Prefabs\n{\n    //  IMPORTANT: Never change numeric values and never delete any enum item. These numbers are referenced e.g. from database.\n    public enum MyMwcObjectBuilder_PrefabParticles_TypesEnum : ushort\n    {\n        DEFAULT_PARTICLE_PREFAB_0 = 264,\n        P551_A01_PARTICLES = 265,\n        P551_B01_PARTICLES = 266,\n        P551_C01_PARTICLES = 267,\n        P551_D01_PARTICLES = 268,\n    }\n\n    public class MyMwcObjectBuilder_PrefabParticles : /*MyMwcObjectBuilder_Prefab*/ MyMwcObjectBuilder_PrefabBase\n    {\n        internal MyMwcObjectBuilder_PrefabParticles()\n            : base()\n        {\n        }\n\n        public MyMwcObjectBuilder_PrefabParticles(MyMwcObjectBuilder_PrefabParticles_TypesEnum prefabType, MyMwcObjectBuilder_Prefab_AppearanceEnum appearance, MyMwcVector3Short position, Vector3 anglesInContainer, float? prefabMaxHealth, float prefabHealthRatio, string displayName, float electricCapacity, bool? causesAlarm, int aiPriority)\n            : base((int)prefabType, appearance, position, anglesInContainer, prefabMaxHealth, prefabHealthRatio, displayName, electricCapacity, causesAlarm, aiPriority)\n        {\n        }\n\n        /// <summary>\n        /// GetObjectBuilderType\n        /// </summary>\n        /// <returns></returns>\n        public override MyMwcObjectBuilderTypeEnum GetObjectBuilderType()\n        {\n            return MyMwcObjectBuilderTypeEnum.PrefabParticles;\n        }\n\n        public MyMwcObjectBuilder_PrefabParticles_TypesEnum PrefabParticleType\n        {\n            get\n            {\n                return (MyMwcObjectBuilder_PrefabParticles_TypesEnum) GetObjectBuilderId().Value;\n            }\n            set\n            {\n                SetObjectBuilderId((int)value);\n            }\n        }\n\n        //  Write this object into message-out\n        internal override void Write(BinaryWriter binaryWriter)\n        {\n            base.Write(binaryWriter);\n        }\n\n        //  Read this object from message-in\n        internal override bool Read(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n        {\n            if (base.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n            return true;\n        }\n    }\n}\n\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/ObjectBuilders/SubObjects/Prefabs/MyMwcObjectBuilder_PrefabScanner.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWarsMath;\nusing System.IO;\nusing System.Net;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.Networking;\n\nnamespace MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.Prefabs\n{\n    //  IMPORTANT: Never change numeric values and never delete any enum item. These numbers are referenced e.g. from database.\n    public enum MyMwcObjectBuilder_PrefabScanner_TypesEnum : ushort\n    {\n        Plane = 1,\n        Rays = 2,\n    }\n\n    public class MyMwcObjectBuilder_PrefabScanner : MyMwcObjectBuilder_PrefabBase\n    {\n        public Vector3 Size { get; set; }\n        public Color Color { get; set; }\n        public float ScanningSpeed { get; set; }        \n\n        internal MyMwcObjectBuilder_PrefabScanner()\n            : base()\n        {\n            Size = new Vector3(20f, 20f, 20f);\n            Color = new Color(255, 0, 0, 255);\n            ScanningSpeed = 10f;            \n        }\n\n        public MyMwcObjectBuilder_PrefabScanner(MyMwcObjectBuilder_PrefabScanner_TypesEnum prefabType, MyMwcObjectBuilder_Prefab_AppearanceEnum appearance, MyMwcVector3Short position, Vector3 anglesInContainer, float? prefabMaxHealth, float prefabHealthRatio, string displayName, float electricCapacity, bool? causesAlarm, int aiPriority, Vector3 size, Color color, float scanningSpeed/*, bool on*/)\n            : base((int)prefabType, appearance, position, anglesInContainer, prefabMaxHealth, prefabHealthRatio, displayName, electricCapacity, causesAlarm, aiPriority)\n        {\n            Size = size;\n            Color = color;\n            ScanningSpeed = scanningSpeed;            \n        }\n\n        /// <summary>\n        /// GetObjectBuilderType\n        /// </summary>\n        /// <returns></returns>\n        public override MyMwcObjectBuilderTypeEnum GetObjectBuilderType()\n        {\n            return MyMwcObjectBuilderTypeEnum.PrefabScanner;\n        }\n\n        public MyMwcObjectBuilder_PrefabScanner_TypesEnum PrefabScannerType\n        {\n            get\n            {\n                return (MyMwcObjectBuilder_PrefabScanner_TypesEnum)GetObjectBuilderId().Value;\n            }\n            set\n            {\n                SetObjectBuilderId((int)value);\n            }\n        }\n\n        //  Write this object into message-out\n        internal override void Write(BinaryWriter binaryWriter)\n        {\n            base.Write(binaryWriter);\n\n            //  Color\n            MyMwcLog.IfNetVerbose_AddToLog(\"Color: \" + Color);\n            MyMwcMessageOut.WriteColor(Color, binaryWriter);\n\n            //  Size\n            MyMwcLog.IfNetVerbose_AddToLog(\"Size: \" + Size);\n            MyMwcMessageOut.WriteVector3(Size, binaryWriter);\n\n            //  Scanning speed\n            MyMwcLog.IfNetVerbose_AddToLog(\"ScanningSpeed: \" + ScanningSpeed);\n            MyMwcMessageOut.WriteFloat(ScanningSpeed, binaryWriter);\n\n            ////  On\n            //MyMwcLog.IfNetVerbose_AddToLog(\"On: \" + On);\n            //MyMwcMessageOut.WriteBool(On, binaryWriter);\n        }\n\n        //  Read this object from message-in\n        internal override bool Read(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n        {\n            if (base.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n\n            //  Color\n            Color? color = MyMwcMessageIn.ReadColorEx(binaryReader, senderEndPoint);\n            if (color == null) return NetworkError();\n            Color = color.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"Color: \" + Color);\n\n            //  Size\n            Vector3? size = MyMwcMessageIn.ReadVector3FloatEx(binaryReader, senderEndPoint);\n            if (size == null) return NetworkError();\n            Size = size.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"Size: \" + Size);\n\n            //  Scanning speed\n            float? scanningSpeed = MyMwcMessageIn.ReadFloat(binaryReader);\n            if (scanningSpeed == null) return NetworkError();\n            ScanningSpeed = scanningSpeed.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"ScanningSpeed: \" + ScanningSpeed);\n\n            ////  On\n            //bool? on = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n            //if (on == null) return NetworkError();\n            //On = on.Value;\n            //MyMwcLog.IfNetVerbose_AddToLog(\"On: \" + On);\n\n            return true;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/ObjectBuilders/SubObjects/Prefabs/MyMwcObjectBuilder_PrefabSecurityControlHUB.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Net;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils.Utils;\n\nnamespace MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.Prefabs\n{\n    public enum MyMwcObjectBuilder_PrefabSecurityControlHUB_TypesEnum : ushort\n    {\n        DEFAULT = 1,\n        P541_SCREEN_A = 2,\n        P541_SCREEN_B = 3,\n        P541_TERMINAL_A = 4,\n    }\n\n    public class MyMwcObjectBuilder_PrefabSecurityControlHUB : MyMwcObjectBuilder_PrefabBase\n    {\n        public List<uint> ConnectedEntities { get; set; }\n\n        internal MyMwcObjectBuilder_PrefabSecurityControlHUB()\n            : base()\n        {\n            ConnectedEntities = new List<uint>();\n        }\n\n        public MyMwcObjectBuilder_PrefabSecurityControlHUB(MyMwcObjectBuilder_PrefabHangar_TypesEnum prefabType, MyMwcObjectBuilder_Prefab_AppearanceEnum appearance, MyMwcVector3Short position, Vector3 anglesInContainer, float? prefabMaxHealth, float prefabHealthRatio, string displayName, float electricCapacity, bool? causesAlarm, List<uint> connectedEntities, int aiPriority)\n            : base((int)prefabType, appearance, position, anglesInContainer, prefabMaxHealth, prefabHealthRatio, displayName, electricCapacity, causesAlarm, aiPriority, true)\n        {\n            ConnectedEntities = connectedEntities;\n        }\n\n        public override void RemapEntityIds(IMyEntityIdRemapContext remapContext)\n        {\n            base.RemapEntityIds(remapContext);\n            for (int i = 0; i < ConnectedEntities.Count; i++)\n            {\n                ConnectedEntities[i] = remapContext.RemapEntityId(ConnectedEntities[i]).Value;\n            }\n        }\n\n        /// <summary>\n        /// GetObjectBuilderType\n        /// </summary>\n        /// <returns></returns>\n        public override MyMwcObjectBuilderTypeEnum GetObjectBuilderType()\n        {\n            return MyMwcObjectBuilderTypeEnum.PrefabSecurityControlHUB;\n        }\n\n        public MyMwcObjectBuilder_PrefabSecurityControlHUB_TypesEnum PrefabSecurityControlHUBType\n        {\n            get\n            {\n                return (MyMwcObjectBuilder_PrefabSecurityControlHUB_TypesEnum)GetObjectBuilderId().Value;\n            }\n            set\n            {\n                SetObjectBuilderId((int)value);\n            }\n        }\n\n        //  Write this object into message-out\n        internal override void Write(BinaryWriter binaryWriter)\n        {\n            base.Write(binaryWriter);\n\n            //  Connected entities\n            int countConnectedEntitiesObjects = ConnectedEntities == null ? 0 : ConnectedEntities.Count;\n            MyMwcLog.IfNetVerbose_AddToLog(\"CountConnecteEntities: \" + countConnectedEntitiesObjects);\n            MyMwcMessageOut.WriteInt32(countConnectedEntitiesObjects, binaryWriter);\n            for (int i = 0; i < countConnectedEntitiesObjects; i++)\n            {\n                MyMwcMessageOut.WriteUInt32(ConnectedEntities[i], binaryWriter);\n            }\n        }\n\n        //  Read this object from message-in\n        internal override bool Read(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n        {\n            if (base.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n\n            //  Connected entities\n            int? countConnectedEntitiesObjects = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);\n            if (countConnectedEntitiesObjects == null) return NetworkError();\n            MyMwcLog.IfNetVerbose_AddToLog(\"CountConnectedEntities: \" + countConnectedEntitiesObjects);\n            ConnectedEntities = new List<uint>(countConnectedEntitiesObjects.Value);\n            for (int i = 0; i < countConnectedEntitiesObjects; i++)\n            {\n                // conected entity id id has value - read the value\n                uint? conecteEntityId = MyMwcMessageIn.ReadUInt32Ex(binaryReader, senderEndPoint);\n                if (!conecteEntityId.HasValue) return NetworkError();\n                ConnectedEntities.Add(conecteEntityId.Value);\n            }\n\n            return true;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/ObjectBuilders/SubObjects/Prefabs/MyMwcObjectBuilder_PrefabSound.cs",
    "content": "﻿using System.IO;\nusing System.Net;\nusing System.Data.SqlClient;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWarsMath;\n\nnamespace MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.Prefabs\n{\n    //  IMPORTANT: Never change numeric values and never delete any enum item. These numbers are referenced e.g. from database.\n    public enum MyMwcObjectBuilder_PrefabSound_TypesEnum : ushort\n    {\n        DEFAULT_SOUND_PREFAB_0 = 269,\n        P561_A01_SOUND = 270,\n        P561_B01_SOUND = 271,\n        P561_C01_SOUND = 272,\n        P561_D01_SOUND = 273,\n        MOTHERSHIP_SOUND = 535,\n        MADELINE_MOTHERSHIP_SOUND = 536,\n    }\n\n    public class MyMwcObjectBuilder_PrefabSound : /*MyMwcObjectBuilder_Prefab*/ MyMwcObjectBuilder_PrefabBase\n    {\n        public enum MySoundEffectTypeEnum\n        {\n            NORMAL = 0,//default\n            //todo\n        };\n\n        internal MyMwcObjectBuilder_PrefabSound()\n            : base()\n        {\n        }\n\n        public MyMwcObjectBuilder_PrefabSound(MyMwcObjectBuilder_PrefabSound_TypesEnum prefabType, MyMwcObjectBuilder_Prefab_AppearanceEnum appearance, MyMwcVector3Short position, Vector3 anglesInContainer, float? prefabMaxHealth, float prefabHealthRatio, string displayName, float electricCapacity, bool? causesAlarm, int aiPriority)\n            : base((int)prefabType, appearance, position, anglesInContainer, prefabMaxHealth, prefabHealthRatio, displayName, electricCapacity, causesAlarm, aiPriority)\n        {\n            \n        }\n\n\n        /// <summary>\n        /// GetObjectBuilderType\n        /// </summary>\n        /// <returns></returns>\n        public override MyMwcObjectBuilderTypeEnum GetObjectBuilderType()\n        {\n            return MyMwcObjectBuilderTypeEnum.PrefabSound;\n        }\n\n        public MyMwcObjectBuilder_PrefabSound_TypesEnum PrefabSoundType\n        {\n            get\n            {\n                return (MyMwcObjectBuilder_PrefabSound_TypesEnum) GetObjectBuilderId().Value;\n            }\n            set\n            {\n                SetObjectBuilderId((int)value);\n            }\n        }\n\n        //  Write this object into message-out\n        internal override void Write(BinaryWriter binaryWriter)\n        {\n            base.Write(binaryWriter);\n        }\n\n        //  Read this object from message-in\n        internal override bool Read(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n        {\n            if (base.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n            return true;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/ObjectBuilders/SubObjects/SmallShipTools/MyMwcObjectBuilder_SmallShip_Ammo.cs",
    "content": "﻿using System.IO;\nusing System.Net;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing System;\n\nnamespace MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools\n{\n    //  IMPORTANT: Never change numeric values and never delete any enum item. These numbers are referenced e.g. from database.\n    public enum MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum : ushort\n    {\n        Automatic_Rifle_With_Silencer_High_Speed = 1,\n        Automatic_Rifle_With_Silencer_SAPHEI = 2,\n        Automatic_Rifle_With_Silencer_BioChem = 3,\n        Sniper_High_Speed = 4,\n        Sniper_SAPHEI = 5,\n        Sniper_BioChem = 6,\n        Autocannon_Basic = 7,\n        Autocannon_High_Speed = 8,\n        Autocannon_Armor_Piercing_Incendiary = 9,\n        Autocannon_SAPHEI = 10,\n        Autocannon_BioChem = 11,\n        Machine_Gun_Basic = 12,\n        Machine_Gun_High_Speed = 13,\n        Machine_Gun_Armor_Piercing_Incendiary = 14,\n        Machine_Gun_SAPHEI = 15,\n        Machine_Gun_BioChem = 16,\n        Shotgun_Basic = 17,\n        Shotgun_High_Speed = 18,\n        Shotgun_Explosive = 19,\n        Shotgun_Armor_Piercing = 20,\n        Cannon_Basic = 21,\n        Cannon_High_Speed = 22,\n        Cannon_Armor_Piercing_Incendiary = 23,\n        Cannon_SAPHEI = 24,\n        Cannon_Proximity_Explosive = 25,\n        Cannon_Tunnel_Buster = 26,\n        Universal_Launcher_Sphere_Explosive = 27,\n        Universal_Launcher_Directional_Explosive = 28,\n        Universal_Launcher_Time_Bomb = 29,\n        Universal_Launcher_Remote_Bomb = 30,\n        Universal_Launcher_Asteroid_Killer = 31,\n        Universal_Launcher_Mine_Smart = 32,\n        Universal_Launcher_Mine_Basic = 33,\n        Universal_Launcher_Gravity_Bomb = 34,\n        Universal_Launcher_Hologram = 35,\n        Universal_Launcher_Decoy_Flare = 36,\n        Universal_Launcher_Flash_Bomb = 37,\n        Universal_Launcher_Illuminating_Shell = 38,\n        Universal_Launcher_Smoke_Bomb = 39,\n        Universal_Launcher_Remote_Camera = 40,\n        Guided_Missile_Visual_Detection = 41,\n        Guided_Missile_Engine_Detection = 42,\n        Guided_Missile_Radar_Detection = 43,\n        Missile_Basic = 44,\n        Universal_Launcher_Mine_BioChem = 45,\n        Missile_BioChem = 46,\n        Cannon_BioChem = 47,\n        Autocannon_EMP = 48,\n        Sniper_EMP = 49,\n        Machine_Gun_EMP = 50,\n        Missile_EMP = 51,\n        Cannon_EMP = 52,\n        Universal_Launcher_EMP_Bomb = 53,\n    }\n\n    public class MyMwcObjectBuilder_SmallShip_Ammo : MyMwcObjectBuilder_SubObjectBase\n    {\n        public MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum AmmoType;\n\n        internal MyMwcObjectBuilder_SmallShip_Ammo()\n            : base()\n        {\n        }\n\n        public MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum ammoType)\n        {\n            AmmoType = ammoType;\n        }\n\n        public override MyMwcObjectBuilderTypeEnum GetObjectBuilderType()\n        {\n            return MyMwcObjectBuilderTypeEnum.SmallShip_Ammo;\n        }\n\n        public override int? GetObjectBuilderId()\n        {\n            return (int)AmmoType;\n        }\n\n        internal override void SetObjectBuilderIdInternal(int? objectBuilderId)\n        {\n            AmmoType = (MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum)Convert.ToUInt16(objectBuilderId);\n        }\n\n        //  Write this object into message-out\n        internal override void Write(BinaryWriter binaryWriter)\n        {\n            base.Write(binaryWriter);\n\n            //  Ammo Type\n            MyMwcLog.IfNetVerbose_AddToLog(\"AmmoType: \" + AmmoType);\n            MyMwcMessageOut.WriteObjectBuilderSmallShipAmmoTypesEnum(AmmoType, binaryWriter);\n        }\n\n        //  Read this object from message-in\n        internal override bool Read(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n        {\n            if (base.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n\n            //  Ammo Type\n            MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum? ammoType = MyMwcMessageIn.ReadObjectBuilderSmallShipAmmoTypesEnumEx(binaryReader, senderEndPoint);\n            if (ammoType == null) return NetworkError();\n            AmmoType = ammoType.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"AmmoType: \" + AmmoType);\n\n            return true;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/ObjectBuilders/SubObjects/SmallShipTools/MyMwcObjectBuilder_SmallShip_Armor.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.IO;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing System.Net;\n\nnamespace MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools\n{\n    //  IMPORTANT: Never change numeric values and never delete any enum item. These numbers are referenced e.g. from database.\n    public enum MyMwcObjectBuilder_SmallShip_Armor_TypesEnum : ushort\n    {\n        Basic = 1,\n        Advanced = 2,\n        High_Endurance = 3,\n        Solar_Wind = 4        \n    }\n\n    public class MyMwcObjectBuilder_SmallShip_Armor : MyMwcObjectBuilder_SubObjectBase\n    {\n        public MyMwcObjectBuilder_SmallShip_Armor_TypesEnum ArmorType;\n\n        internal MyMwcObjectBuilder_SmallShip_Armor()\n            : base()\n        {\n        }\n\n        public MyMwcObjectBuilder_SmallShip_Armor(MyMwcObjectBuilder_SmallShip_Armor_TypesEnum armorType)\n        {\n            ArmorType = armorType;\n        }\n\n        public override MyMwcObjectBuilderTypeEnum GetObjectBuilderType()\n        {\n            return MyMwcObjectBuilderTypeEnum.SmallShip_Armor;\n        }\n\n        public override int? GetObjectBuilderId()\n        {\n            return (int)ArmorType;\n        }\n\n        internal override void SetObjectBuilderIdInternal(int? objectBuilderId)\n        {\n            ArmorType = (MyMwcObjectBuilder_SmallShip_Armor_TypesEnum)Convert.ToUInt16(objectBuilderId);\n        }\n\n        //  Write this object into message-out\n        internal override void Write(BinaryWriter binaryWriter)\n        {\n            base.Write(binaryWriter);\n\n            //  Armor Type\n            MyMwcLog.IfNetVerbose_AddToLog(\"ArmorType: \" + ArmorType);\n            MyMwcMessageOut.WriteObjectBuilderSmallShipArmorTypesEnum(ArmorType, binaryWriter);\n        }\n\n        //  Read this object from message-in\n        internal override bool Read(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n        {\n            if (base.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n\n            //  Armor Type\n            MyMwcObjectBuilder_SmallShip_Armor_TypesEnum? armorType = MyMwcMessageIn.ReadObjectBuilderSmallShipArmorTypesEnumEx(binaryReader, senderEndPoint);\n            if (armorType == null) return NetworkError();\n            ArmorType = armorType.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"ArmorType: \" + ArmorType);\n\n            return true;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/ObjectBuilders/SubObjects/SmallShipTools/MyMwcObjectBuilder_SmallShip_AssignmentOfAmmo.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing System.IO;\nusing System.Net;\nusing System.Data.SqlClient;\n\nnamespace MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools\n{\n    //  IMPORTANT: Never change numeric values and never delete any enum item. These numbers are referenced e.g. from database.\n    public enum MyMwcObjectBuilder_FireKeyEnum : byte\n    {\n        Primary = 1,\n        Secondary = 2,\n        Third = 3,\n        Fourth = 4,\n        Fifth = 5,\n        HologramFront = 6,\n        HologramBack = 7,\n        BasicMineFront = 8,\n        BasicMineBack = 9,\n        SmartMineFront = 10,\n        SmartMineBack = 11,\n        FlashBombFront = 12,\n        FlashBombBack = 13,\n        DecoyFlareFront = 14,\n        DecoyFlareBack = 15,\n        SmokeBombFront = 16,\n        SmokeBombBack = 17,\n    }\n\n    //  IMPORTANT: Never change numeric values and never delete any enum item. These numbers are referenced e.g. from database.\n    public enum MyMwcObjectBuilder_AmmoGroupEnum : byte\n    {\n        Bullet = 1,\n        Missile = 2,\n        Cannon = 3,\n        UniversalLauncherFront = 4,\n        UniversalLauncherBack = 5\n    }\n\n    public class MyMwcObjectBuilder_AssignmentOfAmmo : MyMwcObjectBuilder_SubObjectBase\n    {\n        public MyMwcObjectBuilder_FireKeyEnum FireKey;\n        public MyMwcObjectBuilder_AmmoGroupEnum Group;\n        public MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum AmmoType;\n\n        internal MyMwcObjectBuilder_AssignmentOfAmmo()\n            : base()\n        {\n        }\n\n        public MyMwcObjectBuilder_AssignmentOfAmmo(MyMwcObjectBuilder_FireKeyEnum fireKey, \n            MyMwcObjectBuilder_AmmoGroupEnum group, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum ammoType)\n        {\n            FireKey = fireKey;\n            Group = group;\n            AmmoType = ammoType;\n        }\n\n        public override MyMwcObjectBuilderTypeEnum GetObjectBuilderType()\n        {\n            return MyMwcObjectBuilderTypeEnum.SmallShip_AssignmentOfAmmo;\n        }\n\n        public override int? GetObjectBuilderId()\n        {\n            return (int)AmmoType;\n        }\n\n        internal override void SetObjectBuilderIdInternal(int? objectBuilderId)\n        {\n            AmmoType = (MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum)Convert.ToUInt16(objectBuilderId);\n        }\n\n        //  Write this object into message-out\n        internal override void Write(BinaryWriter binaryWriter)\n        {\n            base.Write(binaryWriter);\n\n            //  FireKey\n            MyMwcLog.IfNetVerbose_AddToLog(\"FireKey: \" + FireKey);\n            MyMwcMessageOut.WriteObjectBuilderSmallShipAssignmentOfAmmoFireKeyEnum(FireKey, binaryWriter);\n\n            //  Group\n            MyMwcLog.IfNetVerbose_AddToLog(\"Group: \" + Group);\n            MyMwcMessageOut.WriteObjectBuilderSmallShipAssignmentOfAmmoGroupEnum(Group, binaryWriter);\n\n            //  Ammo Type\n            MyMwcLog.IfNetVerbose_AddToLog(\"AmmoType: \" + AmmoType);\n            MyMwcMessageOut.WriteObjectBuilderSmallShipAmmoTypesEnum(AmmoType, binaryWriter);\n        }\n\n        //  Read this object from message-in\n        internal override bool Read(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n        {\n            if (base.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n\n            //  FireKey\n            MyMwcObjectBuilder_FireKeyEnum? fireKey = MyMwcMessageIn.ReadObjectBuilderSmallShipAssignmentOfAmmoFireKeyEnumEx(binaryReader, senderEndPoint);\n            if (fireKey == null) return NetworkError();\n            FireKey = fireKey.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"FireKey: \" + FireKey);\n\n            //  FireKey\n            MyMwcObjectBuilder_AmmoGroupEnum? group = MyMwcMessageIn.ReadObjectBuilderSmallShipAssignmentOfAmmoGroupEnumEx(binaryReader, senderEndPoint);\n            if (group == null) return NetworkError();\n            Group = group.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"Group: \" + Group);\n\n            //  Ammo Type\n            MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum? ammoType = MyMwcMessageIn.ReadObjectBuilderSmallShipAmmoTypesEnumEx(binaryReader, senderEndPoint);\n            if (ammoType == null) return NetworkError();\n            AmmoType = ammoType.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"AmmoType: \" + AmmoType);\n\n            return true;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/ObjectBuilders/SubObjects/SmallShipTools/MyMwcObjectBuilder_SmallShip_Engine.cs",
    "content": "﻿using System;\nusing System.IO;\nusing System.Net;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.Networking;\n\nnamespace MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools\n{\n    //  IMPORTANT: Never change numeric values and never delete any enum item. These numbers are referenced e.g. from database.\n    public enum MyMwcObjectBuilder_SmallShip_Engine_TypesEnum : ushort\n    {\n        Nuclear_1 = 1,\n        Nuclear_2 = 2,\n        Nuclear_3 = 3,\n        Nuclear_4 = 4,\n        Nuclear_5 = 5,\n        Chemical_1 = 6,\n        Chemical_2 = 7,\n        Chemical_3 = 8,\n        Chemical_4 = 9,\n        Chemical_5 = 10,\n        PowerCells_1 = 11,\n        PowerCells_2 = 12,\n        PowerCells_3 = 13,\n        PowerCells_4 = 14,\n        PowerCells_5 = 15\n    }\n\n    public class MyMwcObjectBuilder_SmallShip_Engine : MyMwcObjectBuilder_SubObjectBase\n    {\n        public MyMwcObjectBuilder_SmallShip_Engine_TypesEnum EngineType;\n\n        internal MyMwcObjectBuilder_SmallShip_Engine()\n            : base()\n        {\n        }\n\n        public MyMwcObjectBuilder_SmallShip_Engine(MyMwcObjectBuilder_SmallShip_Engine_TypesEnum engineType)\n        {\n            EngineType = engineType;\n        }\n\n        public override MyMwcObjectBuilderTypeEnum GetObjectBuilderType()\n        {\n            return MyMwcObjectBuilderTypeEnum.SmallShip_Engine;\n        }\n\n        public override int? GetObjectBuilderId()\n        {\n            return (int)EngineType;\n        }\n\n        internal override void SetObjectBuilderIdInternal(int? objectBuilderId)\n        {\n            EngineType = (MyMwcObjectBuilder_SmallShip_Engine_TypesEnum)Convert.ToUInt16(objectBuilderId);\n        }\n\n        //  Write this object into message-out\n        internal override void Write(BinaryWriter binaryWriter)\n        {\n            base.Write(binaryWriter);\n\n            //  Engine Type\n            MyMwcLog.IfNetVerbose_AddToLog(\"EngineType: \" + EngineType);\n            MyMwcMessageOut.WriteObjectBuilderSmallShipEngineTypesEnum(EngineType, binaryWriter);\n        }\n\n        //  Read this object from message-in\n        internal override bool Read(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n        {\n            if (base.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n\n            //  Engine Type\n            MyMwcObjectBuilder_SmallShip_Engine_TypesEnum? engineType = MyMwcMessageIn.ReadObjectBuilderSmallShipEngineTypesEnumEx(binaryReader, senderEndPoint);\n            if (engineType == null) return NetworkError();\n            EngineType = engineType.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"EngineType: \" + EngineType);\n\n            return true;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/ObjectBuilders/SubObjects/SmallShipTools/MyMwcObjectBuilder_SmallShip_HackingTool.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.IO;\nusing System.Net;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.Networking;\n\nnamespace MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools\n{\n    //  IMPORTANT: Never change numeric values and never delete any enum item. These numbers are referenced e.g. from database.\n    public enum MyMwcObjectBuilder_SmallShip_HackingTool_TypesEnum : ushort\n    {\n        Level_1 = 1,\n        Level_2 = 2,\n        Level_3 = 3,\n        Level_4 = 4,\n        Level_5 = 5,\n    }\n\n    public class MyMwcObjectBuilder_SmallShip_HackingTool : MyMwcObjectBuilder_SubObjectBase\n    {\n        public MyMwcObjectBuilder_SmallShip_HackingTool_TypesEnum HackingToolType;\n\n        internal MyMwcObjectBuilder_SmallShip_HackingTool()\n            : base()\n        {\n        }\n\n        public MyMwcObjectBuilder_SmallShip_HackingTool(MyMwcObjectBuilder_SmallShip_HackingTool_TypesEnum hackingToolType)\n        {\n            HackingToolType = hackingToolType;\n        }\n\n        public override MyMwcObjectBuilderTypeEnum GetObjectBuilderType()\n        {\n            return MyMwcObjectBuilderTypeEnum.SmallShip_HackingTool;\n        }\n\n        public override int? GetObjectBuilderId()\n        {\n            return (int)HackingToolType;\n        }\n\n        internal override void SetObjectBuilderIdInternal(int? objectBuilderId)\n        {\n            HackingToolType = (MyMwcObjectBuilder_SmallShip_HackingTool_TypesEnum)Convert.ToUInt16(objectBuilderId);\n        }\n\n        //  Write this object into message-out\n        internal override void Write(BinaryWriter binaryWriter)\n        {\n            base.Write(binaryWriter);\n\n            //  HackingTool Type\n            MyMwcLog.IfNetVerbose_AddToLog(\"HackingToolType: \" + HackingToolType);\n            MyMwcMessageOut.WriteObjectBuilderSmallShipHackingToolTypesEnum(HackingToolType, binaryWriter);\n        }\n\n        //  Read this object from message-in\n        internal override bool Read(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n        {\n            if (base.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n\n            //  HackingTool Type\n            MyMwcObjectBuilder_SmallShip_HackingTool_TypesEnum? hackingToolType = MyMwcMessageIn.ReadObjectBuilderSmallShipHackingToolTypesEnumEx(binaryReader, senderEndPoint);\n            if (hackingToolType == null) return NetworkError();\n            HackingToolType = hackingToolType.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"HackingToolType: \" + HackingToolType);\n\n            return true;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/ObjectBuilders/SubObjects/SmallShipTools/MyMwcObjectBuilder_SmallShip_Radar.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.IO;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing System.Net;\n\nnamespace MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools\n{    \n    //  IMPORTANT: Never change numeric values and never delete any enum item. These numbers are referenced e.g. from database.\n    public enum MyMwcObjectBuilder_SmallShip_Radar_TypesEnum : ushort\n    { \n        Radar_1 = 1,\n        Radar_2 = 2,\n        Radar_3 = 3,\n    }\n\n    public class MyMwcObjectBuilder_SmallShip_Radar : MyMwcObjectBuilder_SubObjectBase\n    {\n        public MyMwcObjectBuilder_SmallShip_Radar_TypesEnum RadarType;\n        //public float RadarRange;        // in meters\n\n        internal MyMwcObjectBuilder_SmallShip_Radar()\n            : base()\n        {\n        }\n\n        public MyMwcObjectBuilder_SmallShip_Radar(MyMwcObjectBuilder_SmallShip_Radar_TypesEnum radarType/*, float radarRange*/)\n        {\n            RadarType = radarType;\n            //RadarRange = radarRange;\n        }\n\n        public override MyMwcObjectBuilderTypeEnum GetObjectBuilderType()\n        {\n            return MyMwcObjectBuilderTypeEnum.SmallShip_Radar;\n        }\n\n        public override int? GetObjectBuilderId()\n        {\n            return (int)RadarType;\n        }\n\n        internal override void SetObjectBuilderIdInternal(int? objectBuilderId)\n        {\n            RadarType = (MyMwcObjectBuilder_SmallShip_Radar_TypesEnum)Convert.ToUInt16(objectBuilderId);\n        }\n\n        //  Write this object into message-out\n        internal override void Write(BinaryWriter binaryWriter)\n        {\n            base.Write(binaryWriter);\n\n            //  Radar Type\n            MyMwcLog.IfNetVerbose_AddToLog(\"RadarType: \" + RadarType);\n            MyMwcMessageOut.WriteObjectBuilderSmallShipRadarTypesEnum(RadarType, binaryWriter);\n        }\n\n        //  Read this object from message-in\n        internal override bool Read(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n        {\n            if (base.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n\n            //  Radar Type\n            MyMwcObjectBuilder_SmallShip_Radar_TypesEnum? radarType = MyMwcMessageIn.ReadObjectBuilderSmallShipRadarTypesEnumEx(binaryReader, senderEndPoint);\n            if (radarType == null) return NetworkError();\n            RadarType = radarType.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"RadarType: \" + RadarType);\n\n            return true;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/ObjectBuilders/Voxels/MyMwcObjectBuilder_VoxelHand_Box.cs",
    "content": "﻿using System.IO;\nusing System.Net;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing System.Data.SqlClient;\nusing System;\nusing MinerWarsMath;\n\nnamespace MinerWars.CommonLIB.AppCode.ObjectBuilders.Voxels\n{\n    public class MyMwcObjectBuilder_VoxelHand_Box : MyMwcObjectBuilder_VoxelHand_Shape\n    {\n        public float Size;\n        public float Size2;\n        public float Size3;\n\n        internal MyMwcObjectBuilder_VoxelHand_Box()\n            : base()\n        {\n        }\n\n        public MyMwcObjectBuilder_VoxelHand_Box(MyMwcPositionAndOrientation positionAndOrientation, float size, MyMwcVoxelHandModeTypeEnum voxelHandModeType)\n            : base(positionAndOrientation, voxelHandModeType)\n        {\n            Size = size;\n            Size3 = Size2 = size; //not fully supported yet\n        }\n\n        public override MyMwcObjectBuilderTypeEnum GetObjectBuilderType()\n        {\n            return MyMwcObjectBuilderTypeEnum.VoxelHand_Box;\n        }\n\n        //  Write this object into message-out\n        internal override void Write(BinaryWriter binaryWriter)\n        {\n            base.Write(binaryWriter);\n                 \n            MyMwcLog.IfNetVerbose_AddToLog(\"Size: \" + Size.ToString());\n            MyMwcMessageOut.WriteFloat(Size, binaryWriter);\n\n            MyMwcLog.IfNetVerbose_AddToLog(\"Size2: \" + Size2.ToString());\n            MyMwcMessageOut.WriteFloat(Size2, binaryWriter);\n\n            MyMwcLog.IfNetVerbose_AddToLog(\"Size3: \" + Size3.ToString());\n            MyMwcMessageOut.WriteFloat(Size3, binaryWriter);                        \n        }\n\n        //  Read this object from message-in\n        internal override bool Read(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n        {\n            if (gameVersion < 01087004) \n            {\n                return ReadLesserThan01087004(binaryReader, senderEndPoint, gameVersion);\n            }\n            else if (gameVersion < 01087005)\n            {\n                return ReadLesserThan01087005(binaryReader, senderEndPoint, gameVersion);\n            }\n            else \n            {\n                return ReadCurrent(binaryReader, senderEndPoint, gameVersion);\n            }\n        }\n\n        private bool ReadLesserThan01087004(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n        {\n            if (base.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n\n            float? size = MyMwcMessageIn.ReadFloat(binaryReader);\n            if (size == null) return NetworkError();\n            Size = size.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"Size: \" + Size.ToString());\n\n            return true;\n        }\n\n        private bool ReadLesserThan01087005(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion) \n        {\n            if (base.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n\n            return true;\n        }\n\n        private bool ReadCurrent(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion) \n        {\n            if (base.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n\n            float? size = MyMwcMessageIn.ReadFloat(binaryReader);\n            if (size == null) return NetworkError();\n            Size = size.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"Size: \" + Size.ToString());\n\n            float? size2 = MyMwcMessageIn.ReadFloat(binaryReader);\n            if (size2 == null) return NetworkError();\n            Size2 = size2.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"Size2: \" + Size2.ToString());\n\n            float? size3 = MyMwcMessageIn.ReadFloat(binaryReader);\n            if (size3 == null) return NetworkError();\n            Size3 = size3.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"Size3: \" + Size3.ToString());\n\n            return true;  \n        }\n    } \n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/ObjectBuilders/Voxels/MyMwcObjectBuilder_VoxelHand_Cuboid.cs",
    "content": "﻿using System.IO;\nusing System.Net;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing System.Data.SqlClient;\nusing System;\nusing MinerWarsMath;\n\nnamespace MinerWars.CommonLIB.AppCode.ObjectBuilders.Voxels\n{\n    public class MyMwcObjectBuilder_VoxelHand_Cuboid : MyMwcObjectBuilder_VoxelHand_Shape\n    {\n        public float Width1;\n        public float Depth1;\n        public float Width2;\n        public float Depth2;\n        public float Length;\n\n        internal MyMwcObjectBuilder_VoxelHand_Cuboid()\n            : base()\n        {\n        }\n\n        public MyMwcObjectBuilder_VoxelHand_Cuboid(MyMwcPositionAndOrientation positionAndOrientation, float width1, float depth1, float width2, float depth2, float length, MyMwcVoxelHandModeTypeEnum voxelHandModeType)\n            : base(positionAndOrientation, voxelHandModeType)\n        {\n            Width1 = width1;\n            Depth1 = depth1;\n            Width2 = width2;\n            Depth2 = depth2;\n            Length = length;\n        }\n\n        public override MyMwcObjectBuilderTypeEnum GetObjectBuilderType()\n        {\n            return MyMwcObjectBuilderTypeEnum.VoxelHand_Cuboid;\n        }\n\n        //  Write this object into message-out\n        internal override void Write(BinaryWriter binaryWriter)\n        {\n            base.Write(binaryWriter);\n\n            MyMwcLog.IfNetVerbose_AddToLog(\"Width1: \" + Width1.ToString());\n            //MyMwcLog.IfNetVerbose_AddToLog(\"Length: \" + Length.ToString());\n            MyMwcMessageOut.WriteFloat(Width1, binaryWriter);\n            //MyMwcMessageOut.WriteFloat(Length, binaryWriter);            \n        }\n\n        //  Read this object from message-in\n        internal override bool Read(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n        {\n            if (base.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n\n            float? size = MyMwcMessageIn.ReadFloat(binaryReader);\n            if (size == null) return NetworkError();\n            Width1 = size.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"Width1: \" + Width1.ToString());\n\n            //float? length = MyMwcMessageIn.ReadFloat(binaryReader);\n            //if (length == null) return NetworkError();\n            //Length = length.Value;\n            //MyMwcLog.IfNetVerbose_AddToLog(\"Length: \" + Length.ToString());\n\n            return true;            \n        }\n    }    \n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/ObjectBuilders/Voxels/MyMwcObjectBuilder_VoxelHand_Cylinder.cs",
    "content": "﻿using System.IO;\nusing System.Net;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing System.Data.SqlClient;\nusing System;\nusing MinerWarsMath;\n\nnamespace MinerWars.CommonLIB.AppCode.ObjectBuilders.Voxels\n{\n    public class MyMwcObjectBuilder_VoxelHand_Cylinder : MyMwcObjectBuilder_VoxelHand_Shape\n    {\n        public float Radius1;\n        public float Radius2;\n        public float Length;\n\n        internal MyMwcObjectBuilder_VoxelHand_Cylinder()\n            : base()\n        {\n        }\n\n        public MyMwcObjectBuilder_VoxelHand_Cylinder(MyMwcPositionAndOrientation positionAndOrientation, float radius1, float radius2, float length, MyMwcVoxelHandModeTypeEnum voxelHandModeType)\n            : base(positionAndOrientation, voxelHandModeType)\n        {\n            Radius1 = radius1;\n            Radius2 = radius2;\n            Length = length;\n        }\n\n        public override MyMwcObjectBuilderTypeEnum GetObjectBuilderType()\n        {\n            return MyMwcObjectBuilderTypeEnum.VoxelHand_Cylinder;\n        }\n\n        //  Write this object into message-out\n        internal override void Write(BinaryWriter binaryWriter)\n        {\n            base.Write(binaryWriter);\n\n            MyMwcLog.IfNetVerbose_AddToLog(\"Radius1: \" + Radius1.ToString());\n            MyMwcLog.IfNetVerbose_AddToLog(\"Radius2: \" + Radius2.ToString());\n            MyMwcLog.IfNetVerbose_AddToLog(\"Length: \" + Length.ToString());\n            MyMwcMessageOut.WriteFloat(Radius1, binaryWriter);\n            MyMwcMessageOut.WriteFloat(Radius2, binaryWriter);\n            MyMwcMessageOut.WriteFloat(Length, binaryWriter);            \n        }\n\n        //  Read this object from message-in\n        internal override bool Read(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n        {\n            if (base.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n\n            float? radius1 = MyMwcMessageIn.ReadFloat(binaryReader);\n            if (radius1 == null) return NetworkError();\n            Radius1 = radius1.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"Radius1: \" + Radius1.ToString());\n\n            float? radius2 = MyMwcMessageIn.ReadFloat(binaryReader);\n            if (radius2 == null) return NetworkError();\n            Radius2 = radius2.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"Radius2: \" + Radius1.ToString());\n\n            float? length = MyMwcMessageIn.ReadFloat(binaryReader);\n            if (length == null) return NetworkError();\n            Length = length.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"Length: \" + Length.ToString());\n\n            return true;            \n        }\n    }    \n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/ObjectBuilders/Voxels/MyMwcObjectBuilder_VoxelHand_Shape.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing System.IO;\nusing SysUtils.Utils;\nusing System.Net;\nusing MinerWarsMath;\nusing System.Data.SqlClient;\n\nnamespace MinerWars.CommonLIB.AppCode.ObjectBuilders.Voxels\n{\n    public abstract class MyMwcObjectBuilder_VoxelHand_Shape : MyMwcObjectBuilder_Base\n    {\n        public MyMwcPositionAndOrientation PositionAndOrientation;\n        public MyMwcVoxelHandModeTypeEnum VoxelHandModeType;\n        public MyMwcVoxelMaterialsEnum? VoxelHandMaterial;\n\n        protected MyMwcObjectBuilder_VoxelHand_Shape() : base()\n        {\n        }\n\n        protected MyMwcObjectBuilder_VoxelHand_Shape(MyMwcPositionAndOrientation positionAndOrientation, MyMwcVoxelHandModeTypeEnum voxelHandModeType)\n            : base()\n        {\n            PositionAndOrientation = positionAndOrientation;\n            VoxelHandModeType = voxelHandModeType;\n        }\n\n        //  Write this object into message-out\n        internal override void Write(BinaryWriter binaryWriter)\n        {\n            base.Write(binaryWriter);\n\n            MyMwcLog.IfNetVerbose_AddToLog(\"PositionAndOrientation: \" + PositionAndOrientation.ToString());\n            MyMwcMessageOut.WritePositionAndOrientation(PositionAndOrientation, binaryWriter);\n\n            MyMwcLog.IfNetVerbose_AddToLog(\"VoxelHandModeType: \" + VoxelHandModeType.ToString());\n            MyMwcMessageOut.WriteVoxelHandModeTypeEnum(VoxelHandModeType, binaryWriter);\n\n            MyMwcMessageOut.WriteBool(VoxelHandMaterial.HasValue, binaryWriter);\n            if (VoxelHandMaterial.HasValue)\n            {\n                MyMwcLog.IfNetVerbose_AddToLog(\"VoxelHandMaterial: \" + VoxelHandMaterial.ToString());\n                MyMwcMessageOut.WriteVoxelMaterialsEnum(VoxelHandMaterial.Value, binaryWriter);\n            }\n        }\n\n        //  Read this object from message-in\n        internal override bool Read(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n        {\n            if (base.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n\n            MyMwcPositionAndOrientation? objectPositionAndOrientation = MyMwcMessageIn.ReadPositionAndOrientationEx(binaryReader, senderEndPoint);\n            if (objectPositionAndOrientation == null) return NetworkError();\n            MyMwcLog.IfNetVerbose_AddToLog(\"objectPositionAndOrientation: \" + objectPositionAndOrientation.ToString());\n\n            PositionAndOrientation = objectPositionAndOrientation.Value;\n\n            MyMwcVoxelHandModeTypeEnum? voxelHandModeType = MyMwcMessageIn.ReadVoxelHandModeTypeEnumEx(binaryReader, senderEndPoint);\n            if (voxelHandModeType == null) return NetworkError();\n            VoxelHandModeType = voxelHandModeType.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"VoxelHandModeType: \" + VoxelHandModeType.ToString());\n\n            bool? isVoxelMaterial = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);\n            if (isVoxelMaterial == null) return NetworkError();\n            if (isVoxelMaterial.Value)\n            {\n                VoxelHandMaterial = MyMwcMessageIn.ReadVoxelMaterialsEnumEx(binaryReader, senderEndPoint);\n            }\n            else\n            {\n                VoxelHandMaterial = null;\n            }\n\n            return true;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/ObjectBuilders/Voxels/MyMwcObjectBuilder_VoxelHand_Sphere.cs",
    "content": "﻿using System.IO;\nusing System.Net;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing System.Data.SqlClient;\nusing System;\nusing MinerWarsMath;\n\nnamespace MinerWars.CommonLIB.AppCode.ObjectBuilders.Voxels\n{\n    public class MyMwcObjectBuilder_VoxelHand_Sphere : MyMwcObjectBuilder_VoxelHand_Shape\n    {\n        public float Radius;           //  Radius of sphere\n\n        [Obsolete(\"Changed to public for migration, set to internal when done\")]\n        public MyMwcObjectBuilder_VoxelHand_Sphere()\n            : base()\n        {\n        }\n\n        public MyMwcObjectBuilder_VoxelHand_Sphere(MyMwcPositionAndOrientation positionAndOrientation, float radius, MyMwcVoxelHandModeTypeEnum voxelHandModeType)\n            : base(positionAndOrientation, voxelHandModeType)\n        {\n            Radius = radius;\n        }\n\n        public override MyMwcObjectBuilderTypeEnum GetObjectBuilderType()\n        {\n            return MyMwcObjectBuilderTypeEnum.VoxelHand_Sphere;\n        }\n\n        //  Write this object into message-out\n        internal override void Write(BinaryWriter binaryWriter)\n        {\n            base.Write(binaryWriter);\n\n            MyMwcLog.IfNetVerbose_AddToLog(\"Radius: \" + Radius.ToString());\n            MyMwcMessageOut.WriteFloat(Radius, binaryWriter);\n        }\n\n        //  Read this object from message-in\n        internal override bool Read(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n        {\n            if (base.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n\n            float? radius = MyMwcMessageIn.ReadFloat(binaryReader);\n            if (radius == null) return NetworkError();\n            Radius = radius.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"Radius: \" + Radius.ToString());\n\n            return true;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/ObjectBuilders/Voxels/MyMwcObjectBuilder_VoxelMap.cs",
    "content": "﻿using System.Collections.Generic;\nusing System.IO;\nusing System.Net;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing System.Data.SqlClient;\nusing System;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWarsMath;\n\nnamespace MinerWars.CommonLIB.AppCode.ObjectBuilders.Voxels\n{\n    public class MyMwcObjectBuilder_VoxelMap : MyMwcObjectBuilder_Object3dBase\n    {\n        //public MyMwcVector3Short VoxelMapPositionInVoxelCoords;     //  Position of voxel map relative to sector center, in voxel coords\n        public MyMwcVoxelFilesEnum VoxelFile;                       //  Voxel file (*.vox)\n        public MyMwcVoxelMaterialsEnum VoxelMaterial;               //  Default voxel material for loading voxel map\n        public List<MyMwcObjectBuilder_VoxelMap_MergeContent> MergeContents = new List<MyMwcObjectBuilder_VoxelMap_MergeContent>();\n        public List<MyMwcObjectBuilder_VoxelMap_MergeMaterial> MergeMaterials = new List<MyMwcObjectBuilder_VoxelMap_MergeMaterial>();\n        public List<MyMwcObjectBuilder_VoxelHand_Shape> VoxelHandShapes = new List<MyMwcObjectBuilder_VoxelHand_Shape>();\n\n        public byte[] VoxelData = null;\n\n        internal MyMwcObjectBuilder_VoxelMap()\n            : base()\n        {\n        }\n\n        public MyMwcObjectBuilder_VoxelMap(Vector3 position, MyMwcVoxelFilesEnum voxelFile, MyMwcVoxelMaterialsEnum voxelMaterial)\n            : base()\n        {\n            PositionAndOrientation.Position = position;\n            VoxelFile = voxelFile;\n            VoxelMaterial = voxelMaterial;\n        }\n\n        public override void RemapEntityIds(IMyEntityIdRemapContext remapContext)\n        {\n            base.RemapEntityIds(remapContext);\n            foreach (var content in MergeContents)\n            {\n                content.RemapEntityIds(remapContext);\n            }\n\n            foreach (var materials in MergeMaterials)\n            {\n                materials.RemapEntityIds(remapContext);\n            }\n\n            foreach (var shapes in VoxelHandShapes)\n            {\n                shapes.RemapEntityIds(remapContext);\n            }\n        }\n\n        public override MyMwcObjectBuilderTypeEnum GetObjectBuilderType()\n        {\n            return MyMwcObjectBuilderTypeEnum.VoxelMap;\n        }\n\n        //  Write this object into message-out\n        internal override void Write(BinaryWriter binaryWriter)\n        {\n            base.Write(binaryWriter);\n\n            //MyMwcLog.IfNetVerbose_AddToLog(\"VoxelMapPositionInVoxelCoords: \" + VoxelMapPositionInVoxelCoords.ToString());\n            //MyMwcMessageOut.WriteVector3Short(VoxelMapPositionInVoxelCoords, binaryWriter);\n            \n            MyMwcLog.IfNetVerbose_AddToLog(\"VoxelFile: \" + VoxelFile.ToString());\n            MyMwcMessageOut.WriteVoxelFilesEnum(VoxelFile, binaryWriter);\n\n            MyMwcLog.IfNetVerbose_AddToLog(\"VoxelMaterial: \" + VoxelMaterial.ToString());\n            MyMwcMessageOut.WriteVoxelMaterialsEnum(VoxelMaterial, binaryWriter);\n\n            //  Merge Contents\n            int countMergeContents = MergeContents == null ? 0 : MergeContents.Count;\n            MyMwcLog.IfNetVerbose_AddToLog(\"countMergeContents: \" + countMergeContents);\n            MyMwcMessageOut.WriteInt32(countMergeContents, binaryWriter);\n            for (int i = 0; i < countMergeContents; i++)\n            {\n                MergeContents[i].Write(binaryWriter);\n            }\n\n            //  Merge Materials\n            int countMergeMaterials = MergeMaterials == null ? 0 : MergeMaterials.Count;\n            MyMwcLog.IfNetVerbose_AddToLog(\"countMergeMaterials: \" + countMergeMaterials);\n            MyMwcMessageOut.WriteInt32(countMergeMaterials, binaryWriter);\n            for (int i = 0; i < countMergeMaterials; i++)\n            {\n                MergeMaterials[i].Write(binaryWriter);\n            }\n\n            //  Voxel Hand Shapes\n            int countVoxelHandShapes = VoxelHandShapes == null ? 0 : VoxelHandShapes.Count;\n            MyMwcLog.IfNetVerbose_AddToLog(\"countVoxelHandShapes: \" + countVoxelHandShapes);\n            MyMwcMessageOut.WriteInt32(countVoxelHandShapes, binaryWriter);\n            for (int i = 0; i < countVoxelHandShapes; i++)\n            {\n                VoxelHandShapes[i].Write(binaryWriter);\n            }\n\n            int length = VoxelData != null ? VoxelData.Length : 0;\n            MyMwcMessageOut.WriteInt32(length, binaryWriter);\n            if (length > 0)\n            {\n                foreach (var b in VoxelData)\n                {\n                    MyMwcMessageOut.WriteByte(b, binaryWriter);\n                }\n            }\n        }\n\n        //  Read this object from message-in\n        internal override bool Read(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n        {\n            if (base.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n\n            // Initialize new members to default values\n            VoxelData = null;\n\n            if (gameVersion > 01089000)\n            {\n                return ReadCurrent(binaryReader, senderEndPoint, gameVersion);\n            }\n            else\n            {\n                return Read01089000(binaryReader, senderEndPoint, gameVersion);\n            }\n\n            //MyMwcVector3Short? voxelMapPositionInVoxelCoords = MyMwcMessageIn.ReadVector3ShortEx(binaryReader, senderEndPoint);\n            //if (voxelMapPositionInVoxelCoords == null) return NetworkError();\n            //VoxelMapPositionInVoxelCoords = voxelMapPositionInVoxelCoords.Value;\n            //MyMwcLog.IfNetVerbose_AddToLog(\"VoxelMapPositionInVoxelCoords: \" + VoxelMapPositionInVoxelCoords.ToString());\n        }\n\n        bool ReadCurrent(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n        {\n            MyMwcVoxelFilesEnum? voxelFile = MyMwcMessageIn.ReadVoxelFileEnumEx(binaryReader, senderEndPoint);\n            if (voxelFile == null) return NetworkError();\n            VoxelFile = voxelFile.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"VoxelFile: \" + VoxelFile.ToString());\n\n            MyMwcVoxelMaterialsEnum? voxelMaterial = MyMwcMessageIn.ReadVoxelMaterialsEnumEx(binaryReader, senderEndPoint);\n            if (voxelMaterial == null) return NetworkError();\n            VoxelMaterial = voxelMaterial.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"VoxelMaterial: \" + VoxelMaterial.ToString());\n\n            //  Merge Contents\n            int? countMergeContents = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);\n            if (countMergeContents == null) return NetworkError();\n            MyMwcLog.IfNetVerbose_AddToLog(\"countMergeContents: \" + countMergeContents);\n            MergeContents = new List<MyMwcObjectBuilder_VoxelMap_MergeContent>(countMergeContents.Value);\n            for (int i = 0; i < countMergeContents; i++)\n            {\n                MyMwcObjectBuilder_VoxelMap_MergeContent newMC = MyMwcObjectBuilder_Base.ReadAndCreateNewObject(binaryReader, senderEndPoint) as MyMwcObjectBuilder_VoxelMap_MergeContent;\n                if (newMC == null) return NetworkError();\n                if (newMC.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n                MergeContents.Add(newMC);\n            }\n\n            //  Merge Materials\n            int? countMergeMaterials = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);\n            if (countMergeMaterials == null) return NetworkError();\n            MyMwcLog.IfNetVerbose_AddToLog(\"countMergeMaterials: \" + countMergeMaterials);\n            MergeMaterials = new List<MyMwcObjectBuilder_VoxelMap_MergeMaterial>(countMergeMaterials.Value);\n            for (int i = 0; i < countMergeMaterials; i++)\n            {\n                MyMwcObjectBuilder_VoxelMap_MergeMaterial newMM = MyMwcObjectBuilder_Base.ReadAndCreateNewObject(binaryReader, senderEndPoint) as MyMwcObjectBuilder_VoxelMap_MergeMaterial;\n                if (newMM == null) return NetworkError();\n                if (newMM.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n                MergeMaterials.Add(newMM);\n            }\n\n            //  Voxel Hand Shapes\n            int? countVoxelHandShapes = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);\n            if (countVoxelHandShapes == null) return NetworkError();\n            MyMwcLog.IfNetVerbose_AddToLog(\"countVoxelHandShapes: \" + countVoxelHandShapes);\n            VoxelHandShapes = new List<MyMwcObjectBuilder_VoxelHand_Shape>(countVoxelHandShapes.Value);\n            for (int i = 0; i < countVoxelHandShapes; i++)\n            {\n                MyMwcObjectBuilder_VoxelHand_Shape voxelHandShape = MyMwcObjectBuilder_Base.ReadAndCreateNewObject(binaryReader, senderEndPoint) as MyMwcObjectBuilder_VoxelHand_Shape;\n                if (voxelHandShape == null) return NetworkError();\n                if (voxelHandShape.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n                VoxelHandShapes.Add(voxelHandShape);\n            }\n\n            int? dataLength = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);\n            if (!dataLength.HasValue) return NetworkError();\n            if (dataLength.Value > 0)\n            {\n                VoxelData = new byte[dataLength.Value];\n                for (int i = 0; i < dataLength.Value; i++)\n                {\n                    byte? b = MyMwcMessageIn.ReadByteEx(binaryReader, senderEndPoint);\n                    if (!b.HasValue) return NetworkError();\n                    VoxelData[i] = b.Value;\n                }\n            }\n\n            return true;\n        }\n\n        bool Read01089000(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n        {\n            MyMwcVoxelFilesEnum? voxelFile = MyMwcMessageIn.ReadVoxelFileEnumEx(binaryReader, senderEndPoint);\n            if (voxelFile == null) return NetworkError();\n            VoxelFile = voxelFile.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"VoxelFile: \" + VoxelFile.ToString());\n\n            MyMwcVoxelMaterialsEnum? voxelMaterial = MyMwcMessageIn.ReadVoxelMaterialsEnumEx(binaryReader, senderEndPoint);\n            if (voxelMaterial == null) return NetworkError();\n            VoxelMaterial = voxelMaterial.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"VoxelMaterial: \" + VoxelMaterial.ToString());\n\n            //  Merge Contents\n            int? countMergeContents = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);\n            if (countMergeContents == null) return NetworkError();\n            MyMwcLog.IfNetVerbose_AddToLog(\"countMergeContents: \" + countMergeContents);\n            MergeContents = new List<MyMwcObjectBuilder_VoxelMap_MergeContent>(countMergeContents.Value);\n            for (int i = 0; i < countMergeContents; i++)\n            {\n                MyMwcObjectBuilder_VoxelMap_MergeContent newMC = MyMwcObjectBuilder_Base.ReadAndCreateNewObject(binaryReader, senderEndPoint) as MyMwcObjectBuilder_VoxelMap_MergeContent;\n                if (newMC == null) return NetworkError();\n                if (newMC.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n                MergeContents.Add(newMC);\n            }\n\n            //  Merge Materials\n            int? countMergeMaterials = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);\n            if (countMergeMaterials == null) return NetworkError();\n            MyMwcLog.IfNetVerbose_AddToLog(\"countMergeMaterials: \" + countMergeMaterials);\n            MergeMaterials = new List<MyMwcObjectBuilder_VoxelMap_MergeMaterial>(countMergeMaterials.Value);\n            for (int i = 0; i < countMergeMaterials; i++)\n            {\n                MyMwcObjectBuilder_VoxelMap_MergeMaterial newMM = MyMwcObjectBuilder_Base.ReadAndCreateNewObject(binaryReader, senderEndPoint) as MyMwcObjectBuilder_VoxelMap_MergeMaterial;\n                if (newMM == null) return NetworkError();\n                if (newMM.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n                MergeMaterials.Add(newMM);\n            }\n\n            //  Voxel Hand Shapes\n            int? countVoxelHandShapes = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);\n            if (countVoxelHandShapes == null) return NetworkError();\n            MyMwcLog.IfNetVerbose_AddToLog(\"countVoxelHandShapes: \" + countVoxelHandShapes);\n            VoxelHandShapes = new List<MyMwcObjectBuilder_VoxelHand_Shape>(countVoxelHandShapes.Value);\n            for (int i = 0; i < countVoxelHandShapes; i++)\n            {\n                MyMwcObjectBuilder_VoxelHand_Shape voxelHandShape = MyMwcObjectBuilder_Base.ReadAndCreateNewObject(binaryReader, senderEndPoint) as MyMwcObjectBuilder_VoxelHand_Shape;\n                if (voxelHandShape == null) return NetworkError();\n                if (voxelHandShape.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n                VoxelHandShapes.Add(voxelHandShape);\n            }\n\n            return true;\n        }\n    }\n}"
  },
  {
    "path": "Sources/CommonLIB/AppCode/ObjectBuilders/Voxels/MyMwcObjectBuilder_VoxelMap_MergeContent.cs",
    "content": "﻿using System.IO;\nusing System.Net;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing System.Data.SqlClient;\nusing System;\n\nnamespace MinerWars.CommonLIB.AppCode.ObjectBuilders.Voxels\n{\n    public class MyMwcObjectBuilder_VoxelMap_MergeContent : MyMwcObjectBuilder_Base\n    {\n        public MyMwcVector3Short PositionInVoxelMapInVoxelCoords;       //  Position within voxel map, in voxel coords\n        public MyMwcVoxelFilesEnum VoxelFile;                           //  Voxel file (*.vox)\n        public MyMwcVoxelMapMergeTypeEnum MergeType;\n\n        internal MyMwcObjectBuilder_VoxelMap_MergeContent()\n            : base()\n        {\n        }\n\n        public MyMwcObjectBuilder_VoxelMap_MergeContent(MyMwcVector3Short positionInVoxelMapInVoxelCoords, MyMwcVoxelFilesEnum voxelFile,\n            MyMwcVoxelMapMergeTypeEnum mergeType)\n            : base()\n        {\n            PositionInVoxelMapInVoxelCoords = positionInVoxelMapInVoxelCoords;\n            VoxelFile = voxelFile;\n            MergeType = mergeType;\n        }\n\n        public override MyMwcObjectBuilderTypeEnum GetObjectBuilderType()\n        {\n            return MyMwcObjectBuilderTypeEnum.VoxelMap_MergeContent;\n        }\n\n        //  Write this object into message-out\n        internal override void Write(BinaryWriter binaryWriter)\n        {\n            base.Write(binaryWriter);\n\n            MyMwcLog.IfNetVerbose_AddToLog(\"PositionInVoxelMapInVoxelCoords: \" + PositionInVoxelMapInVoxelCoords.ToString());\n            MyMwcMessageOut.WriteVector3Short(PositionInVoxelMapInVoxelCoords, binaryWriter);\n            \n            MyMwcLog.IfNetVerbose_AddToLog(\"VoxelFile: \" + VoxelFile.ToString());\n            MyMwcMessageOut.WriteVoxelFilesEnum(VoxelFile, binaryWriter);\n\n            MyMwcLog.IfNetVerbose_AddToLog(\"VoxelMaterial: \" + MergeType.ToString());\n            MyMwcMessageOut.WriteVoxelMapMergeTypeEnum(MergeType, binaryWriter);\n        }\n\n        //  Read this object from message-in\n        internal override bool Read(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n        {\n            if (base.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n\n            MyMwcVector3Short? positionInVoxelMapInVoxelCoords = MyMwcMessageIn.ReadVector3ShortEx(binaryReader, senderEndPoint);\n            if (positionInVoxelMapInVoxelCoords == null) return NetworkError();\n            PositionInVoxelMapInVoxelCoords = positionInVoxelMapInVoxelCoords.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"PositionInVoxelMapInVoxelCoords: \" + PositionInVoxelMapInVoxelCoords.ToString());\n\n            MyMwcVoxelFilesEnum? voxelFile = MyMwcMessageIn.ReadVoxelFileEnumEx(binaryReader, senderEndPoint);\n            if (voxelFile == null) return NetworkError();\n            VoxelFile = voxelFile.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"VoxelFile: \" + VoxelFile.ToString());\n\n            MyMwcVoxelMapMergeTypeEnum? mergeType = MyMwcMessageIn.ReadVoxelMapMergeTypeEnumEx(binaryReader, senderEndPoint);\n            if (mergeType == null) return NetworkError();\n            MergeType = mergeType.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"VoxelMaterial: \" + MergeType.ToString());\n\n            return true;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/ObjectBuilders/Voxels/MyMwcObjectBuilder_VoxelMap_MergeMaterial.cs",
    "content": "﻿using System.IO;\nusing System.Net;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing System.Data.SqlClient;\nusing System;\n\nnamespace MinerWars.CommonLIB.AppCode.ObjectBuilders.Voxels\n{\n    public class MyMwcObjectBuilder_VoxelMap_MergeMaterial : MyMwcObjectBuilder_Base\n    {\n        public MyMwcVector3Short PositionInVoxelMapInVoxelCoords;       //  Position within voxel map, in voxel coords\n        public MyMwcVoxelFilesEnum VoxelFile;                           //  Voxel file (*.vox)\n        public MyMwcVoxelMaterialsEnum VoxelMaterial;                   //  Voxel material\n\n        internal MyMwcObjectBuilder_VoxelMap_MergeMaterial()\n            : base()\n        {\n        }\n\n        public MyMwcObjectBuilder_VoxelMap_MergeMaterial(MyMwcVector3Short positionInVoxelMapInVoxelCoords, MyMwcVoxelFilesEnum voxelFile,\n            MyMwcVoxelMaterialsEnum voxelMaterial)\n            : base()\n        {\n            PositionInVoxelMapInVoxelCoords = positionInVoxelMapInVoxelCoords;\n            VoxelFile = voxelFile;\n            VoxelMaterial = voxelMaterial;\n        }\n\n        public override MyMwcObjectBuilderTypeEnum GetObjectBuilderType()\n        {\n            return MyMwcObjectBuilderTypeEnum.VoxelMap_MergeMaterial;\n        }\n\n        //  Write this object into message-out\n        internal override void Write(BinaryWriter binaryWriter)\n        {\n            base.Write(binaryWriter);\n\n            MyMwcLog.IfNetVerbose_AddToLog(\"PositionInVoxelMapInVoxelCoords: \" + PositionInVoxelMapInVoxelCoords.ToString());\n            MyMwcMessageOut.WriteVector3Short(PositionInVoxelMapInVoxelCoords, binaryWriter);\n            \n            MyMwcLog.IfNetVerbose_AddToLog(\"VoxelFile: \" + VoxelFile.ToString());\n            MyMwcMessageOut.WriteVoxelFilesEnum(VoxelFile, binaryWriter);\n\n            MyMwcLog.IfNetVerbose_AddToLog(\"VoxelMaterial: \" + VoxelMaterial.ToString());\n            MyMwcMessageOut.WriteVoxelMaterialsEnum(VoxelMaterial, binaryWriter);\n        }\n\n        //  Read this object from message-in\n        internal override bool Read(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n        {\n            if (base.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n\n            MyMwcVector3Short? positionInVoxelMapInVoxelCoords = MyMwcMessageIn.ReadVector3ShortEx(binaryReader, senderEndPoint);\n            if (positionInVoxelMapInVoxelCoords == null) return NetworkError();\n            PositionInVoxelMapInVoxelCoords = positionInVoxelMapInVoxelCoords.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"PositionInVoxelMapInVoxelCoords: \" + PositionInVoxelMapInVoxelCoords.ToString());\n\n            MyMwcVoxelFilesEnum? voxelFile = MyMwcMessageIn.ReadVoxelFileEnumEx(binaryReader, senderEndPoint);\n            if (voxelFile == null) return NetworkError();\n            VoxelFile = voxelFile.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"VoxelFile: \" + VoxelFile.ToString());\n\n            MyMwcVoxelMaterialsEnum? voxelMaterial = MyMwcMessageIn.ReadVoxelMaterialsEnumEx(binaryReader, senderEndPoint);\n            if (voxelMaterial == null) return NetworkError();\n            VoxelMaterial = voxelMaterial.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"VoxelMaterial: \" + VoxelMaterial.ToString());\n\n            return true;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/ObjectBuilders/Voxels/MyMwcObjectBuilder_VoxelMap_Neighbour.cs",
    "content": "﻿using System.IO;\nusing System.Net;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing System.Data.SqlClient;\n\nnamespace MinerWars.CommonLIB.AppCode.ObjectBuilders.Voxels\n{\n    public class MyMwcObjectBuilder_VoxelMap_Neighbour : MyMwcObjectBuilder_Base\n    {\n        public MyMwcVector3Sbyte RelativeSectorPosition;            //  Position of this neighbour sector relative to current sector (in sector coords, thus -1, or +1 or so)\n        public MyMwcVector3Short VoxelMapPositionInVoxelCoords;     //  Position of voxel map relative to sector center, in voxel coords\n        public MyMwcVoxelFilesEnum VoxelFile;                       //  Voxel file (*.vox)\n        public MyMwcVoxelMaterialsEnum VoxelMaterial;               //  Default voxel material for loading voxel map\n\n        internal MyMwcObjectBuilder_VoxelMap_Neighbour()\n            : base()\n        {\n        }\n\n        public MyMwcObjectBuilder_VoxelMap_Neighbour(MyMwcVector3Sbyte relativeSectorPosition, \n            MyMwcVector3Short voxelMapPositionInVoxelCoords, MyMwcVoxelFilesEnum voxelFile,\n            MyMwcVoxelMaterialsEnum voxelMaterial)\n            : base()\n        {\n            RelativeSectorPosition = relativeSectorPosition;\n            VoxelMapPositionInVoxelCoords = voxelMapPositionInVoxelCoords;\n            VoxelFile = voxelFile;\n            VoxelMaterial = voxelMaterial;\n        }\n\n        public override MyMwcObjectBuilderTypeEnum GetObjectBuilderType()\n        {\n            return MyMwcObjectBuilderTypeEnum.VoxelMap_Neighbour;\n        }\n\n        //  Write this object into message-out\n        internal override void Write(BinaryWriter binaryWriter)\n        {\n            base.Write(binaryWriter);\n\n            MyMwcLog.IfNetVerbose_AddToLog(\"RelativeSectorPosition: \" + RelativeSectorPosition.ToString());\n            MyMwcMessageOut.WriteVector3Sbyte(RelativeSectorPosition, binaryWriter);\n\n            MyMwcLog.IfNetVerbose_AddToLog(\"VoxelMapPositionInVoxelCoords: \" + VoxelMapPositionInVoxelCoords.ToString());\n            MyMwcMessageOut.WriteVector3Short(VoxelMapPositionInVoxelCoords, binaryWriter);\n\n            MyMwcLog.IfNetVerbose_AddToLog(\"VoxelFile: \" + VoxelFile.ToString());\n            MyMwcMessageOut.WriteVoxelFilesEnum(VoxelFile, binaryWriter);\n\n            MyMwcLog.IfNetVerbose_AddToLog(\"VoxelMaterial: \" + VoxelMaterial.ToString());\n            MyMwcMessageOut.WriteVoxelMaterialsEnum(VoxelMaterial, binaryWriter);\n        }\n\n        //  Read this object from message-in\n        internal override bool Read(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)\n        {\n            if (base.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();\n\n            MyMwcVector3Sbyte? relativeSectorPosition = MyMwcMessageIn.ReadVector3SbyteEx(binaryReader, senderEndPoint);\n            if (relativeSectorPosition == null) return NetworkError();\n            RelativeSectorPosition = relativeSectorPosition.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"RelativeSectorPosition: \" + RelativeSectorPosition.ToString());\n\n            MyMwcVector3Short? voxelMapPositionInVoxelCoords = MyMwcMessageIn.ReadVector3ShortEx(binaryReader, senderEndPoint);\n            if (voxelMapPositionInVoxelCoords == null) return NetworkError();\n            VoxelMapPositionInVoxelCoords = voxelMapPositionInVoxelCoords.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"VoxelMapPositionInVoxelCoords: \" + VoxelMapPositionInVoxelCoords.ToString());\n\n            MyMwcVoxelFilesEnum? voxelFile = MyMwcMessageIn.ReadVoxelFileEnumEx(binaryReader, senderEndPoint);\n            if (voxelFile == null) return NetworkError();\n            VoxelFile = voxelFile.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"VoxelFile: \" + VoxelFile.ToString());\n\n            MyMwcVoxelMaterialsEnum? voxelMaterial = MyMwcMessageIn.ReadVoxelMaterialsEnumEx(binaryReader, senderEndPoint);\n            if (voxelMaterial == null) return NetworkError();\n            VoxelMaterial = voxelMaterial.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"VoxelMaterial: \" + VoxelMaterial.ToString());\n\n            return true;\n        }\n     }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Utils/My5BitEncoding.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace MinerWars.CommonLIB.AppCode.Utils\n{\n    public class My5BitEncoding\n    {\n        private static My5BitEncoding m_default;\n        public static My5BitEncoding Default\n        {\n            get\n            {\n                if (m_default == null)\n                    m_default = new My5BitEncoding();\n                return m_default;\n            }\n        }\n\n        private char[] m_encodeTable;\n        private Dictionary<char, byte> m_decodeTable;\n\n        /// <summary>\n        /// Initializes a new instance of the Encoding5Bit class.\n        /// Uses characters 0-9 and A-Z except (0,O,1,I).\n        /// </summary>\n        public My5BitEncoding()\n            : this(new char[] { '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' })\n        {\n        }\n\n        /// <summary>\n        /// Initializes a new instance of the Encoding5Bit class.\n        /// </summary>\n        /// <param name=\"characters\">32 characters which will be used when encoding bytes to string.</param>\n        public My5BitEncoding(char[] characters)\n        {\n            if (characters.Length != 32)\n                throw new ArgumentException(\"Characters array must have 32 characters!\");\n\n            m_encodeTable = new char[32];\n            characters.CopyTo(m_encodeTable, 0);\n\n            m_decodeTable = CreateDecodeDict();\n        }\n\n        private Dictionary<char, byte> CreateDecodeDict()\n        {\n            var result = new Dictionary<char, byte>(m_encodeTable.Length);\n            for (byte i = 0; i < (byte)m_encodeTable.Length; i++)\n            {\n                result.Add(m_encodeTable[i], i);\n            }\n            return result;\n        }\n\n        /// <summary>\n        /// Encodes data as 5bit string.\n        /// </summary>\n        public char[] Encode(byte[] data)\n        {\n            StringBuilder sb = new StringBuilder(data.Length * 8 / 5);\n\n            int curr = 0;\n            int activeBits = 0;\n            foreach (var b in data)\n            {\n                curr += b << activeBits; // Load byte\n                activeBits += 8;\n\n                while (activeBits >= 5)\n                {\n                    int ch = curr & 0x1f; // Read char\n                    curr >>= 5; // Shift out read bits\n                    activeBits -= 5;\n                    sb.Append(m_encodeTable[ch]);\n                }\n            }\n            if (activeBits > 0)\n            {\n                sb.Append(m_encodeTable[curr]);\n            }\n            return sb.ToString().ToCharArray();\n        }\n\n        /// <summary>\n        /// Decodes 5bit string as bytes, not alligned characters may be lost.\n        /// Only decode strings encoded with Encode.\n        /// </summary>\n        /// <param name=\"encoded5BitText\"></param>\n        /// <returns></returns>\n        public byte[] Decode(char[] encoded5BitText)\n        {\n            List<byte> bytes = new List<byte>();\n\n            int curr = 0;\n            int activeBits = 0;\n\n            foreach (var c in encoded5BitText)\n            {\n                byte val;\n                if(!m_decodeTable.TryGetValue(c, out val))\n                {\n                    throw new ArgumentException(\"Encoded text is not valid for this encoding!\");\n                }\n\n                curr += val << activeBits;\n                activeBits += 5;\n\n                while (activeBits >= 8)\n                {\n                    int b = curr & 0xff; // Read byte\n                    curr >>= 8; // Shift out read bits\n                    activeBits -= 8;\n                    bytes.Add((byte)b);\n                }\n            }\n            return bytes.ToArray();\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Utils/MyCommonDebugUtils.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Reflection;\nusing System.Text;\nusing System.Diagnostics;\n\nnamespace SysUtils.Utils\n{\n    //  Thrown when release assert is triggered (in debug or release mode)\n    public class MyMwcExceptionAssertRelease : Exception\n    {\n    }\n\n\n    //  This exception is thrown when we reach code 'Application should not get here'\n    public class MyMwcExceptionApplicationShouldNotGetHere : Exception\n    {\n    }\n\n    public class MyMaterialNotAvailableException : Exception\n    {\n        public string AssetName { get; set; }\n        public int MaterialIndex { get; set; }\n\n        public MyMaterialNotAvailableException(string assetName, int materialIndex)\n        {\n            AssetName = assetName;\n            MaterialIndex = materialIndex;\n        }\n    }\n\n\n    public class MyCommonDebugUtils\n    {\n        /// <summary>\n        /// This \"assert\" is executed in DEBUG and RELEASE modes. Use it in code that that won't suffer from more work (e.g. loading), not in frequently used loops\n        /// </summary>\n        /// <param name=\"condition\"></param>\n        public static void AssertRelease(bool condition)\n        {\n            AssertRelease(condition, \"Assert release occured\");\n        }\n\n        /// <summary>\n        /// This \"assert\" is executed in DEBUG and RELEASE modes. Use it in code that that won't suffer from more work (e.g. loading), not in frequently used loops\n        /// </summary>\n        /// <param name=\"condition\"></param>\n        public static void AssertRelease(bool condition, string assertMessage)\n        {\n            if (condition == false)\n            {\n                MyMwcLog.WriteLine(\"Assert: \" + assertMessage);\n            }\n\n            System.Diagnostics.Trace.Assert(condition, assertMessage);\n        }\n\n        /// <summary>\n        /// This \"assert\" is executed in DEBUG mode. Because people dont know how to use AssertRelease!\n        /// </summary>\n        /// <param name=\"condition\"></param>\n        [Conditional(\"DEBUG\")]\n        public static void AssertDebug(bool condition)\n        {\n            System.Diagnostics.Debug.Assert(condition);\n        }\n\n        /// <summary>\n        /// This \"assert\" is executed in DEBUG mode. Because people dont know how to use AssertRelease!\n        /// </summary>\n        /// <param name=\"condition\"></param>\n        [Conditional(\"DEBUG\")]\n        public static void AssertDebug(bool condition, string assertMessage)\n        {\n            System.Diagnostics.Debug.Assert(condition, assertMessage);\n        }\n\n        /// <summary>\n        /// Returns true if float is valid\n        /// </summary>\n        /// <param name=\"f\"></param>\n        /// <returns></returns>\n        public static bool IsValid(float f)\n        {\n            return !float.IsNaN(f) && !float.IsInfinity(f);\n        }\n\n        /// <summary>\n        /// Returns true if double is valid\n        /// </summary>\n        /// <param name=\"f\"></param>\n        /// <returns></returns>\n        public static bool IsValid(double d)\n        {\n            return !double.IsNaN(d) && !double.IsInfinity(d);\n        }\n\n        //  C# enums allow duplicite values, there's not compilation error or warning. It's very dangerous. That's why we made\n        //  this assert that will go over all values on an enum, and crash if there's a duplicity\n        //  http://stackoverflow.com/questions/1425777/how-to-prevent-duplicate-values-in-enum\n        public static void AssertEnumNotDuplicities<T, U>()\n        {\n            Dictionary<U, bool> valid = new Dictionary<U, bool>();\n\n            foreach (U key in Enum.GetValues(typeof(T)))\n            {\n                bool val;\n                if (valid.TryGetValue(key, out val) == true)\n                {\n                    throw new Exception(\"Duplicate enum found: \" + key + \" in \" + typeof(T).Name);\n                }\n                else\n                {\n                    valid[key] = true;\n                }\n            }\n        }\n\n        public static void AssertEnumNotDuplicities(Type enumType)\n        {\n            Dictionary<object, bool> valid = new Dictionary<object, bool>();\n\n            foreach (object key in Enum.GetValues(enumType))\n            {\n                bool val;\n                if (valid.TryGetValue(key, out val) == true)\n                {\n                    throw new Exception(\"Duplicate enum found: \" + key + \" in \" + enumType.AssemblyQualifiedName);\n                }\n                else\n                {\n                    valid[key] = true;\n                }\n            }\n        }                \n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Utils/MyFileSystemUtils.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.IO;\nusing System.Security.Cryptography;\nusing System.Net;\n\nnamespace SysUtils.Utils\n{\n    /// <summary>\n    /// MyFileSystemUtils\n    /// </summary>\n    public class MyFileSystemUtils\n    {\n        /// <summary>\n        /// Creates folder with subfolder for this file, if already doesn't exists\n        /// </summary>\n        /// <param name=\"file\"></param>\n        public static void CreateFolderForFile(String file)\n        {\n            int i_IndexOfSlash = file.LastIndexOf(@\"\\\");\n            if (i_IndexOfSlash >= 0)\n            {\n                String folder = file.Substring(0, i_IndexOfSlash);\n                if (FolderExists(folder) == false)\n                {\n                    CreateFolder(folder);\n                }\n            }\n        }\n\n\n        /// <summary>\n        /// Checks if specified folder exists\n        /// </summary>\n        /// <param name=\"folderPath\"></param>\n        /// <returns></returns>\n        public static bool FolderExists(String folderPath)\n        {\n            System.IO.DirectoryInfo directoryInfo = new System.IO.DirectoryInfo(folderPath);\n            return directoryInfo.Exists;\n        }\n\n\n\n        /// <summary>\n        //\tVytvori zadany adresar. Automaticky povytvara celu adresarovu strukturu, teda ak chcem vytvorit c:\\volaco\\opica\n        //\ta c:\\volaco zatial neexistuje, tak tato metoda ho vytvori.\n        /// </summary>\n        /// <param name=\"folderPath\"></param>\n        public static void CreateFolder(String folderPath)\n        {\n            System.IO.Directory.CreateDirectory(folderPath);\n        }\n\n\n        //  Return folder where our application can store user specific data (log, config, ...)\n        //  On my machine it's: c:\\Users\\Usa\\AppData\\Roaming\\MinerWars\\\n        public static string GetApplicationUserDataFolder()\n        {\n            return Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), \"MinerWars\\\\\");\n        }\n\n\n        //  Compute hash from file's content and return it as a Base64 string.  \n        public static string GetFileHash(string filename)\n        {\n            using (HashAlgorithm hashAlg = new SHA1Managed())\n            {\n                using (Stream file = new FileStream(filename, FileMode.Open, FileAccess.Read))\n                {\n                    byte[] hash = hashAlg.ComputeHash(file);\n                    return Convert.ToBase64String(hash);\n                }\n            }\n        }\n\n        //  Compute hash from file's content and return it as a Base64 string. (overload with specific sharing mode)\n        public static string GetFileHash(string filename, FileShare sharingMode)\n        {\n            if (!FileExists(filename))\n            {\n                return \"\";\n            }\n\n            using (HashAlgorithm hashAlg = new SHA1Managed())\n            {\n                {\n                    using (Stream file = new FileStream(filename, FileMode.Open, FileAccess.Read, sharingMode))\n                    {\n                        byte[] hash = hashAlg.ComputeHash(file);\n                        return Convert.ToBase64String(hash);\n                    }\n                }\n            }\n        }\n\n        //\tChecks if specified file exists\n        public static bool FileExists(String filePath)\n        {\n            return File.Exists(filePath);\n        }\n\n\n        //  Download file synchronously - blocks caller until download is finished. Use only for small files. \n        //  This method doesn't have timeout, because WebClient doesn't have it.\n        //  Return true if OK. If any exception occurs, we ignore it and return false.\n        public static bool DownloadFileSynchronously(string url, string filepath)\n        {\n            WebClient client = null;\n            try\n            {\n                client = new WebClient();\n\n                //  Setting PROXY to null is very important, because if it is null, this web request will not\n                //  use any proxy. It will connect to our update server directly, no matter what is specified\n                //  in Internet Explorer proxy settings.\n                //  If we leave there default values, it works on 99% of computers. But 1% has some weird proxy\n                //  settings in IE - they don't use proxy, but this web request thinks they use proxy...\n                //  E.g. http://dotnetdreaming.wordpress.com/2009/03/20/httpwebrequest-and-proxies/\n                client.Proxy = null;\n\n                client.DownloadFile(url, filepath);\n            }\n            catch (Exception ex)\n            {\n                MyMwcLog.WriteLine(ex);\n                //  Ignore exception!\n                return false;\n            }\n            finally\n            {\n                if (client != null) client.Dispose();\n            }\n\n            return true;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Utils/MyMemoryLogs.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace SysUtils.Utils\n{\n    public class MyMemoryLogs\n    {\n        public class MyMemoryEvent\n        {\n            public string Name;\n            public bool HasStart = false;\n            public bool HasEnd = false;\n            public float ManagedStartSize = 0;\n            public float ManagedEndSize = 0;\n            public float ProcessStartSize = 0;\n            public float ProcessEndSize = 0;\n            public float DeltaTime = 0;\n            public int Id = 0;\n            public bool Selected = false;\n            public DateTime StartTime;\n            public DateTime EndTime;\n\n            public float ManagedDelta\n            {\n                get { return ManagedEndSize - ManagedStartSize; }\n            }\n\n            public float ProcessDelta\n            {\n                get { return ProcessEndSize - ProcessStartSize; }\n            }\n\n            List<MyMemoryEvent> m_childs = new List<MyMemoryEvent>();  \n        }\n\n        class MyManagedComparer : IComparer<MyMemoryEvent>\n        {\n            public int Compare(MyMemoryEvent x, MyMemoryEvent y)  {   return -1 * (x.ManagedDelta.CompareTo(y.ManagedDelta)); }\n        }\n\n        class MyNativeComparer : IComparer<MyMemoryEvent>\n        {\n            public int Compare(MyMemoryEvent x, MyMemoryEvent y)  {   return -1 * (x.ProcessDelta.CompareTo(y.ProcessDelta)); }\n        }\n\n        class MyTimedeltaComparer : IComparer<MyMemoryEvent>\n        {\n            public int Compare(MyMemoryEvent x, MyMemoryEvent y)  {   return -1 * (x.DeltaTime.CompareTo(y.DeltaTime));   }\n        }\n\n        static MyManagedComparer m_managedComparer = new MyManagedComparer();\n        static MyNativeComparer m_nativeComparer = new MyNativeComparer();\n        static MyTimedeltaComparer m_timeComparer = new MyTimedeltaComparer();\n\n        static List<MyMemoryEvent> m_events = new List<MyMemoryEvent>();\n        static List<string> m_consoleLogSTART = new List<string>();\n        static List<string> m_consoleLogEND = new List<string>();\n\n        static Stack<MyMemoryEvent> m_stack = new Stack<MyMemoryEvent>();\n\n        static int IdCounter = 1;\n\n        static public List<MyMemoryEvent> GetManaged()\n        {\n            List<MyMemoryEvent> managed = new List<MyMemoryEvent>(m_events);\n            managed.Sort(m_managedComparer);\n            return managed;\n        }\n\n        static public List<MyMemoryEvent> GetNative()\n        {\n            List<MyMemoryEvent> native = new List<MyMemoryEvent>(m_events);\n            native.Sort(m_nativeComparer);\n            return native;\n        }\n\n        static public List<MyMemoryEvent> GetTimed()\n        {\n            List<MyMemoryEvent> timed = new List<MyMemoryEvent>(m_events);\n            timed.Sort(m_timeComparer);\n            return timed;\n        }\n\n        static public List<MyMemoryEvent> GetEvents()\n        {\n            return m_events;\n        }\n\n        static public void StartEvent()\n        {\n            MyMemoryEvent ev = new MyMemoryEvent();\n\n            if (m_consoleLogSTART.Count > 0)\n            {\n                ev.Name = m_consoleLogSTART[m_consoleLogSTART.Count-1];\n                ev.Id = IdCounter++;\n                ev.StartTime = DateTime.Now;\n                m_consoleLogSTART.Clear();\n                m_stack.Push(ev);\n            }   \n        }\n\n        static public void EndEvent(MyMemoryEvent ev)\n        {\n             if(m_stack.Count > 0)\n             {\n                 MyMemoryEvent e = m_stack.Peek();\n                 ev.Name = e.Name;\n                 ev.Id = e.Id;\n                 ev.StartTime = e.StartTime;\n                 ev.EndTime = DateTime.Now;\n                 m_events.Add(ev);\n                 m_stack.Pop();\n             }\n        }\n\n        static public void AddConsoleLine(string line)\n        {\n            if (line.EndsWith(\"START\"))\n            {\n                m_consoleLogEND.Clear();\n                line = line.Substring(0, line.Length - 5);\n\n                if (m_stack.Count > 0 && m_stack.Peek().HasStart)\n                {\n                    m_events[m_events.Count].HasStart = true;\n                    m_events[m_events.Count].Name = line;\n                }\n                else\n                    m_consoleLogSTART.Add(line);\n            }\n            else if (line.EndsWith(\"END\"))\n            {\n                line = line.Substring(0, line.Length - 5);\n\n                m_consoleLogEND.Add(line);\n                m_consoleLogSTART.Clear();\n            }\n        }\n\n        public static void DumpMemoryUsage()\n        {\n            m_events.Sort(m_managedComparer);\n\n            MyMwcLog.WriteLine(\"\\n\\n\");\n            MyMwcLog.WriteLine(\"Managed MemoryUsage: \\n\");\n\n            float totalMB = 0;\n\n            for (int i = 0; i < m_events.Count && i < 30; i++)\n            {\n                float sizeInMB = m_events[i].ManagedDelta * 1.0f/(1024*1024);\n                totalMB += sizeInMB;\n                MyMwcLog.WriteLine(m_events[i].Name + sizeInMB.ToString());\n            }\n\n            MyMwcLog.WriteLine(\"Total Managed MemoryUsage: \" + totalMB + \" [MB]\");\n\n            //////////////////////////////////////////////////////////////////////////\n\n            m_events.Sort(m_nativeComparer);\n\n            MyMwcLog.WriteLine(\"\\n\\n\");\n            MyMwcLog.WriteLine(\"Process MemoryUsage: \\n\");\n\n            totalMB = 0;\n\n            for (int i = 0; i < m_events.Count && i < 30; i++)\n            {\n                float sizeInMB = m_events[i].ProcessDelta * 1.0f / (1024 * 1024);\n                totalMB += sizeInMB;\n                MyMwcLog.WriteLine(m_events[i].Name + sizeInMB.ToString());\n            }\n\n            MyMwcLog.WriteLine(\"Total Process MemoryUsage: \" + totalMB + \" [MB]\");\n\n            //////////////////////////////////////////////////////////////////////////\n\n            m_events.Sort(m_timeComparer);\n\n            MyMwcLog.WriteLine(\"\\n\\n\");\n            MyMwcLog.WriteLine(\"Load time comparison: \\n\");\n\n            float totalTime = 0;\n\n            for (int i = 0; i < m_events.Count && i < 30; i++)\n            {\n                float deltaTime = m_events[i].DeltaTime;\n                totalTime += deltaTime;\n                MyMwcLog.WriteLine(m_events[i].Name + \" \" + deltaTime.ToString());\n            }\n\n            MyMwcLog.WriteLine(\"Total load time: \" + totalTime + \" [s]\");\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Utils/MyMinerWarsLauncherConfig.cs",
    "content": "﻿//------------------------------------------------------------------------------\n// <auto-generated>\n//     This code was generated by a tool.\n//     Runtime Version:2.0.50727.5448\n//\n//     Changes to this file may cause incorrect behavior and will be lost if\n//     the code is regenerated.\n// </auto-generated>\n//------------------------------------------------------------------------------\n\n// \n// This source code was auto-generated by xsd, Version=2.0.50727.3038.\n// \nnamespace SysUtils.Utils\n{\n    /// <remarks/>\n    [System.CodeDom.Compiler.GeneratedCodeAttribute(\"xsd\", \"2.0.50727.3038\")]\n    [System.SerializableAttribute()]\n    [System.Diagnostics.DebuggerStepThroughAttribute()]\n    [System.ComponentModel.DesignerCategoryAttribute(\"code\")]\n    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]\n    [System.Xml.Serialization.XmlRootAttribute(Namespace=\"\", IsNullable=false)]\n    public partial class MyMinerWarsLauncherConfig {\n        \n        private bool useP2PField;\n        \n        private MyMinerWarsLauncherConfigMirrorUrl[] mirrorUrlField;\n        \n        /// <remarks/>\n        [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]\n        public bool UseP2P {\n            get {\n                return this.useP2PField;\n            }\n            set {\n                this.useP2PField = value;\n            }\n        }\n        \n        /// <remarks/>\n        [System.Xml.Serialization.XmlElementAttribute(\"MirrorUrl\", Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]\n        public MyMinerWarsLauncherConfigMirrorUrl[] MirrorUrl {\n            get {\n                return this.mirrorUrlField;\n            }\n            set {\n                this.mirrorUrlField = value;\n            }\n        }\n    }\n    \n    /// <remarks/>\n    [System.CodeDom.Compiler.GeneratedCodeAttribute(\"xsd\", \"2.0.50727.3038\")]\n    [System.SerializableAttribute()]\n    [System.Diagnostics.DebuggerStepThroughAttribute()]\n    [System.ComponentModel.DesignerCategoryAttribute(\"code\")]\n    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]\n    public partial class MyMinerWarsLauncherConfigMirrorUrl {\n        \n        private string urlField;\n        \n        /// <remarks/>\n        [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]\n        public string Url {\n            get {\n                return this.urlField;\n            }\n            set {\n                this.urlField = value;\n            }\n        }\n    }\n    \n    /// <remarks/>\n    [System.CodeDom.Compiler.GeneratedCodeAttribute(\"xsd\", \"2.0.50727.3038\")]\n    [System.SerializableAttribute()]\n    [System.Diagnostics.DebuggerStepThroughAttribute()]\n    [System.ComponentModel.DesignerCategoryAttribute(\"code\")]\n    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]\n    [System.Xml.Serialization.XmlRootAttribute(Namespace=\"\", IsNullable=false)]\n    public partial class NewDataSet {\n        \n        private MyMinerWarsLauncherConfig[] itemsField;\n        \n        /// <remarks/>\n        [System.Xml.Serialization.XmlElementAttribute(\"MyMinerWarsLauncherConfig\")]\n        public MyMinerWarsLauncherConfig[] Items {\n            get {\n                return this.itemsField;\n            }\n            set {\n                this.itemsField = value;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Utils/MyMwcBuildNumbers.cs",
    "content": "﻿using System;\nusing System.IO;\n\n//  Our build numbers are internaly stored as int32.\n//  But sometimes we transfer them as string in format: MAJOR_MINOR1_MINOR2 (two digits _ three digits _ three digits)\n//  MAJOR - like Miner Wars I, Miner Wars II...\n//  MINOR1 - important release, important milestone\n//  MINOR2 - especialy for builds or small fixes\n//  In fact, minor1 and minor2 contain a lot of reserve.\n\n//  Examples:\n//  00_000_015 = 00000015\n//  01_000_005 = 01000005\n//  01_000_062 = 01000062\n//  01_001_000 = 01001000\n//  22_005_100 = 22005100\n\n\nnamespace SysUtils.Utils\n{\n    public static class MyMwcConstants\n    {\n        //  Number of bytes that our MAC password have\n        public const int MAC_PASSWORD_LENGTH = 8;\n\n        //  Command-line argument for launching Miner Wars\n        public static readonly string MINER_WARS_FROM_LAUNCHER = \"-FromLauncher\";\n    }\n\n    public static class MyMwcBuildNumbers\n    {\n        const int LENGTH_MAJOR = 2;\n        const int LENGTH_MINOR1 = 3;\n        const int LENGTH_MINOR2 = 3;\n        public const string SEPARATOR = \"_\";\n\n\n        public static string ConvertBuildNumberFromIntToString(int buildNumberInt)\n        {\n            string str = MyStringUtils.AlignIntToRight(buildNumberInt, LENGTH_MAJOR + LENGTH_MINOR1 + LENGTH_MINOR2, '0');\n            return \n                str.Substring(0, LENGTH_MAJOR) +\n                SEPARATOR + str.Substring(LENGTH_MAJOR, LENGTH_MINOR1) +\n                SEPARATOR + str.Substring(LENGTH_MAJOR + LENGTH_MINOR1, LENGTH_MINOR2);\n        }\n\n        //  Check if specified build number is valid\n        public static bool IsValidBuildNumber(string buildNumberString)\n        {\n            return ConvertBuildNumberFromStringToInt(buildNumberString) != null;\n        }\n\n        public static int? ConvertBuildNumberFromStringToInt(string buildNumberString)\n        {\n            if (buildNumberString.Length < (2 * SEPARATOR.Length + LENGTH_MAJOR + LENGTH_MINOR1 + LENGTH_MINOR2))\n            {\n                //  String is too short to contain the number\n                return null;\n            }\n\n            if ((buildNumberString.Substring(LENGTH_MAJOR, SEPARATOR.Length) != SEPARATOR) ||\n                (buildNumberString.Substring(LENGTH_MAJOR + SEPARATOR.Length + LENGTH_MINOR1, SEPARATOR.Length) != SEPARATOR))\n            {\n                //  Separators aren't where they should be\n                return null;\n            }\n\n            string major = buildNumberString.Substring(0, LENGTH_MAJOR);\n            string minor1 = buildNumberString.Substring(LENGTH_MAJOR + SEPARATOR.Length, LENGTH_MINOR1);\n            string minor2 = buildNumberString.Substring(LENGTH_MAJOR + SEPARATOR.Length + LENGTH_MINOR1 + SEPARATOR.Length, LENGTH_MINOR2);\n\n            int majorInt;\n            if (Int32.TryParse(major, out majorInt) == false)\n            {\n                return null;\n            }\n\n            int minor1Int;\n            if (Int32.TryParse(minor1, out minor1Int) == false)\n            {\n                return null;\n            }\n\n            int minor2Int;\n            if (Int32.TryParse(minor2, out minor2Int) == false)\n            {\n                return null;\n            }\n\n            return Int32.Parse(major + minor1 + minor2);\n        }\n\n        //  Gets build number from filename (used by launcher). If not possible because filename is of different format, return null.\n        public static int? GetBuildNumberFromFileName(string filename, string executableFileName, string extensionName)\n        {\n            if (filename.Length < (executableFileName.Length + 3 * SEPARATOR.Length + LENGTH_MAJOR + LENGTH_MINOR1 + LENGTH_MINOR2))\n            {\n                //  Filename is too short to contain build number\n                return null;\n            }\n\n            if (filename.Substring(executableFileName.Length, SEPARATOR.Length) != SEPARATOR)\n            {\n                //  Separators aren't where they should be\n                return null;\n            }\n\n            if (new FileInfo(filename).Extension != extensionName)\n            {\n                //  Wrong extension\n                return null;\n            }\n\n            return ConvertBuildNumberFromStringToInt(\n                filename.Substring(\n                executableFileName.Length + SEPARATOR.Length,\n                LENGTH_MAJOR + SEPARATOR.Length + LENGTH_MINOR1 + SEPARATOR.Length + LENGTH_MINOR2));\n        }\n\n        public static string GetFilenameFromBuildNumber(int buildNumber, string executableFileName)\n        {\n            return executableFileName + SEPARATOR + ConvertBuildNumberFromIntToString(buildNumber) + \".exe\";\n        }\n    }\n}"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Utils/MyMwcConstants.cs",
    "content": "using System;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing SysUtils.Utils;\nusing SysUtils;\n\nnamespace MinerWars.CommonLIB.AppCode.Utils\n{\n    public static class MyMwcMathConstants\n    {\n        //  IMPORTANT: If you change these constants, don't forget to change them also in MyMeshPartSolver\n        public const float EPSILON = 0.00001f;\n        public const float EPSILON_SQUARED = EPSILON * EPSILON;\n    }\n\n    public static class MyMwcValidationConstants\n    {\n        public const int USERNAME_LENGTH_MIN = 3;\n        public const int USERNAME_LENGTH_MAX = 15;\n        public const int EMAIL_LENGTH_MAX = 50;\n        public const int PASSWORD_LENGTH_MIN = 6;\n        public const int PASSWORD_LENGTH_MAX = 10;\n        public const int POSITION_X_MAX = 5;\n        public const int POSITION_Y_MAX = 5;\n        public const int POSITION_Z_MAX = 5;\n    }\n\n    public static class MyMwcSectorConstants\n    {\n        //  Sector size\n        public const float SECTOR_SIZE = 50000.0f;          //  Size of sector cube\n        public const float SECTOR_SIZE_HALF = SECTOR_SIZE / 2.0f;\n        public static readonly Vector3 SECTOR_SIZE_VECTOR3 = new Vector3(SECTOR_SIZE, SECTOR_SIZE, SECTOR_SIZE);\n        public static readonly float SECTOR_DIAMETER = SECTOR_SIZE_VECTOR3.Length();\n        public const float SAFE_SECTOR_SIZE = SECTOR_SIZE + 200;                //  Safe area around sector for detecting if we need to switch sectors\n        public const float SECTOR_SIZE_FOR_PHYS_OBJECTS_SIZE_HALF = (SECTOR_SIZE * 0.9f) / 2.0f;\n        public const float SAFE_SECTOR_SIZE_HALF = SAFE_SECTOR_SIZE / 2.0f;\n        public static readonly BoundingBox SAFE_SECTOR_SIZE_BOUNDING_BOX = new BoundingBox(\n            new Vector3(-SAFE_SECTOR_SIZE_HALF, -SAFE_SECTOR_SIZE_HALF, -SAFE_SECTOR_SIZE_HALF),\n            new Vector3(SAFE_SECTOR_SIZE_HALF, SAFE_SECTOR_SIZE_HALF, SAFE_SECTOR_SIZE_HALF));\n        public static readonly Vector3[] SAFE_SECTOR_SIZE_BOUNDING_BOX_CORNERS = SAFE_SECTOR_SIZE_BOUNDING_BOX.GetCorners();\n        public static readonly BoundingBox SECTOR_SIZE_FOR_PHYS_OBJECTS_BOUNDING_BOX = new BoundingBox(\n            new Vector3(-SECTOR_SIZE_FOR_PHYS_OBJECTS_SIZE_HALF, -SECTOR_SIZE_FOR_PHYS_OBJECTS_SIZE_HALF, -SECTOR_SIZE_FOR_PHYS_OBJECTS_SIZE_HALF),\n            new Vector3(SECTOR_SIZE_FOR_PHYS_OBJECTS_SIZE_HALF, SECTOR_SIZE_FOR_PHYS_OBJECTS_SIZE_HALF, SECTOR_SIZE_FOR_PHYS_OBJECTS_SIZE_HALF));\n        public static readonly BoundingBox SECTOR_SIZE_BOUNDING_BOX = new BoundingBox(\n            new Vector3(-SECTOR_SIZE_HALF, -SECTOR_SIZE_HALF, -SECTOR_SIZE_HALF),\n            new Vector3(SECTOR_SIZE_HALF, SECTOR_SIZE_HALF, SECTOR_SIZE_HALF));\n    }\n\n    public static class MyMwcUpdaterConstants\n    {\n        //  Public key for updater signatures. DON'T CHANGE IT!!!\n        public static readonly string UPDATER_PUBLIC_KEY = \"<DSAKeyValue><P>yl9hNuOfiKCg1B89VG6fCRRwp1PQXi52QL1M/3JiwWT6RCkVskY9GcaEkzWnyBxxV8V+9pCVF0F4HcFwLYisYcd6znUZW9GpMlVIX4HtOhFoginBOZ0tZeQR0MtiuV0Fo8LmznduBc/IFpILlcPrzoXi1ZCKjIBlCwJqoZWSIxU=</P><Q>166OIbJmVcAJj9V2sUqXQwtJeRk=</Q><G>Ze03E3/52qhVU/IRpW2LCF+SJ46x22b/thkYUvHoGuJvjVtKR5LgtTBjyMUzoeLcQwzP5o9aAuqT4NetVGYzvTT3tpKqDoWukscdD4vXpNo6wpxdk2Y8a8U6JF22lIgDuq8syBDK395bXejHCxZRjAeJOLG8nO2Cc7z++7Wq+Wg=</G><Y>YiLXo5PJ3b/s0jmeXNChH0OK5A0h0vnKNLQbA7AZ8VTv6esxg8isp+gmSmVfCuIjNTDwVtHaFdFZiiqZnEiBrqQL4SnLgO2AYfZnXVckZmQjVyVehRm5muPwNbw+iUOn6WAmOwkUhvRHgit/Lo1lNM7dou6HFWfZM4TxQ6UB2y4=</Y><J>8DPo3bXLcPfnkO7bIFyqhHw+qpYB0F2oGbiih5VT9oGDPDBnWhrS0QOJglIT7GMn+JODCn5N/ipZmLp13B7aM6mDJs2Nb+AFJ4C6wPyrya9riihU2H/NXSFMPalLdEHDeD7JDDZ7e/hdQRo0</J><Seed>agHDiNx5j7fa+xQcHhyXvrefm7c=</Seed><PgenCounter>ATc=</PgenCounter></DSAKeyValue>\";\n\n        public static readonly string COMMAND_LINE_ARGUMENT_UPDATER = \"-updater\";\n        public static readonly string EXECUTABLE_NAME = \"MinerWarsLauncher\";\n        public static readonly string P2P_TORRENT_NAME = \"MinerWars.torrent\";\n        public static readonly string P2P_DLL_NAME = \"KeenClientDLL2.CLR.dll\";\n\n        public static readonly string USER_AGENT = \"Miner Wars\";\n\n        public static readonly string HASH_ALGORITHM = \"sha1\";\n        public static readonly Encoding FILE_ENCODING = Encoding.ASCII;\n        public static readonly string FILES_TXT = \"Files.txt\";\n        public static readonly string CONFIG_XML = \"MyMinerWarsLauncherConfig.xml\";\n        public static readonly string FILES_COLUMN_SEPARATOR = @\"\"\"\";\n        public const int FILES_COLUMNS_COUNT = 7;\n        public static readonly string VERSION_TXT = \"Version.txt\";\n        public const int VERSION_TXT_DOWNLOAD_TIMEOUT_IN_MILLISECONDS = 10000;\n        public const int FILES_TXT_DOWNLOAD_TIMEOUT_IN_MILLISECONDS = 10000;\n        public const int CONFIG_XML_DOWNLOAD_TIMEOUT_IN_MILLISECONDS = 10000;\n        public static readonly string EXTENSION_EXE = \".exe\";\n        public static readonly string EXTENSION_DEPLOY = \".deploy\";\n        public static readonly string EXTENSION_HASH = \".hash\";\n\n        public static readonly string[] separatorCRLF = { MyStringUtils.C_CRLF };\n        public static readonly string[] separatorColumns = { MyMwcUpdaterConstants.FILES_COLUMN_SEPARATOR };\n        public const int TORRENT_CLIENT_LISTENER_PORT = 11555;\n    }\n\n    public static class MyMwcNetworkingConstants\n    {\n        // Connection is dropped when no messages are sent or received for this time period\n        public readonly static TimeSpan WCF_TIMEOUT_INACTIVITY = MyMwcFinalBuildConstants.GetValueForBuildType(TimeSpan.FromMinutes(15), TimeSpan.FromMinutes(15), TimeSpan.FromMinutes(15));\n        public readonly static TimeSpan WCF_TIMEOUT_SEND = MyMwcFinalBuildConstants.GetValueForBuildType(TimeSpan.FromSeconds(60), TimeSpan.FromSeconds(60), TimeSpan.FromSeconds(60));\n\n        public readonly static TimeSpan WCF_TIMEOUT_CLIENT_SECTOR_SERVER = TimeSpan.FromMinutes(20);\n\n        // Timeout When user unexpectedly disconnects - keep alive is half of timeout\n        public readonly static TimeSpan WCF_TIMEOUT_DISCONNECT = MyMwcFinalBuildConstants.GetValueForBuildType(TimeSpan.FromSeconds(90), TimeSpan.FromSeconds(90), TimeSpan.FromSeconds(20));\n        public readonly static TimeSpan WCF_TIMEOUT_OPEN = TimeSpan.FromSeconds(20);\n        public readonly static TimeSpan WCF_TIMEOUT_CLOSE = TimeSpan.FromSeconds(10);\n\n        // Timeout for MasterServer-SectorServer connection (should be long enought)\n        public readonly static TimeSpan WCF_TIMEOUT_USER_VALIDATION_SERVICE = MyMwcFinalBuildConstants.GetValueForBuildType(TimeSpan.FromMinutes(60), TimeSpan.FromMinutes(60), TimeSpan.FromMinutes(60));\n\n        // UDP Master server port (not used now, will be used as Multiplayer host for Lobby and NAT punching)\n        public static readonly int NETWORKING_PORT_MASTER_SERVER = MyMwcFinalBuildConstants.GetValueForBuildType(4112, 14112, 24112);\n\n        // Ports for new master server 45xx\n        public static readonly int NETWORKING_PORT_MASTER_SERVER_NEW = MyMwcFinalBuildConstants.GetValueForBuildType(4500, 14500, 24500);\n        // Mex port - for metadata exchange (used only on develop build, it sends information about service to allow automatic class generation)\n        public static readonly int NETWORKING_PORT_MASTER_SERVER_NEW_MEX = MyMwcSecrets.NETWORKING_PORT_MASTER_SERVER_NEW_MEX;\n        // User validation service, sector server uses this services\n        public static readonly int NETWORKING_PORT_MASTER_SERVER_USER_VALIDATION = MyMwcFinalBuildConstants.GetValueForBuildType(4510, 14510, 24510);\n        // Mex port - for metadata exchange (used only on develop build, it sends information about service to allow automatic class generation)\n        public static readonly int NETWORKING_PORT_MASTER_SERVER_USER_VALIDATION_MEX = MyMwcSecrets.NETWORKING_PORT_MASTER_SERVER_USER_VALIDATION_MEX;\n\n        public static readonly int NETWORKING_PORT_MULTIPLAYER_PEER = 0;\n        public static readonly string NETWORKING_MULTIPLAYER_ID = \"MW_MP\";\n\n        // Sector server ports - 5xxx\n        public static readonly int NETWORKING_PORT_SECTOR_SERVER_DEFAULT = MyMwcFinalBuildConstants.GetValueForBuildType(4505, 15000, 25000);\n        // Mex port - for metadata exchange (used only on develop build, it sends information about service to allow automatic class generation)\n        public static readonly int NETWORKING_PORT_SECTOR_SERVER_MEX = MyMwcFinalBuildConstants.GetValueForBuildType(5001, 15001, 25001);\n\n        public static readonly string WCF_SECTOR_SERVER_CN = \"SectorServer\";\n        public static readonly string WCF_SECTOR_SERVER_HASH = MyMwcSecrets.WCF_SECTOR_SERVER_HASH;\n        public static readonly string WCF_MASTER_SERVER_CN = \"MasterServer\";\n        public static readonly string WCF_MASTER_SERVER_HASH = MyMwcSecrets.WCF_MASTER_SERVER_HASH;\n\n        public static readonly string WCF_MS_PUBLIC_USERNAME = MyMwcSecrets.WCF_MS_PUBLIC_USERNAME;\n        public static readonly string WCF_MS_PUBLIC_PASSWORD = MyMwcSecrets.WCF_MS_PUBLIC_PASSWORD;\n\n        //  Simple networking - Port used by simple master server (check client version, etc)\n        public static readonly int NETWORKING_PORT_SIMPLE_SERVER = MyMwcFinalBuildConstants.GetValueForBuildType(7445, 17445, 27445);\n        \n        public static int MAX_WCF_MESSAGE_SIZE = 5 * 1024 * 1024;\n        public static int MAX_WCF_MESSAGE_POOL_SIZE = MAX_WCF_MESSAGE_SIZE * 2;\n        public const int MAX_WCF_CONNECTIONS = 4;\n\n        public static int MAX_WCF_MESSAGE_SIZE_SERVER = 16 * 1024 * 1024;\n        public static int MAX_WCF_MESSAGE_POOL_SIZE_SERVER = MAX_WCF_MESSAGE_SIZE_SERVER * 4;\n\n        public static int MAX_STRING_LENGTH = 512;\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Utils/MyMwcEncryptionSymmetricRijndael.cs",
    "content": "﻿using System;\nusing System.IO;\nusing System.Security.Cryptography;\nusing System.Text;\n\nnamespace MinerWars.CommonLIB.AppCode.Utils\n{\n    public static class MyMwcEncryptionSymmetricRijndael\n    {\n        public static string EncryptString(string inputText, string password)\n        {\n            if (inputText.Length <= 0) return \"\";\n\n            // We are now going to create an instance of the \n            // Rihndael class.  \n            RijndaelManaged RijndaelCipher = new RijndaelManaged();\n            //RijndaelCipher.BlockSize = 16 * 8;\n           \n\n            // First we need to turn the input strings into a byte array.\n            byte[] PlainText = System.Text.Encoding.Unicode.GetBytes(inputText);\n\n            // We are using salt to make it harder to guess our key\n            // using a dictionary attack.\n            byte[] Salt = Encoding.ASCII.GetBytes(password.Length.ToString());\n\n            // The (Secret Key) will be generated from the specified \n            // password and salt.\n            PasswordDeriveBytes SecretKey = new PasswordDeriveBytes(password, Salt);\n\n            // Create a encryptor from the existing SecretKey value.\n            // We use 32 value for the secret key \n            // (the default Rijndael key length is 256 bit = 32 value) and\n            // then 16 value for the IV (initialization vector),\n            // (the default Rijndael IV length is 128 bit = 16 value)\n            ICryptoTransform Encryptor = RijndaelCipher.CreateEncryptor(SecretKey.GetBytes(32), SecretKey.GetBytes(16));\n            \n            \n            // Create a MemoryStream that is going to hold the encrypted value \n            MemoryStream memoryStream = new MemoryStream();\n\n            // Create a CryptoStream through which we are going to be processing our data. \n            // CryptoStreamMode.Write means that we are going to be writing data \n            // to the stream and the output will be written in the MemoryStream\n            // we have provided. (always use write mode for encryption)\n            CryptoStream cryptoStream = new CryptoStream(memoryStream, Encryptor, CryptoStreamMode.Write);\n            \n            // Start the encryption process.\n            cryptoStream.Write(PlainText, 0, PlainText.Length);\n\n            // Finish encrypting.\n            cryptoStream.FlushFinalBlock();\n\n            // Convert our encrypted data from a memoryStream into a byte array.\n            byte[] CipherBytes = memoryStream.ToArray();\n\n            // Close both streams.\n            memoryStream.Close();\n            cryptoStream.Close();\n\n            // Convert encrypted data into a base64-encoded string.\n            // A common mistake would be to use an Encoding class for that. \n            // It does not work, because not all byte values can be\n            // represented by characters. We are going to be using Base64 encoding\n            // That is designed exactly for what we are trying to do. \n            string EncryptedData = Convert.ToBase64String(CipherBytes);\n\n            // Return encrypted string.\n            return EncryptedData;\n        }\n\n        public static string DecryptString(string inputText, string password)\n        {\n            if (inputText.Length <= 0) return \"\";\n\n            RijndaelManaged RijndaelCipher = new RijndaelManaged();\n\n            byte[] EncryptedData = Convert.FromBase64String(inputText);\n            byte[] Salt = Encoding.ASCII.GetBytes(password.Length.ToString());\n\n            PasswordDeriveBytes SecretKey = new PasswordDeriveBytes(password, Salt);\n\n            // Create a decryptor from the existing SecretKey value.\n            ICryptoTransform Decryptor = RijndaelCipher.CreateDecryptor(SecretKey.GetBytes(32), SecretKey.GetBytes(16));\n            \n            MemoryStream memoryStream = new MemoryStream(EncryptedData);\n\n            // Create a CryptoStream. (always use Read mode for decryption).\n            CryptoStream cryptoStream = new CryptoStream(memoryStream, Decryptor, CryptoStreamMode.Read);\n\n            // Since at this point we don't know what the size of decrypted data\n            // will be, allocate the buffer long enough to hold EncryptedData;\n            // DecryptedData is never longer than EncryptedData.\n            byte[] PlainText = new byte[EncryptedData.Length];\n\n            // Start decrypting.\n            int DecryptedCount = cryptoStream.Read(PlainText, 0, PlainText.Length);\n\n            memoryStream.Close();\n            cryptoStream.Close();\n\n            // Convert decrypted data into a string. \n            string DecryptedData = Encoding.Unicode.GetString(PlainText, 0, DecryptedCount);\n\n            // Return decrypted string.   \n            return DecryptedData;\n        }\n\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Utils/MyMwcEnumDuplicitiesTester.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Reflection;\nusing System.Text;\n\nnamespace MinerWars.CommonLIB.AppCode.Utils\n{\n    [AttributeUsage(AttributeTargets.Enum)]\n    public class DontCheckAttribute : Attribute\n    {\n    }\n\n    public static class MyMwcEnumDuplicitiesTester\n    {\n        private const string m_keenSWHCompanyName = \"Keen Software House\";\n        public static void CheckEnumNotDuplicitiesInRunningApplication()\n        {\n            CheckEnumNotDuplicities(m_keenSWHCompanyName);\n        }\n\n        static void CheckEnumNotDuplicities(string companyName)\n        {\n            Assembly[] assemblies = AppDomain.CurrentDomain.GetAssemblies();\n            string[] dlls = Directory.GetFiles(AppDomain.CurrentDomain.BaseDirectory, \"*.dll\");\n            List<Assembly> assembliesToTest = new List<Assembly>(assemblies.Length + dlls.Length);\n\n            foreach (var assembly in assemblies)\n            {\n                if (companyName == null || GetCompanyNameOfAssembly(assembly) == companyName)\n                {\n                    assembliesToTest.Add(assembly);\n                }\n            }\n\n            foreach (var dllPath in dlls)\n            {\n                if (!IsLoaded(assemblies, dllPath))\n                {\n                    if (companyName == null || System.Diagnostics.FileVersionInfo.GetVersionInfo(dllPath).CompanyName == companyName)\n                    {\n                        assembliesToTest.Add(Assembly.LoadFrom(dllPath));\n                    }\n                }\n            }\n\n            HashSet<object> hashSet = new HashSet<object>();\n\n            foreach (Assembly assembly in assembliesToTest)\n            {\n                TestEnumNotDuplicitiesInAssembly(assembly, hashSet);\n            }\n        }\n\n        static bool IsLoaded(Assembly[] assemblies, string assemblyPath)\n        {\n            foreach (var assembly in assemblies)\n            {\n                if (Path.GetFullPath(assembly.Location) == assemblyPath)\n                    return true;\n            }\n            return false;\n        }\n\n        /// <summary>\n        /// The company name of the calling assembly.\n        /// </summary>\n        static string GetCompanyNameOfAssembly(Assembly assembly)\n        {\n            var attr = Attribute.GetCustomAttribute(assembly, typeof(AssemblyCompanyAttribute), false) as AssemblyCompanyAttribute;\n            return attr != null ? attr.Company : String.Empty;\n        }\n\n        static void TestEnumNotDuplicitiesInAssembly(Assembly assembly, HashSet<object> hashSet)\n        {\n            foreach (Type type in assembly.GetTypes())\n            {\n                if (!type.IsEnum) continue;\n                if (type.IsDefined(typeof(DontCheckAttribute), false)) continue;\n                AssertEnumNotDuplicities(type, hashSet);\n            }\n        }\n\n        static void AssertEnumNotDuplicities(Type enumType, HashSet<object> hashSet)\n        {\n            hashSet.Clear();\n\n            foreach (var key in Enum.GetValues(enumType))\n            {\n                if (!hashSet.Add(key))\n                {\n                    throw new Exception(\"Duplicate enum found: \" + key + \" in \" + enumType.AssemblyQualifiedName);\n                }\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Utils/MyMwcEnums.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Diagnostics;\nusing System.IO;\nusing System.Linq.Expressions;\n\nnamespace MinerWars.CommonLIB.AppCode.Utils\n{\n    delegate void WriteHandler<T>(BinaryWriter writer, T value) where T : struct, IConvertible;\n    delegate T ReadHandler<T>(BinaryReader reader) where T : struct, IConvertible;\n\n    public static class MyMwcEnums\n    {\n        class EnumInfo\n        {\n            public bool IsFlag;\n            public HashSet<int> AllowedValues;\n\n            public bool IsAllowed<T>(T value)\n                where T : struct, IConvertible\n            {\n                int testValue = value.ToInt32(null);\n                if (IsFlag)\n                {                    \n                    foreach (var val in AllowedValues)\n                    {\n                        testValue &= ~val;\n                    }\n                    return testValue == 0; // When we removed all flags, it should be zero\n                }\n                else\n                {\n                    return AllowedValues.Contains(testValue);\n                }\n            }\n        }\n\n        class EnumInfo<T> : EnumInfo\n            where T : struct, IConvertible\n        {\n            public ReadHandler<T> Reader;\n            public WriteHandler<T> Writer;\n        }\n\n        static Dictionary<Type, EnumInfo> m_enumValues = new Dictionary<Type, EnumInfo>();\n\n        public static bool IsValidValue<T>(T value)\n            where T : struct, IConvertible\n        {\n            return GetInfo<T>().IsAllowed(value);\n        }\n\n        public static HashSet<int> GetAllowedValues<T>()\n            where T : struct, IConvertible\n        {\n            return GetInfo<T>().AllowedValues;\n        }\n\n        public static void Prepare<T>()\n            where T : struct, IConvertible\n        {\n            GetInfo<T>();\n        }\n\n        private static EnumInfo<T> GetInfo<T>()\n            where T : struct, IConvertible\n        {\n            var enumType = typeof(T);\n            EnumInfo enumInfo;\n            if (!m_enumValues.TryGetValue(enumType, out enumInfo))\n            {\n                enumInfo = CreateInfo<T>();\n                m_enumValues[enumType] = enumInfo;\n            }\n            return (EnumInfo<T>)enumInfo;\n        }\n\n        public static bool ReadEnum<T>(BinaryReader reader, out T value)\n            where T : struct, IConvertible\n        {\n            var info = GetInfo<T>();\n            value = info.Reader(reader);\n            return info.IsAllowed<T>(value);\n        }\n\n        public static void WriteEnum<T>(BinaryWriter writer, T value)\n            where T : struct, IConvertible\n        {\n            GetInfo<T>().Writer(writer, value);\n        }\n\n        private static EnumInfo CreateInfo<T>()\n            where T : struct, IConvertible\n        {\n            Type enumType = typeof(T);\n            Debug.Assert(enumType.IsEnum, \"T must be Enum\");\n            Debug.Assert(CheckUnderlyingType(enumType), \"Enum underlying type must be sbyte, short, int, byte or ushort\");\n            return new EnumInfo<T>()\n            {\n                IsFlag = Attribute.IsDefined(enumType, typeof(FlagsAttribute)),\n                AllowedValues = new HashSet<int>(Enum.GetValues(enumType).OfType<T>().Select(s => s.ToInt32(null))),\n                Reader = CreateReader<T>(),\n                Writer = CreateWriter<T>(),\n            };\n        }\n\n        private static bool CheckUnderlyingType(Type enumType)\n        {\n            var underlyingType = enumType.GetEnumUnderlyingType();\n            return underlyingType == typeof(byte) || underlyingType == typeof(short) || underlyingType == typeof(int) || underlyingType == typeof(sbyte) || underlyingType == typeof(ushort);\n        }\n\n        private static ReadHandler<T> CreateReader<T>()\n            where T : struct, IConvertible\n        {\n            var enumType = typeof(T);\n            var underlying = enumType.GetEnumUnderlyingType();\n            if (underlying == typeof(sbyte))\n            {\n                var caster = CreateEnumCaster<sbyte, T>();\n                return new ReadHandler<T>((s) => caster(s.ReadSByte()));\n            }\n            else if (underlying == typeof(short))\n            {\n                var caster = CreateEnumCaster<short, T>();\n                return new ReadHandler<T>((s) => caster(s.ReadInt16()));\n            }\n            else if (underlying == typeof(int))\n            {\n                var caster = CreateEnumCaster<int, T>();\n                return new ReadHandler<T>((s) => caster(s.ReadInt32()));\n            }\n            else if (underlying == typeof(long))\n            {\n                var caster = CreateEnumCaster<long, T>();\n                return new ReadHandler<T>((s) => caster(s.ReadInt64()));\n            }\n            else if (underlying == typeof(byte))\n            {\n                var caster = CreateEnumCaster<byte, T>();\n                return new ReadHandler<T>((s) => caster(s.ReadByte()));\n            }\n            else if (underlying == typeof(ushort))\n            {\n                var caster = CreateEnumCaster<ushort, T>();\n                return new ReadHandler<T>((s) => caster(s.ReadUInt16()));\n            }\n            else if (underlying == typeof(uint))\n            {\n                var caster = CreateEnumCaster<uint, T>();\n                return new ReadHandler<T>((s) => caster(s.ReadUInt32()));\n            }\n            else if (underlying == typeof(ulong))\n            {\n                var caster = CreateEnumCaster<ulong, T>();\n                return new ReadHandler<T>((s) => caster(s.ReadUInt64()));\n            }\n            else\n            {\n                throw new InvalidOperationException(\"Unsupported enum underlying type, use sbyte, short, int, long, byte, ushort, uint or ulong\");\n            }\n        }\n\n        private static WriteHandler<T> CreateWriter<T>()\n            where T : struct, IConvertible\n        {\n            var enumType = typeof(T);\n            var underlying = enumType.GetEnumUnderlyingType();\n            if (underlying == typeof(sbyte))\n            {\n                var caster = CreateNumberCaster<sbyte, T>();\n                return new WriteHandler<T>((s, val) => s.Write(caster(val)));\n            }\n            else if (underlying == typeof(short))\n            {\n                var caster = CreateNumberCaster<short, T>();\n                return new WriteHandler<T>((s, val) => s.Write(caster(val)));\n            }\n            else if (underlying == typeof(int))\n            {\n                var caster = CreateNumberCaster<int, T>();\n                return new WriteHandler<T>((s, val) => s.Write(caster(val)));\n            }\n            else if (underlying == typeof(long))\n            {\n                var caster = CreateNumberCaster<long, T>();\n                return new WriteHandler<T>((s, val) => s.Write(caster(val)));\n            }\n            else if (underlying == typeof(byte))\n            {\n                var caster = CreateNumberCaster<byte, T>();\n                return new WriteHandler<T>((s, val) => s.Write(caster(val)));\n            }\n            else if (underlying == typeof(ushort))\n            {\n                var caster = CreateNumberCaster<ushort, T>();\n                return new WriteHandler<T>((s, val) => s.Write(caster(val)));\n            }\n            else if (underlying == typeof(uint))\n            {\n                var caster = CreateNumberCaster<uint, T>();\n                return new WriteHandler<T>((s, val) => s.Write(caster(val)));\n            }\n            else if (underlying == typeof(ulong))\n            {\n                var caster = CreateNumberCaster<ulong, T>();\n                return new WriteHandler<T>((s, val) => s.Write(caster(val)));\n            }\n            else\n            {\n                throw new InvalidOperationException(\"Unsupported enum underlying type, use sbyte, short, int, long, byte, ushort, uint or ulong\");\n            }\n        }\n\n        private static Func<TUnderlying, TEnum> CreateEnumCaster<TUnderlying, TEnum>()\n            where TEnum : struct, IConvertible\n            where TUnderlying : struct\n        {\n            var param = Expression.Parameter(typeof(TUnderlying));\n            UnaryExpression caster = Expression.Convert(param, typeof(TEnum));\n            return Expression.Lambda<Func<TUnderlying, TEnum>>(caster, param).Compile();\n        }\n\n        private static Func<TEnum, TUnderlying> CreateNumberCaster<TUnderlying, TEnum>()\n            where TEnum : struct, IConvertible\n            where TUnderlying : struct\n        {\n            var param = Expression.Parameter(typeof(TEnum));\n            UnaryExpression caster = Expression.Convert(param, typeof(TUnderlying));\n            return Expression.Lambda<Func<TEnum, TUnderlying>>(caster, param).Compile();\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Utils/MyMwcFakes.cs",
    "content": "﻿namespace MinerWars.CommonLIB.AppCode.Utils\n{\n    static class MyMwcFakes\n    {\n        public static int NETWORK_SEND_COUNTER = 0;\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Utils/MyMwcLog.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.IO;\nusing System.Threading;\nusing System.Text;\n\nnamespace SysUtils.Utils\n{\n    public enum MyMwcLogEventEnum\n    {\n        All,\n        SequencedMessageDebugging,\n    }\n\n    public static class MyMwcLog\n    {\n        struct MyLogIndentKey\n        {\n            public int ThreadId;\n            public int Indent;     //  Can be 0, 1, 2, 3, ...\n\n            public MyLogIndentKey(int threadId, int indent)\n            {\n                ThreadId = threadId;\n                Indent = indent;\n            }\n        }\n\n        struct MyLogIndentValue\n        {\n            public long LastGcTotalMemory;\n            public long LastWorkingSet;\n            public DateTimeOffset LastDateTimeOffset;     //  DateTimeOffset.Now doesn't do garbage (DateTime.Now does internal allocations)\n\n            public MyLogIndentValue(long lastGcTotalMemory, long lastWorkingSet, DateTimeOffset lastDateTimeOffset)\n            {\n                LastGcTotalMemory = lastGcTotalMemory;\n                LastWorkingSet = lastWorkingSet;\n                LastDateTimeOffset = lastDateTimeOffset;\n            }\n        }\n\n        static bool LogForMemoryProfiler = false;\n        static bool m_enabled = false;          //  Must be false, beuuase MW web site must not write into log file\n        static FileStream m_fileStream;\t\t\t//\tUsed for opening and closing the file\n        static StreamWriter m_streamWriter;\t\t//\tUsed for writing into the file\n        static readonly Object m_lock = new Object();\n        static Dictionary<int, int> m_indentsByThread;\n        private static Dictionary<MyLogIndentKey, MyLogIndentValue> m_indents;\n        static string m_filepath;\n        static MyMwcLogEventEnum m_eventType;\n\n        public static void Init(string applicationFolder, string logFileName, StringBuilder appVersionString, string buildTypeString)\n        {\n            Init(applicationFolder, logFileName, appVersionString, buildTypeString, MyMwcLogEventEnum.All);\n        }\n\n        public static void Init(string applicationFolder, string logFileName, StringBuilder appVersionString, string buildTypeString, MyMwcLogEventEnum eventType)\n        {\n            lock (m_lock)\n            {\n                try\n                {\n                    //  Get path to application user-data folder, create new subfolder for MinerWars application and place here log file\n                    m_filepath = Path.Combine(applicationFolder, logFileName);\n                    MyFileSystemUtils.CreateFolderForFile(m_filepath);\n                    m_fileStream = new FileStream(m_filepath, FileMode.Create, FileAccess.Write, FileShare.Read);\n                    m_streamWriter = new StreamWriter(m_fileStream);\n                    m_enabled = true;\n                    m_eventType = eventType;\n                }\n                catch (Exception)\n                {\n                    //  Ignore exception - the game must run even if log file can't be used\n                }\n\n                m_indentsByThread = new Dictionary<int, int>();\n                m_indents = new Dictionary<MyLogIndentKey, MyLogIndentValue>();\n\n                int timezone = (int) Math.Round((DateTime.Now - DateTime.UtcNow).TotalHours);\n\n                WriteLine(\"Log Started\");\n                WriteLine(String.Format(\"Timezone (local - UTC): {0}h\", timezone));\n                WriteLine(\"App Version: \" + appVersionString);\n                WriteLine(\"Build Type: \" + buildTypeString);\n            }\n        }\n\n        /// <summary>\n        /// Gets or sets value representing information written to log.\n        /// When EventType is MyMwcLogEventEnum.All, everything is logged.\n        /// When EventType is anything else, only there events are logged.\n        /// </summary>\n        public static MyMwcLogEventEnum EventType\n        {\n            get\n            {\n                lock (m_lock)\n                {\n                    return m_eventType;\n                }\n            }\n            set\n            {\n                lock (m_lock)\n                {\n                    m_eventType = value;\n                }\n            }\n        }\n\n        public static string GetFilePath()\n        {\n            lock (m_lock)\n            {\n                return m_filepath;\n            }\n        }\n\n        public static void IncreaseIndent(LoggingOptions option)\n        {\n            if (LogFlag(option))\n            {\n                IncreaseIndent();\n            }\n        }\n\n        public static void IncreaseIndent()\n        {\n            if (m_enabled == false) return;\n\n            lock (m_lock)\n            {\n                int threadId = GetThreadId();\n                m_indentsByThread[threadId] = GetIdentByThread(threadId) + 1;\n\n                MyLogIndentKey indentKey = new MyLogIndentKey(threadId, m_indentsByThread[threadId]);\n                m_indents[indentKey] = new MyLogIndentValue(GetManagedMemory(), GetSystemMemory(), DateTimeOffset.Now);\n\n                if (LogForMemoryProfiler)\n                    MyMemoryLogs.StartEvent();\n            }\n\n            LogMemoryInfo(null);\n        }\n\n        public static bool IsIndentKeyIncreased()\n        {\n            if (m_enabled == false) return false;\n\n            lock (m_lock)\n            {\n                int threadId = GetThreadId();\n                MyLogIndentKey indentKey = new MyLogIndentKey(threadId, GetIdentByThread(threadId));\n\n                //  If this fails, then order of IncreaseIndent/DecreaseIndent was wrong, or duplicate, etc\n                return m_indents.ContainsKey(indentKey);\n            }\n        }\n\n        public static void DecreaseIndent(LoggingOptions option)\n        {\n            if (LogFlag(option))\n            {\n                DecreaseIndent();\n            }\n        }\n\n        public static void DecreaseIndent()\n        {\n            if (m_enabled == false) return;\n\n            MyLogIndentValue indentValue;\n\n            lock (m_lock)\n            {\n                int threadId = GetThreadId();\n                MyLogIndentKey indentKey = new MyLogIndentKey(threadId, GetIdentByThread(threadId));\n\n                //  If this fails, then order of IncreaseIndent/DecreaseIndent was wrong, or duplicate, etc\n                MyCommonDebugUtils.AssertDebug(m_indents.ContainsKey(indentKey));\n\n                indentValue = m_indents[indentKey];\n\n                if (LogForMemoryProfiler)\n                {\n                    MyMemoryLogs.MyMemoryEvent memEvent = new MyMemoryLogs.MyMemoryEvent();\n                    memEvent.DeltaTime = (float)(DateTimeOffset.Now - indentValue.LastDateTimeOffset).TotalMilliseconds / 1000.0f;\n                    memEvent.ManagedEndSize = GetManagedMemory();\n                    memEvent.ProcessEndSize = GetSystemMemory();\n                    memEvent.ManagedStartSize = indentValue.LastGcTotalMemory;\n                    memEvent.ProcessStartSize = indentValue.LastWorkingSet;\n                    MyMemoryLogs.EndEvent(memEvent);\n                }\n                \n            }\n            LogMemoryInfo(indentValue);\n\n            lock (m_lock)\n            {\n                int threadId = GetThreadId();\n                m_indentsByThread[threadId] = GetIdentByThread(threadId) - 1;\n\n            }\n        }\n\n        //  Log memory info\n        static void LogMemoryInfo(MyLogIndentValue? indentValue)\n        {\n            if (m_enabled == false) return;\n\n            if (MyMwcFinalBuildConstants.EnableLoggingGarbageCollectionCalls == false)\n                return;\n\n            WriteLine(\"*** Managed memory: \" + GetFormatedMemorySize(GetManagedMemory()));\n            WriteLine(\"*** System memory: \" + GetFormatedMemorySize(GetSystemMemory()));\n\n            if (indentValue != null)\n            {\n                WriteLine(\"******* Delta - Managed memory: \" + GetFormatedMemorySize(GetManagedMemory() - indentValue.Value.LastGcTotalMemory));\n                WriteLine(\"******* Delta - System memory: \" + GetFormatedMemorySize(GetSystemMemory() - indentValue.Value.LastWorkingSet));\n                WriteLine(\"******* Delta - Time: \" + MyValueFormatter.GetFormatedFloat((float)(DateTimeOffset.Now - indentValue.Value.LastDateTimeOffset).TotalMilliseconds / 1000.0f, 4) + \" sec\");\n            }\n        }\n\n        static string GetFormatedMemorySize(long bytesCount)\n        {\n            return MyValueFormatter.GetFormatedFloat(bytesCount / 1024.0f / 1024.0f, 3) + \" Mb (\" +\n                   MyValueFormatter.GetFormatedLong(bytesCount) + \" bytes)\";\n        }\n\n        static long GetManagedMemory()\n        {\n            return GC.GetTotalMemory(false);\n        }\n\n        static long GetSystemMemory()\n        {\n            return Environment.WorkingSet;\n        }\n\n        //  Log memory info\n        public static void LogMemoryInfo()\n        {\n            LogMemoryInfo(null);\n        }\n\n        //\tMust be called before application ends\n        public static void Close()\n        {\n            //Debug.Close();\n\n            if (m_enabled == false) return;\n\n            lock (m_lock)\n            {\n                WriteLine(\"Log Closed\");\n\n                m_streamWriter.Close();\n                m_fileStream.Close();\n\n                //\tOnly for making sure that nobody will call WriteLine after Close\n                m_fileStream = null;\n                m_streamWriter = null;\n\n                m_enabled = false;\n            }\n        }\n\n        public static bool LogFlag(LoggingOptions option)\n        {\n            long lValue = Convert.ToInt64(MyMwcFinalBuildConstants.LOGGING_OPTIONS);\n            long lFlag = Convert.ToInt64(option);\n\n            return (lValue & lFlag) != 0;\n        }\n\n        public static void WriteLine(string message, LoggingOptions option)\n        {\n            if (LogFlag(option))\n            {\n                WriteLine(message);\n            }\n        }\n\n        public static void WriteLine(Exception ex)\n        {\n            WriteLine(MyMwcLogEventEnum.All, ex);\n        }\n\n        //  Write an exception on new line\n        public static void WriteLine(MyMwcLogEventEnum eventType, Exception ex)\n        {\n            if (m_enabled == false) return;\n\n            WriteLine(eventType, \"Exception occured: \" + ((ex == null) ? \"null\" : ex.ToString()));\n            if (ex != null && ex.InnerException != null)\n            {\n                WriteLine(eventType, \"Inner Exception: \" + ex.InnerException.ToString());\n            }\n        }\n\n        public static void WriteLine(string msg)\n        {\n            WriteLine(MyMwcLogEventEnum.All, msg);\n\n            if (LogForMemoryProfiler)\n                MyMemoryLogs.AddConsoleLine(msg);\n        }\n\n        //  Write a string on new line\n        public static void WriteLine(MyMwcLogEventEnum eventType, string msg)\n        {\n            if (m_enabled == false) return;\n\n            lock (m_lock)\n            {\n                // If write all or write this event type\n                if (m_eventType == MyMwcLogEventEnum.All || eventType == m_eventType)\n                {\n                    m_streamWriter.WriteLine(GetWithDateTimeAndThreadId(msg));\n                    m_streamWriter.Flush();\n                }\n            }\n\n            //Debug.WriteLine(msg);\n        }\n\n        public static void Write(string msg)\n        {\n            Write(MyMwcLogEventEnum.All, msg);\n        }\n\n        //  Write a string on EXISTING line\n        public static void Write(MyMwcLogEventEnum eventType, string msg)\n        {\n            if (m_enabled == false) return;\n\n            lock (m_lock)\n            {\n                // If write all or write this event type\n                if (m_eventType == MyMwcLogEventEnum.All || eventType == m_eventType)\n                {\n                    m_streamWriter.Write(GetWithDateTimeAndThreadId(msg));\n                    m_streamWriter.Flush();\n                }\n            }\n\n            //Debug.Write(msg);\n        }\n\n        //  Network verbose logging will work only ENABLE_NETWORK_VERBOSE_LOGGING is defined in MinerWarsCommonLIB project properties\n        //  Otherwise it won't be even in the exe - I have checked it through Reflector. It's same behaviour as Debug.Assert\n        [Conditional(\"ENABLE_NETWORK_VERBOSE_LOGGING\")]\n        public static void IfNetVerbose_AddToLog(string msg)\n        {\n            if (m_enabled == false) return;\n\n            WriteLine(msg);\n        }\n\n        //  Network verbose logging will work only ENABLE_NETWORK_VERBOSE_LOGGING is defined in MinerWarsCommonLIB project properties\n        //  Otherwise it won't be even in the exe - I have checked it through Reflector. It's same behaviour as Debug.Assert\n        [Conditional(\"ENABLE_NETWORK_VERBOSE_LOGGING\")]\n        public static void IfNetVerbose_IncreaseIndent()\n        {\n            IncreaseIndent();\n        }\n\n        //  Network verbose logging will work only ENABLE_NETWORK_VERBOSE_LOGGING is defined in MinerWarsCommonLIB project properties\n        //  Otherwise it won't be even in the exe - I have checked it through Reflector. It's same behaviour as Debug.Assert\n        [Conditional(\"ENABLE_NETWORK_VERBOSE_LOGGING\")]\n        public static void IfNetVerbose_DecreaseIndent()\n        {\n            DecreaseIndent();\n        }\n\n        //  Log info about ThreadPool\n        public static void LogThreadPoolInfo()\n        {\n            if (m_enabled == false) return;\n\n            WriteLine(\"LogThreadPoolInfo - START\");\n            IncreaseIndent();\n\n            int workerThreads;\n            int completionPortThreads;\n\n            ThreadPool.GetMaxThreads(out workerThreads, out completionPortThreads);\n            WriteLine(\"GetMaxThreads.WorkerThreads: \" + workerThreads);\n            WriteLine(\"GetMaxThreads.CompletionPortThreads: \" + completionPortThreads);\n\n            ThreadPool.GetMinThreads(out workerThreads, out completionPortThreads);\n            WriteLine(\"GetMinThreads.WorkerThreads: \" + workerThreads);\n            WriteLine(\"GetMinThreads.CompletionPortThreads: \" + completionPortThreads);\n\n            ThreadPool.GetAvailableThreads(out workerThreads, out completionPortThreads);\n            WriteLine(\"GetAvailableThreads.WorkerThreads: \" + workerThreads);\n            WriteLine(\"GetAvailableThreads.WompletionPortThreads: \" + completionPortThreads);\n\n            DecreaseIndent();\n            WriteLine(\"LogThreadPoolInfo - END\");\n        }\n\n        //\tReturn message with included datetime information. We are using when logging.\n        static String GetWithDateTimeAndThreadId(string msg)\n        {\n            return MyValueFormatter.GetFormatedDateTimeOffset(DateTimeOffset.Now) + \" - \" +\n                \"Thread: \" + string.Format(\"{0,4}\", GetThreadId()) + \" ->  \" +\n                new String(' ', GetIdentByThread(GetThreadId()) * 3) +\n                msg;\n        }\n\n        static int GetThreadId()\n        {\n            return Thread.CurrentThread.ManagedThreadId;\n        }\n\n        //  Get actual ident for specified thread. If not specified yet, we assume it's zero.\n        static int GetIdentByThread(int threadId)\n        {\n            int retVal;\n            if (m_indentsByThread.TryGetValue(threadId, out retVal) == false)\n            {\n                retVal = 0;\n            }\n\n            //  If retVal is negative, then someone used wrong order of increase ident and decrease ident\n            //  E.g. used MyMwcLog.DecreaseIndent(); at the start of a method whereas there should be MyMwcLog.IncreaseIndent();\n            MyCommonDebugUtils.AssertDebug(retVal >= 0);\n\n            return retVal;\n        }\n    }\n}"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Utils/MyMwcRandomExtensions.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace System\n{\n    public static class MyMwcRandomExtensions\n    {\n        /// <summary>\n        /// Return number from -3,3\n        /// </summary>\n        /// <param name=\"rnd\"></param>\n        /// <returns></returns>\n        public static float FloatNormal(this Random rnd)\n        {\n            // Use Box-Muller algorithm\n            double u1 = rnd.NextDouble();\n            double u2 = rnd.NextDouble();\n            double r = Math.Sqrt(-2.0 * Math.Log(u1));\n            double theta = 2.0 * Math.PI * u2;\n            return (float)(r * Math.Sin(theta));\n            //return (phi((float)rnd.NextDouble() * 2 - 1) - 0.15f) / 0.7f;\n        }\n\n        /// <summary>\n        /// \n        /// </summary>\n        /// <param name=\"rnd\"></param>\n        /// <param name=\"mean\"></param>\n        /// <param name=\"standardDeviation\">0.2f gets numbers aprox from -1,1</param>\n        /// <returns></returns>\n        public static float FloatNormal(this Random rnd, float mean, float standardDeviation)\n        {\n            if (standardDeviation <= 0.0)\n            {\n                string msg = string.Format(\"Shape must be positive. Received {0}.\", standardDeviation);\n                throw new ArgumentOutOfRangeException(msg);\n            }\n            return mean + standardDeviation * FloatNormal(rnd);\n        }\n\n        public static float phi(float x)\n        {\n            const float a1 = 0.254829592f;\n            const float a2 = -0.284496736f;\n            const float a3 = 1.421413741f;\n            const float a4 = -1.453152027f;\n            const float a5 = 1.061405429f;\n            const float p = 0.3275911f;\n\n            float sign = 1;\n            if (x < 0)\n            {\n                sign = -1;\n            }\n            x = (float)(Math.Abs(x) / Math.Sqrt(2.0f));\n\n            //# A&S formula 7.1.26\n            float t = 1.0f / (1.0f + p * x);\n            float y = 1.0f - (((((a5 * t + a4) * t) + a3) * t + a2) * t + a1) * t * (float)Math.Exp(-x * x);\n\n            return 0.5f * (1.0f + sign * y);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Utils/MyMwcSecrets.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing SysUtils;\n\nnamespace MinerWars.CommonLIB.AppCode.Utils\n{\n    /// <summary>\n    /// Secret constants, should not be published when releasing source codes\n    /// </summary>\n    public static class MyMwcSecrets\n    {\n        public static readonly string MOD_NAME = \"UNNAMED MOD\";\n        public static readonly string GAME_HASH = \"\";\n\n        //////////////////////////////////////////////////////////////////////////////////////////////////\n        // Final build constants\n        //////////////////////////////////////////////////////////////////////////////////////////////////\n\n        public static readonly string MASTER_SERVER_ADDRESS_DEVELOP = \"\";\n        public static readonly string UPDATER_URL_DEVELOP = \"\";\n\n        //  For upload to S3\n        public static readonly string UPDATE_BUCKET_NAME_DEVELOP = \"\";\n\n        //  For upload to S3 Download mirror\n        public static readonly string DOWNLOAD_BUCKET_NAME_DEVELOP = \"\";\n\n        public static readonly string ANNOUNCE_URL_DEVELOP = \"\";\n        public static readonly int TRACKER_PORT_DEVELOP = 0;\n\n        public static readonly string UPDATER_CDN_MIRROR_URL_DEVELOP = \"\";\n\n        //  Url of MinerWarsSetup.torrent file\n        public static readonly string SETUPTORRENT_URL_DEVELOP = \"\";\n        public static readonly string SETUPTORRENTMIRROR_URL_DEVELOP = \"\";\n        public static readonly string SETUPTORRENT_BUCKET_NAME_DEVELOP = \"\";\n\n        //////////////////////////////////////////////////////////////////////////////////////////////////\n        // Networking constants\n        //////////////////////////////////////////////////////////////////////////////////////////////////\n\n        public static readonly string WCF_SECTOR_SERVER_HASH = \"\";\n        public static readonly string WCF_MASTER_SERVER_HASH = \"\";\n\n        // Editor and \"Multiplayer\"/\"Host\"/\"My sectors\" won't work, modders must change it to save that locally\n        public static readonly string WCF_MS_PUBLIC_USERNAME = \"\";\n        public static readonly string WCF_MS_PUBLIC_PASSWORD = \"\";\n\n        public static readonly int NETWORKING_PORT_MASTER_SERVER_NEW_MEX = 0;\n        public static readonly int NETWORKING_PORT_MASTER_SERVER_USER_VALIDATION_MEX = 0;\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Utils/MyMwcSingleCrypto.cs",
    "content": "﻿//  This class is used for single encryption and decryption of byte arrays.\n//  It's symmetric and doesn't change number of bytes. Just changed the values.\n//  These passwords are stored in source code and never sent through network.\n//  These class can't be used to verify if encrypted values were encrypted with some password. It can just decrypt and hope it will be OK.\n\nnamespace SysUtils\n{\n    public class MyMwcSingleCrypto\n    {\n        readonly byte[] m_password;\n\n\n        private MyMwcSingleCrypto() { }\n\n        public MyMwcSingleCrypto(byte[] password)\n        {\n            m_password = (byte[])password.Clone();\n        }\n\n        //  Encrypts specified byte array, thus changing values, but not size of the array\n        public void Encrypt(byte[] data, int length)\n        {\n            int passwordPosition = 0;\n            for (int i = 0; i < length; i++)\n            {\n                //  This is the \"encoding\" part\n                data[i] = (byte)(data[i] + m_password[passwordPosition]);\n\n                passwordPosition++;\n                passwordPosition = passwordPosition % m_password.Length;\n            }\n        }\n\n        //  Decrypts specified byte array, thus changing values, but not size of the array\n        public void Decrypt(byte[] data, int length)\n        {\n            int passwordPosition = 0;\n            for (int i = 0; i < length; i++)\n            {\n                //  This is the \"decoding\" part\n                data[i] = (byte)(data[i] - m_password[passwordPosition]);\n\n                passwordPosition++;\n                passwordPosition = passwordPosition % m_password.Length;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Utils/MyMwcSingleProgramInstance.cs",
    "content": "﻿using System.Reflection;\nusing System.Threading;\n\n//  Single Process Instance Object\n//  Enforcing a rule that only one instance of process is running is an interesting task. In order to enhance the detection of other instances of a process, \n//  I decided to use a named mutex synchronization object. \n//  http://www.codeproject.com/KB/cs/cssingprocess.aspx\n\nnamespace MinerWars.CommonLIB.AppCode.Utils\n{\n    public class MyMwcSingleProgramInstance\n    {\n        //  Win32 API calls necesary to raise an unowned processs main window\n        //[DllImport(\"user32.dll\")] \n        //private static extern bool SetForegroundWindow(IntPtr hWnd);\n        //[DllImport(\"user32.dll\")] \n        //private static extern bool ShowWindowAsync(IntPtr hWnd,int nCmdShow);\n        //[DllImport(\"user32.dll\")] \n        //private static extern bool IsIconic(IntPtr hWnd);\n\n        //private const int SW_RESTORE = 9;\n\n        Mutex m_mutex;\n        bool m_weOwn = false;\n\n\n        public MyMwcSingleProgramInstance()\n        {   \n            //  Initialize a named mutex and attempt to\n            //  get ownership immediately \n            m_mutex = new Mutex(\n                true, // desire intial ownership\n                Assembly.GetExecutingAssembly().GetName().Name, out m_weOwn);\n        }\n\n        public MyMwcSingleProgramInstance(string identifier)\n        {   \n            //  Initialize a named mutex and attempt to\n            //  get ownership immediately.\n            //  se an addtional identifier to lower\n            //  our chances of another process creating\n            //  a mutex with the same name.\n            \n            m_mutex = new Mutex(\n                true, // desire intial ownership\n                identifier, out m_weOwn);\n\n            //m_mutex = new Mutex(\n            //    true, // desire intial ownership\n            //    Assembly.GetExecutingAssembly().GetName().Name + identifier, out m_weOwn);\n        }\n\n        public bool IsSingleInstance\n        {\n            //  If we don't own the mutex than\n            //  we are not the first instance.\n            get {return m_weOwn;}\n        }\n\n        //public void RaiseOtherProcess()\n        //{\n        //    Process proc = Process.GetCurrentProcess();\n\n        //    //  Using Process.ProcessName does not function properly when\n        //    //  the actual name exceeds 15 characters. Using the assembly \n        //    //  name takes care of this quirk and is more accruate than \n        //    //  other work arounds.\n\n        //    string assemblyName =  Assembly.GetExecutingAssembly().GetName().Name;\n        //    foreach (Process otherProc in Process.GetProcessesByName(assemblyName))\n        //    {\n        //        //  Ignore \"this\" process\n        //        if (proc.Id != otherProc.Id)\n        //        {\n        //            // Found a \"same named process\".\n        //            // Assume it is the one we want brought to the foreground.\n        //            // Use the Win32 API to bring it to the foreground.\n        //            IntPtr hWnd = otherProc.MainWindowHandle;\n        //            if (IsIconic(hWnd))\n        //            {\n        //                ShowWindowAsync(hWnd,SW_RESTORE);\n        //            }\n        //            SetForegroundWindow(hWnd);\n        //            break;\n        //        }\n        //    }\n        //}\n\n        public void Close()\n        {\n            if (m_weOwn)\n            {\n                //  If we own the mutex than release it so that other \"same\" processes can now start.\n                m_mutex.ReleaseMutex();\n                m_mutex.Close();    //  It looks like we MUST call Close, otherwise mutex stays alive and we can't start another process even if original is already gone....\n                m_weOwn = false;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Utils/MyMwcStructs.cs",
    "content": "﻿using MinerWarsMath;\n\nnamespace MinerWars.CommonLIB.AppCode.Utils\n{\n    using System;\n    using System.Collections.Generic;\n    using System.Reflection;\n    using SysUtils;\n    using System.Runtime.Serialization;\n\n    //  Integer version of Vector2, not yet fully implemented\n    public struct MyMwcVector2Int\n    {\n        public int X;\n        public int Y;\n\n        public MyMwcVector2Int(int x, int y)\n        {\n            X = x;\n            Y = y;\n        }\n\n        public override string ToString()\n        {\n            return X + \", \" + Y;\n        }\n\n        public static implicit operator Vector2(MyMwcVector2Int intVector)\n        {\n            return new Vector2(intVector.X, intVector.Y);\n        }\n    }\n\n    //  Integer version of Vector3, not yet fully implemented\n    // This is used in WCF methods\n    [Obfuscation(Feature = MyMwcFinalBuildConstants.OBFUSCATION_EXCEPTION_FEATURE, Exclude = true, ApplyToMembers = true)]\n    [DataContract]\n    public struct MyMwcVector3Int : IEquatable<MyMwcVector3Int>\n    {\n        [DataMember(Name = \"X\")]\n        public int X;\n\n        [DataMember(Name = \"Y\")]\n        public int Y;\n\n        [DataMember(Name = \"Z\")]\n        public int Z;\n\n        public MyMwcVector3Int(int x, int y, int z)\n        {\n            X = x;\n            Y = y;\n            Z = z;\n        }\n\n        public override string ToString()\n        {\n            return X + \", \" + Y + \", \" + Z;\n        }\n\n        public bool Equals(MyMwcVector3Int other)\n        {\n            return other.X == X && other.Y == Y && other.Z == Z;\n        }\n\n        public override bool Equals(object obj)\n        {\n            if (ReferenceEquals(null, obj)) return false;\n            if (obj.GetType() != typeof(MyMwcVector3Int)) return false;\n            return Equals((MyMwcVector3Int)obj);\n        }\n\n        public override int GetHashCode()\n        {\n            unchecked\n            {\n                int result = X;\n                result = (result * 397) ^ Y;\n                result = (result * 397) ^ Z;\n                return result;\n            }\n        }\n\n        /// <summary>\n        /// Calculates rectangular distance.\n        /// It's how many sectors you have to travel to get to other sector from current sector.\n        /// </summary>\n        public int RectangularDistance(MyMwcVector3Int otherVector)\n        {\n            return Math.Abs(X - otherVector.X) + Math.Abs(Y - otherVector.Y) + Math.Abs(Z - otherVector.Z);\n        }\n\n        public static MyMwcVector3Int operator *(MyMwcVector3Int a, MyMwcVector3Int b)\n        {\n            return new MyMwcVector3Int(a.X * b.X, a.Y * b.Y, a.Z * b.Z);\n        }\n\n        public static bool operator ==(MyMwcVector3Int a, MyMwcVector3Int b)\n        {\n            return a.X == b.X && a.Y == b.Y && a.Z == b.Z;\n        }\n\n        public static bool operator !=(MyMwcVector3Int a, MyMwcVector3Int b)\n        {\n            return !(a == b);\n        }\n\n        public static Vector3 operator *(MyMwcVector3Int a, Vector3 b)\n        {\n            return new Vector3(a.X * b.X, a.Y * b.Y, a.Z * b.Z);\n        }\n\n        public static Vector3 operator *(Vector3 a, MyMwcVector3Int b)\n        {\n            return new Vector3(a.X * b.X, a.Y * b.Y, a.Z * b.Z);\n        }\n\n        public static Vector3 operator *(float num, MyMwcVector3Int b)\n        {\n            return new Vector3(num * b.X, num * b.Y, num * b.Z);\n        }\n\n        public static Vector3 operator *(MyMwcVector3Int a, float num)\n        {\n            return new Vector3(num * a.X, num * a.Y, num * a.Z);\n        }\n\n        public static MyMwcVector3Int Min(MyMwcVector3Int value1, MyMwcVector3Int value2)\n        {\n            MyMwcVector3Int vector3;\n            vector3.X = value1.X < value2.X ? value1.X : value2.X;\n            vector3.Y = value1.Y < value2.Y ? value1.Y : value2.Y;\n            vector3.Z = value1.Z < value2.Z ? value1.Z : value2.Z;\n            return vector3;\n        }\n\n        public static MyMwcVector3Int Max(MyMwcVector3Int value1, MyMwcVector3Int value2)\n        {\n            MyMwcVector3Int vector3;\n            vector3.X = value1.X > value2.X ? value1.X : value2.X;\n            vector3.Y = value1.Y > value2.Y ? value1.Y : value2.Y;\n            vector3.Z = value1.Z > value2.Z ? value1.Z : value2.Z;\n            return vector3;\n        }\n    }\n\n    //  Integer version of Vector4, not yet fully implemented\n    public struct MyMwcVector4Int\n    {\n        public int X;\n        public int Y;\n        public int Z;\n        public int W;\n\n        public MyMwcVector4Int(int x, int y, int z, int w)\n        {\n            X = x;\n            Y = y;\n            Z = z;\n            W = w;\n        }\n\n        public override string ToString()\n        {\n            return X + \", \" + Y + \", \" + Z + \", \" + W;\n        }\n    }\n\n    //  Short version of Vector3, not yet fully implemented\n    [Serializable]\n    public struct MyMwcVector3Short\n    {\n        public short X;\n        public short Y;\n        public short Z;\n\n        public MyMwcVector3Short(short x, short y, short z)\n        {\n            X = x;\n            Y = y;\n            Z = z;\n        }\n\n        public override string ToString()\n        {\n            return X + \", \" + Y + \", \" + Z;\n        }\n\n        public static MinerWarsMath.Vector3 operator *(MinerWarsMath.Vector3 vector, MyMwcVector3Short shortVector)\n        {\n            return shortVector * vector;\n        }\n\n        public static MinerWarsMath.Vector3 operator *(MyMwcVector3Short shortVector, MinerWarsMath.Vector3 vector)\n        {\n            return new MinerWarsMath.Vector3(shortVector.X * vector.X, shortVector.Y * vector.Y, shortVector.Z * vector.Z);\n        }\n    }\n\n    //  Sbyte version of Vector3, not yet fully implemented\n    public struct MyMwcVector3Sbyte\n    {\n        public sbyte X;\n        public sbyte Y;\n        public sbyte Z;\n\n        public MyMwcVector3Sbyte(sbyte x, sbyte y, sbyte z)\n        {\n            X = x;\n            Y = y;\n            Z = z;\n        }\n\n        public override string ToString()\n        {\n            return X + \", \" + Y + \", \" + Z;\n        }\n\n        public static MinerWarsMath.Vector3 operator *(MinerWarsMath.Vector3 vector, MyMwcVector3Sbyte shortVector)\n        {\n            return shortVector * vector;\n        }\n\n        public static MinerWarsMath.Vector3 operator *(MyMwcVector3Sbyte shortVector, MinerWarsMath.Vector3 vector)\n        {\n            return new MinerWarsMath.Vector3(shortVector.X * vector.X, shortVector.Y * vector.Y, shortVector.Z * vector.Z);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Utils/MyMwcUtils.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Data.SqlClient;\nusing System.Globalization;\nusing System.IO;\nusing System.Net;\nusing System.Reflection;\nusing System.Security.Cryptography;\nusing System.Text;\nusing System.Text.RegularExpressions;\nusing MinerWarsMath;\nusing SysUtils.Utils;\nusing System.Diagnostics;\nusing System.Collections;\n\nnamespace MinerWars.CommonLIB.AppCode.Utils\n{\n    public static partial class MyMwcUtils\n    {\n        [ThreadStatic]\n        static Random m_secretRandom;\n\n        static Random m_random\n        {\n            get\n            {\n                if (m_secretRandom == null)\n                {\n                    m_secretRandom = new Random();\n                }\n                return m_secretRandom;\n            }\n        }\n\n        //  Email validation regex\n        //  I don't recomment using REGULAR_EXPRESSION_EMAIL_DOESNT_CATCH_ALL_FORMAT_MISMATCH because it doesn't catch for example: name.@domain.com (dot before @)\n        //  On the other hand, REGULAR_EXPRESSION_EMAIL_GOOD_BUT_FAILS_ON_LONG_TEXT is better - catches everything, but ends in infinite processing if text is longer than 150 or 200 characters\n        const string REGULAR_EXPRESSION_EMAIL_DOESNT_CATCH_ALL_FORMAT_MISMATCH = @\"^([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}\" + @\"\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\\" + @\".)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$\";\n        const string REGULAR_EXPRESSION_EMAIL_GOOD_BUT_FAILS_ON_LONG_TEXT = @\"^([0-9a-zA-Z-_\\+]([\\.]?[0-9a-zA-Z-_\\+])*@([0-9a-zA-Z]([0-9a-zA-Z-_])*\\.)+[a-zA-Z]{2,9})$\";\n\n        static string REGULAR_EXPRESSION_ALPHA_NUMERIC = @\"[^a-zA-Z0-9]\";\n        static char[] m_charToInt = new char[] { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };\n\n        public static readonly NumberFormatInfo MONEY_BOOKERS_FORMATTER;\n        public static readonly NumberFormatInfo CARD_PAY_FORMATTER;\n        public static readonly NumberFormatInfo GOCASH_FORMATTER;\n        public static readonly CultureInfo GAME_CULTURE_INFO;\n        public static readonly StringBuilder EmptyStringBuilder = new StringBuilder();\n\n        public const float DENORMALIZED_BOUND = 1E-38f;\n\n        static MyMwcUtils()\n        {\n            //m_random = new Random();\n\n            MONEY_BOOKERS_FORMATTER = new NumberFormatInfo();\n            MONEY_BOOKERS_FORMATTER.NumberDecimalSeparator = \".\";\n            MONEY_BOOKERS_FORMATTER.NumberGroupSeparator = \"\";\n            MONEY_BOOKERS_FORMATTER.NumberDecimalDigits = 2;\n\n            GOCASH_FORMATTER = new NumberFormatInfo();\n            GOCASH_FORMATTER.NumberDecimalSeparator = \".\";\n            GOCASH_FORMATTER.NumberGroupSeparator = \"\";\n            GOCASH_FORMATTER.NumberDecimalDigits = 2;\n\n            CARD_PAY_FORMATTER = new NumberFormatInfo();\n            CARD_PAY_FORMATTER.NumberDecimalSeparator = \".\";\n            CARD_PAY_FORMATTER.NumberGroupSeparator = \"\";\n            CARD_PAY_FORMATTER.NumberDecimalDigits = 2;\n\n            GAME_CULTURE_INFO = new CultureInfo(\"en-US\");\n            GAME_CULTURE_INFO.NumberFormat = GAME_CULTURE_INFO.NumberFormat.Clone() as NumberFormatInfo;\n            GAME_CULTURE_INFO.NumberFormat.CurrencyNegativePattern = 1;\n        }\n\n        public static void CheckFloatValues(object graph, string name, ref double? min, ref double? max)\n        {\n            if (new StackTrace().FrameCount > 1000)\n            {\n                Debug.Fail(\"Infinite loop?\");\n            }\n\n            if (graph == null) return;\n\n            if (graph is float)\n            {\n                var val = (float)graph;\n                if (float.IsInfinity(val) || float.IsNaN(val))\n                {\n                    Debug.Fail(\"invalid number\");\n                    throw new InvalidOperationException(\"Invalid value: \" + name);\n                }\n\n                if (!min.HasValue || val < min) min = val;\n                if (!max.HasValue || val > max) max = val;\n            }\n\n            if (graph is double)\n            {\n                var val = (double)graph;\n                if (double.IsInfinity(val) || double.IsNaN(val))\n                {\n                    Debug.Fail(\"invalid number\");\n                    throw new InvalidOperationException(\"Invalid value: \" + name);\n                }\n\n                if (!min.HasValue || val < min) min = val;\n                if (!max.HasValue || val > max) max = val;\n            }\n\n            if (graph.GetType().IsPrimitive || graph is string || graph is DateTime) return;\n\n            if (graph as IEnumerable != null)\n            {\n                foreach (var item in graph as IEnumerable)\n                {\n                    CheckFloatValues(item, name + \"[]\", ref min, ref max);\n                }\n                return;\n            }\n            foreach (var f in graph.GetType().GetFields(BindingFlags.Instance | BindingFlags.Public))\n            {\n                CheckFloatValues(f.GetValue(graph), name + \".\" + f.Name, ref min, ref max);\n            }\n            foreach (var p in graph.GetType().GetProperties(BindingFlags.Instance | BindingFlags.Public))\n            {\n                CheckFloatValues(p.GetValue(graph, null), name + \".\" + p.Name, ref min, ref max);\n            }\n        }\n\n        public static byte[] GetRandomByteArray(int size)\n        {\n            byte[] secretkey = new byte[size];\n            RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();\n            rng.GetBytes(secretkey);\n            return secretkey;\n        }\n\n        //  This method is special for windows services!! Other ways of getting current folder won't work.\n        public static string GetWindowsServiceCurrentFolder()\n        {\n            return Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);\n        }\n\n        public static float SphereVolume(float radius)\n        {\n            return (4.0f / 3.0f) * MathHelper.Pi * (float)Math.Pow(radius, 3);\n        }\n\n        //  Returns hashed password (used when converting password to hashed password)\n        //  This is the same method as we use on the website www.minerwars.com\n        //  The only disadvantage is that I had to add reference to System.Web - which is weird. Though I hope it won't make problems as it should be OK on all Windows.\n        //  Uses SHA1 - don't change it!!! Existing methods and data depends on it.\n        public static string GetHashedPassword(string password)\n        {\n            var hashAlgorithm = SHA1.Create();\n\n            return BitConverter.ToString(hashAlgorithm.ComputeHash(Encoding.UTF8.GetBytes(password))).Replace(\"-\", string.Empty);\n        }\n\n        //  Returns the MD5 hash for any given string\n        //  Uses MD5 - don't change it!!! Existing methods and data depends on it.\n        public static string GetMD5HashedPassword(string password)\n        {\n            var hashAlgorithm = MD5.Create();\n\n            return BitConverter.ToString(hashAlgorithm.ComputeHash(Encoding.UTF8.GetBytes(password))).Replace(\"-\", string.Empty);\n        }\n\n        //  Run process with request for elevation. That process requires admin/UAC rights. In Vista if UAC is on, it will\n        //  request confirmation. If user isn't admin, it will ask him to log in as admin.\n        //public static void RunElevatedProcess(string fileName, string arguments)\n        //{\n        //    ProcessStartInfo processInfo = new ProcessStartInfo();\n        //    processInfo.Verb = \"runas\";\n        //    processInfo.FileName = fileName;\n        //    processInfo.Arguments = arguments;\n        //    Process.Start(processInfo);\n        //}\n\n        //  Get all files in folder and sub-folders\n        public static List<string> GetFilesRecursive(string folder)\n        {\n            // 1.\n            // Store results in the file results list.\n            List<string> result = new List<string>();\n\n            // 2.\n            // Store a stack of our directories.\n            Stack<string> stack = new Stack<string>();\n\n            // 3.\n            // Add initial directory.\n            stack.Push(folder);\n\n            // 4.\n            // Continue while there are directories to process\n            while (stack.Count > 0)\n            {\n                // A.\n                // Get top directory\n                string dir = stack.Pop();\n\n                try\n                {\n                    // B\n                    // Add all files at this directory to the result List.\n                    result.AddRange(Directory.GetFiles(dir, \"*.*\"));\n\n                    // C\n                    // Add all directories at this directory.\n                    foreach (string dn in Directory.GetDirectories(dir))\n                    {\n                        stack.Push(dn);\n                    }\n                }\n                catch\n                {\n                    // D\n                    // Could not open the directory\n                }\n            }\n            return result;\n        }\n\n        //  Return file size in bytes. Doesn't check if file exists. That must be done by caller.\n        public static long GetFileSize(string filepath)\n        {\n            return (new FileInfo(filepath)).Length;\n        }\n\n        //  Returns \"charactersCountFromLeft\" characters from left, but never exceed string's length\n        //  E.g. GetStringLeft(\"abcdefgh\", 3) returns \"abc\", but GetStringLeft(\"abcdefgh\", 1000) returns \"abcdefgh\"\n        public static string GetStringLeft(string s, int charactersCountFromLeft)\n        {\n            return s.Substring(0, (s.Length < charactersCountFromLeft) ? s.Length : charactersCountFromLeft);\n        }\n\n        /// <summary>\n        /// Return value from 0 - 1 but in normal distribution\n        /// Normal distribution is aproximated by exponencial function\n        /// </summary>\n        /// <param name=\"value\">Value from 0 to 1</param>\n        /// <returns></returns>\n        public static float NormalDistribution(float value)\n        {\n            float X = value;\n            float L = 0.0f;\n            float K = 0.0f;\n            float dCND = 0.0f;\n            const float a1 = 0.31938153f;\n            const float a2 = -0.356563782f;\n            const float a3 = 1.781477937f;\n            const float a4 = -1.821255978f;\n            const float a5 = 1.330274429f;\n            L = Math.Abs(X);\n            K = 1 / (1 + 0.2316419f * L);\n            dCND = 1 - 1 / (float)(Math.Sqrt(2 * Convert.ToDouble(Math.PI.ToString())) * Math.Exp(-L * L / 2) * (K * (a1 + K * (a2 + K * (a3 + K * (a4 + K * a5))))));\n\n            if (X < 0)\n            {\n                return 1 - dCND;\n            }\n            else\n            {\n                return dCND;\n            }\n        }\n\n        //  Returns a nonnegative random number less than the specified maximum\n        public static int GetRandomInt(int maxValue)\n        {\n            return m_random.Next(maxValue);\n        }\n\n        //  Return random short in range <minValue...maxValue>, the range of return values includes minValue but not maxValue\n        public static short GetRandomShort(short minValue, short maxValue)\n        {\n            return (short)m_random.Next(minValue, maxValue);\n        }\n\n        //  Return random int in range <minValue...maxValue>, the range of return values includes minValue but not maxValue\n        public static int GetRandomInt(int minValue, int maxValue)\n        {\n            return m_random.Next(minValue, maxValue);\n        }\n\n        //  Return random Vector3, always normalized (even if random values can't be normalized - then we do safe normalization)\n        //  Direction of vector can be in any \"direction\", negative, positive, X, Y, Z, etc.\n        public static Vector3 GetRandomVector3Normalized()\n        {\n            Vector3 vec = new Vector3(GetRandomFloat(-1, 1), GetRandomFloat(-1, 1), GetRandomFloat(-1, 1));\n\n            float lengthSquared = vec.LengthSquared();\n\n            if (lengthSquared == 0.0f)\n            {\n                //  If length of random vector is zero, we can't normalize it. So we just put there Vector3.Up. It's random enouch, because this situation don't occur often.\n                vec = Vector3.Up;\n            }\n            else\n            {\n                //  Normalize random vector\n                float lengthDivider = 1.0f / (float)Math.Sqrt(lengthSquared);\n                vec.X *= lengthDivider;\n                vec.Y *= lengthDivider;\n                vec.Z *= lengthDivider;\n            }\n\n            return vec;\n        }\n\n        //  Random vector distributed over the hemisphere about normal. \n        //  Returns random vector that always lies in hemisphere (half-sphere) defined by 'normal'\n        public static Vector3 GetRandomVector3HemisphereNormalized(Vector3 normal)\n        {\n            Vector3 randomVector = GetRandomVector3Normalized();\n\n            if (Vector3.Dot(randomVector, normal) < 0)\n            {\n                return -randomVector;\n            }\n            else\n            {\n                return randomVector;\n            }\n        }\n\n\n        //  Random vector distributed over the circle about normal. \n        //  Returns random vector that always lies on circle\n        public static Vector3 GetRandomVector3CircleNormalized()\n        {\n            float angle = MyMwcUtils.GetRandomRadian();\n\n            Vector3 v = new Vector3(\n                (float)Math.Sin(angle),\n                0,\n                (float)Math.Cos(angle));\n\n            return v;\n        }\n\n\n        //  Return by random +1 or -1. Nothing else. Propability is 50/50.\n        public static float GetRandomSign()\n        {\n            return Math.Sign((float)m_random.NextDouble() - 0.5f);\n        }\n\n        //  Return random float in range <minValue...maxValue>\n        public static float GetRandomFloat(float minValue, float maxValue)\n        {\n            return (float)m_random.NextDouble() * (maxValue - minValue) + minValue;\n        }\n\n        //  Return random radian, covering whole circle 0..360 degrees (but returned value is in radians)\n        public static float GetRandomRadian()\n        {\n            return GetRandomFloat(0, 2 * MathHelper.Pi);\n        }\n\n        //  Return random bool with probability specified by 'oncePer'.\n        //  If it is 1, than every call returns true. If it's 2, than every second call return true (propability is 50/50).\n        //  If it is for example 10, then only every 10-th returns true.\n        public static bool GetRandomBool(int oncePer)\n        {\n            //  Doesn't make sense to call this method if it will always return true.\n            System.Diagnostics.Debug.Assert(oncePer > 1);\n            return (GetRandomInt(0, oncePer) == 0) ? true : false;\n        }\n\n        public static bool IsAlphanumeric(string s)\n        {\n            Regex objAlphaNumericPattern = new Regex(REGULAR_EXPRESSION_ALPHA_NUMERIC);\n            return !objAlphaNumericPattern.IsMatch(s);\n        }\n\n        public static string RemoveNonAlphanumeric(string s)\n        {\n            string ret = \"\";\n            for (int i = 0; i < s.Length; i++)\n            {\n                if (IsAlphanumeric(s[i].ToString())) ret += s[i];\n            }\n            return ret;\n        }\n\n        public static bool IsInt32(string s)\n        {\n            Int32 res;\n            return Int32.TryParse(s, out res);\n        }\n\n        public static bool IsDecimal(string s)\n        {\n            Decimal res;\n            return Decimal.TryParse(s, out res);\n        }\n\n        public static bool IsDecimal(string s, NumberStyles numberStyles, IFormatProvider formatProvider)\n        {\n            Decimal res;\n            return Decimal.TryParse(s, numberStyles, formatProvider, out res);\n        }\n\n        public static bool IsValidEmailAddress(string email)\n        {\n            //  This is important because our current regex expression will end in infinite loop if email longer than 50 or 100 or 200 characters (I haven't checked max length)\n            if (email.Length > MyMwcValidationConstants.EMAIL_LENGTH_MAX) return false;\n\n            Regex regex = new Regex(REGULAR_EXPRESSION_EMAIL_GOOD_BUT_FAILS_ON_LONG_TEXT);\n            return regex.IsMatch(email);\n        }\n\n        public static bool IsValidUsernameFormat(string username)\n        {\n            return !((username.Length < MyMwcValidationConstants.USERNAME_LENGTH_MIN) || (username.Length > MyMwcValidationConstants.USERNAME_LENGTH_MAX) || (IsAlphanumeric(username) == false));\n        }\n\n        public static bool IsValidPasswordFormat(string password)\n        {\n            return ((password.Length >= MyMwcValidationConstants.PASSWORD_LENGTH_MIN) && (password.Length <= MyMwcValidationConstants.PASSWORD_LENGTH_MAX) && (IsAlphanumeric(password)));\n        }\n\n        //  Method to validate an IP address using the TryParse Method of the IPAddress class\n        //  addr - address to validate\n        public static bool IsValidIpAddress(string addr)\n        {\n            //  Boolean variable to hold the status\n            bool valid;\n\n            //  Check to make sure an ip address was provided\n            if (string.IsNullOrEmpty(addr))\n            {\n                //  Address wasnt provided so return false\n                valid = false;\n            }\n            else\n            {\n                //  Create an IPAddress variable, TryParse requires an \"out\" value that is of the type IPAddress\n                //  Use TryParse to see if this is a valid ip address. TryParse returns a boolean based on the validity of the\n                //  provided address, so assign that value to our boolean variable\n                IPAddress ip;\n                valid = IPAddress.TryParse(addr, out ip);\n            }\n\n            //  Return the value\n            return valid;\n        }\n\n        //  Method to validate an IP address using regular expressions. The pattern being used will validate an ip address\n        //  with the range of 1.0.0.0 to 255.255.255.255\n        public static bool IsValidIpAddress2(string addr)\n        {\n            //  Create our match pattern\n            const string pattern =\n                @\"^([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(\\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3}$\";\n\n            //  Create our Regular Expression object\n            Regex check = new Regex(pattern);\n\n            //  Boolean variable to hold the status\n            bool valid;\n\n            //  Check to make sure an ip address was provided\n            if (addr == \"\")\n            {\n                //  No address provided so return false\n                valid = false;\n            }\n            else\n            {\n                //  Address provided so use the IsMatch Method of the Regular Expression object\n                valid = check.IsMatch(addr, 0);\n            }\n\n            //  Return the results\n            return valid;\n        }\n\n        //  Searches in \"orig\" and if found pair of \"keyword1\" and \"keyword2\", replaces them with \"replaceWith1\" and \"replaceWith2\". But only if pair is found.\n        //  \"keyword1\" and \"keyword2\" may be same or no, it depends on our needs.\n        //  Use for example for QUOTE.\n        public static string ReplacePairOfKeywords(string keyword1, string keyword2, string replaceWith1, string replaceWith2, string orig)\n        {\n            int start = 0;\n            while (true)\n            {\n                //  Find first keyword\n                start = orig.IndexOf(keyword1, start);\n                if (start < 0) break;\n\n                //  Find second keyword\n                int end = orig.IndexOf(keyword2, start + keyword1.Length);\n                if (end < 0) break;\n\n                string tmp = orig.Substring(start, end - start + keyword2.Length);\n\n                orig = orig.Remove(start, tmp.Length + 1);\n                orig = orig.Insert(start, replaceWith1 + tmp.Replace(keyword1, \"\").Replace(keyword2, \"\") + replaceWith2);\n            }\n            return orig;\n        }\n\n        //  Returns \"charactersCountFromLeft\" characters from left, but never exceed string's length\n        //  If original string is longer, add \"...\" at the end\n        public static string GetStringLeftSafeWithDots(string s, int charactersCountFromLeft)\n        {\n            if (s.Length > charactersCountFromLeft)\n            {\n                return s.Substring(0, charactersCountFromLeft) + \"...\";\n            }\n            else\n            {\n                return s;\n            }\n        }\n\n        //  Returns \"charactersCountFromLeft\" characters from left, but never exceed string's length\n        public static string GetStringLeftSafe(string s, int charactersCountFromLeft)\n        {\n            if (s.Length > charactersCountFromLeft)\n            {\n                return s.Substring(0, charactersCountFromLeft);\n            }\n            else\n            {\n                return s;\n            }\n        }\n\n        public static DateTime? ReadDateTimeNullable(SqlDataReader reader, string columnName)\n        {\n            int columnOrdinal = reader.GetOrdinal(columnName);\n\n            DateTime? ret = null;\n            if (reader.IsDBNull(columnOrdinal) == false)\n            {\n                ret = reader.GetDateTime(columnOrdinal);\n            }\n\n            return ret;\n        }\n\n        public static T? ReadEnumNullable<T>(SqlDataReader reader, string columnName) where T : struct\n        {\n            int columnOrdinal = reader.GetOrdinal(columnName);\n\n            Int32? ret = null;\n            if (reader.IsDBNull(columnOrdinal) == false)\n            {\n                ret = reader.GetInt32(columnOrdinal);\n            }\n\n            if (ret == null)\n            {\n                return null;\n            }\n            else\n            {\n                return (T)Enum.ToObject(typeof(T), ret.Value);\n            }\n        }\n\n        public static Int32? ReadInt32Nullable(SqlDataReader reader, string columnName)\n        {\n            int columnOrdinal = reader.GetOrdinal(columnName);\n\n            Int32? ret = null;\n            if (reader.IsDBNull(columnOrdinal) == false)\n            {\n                ret = reader.GetInt32(columnOrdinal);\n            }\n\n            return ret;\n        }\n\n        public static Int64? ReadInt64Nullable(SqlDataReader reader, string columnName)\n        {\n            int columnOrdinal = reader.GetOrdinal(columnName);\n\n            Int64? ret = null;\n            if (reader.IsDBNull(columnOrdinal) == false)\n            {\n                ret = reader.GetInt64(columnOrdinal);\n            }\n\n            return ret;\n        }\n\n        public static byte? ReadByteNullable(SqlDataReader reader, string columnName)\n        {\n            int columnOrdinal = reader.GetOrdinal(columnName);\n\n            byte? ret = null;\n            if (reader.IsDBNull(columnOrdinal) == false)\n            {\n                ret = reader.GetByte(columnOrdinal);\n            }\n\n            return ret;\n        }\n\n        //  Calculate difference between birthDate and NOW in years - thus age\n        public static int GetAge(DateTime birthDate, DateTime now)\n        {\n            int age = now.Year - birthDate.Year;\n            if (now < birthDate.AddYears(age)) age--;\n            return age;\n        }\n\n        //  Create datetime from three strings: day, month, year. If date isn't valid (e.g. day 31 in month that doesn't have 31 days), we return null.\n        public static DateTime? CreateDateTime(int year, int month, int day)\n        {\n            try\n            {\n                return new DateTime(year, month, day);\n            }\n            catch (ArgumentOutOfRangeException)\n            {\n                //  If date is wrong, we return null and swallow the exception\n                return null;\n            }\n        }\n\n        //  Convert string to int. If not possible (string isn't int), return null.\n        public static int? GetInt32FromString(string s)\n        {\n            int ret;\n            if (Int32.TryParse(s, out ret))\n            {\n                return ret;\n            }\n            else\n            {\n                return null;\n            }\n        }\n\n        //  Convert object to int. If not possible (object isn't int), return null.\n        public static int? GetInt32FromObject(object obj)\n        {\n            if (obj == null) return null;\n\n            int ret;\n            if (Int32.TryParse(obj.ToString(), out ret))\n            {\n                return ret;\n            }\n            else\n            {\n                return null;\n            }\n        }\n\n        //  Convert object to DateTime. If not possible (object isn't int), return null.\n        public static DateTime? GetDateTimeFromObject(object obj)\n        {\n            if (obj == null) return null;\n            return Convert.ToDateTime(obj);\n        }\n\n        public static void Swap(StringBuilder sb, int startIndex, int endIndex)\n        {\n            // Swap the integers  \n            System.Diagnostics.Debug.Assert(endIndex >= startIndex);\n            int count = (endIndex - startIndex + 1) / 2;\n            for (int i = 0; i < count; ++i)\n            {\n                char temp = sb[startIndex + i];\n                sb[startIndex + i] = sb[endIndex - i];\n                sb[endIndex - i] = temp;\n            }\n        }\n\n        public static void ClearStringBuilder(StringBuilder sb)\n        {\n            sb.Length = 0;\n        }\n\n        //  AppendStringBuilder is a retarded class and doesn't have overload for Append-ing another StringBuilder\n        //  Solution is to append each character.\n        public static void AppendStringBuilder(StringBuilder destination, StringBuilder source)\n        {\n            for (int i = 0; i < source.Length; i++)\n            {\n                destination.Append(source[i]);\n            }\n        }\n\n        private static List<char> m_splitBuffer = new List<char>(16);\n        public static void SplitStringBuilder(StringBuilder destination, StringBuilder source, string splitSeparator) \n        {\n            char currentChar;                        \n            int length = source.Length;\n            int splitLength = splitSeparator.Length;\n            int currentSplitIndex = 0;\n\n            for (int i = 0; i < length; i++) \n            {\n                currentChar = source[i];\n\n                if (currentChar == splitSeparator[currentSplitIndex])\n                {\n                    currentSplitIndex++;\n                    // total split separator match, we append new line\n                    if (currentSplitIndex == splitLength)\n                    {\n                        destination.AppendLine();\n                        m_splitBuffer.Clear();\n                        currentSplitIndex = 0;\n                    }\n                    // if only part match, we add to split buffer\n                    else\n                    {\n                        m_splitBuffer.Add(currentChar);\n                    }\n                }\n                else \n                {\n                    // if there was part split match, we must append characters from split buffer\n                    if (currentSplitIndex > 0)\n                    {\n                        foreach (char c in m_splitBuffer)\n                        {\n                            destination.Append(c);\n                        }\n                        m_splitBuffer.Clear();\n                        currentSplitIndex = 0;\n                    }\n                    // we append current char\n                    destination.Append(currentChar);\n                }\n            }\n\n            // we must append characters which remain in split buffer\n            foreach (char c in m_splitBuffer)\n            {\n                destination.Append(c);\n            }\n            m_splitBuffer.Clear();\n        }\n\n        //  Clamping byte into range <min...max> (including min and max)\n        public static byte GetClampByte(byte value, byte min, byte max)\n        {\n            if (value < min) return min;\n            if (value > max) return max;\n            return value;\n        }\n\n        //  Clamping int into range <min...max> (including min and max)\n        public static int GetClampInt(int value, int min, int max)\n        {\n            if (value < min) return min;\n            if (value > max) return max;\n            return value;\n        }\n\n        //  Use only when sending price to PayPal web form\n        public static string GetFormatedPriceForPaypalForm(decimal num)\n        {\n            NumberFormatInfo paypalFormatter = new NumberFormatInfo();\n            paypalFormatter.NumberDecimalSeparator = \".\";\n            paypalFormatter.NumberGroupSeparator = \"\";\n            paypalFormatter.NumberDecimalDigits = 2;\n            return num.ToString(\"N\", paypalFormatter);\n        }\n\n        //  Use only when sending price to GoCash web form\n        public static string GetFormatedPriceForGoCashForm(decimal num)\n        {\n            return num.ToString(\"N\", GOCASH_FORMATTER);\n        }\n\n        //  Use only when sending price to MoneyBookers web form\n        public static string GetFormatedPriceForMoneybookersForm(decimal num)\n        {\n            return num.ToString(\"N\", MONEY_BOOKERS_FORMATTER);\n        }\n\n        //  Use only when sending price to CardPay web form\n        public static string GetFormatedPriceForCardpayForm(decimal num)\n        {\n            return num.ToString(\"N\", CARD_PAY_FORMATTER);\n        }\n\n        public static string GetFormatedPriceForGame(decimal num)\n        {\n            string result;\n            if (num - (int)num > 0m)\n            {\n                result = num.ToString(\"C\", GAME_CULTURE_INFO);\n            }\n            else\n            {\n                result = num.ToString(\"C0\", GAME_CULTURE_INFO);\n            }\n            return result;\n        }\n\n        //  Calculated fractional part of a float. \n        //  Examples: \n        //      input = 3.1234; output = 0.1234\n        //      input = 3.0000; output = 0.0000\n        //      input = 3.9999; output = 0.9999\n        //  TODO: This method should be replaced by something that don't need casting from/to double.\n        public static float GetFloatFrac(float input)\n        {\n            return input - (float)Math.Floor(input);\n        }\n\n        //  Find max numeric value in enum\n        public static int GetMaxValueFromEnum<T>()\n        {\n            Array values = Enum.GetValues(typeof(T));\n\n            //  Doesn't make sence to find max in empty enum            \n            MyCommonDebugUtils.AssertDebug(values.Length >= 1);\n\n            int max = int.MinValue;\n            Type underlyingType = Enum.GetUnderlyingType(typeof(T));\n            if (underlyingType == typeof(System.Byte))\n            {\n                foreach (byte value in values)\n                {\n                    if (value > max) max = value;\n                }\n            }\n            else if (underlyingType == typeof(System.Int16))\n            {\n                foreach (short value in values)\n                {\n                    if (value > max) max = value;\n                }\n            }\n            else if (underlyingType == typeof(System.UInt16))\n            {\n                foreach (ushort value in values)\n                {\n                    if (value > max) max = value;\n                }\n            }\n            else if (underlyingType == typeof(System.Int32))\n            {\n                foreach (int value in values)\n                {\n                    if (value > max) max = value;\n                }\n            }\n            else\n            {\n                //  Unhandled underlying type - probably \"long\"\n                throw new MyMwcExceptionApplicationShouldNotGetHere();\n            }\n\n            return max;\n        }\n\n        //  Try to convert string to int. If not possible, null is returned.\n        public static int? GetIntFromString(string s)\n        {\n            int outInt;\n            if (int.TryParse(s, out outInt) == false)\n            {\n                return null;\n            }\n            return outInt;\n        }\n\n        //  Try to convert string to int. If not possible, null is returned.\n        public static byte? GetByteFromString(string s)\n        {\n            byte outByte;\n            if (byte.TryParse(s, out outByte) == false)\n            {\n                return null;\n            }\n            return outByte;\n        }\n\n        //  Try to convert string to int. If not possible, null is returned.\n        //  If 's' can't be converted to a valid float, 'defaultValue' is returned\n        public static int GetIntFromString(string s, int defaultValue)\n        {\n            int? outInt = GetIntFromString(s);\n            return (outInt == null) ? defaultValue : outInt.Value;\n        }\n\n        //  Try to convert string to float. If not possible, null is returned.\n        public static float? GetFloatFromString(string s)\n        {\n            float outFloat;\n            if (float.TryParse(s, NumberStyles.Any, CultureInfo.InvariantCulture.NumberFormat, out outFloat) == false)\n            {\n                return null;\n            }\n            return outFloat;\n        }\n\n        // sphere vs sphere overlap test\n        public static bool SphereVsSphere(Vector3 p1, float r1, Vector3 p2, float r2)\n        {\n            float rSum = r1 + r2;\n            return (p1 - p2).LengthSquared() <= rSum * rSum;\n        }\n\n        //  Try to convert string to float. If not possible, null is returned.\n        //  If 's' can't be converted to a valid float, 'defaultValue' is returned\n        public static float GetFloatFromString(string s, float defaultValue)\n        {\n            float? outFloat = GetFloatFromString(s);\n            return (outFloat == null) ? defaultValue : outFloat.Value;\n        }\n\n        //  Try to convert string to bool. If not possible, null is returned.\n        public static bool? GetBoolFromString(string s)\n        {\n            bool outBool;\n            if (bool.TryParse(s, out outBool) == false)\n            {\n                return null;\n            }\n            return outBool;\n        }\n\n        //  Try to convert string to bool. If not possible, null is returned.\n        //  If 's' can't be converted to a valid bool, 'defaultValue' is returned\n        public static bool GetBoolFromString(string s, bool defaultValue)\n        {\n            bool? outBool = GetBoolFromString(s);\n            return (outBool == null) ? defaultValue : outBool.Value;\n        }\n\n        public static DateTime AddMillisecondsToZeroDateTime(int milliseconds)\n        {\n            return (new DateTime()).AddMilliseconds(milliseconds);\n        }\n\n        public static bool GetEnumFromNumber<T, U>(U val, ref T enumValue)\n            where T : struct\n        {\n            if (Enum.IsDefined(typeof(T), val) == false)\n            {\n                return false;\n            }\n            else\n            {\n                enumValue = (T)Enum.ToObject(typeof(T), val);\n                return true;\n            }\n        }\n\n        //  For converting numbers into enums. If number can't be converted to enum because it has value\n        //  that's not in the enum, it returns null.\n        public static Nullable<T> GetEnumFromNumber<T, U>(U val) where T : struct\n        {\n            if (Enum.IsDefined(typeof(T), val) == false)\n            {\n                return null;\n            }\n            else\n            {\n                return (T)Enum.ToObject(typeof(T), val);\n            }\n        }\n\n        //  Converts filename into safe form (by removing all not-allowed characters)\n        public static string MakeSafeFilename(string filename, string replaceWith)\n        {\n            foreach (char c in Path.GetInvalidFileNameChars())\n            {\n                filename = filename.Replace(c.ToString(), replaceWith);\n            }\n            return filename;\n        }\n\n        //  Get random Message ID, used when user sends a message to us and we need some number for tracking\n        public static string GetRandomMessageId(int length)\n        {\n            const string allowedChars = \"ABCDEFGHJKLMNOPQRSTUVWXYZ0123456789\";\n            Random rnd = new Random();\n\n            StringBuilder ret = new StringBuilder();\n            for (int i = 0; i < length; i++)\n            {\n                ret.Append(allowedChars[rnd.Next(allowedChars.Length)]);\n            }\n            return ret.ToString();\n        }\n\n        //  Return random password\n        public static string GetRandomPassword(int passwordLength)\n        {\n            const string allowedChars = \"abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNOPQRSTUVWXYZ0123456789\";\n            Random rnd = new Random();\n\n            StringBuilder sbNewPassword = new StringBuilder();\n            for (int i = 0; i < passwordLength; i++)\n            {\n                sbNewPassword.Append(allowedChars[rnd.Next(allowedChars.Length)]);\n            }\n            return sbNewPassword.ToString();\n        }\n\n        //  Generate serial key composed of 6 chunks, each long 5 alpha-numeric characters, always upper case.\n        //  Example: 12345-ABC12-UDH45-ODJF3-HA278\n        public static string GetRandomSerialKey(Random rnd)\n        {\n            return\n                GetRandomSerialKeyChunk(rnd, 5) + \"-\" +\n                GetRandomSerialKeyChunk(rnd, 5) + \"-\" +\n                GetRandomSerialKeyChunk(rnd, 5) + \"-\" +\n                GetRandomSerialKeyChunk(rnd, 5) + \"-\" +\n                GetRandomSerialKeyChunk(rnd, 5) + \"-\" +\n                GetRandomSerialKeyChunk(rnd, 5);\n        }\n\n        //  Get random Message ID, used when user sends a message to us and we need some number for tracking\n        //  Random must be initialized before calling this method, and even better before starting serial key generation sequence,\n        //  so then random values won't repeat\n        static string GetRandomSerialKeyChunk(Random rnd, int length)\n        {\n            const string allowedChars = \"ABCDEFGHJKLMNOPQRSTUVWXYZ0123456789\";\n\n            StringBuilder ret = new StringBuilder();\n            for (int i = 0; i < length; i++)\n            {\n                ret.Append(allowedChars[rnd.Next(allowedChars.Length)]);\n            }\n            return ret.ToString();\n        }\n\n        public static float Round(float number, float step)\n        {\n            return ((float)Math.Round(number / step)) * step;\n        }\n\n        public static double Round(double number, double step)\n        {\n            return (Math.Round(number / step)) * step;\n        }\n\n        public static bool HasValidLength(Vector3 vec)\n        {\n            return vec.LengthSquared() > MyMwcMathConstants.EPSILON_SQUARED;\n        }\n\n        public static bool HasValidLength(Vector2 vec)\n        {\n            return vec.LengthSquared() > MyMwcMathConstants.EPSILON_SQUARED;\n        }\n\n        public static bool HasValidLength(ref Vector3 vec)\n        {\n            return vec.LengthSquared() > MyMwcMathConstants.EPSILON_SQUARED;\n        }\n\n        public static bool HasValidLength(ref Vector2 vec)\n        {\n            return vec.LengthSquared() > MyMwcMathConstants.EPSILON_SQUARED;\n        }\n\n        [Conditional(\"DEBUG\")]\n        public static void AssertVectorValid(ref Vector3 vec)\n        {\n            System.Diagnostics.Debug.Assert(HasValidLength(ref vec));\n        }\n\n        [Conditional(\"DEBUG\")]\n        public static void AssertVectorValid(ref Vector2 vec)\n        {\n            System.Diagnostics.Debug.Assert(HasValidLength(ref vec));\n        }\n\n        /// <summary>\n        /// Protected normalize with assert\n        /// </summary>\n        /// <param name=\"vec\"></param>\n        /// <returns></returns>\n        public static Vector3 Normalize(Vector3 vec)\n        {\n            //  Check if vector has reasonable length, otherwise Normalize is going to fail\n            AssertVectorValid(ref vec);\n            return Vector3.Normalize(vec);\n        }\n\n        /// <summary>\n        /// Protected normalize with assert\n        /// </summary>\n        /// <param name=\"vec\"></param>\n        /// <returns></returns>\n        public static void Normalize(ref Vector3 vec, out Vector3 normalized)\n        {\n            //  Check if vector has reasonable length, otherwise Normalize is going to fail\n            AssertVectorValid(ref vec);\n            Vector3.Normalize(ref vec, out normalized);\n        }\n\n\n        /// <summary>\n        /// Protected normalize with assert\n        /// </summary>\n        /// <param name=\"vec\"></param>\n        /// <returns></returns>\n        public static Vector2 Normalize(Vector2 vec)\n        {\n            AssertVectorValid(ref vec);\n            return Vector2.Normalize(vec);\n        }\n\n        /// <summary>\n        /// Protected normalize with assert\n        /// </summary>\n        /// <param name=\"vec\"></param>\n        /// <returns></returns>\n        public static void Normalize(ref Vector2 vec, out Vector2 normalized)\n        {\n            AssertVectorValid(ref vec);\n            Vector2.Normalize(ref vec, out normalized);\n        }\n\n        /// <summary>\n        /// Protected normalize with assert\n        /// </summary>\n        /// <param name=\"vec\"></param>\n        /// <returns></returns>\n        public static void Normalize(ref Matrix m, out Matrix normalized)\n        {\n            normalized = Matrix.CreateWorld(\n                m.Translation,\n                Normalize(m.Forward),\n                Normalize(m.Up));\n        }\n\n        public static void FixDenormalizedFloat(ref float value)\n        {\n            if (Math.Abs(value) < DENORMALIZED_BOUND) value = 0.0f;\n        }\n\n        /// <summary>\n        /// Better comparison for zero\n        /// </summary>\n        /// <param name=\"value\"></param>\n        /// <returns></returns>\n        public static bool IsZero(float value)\n        {\n            return (value > -MyMwcMathConstants.EPSILON) && (value < MyMwcMathConstants.EPSILON);\n        }\n\n        /// <summary>\n        /// Better comparison for zero\n        /// </summary>\n        /// <param name=\"value\"></param>\n        /// <returns></returns>\n        public static bool IsZero(Vector3 value)\n        {\n            return IsZero(value.X) && IsZero(value.Y) && IsZero(value.Z);\n        }\n\n        /// <summary>\n        /// Better comparison for zero\n        /// </summary>\n        /// <param name=\"value\"></param>\n        /// <returns></returns>\n        public static bool IsZero(Vector4 value)\n        {\n            return IsZero(value.X) && IsZero(value.Y) && IsZero(value.Z) && IsZero(value.W);\n        }\n\n        //  Examples:\n        //      RoundToNearestMultipleOf(0.1, 5) = 5\n        //      RoundToNearestMultipleOf(4.9, 5) = 5\n        //      RoundToNearestMultipleOf(5.5, 5) = 10\n        //      RoundToNearestMultipleOf(10.23, 5) = 15\n        public static decimal RoundToNearestMultipleOf(decimal dec, decimal multipleOf)\n        {\n            return Convert.ToInt32(Math.Floor(dec / multipleOf)) * multipleOf + multipleOf;\n        }\n\n        // Extend Vector3 to allow indexing by dimension.\n        public static float GetDim(this Vector3 v, int i)\n        {\n            switch (i)\n            {\n                case 0: return v.X;\n                case 1: return v.Y;\n                case 2: return v.Z;\n                default: return v.GetDim((i % 3 + 3) % 3);  // reduce to 0..2\n            }\n        }\n        public static void SetDim(this Vector3 v, int i, float value)\n        {\n            switch (i)\n            {\n                case 0: v.X = value; break;\n                case 1: v.Y = value; break;\n                case 2: v.Z = value; break;\n                default: v.SetDim((i % 3 + 3) % 3, value); break;  // reduce to 0..2\n            }\n        }\n\n        // Extend BoundingBox to provide the surface area and volume\n        public static float SurfaceArea(this BoundingBox bb)\n        {\n            Vector3 span = bb.Max - bb.Min;\n            return 2 * (span.X * span.Y + span.X * span.Z + span.Y * span.Z);\n        }\n        public static float Volume(this BoundingBox bb)\n        {\n            Vector3 span = bb.Max - bb.Min;\n            return span.X * span.Y * span.Z;\n        }\n\n        public static Vector3 GetNeighbourSectorShipPosition(Vector3 currentShipPosition)\n        {\n            Vector3 abs = new Vector3(Math.Abs(currentShipPosition.X), Math.Abs(currentShipPosition.Y), Math.Abs(currentShipPosition.Z));\n\n            if (abs.X > abs.Y)\n            {\n                if (abs.X > abs.Z)\n                {\n                    // X is biggest\n                    currentShipPosition.X = -currentShipPosition.X;\n                }\n                else\n                {\n                    // Z is biggest\n                    currentShipPosition.Z = -currentShipPosition.Z;\n                }\n            }\n            else if (abs.Y > abs.Z)\n            {\n                // Y is biggest\n                currentShipPosition.Y = -currentShipPosition.Y;\n            }\n            else\n            {\n                // Z is biggest\n                currentShipPosition.Z = -currentShipPosition.Z;\n            }\n            // Clamp all direction to prevent automatic travel when position is diagonally outside sector\n            float maxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF;\n            Vector3 border = new Vector3(maxDistance, maxDistance, maxDistance);\n            return Vector3.Clamp(currentShipPosition, -border, border);\n        }\n\n        public static T GetRandomItem<T>(List<T> list)\n        {\n            return list[GetRandomInt(list.Count)];\n        }\n\n        public static T GetRandomItemOrNull<T>(List<T> list)\n            where T : class\n        {\n            if (list.Count == 0)\n                return null;\n            return list[GetRandomInt(list.Count)];\n        }\n    }\n}\n\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Utils/MyStringUtils.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Net;\nusing System.IO;\nusing System.Threading;\n\nnamespace SysUtils.Utils\n{\n    public class MyStringUtils\n    {\n        public const string C_CRLF = \"\\r\\n\";\n        /// <summary>\n        /// SearchStringInArray\n        /// </summary>\n        /// <param name=\"strings\"></param>\n        /// <param name=\"lookFor\"></param>\n        /// <returns></returns>\n        public static bool SearchStringInArray(string[] strings, string lookFor)\n        {\n            foreach (string s in strings)\n            {\n                if (s.Equals(lookFor)) return true;\n            }\n            return false;\n        }\n\n\n        //  Example: for AlignIntToRight(12, 4, \"0\") it returns \"0012\"\n        public static string AlignIntToRight(int value, int charsCount, char ch)\n        {\n            string ret = value.ToString();\n            int length = ret.Length;\n            if (length > charsCount) return ret;\n            return new string(ch, charsCount - length) + ret;\n        }\n\n\n        //  Download string from specified url using specified timeout. If url doesn't exist or \n        //  timeout is raised, method returns null. Otherwise content of the url.\n        //  Method ignores any exception that occurs during its execution!\n        public static string DownloadStringSynchronously(string url, int timeoutInMilliseconds, string userAgent, Encoding fileEncoding)\n        {\n            MyMwcLog.WriteLine(\"DownloadStringSynchronously - START\");\n            MyMwcLog.IncreaseIndent();\n\n            MyMwcLog.WriteLine(\"Url: \" + url);\n            MyMwcLog.WriteLine(\"TimeoutInMilliseconds: \" + timeoutInMilliseconds);\n\n            string pageContent = null;\n\n            int retryCount = 3;\n            while (retryCount-- > 0)\n            {\n                try\n                {\n                    // Open a connection\n                    HttpWebRequest webRequest = (HttpWebRequest)HttpWebRequest.Create(url);\n\n                    // You can also specify additional header values like the user agent or the referer:\n                    webRequest.UserAgent = userAgent;\n                    webRequest.Timeout = timeoutInMilliseconds;\n\n                    //  Setting PROXY to null is very important, because if it is null, this web request will not\n                    //  use any proxy. It will connect to our update server directly, no matter what is specified\n                    //  in Internet Explorer proxy settings.\n                    //  If we leave there default values, it works on 99% of computers. But 1% has some weird proxy\n                    //  settings in IE - they don't use proxy, but this web request thinks they use proxy...\n                    //  E.g. http://dotnetdreaming.wordpress.com/2009/03/20/httpwebrequest-and-proxies/\n                    webRequest.Proxy = null;\n\n                    // Request response:\n                    WebResponse response = null;\n                    try\n                    {\n                        response = webRequest.GetResponse();\n\n                        // Open data stream:\n                        Stream stream = null;\n                        try\n                        {\n                            stream = response.GetResponseStream();\n\n                            // Create reader object:\n                            StreamReader reader = null;\n                            try\n                            {\n                                reader = new StreamReader(stream, fileEncoding);\n\n                                // Read the entire stream content:\n                                pageContent = reader.ReadToEnd();\n                            }\n                            catch (Exception ex)\n                            {\n                                pageContent = null;\n                                MyMwcLog.WriteLine(ex);\n                                //  Ignore exception!\n                            }\n                            finally\n                            {\n                                if (reader != null) reader.Close();\n                            }\n                        }\n                        catch (Exception ex)\n                        {\n                            pageContent = null;\n                            MyMwcLog.WriteLine(ex);\n                            //  Ignore exception!\n                        }\n                        finally\n                        {\n                            if (stream != null) stream.Close();\n                        }\n                    }\n                    catch (Exception ex)\n                    {\n                        pageContent = null;\n                        MyMwcLog.WriteLine(ex);\n                        //  Ignore exception!\n                    }\n                    finally\n                    {\n                        if (response != null) response.Close();\n                    }\n                }\n                catch (Exception ex)\n                {\n                    pageContent = null;\n                    MyMwcLog.WriteLine(ex);\n                    //  Ignore exception!\n                }\n\n                if (pageContent != null)\n                    break;\n                else\n                {\n                    Thread.Sleep(3000);\n                    MyMwcLog.WriteLine(\"Retrying...\");\n                }\n            }\n\n            //MyMwcLog.AddToLog(\"Page content: \" + pageContent);\n            MyMwcLog.WriteLine(\"Characters count: \" + (pageContent == null ? \"null\" : pageContent.Length.ToString()));\n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"DownloadStringSynchronously - END\");\n\n            return pageContent;\n        }\n\n\n        //  Returns \"charactersCountFromRight\" characters from right, but never exceed string's length\n        //  E.g. GetStringRight(\"abcdefgh\", 3) returns \"fgh\", but GetStringRight(\"abcdefgh\", 1000) returns \"abcdefgh\"\n        public static string GetStringRight(string s, int charactersCountFromRight)\n        {\n            if (s.Length <= charactersCountFromRight)\n            {\n                return s;\n            }\n            else\n            {\n                return s.Substring(s.Length - charactersCountFromRight, charactersCountFromRight);\n            }\n        }\n\n        public static string EscapeSemicolons(string s)\n        {\n            var result = new StringBuilder();\n            for (int i = 0; i < s.Length; i++) switch (s[i])\n            {\n                case '\\\\': result.Append(\"\\\\\\\\\"); break; // \\ -> \\\\\n                case '\\'': result.Append(\"\\\\A\"); break;  // ' -> \\A\n                case '\"': result.Append(\"\\\\Q\"); break;   // \" -> \\Q\n                case ';': result.Append(\"\\\\B\"); break;   // ; -> \\B\n                case '\\n': result.Append(\"\\\\n\"); break;  // newline -> \\n\n                case '\\r': result.Append(\"\\\\r\"); break;  // carriage return -> \\r\n                case '\\t': result.Append(\"\\\\t\"); break;  // tab -> \\t\n                default: result.Append(s[i]); break;\n            }\n            return result.ToString();\n        }\n\n        public static string UnescapeSemicolons(string s)\n        {\n            var result = new StringBuilder();\n            for (int i = 0; i < s.Length; i++) switch (s[i])\n            {\n                case '\\\\':\n                    if (++i == s.Length) result.Append(\"\\\\\");  // '\\' at the end of input: inconcievable!\n                    else switch (s[i])\n                    {\n                        case '\\\\': result.Append(\"\\\\\"); break; // \\\\ -> \\\n                        case 'A': result.Append(\"'\"); break;   // \\A -> '\n                        case 'Q': result.Append(\"\\\"\"); break;  // \\Q -> \"\n                        case 'B': result.Append(\";\"); break;   // \\B -> ;\n                        case 'n': result.Append(\"\\n\"); break;  // \\n -> newline\n                        case 'r': result.Append(\"\\r\"); break;  // \\r -> carriage return\n                        case 't': result.Append(\"\\t\"); break;  // \\t -> tab\n                        default: result.Append(\"\\\\\").Append(s[i]); break;  // unknown char, copy verbatim\n                    }\n                    break;\n                default:\n                    result.Append(s[i]);\n                    break;\n            }\n            return result.ToString();\n        }\n    \n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/AppCode/Utils/MyValueFormatter.cs",
    "content": "﻿using System;\nusing System.Globalization;\n\nnamespace SysUtils.Utils\n{\n    public class MyValueFormatter\n    {\n        static private NumberFormatInfo m_numberFormatInfoHelper;\n        \n        static MyValueFormatter()\n        {\n            m_numberFormatInfoHelper = new NumberFormatInfo();\n            m_numberFormatInfoHelper.NumberDecimalSeparator = \".\";\n            m_numberFormatInfoHelper.NumberGroupSeparator = \" \";\n        }\n\n\n        //  Formats to: \"1 234.123\"\n        public static string GetFormatedFloat(float num, int decimalDigits)\n        {\n            m_numberFormatInfoHelper.NumberDecimalDigits = decimalDigits;\n            return num.ToString(\"N\", m_numberFormatInfoHelper);\n        }        \n\n        //  Same as GetFormatedFloat() but allow to specify group separator\n        public static string GetFormatedFloat(float num, int decimalDigits, string groupSeparator)\n        {\n            string originalGroupSeparator = m_numberFormatInfoHelper.NumberGroupSeparator;\n            m_numberFormatInfoHelper.NumberGroupSeparator = groupSeparator;\n            m_numberFormatInfoHelper.NumberDecimalDigits = decimalDigits;\n            string ret = num.ToString(\"N\", m_numberFormatInfoHelper);\n            m_numberFormatInfoHelper.NumberGroupSeparator = originalGroupSeparator;\n            return ret;\n        }\n\n        public static string GetFormatedDouble(double num, int decimalDigits)\n        {\n            m_numberFormatInfoHelper.NumberDecimalDigits = decimalDigits;\n            return num.ToString(\"N\", m_numberFormatInfoHelper);\n        }\n\n        public static string GetFormatedQP(decimal num)\n        {\n            return GetFormatedDecimal(num, 1);\n        }\n\n        public static string GetFormatedDecimal(decimal num, int decimalDigits)\n        {\n            m_numberFormatInfoHelper.NumberDecimalDigits = decimalDigits;\n            return num.ToString(\"N\", m_numberFormatInfoHelper);\n        }\n\n        public static string GetFormatedGameMoney(decimal num)\n        {\n            return GetFormatedDecimal(num, 2);\n        }\n\n        public static decimal GetDecimalFromString(string number, int decimalDigits)\n        {\n            try\n            {\n                m_numberFormatInfoHelper.NumberDecimalDigits = decimalDigits;\n                return System.Convert.ToDecimal(number, m_numberFormatInfoHelper);\n            }\n            catch\n            {\n            }\n            return 0;\n        }\n\n        public static float? GetFloatFromString(string number, int decimalDigits, string groupSeparator) \n        {\n            float? result = null;\n\n            string originalGroupSeparator = m_numberFormatInfoHelper.NumberGroupSeparator;\n            m_numberFormatInfoHelper.NumberGroupSeparator = groupSeparator;\n            m_numberFormatInfoHelper.NumberDecimalDigits = decimalDigits;\n            try\n            {\n                result = (float)System.Convert.ToDouble(number, m_numberFormatInfoHelper);\n            }\n            catch \n            {\n            }            \n            m_numberFormatInfoHelper.NumberGroupSeparator = originalGroupSeparator;\n\n            return result;\n        }\n\n        public static string GetFormatedLong(long l)\n        {\n            //  By Marek Rosa at 28.4.2010: Changed according to implementation int GetFormatedInt()\n            return l.ToString(\"#,0\", CultureInfo.InvariantCulture);\n        }\n\n        public static String GetFormatedDateTimeOffset(DateTimeOffset dt)\n        {\n            return dt.ToString(\"yyyy-MM-dd HH:mm:ss.fff\", DateTimeFormatInfo.InvariantInfo);\n        }\n\n        public static String GetFormatedDateTime(DateTime dt)\n        {\n            return dt.ToString(\"yyyy-MM-dd HH:mm:ss.fff\", DateTimeFormatInfo.InvariantInfo);\n        }\n\n        public static String GetFormatedDateTimeForFilename(DateTime dt)\n        {\n            return dt.ToString(\"yyyy-MM-dd-HH-mm-ss-fff\", DateTimeFormatInfo.InvariantInfo);\n        }\n\n        //  Especially for displaying the price on the web site\n        public static string GetFormatedPriceEUR(decimal num)\n        {\n            return GetFormatedDecimal(num, 2) + \" €\";\n        }\n        \n        //  Especially for displaying the price on the web site\n        public static string GetFormatedPriceUSD(decimal num)\n        {\n            return \"$\" + GetFormatedDecimal(num, 2);\n        }\n\n        //  Especially for displaying the price on the web site - in USD\n        //  Input price is in EUR and we convert it here to USD, rounding to two decimal points\n        public static string GetFormatedPriceUSD(decimal priceInEur, decimal exchangeRateEurToUsd)\n        {\n            return \"~\" + GetFormatedDecimal(decimal.Round(exchangeRateEurToUsd * priceInEur, 2), 2) + \" $\";\n        }\n\n        public static string GetFormatedInt(int i)\n        {\n            //  By Marek Rosa at 20.4.2008: This is my last try to have working int formating with group separator \",\".\n            //  Now it display '0' as '0' and any higher positive/negative number with correct grouping.\n            return i.ToString(\"#,0\", CultureInfo.InvariantCulture);\n        }\n\n        public static string GetFormatedArray<T>(T[] array)\n        {\n            string s = string.Empty;\n            for (int i = 0; i < array.Length; i++)\n            {\n                s += array[i].ToString();\n                if (i < (array.Length - 1)) s += \", \";\n            }\n            return s;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/CommonLIB/MinerWarsCommonLIB.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"4.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProductVersion>9.0.21022</ProductVersion>\n    <SchemaVersion>2.0</SchemaVersion>\n    <ProjectGuid>{2C96F0AB-7962-4B73-A075-B0E0B09F6195}</ProjectGuid>\n    <OutputType>Library</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>MinerWars.CommonLIB</RootNamespace>\n    <AssemblyName>MinerWarsCommonLIB</AssemblyName>\n    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>\n    <FileAlignment>512</FileAlignment>\n    <IsWebBootstrapper>false</IsWebBootstrapper>\n    <SignAssembly>false</SignAssembly>\n    <AssemblyOriginatorKeyFile>\n    </AssemblyOriginatorKeyFile>\n    <PublishUrl>publish\\</PublishUrl>\n    <Install>true</Install>\n    <InstallFrom>Disk</InstallFrom>\n    <UpdateEnabled>false</UpdateEnabled>\n    <UpdateMode>Foreground</UpdateMode>\n    <UpdateInterval>7</UpdateInterval>\n    <UpdateIntervalUnits>Days</UpdateIntervalUnits>\n    <UpdatePeriodically>false</UpdatePeriodically>\n    <UpdateRequired>false</UpdateRequired>\n    <MapFileExtensions>true</MapFileExtensions>\n    <ApplicationRevision>0</ApplicationRevision>\n    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>\n    <UseApplicationTrust>false</UseApplicationTrust>\n    <BootstrapperEnabled>true</BootstrapperEnabled>\n    <FileUpgradeFlags>\n    </FileUpgradeFlags>\n    <UpgradeBackupLocation>\n    </UpgradeBackupLocation>\n    <OldToolsVersion>3.5</OldToolsVersion>\n    <TargetFrameworkProfile>\n    </TargetFrameworkProfile>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|x86' \">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x86\\Debug\\</OutputPath>\n    <DefineConstants>TRACE;DEBUG;not_ENABLE_NETWORK_VERBOSE_LOGGING;PACKED_VERTEX_FORMAT</DefineConstants>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <CodeAnalysisUseTypeNameInSuppression>true</CodeAnalysisUseTypeNameInSuppression>\n    <CodeAnalysisModuleSuppressionsFile>GlobalSuppressions.cs</CodeAnalysisModuleSuppressionsFile>\n    <ErrorReport>prompt</ErrorReport>\n    <AllowUnsafeBlocks>false</AllowUnsafeBlocks>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|x86' \">\n    <OutputPath>bin\\x86\\Release\\</OutputPath>\n    <DefineConstants>TRACE;not_ENABLE_NETWORK_VERBOSE_LOGGING;PACKED_VERTEX_FORMAT</DefineConstants>\n    <Optimize>true</Optimize>\n    <PlatformTarget>x86</PlatformTarget>\n    <CodeAnalysisUseTypeNameInSuppression>true</CodeAnalysisUseTypeNameInSuppression>\n    <CodeAnalysisModuleSuppressionsFile>GlobalSuppressions.cs</CodeAnalysisModuleSuppressionsFile>\n    <ErrorReport>prompt</ErrorReport>\n    <AllowUnsafeBlocks>false</AllowUnsafeBlocks>\n  </PropertyGroup>\n  <ItemGroup>\n    <Reference Include=\"System\" />\n    <Reference Include=\"System.Data\" />\n    <Reference Include=\"System.Data.Entity\" />\n    <Reference Include=\"System.IdentityModel\" />\n    <Reference Include=\"System.Runtime.Serialization\" />\n    <Reference Include=\"System.Security\" />\n    <Reference Include=\"System.ServiceModel\" />\n    <Reference Include=\"System.Xml\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Compile Include=\"AppCode\\Generics\\MyDynamicObjectsPool.cs\" />\n    <Compile Include=\"AppCode\\Generics\\MyObjectsPool.cs\" />\n    <Compile Include=\"AppCode\\Generics\\MyObjectsPoolSimple.cs\" />\n    <Compile Include=\"AppCode\\Generics\\MyWeightDictionary.cs\" />\n    <Compile Include=\"AppCode\\GImpact\\BulletCollision\\BoxCollision.cs\" />\n    <Compile Include=\"AppCode\\GImpact\\BulletCollision\\ClipPolygon.cs\" />\n    <Compile Include=\"AppCode\\GImpact\\BulletCollision\\GeometeryOperations.cs\" />\n    <Compile Include=\"AppCode\\GImpact\\BulletCollision\\GImpactBvh.cs\" />\n    <Compile Include=\"AppCode\\GImpact\\BulletCollision\\GImpactQuantization.cs\" />\n    <Compile Include=\"AppCode\\GImpact\\BulletCollision\\GImpactQuantizedBvh.cs\" />\n    <Compile Include=\"AppCode\\GImpact\\BulletCollision\\TriangleShapeEx.cs\" />\n    <Compile Include=\"AppCode\\GImpact\\BulletGlobalsFake.cs\" />\n    <Compile Include=\"AppCode\\GImpact\\LinearMath\\AabbUtil2.cs\" />\n    <Compile Include=\"AppCode\\GImpact\\LinearMath\\ConvexHull.cs\" />\n    <Compile Include=\"AppCode\\GImpact\\LinearMath\\ConvexHullComputer.cs\" />\n    <Compile Include=\"AppCode\\GImpact\\LinearMath\\IndexedBasisMatrix.cs\" />\n    <Compile Include=\"AppCode\\GImpact\\LinearMath\\IndexedMatrix.cs\" />\n    <Compile Include=\"AppCode\\GImpact\\LinearMath\\IndexedVector3.cs\" />\n    <Compile Include=\"AppCode\\GImpact\\LinearMath\\MathUtil.cs\" />\n    <Compile Include=\"AppCode\\GImpact\\LinearMath\\ObjectArray.cs\" />\n    <Compile Include=\"AppCode\\GImpact\\LinearMath\\TransformUtil.cs\" />\n    <Compile Include=\"AppCode\\GImpact\\LinearMath\\UShortVector3.cs\" />\n    <Compile Include=\"AppCode\\Import\\MyImporterConstants.cs\" />\n    <Compile Include=\"AppCode\\Import\\MyMaterialDescriptor.cs\" />\n    <Compile Include=\"AppCode\\Import\\MyMeshPartSolver.cs\" />\n    <Compile Include=\"AppCode\\Import\\MyModelExporter.cs\" />\n    <Compile Include=\"AppCode\\Import\\VF_Packer.cs\" />\n    <Compile Include=\"AppCode\\MyMessageBox.cs\" />\n    <Compile Include=\"AppCode\\MyMwcEnums.cs\" />\n    <Compile Include=\"AppCode\\MyMwcFinalBuildConstants.cs\" />\n    <Compile Include=\"AppCode\\MyMwcSingleCrypto.cs\" />\n    <Compile Include=\"AppCode\\MyTraceClient.cs\" />\n    <Compile Include=\"AppCode\\Networking\\IMyEvent.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Lidgren\\Encryption\\INetEncryption.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Lidgren\\Encryption\\NetAESEncryption.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Lidgren\\Encryption\\NetBlockEncryptionBase.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Lidgren\\Encryption\\NetDESEncryption.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Lidgren\\Encryption\\NetRC2Encryption.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Lidgren\\Encryption\\NetTripleDESEncryption.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Lidgren\\Encryption\\NetXorEncryption.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Lidgren\\Encryption\\NetXteaEncryption.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Lidgren\\NetBigInteger.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Lidgren\\NetBitVector.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Lidgren\\NetBitWriter.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Lidgren\\NetBuffer.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Lidgren\\NetBuffer.Peek.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Lidgren\\NetBuffer.Read.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Lidgren\\NetBuffer.Read.Reflection.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Lidgren\\NetBuffer.Write.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Lidgren\\NetBuffer.Write.Reflection.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Lidgren\\NetClient.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Lidgren\\NetConnection.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Lidgren\\NetConnection.Handshake.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Lidgren\\NetConnection.Latency.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Lidgren\\NetConnection.MTU.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Lidgren\\NetConnectionStatistics.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Lidgren\\NetConnectionStatus.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Lidgren\\NetConstants.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Lidgren\\NetDeliveryMethod.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Lidgren\\NetException.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Lidgren\\NetFragmentationHelper.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Lidgren\\NetFragmentationInfo.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Lidgren\\NetIncomingMessage.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Lidgren\\NetIncomingMessageType.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Lidgren\\NetMessageType.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Lidgren\\NetNatIntroduction.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Lidgren\\NetOutgoingMessage.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Lidgren\\NetPeer.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Lidgren\\NetPeer.Discovery.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Lidgren\\NetPeer.Fragmentation.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Lidgren\\NetPeer.Internal.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Lidgren\\NetPeer.LatencySimulation.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Lidgren\\NetPeer.Logging.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Lidgren\\NetPeer.MessagePools.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Lidgren\\NetPeer.Send.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Lidgren\\NetPeerConfiguration.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Lidgren\\NetPeerStatistics.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Lidgren\\NetPeerStatus.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Lidgren\\NetQueue.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Lidgren\\NetRandom.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Lidgren\\NetReceiverChannelBase.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Lidgren\\NetReliableOrderedReceiver.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Lidgren\\NetReliableSenderChannel.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Lidgren\\NetReliableSequencedReceiver.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Lidgren\\NetReliableUnorderedReceiver.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Lidgren\\NetSenderChannelBase.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Lidgren\\NetSendResult.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Lidgren\\NetServer.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Lidgren\\NetSRP.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Lidgren\\NetStoredReliableMessage.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Lidgren\\NetTime.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Lidgren\\NetTuple.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Lidgren\\NetUnreliableSenderChannel.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Lidgren\\NetUnreliableSequencedReceiver.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Lidgren\\NetUnreliableUnorderedReceiver.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Lidgren\\NetUPnP.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Lidgren\\NetUtility.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Lidgren\\SenderChannelBase.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Multiplayer\\MyEventGlobalFlag.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Multiplayer\\MyEventEvent.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Multiplayer\\MyEventLoginSteam.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Multiplayer\\MyEventMusicTransition.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Multiplayer\\MyEventSavePlayer.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Multiplayer\\MyEventSetEntityFaction.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Multiplayer\\MyEventFriendlyFire.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Multiplayer\\MyEventUpdateRotationFast.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Multiplayer\\MyEventDirectIntroductionResponse.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Multiplayer\\MyEventCountdown.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Multiplayer\\MyEventSetFactionRelation.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Multiplayer\\MyEventSetActorFaction.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Multiplayer\\MyEventHeadshake.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Multiplayer\\MyEventPlaySound.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Multiplayer\\MyEventPlayDialogue.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Multiplayer\\MyEventUpdatePositionFast.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Multiplayer\\MyEventAddVoxelHand.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Multiplayer\\MyEventDummyFlags.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Multiplayer\\MyEventAddExplosion.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Multiplayer\\MyEventMissionUpdateVars.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Multiplayer\\MyEventFlags.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Multiplayer\\MyEventAfterburner.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Multiplayer\\MyEventCutOut.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Multiplayer\\MyEventHealthUpdate.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Multiplayer\\MyEventEntityReset.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Multiplayer\\MyEventLockResult.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Multiplayer\\MyEventLock.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Multiplayer\\MyEventInventoryUpdate.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Multiplayer\\MyEventMissionProgress.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Multiplayer\\MyEventNewEntity.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Multiplayer\\MyEventNotification.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Multiplayer\\MyEventPilotDie.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Multiplayer\\MyEventShipConfigUpdate.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Multiplayer\\MyEventChooseFactionResponse.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Multiplayer\\MyEventChooseFaction.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Multiplayer\\MyEventGetPlayerList.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Multiplayer\\MyEventGetPlayerListResponse.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Multiplayer\\MyEventEnterGameResponse.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Multiplayer\\MyEventChat.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Multiplayer\\MyEventAmmoUpdate.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Multiplayer\\MyEventEnterGame.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Multiplayer\\MyEventPlayerStateChanged.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Multiplayer\\MyEventRequestIntroduction.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Multiplayer\\MyEventSectorData.cs\" />\n    <Compile Include=\"AppCode\\Networking\\IReadWriteMessage.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Multiplayer\\MyEventAmmoExplosion.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Multiplayer\\MyEventDie.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Multiplayer\\MyEventDoDamage.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Multiplayer\\MyEventProjectileHit.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Multiplayer\\MyEventSetFaction.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Multiplayer\\MyEventShoot.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Multiplayer\\MyEventLoginResponse.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Multiplayer\\MyEventGetGames.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Multiplayer\\MyEventGetGamesResponse.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Multiplayer\\MyEventJoinGameResponse.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Multiplayer\\MyEventCreateGameResponse.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Multiplayer\\MyEventJoinGame.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Multiplayer\\MyEventLogin.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Multiplayer\\MyEventNewPlayer.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Multiplayer\\MyEventRespawn.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Multiplayer\\MyEventSpawnBot.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Multiplayer\\MyEventSpeacialWeapons.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Multiplayer\\MyEventStatsUpdate.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Multiplayer\\MyEventUpdateGame.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Multiplayer\\MyEventUpdatePosition.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Multiplayer\\MyEventCreateGame.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Multiplayer\\MyEventValidateUser.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Multiplayer\\MyEventValidateUserResponse.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Multiplayer\\MyGameInfo.cs\" />\n    <Compile Include=\"AppCode\\Networking\\MyLidgrenExtensions.cs\" />\n    <Compile Include=\"AppCode\\Networking\\MyMessageQueueItem.cs\" />\n    <Compile Include=\"AppCode\\Networking\\MyMessageReader.cs\" />\n    <Compile Include=\"AppCode\\Networking\\MyMessageWriter.cs\" />\n    <Compile Include=\"AppCode\\Networking\\MyLidgrenPeer.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Multiplayer\\MyPlayerInfo.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Multiplayer\\MyResultCode.cs\" />\n    <Compile Include=\"AppCode\\Networking\\MyMessageHelper.cs\" />\n    <Compile Include=\"AppCode\\Networking\\MyMwcSectorGroups.cs\" />\n    <Compile Include=\"AppCode\\Networking\\MyMwcClientServer_Structs.cs\" />\n    <Compile Include=\"AppCode\\Networking\\MyMwcMessageIn.cs\" />\n    <Compile Include=\"AppCode\\Networking\\MyMwcMessageOut.cs\" />\n    <Compile Include=\"AppCode\\Networking\\MyMwcCheaterAlert.cs\" />\n    <Compile Include=\"AppCode\\Networking\\MyRelayedConnection.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Services\\MyAlreadyLoggedInFault.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Services\\MyCertificateValidator.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Services\\MyCheckpointNotExistsFault.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Services\\MyCheckpointRenameFault.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Services\\MyCustomBinding.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Services\\MyCustomFault.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Services\\MyServiceConstants.cs\" />\n    <Compile Include=\"AppCode\\Networking\\Services\\MyVersionFault.cs\" />\n    <Compile Include=\"AppCode\\ObjectBuilders\\InfluenceSpheres\\MyMwcObjectBuilder_InfluenceSphere.cs\" />\n    <Compile Include=\"AppCode\\ObjectBuilders\\IMyEntityIdRemapContext.cs\" />\n    <Compile Include=\"AppCode\\ObjectBuilders\\MyMwcObjectBuilder_Checkpoint.cs\" />\n    <Compile Include=\"AppCode\\ObjectBuilders\\MyMwcObjectBuilder_FactionRelationChange.cs\" />\n    <Compile Include=\"AppCode\\ObjectBuilders\\MyMwcObjectBuilder_GlobalData.cs\" />\n    <Compile Include=\"AppCode\\ObjectBuilders\\MyMwcObjectBuilder_ObjectGroup.cs\" />\n    <Compile Include=\"AppCode\\ObjectBuilders\\MyMwcObjectBuilder_Player.cs\" />\n    <Compile Include=\"AppCode\\ObjectBuilders\\MyMwcObjectBuilder_PlayerStatistics.cs\" />\n    <Compile Include=\"AppCode\\ObjectBuilders\\MyMwcObjectBuilder_RemotePlayer.cs\" />\n    <Compile Include=\"AppCode\\ObjectBuilders\\MyMwcObjectBuilder_Sector.cs\" />\n    <Compile Include=\"AppCode\\ObjectBuilders\\MyMwcObjectBuilder_SectorObjectGroups.cs\" />\n    <Compile Include=\"AppCode\\ObjectBuilders\\MyMwcObjectBuilder_Session.cs\" />\n    <Compile Include=\"AppCode\\ObjectBuilders\\MyMwcObjectBuilder_ShipConfig.cs\" />\n    <Compile Include=\"AppCode\\ObjectBuilders\\MyMwcObjectBuilder_SmallShipTemplate.cs\" />\n    <Compile Include=\"AppCode\\ObjectBuilders\\MyMwcObjectBuilder_SmallShipTemplates.cs\" />\n    <Compile Include=\"AppCode\\ObjectBuilders\\MyMwcObjectBuilder_SnapPointLink.cs\" />\n    <Compile Include=\"AppCode\\ObjectBuilders\\MySolarSystemAreaEnum.cs\" />\n    <Compile Include=\"AppCode\\ObjectBuilders\\Object3D\\MyMwcObjectBuilder_Meteor.cs\" />\n    <Compile Include=\"AppCode\\ObjectBuilders\\Object3D\\MyMwcObjectBuilder_MysteriousCube.cs\" />\n    <Compile Include=\"AppCode\\ObjectBuilders\\Object3D\\MyMwcObjectBuilder_CargoBox.cs\" />\n    <Compile Include=\"AppCode\\ObjectBuilders\\Object3D\\MyMwcObjectBuilder_Drone.cs\" />\n    <Compile Include=\"AppCode\\ObjectBuilders\\Object3D\\MyMwcObjectBuilder_DummyPoint.cs\" />\n    <Compile Include=\"AppCode\\ObjectBuilders\\Object3D\\MyMwcObjectBuilder_EntityDetector.cs\" />\n    <Compile Include=\"AppCode\\ObjectBuilders\\Object3D\\MyMwcObjectBuilder_FoundantionFactory.cs\" />\n    <Compile Include=\"AppCode\\ObjectBuilders\\Object3D\\MyMwcObjectBuilder_LargeDebrisField.cs\" />\n    <Compile Include=\"AppCode\\ObjectBuilders\\Object3D\\MyMwcObjectBuilder_LargeShip.cs\" />\n    <Compile Include=\"AppCode\\ObjectBuilders\\MyMwcObjectBuilder_Base.cs\" />\n    <Compile Include=\"AppCode\\ObjectBuilders\\Object3D\\MyMwcObjectBuilder_Object3dBase.cs\" />\n    <Compile Include=\"AppCode\\ObjectBuilders\\Object3D\\MyMwcObjectBuilder_Ship.cs\" />\n    <Compile Include=\"AppCode\\ObjectBuilders\\Object3D\\MyMwcObjectBuilder_SmallDebris.cs\" />\n    <Compile Include=\"AppCode\\ObjectBuilders\\Object3D\\MyMwcObjectBuilder_SmallShip_Bot.cs\" />\n    <Compile Include=\"AppCode\\ObjectBuilders\\Object3D\\MyMwcObjectBuilder_SmallShip_Player.cs\" />\n    <Compile Include=\"AppCode\\ObjectBuilders\\Object3D\\MyMwcObjectBuilder_StaticAsteroid.cs\" />\n    <Compile Include=\"AppCode\\ObjectBuilders\\Object3D\\MyMwcObjectBuilder_PrefabContainer.cs\" />\n    <Compile Include=\"AppCode\\ObjectBuilders\\Object3D\\MyMwcObjectBuilder_WayPoint.cs\" />\n    <Compile Include=\"AppCode\\ObjectBuilders\\SubObjects\\LargeShipTools\\MyMwcObjectBuilder_LargeShip_Ammo.cs\" />\n    <Compile Include=\"AppCode\\ObjectBuilders\\SubObjects\\LargeShipTools\\MyMwcObjectBuilder_LargeShip_ToolBase.cs\" />\n    <Compile Include=\"AppCode\\ObjectBuilders\\SubObjects\\MyMwcObjectBuilder_Blueprint.cs\" />\n    <Compile Include=\"AppCode\\ObjectBuilders\\SubObjects\\MyMwcObjectBuilder_Event.cs\" />\n    <Compile Include=\"AppCode\\ObjectBuilders\\SubObjects\\MyMwcObjectBuilder_FalseId.cs\" />\n    <Compile Include=\"AppCode\\ObjectBuilders\\SubObjects\\MyMwcObjectBuilder_Inventory.cs\" />\n    <Compile Include=\"AppCode\\ObjectBuilders\\SubObjects\\MyMwcObjectBuilder_InventoryItem.cs\" />\n    <Compile Include=\"AppCode\\ObjectBuilders\\SubObjects\\MyMwcObjectBuilder_ObjectToBuild.cs\" />\n    <Compile Include=\"AppCode\\ObjectBuilders\\SubObjects\\MyMwcObjectbuilder_Ore.cs\" />\n    <Compile Include=\"AppCode\\ObjectBuilders\\SubObjects\\MyMwcObjectBuilder_Prefab.cs\" />\n    <Compile Include=\"AppCode\\ObjectBuilders\\SubObjects\\MyMwcObjectBuilder_PrefabBase.cs\" />\n    <Compile Include=\"AppCode\\ObjectBuilders\\SubObjects\\MyMwcObjectBuilder_SmallShip_Tool.cs\" />\n    <Compile Include=\"AppCode\\ObjectBuilders\\SubObjects\\MyMwcObjectBuilder_SubObjectBase.cs\" />\n    <Compile Include=\"AppCode\\ObjectBuilders\\Object3D\\MyMwcObjectBuilder_SmallShip.cs\" />\n    <Compile Include=\"AppCode\\ObjectBuilders\\SubObjects\\Prefabs\\MyMwcObjectBuilder_PrefabAlarm.cs\" />\n    <Compile Include=\"AppCode\\ObjectBuilders\\SubObjects\\Prefabs\\MyMwcObjectBuilder_PrefabCamera.cs\" />\n    <Compile Include=\"AppCode\\ObjectBuilders\\SubObjects\\Prefabs\\MyMwcObjectBuilder_PrefabGenerator.cs\" />\n    <Compile Include=\"AppCode\\ObjectBuilders\\SubObjects\\Prefabs\\MyMwcObjectBuilder_PrefabBankNode.cs\" />\n    <Compile Include=\"AppCode\\ObjectBuilders\\SubObjects\\Prefabs\\MyMwcObjectBuilder_PrefabFoundationFactory.cs\" />\n    <Compile Include=\"AppCode\\ObjectBuilders\\SubObjects\\Prefabs\\MyMwcObjectBuilder_PrefabHangar.cs\" />\n    <Compile Include=\"AppCode\\ObjectBuilders\\SubObjects\\Prefabs\\MyMwcObjectBuilder_PrefabKinematicPart.cs\" />\n    <Compile Include=\"AppCode\\ObjectBuilders\\SubObjects\\Prefabs\\MyMwcObjectBuilder_PrefabKinematicRotatingPart.cs\" />\n    <Compile Include=\"AppCode\\ObjectBuilders\\SubObjects\\Prefabs\\MyMwcObjectBuilder_PrefabLargeShip.cs\" />\n    <Compile Include=\"AppCode\\ObjectBuilders\\SubObjects\\Prefabs\\MyMwcObjectBuilder_PrefabKinematic.cs\" />\n    <Compile Include=\"AppCode\\ObjectBuilders\\SubObjects\\Prefabs\\MyMwcObjectBuilder_PrefabLargeWeapon.cs\" />\n    <Compile Include=\"AppCode\\ObjectBuilders\\SubObjects\\Prefabs\\MyMwcObjectBuilder_PrefabParticles.cs\" />\n    <Compile Include=\"AppCode\\ObjectBuilders\\SubObjects\\Prefabs\\MyMwcObjectBuilder_PrefabScanner.cs\" />\n    <Compile Include=\"AppCode\\ObjectBuilders\\SubObjects\\Prefabs\\MyMwcObjectBuilder_PrefabSecurityControlHUB.cs\" />\n    <Compile Include=\"AppCode\\ObjectBuilders\\SubObjects\\Prefabs\\MyMwcObjectBuilder_PrefabSound.cs\" />\n    <Compile Include=\"AppCode\\ObjectBuilders\\SubObjects\\Prefabs\\MyMwcObjectBuilder_PrefabLight.cs\" />\n    <Compile Include=\"AppCode\\ObjectBuilders\\SubObjects\\Prefabs\\MyMwcObjectBuilder_EntityUseProperties.cs\" />\n    <Compile Include=\"AppCode\\ObjectBuilders\\SubObjects\\SmallShipTools\\MyMwcObjectBuilder_SmallShip_Ammo.cs\" />\n    <Compile Include=\"AppCode\\ObjectBuilders\\SubObjects\\SmallShipTools\\MyMwcObjectBuilder_SmallShip_Armor.cs\" />\n    <Compile Include=\"AppCode\\ObjectBuilders\\SubObjects\\SmallShipTools\\MyMwcObjectBuilder_SmallShip_AssignmentOfAmmo.cs\" />\n    <Compile Include=\"AppCode\\ObjectBuilders\\SubObjects\\MyMwcObjectBuilder_SmallShip_Weapon.cs\" />\n    <Compile Include=\"AppCode\\ObjectBuilders\\SubObjects\\SmallShipTools\\MyMwcObjectBuilder_SmallShip_Engine.cs\">\n      <SubType>Code</SubType>\n    </Compile>\n    <Compile Include=\"AppCode\\ObjectBuilders\\SubObjects\\SmallShipTools\\MyMwcObjectBuilder_SmallShip_HackingTool.cs\" />\n    <Compile Include=\"AppCode\\ObjectBuilders\\SubObjects\\SmallShipTools\\MyMwcObjectBuilder_SmallShip_Radar.cs\" />\n    <Compile Include=\"AppCode\\ObjectBuilders\\Voxels\\MyMwcObjectBuilder_VoxelHand_Cylinder.cs\" />\n    <Compile Include=\"AppCode\\ObjectBuilders\\Voxels\\MyMwcObjectBuilder_VoxelHand_Box.cs\" />\n    <Compile Include=\"AppCode\\ObjectBuilders\\Voxels\\MyMwcObjectBuilder_VoxelHand_Cuboid.cs\" />\n    <Compile Include=\"AppCode\\ObjectBuilders\\Object3D\\MyMwcObjectBuilder_SpawnPoint.cs\" />\n    <Compile Include=\"AppCode\\ObjectBuilders\\Voxels\\MyMwcObjectBuilder_VoxelHand_Shape.cs\" />\n    <Compile Include=\"AppCode\\ObjectBuilders\\Voxels\\MyMwcObjectBuilder_VoxelHand_Sphere.cs\" />\n    <Compile Include=\"AppCode\\ObjectBuilders\\Voxels\\MyMwcObjectBuilder_VoxelMap.cs\" />\n    <Compile Include=\"AppCode\\ObjectBuilders\\Voxels\\MyMwcObjectBuilder_VoxelMap_MergeContent.cs\" />\n    <Compile Include=\"AppCode\\ObjectBuilders\\Voxels\\MyMwcObjectBuilder_VoxelMap_MergeMaterial.cs\" />\n    <Compile Include=\"AppCode\\ObjectBuilders\\Voxels\\MyMwcObjectBuilder_VoxelMap_Neighbour.cs\" />\n    <Compile Include=\"AppCode\\Utils\\My5BitEncoding.cs\" />\n    <Compile Include=\"AppCode\\Utils\\MyCommonDebugUtils.cs\" />\n    <Compile Include=\"AppCode\\Utils\\MyFileSystemUtils.cs\" />\n    <Compile Include=\"AppCode\\Utils\\MyMemoryLogs.cs\" />\n    <Compile Include=\"AppCode\\Utils\\MyMinerWarsLauncherConfig.cs\" />\n    <Compile Include=\"AppCode\\Utils\\MyMwcBuildNumbers.cs\" />\n    <Compile Include=\"AppCode\\Utils\\MyMwcConstants.cs\" />\n    <Compile Include=\"AppCode\\Utils\\MyMwcEncryptionSymmetricRijndael.cs\" />\n    <Compile Include=\"AppCode\\Utils\\MyMwcEnumDuplicitiesTester.cs\" />\n    <Compile Include=\"AppCode\\Utils\\MyMwcEnums.cs\" />\n    <Compile Include=\"AppCode\\Utils\\MyMwcFakes.cs\" />\n    <Compile Include=\"AppCode\\Utils\\MyMwcLog.cs\" />\n    <Compile Include=\"AppCode\\Utils\\MyMwcRandomExtensions.cs\" />\n    <Compile Include=\"AppCode\\Utils\\MyMwcSecrets.cs\" />\n    <Compile Include=\"AppCode\\Utils\\MyMwcStructs.cs\" />\n    <Compile Include=\"AppCode\\Utils\\MyMwcUtils.cs\" />\n    <Compile Include=\"AppCode\\Utils\\MyStringUtils.cs\" />\n    <Compile Include=\"AppCode\\Utils\\MyValueFormatter.cs\" />\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n  </ItemGroup>\n  <ItemGroup>\n    <BootstrapperPackage Include=\"Microsoft.Net.Client.3.5\">\n      <Visible>False</Visible>\n      <ProductName>.NET Framework Client Profile</ProductName>\n      <Install>false</Install>\n    </BootstrapperPackage>\n    <BootstrapperPackage Include=\"Microsoft.Net.Framework.2.0\">\n      <Visible>False</Visible>\n      <ProductName>.NET Framework 2.0 %28x86%29</ProductName>\n      <Install>false</Install>\n    </BootstrapperPackage>\n    <BootstrapperPackage Include=\"Microsoft.Net.Framework.3.0\">\n      <Visible>False</Visible>\n      <ProductName>.NET Framework 3.0 %28x86%29</ProductName>\n      <Install>false</Install>\n    </BootstrapperPackage>\n    <BootstrapperPackage Include=\"Microsoft.Net.Framework.3.5\">\n      <Visible>False</Visible>\n      <ProductName>.NET Framework 3.5</ProductName>\n      <Install>false</Install>\n    </BootstrapperPackage>\n    <BootstrapperPackage Include=\"Microsoft.Net.Framework.3.5.SP1\">\n      <Visible>False</Visible>\n      <ProductName>.NET Framework 3.5 SP1</ProductName>\n      <Install>true</Install>\n    </BootstrapperPackage>\n    <BootstrapperPackage Include=\"Microsoft.Windows.Installer.3.1\">\n      <Visible>False</Visible>\n      <ProductName>Windows Installer 3.1</ProductName>\n      <Install>true</Install>\n    </BootstrapperPackage>\n  </ItemGroup>\n  <ItemGroup>\n    <Folder Include=\"AppCode\\Managers\\\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ProjectReference Include=\"..\\Library\\Library.csproj\">\n      <Project>{26FE022E-42AB-40BE-BA9D-97CBE34E7D99}</Project>\n      <Name>Library</Name>\n    </ProjectReference>\n    <ProjectReference Include=\"..\\MinerWarsMath\\MinerWarsMath.csproj\">\n      <Project>{40CE67D5-C89F-4A56-AE52-85DB1BEA07FE}</Project>\n      <Name>MinerWarsMath</Name>\n    </ProjectReference>\n  </ItemGroup>\n  <ItemGroup>\n    <Service Include=\"{508349B6-6B84-4DF5-91F0-309BEEBAD82D}\" />\n  </ItemGroup>\n  <Import Project=\"$(MSBuildToolsPath)\\Microsoft.CSharp.targets\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "Sources/CommonLIB/MinerWarsCommonLIB.csproj.user",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <PropertyGroup>\n    <PublishUrlHistory>\n    </PublishUrlHistory>\n    <InstallUrlHistory>\n    </InstallUrlHistory>\n    <SupportUrlHistory>\n    </SupportUrlHistory>\n    <UpdateUrlHistory>\n    </UpdateUrlHistory>\n    <BootstrapperUrlHistory>\n    </BootstrapperUrlHistory>\n    <ErrorReportUrlHistory>\n    </ErrorReportUrlHistory>\n    <FallbackCulture>en-US</FallbackCulture>\n    <VerifyUploadedFiles>false</VerifyUploadedFiles>\n    <ProjectView>ProjectFiles</ProjectView>\n  </PropertyGroup>\n</Project>"
  },
  {
    "path": "Sources/CommonLIB/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"MinerWarsCommonLIB\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"Keen Software House\")]\n[assembly: AssemblyProduct(\"MinerWarsCommonLIB\")]\n[assembly: AssemblyCopyright(\"Copyright © Keen Software House 2009\")]\n[assembly: AssemblyTrademark(\"Miner Wars\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Setting ComVisible to false makes the types in this assembly not visible \n// to COM components.  If you need to access a type in this assembly from \n// COM, set the ComVisible attribute to true on that type.\n[assembly: ComVisible(false)]\n\n// The following GUID is for the ID of the typelib if this project is exposed to COM\n[assembly: Guid(\"29613bf2-9a4d-46f5-a737-53a0f78dcec5\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n"
  },
  {
    "path": "Sources/Library/Cloning/ClonableExtensions.cs",
    "content": "﻿\nnamespace KeenSoftwareHouse.Library.Cloning\n{\n#if !NET20\n    \n    /// <summary>\n    /// Extension method for DeepClone&lt;T>() on every object.\n    /// </summary>\n    public static class ClonableExtensions\n    {\n        /// <summary>\n        /// Provides a deep-clone of objects using either serialization routines if available\n        /// or memberwize cloning when serialization is not supported.\n        /// See also: new SerializerClone().Clone&lt;T>(instance)\n        /// </summary>\n        public static T DeepClone<T>(this T instance)\n        {\n            return new SerializerClone().Clone<T>(instance);\n        }\n    }\n#endif\n}\n"
  },
  {
    "path": "Sources/Library/Cloning/MemberwiseClone.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Reflection;\nusing System.Runtime.Serialization;\n\nnamespace KeenSoftwareHouse.Library.Cloning\n{\n    /// <summary>\n    /// Provides a deep-copy, field-level duplication of any object\n    /// </summary>\n    public class MemberwiseClone : ObjectCloner\n    {\n        readonly IDictionary<Type, MemberInfo[]> fieldsCache;\n\n        /// <summary>\n        /// Provides a deep-copy, field-level duplication of any object\n        /// </summary>\n        public MemberwiseClone()\n        {\n            fieldsCache = new Dictionary<Type, MemberInfo[]>();\n        }\n\n        /// <summary>\n        /// Routine to clone an objects fields and their contents\n        /// </summary>\n        protected override object CloneDefault(object instance, object def = null)\n        {\n            Type type = instance.GetType();\n            object copy = FormatterServices.GetUninitializedObject(type);\n            Graph.Add(instance, copy);\n\n            MemberInfo[] fields = ClonableFields(type);\n            object[] values = FormatterServices.GetObjectData(instance, fields);\n\n            for (int i = 0; i < values.Length; i++)\n                values[i] = this.CloneObject(values[i], null);\n\n            FormatterServices.PopulateObjectMembers(copy, fields, values);\n            return copy;\n        }\n\n        protected virtual MemberInfo[] ClonableFields(Type type)\n        {\n            MemberInfo[] result;\n            if (fieldsCache.TryGetValue(type, out result))\n                return result;\n\n            List<MemberInfo> fields = new List<MemberInfo>();\n            Type t = type;\n            while (t != null && t != typeof(Object))\n            {\n                fields.AddRange(\n                    t.GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));\n                t = t.BaseType;\n            }\n\n            return fieldsCache[type] = fields.ToArray();\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/Library/Cloning/ObjectCloner.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\n\nnamespace KeenSoftwareHouse.Library.Cloning\n{\n    /// <summary>\n    /// A class that performs duplication of an entire object graph\n    /// </summary>\n    public abstract class ObjectCloner : IDisposable\n    {\n        readonly IDictionary<object, object> graph;\n\n        /// <summary>\n        /// Creates the cloner\n        /// </summary>\n        protected ObjectCloner()\n        {\n            graph = new Dictionary<object, object>(new ReferenceEqualityComparer());\n        }\n\n        /// <summary>\n        /// Disposes of the instance and it's references to objects that have been duplicated\n        /// </summary>\n        public void Dispose() { Clear(); }\n        /// <summary>\n        /// Removes all instances from the object graph\n        /// </summary>\n        public void Clear() { graph.Clear(); }\n        /// <summary>\n        /// Add or Remove instances from the object graph, by adding this.Graph[o] = o; the instance 'o' will \n        /// not be duplicated.\n        /// </summary>\n        public IDictionary<object, object> Graph { [System.Diagnostics.DebuggerStepThrough] get { return graph; } }\n\n        /// <summary>\n        /// Public entry point to begin duplication of the object graph.\n        /// </summary>\n        public virtual T Clone<T>(T instance)\n        {\n            try\n            {\n                return CloneObject<T>(instance, default(T));\n            }\n            finally { Clear(); }\n        }\n\n        /// <summary>\n        /// Internal duplicate an object graph\n        /// </summary>\n        protected T CloneObject<T>(T instance, T original)\n        {\n            object copy;\n\n            if (ReferenceEquals(instance, null) || instance is string || instance is DateTime ||\n                instance is DateTimeOffset || instance is TimeSpan || instance is Boolean || instance is Byte ||\n                instance is SByte || instance is Int16 || instance is UInt16 || instance is Int32 ||\n                instance is UInt32 || instance is Int64 || instance is UInt64 || instance is IntPtr ||\n                instance is Char || instance is Double || instance is Single || instance is MarshalByRefObject)\n                return instance;\n\n            if (graph.TryGetValue(instance, out copy))\n            {\n                return (T) copy;\n            }\n\n            if (instance is Array)\n            {\n                return (T) (object) CloneArray((Array) (object) instance);\n            }\n\n            if (instance is Delegate)\n            {\n                return (T) (object) CloneDelegate((Delegate) (object) instance);\n            }\n\n            return (T)CloneDefault(instance, original);\n        }\n\n        /// <summary>\n        /// Provides the default behavior for duplicating an object and recording the\n        /// duplication into the graph.\n        /// </summary>\n        /// <param name=\"inst\">The inst.</param>\n        /// <param name=\"def\">The default instance value of it, if not null default instance is used insted of creating new one.</param>\n        /// <returns></returns>\n        protected abstract object CloneDefault(object inst, object def = null);\n\n        private Array CloneArray(Array instance)\n        {\n            Array copy = (Array)((ICloneable)instance).Clone();\n            graph.Add(instance, copy);\n\n            int[] indexes = new int[copy.Rank];\n            CloneArray(copy, indexes, 0);\n            return copy;\n        }\n\n        private void CloneArray(Array copy, int[] indexes, int rank)\n        {\n            int stop = copy.GetUpperBound(rank);\n            for (indexes[rank] = copy.GetLowerBound(rank); indexes[rank] <= stop; indexes[rank]++)\n            {\n                if ((rank + 1) < copy.Rank)\n                    CloneArray(copy, indexes, rank + 1);\n                else\n                    copy.SetValue(this.CloneObject(copy.GetValue(indexes), null), indexes);\n            }\n        }\n\n        private Delegate CloneDelegate(Delegate method)\n        {\n            Delegate result = null;\n            foreach (Delegate del in method.GetInvocationList())\n            {\n                Delegate delCopy = Delegate.CreateDelegate(del.GetType(), CloneObject(del.Target, null), del.Method, true);\n                result = Delegate.Combine(result, delCopy);\n            }\n\n            graph[method] = result;\n            return result;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/Library/Cloning/ReferenceComparer.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\n\nnamespace KeenSoftwareHouse.Library.Cloning\n{\n    /// <summary>\n    /// Dictionary comparer for comparing objects by reference reguardless of having\n    /// the GetHashCode / Equals override implemented on an object.\n    /// </summary>\n    public sealed class ReferenceEqualityComparer : IEqualityComparer<object>\n    {\n        /// <summary>\n        /// Returns true if the two objects are the same instance\n        /// </summary>\n        bool IEqualityComparer<object>.Equals(object x, object y)\n        {\n            return Object.ReferenceEquals(x, y);\n        }\n\n        /// <summary>\n        /// Returns a hash code the instance of the object\n        /// </summary>\n        int IEqualityComparer<object>.GetHashCode(object obj)\n        {\n            return System.Runtime.CompilerServices.RuntimeHelpers.GetHashCode(obj);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/Library/Cloning/SerializerClone.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Reflection;\nusing System.Runtime.Serialization;\n\nnamespace KeenSoftwareHouse.Library.Cloning\n{\n    /// <summary>\n    /// Used to duplicate objects either by the ISerializable interface or by field-level duplication.\n    /// </summary>\n    public class SerializerClone : MemberwiseClone\n    {\n        readonly IDictionary<Type, MemberInfo[]> fieldsCache;\n        readonly IList<IDeserializationCallback> callbacks;\n        static readonly StreamingContext sCtx = new StreamingContext(StreamingContextStates.Persistence);\n\n        /// <summary>\n        /// Used to duplicate objects either by the ISerializable interface or by field-level duplication.\n        /// </summary>\n        public SerializerClone()\n        {\n            fieldsCache = new Dictionary<Type, MemberInfo[]>();\n            callbacks = new List<IDeserializationCallback>();\n        }\n\n        /// <summary>\n        /// Public entry point to begin duplication of the object graph.  If your using this instance multiple\n        /// times you should call Clear() between the object graphs or the copies previously made will be used.\n        /// </summary>\n        public override T Clone<T>(T instance)\n        {\n            T result;\n            try\n            {\n                result = base.Clone<T>(instance);\n\n                foreach (IDeserializationCallback cb in callbacks)\n                    cb.OnDeserialization(this);\n            }\n            finally\n            {\n                if (callbacks.Count > 0)\n                    callbacks.Clear();\n            }\n            return result;\n        }\n\n        /// <summary>\n        /// If the object provided is [Serializable] a simulated serialization routine is used to duplicate \n        /// the object, if it's not serializable then the MemberwiseClone base class will perform the copy.\n        /// </summary>\n        protected override object CloneDefault(object instance, object def)\n        {\n            Type type = instance.GetType();\n\n            if (!type.IsSerializable)\n                return base.CloneDefault(instance);\n\n            object copy;\n            if (instance is ISerializable)\n                copy = CloneWithISerializable(instance);\n            else\n                copy = CloneSerializableFields(instance);\n\n            if (copy is IDeserializationCallback)\n                callbacks.Add((IDeserializationCallback)copy);\n\n            return copy;\n        }\n\n        private object CloneSerializableFields(object instance)\n        {\n            object copy;\n            Type type = instance.GetType();\n            MemberInfo[] fields = SerializedFields(type);\n            object[] values = FormatterServices.GetObjectData(instance, fields);\n\n            copy = FormatterServices.GetUninitializedObject(type);\n            Graph.Add(instance, copy);\n\n            for (int i = 0; i < values.Length; i++)\n                values[i] = this.CloneObject(values[i], null);\n\n            FormatterServices.PopulateObjectMembers(copy, fields, values);\n            return copy;\n        }\n\n        private object CloneWithISerializable(object instance)\n        {\n            object copy;\n            Type type = instance.GetType();\n            SerializationInfo sInfo = new SerializationInfo(type, new FormatterConverter());\n            ((ISerializable)instance).GetObjectData(sInfo, sCtx);\n\n            Type tcopy = Type.GetType(String.Format(\"{0}, {1}\", sInfo.FullTypeName, sInfo.AssemblyName), true, false);\n\n            copy = FormatterServices.GetUninitializedObject(tcopy);\n            Graph.Add(instance, copy);\n\n            SerializationInfo sCopy = new SerializationInfo(tcopy, new FormatterConverter());\n            foreach (SerializationEntry se in sInfo)\n                sCopy.AddValue(se.Name, this.CloneObject(se.Value, null), se.ObjectType);\n\n            if (type == tcopy || typeof(ISerializable).IsAssignableFrom(tcopy))\n            {\n                ConstructorInfo ci = tcopy.GetConstructor(\n                    BindingFlags.CreateInstance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance, null,\n                    new Type[] { typeof(SerializationInfo), typeof(StreamingContext) }, null);\n                if (ci == null)\n                    throw new SerializationException(\"Serialization constructor not found.\");\n                ci.Invoke(copy, new object[] { sCopy, sCtx });\n            }\n            else\n            {\n                List<MemberInfo> fields = new List<MemberInfo>();\n                List<object> values = new List<object>();\n\n                foreach(FieldInfo fi in SerializedFields(tcopy))\n                {\n                    try\n                    {\n                        object value = sCopy.GetValue(fi.Name, fi.FieldType);\n                        fields.Add(fi);\n                        values.Add(value);\n                    }\n                    catch (SerializationException) { }\n                }\n\n                FormatterServices.PopulateObjectMembers(copy, fields.ToArray(), values.ToArray());\n            }\n\n            if (copy is IObjectReference)\n            {\n                copy = ((IObjectReference)copy).GetRealObject(sCtx);\n                Graph[instance] = copy;\n            }\n            return copy;\n        }\n\n        private MemberInfo[] SerializedFields(Type t)\n        {\n            MemberInfo[] result;\n            if (fieldsCache.TryGetValue(t, out result))\n                return result;\n            return fieldsCache[t] = FormatterServices.GetSerializableMembers(t);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/Library/Collections/Comparers/EnumComparer.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq.Expressions;\n\nnamespace KeenSoftwareHouse.Library.Collections.Comparers\n{\n    /// <summary>\n    /// A fast and efficient implementation of <see cref=\"IEqualityComparer{T}\"/> for Enum types.\n    /// Useful for dictionaries that use Enums as their keys.\n    /// </summary>\n    /// <remarks>\n    /// var dict = new Dictionary&lt;DayOfWeek, \n    /// string&gt;(EnumComparer&lt;DayOfWeek&gt;.Instance);\n    /// </remarks>\n    /// <typeparam name=\"TEnum\">The type of the Enum.</typeparam>\n    public sealed class EnumComparer<TEnum> : IEqualityComparer<TEnum>\n        where TEnum : struct, IComparable, IConvertible, IFormattable\n    {\n        /// <summary>\n        /// \n        /// </summary>\n        private static readonly Func<TEnum, TEnum, bool> equalsFunct;\n        \n        /// <summary>\n        /// \n        /// </summary>\n        private static readonly Func<TEnum, int> getHashCodeFunct;\n        \n        /// <summary>\n        /// The singleton accessor.\n        /// </summary>\n        private static readonly EnumComparer<TEnum> instance;\n\n        // ReSharper restore StaticFieldInGenericType\n\n        /// <summary>\n        /// Initializes the <see cref=\"EnumComparer{TEnum}\"/> class\n        /// by generating the GetHashCode and Equals methods.\n        /// </summary>\n        static EnumComparer()\n        {\n            getHashCodeFunct = GenerateGetHashCodeFunct();\n            equalsFunct = GenerateEqualsFunct();\n\n            instance = new EnumComparer<TEnum>();\n        }\n\n        /// <summary>\n        /// A private constructor to prevent user instantiation.\n        /// </summary>\n        private EnumComparer()\n        {\n            AssertTypeIsEnum();\n            AssertUnderlyingTypeIsSupported();\n        }\n\n        /// <summary>\n        /// The singleton accessor.\n        /// </summary>\n        public static EnumComparer<TEnum> Instance\n        {\n            get\n            {\n                return instance;\n            }\n        }\n\n        /// <summary>\n        /// Determines whether the specified objects are equal.\n        /// </summary>\n        /// <param name=\"x\">The first object of type <typeparamref name=\"TEnum\"/> \n        /// to compare.</param>\n        /// <param name=\"y\">The second object of type <typeparamref name=\"TEnum\"/> \n        /// to compare.</param>\n        /// <returns>\n        /// true if the specified objects are equal; otherwise, false.\n        /// </returns>\n        public bool Equals(TEnum x, TEnum y)\n        {\n            // call the generated method\n            return equalsFunct(x, y);\n        }\n\n        /// <summary>\n        /// Returns a hash code for the specified object.\n        /// </summary>\n        /// <param name=\"obj\">The <see cref=\"T:System.Object\"/> \n        /// for which a hash code is to be returned.</param>\n        /// <returns>A hash code for the specified object.</returns>\n        /// <exception cref=\"T:System.ArgumentNullException\">\n        /// The type of <paramref name=\"obj\"/> is a reference type and \n        /// <paramref name=\"obj\"/> is null.\n        /// </exception>\n        public int GetHashCode(TEnum obj)\n        {\n            // call the generated method\n            return getHashCodeFunct(obj);\n        }\n\n        /// <summary>\n        /// Asserts the type is enum.\n        /// </summary>\n        private static void AssertTypeIsEnum()\n        {\n            if (typeof(TEnum).IsEnum)\n            {\n                return;\n            }\n\n            var message = string.Format(\"The type parameter {0} is not an Enum. LcgEnumComparer supports Enums only.\", typeof (TEnum));\n\n            throw new NotSupportedException(message);\n        }\n\n        /// <summary>\n        /// Asserts the underlying type is supported.\n        /// </summary>\n        private static void AssertUnderlyingTypeIsSupported()\n        {\n            var underlyingType = Enum.GetUnderlyingType(typeof (TEnum));\n\n            ICollection<Type> supportedTypes = new[]\n                                                   {\n                                                       typeof (byte), typeof (sbyte), typeof (short), typeof (ushort),\n                                                       typeof (int), typeof (uint), typeof (long), typeof (ulong)\n                                                   };\n\n            if (supportedTypes.Contains(underlyingType))\n            {\n                return;\n            }\n\n            var message =\n                string.Format(\"The underlying type of the type parameter {0} is {1}. \" +\n                              \"LcgEnumComparer only supports Enums with underlying type of \" +\n                              \"byte, sbyte, short, ushort, int, uint, long, or ulong.\",\n                              typeof (TEnum), underlyingType);\n\n            throw new NotSupportedException(message);\n        }\n\n        /// <summary>\n        /// Generates a comparison method similar to this:\n        /// <code>\n        /// bool Equals(TEnum x, TEnum y)\n        /// {\n        ///     return x == y;\n        /// }\n        /// </code>\n        /// </summary>\n        /// <returns>The generated method.</returns>\n        private static Func<TEnum, TEnum, bool> GenerateEqualsFunct()\n        {\n            var xParam = Expression.Parameter(typeof (TEnum), \"x\");\n            var yParam = Expression.Parameter(typeof (TEnum), \"y\");\n            var equalExpression = Expression.Equal(xParam, yParam);\n            \n            return Expression.Lambda<Func<TEnum, TEnum, bool>>(equalExpression, new[] {xParam, yParam}).Compile();\n        }\n\n        /// <summary>\n        /// Generates a GetHashCode method similar to this:\n        /// <code>\n        /// int GetHashCode(TEnum obj)\n        /// {\n        ///     return ((int)obj).GetHashCode();\n        /// }\n        /// </code>\n        /// </summary>\n        /// <returns>The generated method.</returns>\n        private static Func<TEnum, int> GenerateGetHashCodeFunct()\n        {\n            var objParam = Expression.Parameter(typeof (TEnum), \"obj\");\n            var underlyingType = Enum.GetUnderlyingType(typeof (TEnum));\n            var convertExpression = Expression.Convert(objParam, underlyingType);\n            var getHashCodeMethod = underlyingType.GetMethod(\"GetHashCode\");\n            var getHashCodeExpression = Expression.Call(convertExpression, getHashCodeMethod);\n            \n            return Expression.Lambda<Func<TEnum, int>>(getHashCodeExpression, new[] {objParam}).Compile();\n        }\n    }\n}"
  },
  {
    "path": "Sources/Library/Collections/LRUCache.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\n\nnamespace KeenSoftwareHouse.Library.Collections\n{\n    /// <summary>\n    /// IndexedLinkedList\n    /// </summary>\n    /// <typeparam name=\"T\"></typeparam>\n    internal class IndexedLinkedList<T>\n    {\n        readonly LinkedList<T> data = new LinkedList<T>();\n        readonly Dictionary<T, LinkedListNode<T>> index = new Dictionary<T, LinkedListNode<T>>();\n\n        public int Count\n        {\n            get\n            {\n                return data.Count;\n            }\n        }\n\n        public T First\n        {\n            get\n            {\n                return data.First.Value;\n            }\n        }\n\n        public void Add(T value)\n        {\n            index[value] = data.AddLast(value);\n        }\n\n        public void RemoveFirst()\n        {\n            index.Remove(data.First.Value);\n            data.RemoveFirst();\n        }\n\n        public LinkedListNode<T> Remove(T value)\n        {\n            LinkedListNode<T> node;\n            if (index.TryGetValue(value, out node))\n            {\n                data.Remove(node);\n                index.Remove(value);\n\n                return node;\n            }\n\n            return null;\n        }\n\n        public void Clear()\n        {\n            data.Clear();\n            index.Clear();\n        }\n\n        public void Promote(T value)\n        {\n            LinkedListNode<T> node;\n            if (index.TryGetValue(value, out node))\n            {\n                data.Remove(node);\n                data.AddLast(node);\n            }\n        }\n    }\n\n    /// <summary>\n    /// Least recently used cache of objects.\n    /// </summary>\n    /// <typeparam name=\"TKey\">The type of the key.</typeparam>\n    /// <typeparam name=\"TValue\">The type of the value.</typeparam>\n    public class LRUCache<TKey, TValue> : IDictionary<TKey, TValue>\n    {\n        #region Fields\n\n        /// <summary>\n        /// \n        /// </summary>\n        private readonly Dictionary<TKey, TValue> data;\n        \n        /// <summary>\n        /// \n        /// </summary>\n        private readonly IndexedLinkedList<TKey> lruList = new IndexedLinkedList<TKey>();\n       \n        /// <summary>\n        /// \n        /// </summary>\n        private readonly ICollection<KeyValuePair<TKey, TValue>> dataAsCollection;\n        \n        /// <summary>\n        /// \n        /// </summary>\n        private readonly int capacity;\n\n        #endregion\n\n        #region Properties\n\n        /// <summary>\n        /// Gets the keys.\n        /// </summary>\n        public ICollection<TKey> Keys\n        {\n            get\n            {\n                return data.Keys;\n            }\n        }\n\n        /// <summary>\n        /// Gets the values.\n        /// </summary>\n        public ICollection<TValue> Values\n        {\n            get { return data.Values; }\n        }\n\n        /// <summary>\n        /// Gets the count.\n        /// </summary>\n        public int Count\n        {\n            get { return data.Count; }\n        }\n\n        /// <summary>\n        /// Gets a value indicating whether this instance is read only.\n        /// </summary>\n        /// <value>\n        /// \t<c>true</c> if this instance is read only; otherwise, <c>false</c>.\n        /// </value>\n        public bool IsReadOnly\n        {\n            get { return false; }\n        }\n\n        #endregion\n\n        #region Methods\n\n        /// <summary>\n        /// Initializes a new instance of the <see cref=\"LRUCache&lt;TKey, TValue&gt;\"/> class.\n        /// </summary>\n        /// <param name=\"capacity\">The capacity.</param>\n        public LRUCache(int capacity)\n        {\n            if (capacity <= 0)\n            {\n                throw new ArgumentException(\"capacity should always be bigger than 0\");\n            }\n\n            this.data = new Dictionary<TKey, TValue>(capacity);\n            this.dataAsCollection = data;\n            this.capacity = capacity;\n        }\n\n        /// <summary>\n        /// Adds the specified key.\n        /// </summary>\n        /// <param name=\"key\">The key.</param>\n        /// <param name=\"value\">The value.</param>\n        public void Add(TKey key, TValue value)\n        {\n            if (!ContainsKey(key))\n            {\n                this[key] = value;\n            }\n            else\n            {\n                throw new ArgumentException(\"An attempt was made to insert a duplicate key in the cache.\");\n            }\n        }\n\n        /// <summary>\n        /// Adds the specified item.\n        /// </summary>\n        /// <param name=\"item\">The item.</param>\n        public void Add(KeyValuePair<TKey, TValue> item)\n        {\n            Add(item.Key, item.Value);\n        }\n\n        /// <summary>\n        /// Removes the specified key.\n        /// </summary>\n        /// <param name=\"key\">The key.</param>\n        /// <returns></returns>\n        public bool Remove(TKey key)\n        {\n            bool existed = data.Remove(key);\n            lruList.Remove(key);\n            return existed;\n        }\n\n        /// <summary>\n        /// Removes the specified item.\n        /// </summary>\n        /// <param name=\"item\">The item.</param>\n        /// <returns></returns>\n        public bool Remove(KeyValuePair<TKey, TValue> item)\n        {\n\n            bool removed = dataAsCollection.Remove(item);\n            if (removed)\n            {\n                lruList.Remove(item.Key);\n            }\n            return removed;\n        }\n\n        /// <summary>\n        /// Gets or sets the <see cref=\"TValue\"/> with the specified key.\n        /// </summary>\n        public TValue this[TKey key]\n        {\n            get\n            {\n                var value = data[key];\n                \n                lruList.Promote(key);\n\n                return value;\n            }\n            set\n            {\n                data[key] = value;\n                lruList.Remove(key);\n                lruList.Add(key);\n\n                if (data.Count > capacity)\n                {\n                    data.Remove(lruList.First);\n                    lruList.RemoveFirst();\n                }\n            }\n        }\n\n        /// <summary>\n        /// Tries the get value.\n        /// </summary>\n        /// <param name=\"key\">The key.</param>\n        /// <param name=\"value\">The value.</param>\n        /// <returns></returns>\n        public bool TryGetValue(TKey key, out TValue value)\n        {\n            bool success = data.TryGetValue(key, out value);\n\n            if (success)\n            {\n                lruList.Promote(key); \n            }\n\n            return success;\n        }\n\n        /// <summary>\n        /// Determines whether the specified key contains key.\n        /// </summary>\n        /// <param name=\"key\">The key.</param>\n        /// <returns>\n        ///   <c>true</c> if the specified key contains key; otherwise, <c>false</c>.\n        /// </returns>\n        public bool ContainsKey(TKey key)\n        {\n            return data.ContainsKey(key);\n        }\n\n        /// <summary>\n        /// Determines whether [contains] [the specified item].\n        /// </summary>\n        /// <param name=\"item\">The item.</param>\n        /// <returns>\n        ///   <c>true</c> if [contains] [the specified item]; otherwise, <c>false</c>.\n        /// </returns>\n        public bool Contains(KeyValuePair<TKey, TValue> item)\n        {\n            return dataAsCollection.Contains(item);\n        }\n\n        /// <summary>\n        /// Clears this instance.\n        /// </summary>\n        public void Clear()\n        {\n            data.Clear();\n            lruList.Clear();\n        }\n\n        /// <summary>\n        /// Copies to.\n        /// </summary>\n        /// <param name=\"array\">The array.</param>\n        /// <param name=\"arrayIndex\">Index of the array.</param>\n        public void CopyTo(KeyValuePair<TKey, TValue>[] array, int arrayIndex)\n        {\n            dataAsCollection.CopyTo(array, arrayIndex);\n        }\n\n        /// <summary>\n        /// Gets the enumerator.\n        /// </summary>\n        /// <returns></returns>\n        public IEnumerator<KeyValuePair<TKey, TValue>> GetEnumerator()\n        {\n            return dataAsCollection.GetEnumerator();\n        }\n\n        /// <summary>\n        /// Returns an enumerator that iterates through a collection.\n        /// </summary>\n        /// <returns>\n        /// An <see cref=\"T:System.Collections.IEnumerator\"/> object that can be used to iterate through the collection.\n        /// </returns>\n        System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()\n        {\n            return ((System.Collections.IEnumerable)data).GetEnumerator();\n        }\n\n        #endregion\n    }\n}\n"
  },
  {
    "path": "Sources/Library/Collections/ListReader.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Collections;\nusing System.Runtime;\n\nnamespace KeenSoftwareHouse.Library.Collections\n{\n    public struct ListReader<T>: IEnumerable<T>, IEnumerable\n    {\n        private readonly List<T> m_list;\n\n        public ListReader(List<T> list)\n        {\n            m_list = list;\n        }\n\n        [TargetedPatchingOptOut(\"Performance critical to inline across NGen image boundaries\")]\n        public List<T>.Enumerator GetEnumerator()\n        {\n            return m_list.GetEnumerator();\n        }\n\n        [TargetedPatchingOptOut(\"Performance critical to inline across NGen image boundaries\")]\n        IEnumerator IEnumerable.GetEnumerator()\n        {\n            return GetEnumerator();\n        }\n\n        [TargetedPatchingOptOut(\"Performance critical to inline across NGen image boundaries\")]\n        IEnumerator<T> IEnumerable<T>.GetEnumerator()\n        {\n            return GetEnumerator();\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/Library/Collections/ObservableCollection.cs",
    "content": "﻿using System.Collections.Specialized;\nusing System.Collections;\nusing System.Collections.Generic;\n\nnamespace KeenSoftwareHouse.Library.Collections\n{\n    /// <summary>\n    /// Observable collection that also fix support to clear all.\n    /// Don't know if ObservableCollection<T> is allocation free.\n    /// </summary>\n    /// <typeparam name=\"T\"></typeparam>\n    public class ObservableCollection<T> : System.Collections.ObjectModel.ObservableCollection<T>\n    {\n        /// <summary>\n        /// Enumerator which uses index access.\n        /// Index access on Collection is O(1) operation\n        /// </summary>\n        public struct Enumerator: IEnumerator<T>\n        {\n            ObservableCollection<T> m_collection;\n            int m_index;\n\n            public Enumerator(ObservableCollection<T> collection)\n            {\n                m_index = -1;\n                this.m_collection = collection;\n            }\n\n            public T Current\n            {\n                get { return m_collection[m_index]; }\n            }\n\n            public void Dispose()\n            {\n            }\n\n            object IEnumerator.Current\n            {\n                get { return Current; }\n            }\n\n            public bool MoveNext()\n            {\n                m_index++;\n                return m_index < m_collection.Count;\n            }\n\n            public void Reset()\n            {\n                m_index = -1;\n            }\n        }\n\n        /// <summary>\n        /// Clears the items.\n        /// </summary>\n        protected override void ClearItems()\n        {\n            var clear = new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Remove, this);\n\n            OnCollectionChanged(clear);\n\n            base.ClearItems();\n        }\n\n        /// <summary>\n        /// Gets allocation free enumerator (returns struct)\n        /// </summary>\n        public ObservableCollection<T>.Enumerator GetEnumerator()\n        {\n            return new Enumerator(this);\n        }\n    }\n}"
  },
  {
    "path": "Sources/Library/Compression/MyCompression.cs",
    "content": "﻿using System;\nusing System.IO;\nusing System.IO.Compression;\n\n//  Static class for compression and decompression of byte arrays. Uses .NET's GZipStream and result are 70-80% of RAR's compression ratios.\n//  After compression, the result contains length of original data (not-compressed) at array's beginning. It's used for decompression.\n\nnamespace MinerWars.AppCode.Game.Utils\n{\n    public static class MyCompression\n    {\n        public static byte[] Compress(byte[] buffer)\n        {\n            using (MemoryStream ms = new MemoryStream())\n            {\n                using (GZipStream zip = new GZipStream(ms, CompressionMode.Compress, true))\n                {\n                    zip.Write(buffer, 0, buffer.Length);\n                    zip.Close();\n                    ms.Position = 0;\n\n                    byte[] compressed = new byte[ms.Length + 4];\n                    ms.Read(compressed, 4, (int) ms.Length);\n                    Buffer.BlockCopy(BitConverter.GetBytes(buffer.Length), 0, compressed, 0, 4);\n\n                    return compressed;\n                }\n            }\n        }\n\n        static byte[] m_buffer = new byte[1024*1024];\n\n        public static void CompressFile(string fileName)\n        {\n            using (MemoryStream ms = new MemoryStream())\n            {\n                FileInfo f = new FileInfo(fileName);\n                Buffer.BlockCopy(BitConverter.GetBytes(f.Length), 0, m_buffer, 0, 4);\n                ms.Write(m_buffer, 0, 4); //writing length because of backward compatibility\n\n                using (GZipStream zip = new GZipStream(ms, CompressionMode.Compress, true))\n                {\n                    using (FileStream fs = File.OpenRead(fileName))\n                    {\n                        int bytesRead = fs.Read(m_buffer, 0, m_buffer.Length);\n                        while (bytesRead > 0)\n                        {\n                            zip.Write(m_buffer, 0, bytesRead);\n                            bytesRead = fs.Read(m_buffer, 0, m_buffer.Length);\n                        }\n                    }\n\n                    zip.Close();\n\n                    ms.Position = 0;\n\n                    using (FileStream fs = File.Create(fileName))\n                    {\n                        int bytesRead = ms.Read(m_buffer, 0, m_buffer.Length);\n                        while (bytesRead > 0)\n                        {\n                            fs.Write(m_buffer, 0, bytesRead);\n                            fs.Flush();\n                            bytesRead = ms.Read(m_buffer, 0, m_buffer.Length);\n                        }\n                    }\n                }\n            }\n        }\n\n        public static byte[] Decompress(byte[] gzBuffer)\n        {\n            using (MemoryStream ms = new MemoryStream())\n            {\n                int msgLength = BitConverter.ToInt32(gzBuffer, 0);\n                ms.Write(gzBuffer, 4, gzBuffer.Length - 4);\n                ms.Position = 0;\n\n                byte[] buffer = new byte[msgLength];\n\n                using (GZipStream zip = new GZipStream(ms, CompressionMode.Decompress))\n                {\n                    zip.Read(buffer, 0, buffer.Length);\n\n                    return buffer;\n                }\n            }\n        }\n\n        public static void DecompressFile(string fileName)\n        {\n            using (MemoryStream ms = new MemoryStream())\n            {\n                using (FileStream fs = File.OpenRead(fileName))\n                {\n                    fs.Read(m_buffer, 0, 4); //reading length because of backward compatibility\n\n                    using (GZipStream zip = new GZipStream(fs, CompressionMode.Decompress))\n                    {\n                        int readBytes = zip.Read(m_buffer, 0, m_buffer.Length);\n                        while (readBytes > 0)\n                        {\n                            ms.Write(m_buffer, 0, readBytes);\n                            readBytes = zip.Read(m_buffer, 0, m_buffer.Length);\n                        }\n                    }\n                }\n\n                ms.Position = 0;\n\n                using (FileStream fs = File.Create(fileName))\n                {\n                    int bytesRead = ms.Read(m_buffer, 0, m_buffer.Length);\n                    while (bytesRead > 0)\n                    {\n                        fs.Write(m_buffer, 0, bytesRead);\n                        fs.Flush();\n                        bytesRead = ms.Read(m_buffer, 0, m_buffer.Length);\n                    }\n                }\n            }        \n        }\n    }\n}\n"
  },
  {
    "path": "Sources/Library/Compression/MyCompressionFileLoad.cs",
    "content": "﻿using System;\nusing System.IO;\n\nnamespace MinerWars.AppCode.Game.Utils\n{\n    public class MyCompressionFileLoad\n    {\n        byte[] m_decompressed;\n        int m_readIndex;\n        string m_fileName;\n\n\n        public MyCompressionFileLoad(string fileName)\n        {\n            using (FileStream fs = File.OpenRead(fileName))\n            {\n                using (BinaryReader br = new BinaryReader(fs))\n                {\n                    //  Read whole file to byte array and then decompress\n                    m_decompressed = MyCompression.Decompress(br.ReadBytes((int)fs.Length));\n\n                    //  Reset reading index\n                    m_readIndex = 0;\n                }\n                fs.Close();\n            }\n        }\n\n        public MyCompressionFileLoad(byte[] compressedVoxelContents)\n        {\n            using (MemoryStream fs = new MemoryStream(compressedVoxelContents))\n            {\n                using (BinaryReader br = new BinaryReader(fs))\n                {\n                    //  Read whole file to byte array and then decompress\n                    m_decompressed = MyCompression.Decompress(br.ReadBytes((int)fs.Length));\n\n                    //  Reset reading index\n                    m_readIndex = 0;\n                }\n                fs.Close();\n            }\n        }\n\n        //  Reads value (int, float, ...) from decompressed buffer\n        public int GetInt32()\n        {\n            int ret = BitConverter.ToInt32(m_decompressed, m_readIndex);\n            m_readIndex += sizeof(Int32);\n            return ret;\n        }\n\n        //  Reads value (int, float, ...) from decompressed buffer\n        public byte GetByte()\n        {\n            byte ret = m_decompressed[m_readIndex];\n            m_readIndex += sizeof(byte);\n            return ret;\n        }\n\n        //  Copy raw bytes\n        public void GetBytes(int bytes, byte[] output)\n        {\n            System.Buffer.BlockCopy(m_decompressed, m_readIndex, output, 0, bytes);\n            m_readIndex += bytes;\n        }\n\n        //  Signalizes if we haven't reached the end of un-compressed file by series of Get***() calls.\n        public bool EndOfFile()\n        {\n            return m_readIndex >= m_decompressed.Length;\n        }\n\n        //  Finally save the file as compressed value\n        public void Save(string fileName)\n        {\n            using (FileStream fs = File.Create(fileName))\n            {\n                using (BinaryWriter bw = new BinaryWriter(fs))\n                {\n                    bw.Write(m_decompressed);\n                }\n            } \n        }\n    }\n}\n"
  },
  {
    "path": "Sources/Library/Compression/MyCompressionFileSave.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\n\nnamespace MinerWars.AppCode.Game.Utils\n{\n    static class MyCompressionConstants\n    {\n        //  This array is used only during loading, so GC will free it after not needed. It's not used during the game-play phase.\n        public const int HELPER_BYTE_ARRAY_SIZE_FOR_COMPRESSION = 128 * 1024 * 1024; //  100 MB\n    }\n\n    public class MyCompressionFileSave\n    {\n        Stream m_notCompressed;\n        string m_tempFileName;\n\n        public MyCompressionFileSave()\n        {\n            //m_notCompressed = new MemoryStream();\n            m_tempFileName = System.IO.Path.GetTempFileName();\n            m_notCompressed = new System.IO.FileStream(m_tempFileName, FileMode.Create);\n        }\n\n        //  Add value to byte array (float, int, string, etc)\n        public void Add(byte[] value)\n        {\n            for (int i = 0; i < value.Length; i++)\n            {\n                m_notCompressed.WriteByte(value[i]);\n            }\n        }\n\n        //  Add value to byte array (float, int, string, etc)\n        public void Add(float value)\n        {\n            Add(BitConverter.GetBytes(value));\n        }\n\n        //  Add value to byte array (float, int, string, etc)\n        public void Add(int value)\n        {\n            Add(BitConverter.GetBytes(value));\n        }\n\n        //  Add value to byte array (float, int, string, etc)\n        public void Add(byte value)\n        {\n            m_notCompressed.WriteByte(value);\n        }\n\n        //  Finally save the file as compressed value\n        public void Save(string fileName)\n        {\n            if (m_notCompressed != null)\n            {\n                m_notCompressed.Flush();\n                m_notCompressed.Close();\n                m_notCompressed = null;\n            }\n\n            if (System.IO.File.Exists(fileName))\n                System.IO.File.Delete(fileName);\n\n            System.IO.File.Move(m_tempFileName, fileName);\n            MyCompression.CompressFile(fileName);\n        }\n\n        //  Finally save the file as compressed value\n        public void Save(out byte[] compressedBytes)\n        {\n            if (m_notCompressed != null)\n            {\n                m_notCompressed.Flush();\n                m_notCompressed.Close();\n                m_notCompressed = null;\n            }\n\n            MyCompression.CompressFile(m_tempFileName);\n\n            using (FileStream fs = File.OpenRead(m_tempFileName))\n            {\n                long length = fs.Length;\n                compressedBytes = new byte[length];\n\n                using (BinaryReader br = new BinaryReader(fs))\n                {\n                    br.Read(compressedBytes, 0, (int)length);\n                }\n            }\n        }\n\n        //  Finally save the file as compressed value\n        public void Save(string fileName, byte[] notCompressed)\n        {\n            //  Compress byte array\n            byte[] compressed = MyCompression.Compress(notCompressed);\n\n            using (FileStream fs = File.Create(fileName))\n            {\n                using (BinaryWriter bw = new BinaryWriter(fs))\n                {\n                    bw.Write(compressed);\n                }\n            }\n        }\n\n        //  Finally save the file as compressed value\n        public static void SaveFile(string fileName)\n        {\n            //  Compress byte array\n            MyCompression.CompressFile(fileName);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/Library/Exceptions/Exceptions.cs",
    "content": "﻿using System;\nusing System.Diagnostics;\n\nnamespace KeenSoftwareHouse.Library.Debugging\n{\n    /// <summary>\n    /// Provides a set of methods that help throwing exceptions. This class cannot be inherited.\n    /// </summary>\n    public static class Exceptions\n    {\n        /// <summary>\n        /// Specifies a condition and throws an exception with the provided message if the condition is true.\n        /// </summary>\n        /// <typeparam name=\"TException\">The exception to throw if the condition is true.</typeparam>\n        /// <param name=\"condition\">The conditional expression to test.</param>\n        [DebuggerStepThrough]\n        public static void ThrowIf<TException>(bool condition) where TException : Exception\n        {\n            if (condition)\n            {\n                throw (Exception)Activator.CreateInstance(typeof(TException));\n            }\n        }\n\n        /// <summary>\n        /// Specifies a condition and throws an exception with the provided message if the condition is true.\n        /// </summary>\n        /// <typeparam name=\"TException\">The exception to throw if the condition is true.</typeparam>\n        /// <param name=\"condition\">The conditional expression to test.</param>\n        /// <param name=\"arg1\">The arg1.</param>\n        [DebuggerStepThrough]\n        public static void ThrowIf<TException>(bool condition, string arg1) where TException : Exception\n        {\n            if (condition)\n            {\n                throw (Exception)Activator.CreateInstance(typeof(TException), arg1);\n            }\n        }\n\n        /// <summary>\n        /// Specifies a condition and throws an exception with the provided message if the condition is true.\n        /// </summary>\n        /// <typeparam name=\"TException\">The exception to throw if the condition is true.</typeparam>\n        /// <param name=\"condition\">The conditional expression to test.</param>\n        /// <param name=\"arg1\">The arg1.</param>\n        /// <param name=\"arg2\">The arg2.</param>\n        [DebuggerStepThrough]\n        public static void ThrowIf<TException>(bool condition, string arg1, string arg2) where TException : Exception\n        {\n            if (condition)\n            {\n                throw (Exception)Activator.CreateInstance(typeof(TException), arg1, arg2 );\n            }\n        }\n\n        /// <summary>\n        /// Specifies a condition and throws an exception with the provided message if the condition is true.\n        /// </summary>\n        /// <typeparam name=\"TException\">The exception to throw if the condition is true.</typeparam>\n        /// <param name=\"condition\">The conditional expression to test.</param>\n        /// <param name=\"args\">Exception arguments.</param>\n        [DebuggerStepThrough]\n        public static void ThrowIf<TException>(bool condition, params object[] args) where TException : Exception\n        {\n            if (condition)\n            {\n                throw (Exception)Activator.CreateInstance(typeof(TException), args); \n            }\n        }\n\n        /// <summary>\n        /// Specifies a conditions and throws an exception with the provided message if any of the conditions is true.\n        /// </summary>\n        /// <typeparam name=\"TException\">The exception to throw if the condition is true.</typeparam>\n        /// <param name=\"conditions\">The conditional expression to test.</param>\n        /// <param name=\"args\">Exception arguments.</param>\n        [DebuggerStepThrough]\n        public static void ThrowAny<TException>(bool[] conditions, params object[] args) where TException : Exception\n        {\n            for (uint i = 0; i < conditions.Length; ++i)\n            {\n                if (conditions[i])\n                {\n                    throw (Exception)Activator.CreateInstance(typeof(TException), args);\n                }\n            }\n        }\n\n        /// <summary>\n        /// Specifies a conditions and throws an exception with the provided message if all conditions are true.\n        /// </summary>\n        /// <typeparam name=\"TException\">The exception to throw if the condition is true.</typeparam>\n        /// <param name=\"conditions\">The conditional expression to test.</param>\n        /// <param name=\"args\">Exception arguments.</param>\n        [DebuggerStepThrough]\n        public static void ThrowAll<TException>(bool[] conditions, params object[] args) where TException : Exception\n        {\n            for (uint i = 0; i < conditions.Length; ++i)\n            {\n                if (!conditions[i])\n                {\n                    return;\n                }\n            }\n\n            throw (Exception)Activator.CreateInstance(typeof(TException), args);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/Library/Extensions/DateTimeExtensions.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Runtime.InteropServices;\n\nnamespace KeenSoftwareHouse.Library.Extensions\n{\n    public static class DateTimeExtensions\n    {\n        public static DateTime Now_GarbageFree(this DateTime dateTime)\n        {\n            return TimeUtil.LocalTime;\n        }\n    }\n\n\n    public static class TimeUtil\n    {\n        [DllImport(\"kernel32.dll\")]\n        static extern void GetLocalTime(out SYSTEMTIME time);\n\n        [StructLayout(LayoutKind.Sequential)]\n        private struct SYSTEMTIME\n        {\n            public ushort Year;\n            public ushort Month;\n            public ushort DayOfWeek;\n            public ushort Day;\n            public ushort Hour;\n            public ushort Minute;\n            public ushort Second;\n            public ushort Milliseconds;\n        }\n\n        public static DateTime LocalTime\n        {\n            get\n            {\n                SYSTEMTIME nativeTime;\n                GetLocalTime(out nativeTime);\n\n                return new DateTime(nativeTime.Year, nativeTime.Month, nativeTime.Day,\n                                    nativeTime.Hour, nativeTime.Minute, nativeTime.Second,\n                                    nativeTime.Milliseconds, DateTimeKind.Local);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/Library/Extensions/DirectoryExtensions.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.IO;\n\nnamespace KeenSoftwareHouse.Library.Extensions\n{\n    public static class DirectoryExtensions\n    {\n        public static void CopyAll(string source, string target)\n        {\n            EnsureDirectoryExists(target);\n\n            foreach (var file in new DirectoryInfo(source).GetFiles())\n            {\n                file.CopyTo(Path.Combine(target, file.Name), true);\n            }\n\n            foreach (DirectoryInfo sourceSubdirectory in new DirectoryInfo(source).GetDirectories())\n            {\n                DirectoryInfo targetSubdirectory = Directory.CreateDirectory(Path.Combine(target, sourceSubdirectory.Name));\n                CopyAll(sourceSubdirectory.FullName, targetSubdirectory.FullName);\n            }\n        }\n\n        public static void EnsureDirectoryExists(string path)\n        {\n            var directory = new DirectoryInfo(path);\n            if (directory.Parent != null)\n            {\n                EnsureDirectoryExists(directory.Parent.FullName);\n            }\n\n            if (!directory.Exists)\n            {\n                directory.Create();\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/Library/Extensions/ListExtensions.cs",
    "content": "﻿using System;\nusing System.Collections;\nusing System.Collections.Generic;\n\nnamespace KeenSoftwareHouse.Library.Extensions\n{\n    public static class ListExtensions\n    {\n        #region IList Methods\n\n        /// <summary>\n        /// Remove element at index by replacing it with last element in list.\n        /// Removing is very fast but it breaks order of items in list!\n        /// </summary>\n        /// <typeparam name=\"T\"></typeparam>\n        /// <param name=\"list\">The list.</param>\n        /// <param name=\"index\">The index.</param>\n        public static void RemoveAtFast<T>(this IList<T> list, int index)\n        {\n            int lastPos = list.Count - 1;\n\n            list[index] = list[lastPos];\n            list.RemoveAt(lastPos);\n        }\n\n        #endregion\n    }\n}"
  },
  {
    "path": "Sources/Library/Extensions/StringBuilderExtFormat.cs",
    "content": "/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// File:\tStringBuilderExtFormat.cs\n// Date:\t11th March 2010\n// Author:\tGavin Pugh\n// Details:\tExtension methods for the 'StringBuilder' standard .NET class, to allow garbage-free concatenation of\n//\t\t\tformatted strings with a variable set of arguments.\n//\n// Copyright (c) Gavin Pugh 2010 - Released under the zlib license: http://www.opensource.org/licenses/zlib-license.php\n/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Diagnostics;\nusing System.Globalization;\n\nnamespace KeenSoftwareHouse.Library.Extensions\n{\n    public static partial class StringBuilderExtensions\n    {\n        public static StringBuilder AppendStringBuilder(this StringBuilder stringBuilder, StringBuilder otherStringBuilder)\n        {\n            for (int i = 0; i < otherStringBuilder.Length; i++)\n            {\n                stringBuilder.Append(otherStringBuilder[i]);\n            }\n            return stringBuilder;\n        }\n\n\t\t//! Concatenate a formatted string with arguments\n\t\tpublic static StringBuilder ConcatFormat<A>( this StringBuilder string_builder, String format_string, A arg1, NumberFormatInfo numberFormat = null )\n            where A : IConvertible\n        {\n            return string_builder.ConcatFormat<A, int, int, int>(format_string, arg1, 0, 0, 0, numberFormat);\n        }\n\n\t\t//! Concatenate a formatted string with arguments\n        public static StringBuilder ConcatFormat<A, B>(this StringBuilder string_builder, String format_string, A arg1, B arg2, NumberFormatInfo numberFormat = null)\n            where A : IConvertible\n            where B : IConvertible\n        {\n            return string_builder.ConcatFormat<A, B, int, int>(format_string, arg1, arg2, 0, 0, numberFormat);\n        }\n\n\t\t//! Concatenate a formatted string with arguments\n        public static StringBuilder ConcatFormat<A, B, C>(this StringBuilder string_builder, String format_string, A arg1, B arg2, C arg3, NumberFormatInfo numberFormat = null)\n            where A : IConvertible\n            where B : IConvertible\n            where C : IConvertible\n        {\n            return string_builder.ConcatFormat<A, B, C, int>(format_string, arg1, arg2, arg3, 0, numberFormat);\n        }\n\n\t\t//! Concatenate a formatted string with arguments\n        public static StringBuilder ConcatFormat<A,B,C,D>( this StringBuilder string_builder, String format_string, A arg1, B arg2, C arg3, D arg4, NumberFormatInfo numberFormat = null)\n            where A : IConvertible\n            where B : IConvertible\n            where C : IConvertible\n            where D : IConvertible\n        {\n\t\t\tint verbatim_range_start = 0;\n\n\t\t\tfor ( int index = 0; index < format_string.Length; index++ )\n            {\n\t\t\t\tif ( format_string[index] == '{' )\n                {\n\t\t\t\t\t// Formatting bit now, so make sure the last block of the string is written out verbatim.\n\t\t\t\t\tif ( verbatim_range_start < index )\n\t\t\t\t\t{\n\t\t\t\t\t\t// Write out unformatted string portion\n\t\t\t\t\t\tstring_builder.Append( format_string, verbatim_range_start, index - verbatim_range_start );\n\t\t\t\t\t}\n\n                    uint base_value = 10;\n                    uint padding = 0;\n                    uint decimal_places = (numberFormat == null ? 5 : (uint)numberFormat.PercentDecimalDigits); // Default decimal places in .NET libs\n\n                    index++;\n                    char format_char = format_string[index];\n                    if ( format_char == '{' )\n                    {\n                        string_builder.Append( '{' );\n                        index++;\n                    }\n                    else\n                    {\n                        index++;\n\n                        if ( format_string[index] == ':' )\n                        {\n                            // Extra formatting. This is a crude first pass proof-of-concept. It's not meant to cover\n                            // comprehensively what the .NET standard library Format() can do.\n                            index++;\n\n                            // Deal with padding\n                            while ( format_string[index] == '0' )\n                            {\n                                index++;\n                                padding++;\n                            }\n                            \n                            if ( format_string[index] == 'X' )\n                            {\n                                index++;\n\n                                // Print in hex\n                                base_value = 16;\n\n                                // Specify amount of padding ( \"{0:X8}\" for example pads hex to eight characters\n                                if ( ( format_string[index] >= '0' ) && ( format_string[index] <= '9' ) )\n                                {\n                                    padding = (uint)( format_string[index] - '0' );\n                                    index++;\n                                }\n                            }\n                            else if ( format_string[index] == '.' )\n                            {\n                                index++;\n\n                                // Specify number of decimal places\n                                decimal_places = 0;\n\n                                while ( format_string[index] == '0' )\n                                {\n                                    index++;\n                                    decimal_places++;\n                                }\n                            }        \n                        }\n                       \n\n                        // Scan through to end bracket\n                        while ( format_string[index] != '}' )\n                        {\n                            index++;\n                        }\n\n                        // Have any extended settings now, so just print out the particular argument they wanted\n                        switch ( format_char )\n                        {\n                            case '0': string_builder.ConcatFormatValue<A>(arg1, padding, base_value, decimal_places, true); break;\n                            case '1': string_builder.ConcatFormatValue<B>(arg2, padding, base_value, decimal_places, true); break;\n                            case '2': string_builder.ConcatFormatValue<C>(arg3, padding, base_value, decimal_places, true); break;\n                            case '3': string_builder.ConcatFormatValue<D>(arg4, padding, base_value, decimal_places, true); break;\n                            default: Debug.Assert(false, \"Invalid parameter index\"); break;\n                        }\n                    }\n\n\t\t\t\t\t// Update the verbatim range, start of a new section now\n\t\t\t\t\tverbatim_range_start = ( index + 1 );\n                }\n\t\t\t}\n\n\t\t\t// Anything verbatim to write out?\n\t\t\tif ( verbatim_range_start < format_string.Length )\n\t\t\t{\n\t\t\t\t// Write out unformatted string portion\n\t\t\t\tstring_builder.Append( format_string, verbatim_range_start, format_string.Length - verbatim_range_start );\n\t\t\t}\n\n            return string_builder;\n        }\n\n\t\t//! The worker method. This does a garbage-free conversion of a generic type, and uses the garbage-free Concat() to add to the stringbuilder\n\t\tprivate static void ConcatFormatValue<T>( this StringBuilder string_builder, T arg, uint padding, uint base_value, uint decimal_places, bool thousandSeparation ) where T : IConvertible\n\t\t{\n\t\t\tswitch ( arg.GetTypeCode() )\n\t\t\t{\n                case System.TypeCode.Boolean:\n                    {\n                        if (arg.ToBoolean(CultureInfo.InvariantCulture))\n                            string_builder.Append(\"true\");\n                        else\n                            string_builder.Append(\"false\");\n                        break;\n                    }\n\n\t\t\t\tcase System.TypeCode.UInt32:\n\t\t\t\t\t{\n                        string_builder.Concat(arg.ToUInt32(System.Globalization.NumberFormatInfo.CurrentInfo), padding, '0', base_value, thousandSeparation);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\tcase System.TypeCode.Int32:\n\t\t\t\t\t{\n                        string_builder.Concat(arg.ToInt32(System.Globalization.NumberFormatInfo.CurrentInfo), padding, '0', base_value, thousandSeparation);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n                case System.TypeCode.Int64:\n                    {\n                        string_builder.Concat(arg.ToInt64(System.Globalization.NumberFormatInfo.CurrentInfo), padding, '0', base_value, thousandSeparation);\n                        break;\n                    }\n\n                case System.TypeCode.UInt64:\n                    {\n                        string_builder.Concat(arg.ToInt32(System.Globalization.NumberFormatInfo.CurrentInfo), padding, '0', base_value, thousandSeparation);\n                        break;\n                    }\n\n\t\t\t\tcase System.TypeCode.Single:\n\t\t\t\t\t{\n\t\t\t\t\t\tstring_builder.Concat( arg.ToSingle( System.Globalization.NumberFormatInfo.CurrentInfo ), decimal_places, padding, '0' );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n                case System.TypeCode.Decimal:\n                    {\n                        string_builder.Concat(arg.ToSingle(System.Globalization.NumberFormatInfo.CurrentInfo), decimal_places, padding, '0');\n                        break;\n                    }\n\n\t\t\t\tcase System.TypeCode.String:\n\t\t\t\t\t{\n\t\t\t\t\t\tstring_builder.Append( Convert.ToString( arg ) );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\tdefault:\n\t\t\t\t\t{\n\t\t\t\t\t\tDebug.Assert( false, \"Unknown parameter type\" );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t}\n\t\t}\n\n    }\n}\n"
  },
  {
    "path": "Sources/Library/Extensions/StringBuilderExtNumeric.cs",
    "content": "/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// File:\tStringBuilderExtNumeric.cs\n// Date:\t9th March 2010\n// Author:\tGavin Pugh\n// Details:\tExtension methods for the 'StringBuilder' standard .NET class, to allow garbage-free concatenation of\n//\t\t\ta selection of simple numeric types.  \n//\n// Copyright (c) Gavin Pugh 2010 - Released under the zlib license: http://www.opensource.org/licenses/zlib-license.php\n/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Diagnostics;\n\nnamespace KeenSoftwareHouse.Library.Extensions\n{\n    using System;\n\n\tpublic static partial class StringBuilderExtensions\n\t{\n\t\t// These digits are here in a static array to support hex with simple, easily-understandable code. \n\t\t// Since A-Z don't sit next to 0-9 in the ascii table.\n\t\tprivate static readonly char[]\tms_digits = new char[] { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };\n\n\t\tprivate static readonly uint\tms_default_decimal_places = 5; //< Matches standard .NET formatting dp's\n\t\tprivate static readonly char\tms_default_pad_char = '0';\n\n\t\t//! Convert a given unsigned integer value to a string and concatenate onto the stringbuilder. Any base value allowed.\n\t\tpublic static StringBuilder Concat( this StringBuilder string_builder, uint uint_val, uint pad_amount, char pad_char, uint base_val, bool thousandSeparation)\n\t\t{\n\t\t\tDebug.Assert( pad_amount >= 0 );\n\t\t\tDebug.Assert( base_val > 0 && base_val <= 16 );\n\n\t\t\t// Calculate length of integer when written out\n\t\t\tuint length = 0;\n\t\t\tuint length_calc = uint_val;\n\n            int thousandsCounter = 0;\n\n            do\n\t\t\t{\n                thousandsCounter++;\n                if (thousandSeparation && thousandsCounter % 4 == 0)\n                {\n                    length++;\n                    continue;\n                }\n\n\t\t\t\tlength_calc /= base_val;\n\t\t\t\tlength++;\n\t\t\t}\n\t\t\twhile ( length_calc > 0 );\n\n\t\t\t// Pad out space for writing.\n\t\t\tstring_builder.Append( pad_char, (int)Math.Max( pad_amount, length ));\n\n\t\t\tint strpos = string_builder.Length;\n\n            thousandsCounter = 0;\n\n\t\t\t// We're writing backwards, one character at a time.\n\t\t\twhile ( length > 0 )\n\t\t\t{\n\t\t\t\tstrpos--;\n                thousandsCounter++;\n\n                if (thousandSeparation && thousandsCounter % 4 == 0)\n                {\n                    length--;\n                    string_builder[strpos] = ' ';\n                    continue;\n                }\n\n\t\t\t\t// Lookup from static char array, to cover hex values too\n\t\t\t\tstring_builder[strpos] = ms_digits[uint_val % base_val];\n\n\t\t\t\tuint_val /= base_val;\n\t\t\t\tlength--;\n\t\t\t}\n\n\t\t\treturn string_builder;\n\t\t}\n\n\t\t//! Convert a given unsigned integer value to a string and concatenate onto the stringbuilder. Assume no padding and base ten.\n\t\tpublic static StringBuilder Concat( this StringBuilder string_builder, uint uint_val )\n\t\t{\n\t\t\tstring_builder.Concat( uint_val, 0, ms_default_pad_char, 10, true );\n\t\t\treturn string_builder;\n\t\t}\n\n\t\t//! Convert a given unsigned integer value to a string and concatenate onto the stringbuilder. Assume base ten.\n\t\tpublic static StringBuilder Concat( this StringBuilder string_builder, uint uint_val, uint pad_amount )\n\t\t{\n\t\t\tstring_builder.Concat( uint_val, pad_amount, ms_default_pad_char, 10, true);\n\t\t\treturn string_builder;\n\t\t}\n\n\t\t//! Convert a given unsigned integer value to a string and concatenate onto the stringbuilder. Assume base ten.\n\t\tpublic static StringBuilder Concat( this StringBuilder string_builder, uint uint_val, uint pad_amount, char pad_char )\n\t\t{\n\t\t\tstring_builder.Concat( uint_val, pad_amount, pad_char, 10, true );\n\t\t\treturn string_builder;\n\t\t}\n\n\t\t//! Convert a given signed integer value to a string and concatenate onto the stringbuilder. Any base value allowed.\n\t\tpublic static StringBuilder Concat( this StringBuilder string_builder, int int_val, uint pad_amount, char pad_char, uint base_val, bool thousandSeparation )\n\t\t{\n\t\t\tDebug.Assert( pad_amount >= 0 );\n\t\t\tDebug.Assert( base_val > 0 && base_val <= 16 );\n\n\t\t\t// Deal with negative numbers\n\t\t\tif (int_val < 0)\n\t\t\t{\n\t\t\t\tstring_builder.Append( '-' );\n\t\t\t\tuint uint_val = uint.MaxValue - ((uint) int_val ) + 1; //< This is to deal with Int32.MinValue\n                string_builder.Concat(uint_val, pad_amount, pad_char, base_val, thousandSeparation);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n                string_builder.Concat((uint)int_val, pad_amount, pad_char, base_val, thousandSeparation);\n\t\t\t}\n\n\t\t\treturn string_builder;\n\t\t}\n\n        //! Convert a given signed integer value to a string and concatenate onto the stringbuilder. Any base value allowed.\n        public static StringBuilder Concat(this StringBuilder string_builder, long long_val, uint pad_amount, char pad_char, uint base_val, bool thousandSeparation)\n        {\n            Debug.Assert(pad_amount >= 0);\n            Debug.Assert(base_val > 0 && base_val <= 16);\n\n            // Deal with negative numbers\n            if (long_val < 0)\n            {\n                string_builder.Append('-');\n                long uint_val = long.MaxValue - ((long)long_val) + 1; //< This is to deal with Int32.MinValue\n                string_builder.Concat(uint_val, pad_amount, pad_char, base_val, thousandSeparation);\n            }\n            else\n            {\n                string_builder.Concat((uint)long_val, pad_amount, pad_char, base_val, thousandSeparation);\n            }\n\n            return string_builder;\n        }\n\n\t\t//! Convert a given signed integer value to a string and concatenate onto the stringbuilder. Assume no padding and base ten.\n\t\tpublic static StringBuilder Concat( this StringBuilder string_builder, int int_val )\n\t\t{\n\t\t\tstring_builder.Concat( int_val, 0, ms_default_pad_char, 10, true );\n\t\t\treturn string_builder;\n\t\t}\n\n\t\t//! Convert a given signed integer value to a string and concatenate onto the stringbuilder. Assume base ten.\n\t\tpublic static StringBuilder Concat( this StringBuilder string_builder, int int_val, uint pad_amount )\n\t\t{\n\t\t\tstring_builder.Concat( int_val, pad_amount, ms_default_pad_char, 10, true );\n\t\t\treturn string_builder;\n\t\t}\n\n\t\t//! Convert a given signed integer value to a string and concatenate onto the stringbuilder. Assume base ten.\n\t\tpublic static StringBuilder Concat( this StringBuilder string_builder, int int_val, uint pad_amount, char pad_char )\n\t\t{\n\t\t\tstring_builder.Concat( int_val, pad_amount, pad_char, 10, true );\n\t\t\treturn string_builder;\n\t\t}\n\n\t\t//! Convert a given float value to a string and concatenate onto the stringbuilder\n\t\tpublic static StringBuilder Concat( this StringBuilder string_builder, float float_val, uint decimal_places, uint pad_amount, char pad_char )\n\t\t{\n\t\t\tDebug.Assert( pad_amount >= 0 );\n\n\t\t\tif ( decimal_places == 0 )\n\t\t\t{\n\t\t\t\t// No decimal places, just round up and print it as an int\n\n\t\t\t\t// Agh, Math.Floor() just works on doubles/decimals. Don't want to cast! Let's do this the old-fashioned way.\n\t\t\t\tint int_val;\n\t\t\t\tif ( float_val >= 0.0f )\n\t\t\t\t{\n\t\t\t\t\t// Round up\n\t\t\t\t\tint_val = (int)( float_val + 0.5f );\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t// Round down for negative numbers\n\t\t\t\t\tint_val = (int)( float_val - 0.5f );\n\t\t\t\t}\n\n\t\t\t\tstring_builder.Concat( int_val, pad_amount, pad_char, 10, false );\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tint int_part = (int)float_val;\n\n\t\t\t\t// First part is easy, just cast to an integer\n\t\t\t\tstring_builder.Concat( int_part, pad_amount, pad_char, 10, false );\n\n\t\t\t\t// Decimal point\n\t\t\t\tstring_builder.Append( '.' );\n\n\t\t\t\t// Work out remainder we need to print after the d.p.\n\t\t\t\tfloat remainder = Math.Abs( float_val - int_part );\n                uint tmp = decimal_places;\n\n\t\t\t\t// Multiply up to become an int that we can print\n\t\t\t\tdo\n\t\t\t\t{\n\t\t\t\t\tremainder *= 10;\n\t\t\t\t\ttmp--;\n\t\t\t\t}\n\t\t\t\twhile ( tmp > 0 );\n\n\t\t\t\t// Round up. It's guaranteed to be a positive number, so no extra work required here.\n\t\t\t\tremainder += 0.5f;\n\n\t\t\t\t// All done, print that as an int!\n                string_builder.Concat((uint)remainder, decimal_places, '0', 10, false);\n\t\t\t}\n\t\t\treturn string_builder;\n\t\t}\n\t\t\n\t\t//! Convert a given float value to a string and concatenate onto the stringbuilder. Assumes five decimal places, and no padding.\n\t\tpublic static StringBuilder Concat(this StringBuilder string_builder, float float_val)\n\t\t{\n\t\t\tstring_builder.Concat(float_val, ms_default_decimal_places, 0, ms_default_pad_char);\n\t\t\treturn string_builder;\n\t\t}\n\n\t\t//! Convert a given float value to a string and concatenate onto the stringbuilder. Assumes no padding.\n\t\tpublic static StringBuilder Concat( this StringBuilder string_builder, float float_val, uint decimal_places )\n\t\t{\n\t\t\tstring_builder.Concat (float_val, decimal_places, 0, ms_default_pad_char );\n\t\t\treturn string_builder;\n\t\t}\n\n\t\t//! Convert a given float value to a string and concatenate onto the stringbuilder.\n\t\tpublic static StringBuilder Concat(this StringBuilder string_builder, float float_val, uint decimal_places, uint pad_amount)\n\t\t{\n\t\t\tstring_builder.Concat(float_val, decimal_places, pad_amount, ms_default_pad_char);\n\t\t\treturn string_builder;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Sources/Library/Extensions/StringBuilderExtensions.cs",
    "content": "﻿namespace KeenSoftwareHouse.Library.Extensions\n{\n    using System;\n    using System.Text;\n    using Debugging;\n    using System.Globalization;\n    using System.Collections.Generic;\n\n    /// <summary>\n    /// Usefull StringBuilder extensions\n    /// </summary>\n    public static partial class StringBuilderExtensions\n    {\n        static private NumberFormatInfo m_numberFormatInfoHelper;\n\n        static StringBuilderExtensions()\n        {\n            if (m_numberFormatInfoHelper == null)\n            {\n                m_numberFormatInfoHelper = new NumberFormatInfo();\n                m_numberFormatInfoHelper.NumberDecimalSeparator = \".\";\n                m_numberFormatInfoHelper.NumberGroupSeparator = \" \";\n            }\n        }\n\n        /// <summary>\n        /// Removes the specified number of characters from the end.\n        /// </summary>\n        /// <param name=\"sb\">The sb.</param>\n        /// <param name=\"length\">The length.</param>\n        public static void TrimEnd(this StringBuilder sb, int length)\n        {\n            Exceptions.ThrowIf<ArgumentException>(length > sb.Length, \"String builder contains less characters then requested number!\");\n\n            sb.Length -= length;\n        }\n\n        public static StringBuilder GetFormatedLong(this StringBuilder sb, string before, long value, string after = \"\")\n        {\n            sb.Clear();\n            sb.ConcatFormat(\"{0}{1: #,0}{2}\", before, value, after);\n            return sb;\n        }\n\n        public static StringBuilder GetFormatedInt(this StringBuilder sb, string before, int value, string after = \"\")\n        {\n            sb.Clear();\n            sb.ConcatFormat(\"{0}{1: #,0}{2}\", before, value, after);\n            return sb;\n        }\n\n        public static StringBuilder GetFormatedFloat(this StringBuilder sb, string before, float value, string after = \"\")\n        {\n            sb.Clear();\n            sb.ConcatFormat(\"{0}{1: #,0}{2}\", before, value, after);\n            return sb;\n        }\n\n        public static StringBuilder GetFormatedBool(this StringBuilder sb, string before, bool value, string after = \"\")\n        {\n            sb.Clear();\n            sb.ConcatFormat(\"{0}{1}{2}\", before, value, after);\n            return sb;\n        }\n\n        public static StringBuilder GetFormatedDateTimeOffset(this StringBuilder sb, string before, DateTimeOffset value, string after = \"\")\n        {\n            return GetFormatedDateTimeOffset(sb, before, value.DateTime, after);\n        }\n\n        public static StringBuilder GetFormatedDateTimeOffset(this StringBuilder sb, string before, DateTime value, string after = \"\")\n        {\n            sb.Clear();\n            //sb.ConcatFormat(\"{0}{1: yyyy-MM-dd HH:mm:ss.fff}{2}\", before, value, after);\n            sb.Append(before);\n            sb.Concat(value.Year, 4, '0', 10, false);\n            sb.Append(\"-\");\n            sb.Concat(value.Month, 2);\n            sb.Append(\"-\");\n            sb.Concat(value.Day, 2);\n            sb.Append(\" \");\n            sb.Concat(value.Hour, 2);\n            sb.Append(\":\");\n            sb.Concat(value.Minute, 2);\n            sb.Append(\":\");\n            sb.Concat(value.Second, 2);\n            sb.Append(\".\");\n            sb.Concat(value.Millisecond, 3);\n            sb.Append(after);\n            return sb;\n        }\n\n\n        public static StringBuilder GetFormatedDateTime(this StringBuilder sb, DateTime value)\n        {\n            sb.Clear();\n            //sb.ConcatFormat(\"{0}{1: yyyy-MM-dd HH:mm:ss.fff}{2}\", before, value, after);\n            sb.Concat(value.Day, 2);\n            sb.Append(\"/\");\n            sb.Concat(value.Month, 2);\n            sb.Append(\"/\");\n            sb.Concat(value.Year, 0, '0', 10, false);\n            sb.Append(\" \");\n            sb.Concat(value.Hour, 2);\n            sb.Append(\":\");\n            sb.Concat(value.Minute, 2);\n            sb.Append(\":\");\n            sb.Concat(value.Second, 2);\n            return sb;\n        }\n\n\n        public static StringBuilder GetFormatedTimeSpan(this StringBuilder sb, string before, TimeSpan value, string after = \"\")\n        {\n            sb.Clear();\n            //sb.ConcatFormat(\"{0}{1}{2}\", before, value, after);\n            sb.Clear();\n            //sb.ConcatFormat(\"{0}{1: yyyy-MM-dd HH:mm:ss.fff}{2}\", before, value, after);\n            sb.Append(before);\n            sb.Concat(value.Hours, 2);\n            sb.Append(\":\");\n            sb.Concat(value.Minutes, 2);\n            sb.Append(\":\");\n            sb.Concat(value.Seconds, 2);\n            sb.Append(\".\");\n            sb.Concat(value.Milliseconds, 3);\n            sb.Append(after);\n            return sb;\n        }\n\n        public static StringBuilder GetStrings(this StringBuilder sb, StringBuilder second)\n        {\n            //sb.Clear();\n            //Unfortunatelly there is no other method without garbage\n            for (int i = 0; i < second.Length; i++)\n            {\n                sb.Append(second[i]);\n            }\n            return sb;\n        }\n\n        public static StringBuilder GetStrings(this StringBuilder sb, string before, string value = \"\", string after = \"\")\n        {\n            sb.Clear();\n            sb.ConcatFormat(\"{0}{1}{2}\", before, value, after);\n            return sb;\n        }\n\n        public static StringBuilder GetFormatedDecimal(this StringBuilder sb, string before, decimal value, int decimalDigits, string after = \"\")\n        {\n            sb.Clear();\n            m_numberFormatInfoHelper.NumberDecimalDigits = decimalDigits;\n            sb.ConcatFormat(\"{0}{1 }{2}\", before, value, after, m_numberFormatInfoHelper);\n            return sb;\n        }\n\n        public static StringBuilder AppendInt32(this StringBuilder sb, int number)\n        {\n            sb.ConcatFormat(\"{0}\", number);\n            return sb;\n        }\n\n        public static StringBuilder AppendDecimal(this StringBuilder sb, float number, int decimals)\n        {\n            m_numberFormatInfoHelper.NumberDecimalDigits = decimals;\n            sb.ConcatFormat(\"{0}\", number, m_numberFormatInfoHelper);\n            return sb;\n        }\n\n        public static List<StringBuilder> Split(this StringBuilder sb, char separator)\n        {\n            List<StringBuilder> result = new List<StringBuilder>();\n\n            StringBuilder current = new StringBuilder();\n            for (int i = 0; i < sb.Length; i++)\n            {\n                if (sb[i] == separator)\n                {\n                    result.Add(current);\n                    current = new StringBuilder();\n                }\n                else\n                    current.Append(sb[i]);\n            }\n\n            if (current.Length > 0)\n                result.Add(current);\n\n            return result;\n        }\n\n        /// <summary>\n        /// Removes whitespace from the end.\n        /// </summary>\n        public static void TrimTrailingWhitespace(this StringBuilder sb)\n        {\n            int i = sb.Length;\n            while (i > 0 && sb[i - 1] == ' ' || sb[i - 1] == '\\r' || sb[i - 1] == '\\n')\n                i--;\n            sb.Length = i;\n        }\n    }\n}"
  },
  {
    "path": "Sources/Library/Extensions/TypeExtensions.cs",
    "content": "﻿using System;\nusing System.Diagnostics;\nusing System.Linq;\nusing System.Linq.Expressions;\nusing System.Reflection;\nusing KeenSoftwareHouse.Library.Debugging;\n\nnamespace KeenSoftwareHouse.Library.Extensions\n{\n    /// <summary>\n    /// Helper for runtime member info.\n    /// </summary>\n    /// <typeparam name=\"T\"></typeparam>\n    public static class MemberHelper<T>\n    {\n        /// <summary>\n        ///  Gets the memberinfo of field/property on instance class.\n        /// </summary>\n        /// <typeparam name=\"TValue\">The type of the value.</typeparam>\n        /// <param name=\"selector\">The selector.</param>\n        /// <returns></returns>\n        public static MemberInfo GetMember<TValue>(Expression<Func<T,TValue>> selector)\n        {\n            Exceptions.ThrowIf<ArgumentNullException>(selector == null, \"selector\");\n\n            var me = selector.Body as MemberExpression;\n\n            Exceptions.ThrowIf<ArgumentNullException>(me == null, \"Selector must be a member access expression\", \"selector\");\n\n            return me.Member;\n        }\n    }\n\n    /// <summary>\n    /// Helper for runtime member info.\n    /// </summary>\n    public static class MemberHelper\n    {\n        /// <summary>\n        /// Gets the memberinfo of field/property on static class.\n        /// </summary>\n        /// <typeparam name=\"TValue\">The type of the value.</typeparam>\n        /// <param name=\"selector\">The selector.</param>\n        /// <returns></returns>\n        public static MemberInfo GetMember<TValue>(Expression<Func<TValue>> selector)\n        {\n            Exceptions.ThrowIf<ArgumentNullException>(selector == null, \"selector\");\n\n            var me = selector.Body as MemberExpression;\n\n            Exceptions.ThrowIf<ArgumentNullException>(me == null, \"Selector must be a member access expression\", \"selector\");\n\n            return me.Member;\n        }\n    }\n}"
  },
  {
    "path": "Sources/Library/IO/ResetableMemoryStream.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.IO;\n\nnamespace KeenSoftwareHouse.Library.Memory\n{\n    public class Xa\n    {\n    }\n}\n\nnamespace KeenSoftwareHouse.Library.IO\n{\n    public class ResetableMemoryStream : Stream\n    {\n        private byte[] m_baseArray;\n        private int m_position;\n\n        public ResetableMemoryStream()\n        {\n        }\n\n        public ResetableMemoryStream(byte[] baseArray)\n        {\n            m_baseArray = baseArray;\n        }\n\n        public void Reset(byte[] newBaseArray)\n        {\n            m_baseArray = newBaseArray;\n            m_position = 0;\n        }\n\n        public override bool CanRead\n        {\n            get { return true; }\n        }\n\n        public override bool CanSeek\n        {\n            get { return true; }\n        }\n\n        public override bool CanWrite\n        {\n            get { return true; }\n        }\n\n        public override void Flush()\n        {\n        }\n\n        public override long Length\n        {\n            get { return m_baseArray.Length; }\n        }\n\n        public override long Position\n        {\n            get\n            {\n                return m_position;\n            }\n            set\n            {\n                m_position = (int)value;\n            }\n        }\n\n        /// <summary>\n        /// Original C# implementation\n        /// </summary>\n        public override int Read(byte[] buffer, int offset, int count)\n        {\n            int byteCount = (int)(m_baseArray.Length - m_position);\n            if (byteCount > count)\n            {\n                byteCount = count;\n            }\n            if (byteCount <= 0)\n            {\n                return 0;\n            }\n            if (byteCount <= 8)\n            {\n                int num2 = byteCount;\n                while (--num2 >= 0)\n                {\n                    buffer[offset + num2] = m_baseArray[m_position + num2];\n                }\n            }\n            else\n            {\n                Buffer.BlockCopy(m_baseArray, m_position, buffer, offset, byteCount);\n            }\n            m_position += byteCount;\n            return byteCount;\n\n        }\n\n        public override long Seek(long offset, SeekOrigin origin)\n        {\n            switch (origin)\n            {\n                case SeekOrigin.Begin:\n                    {\n                        m_position = (int)offset;\n                        break;\n                    }\n                case SeekOrigin.Current:\n                    {\n                        m_position += (int)offset;\n                        break;\n                    }\n                case SeekOrigin.End:\n                    {\n                        m_position = m_baseArray.Length + (int)offset;\n                        break;\n                    }\n                default:\n                    throw new ArgumentException(\"Invalid seek origin\");\n            }\n            return m_position;\n        }\n\n        public override void SetLength(long value)\n        {\n            throw new InvalidOperationException(\"Operation not supported\");\n        }\n\n        /// <summary>\n        /// Original C# implementation\n        /// </summary>\n        public override void Write(byte[] buffer, int offset, int count)\n        {\n            if (m_baseArray.Length < (m_position + count))\n            {\n                throw new EndOfStreamException();\n            }\n\n            int num = m_position + count;\n            if ((count <= 8) && (buffer != m_baseArray))\n            {\n                int num2 = count;\n                while (--num2 >= 0)\n                {\n                    m_baseArray[m_position + num2] = buffer[offset + num2];\n                }\n            }\n            else\n            {\n                Buffer.BlockCopy(buffer, offset, m_baseArray, m_position, count);\n            }\n            m_position = num;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/Library/Library.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"4.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProductVersion>8.0.30703</ProductVersion>\n    <SchemaVersion>2.0</SchemaVersion>\n    <ProjectGuid>{26FE022E-42AB-40BE-BA9D-97CBE34E7D99}</ProjectGuid>\n    <OutputType>Library</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>KeenSoftwareHouse.Library</RootNamespace>\n    <AssemblyName>Library</AssemblyName>\n    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>\n    <FileAlignment>512</FileAlignment>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x86'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x86\\Debug\\</OutputPath>\n    <DefineConstants>TRACE;DEBUG;FEAT_COMPILER;FEAT_SERVICEMODEL;PLAT_BINARYFORMATTER;PLAT_XMLSERIALIZER;</DefineConstants>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <ErrorReport>prompt</ErrorReport>\n    <CodeAnalysisIgnoreBuiltInRuleSets>true</CodeAnalysisIgnoreBuiltInRuleSets>\n    <CodeAnalysisIgnoreBuiltInRules>true</CodeAnalysisIgnoreBuiltInRules>\n    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x86'\">\n    <OutputPath>bin\\x86\\Release\\</OutputPath>\n    <DefineConstants>TRACE;FEAT_COMPILER;FEAT_SERVICEMODEL;PLAT_BINARYFORMATTER;PLAT_XMLSERIALIZER;</DefineConstants>\n    <Optimize>true</Optimize>\n    <DebugType>none</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <ErrorReport>prompt</ErrorReport>\n    <CodeAnalysisIgnoreBuiltInRules>true</CodeAnalysisIgnoreBuiltInRules>\n    <CodeAnalysisFailOnMissingRules>false</CodeAnalysisFailOnMissingRules>\n    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>\n  </PropertyGroup>\n  <ItemGroup>\n    <Reference Include=\"System\" />\n    <Reference Include=\"System.configuration\" />\n    <Reference Include=\"System.Data\" />\n    <Reference Include=\"System.Runtime.Serialization\" />\n    <Reference Include=\"System.ServiceModel\" />\n    <Reference Include=\"System.Xml\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Compile Include=\"Cloning\\ClonableExtensions.cs\" />\n    <Compile Include=\"Cloning\\MemberwiseClone.cs\" />\n    <Compile Include=\"Collections\\ListReader.cs\" />\n    <Compile Include=\"Collections\\LRUCache.cs\" />\n    <Compile Include=\"Compression\\MyCompression.cs\" />\n    <Compile Include=\"Compression\\MyCompressionFileLoad.cs\" />\n    <Compile Include=\"Compression\\MyCompressionFileSave.cs\" />\n    <Compile Include=\"Extensions\\DateTimeExtensions.cs\" />\n    <Compile Include=\"Extensions\\DirectoryExtensions.cs\" />\n    <Compile Include=\"Extensions\\StringBuilderExtFormat.cs\" />\n    <Compile Include=\"Extensions\\StringBuilderExtNumeric.cs\" />\n    <Compile Include=\"IO\\ResetableMemoryStream.cs\" />\n    <Compile Include=\"Cloning\\ObjectCloner.cs\" />\n    <Compile Include=\"Cloning\\ReferenceComparer.cs\" />\n    <Compile Include=\"Cloning\\SerializerClone.cs\" />\n    <Compile Include=\"Collections\\Comparers\\EnumComparer.cs\" />\n    <Compile Include=\"Collections\\ObservableCollection.cs\" />\n    <Compile Include=\"Exceptions\\Exceptions.cs\" />\n    <Compile Include=\"Extensions\\ListExtensions.cs\" />\n    <Compile Include=\"Extensions\\StringBuilderExtensions.cs\" />\n    <Compile Include=\"Extensions\\TypeExtensions.cs\" />\n    <Compile Include=\"Memory\\Pool.cs\" />\n    <Compile Include=\"Memory\\PoolClass.cs\" />\n    <Compile Include=\"Memory\\PoolList.cs\" />\n    <Compile Include=\"Parallelization\\FastEvent.cs\" />\n    <Compile Include=\"Parallelization\\FastResourceLock.cs\" />\n    <Compile Include=\"Parallelization\\FastResourceLockExtensions.cs\" />\n    <Compile Include=\"Parallelization\\IResourceLock.cs\" />\n    <Compile Include=\"Parallelization\\NativeMethods.cs\" />\n    <Compile Include=\"Profiler\\MyProfiler.cs\" />\n    <Compile Include=\"Profiler\\MyProfilerBlock.cs\" />\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n    <Compile Include=\"Reflection\\ConstructorHelper.cs\" />\n    <Compile Include=\"Security\\Crc32.cs\" />\n    <Compile Include=\"Trace\\ITrace.cs\" />\n    <Compile Include=\"Trace\\MyTrace.cs\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Folder Include=\"Debugging\\\" />\n    <Folder Include=\"Parallelization\\Distribution\\\" />\n  </ItemGroup>\n  <Import Project=\"$(MSBuildToolsPath)\\Microsoft.CSharp.targets\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "Sources/Library/Memory/Pool.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Reflection;\nusing System.Threading;\nusing System.Linq;\nusing System.Linq.Expressions;\n\nnamespace KeenSoftwareHouse.Library.Memory\n{    \n    using Debugging;\n    using Reflection;\n\n    /// <summary>\n    /// Loading mode.\n    /// </summary>\n    public enum LoadingMode\n    {\n        /// <summary>\n        /// Precreate pooled object.\n        /// </summary>\n        Eager, \n        /// <summary>\n        /// Object will be created on-demand.\n        /// </summary>\n        Lazy, \n        /// <summary>\n        /// \n        /// </summary>\n        LazyExpanding\n    };\n\n    /// <summary>\n    /// Access mode of pool.\n    /// </summary>\n    public enum AccessMode\n    {\n        /// <summary>\n        /// FIFO pool.\n        /// </summary>\n        FIFO, \n        /// <summary>\n        /// LIFO pool.\n        /// </summary>\n        LIFO, \n        /// <summary>\n        /// Circular pool.\n        /// </summary>\n        Circular\n    };\n\n    /// <summary>\n    /// Represent a pool of objects.\n    /// Support Acquire/Release and also New/Delete pattern.\n    /// </summary>\n    /// <typeparam name=\"T\">Type of pooled objects.</typeparam>\n    [DebuggerStepThrough]\n    public class Pool<T> : IDisposable\n    {\n        #region Constatns\n\n        /// <summary>\n        /// Define maximum number of constructor parameters that are supported by this pool.\n        /// </summary>\n        public const int MaximumConstructorParams = 5;\n\n        #endregion\n\n        #region Fields\n\n        /// <summary>\n        /// Factory function.\n        /// </summary>\n        private readonly Func<Pool<T>, T> factory;\n\n        /// <summary>\n        /// Internal iterm store.\n        /// </summary>\n        private readonly IItemStore itemStore;\n\n        /// <summary>\n        /// Pool size.\n        /// </summary>\n        private readonly int size;\n\n        /// <summary>\n        /// Actual count of created objects.\n        /// </summary>\n        private int count;\n\n        /// <summary>\n        /// Sync primitive.\n        /// </summary>\n        private readonly Semaphore sync;\n\n        /// <summary>\n        /// Contructors used for objects reinicialization.\n        /// </summary>\n        private static Delegate[] Constructors;\n\n        /// <summary>\n        /// Destructor that is used for zero object references.\n        /// </summary>\n        private static Action<T> Destructor;\n\n        #endregion\n\n        #region Properties\n\n        /// <summary>\n        /// Loading mode.\n        /// </summary>\n        public LoadingMode LoadingMode \n        { \n            get; \n            private set; \n        }\n\n        /// <summary>\n        /// Returns true if pool was already disposed.\n        /// </summary>\n        public bool IsDisposed \n        { \n            get; \n            private set; \n        }\n\n        #endregion\n\n        #region Methods\n        \n        /// <summary>\n        /// Initializes a new instance of the Pool class.\n        /// </summary>\n        /// <param name=\"size\">Maximum pool size.</param>\n        /// <param name=\"factory\">Factory function(creator) for pooled objects.</param>\n        /// <param name=\"loadingMode\">Loading mode.</param>\n        /// <param name=\"accessMode\">Acess mode</param>\n        public Pool(int size, Func<Pool<T>, T> factory = null, LoadingMode loadingMode = LoadingMode.Lazy, AccessMode accessMode = AccessMode.LIFO)\n        {\n            Exceptions.ThrowIf<ArgumentOutOfRangeException>(size == 0, \"Argument 'size' must be greater than zero.\");\n\n            this.size = size;\n            this.factory = factory;\n            this.sync = new Semaphore(size, size);\n            this.LoadingMode = loadingMode;\n\n            // Create pool\n            switch (accessMode)\n            {\n                case AccessMode.FIFO:\n                    {\n                        this.itemStore = new QueueStore(size);\n                        break;\n                    }\n                case AccessMode.LIFO:\n                    {\n                        this.itemStore = new StackStore(size);\n                        break;\n                    }\n                case AccessMode.Circular:\n                    {\n                        this.itemStore = new CircularStore(size);\n                        break;\n                    }\n            }\n\n            // Default factory\n            if (this.factory == null)\n            {\n                this.factory = p => (T)Activator.CreateInstance(typeof(T), true);\n            }\n\n            // Preaload\n            if (loadingMode == LoadingMode.Eager)\n            {\n                PreloadItems();\n            }\n        }\n\n        /// <summary>\n        /// Acquire object from pool but does not initialize it.\n        /// </summary>\n        /// <returns>New object.</returns>\n        public T Acquire()\n        {\n            sync.WaitOne();\n            switch (LoadingMode)\n            {\n                case LoadingMode.Eager:\n                    {\n                        return AcquireEager();\n                    }\n                case LoadingMode.Lazy:\n                    {\n                        return AcquireLazy();\n                    }\n                default:\n                    {\n                        Debug.Assert(LoadingMode == LoadingMode.LazyExpanding,\n                                     \"Unknown LoadingMode encountered in Acquire method.\");\n                        return AcquireLazyExpanding();\n                    }\n            }\n        }\n\n        /// <summary>\n        /// Release object back to pool.\n        /// </summary>\n        /// <param name=\"item\">Object to release.</param>\n        public void Release(T item)\n        {\n            lock (itemStore)\n            {\n                itemStore.Store(item);\n            }\n            sync.Release();\n        }\n\n        /// <summary>\n        /// Acquires object from pool and call constructor.\n        /// </summary>\n        /// <returns></returns>\n        public T New()\n        {\n            T obj = Acquire();\n\n            var constructor = (Action<T>)GetConstructor(0, typeof(Action<T>));\n\n            constructor(obj);\n\n            return obj;\n        }\n\n        /// <summary>\n        /// Acquires object from pool and call constructor.\n        /// </summary>\n        /// <typeparam name=\"T0\">The type of the 0.</typeparam>\n        /// <param name=\"p0\">The p0.</param>\n        /// <returns>New object.</returns>\n        public T New<T0>(T0 p0)\n        {\n            T obj = Acquire();\n\n            var constructor = (Action<T, T0>)GetConstructor(1, typeof(Action<T, T0>));\n\n            constructor(obj, p0);\n\n            return obj;\n        }\n\n        /// <summary>\n        /// Acquires object from pool and call constructor.\n        /// </summary>\n        /// <typeparam name=\"T0\">The type of the 0.</typeparam>\n        /// <typeparam name=\"T1\">The type of the 1.</typeparam>\n        /// <param name=\"p0\">The p0.</param>\n        /// <param name=\"p1\">The p1.</param>\n        /// <returns>New object.</returns>\n        public T New<T0, T1>(T0 p0, T1 p1)\n        {\n            T obj = Acquire();\n\n            var constructor = (Action<T, T0, T1>)GetConstructor(2, typeof(Action<T, T0, T1>));\n\n            constructor(obj, p0, p1);\n\n            return obj;\n        }\n\n        /// <summary>\n        /// Acquires object from pool and call constructor.\n        /// </summary>\n        /// <typeparam name=\"T0\">The type of the 0.</typeparam>\n        /// <typeparam name=\"T1\">The type of the 1.</typeparam>\n        /// <typeparam name=\"T2\">The type of the 2.</typeparam>\n        /// <param name=\"p0\">The p0.</param>\n        /// <param name=\"p1\">The p1.</param>\n        /// <param name=\"p2\">The p2.</param>\n        /// <returns>New object.</returns>\n        public T New<T0, T1, T2>(T0 p0, T1 p1, T2 p2)\n        {\n            T obj = Acquire();\n\n            var constructor = (Action<T, T0, T1, T2>)GetConstructor(3, typeof(Action<T, T0, T1, T2>));\n\n            constructor(obj, p0, p1, p2);\n\n            return obj;\n        }\n\n        /// <summary>\n        /// Acquires object from pool and call constructor.\n        /// </summary>\n        /// <typeparam name=\"T0\">The type of the 0.</typeparam>\n        /// <typeparam name=\"T1\">The type of the 1.</typeparam>\n        /// <typeparam name=\"T2\">The type of the 2.</typeparam>\n        /// <typeparam name=\"T3\">The type of the 3.</typeparam>\n        /// <param name=\"p0\">The p0.</param>\n        /// <param name=\"p1\">The p1.</param>\n        /// <param name=\"p2\">The p2.</param>\n        /// <param name=\"p3\">The p3.</param>\n        /// <returns>New object.</returns>\n        public T New<T0, T1, T2, T3>(T0 p0, T1 p1, T2 p2, T3 p3)\n        {\n            T obj = Acquire();\n\n            var constructor = (Action<T, T0, T1, T2, T3>)GetConstructor(4, typeof(Action<T, T0, T1, T2, T3>));\n\n            constructor(obj, p0, p1, p2, p3);\n\n            return obj;\n        }\n\n        /// <summary>\n        /// Acquires object from pool and call constructor.\n        /// </summary>\n        /// <typeparam name=\"T0\">The type of the 0.</typeparam>\n        /// <typeparam name=\"T1\">The type of the 1.</typeparam>\n        /// <typeparam name=\"T2\">The type of the 2.</typeparam>\n        /// <typeparam name=\"T3\">The type of the 3.</typeparam>\n        /// <typeparam name=\"T4\">The type of the 4.</typeparam>\n        /// <param name=\"p0\">The p0.</param>\n        /// <param name=\"p1\">The p1.</param>\n        /// <param name=\"p2\">The p2.</param>\n        /// <param name=\"p3\">The p3.</param>\n        /// <param name=\"p4\">The p4.</param>\n        /// <returns>New object.</returns>\n        public T New<T0, T1, T2, T3, T4>(T0 p0, T1 p1, T2 p2, T3 p3, T4 p4)\n        {\n            T obj = Acquire();\n\n            var constructor = (Action<T, T0, T1, T2, T3, T4>)GetConstructor(5, typeof(Action<T, T0, T1, T2, T3, T4>));\n\n            constructor(obj, p0, p1, p2, p3, p4);\n\n            return obj;\n        }\n\n        /// <summary>\n        /// Release object back to pool and allows all data in it to be reclaimed by GC.\n        /// </summary>\n        /// <param name=\"item\">The item.</param>\n        public void Delete(T item)\n        {\n            var destructor = GetDestructor();\n\n            destructor(item);\n\n            Release(item);\n        }\n\n        /// <summary>\n        /// Dispose method.\n        /// </summary>\n        public void Dispose()\n        {\n            if (IsDisposed)\n            {\n                return;\n            }\n\n            IsDisposed = true;\n\n            if (typeof(IDisposable).IsAssignableFrom(typeof(T)))\n            {\n                lock (itemStore)\n                {\n                    while (itemStore.Count > 0)\n                    {\n                        var disposable = (IDisposable)itemStore.Fetch();\n                        disposable.Dispose();\n                    }\n                }\n            }\n\n            sync.Close();\n        } \n        \n        #endregion\n\n        #region Private Methods\n\n        private T AcquireEager()\n        {\n            lock (itemStore)\n            {\n                return itemStore.Fetch();\n            }\n        }\n\n        private T AcquireLazy()\n        {\n            lock (itemStore)\n            {\n                if (itemStore.Count > 0)\n                {\n                    return itemStore.Fetch();\n                }\n            }\n\n            Interlocked.Increment(ref count);\n            return factory(this);\n        }\n\n        private T AcquireLazyExpanding()\n        {\n            bool shouldExpand = false;\n            if (count < size)\n            {\n                int newCount = Interlocked.Increment(ref count);\n                if (newCount <= size)\n                {\n                    shouldExpand = true;\n                }\n                else\n                {\n                    // Another thread took the last spot - use the store instead\n                    Interlocked.Decrement(ref count);\n                }\n            }\n\n            if (shouldExpand)\n            {\n                return factory(this);\n            }\n\n            lock (itemStore)\n            {\n                return itemStore.Fetch();\n            }\n        }\n\n        /// <summary>\n        /// Get or creates in place constructor delegate.\n        /// </summary>\n        /// <param name=\"i\"></param>\n        /// <param name=\"inplaceCtorType\"></param>\n        /// <returns></returns>\n        private static Delegate GetConstructor(int i, Type inplaceCtorType)\n        {\n            Debug.Assert(i < MaximumConstructorParams);\n\n            if (Constructors == null)\n            {\n                Constructors = new Delegate[MaximumConstructorParams];\n            }\n\n            return Constructors[i] ?? (Constructors[i] = ConstructorHelper<T>.CreateInPlaceConstructor(inplaceCtorType));\n        }\n\n        /// <summary>\n        /// Gets or creates zeroing destructor action.\n        /// </summary>\n        /// <returns></returns>\n        private static Action<T> GetDestructor()\n        {\n            if (Destructor == null)\n            {\n                // Param1\n                var objExp = Expression.Parameter(typeof (T), \"obj\");\n\n                // Assignment block\n                var blockExp = Expression.Block(from field in typeof(T).GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic)\n                                            select Expression.Assign(Expression.Field(objExp, field), \n                                                                     Expression.Default(field.FieldType)));\n\n                Destructor = Expression.Lambda<Action<T>>(blockExp, objExp).Compile();\n            }\n\n            return Destructor;\n        }\n\n        private void PreloadItems()\n        {\n            for (int i = 0; i < size; i++)\n            {\n                T item = factory(this);\n                itemStore.Store(item);\n            }\n\n            count = size;\n        }\n\n        #endregion\n\n        #region Nested classes\n\n        /// <summary>\n        /// Item sorage interface.\n        /// </summary>\n        interface IItemStore\n        {\n            T Fetch();\n            void Store(T item);\n            int Count { get; }\n        }\n\n        /// <summary>\n        /// FIFO pool wrapper.\n        /// </summary>\n        [DebuggerStepThrough]\n        class QueueStore : Queue<T>, IItemStore\n        {\n            public QueueStore(int capacity)\n                : base(capacity)\n            {\n            }\n\n            public T Fetch()\n            {\n                return Dequeue();\n            }\n\n            public void Store(T item)\n            {\n                Enqueue(item);\n            }\n        }\n\n        /// <summary>\n        /// LIFO pool wrapper.\n        /// </summary>\n        [DebuggerStepThrough]\n        class StackStore : Stack<T>, IItemStore\n        {\n            public StackStore(int capacity)\n                : base(capacity)\n            {\n            }\n\n            public T Fetch()\n            {\n                return Pop();\n            }\n\n            public void Store(T item)\n            {\n                Push(item);\n            }\n        }\n\n        /// <summary>\n        /// Cicrcular pool wraper\n        /// </summary>\n        [DebuggerStepThrough]\n        class CircularStore : IItemStore\n        {\n            private readonly List<Slot> slots;\n            private int freeSlotCount;\n            private int position = -1;\n\n            public int Count\n            {\n                get\n                {\n                    return this.freeSlotCount;\n                }\n            }\n\n            #region Methods\n\n            public CircularStore(int capacity)\n            {\n                this.slots = new List<Slot>(capacity);\n            }\n\n            public T Fetch()\n            {\n                Exceptions.ThrowIf<InvalidOperationException>(this.Count == 0, \"The buffer is empty.\");\n\n                int startPosition = this.position;\n\n                do\n                {\n                    Advance();\n                    Slot slot = this.slots[this.position];\n\n                    if (!slot.IsInUse)\n                    {\n                        slot.IsInUse = true;\n                        --this.freeSlotCount;\n                        return slot.Item;\n                    }\n\n                } while (startPosition != position);\n\n                throw new InvalidOperationException(\"No free slots.\");\n            }\n\n            public void Store(T item)\n            {\n                Slot slot = this.slots.Find(s => Equals(s.Item, item));\n\n                if (slot == null)\n                {\n                    slot = new Slot(item);\n                    this.slots.Add(slot);\n                }\n\n                slot.IsInUse = false;\n                ++this.freeSlotCount;\n            }\n\n            private void Advance()\n            {\n                position = (position + 1)%this.slots.Count;\n            }\n\n            private class Slot\n            {\n                public Slot(T item)\n                {\n                    this.Item = item;\n                }\n\n                public T Item { get; private set; }\n                public bool IsInUse { get; set; }\n            }\n\n            #endregion\n        }\n\n        #endregion\n    }\n}"
  },
  {
    "path": "Sources/Library/Memory/PoolClass.cs",
    "content": "﻿using System;\n\nnamespace KeenSoftwareHouse.Library.Memory\n{\n    /// <summary>\n    /// Represent an object from pool that can be getted and by dispose pattern returnd back when no-needed.\n    /// PoolClass use its internal pool of T or can be initialized with custom: \n    ///      PoolClass<T>.Init(externalPool);\n    /// <remarks>\n    /// Always follows this pattern:\n    ///     using (var wrapper = PoolClass<T>.New(p0, p1, ...))\n    ///     {\n    ///         T item = wrapper;\n    /// \n    ///         item.DoSomeWork()\n    ///     }\n    /// \n    /// This will ensure fastest immediate realease back to pool. \n    /// </remarks>\n    /// </summary>\n    /// <typeparam name=\"T\">Class</typeparam>\n    public static class PoolClass<T> where T: class\n    {\n        #region Constants\n\n        /// <summary>\n        /// Maximum concrete number of pooled objects.\n        /// </summary>\n        private const int MaximumNumClass = 32;\n\n        #endregion\n\n        #region Fields\n\n        /// <summary>\n        /// Multi-threaded list pool\n        /// </summary>\n        private static Pool<T> ListPool;\n\n        #endregion\n\n        #region Methods\n\n        /// <summary>\n        /// Inits the specified external pool.\n        /// </summary>\n        /// <param name=\"externalPool\">The external pool.</param>\n        public static void Init(Pool<T> externalPool = null)\n        {\n            if (ListPool != null)\n            {\n                return;\n            }\n\n            ListPool = externalPool ?? new Pool<T>(MaximumNumClass);\n        }\n\n        /// <summary>\n        /// Acquires object from pool and call constructor.\n        /// </summary>\n        /// <returns></returns>\n        public static ObjectDisposer<T> New()\n        {\n            Init();\n\n            var item = ListPool.New();\n\n            return new ObjectDisposer<T>(item, ReturnMode.Delete);\n        }\n\n        /// <summary>\n        /// Acquires object from pool and call constructor.\n        /// </summary>\n        /// <typeparam name=\"T0\">The type of the 0.</typeparam>\n        /// <param name=\"p0\">The p0.</param>\n        /// <returns>New object.</returns>\n        public static ObjectDisposer<T> New<T0>(T0 p0)\n        {\n            Init();\n\n            var item = ListPool.New(p0);\n\n            return new ObjectDisposer<T>(item, ReturnMode.Delete);\n        }\n\n        /// <summary>\n        /// Acquires object from pool and call constructor.\n        /// </summary>\n        /// <typeparam name=\"T0\">The type of the 0.</typeparam>\n        /// <typeparam name=\"T1\">The type of the 1.</typeparam>\n        /// <param name=\"p0\">The p0.</param>\n        /// <param name=\"p1\">The p1.</param>\n        /// <returns>New object.</returns>\n        public static ObjectDisposer<T> New<T0, T1>(T0 p0, T1 p1)\n        {\n            Init();\n\n            var item = ListPool.New(p0, p1);\n\n            return new ObjectDisposer<T>(item, ReturnMode.Delete);\n        }\n\n        /// <summary>\n        /// Acquires object from pool and call constructor.\n        /// </summary>\n        /// <typeparam name=\"T0\">The type of the 0.</typeparam>\n        /// <typeparam name=\"T1\">The type of the 1.</typeparam>\n        /// <typeparam name=\"T2\">The type of the 2.</typeparam>\n        /// <param name=\"p0\">The p0.</param>\n        /// <param name=\"p1\">The p1.</param>\n        /// <param name=\"p2\">The p2.</param>\n        /// <returns>New object.</returns>\n        public static ObjectDisposer<T> New<T0, T1, T2>(T0 p0, T1 p1, T2 p2)\n        {\n            Init();\n\n            var item = ListPool.New(p0, p1, p2);\n\n            return new ObjectDisposer<T>(item, ReturnMode.Delete);\n        }\n\n        /// <summary>\n        /// Acquires object from pool and call constructor.\n        /// </summary>\n        /// <typeparam name=\"T0\">The type of the 0.</typeparam>\n        /// <typeparam name=\"T1\">The type of the 1.</typeparam>\n        /// <typeparam name=\"T2\">The type of the 2.</typeparam>\n        /// <typeparam name=\"T3\">The type of the 3.</typeparam>\n        /// <param name=\"p0\">The p0.</param>\n        /// <param name=\"p1\">The p1.</param>\n        /// <param name=\"p2\">The p2.</param>\n        /// <param name=\"p3\">The p3.</param>\n        /// <returns>New object.</returns>\n        public static ObjectDisposer<T> New<T0, T1, T2, T3>(T0 p0, T1 p1, T2 p2, T3 p3)\n        {\n            Init();\n\n            var item = ListPool.New(p0, p1, p2, p3);\n\n            return new ObjectDisposer<T>(item, ReturnMode.Delete);\n        }\n\n        /// <summary>\n        /// Acquires object from pool and call constructor.\n        /// </summary>\n        /// <typeparam name=\"T0\">The type of the 0.</typeparam>\n        /// <typeparam name=\"T1\">The type of the 1.</typeparam>\n        /// <typeparam name=\"T2\">The type of the 2.</typeparam>\n        /// <typeparam name=\"T3\">The type of the 3.</typeparam>\n        /// <typeparam name=\"T4\">The type of the 4.</typeparam>\n        /// <param name=\"p0\">The p0.</param>\n        /// <param name=\"p1\">The p1.</param>\n        /// <param name=\"p2\">The p2.</param>\n        /// <param name=\"p3\">The p3.</param>\n        /// <param name=\"p4\">The p4.</param>\n        /// <returns>New object.</returns>\n        public static ObjectDisposer<T> New<T0, T1, T2, T3, T4>(T0 p0, T1 p1, T2 p2, T3 p3, T4 p4)\n        {\n            Init();\n\n            var item = ListPool.New(p0, p1, p2, p3, p4);\n\n            return new ObjectDisposer<T>(item, ReturnMode.Delete);\n        }\n\n        /// <summary>\n        /// Release object back to pool and allows all data in it to be reclaimed by GC.\n        /// </summary>\n        /// <param name=\"item\">The item.</param>\n        public static void Delete(T item)\n        {\n            ListPool.Delete(item);\n        }\n\n        /// <summary>\n        /// Acquires object.\n        /// </summary>\n        /// <returns></returns>\n        public static ObjectDisposer<T> Acquire()\n        {\n            Init();\n\n            var item = ListPool.Acquire();\n\n            return new ObjectDisposer<T>(item, ReturnMode.Release);\n        }\n\n        /// <summary>\n        /// Releases the specified item.\n        /// </summary>\n        /// <param name=\"item\">The item.</param>\n        public static void Release(T item)\n        {\n            ListPool.Release(item);\n        }\n\n        #endregion\n    }\n\n    /// <summary>\n    /// Pool return mode.\n    /// </summary>\n    internal enum ReturnMode : byte\n    {\n        /// <summary>\n        /// \n        /// </summary>\n        Delete,\n\n        /// <summary>\n        /// \n        /// </summary>\n        Release\n    };\n\n    /// <summary>\n    /// ObjectDisposer is wrapper around object from pool and on dispose release it back to pool.\n    /// </summary>\n    /// <typeparam name=\"T\"></typeparam>\n    public struct ObjectDisposer<T> : IDisposable where T : class\n    {\n        #region Fields\n\n        /// <summary>\n        /// \n        /// </summary>\n        private readonly T item;\n\n        /// <summary>\n        /// \n        /// </summary>\n        private readonly ReturnMode returnMode;\n        \n        #endregion\n\n        #region Operators\n\n        /// <summary>\n        /// Implicit conversion to wrapped type.\n        /// </summary>\n        /// <param name=\"right\">The right.</param>\n        /// <returns>\n        /// The result of the conversion.\n        /// </returns>\n        public static implicit operator T(ObjectDisposer<T> right)\n        {\n            return right.item;\n        }\n\n        #endregion\n\n        #region Implementation of IDisposable\n\n        /// <summary>\n        /// Initializes a new instance of the <see cref=\"T:System.Object\"/> class.\n        /// </summary>\n        /// <param name=\"item\">The item.</param>\n        /// <param name=\"returnMode\">The return mode.</param>\n        internal ObjectDisposer(T item, ReturnMode returnMode)\n        {\n            this.item = item;\n            this.returnMode = returnMode;\n        }\n\n        /// <summary>\n        /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.\n        /// </summary>\n        public void Dispose()\n        {\n            switch (this.returnMode)\n            {\n                case ReturnMode.Delete:\n                    {\n                        PoolClass<T>.Delete(this.item);\n\n                        break;\n                    }\n                case ReturnMode.Release:\n                    {\n                        PoolClass<T>.Release(this.item);\n\n                        break;\n                    }\n            }\n        }\n\n        #endregion\n    }\n}"
  },
  {
    "path": "Sources/Library/Memory/PoolList.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\n\nnamespace KeenSoftwareHouse.Library.Memory\n{\n    /// <summary>\n    /// Represent list that is pooled in pool and can be used as temporary.\n    /// <remarks>\n    /// Always follow this pattern:\n    ///     using (var list = PoolList.Get())\n    ///     {\n    ///         // Do some work with list...\n    ///     }\n    /// \n    /// This will ensure fastest allocation and immediate realease back to pool. \n    ///  </remarks>\n    /// </summary>\n    /// <typeparam name=\"T\">Type of list elements.</typeparam>\n    public class PoolList<T>: List<T>, IDisposable\n    {\n        #region Constants\n\n        /// <summary>\n        /// Maximum concrete number of pooled lists per type.\n        /// </summary>\n        private const int MaximumNumLists = 32;\n\n        #endregion\n\n        #region Fields\n\n        /// <summary>\n        /// Indicates if finalizer is registered for this instance.\n        /// </summary>\n        private bool finalizerRegistered;\n\n        /// <summary>\n        /// Multi-threaded list pool\n        /// </summary>\n        private static readonly Pool<PoolList<T>> ListPool;\n\n        #endregion\n\n        #region Methods\n\n        /// <summary>\n        /// Cunstruct static pool of lists.\n        /// </summary>\n        static PoolList()\n        {\n            ListPool = new Pool<PoolList<T>>(MaximumNumLists);\n        }\n\n        /// <summary>\n        /// Initializes a new instance of the <see cref=\"T:System.Collections.Generic.List`1\"/> class that is empty and has the default initial capacity.\n        /// </summary>\n        public PoolList()\n        {\n            this.finalizerRegistered = true;\n        }\n\n        /// <summary>\n        /// Destructor that enforce releasing poollist back to the pool.\n        /// </summary>\n        ~PoolList()\n        {\n            Dispose(false);\n        }\n\n        /// <summary>\n        /// Returns empty list for temporary work.\n        /// Can be called multiple time up to maximum number allowed lists per type.\n        /// </summary>\n        /// <returns></returns>\n        public static PoolList<T> Get()\n        {\n            var list = ListPool.Acquire();\n\n            if (!list.finalizerRegistered)\n            {\n                GC.ReRegisterForFinalize(list);\n                list.finalizerRegistered = true;\n            }\n\n            return list;\n        }\n\n        /// <summary>\n        /// Return poollist back to pool.\n        /// </summary>\n        /// <param name=\"disposing\"></param>\n        private void Dispose(bool disposing)\n        {\n            if (disposing)\n            {\n                // No managed resources\n            }\n\n            this.Clear();\n            ListPool.Release(this);\n        }\n\n        #endregion\n\n        /// <summary>\n        /// Dispose pool list.\n        /// </summary>\n        public void Dispose()\n        {\n            Dispose(true);        \n            GC.SuppressFinalize(this);\n\n            this.finalizerRegistered = false;\n        }    \n    }\n}"
  },
  {
    "path": "Sources/Library/Parallelization/FastEvent.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing KeenSoftwareHouse.Library.Parallelization.Threading;\n\nnamespace KeenSoftwareHouse.Library.Parallelization\n{\n    public delegate void MyNoArgsDelegate();\n\n    public class FastNoArgsEvent\n    {\n        FastResourceLock m_lock = new FastResourceLock();\n        List<MyNoArgsDelegate> m_delegates = new List<MyNoArgsDelegate>(2);\n        List<MyNoArgsDelegate> m_delegatesIterator = new List<MyNoArgsDelegate>(2);\n\n        public event MyNoArgsDelegate Event\n        {\n            add\n            {\n                using (m_lock.AcquireExclusiveUsing())\n                {\n                    m_delegates.Add(value);\n                }\n            }\n            remove\n            {\n                using (m_lock.AcquireExclusiveUsing())\n                {\n                    m_delegates.Remove(value);\n                }\n            }\n        }\n        public void Raise()\n        {\n            using (m_lock.AcquireSharedUsing())\n            {\n                m_delegatesIterator.Clear();\n                foreach (MyNoArgsDelegate _delegate in m_delegates)\n                {\n                    m_delegatesIterator.Add(_delegate);\n                }\n            }\n\n            foreach (MyNoArgsDelegate _delegate in m_delegatesIterator)\n            {\n                _delegate();\n            }\n            m_delegatesIterator.Clear();\n        }\n\n    }\n}\n"
  },
  {
    "path": "Sources/Library/Parallelization/FastResourceLock.cs",
    "content": "﻿using System;\nusing System.Threading;\n\nnamespace KeenSoftwareHouse.Library.Parallelization.Threading\n{\n    public sealed class FastResourceLock : IDisposable, IResourceLock\n    {\n        private const int LockOwned = 0x1;\n\n        private const int LockExclusiveWaking = 0x2;\n\n        private const int LockSharedOwnersShift = 2;\n        private const int LockSharedOwnersMask = 0x3ff;\n        private const int LockSharedOwnersIncrement = 0x4;\n\n        private const int LockSharedWaitersShift = 12;\n        private const int LockSharedWaitersMask = 0x3ff;\n        private const int LockSharedWaitersIncrement = 0x1000;\n\n        private const int LockExclusiveWaitersShift = 22;\n        private const int LockExclusiveWaitersMask = 0x3ff;\n        private const int LockExclusiveWaitersIncrement = 0x400000;\n\n        private const int ExclusiveMask = LockExclusiveWaking | (LockExclusiveWaitersMask << LockExclusiveWaitersShift);\n\n        public struct Statistics\n        {\n            public int AcqExcl;\n            public int AcqShrd;\n            public int AcqExclCont;\n            public int AcqShrdCont;\n            public int AcqExclSlp;\n            public int AcqShrdSlp;\n            public int PeakExclWtrsCount;\n            public int PeakShrdWtrsCount;\n        }\n\n        private static readonly int SpinCount = NativeMethods.SpinCount;\n\n        private int _value;\n        private IntPtr _sharedWakeEvent;\n        private IntPtr _exclusiveWakeEvent;\n\n        public FastResourceLock()\n        {\n            _value = 0;\n        }\n\n        ~FastResourceLock()\n        {\n            this.Dispose(false);\n        }\n\n        private void Dispose(bool disposing)\n        {\n            if (_sharedWakeEvent != IntPtr.Zero)\n            {\n                NativeMethods.CloseHandle(_sharedWakeEvent);\n                _sharedWakeEvent = IntPtr.Zero;\n            }\n\n            if (_exclusiveWakeEvent != IntPtr.Zero)\n            {\n                NativeMethods.CloseHandle(_exclusiveWakeEvent);\n                _exclusiveWakeEvent = IntPtr.Zero;\n            }\n        }\n\n        public void Dispose()\n        {\n            this.Dispose(true);\n            GC.SuppressFinalize(this);\n        }\n\n        public int ExclusiveWaiters\n        {\n            get { return (_value >> LockExclusiveWaitersShift) & LockExclusiveWaitersMask; }\n        }\n\n        public bool Owned\n        {\n            get { return (_value & LockOwned) != 0; }\n        }\n\n        public int SharedOwners\n        {\n            get { return (_value >> LockSharedOwnersShift) & LockSharedOwnersMask; }\n        }\n\n        public int SharedWaiters\n        {\n            get { return (_value >> LockSharedWaitersShift) & LockSharedWaitersMask; }\n        }\n\n        public void AcquireExclusive()\n        {\n            int value;\n            int i = 0;\n\n            while (true)\n            {\n                value = _value;\n\n                if ((value & (LockOwned | LockExclusiveWaking)) == 0)\n                {\n                    if (Interlocked.CompareExchange(\n                        ref _value,\n                        value + LockOwned,\n                        value\n                        ) == value)\n                        break;\n                }\n                else if (i >= SpinCount)\n                {\n                    this.EnsureEventCreated(ref _exclusiveWakeEvent);\n\n                    if (Interlocked.CompareExchange(\n                        ref _value,\n                        value + LockExclusiveWaitersIncrement,\n                        value\n                        ) == value)\n                    {\n                        if (NativeMethods.WaitForSingleObject(\n                            _exclusiveWakeEvent,\n                            Timeout.Infinite\n                            ) != NativeMethods.WaitObject0)\n                        {\n                            System.Diagnostics.Debug.Assert(false);\n                        }\n\n                        do\n                        {\n                            value = _value;\n                        } while (Interlocked.CompareExchange(\n                            ref _value,\n                            value + LockOwned - LockExclusiveWaking,\n                            value\n                            ) != value);\n\n                        break;\n                    }\n                }\n                i++;\n            }\n        }\n\n        public void AcquireShared()\n        {\n            int value;\n            int i = 0;\n\n            while (true)\n            {\n                value = _value;\n\n                if ((value & (\n                    LockOwned |\n                    (LockSharedOwnersMask << LockSharedOwnersShift) |\n                    ExclusiveMask\n                    )) == 0)\n                {\n                    if (Interlocked.CompareExchange(\n                        ref _value,\n                        value + LockOwned + LockSharedOwnersIncrement,\n                        value\n                        ) == value)\n                        break;\n                }\n                else if (\n                    (value & LockOwned) != 0 &&\n                    ((value >> LockSharedOwnersShift) & LockSharedOwnersMask) != 0 &&\n                    (value & ExclusiveMask) == 0\n                    )\n                {\n                    if (Interlocked.CompareExchange(\n                        ref _value,\n                        value + LockSharedOwnersIncrement,\n                        value\n                        ) == value)\n                        break;\n                }\n                else if (i >= SpinCount)\n                {\n                    this.EnsureEventCreated(ref _sharedWakeEvent);\n\n                    if (Interlocked.CompareExchange(\n                        ref _value,\n                        value + LockSharedWaitersIncrement,\n                        value\n                        ) == value)\n                    {\n                        if (NativeMethods.WaitForSingleObject(\n                            _sharedWakeEvent,\n                            Timeout.Infinite\n                            ) != NativeMethods.WaitObject0)\n                        {\n                            System.Diagnostics.Debug.Assert(false);\n                        }\n\n                        continue;\n                    }\n                }\n                i++;\n            }\n        }\n\n        public void ConvertExclusiveToShared()\n        {\n            int value;\n            int sharedWaiters;\n\n            while (true)\n            {\n                value = _value;\n                sharedWaiters = (value >> LockSharedWaitersShift) & LockSharedWaitersMask;\n\n                if (Interlocked.CompareExchange(\n                    ref _value,\n                    (value + LockSharedOwnersIncrement) & ~(LockSharedWaitersMask << LockSharedWaitersShift),\n                    value\n                    ) == value)\n                {\n                    if (sharedWaiters != 0)\n                        NativeMethods.ReleaseSemaphore(_sharedWakeEvent, sharedWaiters, IntPtr.Zero);\n\n                    break;\n                }\n            }\n        }\n\n        private void EnsureEventCreated(ref IntPtr handle)\n        {\n            if (Thread.VolatileRead(ref handle) != IntPtr.Zero)\n                return;\n\n            IntPtr eventHandle = NativeMethods.CreateSemaphore(IntPtr.Zero, 0, int.MaxValue, null);\n\n            if (Interlocked.CompareExchange(ref handle, eventHandle, IntPtr.Zero) != IntPtr.Zero)\n                NativeMethods.CloseHandle(eventHandle);\n        }\n\n        public Statistics GetStatistics()\n        {\n            return new Statistics();\n        }\n\n        public void ReleaseExclusive()\n        {\n            int value;\n\n            while (true)\n            {\n                value = _value;\n\n                if (((value >> LockExclusiveWaitersShift) & LockExclusiveWaitersMask) != 0)\n                {\n                    if (Interlocked.CompareExchange(\n                        ref _value,\n                        value - LockOwned + LockExclusiveWaking - LockExclusiveWaitersIncrement,\n                        value\n                        ) == value)\n                    {\n                        NativeMethods.ReleaseSemaphore(_exclusiveWakeEvent, 1, IntPtr.Zero);\n\n                        break;\n                    }\n                }\n                else\n                {\n                    int sharedWaiters = (value >> LockSharedWaitersShift) & LockSharedWaitersMask;\n\n                    if (Interlocked.CompareExchange(\n                        ref _value,\n                        value & ~(LockOwned | (LockSharedWaitersMask << LockSharedWaitersShift)),\n                        value\n                        ) == value)\n                    {\n                        if (sharedWaiters != 0)\n                            NativeMethods.ReleaseSemaphore(_sharedWakeEvent, sharedWaiters, IntPtr.Zero);\n\n                        break;\n                    }\n                }\n            }\n        }\n\n        public void ReleaseShared()\n        {\n            int value;\n            int sharedOwners;\n\n            while (true)\n            {\n                value = _value;\n                sharedOwners = (value >> LockSharedOwnersShift) & LockSharedOwnersMask;\n\n                if (sharedOwners > 1)\n                {\n                    if (Interlocked.CompareExchange(\n                        ref _value,\n                        value - LockSharedOwnersIncrement,\n                        value\n                        ) == value)\n                        break;\n                }\n                else if (((value >> LockExclusiveWaitersShift) & LockExclusiveWaitersMask) != 0)\n                {\n                    if (Interlocked.CompareExchange(\n                        ref _value,\n                        value - LockOwned + LockExclusiveWaking - LockSharedOwnersIncrement - LockExclusiveWaitersIncrement,\n                        value\n                        ) == value)\n                    {\n                        NativeMethods.ReleaseSemaphore(_exclusiveWakeEvent, 1, IntPtr.Zero);\n\n                        break;\n                    }\n                }\n                else\n                {\n                    if (Interlocked.CompareExchange(\n                        ref _value,\n                        value - LockOwned - LockSharedOwnersIncrement,\n                        value\n                        ) == value)\n                        break;\n                }\n            }\n        }\n\n        public void SpinAcquireExclusive()\n        {\n            int value;\n\n            while (true)\n            {\n                value = _value;\n\n                if ((value & (LockOwned | LockExclusiveWaking)) == 0)\n                {\n                    if (Interlocked.CompareExchange(\n                        ref _value,\n                        value + LockOwned,\n                        value\n                        ) == value)\n                        break;\n                }\n\n                if (NativeMethods.SpinEnabled)\n                    Thread.SpinWait(8);\n                else\n                    Thread.Sleep(0);\n            }\n        }\n\n        public void SpinAcquireShared()\n        {\n            int value;\n\n            while (true)\n            {\n                value = _value;\n\n                if ((value & ExclusiveMask) == 0)\n                {\n                    if ((value & LockOwned) == 0)\n                    {\n                        if (Interlocked.CompareExchange(\n                            ref _value,\n                            value + LockOwned + LockSharedOwnersIncrement,\n                            value\n                            ) == value)\n                            break;\n                    }\n                    else if (((value >> LockSharedOwnersShift) & LockSharedOwnersMask) != 0)\n                    {\n                        if (Interlocked.CompareExchange(\n                            ref _value,\n                            value + LockSharedOwnersIncrement,\n                            value\n                            ) == value)\n                            break;\n                    }\n                }\n\n                if (NativeMethods.SpinEnabled)\n                    Thread.SpinWait(8);\n                else\n                    Thread.Sleep(0);\n            }\n        }\n\n        public void SpinConvertSharedToExclusive()\n        {\n            int value;\n\n            while (true)\n            {\n                value = _value;\n\n                if (((value >> LockSharedOwnersShift) & LockSharedOwnersMask) == 1)\n                {\n                    if (Interlocked.CompareExchange(\n                        ref _value,\n                        value - LockSharedOwnersIncrement,\n                        value\n                        ) == value)\n                        break;\n                }\n\n                if (NativeMethods.SpinEnabled)\n                    Thread.SpinWait(8);\n                else\n                    Thread.Sleep(0);\n            }\n        }\n\n        public bool TryAcquireExclusive()\n        {\n            int value;\n\n            value = _value;\n\n            if ((value & (LockOwned | LockExclusiveWaking)) != 0)\n                return false;\n\n            return Interlocked.CompareExchange(\n                ref _value,\n                value + LockOwned,\n                value\n                ) == value;\n        }\n\n        public bool TryAcquireShared()\n        {\n            int value;\n\n            value = _value;\n\n            if ((value & ExclusiveMask) != 0)\n                return false;\n\n            if ((value & LockOwned) == 0)\n            {\n                return Interlocked.CompareExchange(\n                    ref _value,\n                    value + LockOwned + LockSharedOwnersIncrement,\n                    value\n                    ) == value;\n            }\n\n            if (((value >> LockSharedOwnersShift) & LockSharedOwnersMask) != 0)\n            {\n                return Interlocked.CompareExchange(\n                    ref this._value,\n                    value + LockSharedOwnersIncrement,\n                    value\n                    ) == value;\n            }\n\n            return false;\n        }\n\n        public bool TryConvertSharedToExclusive()\n        {\n            int value;\n\n            while (true)\n            {\n                value = _value;\n\n                if (((value >> LockSharedOwnersShift) & LockSharedOwnersMask) != 1)\n                    return false;\n\n                if (Interlocked.CompareExchange(\n                    ref _value,\n                    value - LockSharedOwnersIncrement,\n                    value\n                    ) == value)\n                    return true;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/Library/Parallelization/FastResourceLockExtensions.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing KeenSoftwareHouse.Library.Parallelization.Threading;\n\nnamespace KeenSoftwareHouse.Library.Parallelization.Threading\n{\n    public static class FastResourceLockExtensions\n    {\n        public struct MySharedLock : IDisposable\n        {\n            FastResourceLock m_lockObject;\n\n            public MySharedLock(FastResourceLock lockObject)\n            {\n                m_lockObject = lockObject;\n                m_lockObject.AcquireShared();\n            }\n\n            public void Dispose()\n            {\n                System.Diagnostics.Debug.Assert(m_lockObject.Owned);\n                m_lockObject.ReleaseShared();\n            }\n        }\n\n        public struct MyExclusiveLock : IDisposable\n        {\n            FastResourceLock m_lockObject;\n\n            public MyExclusiveLock(FastResourceLock lockObject)\n            {\n                m_lockObject = lockObject;\n                m_lockObject.AcquireExclusive();\n            }\n\n            public void Dispose()\n            {\n                System.Diagnostics.Debug.Assert(m_lockObject.Owned);\n                m_lockObject.ReleaseExclusive();\n            }\n        }\n\n        /// <summary>\n        /// Call dispose or use using block to release lock\n        /// </summary>\n        public static MySharedLock AcquireSharedUsing(this FastResourceLock lockObject)\n        {\n            return new MySharedLock(lockObject);\n        }\n\n        /// <summary>\n        /// Call dispose or use using block to release lock\n        /// </summary>\n        public static MyExclusiveLock AcquireExclusiveUsing(this FastResourceLock lockObject)\n        {\n            return new MyExclusiveLock(lockObject);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/Library/Parallelization/IResourceLock.cs",
    "content": "﻿namespace KeenSoftwareHouse.Library.Parallelization.Threading\n{\n    public interface IResourceLock\n    {\n        /// <summary>\n        /// Acquires the lock in exclusive mode, blocking if necessary.\n        /// </summary>\n        void AcquireExclusive();\n\n        /// <summary>\n        /// Acquires the lock in shared mode, blocking if necessary.\n        /// </summary>\n        void AcquireShared();\n\n        /// <summary>\n        /// Releases the lock in exclusive mode.\n        /// </summary>\n        void ReleaseExclusive();\n\n        /// <summary>\n        /// Releases the lock in shared mode.\n        /// </summary>\n        void ReleaseShared();\n\n        /// <summary>\n        /// Attempts to acquire the lock in exclusive mode.\n        /// </summary>\n        /// <returns>Whether the lock was acquired.</returns>\n        bool TryAcquireExclusive();\n\n        /// <summary>\n        /// Attempts to acquire the lock in shared mode.\n        /// </summary>\n        /// <returns>Whether the lock was acquired.</returns>\n        bool TryAcquireShared();\n    }\n}\n"
  },
  {
    "path": "Sources/Library/Parallelization/NativeMethods.cs",
    "content": "﻿using System;\nusing System.Runtime.InteropServices;\nusing System.Security;\n\nnamespace KeenSoftwareHouse.Library.Parallelization.Threading\n{\n    [SuppressUnmanagedCodeSecurity]\n    internal class NativeMethods\n    {\n        public const int WaitObject0 = 0x0;\n        public const int WaitAbandoned = 0x80;\n        public const int WaitTimeout = 0x102;\n        public const int WaitFailed = -1;\n\n        public static readonly int SpinCount = Environment.ProcessorCount != 1 ? 4000 : 0;\n        public static readonly bool SpinEnabled = Environment.ProcessorCount != 1;\n\n        // We need to import some stuff. We can't use \n        // ProcessHacker.Native because it depends on this library.\n\n        [DllImport(\"kernel32.dll\")]\n        public static extern bool CloseHandle(\n            [In] IntPtr Handle\n            );\n\n        [DllImport(\"kernel32.dll\", CharSet = CharSet.Unicode)]\n        public static extern IntPtr CreateEvent(\n            [In] [Optional] IntPtr EventAttributes,\n            [In] bool ManualReset,\n            [In] bool InitialState,\n            [In] [Optional] string Name\n            );\n\n        [DllImport(\"kernel32.dll\", CharSet = CharSet.Unicode)]\n        public static extern IntPtr CreateSemaphore(\n            [In] [Optional] IntPtr SemaphoreAttributes,\n            [In] int InitialCount,\n            [In] int MaximumCount,\n            [In] [Optional] string Name\n            );\n\n        [DllImport(\"kernel32.dll\")]\n        public static extern bool ReleaseSemaphore(\n            [In] IntPtr SemaphoreHandle,\n            [In] int ReleaseCount,\n            [In] IntPtr PreviousCount // out int\n            );\n\n        [DllImport(\"kernel32.dll\")]\n        public static extern bool ResetEvent(\n            [In] IntPtr EventHandle\n            );\n\n        [DllImport(\"kernel32.dll\")]\n        public static extern bool SetEvent(\n            [In] IntPtr EventHandle\n            );\n\n        [DllImport(\"kernel32.dll\")]\n        public static extern int WaitForSingleObject(\n            [In] IntPtr Handle,\n            [In] int Milliseconds\n            );\n\n        [DllImport(\"ntdll.dll\")]\n        public static extern int NtCreateKeyedEvent(\n            [Out] out IntPtr KeyedEventHandle,\n            [In] int DesiredAccess,\n            [In] [Optional] IntPtr ObjectAttributes,\n            [In] int Flags\n            );\n\n        [DllImport(\"ntdll.dll\")]\n        public static extern int NtReleaseKeyedEvent(\n            [In] IntPtr KeyedEventHandle,\n            [In] IntPtr KeyValue,\n            [In] bool Alertable,\n            [In] [Optional] IntPtr Timeout\n            );\n\n        [DllImport(\"ntdll.dll\")]\n        public static extern int NtWaitForKeyedEvent(\n            [In] IntPtr KeyedEventHandle,\n            [In] IntPtr KeyValue,\n            [In] bool Alertable,\n            [In] [Optional] IntPtr Timeout\n            );\n    }\n}\n"
  },
  {
    "path": "Sources/Library/Profiler/MyProfiler.cs",
    "content": "﻿#region Using\n\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Diagnostics;\nusing System.Threading;\n\n#endregion\n\nnamespace KeenSoftwareHouse.Library.Profiler\n{\n    // This is part of MyRenderProfiler. I have moved it here, to be accessible from MinerWarsCommonLIB.\n    public partial class MyProfiler\n    {\n        static public bool EnableAsserts = true;\n        static public bool StackChecking = false;\n        public static readonly int MAX_FRAMES = 1024;\n\n        protected Dictionary<int, MyProfilerBlock> m_profilingBlocks = new Dictionary<int, MyProfilerBlock>(65536);\n        protected Stack<MyProfilerBlock> m_currentProfilingStack = new Stack<MyProfilerBlock>(1024);\n        protected MyProfiler.MyProfilerBlock m_selectedRoot = null;\n\n        public MyProfiler()\n        {\n            m_managedThreadId = Thread.CurrentThread.ManagedThreadId;\n        }\n\n        public Dictionary<int, MyProfilerBlock> ProfilingBlocks\n        {\n            get { return m_profilingBlocks; }\n        }\n\n        public MyProfiler.MyProfilerBlock SelectedRoot\n        {\n            get { return m_selectedRoot; }\n            set { m_selectedRoot = value; }\n        }\n\n        public Stack<MyProfilerBlock> CurrentProfilingStack\n        {\n            get { return m_currentProfilingStack; }\n        }\n\n        public int LevelSkipCount = 0;\n\n        int m_managedThreadId;\n\n        StringBuilder GetParentName()\n        {\n            if(m_currentProfilingStack.Count > 0)\n                return m_currentProfilingStack.Peek().Name;\n\n            return new StringBuilder(\"<root>\");\n        }\n\n        int GetParentHash()\n        {\n            if (m_currentProfilingStack.Count > 0)\n                return m_currentProfilingStack.Peek().BlockHash;\n\n            return 0;\n        }\n\n        static StringBuilder m_nameComposer = new StringBuilder(1024);\n        static StringBuilder m_nameSplitter = new StringBuilder(\" : \");\n\n        public int StartMyProfilingBlock(string name, bool memoryProfiling, float customValue = 0)\n        {\n            if (m_managedThreadId != Thread.CurrentThread.ManagedThreadId)\n                return -1;\n\n            //lock (m_lock)\n            {\n                if (MyProfiler.EnableAsserts)\n                {        /*\n                    foreach (MyProfilerBlock block in m_currentProfilingStack)\n                    {\n                        if (block.Name.ToString() == name)\n                        {\n                            System.Diagnostics.Debug.Assert(false, \"Event is already in stack!\");\n                            return -1;\n                        }\n                    }      */\n                }\n                 \n                MyProfilerBlock profilingBlock = null;\n                int key;\n\n                unchecked\n                {\n                    key = (397 * name.GetHashCode()) ^ GetParentHash();\n                }\n\n                int id = 1;\n                \n                //if (!m_profilingBlocks.TryGetValue(m_nameComposer.ToString(), out profilingBlock))\n                if (!m_profilingBlocks.TryGetValue(key, out profilingBlock))\n                {\n                    profilingBlock = new MyProfilerBlock(name/*m_nameComposer.ToString()*/);\n\n                    if (m_currentProfilingStack.Count > 0)\n                    {\n                        MyProfilerBlock parentBlock = m_currentProfilingStack.Peek();\n                        if (!parentBlock.Children.Contains(profilingBlock))\n                            parentBlock.Children.Add(profilingBlock);\n\n                        profilingBlock.Parent = m_currentProfilingStack.Peek();\n                    }\n\n                    m_profilingBlocks.Add(key, profilingBlock);\n                    profilingBlock.Id = m_profilingBlocks.Count - 1;\n                }\n\n                id = profilingBlock.Id;\n                \n                profilingBlock.Start(memoryProfiling);\n                profilingBlock.CustomValue = customValue;\n                                   \n                m_currentProfilingStack.Push(profilingBlock);\n\n                return id;\n            }\n        }\n\n        public void EndMyProfilingBlock(int id, bool memoryProfiling)\n        {\n            if (EnableAsserts) //Check that thread which begun this block is same which ends it\n                System.Diagnostics.Debug.Assert(m_managedThreadId == Thread.CurrentThread.ManagedThreadId);\n\n            if (LevelSkipCount > 0)\n            {\n                LevelSkipCount--;\n                return;\n            }\n\n            MyProfilerBlock profilingBlock = m_currentProfilingStack.Pop();\n            if (profilingBlock != null)\n            {\n                if (EnableAsserts && id != -1)\n                {\n                    System.Diagnostics.Debug.Assert(profilingBlock.Id == id, \"Corrupted profilling stack, mismatched IDs\");\n                }\n\n                profilingBlock.End(memoryProfiling);\n            }\n            else\n            if (EnableAsserts)\n            {\n                System.Diagnostics.Debug.Assert(false, \"Corrupted profilling stack\");\n            }             \n        }\n\n        public void MyProfileCustomValue(string name, float value, bool memoryProfiling)\n        {\n            int id = StartMyProfilingBlock(name, memoryProfiling, value);\n            EndMyProfilingBlock(id, memoryProfiling);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/Library/Profiler/MyProfilerBlock.cs",
    "content": "﻿#region Using\n\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Diagnostics;\nusing System.Threading;\n\n#endregion\n\nnamespace KeenSoftwareHouse.Library.Profiler\n{\n    public partial class MyProfiler\n    {\n        public class MyProfilerBlock\n        {\n            public Stopwatch Stopwatch = new Stopwatch();\n            public StringBuilder Name;\n            public long StartManagedMB = 0;\n            public long EndManagedMB = 0;\n\n            public float DeltaManagedB = 0; //?\n            public float TotalManagedMB = 0; //?\n\n\n            public long StartProcessMB = 0;\n            public long EndProcessMB = 0;\n            public float DeltaProcessB = 0;       //?\n            public float TotalProcessMB = 0;      //?\n\n            public bool Invalid = false;\n\n            public float CustomValue = 0;\n\n            public float ManagedDeltaMB\n            {\n                //conversion to MB\n                get { return (DeltaManagedB) * 0.000000953674f; }\n            }\n\n            public float ProcessDeltaMB\n            {\n                //conversion to MB\n                get { return (DeltaProcessB) * 0.000000953674f; }\n            }\n\n\n            public float[] ProcessMemory = new float[MAX_FRAMES];\n\n            public uint color;\n            public float[] Miliseconds = new float[MAX_FRAMES];\n            public float[] ManagedMemory = new float[MAX_FRAMES];\n            public float[] CustomValues = new float[MAX_FRAMES];\n            public int[] NumCallsArray = new int[MAX_FRAMES];\n\n            public bool Enabled = false;\n            public bool DrawGraph = true;\n            public bool Assigned = false;\n            public float averagePctg = 0;\n            public float averageMiliseconds = 0;\n            public static int IndexCounter = 0;\n\n            public List<MyProfilerBlock> Children = new List<MyProfilerBlock>();\n            public List<MyProfilerBlock> StackChildren = new List<MyProfilerBlock>();\n            public MyProfilerBlock Parent = null;\n            public MyProfilerBlock StackParent = null;\n\n            public int NumCalls = 0;\n            public int NumChildCalls = 0;\n            public int Cooldown = 1000;\n            public int ThreadId = -1;\n            public int Id;\n\n            public int BlockHash = 0;\n\n            public Stack<string> DebugStackTrace = new Stack<string>();\n\n            public MyProfilerBlock(string name)\n            {\n                Name = new StringBuilder(name);\n                BlockHash = Name.GetHashCode();\n                ThreadId = System.Threading.Thread.CurrentThread.ManagedThreadId;\n            }\n\n            public void Start(bool memoryProfiling)\n            {\n                NumCalls++;\n\n                if (memoryProfiling)\n                {\n                    StartManagedMB = System.GC.GetTotalMemory(false);   // About 1ms per 2000 calls\n                }\n\n                if (StackChecking && Name.ToString() != \"FPS\")\n                {\n                    DebugStackTrace.Push(GetStackTrace());\n                }\n\n                if (memoryProfiling)\n                {\n                    StartProcessMB = System.Environment.WorkingSet;   // WorkingSet is allocating memory in each call, also its expensive (about 7ms per 2000 calls).\n                }\n\n                Stopwatch.Start();\n            }\n\n            private string GetStackTrace()\n            {\n                var stack = new StackTrace();\n                string result = String.Empty;\n                int i;\n                for (i = stack.FrameCount - 1; i >= 0; i--)\n                {\n                    var declaringType = stack.GetFrame(i).GetMethod().DeclaringType;\n                    if (typeof(MyProfiler).IsAssignableFrom(declaringType))\n                    {\n                        break;\n                    }\n                }\n                return new StackTrace(i + 1).ToString();\n            }\n\n            public void End(bool memoryProfiling)\n            {\n                Stopwatch.Stop();\n\n                //if(MyProfiler.EnableAsserts)\n                //    System.Diagnostics.Debug.Assert(threadId == System.Threading.Thread.CurrentThread.ManagedThreadId, \"You must run MyProfilerBlock within same thread!\");\n\n\n\n                if (memoryProfiling)\n                {\n                    EndManagedMB = System.GC.GetTotalMemory(false);\n                    EndProcessMB = System.Environment.WorkingSet;\n                }\n\n                if (StackChecking && Name.ToString() != \"FPS\")\n                {\n                    string currentStact = GetStackTrace();\n                    Debug.Assert(DebugStackTrace.Peek() == currentStact, \"Stack traces does not match, probably unclosed block\");\n                    DebugStackTrace.Pop();\n                }\n\n                DeltaManagedB += EndManagedMB - StartManagedMB;\n                if (memoryProfiling)\n                {\n                    DeltaProcessB += EndProcessMB - StartProcessMB;\n                }\n            }\n\n            public int GetNumChildCalls(int recursionLevel = 0)\n            {\n                int calls = 0;\n\n                if (recursionLevel > 1000)\n                {\n                    // We are probably in endless loop. \n\n                    if (EnableAsserts)\n                        System.Diagnostics.Trace.Assert(false, \"We are probably in endless loop. Check tree hierarchy!\");\n\n                    return 1000000;\n                }\n\n                for (int i = 0; i < Children.Count; i++)\n                {\n                    if (Children[i].NumChildCalls == -1)\n                    {\n                        Children[i].NumChildCalls = Children[i].GetNumChildCalls(++recursionLevel);\n                    }\n\n                    calls += Children[i].NumChildCalls;\n                }\n\n                return calls + NumCalls;\n            }\n\n            public override string ToString()\n            {\n                return Name + \" (\" + NumCalls.ToString() + \" calls)\";\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/Library/Properties/AssemblyInfo.cs",
    "content": "﻿#region Using\n\nusing System.Reflection;\nusing System.Runtime.InteropServices;\n\n#endregion\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"Library\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"Microsoft\")]\n[assembly: AssemblyProduct(\"Library\")]\n[assembly: AssemblyCopyright(\"Copyright © Microsoft 2011\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Setting ComVisible to false makes the types in this assembly not visible \n// to COM components.  If you need to access a type in this assembly from \n// COM, set the ComVisible attribute to true on that type.\n[assembly: ComVisible(false)]\n\n// The following GUID is for the ID of the typelib if this project is exposed to COM\n[assembly: Guid(\"c8af46e0-adb3-437e-8251-0e5bc827cbb4\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n"
  },
  {
    "path": "Sources/Library/Reflection/ConstructorHelper.cs",
    "content": "﻿using System;\nusing System.Reflection;\nusing System.Reflection.Emit;\n\nnamespace KeenSoftwareHouse.Library.Reflection\n{\n    /// <summary>\n    /// Helpers for constructor.\n    /// </summary>\n    /// <typeparam name=\"T\">Type of object</typeparam>\n    public static class ConstructorHelper<T>\n    {\n        /// <summary>\n        /// Return delegate through which can be call in place constructor on already created object.\n        /// </summary>\n        /// <remarks>\n        /// Call it like var ctorInPlace = (Action<T, P1, P2 ...>)ConstructorHelper<T>.CreateInPlaceConstructor(typeof(Action<T, P1, P2 ...>);\n        /// ctorInPlace(obj, param1, param2 ...)\n        /// </remarks>\n        /// <param name=\"constructorType\">Type of Action representing constructor, where fist parameter is hidden this value.</remarks></param>\n        /// <returns></returns>\n        public static Delegate CreateInPlaceConstructor(Type constructorType)\n        {\n            var type = typeof (T);\n            var inplaceCtorMethod = constructorType.GetMethod(\"Invoke\");\n\n            var inplaceCtorParams = Array.ConvertAll(inplaceCtorMethod.GetParameters(), p => p.ParameterType);\n\n            Type[] ctorParams;\n            if (inplaceCtorParams.Length > 1)\n            {\n                ctorParams = new Type[inplaceCtorParams.Length - 1];\n                Array.ConstrainedCopy(inplaceCtorParams, 1, ctorParams, 0, inplaceCtorParams.Length - 1);\n            }\n            else\n            {\n                ctorParams = Type.EmptyTypes;\n            }\n\n            ConstructorInfo constructor = type.GetConstructor(ctorParams);\n\n            if (constructor == null)\n            {\n                throw new InvalidOperationException(string.Format(\"No matching constructor for object {0} was found!\",\n                                                                  type.Name));\n            }\n\n            var dm = new DynamicMethod(string.Format(\"Pool<T>__{0}\", Guid.NewGuid().ToString().Replace(\"-\", \"\")),\n                                       typeof (void),\n                                       inplaceCtorParams,\n                                       typeof(ConstructorHelper<T>),\n                                       false);\n\n            var gen = dm.GetILGenerator();\n            for (int paramIdx = 0; paramIdx < inplaceCtorParams.Length; paramIdx++)\n            {\n                if (paramIdx < 4)\n                {\n                    switch (paramIdx)\n                    {\n                        case 0:\n                            gen.Emit(OpCodes.Ldarg_0);\n                            break;\n                        case 1:\n                            gen.Emit(OpCodes.Ldarg_1);\n                            break;\n                        case 2:\n                            gen.Emit(OpCodes.Ldarg_2);\n                            break;\n                        case 3:\n                            gen.Emit(OpCodes.Ldarg_3);\n                            break;\n                    }\n                }\n                else\n                {\n                    gen.Emit(OpCodes.Ldarg_S, paramIdx);\n                }\n            }\n\n            gen.Emit(OpCodes.Callvirt, constructor);\n            gen.Emit(OpCodes.Ret);\n\n            return dm.CreateDelegate(constructorType);\n        }\n    }\n}"
  },
  {
    "path": "Sources/Library/Security/Crc32.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Security.Cryptography;\n\nnamespace KeenSoftwareHouse.Library.Security\n{\n    public class Crc32 : HashAlgorithm\n    {\n        public const uint DefaultSeed = 0xffffffff;\n\n        readonly static uint[] CrcTable = new uint[] {\n            0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA, 0x076DC419,\n            0x706AF48F, 0xE963A535, 0x9E6495A3, 0x0EDB8832, 0x79DCB8A4,\n            0xE0D5E91E, 0x97D2D988, 0x09B64C2B, 0x7EB17CBD, 0xE7B82D07,\n            0x90BF1D91, 0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE,\n            0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7, 0x136C9856,\n            0x646BA8C0, 0xFD62F97A, 0x8A65C9EC, 0x14015C4F, 0x63066CD9,\n            0xFA0F3D63, 0x8D080DF5, 0x3B6E20C8, 0x4C69105E, 0xD56041E4,\n            0xA2677172, 0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B,\n            0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940, 0x32D86CE3,\n            0x45DF5C75, 0xDCD60DCF, 0xABD13D59, 0x26D930AC, 0x51DE003A,\n            0xC8D75180, 0xBFD06116, 0x21B4F4B5, 0x56B3C423, 0xCFBA9599,\n            0xB8BDA50F, 0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924,\n            0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D, 0x76DC4190,\n            0x01DB7106, 0x98D220BC, 0xEFD5102A, 0x71B18589, 0x06B6B51F,\n            0x9FBFE4A5, 0xE8B8D433, 0x7807C9A2, 0x0F00F934, 0x9609A88E,\n            0xE10E9818, 0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01,\n            0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E, 0x6C0695ED,\n            0x1B01A57B, 0x8208F4C1, 0xF50FC457, 0x65B0D9C6, 0x12B7E950,\n            0x8BBEB8EA, 0xFCB9887C, 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3,\n            0xFBD44C65, 0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2,\n            0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB, 0x4369E96A,\n            0x346ED9FC, 0xAD678846, 0xDA60B8D0, 0x44042D73, 0x33031DE5,\n            0xAA0A4C5F, 0xDD0D7CC9, 0x5005713C, 0x270241AA, 0xBE0B1010,\n            0xC90C2086, 0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F,\n            0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4, 0x59B33D17,\n            0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD, 0xEDB88320, 0x9ABFB3B6,\n            0x03B6E20C, 0x74B1D29A, 0xEAD54739, 0x9DD277AF, 0x04DB2615,\n            0x73DC1683, 0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8,\n            0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1, 0xF00F9344,\n            0x8708A3D2, 0x1E01F268, 0x6906C2FE, 0xF762575D, 0x806567CB,\n            0x196C3671, 0x6E6B06E7, 0xFED41B76, 0x89D32BE0, 0x10DA7A5A,\n            0x67DD4ACC, 0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5,\n            0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252, 0xD1BB67F1,\n            0xA6BC5767, 0x3FB506DD, 0x48B2364B, 0xD80D2BDA, 0xAF0A1B4C,\n            0x36034AF6, 0x41047A60, 0xDF60EFC3, 0xA867DF55, 0x316E8EEF,\n            0x4669BE79, 0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236,\n            0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F, 0xC5BA3BBE,\n            0xB2BD0B28, 0x2BB45A92, 0x5CB36A04, 0xC2D7FFA7, 0xB5D0CF31,\n            0x2CD99E8B, 0x5BDEAE1D, 0x9B64C2B0, 0xEC63F226, 0x756AA39C,\n            0x026D930A, 0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713,\n            0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38, 0x92D28E9B,\n            0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21, 0x86D3D2D4, 0xF1D4E242,\n            0x68DDB3F8, 0x1FDA836E, 0x81BE16CD, 0xF6B9265B, 0x6FB077E1,\n            0x18B74777, 0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C,\n            0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45, 0xA00AE278,\n            0xD70DD2EE, 0x4E048354, 0x3903B3C2, 0xA7672661, 0xD06016F7,\n            0x4969474D, 0x3E6E77DB, 0xAED16A4A, 0xD9D65ADC, 0x40DF0B66,\n            0x37D83BF0, 0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9,\n            0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6, 0xBAD03605,\n            0xCDD70693, 0x54DE5729, 0x23D967BF, 0xB3667A2E, 0xC4614AB8,\n            0x5D681B02, 0x2A6F2B94, 0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B,\n            0x2D02EF8D\n        };\n\n        uint crcValue = 0;\n\n        public override void Initialize()\n        {\n            crcValue = 0;\n        }\n\n        protected override void HashCore(byte[] buffer, int start, int length)\n        {\n            crcValue ^= DefaultSeed;\n\n            unchecked\n            {\n                while (--length >= 0)\n                {\n                    crcValue = CrcTable[(crcValue ^ buffer[start++]) & 0xFF] ^ (crcValue >> 8);\n                }\n            }\n\n            crcValue ^= DefaultSeed;\n        }\n        protected override byte[] HashFinal()\n        {\n            this.HashValue = new byte[] { (byte)((crcValue >> 24) & 0xff), \n                                      (byte)((crcValue >> 16) & 0xff), \n                                      (byte)((crcValue >> 8) & 0xff), \n                                      (byte)(crcValue & 0xff) };\n            return this.HashValue;\n        }\n        public uint CrcValue\n        {\n            get\n            {\n                return (uint)((HashValue[0] << 24) | (HashValue[1] << 16) | (HashValue[2] << 8) | HashValue[3]);\n            }\n        }\n        public override int HashSize\n        {\n            get { return 32; }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/Library/Trace/ITrace.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace KeenSoftwareHouse.Library.Trace\n{\n    public interface ITrace\n    {\n        void Send(string msg, string comment = null);\n        void SendWatch(string watchName, object watchValue, int depth = 1);\n        void Indent(string msg, string comment = null);\n        void UnIndent(string msg = null, string comment = null);\n    }\n}\n"
  },
  {
    "path": "Sources/Library/Trace/MyTrace.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Diagnostics;\n\nnamespace KeenSoftwareHouse.Library.Trace\n{\n    public enum TraceWindow\n    {\n        Default,\n        Saving,\n        ParallelParticles,\n        Server,\n        EntityId,\n        Multiplayer,\n        MultiplayerAlerts,\n    }\n\n    public delegate ITrace InitTraceHandler(string traceId, string traceName);\n\n    public static class MyTrace\n    {\n        class NullTrace : ITrace\n        {\n            public void Send(string msg, string comment = null) { }\n            public void SendWatch(string watchName, object watchValue, int depth = 1) { }\n            public void Indent(string msg, string comment = null) { }\n            public void UnIndent(string msg = null, string comment = null) { }\n        }\n\n        const string MinerWarsWindowPrefix = \"MW_ID\";\n\n        static Dictionary<int, ITrace> m_traces;\n        static NullTrace m_nullTrace = new NullTrace();\n\n        public static void Init(InitTraceHandler handler)\n        {\n            InitInternal(handler);\n        }\n\n        [Conditional(\"DEBUG\"), Conditional(\"DEVELOP\")]\n        private static void InitInternal(InitTraceHandler handler)\n        {\n            m_traces = new Dictionary<int, ITrace>();\n\n            var processName = Process.GetCurrentProcess().ProcessName.Replace(\".vshost\", \"\");\n\n            foreach (var e in Enum.GetValues(typeof(TraceWindow)))\n            {\n                var name = ((TraceWindow)e == TraceWindow.Default) ? processName : (processName + \"_\" + e.ToString());\n\n                //var wnd = new WinTrace(String.Format(\"{0}_{1}\", MinerWarsWindowPrefix, name), name);\n                //wnd.ClearAll();\n\n                string id = String.Format(\"{0}_{1}\", MinerWarsWindowPrefix, name);\n                m_traces[(int)e] = handler(id, name);\n            }\n        }\n\n        [Conditional(\"DEBUG\"), Conditional(\"DEVELOP\")]\n        public static void Send(TraceWindow window, string msg, string comment = null)\n        {\n            GetTrace(window).Send(msg, comment);\n        }\n\n        [Conditional(\"DEBUG\"), Conditional(\"DEVELOP\")]\n        public static void SendWatch(string watchName, object watchValue, int depth = 1)\n        {\n            (m_traces.FirstOrDefault().Value ?? m_nullTrace).SendWatch(watchName, watchValue, depth);\n        }\n\n        [Conditional(\"DEBUG\"), Conditional(\"DEVELOP\")]\n        public static void Indent(TraceWindow window, string msg, string comment = null)\n        {\n            GetTrace(window).Indent(msg, comment);\n        }\n\n        [Conditional(\"DEBUG\"), Conditional(\"DEVELOP\")]\n        public static void UnIndent(TraceWindow window, string msg = null, string comment = null)\n        {\n            GetTrace(window).UnIndent(msg, comment);\n        }\n\n        public static ITrace GetTrace(TraceWindow window)\n        {\n            ITrace trace;\n            if (m_traces == null || !m_traces.TryGetValue((int)window, out trace))\n            {\n                trace = m_nullTrace;\n            }\n            return trace;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/Library.Trace/Library.Trace.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"4.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProductVersion>8.0.30703</ProductVersion>\n    <SchemaVersion>2.0</SchemaVersion>\n    <OutputType>Library</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>KeenSoftwareHouse.Library.Trace</RootNamespace>\n    <AssemblyName>Library.Trace</AssemblyName>\n    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>\n    <FileAlignment>512</FileAlignment>\n    <ProjectGuid>{8E36615C-ACDA-4002-BF65-8032577E754C}</ProjectGuid>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x86'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x86\\Debug\\</OutputPath>\n    <DefineConstants>TRACE;DEBUG</DefineConstants>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <ErrorReport>prompt</ErrorReport>\n    <CodeAnalysisIgnoreBuiltInRuleSets>true</CodeAnalysisIgnoreBuiltInRuleSets>\n    <CodeAnalysisIgnoreBuiltInRules>true</CodeAnalysisIgnoreBuiltInRules>\n    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x86'\">\n    <OutputPath>bin\\x86\\Release\\</OutputPath>\n    <DefineConstants>TRACE;SkipPostSharp</DefineConstants>\n    <Optimize>true</Optimize>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <ErrorReport>prompt</ErrorReport>\n    <CodeAnalysisIgnoreBuiltInRules>true</CodeAnalysisIgnoreBuiltInRules>\n    <CodeAnalysisFailOnMissingRules>false</CodeAnalysisFailOnMissingRules>\n    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>\n  </PropertyGroup>\n  <ItemGroup>\n    <Reference Include=\"System\" />\n    <Reference Include=\"TraceTool\">\n      <HintPath>..\\..\\3rd\\TraceTool\\TraceTool.dll</HintPath>\n    </Reference>\n  </ItemGroup>\n  <ItemGroup>\n    <Compile Include=\"Trace.cs\" />\n    <Compile Include=\"TraceListener.cs\" />\n    <Compile Include=\"Watch.cs\" />\n    <Compile Include=\"WintraceWrapper.cs\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ProjectReference Include=\"..\\Library\\Library.csproj\">\n      <Project>{26FE022E-42AB-40BE-BA9D-97CBE34E7D99}</Project>\n      <Name>Library</Name>\n    </ProjectReference>\n  </ItemGroup>\n  <Import Project=\"$(MSBuildToolsPath)\\Microsoft.CSharp.targets\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "Sources/Library.Trace/Trace.cs",
    "content": "﻿using System.Diagnostics;\nusing System;\n\n#if DEBUG || DEVELOP\n    using TraceTool;\n#endif\n\nnamespace KeenSoftwareHouse.Library.Trace\n{   \n    /// <summary>\n    /// Wrapper around independent trace service.\n    /// </summary>\n    public static class Trace\n    {\n        /// <summary>\n        /// Gets or sets the default.\n        /// </summary>\n        /// <value>\n        /// The default.\n        /// </value>\n#if DEBUG || DEVELOP \n        internal static WinTrace Default \n        { \n        get; \n        set; \n        }\n#endif\n\n        /// <summary>\n        /// Initializes a new instance of the <see cref=\"T:System.Object\"/> class.\n        /// </summary>\n        static Trace()\n        {\n#if DEBUG || DEVELOP\n            TTrace.Options.SendMode = SendMode.WinMsg;\n            TTrace.Options.SendInherited = true;\n\n            var processName = Process.GetCurrentProcess().ProcessName;\n\n            Default = Default ?? new WinTrace(processName, processName);\n            Default.ClearAll();\n#endif\n        }\n    }\n}"
  },
  {
    "path": "Sources/Library.Trace/TraceListener.cs",
    "content": "﻿using System.Diagnostics;\n#if DEBUG || DEVELOP\n    using TraceTool;\n#endif\n\nnamespace KeenSoftwareHouse.Library.Trace\n{\n    \n\n    /// <summary>\n    /// Advanced TTrace listener with watches and flush support.\n    /// </summary>\n    public class TraceListener : \n#if DEBUG || DEVELOP\n         TTraceListener\n#else\n        System.Diagnostics.TraceListener \n#endif\n\n    {\n        /// <summary>\n        /// Releases unmanaged resources and performs other cleanup operations before the\n        /// <see cref=\"TraceListener\"/> is reclaimed by garbage collection.\n        /// </summary>\n        ~TraceListener()\n        {\n            Dispose(true);\n        }\n\n        #region Overrides of TTraceListener\n\n        /// <summary>\n        /// Releases the unmanaged resources used by the <see cref=\"T:System.Diagnostics.TraceListener\"/> and optionally releases the managed resources.\n        /// </summary>\n        /// <param name=\"disposing\">true to release both managed and unmanaged resources; false to release only unmanaged resources.</param>\n        protected \n#if DEBUG || DEVELOP\n            override \n#endif\n            void Dispose(bool disposing)\n        {\n            Flush();\n\n#if DEBUG || DEVELOP\n            base.Dispose(disposing);\n#endif\n        }\n\n        /// <summary>\n        /// When overridden in a derived class, closes the output stream so it no longer receives tracing or debugging output.\n        /// </summary>\n        public \n#if DEBUG || DEVELOP\n            override \n#endif\n            void Close()\n        {\n#if DEBUG || DEVELOP\n            TTrace.Flush();\n            TTrace.Stop();\n#endif\n        }\n\n        /// <summary>\n        /// When overridden in a derived class, flushes the output buffer.\n        /// </summary>\n        public \n#if DEBUG || DEVELOP\n            override \n#endif\n            void Flush()\n        {\n#if DEBUG || DEVELOP\n            TTrace.Flush();\n#endif\n        }\n\n        /// <summary>\n        /// Emits an error message to the listener you create when you implement the <see cref=\"T:System.Diagnostics.TraceListener\"/> class.\n        /// </summary>\n        /// <param name=\"message\">A message to emit.</param>\n        public \n#if DEBUG || DEVELOP\n            override \n#endif\n            void Fail(string message)\n        {\n#if DEBUG || DEVELOP\n            Trace.Default.Error.Send(message);\n#endif\n        }\n\n        /// <summary>\n        /// Emits an error message and a detailed error message to the listener you create when you implement the <see cref=\"T:System.Diagnostics.TraceListener\"/> class.\n        /// </summary>\n        /// <param name=\"message\">A message to emit.</param>\n        /// <param name=\"detailMessage\">A detailed message to emit.</param>\n        public \n#if DEBUG || DEVELOP\n            override \n#endif\n            void Fail(string message, string detailMessage)\n        {\n#if DEBUG || DEVELOP\n            Trace.Default.Send(message, detailMessage);\n#endif\n        }\n\n        /// <summary>\n        /// Writes the specified message.\n        /// </summary>\n        /// <param name=\"message\">The message.</param>\n        public override void Write(string message)\n        {\n            WriteLine(message);\n        }\n\n        /// <summary>\n        /// Writes the value of the object's <see cref=\"M:System.Object.ToString\"/> method to the listener you create when you implement the <see cref=\"T:System.Diagnostics.TraceListener\"/> class.\n        /// </summary>\n        /// <param name=\"o\">An <see cref=\"T:System.Object\"/> whose fully qualified class name you want to write.</param>\n        public\n#if DEBUG || DEVELOP\n            override\n#endif\n void Write(object o)\n        {\n            WriteLine(o);\n        }\n\n        /// <summary>\n        /// Writes a category name and a message to the listener you create when you implement the <see cref=\"T:System.Diagnostics.TraceListener\"/> class.\n        /// </summary>\n        /// <param name=\"message\">A message to write.</param>\n        /// <param name=\"category\">A category name used to organize the output.</param>\n        public\n#if DEBUG || DEVELOP\n            override\n#endif\n \n            void Write(string message, string category)\n        {\n            WriteLine(message, category);\n        }\n\n        /// <summary>\n        /// Writes a category name and the value of the object's <see cref=\"M:System.Object.ToString\"/> method to the listener you create when you implement the <see cref=\"T:System.Diagnostics.TraceListener\"/> class.\n        /// </summary>\n        /// <param name=\"o\">An <see cref=\"T:System.Object\"/> whose fully qualified class name you want to write.</param>\n        /// <param name=\"category\">A category name used to organize the output.</param>\n        public\n#if DEBUG || DEVELOP\n            override\n#endif\n void Write(object o, string category)\n        {\n            WriteLine(o, category);\n        }\n\n        /// <summary>\n        /// Writes the line.\n        /// </summary>\n        /// <param name=\"message\">The message.</param>\n        public override void WriteLine(string message)\n        {\n#if DEBUG || DEVELOP\n            if (message.StartsWith(\"W:\"))\n            {\n                Trace.Default.Warning.Send(message.Substring(2));\n            }\n            else if (message.StartsWith(\"E:\"))\n            {\n                Trace.Default.Error.Send(message.Substring(2));\n            }\n            else\n            {\n                Trace.Default.Debug.Send(message);\n            }\n#endif\n        }\n\n        /// <summary>\n        /// Writes the value of the object's <see cref=\"M:System.Object.ToString\"/> method to the listener you create when you implement the <see cref=\"T:System.Diagnostics.TraceListener\"/> class, followed by a line terminator.\n        /// </summary>\n        /// <param name=\"o\">An <see cref=\"T:System.Object\"/> whose fully qualified class name you want to write.</param>\n        public\n#if DEBUG || DEVELOP\n            override\n#endif\n void WriteLine(object o)\n        {\n#if DEBUG || DEVELOP\n            Trace.Default.Debug.SendObject(string.Format(\"{0}:{1}\", o.GetType().Name, o.GetHashCode()), o);\n#endif\n        }\n\n        /// <summary>\n        /// Writes a category name and a message to the listener you create when you implement the <see cref=\"T:System.Diagnostics.TraceListener\"/> class, followed by a line terminator.\n        /// </summary>\n        /// <param name=\"message\">A message to write.</param>\n        /// <param name=\"category\">A category name used to organize the output.</param>\n        public\n#if DEBUG || DEVELOP\n            override\n#endif\n \n            void WriteLine(string message, string category)\n        {\n#if DEBUG || DEVELOP\n            if (message.StartsWith(\"W:\"))\n            {\n                Trace.Default.Warning.Send(category, message.Substring(2));\n            }\n            else if (message.StartsWith(\"E:\"))\n            {\n                Trace.Default.Error.Send(category, message.Substring(2));\n            }\n            else\n            {\n                Trace.Default.Debug.Send(category, message);\n            }\n#endif\n        }\n\n        /// <summary>\n        /// Writes a category name and the value of the object's <see cref=\"M:System.Object.ToString\"/> method to the listener you create when you implement the <see cref=\"T:System.Diagnostics.TraceListener\"/> class, followed by a line terminator.\n        /// </summary>\n        /// <param name=\"o\">An <see cref=\"T:System.Object\"/> whose fully qualified class name you want to write.</param>\n        /// <param name=\"category\">A category name used to organize the output.</param>\n        public\n#if DEBUG || DEVELOP\n            override\n#endif\n void WriteLine(object o, string category)\n        {\n#if DEBUG || DEVELOP\n            Trace.Default.Debug.SendObject(category, o);\n#endif\n        }\n\n        #endregion\n    }\n}"
  },
  {
    "path": "Sources/Library.Trace/Watch.cs",
    "content": "﻿using System.Diagnostics;\n\n#if DEBUG || DEVELOP\n    using TraceTool;\n#endif\n\nnamespace KeenSoftwareHouse.Library.Trace\n{\n    /// <summary>\n    /// Allows managing watch windows.\n    /// </summary>\n    public static class Watch\n    {\n        /// <summary>\n        /// Add object to wach window.\n        /// </summary>\n        /// <param name=\"watchName\">Name of the watch.</param>\n        /// <param name=\"watchValue\">The watch value.</param>\n        /// <param name=\"depth\">The depth.</param>\n        [Conditional(\"DEBUG\"), Conditional(\"DEVELOP\")]\n        public static void Send(string watchName, object watchValue, int depth = 1)\n        {\n#if DEBUG || DEVELOP\n            lock (TTrace.Watches)\n            {\n                int oldDepth = TTrace.Options.ObjectTreeDepth;\n\n                TTrace.Options.ObjectTreeDepth = depth;\n                TTrace.Watches.Send(watchName, watchValue);\n                TTrace.Options.ObjectTreeDepth = oldDepth;\n            }\n#endif\n        }\n    }\n}"
  },
  {
    "path": "Sources/Library.Trace/WintraceWrapper.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing TraceTool;\n\nnamespace KeenSoftwareHouse.Library.Trace\n{\n    public class WintraceWrapper: ITrace\n    {\n        WinTrace m_trace;\n\n        public WintraceWrapper(string id, string name)\n        {\n            m_trace = new WinTrace(id, name);\n            m_trace.ClearAll();\n        }\n\n        public void Send(string msg, string comment = null)\n        {\n            m_trace.Debug.Send(msg, comment);\n        }\n\n        public void Indent(string msg, string comment = null)\n        {\n            m_trace.Indent(msg, comment);\n        }\n\n        public void UnIndent(string msg = null, string comment = null)\n        {\n            m_trace.UnIndent(msg, comment);\n        }\n\n        public void SendWatch(string watchName, object watchValue, int depth = 1)\n        {\n            lock (TTrace.Watches)\n            {\n                int oldDepth = TTrace.Options.ObjectTreeDepth;\n\n                TTrace.Options.ObjectTreeDepth = depth;\n                TTrace.Watches.Send(watchName, watchValue);\n                TTrace.Options.ObjectTreeDepth = oldDepth;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/App/MyEditorGameBase.cs",
    "content": "using System;\nusing System.Collections.Generic;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.TransparentGeometry.Particles;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.Textures;\n\nusing SharpDX.Toolkit;\nusing MinerWars.GameServices;\n\nnamespace MinerWars.AppCode.ExternalEditor\n{\n\n    public class MyEditorBase\n    {\n        internal static MyMinerGame Static;\n\n        public static bool IsEditorActive = false;\n\n        public void Run(ServiceContainer services)\n        {\n            //MyMinerGame.OnGameInit += new OnInitEvent(Initialize);\n            //MyMinerGame.OnGameUpdate += new OnDrawEvent(Update);\n            //MyMinerGame.OnGameDraw += new OnDrawEvent(Draw);\n            MyGuiScreenGamePlay.OnGameLoaded += new EventHandler(GameLoaded);\n            MyParticlesManager.OnDraw += new EventHandler(EffectsDraw);\n\n            Static = new MyMinerGame(services);\n            Static.Run();\n        }\n\n        public virtual void Initialize(SharpDX.Toolkit.Game game)\n        {\n        }\n\n        public virtual void Update(GameTime gt)\n        {\n        }\n\n        public virtual void Draw(GameTime gt)\n        {\n            MinerWars.AppCode.Game.HUD.MyHudNotification.ClearAllNotifications();\n        }\n\n        public virtual void GameLoaded(object sender, EventArgs e)\n        {\n    }\n\n\n        ////\n\n        public MyParticleEffect CreateParticle(int id)\n        {\n            //MyParticleEffect effect = Static.GraphicsManager.ParticlesManager.CreateParticleEffect(id);\n            MyParticleEffect effect = MyParticlesLibrary.CreateParticleEffect(id);\n            return effect;\n}\n\n        public void RemoveParticle(MyParticleEffect effect)\n        {\n            effect.Clear();\n            MyParticlesLibrary.RemoveParticleEffectInstance(effect);\n        }\n\n        public Matrix GetSpectatorMatrix()\n        {\n            Matrix worldMatrix = Matrix.Invert(MySpectator.GetViewMatrix());\n            return worldMatrix;\n        }\n\n        public MyParticleGeneration AllocateGeneration()\n        {\n            return MyParticlesManager.GenerationsPool.Allocate();\n        }\n\n        //\n        public MyParticleEffect CreateLibraryEffect()\n        {\n            MyParticleEffect effect = MyParticlesManager.EffectsPool.Allocate();\n            return effect;\n        }\n\n        public void AddParticleToLibrary(MyParticleEffect effect)\n        {\n            MyParticlesLibrary.AddParticleEffect(effect);\n        }\n\n        public void UpdateParticleLibraryID(int ID)\n        {\n            MyParticlesLibrary.UpdateParticleEffectID(ID);\n        }\n\n        public void RemoveParticleFromLibrary(int ID)\n        {\n            MyParticlesLibrary.RemoveParticleEffect(ID);\n        }\n\n        public IEnumerable<MyParticleEffect> GetLibraryEffects()\n        {\n            return MyParticlesLibrary.GetParticleEffects();\n        }\n\n\n        public void SaveParticlesLibrary(string file)\n        {\n            MyParticlesLibrary.Serialize(file);\n        }\n\n        public void LoadParticlesLibrary(string file)\n        {\n            MyParticlesLibrary.Deserialize(file);\n        }\n\n        public float GetStepInSeconds()\n        {\n            return MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS;\n        }\n\n        public void UpdateScreenSize(int width, int height)\n        {\n            //MinerWars.AppCode.Game.VideoMode.MyVideoModeManager.BeginChangeVideoMode(true, new Game.VideoMode.MyVideoModeEx(width, height, height / (float)width), false,\n            //    false, MyConfig.HardwareCursor, MyConfig.RenderQuality, MyConfig.FieldOfView, false, null, null);\n            //MinerWars.AppCode.Game.VideoMode.MyVideoModeManager.ApplyChanges();\n        }\n\n        public void ReloadTextures()\n        {\n            MyTextureManager.ReloadTextures();\n        }\n\n        public virtual void EffectsDraw(object sender, EventArgs e)\n        {\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/App/MyMinerGame.cs",
    "content": "#region Using\n\nusing System;\nusing System.Collections.Concurrent;\nusing System.Diagnostics;\nusing System.Reflection;\nusing System.Security.Principal;\nusing System.Threading;\nusing SysUtils;\nusing SysUtils.Utils;\nusing ParallelTasks;\n\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.AppCode.Game.Audio.Dialogues;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Entities.FoundationFactory;\nusing MinerWars.AppCode.Game.Gameplay;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Managers;\nusing MinerWars.AppCode.Game.Models;\nusing MinerWars.AppCode.Game.Prefabs;\nusing MinerWars.AppCode.Game.Render;\nusing MinerWars.AppCode.Game.Sessions;\nusing MinerWars.AppCode.Game.Sessions.Multiplayer;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.AppCode.Game.TransparentGeometry.Particles;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.VideoMode;\nusing MinerWars.AppCode.Game.Voxels;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.AppCode.Networking;\nusing MinerWars.AppCode.Networking.SectorService;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.Utils;\n\n//using MinerWarsMath;\n//using MinerWarsMath.Graphics;\n\nusing SharpDX;\nusing SharpDX.Toolkit;\nusing SharpDX.Direct3D;\nusing SharpDX.Direct3D9;\nusing System.Drawing;\nusing SharpDX.Toolkit.Graphics;\nusing MinerWars.AppCode.Toolkit.Input;\nusing System.IO;\nusing MinerWars.GameServices;\n\n#endregion\n\nnamespace MinerWars.AppCode.App\n{\n    public delegate void OnInitEvent(SharpDX.Toolkit.Game game);\n    public delegate void OnDrawEvent(GameTime gt);\n\n    public enum SetDepthTargetEnum\n    {\n        NoChange,\n        RestoreDefault,\n    }\n\n    public class MyMinerGame : SharpDX.Toolkit.Game\n    {\n        public const string ContentDir = \"Content\";\n\n        public static MyMinerGame Static;\n        public static MyMwcVector2Int ScreenSize;\n        public static MyMwcVector2Int ScreenSizeHalf;\n        public static bool IsGameReady = true;\n        public static bool IsDeviceResetted = false;\n\n        //events for external editors/scripts\n        internal static event OnInitEvent OnGameInit;\n        internal static event OnDrawEvent OnGameUpdate;\n        internal static event OnDrawEvent OnGameDraw;\n\n        SharpDX.Direct3D9.Font m_debugFont;\n\n        public string RootDirectory;\n        public string RootDirectoryDebug;\n        public string RootDirectoryEffects;\n        public static Surface DefaultSurface { get; private set; }\n        public static Surface DefaultDepth { get; private set; }\n\n        public static ServiceContainer Services { get; private set; }\n\n        //  Total GAME-PLAY time in milliseconds. It doesn't change while game is paused.  Use it only for game-play \n        //  stuff (e.g. game logic, particles, etc). Do not use it for GUI or not game-play stuff.\n        public static int TotalGamePlayTimeInMilliseconds;\n        \n        //  Total time independent of whether game is paused. It increments all the time, no matter if game is paused.\n        public static int TotalTimeInMilliseconds;\n\n        //  Helpers for knowing when pauses started and total time spent in pause mode (even if there were many pauses)\n        static int m_pauseStartTimeInMilliseconds;\n        static int m_totalPauseTimeInMilliseconds = 0;\n        static bool m_pauseActive;\n\n        public static int NumberOfCores;\n\n        private bool m_isGraphicsSupported;\n\n        private static string m_gameDir;\n\n        // Properties\n        public static string GameDir\n        {\n            get\n            {\n                if (m_gameDir == null)\n                {\n                    m_gameDir = Services.AppDir;\n                }\n                return m_gameDir;\n            }\n        }\n\n        protected override void EndRun()\n        {\n            base.EndRun();\n\n#if DEBUG\n            var o = SharpDX.Diagnostics.ObjectTracker.FindActiveObjects();\n            System.Diagnostics.Debug.Assert(o.Count == 0, \"Unreleased DX objects!\");\n            Console.WriteLine(SharpDX.Diagnostics.ObjectTracker.ReportActiveObjects());\n#endif\n        }\n\n        \n        /// <summary>\n        /// Queue of actions to be invoked on xna game thread.\n        /// </summary>\n        private readonly ConcurrentQueue<Tuple<ManualResetEvent,Action>> m_InvokeQueue;\n\n        /// <summary>\n        /// Main xna init thread.\n        /// </summary>\n        private readonly Thread m_MainThread;\n\n        #region Properties\n\n        public static MyCustomGraphicsDeviceManagerDX GraphicsDeviceManager { get; private set; }\n        \n        public static bool IsGpuSupported()\n        {\n            foreach (int deviceId in MyMwcFinalBuildConstants.UNSUPPORTED_GPU_DEVICE_IDS)\n            {\n                //if (GraphicsDeviceManager.GraphicsDevice.id .Adapter.Description.DeviceId == deviceId)\n                {\n                  //  return false;\n                }\n            }\n            return true;\n        }\n\n        /// <summary>\n        /// Gets a value indicating whether [invoke is required].\n        /// </summary>\n        /// <value>\n        ///   <c>true</c> if [invoke required]; otherwise, <c>false</c>.\n        /// </value>\n        public bool InvokeRequired\n        {\n            get\n            {\n                return Thread.CurrentThread != m_MainThread;\n            }\n        }\n\n        #endregion\n\n        public MyMinerGame(ServiceContainer services)\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyMinerGame()::constructor\");\n            MyMwcLog.WriteLine(\"MyMinerGame.Constructor() - START\");\n            MyMwcLog.IncreaseIndent();\n\n            Services = services;\n\n            // we want check objectbuilders, prefab's configurations, gameplay constants and building specifications\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Checks\");\n            MyMwcObjectBuilder_Base.Check();\n            MyPrefabConstants.Check();\n            MyGameplayConstants.Check();\n            MyBuildingSpecifications.Check();\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"Preallocate\");\n\n            Preallocate();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"IsAdmin\");\n            WindowsIdentity windowsIdentity = WindowsIdentity.GetCurrent();\n            WindowsPrincipal windowsPrincipal = new WindowsPrincipal(windowsIdentity);\n            bool IsAdmin = windowsPrincipal.IsInRole(WindowsBuiltInRole.Administrator);\n            MyMwcLog.WriteLine(\"IsAdmin \" + IsAdmin.ToString());\n            MyMwcLog.WriteLine(\"Game dir: \" + GameDir);\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"MyCustomGraphicsDeviceManagerDX\");\n#if !DEBUG\n            try\n            {\n#endif\n\n            this.Exiting += MyMinerGame_Exiting;\n            this.Activated += MyMinerGame_OnActivated;\n            this.Deactivated += MyMinerGame_OnDeactivated;\n            this.m_InvokeQueue = new ConcurrentQueue<Tuple<ManualResetEvent, Action>>();\n            this.m_MainThread = Thread.CurrentThread;\n\n            GraphicsDeviceManager = new MyCustomGraphicsDeviceManagerDX(this);\n\n            m_isGraphicsSupported = GraphicsDeviceManager.ChangeProfileSupport();\n            m_isGraphicsSupported = true;\n\n            if (m_isGraphicsSupported)\n            {\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"MyVideoModeManager.HookEventHandlers\");\n\n                MyVideoModeManager.HookEventHandlers();\n                \n                //Content = new MyCustomContentManager(Services, ContentDir);\n              //  Content = new SharpDX.Toolkit.Content.ContentManager(Services);\n\n                RootDirectory = Path.Combine(GameDir, \"Content\");\n                RootDirectoryDebug =  Path.GetFullPath(System.IO.Path.Combine(GameDir, \"..\\\\..\\\\..\\\\Content\"));\n\n                RootDirectoryEffects = RootDirectory;\n\n                Static = this;\n\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"InitNumberOfCores\");\n                InitNumberOfCores();\n\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"MyVideoModeManager.LogApplicationInformation\");\n\n                \n                MyVideoModeManager.LogApplicationInformation();\n\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"MyVideoModeManager.LogInformation\");\n\n                MyVideoModeManager.LogInformation();\n\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"MyVideoModeManager.LogEnvironmentInformation\");\n\n                MyVideoModeManager.LogEnvironmentInformation();\n\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"MyPlugins.LoadContent\");\n\n                MyPlugins.LoadContent();\n\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"MyConfig.Load\");\n\n                MyConfig.Load();\n\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"MyMath.Init\");\n\n                MyMath.Init();\n\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"MyTextsWrapper.Init\");\n\n                MyTextsWrapper.Init();\n\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"MyDialoguesWrapper.Init\");\n\n                MyDialoguesWrapper.Init();\n\n                //  If I don't set TargetElapsedTime, default value will be used, which is 60 times per second, and it will be more precise than if I calculate \n                //  it like below - SO I MUST BE DOING THE WRONG CALCULATION !!!\n                //  We use fixed timestep. Update() is called at this precise timesteps. If Update or Draw takes more time, Update will be called more time. Draw is called only after Update.\n#if RENDER_PROFILING || GPU_PROFILING\n                IsFixedTimeStep = false;\n                MyMinerGame.GraphicsDeviceManager.SynchronizeWithVerticalRetrace = false;\n#else\n                IsFixedTimeStep = MyFakes.FIXED_TIMESTEP;\n#endif\n\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"InitMultithreading\");\n\n            InitMultithreading();\n#if !DEBUG\n            }\n            catch (Exception ex)\n            {\n                //  We are catching exceptions in constructor, because if error occures here, it app will start unloading\n                //  so we skip to UnloadContent and there we will get another exception (because app wasn't really loaded when unload started)\n                //  So we want original exception in log.\n                MyMwcLog.WriteLine(ex);\n                throw;\n            }\n#endif\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyMinerGame.Constructor() - END\");\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        static void InitNumberOfCores()\n        {\n            //  Get number of cores of local machine. As I don't know what values it can return, I clamp it to <1..4> (min 1 core, max 4 cores). That are tested values. I can't test eight cores...\n            NumberOfCores = Environment.ProcessorCount;\n            MyMwcLog.WriteLine(\"Found processor count: \" + NumberOfCores);       //  What we found\n            NumberOfCores = MyMwcUtils.GetClampInt(NumberOfCores, 1, 16);\n            MyMwcLog.WriteLine(\"Using processor count: \" + NumberOfCores);       //  What are we really going use\n        }\n\n        /// <summary>\n        /// Inits the multithreading.\n        /// </summary>\n        private void InitMultithreading()\n        {\n            Parallel.Scheduler = new WorkStealingScheduler(NumberOfCores);\n            //Parallel.Scheduler = new SimpleScheduler(NumberOfCores);\n        }\n\n        /// <summary>\n        /// Inicializes the quick launche.\n        /// </summary>\n        private void InitQuickLaunch()\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyMinerGame()::InitQuickLaunch\");\n\n            MyMwcQuickLaunchType? quickLaunch = MyMwcFinalBuildConstants.QUICK_LAUNCH;\n\n#if AUTOBUILD\n            quickLaunch = MyMwcQuickLaunchType.NEW_STORY;\n#endif\n            //  This will work as auto-login, but it will not depend on auto-login config variable\n            //  It just always tries to auto-login. If auto-login fails, normal login screen will be displayed.\n            string username = MyConfig.Username;\n            string password = MyConfig.Password;\n\n            if (quickLaunch != null)\n            {                \n                switch (quickLaunch.Value)\n                {\n                    case MyMwcQuickLaunchType.EDITOR_SANDBOX:\n                        {\n                            MyGuiManager.AddScreen(new MyGuiScreenLoginProgress(username, password,\n                                                                new MyGuiScreenStartQuickLaunch(\n                                                                    quickLaunch.Value, MyTextsWrapperEnum.StartEditorInProgressPleaseWait), null));\n                        }\n                        break;\n                    case MyMwcQuickLaunchType.LAST_SANDBOX:\n                    case MyMwcQuickLaunchType.NEW_STORY:\n                        {\n                            MyGuiManager.AddScreen(new MyGuiScreenLoginProgress(username, password,\n                                                                new MyGuiScreenStartQuickLaunch(\n                                                                    quickLaunch.Value, MyTextsWrapperEnum.StartGameInProgressPleaseWait), null));\n\n                        }\n                        break;\n                    case MyMwcQuickLaunchType.LOAD_CHECKPOINT:\n                        {\n                            MyGuiManager.AddScreen(new MyGuiScreenLoginProgress(username, password,\n                                                                new MyGuiScreenStartQuickLaunch(\n                                                                    quickLaunch.Value, MyTextsWrapperEnum.StartGameInProgressPleaseWait), null));\n                        }\n                        break;\n                    case MyMwcQuickLaunchType.SANDBOX_RANDOM:\n                        {\n                            MyGuiManager.AddScreen(new MyGuiScreenLoginProgress(username, password,\n                                                                new MyGuiScreenStartQuickLaunch(\n                                                                    quickLaunch.Value, MyTextsWrapperEnum.StartGameInProgressPleaseWait), null));\n                        }\n                        break;\n                    default:\n                        {\n                            throw new MyMwcExceptionApplicationShouldNotGetHere();\n                        }\n                }\n                \n            }\n            else\n            {\n                if (MyFakes.MWBUILDER)\n                {\n                    MyGuiManager.AddScreen(new MyGuiScreenLoginProgress(username, password,\n                                    new MyGuiScreenStartQuickLaunch(\n                                        MyMwcQuickLaunchType.EDITOR_SANDBOX, MyTextsWrapperEnum.StartEditorInProgressPleaseWait), null));\n                }\n                else\n                {\n                    if (MyFakes.ENABLE_LOGOS)\n                    {\n                        MyGuiManager.BackToIntroLogos(new Action(AfterLogos));\n                    }\n                    else\n                    {\n                        AfterLogos();\n                    }\n                }\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        public static void AfterLogos()\n        {\n            MyGuiManager.BackToMainMenu();\n\n            if (MySteam.IsActive)\n            {\n                MyGuiScreenMainMenu.AddLoginScreenDrmFree((MyGuiScreenBase)null);\n            }\n            else\n            {\n                MyGuiScreenMainMenu.AddAutologinScreen();\n            }\n        }\n\n        public bool IsGraphicsSupported()\n        {\n            return m_isGraphicsSupported;\n        }\n\n        //  Allows the game to perform any initialization it needs to before starting to run.\n        //  This is where it can query for any required services and load any non-graphic\n        //  related content.  Calling base.Initialize will enumerate through any components\n        //  and initialize them as well.\n        protected override void Initialize()\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyMinerGame::Initialize\");\n            MyMwcLog.WriteLine(\"MyMinerGame.Initialize() - START\");\n            MyMwcLog.IncreaseIndent();\n                   \n            Window.NativeWindow.Text = \"MinerWars 2081\";\n            ((System.Windows.Forms.Form)Window.NativeWindow).Icon = new System.Drawing.Icon(\"MinerWars.ico\");\n\n            if (OnGameInit != null)\n                OnGameInit(this);\n\n            MyVideoModeManager.Initialize();\n\n#if !DEBUG\n            try\n            {\n#endif\n                // Load data\n                LoadData();\n\n                // Load content\n                base.Initialize();\n\n                InitQuickLaunch();\n                \n#if !DEBUG\n            }\n            catch (Exception ex)\n            {\n                //  We are catching exceptions in LoadContent, because if error occures here, it app will start unloading\n                //  so we skip to UnloadContent and there we will get another exception (because app wasn't really loaded when unload started)\n                //  So we want original exception in log.\n                MyMwcLog.WriteLine(ex);\n                throw;\n            }\n#endif\n            \n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyMinerGame.Initialize() - END\");\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        public static void UpdateScreenSize()\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyMinerGame::UpdateScreenSize\");\n\n            ScreenSize = new MyMwcVector2Int((int)MyMinerGame.Static.GraphicsDevice.Viewport.Width, (int)MyMinerGame.Static.GraphicsDevice.Viewport.Height);\n            ScreenSizeHalf = new MyMwcVector2Int(ScreenSize.X / 2, ScreenSize.Y / 2);\n\n            if (MyGuiManager.GetScreenshot() != null)\n            {\n                ScreenSize.X = (int)(ScreenSize.X * MyGuiManager.GetScreenshot().SizeMultiplier);\n                ScreenSize.Y = (int)(ScreenSize.Y * MyGuiManager.GetScreenshot().SizeMultiplier);\n                ScreenSizeHalf = new MyMwcVector2Int(ScreenSize.X / 2, ScreenSize.Y / 2);\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        /// <summary>\n        /// Decrease fragmentation of the Large Object Heap by forcing static class constructors to run.\n        /// </summary>\n        private static void Preallocate()\n        {\n            Type[] typesToForceStaticCtor =\n            {\n                typeof(MyEntities),\n                typeof(MyMwcObjectBuilder_Base),\n                typeof(MyPrefabConstants),\n                typeof(MyGameplayConstants),\n                typeof(MyBuildingSpecifications),\n                typeof(MyVoxelCacheCellRenderHelper),\n                typeof(MyTransparentGeometry),\n                typeof(MyExplosionDebrisModel),\n                typeof(Physics.MyContactInfoCache),\n                typeof(Physics.MyTriangleCache),\n                typeof(Physics.MyContactConstraintModule),\n                typeof(Physics.MySensorModule),\n                typeof(Physics.MySensorInteractionModule),\n                typeof(Physics.MyRBInteractionModule),\n                typeof(Physics.MyRigidBodyModule),\n            };\n            foreach (var type in typesToForceStaticCtor)\n            {\n                // this won't call the static ctor if it was already called\n                System.Runtime.CompilerServices.RuntimeHelpers.RunClassConstructor(type.TypeHandle);\n            }\n        }\n\n        /// <summary>\n        /// Loads the data.\n        /// </summary>\n        private void LoadData()\n        {\n            int block1 = -1;\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyMinerGame::LoadData\", ref block1);\n            MyMwcLog.WriteLine(\"MyMinerGame.LoadData() - START\");\n            MyMwcLog.IncreaseIndent();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyPerformanceTimer.LoadData\");\n            MyPerformanceTimer.LoadData();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"MyVoxelFiles.LoadData\");\n            MyVoxelFiles.LoadData();            \n\t\t\t// Not using now\n            //MyClientServer.LoadData();\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"MyAudio.LoadData\");\n            MyAudio.LoadData();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"MyGuiManager.LoadData\");\n            MyGuiManager.LoadData();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"MyGameplayCheats.LoadData\");\n            MyGameplayCheats.LoadData();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyMinerGame.LoadData() - END\");\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock(block1);\n        }\n\n\n        /// <summary>\n        /// Unloads the data.\n        /// </summary>\n        private void UnloadData()\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyMinerGame::UnloadData\");\n            MyMwcLog.WriteLine(\"MyMinerGame.UnloadData() - START\");\n            MyMwcLog.IncreaseIndent();\n\n            // TODO: Unload data probably not necessery because all data are loaded at start and dies at the end. No partial unload.\n            \n            //  We must unload XACT sounds here, not in the background thread, because on Windows XP every XACT sound loaded in\n            //  not-main thread is then not player (I can't hear it).\n            MyAudio.UnloadData();\n\n            MyGameplayCheats.UnloadData();\n\n\t\t\t// Not using now\n            //MyClientServer.UnloadData();\n            MyPerformanceTimer.UnloadData();\n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyMinerGame.UnloadData() - END\");\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        /// <summary>\n        /// Load graphics resources content.\n        /// </summary>\n        public override void LoadContent()\n        {\n            \n\n            int block1 = -1;\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyMinerGame::LoadContent\", ref block1);\n            base.LoadContent();\n                                  \n            DefaultSurface = MyMinerGame.Static.GraphicsDevice.GetRenderTarget(0);\n            DefaultSurface.DebugName = \"DefaultSurface\";\n            DefaultDepth = MyMinerGame.Static.GraphicsDevice.DepthStencilSurface;\n            DefaultDepth.DebugName = \"DefaultDepth\";\n                                    \n            MyMwcLog.WriteLine(\"MyMinerGame.LoadContent() - START\");\n            MyMwcLog.IncreaseIndent();\n            \n            MyVideoModeManager.UpdateScreenSize();\n\n            System.Drawing.Font systemfont = new System.Drawing.Font(\"Tahoma\", 12f, FontStyle.Regular);\n            m_debugFont = new SharpDX.Direct3D9.Font(GraphicsDevice, systemfont);\n\n            // GUI\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyGuiManager.LoadContent()\"); \n            MyGuiManager.LoadContent();\n\n            // Models\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"MyModels.LoadContent()\");\n            MyModels.LoadContent();\n\n            // Render\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"MyRender.LoadContent();\");\n            MyRender.LoadContent();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"MyDebugDraw.LoadContent();\");\n            MyDebugDraw.LoadContent();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"MyDebugDrawCachedLines.LoadContent()\");\n            MyDebugDrawCachedLines.LoadContent();\n\n              \n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"MySunGlare.LoadContent()\");\n            MySunGlare.LoadContent();\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n      \n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyMinerGame.LoadContent() - END\");\n                  \n            GC.Collect();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock(block1);\n        }\n\n        /// <summary>\n        /// Called when graphics resources need to be unloaded. Override this method to unload any game-specific graphics resources.\n        /// </summary>\n        public override void UnloadContent()\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyMinerGame::UnloadContent\");\n            MyMwcLog.WriteLine(\"MyMinerGame.UnloadContent() - START\");\n            MyMwcLog.IncreaseIndent();\n\n            if (m_debugFont != null)\n            {\n                m_debugFont.Dispose();\n                m_debugFont = null;\n            }\n                     \n            if (DefaultSurface != null)\n            {\n                DefaultSurface.Dispose();\n                DefaultSurface = null;\n            }\n            if (DefaultDepth != null)\n            {\n                DefaultDepth.Dispose();\n                DefaultDepth = null;\n            }      \n\n            // GUI\n            MyGuiManager.UnloadContent();\n\n            MyRender.UnloadContent();\n\n            MyTextureManager.UnloadContent();\n            MyModels.UnloadContent();\n\n            // Global content\n            //Content.Unload();\n\n            // Render\n            MySunGlare.UnloadContent();\n\n            MyDebugDrawCachedLines.UnloadContent();\n            MyDebugDraw.UnloadContent();\n\n            //MyRender.UnloadContent(); //it is unloaded in gui gameplay screen\n            \n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyMinerGame.UnloadContent() - END\");\n\n            GraphicsDevice.SetStreamSource(0, null, 0, 0);\n            GraphicsDevice.Indices = null;\n            GraphicsDevice.VertexDeclaration = null;\n            GraphicsDevice.PixelShader = null;\n            GraphicsDevice.VertexShader = null;\n            for (int i = 0; i < 16; i++)\n            {\n                GraphicsDevice.SetTexture(i, null);\n            }\n\n            base.UnloadContent();\n\n            GC.Collect();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n     \n        static void UpdateTimes(GameTime gameTime)\n        {\n            if (!IsPaused())\n            {\n                TotalGamePlayTimeInMilliseconds = ((int) gameTime.TotalGameTime.TotalMilliseconds) - m_totalPauseTimeInMilliseconds;\n            }\n            TotalTimeInMilliseconds = (int)gameTime.TotalGameTime.TotalMilliseconds;\n        }\n\n        //  Switch pause on or off, depending on what mode is now\n        public static void SwitchPause()\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyMinerGame::SwitchPause\");\n            if (m_pauseActive)\n            {\n                //  Going from PAUSED game to non-paused game\n                m_totalPauseTimeInMilliseconds += TotalTimeInMilliseconds - m_pauseStartTimeInMilliseconds;\n                m_pauseActive = false;\n                MyAudio.Resume();\n            }\n            else\n            {\n                //  Going from non-paused game to PAUSED game\n                m_pauseStartTimeInMilliseconds = TotalTimeInMilliseconds;\n                m_pauseActive = true;\n                MyAudio.Pause();\n            }\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n         //  Set pause on/off\n        public static void SetPause(bool set)\n        {\n            m_pauseActive = set; \n        }\n\n        //  True if pause is active right now (game-play is paused)\n        public static bool IsPaused()\n        {\n            return m_pauseActive && MyMultiplayerGameplay.CanPauseGame;\n        }\n        \n        //  Allows the game to run logic such as updating the world, checking for collisions, gathering input, and playing audio.\n        protected override void Update(GameTime gameTime)\n        {\n            if (m_debugFont == null)\n                return;\n\n            // Apply video mode changes.\n            MyVideoModeManager.ApplyChanges();\n\n            //  Update times in static member variables\n            UpdateTimes(gameTime);         \n\n            //if (MyMinerGame.IsDeviceResetted)\n              //  MyVideoModeManager.UpdateAfterDeviceReset();\n                \n            MyRender.GetRenderProfiler().StartProfilingBlock(\"Particles wait\");\n            MyParticlesManager.WaitUntilUpdateCompleted();\n            MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            MyRender.GetRenderProfiler().StartProfilingBlock(\"Receive Multiplayer Messages\");\n            MyMultiplayerPeers.Static.Update();\n            MyRender.GetRenderProfiler().EndProfilingBlock();\n                  \n            int updateBlock = -1;\n            MyRender.GetRenderProfiler().StartProfilingBlock(\"Update\", ref updateBlock);\n\n            if (MyMwcFinalBuildConstants.EnableLoggingInDrawAndUpdateAndGuiLoops == true)\n            {\n                MyMwcLog.WriteLine(\"MyMinerGame.Update() - START\");\n                MyMwcLog.IncreaseIndent();\n                MyMwcLog.WriteLine(\"Update - gameTime.ElapsedGameTime: \" + gameTime.ElapsedGameTime.ToString());\n                MyMwcLog.WriteLine(\"Update - gameTime.TotalGameTime: \" + gameTime.TotalGameTime.ToString());\n\n                MyMwcLog.WriteLine(\"Max Garbage Generation: \" + GC.MaxGeneration.ToString());\n                for (int i = 0; i <= GC.MaxGeneration; ++i)\n                {\n                    MyMwcLog.WriteLine(\"Generation \" + i.ToString() + \": \" + GC.CollectionCount(i).ToString() +\n                                       \" collections\");\n                }\n                MyMwcLog.WriteLine(\"Total Memory: \" + MyValueFormatter.GetFormatedLong(GC.GetTotalMemory(false)) +\n                                   \" bytes\");\n            }\n\n            //  Inform us if there were some garbage collection\n            if (MyMwcFinalBuildConstants.EnableLoggingGarbageCollectionCalls)\n            {\n                int newGc = MyGarbageCollectionManager.GetGarbageCollectionsCountFromLastCall();\n                if (newGc > 0)\n                {\n                    MyMwcLog.WriteLine(\"####### Garbage collections from the last call: \" + newGc + \" #######\");\n                }\n            }\n\n\n            int updateManagersBlock = -1;\n            MyRender.GetRenderProfiler().StartProfilingBlock(\"UpdateManagers\", ref updateManagersBlock);\n\n            MyRender.GetRenderProfiler().EndProfilingBlock(updateManagersBlock);\n\n            //  Now I think that it's better if HandleInput is called after Update, because then input methods\n            //  such as Shot() have up-to-date values such as position, forward vector, etc\n            int guiManagerBlock = -1;\n            MyRender.GetRenderProfiler().StartProfilingBlock(\"GuiManager\", ref guiManagerBlock);\n            MyGuiManager.Update();\n            MyRender.GetRenderProfiler().EndProfilingBlock(guiManagerBlock);\n\n            //After guimanager update because of object world matrices updates of objects\n            MyParticlesManager.Update();\n              \n            int inputBlock = -1;\n            MyRender.GetRenderProfiler().StartProfilingBlock(\"Input\", ref inputBlock);\n            MyGuiManager.HandleInput();\n            MyRender.GetRenderProfiler().EndProfilingBlock(inputBlock);\n\n            int serverUpdateBlock = -1;\n            MyRender.GetRenderProfiler().StartProfilingBlock(\"MyClientServer.Update\", ref serverUpdateBlock);\n            //MyClientServer.Update();       ti\n            MyRender.GetRenderProfiler().EndProfilingBlock(serverUpdateBlock);\n                \n            if (MyMwcFinalBuildConstants.SimulateSlowUpdate)\n            {\n                System.Threading.Thread.Sleep(7);\n            }\n                  \n            int audioUpdateBlock = -1;\n            MyRender.GetRenderProfiler().StartProfilingBlock(\"MyAudio.Update\", ref audioUpdateBlock);\n            MyAudio.Update();\n            MyDialogues.Update();\n            MyRender.GetRenderProfiler().EndProfilingBlock(audioUpdateBlock);\n                           \n            int othersBlock = -1;\n            MyRender.GetRenderProfiler().StartProfilingBlock(\"Others\", ref othersBlock);\n            \n            if (MyMwcFinalBuildConstants.EnableLoggingInDrawAndUpdateAndGuiLoops == true)\n            {\n                if (MyMwcLog.IsIndentKeyIncreased())\n                {\n                    MyMwcLog.DecreaseIndent();\n                }\n                MyMwcLog.WriteLine(\"MyMinerGame.Update() - END\");\n            }\n                          \n\t\t\tProcessInvoke();\n\n            if (OnGameUpdate != null)\n                OnGameUpdate(gameTime);\n                    \n            base.Update(gameTime);\n\n            MyRender.GetRenderProfiler().EndProfilingBlock(othersBlock);\n\n            MyRender.GetRenderProfiler().EndProfilingBlock(updateBlock);\n        }\n\n\n        public static int ResetSleep = 0;\n\n        protected override void Draw(GameTime gameTime)\n        {\n            if (m_debugFont == null)\n                return;\n\n//            MyRender.GetRenderProfiler().StartProfilingBlock(\"MyMinerGame::Draw\");\n\n           // if (MyMinerGame.IsDeviceResetted)\n             //   return;\n                    /*\n            if (ResetSleep > 0)\n            {\n                ResetSleep--;\n                GraphicsDevice.Clear(Color.Black);\n                if (ResetSleep == 0)\n                {\n                    MyMwcLog.WriteLine(\"Reset sleep - START\");\n                    MyTextureManager.ReloadTextures(false);\n                    MyGuiManager.UpdateAfterDeviceReset();\n                    MyMwcLog.WriteLine(\"Reset sleep - END\");\n                }\n                return;\n            }     */    \n                      \n            if (MyMwcFinalBuildConstants.EnableLoggingInDrawAndUpdateAndGuiLoops)\n            {\n                MyMwcLog.WriteLine(\"MyMinerGame.Draw() - START\");\n                MyMwcLog.IncreaseIndent();\n                MyMwcLog.WriteLine(\"Draw - gameTime.ElapsedGameTime: \" + gameTime.ElapsedGameTime);\n                MyMwcLog.WriteLine(\"Draw - gameTime.TotalGameTime: \" + gameTime.TotalGameTime);\n            }       \n\n            UpdateTimes(gameTime);\n            MyFpsManager.Update();\n\n            GraphicsDevice.Clear(ClearFlags.Target, new ColorBGRA(0.0f), 1, 0);\n\n            if (GraphicsDevice.IsDisposed )\n            {\n                //MyMwcLog.WriteLine(\"MyMinerGame.Draw() - MyFakes.ALLOW_RENDER_HACK == false... skipping Draw\");\n                //MyRender.GetRenderProfiler().EndProfilingBlock();\n                return;\n            } \n                 /*\n            //  This hack is for PerfHUD. It will allow us to see correct PerfHUD GUI (not corrupted by some error), so we will see colors on graph menu.\n            if (MyMwcFinalBuildConstants.ENABLE_PERFHUD == true)\n            {\n                GraphicsDevice.DepthStencilState = DepthStencilState.Default;\n            }  */\n                   \n            if (MyMwcFinalBuildConstants.SimulateSlowDraw == true)\n            {\n                System.Threading.Thread.Sleep(60);\n            }    \n\n          //  MyRender.ResetStates();\n\n            MyGuiManager.Draw(); \n                \n            //  This hack is for PerfHUD. It will allow us to see correct PerfHUD GUI (not corrupted by some error), so we will see colors on graph menu.\n            /*if (MyMwcFinalBuildConstants.ENABLE_PERFHUD == true)\n            {\n                GraphicsDevice.DepthStencilState = DepthStencilState.None;\n            }      */\n\n\n            DepthStencilState.None.Apply();\n            RasterizerState.CullNone.Apply();\n            BlendState.Opaque.Apply();\n\n            //m_debugFont.DrawText(null, MyFpsManager.GetFps().ToString() + \" (\" + MyFpsManager.FrameTimeAvg.ToString() + \"ms) \", 0, 0, new ColorBGRA(1.0f, 1.0f, 1.0f, 1.0f));\n\n\n            if (MyMwcFinalBuildConstants.EnableLoggingInDrawAndUpdateAndGuiLoops == true)\n            {\n                MyMwcLog.DecreaseIndent();\n                MyMwcLog.WriteLine(\"MyMinerGame.Draw() - END\");\n            }   \n\n            base.Draw(gameTime);\n\n            if (OnGameDraw != null)\n                OnGameDraw(gameTime);  \n        }\n\n        protected override bool BeginDraw()\n        {\n            MyRender.GetRenderProfiler().StartProfilingBlock(\"BeginDraw\");\n            bool ret = base.BeginDraw();\n            MyRender.GetRenderProfiler().EndProfilingBlock();\n            return ret;\n        }\n\n        protected override void EndDraw()\n        {\n            MyRender.GetRenderProfiler().StartProfilingBlock(\"EndDraw\");\n            base.EndDraw();\n            MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n\n        /// <summary>\n        /// Invokes the specified action on main xna game thread and block until it is completed.\n        /// </summary>\n        /// <param name=\"action\">The action.</param>\n        public void Invoke(Action action, bool waitForInvoke)\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyMinerGame::Invoke\");\n\n            var waiter = new ManualResetEvent(false);\n\n            this.m_InvokeQueue.Enqueue(new Tuple<ManualResetEvent, Action>(waiter, action));\n\n            if (waitForInvoke)\n                waiter.WaitOne();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        /// <summary>\n        /// Processes the invoke queue.\n        /// </summary>\n        private void ProcessInvoke()\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyMinerGame::ProcessInvoke\");\n            Tuple<ManualResetEvent, Action> result;\n            while (this.m_InvokeQueue.TryDequeue(out result))\n            {\n                result.Item2();\n                result.Item1.Set();\n            }\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        static void MyMinerGame_OnDeactivated(object sender, EventArgs e)\n        {\n            MyMwcLog.WriteLine(\"MyMinerGame.MyMinerGame_OnDeactivated\");\n        }\n\n        static void MyMinerGame_OnActivated(object sender, EventArgs e)\n        {\n            MyMwcLog.WriteLine(\"MyMinerGame.MyMinerGame_OnActivated\");\n        }\n\n        //  We are unloading the game here (in this event), because when player presses Alt+F4 during loading phase, sometimes\n        //  graphic device is disposed during we are unloading - with is weird. But this event finishes always before even\n        //  graphic device disposing starts, so it's safe.\n        //  Add any code that must execute before the game ends (e.g. when player suddenly presses Alt+F4)\n        void MyMinerGame_Exiting(object sender, EventArgs e)\n        {\n            MyMwcLog.WriteLine(\"MyMinerGame.MyMinerGame_Exiting\");\n            MySectorServiceClient.ClearAndClose(); // In case of exception on different thread\n            IsMouseVisible = true;\n            UnloadData();\n\n//            MinerWars.AppCode.Game.Render.MyOcclusionQuery.UnloadAllQueries();\n        }\n\n        static int m_renderTargetsCount = 0;\n\n        public void SetDeviceViewport(Viewport viewport)\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyMinerGame::SetDeviceViewport\");\n            if (m_renderTargetsCount == 0)\n            {\n                if ((MyMinerGame.Static.GraphicsManager.PreferredBackBufferHeight >= (viewport.Height + viewport.Y))\n                    && (MyMinerGame.Static.GraphicsManager.PreferredBackBufferWidth >= (viewport.Width + viewport.X)))\n                {\n                    MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"set viewport\");\n                    MyMinerGame.Static.GraphicsDevice.Viewport = viewport;\n                    MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n                }\n                else\n                {\n                    MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"change screen size\");\n                    MyVideoModeManager.UpdateScreenSize();\n                    MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n                }\n            }\n            else  \n            {\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"set viewport\");\n                MyMinerGame.Static.GraphicsDevice.Viewport = viewport;\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n            }\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n                \n        }\n\n\n        private static void RestoreDefaultTargets()\n        {\n            MyMinerGame.Static.GraphicsDevice.SetRenderTarget(0, DefaultSurface);\n            MyMinerGame.Static.GraphicsDevice.SetRenderTarget(1, null);\n            MyMinerGame.Static.GraphicsDevice.SetRenderTarget(2, null);\n            MyMinerGame.Static.GraphicsDevice.DepthStencilSurface = DefaultDepth;\n            m_renderTargetsCount = 0;\n        }\n\n        public static void SetRenderTarget(Texture rt, Texture depth, SetDepthTargetEnum depthOp = SetDepthTargetEnum.NoChange)\n        {\n            if (rt == null)\n            {\n                RestoreDefaultTargets();\n            }\n            else\n            {\n                Surface surface = rt.GetSurfaceLevel(0);\n                MyMinerGame.Static.GraphicsDevice.SetRenderTarget(0, surface);\n                surface.Dispose();\n                MyMinerGame.Static.GraphicsDevice.SetRenderTarget(1, null);\n                MyMinerGame.Static.GraphicsDevice.SetRenderTarget(2, null);\n                if (depth != null)\n                {\n                    Surface dsurface = depth.GetSurfaceLevel(0);\n                    MyMinerGame.Static.GraphicsDevice.DepthStencilSurface = dsurface;\n                    dsurface.Dispose();\n                }\n                else if (depthOp == SetDepthTargetEnum.RestoreDefault)\n                {\n                    MyMinerGame.Static.GraphicsDevice.DepthStencilSurface = DefaultDepth;\n                }\n\n                m_renderTargetsCount = 1;\n            }\n        }\n\n        public static void SetRenderTargets(Texture[] rts, Texture depth, SetDepthTargetEnum depthOp = SetDepthTargetEnum.NoChange)\n        {\n            if (rts == null)\n            {\n                RestoreDefaultTargets();\n            }\n            else\n            {\n                for (int i = 0; i < 3; i++)\n                {\n                    if (i < rts.Length)\n                    {\n                        Surface surface = rts[i].GetSurfaceLevel(0);\n                        MyMinerGame.Static.GraphicsDevice.SetRenderTarget(i, surface);\n                        surface.Dispose();\n                    }\n                    else\n                        MyMinerGame.Static.GraphicsDevice.SetRenderTarget(i, null);\n                }\n                if (depth != null)\n                {\n                    Surface surface = depth.GetSurfaceLevel(0);\n                    MyMinerGame.Static.GraphicsDevice.DepthStencilSurface = surface;\n                    surface.Dispose();\n                }\n                else if (depthOp == SetDepthTargetEnum.RestoreDefault)\n                {\n                    MyMinerGame.Static.GraphicsDevice.DepthStencilSurface = DefaultDepth;\n                }\n                    \n                m_renderTargetsCount = rts.Length;\n            }\n        }                                    \n\n        public static bool IsMainThread()\n        {\n            return Thread.CurrentThread == Static.m_MainThread;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/App/MyRuntime.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.GameServices;\n\nnamespace MinerWars.AppCode.App\n{\n    public static class MyRuntime\n    {\n        public static void Run(ServiceContainer services)\n        {\n            using (MyMinerGame game = new MyMinerGame(services))\n            {\n                if (game.IsGraphicsSupported())\n                    game.Run();\n            }\n        }\n\n        public static bool InvokeRequired\n        {\n            get\n            {\n                return MyMinerGame.Static != null && MyMinerGame.Static.InvokeRequired;\n            }\n        }\n\n        public static void Invoke(Action action, bool waitForComplete)\n        {\n            MyMinerGame.Static.Invoke(action, waitForComplete);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/App/MySectorExporter.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Diagnostics;\nusing MinerWars.AppCode.Networking.SectorService;\nusing SysUtils.Utils;\nusing System.Runtime.InteropServices;\nusing Microsoft.Win32.SafeHandles;\nusing System.IO;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing SysUtils;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.Utils;\n\nnamespace MinerWars.AppCode.App\n{\n    public class MySectorExporter\n    {\n        public static void Run()\n        {\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Audio/AudioCategory.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing SharpDX.XACT3;\n\nnamespace MinerWars.AppCode.Game.Audio\n{\n    public struct AudioCategory\n    {\n        private AudioEngine m_audioEngine;\n        private short m_index;\n        private string m_name;\n\n        public short CategoryIndex { get { return m_index; } }\n        public string CategoryName { get { return m_name; } }\n\n        public AudioCategory(AudioEngine audioEngine, string categoryName)\n        {\n            this.m_index = audioEngine.GetCategory(categoryName);\n            this.m_audioEngine = audioEngine;\n            this.m_name = categoryName;\n        }\n\n        public override bool Equals(object obj)\n        {\n            if (!(obj is AudioCategory))\n            {\n                return false;\n            }\n            else\n            {\n                return ((AudioCategory)obj) == this;\n            }\n        }\n\n        public override int GetHashCode()\n        {\n            return m_index;\n        }\n\n        public static bool operator==(AudioCategory a, AudioCategory b)\n        {\n            return a.m_index == b.m_index;\n        }\n\n        public static bool operator !=(AudioCategory a, AudioCategory b)\n        {\n            return !(a == b);\n        }\n\n        public void SetVolume(float volume)\n        {\n            m_audioEngine.SetVolume(CategoryIndex, volume);\n        }\n\n        public void Pause()\n        {\n            m_audioEngine.Pause(CategoryIndex, true);\n        }\n\n        public void Resume()\n        {\n            m_audioEngine.Pause(CategoryIndex, false);\n        }\n\n        public void Stop(StopFlags stopFlags)\n        {\n            m_audioEngine.Stop(m_index, stopFlags);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Audio/AudioEngineExtensions.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing SharpDX.XACT3;\nusing System.Diagnostics;\nusing SharpDX.X3DAudio;\nusing MinerWarsMath;\nusing SharpDX.Toolkit;\n\nnamespace MinerWars.AppCode.Game.Audio\n{\n    public static class AudioEngineExtensions\n    {\n        public static AudioCategory GetCategoryInstance(this AudioEngine engine, string categoryName)\n        {\n            return new AudioCategory(engine, categoryName);\n        }\n\n        private static bool HasState(this Cue cue, CueState state)\n        {\n            return (cue.State & state) != 0;\n        }\n\n        public static bool IsPlaying(this Cue cue)\n        {\n            return cue.HasState(CueState.Playing);\n        }\n\n        public static bool IsPrepared(this Cue cue)\n        {\n            return cue.HasState(CueState.Prepared);\n        }\n\n        public static bool IsPaused(this Cue cue)\n        {\n            return cue.HasState(CueState.Paused);\n        }\n\n        public static bool IsStopping(this Cue cue)\n        {\n            return cue.HasState(CueState.Stopping);\n        }\n\n        public static bool IsStopped(this Cue cue)\n        {\n            return cue.HasState(CueState.Stopped);\n        }\n\n        public static bool IsValid(this Cue cue)\n        {\n            return cue.NativePointer != IntPtr.Zero;\n        }\n\n        public static void SetVariable(this Cue cue, MyCueVariableEnum variableEnum, float value)\n        {\n            MyXactVariables.SetVariable(cue, variableEnum, value);\n        }\n\n        public static void SetGlobalVariable(this AudioEngine engine, MyGlobalVariableEnum variableEnum, float value)\n        {\n            MyXactVariables.SetVariable(engine, variableEnum, value);\n        }\n\n        public static bool IsPrepared(this WaveBank waveBank)\n        {\n            const int StatePrepared = 4;\n\n            return (waveBank.State & StatePrepared) != 0;\n        }\n\n        public static void Apply3D(this Cue cue, Listener listener, Emitter emitter)\n        {\n            MyAudio.X3DAudio.Apply3D(cue, listener, emitter);\n        }\n\n        /// <summary>\n        /// Sets default values for emitter, makes it valid\n        /// </summary>\n        public static void SetDefaultValues(this Emitter emitter)\n        {\n            emitter.Position = SharpDX.Vector3.Zero;\n            emitter.Velocity = SharpDX.Vector3.Zero;\n            emitter.OrientFront = SharpDX.Vector3.UnitZ;\n            emitter.OrientTop = SharpDX.Vector3.UnitY;\n            emitter.ChannelCount = 1;\n            emitter.CurveDistanceScaler = float.MinValue;\n        }\n\n        /// <summary>\n        /// Sets default values for listener, makes it valid\n        /// </summary>\n        public static void SetDefaultValues(this Listener listener)\n        {\n            listener.Position = SharpDX.Vector3.Zero;\n            listener.Velocity = SharpDX.Vector3.Zero;\n            listener.OrientFront = SharpDX.Vector3.UnitZ;\n            listener.OrientTop = SharpDX.Vector3.UnitY;\n        }\n        \n        /// <summary>\n        /// Updates emitter position, forward, up and velocity\n        /// </summary>\n        public static void UpdateValues(this Emitter emitter, ref Vector3 position, ref Vector3 forward, ref Vector3 up, ref Vector3 velocity)\n        {\n            emitter.Position = SharpDXHelper.ToSharpDX(position);\n            emitter.OrientFront = SharpDXHelper.ToSharpDX(forward);\n            emitter.OrientTop = SharpDXHelper.ToSharpDX(up);\n            emitter.Velocity = SharpDXHelper.ToSharpDX(velocity);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Audio/Dialogues/MyDialogue.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Textures;\nusing SysUtils.Utils;\nusing MinerWars.AppCode.Game.Managers.Session;\n\nnamespace MinerWars.AppCode.Game.Audio.Dialogues\n{\n    enum MyDialoguePriorityEnum : byte\n    {\n        LOW = 0,\n        BASIC = 1,\n        TOP = 2\n    }\n\n    class MyDialogue\n    {\n        public MyDialoguePriorityEnum Priority { get; private set; }\n        public MyDialogueSentence[] Sentences { get; private set; }\n\n        public MyDialogue(MyDialogueSentence[] sentences, MyDialoguePriorityEnum priority = MyDialoguePriorityEnum.BASIC)\n        {\n            Sentences = sentences;\n            Priority = priority;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Audio/Dialogues/MyDialogueConstants.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.AppCode.Game.Localization;\nusing SysUtils.Utils;\nusing System.IO;\n\nnamespace MinerWars.AppCode.Game.Audio.Dialogues\n{\n    enum MyDialogueEnum\n    {\n        NONE,\n        TEST,\n\n        EAC_SURVEY_SITE_0200_ACTIONSTARTS,\n        EAC_SURVEY_SITE_0300_CIVILIANSDESTROYED,\n        EAC_SURVEY_SITE_0400_BARRICADE,\n        EAC_SURVEY_SITE_0500_TOBASE,\n        EAC_SURVEY_SITE_0450_MOTHERSHIPS,\n        EAC_SURVEY_SITE_0700_MADELYN,\n        EAC_SURVEY_SITE_0800_PICKUP,\n        EAC_SURVEY_SITE_0550_COMMANDOFFLINE,\n        EAC_SURVEY_SITE_0560_GENERATORUP,\n        EAC_SURVEY_SITE_1000_RESEARCHERS_1,\n        EAC_SURVEY_SITE_1100_RESEARCHERS_2,\n        EAC_SURVEY_SITE_1200_RUSSIANCHAT_01,\n        EAC_SURVEY_SITE_1300_RUSSIANCHAT_02,\n        EAC_SURVEY_SITE_1400_RUSSIANCHAT_03,\n        EAC_SURVEY_SITE_1500_RUSSIANCHAT_04,\n        EAC_SURVEY_SITE_1600_RUSSIANCHAT_05,\n        EAC_SURVEY_SITE_0205_ACTION,\n        EAC_SURVEY_SITE_0705_MADELYN_2,\n        EAC_SURVEY_SITE_0750_NEAREND,\n        EAC_SURVEY_SITE_1900_RUSSIANCHAT_06,\n        EAC_SURVEY_SITE_2000_RUSSIANCHAT_07,\n        EAC_SURVEY_SITE_2100_RUSSIANCHAT_08,\n\n\n        LAIKA_0100_ARRIVAL,\n        LAIKA_0200_HANGAR,\n        LAIKA_0250_WAYTOHANGAR,\n        LAIKA_0275_INSIDEHANGAR,\n        LAIKA_0277_DESTROYGENERATOR,\n        LAIKA_0300_AFTERHANGAR,\n        LAIKA_0350_GPS,\n        LAIKA_0400_MARKETPLACE,\n        LAIKA_0480_COMMANDARRIVE,\n        LAIKA_0500_COMMAND,\n        LAIKA_0600_TOPIPE,\n        LAIKA_0700_LEFTHUB,\n        LAIKA_0700_LEFTHUB2,\n        LAIKA_0720_AFTERLEFTHUB,\n        LAIKA_0800_RIGHTHUB,\n        LAIKA_0900_WARHEAD,\n        LAIKA_0950_WARHEAD_HACK,\n        LAIKA_1800_WARHEAD_DONE,\n        LAIKA_1800_WARHEAD_DONE2,\n        LAIKA_1900_ESCAPED,\n\n    \n        BARTHS_MOON_CONVINCE_0100,\n        BARTHS_MOON_CONVINCE_0200,\n        BARTHS_MOON_CONVINCE_0300,\n        BARTHS_MOON_CONVINCE_0400,\n        BARTHS_MOON_CONVINCE_0500,\n        BARTHS_MOON_CONVINCE_0600,\n        BARTHS_MOON_CONVINCE_0700,\n\n \n        PIRATE_BASE_0100,\n        PIRATE_BASE_0200,\n        PIRATE_BASE_0300,\n        PIRATE_BASE_0400,\n        PIRATE_BASE_0500,\n        PIRATE_BASE_0600,\n        PIRATE_BASE_0700,\n        PIRATE_BASE_0800,\n        PIRATE_BASE_0900,\n        PIRATE_BASE_1000,\n        PIRATE_BASE_1100,\n        PIRATE_BASE_1200,\n        PIRATE_BASE_1300,\n        PIRATE_BASE_1400,\n        PIRATE_BASE_1500,\n\n\n        RUSSIAN_WAREHOUSE_0100,\n        RUSSIAN_WAREHOUSE_0200,\n        RUSSIAN_WAREHOUSE_0300,\n        RUSSIAN_WAREHOUSE_0400,\n        RUSSIAN_WAREHOUSE_0500,\n        RUSSIAN_WAREHOUSE_0600,\n        RUSSIAN_WAREHOUSE_0700,\n        RUSSIAN_WAREHOUSE_0800,\n        RUSSIAN_WAREHOUSE_0900,\n        RUSSIAN_WAREHOUSE_1000,\n        RUSSIAN_WAREHOUSE_1100,\n\n        BARTHS_MOON_TRANSMITTER_0100_INTRO = 1900,\n        BARTHS_MOON_TRANSMITTER_0200,\n        BARTHS_MOON_TRANSMITTER_0300,\n        BARTHS_MOON_TRANSMITTER_0400,\n        BARTHS_MOON_TRANSMITTER_0500,\n        BARTHS_MOON_TRANSMITTER_0600,\n        BARTHS_MOON_TRANSMITTER_0700,\n        BARTHS_MOON_TRANSMITTER_0800,\n        BARTHS_MOON_TRANSMITTER_0900,\n        BARTHS_MOON_TRANSMITTER_1000,\n        BARTHS_MOON_TRANSMITTER_1100,\n        BARTHS_MOON_TRANSMITTER_1200,\n        BARTHS_MOON_TRANSMITTER_1300,\n        BARTHS_MOON_TRANSMITTER_1400,\n        BARTHS_MOON_TRANSMITTER_1500,\n        BARTHS_MOON_TRANSMITTER_1600,\n        BARTHS_MOON_TRANSMITTER_1700,\n        BARTHS_MOON_TRANSMITTER_1800,\n        BARTHS_MOON_TRANSMITTER_1900,\n        BARTHS_MOON_TRANSMITTER_2000,\n        BARTHS_MOON_TRANSMITTER_2100,\n        BARTHS_MOON_TRANSMITTER_2200,\n        BARTHS_MOON_TRANSMITTER_2300,\n        BARTHS_MOON_TRANSMITTER_2400,\n        BARTHS_MOON_TRANSMITTER_2500,\n        BARTHS_MOON_TRANSMITTER_2600,\n        BARTHS_MOON_TRANSMITTER_2700,\n        BARTHS_MOON_TRANSMITTER_2800,\n        BARTHS_MOON_TRANSMITTER_2900,\n        BARTHS_MOON_TRANSMITTER_3000,\n        BARTHS_MOON_TRANSMITTER_3100,\n        BARTHS_MOON_TRANSMITTER_3200,\n\n\n        LAST_HOPE_0100,\n        LAST_HOPE_0200,\n        LAST_HOPE_0300,\n        LAST_HOPE_0400,\n        LAST_HOPE_0500,\n        LAST_HOPE_0600,\n        LAST_HOPE_0700,\n        LAST_HOPE_0800,\n        LAST_HOPE_1100,\n        LAST_HOPE_1200,\n        LAST_HOPE_1300,\n        LAST_HOPE_1400,\n        LAST_HOPE_1500,\n        LAST_HOPE_1600,\n        LAST_HOPE_1700,\n        LAST_HOPE_1800,\n        LAST_HOPE_1900,\n        LAST_HOPE_2000,\n\n\n        JUNKYARD_CONVINCE_0100_INTRODUCE,\n        JUNKYARD_CONVINCE_0200_INFORMATOR,\n        JUNKYARD_CONVINCE_0300_RUN,\n        JUNKYARD_CONVINCE_0500_CATCHED,\n        JUNKYARD_CONVINCE_0600_BEFORE_FIGHT,\n        JUNKYARD_CONVINCE_0650_MET_ZAPPA_GUARD,\n        JUNKYARD_CONVINCE_0800_MOMO_ARRIVE,\n        JUNKYARD_CONVINCE_0900_THE_MOMO,\n        JUNKYARD_CONVINCE_0950_MOMO_FIGHT,\n        JUNKYARD_CONVINCE_1000_LAST_OF_THEM,\n        JUNKYARD_CONVINCE_1100_FIGHT_ENDS,\n        JUNKYARD_CONVINCE_1200_FLY_TO_DEALER,\n        JUNKYARD_CONVINCE_1300_BOMB_DEALER,\n        JUNKYARD_CONVINCE_1400_ARRIVED_AT_MARCUS,\n        JUNKYARD_CONVINCE_1500_GANGSTER_FIGHT_STARTED,\n        JUNKYARD_CONVINCE_1600_GO_TO_MS,\n        JUNKYARD_CONVINCE_1700_FINALE,\n\n        CHINESE_TRANSPORT_0100_INTRODUCE,\n        CHINESE_TRANSPORT_0200_FIRST_DEVICE_HACKED,\n        CHINESE_TRANSPORT_0300_SHOOTING_ON_ME,\n        CHINESE_TRANSPORT_0400_THEY_FOUND_ME,\n        CHINESE_TRANSPORT_0500_MARCUS_IS_HERE,\n        CHINESE_TRANSPORT_0600_DESTROY_THE_TRANSMITTER,\n        CHINESE_TRANSPORT_0650_MARCUS_IS_LEAVING,\n        CHINESE_TRANSPORT_0670_disabling_the_terminals,\n        CHINESE_TRANSPORT_0700_RUN,\n        CHINESE_TRANSPORT_0800_GO_TO_SECOND_BASE,\n        CHINESE_TRANSPORT_0850_INSIDE_TUNNEL,\n        CHINESE_TRANSPORT_0900_SURRENDER,\n        CHINESE_TRANSPORT_1000_DOOR_BLOCKED,\n        CHINESE_TRANSPORT_1050_REACHED_COMPUTER,\n        CHINESE_TRANSPORT_1075_HACKED_COMPUTER,\n        CHINESE_TRANSPORT_1100_HELP_MARCUS,\n        CHINESE_TRANSPORT_1200_GENERAL_ARRIVAL,\n        CHINESE_TRANSPORT_1300_LAND_IN,\n        CHINESE_TRANSPORT_1400_DOORS_UNLOCKED,\n\n\n        CHINESE_REFINERY_0100_GO_CLOSER,\n        CHINESE_REFINERY_0150_GET_INSIDE,\n        CHINESE_REFINERY_0200_LABORATORY,\n        CHINESE_REFINERY_0300_DEACTIVATE_BOMB,\n        CHINESE_REFINERY_0400_GO_TO_SECOND_ASTEROID,\n        CHINESE_REFINERY_0500_FIND_THE_COMPUTER,\n        CHINESE_REFINERY_0600_GO_TO_THIRD_ASTEROID,\n        CHINESE_REFINERY_0700_SNEAK_INSIDE_THE_STATION,\n        CHINESE_REFINERY_0800_FIND_THE_OLD_PATH,\n        CHINESE_REFINERY_0900_HACK_THE_COMPUTER,\n        CHINESE_REFINERY_1000_GET_OUT,\n\n\n\n        CHINESE_ESCAPE_0100_INTRODUCTION,\n        CHINESE_ESCAPE_0200_IT_IS_TRAP,\n        CHINESE_ESCAPE_0300_ON_THIRD,\n        CHINESE_ESCAPE_0400_ON_NINE,\n        CHINESE_ESCAPE_0500_WATCH_BACK,\n        CHINESE_ESCAPE_0600_WATCH_FRONT,\n        CHINESE_ESCAPE_0700_ON_THE_RIGHT,\n        CHINESE_ESCAPE_0800_MADELYN_IN_SIGHT,\n        CHINESE_ESCAPE_0900_KILL_THOSE_BASTARDS,\n        CHINESE_ESCAPE_1000_LAST_OF_THEM,\n\n\n        JUNKYARD_RETURN_0100,\n        JUNKYARD_RETURN_0200,\n        JUNKYARD_RETURN_0250,\n        JUNKYARD_RETURN_0300,\n        JUNKYARD_RETURN_0400,\n        JUNKYARD_RETURN_0500,\n        JUNKYARD_RETURN_0600,\n        JUNKYARD_RETURN_0700,\n        JUNKYARD_RETURN_0800,\n        JUNKYARD_RETURN_0900,\n        JUNKYARD_RETURN_1000,\n        JUNKYARD_RETURN_1100,\n        JUNKYARD_RETURN_1200,\n        JUNKYARD_RETURN_1300,\n        JUNKYARD_RETURN_1400,\n        RACING_CHALLENGER_0100_FRONT01,\n        RACING_CHALLENGER_0200_FRONT02,\n        RACING_CHALLENGER_0300_FRONT03,\n        RACING_CHALLENGER_0400_FRONT04,\n        RACING_CHALLENGER_0500_FRONT05,\n        RACING_CHALLENGER_0600_BEHIND01,\n        RACING_CHALLENGER_0700_BEHIND02,\n        RACING_CHALLENGER_0800_BEHIND03,\n        RACING_CHALLENGER_0900_BEHIND04,\n        RACING_CHALLENGER_1000_BEHIND05,\n\n\n        \n        SLAVERBASE_0100_INTRODUCE,\n        SLAVERBASE_0200_GENERATORS_DESTROYED,\n        SLAVERBASE_0300_BATTERIES_DESTROYED,\n        SLAVERBASE_0350_SLAVES_FOUND,\n        SLAVERBASE_0400_SLAVES_SAVED,\n        SLAVERBASE_0500_DOORS_OPENED,\n        SLAVERBASE_0600_MOTHERSHIP_EMPTY,\n        SLAVERBASE_0700_PIT_EMPTY,\n        SLAVERBASE_0800_ENEMIES_DESTROYED,\n        SLAVERBASE_0900_NUKE_HACKED,\n        //SLAVERBASE2_1000_PRISON_FOUND,\n        SLAVERBASE_1100_FAKE_ESCAPED,\n\n\n        FORT_VALIANT_A_0100,\n        FORT_VALIANT_A_0200,\n        FORT_VALIANT_A_0300,\n\n        FORT_VALIANT_B_0100,\n        FORT_VALIANT_B_0200,\n\n        FORT_VALIANT_C_0100_BEGIN,\n        FORT_VALIANT_C_0100,\n        FORT_VALIANT_C_0200,\n        FORT_VALIANT_C_0300,\n        FORT_VALIANT_C_0400,\n        FORT_VALIANT_C_0500,\n        FORT_VALIANT_C_0600,\n        FORT_VALIANT_C_0700,\n        FORT_VALIANT_C_0800,\n        FORT_VALIANT_C_0900,\n        FORT_VALIANT_C_1000,\n        //FORT_VALIANT_C_1100,\n        FORT_VALIANT_C_1200,\n        FORT_VALIANT_C_1300,\n        FORT_VALIANT_C_1400,\n        FORT_VALIANT_C_1500,\n        FORT_VALIANT_C_1600,\n        FORT_VALIANT_C_1700,\n        FORT_VALIANT_C_1800,\n        FORT_VALIANT_C_1900,\n        FORT_VALIANT_C_2000,\n        FORT_VALIANT_C_2100,\n        FORT_VALIANT_C_2200,\n        FORT_VALIANT_C_2300,\n        FORT_VALIANT_C_2400,\n        FORT_VALIANT_C_2500,\n        FORT_VALIANT_C_2600,\n\n        SLAVERBASE2_0100_INTRO,\n        SLAVERBASE2_0200_DESTROY_TURRETS,\n        SLAVERBASE2_0201_SLAVER_TALK,\n        SLAVERBASE2_0300_TURRETS_DESTROYED,\n        SLAVERBASE2_0400_FIRST_HUB_DESTROYED,\n        SLAVERBASE2_0500_BOTH_HUBS_DESTROYED,\n        SLAVERBASE2_0600_GENERATOR_REACHED,\n        SLAVERBASE2_0700_GENERATOR_DESTROYED,\n        SLAVERBASE2_0800_FIRST_CELL_UNLOCKED,\n        SLAVERBASE2_0900_SECOND_CELL_UNLOCKED,\n        SLAVERBASE2_1000_THIRD_CELL_UNLOCKED,\n        SLAVERBASE2_1100_FOURTH_CELL_UNLOCKED,\n        SLAVERBASE2_1200_MISSION_COMPLETE,\n\n\n        RIME_0100_INTRODUCTION,\n        RIME_0150_HEAD_TO_REEF,\n        RIME_0200_REEF_REACHED,\n        RIME_0300_TALK_TO_REEF,\n        //RIME_0400_ON_THE_WAY,\n        RIME_0500_LISTEN_TO_SUSPICIOUS,\n        RIME_0600_CLIENTS_TALK,\n        RIME_0700_DUPLEX_BOUNCER,\n        RIME_0800_CONTACT_APPEARS,\n        RIME_0900_FOLLOW_INSTRUCTION,\n        RIME_1000_FACTORY_FOUND,\n        //RIME_1100_WE_GOT_YOUR_BACK,\n        RIME_1100_GRAB_THE_ALCOHOL,\n        RIME_1200_GET_TO_THE_VESSEL,\n        RIME_1300_ON_THE_WAY_TO_VESSEL,\n        RIME_1400_HANDLE,\n        RIME_1500_WAIT_FOR_THE_SIGNAL,\n        RIME_1600_THIS_IS_OUR_CHANCE,\n        RIME_1650_PLACE,\n        RIME_1700_HURRY_UP,\n        RIME_1800_CARGO_PLANTED,\n        RIME_1900_BACK_TO_THE_REEF,\n        RIME_2000_REEF_TALK,\n        RIME_2100_HE_IS_GONE,\n        RIME_2200_HE_SPOTTED_US,\n\n        RESEARCH_VESSEL_0100_INTRO,\n        RESEARCH_VESSEL_0200_INCOMINGSHIPS,\n        RESEARCH_VESSEL_0250_YOUASKEDFORIT,\n        RESEARCH_VESSEL_0300_FORTIFIED,\n        RESEARCH_VESSEL_0400_LOOKATTHIS,\n        RESEARCH_VESSEL_0500_FIRSTPARTS,\n        RESEARCH_VESSEL_0600_SECONDPARTS,\n        RESEARCH_VESSEL_0700_THIRDPARTS,\n        RESEARCH_VESSEL_0800_FORCEFIELDDOWN,\n        RESEARCH_VESSEL_0900_FOURTHPARTS,\n        RESEARCH_VESSEL_1000_FIRSTHUB,\n        RESEARCH_VESSEL_1100_SECONDHUB,\n        RESEARCH_VESSEL_1200_THIRDHUB,\n\n        EAC_AMBUSH_0100_INTRO,\n        EAC_AMBUSH_0200_MANJEET,\n        EAC_AMBUSH_0300_GUYS_HURRY_UP,\n        EAC_AMBUSH_0400_MARCUS_TO_EAC,\n        EAC_AMBUSH_0500_ONE_LITTLE_ISSUE,\n        EAC_AMBUSH_0700_SPLIT_TO_DESTROY_GENERATORS,\n        EAC_AMBUSH_0800,\n        EAC_AMBUSH_0900,\n        EAC_AMBUSH_1000,\n        EAC_AMBUSH_1100,\n        EAC_AMBUSH_1200_1300,\n        EAC_AMBUSH_1400,\n        EAC_AMBUSH_1500,\n        EAC_AMBUSH_1600,\n        EAC_AMBUSH_1650,\n        EAC_AMBUSH_1700,\n\n\n\n        RIFT_0050_INTRO,\n        RIFT_0100_INTRO2,\n        RIFT_0200_STATION,\n        RIFT_0300_TOURISTS,\n        RIFT_0400_SHOPPINGDONE,\n        RIFT_0500_ENTERINGRIFT,\n        RIFT_0600_MINING,\n        RIFT_0700_MINING_COLOR,\n        RIFT_0800_MINING_TUNE,\n        RIFT_0900_MINING_TUNE_2,\n        RIFT_1000_MINING_DONE,\n        RIFT_1100_LEAVING,\n\n\n        BARTHS_MOON_PLANT_0100,\n        BARTHS_MOON_PLANT_0200,\n        BARTHS_MOON_PLANT_0300,\n        BARTHS_MOON_PLANT_0400,\n        BARTHS_MOON_PLANT_0500,\n        BARTHS_MOON_PLANT_0600,\n        BARTHS_MOON_PLANT_0700,\n        BARTHS_MOON_PLANT_0800,\n        BARTHS_MOON_PLANT_0900,\n        BARTHS_MOON_PLANT_1000,\n        BARTHS_MOON_PLANT_1100,\n        BARTHS_MOON_PLANT_1200,\n\n\n\n        CHINESE_TRANSMITTER_0100_INTRODUCE,\n        CHINESE_TRANSMITTER_0200_CARGO_BAY,\n        CHINESE_TRANSMITTER_0300_CARGO_BAY_2,\n        CHINESE_TRANSMITTER_0400_SECURITY_ROOM = 903,\n        CHINESE_TRANSMITTER_0500_GENERATOR_DESTROYED,\n        CHINESE_TRANSMITTER_0600_CIC_FOUND,\n        CHINESE_TRANSMITTER_0700_HUB_HACKED,\n        CHINESE_TRANSMITTER_0800_TRANSMITTER_PLACED,\n        CHINESE_TRANSMITTER_0900_ESCAPE_2,\n        CHINESE_TRANSMITTER_1000_MISSION_COMPLETE,\n\n\n        RUSSIAN_TRANSMITTER_0100_INTRO,\n        RUSSIAN_TRANSMITTER_0200_BACKDOOR,\n        RUSSIAN_TRANSMITTER_0300_FINDHUB,\n        RUSSIAN_TRANSMITTER_0400_HUBFOUND,\n        RUSSIAN_TRANSMITTER_0500_0600_HACKPROBLEM_STRANGERCALLS,\n        RUSSIAN_TRANSMITTER_0700_STRANGERPROPOSAL,\n        RUSSIAN_TRANSMITTER_0700_VOLODIAINTRO,\n        RUSSIAN_TRANSMITTER_0800_NEARCARGO,\n        RUSSIAN_TRANSMITTER_0900_VOLODIA_RANT,\n        RUSSIAN_TRANSMITTER_1000_VOLODIA_FOUND,\n        RUSSIAN_TRANSMITTER_1100_MADELYNSCARED,\n        RUSSIAN_TRANSMITTER_1300_APOLLOSCARED,\n        RUSSIAN_TRANSMITTER_1400_RETREAT,\n        RUSSIAN_TRANSMITTER_1500_IFITDOESNOTWORK,\n        RUSSIAN_TRANSMITTER_1600_ITSWORKING,\n        RUSSIAN_TRANSMITTER_1700_UPLOADINGSIGNAL,\n        RUSSIAN_TRANSMITTER_1800_BADROUTE,\n        RUSSIAN_TRANSMITTER_1900_PLACEDEVICE,\n        RUSSIAN_TRANSMITTER_2000_DEVICEWORKING,\n        RUSSIAN_TRANSMITTER_2100_WEMADEIT,\n        RUSSIAN_TRANSMITTER_2200_THOMASCHAT,\n\n        REICHSTAG_A_0100_INTRODUCTION,\n        REICHSTAG_A_0200_ON_THE_WAY,\n        REICHSTAG_A_0300_REACHING_REICHSTAG,\n        REICHSTAG_A_0400_OFFICER_DIALOGUE,\n        REICHSTAG_A_0500_ON_THE_WAY_BACK,\n\n\n        WHITEWOLVES_RESEARCH_0100_COLLECT,\n        WHITEWOLVES_RESEARCH_0200_ENTER,\n        WHITEWOLVES_RESEARCH_0300_COLLECT2,\n        WHITEWOLVES_RESEARCH_0350_SICKEN,\n        WHITEWOLVES_RESEARCH_0400_FIND,\n        WHITEWOLVES_RESEARCH_0500_GET_OUT,\n        WHITEWOLVES_RESEARCH_0550_GET_OUT_SUCCESS,\n        WHITEWOLVES_RESEARCH_0600_DESTROY,\n        WHITEWOLVES_RESEARCH_0700_RETURN,\n\n\n   \n\n        REICHSTAG_C_0100_OFFICER_TALK,\n        REICHSTAG_C_0200_ON_THE_WAY,\n        REICHSTAG_C_0300_REACHING_SHIPYARD,\n        REICHSTAG_C_0400_SUPPLY_OFFICER,\n        REICHSTAG_C_0500_REACHING_SHIPS,\n        REICHSTAG_C_0600_SHIPS_PICKUPED,\n        REICHSTAG_C_0700_SHIPYARD_SHOP,\n        REICHSTAG_C_0800_SHOPPING_FINISHED,\n        REICHSTAG_C_0900_TRANSPORTER_REACHED,\n\n\n        TWIN_TOWERS_0100_INTRO,\n        TWIN_TOWERS_0200_PLACE_EXPLOSIVES,\n        TWIN_TOWERS_0300_player_reaching_the_main_electricity_supply,\n        TWIN_TOWERS_0400_reaching_a_hangar_with_unmanned_enemy_small_ships,\n        TWIN_TOWERS_0500_reaching_electricity_distribution_HUB,\n        TWIN_TOWERS_0600_after_all_the_sabotages_are_done,\n        TWIN_TOWERS_0700_Meeting_point,\n        TWIN_TOWERS_0800_command_center_cleared,\n        TWIN_TOWERS_0900_hacker_reaches_computer,\n        TWIN_TOWERS_1000_through_the_fight,\n        TWIN_TOWERS_1100_hacking_gets_jammed,\n        TWIN_TOWERS_1200_killing_jammer,\n        TWIN_TOWERS_1300_hacking_done,\n        TWIN_TOWERS_1400_clearing_first_control_room,\n        TWIN_TOWERS_1500_clearing_second_control_room,\n        TWIN_TOWERS_1600_in_tower_B,\n        TWIN_TOWERS_1700_reactor_shut_down,\n        TWIN_TOWERS_1800_computer_hacked,\n        TWIN_TOWERS_1900_motherships_arrived,\n        TWIN_TOWERS_2000_destroying_the_generator,\n        TWIN_TOWERS_2100_destroying_batteries,\n\n\n\n\n\n        EAC_PRISON_0100,\n        EAC_PRISON_0200,\n        EAC_PRISON_0300,\n        EAC_PRISON_0400,\n        EAC_PRISON_0500,\n        EAC_PRISON_0600,\n        EAC_PRISON_0700,\n        EAC_PRISON_0800,\n        EAC_PRISON_0900,\n        EAC_PRISON_1000,\n        EAC_PRISON_1100,\n        EAC_PRISON_1200,\n        EAC_PRISON_1250,\n        EAC_PRISON_1300,\n        EAC_PRISON_1400,\n        EAC_PRISON_1500,\n        EAC_PRISON_1600,\n\n\n\n        EAC_TRANSMITTER_0100,\n        EAC_TRANSMITTER_0200,\n        EAC_TRANSMITTER_0300,\n        EAC_TRANSMITTER_0400,\n        EAC_TRANSMITTER_0500,\n        EAC_TRANSMITTER_0600,\n        EAC_TRANSMITTER_0700,\n        EAC_TRANSMITTER_0800,\n        EAC_TRANSMITTER_0900,\n        EAC_TRANSMITTER_1000,\n        EAC_TRANSMITTER_1100,\n        EAC_TRANSMITTER_1200,\n        EAC_TRANSMITTER_1300,\n        EAC_TRANSMITTER_1400,\n\n\n\n\n        ALIEN_GATE_0100,\n        ALIEN_GATE_0200,\n        ALIEN_GATE_0300,\n        ALIEN_GATE_0400,\n        ALIEN_GATE_0500,\n        ALIEN_GATE_0600,\n        ALIEN_GATE_0700,\n        ALIEN_GATE_0800,\n        ALIEN_GATE_0800B,\n        ALIEN_GATE_0900,\n        ALIEN_GATE_1000,\n        ALIEN_GATE_1100,\n        ALIEN_GATE_1200,\n        ALIEN_GATE_1300,\n        ALIEN_GATE_1400,\n        ALIEN_GATE_1500,\n        ALIEN_GATE_1600,\n        ALIEN_GATE_1700,\n        ALIEN_GATE_1800,\n        ALIEN_GATE_1900,\n        ALIEN_GATE_2000,\n        //ALIEN_GATE_2100,\n        ALIEN_GATE_2200,\n        ALIEN_GATE_2300,\n        ALIEN_GATE_2400,\n        ALIEN_GATE_2500,\n        ALIEN_GATE_2600,\n        ALIEN_GATE_2700,\n        ALIEN_GATE_2800,\n        ALIEN_GATE_2900,\n        ALIEN_GATE_3000,\n        //ALIEN_GATE_3100,\n        ALIEN_GATE_3200,\n        ALIEN_GATE_3300,\n    }\n\n    static class MyDialogueConstants\n    {\n        public const int MAX_SENTENCE_LENGTH = 120;\n\n        static Dictionary<int, MyDialogue> m_dialogues = new Dictionary<int, MyDialogue>();\n\n        public static MyDialogue GetDialogue(MyDialogueEnum id)\n        {\n            MyDialogue result = null;\n            m_dialogues.TryGetValue((int)id, out result);\n            return result;\n        }\n\n        static void Validate()\n        {\n            // has every enum its added dialogue?\n            foreach (var o in Enum.GetValues(typeof (MyDialogueEnum)))\n            {\n                var id = (o as MyDialogueEnum?).Value;\n                var dialogue = GetDialogue(id);\n                MyCommonDebugUtils.AssertDebug(\n                    dialogue != null, string.Format(\"Dialogue with id={0} wasn't added!\", (int) id));\n            }\n\n            // has every added dialogue its enum?\n            foreach (var dialogue in m_dialogues)\n            {\n                MyCommonDebugUtils.AssertDebug(\n                    Enum.IsDefined(typeof (MyDialogueEnum), dialogue.Key),\n                    string.Format(\"Dialogue with id={0} doesn't have a corresponding enum value!\", dialogue.Key));\n            }\n\n            // are the texts short enough?\n            foreach (var dialogue in m_dialogues)\n            {\n                if (dialogue.Key != (int) MyDialogueEnum.TEST)\n                {\n                    foreach (var sentence in dialogue.Value.Sentences)\n                    {\n                        // TODO: we should try rendering it instead\n                        MyCommonDebugUtils.AssertDebug(\n                            MyDialoguesWrapper.Get(sentence.Text).Length <= MAX_SENTENCE_LENGTH,\n                            string.Format(\n                                \"Sentence too long in dialogue id={0} (length = {2} > {3}): \\\"{1}\\\"\",\n                                dialogue.Key,\n                                MyDialoguesWrapper.Get(sentence.Text),\n                                MyDialoguesWrapper.Get(sentence.Text).Length,\n                                MAX_SENTENCE_LENGTH));\n                    }\n                }\n            }\n        }\n\n        static MyDialogueConstants()\n        {\n            MyMwcLog.WriteLine(\"MyDialogueConstants()\");\n\n            m_dialogues.Add((int)MyDialogueEnum.NONE, new MyDialogue(\n                new MyDialogueSentence[] { },\n                MyDialoguePriorityEnum.LOW\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.TEST, new MyDialogue(\n                new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.APOLLO, null, MyDialoguesWrapperEnum.Dlg_Test01, noise: 0.5f),\n                new MyDialogueSentence(MyActorEnum.MARCUS, null, MyDialoguesWrapperEnum.Dlg_Test02, noise: 0.25f),\n                new MyDialogueSentence(MyActorEnum.APOLLO, null, MyDialoguesWrapperEnum.Dlg_Test03),\n            }\n            ));\n\n            #region EAC Survey Site\n            /*\n            m_dialogues.Add((int)MyDialogueEnum.EAC_SURVEY_SITE_0100_BEGINING, new MyDialogue(\n                new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_EACSurveySite_0001, MyDialoguesWrapperEnum.Dlg_EACSurveySite_0100),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_EACSurveySite_0002, MyDialoguesWrapperEnum.Dlg_EACSurveySite_0101),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_EACSurveySite_0003, MyDialoguesWrapperEnum.Dlg_EACSurveySite_0102),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_EACSurveySite_0004, MyDialoguesWrapperEnum.Dlg_EACSurveySite_0103),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_EACSurveySite_0005, MyDialoguesWrapperEnum.Dlg_EACSurveySite_0104),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_EACSurveySite_0006, MyDialoguesWrapperEnum.Dlg_EACSurveySite_0105),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_EACSurveySite_0007, MyDialoguesWrapperEnum.Dlg_EACSurveySite_0106),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_EACSurveySite_0008, MyDialoguesWrapperEnum.Dlg_EACSurveySite_0107),\n\n            }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.EAC_SURVEY_SITE_0150_BORINGCHAT, new MyDialogue(\n                new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_EACSurveySite_0009, MyDialoguesWrapperEnum.Dlg_EACSurveySite_1101),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_EACSurveySite_0010, MyDialoguesWrapperEnum.Dlg_EACSurveySite_1102),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_EACSurveySite_0011, MyDialoguesWrapperEnum.Dlg_EACSurveySite_1103),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_EACSurveySite_0012_01, MyDialoguesWrapperEnum.Dlg_EACSurveySite_1104),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_EACSurveySite_0012_02, MyDialoguesWrapperEnum.Dlg_EACSurveySite_1105),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_EACSurveySite_0013, MyDialoguesWrapperEnum.Dlg_EACSurveySite_1106),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_EACSurveySite_0014_01, MyDialoguesWrapperEnum.Dlg_EACSurveySite_1107),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_EACSurveySite_0014_02, MyDialoguesWrapperEnum.Dlg_EACSurveySite_1108),\n            }\n            ));\n            */\n            m_dialogues.Add((int)MyDialogueEnum.EAC_SURVEY_SITE_0200_ACTIONSTARTS, new MyDialogue(\n                new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.EacSurveySite_StationOperator, MySoundCuesEnum.Dlg_EACSurveySite_0015, MyDialoguesWrapperEnum.Dlg_EACSurveySite_0200),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_EACSurveySite_0016, MyDialoguesWrapperEnum.Dlg_EACSurveySite_0201),\n                new MyDialogueSentence(MyActorEnum.EacSurveySite_StationOperator, MySoundCuesEnum.Dlg_EACSurveySite_0017_01, MyDialoguesWrapperEnum.Dlg_EACSurveySite_0202),\n            }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.EAC_SURVEY_SITE_0205_ACTION, new MyDialogue(\n                new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.EacSurveySite_StationOperator, MySoundCuesEnum.Dlg_EACSurveySite_0017_02, MyDialoguesWrapperEnum.Dlg_EACSurveySite_0202),\n                new MyDialogueSentence(MyActorEnum.EacSurveySite_MilitaryOfficer, MySoundCuesEnum.Dlg_EACSurveySite_0018_01, MyDialoguesWrapperEnum.Dlg_EACSurveySite_0203),\n                new MyDialogueSentence(MyActorEnum.EacSurveySite_MilitaryOfficer, MySoundCuesEnum.Dlg_EACSurveySite_0018_02, MyDialoguesWrapperEnum.Dlg_EACSurveySite_0204),\n                new MyDialogueSentence(MyActorEnum.EacSurveySite_MilitaryOfficer, MySoundCuesEnum.Dlg_EACSurveySite_0018_03, MyDialoguesWrapperEnum.Dlg_EACSurveySite_0205),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_EACSurveySite_0019, MyDialoguesWrapperEnum.Dlg_EACSurveySite_0206),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_EACSurveySite_0020, MyDialoguesWrapperEnum.Dlg_EACSurveySite_0207),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_EACSurveySite_0021, MyDialoguesWrapperEnum.Dlg_EACSurveySite_0208),\n                new MyDialogueSentence(MyActorEnum.EacSurveySite_StationOperator, MySoundCuesEnum.Dlg_EACSurveySite_0022, MyDialoguesWrapperEnum.Dlg_EACSurveySite_0209),\n                new MyDialogueSentence(MyActorEnum.EacSurveySite_MilitaryCaptain, MySoundCuesEnum.Dlg_EACSurveySite_0023, MyDialoguesWrapperEnum.Dlg_EACSurveySite_0210),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_EACSurveySite_0024_01, MyDialoguesWrapperEnum.Dlg_EACSurveySite_0211),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_EACSurveySite_0024_02, MyDialoguesWrapperEnum.Dlg_EACSurveySite_0212),\n                new MyDialogueSentence(MyActorEnum.EacSurveySite_MilitaryCaptain, MySoundCuesEnum.Dlg_EACSurveySite_0025_01, MyDialoguesWrapperEnum.Dlg_EACSurveySite_0213), //Marcus, dont engage..\n                new MyDialogueSentence(MyActorEnum.EacSurveySite_MilitaryCaptain, MySoundCuesEnum.Dlg_EACSurveySite_1003, MyDialoguesWrapperEnum.Dlg_EACSurveySite_0213b), //We are overhelmed\n                new MyDialogueSentence(MyActorEnum.EacSurveySite_MilitaryCaptain, MySoundCuesEnum.Dlg_EACSurveySite_0025_02, MyDialoguesWrapperEnum.Dlg_EACSurveySite_0214), //Make your way\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_EACSurveySite_0026, MyDialoguesWrapperEnum.Dlg_EACSurveySite_0215),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_EACSurveySite_0027_01, MyDialoguesWrapperEnum.Dlg_EACSurveySite_0216),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_EACSurveySite_0027_02, MyDialoguesWrapperEnum.Dlg_EACSurveySite_0217),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_EACSurveySite_0028, MyDialoguesWrapperEnum.Dlg_EACSurveySite_0218),\n            }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.EAC_SURVEY_SITE_0300_CIVILIANSDESTROYED, new MyDialogue(\n                new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_EACSurveySite_0029, MyDialoguesWrapperEnum.Dlg_EACSurveySite_0301),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_EACSurveySite_1004, MyDialoguesWrapperEnum.Dlg_EACSurveySite_0301b),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_EACSurveySite_0030, MyDialoguesWrapperEnum.Dlg_EACSurveySite_0302),\n            }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.EAC_SURVEY_SITE_0400_BARRICADE, new MyDialogue(\n                new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_EACSurveySite_0031, MyDialoguesWrapperEnum.Dlg_EACSurveySite_0401),\n            }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.EAC_SURVEY_SITE_0450_MOTHERSHIPS, new MyDialogue(\n                new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_EACSurveySite_0034, MyDialoguesWrapperEnum.Dlg_EACSurveySite_0601),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_EACSurveySite_0035, MyDialoguesWrapperEnum.Dlg_EACSurveySite_0602),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_EACSurveySite_0036, MyDialoguesWrapperEnum.Dlg_EACSurveySite_0603),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_EACSurveySite_0037, MyDialoguesWrapperEnum.Dlg_EACSurveySite_0604),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_EACSurveySite_0038, MyDialoguesWrapperEnum.Dlg_EACSurveySite_0605),\n            }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.EAC_SURVEY_SITE_0500_TOBASE, new MyDialogue(\n                new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_EACSurveySite_0032_01, MyDialoguesWrapperEnum.Dlg_EACSurveySite_0501),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_EACSurveySite_0032_02, MyDialoguesWrapperEnum.Dlg_EACSurveySite_0502),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_EACSurveySite_0033, MyDialoguesWrapperEnum.Dlg_EACSurveySite_0503),\n            }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.EAC_SURVEY_SITE_0550_COMMANDOFFLINE, new MyDialogue(\n                new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_EACSurveySite_0039, MyDialoguesWrapperEnum.Dlg_EACSurveySite_0901),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_EACSurveySite_0040_01, MyDialoguesWrapperEnum.Dlg_EACSurveySite_0902),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_EACSurveySite_0040_02, MyDialoguesWrapperEnum.Dlg_EACSurveySite_0903),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_EACSurveySite_0041, MyDialoguesWrapperEnum.Dlg_EACSurveySite_0904),\n            }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.EAC_SURVEY_SITE_0560_GENERATORUP, new MyDialogue(\n                new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_EACSurveySite_0042, MyDialoguesWrapperEnum.Dlg_EACSurveySite_1001),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_EACSurveySite_0043, MyDialoguesWrapperEnum.Dlg_EACSurveySite_1002),  //Looks like it worked..\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_EACSurveySite_0044, MyDialoguesWrapperEnum.Dlg_EACSurveySite_1003), //Well, we could\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_EACSurveySite_1000, MyDialoguesWrapperEnum.Dlg_EACSurveySite_1003b), //Too bad\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_EACSurveySite_1001, MyDialoguesWrapperEnum.Dlg_EACSurveySite_1004), //Thats Traders..\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_EACSurveySite_1002, MyDialoguesWrapperEnum.Dlg_EACSurveySite_1005), //Check if...\n            }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.EAC_SURVEY_SITE_0700_MADELYN, new MyDialogue(\n                new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_EACSurveySite_0045, MyDialoguesWrapperEnum.Dlg_EACSurveySite_0701),\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_EACSurveySite_0046, MyDialoguesWrapperEnum.Dlg_EACSurveySite_0702),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_EACSurveySite_0047, MyDialoguesWrapperEnum.Dlg_EACSurveySite_0703),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_EACSurveySite_0048, MyDialoguesWrapperEnum.Dlg_EACSurveySite_0704),\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_EACSurveySite_0049_01, MyDialoguesWrapperEnum.Dlg_EACSurveySite_0705),\n                //new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_EACSurveySite_0049_02, MyDialoguesWrapperEnum.Dlg_EACSurveySite_0706),\n                //new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_EACSurveySite_0050, MyDialoguesWrapperEnum.Dlg_EACSurveySite_0707),\n                //new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_EACSurveySite_0051, MyDialoguesWrapperEnum.Dlg_EACSurveySite_0708),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_EACSurveySite_0052, MyDialoguesWrapperEnum.Dlg_EACSurveySite_0709),\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_EACSurveySite_0053_01, MyDialoguesWrapperEnum.Dlg_EACSurveySite_0710),\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_EACSurveySite_0053_02, MyDialoguesWrapperEnum.Dlg_EACSurveySite_0711),\n            }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.EAC_SURVEY_SITE_0705_MADELYN_2, new MyDialogue(\n                new MyDialogueSentence[] {\n                //Removed sentences about turrets and stupid guys\n                //new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_EACSurveySite_0053_01, MyDialoguesWrapperEnum.Dlg_EACSurveySite_0710),\n                //new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_EACSurveySite_0053_02, MyDialoguesWrapperEnum.Dlg_EACSurveySite_0711),\n                //new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_EACSurveySite_0053_03, MyDialoguesWrapperEnum.Dlg_EACSurveySite_0712),\n            }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.EAC_SURVEY_SITE_0750_NEAREND, new MyDialogue(\n                new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_EACSurveySite_0065, MyDialoguesWrapperEnum.Dlg_EACSurveySite_2101),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_EACSurveySite_0066, MyDialoguesWrapperEnum.Dlg_EACSurveySite_2102),\n            }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.EAC_SURVEY_SITE_0800_PICKUP, new MyDialogue(\n                new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_EACSurveySite_0067, MyDialoguesWrapperEnum.Dlg_EACSurveySite_0801),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_EACSurveySite_0068, MyDialoguesWrapperEnum.Dlg_EACSurveySite_0802),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_EACSurveySite_0069, MyDialoguesWrapperEnum.Dlg_EACSurveySite_0803),\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_EACSurveySite_0069_02, MyDialoguesWrapperEnum.Dlg_EACSurveySite_0804),\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_EACSurveySite_0069_03, MyDialoguesWrapperEnum.Dlg_EACSurveySite_0805),\n            }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.EAC_SURVEY_SITE_1000_RESEARCHERS_1, new MyDialogue(\n                new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.Researcher1, MySoundCuesEnum.Dlg_EACSurveySite_0054, MyDialoguesWrapperEnum.Dlg_EACSurveySite_1201),\n                new MyDialogueSentence(MyActorEnum.Researcher2, MySoundCuesEnum.Dlg_EACSurveySite_0055_01, MyDialoguesWrapperEnum.Dlg_EACSurveySite_1202),\n                new MyDialogueSentence(MyActorEnum.Researcher2, MySoundCuesEnum.Dlg_EACSurveySite_0055_02, MyDialoguesWrapperEnum.Dlg_EACSurveySite_1203),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_EACSurveySite_0056, MyDialoguesWrapperEnum.Dlg_EACSurveySite_1204),\n            }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.EAC_SURVEY_SITE_1100_RESEARCHERS_2, new MyDialogue(\n                new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.Researcher2, MySoundCuesEnum.Dlg_EACSurveySite_0057, MyDialoguesWrapperEnum.Dlg_EACSurveySite_1301),\n                new MyDialogueSentence(MyActorEnum.Researcher1, MySoundCuesEnum.Dlg_EACSurveySite_0058, MyDialoguesWrapperEnum.Dlg_EACSurveySite_1302),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_EACSurveySite_0059, MyDialoguesWrapperEnum.Dlg_EACSurveySite_1303),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_EACSurveySite_0060_01, MyDialoguesWrapperEnum.Dlg_EACSurveySite_1304),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_EACSurveySite_0060_02, MyDialoguesWrapperEnum.Dlg_EACSurveySite_1305),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_EACSurveySite_0061, MyDialoguesWrapperEnum.Dlg_EACSurveySite_1306),\n                new MyDialogueSentence(MyActorEnum.Researcher1, MySoundCuesEnum.Dlg_EACSurveySite_0062, MyDialoguesWrapperEnum.Dlg_EACSurveySite_1307),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_EACSurveySite_0063, MyDialoguesWrapperEnum.Dlg_EACSurveySite_1308),\n                new MyDialogueSentence(MyActorEnum.Researcher2, MySoundCuesEnum.Dlg_EACSurveySite_0064, MyDialoguesWrapperEnum.Dlg_EACSurveySite_1309),\n            }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.EAC_SURVEY_SITE_1200_RUSSIANCHAT_01, new MyDialogue(\n                new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.RussianGeneral, MySoundCuesEnum.Dlg_EACSurveySite_0070, MyDialoguesWrapperEnum.Dlg_EACSurveySite_1401, noise: 0.9f),\n            }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.EAC_SURVEY_SITE_1300_RUSSIANCHAT_02, new MyDialogue(\n                new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.RussianGeneral, MySoundCuesEnum.Dlg_EACSurveySite_0071, MyDialoguesWrapperEnum.Dlg_EACSurveySite_1501, noise: 0.8f),\n            }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.EAC_SURVEY_SITE_1400_RUSSIANCHAT_03, new MyDialogue(\n                new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.RussianGeneral, MySoundCuesEnum.Dlg_EACSurveySite_0073, MyDialoguesWrapperEnum.Dlg_EACSurveySite_1601, noise: 0.9f),\n            }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.EAC_SURVEY_SITE_1500_RUSSIANCHAT_04, new MyDialogue(\n                new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.RussianCaptain, MySoundCuesEnum.Dlg_EACSurveySite_0076, MyDialoguesWrapperEnum.Dlg_EACSurveySite_1701, noise: 0.9f),\n                new MyDialogueSentence(MyActorEnum.RussianGeneral, MySoundCuesEnum.Dlg_EACSurveySite_0077, MyDialoguesWrapperEnum.Dlg_EACSurveySite_1702, noise: 0.9f),\n            }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.EAC_SURVEY_SITE_1600_RUSSIANCHAT_05, new MyDialogue(\n                new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.RussianGeneral, MySoundCuesEnum.Dlg_EACSurveySite_0078, MyDialoguesWrapperEnum.Dlg_EACSurveySite_1801, noise: 0.9f),\n            }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.EAC_SURVEY_SITE_1900_RUSSIANCHAT_06, new MyDialogue(\n                new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.RussianCaptain, MySoundCuesEnum.Dlg_EACSurveySite_0074, MyDialoguesWrapperEnum.Dlg_EACSurveySite_2201, noise: 0.9f),\n            }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.EAC_SURVEY_SITE_2000_RUSSIANCHAT_07, new MyDialogue(\n                new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.RussianGeneral, MySoundCuesEnum.Dlg_EACSurveySite_0075, MyDialoguesWrapperEnum.Dlg_EACSurveySite_2301, noise: 0.9f),\n            }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.EAC_SURVEY_SITE_2100_RUSSIANCHAT_08, new MyDialogue(\n                new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.RussianGeneral, MySoundCuesEnum.Dlg_EACSurveySite_0072, MyDialoguesWrapperEnum.Dlg_EACSurveySite_2401, noise: 0.9f),\n            }\n            ));\n            #endregion\n\n            #region Russian Warehouse\n            m_dialogues.Add((int)MyDialogueEnum.RUSSIAN_WAREHOUSE_0100, new MyDialogue(\n                new MyDialogueSentence[]\n                {\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_RussianWarehouse_1000, MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0101),\n                    new MyDialogueSentence(MyActorEnum.LorraineCardin, MySoundCuesEnum.Dlg_RussianWarehouse_1001, MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0102),\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_RussianWarehouse_1002, MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0103),\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_RussianWarehouse_1003, MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0104),\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_RussianWarehouse_1004, MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0105),\n                    new MyDialogueSentence(MyActorEnum.LorraineCardin, MySoundCuesEnum.Dlg_RussianWarehouse_1005, MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0106),\n                    new MyDialogueSentence(MyActorEnum.LorraineCardin, MySoundCuesEnum.Dlg_RussianWarehouse_1006, MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0107),\n                }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.RUSSIAN_WAREHOUSE_0200, new MyDialogue(\n                new MyDialogueSentence[]\n                {\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_RussianWarehouse_1007, MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0201),\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_RussianWarehouse_1008, MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0202),\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_RussianWarehouse_1009, MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0203),\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_RussianWarehouse_1010, MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0204),\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_RussianWarehouse_1011, MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0205),\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_RussianWarehouse_1012, MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0206),\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_RussianWarehouse_1013, MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0207),\n                    new MyDialogueSentence(MyActorEnum.LorraineCardin, MySoundCuesEnum.Dlg_RussianWarehouse_1014, MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0208),\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_RussianWarehouse_1015, MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0209),\n                }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.RUSSIAN_WAREHOUSE_0300, new MyDialogue(\n                new MyDialogueSentence[]\n                {\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_RussianWarehouse_1016, MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0301),\n                    new MyDialogueSentence(MyActorEnum.LorraineCardin, MySoundCuesEnum.Dlg_RussianWarehouse_1017, MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0302),\n                    new MyDialogueSentence(MyActorEnum.LorraineCardin, MySoundCuesEnum.Dlg_RussianWarehouse_1018, MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0303),\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_RussianWarehouse_1019, MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0304),\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_RussianWarehouse_1020, MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0305),\n                }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.RUSSIAN_WAREHOUSE_0400, new MyDialogue(\n                new MyDialogueSentence[]\n                {\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_RussianWarehouse_1021, MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0401),\n                }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.RUSSIAN_WAREHOUSE_0500, new MyDialogue(\n                new MyDialogueSentence[]\n                {\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_RussianWarehouse_1022, MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0501),\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_RussianWarehouse_1023, MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0502),\n                }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.RUSSIAN_WAREHOUSE_0600, new MyDialogue(\n                new MyDialogueSentence[]\n                {\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_RussianWarehouse_1024, MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0601),\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_RussianWarehouse_1025, MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0602),\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_RussianWarehouse_1026, MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0603),\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_RussianWarehouse_1027, MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0604),\n                    new MyDialogueSentence(MyActorEnum.LorraineCardin, MySoundCuesEnum.Dlg_RussianWarehouse_1028, MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0605),\n                }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.RUSSIAN_WAREHOUSE_0700, new MyDialogue(\n                new MyDialogueSentence[]\n                {\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_RussianWarehouse_1029, MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0701),\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_RussianWarehouse_1030, MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0702),\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_RussianWarehouse_1031, MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0703),\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_RussianWarehouse_1032, MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0704),\n                }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.RUSSIAN_WAREHOUSE_0800, new MyDialogue(\n                new MyDialogueSentence[]\n                {\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_RussianWarehouse_1033, MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0801),\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_RussianWarehouse_1034, MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0802),\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_RussianWarehouse_1035, MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0803),\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_RussianWarehouse_1036, MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0804),\n                    new MyDialogueSentence(MyActorEnum.LorraineCardin, MySoundCuesEnum.Dlg_RussianWarehouse_1037, MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0805, pauseBefore_ms: 3000),\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_RussianWarehouse_1038, MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0806),\n                    new MyDialogueSentence(MyActorEnum.LorraineCardin, MySoundCuesEnum.Dlg_RussianWarehouse_1039, MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0807),\n                    new MyDialogueSentence(MyActorEnum.LorraineCardin, MySoundCuesEnum.Dlg_RussianWarehouse_1040, MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0808/*, pauseBefore_ms: 300*/),\n                    new MyDialogueSentence(MyActorEnum.LorraineCardin, MySoundCuesEnum.Dlg_RussianWarehouse_1041, MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0809),\n                    new MyDialogueSentence(MyActorEnum.LorraineCardin, MySoundCuesEnum.Dlg_RussianWarehouse_1042, MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0810),\n                    new MyDialogueSentence(MyActorEnum.LorraineCardin, MySoundCuesEnum.Dlg_RussianWarehouse_1043, MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0811),\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_RussianWarehouse_1044, MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0812),\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_RussianWarehouse_1045, MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0813),\n                }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.RUSSIAN_WAREHOUSE_0900, new MyDialogue(\n                new MyDialogueSentence[]\n                {\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_RussianWarehouse_1046, MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0901),\n                    new MyDialogueSentence(MyActorEnum.LorraineCardin, MySoundCuesEnum.Dlg_RussianWarehouse_1047, MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0902),\n                    new MyDialogueSentence(MyActorEnum.LorraineCardin, MySoundCuesEnum.Dlg_RussianWarehouse_1048, MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0903),\n                }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.RUSSIAN_WAREHOUSE_1000, new MyDialogue(\n                new MyDialogueSentence[]\n                {\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_RussianWarehouse_1049, MyDialoguesWrapperEnum.Dlg_RussianWarehouse_1001),\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_RussianWarehouse_1050, MyDialoguesWrapperEnum.Dlg_RussianWarehouse_1002),\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_RussianWarehouse_1051, MyDialoguesWrapperEnum.Dlg_RussianWarehouse_1003),\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_RussianWarehouse_1052, MyDialoguesWrapperEnum.Dlg_RussianWarehouse_1004),\n                }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.RUSSIAN_WAREHOUSE_1100, new MyDialogue(\n                new MyDialogueSentence[]\n                {\n                    new MyDialogueSentence(MyActorEnum.LorraineCardin, MySoundCuesEnum.Dlg_RussianWarehouse_1053, MyDialoguesWrapperEnum.Dlg_RussianWarehouse_1101),\n                    new MyDialogueSentence(MyActorEnum.LorraineCardin, MySoundCuesEnum.Dlg_RussianWarehouse_1054, MyDialoguesWrapperEnum.Dlg_RussianWarehouse_1102),\n                    new MyDialogueSentence(MyActorEnum.LorraineCardin, MySoundCuesEnum.Dlg_RussianWarehouse_1055, MyDialoguesWrapperEnum.Dlg_RussianWarehouse_1103),\n                    new MyDialogueSentence(MyActorEnum.LorraineCardin, MySoundCuesEnum.Dlg_RussianWarehouse_1056, MyDialoguesWrapperEnum.Dlg_RussianWarehouse_1104),\n                    new MyDialogueSentence(MyActorEnum.LorraineCardin, MySoundCuesEnum.Dlg_RussianWarehouse_1057, MyDialoguesWrapperEnum.Dlg_RussianWarehouse_1105),\n                    new MyDialogueSentence(MyActorEnum.LorraineCardin, MySoundCuesEnum.Dlg_RussianWarehouse_1058, MyDialoguesWrapperEnum.Dlg_RussianWarehouse_1106),\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_RussianWarehouse_1059, MyDialoguesWrapperEnum.Dlg_RussianWarehouse_1107),\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_RussianWarehouse_1060, MyDialoguesWrapperEnum.Dlg_RussianWarehouse_1108),\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_RussianWarehouse_1061, MyDialoguesWrapperEnum.Dlg_RussianWarehouse_1109),\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_RussianWarehouse_1062, MyDialoguesWrapperEnum.Dlg_RussianWarehouse_1110),\n                }\n            ));\n\n            #endregion\n\n            #region Laika\n\n            m_dialogues.Add((int)MyDialogueEnum.LAIKA_0100_ARRIVAL, new MyDialogue(\n                new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_Laika_1000, MyDialoguesWrapperEnum.Dlg_Laika_0100),\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_Laika_1001, MyDialoguesWrapperEnum.Dlg_Laika_0102),\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_Laika_1002, MyDialoguesWrapperEnum.Dlg_Laika_0103),\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_Laika_1003, MyDialoguesWrapperEnum.Dlg_Laika_0104),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_Laika_1004, MyDialoguesWrapperEnum.Dlg_Laika_0105),\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_Laika_1005, MyDialoguesWrapperEnum.Dlg_Laika_0106),\n            }\n            ));\n                                                \n            m_dialogues.Add((int)MyDialogueEnum.LAIKA_0200_HANGAR, new MyDialogue(\n                new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_Laika_1006, MyDialoguesWrapperEnum.Dlg_Laika_0200),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_Laika_1007, MyDialoguesWrapperEnum.Dlg_Laika_0201),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_Laika_1008, MyDialoguesWrapperEnum.Dlg_Laika_0202),\n                    \n            }\n            ));                                   \n\n            m_dialogues.Add((int)MyDialogueEnum.LAIKA_0250_WAYTOHANGAR, new MyDialogue(\n                new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_Laika_1009, MyDialoguesWrapperEnum.Dlg_Laika_1501),\n                new MyDialogueSentence(MyActorEnum.LAIKA_OPERATOR, MySoundCuesEnum.Dlg_Laika_1010, MyDialoguesWrapperEnum.Dlg_Laika_1502),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_Laika_1011, MyDialoguesWrapperEnum.Dlg_Laika_1503),\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_Laika_1012, MyDialoguesWrapperEnum.Dlg_Laika_1504),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_Laika_1013, MyDialoguesWrapperEnum.Dlg_Laika_1505),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_Laika_1014, MyDialoguesWrapperEnum.Dlg_Laika_1506),\n                //new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_Laika_1015, MyDialoguesWrapperEnum.Dlg_Laika_1507),\n                //new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_Laika_1016, MyDialoguesWrapperEnum.Dlg_Laika_1508),\n            }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.LAIKA_0275_INSIDEHANGAR, new MyDialogue(\n                new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.LAIKA_OPERATOR, MySoundCuesEnum.Dlg_Laika_1017, MyDialoguesWrapperEnum.Dlg_Laika_1601),\n            }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.LAIKA_0277_DESTROYGENERATOR, new MyDialogue(\n    new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_Laika_1018, MyDialoguesWrapperEnum.Dlg_Laika_1607),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_Laika_1019, MyDialoguesWrapperEnum.Dlg_Laika_1608),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_Laika_1020, MyDialoguesWrapperEnum.Dlg_Laika_1602),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_Laika_1021, MyDialoguesWrapperEnum.Dlg_Laika_1603),\n                //new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_Laika_1022, MyDialoguesWrapperEnum.Dlg_Laika_1604),\n                new MyDialogueSentence(MyActorEnum.LAIKA_OPERATOR, MySoundCuesEnum.Dlg_Laika_1023, MyDialoguesWrapperEnum.Dlg_Laika_1605),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_Laika_1024, MyDialoguesWrapperEnum.Dlg_Laika_1606),\n            }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.LAIKA_0300_AFTERHANGAR, new MyDialogue(\n                new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_Laika_1025, MyDialoguesWrapperEnum.Dlg_Laika_0300),\n                //new MyDialogueSentence(MyActorEnum.MARCUS, null, MyDialoguesWrapperEnum.Dlg_Laika_0301),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_Laika_1026, MyDialoguesWrapperEnum.Dlg_Laika_0302),\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_Laika_1027, MyDialoguesWrapperEnum.Dlg_Laika_0303),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_Laika_1028, MyDialoguesWrapperEnum.Dlg_Laika_0303a),\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_Laika_1029, MyDialoguesWrapperEnum.Dlg_Laika_0303b),\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_Laika_1030, MyDialoguesWrapperEnum.Dlg_Laika_0303c),\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_Laika_1031, MyDialoguesWrapperEnum.Dlg_Laika_0304),\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_Laika_1032, MyDialoguesWrapperEnum.Dlg_Laika_0304a),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_Laika_1033, MyDialoguesWrapperEnum.Dlg_Laika_0305),\n              //  new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_Laika_1034, MyDialoguesWrapperEnum.Dlg_Laika_0306),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_Laika_1035, MyDialoguesWrapperEnum.Dlg_Laika_0307),\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_Laika_1036, MyDialoguesWrapperEnum.Dlg_Laika_0308),\n            }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.LAIKA_0350_GPS, new MyDialogue(\n              new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_Laika_1037, MyDialoguesWrapperEnum.Dlg_Laika_0309),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_Laika_1038, MyDialoguesWrapperEnum.Dlg_Laika_0310),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_Laika_1039, MyDialoguesWrapperEnum.Dlg_Laika_0311),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_Laika_1040, MyDialoguesWrapperEnum.Dlg_Laika_0312),\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_Laika_1041, MyDialoguesWrapperEnum.Dlg_Laika_0313),\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_Laika_1042, MyDialoguesWrapperEnum.Dlg_Laika_0314),\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_Laika_1043, MyDialoguesWrapperEnum.Dlg_Laika_0314a),\n                //new MyDialogueSentence(MyActorEnum.MADELYN, null, MyDialoguesWrapperEnum.Dlg_Laika_0315),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_Laika_1044, MyDialoguesWrapperEnum.Dlg_Laika_0316),\n            }\n          ));\n\n            m_dialogues.Add((int)MyDialogueEnum.LAIKA_0400_MARKETPLACE, new MyDialogue(\n                new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_Laika_1045, MyDialoguesWrapperEnum.Dlg_Laika_0400),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_Laika_1046, MyDialoguesWrapperEnum.Dlg_Laika_0401),\n            }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.LAIKA_0480_COMMANDARRIVE, new MyDialogue(\n                new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_Laika_1047, MyDialoguesWrapperEnum.Dlg_Laika_1701),\n            }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.LAIKA_0500_COMMAND, new MyDialogue(\n                new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_Laika_1048, MyDialoguesWrapperEnum.Dlg_Laika_0500),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_Laika_1049, MyDialoguesWrapperEnum.Dlg_Laika_0501),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_Laika_1050, MyDialoguesWrapperEnum.Dlg_Laika_0502),\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_Laika_1051, MyDialoguesWrapperEnum.Dlg_Laika_0503),\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_Laika_1052, MyDialoguesWrapperEnum.Dlg_Laika_0504),\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_Laika_1053, MyDialoguesWrapperEnum.Dlg_Laika_0505),\n            }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.LAIKA_0600_TOPIPE, new MyDialogue(\n                new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_Laika_1054, MyDialoguesWrapperEnum.Dlg_Laika_0600),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_Laika_1055, MyDialoguesWrapperEnum.Dlg_Laika_0601),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_Laika_1082, MyDialoguesWrapperEnum.Dlg_Laika_0602),\n            }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.LAIKA_0700_LEFTHUB, new MyDialogue(\n                new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_Laika_1056, MyDialoguesWrapperEnum.Dlg_Laika_0700),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_Laika_1057, MyDialoguesWrapperEnum.Dlg_Laika_0701),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_Laika_1058, MyDialoguesWrapperEnum.Dlg_Laika_0702),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_Laika_1059, MyDialoguesWrapperEnum.Dlg_Laika_0703),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_Laika_1060, MyDialoguesWrapperEnum.Dlg_Laika_0704),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_Laika_1061, MyDialoguesWrapperEnum.Dlg_Laika_0705),\n            }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.LAIKA_0700_LEFTHUB2, new MyDialogue(\n              new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_Laika_1062, MyDialoguesWrapperEnum.Dlg_Laika_0706),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_Laika_1063, MyDialoguesWrapperEnum.Dlg_Laika_0707),\n\n                new MyDialogueSentence(MyActorEnum.RussianGeneralRecording, MySoundCuesEnum.Dlg_Laika_1064, MyDialoguesWrapperEnum.Dlg_Laika_0708, noise: 0.9f),\n                new MyDialogueSentence(MyActorEnum.RussianGeneralRecording, MySoundCuesEnum.Dlg_Laika_1065, MyDialoguesWrapperEnum.Dlg_Laika_0709, noise: 0.9f),\n                new MyDialogueSentence(MyActorEnum.RussianGeneralRecording, MySoundCuesEnum.Dlg_Laika_1066, MyDialoguesWrapperEnum.Dlg_Laika_0710, noise: 0.9f),\n                new MyDialogueSentence(MyActorEnum.RussianGeneralRecording, MySoundCuesEnum.Dlg_Laika_1067, MyDialoguesWrapperEnum.Dlg_Laika_0711, noise: 0.9f),\n\n                new MyDialogueSentence(MyActorEnum.RussianHeadquartersRecording, MySoundCuesEnum.Dlg_Laika_1068, MyDialoguesWrapperEnum.Dlg_Laika_0712, noise: 0.9f),\n                new MyDialogueSentence(MyActorEnum.RussianHeadquartersRecording, MySoundCuesEnum.Dlg_Laika_1069, MyDialoguesWrapperEnum.Dlg_Laika_0712a, noise: 0.9f/*, pauseBefore_ms: 200*/),\n                new MyDialogueSentence(MyActorEnum.RussianHeadquartersRecording, MySoundCuesEnum.Dlg_Laika_1070, MyDialoguesWrapperEnum.Dlg_Laika_0713, noise: 0.9f),\n                new MyDialogueSentence(MyActorEnum.RussianHeadquartersRecording, MySoundCuesEnum.Dlg_Laika_1071, MyDialoguesWrapperEnum.Dlg_Laika_0714, noise: 0.9f),\n\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_Laika_1072, MyDialoguesWrapperEnum.Dlg_Laika_0715),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_Laika_1073, MyDialoguesWrapperEnum.Dlg_Laika_0716),\n                \n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_Laika_1074, MyDialoguesWrapperEnum.Dlg_Laika_0717),\n\n\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_Laika_1075, MyDialoguesWrapperEnum.Dlg_Laika_0718),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_Laika_1076, MyDialoguesWrapperEnum.Dlg_Laika_0719),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_Laika_1077, MyDialoguesWrapperEnum.Dlg_Laika_0720),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_Laika_1078, MyDialoguesWrapperEnum.Dlg_Laika_0721),\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_Laika_1079, MyDialoguesWrapperEnum.Dlg_Laika_0722),\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_Laika_1080, MyDialoguesWrapperEnum.Dlg_Laika_0723),\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_Laika_1081, MyDialoguesWrapperEnum.Dlg_Laika_0724),\n                \n            }\n          ));\n\n            m_dialogues.Add((int)MyDialogueEnum.LAIKA_0720_AFTERLEFTHUB, new MyDialogue(\n                new MyDialogueSentence[] {\n                //new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_Laika_1082, MyDialoguesWrapperEnum.Dlg_Laika_0723),\n                //new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_Laika_1083, MyDialoguesWrapperEnum.Dlg_Laika_0724),\n            }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.LAIKA_0800_RIGHTHUB, new MyDialogue(\n                new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_Laika_1084, MyDialoguesWrapperEnum.Dlg_Laika_0800),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_Laika_1085, MyDialoguesWrapperEnum.Dlg_Laika_0801),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_Laika_1086, MyDialoguesWrapperEnum.Dlg_Laika_0802),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_Laika_1087, MyDialoguesWrapperEnum.Dlg_Laika_0803),\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_Laika_1088, MyDialoguesWrapperEnum.Dlg_Laika_0804),\n                //new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_Laika_1089, MyDialoguesWrapperEnum.Dlg_Laika_0805),\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_Laika_1090, MyDialoguesWrapperEnum.Dlg_Laika_0806),\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_Laika_1091, MyDialoguesWrapperEnum.Dlg_Laika_0807),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_Laika_1092, MyDialoguesWrapperEnum.Dlg_Laika_0808),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_Laika_1093, MyDialoguesWrapperEnum.Dlg_Laika_0809),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_Laika_1094, MyDialoguesWrapperEnum.Dlg_Laika_0810),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_Laika_1095, MyDialoguesWrapperEnum.Dlg_Laika_0811),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_Laika_1096, MyDialoguesWrapperEnum.Dlg_Laika_0812),\n            }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.LAIKA_0900_WARHEAD, new MyDialogue(\n                new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_Laika_1097, MyDialoguesWrapperEnum.Dlg_Laika_0900),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_Laika_1098, MyDialoguesWrapperEnum.Dlg_Laika_0901),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_Laika_1099, MyDialoguesWrapperEnum.Dlg_Laika_0902),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_Laika_1100, MyDialoguesWrapperEnum.Dlg_Laika_0903),\n           }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.LAIKA_0950_WARHEAD_HACK, new MyDialogue(\n                new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_Laika_1101, MyDialoguesWrapperEnum.Dlg_Laika_0950),\n            }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.LAIKA_1800_WARHEAD_DONE, new MyDialogue(\n                new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_Laika_1102, MyDialoguesWrapperEnum.Dlg_Laika_1800),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_Laika_1103, MyDialoguesWrapperEnum.Dlg_Laika_1801),\n            }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.LAIKA_1800_WARHEAD_DONE2, new MyDialogue(\n               new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_Laika_1104, MyDialoguesWrapperEnum.Dlg_Laika_1802),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_Laika_1105, MyDialoguesWrapperEnum.Dlg_Laika_1803),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_Laika_1106, MyDialoguesWrapperEnum.Dlg_Laika_1804, pauseBefore_ms: 1500),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_Laika_1107, MyDialoguesWrapperEnum.Dlg_Laika_1805),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_Laika_1108, MyDialoguesWrapperEnum.Dlg_Laika_1805a),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_Laika_1109, MyDialoguesWrapperEnum.Dlg_Laika_1806),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_Laika_1110, MyDialoguesWrapperEnum.Dlg_Laika_1807),\n                new MyDialogueSentence(MyActorEnum.RUSSIAN_GENERAL, MySoundCuesEnum.Dlg_Laika_1126, MyDialoguesWrapperEnum.Dlg_Laika_1913),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_Laika_1111, MyDialoguesWrapperEnum.Dlg_Laika_1808, pauseBefore_ms: 1500),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_Laika_1112, MyDialoguesWrapperEnum.Dlg_Laika_1809),\n            }\n           ));\n\n            m_dialogues.Add((int)MyDialogueEnum.LAIKA_1900_ESCAPED, new MyDialogue(\n            new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_Laika_1113, MyDialoguesWrapperEnum.Dlg_Laika_1900),\n                new MyDialogueSentence(MyActorEnum.MARCUS,  MySoundCuesEnum.Dlg_Laika_1114, MyDialoguesWrapperEnum.Dlg_Laika_1901),\n                new MyDialogueSentence(MyActorEnum.APOLLO,  MySoundCuesEnum.Dlg_Laika_1115, MyDialoguesWrapperEnum.Dlg_Laika_1902),\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_Laika_1116, MyDialoguesWrapperEnum.Dlg_Laika_1903),\n                new MyDialogueSentence(MyActorEnum.MARCUS,  MySoundCuesEnum.Dlg_Laika_1117, MyDialoguesWrapperEnum.Dlg_Laika_1904),\n                new MyDialogueSentence(MyActorEnum.MARCUS,  MySoundCuesEnum.Dlg_Laika_1118, MyDialoguesWrapperEnum.Dlg_Laika_1905),\n                new MyDialogueSentence(MyActorEnum.APOLLO,  MySoundCuesEnum.Dlg_Laika_1119, MyDialoguesWrapperEnum.Dlg_Laika_1906),\n                new MyDialogueSentence(MyActorEnum.APOLLO,  MySoundCuesEnum.Dlg_Laika_1120, MyDialoguesWrapperEnum.Dlg_Laika_1907),\n                new MyDialogueSentence(MyActorEnum.APOLLO,  MySoundCuesEnum.Dlg_Laika_1121, MyDialoguesWrapperEnum.Dlg_Laika_1908),\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_Laika_1122, MyDialoguesWrapperEnum.Dlg_Laika_1909),\n                new MyDialogueSentence(MyActorEnum.APOLLO,  MySoundCuesEnum.Dlg_Laika_1123, MyDialoguesWrapperEnum.Dlg_Laika_1910),\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_Laika_1124, MyDialoguesWrapperEnum.Dlg_Laika_1911),\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_Laika_1125, MyDialoguesWrapperEnum.Dlg_Laika_1912),\n            }\n));\n\n\n\n            /*\n  m_dialogues.Add((int)MyDialogueEnum.LAIKA_0905_STRESS01, new MyDialogue(\n      new MyDialogueSentence[] {\n      new MyDialogueSentence(MyActorEnum.MADELYN, null, MyDialoguesWrapperEnum.Dlg_Laika_1000),\n      new MyDialogueSentence(MyActorEnum.MARCUS, null, MyDialoguesWrapperEnum.Dlg_Laika_1001),\n  }\n  ));\n\n  m_dialogues.Add((int)MyDialogueEnum.LAIKA_0910_STRESS02, new MyDialogue(\n      new MyDialogueSentence[] {\n      new MyDialogueSentence(MyActorEnum.MADELYN, null, MyDialoguesWrapperEnum.Dlg_Laika_1100),\n  }\n  ));\n\n  m_dialogues.Add((int)MyDialogueEnum.LAIKA_0915_STRESS03, new MyDialogue(\n      new MyDialogueSentence[] {\n      new MyDialogueSentence(MyActorEnum.MADELYN, null, MyDialoguesWrapperEnum.Dlg_Laika_1200),\n  }\n  ));\n\n  m_dialogues.Add((int)MyDialogueEnum.LAIKA_0920_STRESS04, new MyDialogue(\n      new MyDialogueSentence[] {\n      new MyDialogueSentence(MyActorEnum.MADELYN, null, MyDialoguesWrapperEnum.Dlg_Laika_1300),\n      new MyDialogueSentence(MyActorEnum.MARCUS, null, MyDialoguesWrapperEnum.Dlg_Laika_1301),\n      new MyDialogueSentence(MyActorEnum.MADELYN, null, MyDialoguesWrapperEnum.Dlg_Laika_1302),\n      new MyDialogueSentence(MyActorEnum.MARCUS, null, MyDialoguesWrapperEnum.Dlg_Laika_1303),\n  }    \n  ));\n             */\n\n\n            #endregion\n\n            #region Chinese Transmitter\n            m_dialogues.Add((int)MyDialogueEnum.CHINESE_TRANSMITTER_0100_INTRODUCE, new MyDialogue(\n                new MyDialogueSentence[] {\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_ChineseTransmitter_1000, MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_01_01),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_ChineseTransmitter_1001, MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_01_02),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_ChineseTransmitter_1002, MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_01_03),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_ChineseTransmitter_1003, MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_01_04),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ChineseTransmitter_1004, MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_01_05),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_ChineseTransmitter_1005, MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_01_06),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_ChineseTransmitter_1006, MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_01_07),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ChineseTransmitter_1007, MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_01_08),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_ChineseTransmitter_1008, MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_01_09),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ChineseTransmitter_1009, MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_01_10),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_ChineseTransmitter_1010, MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_01_11),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ChineseTransmitter_1011, MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_01_12),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_ChineseTransmitter_1012, MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_01_13),\nnew MyDialogueSentence(MyActorEnum.CHINESE_OFFICER, MySoundCuesEnum.Dlg_ChineseTransmitter_1013, MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_01_14),\nnew MyDialogueSentence(MyActorEnum.CHINESE_OFFICER, MySoundCuesEnum.Dlg_ChineseTransmitter_1014, MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_01_15),\nnew MyDialogueSentence(MyActorEnum.CHINESE_OFFICER, MySoundCuesEnum.Dlg_ChineseTransmitter_1015, MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_01_16),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_ChineseTransmitter_1016, MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_01_17),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_ChineseTransmitter_1017, MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_01_18),\nnew MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_ChineseTransmitter_1018, MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_01_19),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ChineseTransmitter_1019, MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_01_20),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ChineseTransmitter_1020, MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_01_21),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_ChineseTransmitter_1021, MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_01_22),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ChineseTransmitter_1022, MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_01_23),\n\n            }\n                ));\n            m_dialogues.Add((int)MyDialogueEnum.CHINESE_TRANSMITTER_0200_CARGO_BAY, new MyDialogue(\n                new MyDialogueSentence[]{\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ChineseTransmitter_1023, MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_02_01),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ChineseTransmitter_1024, MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_02_02),\n//new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ChineseTransmitter_1025, MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_02_03),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_ChineseTransmitter_1026, MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_02_04),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ChineseTransmitter_1027, MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_02_05),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_ChineseTransmitter_1028, MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_02_06),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ChineseTransmitter_1029, MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_02_07),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_ChineseTransmitter_1030, MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_02_08),\n\n    }\n        ));\n            m_dialogues.Add((int)MyDialogueEnum.CHINESE_TRANSMITTER_0300_CARGO_BAY_2, new MyDialogue(\n                new MyDialogueSentence[]{\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_ChineseTransmitter_1031, MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_03_01),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_ChineseTransmitter_1032, MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_03_02),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ChineseTransmitter_1033, MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_03_03),\n    }\n        ));\n            m_dialogues.Add((int)MyDialogueEnum.CHINESE_TRANSMITTER_0400_SECURITY_ROOM, new MyDialogue(\n                new MyDialogueSentence[]{\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_ChineseTransmitter_1034, MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_04_01),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ChineseTransmitter_1035, MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_04_02),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_ChineseTransmitter_1036, MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_04_03),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ChineseTransmitter_1037, MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_04_04),\n    }\n        ));\n            m_dialogues.Add((int)MyDialogueEnum.CHINESE_TRANSMITTER_0500_GENERATOR_DESTROYED, new MyDialogue(\n                new MyDialogueSentence[]{\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ChineseTransmitter_1038, MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_05_01),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_ChineseTransmitter_1039, MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_05_02),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ChineseTransmitter_1040, MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_05_03),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_ChineseTransmitter_1041, MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_05_04),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ChineseTransmitter_1042, MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_05_05),\n    }\n        ));\n            m_dialogues.Add((int)MyDialogueEnum.CHINESE_TRANSMITTER_0600_CIC_FOUND, new MyDialogue(\n            new MyDialogueSentence[]{\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_ChineseTransmitter_1043, MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_06_01),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_ChineseTransmitter_1044, MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_06_02),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_ChineseTransmitter_1045, MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_06_03),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_ChineseTransmitter_1046, MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_06_04),\n//new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_ChineseTransmitter_1047, MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_06_05),\n\n    }\n    ));\n            m_dialogues.Add((int)MyDialogueEnum.CHINESE_TRANSMITTER_0700_HUB_HACKED, new MyDialogue(\n            new MyDialogueSentence[]{\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_ChineseTransmitter_1048, MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_07_01),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ChineseTransmitter_1049, MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_07_02),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_ChineseTransmitter_1050, MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_07_03),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ChineseTransmitter_1051, MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_07_04),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_ChineseTransmitter_1052, MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_07_05),\n\n    }\n    ));\n            m_dialogues.Add((int)MyDialogueEnum.CHINESE_TRANSMITTER_0800_TRANSMITTER_PLACED, new MyDialogue(\n                        new MyDialogueSentence[]{\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ChineseTransmitter_1053, MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_08_01),\n\n    }\n                ));\n            m_dialogues.Add((int)MyDialogueEnum.CHINESE_TRANSMITTER_0900_ESCAPE_2, new MyDialogue(\n                        new MyDialogueSentence[]{\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ChineseTransmitter_1054, MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_09_01),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_ChineseTransmitter_1055, MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_09_02),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ChineseTransmitter_1056, MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_09_03),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_ChineseTransmitter_1057, MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_09_04),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ChineseTransmitter_1058, MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_09_05),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ChineseTransmitter_1059, MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_09_06),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_ChineseTransmitter_1060, MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_09_07),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ChineseTransmitter_1061, MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_09_08),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_ChineseTransmitter_1062, MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_09_09),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ChineseTransmitter_1063, MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_09_10),\n\n    }\n                ));\n            m_dialogues.Add((int)MyDialogueEnum.CHINESE_TRANSMITTER_1000_MISSION_COMPLETE, new MyDialogue(\n                        new MyDialogueSentence[]{\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ChineseTransmitter_1064, MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_10_01),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_ChineseTransmitter_1065, MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_10_02),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ChineseTransmitter_1066, MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_10_03),\nnew MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_ChineseTransmitter_1067, MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_10_04),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ChineseTransmitter_1068, MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_10_05),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_ChineseTransmitter_1069, MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_10_06),\n\n    }\n                ));\n            #endregion\n\n            #region Slaver base\n\n            m_dialogues.Add(\n                (int)MyDialogueEnum.SLAVERBASE_0100_INTRODUCE,\n                new MyDialogue(\n                    new[]\n                        {\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_SlaverBaseWipeout_1000, MyDialoguesWrapperEnum.Dlg_SlaverBase_01_01),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_SlaverBaseWipeout_1001, MyDialoguesWrapperEnum.Dlg_SlaverBase_01_02),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_SlaverBaseWipeout_1002, MyDialoguesWrapperEnum.Dlg_SlaverBase_01_03),\n//new MyDialogueSentence(MyActorEnum.SLAVER_LEADER, MySoundCuesEnum.Dlg_SlaverBaseWipeout_1003, MyDialoguesWrapperEnum.Dlg_SlaverBase_01_04),\n//new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_SlaverBaseWipeout_1004, MyDialoguesWrapperEnum.Dlg_SlaverBase_01_05),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_SlaverBaseWipeout_1005, MyDialoguesWrapperEnum.Dlg_SlaverBase_01_06),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_SlaverBaseWipeout_1006, MyDialoguesWrapperEnum.Dlg_SlaverBase_01_07),\n\n                        }\n                    ));\n\n            m_dialogues.Add(\n                (int)MyDialogueEnum.SLAVERBASE_0200_GENERATORS_DESTROYED,\n                new MyDialogue(\n                    new[]\n                        {\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_SlaverBaseWipeout_1007, MyDialoguesWrapperEnum.Dlg_SlaverBase_02_01),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_SlaverBaseWipeout_1008, MyDialoguesWrapperEnum.Dlg_SlaverBase_02_02),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_SlaverBaseWipeout_1009, MyDialoguesWrapperEnum.Dlg_SlaverBase_02_03),\n\n                        }\n                    ));\n\n            m_dialogues.Add(\n                (int)MyDialogueEnum.SLAVERBASE_0300_BATTERIES_DESTROYED,\n                new MyDialogue(\n                    new[]\n                        {\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_SlaverBaseWipeout_1010, MyDialoguesWrapperEnum.Dlg_SlaverBase_03_01),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_SlaverBaseWipeout_1011, MyDialoguesWrapperEnum.Dlg_SlaverBase_03_02),\nnew MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_SlaverBaseWipeout_1012, MyDialoguesWrapperEnum.Dlg_SlaverBase_03_03),\n\n                        }\n                    ));\n\n            m_dialogues.Add(\n                (int)MyDialogueEnum.SLAVERBASE_0350_SLAVES_FOUND,\n                new MyDialogue(\n                    new[]\n                        {\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_SlaverBaseWipeout_1013, MyDialoguesWrapperEnum.Dlg_SlaverBase_04_01),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_SlaverBaseWipeout_1014, MyDialoguesWrapperEnum.Dlg_SlaverBase_04_02),\n\n                        }\n                    ));\n\n            /*m_dialogues.Add((int)MyDialogueEnum.SLAVERBASE2_1000_PRISON_FOUND, new MyDialogue(\n                new MyDialogueSentence[] {\n                    new MyDialogueSentence(MyActorEnum.Madelyn, null, MyDialoguesWrapperEnum.Dlg_SlaverBase2_0301),\n                }\n                ));*/\n\n            m_dialogues.Add(\n                (int)MyDialogueEnum.SLAVERBASE_0400_SLAVES_SAVED,\n                new MyDialogue(\n                    new[]\n                        {\nnew MyDialogueSentence(MyActorEnum.CAPTIVE, MySoundCuesEnum.Dlg_SlaverBaseWipeout_1015, MyDialoguesWrapperEnum.Dlg_SlaverBase_05_01),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_SlaverBaseWipeout_1016, MyDialoguesWrapperEnum.Dlg_SlaverBase_05_02),\nnew MyDialogueSentence(MyActorEnum.CAPTIVE, MySoundCuesEnum.Dlg_SlaverBaseWipeout_1017, MyDialoguesWrapperEnum.Dlg_SlaverBase_05_03),\nnew MyDialogueSentence(MyActorEnum.CAPTIVE, MySoundCuesEnum.Dlg_SlaverBaseWipeout_1018, MyDialoguesWrapperEnum.Dlg_SlaverBase_05_04),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_SlaverBaseWipeout_1019, MyDialoguesWrapperEnum.Dlg_SlaverBase_05_05),\nnew MyDialogueSentence(MyActorEnum.CAPTIVE, MySoundCuesEnum.Dlg_SlaverBaseWipeout_1020, MyDialoguesWrapperEnum.Dlg_SlaverBase_05_06),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_SlaverBaseWipeout_1021, MyDialoguesWrapperEnum.Dlg_SlaverBase_05_07),\n\n\n                        }\n                    ));\n\n            m_dialogues.Add(\n                (int)MyDialogueEnum.SLAVERBASE_0500_DOORS_OPENED,\n                new MyDialogue(\n                    new[]\n                        {\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_SlaverBaseWipeout_1022, MyDialoguesWrapperEnum.Dlg_SlaverBase_06_01),\n\n                        }\n                    ));\n\n            m_dialogues.Add(\n                (int)MyDialogueEnum.SLAVERBASE_0600_MOTHERSHIP_EMPTY,\n                new MyDialogue(\n                    new[]\n                        {\nnew MyDialogueSentence(MyActorEnum.CAPTIVE, MySoundCuesEnum.Dlg_SlaverBaseWipeout_1023, MyDialoguesWrapperEnum.Dlg_SlaverBase_07_01),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_SlaverBaseWipeout_1024, MyDialoguesWrapperEnum.Dlg_SlaverBase_07_02),\nnew MyDialogueSentence(MyActorEnum.CAPTIVE, MySoundCuesEnum.Dlg_SlaverBaseWipeout_1025, MyDialoguesWrapperEnum.Dlg_SlaverBase_07_03),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_SlaverBaseWipeout_1026, MyDialoguesWrapperEnum.Dlg_SlaverBase_07_04),\n\n                        }\n                    ));\n\n            m_dialogues.Add(\n                (int)MyDialogueEnum.SLAVERBASE_0700_PIT_EMPTY,\n                new MyDialogue(\n                    new[]\n                        {\n//new MyDialogueSentence(MyActorEnum.CAPTIVE_PILOT, MySoundCuesEnum.Dlg_SlaverBaseWipeout_1027, MyDialoguesWrapperEnum.Dlg_SlaverBase_08_01),\nnew MyDialogueSentence(MyActorEnum.CAPTIVE_PILOT, MySoundCuesEnum.Dlg_SlaverBaseWipeout_1028, MyDialoguesWrapperEnum.Dlg_SlaverBase_08_02),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_SlaverBaseWipeout_1029, MyDialoguesWrapperEnum.Dlg_SlaverBase_08_03),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_SlaverBaseWipeout_1030, MyDialoguesWrapperEnum.Dlg_SlaverBase_08_04),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_SlaverBaseWipeout_1031, MyDialoguesWrapperEnum.Dlg_SlaverBase_08_05),\nnew MyDialogueSentence(MyActorEnum.CAPTIVE_PILOT, MySoundCuesEnum.Dlg_SlaverBaseWipeout_1032, MyDialoguesWrapperEnum.Dlg_SlaverBase_08_06),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_SlaverBaseWipeout_1033, MyDialoguesWrapperEnum.Dlg_SlaverBase_08_07),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_SlaverBaseWipeout_1034, MyDialoguesWrapperEnum.Dlg_SlaverBase_08_08),\nnew MyDialogueSentence(MyActorEnum.CAPTIVE_PILOT, MySoundCuesEnum.Dlg_SlaverBaseWipeout_1035, MyDialoguesWrapperEnum.Dlg_SlaverBase_08_09),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_SlaverBaseWipeout_1036, MyDialoguesWrapperEnum.Dlg_SlaverBase_08_10),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_SlaverBaseWipeout_1037, MyDialoguesWrapperEnum.Dlg_SlaverBase_08_11),\n\n                        }\n                    ));\n\n            m_dialogues.Add(\n                (int)MyDialogueEnum.SLAVERBASE_0800_ENEMIES_DESTROYED,\n                new MyDialogue(\n                    new[]\n                        {\nnew MyDialogueSentence(MyActorEnum.CAPTIVE_PILOT, MySoundCuesEnum.Dlg_SlaverBaseWipeout_1038, MyDialoguesWrapperEnum.Dlg_SlaverBase_09_01),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_SlaverBaseWipeout_1039, MyDialoguesWrapperEnum.Dlg_SlaverBase_09_02),\n\n                        }\n                    ));\n\n            m_dialogues.Add(\n                (int)MyDialogueEnum.SLAVERBASE_1100_FAKE_ESCAPED,\n                new MyDialogue(\n                    new[]\n                        {\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_SlaverBaseWipeout_1040, MyDialoguesWrapperEnum.Dlg_SlaverBase_10_01),\nnew MyDialogueSentence(MyActorEnum.CAPTIVE_PILOT, MySoundCuesEnum.Dlg_SlaverBaseWipeout_1041, MyDialoguesWrapperEnum.Dlg_SlaverBase_10_02),\nnew MyDialogueSentence(MyActorEnum.CAPTIVE_PILOT, MySoundCuesEnum.Dlg_SlaverBaseWipeout_1042, MyDialoguesWrapperEnum.Dlg_SlaverBase_10_03),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_SlaverBaseWipeout_1043, MyDialoguesWrapperEnum.Dlg_SlaverBase_10_04),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_SlaverBaseWipeout_1044, MyDialoguesWrapperEnum.Dlg_SlaverBase_10_05),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_SlaverBaseWipeout_1045, MyDialoguesWrapperEnum.Dlg_SlaverBase_10_06),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_SlaverBaseWipeout_1046, MyDialoguesWrapperEnum.Dlg_SlaverBase_10_07),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_SlaverBaseWipeout_1047, MyDialoguesWrapperEnum.Dlg_SlaverBase_10_08),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_SlaverBaseWipeout_1048, MyDialoguesWrapperEnum.Dlg_SlaverBase_10_09),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_SlaverBaseWipeout_1049, MyDialoguesWrapperEnum.Dlg_SlaverBase_10_10),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_SlaverBaseWipeout_1050, MyDialoguesWrapperEnum.Dlg_SlaverBase_10_11),\n\n                        }\n                    ));\n\n            m_dialogues.Add(\n                (int)MyDialogueEnum.SLAVERBASE_0900_NUKE_HACKED,\n                new MyDialogue(\n                    new[]\n                        {\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_SlaverBaseWipeout_1051, MyDialoguesWrapperEnum.Dlg_SlaverBase_11_01),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_SlaverBaseWipeout_1052, MyDialoguesWrapperEnum.Dlg_SlaverBase_11_02),\n\n                        }\n                    ));\n\n            #endregion\n\n            #region Slaver base 2\n\n            m_dialogues.Add(\n                (int)MyDialogueEnum.SLAVERBASE2_0100_INTRO,\n                new MyDialogue(\n                    new[]\n                        {\n                            new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_SlaverBase2_1000, MyDialoguesWrapperEnum.Dlg_SlaverBase2_01_01),\n                            new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_SlaverBase2_1001, MyDialoguesWrapperEnum.Dlg_SlaverBase2_01_02),\n                        }\n                    ));\n\n            m_dialogues.Add(\n                (int)MyDialogueEnum.SLAVERBASE2_0200_DESTROY_TURRETS,\n                new MyDialogue(\n                    new[]\n                        {\n                            new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_SlaverBase2_1002, MyDialoguesWrapperEnum.Dlg_SlaverBase2_02_01),\n                            new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_SlaverBase2_1003, MyDialoguesWrapperEnum.Dlg_SlaverBase2_02_02),\n                            new MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_SlaverBase2_1004, MyDialoguesWrapperEnum.Dlg_SlaverBase2_02_03),\n                        }\n                    ));\n\n            m_dialogues.Add(\n                (int)MyDialogueEnum.SLAVERBASE2_0201_SLAVER_TALK,\n                new MyDialogue(\n                    new[]\n                        {\nnew MyDialogueSentence(MyActorEnum.SLAVER_BASE_CAPTAIN, MySoundCuesEnum.Dlg_SlaverBase2_1005, MyDialoguesWrapperEnum.Dlg_SlaverBase2_03_01),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_SlaverBase2_1006, MyDialoguesWrapperEnum.Dlg_SlaverBase2_03_02),\nnew MyDialogueSentence(MyActorEnum.SLAVER_BASE_CAPTAIN, MySoundCuesEnum.Dlg_SlaverBase2_1007, MyDialoguesWrapperEnum.Dlg_SlaverBase2_03_03),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_SlaverBase2_1008, MyDialoguesWrapperEnum.Dlg_SlaverBase2_03_04),\nnew MyDialogueSentence(MyActorEnum.SLAVER_BASE_CAPTAIN, MySoundCuesEnum.Dlg_SlaverBase2_1009, MyDialoguesWrapperEnum.Dlg_SlaverBase2_03_05),\n                        }\n                    ));\n\n            m_dialogues.Add(\n                (int)MyDialogueEnum.SLAVERBASE2_0300_TURRETS_DESTROYED,\n                new MyDialogue(\n                    new[]\n                        {\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_SlaverBase2_1010, MyDialoguesWrapperEnum.Dlg_SlaverBase2_04_01),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_SlaverBase2_1011, MyDialoguesWrapperEnum.Dlg_SlaverBase2_04_02),\n                        }\n                    ));\n\n            m_dialogues.Add(\n                (int)MyDialogueEnum.SLAVERBASE2_0400_FIRST_HUB_DESTROYED,\n                new MyDialogue(\n                    new[]\n                        {\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_SlaverBase2_1012, MyDialoguesWrapperEnum.Dlg_SlaverBase2_05_03),\n\n                        }\n                    ));\n\n            m_dialogues.Add(\n                (int)MyDialogueEnum.SLAVERBASE2_0500_BOTH_HUBS_DESTROYED,\n                new MyDialogue(\n                    new[]\n                        {\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_SlaverBase2_1013, MyDialoguesWrapperEnum.Dlg_SlaverBase2_06_01),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_SlaverBase2_1014, MyDialoguesWrapperEnum.Dlg_SlaverBase2_06_02),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_SlaverBase2_1015, MyDialoguesWrapperEnum.Dlg_SlaverBase2_06_03),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_SlaverBase2_1016, MyDialoguesWrapperEnum.Dlg_SlaverBase2_06_04),\nnew MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_SlaverBase2_1017, MyDialoguesWrapperEnum.Dlg_SlaverBase2_06_05),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_SlaverBase2_1018, MyDialoguesWrapperEnum.Dlg_SlaverBase2_06_06),\n\n                        }\n                    ));\n\n            m_dialogues.Add(\n                (int)MyDialogueEnum.SLAVERBASE2_0600_GENERATOR_REACHED,\n                new MyDialogue(\n                    new[]\n                        {\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_SlaverBase2_1019, MyDialoguesWrapperEnum.Dlg_SlaverBase2_07_01),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_SlaverBase2_1020, MyDialoguesWrapperEnum.Dlg_SlaverBase2_07_02),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_SlaverBase2_1021, MyDialoguesWrapperEnum.Dlg_SlaverBase2_07_03),\n\n                        }\n                    ));\n\n            m_dialogues.Add(\n                (int)MyDialogueEnum.SLAVERBASE2_0700_GENERATOR_DESTROYED,\n                new MyDialogue(\n                    new[]\n                        {\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_SlaverBase2_1022, MyDialoguesWrapperEnum.Dlg_SlaverBase2_08_01),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_SlaverBase2_1023, MyDialoguesWrapperEnum.Dlg_SlaverBase2_08_02),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_SlaverBase2_1024, MyDialoguesWrapperEnum.Dlg_SlaverBase2_08_03),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_SlaverBase2_1025, MyDialoguesWrapperEnum.Dlg_SlaverBase2_08_04),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_SlaverBase2_1026, MyDialoguesWrapperEnum.Dlg_SlaverBase2_08_05),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_SlaverBase2_1027, MyDialoguesWrapperEnum.Dlg_SlaverBase2_08_06),\n\n                        }\n                    ));\n\n            m_dialogues.Add(\n                (int)MyDialogueEnum.SLAVERBASE2_0800_FIRST_CELL_UNLOCKED,\n                new MyDialogue(\n                    new[]\n                        {\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_SlaverBase2_1028, MyDialoguesWrapperEnum.Dlg_SlaverBase2_09_01),\n\n                        }\n                    ));\n\n            m_dialogues.Add(\n                (int)MyDialogueEnum.SLAVERBASE2_0900_SECOND_CELL_UNLOCKED,\n                new MyDialogue(\n                    new[]\n                        {\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_SlaverBase2_1029, MyDialoguesWrapperEnum.Dlg_SlaverBase2_10_01),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_SlaverBase2_1030, MyDialoguesWrapperEnum.Dlg_SlaverBase2_10_02),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_SlaverBase2_1031, MyDialoguesWrapperEnum.Dlg_SlaverBase2_10_03),\n\n                        }\n                    ));\n\n            m_dialogues.Add(\n                (int)MyDialogueEnum.SLAVERBASE2_1000_THIRD_CELL_UNLOCKED,\n                new MyDialogue(\n                    new[]\n                        {\nnew MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_SlaverBase2_1032, MyDialoguesWrapperEnum.Dlg_SlaverBase2_11_01),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_SlaverBase2_1033, MyDialoguesWrapperEnum.Dlg_SlaverBase2_11_02),\n\n                        }\n                    ));\n\n            m_dialogues.Add(\n                (int)MyDialogueEnum.SLAVERBASE2_1100_FOURTH_CELL_UNLOCKED,\n                new MyDialogue(\n                    new[]\n                        {\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_SlaverBase2_1034, MyDialoguesWrapperEnum.Dlg_SlaverBase2_12_01),\n\n                        }\n                    ));\n\n            m_dialogues.Add(\n                (int)MyDialogueEnum.SLAVERBASE2_1200_MISSION_COMPLETE,\n                new MyDialogue(\n                    new[]\n                        {\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_SlaverBase2_1035, MyDialoguesWrapperEnum.Dlg_SlaverBase2_13_01),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_SlaverBase2_1036, MyDialoguesWrapperEnum.Dlg_SlaverBase2_13_02),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_SlaverBase2_1037, MyDialoguesWrapperEnum.Dlg_SlaverBase2_13_03),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_SlaverBase2_1038, MyDialoguesWrapperEnum.Dlg_SlaverBase2_13_04),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_SlaverBase2_1039, MyDialoguesWrapperEnum.Dlg_SlaverBase2_13_05),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_SlaverBase2_1040, MyDialoguesWrapperEnum.Dlg_SlaverBase2_13_06),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_SlaverBase2_1041, MyDialoguesWrapperEnum.Dlg_SlaverBase2_13_07),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_SlaverBase2_1042, MyDialoguesWrapperEnum.Dlg_SlaverBase2_13_08),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_SlaverBase2_1043, MyDialoguesWrapperEnum.Dlg_SlaverBase2_13_09),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_SlaverBase2_1044, MyDialoguesWrapperEnum.Dlg_SlaverBase2_13_10),\n\n                        }\n                    ));\n\n            #endregion\n\n            #region Twin Towers - Doppelburg\n\n            m_dialogues.Add(\n                (int)MyDialogueEnum.TWIN_TOWERS_0100_INTRO,\n                new MyDialogue(\n                    new[]\n                        {\nnew MyDialogueSentence(MyActorEnum.TRANSPORTER_CAPTAIN, MySoundCuesEnum.Dlg_TwinTowers_1000, MyDialoguesWrapperEnum.Dlg_TwinTowers_01_01),\nnew MyDialogueSentence(MyActorEnum.TRANSPORTER_CAPTAIN, MySoundCuesEnum.Dlg_TwinTowers_1001, MyDialoguesWrapperEnum.Dlg_TwinTowers_01_02),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_TwinTowers_1002, MyDialoguesWrapperEnum.Dlg_TwinTowers_01_03),\n//new MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_TwinTowers_1003, MyDialoguesWrapperEnum.Dlg_TwinTowers_01_04),\nnew MyDialogueSentence(MyActorEnum.ERHARD , MySoundCuesEnum.Dlg_TwinTowers_1004, MyDialoguesWrapperEnum.Dlg_TwinTowers_02_01, pauseBefore_ms:1500),\n//new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_TwinTowers_1005, MyDialoguesWrapperEnum.Dlg_TwinTowers_02_02),\nnew MyDialogueSentence(MyActorEnum.ERHARD , MySoundCuesEnum.Dlg_TwinTowers_1006, MyDialoguesWrapperEnum.Dlg_TwinTowers_02_03),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_TwinTowers_1007, MyDialoguesWrapperEnum.Dlg_TwinTowers_02_04),\n                        }\n                    ));\n\n            m_dialogues.Add(\n                (int)MyDialogueEnum.TWIN_TOWERS_0200_PLACE_EXPLOSIVES,\n                new MyDialogue(\n                    new[]\n                        {\nnew MyDialogueSentence(MyActorEnum.ERHARD , MySoundCuesEnum.Dlg_TwinTowers_1008, MyDialoguesWrapperEnum.Dlg_TwinTowers_02_05),\nnew MyDialogueSentence(MyActorEnum.ERHARD , MySoundCuesEnum.Dlg_TwinTowers_1009, MyDialoguesWrapperEnum.Dlg_TwinTowers_02_06),\n                        }\n                    ));\n\n\n            m_dialogues.Add(\n                (int)MyDialogueEnum.TWIN_TOWERS_0300_player_reaching_the_main_electricity_supply,\n                new MyDialogue(\n                    new[]\n                        {\nnew MyDialogueSentence(MyActorEnum.ERHARD , MySoundCuesEnum.Dlg_TwinTowers_1011, MyDialoguesWrapperEnum.Dlg_TwinTowers_03_01),\nnew MyDialogueSentence(MyActorEnum.ERHARD , MySoundCuesEnum.Dlg_TwinTowers_1012, MyDialoguesWrapperEnum.Dlg_TwinTowers_03_02),\nnew MyDialogueSentence(MyActorEnum.ERHARD , MySoundCuesEnum.Dlg_TwinTowers_1013, MyDialoguesWrapperEnum.Dlg_TwinTowers_03_03),\nnew MyDialogueSentence(MyActorEnum.ERHARD , MySoundCuesEnum.Dlg_TwinTowers_1014, MyDialoguesWrapperEnum.Dlg_TwinTowers_03_04),\n\n                        }\n                    ));\n\n            m_dialogues.Add(\n                (int)MyDialogueEnum.TWIN_TOWERS_0400_reaching_a_hangar_with_unmanned_enemy_small_ships,\n                new MyDialogue(\n                    new[]\n                        {\nnew MyDialogueSentence(MyActorEnum.ERHARD , MySoundCuesEnum.Dlg_TwinTowers_1015, MyDialoguesWrapperEnum.Dlg_TwinTowers_04_01),\nnew MyDialogueSentence(MyActorEnum.ERHARD , MySoundCuesEnum.Dlg_TwinTowers_1016, MyDialoguesWrapperEnum.Dlg_TwinTowers_04_02),\n\n                        }\n                    ));\n\n            m_dialogues.Add(\n                (int)MyDialogueEnum.TWIN_TOWERS_0500_reaching_electricity_distribution_HUB,\n                new MyDialogue(\n                    new[]\n                        {\nnew MyDialogueSentence(MyActorEnum.ERHARD , MySoundCuesEnum.Dlg_TwinTowers_1017, MyDialoguesWrapperEnum.Dlg_TwinTowers_05_01),\nnew MyDialogueSentence(MyActorEnum.ERHARD , MySoundCuesEnum.Dlg_TwinTowers_1018, MyDialoguesWrapperEnum.Dlg_TwinTowers_05_02),\nnew MyDialogueSentence(MyActorEnum.ERHARD , MySoundCuesEnum.Dlg_TwinTowers_1019, MyDialoguesWrapperEnum.Dlg_TwinTowers_05_03),\n\n                        }\n                    ));\n\n            m_dialogues.Add(\n                (int)MyDialogueEnum.TWIN_TOWERS_0600_after_all_the_sabotages_are_done,\n                new MyDialogue(\n                    new[]\n                        {\nnew MyDialogueSentence(MyActorEnum.ERHARD , MySoundCuesEnum.Dlg_TwinTowers_1020, MyDialoguesWrapperEnum.Dlg_TwinTowers_06_01),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_TwinTowers_1021, MyDialoguesWrapperEnum.Dlg_TwinTowers_06_02),\nnew MyDialogueSentence(MyActorEnum.ERHARD , MySoundCuesEnum.Dlg_TwinTowers_1022, MyDialoguesWrapperEnum.Dlg_TwinTowers_06_03),\nnew MyDialogueSentence(MyActorEnum.ERHARD , MySoundCuesEnum.Dlg_TwinTowers_1023, MyDialoguesWrapperEnum.Dlg_TwinTowers_06_04),\nnew MyDialogueSentence(MyActorEnum.ERHARD , MySoundCuesEnum.Dlg_TwinTowers_1024, MyDialoguesWrapperEnum.Dlg_TwinTowers_06_05),\nnew MyDialogueSentence(MyActorEnum.ERHARD , MySoundCuesEnum.Dlg_TwinTowers_1025, MyDialoguesWrapperEnum.Dlg_TwinTowers_06_06),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_TwinTowers_1026, MyDialoguesWrapperEnum.Dlg_TwinTowers_06_07),\nnew MyDialogueSentence(MyActorEnum.ERHARD , MySoundCuesEnum.Dlg_TwinTowers_1027, MyDialoguesWrapperEnum.Dlg_TwinTowers_06_08),\n\n                        }\n                    ));\n\n            m_dialogues.Add(\n                (int)MyDialogueEnum.TWIN_TOWERS_0700_Meeting_point,\n                new MyDialogue(\n                    new[]\n                        {\nnew MyDialogueSentence(MyActorEnum.ERHARD , MySoundCuesEnum.Dlg_TwinTowers_1028, MyDialoguesWrapperEnum.Dlg_TwinTowers_07_01),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_TwinTowers_1029, MyDialoguesWrapperEnum.Dlg_TwinTowers_07_02),\nnew MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_TwinTowers_1030, MyDialoguesWrapperEnum.Dlg_TwinTowers_07_03),\n\n                        }\n                    ));\n\n            m_dialogues.Add(\n                (int)MyDialogueEnum.TWIN_TOWERS_0800_command_center_cleared,\n                new MyDialogue(\n                    new[]\n                        {\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_TwinTowers_1031, MyDialoguesWrapperEnum.Dlg_TwinTowers_08_01),\nnew MyDialogueSentence(MyActorEnum.ERHARD , MySoundCuesEnum.Dlg_TwinTowers_1032, MyDialoguesWrapperEnum.Dlg_TwinTowers_08_02),\n\n                        }\n                    ));\n\n            m_dialogues.Add(\n                (int)MyDialogueEnum.TWIN_TOWERS_0900_hacker_reaches_computer,\n                new MyDialogue(\n                    new[]\n                        {\nnew MyDialogueSentence(MyActorEnum.ERHARD , MySoundCuesEnum.Dlg_TwinTowers_1033, MyDialoguesWrapperEnum.Dlg_TwinTowers_09_01),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_TwinTowers_1034, MyDialoguesWrapperEnum.Dlg_TwinTowers_09_02),\nnew MyDialogueSentence(MyActorEnum.ERHARD , MySoundCuesEnum.Dlg_TwinTowers_1035, MyDialoguesWrapperEnum.Dlg_TwinTowers_09_03),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_TwinTowers_1036, MyDialoguesWrapperEnum.Dlg_TwinTowers_09_04),\nnew MyDialogueSentence(MyActorEnum.ERHARD , MySoundCuesEnum.Dlg_TwinTowers_1037, MyDialoguesWrapperEnum.Dlg_TwinTowers_09_05),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_TwinTowers_1038, MyDialoguesWrapperEnum.Dlg_TwinTowers_09_06),\nnew MyDialogueSentence(MyActorEnum.ERHARD , MySoundCuesEnum.Dlg_TwinTowers_1039, MyDialoguesWrapperEnum.Dlg_TwinTowers_09_07),\nnew MyDialogueSentence(MyActorEnum.ERHARD , MySoundCuesEnum.Dlg_TwinTowers_1040, MyDialoguesWrapperEnum.Dlg_TwinTowers_09_08),\nnew MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_TwinTowers_1041, MyDialoguesWrapperEnum.Dlg_TwinTowers_09_09),\n\n                        }\n                    ));\n\n            m_dialogues.Add(\n                (int)MyDialogueEnum.TWIN_TOWERS_1000_through_the_fight,\n                new MyDialogue(\n                    new[]\n                        {\nnew MyDialogueSentence(MyActorEnum.ERHARD , MySoundCuesEnum.Dlg_TwinTowers_1042, MyDialoguesWrapperEnum.Dlg_TwinTowers_10_01),\nnew MyDialogueSentence(MyActorEnum.ERHARD , MySoundCuesEnum.Dlg_TwinTowers_1043, MyDialoguesWrapperEnum.Dlg_TwinTowers_10_02),\n\n                        }\n                    ));\n\n            m_dialogues.Add(\n                (int)MyDialogueEnum.TWIN_TOWERS_1100_hacking_gets_jammed,\n                new MyDialogue(\n                    new[]\n                        {\nnew MyDialogueSentence(MyActorEnum.ERHARD , MySoundCuesEnum.Dlg_TwinTowers_1044, MyDialoguesWrapperEnum.Dlg_TwinTowers_11_01),\nnew MyDialogueSentence(MyActorEnum.ERHARD , MySoundCuesEnum.Dlg_TwinTowers_1045, MyDialoguesWrapperEnum.Dlg_TwinTowers_11_02),\n//new MyDialogueSentence(MyActorEnum.ERHARD , MySoundCuesEnum.Dlg_TwinTowers_1046, MyDialoguesWrapperEnum.Dlg_TwinTowers_11_03),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_TwinTowers_1047, MyDialoguesWrapperEnum.Dlg_TwinTowers_11_04),\nnew MyDialogueSentence(MyActorEnum.ERHARD , MySoundCuesEnum.Dlg_TwinTowers_1048, MyDialoguesWrapperEnum.Dlg_TwinTowers_11_05),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_TwinTowers_1049, MyDialoguesWrapperEnum.Dlg_TwinTowers_11_06),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_TwinTowers_1050, MyDialoguesWrapperEnum.Dlg_TwinTowers_11_07),\nnew MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_TwinTowers_1051, MyDialoguesWrapperEnum.Dlg_TwinTowers_11_08),\n\n                        }\n                    ));\n\n            m_dialogues.Add(\n                (int)MyDialogueEnum.TWIN_TOWERS_1200_killing_jammer,\n                new MyDialogue(\n                    new[]\n                        {\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_TwinTowers_1052, MyDialoguesWrapperEnum.Dlg_TwinTowers_12_01),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_TwinTowers_1053, MyDialoguesWrapperEnum.Dlg_TwinTowers_12_02),\nnew MyDialogueSentence(MyActorEnum.ERHARD , MySoundCuesEnum.Dlg_TwinTowers_1054, MyDialoguesWrapperEnum.Dlg_TwinTowers_12_03),\nnew MyDialogueSentence(MyActorEnum.ERHARD , MySoundCuesEnum.Dlg_TwinTowers_1055, MyDialoguesWrapperEnum.Dlg_TwinTowers_12_04),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_TwinTowers_1056, MyDialoguesWrapperEnum.Dlg_TwinTowers_12_05),\nnew MyDialogueSentence(MyActorEnum.ERHARD , MySoundCuesEnum.Dlg_TwinTowers_1057, MyDialoguesWrapperEnum.Dlg_TwinTowers_12_06),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_TwinTowers_1058, MyDialoguesWrapperEnum.Dlg_TwinTowers_12_07),\nnew MyDialogueSentence(MyActorEnum.ERHARD , MySoundCuesEnum.Dlg_TwinTowers_1059, MyDialoguesWrapperEnum.Dlg_TwinTowers_12_08),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_TwinTowers_1060, MyDialoguesWrapperEnum.Dlg_TwinTowers_12_09),\n\n                        }\n                    ));\n\n            m_dialogues.Add(\n                (int)MyDialogueEnum.TWIN_TOWERS_1300_hacking_done,\n                new MyDialogue(\n                    new[]\n                        {\nnew MyDialogueSentence(MyActorEnum.ERHARD , MySoundCuesEnum.Dlg_TwinTowers_1061, MyDialoguesWrapperEnum.Dlg_TwinTowers_13_01),\nnew MyDialogueSentence(MyActorEnum.ERHARD , MySoundCuesEnum.Dlg_TwinTowers_1062, MyDialoguesWrapperEnum.Dlg_TwinTowers_13_02),\nnew MyDialogueSentence(MyActorEnum.ERHARD , MySoundCuesEnum.Dlg_TwinTowers_1063, MyDialoguesWrapperEnum.Dlg_TwinTowers_13_03),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_TwinTowers_1064, MyDialoguesWrapperEnum.Dlg_TwinTowers_13_04),\nnew MyDialogueSentence(MyActorEnum.ERHARD , MySoundCuesEnum.Dlg_TwinTowers_1065, MyDialoguesWrapperEnum.Dlg_TwinTowers_13_05),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_TwinTowers_1066, MyDialoguesWrapperEnum.Dlg_TwinTowers_13_06),\nnew MyDialogueSentence(MyActorEnum.ERHARD , MySoundCuesEnum.Dlg_TwinTowers_1067, MyDialoguesWrapperEnum.Dlg_TwinTowers_13_07),\nnew MyDialogueSentence(MyActorEnum.ERHARD , MySoundCuesEnum.Dlg_TwinTowers_1068, MyDialoguesWrapperEnum.Dlg_TwinTowers_13_08),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_TwinTowers_1069, MyDialoguesWrapperEnum.Dlg_TwinTowers_13_09),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_TwinTowers_1070, MyDialoguesWrapperEnum.Dlg_TwinTowers_13_10),\nnew MyDialogueSentence(MyActorEnum.ERHARD , MySoundCuesEnum.Dlg_TwinTowers_1071, MyDialoguesWrapperEnum.Dlg_TwinTowers_13_11),\n\n                        }\n                    ));\n\n            m_dialogues.Add(\n                (int)MyDialogueEnum.TWIN_TOWERS_1400_clearing_first_control_room,\n                new MyDialogue(\n                    new[]\n                        {\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_TwinTowers_1072, MyDialoguesWrapperEnum.Dlg_TwinTowers_14_01),\nnew MyDialogueSentence(MyActorEnum.ERHARD , MySoundCuesEnum.Dlg_TwinTowers_1073, MyDialoguesWrapperEnum.Dlg_TwinTowers_14_02),\nnew MyDialogueSentence(MyActorEnum.ERHARD , MySoundCuesEnum.Dlg_TwinTowers_1074, MyDialoguesWrapperEnum.Dlg_TwinTowers_14_03),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_TwinTowers_1075, MyDialoguesWrapperEnum.Dlg_TwinTowers_14_04),\n\n                        }\n                    ));\n\n            m_dialogues.Add(\n                (int)MyDialogueEnum.TWIN_TOWERS_1500_clearing_second_control_room,\n                new MyDialogue(\n                    new[]\n                        {\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_TwinTowers_1076, MyDialoguesWrapperEnum.Dlg_TwinTowers_15_01),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_TwinTowers_1077, MyDialoguesWrapperEnum.Dlg_TwinTowers_15_02),\nnew MyDialogueSentence(MyActorEnum.ERHARD , MySoundCuesEnum.Dlg_TwinTowers_1078, MyDialoguesWrapperEnum.Dlg_TwinTowers_15_03),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_TwinTowers_1079, MyDialoguesWrapperEnum.Dlg_TwinTowers_15_04),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_TwinTowers_1080, MyDialoguesWrapperEnum.Dlg_TwinTowers_15_05),\nnew MyDialogueSentence(MyActorEnum.ERHARD , MySoundCuesEnum.Dlg_TwinTowers_1081, MyDialoguesWrapperEnum.Dlg_TwinTowers_15_06),\nnew MyDialogueSentence(MyActorEnum.ERHARD , MySoundCuesEnum.Dlg_TwinTowers_1082, MyDialoguesWrapperEnum.Dlg_TwinTowers_15_07),\nnew MyDialogueSentence(MyActorEnum.ERHARD , MySoundCuesEnum.Dlg_TwinTowers_1083, MyDialoguesWrapperEnum.Dlg_TwinTowers_15_08),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_TwinTowers_1084, MyDialoguesWrapperEnum.Dlg_TwinTowers_15_09),\nnew MyDialogueSentence(MyActorEnum.ERHARD , MySoundCuesEnum.Dlg_TwinTowers_1085, MyDialoguesWrapperEnum.Dlg_TwinTowers_15_10),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_TwinTowers_1086, MyDialoguesWrapperEnum.Dlg_TwinTowers_15_11),\nnew MyDialogueSentence(MyActorEnum.ERHARD , MySoundCuesEnum.Dlg_TwinTowers_1087, MyDialoguesWrapperEnum.Dlg_TwinTowers_15_12),\n\n                        }\n                    ));\n\n            m_dialogues.Add(\n                (int)MyDialogueEnum.TWIN_TOWERS_1600_in_tower_B,\n                new MyDialogue(\n                    new[]\n                        {\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_TwinTowers_1088, MyDialoguesWrapperEnum.Dlg_TwinTowers_16_01),\nnew MyDialogueSentence(MyActorEnum.ERHARD , MySoundCuesEnum.Dlg_TwinTowers_1089, MyDialoguesWrapperEnum.Dlg_TwinTowers_16_02),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_TwinTowers_1090, MyDialoguesWrapperEnum.Dlg_TwinTowers_16_03),\nnew MyDialogueSentence(MyActorEnum.ERHARD , MySoundCuesEnum.Dlg_TwinTowers_1091, MyDialoguesWrapperEnum.Dlg_TwinTowers_16_04),\nnew MyDialogueSentence(MyActorEnum.ERHARD , MySoundCuesEnum.Dlg_TwinTowers_1092, MyDialoguesWrapperEnum.Dlg_TwinTowers_16_05),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_TwinTowers_1093, MyDialoguesWrapperEnum.Dlg_TwinTowers_16_06),\nnew MyDialogueSentence(MyActorEnum.ERHARD , MySoundCuesEnum.Dlg_TwinTowers_1094, MyDialoguesWrapperEnum.Dlg_TwinTowers_16_07),\nnew MyDialogueSentence(MyActorEnum.ERHARD , MySoundCuesEnum.Dlg_TwinTowers_1095, MyDialoguesWrapperEnum.Dlg_TwinTowers_16_08),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_TwinTowers_1096, MyDialoguesWrapperEnum.Dlg_TwinTowers_16_09),\nnew MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_TwinTowers_1097, MyDialoguesWrapperEnum.Dlg_TwinTowers_16_10),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_TwinTowers_1098, MyDialoguesWrapperEnum.Dlg_TwinTowers_16_11),\nnew MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_TwinTowers_1099, MyDialoguesWrapperEnum.Dlg_TwinTowers_16_12),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_TwinTowers_1100, MyDialoguesWrapperEnum.Dlg_TwinTowers_16_13),\n\n                        }\n                    ));\n\n            m_dialogues.Add(\n                (int)MyDialogueEnum.TWIN_TOWERS_1700_reactor_shut_down,\n                new MyDialogue(\n                    new[]\n                        {\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_TwinTowers_1101, MyDialoguesWrapperEnum.Dlg_TwinTowers_17_01),\nnew MyDialogueSentence(MyActorEnum.ERHARD , MySoundCuesEnum.Dlg_TwinTowers_1102, MyDialoguesWrapperEnum.Dlg_TwinTowers_17_02),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_TwinTowers_1103, MyDialoguesWrapperEnum.Dlg_TwinTowers_17_03),\nnew MyDialogueSentence(MyActorEnum.ERHARD , MySoundCuesEnum.Dlg_TwinTowers_1104, MyDialoguesWrapperEnum.Dlg_TwinTowers_17_04),\nnew MyDialogueSentence(MyActorEnum.ERHARD , MySoundCuesEnum.Dlg_TwinTowers_1105, MyDialoguesWrapperEnum.Dlg_TwinTowers_17_05),\nnew MyDialogueSentence(MyActorEnum.ERHARD , MySoundCuesEnum.Dlg_TwinTowers_1106, MyDialoguesWrapperEnum.Dlg_TwinTowers_17_06),\nnew MyDialogueSentence(MyActorEnum.ERHARD , MySoundCuesEnum.Dlg_TwinTowers_1107, MyDialoguesWrapperEnum.Dlg_TwinTowers_17_07),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_TwinTowers_1108, MyDialoguesWrapperEnum.Dlg_TwinTowers_17_08),\n\n                        }\n                    ));\n\n            m_dialogues.Add(\n                (int)MyDialogueEnum.TWIN_TOWERS_1800_computer_hacked,\n                new MyDialogue(\n                    new[]\n                        {\nnew MyDialogueSentence(MyActorEnum.ERHARD , MySoundCuesEnum.Dlg_TwinTowers_1109, MyDialoguesWrapperEnum.Dlg_TwinTowers_18_01),\nnew MyDialogueSentence(MyActorEnum.ERHARD , MySoundCuesEnum.Dlg_TwinTowers_1110, MyDialoguesWrapperEnum.Dlg_TwinTowers_18_02),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_TwinTowers_1111, MyDialoguesWrapperEnum.Dlg_TwinTowers_18_03),\nnew MyDialogueSentence(MyActorEnum.ERHARD , MySoundCuesEnum.Dlg_TwinTowers_1112, MyDialoguesWrapperEnum.Dlg_TwinTowers_18_04),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_TwinTowers_1113, MyDialoguesWrapperEnum.Dlg_TwinTowers_18_05),\nnew MyDialogueSentence(MyActorEnum.ERHARD , MySoundCuesEnum.Dlg_TwinTowers_1114, MyDialoguesWrapperEnum.Dlg_TwinTowers_18_06),\n\n                        }\n                    ));\n\n            m_dialogues.Add(\n                (int)MyDialogueEnum.TWIN_TOWERS_1900_motherships_arrived,\n                new MyDialogue(\n                    new[]\n                        {\nnew MyDialogueSentence(MyActorEnum.FOR_CAPTAIN, MySoundCuesEnum.Dlg_TwinTowers_1115, MyDialoguesWrapperEnum.Dlg_TwinTowers_19_01),\nnew MyDialogueSentence(MyActorEnum.FOR_CAPTAIN, MySoundCuesEnum.Dlg_TwinTowers_1116, MyDialoguesWrapperEnum.Dlg_TwinTowers_19_02),\nnew MyDialogueSentence(MyActorEnum.FOR_CAPTAIN, MySoundCuesEnum.Dlg_TwinTowers_1117, MyDialoguesWrapperEnum.Dlg_TwinTowers_19_03),\nnew MyDialogueSentence(MyActorEnum.FOR_CAPTAIN, MySoundCuesEnum.Dlg_TwinTowers_1118, MyDialoguesWrapperEnum.Dlg_TwinTowers_19_04),\nnew MyDialogueSentence(MyActorEnum.FOR_CAPTAIN, MySoundCuesEnum.Dlg_TwinTowers_1119, MyDialoguesWrapperEnum.Dlg_TwinTowers_19_05),\nnew MyDialogueSentence(MyActorEnum.ERHARD , MySoundCuesEnum.Dlg_TwinTowers_1120, MyDialoguesWrapperEnum.Dlg_TwinTowers_19_06),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_TwinTowers_1121, MyDialoguesWrapperEnum.Dlg_TwinTowers_19_07),\nnew MyDialogueSentence(MyActorEnum.ERHARD , MySoundCuesEnum.Dlg_TwinTowers_1122, MyDialoguesWrapperEnum.Dlg_TwinTowers_19_08),\n\n                        }\n                    ));\n\n            m_dialogues.Add(\n                (int)MyDialogueEnum.TWIN_TOWERS_2000_destroying_the_generator,\n                new MyDialogue(\n                    new[]\n                        {\nnew MyDialogueSentence(MyActorEnum.ERHARD , MySoundCuesEnum.Dlg_TwinTowers_1123, MyDialoguesWrapperEnum.Dlg_TwinTowers_20_01),\nnew MyDialogueSentence(MyActorEnum.ERHARD , MySoundCuesEnum.Dlg_TwinTowers_1124, MyDialoguesWrapperEnum.Dlg_TwinTowers_20_02),\n\n                        }\n                    ));\n\n            m_dialogues.Add(\n                (int)MyDialogueEnum.TWIN_TOWERS_2100_destroying_batteries,\n                new MyDialogue(\n                    new[]\n                        {\nnew MyDialogueSentence(MyActorEnum.ERHARD , MySoundCuesEnum.Dlg_TwinTowers_1125, MyDialoguesWrapperEnum.Dlg_TwinTowers_21_01),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_TwinTowers_1126, MyDialoguesWrapperEnum.Dlg_TwinTowers_21_02),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_TwinTowers_1127, MyDialoguesWrapperEnum.Dlg_TwinTowers_21_03),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_TwinTowers_1128, MyDialoguesWrapperEnum.Dlg_TwinTowers_21_04),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_TwinTowers_1129, MyDialoguesWrapperEnum.Dlg_TwinTowers_21_05),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_TwinTowers_1130, MyDialoguesWrapperEnum.Dlg_TwinTowers_21_06),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_TwinTowers_1131, MyDialoguesWrapperEnum.Dlg_TwinTowers_21_07),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_TwinTowers_1132, MyDialoguesWrapperEnum.Dlg_TwinTowers_21_08),\n\n                        }\n                    ));\n\n            #endregion\n\n            #region Junkyard Convince\n\n            m_dialogues.Add(\n                (int)MyDialogueEnum.JUNKYARD_CONVINCE_0100_INTRODUCE,\n                new MyDialogue(\n                    new MyDialogueSentence[]\n                        {\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_JunkyardConvince_1000, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_01_01),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_JunkyardConvince_1001, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_01_02),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_JunkyardConvince_1002, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_01_03),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardConvince_1003, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_01_04),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_JunkyardConvince_1004, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_01_05),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardConvince_1005, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_01_06),\n\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_JunkyardConvince_1006, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_02_01, pauseBefore_ms:3000),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardConvince_1007, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_02_02),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_JunkyardConvince_1008, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_02_03),\n\n                        }\n                    ));\n\n            m_dialogues.Add(\n                (int) MyDialogueEnum.JUNKYARD_CONVINCE_0200_INFORMATOR,\n                new MyDialogue(\n                    new MyDialogueSentence[]\n                        {\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_JunkyardConvince_1009, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_03_01),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_JunkyardConvince_1010, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_03_02),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardConvince_1011, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_03_03),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_JunkyardConvince_1012, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_03_04),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardConvince_1013, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_03_05),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_JunkyardConvince_1014, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_03_06),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardConvince_1015, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_03_07),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_JunkyardConvince_1016, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_03_08),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_JunkyardConvince_1017, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_03_09),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardConvince_1018, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_03_10),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_JunkyardConvince_1019, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_03_11),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_JunkyardConvince_1020, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_03_12),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_JunkyardConvince_1021, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_03_13),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardConvince_1022, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_03_14),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_JunkyardConvince_1023, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_03_15),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardConvince_1024, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_03_16),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_JunkyardConvince_1025, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_03_17),\n\n                        }\n                    ));\n\n\n            m_dialogues.Add(\n                (int) MyDialogueEnum.JUNKYARD_CONVINCE_0300_RUN,\n                new MyDialogue(\n                    new MyDialogueSentence[]\n                        {\nnew MyDialogueSentence(MyActorEnum.MANJEET, MySoundCuesEnum.Dlg_JunkyardConvince_1026, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_04_01),\nnew MyDialogueSentence(MyActorEnum.MANJEET, MySoundCuesEnum.Dlg_JunkyardConvince_1027, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_04_02),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardConvince_1028, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_04_03),\nnew MyDialogueSentence(MyActorEnum.MANJEET, MySoundCuesEnum.Dlg_JunkyardConvince_1029, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_04_04),\nnew MyDialogueSentence(MyActorEnum.MANJEET, MySoundCuesEnum.Dlg_JunkyardConvince_1030, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_04_05),\nnew MyDialogueSentence(MyActorEnum.MANJEET, MySoundCuesEnum.Dlg_JunkyardConvince_1031, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_04_06),\n\n                        }\n                    ));\n\n            m_dialogues.Add(\n                (int) MyDialogueEnum.JUNKYARD_CONVINCE_0500_CATCHED,\n                new MyDialogue(\n                    new MyDialogueSentence[]\n                        {\nnew MyDialogueSentence(MyActorEnum.MANJEET, MySoundCuesEnum.Dlg_JunkyardConvince_1032, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_05_01),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardConvince_1034, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_05_02),\nnew MyDialogueSentence(MyActorEnum.MANJEET, MySoundCuesEnum.Dlg_JunkyardConvince_1035, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_05_03),\nnew MyDialogueSentence(MyActorEnum.MANJEET, MySoundCuesEnum.Dlg_JunkyardConvince_1036, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_05_04),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardConvince_1037, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_05_05),\nnew MyDialogueSentence(MyActorEnum.MANJEET, MySoundCuesEnum.Dlg_JunkyardConvince_1038, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_05_06),\nnew MyDialogueSentence(MyActorEnum.MANJEET, MySoundCuesEnum.Dlg_JunkyardConvince_1039, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_05_07),\nnew MyDialogueSentence(MyActorEnum.MANJEET, MySoundCuesEnum.Dlg_JunkyardConvince_1040, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_05_08),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardConvince_1041, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_05_09),\n\n                        }\n                    ));\n\n            m_dialogues.Add(\n                (int) MyDialogueEnum.JUNKYARD_CONVINCE_0600_BEFORE_FIGHT,\n                new MyDialogue(\n                    new MyDialogueSentence[]\n                        {\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_JunkyardConvince_1042, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_06_01),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardConvince_1043, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_06_02),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_JunkyardConvince_1044, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_06_03),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardConvince_1045, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_06_04),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardConvince_1046, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_06_05),\n\n                        }\n                    ));\n\n            m_dialogues.Add(\n                (int) MyDialogueEnum.JUNKYARD_CONVINCE_0650_MET_ZAPPA_GUARD,\n                new MyDialogue(\n                    new MyDialogueSentence[]\n                        {\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_JunkyardConvince_1047, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_06_06),\nnew MyDialogueSentence(MyActorEnum.ZAPPAS_GANGMAN, MySoundCuesEnum.Dlg_JunkyardConvince_1048, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_06_07),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardConvince_1049, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_06_08),\nnew MyDialogueSentence(MyActorEnum.ZAPPAS_GANGMAN, MySoundCuesEnum.Dlg_JunkyardConvince_1050, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_06_09),\nnew MyDialogueSentence(MyActorEnum.ZAPPAS_GANGMAN, MySoundCuesEnum.Dlg_JunkyardConvince_1051, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_06_10),\nnew MyDialogueSentence(MyActorEnum.ZAPPAS_GANGMAN, MySoundCuesEnum.Dlg_JunkyardConvince_1052, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_06_11),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardConvince_1053, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_06_12),\nnew MyDialogueSentence(MyActorEnum.ZAPPAS_GANGMAN, MySoundCuesEnum.Dlg_JunkyardConvince_1054, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_06_13),\n\n                        }\n                    ));\n\n            m_dialogues.Add(\n                (int) MyDialogueEnum.JUNKYARD_CONVINCE_0800_MOMO_ARRIVE,\n                new MyDialogue(\n                    new MyDialogueSentence[]\n                        {\nnew MyDialogueSentence(MyActorEnum.MOMO_ZAPPA, MySoundCuesEnum.Dlg_JunkyardConvince_1055, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_07_01),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardConvince_1056, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_07_02),\n\n                        }\n                    ));\n\n            m_dialogues.Add(\n                (int) MyDialogueEnum.JUNKYARD_CONVINCE_0900_THE_MOMO,\n                new MyDialogue(\n                    new MyDialogueSentence[]\n                        {\nnew MyDialogueSentence(MyActorEnum.MOMO_ZAPPA, MySoundCuesEnum.Dlg_JunkyardConvince_1055, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_07_01),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardConvince_1056, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_07_02),\n                        }\n                    ));\n\n            m_dialogues.Add(\n                (int) MyDialogueEnum.JUNKYARD_CONVINCE_0950_MOMO_FIGHT,\n                new MyDialogue(\n                    new MyDialogueSentence[]\n                        {\nnew MyDialogueSentence(MyActorEnum.MOMO_ZAPPA, MySoundCuesEnum.Dlg_JunkyardConvince_1055, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_07_01),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardConvince_1056, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_07_02),\n                        }\n                    ));\n\n            m_dialogues.Add(\n                (int) MyDialogueEnum.JUNKYARD_CONVINCE_1000_LAST_OF_THEM,\n                new MyDialogue(\n                    new MyDialogueSentence[]\n                        {\n\n                        }\n                    ));\n\n            m_dialogues.Add(\n                (int) MyDialogueEnum.JUNKYARD_CONVINCE_1100_FIGHT_ENDS,\n                new MyDialogue(\n                    new MyDialogueSentence[]\n                        {\nnew MyDialogueSentence(MyActorEnum.MANJEET, MySoundCuesEnum.Dlg_JunkyardConvince_1057, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_01),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_JunkyardConvince_1058, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_02),\nnew MyDialogueSentence(MyActorEnum.MANJEET, MySoundCuesEnum.Dlg_JunkyardConvince_1059, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_03),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardConvince_1060, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_04),\nnew MyDialogueSentence(MyActorEnum.MANJEET, MySoundCuesEnum.Dlg_JunkyardConvince_1061, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_05),\nnew MyDialogueSentence(MyActorEnum.MANJEET, MySoundCuesEnum.Dlg_JunkyardConvince_1062, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_06),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardConvince_1063, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_07),\nnew MyDialogueSentence(MyActorEnum.MANJEET, MySoundCuesEnum.Dlg_JunkyardConvince_1064, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_08),\nnew MyDialogueSentence(MyActorEnum.MANJEET, MySoundCuesEnum.Dlg_JunkyardConvince_1065, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_09),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardConvince_1066, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_10),\nnew MyDialogueSentence(MyActorEnum.MANJEET, MySoundCuesEnum.Dlg_JunkyardConvince_1067, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_11),\nnew MyDialogueSentence(MyActorEnum.MANJEET, MySoundCuesEnum.Dlg_JunkyardConvince_1068, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_12),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_JunkyardConvince_1069, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_13),\nnew MyDialogueSentence(MyActorEnum.MANJEET, MySoundCuesEnum.Dlg_JunkyardConvince_1070, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_14),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardConvince_1071, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_15),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardConvince_1072, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_16),\nnew MyDialogueSentence(MyActorEnum.MANJEET, MySoundCuesEnum.Dlg_JunkyardConvince_1073, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_17),\nnew MyDialogueSentence(MyActorEnum.MANJEET, MySoundCuesEnum.Dlg_JunkyardConvince_1074, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_18),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_JunkyardConvince_1075, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_19),\nnew MyDialogueSentence(MyActorEnum.MANJEET, MySoundCuesEnum.Dlg_JunkyardConvince_1076, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_20),\nnew MyDialogueSentence(MyActorEnum.MANJEET, MySoundCuesEnum.Dlg_JunkyardConvince_1077, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_21),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardConvince_1078, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_22),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardConvince_1079, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_23),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardConvince_1080, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_24),\nnew MyDialogueSentence(MyActorEnum.MANJEET, MySoundCuesEnum.Dlg_JunkyardConvince_1081, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_25),\nnew MyDialogueSentence(MyActorEnum.MANJEET, MySoundCuesEnum.Dlg_JunkyardConvince_1082, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_26),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_JunkyardConvince_1083, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_27),\nnew MyDialogueSentence(MyActorEnum.MANJEET, MySoundCuesEnum.Dlg_JunkyardConvince_1084, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_28),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardConvince_1085, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_29),\nnew MyDialogueSentence(MyActorEnum.MANJEET, MySoundCuesEnum.Dlg_JunkyardConvince_1086, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_30),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardConvince_1087, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_31),\nnew MyDialogueSentence(MyActorEnum.MANJEET, MySoundCuesEnum.Dlg_JunkyardConvince_1088, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_32),\nnew MyDialogueSentence(MyActorEnum.MANJEET, MySoundCuesEnum.Dlg_JunkyardConvince_1089, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_33),\nnew MyDialogueSentence(MyActorEnum.MANJEET, MySoundCuesEnum.Dlg_JunkyardConvince_1090, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_34),\nnew MyDialogueSentence(MyActorEnum.MANJEET, MySoundCuesEnum.Dlg_JunkyardConvince_1091, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_35),\nnew MyDialogueSentence(MyActorEnum.MANJEET, MySoundCuesEnum.Dlg_JunkyardConvince_1092, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_36),\nnew MyDialogueSentence(MyActorEnum.MANJEET, MySoundCuesEnum.Dlg_JunkyardConvince_1093, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_37),\nnew MyDialogueSentence(MyActorEnum.MANJEET, MySoundCuesEnum.Dlg_JunkyardConvince_1094, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_38),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_JunkyardConvince_1095, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_39),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardConvince_1096, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_40),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_JunkyardConvince_1097, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_41),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardConvince_1098, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_42),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardConvince_1099, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_43),\nnew MyDialogueSentence(MyActorEnum.MANJEET, MySoundCuesEnum.Dlg_JunkyardConvince_1100, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_44),\nnew MyDialogueSentence(MyActorEnum.MANJEET, MySoundCuesEnum.Dlg_JunkyardConvince_1101, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_45),\nnew MyDialogueSentence(MyActorEnum.MANJEET, MySoundCuesEnum.Dlg_JunkyardConvince_1102, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_46),\nnew MyDialogueSentence(MyActorEnum.MANJEET, MySoundCuesEnum.Dlg_JunkyardConvince_1103, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_47),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardConvince_1104, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_48),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardConvince_1105, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_49),\n                        }\n                    ));\n\n            m_dialogues.Add(\n                (int) MyDialogueEnum.JUNKYARD_CONVINCE_1200_FLY_TO_DEALER,\n                new MyDialogue(\n                    new MyDialogueSentence[]\n                        {\n\n                        }\n                    ));\n            m_dialogues.Add(\n                (int) MyDialogueEnum.JUNKYARD_CONVINCE_1300_BOMB_DEALER,\n                new MyDialogue(\n                    new MyDialogueSentence[]\n                        {\nnew MyDialogueSentence(MyActorEnum.DEALER, MySoundCuesEnum.Dlg_JunkyardConvince_1106, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_09_01),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_JunkyardConvince_1107, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_09_02),\nnew MyDialogueSentence(MyActorEnum.DEALER, MySoundCuesEnum.Dlg_JunkyardConvince_1108, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_09_03),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_JunkyardConvince_1109, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_09_04),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_JunkyardConvince_1110, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_09_05),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_JunkyardConvince_1111, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_09_06),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardConvince_1112, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_09_07),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_JunkyardConvince_1113, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_09_08),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardConvince_1114, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_09_09),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_JunkyardConvince_1115, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_09_10),\n\n                        }\n                    ));\n\n            m_dialogues.Add(\n                (int) MyDialogueEnum.JUNKYARD_CONVINCE_1400_ARRIVED_AT_MARCUS,\n                new MyDialogue(\n                    new MyDialogueSentence[]\n                        {\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_JunkyardConvince_1116, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_10_01),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_JunkyardConvince_1117, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_10_02),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardConvince_1118, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_10_03),\nnew MyDialogueSentence(MyActorEnum.GANGSTER, MySoundCuesEnum.Dlg_JunkyardConvince_1119, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_10_04),\nnew MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_JunkyardConvince_1120, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_10_05),\nnew MyDialogueSentence(MyActorEnum.GANGSTER, MySoundCuesEnum.Dlg_JunkyardConvince_1121, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_10_06),\nnew MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_JunkyardConvince_1122, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_10_07),\nnew MyDialogueSentence(MyActorEnum.GANGSTER, MySoundCuesEnum.Dlg_JunkyardConvince_1123, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_10_08),\nnew MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_JunkyardConvince_1124, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_10_09),\nnew MyDialogueSentence(MyActorEnum.GANGSTER, MySoundCuesEnum.Dlg_JunkyardConvince_1125, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_10_10),\nnew MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_JunkyardConvince_1126, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_10_11),\nnew MyDialogueSentence(MyActorEnum.GANGSTER, MySoundCuesEnum.Dlg_JunkyardConvince_1127, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_10_12),\n\n                        }\n                    ));\n\n            m_dialogues.Add(\n                (int) MyDialogueEnum.JUNKYARD_CONVINCE_1500_GANGSTER_FIGHT_STARTED,\n                new MyDialogue(\n                    new MyDialogueSentence[]\n                        {\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_JunkyardConvince_1128, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_11_01),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardConvince_1129, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_11_02),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_JunkyardConvince_1130, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_11_03),\n\n                        }\n                    ));\n\n            m_dialogues.Add(\n                (int)MyDialogueEnum.JUNKYARD_CONVINCE_1600_GO_TO_MS,\n                new MyDialogue(\n                    new MyDialogueSentence[]\n                        {\nnew MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_JunkyardConvince_1131, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_12_01),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_JunkyardConvince_1132, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_12_02),\nnew MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_JunkyardConvince_1133, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_12_03),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardConvince_1134, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_12_04),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_JunkyardConvince_1135, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_12_05),\nnew MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_JunkyardConvince_1136, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_12_06),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardConvince_1137, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_12_07),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_JunkyardConvince_1138, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_12_08),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_JunkyardConvince_1139, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_12_09),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardConvince_1140, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_12_10),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardConvince_1141, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_12_11),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardConvince_1142, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_12_12),\nnew MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_JunkyardConvince_1143, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_12_13),\n\n                        }\n                    ));\n\n            m_dialogues.Add(\n                (int)MyDialogueEnum.JUNKYARD_CONVINCE_1700_FINALE,\n                new MyDialogue(\n                    new MyDialogueSentence[]\n                        {\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_JunkyardConvince_1144, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_13_01),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardConvince_1145, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_13_02),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_JunkyardConvince_1146, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_13_03),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardConvince_1147, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_13_04),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_JunkyardConvince_1148, MyDialoguesWrapperEnum.Dlg_JunkyardConvince_13_05),\n\n                        }\n                    ));\n\n            #endregion\n\n            #region Chinese Transport\n\n            m_dialogues.Add(\n                (int)MyDialogueEnum.CHINESE_TRANSPORT_0100_INTRODUCE,\n                new MyDialogue(\n                    new MyDialogueSentence[]\n                        {\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_ChineseTransport_1000, MyDialoguesWrapperEnum.Dlg_ChineseTransport_01_01),\nnew MyDialogueSentence(MyActorEnum.MANJEET, MySoundCuesEnum.Dlg_ChineseTransport_1001, MyDialoguesWrapperEnum.Dlg_ChineseTransport_01_02),\nnew MyDialogueSentence(MyActorEnum.MANJEET, MySoundCuesEnum.Dlg_ChineseTransport_1002, MyDialoguesWrapperEnum.Dlg_ChineseTransport_01_03),\nnew MyDialogueSentence(MyActorEnum.MANJEET, MySoundCuesEnum.Dlg_ChineseTransport_1003, MyDialoguesWrapperEnum.Dlg_ChineseTransport_01_04),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_ChineseTransport_1004, MyDialoguesWrapperEnum.Dlg_ChineseTransport_01_05),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_ChineseTransport_1005, MyDialoguesWrapperEnum.Dlg_ChineseTransport_01_06),\nnew MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_ChineseTransport_1006, MyDialoguesWrapperEnum.Dlg_ChineseTransport_01_07),\n\n                        }\n                    ));\n\n            m_dialogues.Add(\n                (int)MyDialogueEnum.CHINESE_TRANSPORT_0200_FIRST_DEVICE_HACKED,\n                new MyDialogue(\n                    new MyDialogueSentence[]\n                        {\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ChineseTransport_1007, MyDialoguesWrapperEnum.Dlg_ChineseTransport_02_01),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_ChineseTransport_1008, MyDialoguesWrapperEnum.Dlg_ChineseTransport_02_02),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ChineseTransport_1009, MyDialoguesWrapperEnum.Dlg_ChineseTransport_02_03),\n\n                        }\n                    ));\n\n            m_dialogues.Add(\n                (int)MyDialogueEnum.CHINESE_TRANSPORT_0300_SHOOTING_ON_ME,\n                new MyDialogue(\n                    new MyDialogueSentence[]\n                        {\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ChineseTransport_1010, MyDialoguesWrapperEnum.Dlg_ChineseTransport_03_01),\n\n                        }\n                    ));\n\n            m_dialogues.Add(\n                (int)MyDialogueEnum.CHINESE_TRANSPORT_0400_THEY_FOUND_ME,\n                new MyDialogue(\n                    new MyDialogueSentence[]\n                        {\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ChineseTransport_1011, MyDialoguesWrapperEnum.Dlg_ChineseTransport_04_01),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ChineseTransport_1012, MyDialoguesWrapperEnum.Dlg_ChineseTransport_04_02),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_ChineseTransport_1013, MyDialoguesWrapperEnum.Dlg_ChineseTransport_04_03),\n\n                        }\n                    ));\n\n            m_dialogues.Add(\n                (int)MyDialogueEnum.CHINESE_TRANSPORT_0500_MARCUS_IS_HERE,\n                new MyDialogue(\n                    new MyDialogueSentence[]\n                        {\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_ChineseTransport_1014, MyDialoguesWrapperEnum.Dlg_ChineseTransport_05_01),\n\n                        }\n                    ));\n\n            m_dialogues.Add(\n                (int)MyDialogueEnum.CHINESE_TRANSPORT_0600_DESTROY_THE_TRANSMITTER,\n                new MyDialogue(\n                    new MyDialogueSentence[]\n                        {\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_ChineseTransport_1015, MyDialoguesWrapperEnum.Dlg_ChineseTransport_06_01),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_ChineseTransport_1016, MyDialoguesWrapperEnum.Dlg_ChineseTransport_06_02),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_ChineseTransport_1017, MyDialoguesWrapperEnum.Dlg_ChineseTransport_06_03),\n\n                        }\n                    ));\n\n            m_dialogues.Add(\n                (int)MyDialogueEnum.CHINESE_TRANSPORT_0650_MARCUS_IS_LEAVING,\n                new MyDialogue(\n                    new MyDialogueSentence[]\n                        {\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_ChineseTransport_1018, MyDialoguesWrapperEnum.Dlg_ChineseTransport_07_01),\n\n                        }\n                    ));\n\n            m_dialogues.Add(\n                (int)MyDialogueEnum.CHINESE_TRANSPORT_0670_disabling_the_terminals\n,\n                new MyDialogue(\n                    new MyDialogueSentence[]\n                        {\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ChineseTransport_1019, MyDialoguesWrapperEnum.Dlg_ChineseTransport_08_01),\n\n                        }\n                    ));\n\n            m_dialogues.Add(\n                (int)MyDialogueEnum.CHINESE_TRANSPORT_0700_RUN,\n                new MyDialogue(\n                    new MyDialogueSentence[]\n                        {\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ChineseTransport_1020, MyDialoguesWrapperEnum.Dlg_ChineseTransport_09_01),\n\n                        }\n                    ));\n\n            m_dialogues.Add((int)MyDialogueEnum.CHINESE_TRANSPORT_0800_GO_TO_SECOND_BASE, new MyDialogue(\n            new MyDialogueSentence[] {\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_ChineseTransport_1023, MyDialoguesWrapperEnum.Dlg_ChineseTransport_11_01),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_ChineseTransport_1024, MyDialoguesWrapperEnum.Dlg_ChineseTransport_11_02),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_ChineseTransport_1025, MyDialoguesWrapperEnum.Dlg_ChineseTransport_11_03),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_ChineseTransport_1026, MyDialoguesWrapperEnum.Dlg_ChineseTransport_11_04),\n\n            }\n            ));\n\n\n            m_dialogues.Add((int)MyDialogueEnum.CHINESE_TRANSPORT_0850_INSIDE_TUNNEL, new MyDialogue(\n            new MyDialogueSentence[] {\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ChineseTransport_1027, MyDialoguesWrapperEnum.Dlg_ChineseTransport_12_01),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_ChineseTransport_1028, MyDialoguesWrapperEnum.Dlg_ChineseTransport_12_02),\nnew MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_ChineseTransport_1029, MyDialoguesWrapperEnum.Dlg_ChineseTransport_12_03),\nnew MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_ChineseTransport_1030, MyDialoguesWrapperEnum.Dlg_ChineseTransport_12_04),\nnew MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_ChineseTransport_1031, MyDialoguesWrapperEnum.Dlg_ChineseTransport_12_05),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_ChineseTransport_1032, MyDialoguesWrapperEnum.Dlg_ChineseTransport_12_06),\n \n            }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.CHINESE_TRANSPORT_0900_SURRENDER, new MyDialogue(\n            new MyDialogueSentence[] {\nnew MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_ChineseTransport_1033, MyDialoguesWrapperEnum.Dlg_ChineseTransport_13_01),\n\n            }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.CHINESE_TRANSPORT_1000_DOOR_BLOCKED, new MyDialogue(\n            new MyDialogueSentence[] {\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_ChineseTransport_1034, MyDialoguesWrapperEnum.Dlg_ChineseTransport_14_01),\n\n            }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.CHINESE_TRANSPORT_1400_DOORS_UNLOCKED, new MyDialogue(\n            new MyDialogueSentence[] {\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ChineseTransport_1035, MyDialoguesWrapperEnum.Dlg_ChineseTransport_15_01),\n\n            }\n            ));\n\n            m_dialogues.Add(\n                (int)MyDialogueEnum.CHINESE_TRANSPORT_1050_REACHED_COMPUTER,\n                new MyDialogue(\n                    new MyDialogueSentence[]\n                        {\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ChineseTransport_1036, MyDialoguesWrapperEnum.Dlg_ChineseTransport_16_01),\n\n                        }\n                    ));\n\n            m_dialogues.Add(\n                (int)MyDialogueEnum.CHINESE_TRANSPORT_1075_HACKED_COMPUTER,\n                new MyDialogue(\n                    new MyDialogueSentence[]\n                        {\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_ChineseTransport_1037, MyDialoguesWrapperEnum.Dlg_ChineseTransport_17_01),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ChineseTransport_1038, MyDialoguesWrapperEnum.Dlg_ChineseTransport_17_02),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_ChineseTransport_1039, MyDialoguesWrapperEnum.Dlg_ChineseTransport_17_03),\n\n                        }\n                    ));\n\n            m_dialogues.Add((int)MyDialogueEnum.CHINESE_TRANSPORT_1100_HELP_MARCUS, new MyDialogue(\n            new MyDialogueSentence[] {\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_ChineseTransport_1040, MyDialoguesWrapperEnum.Dlg_ChineseTransport_18_01),\n\n            }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.CHINESE_TRANSPORT_1200_GENERAL_ARRIVAL, new MyDialogue(\n            new MyDialogueSentence[] {\nnew MyDialogueSentence(MyActorEnum.CHINESE_COMMANDO, MySoundCuesEnum.Dlg_ChineseTransport_1041, MyDialoguesWrapperEnum.Dlg_ChineseTransport_19_01),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_ChineseTransport_1042, MyDialoguesWrapperEnum.Dlg_ChineseTransport_19_02),\n\n            }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.CHINESE_TRANSPORT_1300_LAND_IN, new MyDialogue(\n            new MyDialogueSentence[] {\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_ChineseTransport_1043, MyDialoguesWrapperEnum.Dlg_ChineseTransport_20_01),\n//new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_ChineseTransport_1044, MyDialoguesWrapperEnum.Dlg_ChineseTransport_20_02),\nnew MyDialogueSentence(MyActorEnum.MANJEET, MySoundCuesEnum.Dlg_ChineseTransport_1045, MyDialoguesWrapperEnum.Dlg_ChineseTransport_20_03),\n\n            }\n            ));\n\n            #endregion\n\n            #region Chinese Refinery\n\n            m_dialogues.Add((int)MyDialogueEnum.CHINESE_REFINERY_0100_GO_CLOSER, new MyDialogue(\n            new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_ChineseRafinery_1000, MyDialoguesWrapperEnum.Dlg_ChineseRefinery_1000),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_ChineseRafinery_1001, MyDialoguesWrapperEnum.Dlg_ChineseRefinery_1001),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_ChineseRafinery_1002, MyDialoguesWrapperEnum.Dlg_ChineseRefinery_1002),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ChineseRafinery_1003, MyDialoguesWrapperEnum.Dlg_ChineseRefinery_1003),\n            }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.CHINESE_REFINERY_0150_GET_INSIDE, new MyDialogue(\n            new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_ChineseRafinery_1004, MyDialoguesWrapperEnum.Dlg_ChineseRefinery_1004),\n            }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.CHINESE_REFINERY_0200_LABORATORY, new MyDialogue(\n            new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_ChineseRafinery_1005, MyDialoguesWrapperEnum.Dlg_ChineseRefinery_1005),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ChineseRafinery_1006, MyDialoguesWrapperEnum.Dlg_ChineseRefinery_1006),\n                new MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_ChineseRafinery_1007, MyDialoguesWrapperEnum.Dlg_ChineseRefinery_1007),\n            }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.CHINESE_REFINERY_0300_DEACTIVATE_BOMB, new MyDialogue(\n            new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ChineseRafinery_1008, MyDialoguesWrapperEnum.Dlg_ChineseRefinery_1008),\n                new MyDialogueSentence(MyActorEnum.MANJEET, MySoundCuesEnum.Dlg_ChineseRafinery_1009, MyDialoguesWrapperEnum.Dlg_ChineseRefinery_1009),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ChineseRafinery_1010, MyDialoguesWrapperEnum.Dlg_ChineseRefinery_1010),\n                new MyDialogueSentence(MyActorEnum.MANJEET, MySoundCuesEnum.Dlg_ChineseRafinery_1011, MyDialoguesWrapperEnum.Dlg_ChineseRefinery_1011),\n                new MyDialogueSentence(MyActorEnum.MANJEET, MySoundCuesEnum.Dlg_ChineseRafinery_1012, MyDialoguesWrapperEnum.Dlg_ChineseRefinery_1012),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ChineseRafinery_1013, MyDialoguesWrapperEnum.Dlg_ChineseRefinery_1013),\n                new MyDialogueSentence(MyActorEnum.MANJEET, MySoundCuesEnum.Dlg_ChineseRafinery_1014, MyDialoguesWrapperEnum.Dlg_ChineseRefinery_1014),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ChineseRafinery_1015, MyDialoguesWrapperEnum.Dlg_ChineseRefinery_1015),\n                new MyDialogueSentence(MyActorEnum.MANJEET, MySoundCuesEnum.Dlg_ChineseRafinery_1016, MyDialoguesWrapperEnum.Dlg_ChineseRefinery_1016),\n            }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.CHINESE_REFINERY_0400_GO_TO_SECOND_ASTEROID, new MyDialogue(\n            new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ChineseRafinery_1017, MyDialoguesWrapperEnum.Dlg_ChineseRefinery_1017),\n                new MyDialogueSentence(MyActorEnum.MANJEET, MySoundCuesEnum.Dlg_ChineseRafinery_1018, MyDialoguesWrapperEnum.Dlg_ChineseRefinery_1018),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ChineseRafinery_1019, MyDialoguesWrapperEnum.Dlg_ChineseRefinery_1019),\n                new MyDialogueSentence(MyActorEnum.MANJEET, MySoundCuesEnum.Dlg_ChineseRafinery_1020, MyDialoguesWrapperEnum.Dlg_ChineseRefinery_1020),\n                new MyDialogueSentence(MyActorEnum.MANJEET, MySoundCuesEnum.Dlg_ChineseRafinery_1021, MyDialoguesWrapperEnum.Dlg_ChineseRefinery_1021),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ChineseRafinery_1022, MyDialoguesWrapperEnum.Dlg_ChineseRefinery_1022),\n            }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.CHINESE_REFINERY_0500_FIND_THE_COMPUTER, new MyDialogue(\n            new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.MANJEET, MySoundCuesEnum.Dlg_ChineseRafinery_1023, MyDialoguesWrapperEnum.Dlg_ChineseRefinery_1023),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ChineseRafinery_1024, MyDialoguesWrapperEnum.Dlg_ChineseRefinery_1024),\n                new MyDialogueSentence(MyActorEnum.MANJEET, MySoundCuesEnum.Dlg_ChineseRafinery_1025, MyDialoguesWrapperEnum.Dlg_ChineseRefinery_1025),\n                new MyDialogueSentence(MyActorEnum.MANJEET, MySoundCuesEnum.Dlg_ChineseRafinery_1026, MyDialoguesWrapperEnum.Dlg_ChineseRefinery_1026),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ChineseRafinery_1027, MyDialoguesWrapperEnum.Dlg_ChineseRefinery_1027),\n                new MyDialogueSentence(MyActorEnum.MANJEET, MySoundCuesEnum.Dlg_ChineseRafinery_1028, MyDialoguesWrapperEnum.Dlg_ChineseRefinery_1028),\n                new MyDialogueSentence(MyActorEnum.MANJEET, MySoundCuesEnum.Dlg_ChineseRafinery_1029, MyDialoguesWrapperEnum.Dlg_ChineseRefinery_1029),\n                new MyDialogueSentence(MyActorEnum.MANJEET, MySoundCuesEnum.Dlg_ChineseRafinery_1030, MyDialoguesWrapperEnum.Dlg_ChineseRefinery_1030),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ChineseRafinery_1031, MyDialoguesWrapperEnum.Dlg_ChineseRefinery_1031),\n                new MyDialogueSentence(MyActorEnum.MANJEET, MySoundCuesEnum.Dlg_ChineseRafinery_1032, MyDialoguesWrapperEnum.Dlg_ChineseRefinery_1032),\n            }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.CHINESE_REFINERY_0600_GO_TO_THIRD_ASTEROID, new MyDialogue(\n            new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ChineseRafinery_1033, MyDialoguesWrapperEnum.Dlg_ChineseRefinery_1033),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ChineseRafinery_1034, MyDialoguesWrapperEnum.Dlg_ChineseRefinery_1034),\n                new MyDialogueSentence(MyActorEnum.MANJEET, MySoundCuesEnum.Dlg_ChineseRafinery_1035, MyDialoguesWrapperEnum.Dlg_ChineseRefinery_1035),\n           }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.CHINESE_REFINERY_0700_SNEAK_INSIDE_THE_STATION, new MyDialogue(\n            new MyDialogueSentence[] {\n               new MyDialogueSentence(MyActorEnum.MANJEET, MySoundCuesEnum.Dlg_ChineseRafinery_1036, MyDialoguesWrapperEnum.Dlg_ChineseRefinery_1036),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ChineseRafinery_1037, MyDialoguesWrapperEnum.Dlg_ChineseRefinery_1037),\n            }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.CHINESE_REFINERY_0800_FIND_THE_OLD_PATH, new MyDialogue(\n            new MyDialogueSentence[] {\n            }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.CHINESE_REFINERY_0900_HACK_THE_COMPUTER, new MyDialogue(\n            new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_ChineseRafinery_1038, MyDialoguesWrapperEnum.Dlg_ChineseRefinery_1038),\n            }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.CHINESE_REFINERY_1000_GET_OUT, new MyDialogue(\n            new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_ChineseRafinery_1039, MyDialoguesWrapperEnum.Dlg_ChineseRefinery_1039),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_ChineseRafinery_1040, MyDialoguesWrapperEnum.Dlg_ChineseRefinery_1040),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_ChineseRafinery_1041, MyDialoguesWrapperEnum.Dlg_ChineseRefinery_1041),\n            }\n            ));\n\n            #endregion\n\n            #region Cover Cargoship Retreat\n            m_dialogues.Add((int)MyDialogueEnum.CHINESE_ESCAPE_0100_INTRODUCTION, new MyDialogue(\n            new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_ChineseEscape_1000, MyDialoguesWrapperEnum.Dlg_ChineseEscape_1000),\n                new MyDialogueSentence(MyActorEnum.CHINESE_PILOT, MySoundCuesEnum.Dlg_ChineseEscape_1001, MyDialoguesWrapperEnum.Dlg_ChineseEscape_1001, noise: 0.9f, pauseBefore_ms: 2000),\n                new MyDialogueSentence(MyActorEnum.CHINESE_PILOT, MySoundCuesEnum.Dlg_ChineseEscape_1002, MyDialoguesWrapperEnum.Dlg_ChineseEscape_1002, noise: 0.9f),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ChineseEscape_1003, MyDialoguesWrapperEnum.Dlg_ChineseEscape_1003, pauseBefore_ms: 2000),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_ChineseEscape_1004, MyDialoguesWrapperEnum.Dlg_ChineseEscape_1004),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ChineseEscape_1005, MyDialoguesWrapperEnum.Dlg_ChineseEscape_1005),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_ChineseEscape_1006, MyDialoguesWrapperEnum.Dlg_ChineseEscape_1006),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_ChineseEscape_1007, MyDialoguesWrapperEnum.Dlg_ChineseEscape_1007),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ChineseEscape_1008, MyDialoguesWrapperEnum.Dlg_ChineseEscape_1008),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_ChineseEscape_1009, MyDialoguesWrapperEnum.Dlg_ChineseEscape_1009),\n                new MyDialogueSentence(MyActorEnum.CHINESE_PILOT, MySoundCuesEnum.Dlg_ChineseEscape_1010, MyDialoguesWrapperEnum.Dlg_ChineseEscape_1010, noise: 0.9f, pauseBefore_ms: 1000),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_ChineseEscape_1011, MyDialoguesWrapperEnum.Dlg_ChineseEscape_1011),\n            }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.CHINESE_ESCAPE_0200_IT_IS_TRAP, new MyDialogue(\n            new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.CHINESE_PILOT, MySoundCuesEnum.Dlg_ChineseEscape_1012, MyDialoguesWrapperEnum.Dlg_ChineseEscape_1012, noise: 0.9f, pauseBefore_ms: 2000),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_ChineseEscape_1013, MyDialoguesWrapperEnum.Dlg_ChineseEscape_1013, noise: 0.9f),\n            }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.CHINESE_ESCAPE_0300_ON_THIRD, new MyDialogue(\n            new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.CHINESE_PILOT, MySoundCuesEnum.Dlg_ChineseEscape_1014, MyDialoguesWrapperEnum.Dlg_ChineseEscape_1014, noise: 0.9f),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_ChineseEscape_1015, MyDialoguesWrapperEnum.Dlg_ChineseEscape_1015),\n                new MyDialogueSentence(MyActorEnum.CHINESE_PILOT, MySoundCuesEnum.Dlg_ChineseEscape_1016, MyDialoguesWrapperEnum.Dlg_ChineseEscape_1016, noise: 0.9f),\n                new MyDialogueSentence(MyActorEnum.CHINESE_PILOT, MySoundCuesEnum.Dlg_ChineseEscape_1017, MyDialoguesWrapperEnum.Dlg_ChineseEscape_1017, noise: 0.9f),\n                new MyDialogueSentence(MyActorEnum.CHINESE_PILOT, MySoundCuesEnum.Dlg_ChineseEscape_1018, MyDialoguesWrapperEnum.Dlg_ChineseEscape_1018, noise: 0.9f),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ChineseEscape_1019, MyDialoguesWrapperEnum.Dlg_ChineseEscape_1019),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_ChineseEscape_1020, MyDialoguesWrapperEnum.Dlg_ChineseEscape_1020),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_ChineseEscape_1021, MyDialoguesWrapperEnum.Dlg_ChineseEscape_1021),\n            }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.CHINESE_ESCAPE_0400_ON_NINE, new MyDialogue(\n            new MyDialogueSentence[] {\n                //new MyDialogueSentence(MyActorEnum.MARCUS, null, MyDialoguesWrapperEnum.Dlg_ChineseEscape_04_01),\n            }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.CHINESE_ESCAPE_0500_WATCH_BACK, new MyDialogue(\n            new MyDialogueSentence[] {\n                //new MyDialogueSentence(MyActorEnum.MARCUS, null, MyDialoguesWrapperEnum.Dlg_ChineseEscape_05_01),\n            }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.CHINESE_ESCAPE_0600_WATCH_FRONT, new MyDialogue(\n            new MyDialogueSentence[] {\n                //new MyDialogueSentence(MyActorEnum.MARCUS, null, MyDialoguesWrapperEnum.Dlg_ChineseEscape_06_01),\n            }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.CHINESE_ESCAPE_0700_ON_THE_RIGHT, new MyDialogue(\n            new MyDialogueSentence[] {\n                //new MyDialogueSentence(MyActorEnum.MARCUS, null, MyDialoguesWrapperEnum.Dlg_ChineseEscape_07_01),\n            }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.CHINESE_ESCAPE_0800_MADELYN_IN_SIGHT, new MyDialogue(\n            new MyDialogueSentence[] {   \n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_ChineseEscape_1022, MyDialoguesWrapperEnum.Dlg_ChineseEscape_1022),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_ChineseEscape_1023, MyDialoguesWrapperEnum.Dlg_ChineseEscape_1023),\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_ChineseEscape_1024, MyDialoguesWrapperEnum.Dlg_ChineseEscape_1024),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ChineseEscape_1025, MyDialoguesWrapperEnum.Dlg_ChineseEscape_1025),\n            }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.CHINESE_ESCAPE_0900_KILL_THOSE_BASTARDS, new MyDialogue(\n            new MyDialogueSentence[] {\n                //new MyDialogueSentence(MyActorEnum.MARCUS, null, MyDialoguesWrapperEnum.Dlg_ChineseEscape_09_01),\n                //new MyDialogueSentence(MyActorEnum.MARCUS, null, MyDialoguesWrapperEnum.Dlg_DialoguePlaceholder),\n            }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.CHINESE_ESCAPE_1000_LAST_OF_THEM, new MyDialogue(\n            new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_ChineseEscape_1026, MyDialoguesWrapperEnum.Dlg_ChineseEscape_1026),\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_ChineseEscape_1027, MyDialoguesWrapperEnum.Dlg_ChineseEscape_1027),\n            }\n            ));\n\n            #endregion\n            \n            #region Junkyard Race\n            \n\n\n            m_dialogues.Add((int)MyDialogueEnum.JUNKYARD_RETURN_0100, new MyDialogue(\n                                                                                         new MyDialogueSentence[]{\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardReturn_1000, MyDialoguesWrapperEnum.Dlg_JunkyardReturn_0100, listener: MyActorEnum.APOLLO),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_JunkyardReturn_1001, MyDialoguesWrapperEnum.Dlg_JunkyardReturn_0101, listener: MyActorEnum.MARCUS),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_JunkyardReturn_1002, MyDialoguesWrapperEnum.Dlg_JunkyardReturn_0102, listener:MyActorEnum.MARCUS),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_JunkyardReturn_1003, MyDialoguesWrapperEnum.Dlg_JunkyardReturn_0103, listener:MyActorEnum.APOLLO),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_JunkyardReturn_1004, MyDialoguesWrapperEnum.Dlg_JunkyardReturn_0104, listener:MyActorEnum.APOLLO),\n\n                                                                                             }\n                                                                                         ));\nm_dialogues.Add((int)MyDialogueEnum.JUNKYARD_RETURN_0200, new MyDialogue(\n                                                                                         new MyDialogueSentence[]{\nnew MyDialogueSentence(MyActorEnum.MANJEET, MySoundCuesEnum.Dlg_JunkyardReturn_1005, MyDialoguesWrapperEnum.Dlg_JunkyardReturn_0200, listener: MyActorEnum.APOLLO),\nnew MyDialogueSentence(MyActorEnum.MANJEET, MySoundCuesEnum.Dlg_JunkyardReturn_1006, MyDialoguesWrapperEnum.Dlg_JunkyardReturn_0201, listener: MyActorEnum.APOLLO),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardReturn_1007, MyDialoguesWrapperEnum.Dlg_JunkyardReturn_0202),\nnew MyDialogueSentence(MyActorEnum.MANJEET, MySoundCuesEnum.Dlg_JunkyardReturn_1008, MyDialoguesWrapperEnum.Dlg_JunkyardReturn_0203),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_JunkyardReturn_1009, MyDialoguesWrapperEnum.Dlg_JunkyardReturn_0204),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_JunkyardReturn_1010, MyDialoguesWrapperEnum.Dlg_JunkyardReturn_0205),\nnew MyDialogueSentence(MyActorEnum.MANJEET, MySoundCuesEnum.Dlg_JunkyardReturn_1011, MyDialoguesWrapperEnum.Dlg_JunkyardReturn_0206),\nnew MyDialogueSentence(MyActorEnum.MANJEET, MySoundCuesEnum.Dlg_JunkyardReturn_1012, MyDialoguesWrapperEnum.Dlg_JunkyardReturn_0207),\n                                                                                         }                                                                             \n                                                                                         ));\n\n            m_dialogues.Add((int)MyDialogueEnum.JUNKYARD_RETURN_0250, new MyDialogue(\n                new MyDialogueSentence[]\n                {\n                    new MyDialogueSentence(MyActorEnum.SPEEDSTER, MySoundCuesEnum.Dlg_JunkyardReturn_1013, MyDialoguesWrapperEnum.Dlg_JunkyardReturn_0208, listener: MyActorEnum.APOLLO),\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardReturn_1014, MyDialoguesWrapperEnum.Dlg_JunkyardReturn_0209),\n                    new MyDialogueSentence(MyActorEnum.SPEEDSTER, MySoundCuesEnum.Dlg_JunkyardReturn_1015, MyDialoguesWrapperEnum.Dlg_JunkyardReturn_0210, listener: MyActorEnum.APOLLO),\n                    new MyDialogueSentence(MyActorEnum.SPEEDSTER, MySoundCuesEnum.Dlg_JunkyardReturn_1016, MyDialoguesWrapperEnum.Dlg_JunkyardReturn_0211, listener: MyActorEnum.APOLLO),\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_JunkyardReturn_1017, MyDialoguesWrapperEnum.Dlg_JunkyardReturn_0212),\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_JunkyardReturn_1018, MyDialoguesWrapperEnum.Dlg_JunkyardReturn_0213),\n                    new MyDialogueSentence(MyActorEnum.SPEEDSTER, MySoundCuesEnum.Dlg_JunkyardReturn_1019, MyDialoguesWrapperEnum.Dlg_JunkyardReturn_0214, listener: MyActorEnum.APOLLO),\n                    new MyDialogueSentence(MyActorEnum.SPEEDSTER, MySoundCuesEnum.Dlg_JunkyardReturn_1020, MyDialoguesWrapperEnum.Dlg_JunkyardReturn_0215, listener: MyActorEnum.APOLLO),\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_JunkyardReturn_1021, MyDialoguesWrapperEnum.Dlg_JunkyardReturn_0216),\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardReturn_1022, MyDialoguesWrapperEnum.Dlg_JunkyardReturn_0217),\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_JunkyardReturn_1023, MyDialoguesWrapperEnum.Dlg_JunkyardReturn_0218),\n                    new MyDialogueSentence(MyActorEnum.SPEEDSTER, MySoundCuesEnum.Dlg_JunkyardReturn_1024, MyDialoguesWrapperEnum.Dlg_JunkyardReturn_0219),\n                    new MyDialogueSentence(MyActorEnum.MANJEET, MySoundCuesEnum.Dlg_JunkyardReturn_1025, MyDialoguesWrapperEnum.Dlg_JunkyardReturn_0220),\n\n                    }\n                ));\n            m_dialogues.Add((int)MyDialogueEnum.JUNKYARD_RETURN_0300, new MyDialogue(\n                new MyDialogueSentence[]{\n                    new MyDialogueSentence(MyActorEnum.SPEEDSTER, MySoundCuesEnum.Dlg_JunkyardReturn_1026, MyDialoguesWrapperEnum.Dlg_JunkyardReturn_0300),\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_JunkyardReturn_1027, MyDialoguesWrapperEnum.Dlg_JunkyardReturn_0301),\n\n                                                                                             }\n                                                                                         ));\nm_dialogues.Add((int)MyDialogueEnum.JUNKYARD_RETURN_0400, new MyDialogue(\n                                                                                         new MyDialogueSentence[]{\nnew MyDialogueSentence(MyActorEnum.SPEEDSTER, MySoundCuesEnum.Dlg_JunkyardReturn_1038, MyDialoguesWrapperEnum.Dlg_JunkyardReturn_0400),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_JunkyardReturn_1039, MyDialoguesWrapperEnum.Dlg_JunkyardReturn_0401),\n\n                                                                                             }\n                                                                                         ));\nm_dialogues.Add((int)MyDialogueEnum.JUNKYARD_RETURN_0500, new MyDialogue(\n                                                                                         new MyDialogueSentence[]{\nnew MyDialogueSentence(MyActorEnum.SPEEDSTER, MySoundCuesEnum.Dlg_JunkyardReturn_1040, MyDialoguesWrapperEnum.Dlg_JunkyardReturn_0500),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardReturn_1041, MyDialoguesWrapperEnum.Dlg_JunkyardReturn_0501),\n\n                                                                                             }));\n\nm_dialogues.Add((int)MyDialogueEnum.JUNKYARD_RETURN_0600, new MyDialogue(\n                                                                                         new MyDialogueSentence[]{\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_JunkyardReturn_1042, MyDialoguesWrapperEnum.Dlg_JunkyardReturn_0600),\n\n                                                                                             }\n                                                                                         ));\nm_dialogues.Add((int)MyDialogueEnum.JUNKYARD_RETURN_0700, new MyDialogue(\n                                                                                         new MyDialogueSentence[]{\n                                                                                             new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_JunkyardReturn_1043, MyDialoguesWrapperEnum.Dlg_JunkyardReturn_0700),\n\n                                                                                             }\n                                                                                         ));\nm_dialogues.Add((int)MyDialogueEnum.JUNKYARD_RETURN_0800, new MyDialogue(\n                                                                                         new MyDialogueSentence[]{\n                                                                                             new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardReturn_1044, MyDialoguesWrapperEnum.Dlg_JunkyardReturn_0800),\n\n                                                                                             }\n                                                                                         ));\nm_dialogues.Add((int)MyDialogueEnum.JUNKYARD_RETURN_0900, new MyDialogue(\n                                                                                         new MyDialogueSentence[]{\n                                                                                             new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_JunkyardReturn_1045, MyDialoguesWrapperEnum.Dlg_JunkyardReturn_0900),\n\n                                                                                             }\n                                                                                         ));\nm_dialogues.Add((int)MyDialogueEnum.JUNKYARD_RETURN_1000, new MyDialogue(new MyDialogueSentence[] {\n        new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardReturn_1046, MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1000),\n    }\n));\nm_dialogues.Add((int)MyDialogueEnum.JUNKYARD_RETURN_1100, new MyDialogue(new MyDialogueSentence[]{\n        new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardReturn_1047, MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1100),\n    }\n));\nm_dialogues.Add((int)MyDialogueEnum.JUNKYARD_RETURN_1200, new MyDialogue(new MyDialogueSentence[] {\n        new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_JunkyardReturn_1048, MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1200),\n    }\n));\nm_dialogues.Add((int)MyDialogueEnum.JUNKYARD_RETURN_1300, new MyDialogue(\n                                                                                         new MyDialogueSentence[]{\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardReturn_1049, MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1300),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_JunkyardReturn_1050, MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1301),\nnew MyDialogueSentence(MyActorEnum.SPEEDSTER, MySoundCuesEnum.Dlg_JunkyardReturn_1051, MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1302, listener: MyActorEnum.APOLLO),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_JunkyardReturn_1052, MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1303),\nnew MyDialogueSentence(MyActorEnum.SPEEDSTER, MySoundCuesEnum.Dlg_JunkyardReturn_1053, MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1304),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardReturn_1054, MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1305),\nnew MyDialogueSentence(MyActorEnum.SPEEDSTER, MySoundCuesEnum.Dlg_JunkyardReturn_1055, MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1306),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_JunkyardReturn_1056, MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1307),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_JunkyardReturn_1057, MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1308),\nnew MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_JunkyardReturn_1058, MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1309),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_JunkyardReturn_1059, MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1310),\n\n                                                                                             }\n                                                                                         ));\nm_dialogues.Add((int)MyDialogueEnum.JUNKYARD_RETURN_1400, new MyDialogue(\n                                                                                         new MyDialogueSentence[]{\nnew MyDialogueSentence(MyActorEnum.MANJEET, MySoundCuesEnum.Dlg_JunkyardReturn_1060, MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1400, listener: MyActorEnum.APOLLO),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardReturn_1061, MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1401),\nnew MyDialogueSentence(MyActorEnum.MANJEET, MySoundCuesEnum.Dlg_JunkyardReturn_1062, MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1402),\nnew MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_JunkyardReturn_1063, MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1403),\nnew MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_JunkyardReturn_1064, MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1404),\nnew MyDialogueSentence(MyActorEnum.MANJEET, MySoundCuesEnum.Dlg_JunkyardReturn_1065, MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1405),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_JunkyardReturn_1066, MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1406),\nnew MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_JunkyardReturn_1067, MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1407),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardReturn_1068, MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1408),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardReturn_1069, MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1409),\nnew MyDialogueSentence(MyActorEnum.MANJEET, MySoundCuesEnum.Dlg_JunkyardReturn_1070, MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1410),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_JunkyardReturn_1071, MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1411),\nnew MyDialogueSentence(MyActorEnum.MANJEET, MySoundCuesEnum.Dlg_JunkyardReturn_1072, MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1412),\nnew MyDialogueSentence(MyActorEnum.MANJEET, MySoundCuesEnum.Dlg_JunkyardReturn_1073, MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1413),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_JunkyardReturn_1074, MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1414),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_JunkyardReturn_1075, MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1415),\nnew MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_JunkyardReturn_1076, MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1416),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardReturn_1077, MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1417),\nnew MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_JunkyardReturn_1078, MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1418),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardReturn_1079, MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1419),\nnew MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_JunkyardReturn_1080, MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1420),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_JunkyardReturn_1081, MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1421),\nnew MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_JunkyardReturn_1082, MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1422),\nnew MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_JunkyardReturn_1083, MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1423),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_JunkyardReturn_1084, MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1424),\nnew MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_JunkyardReturn_1085, MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1425),\nnew MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_JunkyardReturn_1086, MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1426),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardReturn_1087, MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1427),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardReturn_1088, MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1428),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_JunkyardReturn_1089, MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1429),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_JunkyardReturn_1090, MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1430),\n\n                                                                                             }\n                                                                                         ));\n\n\n\n            #endregion\n            \n            #region Racing Quotes\n            m_dialogues.Add((int)MyDialogueEnum.RACING_CHALLENGER_0100_FRONT01, new MyDialogue(\n                new MyDialogueSentence[] \n                {\n                    new MyDialogueSentence(MyActorEnum.SPEEDSTER, MySoundCuesEnum.Dlg_JunkyardReturn_1028, MyDialoguesWrapperEnum.Dlg_Challenger_0100_FRONT01, 1f),\n                }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.RACING_CHALLENGER_0200_FRONT02, new MyDialogue(\n                new MyDialogueSentence[]\n                {\n                    new MyDialogueSentence(MyActorEnum.SPEEDSTER, MySoundCuesEnum.Dlg_JunkyardReturn_1029, MyDialoguesWrapperEnum.Dlg_Challenger_0100_FRONT02, 1f),\n                }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.RACING_CHALLENGER_0300_FRONT03, new MyDialogue(\n                new MyDialogueSentence[]\n                {\n                    new MyDialogueSentence(MyActorEnum.SPEEDSTER, MySoundCuesEnum.Dlg_JunkyardReturn_1030, MyDialoguesWrapperEnum.Dlg_Challenger_0100_FRONT03, 1f),\n                }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.RACING_CHALLENGER_0400_FRONT04, new MyDialogue(\n                new MyDialogueSentence[]\n                {\n                    new MyDialogueSentence(MyActorEnum.SPEEDSTER, MySoundCuesEnum.Dlg_JunkyardReturn_1031, MyDialoguesWrapperEnum.Dlg_Challenger_0100_FRONT04, 1f),\n                }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.RACING_CHALLENGER_0500_FRONT05, new MyDialogue(\n                new MyDialogueSentence[] \n                {\n                    new MyDialogueSentence(MyActorEnum.SPEEDSTER, MySoundCuesEnum.Dlg_JunkyardReturn_1032, MyDialoguesWrapperEnum.Dlg_Challenger_0100_FRONT05, 1f),\n                }\n            ));\n            m_dialogues.Add((int)MyDialogueEnum.RACING_CHALLENGER_0600_BEHIND01, new MyDialogue(\n                new MyDialogueSentence[] \n                {\n                    new MyDialogueSentence(MyActorEnum.SPEEDSTER, MySoundCuesEnum.Dlg_JunkyardReturn_1033, MyDialoguesWrapperEnum.Dlg_Challenger_0100_BEHIND01, 1f),\n                }\n            ));\n            m_dialogues.Add((int)MyDialogueEnum.RACING_CHALLENGER_0700_BEHIND02, new MyDialogue(\n                    new MyDialogueSentence[] \n                    {\n                        new MyDialogueSentence(MyActorEnum.SPEEDSTER, MySoundCuesEnum.Dlg_JunkyardReturn_1034, MyDialoguesWrapperEnum.Dlg_Challenger_0100_BEHIND02, 1f),\n                    }\n            ));\n            m_dialogues.Add((int)MyDialogueEnum.RACING_CHALLENGER_0800_BEHIND03, new MyDialogue(\n                new MyDialogueSentence[] \n                {\n                    new MyDialogueSentence(MyActorEnum.SPEEDSTER, MySoundCuesEnum.Dlg_JunkyardReturn_1035, MyDialoguesWrapperEnum.Dlg_Challenger_0100_BEHIND03, 1f),\n                }\n            ));\n            m_dialogues.Add((int)MyDialogueEnum.RACING_CHALLENGER_0900_BEHIND04, new MyDialogue(\n                new MyDialogueSentence[] \n                {\n                    new MyDialogueSentence(MyActorEnum.SPEEDSTER, MySoundCuesEnum.Dlg_JunkyardReturn_1036, MyDialoguesWrapperEnum.Dlg_Challenger_0100_BEHIND04, 1f),\n                }\n            ));\n            m_dialogues.Add((int)MyDialogueEnum.RACING_CHALLENGER_1000_BEHIND05, new MyDialogue(\n                new MyDialogueSentence[]\n                {\n                    new MyDialogueSentence(MyActorEnum.SPEEDSTER, MySoundCuesEnum.Dlg_JunkyardReturn_1037, MyDialoguesWrapperEnum.Dlg_Challenger_0100_BEHIND05, 1f),\n                }\n            ));\n            #endregion\n\n            #region Rime\n\n            m_dialogues.Add((int)MyDialogueEnum.RIME_0100_INTRODUCTION, new MyDialogue(\n            new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_RimeConvince_1000, MyDialoguesWrapperEnum.Dlg_Rime_0101),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_RimeConvince_1001, MyDialoguesWrapperEnum.Dlg_Rime_0102),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_RimeConvince_1002, MyDialoguesWrapperEnum.Dlg_Rime_0103),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_RimeConvince_1003, MyDialoguesWrapperEnum.Dlg_Rime_0104),\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_RimeConvince_1004, MyDialoguesWrapperEnum.Dlg_Rime_0105),\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_RimeConvince_1005, MyDialoguesWrapperEnum.Dlg_Rime_0106),\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_RimeConvince_1006, MyDialoguesWrapperEnum.Dlg_Rime_0107),\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_RimeConvince_1007, MyDialoguesWrapperEnum.Dlg_Rime_0108),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_RimeConvince_1008, MyDialoguesWrapperEnum.Dlg_Rime_0109),\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_RimeConvince_1009, MyDialoguesWrapperEnum.Dlg_Rime_0110),\n            }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.RIME_0150_HEAD_TO_REEF, new MyDialogue(\n         new MyDialogueSentence[] {\n                                new MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_RimeConvince_1010, MyDialoguesWrapperEnum.Dlg_Rime_0111),\n                new MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_RimeConvince_1011, MyDialoguesWrapperEnum.Dlg_Rime_0112),\n                new MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_RimeConvince_1012, MyDialoguesWrapperEnum.Dlg_Rime_0113),\n                new MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_RimeConvince_1013, MyDialoguesWrapperEnum.Dlg_Rime_0114),\n                new MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_RimeConvince_1014, MyDialoguesWrapperEnum.Dlg_Rime_0115),\n                new MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_RimeConvince_1015, MyDialoguesWrapperEnum.Dlg_Rime_0116),\n                new MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_RimeConvince_1016, MyDialoguesWrapperEnum.Dlg_Rime_0117),\n                new MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_RimeConvince_1017, MyDialoguesWrapperEnum.Dlg_Rime_0118),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_RimeConvince_1018, MyDialoguesWrapperEnum.Dlg_Rime_0119),\n                new MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_RimeConvince_1019, MyDialoguesWrapperEnum.Dlg_Rime_0120),\n                new MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_RimeConvince_1020, MyDialoguesWrapperEnum.Dlg_Rime_0121),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_RimeConvince_1021, MyDialoguesWrapperEnum.Dlg_Rime_0122),\n\n            }\n         ));\n\n            m_dialogues.Add((int)MyDialogueEnum.RIME_0200_REEF_REACHED, new MyDialogue(\n new MyDialogueSentence[] {       \n                new MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_RimeConvince_1022, MyDialoguesWrapperEnum.Dlg_Rime_0201),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_RimeConvince_1023, MyDialoguesWrapperEnum.Dlg_Rime_0202),\n            }\n ));\n\n\n            m_dialogues.Add((int)MyDialogueEnum.RIME_0300_TALK_TO_REEF, new MyDialogue(\n            new MyDialogueSentence[] {\n        new MyDialogueSentence(MyActorEnum.FRANCIS_REEF, MySoundCuesEnum.Dlg_RimeConvince_1024, MyDialoguesWrapperEnum.Dlg_Rime_0203),\n        new MyDialogueSentence(MyActorEnum.FRANCIS_REEF, MySoundCuesEnum.Dlg_RimeConvince_1025, MyDialoguesWrapperEnum.Dlg_Rime_0204),\n        new MyDialogueSentence(MyActorEnum.FRANCIS_REEF, MySoundCuesEnum.Dlg_RimeConvince_1026, MyDialoguesWrapperEnum.Dlg_Rime_0205),\n        new MyDialogueSentence(MyActorEnum.MARCUS,  MySoundCuesEnum.Dlg_RimeConvince_1027, MyDialoguesWrapperEnum.Dlg_Rime_0206),\n        new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_RimeConvince_1028, MyDialoguesWrapperEnum.Dlg_Rime_0207),\n        new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_RimeConvince_1029, MyDialoguesWrapperEnum.Dlg_Rime_0208),\n        new MyDialogueSentence(MyActorEnum.FRANCIS_REEF, MySoundCuesEnum.Dlg_RimeConvince_1030, MyDialoguesWrapperEnum.Dlg_Rime_0209),\n        new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_RimeConvince_1031, MyDialoguesWrapperEnum.Dlg_Rime_0210),\n        new MyDialogueSentence(MyActorEnum.FRANCIS_REEF, MySoundCuesEnum.Dlg_RimeConvince_1032, MyDialoguesWrapperEnum.Dlg_Rime_0211),\n        new MyDialogueSentence(MyActorEnum.MARCUS,          MySoundCuesEnum.Dlg_RimeConvince_1033, MyDialoguesWrapperEnum.Dlg_Rime_0212),\n        new MyDialogueSentence(MyActorEnum.FRANCIS_REEF, MySoundCuesEnum.Dlg_RimeConvince_1034, MyDialoguesWrapperEnum.Dlg_Rime_0213),\n        new MyDialogueSentence(MyActorEnum.FRANCIS_REEF, MySoundCuesEnum.Dlg_RimeConvince_1035, MyDialoguesWrapperEnum.Dlg_Rime_0214),\n        //new MyDialogueSentence(MyActorEnum.FRANCIS_REEF, MySoundCuesEnum.Dlg_RimeConvince_1036, MyDialoguesWrapperEnum.Dlg_Rime_0215),\n        new MyDialogueSentence(MyActorEnum.FRANCIS_REEF, MySoundCuesEnum.Dlg_RimeConvince_1037, MyDialoguesWrapperEnum.Dlg_Rime_0216),\n        new MyDialogueSentence(MyActorEnum.FRANCIS_REEF, MySoundCuesEnum.Dlg_RimeConvince_1038, MyDialoguesWrapperEnum.Dlg_Rime_0217),\n        new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_RimeConvince_1039, MyDialoguesWrapperEnum.Dlg_Rime_0218),\n        new MyDialogueSentence(MyActorEnum.FRANCIS_REEF, MySoundCuesEnum.Dlg_RimeConvince_1040, MyDialoguesWrapperEnum.Dlg_Rime_0219),\n        new MyDialogueSentence(MyActorEnum.FRANCIS_REEF, MySoundCuesEnum.Dlg_RimeConvince_1041, MyDialoguesWrapperEnum.Dlg_Rime_0220),\n        new MyDialogueSentence(MyActorEnum.FRANCIS_REEF, MySoundCuesEnum.Dlg_RimeConvince_1042, MyDialoguesWrapperEnum.Dlg_Rime_0221),\n        new MyDialogueSentence(MyActorEnum.FRANCIS_REEF, MySoundCuesEnum.Dlg_RimeConvince_1043, MyDialoguesWrapperEnum.Dlg_Rime_0222),\n        new MyDialogueSentence(MyActorEnum.FRANCIS_REEF, MySoundCuesEnum.Dlg_RimeConvince_1044, MyDialoguesWrapperEnum.Dlg_Rime_0223),\n        new MyDialogueSentence(MyActorEnum.VALENTIN,     MySoundCuesEnum.Dlg_RimeConvince_1045, MyDialoguesWrapperEnum.Dlg_Rime_0224),\n        new MyDialogueSentence(MyActorEnum.FRANCIS_REEF, MySoundCuesEnum.Dlg_RimeConvince_1046, MyDialoguesWrapperEnum.Dlg_Rime_0225),\n        new MyDialogueSentence(MyActorEnum.FRANCIS_REEF, MySoundCuesEnum.Dlg_RimeConvince_1047, MyDialoguesWrapperEnum.Dlg_Rime_0226),\n        new MyDialogueSentence(MyActorEnum.FRANCIS_REEF, MySoundCuesEnum.Dlg_RimeConvince_1048, MyDialoguesWrapperEnum.Dlg_Rime_0227),\n        new MyDialogueSentence(MyActorEnum.FRANCIS_REEF, MySoundCuesEnum.Dlg_RimeConvince_1049, MyDialoguesWrapperEnum.Dlg_Rime_0228),\n        new MyDialogueSentence(MyActorEnum.FRANCIS_REEF, MySoundCuesEnum.Dlg_RimeConvince_1050, MyDialoguesWrapperEnum.Dlg_Rime_0229),\n        new MyDialogueSentence(MyActorEnum.FRANCIS_REEF, MySoundCuesEnum.Dlg_RimeConvince_1051, MyDialoguesWrapperEnum.Dlg_Rime_0230),\n        new MyDialogueSentence(MyActorEnum.FRANCIS_REEF, MySoundCuesEnum.Dlg_RimeConvince_1052, MyDialoguesWrapperEnum.Dlg_Rime_0231),\n        new MyDialogueSentence(MyActorEnum.FRANCIS_REEF, MySoundCuesEnum.Dlg_RimeConvince_1053, MyDialoguesWrapperEnum.Dlg_Rime_0232),\n        new MyDialogueSentence(MyActorEnum.TARJA,       MySoundCuesEnum.Dlg_RimeConvince_1054, MyDialoguesWrapperEnum.Dlg_Rime_0233),\n        new MyDialogueSentence(MyActorEnum.MARCUS,      MySoundCuesEnum.Dlg_RimeConvince_1055, MyDialoguesWrapperEnum.Dlg_Rime_0234),\n        new MyDialogueSentence(MyActorEnum.MADELYN,     MySoundCuesEnum.Dlg_RimeConvince_1056, MyDialoguesWrapperEnum.Dlg_Rime_0235),  \n        new MyDialogueSentence(MyActorEnum.FRANCIS_REEF,MySoundCuesEnum.Dlg_RimeConvince_1057, MyDialoguesWrapperEnum.Dlg_Rime_0236),\n        }\n            ));\n\n\n            m_dialogues.Add((int)MyDialogueEnum.RIME_0500_LISTEN_TO_SUSPICIOUS, new MyDialogue(\n            new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_RimeConvince_1058, MyDialoguesWrapperEnum.Dlg_Rime_0501),\n            }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.RIME_0600_CLIENTS_TALK, new MyDialogue(\n            new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.RIME_CLIENT1, MySoundCuesEnum.Dlg_RimeConvince_1059, MyDialoguesWrapperEnum.Dlg_Rime_0601, noise: 0.9f),\n                new MyDialogueSentence(MyActorEnum.RIME_CLIENT2, MySoundCuesEnum.Dlg_RimeConvince_1060, MyDialoguesWrapperEnum.Dlg_Rime_0602, noise: 0.9f),\n                new MyDialogueSentence(MyActorEnum.RIME_CLIENT2, MySoundCuesEnum.Dlg_RimeConvince_1061, MyDialoguesWrapperEnum.Dlg_Rime_0602a, noise: 0.9f),\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_RimeConvince_1062, MyDialoguesWrapperEnum.Dlg_Rime_0603),\n            }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.RIME_0700_DUPLEX_BOUNCER, new MyDialogue(\n            new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.RIME_BOUNCER, MySoundCuesEnum.Dlg_RimeConvince_1063, MyDialoguesWrapperEnum.Dlg_Rime_0701, noise: 0.9f),\n                new MyDialogueSentence(MyActorEnum.RIME_CLIENT3, MySoundCuesEnum.Dlg_RimeConvince_1064, MyDialoguesWrapperEnum.Dlg_Rime_0702, noise: 0.9f),\n                new MyDialogueSentence(MyActorEnum.RIME_BOUNCER, MySoundCuesEnum.Dlg_RimeConvince_1065, MyDialoguesWrapperEnum.Dlg_Rime_0703, noise: 0.9f),\n                new MyDialogueSentence(MyActorEnum.RIME_BOUNCER, MySoundCuesEnum.Dlg_RimeConvince_1066, MyDialoguesWrapperEnum.Dlg_Rime_0703a, noise: 0.9f),\n                new MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_RimeConvince_1067, MyDialoguesWrapperEnum.Dlg_Rime_0704),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_RimeConvince_1068, MyDialoguesWrapperEnum.Dlg_Rime_0705),\n            }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.RIME_0800_CONTACT_APPEARS, new MyDialogue(\n            new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.RIME_BARKEEPER, MySoundCuesEnum.Dlg_RimeConvince_1069, MyDialoguesWrapperEnum.Dlg_Rime_0801, noise: 0.9f),\n                new MyDialogueSentence(MyActorEnum.RIME_MITCHEL, MySoundCuesEnum.Dlg_RimeConvince_1070, MyDialoguesWrapperEnum.Dlg_Rime_0802, noise: 0.9f),\n                new MyDialogueSentence(MyActorEnum.RIME_BARKEEPER, MySoundCuesEnum.Dlg_RimeConvince_1071, MyDialoguesWrapperEnum.Dlg_Rime_0803, noise: 0.9f),\n                //new MyDialogueSentence(MyActorEnum.RIME_MITCHEL, MySoundCuesEnum.Dlg_RimeConvince_1072, MyDialoguesWrapperEnum.Dlg_Rime_0804, noise: 0.9f),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_RimeConvince_1073, MyDialoguesWrapperEnum.Dlg_Rime_0805),\n            }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.RIME_0900_FOLLOW_INSTRUCTION, new MyDialogue(\n            new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_RimeConvince_1074, MyDialoguesWrapperEnum.Dlg_Rime_0901),\n            }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.RIME_1000_FACTORY_FOUND, new MyDialogue(\n            new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.RIME_SMUGGLER, MySoundCuesEnum.Dlg_RimeConvince_1075, MyDialoguesWrapperEnum.Dlg_Rime_1001, noise: 0.9f),\n                new MyDialogueSentence(MyActorEnum.RIME_MITCHEL, MySoundCuesEnum.Dlg_RimeConvince_1076, MyDialoguesWrapperEnum.Dlg_Rime_1002, noise: 0.9f),\n                new MyDialogueSentence(MyActorEnum.RIME_SMUGGLER, MySoundCuesEnum.Dlg_RimeConvince_1077, MyDialoguesWrapperEnum.Dlg_Rime_1003, noise: 0.9f),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_RimeConvince_1078, MyDialoguesWrapperEnum.Dlg_Rime_1004, noise: 0.9f),\n                new MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_RimeConvince_1079, MyDialoguesWrapperEnum.Dlg_Rime_1005, noise: 0.9f),\n            }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.RIME_1100_GRAB_THE_ALCOHOL, new MyDialogue(\n            new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_RimeConvince_1080, MyDialoguesWrapperEnum.Dlg_Rime_1101),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_RimeConvince_1081, MyDialoguesWrapperEnum.Dlg_Rime_1101a),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_RimeConvince_1082, MyDialoguesWrapperEnum.Dlg_Rime_1102),\n            }\n            ));\n            m_dialogues.Add((int)MyDialogueEnum.RIME_1200_GET_TO_THE_VESSEL, new MyDialogue(\n           new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_RimeConvince_1083, MyDialoguesWrapperEnum.Dlg_Rime_1201),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_RimeConvince_1084, MyDialoguesWrapperEnum.Dlg_Rime_1202),\n            }\n           ));\n            m_dialogues.Add((int)MyDialogueEnum.RIME_1300_ON_THE_WAY_TO_VESSEL, new MyDialogue(\n           new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_RimeConvince_1085, MyDialoguesWrapperEnum.Dlg_Rime_1301),\n                new MyDialogueSentence(MyActorEnum.FRANCIS_REEF, MySoundCuesEnum.Dlg_RimeConvince_1086, MyDialoguesWrapperEnum.Dlg_Rime_1302),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_RimeConvince_1087, MyDialoguesWrapperEnum.Dlg_Rime_1303),\n            }\n           ));\n            m_dialogues.Add((int)MyDialogueEnum.RIME_1400_HANDLE, new MyDialogue(\n           new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_RimeConvince_1088, MyDialoguesWrapperEnum.Dlg_Rime_1401),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_RimeConvince_1089, MyDialoguesWrapperEnum.Dlg_Rime_1402),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_RimeConvince_1090, MyDialoguesWrapperEnum.Dlg_Rime_1403),\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_RimeConvince_1091, MyDialoguesWrapperEnum.Dlg_Rime_1404),\n            }\n           ));\n            m_dialogues.Add((int)MyDialogueEnum.RIME_1500_WAIT_FOR_THE_SIGNAL, new MyDialogue(\n           new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_RimeConvince_1092, MyDialoguesWrapperEnum.Dlg_Rime_1501),\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_RimeConvince_1093, MyDialoguesWrapperEnum.Dlg_Rime_1502),\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_RimeConvince_1094, MyDialoguesWrapperEnum.Dlg_Rime_1503),\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_RimeConvince_1095, MyDialoguesWrapperEnum.Dlg_Rime_1504),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_RimeConvince_1096, MyDialoguesWrapperEnum.Dlg_Rime_1505),\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_RimeConvince_1097, MyDialoguesWrapperEnum.Dlg_Rime_1506),\n            }\n           ));\n            m_dialogues.Add((int)MyDialogueEnum.RIME_1600_THIS_IS_OUR_CHANCE, new MyDialogue(\n           new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_RimeConvince_1098, MyDialoguesWrapperEnum.Dlg_Rime_1601),\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_RimeConvince_1099, MyDialoguesWrapperEnum.Dlg_Rime_1602),\n            }\n           ));\n            m_dialogues.Add((int)MyDialogueEnum.RIME_1650_PLACE, new MyDialogue(\n           new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_RimeConvince_1100, MyDialoguesWrapperEnum.Dlg_Rime_1603),\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_RimeConvince_1101, MyDialoguesWrapperEnum.Dlg_Rime_1604),\n            }\n           ));\n\n            m_dialogues.Add((int)MyDialogueEnum.RIME_1700_HURRY_UP, new MyDialogue(\n           new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_RimeConvince_1102, MyDialoguesWrapperEnum.Dlg_Rime_1701),\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_RimeConvince_1103, MyDialoguesWrapperEnum.Dlg_Rime_1702),\n            }\n           ));\n            m_dialogues.Add((int)MyDialogueEnum.RIME_1800_CARGO_PLANTED, new MyDialogue(\n           new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_RimeConvince_1104, MyDialoguesWrapperEnum.Dlg_Rime_1801),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_RimeConvince_1105, MyDialoguesWrapperEnum.Dlg_Rime_1802),\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_RimeConvince_1106, MyDialoguesWrapperEnum.Dlg_Rime_1803),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_RimeConvince_1107, MyDialoguesWrapperEnum.Dlg_Rime_1804),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_RimeConvince_1108, MyDialoguesWrapperEnum.Dlg_Rime_1805),\n                new MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_RimeConvince_1109, MyDialoguesWrapperEnum.Dlg_Rime_1806),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_RimeConvince_1110, MyDialoguesWrapperEnum.Dlg_Rime_1807),\n            }\n           ));\n            m_dialogues.Add((int)MyDialogueEnum.RIME_1900_BACK_TO_THE_REEF, new MyDialogue(\n           new MyDialogueSentence[] {\n              \n            }\n           ));\n            m_dialogues.Add((int)MyDialogueEnum.RIME_2000_REEF_TALK, new MyDialogue(\n           new MyDialogueSentence[] {\n                  new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_RimeConvince_1111, MyDialoguesWrapperEnum.Dlg_Rime_1901),\n                new MyDialogueSentence(MyActorEnum.FRANCIS_REEF, MySoundCuesEnum.Dlg_RimeConvince_1112, MyDialoguesWrapperEnum.Dlg_Rime_1902),\n                new MyDialogueSentence(MyActorEnum.FRANCIS_REEF, MySoundCuesEnum.Dlg_RimeConvince_1113, MyDialoguesWrapperEnum.Dlg_Rime_1902a),\n                new MyDialogueSentence(MyActorEnum.FRANCIS_REEF, MySoundCuesEnum.Dlg_RimeConvince_1114, MyDialoguesWrapperEnum.Dlg_Rime_1903),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_RimeConvince_1115, MyDialoguesWrapperEnum.Dlg_Rime_1904),\n                new MyDialogueSentence(MyActorEnum.FRANCIS_REEF, MySoundCuesEnum.Dlg_RimeConvince_1116, MyDialoguesWrapperEnum.Dlg_Rime_1905),\n                new MyDialogueSentence(MyActorEnum.FRANCIS_REEF, MySoundCuesEnum.Dlg_RimeConvince_1117, MyDialoguesWrapperEnum.Dlg_Rime_1906),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_RimeConvince_1118, MyDialoguesWrapperEnum.Dlg_Rime_1907),\n                new MyDialogueSentence(MyActorEnum.FRANCIS_REEF, MySoundCuesEnum.Dlg_RimeConvince_1119, MyDialoguesWrapperEnum.Dlg_Rime_1908),\n                new MyDialogueSentence(MyActorEnum.FRANCIS_REEF, MySoundCuesEnum.Dlg_RimeConvince_1120, MyDialoguesWrapperEnum.Dlg_Rime_1909),\n                //new MyDialogueSentence(MyActorEnum.FRANCIS_REEF, MySoundCuesEnum.Dlg_RimeConvince_1121, MyDialoguesWrapperEnum.Dlg_Rime_1910),\n                new MyDialogueSentence(MyActorEnum.FRANCIS_REEF, MySoundCuesEnum.Dlg_RimeConvince_1122, MyDialoguesWrapperEnum.Dlg_Rime_1911),\n                new MyDialogueSentence(MyActorEnum.FRANCIS_REEF, MySoundCuesEnum.Dlg_RimeConvince_1123, MyDialoguesWrapperEnum.Dlg_Rime_1912),\n                //new MyDialogueSentence(MyActorEnum.FRANCIS_REEF, MySoundCuesEnum.Dlg_RimeConvince_1124, MyDialoguesWrapperEnum.Dlg_Rime_1913),\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_RimeConvince_1125, MyDialoguesWrapperEnum.Dlg_Rime_1914),\n                new MyDialogueSentence(MyActorEnum.FRANCIS_REEF, MySoundCuesEnum.Dlg_RimeConvince_1126, MyDialoguesWrapperEnum.Dlg_Rime_1915),\n                new MyDialogueSentence(MyActorEnum.FRANCIS_REEF, MySoundCuesEnum.Dlg_RimeConvince_1127, MyDialoguesWrapperEnum.Dlg_Rime_1916),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_RimeConvince_1128, MyDialoguesWrapperEnum.Dlg_Rime_1917),\n                new MyDialogueSentence(MyActorEnum.FRANCIS_REEF, MySoundCuesEnum.Dlg_RimeConvince_1129, MyDialoguesWrapperEnum.Dlg_Rime_1918),\n                new MyDialogueSentence(MyActorEnum.FRANCIS_REEF, MySoundCuesEnum.Dlg_RimeConvince_1130, MyDialoguesWrapperEnum.Dlg_Rime_1919),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_RimeConvince_1131, MyDialoguesWrapperEnum.Dlg_Rime_1920),\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_RimeConvince_1132, MyDialoguesWrapperEnum.Dlg_Rime_1921),\n                new MyDialogueSentence(MyActorEnum.FRANCIS_REEF, MySoundCuesEnum.Dlg_RimeConvince_1133, MyDialoguesWrapperEnum.Dlg_Rime_1922),\n                new MyDialogueSentence(MyActorEnum.FRANCIS_REEF, MySoundCuesEnum.Dlg_RimeConvince_1134, MyDialoguesWrapperEnum.Dlg_Rime_1923),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_RimeConvince_1135, MyDialoguesWrapperEnum.Dlg_Rime_1924),\n                new MyDialogueSentence(MyActorEnum.FRANCIS_REEF, MySoundCuesEnum.Dlg_RimeConvince_1136, MyDialoguesWrapperEnum.Dlg_Rime_1925),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_RimeConvince_1137, MyDialoguesWrapperEnum.Dlg_Rime_1926),\n                new MyDialogueSentence(MyActorEnum.FRANCIS_REEF, MySoundCuesEnum.Dlg_RimeConvince_1138, MyDialoguesWrapperEnum.Dlg_Rime_1927),\n                new MyDialogueSentence(MyActorEnum.FRANCIS_REEF, MySoundCuesEnum.Dlg_RimeConvince_1139, MyDialoguesWrapperEnum.Dlg_Rime_1927a),\n                new MyDialogueSentence(MyActorEnum.FRANCIS_REEF, MySoundCuesEnum.Dlg_RimeConvince_1140, MyDialoguesWrapperEnum.Dlg_Rime_1929),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_RimeConvince_1141, MyDialoguesWrapperEnum.Dlg_Rime_1928),\n                new MyDialogueSentence(MyActorEnum.FRANCIS_REEF, MySoundCuesEnum.Dlg_RimeConvince_1142, MyDialoguesWrapperEnum.Dlg_Rime_1930),                \n                new MyDialogueSentence(MyActorEnum.FRANCIS_REEF, MySoundCuesEnum.Dlg_RimeConvince_1143, MyDialoguesWrapperEnum.Dlg_Rime_1932),\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_RimeConvince_1144, MyDialoguesWrapperEnum.Dlg_Rime_1933),\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_RimeConvince_1145, MyDialoguesWrapperEnum.Dlg_Rime_1934),\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_RimeConvince_1146, MyDialoguesWrapperEnum.Dlg_Rime_1935),\n            }\n           ));\n            m_dialogues.Add((int)MyDialogueEnum.RIME_2100_HE_IS_GONE, new MyDialogue(\n           new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_RimeConvince_1147, MyDialoguesWrapperEnum.Dlg_Rime_2101),\n            }\n           ));\n            m_dialogues.Add((int)MyDialogueEnum.RIME_2200_HE_SPOTTED_US, new MyDialogue(\n           new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_RimeConvince_1148, MyDialoguesWrapperEnum.Dlg_Rime_2201),\n            }\n           ));\n            #endregion\n\n            #region Rift\n\n            m_dialogues.Add((int)MyDialogueEnum.RIFT_0050_INTRO, new MyDialogue(\n           new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_Rift_1000, MyDialoguesWrapperEnum.Dlg_Rift_2000),\n                new MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_Rift_1001, MyDialoguesWrapperEnum.Dlg_Rift_2001),\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_Rift_1002, MyDialoguesWrapperEnum.Dlg_Rift_2002),\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_Rift_1003, MyDialoguesWrapperEnum.Dlg_Rift_2003),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_Rift_1004, MyDialoguesWrapperEnum.Dlg_Rift_2004),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_Rift_1005, MyDialoguesWrapperEnum.Dlg_Rift_2005),\n                //new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_Rift_1006, MyDialoguesWrapperEnum.Dlg_Rift_2006),\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_Rift_1007, MyDialoguesWrapperEnum.Dlg_Rift_2007),\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_Rift_1008, MyDialoguesWrapperEnum.Dlg_Rift_2008),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_Rift_1009, MyDialoguesWrapperEnum.Dlg_Rift_2009),\n            }\n           ));\n\n            m_dialogues.Add((int)MyDialogueEnum.RIFT_0100_INTRO2, new MyDialogue(\n            new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_Rift_1010, MyDialoguesWrapperEnum.Dlg_Rift_0102, pauseBefore_ms:1000),\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_Rift_1011, MyDialoguesWrapperEnum.Dlg_Rift_0103),\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_Rift_1012, MyDialoguesWrapperEnum.Dlg_Rift_0105),\n                new MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_Rift_1013, MyDialoguesWrapperEnum.Dlg_Rift_0106),\n                //new MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_Rift_1014, MyDialoguesWrapperEnum.Dlg_Rift_0107),\n            }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.RIFT_0200_STATION, new MyDialogue(\n            new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_Rift_1015, MyDialoguesWrapperEnum.Dlg_Rift_0201),\n                new MyDialogueSentence(MyActorEnum.RiftOperator, MySoundCuesEnum.Dlg_Rift_1016, MyDialoguesWrapperEnum.Dlg_Rift_0202, noise: 0.9f),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_Rift_1017, MyDialoguesWrapperEnum.Dlg_Rift_0203),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_Rift_1018, MyDialoguesWrapperEnum.Dlg_Rift_0204),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_Rift_1019, MyDialoguesWrapperEnum.Dlg_Rift_0205),\n                new MyDialogueSentence(MyActorEnum.RiftOperator, MySoundCuesEnum.Dlg_Rift_1020, MyDialoguesWrapperEnum.Dlg_Rift_0206, noise: 0.9f),\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_Rift_1021, MyDialoguesWrapperEnum.Dlg_Rift_0208),\n            }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.RIFT_0300_TOURISTS, new MyDialogue(\n            new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.RiftTourist, MySoundCuesEnum.Dlg_Rift_1022, MyDialoguesWrapperEnum.Dlg_Rift_0301, noise: 0.9f),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_Rift_1023, MyDialoguesWrapperEnum.Dlg_Rift_0302),\n                new MyDialogueSentence(MyActorEnum.RiftTourist, MySoundCuesEnum.Dlg_Rift_1024, MyDialoguesWrapperEnum.Dlg_Rift_0303, noise: 0.9f),\n                //new MyDialogueSentence(MyActorEnum.RiftTourist, MySoundCuesEnum.Dlg_Rift_1025, MyDialoguesWrapperEnum.Dlg_Rift_0304, noise: 0.9f),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_Rift_1026, MyDialoguesWrapperEnum.Dlg_Rift_0305),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_Rift_1027, MyDialoguesWrapperEnum.Dlg_Rift_0306),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_Rift_1028, MyDialoguesWrapperEnum.Dlg_Rift_0307),\n                new MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_Rift_1029, MyDialoguesWrapperEnum.Dlg_Rift_0308),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_Rift_1030, MyDialoguesWrapperEnum.Dlg_Rift_0309),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_Rift_1031, MyDialoguesWrapperEnum.Dlg_Rift_0310),\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_Rift_1032, MyDialoguesWrapperEnum.Dlg_Rift_0311),\n                new MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_Rift_1033, MyDialoguesWrapperEnum.Dlg_Rift_0312),\n                new MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_Rift_1034, MyDialoguesWrapperEnum.Dlg_Rift_0313),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_Rift_1035, MyDialoguesWrapperEnum.Dlg_Rift_0314),\n            }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.RIFT_0400_SHOPPINGDONE, new MyDialogue(\n            new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_Rift_1036, MyDialoguesWrapperEnum.Dlg_Rift_0401),\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_Rift_1037, MyDialoguesWrapperEnum.Dlg_Rift_0402),\n            }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.RIFT_0500_ENTERINGRIFT, new MyDialogue(\n            new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_Rift_1038, MyDialoguesWrapperEnum.Dlg_Rift_0501),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_Rift_1039, MyDialoguesWrapperEnum.Dlg_Rift_0502),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_Rift_1040, MyDialoguesWrapperEnum.Dlg_Rift_0503),\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_Rift_1041, MyDialoguesWrapperEnum.Dlg_Rift_0504),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_Rift_1042, MyDialoguesWrapperEnum.Dlg_Rift_0505),\n            }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.RIFT_0600_MINING, new MyDialogue(\n            new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_Rift_1043, MyDialoguesWrapperEnum.Dlg_Rift_0601),\n            }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.RIFT_0700_MINING_COLOR, new MyDialogue(\n            new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_Rift_1044, MyDialoguesWrapperEnum.Dlg_Rift_0701),\n            }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.RIFT_0800_MINING_TUNE, new MyDialogue(\n            new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_Rift_1045, MyDialoguesWrapperEnum.Dlg_Rift_0801),\n            }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.RIFT_0900_MINING_TUNE_2, new MyDialogue(\n            new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_Rift_1046, MyDialoguesWrapperEnum.Dlg_Rift_0901),\n            }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.RIFT_1000_MINING_DONE, new MyDialogue(\n            new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_Rift_1047, MyDialoguesWrapperEnum.Dlg_Rift_1001),\n                //new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_Rift_1048, MyDialoguesWrapperEnum.Dlg_Rift_1001a),\n            }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.RIFT_1100_LEAVING, new MyDialogue(\n            new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_Rift_1049, MyDialoguesWrapperEnum.Dlg_Rift_1101),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_Rift_1050, MyDialoguesWrapperEnum.Dlg_Rift_1102),\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_Rift_1051, MyDialoguesWrapperEnum.Dlg_Rift_1103),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_Rift_1052, MyDialoguesWrapperEnum.Dlg_Rift_1104),\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_Rift_1053, MyDialoguesWrapperEnum.Dlg_Rift_1106),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_Rift_1054, MyDialoguesWrapperEnum.Dlg_Rift_1107),\n                new MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_Rift_1055, MyDialoguesWrapperEnum.Dlg_Rift_1108),\n                //new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_Rift_1056, MyDialoguesWrapperEnum.Dlg_Rift_1109),\n                new MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_Rift_1057, MyDialoguesWrapperEnum.Dlg_Rift_1110),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_Rift_1058, MyDialoguesWrapperEnum.Dlg_Rift_1111),\n                new MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_Rift_1059, MyDialoguesWrapperEnum.Dlg_Rift_1112),\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_Rift_1060, MyDialoguesWrapperEnum.Dlg_Rift_1113),\n            }\n            ));\n\n\n            #endregion\n\n            #region Russian Transmitter\n            m_dialogues.Add((int)MyDialogueEnum.RUSSIAN_TRANSMITTER_0100_INTRO, new MyDialogue(\n                new MyDialogueSentence[] {\n                        new MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_RussianTransmitter_1000, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1000),\n                        new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_RussianTransmitter_1001, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1001),\n                        new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_RussianTransmitter_1002, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1002),\n                        new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_RussianTransmitter_1003, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1003),\n                        new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_RussianTransmitter_1004, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1004),\n                        new MyDialogueSentence(MyActorEnum.MADELYN , MySoundCuesEnum.Dlg_RussianTransmitter_1005, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1005),\n                        new MyDialogueSentence(MyActorEnum.MADELYN , MySoundCuesEnum.Dlg_RussianTransmitter_1006, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1006),\n                        new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_RussianTransmitter_1007, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1007),\n                        new MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_RussianTransmitter_1008, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1008),\n                    }\n           ));\n\n\n            m_dialogues.Add((int)MyDialogueEnum.RUSSIAN_TRANSMITTER_0200_BACKDOOR, new MyDialogue(\n                  new MyDialogueSentence[] {\n                        new MyDialogueSentence(MyActorEnum.APOLLO , MySoundCuesEnum.Dlg_RussianTransmitter_1009, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1009),\n                        new MyDialogueSentence(MyActorEnum.APOLLO , MySoundCuesEnum.Dlg_RussianTransmitter_1010, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1010),\n                        new MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_RussianTransmitter_1011, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1011),\n                        new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_RussianTransmitter_1012, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1012),\n                    }\n             ));\n\n\n            m_dialogues.Add((int)MyDialogueEnum.RUSSIAN_TRANSMITTER_0300_FINDHUB, new MyDialogue(\n                  new MyDialogueSentence[] {\n                      new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_RussianTransmitter_1013, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1013),\n                      new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_RussianTransmitter_1014, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1014),\n                      new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_RussianTransmitter_1015, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1015),\n                      new MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_RussianTransmitter_1016, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1016),\n                    }\n             ));\n\n            m_dialogues.Add((int)MyDialogueEnum.RUSSIAN_TRANSMITTER_0400_HUBFOUND, new MyDialogue(\n                new MyDialogueSentence[] {\n                        new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_RussianTransmitter_1017, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1017),\n                        new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_RussianTransmitter_1018, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1018),\n                    }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.RUSSIAN_TRANSMITTER_0500_0600_HACKPROBLEM_STRANGERCALLS, new MyDialogue(\n                  new MyDialogueSentence[] {\n                        //new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_RussianTransmitter_1019, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1019),\n                        //new MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_RussianTransmitter_1020, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1020),\n                        //new MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_RussianTransmitter_1021, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1021),\n                        new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_RussianTransmitter_1022, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1022),\n                        new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_RussianTransmitter_1023, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1023),\n                        new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_RussianTransmitter_1024, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1024),\n                        new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_RussianTransmitter_1025, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1025),\n\n                        new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_RussianTransmitter_1026, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1026, pauseBefore_ms:2500f),\n                        new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_RussianTransmitter_1027, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1027),\n                        new MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_RussianTransmitter_1028, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1028),\n                        new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_RussianTransmitter_1029, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1029),\n                        new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_RussianTransmitter_1030, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1030),\n                    }\n             ));\n\n            m_dialogues.Add((int)MyDialogueEnum.RUSSIAN_TRANSMITTER_0700_STRANGERPROPOSAL, new MyDialogue(\n                  new MyDialogueSentence[] {\n                        new MyDialogueSentence(MyActorEnum.VOLODIA_STRANGER , MySoundCuesEnum.Dlg_RussianTransmitter_1031, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1031),\n                        new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_RussianTransmitter_1032, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1032),\n                        new MyDialogueSentence(MyActorEnum.VOLODIA_STRANGER, MySoundCuesEnum.Dlg_RussianTransmitter_1033, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1033),\n                        new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_RussianTransmitter_1034, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1034),\n                        new MyDialogueSentence(MyActorEnum.VOLODIA_STRANGER, MySoundCuesEnum.Dlg_RussianTransmitter_1035, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1035),\n                    }\n             ));\n\n            m_dialogues.Add((int)MyDialogueEnum.RUSSIAN_TRANSMITTER_0700_VOLODIAINTRO, new MyDialogue(\n                  new MyDialogueSentence[] {\n                        new MyDialogueSentence(MyActorEnum.VOLODIA_STRANGER, MySoundCuesEnum.Dlg_RussianTransmitter_1036, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1036),\n                        new MyDialogueSentence(MyActorEnum.VOLODIA , MySoundCuesEnum.Dlg_RussianTransmitter_1037, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1037),\n                        new MyDialogueSentence(MyActorEnum.VOLODIA , MySoundCuesEnum.Dlg_RussianTransmitter_1038, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1038),\n                        new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_RussianTransmitter_1039, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1039),\n                        new MyDialogueSentence(MyActorEnum.VOLODIA, MySoundCuesEnum.Dlg_RussianTransmitter_1040, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1040),\n                        new MyDialogueSentence(MyActorEnum.VOLODIA, MySoundCuesEnum.Dlg_RussianTransmitter_1041, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1041),\n                        new MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_RussianTransmitter_1042, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1042),\n                        new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_RussianTransmitter_1043, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1043),\n                        new MyDialogueSentence(MyActorEnum.VOLODIA, MySoundCuesEnum.Dlg_RussianTransmitter_1044, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1044),\n                        new MyDialogueSentence(MyActorEnum.VOLODIA, MySoundCuesEnum.Dlg_RussianTransmitter_1045, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1045),\n                    }\n             ));\n\n            m_dialogues.Add((int)MyDialogueEnum.RUSSIAN_TRANSMITTER_0800_NEARCARGO, new MyDialogue(\n                  new MyDialogueSentence[] {\n                        new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_RussianTransmitter_1046, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1046),\n                        new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_RussianTransmitter_1047, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1047),\n                    }\n             ));\n\n            m_dialogues.Add((int)MyDialogueEnum.RUSSIAN_TRANSMITTER_0900_VOLODIA_RANT, new MyDialogue(\n                  new MyDialogueSentence[] {\n                        new MyDialogueSentence(MyActorEnum.VOLODIA, MySoundCuesEnum.Dlg_RussianTransmitter_1048, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1048),\n                        new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_RussianTransmitter_1049, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1049),\n                        new MyDialogueSentence(MyActorEnum.VOLODIA, MySoundCuesEnum.Dlg_RussianTransmitter_1050, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1050),\n                        new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_RussianTransmitter_1051, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1051),\n                        new MyDialogueSentence(MyActorEnum.VOLODIA, MySoundCuesEnum.Dlg_RussianTransmitter_1052, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1052),\n                        new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_RussianTransmitter_1053, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1053),\n                        new MyDialogueSentence(MyActorEnum.VOLODIA, MySoundCuesEnum.Dlg_RussianTransmitter_1054, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1054),\n                        new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_RussianTransmitter_1055, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1055),\n                        new MyDialogueSentence(MyActorEnum.VOLODIA, MySoundCuesEnum.Dlg_RussianTransmitter_1056, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1056),\n                        new MyDialogueSentence(MyActorEnum.VOLODIA, MySoundCuesEnum.Dlg_RussianTransmitter_1057, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1057),\n                        new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_RussianTransmitter_1058, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1058),\n                        new MyDialogueSentence(MyActorEnum.VOLODIA, MySoundCuesEnum.Dlg_RussianTransmitter_1059, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1059),\n                        new MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_RussianTransmitter_1060, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1060),\n                        new MyDialogueSentence(MyActorEnum.VOLODIA, MySoundCuesEnum.Dlg_RussianTransmitter_1061, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1061),\n                    }\n             ));\n\n            m_dialogues.Add((int)MyDialogueEnum.RUSSIAN_TRANSMITTER_1000_VOLODIA_FOUND, new MyDialogue(\n                  new MyDialogueSentence[] {\n                        new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_RussianTransmitter_1062, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1062),\n                        new MyDialogueSentence(MyActorEnum.VOLODIA, MySoundCuesEnum.Dlg_RussianTransmitter_1063, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1063),\n                        new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_RussianTransmitter_1064, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1064),\n                        new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_RussianTransmitter_1065, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1065),\n                        new MyDialogueSentence(MyActorEnum.VOLODIA, MySoundCuesEnum.Dlg_RussianTransmitter_1066, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1066),\n                        new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_RussianTransmitter_1067, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1067),\n                        new MyDialogueSentence(MyActorEnum.RussianCaptain, MySoundCuesEnum.Dlg_RussianTransmitter_1068, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1068),\n                        new MyDialogueSentence(MyActorEnum.VOLODIA, MySoundCuesEnum.Dlg_RussianTransmitter_1069, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1069),\n                        new MyDialogueSentence(MyActorEnum.RussianCaptain, MySoundCuesEnum.Dlg_RussianTransmitter_1070, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1070),\n                    }\n             ));\n\n            m_dialogues.Add((int)MyDialogueEnum.RUSSIAN_TRANSMITTER_1100_MADELYNSCARED, new MyDialogue(\n                  new MyDialogueSentence[] {\n                        new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_RussianTransmitter_1071, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1071),\n                    }\n             ));\n\n            m_dialogues.Add((int)MyDialogueEnum.RUSSIAN_TRANSMITTER_1300_APOLLOSCARED, new MyDialogue(\n                  new MyDialogueSentence[] {\n                        new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_RussianTransmitter_1072, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1072),\n                        new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_RussianTransmitter_1073, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1073),\n                        new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_RussianTransmitter_1074, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1074),\n                    }\n             ));\n\n            m_dialogues.Add((int)MyDialogueEnum.RUSSIAN_TRANSMITTER_1400_RETREAT, new MyDialogue(\n                 new MyDialogueSentence[] {\n                        new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_RussianTransmitter_1075, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1075),\n                        new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_RussianTransmitter_1076, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1076),\n                    }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.RUSSIAN_TRANSMITTER_1500_IFITDOESNOTWORK, new MyDialogue(\n                 new MyDialogueSentence[] {\n                        new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_RussianTransmitter_1077, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1077),\n                    }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.RUSSIAN_TRANSMITTER_1600_ITSWORKING, new MyDialogue(\n                 new MyDialogueSentence[] {\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_RussianTransmitter_1078, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1078),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_RussianTransmitter_1079, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1079),\n                    }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.RUSSIAN_TRANSMITTER_1700_UPLOADINGSIGNAL, new MyDialogue(\n                     new MyDialogueSentence[] {\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_RussianTransmitter_1080, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1080),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_RussianTransmitter_1081, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1081),\n\n                    }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.RUSSIAN_TRANSMITTER_1800_BADROUTE, new MyDialogue(\n                     new MyDialogueSentence[] {\nnew MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_RussianTransmitter_1082, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1082),\nnew MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_RussianTransmitter_1083, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1083),\n                    }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.RUSSIAN_TRANSMITTER_1900_PLACEDEVICE, new MyDialogue(\n                     new MyDialogueSentence[] {\n                        new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_RussianTransmitter_1084, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1084),\n                        new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_RussianTransmitter_1085, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1085),\n                    }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.RUSSIAN_TRANSMITTER_2000_DEVICEWORKING, new MyDialogue(\n                                 new MyDialogueSentence[] {\n                        new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_RussianTransmitter_1086, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1086),\n                        new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_RussianTransmitter_1087, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1087),\n                        new MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_RussianTransmitter_1088, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1088),\n                    }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.RUSSIAN_TRANSMITTER_2100_WEMADEIT, new MyDialogue(\n                     new MyDialogueSentence[] {\n                             new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_RussianTransmitter_1089, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1089),\n\n                    }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.RUSSIAN_TRANSMITTER_2200_THOMASCHAT, new MyDialogue(\n                     new MyDialogueSentence[] {\n                            //new MyDialogueSentence(MyActorEnum.THOMAS , MySoundCuesEnum.Dlg_RussianTransmitter_1090, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1090),\n                            //new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_RussianTransmitter_1091, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1091),\n                            new MyDialogueSentence(MyActorEnum.THOMAS , MySoundCuesEnum.Dlg_RussianTransmitter_1092, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1092),\n                            new MyDialogueSentence(MyActorEnum.THOMAS , MySoundCuesEnum.Dlg_RussianTransmitter_1093, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1093),\n                            new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_RussianTransmitter_1094, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1094),\n                            new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_RussianTransmitter_1095, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1095),\n                            new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_RussianTransmitter_1096, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1096),\n                            new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_RussianTransmitter_1097, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1097),\n                            new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_RussianTransmitter_1098, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1098),\n                            new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_RussianTransmitter_1099, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1099),\n                            new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_RussianTransmitter_1100, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1100),\n                            new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_RussianTransmitter_1101, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1101),\n                            new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_RussianTransmitter_1102, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1102),\n                            new MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_RussianTransmitter_1103, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1103),\n                            new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_RussianTransmitter_1104, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1104),\n                            new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_RussianTransmitter_1105, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1105),\n                            new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_RussianTransmitter_1106, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1106),\n                            new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_RussianTransmitter_1107, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1107),\n                            new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_RussianTransmitter_1108, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1108),\n                            new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_RussianTransmitter_1109, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1109),\n                            new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_RussianTransmitter_1110, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1110),\n                            new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_RussianTransmitter_1111, MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1111),\n\n                    }\n            ));\n            //m_dialogues.Add((int)MyDialogueEnum., new MyDialogue(\n            //      new MyDialogueSentence[] {\n\n            //    }\n            // ));\n\n            #endregion\n\n            #region White Volves Research\n\n            m_dialogues.Add((int)MyDialogueEnum.WHITEWOLVES_RESEARCH_0100_COLLECT, new MyDialogue(\n                new MyDialogueSentence[] { \n                        new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1000, MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1000),\n                        new MyDialogueSentence(MyActorEnum.APOLLO,  MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1001, MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1001),\n                        new MyDialogueSentence(MyActorEnum.APOLLO,  MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1002, MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1002),\n                        new MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1003, MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1003),\n                        new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1004, MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1004),\n                        new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1005, MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1005),\n                    }\n                ));\n\n            m_dialogues.Add((int)MyDialogueEnum.WHITEWOLVES_RESEARCH_0200_ENTER, new MyDialogue(\n                new MyDialogueSentence[] {    \n                        new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1006, MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1006),\n                        new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1007, MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1007),\n                        new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1008, MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1008),\n                        new MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1009, MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1009),\n                    }\n                ));\n\n            m_dialogues.Add((int)MyDialogueEnum.WHITEWOLVES_RESEARCH_0300_COLLECT2, new MyDialogue(\n                    new MyDialogueSentence[] {  \n                        new MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1010, MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1010),\n                        new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1011, MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1011),\n                    }\n                    ));\n\n\n            m_dialogues.Add((int)MyDialogueEnum.WHITEWOLVES_RESEARCH_0350_SICKEN, new MyDialogue(\n                    new MyDialogueSentence[] {   \n                       new MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1012, MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1012),\n                        new MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1013, MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1013),\n                        new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1014, MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1014),\n                        new MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1015, MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1015),\n                        new MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1016, MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1016),\n                        new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1017, MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1017),\n                        new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1018, MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1018),\n                        new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1019, MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1019),\n                    }\n                    ));\n\n            m_dialogues.Add((int)MyDialogueEnum.WHITEWOLVES_RESEARCH_0400_FIND, new MyDialogue(\n                        new MyDialogueSentence[] {\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1020, MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1020),\n                    new MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1021, MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1021),\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1022, MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1022),\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1023, MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1023),\n                 }\n                        ));\n\n            m_dialogues.Add((int)MyDialogueEnum.WHITEWOLVES_RESEARCH_0500_GET_OUT, new MyDialogue(\n                       new MyDialogueSentence[] {\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1024, MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1024),\n                    new MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1025, MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1025),\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1026, MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1026),\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1027, MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1027),\n                    new MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1028, MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1028),\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1029, MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1029),\n                 }\n                       ));\n\n            m_dialogues.Add((int)MyDialogueEnum.WHITEWOLVES_RESEARCH_0550_GET_OUT_SUCCESS, new MyDialogue(\n                       new MyDialogueSentence[] {\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1030, MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1030),\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1031, MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1031),\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1032, MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1032),\n                    new MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1033, MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1033),\n                    new MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1034, MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1034),\n                    new MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1035, MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1035),\n                 }\n                       ));\n\n            m_dialogues.Add((int)MyDialogueEnum.WHITEWOLVES_RESEARCH_0600_DESTROY, new MyDialogue(\n                       new MyDialogueSentence[] {\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1036, MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1036),\n                    new MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1037, MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1037),\n                    new MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1038, MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1038),\n                    new MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1039, MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1039),\n                    //new MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1040, MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1040),\n                 }\n                       ));\n\n            m_dialogues.Add((int)MyDialogueEnum.WHITEWOLVES_RESEARCH_0700_RETURN, new MyDialogue(\n                       new MyDialogueSentence[] {\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1041, MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1041),\n                    new MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1042, MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1042),\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1043, MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1043),\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1044, MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1044),\n                 }\n                       ));\n\n            /*\n       m_dialogues.Add((int)MyDialogueEnum.WHITEVOLVES_RESEARCH_0400_FIND, new MyDialogue(\n               new MyDialogueSentence[] {\n            new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1020, MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1020),\n           new MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1021, MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1021),\n           new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1022, MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1022),\n           new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1023, MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1023),\n        }\n               ));\n\n       m_dialogues.Add((int)MyDialogueEnum.WHITEVOLVES_RESEARCH_0500_GET_OUT, new MyDialogue(\n                  new MyDialogueSentence[] {\n            new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1024, MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1024),\n           new MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1025, MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1025),\n           new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1026, MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1026),\n           new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1027, MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1027),\n           new MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1028, MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1028),\n           new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1029, MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1029),\n        }\n                  ));\n\n       m_dialogues.Add((int)MyDialogueEnum.WHITEVOLVES_RESEARCH_0550_GET_OUT_SUCCESS, new MyDialogue(\n                  new MyDialogueSentence[] {\n            new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1030, MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1030),\n           new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1031, MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1031),\n           new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1032, MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1032),\n           new MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1033, MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1033),\n           new MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1034, MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1034),\n           new MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1035, MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1035),\n        }\n                  ));\n\n       m_dialogues.Add((int)MyDialogueEnum.WHITEVOLVES_RESEARCH_0600_DESTROY, new MyDialogue(\n                  new MyDialogueSentence[] {\n           new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1036, MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1036),\n           new MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1037, MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1037),\n           new MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1038, MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1038),\n           new MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1039, MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1039),\n           new MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1040, MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1040),\n        }\n                  ));\n\n       m_dialogues.Add((int)MyDialogueEnum.WHITEVOLVES_RESEARCH_0700_RETURN, new MyDialogue(\n                  new MyDialogueSentence[] {\n           new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1041, MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1041),\n           new MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1042, MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1042),\n           new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1043, MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1043),\n           new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1044, MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1044),\n        }\n                  ));  */\n\n            #endregion\n\n            #region BarthsMoon2\n\n            m_dialogues.Add((int)MyDialogueEnum.BARTHS_MOON_TRANSMITTER_0100_INTRO, new MyDialogue(\n                new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1001, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0101),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1002, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0102),\n                //new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1003, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0103),\n                //new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1004, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0104),\n                //new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1005, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0105),\n                //new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1006, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0106),\n                //new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1007, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0107),\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1008, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0108),\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1009, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0109),\n                new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1010, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0110),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1011, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0111),\n                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1012, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0112),\n                //new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1013, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0113),\n                new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1014, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0114),\n                //new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1015, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0115),\n                new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1016, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0116),\n\n            }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.BARTHS_MOON_TRANSMITTER_0200, new MyDialogue(\n                                                                                         new MyDialogueSentence[]\n                                                                                             {\n                                                                                                 new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1018, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0201),\n                                                                                                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1019, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0202),\n                                                                                                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1020, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0203),\n                                                                                                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1021, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0204),\n                                                                                                //new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1022, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0205),\n                                                                                                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1023, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0206),\n\n                                                                                             }\n                                                                                         ));\n\n            m_dialogues.Add((int)MyDialogueEnum.BARTHS_MOON_TRANSMITTER_0300, new MyDialogue(\n                                                                             new MyDialogueSentence[]\n                                                                                             {\n                                                                                                 new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1024, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0301),\n                                                                                                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1025, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0302),\n                                                                                                //new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1026, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0303),\n                                                                                                new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1027, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0304),\n                                                                                                new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1028, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0305),\n                                                                                                new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1029, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0306),\n                                                                                                new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1030, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0307),\n                                                                                                new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1031, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0308),\n                                                                                                new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1032, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0309),\n                                                                                                new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1033, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0310),\n                                                                                                new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1034, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0311),\n                                                                                                new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1035, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0312),\n                                                                                                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1036, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0313),\n                                                                                                new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1037, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0314),\n                                                                                                new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1038, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0315),\n                                                                                                new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1039, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0316),\n                                                                                                new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1040, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0317),\n                                                                                                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1041, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0318),\n                                                                                                new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1042, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0319),\n                                                                                                new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1043, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0320),\n                                                                                                new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1044, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0321/*, pauseBefore_ms: 300*/),\n                                                                                                //new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1045, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0322),\n                                                                                                //new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1046, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0323),\n                                                                                                new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1047, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0324),\n\n                                                                                             }\n                                                                             ));\n            m_dialogues.Add((int)MyDialogueEnum.BARTHS_MOON_TRANSMITTER_0400, new MyDialogue(\n                                                                             new MyDialogueSentence[]\n                                                                                             {\n                                                                                                 new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1048, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0401),\n                                                                                                    new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1049, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0402),\n                                                                                                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1050, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0403),\n                                                                                                    new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1051, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0404),\n                                                                                                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1052, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0405),\n                                                                                                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1053, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0406/*, pauseBefore_ms: 300*/),\n                                                                                                    new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1054, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0407),\n                                                                                                    new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1055, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0408),\n                                                                                                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1056, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0409),\n                                                                                                    new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1057, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0410),\n                                                                                                    new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1058, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0411),\n                                                                                                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1059, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0412),\n                                                                                                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1060, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0413),\n                                                                                                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1061, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0414),\n                                                                                                    new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1062, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0415),\n                                                                                                    new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1063, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0416),\n                                                                                                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1064, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0417),\n                                                                                                    new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1065, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0418),\n                                                                                                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1066, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0419),\n                                                                                                    new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1067, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0420),\n                                                                                                    new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1068, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0421),\n                                                                                                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1069, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0422),\n\n                                                                                             }\n                                                                             ));\n            m_dialogues.Add((int)MyDialogueEnum.BARTHS_MOON_TRANSMITTER_0500, new MyDialogue(\n                                                                             new MyDialogueSentence[]\n                                                                                             {\n                                                                                                 new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1070, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0501),\n\n                                                                                             }\n                                                                             ));\n            m_dialogues.Add((int)MyDialogueEnum.BARTHS_MOON_TRANSMITTER_0600, new MyDialogue(\n                                                                             new MyDialogueSentence[]\n                                                                                             {\n                                                                                                 new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1071, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0601),\n                                                                                                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1072, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0602),\n                                                                                                new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1073, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0603),\n                                                                                                new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1074, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0604),\n\n                                                                                             }\n                                                                             ));\n            m_dialogues.Add((int)MyDialogueEnum.BARTHS_MOON_TRANSMITTER_0700, new MyDialogue(\n                                                                             new MyDialogueSentence[]\n                                                                                             {\n                                                                                                 new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1075, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0701),\n                                                                                                //new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1076, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0702),\n                                                                                                new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1077, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0703),\n                                                                                                new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1078, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0704),\n                                                                                                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1079, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0705),\n\n                                                                                             }\n                                                                             ));\n            m_dialogues.Add((int)MyDialogueEnum.BARTHS_MOON_TRANSMITTER_0800, new MyDialogue(\n                                                                             new MyDialogueSentence[]\n                                                                                             {\n                                                                                                 new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1079b, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0801),\n                                                                                                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1080, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0802),\n                                                                                                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1081, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0803),\n                                                                                                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1082, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0804),\n\n                                                                                             }\n                                                                             ));\n            m_dialogues.Add((int)MyDialogueEnum.BARTHS_MOON_TRANSMITTER_0900, new MyDialogue(\n                                                                             new MyDialogueSentence[]\n                                                                                             {\n                                                                                                 new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1083, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0901),\n\n                                                                                             }\n                                                                             ));\n            m_dialogues.Add((int)MyDialogueEnum.BARTHS_MOON_TRANSMITTER_1000, new MyDialogue(\n                                                                             new MyDialogueSentence[]\n                                                                                             {\n                                                                                                 new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1084, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_1001),\n\n                                                                                             }\n                                                                             ));\n            m_dialogues.Add((int)MyDialogueEnum.BARTHS_MOON_TRANSMITTER_1100, new MyDialogue(\n                                                                             new MyDialogueSentence[]\n                                                                                             {\n                                                                                                 new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1085, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_1101),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1086, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_1102),\n\n                                                                                             }\n                                                                             ));\n            m_dialogues.Add((int)MyDialogueEnum.BARTHS_MOON_TRANSMITTER_1200, new MyDialogue(\n                                                                             new MyDialogueSentence[]\n                                                                                             {\n                                                                                                 new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1087, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_1201),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1088, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_1202),\n\n                                                                                             }\n                                                                             ));\n            m_dialogues.Add((int)MyDialogueEnum.BARTHS_MOON_TRANSMITTER_1300, new MyDialogue(\n                                                                             new MyDialogueSentence[]\n                                                                                             {\n                                                                                                 new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1089, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_1301),\n\n                                                                                             }\n                                                                             ));\n            m_dialogues.Add((int)MyDialogueEnum.BARTHS_MOON_TRANSMITTER_1400, new MyDialogue(\n                                                                             new MyDialogueSentence[]\n                                                                                             {\n                                                                                                 new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1090, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_1401),\n                                                                                                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1091, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_1402),\n                                                                                                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1092, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_1403),\n                                                                                                new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1093, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_1404),\n\n                                                                                             }\n                                                                             ));\n            m_dialogues.Add((int)MyDialogueEnum.BARTHS_MOON_TRANSMITTER_1500, new MyDialogue(\n                                                                             new MyDialogueSentence[]\n                                                                                             {\n                                                                                                 new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1094, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_1501),\n                                                                                                new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1095, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_1502),\n                                                                                                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1096, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_1503),\n                                                                                                new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1097, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_1504),\n                                                                                                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1098, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_1505),\n                                                                                                new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1099, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_1506),\n                                                                                                new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1100, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_1507),\n                                                                                                new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1101, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_1508),\n                                                                                                new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1102, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_1509),\n\n                                                                                             }\n                                                                             ));\n            m_dialogues.Add((int)MyDialogueEnum.BARTHS_MOON_TRANSMITTER_1600, new MyDialogue(\n                                                                             new MyDialogueSentence[]\n                                                                                             {\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1103, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_1601),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1104, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_1602),\n\n                                                                                             }\n                                                                             ));\n            m_dialogues.Add((int)MyDialogueEnum.BARTHS_MOON_TRANSMITTER_1700, new MyDialogue(\n                                                                             new MyDialogueSentence[]\n                                                                                             {\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1105, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_1701),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1106, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_1702),\n\n                                                                                             }\n                                                                             ));\n            m_dialogues.Add((int)MyDialogueEnum.BARTHS_MOON_TRANSMITTER_1800, new MyDialogue(\n                                                                             new MyDialogueSentence[]\n                                                                                             {\n                                                                                                 new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1107, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_1801),\n\n                                                                                             }\n                                                                             ));\n\n            m_dialogues.Add((int)MyDialogueEnum.BARTHS_MOON_TRANSMITTER_1900, new MyDialogue(\n                                                                 new MyDialogueSentence[]\n                                                                                             {\n                                                                                                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1108, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_1901),\n                                                                                                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1109, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_1902),\n                                                                                                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1110, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_1903),\n                                                                                                //new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1111, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_1904),\n                                                                                                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1112, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_1905),\n\n                                                                                             }\n                                                                 ));\n            m_dialogues.Add((int)MyDialogueEnum.BARTHS_MOON_TRANSMITTER_2000, new MyDialogue(\n                                                                 new MyDialogueSentence[]\n                                                                                             {\n                                                                                                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1113, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2001),\n                                                                                                new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1114, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2002),\n\n                                                                                             }\n                                                                 ));\n            m_dialogues.Add((int)MyDialogueEnum.BARTHS_MOON_TRANSMITTER_2100, new MyDialogue(\n                                                                 new MyDialogueSentence[]\n                                                                                             {\n                                                                                                 new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1115, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2101),\n                                                                                                    new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1116, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2102),\n                                                                                                    new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1117, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2103),\n                                                                                                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1118, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2104),\n                                                                                                    new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1119, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2105),\n                                                                                                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1120, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2106),\n                                                                                                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1121, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2107),\n\n                                                                                             }\n                                                                 ));\n            m_dialogues.Add((int)MyDialogueEnum.BARTHS_MOON_TRANSMITTER_2200, new MyDialogue(\n                                                                 new MyDialogueSentence[]\n                                                                                             {\n                                                                                                 new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1122, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2201),\n                                                                                                new MyDialogueSentence(MyActorEnum.BLONDI, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1123, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2202),\n                                                                                                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1124, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2203),\n                                                                                                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1125, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2204),\n                                                                                                new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1126, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2205),\n                                                                                                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1127, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2206),\n                                                                                                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1128, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2207),\n                                                                                                new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1129, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2208),\n                                                                                                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1130, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2209),\n                                                                                                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1131, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2210),\n                                                                                                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1132, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2211),\n                                                                                                new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1133, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2212),\n                                                                                                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1134, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2213),\n                                                                                                new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1135, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2214),\n                                                                                                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1136, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2215),\n                                                                                                new MyDialogueSentence(MyActorEnum.BLONDI, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1137, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2216),\n                                                                                                new MyDialogueSentence(MyActorEnum.BLONDI, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1138, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2217),\n                                                                                                new MyDialogueSentence(MyActorEnum.BLONDI, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1139, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2218),\n                                                                                                new MyDialogueSentence(MyActorEnum.BLONDI, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1140, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2219),\n                                                                                                new MyDialogueSentence(MyActorEnum.BLONDI, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1141, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2220),\n                                                                                                new MyDialogueSentence(MyActorEnum.BLONDI, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1142, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2221),\n                                                                                                new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1143, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2222),\n                                                                                                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1144, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2223),\n                                                                                                new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1145, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2224),\n                                                                                                new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1146, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2225),\n                                                                                                new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1147, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2226),\n                                                                                                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1148, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2227),\n                                                                                                new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1149, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2228),\n                                                                                                new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1150, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2229),\n                                                                                                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1151, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2230),\n\n                                                                                             }\n                                                                 ));\n            m_dialogues.Add((int)MyDialogueEnum.BARTHS_MOON_TRANSMITTER_2300, new MyDialogue(\n                                                                 new MyDialogueSentence[]\n                                                                                             {\n                                                                                                 new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1152, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2301),\n                                                                                                new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1153, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2302),\n\n                                                                                             }\n                                                                 ));\n            m_dialogues.Add((int)MyDialogueEnum.BARTHS_MOON_TRANSMITTER_2400, new MyDialogue(\n                                                                 new MyDialogueSentence[]\n                                                                                             {\n                                                                                                 new MyDialogueSentence(MyActorEnum.BLONDI, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1154, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2401),\n\n                                                                                             }\n                                                                 ));\n            m_dialogues.Add((int)MyDialogueEnum.BARTHS_MOON_TRANSMITTER_2500, new MyDialogue(\n                                                                 new MyDialogueSentence[]\n                                                                                             {\n                                                                                                 new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1155, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2501),\n                                                                                                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1156, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2502),\n                                                                                                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1157, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2503),\n                                                                                                new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1158, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2504),\n                                                                                                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1159, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2505),\n                                                                                                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1160, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2506),\n                                                                                                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1161, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2507),\n                                                                                                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1162, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2508),\n                                                                                                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1163, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2509),\n                                                                                                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1164, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2510),\n                                                                                                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1165, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2511),\n                                                                                                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1166, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2512),\n                                                                                                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1167, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2513),\n                                                                                                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1168, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2514),\n\n                                                                                             }\n                                                                 ));\n            m_dialogues.Add((int)MyDialogueEnum.BARTHS_MOON_TRANSMITTER_2600, new MyDialogue(\n                                                                 new MyDialogueSentence[]\n                                                                                             {\n                                                                                                 new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1169, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2601),\n                                                                                                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1170, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2602),\n\n                                                                                             }\n                                                                 ));\n\n            m_dialogues.Add((int)MyDialogueEnum.BARTHS_MOON_TRANSMITTER_2700, new MyDialogue(\n                                                     new MyDialogueSentence[]\n                                                                                             {\n                                                                                                 new MyDialogueSentence(MyActorEnum.RAIDER, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1171, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2701),\n                                                                                                    new MyDialogueSentence(MyActorEnum.RAIDER, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1172, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2702),\n                                                                                                new MyDialogueSentence(MyActorEnum.RAIDER, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1173, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2703),\n                                                                                                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1174, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2704),\n\n                                                                                             }\n                                                     ));\n            m_dialogues.Add((int)MyDialogueEnum.BARTHS_MOON_TRANSMITTER_2800, new MyDialogue(\n                                                     new MyDialogueSentence[]\n                                                                                             {\n                                                                                                 new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1175, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2801),\n                                                                                                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1176, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2802),\n\n                                                                                             }\n                                                     ));\n            m_dialogues.Add((int)MyDialogueEnum.BARTHS_MOON_TRANSMITTER_2900, new MyDialogue(\n                                                     new MyDialogueSentence[]\n                                                                                             {\n                                                                                                 new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1177, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2901),\n                                                                                                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1178, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2902),\n                                                                                                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1179, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2903),\n                                                                                                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1180, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2904),\n                                                                                                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1181, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2905),\n                                                                                                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1182, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2906),\n                                                                                                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1183, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2907),\n\n                                                                                             }\n                                                     ));\n            m_dialogues.Add((int)MyDialogueEnum.BARTHS_MOON_TRANSMITTER_3000, new MyDialogue(\n                                                     new MyDialogueSentence[]\n                                                                                             {\n                                                                                                 new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1184, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_3001),\n                                                                                                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1185, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_3002),\n\n                                                                                             }\n                                                     ));\n\n\n            m_dialogues.Add((int)MyDialogueEnum.BARTHS_MOON_TRANSMITTER_3100, new MyDialogue(\n                                                     new MyDialogueSentence[]\n                                                                                             {\n                                                                                                 new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1186, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_3101),\n                                                                                                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1187, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_3102),\n                                                                                                new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1188, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_3103),\n                                                                                                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1189, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_3104),\n                                                                                                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1190, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_3105),\n                                                                                                new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1191, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_3106),\n                                                                                                new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1192, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_3107),\n                                                                                                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1193, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_3108),\n\n                                                                                             }\n                                                     ));\n\n\n            m_dialogues.Add((int)MyDialogueEnum.BARTHS_MOON_TRANSMITTER_3200, new MyDialogue(\n                                                     new MyDialogueSentence[]\n                                                                                             {\n                                                                                                 new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1194, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_3201),\n                                                                                                new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1195, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_3202),\n                                                                                                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1196, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_3203),\n                                                                                                new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1197, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_3204),\n                                                                                                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1198, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_3205),\n                                                                                                new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1199, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_3206),\n                                                                                                //new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1200, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_3207),\n                                                                                                new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1201, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_3208),\n                                                                                                new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1202, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_3209),\n                                                                                                new MyDialogueSentence(MyActorEnum.FATHER_TOBIAS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1203, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_3210),\n                                                                                                new MyDialogueSentence(MyActorEnum.FATHER_TOBIAS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1204, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_3211),\n                                                                                                new MyDialogueSentence(MyActorEnum.FATHER_TOBIAS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1205, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_3212),\n                                                                                                new MyDialogueSentence(MyActorEnum.FATHER_TOBIAS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1206, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_3213),\n                                                                                                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1207, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_3214),\n                                                                                                new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1208, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_3215),\n                                                                                                new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1209, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_3216),\n                                                                                                new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1210, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_3217),\n                                                                                                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1211, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_3218),\n                                                                                                new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1212, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_3219),\n                                                                                                new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1213, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_3220),\n                                                                                                new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1214, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_3221),\n                                                                                                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1215, MyDialoguesWrapperEnum.Dlg_BarthsMoon2_3222),\n\n                                                                                             }\n                                                     ));\n\n            #endregion\n\n            #region Fort Valiant A\n\n\n            m_dialogues.Add((int)MyDialogueEnum.FORT_VALIANT_A_0100, new MyDialogue(\n                                                                                         new MyDialogueSentence[]\n                                                                                             {\n                                                                                                 new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_FortValiant_1000, MyDialoguesWrapperEnum.Dlg_FortValiantA_0100),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_FortValiant_1001, MyDialoguesWrapperEnum.Dlg_FortValiantA_0101),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_FortValiant_1002, MyDialoguesWrapperEnum.Dlg_FortValiantA_0102),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_FortValiant_1003, MyDialoguesWrapperEnum.Dlg_FortValiantA_0103),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_FortValiant_1004, MyDialoguesWrapperEnum.Dlg_FortValiantA_0104),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_FortValiant_1005, MyDialoguesWrapperEnum.Dlg_FortValiantA_0105),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_FortValiant_1006, MyDialoguesWrapperEnum.Dlg_FortValiantA_0106),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_FortValiant_1007, MyDialoguesWrapperEnum.Dlg_FortValiantA_0107),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_FortValiant_1008, MyDialoguesWrapperEnum.Dlg_FortValiantA_0108),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_FortValiant_1009, MyDialoguesWrapperEnum.Dlg_FortValiantA_0109),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_FortValiant_1010, MyDialoguesWrapperEnum.Dlg_FortValiantA_0110),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_FortValiant_1011, MyDialoguesWrapperEnum.Dlg_FortValiantA_0111),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_FortValiant_1012, MyDialoguesWrapperEnum.Dlg_FortValiantA_0112),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_FortValiant_1013, MyDialoguesWrapperEnum.Dlg_FortValiantA_0113),\nnew MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_FortValiant_1014, MyDialoguesWrapperEnum.Dlg_FortValiantA_0114),\nnew MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_FortValiant_1015, MyDialoguesWrapperEnum.Dlg_FortValiantA_0115),\n\n\n                                                                                             }\n                                                                                         ));\n\n            m_dialogues.Add((int)MyDialogueEnum.FORT_VALIANT_A_0200, new MyDialogue(\n                                                                             new MyDialogueSentence[]\n                                                                                             {\n                                                                                                 new MyDialogueSentence(MyActorEnum.GATEKEEPER, MySoundCuesEnum.Dlg_FortValiant_1016, MyDialoguesWrapperEnum.Dlg_FortValiantA_0200),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_FortValiant_1017, MyDialoguesWrapperEnum.Dlg_FortValiantA_0201),\nnew MyDialogueSentence(MyActorEnum.GATEKEEPER, MySoundCuesEnum.Dlg_FortValiant_1018, MyDialoguesWrapperEnum.Dlg_FortValiantA_0202),\nnew MyDialogueSentence(MyActorEnum.GATEKEEPER, MySoundCuesEnum.Dlg_FortValiant_1019, MyDialoguesWrapperEnum.Dlg_FortValiantA_0203),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_FortValiant_1020, MyDialoguesWrapperEnum.Dlg_FortValiantA_0204),\n\n\n                                                                                             }\n                                                                             ));\n\n            m_dialogues.Add((int)MyDialogueEnum.FORT_VALIANT_A_0300, new MyDialogue(\n                                                                             new MyDialogueSentence[]\n                                                                                             {\n                                                                                                 new MyDialogueSentence(MyActorEnum.CEDRIC, MySoundCuesEnum.Dlg_FortValiant_1021, MyDialoguesWrapperEnum.Dlg_FortValiantA_0300),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_FortValiant_1022, MyDialoguesWrapperEnum.Dlg_FortValiantA_0301),\nnew MyDialogueSentence(MyActorEnum.CEDRIC, MySoundCuesEnum.Dlg_FortValiant_1023, MyDialoguesWrapperEnum.Dlg_FortValiantA_0302),\nnew MyDialogueSentence(MyActorEnum.CEDRIC, MySoundCuesEnum.Dlg_FortValiant_1024, MyDialoguesWrapperEnum.Dlg_FortValiantA_0303),\nnew MyDialogueSentence(MyActorEnum.CEDRIC, MySoundCuesEnum.Dlg_FortValiant_1025, MyDialoguesWrapperEnum.Dlg_FortValiantA_0304),\nnew MyDialogueSentence(MyActorEnum.CEDRIC, MySoundCuesEnum.Dlg_FortValiant_1026, MyDialoguesWrapperEnum.Dlg_FortValiantA_0305),\nnew MyDialogueSentence(MyActorEnum.CEDRIC, MySoundCuesEnum.Dlg_FortValiant_1027, MyDialoguesWrapperEnum.Dlg_FortValiantA_0306),\nnew MyDialogueSentence(MyActorEnum.CEDRIC, MySoundCuesEnum.Dlg_FortValiant_1028, MyDialoguesWrapperEnum.Dlg_FortValiantA_0307),\nnew MyDialogueSentence(MyActorEnum.CEDRIC, MySoundCuesEnum.Dlg_FortValiant_1029, MyDialoguesWrapperEnum.Dlg_FortValiantA_0308),\nnew MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_FortValiant_1030, MyDialoguesWrapperEnum.Dlg_FortValiantA_0309),\nnew MyDialogueSentence(MyActorEnum.CEDRIC, MySoundCuesEnum.Dlg_FortValiant_1031, MyDialoguesWrapperEnum.Dlg_FortValiantA_0310),\nnew MyDialogueSentence(MyActorEnum.CEDRIC, MySoundCuesEnum.Dlg_FortValiant_1032, MyDialoguesWrapperEnum.Dlg_FortValiantA_0311),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_FortValiant_1033, MyDialoguesWrapperEnum.Dlg_FortValiantA_0312),\nnew MyDialogueSentence(MyActorEnum.CEDRIC, MySoundCuesEnum.Dlg_FortValiant_1034, MyDialoguesWrapperEnum.Dlg_FortValiantA_0313),\nnew MyDialogueSentence(MyActorEnum.CEDRIC, MySoundCuesEnum.Dlg_FortValiant_1035, MyDialoguesWrapperEnum.Dlg_FortValiantA_0314),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_FortValiant_1036, MyDialoguesWrapperEnum.Dlg_FortValiantA_0315),\nnew MyDialogueSentence(MyActorEnum.CEDRIC, MySoundCuesEnum.Dlg_FortValiant_1037, MyDialoguesWrapperEnum.Dlg_FortValiantA_0316),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_FortValiant_1038, MyDialoguesWrapperEnum.Dlg_FortValiantA_0317),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_FortValiant_1039, MyDialoguesWrapperEnum.Dlg_FortValiantA_0318),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_FortValiant_1040, MyDialoguesWrapperEnum.Dlg_FortValiantA_0319),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_FortValiant_1041, MyDialoguesWrapperEnum.Dlg_FortValiantA_0320),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_FortValiant_1042, MyDialoguesWrapperEnum.Dlg_FortValiantA_0321),\nnew MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_FortValiant_1043, MyDialoguesWrapperEnum.Dlg_FortValiantA_0322),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_FortValiant_1044, MyDialoguesWrapperEnum.Dlg_FortValiantA_0323),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_FortValiant_1045, MyDialoguesWrapperEnum.Dlg_FortValiantA_0324),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_FortValiant_1046, MyDialoguesWrapperEnum.Dlg_FortValiantA_0325),\n\n\n                                                                                             }\n                                                                             ));\n\n\n            #endregion\n\n            #region Fort Valiant B\n\n            m_dialogues.Add((int)MyDialogueEnum.FORT_VALIANT_B_0100, new MyDialogue(\n                                                                                         new MyDialogueSentence[]\n                                                                                             {\n                                                                                                 new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_FortValiantB_1000, MyDialoguesWrapperEnum.Dlg_FortValiantB_0100),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_FortValiantB_1001, MyDialoguesWrapperEnum.Dlg_FortValiantB_0101),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_FortValiantB_1002, MyDialoguesWrapperEnum.Dlg_FortValiantB_0102),\n\n                                                                                             }\n                                                                                         ));\n\n\n\n            m_dialogues.Add((int)MyDialogueEnum.FORT_VALIANT_B_0200, new MyDialogue(\n                                                                                         new MyDialogueSentence[]\n                                                                                             {\nnew MyDialogueSentence(MyActorEnum.CEDRIC, MySoundCuesEnum.Dlg_FortValiantB_1003, MyDialoguesWrapperEnum.Dlg_FortValiantB_0201),\nnew MyDialogueSentence(MyActorEnum.CEDRIC, MySoundCuesEnum.Dlg_FortValiantB_1004, MyDialoguesWrapperEnum.Dlg_FortValiantB_0202),\nnew MyDialogueSentence(MyActorEnum.CEDRIC, MySoundCuesEnum.Dlg_FortValiantB_1005, MyDialoguesWrapperEnum.Dlg_FortValiantB_0203),\nnew MyDialogueSentence(MyActorEnum.CEDRIC, MySoundCuesEnum.Dlg_FortValiantB_1006, MyDialoguesWrapperEnum.Dlg_FortValiantB_0204),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_FortValiantB_1007, MyDialoguesWrapperEnum.Dlg_FortValiantB_0205),\nnew MyDialogueSentence(MyActorEnum.CEDRIC, MySoundCuesEnum.Dlg_FortValiantB_1008, MyDialoguesWrapperEnum.Dlg_FortValiantB_0207),\nnew MyDialogueSentence(MyActorEnum.CEDRIC, MySoundCuesEnum.Dlg_FortValiantB_1009, MyDialoguesWrapperEnum.Dlg_FortValiantB_0208),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_FortValiantB_1010, MyDialoguesWrapperEnum.Dlg_FortValiantB_0209),\nnew MyDialogueSentence(MyActorEnum.CEDRIC, MySoundCuesEnum.Dlg_FortValiantB_1011, MyDialoguesWrapperEnum.Dlg_FortValiantB_0210),\nnew MyDialogueSentence(MyActorEnum.CEDRIC, MySoundCuesEnum.Dlg_FortValiantB_1012, MyDialoguesWrapperEnum.Dlg_FortValiantB_0211),\nnew MyDialogueSentence(MyActorEnum.CEDRIC, MySoundCuesEnum.Dlg_FortValiantB_1013, MyDialoguesWrapperEnum.Dlg_FortValiantB_0212),\nnew MyDialogueSentence(MyActorEnum.CEDRIC, MySoundCuesEnum.Dlg_FortValiantB_1014, MyDialoguesWrapperEnum.Dlg_FortValiantB_0213),\nnew MyDialogueSentence(MyActorEnum.CEDRIC, MySoundCuesEnum.Dlg_FortValiantB_1015, MyDialoguesWrapperEnum.Dlg_FortValiantB_0214),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_FortValiantB_1016, MyDialoguesWrapperEnum.Dlg_FortValiantB_0215),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_FortValiantB_1017, MyDialoguesWrapperEnum.Dlg_FortValiantB_0216),\nnew MyDialogueSentence(MyActorEnum.CEDRIC, MySoundCuesEnum.Dlg_FortValiantB_1018, MyDialoguesWrapperEnum.Dlg_FortValiantB_0217),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_FortValiantB_1019, MyDialoguesWrapperEnum.Dlg_FortValiantB_0218),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_FortValiantB_1020, MyDialoguesWrapperEnum.Dlg_FortValiantB_0219),\nnew MyDialogueSentence(MyActorEnum.CEDRIC, MySoundCuesEnum.Dlg_FortValiantB_1021, MyDialoguesWrapperEnum.Dlg_FortValiantB_0220),\nnew MyDialogueSentence(MyActorEnum.CEDRIC, MySoundCuesEnum.Dlg_FortValiantB_1022, MyDialoguesWrapperEnum.Dlg_FortValiantB_0221),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_FortValiantB_1023, MyDialoguesWrapperEnum.Dlg_FortValiantB_0222),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_FortValiantB_1024, MyDialoguesWrapperEnum.Dlg_FortValiantB_0223),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_FortValiantB_1025, MyDialoguesWrapperEnum.Dlg_FortValiantB_0224),\nnew MyDialogueSentence(MyActorEnum.CEDRIC, MySoundCuesEnum.Dlg_FortValiantB_1026, MyDialoguesWrapperEnum.Dlg_FortValiantB_0225),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_FortValiantB_1027, MyDialoguesWrapperEnum.Dlg_FortValiantB_0226),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_FortValiantB_1028, MyDialoguesWrapperEnum.Dlg_FortValiantB_0227),\nnew MyDialogueSentence(MyActorEnum.CEDRIC, MySoundCuesEnum.Dlg_FortValiantB_1029, MyDialoguesWrapperEnum.Dlg_FortValiantB_0228),\nnew MyDialogueSentence(MyActorEnum.CEDRIC, MySoundCuesEnum.Dlg_FortValiantB_1030, MyDialoguesWrapperEnum.Dlg_FortValiantB_0229),\nnew MyDialogueSentence(MyActorEnum.CEDRIC, MySoundCuesEnum.Dlg_FortValiantB_1031, MyDialoguesWrapperEnum.Dlg_FortValiantB_0230),\n\n                                                                                             }\n                                                                                         ));\n            #endregion\n\n            #region Reichstag A\n\n            m_dialogues.Add((int)MyDialogueEnum.REICHSTAG_A_0100_INTRODUCTION, new MyDialogue(\n          new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_ReichstagA_1000, MyDialoguesWrapperEnum.Dlg_ReichstagA_1000),\n                new MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_ReichstagA_1001, MyDialoguesWrapperEnum.Dlg_ReichstagA_1001),\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_ReichstagA_1002, MyDialoguesWrapperEnum.Dlg_ReichstagA_1002),\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_ReichstagA_1003, MyDialoguesWrapperEnum.Dlg_ReichstagA_1003),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ReichstagA_1004, MyDialoguesWrapperEnum.Dlg_ReichstagA_1004),\n            }\n          ));\n            m_dialogues.Add((int)MyDialogueEnum.REICHSTAG_A_0200_ON_THE_WAY, new MyDialogue(\n          new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_ReichstagA_1005, MyDialoguesWrapperEnum.Dlg_ReichstagA_1005),\n                new MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_ReichstagA_1006, MyDialoguesWrapperEnum.Dlg_ReichstagA_1006),\n                new MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_ReichstagA_1007, MyDialoguesWrapperEnum.Dlg_ReichstagA_1007),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ReichstagA_1008, MyDialoguesWrapperEnum.Dlg_ReichstagA_1008),\n                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_ReichstagA_1009, MyDialoguesWrapperEnum.Dlg_ReichstagA_1009),\n            }\n          ));\n            m_dialogues.Add((int)MyDialogueEnum.REICHSTAG_A_0300_REACHING_REICHSTAG, new MyDialogue(\n          new MyDialogueSentence[] {\n                //new MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_ReichstagA_1010, MyDialoguesWrapperEnum.Dlg_ReichstagA_1010),  // bad pronunciation, no cookie\n                //new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ReichstagA_1011, MyDialoguesWrapperEnum.Dlg_ReichstagA_1011),\n            }\n          ));\n          \n            m_dialogues.Add((int)MyDialogueEnum.REICHSTAG_A_0400_OFFICER_DIALOGUE, new MyDialogue(\n          new MyDialogueSentence[] {\n            new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ReichstagA_1012, MyDialoguesWrapperEnum.Dlg_ReichstagA_1012),\n            new MyDialogueSentence(MyActorEnum.WALTHER, MySoundCuesEnum.Dlg_ReichstagA_1013, MyDialoguesWrapperEnum.Dlg_ReichstagA_1013),\n            new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ReichstagA_1014, MyDialoguesWrapperEnum.Dlg_ReichstagA_1014),\n            new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ReichstagA_1015, MyDialoguesWrapperEnum.Dlg_ReichstagA_1015),\n            new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ReichstagA_1016, MyDialoguesWrapperEnum.Dlg_ReichstagA_1016),\n            new MyDialogueSentence(MyActorEnum.WALTHER, MySoundCuesEnum.Dlg_ReichstagA_1017, MyDialoguesWrapperEnum.Dlg_ReichstagA_1017),\n            new MyDialogueSentence(MyActorEnum.WALTHER, MySoundCuesEnum.Dlg_ReichstagA_1018, MyDialoguesWrapperEnum.Dlg_ReichstagA_1018),\n            new MyDialogueSentence(MyActorEnum.WALTHER, MySoundCuesEnum.Dlg_ReichstagA_1019, MyDialoguesWrapperEnum.Dlg_ReichstagA_1019),\n            new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ReichstagA_1020, MyDialoguesWrapperEnum.Dlg_ReichstagA_1020),\n            new MyDialogueSentence(MyActorEnum.WALTHER, MySoundCuesEnum.Dlg_ReichstagA_1021, MyDialoguesWrapperEnum.Dlg_ReichstagA_1021),\n            new MyDialogueSentence(MyActorEnum.WALTHER, MySoundCuesEnum.Dlg_ReichstagA_1022, MyDialoguesWrapperEnum.Dlg_ReichstagA_1022),\n            new MyDialogueSentence(MyActorEnum.WALTHER, MySoundCuesEnum.Dlg_ReichstagA_1023, MyDialoguesWrapperEnum.Dlg_ReichstagA_1023),\n            new MyDialogueSentence(MyActorEnum.WALTHER, MySoundCuesEnum.Dlg_ReichstagA_1024, MyDialoguesWrapperEnum.Dlg_ReichstagA_1024),\n            new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ReichstagA_1025, MyDialoguesWrapperEnum.Dlg_ReichstagA_1025),\n            new MyDialogueSentence(MyActorEnum.WALTHER, MySoundCuesEnum.Dlg_ReichstagA_1026, MyDialoguesWrapperEnum.Dlg_ReichstagA_1026),\n            new MyDialogueSentence(MyActorEnum.WALTHER, MySoundCuesEnum.Dlg_ReichstagA_1027, MyDialoguesWrapperEnum.Dlg_ReichstagA_1027),\n            new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ReichstagA_1028, MyDialoguesWrapperEnum.Dlg_ReichstagA_1028),\n            new MyDialogueSentence(MyActorEnum.WALTHER, MySoundCuesEnum.Dlg_ReichstagA_1029, MyDialoguesWrapperEnum.Dlg_ReichstagA_1029),\n            new MyDialogueSentence(MyActorEnum.WALTHER, MySoundCuesEnum.Dlg_ReichstagA_1030, MyDialoguesWrapperEnum.Dlg_ReichstagA_1030),\n            }\n          ));\n            m_dialogues.Add((int)MyDialogueEnum.REICHSTAG_A_0500_ON_THE_WAY_BACK, new MyDialogue(\n            new MyDialogueSentence[] {\n            new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ReichstagA_1031, MyDialoguesWrapperEnum.Dlg_ReichstagA_1031),\n            new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ReichstagA_1032, MyDialoguesWrapperEnum.Dlg_ReichstagA_1032),\n            new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_ReichstagA_1033, MyDialoguesWrapperEnum.Dlg_ReichstagA_1033),\n            new MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_ReichstagA_1034, MyDialoguesWrapperEnum.Dlg_ReichstagA_1034),\n            new MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_ReichstagA_1035, MyDialoguesWrapperEnum.Dlg_ReichstagA_1035),\n            new MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_ReichstagA_1036, MyDialoguesWrapperEnum.Dlg_ReichstagA_1036),\n            new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_ReichstagA_1037, MyDialoguesWrapperEnum.Dlg_ReichstagA_1037),\n            new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_ReichstagA_1038, MyDialoguesWrapperEnum.Dlg_ReichstagA_1038),            }\n          ));\n            #endregion\n\n            #region Reichstag C\n            m_dialogues.Add((int)MyDialogueEnum.REICHSTAG_C_0100_OFFICER_TALK, new MyDialogue(\n          new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ReichstagC_1000, MyDialoguesWrapperEnum.Dlg_ReichstagC_1000),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ReichstagC_1001, MyDialoguesWrapperEnum.Dlg_ReichstagC_1001),\n                new MyDialogueSentence(MyActorEnum.WALTHER, MySoundCuesEnum.Dlg_ReichstagC_1002, MyDialoguesWrapperEnum.Dlg_ReichstagC_1002),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ReichstagC_1003, MyDialoguesWrapperEnum.Dlg_ReichstagC_1003),\n                new MyDialogueSentence(MyActorEnum.WALTHER, MySoundCuesEnum.Dlg_ReichstagC_1004, MyDialoguesWrapperEnum.Dlg_ReichstagC_1004),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ReichstagC_1005, MyDialoguesWrapperEnum.Dlg_ReichstagC_1005),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ReichstagC_1006, MyDialoguesWrapperEnum.Dlg_ReichstagC_1006),\n                new MyDialogueSentence(MyActorEnum.WALTHER, MySoundCuesEnum.Dlg_ReichstagC_1007, MyDialoguesWrapperEnum.Dlg_ReichstagC_1007),\n                new MyDialogueSentence(MyActorEnum.WALTHER, MySoundCuesEnum.Dlg_ReichstagC_1008, MyDialoguesWrapperEnum.Dlg_ReichstagC_1008),\n                new MyDialogueSentence(MyActorEnum.WALTHER, MySoundCuesEnum.Dlg_ReichstagC_1009, MyDialoguesWrapperEnum.Dlg_ReichstagC_1009),\n                new MyDialogueSentence(MyActorEnum.WALTHER, MySoundCuesEnum.Dlg_ReichstagC_1010, MyDialoguesWrapperEnum.Dlg_ReichstagC_1010),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ReichstagC_1011, MyDialoguesWrapperEnum.Dlg_ReichstagC_1011),\n                new MyDialogueSentence(MyActorEnum.WALTHER, MySoundCuesEnum.Dlg_ReichstagC_1012, MyDialoguesWrapperEnum.Dlg_ReichstagC_1012),\n                new MyDialogueSentence(MyActorEnum.WALTHER, MySoundCuesEnum.Dlg_ReichstagC_1013, MyDialoguesWrapperEnum.Dlg_ReichstagC_1013),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ReichstagC_1014, MyDialoguesWrapperEnum.Dlg_ReichstagC_1014),\n                new MyDialogueSentence(MyActorEnum.WALTHER, MySoundCuesEnum.Dlg_ReichstagC_1015, MyDialoguesWrapperEnum.Dlg_ReichstagC_1015),\n                new MyDialogueSentence(MyActorEnum.WALTHER, MySoundCuesEnum.Dlg_ReichstagC_1016, MyDialoguesWrapperEnum.Dlg_ReichstagC_1016),\n                new MyDialogueSentence(MyActorEnum.WALTHER, MySoundCuesEnum.Dlg_ReichstagC_1017, MyDialoguesWrapperEnum.Dlg_ReichstagC_1017),\n                new MyDialogueSentence(MyActorEnum.WALTHER, MySoundCuesEnum.Dlg_ReichstagC_1018, MyDialoguesWrapperEnum.Dlg_ReichstagC_1018),\n                new MyDialogueSentence(MyActorEnum.WALTHER, MySoundCuesEnum.Dlg_ReichstagC_1019, MyDialoguesWrapperEnum.Dlg_ReichstagC_1019),\n                new MyDialogueSentence(MyActorEnum.WALTHER, MySoundCuesEnum.Dlg_ReichstagC_1020, MyDialoguesWrapperEnum.Dlg_ReichstagC_1020),\n                new MyDialogueSentence(MyActorEnum.WALTHER, MySoundCuesEnum.Dlg_ReichstagC_1021, MyDialoguesWrapperEnum.Dlg_ReichstagC_1021),\n                new MyDialogueSentence(MyActorEnum.WALTHER, MySoundCuesEnum.Dlg_ReichstagC_1022, MyDialoguesWrapperEnum.Dlg_ReichstagC_1022),\n                new MyDialogueSentence(MyActorEnum.WALTHER, MySoundCuesEnum.Dlg_ReichstagC_1022_2, MyDialoguesWrapperEnum.Dlg_ReichstagC_1022_2),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ReichstagC_1023, MyDialoguesWrapperEnum.Dlg_ReichstagC_1023),\n                new MyDialogueSentence(MyActorEnum.WALTHER, MySoundCuesEnum.Dlg_ReichstagC_1024, MyDialoguesWrapperEnum.Dlg_ReichstagC_1024),\n                new MyDialogueSentence(MyActorEnum.WALTHER, MySoundCuesEnum.Dlg_ReichstagC_1025, MyDialoguesWrapperEnum.Dlg_ReichstagC_1025),\n                new MyDialogueSentence(MyActorEnum.WALTHER, MySoundCuesEnum.Dlg_ReichstagC_1026, MyDialoguesWrapperEnum.Dlg_ReichstagC_1026),\n                new MyDialogueSentence(MyActorEnum.WALTHER, MySoundCuesEnum.Dlg_ReichstagC_1027, MyDialoguesWrapperEnum.Dlg_ReichstagC_1027),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ReichstagC_1028, MyDialoguesWrapperEnum.Dlg_ReichstagC_1028),\n                new MyDialogueSentence(MyActorEnum.WALTHER, MySoundCuesEnum.Dlg_ReichstagC_1029, MyDialoguesWrapperEnum.Dlg_ReichstagC_1029),\n                new MyDialogueSentence(MyActorEnum.WALTHER, MySoundCuesEnum.Dlg_ReichstagC_1030, MyDialoguesWrapperEnum.Dlg_ReichstagC_1030),\n                new MyDialogueSentence(MyActorEnum.WALTHER, MySoundCuesEnum.Dlg_ReichstagC_1031, MyDialoguesWrapperEnum.Dlg_ReichstagC_1031),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ReichstagC_1032, MyDialoguesWrapperEnum.Dlg_ReichstagC_1032),\n                new MyDialogueSentence(MyActorEnum.WALTHER, MySoundCuesEnum.Dlg_ReichstagC_1033, MyDialoguesWrapperEnum.Dlg_ReichstagC_1033),\n                new MyDialogueSentence(MyActorEnum.WALTHER, MySoundCuesEnum.Dlg_ReichstagC_1034, MyDialoguesWrapperEnum.Dlg_ReichstagC_1034),\n                new MyDialogueSentence(MyActorEnum.WALTHER, MySoundCuesEnum.Dlg_ReichstagC_1035, MyDialoguesWrapperEnum.Dlg_ReichstagC_1035),\n                new MyDialogueSentence(MyActorEnum.WALTHER, MySoundCuesEnum.Dlg_ReichstagC_1036, MyDialoguesWrapperEnum.Dlg_ReichstagC_1036),\n                new MyDialogueSentence(MyActorEnum.WALTHER, MySoundCuesEnum.Dlg_ReichstagC_1037, MyDialoguesWrapperEnum.Dlg_ReichstagC_1037),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ReichstagC_1038, MyDialoguesWrapperEnum.Dlg_ReichstagC_1038),\n            }\n          ));\n\n            m_dialogues.Add((int)MyDialogueEnum.REICHSTAG_C_0200_ON_THE_WAY, new MyDialogue(\n          new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.WALTHER, MySoundCuesEnum.Dlg_ReichstagC_1039, MyDialoguesWrapperEnum.Dlg_ReichstagC_1039),\n                new MyDialogueSentence(MyActorEnum.WALTHER, MySoundCuesEnum.Dlg_ReichstagC_1040, MyDialoguesWrapperEnum.Dlg_ReichstagC_1040),\n            }\n          ));\n            m_dialogues.Add((int)MyDialogueEnum.REICHSTAG_C_0300_REACHING_SHIPYARD, new MyDialogue(\n          new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ReichstagC_1041, MyDialoguesWrapperEnum.Dlg_ReichstagC_1041),\n                new MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_ReichstagC_1042, MyDialoguesWrapperEnum.Dlg_ReichstagC_1042),\n            }\n          ));\n            m_dialogues.Add((int)MyDialogueEnum.REICHSTAG_C_0400_SUPPLY_OFFICER, new MyDialogue(\n          new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.REICHSTAG_OFFICER, MySoundCuesEnum.Dlg_ReichstagC_1043, MyDialoguesWrapperEnum.Dlg_ReichstagC_1043, noise: 0.9f),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ReichstagC_1044, MyDialoguesWrapperEnum.Dlg_ReichstagC_1044),\n                new MyDialogueSentence(MyActorEnum.REICHSTAG_OFFICER, MySoundCuesEnum.Dlg_ReichstagC_1045, MyDialoguesWrapperEnum.Dlg_ReichstagC_1045, noise: 0.9f),\n                new MyDialogueSentence(MyActorEnum.REICHSTAG_OFFICER, MySoundCuesEnum.Dlg_ReichstagC_1046, MyDialoguesWrapperEnum.Dlg_ReichstagC_1046, noise: 0.9f),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ReichstagC_1047, MyDialoguesWrapperEnum.Dlg_ReichstagC_1047),\n                new MyDialogueSentence(MyActorEnum.REICHSTAG_OFFICER, MySoundCuesEnum.Dlg_ReichstagC_1048, MyDialoguesWrapperEnum.Dlg_ReichstagC_1048, noise: 0.9f),\n                new MyDialogueSentence(MyActorEnum.REICHSTAG_OFFICER, MySoundCuesEnum.Dlg_ReichstagC_1049, MyDialoguesWrapperEnum.Dlg_ReichstagC_1049, noise: 0.9f),\n\n            }\n          ));\n            m_dialogues.Add((int)MyDialogueEnum.REICHSTAG_C_0500_REACHING_SHIPS, new MyDialogue(\n          new MyDialogueSentence[] {\n               new MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_ReichstagC_1050, MyDialoguesWrapperEnum.Dlg_ReichstagC_1050),\n            }\n          ));\n            m_dialogues.Add((int)MyDialogueEnum.REICHSTAG_C_0600_SHIPS_PICKUPED, new MyDialogue(\n          new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_ReichstagC_1051, MyDialoguesWrapperEnum.Dlg_ReichstagC_1051),\n                new MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_ReichstagC_1052, MyDialoguesWrapperEnum.Dlg_ReichstagC_1052),\n                new MyDialogueSentence(MyActorEnum.REICHSTAG_OFFICER, MySoundCuesEnum.Dlg_ReichstagC_1053, MyDialoguesWrapperEnum.Dlg_ReichstagC_1053, noise: 0.9f),\n                new MyDialogueSentence(MyActorEnum.REICHSTAG_OFFICER, MySoundCuesEnum.Dlg_ReichstagC_1054, MyDialoguesWrapperEnum.Dlg_ReichstagC_1054, noise: 0.9f),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ReichstagC_1055, MyDialoguesWrapperEnum.Dlg_ReichstagC_1055),\n            }\n          ));\n            m_dialogues.Add((int)MyDialogueEnum.REICHSTAG_C_0700_SHIPYARD_SHOP, new MyDialogue(\n          new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_ReichstagC_1056, MyDialoguesWrapperEnum.Dlg_ReichstagC_1056),\n                new MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_ReichstagC_1057, MyDialoguesWrapperEnum.Dlg_ReichstagC_1057),\n            }\n          ));\n            m_dialogues.Add((int)MyDialogueEnum.REICHSTAG_C_0800_SHOPPING_FINISHED, new MyDialogue(\n          new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_ReichstagC_1058, MyDialoguesWrapperEnum.Dlg_ReichstagC_1058),\n                new MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_ReichstagC_1059, MyDialoguesWrapperEnum.Dlg_ReichstagC_1059),\n            }\n          ));\n                        m_dialogues.Add((int)MyDialogueEnum.REICHSTAG_C_0900_TRANSPORTER_REACHED, new MyDialogue(\n          new MyDialogueSentence[] {\n                new MyDialogueSentence(MyActorEnum.REICHSTAG_CAPTAIN, MySoundCuesEnum.Dlg_ReichstagC_1060, MyDialoguesWrapperEnum.Dlg_ReichstagC_1060, noise: 0.9f),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ReichstagC_1061, MyDialoguesWrapperEnum.Dlg_ReichstagC_1061),\n                new MyDialogueSentence(MyActorEnum.REICHSTAG_CAPTAIN, MySoundCuesEnum.Dlg_ReichstagC_1062, MyDialoguesWrapperEnum.Dlg_ReichstagC_1062, noise: 0.9f),\n                new MyDialogueSentence(MyActorEnum.REICHSTAG_CAPTAIN, MySoundCuesEnum.Dlg_ReichstagC_1063, MyDialoguesWrapperEnum.Dlg_ReichstagC_1063, noise: 0.9f),\n                new MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_ReichstagC_1064, MyDialoguesWrapperEnum.Dlg_ReichstagC_1064),\n                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ReichstagC_1065, MyDialoguesWrapperEnum.Dlg_ReichstagC_1065),\n            }\n          ));\n            #endregion\n\n            #region EAC prison\n            m_dialogues.Add((int)MyDialogueEnum.EAC_PRISON_0100, new MyDialogue(\n                                                                             new MyDialogueSentence[]\n                                                                                             {\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_EacPrison_1000, MyDialoguesWrapperEnum.Dlg_EACPrison_0100),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_EacPrison_1001, MyDialoguesWrapperEnum.Dlg_EACPrison_0101),\nnew MyDialogueSentence(MyActorEnum.WALTHER, MySoundCuesEnum.Dlg_EacPrison_1002, MyDialoguesWrapperEnum.Dlg_EACPrison_0102),\nnew MyDialogueSentence(MyActorEnum.WALTHER, MySoundCuesEnum.Dlg_EacPrison_1003, MyDialoguesWrapperEnum.Dlg_EACPrison_0103),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_EacPrison_1004, MyDialoguesWrapperEnum.Dlg_EACPrison_0104),\nnew MyDialogueSentence(MyActorEnum.WALTHER, MySoundCuesEnum.Dlg_EacPrison_1005, MyDialoguesWrapperEnum.Dlg_EACPrison_0105),\nnew MyDialogueSentence(MyActorEnum.WALTHER, MySoundCuesEnum.Dlg_EacPrison_1006, MyDialoguesWrapperEnum.Dlg_EACPrison_0106),\nnew MyDialogueSentence(MyActorEnum.WALTHER, MySoundCuesEnum.Dlg_EacPrison_1007, MyDialoguesWrapperEnum.Dlg_EACPrison_0107),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_EacPrison_1008, MyDialoguesWrapperEnum.Dlg_EACPrison_0108),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_EacPrison_1009, MyDialoguesWrapperEnum.Dlg_EACPrison_0109),\nnew MyDialogueSentence(MyActorEnum.WALTHER, MySoundCuesEnum.Dlg_EacPrison_1010, MyDialoguesWrapperEnum.Dlg_EACPrison_0110),\nnew MyDialogueSentence(MyActorEnum.WALTHER, MySoundCuesEnum.Dlg_EacPrison_1011, MyDialoguesWrapperEnum.Dlg_EACPrison_0111),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_EacPrison_1012, MyDialoguesWrapperEnum.Dlg_EACPrison_0112),\nnew MyDialogueSentence(MyActorEnum.WALTHER, MySoundCuesEnum.Dlg_EacPrison_1013, MyDialoguesWrapperEnum.Dlg_EACPrison_0113),\nnew MyDialogueSentence(MyActorEnum.WALTHER, MySoundCuesEnum.Dlg_EacPrison_1014, MyDialoguesWrapperEnum.Dlg_EACPrison_0114),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_EacPrison_1015, MyDialoguesWrapperEnum.Dlg_EACPrison_0115),\n\n\n                                                                                             }\n                                                                             ));\n\n            m_dialogues.Add((int)MyDialogueEnum.EAC_PRISON_0200, new MyDialogue(\n                                                                 new MyDialogueSentence[]\n                                                                                             {\n\n                                                                                                 new MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_EacPrison_1016, MyDialoguesWrapperEnum.Dlg_EACPrison_0200),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_EacPrison_1017, MyDialoguesWrapperEnum.Dlg_EACPrison_0201),\n\n                                                                                             }\n                                                                 ));\n            m_dialogues.Add((int)MyDialogueEnum.EAC_PRISON_0300, new MyDialogue(\n                                                                 new MyDialogueSentence[]\n                                                                                             {\n\n                                                                                                 new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_EacPrison_1018, MyDialoguesWrapperEnum.Dlg_EACPrison_0300),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_EacPrison_1019, MyDialoguesWrapperEnum.Dlg_EACPrison_0301),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_EacPrison_1020, MyDialoguesWrapperEnum.Dlg_EACPrison_0302),\n\n                                                                                             }\n                                                                 ));\n            m_dialogues.Add((int)MyDialogueEnum.EAC_PRISON_0400, new MyDialogue(\n                                                                 new MyDialogueSentence[]\n                                                                                             {\n                                                                                                 new MyDialogueSentence(MyActorEnum.WALTHER, MySoundCuesEnum.Dlg_EacPrison_1021, MyDialoguesWrapperEnum.Dlg_EACPrison_0400),\nnew MyDialogueSentence(MyActorEnum.WALTHER, MySoundCuesEnum.Dlg_EacPrison_1022, MyDialoguesWrapperEnum.Dlg_EACPrison_0401),\nnew MyDialogueSentence(MyActorEnum.WALTHER, MySoundCuesEnum.Dlg_EacPrison_1023, MyDialoguesWrapperEnum.Dlg_EACPrison_0402),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_EacPrison_1024, MyDialoguesWrapperEnum.Dlg_EACPrison_0403),\nnew MyDialogueSentence(MyActorEnum.WALTHER, MySoundCuesEnum.Dlg_EacPrison_1025, MyDialoguesWrapperEnum.Dlg_EACPrison_0404),\nnew MyDialogueSentence(MyActorEnum.WALTHER, MySoundCuesEnum.Dlg_EacPrison_1026, MyDialoguesWrapperEnum.Dlg_EACPrison_0405),\nnew MyDialogueSentence(MyActorEnum.WALTHER, MySoundCuesEnum.Dlg_EacPrison_1027, MyDialoguesWrapperEnum.Dlg_EACPrison_0406),\nnew MyDialogueSentence(MyActorEnum.WALTHER, MySoundCuesEnum.Dlg_EacPrison_1028, MyDialoguesWrapperEnum.Dlg_EACPrison_0407),\nnew MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_EacPrison_1029, MyDialoguesWrapperEnum.Dlg_EACPrison_0408),\nnew MyDialogueSentence(MyActorEnum.WALTHER, MySoundCuesEnum.Dlg_EacPrison_1030, MyDialoguesWrapperEnum.Dlg_EACPrison_0409),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_EacPrison_1031, MyDialoguesWrapperEnum.Dlg_EACPrison_0410),\n\n\n                                                                                             }\n                                                                 ));\n            m_dialogues.Add((int)MyDialogueEnum.EAC_PRISON_0500, new MyDialogue(\n                                                                 new MyDialogueSentence[]\n                                                                                             {\n\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_EacPrison_1032, MyDialoguesWrapperEnum.Dlg_EACPrison_0500),\nnew MyDialogueSentence(MyActorEnum.WALTHER, MySoundCuesEnum.Dlg_EacPrison_1033, MyDialoguesWrapperEnum.Dlg_EACPrison_0501),\nnew MyDialogueSentence(MyActorEnum.WALTHER, MySoundCuesEnum.Dlg_EacPrison_1034, MyDialoguesWrapperEnum.Dlg_EACPrison_0502),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_EacPrison_1035, MyDialoguesWrapperEnum.Dlg_EACPrison_0503),\n\n                                                                                             }\n                                                                 ));\n            m_dialogues.Add((int)MyDialogueEnum.EAC_PRISON_0600, new MyDialogue(\n                                                                 new MyDialogueSentence[]\n                                                                                             {\n\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_EacPrison_1036, MyDialoguesWrapperEnum.Dlg_EACPrison_0600),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_EacPrison_1037, MyDialoguesWrapperEnum.Dlg_EACPrison_0601),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_EacPrison_1038, MyDialoguesWrapperEnum.Dlg_EACPrison_0602),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_EacPrison_1039, MyDialoguesWrapperEnum.Dlg_EACPrison_0603),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_EacPrison_1040, MyDialoguesWrapperEnum.Dlg_EACPrison_0604),\n\n                                                                                             }\n                                                                 ));\n            m_dialogues.Add((int)MyDialogueEnum.EAC_PRISON_0700, new MyDialogue(\n                                                                 new MyDialogueSentence[]\n                                                                                             {\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_EacPrison_1041, MyDialoguesWrapperEnum.Dlg_EACPrison_0700),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_EacPrison_1042, MyDialoguesWrapperEnum.Dlg_EACPrison_0701),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_EacPrison_1043, MyDialoguesWrapperEnum.Dlg_EACPrison_0702),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_EacPrison_1044, MyDialoguesWrapperEnum.Dlg_EACPrison_0703),\n\n\n                                                                                             }\n                                                                 ));\n\n            m_dialogues.Add((int)MyDialogueEnum.EAC_PRISON_0800, new MyDialogue(\n                                                     new MyDialogueSentence[]\n                                                                                             {\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_EacPrison_1045, MyDialoguesWrapperEnum.Dlg_EACPrison_0800),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_EacPrison_1046, MyDialoguesWrapperEnum.Dlg_EACPrison_0801),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_EacPrison_1047, MyDialoguesWrapperEnum.Dlg_EACPrison_0802),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_EacPrison_1048, MyDialoguesWrapperEnum.Dlg_EACPrison_0803),\n\n\n                                                                                             }\n                                                     ));\n            m_dialogues.Add((int)MyDialogueEnum.EAC_PRISON_0900, new MyDialogue(\n                                                     new MyDialogueSentence[]\n                                                                                             {\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_EacPrison_1049, MyDialoguesWrapperEnum.Dlg_EACPrison_0900),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_EacPrison_1050, MyDialoguesWrapperEnum.Dlg_EACPrison_0901),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_EacPrison_1051, MyDialoguesWrapperEnum.Dlg_EACPrison_0902),\nnew MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_EacPrison_1052, MyDialoguesWrapperEnum.Dlg_EACPrison_0903),\n    \n\n                                                                                             }\n                                                     ));\n            m_dialogues.Add((int)MyDialogueEnum.EAC_PRISON_1000, new MyDialogue(\n                                                     new MyDialogueSentence[]\n                                                                                             {\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_EacPrison_1053, MyDialoguesWrapperEnum.Dlg_EACPrison_1000),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_EacPrison_1054, MyDialoguesWrapperEnum.Dlg_EACPrison_1001),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_EacPrison_1055, MyDialoguesWrapperEnum.Dlg_EACPrison_1002),\n\n\n                                                                                             }\n                                                     ));\n            m_dialogues.Add((int)MyDialogueEnum.EAC_PRISON_1100, new MyDialogue(\n                                                     new MyDialogueSentence[]\n                                                                                             {\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_EacPrison_1056, MyDialoguesWrapperEnum.Dlg_EACPrison_1100),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_EacPrison_1057, MyDialoguesWrapperEnum.Dlg_EACPrison_1101),\n\n\n                                                                                             }\n                                                     ));\n            m_dialogues.Add((int)MyDialogueEnum.EAC_PRISON_1200, new MyDialogue(\n                                                     new MyDialogueSentence[]\n                                                                                             {\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_EacPrison_1058, MyDialoguesWrapperEnum.Dlg_EACPrison_1200),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_EacPrison_1059, MyDialoguesWrapperEnum.Dlg_EACPrison_1201),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_EacPrison_1060, MyDialoguesWrapperEnum.Dlg_EACPrison_1202),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_EacPrison_1061, MyDialoguesWrapperEnum.Dlg_EACPrison_1203),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_EacPrison_1062, MyDialoguesWrapperEnum.Dlg_EACPrison_1204),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_EacPrison_1063, MyDialoguesWrapperEnum.Dlg_EACPrison_1205),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_EacPrison_1064, MyDialoguesWrapperEnum.Dlg_EACPrison_1206),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_EacPrison_1065, MyDialoguesWrapperEnum.Dlg_EACPrison_1207),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_EacPrison_1066, MyDialoguesWrapperEnum.Dlg_EACPrison_1208),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_EacPrison_1067, MyDialoguesWrapperEnum.Dlg_EACPrison_1209),\n\n                                                                                             }\n                                                     ));\n            m_dialogues.Add((int)MyDialogueEnum.EAC_PRISON_1250, new MyDialogue(\n                                                     new MyDialogueSentence[]\n                                                                                             {\n//Shh we have company\nnew MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_EacPrison_1068, MyDialoguesWrapperEnum.Dlg_EACPrison_1210),\n                                                                                             }));\n\n            m_dialogues.Add((int)MyDialogueEnum.EAC_PRISON_1300, new MyDialogue(\n                                                     new MyDialogueSentence[]\n                                                                                             {\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_EacPrison_1069, MyDialoguesWrapperEnum.Dlg_EACPrison_1300),\n\n\n                                                                                             }\n                                                     ));\n            m_dialogues.Add((int)MyDialogueEnum.EAC_PRISON_1400, new MyDialogue(\n                                                     new MyDialogueSentence[]\n                                                                                             {\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_EacPrison_1070, MyDialoguesWrapperEnum.Dlg_EACPrison_1400),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_EacPrison_1071, MyDialoguesWrapperEnum.Dlg_EACPrison_1401),\n\n\n                                                                                             }\n                                                     ));\n            m_dialogues.Add((int)MyDialogueEnum.EAC_PRISON_1500, new MyDialogue(\n                                                     new MyDialogueSentence[]\n                                                                                             {\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_EacPrison_1072, MyDialoguesWrapperEnum.Dlg_EACPrison_1500),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_EacPrison_1073, MyDialoguesWrapperEnum.Dlg_EACPrison_1501),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_EacPrison_1074, MyDialoguesWrapperEnum.Dlg_EACPrison_1502),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_EacPrison_1075, MyDialoguesWrapperEnum.Dlg_EACPrison_1503),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_EacPrison_1076, MyDialoguesWrapperEnum.Dlg_EACPrison_1504),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_EacPrison_1077, MyDialoguesWrapperEnum.Dlg_EACPrison_1505),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_EacPrison_1078, MyDialoguesWrapperEnum.Dlg_EACPrison_1506),\nnew MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_EacPrison_1079, MyDialoguesWrapperEnum.Dlg_EACPrison_1507),\n//new MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_EacPrison_1080, MyDialoguesWrapperEnum.Dlg_EACPrison_1508),\n//new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_EacPrison_1081, MyDialoguesWrapperEnum.Dlg_EACPrison_1509),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_EacPrison_1082, MyDialoguesWrapperEnum.Dlg_EACPrison_1510),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_EacPrison_1083, MyDialoguesWrapperEnum.Dlg_EACPrison_1511),\n\n\n                                                                                             }\n                                                     ));\n            m_dialogues.Add((int)MyDialogueEnum.EAC_PRISON_1600, new MyDialogue(\n                                                     new MyDialogueSentence[]\n                                                                                             {\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_EacPrison_1084, MyDialoguesWrapperEnum.Dlg_EACPrison_1600),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_EacPrison_1085, MyDialoguesWrapperEnum.Dlg_EACPrison_1601),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_EacPrison_1086, MyDialoguesWrapperEnum.Dlg_EACPrison_1602),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_EacPrison_1087, MyDialoguesWrapperEnum.Dlg_EACPrison_1603),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_EacPrison_1088, MyDialoguesWrapperEnum.Dlg_EACPrison_1604),\n\n\n                                                                                             }\n                                                     ));\n\n\n            #endregion\n\n            #region Research Vessel\n            m_dialogues.Add((int)MyDialogueEnum.RESEARCH_VESSEL_0100_INTRO, new MyDialogue(\n                new MyDialogueSentence[]\n                {\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_ResearchVessel_1000, MyDialoguesWrapperEnum.Dlg_ResearchVessel_1000),\n                    new MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_ResearchVessel_1001, MyDialoguesWrapperEnum.Dlg_ResearchVessel_1001),\n                    new MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_ResearchVessel_1002, MyDialoguesWrapperEnum.Dlg_ResearchVessel_1002),\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ResearchVessel_1003, MyDialoguesWrapperEnum.Dlg_ResearchVessel_1003),\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_ResearchVessel_1004, MyDialoguesWrapperEnum.Dlg_ResearchVessel_1004),\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_ResearchVessel_1005, MyDialoguesWrapperEnum.Dlg_ResearchVessel_1005),\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_ResearchVessel_1006, MyDialoguesWrapperEnum.Dlg_ResearchVessel_1006),\n                    new MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_ResearchVessel_1007, MyDialoguesWrapperEnum.Dlg_ResearchVessel_1007),\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_ResearchVessel_1008, MyDialoguesWrapperEnum.Dlg_ResearchVessel_1008),\n                    new MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_ResearchVessel_1009, MyDialoguesWrapperEnum.Dlg_ResearchVessel_1009),\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_ResearchVessel_1010, MyDialoguesWrapperEnum.Dlg_ResearchVessel_1010),\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_ResearchVessel_1011, MyDialoguesWrapperEnum.Dlg_ResearchVessel_1011),\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_ResearchVessel_1012, MyDialoguesWrapperEnum.Dlg_ResearchVessel_1012),\n                }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.RESEARCH_VESSEL_0200_INCOMINGSHIPS, new MyDialogue(\n                new MyDialogueSentence[]\n                {\n                    new MyDialogueSentence(MyActorEnum.RESEARCH_VESSEL_CAPTAIN, MySoundCuesEnum.Dlg_ResearchVessel_1013, MyDialoguesWrapperEnum.Dlg_ResearchVessel_1013),\n                    new MyDialogueSentence(MyActorEnum.RESEARCH_VESSEL_CAPTAIN, MySoundCuesEnum.Dlg_ResearchVessel_1014, MyDialoguesWrapperEnum.Dlg_ResearchVessel_1014),\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ResearchVessel_1015, MyDialoguesWrapperEnum.Dlg_ResearchVessel_1015),\n                    new MyDialogueSentence(MyActorEnum.RESEARCH_VESSEL_CAPTAIN, MySoundCuesEnum.Dlg_ResearchVessel_1016, MyDialoguesWrapperEnum.Dlg_ResearchVessel_1016),\n                    new MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_ResearchVessel_1017, MyDialoguesWrapperEnum.Dlg_ResearchVessel_1017),\n                }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.RESEARCH_VESSEL_0250_YOUASKEDFORIT, new MyDialogue(\n                new MyDialogueSentence[]\n                {\n                    new MyDialogueSentence(MyActorEnum.RESEARCH_VESSEL_CAPTAIN, MySoundCuesEnum.Dlg_ResearchVessel_1018, MyDialoguesWrapperEnum.Dlg_ResearchVessel_1018),\n                }\n            ));\n                                \n            m_dialogues.Add((int)MyDialogueEnum.RESEARCH_VESSEL_0300_FORTIFIED, new MyDialogue(\n                new MyDialogueSentence[]\n                {\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ResearchVessel_1019, MyDialoguesWrapperEnum.Dlg_ResearchVessel_1019),\n                    new MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_ResearchVessel_1020, MyDialoguesWrapperEnum.Dlg_ResearchVessel_1020),\n                    new MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_ResearchVessel_1021, MyDialoguesWrapperEnum.Dlg_ResearchVessel_1021),\n                    new MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_ResearchVessel_1022, MyDialoguesWrapperEnum.Dlg_ResearchVessel_1022),\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_ResearchVessel_1023, MyDialoguesWrapperEnum.Dlg_ResearchVessel_1023),\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_ResearchVessel_1024, MyDialoguesWrapperEnum.Dlg_ResearchVessel_1024),\n                }\n            ));\n            m_dialogues.Add((int)MyDialogueEnum.RESEARCH_VESSEL_0400_LOOKATTHIS, new MyDialogue(\n                new MyDialogueSentence[]\n                {\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ResearchVessel_1025, MyDialoguesWrapperEnum.Dlg_ResearchVessel_1025),\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_ResearchVessel_1026, MyDialoguesWrapperEnum.Dlg_ResearchVessel_1026),\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_ResearchVessel_1027, MyDialoguesWrapperEnum.Dlg_ResearchVessel_1027),\n                    new MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_ResearchVessel_1028, MyDialoguesWrapperEnum.Dlg_ResearchVessel_1028),\n                }\n            ));\n            m_dialogues.Add((int)MyDialogueEnum.RESEARCH_VESSEL_0500_FIRSTPARTS, new MyDialogue(\n                new MyDialogueSentence[]\n                {\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ResearchVessel_1029, MyDialoguesWrapperEnum.Dlg_ResearchVessel_1029),\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ResearchVessel_1030, MyDialoguesWrapperEnum.Dlg_ResearchVessel_1030),\n                    new MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_ResearchVessel_1031, MyDialoguesWrapperEnum.Dlg_ResearchVessel_1031),\n                }\n            ));\n            m_dialogues.Add((int)MyDialogueEnum.RESEARCH_VESSEL_0600_SECONDPARTS, new MyDialogue(\n                new MyDialogueSentence[]\n                {\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ResearchVessel_1032, MyDialoguesWrapperEnum.Dlg_ResearchVessel_1032),\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_ResearchVessel_1033, MyDialoguesWrapperEnum.Dlg_ResearchVessel_1033),\n                }\n            ));\n            m_dialogues.Add((int)MyDialogueEnum.RESEARCH_VESSEL_0700_THIRDPARTS, new MyDialogue(\n                new MyDialogueSentence[]\n                {\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ResearchVessel_1034, MyDialoguesWrapperEnum.Dlg_ResearchVessel_1034),\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ResearchVessel_1035, MyDialoguesWrapperEnum.Dlg_ResearchVessel_1035),\n                    new MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_ResearchVessel_1036, MyDialoguesWrapperEnum.Dlg_ResearchVessel_1036),\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_ResearchVessel_1037, MyDialoguesWrapperEnum.Dlg_ResearchVessel_1037),\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_ResearchVessel_1038, MyDialoguesWrapperEnum.Dlg_ResearchVessel_1038),\n                    new MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_ResearchVessel_1039, MyDialoguesWrapperEnum.Dlg_ResearchVessel_1039),\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_ResearchVessel_1040, MyDialoguesWrapperEnum.Dlg_ResearchVessel_1040),\n                }\n            ));\n            m_dialogues.Add((int)MyDialogueEnum.RESEARCH_VESSEL_0800_FORCEFIELDDOWN, new MyDialogue(\n                new MyDialogueSentence[]\n                {\n                    new MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_ResearchVessel_1041, MyDialoguesWrapperEnum.Dlg_ResearchVessel_1041),\n                }\n            ));\n            m_dialogues.Add((int)MyDialogueEnum.RESEARCH_VESSEL_0900_FOURTHPARTS, new MyDialogue(\n                new MyDialogueSentence[]\n                {\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ResearchVessel_1042, MyDialoguesWrapperEnum.Dlg_ResearchVessel_1042),\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ResearchVessel_1043, MyDialoguesWrapperEnum.Dlg_ResearchVessel_1043),\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_ResearchVessel_1044, MyDialoguesWrapperEnum.Dlg_ResearchVessel_1044),\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_ResearchVessel_1045, MyDialoguesWrapperEnum.Dlg_ResearchVessel_1045),\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ResearchVessel_1046, MyDialoguesWrapperEnum.Dlg_ResearchVessel_1046),\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_ResearchVessel_1047, MyDialoguesWrapperEnum.Dlg_ResearchVessel_1047),\n                    new MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_ResearchVessel_1048, MyDialoguesWrapperEnum.Dlg_ResearchVessel_1048),\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_ResearchVessel_1049, MyDialoguesWrapperEnum.Dlg_ResearchVessel_1049),\n                }\n            ));\n            m_dialogues.Add((int)MyDialogueEnum.RESEARCH_VESSEL_1000_FIRSTHUB, new MyDialogue(\n                new MyDialogueSentence[]\n                {\n                    new MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_ResearchVessel_1050, MyDialoguesWrapperEnum.Dlg_ResearchVessel_1050),\n                    new MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_ResearchVessel_1051, MyDialoguesWrapperEnum.Dlg_ResearchVessel_1051),\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ResearchVessel_1052, MyDialoguesWrapperEnum.Dlg_ResearchVessel_1052),\n                }\n            ));\n            m_dialogues.Add((int)MyDialogueEnum.RESEARCH_VESSEL_1100_SECONDHUB, new MyDialogue(\n                new MyDialogueSentence[]\n                {\n                    new MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_ResearchVessel_1053, MyDialoguesWrapperEnum.Dlg_ResearchVessel_1053),\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_ResearchVessel_1054, MyDialoguesWrapperEnum.Dlg_ResearchVessel_1054),                \n                }\n            ));\n            m_dialogues.Add((int)MyDialogueEnum.RESEARCH_VESSEL_1200_THIRDHUB, new MyDialogue(\n                new MyDialogueSentence[]\n                {\n                    new MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_ResearchVessel_1055, MyDialoguesWrapperEnum.Dlg_ResearchVessel_1055),\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_ResearchVessel_1056, MyDialoguesWrapperEnum.Dlg_ResearchVessel_1056),\n                }\n            ));\n            #endregion\n\n            #region Barths Moon 3\n\n            m_dialogues.Add((int)MyDialogueEnum.BARTHS_MOON_PLANT_0100, new MyDialogue(\n                                                                             new MyDialogueSentence[]\n                                                                                 {\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonPlant_1000, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0100),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_BarthsMoonPlant_1001, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0101),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_BarthsMoonPlant_1002, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0102),\nnew MyDialogueSentence(MyActorEnum.RAIDER_LEADER, MySoundCuesEnum.Dlg_BarthsMoonPlant_1003, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0103),\nnew MyDialogueSentence(MyActorEnum.RAIDER_NAVIGATOR, MySoundCuesEnum.Dlg_BarthsMoonPlant_1004, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0104),\nnew MyDialogueSentence(MyActorEnum.RAIDER_LEADER, MySoundCuesEnum.Dlg_BarthsMoonPlant_1005, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0105),\nnew MyDialogueSentence(MyActorEnum.RAIDER_LEADER, MySoundCuesEnum.Dlg_BarthsMoonPlant_1006, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0106),\nnew MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_BarthsMoonPlant_1007, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0107),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonPlant_1008, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0108),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_BarthsMoonPlant_1009, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0109),\n\n                                                                                 }\n                                                                             ));\n            m_dialogues.Add((int)MyDialogueEnum.BARTHS_MOON_PLANT_0200, new MyDialogue(\n                                                                 new MyDialogueSentence[]\n                                                                                 {\n                                                                                     new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonPlant_1010, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0200),\n                                                                                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_BarthsMoonPlant_1011, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0201),\n                                                                                    new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonPlant_1012, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0202),\n                                                                                    new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonPlant_1013, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0203),\n                                                                                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_BarthsMoonPlant_1014, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0204),\n                                                                                    new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonPlant_1015, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0205),\n                                                                                    new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonPlant_1016, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0206),\n                                                                                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonPlant_1017, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0207),\n                                                                                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonPlant_1018, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0208),\n                                                                                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_BarthsMoonPlant_1019, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0209),\n                                                                                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonPlant_1020, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0210),\n\n                                                                                 }\n                                                                 ));\n            m_dialogues.Add((int)MyDialogueEnum.BARTHS_MOON_PLANT_0300, new MyDialogue(\n                                                                 new MyDialogueSentence[]\n                                                                                 {\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonPlant_1021, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0300),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonPlant_1022, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0301),\nnew MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonPlant_1023, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0302),\nnew MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonPlant_1024, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0303),\nnew MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonPlant_1025, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0304),\nnew MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_BarthsMoonPlant_1026, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0305),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonPlant_1027, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0306),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonPlant_1028, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0307),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_BarthsMoonPlant_1029, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0308),\nnew MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonPlant_1030, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0309),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonPlant_1031, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0310),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_BarthsMoonPlant_1032, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0311),\n\n                                                                                 }\n                                                                 ));\n            m_dialogues.Add((int)MyDialogueEnum.BARTHS_MOON_PLANT_0400, new MyDialogue(\n                                                                 new MyDialogueSentence[]\n                                                                                 {\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonPlant_1033, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0400),\nnew MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_BarthsMoonPlant_1034, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0401),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_BarthsMoonPlant_1035, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0402),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonPlant_1036, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0403),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonPlant_1037, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0404),\n\n                                                                                 }\n                                                                 ));\n            m_dialogues.Add((int)MyDialogueEnum.BARTHS_MOON_PLANT_0500, new MyDialogue(\n                                                                 new MyDialogueSentence[]\n                                                                                 {\n                                                                                     new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_BarthsMoonPlant_1038, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0500),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonPlant_1039, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0501),\nnew MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_BarthsMoonPlant_1040, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0502),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonPlant_1041, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0503),\n\n                                                                                 }\n                                                                 ));\n            m_dialogues.Add((int)MyDialogueEnum.BARTHS_MOON_PLANT_0600, new MyDialogue(\n                                                                 new MyDialogueSentence[]\n                                                                                 {\nnew MyDialogueSentence(MyActorEnum.RAIDER_LEADER, MySoundCuesEnum.Dlg_BarthsMoonPlant_1042, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0600),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonPlant_1043, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0601),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_BarthsMoonPlant_1044, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0602),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonPlant_1045, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0603),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonPlant_1046, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0604),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_BarthsMoonPlant_1047, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0605),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonPlant_1048, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0606),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonPlant_1049, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0607),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_BarthsMoonPlant_1050, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0608),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_BarthsMoonPlant_1051, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0609),\nnew MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_BarthsMoonPlant_1052, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0610),\n\n                                                                                 }\n                                                                 ));\n            m_dialogues.Add((int)MyDialogueEnum.BARTHS_MOON_PLANT_0700, new MyDialogue(\n                                                                 new MyDialogueSentence[]\n                                                                                 {\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonPlant_1053, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0700),\n\n                                                                                 }\n                                                                 ));\n            m_dialogues.Add((int)MyDialogueEnum.BARTHS_MOON_PLANT_0800, new MyDialogue(\n                                                                 new MyDialogueSentence[]\n                                                                                 {\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonPlant_1054, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0800),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_BarthsMoonPlant_1055, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0801),\nnew MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonPlant_1056, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0802),\nnew MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonPlant_1057, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0803),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_BarthsMoonPlant_1058, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0804),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonPlant_1059, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0805),\n\n                                                                                 }\n                                                                 ));\n            m_dialogues.Add((int)MyDialogueEnum.BARTHS_MOON_PLANT_0900, new MyDialogue(\n                                                                 new MyDialogueSentence[]\n                                                                                 {\nnew MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_BarthsMoonPlant_1060, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0900),\nnew MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_BarthsMoonPlant_1061, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0901),\n\n                                                                                 }\n                                                                 ));\n            m_dialogues.Add((int)MyDialogueEnum.BARTHS_MOON_PLANT_1000, new MyDialogue(\n                                                                 new MyDialogueSentence[]\n                                                                                 {\nnew MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonPlant_1062, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1000),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonPlant_1063, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1001),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonPlant_1064, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1002),\nnew MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonPlant_1065, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1003),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_BarthsMoonPlant_1066, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1004),\nnew MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonPlant_1067, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1005),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_BarthsMoonPlant_1068, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1006),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonPlant_1069, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1007),\nnew MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonPlant_1070, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1008),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonPlant_1071, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1009),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonPlant_1072, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1010),\nnew MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonPlant_1073, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1011),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_BarthsMoonPlant_1074, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1012),\nnew MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonPlant_1075, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1013),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonPlant_1076, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1014),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonPlant_1077, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1015),\nnew MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonPlant_1078, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1016),\nnew MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonPlant_1079, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1017),\nnew MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonPlant_1080, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1018),\nnew MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonPlant_1081, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1019),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_BarthsMoonPlant_1082, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1020),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_BarthsMoonPlant_1083, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1021),\nnew MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonPlant_1084, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1022),\n\n                                                                                 }\n                                                                 ));\n            m_dialogues.Add((int)MyDialogueEnum.BARTHS_MOON_PLANT_1100, new MyDialogue(\n                                                                 new MyDialogueSentence[]\n                                                                                 {\n                                                                                     new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_BarthsMoonPlant_1085, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1100),\nnew MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonPlant_1086, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1101),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonPlant_1087, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1102),\n\n                                                                                 }\n                                                                 ));\n\n            m_dialogues.Add((int)MyDialogueEnum.BARTHS_MOON_PLANT_1200, new MyDialogue(\n                                                     new MyDialogueSentence[]\n                                                                                 {\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_BarthsMoonPlant_1088, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1200),\nnew MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonPlant_1089, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1201),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonPlant_1090, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1202),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonPlant_1091, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1203),\nnew MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonPlant_1092, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1204),\nnew MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonPlant_1093, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1205),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_BarthsMoonPlant_1094, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1206),\nnew MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonPlant_1095, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1207),\nnew MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonPlant_1096, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1208),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonPlant_1097, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1209),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonPlant_1098, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1210),\nnew MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonPlant_1099, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1211),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonPlant_1100, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1212),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_BarthsMoonPlant_1101, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1213),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_BarthsMoonPlant_1102, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1214),\nnew MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonPlant_1103, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1215),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_BarthsMoonPlant_1104, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1216),\nnew MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonPlant_1105, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1217),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_BarthsMoonPlant_1106, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1218),\nnew MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonPlant_1107, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1219),\nnew MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonPlant_1108, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1220),\nnew MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonPlant_1109, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1221),\nnew MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonPlant_1110, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1222),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonPlant_1111, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1223),\nnew MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonPlant_1112, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1224),\nnew MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonPlant_1113, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1225),\nnew MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonPlant_1114, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1226),\nnew MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonPlant_1115, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1227),\nnew MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonPlant_1116, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1228),\nnew MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonPlant_1117, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1229),\nnew MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonPlant_1118, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1230),\nnew MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonPlant_1119, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1231),\nnew MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonPlant_1120, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1232),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_BarthsMoonPlant_1121, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1233),\nnew MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonPlant_1122, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1234),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_BarthsMoonPlant_1123, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1235),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonPlant_1124, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1236),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_BarthsMoonPlant_1125, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1237),\nnew MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_BarthsMoonPlant_1126, MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1238),\n\n                                                                                 }\n                                                     ));\n            #endregion\n\n            #region Fort Valiant C\n\n            m_dialogues.Add((int)MyDialogueEnum.FORT_VALIANT_C_0100_BEGIN, new MyDialogue(\n                                                                             new MyDialogueSentence[]\n                                                                             {\n                                                                                new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_FortValiantC_1000, MyDialoguesWrapperEnum.Dlg_FortValiantC_0100),\n                                                                                new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_FortValiantC_1001, MyDialoguesWrapperEnum.Dlg_FortValiantC_0101),\n                                                                             }\n                                                                             ));\n\n\n            m_dialogues.Add((int)MyDialogueEnum.FORT_VALIANT_C_0100, new MyDialogue(\n                                                                                         new MyDialogueSentence[]\n                                                                                         {\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_FortValiantC_1002, MyDialoguesWrapperEnum.Dlg_FortValiantC_0102),\nnew MyDialogueSentence(MyActorEnum.CEDRIC, MySoundCuesEnum.Dlg_FortValiantC_1003, MyDialoguesWrapperEnum.Dlg_FortValiantC_0103),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_FortValiantC_1004, MyDialoguesWrapperEnum.Dlg_FortValiantC_0104),\nnew MyDialogueSentence(MyActorEnum.CEDRIC, MySoundCuesEnum.Dlg_FortValiantC_1005, MyDialoguesWrapperEnum.Dlg_FortValiantC_0105),\nnew MyDialogueSentence(MyActorEnum.CEDRIC, MySoundCuesEnum.Dlg_FortValiantC_1006, MyDialoguesWrapperEnum.Dlg_FortValiantC_0106),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_FortValiantC_1007, MyDialoguesWrapperEnum.Dlg_FortValiantC_0107),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_FortValiantC_1008, MyDialoguesWrapperEnum.Dlg_FortValiantC_0108),\nnew MyDialogueSentence(MyActorEnum.CEDRIC, MySoundCuesEnum.Dlg_FortValiantC_1009, MyDialoguesWrapperEnum.Dlg_FortValiantC_0109),\nnew MyDialogueSentence(MyActorEnum.CEDRIC, MySoundCuesEnum.Dlg_FortValiantC_1010, MyDialoguesWrapperEnum.Dlg_FortValiantC_0110),\n                                                                                             }\n                                                                                         ));\n            m_dialogues.Add((int)MyDialogueEnum.FORT_VALIANT_C_0200, new MyDialogue(\n                                                                                                     new MyDialogueSentence[]{\n                                                                                             new MyDialogueSentence(MyActorEnum.COUNCIL_GUARD, MySoundCuesEnum.Dlg_FortValiantC_1011, MyDialoguesWrapperEnum.Dlg_FortValiantC_0200),\nnew MyDialogueSentence(MyActorEnum.COUNCIL_GUARD, MySoundCuesEnum.Dlg_FortValiantC_1012, MyDialoguesWrapperEnum.Dlg_FortValiantC_0201),\n//new MyDialogueSentence(MyActorEnum.COUNCIL_GUARD, MySoundCuesEnum.Dlg_FortValiantC_1013, MyDialoguesWrapperEnum.Dlg_FortValiantC_0202),\n//new MyDialogueSentence(MyActorEnum.COUNCIL_GUARD, MySoundCuesEnum.Dlg_FortValiantC_1014, MyDialoguesWrapperEnum.Dlg_FortValiantC_0203),\n//new MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_FortValiantC_1015, MyDialoguesWrapperEnum.Dlg_FortValiantC_0204),\n//new MyDialogueSentence(MyActorEnum.COUNCIL_GUARD, MySoundCuesEnum.Dlg_FortValiantC_1016, MyDialoguesWrapperEnum.Dlg_FortValiantC_0205),\n//new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_FortValiantC_1017, MyDialoguesWrapperEnum.Dlg_FortValiantC_0206),\n\n                                                                                             }\n                                                                                                     ));\n            m_dialogues.Add((int)MyDialogueEnum.FORT_VALIANT_C_0300, new MyDialogue(\n                                                                                                     new MyDialogueSentence[]{\n                                                                                             new MyDialogueSentence(MyActorEnum.COUNCIL_GUARD, MySoundCuesEnum.Dlg_FortValiantC_1018, MyDialoguesWrapperEnum.Dlg_FortValiantC_0300),\nnew MyDialogueSentence(MyActorEnum.COUNCIL_GUARD, MySoundCuesEnum.Dlg_FortValiantC_1019, MyDialoguesWrapperEnum.Dlg_FortValiantC_0301),\n\n                                                                                             }\n                                                                                                     ));\n            m_dialogues.Add((int)MyDialogueEnum.FORT_VALIANT_C_0400, new MyDialogue(\n                                                                                                     new MyDialogueSentence[]{\n                                                                                             new MyDialogueSentence(MyActorEnum.PATRIARCH_DAGONET, MySoundCuesEnum.Dlg_FortValiantC_1020, MyDialoguesWrapperEnum.Dlg_FortValiantC_0400),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_FortValiantC_1021, MyDialoguesWrapperEnum.Dlg_FortValiantC_0401),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_FortValiantC_1022, MyDialoguesWrapperEnum.Dlg_FortValiantC_0402),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_FortValiantC_1023, MyDialoguesWrapperEnum.Dlg_FortValiantC_0403),\nnew MyDialogueSentence(MyActorEnum.PATRIARCH_LAMORAK, MySoundCuesEnum.Dlg_FortValiantC_1024, MyDialoguesWrapperEnum.Dlg_FortValiantC_0404),\nnew MyDialogueSentence(MyActorEnum.PATRIARCH_CARADOC, MySoundCuesEnum.Dlg_FortValiantC_1025, MyDialoguesWrapperEnum.Dlg_FortValiantC_0405),\nnew MyDialogueSentence(MyActorEnum.PATRIARCH_CARADOC, MySoundCuesEnum.Dlg_FortValiantC_1026, MyDialoguesWrapperEnum.Dlg_FortValiantC_0406),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_FortValiantC_1027, MyDialoguesWrapperEnum.Dlg_FortValiantC_0407),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_FortValiantC_1028, MyDialoguesWrapperEnum.Dlg_FortValiantC_0408),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_FortValiantC_1029, MyDialoguesWrapperEnum.Dlg_FortValiantC_0409),\nnew MyDialogueSentence(MyActorEnum.PATRIARCH_LAMORAK, MySoundCuesEnum.Dlg_FortValiantC_1030, MyDialoguesWrapperEnum.Dlg_FortValiantC_0410),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_FortValiantC_1031, MyDialoguesWrapperEnum.Dlg_FortValiantC_0411),\nnew MyDialogueSentence(MyActorEnum.PATRIARCH_CARADOC, MySoundCuesEnum.Dlg_FortValiantC_1032, MyDialoguesWrapperEnum.Dlg_FortValiantC_0412),\n\n                                                                                             }\n                                                                                                     ));\n            m_dialogues.Add((int)MyDialogueEnum.FORT_VALIANT_C_0500, new MyDialogue(\n                                                                                                     new MyDialogueSentence[]{\n                                                                                             new MyDialogueSentence(MyActorEnum.UNKNOWN , MySoundCuesEnum.Dlg_FortValiantC_1033, MyDialoguesWrapperEnum.Dlg_FortValiantC_0500),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_FortValiantC_1034, MyDialoguesWrapperEnum.Dlg_FortValiantC_0501),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_FortValiantC_1035, MyDialoguesWrapperEnum.Dlg_FortValiantC_0502),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_FortValiantC_1036, MyDialoguesWrapperEnum.Dlg_FortValiantC_0503),\n\n                                                                                             }\n                                                                                                     ));\n            m_dialogues.Add((int)MyDialogueEnum.FORT_VALIANT_C_0600, new MyDialogue(\n                                                                                                     new MyDialogueSentence[]{\nnew MyDialogueSentence(MyActorEnum.SIR_GERAINT, MySoundCuesEnum.Dlg_FortValiantC_1037, MyDialoguesWrapperEnum.Dlg_FortValiantC_0600),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_FortValiantC_1038, MyDialoguesWrapperEnum.Dlg_FortValiantC_0601),\nnew MyDialogueSentence(MyActorEnum.SIR_GERAINT, MySoundCuesEnum.Dlg_FortValiantC_1039, MyDialoguesWrapperEnum.Dlg_FortValiantC_0602),\nnew MyDialogueSentence(MyActorEnum.SIR_GERAINT, MySoundCuesEnum.Dlg_FortValiantC_1040, MyDialoguesWrapperEnum.Dlg_FortValiantC_0603),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_FortValiantC_1041, MyDialoguesWrapperEnum.Dlg_FortValiantC_0604),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_FortValiantC_1042, MyDialoguesWrapperEnum.Dlg_FortValiantC_0605),\nnew MyDialogueSentence(MyActorEnum.SIR_GERAINT, MySoundCuesEnum.Dlg_FortValiantC_1043, MyDialoguesWrapperEnum.Dlg_FortValiantC_0606),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_FortValiantC_1044, MyDialoguesWrapperEnum.Dlg_FortValiantC_0607),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_FortValiantC_1045, MyDialoguesWrapperEnum.Dlg_FortValiantC_0608),\nnew MyDialogueSentence(MyActorEnum.SIR_GERAINT, MySoundCuesEnum.Dlg_FortValiantC_1046, MyDialoguesWrapperEnum.Dlg_FortValiantC_0609),\nnew MyDialogueSentence(MyActorEnum.SIR_GERAINT, MySoundCuesEnum.Dlg_FortValiantC_1047, MyDialoguesWrapperEnum.Dlg_FortValiantC_0610),\nnew MyDialogueSentence(MyActorEnum.SIR_GERAINT, MySoundCuesEnum.Dlg_FortValiantC_1048, MyDialoguesWrapperEnum.Dlg_FortValiantC_0611),\nnew MyDialogueSentence(MyActorEnum.SIR_GERAINT, MySoundCuesEnum.Dlg_FortValiantC_1049, MyDialoguesWrapperEnum.Dlg_FortValiantC_0612),\nnew MyDialogueSentence(MyActorEnum.SIR_GERAINT, MySoundCuesEnum.Dlg_FortValiantC_1050, MyDialoguesWrapperEnum.Dlg_FortValiantC_0613),\nnew MyDialogueSentence(MyActorEnum.SIR_GERAINT, MySoundCuesEnum.Dlg_FortValiantC_1051, MyDialoguesWrapperEnum.Dlg_FortValiantC_0614),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_FortValiantC_1052, MyDialoguesWrapperEnum.Dlg_FortValiantC_0615),\nnew MyDialogueSentence(MyActorEnum.SIR_GERAINT, MySoundCuesEnum.Dlg_FortValiantC_1053, MyDialoguesWrapperEnum.Dlg_FortValiantC_0616),\nnew MyDialogueSentence(MyActorEnum.SIR_GERAINT, MySoundCuesEnum.Dlg_FortValiantC_1054, MyDialoguesWrapperEnum.Dlg_FortValiantC_0617),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_FortValiantC_1055, MyDialoguesWrapperEnum.Dlg_FortValiantC_0618),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_FortValiantC_1056, MyDialoguesWrapperEnum.Dlg_FortValiantC_0619),\nnew MyDialogueSentence(MyActorEnum.SIR_GERAINT, MySoundCuesEnum.Dlg_FortValiantC_1057, MyDialoguesWrapperEnum.Dlg_FortValiantC_0620),\nnew MyDialogueSentence(MyActorEnum.SIR_GERAINT, MySoundCuesEnum.Dlg_FortValiantC_1058, MyDialoguesWrapperEnum.Dlg_FortValiantC_0621),\nnew MyDialogueSentence(MyActorEnum.SIR_GERAINT, MySoundCuesEnum.Dlg_FortValiantC_1059, MyDialoguesWrapperEnum.Dlg_FortValiantC_0622),\nnew MyDialogueSentence(MyActorEnum.SIR_GERAINT, MySoundCuesEnum.Dlg_FortValiantC_1060, MyDialoguesWrapperEnum.Dlg_FortValiantC_0623),\nnew MyDialogueSentence(MyActorEnum.SIR_GERAINT, MySoundCuesEnum.Dlg_FortValiantC_1061, MyDialoguesWrapperEnum.Dlg_FortValiantC_0624),\n//new MyDialogueSentence(MyActorEnum.SIR_GERAINT, MySoundCuesEnum.Dlg_FortValiantC_1062, MyDialoguesWrapperEnum.Dlg_FortValiantC_0625),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_FortValiantC_1063, MyDialoguesWrapperEnum.Dlg_FortValiantC_0626),\nnew MyDialogueSentence(MyActorEnum.SIR_GERAINT, MySoundCuesEnum.Dlg_FortValiantC_1064, MyDialoguesWrapperEnum.Dlg_FortValiantC_0627),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_FortValiantC_1065, MyDialoguesWrapperEnum.Dlg_FortValiantC_0628),\n\n                                                                                             }\n                                                                                                     ));\n            m_dialogues.Add((int)MyDialogueEnum.FORT_VALIANT_C_0700, new MyDialogue(\n                new MyDialogueSentence[]{\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_FortValiantC_1066, MyDialoguesWrapperEnum.Dlg_FortValiantC_0700),\n                    new MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_FortValiantC_1067, MyDialoguesWrapperEnum.Dlg_FortValiantC_0701),\n                }\n            ));\n            m_dialogues.Add((int)MyDialogueEnum.FORT_VALIANT_C_0800, new MyDialogue(\n                new MyDialogueSentence[]{\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_FortValiantC_1068, MyDialoguesWrapperEnum.Dlg_FortValiantC_0800),\n                }\n            ));\n            m_dialogues.Add((int)MyDialogueEnum.FORT_VALIANT_C_0900, new MyDialogue(\n                new MyDialogueSentence[]{\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_FortValiantC_1069, MyDialoguesWrapperEnum.Dlg_FortValiantC_0900),\n                }\n            ));\n            m_dialogues.Add((int)MyDialogueEnum.FORT_VALIANT_C_1000, new MyDialogue(\n                new MyDialogueSentence[]{\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_FortValiantC_1070, MyDialoguesWrapperEnum.Dlg_FortValiantC_1000),\n                }\n            ));\n            //m_dialogues.Add((int)MyDialogueEnum.FORT_VALIANT_C_1100, new MyDialogue(\n            //    new MyDialogueSentence[] {\n            //        new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_FortValiantC_1071, MyDialoguesWrapperEnum.Dlg_FortValiantC_1100),\n            //    }\n            //));\n            m_dialogues.Add((int)MyDialogueEnum.FORT_VALIANT_C_1200, new MyDialogue(\n                new MyDialogueSentence[] {\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_FortValiantC_1072, MyDialoguesWrapperEnum.Dlg_FortValiantC_1200),\n                }\n            ));\n            m_dialogues.Add((int)MyDialogueEnum.FORT_VALIANT_C_1300, new MyDialogue(\n                new MyDialogueSentence[] {\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_FortValiantC_1073, MyDialoguesWrapperEnum.Dlg_FortValiantC_1300),\n                }\n            ));\n            m_dialogues.Add((int)MyDialogueEnum.FORT_VALIANT_C_1400, new MyDialogue(\n                new MyDialogueSentence[] {\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_FortValiantC_1074, MyDialoguesWrapperEnum.Dlg_FortValiantC_1400),\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_FortValiantC_1075, MyDialoguesWrapperEnum.Dlg_FortValiantC_1401),\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_FortValiantC_1076, MyDialoguesWrapperEnum.Dlg_FortValiantC_1402),\n                }\n            ));\n            m_dialogues.Add((int)MyDialogueEnum.FORT_VALIANT_C_1500, new MyDialogue(\n                new MyDialogueSentence[] {\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_FortValiantC_1077, MyDialoguesWrapperEnum.Dlg_FortValiantC_1500),\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_FortValiantC_1078, MyDialoguesWrapperEnum.Dlg_FortValiantC_1501),\n                }\n            ));\n            m_dialogues.Add((int)MyDialogueEnum.FORT_VALIANT_C_1600, new MyDialogue(\n                new MyDialogueSentence[] {\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_FortValiantC_1079, MyDialoguesWrapperEnum.Dlg_FortValiantC_1600),\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_FortValiantC_1080, MyDialoguesWrapperEnum.Dlg_FortValiantC_1601),\n                }\n            ));\n            m_dialogues.Add((int)MyDialogueEnum.FORT_VALIANT_C_1700, new MyDialogue(\n                                                                                                     new MyDialogueSentence[]{\n                                                                                             new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_FortValiantC_1081, MyDialoguesWrapperEnum.Dlg_FortValiantC_1700),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_FortValiantC_1082, MyDialoguesWrapperEnum.Dlg_FortValiantC_1701),\n\n                                                                                             }\n                                                                                                     ));\n            m_dialogues.Add((int)MyDialogueEnum.FORT_VALIANT_C_1800, new MyDialogue(\n                                                                                                     new MyDialogueSentence[]{\n                                                                                             new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_FortValiantC_1083, MyDialoguesWrapperEnum.Dlg_FortValiantC_1800),\n\n                                                                                             }\n                                                                                                     ));\n            m_dialogues.Add((int)MyDialogueEnum.FORT_VALIANT_C_1900, new MyDialogue(\n                                                                                                     new MyDialogueSentence[]{\n                                                                                             new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_FortValiantC_1084, MyDialoguesWrapperEnum.Dlg_FortValiantC_1900),\n\n                                                                                             }\n                                                                                                     ));\n            m_dialogues.Add((int)MyDialogueEnum.FORT_VALIANT_C_2000, new MyDialogue(\n                                                                                                     new MyDialogueSentence[]{\n                                                                                             new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_FortValiantC_1085, MyDialoguesWrapperEnum.Dlg_FortValiantC_2000),\n\n                                                                                             }\n                                                                                                     ));\n            m_dialogues.Add((int)MyDialogueEnum.FORT_VALIANT_C_2100, new MyDialogue(\n                                                                                                     new MyDialogueSentence[]{\n//new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_FortValiantC_1086, MyDialoguesWrapperEnum.Dlg_FortValiantC_2100),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_FortValiantC_1087, MyDialoguesWrapperEnum.Dlg_FortValiantC_2101),\n\n                                                                                             }\n                                                                                                     ));\n            m_dialogues.Add((int)MyDialogueEnum.FORT_VALIANT_C_2200, new MyDialogue(\n                                                                                                     new MyDialogueSentence[]{\n                                                                        \n\n                                                                                             }\n                                                                                                     ));\n            m_dialogues.Add((int)MyDialogueEnum.FORT_VALIANT_C_2300, new MyDialogue(\n                                                                                                     new MyDialogueSentence[]{\n                                                                                                         new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_FortValiantC_1088, MyDialoguesWrapperEnum.Dlg_FortValiantC_2201),\n                                                                                             new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_FortValiantC_1089, MyDialoguesWrapperEnum.Dlg_FortValiantC_2300),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_FortValiantC_1090, MyDialoguesWrapperEnum.Dlg_FortValiantC_2301),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_FortValiantC_1091, MyDialoguesWrapperEnum.Dlg_FortValiantC_2302),\nnew MyDialogueSentence(MyActorEnum.SIR_GERAINT, MySoundCuesEnum.Dlg_FortValiantC_1092, MyDialoguesWrapperEnum.Dlg_FortValiantC_2303),\nnew MyDialogueSentence(MyActorEnum.SIR_GERAINT, MySoundCuesEnum.Dlg_FortValiantC_1093, MyDialoguesWrapperEnum.Dlg_FortValiantC_2304),\nnew MyDialogueSentence(MyActorEnum.SIR_GERAINT, MySoundCuesEnum.Dlg_FortValiantC_1094, MyDialoguesWrapperEnum.Dlg_FortValiantC_2305),\n\n                                                                                             }\n                                                                                                     ));\n            m_dialogues.Add((int)MyDialogueEnum.FORT_VALIANT_C_2400, new MyDialogue(\n                                                                                                     new MyDialogueSentence[]{\n                                                                                             new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_FortValiantC_1095, MyDialoguesWrapperEnum.Dlg_FortValiantC_2400),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_FortValiantC_1096, MyDialoguesWrapperEnum.Dlg_FortValiantC_2401),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_FortValiantC_1097, MyDialoguesWrapperEnum.Dlg_FortValiantC_2402),\nnew MyDialogueSentence(MyActorEnum.SIR_GERAINT, MySoundCuesEnum.Dlg_FortValiantC_1098, MyDialoguesWrapperEnum.Dlg_FortValiantC_2403),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_FortValiantC_1099, MyDialoguesWrapperEnum.Dlg_FortValiantC_2404),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_FortValiantC_1100, MyDialoguesWrapperEnum.Dlg_FortValiantC_2405),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_FortValiantC_1101, MyDialoguesWrapperEnum.Dlg_FortValiantC_2406),\nnew MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_FortValiantC_1102, MyDialoguesWrapperEnum.Dlg_FortValiantC_2407),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_FortValiantC_1103, MyDialoguesWrapperEnum.Dlg_FortValiantC_2408),\n\n                                                                                             }\n                                                                                                     ));\n            m_dialogues.Add((int)MyDialogueEnum.FORT_VALIANT_C_2500, new MyDialogue(\n                                                                                                     new MyDialogueSentence[]{\n                                                                                             new MyDialogueSentence(MyActorEnum.COUNCIL_GUARD, MySoundCuesEnum.Dlg_FortValiantC_1104, MyDialoguesWrapperEnum.Dlg_FortValiantC_2500),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_FortValiantC_1105, MyDialoguesWrapperEnum.Dlg_FortValiantC_2501),\nnew MyDialogueSentence(MyActorEnum.COUNCIL_GUARD, MySoundCuesEnum.Dlg_FortValiantC_1106, MyDialoguesWrapperEnum.Dlg_FortValiantC_2502),\n\n                                                                                             }\n                                                                                                     ));\n            m_dialogues.Add((int)MyDialogueEnum.FORT_VALIANT_C_2600, new MyDialogue(\n                                                                                                     new MyDialogueSentence[]{\n                                                                                             new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_FortValiantC_1107, MyDialoguesWrapperEnum.Dlg_FortValiantC_2600),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_FortValiantC_1108, MyDialoguesWrapperEnum.Dlg_FortValiantC_2601),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_FortValiantC_1109, MyDialoguesWrapperEnum.Dlg_FortValiantC_2602),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_FortValiantC_1110, MyDialoguesWrapperEnum.Dlg_FortValiantC_2603),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_FortValiantC_1111, MyDialoguesWrapperEnum.Dlg_FortValiantC_2604),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_FortValiantC_1112, MyDialoguesWrapperEnum.Dlg_FortValiantC_2605),\nnew MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_FortValiantC_1113, MyDialoguesWrapperEnum.Dlg_FortValiantC_2606),\nnew MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_FortValiantC_1114, MyDialoguesWrapperEnum.Dlg_FortValiantC_2607),\nnew MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_FortValiantC_1115, MyDialoguesWrapperEnum.Dlg_FortValiantC_2608),\nnew MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_FortValiantC_1116, MyDialoguesWrapperEnum.Dlg_FortValiantC_2609),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_FortValiantC_1117, MyDialoguesWrapperEnum.Dlg_FortValiantC_2610),\nnew MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_FortValiantC_1118, MyDialoguesWrapperEnum.Dlg_FortValiantC_2611),\nnew MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_FortValiantC_1119, MyDialoguesWrapperEnum.Dlg_FortValiantC_2612),\nnew MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_FortValiantC_1120, MyDialoguesWrapperEnum.Dlg_FortValiantC_2613),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_FortValiantC_1121, MyDialoguesWrapperEnum.Dlg_FortValiantC_2614),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_FortValiantC_1122, MyDialoguesWrapperEnum.Dlg_FortValiantC_2615),\nnew MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_FortValiantC_1123, MyDialoguesWrapperEnum.Dlg_FortValiantC_2616),\nnew MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_FortValiantC_1124, MyDialoguesWrapperEnum.Dlg_FortValiantC_2617),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_FortValiantC_1125, MyDialoguesWrapperEnum.Dlg_FortValiantC_2618),\nnew MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_FortValiantC_1126, MyDialoguesWrapperEnum.Dlg_FortValiantC_2619),\nnew MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_FortValiantC_1127, MyDialoguesWrapperEnum.Dlg_FortValiantC_2620),\nnew MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_FortValiantC_1128, MyDialoguesWrapperEnum.Dlg_FortValiantC_2621),\nnew MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_FortValiantC_1129, MyDialoguesWrapperEnum.Dlg_FortValiantC_2622),\nnew MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_FortValiantC_1130, MyDialoguesWrapperEnum.Dlg_FortValiantC_2623),\n//new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_FortValiantC_1131, MyDialoguesWrapperEnum.Dlg_FortValiantC_2624),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_FortValiantC_1132, MyDialoguesWrapperEnum.Dlg_FortValiantC_2625),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_FortValiantC_1133, MyDialoguesWrapperEnum.Dlg_FortValiantC_2626),\nnew MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_FortValiantC_1134, MyDialoguesWrapperEnum.Dlg_FortValiantC_2627),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_FortValiantC_1135, MyDialoguesWrapperEnum.Dlg_FortValiantC_2628),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_FortValiantC_1136, MyDialoguesWrapperEnum.Dlg_FortValiantC_2629),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_FortValiantC_1137, MyDialoguesWrapperEnum.Dlg_FortValiantC_2630),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_FortValiantC_1138, MyDialoguesWrapperEnum.Dlg_FortValiantC_2631),\n\n                                                                                             }\n                                                                                                     ));\n\n            #endregion\n\n            #region Alien Gate\n            m_dialogues.Add((int)MyDialogueEnum.ALIEN_GATE_0100, new MyDialogue(\n                                                                                     new MyDialogueSentence[]{\n                                                                                             new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_AlienGate_1000, MyDialoguesWrapperEnum.Dlg_AlienGate_0100),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_AlienGate_1001, MyDialoguesWrapperEnum.Dlg_AlienGate_0101),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_AlienGate_1002, MyDialoguesWrapperEnum.Dlg_AlienGate_0102),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_AlienGate_1003, MyDialoguesWrapperEnum.Dlg_AlienGate_0103),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_AlienGate_1004, MyDialoguesWrapperEnum.Dlg_AlienGate_0104),\n\n                                                                                             }\n                                                                                     ));\n            m_dialogues.Add((int)MyDialogueEnum.ALIEN_GATE_0200, new MyDialogue(\n                                                                                                     new MyDialogueSentence[]{\n                                                                                             new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_AlienGate_1005, MyDialoguesWrapperEnum.Dlg_AlienGate_0200),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_AlienGate_1006, MyDialoguesWrapperEnum.Dlg_AlienGate_0201),\n\n                                                                                             }\n                                                                                                     ));\n            m_dialogues.Add((int)MyDialogueEnum.ALIEN_GATE_0300, new MyDialogue(\n                                                                                                     new MyDialogueSentence[]{\n                                                                                             new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_AlienGate_1007, MyDialoguesWrapperEnum.Dlg_AlienGate_0300),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_AlienGate_1008, MyDialoguesWrapperEnum.Dlg_AlienGate_0301),\n\n                                                                                             }\n                                                                                                     ));\n            m_dialogues.Add((int)MyDialogueEnum.ALIEN_GATE_0400, new MyDialogue(\n                                                                                                     new MyDialogueSentence[]{\n                                                                                             new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_AlienGate_1009, MyDialoguesWrapperEnum.Dlg_AlienGate_0400),\nnew MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_AlienGate_1010, MyDialoguesWrapperEnum.Dlg_AlienGate_0401),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_AlienGate_1011, MyDialoguesWrapperEnum.Dlg_AlienGate_0402),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_AlienGate_1012, MyDialoguesWrapperEnum.Dlg_AlienGate_0403),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_AlienGate_1013, MyDialoguesWrapperEnum.Dlg_AlienGate_0404),\n\n                                                                                             }\n                                                                                                     ));\n            m_dialogues.Add((int)MyDialogueEnum.ALIEN_GATE_0500, new MyDialogue(\n                                                                                                     new MyDialogueSentence[]{\n                                                                                             new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_AlienGate_1014, MyDialoguesWrapperEnum.Dlg_AlienGate_0500),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_AlienGate_1015, MyDialoguesWrapperEnum.Dlg_AlienGate_0501),\nnew MyDialogueSentence(MyActorEnum.FRANCIS_REEF, MySoundCuesEnum.Dlg_AlienGate_1016, MyDialoguesWrapperEnum.Dlg_AlienGate_0502),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_AlienGate_1017, MyDialoguesWrapperEnum.Dlg_AlienGate_0503),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_AlienGate_1018, MyDialoguesWrapperEnum.Dlg_AlienGate_0504),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_AlienGate_1019, MyDialoguesWrapperEnum.Dlg_AlienGate_0505),\nnew MyDialogueSentence(MyActorEnum.FRANCIS_REEF, MySoundCuesEnum.Dlg_AlienGate_1020, MyDialoguesWrapperEnum.Dlg_AlienGate_0506),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_AlienGate_1021, MyDialoguesWrapperEnum.Dlg_AlienGate_0507),\nnew MyDialogueSentence(MyActorEnum.FRANCIS_REEF, MySoundCuesEnum.Dlg_AlienGate_1022, MyDialoguesWrapperEnum.Dlg_AlienGate_0508),\nnew MyDialogueSentence(MyActorEnum.FRANCIS_REEF, MySoundCuesEnum.Dlg_AlienGate_1023, MyDialoguesWrapperEnum.Dlg_AlienGate_0509),\nnew MyDialogueSentence(MyActorEnum.FRANCIS_REEF, MySoundCuesEnum.Dlg_AlienGate_1024, MyDialoguesWrapperEnum.Dlg_AlienGate_0510),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_AlienGate_1025, MyDialoguesWrapperEnum.Dlg_AlienGate_0511),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_AlienGate_1026, MyDialoguesWrapperEnum.Dlg_AlienGate_0512),\nnew MyDialogueSentence(MyActorEnum.FRANCIS_REEF, MySoundCuesEnum.Dlg_AlienGate_1027, MyDialoguesWrapperEnum.Dlg_AlienGate_0513),\nnew MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_AlienGate_1028, MyDialoguesWrapperEnum.Dlg_AlienGate_0514),\nnew MyDialogueSentence(MyActorEnum.FRANCIS_REEF, MySoundCuesEnum.Dlg_AlienGate_1029, MyDialoguesWrapperEnum.Dlg_AlienGate_0515),\nnew MyDialogueSentence(MyActorEnum.FRANCIS_REEF, MySoundCuesEnum.Dlg_AlienGate_1030, MyDialoguesWrapperEnum.Dlg_AlienGate_0516),\nnew MyDialogueSentence(MyActorEnum.FRANCIS_REEF, MySoundCuesEnum.Dlg_AlienGate_1031, MyDialoguesWrapperEnum.Dlg_AlienGate_0517),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_AlienGate_1032, MyDialoguesWrapperEnum.Dlg_AlienGate_0518),\nnew MyDialogueSentence(MyActorEnum.FRANCIS_REEF, MySoundCuesEnum.Dlg_AlienGate_1033, MyDialoguesWrapperEnum.Dlg_AlienGate_0519),\nnew MyDialogueSentence(MyActorEnum.FRANCIS_REEF, MySoundCuesEnum.Dlg_AlienGate_1034, MyDialoguesWrapperEnum.Dlg_AlienGate_0520),\nnew MyDialogueSentence(MyActorEnum.FRANCIS_REEF, MySoundCuesEnum.Dlg_AlienGate_1035, MyDialoguesWrapperEnum.Dlg_AlienGate_0521),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_AlienGate_1036, MyDialoguesWrapperEnum.Dlg_AlienGate_0522),\nnew MyDialogueSentence(MyActorEnum.FRANCIS_REEF, MySoundCuesEnum.Dlg_AlienGate_1037, MyDialoguesWrapperEnum.Dlg_AlienGate_0523),\nnew MyDialogueSentence(MyActorEnum.FRANCIS_REEF, MySoundCuesEnum.Dlg_AlienGate_1038, MyDialoguesWrapperEnum.Dlg_AlienGate_0524),\nnew MyDialogueSentence(MyActorEnum.FRANCIS_REEF, MySoundCuesEnum.Dlg_AlienGate_1038_2, MyDialoguesWrapperEnum.Dlg_AlienGate_0524_2),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_AlienGate_1039, MyDialoguesWrapperEnum.Dlg_AlienGate_0525),\nnew MyDialogueSentence(MyActorEnum.FRANCIS_REEF, MySoundCuesEnum.Dlg_AlienGate_1040, MyDialoguesWrapperEnum.Dlg_AlienGate_0526),\nnew MyDialogueSentence(MyActorEnum.FRANCIS_REEF, MySoundCuesEnum.Dlg_AlienGate_1041, MyDialoguesWrapperEnum.Dlg_AlienGate_0527),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_AlienGate_1042, MyDialoguesWrapperEnum.Dlg_AlienGate_0528),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_AlienGate_1043, MyDialoguesWrapperEnum.Dlg_AlienGate_0529),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_AlienGate_1044, MyDialoguesWrapperEnum.Dlg_AlienGate_0530),\nnew MyDialogueSentence(MyActorEnum.FRANCIS_REEF, MySoundCuesEnum.Dlg_AlienGate_1045, MyDialoguesWrapperEnum.Dlg_AlienGate_0531),\nnew MyDialogueSentence(MyActorEnum.FRANCIS_REEF, MySoundCuesEnum.Dlg_AlienGate_1046, MyDialoguesWrapperEnum.Dlg_AlienGate_0532),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_AlienGate_1047, MyDialoguesWrapperEnum.Dlg_AlienGate_0533),\nnew MyDialogueSentence(MyActorEnum.FRANCIS_REEF, MySoundCuesEnum.Dlg_AlienGate_1048, MyDialoguesWrapperEnum.Dlg_AlienGate_0534),\nnew MyDialogueSentence(MyActorEnum.FRANCIS_REEF, MySoundCuesEnum.Dlg_AlienGate_1049, MyDialoguesWrapperEnum.Dlg_AlienGate_0535),\nnew MyDialogueSentence(MyActorEnum.FRANCIS_REEF, MySoundCuesEnum.Dlg_AlienGate_1050, MyDialoguesWrapperEnum.Dlg_AlienGate_0536),\nnew MyDialogueSentence(MyActorEnum.FRANCIS_REEF, MySoundCuesEnum.Dlg_AlienGate_1051, MyDialoguesWrapperEnum.Dlg_AlienGate_0537),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_AlienGate_1052, MyDialoguesWrapperEnum.Dlg_AlienGate_0538),\nnew MyDialogueSentence(MyActorEnum.FRANCIS_REEF, MySoundCuesEnum.Dlg_AlienGate_1053, MyDialoguesWrapperEnum.Dlg_AlienGate_0539),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_AlienGate_1054, MyDialoguesWrapperEnum.Dlg_AlienGate_0540),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_AlienGate_1055, MyDialoguesWrapperEnum.Dlg_AlienGate_0541),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_AlienGate_1056, MyDialoguesWrapperEnum.Dlg_AlienGate_0542),\nnew MyDialogueSentence(MyActorEnum.FRANCIS_REEF, MySoundCuesEnum.Dlg_AlienGate_1057, MyDialoguesWrapperEnum.Dlg_AlienGate_0543),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_AlienGate_1058, MyDialoguesWrapperEnum.Dlg_AlienGate_0544),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_AlienGate_1059, MyDialoguesWrapperEnum.Dlg_AlienGate_0545),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_AlienGate_1060, MyDialoguesWrapperEnum.Dlg_AlienGate_0546),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_AlienGate_1061, MyDialoguesWrapperEnum.Dlg_AlienGate_0547),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_AlienGate_1062, MyDialoguesWrapperEnum.Dlg_AlienGate_0548),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_AlienGate_1063, MyDialoguesWrapperEnum.Dlg_AlienGate_0549),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_AlienGate_1064, MyDialoguesWrapperEnum.Dlg_AlienGate_0550),\n\n                                                                                             }\n                                                                                                     ));\n            m_dialogues.Add((int)MyDialogueEnum.ALIEN_GATE_0600, new MyDialogue(\n                                                                                                     new MyDialogueSentence[]{\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_AlienGate_1065, MyDialoguesWrapperEnum.Dlg_AlienGate_0600),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_AlienGate_1066, MyDialoguesWrapperEnum.Dlg_AlienGate_0601),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_AlienGate_1067, MyDialoguesWrapperEnum.Dlg_AlienGate_0602),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_AlienGate_1067_2, MyDialoguesWrapperEnum.Dlg_AlienGate_0602_2),\nnew MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_AlienGate_1068, MyDialoguesWrapperEnum.Dlg_AlienGate_0603),\nnew MyDialogueSentence(MyActorEnum.FRANCIS_REEF, MySoundCuesEnum.Dlg_AlienGate_1069, MyDialoguesWrapperEnum.Dlg_AlienGate_0604),\n\n                                                                                             }\n                                                                                                     ));\n            m_dialogues.Add((int)MyDialogueEnum.ALIEN_GATE_0700, new MyDialogue(\n                                                                                                     new MyDialogueSentence[]{\n                                                                                             new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_AlienGate_1070, MyDialoguesWrapperEnum.Dlg_AlienGate_0700),\n\n\n                                                                                             }\n                                                                                                     ));\n            m_dialogues.Add((int)MyDialogueEnum.ALIEN_GATE_0800, new MyDialogue(\n                                                                                                     new MyDialogueSentence[]{\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_AlienGate_1071, MyDialoguesWrapperEnum.Dlg_AlienGate_0800),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_AlienGate_1072, MyDialoguesWrapperEnum.Dlg_AlienGate_0801),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_AlienGate_1073, MyDialoguesWrapperEnum.Dlg_AlienGate_0802),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_AlienGate_1074, MyDialoguesWrapperEnum.Dlg_AlienGate_0803),\n\n\n\n                                                                                             }\n                                                                                         ));\n\n\nm_dialogues.Add((int)MyDialogueEnum.ALIEN_GATE_0800B, new MyDialogue(\n                                                                             new MyDialogueSentence[]{\n\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_AlienGate_1075, MyDialoguesWrapperEnum.Dlg_AlienGate_0804),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_AlienGate_1076, MyDialoguesWrapperEnum.Dlg_AlienGate_0805),\n\n\n                                                                                             }\n                                                                             ));\n\n\nm_dialogues.Add((int)MyDialogueEnum.ALIEN_GATE_0900, new MyDialogue(\n                                                                                         new MyDialogueSentence[]{\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_AlienGate_1077, MyDialoguesWrapperEnum.Dlg_AlienGate_0900),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_AlienGate_1078, MyDialoguesWrapperEnum.Dlg_AlienGate_0901),\nnew MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_AlienGate_1079, MyDialoguesWrapperEnum.Dlg_AlienGate_0902),\nnew MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_AlienGate_1080, MyDialoguesWrapperEnum.Dlg_AlienGate_0903),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_AlienGate_1081, MyDialoguesWrapperEnum.Dlg_AlienGate_0904),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_AlienGate_1082, MyDialoguesWrapperEnum.Dlg_AlienGate_0905),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_AlienGate_1083, MyDialoguesWrapperEnum.Dlg_AlienGate_0906),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_AlienGate_1084, MyDialoguesWrapperEnum.Dlg_AlienGate_0907),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_AlienGate_1085, MyDialoguesWrapperEnum.Dlg_AlienGate_0908),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_AlienGate_1086, MyDialoguesWrapperEnum.Dlg_AlienGate_0909),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_AlienGate_1087, MyDialoguesWrapperEnum.Dlg_AlienGate_0910),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_AlienGate_1088, MyDialoguesWrapperEnum.Dlg_AlienGate_0911),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_AlienGate_1089, MyDialoguesWrapperEnum.Dlg_AlienGate_0912),\nnew MyDialogueSentence(MyActorEnum.EVERYONE, MySoundCuesEnum.Dlg_AlienGate_1090, MyDialoguesWrapperEnum.Dlg_AlienGate_0913),\n\n\n                                                                                             }\n                                                                                                     ));\n            m_dialogues.Add((int)MyDialogueEnum.ALIEN_GATE_1000, new MyDialogue(\n                                                                                                     new MyDialogueSentence[]{\n          new MyDialogueSentence(MyActorEnum.RUSSIAN_GENERAL, MySoundCuesEnum.Dlg_AlienGate_1091, MyDialoguesWrapperEnum.Dlg_AlienGate_1000),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_AlienGate_1092, MyDialoguesWrapperEnum.Dlg_AlienGate_1001),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_AlienGate_1093, MyDialoguesWrapperEnum.Dlg_AlienGate_1002),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_AlienGate_1094, MyDialoguesWrapperEnum.Dlg_AlienGate_1003),\n\n\n                                                                                             }\n                                                                                                     ));\n            m_dialogues.Add((int)MyDialogueEnum.ALIEN_GATE_1100, new MyDialogue(\n                                                                                                     new MyDialogueSentence[]{\nnew MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_AlienGate_1095, MyDialoguesWrapperEnum.Dlg_AlienGate_1100),\n\n\n\n                                                                                             }\n                                                                                                     ));\n            m_dialogues.Add((int)MyDialogueEnum.ALIEN_GATE_1200, new MyDialogue(\n                                                                                                     new MyDialogueSentence[]{\nnew MyDialogueSentence(MyActorEnum.RUSSIAN_GENERAL, MySoundCuesEnum.Dlg_AlienGate_1096, MyDialoguesWrapperEnum.Dlg_AlienGate_1200),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_AlienGate_1097, MyDialoguesWrapperEnum.Dlg_AlienGate_1201),\nnew MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_AlienGate_1098, MyDialoguesWrapperEnum.Dlg_AlienGate_1202),\nnew MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_AlienGate_1099, MyDialoguesWrapperEnum.Dlg_AlienGate_1203),\nnew MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_AlienGate_1100, MyDialoguesWrapperEnum.Dlg_AlienGate_1204),\n\n                                                                                             }\n                                                                                                     ));\n            m_dialogues.Add((int)MyDialogueEnum.ALIEN_GATE_1300, new MyDialogue(\n                                                                                                     new MyDialogueSentence[]{\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_AlienGate_1101, MyDialoguesWrapperEnum.Dlg_AlienGate_1300),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_AlienGate_1102, MyDialoguesWrapperEnum.Dlg_AlienGate_1301),\nnew MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_AlienGate_1103, MyDialoguesWrapperEnum.Dlg_AlienGate_1302),\n\n\n\n                                                                                             }\n                                                                                                     ));\n            m_dialogues.Add((int)MyDialogueEnum.ALIEN_GATE_1400, new MyDialogue(\n                                                                                                     new MyDialogueSentence[]{\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_AlienGate_1104, MyDialoguesWrapperEnum.Dlg_AlienGate_1400),\n\n\n                                                                                             }\n                                                                                                     ));\n            m_dialogues.Add((int)MyDialogueEnum.ALIEN_GATE_1500, new MyDialogue(\n                                                                                                     new MyDialogueSentence[]{\nnew MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_AlienGate_1105, MyDialoguesWrapperEnum.Dlg_AlienGate_1500),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_AlienGate_1106, MyDialoguesWrapperEnum.Dlg_AlienGate_1501),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_AlienGate_1107, MyDialoguesWrapperEnum.Dlg_AlienGate_1502),\n\n\n                                                                                             }\n                                                                                                     ));\n            m_dialogues.Add((int)MyDialogueEnum.ALIEN_GATE_1600, new MyDialogue(\n                                                                                                     new MyDialogueSentence[]{\n                                                                                             new MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_AlienGate_1108, MyDialoguesWrapperEnum.Dlg_AlienGate_1600),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_AlienGate_1109, MyDialoguesWrapperEnum.Dlg_AlienGate_1601),\n\n\n                                                                                             }\n                                                                                                     ));\n            m_dialogues.Add((int)MyDialogueEnum.ALIEN_GATE_1700, new MyDialogue(\n                                                                                                     new MyDialogueSentence[]{\n                                                                                             new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_AlienGate_1110, MyDialoguesWrapperEnum.Dlg_AlienGate_1700),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_AlienGate_1111, MyDialoguesWrapperEnum.Dlg_AlienGate_1701),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_AlienGate_1112, MyDialoguesWrapperEnum.Dlg_AlienGate_1702),\nnew MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_AlienGate_1113, MyDialoguesWrapperEnum.Dlg_AlienGate_1703),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_AlienGate_1114, MyDialoguesWrapperEnum.Dlg_AlienGate_1704),\n\n                                                                                             }\n                                                                                                     ));\n            m_dialogues.Add((int)MyDialogueEnum.ALIEN_GATE_1800, new MyDialogue(\n                                                                                                     new MyDialogueSentence[]{\n                                                                                             new MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_AlienGate_1115, MyDialoguesWrapperEnum.Dlg_AlienGate_1800),\n\n                                                                                             }\n                                                                                                     ));\n            m_dialogues.Add((int)MyDialogueEnum.ALIEN_GATE_1900, new MyDialogue(\n                                                                                                     new MyDialogueSentence[]{\n                                                                                             new MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_AlienGate_1116, MyDialoguesWrapperEnum.Dlg_AlienGate_1900),\n\n                                                                                             }\n                                                                                                     ));\n            m_dialogues.Add((int)MyDialogueEnum.ALIEN_GATE_2000, new MyDialogue(\n                                                                                                     new MyDialogueSentence[]{\n                                                                                             new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_AlienGate_1117, MyDialoguesWrapperEnum.Dlg_AlienGate_2000),\nnew MyDialogueSentence(MyActorEnum.EVERYONE, MySoundCuesEnum.Dlg_AlienGate_1118, MyDialoguesWrapperEnum.Dlg_AlienGate_2001),\n\n                                                                                             }\n                                                                                                     ));\n//            m_dialogues.Add((int)MyDialogueEnum.ALIEN_GATE_2100, new MyDialogue(\n//                                                                                                     new MyDialogueSentence[]{\n//                                                                                             new MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_AlienGate_1119, MyDialoguesWrapperEnum.Dlg_AlienGate_2100),\n//new MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_AlienGate_1120, MyDialoguesWrapperEnum.Dlg_AlienGate_2101),\n\n//                                                                                             }\n//                                                                                                     ));\n            m_dialogues.Add((int)MyDialogueEnum.ALIEN_GATE_2200, new MyDialogue(\n                                                                                                     new MyDialogueSentence[]{\n                                                                                             new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_AlienGate_1121, MyDialoguesWrapperEnum.Dlg_AlienGate_2200),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_AlienGate_1122, MyDialoguesWrapperEnum.Dlg_AlienGate_2201),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_AlienGate_1123, MyDialoguesWrapperEnum.Dlg_AlienGate_2202),\nnew MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_AlienGate_1124, MyDialoguesWrapperEnum.Dlg_AlienGate_2203),\n\n                                                                                             }\n                                                                                                     ));\n            m_dialogues.Add((int)MyDialogueEnum.ALIEN_GATE_2300, new MyDialogue(\n                                                                                                     new MyDialogueSentence[]{\n                                                                                             new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_AlienGate_1125, MyDialoguesWrapperEnum.Dlg_AlienGate_2300),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_AlienGate_1126, MyDialoguesWrapperEnum.Dlg_AlienGate_2301),\n\n                                                                                             }\n                                                                                                     ));\n            m_dialogues.Add((int)MyDialogueEnum.ALIEN_GATE_2400, new MyDialogue(\n                                                                                                     new MyDialogueSentence[]{\n                                                                                             new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_AlienGate_1127, MyDialoguesWrapperEnum.Dlg_AlienGate_2400),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_AlienGate_1128, MyDialoguesWrapperEnum.Dlg_AlienGate_2401),\nnew MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_AlienGate_1129, MyDialoguesWrapperEnum.Dlg_AlienGate_2402),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_AlienGate_1130, MyDialoguesWrapperEnum.Dlg_AlienGate_2403),\n\n                                                                                             }\n                                                                                                     ));\n            m_dialogues.Add((int)MyDialogueEnum.ALIEN_GATE_2500, new MyDialogue(\n                                                                                                     new MyDialogueSentence[]{\n                                                                                             new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_AlienGate_1131, MyDialoguesWrapperEnum.Dlg_AlienGate_2500),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_AlienGate_1132, MyDialoguesWrapperEnum.Dlg_AlienGate_2501),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_AlienGate_1133, MyDialoguesWrapperEnum.Dlg_AlienGate_2502),\n\n                                                                                             }\n                                                                                                     ));\n            m_dialogues.Add((int)MyDialogueEnum.ALIEN_GATE_2600, new MyDialogue(\n                                                                                                     new MyDialogueSentence[]{\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_AlienGate_1134, MyDialoguesWrapperEnum.Dlg_AlienGate_2600),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_AlienGate_1135, MyDialoguesWrapperEnum.Dlg_AlienGate_2601),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_AlienGate_1136, MyDialoguesWrapperEnum.Dlg_AlienGate_2602),\n\n                                                                                             }\n                                                                                                     ));\n            m_dialogues.Add((int)MyDialogueEnum.ALIEN_GATE_2700, new MyDialogue(\n                                                                                                     new MyDialogueSentence[]{\n                                                                                             new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_AlienGate_1137, MyDialoguesWrapperEnum.Dlg_AlienGate_2700),\nnew MyDialogueSentence(MyActorEnum.FRANCIS_REEF, MySoundCuesEnum.Dlg_AlienGate_1138, MyDialoguesWrapperEnum.Dlg_AlienGate_2701),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_AlienGate_1139, MyDialoguesWrapperEnum.Dlg_AlienGate_2702),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_AlienGate_1140, MyDialoguesWrapperEnum.Dlg_AlienGate_2703),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_AlienGate_1141, MyDialoguesWrapperEnum.Dlg_AlienGate_2704),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_AlienGate_1142, MyDialoguesWrapperEnum.Dlg_AlienGate_2705),\n\n                                                                                             }\n                                                                                                     ));\n            m_dialogues.Add((int)MyDialogueEnum.ALIEN_GATE_2800, new MyDialogue(\n                                                                                                     new MyDialogueSentence[]{\n                                                                                             new MyDialogueSentence(MyActorEnum.FRANCIS_REEF, MySoundCuesEnum.Dlg_AlienGate_1143, MyDialoguesWrapperEnum.Dlg_AlienGate_2800),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_AlienGate_1144, MyDialoguesWrapperEnum.Dlg_AlienGate_2801),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_AlienGate_1145, MyDialoguesWrapperEnum.Dlg_AlienGate_2802),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_AlienGate_1146, MyDialoguesWrapperEnum.Dlg_AlienGate_2803),\n\n                                                                                             }\n                                                                                                     ));\n            m_dialogues.Add((int)MyDialogueEnum.ALIEN_GATE_2900, new MyDialogue(\n                                                                                                     new MyDialogueSentence[]{\nnew MyDialogueSentence(MyActorEnum.FRANCIS_REEF, MySoundCuesEnum.Dlg_AlienGate_1147, MyDialoguesWrapperEnum.Dlg_AlienGate_2900),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_AlienGate_1148, MyDialoguesWrapperEnum.Dlg_AlienGate_2901),\n\n                                                                                             }\n                                                                                                     ));\n            m_dialogues.Add((int)MyDialogueEnum.ALIEN_GATE_3000, new MyDialogue(\n                                                                                                     new MyDialogueSentence[]{\nnew MyDialogueSentence(MyActorEnum.FRANCIS_REEF, MySoundCuesEnum.Dlg_AlienGate_1149, MyDialoguesWrapperEnum.Dlg_AlienGate_3000),\n\n                                                                                             }\n                                                                                                     ));\n//            m_dialogues.Add((int)MyDialogueEnum.ALIEN_GATE_3100, new MyDialogue(\n//                                                                                                     new MyDialogueSentence[]{\n//                                                                                             new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_AlienGate_1150, MyDialoguesWrapperEnum.Dlg_AlienGate_3100),\n//new MyDialogueSentence(MyActorEnum.FRANCIS_REEF, MySoundCuesEnum.Dlg_AlienGate_1151, MyDialoguesWrapperEnum.Dlg_AlienGate_3101),\n\n//                                                                                             }\n//                                                                                                     ));\n            m_dialogues.Add((int)MyDialogueEnum.ALIEN_GATE_3200, new MyDialogue(\n                                                                                                     new MyDialogueSentence[]{\n                                                                                             new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_AlienGate_1152, MyDialoguesWrapperEnum.Dlg_AlienGate_3200),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_AlienGate_1153, MyDialoguesWrapperEnum.Dlg_AlienGate_3201),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_AlienGate_1154, MyDialoguesWrapperEnum.Dlg_AlienGate_3202),\n\n                                                                                             }\n                                                                                                     ));\n\n            m_dialogues.Add((int)MyDialogueEnum.ALIEN_GATE_3300, new MyDialogue(\n                                                                                         new MyDialogueSentence[]{\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_AlienGate_1155, MyDialoguesWrapperEnum.Dlg_AlienGate_3300),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_AlienGate_1156, MyDialoguesWrapperEnum.Dlg_AlienGate_3301),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_AlienGate_1157, MyDialoguesWrapperEnum.Dlg_AlienGate_3302),\nnew MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_AlienGate_1158, MyDialoguesWrapperEnum.Dlg_AlienGate_3303),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_AlienGate_1159, MyDialoguesWrapperEnum.Dlg_AlienGate_3304),\nnew MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_AlienGate_1160, MyDialoguesWrapperEnum.Dlg_AlienGate_3305),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_AlienGate_1161, MyDialoguesWrapperEnum.Dlg_AlienGate_3306),\nnew MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_AlienGate_1162, MyDialoguesWrapperEnum.Dlg_AlienGate_3307),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_AlienGate_1163, MyDialoguesWrapperEnum.Dlg_AlienGate_3308),\nnew MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_AlienGate_1164, MyDialoguesWrapperEnum.Dlg_AlienGate_3309),\nnew MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_AlienGate_1165, MyDialoguesWrapperEnum.Dlg_AlienGate_3310),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_AlienGate_1166, MyDialoguesWrapperEnum.Dlg_AlienGate_3311),\n\n\n                                                                                             }\n                                                                                         ));\n\n            #endregion\n\n            #region Pirate Base\n            m_dialogues.Add((int)MyDialogueEnum.PIRATE_BASE_0100, new MyDialogue(\n                new MyDialogueSentence[]\n                {\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_PirateBase_1000, MyDialoguesWrapperEnum.Dlg_PirateBase_0101),\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_PirateBase_1001, MyDialoguesWrapperEnum.Dlg_PirateBase_0102),\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_PirateBase_1002, MyDialoguesWrapperEnum.Dlg_PirateBase_0103),\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_PirateBase_1003, MyDialoguesWrapperEnum.Dlg_PirateBase_0104),\n                }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.PIRATE_BASE_0200, new MyDialogue(\n                new MyDialogueSentence[]\n                {\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_PirateBase_1004, MyDialoguesWrapperEnum.Dlg_PirateBase_0201),\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_PirateBase_1005, MyDialoguesWrapperEnum.Dlg_PirateBase_0202),\n                    new MyDialogueSentence(MyActorEnum.PIRATE_MALE, MySoundCuesEnum.Dlg_PirateBase_1006, MyDialoguesWrapperEnum.Dlg_PirateBase_0203),\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_PirateBase_1007, MyDialoguesWrapperEnum.Dlg_PirateBase_0204),\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_PirateBase_1008, MyDialoguesWrapperEnum.Dlg_PirateBase_0205),\n                    new MyDialogueSentence(MyActorEnum.PIRATE_MALE, MySoundCuesEnum.Dlg_PirateBase_1009, MyDialoguesWrapperEnum.Dlg_PirateBase_0206),\n                    new MyDialogueSentence(MyActorEnum.PIRATE_MALE, MySoundCuesEnum.Dlg_PirateBase_1010, MyDialoguesWrapperEnum.Dlg_PirateBase_0207),\n                    new MyDialogueSentence(MyActorEnum.PIRATE_MALE, MySoundCuesEnum.Dlg_PirateBase_1011, MyDialoguesWrapperEnum.Dlg_PirateBase_0208),\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_PirateBase_1012, MyDialoguesWrapperEnum.Dlg_PirateBase_0209),\n                    //new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_PirateBase_1013, MyDialoguesWrapperEnum.Dlg_PirateBase_0210),\n                    //new MyDialogueSentence(MyActorEnum.PIRATE_MALE, MySoundCuesEnum.Dlg_PirateBase_1014, MyDialoguesWrapperEnum.Dlg_PirateBase_0211),\n               }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.PIRATE_BASE_0300, new MyDialogue(\n                new MyDialogueSentence[]\n                {\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_PirateBase_1015, MyDialoguesWrapperEnum.Dlg_PirateBase_0301),\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_PirateBase_1016, MyDialoguesWrapperEnum.Dlg_PirateBase_0302),\n               }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.PIRATE_BASE_0400, new MyDialogue(\n                new MyDialogueSentence[]\n                {\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_PirateBase_1017, MyDialoguesWrapperEnum.Dlg_PirateBase_0401),\n                    new MyDialogueSentence(MyActorEnum.PIRATE2_MALE, MySoundCuesEnum.Dlg_PirateBase_1018, MyDialoguesWrapperEnum.Dlg_PirateBase_0402),\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_PirateBase_1019, MyDialoguesWrapperEnum.Dlg_PirateBase_0403),\n                    new MyDialogueSentence(MyActorEnum.PIRATE2_MALE, MySoundCuesEnum.Dlg_PirateBase_1020, MyDialoguesWrapperEnum.Dlg_PirateBase_0404),\n                    new MyDialogueSentence(MyActorEnum.PIRATE2_MALE, MySoundCuesEnum.Dlg_PirateBase_1021, MyDialoguesWrapperEnum.Dlg_PirateBase_0405),\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_PirateBase_1022, MyDialoguesWrapperEnum.Dlg_PirateBase_0406),\n                    //new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_PirateBase_1023, MyDialoguesWrapperEnum.Dlg_PirateBase_0407),\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_PirateBase_1024, MyDialoguesWrapperEnum.Dlg_PirateBase_0408),\n                    new MyDialogueSentence(MyActorEnum.PIRATE2_MALE, MySoundCuesEnum.Dlg_PirateBase_1025, MyDialoguesWrapperEnum.Dlg_PirateBase_0409),\n               }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.PIRATE_BASE_0500, new MyDialogue(\n                new MyDialogueSentence[]\n                {\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_PirateBase_1026, MyDialoguesWrapperEnum.Dlg_PirateBase_0501),\n                    //new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_PirateBase_1027, MyDialoguesWrapperEnum.Dlg_PirateBase_0502),\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_PirateBase_1028, MyDialoguesWrapperEnum.Dlg_PirateBase_0503),\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_PirateBase_1029, MyDialoguesWrapperEnum.Dlg_PirateBase_0504),\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_PirateBase_1030, MyDialoguesWrapperEnum.Dlg_PirateBase_0505, pauseBefore_ms: 300),\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_PirateBase_1031, MyDialoguesWrapperEnum.Dlg_PirateBase_0506),\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_PirateBase_1032, MyDialoguesWrapperEnum.Dlg_PirateBase_0507),\n                    //new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_PirateBase_1033, MyDialoguesWrapperEnum.Dlg_PirateBase_0508),\n                    //new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_PirateBase_1034, MyDialoguesWrapperEnum.Dlg_PirateBase_0509),\n                    //new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_PirateBase_1035, MyDialoguesWrapperEnum.Dlg_PirateBase_0510),\n               }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.PIRATE_BASE_0600, new MyDialogue(\n                new MyDialogueSentence[]\n                {\n                    //new MyDialogueSentence(MyActorEnum.LorraineCardin, MySoundCuesEnum.Dlg_PirateBase_1036, MyDialoguesWrapperEnum.Dlg_PirateBase_0601),\n                    //new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_PirateBase_1037, MyDialoguesWrapperEnum.Dlg_PirateBase_0602),\n                    //new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_PirateBase_1038, MyDialoguesWrapperEnum.Dlg_PirateBase_0603),\n                    //new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_PirateBase_1039, MyDialoguesWrapperEnum.Dlg_PirateBase_0604),\n                    //new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_PirateBase_1040, MyDialoguesWrapperEnum.Dlg_PirateBase_0605),\n                    //new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_PirateBase_1041, MyDialoguesWrapperEnum.Dlg_PirateBase_0606),\n                    //new MyDialogueSentence(MyActorEnum.LorraineCardin, MySoundCuesEnum.Dlg_PirateBase_1042, MyDialoguesWrapperEnum.Dlg_PirateBase_0607),\n                    //new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_PirateBase_1043, MyDialoguesWrapperEnum.Dlg_PirateBase_0608),\n                    //new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_PirateBase_1044, MyDialoguesWrapperEnum.Dlg_PirateBase_0609),\n                    //new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_PirateBase_1045, MyDialoguesWrapperEnum.Dlg_PirateBase_0610),\n                    //new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_PirateBase_1046, MyDialoguesWrapperEnum.Dlg_PirateBase_0611),\n                    //new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_PirateBase_1047, MyDialoguesWrapperEnum.Dlg_PirateBase_0612),\n                    //new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_PirateBase_1048, MyDialoguesWrapperEnum.Dlg_PirateBase_0613),\n                    //new MyDialogueSentence(MyActorEnum.LorraineCardin, MySoundCuesEnum.Dlg_PirateBase_1049, MyDialoguesWrapperEnum.Dlg_PirateBase_0614),\n                    //new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_PirateBase_1050, MyDialoguesWrapperEnum.Dlg_PirateBase_0615),\n                    //new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_PirateBase_1051, MyDialoguesWrapperEnum.Dlg_PirateBase_0616),\n                    //new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_PirateBase_1052, MyDialoguesWrapperEnum.Dlg_PirateBase_0617),\n                    new MyDialogueSentence(MyActorEnum.LorraineCardin, MySoundCuesEnum.Dlg_PirateBase_1053, MyDialoguesWrapperEnum.Dlg_PirateBase_0618),\n                    //new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_PirateBase_1054, MyDialoguesWrapperEnum.Dlg_PirateBase_0619),\n                    //new MyDialogueSentence(MyActorEnum.LorraineCardin, MySoundCuesEnum.Dlg_PirateBase_1055, MyDialoguesWrapperEnum.Dlg_PirateBase_0620),\n                    //new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_PirateBase_1056, MyDialoguesWrapperEnum.Dlg_PirateBase_0621),\n                    //new MyDialogueSentence(MyActorEnum.LorraineCardin, MySoundCuesEnum.Dlg_PirateBase_1057, MyDialoguesWrapperEnum.Dlg_PirateBase_0622),\n                    //new MyDialogueSentence(MyActorEnum.LorraineCardin, MySoundCuesEnum.Dlg_PirateBase_1058, MyDialoguesWrapperEnum.Dlg_PirateBase_0623),\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_PirateBase_1059, MyDialoguesWrapperEnum.Dlg_PirateBase_0624),\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_PirateBase_1060, MyDialoguesWrapperEnum.Dlg_PirateBase_0625),\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_PirateBase_1061, MyDialoguesWrapperEnum.Dlg_PirateBase_0626),\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_PirateBase_1062, MyDialoguesWrapperEnum.Dlg_PirateBase_0627/*, pauseBefore_ms: 300*/),\n                    new MyDialogueSentence(MyActorEnum.LorraineCardin, MySoundCuesEnum.Dlg_PirateBase_1063, MyDialoguesWrapperEnum.Dlg_PirateBase_0628),\n               }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.PIRATE_BASE_0700, new MyDialogue(\n                new MyDialogueSentence[]\n                {\n                    //new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_PirateBase_1064, MyDialoguesWrapperEnum.Dlg_PirateBase_0701),\n                    //new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_PirateBase_1065, MyDialoguesWrapperEnum.Dlg_PirateBase_0702),\n                    //new MyDialogueSentence(MyActorEnum.LorraineCardin, MySoundCuesEnum.Dlg_PirateBase_1066, MyDialoguesWrapperEnum.Dlg_PirateBase_0703),\n                    //new MyDialogueSentence(MyActorEnum.LorraineCardin, MySoundCuesEnum.Dlg_PirateBase_1067, MyDialoguesWrapperEnum.Dlg_PirateBase_0704),\n                    //new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_PirateBase_1068, MyDialoguesWrapperEnum.Dlg_PirateBase_0705),\n                    //new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_PirateBase_1069, MyDialoguesWrapperEnum.Dlg_PirateBase_0706),\n                    //new MyDialogueSentence(MyActorEnum.LorraineCardin, MySoundCuesEnum.Dlg_PirateBase_1070, MyDialoguesWrapperEnum.Dlg_PirateBase_0707),\n                    //new MyDialogueSentence(MyActorEnum.LorraineCardin, MySoundCuesEnum.Dlg_PirateBase_1071, MyDialoguesWrapperEnum.Dlg_PirateBase_0708),\n                    //new MyDialogueSentence(MyActorEnum.LorraineCardin, MySoundCuesEnum.Dlg_PirateBase_1072, MyDialoguesWrapperEnum.Dlg_PirateBase_0709),\n               }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.PIRATE_BASE_0800, new MyDialogue(\n                new MyDialogueSentence[]\n                {\n                    // ** dialogue changes\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_PirateBase_1064, MyDialoguesWrapperEnum.Dlg_PirateBase_0701),\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_PirateBase_1068, MyDialoguesWrapperEnum.Dlg_PirateBase_0705),\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_PirateBase_1069, MyDialoguesWrapperEnum.Dlg_PirateBase_0706),\n                    new MyDialogueSentence(MyActorEnum.LorraineCardin, MySoundCuesEnum.Dlg_PirateBase_1070, MyDialoguesWrapperEnum.Dlg_PirateBase_0707),\n                    new MyDialogueSentence(MyActorEnum.LorraineCardin, MySoundCuesEnum.Dlg_PirateBase_1071, MyDialoguesWrapperEnum.Dlg_PirateBase_0708),\n                    new MyDialogueSentence(MyActorEnum.LorraineCardin, MySoundCuesEnum.Dlg_PirateBase_1072, MyDialoguesWrapperEnum.Dlg_PirateBase_0709),\n                    // ****\n\n                    new MyDialogueSentence(MyActorEnum.LorraineCardin, MySoundCuesEnum.Dlg_PirateBase_1073, MyDialoguesWrapperEnum.Dlg_PirateBase_0801),\n                    //new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_PirateBase_1074, MyDialoguesWrapperEnum.Dlg_PirateBase_0802),\n                    //new MyDialogueSentence(MyActorEnum.LorraineCardin, MySoundCuesEnum.Dlg_PirateBase_1075, MyDialoguesWrapperEnum.Dlg_PirateBase_0803),\n                    //new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_PirateBase_1076, MyDialoguesWrapperEnum.Dlg_PirateBase_0804),\n                    //new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_PirateBase_1077, MyDialoguesWrapperEnum.Dlg_PirateBase_0805),\n               }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.PIRATE_BASE_0900, new MyDialogue(\n                new MyDialogueSentence[]\n                {\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_PirateBase_1078, MyDialoguesWrapperEnum.Dlg_PirateBase_0901),\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_PirateBase_1079, MyDialoguesWrapperEnum.Dlg_PirateBase_0902),\n                    new MyDialogueSentence(MyActorEnum.LorraineCardin, MySoundCuesEnum.Dlg_PirateBase_1080, MyDialoguesWrapperEnum.Dlg_PirateBase_0903),\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_PirateBase_1081, MyDialoguesWrapperEnum.Dlg_PirateBase_0904),\n                    new MyDialogueSentence(MyActorEnum.LorraineCardin, MySoundCuesEnum.Dlg_PirateBase_1082, MyDialoguesWrapperEnum.Dlg_PirateBase_0905),\n               }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.PIRATE_BASE_1000, new MyDialogue(\n                new MyDialogueSentence[]\n                {\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_PirateBase_1083, MyDialoguesWrapperEnum.Dlg_PirateBase_1001),\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_PirateBase_1084, MyDialoguesWrapperEnum.Dlg_PirateBase_1002),\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_PirateBase_1085, MyDialoguesWrapperEnum.Dlg_PirateBase_1003),\n                    new MyDialogueSentence(MyActorEnum.LorraineCardin, MySoundCuesEnum.Dlg_PirateBase_1086, MyDialoguesWrapperEnum.Dlg_PirateBase_1004),\n               }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.PIRATE_BASE_1100, new MyDialogue(\n                new MyDialogueSentence[]\n                {\n                    new MyDialogueSentence(MyActorEnum.CLEGG, MySoundCuesEnum.Dlg_PirateBase_1087, MyDialoguesWrapperEnum.Dlg_PirateBase_1101),\n                    new MyDialogueSentence(MyActorEnum.VANE, MySoundCuesEnum.Dlg_PirateBase_1088, MyDialoguesWrapperEnum.Dlg_PirateBase_1102),\n                    new MyDialogueSentence(MyActorEnum.GORG, MySoundCuesEnum.Dlg_PirateBase_1089, MyDialoguesWrapperEnum.Dlg_PirateBase_1103),\n                    new MyDialogueSentence(MyActorEnum.LorraineCardin, MySoundCuesEnum.Dlg_PirateBase_1090, MyDialoguesWrapperEnum.Dlg_PirateBase_1104),\n                    new MyDialogueSentence(MyActorEnum.CLEGG, MySoundCuesEnum.Dlg_PirateBase_1091, MyDialoguesWrapperEnum.Dlg_PirateBase_1105),\n                    new MyDialogueSentence(MyActorEnum.VANE, MySoundCuesEnum.Dlg_PirateBase_1092, MyDialoguesWrapperEnum.Dlg_PirateBase_1106),\n                    new MyDialogueSentence(MyActorEnum.GORG, MySoundCuesEnum.Dlg_PirateBase_1093, MyDialoguesWrapperEnum.Dlg_PirateBase_1107),\n                    new MyDialogueSentence(MyActorEnum.LorraineCardin, MySoundCuesEnum.Dlg_PirateBase_1094, MyDialoguesWrapperEnum.Dlg_PirateBase_1108),\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_PirateBase_1095, MyDialoguesWrapperEnum.Dlg_PirateBase_1109),\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_PirateBase_1096, MyDialoguesWrapperEnum.Dlg_PirateBase_1110),\n               }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.PIRATE_BASE_1200, new MyDialogue(\n                new MyDialogueSentence[]\n                {\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_PirateBase_1097, MyDialoguesWrapperEnum.Dlg_PirateBase_1201),\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_PirateBase_1098, MyDialoguesWrapperEnum.Dlg_PirateBase_1202),\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_PirateBase_1099, MyDialoguesWrapperEnum.Dlg_PirateBase_1203),\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_PirateBase_1100, MyDialoguesWrapperEnum.Dlg_PirateBase_1204),\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_PirateBase_1101, MyDialoguesWrapperEnum.Dlg_PirateBase_1205),\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_PirateBase_1102, MyDialoguesWrapperEnum.Dlg_PirateBase_1206),\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_PirateBase_1103, MyDialoguesWrapperEnum.Dlg_PirateBase_1207),\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_PirateBase_1104, MyDialoguesWrapperEnum.Dlg_PirateBase_1208),\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_PirateBase_1105, MyDialoguesWrapperEnum.Dlg_PirateBase_1209),\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_PirateBase_1106, MyDialoguesWrapperEnum.Dlg_PirateBase_1210),\n               }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.PIRATE_BASE_1300, new MyDialogue(\n                new MyDialogueSentence[]\n                {\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_PirateBase_1107, MyDialoguesWrapperEnum.Dlg_PirateBase_1301),\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_PirateBase_1108, MyDialoguesWrapperEnum.Dlg_PirateBase_1302),\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_PirateBase_1109, MyDialoguesWrapperEnum.Dlg_PirateBase_1303),\n               }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.PIRATE_BASE_1400, new MyDialogue(\n                new MyDialogueSentence[]\n                {\n                    new MyDialogueSentence(MyActorEnum.LorraineCardin, MySoundCuesEnum.Dlg_PirateBase_1110, MyDialoguesWrapperEnum.Dlg_PirateBase_1401),\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_PirateBase_1111, MyDialoguesWrapperEnum.Dlg_PirateBase_1402),\n                    //new MyDialogueSentence(MyActorEnum.LorraineCardin, MySoundCuesEnum.Dlg_PirateBase_1112, MyDialoguesWrapperEnum.Dlg_PirateBase_1403),\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_PirateBase_1113, MyDialoguesWrapperEnum.Dlg_PirateBase_1404),\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_PirateBase_1114, MyDialoguesWrapperEnum.Dlg_PirateBase_1405),\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_PirateBase_1115, MyDialoguesWrapperEnum.Dlg_PirateBase_1406),\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_PirateBase_1116, MyDialoguesWrapperEnum.Dlg_PirateBase_1407),\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_PirateBase_1117, MyDialoguesWrapperEnum.Dlg_PirateBase_1408),\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_PirateBase_1118, MyDialoguesWrapperEnum.Dlg_PirateBase_1409),\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_PirateBase_1119, MyDialoguesWrapperEnum.Dlg_PirateBase_1410),\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_PirateBase_1120, MyDialoguesWrapperEnum.Dlg_PirateBase_1411),\n                    new MyDialogueSentence(MyActorEnum.LorraineCardin, MySoundCuesEnum.Dlg_PirateBase_1121, MyDialoguesWrapperEnum.Dlg_PirateBase_1412),\n                    new MyDialogueSentence(MyActorEnum.LorraineCardin, MySoundCuesEnum.Dlg_PirateBase_1122, MyDialoguesWrapperEnum.Dlg_PirateBase_1413),\n                    new MyDialogueSentence(MyActorEnum.LorraineCardin, MySoundCuesEnum.Dlg_PirateBase_1123, MyDialoguesWrapperEnum.Dlg_PirateBase_1414),\n                    new MyDialogueSentence(MyActorEnum.LorraineCardin, MySoundCuesEnum.Dlg_PirateBase_1124, MyDialoguesWrapperEnum.Dlg_PirateBase_1415),\n                    new MyDialogueSentence(MyActorEnum.LorraineCardin, MySoundCuesEnum.Dlg_PirateBase_1125, MyDialoguesWrapperEnum.Dlg_PirateBase_1416),\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_PirateBase_1126, MyDialoguesWrapperEnum.Dlg_PirateBase_1417),\n                    new MyDialogueSentence(MyActorEnum.LorraineCardin, MySoundCuesEnum.Dlg_PirateBase_1127, MyDialoguesWrapperEnum.Dlg_PirateBase_1418),\n                    //new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_PirateBase_1128, MyDialoguesWrapperEnum.Dlg_PirateBase_1419),\n                    //new MyDialogueSentence(MyActorEnum.LorraineCardin, MySoundCuesEnum.Dlg_PirateBase_1129, MyDialoguesWrapperEnum.Dlg_PirateBase_1420),\n                    //new MyDialogueSentence(MyActorEnum.LorraineCardin, MySoundCuesEnum.Dlg_PirateBase_1130, MyDialoguesWrapperEnum.Dlg_PirateBase_1421),\n                    //new MyDialogueSentence(MyActorEnum.LorraineCardin, MySoundCuesEnum.Dlg_PirateBase_1131, MyDialoguesWrapperEnum.Dlg_PirateBase_1422),\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_PirateBase_1132, MyDialoguesWrapperEnum.Dlg_PirateBase_1423),\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_PirateBase_1133, MyDialoguesWrapperEnum.Dlg_PirateBase_1424),\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_PirateBase_1134, MyDialoguesWrapperEnum.Dlg_PirateBase_1425),\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_PirateBase_1135, MyDialoguesWrapperEnum.Dlg_PirateBase_1426),\n                    new MyDialogueSentence(MyActorEnum.LorraineCardin, MySoundCuesEnum.Dlg_PirateBase_1136, MyDialoguesWrapperEnum.Dlg_PirateBase_1427),\n                    new MyDialogueSentence(MyActorEnum.LorraineCardin, MySoundCuesEnum.Dlg_PirateBase_1137, MyDialoguesWrapperEnum.Dlg_PirateBase_1428),\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_PirateBase_1138, MyDialoguesWrapperEnum.Dlg_PirateBase_1429),\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_PirateBase_1139, MyDialoguesWrapperEnum.Dlg_PirateBase_1430),\n                    new MyDialogueSentence(MyActorEnum.LorraineCardin, MySoundCuesEnum.Dlg_PirateBase_1140, MyDialoguesWrapperEnum.Dlg_PirateBase_1431),\n                    new MyDialogueSentence(MyActorEnum.LorraineCardin, MySoundCuesEnum.Dlg_PirateBase_1141, MyDialoguesWrapperEnum.Dlg_PirateBase_1432),\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_PirateBase_1142, MyDialoguesWrapperEnum.Dlg_PirateBase_1433),\n                    new MyDialogueSentence(MyActorEnum.LorraineCardin, MySoundCuesEnum.Dlg_PirateBase_1143, MyDialoguesWrapperEnum.Dlg_PirateBase_1434),\n                    new MyDialogueSentence(MyActorEnum.LorraineCardin, MySoundCuesEnum.Dlg_PirateBase_1144, MyDialoguesWrapperEnum.Dlg_PirateBase_1435),\n                    new MyDialogueSentence(MyActorEnum.LorraineCardin, MySoundCuesEnum.Dlg_PirateBase_1145, MyDialoguesWrapperEnum.Dlg_PirateBase_1436),\n                    //new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_PirateBase_1146, MyDialoguesWrapperEnum.Dlg_PirateBase_1437),\n                    //new MyDialogueSentence(MyActorEnum.LorraineCardin, MySoundCuesEnum.Dlg_PirateBase_1147, MyDialoguesWrapperEnum.Dlg_PirateBase_1438),\n                    //new MyDialogueSentence(MyActorEnum.LorraineCardin, MySoundCuesEnum.Dlg_PirateBase_1148, MyDialoguesWrapperEnum.Dlg_PirateBase_1439),\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_PirateBase_1149, MyDialoguesWrapperEnum.Dlg_PirateBase_1440),\n                    new MyDialogueSentence(MyActorEnum.LorraineCardin, MySoundCuesEnum.Dlg_PirateBase_1150, MyDialoguesWrapperEnum.Dlg_PirateBase_1441),\n                    new MyDialogueSentence(MyActorEnum.LorraineCardin, MySoundCuesEnum.Dlg_PirateBase_1151, MyDialoguesWrapperEnum.Dlg_PirateBase_1442),\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_PirateBase_1152, MyDialoguesWrapperEnum.Dlg_PirateBase_1443),\n                    //new MyDialogueSentence(MyActorEnum.LorraineCardin, MySoundCuesEnum.Dlg_PirateBase_1153, MyDialoguesWrapperEnum.Dlg_PirateBase_1444),\n                    //new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_PirateBase_1154, MyDialoguesWrapperEnum.Dlg_PirateBase_1445),\n                    //new MyDialogueSentence(MyActorEnum.LorraineCardin, MySoundCuesEnum.Dlg_PirateBase_1155, MyDialoguesWrapperEnum.Dlg_PirateBase_1446),\n                    //new MyDialogueSentence(MyActorEnum.LorraineCardin, MySoundCuesEnum.Dlg_PirateBase_1156, MyDialoguesWrapperEnum.Dlg_PirateBase_1447),\n                    //new MyDialogueSentence(MyActorEnum.LorraineCardin, MySoundCuesEnum.Dlg_PirateBase_1157, MyDialoguesWrapperEnum.Dlg_PirateBase_1448),\n               }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.PIRATE_BASE_1500, new MyDialogue(\n                new MyDialogueSentence[]\n                {\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_PirateBase_1158, MyDialoguesWrapperEnum.Dlg_PirateBase_1501),\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_PirateBase_1159, MyDialoguesWrapperEnum.Dlg_PirateBase_1502),\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_PirateBase_1160, MyDialoguesWrapperEnum.Dlg_PirateBase_1503),\n               }\n            ));\n            #endregion\n\n            #region Barths Moon Convince\n            m_dialogues.Add((int)MyDialogueEnum.BARTHS_MOON_CONVINCE_0100, new MyDialogue(\n                new MyDialogueSentence[]\n                {\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_BarthsMoonConvince_1000, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0101),\n                    //new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_BarthsMoonConvince_1001, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0102),\n                    //new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_BarthsMoonConvince_1002, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0103),\n                    //new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_BarthsMoonConvince_1003, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0104),\n                    //new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_BarthsMoonConvince_1004, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0105),\n                    //new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonConvince_1005, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0106),\n                    //new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonConvince_1006, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0107),\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_BarthsMoonConvince_1007, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0108),\n                    //new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonConvince_1008, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0109),\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonConvince_1009, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0110),\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonConvince_1010, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0111),\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_BarthsMoonConvince_1011, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0112),\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_BarthsMoonConvince_1012, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0113),\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonConvince_1013, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0114),\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonConvince_1014, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0115),\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_BarthsMoonConvince_1015, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0116),\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonConvince_1016, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0117),\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_BarthsMoonConvince_1017, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0118),\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonConvince_1018, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0119),\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonConvince_1019, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0120),\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_BarthsMoonConvince_1020, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0121),\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_BarthsMoonConvince_1021, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0122),\n                }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.BARTHS_MOON_CONVINCE_0200, new MyDialogue(\n                new MyDialogueSentence[]\n                {\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_BarthsMoonConvince_1022, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0201),\n                    //new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_BarthsMoonConvince_1023, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0202),\n                    //new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_BarthsMoonConvince_1024, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0203),\n                    //new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_BarthsMoonConvince_1025, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0204),\n                }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.BARTHS_MOON_CONVINCE_0300, new MyDialogue(\n                new MyDialogueSentence[]\n                {\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_BarthsMoonConvince_1026, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0301),\n                    new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonConvince_1027, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0302),\n                    //new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonConvince_1028, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0303),\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_BarthsMoonConvince_1029, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0304),\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonConvince_1030, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0305),\n                    new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonConvince_1031, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0306),\n                    new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonConvince_1032, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0307),\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonConvince_1033, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0308),\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonConvince_1034, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0309),\n                    new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonConvince_1035, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0310),\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonConvince_1036, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0311),\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_BarthsMoonConvince_1037, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0312),\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_BarthsMoonConvince_1038, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0313),\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_BarthsMoonConvince_1039, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0314),\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_BarthsMoonConvince_1040, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0315),\n                    new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonConvince_1041, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0316),\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonConvince_1042, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0317),\n                    new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonConvince_1043, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0318),\n                    new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonConvince_1044, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0319),\n                    new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonConvince_1045, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0320),\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_BarthsMoonConvince_1046, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0321),\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonConvince_1047, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0322),\n                    new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonConvince_1048, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0323),\n                    new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonConvince_1049, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0324),\n                    new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonConvince_1050, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0325),\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_BarthsMoonConvince_1051, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0326),\n                    new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonConvince_1052, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0327),\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_BarthsMoonConvince_1053, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0328),\n                    new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonConvince_1054, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0329),\n                    new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonConvince_1055, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0330),\n                    new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonConvince_1056, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0331),\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_BarthsMoonConvince_1057, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0332),\n                    new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonConvince_1058, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0333),\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_BarthsMoonConvince_1059, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0334),\n                    new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonConvince_1060, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0335),\n                    new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonConvince_1061, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0336/*, pauseBefore_ms: 300*/),\n                    new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonConvince_1062, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0337),\n                    new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonConvince_1063, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0338/*, pauseBefore_ms: 300*/),\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_BarthsMoonConvince_1064, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0339),\n                    new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonConvince_1065, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0340),\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_BarthsMoonConvince_1066, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0341),\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonConvince_1067, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0342),\n                    //new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonConvince_1068, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0343),\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_BarthsMoonConvince_1069, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0344),\n                    new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonConvince_1070, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0345),\n                }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.BARTHS_MOON_CONVINCE_0400, new MyDialogue(\n                new MyDialogueSentence[]\n                {\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonConvince_1071, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0401),\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_BarthsMoonConvince_1072, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0402),\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_BarthsMoonConvince_1073, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0403),\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_BarthsMoonConvince_1074, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0404),\n                    new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonConvince_1075, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0405),\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_BarthsMoonConvince_1076, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0406),\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonConvince_1077, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0407),\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonConvince_1078, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0408),\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_BarthsMoonConvince_1079, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0409),\n                    new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonConvince_1080, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0410),\n                    new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonConvince_1081, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0411),\n                    new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonConvince_1082, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0412),\n                    new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonConvince_1083, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0413),\n                    new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonConvince_1084, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0414),\n                    new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonConvince_1085, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0415),\n                    new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonConvince_1086, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0416),\n                    new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonConvince_1087, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0417),\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_BarthsMoonConvince_1088, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0418),\n                    new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonConvince_1089, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0419),\n                    new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonConvince_1090, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0420),\n                    new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonConvince_1091, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0421),\n                    new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonConvince_1092, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0422),\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_BarthsMoonConvince_1093, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0423),\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_BarthsMoonConvince_1094, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0424),\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonConvince_1095, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0425),\n                    new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonConvince_1096, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0426),\n                    new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_BarthsMoonConvince_1097, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0427),\n                }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.BARTHS_MOON_CONVINCE_0500, new MyDialogue(\n                new MyDialogueSentence[]\n                {\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_BarthsMoonConvince_1098, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0501),\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_BarthsMoonConvince_1099, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0502),\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_BarthsMoonConvince_1100, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0503),\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_BarthsMoonConvince_1101, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0504),\n                }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.BARTHS_MOON_CONVINCE_0600, new MyDialogue(\n                new MyDialogueSentence[]\n                {\n                    new MyDialogueSentence(MyActorEnum.RAIDER_LEADER, MySoundCuesEnum.Dlg_BarthsMoonConvince_1102, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0601),\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_BarthsMoonConvince_1103, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0602),\n                    new MyDialogueSentence(MyActorEnum.RAIDER_LEADER, MySoundCuesEnum.Dlg_BarthsMoonConvince_1104, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0603),\n                    new MyDialogueSentence(MyActorEnum.RAIDER_LEADER, MySoundCuesEnum.Dlg_BarthsMoonConvince_1105, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0604),\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_BarthsMoonConvince_1106, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0605),\n                }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.BARTHS_MOON_CONVINCE_0700, new MyDialogue(\n                new MyDialogueSentence[]\n                {\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_BarthsMoonConvince_1107, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0701),\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonConvince_1108, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0702),\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_BarthsMoonConvince_1109, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0703),\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_BarthsMoonConvince_1110, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0704),\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_BarthsMoonConvince_1111, MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0705),\n                }\n            ));\n            #endregion\n\n            #region Last Hope\n            m_dialogues.Add((int)MyDialogueEnum.LAST_HOPE_0100, new MyDialogue(\n                                                                                         new MyDialogueSentence[]{\n                                                                                             new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_LastHope_1000, MyDialoguesWrapperEnum.Dlg_LastHope_0100),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_LastHope_1001, MyDialoguesWrapperEnum.Dlg_LastHope_0101),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_LastHope_1002, MyDialoguesWrapperEnum.Dlg_LastHope_0102),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_LastHope_1003, MyDialoguesWrapperEnum.Dlg_LastHope_0103),\n\n                                                                                             }\n                                                                                         ));\nm_dialogues.Add((int)MyDialogueEnum.LAST_HOPE_0200, new MyDialogue(\n                                                                                         new MyDialogueSentence[]{\n                                                                                             new MyDialogueSentence(MyActorEnum.SLAVER_BASE_CAPTAIN, MySoundCuesEnum.Dlg_LastHope_1004, MyDialoguesWrapperEnum.Dlg_LastHope_0200),\nnew MyDialogueSentence(MyActorEnum.SLAVER_BASE_CAPTAIN, MySoundCuesEnum.Dlg_LastHope_1005, MyDialoguesWrapperEnum.Dlg_LastHope_0201),\n//new MyDialogueSentence(MyActorEnum.SLAVER_LEADER, MySoundCuesEnum.Dlg_LastHope_1006, MyDialoguesWrapperEnum.Dlg_LastHope_0202),\n//new MyDialogueSentence(MyActorEnum.SLAVER_LEADER, MySoundCuesEnum.Dlg_LastHope_1007, MyDialoguesWrapperEnum.Dlg_LastHope_0203),\n//new MyDialogueSentence(MyActorEnum.SLAVER_LEADER, MySoundCuesEnum.Dlg_LastHope_1008, MyDialoguesWrapperEnum.Dlg_LastHope_0204),\n//new MyDialogueSentence(MyActorEnum.SLAVER_LEADER, MySoundCuesEnum.Dlg_LastHope_1009, MyDialoguesWrapperEnum.Dlg_LastHope_0205),\n//new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_LastHope_1010, MyDialoguesWrapperEnum.Dlg_LastHope_0206),\nnew MyDialogueSentence(MyActorEnum.SLAVER_LEADER, MySoundCuesEnum.Dlg_LastHope_1011, MyDialoguesWrapperEnum.Dlg_LastHope_0207),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_LastHope_1012, MyDialoguesWrapperEnum.Dlg_LastHope_0208),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_LastHope_1013, MyDialoguesWrapperEnum.Dlg_LastHope_0209),\nnew MyDialogueSentence(MyActorEnum.SLAVER_LEADER, MySoundCuesEnum.Dlg_LastHope_1014, MyDialoguesWrapperEnum.Dlg_LastHope_0210),\n\n                                                                                             }\n                                                                                         ));\nm_dialogues.Add((int)MyDialogueEnum.LAST_HOPE_0300, new MyDialogue(\n                                                                                         new MyDialogueSentence[]{\n                                                                                             new MyDialogueSentence(MyActorEnum.FATHER_TOBIAS, MySoundCuesEnum.Dlg_LastHope_1015, MyDialoguesWrapperEnum.Dlg_LastHope_0300),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_LastHope_1016, MyDialoguesWrapperEnum.Dlg_LastHope_0301),\nnew MyDialogueSentence(MyActorEnum.FATHER_TOBIAS, MySoundCuesEnum.Dlg_LastHope_1017, MyDialoguesWrapperEnum.Dlg_LastHope_0302),\nnew MyDialogueSentence(MyActorEnum.FATHER_TOBIAS, MySoundCuesEnum.Dlg_LastHope_1018, MyDialoguesWrapperEnum.Dlg_LastHope_0303),\nnew MyDialogueSentence(MyActorEnum.FATHER_TOBIAS, MySoundCuesEnum.Dlg_LastHope_1019, MyDialoguesWrapperEnum.Dlg_LastHope_0304),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_LastHope_1020, MyDialoguesWrapperEnum.Dlg_LastHope_0305),\n\n                                                                                             }\n                                                                                         ));\nm_dialogues.Add((int)MyDialogueEnum.LAST_HOPE_0400, new MyDialogue(\n                                                                                         new MyDialogueSentence[]{\nnew MyDialogueSentence(MyActorEnum.FATHER_TOBIAS, MySoundCuesEnum.Dlg_LastHope_1021, MyDialoguesWrapperEnum.Dlg_LastHope_0400),\n//new MyDialogueSentence(MyActorEnum.FATHER_TOBIAS, MySoundCuesEnum.Dlg_LastHope_1022, MyDialoguesWrapperEnum.Dlg_LastHope_0401),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_LastHope_1023, MyDialoguesWrapperEnum.Dlg_LastHope_0402),\nnew MyDialogueSentence(MyActorEnum.FATHER_TOBIAS, MySoundCuesEnum.Dlg_LastHope_1024, MyDialoguesWrapperEnum.Dlg_LastHope_0403),\nnew MyDialogueSentence(MyActorEnum.FATHER_TOBIAS, MySoundCuesEnum.Dlg_LastHope_1025, MyDialoguesWrapperEnum.Dlg_LastHope_0404),\nnew MyDialogueSentence(MyActorEnum.FATHER_TOBIAS, MySoundCuesEnum.Dlg_LastHope_1026, MyDialoguesWrapperEnum.Dlg_LastHope_0405),\n//new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_LastHope_1027, MyDialoguesWrapperEnum.Dlg_LastHope_0406),\n//new MyDialogueSentence(MyActorEnum.FATHER_TOBIAS, MySoundCuesEnum.Dlg_LastHope_1028, MyDialoguesWrapperEnum.Dlg_LastHope_0407),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_LastHope_1029, MyDialoguesWrapperEnum.Dlg_LastHope_0408),\n//new MyDialogueSentence(MyActorEnum.FATHER_TOBIAS, MySoundCuesEnum.Dlg_LastHope_1030, MyDialoguesWrapperEnum.Dlg_LastHope_0409),\n//new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_LastHope_1031, MyDialoguesWrapperEnum.Dlg_LastHope_0410),\n\n                                                                                             }\n                                                                                         ));\nm_dialogues.Add((int)MyDialogueEnum.LAST_HOPE_0500, new MyDialogue(\n                                                                                         new MyDialogueSentence[]{\n                                                                                             new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_LastHope_1032, MyDialoguesWrapperEnum.Dlg_LastHope_0500),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_LastHope_1033, MyDialoguesWrapperEnum.Dlg_LastHope_0501),\n//new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_LastHope_1034, MyDialoguesWrapperEnum.Dlg_LastHope_0502),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_LastHope_1035, MyDialoguesWrapperEnum.Dlg_LastHope_0503),\n\n                                                                                             }\n                                                                                         ));\nm_dialogues.Add((int)MyDialogueEnum.LAST_HOPE_0600, new MyDialogue(\n                                                                                         new MyDialogueSentence[]{\n                                                                                             new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_LastHope_1036, MyDialoguesWrapperEnum.Dlg_LastHope_0600),\nnew MyDialogueSentence(MyActorEnum.FATHER_TOBIAS, MySoundCuesEnum.Dlg_LastHope_1037, MyDialoguesWrapperEnum.Dlg_LastHope_0601),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_LastHope_1038, MyDialoguesWrapperEnum.Dlg_LastHope_0602),\nnew MyDialogueSentence(MyActorEnum.FATHER_TOBIAS, MySoundCuesEnum.Dlg_LastHope_1039, MyDialoguesWrapperEnum.Dlg_LastHope_0603),\nnew MyDialogueSentence(MyActorEnum.FATHER_TOBIAS, MySoundCuesEnum.Dlg_LastHope_1040, MyDialoguesWrapperEnum.Dlg_LastHope_0604),\nnew MyDialogueSentence(MyActorEnum.FATHER_TOBIAS, MySoundCuesEnum.Dlg_LastHope_1041, MyDialoguesWrapperEnum.Dlg_LastHope_0605),\nnew MyDialogueSentence(MyActorEnum.FATHER_TOBIAS, MySoundCuesEnum.Dlg_LastHope_1042, MyDialoguesWrapperEnum.Dlg_LastHope_0606),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_LastHope_1043, MyDialoguesWrapperEnum.Dlg_LastHope_0607),\nnew MyDialogueSentence(MyActorEnum.FATHER_TOBIAS, MySoundCuesEnum.Dlg_LastHope_1044, MyDialoguesWrapperEnum.Dlg_LastHope_0608),\nnew MyDialogueSentence(MyActorEnum.FATHER_TOBIAS, MySoundCuesEnum.Dlg_LastHope_1045, MyDialoguesWrapperEnum.Dlg_LastHope_0609),\n\n                                                                                             }\n                                                                                         ));\nm_dialogues.Add((int)MyDialogueEnum.LAST_HOPE_0700, new MyDialogue(\n                                                                                         new MyDialogueSentence[]{\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_LastHope_1046, MyDialoguesWrapperEnum.Dlg_LastHope_0700),\nnew MyDialogueSentence(MyActorEnum.FATHER_TOBIAS, MySoundCuesEnum.Dlg_LastHope_1047, MyDialoguesWrapperEnum.Dlg_LastHope_0701),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_LastHope_1048, MyDialoguesWrapperEnum.Dlg_LastHope_0702),\nnew MyDialogueSentence(MyActorEnum.FATHER_TOBIAS, MySoundCuesEnum.Dlg_LastHope_1049, MyDialoguesWrapperEnum.Dlg_LastHope_0703),\nnew MyDialogueSentence(MyActorEnum.FATHER_TOBIAS, MySoundCuesEnum.Dlg_LastHope_1050, MyDialoguesWrapperEnum.Dlg_LastHope_0704),\n//new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_LastHope_1051, MyDialoguesWrapperEnum.Dlg_LastHope_0705),\n//new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_LastHope_1052, MyDialoguesWrapperEnum.Dlg_LastHope_0706),\n//new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_LastHope_1053, MyDialoguesWrapperEnum.Dlg_LastHope_0707),\n//new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_LastHope_1054, MyDialoguesWrapperEnum.Dlg_LastHope_0708),\n//new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_LastHope_1055, MyDialoguesWrapperEnum.Dlg_LastHope_0709),\n//new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_LastHope_1056, MyDialoguesWrapperEnum.Dlg_LastHope_0710),\n//new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_LastHope_1057, MyDialoguesWrapperEnum.Dlg_LastHope_0711),\n//new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_LastHope_1058, MyDialoguesWrapperEnum.Dlg_LastHope_0712),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_LastHope_1059, MyDialoguesWrapperEnum.Dlg_LastHope_0713),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_LastHope_1060, MyDialoguesWrapperEnum.Dlg_LastHope_0714),\n//new MyDialogueSentence(MyActorEnum.FATHER_TOBIAS, MySoundCuesEnum.Dlg_LastHope_1061, MyDialoguesWrapperEnum.Dlg_LastHope_0715),\n\n                                                                                             }\n                                                                                         ));\nm_dialogues.Add((int)MyDialogueEnum.LAST_HOPE_0800, new MyDialogue(\n                                                                                         new MyDialogueSentence[]{\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_LastHope_1061, MyDialoguesWrapperEnum.Dlg_LastHope_0800),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_LastHope_1062, MyDialoguesWrapperEnum.Dlg_LastHope_0801),\nnew MyDialogueSentence(MyActorEnum.SLAVER_COLE, MySoundCuesEnum.Dlg_LastHope_1063, MyDialoguesWrapperEnum.Dlg_LastHope_0900),\nnew MyDialogueSentence(MyActorEnum.SLAVER_JEFF, MySoundCuesEnum.Dlg_LastHope_1064, MyDialoguesWrapperEnum.Dlg_LastHope_0901),\nnew MyDialogueSentence(MyActorEnum.SLAVER_COLE, MySoundCuesEnum.Dlg_LastHope_1065, MyDialoguesWrapperEnum.Dlg_LastHope_0902),\n/*new MyDialogueSentence(MyActorEnum.SLAVER_JEFF, MySoundCuesEnum.Dlg_LastHope_1066, MyDialoguesWrapperEnum.Dlg_LastHope_0903),\nnew MyDialogueSentence(MyActorEnum.SLAVER_JEFF, MySoundCuesEnum.Dlg_LastHope_1067, MyDialoguesWrapperEnum.Dlg_LastHope_0904),\n//new MyDialogueSentence(MyActorEnum.SLAVER_JEFF, MySoundCuesEnum.Dlg_LastHope_1069, MyDialoguesWrapperEnum.Dlg_LastHope_0905),\nnew MyDialogueSentence(MyActorEnum.SLAVER_COLE, MySoundCuesEnum.Dlg_LastHope_1070, MyDialoguesWrapperEnum.Dlg_LastHope_0906),\nnew MyDialogueSentence(MyActorEnum.SLAVER_JEFF, MySoundCuesEnum.Dlg_LastHope_1071, MyDialoguesWrapperEnum.Dlg_LastHope_0907),\nnew MyDialogueSentence(MyActorEnum.SLAVER_COLE, MySoundCuesEnum.Dlg_LastHope_1072, MyDialoguesWrapperEnum.Dlg_LastHope_0908),\n */\nnew MyDialogueSentence(MyActorEnum.SLAVER_JEFF, MySoundCuesEnum.Dlg_LastHope_1073, MyDialoguesWrapperEnum.Dlg_LastHope_0909),\nnew MyDialogueSentence(MyActorEnum.SLAVER_JEFF, MySoundCuesEnum.Dlg_LastHope_1074, MyDialoguesWrapperEnum.Dlg_LastHope_0910),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_LastHope_1075, MyDialoguesWrapperEnum.Dlg_LastHope_1000),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_LastHope_1076, MyDialoguesWrapperEnum.Dlg_LastHope_1001),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_LastHope_1077, MyDialoguesWrapperEnum.Dlg_LastHope_1002),\n\n\n\n\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_LastHope_1082, MyDialoguesWrapperEnum.Dlg_LastHope_1007),\n\n                                                                                             }\n                                                                                         ));\n            /*\nm_dialogues.Add((int)MyDialogueEnum.LAST_HOPE_0900, new MyDialogue(\n                                                                                         new MyDialogueSentence[]{\n\n                                                                                             }\n                                                                                         ));\nm_dialogues.Add((int)MyDialogueEnum.LAST_HOPE_1000, new MyDialogue(\n                                                                                         new MyDialogueSentence[]{\n\n                                                                                             }\n                                                                                         ));*/\nm_dialogues.Add((int)MyDialogueEnum.LAST_HOPE_1100, new MyDialogue(\n                                                                                         new MyDialogueSentence[]{\n                                                                                             new MyDialogueSentence(MyActorEnum.SLAVER_JEFF, MySoundCuesEnum.Dlg_LastHope_1083, MyDialoguesWrapperEnum.Dlg_LastHope_1100),\n\n                                                                                             }\n                                                                                         ));\nm_dialogues.Add((int)MyDialogueEnum.LAST_HOPE_1200, new MyDialogue(\n                                                                                         new MyDialogueSentence[]{\n                                                                                             new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_LastHope_1088, MyDialoguesWrapperEnum.Dlg_LastHope_1200),\n\n                                                                                             }\n                                                                                         ));\nm_dialogues.Add((int)MyDialogueEnum.LAST_HOPE_1300, new MyDialogue(\n                                                                                         new MyDialogueSentence[]{\n                                                                                             new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_LastHope_1089, MyDialoguesWrapperEnum.Dlg_LastHope_1300),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_LastHope_1090, MyDialoguesWrapperEnum.Dlg_LastHope_1301),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_LastHope_1091, MyDialoguesWrapperEnum.Dlg_LastHope_1302),\n\n                                                                                             }\n                                                                                         ));\nm_dialogues.Add((int)MyDialogueEnum.LAST_HOPE_1400, new MyDialogue(\n                                                                                         new MyDialogueSentence[]{\n                                                                                             new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_LastHope_1092, MyDialoguesWrapperEnum.Dlg_LastHope_1400),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_LastHope_1093, MyDialoguesWrapperEnum.Dlg_LastHope_1401),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_LastHope_1094, MyDialoguesWrapperEnum.Dlg_LastHope_1402),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_LastHope_1095, MyDialoguesWrapperEnum.Dlg_LastHope_1403),\n\n                                                                                             }\n                                                                                         ));\nm_dialogues.Add((int)MyDialogueEnum.LAST_HOPE_1500, new MyDialogue(\n                                                                                         new MyDialogueSentence[]{\n                                                                                             new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_LastHope_1096, MyDialoguesWrapperEnum.Dlg_LastHope_1500),\n\n                                                                                             }\n                                                                                         ));\nm_dialogues.Add((int)MyDialogueEnum.LAST_HOPE_1600, new MyDialogue(\n                                                                                         new MyDialogueSentence[]{\n                                                                                             new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_LastHope_1097, MyDialoguesWrapperEnum.Dlg_LastHope_1600),\n\n                                                                                             }\n                                                                                         ));\nm_dialogues.Add((int)MyDialogueEnum.LAST_HOPE_1700, new MyDialogue(\n                                                                                         new MyDialogueSentence[]{\n                                                                                             new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_LastHope_1098, MyDialoguesWrapperEnum.Dlg_LastHope_1700),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_LastHope_1099, MyDialoguesWrapperEnum.Dlg_LastHope_1701),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_LastHope_1100, MyDialoguesWrapperEnum.Dlg_LastHope_1702),\n\n                                                                                             }\n                                                                                         ));\nm_dialogues.Add((int)MyDialogueEnum.LAST_HOPE_1800, new MyDialogue(\n                                                                                         new MyDialogueSentence[]{\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_LastHope_1101, MyDialoguesWrapperEnum.Dlg_LastHope_1800),\n\n                                                                                             }\n                                                                                         ));\nm_dialogues.Add((int)MyDialogueEnum.LAST_HOPE_1900, new MyDialogue(\n                                                                                         new MyDialogueSentence[]{\n                                                                                             new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_LastHope_1102, MyDialoguesWrapperEnum.Dlg_LastHope_1900),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_LastHope_1103, MyDialoguesWrapperEnum.Dlg_LastHope_1901),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_LastHope_1104, MyDialoguesWrapperEnum.Dlg_LastHope_1902),\n//new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_LastHope_1105, MyDialoguesWrapperEnum.Dlg_LastHope_1903),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_LastHope_1106, MyDialoguesWrapperEnum.Dlg_LastHope_1904),\n//new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_LastHope_1107, MyDialoguesWrapperEnum.Dlg_LastHope_1905),\n//new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_LastHope_1108, MyDialoguesWrapperEnum.Dlg_LastHope_1906),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_LastHope_1109, MyDialoguesWrapperEnum.Dlg_LastHope_1907),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_LastHope_1110, MyDialoguesWrapperEnum.Dlg_LastHope_1908),\n\n                                                                                             }\n                                                                                         ));\n\nm_dialogues.Add((int)MyDialogueEnum.LAST_HOPE_2000, new MyDialogue(\n                                                                             new MyDialogueSentence[]{\nnew MyDialogueSentence(MyActorEnum.FATHER_TOBIAS, MySoundCuesEnum.Dlg_LastHope_1111, MyDialoguesWrapperEnum.Dlg_LastHope_2000),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_LastHope_1112, MyDialoguesWrapperEnum.Dlg_LastHope_2001),\n//new MyDialogueSentence(MyActorEnum.FATHER_TOBIAS, MySoundCuesEnum.Dlg_LastHope_1113, MyDialoguesWrapperEnum.Dlg_LastHope_2002),\n//new MyDialogueSentence(MyActorEnum.FATHER_TOBIAS, MySoundCuesEnum.Dlg_LastHope_1114, MyDialoguesWrapperEnum.Dlg_LastHope_2003),\n//new MyDialogueSentence(MyActorEnum.FATHER_TOBIAS, MySoundCuesEnum.Dlg_LastHope_1115, MyDialoguesWrapperEnum.Dlg_LastHope_2004),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_LastHope_1116, MyDialoguesWrapperEnum.Dlg_LastHope_2005),\nnew MyDialogueSentence(MyActorEnum.FATHER_TOBIAS, MySoundCuesEnum.Dlg_LastHope_1117, MyDialoguesWrapperEnum.Dlg_LastHope_2006),\nnew MyDialogueSentence(MyActorEnum.FATHER_TOBIAS, MySoundCuesEnum.Dlg_LastHope_1118, MyDialoguesWrapperEnum.Dlg_LastHope_2007),\nnew MyDialogueSentence(MyActorEnum.FATHER_TOBIAS, MySoundCuesEnum.Dlg_LastHope_1119, MyDialoguesWrapperEnum.Dlg_LastHope_2008),\n//new MyDialogueSentence(MyActorEnum.FATHER_TOBIAS, MySoundCuesEnum.Dlg_LastHope_1120, MyDialoguesWrapperEnum.Dlg_LastHope_2009),\nnew MyDialogueSentence(MyActorEnum.LorraineCardin, MySoundCuesEnum.Dlg_LastHope_1121, MyDialoguesWrapperEnum.Dlg_LastHope_2010),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_LastHope_1122, MyDialoguesWrapperEnum.Dlg_LastHope_2011),\nnew MyDialogueSentence(MyActorEnum.LorraineCardin, MySoundCuesEnum.Dlg_LastHope_1123, MyDialoguesWrapperEnum.Dlg_LastHope_2012),\nnew MyDialogueSentence(MyActorEnum.LorraineCardin, MySoundCuesEnum.Dlg_LastHope_1124, MyDialoguesWrapperEnum.Dlg_LastHope_2013),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_LastHope_1125, MyDialoguesWrapperEnum.Dlg_LastHope_2014),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_LastHope_1126, MyDialoguesWrapperEnum.Dlg_LastHope_2015),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_LastHope_1127, MyDialoguesWrapperEnum.Dlg_LastHope_2016),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_LastHope_1128, MyDialoguesWrapperEnum.Dlg_LastHope_2017),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_LastHope_1129, MyDialoguesWrapperEnum.Dlg_LastHope_2018),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_LastHope_1130, MyDialoguesWrapperEnum.Dlg_LastHope_2019),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_LastHope_1131, MyDialoguesWrapperEnum.Dlg_LastHope_2020),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_LastHope_1132, MyDialoguesWrapperEnum.Dlg_LastHope_2021),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_LastHope_1133, MyDialoguesWrapperEnum.Dlg_LastHope_2022),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_LastHope_1134, MyDialoguesWrapperEnum.Dlg_LastHope_2023),\n\n\n                                                                                             }\n                                                                             ));\n\n            #endregion\n\n\n#region EAC AMBUSH\n            m_dialogues.Add((int)MyDialogueEnum.EAC_AMBUSH_0100_INTRO, new MyDialogue(\n                                                                                         new MyDialogueSentence[]{\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1000, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0100),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1001, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0101),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1002, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0102),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1003, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0103),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1004, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0104),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1005, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0105),\nnew MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1006, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0106),\n\n                                                                                             }\n                                                                                         ));\nm_dialogues.Add((int)MyDialogueEnum.EAC_AMBUSH_0200_MANJEET, new MyDialogue(\n                                                                                         new MyDialogueSentence[]{\nnew MyDialogueSentence(MyActorEnum.MANJEET, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1007, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0200, listener: MyActorEnum.APOLLO),\n//new MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1008, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0201),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1009, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0202),\n//new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1010, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0203),\n//new MyDialogueSentence(MyActorEnum.MANJEET, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1011, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0204),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1012, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0205),\nnew MyDialogueSentence(MyActorEnum.MANJEET, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1013, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0206),\n//new MyDialogueSentence(MyActorEnum.MANJEET, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1014, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0207),\n//new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1015, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0208),\n//new MyDialogueSentence(MyActorEnum.MANJEET, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1016, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0209),\nnew MyDialogueSentence(MyActorEnum.MANJEET, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1017, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0210),\n//new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1018, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0211),\n//new MyDialogueSentence(MyActorEnum.MANJEET, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1019, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0212),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1020, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0213),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1021, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0214),\n//new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1022, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0215),\n//new MyDialogueSentence(MyActorEnum.MANJEET, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1023, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0216),\nnew MyDialogueSentence(MyActorEnum.MANJEET, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1024, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0217),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1025, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0218),\n//new MyDialogueSentence(MyActorEnum.MANJEET, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1026, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0219),\n//new MyDialogueSentence(MyActorEnum.MANJEET, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1027, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0220),\n//new MyDialogueSentence(MyActorEnum.MANJEET, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1028, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0221),\n//new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1029, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0222),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1030, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0223),\n\n                                                                                             }\n                                                                                         ));\nm_dialogues.Add((int)MyDialogueEnum.EAC_AMBUSH_0300_GUYS_HURRY_UP, new MyDialogue(\n                                                                                         new MyDialogueSentence[]{\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1031, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0300, pauseBefore_ms:1000),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1032, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0301),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1033, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0302),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1034, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0303),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1035, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0304),\n\n                                                                                             }\n                                                                                         ));\nm_dialogues.Add((int)MyDialogueEnum.EAC_AMBUSH_0400_MARCUS_TO_EAC, new MyDialogue(\n                                                                                         new MyDialogueSentence[]{\n//new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1036, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0400),\n//new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1037, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0401),\n//new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1038, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0402),\n//new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1039, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0403),\n//new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1040, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0404),\n//new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1041, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0405),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1042, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0406, pauseBefore_ms:2000),\nnew MyDialogueSentence(MyActorEnum.EAC_CAPTAIN, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1043, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0407),\n//new MyDialogueSentence(MyActorEnum.EAC_CAPTAIN, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1044, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0408),\n//new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1045, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0409),\n//new MyDialogueSentence(MyActorEnum.EAC_CAPTAIN, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1046, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0410),\n//new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1047, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0411),\nnew MyDialogueSentence(MyActorEnum.EAC_CAPTAIN_FEMALE, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1048, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0412),\n//new MyDialogueSentence(MyActorEnum.EAC_CAPTAIN_FEMALE, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1049, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0413),\n//new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1050, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0414),\n//new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1051, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0415),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1052, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0416),\n//new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1053, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0417),\nnew MyDialogueSentence(MyActorEnum.EAC_CAPTAIN, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1054, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0418),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1055, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0419),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1056, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0420),\nnew MyDialogueSentence(MyActorEnum.EAC_CAPTAIN_FEMALE, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1057, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0421),\nnew MyDialogueSentence(MyActorEnum.EAC_CAPTAIN_FEMALE, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1058, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0422),\n//new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1059, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0423),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1060, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0424),\n                                                                                             }\n                                                                                         ));\n\n\nm_dialogues.Add((int)MyDialogueEnum.EAC_AMBUSH_0500_ONE_LITTLE_ISSUE, new MyDialogue(\n                                                                                         new MyDialogueSentence[]{\n\n//new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1061, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0425),\n//new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1062, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0426),\n//new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1063, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0427),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1064, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0428),\n//new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1065, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0429),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1066, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0430),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1067, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0431),\n//new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1068, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0432),\n//new MyDialogueSentence(MyActorEnum.EAC_CAPTAIN, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1069, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0500),\n//new MyDialogueSentence(MyActorEnum.EAC_CAPTAIN, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1070, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0501),\n//new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1071, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0502),\n//new MyDialogueSentence(MyActorEnum.EAC_CAPTAIN_FEMALE, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1072, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0503),\n//new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1073, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0504),\n\n\n                                                                                             }\n                                                                                         ));\n\nm_dialogues.Add((int)MyDialogueEnum.EAC_AMBUSH_0700_SPLIT_TO_DESTROY_GENERATORS, new MyDialogue(\n                                                                                         new MyDialogueSentence[]{\n\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1078, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0702),\nnew MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1079, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0703),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1080, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0704),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1081, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0705),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1082, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0706),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1083, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0707),\n\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1076, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0700, pauseBefore_ms:12000),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1077, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0701),\n                                                                                             }\n                                                                                         ));\nm_dialogues.Add((int)MyDialogueEnum.EAC_AMBUSH_0800, new MyDialogue(\n                                                                                         new MyDialogueSentence[]{\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1084, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0800),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1085, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0801),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1086, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0802),\n\n                                                                                             }\n                                                                                         ));\nm_dialogues.Add((int)MyDialogueEnum.EAC_AMBUSH_0900, new MyDialogue(\n                                                                                         new MyDialogueSentence[]{\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1087, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0900),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1088, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0901),\n\n                                                                                             }\n                                                                                         ));\nm_dialogues.Add((int)MyDialogueEnum.EAC_AMBUSH_1000, new MyDialogue(\n                                                                                         new MyDialogueSentence[]{\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1089, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1000),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1090, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1001),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1091, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1002),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1092, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1003),\n\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1093, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1100),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1094, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1101),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1095, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1102),\nnew MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1096, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1103),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1097, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1104),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1098, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1105),\n\n                                                                                             }\n                                                                                         ));\nm_dialogues.Add((int)MyDialogueEnum.EAC_AMBUSH_1100, new MyDialogue(\n                                                                                         new MyDialogueSentence[]{\n\n\n                                                                                             }\n                                                                                         ));\nm_dialogues.Add((int)MyDialogueEnum.EAC_AMBUSH_1200_1300, new MyDialogue(\n                                                                                         new MyDialogueSentence[]{\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1099, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1200),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1100, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1300, pauseBefore_ms:5000),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1101, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1301),\nnew MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1102, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1302),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1103, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1303),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1104, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1304),\n\n                                                                                             }\n                                                                                         ));\nm_dialogues.Add((int)MyDialogueEnum.EAC_AMBUSH_1400, new MyDialogue(\n                                                                                         new MyDialogueSentence[]{\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1105, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1400),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1106, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1401),\n\n                                                                                             }\n                                                                                         ));\nm_dialogues.Add((int)MyDialogueEnum.EAC_AMBUSH_1500, new MyDialogue(\n                                                                                         new MyDialogueSentence[]{\n//new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1107, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1500),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1108, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1501, pauseBefore_ms:2000),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1109, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1502),\n//new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1110, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1503),\n//new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1111, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1504),\n//new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1112, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1505),\n//new MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1113, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1506),\n\n                                                                                             }\n                                                                                         ));\nm_dialogues.Add((int)MyDialogueEnum.EAC_AMBUSH_1600, new MyDialogue(\n                                                                                         new MyDialogueSentence[]{\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1114, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1600),\n//new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1115, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1601),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1116, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1602),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1117, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1603),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1118, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1604),\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1119, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1605),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1120, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1606),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1121, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1607),\n                                                                                             }\n                                                                                         ));\n\nm_dialogues.Add((int)MyDialogueEnum.EAC_AMBUSH_1650, new MyDialogue(\n                                                                                         new MyDialogueSentence[]{\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1122, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1608),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1123, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1609),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1124, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1610),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1125, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1611),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1126, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1612),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1127, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1613),\nnew MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1128, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1614),\n\n                                                                                             }\n                                                                                         ));\nm_dialogues.Add((int)MyDialogueEnum.EAC_AMBUSH_1700, new MyDialogue(\n                                                                                         new MyDialogueSentence[]{\nnew MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1130, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1701),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1129, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1700, pauseBefore_ms: 1000),\nnew MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1132, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1703, pauseBefore_ms: 2000),\nnew MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1133, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1704),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1134, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1705),\nnew MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1135, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1706),\nnew MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1136, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1707),\nnew MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_JunkyardEacAmbush_1137, MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1708),\n\n                                                                                             }\n                                                                                         ));\n#endregion  \n#region EAC transmitter\nm_dialogues.Add((int)MyDialogueEnum.EAC_TRANSMITTER_0100, new MyDialogue(\n                new MyDialogueSentence[]\n                {\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_EacTransmitter_1000, MyDialoguesWrapperEnum.Dlg_EacTransmitter_0101),\n                    new MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_EacTransmitter_1001, MyDialoguesWrapperEnum.Dlg_EacTransmitter_0102),\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_EacTransmitter_1002, MyDialoguesWrapperEnum.Dlg_EacTransmitter_0103),\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_EacTransmitter_1003, MyDialoguesWrapperEnum.Dlg_EacTransmitter_0104),\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_EacTransmitter_1004, MyDialoguesWrapperEnum.Dlg_EacTransmitter_0105),\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_EacTransmitter_1005, MyDialoguesWrapperEnum.Dlg_EacTransmitter_0106),\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_EacTransmitter_1006, MyDialoguesWrapperEnum.Dlg_EacTransmitter_0107),\n                    new MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_EacTransmitter_1007, MyDialoguesWrapperEnum.Dlg_EacTransmitter_0108),\n                    new MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_EacTransmitter_1008, MyDialoguesWrapperEnum.Dlg_EacTransmitter_0109),\n                    new MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_EacTransmitter_1009, MyDialoguesWrapperEnum.Dlg_EacTransmitter_0110),\n                    new MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_EacTransmitter_1010, MyDialoguesWrapperEnum.Dlg_EacTransmitter_0111),\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_EacTransmitter_1011, MyDialoguesWrapperEnum.Dlg_EacTransmitter_0112),\n                }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.EAC_TRANSMITTER_0200, new MyDialogue(\n            new MyDialogueSentence[]\n                {\n                    new MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_EacTransmitter_1012, MyDialoguesWrapperEnum.Dlg_EacTransmitter_0201),\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_EacTransmitter_1013, MyDialoguesWrapperEnum.Dlg_EacTransmitter_0202),\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_EacTransmitter_1014, MyDialoguesWrapperEnum.Dlg_EacTransmitter_0203),\n                }\n            ));\n            \n            m_dialogues.Add((int)MyDialogueEnum.EAC_TRANSMITTER_0300, new MyDialogue(\n            new MyDialogueSentence[]\n                {\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_EacTransmitter_1015, MyDialoguesWrapperEnum.Dlg_EacTransmitter_0301),\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_EacTransmitter_1016, MyDialoguesWrapperEnum.Dlg_EacTransmitter_0302),\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_EacTransmitter_1017, MyDialoguesWrapperEnum.Dlg_EacTransmitter_0303),\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_EacTransmitter_1018, MyDialoguesWrapperEnum.Dlg_EacTransmitter_0304),\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_EacTransmitter_1019, MyDialoguesWrapperEnum.Dlg_EacTransmitter_0305),\n                }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.EAC_TRANSMITTER_0400, new MyDialogue(\n            new MyDialogueSentence[]\n                {\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_EacTransmitter_1020, MyDialoguesWrapperEnum.Dlg_EacTransmitter_0401),\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_EacTransmitter_1021, MyDialoguesWrapperEnum.Dlg_EacTransmitter_0402),\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_EacTransmitter_1022, MyDialoguesWrapperEnum.Dlg_EacTransmitter_0403),\n                    //new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_EacTransmitter_1023, MyDialoguesWrapperEnum.Dlg_EacTransmitter_0404),\n                    //new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_EacTransmitter_1024, MyDialoguesWrapperEnum.Dlg_EacTransmitter_0405),\n                    new MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_EacTransmitter_1025, MyDialoguesWrapperEnum.Dlg_EacTransmitter_0406),\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_EacTransmitter_1026, MyDialoguesWrapperEnum.Dlg_EacTransmitter_0407),\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_EacTransmitter_1027, MyDialoguesWrapperEnum.Dlg_EacTransmitter_0408),\n                }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.EAC_TRANSMITTER_0500, new MyDialogue(\n            new MyDialogueSentence[]\n                {\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_EacTransmitter_1028, MyDialoguesWrapperEnum.Dlg_EacTransmitter_0501),\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_EacTransmitter_1029, MyDialoguesWrapperEnum.Dlg_EacTransmitter_0502),\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_EacTransmitter_1030, MyDialoguesWrapperEnum.Dlg_EacTransmitter_0503),\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_EacTransmitter_1031, MyDialoguesWrapperEnum.Dlg_EacTransmitter_0504),\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_EacTransmitter_1032, MyDialoguesWrapperEnum.Dlg_EacTransmitter_0505),\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_EacTransmitter_1033, MyDialoguesWrapperEnum.Dlg_EacTransmitter_0506),\n                }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.EAC_TRANSMITTER_0600, new MyDialogue(\n            new MyDialogueSentence[]\n                {\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_EacTransmitter_1034, MyDialoguesWrapperEnum.Dlg_EacTransmitter_0601),\n                    new MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_EacTransmitter_1035, MyDialoguesWrapperEnum.Dlg_EacTransmitter_0602),\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_EacTransmitter_1036, MyDialoguesWrapperEnum.Dlg_EacTransmitter_0603),\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_EacTransmitter_1037, MyDialoguesWrapperEnum.Dlg_EacTransmitter_0604),\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_EacTransmitter_1038, MyDialoguesWrapperEnum.Dlg_EacTransmitter_0605),\n                }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.EAC_TRANSMITTER_0700, new MyDialogue(\n            new MyDialogueSentence[]\n                {\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_EacTransmitter_1039, MyDialoguesWrapperEnum.Dlg_EacTransmitter_0701),\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_EacTransmitter_1040, MyDialoguesWrapperEnum.Dlg_EacTransmitter_0702),\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_EacTransmitter_1041, MyDialoguesWrapperEnum.Dlg_EacTransmitter_0703),\n                }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.EAC_TRANSMITTER_0800, new MyDialogue(\n            new MyDialogueSentence[]\n                {\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_EacTransmitter_1042, MyDialoguesWrapperEnum.Dlg_EacTransmitter_0801),\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_EacTransmitter_1043, MyDialoguesWrapperEnum.Dlg_EacTransmitter_0802),\n                }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.EAC_TRANSMITTER_0900, new MyDialogue(\n            new MyDialogueSentence[]\n                {\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_EacTransmitter_1044, MyDialoguesWrapperEnum.Dlg_EacTransmitter_0901),\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_EacTransmitter_1045, MyDialoguesWrapperEnum.Dlg_EacTransmitter_0902),\n                }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.EAC_TRANSMITTER_1000, new MyDialogue(\n            new MyDialogueSentence[]\n                {\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_EacTransmitter_1046, MyDialoguesWrapperEnum.Dlg_EacTransmitter_1001),\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_EacTransmitter_1047, MyDialoguesWrapperEnum.Dlg_EacTransmitter_1002),\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_EacTransmitter_1048, MyDialoguesWrapperEnum.Dlg_EacTransmitter_1003),\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_EacTransmitter_1049, MyDialoguesWrapperEnum.Dlg_EacTransmitter_1004),\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_EacTransmitter_1050, MyDialoguesWrapperEnum.Dlg_EacTransmitter_1005),\n                }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.EAC_TRANSMITTER_1100, new MyDialogue(\n            new MyDialogueSentence[]\n                {\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_EacTransmitter_1051, MyDialoguesWrapperEnum.Dlg_EacTransmitter_1101),\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_EacTransmitter_1052, MyDialoguesWrapperEnum.Dlg_EacTransmitter_1102),\n                }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.EAC_TRANSMITTER_1200, new MyDialogue(\n            new MyDialogueSentence[]\n                {\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_EacTransmitter_1053, MyDialoguesWrapperEnum.Dlg_EacTransmitter_1201),\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_EacTransmitter_1054, MyDialoguesWrapperEnum.Dlg_EacTransmitter_1202),\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_EacTransmitter_1055, MyDialoguesWrapperEnum.Dlg_EacTransmitter_1203),\n                }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.EAC_TRANSMITTER_1300, new MyDialogue(\n            new MyDialogueSentence[]\n                {\n                    new MyDialogueSentence(MyActorEnum.MARCUS, MySoundCuesEnum.Dlg_EacTransmitter_1056, MyDialoguesWrapperEnum.Dlg_EacTransmitter_1301),\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_EacTransmitter_1057, MyDialoguesWrapperEnum.Dlg_EacTransmitter_1302),\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_EacTransmitter_1058, MyDialoguesWrapperEnum.Dlg_EacTransmitter_1303),\n                    new MyDialogueSentence(MyActorEnum.TARJA, MySoundCuesEnum.Dlg_EacTransmitter_1059, MyDialoguesWrapperEnum.Dlg_EacTransmitter_1304),\n                }\n            ));\n\n            m_dialogues.Add((int)MyDialogueEnum.EAC_TRANSMITTER_1400, new MyDialogue(\n            new MyDialogueSentence[]\n                {\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_EacTransmitter_1060, MyDialoguesWrapperEnum.Dlg_EacTransmitter_1401),\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_EacTransmitter_1061, MyDialoguesWrapperEnum.Dlg_EacTransmitter_1402),\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_EacTransmitter_1062, MyDialoguesWrapperEnum.Dlg_EacTransmitter_1403),\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_EacTransmitter_1063, MyDialoguesWrapperEnum.Dlg_EacTransmitter_1404),\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_EacTransmitter_1064, MyDialoguesWrapperEnum.Dlg_EacTransmitter_1405),\n                    new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_EacTransmitter_1065, MyDialoguesWrapperEnum.Dlg_EacTransmitter_1406),\n                    new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_EacTransmitter_1066, MyDialoguesWrapperEnum.Dlg_EacTransmitter_1407),\n                    new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_EacTransmitter_1067, MyDialoguesWrapperEnum.Dlg_EacTransmitter_1408),\n                    new MyDialogueSentence(MyActorEnum.VALENTIN, MySoundCuesEnum.Dlg_EacTransmitter_1068, MyDialoguesWrapperEnum.Dlg_EacTransmitter_1409),\n                    new MyDialogueSentence(MyActorEnum.MADELYN, MySoundCuesEnum.Dlg_EacTransmitter_1069, MyDialoguesWrapperEnum.Dlg_EacTransmitter_1410),\n                    new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_EacTransmitter_1070, MyDialoguesWrapperEnum.Dlg_EacTransmitter_1411),\n                    new MyDialogueSentence(MyActorEnum.THOMAS, MySoundCuesEnum.Dlg_EacTransmitter_1071, MyDialoguesWrapperEnum.Dlg_EacTransmitter_1412),\n                    new MyDialogueSentence(MyActorEnum.APOLLO, MySoundCuesEnum.Dlg_EacTransmitter_1072, MyDialoguesWrapperEnum.Dlg_EacTransmitter_1413),\n                }\n            ));\n            #endregion\n\n            Validate();\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Audio/Dialogues/MyDialogueSentence.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Textures;\nusing SysUtils.Utils;\nusing MinerWars.AppCode.Game.Managers.Session;\n\nnamespace MinerWars.AppCode.Game.Audio.Dialogues\n{\n    class MyDialogueSentence\n    {\n        static readonly int MIN_SENTENCE_TIME = 1500;\n        static readonly int MAX_SENTENCE_TIME = 6000;\n\n        public MyActorEnum Actor { get; private set; }\n        public MyActorEnum? Listener { get; private set; }\n        public MySoundCuesEnum? Cue { get; private set; }\n        public MyDialoguesWrapperEnum Text { get; private set; }\n\n        public float SentenceTime_ms { get; private set; }\n        public float PauseBefore_ms { get; private set; }\n\n        public float Noise { get; private set; }\n        public MyGuiFont Font\n        {\n            get\n            {\n                var faction = MySession.PlayerShip == null ? MinerWars.CommonLIB.AppCode.ObjectBuilders.MyMwcObjectBuilder_FactionEnum.Rainiers : MySession.PlayerShip.Faction;\n                switch (MyFactions.GetFactionsRelation(faction, MyActorConstants.GetActorProperties(Actor).Faction))\n                {\n                    case MyFactionRelationEnum.Enemy: return MyHudConstants.ENEMY_FONT;\n                    case MyFactionRelationEnum.Friend: return MyHudConstants.FRIEND_FONT;\n                    default: return MyHudConstants.NEUTRAL_FONT;\n                }\n            }\n        }\n        public MyTexture2D BackgroundTexture\n        {\n            get\n            {\n                var faction = MySession.PlayerShip == null ? MinerWars.CommonLIB.AppCode.ObjectBuilders.MyMwcObjectBuilder_FactionEnum.Rainiers : MySession.PlayerShip.Faction;\n                switch (MyFactions.GetFactionsRelation(faction, MyActorConstants.GetActorProperties(Actor).Faction))\n                {\n                    case MyFactionRelationEnum.Enemy: return MyGuiManager.GetDialogueEnemyBackgroundTexture();\n                    case MyFactionRelationEnum.Friend: return MyGuiManager.GetDialogueFriendBackgroundTexture();\n                    default: return MyGuiManager.GetDialogueNeutralBackgroundTexture();\n                }\n            }\n        }\n\n\n        public MyDialogueSentence(MyActorEnum speaker, MySoundCuesEnum? cue, MyDialoguesWrapperEnum text, float noise = 0.0f, float pauseBefore_ms = 0.0f, MyActorEnum? listener = null)\n        {\n            Actor = speaker;\n            Listener = listener;\n            Cue = cue;\n            Text = text;\n            PauseBefore_ms = pauseBefore_ms;\n\n            SentenceTime_ms = MathHelper.Clamp(MyDialoguesWrapper.Get(Text).Length * 66, MIN_SENTENCE_TIME, MAX_SENTENCE_TIME) + PauseBefore_ms;\n            MyCommonDebugUtils.AssertDebug(noise >= 0 && noise <= 1, \"Bad dialogue sentence noise value!\");\n            Noise = noise;\n            \n            if (MyActorConstants.IsNoiseActor(speaker))\n            {\n                Noise = 1f;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Audio/Dialogues/MyDialogues.cs",
    "content": "﻿using System;\nusing MinerWarsMath;\n\n\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils.Utils;\nusing MinerWars.AppCode.Game.Missions;\nusing MinerWars.AppCode.Game.Managers.Session;\n\nnamespace MinerWars.AppCode.Game.Audio.Dialogues\n{\n    internal delegate void MyDialogueDelegate(MyDialogueEnum dialogue, bool interrupted);\n    internal delegate void MySentenceDelegate(MyDialogueEnum dialogue, MyDialoguesWrapperEnum sentence);\n\n    static class MyDialogues\n    {\n        public static MyDialogueDelegate OnDialogueFinished;\n        public static MySentenceDelegate OnSentenceStarted;\n\n        public static MyDialogue CurrentDialogue { get { return MyDialogueConstants.GetDialogue(m_currentDialogueId); } }\n        public static MyDialogueSentence CurrentSentence\n        { \n            get\n            {\n                var d = CurrentDialogue;\n                if (d == null || m_currentSentenceIndex >= d.Sentences.Length)\n                    return null;\n                else\n                    return d.Sentences[m_currentSentenceIndex];\n            }\n        }\n        public static float CurrentSentenceStarted_ms { get; private set; }\n\n        private static MySoundCue? m_currentCue;\n\n        public static void Play(MyDialogueEnum id)\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyDialogues::Play\");\n\n            if (MinerWars.AppCode.Game.Managers.Session.MySession.PlayerShip != null && MinerWars.AppCode.Game.Managers.Session.MySession.PlayerShip.IsDead())\n            {\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n                return;\n            }\n\n            MyDialogue newDialogue = MyDialogueConstants.GetDialogue(id);\n            if (newDialogue != null && (CurrentDialogue == null || CurrentSentence == null || newDialogue.Priority >= CurrentDialogue.Priority))\n                SwitchTo(id);\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        public static void Stop()\n        {\n            SwitchTo(MyDialogueEnum.NONE);\n        }\n\n        public static void LoadData()\n        {\n        }\n\n        public static void UnloadData()\n        {\n            Stop();\n        }\n\n        public static void Update()\n        {\n            if (CurrentSentence == null) return;\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyDialogues.Update\");\n\n            if ((m_currentCue == null && MyMinerGame.TotalGamePlayTimeInMilliseconds - CurrentSentenceStarted_ms > CurrentSentence.SentenceTime_ms) ||\n                (m_currentCue != null && (!m_currentCue.Value.IsValid || m_currentCue.Value.IsStopped))\n                )\n            {\n                // advance to next sentence or unload\n                m_currentSentenceIndex++;\n                if (m_currentDialogueId != MyDialogueEnum.NONE && m_currentSentenceIndex == CurrentDialogue.Sentences.Length)\n                    if (OnDialogueFinished != null)\n                        OnDialogueFinished(m_currentDialogueId, false);\n\n                PlayCurrentSentence();\n            }\n\n            if (m_currentCue != null && CurrentSentence.PauseBefore_ms != 0 && m_currentCue.Value.IsValid && m_currentCue.Value.IsPaused && MyMinerGame.TotalGamePlayTimeInMilliseconds - CurrentSentenceStarted_ms > CurrentSentence.PauseBefore_ms && !MyMinerGame.IsPaused())\n                m_currentCue.Value.Resume();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        public static bool IsPlaying()\n        {\n            if (CurrentSentence == null || m_currentDialogueId == MyDialogueEnum.NONE || m_currentSentenceIndex >= CurrentDialogue.Sentences.Length) return false;\n            else return true;\n        }\n\n        #region Implementation\n\n        static MyDialogues()\n        {\n            MyMwcLog.WriteLine(\"MyDialogues()\");\n        }\n\n        static MyDialogueEnum m_currentDialogueId = MyDialogueEnum.NONE;\n        static int m_currentSentenceIndex = 0;\n        static float m_volume = 1;\n\n        static void SwitchTo(MyDialogueEnum id)\n        {\n            if (id != MyDialogueEnum.NONE)\n            {\n                foreach (var myDialogueSentence in CurrentDialogue.Sentences)\n                {\n                    if (myDialogueSentence.Listener != null)\n                    {\n                        var speaker = MyScriptWrapper.TryGetEntity(MyActorConstants.GetActorName(myDialogueSentence.Actor)) as MySmallShipBot;\n                        if (speaker != null)\n                        {\n                            speaker.LookTarget = null;\n                        }\n                    }\n                }\n            }\n            if (m_currentDialogueId == MyDialogueEnum.NONE || CurrentSentence == null || OnDialogueFinished == null)\n            {\n                m_currentDialogueId = id;\n                m_currentSentenceIndex = 0;\n            }\n            else\n            {\n                var oldDialogueId = m_currentDialogueId;\n\n                m_currentDialogueId = id;\n                m_currentSentenceIndex = 0;\n\n                OnDialogueFinished(oldDialogueId, true);\n            }\n\n            PlayCurrentSentence();\n        }\n\n        static void StopSound()\n        {\n            if (m_currentCue != null)\n                m_currentCue.Value.Stop(SharpDX.XACT3.StopFlags.Release);\n        }\n\n        static void PlayCurrentSentence()\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"PlayCurrentSentence\");\n\n            StopSound();\n            CurrentSentenceStarted_ms = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n            if (CurrentSentence == null || CurrentSentence.Cue == null)\n            {\n                m_currentCue = null;\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n                return;\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"LoadSentence\");\n\n            if (CurrentSentence.Listener != null)\n            {\n                var speaker = MyScriptWrapper.TryGetEntity(MyActorConstants.GetActorName(CurrentSentence.Actor)) as MySmallShipBot;\n                MySmallShip listener = null;\n                if (CurrentSentence.Listener.Value == MyActorEnum.APOLLO)\n                {\n                    listener = MySession.Static.Player.Ship;\n                } \n                else\n                {\n                    listener = MyScriptWrapper.TryGetEntity(MyActorConstants.GetActorName(CurrentSentence.Listener.Value)) as MySmallShip;\n                }\n                if (speaker != null && listener != null)\n                {\n                    speaker.LookTarget = listener;\n                }\n            }\n            if (CurrentSentence.Cue != null)\n            {\n                m_currentCue = MyAudio.AddCue2D(CurrentSentence.Cue.Value, m_volume);\n\n                if (OnSentenceStarted != null)\n                    OnSentenceStarted(m_currentDialogueId, CurrentSentence.Text);\n\n                if (m_currentCue != null && CurrentSentence.PauseBefore_ms != 0)\n                    m_currentCue.Value.Pause();\n            }\n            else\n            {\n                m_currentCue = null;\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        public static bool IsCurrentCuePausedAndHidden()\n        {\n            return (m_currentCue != null && m_currentCue.Value.IsValid && m_currentCue.Value.IsPaused) ||\n                   (m_currentCue == null && MyMinerGame.TotalGamePlayTimeInMilliseconds - CurrentSentenceStarted_ms < CurrentSentence.PauseBefore_ms);\n        }\n\n        #endregion\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Audio/Dialogues/MyShouts.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.AppCode.Game.Radar;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.GUI;\nusing System.Diagnostics;\nusing MinerWars.AppCode.Game.Entities.SubObjects;\n\n\nnamespace MinerWars.AppCode.Game.Audio.Dialogues\n{\n    static class MyShouts \n    {\n        #region Constants\n        public const int INTERVAL_BETWEEN_SHOUTS_MIN = 10000; //ms\n        public const int INTERVAL_BETWEEN_SHOUTS_MAX = 15000; //ms        \n        #endregion\n\n        #region Static members        \n        private static MySoundCuesEnum? m_lastShoutCue;\n        private static MySoundCue? m_actualShoutCue;\n        private static MyMwcObjectBuilder_FactionEnum? m_actualShoutFaction;\n        private static Dictionary<int, List<MySoundCuesEnum>> m_shouts = null;\n        private static int m_nextShoutTime = 0;\n\n        private static List<MyMwcObjectBuilder_FactionEnum> m_detectedFactions = new List<MyMwcObjectBuilder_FactionEnum>();\n        private static List<IMyObjectToDetect> m_detectedEntities = new List<IMyObjectToDetect>();\n        #endregion\n\n        public static void LoadData()\n        {\n            if (m_shouts == null)\n            {\n                m_shouts = new Dictionary<int, List<MySoundCuesEnum>>();\n\n                // china\n                AddActorsShouts(MyMwcObjectBuilder_FactionEnum.China, MySoundCuesEnum.Amb2D_RadioChatterCH01);\n                AddActorsShouts(MyMwcObjectBuilder_FactionEnum.China, MySoundCuesEnum.Amb2D_RadioChatterCH02);\n                AddActorsShouts(MyMwcObjectBuilder_FactionEnum.China, MySoundCuesEnum.Amb2D_RadioChatterCH03);\n                AddActorsShouts(MyMwcObjectBuilder_FactionEnum.China, MySoundCuesEnum.Amb2D_RadioChatterCH04);\n                AddActorsShouts(MyMwcObjectBuilder_FactionEnum.China, MySoundCuesEnum.Amb2D_RadioChatterCH05);\n                AddActorsShouts(MyMwcObjectBuilder_FactionEnum.China, MySoundCuesEnum.Amb2D_RadioChatterCH06);\n                AddActorsShouts(MyMwcObjectBuilder_FactionEnum.China, MySoundCuesEnum.Amb2D_RadioChatterCH07);\n                AddActorsShouts(MyMwcObjectBuilder_FactionEnum.China, MySoundCuesEnum.Amb2D_RadioChatterCH08);\n                AddActorsShouts(MyMwcObjectBuilder_FactionEnum.China, MySoundCuesEnum.Amb2D_RadioChatterCH09);\n                AddActorsShouts(MyMwcObjectBuilder_FactionEnum.China, MySoundCuesEnum.Amb2D_RadioChatterCH10);\n                AddActorsShouts(MyMwcObjectBuilder_FactionEnum.China, MySoundCuesEnum.Amb2D_RadioChatterCH11);\n                AddActorsShouts(MyMwcObjectBuilder_FactionEnum.China, MySoundCuesEnum.Amb2D_RadioChatterCH12);\n                AddActorsShouts(MyMwcObjectBuilder_FactionEnum.China, MySoundCuesEnum.Amb2D_RadioChatterCH13);\n                AddActorsShouts(MyMwcObjectBuilder_FactionEnum.China, MySoundCuesEnum.Amb2D_RadioChatterCH14);\n                AddActorsShouts(MyMwcObjectBuilder_FactionEnum.China, MySoundCuesEnum.Amb2D_RadioChatterCH15);\n                AddActorsShouts(MyMwcObjectBuilder_FactionEnum.China, MySoundCuesEnum.Amb2D_RadioChatterCH16);\n\n                // russian\n                AddActorsShouts(MyMwcObjectBuilder_FactionEnum.Russian, MySoundCuesEnum.Amb2D_RadioChatterRS01);\n                AddActorsShouts(MyMwcObjectBuilder_FactionEnum.Russian, MySoundCuesEnum.Amb2D_RadioChatterRS02);\n                AddActorsShouts(MyMwcObjectBuilder_FactionEnum.Russian, MySoundCuesEnum.Amb2D_RadioChatterRS03);\n                AddActorsShouts(MyMwcObjectBuilder_FactionEnum.Russian, MySoundCuesEnum.Amb2D_RadioChatterRS04);\n                AddActorsShouts(MyMwcObjectBuilder_FactionEnum.Russian, MySoundCuesEnum.Amb2D_RadioChatterRS05);\n                AddActorsShouts(MyMwcObjectBuilder_FactionEnum.Russian, MySoundCuesEnum.Amb2D_RadioChatterRS06);\n                AddActorsShouts(MyMwcObjectBuilder_FactionEnum.Russian, MySoundCuesEnum.Amb2D_RadioChatterRS07);\n                AddActorsShouts(MyMwcObjectBuilder_FactionEnum.Russian, MySoundCuesEnum.Amb2D_RadioChatterRS08);\n                AddActorsShouts(MyMwcObjectBuilder_FactionEnum.Russian, MySoundCuesEnum.Amb2D_RadioChatterRS09);\n                AddActorsShouts(MyMwcObjectBuilder_FactionEnum.Russian, MySoundCuesEnum.Amb2D_RadioChatterRS10);\n                AddActorsShouts(MyMwcObjectBuilder_FactionEnum.Russian, MySoundCuesEnum.Amb2D_RadioChatterRS11);\n                AddActorsShouts(MyMwcObjectBuilder_FactionEnum.Russian, MySoundCuesEnum.Amb2D_RadioChatterRS12);\n                AddActorsShouts(MyMwcObjectBuilder_FactionEnum.Russian, MySoundCuesEnum.Amb2D_RadioChatterRS13);\n                AddActorsShouts(MyMwcObjectBuilder_FactionEnum.Russian, MySoundCuesEnum.Amb2D_RadioChatterRS14);\n                AddActorsShouts(MyMwcObjectBuilder_FactionEnum.Russian, MySoundCuesEnum.Amb2D_RadioChatterRS15);\n                AddActorsShouts(MyMwcObjectBuilder_FactionEnum.Russian, MySoundCuesEnum.Amb2D_RadioChatterRS16);\n                AddActorsShouts(MyMwcObjectBuilder_FactionEnum.Russian_KGB, MySoundCuesEnum.Amb2D_RadioChatterRS01);\n                AddActorsShouts(MyMwcObjectBuilder_FactionEnum.Russian_KGB, MySoundCuesEnum.Amb2D_RadioChatterRS02);\n                AddActorsShouts(MyMwcObjectBuilder_FactionEnum.Russian_KGB, MySoundCuesEnum.Amb2D_RadioChatterRS03);\n                AddActorsShouts(MyMwcObjectBuilder_FactionEnum.Russian_KGB, MySoundCuesEnum.Amb2D_RadioChatterRS04);\n                AddActorsShouts(MyMwcObjectBuilder_FactionEnum.Russian_KGB, MySoundCuesEnum.Amb2D_RadioChatterRS05);\n                AddActorsShouts(MyMwcObjectBuilder_FactionEnum.Russian_KGB, MySoundCuesEnum.Amb2D_RadioChatterRS06);\n                AddActorsShouts(MyMwcObjectBuilder_FactionEnum.Russian_KGB, MySoundCuesEnum.Amb2D_RadioChatterRS07);\n                AddActorsShouts(MyMwcObjectBuilder_FactionEnum.Russian_KGB, MySoundCuesEnum.Amb2D_RadioChatterRS08);\n                AddActorsShouts(MyMwcObjectBuilder_FactionEnum.Russian_KGB, MySoundCuesEnum.Amb2D_RadioChatterRS09);\n                AddActorsShouts(MyMwcObjectBuilder_FactionEnum.Russian_KGB, MySoundCuesEnum.Amb2D_RadioChatterRS10);\n                AddActorsShouts(MyMwcObjectBuilder_FactionEnum.Russian_KGB, MySoundCuesEnum.Amb2D_RadioChatterRS11);\n                AddActorsShouts(MyMwcObjectBuilder_FactionEnum.Russian_KGB, MySoundCuesEnum.Amb2D_RadioChatterRS12);\n                AddActorsShouts(MyMwcObjectBuilder_FactionEnum.Russian_KGB, MySoundCuesEnum.Amb2D_RadioChatterRS13);\n                AddActorsShouts(MyMwcObjectBuilder_FactionEnum.Russian_KGB, MySoundCuesEnum.Amb2D_RadioChatterRS14);\n                AddActorsShouts(MyMwcObjectBuilder_FactionEnum.Russian_KGB, MySoundCuesEnum.Amb2D_RadioChatterRS15);\n                AddActorsShouts(MyMwcObjectBuilder_FactionEnum.Russian_KGB, MySoundCuesEnum.Amb2D_RadioChatterRS16);\n\n                // shared for all other factions\n                foreach (MyMwcObjectBuilder_FactionEnum faction in Enum.GetValues(typeof(MyMwcObjectBuilder_FactionEnum)))\n                {\n                    if (faction == MyMwcObjectBuilder_FactionEnum.China ||\n                        faction == MyMwcObjectBuilder_FactionEnum.Russian ||\n                        faction == MyMwcObjectBuilder_FactionEnum.Russian_KGB)\n                    {\n                        continue;\n                    }\n                    AddActorsShouts(faction, MySoundCuesEnum.Amb2D_RadioChatterAL01);\n                    AddActorsShouts(faction, MySoundCuesEnum.Amb2D_RadioChatterAL02);\n                    AddActorsShouts(faction, MySoundCuesEnum.Amb2D_RadioChatterAL03);\n                    AddActorsShouts(faction, MySoundCuesEnum.Amb2D_RadioChatterAL04);\n                    AddActorsShouts(faction, MySoundCuesEnum.Amb2D_RadioChatterAL05);\n                    AddActorsShouts(faction, MySoundCuesEnum.Amb2D_RadioChatterAL06);\n                    AddActorsShouts(faction, MySoundCuesEnum.Amb2D_RadioChatterAL07);\n                    AddActorsShouts(faction, MySoundCuesEnum.Amb2D_RadioChatterAL08);\n                    AddActorsShouts(faction, MySoundCuesEnum.Amb2D_RadioChatterAL09);\n                    AddActorsShouts(faction, MySoundCuesEnum.Amb2D_RadioChatterAL10);\n                    AddActorsShouts(faction, MySoundCuesEnum.Amb2D_RadioChatterAL11);\n                    AddActorsShouts(faction, MySoundCuesEnum.Amb2D_RadioChatterAL12);\n                    AddActorsShouts(faction, MySoundCuesEnum.Amb2D_RadioChatterAL13);\n                    AddActorsShouts(faction, MySoundCuesEnum.Amb2D_RadioChatterAL14);\n                }\n            }\n        }\n\n        public static void UnloadData() \n        {\n            m_detectedEntities.Clear();\n            m_detectedFactions.Clear();\n            m_lastShoutCue = null;\n            m_nextShoutTime = 0;\n            StopShout();\n        }\n\n        public static void Update() \n        {\n            Debug.Assert(MyFakes.ENABLE_SHOUT);            \n            m_detectedEntities.Clear();\n            m_detectedFactions.Clear();\n            if (MySession.PlayerShip == null) return;\n\n            if (MyDialogues.CurrentSentence != null && !MyDialogues.IsCurrentCuePausedAndHidden())\n            {\n                StopShout();\n                return;\n            }\n\n            MyRadar.GetDetectedBotsAndLargeWeapons(ref m_detectedEntities);            \n            foreach(IMyObjectToDetect detectedObject in m_detectedEntities)\n            {\n                // check if detected object can shout\n                if (CanShout(detectedObject))\n                {\n                    MyMwcObjectBuilder_FactionEnum factionForShout = GetFactionForShout((MyEntity)detectedObject);\n                    // we want add only factions which have any shout\n                    if (HasFactionShouts(factionForShout))\n                    {\n                        // add this faction as detected                            \n                        if (!m_detectedFactions.Contains(factionForShout))\n                        {\n                            m_detectedFactions.Add(factionForShout);\n                        }\n                    }\n                }\n            }\n            UpdateShouts();\n        }\n\n        private static void AddActorsShouts(MyMwcObjectBuilder_FactionEnum faction, MySoundCuesEnum shoutCue)\n        {\n            if (!m_shouts.ContainsKey((int)faction))\n            {\n                m_shouts.Add((int)faction, new List<MySoundCuesEnum>());\n            }\n\n            m_shouts[(int)faction].Add(shoutCue);\n        }\n\n        private static List<MySoundCuesEnum> GetShouts(MyMwcObjectBuilder_FactionEnum faction)\n        {\n            if (m_shouts.ContainsKey((int)faction))\n            {\n                return m_shouts[(int)faction];\n            }\n            return null;\n        }\n\n        private static void StopShout() \n        {\n            if (m_actualShoutCue != null && m_actualShoutCue.Value.IsPlaying)\n            {\n                m_actualShoutCue.Value.Stop(SharpDX.XACT3.StopFlags.Immediate);\n                m_actualShoutCue = null;\n                m_actualShoutFaction = null;\n            }\n        }\n\n        private static bool CanShout(IMyObjectToDetect detectedObject) \n        {\n            MyEntity detectedEntity = detectedObject as MyEntity;\n\n            if (detectedEntity != null)\n            {\n                MyFactionRelationEnum factionRelation = MyFactions.GetFactionsRelation(MySession.PlayerShip, detectedEntity);                \n                if (detectedEntity is MySmallShipBot && factionRelation != MyFactionRelationEnum.Friend) \n                {\n                    MySmallShipBot bot = detectedEntity as MySmallShipBot;\n                    return !bot.IsParked() && !bot.IsPilotDead();\n                }\n                if (detectedEntity is MyPrefabLargeWeapon && factionRelation == MyFactionRelationEnum.Enemy) \n                {\n                    MyPrefabLargeWeapon largeWeapon = detectedEntity as MyPrefabLargeWeapon;\n                    return largeWeapon.IsWorking();\n                }\n            }\n            return false;\n        }\n\n        private static bool HasFactionShouts(MyMwcObjectBuilder_FactionEnum faction) \n        {\n            int factionKey = (int)faction;\n            List<MySoundCuesEnum> factionShouts = GetShouts(faction);\n            return factionShouts != null && factionShouts.Count > 0;\n        }\n\n        private static void UpdateShouts() \n        {\n            // check for new shout to start\n            if (m_actualShoutCue == null || !m_actualShoutCue.Value.IsPlaying)\n            {\n                // check if we can start new shout\n                if (m_nextShoutTime < MyMinerGame.TotalGamePlayTimeInMilliseconds)\n                {\n                    // gets random faction to shout (from detected factions by radar)\n                    MyMwcObjectBuilder_FactionEnum? factionToShout = GetRandomDetectedFaction();\n                    if (factionToShout != null)\n                    {\n                        MySoundCuesEnum shoutCue = GetRandomShout(factionToShout.Value);\n                        m_actualShoutCue = MyAudio.AddCue2D(shoutCue);\n                        if (m_actualShoutCue != null)\n                        {\n                            // because shouts can be ambient cues, so we must set correct volume for these cues\n                            if (m_actualShoutCue.Value.IsAmbientSound)\n                            {\n                                MyAudio.UpdateCueAmbVolume(m_actualShoutCue, 100f);\n                            }\n                            else \n                            {\n                                MyAudio.UpdateCueVolume(m_actualShoutCue, 0.9f);\n                            }\n                            m_actualShoutFaction = factionToShout;\n                            m_lastShoutCue = shoutCue;\n\n                            // calculate new time for next shout\n                            m_nextShoutTime = MyMinerGame.TotalGamePlayTimeInMilliseconds + MyMwcUtils.GetRandomInt(INTERVAL_BETWEEN_SHOUTS_MIN, INTERVAL_BETWEEN_SHOUTS_MAX);                            \n                        }\n                    }\n                }\n            }\n            // check for old shout to stop\n            else \n            {\n                if (!m_detectedFactions.Contains(m_actualShoutFaction.Value))\n                {\n                    StopShout();\n                }\n            }\n        }\n\n        private static MyMwcObjectBuilder_FactionEnum? GetRandomDetectedFaction() \n        {\n            MyMwcObjectBuilder_FactionEnum? randomDetectedFaction = null;\n            if (m_detectedFactions.Count > 0) \n            {\n                int randomFactionIndex = MyMwcUtils.GetRandomInt(m_detectedFactions.Count - 1);\n                randomDetectedFaction = m_detectedFactions[randomFactionIndex];              \n            }\n            return randomDetectedFaction;\n        }        \n\n        private static MySoundCuesEnum GetRandomShout(MyMwcObjectBuilder_FactionEnum faction)\n        {\n            int index;\n            List<MySoundCuesEnum> shouts = GetShouts(faction);            \n            do\n            {\n                index = MyMwcUtils.GetRandomInt(shouts.Count);\n            } while (m_lastShoutCue.HasValue && shouts.Count > 1 && m_lastShoutCue.Value == shouts[index]);\n\n            return shouts[index];\n        }\n\n        private static MyMwcObjectBuilder_FactionEnum GetFactionForShout(MyEntity entity)\n        {\n            if (MyFakes.SHOUTS_PREFERED_FACTION.HasValue)\n            {\n                return MyFakes.SHOUTS_PREFERED_FACTION.Value;\n            }\n            else\n            {\n                return entity.Faction;\n            }\n        }\n    }    \n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Audio/MyAudio.cs",
    "content": "﻿//#define DEBUG_AUDIO\n\nusing System;\nusing System.Collections.Generic;\nusing MinerWarsMath;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Utils;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Physics;\nusing MinerWars.AppCode.Game.Physics;\nusing SysUtils;\nusing SharpDX.XACT3;\nusing SharpDX.X3DAudio;\n\n//  IMPORTANT: You can load sounds only in main thread (not background thread). It will not throw exception, but sounds loaded on background thread\n//  will be silent when played on main thread (on XP, on Vista it's OK).\n\n//  Use this class to play one-time or looping sounds.\n//  It's based on 3D features of XACT. I did tests, and it looks that XATC doesn't create unvanted garbage, even if new sounds are created by m_soundBank.GetCue(...)\n//  How I tested: in MyGuiScreenGameBase.Static.Update method, I started explosion sound every 100 milisecons, at random location. I let it runing few minutes and watched output of\n//  how many GC collections were run. No one was there, so I assume, XACT is allocating cues from its own preallocated buffer.\n//\n//  By the way, this test tells me, I can run 10 sounds per second without any performance (speed or memory) problems. Probably we can run more, but I don't need it.\n\nnamespace MinerWars.AppCode.Game.Audio\n{\n    using System.IO;\n    using System.Reflection;\n    using System.Runtime.CompilerServices;\n    using System.Runtime.ConstrainedExecution;\n    using System.Runtime.InteropServices;\n    using System.Security;\n    using System.Threading;\n    using KeenSoftwareHouse.Library.Trace;\n    using MinerWars.AppCode.Game.Managers.Session;\n    using System.Diagnostics;\n    using System.Text;\n    using KeenSoftwareHouse.Library.Extensions;\n    using SharpDX.Toolkit;\n\n    enum MyMusicState\n    {\n        Stopped,\n        Playing,\n        Transition,\n    }\n\n    static partial class MyAudio\n    {\n        //  XACT objects\n        static AudioEngine m_audioEngine;\n        static MyX3DAudio m_x3dAudio;\n        static List<WaveBank> m_waveBanks;\n        static SoundBank m_sfxSoundBank;\n        static SoundBank m_musicSoundBank;\n        static SoundBank m_dialogueSoundBank;\n        static SoundBank m_voiceSoundBank;\n        //static SoundBank m_voiceSoundBank;\n        static Listener m_listener;\n        static Emitter m_helperEmitter;          // The emitter describes an entity which is making a 3D sound.\n        static AudioCategory m_cockpitCategory;\n        static AudioCategory m_defaultCategory;\n        static AudioCategory m_musicCategory;\n        static AudioCategory m_guiCategory;\n        static AudioCategory m_wep2DCategory;\n        static AudioCategory m_doorCategory;\n        static AudioCategory m_enginesCategory;\n        static AudioCategory m_dialogueCategory;\n        static AudioCategory m_shoutsCategory;\n        static AudioCategory m_hudCategory;\n        static AudioCategory m_ambCategory;\n        static AudioCategory m_drillsCategory;\n        static AudioCategory m_impCategory;\n        static AudioCategory m_importantsCategory;\n        static AudioCategory m_sfxCategory;\n        static AudioCategory m_voiceCategory;\n        static AudioCategory m_wep3DCategory;\n        static AudioCategory m_xCategory;\n        static AudioCategory m_welcomeCategory;\n        static List<AudioCategory> m_gameCategories;\n        static float m_volumeGui;\n        static float m_volumeDefault;\n        static float m_volumeMusic;\n        static float m_reverbControl;\n        static bool m_canPlay;\n        static bool m_gameSoundsOn;\n        static bool m_musicOn;\n        static bool m_musicAllowed;\n        static bool m_loopMusic = true;\n\n        static MyCuePool m_cuePool;\n\n        static MyCueInfo[] m_cueInfos;\n\n        static HashSet<WeakReference>[] m_nonLoopableCuesLimit;    //  Here we will remember every non-loopable cue we are playing. It will serve for limiting max count of same cues played too.\n\n        //  Numbers must correspond to real number of wave files for corresponding cue\n        const int MUS_MAIN_MENU_WAVES_COUNT = 7;\n        const int MUS_STORY_AMBIENT_WAVES_COUNT = 23;\n        const string WAVEBANK_SUFFIX = \".xwb\";\n\n        static Dictionary<uint, MySoundCue> m_collisionDictionary = new Dictionary<uint, MySoundCue>(MyAudioConstants.MAX_COLLISION_SOUNDS);\n        static Dictionary<int, List<int>> m_collisionSoundsDictionary = new Dictionary<int, List<int>>();\n        static List<uint> m_collisionDictionaryRemovals = new List<uint>(MyAudioConstants.MAX_COLLISION_SOUNDS);\n\n        //  Music cues\n        struct MyMusicTransition\n        {\n            public int Priority;\n            public MyMusicTransitionEnum TransitionEnum;\n            public string Category;\n\n            public MyMusicTransition(int priority, MyMusicTransitionEnum transitionEnum, string category)\n            {\n                Priority = priority;\n                TransitionEnum = transitionEnum;\n                Category = category;\n            }\n        }\n\n        static MySoundCue? m_musicCue = null;\n        static MyMusicState m_musicState = MyMusicState.Stopped;\n        static bool m_transitionForward = false;\n        static SortedList<int, MyMusicTransition> m_nextTransitions = new SortedList<int, MyMusicTransition>();\n        static MyMusicTransition? m_currentTransition;\n        static int m_timeFromTransitionStart = 0;                   // in ms\n        const int TRANSITION_TIME = 2000;                           // in ms\n\n        //  Number of sound instances (cue) created/added from the application start\n        static int m_soundInstancesTotal2D = 0;\n        static int m_soundInstancesTotal3D = 0;\n\n        //  Events\n        public delegate void EventHandler();\n        public delegate void VolumeChangeHandler(float newVolume);\n        public static event EventHandler OnStop, OnPause, OnResume;\n        public static event VolumeChangeHandler OnSetVolumeGui, OnSetVolumeGame, OnSetVolumeMusic;\n\n        public static MyX3DAudio X3DAudio { get { return m_x3dAudio; } }\n\n#if DEBUG_AUDIO\n\n        static List<Matrix> m_soundCollisions = new List<Matrix>();\n\n        static MyAudio()\n        {\n\n            Render.MyRender.RegisterRenderModule(\"Audio\", DebugDraw, Render.MyRenderStage.DebugDraw, 300, true);\n\n        }\n\n#endif\n\n        public static void LoadData()\n        {\n            MyMwcLog.WriteLine(\"MyAudio.LoadData - START\");\n            MyMwcLog.IncreaseIndent();\n\n            m_canPlay = true;\n            try\n            {\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"new AudioEngine\");\n                //TimeSpan timeSpan = TimeSpan.FromMilliseconds(250);\n                //m_audioEngine = new AudioEngine(MyPlugins.GetAudioFolder() + \"Audio.xgs\", timeSpan, \"\");\n                using (var file = File.OpenRead(MyPlugins.GetAudioFolder() + \"Audio.xgs\"))\n                {\n                    m_audioEngine = new AudioEngine(file);\n                    m_cuePool = new MyCuePool(m_audioEngine);\n                }\n\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"new MyX3DAudio\");\n\n                m_x3dAudio = new MyX3DAudio(m_audioEngine);\n\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n            }\n            catch (Exception ex)\n            {\n                MyMwcLog.WriteLine(\"Exception during loading audio engine. Game continues, but without sound. Details: \" + ex.ToString(), LoggingOptions.AUDIO);\n\n                //  This exception is the only way I can know if we can play sound (e.g. if computer doesn't have sound card).\n                //  I didn't find other ways of checking it.\n                m_canPlay = false;\n            }\n\n            if (m_canPlay)\n            {\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyXactVariables.LoadData\");\n                MyXactVariables.LoadData();\n\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"AddWaveBanks\");\n                // IMPORTANT!!! Currently, there is problem with multiple XACT projects, that when anything changes in Music.xap or Voice.xap,\n                // it is necessary to open and save Sounds.xap also, in order to run the game properly(otherwise it has problem to load the SoundBank.xsb)\n                // this will be solved later in future\n                AddWaveBanks();\n\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"Adding sound banks\");\n\n                MyMwcLog.WriteLine(\"Adding sound banks\", LoggingOptions.AUDIO);\n                using (var file = File.OpenRead(MyPlugins.GetAudioFolder() + \"Music.xsb\"))\n                {\n                    m_musicSoundBank = new SoundBank(m_audioEngine, file);\n                }\n                using (var file = File.OpenRead(MyPlugins.GetAudioFolder() + \"Sounds.xsb\"))\n                {\n                    m_sfxSoundBank = new SoundBank(m_audioEngine, file);\n                }\n                using (var file = File.OpenRead(MyPlugins.GetAudioFolder() + \"Dialogues.xsb\"))\n                {\n                    m_dialogueSoundBank = new SoundBank(m_audioEngine, file);\n                }\n                using (var file = File.OpenRead(MyPlugins.GetAudioFolder() + \"Voice.xsb\"))\n                {\n                    m_voiceSoundBank = new SoundBank(m_audioEngine, file);\n                }\n\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"Categories\");\n\n                //m_voiceSoundBank = new SoundBank(m_audioEngine, MyPlugins.GetAudioFolder() + \"Voice.xsb\");\n                m_listener = new Listener();\n                m_listener.SetDefaultValues();\n                m_helperEmitter = new Emitter();\n                m_helperEmitter.SetDefaultValues();\n                m_defaultCategory = m_audioEngine.GetCategoryInstance(\"Default\");\n                m_wep2DCategory = m_audioEngine.GetCategoryInstance(\"wep2d\");\n                m_cockpitCategory = m_audioEngine.GetCategoryInstance(\"Cockpit\");\n                m_musicCategory = m_audioEngine.GetCategoryInstance(\"Music\");\n                m_guiCategory = m_audioEngine.GetCategoryInstance(\"Gui\");\n                m_doorCategory = m_audioEngine.GetCategoryInstance(\"Door\");\n                m_enginesCategory = m_audioEngine.GetCategoryInstance(\"Engines\");\n                m_dialogueCategory = m_audioEngine.GetCategoryInstance(\"Dialogues\");\n                m_shoutsCategory = m_audioEngine.GetCategoryInstance(\"Shouts\");\n                m_hudCategory = m_audioEngine.GetCategoryInstance(\"VocHud\");\n                m_ambCategory = m_audioEngine.GetCategoryInstance(\"Amb\");\n                m_drillsCategory = m_audioEngine.GetCategoryInstance(\"Drills\");\n                m_impCategory = m_audioEngine.GetCategoryInstance(\"Imp\");\n                m_importantsCategory = m_audioEngine.GetCategoryInstance(\"IMPORTANTS\");\n                m_sfxCategory = m_audioEngine.GetCategoryInstance(\"Sfx\");\n                m_voiceCategory = m_audioEngine.GetCategoryInstance(\"Voice\");\n                m_welcomeCategory = m_audioEngine.GetCategoryInstance(\"Welcomes\");\n                m_wep3DCategory = m_audioEngine.GetCategoryInstance(\"Wep3D\");\n                m_xCategory = m_audioEngine.GetCategoryInstance(\"X\");\n\n                m_gameCategories = new List<AudioCategory>();\n                m_gameCategories.Add(m_defaultCategory);\n                m_gameCategories.Add(m_wep2DCategory);\n                m_gameCategories.Add(m_cockpitCategory);\n                m_gameCategories.Add(m_doorCategory);\n                m_gameCategories.Add(m_enginesCategory);\n                m_gameCategories.Add(m_dialogueCategory);\n                m_gameCategories.Add(m_shoutsCategory);\n                m_gameCategories.Add(m_hudCategory);\n                m_gameCategories.Add(m_ambCategory);\n                m_gameCategories.Add(m_drillsCategory);\n                m_gameCategories.Add(m_impCategory);\n                m_gameCategories.Add(m_importantsCategory);\n                m_gameCategories.Add(m_sfxCategory);\n                m_gameCategories.Add(m_voiceCategory);\n                m_gameCategories.Add(m_welcomeCategory);\n                m_gameCategories.Add(m_wep3DCategory);\n                m_gameCategories.Add(m_xCategory);\n\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"WaitForWaveBanks\");\n\n                //  AudioEngine.Update needs to be called at least once before a streaming wave bank is ready\n                MyMwcLog.WriteLine(\"Updating audio engine...\", LoggingOptions.AUDIO);\n                WaitForWaveBanks();\n\n                //  This is reverb turned to off, so we hear sounds as they are defined in wav files\n                ReverbControl = 100;\n\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"PreloadCueInfo\");\n\n                PreloadCueInfo(); // Takes about 26 ms\n\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"ValidateCues\");\n\n#if DEBUG\n                ThreadPool.QueueUserWorkItem(ValidateCue_Thread); // Takes 4000 ms on background thread\n#endif\n\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"InitCueParameters\");\n\n                InitCueParameters();\n\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"InitNonLoopableCuesLimitRemoveHelper\");\n\n                InitNonLoopableCuesLimitRemoveHelper();\n\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"MyHudAudio.LoadData\");\n\n                MyHudAudio.LoadData();\n\n                //  Volume from config\n                m_musicOn = true;\n                m_gameSoundsOn = true;\n                m_musicAllowed = true;\n                VolumeMusic = MyConfig.MusicVolume;\n                VolumeGame = MyConfig.GameVolume;\n                VolumeGui = MyConfig.GameVolume;\n                MyConfig.MusicVolume = VolumeMusic;\n                MyConfig.GameVolume = VolumeGame;\n\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"MyConfig.Save\");\n\n                MyConfig.Save();\n\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n            }\n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyAudio.LoadData - END\");\n        }\n\n        private static void ValidateCue_Thread(object state)\n        {\n            ValidateCues(); // Takes 4000 ms\n        }\n\n        private static void WaitForWaveBanks()\n        {\n            foreach (var bank in m_waveBanks)\n            {\n                while (!bank.IsPrepared())\n                {\n                    m_audioEngine.DoWork();\n                }\n            }\n        }\n\n        private static void PreloadCueInfo()\n        {\n            int cueCount = MyMwcUtils.GetMaxValueFromEnum<MySoundCuesEnum>() + 1;\n            m_cueInfos = new MyCueInfo[cueCount];\n            for (int i = 0; i < cueCount; i++)\n            {\n                string cueName = MyEnumsToStrings.Sounds[i];\n                SoundBank soundBank = GetSoundBank(cueName);\n                short cueIndex = soundBank.GetCueIndex(cueName);\n                m_cueInfos[i] = new MyCueInfo() { SoundBank = soundBank, CueIndex = cueIndex };\n            }\n        }\n\n        //  USE THIS METHOD TO ADD MORE WAVEBANKS!!!\n        public static void UnloadData()\n        {\n            MyMwcLog.WriteLine(\"MyAudio.UnloadData - START\");\n\n            MyHudAudio.UnloadData();\n\n            //  This will quiet down the sounds and music immediatelly so we won't hear squeaking when starting background unload thread\n            if (m_audioEngine != null)\n            {\n                VolumeGame = 0;\n                VolumeMusic = 0;\n                m_audioEngine.DoWork();\n            }\n\n            //  We need to dispose sounds because when unloading whole game-play screen, we need to turn-off any currently played sounds\n            if (m_waveBanks != null)\n            {\n                foreach (WaveBank waveBank in m_waveBanks)\n                {\n                    if (!waveBank.IsDisposed)\n                        waveBank.Dispose();\n                }\n                m_waveBanks.Clear();\n                m_waveBanks = null;\n            }\n\n            if (m_sfxSoundBank != null) m_sfxSoundBank.Dispose();\n            if (m_musicSoundBank != null) m_musicSoundBank.Dispose();\n            if (m_dialogueSoundBank != null) m_dialogueSoundBank.Dispose();\n            if (m_voiceSoundBank != null) m_voiceSoundBank.Dispose();\n            //if (m_voiceSoundBank != null) m_voiceSoundBank.Dispose();\n\n            m_x3dAudio = null;\n\n            m_cuePool.Dispose();\n\n            if (m_audioEngine != null) m_audioEngine.Dispose();\n\n            MyXactVariables.UnloadData();\n\n            MyMwcLog.WriteLine(\"MyAudio.UnloadData - END\");\n        }\n\n        public static void UnloadContent()\n        {\n            MyMwcLog.WriteLine(\"MyAudio.UnloadContent - START\");\n            MyMwcLog.IncreaseIndent();\n\n            ClearMusicTransitions();\n            foreach (var item in m_collisionSoundsDictionary.Values)\n            {\n                item.Clear();\n            }\n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyAudio.UnloadContent - END\");\n        }\n\n        static void AddWaveBanks()\n        {\n            //wavebanks issue - http://social.msdn.microsoft.com/forums/en-US/xnaframework/thread/85594964-8220-483c-a27f-8bc10f112a42/\n\n            // Important - count is used, when there are multiple wavebanks having same name, but they have number suffix(MusMainMenu01, MusMainMenu02 etc.)\n            //AddWaveBanksForName(\"Voice\", 1, ref m_waveBanks, 16);\n            AddWaveBanksForName(\"SfxGeneral\", 1, ref m_waveBanks, null);\n            AddWaveBanksForName(\"SfxAmbient\", 1, ref m_waveBanks, 16);\n            //AddWaveBanksForName(\"MusMainMenu\", MUS_MAIN_MENU_WAVES_COUNT, ref m_waveBanks, 16);\n            //AddWaveBanksForName(\"MusStoryAmbient\", MUS_STORY_AMBIENT_WAVES_COUNT, ref m_waveBanks, 16);\n            //AddWaveBanksForName(\"Music\", 1, ref m_waveBanks, 16);\n            AddWaveBanksForName(\"MusicCalm\", 1, ref m_waveBanks, 16);\n            AddWaveBanksForName(\"MusicDesperate\", 1, ref m_waveBanks, 16);\n            AddWaveBanksForName(\"MusicHeavyFight\", 1, ref m_waveBanks, 16);\n            AddWaveBanksForName(\"MusicHorror\", 1, ref m_waveBanks, 16);\n            AddWaveBanksForName(\"MusicLightFight\", 1, ref m_waveBanks, 16);\n            AddWaveBanksForName(\"MusicMystery\", 1, ref m_waveBanks, 16);\n            AddWaveBanksForName(\"MusicSadness\", 1, ref m_waveBanks, 16);\n            AddWaveBanksForName(\"MusicSpecial\", 1, ref m_waveBanks, 16);\n            AddWaveBanksForName(\"MusicStealth\", 1, ref m_waveBanks, 16);\n            AddWaveBanksForName(\"MusicStress\", 1, ref m_waveBanks, 16);\n            AddWaveBanksForName(\"MusicTension\", 1, ref m_waveBanks, 16);\n            AddWaveBanksForName(\"MusicTrailer\", 1, ref m_waveBanks, 16);\n            AddWaveBanksForName(\"MusicVictory\", 1, ref m_waveBanks, 16);\n            AddWaveBanksForName(\"Welcomes\", 1, ref m_waveBanks, 16);\n            AddWaveBanksForName(\"Dialogues\", 1, ref m_waveBanks, 16);\n            AddWaveBanksForName(\"Dialogues2\", 1, ref m_waveBanks, 16);\n            AddWaveBanksForName(\"Dialogues3\", 1, ref m_waveBanks, 16);\n            AddWaveBanksForName(\"Dialogues4\", 1, ref m_waveBanks, 16);\n            AddWaveBanksForName(\"Dialogues5\", 1, ref m_waveBanks, 16);\n            AddWaveBanksForName(\"Dialogues6_1\", 1, ref m_waveBanks, 16);\n            AddWaveBanksForName(\"Dialogues6_2\", 1, ref m_waveBanks, 16);\n            AddWaveBanksForName(\"Dialogues7\", 1, ref m_waveBanks, 16);\n            AddWaveBanksForName(\"Dialogues8a\", 1, ref m_waveBanks, 16);\n            AddWaveBanksForName(\"Dialogues8b\", 1, ref m_waveBanks, 16);\n            AddWaveBanksForName(\"Dialogues8c\", 1, ref m_waveBanks, 16);\n            AddWaveBanksForName(\"Dialogues8d\", 1, ref m_waveBanks, 16);\n            AddWaveBanksForName(\"Dialogues8e\", 1, ref m_waveBanks, 16);\n            AddWaveBanksForName(\"Dialogues9a\", 1, ref m_waveBanks, 16);\n            AddWaveBanksForName(\"Dialogues9b\", 1, ref m_waveBanks, 16);\n            AddWaveBanksForName(\"Dialogues9c\", 1, ref m_waveBanks, 16);\n            AddWaveBanksForName(\"Dialogues9d\", 1, ref m_waveBanks, 16);\n            AddWaveBanksForName(\"Dialogues9e\", 1, ref m_waveBanks, 16);\n            AddWaveBanksForName(\"Dialogues10\", 1, ref m_waveBanks, 16);\n            AddWaveBanksForName(\"Dialogues12\", 1, ref m_waveBanks, 16);\n            AddWaveBanksForName(\"Dialogues13\", 1, ref m_waveBanks, 16);\n            AddWaveBanksForName(\"Dialogues14\", 1, ref m_waveBanks, 16);\n            AddWaveBanksForName(\"Dialogues15\", 1, ref m_waveBanks, 16);\n            AddWaveBanksForName(\"Dialogues16\", 1, ref m_waveBanks, 16);\n            AddWaveBanksForName(\"Dialogues17\", 1, ref m_waveBanks, 16);\n            AddWaveBanksForName(\"Dialogues18a\", 1, ref m_waveBanks, 16);\n            AddWaveBanksForName(\"Dialogues18b\", 1, ref m_waveBanks, 16);\n            AddWaveBanksForName(\"Dialogues18c\", 1, ref m_waveBanks, 16);\n            AddWaveBanksForName(\"Dialogues19\", 1, ref m_waveBanks, 16);\n            AddWaveBanksForName(\"Dialogues20\", 1, ref m_waveBanks, 16);\n            AddWaveBanksForName(\"Dialogues21\", 1, ref m_waveBanks, 16);\n            AddWaveBanksForName(\"Dialogues22\", 1, ref m_waveBanks, 16);\n            AddWaveBanksForName(\"Voice\", 1, ref m_waveBanks, 16);\n        }\n\n        static void AddWaveBanksForName(string name, int count, ref List<WaveBank> addToList, short? packetSize)\n        {\n            MyMwcLog.WriteLine(\"AddWaveBanksForName for: \" + name, LoggingOptions.AUDIO);\n\n            if (addToList == null) addToList = new List<WaveBank>();\n            string waveBankPath = MyPlugins.GetAudioFolder() + name;\n            if (count == 1)\n            {\n                addToList.Add(CreateWaveBank(waveBankPath + WAVEBANK_SUFFIX, packetSize));\n            }\n            else\n            {\n                for (int i = 1; i <= count + 1; i++)\n                {\n                    string counter = i < 10 ? \"0\" + i : i.ToString();\n                    string waveBankCompletePath = waveBankPath + counter + WAVEBANK_SUFFIX;\n                    addToList.Add(CreateWaveBank(waveBankCompletePath, packetSize));\n                }\n            }\n        }\n\n        static WaveBank CreateWaveBank(string bankFileName, short? packetSize)\n        {\n            try\n            {\n                if (packetSize.HasValue)\n                {\n                    return new WaveBank(m_audioEngine, bankFileName, 0, packetSize.Value);\n                }\n                else\n                {\n                    return MyInMemoryWaveBank.Create(m_audioEngine, bankFileName);\n                }\n            }\n            catch (OutOfMemoryException)\n            {\n                string error = string.Format(\"Out of memory when creating new wave bank.\\nDebug data:\\nbankFileName {0}\\npacketSize {1}\", bankFileName, packetSize);\n                MyCommonDebugUtils.AssertDebug(false, error);\n                MyMwcLog.WriteLine(error);\n                throw;\n            }\n        }\n\n        public static bool Mute = false;\n\n        //  Updates the state of the 3D audio system.\n        public static void Update(bool ignoreGameReadyStatus = false)\n        {\n            if (!MyMinerGame.IsGameReady && !ignoreGameReadyStatus)\n                return;\n\n            //Moved m_cuePool.Update before Mute test, otherwise cues werent destroyed\n            if (m_cuePool != null)\n                m_cuePool.Update();\n\n            if (Mute) return;\n\n            if (MyMinerGame.IsPaused() == false && m_canPlay)\n            {\n                UpdateCollisionCues();\n            }\n\n            if (m_canPlay)\n            {\n                // Tell the AudioManager about the new camera position.\n                m_listener.Position = SharpDXHelper.ToSharpDX(MyCamera.Position);\n                m_listener.OrientFront = -SharpDXHelper.ToSharpDX(MyCamera.ForwardVector);\n                m_listener.OrientTop = SharpDXHelper.ToSharpDX(MyCamera.UpVector);\n                m_listener.Velocity = SharpDXHelper.ToSharpDX(MyCamera.Velocity);\n                //  Update the XACT engine.\n                if (!MySystemTimer.IsSetMinResolution())\n                {\n                    Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"audioEngine.Update\");\n                    //TODO: 0.5ms \n                    m_audioEngine.DoWork();\n                    Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n                }\n                Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyAudio.UpdateHudCues\");\n                //TODO\n                //MyHudAudio.Update();\n                UpdateMusic();\n              \n                Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n            }\n        }\n\n        //  Use this if you want to use default volume level -> this is the prefered way because in 99% cases we don't want to set per-sound volume\n        public static MySoundCue? AddCue2dOr3d(MyEntity physObject, MySoundCuesEnum cueEnum,\n            Vector3 position, Vector3 forward, Vector3 up, Vector3 velocity)\n        {\n            return AddCue2dOr3d(physObject, cueEnum, position, forward, up, velocity, 1);\n        }\n\n        //  This method decides if player sits inside this object and if yes, play 2D stereo sound.\n        //  If not then 3D mono sound.\n        public static MySoundCue? AddCue2dOr3d(MyEntity physObject, MySoundCuesEnum cueEnum,\n            Vector3 position, Vector3 forward, Vector3 up, Vector3 velocity, float volume)\n        {\n            if (!MyMinerGame.IsGameReady)\n                return null;\n\n            MySoundCue? ret = null;\n\n            if (m_canPlay == false) return null;\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"AddCue2dOr3d\");\n\n            bool play3D = true;\n            if ((physObject == MySession.PlayerShip && MyGuiScreenGamePlay.Static != null && MyGuiScreenGamePlay.Static.CameraAttachedTo == MyCameraAttachedToEnum.PlayerMinerShip) ||\n                (MyGuiScreenGamePlay.Static != null && physObject == MyGuiScreenGamePlay.Static.ControlledEntity && MyGuiScreenGamePlay.Static.CameraAttachedTo != MyCameraAttachedToEnum.Spectator))\n            {\n                //  Find 2D version for this sound\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"GetVersion2D\");\n                cueEnum = GetVersion2D(cueEnum);\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n                play3D = false;\n            }\n\n            if (play3D)\n            {\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"AddCue3d\");\n                ret = AddCue3D(cueEnum, position, forward, up, velocity, volume);\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n            }\n            else\n            {\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"AddCue2d\");\n                ret = AddCue2D(cueEnum, volume);\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            return ret;\n        }\n\n        //  Use this if you want to use default volume level -> this is the prefered way because in 99% cases we don't want to set per-sound volume\n        public static MySoundCue? AddCue2D(MySoundCuesEnum cueEnum)\n        {\n            return AddCue2D(cueEnum, 1);\n        }\n\n        public static void WriteDebugInfo(StringBuilder builder)\n        {\n            if(m_cuePool != null)\n                m_cuePool.WriteDebugInfo(builder);\n        }\n\n        //  Add new cue and starts playing it. This can be used for one-time or for looping cues. It depends how they are set in XACT.\n        //  Method returns reference to the cue, so if it's looping cue, we can update its position. Or we can stop playing it.\n        //  These are 2D cues played with stereo. Used for in-cockpit sounds.\n        //  We don't do any max instance limiting or distance cutting, because it's not needed.\n        public static MySoundCue? AddCue2D(MySoundCuesEnum cueEnum, float volume)\n        {\n            //  If this computer can't play sound, we don't create cues\n            if (m_canPlay == false) return null;\n\n            if (!MyMinerGame.IsGameReady)\n                return null;\n\n            MySoundCue? result = null;\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyAudio.AddCue2D\");\n\n            int cueIndex = (int)cueEnum;\n            MyCueParameters cueParameters = m_cueParameters[(int)cueEnum].Value;\n            if (cueParameters.IsHudCue)\n            {\n                MyHudAudio.AddHudCue(cueEnum, volume);\n            }\n            else\n            {\n                result = PlayCueNow2D(cueEnum, volume);\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            return result;\n        }\n\n        public static MySoundCue PlayCueNow2D(MySoundCuesEnum cueEnum, float volume)\n        {\n            var cue = GetCue(cueEnum);\n            cue.SetVariable(MyCueVariableEnum.Volume, volume);\n            cue.Play();\n\n            m_soundInstancesTotal2D++;\n\n            return m_cuePool.CreateCue(cue, cueEnum, false);\n        }\n\n        public static AudioCategory GetDefaultCategory()\n        {\n            return m_defaultCategory;\n        }\n\n        public static AudioCategory GetCockpitCategory()\n        {\n            return m_cockpitCategory;\n        }\n\n        //  Use this if you want to use default volume level -> this is the prefered way because in 99% cases we don't want to set per-sound volume\n        public static MySoundCue? AddCue3D(MySoundCuesEnum cueEnum, Vector3 position, Vector3 forward, Vector3 up, Vector3 velocity)\n        {\n            return AddCue3D(cueEnum, position, forward, up, velocity, 1);\n        }\n\n        //  Add new cue and starts playing it. This can be used for one-time or for looping cues. It depends how they are set in XACT.\n        //  Method returns reference to the cue, so if it's looping cue, we can update its position. Or we can stop playing it.\n        //  If we use it for one-time cue, sound is played once at specified position/velocity/etc and then is destroyed.\n        //  Volume: look into UpdateCueVolume() for intervals. If pitch not specified, default 'as authored' is used.\n        public static MySoundCue? AddCue3D(MySoundCuesEnum cueEnum, Vector3 position, Vector3 forward, Vector3 up, Vector3 velocity, float volume)\n        {\n            //  If this computer can't play sound, we don't create cues\n            if (m_canPlay == false)\n                return null;\n\n            if (!MyMinerGame.IsGameReady)\n                return null;\n\n\n            int cueIndex = (int)cueEnum;\n\n            //  If this is one-time cue, we check if it is close enough to hear it and if not, we don't even play - this is for optimization only.\n            //  We must add loopable cues always, because if source of cue comes near the camera, we need to update the position, but of course we can do that only if we have reference to it.\n            MyCueParameters cueParams = m_cueParameters[cueIndex].Value;\n            Debug.Assert(!cueParams.IsHudCue, \"Hud cue can't be played as 3d sound!\");\n            float distanceToSound = Vector3.Distance(MyCamera.Position, position);\n\n            if ((cueParams.Loopable == false) && (distanceToSound > cueParams.MaxDistance))\n            {\n                return null;\n            }\n\n            bool doLimitMaxCuesAndIsNotLoopable = (MyAudioConstants.LIMIT_MAX_SAME_CUES == true) && (cueParams.Loopable == false);\n\n            //  Max numbers of instances for this cues have been reached, must wait until one ends\n            if ((doLimitMaxCuesAndIsNotLoopable) && (m_nonLoopableCuesLimit[cueIndex].Count >= MyAudioConstants.MAX_SAME_CUES_PLAYED))\n                return null;\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyAudio.AddCue3D\");\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"GetCueByIndex\");\n\n            Cue cue = GetCue(cueEnum);\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"SetVariableNoGarbage\");\n\n            //  Set volume. From XNA 3.1 (XACT 3.0) this seems to be mandatory, so at least set it to 1.0 (default volume)\n            cue.SetVariable(MyCueVariableEnum.Volume, volume);\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"UpdateCuePosition\");\n\n            if (UseOcclusion(cueEnum))\n            {\n                cue.SetVariable(MyCueVariableEnum.Occluder, CalculateOcclusion(ref position));\n            }\n\n            m_helperEmitter.UpdateValues(ref position, ref forward, ref up, ref velocity);\n            cue.Apply3D(m_listener, m_helperEmitter);\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"Play\");\n            //  Play the cue\n            cue.Play();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"MySoundCue\");\n            MySoundCue soundCue = m_cuePool.CreateCue(cue, cueEnum, true);\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            if (doLimitMaxCuesAndIsNotLoopable)\n                m_nonLoopableCuesLimit[cueIndex].Add(new WeakReference(cue));\n\n            m_soundInstancesTotal3D++;\n            return soundCue;\n        }\n\n        private static void CheckCue(MySoundCue cue)\n        {\n            Debug.Assert(cue.IsValid, \"This method can't be called with this cue, because cue is disposed\");\n        }\n\n        //  Updates the position and velocity settings of a 3D cue\n        public static void UpdateCuePosition(MySoundCue? cue, Vector3 position, Vector3 forward, Vector3 up, Vector3 velocity)\n        {\n            if (cue.HasValue == false) return;\n            UpdateCuePosition(cue.Value, position, forward, up, velocity);\n        }\n\n        public static void UpdateCuePosition(MySoundCue cue, Vector3 position, Vector3 forward, Vector3 up, Vector3 velocity)\n        {\n            if (m_canPlay == false) return;\n            if (!cue.IsValid) return;\n            if (!cue.Is3D) return;\n            CheckCue(cue);\n\n            if (!MyFakes.OPTIMIZATION_FOR_300_SMALLSHIPS)\n            {\n                CalculateOcclusion(cue, position);\n            }\n\n            m_helperEmitter.UpdateValues(ref position, ref forward, ref up, ref velocity);\n\n            cue.Apply3D(m_listener, m_helperEmitter);\n        }\n\n        static bool UseOcclusion(MySoundCuesEnum cueEnum)\n        {\n            return m_cueParameters[(int)cueEnum].Value.UseOcclusion;\n        }\n\n        public static float CalculateOcclusion(ref Vector3 position)\n        {\n            // Occlusions are disabled\n            return 0.0f;\n\n            MyLine m_traceLine = new MyLine(MyCamera.Position, position, true);\n            MyEntity physObject = MyEntities.TryGetPhysObjectAtPosition(position);\n\n            // Do not set occlusion for cues of playership itself\n            if (physObject != MySession.PlayerShip && MyEntities.GetIntersectionWithLine(ref m_traceLine, MySession.PlayerShip, physObject).HasValue)\n            {\n                return 7.0f;\n            }\n            return 0.0f;\n        }\n\n        public static void CalculateOcclusion(MySoundCue cue, Vector3 position)\n        {\n            // Occlusions are disabled\n            return;\n\n            if (MyFakes.OPTIMIZATION_FOR_300_SMALLSHIPS) return;\n            if (m_canPlay == false) return;\n            CheckCue(cue);\n\n            MyCueParameters cueParams = m_cueParameters[(int)cue.CueEnum].Value;\n            if (!cueParams.UseOcclusion) return;\n            if (MyMinerGame.TotalGamePlayTimeInMilliseconds - cueParams.LastUpdate < MyAudioConstants.OCCLUSION_INTERVAL) return;\n            cueParams.LastUpdate = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n\n            float distance = Vector3.Distance(MyCamera.Position, position);\n            if ((distance <= cueParams.MaxDistance) && (distance > MyMwcMathConstants.EPSILON))\n            {\n                cue.SetVariable(MyCueVariableEnum.Occluder, CalculateOcclusion(ref position));\n            }\n        }\n\n        //  Updates pitch of a cue (this is per instance pitch, not all sounds pitch). Volume values are in interval <0..1..2> -> same as for master pitch (see below).\n        //  IMPORTANT: Every cue for which we want to set pitch needs to have RPC for it. This can be done in XACT.\n        public static void UpdateCueVolume(MySoundCue? cue, float volume)\n        {\n            if (m_canPlay == false) return;\n            if (cue == null) return;\n            CheckCue(cue.Value);\n\n            cue.Value.SetVariable(MyCueVariableEnum.Volume, volume);\n        }\n\n        //  Updates pitch of a cue (this is per instance pitch, not all sounds pitch). Volume values are in interval <0..1..2> -> same as for master pitch (see below).\n        //  IMPORTANT: Every cue for which we want to set pitch needs to have RPC for it. This can be done in XACT.\n        public static void UpdateCueAmbVolume(MySoundCue? cue, float volume)\n        {\n            if (m_canPlay == false) return;\n            if (cue == null) return;\n            CheckCue(cue.Value);\n\n            cue.Value.SetVariable(MyCueVariableEnum.AmbVolume, volume);\n        }\n\n        //  Updates pitch of a cue (this is per instance pitch, not all sounds pitch). Rotation speed values are in interval <0..100> -> it's normalized rotation speed\n        //  IMPORTANT: Every cue for which we want to set pitch needs to have RPC for it. This can be done in XACT.\n        public static void UpdateCueRotationSpeed(MySoundCue? cue, float rotationSpeed)\n        {\n            if (m_canPlay == false) return;\n            if (cue == null) return;\n            CheckCue(cue.Value);\n\n            cue.Value.SetVariable(MyCueVariableEnum.RotatingSpeed, rotationSpeed);\n        }\n\n        //  Updates pitch of a cue (this is per instance pitch, not all sounds pitch). Pitch values are in interval <-1..+1>.\n        //  IMPORTANT: Every cue for which we want to set pitch needs to have RPC for it. This can be done in XACT.\n        public static void UpdateCuePitch(MySoundCue? cue, float pitch)\n        {\n            if (m_canPlay == false) return;\n            if (cue == null) return;\n            CheckCue(cue.Value);\n\n            cue.Value.SetVariable(MyCueVariableEnum.Pitch, pitch);\n        }\n\n        //  Retrieve cue from corresponding soundbank based on its index(first get name based on index, then get soundbank from name)\n        // Cues are not necessary to be destroyed, it gets destroyed in AudioEngine.DoWork as soon as they finish playing, call Destroy to free looping cues or not started cues.\n        static Cue GetCue(MySoundCuesEnum cueEnum)\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Cue.Prepare\");\n            Cue cue = m_cueInfos[(int)cueEnum].Prepare();\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            return cue;\n        }\n\n        private static SoundBank GetSoundBank(string cueName)\n        {\n            SoundBank soundBank = null;\n            if (cueName.StartsWith(GROUP_MUS))\n            {\n                soundBank = m_musicSoundBank;\n            }\n            else if (cueName.StartsWith(GROUP_DLG) || cueName.StartsWith(GROUP_SHT))\n            {\n                soundBank = m_dialogueSoundBank;\n            }\n            else if (cueName.StartsWith(GROUP_HUD) || cueName.StartsWith(GROUP_VOC))\n            {\n                soundBank = m_voiceSoundBank;\n            }\n            //else if (cueName.StartsWith(GROUP_VOC))\n            //{\n            //    soundBank = m_voiceSoundBank;\n            //}\n            else\n            {\n                soundBank = m_sfxSoundBank;\n            }\n            return soundBank;\n        }\n\n        // Turn ON/OFF game music - may change in the future(currently setting volume to 0)\n        public static bool MusicOn\n        {\n            get\n            {\n                return m_musicOn;\n            }\n\n            set\n            {\n                if (value)\n                {\n                    m_musicOn = value;\n                    VolumeMusic = MyConfig.MusicVolume;\n                }\n                else\n                {\n                    VolumeMusic = 0;\n                    m_musicOn = value;\n                }\n            }\n        }\n\n        // Turn ON/OFF game sounds - may change in the future(currently setting volume to 0)\n        // Does not include Gui category sounds, must be enabled in certain situations(credits screen for example),\n        // while the in-game sounds must be disabled at the same time.\n        public static bool GameSoundsOn\n        {\n            get\n            {\n                return m_gameSoundsOn;\n            }\n\n            set\n            {\n                if (value)\n                {\n                    m_gameSoundsOn = value;\n                    VolumeGame = MyConfig.GameVolume;\n                }\n                else\n                {\n                    VolumeGame = 0;\n                    m_gameSoundsOn = value;\n                }\n            }\n        }\n\n        //  Set/get master volume for all sounds/cues in \"Gui\" category.\n        //  Interval <0..1..2>\n        //      0.0f  ->   -96 dB (silence) \n        //      1.0f  ->    +0 dB (full pitch as authored) \n        //      2.0f  ->    +6 dB (6 dB greater than authored) \n        public static float VolumeGui\n        {\n            get\n            {\n                if (m_canPlay == false) return 0;\n\n                return m_volumeGui;\n            }\n\n            set\n            {\n                if (m_canPlay == false) return;\n\n                //  We need to clamp the pitch, because app fails if we set it with zero value\n                m_volumeGui = MathHelper.Clamp(value, MyAudioConstants.GAME_MASTER_VOLUME_MIN, MyAudioConstants.GAME_MASTER_VOLUME_MAX);\n                m_guiCategory.SetVolume(m_volumeGui);\n                if (OnSetVolumeGui != null) OnSetVolumeGui(m_volumeDefault);\n            }\n        }\n\n        //  Set/get master volume for all in-game sounds/cues.\n        //  Interval <0..1..2>\n        //      0.0f  ->   -96 dB (silence) \n        //      1.0f  ->    +0 dB (full pitch as authored) \n        //      2.0f  ->    +6 dB (6 dB greater than authored) \n        public static float VolumeGame\n        {\n            get\n            {\n                if (m_canPlay == false || !m_gameSoundsOn) return 0;\n\n                return m_volumeDefault;\n            }\n\n            set\n            {\n                SetVolumeExceptCategory(value, null);\n            }\n        }\n\n        public static void SetVolumeExceptDialogues(float volume)\n        {\n            SetVolumeExceptCategory(volume, m_dialogueCategory);\n        }\n\n        private static void SetVolumeExceptCategory(float volume, AudioCategory? ignoreCategory)\n        {\n            if (m_canPlay == false || !m_gameSoundsOn) return;\n\n            //  We need to clamp the pitch, because app fails if we set it with zero value\n            m_volumeDefault = MathHelper.Clamp(volume, MyAudioConstants.GAME_MASTER_VOLUME_MIN, MyAudioConstants.GAME_MASTER_VOLUME_MAX);\n            foreach (AudioCategory category in m_gameCategories)\n            {\n                if (ignoreCategory.HasValue && category == ignoreCategory.Value)\n                    continue;\n\n                category.SetVolume(m_volumeDefault);\n            }\n\n            if (OnSetVolumeGame != null) OnSetVolumeGame(m_volumeDefault);\n        }\n\n\n        //  Set/get master volume for all sounds/cues for \"Music\" category.\n        //  Interval <0..1..2>\n        //      0.0f  ->   -96 dB (silence) \n        //      1.0f  ->    +0 dB (full pitch as authored) \n        //      2.0f  ->    +6 dB (6 dB greater than authored) \n        public static float VolumeMusic\n        {\n            get\n            {\n                if (m_canPlay == false || !m_musicOn) return 0;\n\n                return m_volumeMusic;\n            }\n\n            set\n            {\n                if (m_canPlay == false || !m_musicOn) return;\n\n                //  We need to clamp the pitch, because app fails if we set it with zero value\n                m_volumeMusic = MathHelper.Clamp(value, MyAudioConstants.MUSIC_MASTER_VOLUME_MIN, MyAudioConstants.MUSIC_MASTER_VOLUME_MAX);\n                m_musicCategory.SetVolume(m_volumeMusic);\n                if (OnSetVolumeMusic != null) OnSetVolumeMusic(m_volumeDefault);\n            }\n        }\n\n        //  Use this property to set/get value of reverb. Its interval is <0..100>, where 0 is no-reverb (just default sounds), and 100 is full-reverb (using preset as specified in XACT).\n        //  IMPORTANT: Reverb value isn't linear. I think it is something like decibels, so values between 0..90 make almost no reverb, so real reverb start at 90 and best is at 100.\n        //  So we can't have many reverb environments, we can have only two, but using this property we can switch between them.\n        //  Btw, it's possible to have more types of environment, but we have to make RPC variable for each reverb variable, and it's about 20 variables, so I don't want to do it.\n        public static float ReverbControl\n        {\n            get\n            {\n                if (m_canPlay == false) return 0;\n\n                return m_reverbControl;\n            }\n            set\n            {\n                if (m_canPlay == false) return;\n\n                m_reverbControl = MathHelper.Clamp(value, 0, MyAudioConstants.REVERB_MAX);\n                m_audioEngine.SetGlobalVariable(MyGlobalVariableEnum.ReverbControl, m_reverbControl);\n            }\n        }\n\n        //  This method detects all new collisions/impact and plays cue based on strength of the collision. We check duplicity, so while\n        //  collision cue is playing, we don't play it again.\n        //  IMPORTANT: This method must be caled only after physics integration (so collisions are calculated)\n        static void UpdateCollisionCues()\n        {\n            if (MyMwcFinalBuildConstants.ENABLE_COLLISION_CUES_AND_PARTICLES == false) return;\n\n            Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyAudio.UpdateCollisionCues\");\n\n            FreeCollisionCues();\n            FreeLoopableCuesLimit();\n\n            Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        //  Plays one-time cue of impact/collision/hit between two objects. Logic behind will preserve that only one sound is played, even if coldet routine gives us this collision two times.\n        //  We also check deceleration needed for playing the sound and if we aren't currently playing sound of collision for this two objects.\n        internal static void PlayCollisionCue(MyContactEventInfo contactEventInfo, MyMaterialsConstants.MyMaterialCollisionType type)\n        {\n            var physicsObject0 = (MyPhysicsBody)contactEventInfo.m_RigidBody1.m_UserData;\n            var physicsObject1 = (MyPhysicsBody)contactEventInfo.m_RigidBody2.m_UserData;\n\n            //  We won't add more collision sounds if dictionary is full (we need to wait until some cues are removed)\n            if (m_collisionDictionary.Count > MyAudioConstants.MAX_COLLISION_SOUNDS)\n            {\n                if ((physicsObject0.Entity != MySession.PlayerShip) && (physicsObject1.Entity != MySession.PlayerShip))\n                {\n                    return;\n                }\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"PlayCollisionCue\");\n\n\n            Vector3 ZERO_CUE_VALUES = Vector3.Zero;\n            MySoundCue? cue0 = null;\n            float volume = 1;// MathHelper.Lerp(MySoundsConstants.DECELERATION_MIN_VOLUME, MySoundsConstants.DECELERATION_MAX_VOLUME, deceleration / MySoundsConstants.MAX_DECELERATION);\n\n            MyMaterialType materialType1 = physicsObject0.MaterialType;\n            MyMaterialType materialType2 = physicsObject1.MaterialType;\n\n            if (physicsObject0.Entity == MySession.PlayerShip)\n                materialType1 = MyMaterialType.PLAYERSHIP;\n\n            if (physicsObject1.Entity == MySession.PlayerShip)\n                materialType2 = MyMaterialType.PLAYERSHIP;\n\n\n            if (type == MyMaterialsConstants.MyMaterialCollisionType.End && m_collisionDictionary.ContainsKey(contactEventInfo.m_Guid))\n            {\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"cue.Stop\");\n\n                //We are already playing this collision and we need to end it with specific sound\n\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"AddCue3D\");\n\n                MySoundCuesEnum? collisionSound = MyMaterialsConstants.GetCollisionCue(MyMaterialsConstants.MyMaterialCollisionType.End, materialType1, materialType2);\n                if (collisionSound.HasValue)\n                {\n                    MySoundCue cue = m_collisionDictionary[contactEventInfo.m_Guid];\n                    cue.Stop(StopFlags.Release);\n\n                    cue0 = AddCue3D(collisionSound.Value, contactEventInfo.m_ContactPoint, ZERO_CUE_VALUES,\n                            ZERO_CUE_VALUES, ZERO_CUE_VALUES, volume);\n                }\n\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n            }\n            else\n            {\n                if (type == MyMaterialsConstants.MyMaterialCollisionType.Start)\n                {\n                    //  If we aren't already playing collision cue for this particular combination of physical objects, now is the time\n                    if (!m_collisionDictionary.ContainsKey(contactEventInfo.m_Guid))\n                    {\n                        MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Start audio\");\n\n                        MySoundCuesEnum? collisionSound = MyMaterialsConstants.GetCollisionCue(MyMaterialsConstants.MyMaterialCollisionType.Start, materialType1, materialType2);\n                        if (collisionSound.HasValue)\n                        {\n                            List<int> soundInstances;\n                            if (!m_collisionSoundsDictionary.TryGetValue((int)collisionSound.Value, out soundInstances))\n                            {\n                                m_collisionSoundsDictionary.Add((int)collisionSound, soundInstances = new List<int>());\n\n                            }\n                            if (soundInstances.Count < MyAudioConstants.MAX_COLLISION_SOUNDS_PER_SECOND)\n                            {\n                                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"AddCue3D\");\n                                cue0 = AddCue3D(collisionSound.Value, contactEventInfo.m_ContactPoint, ZERO_CUE_VALUES,\n                                    ZERO_CUE_VALUES, ZERO_CUE_VALUES, volume);\n                                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n                                if (cue0.HasValue)\n                                {\n                                    soundInstances.Add(MyMinerGame.TotalTimeInMilliseconds);\n                                }\n                            }\n                        }\n\n                        MyMaterialTypeProperties materialProps1 = MyMaterialsConstants.GetMaterialProperties(materialType1);\n                        MyMaterialTypeProperties materialProps2 = MyMaterialsConstants.GetMaterialProperties(materialType2);\n\n                        MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n                        Vector3 particleDir = contactEventInfo.m_Velocity1.LengthSquared() > contactEventInfo.m_Velocity2.LengthSquared() ? contactEventInfo.m_Velocity1 - contactEventInfo.m_Velocity2 : contactEventInfo.m_Velocity2 - contactEventInfo.m_Velocity1;\n                        if (MyMwcUtils.IsZero(particleDir.LengthSquared()))\n                        {\n                            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n                            return; //it is valid because of collision in rotation\n                        }\n\n                        MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Collision particles\");\n\n                        particleDir = -MyMwcUtils.Normalize(particleDir);\n\n                        if (Vector3.DistanceSquared(MyCamera.Position, contactEventInfo.m_ContactPoint) < 100 * 100)\n                        {\n                            //  Create smoke particles at the place of collision\n                            bool doSparks = materialProps1.DoSparksOnCollision || materialProps2.DoSparksOnCollision;\n                            bool doSmoke = materialProps1.DoSmokeOnCollision || materialProps2.DoSmokeOnCollision;\n                            MyParticleEffects.CreateCollisionParticles(contactEventInfo.m_ContactPoint, particleDir, false, doSparks);\n                            MyParticleEffects.CreateCollisionParticles(contactEventInfo.m_ContactPoint, contactEventInfo.m_ContactNormal, doSmoke, false);\n                        }\n\n                        MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n#if DEBUG_AUDIO\n                        Matrix colMatrix = Matrix.CreateWorld(contactEventInfo.m_ContactPoint, particleDir, Vector3.Up);\n                        m_soundCollisions.Add(colMatrix);                         \n#endif\n\n                    }\n                    else if (type == MyMaterialsConstants.MyMaterialCollisionType.Touch)\n                    {\n                        MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Touch\");\n\n                        MySoundCuesEnum? scrapeSound = MyMaterialsConstants.GetCollisionCue(MyMaterialsConstants.MyMaterialCollisionType.Touch, materialType1, materialType2);\n                        if (scrapeSound.HasValue)\n                        {\n                            cue0 = AddCue3D(scrapeSound.Value, contactEventInfo.m_ContactPoint, ZERO_CUE_VALUES,\n                                ZERO_CUE_VALUES, ZERO_CUE_VALUES, volume);\n                        }\n\n                        MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n                        //  Create smoke particles at the place of collision\n                        //MyParticleEffects.CreateCollisionParticles(contactEventInfo.m_ContactPoint, physicsObject1.GetVelocity() - physicsObject0.GetVelocity());\n                    }\n\n                    if (cue0.HasValue)\n                    {\n                        if (!m_collisionDictionary.ContainsKey(contactEventInfo.m_Guid))\n                        {\n                            m_collisionDictionary.Add(contactEventInfo.m_Guid, cue0.Value);\n                        }\n                    }\n                }\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        //  Remove stoped cues from collisions dictionary. Call it at the end of every update.\n        static void FreeCollisionCues()\n        {\n            //  First fill helper list with keys we need to remove (because we can't remove items while in foreach)\n            m_collisionDictionaryRemovals.Clear();\n            foreach (KeyValuePair<uint, MySoundCue> kvp in m_collisionDictionary)\n            {\n                //  If cue stoped playing or if it was never played (in case of collision between two objects of same material), we remove it from collision dictionary,\n                //  so cue collision between these same objects can be played again\n                if (kvp.Value.IsPlaying || !kvp.Value.IsValid)\n                {\n                    m_collisionDictionaryRemovals.Add(kvp.Key);\n                }\n            }\n\n            //  Then remove from dictionary\n            foreach (uint key in m_collisionDictionaryRemovals)\n            {\n                m_collisionDictionary.Remove(key);\n            }\n\n            foreach (var item in m_collisionSoundsDictionary.Values)\n            {\n                int i = 0;\n                while (i < item.Count)\n                {\n                    if (item[i] < MyMinerGame.TotalTimeInMilliseconds - 1000) // TimeSpan.FromSeconds(1).TotalMilliseconds\n                    {\n                        item.RemoveAt(i);\n                        continue;\n                    }\n                    i++;\n\n                }\n            }\n        }\n\n        //  Remove stoped cues from this array. This is for limiting max number of same cues played at the same time.\n        static List<WeakReference> deleteList = new List<WeakReference>();\n\n        static void FreeLoopableCuesLimit()\n        {\n            if (MyAudioConstants.LIMIT_MAX_SAME_CUES == true)\n            {\n                //  Iterate all possible cues\n                for (int i = 0; i < m_nonLoopableCuesLimit.Length; i++)\n                {\n                    if (m_cueParameters[i] == null)\n                        continue;\n                    if (m_cueParameters[i].Value.Loopable == false)\n                    {\n                        deleteList.Clear();\n                        foreach (var cue in m_nonLoopableCuesLimit[i])\n                        {\n                            if (cue.IsAlive)\n                            {\n                                if (IsCueFinished((Cue)cue.Target))\n                                    deleteList.Add(cue);\n                            }\n                            else\n                            {\n                                deleteList.Add(cue);\n                            }\n                        }\n\n                        foreach (var cue in deleteList)\n                        {\n                            m_nonLoopableCuesLimit[i].Remove(cue);\n                        }\n                    }\n                }\n            }\n        }\n\n        static void ClearMusicTransitions()\n        {\n            m_musicState = MyMusicState.Stopped;\n            m_musicCue = null;\n            //m_nextTransition = null;\n            m_nextTransitions.Clear();\n            m_currentTransition = null;\n        }\n\n        static private bool IsCueFinished(Cue cue)\n        {\n            return cue.IsPlaying() == false;\n        }\n\n        public static int GetSoundInstancesTotal2D()\n        {\n            return m_soundInstancesTotal2D;\n        }\n\n        public static int GetSoundInstancesTotal3D()\n        {\n            return m_soundInstancesTotal3D;\n        }\n\n        public static void Stop()\n        {\n            if (m_canPlay)\n            {\n                m_musicCategory.Stop(StopFlags.Release);\n                //m_guiCategory.Stop(SharpDX.XACT3.StopFlags.Immediate);\n                foreach (AudioCategory category in m_gameCategories)\n                {\n                    category.Stop(StopFlags.Immediate);\n                }\n\n                if (OnStop != null) OnStop();\n\n                //makes sure that sounds get back to configured volume\n                SetAllVolume(MyConfig.GameVolume, MyConfig.MusicVolume);\n                MyHudAudio.Reset();\n                ClearMusicTransitions();\n\n                m_cuePool.StopAll(StopFlags.Immediate);\n            }\n        }\n\n        public static void SetAllVolume(float gameVolume, float musicVolume)\n        {\n            VolumeMusic = musicVolume;\n            VolumeGame = gameVolume;\n        }\n\n        static List<AudioCategory> GetCategoriesForPause()\n        {\n            List<AudioCategory> ret = new List<AudioCategory>();\n            ret.Add(m_musicCategory);\n            //ret.Add(m_guiCategory);\n            ret.AddRange(m_gameCategories);\n            return ret;\n        }\n\n        //  When game pauses\n        public static void Pause()\n        {\n            if (m_canPlay)\n            {\n                foreach (AudioCategory audioCategory in GetCategoriesForPause())\n                {\n                    audioCategory.Pause();\n                }\n            }\n            if (OnPause != null) OnPause();\n        }\n\n        //  When game resumes from pause\n        public static void Resume()\n        {\n            if (m_canPlay)\n            {\n                foreach (AudioCategory audioCategory in GetCategoriesForPause())\n                {\n                    audioCategory.Resume();\n                }\n            }\n            if (OnResume != null) OnResume();\n        }\n\n        public static bool ApplyTransition(MyMusicTransitionEnum transitionEnum, int priority = 0, string category = null, bool loop = true)\n        {\n            if (!m_canPlay) return false;\n            if (!m_musicAllowed) return false;\n\n            Debug.Assert(priority >= 0);\n            if (category != null)\n            {\n                if (!m_musicTransitionCues[(int)transitionEnum].ContainsKey(category))\n                {\n                    Debug.Assert(false, \"This category doesn't exist for this transition!\");\n                    return false;\n                }\n            }\n\n            // if we try apply same transition and priority and category\n            if (m_currentTransition != null &&\n                m_currentTransition.Value.Priority == priority &&\n                m_currentTransition.Value.TransitionEnum == transitionEnum &&\n                (category == null || m_currentTransition.Value.Category == category))\n            {\n                if (m_musicState == MyMusicState.Transition && !m_transitionForward)\n                {\n                    m_musicState = MyMusicState.Playing;\n                    return true;\n                }\n                else\n                {\n                    return false;\n                }\n            }\n\n            // if category not set, we take random category from this transition cues\n            string transitionCategory = category != null ? category : GetRandomTransitionCategory(transitionEnum);\n            // we set this transition as next\n            m_nextTransitions[priority] = new MyMusicTransition(priority, transitionEnum, transitionCategory);\n\n            // if new transition has lower priority then current, we don't want apply new transition now\n            if (m_currentTransition != null && m_currentTransition.Value.Priority > priority)\n            {\n                return false;\n            }\n\n            m_loopMusic = loop;\n\n            if (m_musicState == MyMusicState.Playing)\n            {\n                StartTransition(true);\n            }\n            else if (m_musicState == MyMusicState.Transition)\n            {\n            }\n            else if (m_musicState == MyMusicState.Stopped)\n            {\n            }\n            else\n            {\n                throw new MyMwcExceptionApplicationShouldNotGetHere();\n            }\n\n            return true;\n        }\n\n        private static void StartTransition(bool forward)\n        {\n            m_transitionForward = forward;\n            m_musicState = MyMusicState.Transition;\n            m_timeFromTransitionStart = 0;\n        }\n\n        public static void StopTransition(int priority)\n        {\n            Debug.Assert(priority >= 0);\n            // try removes transition with this priority from next transitions queue\n            if (m_nextTransitions.ContainsKey(priority))\n            {\n                m_nextTransitions.Remove(priority);\n            }\n            // if we actually play current transition with this priorty, we start transition to next (decreasing volume and switch to another)\n            if (m_currentTransition != null && priority == m_currentTransition.Value.Priority)\n            {\n                if (m_musicState != MyMusicState.Transition)\n                {\n                    StartTransition(false);\n                }\n            }\n        }\n\n        private static MyMusicTransition? GetNextTransition()\n        {\n            if (m_nextTransitions.Count > 0)\n            {\n                return m_nextTransitions[m_nextTransitions.Keys[m_nextTransitions.Keys.Count - 1]];\n            }\n            else\n            {\n                return null;\n            }\n        }\n\n        public static void StopMusic()\n        {\n            if (m_musicCue.HasValue)\n            {\n                m_musicCue.Value.Stop(StopFlags.Immediate);\n            }\n            ClearMusicTransitions();\n        }\n\n        public static MySoundCue? GetMusicCue()\n        {\n            return m_musicCue;\n        }\n\n        public static MyMusicState GetMusicState()\n        {\n            return m_musicState;\n        }\n\n        public static bool HasAnyTransition()\n        {\n            return m_nextTransitions.Count > 0;\n        }\n\n        private static void UpdateMusic()\n        {\n            if (m_musicState == MyMusicState.Transition)\n            {\n                m_timeFromTransitionStart += MyConstants.PHYSICS_STEP_SIZE_IN_MILLISECONDS;\n                // if transition time elapsed, we stop actual playing cue and set music state to stopped\n                if (m_timeFromTransitionStart >= TRANSITION_TIME)\n                {\n                    m_musicState = MyMusicState.Stopped;\n                    if (m_musicCue != null && m_musicCue.Value.IsPlaying)\n                    {\n                        m_musicCue.Value.Stop(StopFlags.Immediate);\n                        m_musicCue = null;\n                    }\n                }\n                // we decrease music volume (because transition effect)\n                else if (m_musicCue != null && m_musicCue.Value.IsPlaying)\n                {\n                    //temporary disabled, volume decreasing now works strange (terible noise)\n                    if (m_volumeMusic > 0f && m_musicOn)\n                    {\n                        m_musicCategory.SetVolume((1f - (float)m_timeFromTransitionStart / TRANSITION_TIME) * m_volumeMusic);\n                    }\n                }\n            }\n\n            if (m_musicState == MyMusicState.Stopped)\n            {\n                MyMusicTransition? nextTransition = GetNextTransition();\n                // we save current transition as next transition, if we want apply transition with higher priority, so after new transition stop, then this old transition return back\n                if (m_currentTransition != null && m_nextTransitions.Count > 0 && nextTransition != null && nextTransition.Value.Priority > m_currentTransition.Value.Priority)\n                {\n                    m_nextTransitions[m_currentTransition.Value.Priority] = m_currentTransition.Value;\n                }\n\n                m_currentTransition = nextTransition;\n                // it there is current transition to play, we play it and set state to playing\n                if (m_currentTransition != null)\n                {\n                    PlayMusicByTransition(m_currentTransition.Value);\n                    m_nextTransitions.Remove(m_currentTransition.Value.Priority);\n                    m_musicState = MyMusicState.Playing;\n                }\n            }\n\n            if (m_musicState == MyMusicState.Playing)\n            {\n                // we play current transition in loop\n                //TODO: IsStopped makes peaks\n\n                if (m_musicCue != null && (!m_musicCue.Value.IsValid || m_musicCue.Value.IsStopped))\n                {\n                    if (m_loopMusic)\n                    {\n                        Debug.Assert(m_currentTransition != null);\n                        PlayMusicByTransition(m_currentTransition.Value);\n                    }\n                    else\n                    {\n                        m_loopMusic = true; //default\n                        StopTransition(m_currentTransition.Value.Priority);\n                    }\n                }\n            }\n        }\n\n        private static void PlayMusicByTransition(MyMusicTransition transition)\n        {\n            // temporary disabled\n            if (m_volumeMusic > 0f && m_musicOn)\n            {\n                m_musicCategory.SetVolume(m_volumeMusic);\n            }\n            m_musicCue = AddCue2D(m_musicTransitionCues[(int)transition.TransitionEnum][transition.Category]);\n        }\n\n        private static string GetRandomTransitionCategory(MyMusicTransitionEnum transitionEnum)\n        {\n            int randomIndex = MyMwcUtils.GetRandomInt(m_musicTransitionCues[(int)transitionEnum].Count - 1);\n            int currentIndex = 0;\n            foreach (var categoryCueKVP in m_musicTransitionCues[(int)transitionEnum])\n            {\n                if (currentIndex == randomIndex)\n                {\n                    return categoryCueKVP.Key;\n                }\n                currentIndex++;\n            }\n            throw new MyMwcExceptionApplicationShouldNotGetHere();\n        }\n\n        private static StringBuilder m_currentTransitionDescription = new StringBuilder();\n\n        public static StringBuilder GetCurrentTransitionForDebug()\n        {\n            m_currentTransitionDescription.Clear();\n            m_currentTransitionDescription.Append(\"Hud cues: \");\n            m_currentTransitionDescription.AppendInt32(MyHudAudio.QueueLength);\n            //m_currentTransitionDescription.Append(\"Current music transition: \");\n            //if (m_currentTransition != null)\n            //{\n            //    MySoundCuesEnum currentCue = m_musicTransitionCues[(int)m_currentTransition.Value.TransitionEnum][m_currentTransition.Value.Category];\n            //    //Crashes (not all sounds must be in inflsphere descs)\n            //   // MyMwcUtils.AppendStringBuilder(m_currentTransitionDescription, MinerWars.AppCode.Game.GUI.Helpers.MyGuiInfluenceSphereHelpers.GetInfluenceSphereSoundHelper(currentCue).Description);                \n            //    m_currentTransitionDescription.Append(\" priority:\");\n            //    m_currentTransitionDescription.AppendInt32(m_currentTransition.Value.Priority);\n            //}\n            //else \n            //{\n            //    m_currentTransitionDescription.Append(\"NO MUSIC\");\n            //}\n            //m_currentTransitionDescription.Append(\" state:\");\n            //switch(m_musicState)\n            //{\n            //    case MyMusicState.Playing:\n            //        m_currentTransitionDescription.Append(\"Playing\");\n            //        break;\n            //    case MyMusicState.Transition:\n            //        m_currentTransitionDescription.Append(\"Transition\");\n            //        break;\n            //    case MyMusicState.Stopped:\n            //        m_currentTransitionDescription.Append(\"Stopped\");\n            //        break;\n            //}            \n            //m_currentTransitionDescription.Append(\" in queue:\");\n            //m_currentTransitionDescription.AppendInt32(m_nextTransitions.Count);\n            return m_currentTransitionDescription;\n        }\n\n        public static bool MusicAllowed\n        {\n            get\n            {\n                return m_musicAllowed;\n            }\n            set\n            {\n                m_musicAllowed = value;\n            }\n        }\n\n#if DEBUG_AUDIO\n        private static void DebugDraw()\n        {\n            float radius = 0.1f;\n\n            foreach (Matrix colMatrix in m_soundCollisions)\n            {\n                MyDebugDraw.DrawSphereWireframe(colMatrix.Translation, radius, Vector3.One, 1);\n                //MyDebugDraw.DrawAxis(matrix, 5.0f, 1.0f);\n\n                MyDebugDraw.DrawLine3D(colMatrix.Translation, colMatrix.Translation + colMatrix.Forward * 4, Color.Red, Color.Red);\n            }\n        }\n\n#endif\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Audio/MyAudio_Data.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Entities;\nusing SysUtils.Utils;\nusing SysUtils;\nusing SharpDX.XACT3;\n\nnamespace MinerWars.AppCode.Game.Audio\n{\n    enum MyMusicTransitionEnum\n    {\n        MainMenu,\n        Horror,\n        Mystery,\n        LightFight,\n        TensionBeforeAnAction,\n        CalmAtmosphere,\n        HeavyFight,\n        Victory,\n        SadnessOrDesperation,\n        StressOrTimeRush,\n        StealthAction,\n        DesperateWithStress,\n        Special,\n    }\n\n    //  Add here every sound/cue we use in the game. You don't need to add it to other places, that is done automaticaly by LoadContent\n    //  IMPORTANT: Name of enum must match cube name from XACT project    \n    //  IMPORTANT: DO NOT USE MULTILINE COMMETS OR REGIONS!\n    //  IMPORTANT: Ambient 2d sounds are stored as part of influence spheres, so they need to have their ids predfined\n    //  IMPORTANT: If you add new cue add it to: m_cueLoopability, m_3dSoundsTo2d\n    internal enum MySoundCuesEnum : short\n    {\n        GuiMouseClick = 0,\n        GuiMouseOver = 1,\n        GuiEditorFlyOutsideBorder = 2,\n        GuiEditorObjectAttach = 3,\n        GuiEditorObjectDelete = 4,\n        GuiEditorObjectDetach = 5,\n        GuiEditorObjectMoveInvalid = 6,\n        GuiEditorObjectMoveStep = 7,\n        GuiEditorObjectRotateStep = 8,\n        GuiEditorObjectSelect = 9,\n        GuiEditorPrefabCommit = 10,\n        GuiEditorPrefabEnter = 11,\n        GuiEditorPrefabExit = 12,\n        GuiEditorVoxelHandAdd = 13,\n        GuiEditorVoxelHandRemove = 14,\n        GuiEditorVoxelHandSoften = 15,\n        GuiEditorVoxelHandMaterial = 16,\n        GuiEditorVoxelHandSwitch = 17,\n        GuiWheelControlOpen = 18,\n        GuiWheelControlClose = 19,\n        ImpRockCollideMetal = 20,\n        ImpRockCollideRock = 21,\n        ImpBulletHitRock = 22,\n        ImpBulletHitMetal = 23,\n        ImpBulletHitGlass = 24,\n        ImpBulletHitShip = 25,\n        ImpExpHitGlass = 26,\n        ImpExpHitMetal = 27,\n        ImpExpHitShip = 28,\n        ImpExpHitRock = 29,\n        ImpShipCollideMetal = 30,\n        ImpShipCollideRock = 31,\n        ImpPlayerShipCollideMetal = 32,\n        ImpPlayerShipCollideRock = 33,\n        ImpPlayerShipCollideShip = 34,\n        ImpPlayerShipScrapeShipLoop = 35,\n        ImpPlayerShipScrapeShipRelease = 36,\n        VehShipaEngineIdle2d = 37,\n        VehShipaEngineIdle3d = 38,\n        VehShipaEngineHigh2d = 39,\n        VehShipaEngineHigh3d = 40,\n        VehShipaThrust2d = 41,\n        VehShipaThrust3d = 42,\n        VehShipaLightsOn = 43,\n        VehShipaLightsOff = 44,\n        VehShipaEngineOn = 45,\n        VehShipaEngineOff = 46,\n        VehHarvesterTubeRelease2d = 47,\n        VehHarvesterTubeRelease3d = 48,\n        VehHarvesterTubeMovingLoop2d = 49,\n        VehHarvesterTubeMovingLoop3d = 50,\n        VehHarvesterTubeColliding2d = 51,\n        VehHarvesterTubeColliding3d = 52,\n        VehHarvesterTubeCollision2d = 53,\n        VehHarvesterTubeCollision3d = 54,\n        VehHarvesterTubeImplode2d = 55,\n        VehHarvesterTubeImplode3d = 56,\n        VehToolCrusherDrillLoop2d = 57,\n        VehToolCrusherDrillLoop3d = 58,\n        VehToolCrusherDrillRelease2d = 59,\n        VehToolCrusherDrillRelease3d = 60,\n        VehToolCrusherDrillColliding2d = 61,\n        VehToolCrusherDrillColliding3d = 62,\n        VehToolCrusherDrillCollidingRelease2d = 63,\n        VehToolCrusherDrillCollidingRelease3d = 64,\n        VehToolThermalDrillLoop2d = 65,\n        VehToolThermalDrillLoop3d = 66,\n        VehToolThermalDrillRelease2d = 67,\n        VehToolThermalDrillRelease3d = 68,\n        VehToolSawCut2d = 69,\n        VehToolSawCut3d = 70,\n        VehToolSawLoop2d = 71,\n        VehToolSawLoop3d = 72,\n        VehToolSawRelease2d = 73,\n        VehToolSawRelease3d = 74,\n        VehToolLaserDrillLoop2d = 75,\n        VehToolLaserDrillLoop3d = 76,\n        VehToolLaserDrillRelease2d = 77,\n        VehToolLaserDrillRelease3d = 78,\n        WepMissileLock = 79,\n        WepMissileFly = 80,\n        WepMissileExplosion = 81,\n        WepMissileLaunch2d = 82,\n        WepMissileLaunch3d = 83,\n        WepAutocanonFire2d = 84,\n        WepAutocanonFire3d = 85,\n        WepAutocanonRel2d = 86,\n        WepAutocanonRel3d = 87,\n        WepSniperScopeZoomRel = 88,\n        WepSniperScopeZoomALoop = 89,\n        WepSniperNormFire2d = 90,\n        WepSniperHighFire2d = 91,\n        WepSniperNormFire3d = 92,\n        WepSniperHighFire3d = 93,\n        WepMineMoveALoop = 94,\n        WepUnivLaunch2d = 95,\n        WepUnivLaunch3d = 96,\n        WepArsHighShot2d = 97,\n        WepArsHighShot3d = 98,\n        WepArsNormShot2d = 99,\n        WepArsNormShot3d = 100,\n        WepBombExplosion = 101,\n        WepLargeShipAutocannonRotate = 102,\n        WepMachineGunHighFire2d = 103,\n        WepMachineGunHighFire3d = 104,\n        WepMachineGunHighRel2d = 105,\n        WepMachineGunHighRel3d = 106,\n        WepMachineGunNormFire2d = 107,\n        WepMachineGunNormFire3d = 108,\n        WepMachineGunNormRel2d = 109,\n        WepMachineGunNormRel3d = 110,\n        WepShotgunNormShot2d = 111,\n        WepShotgunNormShot3d = 112,\n        WepShotgunHighShot2d = 113,\n        WepShotgunHighShot3d = 114,\n        WepRailNormShot3d = 115,\n        WepRailNormShot2d = 116,\n        WepRailHighShot3d = 117,\n        WepRailHighShot2d = 118,\n        WepBombSmartTimer = 119,\n        WepBombSmartSmoke = 120,\n        WepBombSmartPlant = 121,\n        WepBombSmartDrone = 122,\n        WepBombGravSuck = 123,\n        WepBombFlash = 124,\n        SfxSolarWind = 125,\n        SfxHudBackcameraOn = 126,\n        SfxHudBackcameraOff = 127,\n        SfxPlayerBreath = 128,\n        SfxShipSmallExplosion = 129,\n        SfxHudReflectorRange = 130,\n        SfxHudSlowMovementOff = 131,\n        SfxHudSlowMovementOn = 132,\n        SfxHudAutolevelingOn = 133,\n        SfxHudAutolevelingOff = 134,\n        SfxHudWeaponScroll = 135,\n        SfxHudWeaponSelect = 136,\n        SfxHudRadarMode = 137,\n        SfxHudCockpitOn = 138,\n        SfxHudCockpitOff = 139,\n        SfxSpark = 140,\n        MovDoor1AClose = 141,\n        MovDoor1AOpen = 142,\n        MovDoor1BClose = 143,\n        MovDoor1BOpen = 144,\n        MovDoor2AClose = 145,\n        MovDoor2AOpen = 146,\n        MovDoor2BClose = 147,\n        MovDoor2BOpen = 148,\n        MovDoor3AClose = 149,\n        MovDoor3AOpen = 150,\n        HudFuelLowWarning = 151,\n        HudFuelCriticalWarning = 152,\n        HudOxygenLowWarning = 153,\n        HudOxygenCriticalWarning = 154,\n        HudOxygenNoWarning = 155,\n        HudDamageAlertWarning = 156,\n        HudDamageCriticalWarning = 157,\n        HudAmmoCriticalWarning = 158,\n        HudAmmoLowWarning = 159,\n        HudArmorCriticalWarning = 160,\n        HudArmorLowWarning = 161,\n        HudDestinationReached = 162,\n        HudRadarJammedWarning = 163,\n        HudTargetDestroyed = 164,\n        HudRadiationWarning = 165,\n        SfxGeigerCounterHeavyLoop = 166,\n        HudEnemyAlertWarning = 167,\n        HudFriendlyFireWarning = 168,\n        HudHarvestingComplete = 169,\n        HudSolarFlareWarning = 170,\n        HudInventoryComplete = 171,\n        HudInventoryFullWarning = 172,\n        HudInventoryTransfer = 173,\n        HudObjectiveComplete = 174,\n        MusSpecial_LostInTheDistance = 175,\n        HudHealthLowWarning = 176,\n        HudHealthCriticalWarning = 177,\n        SfxClaxonAlert = 178,\n        VehToolCrusherDrillIdle2d = 179,\n        VehToolCrusherDrillIdle3d = 180,\n        VehToolLaserDrillIdle2d = 181,\n        VehToolLaserDrillIdle3d = 182,\n        VehToolSawIdle2d = 183,\n        VehToolSawIdle3d = 184,\n        VehToolThermalDrillIdle2d = 185,\n        VehToolThermalDrillIdle3d = 186,\n        SfxGps = 187,\n        SfxGpsFail = 188,\n        MenuWelcome = 189,\n        MovDock1Start = 190,\n        MovDock1Loop = 191,\n        MovDock1End = 192,\n        MovDock2Start = 193,\n        MovDock2Loop = 194,\n        MovDock2End = 195,\n        MovDock3Start = 196,\n        MovDock3Loop = 197,\n        MovDock3End = 198,\n        VehCH1EngineHigh2d = 199,\n        VehCH1EngineHigh3d = 200,\n        VehCH1EngineIdle2d = 201,\n        VehCH1EngineIdle3d = 202,\n        VehEL1EngineHigh2d = 203,\n        VehEL1EngineHigh3d = 204,\n        VehEL1EngineIdle2d = 205,\n        VehEL1EngineIdle3d = 206,\n        VehEL1EngineOff = 207,\n        VehEL1EngineOn = 208,\n        VehNU1EngineHigh2d = 209,\n        VehNU1EngineHigh3d = 210,\n        VehNU1EngineIdle2d = 211,\n        VehNU1EngineIdle3d = 212,\n        ImpShipQuake = 213,\n        Amb3D_Electrical01 = 214,\n        Amb3D_Electrical02 = 215,\n        Amb3D_FanLargeDamaged = 216,\n        Amb3D_FanLargeDestroyed = 217,\n        Amb3D_FanLargeNormal = 218,\n        Amb3D_FanMediumDamaged = 219,\n        Amb3D_FanMediumDestroyed = 220,\n        Amb3D_FanMediumNormal = 221,\n        Amb3D_FanSmallDamaged = 222,\n        Amb3D_FanSmallDestroyed = 223,\n        Amb3D_FanSmallNormal = 224,\n        Amb3D_GenLargeDamaged = 225,\n        Amb3D_GenLargeDestroyed = 226,\n        Amb3D_GenLargeNormal = 227,\n        Amb3D_GenMediumDamaged = 228,\n        Amb3D_GenMediumDestroyed = 229,\n        Amb3D_GenMediumNormal = 230,\n        Amb2D_RoomLarge01 = 231,\n        Amb2D_RoomLarge02 = 232,\n        Amb2D_RoomLarge03 = 233,\n        Amb2D_RoomLarge04 = 234,\n        Amb2D_RoomLarge05 = 235,\n        Amb2D_RoomMed01 = 236,\n        Amb2D_RoomMed02 = 237,\n        Amb2D_RoomMed03 = 238,\n        Amb2D_RoomMed04 = 239,\n        Amb2D_RoomMed05 = 240,\n        Amb2D_RoomSmall01 = 241,\n        Amb2D_RoomSmall02 = 242,\n        Amb2D_RoomSmall03 = 243,\n        Amb2D_RoomSmall04 = 244,\n        Amb2D_StressLoop = 245,\n        Amb2D_TunnelLarge01 = 246,\n        Amb2D_TunnelMedium01 = 247,\n        Amb2D_TunnelSmall01 = 248,\n        VehToolLaserDrillColliding2d = 249,\n        VehToolLaserDrillColliding3d = 250,\n        VehToolLaserDrillCollidingRelease2d = 251,\n        VehToolLaserDrillCollidingRelease3d = 252,\n        VehToolThermalDrillColliding2d = 253,\n        VehToolThermalDrillColliding3d = 254,\n        VehToolThermalDrillCollidingRelease2d = 255,\n        VehToolThermalDrillCollidingRelease3d = 256,\n        SfxProgressHack = 257,\n        SfxCancelHack = 258,\n        SfxProgressRepair = 259,\n        SfxProgressBuild = 260,\n        SfxCancelRepair = 261,\n        SfxCancelBuild = 262,\n        Amb3D_GenXstart = 263,\n        Amb3D_GenXloop = 264,\n        SfxAlertVoc = 265,\n        Amb3D_GenXend = 266,\n        Amb3D_Temple1 = 267,\n        Amb3D_Temple2 = 268,\n        Amb3D_Temple3 = 269,\n        SfxShipLargeExplosion = 270,\n        MusCalmAtmosphere_MM01 = 271,\n        MusCalmAtmosphere_MM02 = 272,\n        MusDesperateWithStress_MM01 = 273,\n        MusDesperateWithStress_KA01 = 274,\n        MusCalmAtmosphere_KA01 = 275,\n        MusHeavyFight_MM01 = 276,\n        MusHeavyFight_MM02 = 277,\n        MusCalmAtmosphere_KA02 = 278,\n        MusLightFight_MM01 = 279,\n        MusLightFight_MM02 = 280,\n        MusSadnessOrDesperation_MM01 = 281,\n        MusSadnessOrDesperation_MM02 = 282,\n        MusSadnessOrDesperation_KA02 = 283,\n        MusSadnessOrDesperation_KA01 = 284,\n        MusStealthAction_MM01 = 285,\n        MusStealthAction_MM02 = 286,\n        MusStealthAction_KA01 = 287,\n        MusStressOrTimeRush_MM01 = 288,\n        MusStressOrTimeRush_MM02 = 289,\n        MusStressOrTimeRush_KA01 = 290,\n        MusStressOrTimeRush_KA02 = 291,\n        MusTensionBeforeAnAction_MM01 = 292,\n        MusTensionBeforeAnAction_MM02 = 293,\n        MusTensionBeforeAnAction_KA01 = 294,\n        MusTensionBeforeAnAction_KA02 = 295,\n        MusSpecial_MM01 = 296,\n        MusVictory_MM01 = 297,\n        MusVictory_MM02 = 298,\n        MusVictory_KA01 = 299,\n        MusVictory_KA02 = 300,\n        Mus_victory_KA_6 = 301,\n        MusHeavyFight_KA01 = 302,\n        MusHeavyFight_KA02 = 303,\n        MusCalmAtmosphere_KA03 = 304,\n        MusDesperateWithStress_KA02 = 305,\n        MusDesperateWithStress_KA03 = 306,\n        MusDesperateWithStress_KA04 = 307,\n        Mus_desperatestress_KA_2_longer_2b = 308,\n        MusHorror_KA01 = 309,\n        MusHorror_MM01 = 310,\n        MusMystery_MM01 = 311,\n        MusMystery_KA02 = 312,\n        MusMystery_KA01 = 313,\n        MusMystery_MM02 = 314,\n        MusHorror_KA02 = 315,\n        MusHorror_MM02 = 316,\n        MusHeavyFight_KA19 = 317,\n        MusHeavyFight_KA17 = 318,\n        MusHeavyFight_KA16 = 319,\n        MusHeavyFight_KA06 = 320,\n        MusStealthAction_KA03 = 321,\n        MusSpecial_KA06 = 322,\n        MusCalmAtmosphere_MM_b = 323,\n        SfxHudAlarmIncoming = 324,\n        SfxHudAlarmDamageA = 325,\n        SfxHudAlarmDamageB = 326,\n        SfxHudAlarmDamageC = 327,\n        SfxHudAlarmDamageD = 328,\n        SfxHudAlarmDamageE = 329,\n        WepNoAmmo = 330,\n        WepCannon2d = 331,\n        WepCannon3d = 332,\n        VehCH1EngineOff = 333,\n        VehCH1EngineOn = 334,\n        VehNU1EngineOff = 335,\n        VehNU1EngineOn = 336,\n        VehToolPressureDrillBlast2d = 337,\n        VehToolPressureDrillIdle2d = 338,\n        VehToolPressureDrillRecharge2d = 339,\n        VehToolPressureDrillBlastRock2d = 340,\n        Amb3D_PrefabFire = 341,\n        SfxProgressActivation = 342,\n        SfxCancelActivation = 343,\n        Dlg_EACSurveySite_0015 = 344,\n        Dlg_EACSurveySite_0016 = 345,\n        Dlg_EACSurveySite_0017_01 = 346,\n        Dlg_EACSurveySite_0017_02 = 347,\n        Dlg_EACSurveySite_0018_01 = 348,\n        Dlg_EACSurveySite_0018_02 = 349,\n        Dlg_EACSurveySite_0018_03 = 350,\n        Dlg_EACSurveySite_0019 = 351,\n        Dlg_EACSurveySite_0020 = 352,\n        Dlg_EACSurveySite_0021 = 353,\n        Dlg_EACSurveySite_0022 = 354,\n        Dlg_EACSurveySite_0023 = 355,\n        Dlg_EACSurveySite_0024_01 = 356,\n        Dlg_EACSurveySite_0024_02 = 357,\n        Dlg_EACSurveySite_0025_01 = 358,\n        Dlg_EACSurveySite_0025_02 = 359,\n        Dlg_EACSurveySite_0026 = 360,\n        Dlg_EACSurveySite_0027_01 = 361,\n        Dlg_EACSurveySite_0027_02 = 362,\n        Dlg_EACSurveySite_0028 = 363,\n        Dlg_EACSurveySite_0029 = 364,\n        Dlg_EACSurveySite_0030 = 365,\n        Dlg_EACSurveySite_0031 = 366,\n        Dlg_EACSurveySite_0032_01 = 367,\n        Dlg_EACSurveySite_0032_02 = 368,\n        Dlg_EACSurveySite_0033 = 369,\n        Dlg_EACSurveySite_0034 = 370,\n        Dlg_EACSurveySite_0035 = 371,\n        Dlg_EACSurveySite_0036 = 372,\n        Dlg_EACSurveySite_0037 = 373,\n        Dlg_EACSurveySite_0038 = 374,\n        Dlg_EACSurveySite_0039 = 375,\n        Dlg_EACSurveySite_0040_01 = 376,\n        Dlg_EACSurveySite_0040_02 = 377,\n        Dlg_EACSurveySite_0041 = 378,\n        Dlg_EACSurveySite_0042 = 379,\n        Dlg_EACSurveySite_0043 = 380,\n        Dlg_EACSurveySite_0044 = 381,\n        Dlg_EACSurveySite_0045 = 382,\n        Dlg_EACSurveySite_0046 = 383,\n        Dlg_EACSurveySite_0047 = 384,\n        Dlg_EACSurveySite_0048 = 385,\n        Dlg_EACSurveySite_0049_01 = 386,\n        Dlg_EACSurveySite_0049_02 = 387,\n        Dlg_EACSurveySite_0050 = 388,\n        Dlg_EACSurveySite_0051 = 389,\n        Dlg_EACSurveySite_0052 = 390,\n        Dlg_EACSurveySite_0053_01 = 391,\n        Dlg_EACSurveySite_0053_02 = 392,\n        Dlg_EACSurveySite_0053_03 = 393,\n        Dlg_EACSurveySite_0054 = 394,\n        Dlg_EACSurveySite_0055_01 = 395,\n        Dlg_EACSurveySite_0055_02 = 396,\n        Dlg_EACSurveySite_0056 = 397,\n        Dlg_EACSurveySite_0057 = 398,\n        Dlg_EACSurveySite_0058 = 399,\n        Dlg_EACSurveySite_0059 = 400,\n        Dlg_EACSurveySite_0060_01 = 401,\n        Dlg_EACSurveySite_0060_02 = 402,\n        Dlg_EACSurveySite_0061 = 403,\n        Dlg_EACSurveySite_0062 = 404,\n        Dlg_EACSurveySite_0063 = 405,\n        Dlg_EACSurveySite_0064 = 406,\n        Dlg_EACSurveySite_0065 = 407,\n        Dlg_EACSurveySite_0066 = 408,\n        Dlg_EACSurveySite_0067 = 409,\n        Dlg_EACSurveySite_0068 = 410,\n        Dlg_EACSurveySite_0069 = 411,\n        Dlg_EACSurveySite_0070 = 412,\n        Dlg_EACSurveySite_0071 = 413,\n        Dlg_EACSurveySite_0072 = 414,\n        Dlg_EACSurveySite_0073 = 415,\n        Dlg_EACSurveySite_0074 = 416,\n        Dlg_EACSurveySite_0075 = 417,\n        Dlg_EACSurveySite_0076 = 418,\n        Dlg_EACSurveySite_0077 = 419,\n        Dlg_EACSurveySite_0078 = 420,\n        Dlg_ChineseTransport_1000 = 421,\n        Dlg_ChineseTransport_1001 = 422,\n        Dlg_ChineseTransport_1002 = 423,\n        Dlg_ChineseTransport_1003 = 424,\n        Dlg_ChineseTransport_1004 = 425,\n        Dlg_ChineseTransport_1005 = 426,\n        Dlg_ChineseTransport_1006 = 427,\n        Dlg_ChineseTransport_1007 = 428,\n        Dlg_ChineseTransport_1008 = 429,\n        Dlg_ChineseTransport_1009 = 430,\n        Dlg_ChineseTransport_1010 = 431,\n        Dlg_ChineseTransport_1011 = 432,\n        Dlg_ChineseTransport_1012 = 433,\n        Dlg_ChineseTransport_1013 = 434,\n        Dlg_ChineseTransport_1014 = 435,\n        Dlg_ChineseTransport_1015 = 436,\n        Dlg_ChineseTransport_1016 = 437,\n        Dlg_ChineseTransport_1017 = 438,\n        Dlg_ChineseTransport_1018 = 439,\n        Dlg_ChineseTransport_1019 = 440,\n        Dlg_ChineseTransport_1020 = 441,\n        Dlg_ChineseTransport_1021 = 442,\n        Dlg_ChineseTransport_1022 = 443,\n        Dlg_ChineseTransport_1023 = 444,\n        Dlg_ChineseTransport_1024 = 445,\n        Dlg_ChineseTransport_1025 = 446,\n        Dlg_ChineseTransport_1026 = 447,\n        Dlg_ChineseTransport_1027 = 448,\n        Dlg_ChineseTransport_1028 = 449,\n        Dlg_ChineseTransport_1029 = 450,\n        Dlg_ChineseTransport_1030 = 451,\n        Dlg_ChineseTransport_1031 = 452,\n        Dlg_ChineseTransport_1032 = 453,\n        Dlg_ChineseTransport_1033 = 454,\n        Dlg_ChineseTransport_1034 = 455,\n        Dlg_ChineseTransport_1035 = 456,\n        Dlg_ChineseTransport_1036 = 457,\n        Dlg_ChineseTransport_1037 = 458,\n        Dlg_ChineseTransport_1038 = 459,\n        Dlg_ChineseTransport_1039 = 460,\n        Dlg_ChineseTransport_1040 = 461,\n        Dlg_ChineseTransport_1041 = 462,\n        Dlg_ChineseTransport_1042 = 463,\n        Dlg_ChineseTransport_1043 = 464,\n        Dlg_ChineseTransport_1044 = 465,\n        Dlg_ChineseTransport_1045 = 466,\n        Dlg_ChineseRafinery_1000 = 467,\n        Dlg_ChineseRafinery_1001 = 468,\n        Dlg_ChineseRafinery_1002 = 469,\n        Dlg_ChineseRafinery_1003 = 470,\n        Dlg_ChineseRafinery_1004 = 471,\n        Dlg_ChineseRafinery_1005 = 472,\n        Dlg_ChineseRafinery_1006 = 473,\n        Dlg_ChineseRafinery_1007 = 474,\n        Dlg_ChineseRafinery_1008 = 475,\n        Dlg_ChineseRafinery_1009 = 476,\n        Dlg_ChineseRafinery_1010 = 477,\n        Dlg_ChineseRafinery_1011 = 478,\n        Dlg_ChineseRafinery_1012 = 479,\n        Dlg_ChineseRafinery_1013 = 480,\n        Dlg_ChineseRafinery_1014 = 481,\n        Dlg_ChineseRafinery_1015 = 482,\n        Dlg_ChineseRafinery_1016 = 483,\n        Dlg_ChineseRafinery_1017 = 484,\n        Dlg_ChineseRafinery_1018 = 485,\n        Dlg_ChineseRafinery_1019 = 486,\n        Dlg_ChineseRafinery_1020 = 487,\n        Dlg_ChineseRafinery_1021 = 488,\n        Dlg_ChineseRafinery_1022 = 489,\n        Dlg_ChineseRafinery_1023 = 490,\n        Dlg_ChineseRafinery_1024 = 491,\n        Dlg_ChineseRafinery_1025 = 492,\n        Dlg_ChineseRafinery_1026 = 493,\n        Dlg_ChineseRafinery_1027 = 494,\n        Dlg_ChineseRafinery_1028 = 495,\n        Dlg_ChineseRafinery_1029 = 496,\n        Dlg_ChineseRafinery_1030 = 497,\n        Dlg_ChineseRafinery_1031 = 498,\n        Dlg_ChineseRafinery_1032 = 499,\n        Dlg_ChineseRafinery_1033 = 500,\n        Dlg_ChineseRafinery_1034 = 501,\n        Dlg_ChineseRafinery_1035 = 502,\n        Dlg_ChineseRafinery_1036 = 503,\n        Dlg_ChineseRafinery_1037 = 504,\n        Dlg_ChineseRafinery_1038 = 505,\n        Dlg_ChineseRafinery_1039 = 506,\n        Amb2D_City = 507,\n        Amb2D_ComputerRoom = 508,\n        Amb2D_Factory = 509,\n        Amb2D_LostPlace = 510,\n        Amb2D_RedHeat = 511,\n        Amb2D_War = 512,\n        Dlg_ChineseTransmitter_1004 = 513,\n        Dlg_ChineseTransmitter_1005 = 514,\n        Dlg_ChineseTransmitter_1006 = 515,\n        Dlg_ChineseTransmitter_1007 = 516,\n        Dlg_ChineseTransmitter_1008 = 517,\n        Dlg_ChineseTransmitter_1009 = 518,\n        Dlg_ChineseTransmitter_1010 = 519,\n        Dlg_ChineseTransmitter_1011 = 520,\n        Dlg_ChineseTransmitter_1012 = 521,\n        Dlg_ChineseTransmitter_1013 = 522,\n        Dlg_ChineseTransmitter_1014 = 523,\n        Dlg_ChineseTransmitter_1015 = 524,\n        Dlg_ChineseTransmitter_1016 = 525,\n        Dlg_ChineseTransmitter_1017 = 526,\n        Dlg_ChineseTransmitter_1018 = 527,\n        Dlg_ChineseTransmitter_1019 = 528,\n        Dlg_ChineseTransmitter_1020 = 529,\n        Dlg_ChineseTransmitter_1021 = 530,\n        Dlg_ChineseTransmitter_1022 = 531,\n        Dlg_ChineseTransmitter_1023 = 532,\n        Dlg_ChineseTransmitter_1024 = 533,\n        Dlg_ChineseTransmitter_1025 = 534,\n        Dlg_ChineseTransmitter_1026 = 535,\n        Dlg_ChineseTransmitter_1027 = 536,\n        Dlg_ChineseTransmitter_1028 = 537,\n        Dlg_ChineseTransmitter_1029 = 538,\n        Dlg_ChineseTransmitter_1030 = 539,\n        Dlg_ChineseTransmitter_1031 = 540,\n        Dlg_ChineseTransmitter_1032 = 541,\n        Dlg_ChineseTransmitter_1033 = 542,\n        Dlg_ChineseTransmitter_1034 = 543,\n        Dlg_ChineseTransmitter_1035 = 544,\n        Dlg_ChineseTransmitter_1036 = 545,\n        Dlg_ChineseTransmitter_1037 = 546,\n        Dlg_ChineseTransmitter_1038 = 547,\n        Dlg_ChineseTransmitter_1039 = 548,\n        Dlg_ChineseTransmitter_1040 = 549,\n        Dlg_ChineseTransmitter_1041 = 550,\n        Dlg_ChineseTransmitter_1042 = 551,\n        Dlg_ChineseTransmitter_1043 = 552,\n        Dlg_ChineseTransmitter_1044 = 553,\n        Amb2D_City2 = 554,\n        Amb2D_Factory2 = 555,\n        Dlg_ChineseTransmitter_1047 = 556,\n        Dlg_ChineseTransmitter_1048 = 557,\n        Dlg_ChineseTransmitter_1049 = 558,\n        Dlg_ChineseTransmitter_1050 = 559,\n        Dlg_ChineseTransmitter_1051 = 560,\n        Dlg_ChineseTransmitter_1052 = 561,\n        Dlg_ChineseTransmitter_1053 = 562,\n        Dlg_ChineseTransmitter_1054 = 563,\n        Dlg_ChineseTransmitter_1055 = 564,\n        Dlg_ChineseTransmitter_1056 = 565,\n        Dlg_ChineseTransmitter_1057 = 566,\n        Dlg_ChineseTransmitter_1058 = 567,\n        Dlg_ChineseTransmitter_1059 = 568,\n        Dlg_ChineseTransmitter_1060 = 569,\n        Dlg_ChineseTransmitter_1061 = 570,\n        Dlg_ChineseTransmitter_1062 = 571,\n        Dlg_ChineseTransmitter_1063 = 572,\n        Dlg_ChineseTransmitter_1064 = 573,\n        Dlg_ChineseTransmitter_1065 = 574,\n        Dlg_ChineseTransmitter_1066 = 575,\n        Dlg_ChineseTransmitter_1067 = 576,\n        Dlg_ChineseTransmitter_1068 = 577,\n        Dlg_ChineseTransmitter_1069 = 578,\n        Dlg_SlaverBaseWipeout_1000 = 579,\n        Dlg_SlaverBaseWipeout_1001 = 580,\n        Dlg_SlaverBaseWipeout_1002 = 581,\n        Dlg_SlaverBaseWipeout_1003 = 582,\n        Dlg_SlaverBaseWipeout_1004 = 583,\n        Dlg_SlaverBaseWipeout_1005 = 584,\n        Dlg_SlaverBaseWipeout_1006 = 585,\n        Dlg_SlaverBaseWipeout_1007 = 586,\n        Dlg_SlaverBaseWipeout_1008 = 587,\n        Dlg_SlaverBaseWipeout_1009 = 588,\n        Dlg_SlaverBaseWipeout_1010 = 589,\n        Dlg_SlaverBaseWipeout_1011 = 590,\n        Dlg_SlaverBaseWipeout_1012 = 591,\n        Dlg_SlaverBaseWipeout_1013 = 592,\n        Dlg_SlaverBaseWipeout_1014 = 593,\n        Dlg_SlaverBaseWipeout_1015 = 594,\n        Dlg_SlaverBaseWipeout_1016 = 595,\n        Dlg_SlaverBaseWipeout_1017 = 596,\n        Dlg_SlaverBaseWipeout_1018 = 597,\n        Dlg_SlaverBaseWipeout_1019 = 598,\n        Dlg_SlaverBaseWipeout_1020 = 599,\n        Dlg_SlaverBaseWipeout_1021 = 600,\n        Dlg_SlaverBaseWipeout_1022 = 601,\n        Dlg_SlaverBaseWipeout_1023 = 602,\n        Dlg_SlaverBaseWipeout_1024 = 603,\n        Dlg_SlaverBaseWipeout_1025 = 604,\n        Dlg_SlaverBaseWipeout_1026 = 605,\n        Dlg_SlaverBaseWipeout_1027 = 606,\n        Dlg_SlaverBaseWipeout_1028 = 607,\n        Dlg_SlaverBaseWipeout_1029 = 608,\n        Dlg_SlaverBaseWipeout_1030 = 609,\n        Dlg_SlaverBaseWipeout_1031 = 610,\n        Dlg_SlaverBaseWipeout_1032 = 611,\n        Dlg_SlaverBaseWipeout_1033 = 612,\n        Dlg_SlaverBaseWipeout_1034 = 613,\n        Dlg_SlaverBaseWipeout_1035 = 614,\n        Dlg_SlaverBaseWipeout_1036 = 615,\n        Dlg_SlaverBaseWipeout_1037 = 616,\n        Dlg_SlaverBaseWipeout_1038 = 617,\n        Dlg_SlaverBaseWipeout_1039 = 618,\n        Dlg_SlaverBaseWipeout_1040 = 619,\n        Dlg_SlaverBaseWipeout_1041 = 620,\n        Dlg_SlaverBaseWipeout_1042 = 621,\n        Dlg_SlaverBaseWipeout_1043 = 622,\n        Dlg_SlaverBaseWipeout_1044 = 623,\n        Dlg_SlaverBaseWipeout_1045 = 624,\n        Dlg_SlaverBaseWipeout_1046 = 625,\n        Dlg_SlaverBaseWipeout_1047 = 626,\n        Dlg_SlaverBaseWipeout_1048 = 627,\n        Dlg_SlaverBaseWipeout_1049 = 628,\n        Dlg_SlaverBaseWipeout_1050 = 629,\n        Dlg_SlaverBaseWipeout_1051 = 630,\n        Dlg_SlaverBaseWipeout_1052 = 631,\n        Dlg_SlaverBase2_1000 = 632,\n        Dlg_SlaverBase2_1001 = 633,\n        Dlg_SlaverBase2_1002 = 634,\n        Dlg_SlaverBase2_1003 = 635,\n        Dlg_SlaverBase2_1004 = 636,\n        Dlg_SlaverBase2_1005 = 637,\n        Dlg_SlaverBase2_1006 = 638,\n        Dlg_SlaverBase2_1007 = 639,\n        Dlg_SlaverBase2_1008 = 640,\n        Dlg_SlaverBase2_1009 = 641,\n        Dlg_SlaverBase2_1010 = 642,\n        Dlg_SlaverBase2_1011 = 643,\n        Dlg_SlaverBase2_1012 = 644,\n        Dlg_SlaverBase2_1013 = 645,\n        Dlg_SlaverBase2_1014 = 646,\n        Dlg_SlaverBase2_1015 = 647,\n        Dlg_SlaverBase2_1016 = 648,\n        Dlg_SlaverBase2_1017 = 649,\n        Dlg_SlaverBase2_1018 = 650,\n        Dlg_SlaverBase2_1019 = 651,\n        Dlg_SlaverBase2_1020 = 652,\n        Dlg_SlaverBase2_1021 = 653,\n        Dlg_SlaverBase2_1022 = 654,\n        Dlg_SlaverBase2_1023 = 655,\n        Dlg_SlaverBase2_1024 = 656,\n        Dlg_SlaverBase2_1025 = 657,\n        Dlg_SlaverBase2_1026 = 658,\n        Dlg_SlaverBase2_1027 = 659,\n        Dlg_SlaverBase2_1028 = 660,\n        Dlg_SlaverBase2_1029 = 661,\n        Dlg_SlaverBase2_1030 = 662,\n        Dlg_SlaverBase2_1031 = 663,\n        Dlg_SlaverBase2_1032 = 664,\n        Dlg_SlaverBase2_1033 = 665,\n        Dlg_SlaverBase2_1034 = 666,\n        Dlg_SlaverBase2_1035 = 667,\n        Dlg_SlaverBase2_1036 = 668,\n        Dlg_SlaverBase2_1037 = 669,\n        Dlg_SlaverBase2_1038 = 670,\n        Dlg_SlaverBase2_1039 = 671,\n        Dlg_SlaverBase2_1040 = 672,\n        Dlg_SlaverBase2_1041 = 673,\n        Dlg_SlaverBase2_1042 = 674,\n        Dlg_SlaverBase2_1043 = 675,\n        Dlg_SlaverBase2_1044 = 676,\n        Dlg_TwinTowers_1000 = 677,\n        Dlg_TwinTowers_1001 = 678,\n        Dlg_TwinTowers_1002 = 679,\n        Dlg_TwinTowers_1003 = 680,\n        Dlg_TwinTowers_1004 = 681,\n        Dlg_TwinTowers_1005 = 682,\n        Dlg_TwinTowers_1006 = 683,\n        Dlg_TwinTowers_1007 = 684,\n        Dlg_TwinTowers_1008 = 685,\n        Dlg_TwinTowers_1009 = 686,\n        Dlg_TwinTowers_1010 = 687,\n        Dlg_TwinTowers_1011 = 688,\n        Dlg_TwinTowers_1012 = 689,\n        Dlg_TwinTowers_1013 = 690,\n        Dlg_TwinTowers_1014 = 691,\n        Dlg_TwinTowers_1015 = 692,\n        Dlg_TwinTowers_1016 = 693,\n        Dlg_TwinTowers_1017 = 694,\n        Dlg_TwinTowers_1018 = 695,\n        Dlg_TwinTowers_1019 = 696,\n        Dlg_TwinTowers_1020 = 697,\n        Dlg_TwinTowers_1021 = 698,\n        Dlg_TwinTowers_1022 = 699,\n        Dlg_TwinTowers_1023 = 700,\n        Dlg_TwinTowers_1024 = 701,\n        Dlg_TwinTowers_1025 = 702,\n        Dlg_TwinTowers_1026 = 703,\n        Dlg_TwinTowers_1027 = 704,\n        Dlg_TwinTowers_1028 = 705,\n        Dlg_TwinTowers_1029 = 706,\n        Dlg_TwinTowers_1030 = 707,\n        Dlg_TwinTowers_1031 = 708,\n        Dlg_TwinTowers_1032 = 709,\n        Dlg_TwinTowers_1033 = 710,\n        Dlg_TwinTowers_1034 = 711,\n        Dlg_TwinTowers_1035 = 712,\n        Dlg_TwinTowers_1036 = 713,\n        Dlg_TwinTowers_1037 = 714,\n        Dlg_TwinTowers_1038 = 715,\n        Dlg_TwinTowers_1039 = 716,\n        Dlg_TwinTowers_1040 = 717,\n        Dlg_TwinTowers_1041 = 718,\n        Dlg_TwinTowers_1042 = 719,\n        Dlg_TwinTowers_1043 = 720,\n        Dlg_TwinTowers_1044 = 721,\n        Dlg_TwinTowers_1045 = 722,\n        Dlg_TwinTowers_1046 = 723,\n        Dlg_TwinTowers_1047 = 724,\n        Dlg_TwinTowers_1048 = 725,\n        Dlg_TwinTowers_1049 = 726,\n        Dlg_TwinTowers_1050 = 727,\n        Dlg_TwinTowers_1051 = 728,\n        Dlg_TwinTowers_1052 = 729,\n        Dlg_TwinTowers_1053 = 730,\n        Dlg_TwinTowers_1054 = 731,\n        Dlg_TwinTowers_1055 = 732,\n        Dlg_TwinTowers_1056 = 733,\n        Dlg_TwinTowers_1057 = 734,\n        Dlg_TwinTowers_1058 = 735,\n        Dlg_TwinTowers_1059 = 736,\n        Dlg_TwinTowers_1060 = 737,\n        Dlg_TwinTowers_1061 = 738,\n        Dlg_TwinTowers_1062 = 739,\n        Dlg_TwinTowers_1063 = 740,\n        Dlg_TwinTowers_1064 = 741,\n        Dlg_TwinTowers_1065 = 742,\n        Dlg_TwinTowers_1066 = 743,\n        Dlg_TwinTowers_1067 = 744,\n        Dlg_TwinTowers_1068 = 745,\n        Dlg_TwinTowers_1069 = 746,\n        Dlg_TwinTowers_1070 = 747,\n        Dlg_TwinTowers_1071 = 748,\n        Dlg_TwinTowers_1072 = 749,\n        Dlg_TwinTowers_1073 = 750,\n        Dlg_TwinTowers_1074 = 751,\n        Dlg_TwinTowers_1075 = 752,\n        Dlg_TwinTowers_1076 = 753,\n        Dlg_TwinTowers_1077 = 754,\n        Dlg_TwinTowers_1078 = 755,\n        Dlg_TwinTowers_1079 = 756,\n        Dlg_TwinTowers_1080 = 757,\n        Dlg_TwinTowers_1081 = 758,\n        Dlg_TwinTowers_1082 = 759,\n        Dlg_TwinTowers_1083 = 760,\n        Dlg_TwinTowers_1084 = 761,\n        Dlg_TwinTowers_1085 = 762,\n        Dlg_TwinTowers_1086 = 763,\n        Dlg_TwinTowers_1087 = 764,\n        Dlg_TwinTowers_1088 = 765,\n        Dlg_TwinTowers_1089 = 766,\n        Dlg_TwinTowers_1090 = 767,\n        Dlg_TwinTowers_1091 = 768,\n        Dlg_TwinTowers_1092 = 769,\n        Dlg_TwinTowers_1093 = 770,\n        Dlg_TwinTowers_1094 = 771,\n        Dlg_TwinTowers_1095 = 772,\n        Dlg_TwinTowers_1096 = 773,\n        Dlg_TwinTowers_1097 = 774,\n        Dlg_TwinTowers_1098 = 775,\n        Dlg_TwinTowers_1099 = 776,\n        Dlg_TwinTowers_1100 = 777,\n        Dlg_TwinTowers_1101 = 778,\n        Dlg_TwinTowers_1102 = 779,\n        Dlg_TwinTowers_1103 = 780,\n        Dlg_TwinTowers_1104 = 781,\n        Dlg_TwinTowers_1105 = 782,\n        Dlg_TwinTowers_1106 = 783,\n        Dlg_TwinTowers_1107 = 784,\n        Dlg_TwinTowers_1108 = 785,\n        Dlg_TwinTowers_1109 = 786,\n        Dlg_TwinTowers_1110 = 787,\n        Dlg_TwinTowers_1111 = 788,\n        Dlg_TwinTowers_1112 = 789,\n        Dlg_TwinTowers_1113 = 790,\n        Dlg_TwinTowers_1114 = 791,\n        Dlg_TwinTowers_1115 = 792,\n        Dlg_TwinTowers_1116 = 793,\n        Dlg_TwinTowers_1117 = 794,\n        Dlg_TwinTowers_1118 = 795,\n        Dlg_TwinTowers_1119 = 796,\n        Dlg_TwinTowers_1120 = 797,\n        Dlg_TwinTowers_1121 = 798,\n        Dlg_TwinTowers_1122 = 799,\n        Dlg_TwinTowers_1123 = 800,\n        Dlg_TwinTowers_1124 = 801,\n        Dlg_TwinTowers_1125 = 802,\n        Dlg_TwinTowers_1126 = 803,\n        Dlg_TwinTowers_1127 = 804,\n        Dlg_TwinTowers_1128 = 805,\n        Dlg_TwinTowers_1129 = 806,\n        Dlg_TwinTowers_1130 = 807,\n        Dlg_TwinTowers_1131 = 808,\n        Dlg_TwinTowers_1132 = 809,\n        Dlg_WhiteWolvesBioResearch_1000 = 810,\n        Dlg_WhiteWolvesBioResearch_1001 = 811,\n        Dlg_WhiteWolvesBioResearch_1002 = 812,\n        Dlg_WhiteWolvesBioResearch_1003 = 813,\n        Dlg_WhiteWolvesBioResearch_1004 = 814,\n        Dlg_WhiteWolvesBioResearch_1005 = 815,\n        Dlg_WhiteWolvesBioResearch_1006 = 816,\n        Dlg_WhiteWolvesBioResearch_1007 = 817,\n        Dlg_WhiteWolvesBioResearch_1008 = 818,\n        Dlg_WhiteWolvesBioResearch_1009 = 819,\n        Dlg_WhiteWolvesBioResearch_1010 = 820,\n        Dlg_WhiteWolvesBioResearch_1011 = 821,\n        Dlg_WhiteWolvesBioResearch_1012 = 822,\n        Dlg_WhiteWolvesBioResearch_1013 = 823,\n        Dlg_WhiteWolvesBioResearch_1014 = 824,\n        Dlg_WhiteWolvesBioResearch_1015 = 825,\n        Dlg_WhiteWolvesBioResearch_1016 = 826,\n        Dlg_WhiteWolvesBioResearch_1017 = 827,\n        Dlg_WhiteWolvesBioResearch_1018 = 828,\n        Dlg_WhiteWolvesBioResearch_1019 = 829,\n        Dlg_WhiteWolvesBioResearch_1020 = 830,\n        Dlg_WhiteWolvesBioResearch_1021 = 831,\n        Dlg_WhiteWolvesBioResearch_1022 = 832,\n        Dlg_WhiteWolvesBioResearch_1023 = 833,\n        Dlg_WhiteWolvesBioResearch_1024 = 834,\n        Dlg_WhiteWolvesBioResearch_1025 = 835,\n        Dlg_WhiteWolvesBioResearch_1026 = 836,\n        Dlg_WhiteWolvesBioResearch_1027 = 837,\n        Dlg_WhiteWolvesBioResearch_1028 = 838,\n        Dlg_WhiteWolvesBioResearch_1029 = 839,\n        Dlg_WhiteWolvesBioResearch_1030 = 840,\n        Dlg_WhiteWolvesBioResearch_1031 = 841,\n        Dlg_WhiteWolvesBioResearch_1032 = 842,\n        Dlg_WhiteWolvesBioResearch_1033 = 843,\n        Dlg_WhiteWolvesBioResearch_1034 = 844,\n        Dlg_WhiteWolvesBioResearch_1035 = 845,\n        Dlg_WhiteWolvesBioResearch_1036 = 846,\n        Dlg_WhiteWolvesBioResearch_1037 = 847,\n        Dlg_WhiteWolvesBioResearch_1038 = 848,\n        Dlg_WhiteWolvesBioResearch_1039 = 849,\n        Dlg_WhiteWolvesBioResearch_1040 = 850,\n        Dlg_WhiteWolvesBioResearch_1041 = 851,\n        Dlg_WhiteWolvesBioResearch_1042 = 852,\n        Dlg_WhiteWolvesBioResearch_1043 = 853,\n        Dlg_WhiteWolvesBioResearch_1044 = 854,\n        Dlg_RimeConvince_1000 = 855,\n        Dlg_RimeConvince_1001 = 856,\n        Dlg_RimeConvince_1002 = 857,\n        Dlg_RimeConvince_1003 = 858,\n        Dlg_RimeConvince_1004 = 859,\n        Dlg_RimeConvince_1005 = 860,\n        Dlg_RimeConvince_1006 = 861,\n        Dlg_RimeConvince_1007 = 862,\n        Dlg_RimeConvince_1008 = 863,\n        Dlg_RimeConvince_1009 = 864,\n        Dlg_RimeConvince_1010 = 865,\n        Dlg_RimeConvince_1011 = 866,\n        Dlg_RimeConvince_1012 = 867,\n        Dlg_RimeConvince_1013 = 868,\n        Dlg_RimeConvince_1014 = 869,\n        Dlg_RimeConvince_1015 = 870,\n        Dlg_RimeConvince_1016 = 871,\n        Dlg_RimeConvince_1017 = 872,\n        Dlg_RimeConvince_1018 = 873,\n        Dlg_RimeConvince_1019 = 874,\n        Dlg_RimeConvince_1020 = 875,\n        Dlg_RimeConvince_1021 = 876,\n        Dlg_RimeConvince_1022 = 877,\n        Dlg_RimeConvince_1023 = 878,\n        Dlg_RimeConvince_1024 = 879,\n        Dlg_RimeConvince_1025 = 880,\n        Dlg_RimeConvince_1026 = 881,\n        Dlg_RimeConvince_1027 = 882,\n        Dlg_RimeConvince_1028 = 883,\n        Dlg_RimeConvince_1029 = 884,\n        Dlg_RimeConvince_1030 = 885,\n        Dlg_RimeConvince_1031 = 886,\n        Dlg_RimeConvince_1032 = 887,\n        Dlg_RimeConvince_1033 = 888,\n        Dlg_RimeConvince_1034 = 889,\n        Dlg_RimeConvince_1035 = 890,\n        Dlg_RimeConvince_1036 = 891,\n        Dlg_RimeConvince_1037 = 892,\n        Dlg_RimeConvince_1038 = 893,\n        Dlg_RimeConvince_1039 = 894,\n        Dlg_RimeConvince_1040 = 895,\n        Dlg_RimeConvince_1041 = 896,\n        Dlg_RimeConvince_1042 = 897,\n        Dlg_RimeConvince_1043 = 898,\n        Dlg_RimeConvince_1044 = 899,\n        Dlg_RimeConvince_1045 = 900,\n        Dlg_RimeConvince_1046 = 901,\n        Dlg_RimeConvince_1047 = 902,\n        Dlg_RimeConvince_1048 = 903,\n        Dlg_RimeConvince_1049 = 904,\n        Dlg_RimeConvince_1050 = 905,\n        Dlg_RimeConvince_1051 = 906,\n        Dlg_RimeConvince_1052 = 907,\n        Dlg_RimeConvince_1053 = 908,\n        Dlg_RimeConvince_1054 = 909,\n        Dlg_RimeConvince_1055 = 910,\n        Dlg_RimeConvince_1056 = 911,\n        Dlg_RimeConvince_1057 = 912,\n        Dlg_RimeConvince_1058 = 913,\n        Dlg_RimeConvince_1059 = 914,\n        Dlg_RimeConvince_1060 = 915,\n        Dlg_RimeConvince_1061 = 916,\n        Dlg_RimeConvince_1062 = 917,\n        Dlg_RimeConvince_1063 = 918,\n        Dlg_RimeConvince_1064 = 919,\n        Dlg_RimeConvince_1065 = 920,\n        Dlg_RimeConvince_1066 = 921,\n        Dlg_RimeConvince_1067 = 922,\n        Dlg_RimeConvince_1068 = 923,\n        Dlg_RimeConvince_1069 = 924,\n        Dlg_RimeConvince_1070 = 925,\n        Dlg_RimeConvince_1071 = 926,\n        Dlg_RimeConvince_1072 = 927,\n        Dlg_RimeConvince_1073 = 928,\n        Dlg_RimeConvince_1074 = 929,\n        Dlg_RimeConvince_1075 = 930,\n        Dlg_RimeConvince_1076 = 931,\n        Dlg_RimeConvince_1077 = 932,\n        Dlg_RimeConvince_1078 = 933,\n        Dlg_RimeConvince_1079 = 934,\n        Dlg_RimeConvince_1080 = 935,\n        Dlg_RimeConvince_1081 = 936,\n        Dlg_RimeConvince_1082 = 937,\n        Dlg_RimeConvince_1083 = 938,\n        Dlg_RimeConvince_1084 = 939,\n        Dlg_RimeConvince_1085 = 940,\n        Dlg_RimeConvince_1086 = 941,\n        Dlg_RimeConvince_1087 = 942,\n        Dlg_RimeConvince_1088 = 943,\n        Dlg_RimeConvince_1089 = 944,\n        Dlg_RimeConvince_1090 = 945,\n        Dlg_RimeConvince_1091 = 946,\n        Dlg_RimeConvince_1092 = 947,\n        Dlg_RimeConvince_1093 = 948,\n        Dlg_RimeConvince_1094 = 949,\n        Dlg_RimeConvince_1095 = 950,\n        Dlg_RimeConvince_1096 = 951,\n        Dlg_RimeConvince_1097 = 952,\n        Dlg_RimeConvince_1098 = 953,\n        Dlg_RimeConvince_1099 = 954,\n        Dlg_RimeConvince_1100 = 955,\n        Dlg_RimeConvince_1101 = 956,\n        Dlg_RimeConvince_1102 = 957,\n        Dlg_RimeConvince_1103 = 958,\n        Dlg_RimeConvince_1104 = 959,\n        Dlg_RimeConvince_1105 = 960,\n        Dlg_RimeConvince_1106 = 961,\n        Dlg_RimeConvince_1107 = 962,\n        Dlg_RimeConvince_1108 = 963,\n        Dlg_RimeConvince_1109 = 964,\n        Dlg_RimeConvince_1110 = 965,\n        Dlg_RimeConvince_1111 = 966,\n        Dlg_RimeConvince_1112 = 967,\n        Dlg_RimeConvince_1113 = 968,\n        Dlg_RimeConvince_1114 = 969,\n        Dlg_RimeConvince_1115 = 970,\n        Dlg_RimeConvince_1116 = 971,\n        Dlg_RimeConvince_1117 = 972,\n        Dlg_RimeConvince_1118 = 973,\n        Dlg_RimeConvince_1119 = 974,\n        Dlg_RimeConvince_1120 = 975,\n        Dlg_RimeConvince_1121 = 976,\n        Dlg_RimeConvince_1122 = 977,\n        Dlg_RimeConvince_1123 = 978,\n        Dlg_RimeConvince_1124 = 979,\n        Dlg_RimeConvince_1125 = 980,\n        Dlg_RimeConvince_1126 = 981,\n        Dlg_RimeConvince_1127 = 982,\n        Dlg_RimeConvince_1128 = 983,\n        Dlg_RimeConvince_1129 = 984,\n        Dlg_RimeConvince_1130 = 985,\n        Dlg_RimeConvince_1131 = 986,\n        Dlg_RimeConvince_1132 = 987,\n        Dlg_RimeConvince_1133 = 988,\n        Dlg_RimeConvince_1134 = 989,\n        Dlg_RimeConvince_1135 = 990,\n        Dlg_RimeConvince_1136 = 991,\n        Dlg_RimeConvince_1137 = 992,\n        Dlg_RimeConvince_1138 = 993,\n        Dlg_RimeConvince_1139 = 994,\n        Dlg_RimeConvince_1140 = 995,\n        Dlg_RimeConvince_1141 = 996,\n        Dlg_RimeConvince_1142 = 997,\n        Dlg_RimeConvince_1143 = 998,\n        Dlg_RimeConvince_1144 = 999,\n        Dlg_RimeConvince_1145 = 1000,\n        Dlg_RimeConvince_1146 = 1001,\n        Dlg_RimeConvince_1147 = 1002,\n        Dlg_RimeConvince_1148 = 1003,\n        Dlg_Rift_1000 = 1004,\n        Dlg_Rift_1001 = 1005,\n        Dlg_Rift_1002 = 1006,\n        Dlg_Rift_1003 = 1007,\n        Dlg_Rift_1004 = 1008,\n        Dlg_Rift_1005 = 1009,\n        Dlg_Rift_1006 = 1010,\n        Dlg_Rift_1007 = 1011,\n        Dlg_Rift_1008 = 1012,\n        Dlg_Rift_1009 = 1013,\n        Dlg_Rift_1010 = 1014,\n        Dlg_Rift_1011 = 1015,\n        Dlg_Rift_1012 = 1016,\n        Dlg_Rift_1013 = 1017,\n        Dlg_Rift_1014 = 1018,\n        Dlg_Rift_1015 = 1019,\n        Dlg_Rift_1016 = 1020,\n        Dlg_Rift_1017 = 1021,\n        Dlg_Rift_1018 = 1022,\n        Dlg_Rift_1019 = 1023,\n        Dlg_Rift_1020 = 1024,\n        Dlg_Rift_1021 = 1025,\n        Dlg_Rift_1022 = 1026,\n        Dlg_Rift_1023 = 1027,\n        Dlg_Rift_1024 = 1028,\n        Dlg_Rift_1025 = 1029,\n        Dlg_Rift_1026 = 1030,\n        Dlg_Rift_1027 = 1031,\n        Dlg_Rift_1028 = 1032,\n        Dlg_Rift_1029 = 1033,\n        Dlg_Rift_1030 = 1034,\n        Dlg_Rift_1031 = 1035,\n        Dlg_Rift_1032 = 1036,\n        Dlg_Rift_1033 = 1037,\n        Dlg_Rift_1034 = 1038,\n        Dlg_Rift_1035 = 1039,\n        Dlg_Rift_1036 = 1040,\n        Dlg_Rift_1037 = 1041,\n        Dlg_Rift_1038 = 1042,\n        Dlg_Rift_1039 = 1043,\n        Dlg_Rift_1040 = 1044,\n        Dlg_Rift_1041 = 1045,\n        Dlg_Rift_1042 = 1046,\n        Dlg_Rift_1043 = 1047,\n        Dlg_Rift_1044 = 1048,\n        Dlg_Rift_1045 = 1049,\n        Dlg_Rift_1046 = 1050,\n        Dlg_Rift_1047 = 1051,\n        Dlg_Rift_1048 = 1052,\n        Dlg_Rift_1049 = 1053,\n        Dlg_Rift_1050 = 1054,\n        Dlg_Rift_1051 = 1055,\n        Dlg_Rift_1052 = 1056,\n        Dlg_Rift_1053 = 1057,\n        Dlg_Rift_1054 = 1058,\n        Dlg_Rift_1055 = 1059,\n        Dlg_Rift_1056 = 1060,\n        Dlg_Rift_1057 = 1061,\n        Dlg_Rift_1058 = 1062,\n        Dlg_Rift_1059 = 1063,\n        Dlg_Rift_1060 = 1064,\n        SfxAcquireWeaponOn = 1065,\n        SfxAcquireWeaponOff = 1066,\n        SfxAcquireDroneOn = 1067,\n        SfxAcquireDroneOff = 1068,\n        SfxAcquireCameraOn = 1069,\n        SfxAcquireCameraOff = 1070,\n        SfxTakeAllUniversal = 1071,\n        SfxTakeAllAmmo = 1072,\n        SfxTakeAllFuel = 1073,\n        SfxTakeAllMedkit = 1074,\n        SfxTakeAllOxygen = 1075,\n        SfxTakeAllRepair = 1076,\n        MusLightFight_KA03 = 1077,\n        MusLightFight_KA04 = 1078,\n        MusLightFight_KA05 = 1079,\n        MusLightFight_KA07 = 1080,\n        MusLightFight_KA08 = 1081,\n        MusLightFight_KA10 = 1082,\n        MusLightFight_KA11 = 1083,\n        MusSpecial_MM02 = 1084,\n        MusSpecial_MM03 = 1085,\n        MusSpecial_KA01 = 1086,\n        MusHeavyFight_KA03 = 1087,\n        SfxProgressTake = 1088,\n        SfxCancelTake = 1089,\n        SfxProgressPut = 1090,\n        SfxCancelPut = 1091,\n        HudAmmoNoWarning = 1092,\n        HudArmorNoWarning = 1093,\n        VehToolCrusherDrillCollidingOtherRelease2d = 1094,\n        VehToolCrusherDrillCollidingOtherRelease3d = 1095,\n        VehToolLaserCollidingOther2d = 1096,\n        VehToolLaserCollidingOther3d = 1097,\n        VehToolLaserCollidingOtherRelease2d = 1098,\n        VehToolLaserCollidingOtherRelease3d = 1099,\n        VehToolPressureDrillBlastOther2d = 1100,\n        VehToolPressureDrillBlastOther3d = 1101,\n        VehToolSawCutOther2d = 1102,\n        VehToolSawCutOther3d = 1103,\n        VehToolSawCutOtherRelease2d = 1104,\n        VehToolSawCutOtherRelease3d = 1105,\n        VehToolSawCutRelease2d = 1106,\n        VehToolSawCutRelease3d = 1107,\n        VehToolThermalDrillCollidingOther2d = 1108,\n        VehToolThermalDrillCollidingOther3d = 1109,\n        VehToolThermalDrillCollidingOtherRelease2d = 1110,\n        VehToolThermalDrillCollidingOtherRelease3d = 1111,\n        VehToolCrusherDrillCollidingOther2d = 1112,\n        VehToolCrusherDrillCollidingOther3d = 1113,\n        SfxFlareLoop01 = 1114,\n        SfxFlareDeploy = 1115,\n        Amb3D_EngineThrust = 1116,\n        VehLoopDrone = 1117,\n        VehLoopCamera = 1118,\n        WepEpmExplosion = 1119,\n        HudOxygenLeakingWarning = 1120,\n        VehLoopLargeShip = 1121,\n        MusLightFight_KA12 = 1122,\n        MusHeavyFight_KA05 = 1123,\n        MusSpecial_KA02 = 1124,\n        MusHeavyFight_KA07 = 1125,\n        MusSpecial_MM04 = 1126,\n        MusHeavyFight_KA04 = 1127,\n        MusSpecial_KA03 = 1128,\n        SfxMeteorFly = 1129,\n        SfxMeteorExplosion = 1130,\n        WepLargeShipAutocannonRotateRelease = 1131,\n        SfxNuclearExplosion = 1132,\n        MusLightFight_KA27 = 1133,\n        MusSpecial_KA04 = 1134,\n        MusSpecial_KA05 = 1135,\n        MusSpecial_MM05 = 1136,\n        Mus_lightfight_KA_26 = 1137,\n        Mus_lightfight_KA_28 = 1138,\n        Mus_special_KA_4_loop = 1139,\n        VehToolNuclearDrillLoop3d = 1140,\n        VehToolNuclearDrillLoop2d = 1141,\n        VehToolNuclearDrillRelease3d = 1142,\n        VehToolNuclearDrillRelease2d = 1143,\n        VehToolNuclearDrillColliding3d = 1144,\n        VehToolNuclearDrillColliding2d = 1145,\n        VehToolNuclearDrillCollidingOther3d = 1146,\n        VehToolNuclearDrillCollidingOther2d = 1147,\n        VehToolNuclearDrillCollidingRelease3d = 1148,\n        VehToolNuclearDrillCollidingRelease2d = 1149,\n        VehToolNuclearDrillCollidingOtherRelease3d = 1150,\n        VehToolNuclearDrillCollidingOtherRelease2d = 1151,\n        VehToolNuclearDrillIdle3d = 1152,\n        VehToolNuclearDrillIdle2d = 1153,\n        VehToolPressureDrillBlast3d = 1154,\n        VehToolPressureDrillBlastRock3d = 1155,\n        VehToolPressureDrillIdle3d = 1156,\n        VehToolPressureDrillRecharge3d = 1157,\n        SfxPlayerDeathBeep = 1158,\n        SfxPlayerDeathBreath = 1159,\n        Dlg_EACSurveySite_1000 = 1160,\n        Dlg_EACSurveySite_1001 = 1161,\n        Dlg_EACSurveySite_1002 = 1162,\n        Dlg_EACSurveySite_1003 = 1163,\n        Dlg_EACSurveySite_1004 = 1164,\n        Sht_Reich_JE_ForTheFuture = 1165,\n        Sht_Reich_JE_Vanquish = 1166,\n        Sht_Reich_JE_WeControl = 1167,\n        Sht_Reich_JE_YouAreTheWeakLink = 1168,\n        Sht_Reich_JE_YourFinalDay = 1169,\n        Sht_Russian_JE_DasVidanya = 1170,\n        Sht_Russian_JE_ForKremlin = 1171,\n        Sht_Russian_JE_ForMotherland = 1172,\n        Sht_Russian_JE_Harasho = 1173,\n        Sht_Russian_JE_ShootThem = 1174,\n        Sht_Russian_JE_TovaryshRemember = 1175,\n        Sht_Russian_JE_UnitedAndMighty = 1176,\n        Amb3D_RadioChatterAllied01_04 = 1177,\n        Amb3D_RadioChatterAllied05_08 = 1178,\n        Amb2D_RacingFans = 1179,\n        Amb3D_RadioChatterAllied13_16 = 1180,\n        Amb3D_RadioChatterChinese01_04 = 1181,\n        Amb3D_RadioChatterChinese05_08 = 1182,\n        Amb3D_RadioChatterChinese09_12 = 1183,\n        Amb2D_RedHeat2 = 1184,\n        Amb3D_RadioChatterRussian01_04 = 1185,\n        Amb3D_RadioChatterRussian05_08 = 1186,\n        Amb3D_RadioChatterRussian09_12 = 1187,\n        Amb3D_RadioChatterRussian13_16 = 1188,\n        MusMainMenu_KA_MM = 1189,\n        HudFuelNoWarning = 1190,\n        VehLoopLargeShipMadelyn = 1191,\n        VocRace01Welcome = 1192,\n        VocRace02countdown = 1193,\n        VocRace03cleanStart = 1194,\n        VocRace04running = 1195,\n        VocRace05minefields = 1196,\n        VocRace06speedDuel = 1197,\n        VocRace07allThose = 1198,\n        VocRace08moving = 1199,\n        VocRace09dirtyTricks = 1200,\n        VocRace10inside = 1201,\n        VocRace11wire = 1202,\n        Dlg_RussianTransmitter_1000 = 1203,\n        Dlg_RussianTransmitter_1001 = 1204,\n        Dlg_RussianTransmitter_1002 = 1205,\n        Dlg_RussianTransmitter_1003 = 1206,\n        Dlg_RussianTransmitter_1004 = 1207,\n        Dlg_RussianTransmitter_1005 = 1208,\n        Dlg_RussianTransmitter_1006 = 1209,\n        Dlg_RussianTransmitter_1007 = 1210,\n        Dlg_RussianTransmitter_1008 = 1211,\n        Dlg_RussianTransmitter_1009 = 1212,\n        Dlg_RussianTransmitter_1010 = 1213,\n        Dlg_RussianTransmitter_1011 = 1214,\n        Dlg_RussianTransmitter_1012 = 1215,\n        Dlg_RussianTransmitter_1013 = 1216,\n        Dlg_RussianTransmitter_1014 = 1217,\n        Dlg_RussianTransmitter_1015 = 1218,\n        Dlg_RussianTransmitter_1016 = 1219,\n        Dlg_RussianTransmitter_1017 = 1220,\n        Dlg_RussianTransmitter_1018 = 1221,\n        Dlg_RussianTransmitter_1019 = 1222,\n        Dlg_RussianTransmitter_1020 = 1223,\n        Dlg_RussianTransmitter_1021 = 1224,\n        Dlg_RussianTransmitter_1022 = 1225,\n        Dlg_RussianTransmitter_1023 = 1226,\n        Dlg_RussianTransmitter_1024 = 1227,\n        Dlg_RussianTransmitter_1025 = 1228,\n        Dlg_RussianTransmitter_1026 = 1229,\n        Dlg_RussianTransmitter_1027 = 1230,\n        Dlg_RussianTransmitter_1028 = 1231,\n        Dlg_RussianTransmitter_1029 = 1232,\n        Dlg_RussianTransmitter_1030 = 1233,\n        Dlg_RussianTransmitter_1031 = 1234,\n        Dlg_RussianTransmitter_1032 = 1235,\n        Dlg_RussianTransmitter_1033 = 1236,\n        Dlg_RussianTransmitter_1034 = 1237,\n        Dlg_RussianTransmitter_1035 = 1238,\n        Dlg_RussianTransmitter_1036 = 1239,\n        Dlg_RussianTransmitter_1037 = 1240,\n        Dlg_RussianTransmitter_1038 = 1241,\n        Dlg_RussianTransmitter_1039 = 1242,\n        Dlg_RussianTransmitter_1040 = 1243,\n        Dlg_RussianTransmitter_1041 = 1244,\n        Dlg_RussianTransmitter_1042 = 1245,\n        Dlg_RussianTransmitter_1043 = 1246,\n        Dlg_RussianTransmitter_1044 = 1247,\n        Dlg_RussianTransmitter_1045 = 1248,\n        Dlg_RussianTransmitter_1046 = 1249,\n        Dlg_RussianTransmitter_1047 = 1250,\n        Dlg_RussianTransmitter_1048 = 1251,\n        Dlg_RussianTransmitter_1049 = 1252,\n        Dlg_RussianTransmitter_1050 = 1253,\n        Dlg_RussianTransmitter_1051 = 1254,\n        Dlg_RussianTransmitter_1052 = 1255,\n        Dlg_RussianTransmitter_1053 = 1256,\n        Dlg_RussianTransmitter_1054 = 1257,\n        Dlg_RussianTransmitter_1055 = 1258,\n        Dlg_RussianTransmitter_1056 = 1259,\n        Dlg_RussianTransmitter_1057 = 1260,\n        Dlg_RussianTransmitter_1058 = 1261,\n        Dlg_RussianTransmitter_1059 = 1262,\n        Dlg_RussianTransmitter_1060 = 1263,\n        Dlg_RussianTransmitter_1061 = 1264,\n        Dlg_RussianTransmitter_1062 = 1265,\n        Dlg_RussianTransmitter_1063 = 1266,\n        Dlg_RussianTransmitter_1064 = 1267,\n        Dlg_RussianTransmitter_1065 = 1268,\n        Dlg_RussianTransmitter_1066 = 1269,\n        Dlg_RussianTransmitter_1067 = 1270,\n        Dlg_RussianTransmitter_1068 = 1271,\n        Dlg_RussianTransmitter_1069 = 1272,\n        Dlg_RussianTransmitter_1070 = 1273,\n        Dlg_RussianTransmitter_1071 = 1274,\n        Dlg_RussianTransmitter_1072 = 1275,\n        Dlg_RussianTransmitter_1073 = 1276,\n        Dlg_RussianTransmitter_1074 = 1277,\n        Dlg_RussianTransmitter_1075 = 1278,\n        Dlg_RussianTransmitter_1076 = 1279,\n        Dlg_RussianTransmitter_1077 = 1280,\n        Dlg_RussianTransmitter_1078 = 1281,\n        Dlg_RussianTransmitter_1079 = 1282,\n        Dlg_RussianTransmitter_1080 = 1283,\n        Dlg_RussianTransmitter_1081 = 1284,\n        Dlg_RussianTransmitter_1082 = 1285,\n        Dlg_RussianTransmitter_1083 = 1286,\n        Dlg_RussianTransmitter_1084 = 1287,\n        Dlg_RussianTransmitter_1085 = 1288,\n        Dlg_RussianTransmitter_1086 = 1289,\n        Dlg_RussianTransmitter_1087 = 1290,\n        Dlg_RussianTransmitter_1088 = 1291,\n        Dlg_RussianTransmitter_1089 = 1292,\n        Dlg_RussianTransmitter_1090 = 1293,\n        Dlg_RussianTransmitter_1091 = 1294,\n        Dlg_RussianTransmitter_1092 = 1295,\n        Dlg_RussianTransmitter_1093 = 1296,\n        Dlg_RussianTransmitter_1094 = 1297,\n        Dlg_RussianTransmitter_1095 = 1298,\n        Dlg_RussianTransmitter_1096 = 1299,\n        Dlg_RussianTransmitter_1097 = 1300,\n        Dlg_RussianTransmitter_1098 = 1301,\n        Dlg_RussianTransmitter_1099 = 1302,\n        Dlg_RussianTransmitter_1100 = 1303,\n        Dlg_RussianTransmitter_1101 = 1304,\n        Dlg_RussianTransmitter_1102 = 1305,\n        Dlg_RussianTransmitter_1103 = 1306,\n        Dlg_RussianTransmitter_1104 = 1307,\n        Dlg_RussianTransmitter_1105 = 1308,\n        Dlg_RussianTransmitter_1106 = 1309,\n        Dlg_RussianTransmitter_1107 = 1310,\n        Dlg_RussianTransmitter_1108 = 1311,\n        Dlg_RussianTransmitter_1109 = 1312,\n        Dlg_RussianTransmitter_1110 = 1313,\n        Dlg_RussianTransmitter_1111 = 1314,\n        Dlg_BarthsMoonTransmitter_1001 = 1315,\n        Dlg_BarthsMoonTransmitter_1002 = 1316,\n        Dlg_BarthsMoonTransmitter_1003 = 1317,\n        Dlg_BarthsMoonTransmitter_1004 = 1318,\n        Dlg_BarthsMoonTransmitter_1005 = 1319,\n        Dlg_BarthsMoonTransmitter_1006 = 1320,\n        Dlg_BarthsMoonTransmitter_1007 = 1321,\n        Dlg_BarthsMoonTransmitter_1008 = 1322,\n        Dlg_BarthsMoonTransmitter_1009 = 1323,\n        Dlg_BarthsMoonTransmitter_1010 = 1324,\n        Dlg_BarthsMoonTransmitter_1011 = 1325,\n        Dlg_BarthsMoonTransmitter_1012 = 1326,\n        Dlg_BarthsMoonTransmitter_1013 = 1327,\n        Dlg_BarthsMoonTransmitter_1014 = 1328,\n        Dlg_BarthsMoonTransmitter_1015 = 1329,\n        Dlg_BarthsMoonTransmitter_1016 = 1330,\n        Dlg_BarthsMoonTransmitter_1018 = 1331,\n        Dlg_BarthsMoonTransmitter_1019 = 1332,\n        Dlg_BarthsMoonTransmitter_1020 = 1333,\n        Dlg_BarthsMoonTransmitter_1021 = 1334,\n        Dlg_BarthsMoonTransmitter_1022 = 1335,\n        Dlg_BarthsMoonTransmitter_1023 = 1336,\n        Dlg_BarthsMoonTransmitter_1024 = 1337,\n        Dlg_BarthsMoonTransmitter_1025 = 1338,\n        Dlg_BarthsMoonTransmitter_1026 = 1339,\n        Dlg_BarthsMoonTransmitter_1027 = 1340,\n        Dlg_BarthsMoonTransmitter_1028 = 1341,\n        Dlg_BarthsMoonTransmitter_1029 = 1342,\n        Dlg_BarthsMoonTransmitter_1030 = 1343,\n        Dlg_BarthsMoonTransmitter_1031 = 1344,\n        Dlg_BarthsMoonTransmitter_1032 = 1345,\n        Dlg_BarthsMoonTransmitter_1033 = 1346,\n        Dlg_BarthsMoonTransmitter_1034 = 1347,\n        Dlg_BarthsMoonTransmitter_1035 = 1348,\n        Dlg_BarthsMoonTransmitter_1036 = 1349,\n        Dlg_BarthsMoonTransmitter_1037 = 1350,\n        Dlg_BarthsMoonTransmitter_1038 = 1351,\n        Dlg_BarthsMoonTransmitter_1039 = 1352,\n        Dlg_BarthsMoonTransmitter_1040 = 1353,\n        Dlg_BarthsMoonTransmitter_1041 = 1354,\n        Dlg_BarthsMoonTransmitter_1042 = 1355,\n        Dlg_BarthsMoonTransmitter_1043 = 1356,\n        Dlg_BarthsMoonTransmitter_1044 = 1357,\n        Dlg_BarthsMoonTransmitter_1045 = 1358,\n        Dlg_BarthsMoonTransmitter_1046 = 1359,\n        Dlg_BarthsMoonTransmitter_1047 = 1360,\n        Dlg_BarthsMoonTransmitter_1048 = 1361,\n        Dlg_BarthsMoonTransmitter_1049 = 1362,\n        Dlg_BarthsMoonTransmitter_1050 = 1363,\n        Dlg_BarthsMoonTransmitter_1051 = 1364,\n        Dlg_BarthsMoonTransmitter_1052 = 1365,\n        Dlg_BarthsMoonTransmitter_1053 = 1366,\n        Dlg_BarthsMoonTransmitter_1054 = 1367,\n        Dlg_BarthsMoonTransmitter_1055 = 1368,\n        Dlg_BarthsMoonTransmitter_1056 = 1369,\n        Dlg_BarthsMoonTransmitter_1057 = 1370,\n        Dlg_BarthsMoonTransmitter_1058 = 1371,\n        Dlg_BarthsMoonTransmitter_1059 = 1372,\n        Dlg_BarthsMoonTransmitter_1060 = 1373,\n        Dlg_BarthsMoonTransmitter_1061 = 1374,\n        Dlg_BarthsMoonTransmitter_1062 = 1375,\n        Dlg_BarthsMoonTransmitter_1063 = 1376,\n        Dlg_BarthsMoonTransmitter_1064 = 1377,\n        Dlg_BarthsMoonTransmitter_1065 = 1378,\n        Dlg_BarthsMoonTransmitter_1066 = 1379,\n        Dlg_BarthsMoonTransmitter_1067 = 1380,\n        Dlg_BarthsMoonTransmitter_1068 = 1381,\n        Dlg_BarthsMoonTransmitter_1069 = 1382,\n        Dlg_BarthsMoonTransmitter_1070 = 1383,\n        Dlg_BarthsMoonTransmitter_1071 = 1384,\n        Dlg_BarthsMoonTransmitter_1072 = 1385,\n        Dlg_BarthsMoonTransmitter_1073 = 1386,\n        Dlg_BarthsMoonTransmitter_1074 = 1387,\n        Dlg_BarthsMoonTransmitter_1075 = 1388,\n        Dlg_BarthsMoonTransmitter_1076 = 1389,\n        Dlg_BarthsMoonTransmitter_1077 = 1390,\n        Dlg_BarthsMoonTransmitter_1078 = 1391,\n        Dlg_BarthsMoonTransmitter_1079 = 1392,\n        Dlg_BarthsMoonTransmitter_1079b = 1393,\n        Dlg_BarthsMoonTransmitter_1080 = 1394,\n        Dlg_BarthsMoonTransmitter_1081 = 1395,\n        Dlg_BarthsMoonTransmitter_1082 = 1396,\n        Dlg_BarthsMoonTransmitter_1083 = 1397,\n        Dlg_BarthsMoonTransmitter_1084 = 1398,\n        Dlg_BarthsMoonTransmitter_1085 = 1399,\n        Dlg_BarthsMoonTransmitter_1086 = 1400,\n        Dlg_BarthsMoonTransmitter_1087 = 1401,\n        Dlg_BarthsMoonTransmitter_1088 = 1402,\n        Dlg_BarthsMoonTransmitter_1089 = 1403,\n        Dlg_BarthsMoonTransmitter_1090 = 1404,\n        Dlg_BarthsMoonTransmitter_1091 = 1405,\n        Dlg_BarthsMoonTransmitter_1092 = 1406,\n        Dlg_BarthsMoonTransmitter_1093 = 1407,\n        Dlg_BarthsMoonTransmitter_1094 = 1408,\n        Dlg_BarthsMoonTransmitter_1095 = 1409,\n        Dlg_BarthsMoonTransmitter_1096 = 1410,\n        Dlg_BarthsMoonTransmitter_1097 = 1411,\n        Dlg_BarthsMoonTransmitter_1098 = 1412,\n        Dlg_BarthsMoonTransmitter_1099 = 1413,\n        Dlg_BarthsMoonTransmitter_1100 = 1414,\n        Dlg_BarthsMoonTransmitter_1101 = 1415,\n        Dlg_BarthsMoonTransmitter_1102 = 1416,\n        Dlg_BarthsMoonTransmitter_1103 = 1417,\n        Dlg_BarthsMoonTransmitter_1104 = 1418,\n        Dlg_BarthsMoonTransmitter_1105 = 1419,\n        Dlg_BarthsMoonTransmitter_1106 = 1420,\n        Dlg_BarthsMoonTransmitter_1107 = 1421,\n        Dlg_BarthsMoonTransmitter_1108 = 1422,\n        Dlg_BarthsMoonTransmitter_1109 = 1423,\n        Dlg_BarthsMoonTransmitter_1110 = 1424,\n        Dlg_BarthsMoonTransmitter_1111 = 1425,\n        Dlg_BarthsMoonTransmitter_1112 = 1426,\n        Dlg_BarthsMoonTransmitter_1113 = 1427,\n        Dlg_BarthsMoonTransmitter_1114 = 1428,\n        Dlg_BarthsMoonTransmitter_1115 = 1429,\n        Dlg_BarthsMoonTransmitter_1116 = 1430,\n        Dlg_BarthsMoonTransmitter_1117 = 1431,\n        Dlg_BarthsMoonTransmitter_1118 = 1432,\n        Dlg_BarthsMoonTransmitter_1119 = 1433,\n        Dlg_BarthsMoonTransmitter_1120 = 1434,\n        Dlg_BarthsMoonTransmitter_1121 = 1435,\n        Dlg_BarthsMoonTransmitter_1122 = 1436,\n        Dlg_BarthsMoonTransmitter_1123 = 1437,\n        Dlg_BarthsMoonTransmitter_1124 = 1438,\n        Dlg_BarthsMoonTransmitter_1125 = 1439,\n        Dlg_BarthsMoonTransmitter_1126 = 1440,\n        Dlg_BarthsMoonTransmitter_1127 = 1441,\n        Dlg_BarthsMoonTransmitter_1128 = 1442,\n        Dlg_BarthsMoonTransmitter_1129 = 1443,\n        Dlg_BarthsMoonTransmitter_1130 = 1444,\n        Dlg_BarthsMoonTransmitter_1131 = 1445,\n        Dlg_BarthsMoonTransmitter_1132 = 1446,\n        Dlg_BarthsMoonTransmitter_1133 = 1447,\n        Dlg_BarthsMoonTransmitter_1134 = 1448,\n        Dlg_BarthsMoonTransmitter_1135 = 1449,\n        Dlg_BarthsMoonTransmitter_1136 = 1450,\n        Dlg_BarthsMoonTransmitter_1137 = 1451,\n        Dlg_BarthsMoonTransmitter_1138 = 1452,\n        Dlg_BarthsMoonTransmitter_1139 = 1453,\n        Dlg_BarthsMoonTransmitter_1140 = 1454,\n        Dlg_BarthsMoonTransmitter_1141 = 1455,\n        Dlg_BarthsMoonTransmitter_1142 = 1456,\n        Dlg_BarthsMoonTransmitter_1143 = 1457,\n        Dlg_BarthsMoonTransmitter_1144 = 1458,\n        Dlg_BarthsMoonTransmitter_1145 = 1459,\n        Dlg_BarthsMoonTransmitter_1146 = 1460,\n        Dlg_BarthsMoonTransmitter_1147 = 1461,\n        Dlg_BarthsMoonTransmitter_1148 = 1462,\n        Dlg_BarthsMoonTransmitter_1149 = 1463,\n        Dlg_BarthsMoonTransmitter_1150 = 1464,\n        Dlg_BarthsMoonTransmitter_1151 = 1465,\n        Dlg_BarthsMoonTransmitter_1152 = 1466,\n        Dlg_BarthsMoonTransmitter_1153 = 1467,\n        Dlg_BarthsMoonTransmitter_1154 = 1468,\n        Dlg_BarthsMoonTransmitter_1155 = 1469,\n        Dlg_BarthsMoonTransmitter_1156 = 1470,\n        Dlg_BarthsMoonTransmitter_1157 = 1471,\n        Dlg_BarthsMoonTransmitter_1158 = 1472,\n        Dlg_BarthsMoonTransmitter_1159 = 1473,\n        Dlg_BarthsMoonTransmitter_1160 = 1474,\n        Dlg_BarthsMoonTransmitter_1161 = 1475,\n        Dlg_BarthsMoonTransmitter_1162 = 1476,\n        Dlg_BarthsMoonTransmitter_1163 = 1477,\n        Dlg_BarthsMoonTransmitter_1164 = 1478,\n        Dlg_BarthsMoonTransmitter_1165 = 1479,\n        Dlg_BarthsMoonTransmitter_1166 = 1480,\n        Dlg_BarthsMoonTransmitter_1167 = 1481,\n        Dlg_BarthsMoonTransmitter_1168 = 1482,\n        Dlg_BarthsMoonTransmitter_1169 = 1483,\n        Dlg_BarthsMoonTransmitter_1170 = 1484,\n        Dlg_BarthsMoonTransmitter_1171 = 1485,\n        Dlg_BarthsMoonTransmitter_1172 = 1486,\n        Dlg_BarthsMoonTransmitter_1173 = 1487,\n        Dlg_BarthsMoonTransmitter_1174 = 1488,\n        Dlg_BarthsMoonTransmitter_1175 = 1489,\n        Dlg_BarthsMoonTransmitter_1176 = 1490,\n        Dlg_BarthsMoonTransmitter_1177 = 1491,\n        Dlg_BarthsMoonTransmitter_1178 = 1492,\n        Dlg_BarthsMoonTransmitter_1179 = 1493,\n        Dlg_BarthsMoonTransmitter_1180 = 1494,\n        Dlg_BarthsMoonTransmitter_1181 = 1495,\n        Dlg_BarthsMoonTransmitter_1182 = 1496,\n        Dlg_BarthsMoonTransmitter_1183 = 1497,\n        Dlg_BarthsMoonTransmitter_1184 = 1498,\n        Dlg_BarthsMoonTransmitter_1185 = 1499,\n        Dlg_BarthsMoonTransmitter_1186 = 1500,\n        Dlg_BarthsMoonTransmitter_1187 = 1501,\n        Dlg_BarthsMoonTransmitter_1188 = 1502,\n        Dlg_BarthsMoonTransmitter_1189 = 1503,\n        Dlg_BarthsMoonTransmitter_1190 = 1504,\n        Dlg_BarthsMoonTransmitter_1191 = 1505,\n        Dlg_BarthsMoonTransmitter_1192 = 1506,\n        Dlg_BarthsMoonTransmitter_1193 = 1507,\n        Dlg_BarthsMoonTransmitter_1194 = 1508,\n        Dlg_BarthsMoonTransmitter_1195 = 1509,\n        Dlg_BarthsMoonTransmitter_1196 = 1510,\n        Dlg_BarthsMoonTransmitter_1197 = 1511,\n        Dlg_BarthsMoonTransmitter_1198 = 1512,\n        Dlg_BarthsMoonTransmitter_1199 = 1513,\n        Dlg_BarthsMoonTransmitter_1200 = 1514,\n        Dlg_BarthsMoonTransmitter_1201 = 1515,\n        Dlg_BarthsMoonTransmitter_1202 = 1516,\n        Dlg_BarthsMoonTransmitter_1203 = 1517,\n        Dlg_BarthsMoonTransmitter_1204 = 1518,\n        Dlg_BarthsMoonTransmitter_1205 = 1519,\n        Dlg_BarthsMoonTransmitter_1206 = 1520,\n        Dlg_BarthsMoonTransmitter_1207 = 1521,\n        Dlg_BarthsMoonTransmitter_1208 = 1522,\n        Dlg_BarthsMoonTransmitter_1209 = 1523,\n        Dlg_BarthsMoonTransmitter_1210 = 1524,\n        Dlg_BarthsMoonTransmitter_1211 = 1525,\n        Dlg_BarthsMoonTransmitter_1212 = 1526,\n        Dlg_BarthsMoonTransmitter_1213 = 1527,\n        Dlg_BarthsMoonTransmitter_1214 = 1528,\n        Dlg_BarthsMoonTransmitter_1215 = 1529,\n        Dlg_FortValiant_1000 = 1530,\n        Dlg_FortValiant_1001 = 1531,\n        Dlg_FortValiant_1002 = 1532,\n        Dlg_FortValiant_1003 = 1533,\n        Dlg_FortValiant_1004 = 1534,\n        Dlg_FortValiant_1005 = 1535,\n        Dlg_FortValiant_1006 = 1536,\n        Dlg_FortValiant_1007 = 1537,\n        Dlg_FortValiant_1008 = 1538,\n        Dlg_FortValiant_1009 = 1539,\n        Dlg_FortValiant_1010 = 1540,\n        Dlg_FortValiant_1011 = 1541,\n        Dlg_FortValiant_1012 = 1542,\n        Dlg_FortValiant_1013 = 1543,\n        Dlg_FortValiant_1014 = 1544,\n        Dlg_FortValiant_1015 = 1545,\n        Dlg_FortValiant_1016 = 1546,\n        Dlg_FortValiant_1017 = 1547,\n        Dlg_FortValiant_1018 = 1548,\n        Dlg_FortValiant_1019 = 1549,\n        Dlg_FortValiant_1020 = 1550,\n        Dlg_FortValiant_1021 = 1551,\n        Dlg_FortValiant_1022 = 1552,\n        Dlg_FortValiant_1023 = 1553,\n        Dlg_FortValiant_1024 = 1554,\n        Dlg_FortValiant_1025 = 1555,\n        Dlg_FortValiant_1026 = 1556,\n        Dlg_FortValiant_1027 = 1557,\n        Dlg_FortValiant_1028 = 1558,\n        Dlg_FortValiant_1029 = 1559,\n        Dlg_FortValiant_1030 = 1560,\n        Dlg_FortValiant_1031 = 1561,\n        Dlg_FortValiant_1032 = 1562,\n        Dlg_FortValiant_1033 = 1563,\n        Dlg_FortValiant_1034 = 1564,\n        Dlg_FortValiant_1035 = 1565,\n        Dlg_FortValiant_1036 = 1566,\n        Dlg_FortValiant_1037 = 1567,\n        Dlg_FortValiant_1038 = 1568,\n        Dlg_FortValiant_1039 = 1569,\n        Dlg_FortValiant_1040 = 1570,\n        Dlg_FortValiant_1041 = 1571,\n        Dlg_FortValiant_1042 = 1572,\n        Dlg_FortValiant_1043 = 1573,\n        Dlg_FortValiant_1044 = 1574,\n        Dlg_FortValiant_1045 = 1575,\n        Dlg_FortValiant_1046 = 1576,\n        Dlg_FortValiantB_1000 = 1577,\n        Dlg_FortValiantB_1001 = 1578,\n        Dlg_FortValiantB_1002 = 1579,\n        Dlg_FortValiantB_1003 = 1580,\n        Dlg_FortValiantB_1004 = 1581,\n        Dlg_FortValiantB_1005 = 1582,\n        Dlg_FortValiantB_1006 = 1583,\n        Dlg_FortValiantB_1007 = 1584,\n        Dlg_FortValiantB_1008 = 1585,\n        Dlg_FortValiantB_1009 = 1586,\n        Dlg_FortValiantB_1010 = 1587,\n        Dlg_FortValiantB_1011 = 1588,\n        Dlg_FortValiantB_1012 = 1589,\n        Dlg_FortValiantB_1013 = 1590,\n        Dlg_FortValiantB_1014 = 1591,\n        Dlg_FortValiantB_1015 = 1592,\n        Dlg_FortValiantB_1016 = 1593,\n        Dlg_FortValiantB_1017 = 1594,\n        Dlg_FortValiantB_1018 = 1595,\n        Dlg_FortValiantB_1019 = 1596,\n        Dlg_FortValiantB_1020 = 1597,\n        Dlg_FortValiantB_1021 = 1598,\n        Dlg_FortValiantB_1022 = 1599,\n        Dlg_FortValiantB_1023 = 1600,\n        Dlg_FortValiantB_1024 = 1601,\n        Dlg_FortValiantB_1025 = 1602,\n        Dlg_FortValiantB_1026 = 1603,\n        Dlg_FortValiantB_1027 = 1604,\n        Dlg_FortValiantB_1028 = 1605,\n        Dlg_FortValiantB_1029 = 1606,\n        Dlg_FortValiantB_1030 = 1607,\n        Dlg_FortValiantB_1031 = 1608,\n        Dlg_FortValiantB_1032 = 1609,\n        Dlg_ReichstagA_1000 = 1610,\n        Dlg_ReichstagA_1001 = 1611,\n        Dlg_ReichstagA_1002 = 1612,\n        Dlg_ReichstagA_1003 = 1613,\n        Dlg_ReichstagA_1004 = 1614,\n        Dlg_ReichstagA_1005 = 1615,\n        Dlg_ReichstagA_1006 = 1616,\n        Dlg_ReichstagA_1007 = 1617,\n        Dlg_ReichstagA_1008 = 1618,\n        Dlg_ReichstagA_1009 = 1619,\n        Dlg_ReichstagA_1010 = 1620,\n        Dlg_ReichstagA_1011 = 1621,\n        Dlg_ReichstagA_1012 = 1622,\n        Dlg_ReichstagA_1013 = 1623,\n        Dlg_ReichstagA_1014 = 1624,\n        Dlg_ReichstagA_1015 = 1625,\n        Dlg_ReichstagA_1016 = 1626,\n        Dlg_ReichstagA_1017 = 1627,\n        Dlg_ReichstagA_1018 = 1628,\n        Dlg_ReichstagA_1019 = 1629,\n        Dlg_ReichstagA_1020 = 1630,\n        Dlg_ReichstagA_1021 = 1631,\n        Dlg_ReichstagA_1022 = 1632,\n        Dlg_ReichstagA_1023 = 1633,\n        Dlg_ReichstagA_1024 = 1634,\n        Dlg_ReichstagA_1025 = 1635,\n        Dlg_ReichstagA_1026 = 1636,\n        Dlg_ReichstagA_1027 = 1637,\n        Dlg_ReichstagA_1028 = 1638,\n        Dlg_ReichstagA_1029 = 1639,\n        Dlg_ReichstagA_1030 = 1640,\n        Dlg_ReichstagA_1031 = 1641,\n        Dlg_ReichstagA_1032 = 1642,\n        Dlg_ReichstagA_1033 = 1643,\n        Dlg_ReichstagA_1034 = 1644,\n        Dlg_ReichstagA_1035 = 1645,\n        Dlg_ReichstagA_1036 = 1646,\n        Dlg_ReichstagA_1037 = 1647,\n        Dlg_ReichstagA_1038 = 1648,\n        Dlg_ReichstagC_1000 = 1649,\n        Dlg_ReichstagC_1001 = 1650,\n        Dlg_ReichstagC_1002 = 1651,\n        Dlg_ReichstagC_1003 = 1652,\n        Dlg_ReichstagC_1004 = 1653,\n        Dlg_ReichstagC_1005 = 1654,\n        Dlg_ReichstagC_1006 = 1655,\n        Dlg_ReichstagC_1007 = 1656,\n        Dlg_ReichstagC_1008 = 1657,\n        Dlg_ReichstagC_1009 = 1658,\n        Dlg_ReichstagC_1010 = 1659,\n        Dlg_ReichstagC_1011 = 1660,\n        Dlg_ReichstagC_1012 = 1661,\n        Dlg_ReichstagC_1013 = 1662,\n        Dlg_ReichstagC_1014 = 1663,\n        Dlg_ReichstagC_1015 = 1664,\n        Dlg_ReichstagC_1016 = 1665,\n        Dlg_ReichstagC_1017 = 1666,\n        Dlg_ReichstagC_1018 = 1667,\n        Dlg_ReichstagC_1019 = 1668,\n        Dlg_ReichstagC_1020 = 1669,\n        Dlg_ReichstagC_1021 = 1670,\n        Dlg_ReichstagC_1022 = 1671,\n        Dlg_ReichstagC_1023 = 1672,\n        Dlg_ReichstagC_1024 = 1673,\n        Dlg_ReichstagC_1025 = 1674,\n        Dlg_ReichstagC_1026 = 1675,\n        Dlg_ReichstagC_1027 = 1676,\n        Dlg_ReichstagC_1028 = 1677,\n        Dlg_ReichstagC_1029 = 1678,\n        Dlg_ReichstagC_1030 = 1679,\n        Dlg_ReichstagC_1031 = 1680,\n        Dlg_ReichstagC_1032 = 1681,\n        Dlg_ReichstagC_1033 = 1682,\n        Dlg_ReichstagC_1034 = 1683,\n        Dlg_ReichstagC_1035 = 1684,\n        Dlg_ReichstagC_1036 = 1685,\n        Dlg_ReichstagC_1037 = 1686,\n        Dlg_ReichstagC_1038 = 1687,\n        Dlg_ReichstagC_1039 = 1688,\n        Dlg_ReichstagC_1040 = 1689,\n        Dlg_ReichstagC_1041 = 1690,\n        Dlg_ReichstagC_1042 = 1691,\n        Dlg_ReichstagC_1043 = 1692,\n        Dlg_ReichstagC_1044 = 1693,\n        Dlg_ReichstagC_1045 = 1694,\n        Dlg_ReichstagC_1046 = 1695,\n        Dlg_ReichstagC_1047 = 1696,\n        Dlg_ReichstagC_1048 = 1697,\n        Dlg_ReichstagC_1049 = 1698,\n        Dlg_ReichstagC_1050 = 1699,\n        Dlg_ReichstagC_1051 = 1700,\n        Dlg_ReichstagC_1052 = 1701,\n        Dlg_ReichstagC_1053 = 1702,\n        Dlg_ReichstagC_1054 = 1703,\n        Dlg_ReichstagC_1055 = 1704,\n        Dlg_ReichstagC_1056 = 1705,\n        Dlg_ReichstagC_1057 = 1706,\n        Dlg_ReichstagC_1058 = 1707,\n        Dlg_ReichstagC_1059 = 1708,\n        Dlg_ReichstagC_1060 = 1709,\n        Dlg_ReichstagC_1061 = 1710,\n        Dlg_ReichstagC_1062 = 1711,\n        Dlg_ReichstagC_1063 = 1712,\n        Dlg_ReichstagC_1064 = 1713,\n        Dlg_ReichstagC_1065 = 1714,\n        Dlg_EacPrison_1000 = 1715,\n        Dlg_EacPrison_1001 = 1716,\n        Dlg_EacPrison_1002 = 1717,\n        Dlg_EacPrison_1003 = 1718,\n        Dlg_EacPrison_1004 = 1719,\n        Dlg_EacPrison_1005 = 1720,\n        Dlg_EacPrison_1006 = 1721,\n        Dlg_EacPrison_1007 = 1722,\n        Dlg_EacPrison_1008 = 1723,\n        Dlg_EacPrison_1009 = 1724,\n        Dlg_EacPrison_1010 = 1725,\n        Dlg_EacPrison_1011 = 1726,\n        Dlg_EacPrison_1012 = 1727,\n        Dlg_EacPrison_1013 = 1728,\n        Dlg_EacPrison_1014 = 1729,\n        Dlg_EacPrison_1015 = 1730,\n        Dlg_EacPrison_1016 = 1731,\n        Dlg_EacPrison_1017 = 1732,\n        Dlg_EacPrison_1018 = 1733,\n        Dlg_EacPrison_1019 = 1734,\n        Dlg_EacPrison_1020 = 1735,\n        Dlg_EacPrison_1021 = 1736,\n        Dlg_EacPrison_1022 = 1737,\n        Dlg_EacPrison_1023 = 1738,\n        Dlg_EacPrison_1024 = 1739,\n        Dlg_EacPrison_1025 = 1740,\n        Dlg_EacPrison_1026 = 1741,\n        Dlg_EacPrison_1027 = 1742,\n        Dlg_EacPrison_1028 = 1743,\n        Dlg_EacPrison_1029 = 1744,\n        Dlg_EacPrison_1030 = 1745,\n        Dlg_EacPrison_1031 = 1746,\n        Dlg_EacPrison_1032 = 1747,\n        Dlg_EacPrison_1033 = 1748,\n        Dlg_EacPrison_1034 = 1749,\n        Dlg_EacPrison_1035 = 1750,\n        Dlg_EacPrison_1036 = 1751,\n        Dlg_EacPrison_1037 = 1752,\n        Dlg_EacPrison_1038 = 1753,\n        Dlg_EacPrison_1039 = 1754,\n        Dlg_EacPrison_1040 = 1755,\n        Dlg_EacPrison_1041 = 1756,\n        Dlg_EacPrison_1042 = 1757,\n        Dlg_EacPrison_1043 = 1758,\n        Dlg_EacPrison_1044 = 1759,\n        Dlg_EacPrison_1045 = 1760,\n        Dlg_EacPrison_1046 = 1761,\n        Dlg_EacPrison_1047 = 1762,\n        Dlg_EacPrison_1048 = 1763,\n        Dlg_EacPrison_1049 = 1764,\n        Dlg_EacPrison_1050 = 1765,\n        Dlg_EacPrison_1051 = 1766,\n        Dlg_EacPrison_1052 = 1767,\n        Dlg_EacPrison_1053 = 1768,\n        Dlg_EacPrison_1054 = 1769,\n        Dlg_EacPrison_1055 = 1770,\n        Dlg_EacPrison_1056 = 1771,\n        Dlg_EacPrison_1057 = 1772,\n        Dlg_EacPrison_1058 = 1773,\n        Dlg_EacPrison_1059 = 1774,\n        Dlg_EacPrison_1060 = 1775,\n        Dlg_EacPrison_1061 = 1776,\n        Dlg_EacPrison_1062 = 1777,\n        Dlg_EacPrison_1063 = 1778,\n        Dlg_EacPrison_1064 = 1779,\n        Dlg_EacPrison_1065 = 1780,\n        Dlg_EacPrison_1066 = 1781,\n        Dlg_EacPrison_1067 = 1782,\n        Dlg_EacPrison_1068 = 1783,\n        Dlg_EacPrison_1069 = 1784,\n        Dlg_EacPrison_1070 = 1785,\n        Dlg_EacPrison_1071 = 1786,\n        Dlg_EacPrison_1072 = 1787,\n        Dlg_EacPrison_1073 = 1788,\n        Dlg_EacPrison_1074 = 1789,\n        Dlg_EacPrison_1075 = 1790,\n        Dlg_EacPrison_1076 = 1791,\n        Dlg_EacPrison_1077 = 1792,\n        Dlg_EacPrison_1078 = 1793,\n        Dlg_EacPrison_1079 = 1794,\n        Dlg_EacPrison_1080 = 1795,\n        Dlg_EacPrison_1081 = 1796,\n        Dlg_EacPrison_1082 = 1797,\n        Dlg_EacPrison_1083 = 1798,\n        Dlg_EacPrison_1084 = 1799,\n        Dlg_EacPrison_1085 = 1800,\n        Dlg_EacPrison_1086 = 1801,\n        Dlg_EacPrison_1087 = 1802,\n        Dlg_EacPrison_1088 = 1803,\n        Dlg_ChineseEscape_1000 = 1804,\n        Dlg_ChineseEscape_1001 = 1805,\n        Dlg_ChineseEscape_1002 = 1806,\n        Dlg_ChineseEscape_1003 = 1807,\n        Dlg_ChineseEscape_1004 = 1808,\n        Dlg_ChineseEscape_1005 = 1809,\n        Dlg_ChineseEscape_1006 = 1810,\n        Dlg_ChineseEscape_1007 = 1811,\n        Dlg_ChineseEscape_1008 = 1812,\n        Dlg_ChineseEscape_1009 = 1813,\n        Dlg_ChineseEscape_1010 = 1814,\n        Dlg_ChineseEscape_1011 = 1815,\n        Dlg_ChineseEscape_1012 = 1816,\n        Dlg_ChineseEscape_1013 = 1817,\n        Dlg_ChineseEscape_1014 = 1818,\n        Dlg_ChineseEscape_1015 = 1819,\n        Dlg_ChineseEscape_1016 = 1820,\n        Dlg_ChineseEscape_1017 = 1821,\n        Dlg_ChineseEscape_1018 = 1822,\n        Dlg_ChineseEscape_1019 = 1823,\n        Dlg_ChineseEscape_1020 = 1824,\n        Dlg_ChineseEscape_1021 = 1825,\n        Dlg_ChineseEscape_1022 = 1826,\n        Dlg_ChineseEscape_1023 = 1827,\n        Dlg_ChineseEscape_1024 = 1828,\n        Dlg_ChineseEscape_1025 = 1829,\n        Dlg_ChineseEscape_1026 = 1830,\n        Dlg_ChineseEscape_1027 = 1831,\n        Dlg_ResearchVessel_1000 = 1832,\n        Dlg_ResearchVessel_1001 = 1833,\n        Dlg_ResearchVessel_1002 = 1834,\n        Dlg_ResearchVessel_1003 = 1835,\n        Dlg_ResearchVessel_1004 = 1836,\n        Dlg_ResearchVessel_1005 = 1837,\n        Dlg_ResearchVessel_1006 = 1838,\n        Dlg_ResearchVessel_1007 = 1839,\n        Dlg_ResearchVessel_1008 = 1840,\n        Dlg_ResearchVessel_1009 = 1841,\n        Dlg_ResearchVessel_1010 = 1842,\n        Dlg_ResearchVessel_1011 = 1843,\n        Dlg_ResearchVessel_1012 = 1844,\n        Dlg_ResearchVessel_1013 = 1845,\n        Dlg_ResearchVessel_1014 = 1846,\n        Dlg_ResearchVessel_1015 = 1847,\n        Dlg_ResearchVessel_1016 = 1848,\n        Dlg_ResearchVessel_1017 = 1849,\n        Dlg_ResearchVessel_1018 = 1850,\n        Dlg_ResearchVessel_1019 = 1851,\n        Dlg_ResearchVessel_1020 = 1852,\n        Dlg_ResearchVessel_1021 = 1853,\n        Dlg_ResearchVessel_1022 = 1854,\n        Dlg_ResearchVessel_1023 = 1855,\n        Dlg_ResearchVessel_1024 = 1856,\n        Dlg_ResearchVessel_1025 = 1857,\n        Dlg_ResearchVessel_1026 = 1858,\n        Dlg_ResearchVessel_1027 = 1859,\n        Dlg_ResearchVessel_1028 = 1860,\n        Dlg_ResearchVessel_1029 = 1861,\n        Dlg_ResearchVessel_1030 = 1862,\n        Dlg_ResearchVessel_1031 = 1863,\n        Dlg_ResearchVessel_1032 = 1864,\n        Dlg_ResearchVessel_1033 = 1865,\n        Dlg_ResearchVessel_1034 = 1866,\n        Dlg_ResearchVessel_1035 = 1867,\n        Dlg_ResearchVessel_1036 = 1868,\n        Dlg_ResearchVessel_1037 = 1869,\n        Dlg_ResearchVessel_1038 = 1870,\n        Dlg_ResearchVessel_1039 = 1871,\n        Dlg_ResearchVessel_1040 = 1872,\n        Dlg_ResearchVessel_1041 = 1873,\n        Dlg_ResearchVessel_1042 = 1874,\n        Dlg_ResearchVessel_1043 = 1875,\n        Dlg_ResearchVessel_1044 = 1876,\n        Dlg_ResearchVessel_1045 = 1877,\n        Dlg_ResearchVessel_1046 = 1878,\n        Dlg_ResearchVessel_1047 = 1879,\n        Dlg_ResearchVessel_1048 = 1880,\n        Dlg_ResearchVessel_1049 = 1881,\n        Dlg_ResearchVessel_1050 = 1882,\n        Dlg_ResearchVessel_1051 = 1883,\n        Dlg_ResearchVessel_1052 = 1884,\n        Dlg_ResearchVessel_1053 = 1885,\n        Dlg_ResearchVessel_1054 = 1886,\n        Dlg_ResearchVessel_1055 = 1887,\n        Dlg_ResearchVessel_1056 = 1888,\n        Dlg_Laika_1000 = 1889,\n        Dlg_Laika_1001 = 1890,\n        Dlg_Laika_1002 = 1891,\n        Dlg_Laika_1003 = 1892,\n        Dlg_Laika_1004 = 1893,\n        Dlg_Laika_1005 = 1894,\n        Dlg_Laika_1006 = 1895,\n        Dlg_Laika_1007 = 1896,\n        Dlg_Laika_1008 = 1897,\n        Dlg_Laika_1009 = 1898,\n        Dlg_Laika_1010 = 1899,\n        Dlg_Laika_1011 = 1900,\n        Dlg_Laika_1012 = 1901,\n        Dlg_Laika_1013 = 1902,\n        Dlg_Laika_1014 = 1903,\n        Dlg_Laika_1015 = 1904,\n        Dlg_Laika_1016 = 1905,\n        Dlg_Laika_1017 = 1906,\n        Dlg_Laika_1018 = 1907,\n        Dlg_Laika_1019 = 1908,\n        Dlg_Laika_1020 = 1909,\n        Dlg_Laika_1021 = 1910,\n        Dlg_Laika_1022 = 1911,\n        Dlg_Laika_1023 = 1912,\n        Dlg_Laika_1024 = 1913,\n        Dlg_Laika_1025 = 1914,\n        Dlg_Laika_1026 = 1915,\n        Dlg_Laika_1027 = 1916,\n        Dlg_Laika_1028 = 1917,\n        Dlg_Laika_1029 = 1918,\n        Dlg_Laika_1030 = 1919,\n        Dlg_Laika_1031 = 1920,\n        Dlg_Laika_1032 = 1921,\n        Dlg_Laika_1033 = 1922,\n        Dlg_Laika_1035 = 1923,\n        Dlg_Laika_1036 = 1924,\n        Dlg_Laika_1037 = 1925,\n        Dlg_Laika_1038 = 1926,\n        Dlg_Laika_1039 = 1927,\n        Dlg_Laika_1040 = 1928,\n        Dlg_Laika_1041 = 1929,\n        Dlg_Laika_1042 = 1930,\n        Dlg_Laika_1043 = 1931,\n        Dlg_Laika_1044 = 1932,\n        Dlg_Laika_1045 = 1933,\n        Dlg_Laika_1046 = 1934,\n        Dlg_Laika_1047 = 1935,\n        Dlg_Laika_1048 = 1936,\n        Dlg_Laika_1049 = 1937,\n        Dlg_Laika_1050 = 1938,\n        Dlg_Laika_1051 = 1939,\n        Dlg_Laika_1052 = 1940,\n        Dlg_Laika_1053 = 1941,\n        Dlg_Laika_1054 = 1942,\n        Dlg_Laika_1055 = 1943,\n        Dlg_Laika_1056 = 1944,\n        Dlg_Laika_1057 = 1945,\n        Dlg_Laika_1058 = 1946,\n        Dlg_Laika_1059 = 1947,\n        Dlg_Laika_1060 = 1948,\n        Dlg_Laika_1061 = 1949,\n        Dlg_Laika_1062 = 1950,\n        Dlg_Laika_1063 = 1951,\n        Dlg_Laika_1064 = 1952,\n        Dlg_Laika_1065 = 1953,\n        Dlg_Laika_1066 = 1954,\n        Dlg_Laika_1067 = 1955,\n        Dlg_Laika_1068 = 1956,\n        Dlg_Laika_1069 = 1957,\n        Dlg_Laika_1070 = 1958,\n        Dlg_Laika_1071 = 1959,\n        Dlg_Laika_1072 = 1960,\n        Dlg_Laika_1073 = 1961,\n        Dlg_Laika_1074 = 1962,\n        Dlg_Laika_1075 = 1963,\n        Dlg_Laika_1076 = 1964,\n        Dlg_Laika_1077 = 1965,\n        Dlg_Laika_1078 = 1966,\n        Dlg_Laika_1079 = 1967,\n        Dlg_Laika_1080 = 1968,\n        Dlg_Laika_1081 = 1969,\n        Dlg_Laika_1082 = 1970,\n        Dlg_Laika_1084 = 1971,\n        Dlg_Laika_1085 = 1972,\n        Dlg_Laika_1086 = 1973,\n        Dlg_Laika_1087 = 1974,\n        Dlg_Laika_1088 = 1975,\n        Dlg_Laika_1089 = 1976,\n        Dlg_Laika_1090 = 1977,\n        Dlg_Laika_1091 = 1978,\n        Dlg_Laika_1092 = 1979,\n        Dlg_Laika_1093 = 1980,\n        Dlg_Laika_1094 = 1981,\n        Dlg_Laika_1095 = 1982,\n        Dlg_Laika_1096 = 1983,\n        Dlg_Laika_1097 = 1984,\n        Dlg_Laika_1098 = 1985,\n        Dlg_Laika_1099 = 1986,\n        Dlg_Laika_1100 = 1987,\n        Dlg_Laika_1101 = 1988,\n        Dlg_Laika_1102 = 1989,\n        Dlg_Laika_1103 = 1990,\n        Dlg_Laika_1104 = 1991,\n        Dlg_Laika_1105 = 1992,\n        Dlg_Laika_1106 = 1993,\n        Dlg_Laika_1107 = 1994,\n        Dlg_Laika_1108 = 1995,\n        Dlg_Laika_1109 = 1996,\n        Dlg_Laika_1110 = 1997,\n        Dlg_Laika_1111 = 1998,\n        Dlg_Laika_1112 = 1999,\n        Dlg_Laika_1113 = 2000,\n        Dlg_Laika_1114 = 2001,\n        Dlg_Laika_1115 = 2002,\n        Dlg_Laika_1116 = 2003,\n        Dlg_Laika_1117 = 2004,\n        Dlg_Laika_1118 = 2005,\n        Dlg_Laika_1119 = 2006,\n        Dlg_Laika_1120 = 2007,\n        Dlg_Laika_1121 = 2008,\n        Dlg_Laika_1122 = 2009,\n        Dlg_Laika_1123 = 2010,\n        Dlg_Laika_1124 = 2011,\n        Dlg_Laika_1125 = 2012,\n        Dlg_BarthsMoonPlant_1000 = 2013,\n        Dlg_BarthsMoonPlant_1001 = 2014,\n        Dlg_BarthsMoonPlant_1002 = 2015,\n        Dlg_BarthsMoonPlant_1003 = 2016,\n        Dlg_BarthsMoonPlant_1004 = 2017,\n        Dlg_BarthsMoonPlant_1005 = 2018,\n        Dlg_BarthsMoonPlant_1006 = 2019,\n        Dlg_BarthsMoonPlant_1007 = 2020,\n        Dlg_BarthsMoonPlant_1008 = 2021,\n        Dlg_BarthsMoonPlant_1009 = 2022,\n        Dlg_BarthsMoonPlant_1010 = 2023,\n        Dlg_BarthsMoonPlant_1011 = 2024,\n        Dlg_BarthsMoonPlant_1012 = 2025,\n        Dlg_BarthsMoonPlant_1013 = 2026,\n        Dlg_BarthsMoonPlant_1014 = 2027,\n        Dlg_BarthsMoonPlant_1015 = 2028,\n        Dlg_BarthsMoonPlant_1016 = 2029,\n        Dlg_BarthsMoonPlant_1017 = 2030,\n        Dlg_BarthsMoonPlant_1018 = 2031,\n        Dlg_BarthsMoonPlant_1019 = 2032,\n        Dlg_BarthsMoonPlant_1020 = 2033,\n        Dlg_BarthsMoonPlant_1021 = 2034,\n        Dlg_BarthsMoonPlant_1022 = 2035,\n        Dlg_BarthsMoonPlant_1023 = 2036,\n        Dlg_BarthsMoonPlant_1024 = 2037,\n        Dlg_BarthsMoonPlant_1025 = 2038,\n        Dlg_BarthsMoonPlant_1026 = 2039,\n        Dlg_BarthsMoonPlant_1027 = 2040,\n        Dlg_BarthsMoonPlant_1028 = 2041,\n        Dlg_BarthsMoonPlant_1029 = 2042,\n        Dlg_BarthsMoonPlant_1030 = 2043,\n        Dlg_BarthsMoonPlant_1031 = 2044,\n        Dlg_BarthsMoonPlant_1032 = 2045,\n        Dlg_BarthsMoonPlant_1033 = 2046,\n        Dlg_BarthsMoonPlant_1034 = 2047,\n        Dlg_BarthsMoonPlant_1035 = 2048,\n        Dlg_BarthsMoonPlant_1036 = 2049,\n        Dlg_BarthsMoonPlant_1037 = 2050,\n        Dlg_BarthsMoonPlant_1038 = 2051,\n        Dlg_BarthsMoonPlant_1039 = 2052,\n        Dlg_BarthsMoonPlant_1040 = 2053,\n        Dlg_BarthsMoonPlant_1041 = 2054,\n        Dlg_BarthsMoonPlant_1042 = 2055,\n        Dlg_BarthsMoonPlant_1043 = 2056,\n        Dlg_BarthsMoonPlant_1044 = 2057,\n        Dlg_BarthsMoonPlant_1045 = 2058,\n        Dlg_BarthsMoonPlant_1046 = 2059,\n        Dlg_BarthsMoonPlant_1047 = 2060,\n        Dlg_BarthsMoonPlant_1048 = 2061,\n        Dlg_BarthsMoonPlant_1049 = 2062,\n        Dlg_BarthsMoonPlant_1050 = 2063,\n        Dlg_BarthsMoonPlant_1051 = 2064,\n        Dlg_BarthsMoonPlant_1052 = 2065,\n        Dlg_BarthsMoonPlant_1053 = 2066,\n        Dlg_BarthsMoonPlant_1054 = 2067,\n        Dlg_BarthsMoonPlant_1055 = 2068,\n        Dlg_BarthsMoonPlant_1056 = 2069,\n        Dlg_BarthsMoonPlant_1057 = 2070,\n        Dlg_BarthsMoonPlant_1058 = 2071,\n        Dlg_BarthsMoonPlant_1059 = 2072,\n        Dlg_BarthsMoonPlant_1060 = 2073,\n        Dlg_BarthsMoonPlant_1061 = 2074,\n        Dlg_BarthsMoonPlant_1062 = 2075,\n        Dlg_BarthsMoonPlant_1063 = 2076,\n        Dlg_BarthsMoonPlant_1064 = 2077,\n        Dlg_BarthsMoonPlant_1065 = 2078,\n        Dlg_BarthsMoonPlant_1066 = 2079,\n        Dlg_BarthsMoonPlant_1067 = 2080,\n        Dlg_BarthsMoonPlant_1068 = 2081,\n        Dlg_BarthsMoonPlant_1069 = 2082,\n        Dlg_BarthsMoonPlant_1070 = 2083,\n        Dlg_BarthsMoonPlant_1071 = 2084,\n        Dlg_BarthsMoonPlant_1072 = 2085,\n        Dlg_BarthsMoonPlant_1073 = 2086,\n        Dlg_BarthsMoonPlant_1074 = 2087,\n        Dlg_BarthsMoonPlant_1075 = 2088,\n        Dlg_BarthsMoonPlant_1076 = 2089,\n        Dlg_BarthsMoonPlant_1077 = 2090,\n        Dlg_BarthsMoonPlant_1078 = 2091,\n        Dlg_BarthsMoonPlant_1079 = 2092,\n        Dlg_BarthsMoonPlant_1080 = 2093,\n        Dlg_BarthsMoonPlant_1081 = 2094,\n        Dlg_BarthsMoonPlant_1082 = 2095,\n        Dlg_BarthsMoonPlant_1083 = 2096,\n        Dlg_BarthsMoonPlant_1084 = 2097,\n        Dlg_BarthsMoonPlant_1085 = 2098,\n        Dlg_BarthsMoonPlant_1086 = 2099,\n        Dlg_BarthsMoonPlant_1087 = 2100,\n        Dlg_BarthsMoonPlant_1088 = 2101,\n        Dlg_BarthsMoonPlant_1089 = 2102,\n        Dlg_BarthsMoonPlant_1090 = 2103,\n        Dlg_BarthsMoonPlant_1091 = 2104,\n        Dlg_BarthsMoonPlant_1092 = 2105,\n        Dlg_BarthsMoonPlant_1093 = 2106,\n        Dlg_BarthsMoonPlant_1094 = 2107,\n        Dlg_BarthsMoonPlant_1095 = 2108,\n        Dlg_BarthsMoonPlant_1096 = 2109,\n        Dlg_BarthsMoonPlant_1097 = 2110,\n        Dlg_BarthsMoonPlant_1098 = 2111,\n        Dlg_BarthsMoonPlant_1099 = 2112,\n        Dlg_BarthsMoonPlant_1100 = 2113,\n        Dlg_BarthsMoonPlant_1101 = 2114,\n        Dlg_BarthsMoonPlant_1102 = 2115,\n        Dlg_BarthsMoonPlant_1103 = 2116,\n        Dlg_BarthsMoonPlant_1104 = 2117,\n        Dlg_BarthsMoonPlant_1105 = 2118,\n        Dlg_BarthsMoonPlant_1106 = 2119,\n        Dlg_BarthsMoonPlant_1107 = 2120,\n        Dlg_BarthsMoonPlant_1108 = 2121,\n        Dlg_BarthsMoonPlant_1109 = 2122,\n        Dlg_BarthsMoonPlant_1110 = 2123,\n        Dlg_BarthsMoonPlant_1111 = 2124,\n        Dlg_BarthsMoonPlant_1112 = 2125,\n        Dlg_BarthsMoonPlant_1113 = 2126,\n        Dlg_BarthsMoonPlant_1114 = 2127,\n        Dlg_BarthsMoonPlant_1115 = 2128,\n        Dlg_BarthsMoonPlant_1116 = 2129,\n        Dlg_BarthsMoonPlant_1117 = 2130,\n        Dlg_BarthsMoonPlant_1118 = 2131,\n        Dlg_BarthsMoonPlant_1119 = 2132,\n        Dlg_BarthsMoonPlant_1120 = 2133,\n        Dlg_BarthsMoonPlant_1121 = 2134,\n        Dlg_BarthsMoonPlant_1122 = 2135,\n        Dlg_BarthsMoonPlant_1123 = 2136,\n        Dlg_BarthsMoonPlant_1124 = 2137,\n        Dlg_BarthsMoonPlant_1125 = 2138,\n        Dlg_BarthsMoonPlant_1126 = 2139,\n        Dlg_FortValiantC_1000 = 2140,\n        Dlg_FortValiantC_1001 = 2141,\n        Dlg_FortValiantC_1002 = 2142,\n        Dlg_FortValiantC_1003 = 2143,\n        Dlg_FortValiantC_1004 = 2144,\n        Dlg_FortValiantC_1005 = 2145,\n        Dlg_FortValiantC_1006 = 2146,\n        Dlg_FortValiantC_1007 = 2147,\n        Dlg_FortValiantC_1008 = 2148,\n        Dlg_FortValiantC_1009 = 2149,\n        Dlg_FortValiantC_1010 = 2150,\n        Dlg_FortValiantC_1011 = 2151,\n        Dlg_FortValiantC_1012 = 2152,\n        Dlg_FortValiantC_1013 = 2153,\n        Dlg_FortValiantC_1014 = 2154,\n        Dlg_FortValiantC_1015 = 2155,\n        Dlg_FortValiantC_1016 = 2156,\n        Dlg_FortValiantC_1017 = 2157,\n        Dlg_FortValiantC_1018 = 2158,\n        Dlg_FortValiantC_1019 = 2159,\n        Dlg_FortValiantC_1020 = 2160,\n        Dlg_FortValiantC_1021 = 2161,\n        Dlg_FortValiantC_1022 = 2162,\n        Dlg_FortValiantC_1023 = 2163,\n        Dlg_FortValiantC_1024 = 2164,\n        Dlg_FortValiantC_1025 = 2165,\n        Dlg_FortValiantC_1026 = 2166,\n        Dlg_FortValiantC_1027 = 2167,\n        Dlg_FortValiantC_1028 = 2168,\n        Dlg_FortValiantC_1029 = 2169,\n        Dlg_FortValiantC_1030 = 2170,\n        Dlg_FortValiantC_1031 = 2171,\n        Dlg_FortValiantC_1032 = 2172,\n        Dlg_FortValiantC_1033 = 2173,\n        Dlg_FortValiantC_1034 = 2174,\n        Dlg_FortValiantC_1035 = 2175,\n        Dlg_FortValiantC_1036 = 2176,\n        Dlg_FortValiantC_1037 = 2177,\n        Dlg_FortValiantC_1038 = 2178,\n        Dlg_FortValiantC_1039 = 2179,\n        Dlg_FortValiantC_1040 = 2180,\n        Dlg_FortValiantC_1041 = 2181,\n        Dlg_FortValiantC_1042 = 2182,\n        Dlg_FortValiantC_1043 = 2183,\n        Dlg_FortValiantC_1044 = 2184,\n        Dlg_FortValiantC_1045 = 2185,\n        Dlg_FortValiantC_1046 = 2186,\n        Dlg_FortValiantC_1047 = 2187,\n        Dlg_FortValiantC_1048 = 2188,\n        Dlg_FortValiantC_1049 = 2189,\n        Dlg_FortValiantC_1050 = 2190,\n        Dlg_FortValiantC_1051 = 2191,\n        Dlg_FortValiantC_1052 = 2192,\n        Dlg_FortValiantC_1053 = 2193,\n        Dlg_FortValiantC_1054 = 2194,\n        Dlg_FortValiantC_1055 = 2195,\n        Dlg_FortValiantC_1056 = 2196,\n        Dlg_FortValiantC_1057 = 2197,\n        Dlg_FortValiantC_1058 = 2198,\n        Dlg_FortValiantC_1059 = 2199,\n        Dlg_FortValiantC_1060 = 2200,\n        Dlg_FortValiantC_1061 = 2201,\n        Dlg_FortValiantC_1062 = 2202,\n        Dlg_FortValiantC_1063 = 2203,\n        Dlg_FortValiantC_1064 = 2204,\n        Dlg_FortValiantC_1065 = 2205,\n        Dlg_FortValiantC_1066 = 2206,\n        Dlg_FortValiantC_1067 = 2207,\n        Dlg_FortValiantC_1068 = 2208,\n        Dlg_FortValiantC_1069 = 2209,\n        Dlg_FortValiantC_1070 = 2210,\n        Dlg_FortValiantC_1071 = 2211,\n        Dlg_FortValiantC_1072 = 2212,\n        Dlg_FortValiantC_1073 = 2213,\n        Dlg_FortValiantC_1074 = 2214,\n        Dlg_FortValiantC_1075 = 2215,\n        Dlg_FortValiantC_1076 = 2216,\n        Dlg_FortValiantC_1077 = 2217,\n        Dlg_FortValiantC_1078 = 2218,\n        Dlg_FortValiantC_1079 = 2219,\n        Dlg_FortValiantC_1080 = 2220,\n        Dlg_FortValiantC_1081 = 2221,\n        Dlg_FortValiantC_1082 = 2222,\n        Dlg_FortValiantC_1083 = 2223,\n        Dlg_FortValiantC_1084 = 2224,\n        Dlg_FortValiantC_1085 = 2225,\n        Dlg_FortValiantC_1086 = 2226,\n        Dlg_FortValiantC_1087 = 2227,\n        Dlg_FortValiantC_1088 = 2228,\n        Dlg_FortValiantC_1089 = 2229,\n        Dlg_FortValiantC_1090 = 2230,\n        Dlg_FortValiantC_1091 = 2231,\n        Dlg_FortValiantC_1092 = 2232,\n        Dlg_FortValiantC_1093 = 2233,\n        Dlg_FortValiantC_1094 = 2234,\n        Dlg_FortValiantC_1095 = 2235,\n        Dlg_FortValiantC_1096 = 2236,\n        Dlg_FortValiantC_1097 = 2237,\n        Dlg_FortValiantC_1098 = 2238,\n        Dlg_FortValiantC_1099 = 2239,\n        Dlg_FortValiantC_1100 = 2240,\n        Dlg_FortValiantC_1101 = 2241,\n        Dlg_FortValiantC_1102 = 2242,\n        Dlg_FortValiantC_1103 = 2243,\n        Dlg_FortValiantC_1104 = 2244,\n        Dlg_FortValiantC_1105 = 2245,\n        Dlg_FortValiantC_1106 = 2246,\n        Dlg_FortValiantC_1107 = 2247,\n        Dlg_FortValiantC_1108 = 2248,\n        Dlg_FortValiantC_1109 = 2249,\n        Dlg_FortValiantC_1110 = 2250,\n        Dlg_FortValiantC_1111 = 2251,\n        Dlg_FortValiantC_1112 = 2252,\n        Dlg_FortValiantC_1113 = 2253,\n        Dlg_FortValiantC_1114 = 2254,\n        Dlg_FortValiantC_1115 = 2255,\n        Dlg_FortValiantC_1116 = 2256,\n        Dlg_FortValiantC_1117 = 2257,\n        Dlg_FortValiantC_1118 = 2258,\n        Dlg_FortValiantC_1119 = 2259,\n        Dlg_FortValiantC_1120 = 2260,\n        Dlg_FortValiantC_1121 = 2261,\n        Dlg_FortValiantC_1122 = 2262,\n        Dlg_FortValiantC_1123 = 2263,\n        Dlg_FortValiantC_1124 = 2264,\n        Dlg_FortValiantC_1125 = 2265,\n        Dlg_FortValiantC_1126 = 2266,\n        Dlg_FortValiantC_1127 = 2267,\n        Dlg_FortValiantC_1128 = 2268,\n        Dlg_FortValiantC_1129 = 2269,\n        Dlg_FortValiantC_1130 = 2270,\n        Dlg_FortValiantC_1131 = 2271,\n        Dlg_FortValiantC_1132 = 2272,\n        Dlg_FortValiantC_1133 = 2273,\n        Dlg_FortValiantC_1134 = 2274,\n        Dlg_FortValiantC_1135 = 2275,\n        Dlg_FortValiantC_1136 = 2276,\n        Dlg_FortValiantC_1137 = 2277,\n        Dlg_FortValiantC_1138 = 2278,\n        Dlg_AlienGate_1000 = 2279,\n        Dlg_AlienGate_1001 = 2280,\n        Dlg_AlienGate_1002 = 2281,\n        Dlg_AlienGate_1003 = 2282,\n        Dlg_AlienGate_1004 = 2283,\n        Dlg_AlienGate_1005 = 2284,\n        Dlg_AlienGate_1006 = 2285,\n        Dlg_AlienGate_1007 = 2286,\n        Dlg_AlienGate_1008 = 2287,\n        Dlg_AlienGate_1009 = 2288,\n        Dlg_AlienGate_1010 = 2289,\n        Dlg_AlienGate_1011 = 2290,\n        Dlg_AlienGate_1012 = 2291,\n        Dlg_AlienGate_1013 = 2292,\n        Dlg_AlienGate_1014 = 2293,\n        Dlg_AlienGate_1015 = 2294,\n        Dlg_AlienGate_1016 = 2295,\n        Dlg_AlienGate_1017 = 2296,\n        Dlg_AlienGate_1018 = 2297,\n        Dlg_AlienGate_1019 = 2298,\n        Dlg_AlienGate_1020 = 2299,\n        Dlg_AlienGate_1021 = 2300,\n        Dlg_AlienGate_1022 = 2301,\n        Dlg_AlienGate_1023 = 2302,\n        Dlg_AlienGate_1024 = 2303,\n        Dlg_AlienGate_1025 = 2304,\n        Dlg_AlienGate_1026 = 2305,\n        Dlg_AlienGate_1027 = 2306,\n        Dlg_AlienGate_1028 = 2307,\n        Dlg_AlienGate_1029 = 2308,\n        Dlg_AlienGate_1030 = 2309,\n        Dlg_AlienGate_1031 = 2310,\n        Dlg_AlienGate_1032 = 2311,\n        Dlg_AlienGate_1033 = 2312,\n        Dlg_AlienGate_1034 = 2313,\n        Dlg_AlienGate_1035 = 2314,\n        Dlg_AlienGate_1036 = 2315,\n        Dlg_AlienGate_1037 = 2316,\n        Dlg_AlienGate_1038 = 2317,\n        Dlg_AlienGate_1039 = 2318,\n        Dlg_AlienGate_1040 = 2319,\n        Dlg_AlienGate_1041 = 2320,\n        Dlg_AlienGate_1042 = 2321,\n        Dlg_AlienGate_1043 = 2322,\n        Dlg_AlienGate_1044 = 2323,\n        Dlg_AlienGate_1045 = 2324,\n        Dlg_AlienGate_1046 = 2325,\n        Dlg_AlienGate_1047 = 2326,\n        Dlg_AlienGate_1048 = 2327,\n        Dlg_AlienGate_1049 = 2328,\n        Dlg_AlienGate_1050 = 2329,\n        Dlg_AlienGate_1051 = 2330,\n        Dlg_AlienGate_1052 = 2331,\n        Dlg_AlienGate_1053 = 2332,\n        Dlg_AlienGate_1054 = 2333,\n        Dlg_AlienGate_1055 = 2334,\n        Dlg_AlienGate_1056 = 2335,\n        Dlg_AlienGate_1057 = 2336,\n        Dlg_AlienGate_1058 = 2337,\n        Dlg_AlienGate_1059 = 2338,\n        Dlg_AlienGate_1060 = 2339,\n        Dlg_AlienGate_1061 = 2340,\n        Dlg_AlienGate_1062 = 2341,\n        Dlg_AlienGate_1063 = 2342,\n        Dlg_AlienGate_1064 = 2343,\n        Dlg_AlienGate_1065 = 2344,\n        Dlg_AlienGate_1066 = 2345,\n        Dlg_AlienGate_1067 = 2346,\n        Dlg_AlienGate_1068 = 2347,\n        Dlg_AlienGate_1069 = 2348,\n        Dlg_AlienGate_1070 = 2349,\n        Dlg_AlienGate_1071 = 2350,\n        Dlg_AlienGate_1072 = 2351,\n        Dlg_AlienGate_1073 = 2352,\n        Dlg_AlienGate_1074 = 2353,\n        Dlg_AlienGate_1075 = 2354,\n        Dlg_AlienGate_1076 = 2355,\n        Dlg_AlienGate_1077 = 2356,\n        Dlg_AlienGate_1078 = 2357,\n        Dlg_AlienGate_1079 = 2358,\n        Dlg_AlienGate_1080 = 2359,\n        Dlg_AlienGate_1081 = 2360,\n        Dlg_AlienGate_1082 = 2361,\n        Dlg_AlienGate_1083 = 2362,\n        Dlg_AlienGate_1084 = 2363,\n        Dlg_AlienGate_1085 = 2364,\n        Dlg_AlienGate_1086 = 2365,\n        Dlg_AlienGate_1087 = 2366,\n        Dlg_AlienGate_1088 = 2367,\n        Dlg_AlienGate_1089 = 2368,\n        Dlg_AlienGate_1090 = 2369,\n        Dlg_AlienGate_1091 = 2370,\n        Dlg_AlienGate_1092 = 2371,\n        Dlg_AlienGate_1093 = 2372,\n        Dlg_AlienGate_1094 = 2373,\n        Dlg_AlienGate_1095 = 2374,\n        Dlg_AlienGate_1096 = 2375,\n        Dlg_AlienGate_1097 = 2376,\n        Dlg_AlienGate_1098 = 2377,\n        Dlg_AlienGate_1099 = 2378,\n        Dlg_AlienGate_1100 = 2379,\n        Dlg_AlienGate_1101 = 2380,\n        Dlg_AlienGate_1102 = 2381,\n        Dlg_AlienGate_1103 = 2382,\n        Dlg_AlienGate_1104 = 2383,\n        Dlg_AlienGate_1105 = 2384,\n        Dlg_AlienGate_1106 = 2385,\n        Dlg_AlienGate_1107 = 2386,\n        Dlg_AlienGate_1108 = 2387,\n        Dlg_AlienGate_1109 = 2388,\n        Dlg_AlienGate_1110 = 2389,\n        Dlg_AlienGate_1111 = 2390,\n        Dlg_AlienGate_1112 = 2391,\n        Dlg_AlienGate_1113 = 2392,\n        Dlg_AlienGate_1114 = 2393,\n        Dlg_AlienGate_1115 = 2394,\n        Dlg_AlienGate_1116 = 2395,\n        Dlg_AlienGate_1117 = 2396,\n        Dlg_AlienGate_1118 = 2397,\n        Dlg_AlienGate_1119 = 2398,\n        Dlg_AlienGate_1120 = 2399,\n        Dlg_AlienGate_1121 = 2400,\n        Dlg_AlienGate_1122 = 2401,\n        Dlg_AlienGate_1123 = 2402,\n        Dlg_AlienGate_1124 = 2403,\n        Dlg_AlienGate_1125 = 2404,\n        Dlg_AlienGate_1126 = 2405,\n        Dlg_AlienGate_1127 = 2406,\n        Dlg_AlienGate_1128 = 2407,\n        Dlg_AlienGate_1129 = 2408,\n        Dlg_AlienGate_1130 = 2409,\n        Dlg_AlienGate_1131 = 2410,\n        Dlg_AlienGate_1132 = 2411,\n        Dlg_AlienGate_1133 = 2412,\n        Dlg_AlienGate_1134 = 2413,\n        Dlg_AlienGate_1135 = 2414,\n        Dlg_AlienGate_1136 = 2415,\n        Dlg_AlienGate_1137 = 2416,\n        Dlg_AlienGate_1138 = 2417,\n        Dlg_AlienGate_1139 = 2418,\n        Dlg_AlienGate_1140 = 2419,\n        Dlg_AlienGate_1141 = 2420,\n        Dlg_AlienGate_1142 = 2421,\n        Dlg_AlienGate_1143 = 2422,\n        Dlg_AlienGate_1144 = 2423,\n        Dlg_AlienGate_1145 = 2424,\n        Dlg_AlienGate_1146 = 2425,\n        Dlg_AlienGate_1147 = 2426,\n        Dlg_AlienGate_1148 = 2427,\n        Dlg_AlienGate_1149 = 2428,\n        Dlg_AlienGate_1150 = 2429,\n        Dlg_AlienGate_1151 = 2430,\n        Dlg_AlienGate_1152 = 2431,\n        Dlg_AlienGate_1153 = 2432,\n        Dlg_AlienGate_1154 = 2433,\n        Dlg_AlienGate_1155 = 2434,\n        Dlg_AlienGate_1156 = 2435,\n        Dlg_AlienGate_1157 = 2436,\n        Dlg_AlienGate_1158 = 2437,\n        Dlg_AlienGate_1159 = 2438,\n        Dlg_AlienGate_1160 = 2439,\n        Dlg_AlienGate_1161 = 2440,\n        Dlg_AlienGate_1162 = 2441,\n        Dlg_AlienGate_1163 = 2442,\n        Dlg_AlienGate_1164 = 2443,\n        Dlg_AlienGate_1165 = 2444,\n        Dlg_AlienGate_1166 = 2445,\n        Dlg_PirateBase_1000 = 2446,\n        Dlg_PirateBase_1001 = 2447,\n        Dlg_PirateBase_1002 = 2448,\n        Dlg_PirateBase_1003 = 2449,\n        Dlg_PirateBase_1004 = 2450,\n        Dlg_PirateBase_1005 = 2451,\n        Dlg_PirateBase_1006 = 2452,\n        Dlg_PirateBase_1007 = 2453,\n        Dlg_PirateBase_1008 = 2454,\n        Dlg_PirateBase_1009 = 2455,\n        Dlg_PirateBase_1010 = 2456,\n        Dlg_PirateBase_1011 = 2457,\n        Dlg_PirateBase_1012 = 2458,\n        Dlg_PirateBase_1013 = 2459,\n        Dlg_PirateBase_1014 = 2460,\n        Dlg_PirateBase_1015 = 2461,\n        Dlg_PirateBase_1016 = 2462,\n        Dlg_PirateBase_1017 = 2463,\n        Dlg_PirateBase_1018 = 2464,\n        Dlg_PirateBase_1019 = 2465,\n        Dlg_PirateBase_1020 = 2466,\n        Dlg_PirateBase_1021 = 2467,\n        Dlg_PirateBase_1022 = 2468,\n        Dlg_PirateBase_1023 = 2469,\n        Dlg_PirateBase_1024 = 2470,\n        Dlg_PirateBase_1025 = 2471,\n        Dlg_PirateBase_1026 = 2472,\n        Dlg_PirateBase_1027 = 2473,\n        Dlg_PirateBase_1028 = 2474,\n        Dlg_PirateBase_1029 = 2475,\n        Dlg_PirateBase_1030 = 2476,\n        Dlg_PirateBase_1031 = 2477,\n        Dlg_PirateBase_1032 = 2478,\n        Dlg_PirateBase_1033 = 2479,\n        Dlg_PirateBase_1034 = 2480,\n        Dlg_PirateBase_1035 = 2481,\n        Dlg_PirateBase_1036 = 2482,\n        Dlg_PirateBase_1037 = 2483,\n        Dlg_PirateBase_1038 = 2484,\n        Dlg_PirateBase_1039 = 2485,\n        Dlg_PirateBase_1040 = 2486,\n        Dlg_PirateBase_1041 = 2487,\n        Dlg_PirateBase_1042 = 2488,\n        Dlg_PirateBase_1043 = 2489,\n        Dlg_PirateBase_1044 = 2490,\n        Dlg_PirateBase_1045 = 2491,\n        Dlg_PirateBase_1046 = 2492,\n        Dlg_PirateBase_1047 = 2493,\n        Dlg_PirateBase_1048 = 2494,\n        Dlg_PirateBase_1049 = 2495,\n        Dlg_PirateBase_1050 = 2496,\n        Dlg_PirateBase_1051 = 2497,\n        Dlg_PirateBase_1052 = 2498,\n        Dlg_PirateBase_1053 = 2499,\n        Dlg_PirateBase_1054 = 2500,\n        Dlg_PirateBase_1055 = 2501,\n        Dlg_PirateBase_1056 = 2502,\n        Dlg_PirateBase_1057 = 2503,\n        Dlg_PirateBase_1058 = 2504,\n        Dlg_PirateBase_1059 = 2505,\n        Dlg_PirateBase_1060 = 2506,\n        Dlg_PirateBase_1061 = 2507,\n        Dlg_PirateBase_1062 = 2508,\n        Dlg_PirateBase_1063 = 2509,\n        Dlg_PirateBase_1064 = 2510,\n        Dlg_PirateBase_1065 = 2511,\n        Dlg_PirateBase_1066 = 2512,\n        Dlg_PirateBase_1067 = 2513,\n        Dlg_PirateBase_1068 = 2514,\n        Dlg_PirateBase_1069 = 2515,\n        Dlg_PirateBase_1070 = 2516,\n        Dlg_PirateBase_1071 = 2517,\n        Dlg_PirateBase_1072 = 2518,\n        Dlg_PirateBase_1073 = 2519,\n        Dlg_PirateBase_1074 = 2520,\n        Dlg_PirateBase_1075 = 2521,\n        Dlg_PirateBase_1076 = 2522,\n        Dlg_PirateBase_1077 = 2523,\n        Dlg_PirateBase_1078 = 2524,\n        Dlg_PirateBase_1079 = 2525,\n        Dlg_PirateBase_1080 = 2526,\n        Dlg_PirateBase_1081 = 2527,\n        Dlg_PirateBase_1082 = 2528,\n        Dlg_PirateBase_1083 = 2529,\n        Dlg_PirateBase_1084 = 2530,\n        Dlg_PirateBase_1085 = 2531,\n        Dlg_PirateBase_1086 = 2532,\n        Dlg_PirateBase_1087 = 2533,\n        Dlg_PirateBase_1088 = 2534,\n        Dlg_PirateBase_1089 = 2535,\n        Dlg_PirateBase_1090 = 2536,\n        Dlg_PirateBase_1091 = 2537,\n        Dlg_PirateBase_1092 = 2538,\n        Dlg_PirateBase_1093 = 2539,\n        Dlg_PirateBase_1094 = 2540,\n        Dlg_PirateBase_1095 = 2541,\n        Dlg_PirateBase_1096 = 2542,\n        Dlg_PirateBase_1097 = 2543,\n        Dlg_PirateBase_1098 = 2544,\n        Dlg_PirateBase_1099 = 2545,\n        Dlg_PirateBase_1100 = 2546,\n        Dlg_PirateBase_1101 = 2547,\n        Dlg_PirateBase_1102 = 2548,\n        Dlg_PirateBase_1103 = 2549,\n        Dlg_PirateBase_1104 = 2550,\n        Dlg_PirateBase_1105 = 2551,\n        Dlg_PirateBase_1106 = 2552,\n        Dlg_PirateBase_1107 = 2553,\n        Dlg_PirateBase_1108 = 2554,\n        Dlg_PirateBase_1109 = 2555,\n        Dlg_PirateBase_1110 = 2556,\n        Dlg_PirateBase_1111 = 2557,\n        Dlg_PirateBase_1112 = 2558,\n        Dlg_PirateBase_1113 = 2559,\n        Dlg_PirateBase_1114 = 2560,\n        Dlg_PirateBase_1115 = 2561,\n        Dlg_PirateBase_1116 = 2562,\n        Dlg_PirateBase_1117 = 2563,\n        Dlg_PirateBase_1118 = 2564,\n        Dlg_PirateBase_1119 = 2565,\n        Dlg_PirateBase_1120 = 2566,\n        Dlg_PirateBase_1121 = 2567,\n        Dlg_PirateBase_1122 = 2568,\n        Dlg_PirateBase_1123 = 2569,\n        Dlg_PirateBase_1124 = 2570,\n        Dlg_PirateBase_1125 = 2571,\n        Dlg_PirateBase_1126 = 2572,\n        Dlg_PirateBase_1127 = 2573,\n        Dlg_PirateBase_1128 = 2574,\n        Dlg_PirateBase_1129 = 2575,\n        Dlg_PirateBase_1130 = 2576,\n        Dlg_PirateBase_1131 = 2577,\n        Dlg_PirateBase_1132 = 2578,\n        Dlg_PirateBase_1133 = 2579,\n        Dlg_PirateBase_1134 = 2580,\n        Dlg_PirateBase_1135 = 2581,\n        Dlg_PirateBase_1136 = 2582,\n        Dlg_PirateBase_1137 = 2583,\n        Dlg_PirateBase_1138 = 2584,\n        Dlg_PirateBase_1139 = 2585,\n        Dlg_PirateBase_1140 = 2586,\n        Dlg_PirateBase_1141 = 2587,\n        Dlg_PirateBase_1142 = 2588,\n        Dlg_PirateBase_1143 = 2589,\n        Dlg_PirateBase_1144 = 2590,\n        Dlg_PirateBase_1145 = 2591,\n        Dlg_PirateBase_1146 = 2592,\n        Dlg_PirateBase_1147 = 2593,\n        Dlg_PirateBase_1148 = 2594,\n        Dlg_PirateBase_1149 = 2595,\n        Dlg_PirateBase_1150 = 2596,\n        Dlg_PirateBase_1151 = 2597,\n        Dlg_PirateBase_1152 = 2598,\n        Dlg_PirateBase_1153 = 2599,\n        Dlg_PirateBase_1154 = 2600,\n        Dlg_PirateBase_1155 = 2601,\n        Dlg_PirateBase_1156 = 2602,\n        Dlg_PirateBase_1157 = 2603,\n        Dlg_PirateBase_1158 = 2604,\n        Dlg_PirateBase_1159 = 2605,\n        Dlg_PirateBase_1160 = 2606,\n        Dlg_BarthsMoonConvince_1000 = 2607,\n        Dlg_BarthsMoonConvince_1001 = 2608,\n        Dlg_BarthsMoonConvince_1002 = 2609,\n        Dlg_BarthsMoonConvince_1003 = 2610,\n        Dlg_BarthsMoonConvince_1004 = 2611,\n        Dlg_BarthsMoonConvince_1005 = 2612,\n        Dlg_BarthsMoonConvince_1006 = 2613,\n        Dlg_BarthsMoonConvince_1007 = 2614,\n        Dlg_BarthsMoonConvince_1008 = 2615,\n        Dlg_BarthsMoonConvince_1009 = 2616,\n        Dlg_BarthsMoonConvince_1010 = 2617,\n        Dlg_BarthsMoonConvince_1011 = 2618,\n        Dlg_BarthsMoonConvince_1012 = 2619,\n        Dlg_BarthsMoonConvince_1013 = 2620,\n        Dlg_BarthsMoonConvince_1014 = 2621,\n        Dlg_BarthsMoonConvince_1015 = 2622,\n        Dlg_BarthsMoonConvince_1016 = 2623,\n        Dlg_BarthsMoonConvince_1017 = 2624,\n        Dlg_BarthsMoonConvince_1018 = 2625,\n        Dlg_BarthsMoonConvince_1019 = 2626,\n        Dlg_BarthsMoonConvince_1020 = 2627,\n        Dlg_BarthsMoonConvince_1021 = 2628,\n        Dlg_BarthsMoonConvince_1022 = 2629,\n        Dlg_BarthsMoonConvince_1023 = 2630,\n        Dlg_BarthsMoonConvince_1024 = 2631,\n        Dlg_BarthsMoonConvince_1025 = 2632,\n        Dlg_BarthsMoonConvince_1026 = 2633,\n        Dlg_BarthsMoonConvince_1027 = 2634,\n        Dlg_BarthsMoonConvince_1028 = 2635,\n        Dlg_BarthsMoonConvince_1029 = 2636,\n        Dlg_BarthsMoonConvince_1030 = 2637,\n        Dlg_BarthsMoonConvince_1031 = 2638,\n        Dlg_BarthsMoonConvince_1032 = 2639,\n        Dlg_BarthsMoonConvince_1033 = 2640,\n        Dlg_BarthsMoonConvince_1034 = 2641,\n        Dlg_BarthsMoonConvince_1035 = 2642,\n        Dlg_BarthsMoonConvince_1036 = 2643,\n        Dlg_BarthsMoonConvince_1037 = 2644,\n        Dlg_BarthsMoonConvince_1038 = 2645,\n        Dlg_BarthsMoonConvince_1039 = 2646,\n        Dlg_BarthsMoonConvince_1040 = 2647,\n        Dlg_BarthsMoonConvince_1041 = 2648,\n        Dlg_BarthsMoonConvince_1042 = 2649,\n        Dlg_BarthsMoonConvince_1043 = 2650,\n        Dlg_BarthsMoonConvince_1044 = 2651,\n        Dlg_BarthsMoonConvince_1045 = 2652,\n        Dlg_BarthsMoonConvince_1046 = 2653,\n        Dlg_BarthsMoonConvince_1047 = 2654,\n        Dlg_BarthsMoonConvince_1048 = 2655,\n        Dlg_BarthsMoonConvince_1049 = 2656,\n        Dlg_BarthsMoonConvince_1050 = 2657,\n        Dlg_BarthsMoonConvince_1051 = 2658,\n        Dlg_BarthsMoonConvince_1052 = 2659,\n        Dlg_BarthsMoonConvince_1053 = 2660,\n        Dlg_BarthsMoonConvince_1054 = 2661,\n        Dlg_BarthsMoonConvince_1055 = 2662,\n        Dlg_BarthsMoonConvince_1056 = 2663,\n        Dlg_BarthsMoonConvince_1057 = 2664,\n        Dlg_BarthsMoonConvince_1058 = 2665,\n        Dlg_BarthsMoonConvince_1059 = 2666,\n        Dlg_BarthsMoonConvince_1060 = 2667,\n        Dlg_BarthsMoonConvince_1061 = 2668,\n        Dlg_BarthsMoonConvince_1062 = 2669,\n        Dlg_BarthsMoonConvince_1063 = 2670,\n        Dlg_BarthsMoonConvince_1064 = 2671,\n        Dlg_BarthsMoonConvince_1065 = 2672,\n        Dlg_BarthsMoonConvince_1066 = 2673,\n        Dlg_BarthsMoonConvince_1067 = 2674,\n        Dlg_BarthsMoonConvince_1068 = 2675,\n        Dlg_BarthsMoonConvince_1069 = 2676,\n        Dlg_BarthsMoonConvince_1070 = 2677,\n        Dlg_BarthsMoonConvince_1071 = 2678,\n        Dlg_BarthsMoonConvince_1072 = 2679,\n        Dlg_BarthsMoonConvince_1073 = 2680,\n        Dlg_BarthsMoonConvince_1074 = 2681,\n        Dlg_BarthsMoonConvince_1075 = 2682,\n        Dlg_BarthsMoonConvince_1076 = 2683,\n        Dlg_BarthsMoonConvince_1077 = 2684,\n        Dlg_BarthsMoonConvince_1078 = 2685,\n        Dlg_BarthsMoonConvince_1079 = 2686,\n        Dlg_BarthsMoonConvince_1080 = 2687,\n        Dlg_BarthsMoonConvince_1081 = 2688,\n        Dlg_BarthsMoonConvince_1082 = 2689,\n        Dlg_BarthsMoonConvince_1083 = 2690,\n        Dlg_BarthsMoonConvince_1084 = 2691,\n        Dlg_BarthsMoonConvince_1085 = 2692,\n        Dlg_BarthsMoonConvince_1086 = 2693,\n        Dlg_BarthsMoonConvince_1087 = 2694,\n        Dlg_BarthsMoonConvince_1088 = 2695,\n        Dlg_BarthsMoonConvince_1089 = 2696,\n        Dlg_BarthsMoonConvince_1090 = 2697,\n        Dlg_BarthsMoonConvince_1091 = 2698,\n        Dlg_BarthsMoonConvince_1092 = 2699,\n        Dlg_BarthsMoonConvince_1093 = 2700,\n        Dlg_BarthsMoonConvince_1094 = 2701,\n        Dlg_BarthsMoonConvince_1095 = 2702,\n        Dlg_BarthsMoonConvince_1096 = 2703,\n        Dlg_BarthsMoonConvince_1097 = 2704,\n        Dlg_BarthsMoonConvince_1098 = 2705,\n        Dlg_BarthsMoonConvince_1099 = 2706,\n        Dlg_BarthsMoonConvince_1100 = 2707,\n        Dlg_BarthsMoonConvince_1101 = 2708,\n        Dlg_BarthsMoonConvince_1102 = 2709,\n        Dlg_BarthsMoonConvince_1103 = 2710,\n        Dlg_BarthsMoonConvince_1104 = 2711,\n        Dlg_BarthsMoonConvince_1105 = 2712,\n        Dlg_BarthsMoonConvince_1106 = 2713,\n        Dlg_BarthsMoonConvince_1107 = 2714,\n        Dlg_BarthsMoonConvince_1108 = 2715,\n        Dlg_BarthsMoonConvince_1109 = 2716,\n        Dlg_BarthsMoonConvince_1110 = 2717,\n        Dlg_BarthsMoonConvince_1111 = 2718,\n        Dlg_JunkyardConvince_1000 = 2719,\n        Dlg_JunkyardConvince_1001 = 2720,\n        Dlg_JunkyardConvince_1002 = 2721,\n        Dlg_JunkyardConvince_1003 = 2722,\n        Dlg_JunkyardConvince_1004 = 2723,\n        Dlg_JunkyardConvince_1005 = 2724,\n        Dlg_JunkyardConvince_1006 = 2725,\n        Dlg_JunkyardConvince_1007 = 2726,\n        Dlg_JunkyardConvince_1008 = 2727,\n        Dlg_JunkyardConvince_1009 = 2728,\n        Dlg_JunkyardConvince_1010 = 2729,\n        Dlg_JunkyardConvince_1011 = 2730,\n        Dlg_JunkyardConvince_1012 = 2731,\n        Dlg_JunkyardConvince_1013 = 2732,\n        Dlg_JunkyardConvince_1014 = 2733,\n        Dlg_JunkyardConvince_1015 = 2734,\n        Dlg_JunkyardConvince_1016 = 2735,\n        Dlg_JunkyardConvince_1017 = 2736,\n        Dlg_JunkyardConvince_1018 = 2737,\n        Dlg_JunkyardConvince_1019 = 2738,\n        Dlg_JunkyardConvince_1020 = 2739,\n        Dlg_JunkyardConvince_1021 = 2740,\n        Dlg_JunkyardConvince_1022 = 2741,\n        Dlg_JunkyardConvince_1023 = 2742,\n        Dlg_JunkyardConvince_1024 = 2743,\n        Dlg_JunkyardConvince_1025 = 2744,\n        Dlg_JunkyardConvince_1026 = 2745,\n        Dlg_JunkyardConvince_1027 = 2746,\n        Dlg_JunkyardConvince_1028 = 2747,\n        Dlg_JunkyardConvince_1029 = 2748,\n        Dlg_JunkyardConvince_1030 = 2749,\n        Dlg_JunkyardConvince_1031 = 2750,\n        Dlg_JunkyardConvince_1032 = 2751,\n        Dlg_JunkyardConvince_1034 = 2752,\n        Dlg_JunkyardConvince_1035 = 2753,\n        Dlg_JunkyardConvince_1036 = 2754,\n        Dlg_JunkyardConvince_1037 = 2755,\n        Dlg_JunkyardConvince_1038 = 2756,\n        Dlg_JunkyardConvince_1039 = 2757,\n        Dlg_JunkyardConvince_1040 = 2758,\n        Dlg_JunkyardConvince_1041 = 2759,\n        Dlg_JunkyardConvince_1042 = 2760,\n        Dlg_JunkyardConvince_1043 = 2761,\n        Dlg_JunkyardConvince_1044 = 2762,\n        Dlg_JunkyardConvince_1045 = 2763,\n        Dlg_JunkyardConvince_1046 = 2764,\n        Dlg_JunkyardConvince_1047 = 2765,\n        Dlg_JunkyardConvince_1048 = 2766,\n        Dlg_JunkyardConvince_1049 = 2767,\n        Dlg_JunkyardConvince_1050 = 2768,\n        Dlg_JunkyardConvince_1051 = 2769,\n        Dlg_JunkyardConvince_1052 = 2770,\n        Dlg_JunkyardConvince_1053 = 2771,\n        Dlg_JunkyardConvince_1054 = 2772,\n        Dlg_JunkyardConvince_1055 = 2773,\n        Dlg_JunkyardConvince_1056 = 2774,\n        Dlg_JunkyardConvince_1057 = 2775,\n        Dlg_JunkyardConvince_1058 = 2776,\n        Dlg_JunkyardConvince_1059 = 2777,\n        Dlg_JunkyardConvince_1060 = 2778,\n        Dlg_JunkyardConvince_1061 = 2779,\n        Dlg_JunkyardConvince_1062 = 2780,\n        Dlg_JunkyardConvince_1063 = 2781,\n        Dlg_JunkyardConvince_1064 = 2782,\n        Dlg_JunkyardConvince_1065 = 2783,\n        Dlg_JunkyardConvince_1066 = 2784,\n        Dlg_JunkyardConvince_1067 = 2785,\n        Dlg_JunkyardConvince_1068 = 2786,\n        Dlg_JunkyardConvince_1069 = 2787,\n        Dlg_JunkyardConvince_1070 = 2788,\n        Dlg_JunkyardConvince_1071 = 2789,\n        Dlg_JunkyardConvince_1072 = 2790,\n        Dlg_JunkyardConvince_1073 = 2791,\n        Dlg_JunkyardConvince_1074 = 2792,\n        Dlg_JunkyardConvince_1075 = 2793,\n        Dlg_JunkyardConvince_1076 = 2794,\n        Dlg_JunkyardConvince_1077 = 2795,\n        Dlg_JunkyardConvince_1078 = 2796,\n        Dlg_JunkyardConvince_1079 = 2797,\n        Dlg_JunkyardConvince_1080 = 2798,\n        Dlg_JunkyardConvince_1081 = 2799,\n        Dlg_JunkyardConvince_1082 = 2800,\n        Dlg_JunkyardConvince_1083 = 2801,\n        Dlg_JunkyardConvince_1084 = 2802,\n        Dlg_JunkyardConvince_1085 = 2803,\n        Dlg_JunkyardConvince_1086 = 2804,\n        Dlg_JunkyardConvince_1087 = 2805,\n        Dlg_JunkyardConvince_1088 = 2806,\n        Dlg_JunkyardConvince_1089 = 2807,\n        Dlg_JunkyardConvince_1090 = 2808,\n        Dlg_JunkyardConvince_1091 = 2809,\n        Dlg_JunkyardConvince_1092 = 2810,\n        Dlg_JunkyardConvince_1093 = 2811,\n        Dlg_JunkyardConvince_1094 = 2812,\n        Dlg_JunkyardConvince_1095 = 2813,\n        Dlg_JunkyardConvince_1096 = 2814,\n        Dlg_JunkyardConvince_1097 = 2815,\n        Dlg_JunkyardConvince_1098 = 2816,\n        Dlg_JunkyardConvince_1099 = 2817,\n        Dlg_JunkyardConvince_1100 = 2818,\n        Dlg_JunkyardConvince_1101 = 2819,\n        Dlg_JunkyardConvince_1102 = 2820,\n        Dlg_JunkyardConvince_1103 = 2821,\n        Dlg_JunkyardConvince_1104 = 2822,\n        Dlg_JunkyardConvince_1105 = 2823,\n        Dlg_JunkyardConvince_1106 = 2824,\n        Dlg_JunkyardConvince_1107 = 2825,\n        Dlg_JunkyardConvince_1108 = 2826,\n        Dlg_JunkyardConvince_1109 = 2827,\n        Dlg_JunkyardConvince_1110 = 2828,\n        Dlg_JunkyardConvince_1111 = 2829,\n        Dlg_JunkyardConvince_1112 = 2830,\n        Dlg_JunkyardConvince_1113 = 2831,\n        Dlg_JunkyardConvince_1114 = 2832,\n        Dlg_JunkyardConvince_1115 = 2833,\n        Dlg_JunkyardConvince_1116 = 2834,\n        Dlg_JunkyardConvince_1117 = 2835,\n        Dlg_JunkyardConvince_1118 = 2836,\n        Dlg_JunkyardConvince_1119 = 2837,\n        Dlg_JunkyardConvince_1120 = 2838,\n        Dlg_JunkyardConvince_1121 = 2839,\n        Dlg_JunkyardConvince_1122 = 2840,\n        Dlg_JunkyardConvince_1123 = 2841,\n        Dlg_JunkyardConvince_1124 = 2842,\n        Dlg_JunkyardConvince_1125 = 2843,\n        Dlg_JunkyardConvince_1126 = 2844,\n        Dlg_JunkyardConvince_1127 = 2845,\n        Dlg_JunkyardConvince_1128 = 2846,\n        Dlg_JunkyardConvince_1129 = 2847,\n        Dlg_JunkyardConvince_1130 = 2848,\n        Dlg_JunkyardConvince_1131 = 2849,\n        Dlg_JunkyardConvince_1132 = 2850,\n        Dlg_JunkyardConvince_1133 = 2851,\n        Dlg_JunkyardConvince_1134 = 2852,\n        Dlg_JunkyardConvince_1135 = 2853,\n        Dlg_JunkyardConvince_1136 = 2854,\n        Dlg_JunkyardConvince_1137 = 2855,\n        Dlg_JunkyardConvince_1138 = 2856,\n        Dlg_JunkyardConvince_1139 = 2857,\n        Dlg_JunkyardConvince_1140 = 2858,\n        Dlg_JunkyardConvince_1141 = 2859,\n        Dlg_JunkyardConvince_1142 = 2860,\n        Dlg_JunkyardConvince_1143 = 2861,\n        Dlg_JunkyardConvince_1144 = 2862,\n        Dlg_JunkyardConvince_1145 = 2863,\n        Dlg_JunkyardConvince_1146 = 2864,\n        Dlg_JunkyardConvince_1147 = 2865,\n        Dlg_JunkyardConvince_1148 = 2866,\n        Dlg_JunkyardConvince_1149 = 2867,\n        Dlg_JunkyardConvince_1150 = 2868,\n        Dlg_JunkyardReturn_1000 = 2869,\n        Dlg_JunkyardReturn_1001 = 2870,\n        Dlg_JunkyardReturn_1002 = 2871,\n        Dlg_JunkyardReturn_1003 = 2872,\n        Dlg_JunkyardReturn_1004 = 2873,\n        Dlg_JunkyardReturn_1005 = 2874,\n        Dlg_JunkyardReturn_1006 = 2875,\n        Dlg_JunkyardReturn_1007 = 2876,\n        Dlg_JunkyardReturn_1008 = 2877,\n        Dlg_JunkyardReturn_1009 = 2878,\n        Dlg_JunkyardReturn_1010 = 2879,\n        Dlg_JunkyardReturn_1011 = 2880,\n        Dlg_JunkyardReturn_1012 = 2881,\n        Dlg_JunkyardReturn_1013 = 2882,\n        Dlg_JunkyardReturn_1014 = 2883,\n        Dlg_JunkyardReturn_1015 = 2884,\n        Dlg_JunkyardReturn_1016 = 2885,\n        Dlg_JunkyardReturn_1017 = 2886,\n        Dlg_JunkyardReturn_1018 = 2887,\n        Dlg_JunkyardReturn_1019 = 2888,\n        Dlg_JunkyardReturn_1020 = 2889,\n        Dlg_JunkyardReturn_1021 = 2890,\n        Dlg_JunkyardReturn_1022 = 2891,\n        Dlg_JunkyardReturn_1023 = 2892,\n        Dlg_JunkyardReturn_1024 = 2893,\n        Dlg_JunkyardReturn_1025 = 2894,\n        Dlg_JunkyardReturn_1026 = 2895,\n        Dlg_JunkyardReturn_1027 = 2896,\n        Amb3D_ThunderClapSmall = 2897,\n        Amb3D_Welding01 = 2898,\n        Dlg_ChineseRafinery_1040 = 2899,\n        Dlg_ChineseRafinery_1041 = 2900,\n        Dlg_ChineseTransmitter_1000 = 2901,\n        Dlg_ChineseTransmitter_1001 = 2902,\n        Dlg_ChineseTransmitter_1002 = 2903,\n        Dlg_ChineseTransmitter_1003 = 2904,\n        Dlg_ChineseTransmitter_1045 = 2905,\n        Dlg_ChineseTransmitter_1046 = 2906,\n        Dlg_JunkyardReturn_1038 = 2907,\n        Dlg_JunkyardReturn_1039 = 2908,\n        Dlg_JunkyardReturn_1040 = 2909,\n        Dlg_JunkyardReturn_1041 = 2910,\n        Dlg_JunkyardReturn_1042 = 2911,\n        Dlg_JunkyardReturn_1043 = 2912,\n        Dlg_JunkyardReturn_1044 = 2913,\n        Dlg_JunkyardReturn_1045 = 2914,\n        Dlg_JunkyardReturn_1046 = 2915,\n        Dlg_JunkyardReturn_1047 = 2916,\n        Dlg_JunkyardReturn_1048 = 2917,\n        Dlg_JunkyardReturn_1049 = 2918,\n        Dlg_JunkyardReturn_1050 = 2919,\n        Dlg_JunkyardReturn_1051 = 2920,\n        Dlg_JunkyardReturn_1052 = 2921,\n        Dlg_JunkyardReturn_1053 = 2922,\n        Dlg_JunkyardReturn_1054 = 2923,\n        Dlg_JunkyardReturn_1055 = 2924,\n        Dlg_JunkyardReturn_1056 = 2925,\n        Dlg_JunkyardReturn_1057 = 2926,\n        Dlg_JunkyardReturn_1058 = 2927,\n        Dlg_JunkyardReturn_1059 = 2928,\n        Dlg_JunkyardReturn_1060 = 2929,\n        Dlg_JunkyardReturn_1061 = 2930,\n        Dlg_JunkyardReturn_1062 = 2931,\n        Dlg_JunkyardReturn_1063 = 2932,\n        Dlg_JunkyardReturn_1064 = 2933,\n        Dlg_JunkyardReturn_1065 = 2934,\n        Dlg_JunkyardReturn_1066 = 2935,\n        Dlg_JunkyardReturn_1067 = 2936,\n        Dlg_JunkyardReturn_1068 = 2937,\n        Dlg_JunkyardReturn_1069 = 2938,\n        Dlg_JunkyardReturn_1070 = 2939,\n        Dlg_JunkyardReturn_1071 = 2940,\n        Dlg_JunkyardReturn_1072 = 2941,\n        Dlg_JunkyardReturn_1073 = 2942,\n        Dlg_JunkyardReturn_1074 = 2943,\n        Dlg_JunkyardReturn_1075 = 2944,\n        Dlg_JunkyardReturn_1076 = 2945,\n        Dlg_JunkyardReturn_1077 = 2946,\n        Dlg_JunkyardReturn_1078 = 2947,\n        Dlg_JunkyardReturn_1079 = 2948,\n        Dlg_JunkyardReturn_1080 = 2949,\n        Dlg_JunkyardReturn_1081 = 2950,\n        Dlg_JunkyardReturn_1082 = 2951,\n        Dlg_JunkyardReturn_1083 = 2952,\n        Dlg_JunkyardReturn_1084 = 2953,\n        Dlg_JunkyardReturn_1085 = 2954,\n        Dlg_JunkyardReturn_1086 = 2955,\n        Dlg_JunkyardReturn_1087 = 2956,\n        Dlg_JunkyardReturn_1088 = 2957,\n        Dlg_JunkyardReturn_1089 = 2958,\n        Dlg_JunkyardReturn_1090 = 2959,\n        Dlg_LastHope_1000 = 2960,\n        Dlg_LastHope_1001 = 2961,\n        Dlg_LastHope_1002 = 2962,\n        Dlg_LastHope_1003 = 2963,\n        Dlg_LastHope_1004 = 2964,\n        Dlg_LastHope_1005 = 2965,\n        Dlg_LastHope_1006 = 2966,\n        Dlg_LastHope_1007 = 2967,\n        Dlg_LastHope_1008 = 2968,\n        Dlg_LastHope_1009 = 2969,\n        Dlg_LastHope_1010 = 2970,\n        Dlg_LastHope_1011 = 2971,\n        Dlg_LastHope_1012 = 2972,\n        Dlg_LastHope_1013 = 2973,\n        Dlg_LastHope_1014 = 2974,\n        Dlg_LastHope_1015 = 2975,\n        Dlg_LastHope_1016 = 2976,\n        Dlg_LastHope_1017 = 2977,\n        Dlg_LastHope_1018 = 2978,\n        Dlg_LastHope_1019 = 2979,\n        Dlg_LastHope_1020 = 2980,\n        Dlg_LastHope_1021 = 2981,\n        Dlg_LastHope_1022 = 2982,\n        Dlg_LastHope_1023 = 2983,\n        Dlg_LastHope_1024 = 2984,\n        Dlg_LastHope_1025 = 2985,\n        Dlg_LastHope_1026 = 2986,\n        Dlg_LastHope_1027 = 2987,\n        Dlg_LastHope_1028 = 2988,\n        Dlg_LastHope_1029 = 2989,\n        Dlg_LastHope_1030 = 2990,\n        Dlg_LastHope_1031 = 2991,\n        Dlg_LastHope_1032 = 2992,\n        Dlg_LastHope_1033 = 2993,\n        Dlg_LastHope_1034 = 2994,\n        Dlg_LastHope_1035 = 2995,\n        Dlg_LastHope_1036 = 2996,\n        Dlg_LastHope_1037 = 2997,\n        Dlg_LastHope_1038 = 2998,\n        Dlg_LastHope_1039 = 2999,\n        Dlg_LastHope_1040 = 3000,\n        Dlg_LastHope_1041 = 3001,\n        Dlg_LastHope_1042 = 3002,\n        Dlg_LastHope_1043 = 3003,\n        Dlg_LastHope_1044 = 3004,\n        Dlg_LastHope_1045 = 3005,\n        Dlg_LastHope_1046 = 3006,\n        Dlg_LastHope_1047 = 3007,\n        Dlg_LastHope_1048 = 3008,\n        Dlg_LastHope_1049 = 3009,\n        Dlg_LastHope_1050 = 3010,\n        Dlg_LastHope_1051 = 3011,\n        Dlg_LastHope_1052 = 3012,\n        Dlg_LastHope_1053 = 3013,\n        Dlg_LastHope_1054 = 3014,\n        Dlg_LastHope_1055 = 3015,\n        Dlg_LastHope_1056 = 3016,\n        Dlg_LastHope_1057 = 3017,\n        Dlg_LastHope_1058 = 3018,\n        Dlg_LastHope_1059 = 3019,\n        Dlg_LastHope_1060 = 3020,\n        Dlg_LastHope_1061 = 3021,\n        Dlg_LastHope_1062 = 3022,\n        Dlg_LastHope_1063 = 3023,\n        Dlg_LastHope_1064 = 3024,\n        Dlg_LastHope_1065 = 3025,\n        Dlg_LastHope_1066 = 3026,\n        Dlg_LastHope_1067 = 3027,\n        Dlg_LastHope_1068 = 3028,\n        Dlg_LastHope_1069 = 3029,\n        Dlg_LastHope_1070 = 3030,\n        Dlg_LastHope_1071 = 3031,\n        Dlg_LastHope_1072 = 3032,\n        Dlg_LastHope_1073 = 3033,\n        Dlg_LastHope_1074 = 3034,\n        Dlg_LastHope_1075 = 3035,\n        Dlg_LastHope_1076 = 3036,\n        Dlg_LastHope_1077 = 3037,\n        Dlg_LastHope_1082 = 3038,\n        Dlg_LastHope_1083 = 3039,\n        Dlg_LastHope_1088 = 3040,\n        Dlg_LastHope_1089 = 3041,\n        Dlg_LastHope_1090 = 3042,\n        Dlg_LastHope_1091 = 3043,\n        Dlg_LastHope_1092 = 3044,\n        Dlg_LastHope_1093 = 3045,\n        Dlg_LastHope_1094 = 3046,\n        Dlg_LastHope_1095 = 3047,\n        Dlg_LastHope_1096 = 3048,\n        Dlg_LastHope_1097 = 3049,\n        Dlg_LastHope_1098 = 3050,\n        Dlg_LastHope_1099 = 3051,\n        Dlg_LastHope_1100 = 3052,\n        Dlg_LastHope_1101 = 3053,\n        Dlg_LastHope_1102 = 3054,\n        Dlg_LastHope_1103 = 3055,\n        Dlg_LastHope_1104 = 3056,\n        Dlg_LastHope_1105 = 3057,\n        Dlg_LastHope_1106 = 3058,\n        Dlg_LastHope_1107 = 3059,\n        Dlg_LastHope_1108 = 3060,\n        Dlg_LastHope_1109 = 3061,\n        Dlg_LastHope_1110 = 3062,\n        Dlg_LastHope_1111 = 3063,\n        Dlg_LastHope_1112 = 3064,\n        Dlg_LastHope_1113 = 3065,\n        Dlg_LastHope_1114 = 3066,\n        Dlg_LastHope_1115 = 3067,\n        Dlg_LastHope_1116 = 3068,\n        Dlg_LastHope_1117 = 3069,\n        Dlg_LastHope_1118 = 3070,\n        Dlg_LastHope_1119 = 3071,\n        Dlg_LastHope_1120 = 3072,\n        Dlg_LastHope_1121 = 3073,\n        Dlg_LastHope_1122 = 3074,\n        Dlg_LastHope_1123 = 3075,\n        Dlg_LastHope_1124 = 3076,\n        Dlg_LastHope_1125 = 3077,\n        Dlg_LastHope_1126 = 3078,\n        Dlg_LastHope_1127 = 3079,\n        Dlg_LastHope_1128 = 3080,\n        Dlg_LastHope_1129 = 3081,\n        Dlg_LastHope_1130 = 3082,\n        Dlg_LastHope_1131 = 3083,\n        Dlg_LastHope_1132 = 3084,\n        Dlg_LastHope_1133 = 3085,\n        Dlg_LastHope_1134 = 3086,\n        Dlg_RussianWarehouse_1000 = 3087,\n        Dlg_RussianWarehouse_1001 = 3088,\n        Dlg_RussianWarehouse_1002 = 3089,\n        Dlg_RussianWarehouse_1003 = 3090,\n        Dlg_RussianWarehouse_1004 = 3091,\n        Dlg_RussianWarehouse_1005 = 3092,\n        Dlg_RussianWarehouse_1006 = 3093,\n        Dlg_RussianWarehouse_1007 = 3094,\n        Dlg_RussianWarehouse_1008 = 3095,\n        Dlg_RussianWarehouse_1009 = 3096,\n        Dlg_RussianWarehouse_1010 = 3097,\n        Dlg_RussianWarehouse_1011 = 3098,\n        Dlg_RussianWarehouse_1012 = 3099,\n        Dlg_RussianWarehouse_1013 = 3100,\n        Dlg_RussianWarehouse_1014 = 3101,\n        Dlg_RussianWarehouse_1015 = 3102,\n        Dlg_RussianWarehouse_1016 = 3103,\n        Dlg_RussianWarehouse_1017 = 3104,\n        Dlg_RussianWarehouse_1018 = 3105,\n        Dlg_RussianWarehouse_1019 = 3106,\n        Dlg_RussianWarehouse_1020 = 3107,\n        Dlg_RussianWarehouse_1021 = 3108,\n        Dlg_RussianWarehouse_1022 = 3109,\n        Dlg_RussianWarehouse_1023 = 3110,\n        Dlg_RussianWarehouse_1024 = 3111,\n        Dlg_RussianWarehouse_1025 = 3112,\n        Dlg_RussianWarehouse_1026 = 3113,\n        Dlg_RussianWarehouse_1027 = 3114,\n        Dlg_RussianWarehouse_1028 = 3115,\n        Dlg_RussianWarehouse_1029 = 3116,\n        Dlg_RussianWarehouse_1030 = 3117,\n        Dlg_RussianWarehouse_1031 = 3118,\n        Dlg_RussianWarehouse_1032 = 3119,\n        Dlg_RussianWarehouse_1033 = 3120,\n        Dlg_RussianWarehouse_1034 = 3121,\n        Dlg_RussianWarehouse_1035 = 3122,\n        Dlg_RussianWarehouse_1036 = 3123,\n        Dlg_RussianWarehouse_1037 = 3124,\n        Dlg_RussianWarehouse_1038 = 3125,\n        Dlg_RussianWarehouse_1039 = 3126,\n        Dlg_RussianWarehouse_1040 = 3127,\n        Dlg_RussianWarehouse_1041 = 3128,\n        Dlg_RussianWarehouse_1042 = 3129,\n        Dlg_RussianWarehouse_1043 = 3130,\n        Dlg_RussianWarehouse_1044 = 3131,\n        Dlg_RussianWarehouse_1045 = 3132,\n        Dlg_RussianWarehouse_1046 = 3133,\n        Dlg_RussianWarehouse_1047 = 3134,\n        Dlg_RussianWarehouse_1048 = 3135,\n        Dlg_RussianWarehouse_1049 = 3136,\n        Dlg_RussianWarehouse_1050 = 3137,\n        Dlg_RussianWarehouse_1051 = 3138,\n        Dlg_RussianWarehouse_1052 = 3139,\n        Dlg_RussianWarehouse_1053 = 3140,\n        Dlg_RussianWarehouse_1054 = 3141,\n        Dlg_RussianWarehouse_1055 = 3142,\n        Dlg_RussianWarehouse_1056 = 3143,\n        Dlg_RussianWarehouse_1057 = 3144,\n        Dlg_RussianWarehouse_1058 = 3145,\n        Dlg_RussianWarehouse_1059 = 3146,\n        Dlg_RussianWarehouse_1060 = 3147,\n        Dlg_RussianWarehouse_1061 = 3148,\n        Dlg_RussianWarehouse_1062 = 3149,\n        SfxVoxelCrack = 3150,\n        Dlg_JunkyardEacAmbush_1000 = 3151,\n        Dlg_JunkyardEacAmbush_1001 = 3152,\n        Dlg_JunkyardEacAmbush_1002 = 3153,\n        Dlg_JunkyardEacAmbush_1003 = 3154,\n        Dlg_JunkyardEacAmbush_1004 = 3155,\n        Dlg_JunkyardEacAmbush_1005 = 3156,\n        Dlg_JunkyardEacAmbush_1006 = 3157,\n        Dlg_JunkyardEacAmbush_1007 = 3158,\n        Dlg_JunkyardEacAmbush_1008 = 3159,\n        Dlg_JunkyardEacAmbush_1009 = 3160,\n        Dlg_JunkyardEacAmbush_1010 = 3161,\n        Dlg_JunkyardEacAmbush_1011 = 3162,\n        Dlg_JunkyardEacAmbush_1012 = 3163,\n        Dlg_JunkyardEacAmbush_1013 = 3164,\n        Dlg_JunkyardEacAmbush_1014 = 3165,\n        Dlg_JunkyardEacAmbush_1015 = 3166,\n        Dlg_JunkyardEacAmbush_1016 = 3167,\n        Dlg_JunkyardEacAmbush_1017 = 3168,\n        Dlg_JunkyardEacAmbush_1018 = 3169,\n        Dlg_JunkyardEacAmbush_1019 = 3170,\n        Dlg_JunkyardEacAmbush_1020 = 3171,\n        Dlg_JunkyardEacAmbush_1021 = 3172,\n        Dlg_JunkyardEacAmbush_1022 = 3173,\n        Dlg_JunkyardEacAmbush_1023 = 3174,\n        Dlg_JunkyardEacAmbush_1024 = 3175,\n        Dlg_JunkyardEacAmbush_1025 = 3176,\n        Dlg_JunkyardEacAmbush_1026 = 3177,\n        Dlg_JunkyardEacAmbush_1027 = 3178,\n        Dlg_JunkyardEacAmbush_1028 = 3179,\n        Dlg_JunkyardEacAmbush_1029 = 3180,\n        Dlg_JunkyardEacAmbush_1030 = 3181,\n        Dlg_JunkyardEacAmbush_1031 = 3182,\n        Dlg_JunkyardEacAmbush_1032 = 3183,\n        Dlg_JunkyardEacAmbush_1033 = 3184,\n        Dlg_JunkyardEacAmbush_1034 = 3185,\n        Dlg_JunkyardEacAmbush_1035 = 3186,\n        Dlg_JunkyardEacAmbush_1036 = 3187,\n        Dlg_JunkyardEacAmbush_1037 = 3188,\n        Dlg_JunkyardEacAmbush_1038 = 3189,\n        Dlg_JunkyardEacAmbush_1039 = 3190,\n        Dlg_JunkyardEacAmbush_1040 = 3191,\n        Dlg_JunkyardEacAmbush_1041 = 3192,\n        Dlg_JunkyardEacAmbush_1042 = 3193,\n        Dlg_JunkyardEacAmbush_1043 = 3194,\n        Dlg_JunkyardEacAmbush_1044 = 3195,\n        Dlg_JunkyardEacAmbush_1045 = 3196,\n        Dlg_JunkyardEacAmbush_1046 = 3197,\n        Dlg_JunkyardEacAmbush_1047 = 3198,\n        Dlg_JunkyardEacAmbush_1048 = 3199,\n        Dlg_JunkyardEacAmbush_1049 = 3200,\n        Dlg_JunkyardEacAmbush_1050 = 3201,\n        Dlg_JunkyardEacAmbush_1051 = 3202,\n        Dlg_JunkyardEacAmbush_1052 = 3203,\n        Dlg_JunkyardEacAmbush_1053 = 3204,\n        Dlg_JunkyardEacAmbush_1054 = 3205,\n        Dlg_JunkyardEacAmbush_1055 = 3206,\n        Dlg_JunkyardEacAmbush_1056 = 3207,\n        Dlg_JunkyardEacAmbush_1057 = 3208,\n        Dlg_JunkyardEacAmbush_1058 = 3209,\n        Dlg_JunkyardEacAmbush_1059 = 3210,\n        Dlg_JunkyardEacAmbush_1060 = 3211,\n        Dlg_JunkyardEacAmbush_1061 = 3212,\n        Dlg_JunkyardEacAmbush_1062 = 3213,\n        Dlg_JunkyardEacAmbush_1063 = 3214,\n        Dlg_JunkyardEacAmbush_1064 = 3215,\n        Dlg_JunkyardEacAmbush_1065 = 3216,\n        Dlg_JunkyardEacAmbush_1066 = 3217,\n        Dlg_JunkyardEacAmbush_1067 = 3218,\n        Dlg_JunkyardEacAmbush_1068 = 3219,\n        Dlg_JunkyardEacAmbush_1069 = 3220,\n        Dlg_JunkyardEacAmbush_1070 = 3221,\n        Dlg_JunkyardEacAmbush_1071 = 3222,\n        Dlg_JunkyardEacAmbush_1072 = 3223,\n        Dlg_JunkyardEacAmbush_1073 = 3224,\n        Dlg_JunkyardEacAmbush_1074 = 3225,\n        Dlg_JunkyardEacAmbush_1075 = 3226,\n        Dlg_JunkyardEacAmbush_1076 = 3227,\n        Dlg_JunkyardEacAmbush_1077 = 3228,\n        Dlg_JunkyardEacAmbush_1078 = 3229,\n        Dlg_JunkyardEacAmbush_1079 = 3230,\n        Dlg_JunkyardEacAmbush_1080 = 3231,\n        Dlg_JunkyardEacAmbush_1081 = 3232,\n        Dlg_JunkyardEacAmbush_1082 = 3233,\n        Dlg_JunkyardEacAmbush_1083 = 3234,\n        Dlg_JunkyardEacAmbush_1084 = 3235,\n        Dlg_JunkyardEacAmbush_1085 = 3236,\n        Dlg_JunkyardEacAmbush_1086 = 3237,\n        Dlg_JunkyardEacAmbush_1087 = 3238,\n        Dlg_JunkyardEacAmbush_1088 = 3239,\n        Dlg_JunkyardEacAmbush_1089 = 3240,\n        Dlg_JunkyardEacAmbush_1090 = 3241,\n        Dlg_JunkyardEacAmbush_1091 = 3242,\n        Dlg_JunkyardEacAmbush_1092 = 3243,\n        Dlg_JunkyardEacAmbush_1093 = 3244,\n        Dlg_JunkyardEacAmbush_1094 = 3245,\n        Dlg_JunkyardEacAmbush_1095 = 3246,\n        Dlg_JunkyardEacAmbush_1096 = 3247,\n        Dlg_JunkyardEacAmbush_1097 = 3248,\n        Dlg_JunkyardEacAmbush_1098 = 3249,\n        Dlg_JunkyardEacAmbush_1099 = 3250,\n        Dlg_JunkyardEacAmbush_1100 = 3251,\n        Dlg_JunkyardEacAmbush_1101 = 3252,\n        Dlg_JunkyardEacAmbush_1102 = 3253,\n        Dlg_JunkyardEacAmbush_1103 = 3254,\n        Dlg_JunkyardEacAmbush_1104 = 3255,\n        Dlg_JunkyardEacAmbush_1105 = 3256,\n        Dlg_JunkyardEacAmbush_1106 = 3257,\n        Dlg_JunkyardEacAmbush_1107 = 3258,\n        Dlg_JunkyardEacAmbush_1108 = 3259,\n        Dlg_JunkyardEacAmbush_1109 = 3260,\n        Dlg_JunkyardEacAmbush_1110 = 3261,\n        Dlg_JunkyardEacAmbush_1111 = 3262,\n        Dlg_JunkyardEacAmbush_1112 = 3263,\n        Dlg_JunkyardEacAmbush_1113 = 3264,\n        Dlg_JunkyardEacAmbush_1114 = 3265,\n        Dlg_JunkyardEacAmbush_1115 = 3266,\n        Dlg_JunkyardEacAmbush_1116 = 3267,\n        Dlg_JunkyardEacAmbush_1117 = 3268,\n        Dlg_JunkyardEacAmbush_1118 = 3269,\n        Dlg_JunkyardEacAmbush_1119 = 3270,\n        Dlg_JunkyardEacAmbush_1120 = 3271,\n        Dlg_JunkyardEacAmbush_1121 = 3272,\n        Dlg_JunkyardEacAmbush_1122 = 3273,\n        Dlg_JunkyardEacAmbush_1123 = 3274,\n        Dlg_JunkyardEacAmbush_1124 = 3275,\n        Dlg_JunkyardEacAmbush_1125 = 3276,\n        Dlg_JunkyardEacAmbush_1126 = 3277,\n        Dlg_JunkyardEacAmbush_1127 = 3278,\n        Dlg_JunkyardEacAmbush_1128 = 3279,\n        Dlg_JunkyardEacAmbush_1129 = 3280,\n        Dlg_JunkyardEacAmbush_1130 = 3281,\n        Dlg_JunkyardEacAmbush_1131 = 3282,\n        Dlg_JunkyardEacAmbush_1132 = 3283,\n        Dlg_JunkyardEacAmbush_1133 = 3284,\n        Dlg_JunkyardEacAmbush_1134 = 3285,\n        Dlg_JunkyardEacAmbush_1135 = 3286,\n        Dlg_JunkyardEacAmbush_1136 = 3287,\n        Dlg_JunkyardEacAmbush_1137 = 3288,\n        Dlg_EacTransmitter_1000 = 3289,\n        Dlg_EacTransmitter_1001 = 3290,\n        Dlg_EacTransmitter_1002 = 3291,\n        Dlg_EacTransmitter_1003 = 3292,\n        Dlg_EacTransmitter_1004 = 3293,\n        Dlg_EacTransmitter_1005 = 3294,\n        Dlg_EacTransmitter_1006 = 3295,\n        Dlg_EacTransmitter_1007 = 3296,\n        Dlg_EacTransmitter_1008 = 3297,\n        Dlg_EacTransmitter_1009 = 3298,\n        Dlg_EacTransmitter_1010 = 3299,\n        Dlg_EacTransmitter_1011 = 3300,\n        Dlg_EacTransmitter_1012 = 3301,\n        Dlg_EacTransmitter_1013 = 3302,\n        Dlg_EacTransmitter_1014 = 3303,\n        Dlg_EacTransmitter_1015 = 3304,\n        Dlg_EacTransmitter_1016 = 3305,\n        Dlg_EacTransmitter_1017 = 3306,\n        Dlg_EacTransmitter_1018 = 3307,\n        Dlg_EacTransmitter_1019 = 3308,\n        Dlg_EacTransmitter_1020 = 3309,\n        Dlg_EacTransmitter_1021 = 3310,\n        Dlg_EacTransmitter_1022 = 3311,\n        Dlg_EacTransmitter_1023 = 3312,\n        Dlg_EacTransmitter_1024 = 3313,\n        Dlg_EacTransmitter_1025 = 3314,\n        Dlg_EacTransmitter_1026 = 3315,\n        Dlg_EacTransmitter_1027 = 3316,\n        Dlg_EacTransmitter_1028 = 3317,\n        Dlg_EacTransmitter_1029 = 3318,\n        Dlg_EacTransmitter_1030 = 3319,\n        Dlg_EacTransmitter_1031 = 3320,\n        Dlg_EacTransmitter_1032 = 3321,\n        Dlg_EacTransmitter_1033 = 3322,\n        Dlg_EacTransmitter_1034 = 3323,\n        Dlg_EacTransmitter_1035 = 3324,\n        Dlg_EacTransmitter_1036 = 3325,\n        Dlg_EacTransmitter_1037 = 3326,\n        Dlg_EacTransmitter_1038 = 3327,\n        Dlg_EacTransmitter_1039 = 3328,\n        Dlg_EacTransmitter_1040 = 3329,\n        Dlg_EacTransmitter_1041 = 3330,\n        Dlg_EacTransmitter_1042 = 3331,\n        Dlg_EacTransmitter_1043 = 3332,\n        Dlg_EacTransmitter_1044 = 3333,\n        Dlg_EacTransmitter_1045 = 3334,\n        Dlg_EacTransmitter_1046 = 3335,\n        Dlg_EacTransmitter_1047 = 3336,\n        Dlg_EacTransmitter_1048 = 3337,\n        Dlg_EacTransmitter_1049 = 3338,\n        Dlg_EacTransmitter_1050 = 3339,\n        Dlg_EacTransmitter_1051 = 3340,\n        Dlg_EacTransmitter_1052 = 3341,\n        Dlg_EacTransmitter_1053 = 3342,\n        Dlg_EacTransmitter_1054 = 3343,\n        Dlg_EacTransmitter_1055 = 3344,\n        Dlg_EacTransmitter_1056 = 3345,\n        Dlg_EacTransmitter_1057 = 3346,\n        Dlg_EacTransmitter_1058 = 3347,\n        Dlg_EacTransmitter_1059 = 3348,\n        Dlg_EacTransmitter_1060 = 3349,\n        Dlg_EacTransmitter_1061 = 3350,\n        Dlg_EacTransmitter_1062 = 3351,\n        Dlg_EacTransmitter_1063 = 3352,\n        Dlg_EacTransmitter_1064 = 3353,\n        Dlg_EacTransmitter_1065 = 3354,\n        Dlg_EacTransmitter_1066 = 3355,\n        Dlg_EacTransmitter_1067 = 3356,\n        Dlg_EacTransmitter_1068 = 3357,\n        Dlg_EacTransmitter_1069 = 3358,\n        Dlg_EacTransmitter_1070 = 3359,\n        Dlg_EacTransmitter_1071 = 3360,\n        Dlg_EacTransmitter_1072 = 3361,\n        Amb3D_GenSmallDamaged = 3362,\n        Amb3D_GenSmallDestroyed = 3363,\n        Amb3D_GenSmallNormal = 3364,\n        Amb3D_PipeFlow01 = 3365,\n        Amb3D_Spark01 = 3366,\n        Amb3D_SteamDischarge01 = 3367,\n        Amb3D_SteamDischarge02 = 3368,\n        Amb3D_SteamDischarge03 = 3369,\n        Amb3D_SteamDischarge04 = 3370,\n        Amb3D_SteamLoop01 = 3371,\n        Amb3D_SteamLoop02 = 3372,\n        Amb3D_SteamLoop03 = 3373,\n        Amb3D_SteamLoop04 = 3374,\n        Amb3D_SteamLoop05 = 3375,\n        Amb3D_ThunderClapLarge = 3376,\n        Amb3D_ThunderClapMed = 3377,\n        Amb3D_RadioChatterAllied09_12 = 3378,\n        Amb3D_RadioChatterChinese13_16 = 3379,\n        Amb2D_Electrical01 = 3380,\n        Amb2D_Electrical02 = 3381,\n        Amb2D_EngineThrust = 3382,\n        Amb2D_FanLargeDamaged = 3383,\n        Amb2D_FanLargeDestroyed = 3384,\n        Amb2D_FanLargeNormal = 3385,\n        Amb2D_FanMediumDamaged = 3386,\n        Amb2D_FanMediumDestroyed = 3387,\n        Amb2D_FanMediumNormal = 3388,\n        Amb2D_FanSmallDamaged = 3389,\n        Amb2D_FanSmallDestroyed = 3390,\n        Amb2D_FanSmallNormal = 3391,\n        Amb2D_GenLargeDamaged = 3392,\n        Amb2D_GenLargeDestroyed = 3393,\n        Amb2D_GenLargeNormal = 3394,\n        Amb2D_GenMediumDamaged = 3395,\n        Amb2D_GenMediumDestroyed = 3396,\n        Amb2D_GenMediumNormal = 3397,\n        Amb2D_GenSmallDamaged = 3398,\n        Amb2D_GenSmallDestroyed = 3399,\n        Amb2D_GenSmallNormal = 3400,\n        Amb2D_GenXend = 3401,\n        Amb2D_GenXloop = 3402,\n        Amb2D_GenXstart = 3403,\n        Amb2D_PipeFlow01 = 3404,\n        Amb2D_PrefabFire01 = 3405,\n        Amb2D_RadioChatterAL01 = 3406,\n        Amb2D_RadioChatterAL02 = 3407,\n        Amb2D_RadioChatterAL03 = 3408,\n        Amb2D_RadioChatterAL04 = 3409,\n        Amb2D_RadioChatterAL05 = 3410,\n        Amb2D_RadioChatterAL06 = 3411,\n        Amb2D_RadioChatterAL07 = 3412,\n        Amb2D_RadioChatterAL08 = 3413,\n        Amb2D_RadioChatterAL09 = 3414,\n        Amb2D_RadioChatterAL10 = 3415,\n        Amb2D_RadioChatterAL11 = 3416,\n        Amb2D_RadioChatterAL12 = 3417,\n        Amb2D_RadioChatterAL13 = 3418,\n        Amb2D_RadioChatterAL14 = 3419,\n        Amb2D_RadioChatterAL15 = 3420,\n        Amb2D_RadioChatterAL16 = 3421,\n        Amb2D_RadioChatterCH01 = 3422,\n        Amb2D_RadioChatterCH02 = 3423,\n        Amb2D_RadioChatterCH03 = 3424,\n        Amb2D_RadioChatterCH04 = 3425,\n        Amb2D_RadioChatterCH05 = 3426,\n        Amb2D_RadioChatterCH06 = 3427,\n        Amb2D_RadioChatterCH07 = 3428,\n        Amb2D_RadioChatterCH08 = 3429,\n        Amb2D_RadioChatterCH09 = 3430,\n        Amb2D_RadioChatterCH10 = 3431,\n        Amb2D_RadioChatterCH11 = 3432,\n        Amb2D_RadioChatterCH12 = 3433,\n        Amb2D_RadioChatterCH13 = 3434,\n        Amb2D_RadioChatterCH14 = 3435,\n        Amb2D_RadioChatterCH15 = 3436,\n        Amb2D_RadioChatterCH16 = 3437,\n        Amb2D_RadioChatterRS01 = 3438,\n        Amb2D_RadioChatterRS02 = 3439,\n        Amb2D_RadioChatterRS03 = 3440,\n        Amb2D_RadioChatterRS04 = 3441,\n        Amb2D_RadioChatterRS05 = 3442,\n        Amb2D_RadioChatterRS06 = 3443,\n        Amb2D_RadioChatterRS07 = 3444,\n        Amb2D_RadioChatterRS08 = 3445,\n        Amb2D_RadioChatterRS09 = 3446,\n        Amb2D_RadioChatterRS10 = 3447,\n        Amb2D_RadioChatterRS11 = 3448,\n        Amb2D_RadioChatterRS12 = 3449,\n        Amb2D_RadioChatterRS13 = 3450,\n        Amb2D_RadioChatterRS14 = 3451,\n        Amb2D_RadioChatterRS15 = 3452,\n        Amb2D_RadioChatterRS16 = 3453,\n        Amb2D_Spark01 = 3454,\n        Amb2D_SteamDischarge01 = 3455,\n        Amb2D_SteamDischarge02 = 3456,\n        Amb2D_SteamDischarge03 = 3457,\n        Amb2D_SteamDischarge04 = 3458,\n        Amb2D_SteamLoop01 = 3459,\n        Amb2D_SteamLoop02 = 3460,\n        Amb2D_SteamLoop03 = 3461,\n        Amb2D_SteamLoop04 = 3462,\n        Amb2D_SteamLoop05 = 3463,\n        Amb2D_Temple1 = 3464,\n        Amb2D_Temple2 = 3465,\n        Amb2D_Temple3 = 3466,\n        Amb2D_ThunderClapLarge01 = 3467,\n        Amb2D_ThunderClapMed01 = 3468,\n        Amb2D_ThunderClapMed02 = 3469,\n        Amb2D_ThunderClapMed03 = 3470,\n        Amb2D_ThunderClapMed04 = 3471,\n        Amb2D_ThunderClapSmall01 = 3472,\n        Amb2D_ThunderClapSmall02 = 3473,\n        Amb2D_ThunderClapSmall03 = 3474,\n        Amb2D_ThunderClapSmall04 = 3475,\n        Amb2D_Welding01 = 3476,\n        SfxScanner = 3477,\n        Dlg_EACSurveySite_0069_02 = 3478,\n        Dlg_EACSurveySite_0069_03 = 3479,\n        Dlg_JunkyardReturn_1028 = 3480,\n        Dlg_JunkyardReturn_1029 = 3481,\n        Dlg_JunkyardReturn_1030 = 3482,\n        Dlg_JunkyardReturn_1031 = 3483,\n        Dlg_JunkyardReturn_1032 = 3484,\n        Dlg_JunkyardReturn_1033 = 3485,\n        Dlg_JunkyardReturn_1034 = 3486,\n        Dlg_JunkyardReturn_1035 = 3487,\n        Dlg_JunkyardReturn_1036 = 3488,\n        Dlg_JunkyardReturn_1037 = 3489,\n        Dlg_Laika_1126 = 3490,\n        Dlg_ReichstagC_1022_2 = 3491,\n        Dlg_AlienGate_1038_2 = 3492,\n        Dlg_AlienGate_1067_2 = 3493,\n        MusSpecial_KA07 = 3494,\n        WepAutocanon3Fire3d_nonLoop = 3495,\n\n        MusSpecial_KA12 = 3496,\n        MusSpecial_KA14 = 3497,\n        MusStressOrTimeRush_KA03 = 3498,\n        MusSpecial_KA09 = 3499,\n        MusSpecial_KA10 = 3500,\n        MusSpecial_KA11 = 3501,\n        MusSpecial_KA08 = 3502,\n        MusSpecial_KA13 = 3503,\n        MusHeavyFight_KA15 = 3504,\n        MusSpecial_KA15 = 3505,\n        MusSpecial_KA16 = 3506,\n        MusCalmAtmosphere_KA05 = 3507,\n    }\n\n    struct MyCueParameters\n    {\n        public bool UseOcclusion;\n        public MySoundCuesEnum? Wrapped2dEnum;\n        public bool Loopable;\n        public float MaxDistance;\n        public int LastUpdate;\n        public bool IsHudCue;\n\n        public MyCueParameters(bool useOcclusion, MySoundCuesEnum? wrapped2dEnum, bool loopable)\n            : this(useOcclusion, wrapped2dEnum, loopable, false)\n        {\n        }\n\n        public MyCueParameters(bool useOcclusion, MySoundCuesEnum? wrapped2dEnum, bool loopable, bool isHudCue)\n        {\n            UseOcclusion = useOcclusion;\n            LastUpdate = 0;\n            Wrapped2dEnum = wrapped2dEnum;\n            Loopable = loopable;\n            MaxDistance = MyFakes.USE_LONG_SOUND_DISTANCE ? MyFakes.LONG_SOUND_DISTANCE : MyAudio.DISTANCE_1000_METERS;  //  Default distance\n            IsHudCue = isHudCue;\n        }\n\n        public MyCueParameters(bool useOcclusion, MySoundCuesEnum? wrapped2dEnum, bool loopable, float maxDistance)\n            : this(useOcclusion, wrapped2dEnum, loopable)\n        {\n            MaxDistance = maxDistance;\n        }\n\n        public MyCueParameters(bool useOcclusion, MySoundCuesEnum? wrapper2dEnum, bool loopable, float maxDistance, bool isHudCue)\n            : this(useOcclusion, wrapper2dEnum, loopable, maxDistance)\n        {\n            IsHudCue = isHudCue;\n        }\n    }\n\n    static partial class MyAudio\n    {\n        //sound enum groups\n        const string GROUP_GUI = \"Gui\";\n        const string GROUP_IMP = \"Imp\";\n        const string GROUP_VEH = \"Veh\";\n        const string GROUP_WEP = \"Wep\";\n        const string GROUP_SFX = \"Sfx\";\n        const string GROUP_MUS = \"Mus\";\n        const string GROUP_VOC = \"Voc\";\n        const string GROUP_HUD = \"Hud\";\n        const string GROUP_DLG = \"Dlg\";  // TODO\n        const string GROUP_SHT = \"Sht\";  // shouts\n\n        public static float DISTANCE_250_METERS = MyFakes.USE_LONG_SOUND_DISTANCE ? MyFakes.LONG_SOUND_DISTANCE : 250.0f;\n        public static float DISTANCE_500_METERS = MyFakes.USE_LONG_SOUND_DISTANCE ? MyFakes.LONG_SOUND_DISTANCE : 500.0f;\n        public static float DISTANCE_1000_METERS = MyFakes.USE_LONG_SOUND_DISTANCE ? MyFakes.LONG_SOUND_DISTANCE : 1000.0f;\n        public static float DISTANCE_5000_METERS = MyFakes.USE_LONG_SOUND_DISTANCE ? MyFakes.LONG_SOUND_DISTANCE : 5000.0f;\n        public static float DISTANCE_15000_METERS = MyFakes.USE_LONG_SOUND_DISTANCE ? MyFakes.LONG_SOUND_DISTANCE : 15000.0f;\n\n\n        static MyCueParameters?[] m_cueParameters;\n        static Dictionary<string, MySoundCuesEnum>[] m_musicTransitionCues;\n\n        static void InitCueParameters()\n        {\n            MyMwcLog.WriteLine(\"MyAudio.InitCueParameters() - START\", LoggingOptions.AUDIO);\n            MyMwcLog.IncreaseIndent(LoggingOptions.AUDIO);\n            m_musicTransitionCues = new Dictionary<string, MySoundCuesEnum>[MyMwcUtils.GetMaxValueFromEnum<MyMusicTransitionEnum>() + 1];\n            m_cueParameters = new MyCueParameters?[GetNumberOfSounds()];\n\n            m_cueParameters[(int)MySoundCuesEnum.GuiMouseClick] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.GuiMouseOver] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.GuiEditorFlyOutsideBorder] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.GuiEditorObjectAttach] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.GuiEditorObjectDelete] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.GuiEditorObjectDetach] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.GuiEditorObjectMoveInvalid] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.GuiEditorObjectMoveStep] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.GuiEditorObjectRotateStep] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.GuiEditorObjectSelect] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.GuiEditorPrefabCommit] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.GuiEditorPrefabEnter] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.GuiEditorPrefabExit] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.GuiEditorVoxelHandAdd] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.GuiEditorVoxelHandRemove] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.GuiEditorVoxelHandSoften] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.GuiEditorVoxelHandMaterial] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.GuiEditorVoxelHandSwitch] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.GuiWheelControlOpen] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.GuiWheelControlClose] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.ImpBulletHitRock] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.ImpBulletHitMetal] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.ImpBulletHitGlass] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.ImpRockCollideMetal] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.ImpRockCollideRock] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.ImpShipCollideMetal] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.ImpShipCollideRock] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.ImpPlayerShipCollideMetal] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.ImpPlayerShipCollideRock] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.ImpPlayerShipCollideShip] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.ImpPlayerShipScrapeShipLoop] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.ImpPlayerShipScrapeShipRelease] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.ImpBulletHitShip] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.ImpExpHitGlass] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.ImpExpHitMetal] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.ImpExpHitShip] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.ImpExpHitRock] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.VehShipaEngineIdle2d] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.VehShipaEngineIdle3d] = new MyCueParameters(true, MySoundCuesEnum.VehShipaEngineIdle2d, true);\n            m_cueParameters[(int)MySoundCuesEnum.VehShipaEngineHigh2d] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.VehShipaEngineHigh3d] = new MyCueParameters(true, MySoundCuesEnum.VehShipaEngineHigh2d, true);\n            m_cueParameters[(int)MySoundCuesEnum.VehShipaThrust2d] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.VehShipaThrust3d] = new MyCueParameters(true, MySoundCuesEnum.VehShipaThrust2d, true);\n            m_cueParameters[(int)MySoundCuesEnum.VehShipaLightsOn] = new MyCueParameters(false, null, false, DISTANCE_250_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.VehShipaLightsOff] = new MyCueParameters(false, null, false, DISTANCE_250_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.VehShipaEngineOn] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.VehShipaEngineOff] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.VehHarvesterTubeRelease2d] = new MyCueParameters(true, null, false, DISTANCE_250_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.VehHarvesterTubeRelease3d] = new MyCueParameters(true, MySoundCuesEnum.VehHarvesterTubeRelease2d, true);\n            m_cueParameters[(int)MySoundCuesEnum.VehHarvesterTubeMovingLoop2d] = new MyCueParameters(true, null, true, DISTANCE_250_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.VehHarvesterTubeMovingLoop3d] = new MyCueParameters(true, MySoundCuesEnum.VehHarvesterTubeMovingLoop2d, true);\n            m_cueParameters[(int)MySoundCuesEnum.VehHarvesterTubeColliding2d] = new MyCueParameters(true, null, false, DISTANCE_250_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.VehHarvesterTubeColliding3d] = new MyCueParameters(true, MySoundCuesEnum.VehHarvesterTubeColliding2d, true);\n            m_cueParameters[(int)MySoundCuesEnum.VehHarvesterTubeCollision2d] = new MyCueParameters(true, null, false, DISTANCE_250_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.VehHarvesterTubeCollision3d] = new MyCueParameters(true, MySoundCuesEnum.VehHarvesterTubeCollision2d, true);\n            m_cueParameters[(int)MySoundCuesEnum.VehHarvesterTubeImplode2d] = new MyCueParameters(true, null, false, DISTANCE_250_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.VehHarvesterTubeImplode3d] = new MyCueParameters(true, MySoundCuesEnum.VehHarvesterTubeImplode2d, true);\n            m_cueParameters[(int)MySoundCuesEnum.VehToolCrusherDrillLoop2d] = new MyCueParameters(false, null, true, DISTANCE_250_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.VehToolCrusherDrillLoop3d] = new MyCueParameters(true, MySoundCuesEnum.VehToolCrusherDrillLoop2d, true);\n            m_cueParameters[(int)MySoundCuesEnum.VehToolCrusherDrillRelease2d] = new MyCueParameters(false, null, false, DISTANCE_250_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.VehToolCrusherDrillRelease3d] = new MyCueParameters(true, MySoundCuesEnum.VehToolCrusherDrillRelease2d, true);\n            m_cueParameters[(int)MySoundCuesEnum.VehToolCrusherDrillColliding2d] = new MyCueParameters(false, null, true, DISTANCE_250_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.VehToolCrusherDrillColliding3d] = new MyCueParameters(true, MySoundCuesEnum.VehToolCrusherDrillColliding2d, true);\n            m_cueParameters[(int)MySoundCuesEnum.VehToolCrusherDrillColliding2d] = new MyCueParameters(false, null, true, DISTANCE_250_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.VehToolCrusherDrillColliding3d] = new MyCueParameters(true, MySoundCuesEnum.VehToolCrusherDrillColliding2d, true);\n            m_cueParameters[(int)MySoundCuesEnum.VehToolCrusherDrillCollidingRelease2d] = new MyCueParameters(false, null, true, DISTANCE_250_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.VehToolCrusherDrillCollidingRelease3d] = new MyCueParameters(true, MySoundCuesEnum.VehToolCrusherDrillCollidingRelease2d, true);\n            m_cueParameters[(int)MySoundCuesEnum.VehToolThermalDrillLoop2d] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.VehToolThermalDrillLoop3d] = new MyCueParameters(false, MySoundCuesEnum.VehToolThermalDrillLoop2d, true);\n            m_cueParameters[(int)MySoundCuesEnum.VehToolThermalDrillRelease2d] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.VehToolThermalDrillRelease3d] = new MyCueParameters(false, MySoundCuesEnum.VehToolThermalDrillRelease2d, false);\n            m_cueParameters[(int)MySoundCuesEnum.VehToolLaserDrillLoop2d] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.VehToolLaserDrillLoop3d] = new MyCueParameters(false, MySoundCuesEnum.VehToolLaserDrillLoop2d, true);\n            m_cueParameters[(int)MySoundCuesEnum.VehToolLaserDrillRelease2d] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.VehToolLaserDrillRelease3d] = new MyCueParameters(false, MySoundCuesEnum.VehToolLaserDrillRelease2d, false);\n            m_cueParameters[(int)MySoundCuesEnum.VehToolSawCut2d] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.VehToolSawCut3d] = new MyCueParameters(false, MySoundCuesEnum.VehToolSawCut2d, false);\n            m_cueParameters[(int)MySoundCuesEnum.VehToolSawLoop2d] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.VehToolSawLoop3d] = new MyCueParameters(false, MySoundCuesEnum.VehToolSawLoop2d, false);\n            m_cueParameters[(int)MySoundCuesEnum.VehToolSawRelease2d] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.VehToolSawRelease3d] = new MyCueParameters(false, MySoundCuesEnum.VehToolSawRelease2d, false);\n            m_cueParameters[(int)MySoundCuesEnum.WepAutocanonFire2d] = new MyCueParameters(false, null, true, DISTANCE_1000_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.WepAutocanonFire3d] = new MyCueParameters(true, MySoundCuesEnum.WepAutocanonFire2d, true, DISTANCE_1000_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.WepAutocanon3Fire3d_nonLoop] = new MyCueParameters(true, MySoundCuesEnum.WepAutocanonFire2d, false, DISTANCE_1000_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.WepMissileLaunch2d] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.WepMissileLaunch3d] = new MyCueParameters(true, MySoundCuesEnum.WepMissileLaunch2d, false);\n            m_cueParameters[(int)MySoundCuesEnum.WepCannon2d] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.WepCannon3d] = new MyCueParameters(true, MySoundCuesEnum.WepCannon3d, false);\n            m_cueParameters[(int)MySoundCuesEnum.WepAutocanonRel2d] = new MyCueParameters(false, null, false, DISTANCE_1000_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.WepAutocanonRel3d] = new MyCueParameters(true, MySoundCuesEnum.WepAutocanonRel2d, false, DISTANCE_1000_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.WepMissileLock] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.WepMissileExplosion] = new MyCueParameters(true, null, false, DISTANCE_15000_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.WepMissileFly] = new MyCueParameters(true, null, true, DISTANCE_1000_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.WepSniperScopeZoomRel] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.WepSniperScopeZoomALoop] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.WepMineMoveALoop] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.WepUnivLaunch2d] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.WepUnivLaunch3d] = new MyCueParameters(true, MySoundCuesEnum.WepUnivLaunch2d, false);\n            m_cueParameters[(int)MySoundCuesEnum.WepArsHighShot2d] = new MyCueParameters(false, null, false, DISTANCE_1000_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.WepArsHighShot3d] = new MyCueParameters(true, MySoundCuesEnum.WepArsHighShot2d, false, DISTANCE_1000_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.WepArsNormShot2d] = new MyCueParameters(false, null, false, DISTANCE_1000_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.WepArsNormShot3d] = new MyCueParameters(true, MySoundCuesEnum.WepArsNormShot2d, false, DISTANCE_1000_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.WepSniperNormFire2d] = new MyCueParameters(false, null, false, DISTANCE_1000_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.WepSniperNormFire3d] = new MyCueParameters(true, MySoundCuesEnum.WepSniperNormFire2d, false, DISTANCE_1000_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.WepSniperHighFire2d] = new MyCueParameters(false, null, false, DISTANCE_1000_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.WepSniperHighFire3d] = new MyCueParameters(true, MySoundCuesEnum.WepSniperHighFire2d, false, DISTANCE_1000_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.WepBombExplosion] = new MyCueParameters(true, null, false, DISTANCE_15000_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.WepLargeShipAutocannonRotate] = new MyCueParameters(false, null, false, DISTANCE_1000_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.WepLargeShipAutocannonRotateRelease] = new MyCueParameters(false, null, false, DISTANCE_1000_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.WepMachineGunHighFire2d] = new MyCueParameters(false, null, false, DISTANCE_1000_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.WepMachineGunHighFire3d] = new MyCueParameters(true, MySoundCuesEnum.WepMachineGunHighFire2d, false, DISTANCE_1000_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.WepMachineGunHighRel2d] = new MyCueParameters(false, null, false, DISTANCE_1000_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.WepMachineGunHighRel3d] = new MyCueParameters(true, MySoundCuesEnum.WepMachineGunHighRel2d, false, DISTANCE_1000_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.WepMachineGunNormFire2d] = new MyCueParameters(false, null, false, DISTANCE_1000_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.WepMachineGunNormFire3d] = new MyCueParameters(true, MySoundCuesEnum.WepMachineGunNormFire2d, false, DISTANCE_1000_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.WepMachineGunNormRel2d] = new MyCueParameters(false, null, false, DISTANCE_1000_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.WepMachineGunNormRel3d] = new MyCueParameters(true, MySoundCuesEnum.WepMachineGunNormRel2d, false, DISTANCE_1000_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.WepShotgunNormShot2d] = new MyCueParameters(false, null, false, DISTANCE_1000_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.WepShotgunNormShot3d] = new MyCueParameters(true, MySoundCuesEnum.WepShotgunNormShot2d, false, DISTANCE_1000_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.WepShotgunHighShot2d] = new MyCueParameters(false, null, false, DISTANCE_1000_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.WepShotgunHighShot3d] = new MyCueParameters(true, MySoundCuesEnum.WepShotgunHighShot2d, false, DISTANCE_1000_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.WepRailNormShot2d] = new MyCueParameters(false, null, false, DISTANCE_1000_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.WepRailNormShot3d] = new MyCueParameters(true, MySoundCuesEnum.WepRailNormShot2d, false, DISTANCE_1000_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.WepRailHighShot2d] = new MyCueParameters(false, null, false, DISTANCE_1000_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.WepRailHighShot3d] = new MyCueParameters(true, MySoundCuesEnum.WepRailHighShot2d, false, DISTANCE_1000_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.WepBombSmartTimer] = new MyCueParameters(false, null, false, DISTANCE_1000_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.WepBombSmartSmoke] = new MyCueParameters(false, null, false, DISTANCE_1000_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.WepBombSmartPlant] = new MyCueParameters(false, null, false, DISTANCE_1000_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.WepBombSmartDrone] = new MyCueParameters(false, null, false, DISTANCE_1000_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.WepBombGravSuck] = new MyCueParameters(false, null, false, DISTANCE_1000_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.WepEpmExplosion] = new MyCueParameters(false, null, false, DISTANCE_1000_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.WepBombFlash] = new MyCueParameters(false, null, false, DISTANCE_1000_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.SfxFlareLoop01] = new MyCueParameters(false, null, false, DISTANCE_500_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.SfxFlareDeploy] = new MyCueParameters(false, null, false, DISTANCE_250_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.WepNoAmmo] = new MyCueParameters(false, null, false, DISTANCE_250_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.SfxSolarWind] = new MyCueParameters(true, null, true, DISTANCE_15000_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.SfxShipSmallExplosion] = new MyCueParameters(true, null, false, DISTANCE_15000_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.SfxHudReflectorRange] = new MyCueParameters(true, null, false, DISTANCE_250_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.SfxHudSlowMovementOff] = new MyCueParameters(true, null, false, DISTANCE_250_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.SfxHudSlowMovementOn] = new MyCueParameters(true, null, false, DISTANCE_250_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.SfxHudAutolevelingOn] = new MyCueParameters(true, null, false, DISTANCE_250_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.SfxHudAutolevelingOff] = new MyCueParameters(true, null, false, DISTANCE_250_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.SfxHudWeaponScroll] = new MyCueParameters(false, null, false, DISTANCE_250_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.SfxHudWeaponSelect] = new MyCueParameters(false, null, false, DISTANCE_250_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.SfxHudRadarMode] = new MyCueParameters(false, null, false, DISTANCE_250_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.SfxHudCockpitOn] = new MyCueParameters(false, null, false, DISTANCE_250_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.SfxHudCockpitOff] = new MyCueParameters(false, null, false, DISTANCE_250_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.SfxSpark] = new MyCueParameters(false, null, false, DISTANCE_1000_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.SfxHudBackcameraOn] = new MyCueParameters(false, null, false, DISTANCE_250_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.SfxHudBackcameraOff] = new MyCueParameters(false, null, false, DISTANCE_250_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.SfxPlayerBreath] = new MyCueParameters(false, null, false, DISTANCE_250_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.SfxPlayerDeathBeep] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.SfxPlayerDeathBreath] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MovDoor1AClose] = new MyCueParameters(false, null, false, DISTANCE_1000_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.MovDoor1AOpen] = new MyCueParameters(false, null, false, DISTANCE_1000_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.MovDoor1BClose] = new MyCueParameters(false, null, false, DISTANCE_1000_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.MovDoor1BOpen] = new MyCueParameters(false, null, false, DISTANCE_1000_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.MovDoor2AClose] = new MyCueParameters(false, null, false, DISTANCE_1000_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.MovDoor2AOpen] = new MyCueParameters(false, null, false, DISTANCE_1000_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.MovDoor2BClose] = new MyCueParameters(false, null, false, DISTANCE_1000_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.MovDoor2BOpen] = new MyCueParameters(false, null, false, DISTANCE_1000_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.MovDoor3AClose] = new MyCueParameters(false, null, false, DISTANCE_1000_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.MovDoor3AOpen] = new MyCueParameters(false, null, false, DISTANCE_1000_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.HudFuelLowWarning] = new MyCueParameters(false, null, false, DISTANCE_250_METERS, true);\n            m_cueParameters[(int)MySoundCuesEnum.HudFuelCriticalWarning] = new MyCueParameters(false, null, false, DISTANCE_250_METERS, true);\n            m_cueParameters[(int)MySoundCuesEnum.HudOxygenLowWarning] = new MyCueParameters(false, null, false, DISTANCE_250_METERS, true);\n            m_cueParameters[(int)MySoundCuesEnum.HudOxygenCriticalWarning] = new MyCueParameters(false, null, false, DISTANCE_250_METERS, true);\n            m_cueParameters[(int)MySoundCuesEnum.HudOxygenNoWarning] = new MyCueParameters(false, null, false, DISTANCE_250_METERS, true);\n            m_cueParameters[(int)MySoundCuesEnum.HudDamageAlertWarning] = new MyCueParameters(false, null, false, DISTANCE_250_METERS, true);\n            m_cueParameters[(int)MySoundCuesEnum.HudDamageCriticalWarning] = new MyCueParameters(false, null, false, DISTANCE_250_METERS, true);\n            m_cueParameters[(int)MySoundCuesEnum.HudAmmoCriticalWarning] = new MyCueParameters(false, null, false, DISTANCE_250_METERS, true);\n            m_cueParameters[(int)MySoundCuesEnum.HudAmmoLowWarning] = new MyCueParameters(false, null, false, DISTANCE_250_METERS, true);\n            m_cueParameters[(int)MySoundCuesEnum.HudArmorCriticalWarning] = new MyCueParameters(false, null, false, DISTANCE_250_METERS, true);\n            m_cueParameters[(int)MySoundCuesEnum.HudArmorLowWarning] = new MyCueParameters(false, null, false, DISTANCE_250_METERS, true);\n            m_cueParameters[(int)MySoundCuesEnum.HudDestinationReached] = new MyCueParameters(false, null, false, DISTANCE_250_METERS, true);\n            m_cueParameters[(int)MySoundCuesEnum.HudRadarJammedWarning] = new MyCueParameters(false, null, false, DISTANCE_250_METERS, true);\n            m_cueParameters[(int)MySoundCuesEnum.HudTargetDestroyed] = new MyCueParameters(false, null, false, DISTANCE_250_METERS, true);\n            m_cueParameters[(int)MySoundCuesEnum.HudRadiationWarning] = new MyCueParameters(false, null, false, DISTANCE_250_METERS, true);\n            m_cueParameters[(int)MySoundCuesEnum.SfxGeigerCounterHeavyLoop] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.HudEnemyAlertWarning] = new MyCueParameters(false, null, false, DISTANCE_250_METERS, true);\n            m_cueParameters[(int)MySoundCuesEnum.HudFriendlyFireWarning] = new MyCueParameters(false, null, false, DISTANCE_250_METERS, true);\n            m_cueParameters[(int)MySoundCuesEnum.HudHarvestingComplete] = new MyCueParameters(false, null, false, DISTANCE_250_METERS, true);\n            m_cueParameters[(int)MySoundCuesEnum.HudSolarFlareWarning] = new MyCueParameters(false, null, false, DISTANCE_250_METERS, true);\n            m_cueParameters[(int)MySoundCuesEnum.HudInventoryComplete] = new MyCueParameters(false, null, false, DISTANCE_250_METERS, true);\n            m_cueParameters[(int)MySoundCuesEnum.HudInventoryFullWarning] = new MyCueParameters(false, null, false, DISTANCE_250_METERS, true);\n            m_cueParameters[(int)MySoundCuesEnum.HudInventoryTransfer] = new MyCueParameters(false, null, false, DISTANCE_250_METERS, true);\n            m_cueParameters[(int)MySoundCuesEnum.HudObjectiveComplete] = new MyCueParameters(false, null, false, DISTANCE_250_METERS, true);\n            //m_cueParameters[(int)MySoundCuesEnum.HudMissionFailed] = new MyCueParameters(false, null, false, DISTANCE_250_METERS, true);\n            m_cueParameters[(int)MySoundCuesEnum.HudHealthLowWarning] = new MyCueParameters(false, null, false, DISTANCE_250_METERS, true);\n            m_cueParameters[(int)MySoundCuesEnum.HudHealthCriticalWarning] = new MyCueParameters(false, null, false, DISTANCE_250_METERS, true);\n            //m_cueParameters[(int)MySoundCuesEnum.HudMissionComplete] = new MyCueParameters(false, null, false, DISTANCE_250_METERS, true);\n            m_cueParameters[(int)MySoundCuesEnum.SfxClaxonAlert] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.VehToolCrusherDrillIdle2d] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.VehToolCrusherDrillIdle3d] = new MyCueParameters(false, MySoundCuesEnum.VehToolCrusherDrillIdle2d, true);\n            m_cueParameters[(int)MySoundCuesEnum.VehToolLaserDrillIdle2d] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.VehToolLaserDrillIdle3d] = new MyCueParameters(false, MySoundCuesEnum.VehToolLaserDrillIdle2d, true);\n            m_cueParameters[(int)MySoundCuesEnum.VehToolSawIdle2d] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.VehToolSawIdle3d] = new MyCueParameters(false, MySoundCuesEnum.VehToolSawIdle2d, true);\n            m_cueParameters[(int)MySoundCuesEnum.VehToolThermalDrillIdle2d] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.VehToolThermalDrillIdle3d] = new MyCueParameters(false, MySoundCuesEnum.VehToolThermalDrillIdle2d, true);\n            m_cueParameters[(int)MySoundCuesEnum.SfxGps] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.SfxGpsFail] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.SfxHudAlarmIncoming] = new MyCueParameters(false, null, false, DISTANCE_250_METERS, false);\n            m_cueParameters[(int)MySoundCuesEnum.SfxHudAlarmDamageA] = new MyCueParameters(false, null, false, DISTANCE_250_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.SfxHudAlarmDamageB] = new MyCueParameters(false, null, false, DISTANCE_250_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.SfxHudAlarmDamageC] = new MyCueParameters(false, null, false, DISTANCE_250_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.SfxHudAlarmDamageD] = new MyCueParameters(false, null, false, DISTANCE_250_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.SfxHudAlarmDamageE] = new MyCueParameters(false, null, false, DISTANCE_250_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.SfxNuclearExplosion] = new MyCueParameters(false, null, false, DISTANCE_15000_METERS);\n\n            m_cueParameters[(int)MySoundCuesEnum.MenuWelcome] = new MyCueParameters(false, null, false);\n\n            // new music\n            m_cueParameters[(int)MySoundCuesEnum.MusCalmAtmosphere_MM01] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusCalmAtmosphere_MM02] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusDesperateWithStress_MM01] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusDesperateWithStress_KA01] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusCalmAtmosphere_KA01] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusHeavyFight_MM01] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusHeavyFight_MM02] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusCalmAtmosphere_KA02] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusLightFight_MM01] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusLightFight_MM02] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusSadnessOrDesperation_MM01] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusSadnessOrDesperation_MM02] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusSadnessOrDesperation_KA02] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusSadnessOrDesperation_KA01] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusStealthAction_MM01] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusStealthAction_MM02] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusStealthAction_KA01] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusStressOrTimeRush_MM01] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusStressOrTimeRush_MM02] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusStressOrTimeRush_KA01] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusStressOrTimeRush_KA02] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusTensionBeforeAnAction_MM01] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusTensionBeforeAnAction_MM02] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusTensionBeforeAnAction_KA01] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusTensionBeforeAnAction_KA02] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusSpecial_MM01] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusVictory_MM01] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusVictory_MM02] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusVictory_KA01] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusVictory_KA02] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Mus_victory_KA_6] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusHeavyFight_KA01] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusHeavyFight_KA02] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusHeavyFight_KA15] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusCalmAtmosphere_KA03] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusCalmAtmosphere_KA05] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusDesperateWithStress_KA02] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusDesperateWithStress_KA03] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusDesperateWithStress_KA04] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Mus_desperatestress_KA_2_longer_2b] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusMainMenu_KA_MM] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusHorror_KA01] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusHorror_MM01] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusMystery_MM01] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusMystery_KA02] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusMystery_KA01] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusMystery_MM02] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusHorror_KA02] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusHorror_MM02] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusLightFight_KA03] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusLightFight_KA04] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusLightFight_KA05] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusLightFight_KA07] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusLightFight_KA08] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusLightFight_KA10] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusLightFight_KA11] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusSpecial_MM02] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusSpecial_MM03] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusSpecial_KA01] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusHeavyFight_KA03] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusLightFight_KA12] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusHeavyFight_KA05] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusSpecial_KA02] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusHeavyFight_KA07] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusSpecial_MM04] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusHeavyFight_KA04] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusSpecial_KA03] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusLightFight_KA27] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusSpecial_KA04] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusSpecial_KA05] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusSpecial_MM05] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Mus_lightfight_KA_26] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Mus_lightfight_KA_28] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Mus_special_KA_4_loop] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusHeavyFight_KA19] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusHeavyFight_KA17] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusHeavyFight_KA16] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusHeavyFight_KA06] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusStealthAction_KA03] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusSpecial_KA06] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusCalmAtmosphere_MM_b] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusSpecial_LostInTheDistance] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusSpecial_KA07] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusSpecial_KA08] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusSpecial_KA09] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusSpecial_KA10] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusSpecial_KA11] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusSpecial_KA12] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusSpecial_KA13] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusSpecial_KA14] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusSpecial_KA15] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusSpecial_KA16] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.MusStressOrTimeRush_KA03] = new MyCueParameters(false, null, false);\n\n            m_cueParameters[(int)MySoundCuesEnum.MovDock1Start] = new MyCueParameters(false, null, false, DISTANCE_1000_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.MovDock1Loop] = new MyCueParameters(false, null, false, DISTANCE_1000_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.MovDock1End] = new MyCueParameters(false, null, false, DISTANCE_1000_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.MovDock2Start] = new MyCueParameters(false, null, false, DISTANCE_1000_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.MovDock2Loop] = new MyCueParameters(false, null, false, DISTANCE_1000_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.MovDock2End] = new MyCueParameters(false, null, false, DISTANCE_1000_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.MovDock3Start] = new MyCueParameters(false, null, false, DISTANCE_1000_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.MovDock3Loop] = new MyCueParameters(false, null, false, DISTANCE_1000_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.MovDock3End] = new MyCueParameters(false, null, false, DISTANCE_1000_METERS);\n\n            m_cueParameters[(int)MySoundCuesEnum.VehCH1EngineIdle2d] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.VehCH1EngineIdle3d] = new MyCueParameters(true, MySoundCuesEnum.VehCH1EngineIdle2d, true);\n            m_cueParameters[(int)MySoundCuesEnum.VehCH1EngineHigh2d] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.VehCH1EngineHigh3d] = new MyCueParameters(true, MySoundCuesEnum.VehCH1EngineHigh2d, true);\n            m_cueParameters[(int)MySoundCuesEnum.VehCH1EngineOn] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.VehCH1EngineOff] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.VehEL1EngineIdle2d] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.VehEL1EngineIdle3d] = new MyCueParameters(true, MySoundCuesEnum.VehEL1EngineIdle2d, true);\n            m_cueParameters[(int)MySoundCuesEnum.VehEL1EngineHigh2d] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.VehEL1EngineHigh3d] = new MyCueParameters(true, MySoundCuesEnum.VehEL1EngineHigh2d, true);\n            m_cueParameters[(int)MySoundCuesEnum.VehEL1EngineOn] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.VehEL1EngineOff] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.VehNU1EngineIdle2d] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.VehNU1EngineIdle3d] = new MyCueParameters(true, MySoundCuesEnum.VehNU1EngineIdle2d, true);\n            m_cueParameters[(int)MySoundCuesEnum.VehNU1EngineHigh2d] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.VehNU1EngineHigh3d] = new MyCueParameters(true, MySoundCuesEnum.VehNU1EngineHigh2d, true);\n            m_cueParameters[(int)MySoundCuesEnum.VehNU1EngineOn] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.VehNU1EngineOff] = new MyCueParameters(false, null, false);\n\n            m_cueParameters[(int)MySoundCuesEnum.ImpShipQuake] = new MyCueParameters(false, null, false);\n\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_RoomLarge01] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_RoomLarge02] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_RoomLarge03] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_RoomLarge04] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_RoomLarge05] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_RoomMed01] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_RoomMed02] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_RoomMed03] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_RoomMed04] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_RoomMed05] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_RoomSmall01] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_RoomSmall02] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_RoomSmall03] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_RoomSmall04] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_StressLoop] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_TunnelLarge01] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_TunnelMedium01] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_TunnelSmall01] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Amb3D_Electrical01] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Amb3D_Electrical02] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Amb3D_FanLargeDamaged] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Amb3D_FanLargeDestroyed] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb3D_FanLargeNormal] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Amb3D_FanMediumDamaged] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Amb3D_FanMediumDestroyed] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb3D_FanMediumNormal] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Amb3D_FanSmallDamaged] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Amb3D_FanSmallDestroyed] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb3D_FanSmallNormal] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Amb3D_GenLargeDamaged] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Amb3D_GenLargeDestroyed] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb3D_GenLargeNormal] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Amb3D_GenMediumDamaged] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Amb3D_GenMediumDestroyed] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb3D_GenMediumNormal] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Amb3D_GenSmallDamaged] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Amb3D_GenSmallDestroyed] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb3D_GenSmallNormal] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Amb3D_PipeFlow01] = new MyCueParameters(false, null, true);\n\n            m_cueParameters[(int)MySoundCuesEnum.Amb3D_RadioChatterAllied01_04] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb3D_RadioChatterAllied05_08] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb3D_RadioChatterAllied09_12] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb3D_RadioChatterAllied13_16] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb3D_RadioChatterChinese01_04] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb3D_RadioChatterChinese05_08] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb3D_RadioChatterChinese09_12] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb3D_RadioChatterChinese13_16] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb3D_RadioChatterRussian01_04] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb3D_RadioChatterRussian05_08] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb3D_RadioChatterRussian09_12] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb3D_RadioChatterRussian13_16] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb3D_Spark01] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb3D_SteamDischarge01] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb3D_SteamDischarge02] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb3D_SteamDischarge03] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb3D_SteamDischarge04] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb3D_SteamLoop01] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Amb3D_SteamLoop02] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Amb3D_SteamLoop03] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Amb3D_SteamLoop04] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Amb3D_SteamLoop05] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Amb3D_ThunderClapLarge] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb3D_ThunderClapMed] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb3D_ThunderClapSmall] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb3D_Welding01] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb3D_PrefabFire] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Amb3D_EngineThrust] = new MyCueParameters(false, null, true);\n\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_City] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_ComputerRoom] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_Factory] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_LostPlace] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_RedHeat] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_War] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_City2] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_Factory2] = new MyCueParameters(false, null, false);\n\n            m_cueParameters[(int)MySoundCuesEnum.VehToolLaserDrillColliding2d] = new MyCueParameters(false, null, true, DISTANCE_250_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.VehToolLaserDrillColliding3d] = new MyCueParameters(true, MySoundCuesEnum.VehToolLaserDrillColliding2d, true);\n            m_cueParameters[(int)MySoundCuesEnum.VehToolLaserDrillCollidingRelease2d] = new MyCueParameters(false, null, true, DISTANCE_250_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.VehToolLaserDrillCollidingRelease3d] = new MyCueParameters(true, MySoundCuesEnum.VehToolLaserDrillCollidingRelease2d, true);\n            m_cueParameters[(int)MySoundCuesEnum.VehToolThermalDrillColliding2d] = new MyCueParameters(false, null, true, DISTANCE_250_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.VehToolThermalDrillColliding3d] = new MyCueParameters(true, MySoundCuesEnum.VehToolThermalDrillColliding2d, true);\n            m_cueParameters[(int)MySoundCuesEnum.VehToolThermalDrillCollidingRelease2d] = new MyCueParameters(false, null, true, DISTANCE_250_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.VehToolThermalDrillCollidingRelease3d] = new MyCueParameters(true, MySoundCuesEnum.VehToolThermalDrillCollidingRelease2d, true);\n            m_cueParameters[(int)MySoundCuesEnum.VehToolLaserCollidingOther2d] = new MyCueParameters(false, null, true, DISTANCE_250_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.VehToolLaserCollidingOther3d] = new MyCueParameters(true, MySoundCuesEnum.VehToolLaserCollidingOther2d, true);\n            m_cueParameters[(int)MySoundCuesEnum.VehToolLaserCollidingOtherRelease2d] = new MyCueParameters(false, null, true, DISTANCE_250_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.VehToolLaserCollidingOtherRelease3d] = new MyCueParameters(true, MySoundCuesEnum.VehToolLaserCollidingOtherRelease2d, true);\n            m_cueParameters[(int)MySoundCuesEnum.VehToolCrusherDrillCollidingOther2d] = new MyCueParameters(false, null, true, DISTANCE_250_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.VehToolCrusherDrillCollidingOther3d] = new MyCueParameters(true, MySoundCuesEnum.VehToolCrusherDrillCollidingOther2d, true);\n            m_cueParameters[(int)MySoundCuesEnum.VehToolCrusherDrillCollidingOtherRelease2d] = new MyCueParameters(false, null, true, DISTANCE_250_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.VehToolCrusherDrillCollidingOtherRelease3d] = new MyCueParameters(true, MySoundCuesEnum.VehToolCrusherDrillCollidingOtherRelease2d, true);\n            m_cueParameters[(int)MySoundCuesEnum.VehToolLaserCollidingOther2d] = new MyCueParameters(false, null, true, DISTANCE_250_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.VehToolLaserCollidingOther3d] = new MyCueParameters(true, MySoundCuesEnum.VehToolLaserCollidingOther2d, true);\n            m_cueParameters[(int)MySoundCuesEnum.VehToolLaserCollidingOtherRelease2d] = new MyCueParameters(false, null, true, DISTANCE_250_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.VehToolLaserCollidingOtherRelease3d] = new MyCueParameters(true, MySoundCuesEnum.VehToolLaserCollidingOtherRelease2d, true);\n            m_cueParameters[(int)MySoundCuesEnum.VehToolPressureDrillBlastOther2d] = new MyCueParameters(false, null, true, DISTANCE_250_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.VehToolPressureDrillBlastOther3d] = new MyCueParameters(true, MySoundCuesEnum.VehToolPressureDrillBlastOther2d, true);\n            m_cueParameters[(int)MySoundCuesEnum.VehToolSawCutOther2d] = new MyCueParameters(false, null, true, DISTANCE_250_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.VehToolSawCutOther3d] = new MyCueParameters(true, MySoundCuesEnum.VehToolSawCutOther2d, true);\n            m_cueParameters[(int)MySoundCuesEnum.VehToolSawCutOtherRelease2d] = new MyCueParameters(false, null, true, DISTANCE_250_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.VehToolSawCutOtherRelease3d] = new MyCueParameters(true, MySoundCuesEnum.VehToolSawCutOtherRelease2d, true);\n            m_cueParameters[(int)MySoundCuesEnum.VehToolSawCutRelease2d] = new MyCueParameters(false, null, true, DISTANCE_250_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.VehToolSawCutRelease3d] = new MyCueParameters(true, MySoundCuesEnum.VehToolSawCutRelease2d, true);\n            m_cueParameters[(int)MySoundCuesEnum.VehToolThermalDrillCollidingOther2d] = new MyCueParameters(false, null, true, DISTANCE_250_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.VehToolThermalDrillCollidingOther3d] = new MyCueParameters(true, MySoundCuesEnum.VehToolThermalDrillCollidingOther2d, true);\n            m_cueParameters[(int)MySoundCuesEnum.VehToolThermalDrillCollidingOtherRelease2d] = new MyCueParameters(false, null, true, DISTANCE_250_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.VehToolThermalDrillCollidingOtherRelease3d] = new MyCueParameters(true, MySoundCuesEnum.VehToolThermalDrillCollidingOtherRelease2d, true);\n\n            m_cueParameters[(int)MySoundCuesEnum.VehToolPressureDrillBlast3d] = new MyCueParameters(true, MySoundCuesEnum.VehToolPressureDrillBlast2d, true);\n            m_cueParameters[(int)MySoundCuesEnum.VehToolPressureDrillBlastRock3d] = new MyCueParameters(true, MySoundCuesEnum.VehToolPressureDrillBlastRock2d, true);\n            m_cueParameters[(int)MySoundCuesEnum.VehToolPressureDrillIdle3d] = new MyCueParameters(true, MySoundCuesEnum.VehToolPressureDrillIdle2d, true);\n            m_cueParameters[(int)MySoundCuesEnum.VehToolPressureDrillRecharge3d] = new MyCueParameters(true, MySoundCuesEnum.VehToolPressureDrillRecharge2d, true);\n\n            m_cueParameters[(int)MySoundCuesEnum.VehToolNuclearDrillLoop2d] = new MyCueParameters(false, null, true, DISTANCE_250_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.VehToolNuclearDrillLoop3d] = new MyCueParameters(true, MySoundCuesEnum.VehToolNuclearDrillLoop2d, true);\n            m_cueParameters[(int)MySoundCuesEnum.VehToolNuclearDrillRelease2d] = new MyCueParameters(false, null, true, DISTANCE_250_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.VehToolNuclearDrillRelease3d] = new MyCueParameters(true, MySoundCuesEnum.VehToolNuclearDrillRelease2d, true);\n            m_cueParameters[(int)MySoundCuesEnum.VehToolNuclearDrillColliding2d] = new MyCueParameters(false, null, true, DISTANCE_250_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.VehToolNuclearDrillColliding3d] = new MyCueParameters(true, MySoundCuesEnum.VehToolNuclearDrillColliding2d, true);\n            m_cueParameters[(int)MySoundCuesEnum.VehToolNuclearDrillCollidingOther2d] = new MyCueParameters(false, null, true, DISTANCE_250_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.VehToolNuclearDrillCollidingOther3d] = new MyCueParameters(true, MySoundCuesEnum.VehToolNuclearDrillCollidingOther2d, true);\n            m_cueParameters[(int)MySoundCuesEnum.VehToolNuclearDrillCollidingRelease2d] = new MyCueParameters(false, null, true, DISTANCE_250_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.VehToolNuclearDrillCollidingRelease3d] = new MyCueParameters(true, MySoundCuesEnum.VehToolNuclearDrillCollidingRelease2d, true);\n            m_cueParameters[(int)MySoundCuesEnum.VehToolNuclearDrillCollidingOtherRelease2d] = new MyCueParameters(false, null, true, DISTANCE_250_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.VehToolNuclearDrillCollidingOtherRelease3d] = new MyCueParameters(true, MySoundCuesEnum.VehToolNuclearDrillCollidingOtherRelease2d, true);\n            m_cueParameters[(int)MySoundCuesEnum.VehToolNuclearDrillIdle2d] = new MyCueParameters(false, null, true, DISTANCE_250_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.VehToolNuclearDrillIdle3d] = new MyCueParameters(true, MySoundCuesEnum.VehToolNuclearDrillIdle2d, true);\n\n\n            m_cueParameters[(int)MySoundCuesEnum.VehLoopDrone] = new MyCueParameters(false, null, true, DISTANCE_250_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.VehLoopCamera] = new MyCueParameters(false, null, true, DISTANCE_250_METERS);\n\n\n\n\n\n            m_cueParameters[(int)MySoundCuesEnum.SfxProgressHack] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.SfxCancelHack] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.SfxProgressRepair] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.SfxProgressBuild] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.SfxCancelRepair] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.SfxCancelBuild] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.SfxProgressActivation] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.SfxCancelActivation] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.SfxProgressTake] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.SfxCancelTake] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.SfxProgressPut] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.SfxCancelPut] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb3D_GenXstart] = new MyCueParameters(false, null, false, DISTANCE_500_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.Amb3D_GenXloop] = new MyCueParameters(false, null, true, DISTANCE_500_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.SfxAlertVoc] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb3D_GenXend] = new MyCueParameters(false, null, false, DISTANCE_500_METERS);\n\n            m_cueParameters[(int)MySoundCuesEnum.Amb3D_Temple1] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb3D_Temple2] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb3D_Temple3] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.SfxShipLargeExplosion] = new MyCueParameters(true, null, false, DISTANCE_15000_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.HudFuelNoWarning] = new MyCueParameters(false, null, false, true);\n\n            m_cueParameters[(int)MySoundCuesEnum.VocRace01Welcome] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.VocRace02countdown] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.VocRace03cleanStart] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.VocRace04running] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.VocRace05minefields] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.VocRace06speedDuel] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.VocRace07allThose] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.VocRace08moving] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.VocRace09dirtyTricks] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.VocRace10inside] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.VocRace11wire] = new MyCueParameters(false, null, false);\n\n            m_cueParameters[(int)MySoundCuesEnum.VehToolPressureDrillBlast2d] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.VehToolPressureDrillIdle2d] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.VehToolPressureDrillRecharge2d] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.VehToolPressureDrillBlastRock2d] = new MyCueParameters(false, null, false);\n\n            //m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0001] = new MyCueParameters(false, null, false);\n            //m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0002] = new MyCueParameters(false, null, false);\n            //m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0003] = new MyCueParameters(false, null, false);\n            //m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0004] = new MyCueParameters(false, null, false);\n            //m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0005] = new MyCueParameters(false, null, false);\n            //m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0006] = new MyCueParameters(false, null, false);\n            //m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0007] = new MyCueParameters(false, null, false);\n            //m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0008] = new MyCueParameters(false, null, false);\n            //m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0009] = new MyCueParameters(false, null, false);\n            //m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0010] = new MyCueParameters(false, null, false);\n            //m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0011] = new MyCueParameters(false, null, false);\n            //m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0012_01] = new MyCueParameters(false, null, false);\n            //m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0012_02] = new MyCueParameters(false, null, false);\n            //m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0013] = new MyCueParameters(false, null, false);\n            //m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0014_01] = new MyCueParameters(false, null, false);\n            //m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0014_02] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0015] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0016] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0017_01] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0017_02] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0018_01] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0018_02] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0018_03] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0019] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0020] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0021] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0022] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0023] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0024_01] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0024_02] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0025_01] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0025_02] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0026] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0027_01] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0027_02] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0028] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0029] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0030] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0031] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0032_01] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0032_02] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0033] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0034] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0035] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0036] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0037] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0038] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0039] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0040_01] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0040_02] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0041] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0042] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0043] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0044] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0045] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0046] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0047] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0048] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0049_01] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0049_02] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0050] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0051] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0052] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0053_01] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0053_02] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0053_03] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0054] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0055_01] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0055_02] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0056] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0057] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0058] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0059] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0060_01] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0060_02] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0061] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0062] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0063] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0064] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0065] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0066] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0067] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0068] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0069] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0069_02] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0069_03] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0070] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0071] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0072] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0073] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0074] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0075] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0076] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0077] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_0078] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_1000] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_1001] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_1002] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_1003] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EACSurveySite_1004] = new MyCueParameters(false, null, false);\n\n\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransport_1000] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransport_1001] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransport_1002] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransport_1003] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransport_1004] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransport_1005] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransport_1006] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransport_1007] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransport_1008] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransport_1009] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransport_1010] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransport_1011] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransport_1012] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransport_1013] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransport_1014] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransport_1015] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransport_1016] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransport_1017] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransport_1018] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransport_1019] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransport_1020] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransport_1021] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransport_1022] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransport_1023] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransport_1024] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransport_1025] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransport_1026] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransport_1027] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransport_1028] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransport_1029] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransport_1030] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransport_1031] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransport_1032] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransport_1033] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransport_1034] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransport_1035] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransport_1036] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransport_1037] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransport_1038] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransport_1039] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransport_1040] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransport_1041] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransport_1042] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransport_1043] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransport_1044] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransport_1045] = new MyCueParameters(false, null, false);\n\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseRafinery_1000] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseRafinery_1001] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseRafinery_1002] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseRafinery_1003] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseRafinery_1004] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseRafinery_1005] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseRafinery_1006] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseRafinery_1007] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseRafinery_1008] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseRafinery_1009] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseRafinery_1010] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseRafinery_1011] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseRafinery_1012] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseRafinery_1013] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseRafinery_1014] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseRafinery_1015] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseRafinery_1016] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseRafinery_1017] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseRafinery_1018] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseRafinery_1019] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseRafinery_1020] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseRafinery_1021] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseRafinery_1022] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseRafinery_1023] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseRafinery_1024] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseRafinery_1025] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseRafinery_1026] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseRafinery_1027] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseRafinery_1028] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseRafinery_1029] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseRafinery_1030] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseRafinery_1031] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseRafinery_1032] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseRafinery_1033] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseRafinery_1034] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseRafinery_1035] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseRafinery_1036] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseRafinery_1037] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseRafinery_1038] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseRafinery_1039] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseRafinery_1040] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseRafinery_1041] = new MyCueParameters(false, null, false);\n\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransmitter_1000] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransmitter_1001] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransmitter_1002] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransmitter_1003] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransmitter_1004] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransmitter_1005] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransmitter_1006] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransmitter_1007] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransmitter_1008] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransmitter_1009] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransmitter_1010] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransmitter_1011] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransmitter_1012] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransmitter_1013] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransmitter_1014] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransmitter_1015] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransmitter_1016] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransmitter_1017] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransmitter_1018] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransmitter_1019] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransmitter_1020] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransmitter_1021] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransmitter_1022] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransmitter_1023] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransmitter_1024] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransmitter_1025] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransmitter_1026] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransmitter_1027] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransmitter_1028] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransmitter_1029] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransmitter_1030] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransmitter_1031] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransmitter_1032] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransmitter_1033] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransmitter_1034] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransmitter_1035] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransmitter_1036] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransmitter_1037] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransmitter_1038] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransmitter_1039] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransmitter_1040] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransmitter_1041] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransmitter_1042] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransmitter_1043] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransmitter_1044] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransmitter_1045] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransmitter_1046] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransmitter_1047] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransmitter_1048] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransmitter_1049] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransmitter_1050] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransmitter_1051] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransmitter_1052] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransmitter_1053] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransmitter_1054] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransmitter_1055] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransmitter_1056] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransmitter_1057] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransmitter_1058] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransmitter_1059] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransmitter_1060] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransmitter_1061] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransmitter_1062] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransmitter_1063] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransmitter_1064] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransmitter_1065] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransmitter_1066] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransmitter_1067] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransmitter_1068] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseTransmitter_1069] = new MyCueParameters(false, null, false);\n\n\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBaseWipeout_1000] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBaseWipeout_1001] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBaseWipeout_1002] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBaseWipeout_1003] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBaseWipeout_1004] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBaseWipeout_1005] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBaseWipeout_1006] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBaseWipeout_1007] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBaseWipeout_1008] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBaseWipeout_1009] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBaseWipeout_1010] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBaseWipeout_1011] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBaseWipeout_1012] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBaseWipeout_1013] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBaseWipeout_1014] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBaseWipeout_1015] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBaseWipeout_1016] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBaseWipeout_1017] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBaseWipeout_1018] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBaseWipeout_1019] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBaseWipeout_1020] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBaseWipeout_1021] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBaseWipeout_1022] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBaseWipeout_1023] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBaseWipeout_1024] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBaseWipeout_1025] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBaseWipeout_1026] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBaseWipeout_1027] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBaseWipeout_1028] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBaseWipeout_1029] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBaseWipeout_1030] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBaseWipeout_1031] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBaseWipeout_1032] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBaseWipeout_1033] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBaseWipeout_1034] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBaseWipeout_1035] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBaseWipeout_1036] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBaseWipeout_1037] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBaseWipeout_1038] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBaseWipeout_1039] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBaseWipeout_1040] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBaseWipeout_1041] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBaseWipeout_1042] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBaseWipeout_1043] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBaseWipeout_1044] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBaseWipeout_1045] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBaseWipeout_1046] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBaseWipeout_1047] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBaseWipeout_1048] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBaseWipeout_1049] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBaseWipeout_1050] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBaseWipeout_1051] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBaseWipeout_1052] = new MyCueParameters(false, null, false);\n\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBase2_1000] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBase2_1001] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBase2_1002] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBase2_1003] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBase2_1004] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBase2_1005] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBase2_1006] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBase2_1007] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBase2_1008] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBase2_1009] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBase2_1010] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBase2_1011] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBase2_1012] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBase2_1013] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBase2_1014] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBase2_1015] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBase2_1016] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBase2_1017] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBase2_1018] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBase2_1019] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBase2_1020] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBase2_1021] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBase2_1022] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBase2_1023] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBase2_1024] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBase2_1025] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBase2_1026] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBase2_1027] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBase2_1028] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBase2_1029] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBase2_1030] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBase2_1031] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBase2_1032] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBase2_1033] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBase2_1034] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBase2_1035] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBase2_1036] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBase2_1037] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBase2_1038] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBase2_1039] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBase2_1040] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBase2_1041] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBase2_1042] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBase2_1043] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_SlaverBase2_1044] = new MyCueParameters(false, null, false);\n\n\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1000] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1001] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1002] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1003] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1004] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1005] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1006] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1007] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1008] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1009] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1010] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1011] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1012] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1013] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1014] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1015] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1016] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1017] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1018] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1019] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1020] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1021] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1022] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1023] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1024] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1025] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1026] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1027] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1028] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1029] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1030] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1031] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1032] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1033] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1034] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1035] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1036] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1037] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1038] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1039] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1040] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1041] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1042] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1043] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1044] = new MyCueParameters(false, null, false);\n\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1000] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1001] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1002] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1003] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1004] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1005] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1006] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1007] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1008] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1009] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1010] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1011] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1012] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1013] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1014] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1015] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1016] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1017] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1018] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1019] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1020] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1021] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1022] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1023] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1024] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1025] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1026] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1027] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1028] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1029] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1030] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1031] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1032] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1033] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1034] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1035] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1036] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1037] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1038] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1039] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1040] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1041] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1042] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1043] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1044] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1045] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1046] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1047] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1048] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1049] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1050] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1051] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1052] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1053] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1054] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1055] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1056] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1057] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1058] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1059] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1060] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1061] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1062] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1063] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1064] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1065] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1066] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1067] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1068] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1069] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1070] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1071] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1072] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1073] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1074] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1075] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1076] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1077] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1078] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1079] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1080] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1081] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1082] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1083] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1084] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1085] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1086] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1087] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1088] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1089] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1090] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1091] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1092] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1093] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1094] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1095] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1096] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1097] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1098] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1099] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1100] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1101] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1102] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1103] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1104] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1105] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1106] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1107] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1108] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1109] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1110] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1111] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1112] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1113] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1114] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1115] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1116] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1117] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1118] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1119] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1120] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1121] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1122] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1123] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1124] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1125] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1126] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1127] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1128] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1129] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1130] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1131] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_TwinTowers_1132] = new MyCueParameters(false, null, false);\n\n\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1000] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1001] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1002] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1003] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1004] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1005] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1006] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1007] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1008] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1009] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1010] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1011] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1012] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1013] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1014] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1015] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1016] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1017] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1018] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1019] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1020] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1021] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1022] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1023] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1024] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1025] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1026] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1027] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1028] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1029] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1030] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1031] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1032] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1033] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1034] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1035] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1036] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1037] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1038] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1039] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1040] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1041] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1042] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1043] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_WhiteWolvesBioResearch_1044] = new MyCueParameters(false, null, false);\n\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1000] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1001] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1002] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1003] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1004] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1005] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1006] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1007] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1008] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1009] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1010] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1011] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1012] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1013] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1014] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1015] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1016] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1017] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1018] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1019] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1020] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1021] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1022] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1023] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1024] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1025] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1026] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1027] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1028] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1029] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1030] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1031] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1032] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1033] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1034] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1035] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1036] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1037] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1038] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1039] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1040] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1041] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1042] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1043] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1044] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1045] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1046] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1047] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1048] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1049] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1050] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1051] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1052] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1053] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1054] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1055] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1056] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1057] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1058] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1059] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1060] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1061] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1062] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1063] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1064] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1065] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1066] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1067] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1068] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1069] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1070] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1071] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1072] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1073] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1074] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1075] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1076] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1077] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1078] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1079] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1080] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1081] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1082] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1083] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1084] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1085] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1086] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1087] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1088] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1089] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1090] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1091] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1092] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1093] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1094] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1095] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1096] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1097] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1098] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1099] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1100] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1101] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1102] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1103] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1104] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1105] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1106] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1107] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1108] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1109] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1110] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1111] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1112] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1113] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1114] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1115] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1116] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1117] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1118] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1119] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1120] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1121] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1122] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1123] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1124] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1125] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1126] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1127] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1128] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1129] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1130] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1131] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1132] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1133] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1134] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1135] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1136] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1137] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1138] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1139] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1140] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1141] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1142] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1143] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1144] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1145] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1146] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1147] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RimeConvince_1148] = new MyCueParameters(false, null, false);\n\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Rift_1000] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Rift_1001] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Rift_1002] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Rift_1003] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Rift_1004] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Rift_1005] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Rift_1006] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Rift_1007] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Rift_1008] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Rift_1009] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Rift_1010] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Rift_1011] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Rift_1012] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Rift_1013] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Rift_1014] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Rift_1015] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Rift_1016] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Rift_1017] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Rift_1018] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Rift_1019] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Rift_1020] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Rift_1021] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Rift_1022] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Rift_1023] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Rift_1024] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Rift_1025] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Rift_1026] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Rift_1027] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Rift_1028] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Rift_1029] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Rift_1030] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Rift_1031] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Rift_1032] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Rift_1033] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Rift_1034] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Rift_1035] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Rift_1036] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Rift_1037] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Rift_1038] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Rift_1039] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Rift_1040] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Rift_1041] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Rift_1042] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Rift_1043] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Rift_1044] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Rift_1045] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Rift_1046] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Rift_1047] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Rift_1048] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Rift_1049] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Rift_1050] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Rift_1051] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Rift_1052] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Rift_1053] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Rift_1054] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Rift_1055] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Rift_1056] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Rift_1057] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Rift_1058] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Rift_1059] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Rift_1060] = new MyCueParameters(false, null, false);\n\n\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1000] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1001] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1002] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1003] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1004] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1005] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1006] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1007] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1008] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1009] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1010] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1011] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1012] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1013] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1014] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1015] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1016] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1017] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1018] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1019] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1020] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1021] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1022] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1023] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1024] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1025] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1026] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1027] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1028] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1029] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1030] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1031] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1032] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1033] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1034] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1035] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1036] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1037] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1038] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1039] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1040] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1041] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1042] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1043] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1044] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1045] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1046] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1047] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1048] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1049] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1050] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1051] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1052] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1053] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1054] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1055] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1056] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1057] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1058] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1059] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1060] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1061] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1062] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1063] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1064] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1065] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1066] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1067] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1068] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1069] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1070] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1071] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1072] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1073] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1074] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1075] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1076] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1077] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1078] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1079] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1080] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1081] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1082] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1083] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1084] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1085] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1086] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1087] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1088] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1089] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1090] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1091] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1092] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1093] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1094] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1095] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1096] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1097] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1098] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1099] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1100] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1101] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1102] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1103] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1104] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1105] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1106] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1107] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1108] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1109] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1110] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianTransmitter_1111] = new MyCueParameters(false, null, false);\n\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1001] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1002] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1003] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1004] = new MyCueParameters(false, null, true);\n\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1005] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1006] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1007] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1008] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1009] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1010] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1011] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1012] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1013] = new MyCueParameters(false, null, true);\n\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1013] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1014] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1015] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1016] = new MyCueParameters(false, null, true);\n\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1018] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1019] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1020] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1021] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1022] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1023] = new MyCueParameters(false, null, true);\n\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1024] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1025] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1026] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1027] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1028] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1029] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1030] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1031] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1032] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1033] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1034] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1035] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1036] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1037] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1038] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1039] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1040] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1041] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1042] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1043] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1044] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1045] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1046] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1047] = new MyCueParameters(false, null, true);\n\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1048] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1049] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1050] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1051] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1052] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1053] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1054] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1055] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1056] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1057] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1058] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1059] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1060] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1061] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1062] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1063] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1064] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1065] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1066] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1067] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1068] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1069] = new MyCueParameters(false, null, true);\n\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1070] = new MyCueParameters(false, null, true);\n\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1071] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1072] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1073] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1074] = new MyCueParameters(false, null, true);\n\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1075] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1076] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1077] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1078] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1079] = new MyCueParameters(false, null, true);\n\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1079b] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1080] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1081] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1082] = new MyCueParameters(false, null, true);\n\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1083] = new MyCueParameters(false, null, true);\n\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1084] = new MyCueParameters(false, null, true);\n\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1085] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1086] = new MyCueParameters(false, null, true);\n\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1087] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1088] = new MyCueParameters(false, null, true);\n\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1089] = new MyCueParameters(false, null, true);\n\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1090] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1091] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1092] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1093] = new MyCueParameters(false, null, true);\n\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1094] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1095] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1096] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1097] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1098] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1099] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1100] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1101] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1102] = new MyCueParameters(false, null, true);\n\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1103] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1104] = new MyCueParameters(false, null, true);\n\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1105] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1106] = new MyCueParameters(false, null, true);\n\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1107] = new MyCueParameters(false, null, true);\n\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1108] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1109] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1110] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1111] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1112] = new MyCueParameters(false, null, true);\n\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1113] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1114] = new MyCueParameters(false, null, true);\n\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1115] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1116] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1117] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1118] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1119] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1120] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1121] = new MyCueParameters(false, null, true);\n\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1122] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1123] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1124] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1125] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1126] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1127] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1128] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1129] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1130] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1131] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1132] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1133] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1134] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1135] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1136] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1137] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1138] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1139] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1140] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1141] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1142] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1143] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1144] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1145] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1146] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1147] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1148] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1149] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1150] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1151] = new MyCueParameters(false, null, true);\n\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1152] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1153] = new MyCueParameters(false, null, true);\n\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1154] = new MyCueParameters(false, null, true);\n\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1155] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1156] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1157] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1158] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1159] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1160] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1161] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1162] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1163] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1164] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1165] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1166] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1167] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1168] = new MyCueParameters(false, null, true);\n\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1169] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1170] = new MyCueParameters(false, null, true);\n\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1171] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1172] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1173] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1174] = new MyCueParameters(false, null, true);\n\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1175] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1176] = new MyCueParameters(false, null, true);\n\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1177] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1178] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1179] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1180] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1181] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1182] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1183] = new MyCueParameters(false, null, true);\n\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1184] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1185] = new MyCueParameters(false, null, true);\n\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1186] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1187] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1188] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1189] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1190] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1191] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1192] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1193] = new MyCueParameters(false, null, true);\n\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1194] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1195] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1196] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1197] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1198] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1199] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1200] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1201] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1202] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1203] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1204] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1205] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1206] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1207] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1208] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1209] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1210] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1211] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1212] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1213] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1214] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonTransmitter_1215] = new MyCueParameters(false, null, true);\n\n\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiant_1000] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiant_1001] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiant_1002] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiant_1003] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiant_1004] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiant_1005] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiant_1006] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiant_1007] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiant_1008] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiant_1009] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiant_1010] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiant_1011] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiant_1012] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiant_1013] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiant_1014] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiant_1015] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiant_1016] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiant_1017] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiant_1018] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiant_1019] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiant_1020] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiant_1021] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiant_1022] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiant_1023] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiant_1024] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiant_1025] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiant_1026] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiant_1027] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiant_1028] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiant_1029] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiant_1030] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiant_1031] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiant_1032] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiant_1033] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiant_1034] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiant_1035] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiant_1036] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiant_1037] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiant_1038] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiant_1039] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiant_1040] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiant_1041] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiant_1042] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiant_1043] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiant_1044] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiant_1045] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiant_1046] = new MyCueParameters(false, null, true);\n\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantB_1000] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantB_1001] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantB_1002] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantB_1003] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantB_1004] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantB_1005] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantB_1006] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantB_1007] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantB_1008] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantB_1009] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantB_1010] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantB_1011] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantB_1012] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantB_1013] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantB_1014] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantB_1015] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantB_1016] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantB_1017] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantB_1018] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantB_1019] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantB_1020] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantB_1021] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantB_1022] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantB_1023] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantB_1024] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantB_1025] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantB_1026] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantB_1027] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantB_1028] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantB_1029] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantB_1030] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantB_1031] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantB_1032] = new MyCueParameters(false, null, true);\n\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagA_1000] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagA_1001] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagA_1002] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagA_1003] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagA_1004] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagA_1005] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagA_1006] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagA_1007] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagA_1008] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagA_1009] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagA_1010] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagA_1011] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagA_1012] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagA_1013] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagA_1014] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagA_1015] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagA_1016] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagA_1017] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagA_1018] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagA_1019] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagA_1020] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagA_1021] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagA_1022] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagA_1023] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagA_1024] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagA_1025] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagA_1026] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagA_1027] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagA_1028] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagA_1029] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagA_1030] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagA_1031] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagA_1032] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagA_1033] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagA_1034] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagA_1035] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagA_1036] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagA_1037] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagA_1038] = new MyCueParameters(false, null, true);\n\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagC_1000] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagC_1001] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagC_1002] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagC_1003] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagC_1004] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagC_1005] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagC_1006] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagC_1007] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagC_1008] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagC_1009] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagC_1010] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagC_1011] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagC_1012] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagC_1013] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagC_1014] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagC_1015] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagC_1016] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagC_1017] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagC_1018] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagC_1019] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagC_1020] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagC_1021] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagC_1022] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagC_1022_2] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagC_1023] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagC_1024] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagC_1025] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagC_1026] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagC_1027] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagC_1028] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagC_1029] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagC_1030] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagC_1031] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagC_1032] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagC_1033] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagC_1034] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagC_1035] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagC_1036] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagC_1037] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagC_1038] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagC_1039] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagC_1040] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagC_1041] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagC_1042] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagC_1043] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagC_1044] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagC_1045] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagC_1046] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagC_1047] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagC_1048] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagC_1049] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagC_1050] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagC_1051] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagC_1052] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagC_1053] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagC_1054] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagC_1055] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagC_1056] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagC_1057] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagC_1058] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagC_1059] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagC_1060] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagC_1061] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagC_1062] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagC_1063] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagC_1064] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ReichstagC_1065] = new MyCueParameters(false, null, true);\n\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1000] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1001] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1002] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1003] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1004] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1005] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1006] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1007] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1008] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1009] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1010] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1011] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1012] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1013] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1014] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1015] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1016] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1017] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1018] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1019] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1020] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1021] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1022] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1023] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1024] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1025] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1026] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1027] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1028] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1029] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1030] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1031] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1032] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1033] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1034] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1035] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1036] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1037] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1038] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1039] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1040] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1041] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1042] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1043] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1044] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1045] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1046] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1047] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1048] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1049] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1050] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1051] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1052] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1053] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1054] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1055] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1056] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1057] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1058] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1059] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1060] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1061] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1062] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1063] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1064] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1065] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1066] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1067] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1068] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1069] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1070] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1071] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1072] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1073] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1074] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1075] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1076] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1077] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1078] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1079] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1080] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1081] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1082] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1083] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1084] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1085] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1086] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1087] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacPrison_1088] = new MyCueParameters(false, null, true);\n\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseEscape_1000] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseEscape_1001] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseEscape_1002] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseEscape_1003] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseEscape_1004] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseEscape_1005] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseEscape_1006] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseEscape_1007] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseEscape_1008] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseEscape_1009] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseEscape_1010] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseEscape_1011] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseEscape_1012] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseEscape_1013] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseEscape_1014] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseEscape_1015] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseEscape_1016] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseEscape_1017] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseEscape_1018] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseEscape_1019] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseEscape_1020] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseEscape_1021] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseEscape_1022] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseEscape_1023] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseEscape_1024] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseEscape_1025] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseEscape_1026] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ChineseEscape_1027] = new MyCueParameters(false, null, true);\n\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ResearchVessel_1000] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ResearchVessel_1001] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ResearchVessel_1002] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ResearchVessel_1003] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ResearchVessel_1004] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ResearchVessel_1005] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ResearchVessel_1006] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ResearchVessel_1007] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ResearchVessel_1008] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ResearchVessel_1009] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ResearchVessel_1010] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ResearchVessel_1011] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ResearchVessel_1012] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ResearchVessel_1013] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ResearchVessel_1014] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ResearchVessel_1015] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ResearchVessel_1016] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ResearchVessel_1017] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ResearchVessel_1018] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ResearchVessel_1019] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ResearchVessel_1020] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ResearchVessel_1021] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ResearchVessel_1022] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ResearchVessel_1023] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ResearchVessel_1024] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ResearchVessel_1025] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ResearchVessel_1026] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ResearchVessel_1027] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ResearchVessel_1028] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ResearchVessel_1029] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ResearchVessel_1030] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ResearchVessel_1031] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ResearchVessel_1032] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ResearchVessel_1033] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ResearchVessel_1034] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ResearchVessel_1035] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ResearchVessel_1036] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ResearchVessel_1037] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ResearchVessel_1038] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ResearchVessel_1039] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ResearchVessel_1040] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ResearchVessel_1041] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ResearchVessel_1042] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ResearchVessel_1043] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ResearchVessel_1044] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ResearchVessel_1045] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ResearchVessel_1046] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ResearchVessel_1047] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ResearchVessel_1048] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ResearchVessel_1049] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ResearchVessel_1050] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ResearchVessel_1051] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ResearchVessel_1052] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ResearchVessel_1053] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ResearchVessel_1054] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ResearchVessel_1055] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_ResearchVessel_1056] = new MyCueParameters(false, null, true);\n\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1000] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1001] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1002] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1003] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1004] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1005] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1006] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1007] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1008] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1009] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1010] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1011] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1012] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1013] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1014] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1015] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1016] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1017] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1018] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1019] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1020] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1021] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1022] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1023] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1024] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1025] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1026] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1027] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1028] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1029] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1030] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1031] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1032] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1033] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1035] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1036] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1037] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1038] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1039] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1040] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1041] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1042] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1043] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1044] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1045] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1046] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1047] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1048] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1049] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1050] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1051] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1052] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1053] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1054] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1055] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1056] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1057] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1058] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1059] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1060] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1061] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1062] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1063] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1064] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1065] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1066] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1067] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1068] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1069] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1070] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1071] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1072] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1073] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1074] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1075] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1076] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1077] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1078] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1079] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1080] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1081] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1082] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1084] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1085] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1086] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1087] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1088] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1089] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1090] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1091] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1092] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1093] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1094] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1095] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1096] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1097] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1098] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1099] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1100] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1101] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1102] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1103] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1104] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1105] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1106] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1107] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1108] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1109] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1110] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1111] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1112] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1113] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1114] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1115] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1116] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1117] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1118] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1119] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1120] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1121] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1122] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1123] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1124] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1125] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_Laika_1126] = new MyCueParameters(false, null, true);\n\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1000] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1001] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1002] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1003] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1004] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1005] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1006] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1007] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1008] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1009] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1010] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1011] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1012] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1013] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1014] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1015] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1016] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1017] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1018] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1019] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1020] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1021] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1022] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1023] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1024] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1025] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1026] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1027] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1028] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1029] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1030] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1031] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1032] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1033] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1034] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1035] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1036] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1037] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1038] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1039] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1040] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1041] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1042] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1043] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1044] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1045] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1046] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1047] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1048] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1049] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1050] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1051] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1052] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1053] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1054] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1055] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1056] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1057] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1058] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1059] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1060] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1061] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1062] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1063] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1064] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1065] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1066] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1067] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1068] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1069] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1070] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1071] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1072] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1073] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1074] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1075] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1076] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1077] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1078] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1079] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1080] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1081] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1082] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1083] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1084] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1085] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1086] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1087] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1088] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1089] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1090] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1091] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1092] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1093] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1094] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1095] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1096] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1097] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1098] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1099] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1100] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1101] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1102] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1103] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1104] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1105] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1106] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1107] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1108] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1109] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1110] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1111] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1112] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1113] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1114] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1115] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1116] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1117] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1118] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1119] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1120] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1121] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1122] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1123] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1124] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1125] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonPlant_1126] = new MyCueParameters(false, null, true);\n\n\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1000] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1001] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1002] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1003] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1004] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1005] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1006] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1007] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1008] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1009] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1010] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1011] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1012] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1013] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1014] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1015] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1016] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1017] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1018] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1019] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1020] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1021] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1022] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1023] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1024] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1025] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1026] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1027] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1028] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1029] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1030] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1031] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1032] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1033] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1034] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1035] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1036] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1037] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1038] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1039] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1040] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1041] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1042] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1043] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1044] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1045] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1046] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1047] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1048] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1049] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1050] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1051] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1052] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1053] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1054] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1055] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1056] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1057] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1058] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1059] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1060] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1061] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1062] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1063] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1064] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1065] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1066] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1067] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1068] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1069] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1070] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1071] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1072] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1073] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1074] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1075] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1076] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1077] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1078] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1079] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1080] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1081] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1082] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1083] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1084] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1085] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1086] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1087] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1088] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1089] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1090] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1091] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1092] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1093] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1094] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1095] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1096] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1097] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1098] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1099] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1100] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1101] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1102] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1103] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1104] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1105] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1106] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1107] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1108] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1109] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1110] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1111] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1112] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1113] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1114] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1115] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1116] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1117] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1118] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1119] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1120] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1121] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1122] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1123] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1124] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1125] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1126] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1127] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1128] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1129] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1130] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1131] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1132] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1133] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1134] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1135] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1136] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1137] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_FortValiantC_1138] = new MyCueParameters(false, null, true);\n\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1000] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1001] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1002] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1003] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1004] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1005] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1006] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1007] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1008] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1009] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1010] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1011] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1012] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1013] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1014] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1015] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1016] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1017] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1018] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1019] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1020] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1021] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1022] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1023] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1024] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1025] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1026] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1027] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1028] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1029] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1030] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1031] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1032] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1033] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1034] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1035] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1036] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1037] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1038] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1038_2] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1039] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1040] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1041] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1042] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1043] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1044] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1045] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1046] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1047] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1048] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1049] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1050] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1051] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1052] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1053] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1054] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1055] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1056] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1057] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1058] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1059] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1060] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1061] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1062] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1063] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1064] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1065] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1066] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1067] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1067_2] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1068] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1069] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1070] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1071] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1072] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1073] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1074] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1075] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1076] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1077] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1078] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1079] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1080] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1081] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1082] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1083] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1084] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1085] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1086] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1087] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1088] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1089] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1090] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1091] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1092] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1093] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1094] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1095] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1096] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1097] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1098] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1099] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1100] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1101] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1102] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1103] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1104] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1105] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1106] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1107] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1108] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1109] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1110] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1111] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1112] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1113] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1114] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1115] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1116] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1117] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1118] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1119] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1120] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1121] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1122] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1123] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1124] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1125] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1126] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1127] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1128] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1129] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1130] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1131] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1132] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1133] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1134] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1135] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1136] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1137] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1138] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1139] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1140] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1141] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1142] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1143] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1144] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1145] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1146] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1147] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1148] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1149] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1150] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1151] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1152] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1153] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1154] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1155] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1156] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1157] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1158] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1159] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1160] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1161] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1162] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1163] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1164] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1165] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_AlienGate_1166] = new MyCueParameters(false, null, true);\n\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1000] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1001] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1002] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1003] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1004] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1005] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1006] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1007] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1008] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1009] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1010] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1011] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1012] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1013] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1014] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1015] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1016] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1017] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1018] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1019] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1020] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1021] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1022] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1023] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1024] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1025] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1026] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1027] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1028] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1029] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1030] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1031] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1032] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1033] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1034] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1035] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1036] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1037] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1038] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1039] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1040] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1041] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1042] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1043] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1044] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1045] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1046] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1047] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1048] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1049] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1050] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1051] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1052] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1053] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1054] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1055] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1056] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1057] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1058] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1059] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1060] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1061] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1062] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1063] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1064] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1065] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1066] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1067] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1068] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1069] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1070] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1071] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1072] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1073] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1074] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1075] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1076] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1077] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1078] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1079] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1080] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1081] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1082] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1083] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1084] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1085] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1086] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1087] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1088] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1089] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1090] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1091] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1092] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1093] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1094] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1095] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1096] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1097] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1098] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1099] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1100] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1101] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1102] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1103] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1104] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1105] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1106] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1107] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1108] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1109] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1110] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1111] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1112] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1113] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1114] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1115] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1116] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1117] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1118] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1119] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1120] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1121] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1122] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1123] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1124] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1125] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1126] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1127] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1128] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1129] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1130] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1131] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1132] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1133] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1134] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1135] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1136] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1137] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1138] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1139] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1140] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1141] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1142] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1143] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1144] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1145] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1146] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1147] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1148] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1149] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1150] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1151] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1152] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1153] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1154] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1155] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1156] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1157] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1158] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1159] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_PirateBase_1160] = new MyCueParameters(false, null, true);\n\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1000] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1001] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1002] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1003] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1004] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1005] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1006] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1007] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1008] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1009] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1010] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1011] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1012] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1013] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1014] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1015] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1016] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1017] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1018] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1019] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1020] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1021] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1022] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1023] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1024] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1025] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1026] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1027] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1028] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1029] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1030] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1031] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1032] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1033] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1034] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1035] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1036] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1037] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1038] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1039] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1040] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1041] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1042] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1043] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1044] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1045] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1046] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1047] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1048] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1049] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1050] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1051] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1052] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1053] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1054] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1055] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1056] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1057] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1058] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1059] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1060] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1061] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1062] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1063] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1064] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1065] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1066] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1067] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1068] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1069] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1070] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1071] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1072] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1073] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1074] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1075] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1076] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1077] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1078] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1079] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1080] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1081] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1082] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1083] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1084] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1085] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1086] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1087] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1088] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1089] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1090] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1091] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1092] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1093] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1094] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1095] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1096] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1097] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1098] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1099] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1100] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1101] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1102] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1103] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1104] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1105] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1106] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1107] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1108] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1109] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1110] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_BarthsMoonConvince_1111] = new MyCueParameters(false, null, true);\n\n\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1000] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1001] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1002] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1003] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1004] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1005] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1006] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1007] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1008] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1009] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1010] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1011] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1012] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1013] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1014] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1015] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1016] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1017] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1018] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1019] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1020] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1021] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1022] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1023] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1024] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1025] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1026] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1027] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1028] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1029] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1030] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1031] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1032] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1034] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1035] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1036] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1037] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1038] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1039] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1040] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1041] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1042] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1043] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1044] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1045] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1046] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1047] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1048] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1049] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1050] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1051] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1052] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1053] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1054] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1055] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1056] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1057] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1058] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1059] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1060] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1061] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1062] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1063] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1064] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1065] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1066] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1067] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1068] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1069] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1070] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1071] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1072] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1073] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1074] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1075] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1076] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1077] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1078] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1079] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1080] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1081] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1082] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1083] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1084] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1085] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1086] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1087] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1088] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1089] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1090] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1091] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1092] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1093] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1094] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1095] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1096] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1097] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1098] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1099] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1100] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1101] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1102] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1103] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1104] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1105] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1106] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1107] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1108] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1109] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1110] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1111] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1112] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1113] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1114] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1115] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1116] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1117] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1118] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1119] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1120] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1121] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1122] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1123] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1124] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1125] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1126] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1127] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1128] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1129] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1130] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1131] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1132] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1133] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1134] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1135] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1136] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1137] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1138] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1139] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1140] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1141] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1142] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1143] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1144] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1145] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1146] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1147] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1148] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1149] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardConvince_1150] = new MyCueParameters(false, null, true);\n\n\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1000] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1001] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1002] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1003] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1004] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1005] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1006] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1007] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1008] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1009] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1010] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1011] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1012] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1013] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1014] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1015] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1016] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1017] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1018] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1019] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1020] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1021] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1022] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1023] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1024] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1025] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1026] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1027] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1038] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1039] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1040] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1041] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1042] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1043] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1044] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1045] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1046] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1047] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1048] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1049] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1050] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1051] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1052] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1053] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1054] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1055] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1056] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1057] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1058] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1059] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1060] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1061] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1062] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1063] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1064] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1065] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1066] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1067] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1068] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1069] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1070] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1071] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1072] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1073] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1074] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1075] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1076] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1077] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1078] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1079] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1080] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1081] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1082] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1083] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1084] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1085] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1086] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1087] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1088] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1089] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1090] = new MyCueParameters(false, null, true);\n\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1000] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1001] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1002] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1003] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1004] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1005] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1006] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1007] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1008] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1009] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1010] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1011] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1012] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1013] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1014] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1015] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1016] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1017] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1018] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1019] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1020] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1021] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1022] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1023] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1024] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1025] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1026] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1027] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1028] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1029] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1030] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1031] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1032] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1033] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1034] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1035] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1036] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1037] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1038] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1039] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1040] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1041] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1042] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1043] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1044] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1045] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1046] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1047] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1048] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1049] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1050] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1051] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1052] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1053] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1054] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1055] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1056] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1057] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1058] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1059] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1060] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1061] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1062] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1063] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1064] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1065] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1066] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1067] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1068] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1069] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1070] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1071] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1072] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1073] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1074] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1075] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1076] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1077] = new MyCueParameters(false, null, true);\n\n\n\n\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1082] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1083] = new MyCueParameters(false, null, true);\n\n\n\n\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1088] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1089] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1090] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1091] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1092] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1093] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1094] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1095] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1096] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1097] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1098] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1099] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1100] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1101] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1102] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1103] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1104] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1105] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1106] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1107] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1108] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1109] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1110] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1111] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1112] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1113] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1114] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1115] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1116] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1117] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1118] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1119] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1120] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1121] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1122] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1123] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1124] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1125] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1126] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1127] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1128] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1129] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1130] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1131] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1132] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1133] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_LastHope_1134] = new MyCueParameters(false, null, true);\n\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianWarehouse_1000] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianWarehouse_1001] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianWarehouse_1002] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianWarehouse_1003] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianWarehouse_1004] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianWarehouse_1005] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianWarehouse_1006] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianWarehouse_1007] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianWarehouse_1008] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianWarehouse_1009] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianWarehouse_1010] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianWarehouse_1011] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianWarehouse_1012] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianWarehouse_1013] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianWarehouse_1014] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianWarehouse_1015] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianWarehouse_1016] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianWarehouse_1017] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianWarehouse_1018] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianWarehouse_1019] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianWarehouse_1020] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianWarehouse_1021] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianWarehouse_1022] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianWarehouse_1023] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianWarehouse_1024] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianWarehouse_1025] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianWarehouse_1026] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianWarehouse_1027] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianWarehouse_1028] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianWarehouse_1029] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianWarehouse_1030] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianWarehouse_1031] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianWarehouse_1032] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianWarehouse_1033] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianWarehouse_1034] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianWarehouse_1035] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianWarehouse_1036] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianWarehouse_1037] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianWarehouse_1038] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianWarehouse_1039] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianWarehouse_1040] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianWarehouse_1041] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianWarehouse_1042] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianWarehouse_1043] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianWarehouse_1044] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianWarehouse_1045] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianWarehouse_1046] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianWarehouse_1047] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianWarehouse_1048] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianWarehouse_1049] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianWarehouse_1050] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianWarehouse_1051] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianWarehouse_1052] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianWarehouse_1053] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianWarehouse_1054] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianWarehouse_1055] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianWarehouse_1056] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianWarehouse_1057] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianWarehouse_1058] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianWarehouse_1059] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianWarehouse_1060] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianWarehouse_1061] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_RussianWarehouse_1062] = new MyCueParameters(false, null, true);\n\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1000] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1001] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1002] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1003] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1004] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1005] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1006] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1007] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1008] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1009] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1010] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1011] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1012] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1013] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1014] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1015] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1016] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1017] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1018] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1019] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1020] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1021] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1022] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1023] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1024] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1025] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1026] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1027] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1028] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1029] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1030] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1031] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1032] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1033] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1034] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1035] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1036] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1037] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1038] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1039] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1040] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1041] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1042] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1043] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1044] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1045] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1046] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1047] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1048] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1049] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1050] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1051] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1052] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1053] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1054] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1055] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1056] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1057] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1058] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1059] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1060] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1061] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1062] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1063] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1064] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1065] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1066] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1067] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1068] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1069] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1070] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1071] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1072] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1073] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1074] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1075] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1076] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1077] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1078] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1079] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1080] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1081] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1082] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1083] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1084] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1085] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1086] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1087] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1088] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1089] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1090] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1091] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1092] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1093] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1094] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1095] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1096] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1097] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1098] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1099] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1100] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1101] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1102] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1103] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1104] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1105] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1106] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1107] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1108] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1109] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1110] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1111] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1112] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1113] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1114] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1115] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1116] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1117] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1118] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1119] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1120] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1121] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1122] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1123] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1124] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1125] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1126] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1127] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1128] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1129] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1130] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1131] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1132] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1133] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1134] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1135] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1136] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardEacAmbush_1137] = new MyCueParameters(false, null, true);\n\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacTransmitter_1000] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacTransmitter_1001] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacTransmitter_1002] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacTransmitter_1003] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacTransmitter_1004] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacTransmitter_1005] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacTransmitter_1006] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacTransmitter_1007] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacTransmitter_1008] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacTransmitter_1009] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacTransmitter_1010] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacTransmitter_1011] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacTransmitter_1012] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacTransmitter_1013] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacTransmitter_1014] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacTransmitter_1015] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacTransmitter_1016] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacTransmitter_1017] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacTransmitter_1018] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacTransmitter_1019] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacTransmitter_1020] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacTransmitter_1021] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacTransmitter_1022] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacTransmitter_1023] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacTransmitter_1024] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacTransmitter_1025] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacTransmitter_1026] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacTransmitter_1027] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacTransmitter_1028] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacTransmitter_1029] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacTransmitter_1030] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacTransmitter_1031] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacTransmitter_1032] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacTransmitter_1033] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacTransmitter_1034] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacTransmitter_1035] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacTransmitter_1036] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacTransmitter_1037] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacTransmitter_1038] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacTransmitter_1039] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacTransmitter_1040] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacTransmitter_1041] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacTransmitter_1042] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacTransmitter_1043] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacTransmitter_1044] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacTransmitter_1045] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacTransmitter_1046] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacTransmitter_1047] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacTransmitter_1048] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacTransmitter_1049] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacTransmitter_1050] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacTransmitter_1051] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacTransmitter_1052] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacTransmitter_1053] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacTransmitter_1054] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacTransmitter_1055] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacTransmitter_1056] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacTransmitter_1057] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacTransmitter_1058] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacTransmitter_1059] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacTransmitter_1060] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacTransmitter_1061] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacTransmitter_1062] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacTransmitter_1063] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacTransmitter_1064] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacTransmitter_1065] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacTransmitter_1066] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacTransmitter_1067] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacTransmitter_1068] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacTransmitter_1069] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacTransmitter_1070] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacTransmitter_1071] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_EacTransmitter_1072] = new MyCueParameters(false, null, true);\n\n\n            m_cueParameters[(int)MySoundCuesEnum.Sht_Reich_JE_ForTheFuture] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Sht_Reich_JE_Vanquish] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Sht_Reich_JE_WeControl] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Sht_Reich_JE_YouAreTheWeakLink] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Sht_Reich_JE_YourFinalDay] = new MyCueParameters(false, null, false);\n\n            m_cueParameters[(int)MySoundCuesEnum.Sht_Russian_JE_DasVidanya] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Sht_Russian_JE_ForKremlin] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Sht_Russian_JE_ForMotherland] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Sht_Russian_JE_Harasho] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Sht_Russian_JE_ShootThem] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Sht_Russian_JE_TovaryshRemember] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Sht_Russian_JE_UnitedAndMighty] = new MyCueParameters(false, null, false);\n\n            m_cueParameters[(int)MySoundCuesEnum.SfxTakeAllUniversal] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.SfxTakeAllAmmo] = new MyCueParameters(false, null, false);\n            //m_cueParameters[(int)MySoundCuesEnum.SfxTakeAllEnergy] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.SfxTakeAllFuel] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.SfxTakeAllMedkit] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.SfxTakeAllOxygen] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.SfxTakeAllRepair] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.SfxAcquireWeaponOff] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.SfxAcquireWeaponOn] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.SfxAcquireDroneOff] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.SfxAcquireDroneOn] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.SfxAcquireCameraOff] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.SfxAcquireCameraOn] = new MyCueParameters(false, null, false);\n\n            m_cueParameters[(int)MySoundCuesEnum.HudAmmoNoWarning] = new MyCueParameters(false, null, false, DISTANCE_250_METERS, true);\n            m_cueParameters[(int)MySoundCuesEnum.HudArmorNoWarning] = new MyCueParameters(false, null, false, DISTANCE_250_METERS, true);\n            m_cueParameters[(int)MySoundCuesEnum.HudOxygenLeakingWarning] = new MyCueParameters(false, null, false, DISTANCE_250_METERS, true);\n            m_cueParameters[(int)MySoundCuesEnum.VehLoopLargeShip] = new MyCueParameters(false, null, true, DISTANCE_1000_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.VehLoopLargeShipMadelyn] = new MyCueParameters(false, null, true, DISTANCE_1000_METERS);\n\n            m_cueParameters[(int)MySoundCuesEnum.SfxMeteorFly] = new MyCueParameters(false, null, true, DISTANCE_15000_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.SfxMeteorExplosion] = new MyCueParameters(true, null, false, DISTANCE_15000_METERS);\n\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_RacingFans] = new MyCueParameters(false, null, false, DISTANCE_500_METERS);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_RedHeat2] = new MyCueParameters(false, null, false, DISTANCE_500_METERS);\n\n            m_cueParameters[(int)MySoundCuesEnum.SfxVoxelCrack] = new MyCueParameters(true, null, false, false);\n            m_cueParameters[(int)MySoundCuesEnum.SfxScanner] = new MyCueParameters(true, null, false);\n\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_Electrical01] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_Electrical02] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_EngineThrust] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_FanLargeDamaged] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_FanLargeDestroyed] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_FanLargeNormal] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_FanMediumDamaged] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_FanMediumDestroyed] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_FanMediumNormal] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_FanSmallDamaged] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_FanSmallDestroyed] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_FanSmallNormal] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_GenLargeDamaged] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_GenLargeDestroyed] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_GenLargeNormal] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_GenMediumDamaged] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_GenMediumDestroyed] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_GenMediumNormal] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_GenSmallDamaged] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_GenSmallDestroyed] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_GenSmallNormal] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_GenXend] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_GenXloop] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_GenXstart] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_PipeFlow01] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_PrefabFire01] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_RadioChatterAL01] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_RadioChatterAL02] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_RadioChatterAL03] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_RadioChatterAL04] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_RadioChatterAL05] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_RadioChatterAL06] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_RadioChatterAL07] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_RadioChatterAL08] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_RadioChatterAL09] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_RadioChatterAL10] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_RadioChatterAL11] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_RadioChatterAL12] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_RadioChatterAL13] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_RadioChatterAL14] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_RadioChatterAL15] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_RadioChatterAL16] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_RadioChatterCH01] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_RadioChatterCH02] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_RadioChatterCH03] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_RadioChatterCH04] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_RadioChatterCH05] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_RadioChatterCH06] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_RadioChatterCH07] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_RadioChatterCH08] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_RadioChatterCH09] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_RadioChatterCH10] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_RadioChatterCH11] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_RadioChatterCH12] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_RadioChatterCH13] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_RadioChatterCH14] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_RadioChatterCH15] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_RadioChatterCH16] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_RadioChatterRS01] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_RadioChatterRS02] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_RadioChatterRS03] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_RadioChatterRS04] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_RadioChatterRS05] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_RadioChatterRS06] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_RadioChatterRS07] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_RadioChatterRS08] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_RadioChatterRS09] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_RadioChatterRS10] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_RadioChatterRS11] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_RadioChatterRS12] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_RadioChatterRS13] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_RadioChatterRS14] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_RadioChatterRS15] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_RadioChatterRS16] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_Spark01] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_SteamDischarge01] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_SteamDischarge02] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_SteamDischarge03] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_SteamDischarge04] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_SteamLoop01] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_SteamLoop02] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_SteamLoop03] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_SteamLoop04] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_SteamLoop05] = new MyCueParameters(false, null, true);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_Temple1] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_Temple2] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_Temple3] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_ThunderClapLarge01] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_ThunderClapMed01] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_ThunderClapMed02] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_ThunderClapMed03] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_ThunderClapMed04] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_ThunderClapSmall01] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_ThunderClapSmall02] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_ThunderClapSmall03] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_ThunderClapSmall04] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Amb2D_Welding01] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1028] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1029] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1030] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1031] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1032] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1033] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1034] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1035] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1036] = new MyCueParameters(false, null, false);\n            m_cueParameters[(int)MySoundCuesEnum.Dlg_JunkyardReturn_1037] = new MyCueParameters(false, null, false);\n\n            AddMusicCategory(MyMusicTransitionEnum.CalmAtmosphere, \"MM01\", MySoundCuesEnum.MusCalmAtmosphere_MM01);\n            AddMusicCategory(MyMusicTransitionEnum.CalmAtmosphere, \"MM02\", MySoundCuesEnum.MusCalmAtmosphere_MM02);\n            AddMusicCategory(MyMusicTransitionEnum.CalmAtmosphere, \"MM_b\", MySoundCuesEnum.MusCalmAtmosphere_MM_b);\n            AddMusicCategory(MyMusicTransitionEnum.CalmAtmosphere, \"KA01\", MySoundCuesEnum.MusCalmAtmosphere_KA01);\n            AddMusicCategory(MyMusicTransitionEnum.CalmAtmosphere, \"KA02\", MySoundCuesEnum.MusCalmAtmosphere_KA02);\n            AddMusicCategory(MyMusicTransitionEnum.CalmAtmosphere, \"KA03\", MySoundCuesEnum.MusCalmAtmosphere_KA03);\n            AddMusicCategory(MyMusicTransitionEnum.CalmAtmosphere, \"KA05\", MySoundCuesEnum.MusCalmAtmosphere_KA05);\n            AddMusicCategory(MyMusicTransitionEnum.DesperateWithStress, \"MM01\", MySoundCuesEnum.MusDesperateWithStress_MM01);\n            AddMusicCategory(MyMusicTransitionEnum.DesperateWithStress, \"KA01\", MySoundCuesEnum.MusDesperateWithStress_KA01);\n            AddMusicCategory(MyMusicTransitionEnum.DesperateWithStress, \"KA02\", MySoundCuesEnum.MusDesperateWithStress_KA02);\n            AddMusicCategory(MyMusicTransitionEnum.DesperateWithStress, \"KA03\", MySoundCuesEnum.MusDesperateWithStress_KA03);\n            AddMusicCategory(MyMusicTransitionEnum.DesperateWithStress, \"KA04\", MySoundCuesEnum.MusDesperateWithStress_KA04);\n            AddMusicCategory(MyMusicTransitionEnum.DesperateWithStress, \"KA02b\", MySoundCuesEnum.Mus_desperatestress_KA_2_longer_2b);\n            AddMusicCategory(MyMusicTransitionEnum.HeavyFight, \"MM01\", MySoundCuesEnum.MusHeavyFight_MM01);\n            AddMusicCategory(MyMusicTransitionEnum.HeavyFight, \"MM02\", MySoundCuesEnum.MusHeavyFight_MM02);\n            AddMusicCategory(MyMusicTransitionEnum.HeavyFight, \"KA01\", MySoundCuesEnum.MusHeavyFight_KA01);\n            AddMusicCategory(MyMusicTransitionEnum.HeavyFight, \"KA02\", MySoundCuesEnum.MusHeavyFight_KA02);\n            AddMusicCategory(MyMusicTransitionEnum.HeavyFight, \"KA03\", MySoundCuesEnum.MusHeavyFight_KA03);\n            AddMusicCategory(MyMusicTransitionEnum.HeavyFight, \"KA04\", MySoundCuesEnum.MusHeavyFight_KA04);\n            AddMusicCategory(MyMusicTransitionEnum.HeavyFight, \"KA05\", MySoundCuesEnum.MusHeavyFight_KA05);\n            AddMusicCategory(MyMusicTransitionEnum.HeavyFight, \"KA06\", MySoundCuesEnum.MusHeavyFight_KA06);\n            AddMusicCategory(MyMusicTransitionEnum.HeavyFight, \"KA07\", MySoundCuesEnum.MusHeavyFight_KA07);\n            AddMusicCategory(MyMusicTransitionEnum.HeavyFight, \"KA15\", MySoundCuesEnum.MusHeavyFight_KA15);\n            AddMusicCategory(MyMusicTransitionEnum.HeavyFight, \"KA16\", MySoundCuesEnum.MusHeavyFight_KA16);\n            AddMusicCategory(MyMusicTransitionEnum.HeavyFight, \"KA17\", MySoundCuesEnum.MusHeavyFight_KA17);\n            AddMusicCategory(MyMusicTransitionEnum.HeavyFight, \"KA19\", MySoundCuesEnum.MusHeavyFight_KA19);\n            AddMusicCategory(MyMusicTransitionEnum.Horror, \"KA01\", MySoundCuesEnum.MusHorror_KA01);\n            AddMusicCategory(MyMusicTransitionEnum.Horror, \"KA02\", MySoundCuesEnum.MusHorror_KA02);\n            AddMusicCategory(MyMusicTransitionEnum.Horror, \"MM01\", MySoundCuesEnum.MusHorror_MM01);\n            AddMusicCategory(MyMusicTransitionEnum.Horror, \"MM02\", MySoundCuesEnum.MusHorror_MM02);\n            AddMusicCategory(MyMusicTransitionEnum.LightFight, \"MM01\", MySoundCuesEnum.MusLightFight_MM01);\n            AddMusicCategory(MyMusicTransitionEnum.LightFight, \"MM02\", MySoundCuesEnum.MusLightFight_MM02);\n            AddMusicCategory(MyMusicTransitionEnum.LightFight, \"KA03\", MySoundCuesEnum.MusLightFight_KA03);\n            AddMusicCategory(MyMusicTransitionEnum.LightFight, \"KA04\", MySoundCuesEnum.MusLightFight_KA04);\n            AddMusicCategory(MyMusicTransitionEnum.LightFight, \"KA05\", MySoundCuesEnum.MusLightFight_KA05);\n            AddMusicCategory(MyMusicTransitionEnum.LightFight, \"KA07\", MySoundCuesEnum.MusLightFight_KA07);\n            AddMusicCategory(MyMusicTransitionEnum.LightFight, \"KA08\", MySoundCuesEnum.MusLightFight_KA08);\n            AddMusicCategory(MyMusicTransitionEnum.LightFight, \"KA10\", MySoundCuesEnum.MusLightFight_KA10);\n            AddMusicCategory(MyMusicTransitionEnum.LightFight, \"KA11\", MySoundCuesEnum.MusLightFight_KA11);\n            AddMusicCategory(MyMusicTransitionEnum.LightFight, \"KA12\", MySoundCuesEnum.MusLightFight_KA12);\n            AddMusicCategory(MyMusicTransitionEnum.LightFight, \"KA27\", MySoundCuesEnum.MusLightFight_KA27);\n            AddMusicCategory(MyMusicTransitionEnum.LightFight, \"KA26\", MySoundCuesEnum.Mus_lightfight_KA_26);\n            AddMusicCategory(MyMusicTransitionEnum.LightFight, \"KA28\", MySoundCuesEnum.Mus_lightfight_KA_28);\n            AddMusicCategory(MyMusicTransitionEnum.MainMenu, \"KAandMM\", MySoundCuesEnum.MusMainMenu_KA_MM);\n            AddMusicCategory(MyMusicTransitionEnum.Mystery, \"MM01\", MySoundCuesEnum.MusMystery_MM01);\n            AddMusicCategory(MyMusicTransitionEnum.Mystery, \"KA02\", MySoundCuesEnum.MusMystery_KA02);\n            AddMusicCategory(MyMusicTransitionEnum.Mystery, \"KA01\", MySoundCuesEnum.MusMystery_KA01);\n            AddMusicCategory(MyMusicTransitionEnum.Mystery, \"MM02\", MySoundCuesEnum.MusMystery_MM02);\n            AddMusicCategory(MyMusicTransitionEnum.SadnessOrDesperation, \"MM01\", MySoundCuesEnum.MusSadnessOrDesperation_MM01);\n            AddMusicCategory(MyMusicTransitionEnum.SadnessOrDesperation, \"MM02\", MySoundCuesEnum.MusSadnessOrDesperation_MM02);\n            AddMusicCategory(MyMusicTransitionEnum.SadnessOrDesperation, \"KA02\", MySoundCuesEnum.MusSadnessOrDesperation_KA02);\n            AddMusicCategory(MyMusicTransitionEnum.SadnessOrDesperation, \"KA01\", MySoundCuesEnum.MusSadnessOrDesperation_KA01);\n            AddMusicCategory(MyMusicTransitionEnum.Special, \"MM01\", MySoundCuesEnum.MusSpecial_MM01);\n            AddMusicCategory(MyMusicTransitionEnum.Special, \"MM02\", MySoundCuesEnum.MusSpecial_MM02);\n            AddMusicCategory(MyMusicTransitionEnum.Special, \"MM03\", MySoundCuesEnum.MusSpecial_MM03);\n            AddMusicCategory(MyMusicTransitionEnum.Special, \"MM04\", MySoundCuesEnum.MusSpecial_MM04);\n            AddMusicCategory(MyMusicTransitionEnum.Special, \"MM05\", MySoundCuesEnum.MusSpecial_MM05);\n            AddMusicCategory(MyMusicTransitionEnum.Special, \"KA01\", MySoundCuesEnum.MusSpecial_KA01);\n            AddMusicCategory(MyMusicTransitionEnum.Special, \"KA02\", MySoundCuesEnum.MusSpecial_KA02);\n            AddMusicCategory(MyMusicTransitionEnum.Special, \"KA03\", MySoundCuesEnum.MusSpecial_KA03);\n            AddMusicCategory(MyMusicTransitionEnum.Special, \"KA04\", MySoundCuesEnum.MusSpecial_KA04);\n            AddMusicCategory(MyMusicTransitionEnum.Special, \"KA05\", MySoundCuesEnum.MusSpecial_KA05);\n            AddMusicCategory(MyMusicTransitionEnum.Special, \"KA06\", MySoundCuesEnum.MusSpecial_KA06);\n            AddMusicCategory(MyMusicTransitionEnum.Special, \"KA08\", MySoundCuesEnum.MusSpecial_KA08);\n            AddMusicCategory(MyMusicTransitionEnum.Special, \"KA09\", MySoundCuesEnum.MusSpecial_KA09);\n            AddMusicCategory(MyMusicTransitionEnum.Special, \"KA10\", MySoundCuesEnum.MusSpecial_KA10);\n            AddMusicCategory(MyMusicTransitionEnum.Special, \"KA11\", MySoundCuesEnum.MusSpecial_KA11);\n            AddMusicCategory(MyMusicTransitionEnum.Special, \"KA12\", MySoundCuesEnum.MusSpecial_KA12);\n            AddMusicCategory(MyMusicTransitionEnum.Special, \"KA13\", MySoundCuesEnum.MusSpecial_KA13);\n            AddMusicCategory(MyMusicTransitionEnum.Special, \"KA14\", MySoundCuesEnum.MusSpecial_KA14);\n            AddMusicCategory(MyMusicTransitionEnum.Special, \"KA15\", MySoundCuesEnum.MusSpecial_KA15);\n            AddMusicCategory(MyMusicTransitionEnum.Special, \"KA16\", MySoundCuesEnum.MusSpecial_KA16);\n            AddMusicCategory(MyMusicTransitionEnum.Special, \"KA04loop\", MySoundCuesEnum.Mus_special_KA_4_loop);\n            AddMusicCategory(MyMusicTransitionEnum.Special, \"LostInTheDistance\", MySoundCuesEnum.MusSpecial_LostInTheDistance);\n            AddMusicCategory(MyMusicTransitionEnum.Special, \"KA07\", MySoundCuesEnum.MusSpecial_KA07);\n            AddMusicCategory(MyMusicTransitionEnum.StealthAction, \"MM01\", MySoundCuesEnum.MusStealthAction_MM01);\n            AddMusicCategory(MyMusicTransitionEnum.StealthAction, \"MM02\", MySoundCuesEnum.MusStealthAction_MM02);\n            AddMusicCategory(MyMusicTransitionEnum.StealthAction, \"KA01\", MySoundCuesEnum.MusStealthAction_KA01);\n            AddMusicCategory(MyMusicTransitionEnum.StealthAction, \"KA03\", MySoundCuesEnum.MusStealthAction_KA03);\n            AddMusicCategory(MyMusicTransitionEnum.StressOrTimeRush, \"MM01\", MySoundCuesEnum.MusStressOrTimeRush_MM01);\n            AddMusicCategory(MyMusicTransitionEnum.StressOrTimeRush, \"MM02\", MySoundCuesEnum.MusStressOrTimeRush_MM02);\n            AddMusicCategory(MyMusicTransitionEnum.StressOrTimeRush, \"KA01\", MySoundCuesEnum.MusStressOrTimeRush_KA01);\n            AddMusicCategory(MyMusicTransitionEnum.StressOrTimeRush, \"KA02\", MySoundCuesEnum.MusStressOrTimeRush_KA02);\n            AddMusicCategory(MyMusicTransitionEnum.StressOrTimeRush, \"KA03\", MySoundCuesEnum.MusStressOrTimeRush_KA03);\n            AddMusicCategory(MyMusicTransitionEnum.TensionBeforeAnAction, \"MM01\", MySoundCuesEnum.MusTensionBeforeAnAction_MM01);\n            AddMusicCategory(MyMusicTransitionEnum.TensionBeforeAnAction, \"MM02\", MySoundCuesEnum.MusTensionBeforeAnAction_MM02);\n            AddMusicCategory(MyMusicTransitionEnum.TensionBeforeAnAction, \"KA01\", MySoundCuesEnum.MusTensionBeforeAnAction_KA01);\n            AddMusicCategory(MyMusicTransitionEnum.TensionBeforeAnAction, \"KA02\", MySoundCuesEnum.MusTensionBeforeAnAction_KA02);\n            AddMusicCategory(MyMusicTransitionEnum.Victory, \"MM01\", MySoundCuesEnum.MusVictory_MM01);\n            AddMusicCategory(MyMusicTransitionEnum.Victory, \"MM02\", MySoundCuesEnum.MusVictory_MM02);\n            AddMusicCategory(MyMusicTransitionEnum.Victory, \"KA01\", MySoundCuesEnum.MusVictory_KA01);\n            AddMusicCategory(MyMusicTransitionEnum.Victory, \"KA02\", MySoundCuesEnum.MusVictory_KA02);\n            AddMusicCategory(MyMusicTransitionEnum.Victory, \"KA06\", MySoundCuesEnum.Mus_victory_KA_6);\n\n\n\n            //Because of obfuscator\n#if DEBUG\n            //  This is just a check (assertion) if we didn't forget define something\n            //for (int i = 0; i < m_cueParameters.Length; i++)\n            foreach (MySoundCuesEnum soundCue in Enum.GetValues(typeof(MySoundCuesEnum)))\n            {\n                MyMwcLog.WriteLine(\"Validating cue parameters: \" + (short)soundCue, SysUtils.LoggingOptions.VALIDATING_CUE_PARAMS);\n                MyCommonDebugUtils.AssertRelease(m_cueParameters[(short)soundCue] != null, string.Format(\"Cue parameter {0}:{1} is missing\", (short)soundCue, soundCue.ToString()));\n            }\n#endif\n\n            MyMwcLog.DecreaseIndent(LoggingOptions.AUDIO);\n            MyMwcLog.WriteLine(\"MyAudio.InitCueParameters() - END\", LoggingOptions.AUDIO);\n        }\n\n        static void AddMusicCategory(MyMusicTransitionEnum musicTransition, string category, MySoundCuesEnum cueEnum)\n        {\n            if (m_musicTransitionCues[(int)musicTransition] == null)\n            {\n                m_musicTransitionCues[(int)musicTransition] = new Dictionary<string, MySoundCuesEnum>();\n            }\n            m_musicTransitionCues[(int)musicTransition].Add(category, cueEnum);\n        }\n\n        static void InitNonLoopableCuesLimitRemoveHelper()\n        {\n            MyMwcLog.WriteLine(\"InitNonLoopableCuesLimitRemoveHelper - START\", LoggingOptions.AUDIO);\n\n            //  Here we will remember every non-loopable cue we are playing. It will serve for limiting max count of same cues played too.\n            if (MyAudioConstants.LIMIT_MAX_SAME_CUES == true)\n            {\n                m_nonLoopableCuesLimit = new HashSet<WeakReference>[GetNumberOfSounds()];\n                //for (int i = 0; i < m_cueParameters.Length; i++)\n                foreach (short i in Enum.GetValues(typeof(MySoundCuesEnum)))\n                {\n                    if (m_cueParameters[i].Value.Loopable == false)\n                        m_nonLoopableCuesLimit[i] = new HashSet<WeakReference>();\n                }\n            }\n\n            MyMwcLog.WriteLine(\"InitNonLoopableCuesLimitRemoveHelper - END\", LoggingOptions.AUDIO);\n        }\n\n        public static int GetNumberOfSounds()\n        {\n            //return Enum.GetValues(typeof(MySoundCuesEnum)).Length;            \n            return MyMwcUtils.GetMaxValueFromEnum<MySoundCuesEnum>() + 1;\n        }\n\n        // 0000216: MySounds - assert if all sounds cue exist in XACT project\n        static void ValidateCues()\n        {\n            MyMwcLog.WriteLine(\"Validate cues - START\", LoggingOptions.AUDIO);\n\n            for (int i = 0; i < Enum.GetValues(typeof(MySoundCuesEnum)).Length; i++)\n            {\n                Cue cue = m_cueInfos[i].Prepare();\n                MyCommonDebugUtils.AssertRelease(cue.IsValid(), \"Cue \\\"\" + MyEnumsToStrings.Sounds[i] + \"\\\" does not exist in sound bank!\");\n                if (cue.IsValid())\n                {\n                    // All variables on all cues adds only 100 ms, rest of function does 3800 ms\n                    CheckVar(MyCueVariableEnum.AmbVolume, cue);\n                    CheckVar(MyCueVariableEnum.MusicProg1Progression, cue);\n                    CheckVar(MyCueVariableEnum.Occluder, cue);\n                    CheckVar(MyCueVariableEnum.Pitch, cue);\n                    CheckVar(MyCueVariableEnum.RotatingSpeed, cue);\n                    CheckVar(MyCueVariableEnum.Volume, cue);\n                    CheckVar(MyCueVariableEnum.ShipAIdle, cue);\n                    CheckVar(MyCueVariableEnum.ShipASpeed, cue);\n\n                    cue.Destroy();\n                }\n            }\n\n            MyMwcLog.WriteLine(\"Validate cues - END\", LoggingOptions.AUDIO);\n        }\n\n        private static void CheckVar(MyCueVariableEnum variableEnum, Cue cue)\n        {\n            var index = MyXactVariables.GetVariableIndex(variableEnum);\n            var cindex = cue.GetVariableIndex(MyXactVariables.GetVariableName(variableEnum));\n            if (index == -1)\n            {\n                MyXactVariables.SetVariableIndex(variableEnum, cindex);\n            }\n            else\n            {\n                System.Diagnostics.Debug.Assert(index == cindex, \"Variable index invalid\");\n            }\n        }\n\n        public static MySoundCuesEnum GetVersion2D(MySoundCuesEnum cueEnum3D)\n        {\n            MyCueParameters cueParams = m_cueParameters[(int)cueEnum3D].Value;\n            if (cueParams.Wrapped2dEnum.HasValue)\n            {\n                return cueParams.Wrapped2dEnum.Value;\n            }\n            else\n            {\n                //  If we can't find 2D version for specified sound, we return 3D version so at least something is played\n                return cueEnum3D;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Audio/MyCueInfo.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing SharpDX.XACT3;\n\nnamespace MinerWars.AppCode.Game.Audio\n{\n    struct MyCueInfo\n    {\n        public SoundBank SoundBank;\n        public short CueIndex;\n\n        public Cue Prepare()\n        {\n            return SoundBank.Prepare(CueIndex);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Audio/MyCuePool.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing SharpDX.XACT3;\nusing MinerWars.CommonLIB.AppCode.Generics;\nusing MinerWars.AppCode.Game.Utils;\nusing System.Threading;\nusing System.Collections.Concurrent;\n\nnamespace MinerWars.AppCode.Game.Audio\n{\n    sealed class MyCuePool : IDisposable\n    {\n        AudioEngine m_audioEngine;\n        MyObjectsPool<MyCueProxy.Private> m_pool;\n        Dictionary<Int64, MyCueProxy.Private> m_activeCues;\n\n        List<IntPtr> m_cuesToDestroy;\n\n        RawNotificationDescription m_notificationStopDesc = new RawNotificationDescription()\n        {\n            CuePointer = IntPtr.Zero,\n            SoundBankPointer = IntPtr.Zero,\n            CueIndex = -1,\n            Flags = 1,\n            Type = NotificationType.CueStop,\n        };\n\n        RawNotificationDescription m_notificationDestroyDesc = new RawNotificationDescription()\n        {\n            CuePointer = IntPtr.Zero,\n            SoundBankPointer = IntPtr.Zero,\n            CueIndex = -1,\n            Flags = 1,\n            Type = NotificationType.CueDestroyed,\n        };\n\n        RawNotificationCallback m_notificationCallback;\n\n        public int Capacity { get { return m_pool.GetCapacity(); } }\n        public int Count { get { return m_pool.GetActiveCount(); } }\n\n        public MyCuePool(AudioEngine engine, int capacity = 500)\n        {\n            m_audioEngine = engine;\n            m_pool = new MyObjectsPool<MyCueProxy.Private>(capacity);\n            m_activeCues = new Dictionary<long, MyCueProxy.Private>(capacity);\n            m_cuesToDestroy = new List<IntPtr>(capacity);\n\n            m_notificationCallback = new RawNotificationCallback(OnNotify);\n            m_audioEngine.RegisterNotificationRaw(ref m_notificationStopDesc, m_notificationCallback);\n            //m_audioEngine.RegisterNotificationRaw(ref m_notificationDestroyDesc, m_notificationCallback);\n        }\n\n        public MySoundCue CreateCue(Cue xactCue, MySoundCuesEnum cueEnum, bool apply3d)\n        {\n            var cue = m_pool.Allocate();\n            if (cue == null)\n                throw new InvalidOperationException(\"Cue pool is empty!\");\n\n            cue.OnInit(xactCue, cueEnum);\n            m_activeCues.Add(xactCue.NativePointer.ToInt64(), cue);\n\n            return new MySoundCue(cue.Cue, cueEnum, apply3d);\n        }\n\n        public void Dispose()\n        {\n            m_audioEngine.UnregisterNotificationRaw(ref m_notificationStopDesc);\n            //m_audioEngine.UnregisterNotificationRaw(ref m_notificationDestroyDesc);\n\n            foreach (var cue in m_activeCues)\n            {\n                cue.Value.Destroy();\n                cue.Value.OnRelease();\n            }\n            m_pool = null;\n            m_activeCues = null;\n            m_audioEngine = null;\n        }\n\n        public void Update()\n        {\n            IntPtr cuePtr;\n            while (PopDestroyList(out cuePtr))\n            {\n                var xactCue = new Cue(cuePtr);\n\n                var cue = GetCueByPointer(cuePtr);\n                m_activeCues.Remove(cuePtr.ToInt64());\n                cue.OnRelease();\n                m_pool.Deallocate(cue);\n                xactCue.Destroy();\n            }\n        }\n\n        void PushDestroyList(IntPtr cueToDestroy)\n        {\n            lock (m_cuesToDestroy)\n            {\n                m_cuesToDestroy.Add(cueToDestroy);\n            }\n        }\n\n        bool PopDestroyList(out IntPtr value)\n        {\n            lock (m_cuesToDestroy)\n            {\n                int index = m_cuesToDestroy.Count - 1;\n                if (index >= 0)\n                {\n                    value = m_cuesToDestroy[index];\n                    m_cuesToDestroy.RemoveAt(index);\n                    return true;\n                }\n            }\n            value = IntPtr.Zero;\n            return false;\n        }\n\n        MyCueProxy.Private GetCueByPointer(IntPtr cue)\n        {\n            MyCueProxy.Private result;\n            if (!m_activeCues.TryGetValue(cue.ToInt64(), out result))\n            {\n                throw new InvalidOperationException(\"Cue was not created from this pool!\");\n            }\n            return result;\n        }\n\n        void OnNotify(ref RawNotification notification)\n        {\n            if (notification.Type == NotificationType.CueStop)\n            {\n                PushDestroyList(notification.Data.Cue.CuePointer);\n            }\n            else if (notification.Type == NotificationType.CueDestroyed)\n            {\n                //var ptr = notification.Data.Cue.CuePointer;\n                //if (m_activeCues.ContainsKey(ptr.ToInt64()))\n                //{\n                //    PushDestroyList(notification.Data.Cue.CuePointer);\n                //}\n            }\n        }\n\n        public void StopAll(StopFlags stopMode)\n        {\n            foreach (var item in m_activeCues)\n            {\n                if (item.Value.Cue.State != CueState.Stopped && item.Value.Cue.State != CueState.Stopped)\n                    item.Value.Cue.Stop(stopMode);\n            }\n        }\n\n        public void WriteDebugInfo(StringBuilder stringBuilder)\n        {\n            stringBuilder.AppendLine();\n            stringBuilder.AppendLine(\"Playing:\");\n            foreach (var item in m_activeCues)\n            {\n                if ((item.Value.Cue.State & CueState.Playing) != 0 && (item.Value.Cue.State & CueState.Paused) == 0)\n                    stringBuilder.AppendLine(MyEnumsToStrings.Sounds[(int)item.Value.Cue.CueEnum]);\n            }\n\n            stringBuilder.AppendLine();\n            stringBuilder.AppendLine(\"Paused:\");\n            foreach (var item in m_activeCues)\n            {\n                if ((item.Value.Cue.State & CueState.Paused) != 0)\n                    stringBuilder.AppendLine(MyEnumsToStrings.Sounds[(int)item.Value.Cue.CueEnum]);\n            }\n\n            stringBuilder.AppendLine();\n            stringBuilder.AppendLine(\"Stopped:\");\n            foreach (var item in m_activeCues)\n            {\n                if ((item.Value.Cue.State & CueState.Stopping) != 0 || (item.Value.Cue.State & CueState.Stopped) != 0)\n                    stringBuilder.AppendLine(MyEnumsToStrings.Sounds[(int)item.Value.Cue.CueEnum]);\n            }\n\n            stringBuilder.AppendLine();\n            stringBuilder.AppendLine(\"Other:\");\n            foreach (var item in m_activeCues)\n            {\n                if (!(\n                    ((item.Value.Cue.State & CueState.Playing) != 0 && (item.Value.Cue.State & CueState.Paused) == 0)\n                    ||\n                    ((item.Value.Cue.State & CueState.Paused) != 0)\n                    ||\n                    ((item.Value.Cue.State & CueState.Stopping) != 0 || (item.Value.Cue.State & CueState.Stopped) != 0)\n                    ))\n                    stringBuilder.AppendLine(MyEnumsToStrings.Sounds[(int)item.Value.Cue.CueEnum]);\n            }\n            stringBuilder.AppendLine();\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Audio/MyCueProxy.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing SharpDX.XACT3;\nusing SharpDX.X3DAudio;\n\nnamespace MinerWars.AppCode.Game.Audio\n{\n    class MyCueProxy\n    {\n        /// <summary>\n        /// Private interface for MyCue (used by pool)\n        /// </summary>\n        public class Private\n        {\n            public readonly MyCueProxy Cue = new MyCueProxy();\n            public void OnInit(Cue cue, MySoundCuesEnum cueEnum)\n            {\n                Cue.m_cue = cue;\n                Cue.CueEnum = cueEnum;\n            }\n\n            public void OnRelease()\n            {\n                unchecked\n                {\n                    Cue.m_version++;\n                }\n            }\n\n            public void Destroy()\n            {\n                Cue.m_cue.Destroy();\n            }\n        }\n\n        Cue m_cue;\n        uint m_version;\n\n        public MySoundCuesEnum CueEnum { get; private set; }\n        public uint Version { get { return m_version; } }\n\n        public CueState State\n        {\n            get\n            {\n                return m_cue.State;\n            }\n        }\n\n        public void Apply3D(Listener listener, Emitter emiter)\n        {\n            m_cue.Apply3D(listener, emiter);\n        }\n\n        public void Stop(StopFlags mode)\n        {\n            m_cue.Stop(mode);\n        }\n\n        public void Pause(bool pause)\n        {\n            m_cue.Pause(pause);\n        }\n\n        public void SetVariable(MyCueVariableEnum variable, float value)\n        {\n            m_cue.SetVariable(variable, value);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Audio/MyHudAudio.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing SharpDX.XACT3;\nusing MinerWars.AppCode.Game.Utils;\nusing System.Diagnostics;\n\nnamespace MinerWars.AppCode.Game.Audio\n{\n    /// <summary>\n    /// Handles audio queue for hud, plays always only one HUD cue at a time\n    /// </summary>\n    static class MyHudAudio\n    {\n        struct MyHudCue\n        {\n            public MySoundCuesEnum CueEnum;\n            public float Volume;\n        }\n\n        struct MyActiveCueInfo\n        {\n            public MySoundCuesEnum CueEnum;\n            public MySoundCue Cue;\n        }\n\n        //  Hud cues\n        static Queue<MyHudCue> m_hudCuesQueue;\n        static MyActiveCueInfo? m_activeCue;\n\n        const int m_hudCueDelay = 1000;  // in ms\n        static int m_hudTimeFromLastCuePlayed = 0;\n\n        public static int QueueLength { get { return m_hudCuesQueue != null ? m_hudCuesQueue.Count : 0; } }\n\n        public static void LoadData()\n        {\n            m_hudCuesQueue = new Queue<MyHudCue>();\n        }\n\n        public static void UnloadData()\n        {\n            m_hudCuesQueue = null;\n            if (m_activeCue.HasValue)\n            {\n                m_activeCue.Value.Cue.Stop(StopFlags.Immediate);\n            }\n        }\n\n        /// <summary>\n        /// Cleans hud audio queue and stops any sounds\n        /// </summary>\n        public static void Reset()\n        {\n            if (m_hudCuesQueue != null)\n            {\n                m_hudCuesQueue.Clear();\n            }\n\n            if (m_activeCue.HasValue)\n            {\n                m_activeCue.Value.Cue.Stop(StopFlags.Release);\n                m_activeCue = null;\n            }\n        }\n\n        public static bool AddHudCue(MySoundCuesEnum cueEnum, float volume)\n        {\n            // Playing cue right now?\n            if (m_activeCue.HasValue && m_activeCue.Value.CueEnum == cueEnum)\n                return false;\n\n            foreach (var hudCue in m_hudCuesQueue)\n            {\n                if (hudCue.CueEnum == cueEnum)\n                {\n                    return false;\n                }\n            }\n\n            m_hudCuesQueue.Enqueue(new MyHudCue() { CueEnum = cueEnum, Volume = volume });\n            Debug.Assert(m_hudCuesQueue.Count < 100, \"Too many hud sounds were enqueued, are you checking if sound was already enqueud?\");\n            return true;\n        }\n\n        public static void Update()\n        {\n            m_hudTimeFromLastCuePlayed += MyConstants.PHYSICS_STEP_SIZE_IN_MILLISECONDS;\n\n            // if actual hud cue still playing\n            if (m_activeCue.HasValue && m_activeCue.Value.Cue.IsPlaying)\n            {\n                return;\n            }\n\n            // we dequeue next hud cue a play it\n            if (m_hudCuesQueue.Count > 0)\n            {\n                // we want have small delay between hud cues\n                if (m_hudTimeFromLastCuePlayed >= m_hudCueDelay || m_activeCue == null)\n                {\n                    MyHudCue nextHudCue = m_hudCuesQueue.Dequeue();\n                    var cue = MyAudio.PlayCueNow2D(nextHudCue.CueEnum, nextHudCue.Volume);\n\n                    m_activeCue = new MyActiveCueInfo() { Cue = cue, CueEnum = nextHudCue.CueEnum };\n                    m_hudTimeFromLastCuePlayed = 0;\n                }\n            }\n            else\n            {\n                m_activeCue = null;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Audio/MyInMemoryWaveBank.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing SharpDX.XACT3;\nusing SharpDX;\nusing System.IO;\n\nnamespace MinerWars.AppCode.Game.Audio\n{\n    /// <summary>\n    /// In memory wave bank\n    /// We must hold reference to DataStream\n    /// </summary>\n    public class MyInMemoryWaveBank : WaveBank\n    {\n        private DataStream m_backingStore;\n\n        private MyInMemoryWaveBank(AudioEngine engine, DataStream dataStream)\n            : base(engine, dataStream)\n        {\n        }\n\n        protected override void Dispose(bool disposing)\n        {\n            base.Dispose(disposing);\n            if (disposing)\n            {\n                m_backingStore.Dispose();\n            }\n        }\n\n        public static MyInMemoryWaveBank Create(AudioEngine engine, string filename)\n        {\n            DataStream ds;\n            using (FileStream fs = File.OpenRead(filename))\n            {\n                ds = new DataStream((int)fs.Length, true, true);\n                fs.CopyTo(ds);\n                ds.Position = 0;\n            }\n            var result = new MyInMemoryWaveBank(engine, ds);\n            result.m_backingStore = ds;\n            return result;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Audio/MySoundCue.cs",
    "content": "﻿using System;\nusing System.Diagnostics;\nusing SharpDX.X3DAudio;\nusing SharpDX.XACT3;\nusing MinerWars.AppCode.Game.Utils;\n\nnamespace MinerWars.AppCode.Game.Audio\n{\n    /// <summary>\n    /// Cue which has started playing.\n    /// </summary>\n    struct MySoundCue\n    {\n        /// <summary>\n        /// Never null\n        /// </summary>\n        private readonly MyCueProxy m_cue;\n        private readonly MySoundCuesEnum m_cueEnum;\n        private readonly bool m_apply3d;\n        private readonly uint m_version;\n\n        public bool IsSame(MySoundCue cue)\n        {\n            return m_cue == cue.m_cue && m_version == cue.m_version;\n        }\n\n        public bool IsValid { get { return m_cue.Version == m_version; } }\n\n        public bool IsAmbientSound { get { return MyEnumsToStrings.Sounds[(int)CueEnum].StartsWith(\"Amb\"); } }\n        \n        public MySoundCue(MyCueProxy cue, MySoundCuesEnum cueEnum, bool apply3d)\n        {\n            m_cue = cue;\n            m_version = cue.Version;\n            m_cueEnum = cueEnum;\n            m_apply3d = apply3d;\n        }\n\n        [Obsolete(\"This will be removed\")]\n        public MySoundCuesEnum CueEnum\n        {\n            get\n            {\n                return m_cueEnum;\n            }\n        }\n\n        [Obsolete(\"This will be removed\")]\n        public bool Is3D\n        {\n            get\n            {\n                return m_apply3d;\n            }\n        }\n\n        // In future, this will be changed (won't test valid)\n        public bool IsPlaying { get { return IsValid && State == CueState.Playing; } }\n\n        // In future, this will be changed (won't test valid)\n        public bool IsStopped { get { return IsValid && State == CueState.Stopped; } }\n\n        public bool IsStopping { get { return CheckState(CueState.Stopping); } }        \n        public bool IsPaused { get { return CheckState(CueState.Paused); } }\n\n        public void Apply3D(Listener listener, Emitter emiter)\n        {\n            if (IsValid)\n            {\n                m_cue.Apply3D(listener, emiter);\n            }\n        }\n\n        public void SetVariable(MyCueVariableEnum variable, float value)\n        {\n            if (IsValid)\n            {\n                m_cue.SetVariable(variable, value);\n            }\n        }\n\n        public void Stop(StopFlags mode)\n        {\n            if (IsValid)\n            {\n                this.m_cue.Stop(mode);\n            }\n        }\n\n        public void Pause()\n        {\n            if (IsValid)\n            {\n                this.m_cue.Pause(true);\n            }\n        }\n\n        public void Resume()\n        {\n            if (IsValid)\n            {\n                this.m_cue.Pause(false);\n            }\n        }\n\n        private CueState State\n        {\n            get\n            {\n                return m_cue.State;\n            }\n        }\n\n        bool CheckState(CueState state)\n        {\n            Debug.Assert(IsValid, \"Before checking state, test IsValid!\");\n            return IsValid && ((int)(m_cue.State & state) == (int)state);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Audio/MyX3DAudio.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing SharpDX.X3DAudio;\nusing SharpDX.XACT3;\nusing System.Runtime.InteropServices;\nusing System.Reflection;\nusing System.Linq.Expressions;\n\nnamespace MinerWars.AppCode.Game.Audio\n{\n    class MyX3DAudio\n    {\n        X3DAudio m_x3dAudio;\n        DspSettings m_dsp;\n\n        public MyX3DAudio(AudioEngine engine)\n        {\n            m_x3dAudio = new X3DAudio(engine.FinalMixFormat.ChannelMask);\n            m_dsp = new DspSettings(1, engine.FinalMixFormat.Channels);\n        }\n\n        public void Apply3D(Cue cue, Listener listener, Emitter emitter)\n        {\n            m_x3dAudio.Calculate(listener, emitter, CalculateFlags.Matrix | CalculateFlags.Doppler | CalculateFlags.EmitterAngle, m_dsp);\n\n            cue.SetMatrixCoefficients(m_dsp.SourceChannelCount, m_dsp.DestinationChannelCount, m_dsp.MatrixCoefficients);\n            cue.SetVariable(MyCueVariableEnum.Distance, m_dsp.EmitterToListenerDistance);\n            cue.SetVariable(MyCueVariableEnum.DopplerPitchScalar, m_dsp.DopplerFactor);\n            cue.SetVariable(MyCueVariableEnum.OrientationAngleDegrees, m_dsp.EmitterToListenerAngle * 57.29578f); // From radians to degrees\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Audio/MyXactVariables.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SharpDX.XACT3;\n\nnamespace MinerWars.AppCode.Game.Audio\n{\n    public enum MyCueVariableEnum\n    {\n        Volume,\n        AmbVolume,\n        Pitch,\n        Occluder,\n        MusicProg1Progression,\n        RotatingSpeed,\n        ShipASpeed,\n        ShipAIdle,\n\n        // 3D variables (Apply3D sets it)\n        Distance,\n        DopplerPitchScalar,\n        OrientationAngleDegrees,\n    }\n\n    public enum MyGlobalVariableEnum\n    {\n        ReverbControl,\n    }\n\n    /// <summary>\n    /// Caching class for cue variable indices.\n    /// Variable index is same for all cues in audio engine\n    /// </summary>\n    static class MyXactVariables\n    {\n        public static bool CacheEnabled = true;\n\n        struct MyVar\n        {\n            public short VariableIndex;\n            public string VariableName;\n        }\n\n        static MyVar[] m_cueVariables;\n        static MyVar[] m_glovalVariables;\n\n        public static void LoadData()\n        {\n            m_cueVariables = new MyVar[MyMwcUtils.GetMaxValueFromEnum<MyCueVariableEnum>() + 1];\n            m_glovalVariables = new MyVar[MyMwcUtils.GetMaxValueFromEnum<MyCueVariableEnum>() + 1];\n\n            m_cueVariables[(int)MyCueVariableEnum.AmbVolume] = new MyVar() { VariableName = \"AmbVolume\", VariableIndex = -1 };\n            m_cueVariables[(int)MyCueVariableEnum.MusicProg1Progression] = new MyVar() { VariableName = \"MusicProg1Progression\", VariableIndex = -1 };\n            m_cueVariables[(int)MyCueVariableEnum.Occluder] = new MyVar() { VariableName = \"Occluder\", VariableIndex = -1 };\n            m_cueVariables[(int)MyCueVariableEnum.Pitch] = new MyVar() { VariableName = \"Pitch\", VariableIndex = -1 };\n            m_cueVariables[(int)MyCueVariableEnum.RotatingSpeed] = new MyVar() { VariableName = \"RotatingSpeed\", VariableIndex = -1 };\n            m_cueVariables[(int)MyCueVariableEnum.Volume] = new MyVar() { VariableName = \"Volume\", VariableIndex = -1 };\n            m_cueVariables[(int)MyCueVariableEnum.ShipASpeed] = new MyVar() { VariableName = \"Ship A Speed\", VariableIndex = -1 };\n            m_cueVariables[(int)MyCueVariableEnum.ShipAIdle] = new MyVar() { VariableName = \"Ship A Idle\", VariableIndex = -1 };\n\n            m_cueVariables[(int)MyCueVariableEnum.Distance] = new MyVar() { VariableName = \"Distance\", VariableIndex = -1 };\n            m_cueVariables[(int)MyCueVariableEnum.DopplerPitchScalar] = new MyVar() { VariableName = \"DopplerPitchScalar\", VariableIndex = -1 };\n            m_cueVariables[(int)MyCueVariableEnum.OrientationAngleDegrees] = new MyVar() { VariableName = \"OrientationAngle\", VariableIndex = -1 };\n\n            m_glovalVariables[(int)MyGlobalVariableEnum.ReverbControl] = new MyVar() { VariableName = \"ReverbControl\", VariableIndex = -1 };\n        }\n\n        public static void UnloadData()\n        {\n            m_cueVariables = null;\n            m_glovalVariables = null;\n        }\n\n        public static void SetVariable(Cue cue, MyCueVariableEnum variableEnum, float value)\n        {\n            var varInfo = m_cueVariables[(int)variableEnum];\n\n            if (varInfo.VariableIndex == -1 || CacheEnabled == false)\n            {\n                varInfo.VariableIndex = cue.GetVariableIndex(varInfo.VariableName);\n                m_cueVariables[(int)variableEnum].VariableIndex = varInfo.VariableIndex;\n            }\n            cue.SetVariable(varInfo.VariableIndex, value);\n        }\n\n        public static void SetVariable(AudioEngine engine, MyGlobalVariableEnum variableEnum, float value)\n        {\n            var varInfo = m_glovalVariables[(int)variableEnum];\n\n            if (varInfo.VariableIndex == -1 || CacheEnabled == false)\n            {\n                varInfo.VariableIndex = engine.GetGlobalVariableIndex(varInfo.VariableName);\n                m_glovalVariables[(int)variableEnum].VariableIndex = varInfo.VariableIndex;\n            }\n            engine.SetGlobalVariable(varInfo.VariableIndex, value);\n        }\n\n        public static short GetVariableIndex(MyGlobalVariableEnum variableEnum)\n        {\n            return m_glovalVariables[(int)variableEnum].VariableIndex;\n        }\n\n        public static short GetVariableIndex(MyCueVariableEnum variableEnum)\n        {\n            return m_cueVariables[(int)variableEnum].VariableIndex;\n        }\n\n        public static string GetVariableName(MyGlobalVariableEnum variableEnum)\n        {\n            return m_glovalVariables[(int)variableEnum].VariableName;\n        }\n\n        public static string GetVariableName(MyCueVariableEnum variableEnum)\n        {\n            return m_cueVariables[(int)variableEnum].VariableName;\n        }\n\n        public static void SetVariableIndex(MyGlobalVariableEnum variableEnum, short index)\n        {\n            m_glovalVariables[(int)variableEnum].VariableIndex = index;\n        }\n\n        public static void SetVariableIndex(MyCueVariableEnum variableEnum, short index)\n        {\n            m_cueVariables[(int)variableEnum].VariableIndex = index;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/BackgroundCube/MyBackgroundCube.cs",
    "content": "﻿using System.IO;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Managers;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Utils.VertexFormats;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.Render;\nusing MinerWars.AppCode.Game.Effects;\nusing MinerWars.AppCode.Game.World;\n\nusing SharpDX.Direct3D9;\nusing SharpDX.Toolkit;\nusing SharpDX.Toolkit.Graphics;\n\nnamespace MinerWars.AppCode.Game.BackgroundCube\n{\n    using Vector2 = MinerWarsMath.Vector2;\n    using Vector3 = MinerWarsMath.Vector3;\n    using Vector4 = MinerWarsMath.Vector4;\n    using Rectangle = MinerWarsMath.Rectangle;\n    using Matrix = MinerWarsMath.Matrix;\n    using Quaternion = MinerWarsMath.Quaternion;\n    using Color = MinerWarsMath.Color;\n    using BoundingBox = MinerWarsMath.BoundingBox;\n    using BoundingSphere = MinerWarsMath.BoundingSphere;\n    using BoundingFrustum = MinerWarsMath.BoundingFrustum;\n\n    static class MyBackgroundCube\n    {\n        static MyTextureCube m_textureCube;        \n        static VertexBuffer m_boxVertexBuffer;\n        static bool m_loaded = false;\n        static MyMwcSectorIdentifier m_sectorIdentifier;\n        const int BOX_TRIANGLES_COUNT = 12;\n        static Matrix m_backgroundProjectionMatrix;\n\n        static MyBackgroundCube()\n        {\n            Render.MyRender.RegisterRenderModule(MyRenderModuleEnum.BackgroundCube, \"Background cube\", Draw, Render.MyRenderStage.Background, 1, true);\n        }\n\n        public static void LoadContent(MyMwcSectorIdentifier sectorIdentifier)\n        {\n            MyMwcLog.WriteLine(\"MyBackgroundCube.LoadContent() - START\");\n            MyMwcLog.IncreaseIndent();\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyBackgroundCube\");\n\n            m_sectorIdentifier = sectorIdentifier;\n\n            UpdateTexture();\n         \n            m_loaded = false;\n\n            //  Projection matrix according to zoom level\n            m_backgroundProjectionMatrix = Matrix.CreatePerspectiveFieldOfView(1.0f, MyCamera.ForwardAspectRatio,\n                5,\n                100000);\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyBackgroundCube.LoadContent() - END\");\n        }\n\n        static string GetFilename()\n        {\n            return MySector.BackgroundTexture;\n        }\n\n        public static void ReloadContent()\n        {\n            UpdateTexture();\n        }\n\n        static void UpdateTexture()\n        {     \n            //  This texture should be in DDS file extension and must be DXT1 compressed (use Photoshop and DDS tool from NVIDIA)\n            //  We don't use for it dxt compression from XNA's content processor because we don't want huge (over 100 Mb) files in SVN.\n            m_textureCube = MyTextureManager.GetTexture<MyTextureCube>(\"Textures\\\\BackgroundCube\\\\Final\\\\\" + GetFilename(), null, LoadingMode.Immediate);\n        }\n\n        public static void UnloadContent()\n        {\n            MyMwcLog.WriteLine(\"MyBackgroundCube.UnloadContent - START\");\n            MyMwcLog.IncreaseIndent();\n\n            if (m_boxVertexBuffer != null)\n            {\n                m_boxVertexBuffer.Dispose();\n                m_boxVertexBuffer = null;\n            }\n\n            if (m_textureCube != null)\n            {\n                MyTextureManager.UnloadTexture(m_textureCube);\n                m_textureCube = null;\n            }\n            m_textureCube = null;\n            m_loaded = false;\n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyBackgroundCube.UnloadContent - END\");\n        }\n\n        //\tSpecial method that loads data into GPU, and can be called only from Draw method, never from LoadContent or from background thread.\n        //\tBecause that would lead to empty vertex/index buffers if they are filled/created while game is minimized (remember the issue - alt-tab during loading screen)\n        static void LoadInDraw()\n        {\n            if (m_loaded) return;\n\n            //  In fact it doesn't matter how large is cube, it will always look same as we are always in its middle\n            //  I changed it from 1.0 to 100.0 only because will small length I had problems with near frustum plane and crazy aspect ratios.\n            const float CUBE_LENGTH_HALF = 100;\n\n            Vector3 shapeSize = Vector3.One * CUBE_LENGTH_HALF;\n            Vector3 shapePosition = Vector3.Zero;\n\n            MyVertexFormatPositionTexture3[] boxVertices = new MyVertexFormatPositionTexture3[36];\n\n            Vector3 topLeftFront = shapePosition + new Vector3(-1.0f, 1.0f, -1.0f) * shapeSize;\n            Vector3 bottomLeftFront = shapePosition + new Vector3(-1.0f, -1.0f, -1.0f) * shapeSize;\n            Vector3 topRightFront = shapePosition + new Vector3(1.0f, 1.0f, -1.0f) * shapeSize;\n            Vector3 bottomRightFront = shapePosition + new Vector3(1.0f, -1.0f, -1.0f) * shapeSize;\n            Vector3 topLeftBack = shapePosition + new Vector3(-1.0f, 1.0f, 1.0f) * shapeSize;\n            Vector3 topRightBack = shapePosition + new Vector3(1.0f, 1.0f, 1.0f) * shapeSize;\n            Vector3 bottomLeftBack = shapePosition + new Vector3(-1.0f, -1.0f, 1.0f) * shapeSize;\n            Vector3 bottomRightBack = shapePosition + new Vector3(1.0f, -1.0f, 1.0f) * shapeSize;\n\n            Vector3 textureTopLeftFront = MyMwcUtils.Normalize(topLeftFront);\n            Vector3 textureBottomLeftFront = MyMwcUtils.Normalize(bottomLeftFront);\n            Vector3 textureTopRightFront = MyMwcUtils.Normalize(topRightFront);\n            Vector3 textureBottomRightFront = MyMwcUtils.Normalize(bottomRightFront);\n            Vector3 textureTopLeftBack = MyMwcUtils.Normalize(topLeftBack);\n            Vector3 textureTopRightBack = MyMwcUtils.Normalize(topRightBack);\n            Vector3 textureBottomLeftBack = MyMwcUtils.Normalize(bottomLeftBack);\n            Vector3 textureBottomRightBack = MyMwcUtils.Normalize(bottomRightBack);\n            textureTopLeftFront.Z *= -1;\n            textureBottomLeftFront.Z *= -1;\n            textureTopRightFront.Z *= -1;\n            textureBottomRightFront.Z *= -1;\n            textureTopLeftBack.Z *= -1;\n            textureTopRightBack.Z *= -1;\n            textureBottomLeftBack.Z *= -1;\n            textureBottomRightBack.Z *= -1;\n\n            // Front face.\n            boxVertices[0] = new MyVertexFormatPositionTexture3(topLeftFront, textureTopLeftFront);\n            boxVertices[1] = new MyVertexFormatPositionTexture3(bottomLeftFront, textureBottomLeftFront);\n            boxVertices[2] = new MyVertexFormatPositionTexture3(topRightFront, textureTopRightFront);\n            boxVertices[3] = new MyVertexFormatPositionTexture3(bottomLeftFront, textureBottomLeftFront);\n            boxVertices[4] = new MyVertexFormatPositionTexture3(bottomRightFront, textureBottomRightFront);\n            boxVertices[5] = new MyVertexFormatPositionTexture3(topRightFront, textureTopRightFront);\n\n            // Back face.\n            boxVertices[6] = new MyVertexFormatPositionTexture3(topLeftBack, textureTopLeftBack);\n            boxVertices[7] = new MyVertexFormatPositionTexture3(topRightBack, textureTopRightBack);\n            boxVertices[8] = new MyVertexFormatPositionTexture3(bottomLeftBack, textureBottomLeftBack);\n            boxVertices[9] = new MyVertexFormatPositionTexture3(bottomLeftBack, textureBottomLeftBack);\n            boxVertices[10] = new MyVertexFormatPositionTexture3(topRightBack, textureTopRightBack);\n            boxVertices[11] = new MyVertexFormatPositionTexture3(bottomRightBack, textureBottomRightBack);\n\n            // Top face.\n            boxVertices[12] = new MyVertexFormatPositionTexture3(topLeftFront, textureTopLeftFront);\n            boxVertices[13] = new MyVertexFormatPositionTexture3(topRightBack, textureTopRightBack);\n            boxVertices[14] = new MyVertexFormatPositionTexture3(topLeftBack, textureTopLeftBack);\n            boxVertices[15] = new MyVertexFormatPositionTexture3(topLeftFront, textureTopLeftFront);\n            boxVertices[16] = new MyVertexFormatPositionTexture3(topRightFront, textureTopRightFront);\n            boxVertices[17] = new MyVertexFormatPositionTexture3(topRightBack, textureTopRightBack);\n\n            // Bottom face.\n            boxVertices[18] = new MyVertexFormatPositionTexture3(bottomLeftFront, textureBottomLeftFront);\n            boxVertices[19] = new MyVertexFormatPositionTexture3(bottomLeftBack, textureBottomLeftBack);\n            boxVertices[20] = new MyVertexFormatPositionTexture3(bottomRightBack, textureBottomRightBack);\n            boxVertices[21] = new MyVertexFormatPositionTexture3(bottomLeftFront, textureBottomLeftFront);\n            boxVertices[22] = new MyVertexFormatPositionTexture3(bottomRightBack, textureBottomRightBack);\n            boxVertices[23] = new MyVertexFormatPositionTexture3(bottomRightFront, textureBottomRightFront);\n\n            // Left face.\n            boxVertices[24] = new MyVertexFormatPositionTexture3(topLeftFront, textureTopLeftFront);\n            boxVertices[25] = new MyVertexFormatPositionTexture3(bottomLeftBack, textureBottomLeftBack);\n            boxVertices[26] = new MyVertexFormatPositionTexture3(bottomLeftFront, textureBottomLeftFront);\n            boxVertices[27] = new MyVertexFormatPositionTexture3(topLeftBack, textureTopLeftBack);\n            boxVertices[28] = new MyVertexFormatPositionTexture3(bottomLeftBack, textureBottomLeftBack);\n            boxVertices[29] = new MyVertexFormatPositionTexture3(topLeftFront, textureTopLeftFront);\n\n            // Right face.\n            boxVertices[30] = new MyVertexFormatPositionTexture3(topRightFront, textureTopRightFront);\n            boxVertices[31] = new MyVertexFormatPositionTexture3(bottomRightFront, textureBottomRightFront);\n            boxVertices[32] = new MyVertexFormatPositionTexture3(bottomRightBack, textureBottomRightBack);\n            boxVertices[33] = new MyVertexFormatPositionTexture3(topRightBack, textureTopRightBack);\n            boxVertices[34] = new MyVertexFormatPositionTexture3(topRightFront, textureTopRightFront);\n            boxVertices[35] = new MyVertexFormatPositionTexture3(bottomRightBack, textureBottomRightBack);\n            \n            // if we've loaded the cube from DDS, orient it towards the sun\n            var sun = MyGuiScreenGamePlay.Static.GetDirectionToSunNormalized();\n            var toSun = new Quaternion(Vector3.Cross(Vector3.UnitX, sun), Vector3.Dot(Vector3.UnitX, sun));  // default orientation is +x\n            toSun.Normalize();\n            for (int i = 0; i < boxVertices.Length; i++)\n            {\n                boxVertices[i].Position = Vector3.Transform(boxVertices[i].Position, toSun);\n            }\n        \n            m_boxVertexBuffer = new VertexBuffer(MyMinerGame.Static.GraphicsDevice, MyVertexFormatPositionTexture3.Stride * boxVertices.Length, Usage.WriteOnly, VertexFormat.None, Pool.Default);\n            m_boxVertexBuffer.Lock(0, 0, LockFlags.None).WriteRange(boxVertices);\n            m_boxVertexBuffer.Unlock();\n            m_boxVertexBuffer.DebugName = \"BackgroundCube\";\n\n            m_loaded = true;\n        }\n\n        public static void Draw()\n        {      \n            //  We can fill vertex buffer only when in Draw\n            LoadInDraw();\n\n            RasterizerState.CullClockwise.Apply();\n            DepthStencilState.None.Apply();\n            BlendState.Opaque.Apply();\n\n            if (MyRender.CurrentRenderSetup.BackgroundColor != null)\n            {\n                MyMinerGame.Static.GraphicsDevice.Clear(ClearFlags.Target, SharpDXHelper.ToSharpDX(MyRender.CurrentRenderSetup.BackgroundColor.Value), 1, 0);\n            }\n            else\n            {\n                MyEffectBackgroundCube effect = MyRender.GetEffect(MyEffects.BackgroundCube) as MyEffectBackgroundCube;\n                effect.SetViewProjectionMatrix(MyCamera.ViewMatrixAtZero * m_backgroundProjectionMatrix);\n                effect.SetBackgroundTexture(m_textureCube);\n                effect.SetBackgroundColor(MySector.SunProperties.BackgroundColor);\n                MyMinerGame.Static.GraphicsDevice.VertexDeclaration = MyVertexFormatPositionTexture3.VertexDeclaration;\n                MyMinerGame.Static.GraphicsDevice.SetStreamSource(0, m_boxVertexBuffer, 0, MyVertexFormatPositionTexture3.Stride);\n                \n                effect.Begin();\n\n                MyMinerGame.Static.GraphicsDevice.DrawPrimitives(PrimitiveType.TriangleList, 0, BOX_TRIANGLES_COUNT);\n\n                effect.End();\n\n                MyPerformanceCounter.PerCameraDraw.TotalDrawCalls++;\n            }                \n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/BackgroundCube/MyDistantImpostors.cs",
    "content": "﻿using MinerWars.AppCode.Game.Utils;\nusing System.Collections.Generic;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Render;\nusing MinerWars.AppCode.Game.Effects;\nusing SysUtils.Utils;\n\nnamespace MinerWars.AppCode.Game.BackgroundCube\n{\n    internal static class MyDistantImpostors\n    {\n        static readonly MyDistantObjectImpostors m_objectImpostors;\n        static readonly MyVoxelMapImpostors m_voxelImpostors;\n\n        static MyDistantImpostors()\n        {\n            MyMwcLog.WriteLine(\"MyDistantImpostors()\");\n\n            const float defaultSize = 200000;\n\n            m_objectImpostors = new MyDistantObjectImpostors();\n            m_objectImpostors.Scale = MyMwcSectorConstants.SECTOR_SIZE / defaultSize;\n\n            m_voxelImpostors = new MyVoxelMapImpostors();\n\n            Render.MyRender.RegisterRenderModule(MyRenderModuleEnum.DistantImpostors, \"Distant impostors\", PrepareForDraw, Render.MyRenderStage.PrepareForDraw);\n            Render.MyRender.RegisterRenderModule(MyRenderModuleEnum.DistantImpostors, \"Distant impostors\", Draw, Render.MyRenderStage.Background);\n        }\n\n        public static void LoadData()\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyDistantImpostors.LoadData\");\n            m_objectImpostors.LoadData();\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        public static void UnloadData()\n        {\n            m_objectImpostors.UnloadData();\n        }\n\n        public static void LoadContent(List<MyMwcObjectBuilder_Base> enterSectorResponses, bool createRealImpostors)\n        {\n            m_objectImpostors.LoadContent();\n            m_voxelImpostors.LoadContent(enterSectorResponses, createRealImpostors);\n        }\n\n        public static void ReloadContent()\n        {\n            m_voxelImpostors.LoadContent(null, false);\n        }\n\n        public static void UnloadContent()\n        {\n            MyMwcLog.WriteLine(\"MyDistantImpostors.UnloadContent - START\");\n            MyMwcLog.IncreaseIndent();\n\n            m_objectImpostors.UnloadContent();\n            m_voxelImpostors.UnloadContent();\n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyDistantImpostors.UnloadContent - END\");\n        }\n\n        public static void Update()\n        {\n            m_objectImpostors.Update();\n        }\n\n        public static void PrepareForDraw()\n        {\n            if (MyRenderConstants.RenderQualityProfile.EnableDistantImpostors)\n            {\n                m_voxelImpostors.PrepareForDraw(\n                    MyRender.GetEffect(MyEffects.DistantImpostors) as MyEffectDistantImpostors);\n            }\n        }\n\n        public static void Draw()\n        {\n            if (MyRenderConstants.RenderQualityProfile.EnableDistantImpostors)\n            {\n                m_objectImpostors.Draw(MyRender.GetEffect(MyEffects.DistantImpostors) as MyEffectDistantImpostors);\n                m_voxelImpostors.Draw(MyRender.GetEffect(MyEffects.DistantImpostors) as MyEffectDistantImpostors);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/BackgroundCube/MyDistantObjectImpostor.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.App;\n\nnamespace MinerWars.AppCode.Game.BackgroundCube\n{\n    public enum MyDistantObjectImpostorTypeEnum\n    {\n        Blinker,\n        Explosion,\n        Mover\n        \n    }\n\n    public class MyDistantObjectImpostor\n    {\n\n\n        public Vector3 Position\n        {\n            get\n            {\n                return MyUtils.GetCartesianCoordinatesFromSpherical(m_angleHorizontal, m_angleVertical, MyDistantObjectsImpostorsConstants.DISTANT_OBJECTS_SPHERE_RADIUS);\n            }\n        }\n\n        public float Radius;\n        public float Angle;\n        float m_angleHorizontal;\n        float m_angleVertical;\n        float m_targetHorizontal;\n        float m_targetVertical;\n        public MyDistantObjectImpostorTypeEnum Type;\n        public Vector4 Color;\n        bool m_fading;\n        bool m_exploding;\n        float m_blinkMultiplierUp;\n        float m_blinkMultiplierDown;\n        float m_glowTime;\n        bool m_IsWaiting;\n        int m_explosionDelay;\n\n        // for explosions their starting radius\n        float m_startingRadius;\n\n        float m_moverSpeed;\n        \n        public MyDistantObjectImpostor()\n        {\n        }\n\n        public void Start(MyDistantObjectImpostorTypeEnum type)\n        {\n            float angleHorizontal = MathHelper.ToRadians(MyMwcUtils.GetRandomFloat(0, 360));\n            float angleVertical = MathHelper.ToRadians(MyMwcUtils.GetRandomFloat(0, 360));\n\n            float LOW_PRIORITY_ANGLE = MathHelper.ToRadians(45);\n            if (((angleVertical >= (MathHelper.PiOver2 - LOW_PRIORITY_ANGLE)) && (angleVertical <= (MathHelper.PiOver2 + LOW_PRIORITY_ANGLE))) ||\n                ((angleVertical >= (3 * MathHelper.PiOver2 - LOW_PRIORITY_ANGLE)) && (angleVertical <= (3 * MathHelper.PiOver2 + LOW_PRIORITY_ANGLE))))\n            {\n                angleVertical = MathHelper.ToRadians(MyMwcUtils.GetRandomFloat(0, 360));\n            }\n            \n            int typeEnum = MyMwcUtils.GetRandomInt(0, 3);\n            m_angleHorizontal = angleHorizontal;\n            m_angleVertical = angleVertical;           \n            Angle = 0;\n            Color = new Vector4(1f, 1f, 1f, 1f);\n            Type = type;\n            m_fading = true;\n            m_glowTime = 0;\n\n            //  We make a random starting alpha and a random blink multiplier\n            //  so they don't all blink at the same time\n            if (Type == MyDistantObjectImpostorTypeEnum.Blinker)\n            {\n                Radius = MyMwcUtils.GetRandomFloat(3000, 5000f);\n                m_blinkMultiplierUp = MyMwcUtils.GetRandomFloat(70f, 90.0f);\n                m_blinkMultiplierDown = MyMwcUtils.GetRandomFloat(70f, 90.0f);\n                m_startingRadius = Radius;\n            }\n\n            //  Moving objects are initialized with a random destination\n            if (Type == MyDistantObjectImpostorTypeEnum.Mover)\n            {\n                \n                Radius = MyMwcUtils.GetRandomFloat(4000, 6000f);\n                m_targetHorizontal = MathHelper.ToRadians(MyMwcUtils.GetRandomFloat(0, 360));\n                m_moverSpeed = MyMwcUtils.GetRandomFloat(MyDistantObjectsImpostorsConstants.MAX_MOVE_DISTANCE*0.3f, MyDistantObjectsImpostorsConstants.MAX_MOVE_DISTANCE);\n            }\n\n            //  Explosions also have a blink multiplier to make flashes more random.\n            //  Explosions will appear around their targer angles, but\n            //  will stay in the same general area\n            if (Type == MyDistantObjectImpostorTypeEnum.Explosion)\n            {\n                Radius = MyMwcUtils.GetRandomFloat(4000f, 6000f);\n                Color.X = MyMwcUtils.GetRandomFloat(170.0f / 255f, 1.0f);\n                Color.Y = MyMwcUtils.GetRandomFloat(100.0f / 255f, Color.X);\n                Color.Z = MyMwcUtils.GetRandomFloat(0.0f, 40.0f / 255f);\n                Color.W = MyMwcUtils.GetRandomFloat(0.0f, 1.0f);\n                m_blinkMultiplierUp = MyMwcUtils.GetRandomFloat(11f, 16f);\n                m_blinkMultiplierDown = MyMwcUtils.GetRandomFloat(0.5f, 2f);\n                m_targetHorizontal = m_angleHorizontal;\n                m_targetVertical = m_angleVertical;\n                m_startingRadius = Radius;\n                m_IsWaiting = false;\n                m_exploding = Convert.ToBoolean(MyMwcUtils.GetRandomInt(0,1));\n                m_explosionDelay = MyMwcUtils.GetRandomInt((int)(MyDistantObjectsImpostorsConstants.EXPLOSION_WAIT_MILLISECONDS / 2.0f), (int)(MyDistantObjectsImpostorsConstants.EXPLOSION_WAIT_MILLISECONDS * 3f));\n            }\n        }\n\n        public void Update()\n        {\n            if (Type == MyDistantObjectImpostorTypeEnum.Blinker)\n            {\n                updateBlinker();\n            }\n            else if (Type == MyDistantObjectImpostorTypeEnum.Explosion)\n            {\n                updateExplosion();\n            }\n            else if (Type == MyDistantObjectImpostorTypeEnum.Mover)\n            {\n                updateMover();\n            }\n        }\n\n        //  Moving objects move towards a random destination\n        //  When they get there, the destination changes\n        private void updateMover()\n        {\n            if (m_targetHorizontal > m_angleHorizontal)\n            {\n                m_angleHorizontal += m_moverSpeed;\n                m_targetHorizontal += m_moverSpeed;\n            }\n            else\n            {\n                m_angleHorizontal -= m_moverSpeed;\n                m_targetHorizontal -= m_moverSpeed;\n            }\n\n        }\n\n        //  Update an explosion objects\n        //  Explosions blinks and then wait some time\n        //  After the explosion dissapears, it will move to a nearby location and\n        //  repeat\n        private void updateExplosion()\n        {\n            if (m_fading && !m_IsWaiting)\n            {\n                Color.W -= MyDistantObjectsImpostorsConstants.EXPLOSION_FADE * m_blinkMultiplierDown;\n                \n            }\n            else if (m_exploding)\n            {\n                Color.W += MyDistantObjectsImpostorsConstants.EXPLOSION_FADE * m_blinkMultiplierUp;\n            }\n\n            Radius = MathHelper.Lerp(m_startingRadius/4f, m_startingRadius, Color.W);\n\n            if (Color.W <= 0)\n            {\n                m_IsWaiting = true;\n                Color.W = MathHelper.Clamp(Color.W, 0, 1);\n                Color.X = 0;\n                Color.Y = 0;\n                Color.Z = 0;\n\n                if (m_glowTime > m_explosionDelay)\n                {\n                    float minNewHorizontal = m_targetHorizontal - (MyDistantObjectsImpostorsConstants.EXPLOSION_MOVE_DISTANCE * MyMwcUtils.GetRandomInt(4, 7));\n                    float maxNewHorizontal = m_targetHorizontal + (MyDistantObjectsImpostorsConstants.EXPLOSION_MOVE_DISTANCE * MyMwcUtils.GetRandomInt(4, 7));\n                    float minNewVertical = m_targetVertical - (MyDistantObjectsImpostorsConstants.EXPLOSION_MOVE_DISTANCE * MyMwcUtils.GetRandomInt(4, 7));\n                    float maxNewVertical = m_targetVertical + (MyDistantObjectsImpostorsConstants.EXPLOSION_MOVE_DISTANCE * MyMwcUtils.GetRandomInt(4, 7));\n\n                    Color.X = MyMwcUtils.GetRandomFloat(170.0f / 255f, 1.0f);\n                    Color.Y = MyMwcUtils.GetRandomFloat(100.0f / 255f, 1.0f);\n                    Color.Z = MyMwcUtils.GetRandomFloat(0.0f, 40.0f / 255f);\n\n                    m_angleHorizontal = MyMwcUtils.GetRandomFloat(minNewHorizontal, maxNewHorizontal);\n                    m_angleVertical = MyMwcUtils.GetRandomFloat(minNewVertical, maxNewVertical);\n                    m_IsWaiting = false;\n                    m_exploding = true;\n                    m_fading = false;\n                }\n\n            }\n\n            if (m_IsWaiting)\n            {\n                m_glowTime += MyConstants.PHYSICS_STEP_SIZE_IN_MILLISECONDS;\n            }\n            else m_glowTime = 0;\n\n\n            if (Color.W >= 1f)\n            {\n                m_fading = true;\n                m_exploding = false;\n                Color.W = MathHelper.Clamp(Color.W, 0, 1);\n                //  We set delay time here to avoid unnecessarry logic for it\n                m_explosionDelay = MyMwcUtils.GetRandomInt((int)(MyDistantObjectsImpostorsConstants.EXPLOSION_WAIT_MILLISECONDS / 3f),(int)(MyDistantObjectsImpostorsConstants.EXPLOSION_WAIT_MILLISECONDS * 3f));\n            }\n        }\n\n        //  Update a blinking object\n        //  This object will blink and then wait some time\n        private void updateBlinker()\n        {\n            if (m_fading && !m_IsWaiting)\n            {\n                Color.W -= MyDistantObjectsImpostorsConstants.BLINKER_FADE * m_blinkMultiplierDown;\n            }\n            if (m_exploding)\n            {\n                Color.W += MyDistantObjectsImpostorsConstants.BLINKER_FADE *  m_blinkMultiplierUp;\n            }\n\n            Radius = MathHelper.Lerp(m_startingRadius / 4f, m_startingRadius, Color.W);\n\n\n            if (Color.W <= 0.3f)\n            {\n                m_IsWaiting = true;\n                Color.W = MathHelper.Clamp(Color.W, 0, 1);\n\n                if (m_glowTime > MyDistantObjectsImpostorsConstants.BLINKER_WAIT_MILLISECONDS)\n                {\n                    m_fading = false;\n                    m_IsWaiting = false;\n                    m_exploding = true;\n                    m_glowTime = 0;\n                }\n\n            }\n\n            if (m_IsWaiting)\n            {\n                m_glowTime += MyConstants.PHYSICS_STEP_SIZE_IN_MILLISECONDS;\n            }\n\n            if (Color.W >= 1f)\n            {\n                m_exploding = false;\n                m_fading = true;\n                Color.W = MathHelper.Clamp(Color.W, 0, 1);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/BackgroundCube/MyDistantObjectImpostors.cs",
    "content": "﻿using MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.Managers;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Utils.VertexFormats;\nusing SysUtils.Utils;\nusing MinerWarsMath;\nusing System.Collections.Generic;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.Effects;\n\n//using MinerWarsMath.Graphics;\n\nusing SharpDX;\nusing SharpDX.Direct3D9;\nusing SharpDX.Toolkit;\nusing SharpDX.Toolkit.Graphics;\n\n\n//  This class creates billboards to stand in for objects in the distance. They are rendered\n//  between the background cube and the voxel map impostors to create a more interesting \n//  background\n//\n//  Every impostor type has its own texture. Therefore for drawing it is needed to sort impostors according to their textures for better performance \n//  While creating impostors they are already sorted - First third is one type, second third another type... and this doesn't change during game so then we dont need to explicitly sort them\n\nnamespace MinerWars.AppCode.Game.BackgroundCube\n{\n    using Byte4 = MinerWarsMath.Graphics.PackedVector.Byte4;\n    using HalfVector2 = MinerWarsMath.Graphics.PackedVector.HalfVector2;\n    using HalfVector4 = MinerWarsMath.Graphics.PackedVector.HalfVector4;\n    using Vector2 = MinerWarsMath.Vector2;\n    using Vector3 = MinerWarsMath.Vector3;\n    using Vector4 = MinerWarsMath.Vector4;\n    using Rectangle = MinerWarsMath.Rectangle;\n    using Matrix = MinerWarsMath.Matrix;\n    using Color = MinerWarsMath.Color;\n    using BoundingBox = MinerWarsMath.BoundingBox;\n    using BoundingSphere = MinerWarsMath.BoundingSphere;\n    using BoundingFrustum = MinerWarsMath.BoundingFrustum;\n\n    struct MyDistantImpostorProperties\n    {\n        public MyTexture2D Texture;\n        public bool LitBySun;\n        public int IndexStart;\n        public int Count;\n    }\n\n    class MyDistantObjectImpostors\n    {\n        MyVertexFormatPositionTextureColor[] m_vertices;\n        List<MyDistantObjectImpostor> m_impostors;\n        MyDistantImpostorProperties[] m_impostorProperties;\n\n        public float Scale = 1;\n\n        public void LoadData()\n        {\n            m_impostorProperties = new MyDistantImpostorProperties[3];\n            CreateImpostors();\n        }\n\n        public void UnloadData()\n        {\n            m_impostors.Clear();\n            m_impostorProperties = null;\n        }\n\n        public void LoadContent()\n        {\n            MyMwcLog.WriteLine(\"MyDistantObjectImpostors.LoadContent() - START\");\n            MyMwcLog.IncreaseIndent();\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyDistantObjectImpostors::LoadContent\");\n\n            m_impostorProperties[0].Texture = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\Particles\\\\Blinker\");\n            m_impostorProperties[1].Texture = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\Particles\\\\Explosion\");\n            m_impostorProperties[2].Texture = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\Particles\\\\Mover\");\n            m_impostorProperties[0].LitBySun = false;\n            m_impostorProperties[1].LitBySun = false;\n            m_impostorProperties[2].LitBySun = true;\n\n            if (m_vertices == null)\n            {\n                m_vertices =\n                    new MyVertexFormatPositionTextureColor[\n                        MyDistantObjectsImpostorsConstants.MAX_NUMBER_DISTANT_OBJECTS *\n                        MyDistantObjectsImpostorsConstants.VERTEXES_PER_IMPOSTOR];\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyDistantObjectImpostors.LoadContent() - END\");\n        }\n\n        public void UnloadContent()\n        {\n            /*m_impostorProperties[0].Texture.Dispose();\n            m_impostorProperties[1].Texture.Dispose();\n            m_impostorProperties[2].Texture.Dispose();*/\n        }\n\n        void CreateImpostors()\n        {\n            m_impostors = new List<MyDistantObjectImpostor>();\n            MyDistantObjectImpostorTypeEnum lastType = MyDistantObjectImpostorTypeEnum.Blinker;\n            for (int i = 0; i < MyDistantObjectsImpostorsConstants.MAX_NUMBER_DISTANT_OBJECTS; i++)\n            {\n\n                //  assign some value because something must be assigned. later down in code we decide what impostor type will be this\n                MyDistantObjectImpostorTypeEnum type = MyDistantObjectImpostorTypeEnum.Blinker;\n\n                //  First third will be blinkers\n                if (i <= MyDistantObjectsImpostorsConstants.MAX_NUMBER_DISTANT_OBJECTS * 0.33f)\n                {\n                    type = MyDistantObjectImpostorTypeEnum.Blinker;\n                    m_impostorProperties[(int)type].IndexStart = 0;\n                }\n                //  Second third will be explosions\n                if (i > MyDistantObjectsImpostorsConstants.MAX_NUMBER_DISTANT_OBJECTS * 0.33f)\n                {\n                    type = MyDistantObjectImpostorTypeEnum.Explosion;\n\n                    //  If this is first explosion impostor we calculate its start index\n                    if (lastType == MyDistantObjectImpostorTypeEnum.Blinker)\n                    {\n                        m_impostorProperties[(int)type].IndexStart = (MyVoxelMapImpostorsConstants.VERTEXES_PER_IMPOSTOR * i);\n                        lastType = MyDistantObjectImpostorTypeEnum.Explosion;\n                    }\n                }\n                //  Last third will be movers\n                if (i > MyDistantObjectsImpostorsConstants.MAX_NUMBER_DISTANT_OBJECTS * 0.66f)\n                {\n                    type = MyDistantObjectImpostorTypeEnum.Mover;\n\n                    //  If this is first explosion impostor we calculate its start index\n                    if (lastType == MyDistantObjectImpostorTypeEnum.Explosion)\n                    {\n                        m_impostorProperties[(int)type].IndexStart = (MyVoxelMapImpostorsConstants.VERTEXES_PER_IMPOSTOR * i);\n                        lastType = MyDistantObjectImpostorTypeEnum.Mover;\n                    }\n                }\n\n                //  We calculate how many impostors of each type we have\n                m_impostorProperties[(int)type].Count++;\n                MyDistantObjectImpostor impostor = new MyDistantObjectImpostor();\n                impostor.Start(type);\n                m_impostors.Add(impostor);\n            }\n        }\n\n        void CopyToVertexBuffer()\n        {\n            int i = 0;\n            Vector2 texTopLeft = new Vector2(0, 0);\n            Vector2 texTopRight = new Vector2(1, 0);\n            Vector2 texBottomLeft = new Vector2(0, 1);\n            Vector2 texBottomRight = new Vector2(1, 1);\n\n            foreach (MyDistantObjectImpostor impostor in m_impostors)\n            {\n                MyQuad retQuad;\n                float ratio = m_impostorProperties[(int)impostor.Type].Texture.Height / (float)m_impostorProperties[(int)impostor.Type].Texture.Width;\n\n                MyUtils.GetBillboardQuadAdvancedRotated(out retQuad, impostor.Position, impostor.Radius * Scale, impostor.Radius * Scale * ratio, impostor.Angle, Vector3.Zero);\n\n                Vector3 position0 = retQuad.Point0;\n                Vector3 position1 = retQuad.Point1;\n                Vector3 position2 = retQuad.Point2;\n                Vector3 position3 = retQuad.Point3;\n\n                m_vertices[i * MyVoxelMapImpostorsConstants.VERTEXES_PER_IMPOSTOR + 0] = new MyVertexFormatPositionTextureColor(position0, texTopLeft, impostor.Color);\n                m_vertices[i * MyVoxelMapImpostorsConstants.VERTEXES_PER_IMPOSTOR + 1] = new MyVertexFormatPositionTextureColor(position3, texBottomLeft, impostor.Color);\n                m_vertices[i * MyVoxelMapImpostorsConstants.VERTEXES_PER_IMPOSTOR + 2] = new MyVertexFormatPositionTextureColor(position1, texTopRight, impostor.Color);\n                m_vertices[i * MyVoxelMapImpostorsConstants.VERTEXES_PER_IMPOSTOR + 3] = new MyVertexFormatPositionTextureColor(position3, texBottomLeft, impostor.Color);\n                m_vertices[i * MyVoxelMapImpostorsConstants.VERTEXES_PER_IMPOSTOR + 4] = new MyVertexFormatPositionTextureColor(position2, texBottomRight, impostor.Color);\n                m_vertices[i * MyVoxelMapImpostorsConstants.VERTEXES_PER_IMPOSTOR + 5] = new MyVertexFormatPositionTextureColor(position1, texTopRight, impostor.Color);\n                i++;\n            }\n        }\n\n        public void Update()\n        {\n            foreach (MyDistantObjectImpostor impostor in m_impostors)\n            {\n                impostor.Update();\n            }\n        }\n\n        public void Draw(MyEffectDistantImpostors effect)\n        {\n            int trianglesCount = m_impostors.Count * MyDistantObjectsImpostorsConstants.TRIANGLES_PER_IMPOSTOR;\n            if (trianglesCount <= 0) return;\n\n            CopyToVertexBuffer();\n\n            Device device = MyMinerGame.Static.GraphicsDevice;\n            RasterizerState.CullNone.Apply();\n            BlendState.NonPremultiplied.Apply();\n            DepthStencilState.None.Apply();\n\n            Matrix projection = Matrix.CreatePerspectiveFieldOfView(MyCamera.Zoom.GetFOV(), MyCamera.ForwardAspectRatio, 1000, 10000000);\n\n            effect.SetWorldMatrix(Matrix.CreateTranslation(-MyCamera.Position));\n            effect.SetViewProjectionMatrix(MyCamera.ViewMatrix * projection);\n            effect.SetSunDirection(-MyGuiScreenGamePlay.Static.GetDirectionToSunNormalized());\n\n            for (int i = 0; i < m_impostorProperties.Length; i++)\n            {\n                effect.SetImpostorTexture(m_impostorProperties[i].Texture);\n                effect.SetTechnique(m_impostorProperties[i].LitBySun ? MyEffectDistantImpostors.Technique.ColoredLit : MyEffectDistantImpostors.Technique.Colored);\n                device.DrawUserPrimitives(PrimitiveType.TriangleList, m_impostorProperties[i].IndexStart, MyVoxelMapImpostorsConstants.TRIANGLES_PER_IMPOSTOR * m_impostorProperties[i].Count, m_vertices);              \n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/BackgroundCube/MyVoxelMapImpostors.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Effects;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.SolarSystem;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Utils.VertexFormats;\nusing MinerWars.AppCode.Game.World;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils.Utils;\n\nusing SharpDX;\nusing SharpDX.Direct3D9;\nusing SharpDX.Toolkit;\nusing SharpDX.Toolkit.Graphics;\n\n\n//  This class loads voxel maps surrounding our sector, draws them to one large render target (texture atlas), create static\n//  vertex buffer and then draws them every frame at background.\n//  These aren't real impostors because we don't redraw them when camera moves. It's just a bunch of static billboards in the background.\n//  Impostors must write to depth buffer, so then SunGlare and SunWind will work. In fact, impostors are objects too.\n\nnamespace MinerWars.AppCode.Game.BackgroundCube\n{\n    using Byte4 = MinerWarsMath.Graphics.PackedVector.Byte4;\n    using HalfVector2 = MinerWarsMath.Graphics.PackedVector.HalfVector2;\n    using HalfVector4 = MinerWarsMath.Graphics.PackedVector.HalfVector4;\n    using Vector2 = MinerWarsMath.Vector2;\n    using Vector3 = MinerWarsMath.Vector3;\n    using Vector4 = MinerWarsMath.Vector4;\n    using Rectangle = MinerWarsMath.Rectangle;\n    using Matrix = MinerWarsMath.Matrix;\n    using Color = MinerWarsMath.Color;\n    using BoundingBox = MinerWarsMath.BoundingBox;\n    using BoundingSphere = MinerWarsMath.BoundingSphere;\n    using BoundingFrustum = MinerWarsMath.BoundingFrustum;\n    using MinerWars.AppCode.Game.Render;\n    using MinerWars.AppCode.Game.TransparentGeometry;\n    using MinerWars.AppCode.Game.Textures;\n    using MinerWars.AppCode.Game.Managers;\n\n    class MyVoxelMapImpostors\n    {\n        class MyVoxelMapImpostor : IComparable\n        {\n            public Vector3 Position;\n            public float Radius;\n            public float Angle;\n            float m_distance;\n\n            public MyVoxelMapImpostor(Vector3 position, float radius, float angle)\n            {\n                Position = position;\n                Radius = radius;\n                Angle = angle;\n                m_distance = position.Length();\n            }\n\n            //  For sorting impostors back-to-front (so bigger distance is first in the list)\n            public int CompareTo(object compareToObject)\n            {\n                MyVoxelMapImpostor compareToImpostor = (MyVoxelMapImpostor)compareToObject;\n                return compareToImpostor.m_distance.CompareTo(this.m_distance);\n            }\n        }\n\n        public enum MyImpostorType\n        {\n            Billboards,\n            Nebula\n        }\n\n        class MyVoxelMapImpostorGroup\n        {\n            public MyImpostorProperties ImpostorProperties;\n\n            //Texture2D m_texture;\n            VertexBuffer m_vertexBuffer;\n            int m_trianglesCount;\n            MyVertexFormatPositionTextureColor[] m_vertices;\n            List<MyVoxelMapImpostor> m_voxelMapImpostors;\n            Vector4 m_animationTime = Vector4.Zero;\n\n            public void LoadContent()\n            {\n                CreateVertices(CreateFakeImpostors());\n            }\n\n            public void UnloadContent()\n            {\n                if (m_vertexBuffer != null)\n                {\n                    m_vertexBuffer.Dispose();\n                    m_vertexBuffer = null;\n                }\n            }\n\n            //  I used this method only when we didn't have real persistant sectors... for fly-through animations\n            List<MyVoxelMapImpostor> CreateFakeImpostors()\n            {\n                List<MyVoxelMapImpostor> ret = new List<MyVoxelMapImpostor>(ImpostorProperties.ImpostorsCount);\n\n                for (int i = 0; i < ImpostorProperties.ImpostorsCount; i++)\n                {\n                    Vector3 sectorCenter = Vector3.Zero;\n\n                    float randomDistance = MyMwcUtils.GetRandomFloat(ImpostorProperties.MinDistance, ImpostorProperties.MaxDistance);\n                    Vector3 randomPositionWithinSector = MyMwcUtils.GetRandomVector3Normalized() * randomDistance;\n\n                    float radius = MyMwcUtils.GetRandomFloat(ImpostorProperties.MinRadius, ImpostorProperties.MaxRadius);\n\n                    Vector3 position = sectorCenter + randomPositionWithinSector;\n\n                    float angle = MyMwcUtils.GetRandomRadian();\n\n                    ret.Add(new MyVoxelMapImpostor(position, radius, angle));\n                }\n\n                //  Sort by distance (back-to-front) so alpha won't make problems on overlapping quads\n                ret.Sort();\n\n                return ret;\n            }\n\n            void CreateVertices(List<MyVoxelMapImpostor> impostors)\n            {\n                if (impostors == null)\n                    return;\n\n                m_trianglesCount = impostors.Count * MyVoxelMapImpostorsConstants.TRIANGLES_PER_IMPOSTOR;\n                if (m_trianglesCount <= 0) return;\n\n                m_vertices = new MyVertexFormatPositionTextureColor[impostors.Count * MyVoxelMapImpostorsConstants.VERTEXES_PER_IMPOSTOR];\n\n                Vector2 texCoord0 = new Vector2(0, 0);\n                Vector2 texCoord1 = new Vector2(1, 0);\n                Vector2 texCoord2 = new Vector2(1, 1);\n                Vector2 texCoord3 = new Vector2(0, 1);\n\n                for (int i = 0; i < impostors.Count; i++)\n                {\n                    MyQuad retQuad;\n                    MyUtils.GetBillboardQuadAdvancedRotated(out retQuad, impostors[i].Position, impostors[i].Radius, impostors[i].Angle, Vector3.Zero);\n\n                    Vector3 position0 = retQuad.Point0;\n                    Vector3 position1 = retQuad.Point1;\n                    Vector3 position2 = retQuad.Point2;\n                    Vector3 position3 = retQuad.Point3;\n\n                    //  Alpha must stay opaque (1.0)\n                    Vector4 color = MyMwcUtils.GetRandomFloat(MyVoxelMapImpostorsConstants.RANDOM_COLOR_MULTIPLIER_MIN, MyVoxelMapImpostorsConstants.RANDOM_COLOR_MULTIPLIER_MAX) * Vector4.One;\n                    color.W = 1;\n\n                    m_vertices[i * MyVoxelMapImpostorsConstants.VERTEXES_PER_IMPOSTOR + 0] = new MyVertexFormatPositionTextureColor(position0, texCoord0, color);\n                    m_vertices[i * MyVoxelMapImpostorsConstants.VERTEXES_PER_IMPOSTOR + 1] = new MyVertexFormatPositionTextureColor(position1, texCoord1, color);\n                    m_vertices[i * MyVoxelMapImpostorsConstants.VERTEXES_PER_IMPOSTOR + 2] = new MyVertexFormatPositionTextureColor(position3, texCoord3, color);\n                    m_vertices[i * MyVoxelMapImpostorsConstants.VERTEXES_PER_IMPOSTOR + 3] = new MyVertexFormatPositionTextureColor(position1, texCoord1, color);\n                    m_vertices[i * MyVoxelMapImpostorsConstants.VERTEXES_PER_IMPOSTOR + 4] = new MyVertexFormatPositionTextureColor(position2, texCoord2, color);\n                    m_vertices[i * MyVoxelMapImpostorsConstants.VERTEXES_PER_IMPOSTOR + 5] = new MyVertexFormatPositionTextureColor(position3, texCoord3, color);\n                }\n            }\n\n            public void LoadInDraw()\n            {\n                if (m_trianglesCount > 0)\n                {\n                    m_vertexBuffer = new VertexBuffer(MyMinerGame.Static.GraphicsDevice, MyVertexFormatPositionTextureColor.Stride * m_vertices.Length, Usage.WriteOnly, VertexFormat.None, Pool.Default);\n                    m_vertexBuffer.Lock(0, 0, LockFlags.None).WriteRange(m_vertices);\n                    m_vertexBuffer.Unlock();\n                    m_vertexBuffer.DebugName = \"VoxelMapImpostors\";\n                    m_vertexBuffer.Tag = this;\n                }\n\n                //  Don't need anymore\n                m_vertices = null;\n            }\n\n\n            public void PrepareForDraw(MyEffectDistantImpostors effect)\n            {            \n                if (!ImpostorProperties.Enabled)\n                    return;\n\n                if (ImpostorProperties.ImpostorType == MyImpostorType.Nebula)\n                {\n                    Matrix mat = Matrix.CreateScale(ImpostorProperties.MinDistance) * Matrix.CreateTranslation(MyCamera.Position * 0.5f);\n\n                    Matrix projection = Matrix.CreatePerspectiveFieldOfView(MyCamera.Zoom.GetFOV(), MyCamera.ForwardAspectRatio, 1000, 10000000);\n\n                    effect.SetWorldMatrix(mat);\n                    effect.SetViewProjectionMatrix(MyCamera.ViewMatrix * projection);\n                    effect.SetScale(ImpostorProperties.Radius * 0.00018f);\n                    effect.SetColor(ImpostorProperties.Color);\n\n                    effect.SetContrastAndIntensity(new Vector2(ImpostorProperties.Contrast, ImpostorProperties.Intensity));\n                    effect.SetAnimation(m_animationTime);\n                    effect.SetCameraPos(MyCamera.Position);\n                    effect.SetSunDirection(-MyGuiScreenGamePlay.Static.GetDirectionToSunNormalized());\n\n                    effect.SetTechnique(MyEffectDistantImpostors.Technique.Textured3D);\n\n                    effect.Begin();\n                    MySimpleObjectDraw.ModelSphere.Render();\n                    effect.End();\n                }  \n            }\n\n            public void Draw(MyEffectDistantImpostors effect, MyImpostorType impostorType)\n            {\n                if (!ImpostorProperties.Enabled)\n                    return;\n\n                if (impostorType != ImpostorProperties.ImpostorType)\n                    return;\n                  \n                if (ImpostorProperties.ImpostorType == MyImpostorType.Billboards)\n                {\n                    if (m_trianglesCount <= 0) return;\n\n                    m_animationTime += ImpostorProperties.AnimationSpeed;\n\n                    Device device = MyMinerGame.Static.GraphicsDevice;\n\n                    if (MyRenderConstants.RenderQualityProfile.ForwardRender)\n                        DepthStencilState.DepthRead.Apply();\n\n                    Matrix worldMatrix = Matrix.Identity;\n\n                    if (ImpostorProperties.AnimationSpeed.X > 0)\n                        worldMatrix *= Matrix.CreateRotationX(m_animationTime.X);\n                    if (ImpostorProperties.AnimationSpeed.Y > 0)\n                        worldMatrix *= Matrix.CreateRotationX(m_animationTime.Y);\n                    if (ImpostorProperties.AnimationSpeed.Z > 0)\n                        worldMatrix *= Matrix.CreateRotationX(m_animationTime.Z);\n\n                    worldMatrix.Translation = MyCamera.Position * 0.5f;\n                    effect.SetWorldMatrix(worldMatrix);\n\n                    MyTexture2D texture = null;\n                    if (ImpostorProperties.Material.HasValue)\n                    {\n                        texture = MyTransparentGeometry.GetTexture(ImpostorProperties.Material.Value);\n                    }\n                    effect.SetImpostorTexture(texture);\n                    device.SetStreamSource(0, m_vertexBuffer, 0, MyVertexFormatPositionTextureColor.Stride);\n                    device.VertexDeclaration = MyVertexFormatPositionTextureColor.VertexDeclaration;\n\n                    effect.SetTechnique(MyEffectDistantImpostors.Technique.ColoredLit);\n\n                    effect.Begin();\n                    device.DrawPrimitives(PrimitiveType.TriangleList, 0, m_trianglesCount);\n                    effect.End();\n                    MyPerformanceCounter.PerCameraDraw.TotalDrawCalls++;\n                }\n                else if (ImpostorProperties.ImpostorType == MyImpostorType.Nebula && !MyRenderConstants.RenderQualityProfile.ForwardRender)\n                {\n                    m_animationTime += ImpostorProperties.AnimationSpeed * (MyFpsManager.FrameTime / 100.0f);\n\n                    BlendState.NonPremultiplied.Apply();\n                    RasterizerState.CullCounterClockwise.Apply();\n                    DepthStencilState.None.Apply();\n\n                    MyRender.Blit(MyRender.GetRenderTarget(MyRenderTargets.AuxiliaryHalf0), true);\n                }    \n            }\n        }\n\n        List<MyVoxelMapImpostorGroup> m_voxelMapImpostorGroups = new List<MyVoxelMapImpostorGroup>();\n        bool m_loaded = false; \n\n \n        public void LoadContent(List<MyMwcObjectBuilder_Base> enterSectorResponses, bool createRealImpostors)\n        {\n            MyMwcLog.WriteLine(\"MyVoxelMapImpostors.LoadContent() - START\");\n            MyMwcLog.IncreaseIndent();\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyVoxelMapImpostors::LoadContent\");\n\n            UnloadContent();\n            m_voxelMapImpostorGroups.Clear();\n\n            foreach (var i in MySector.ImpostorProperties)\n            {\n                m_voxelMapImpostorGroups.Add(new MyVoxelMapImpostorGroup()\n                {\n                    ImpostorProperties = i\n                });\n            }\n\n            foreach (MyVoxelMapImpostorGroup group in m_voxelMapImpostorGroups)\n            {\n                group.LoadContent();\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyVoxelMapImpostors.LoadContent() - END\");\n        }\n\n        public void UnloadContent()\n        {\n            foreach (MyVoxelMapImpostorGroup group in m_voxelMapImpostorGroups)\n            {\n                group.UnloadContent();\n            }\n\n            m_loaded = false; \n        }\n\n        \n       \n        //\tSpecial method that loads data into GPU, and can be called only from Draw method, never from LoadContent or from background thread.\n        //\tBecause that would lead to empty vertex/index buffers if they are filled/created while game is minimized (remember the issue - alt-tab during loading screen)\n        void LoadInDraw()\n        {\n            if (m_loaded == false)\n            {\n                foreach (MyVoxelMapImpostorGroup group in m_voxelMapImpostorGroups)\n                {\n                    group.LoadInDraw();\n                }\n\n                m_loaded = true; \n            }\n        }\n\n        public void Draw(MyEffectDistantImpostors effect)\n        {\n            LoadInDraw();\n            \n            Device device = MyMinerGame.Static.GraphicsDevice;\n            RasterizerState.CullNone.Apply();\n            MyStateObjects.NonPremultiplied_NoAlphaWrite_BlendState.Apply();\n            MyStateObjects.DistantImpostorsDepthStencilState.Apply();\n\n\n            Matrix projection = Matrix.CreatePerspectiveFieldOfView(MyCamera.Zoom.GetFOV(), MyCamera.ForwardAspectRatio, 1000, 10000000);\n            effect.SetViewProjectionMatrix(MyCamera.ViewMatrix * projection);\n            effect.SetSunDirection(-MyGuiScreenGamePlay.Static.GetDirectionToSunNormalized());\n            MyCamera.SetupBaseEffect(effect);\n\n            foreach (MyVoxelMapImpostorGroup group in m_voxelMapImpostorGroups)\n            {\n                group.Draw(effect, MyImpostorType.Billboards);\n            }\n\n            BlendState.NonPremultiplied.Apply();\n\n            foreach (MyVoxelMapImpostorGroup group in m_voxelMapImpostorGroups)\n            {\n                group.Draw(effect, MyImpostorType.Nebula);\n            }\n        }\n\n        public void PrepareForDraw(MyEffectDistantImpostors effect)\n        {           \n            RasterizerState.CullClockwise.Apply();\n            BlendState.Opaque.Apply();\n            MyMinerGame.SetRenderTarget(MyRender.GetRenderTarget(MyRenderTargets.AuxiliaryHalf0), null);\n\n            foreach (MyVoxelMapImpostorGroup group in m_voxelMapImpostorGroups)\n            {\n                group.PrepareForDraw(effect);\n            }     \n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Cockpit/MyCockpitGlass.cs",
    "content": "﻿using MinerWarsMath;\n//using MinerWarsMath.Graphics;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.Lights;\nusing MinerWars.AppCode.Game.Models;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Render;\nusing MinerWars.AppCode.Game.Effects;\nusing MinerWars.AppCode.Game.Entities;\nusing SysUtils.Utils;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Entities.Ships.SubObjects;\nusing MinerWars.AppCode.Game.TransparentGeometry;\n\nusing SharpDX.Direct3D9;\nusing SharpDX.Toolkit.Graphics;\n\n//  Draws cockpit glass (scratches, etc). Left, front and right window.\n\nnamespace MinerWars.AppCode.Game.Cockpit\n{\n    static class MyCockpitGlass\n    {\n        //Bounding sphere used to calculate nearby lights\n        static BoundingSphere m_boundingSphereForLights = new BoundingSphere();\n\n\n        static MyCockpitGlass()\n        {\n            // Cockpit interior drawn like entity under small ship\n            MyRender.RegisterRenderModule(MyRenderModuleEnum.CockpitGlass, \"Cockpit glass\", Draw, MyRenderStage.AlphaBlend, 200, true);\n        }\n\n        public static void LoadContent()\n        {\n            MyMwcLog.WriteLine(\"MyCockpitGlass.LoadContent() - START\");\n            MyMwcLog.IncreaseIndent();\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyCockpitGlass::LoadContent\");\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();    \n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyCockpitGlass.LoadContent() - END\");\n        }\n\n        public static void UnloadContent()\n        {\n            MyMwcLog.WriteLine(\"MyCockpitGlass.UnloadContent - START\");\n            MyMwcLog.IncreaseIndent();\n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyCockpitGlass.UnloadContent - END\");\n        }\n\n\n        public static bool CanDrawCockpit()\n        {\n            return MyCockpitWeapons.CanDrawCockpitWeapons() && MySession.PlayerShip.Config.ViewMode.Current == MyViewModeTypesEnum.CockpitOn;\n        }\n\n        public static void Draw()\n        {         \n            if (!CanDrawCockpit())\n                return;\n\n            MyModel model = MyModels.GetModelForDraw(MySession.PlayerShip.CockpitGlassModelEnum);\n\n            RasterizerState.CullNone.Apply();\n\n            if (MyRenderConstants.RenderQualityProfile.ForwardRender)\n                DepthStencilState.DepthRead.Apply();\n            else\n            {\n                 MyStateObjects.DepthStencil_StencilReadOnly.Apply();\n            }\n\n            BlendState.NonPremultiplied.Apply();\n\n            MyEffectCockpitGlass effect = (MyEffectCockpitGlass)MyRender.GetEffect(MyEffects.CockpitGlass);\n\n            float glassDirtAlpha = MathHelper.Lerp(MyCockpitGlassConstants.GLASS_DIRT_MIN, MyCockpitGlassConstants.GLASS_DIRT_MAX,\n                MySession.PlayerShip.GlassDirtLevel);\n            effect.SetGlassDirtLevelAlpha(new Vector4(glassDirtAlpha, 0,0,0));\n\n            effect.SetWorldMatrix(MySession.PlayerShip.PlayerHeadForCockpitInteriorWorldMatrix);\n            effect.SetViewMatrix(MyCamera.ViewMatrix);\n\n            if (!MyRenderConstants.RenderQualityProfile.ForwardRender)\n            {\n                Matrix projection = MyCamera.ProjectionMatrixForNearObjects;\n\n                effect.SetWorldViewProjectionMatrix(MySession.PlayerShip.PlayerHeadForCockpitInteriorWorldMatrix * MyCamera.ViewMatrixAtZero * projection);\n            }\n            else\n            {\n                effect.SetWorldViewProjectionMatrix(MySession.PlayerShip.PlayerHeadForCockpitInteriorWorldMatrix * MyCamera.ViewProjectionMatrixAtZero);\n            }\n\n            MyMeshMaterial cockpitMaterial = model.GetMeshList()[0].Materials[0];\n            cockpitMaterial.PreloadTexture();\n            effect.SetCockpitGlassTexture(cockpitMaterial.DiffuseTexture);\n\n            if (!MyRenderConstants.RenderQualityProfile.ForwardRender)\n            {\n                Texture depthRT = MyRender.GetRenderTarget(MyRenderTargets.Depth);\n                effect.SetDepthTexture(depthRT);\n\n                effect.SetHalfPixel(MyUtils.GetHalfPixel(depthRT.GetLevelDescription(0).Width, depthRT.GetLevelDescription(0).Height));\n            }\n\n            Vector4 sunColor = MySunWind.GetSunColor();\n            effect.SetSunColor(new Vector3(sunColor.X, sunColor.Y, sunColor.Z));\n\n            effect.SetDirectionToSun(MyGuiScreenGamePlay.Static.GetDirectionToSunNormalized());\n\n            effect.SetAmbientColor(Vector3.Zero);\n            effect.SetReflectorPosition(MyCamera.Position - 4 * MySession.PlayerShip.WorldMatrix.Forward);\n\n            if (MySession.PlayerShip.Light != null)\n            {\n                effect.SetNearLightColor(MySession.PlayerShip.Light.Color);\n                effect.SetNearLightRange(MySession.PlayerShip.Light.Range);\n            }\n\n            MyRender.GetShadowRenderer().SetupShadowBaseEffect(effect);\n            effect.SetShadowBias(0.001f);\n\n            m_boundingSphereForLights.Center = MySession.PlayerShip.GetPosition();\n            MyLights.UpdateEffect(effect, ref m_boundingSphereForLights, true);\n\n            effect.Begin();\n            model.Render();\n            effect.End();\n\n            MyCockpitGlassDecals.Draw(effect); \n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Cockpit/MyCockpitGlassDecals.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing MinerWarsMath;\nusing MinerWarsMath.Graphics;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.Managers;\nusing MinerWars.AppCode.Game.Lights;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Utils.VertexFormats;\nusing MinerWars.AppCode.Game.Render;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Effects;\nusing MinerWars.AppCode.Game.Textures;\n//  Holds and draws cockpit decals (bullet holes, dirt, etc)\n\nnamespace MinerWars.AppCode.Game.Cockpit\n{\n    //  IMPORTANT: If you add new texture, don't forget create for it a buffer few lines below\n    enum MyCockpitGlassDecalTexturesEnum : byte\n    {\n        DirtOnGlass,\n        BulletHoleOnGlass,\n        BulletHoleSmallOnGlass\n    }\n\n    static class MyCockpitGlassDecals\n    {\n        static MyVertexFormatGlassDecal[] m_vertices;\n        static MyTexture2D[] m_texturesDiffuse;\n        static MyCockpitGlassDecalsBuffer[] m_buffers;\n        static List<MyTriangle_Vertex_Normals> m_neighbourTriangles;\n\n        public static void LoadData()\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyCockpitGlassDecals.LoadData\");\n\n            //  Must be smaller or equal, because if not, no neighbour triangleVertexes will fit in the buffer\n            MyCommonDebugUtils.AssertDebug(MyCockpitGlassDecalsConstants.MAX_NEIGHBOUR_TRIANGLES <= MyCockpitGlassDecalsConstants.MAX_DECAL_TRIANGLES_IN_BUFFER);\n\n            m_vertices = new MyVertexFormatGlassDecal[MyCockpitGlassDecalsConstants.MAX_DECAL_TRIANGLES_IN_BUFFER * MyCockpitGlassDecalsConstants.VERTEXES_PER_DECAL];\n            m_neighbourTriangles = new List<MyTriangle_Vertex_Normals>(MyCockpitGlassDecalsConstants.MAX_NEIGHBOUR_TRIANGLES);\n\n            //  Decal buffers\n            m_buffers = new MyCockpitGlassDecalsBuffer[Enum.GetValues(typeof(MyCockpitGlassDecalTexturesEnum)).Length];\n            m_buffers[(int)MyCockpitGlassDecalTexturesEnum.DirtOnGlass] = new MyCockpitGlassDecalsBuffer(3000, 500, 100, 2 * 1000, 1000);\n            m_buffers[(int)MyCockpitGlassDecalTexturesEnum.BulletHoleOnGlass] = new MyCockpitGlassDecalsBuffer(1000, 500, 10, 15 * 1000, 300);\n            m_buffers[(int)MyCockpitGlassDecalTexturesEnum.BulletHoleSmallOnGlass] = new MyCockpitGlassDecalsBuffer(1000, 500, 100, 15 * 1000, 300);\n\n            int texturesCount = MyEnumsToStrings.CockpitGlassDecals.Length;\n            m_texturesDiffuse = new MyTexture2D[texturesCount];\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        public static void LoadContent()\n        {\n            MyMwcLog.WriteLine(\"MyCockpitGlassDecals.LoadContent() - START\");\n            MyMwcLog.IncreaseIndent();\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyCockpitGlassDecals::LoadContent\");\n            \n            int texturesCount = MyEnumsToStrings.CockpitGlassDecals.Length;\n            for (int i = 0; i < texturesCount; i++)\n            {\n                m_texturesDiffuse[i] =\n                    MyTextureManager.GetTexture<MyTexture2D>(\"Textures2\\\\Models\\\\Ships\\\\Cockpits\\\\Decals\\\\\" + MyEnumsToStrings.CockpitGlassDecals[i] + \"_Diffuse\", t => MyUtils.AssertTexture((MyTexture2D)t));\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyCockpitGlassDecals.LoadContent() - END\");\n        }\n\n        public static void UnloadContent()\n        {\n            MyMwcLog.WriteLine(\"MyCockpitGlassDecals.UnloadContent - START\");\n            MyMwcLog.IncreaseIndent();\n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyCockpitGlassDecals.UnloadContent - END\");\n        }\n\n        static MyCockpitGlassDecalsBuffer GetBuffer(MyCockpitGlassDecalTexturesEnum decalTexture)\n        {\n            return m_buffers[(int)decalTexture];\n        }\n\n        //  Add cockpit decal and all surounding triangles. Method needs intersection, but result of the intersection must be with ideal glass, not any other part of a miner ship.\n        public static void Add(MyCockpitGlassDecalTexturesEnum decalTexture, float decalSize, float angle, float alpha,\n            ref MyIntersectionResultLineTriangleEx idealIntersection, bool alphaBlendByAngle)\n        {\n            MyCockpitGlassDecalsBuffer buffer = GetBuffer(decalTexture);\n\n            //\tPolomer decalu a scale faktor pre vypocet textury.\n            //  Decal size is something as radius of a decal, so when converting from real metres to texture space, we need to divide by 2.0\n            float decalScale = 1.0f / decalSize / 2.0f;\n\n            Vector3 rightVector = MyMwcUtils.Normalize(idealIntersection.Triangle.InputTriangle.Vertex0 - idealIntersection.IntersectionPointInObjectSpace);\n            Vector3 upVector = MyMwcUtils.Normalize(Vector3.Cross(rightVector, idealIntersection.NormalInObjectSpace));\n\n            //  We create world matrix for the decal and then rotate the matrix, so we can extract rotated right/up vectors/planes for texture coord0 calculations\n            Matrix decalMatrix = Matrix.CreateRotationZ(angle) * Matrix.CreateWorld(idealIntersection.IntersectionPointInObjectSpace, idealIntersection.NormalInObjectSpace, upVector);\n\n            //\tRight plane\n            MyPlane rightPlane;\n            rightPlane.Point = idealIntersection.IntersectionPointInObjectSpace;\n            rightPlane.Normal = MyUtils.GetTransformNormalNormalized(Vector3.Right, ref decalMatrix);\n\n            //\tUp plane\n            MyPlane upPlane;\n            upPlane.Point = idealIntersection.IntersectionPointInObjectSpace;\n            upPlane.Normal = MyUtils.GetTransformNormalNormalized(Vector3.Up, ref decalMatrix);\n\n            float? maxAngle = null;\n            if (alphaBlendByAngle == false) maxAngle = MyCockpitGlassDecalsConstants.MAX_NEIGHBOUR_ANGLE;\n\n            BoundingSphere decalSphere = new BoundingSphere(idealIntersection.IntersectionPointInObjectSpace, decalSize);\n            m_neighbourTriangles.Clear();\n            //idealIntersection.PhysObject.GetTrianglesIntersectingSphere(ref decalSphere, idealIntersection.NormalInObjectSpace, maxAngle, idealIntersection.TriangleHelperIndex, m_neighbourTriangles, buffer.MaxNeighbourTriangles);\n            idealIntersection.Entity.GetTrianglesIntersectingSphere(ref decalSphere, idealIntersection.NormalInObjectSpace, maxAngle, m_neighbourTriangles, buffer.MaxNeighbourTriangles);\n\n            int trianglesToAdd = m_neighbourTriangles.Count;// +1;\n            if (buffer.CanAddTriangles(trianglesToAdd) == true)\n            {\n                //  Decal on triangleVertexes we hit\n//                buffer.Add(idealIntersection.Triangle.InputTriangle, idealIntersection.NormalInObjectSpace, ref rightPlane, ref upPlane, decalScale, color, alphaBlendByAngle, ref decalSphere);\n\n                //  Create decal for every neighbour triangleVertexes\n                for (int i = 0; i < m_neighbourTriangles.Count; i++)\n                {\n                    buffer.Add(m_neighbourTriangles[i].Vertexes, idealIntersection.NormalInObjectSpace, ref rightPlane, ref upPlane, decalScale, alpha, alphaBlendByAngle, ref decalSphere);\n                }\n            }\n        }\n\n        public static void Clear()\n        {\n            foreach (var b in m_buffers)\n            {\n                b.Clear();\n            }\n        }\n\n        public static void Draw(MyEffectCockpitGlass effect)\n        {           \n            for (int i = 0; i < m_buffers.Length; i++)\n            {\n                if (m_buffers[i].GetTrianglesCount() <= 0) \n                    continue;\n\n                int trianglesToDraw = m_buffers[i].CopyDecalsToVertices(m_vertices);\n                if (trianglesToDraw <= 0) continue;\n\n                effect.SetCockpitGlassTexture(m_texturesDiffuse[i]);\n                effect.SetGlassDirtLevelAlpha(Vector4.UnitW);\n                \n                effect.Begin();\n                MyMinerGame.Static.GraphicsDevice.DrawUserPrimitives(SharpDX.Direct3D9.PrimitiveType.TriangleList, 0, trianglesToDraw, m_vertices);\n                effect.End();\n\n                MyPerformanceCounter.PerCameraDraw.DecalsForCockipGlassInFrustum += trianglesToDraw;\n            }         \n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Cockpit/MyCockpitGlassDecalsBuffer.cs",
    "content": "﻿using System.Collections.Generic;\nusing MinerWarsMath;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Utils.VertexFormats;\nusing MinerWars.CommonLIB.AppCode.Generics;\nusing SysUtils.Utils;\n\n//  Buffer for specified type of glass decal texture (e.g. bullet hole, or dirt, ...)\n//  This buffer works as some sort of FIFO (but not exactly... because we are adding decals but if some max number reached, we need to remove all and only then add new ones)\n\nnamespace MinerWars.AppCode.Game.Cockpit\n{\n    class MyCockpitGlassDecalsBuffer\n    {\n        class MyCockpitGlassDecalTriangle\n        {\n            public Vector3 Position0;\n            public Vector3 Position1;\n            public Vector3 Position2;\n            public Vector2 TexCoord0;\n            public Vector2 TexCoord1;\n            public Vector2 TexCoord2;\n            public Vector3 Normal0;\n            public Vector3 Normal1;\n            public Vector3 Normal2;\n            public Vector3 Alpha012;\n            public int CreatedTime;\n        }\n\n        public int MaxNeighbourTriangles;\n        int m_fadeInPhaseInMiliseconds;\n        int m_fadeOutStartInMiliseconds;\n        int m_fadeOutLengthInMiliseconds;\n\n        MyObjectsPool<MyCockpitGlassDecalTriangle> m_triangles;\n\n        public MyCockpitGlassDecalsBuffer(int capacity, int maxNeighbourTriangles, int fadeInPhaseInMiliseconds, int fadeOutStartInMiliseconds, int fadeOutLengthInMiliseconds)\n        {\n            //  Fade in (initial phase) can't interfere with fadeout phase\n            MyCommonDebugUtils.AssertRelease(fadeInPhaseInMiliseconds < fadeOutStartInMiliseconds);\n\n            //  Buffer can't store more decal triangles than vertex buffer used for drawing them!\n            MyCommonDebugUtils.AssertRelease(capacity <= MyCockpitGlassDecalsConstants.MAX_DECAL_TRIANGLES_IN_BUFFER);\n\n            MyCommonDebugUtils.AssertRelease(maxNeighbourTriangles <= MyCockpitGlassDecalsConstants.MAX_NEIGHBOUR_TRIANGLES);\n\n            //  If there will be more neighbour triangles, we won't be able to add them into buffer in one call!\n            MyCommonDebugUtils.AssertRelease(maxNeighbourTriangles < capacity);\n\n            m_triangles = new MyObjectsPool<MyCockpitGlassDecalTriangle>(capacity);\n            MaxNeighbourTriangles = maxNeighbourTriangles;\n            m_fadeInPhaseInMiliseconds = fadeInPhaseInMiliseconds;\n            m_fadeOutStartInMiliseconds = fadeOutStartInMiliseconds;\n            m_fadeOutLengthInMiliseconds = fadeOutLengthInMiliseconds;\n        }\n\n        //  Checks if buffer has enough free triangles for adding new decal. If not, we can't add triangles\n        //  of the decal (because we add all decal triangles or none)\n        public bool CanAddTriangles(int newTrianglesCount)\n        {\n            //  If buffer is full, we can't add new triangles\n            return ((m_triangles.GetActiveCount() + newTrianglesCount) < m_triangles.GetCapacity());\n        }\n\n        public int GetTrianglesCount()\n        {\n            return m_triangles.GetActiveCount();\n        }\n\n        public void Add(MyTriangle_Vertexes triangle, Vector3 normal, ref MyPlane rightPlane, ref MyPlane upPlane, float decalScale, float alpha, bool alphaBlendByAngle, ref BoundingSphere decalSphere)\n        {\n            float alpha0 = alpha;\n            float alpha1 = alpha;\n            float alpha2 = alpha;\n\n            if (alphaBlendByAngle == true)\n            {\n                alpha0 *= GetAlphaByDistance(ref triangle.Vertex0, ref decalSphere);\n                alpha1 *= GetAlphaByDistance(ref triangle.Vertex1, ref decalSphere);\n                alpha2 *= GetAlphaByDistance(ref triangle.Vertex2, ref decalSphere);\n            }\n\n            if ((alpha0 <= 0.0f) && (alpha1 <= 0.0f) && (alpha2 <= 0.0f))\n            {\n                //  Decal would be totaly transparent so it doesn't make sense to draw it\n                return;\n            }\n\n            MyCockpitGlassDecalTriangle decalTriangle = m_triangles.Allocate();\n            if (decalTriangle == null) \n                return;\n\n            decalTriangle.Position0 = triangle.Vertex0;\n            decalTriangle.Position1 = triangle.Vertex1;\n            decalTriangle.Position2 = triangle.Vertex2;\n\n            //  Texture coords\n            decalTriangle.TexCoord0 = new Vector2(\n                0.5f + decalScale * MyUtils.GetDistanceFromPointToPlane(ref decalTriangle.Position0, ref rightPlane),\n                0.5f + decalScale * MyUtils.GetDistanceFromPointToPlane(ref decalTriangle.Position0, ref upPlane));\n            decalTriangle.TexCoord1 = new Vector2(\n                0.5f + decalScale * MyUtils.GetDistanceFromPointToPlane(ref decalTriangle.Position1, ref rightPlane),\n                0.5f + decalScale * MyUtils.GetDistanceFromPointToPlane(ref decalTriangle.Position1, ref upPlane));\n            decalTriangle.TexCoord2 = new Vector2(\n                0.5f + decalScale * MyUtils.GetDistanceFromPointToPlane(ref decalTriangle.Position2, ref rightPlane),\n                0.5f + decalScale * MyUtils.GetDistanceFromPointToPlane(ref decalTriangle.Position2, ref upPlane));\n\n            //  Normal\n            normal = MinerWars.CommonLIB.AppCode.Utils.MyMwcUtils.Normalize(normal);\n            decalTriangle.Normal0 = normal;\n            decalTriangle.Normal1 = normal;\n            decalTriangle.Normal2 = normal;\n\n            decalTriangle.Alpha012.X = alpha0;\n            decalTriangle.Alpha012.Y = alpha1;\n            decalTriangle.Alpha012.Z = alpha2;\n\n            //  Time created\n            decalTriangle.CreatedTime = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n        }\n\n        float GetAlphaByDistance(ref Vector3 position, ref BoundingSphere decalSphere)\n        {\n            float dist;\n            Vector3.Distance(ref position, ref decalSphere.Center, out dist);\n\n            //  This sort of alpha blending will cause that inside of sphere is always visible and blended is only what is outside\n            return (dist >= decalSphere.Radius) ? 0 : 1;\n\n            //return 1 - (float)Math.Pow(MathHelper.Clamp(dist / decalSphere.Radius, 0, 1), 2);\n            //return 1 - MathHelper.Clamp(dist / decalSphere.Radius, 0, 1);\n            \n            //return (float)Math.Pow(Vector3.Dot(referenceNormal, vertexNormal), 20);\n            //return ;\n            //return MathHelper.SmoothStep(0, 1, Vector3.Dot(referenceNormal, vertexNormal));\n            //return 1;\n        }\n\n        //  Copy triangles to array of vertexes (which is then copyed to vertex buffer) and return count of triangles to draw\n        public int CopyDecalsToVertices(MyVertexFormatGlassDecal[] vertexes)\n        {\n            int trianglesToDraw = 0;\n            foreach (LinkedListNode<MyCockpitGlassDecalTriangle> item in m_triangles)\n            {\n                MyCockpitGlassDecalTriangle triangle = item.Value;\n\n                int deltaTime = MyMinerGame.TotalGamePlayTimeInMilliseconds - triangle.CreatedTime;\n\n                //  If triangleVertexes is completely faded-out, we remove it from buffer and don't draw it now\n                if (deltaTime >= (m_fadeOutStartInMiliseconds + m_fadeOutLengthInMiliseconds))\n                {\n                    m_triangles.MarkForDeallocate(item);\n                    continue;\n                }\n                \n                int vertexIndexStart = trianglesToDraw * MyCockpitGlassDecalsConstants.VERTEXES_PER_DECAL;\n\n                //  Texture coords\n                vertexes[vertexIndexStart + 0].TexCoord = triangle.TexCoord0;\n                vertexes[vertexIndexStart + 1].TexCoord = triangle.TexCoord1;\n                vertexes[vertexIndexStart + 2].TexCoord = triangle.TexCoord2;\n\n                float alpha = 1.0f;\n                if (deltaTime <= m_fadeInPhaseInMiliseconds)\n                {\n                    //  If we are in fade-in phase (initial phase)\n                    alpha = (float)deltaTime / (float)m_fadeInPhaseInMiliseconds;\n                }\n                else if (deltaTime >= m_fadeOutStartInMiliseconds)\n                {\n                    //  If fading-out started, change alpha here\n                    alpha = 1.0f - ((float)(deltaTime - m_fadeOutStartInMiliseconds) / (float)m_fadeOutLengthInMiliseconds);\n                }\n\n                //  Vertex position\n                vertexes[vertexIndexStart + 0].SetPositionAndAlpha(ref triangle.Position0, System.Math.Min(alpha, triangle.Alpha012.X));\n                vertexes[vertexIndexStart + 1].SetPositionAndAlpha(ref triangle.Position1, System.Math.Min(alpha, triangle.Alpha012.Y));\n                vertexes[vertexIndexStart + 2].SetPositionAndAlpha(ref triangle.Position2, System.Math.Min(alpha, triangle.Alpha012.Z));\n\n                //  Normal vectors\n                Vector3 normal0 = triangle.Normal0;\n                Vector3 normal1 = triangle.Normal1;\n                Vector3 normal2 = triangle.Normal2;\n\n                // Normals for glass decals aren't normalized\n                normal0.Normalize();\n                normal1.Normalize();\n                normal2.Normalize();\n\n                vertexes[vertexIndexStart + 0].Normal = normal0;\n                vertexes[vertexIndexStart + 1].Normal = normal1;\n                vertexes[vertexIndexStart + 2].Normal = normal2;\n\n                trianglesToDraw++;\n            }\n\n            m_triangles.DeallocateAllMarked();\n\n            return trianglesToDraw;\n        }\n\n        internal void Clear()\n        {\n            m_triangles.DeallocateAll();\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Debugging/MyDebugConsole.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Toolkit.Input;\nusing MinerWars.AppCode.Game.GUI;\nusing System.Diagnostics;\n\nnamespace MinerWars.AppCode.Game.Debugging\n{\n    public class MyShortcut\n    {\n        public enum ModifierValue\n        {\n            Alt = 0x00000001,\n            Shift = 0x00000002,\n            Control = 0x00000004,\n        };\n\n        private Keys m_key;\n        private short m_modifier;\n\n\n        /// <summary>\n        /// c-tor\n        /// </summary>\n        /// <param name=\"key\"></param>\n        /// <param name=\"modifier\"></param>\n        public MyShortcut(Keys key, short modifier)\n        {\n            m_key = key;\n            m_modifier = modifier;\n        }\n\n\n        /// <summary>\n        /// GetHashCode\n        /// </summary>\n        /// <returns></returns>\n        public override int GetHashCode()\n        {\n            unchecked\n            {\n                int result = m_key.GetHashCode();\n                result = (result*397) ^ m_modifier.GetHashCode();\n                return result;\n            }\n        }\n\n        public override bool Equals(object obj)\n        {\n            if (ReferenceEquals(null, obj)) \n                return false;\n            if (obj.GetType() != typeof(MyShortcut)) \n                return false;\n            return GetHashCode() == obj.GetHashCode();\n        }\n    }\n\n    internal enum MyDebugSystem\n    {\n        Any,\n        Editor,\n        Game\n    }\n   \n    class MyDebugConsole\n    {\n        public delegate void DebugItemHandler(MyDebugConsoleItem debugItem);\n        \n        public struct MyDebugConsoleItem\n        {\n            public MyDebugSystem System;\n            public string Category;\n            public string Name;\n            public MyShortcut Shortcut;\n            public DebugItemHandler Action;\n        }\n\n\n        private static MyDebugConsole m_Instance = null;\n\n        Dictionary<MyShortcut, MyDebugConsoleItem> m_shortcutMap = new Dictionary<MyShortcut, MyDebugConsoleItem>();\n        Dictionary<string, List<MyDebugConsoleItem>> m_categoriesMap = new Dictionary<string, List<MyDebugConsoleItem>>();\n        List<Toolkit.Input.Keys> m_pressedKeys = new List<Toolkit.Input.Keys>(10);\n\n        private MyDebugConsole() { ;}\n\n        public static MyDebugConsole GetInstance()\n        {\n            if (m_Instance == null)\n                m_Instance = new MyDebugConsole();\n\n            return m_Instance;\n        }\n\n\n        /// <summary>\n        /// RegisterShortcut\n        /// </summary>\n        [Conditional(\"DEBUG\"), Conditional(\"DEVELOP\")]\n        public void RegisterShortcut(MyDebugSystem system, string category, string name, MyShortcut shortcut, DebugItemHandler action)\n        {\n            MyDebugConsoleItem item = new MyDebugConsoleItem\n            {\n                System = system,\n                Category = category,\n                Name = name,\n                Shortcut = shortcut,\n                Action = action\n            };\n\n            //if (m_shortcutMap.ContainsKey(shortcut))\n              //  return false;\n            if (shortcut != null)\n            {\n                m_shortcutMap.Add(shortcut, item);\n            }\n\n            List<MyDebugConsoleItem> items;\n            m_categoriesMap.TryGetValue(category.ToString(), out items);\n            if (items == null)\n            {\n                items = new List<MyDebugConsoleItem>();\n                m_categoriesMap.Add(category.ToString(), items);\n            }\n\n            items.Add(item);\n        }\n\n\n        /// <summary>\n        /// UnregisterShortcut\n        /// </summary>\n        /// <param name=\"system\"></param>\n        /// <param name=\"?\"></param>\n        public void UnregisterShortcut(MyShortcut shortcut)\n        {\n            if (shortcut == null)\n                return;\n\n            if (!m_shortcutMap.ContainsKey(shortcut))\n                return;\n\n            MyDebugConsoleItem item = m_shortcutMap[shortcut];\n\n            m_shortcutMap.Remove(shortcut);\n\n            List<MyDebugConsoleItem> items;\n            m_categoriesMap.TryGetValue(item.Category.ToString(), out items);\n            System.Diagnostics.Debug.Assert(items != null);\n\n            items.Remove(item);\n        }\n\n        /// <summary>\n        /// Update\n        /// </summary>\n        /// <param name=\"input\"></param>\n        [Conditional(\"DEBUG\"), Conditional(\"DEVELOP\")]\n        public void Update(MyDebugSystem system, MyGuiInput input)\n        {\n            input.GetPressedKeys(m_pressedKeys);\n            short modifier = 0;\n            if (input.IsAnyAltKeyPressed()) modifier |= (short)MyShortcut.ModifierValue.Alt;\n            if (input.IsAnyShiftKeyPressed()) modifier |= (short)MyShortcut.ModifierValue.Shift;\n            if (input.IsAnyCtrlKeyPressed()) modifier |= (short)MyShortcut.ModifierValue.Control;\n\n            foreach(Keys k in m_pressedKeys)\n            {\n                var key = (Keys)k;\n                if (key == Keys.LeftAlt || key == Keys.RightAlt || key == Keys.LeftShift || key == Keys.RightShift || key == Keys.LeftControl || key == Keys.RightControl)\n                    continue;\n\n                if (input.IsNewKeyPress(key))\n                    OnKeyPressed(system, key, modifier);\n            }\n        }\n\n\n\n        /// <summary>\n        /// OnKeyDown\n        /// </summary>\n        /// <param name=\"key\"></param>\n        private void OnKeyPressed(MyDebugSystem system, Keys key, short modifier)\n        {\n            MyShortcut shortcut = new MyShortcut(key, modifier);\n\n            if (m_shortcutMap.ContainsKey(shortcut))\n            {\n                MyDebugConsoleItem debugItem = m_shortcutMap[shortcut];\n                if ((debugItem.System == system) || (debugItem.System == MyDebugSystem.Any))\n                {\n                    debugItem.Action(debugItem);\n                }\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Debugging/MyFpsManager.cs",
    "content": "﻿using MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Utils;\n\nnamespace MinerWars.AppCode.Game.Managers\n{\n    static class MyFpsManager\n    {\n        static long m_lastTime = 0;\n        static int m_fpsCounter = 0;\n\n        static int m_lastFpsDrawn = 0;\n\n        static long m_lastFrameTime = 0;\n        static long m_lastFrameMin = long.MaxValue;\n        static long m_lastFrameMax = long.MinValue;\n\n        //  Returns FPS once per second. We can't display actual FPS at every frame, because it will be changing quickly and so unreadable.\n        public static int GetFps()\n        {\n            return m_lastFpsDrawn;\n        }\n\n        /// <summary>\n        /// Returns update + render time of last frame in ms\n        /// </summary>\n        /// <returns></returns>\n        public static float FrameTime { get; private set; }\n\n        /// <summary>\n        /// Returns update + render time of last frame (Average in last second)\n        /// </summary>\n        /// <returns></returns>\n        public static float FrameTimeAvg { get; private set; }\n        public static float FrameTimeMin { get; private set; }\n        public static float FrameTimeMax { get; private set; }\n\n        public static void Update()\n        {\n            m_fpsCounter++;\n\n            long frameTicks = MyPerformanceCounter.ElapsedTicks - m_lastFrameTime;\n            FrameTime = (float)MyPerformanceCounter.TicksToMs(frameTicks);\n            m_lastFrameTime = MyPerformanceCounter.ElapsedTicks;\n\n            if (frameTicks > m_lastFrameMax)\n            {\n                m_lastFrameMax = frameTicks;\n            }\n\n            if (frameTicks < m_lastFrameMin)\n            {\n                m_lastFrameMin = frameTicks;\n            }\n\n            long ticksFromLastDraw = MyPerformanceCounter.ElapsedTicks - m_lastTime;\n            float msFromLastDraw = (float)MyPerformanceCounter.TicksToMs(ticksFromLastDraw);\n\n            if (msFromLastDraw >= 1000)\n            {\n                FrameTimeMin = (float)MyPerformanceCounter.TicksToMs(m_lastFrameMin);\n                FrameTimeMax = (float)MyPerformanceCounter.TicksToMs(m_lastFrameMax);\n                FrameTimeAvg = msFromLastDraw / m_fpsCounter;\n                m_lastFrameMin = long.MaxValue;\n                m_lastFrameMax = long.MinValue;\n\n                m_lastTime = MyPerformanceCounter.ElapsedTicks;\n                m_lastFpsDrawn = m_fpsCounter;\n                m_fpsCounter = 0;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Debugging/MyGarbageCollectionManager.cs",
    "content": "﻿using System;\n\nnamespace MinerWars.AppCode.Game.Managers\n{\n    static class MyGarbageCollectionManager\n    {\n        static int m_lastGarbageCollectionsCount = 0;\n\n        //  Total count of garbage collections from the start of this application\n        public static int GetTotalGarbageCollectionsCount()\n        {\n            int count = 0;\n            for (int i = 0; i <= GC.MaxGeneration; ++i)\n            {\n                count += GC.CollectionCount(i);\n            }\n            return count;\n        }\n\n        //  Count of garbage collections from last call to GetGarbageCollectionsCountFromLastCall()\n        public static int GetGarbageCollectionsCountFromLastCall()\n        {\n            int total = GetTotalGarbageCollectionsCount();\n            int result = total - m_lastGarbageCollectionsCount;\n            m_lastGarbageCollectionsCount = total;\n            return result;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Debugging/MyPerformanceCounter.cs",
    "content": "﻿using MinerWars.AppCode.Game.GUI;\nusing SysUtils.Utils;\nusing System.Text;\nusing KeenSoftwareHouse.Library.Extensions;\nusing MinerWars.AppCode.Game.Sessions;\nusing MinerWars.AppCode.Game.World;\nusing System.Linq;\nusing System;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing System.Collections.Generic;\nusing System.Diagnostics;\n\n//  This class is used for measurements like drawn triangles, number of textures loaded, etc.\n//  IMPORTANT: Use this class only for profiling / debuging. Don't use it for real game code.\n\nnamespace MinerWars.AppCode.Game.Managers\n{\n    static class MyPerformanceCounter\n    {\n        struct Timer\n        {\n            public static readonly Timer Empty = new Timer() { Runtime = 0, StartTime = long.MaxValue };\n\n            public long StartTime;\n            public long Runtime;\n            //public string StackTrace;\n\n            public bool IsRunning { get { return StartTime != long.MaxValue; } }\n        }\n\n        static Stopwatch m_timer = new Stopwatch();\n\n        static MyPerformanceCounter()\n        {\n            m_timer.Start();\n        }\n\n        public static double TicksToMs(long ticks)\n        {\n            return ticks / (double)Stopwatch.Frequency * 1000.0;\n        }\n\n        public static long ElapsedTicks\n        {\n            get\n            {\n                return m_timer.ElapsedTicks;\n            }\n        }\n\n        public const int NoSplit = MinerWars.AppCode.Game.Render.MyShadowRenderer.NumSplits;\n\n        //  These counters are \"reseted\" before every camera draw\n        public class MyPerCameraDraw\n        {\n            public int RenderCellsInFrustum_LOD0;        //  Count of render cells visible and drawn in the frustum (LOD0)\n            public int RenderCellsInFrustum_LOD1;        //  Count of render cells visible and drawn in the frustum (LOD1)\n            public int VoxelTrianglesInFrustum;          //  Count of really drawn voxel triangles visible and drawn in the frustum (if triangleVertexes is multi-textured, in this number is more times)\n            public int EntitiesRendered;             //  Count of models visible and drawn in the frustum        \n            public int ModelTrianglesInFrustum_LOD0;     //  Count of model triangles visible and drawn in the frustum LOD0\n            public int ModelTrianglesInFrustum_LOD1;     //  Count of model triangles visible and drawn in the frustum LOD1   \n            public int DecalsForVoxelsInFrustum;         //  Count of voxel decals visible and drawn in the frustum\n            public int DecalsForEntitiesInFrustum;    //  Count of phys object decals visible and drawn in the frustum\n            public int DecalsForCockipGlassInFrustum;    //  Count of glass cockpit decals visible and drawn in the frustum\n            public int BillboardsInFrustum;              //  Count of billboards visible and drawn in the frustum\n            public int BillboardsDrawCalls;              //  Count of billboard draw calls in the frustum (usually due to switching different particle textures or shaders)\n            public int BillboardsSorted;              //  Count of sorted billboards\n            public int OldParticlesInFrustum;               //  Count of particles visible and drawn in the frustum\n            public int NewParticlesCount;               //  Count of new animated particles visible and drawn in the frustum\n            public int ParticleEffectsTotal;            // Count of all living particle effects\n            public int ParticleEffectsDrawn;            // Count of drawn particle effects\n            public int EntitiesOccluded;                // Count of entities occluded by hw occ. queries\n            public int[] ShadowEntitiesOccluded;        // Count of entities occluded by hw occ. queries\n            public int QueriesCount;                    // Count of occlusion queries issued to GC\n            public int LightsCount;                     //Count of lights rendered in frame\n            public int RenderElementsInFrustum;         //Count of rendered elements in frustum\n            public int RenderElementsIBChanges;         //Count of IB changes per frame\n            public int RenderElementsInShadows;         //Count of rendered elements for shadows\n            public int RayCastCount;                    // Count of ray casts\n            public int RayCastModelsProcessed;          // Count of processed models by ray casts\n            public int RayCastVoxelMapProcessed;        // Count of processed ray casts to voxel map\n            public int RayCastTrianglesProcessed;       // Count of triangles processed by ray casts\n            public int[] ShadowDrawCalls;\n            public int TotalDrawCalls;\n\n            // Per lod\n            public int[] MaterialChanges;\n            public int[] TechniqueChanges;\n            public int[] VertexBufferChanges;\n            public int[] EntityChanges;\n\n            // Custom counters which can be added at runtime, useful when optimizing performance and using Edit&Continue\n            public readonly Dictionary<string, int> CustomCounters = new Dictionary<string, int>(5);\n\n                        // Custom timers which can be added at runtime, useful when profiling performance and using Edit&Continue\n            readonly Dictionary<string, Timer> m_customTimers = new Dictionary<string, Timer>(5);\n\n            readonly List<string> m_keys = new List<string>(5);\n\n            public MyPerCameraDraw()\n            {\n                ShadowEntitiesOccluded = new int[MinerWars.AppCode.Game.Render.MyShadowRenderer.NumSplits + 1];\n                ShadowDrawCalls = new int[MinerWars.AppCode.Game.Render.MyShadowRenderer.NumSplits + 1];\n\n                int lodCount = MyMwcUtils.GetMaxValueFromEnum<MyLodTypeEnum>() + 1;\n\n                MaterialChanges = new int[lodCount];\n                TechniqueChanges = new int[lodCount];\n                VertexBufferChanges = new int[lodCount];\n                EntityChanges = new int[lodCount];\n            }\n\n            public void StartTimer(string name)\n            {\n                if (!MinerWars.AppCode.App.MyMinerGame.IsMainThread())\n                    return;\n\n                Timer t;\n                bool exists = m_customTimers.TryGetValue(name, out t);\n                Debug.Assert(!(exists && t.IsRunning), \"Timer already started! Timers are no reentrant!\");\n                t.StartTime = m_timer.ElapsedTicks;\n                m_customTimers[name] = t;\n            }\n\n            public void StopTimer(string name)\n            {\n                if (!MinerWars.AppCode.App.MyMinerGame.IsMainThread())\n                    return;\n\n                Timer t;\n                if (m_customTimers.TryGetValue(name, out t))\n                {\n                    t.Runtime += m_timer.ElapsedTicks - t.StartTime;\n                    t.StartTime = long.MaxValue;\n                    m_customTimers[name] = t;\n                }\n            }\n\n            public void Increment(string counterName)\n            {\n                if (!MinerWars.AppCode.App.MyMinerGame.IsMainThread())\n                    return;\n\n                int currentVal;\n                if (CustomCounters.TryGetValue(counterName, out currentVal))\n                    CustomCounters[counterName] = currentVal + 1;\n                else\n                    CustomCounters.Add(counterName, 1);\n            }\n\n            public int this[string counterName]\n            {\n                get\n                {\n                    if (!CustomCounters.ContainsKey(counterName))\n                    {\n                        return 0;\n                    }\n                    else\n                    {\n                        return CustomCounters[counterName];\n                    }\n                }\n                set\n                {\n                    if (!CustomCounters.ContainsKey(counterName))\n                    {\n                        CustomCounters.Add(counterName, value);\n                    }\n                    else\n                    {\n                        CustomCounters[counterName] = value;\n                    }\n                }\n            }\n\n            public void Reset()\n            {\n                RenderCellsInFrustum_LOD1 = 0;\n                RenderCellsInFrustum_LOD0 = 0;\n                VoxelTrianglesInFrustum = 0;\n                EntitiesRendered = 0;\n                ModelTrianglesInFrustum_LOD0 = 0;\n                ModelTrianglesInFrustum_LOD1 = 0;\n                DecalsForVoxelsInFrustum = 0;\n                DecalsForEntitiesInFrustum = 0;\n                DecalsForCockipGlassInFrustum = 0;\n                BillboardsInFrustum = 0;\n                BillboardsDrawCalls = 0;\n                BillboardsSorted = 0;\n                OldParticlesInFrustum = 0;\n                NewParticlesCount = 0;\n                //EntitiesOccluded = 0;\n                for (int i = 0; i < ShadowEntitiesOccluded.Length; i++)\n                {\n                    ShadowEntitiesOccluded[i] = 0;\n                }\n                QueriesCount = 0;\n                LightsCount = 0;\n                RenderElementsInFrustum = 0;\n                RenderElementsIBChanges = 0;\n                RenderElementsInShadows = 0;\n                //RayCastCount = 0;\n                //RayCastModelsProcessed = 0;\n                //RayCastVoxelMapProcessed = 0;\n                //RayCastTrianglesProcessed = 0;\n                for (int i = 0; i < ShadowDrawCalls.Length; i++)\n                {\n                    ShadowDrawCalls[i] = 0;\n                }\n\n                for (int i = 0; i < MaterialChanges.Length; i++)\n                {\n                    MaterialChanges[i] = 0;\n                    TechniqueChanges[i] = 0;\n                    VertexBufferChanges[i] = 0;\n                    EntityChanges[i] = 0;\n                }\n\n                TotalDrawCalls = 0;\n            }\n\n            private static StringBuilder StringBuilderCache\n            {\n                get { return MyGuiScreenDebugStatistics.StringBuilderCache; }\n            }\n\n            // Formats text into one line for cascades\n            //private StringBuilder GetShadowText(string text, int[] sunValues)\n            //{\n            //    var sb = StringBuilderCache;\n            //    sb.Clear();\n            //    sb.ConcatFormat(\"{0}\", text);\n            //    for (int i = 0; i < sunValues.Length - 1; i++)\n            //    {\n            //        sb.Concat(sunValues[i], 4, ' ', 10, false);\n            //        sb.ConcatFormat(\"{0}\", \", \");\n            //    }\n            //    sb.Concat(sunValues[sunValues.Length - 1], 4, ' ', 10, false);\n            //    return sb;\n            //}\n\n            private StringBuilder GetShadowText(string text, int cascade, int value)\n            {\n                var sb = StringBuilderCache;\n                sb.Clear();\n                sb.ConcatFormat(\"{0} (c {1}): \", text, cascade);\n                sb.Concat(value);\n                return sb;\n            }\n\n            private StringBuilder GetLodText(string text, int lod, int value)\n            {\n                var sb = StringBuilderCache;\n                sb.Clear();\n                sb.ConcatFormat(\"{0}_LOD{1}: \", text, lod);\n                sb.Concat(value);\n                return sb;\n            }\n\n            //  Show only draw/rendering statistics, because these counts are reseted in a Draw call\n            public void AddToFrameDebugText(MyGuiScreenDebugStatistics debugScreen)\n            {\n                debugScreen.AddDebugTextRA(\"MyPerformanceCounter\");\n                debugScreen.AddDebugTextRA(StringBuilderCache.GetFormatedInt(\"   RenderCellsInFrustum_LOD0: \", RenderCellsInFrustum_LOD0));\n                debugScreen.AddDebugTextRA(StringBuilderCache.GetFormatedInt(\"   RenderCellsInFrustum_LOD1: \", RenderCellsInFrustum_LOD1));\n                debugScreen.AddDebugTextRA(StringBuilderCache.GetFormatedInt(\"   VoxelTrianglesInFrustum: \", VoxelTrianglesInFrustum));\n                debugScreen.AddDebugTextRA(StringBuilderCache.GetFormatedInt(\"   Entities rendered: \", EntitiesRendered));\n                debugScreen.AddDebugTextRA(StringBuilderCache.GetFormatedInt(\"   Entities occluded: \", EntitiesOccluded));\n                debugScreen.AddDebugTextRA(StringBuilderCache.GetFormatedInt(\"   Drawcalls: \", TotalDrawCalls));\n                //debugScreen.AddDebugTextRA(StringBuilderCache.GetFormatedInt(\"   Shadow entities occluded: \", ShadowEntitiesOccluded));\n                //debugScreen.AddDebugTextRA(GetShadowText(\"  Shadow entities occluded:\", ShadowEntitiesOccluded));\n\n                for (int i = 0; i < ShadowEntitiesOccluded.Length - 1; i++)\n                {\n                    debugScreen.AddDebugTextRA(GetShadowText(\"   Shadow entities occluded\", i, ShadowEntitiesOccluded[i]));\n                }\n                debugScreen.AddDebugTextRA(StringBuilderCache.GetFormatedInt(\"   Shadow entities occluded (other):\", ShadowEntitiesOccluded[ShadowEntitiesOccluded.Length - 1]));\n\n                debugScreen.AddDebugTextRA(StringBuilderCache.GetFormatedInt(\"   Queries count: \", QueriesCount));\n                debugScreen.AddDebugTextRA(StringBuilderCache.GetFormatedInt(\"   ModelTrianglesInFrustum_LOD0: \", ModelTrianglesInFrustum_LOD0));\n                debugScreen.AddDebugTextRA(StringBuilderCache.GetFormatedInt(\"   ModelTrianglesInFrustum_LOD1: \", ModelTrianglesInFrustum_LOD1));\n                debugScreen.AddDebugTextRA(StringBuilderCache.GetFormatedInt(\"   DecalsForVoxelsInFrustum: \", DecalsForVoxelsInFrustum));\n                debugScreen.AddDebugTextRA(StringBuilderCache.GetFormatedInt(\"   DecalsForEntitiesInFrustum: \", DecalsForEntitiesInFrustum));\n                debugScreen.AddDebugTextRA(StringBuilderCache.GetFormatedInt(\"   DecalsForCockipGlassInFrustum: \", DecalsForCockipGlassInFrustum));\n                debugScreen.AddDebugTextRA(StringBuilderCache.GetFormatedInt(\"   BillboardsInFrustum: \", BillboardsInFrustum));\n                debugScreen.AddDebugTextRA(StringBuilderCache.GetFormatedInt(\"   BillboardsDrawCalls: \", BillboardsDrawCalls));\n                debugScreen.AddDebugTextRA(StringBuilderCache.GetFormatedInt(\"   BillboardsSorted: \", BillboardsSorted));\n                debugScreen.AddDebugTextRA(StringBuilderCache.GetFormatedInt(\"   OldParticlesInFrustum: \", OldParticlesInFrustum));\n                debugScreen.AddDebugTextRA(StringBuilderCache.GetFormatedInt(\"   ParticleEffects total: \", ParticleEffectsTotal));\n                debugScreen.AddDebugTextRA(StringBuilderCache.GetFormatedInt(\"   ParticleEffects drawn: \", ParticleEffectsDrawn));\n                debugScreen.AddDebugTextRA(StringBuilderCache.GetFormatedInt(\"   NewParticles count: \", NewParticlesCount));\n                debugScreen.AddDebugTextRA(StringBuilderCache.GetFormatedInt(\"   Lights count: \", LightsCount));\n                debugScreen.AddDebugTextRA(StringBuilderCache.GetFormatedInt(\"   RenderElementsInFrustum: \", RenderElementsInFrustum));\n                debugScreen.AddDebugTextRA(StringBuilderCache.GetFormatedInt(\"   RenderElementsIBChanges: \", RenderElementsIBChanges));\n                debugScreen.AddDebugTextRA(StringBuilderCache.GetFormatedInt(\"   RenderElementsInShadows: \", RenderElementsInShadows));\n                debugScreen.AddDebugTextRA(StringBuilderCache.GetFormatedInt(\"   RayCastCount: \", RayCastCount));\n                debugScreen.AddDebugTextRA(StringBuilderCache.GetFormatedInt(\"   RayCastModelsProcessed: \", RayCastModelsProcessed));\n                debugScreen.AddDebugTextRA(StringBuilderCache.GetFormatedInt(\"   RayCastVoxelMapProcessed: \", RayCastVoxelMapProcessed));\n                debugScreen.AddDebugTextRA(StringBuilderCache.GetFormatedInt(\"   RayCastTrianglesProcessed: \", RayCastTrianglesProcessed));\n                //debugScreen.AddDebugTextRA(StringBuilderCache.GetFormatedInt(\"   ShadowDrawCalls: \", ShadowDrawCalls));\n                //debugScreen.AddDebugTextRA(GetShadowText(\"  ShadowDrawCalls:\", ShadowDrawCalls));\n                for (int i = 0; i < ShadowDrawCalls.Length - 1; i++)\n                {\n                    debugScreen.AddDebugTextRA(GetShadowText(\"   ShadowDrawCalls\", i, ShadowDrawCalls[i]));\n                }\n                debugScreen.AddDebugTextRA(StringBuilderCache.GetFormatedInt(\"   ShadowDrawCalls (other):\", ShadowDrawCalls[ShadowDrawCalls.Length - 1]));\n\n                debugScreen.AddDebugTextRA(\"Render states\");\n                for (int i = 0; i < MaterialChanges.Length; i++)\n                {\n                    int lodNum;\n                    var lod = (MyLodTypeEnum)i;\n                    if (lod == MyLodTypeEnum.LOD0)\n                        lodNum = 0;\n                    else if (lod == MyLodTypeEnum.LOD1)\n                        lodNum = 1;\n                    else\n                        continue;\n\n                    debugScreen.AddDebugTextRA(GetLodText(\"   MaterialChanges\", lodNum, MaterialChanges[i]));\n                    debugScreen.AddDebugTextRA(GetLodText(\"   TechniqueChanges\", lodNum, TechniqueChanges[i]));\n                    debugScreen.AddDebugTextRA(GetLodText(\"   VertexBufferChanges\", lodNum, VertexBufferChanges[i]));\n                    debugScreen.AddDebugTextRA(GetLodText(\"   EntityChanges\", lodNum, EntityChanges[i]));\n                }\n\n                RayCastCount = 0;\n                RayCastModelsProcessed = 0;\n                RayCastVoxelMapProcessed = 0;\n                RayCastTrianglesProcessed = 0;\n            }\n\n            public void AppendCustomCounters(StringBuilder builder)\n            {\n                foreach (var custom in CustomCounters)\n                {\n                    builder.Append(custom.Key);\n                    builder.Append(\": \");\n                    builder.AppendInt32(custom.Value);\n                    builder.AppendLine();\n                }\n\n                m_keys.Clear();\n                foreach (var custom in CustomCounters)\n                {\n                    m_keys.Add(custom.Key);\n                }\n                foreach (var item in m_keys)\n                {\n                    CustomCounters[item] = 0;\n                }\n            }\n\n            public void AppendCustomTimers(StringBuilder builder, bool reset = true)\n            {\n                foreach (var custom in m_customTimers)\n                {\n                    builder.Append(custom.Key);\n                    builder.Append(\": \");\n                    builder.AppendDecimal((float)TicksToMs(custom.Value.Runtime), 3);\n                    builder.Append(\" ms\");\n                    builder.AppendLine();\n                }\n\n                if (reset)\n                {\n                    m_keys.Clear();\n                    foreach (var custom in m_customTimers)\n                    {\n                        m_keys.Add(custom.Key);\n                    }\n                    foreach (var key in m_keys)\n                    {\n                        m_customTimers[key] = Timer.Empty;\n                    }\n                }\n            }\n        }\n\n        //  These counters are \"reseted\" before every game-play screen load\n        public class MyPerGamePlayScreen\n        {\n        }\n\n        //  These counters are never \"reseted\", they keep increasing during the whole app lifetime\n        public class MyPerAppLifetime\n        {\n            //  Texture2D loading statistics\n            public int Textures2DCount;            //  Total number of all loaded textures since application start (it will increase after game-screen load)\n            public int Textures2DSizeInPixels;     //  Total number of pixels in all loaded textures (it will increase after game-screen load)\n            public decimal Textures2DSizeInMb;         //  Total size in Mb of all loaded textures (it will increase after game-screen load)\n            public int NonMipMappedTexturesCount;\n            public int NonDxtCompressedTexturesCount;\n            public int DxtCompressedTexturesCount;\n\n            //  TextureCube loading statistics\n            public int TextureCubesCount;            //  Total number of all loaded textures since application start (it will increase after game-screen load)\n            public int TextureCubesSizeInPixels;     //  Total number of pixels in all loaded textures (it will increase after game-screen load)\n            public decimal TextureCubesSizeInMb;         //  Total size in Mb of all loaded textures (it will increase after game-screen load)\n\n            //  Model loading statistics (this is XNA's generic model - not the one we use)\n            public int ModelsCount;\n\n            //  MyModel loading statistics (this is our custom model class)\n            public int MyModelsCount;\n            public int MyModelsMeshesCount;\n            public int MyModelsVertexesCount;\n            public int MyModelsTrianglesCount;\n\n            // Sizes of model and voxel buffers\n            public int ModelVertexBuffersSize;          // Size of model vertex buffers in bytes\n            public int ModelIndexBuffersSize;           // Size of model index buffers in bytes\n            public int VoxelVertexBuffersSize;          // Size of voxel vertex buffers in bytes\n            public int VoxelIndexBuffersSize;           // Size of voxel index buffers in bytes\n        }\n\n\n        public static readonly MyPerCameraDraw PerCameraDraw = new MyPerCameraDraw();\n        public static readonly MyPerGamePlayScreen PerGamePlayScreen = new MyPerGamePlayScreen();\n        public static readonly MyPerAppLifetime PerAppLifetime = new MyPerAppLifetime();\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Debugging/MyPerformanceTimer.cs",
    "content": "﻿using MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils.Utils;\nusing System.Diagnostics;\n\n//  This static class is used for measuring time spent be some methods.\n//\n//  If you need to measure some new method, add new member of type MyStatsManagerCounter to class MyStatsManager, add loging into WriteToLog().\n//  Result will be written into log at the application end.\n\n//  IMPORTANT: Use this class only for profiling / debuging. Don't use it for real game code.\n\nnamespace MinerWars.AppCode.Game.Managers\n{\n    //  Set counting by Start. End by End. To get all time spent between each call of Start and End, call GetTimeSpent\n    internal class MyPerformanceTimerObject\n    {\n        #region Members\n        long m_startCount;\n        double m_totalTimeSpent = 0; //total time spent in seconds\n        double m_currentTimeSpent = 0; //time spent in last measurement\n        double m_averageTimeSpent = 0; //average time spent in this block\n        int m_averageCounter = 0;\n\n        //  This variable is only for ensuring that we called End without calling Start before, or calling start twice without calling End\n        bool m_isTimerRunning = false;   \n\n        #endregion\n\n        [Conditional(\"PROFILING\")]\n        public void Start()\n        {\n#if PROFILING\n            //  You called Start twice, without calling End. Proper way is to call Start and than End.\n            MyCommonDebugUtils.AssertDebug(m_isTimerRunning == false);\n            \n            m_isTimerRunning = true;\n            m_startCount = QueryPerformanceCounter();\n            m_averageCounter++;\n#endif //PROFILING\n        }\n\n        [Conditional(\"PROFILING\")]\n        public void End()\n        {\n#if PROFILING\n            //  You called End without first calling Start. Proper way is to call Start and than End.\n            MyCommonDebugUtils.AssertDebug(m_isTimerRunning == true);\n            m_isTimerRunning = false;\n\n            long stopCount = QueryPerformanceCounter();\n\n            long elapsedCount = stopCount - m_startCount;\n            m_currentTimeSpent = (double)elapsedCount / QueryPerformanceFrequency();\n\n            m_totalTimeSpent += m_currentTimeSpent;\n            m_averageTimeSpent += m_currentTimeSpent;\n#endif //PROFILING\n        }\n\n#if PROFILING\n        //  Return total count if miliseconds spent between Start/End. This number contains sum of all calls, not only the last.\n        public double GetTotalTimeSpent()\n        {\n            return m_totalTimeSpent;\n        }\n\n        //  Return total count if miliseconds spent between Start/End. This number contains sum of all calls, not only the last.\n        public string GetTotalTimeSpentFormated()\n        {\n            return MyValueFormatter.GetFormatedDouble(GetTotalTimeSpent(), 10);\n        }\n\n        // returns time spent in this measurement session\n        public double GetCurrentTimeSpent()\n        {\n            return m_currentTimeSpent;\n        }\n\n        public double GetAverageTimeSpent(bool reset)\n        {\n            double averageTime = m_averageTimeSpent / m_averageCounter;\n            if (reset)\n            {\n                m_averageCounter = 0;\n                m_averageTimeSpent = 0;\n            }\n            return averageTime;\n        }\n\n        /// <summary>\n        /// Gets the current 'Ticks' on the performance counter\n        /// </summary>\n        /// <returns>Long indicating the number of ticks on the performance counter</returns>\n        public static long QueryPerformanceCounter()\n        {\n            long perfcount;\n            MyWindowsAPIWrapper.QueryPerformanceCounter(out perfcount);\n            return perfcount;\n        }\n\n        /// <summary>\n        /// Gets the number of performance counter ticks that occur every second\n        /// </summary>\n        /// <returns>The number of performance counter ticks that occur every second</returns>\n        public static long QueryPerformanceFrequency()\n        {\n            long freq;\n            MyWindowsAPIWrapper.QueryPerformanceFrequency(out freq);\n            return freq;\n        }\n\n#endif //PROFILING\n\n    }\n\n    //  This is just holder for objects of type MyStatsManagerCounter.\n    internal static class MyPerformanceTimer\n    {\n        public static MyPerformanceTimerObject GuiScreenGamePlay_RunBackgroundThread;\n        public static MyPerformanceTimerObject GuiScreenGamePlay_LoadContent;\n        public static MyPerformanceTimerObject GuiScreenGamePlay_LoadData;\n        public static MyPerformanceTimerObject VoxelLoad;\n        public static MyPerformanceTimerObject VoxelContentMerge;\n        public static MyPerformanceTimerObject VoxelMaterialMerge;\n        public static MyPerformanceTimerObject VoxelHandLoad;\n        public static MyPerformanceTimerObject VoxelGpuBuffersBuild;\n        public static MyPerformanceTimerObject CalcAverageDataCellMaterials;\n        public static MyPerformanceTimerObject PrepareRenderCellCache;\n        public static MyPerformanceTimerObject OctreeBuilding;\n\n        static bool m_loaded = false;\n\n        [Conditional(\"PROFILING\")]\n        public static void LoadData()\n        {\n            GuiScreenGamePlay_RunBackgroundThread = new MyPerformanceTimerObject();\n            GuiScreenGamePlay_LoadContent = new MyPerformanceTimerObject();\n            GuiScreenGamePlay_LoadData = new MyPerformanceTimerObject();\n            VoxelLoad = new MyPerformanceTimerObject();\n            VoxelContentMerge = new MyPerformanceTimerObject();\n            VoxelMaterialMerge = new MyPerformanceTimerObject();\n            VoxelHandLoad = new MyPerformanceTimerObject();\n            VoxelGpuBuffersBuild = new MyPerformanceTimerObject();\n            CalcAverageDataCellMaterials = new MyPerformanceTimerObject();\n            PrepareRenderCellCache = new MyPerformanceTimerObject();\n            OctreeBuilding = new MyPerformanceTimerObject();\n            \n            m_loaded = true;\n        }\n\n        public static void UnloadData()\n        {\n        }\n\n        [Conditional(\"PROFILING\")]\n        public static void WriteToLog()\n        {\n#if PROFILING\n            MyMwcLog.WriteLine(\"MyPerformanceTimer.WriteToLog - Start\");\n            MyMwcLog.IncreaseIndent();\n\n            if (m_loaded == false)\n            {\n                MyMwcLog.WriteLine(\"MyPerformanceTimer wasn't loaded\");\n            }\n            else\n            {\n                MyMwcLog.WriteLine(\"MyPerformanceTimer.GuiScreenGamePlay_RunBackgroundThread: \" + MyPerformanceTimer.GuiScreenGamePlay_RunBackgroundThread.GetTotalTimeSpentFormated());\n                MyMwcLog.WriteLine(\"MyPerformanceTimer.GuiScreenGamePlay_LoadContent: \" + MyPerformanceTimer.GuiScreenGamePlay_LoadContent.GetTotalTimeSpentFormated());\n                MyMwcLog.WriteLine(\"MyPerformanceTimer.GuiScreenGamePlay_LoadData: \" + MyPerformanceTimer.GuiScreenGamePlay_LoadData.GetTotalTimeSpentFormated());\n                MyMwcLog.WriteLine(\"MyPerformanceTimer.VoxelLoad: \" + MyPerformanceTimer.VoxelLoad.GetTotalTimeSpentFormated());\n                MyMwcLog.WriteLine(\"MyPerformanceTimer.VoxelContentMerge: \" + MyPerformanceTimer.VoxelContentMerge.GetTotalTimeSpentFormated());\n                MyMwcLog.WriteLine(\"MyPerformanceTimer.VoxelMaterialMerge: \" + MyPerformanceTimer.VoxelMaterialMerge.GetTotalTimeSpentFormated());\n                MyMwcLog.WriteLine(\"MyPerformanceTimer.VoxelHandLoad: \" + MyPerformanceTimer.VoxelHandLoad.GetTotalTimeSpentFormated());\n                MyMwcLog.WriteLine(\"MyPerformanceTimer.VoxelGpuBuffersBuild: \" + MyPerformanceTimer.VoxelGpuBuffersBuild.GetTotalTimeSpentFormated());\n                MyMwcLog.WriteLine(\"MyPerformanceTimer.CalcAverageDataCellMaterials: \" + MyPerformanceTimer.CalcAverageDataCellMaterials.GetTotalTimeSpentFormated());\n                MyMwcLog.WriteLine(\"MyPerformanceTimer.PrepareRenderCellCache: \" + MyPerformanceTimer.PrepareRenderCellCache.GetTotalTimeSpentFormated());\n                MyMwcLog.WriteLine(\"MyPerformanceTimer.OctreeBuilding: \" + MyPerformanceTimer.OctreeBuilding.GetTotalTimeSpentFormated());\n            }\n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyPerformanceTimer.WriteToLog - End\");\n#endif //PROFILING\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Debugging/MySmallShipTemplate.cs",
    "content": "﻿using System.Text;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\n\nnamespace MinerWars.AppCode.Game.Managers.Others\n{\n    class MySmallShipTemplate\n    {\n        public int ID { get; set; }\n\n        public StringBuilder Name { get; set; }\n\n        public MyMwcObjectBuilder_SmallShip Builder { get; set; }\n\n        public bool SavedToServer { get; set; }\n\n        public MySmallShipTemplate(int id, StringBuilder name, MyMwcObjectBuilder_SmallShip builder, bool isSavedOnServer)\n        {\n            ID = id;\n            Name = name;\n            Builder = builder;\n            SavedToServer = isSavedOnServer;\n        }\n\n        public MySmallShipTemplate(MyMwcObjectBuilder_SmallShipTemplate template)\n            : this(template.ID, new StringBuilder(template.Name), template.Builder, true) \n        {\n\n        }\n\n        public MyMwcObjectBuilder_SmallShipTemplate GetObjectBuilder() \n        {\n            return new MyMwcObjectBuilder_SmallShipTemplate(ID, Name.ToString(), Builder);\n        }\n\n        public void ApplyToSmallShipBuilder(MyMwcObjectBuilder_SmallShip builder) \n        {\n            var cloneBuilder = Builder.Clone() as MyMwcObjectBuilder_SmallShip;\n            builder.Inventory = cloneBuilder.Inventory;\n            builder.Weapons = cloneBuilder.Weapons;\n            builder.Armor = cloneBuilder.Armor;\n            builder.Engine = cloneBuilder.Engine;\n            builder.Radar = cloneBuilder.Radar;\n            builder.ShipType = cloneBuilder.ShipType;\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Debugging/MySmallShipTemplates.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Networking.SectorService;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing SysUtils.Utils;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.Missions;\nusing SysUtils;\nusing MinerWars.AppCode.Networking;\n\nnamespace MinerWars.AppCode.Game.Managers.Others\n{\n    //struct MySmallShipTemplateIdentifier\n    //{\n    //    public string Name;\n    //    public MyMwcObjectBuilder_SmallShip_TypesEnum ShipType;\n    //}\n\n    static class MySmallShipTemplates\n    {\n        private const int TEMPLATE_TIER_COUNT = 9;\n\n        static private readonly List<MySmallShipTemplate>[] m_templates =\n            new List<MySmallShipTemplate>[MyMwcUtils.GetMaxValueFromEnum<MyMwcObjectBuilder_SmallShip_TypesEnum>() + 1];\n\n        static private readonly Dictionary<int, MySmallShipTemplate[]> m_templateTiers =\n            new Dictionary<int, MySmallShipTemplate[]>();\n\n        static MySmallShipTemplates()\n        {\n            Load();\n        }\n\n        public static int GenerateNewID()\n        {\n            int maxID = 0;\n            foreach (var templates in m_templates)\n            {\n                foreach (var template in templates)\n                {\n                    if (template.ID > maxID)\n                    {\n                        maxID = template.ID;\n                    }\n                }\n            }\n\n            return maxID + 1;\n        }\n\n        public static void Load(bool displaySuccessMessage = false)\n        {\n            MyMwcLog.WriteLine(\"MySmallShipTemplates.Load() - START\");\n            MyMwcLog.IncreaseIndent();\n            for (int i = 0; i < m_templates.Length; i++)\n            {\n                m_templates[i] = new List<MySmallShipTemplate>();\n            }\n\n            try\n            {\n                MyMwcObjectBuilder_SmallShipTemplates templatesBuilder;\n\n                templatesBuilder = MyLocalCache.LoadGlobalData().Templates;\n\n                foreach (var templateBuilder in templatesBuilder.SmallShipTemplates) \n                {\n                    m_templates[(int)templateBuilder.Builder.ShipType].Add(new MySmallShipTemplate(templateBuilder));\n                }\n                LoadTemplateTiers();\n                MyMwcLog.WriteLine(\"Load state - OK\");\n                if (displaySuccessMessage) \n                {\n                    MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.MESSAGE, Localization.MyTextsWrapperEnum.TemplatesLoadSuccess, Localization.MyTextsWrapperEnum.Success, Localization.MyTextsWrapperEnum.Ok, null));\n                }\n            }\n            catch (Exception ex) \n            {\n                MyMwcLog.WriteLine(\"Load state - ERROR\");\n                MyMwcLog.WriteLine(ex.Message);\n                MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, Localization.MyTextsWrapperEnum.TemplatesLoadError, Localization.MyTextsWrapperEnum.Error, Localization.MyTextsWrapperEnum.Ok, onMessageBox));                \n            }\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MySmallShipTemplates.Load() - END\");\n        }\n\n        private static void onMessageBox(MyGuiScreenMessageBoxCallbackEnum result)\n        {\n            MyGuiManager.BackToMainMenu();\n        }\n\n        private static MySectorServiceClient GetSectorServiceClient() \n        {\n            MySectorServiceClient client = MySectorServiceClient.GetCheckedInstance();\n            var channelContext = client.GetChannelContext();\n            if (channelContext != null)\n            {\n                channelContext.OperationTimeout = TimeSpan.FromSeconds(180);\n            }\n\n            return client;\n        }\n\n        public static void AddTemplate(MySmallShipTemplate newTemplate)\n        {\n            Debug.Assert(!string.IsNullOrWhiteSpace(newTemplate.Name.ToString()));\n            Debug.Assert(newTemplate.Builder != null);\n\n            var typeTemplates = m_templates[(int) newTemplate.Builder.ShipType];\n\n            Debug.Assert(GetTemplate(typeTemplates, newTemplate.Name) == null);\n\n            typeTemplates.Add(newTemplate);\n        }\n\n        public static MySmallShipTemplate GetTemplate(int templateId)\n        {\n            foreach (var templatesForType in m_templates)\n            {\n                foreach (var template in templatesForType)\n                {\n                    if (template.ID == templateId)\n                    {\n                        return template;\n                    }\n                }\n            }\n            return null;\n        }\n\n        public static MySmallShipTemplate GetTemplate(int templateId, int tier)\n        {\n            Debug.Assert(tier > 0);\n\n            var template = GetTemplate(templateId);\n            MySmallShipTemplate[] tiers;\n            if (template != null && m_templateTiers.TryGetValue(template.ID, out tiers))\n            {\n                for (int i = tier - 1; i >= 0; i--)\n                {\n                    if (tiers[i] != null)\n                    {\n                        template = tiers[i];\n                        break;\n                    }\n                }\n            }\n\n            return template;\n        }\n\n        public static MySmallShipTemplate GetTemplateForSpawn(int templateId)\n        {\n            var tier = MyMissions.GetCurrentTier();\n            return tier == 0 ? GetTemplate(templateId) : GetTemplate(templateId, tier);\n        }\n\n        public static List<MySmallShipTemplate> GetTemplatesForType(MyMwcObjectBuilder_SmallShip_TypesEnum type)\n        {\n            return m_templates[(int)type];\n        }\n\n        public static MySmallShipTemplate GetTemplate(MyMwcObjectBuilder_SmallShip_TypesEnum type, StringBuilder name)\n        {\n            var templatesForType = m_templates[(int)type];\n\n            return GetTemplate(templatesForType, name);\n        }\n\n        private static MySmallShipTemplate GetTemplate(List<MySmallShipTemplate> typeTemplates, StringBuilder name)\n        {\n            foreach (var existingTemplate in typeTemplates)\n            {\n                if (existingTemplate.Name.Equals(name))\n                {\n                    return existingTemplate;\n                }\n            }\n\n            return null;\n        }\n\n        public static void DeleteTemplate(MySmallShipTemplate template)\n        {\n            Debug.Assert(!template.SavedToServer, \"Cannot delete template that is already saved on server!\");\n\n            var typeTemplates = m_templates[(int)template.Builder.ShipType];\n\n            bool deleted = typeTemplates.Remove(template);\n            Debug.Assert(deleted);\n        }\n\n        public static void SaveToServer(bool displaySuccessMessage = false)\n        {\n            MyMwcLog.WriteLine(\"MySmallShipTemplates.SaveToServer() - START\");\n            MyMwcLog.IncreaseIndent();\n            List<MyMwcObjectBuilder_SmallShipTemplate> templates = new List<MyMwcObjectBuilder_SmallShipTemplate>();\n            foreach (var templatesForType in m_templates)\n            {\n                foreach (var template in templatesForType)\n                {\n                    template.SavedToServer = true;\n                    templates.Add(template.GetObjectBuilder());\n                }\n            }\n\n            try\n            {\n                var client = GetSectorServiceClient();\n                var templatesBuilder = new MyMwcObjectBuilder_SmallShipTemplates(templates);\n                client.SaveSmallShipTemplates(templatesBuilder.ToBytes());\n                MySectorServiceClient.SafeClose();\n                MyMwcLog.WriteLine(\"Save state - OK\");\n                if (displaySuccessMessage)\n                {\n                    MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.MESSAGE, Localization.MyTextsWrapperEnum.TemplatesSaveSuccess, Localization.MyTextsWrapperEnum.Success, Localization.MyTextsWrapperEnum.Ok, null));\n                }\n            }\n            catch (Exception ex)\n            {\n                MyMwcLog.WriteLine(\"Save state - ERROR\");\n                MyMwcLog.WriteLine(ex.Message);\n                MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, Localization.MyTextsWrapperEnum.TemplatesSaveError, Localization.MyTextsWrapperEnum.Error, Localization.MyTextsWrapperEnum.Ok, null));\n            }\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MySmallShipTemplates.SaveToServer() - END\");\n        }\n\n        private static void LoadTemplateTiers()\n        {\n            string nameFormat = \"{0}_TIER{1}\";\n            \n            m_templateTiers.Clear();\n            foreach (var templatesForType in m_templates)\n            {\n                foreach (var template in templatesForType)\n                {\n                    string templateName = template.Name.ToString();\n                    if (!templateName.Contains(\"_TIER\"))\n                    {\n                        for (int i = 0; i < TEMPLATE_TIER_COUNT; i++)\n                        {\n                            var templateTier = FindTemplateByName(string.Format(nameFormat, templateName, i+1));\n                            if (templateTier != null)\n                            {\n                                if (!m_templateTiers.ContainsKey(template.ID))\n                                {\n                                    m_templateTiers.Add(template.ID, new MySmallShipTemplate[TEMPLATE_TIER_COUNT]);\n                                }\n\n                                m_templateTiers[template.ID][i] = templateTier;\n                            }\n                        }\n                    }\n                }\n            }\n        }\n\n        private static MySmallShipTemplate FindTemplateByName(string name)\n        {\n            foreach (var templatesForType in m_templates)\n            {\n                foreach (var template in templatesForType)\n                {\n                    if (string.Compare(template.Name.ToString(), name, true) == 0)\n                    {\n                        return template;\n                    }\n                }\n            }\n            return null;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Decals/MyDecals.cs",
    "content": "﻿using System.Collections.Generic;\nusing MinerWarsMath;\nusing MinerWarsMath.Graphics;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Managers;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Utils.VertexFormats;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Render;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.Lights;\nusing System;\n\n//  Decals manager. It holds lists of decal triangles, draws them, removes decals after explosion, etc.\n//  I can't use texture atlas for holding all decal textures, because I need clamping, and if using atlas, \n//  texture sampler will get neighbour textures too.\n//\n//  We have two decal buffers. One for model instances, the other for voxels. Each one manages separate \n//  triangleVertexes buffers. One triangleVertexes buffer for one model/texture or voxel render cell and texture.\n\nnamespace MinerWars.AppCode.Game.Decals\n{\n    enum MyDecalTexturesEnum : byte\n    {\n        ExplosionSmut,\n        BulletHoleOnMetal,\n        BulletHoleOnRock\n    }\n\n    //  IMPORTANT: This is class, not struct!!!\n    //  Reason is, we need to be able to overwrite values inside even if stored in queue, stack or list. If it\n    //  was struct, we won't be able to modify it without enque/deque... and that's bad.\n    class MyDecalTriangle\n    {\n        public Vector3 Position0;\n        public Vector3 Position1;\n        public Vector3 Position2;\n        public Vector2 TexCoord0;\n        public Vector2 TexCoord1;\n        public Vector2 TexCoord2;\n        public Vector4 Color0;\n        public Vector4 Color1;\n        public Vector4 Color2;\n        public Vector3 Normal0;\n        public Vector3 Normal1;\n        public Vector3 Normal2;\n        public Vector3 Binormal0;\n        public Vector3 Binormal1;\n        public Vector3 Binormal2;\n        public Vector3 Tangent0;\n        public Vector3 Tangent1;\n        public Vector3 Tangent2;\n        public bool Draw;\n        public int RemainingTrianglesOfThisDecal;       //  This number tells us how many triangles of one decal are in the buffer after this triangleVertexes. If zero, this is the last triangleVertexes of a decal.\n        public float RandomOffset;\n\n        public MyLight Light;\n        public float Emissivity;\n        public Vector3 Position;\n\n        public void Start(float lightSize)\n        {\n            if (lightSize > 0)\n            {\n                Light = MyLights.AddLight();\n                Light.Color = Vector4.One;\n                Light.Start(MyLight.LightTypeEnum.PointLight, 1.0f);\n                Light.LightOn = lightSize > 0;\n                Light.Intensity = 10;\n            }\n        }\n\n        public void Close()\n        {\n            if (Light != null)\n            {\n                MyLights.RemoveLight(Light);\n                Light = null;\n            }\n        }\n    }\n\n    static class MyDecals\n    {\n        static MyVertexFormatDecal[] m_vertices;\n        static MyTexture2D[] m_texturesDiffuse;\n        static MyTexture2D[] m_texturesNormalMap;\n        static List<MyTriangle_Vertex_Normals> m_neighbourTriangles;\n        static MyDecalsForPhysObjects m_decalsForModels;\n        static MyDecalsForVoxels m_decalsForVoxels;\n\n        static MyDecals()\n        {\n            MyRender.RegisterRenderModule(MyRenderModuleEnum.Decals, \"Decals\", Draw, MyRenderStage.LODDrawEnd);\n        }\n\n        public static void LoadContent()\n        {\n            MyMwcLog.WriteLine(\"MyDecals.LoadContent() - START\");\n            MyMwcLog.IncreaseIndent();\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyDecals::LoadContent\");\n\n            //  Reason is that if count of neighbour triangles is more then decal triangles buffer, we won't be able to add any triangleVertexes to the buffer.\n            MyCommonDebugUtils.AssertRelease(MyDecalsConstants.MAX_DECAL_TRIANGLES_IN_BUFFER > MyDecalsConstants.TEXTURE_LARGE_MAX_NEIGHBOUR_TRIANGLES);\n\n            MyCommonDebugUtils.AssertRelease(MyDecalsConstants.MAX_DECAL_TRIANGLES_IN_BUFFER_LARGE <= MyDecalsConstants.MAX_DECAL_TRIANGLES_IN_BUFFER);\n            MyCommonDebugUtils.AssertRelease(MyDecalsConstants.MAX_DECAL_TRIANGLES_IN_BUFFER_SMALL <= MyDecalsConstants.MAX_DECAL_TRIANGLES_IN_BUFFER);\n\n            //  Reason is that if count of neighbour triangles is more then decal triangles buffer, we won't be able to add any triangleVertexes to the buffer.\n            MyCommonDebugUtils.AssertRelease(MyDecalsConstants.MAX_DECAL_TRIANGLES_IN_BUFFER > MyDecalsConstants.TEXTURE_SMALL_MAX_NEIGHBOUR_TRIANGLES);\n            \n            //  Reason is that if count of neighbour triangles is more then this fade limit, we won't be able to add decals that lay on more triangles, because buffer will be never released to us.\n            MyCommonDebugUtils.AssertRelease(MyDecalsConstants.TEXTURE_LARGE_MAX_NEIGHBOUR_TRIANGLES < (MyDecalsConstants.MAX_DECAL_TRIANGLES_IN_BUFFER * MyDecalsConstants.TEXTURE_LARGE_FADING_OUT_MINIMAL_TRIANGLE_COUNT_PERCENT));\n\n            //  Reason is that if count of neighbour triangles is more then this fade limit, we won't be able to add decals that lay on more triangles, because buffer will be never released to us.\n            MyCommonDebugUtils.AssertRelease(MyDecalsConstants.TEXTURE_SMALL_MAX_NEIGHBOUR_TRIANGLES < (MyDecalsConstants.MAX_DECAL_TRIANGLES_IN_BUFFER * MyDecalsConstants.TEXTURE_SMALL_FADING_OUT_MINIMAL_TRIANGLE_COUNT_PERCENT));\n\n            //  Large must be bigger than small\n            MyCommonDebugUtils.AssertRelease(MyDecalsConstants.TEXTURE_LARGE_MAX_NEIGHBOUR_TRIANGLES > MyDecalsConstants.TEXTURE_SMALL_MAX_NEIGHBOUR_TRIANGLES);\n\n            m_vertices = new MyVertexFormatDecal[MyDecalsConstants.MAX_DECAL_TRIANGLES_IN_BUFFER * MyDecalsConstants.VERTEXES_PER_DECAL];\n            m_neighbourTriangles = new List<MyTriangle_Vertex_Normals>(MyDecalsConstants.TEXTURE_LARGE_MAX_NEIGHBOUR_TRIANGLES);\n            \n            m_decalsForModels = new MyDecalsForPhysObjects(MyDecalsConstants.DECAL_BUFFERS_COUNT);\n            m_decalsForVoxels = new MyDecalsForVoxels(MyDecalsConstants.DECAL_BUFFERS_COUNT);\n\n            //  Decal textures\n            int texturesCount = MyEnumsToStrings.Decals.Length;\n            m_texturesDiffuse = new MyTexture2D[texturesCount];\n            m_texturesNormalMap = new MyTexture2D[texturesCount];\n            \n            for (int i = 0; i < texturesCount; i++)\n            {\n                MyMwcLog.WriteLine(\"textureManager \" + i.ToString() + \"Textures\\\\Decals\\\\\" + MyEnumsToStrings.Decals[i] + \"_Diffuse\", SysUtils.LoggingOptions.MISC_RENDER_ASSETS);\n                m_texturesDiffuse[i] = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\Decals\\\\\" + MyEnumsToStrings.Decals[i] + \"_Diffuse\", null, LoadingMode.Immediate);\n                MyMwcLog.WriteLine(\"textureManager \" + i.ToString() + \"Textures\\\\Decals\\\\\" + MyEnumsToStrings.Decals[i] + \"_NormalMap\", SysUtils.LoggingOptions.MISC_RENDER_ASSETS);\n                m_texturesNormalMap[i] = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\Decals\\\\\" + MyEnumsToStrings.Decals[i] + \"_NormalMap\", CheckTexture, LoadingMode.Immediate);\n                \n                MyUtils.AssertTexture(m_texturesNormalMap[i]);\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyDecals.LoadContent() - END\");\n        }\n\n        /// <summary>\n        /// Checks the normal map.\n        /// </summary>\n        /// <param name=\"texture\">The texture.</param>\n        private static void CheckTexture(MyTexture texture)\n        {\n            MyUtils.AssertTexture((MyTexture2D)texture);\n\n            texture.TextureLoaded -= CheckTexture;\n        }\n\n        /// <summary>\n        /// Unloads the content.\n        /// </summary>\n        public static void UnloadContent()\n        {\n            MyMwcLog.WriteLine(\"MyDecals.UnloadContent - START\");\n            MyMwcLog.IncreaseIndent();\n\n            if (m_decalsForModels != null)\n                m_decalsForModels.Clear();\n\n            if (m_decalsForVoxels != null)\n                m_decalsForVoxels.Clear();\n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyDecals.UnloadContent - END\");\n        }\n\n        //  Add decal and all surounding triangles according to the type of intersection (model or voxel)\n        public static void Add(MyDecalTexturesEnum decalTexture, float decalSize, float angle, Vector4 color, bool alphaBlendByAngle,\n            ref MyIntersectionResultLineTriangleEx intersection, float lightSize, float emissivity, float decalNormalOffset)\n        {\n            if (!MyRenderConstants.RenderQualityProfile.EnableDecals)\n                return;\n\n            //  Ignore decals too far away\n            if (Vector3.Distance(MyCamera.Position, intersection.IntersectionPointInWorldSpace) > (MyDecalsConstants.MAX_DISTANCE_FOR_ADDING_DECALS / MyCamera.Zoom.GetZoomLevel())) \n                return;\n\n            //\tPolomer decalu a scale faktor pre vypocet textury.\n            //  Decal size is something as radius of a decal, so when converting from real metres to texture space, we need to divide by 2.0\n            float decalScale = 1.0f / (2.0f * decalSize);\n\n            // Fix: This is safer way to get right vector.\n            Vector3 rightVector;\n            MyTriangle_Vertexes triangle = intersection.Triangle.InputTriangle;\n\n            if ((triangle.Vertex0 - intersection.IntersectionPointInObjectSpace).Length() > MyMwcMathConstants.EPSILON)\n            {\n                rightVector = MyMwcUtils.Normalize(triangle.Vertex0 - intersection.IntersectionPointInObjectSpace);\n            }\n            else if ((triangle.Vertex1 - intersection.IntersectionPointInObjectSpace).Length() > MyMwcMathConstants.EPSILON)\n            {\n                rightVector = MyMwcUtils.Normalize(triangle.Vertex1 - intersection.IntersectionPointInObjectSpace);\n            }\n            else if ((triangle.Vertex2 - intersection.IntersectionPointInObjectSpace).Length() > MyMwcMathConstants.EPSILON)\n            {\n                rightVector = MyMwcUtils.Normalize(triangle.Vertex2 - intersection.IntersectionPointInObjectSpace);\n            }\n            else\n            {\n                System.Diagnostics.Debug.Assert(false, \"Normal has zero length! Probably invalid intersection point!\");\n                return;\n            }\n\n            Vector3 upVector = Vector3.Cross(rightVector, intersection.NormalInObjectSpace);\n\n            if (!MyMwcUtils.HasValidLength(upVector))\n            {\n                //System.Diagnostics.Debug.Assert(false, \"Invalid result of cross produt!\");\n                return;\n            }\n\n            upVector = MyMwcUtils.Normalize(upVector);\n\n            //  We create world matrix for the decal and then rotate the matrix, so we can extract rotated right/up vectors/planes for texture coord0 calculations\n            Matrix decalMatrix = Matrix.CreateRotationZ(angle) * Matrix.CreateWorld(intersection.IntersectionPointInObjectSpace, intersection.NormalInObjectSpace, upVector);\n            \n            //\tRight plane\n            MyPlane rightPlane;\n            rightPlane.Point = intersection.IntersectionPointInObjectSpace;\n            rightPlane.Normal = MyUtils.GetTransformNormalNormalized(Vector3.Right, ref decalMatrix);\n\n            //\tUp plane\n            MyPlane upPlane;\n            upPlane.Point = intersection.IntersectionPointInObjectSpace;\n            upPlane.Normal = MyUtils.GetTransformNormalNormalized(Vector3.Up, ref decalMatrix);\n\n            if (intersection.Entity is MyVoxelMap)\n            {\n                AddDecalVoxel(decalTexture, decalSize, decalScale, color, alphaBlendByAngle, ref intersection, ref rightPlane, ref upPlane, lightSize, emissivity, decalNormalOffset);\n            }\n            else\n            {\n                AddDecalModel(decalTexture, decalSize, decalScale, color, alphaBlendByAngle, ref intersection, ref rightPlane, ref upPlane, lightSize, emissivity, decalNormalOffset);\n            }\n        }\n\n        //  Add decal and all surounding triangles for voxel intersection\n        static void AddDecalVoxel(MyDecalTexturesEnum decalTexture, float decalSize, float decalScale, Vector4 color, bool alphaBlendByAngle,\n            ref MyIntersectionResultLineTriangleEx intersection, ref MyPlane rightPlane, ref MyPlane upPlane, float lightSize, float emissivity, float decalNormalOffset)\n        {\n            MyVoxelMap voxelMap = (MyVoxelMap)intersection.Entity;\n\n            MyMwcVector3Int renderCellCoord = voxelMap.GetVoxelRenderCellCoordinateFromMeters(ref intersection.IntersectionPointInWorldSpace);\n            BoundingSphere decalBoundingSphere = new BoundingSphere(intersection.IntersectionPointInWorldSpace, decalSize);\n\n            //  If whole decal can't fit inside of render cell, we won't add any of its triangles. This is because\n            //  when hiding/removing triangles after explosion, it is easier to check only one render cell.\n            BoundingBox renderCellBoundingBox;\n            voxelMap.GetRenderCellBoundingBox(ref renderCellCoord, out renderCellBoundingBox);\n\n            // TODO simon - commented as an experiment. If there are bugs with decals on voxels, remove the comment below\n            //if (renderCellBoundingBox.Contains(decalBoundingSphere) != ContainmentType.Contains) return;\n\n            //  If we get null, buffer is full so no new decals can't be placed\n            MyDecalsForVoxelsTriangleBuffer decalsBuffer = m_decalsForVoxels.GetTrianglesBuffer(voxelMap, ref renderCellCoord, decalTexture, ref renderCellBoundingBox);\n            if (decalsBuffer == null) return;\n\n            //  We need to create decals on neighborhood triangles too, so we check all triangles if they fall in decal's sphere and if yes, we place decal on them.\n            //  We check triangles from same voxelmap or model only.\n\n            m_neighbourTriangles.Clear();\n            //intersection.VoxelMap.GetTrianglesIntersectingSphere(ref decalBoundingSphere, intersection.TriangleHelperIndex, m_neighbourTriangles, decalsBuffer.MaxNeighbourTriangles);\n            voxelMap.GetTrianglesIntersectingSphere(ref decalBoundingSphere, m_neighbourTriangles, decalsBuffer.MaxNeighbourTriangles, false);\n\n            int trianglesToAdd = m_neighbourTriangles.Count;// +1;\n\n            if (trianglesToAdd == 0)\n            {\n                return;\n            }\n\n            if (decalsBuffer.CanAddTriangles(trianglesToAdd) == true)\n            {\n                var normalSum = CalculateDominantNormal(m_neighbourTriangles);\n                normalSum *= decalNormalOffset;\n\n                //  Create decal for every neighbour triangleVertexes\n                for (int i = 0; i < m_neighbourTriangles.Count; i++)\n                {\n                    trianglesToAdd--;\n\n                    var triangle = m_neighbourTriangles[i];\n                    triangle.Vertexes.Vertex0 += normalSum;\n                    triangle.Vertexes.Vertex1 += normalSum;\n                    triangle.Vertexes.Vertex2 += normalSum;\n                    m_neighbourTriangles[i] = triangle;\n\n                    decalsBuffer.Add(m_neighbourTriangles[i], intersection.NormalInWorldSpace, ref rightPlane,\n                        ref upPlane, decalScale, trianglesToAdd, color, alphaBlendByAngle, lightSize, intersection.IntersectionPointInWorldSpace, emissivity);\n                }\n            }\n        }\n\n        //  Add decal and all surounding triangles for model intersection\n        static void AddDecalModel(MyDecalTexturesEnum decalTexture, float decalSize, float decalScale, Vector4 color, bool alphaBlendByAngle, \n            ref MyIntersectionResultLineTriangleEx intersection, ref MyPlane rightPlane, ref MyPlane upPlane, float lightSize, float emissivity, float decalNormalOffset)\n        {\n            MyDecalsForPhysObjectsTriangleBuffer decalsBuffer = m_decalsForModels.GetTrianglesBuffer(intersection.Entity, decalTexture);\n\n            //  If we get null, buffer is full so no new decals can't be placed\n            if (decalsBuffer == null) return;\n\n            //  We need to create decals on neighborhood triangles too, so we check all triangles if they fall in decal's sphere and if yes, we place decal on them.\n            //  We check triangles from same voxelmap or model only.\n\n            BoundingSphere decalSphere = new BoundingSphere(intersection.IntersectionPointInObjectSpace, decalSize);\n            m_neighbourTriangles.Clear();\n            \n            intersection.Entity.GetTrianglesIntersectingSphere(ref decalSphere, intersection.NormalInObjectSpace, MyDecalsConstants.MAX_NEIGHBOUR_ANGLE, m_neighbourTriangles, decalsBuffer.MaxNeighbourTriangles);\n\n            int trianglesToAdd = m_neighbourTriangles.Count;\n\n            if (trianglesToAdd == 0)\n            {\n                return;\n            }\n\n            if (decalsBuffer.CanAddTriangles(trianglesToAdd))\n            {\n                Vector3 normalSum = Vector3.Zero;\n                if (MyFakes.USE_DOMINANT_NORMAL_OFFSET_FOR_MODELS)\n                {\n                    normalSum = CalculateDominantNormal(m_neighbourTriangles);\n                    normalSum *= decalNormalOffset;\n                }\n\n                //  Create decal for every neighbour triangleVertexes\n                for (int i = 0; i < m_neighbourTriangles.Count; i++)\n                {\n                    trianglesToAdd--;\n\n                    if (MyFakes.USE_DOMINANT_NORMAL_OFFSET_FOR_MODELS)\n                    {\n                        var triangle = m_neighbourTriangles[i];\n                        triangle.Vertexes.Vertex0 += normalSum;\n                        triangle.Vertexes.Vertex1 += normalSum;\n                        triangle.Vertexes.Vertex2 += normalSum;\n                        m_neighbourTriangles[i] = triangle;\n                    }\n\n                    decalsBuffer.Add(m_neighbourTriangles[i], intersection.Triangle.InputTriangleNormal,\n                        ref rightPlane, ref upPlane, decalScale, decalSize, trianglesToAdd, color, alphaBlendByAngle, lightSize, intersection.IntersectionPointInObjectSpace, emissivity);\n                }\n            }\n        }\n\n        static Vector3 CalculateDominantNormal(List<MyTriangle_Vertex_Normals> triangleVertexNormals)\n        {\n            Vector3 normalSum = Vector3.Zero;\n            for (int i = 0; i < triangleVertexNormals.Count; i++)\n            {\n                normalSum +=\n                    triangleVertexNormals[i].Normals.Normal0 +\n                    triangleVertexNormals[i].Normals.Normal1 +\n                    triangleVertexNormals[i].Normals.Normal2;\n            }\n\n            return MyMwcUtils.Normalize(normalSum);\n        }\n\n        //  Blends-out triangles affected by explosion (radius + some safe delta). Triangles there have zero alpha are flaged to not-draw at all.\n        public static void HideTrianglesAfterExplosion(MyVoxelMap voxelMap, ref BoundingSphere explosionSphere)\n        {\n            MyRender.GetRenderProfiler().StartProfilingBlock(\"MyDecals::HideTrianglesAfterExplosion\");\n            MyMwcVector3Int renderCellCoord = voxelMap.GetVoxelRenderCellCoordinateFromMeters(ref explosionSphere.Center);\n            m_decalsForVoxels.HideTrianglesAfterExplosion(voxelMap.VoxelMapId, ref renderCellCoord, ref explosionSphere);\n            MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        /// <summary>\n        /// Removes decals from the specified entity (NOT voxel map).\n        /// E.g. when the entity is destroyed (destructible prefab).\n        /// </summary>\n        /// <param name=\"physObject\">The entity from which we want to remove decals. NOT MyVoxelMap!</param>\n        public static void RemoveModelDecals(MyEntity physObject)\n        {\n            m_decalsForModels.ReturnTrianglesBuffer(physObject);\n            foreach (var child in physObject.Children)\n            {\n                RemoveModelDecals(child);\n            }\n        }\n\n        public static bool IsLargeTexture(MyDecalTexturesEnum decalTexture)\n        {\n            if (decalTexture == MyDecalTexturesEnum.ExplosionSmut) return true;\n\n            return false;\n        }\n\n        public static float GetMaxDistanceForDrawingDecals()\n        {\n            float zoomLevel = MyCamera.Zoom.GetZoomLevel();\n            zoomLevel = System.Math.Max(zoomLevel, MyConstants.FIELD_OF_VIEW_MIN / MyCamera.FieldOfView);\n            return zoomLevel > 0 ? MyDecalsConstants.MAX_DISTANCE_FOR_DRAWING_DECALS / zoomLevel : MyDecalsConstants.MAX_DISTANCE_FOR_DRAWING_DECALS;\n        }\n\n        public static void Draw()\n        {\n            if (MyRender.GetCurrentLodDrawPass() == MyLodTypeEnum.LOD0)\n            {\n                MyStateObjects.DepthStencil_TestFarObject_DepthReadOnly.Apply();\n                MyStateObjects.Dynamic_Decals_BlendState.Apply();\n                MyStateObjects.BiasedRasterizer_Decals.Apply();\n\n                Effects.MyEffectDecals effect = (Effects.MyEffectDecals)MyRender.GetEffect(MyEffects.Decals);\n\n                //  Draw voxel decals\n                m_decalsForVoxels.Draw(m_vertices, effect, m_texturesDiffuse, m_texturesNormalMap);\n\n                //  Draw model decals\n                m_decalsForModels.Draw(m_vertices, effect, m_texturesDiffuse, m_texturesNormalMap);\n            } \n        }\n\n        public static float UpdateDecalEmissivity(MyDecalTriangle decalTriangle, float alpha, MyEntity entity)\n        {\n            float emisivity = 0;\n            if (decalTriangle.Emissivity > 0)\n            {\n                //emisivity = (float)(Math.Sin(decalTriangle.RandomOffset + decalTriangle.RandomOffset * MyMinerGame.TotalGamePlayTimeInMilliseconds / 1000.0f)) * 0.4f + 0.7f;\n\n                // 2 seconds default, more emissive lit longer\n                float stableLength = 2000 * decalTriangle.Emissivity;\n                if ((MyMinerGame.TotalGamePlayTimeInMilliseconds - decalTriangle.RandomOffset) < stableLength)\n                    emisivity = 1;\n                else\n                {\n                    emisivity = (float)(500 - (MyMinerGame.TotalGamePlayTimeInMilliseconds - stableLength - decalTriangle.RandomOffset)) / 500.0f;\n                    if (emisivity < 0)\n                        emisivity = 0;\n                }\n\n                emisivity *= decalTriangle.Emissivity;\n\n                if (emisivity > 0)\n                {\n                    Vector4 color = MyDecalsConstants.PROJECTILE_DECAL_COLOR;\n\n                    Vector3 position;\n                    if (entity != null)\n                    {\n                        position = Vector3.Transform(decalTriangle.Position, entity.WorldMatrix);\n                    }\n                    else\n                    {\n                        position = decalTriangle.Position;\n                    }\n\n                    MinerWars.AppCode.Game.TransparentGeometry.MyTransparentGeometry.AddPointBillboard(\n                            TransparentGeometry.MyTransparentMaterialEnum.DecalGlare,\n                            color * alpha,\n                           position,\n                           1.5f * emisivity,\n                           0);                    \n\n                    if (decalTriangle.Light != null)\n                    {\n                        decalTriangle.Light.Color = color;\n                        decalTriangle.Light.SetPosition(position);\n\n                        float range = Math.Max(3 * emisivity * alpha, 0.1f);\n                        decalTriangle.Light.Range = range;\n                    }\n                }\n            }\n\n            return emisivity;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Decals/MyDecalsForPhysObjects.cs",
    "content": "﻿using System.Collections.Generic;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.Managers;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Utils.VertexFormats;\nusing MinerWars.AppCode.Game.Textures;\nusing System;\nusing MinerWars.AppCode.Game.Effects;\nusing MinerWars.AppCode.Game.Render;\n\n//using MinerWarsMath.Graphics;\nusing SharpDX;\nusing SharpDX.Direct3D9;\nusing SharpDX.Toolkit;\nusing SharpDX.Toolkit.Graphics;\n\n\n\n//  This class mainstains collection of model/texture decal triangleVertexes buffers.\n\nnamespace MinerWars.AppCode.Game.Decals\n{\n    using Byte4 = MinerWarsMath.Graphics.PackedVector.Byte4;\n    using HalfVector2 = MinerWarsMath.Graphics.PackedVector.HalfVector2;\n    using HalfVector4 = MinerWarsMath.Graphics.PackedVector.HalfVector4;\n    using Vector2 = MinerWarsMath.Vector2;\n    using Vector3 = MinerWarsMath.Vector3;\n    using Vector4 = MinerWarsMath.Vector4;\n    using Rectangle = MinerWarsMath.Rectangle;\n    using Matrix = MinerWarsMath.Matrix;\n    using Color = MinerWarsMath.Color;\n    using BoundingBox = MinerWarsMath.BoundingBox;\n    using BoundingSphere = MinerWarsMath.BoundingSphere;\n    using BoundingFrustum = MinerWarsMath.BoundingFrustum;\n\n\n    class MyDecalsForPhysObjects\n    {\n        enum MyDecalForModelsState : byte\n        {\n            READY,\n            FADING_OUT\n        }\n\n        struct MyDecalsForModelsDictionaryKey\n        {\n            public MyEntity PhysObject;\n            public MyDecalTexturesEnum DecalTexture;\n\n            public MyDecalsForModelsDictionaryKey(MyEntity physObject, MyDecalTexturesEnum decalTexture)\n            {\n                PhysObject = physObject;\n                DecalTexture = decalTexture;\n            }\n        }\n\n        MyDecalForModelsState m_status;\n        int m_fadingOutStartTime;\n        int m_capacity;\n        int m_fadingOutStartLimit;\n        int m_fadingOutBuffersCount;\n        MyDecalsForPhysObjectsTriangleBuffer[] m_triangleBuffers;\n        Dictionary<MyDecalsForModelsDictionaryKey, MyDecalsForPhysObjectsTriangleBuffer> m_triangleBuffersByKey;\n        Stack<MyDecalsForPhysObjectsTriangleBuffer> m_freeTriangleBuffers;\n        List<MyDecalsForPhysObjectsTriangleBuffer> m_usedTriangleBuffers;\n        List<MyDecalsForPhysObjectsTriangleBuffer> m_sortTriangleBuffersByTexture;\n\n\n        public MyDecalsForPhysObjects(int capacity)\n        {\n            m_status = MyDecalForModelsState.READY;\n            m_capacity = capacity;\n            m_fadingOutStartLimit = (int)(m_capacity * MyDecalsConstants.TEXTURE_LARGE_FADING_OUT_START_LIMIT_PERCENT);\n            m_fadingOutBuffersCount = (int)(m_capacity * MyDecalsConstants.TEXTURE_LARGE_FADING_OUT_MINIMAL_TRIANGLE_COUNT_PERCENT);\n\n            m_sortTriangleBuffersByTexture = new List<MyDecalsForPhysObjectsTriangleBuffer>(m_capacity);\n            m_triangleBuffersByKey = new Dictionary<MyDecalsForModelsDictionaryKey, MyDecalsForPhysObjectsTriangleBuffer>(m_capacity);\n            m_freeTriangleBuffers = new Stack<MyDecalsForPhysObjectsTriangleBuffer>(m_capacity);\n            m_usedTriangleBuffers = new List<MyDecalsForPhysObjectsTriangleBuffer>(m_capacity);\n\n            m_triangleBuffers = new MyDecalsForPhysObjectsTriangleBuffer[m_capacity];\n            for (int i = 0; i < m_capacity; i++)\n            {\n                m_triangleBuffers[i] = new MyDecalsForPhysObjectsTriangleBuffer(MyDecalsConstants.MAX_DECAL_TRIANGLES_IN_BUFFER);\n                m_freeTriangleBuffers.Push(m_triangleBuffers[i]);\n            }\n        }\n\n        public MyDecalsForPhysObjectsTriangleBuffer GetTrianglesBuffer(MyEntity physObject, MyDecalTexturesEnum decalTexture)\n        {\n            MyDecalsForModelsDictionaryKey key = new MyDecalsForModelsDictionaryKey(physObject, decalTexture);\n\n            MyDecalsForPhysObjectsTriangleBuffer outValue;\n            if (m_triangleBuffersByKey.TryGetValue(key, out outValue))\n            {\n                //  Combination of model/texture was found in dictionary, so we can return in right now\n                return outValue;\n            }\n            else\n            {\n                if (m_triangleBuffersByKey.Count >= m_capacity)\n                {\n                    //  We are full, can't place decal on a new model/texture. Need to wait for next CheckBufferFull.\n                    return null;\n                }\n                else\n                {\n                    //  This is first time we want to place decal on this model/texture, so here we allocate and initialize buffer\n                    MyDecalsForPhysObjectsTriangleBuffer newBuffer = m_freeTriangleBuffers.Pop();\n                    m_triangleBuffersByKey.Add(key, newBuffer);\n                    m_usedTriangleBuffers.Add(newBuffer);\n                    newBuffer.Start(physObject, decalTexture);\n                    return newBuffer;\n                }\n            }\n        }\n\n        public void ReturnTrianglesBuffer( MyEntity physObject )\n        {\n            foreach (byte value in Enum.GetValues(typeof(MyDecalTexturesEnum)))\n            {\n                var key = new MyDecalsForModelsDictionaryKey(physObject, (MyDecalTexturesEnum)value);\n\n                MyDecalsForPhysObjectsTriangleBuffer outValue;\n                if (m_triangleBuffersByKey.TryGetValue(key, out outValue))\n                {\n                    MyDecalsForPhysObjectsTriangleBuffer usedBuffer = outValue;\n\n                    m_triangleBuffersByKey.Remove(key);\n                    usedBuffer.Clear();\n                    m_usedTriangleBuffers.Remove(usedBuffer);\n                    m_freeTriangleBuffers.Push(usedBuffer);\n                }\n            }\n        }\n\n        public void Clear()\n        {\n            for (int i = 0; i < m_capacity; i++)\n            {\n                m_triangleBuffers[i].Clear(true);\n            }\n        }\n\n        public void CheckIfBufferIsFull()\n        {\n            if (m_status == MyDecalForModelsState.FADING_OUT)\n            {\n                if ((MyMinerGame.TotalGamePlayTimeInMilliseconds - m_fadingOutStartTime) > MyDecalsConstants.DECALS_FADE_OUT_INTERVAL_MILISECONDS)\n                {\n                    //  If fading-out phase finished, we change state and remove faded-out buffers\n                    for (int i = 0; i < m_fadingOutBuffersCount; i++)\n                    {\n                        if (m_usedTriangleBuffers.Count > 0)\n                        {\n                            MyDecalsForPhysObjectsTriangleBuffer releasedBuffer = m_usedTriangleBuffers[0];\n                            m_usedTriangleBuffers.RemoveAt(0);\n                            releasedBuffer.Clear();\n                            m_freeTriangleBuffers.Push(releasedBuffer);\n                            m_triangleBuffersByKey.Remove(new MyDecalsForModelsDictionaryKey(releasedBuffer.Entity, releasedBuffer.DecalTexture));\n                        }\n                    }\n\n                    m_status = MyDecalForModelsState.READY;\n                }\n            }\n            else\n            {\n                if (m_triangleBuffersByKey.Count >= m_fadingOutStartLimit)\n                {\n                    int i = 0;\n                    foreach (MyDecalsForPhysObjectsTriangleBuffer buffer in m_usedTriangleBuffers)\n                    {\n                        if (i < m_fadingOutBuffersCount)\n                        {\n                            buffer.FadeOutAll();\n                        }\n                        i++;\n                    }\n\n                    m_status = MyDecalForModelsState.FADING_OUT;\n                    m_fadingOutStartTime = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n                }\n            }\n        }\n\n        public void Draw(MyVertexFormatDecal[] vertices, MyEffectDecals effect, MyTexture2D[] texturesDiffuse, MyTexture2D[] texturesNormalMap)\n        {\n            CheckIfBufferIsFull();\n\n            //  SortForSAP buffers by texture\n            m_sortTriangleBuffersByTexture.Clear();\n            foreach (MyDecalsForPhysObjectsTriangleBuffer buffer in m_usedTriangleBuffers)\n            {\n                if (buffer.Entity.IsVisible() == true)\n                {\n                    if ((buffer.Entity == MyGuiScreenGamePlay.Static.ControlledEntity\n                        || buffer.Entity.Parent == MyGuiScreenGamePlay.Static.ControlledEntity) && \n                        MyGuiScreenGamePlay.Static.IsFirstPersonView)\n                    {\n                        //  Don't draw decals if they are on an entity in which the camera is\n                        continue;\n                    }\n\n                    // Decal with \"ExplosionSmut\" texture is much larger, so it must be drawed to larger distance.\n                    float fadeoutDistance = MyDecals.GetMaxDistanceForDrawingDecals();\n                    if (buffer.DecalTexture == MyDecalTexturesEnum.ExplosionSmut)\n                        fadeoutDistance *= MyDecalsConstants.DISTANCE_MULTIPLIER_FOR_LARGE_DECALS;\n\n                    //if (Vector3.Distance(MyCamera.m_initialSunWindPosition, buffer.PhysObject.GetPosition()) >= (MyDecals.GetMaxDistanceForDrawingDecals()))\n                    //if (buffer.PhysObject.GetDistanceBetweenCameraAndBoundingSphere() >= MyDecals.GetMaxDistanceForDrawingDecals())\n                    if (buffer.Entity.GetDistanceBetweenCameraAndBoundingSphere() >= fadeoutDistance)\n                    {\n                        continue;\n                    }\n\n                    m_sortTriangleBuffersByTexture.Add(buffer);\n                }\n            }            \n            m_sortTriangleBuffersByTexture.Sort();\n            \n            //  Draw decals - sorted by texture\n            MyDecalTexturesEnum? lastDecalTexture = null;\n            for (int i = 0; i < m_sortTriangleBuffersByTexture.Count; i++)\n            {\n                MyDecalsForPhysObjectsTriangleBuffer buffer = m_sortTriangleBuffersByTexture[i];\n\n                int trianglesCount = buffer.CopyDecalsToVertices(vertices);\n\n                if (trianglesCount <= 0) continue;\n\n                //  Switch texture only if different than previous one\n                if ((lastDecalTexture == null) || (lastDecalTexture != buffer.DecalTexture))\n                {\n                    int textureIndex = (int)buffer.DecalTexture;\n                    effect.SetDecalDiffuseTexture(texturesDiffuse[textureIndex]);\n                    effect.SetDecalNormalMapTexture(texturesNormalMap[textureIndex]);\n                    lastDecalTexture = buffer.DecalTexture;\n                }\n\n                //effect.SetWorldMatrix(buffer.Entity.WorldMatrix * Matrix.CreateTranslation(-MyCamera.Position));\n                effect.SetWorldMatrix(buffer.Entity.GetWorldMatrixForDraw());\n                effect.SetViewProjectionMatrix(MyCamera.ViewProjectionMatrixAtZero);\n\n                // set FadeoutDistance\n                float fadeoutDistance = MyDecals.GetMaxDistanceForDrawingDecals();\n                if (buffer.DecalTexture == MyDecalTexturesEnum.ExplosionSmut)\n                    fadeoutDistance *= MyDecalsConstants.DISTANCE_MULTIPLIER_FOR_LARGE_DECALS;\n\n                effect.SetFadeoutDistance(fadeoutDistance);\n\n                if (!MyRenderConstants.RenderQualityProfile.ForwardRender)\n                effect.SetTechnique(MyEffectDecals.Technique.Model);\n                else\n                    effect.SetTechnique(MyEffectDecals.Technique.ModelForward);\n\n                MyMinerGame.Static.GraphicsDevice.VertexDeclaration = MyVertexFormatDecal.VertexDeclaration;\n\n                effect.Begin();\n                MyMinerGame.Static.GraphicsDevice.DrawUserPrimitives(PrimitiveType.TriangleList, 0, trianglesCount, vertices);\n                effect.End();\n\n                MyPerformanceCounter.PerCameraDraw.DecalsForEntitiesInFrustum += trianglesCount;\n            }\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Decals/MyDecalsForPhysObjectsTriangleBuffer.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing MinerWarsMath;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Utils.VertexFormats;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.CommonLIB.AppCode.Import;\n\n\n//  This class is a buffer of model decal triangles. Capacity is constant. \n//  Triangles in this buffer must belong to one model and texture.\n//\n//  Add method checks if buffer is free and only if is, we add the triangles.\n//  If buffer is full, release phase is initiated, and during this phase, small amount of\n//  triangles is faded-out. After that, places of this triangles can be used for storing new decals.\n//\n//  Each triangleVertexes belongs to one decal, so one decal can have more triangles. This connections are\n//  monitored and when removing triangles, we always remove all triangles of a decal.\n\nnamespace MinerWars.AppCode.Game.Decals\n{\n    class MyDecalsForPhysObjectsTriangleBuffer : IComparable\n    {\n        enum MyDecalsBufferState : byte\n        {\n            READY,\n            FADING_OUT_ONLY_BEGINNING,\n            FADING_OUT_ALL\n        }\n\n        public MyEntity Entity;\n        public MyDecalTexturesEnum DecalTexture;\n\n        public int MaxNeighbourTriangles;\n\n        Stack<MyDecalTriangle> m_freeTriangles;\n        Queue<MyDecalTriangle> m_trianglesQueue;\n        MyDecalsBufferState m_status;\n        int m_capacity;\n        //int m_capacityAfterStart;                   // This must be less than m_capacity, because buffer is initialized only once. This capacity is only work bounding number of decals for this type of texture\n        int m_fadingOutStartLimit;                  //  Start fading out if this percent of buffer 'fillness' is achieved\n        int m_fadingOutMinimalTriangleCount;        //  Minimal number of triangles we fade-out from the beggining of the queue\n        int m_fadingOutStartTime;                   //  When last fading-out started\n        int m_fadingOutRealTriangleCount;           //  When in fade-out phase, this is the real number of triangles we will fade-out. Always equal or more than 'm_fadingOutMinimalTriangleCount'\n\n                \n        public MyDecalsForPhysObjectsTriangleBuffer(int capacity)\n        {\n            m_capacity = capacity;\n            m_trianglesQueue = new Queue<MyDecalTriangle>(m_capacity);\n\n            //  Preallocate triangles\n            m_freeTriangles = new Stack<MyDecalTriangle>(m_capacity);\n            for (int i = 0; i < m_capacity; i++)\n            {\n                m_freeTriangles.Push(new MyDecalTriangle());\n            }\n        }\n\n        //  Because this class is reused in buffers, it isn't really initialized by constructor. We make real initialization here.\n        public void Start(MyEntity entity, MyDecalTexturesEnum decalTexture)\n        {\n            Entity = entity;\n            DecalTexture = decalTexture;\n            m_status = MyDecalsBufferState.READY;\n            m_fadingOutStartTime = 0;\n\n            if (MyDecals.IsLargeTexture(decalTexture) == true)\n            {\n                //m_capacityAfterStart = MyDecalsConstants.MAX_DECAL_TRIANGLES_IN_BUFFER_LARGE;\n                m_fadingOutStartLimit = (int)(m_capacity * MyDecalsConstants.TEXTURE_LARGE_FADING_OUT_START_LIMIT_PERCENT);\n                m_fadingOutMinimalTriangleCount = (int)(m_capacity * MyDecalsConstants.TEXTURE_LARGE_FADING_OUT_MINIMAL_TRIANGLE_COUNT_PERCENT);\n                MaxNeighbourTriangles = MyDecalsConstants.TEXTURE_LARGE_MAX_NEIGHBOUR_TRIANGLES;\n            }\n            else\n            {\n                //m_capacityAfterStart = MyDecalsConstants.MAX_DECAL_TRIANGLES_IN_BUFFER_SMALL;\n                m_fadingOutStartLimit = (int)(m_capacity * MyDecalsConstants.TEXTURE_SMALL_FADING_OUT_START_LIMIT_PERCENT);\n                m_fadingOutMinimalTriangleCount = (int)(m_capacity * MyDecalsConstants.TEXTURE_SMALL_FADING_OUT_MINIMAL_TRIANGLE_COUNT_PERCENT);\n                MaxNeighbourTriangles = MyDecalsConstants.TEXTURE_SMALL_MAX_NEIGHBOUR_TRIANGLES;\n            }\n        }\n\n        //  We can just erase decal triangles, because here we don't have 'free triangles stack' as voxel decals do.\n        public void Clear(bool destroy = false)\n        {\n            while (m_trianglesQueue.Count > 0)\n            {\n                MyDecalTriangle triangle = m_trianglesQueue.Dequeue();\n                triangle.Close();\n                m_freeTriangles.Push(triangle);\n            }\n\n            if (destroy)\n                Entity = null;\n        }\n        \n        public void FadeOutAll()\n        {\n            if (m_status != MyDecalsBufferState.FADING_OUT_ONLY_BEGINNING)\n            {\n                m_fadingOutStartTime = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n            }\n\n            m_status = MyDecalsBufferState.FADING_OUT_ALL;\n        }\n\n        //  Checks if buffer has enough free triangles for adding new decal. If not, we can't add triangles\n        //  of the decal (because we add all decal triangles or none)\n        public bool CanAddTriangles(int newTrianglesCount)\n        {\n            //  If whole buffer is fading out or if buffer is full, we can't add new triangles\n            return (m_status != MyDecalsBufferState.FADING_OUT_ALL) && ((m_trianglesQueue.Count + newTrianglesCount) < m_capacity);\n        }\n\n        public void Add(MyTriangle_Vertex_Normals triangle, Vector3 normal, ref MyPlane rightPlane, ref MyPlane upPlane, float decalScale, float decalSize, int remainingTrianglesOfThisDecal, Vector4 color, bool alphaBlendByAngle, float lightSize, Vector3 position, float emissivity)\n        {\n            //  We can't add triangles while fading out\n            //if (m_status == MyDecalsBufferState.FADING_OUT) return;            \n\n            MyDecalTriangle decalTriangle = m_freeTriangles.Pop();\n            decalTriangle.Start(lightSize);\n            decalTriangle.Emissivity = emissivity;\n            //decalTriangle.RandomOffset = MyMwcUtils.GetRandomFloat(0.0f, MathHelper.Pi);\n            decalTriangle.RandomOffset = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n            decalTriangle.Position = position;\n\n            // We must repack vertex positions before copying to new triange, to avoid Z-fight.\n            decalTriangle.Position0 = VF_Packer.RepackModelPosition(ref triangle.Vertexes.Vertex0);\n            decalTriangle.Position1 = VF_Packer.RepackModelPosition(ref triangle.Vertexes.Vertex1);\n            decalTriangle.Position2 = VF_Packer.RepackModelPosition(ref triangle.Vertexes.Vertex2);\n\n            //  Texture coords\n            decalTriangle.TexCoord0 = new Vector2(\n                0.5f + decalScale * MyUtils.GetDistanceFromPointToPlane(ref decalTriangle.Position0, ref rightPlane),\n                0.5f + decalScale * MyUtils.GetDistanceFromPointToPlane(ref decalTriangle.Position0, ref upPlane));\n            decalTriangle.TexCoord1 = new Vector2(\n                0.5f + decalScale * MyUtils.GetDistanceFromPointToPlane(ref decalTriangle.Position1, ref rightPlane),\n                0.5f + decalScale * MyUtils.GetDistanceFromPointToPlane(ref decalTriangle.Position1, ref upPlane));\n            decalTriangle.TexCoord2 = new Vector2(\n                0.5f + decalScale * MyUtils.GetDistanceFromPointToPlane(ref decalTriangle.Position2, ref rightPlane),\n                0.5f + decalScale * MyUtils.GetDistanceFromPointToPlane(ref decalTriangle.Position2, ref upPlane));\n\n            //  Alpha\n            decalTriangle.Color0 = color;\n            decalTriangle.Color1 = color;\n            decalTriangle.Color2 = color;\n            if (alphaBlendByAngle)\n            {\n                decalTriangle.Color0.W = GetAlphaByAngleDiff(ref normal, ref triangle.Normals.Normal0);\n                decalTriangle.Color1.W = GetAlphaByAngleDiff(ref normal, ref triangle.Normals.Normal1);\n                decalTriangle.Color2.W = GetAlphaByAngleDiff(ref normal, ref triangle.Normals.Normal2);\n            }\n\n            AdjustAlphaByDistance(normal, decalSize, position, decalTriangle);\n\n            //  Bump mapping\n            decalTriangle.Normal0 = triangle.Normals.Normal0;\n            decalTriangle.Normal1 = triangle.Normals.Normal1;\n            decalTriangle.Normal2 = triangle.Normals.Normal2;\n\n            decalTriangle.Binormal0 = triangle.Binormals.Normal0;\n            decalTriangle.Binormal1 = triangle.Binormals.Normal1;\n            decalTriangle.Binormal2 = triangle.Binormals.Normal2;\n\n            decalTriangle.Tangent0 = triangle.Tangents.Normal0;\n            decalTriangle.Tangent1 = triangle.Tangents.Normal1;\n            decalTriangle.Tangent2 = triangle.Tangents.Normal2;\n\n            decalTriangle.RemainingTrianglesOfThisDecal = remainingTrianglesOfThisDecal;\n\n            m_trianglesQueue.Enqueue(decalTriangle);\n        }\n\n        /// <summary>\n        /// Reduces the alpha of the decalTriangle if it's in front of the decal position.\n        /// The further it is, the lower alpha it gets.\n        /// </summary>\n        private static void AdjustAlphaByDistance(Vector3 normal, float decalSize, Vector3 position,\n                                                  MyDecalTriangle decalTriangle)\n        {\n            Vector3 displacement0 = decalTriangle.Position0 - position;\n            var dot0 = Vector3.Dot(displacement0, normal) / decalSize;\n            if (dot0 > 0)\n            {\n                float alignment0 = 1 - dot0;\n                decalTriangle.Color0.W *= alignment0;\n            }\n\n            Vector3 displacement1 = decalTriangle.Position1 - position;\n            var dot1 = Vector3.Dot(displacement1, normal) / decalSize;\n            if (dot1 > 0)\n            {\n                float alignment1 = 1 - dot1;\n                decalTriangle.Color1.W *= alignment1;\n            }\n\n            Vector3 displacement2 = decalTriangle.Position2 - position;\n            var dot2 = Vector3.Dot(displacement2, normal) / decalSize;\n            if (dot2 > 0)\n            {\n                float alignment2 = 1 - dot2;\n                decalTriangle.Color2.W *= alignment2;\n            }\n        }\n\n        float GetAlphaByAngleDiff(ref Vector3 referenceNormal, ref Vector3 vertexNormal)\n        {\n            float dot = Vector3.Dot(referenceNormal, vertexNormal);\n            if (dot < MyMwcMathConstants.EPSILON)\n                return 0;\n            float result = (float) Math.Pow(dot, 3f);\n            return MathHelper.Clamp(result, 0, 1);\n        }\n\n        //  Checks if buffer isn't full at 80% (or something like that). If is, we start fadeing-out first 20% triangles (or something like that). But always all triangles of a decal.\n        void CheckIfBufferIsFull()\n        {\n            if (m_status == MyDecalsBufferState.FADING_OUT_ALL)\n            {\n                return;\n            } \n            else if (m_status == MyDecalsBufferState.FADING_OUT_ONLY_BEGINNING)\n            {\n                if ((MyMinerGame.TotalGamePlayTimeInMilliseconds - m_fadingOutStartTime) > MyDecalsConstants.DECALS_FADE_OUT_INTERVAL_MILISECONDS)\n                {\n                    //  If fading-out phase finished, we change state and remove faded-out triangles\n                    for (int i = 0; i < m_fadingOutRealTriangleCount; i++)\n                    {\n                        MyDecalTriangle triangle = m_trianglesQueue.Dequeue();\n                        triangle.Close();\n                        m_freeTriangles.Push(triangle);\n                    }\n\n                    m_status = MyDecalsBufferState.READY;\n                }\n            }\n            else\n            {\n                if (m_trianglesQueue.Count >= m_fadingOutStartLimit) \n                {\n                    //  If we get here, buffer is close to be full, so we start fade-out phase\n                    m_fadingOutRealTriangleCount = GetFadingOutRealTriangleCount();\n                    m_status = MyDecalsBufferState.FADING_OUT_ONLY_BEGINNING;\n                    m_fadingOutStartTime = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n                }\n            }\n        }\n\n        int GetFadingOutRealTriangleCount()\n        {\n            int result = 1;\n            foreach (MyDecalTriangle decalTriangle in m_trianglesQueue)\n            {\n                if ((result >= m_fadingOutMinimalTriangleCount) && (decalTriangle.RemainingTrianglesOfThisDecal == 0))\n                {\n                    break;\n                }\n\n                result++;\n            }\n\n            return result;\n        }\n\n        //  For sorting buffers by texture\n        public int CompareTo(object compareToObject)\n        {\n            MyDecalsForPhysObjectsTriangleBuffer compareToBuffer = (MyDecalsForPhysObjectsTriangleBuffer)compareToObject;\n            return ((int)compareToBuffer.DecalTexture).CompareTo((int)this.DecalTexture);\n        }\n\n        //  Copy triangles to array of vertexes and return count of triangles to draw\n        public int CopyDecalsToVertices(MyVertexFormatDecal[] vertices)\n        {\n            CheckIfBufferIsFull();            \n\n            float fadingOutAlpha = 1;\n            if ((m_status == MyDecalsBufferState.FADING_OUT_ONLY_BEGINNING) || (m_status == MyDecalsBufferState.FADING_OUT_ALL))\n            {\n                fadingOutAlpha = 1 - MathHelper.Clamp((float)(MyMinerGame.TotalGamePlayTimeInMilliseconds - m_fadingOutStartTime) / (float)MyDecalsConstants.DECALS_FADE_OUT_INTERVAL_MILISECONDS, 0, 1);\n            }\n\n            int i = 0;\n            foreach (MyDecalTriangle decalTriangle in m_trianglesQueue)\n            {\n                float alpha = 1;\n\n                //  If fading-out, we blend first 'm_fadingOutRealTriangleCount' triangles\n                if (m_status == MyDecalsBufferState.FADING_OUT_ALL)\n                {\n                    alpha = fadingOutAlpha;\n                }\n                else if ((m_status == MyDecalsBufferState.FADING_OUT_ONLY_BEGINNING) && (i < m_fadingOutRealTriangleCount))\n                {\n                    alpha = fadingOutAlpha;\n                }\n\n                int vertexIndexStart = i * MyDecalsConstants.VERTEXES_PER_DECAL;\n\n                vertices[vertexIndexStart + 0].Position = decalTriangle.Position0;\n                vertices[vertexIndexStart + 1].Position = decalTriangle.Position1;\n                vertices[vertexIndexStart + 2].Position = decalTriangle.Position2;\n\n                vertices[vertexIndexStart + 0].TexCoord = decalTriangle.TexCoord0;\n                vertices[vertexIndexStart + 1].TexCoord = decalTriangle.TexCoord1;\n                vertices[vertexIndexStart + 2].TexCoord = decalTriangle.TexCoord2;\n\n                Vector4 color0 = decalTriangle.Color0;\n                Vector4 color1 = decalTriangle.Color1;\n                Vector4 color2 = decalTriangle.Color2;\n\n                color0.W *= alpha;\n                color1.W *= alpha;\n                color2.W *= alpha;\n\n                vertices[vertexIndexStart + 0].Color = color0;\n                vertices[vertexIndexStart + 1].Color = color1;\n                vertices[vertexIndexStart + 2].Color = color2;\n\n                vertices[vertexIndexStart + 0].Normal = decalTriangle.Normal0;\n                vertices[vertexIndexStart + 1].Normal = decalTriangle.Normal1;\n                vertices[vertexIndexStart + 2].Normal = decalTriangle.Normal2;\n\n                vertices[vertexIndexStart + 0].Binormal = decalTriangle.Binormal0;\n                vertices[vertexIndexStart + 1].Binormal = decalTriangle.Binormal1;\n                vertices[vertexIndexStart + 2].Binormal = decalTriangle.Binormal2;\n\n                vertices[vertexIndexStart + 0].Tangent = decalTriangle.Tangent0;\n                vertices[vertexIndexStart + 1].Tangent = decalTriangle.Tangent1;\n                vertices[vertexIndexStart + 2].Tangent = decalTriangle.Tangent2;\n\n                float emisivity = MyDecals.UpdateDecalEmissivity(decalTriangle, alpha, Entity);\n\n                vertices[vertexIndexStart + 0].EmissiveRatio = emisivity;\n                vertices[vertexIndexStart + 1].EmissiveRatio = emisivity;\n                vertices[vertexIndexStart + 2].EmissiveRatio = emisivity;\n\n                i++;\n            }\n\n            return i;\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Decals/MyDecalsForVoxels.cs",
    "content": "﻿using System.Collections.Generic;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Managers;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Utils.VertexFormats;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Textures;\nusing System;\nusing MinerWars.AppCode.Game.Render;\n\nusing SharpDX;\nusing SharpDX.Direct3D9;\nusing SharpDX.Toolkit;\nusing SharpDX.Toolkit.Graphics;\n\nnamespace MinerWars.AppCode.Game.Decals\n{\n    using Byte4 = MinerWarsMath.Graphics.PackedVector.Byte4;\n    using HalfVector2 = MinerWarsMath.Graphics.PackedVector.HalfVector2;\n    using HalfVector4 = MinerWarsMath.Graphics.PackedVector.HalfVector4;\n    using Vector2 = MinerWarsMath.Vector2;\n    using Vector3 = MinerWarsMath.Vector3;\n    using Vector4 = MinerWarsMath.Vector4;\n    using Rectangle = MinerWarsMath.Rectangle;\n    using Matrix = MinerWarsMath.Matrix;\n    using Color = MinerWarsMath.Color;\n    using BoundingBox = MinerWarsMath.BoundingBox;\n    using BoundingSphere = MinerWarsMath.BoundingSphere;\n    using BoundingFrustum = MinerWarsMath.BoundingFrustum;\n\n    class MyDecalsForVoxels\n    {\n        enum MyDecalForVoxelsState : byte\n        {\n            READY,\n            FADING_OUT\n        }\n\n        struct MyDecalsForVoxelsDictionaryKey : IEqualityComparer<MyDecalsForVoxelsDictionaryKey>, IEquatable<MyDecalsForVoxelsDictionaryKey>\n        {\n            public readonly int VoxelMapId;\n            public readonly MyMwcVector3Int RenderCellCoord;\n            public readonly MyDecalTexturesEnum DecalTexture;\n\n            public MyDecalsForVoxelsDictionaryKey(int voxelMapId, ref MyMwcVector3Int renderCellCoord, MyDecalTexturesEnum decalTexture)\n            {\n                VoxelMapId = voxelMapId;\n                RenderCellCoord = renderCellCoord;\n                DecalTexture = decalTexture;                \n            }\n\n            #region Implementation of IEquatable<MyDecalsForVoxelsDictionaryKey>\n\n            /// <summary>\n            /// Equalses the specified other.\n            /// </summary>\n            /// <param name=\"other\">The other.</param>\n            /// <returns></returns>\n            public bool Equals(MyDecalsForVoxelsDictionaryKey other)\n            {\n                return other.VoxelMapId == VoxelMapId && other.RenderCellCoord.Equals(RenderCellCoord) &&\n                       other.DecalTexture == DecalTexture;\n            }\n\n            /// <summary>\n            /// Returns a hash code for this instance.\n            /// </summary>\n            /// <returns>\n            /// A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. \n            /// </returns>\n            public override int GetHashCode()\n            {\n                unchecked\n                {\n                    int result = VoxelMapId;\n                    result = (result*397) ^ RenderCellCoord.GetHashCode();\n                    result = (result*397) ^ ((int)DecalTexture).GetHashCode();\n                    return result;\n                }\n            }\n\n            #endregion\n\n            #region Implementation of IEqualityComparer<in MyDecalsForVoxelsDictionaryKey>\n\n            /// <summary>\n            /// Determines whether the specified objects are equal.\n            /// </summary>\n            /// <returns>\n            /// true if the specified objects are equal; otherwise, false.\n            /// </returns>\n            /// <param name=\"x\">The first object of type <paramref name=\"T\"/> to compare.</param><param name=\"y\">The second object of type <paramref name=\"T\"/> to compare.</param>\n            public bool Equals(MyDecalsForVoxelsDictionaryKey x, MyDecalsForVoxelsDictionaryKey y)\n            {\n                return x.Equals(y);\n            }\n\n            /// <summary>\n            /// Returns a hash code for the specified object.\n            /// </summary>\n            /// <returns>\n            /// A hash code for the specified object.\n            /// </returns>\n            /// <param name=\"obj\">The <see cref=\"T:System.Object\"/> for which a hash code is to be returned.</param><exception cref=\"T:System.ArgumentNullException\">The type of <paramref name=\"obj\"/> is a reference type and <paramref name=\"obj\"/> is null.</exception>\n            public int GetHashCode(MyDecalsForVoxelsDictionaryKey obj)\n            {\n                return obj.GetHashCode();\n            }\n\n            #endregion\n        }\n        \n        MyDecalForVoxelsState m_status;\n        int m_fadingOutStartTime;\n        int m_capacity;\n        int m_fadingOutStartLimit;\n        int m_fadingOutBuffersCount;\n        MyDecalsForVoxelsTriangleBuffer[] m_triangleBuffers;\n        Dictionary<MyDecalsForVoxelsDictionaryKey, MyDecalsForVoxelsTriangleBuffer> m_triangleBuffersByKey;\n        Stack<MyDecalsForVoxelsTriangleBuffer> m_freeTriangleBuffers;\n        Queue<MyDecalsForVoxelsTriangleBuffer> m_usedTriangleBuffers;\n        List<MyDecalsForVoxelsTriangleBuffer> m_sortTriangleBuffersByTexture;        \n\n\n        public MyDecalsForVoxels(int capacity)\n        {\n            m_status = MyDecalForVoxelsState.READY;\n            m_capacity = capacity;\n            m_fadingOutStartLimit = (int)(m_capacity * MyDecalsConstants.TEXTURE_LARGE_FADING_OUT_START_LIMIT_PERCENT);\n            m_fadingOutBuffersCount = (int)(m_capacity * MyDecalsConstants.TEXTURE_LARGE_FADING_OUT_MINIMAL_TRIANGLE_COUNT_PERCENT);\n\n            m_sortTriangleBuffersByTexture = new List<MyDecalsForVoxelsTriangleBuffer>(m_capacity);\n            m_triangleBuffersByKey = new Dictionary<MyDecalsForVoxelsDictionaryKey, MyDecalsForVoxelsTriangleBuffer>(m_capacity);\n            m_freeTriangleBuffers = new Stack<MyDecalsForVoxelsTriangleBuffer>(m_capacity);\n            m_usedTriangleBuffers = new Queue<MyDecalsForVoxelsTriangleBuffer>(m_capacity);\n\n            m_triangleBuffers = new MyDecalsForVoxelsTriangleBuffer[m_capacity];\n            for (int i = 0; i < m_capacity; i++)\n            {\n                m_triangleBuffers[i] = new MyDecalsForVoxelsTriangleBuffer(MyDecalsConstants.MAX_DECAL_TRIANGLES_IN_BUFFER);\n                m_freeTriangleBuffers.Push(m_triangleBuffers[i]);\n            }\n        }\n\n        public MyDecalsForVoxelsTriangleBuffer GetTrianglesBuffer(MyVoxelMap voxelMap, ref MyMwcVector3Int renderCellCoord, MyDecalTexturesEnum decalTexture, ref BoundingBox renderCellBoundingBox)\n        {\n            MyDecalsForVoxelsDictionaryKey key = new MyDecalsForVoxelsDictionaryKey(voxelMap.VoxelMapId, ref renderCellCoord, decalTexture);\n\n            MyDecalsForVoxelsTriangleBuffer outValue;\n            if (m_triangleBuffersByKey.TryGetValue(key, out outValue) == true)\n            {\n                //  Combination of cell/texture was found in dictionary, so we can return in right now\n                return outValue;\n            }\n            else\n            {\n                if (m_triangleBuffersByKey.Count >= m_capacity)\n                {\n                    //  We are full, can't place decal on a new cell/texture. Need to wait for next CheckBufferFull.\n                    return null;\n                }\n                else\n                {\n                    //  This is first time we want to place decal to this cell/texture, so here we allocate and initialize buffer\n                    MyDecalsForVoxelsTriangleBuffer newBuffer = m_freeTriangleBuffers.Pop();\n                    m_triangleBuffersByKey.Add(key, newBuffer);\n                    m_usedTriangleBuffers.Enqueue(newBuffer);\n                    newBuffer.Start(voxelMap, ref renderCellCoord, decalTexture, ref renderCellBoundingBox);\n                    return newBuffer;\n                }\n            }\n        }\n\n        //  Blends-out triangles affected by explosion (radius + some safe delta). Triangles there have zero alpha are flaged to not-draw at all.\n        public void HideTrianglesAfterExplosion(int voxelMapId, ref MyMwcVector3Int renderCellCoord, ref BoundingSphere explosionSphere)\n        {\n            //  Search for all buffers storing this voxelmap and render cell\n            foreach (MyDecalsForVoxelsTriangleBuffer buffer in m_usedTriangleBuffers)\n            {\n                if ((buffer.VoxelMap.VoxelMapId == voxelMapId) && (buffer.RenderCellCoord.Equals(renderCellCoord)))\n                {\n                    buffer.HideTrianglesAfterExplosion(ref explosionSphere);\n                }\n            }\n        }\n\n        public void CheckIfBufferIsFull()\n        {\n            if (m_status == MyDecalForVoxelsState.FADING_OUT)\n            {\n                if ((MyMinerGame.TotalGamePlayTimeInMilliseconds - m_fadingOutStartTime) > MyDecalsConstants.DECALS_FADE_OUT_INTERVAL_MILISECONDS)\n                {\n                    //  If fading-out phase finished, we change state and remove faded-out buffers\n                    for (int i = 0; i < m_fadingOutBuffersCount; i++)\n                    {\n                        MyDecalsForVoxelsTriangleBuffer releasedBuffer = m_usedTriangleBuffers.Dequeue();\n                        releasedBuffer.Clear();\n                        m_freeTriangleBuffers.Push(releasedBuffer);\n                        m_triangleBuffersByKey.Remove(new MyDecalsForVoxelsDictionaryKey(releasedBuffer.VoxelMap.VoxelMapId, ref releasedBuffer.RenderCellCoord, releasedBuffer.DecalTexture));\n                    }\n\n                    m_status = MyDecalForVoxelsState.READY;\n                }\n            }\n            else\n            {\n                if (m_triangleBuffersByKey.Count >= m_fadingOutStartLimit)\n                {\n                    int i = 0;\n                    foreach (MyDecalsForVoxelsTriangleBuffer buffer in m_usedTriangleBuffers)\n                    {\n                        if (i < m_fadingOutBuffersCount)\n                        {\n                            buffer.FadeOutAll();\n                        }\n                        i++;\n                    }\n\n                    m_status = MyDecalForVoxelsState.FADING_OUT;\n                    m_fadingOutStartTime = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n                }\n            }\n        }\n\n        public void Draw(MyVertexFormatDecal[] vertices, Effects.MyEffectDecals effect, MyTexture2D[] texturesDiffuse, MyTexture2D[] texturesNormalMap)\n        {\n            CheckIfBufferIsFull();\n\n            //  Sort buffers by texture\n            m_sortTriangleBuffersByTexture.Clear();\n            foreach (MyDecalsForVoxelsTriangleBuffer buffer in m_usedTriangleBuffers)\n            {\n                //  Check if render cell is close enought and visible in the view frustum\n                if (//(buffer.VoxelMap.GetSmallestDistanceFromCameraToRenderCell(ref buffer.RenderCellCoord) <= (MyDecals.GetMaxDistanceForDrawingDecals())) && \n                    (MyCamera.IsInFrustum(ref buffer.RenderCellBoundingBox) == true))\n                {\n                    float fadeoutDistance = MyDecals.GetMaxDistanceForDrawingDecals();\n                    if (buffer.DecalTexture == MyDecalTexturesEnum.ExplosionSmut)\n                        fadeoutDistance *= MyDecalsConstants.DISTANCE_MULTIPLIER_FOR_LARGE_DECALS;\n\n                    if(buffer.VoxelMap.GetSmallestDistanceFromCameraToRenderCell(ref buffer.RenderCellCoord) <= fadeoutDistance)\n                        m_sortTriangleBuffersByTexture.Add(buffer);\n                }\n            }            \n            m_sortTriangleBuffersByTexture.Sort();\n\n            if (m_sortTriangleBuffersByTexture.Count <= 0) return;\n\n            //  Draw decals - sorted by texture\n            MyDecalTexturesEnum? lastDecalTexture = null;\n            for (int i = 0; i < m_sortTriangleBuffersByTexture.Count; i++)\n            {\n                MyDecalsForVoxelsTriangleBuffer buffer = m_sortTriangleBuffersByTexture[i];\n\n                int trianglesCount = buffer.CopyDecalsToVertexBuffer(vertices);\n\n                if (trianglesCount <= 0) continue;\n\n                //  Switch texture only if different than previous one\n                if ((lastDecalTexture == null) || (lastDecalTexture != buffer.DecalTexture))\n                {\n                    int textureIndex = (int)buffer.DecalTexture;\n                    effect.SetDecalDiffuseTexture(texturesDiffuse[textureIndex]);\n                    effect.SetDecalNormalMapTexture(texturesNormalMap[textureIndex]);\n                    lastDecalTexture = buffer.DecalTexture;\n                }\n\n                //  This will move all voxel maps back to position [0,0,0]\n                effect.SetVoxelMapPosition(buffer.VoxelMap.PositionLeftBottomCorner - MyCamera.Position);\n\n                effect.SetViewProjectionMatrix(MyCamera.ViewProjectionMatrixAtZero);\n\n                // Set fadeout distance\n                float fadeoutDistance = MyDecals.GetMaxDistanceForDrawingDecals();\n                if (buffer.DecalTexture == MyDecalTexturesEnum.ExplosionSmut)\n                    fadeoutDistance *= MyDecalsConstants.DISTANCE_MULTIPLIER_FOR_LARGE_DECALS;\n\n                effect.SetFadeoutDistance(fadeoutDistance);\n\n                if (!MyRenderConstants.RenderQualityProfile.ForwardRender)\n                    effect.SetTechnique(Effects.MyEffectDecals.Technique.Voxels);\n                else\n                    effect.SetTechnique(Effects.MyEffectDecals.Technique.VoxelsForward);\n\n                MyMinerGame.Static.GraphicsDevice.VertexDeclaration = MyVertexFormatDecal.VertexDeclaration;\n\n                effect.Begin();\n                MyMinerGame.Static.GraphicsDevice.DrawUserPrimitives(PrimitiveType.TriangleList, 0, trianglesCount, vertices);\n                effect.End();\n\n                MyPerformanceCounter.PerCameraDraw.DecalsForVoxelsInFrustum += trianglesCount;\n            }\n        }\n\n        public void Clear()\n        {\n            for (int i = 0; i < m_capacity; i++)\n            {\n                m_triangleBuffers[i].Clear(true);\n            }\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Decals/MyDecalsForVoxelsTriangleBuffer.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing MinerWarsMath;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Utils.VertexFormats;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Lights;\n\n\n//  Buffer of voxel triangles for specified render cell and texture. It behaves similar to model/texture, except\n//  when explosion near this cell, we change alpha of affected triangles.\n\nnamespace MinerWars.AppCode.Game.Decals\n{\n    class MyDecalsForVoxelsTriangleBuffer : IComparable\n    {\n\n        enum MyDecalsBufferState : byte\n        {\n            READY,\n            FADING_OUT_ONLY_BEGINNING,\n            FADING_OUT_ALL\n        }\n\n        //  These parameters are set when this buffer is allocated for new cell/texture\n        //public int VoxelMapId;\n        public MyVoxelMap VoxelMap;\n        public MyMwcVector3Int RenderCellCoord;\n        public MyDecalTexturesEnum DecalTexture;\n        public BoundingBox RenderCellBoundingBox;\n\n        public int MaxNeighbourTriangles;\n\n        //  These parameters are preallocates \n        Queue<MyDecalTriangle> m_trianglesQueue;\n        Stack<MyDecalTriangle> m_freeTriangles;\n        MyDecalsBufferState m_status;\n        int m_capacity;\n        int m_capacityAfterStart;                   // This must be less than m_capacity, because buffer is initialized only once. This capacity is only work bounding number of decals for this type of texture\n        int m_fadingOutStartLimit;                  //  Start fading out if this percent of buffer 'fillness' is achieved\n        int m_fadingOutMinimalTriangleCount;        //  Minimal number of triangles we fade-out from the beggining of the queue\n        int m_fadingOutStartTime;                   //  When last fading-out started\n        int m_fadingOutRealTriangleCount;           //  When in fade-out phase, this is the real number of triangles we will fade-out. Always equal or more than 'm_fadingOutMinimalTriangleCount'\n\n\n        public MyDecalsForVoxelsTriangleBuffer(int capacity)\n        {\n            m_capacity = capacity;\n            m_trianglesQueue = new Queue<MyDecalTriangle>(m_capacity);\n\n            //  Preallocate triangles\n            m_freeTriangles = new Stack<MyDecalTriangle>(m_capacity);\n            for (int i = 0; i < m_capacity; i++)\n            {\n                m_freeTriangles.Push(new MyDecalTriangle());\n            }\n        }\n\n        //  Because this class is reused in buffers, it isn't really initialized by constructor. We make real initialization here.\n        public void Start(MyVoxelMap voxelMap, ref MyMwcVector3Int renderCellCoord, MyDecalTexturesEnum decalTexture, ref BoundingBox renderCellBoundingBox)\n        {\n            VoxelMap = voxelMap;\n            RenderCellCoord = renderCellCoord;\n            DecalTexture = decalTexture;\n            m_status = MyDecalsBufferState.READY;\n            m_fadingOutStartTime = 0;\n            RenderCellBoundingBox = renderCellBoundingBox;\n            \n            if (MyDecals.IsLargeTexture(decalTexture) == true)\n            {\n                m_capacityAfterStart = MyDecalsConstants.MAX_DECAL_TRIANGLES_IN_BUFFER_LARGE;\n                m_fadingOutStartLimit = (int)(m_capacityAfterStart * MyDecalsConstants.TEXTURE_LARGE_FADING_OUT_START_LIMIT_PERCENT);\n                m_fadingOutMinimalTriangleCount = (int)(m_capacityAfterStart * MyDecalsConstants.TEXTURE_LARGE_FADING_OUT_MINIMAL_TRIANGLE_COUNT_PERCENT);\n                MaxNeighbourTriangles = MyDecalsConstants.TEXTURE_LARGE_MAX_NEIGHBOUR_TRIANGLES;\n            }\n            else\n            {\n                m_capacityAfterStart = MyDecalsConstants.MAX_DECAL_TRIANGLES_IN_BUFFER_SMALL;\n                m_fadingOutStartLimit = (int)(m_capacityAfterStart * MyDecalsConstants.TEXTURE_SMALL_FADING_OUT_START_LIMIT_PERCENT);\n                m_fadingOutMinimalTriangleCount = (int)(m_capacityAfterStart * MyDecalsConstants.TEXTURE_SMALL_FADING_OUT_MINIMAL_TRIANGLE_COUNT_PERCENT);\n                MaxNeighbourTriangles = MyDecalsConstants.TEXTURE_SMALL_MAX_NEIGHBOUR_TRIANGLES;\n            }\n        }\n\n        //  We can't just erase decal triangles. We need to push them back into 'free triangles stack'. So we do it here.\n        public void Clear(bool destroy = false)\n        {\n            while (m_trianglesQueue.Count > 0)\n            {\n                MyDecalTriangle fadedoutTriangle = m_trianglesQueue.Dequeue();\n                fadedoutTriangle.Close();\n                m_freeTriangles.Push(fadedoutTriangle);\n            }\n\n            if (destroy)\n                VoxelMap = null;\n        }\n\n        public void FadeOutAll()\n        {\n            if (m_status != MyDecalsBufferState.FADING_OUT_ONLY_BEGINNING)\n            {\n                m_fadingOutStartTime = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n            }\n\n            m_status = MyDecalsBufferState.FADING_OUT_ALL;\n        }\n\n        //  Checks if buffer has enough free triangles for adding new decal. If not, we can't add triangles\n        //  of the decal (because we add all decal triangles or none)\n        public bool CanAddTriangles(int newTrianglesCount)\n        {\n            //  If whole buffer is fading out or if buffer is full, we can't add new triangles\n            return (m_status != MyDecalsBufferState.FADING_OUT_ALL) && ((m_trianglesQueue.Count + newTrianglesCount) < m_capacityAfterStart);\n        }\n\n        public void Add(MyTriangle_Vertex_Normals triangle, Vector3 normal, ref MyPlane rightPlane, \n            ref MyPlane upPlane, float decalScale, int remainingTrianglesOfThisDecal, Vector4 color, bool alphaBlendByAngle, float lightSize, Vector3 position, float emissivity)\n        {\n            MyDecalTriangle decalTriangle = m_freeTriangles.Pop();\n            \n            decalTriangle.Start(lightSize);\n            decalTriangle.Emissivity = emissivity;\n            //decalTriangle.RandomOffset = MyMwcUtils.GetRandomFloat(0.0f, MathHelper.Pi);\n            decalTriangle.RandomOffset = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n            decalTriangle.Position = position;\n\n            // We must repack vertex positions before copying to new triange, to avoid Z-fight.\n            decalTriangle.Position0 = MyUtils.RepackVoxelPosition(ref triangle.Vertexes.Vertex0);\n            decalTriangle.Position1 = MyUtils.RepackVoxelPosition(ref triangle.Vertexes.Vertex1);\n            decalTriangle.Position2 = MyUtils.RepackVoxelPosition(ref triangle.Vertexes.Vertex2);\n   \n            //  Texture coords\n            decalTriangle.TexCoord0 = new Vector2(\n                0.5f + decalScale * MyUtils.GetDistanceFromPointToPlane(ref decalTriangle.Position0, ref rightPlane),\n                0.5f + decalScale * MyUtils.GetDistanceFromPointToPlane(ref decalTriangle.Position0, ref upPlane));\n            decalTriangle.TexCoord1 = new Vector2(\n                0.5f + decalScale * MyUtils.GetDistanceFromPointToPlane(ref decalTriangle.Position1, ref rightPlane),\n                0.5f + decalScale * MyUtils.GetDistanceFromPointToPlane(ref decalTriangle.Position1, ref upPlane));\n            decalTriangle.TexCoord2 = new Vector2(\n                0.5f + decalScale * MyUtils.GetDistanceFromPointToPlane(ref decalTriangle.Position2, ref rightPlane),\n                0.5f + decalScale * MyUtils.GetDistanceFromPointToPlane(ref decalTriangle.Position2, ref upPlane));\n\n\n            //  Alpha\n            decalTriangle.Color0 = color;\n            decalTriangle.Color1 = color;\n            decalTriangle.Color2 = color;\n            if (alphaBlendByAngle)\n            {\n                decalTriangle.Color0.W = GetAlphaByAngleDiff(ref normal, ref triangle.Normals.Normal0);\n                decalTriangle.Color1.W = GetAlphaByAngleDiff(ref normal, ref triangle.Normals.Normal1);\n                decalTriangle.Color2.W = GetAlphaByAngleDiff(ref normal, ref triangle.Normals.Normal2);\n            }\n\n            //  Bump mapping\n            decalTriangle.Normal0 = triangle.Normals.Normal0;\n            decalTriangle.Normal1 = triangle.Normals.Normal1;\n            decalTriangle.Normal2 = triangle.Normals.Normal2;\n\n            decalTriangle.Binormal0 = triangle.Binormals.Normal0;\n            decalTriangle.Binormal1 = triangle.Binormals.Normal1;\n            decalTriangle.Binormal2 = triangle.Binormals.Normal2;\n\n            decalTriangle.Tangent0 = triangle.Tangents.Normal0;\n            decalTriangle.Tangent1 = triangle.Tangents.Normal1;\n            decalTriangle.Tangent2 = triangle.Tangents.Normal2;\n\n            decalTriangle.Draw = true;\n            decalTriangle.RemainingTrianglesOfThisDecal = remainingTrianglesOfThisDecal;\n\n            m_trianglesQueue.Enqueue(decalTriangle);\n        }\n\n        float GetAlphaByAngleDiff(ref Vector3 referenceNormal, ref Vector3 vertexNormal)\n        {\n            //return (float)Math.Pow(Vector3.Dot(referenceNormal, vertexNormal), 5);\n            float dot = Vector3.Dot(referenceNormal, vertexNormal);\n            if (dot < MyMwcMathConstants.EPSILON)\n                return 0;\n            float result = (float)Math.Pow(dot, 1f);\n            return MathHelper.Clamp(result, 0, 1);\n        }\n\n        //  Blends-out triangles affected by explosion (radius + some safe delta). Triangles there have zero alpha are flaged to not-draw at all.\n        public void HideTrianglesAfterExplosion(ref BoundingSphere explosionSphere)\n        {\n            //  Make safe-delta (don't forget explosions have random radius - due to voxel stuff, so safe-radius should have highest possible value)\n            float safeRadius = explosionSphere.Radius * 2.5f;\n\n            foreach (MyDecalTriangle decalTriangle in m_trianglesQueue)\n            {\n                float distance0 = Vector3.Distance(explosionSphere.Center, decalTriangle.Position0 + VoxelMap.PositionLeftBottomCorner);\n                float distance1 = Vector3.Distance(explosionSphere.Center, decalTriangle.Position1 + VoxelMap.PositionLeftBottomCorner);\n                float distance2 = Vector3.Distance(explosionSphere.Center, decalTriangle.Position2 + VoxelMap.PositionLeftBottomCorner);\n                if (distance0 <= safeRadius) decalTriangle.Color0.W = 0;\n                if (distance1 <= safeRadius) decalTriangle.Color1.W = 0;\n                if (distance2 <= safeRadius) decalTriangle.Color2.W = 0;\n\n                if ((decalTriangle.Color0.W <= 0.0f) && (decalTriangle.Color1.W <= 0.0f) && (decalTriangle.Color2.W <= 0.0f))\n                {\n                    decalTriangle.Draw = false;\n                    decalTriangle.Close();\n                }\n            }\n        }\n\n        //  Checks if buffer isn't full at 80% (or something like that). If is, we start fadeing-out first 20% triangles (or something like that). But always all triangles of a decal.\n        void CheckIfBufferIsFull()\n        {\n            if (m_status == MyDecalsBufferState.FADING_OUT_ALL)\n            {\n                return;\n            } \n            else if (m_status == MyDecalsBufferState.FADING_OUT_ONLY_BEGINNING)\n            {\n                if ((MyMinerGame.TotalGamePlayTimeInMilliseconds - m_fadingOutStartTime) > MyDecalsConstants.DECALS_FADE_OUT_INTERVAL_MILISECONDS)\n                {\n                    //  If fading-out phase finished, we change state and remove faded-out triangles\n                    for (int i = 0; i < m_fadingOutRealTriangleCount; i++)\n                    {\n                        MyDecalTriangle fadedoutTriangle = m_trianglesQueue.Dequeue();\n                        fadedoutTriangle.Close();\n                        m_freeTriangles.Push(fadedoutTriangle);\n                    }\n\n                    m_status = MyDecalsBufferState.READY;\n                }\n            }\n            else\n            {\n                if (m_trianglesQueue.Count >= m_fadingOutStartLimit) \n                {\n                    //  If we get here, buffer is close to be full, so we start fade-out phase\n                    m_fadingOutRealTriangleCount = GetFadingOutRealTriangleCount();\n                    m_status = MyDecalsBufferState.FADING_OUT_ONLY_BEGINNING;\n                    m_fadingOutStartTime = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n                }\n            }\n        }\n\n        int GetFadingOutRealTriangleCount()\n        {\n            int result = 1;\n            foreach (MyDecalTriangle decalTriangle in m_trianglesQueue)\n            {\n                if ((result >= m_fadingOutMinimalTriangleCount) && (decalTriangle.RemainingTrianglesOfThisDecal == 0))\n                {\n                    break;\n                }\n\n                result++;\n            }\n\n            return result;\n        }\n\n        //  For sorting buffers by texture\n        public int CompareTo(object compareToObject)\n        {\n            MyDecalsForVoxelsTriangleBuffer compareToBuffer = (MyDecalsForVoxelsTriangleBuffer)compareToObject;\n            return ((int)compareToBuffer.DecalTexture).CompareTo((int)this.DecalTexture);\n        }\n\n        //  Copy triangles to array of vertexes (which is then copyed to vertex buffer) and return count of triangles to draw\n        public int CopyDecalsToVertexBuffer(MyVertexFormatDecal[] vertices)\n        {\n            CheckIfBufferIsFull();            \n\n            float fadingOutAlpha = 1;\n            if ((m_status == MyDecalsBufferState.FADING_OUT_ONLY_BEGINNING) || (m_status == MyDecalsBufferState.FADING_OUT_ALL))\n            {\n                fadingOutAlpha = 1 - MathHelper.Clamp((float)(MyMinerGame.TotalGamePlayTimeInMilliseconds - m_fadingOutStartTime) / (float)MyDecalsConstants.DECALS_FADE_OUT_INTERVAL_MILISECONDS, 0, 1);\n            }\n\n            int trianglesToDraw = 0;\n            int i = 0;\n            foreach (MyDecalTriangle decalTriangle in m_trianglesQueue)\n            {\n                if (decalTriangle.Draw == true)\n                {\n                    float alpha = 1;\n\n                    //  If fading-out, we blend first 'm_fadingOutRealTriangleCount' triangles\n                    if (m_status == MyDecalsBufferState.FADING_OUT_ALL)\n                    {\n                        alpha = fadingOutAlpha;\n                    }\n                    else if ((m_status == MyDecalsBufferState.FADING_OUT_ONLY_BEGINNING) && (i < m_fadingOutRealTriangleCount))\n                    {\n                        alpha = fadingOutAlpha;\n                    }\n\n                    int vertexIndexStart = trianglesToDraw * MyDecalsConstants.VERTEXES_PER_DECAL;\n\n                    vertices[vertexIndexStart + 0].Position = decalTriangle.Position0;\n                    vertices[vertexIndexStart + 1].Position = decalTriangle.Position1;\n                    vertices[vertexIndexStart + 2].Position = decalTriangle.Position2;\n\n                    vertices[vertexIndexStart + 0].TexCoord = decalTriangle.TexCoord0;\n                    vertices[vertexIndexStart + 1].TexCoord = decalTriangle.TexCoord1;\n                    vertices[vertexIndexStart + 2].TexCoord = decalTriangle.TexCoord2;\n\n                    Vector4 color0 = decalTriangle.Color0;\n                    Vector4 color1 = decalTriangle.Color1;\n                    Vector4 color2 = decalTriangle.Color2;\n\n                    //color0.W = 1;\n                    //color1.W = 1;\n                    //color2.W = 1;\n\n                    color0 *= alpha;\n                    color1 *= alpha;\n                    color2 *= alpha;\n\n                    vertices[vertexIndexStart + 0].Color = color0;\n                    vertices[vertexIndexStart + 1].Color = color1;\n                    vertices[vertexIndexStart + 2].Color = color2;\n\n                    vertices[vertexIndexStart + 0].Normal = decalTriangle.Normal0;\n                    vertices[vertexIndexStart + 1].Normal = decalTriangle.Normal1;\n                    vertices[vertexIndexStart + 2].Normal = decalTriangle.Normal2;\n\n                    vertices[vertexIndexStart + 0].Binormal = decalTriangle.Binormal0;\n                    vertices[vertexIndexStart + 1].Binormal = decalTriangle.Binormal1;\n                    vertices[vertexIndexStart + 2].Binormal = decalTriangle.Binormal2;\n\n                    vertices[vertexIndexStart + 0].Tangent = decalTriangle.Tangent0;\n                    vertices[vertexIndexStart + 1].Tangent = decalTriangle.Tangent1;\n                    vertices[vertexIndexStart + 2].Tangent = decalTriangle.Tangent2;\n\n                    float emisivity = MyDecals.UpdateDecalEmissivity(decalTriangle, alpha, null);\n\n                    vertices[vertexIndexStart + 0].EmissiveRatio = emisivity;\n                    vertices[vertexIndexStart + 1].EmissiveRatio = emisivity;\n                    vertices[vertexIndexStart + 2].EmissiveRatio = emisivity;\n\n                    trianglesToDraw++;\n                }\n\n                i++;\n            }\n\n            return trianglesToDraw;\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Editor/MyEditor.cs",
    "content": "﻿\nusing System;\nusing MinerWars.AppCode.Toolkit.Input;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.Entities.FoundationFactory;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Entities;\nusing System.Threading;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Voxels;\nusing MinerWars.AppCode.Game.Voxels;\nusing MinerWars.AppCode.Game.GUI.ScreenEditor;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing System.Collections.Generic;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Physics;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.AppCode.Game.GUI.Helpers;\nusing MinerWars.AppCode.Game.GUI.ScreenEditor.Object3D;\nusing MinerWars.AppCode.Game.Entities.InfluenceSpheres;\nusing MinerWars.AppCode.Game.Entities.SubObjects;\nusing MinerWars.AppCode.Game.Entities.Prefabs;\nusing MinerWars.AppCode.Game.Entities.Weapons;\nusing MinerWars.AppCode.Game.Entities.WayPoints;\nusing MinerWars.AppCode.Game.Entities.VoxelHandShapes;\nusing MinerWars.AppCode.Game.Render;\nusing MinerWars.AppCode.Game.Physics;\nusing System.Linq;\n\nnamespace MinerWars.AppCode.Game.Editor\n{\n    using SysUtils;\n    using KeenSoftwareHouse.Library.Trace;\n    using MinerWars.AppCode.Game.World;\n    using MinerWars.AppCode.Game.TransparentGeometry;\n    using System.Diagnostics;\n    using System.Text;\n    using MinerWars.AppCode.Game.Models;\n    using MinerWars.AppCode.Game.Prefabs;\n    using MinerWars.AppCode.Game.Entities.WayPoints;\n    using MinerWars.AppCode.Game.Inventory;\n    using MinerWars.AppCode.Game.Gameplay;\n    using SysUtils.Utils;\n    using MinerWars.AppCode.Game.Entities.CargoBox;\n    using System.IO;\n    using SharpDX.Toolkit;\n\n    public enum MyEditorStateEnum\n    {\n        NOTHING_SELECTED,                      // represents state, when nothing is selected in editor\n        SELECTED_ASTEROID,                     // represents state, when asteroid is selected\n        VOXEL_HAND_ENABLED,                    // represents state, when using voxel hand for carving\n        EDITING_PREFAB_CONTAINER,     // represents state, when editing container but nothing is selected inside\n        SELECTED_PREFAB_CONTAINER,\n        SELECTED_PREFAB,\n        SELECTED_PREFABS,\n        //SELECTED_LARGE_SHIP,\n        SELECTED_SMALL_SHIP,\n        SELECTED_DEBRIS,\n        SELECTED_INFLUENCE_SPHERE,\n        SELECTED_LIGHT,\n        SELECTED_STATIC_ASTEROID,\n        SELECTED_MIXED,\n        SELECTED_SNAPPOINT,\n        ATTACHED,                               // represents state, when something is attached to spectator            \n        SELECTED_WAYPOINT,\n        SELECTED_SPAWNPOINT,\n        SELECTED_DUMMYPOINT,\n        SELECTED_SECURITY_CONTROL_HUB,\n        SELECTED_CARGO_BOX,\n        SELECTED_SCANNER,\n    }\n\n    // This class represents game editor. There is no separate screen for editor, in case something needs to be disabled/enabled only for editor, we can do switch\n    // from gameplay screen, based on current gameplay mode.\n    partial class MyEditor\n    {\n        #region Fields\n\n        /// <summary>\n        /// Flag if user is in editable mode (in game/editor)\n        /// </summary>\n        private bool m_active = false;\n\n        /// <summary>\n        /// Property contains reference to currently edited container\n        /// </summary>\n        private MyPrefabContainer m_activePrefabContainer;\n\n        /// <summary>\n        /// Is used when changing speed of camera with scrollwheel\n        /// </summary>\n        private int m_lastScrollWheelValue;\n\n        /// <summary>\n        /// When adding new asteroid, whole operation is executed in separate thread, so when thread finishes, we show message to player that he cannot add new asteroid to scene due to size limitations\n        /// </summary>\n        private bool m_newAsteroidAllowed;\n\n        /// <summary>\n        /// Helps to control attachment of created objects in case, creation is performed in separate background thread\n        /// </summary>\n        private bool m_waitingForAtachment;\n\n        /// <summary>\n        /// Speed of camera is influenced by this property\n        /// </summary>\n        private double m_scrollWheelIndicatorHelper = 1;\n\n        /// <summary>\n        /// This can be either entity, that is being added(we are looking for its location) or that are being moved(catched)\n        /// </summary>\n        private Dictionary<MyEntity, Vector3> m_attachedEntities;\n\n        /// <summary>\n        /// When attaching multiple objects, sphere is created for all of them and is used to move objects in appropriate distance from camera when attached\n        /// </summary>\n        private BoundingSphere m_attachedEntitiesBoundingSphere;\n\n        /// <summary>\n        /// Selection rectangle created with mouse LMB\n        /// </summary>\n        private MinerWarsMath.Rectangle m_selectionRectangle;\n\n        /// <summary>\n        /// When objects attached to camera, this is used to change distance of objects from camera as required\n        /// </summary>\n        private int m_scrollWheelDistance = 1;\n\n        ///// <summary>\n        ///// Holds bookmarked camera positions\n        ///// </summary>\n        //private Dictionary<int, Vector3> m_cameraBookmarkPositions;\n\n        ///// <summary>\n        ///// TODO - unify to one property with above - Holds bookmarked camera targets\n        ///// </summary>\n        //private Dictionary<int, Vector3> m_cameraBookmarkTargets;\n\n        /// <summary>\n        /// Holds bookmarked camera\n        /// </summary>\n        private Dictionary<int, Matrix> m_cameraBookmarks;\n\n        /// <summary>\n        /// True when selection rectangle is being drawn\n        /// </summary>\n        private bool m_drawingSelectionRectangle;\n\n        /// <summary>\n        /// Start recording crosshair ray position for the rectangle selection\n        /// </summary>\n        private bool m_startCaptureCrosshairPosition = false;\n\n        private MyLine m_startLineCrosshairSelection;\n        private MyLine m_endLineCrosshairSelection;\n\n        /// <summary>\n        /// Computed in update how many objects are in collision possition\n        /// </summary>\n        private List<MyRBElement> m_collidingElements;\n\n        /// <summary>\n        /// Input tool which is used for various mouse move/mouse over situations\n        /// </summary>\n        private MyMouseInputTool m_mouseMoveInputTool = new MyMouseInputTool();\n\n        /// <summary>\n        /// Flag set from gui, to gain abbility set EditContainer mopde - after onserting entity into editor\n        /// </summary>\n        private static bool m_bInsertFromGuiFlag = false;\n\n        /// <summary>\n        /// Enables/disables lighting in editor mode\n        /// </summary>\n        public static bool EnableLightsInEditor = true;\n\n        /// <summary>\n        /// Enables/disables Bounding Container Cube\n        /// </summary>\n        public static bool DisplayPrefabContainerBounding = true;\n\n        /// <summary>\n        /// Enables/disables Prefab container's axis\n        /// </summary>\n        public static bool DisplayPrefabContainerAxis = true;\n\n        /// <summary>\n        /// Enables/disables Voxel bounding box\n        /// </summary>\n        public static bool DisplayVoxelBounding = true;\n\n        /// <summary>\n        /// Enables/disables player ship saving\n        /// </summary>\n        public static bool SavePlayerShip = false;\n\n        /// <summary>\n        /// List Of Named Prefab Object Groups\n        /// </summary>\n        public List<MyObjectGroup> ObjectGroups = new List<MyObjectGroup>();\n\n        /// <summary>\n        /// Show prefab snap points\n        /// </summary>\n        public bool ShowSnapPoints { get; set; }\n\n        /// <summary>\n        /// Show generators range\n        /// </summary>\n        public bool ShowGeneratorsRange { get; set; }\n\n        /// <summary>\n        /// Show large weapons range\n        /// </summary>\n        public bool ShowLargeWeaponsRange { get; set; }\n\n        /// <summary>\n        /// Show deactivated entities\n        /// </summary>\n        public bool ShowDeactivatedEntities { get; set; }\n\n        /// <summary>\n        /// Show helper texts\n        /// </summary>\n        public static bool EnableTextsDrawing { get; set; }        \n\n        /// <summary>\n        /// Enables rotating against center of object based on bounding box instead of center of model as defined in 3rd party editor\n        /// </summary>\n        public static bool EnableObjectPivot { get; set; }\n\n        /// <summary>\n        /// Locks selection for transformation\n        /// </summary>\n        public static bool TransformLocked { get; set; }\n\n        /// <summary>\n        /// Enable snap point filiter (add object tree view)\n        /// </summary>\\\n        private bool snapPointFilter;\n        public bool SnapPointFilter {\n            get\n            {\n                return this.snapPointFilter;\n            }\n\n            set\n            {\n                if (this.snapPointFilter != value)\n                {\n                    //Activate();\n                }\n                this.snapPointFilter = value;\n            }\n        }\n\n        /// <summary>\n        /// If true, snap point size is fixed to screen size (no perspective degradation)\n        /// </summary>\n        public bool FixedSizeSnapPoints { get; set; }\n\n        /// <summary>\n        /// Snap Point list for all prefab types\n        /// </summary>\n        //public static Dictionary<MyMwcObjectBuilder_Prefab_TypesEnum, List<MyPrefabSnapPoint>> PrefabSnapPoints { get; set; }\n        private static List<MyPrefabSnapPoint>[][] m_prefabSnapPoints;\n\n        /// <summary>\n        /// Collection of linked snap points\n        /// </summary>\n        public List<List<MySnapPointLink>> LinkedSnapPoints { get; set; }\n        \n        /// <summary>\n        /// Used as temporary storage between checkpoint load and linkentities\n        /// </summary>\n        public List<MyMwcObjectBuilder_SnapPointLink> LinkedSnapPointsBuilders { get; set; }\n\n\n        private int m_issueCheckAllCollidingObjectsCounter = -1;\n\n        \n        private static Matrix[] m_storedMatrices = new Matrix[4];\n\n        #endregion\n\n        #region Properties\n        /// <summary>\n        /// Singleton\n        /// </summary>\n        public static MyEditor Static = null;\n\n        /// <summary>\n        /// Reference to actually edited prefab container\n        /// </summary>\n        /// <returns></returns>\n        public MyPrefabContainer GetEditedPrefabContainer() { return m_activePrefabContainer; }\n\n        /// <summary>\n        /// Background thread is used where the editor actions might consume more time and resources, that can stuck game.\n        /// </summary>\n        public Thread BackgroundWorkThread;\n\n        /// <summary>\n        /// Property that signals when to reload models in draw, for example when creating random sector\n        /// </summary>\n        public bool ReloadModelsInDrawRequired;\n\n        /// <summary>\n        /// Based on the type of selected objects, there can be some controls added/removed\n        /// </summary>\n        public bool ReloadEditorControls;\n\n        /// <summary>\n        /// When it is necessary to add/remove entities in loop but cannot modify collection during loop\n        /// </summary>\n        public List<MyEntity> m_safeIterationHelper;\n\n        /// <summary>\n        /// Entities that are in collision with other objects\n        /// </summary>\n        public List<MyRBElement> CollidingElements { get { return m_collidingElements; } }\n\n        /// <summary>\n        /// Foundation factory which is using by editor\n        /// </summary>\n        public MyPrefabFoundationFactory FoundationFactory { get; private set; }\n\n        // Can store any data for copy, paste operations\n        private static object Clipboard;\n\n        #endregion\n\n        #region Methods\n\n        /// <summary>\n        /// Static initialization\n        /// </summary>\n        static MyEditor()\n        {\n            Static = new MyEditor();\n        }\n\n        /// <summary>\n        /// Base constructor\n        /// </summary>\n        public MyEditor()\n        {\n            InitEditorInfo();\n            MyInfluenceSphere.Init();\n            m_lastScrollWheelValue = MyEditorConstants.DEFAULT_CAMERA_SPEED;\n            m_attachedEntities = new Dictionary<MyEntity, Vector3>(100);\n            m_safeIterationHelper = new List<MyEntity>(100);\n            m_attachedEntitiesBoundingSphere = new BoundingSphere();\n            //m_cameraBookmarkPositions = new Dictionary<int, Vector3>(10);\n            //m_cameraBookmarkTargets = new Dictionary<int, Vector3>(10);\n            m_cameraBookmarks = new Dictionary<int, Matrix>(9);\n            m_collidingElements = new List<MyRBElement>();\n            LinkedSnapPoints = new List<List<MySnapPointLink>>();\n            ShowSnapPoints = true;\n            SnapPointFilter = true;\n            FixedSizeSnapPoints = false;\n        }\n\n        public static void SetClipboard(object data)\n        {\n            Clipboard = data;\n        }\n\n        public static bool GetClipboard<T>(out T value)\n        {\n            if (Clipboard is T)\n            {\n                value = (T)Clipboard;\n                return true;\n            }\n            else if (typeof(T) == typeof(Color))\n            {\n                if (Clipboard is Vector4)\n                {\n                    value = (T)(object)new Color((Vector4)Clipboard);\n                    return true;\n                }\n                if (Clipboard is Vector3)\n                {\n                    value = (T)(object)new Color((Vector3)Clipboard);\n                    return true;\n                }\n            }\n\n            value = default(T);\n\n            return false;\n        }\n\n        /// <summary>\n        /// EditorDebugDraw\n        /// </summary>\n        public void EditorDebugDraw()\n        {\n            if (!MyGuiScreenGamePlay.Static.IsEditorActive() && !MyGuiScreenGamePlay.Static.IsIngameEditorActive())\n                return;\n\n            DrawSelectionRectangle();\n            DrawSelectedBounding();\n            DrawDebugPrefabRanges();\n            DrawDebugDeactivatedEntities();\n\n            MyEditor.Static.DrawVisualControls();\n\n            //@ JK just for debugging selection\n            //DrawDebugSelection();\n        }\n\n        static void DrawDebugDeactivatedEntities() \n        {\n            if (MyGuiScreenGamePlay.Static.IsEditorActive() && MyEditor.Static.ShowDeactivatedEntities) \n            {\n                foreach (MyEntity entity in MyEntities.GetEntities()) \n                {\n                    entity.DebugDrawDeactivated();\n                }\n            }\n        }\n\n        static void DrawDebugPrefabRanges()\n        {\n            if (MyGuiScreenGamePlay.Static.IsEditorActive() && (MyEditor.Static.ShowLargeWeaponsRange || MyEditor.Static.ShowGeneratorsRange))\n            {\n                foreach (MyEntity entity in MyEntities.GetEntities())\n                {\n                    if (entity is MyPrefabContainer)\n                    {\n                        if (MyEditor.Static.ShowGeneratorsRange)\n                        {\n                            foreach (var prefab in ((MyPrefabContainer)entity).GetPrefabs(CategoryTypesEnum.GENERATOR))\n                            {\n                                MyPrefabGenerator prefabGenerator = prefab as MyPrefabGenerator;\n                                if (prefabGenerator != null)\n                                {\n                                    prefabGenerator.DebugDrawRange();\n                                }\n                            }\n                        }\n                        if (MyEditor.Static.ShowLargeWeaponsRange)\n                        {\n                            foreach (var prefab in ((MyPrefabContainer)entity).GetPrefabs(CategoryTypesEnum.WEAPONRY))\n                            {\n                                MyPrefabLargeWeapon prefabLargeWeapon = prefab as MyPrefabLargeWeapon;\n                                if (prefabLargeWeapon != null)\n                                {\n                                    prefabLargeWeapon.DebugDrawRange();\n                                }\n                            }\n                        }\n                    }\n                }\n            }\n        }\n\n        //Initializes stringbuilders used for displaying text information in editor\n        private void InitEditorInfo()\n        {\n            MyRender.RegisterRenderModule(MyRenderModuleEnum.Editor, \"Editor\", EditorDebugDraw, MyRenderStage.DebugDraw);\n        }\n\n        /// <summary>\n        /// Deinitialize\n        /// </summary>\n        public void Deinitialize()\n        {\n            //MyRender.UnregisterRenderModule(\"Editor DebugDraw\", EditorDebugDraw, MyRenderStage.DebugDraw);\n        }\n\n        /// <summary>\n        /// Set editor active\n        /// </summary>\n        /// <param name=\"bEnable\"></param>\n        public void SetActive(bool bEnable)\n        {\n            m_active = bEnable;\n            if (m_active == false)\n            {\n                MyConfig.EditorEnableLightsInEditor = MyEditor.EnableLightsInEditor;\n                MyConfig.Save();\n                SwitchToGameplay();\n            }\n\n            InitializeFromConfig();\n        }\n\n        /// <summary>\n        /// Checks if editor is active\n        /// </summary>\n        /// <returns></returns>\n        public bool IsActive()\n        {\n            return m_active;\n        }\n\n        public static void InitializeFromConfig()\n        {\n            if (Static.m_active)\n            {\n                MyEntities.SetTypeHidden(typeof(MyWayPoint), MyConfig.EditorHiddenWayPoint);\n                MyEntities.SetTypeSelectable(typeof(MyWayPoint), MyConfig.EditorSelectableWayPoint);\n\n                MyEntities.SetTypeHidden(typeof(MyVoxelMap), MyConfig.EditorHiddenVoxelMap);\n                MyEntities.SetTypeSelectable(typeof(MyVoxelMap), MyConfig.EditorSelectableVoxelMap);\n\n                MyEntities.SetTypeHidden(typeof(MyDummyPoint), MyConfig.EditorHiddenDummyPoint);\n                MyEntities.SetTypeSelectable(typeof(MyDummyPoint), MyConfig.EditorSelectableDummyPoint);\n\n                MyEntities.SetTypeHidden(typeof(MyPrefabBase), MyConfig.EditorHiddenPrefabBase);\n                MyEntities.SetTypeSelectable(typeof(MyPrefabBase), MyConfig.EditorSelectablePrefabBase);\n\n                MyEntities.SetTypeHidden(typeof(MySpawnPoint), MyConfig.EditorHiddenSpawnPoint);\n                MyEntities.SetTypeSelectable(typeof(MySpawnPoint), MyConfig.EditorSelectableSpawnPoint);\n\n                MyEntities.SetTypeHidden(typeof(MyInfluenceSphere), MyConfig.EditorHiddenInfluenceSphere);\n                MyEntities.SetTypeSelectable(typeof(MyInfluenceSphere), MyConfig.EditorSelectableInfluenceSphere);\n\n                MyWayPointGraph.WaypointsIgnoreDepth = MyConfig.EditorWaypointsIgnoreDepth;\n\n                MyEntities.SafeAreasHidden = !MyConfig.EditorShowSafeAreas;\n                MyEntities.SafeAreasSelectable = MyConfig.EditorSelectableSafeAreas;\n\n                MyEntities.DetectorsHidden = !MyConfig.EditorShowDetectors;\n                MyEntities.DetectorsSelectable = MyConfig.EditorSelectableDetectors;\n                \n                MyEntities.ParticleEffectsHidden = !MyConfig.EditorShowParticleEffects;\n                MyEntities.ParticleEffectsSelectable = MyConfig.EditorSelectableParticleEffects;\n            }\n\n            MyEditor.EnableLightsInEditor = MyConfig.EditorEnableLightsInEditor;\n            MyEditor.DisplayPrefabContainerBounding = MyConfig.EditorDisplayPrefabContainerBounding;\n            MyEditor.DisplayPrefabContainerAxis = MyConfig.EditorDisplayPrefabContainerAxis;\n            MyEditor.Static.ShowSnapPoints = MyConfig.EditorShowSnapPoints;\n            MyEditor.Static.SnapPointFilter = MyConfig.EditorSnapPointFilter;\n            MyEditor.Static.FixedSizeSnapPoints = MyConfig.EditorFixedSizeSnapPoints;\n            MyEditor.EnableObjectPivot = MyConfig.EditorEnableObjectPivot;\n            MyEditor.DisplayVoxelBounding = MyConfig.EditorDisplayVoxelBounding;\n            MyEditor.Static.ShowGeneratorsRange = MyConfig.EditorShowGeneratorsRange;\n            MyEditor.Static.ShowLargeWeaponsRange = MyConfig.EditorShowLargeWeaponsRange;\n            MyEditor.Static.ShowDeactivatedEntities = MyConfig.EditorShowDeactivatedEntities;\n            MyEditor.EnableTextsDrawing = MyConfig.EditorEnableTextsDrawing;\n\n            MyEditor.Static.RefreshSelectionSettings();\n        }\n\n        public void LoadData()\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyEditor.LoadData\");\n\n            m_newAsteroidAllowed = true;\n\n            MyEditorActions.LoadData();\n            MyEditorGizmo.LoadData();\n            MyEditorVoxelHand.LoadData();\n            MyEditorGrid.LoadData();\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyGuiContextMenuHelpers.LoadDefaultEditorContent\");\n            MyGuiContextMenuHelpers.LoadDefaultEditorContent();\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            MyEditorGrid.IsGridActive = false;\n            MyEditorShortcutManager.GetInstance().Initialize();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyEditor.GetPrefabSnapPoints\");\n            GetPrefabSnapPoints();\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        /// <summary>\n        /// Load content\n        /// </summary>\n        public void LoadContent()\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyEditor::LoadContent\");\n\n            MyEditorGizmo.LoadContent();\n            MyEditorVoxelHand.LoadContent();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        /// <summary>\n        /// Unload content\n        /// </summary>\n        public void UnloadContent()\n        {\n\n            MyEditorVoxelHand.UnloadContent();\n\n        }\n\n        public void UnloadData()\n        {\n            //  This is just for case that whole application is quiting after Alt+F4 or something\n            //  Don't try to unload content in that thread or something - we don't know in what state it is. Just abort it.\n            if (IsBackgroundWorkThreadAlive())\n            {\n                StopBackgroundWorkThread();\n            }\n\n\n            MyEditorActions.UnloadData();\n            MyEditorGizmo.UnloadData();\n            MyEditorVoxelHand.UnloadData();\n\n\n            MyEditorShortcutManager.GetInstance().Clear();\n            if (m_collidingElements != null) m_collidingElements.Clear();\n            SetActive(false);\n        }\n\n\n        /// <summary>\n        /// Prepare list of entities, so then we can do remove while iterating it\n        /// </summary>\n        void PrepareSafeAttachedObjectsIterationHelper()\n        {\n            m_safeIterationHelper.Clear();\n            foreach (KeyValuePair<MyEntity, Vector3> kvp in m_attachedEntities)\n            {\n                m_safeIterationHelper.Add(kvp.Key);\n            }\n        }\n\n        /// <summary>\n        /// Enable mouse move input tool handling\n        /// </summary>\n        /// <param name=\"bEnable\"></param>\n        public void EnableMouseMoveInputHandling(bool bEnable)\n        {\n            m_mouseMoveInputTool.EnableInputHandling(bEnable);\n        }\n\n        /// <summary>\n        /// Enable AABB under mouse cursor\n        /// </summary>\n        /// <param name=\"bEnable\"></param>\n        public void EnablePhysAABBUnderMouse(bool bEnable)\n        {\n            m_mouseMoveInputTool.EnableAABBUnderMouse(bEnable);\n        }\n\n        /// <summary>\n        /// This method receives action type(each context menu item has this associated enum) and based on it, performs required action\n        /// </summary>\n        /// <param name=\"action\"></param>\n        /// <returns></returns>\n        public bool PerformContextMenuAction(MyGuiContextMenuItemActionType action)\n        {\n            // set close value correctly - when action opens new screen, set it to false,\n            // so that context menu screen is not closed and we can return to it from new screen\n            bool close = true;\n            switch (action)\n            {\n                case MyGuiContextMenuItemActionType.ADD_OBJECT:\n                    // Done by AddObject TreeView\n                    break;\n                case MyGuiContextMenuItemActionType.ADJUST_GRID:\n                    //TODO - show screen with grid adjustment options\n                    break;\n                case MyGuiContextMenuItemActionType.ATTACH_TO_CAMERA:\n                    AttachSelectedObjectsToCamera();\n                    break;\n                case MyGuiContextMenuItemActionType.CLEAR_ASTEROID_MATERIALS:\n                    //TODO\n                    break;\n                case MyGuiContextMenuItemActionType.CLEAR_WHOLE_SECTOR:\n                    ClearWholeSector();\n                    break;\n                case MyGuiContextMenuItemActionType.COPY_SELECTED:\n                    CopySelected(true);\n                    break;\n                case MyGuiContextMenuItemActionType.EDIT_SELECTED:\n                    EditSelected();\n                    break;\n                case MyGuiContextMenuItemActionType.RESET_ROTATION:\n                    MyEditorGizmo.ResetSelectedRotation();\n                    break;\n                case MyGuiContextMenuItemActionType.EXIT_EDITING_MODE:\n                    ExitActivePrefabContainer();\n                    break;\n                case MyGuiContextMenuItemActionType.EXIT_SELECTED:\n                    MyEditorGizmo.ClearSelection();\n                    MyEditorGizmo.SelectedSnapPoint = null;\n                    break;\n                case MyGuiContextMenuItemActionType.DETACH_FROM_CAMERA:\n                    DetachAndConfirm();\n                    break;\n                case MyGuiContextMenuItemActionType.ENTER_PREFAB_CONTAINER:\n                    MyPrefabContainer container = (MyPrefabContainer)MyEditorGizmo.GetFirstSelected();\n                    EditPrefabContainer(container);\n                    break;\n                case MyGuiContextMenuItemActionType.TOGGLE_SNAP_POINTS:\n                    ToggleSnapPoints();\n                    break;\n                case MyGuiContextMenuItemActionType.EXIT_TO_MAIN_MENU:\n                    MyGuiScreenMainMenu.OnExitToMainMenuClick(null);\n                    break;\n                case MyGuiContextMenuItemActionType.LOAD_SECTOR:\n                    LoadSector();\n                    break;\n                case MyGuiContextMenuItemActionType.RESET_ASTEROID:\n                    //TODO\n                    break;\n                case MyGuiContextMenuItemActionType.SAVE_ASTEROID_TO_FILE:\n                    //TODO\n                    break;\n                case MyGuiContextMenuItemActionType.SAVE_SECTOR:\n                    SaveSector();\n                    break;\n                case MyGuiContextMenuItemActionType.SELECT_ALL_OBJECTS:\n                    SelectAllObjects();\n                    break;\n                case MyGuiContextMenuItemActionType.SWITCH_GIZMO_MODE:\n                    MyEditorGizmo.SwitchGizmoMode();\n                    break;\n                case MyGuiContextMenuItemActionType.SWITCH_GIZMO_SPACE:\n                    MyEditorGizmo.ActiveSpace = MyUtils.GetNextOrPreviousEnumValue(MyEditorGizmo.ActiveSpace, true);\n                    break;\n                case MyGuiContextMenuItemActionType.SUN_SETTINGS:\n                    MyGuiManager.AddScreen(new MyGuiScreenEditorSettingsSun());\n                    close = false;\n                    break;\n                case MyGuiContextMenuItemActionType.FOG_SETTINGS:\n                    MyGuiManager.AddScreen(new MyGuiScreenEditorSettingsFog());\n                    close = false;\n                    break;\n                case MyGuiContextMenuItemActionType.SAVE_ASTEROIDS:\n                    //TODO\n                    break;\n                case MyGuiContextMenuItemActionType.ENTER_VOXEL_HAND:\n                    MyEditorVoxelHand.SetEnabled(true);\n                    break;\n                case MyGuiContextMenuItemActionType.EXIT_VOXEL_HAND:\n                    MyEditorVoxelHand.SetEnabled(false);\n                    break;\n                case MyGuiContextMenuItemActionType.EDIT_VOXEL_HAND:\n                    //MyGuiManager.AddScreen(new MyGuiScreenEditorEditVoxelHand());\n                    //close = false;\n                    break;\n                case MyGuiContextMenuItemActionType.OPTIONS:\n                    //Allow changing video options from game in DX version\n                    MyGuiManager.AddScreen(new MyGuiScreenOptions(true));\n                    //MyGuiManager.AddScreen(new MyGuiScreenOptions(false));\n                    close = false;\n                    break;\n                case MyGuiContextMenuItemActionType.CONNECT_WAYPOINTS:\n                    MyWayPoint.ConnectAll(MyWayPoint.FilterWayPoints(MyEditorGizmo.SelectedEntities));\n                    break;\n                case MyGuiContextMenuItemActionType.DISCONNECT_WAYPOINTS:\n                    MyWayPoint.DisconnectAll(MyWayPoint.FilterWayPoints(MyEditorGizmo.SelectedEntities));\n                    break;\n                case MyGuiContextMenuItemActionType.CORRECT_SNAPPED_PREFABS:\n                    MyEditor.Static.CorrectSnappedPrefabs();\n                    break;\n            }\n            return close;\n        }\n\n        /// <summary>\n        /// Handle input\n        /// </summary>\n        public void HandleInput(MyGuiInput input, bool hasMouse)\n        {\n            if (IsBackgroundWorkThreadAlive())\n                return;\n\n            // this must be here, because Update is before HandleInput and we need actual spec posititon and orientation\n            if (MyEditorVoxelHand.IsEnabled())\n            {\n                MyEditorVoxelHand.UpdateShapePosition();\n            }\n\n            if (!hasMouse)\n            {\n                m_drawingSelectionRectangle = false;\n\n                // Needed for disabling highlighting\n                m_mouseMoveInputTool.EnableInputHandling(false);\n\n                // We must save last scroll value, because when we use scrollwheel when editor doesn't handle input (any control has focus), \n                // then wrong value is here in next input handling\n                m_lastScrollWheelValue = input.MouseScrollWheelValue();\n                return;\n            }\n\n            if (input.IsLeftMousePressed())\n            {\n                MyGuiScreenGamePlay.Static.EditorControls.Focused(false);\n            }\n\n            MySpectator.EnableRotation();\n\n            ////////////////////////////////////////////////////////////////////////////////////////////////////////////\n            //  Switch between normal and crosshair camera modes\n            ////////////////////////////////////////////////////////////////////////////////////////////////////////////\n            if (input.IsNewMiddleMousePressed())\n            {\n                MyConfig.EditorUseCameraCrosshair = !MyConfig.EditorUseCameraCrosshair;\n                MyConfig.Save();\n            }\n\n            ////////////////////////////////////////////////////////////////////////////////////////////////////////////\n            //  Switch free and locked prefab rotations\n            ////////////////////////////////////////////////////////////////////////////////////////////////////////////\n            if (input.IsAnyShiftKeyPressed() && input.IsNewKeyPress(Keys.R))\n            {\n                MyConfig.EditorLockedPrefab90DegreesRotation = !MyConfig.EditorLockedPrefab90DegreesRotation;\n                MyConfig.Save();\n            }\n\n            ////////////////////////////////////////////////////////////////////////////////////////////////////////////\n            //  Enable/Disable prefab container maximum area displaying\n            ////////////////////////////////////////////////////////////////////////////////////////////////////////////\n            if (input.IsAnyShiftKeyPressed() && input.IsNewKeyPress(Keys.C))\n            {\n                DisplayPrefabContainerBounding = !DisplayPrefabContainerBounding;\n                MyConfig.EditorDisplayPrefabContainerBounding = DisplayPrefabContainerBounding;\n                MyConfig.Save();\n            }\n\n            ////////////////////////////////////////////////////////////////////////////////////////////////////////////\n            //  Enable/Disable showing unselected objects bounding\n            ////////////////////////////////////////////////////////////////////////////////////////////////////////////\n            if (input.IsAnyShiftKeyPressed() && input.IsNewKeyPress(Keys.U))\n            {\n                MyConfig.EditorDisplayUnselectedBounding = !MyConfig.EditorDisplayUnselectedBounding;\n                MyConfig.Save();\n            }\n\n\n            ////////////////////////////////////////////////////////////////////////////////////////////////////////////\n            //  Enable/Disable transform lock\n            ////////////////////////////////////////////////////////////////////////////////////////////////////////////\n            if (input.IsAnyShiftKeyPressed() && input.IsNewKeyPress(Keys.L))\n            {\n                MyEditor.TransformLocked = !MyEditor.TransformLocked;\n            }\n\n            ////////////////////////////////////////////////////////////////////////////////////////////////////////////\n            //  Extract selected prefabs to new container\n            ////////////////////////////////////////////////////////////////////////////////////////////////////////////\n            if (MyFakes.ENABLE_EXTRACT_PREFABS && input.IsAnyShiftKeyPressed() && input.IsAnyCtrlKeyPressed() && input.IsNewKeyPress(Keys.E))\n            {\n                if (m_extractPrefabsBuilder == null)\n                {\n                    ExtractPrefabsToNewContainer();\n                }\n                else\n\t            {\n                    var activeContainer = GetEditedPrefabContainer();\n                    ExitActivePrefabContainer();\n\n                    MyEntities.CreateFromObjectBuilderAndAdd(null, m_extractPrefabsBuilder, activeContainer.WorldMatrix);\n                    \n                    m_extractPrefabsBuilder = null;\n\t            }\n            }\n\n            if (input.IsAnyShiftKeyPressed() && input.IsAnyCtrlKeyPressed() && input.IsNewKeyPress(Keys.X))\n            {\n                var container = MyEditor.Static.GetEditedPrefabContainer();\n                if (container != null)\n                {\n                    MyEditorGizmo.SelectedEntities.Clear();\n                    foreach (var prefab in container.GetPrefabs())\n                    {\n                        var light = prefab as MyPrefabLight;\n\n                        if (light != null && light.Effect == CommonLIB.AppCode.ObjectBuilders.SubObjects.Prefabs.MyLightEffectTypeEnum.DISTANT_GLARE)\n                        {\n                            light.Effect = CommonLIB.AppCode.ObjectBuilders.SubObjects.Prefabs.MyLightEffectTypeEnum.NORMAL;\n                            MyEditorGizmo.SelectedEntities.Add(light);\n                        }\n                        \n                        if (light != null && light.Effect == CommonLIB.AppCode.ObjectBuilders.SubObjects.Prefabs.MyLightEffectTypeEnum.DISTANT_GLARE_FLASHING)\n                        {\n                            light.Effect = CommonLIB.AppCode.ObjectBuilders.SubObjects.Prefabs.MyLightEffectTypeEnum.CONSTANT_FLASHING;\n                            MyEditorGizmo.SelectedEntities.Add(light);\n                        }\n                    }\n                }\n            }\n\n            ////////////////////////////////////////////////////////////////////////////////////////////////////////////\n            //  Connect selected waypoints in a path\n            ////////////////////////////////////////////////////////////////////////////////////////////////////////////\n            if (input.IsAnyShiftKeyPressed() && input.IsNewKeyPress(Keys.J) && MyWayPoint.ContainsWayPoint(MyEditorGizmo.SelectedEntities))\n            {\n                MyWayPoint last = null;\n                foreach (var v in MyWayPoint.FilterWayPoints(MyEditorGizmo.SelectedEntities))\n                {\n                    if (last != null)\n                        MyWayPoint.Connect(v as MyWayPoint, last);\n                    last = v;\n                }\n            }\n\n            ////////////////////////////////////////////////////////////////////////////////////////////////////////////\n            //  Connect/Disconnect all selected waypoints\n            ////////////////////////////////////////////////////////////////////////////////////////////////////////////\n            if (input.IsAnyShiftKeyPressed() && input.IsNewKeyPress(Keys.K) && MyWayPoint.ContainsWayPoint(MyEditorGizmo.SelectedEntities))\n            {\n                //int total, save, notsave, generated;\n                //MyWayPointGraph.CountWaypointTypes(out total, out notsave, out save, out generated);\n\n                if (MyWayPoint.AnyEdgesBetween(MyWayPoint.FilterWayPoints(MyEditorGizmo.SelectedEntities)))\n                {\n                    MyWayPoint.DisconnectAll(MyWayPoint.FilterWayPoints(MyEditorGizmo.SelectedEntities));\n                }\n                else\n                {\n                    if (MyEditorGizmo.SelectedEntities.Count >= 10)\n                        \n                    {            \n                        int edgeCount = MyEditorGizmo.SelectedEntities.Count * (MyEditorGizmo.SelectedEntities.Count - 1) / 2;\n                        MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, \n                            new StringBuilder().AppendFormat(\"Do you really want to create all \\uEA61{0}\\uEA60 edges?\", edgeCount),\n                            new StringBuilder(\"Stop and think!\"), MyTextsWrapperEnum.Yes, MyTextsWrapperEnum.No, m_connectAllSelectedWaypointsCallback\n                        ));    \n                    }\n                    else\n                    {\n                        MyWayPoint.ConnectAll(MyWayPoint.FilterWayPoints(MyEditorGizmo.SelectedEntities));\n                    }\n                }\n            }\n\n            ////////////////////////////////////////////////////////////////////////////////////////////////////////////\n            //  Add named waypoint selection (WayPointPath) or rename it\n            ////////////////////////////////////////////////////////////////////////////////////////////////////////////\n            if (input.IsAnyShiftKeyPressed() && input.IsNewKeyPress(Keys.N) && MyWayPoint.ContainsWayPoint(MyEditorGizmo.SelectedEntities))\n            {\n                if (MyWayPointGraph.SelectedPath != null)\n                {\n                    MyGuiManager.AddScreen(new MyGuiScreenEditorWayPointPath(MyWayPointGraph.SelectedPath, false));\n                }\n                else\n                {\n                    // find unique name\n                    int number = 1;\n                    string name;\n                    do\n                    {\n                        name = new StringBuilder(\"Group\").Append(number).ToString();\n                        number++;\n                    } while (MyWayPointGraph.GetPath(name) != null);\n\n                    var path = new MyWayPointPath(name);\n                    foreach (var selectedWaypoint in MyWayPoint.FilterWayPoints(MyEditorGizmo.SelectedEntities))\n                        path.WayPoints.Add(selectedWaypoint);\n                    MyWayPointGraph.SelectedPath = path;\n                    MyGuiManager.AddScreen(new MyGuiScreenEditorWayPointPath(MyWayPointGraph.SelectedPath, true));\n                }\n            } \n\n            ////////////////////////////////////////////////////////////////////////////////////////////////////////////\n            //  Correct snapped prefabs\n            ////////////////////////////////////////////////////////////////////////////////////////////////////////////\n            if (input.IsAnyShiftKeyPressed() && input.IsNewKeyPress(Keys.N) && !MyWayPoint.ContainsWayPoint(MyEditorGizmo.SelectedEntities))\n            {\n                CorrectSnappedPrefabs();\n            }\n\n            ////////////////////////////////////////////////////////////////////////////////////////////////////////////\n            //  Reset all prefab waypoints\n            ////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\n            if (input.IsAnyShiftKeyPressed() && input.IsNewKeyPress(Keys.H))\n            {\n                int modifiedPathCount = MyWayPointGraph.CountPathsWithWaypointsWithParents();\n                var message = new StringBuilder(\"\");\n                message.AppendFormat(\"This will delete all {0} waypoints from all prefabs and create new ones.\", MyWayPointGraph.CountWaypointsWithParents());\n                if (modifiedPathCount > 0)\n                {\n                    message.AppendFormat(\"\\n\\rThese waypoints will also be removed from {0} paths.\", modifiedPathCount);\n                }\n                MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, \n                    message.Append(\"\\n\\r\\n\\rAre you sure?\"),\n                    new StringBuilder(\"Reset all waypoints in prefabs\"), MyTextsWrapperEnum.Yes, MyTextsWrapperEnum.No, m_resetAllWaypointsInPrefabsCallback\n                ));\n            }\n\n            ////////////////////////////////////////////////////////////////////////////////////////////////////////////\n            //  Cut out voxels to make space for selected entities\n            ////////////////////////////////////////////////////////////////////////////////////////////////////////////\n            if (input.IsAnyShiftKeyPressed() && input.IsNewKeyPress(Keys.M))\n            {\n                foreach (var v in MyVoxelMaps.GetVoxelMaps())\n                {\n                    foreach (var e in MyEditorGizmo.SelectedEntities)\n                    {\n                        if (v.WorldAABB.Contains(e.WorldAABB) == ContainmentType.Disjoint) continue;\n\n                        var voxelHandSphereBuilder = new MyMwcObjectBuilder_VoxelHand_Sphere(\n                            new MyMwcPositionAndOrientation(e.WorldAABB.GetCenter(), Vector3.Forward, Vector3.Up),\n                            Vector3.Distance(e.WorldAABB.GetCenter(), e.WorldAABB.GetCorners()[0]),\n                            MyMwcVoxelHandModeTypeEnum.SUBTRACT\n                        );\n                        var voxelHandSphere = new MyVoxelHandSphere();\n                        voxelHandSphere.Init(voxelHandSphereBuilder, v as MyVoxelMap);\n                        MyEntities.Remove(voxelHandSphere);\n                        (v as MyVoxelMap).AddVoxelHandShape(voxelHandSphere, false);\n                    }\n                }\n                RecheckAllColidingEntitesAndClearNonColiding();\n            }\n\n            /////Camera+selection utils\n            int pressedNumericKeyIndex = -1;\n            for (int key = (int)Keys.D1; key <= (int)Keys.D4; key++)\n            {\n                if (input.IsNewKeyPress((Keys)key))\n                {\n                    pressedNumericKeyIndex = key - (int)Keys.D1;\n                    break;\n                }\n            }\n            if (pressedNumericKeyIndex != -1)\n            {\n                if (input.IsAnyCtrlKeyPressed())\n                {\n                    if (MyEditorGizmo.SelectedEntities.Count > 0)\n                        m_storedMatrices[pressedNumericKeyIndex] = MyEditorGizmo.SelectedEntities[0].WorldMatrix;\n                    else\n                        m_storedMatrices[pressedNumericKeyIndex] = Matrix.CreateWorld(MyCamera.Position, MyCamera.ForwardVector, MyCamera.UpVector);\n                }\n                else\n                {\n                    if (m_storedMatrices[pressedNumericKeyIndex] != default(Matrix))\n                    {\n                        if (MyEditorGizmo.SelectedEntities.Count > 0)\n                            MyEditorGizmo.SelectedEntities[0].WorldMatrix = m_storedMatrices[pressedNumericKeyIndex];\n                        else\n                            MySpectator.SetViewMatrix(Matrix.Invert(m_storedMatrices[pressedNumericKeyIndex]));\n                    }\n                }\n            }\n\n\n            ////////////////////////////////////////////////////////////////////////////////////////////////////////////\n            //  Show add new object Tree View\n            ////////////////////////////////////////////////////////////////////////////////////////////////////////////\n            if (input.IsNewKeyPress(Keys.Insert))\n            {\n                MyGuiScreenGamePlay.Static.EditorControls.OnAddObject(null);\n            }\n\n            ////////////////////////////////////////////////////////////////////////////////////////////////////////////\n            //  When using carving tool, you can modify asteroid only, you have to exit from this mode to edit rest of the world.\n            //  Carving tool is providing possibility to remove or add content from asteroid\n            ////////////////////////////////////////////////////////////////////////////////////////////////////////////\n            if (MyEditorVoxelHand.IsEnabled() && MyEditorVoxelHand.DetachedVoxelHand == null)\n            {\n                MyEditorVoxelHand.HandleInput(input);\n            }\n            else\n            {\n                if (MyEditorVoxelHand.IsEnabled() && MyEditorVoxelHand.DetachedVoxelHand != null)\n                {\n                    MyEditorVoxelHand.HandleInput(input);\n                }\n\n                ////////////////////////////////////////////////////////////////////////////////////////////////////////////\n                // Repair To The Max\n                ////////////////////////////////////////////////////////////////////////////////////////////////////////////\n                if (input.IsNewKeyPress(Keys.O) && MyGuiScreenGamePlay.Static.IsEditorActive() && !MyGuiScreenGamePlay.Static.IsIngameEditorActive())\n                {\n                    foreach (MyEntity e in MyEditorGizmo.SelectedEntities)\n                        e.RepairToMax();\n                }\n\n                ////////////////////////////////////////////////////////////////////////////////////////////////////////////\n                // Voxel Hand - if disabled, enable here\n                ////////////////////////////////////////////////////////////////////////////////////////////////////////////\n                if ((input.IsEditorControlNewPressed(MyEditorControlEnums.VOXEL_HAND)) &&\n                    MyGuiContextMenuHelpers.GetEditorContextMenuHelper(GetCurrentState()).IsActionTypeAvailable(MyGuiContextMenuItemActionType.ENTER_VOXEL_HAND))\n                {\n                    MyEditorVoxelHand.SwitchEnabled();\n                    m_mouseMoveInputTool.EnableInputHandling(!MyEditorVoxelHand.IsEnabled());\n                }\n\n                ////////////////////////////////////////////////////////////////////////////////////////////////////////////\n                // First handle Rectangle selection on primary action key\n                ////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\n                if (input.IsEditorControlNewPressed(MyEditorControlEnums.PRIMARY_ACTION_KEY) && input.IsAnyShiftKeyPressed() == false)\n                {\n                    m_drawingSelectionRectangle = true;\n                    m_startCaptureCrosshairPosition = true;\n                }\n\n                if (input.IsEditorControlPressed(MyEditorControlEnums.PRIMARY_ACTION_KEY) && input.IsAnyShiftKeyPressed() == false && m_drawingSelectionRectangle)\n                {\n                    CreateSelectionRectangle(input);\n                    m_mouseMoveInputTool.EnableInputHandling(false);\n                }\n                else if (input.WasEditorControlReleased(MyEditorControlEnums.PRIMARY_ACTION_KEY))\n                {\n                    // Mouse was released a frame ago\n                    m_drawingSelectionRectangle = false;\n                    m_selectionRectangle = MinerWarsMath.Rectangle.Empty;\n                    m_mouseMoveInputTool.EnableInputHandling(!MyEditorVoxelHand.IsEnabled());\n                }\n\n\n\n\n                ////////////////////////////////////////////////////////////////////////////////////////////////////////////\n                // Second handle objects selection and other interaction with primary action key\n                ////////////////////////////////////////////////////////////////////////////////////////////////////////////\n                if (input.IsEditorControlNewReleased(MyEditorControlEnums.PRIMARY_ACTION_KEY))\n                {\n                    m_mouseMoveInputTool.EnableInputHandling(false);\n                    //In case selection rectangle is drawn with mouse, select objects in it, otherwise select single objects\n                    if (IsSelectingByRectangle() && IsAnyEntityAttachedToCamera() == false)\n                    {\n                        MyEditorGizmo.SelectedSnapPoint = null;\n                        SelectAllEntitiesInRectangle(input);\n                        m_drawingSelectionRectangle = false;\n                    }\n                    else\n                    {\n                        // When left mouse pressed and no objects are attached to camera, try to select object under mouse cursor\n                        if (IsAnyEntityAttachedToCamera())\n                        {\n                            // When objects attached, confirm their new location\n                            DetachAndConfirm();\n                        }\n                    }\n                }\n\n                // Handle input for editor transformation gizmo\n                MyEditorGizmo.HandleInput(input);\n\n                if (!MyEditor.TransformLocked)\n                {\n                    if (input.IsEditorControlNewPressed(MyEditorControlEnums.PRIMARY_ACTION_KEY))\n                    {\n                        if (!(IsSelectingByRectangle() && IsAnyEntityAttachedToCamera() == false))\n                        {\n                            // When left mouse pressed and no objects are attached to camera, try to select object under mouse cursor\n                            if (IsAnyEntityAttachedToCamera() == false)\n                            {\n                                MyEditorGizmo.SelectByIntersectionLine(input);\n\n                                if (MyConfig.EditorUseCameraCrosshair)\n                                {\n                                    AttachSelectedObjectsToCamera();\n                                }\n                            }\n                        }\n                    }\n                }\n\n                ////////////////////////////////////////////////////////////////////////////////////////////////////////////\n                // Attach object to camera, attach object to snap point\n                ////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\n                if (input.WasEditorControlPressed(MyEditorControlEnums.SECONDARY_ACTION_KEY) == false && input.IsEditorControlPressed(MyEditorControlEnums.SECONDARY_ACTION_KEY))\n                {\n                    //m_mouseMoveInputTool.EnableInputHandling(false);\n                    //In case RMB button is pressed while holding left shift, make copy of selected items, but only if nothing is attached right now\n                    if (input.IsKeyPress(Keys.LeftShift) && IsAnyEntityAttachedToCamera() == false)\n                    {\n                        CopySelected(true);\n                    }\n                    else\n                    {\n                        if ((MyConfig.EditorUseCameraCrosshair || input.IsAnyControlPress()) && MyEditorGizmo.SelectedSnapPoint == null)\n                        {\n                            //It is not possible to attach any objects while there are some attached now\n                            if (IsAnyEntityAttachedToCamera() == false)\n                            {\n                                AttachSelectedObjectsToCamera();\n\n                                //when pressing RMB in container, leave container edit mode or show message, in case container does not contain any prefab and disallow to exit edit mode\n                                if (!MyGuiScreenGamePlay.Static.IsIngameEditorActive() &&\n                                    !IsAnyEntityAttachedToCamera() &&\n                                    m_activePrefabContainer != null &&\n                                    !MyEditorGizmo.IsEntitySelected(MyEntities.GetEntityUnderMouseCursor()))\n                                {\n                                    ExitActivePrefabContainer();\n                                }\n                            }\n                        }\n                        else if (input.IsAnyAltPress() && MyEditorGizmo.SelectedSnapPoint == null)\n                        {\n                            if (MyEditorGizmo.IsAnyEntitySelected())\n                            {\n                                BoundingSphere sphere;\n                                GetSelectedEntitiesBoundingSphere(out sphere);\n\n                                Vector3 direction = MyCamera.ForwardVector * m_scrollWheelDistance * sphere.Radius;\n                                MySpectator.Position = sphere.Center - direction;\n                            }\n                        }\n                        else if (MyEditorGizmo.SelectedSnapPoint != null)\n                        {\n                            var secondSnapPoint = MyEditorGizmo.GetSnapPoint(false);\n                            if (secondSnapPoint != null)\n                            {\n                                if (!CanLinkSnapPoints(MyEditorGizmo.SelectedSnapPoint, secondSnapPoint))\n                                {\n                                    MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.SnapPointLinkError, MyTextsWrapperEnum.LinkSnapPoints, MyTextsWrapperEnum.Ok, null));\n                                }\n                                else\n                                {\n                                    AttachSnapPoints(MyEditorGizmo.SelectedSnapPoint, secondSnapPoint, true);\n                                    LinkSnapPoints();\n                                }\n                            }\n                        }\n                    }\n                }\n\n                ////////////////////////////////////////////////////////////////////////////////////////////////////////////\n                // Select all objects\n                ////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\n                if (input.IsAnyControlPress() && input.IsNewKeyPress(Keys.A) && IsAnyEntityAttachedToCamera() == false)\n                {\n                    SelectAllObjects();\n                }\n                else if (input.IsAnyControlPress() && input.IsNewKeyPress(Keys.D) && IsAnyEntityAttachedToCamera() == false)\n                {\n                    MyEditorGizmo.ClearSelection();\n                }\n\n                ////////////////////////////////////////////////////////////////////////////////////////////////////////////\n                // Change distance of attached objects from camera\n                ////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\n                if (input.IsAnyControlPress() && IsAnyEntityAttachedToCamera())\n                {\n                    m_mouseMoveInputTool.EnableInputHandling(false);\n                    if (m_lastScrollWheelValue > input.MouseScrollWheelValue() && m_scrollWheelDistance > 1)\n                    {\n                        m_scrollWheelDistance -= 1;\n\n                    }\n                    else if (m_lastScrollWheelValue < input.MouseScrollWheelValue() && m_scrollWheelDistance < 50)\n                    {\n                        m_scrollWheelDistance += 1;\n                    }\n                    m_lastScrollWheelValue = input.MouseScrollWheelValue();\n                }\n\n                ////////////////////////////////////////////////////////////////////////////////////////////////////////////\n                // Switch orientation of the grid on selected prefab\n                ////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\n                //if (input.IsEditorControlNewPressed(MyEditorControlEnums.SWITCH_GIZMO_MODE))\n                //{\n                //    MyEditorGrid.SwitchGridOrientation();\n                //}\n\n                ////////////////////////////////////////////////////////////////////////////////////////////////////////////\n                // Commit prefab container\n                ////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\n                if (input.IsNewKeyPress(Keys.Enter))\n                {\n                    CommitPrefabContainerChanges();\n                }\n\n                ////////////////////////////////////////////////////////////////////////////////////////////////////////////\n                // Remove selected object\n                ////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\n                if (input.IsNewKeyPress(Keys.Delete))\n                {\n                    RemoveEntities(MyEditorGizmo.SelectedEntities);\n                    ClearAttachedEntities();\n                }\n\n                ////////////////////////////////////////////////////////////////////////////////////////////////////////////\n                // Toggle snap points\n                ////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\n                if (input.IsNewKeyPress(Keys.P))\n                {\n                    if (ShowSnapPoints && MyEditorGizmo.SelectedSnapPoint != null)\n                    {\n                        MyEditorGizmo.SelectedSnapPoint = null;\n                    }\n                    ShowSnapPoints = !ShowSnapPoints;\n                }\n            }\n\n            ////////////////////////////////////////////////////////////////////////////////////////////////////////////\n            // Disable/Enable lighting in the editor\n            ////////////////////////////////////////////////////////////////////////////////////////////////////////////\n            //if (input.IsNewKeyPress(Keys.F3))\n            if (input.IsNewKeyPress(Keys.Y) && input.IsAnyControlPress())\n            {\n                MyEditor.EnableLightsInEditor = !MyEditor.EnableLightsInEditor;\n            }\n\n            /*\n            if (input.IsNewKeyPress(Keys.N) && input.IsAnyControlPress())\n            {\n                MyMwcObjectBuilder_VoxelMap voxelMapObjectBuilder = new MyMwcObjectBuilder_VoxelMap(new Vector3(0, 0, 0), MyMwcVoxelFilesEnum.ScratchedBoulder_128x128x128, MyMwcVoxelMaterialsEnum.Stone_01);\n\n                for (int i = 0; i < 4800; i++)\n                {\n                    voxelMapObjectBuilder.VoxelHandShapes.Add(new MyMwcObjectBuilder_VoxelHand_Sphere(new MyMwcPositionAndOrientation(Vector3.Zero, Vector3.Forward, Vector3.Up), 50, MyMwcVoxelHandModeTypeEnum.ADD));\n                }\n                MyEntities.CreateFromObjectBuilderAndAdd(null, voxelMapObjectBuilder, Matrix.Identity);\n            }\n            */\n        \n\n            ////////////////////////////////////////////////////////////////////////////////////////////////////////////\n            // Changes editor spectator movement speed\n            ////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\n            if (m_lastScrollWheelValue != input.MouseScrollWheelValue() &&\n                !(input.IsAnyControlPress() && IsAnyEntityAttachedToCamera()) &&\n                !((input.IsAnyControlPress() || input.IsAnyShiftPress()) && MyEditorVoxelHand.IsEnabled()))\n            {\n                if (m_lastScrollWheelValue < input.MouseScrollWheelValue() && MySpectator.SpeedMode < MyEditorConstants.MAX_EDITOR_CAMERA_MOVE_MULTIPLIER)\n                {\n                    m_scrollWheelIndicatorHelper += 0.5;\n                }\n                else if (m_lastScrollWheelValue > input.MouseScrollWheelValue() && MySpectator.SpeedMode > MyEditorConstants.MIN_EDITOR_CAMERA_MOVE_MULTIPLIER)\n                {\n                    m_scrollWheelIndicatorHelper -= 0.5;\n                }\n                MySpectator.SpeedMode = (float)Math.Round(Math.Pow(2, m_scrollWheelIndicatorHelper), 2);\n\n                m_lastScrollWheelValue = input.MouseScrollWheelValue();\n            }\n\n            ////////////////////////////////////////////////////////////////////////////////////////////////////////////\n            // Changes GRID step size\n            ////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\n            if (input.IsEditorControlNewPressed(MyEditorControlEnums.INCREASE_GRID_SCALE))\n            {\n                MyEditorGrid.IncreaseGridStep();\n            }\n\n            if (input.IsEditorControlNewPressed(MyEditorControlEnums.DECREASE_GRID_SCALE))\n            {\n                MyEditorGrid.DecreaseGridStep();\n            }\n\n            ////////////////////////////////////////////////////////////////////////////////////////////////////////////\n            // Show Editor help\n            ////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\n            if (input.IsNewKeyPress(Keys.F1) && !input.IsAnyCtrlKeyPressed())\n            {\n                MyGuiManager.AddScreen(new MyGuiScreenEditorHelp());\n            }\n\n            ////////////////////////////////////////////////////////////////////////////////////////////////////////////\n            // Temporary for undo action\n            ////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\n            if (!MyFakes.EDITOR_DISABLE_UNDO_REDO && input.IsAnyControlPress() && input.IsNewKeyPress(Keys.Z))\n            {\n                MyEditorActions.Undo();\n            }\n\n            ////////////////////////////////////////////////////////////////////////////////////////////////////////////\n            // Temporary for redo action\n            ////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\n            if (!MyFakes.EDITOR_DISABLE_UNDO_REDO && input.IsAnyControlPress() && input.IsNewKeyPress(Keys.R))\n            {\n                MyEditorActions.Redo();\n            }\n\n            ///////////////////////////////////////////////////////////////////////////////////////////////////////////\n            // Edit entity inventory\n            ///////////////////////////////////////////////////////////////////////////////////////////////////////////\n            if (input.IsNewKeyPress(Keys.F5) && MyEditorGizmo.IsOnlyOneEntitySelected() && MyEditorGizmo.SelectedEntities[0] is IMyInventory)\n            {\n                MyGuiManager.AddScreen(new MyGuiScreenEntityWithInventory(MyEditorGizmo.SelectedEntities[0]));\n            }\n\n            if (!(MyGuiScreenGamePlay.Static.IsIngameEditorActive() && GetEditedPrefabContainer() == null) && IsBackgroundWorkThreadNotAlive())\n                m_mouseMoveInputTool.HandleInput(input);\n        }\n\n        \n        private static MyGuiScreenMessageBox.MessageBoxCallback m_connectAllSelectedWaypointsCallback = new MyGuiScreenMessageBox.MessageBoxCallback(ConnectAllSelectedWaypointsCallback);\n        private static void ConnectAllSelectedWaypointsCallback(MyGuiScreenMessageBoxCallbackEnum r)\n        {\n            if (r == MyGuiScreenMessageBoxCallbackEnum.YES)\n                MyWayPoint.ConnectAll(MyWayPoint.FilterWayPoints(MyEditorGizmo.SelectedEntities));\n        }\n\n        private static MyGuiScreenMessageBox.MessageBoxCallback m_resetAllWaypointsInPrefabsCallback = new MyGuiScreenMessageBox.MessageBoxCallback(ResetAllWaypointsInPrefabsCallback);\n        private static void ResetAllWaypointsInPrefabsCallback(MyGuiScreenMessageBoxCallbackEnum r)\n        {\n            if (r == MyGuiScreenMessageBoxCallbackEnum.YES)\n                MyWayPointGraph.ReloadAllWaypointsWithParents();\n        }\n\n        public void CorrectSnappedPrefabs()\n        {\n            var alreadyCorrected = new HashSet<MyEntity>();\n            foreach (var link in LinkedSnapPoints.ToList())\n            {\n                var entity = link.First().SnapPoint.Prefab;\n                if (!alreadyCorrected.Contains(entity))\n                {\n                    var result = new List<MyEntity>();\n                    FixLinkedEntities(entity, result, null);\n                    foreach (var e in result)\n                        alreadyCorrected.Add(e);\n                }\n            }\n        }\n\n        public void EnterInGameEditMode(MyPrefabFoundationFactory prefabFoundationFactory)\n        {\n            //MyPrefabContainer container = (MyPrefabContainer) GetCurrentlyLoggedUsersPrefabContainer();            \n            MyGuiContextMenuHelpers.LoadInGameEditorContent();\n            //m_activePrefabContainer = foundationFactory.PrefabContainer;\n            //MyGuiScreenGamePlay.Static.EditorControls.SetEditorMode(true);                        \n            //MyGuiScreenGamePlay.Static.FoundationFactoryControls.Init(foundationFactory);\n            FoundationFactory = prefabFoundationFactory;            \n            MyGuiScreenGamePlay.Static.EditorControls.LoadEditorData();            \n            /*\n            if (container == null)\n            {\n                List<MyMwcObjectBuilder_Prefab> prefabBuilders = new List<MyMwcObjectBuilder_Prefab>();\n                //prefabBuilders.Add(prefabBuilder);\n                MyMwcObjectBuilder_PrefabContainer prefabContainerBuilder = new MyMwcObjectBuilder_PrefabContainer(\n                    new MyMwcPositionAndOrientation(MySpectator.Target + 100 * MySpectator.Orientation, Vector3.Forward, Vector3.Up),\n                    null, MyMwcObjectBuilder_PrefabContainer_TypesEnum.INSTANCE, prefabBuilders, MyClientServer.LoggedPlayer.GetUserId());\n                MyEditor.Static.CreateFromObjectBuilder(prefabContainerBuilder);\n                container = (MyPrefabContainer)GetCurrentlyLoggedUsersPrefabContainer();\n            }\n            */\n\n            //EditPrefabContainer(container);\n            EditPrefabContainer(prefabFoundationFactory.PrefabContainer);\n\n        }\n\n        public void ExitInGameEditMode()\n        {\n            //ExitActivePrefabContainer();\n            MyGuiContextMenuHelpers.LoadDefaultEditorContent();                        \n            MyGuiScreenGamePlay.Static.EditorControls.UnloadEditorData();\n            FoundationFactory = null;\n            //MyGuiScreenGamePlay.Static.EditorControls.SetEditorMode(false);            \n        }\n\n\n        /// <summary>\n        /// Method switches editor into container edit mode\n        /// </summary>\n        /// <param name=\"container\"></param>\n        public void EditPrefabContainer(MyPrefabContainer container)\n        {\n            if (container != null)\n            {\n                if (container.IsEditingActive() == false)\n                {\n                    MyEditorGizmo.ClearSelection();\n                    container.SwitchEditMode();\n                    m_activePrefabContainer = container;\n                    MyAudio.AddCue2D(MySoundCuesEnum.GuiEditorPrefabEnter);\n                    m_activePrefabContainer.SetEditState(true);\n                }\n            }\n        }\n\n        /// <summary>\n        /// Method exits from container editing mode\n        /// </summary>\n        public void ExitActivePrefabContainer()\n        {\n            if (m_activePrefabContainer != null)\n            {\n\n                MyEditorGizmo.ClearSelection();\n                m_activePrefabContainer.SwitchEditMode();\n                MyPrefabContainer setSelectedContainer = m_activePrefabContainer;\n                ResetActivePrefabContainer();\n                MyEditorGizmo.AddEntityToSelection(setSelectedContainer);\n                MyAudio.AddCue2D(MySoundCuesEnum.GuiEditorPrefabExit);\n            }\n        }\n\n        /// <summary>\n        /// When commiting changes to container, check if there are no collisions of prefabs with other non-container objects\n        /// </summary>\n        private void CommitPrefabContainerChanges()\n        {\n            if (IsEditingPrefabContainer())\n            {\n                MyEditorGizmo.ClearSelection();\n                //m_activePrefabContainer.CommitAndReload();\n                MyAudio.AddCue2D(MySoundCuesEnum.GuiEditorPrefabCommit);\n            }\n        }\n\n        /// <summary>\n        /// Select all objects in sector\n        /// </summary>\n        private void SelectAllObjects()\n        {\n            if (MyGuiScreenGamePlay.Static.IsIngameEditorActive() && GetEditedPrefabContainer() == null)\n                return;\n\n            MyEditorGizmo.ClearSelection();\n\n            if (IsEditingPrefabContainer() == false)\n            {\n                List<MyEntity> allEntities = MyEntities.GetEntities().ToList();\n                MyEditorGizmo.AddEntitiesToSelection(allEntities);\n            }\n            else\n            {\n                MyEditorGizmo.AddEntitiesToSelection(m_activePrefabContainer.GetPrefabs());\n            }\n        }\n\n        /// <summary>\n        /// Create selection rectangle\n        /// </summary>\n        /// <param name=\"input\"></param>\n        private void CreateSelectionRectangle(MyGuiInput input)\n        {\n            // Do not allow to create selection rectangle while using transformation gizmo for object transformation\n            if (MyEditorGizmo.TransformationActive)\n                return;\n\n            Vector2 screenMouseCursorCoord = MyGuiManager.GetScreenCoordinateFromNormalizedCoordinate(MyGuiManager.MouseCursorPosition);\n            if (input.WasEditorControlReleased(MyEditorControlEnums.PRIMARY_ACTION_KEY))\n            {\n                // Set the selection box starting point\n                m_selectionRectangle = new MinerWarsMath.Rectangle((int)screenMouseCursorCoord.X, (int)screenMouseCursorCoord.Y, 0, 0);\n\n                // We want the selection box to be relative to the viewport we're using\n                m_selectionRectangle.Y -= MyCamera.Viewport.Y;\n                m_selectionRectangle.X -= MyCamera.Viewport.X;\n            }\n            else\n            {\n                if (!MyConfig.EditorUseCameraCrosshair)\n                {\n                    // Calculate new width,height\n                    m_selectionRectangle.Width = ((int)screenMouseCursorCoord.X) - m_selectionRectangle.X;\n                    m_selectionRectangle.Height = ((int)screenMouseCursorCoord.Y) - m_selectionRectangle.Y;\n\n                    // We want the selection box to be relative to the viewport we're using\n                    m_selectionRectangle.Width -= MyCamera.Viewport.X;\n                    m_selectionRectangle.Height -= MyCamera.Viewport.Y;\n\n                    MyEditorGizmo.Enabled = false;\n                }\n                else\n                {\n                    if (m_startCaptureCrosshairPosition)\n                    {\n                        m_startLineCrosshairSelection = MyUtils.ConvertMouseToLine();\n                        m_startCaptureCrosshairPosition = false;\n                    }\n                    m_endLineCrosshairSelection = MyUtils.ConvertMouseToLine();\n\n                    Vector3 sp = SharpDXHelper.ToXNA(MyCamera.ForwardViewport.Project(SharpDXHelper.ToSharpDX(m_startLineCrosshairSelection.From + m_startLineCrosshairSelection.Direction),\n                        SharpDXHelper.ToSharpDX(MyCamera.ProjectionMatrix), SharpDXHelper.ToSharpDX(MyCamera.ViewMatrix), SharpDXHelper.ToSharpDX(Matrix.Identity)));\n\n                    Vector3 ep = SharpDXHelper.ToXNA(MyCamera.ForwardViewport.Project(SharpDXHelper.ToSharpDX(m_endLineCrosshairSelection.From + m_endLineCrosshairSelection.Direction),\n                        SharpDXHelper.ToSharpDX(MyCamera.ProjectionMatrix), SharpDXHelper.ToSharpDX(MyCamera.ViewMatrix), SharpDXHelper.ToSharpDX(Matrix.Identity)));\n\n                    m_selectionRectangle.X = (int)sp.X;\n                    m_selectionRectangle.Y = (int)sp.Y;\n                    m_selectionRectangle.Width = (int)(ep.X - sp.X);\n                    m_selectionRectangle.Height = (int)(ep.Y - sp.Y);\n                }\n            }\n        }\n\n        /// <summary>\n        /// Get bounding sphere containing all selected entities\n        /// </summary>\n        void GetSelectedEntitiesBoundingSphere(out BoundingSphere sphere)\n        {\n            Vector3 relativeToPosition = Vector3.Zero;\n            Vector3 center = MyEditorGizmo.GetSelectedObjectsCenter();\n            sphere.Center = center;\n\n            /** When attaching multiple objects, we create one bounding sphere having center where\n             *  all objects center is and radius that reaches object most far from center of the selection.\n             *  This is used when calculating distance of objects from camera, when attaching them to camera\n             */\n            float radius = MyEditorGizmo.GetFirstSelected().WorldVolume.Radius;\n\n            foreach (MyEntity entity in MyEditorGizmo.SelectedEntities)\n            {\n                float distance = Vector3.Distance(entity.GetPosition(), center) + entity.WorldVolume.Radius;\n                if (distance > radius) radius = distance;\n            }\n\n            sphere.Radius = radius;\n        }\n\n        /// <summary>\n        /// This method will set working objects - attached to the camera(so you can fly around and take objects with you anywhere you want)\n        /// </summary>\n        public void AttachSelectedObjectsToCamera()\n        {\n            ClearAttachedEntities();\n\n            //Makes no sense to attach objects, when no object is selected\n            if (MyEditorGizmo.IsAnyEntitySelected())\n            {\n                GetSelectedEntitiesBoundingSphere(out m_attachedEntitiesBoundingSphere);\n\n                foreach (MyEntity entity in MyEditorGizmo.SelectedEntities)\n                {\n                    m_attachedEntities.Add(entity, entity.GetPosition() - m_attachedEntitiesBoundingSphere.Center);\n                }\n\n                MyEditorGizmo.StartTransformationData();\n                MyAudio.AddCue2D(MySoundCuesEnum.GuiEditorObjectAttach);\n\n            }\n        }\n\n        /// <summary>\n        /// This method is used for detaching objects from camera and leaving them on new position(if it is valid)\n        /// </summary>\n        public void DetachAndConfirm()\n        {\n            //by clearing working phys objects, we also detach them from camera and leave them on place under cursor\n            ClearAttachedEntities();\n\n            MyEditorGizmo.TransformationActive = false;\n            MyEditorGizmo.EndTransformationData();\n\n            MyAudio.AddCue2D(MySoundCuesEnum.GuiEditorObjectDetach);\n        }\n\n        /// <summary>\n        /// Checks if entity is coliding and not selected by editor or not (by searching up in collision list) and changes its highlighting\n        /// </summary>\n        /// <param name=\"entity\"></param>\n        /// <param name=\"areTheyColiding\"></param>\n        public void ChangeHighlightingForEntity(MyEntity entity, bool areTheyColiding)\n        {\n            if (areTheyColiding)\n            {\n                entity.SetCollisionHighlighting(ref MyEditorConstants.COLLIDING_OBJECT_DIFFUSE_COLOR_ADDITION);\n            }\n            else\n            {\n                Vector3 zero = new Vector3(0, 0, 0);\n                entity.SetCollisionHighlighting(ref zero);\n            }\n        }\n\n        private static void SetAllObjectsPhysicsState(bool physState, bool resetState)\n        {\n            foreach (MyEntity enti in (MyEntities.GetEntities()))\n            {\n                if (enti.Physics != null)\n                {\n                    if (enti.Physics.Enabled != physState)\n                        enti.Physics.Enabled = physState;\n                    /*\n                    if(resetState)\n                    {\n                        for( MyRBElement rb in (ent.Physics.Type as MyRigidBody).GetRBElementList() )\n                            rb.\n                    }\n                    */\n                }\n            }\n        }\n\n        public static void DisablePhysicsAndResetStatesOnAllObjectsInSector()\n        {\n            SetAllObjectsPhysicsState(false, true);\n        }\n\n        public static void EnablePhysicsOnAllActiveObjectsInSector()\n        {\n            SetAllObjectsPhysicsState(true, false);\n        }\n\n        public void ClearCollidingElements()\n        {\n            m_collidingElements.Clear();\n        }\n\n        /// <summary>\n        /// Tests if entity is in any collision with world, sets theirs higlighting and adds them into list of colliding entities\n        /// </summary>\n        /// <param name=\"entity\"></param>\n        public void CheckAllCollidingObjectsForEntity(MyEntity entity)\n        {\n            if (entity.Physics == null)\n                return;\n\n            /*if (entity is MyLargeShipGunBase)\n                return;*/            \n\n            if (entity is MyLargeShipGunBase || entity is MyLargeShipGunBase || entity is MyPrefabLight || !entity.VisibleInGame)\n            {\n                MyEntities.CollisionsElements.Clear();\n                return;\n            }            \n\n            MyPhysicsBody rBody = entity.Physics;\n            foreach (MyRBElement element in rBody.GetRBElementList())\n            {\n                MyEntities.CollisionsElements.Clear();\n                MyEntities.GetCollisionListForElement(element);\n                bool colliding = MyEntities.CollisionsElements.Count > 0;\n                MyEntities.CollisionsElements.Add(element);\n                foreach (MyRBElement colidingElement in MyEntities.CollisionsElements)\n                {\n                    MyEntity tmp = (colidingElement.GetRigidBody().m_UserData as MyPhysicsBody).Entity;\n                    if (tmp is MyPrefabLargeWeapon || tmp is MyLargeShipGunBase || tmp is MyPrefabLight)\n                        break;\n\n                    if (colliding && !m_collidingElements.Contains(colidingElement))\n                        m_collidingElements.Add(colidingElement);\n                    ChangeHighlightingForEntity(tmp, colliding);\n                }\n            }\n        }\n\n        /// <summary>\n        /// Rechecks colliding entities and clears non coliding\n        /// </summary>\n        public void RecheckAllColidingEntitesAndClearNonColiding()\n        {\n            for (int c = m_collidingElements.Count; c-- != 0; )\n            {\n                MyEntities.CollisionsElements.Clear();\n                MyEntities.GetCollisionListForElement(m_collidingElements[c]);\n                if (MyEntities.CollisionsElements.Count == 0)\n                {\n                    ChangeHighlightingForEntity((m_collidingElements[c].GetRigidBody().m_UserData as MyPhysicsBody).Entity, false);\n                    m_collidingElements.Remove(m_collidingElements[c]);\n                }\n            }\n        }\n\n        //public void DeleteAllFromCollidingList()\n        //{\n        //    m_collidingElements.Clear();\n        //}\n        /// <summary>\n        /// Removes entity from list of colliding entities\n        /// </summary>\n        /// <param name=\"entity\"></param>\n        public void DeleteEntityFromCollidingList(MyEntity entity)\n        {\n            foreach (MyEntity subchild in entity.Children)\n                DeleteEntityFromCollidingList(subchild);\n            if (entity.Physics != null)\n            {\n                foreach (MyRBElement element in (entity.Physics as MyPhysicsBody).GetRBElementList())\n                {\n                    if (m_collidingElements.Contains(element))\n                    {\n                        m_collidingElements.Remove(element);\n                        ChangeHighlightingForEntity(entity, false);\n                    }\n                }\n            }\n        }\n\n        /// <summary>\n        /// Tests if is editor selected entities in any collision with world and sets theirs higlighting and adds them into list of colliding entities\n        /// </summary>\n        public void CheckAllCollidingObjectsInSelection()\n        {\n            foreach (MyEntity enityinselect in MyEditorGizmo.SelectedEntities)\n            {\n                CheckAllCollidingObjectsForEntity(enityinselect);\n            }\n        }\n\n        /// <summary>\n        /// Tests if any entity is in collision state\n        /// </summary>\n        public void CheckAllCollidingObjects()\n        {\n            MyEditor.Static.ClearCollidingElements();\n            foreach (MyEntity entity in MyEntities.GetEntities())\n            {\n                if (entity.Physics != null && entity.Physics.Enabled)\n                {\n                    CheckAllCollidingObjectsForEntity(entity);\n                }\n            }\n        }\n\n        /// <summary>\n        /// Check entity child collisions\n        /// </summary>\n        /// <param name=\"entity\"></param>\n        /// <returns></returns>\n        public bool CheckForEntityChildsCollisions(MyEntity entity)\n        {\n            if (entity.Physics == null)\n                return false;\n            foreach (MyRBElement element in (entity.Physics as MyPhysicsBody).GetRBElementList())\n            {\n                if (m_collidingElements.Contains(element))\n                    return true;\n            }\n\n            IEnumerable<MyEntity> allSubentites = entity.EnumChildren(EnumerationFlags.Hierarchically);\n            foreach (MyEntity childEntity in allSubentites)\n            {\n                return CheckForEntityChildsCollisions(childEntity);\n            }\n            return false;\n        }\n\n        /// <summary>\n        /// Highlights all objects that collides with supplied entities\n        /// </summary>\n        /// <param name=\"selectedEntities\"></param>\n        public void HighlightCollisions(List<MyEntity> selectedEntities)\n        {\n            MyEntities.ClearCollisionHighlights();\n\n            foreach (MyEntity entity in selectedEntities)\n            {\n                CheckAllCollidingObjectsForEntity(entity);\n            }\n        }\n\n        /// <summary>\n        /// Perform actions required when switching to editor during gameplay\n        /// </summary>\n        void SwitchToGameplay()\n        {\n            MyEditorGizmo.SelectedSnapPoint = null;\n            MyEditorGizmo.ClearSelection();\n            MyEntities.ClearHighlights();\n            MyEntities.ClearCollisionHighlights();\n            MyEntities.UnhideAllTypes();\n        }\n\n        /// <summary>\n        /// Update\n        /// </summary>\n        public void Update()\n        {\n            //ClearWholeSector();\n            //SaveSector();\n            /*  If there is background work thread running in editor, make sure to call update and draw only on NECESSARY components\n             *  because, during it, player sees only progress box and can't do anything\n             */\n            if (IsBackgroundWorkThreadNotAlive()) StopBackgroundWorkThread();\n                 /*\n            foreach (MyEntity entity in MyEntities.GetEntities())\n            {\n                MyPrefabContainer container = entity as MyPrefabContainer;\n\n                if (container != null)\n                {\n                    foreach (MyPrefabBase prefab in container.GetPrefabs())\n                    {\n                        MyPrefabHangar hangar = prefab as MyPrefabHangar;\n                        if (hangar != null)\n                        {\n                            MinerWars.AppCode.Game.World.Global.MyFactionRelationEnum rel = MinerWars.AppCode.Game.World.Global.MyFactions.GetFactionsRelation(hangar.Faction, MySession.PlayerShip.Faction);\n                            if (rel != World.Global.MyFactionRelationEnum.Neutral)\n                            {\n                                container.Faction = MyMwcObjectBuilder_FactionEnum.TTLtd;\n                            }\n                            else\n                            {\n                            }\n                        }\n                    }\n                }\n            }\n             */\n                /*  \n            foreach (MyEntity entity in MyEntities.GetEntities())\n            {\n                MySpawnPoint sp = entity as MySpawnPoint;\n                if (sp != null)\n                {\n                    foreach (var tm in sp.GetBotTemplates())\n                    {\n                        string name = tm.m_name;\n                    }\n\n                    foreach (var bot in sp.GetBots())\n                    {\n                        var st =  bot.Builder.ShipType;\n                        if (st == MyMwcObjectBuilder_SmallShip_TypesEnum.LIBERATOR)\n                        {\n                            var fc = sp.Faction;\n                        }\n\n                        if (sp.Faction != MyMwcObjectBuilder_FactionEnum.Euroamerican)\n                        {\n                            if ((st != MyMwcObjectBuilder_SmallShip_TypesEnum.YG) &&\n                                (st != MyMwcObjectBuilder_SmallShip_TypesEnum.ORG) &&\n                                (st != MyMwcObjectBuilder_SmallShip_TypesEnum.STANISLAV) &&\n                                (st != MyMwcObjectBuilder_SmallShip_TypesEnum.STEELHEAD))\n                            {\n                            }\n                        }\n\n                    }\n                }\n            }        */\n                 /*\n            foreach (MyEntity entity in MyEditorGizmo.SelectedEntities)\n            {\n            }\n               */\n\n            // Do update editor only if sure that background thread is stopped completely\n            if (BackgroundWorkThread == null)\n            {\n                if (MyGuiManager.IsDebugScreenEnabled() == false) MyGuiManager.SwitchDebugScreensEnabled();\n\n                MyEditorGrid.Update();\n\n                if (MyGuiScreenEditorProgress.CurrentScreen != null)\n                {\n                    MyGuiScreenEditorProgress.CurrentScreen.CloseScreen();\n                }\n\n\n                //make flashing effect of selected entites and its children (depends if entities are in collision or not)\n\n                bool playCollisionCue = false;\n\n                if (!IsBackgroundWorkThreadAlive())\n                {\n                    foreach (MyRBElement colidingRBElementObject in m_collidingElements)\n                    {\n                        MyEntity colEntity = (colidingRBElementObject.GetRigidBody().m_UserData as MyPhysicsBody).Entity;\n                        if (EditorFlashingCanHighlightEntity())\n                        { //half sec interval\n                            colEntity.SetCollisionHighlighting(ref MyEditorConstants.COLLIDING_OBJECT_DIFFUSE_COLOR_ADDITION);\n                            playCollisionCue = true;\n                        }\n                        else\n                        {\n                            Vector3 zero = new Vector3(0, 0, 0);\n                            colEntity.SetCollisionHighlighting(ref zero);\n                            playCollisionCue = false;\n                        }\n                        //if (MyEditorGizmo.IsEntityOrItsParentSelected(colEntity))\n                        //{\n                        //    if (EditorFlashingCanHighlightEntity())\n                        //    { //half sec interval\n                        //        colEntity.SetCollisionHighlighting(ref MyEditorConstants.COLLIDING_OBJECT_DIFFUSE_COLOR_ADDITION);\n                        //        playCollisionCue = true;\n                        //    }\n                        //    else\n                        //    {\n                        //        Vector3 zero = new Vector3(0, 0, 0);\n                        //        colEntity.SetCollisionHighlighting(ref zero);\n                        //        playCollisionCue = false;\n                        //    }\n                        //}\n                        //else\n                        //{\n                        //    //does not work properly if i set highliting to one of childs it doesnt render highlighted\n                        //    colEntity.SetCollisionHighlighting(ref MyEditorConstants.COLLIDING_OBJECT_DIFFUSE_COLOR_ADDITION);\n                        //}\n                    }\n                }\n\n\n\n                if (playCollisionCue)\n                {\n                    MyAudio.AddCue2D(MySoundCuesEnum.GuiEditorObjectMoveInvalid);\n                }\n\n                //show message box, that max limit of voxel maps in sector has been reached\n                if (m_newAsteroidAllowed == false)\n                {\n                    MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.MaxVoxelMapsLimitReached, MyTextsWrapperEnum.MessageBoxCaptionError, MyTextsWrapperEnum.Ok, null));\n                    m_newAsteroidAllowed = true;\n                }\n\n                if (m_waitingForAtachment)\n                {\n                    AttachSelectedObjectsToCamera();\n                    m_waitingForAtachment = false;\n                }\n\n                // When objects are attached to camera, move them with camera\n                if (IsAnyEntityAttachedToCamera())\n                {\n                    // During attached mode, gizmo is not usefull, thus disable it for this moment\n                    MyEditorGizmo.Enabled = false;\n\n                    // For getting optimal position of attached objects in front of camera, use radius of bounding sphere calculated for all attached objects.\n                    // Player can also modify distance from camera using combination of ctrl + mousewheel buttons\n                    float radius = IsAnyEntityAttachedToCamera() ? m_attachedEntitiesBoundingSphere.Radius : m_attachedEntitiesBoundingSphere.Radius * 2;\n                    Vector3 direction = MyCamera.ForwardVector * m_scrollWheelDistance * radius;\n\n\n                    List<MyEntity> transformedEntities = new List<MyEntity>();\n\n                    foreach (KeyValuePair<MyEntity, Vector3> kvp in m_attachedEntities)\n                    {\n                        // skip already transformed linked entities\n                        if (transformedEntities.Contains(kvp.Key))\n                        {\n                            continue;\n                        }\n\n                        MyEntity attachedEntity = kvp.Key;\n                        Vector3 relativePositionToSphereCenter = kvp.Value;\n                        Matrix orientation = attachedEntity.GetWorldRotation();\n                        m_attachedEntitiesBoundingSphere.Center = MySpectator.Position + direction;\n\n                        if (attachedEntity is MyPrefabBase && MyEditorGizmo.SnapEnabled)\n                        {\n                            //when moving with RMB, move over the grid based on currently selected grid step size\n                            m_attachedEntitiesBoundingSphere.Center.X = MyEditorGrid.GetGridStepInMeters() *\n                                (float)Math.Round(m_attachedEntitiesBoundingSphere.Center.X / MyEditorGrid.GetGridStepInMeters());\n                            m_attachedEntitiesBoundingSphere.Center.Y = MyEditorGrid.GetGridStepInMeters() *\n                                (float)Math.Round(m_attachedEntitiesBoundingSphere.Center.Y / MyEditorGrid.GetGridStepInMeters());\n                            m_attachedEntitiesBoundingSphere.Center.Z = MyEditorGrid.GetGridStepInMeters() *\n                                (float)Math.Round(m_attachedEntitiesBoundingSphere.Center.Z / MyEditorGrid.GetGridStepInMeters());\n                        }\n\n                        // Take care of moving objects with camera\n                        Vector3 position = m_attachedEntitiesBoundingSphere.Center + relativePositionToSphereCenter;\n                        MyEditorGizmo.MoveAndRotateObject(position, orientation, attachedEntity);\n                        MyEditor.Static.FixLinkedEntities(attachedEntity, transformedEntities, null);\n                    }\n                }\n                else\n                {\n                    // When nothing attached, gizmo can be enabled again, but only in case something is selected\n                    if (MyEditorGizmo.IsAnyEntitySelected())\n                    {\n                        MyEditorGizmo.Enabled = true;\n                    }\n                    else\n                    {\n                        MyEditorGizmo.Enabled = MyEditorGizmo.SelectedSnapPoint != null;\n                    }\n                }\n\n\n                // Play sound when sector border reached \n                if (((Math.Abs(MySpectator.Position.X) == MyMwcSectorConstants.SECTOR_SIZE_HALF) ||\n                    (Math.Abs(MySpectator.Position.Y) == MyMwcSectorConstants.SECTOR_SIZE_HALF) ||\n                    (Math.Abs(MySpectator.Position.Z) == MyMwcSectorConstants.SECTOR_SIZE_HALF)) && MyMinerGame.TotalGamePlayTimeInMilliseconds % MyEditorConstants.SECTOR_BORDER_REACHED_WARNING_DELAY == 0)\n                {\n                    MyAudio.AddCue2D(MySoundCuesEnum.GuiEditorFlyOutsideBorder);\n                }\n\n                MyEditorGizmo.Update();\n                MyEditorVoxelHand.Update();\n            }\n            else\n            {\n                if (MyGuiManager.IsDebugScreenEnabled() == true) MyGuiManager.SwitchDebugScreensEnabled();\n            }\n\n            if (m_issueCheckAllCollidingObjectsCounter == 0)\n            {\n                MyEditor.Static.CheckAllCollidingObjects();\n            }\n            --m_issueCheckAllCollidingObjectsCounter;\n        }\n\n        private bool EditorFlashingCanHighlightEntity()\n        {\n            return MyMinerGame.TotalTimeInMilliseconds % MyEditorConstants.DELAY_FOR_COLLISION_TIME_FLASHING_IN_MILLIS > MyEditorConstants.DELAY_FOR_COLLISION_TIME_FLASHING_IN_MILLIS / 2;\n        }\n\n        #endregion\n\n        #region Draw Methods\n        /// <summary>\n        /// Load entity models during draw\n        /// </summary>\n        public void LoadInDraw()\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyEditor::LoadInDraw\");\n\n            if (ReloadModelsInDrawRequired)\n            {\n                MyEntities.ReloadModelsInDraw();\n                ReloadModelsInDrawRequired = false;\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        /// <summary>\n        /// Draw\n        /// </summary>\n        /// <param name=\"bEditorActive\"></param>\n        public void Draw(bool bEditorActive)\n        {\n            MyEditorGrid.Draw();\n            //@ 844\n            if (bEditorActive && !IsBackgroundWorkThreadAlive())\n                MyPrefabContainerManager.GetInstance().DrawContainersBoundingArea();\n\n\n            if (!IsBackgroundWorkThreadAlive())\n            {\n                //draw all colliding objects\n                foreach (MyRBElement elementToDraw in m_collidingElements)\n                {\n                    Color color = new Color(new Vector4(0.9f, 0.1f, 0.1f, 0.7f));\n\n                    if (EditorFlashingCanHighlightEntity())\n                    {\n                        color = new Color(new Vector4(0.7f, 0.1f, 0.1f, 0.4f));                        \n                    }\n                    Vector4 colorVec = color.ToVector4();\n\n                    if (elementToDraw is MyRBBoxElement || elementToDraw is MyRBTriangleMeshElement || elementToDraw is MyRBVoxelElement)\n                    {\n                        MyEntity entity = (elementToDraw.GetRigidBody().m_UserData as MyPhysicsBody).Entity;\n                        DrawEntityAxes(entity, colorVec);\n\n                        BoundingBox localAABB = entity.WorldAABB;  \n\n                        Vector3 size = localAABB.Max - localAABB.Min;\n                        Vector3 center = size / 2f;\n                        center = center + localAABB.Min;\n\n                        Matrix tmpInv = Matrix.Identity;\n                        tmpInv.Translation = -center;\n                        BoundingBox localbox = localAABB.Transform(tmpInv);    //to local\n\n                        Matrix mat = Matrix.CreateTranslation(entity.LocalVolumeOffset) * entity.WorldMatrix;\n                        //MySimpleObjectDraw.DrawTransparentBox(ref mat, ref localbox, ref colorVec, false, 1);\n\n                    }\n\n                    if (elementToDraw is MyRBSphereElement)\n                    {\n                        MyEntity entity = (elementToDraw.GetRigidBody().m_UserData as MyPhysicsBody).Entity;\n                        float radi = (elementToDraw as MyRBSphereElement).Radius;\n\n                        Matrix mat = Matrix.CreateTranslation(entity.LocalVolumeOffset) * entity.WorldMatrix;\n                        //MySimpleObjectDraw.DrawTransparentSphere(ref mat, radi, ref colorVec, true, 24);\n                    }\n                }\n            }\n\n            // Draw prefab snap points\n            if (ShowSnapPoints && bEditorActive)\n            {\n                DrawSnapPoints();\n            }\n        }\n\n        private void DrawEntityAxes(MyEntity entity, Vector4 color) \n        {\n            float sectorHalfSize = -MyMwcSectorConstants.SECTOR_SIZE / 2f;\n            Vector3 entityPos = entity.GetPosition();\n            Vector3 xAxisStart = new Vector3(sectorHalfSize, entityPos.Y, entityPos.Z);\n            Vector3 yAxisStart = new Vector3(entityPos.X, sectorHalfSize, entityPos.Z);\n            Vector3 zAxisStart = new Vector3(entityPos.X, entityPos.Y, sectorHalfSize);\n\n            // x axis\n            MyTransparentGeometry.AddLineBillboard(MyTransparentMaterialEnum.ProjectileTrailLine, color, xAxisStart, Vector3.Right, MyMwcSectorConstants.SECTOR_SIZE, 5f);\n            // y axis\n            MyTransparentGeometry.AddLineBillboard(MyTransparentMaterialEnum.ProjectileTrailLine, color, yAxisStart, Vector3.Up, MyMwcSectorConstants.SECTOR_SIZE, 5f);\n            // z axis\n            MyTransparentGeometry.AddLineBillboard(MyTransparentMaterialEnum.ProjectileTrailLine, color, zAxisStart, Vector3.Backward, MyMwcSectorConstants.SECTOR_SIZE, 5f);\n        }\n\n        private void DrawSnapPoints()\n        {\n            var inverseViewMatrix = Matrix.Invert(MyCamera.ViewMatrix);\n            var snapSize = MyPrefabSnapPoint.GetFixedSnapSize();\n            var screenScale = 2.0f * snapSize * (float)Math.Tan(MyCamera.Zoom.GetFOV() / 2) / MyMinerGame.ScreenSize.Y;\n            var container = GetEditedPrefabContainer();\n            if (container != null)\n            {\n                foreach (var child in container.Children)\n                {\n                    var prefab = child as MyPrefabBase;\n                    if (prefab != null)\n                    {\n                        foreach (var snapPoint in prefab.SnapPoints)\n                        {\n                            if (!snapPoint.Visible)\n                            {\n                                continue;\n                            }\n\n                            if (MyEditorGizmo.SelectedSnapPoint != null &&\n                                snapPoint != MyEditorGizmo.SelectedSnapPoint &&             // Draw selected snap point\n                                !MyEditorGizmo.SelectedSnapPoint.CanAttachTo(snapPoint))\n                            {\n                                continue;\n                            }\n\n                            var link = GetSnapPointLink(snapPoint);\n\n                            Vector4 color = Vector4.One;\n                            int priority = 2;\n                            if (snapPoint == MyEditorGizmo.SelectedSnapPoint)\n\t                        {\n                                color = MyGuiConstants.SNAP_POINT_SELECTED_COLOR;\n                                priority = 4;\n\t                        }\n                            else if (link != null)    // Linked snap point\n\t                        {\n                                color = link.Count > 2 ? MyGuiConstants.SNAP_POINT_MULTI_LINKED_COLOR : MyGuiConstants.SNAP_POINT_LINKED_COLOR;\n                                priority = 2;\n\t                        }\n\n                            Vector3 snapPosition = Vector3.Transform(snapPoint.Matrix.Translation, prefab.WorldMatrix);\n\n                            float billboardSize;\n                            if (FixedSizeSnapPoints)\n                            {\n                                float cameraDistance = Math.Abs(Vector3.Dot(inverseViewMatrix.Forward, snapPosition - MyCamera.Position));\n                                billboardSize = screenScale * cameraDistance;\n                            }\n                            else\n                            {\n                                billboardSize = MyPrefabSnapPoint.GetRealSnapSize();\n                            }\n\n                            MyTransparentGeometry.AddBillboardOriented(MyTransparentMaterialEnum.snap_point, color, snapPosition,\n                                inverseViewMatrix.Left, inverseViewMatrix.Up, billboardSize, priority);\n                        }\n\n                    }\n                }\n            }\n        }\n\n        /// <summary>\n        /// This method is responsible for drawing or invoking draw of visual controls or info, like helper texts, selection rectangle and objects bounding\n        /// </summary>\n        public void DrawVisualControls()\n        {\n            // Not need to draw this while background thread is running\n            if (IsBackgroundWorkThreadAlive() == false)\n            {\n                MyEditorGizmo.Draw();\n                //MyEditorVoxelHand.Draw();\n                //m_mouseMoveInputTool.get\n                MyEntity moEntity = m_mouseMoveInputTool.GetMouseOverEntity();\n                if (GetEditedPrefabContainer() != null)\n                {\n                    if (moEntity is MyPrefabBase)\n                    {\n                        if (moEntity.Parent == GetEditedPrefabContainer())\n                        {\n                            m_mouseMoveInputTool.DrawMouseOver();\n                        }\n                    }\n                }\n                else\n                    m_mouseMoveInputTool.DrawMouseOver();\n            }\n        }\n\n        /// <summary>\n        /// This method takes care of drawing rectangle, that is drawn by dragging mouse to select multiple objects inside rectangle\n        /// </summary>\n        private void DrawSelectionRectangle()\n        {\n            if (IsSelectingByRectangle())\n            {\n                MyDebugDraw.DrawLine2D(new Vector2(m_selectionRectangle.Left, m_selectionRectangle.Top), new Vector2(m_selectionRectangle.Right, m_selectionRectangle.Top), Color.Green, Color.Green);\n                MyDebugDraw.DrawLine2D(new Vector2(m_selectionRectangle.Right, m_selectionRectangle.Top), new Vector2(m_selectionRectangle.Right, m_selectionRectangle.Bottom), Color.Green, Color.Green);\n                MyDebugDraw.DrawLine2D(new Vector2(m_selectionRectangle.Right, m_selectionRectangle.Bottom), new Vector2(m_selectionRectangle.Left, m_selectionRectangle.Bottom), Color.Green, Color.Green);\n                MyDebugDraw.DrawLine2D(new Vector2(m_selectionRectangle.Left, m_selectionRectangle.Bottom), new Vector2(m_selectionRectangle.Left, m_selectionRectangle.Top), Color.Green, Color.Green);\n            }\n        }\n\n\n        /// <summary>\n        /// DrawSelectedBounding\n        /// </summary>\n        private void DrawSelectedBounding()\n        {\n            //0001662: BUG C - Editor - unselected bounding box of object get lost after copying object\n            if (false && MyConfig.EditorDisplayUnselectedBounding)\n            {\n                Vector4 color = new Vector4(0.6f, 0.6f, 0.6f, 0.2f);\n                foreach (MyEntity entity in MyEntities.GetEntities())\n                {\n                    entity.DebugDrawBox(color, false);\n                }\n\n                foreach (MyVoxelMap voxelMap in MyVoxelMaps.GetVoxelMaps())\n                {\n                    MyDebugDraw.DrawHiresBoxWireframe(Matrix.CreateScale(voxelMap.LocalAABB.Max - voxelMap.LocalAABB.Min) * voxelMap.WorldMatrix, new Vector3(0, 0.4f, 0), 0.3f);\n                }\n            }\n                \n            /* We dont want sel.box for prefab container atm\n            if (IsEditingPrefabContainer())\n            {\n                m_activePrefabContainer.DrawSelectionBox(new Vector4(1, 1, 0, 0.4f));\n            } \n\n            foreach (MyEntity entity in MyEditorGizmo.SelectedEntities)\n            {\n                if (entity is MyPrefabContainer)\n                {\n                    MyPrefabContainer container = (MyPrefabContainer)entity;\n                    container.DrawSelectionBox(new Vector4(0, 1, 0, 0.4f));\n                }\n            } */\n        }\n\n        #endregion\n\n        #region Background Thread Methods\n\n        /// <summary>\n        /// Start background thread\n        /// </summary>\n        /// <param name=\"thread\"></param>\n        public void StartBackgroundThread(Thread thread)\n        {\n            System.Diagnostics.Debug.Assert(BackgroundWorkThread == null || !BackgroundWorkThread.IsAlive);\n\n            MyRender.Enabled = false;\n            BackgroundWorkThread = thread;\n            BackgroundWorkThread.IsBackground = true;\n            BackgroundWorkThread.Start();\n        }\n\n        /// <summary>\n        /// When background thread has finished its work, call this method to stop it\n        /// </summary>\n        public void StopBackgroundWorkThread()\n        {\n            BackgroundWorkThread.Abort();\n            BackgroundWorkThread.Join();\n            BackgroundWorkThread = null;\n            MyRender.Enabled = true;\n        }\n\n        /// <summary>\n        /// Check if background thread is alive\n        /// </summary>\n        /// <returns></returns>\n        public bool IsBackgroundWorkThreadAlive()\n        {\n            return BackgroundWorkThread != null && BackgroundWorkThread.IsAlive == true;\n        }\n\n        /// <summary>\n        /// Check if background thread is not alive anymore\n        /// </summary>\n        /// <returns></returns>\n        public bool IsBackgroundWorkThreadNotAlive()\n        {\n            return BackgroundWorkThread != null && BackgroundWorkThread.IsAlive == false;\n        }\n\n        #endregion\n\n        #region Selection Methods\n\n        public static void SaveSelectedVoxelMap(bool saveVoxelMaterials)\n        {\n            var firstVoxel = MyEditorGizmo.SelectedEntities.OfType<MyVoxelMap>().FirstOrDefault();\n            if (firstVoxel != null)\n            {\n                firstVoxel.SaveVoxelContents(Path.Combine(MyFileSystemUtils.GetApplicationUserDataFolder(), \"voxel_export.vox\"), saveVoxelMaterials);\n                MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.MESSAGE, MyTextsWrapperEnum.Ok, MyTextsWrapperEnum.Ok, MyTextsWrapperEnum.Ok, null));\n            }\n        }\n\n        /// <summary>\n        /// IMPORTANT!! Invoke this method to copy objects in editor\n        /// </summary>\n        /// <param name=\"waitForAttachment\"></param>\n        public bool CopySelected(bool waitForAttachment)\n        {\n            bool valid = true;\n            m_bInsertFromGuiFlag = false;\n\n            if (MyFakes.ENABLE_OBJECT_COUNTS_LIMITS)\n            {\n                //here test if we can even add entity\n                if (!IsEditingPrefabContainer() && MyEntities.GetObjectsCount() + MyEditorGizmo.SelectedEntities.Count > MyEditorConstants.MAX_EDITOR_ENTITIES_LIMIT)\n                {\n                    MyAudio.AddCue2D(MySoundCuesEnum.GuiEditorObjectMoveInvalid);\n                    MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.MaxObjectsReached, MyTextsWrapperEnum.MessageBoxCaptionError, MyTextsWrapperEnum.Ok, null));\n                    return false;\n                }\n\n                //test max count of containers in scene\n                if (MyEditorGizmo.SelectedEntities.Find(a => a is MyPrefabContainer) != null &&\n                    MyPrefabContainerManager.GetInstance().GetContainerCount() + MyEditorGizmo.SelectedEntities.FindAll(a => a is MyPrefabContainer).Count >= MyEditorConstants.MAX_CONTAINER_NUMBER)\n                {\n                    MyAudio.AddCue2D(MySoundCuesEnum.GuiEditorObjectMoveInvalid);\n                    MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.MaxObjectsReached, MyTextsWrapperEnum.MessageBoxCaptionError, MyTextsWrapperEnum.Ok, null));\n                    return false;\n                }\n            }\n\n            \n            //test if we are in ingame and have prebuilded exact prefabs\n            if (MyGuiScreenGamePlay.Static.IsIngameEditorActive())\n            {\n                //List<MyInventoryItem> prefabInventoryItems = MyEditor.Static.FoundationFactory.Inventory.GetInventoryItems(objectToBuild.ObjectBuilder);\n                //Dictionary<MyMwcObjectBuilder_Prefab_TypesEnum, int> dict = new Dictionary<MyMwcObjectBuilder_Prefab_TypesEnum, int>();\n                int[][] dict = new int[MyMwcUtils.GetMaxValueFromEnum<MyMwcObjectBuilderTypeEnum>() + 1][];\n                Dictionary<int, MyMwcObjectBuilderTypeEnum> dict2 = new Dictionary<int,MyMwcObjectBuilderTypeEnum>();                \n\n                foreach(MyEntity ent in MyEditorGizmo.SelectedEntities)\n                {\n                    if (!(ent.GetObjectBuilder(false) is MyMwcObjectBuilder_PrefabBase))\n                        continue;\n                    MyMwcObjectBuilder_PrefabBase s = ent.GetObjectBuilder(false) as MyMwcObjectBuilder_PrefabBase;\n\n                    if (dict[(int)s.GetObjectBuilderType()] == null)\n                    {\n                        dict[(int)s.GetObjectBuilderType()] = new int[MyMwcObjectBuilder_Base.GetObjectBuilderIDs(s.GetObjectBuilderType()).Max() + 1];\n                        dict2.Add(s.GetObjectBuilderId().Value, s.GetObjectBuilderType());\n                    }\n\n                    //if (!dict.ContainsKey(s.PrefabType))\n                    //{\n                    //    dict.Add(s.PrefabType, 0);\n                    //    dict2.Add(s.GetObjectBuilderId().Value, s.GetObjectBuilderType());\n                    //}\n                    //dict[s.PrefabType] += 1;\n                    dict[(int) s.GetObjectBuilderType()][s.GetObjectBuilderId().Value] += 1;\n                }\n\n                for (int prefabType = 0; prefabType < dict.Length; prefabType++)\n                {\n                    if (dict[prefabType] != null)\n                    {\n                        for (int prefabId = 0; prefabId < dict[prefabType].Length; prefabId++)\n                        {\n                            if (dict[prefabType][prefabId] > 0)\n                            {                                \n                                int prefabInventoryItemsCount = MyEditor.Static.FoundationFactory.PrefabContainer.Inventory.GetInventoryItemsCount((MyMwcObjectBuilderTypeEnum)prefabType, prefabId);\n                                if (prefabInventoryItemsCount < dict[prefabType][prefabId])\n                                {\n                                    MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.CannotCopyBecauseYouDontHaveEnoughObjectsStored, MyTextsWrapperEnum.MessageBoxCaptionError, MyTextsWrapperEnum.Ok, null));\n                                    return false;\n                                }\n                            }\n                        }\n                    }\n                }\n\n                for (int prefabType = 0; prefabType < dict.Length; prefabType++)\n                {\n                    if (dict[prefabType] != null)\n                    {\n                        for (int prefabId = 0; prefabId < dict[prefabType].Length; prefabId++)\n                        {\n                            if (dict[prefabType][prefabId] > 0)\n                            {\n                                MyEditor.Static.FoundationFactory.PrefabContainer.Inventory.RemoveInventoryItemAmount((MyMwcObjectBuilderTypeEnum)prefabType, prefabId, dict[prefabType][prefabId]);\n                            }\n                        }\n                    }\n                }\n\n                //foreach (MyMwcObjectBuilder_Prefab_TypesEnum e in dict.Keys)\n                //    {\n                //        List<MyInventoryItem> prefabInventoryItems = MyEditor.Static.FoundationFactory.PrefabContainer.Inventory.GetInventoryItems(dict2[(int)e], (int)e);\n                //        if (prefabInventoryItems.Count < dict[e])\n                //        {\n                //            MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyTextsWrapperEnum.CannotCopyBecauseYouDontHaveEnoughObjectsStored, MyTextsWrapperEnum.MessageBoxCaptionError, MyTextsWrapperEnum.Ok, null));\n                //            return false;\n                //        }\n                //    }\n                //foreach (MyMwcObjectBuilder_Prefab_TypesEnum e in dict.Keys)\n                //{\n                //    MyEditor.Static.FoundationFactory.PrefabContainer.Inventory.RemoveInventoryItemAmount(dict2[(int)e], (int)e, dict[e]);\n                //}\n            }\n            \n\n            //test voxel hand shapes \n            int voxelShapes = 0;\n            foreach (MyEntity ent in MyEditorGizmo.SelectedEntities)\n            {\n                if (ent is MyVoxelMap)\n                    voxelShapes += (ent as MyVoxelMap).GetVoxelHandShapes().Count;\n            }\n            if (voxelShapes + MyVoxelMaps.GetVoxelShapesCount() > MyVoxelConstants.MAX_VOXEL_HAND_SHAPES_COUNT)\n            {\n                MyAudio.AddCue2D(MySoundCuesEnum.GuiEditorObjectMoveInvalid);\n                MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.CannotCopyBecauseMaxVoxelShapesReached, MyTextsWrapperEnum.MessageBoxCaptionError, MyTextsWrapperEnum.Ok, null));\n                return false;\n            }\n\n\n            // first remove all weapon prefab childs & objects:\n            for (int i = 0; i < MyEditorGizmo.SelectedEntities.Count; ++i)\n            {\n                if (MyEditorGizmo.SelectedEntities[i] is MyLargeShipGunBase)\n                {\n                    MyEditorGizmo.RemoveEntityFromSelection(MyEditorGizmo.SelectedEntities[i]);\n                    //MyEditorGizmo.SelectedEntities.RemoveAt(i);\n                    if (i > 0) --i;\n                }\n\n                if (MyEditorGizmo.SelectedEntities.Count == 0)\n                {\n                    return false;\n                }\n\n                if (MyEditorGizmo.SelectedEntities[i] == MySession.PlayerShip)\n                {\n                    if (MyEditorGizmo.SelectedEntities.Count > 1)\n                    {\n                        //MyEditorGizmo.SelectedEntities.RemoveAt(i);\n                        MyEditorGizmo.RemoveEntityFromSelection(MyEditorGizmo.SelectedEntities[i]);\n                        if (i > 1) --i;\n                        MySession.PlayerShip.ClearHighlightning();\n                    }\n                    else\n                    {\n                        valid = false;\n                    }\n                }\n\n                var dummyPoint = MyEditorGizmo.SelectedEntities[i] as MyDummyPoint;\n                if (dummyPoint != null && (dummyPoint.DummyFlags & MyDummyPointFlags.PLAYER_START) > 0)\n                {\n                    if (MyEditorGizmo.SelectedEntities.Count > 1)\n                    {\n                        //MyEditorGizmo.SelectedEntities.RemoveAt(i);\n                        MyEditorGizmo.RemoveEntityFromSelection(MyEditorGizmo.SelectedEntities[i]);\n                        if (i > 1) --i;\n                        dummyPoint.ClearHighlightning();\n                    }\n                    else\n                    {\n                        valid = false;\n                    }\n                }\n            }\n\n            if (MyEditorGizmo.SelectedEntities.Count == 0)\n            {\n                return false;\n            }\n\n            foreach (MyEntity physObject in MyEditorGizmo.SelectedEntities)\n            {\n                //if (IsValidForCreation(physObject.GetObjectBuilder(false), physObject.WorldMatrix) == false)\n                //{\n                //    valid = false;\n                //    break;\n                //}\n                if(!IsValidForCreation(MyEditorGizmo.SelectedEntities))\n                {\n                    valid = false;\n                    break;\n                }\n            }\n\n            //are we in container? \n            if (MyFakes.ENABLE_OBJECT_COUNTS_LIMITS)\n            {\n                if (IsEditingPrefabContainer())\n                {\n                    MyPrefabContainer container = GetEditedPrefabContainer();\n                    if (container.Children.Count + MyEditorGizmo.SelectedEntities.Count > MyPrefabContainerConstants.MAX_PREFABS_IN_CONTAINER)\n                    {\n                        valid = false;\n                        MyAudio.AddCue2D(MySoundCuesEnum.GuiEditorObjectMoveInvalid);\n                        MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.MaxObjectsReached, MyTextsWrapperEnum.MessageBoxCaptionError, MyTextsWrapperEnum.Ok, null));\n                    }\n                }\n            }\n\n            if (valid)\n            {\n                MyEditorActionEntityCopy copyAction = new MyEditorActionEntityCopy(MyEditorGizmo.SelectedEntities);\n                copyAction.RegisterAndDoAction();\n                m_waitingForAtachment = waitForAttachment;\n            }\n            return valid;\n        }\n\n        /// <summary>\n        /// Open edit entity screen based on the type of entity selected\n        /// </summary>\n        public void EditSelected()\n        {\n            if (MyEditorGizmo.IsOnlyOneEntitySelected())\n            {\n                MyEntity selectedEntity = MyEditorGizmo.GetFirstSelected();\n                ////disabled 0001713: BUG B - Editor - buttons OK and CANCEL missing in asteroid 'edit select' dialogbox\n                /*\n                if (selectedEntity is MyVoxelMap || selectedEntity is MyStaticAsteroid)\n                {\n                    MyGuiManager.AddScreen(new MyGuiScreenEditorAsteroid(selectedEntity as MyVoxelMap));\n                }\n                ////disabled by bug \t0001712: BUG A - Editor - crash after 'edit select' of largeship (also smallship, debris)\n                \n                else if (selectedEntity is MyLargeShip)\n                {\n                    MyGuiManager.AddScreen(new MyGuiScreenEditorLargeShip(selectedEntity as MyLargeShip));\n                }\n                else if (selectedEntity is MySmallShip)\n                {\n                    MyGuiManager.AddScreen(new MyGuiScreenEditorSmallShip(selectedEntity as MySmallShip));\n                }\n                else if (selectedEntity is MySmallDebris)\n                {\n                    MyGuiManager.AddScreen(new MyGuiScreenEditorSmallDebris(selectedEntity as MySmallDebris));\n                }\n                if (selectedEntity is MyWayPoint)\n                {\n                    MyGuiManager.AddScreen(new MyGuiScreenEditorWayPoint(selectedEntity as MyWayPoint));\n                }\n                */\n                if (selectedEntity is MySmallShipBot)\n                {\n                    MyGuiManager.AddScreen(new MyGuiScreenEditorSmallShip((selectedEntity as MySmallShipBot)));\n                }\n                else if (selectedEntity is MySpawnPoint)\n                {\n                    MyGuiManager.AddScreen(new MyGuiScreenEditorSpawnPoint(selectedEntity as MySpawnPoint));\n                }\n                if (selectedEntity is MyPrefabLight)\n                {\n                    List<MyPrefabLight> lights = new List<MyPrefabLight>{selectedEntity as MyPrefabLight};\n                    MyGuiScreenGamePlay.Static.EditorControls.EditLights(lights);\n                }\n                else if (selectedEntity is MyPrefabSecurityControlHUB)\n                {\n                    MyGuiManager.AddScreen(new MyGuiScreenEditorSecurityControlHUB(selectedEntity as MyPrefabSecurityControlHUB));\n                }\n                else if (selectedEntity is MyPrefabScanner)\n                {\n                    MyGuiManager.AddScreen(new MyGuiScreenEditorScanner(selectedEntity as MyPrefabScanner));\n                }\n                else if (selectedEntity is MyPrefabLargeWeapon) \n                {\n                    MyGuiManager.AddScreen(new MyGuiScreenEditorLargeWeapon(new List<MyPrefabLargeWeapon>{selectedEntity as MyPrefabLargeWeapon}));\n                }\n                else if (selectedEntity is MyPrefabBase)\n                {\n                    MyGuiManager.AddScreen(new MyGuiScreenEditorPrefab(selectedEntity as MyPrefabBase));\n                }\n                else if (selectedEntity is MyInfluenceSphere)\n                {\n                    MyGuiManager.AddScreen(new MyGuiScreenEditorInfluenceSphere(selectedEntity as MyInfluenceSphere));\n                }\n                else if (selectedEntity is MyDummyPoint)\n                {\n                    MyGuiManager.AddScreen(new MyGuiScreenEditorDummyPoint(selectedEntity as MyDummyPoint));\n                }\n                else if (selectedEntity is MyVoxelMap)\n                {\n                    MyGuiManager.AddScreen(new MyGuiScreenEditorAsteroid(selectedEntity as MyVoxelMap));\n                }\n                else if (selectedEntity is MyStaticAsteroid)\n                {\n                    MyGuiManager.AddScreen(new MyGuiScreenEditorAsteroid(selectedEntity as MyStaticAsteroid));\n                }\n                else if (selectedEntity is MyCargoBox)\n                {\n                    MyGuiManager.AddScreen(new MyGuiScreenEditorCargoBox(selectedEntity as MyCargoBox));\n                }\n                else if (selectedEntity is MyPrefabContainer)\n                {\n                    MyGuiManager.AddScreen(new MyGuiScreenEditorPrefabContainer(selectedEntity as MyPrefabContainer));\n                }\n                else if (selectedEntity is MyWayPoint)\n                {\n                    MyGuiManager.AddScreen(new MyGuiScreenEditorWaypoint(selectedEntity as MyWayPoint));\n                }\n            }\n            else if (MyEditorGizmo.IsOnlyOneEntityTypeSelected())\n            {\n                MyEntity selectedEntity = MyEditorGizmo.GetFirstSelected();\n                if (selectedEntity is MyPrefabLight)\n                {\n                    List<MyPrefabLight> lights = new List<MyPrefabLight>();\n                    foreach (MyEntity entity in MyEditorGizmo.SelectedEntities) \n                    {\n                        lights.Add((MyPrefabLight)entity);\n                    }\n                    MyGuiScreenGamePlay.Static.EditorControls.EditLights(lights);\n                }\n                if (selectedEntity is MyPrefabLargeWeapon) \n                {\n                    List<MyPrefabLargeWeapon> largeWeapons = new List<MyPrefabLargeWeapon>();\n                    foreach (MyEntity entity in MyEditorGizmo.SelectedEntities)\n                    {\n                        largeWeapons.Add((MyPrefabLargeWeapon)entity);\n                    }\n                    MyGuiManager.AddScreen(new MyGuiScreenEditorLargeWeapon(largeWeapons));\n                }\n                if (selectedEntity is MyWayPoint)\n                {\n                    MyGuiManager.AddScreen(new MyGuiScreenEditorWaypoint(MyEditorGizmo.SelectedEntities.ConvertAll<MyWayPoint>(a => a as MyWayPoint)));\n                }\n            }\n        }\n\n        /// <summary>\n        /// True if edit dialog is available\n        /// </summary>\n        public bool CanEditSelected()\n        {\n            if (MyEditorGizmo.IsOnlyOneEntitySelected())\n            {\n                MyEntity selectedEntity = MyEditorGizmo.GetFirstSelected();\n                return\n                    /*\n                    //disabled 0001713: BUG B - Editor - buttons OK and CANCEL missing in asteroid 'edit select' dialogbox\n                    selectedEntity is MyStaticAsteroid ||\n                    //disabled by bug \t0001712: BUG A - Editor - crash after 'edit select' of largeship (also smallship, debris)\n                    selectedEntity is MyLargeShip ||\n                    selectedEntity is MySmallDebris ||\n                    */\n                    selectedEntity is MySmallShipBot ||\n                    selectedEntity is MyVoxelMap ||\n                    selectedEntity is MyStaticAsteroid ||\n                    selectedEntity is MyPrefabLight ||\n                    selectedEntity is MySpawnPoint ||\n                    selectedEntity is MyWayPoint ||\n                    selectedEntity is MyInfluenceSphere ||\n                    selectedEntity is MyDummyPoint ||\n                    selectedEntity is MyPrefabSecurityControlHUB ||\n                    selectedEntity is MyCargoBox ||\n                    selectedEntity is MyPrefabScanner ||                    \n                    selectedEntity is MyPrefabBase || \n                    selectedEntity is MyPrefabContainer;\n            }\n            else if(MyEditorGizmo.IsOnlyOneEntityTypeSelected())\n            {\n                MyEntity selectedEntity = MyEditorGizmo.GetFirstSelected();\n                return selectedEntity is MyPrefabLight || \n                       selectedEntity is MyPrefabLargeWeapon;\n            }\n            return false;\n        }\n\n        /// <summary>\n        /// True if selected snap point is linked\n        /// </summary>\n        public bool CanUnlinkSnapPoints(MyPrefabSnapPoint snapPoint)\n        {\n            return snapPoint != null && LinkedSnapPoints.Exists(a => a.Exists(b => b.SnapPoint == snapPoint));\n        }\n\n\n        /// <summary>\n        /// True if selected snap point is linked\n        /// </summary>\n        public List<MySnapPointLink> GetSnapPointLink(MyPrefabSnapPoint snapPoint)\n        {\n            return snapPoint != null ? LinkedSnapPoints.Find(a => a.Exists(b => b.SnapPoint == snapPoint)) : null;\n        }\n\n        /// <summary>\n        /// True if linked entity is linked with some prefab\n        /// </summary>\n        public bool IsLinked(MyEntity myEntity)\n        {\n            return LinkedSnapPoints.Exists(a => a.Exists(b => b.SnapPoint.Prefab == myEntity));\n        }\n\n        /// <summary>\n        /// Try link two or more snap points, works with selected snap point\n        /// </summary>\n        public void LinkSnapPoints()\n        {\n            List<MySnapPointLink> snapPointLinks = new List<MySnapPointLink>();\n            if (MyEditorGizmo.SelectedSnapPoint != null)\n            {\n                UnlinkSnapPointsAtPosition();\n\n                var selectedSnapPointsWorldPosition = (MyEditorGizmo.SelectedSnapPoint.Matrix * MyEditorGizmo.SelectedSnapPoint.Prefab.WorldMatrix).Translation;\n                Debug.Assert(GetEditedPrefabContainer() != null);\n                foreach (var entity in GetEditedPrefabContainer().Children)\n                {\n                    var prefab = entity as MyPrefabBase;\n                    if (prefab != null)\n                    {\n                        foreach (var snapPoint in prefab.SnapPoints)\n                        {\n                            var snapPointWorldPosition = (snapPoint.Matrix * snapPoint.Prefab.WorldMatrix).Translation;\n\n                            // Link two snap points if distance between them is less then 1.0m\n                            // Selected snap point is added also here to snapPoints list\n                            if ((selectedSnapPointsWorldPosition - snapPointWorldPosition).LengthSquared() < 1.0f)\n                            {\n                                snapPointLinks.Add(new MySnapPointLink(snapPoint));\n                            }\n                        }\n                    }\n                }\n\n                if (snapPointLinks.Count >= 2)\n                {\n                    if (CanLinkSnapPoints(snapPointLinks.ConvertAll(a => a.SnapPoint)))\n                    {\n                        AddLinkedSnapPoints(snapPointLinks);\n\n                        // Update highlighting\n                        MyEditorGizmo.SelectedSnapPoint = MyEditorGizmo.SelectedSnapPoint;\n                    }\n                    else\n                    {\n                        MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.SnapPointLinkError, MyTextsWrapperEnum.LinkSnapPoints, MyTextsWrapperEnum.Ok, null));\n                    }\n                }\n            }\n        }\n\n        /// <summary>\n        /// Unlink two or more snap points, works with selected snap point\n        /// </summary>\n        public void UnlinkSnapPoints()\n        {\n            if (CanUnlinkSnapPoints(MyEditorGizmo.SelectedSnapPoint))\n            {\n                var snapPoint = MyEditorGizmo.SelectedSnapPoint;\n                // Update highlighting\n                MyEditorGizmo.SelectedSnapPoint = null;\n                RemoveAllLinkedSnapPoints(b => b.SnapPoint == snapPoint);\n                MyEditorGizmo.SelectedSnapPoint = snapPoint;\n            }\n        }\n\n        /// <summary>\n        /// Unlink two or more snap points at position specified by selected snap point\n        /// </summary>\n        public void UnlinkSnapPointsAtPosition()\n        {\n            if (MyEditorGizmo.SelectedSnapPoint != null)\n            {\n                var snapPoint = MyEditorGizmo.SelectedSnapPoint;\n                var snapPointWorldPosition = (snapPoint.Matrix * snapPoint.Prefab.WorldMatrix).Translation;\n\n                // Update highlighting\n                MyEditorGizmo.SelectedSnapPoint = null;\n                RemoveAllLinkedSnapPoints(b =>\n                {\n                    var bWorldPosition = (b.SnapPoint.Matrix * b.SnapPoint.Prefab.WorldMatrix).Translation;\n                    return (snapPointWorldPosition - bWorldPosition).LengthSquared() < 1.0f;\n                });\n                MyEditorGizmo.SelectedSnapPoint = snapPoint;\n            }\n        }\n\n        /// <summary>\n        /// Adds linked prefabs to entity list\n        /// </summary>\n        public void AddLinkedEntities(List<MyEntity> entities)\n        {\n            List<MyEntity> addedEntities = new List<MyEntity>();\n            foreach (var entity in entities)\n            {\n                List<MyEntity> linkedEntities = new List<MyEntity>();\n                GetLinkedEntities(entity, linkedEntities, null);\n\n                foreach (var linkedEntity in linkedEntities)\n                {\n                    if (!entities.Contains(linkedEntity) && !addedEntities.Contains(linkedEntity))\n                    {\n                        addedEntities.Add(linkedEntity);\n                    }\n                }\n            }\n\n            entities.AddRange(addedEntities);\n        }\n\n        public void GetLinkedEntities(MyEntity entity, List<MyEntity> result, MyPrefabSnapPoint ignoreSnapPoint)\n        {\n            var prefab = entity as MyPrefabBase;\n            if (prefab != null)\n            {\n                foreach (var snapPoint in prefab.SnapPoints)\n                {\n                    if (snapPoint == ignoreSnapPoint)\n                    {\n                        continue;\n                    }\n\n                    // Get groups of linked snap points in which current snap point is presented\n                    var linkGroups = LinkedSnapPoints.FindAll(a => a.Exists(b => b.SnapPoint == snapPoint));\n\n                    // Get all linked entities to this snap point\n                    foreach (var links in linkGroups)\n                    {\n                        foreach (var snapPointLink in links)\n                        {\n                            if (snapPointLink.SnapPoint.Prefab != entity)\n                            {\n                                Debug.Assert(!result.Contains(snapPointLink.SnapPoint.Prefab));\n                                result.Add(snapPointLink.SnapPoint.Prefab);\n\n                                // Recursively continue addition of entities\n                                GetLinkedEntities(snapPointLink.SnapPoint.Prefab, result, snapPointLink.SnapPoint);\n                            }\n                        }\n                    }\n                }\n            }\n        }\n\n        /// <summary>\n        /// Method for transformation of linked entities\n        /// recursive stitching solves precision problems\n        /// </summary>\n        public void FixLinkedEntities(MyEntity entity, List<MyEntity> result, MyPrefabSnapPoint ignoreSnapPoint)\n        {\n            var prefab = entity as MyPrefabBase;\n            if (prefab != null)\n            {\n                foreach (var snapPoint in prefab.SnapPoints)\n                {\n                    if (snapPoint == ignoreSnapPoint)\n                    {\n                        continue;\n                    }\n\n                    List<MySnapPointLink> links;\n                    if (SnapPointLinks.TryGetValue(snapPoint, out links))\n                    {\n\n                        // Get groups of linked snap points in which current snap point is presented\n                        //var linkGroups = GetLinks(snapPoint);\n\n                        // Get all linked entities to this snap point\n                        //foreach (var links in linkGroups)\n                        {\n                            var link = links.Find(a => a.SnapPoint.Prefab == entity);\n\n                            foreach (var snapPointLink in links)\n                            {\n                                if (snapPointLink.SnapPoint != snapPoint)\n                                {\n                                    snapPointLink.SnapPoint.Prefab.WorldMatrix =\n                                        snapPointLink.LinkTransformation * Matrix.Invert(link.LinkTransformation) * entity.WorldMatrix;\n\n                                    //// Stitch snap points\n                                    //AttachSnapPoints(snapPoint, snapPointLink.SnapPoint, false);\n\n                                    // Add stitched prefab to affected prefabs list\n                                    Debug.Assert(!result.Contains(snapPointLink.SnapPoint.Prefab));\n                                    result.Add(snapPointLink.SnapPoint.Prefab);\n\n                                    // Recursively continue stitching\n                                    FixLinkedEntities(snapPointLink.SnapPoint.Prefab, result, snapPointLink.SnapPoint);\n                                }\n                            }\n                        }\n                    }\n                }\n            }\n        }\n\n        private List<List<MySnapPointLink>> GetLinks(MyPrefabSnapPoint snapPoint)\n        {\n            return LinkedSnapPoints.FindAll(a => a.Exists(b => b.SnapPoint == snapPoint));\n        }\n\n        private bool CanLinkSnapPoints(MyPrefabSnapPoint firstSnapPoint, MyPrefabSnapPoint secondSnapPoint)\n        {\n            //it's not possible to link a snapPoint to itself\n            if (firstSnapPoint == secondSnapPoint) return false;\n            \n            List<MyEntity> linkedEntities = new List<MyEntity>();\n            GetLinkedEntities(firstSnapPoint.Prefab, linkedEntities, null);\n\n            // return false if connection of these two snap point would mean cycle\n            return !linkedEntities.Contains(secondSnapPoint.Prefab);\n        }\n\n        private bool CanLinkSnapPoints(List<MyPrefabSnapPoint> snapPoints)\n        {\n            Debug.Assert(snapPoints.Count >= 2);\n            List<MyEntity> linkedEntities = new List<MyEntity>();\n            for (int i = 0; i < snapPoints.Count - 1; i++)\n\t\t\t{\n                GetLinkedEntities(snapPoints[i].Prefab, linkedEntities, null);\n                if (linkedEntities.Contains(snapPoints[i+1].Prefab))\n                {\n                    // return false if connection of this snap point would mean cycle\n                    return false;\n                }\n\t\t\t}\n            return true;\n        }\n\n        /// <summary>\n        /// Attach two snap points, both must be not null and connectable\n        /// </summary>\n        public void AttachSnapPoints(MyPrefabSnapPoint firstSnapPoint, MyPrefabSnapPoint secondSnapPoint, bool affectLinkedEntities)\n        {\n            // Attach prefabs\n            Matrix first = firstSnapPoint.Matrix * firstSnapPoint.Prefab.WorldMatrix;\n            Matrix secondReversed = Matrix.CreateWorld(secondSnapPoint.Matrix.Translation, -secondSnapPoint.Matrix.Forward, secondSnapPoint.Matrix.Up);\n            Matrix second = secondReversed * secondSnapPoint.Prefab.WorldMatrix;\n\n            Vector3 firstWorld = first.Translation;\n            Vector3 secondWorld = second.Translation;\n\n            first.Translation = Vector3.Zero;\n            second.Translation = Vector3.Zero;\n\n            Matrix deltaRotation = Matrix.Invert(second) * first;\n\n            secondSnapPoint.Prefab.WorldMatrix =\n                secondSnapPoint.Prefab.WorldMatrix *\n                Matrix.CreateTranslation(-secondWorld) *\n                deltaRotation *\n                Matrix.CreateTranslation(firstWorld);\n\n            if (affectLinkedEntities)\n            {\n                List<MyEntity> linkedEntities = new List<MyEntity>();\n                FixLinkedEntities(secondSnapPoint.Prefab, linkedEntities, null);\n            }\n        }\n\n        // Return waypoints corresponding to snap points (by prefab parent and distance).\n        private List<MyWayPoint> GetWayPointsAtSnapPointLinks(List<MySnapPointLink> snapPointLinks)\n        {\n            var wayPoints = new List<MyWayPoint>();\n\n            foreach (var snapPointLink in snapPointLinks)\n            {\n                MyPrefabSnapPoint snapPoint = snapPointLink.SnapPoint;\n                var position = (snapPoint.Matrix * snapPoint.Prefab.WorldMatrix).Translation;\n\n                MyWayPoint closest = snapPoint.Prefab.GetClosestWayPointTo(position);\n                if (closest == null)\n                {\n                    closest = MyWayPointGraph.GetClosestWaypoint(position);  // if there's nothing in the prefab, try the closest waypoint outside\n                }\n                if (closest != null) wayPoints.Add(closest);\n\n                wayPoints.AddRange(MyWayPointGraph.GetAllWaypointsInSphere(position, 40.0f));\n            }\n\n            return wayPoints;\n        }\n\n        public void ConnectWayPointsAtSnapPointLinks(List<MySnapPointLink> snapPointLinks)\n        {\n            var wayPoints = GetWayPointsAtSnapPointLinks(snapPointLinks);\n\n            // connect the waypoints by a ring - no need to add the complete graph\n            MyWayPoint prev = wayPoints.Count > 0 ? wayPoints[wayPoints.Count - 1] : null;\n            foreach (var current in wayPoints)\n            {\n                if (prev != null) MyWayPoint.Connect(prev, current);\n                prev = current;\n            }\n        }\n\n        private void DisconnectWayPointsAtSnapPointLinks(List<MySnapPointLink> snapPointLinks)\n        {\n            var wayPoints = GetWayPointsAtSnapPointLinks(snapPointLinks);\n            MyWayPoint.DisconnectAll(wayPoints);\n        }\n\n        public void AddLinkedSnapPoints(List<MySnapPointLink> snapPointLinks)\n        {\n            ConnectWayPointsAtSnapPointLinks(snapPointLinks);\n            LinkedSnapPoints.Add(snapPointLinks);\n\n            foreach (var item in snapPointLinks)\n\t        {\n                List<MySnapPointLink> links;\n                if (!SnapPointLinks.TryGetValue(item.SnapPoint, out links))\n                {\n                    links = snapPointLinks;\n                    SnapPointLinks.Add(item.SnapPoint, links);\n                }\n                else\n                {\n                    links.AddRange(snapPointLinks);\n                }\n\t        }\n        }\n\n        Dictionary<MyPrefabSnapPoint, List<MySnapPointLink>> SnapPointLinks = new Dictionary<MyPrefabSnapPoint,List<MySnapPointLink>>();\n\n        public void RemoveLinkedSnapPoints(MyPrefabBase myPrefab)\n        {\n            // called only from MyPrefabBase.Close(): we don't need to disconnect waypoints (they will be deleted along with the prefab)\n\n            LinkedSnapPoints.ForEach(a => a.RemoveAll(b => b.SnapPoint.Prefab == myPrefab));\n            LinkedSnapPoints.RemoveAll(a => a.Count < 2);\n\n            foreach (var snapPoint in myPrefab.SnapPoints)\n            {\n                SnapPointLinks.Remove(snapPoint);\n            }\n        }\n\n        public void RemoveAllLinkedSnapPoints(Predicate<MySnapPointLink> match)\n        {\n            foreach (var snapPointLinks in LinkedSnapPoints)\n                if (snapPointLinks.Exists(match))\n                    DisconnectWayPointsAtSnapPointLinks(snapPointLinks);\n\n            LinkedSnapPoints.RemoveAll(a => a.Exists(match));\n\n            for (int i = 0; i < SnapPointLinks.Count; i++)\n            {\n                bool exists = SnapPointLinks.Values.ElementAt(i).Exists(match);\n                if (exists)\n                {\n                    SnapPointLinks.Remove(SnapPointLinks.Keys.ElementAt(i));\n                    i--;\n                }\n            }\n        }\n\n\n        private void ClearLinkedSnapPoints()\n        {\n            foreach (var snapPointLinks in LinkedSnapPoints)\n                DisconnectWayPointsAtSnapPointLinks(snapPointLinks);\n            LinkedSnapPoints.Clear();\n\n            SnapPointLinks.Clear();\n        }\n\n        public void CopySnapPointLinks(List<MyEntity> sourceEntities, IMyEntityIdRemapContext remapContext)\n        {\n            foreach (var group in LinkedSnapPoints.ToList())\n            {\n                // does this link contain any copied prefab?\n                foreach (var link in group)\n                    foreach (var sourceEntity in sourceEntities)\n                        if (link.SnapPoint.Prefab == sourceEntity)\n                            goto containsCopied;\n                continue;\n\n            containsCopied:\n\n                // convert to new link and connect\n                var snapPointLinks = new List<MySnapPointLink>();\n\n                foreach (var link in group)\n                {\n                    // get the newly-created prefab\n                    var linkPrefab = link.SnapPoint.Prefab;\n                    if (!linkPrefab.EntityId.HasValue) continue;\n                    uint? newId = remapContext.RemapEntityId(linkPrefab.EntityId.Value.NumericValue);\n                    if (newId == null) continue;\n                    MyEntity newEntity;\n                    if (!MyEntities.TryGetEntityById(new MyEntityIdentifier(newId.Value), out newEntity)) continue;\n                    var newPrefab = newEntity as MyPrefabBase;\n\n                    // get the index\n                    int snapPointIndex;\n                    for (snapPointIndex = 0; snapPointIndex < linkPrefab.SnapPoints.Count; snapPointIndex++)\n                        if (linkPrefab.SnapPoints[snapPointIndex] == link.SnapPoint)\n                            break;\n\n                    if (snapPointIndex < linkPrefab.SnapPoints.Count)\n                        snapPointLinks.Add(new MySnapPointLink(newPrefab.SnapPoints[snapPointIndex]));\n                }\n\n                if (snapPointLinks.Count >= 2)\n                    AddLinkedSnapPoints(snapPointLinks);\n            }\n        }\n\n        /// <summary>\n        /// Works on selected entities in editor, if theres some invisible snap point, Toggle Snap Points will make all snap points visible\n        /// </summary>\n        private void ToggleSnapPoints()\n        {\n            // First try find some invisible snap point\n            // If theres some invisible snap point, Toggle Snap Points will make all snap points visible\n            var someSnapPointInvisible = false;\n            foreach (var entity in MyEditorGizmo.SelectedEntities)\n\t        {\n                var prefab = entity as MyPrefabBase;\n                if (prefab != null)\n                {\n                    foreach (var snapPoint in prefab.SnapPoints)\n\t                {\n                        if (!snapPoint.Visible)\n                        {\n                            someSnapPointInvisible = true;\n                            break;\n                        }\n\t                }\n\n                    if (someSnapPointInvisible) break;\n                }\n\t        }\n\n            foreach (var entity in MyEditorGizmo.SelectedEntities)\n\t        {\n                var prefab = entity as MyPrefabBase;\n                if (prefab != null)\n                {\n                    foreach (var snapPoint in prefab.SnapPoints)\n\t                {\n                        // If some invisible make all visible\n                        snapPoint.Visible = someSnapPointInvisible;\n\t                }\n                }\n\t        }\n        }\n\n        /// <summary>\n        /// This method is used to select all objects, that are in intersection of boundingFrustum created from selection rectangle(dragging primary action control)\n        /// </summary>\n        /// <param name=\"input\"></param>\n        private void SelectAllEntitiesInRectangle(MyGuiInput input)\n        {\n            if (IsSelectingByRectangle() && !(MyGuiScreenGamePlay.Static.IsIngameEditorActive() && GetEditedPrefabContainer() == null))\n            {\n                if (input.IsKeyPress(Keys.LeftControl) == false)\n                {\n                    MyEditorGizmo.ClearSelection();\n                }\n\n                // Retrieve bounding frustum from selection rectangle\n                BoundingFrustum boundingFrustum = MyUtils.UnprojectRectangle(m_selectionRectangle, MyCamera.Viewport, MyCamera.ViewMatrix, MyCamera.ProjectionMatrix);\n\n                // In case we perform selection inside container, disallow to select objects outside of container\n                List<MyEntity> intersectionObjects = null;\n                if (m_activePrefabContainer == null)\n                {\n                    // first we must if there is no prefab in selected entities\n                    if (MyEditorGizmo.SelectedEntities.Count > 0)\n                    {\n                        foreach (MyEntity entity in MyEditorGizmo.SelectedEntities) \n                        {\n                            Debug.Assert(!(entity is MyPrefabBase), \"You can't have selected prefab where prefab container is not active\");\n                        }\n                    }\n\n                    intersectionObjects = new List<MyEntity>();\n                    MyEntities.GetAllIntersectionWithBoundingFrustum_UNOPTIMIZED(ref boundingFrustum, intersectionObjects, true, false, true);\n                }\n                else\n                {\n                    intersectionObjects = m_activePrefabContainer.GetPrefabsInFrustum(ref boundingFrustum);\n                }\n\n                // Now that we have all objects in bounding frustum, add or remove from selection, based on if already selected or not\n                if (intersectionObjects != null)\n                {\n                    MyEditorGizmo.AddEntitiesToSelection(intersectionObjects);\n\n                    // add waypoints from selected waypoint path\n                    MyWayPointGraph.UpdateSelectedPath();\n                }\n\n            }\n        }\n\n        #endregion\n\n        #region Create And Entity Loading Methods\n\n        /// <summary>\n        /// IMPORTANT!! Invoke this method to add object in editor - newly added object is immediately attached to camera\n        /// </summary>\n        /// <param name=\"objectBuilder\"></param>\n        public void CreateFromObjectBuilder(MyMwcObjectBuilder_Base objectBuilder, Matrix matrix, Vector2? screenPosition = null)\n        {\n\n            //here test if we can even add entity\n            if (MyFakes.ENABLE_OBJECT_COUNTS_LIMITS)\n            {\n                if (!(objectBuilder is MyMwcObjectBuilder_PrefabBase) && MyEntities.GetObjectsCount() + 1 > MyEditorConstants.MAX_EDITOR_ENTITIES_LIMIT)\n                {\n                    MyAudio.AddCue2D(MySoundCuesEnum.GuiEditorObjectMoveInvalid);\n                    MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.MaxObjectsReached, MyTextsWrapperEnum.MessageBoxCaptionError, MyTextsWrapperEnum.Ok, null));\n                    return;\n                }\n\n\n                //here test for container limit\n                if (objectBuilder is MyMwcObjectBuilder_PrefabContainer && MyPrefabContainerManager.GetInstance().GetContainerCount() >= MyEditorConstants.MAX_CONTAINER_NUMBER)\n                {\n                    MyAudio.AddCue2D(MySoundCuesEnum.GuiEditorObjectMoveInvalid);\n                    MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.MaxObjectsReached, MyTextsWrapperEnum.MessageBoxCaptionError, MyTextsWrapperEnum.Ok, null));\n                    return;\n                }\n\n                if (IsEditingPrefabContainer() && objectBuilder is MyMwcObjectBuilder_PrefabBase)\n                {\n                    MyPrefabContainer container = GetEditedPrefabContainer();\n                    if (container.Children.Count + 1 > MyPrefabContainerConstants.MAX_PREFABS_IN_CONTAINER)\n                    {\n                        MyAudio.AddCue2D(MySoundCuesEnum.GuiEditorObjectMoveInvalid);\n                        MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.MaxObjectsReached, MyTextsWrapperEnum.MessageBoxCaptionError, MyTextsWrapperEnum.Ok, null));\n                        return;\n                    }\n                }\n            }\n\n            if (IsValidForCreation(objectBuilder, matrix))\n            {\n                objectBuilder.IsDestructible = MyGameplayConstants.GetGameplayProperties(objectBuilder, MyMwcObjectBuilder_FactionEnum.Euroamerican).IsDestructible;\n                MyEditorActionEntityAdd action = new MyEditorActionEntityAdd(objectBuilder, matrix, screenPosition);\n                action.RegisterAndDoAction();\n                //m_waitingForAtachment = true;\n            }\n        }\n\n        /// <summary>\n        /// TODO temporary here - will have to remove elsewhere\n        /// </summary>\n        /// <param name=\"position\"></param>\n        /// <param name=\"forward\"></param>\n        /// <param name=\"up\"></param>\n        /// <param name=\"shipType\"></param>\n        /// <param name=\"botBehaviour\"></param>\n        /// <param name=\"shipFaction\"></param>\n        /// <returns></returns>\n        public static MyMwcObjectBuilder_SmallShip_Bot CreateDefaultBotObjectBuilder(Vector3 position, Vector3 forward, Vector3 up, MyMwcObjectBuilder_SmallShip_TypesEnum shipType, MyMwcObjectBuilder_FactionEnum shipFaction)\n        {\n            List<MyMwcObjectBuilder_SmallShip_Weapon> weapons = new List<MyMwcObjectBuilder_SmallShip_Weapon>();\n            weapons.Add(new MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Autocanon));\n            weapons.Add(new MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Autocanon));\n            weapons.Add(new MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Cannon));\n            weapons.Add(new MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Cannon));\n            weapons.Add(new MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Harvesting_Device));\n            weapons.Add(new MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Crusher));\n            weapons.Add(new MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Universal_Launcher_Front));\n\n            \n            List<MyMwcObjectBuilder_SmallShip_Ammo> ammo = new List<MyMwcObjectBuilder_SmallShip_Ammo>();\n            ammo.Add(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_Basic));\n            ammo.Add(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_Basic));\n            ammo.Add(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_Tunnel_Buster));\n            ammo.Add(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Automatic_Rifle_With_Silencer_High_Speed));\n            ammo.Add(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_Basic));\n            ammo.Add(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_Basic));\n            ammo.Add(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_Tunnel_Buster));\n            ammo.Add(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Guided_Missile_Engine_Detection));\n            ammo.Add(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Guided_Missile_Visual_Detection));\n            ammo.Add(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Remote_Camera));\n            ammo.Add(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Hologram));\n            ammo.Add(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Mine_Basic));\n            ammo.Add(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Mine_Smart));\n\n            MyMwcObjectBuilder_Inventory inventory = new MyMwcObjectBuilder_Inventory(new List<MyMwcObjectBuilder_InventoryItem>(), 1000);            \n            foreach (MyMwcObjectBuilder_SmallShip_Ammo ammoItem in ammo)\n            {\n                inventory.InventoryItems.Add(new MyMwcObjectBuilder_InventoryItem(ammoItem, 1000));\n            }\n             \n            List<MyMwcObjectBuilder_AssignmentOfAmmo> assignmentOfAmmo = new List<MyMwcObjectBuilder_AssignmentOfAmmo>();\n            assignmentOfAmmo.Add(new MyMwcObjectBuilder_AssignmentOfAmmo(MyMwcObjectBuilder_FireKeyEnum.Primary, MyMwcObjectBuilder_AmmoGroupEnum.Bullet, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_Basic));\n            assignmentOfAmmo.Add(new MyMwcObjectBuilder_AssignmentOfAmmo(MyMwcObjectBuilder_FireKeyEnum.Secondary, MyMwcObjectBuilder_AmmoGroupEnum.Cannon, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_Basic));\n\n            //return new MyMwcObjectBuilder_SmallShip_Bot(shipType,\n            //    weapons,\n            //    new MyMwcObjectBuilder_SmallShip_Engine(MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.Chemical_1),\n            //    ammo,\n            //    assignmentOfAmmo,\n            //    null,\n            //    shipFaction);            \n            return new MyMwcObjectBuilder_SmallShip_Bot(shipType,\n                inventory,\n                weapons,\n                new MyMwcObjectBuilder_SmallShip_Engine(MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.Chemical_1),\n                assignmentOfAmmo,\n                null,\n                null,\n                null,\n                MyGameplayConstants.HEALTH_RATIO_MAX,\n                100f,\n                float.MaxValue,\n                float.MaxValue,\n                true,\n                false,\n                shipFaction,\n                MyAITemplateEnum.DEFAULT,\n                0,\n                1000,\n                1000,\n                MyPatrolMode.CYCLE,\n                null,\n                BotBehaviorType.IDLE,\n                MyLightsConstants.MAX_SPOTLIGHT_SHADOW_RANGE,\n                0, false, true);\n        }\n\n        /// <summary>\n        /// TODO load sector command\n        /// </summary>\n        public void LoadSector()\n        {\n            MyGuiScreenGamePlay.Static.Restart();\n        }\n\n        #endregion\n\n        #region Clear And Removed Methods\n\n        /// <summary>\n        /// Removes all objects from sector\n        /// </summary>\n        public void ClearWholeSector()\n        {\n            MyEditorActionClearSector action = new MyEditorActionClearSector();\n            action.RegisterAndDoAction();\n        }\n\n        /// <summary>\n        /// IMPORTANT!! Invoke this method to remove objects in editor\n        /// </summary>\n        /// <param name=\"physObjects\"></param>\n        public void RemoveEntities(List<MyEntity> physObjects)\n        {\n            //dont allow to remove player ship!\n            foreach (MyEntity entity in physObjects)\n            {\n                if (entity == MySession.PlayerShip)\n                {\n                    MyAudio.AddCue2D(MySoundCuesEnum.GuiEditorObjectMoveInvalid);\n                    return;\n                }\n            }\n\n            //ask in message box now\n            if (MyGuiScreenGamePlay.Static.IsIngameEditorActive())\n            {\n                MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.DeleteObjects, MyTextsWrapperEnum.DeleteSelected, MyTextsWrapperEnum.Yes, MyTextsWrapperEnum.No,\n                    mbReturn =>\n                    {\n                        if (mbReturn == MyGuiScreenMessageBoxCallbackEnum.YES)\n                        {\n                            MyEditorActionEntityDelete deleteAction = new MyEditorActionEntityDelete(physObjects);\n                            deleteAction.RegisterAndDoAction();\n                        }\n                    }));\n            }\n            else\n            {\n                MyEditorActionEntityDelete deleteAction = new MyEditorActionEntityDelete(physObjects);\n                deleteAction.RegisterAndDoAction();\n            }\n        }\n\n        public void RemoveFromObjectGroups(MyEntity entity)\n        {\n            foreach (var objectGroup in ObjectGroups)\n            {\n                objectGroup.RemoveObject(entity);\n            }\n        }\n\n        /// <summary>\n        /// Clears attached entities from camera\n        /// </summary>\n        public void ClearAttachedEntities()\n        {\n            m_attachedEntities.Clear();\n        }\n\n        #endregion\n\n        #region Validation Methods\n\n        /// <summary>\n        /// IMPORTANT!! Validation method, that must be invoked prior to creation of any object\n        /// </summary>\n        /// <param name=\"objectBuilder\"></param>\n        /// <returns></returns>\n        bool IsValidForCreation(MyMwcObjectBuilder_Base objectBuilder, Matrix matrix)\n        {\n            bool valid = true;\n            if (objectBuilder is MyMwcObjectBuilder_VoxelMap)\n            {\n                MyMwcObjectBuilder_VoxelMap voxelMapObjectBuilder = (MyMwcObjectBuilder_VoxelMap)objectBuilder;\n                Vector3 voxelPosition = voxelMapObjectBuilder.PositionAndOrientation.Position;\n                if (IsObjectOutOfSectorBounds(voxelPosition) || (IsNewAsteroidAllowed(voxelMapObjectBuilder.VoxelFile) == false))\n                {\n                    valid = false;\n                }\n            }\n            else if (objectBuilder is MyMwcObjectBuilder_Object3dBase)\n            {\n                MyMwcObjectBuilder_Object3dBase object3dBuilder = (MyMwcObjectBuilder_Object3dBase)objectBuilder;\n                if (IsObjectOutOfSectorBounds(matrix.Translation) ||\n                    (object3dBuilder is MyMwcObjectBuilder_LargeShip && !IsNewLargeShipAllowed()))\n                {\n                    valid = false;\n                }\n            }\n            else if (objectBuilder is MyMwcObjectBuilder_PrefabBase)\n            {\n                MyMwcObjectBuilder_PrefabBase prefabBuilder = (MyMwcObjectBuilder_PrefabBase)objectBuilder;\n                Vector3 relativePosition = MyPrefabContainer.GetRelativePositionInAbsoluteCoords(prefabBuilder.PositionInContainer);\n                if (MyPrefabContainer.IsPrefabOutOfContainerBounds(relativePosition) == true)\n                {\n                    valid = false;\n                }\n            }\n            return valid;\n        }\n\n        bool IsValidForCreation(List<MyEntity> entities)\n        {\n            int totalVoxelCells = MyVoxelMaps.GetTotalDataCellsCount();\n            int largeShipsCount = 0;\n            foreach (MyEntity entity in entities)\n            {\n                MyMwcObjectBuilder_Base objectBuilder = entity.GetObjectBuilder(false);\n                Matrix matrix = entity.WorldMatrix;\n                if (objectBuilder is MyMwcObjectBuilder_VoxelMap)\n                {\n                    MyMwcObjectBuilder_VoxelMap voxelMapObjectBuilder = (MyMwcObjectBuilder_VoxelMap)objectBuilder;\n                    Vector3 voxelPosition = voxelMapObjectBuilder.PositionAndOrientation.Position;\n                    if (IsObjectOutOfSectorBounds(voxelPosition))\n                    {\n                        return false;\n                    }\n                    else if (!MyVoxelMap.IsNewAllowed(voxelMapObjectBuilder.VoxelFile, ref totalVoxelCells))\n                    {\n                        MyEditor.Static.m_newAsteroidAllowed = false;\n                        return false;\n                    }                    \n                }\n                else if (objectBuilder is MyMwcObjectBuilder_Object3dBase)\n                {\n                    MyMwcObjectBuilder_Object3dBase object3dBuilder = (MyMwcObjectBuilder_Object3dBase)objectBuilder;\n                    if (IsObjectOutOfSectorBounds(matrix.Translation))\n                    {\n                        return false;\n                    }\n                    else if(object3dBuilder is MyMwcObjectBuilder_LargeShip)\n                    {\n                        largeShipsCount++;                        \n                    }\n                }\n                else if (objectBuilder is MyMwcObjectBuilder_PrefabBase)\n                {\n                    MyMwcObjectBuilder_PrefabBase prefabBuilder = (MyMwcObjectBuilder_PrefabBase)objectBuilder;\n                    Vector3 relativePosition = MyPrefabContainer.GetRelativePositionInAbsoluteCoords(prefabBuilder.PositionInContainer);\n                    if (MyPrefabContainer.IsPrefabOutOfContainerBounds(relativePosition) == true)\n                    {\n                        return false;\n                    }\n                }                \n            }\n\n            // validate large ships limit            \n            if(!IsNewLargeShipsAllowed(largeShipsCount))\n            {\n                return false;\n            }\n\n            MyEditor.Static.m_newAsteroidAllowed = true;\n            return true;\n        }\n\n        /// <summary>\n        /// There is limited number of large ships allowed\n        /// </summary>\n        /// <returns></returns>\n        public static bool IsNewLargeShipAllowed()\n        {\n            return IsNewLargeShipsAllowed(1);\n        }\n\n        public static bool IsNewLargeShipsAllowed(int count)\n        {\n            if (MyEntities.GetLargeShipsCount() + count > MyLargeShipConstants.MAX_LARGE_SHIPS_COUNT_IN_SECTOR)\n            {\n                MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.MaxLargeShipsCountReached, MyTextsWrapperEnum.MessageBoxCaptionError, MyTextsWrapperEnum.Ok, null));\n                return false;\n            }\n            return true;\n        }\n\n        /// <summary>\n        /// Whole sector has limited size, and phys objects can be placed only inside at such positions, that they do not\n        /// reach over the sector border\n        /// </summary>\n        /// <param name=\"objectPosition\"></param>\n        /// <returns></returns>\n        public static bool IsObjectOutOfSectorBounds(Vector3 objectPosition)\n        {\n            if (MyMwcSectorConstants.SECTOR_SIZE_FOR_PHYS_OBJECTS_BOUNDING_BOX.Contains(objectPosition) != ContainmentType.Contains)\n            {\n                MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.ObjectOutOfBounds, MyTextsWrapperEnum.MessageBoxCaptionError, MyTextsWrapperEnum.Ok, null));\n                return true;\n            }\n            return false;\n        }\n\n        /// <summary>\n        /// There is limited number of voxels allowed in sector, validate it in this method\n        /// </summary>\n        /// <param name=\"voxelFile\"></param>\n        /// <returns></returns>\n        static bool IsNewAsteroidAllowed(MyMwcVoxelFilesEnum voxelFile)\n        {\n            if (MyVoxelMap.IsNewAllowed(voxelFile))\n            {\n                MyEditor.Static.m_newAsteroidAllowed = true;\n            }\n            else\n            {\n                MyEditor.Static.m_newAsteroidAllowed = false;\n            }\n            return MyEditor.Static.m_newAsteroidAllowed;\n        }        \n\n        /// <summary>\n        /// Check if any entity is attached to camera\n        /// </summary>\n        /// <returns></returns>\n        public bool IsAnyEntityAttachedToCamera()\n        {\n            return m_attachedEntities.Count != 0;\n        }\n\n        /// <summary>\n        /// Check if selection by rectangle is happening\n        /// </summary>\n        /// <returns></returns>\n        public bool IsSelectingByRectangle()\n        {\n            return m_drawingSelectionRectangle && m_selectionRectangle.Width != 0 && m_selectionRectangle.Height != 0;\n        }\n\n        /// <summary>\n        /// Check if editing prefab container now\n        /// </summary>\n        /// <returns></returns>\n        public bool IsEditingPrefabContainer()\n        {\n            return m_activePrefabContainer != null;\n        }\n\n        /// <summary>\n        /// Resets currently active prefab container\n        /// </summary>\n        public void ResetActivePrefabContainer()\n        {\n            m_activePrefabContainer = null;\n        }\n\n        #endregion\n\n        #region Other Methods\n\n        /// <summary>\n        /// This method retrieves object builders of all objects in sector and sends them to server\n        /// </summary>\n        public MyGuiScreenEditorSaveProgress SaveSector()\n        {\n            if (m_collidingElements.Count == 0)\n            {\n                Debug.Assert(MySession.Static != null, \"Session cannot be null\");\n                return MySession.Static.Save(true, true, false);\n            }\n            else\n            {\n                MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.CantSaveSectorContainerCollides, MyTextsWrapperEnum.MessageBoxCaptionError, MyTextsWrapperEnum.Ok, null));\n                return null;\n            }\n        }\n\n        /// <summary>\n        /// This method returns enum value, that can be used to indicate, if we have something selected in editor\n        /// and if so, what it is, or if something is attached to spectator.\n        /// </summary>\n        /// <returns></returns>\n        public static MyEditorStateEnum GetCurrentState()\n        {\n            MyEditorStateEnum currentState = MyEditorStateEnum.NOTHING_SELECTED;\n            if (MyEditor.Static.IsAnyEntityAttachedToCamera())\n            {\n                currentState = MyEditorStateEnum.ATTACHED;\n            }\n            else if (MyEditorVoxelHand.IsEnabled())\n            {\n                currentState = MyEditorStateEnum.VOXEL_HAND_ENABLED;\n            }\n            else if (MyEditorGizmo.IsOnlyOneEntitySelected())\n            {\n                MyEntity physObject = MyEditorGizmo.GetFirstSelected();\n                if (physObject is MyVoxelMap)\n                {\n                    currentState = MyEditorStateEnum.SELECTED_ASTEROID;\n                }\n                else if (physObject is MyWayPoint)\n                {\n                    currentState = MyEditorStateEnum.SELECTED_WAYPOINT;\n                }\n                else if (physObject is MySpawnPoint)\n                {\n                    currentState = MyEditorStateEnum.SELECTED_SPAWNPOINT;\n                }\n                else if (physObject is MyPrefabLight)\n                {\n                    currentState = MyEditorStateEnum.SELECTED_LIGHT;\n                }\n                else if (physObject is MyPrefabSecurityControlHUB)\n                {\n                    currentState = MyEditorStateEnum.SELECTED_SECURITY_CONTROL_HUB;\n                }\n                else if (physObject is MyPrefabScanner)\n                {\n                    currentState = MyEditorStateEnum.SELECTED_SCANNER;\n                }\n                else if (physObject is MyPrefabContainer)\n                {\n                    currentState = MyEditorStateEnum.SELECTED_PREFAB_CONTAINER;\n                }\n                else if (physObject is MyPrefabBase)\n                {\n                    currentState = MyEditorStateEnum.SELECTED_PREFAB;\n                }\n/*                else if (physObject is MyLargeShip)\n                {\n                    currentState = MyEditorStateEnum.SELECTED_LARGE_SHIP;\n                }\n  */              else if (physObject is MySmallShip)\n                {\n                    currentState = MyEditorStateEnum.SELECTED_SMALL_SHIP;\n                }\n                else if (physObject is MySmallDebris)\n                {\n                    currentState = MyEditorStateEnum.SELECTED_DEBRIS;\n                }\n                else if (physObject is MyLargeDebrisField)\n                {\n                    currentState = MyEditorStateEnum.SELECTED_DEBRIS;\n                }\n                else if (physObject is MyInfluenceSphere)\n                {\n                    currentState = MyEditorStateEnum.SELECTED_INFLUENCE_SPHERE;\n                }\n                else if (physObject is MyStaticAsteroid)\n                {\n                    currentState = MyEditorStateEnum.SELECTED_STATIC_ASTEROID;\n                }\n                else if (physObject is MyDummyPoint)\n                {\n                    currentState = MyEditorStateEnum.SELECTED_DUMMYPOINT;\n                }\n                else if (physObject is MyCargoBox) \n                {\n                    currentState = MyEditorStateEnum.SELECTED_CARGO_BOX;\n                }\n            }\n            else if (MyEditor.Static.IsEditingPrefabContainer())\n            {\n                if (MyEditorGizmo.SelectedSnapPoint != null)\n                {\n                    currentState = MyEditorStateEnum.SELECTED_SNAPPOINT;\n                }\n                else if (MyEditorGizmo.IsMoreThanOneEntitySelected())\n                {\n                    currentState = MyEditorStateEnum.SELECTED_PREFABS;\n                }\n                else\n                {\n                    currentState = MyEditorStateEnum.EDITING_PREFAB_CONTAINER;\n                }\n            }\n            else if (MyEditorGizmo.IsMoreThanOneEntitySelected())\n            {\n                currentState = MyEditorStateEnum.SELECTED_MIXED;\n            }\n\n            return currentState;\n        }\n\n        //  Lazy-loading and then returning reference to model\n        //  Doesn't load vertex/index shader and doesn't touch GPU. Use it when you need model data - vertex, triangles, octre...\n        public static List<MyPrefabSnapPoint> GetSnapPoints(MyModelsEnum modelEnum)\n        {\n            //MyMwcLog.WriteLine(\"MyModel.GetSnapPoints -> START\");\n            //MyMwcLog.IncreaseIndent();\n\n            // Parse snap points from Dummies\n            List<MyPrefabSnapPoint> snapPoints = new List<MyPrefabSnapPoint>();\n\n            MyModel model = MyModels.GetModelOnlyDummies(modelEnum);\n\n            foreach (var dummy in model.Dummies)\n            {\n                if (dummy.Key.StartsWith(\"SNAPPOINT\", StringComparison.InvariantCultureIgnoreCase))\n                {\n                    var customData = dummy.Value.CustomData;\n                    var snapPoint = new MyPrefabSnapPoint(null);\n\n                    // Get rid of scale in rotation part\n                    snapPoint.Matrix = Matrix.CreateWorld(dummy.Value.Matrix.Translation, dummy.Value.Matrix.Forward, dummy.Value.Matrix.Up);\n                    snapPoint.SnapType = new MyPrefabSnapPoint.MyPrefabSnapPointType(\"OBJECT_\", \"\", dummy.Value.CustomData);\n                    snapPoint.Name = dummy.Key;\n                    snapPoints.Add(snapPoint);\n\n                    string targetPostfix = \"TARGET_BUILD_TYPE\";\n                    foreach (var target in customData)\n                    {\n                        if (target.Key.StartsWith(targetPostfix))\n                        {\n                            string postfix = target.Key.Substring(targetPostfix.Length);\n                            snapPoint.SnapTargets.Add(new MyPrefabSnapPoint.MyPrefabSnapPointType(\n                                \"TARGET_\",\n                                postfix,\n                                dummy.Value.CustomData));\n                        }\n                    }\n                }\n            }\n\n            //MyMwcLog.DecreaseIndent();\n            //MyMwcLog.WriteLine(\"MyModel.GetSnapPoints -> END\");\n\n            return snapPoints;\n        }\n\n\n        /// <summary>\n        /// Get all snap points for all prefab types\n        /// </summary>\n        public static void GetPrefabSnapPoints()\n        {\n            if (m_prefabSnapPoints != null)\n            {\n                return;\n            }\n\n            SysUtils.Utils.MyMwcLog.WriteLine(\"MyEditor.GetPrefabSnapPoints -> START\");\n            SysUtils.Utils.MyMwcLog.IncreaseIndent();\n\n            //Stopwatch sw = Stopwatch.StartNew();\n            //PrefabSnapPoints = new Dictionary<MyMwcObjectBuilder_Prefab_TypesEnum, List<MyPrefabSnapPoint>>();\n            m_prefabSnapPoints = new List<MyPrefabSnapPoint>[MyMwcUtils.GetMaxValueFromEnum<MyMwcObjectBuilderTypeEnum>() + 1][];\n               /*\n            foreach (MyMwcObjectBuilderTypeEnum prefabType in MyGuiPrefabHelpers.MyMwcPrefabTypesEnumValues)\n            {\n                foreach (int prefabId in MyMwcObjectBuilder_Base.GetObjectBuilderIDs(prefabType))\n                {\n                    MyPrefabConfiguration prefabConfig = MyPrefabConstants.GetPrefabConfiguration(prefabType, prefabId);\n\n                    //var model = MyModels.GetModelOnlyData(prefabConfig.ModelLod0Enum);\n                    //var snapPoints = MyPrefab.GetSnapPoints(model, null); // ~ 7 seconds, loads all models: 164MB\n\n                    // was 1.3 sec, garbage 70MB, 41s without fetch\n                    //var snapPoints = GetSnapPoints(prefabConfig.ModelLod0Enum);    // ~ 0.16 seconds, garbage 3MB, 18s without fetch\n\n                    //PrefabSnapPoints.Add(prefabType, snapPoints);   \n                  //  AddPrefabSnapPoints(prefabType, prefabId, snapPoints);\n                }\n            }    */\n            //var elapsed = sw.Elapsed;\n\n            SysUtils.Utils.MyMwcLog.DecreaseIndent();\n            SysUtils.Utils.MyMwcLog.WriteLine(\"MyEditor.GetPrefabSnapPoints -> END\");\n\n        }\n\n        public static List<MyPrefabSnapPoint> GetPrefabSnapPoints(MyMwcObjectBuilderTypeEnum prefabType, int prefabId)\n        {\n            if (m_prefabSnapPoints == null)\n                MyEditor.GetPrefabSnapPoints();\n            List<MyPrefabSnapPoint> prefabSnapPoints = null;\n            try\n            {\n                //lazy load to spare loading time\n                if (m_prefabSnapPoints[(int)prefabType] == null || m_prefabSnapPoints[(int)prefabType][(int)prefabId] == null)\n                {\n                    MyPrefabConfiguration prefabConfig = MyPrefabConstants.GetPrefabConfiguration(prefabType, prefabId);\n\n                    var snapPoints = GetSnapPoints(prefabConfig.ModelLod0Enum);    \n                    AddPrefabSnapPoints(prefabType, prefabId, snapPoints);\n                }\n\n                prefabSnapPoints = m_prefabSnapPoints[(int)prefabType][prefabId];\n            }\n            catch\n            {\n            }\n            return prefabSnapPoints;\n        }\n\n        public static void AddPrefabSnapPoints(MyMwcObjectBuilderTypeEnum prefabType, int prefabId, List<MyPrefabSnapPoint> snapPoints)\n        {\n            //SysUtils.Utils.MyMwcLog.WriteLine(\"MyEditor.AddPrefabSnapPoints -> START\");\n            //SysUtils.Utils.MyMwcLog.IncreaseIndent();\n\n            if (m_prefabSnapPoints[(int)prefabType] == null)\n            {\n                m_prefabSnapPoints[(int)prefabType] = new List<MyPrefabSnapPoint>[MyMwcObjectBuilder_Base.GetObjectBuilderIDs(prefabType).Max() + 1];\n            }\n            m_prefabSnapPoints[(int)prefabType][prefabId] = snapPoints;\n\n            //SysUtils.Utils.MyMwcLog.DecreaseIndent();\n            //SysUtils.Utils.MyMwcLog.WriteLine(\"MyEditor.AddPrefabSnapPoints -> END\");\n        }\n\n        /// <summary>\n        /// Init values from check point\n        /// </summary>\n        public void Init(MyMwcObjectBuilder_Checkpoint m_checkpoint)\n        {\n            Debug.Assert(m_checkpoint != null);\n\n            ObjectGroups.Clear();\n            ClearLinkedSnapPoints();\n\n            //Debug.Assert(m_checkpoint.SectorObjectBuilder != null);\n            if (m_checkpoint.SectorObjectBuilder == null || \n                m_checkpoint.SectorObjectBuilder.ObjectGroups == null || \n                m_checkpoint.SectorObjectBuilder.SnapPointLinks == null) \n                    return;\n\n            // Object Groups\n            foreach (var item in m_checkpoint.SectorObjectBuilder.ObjectGroups)\n            {\n                MyObjectGroup objectGroup = new MyObjectGroup(item);\n                ObjectGroups.Add(objectGroup);\n            }\n\n            // Snap Points\n            LinkedSnapPointsBuilders = m_checkpoint.SectorObjectBuilder.SnapPointLinks;\n\n            MySession.Static.LinkEntities += OnLinkEntities;\n        }\n\n        /// <summary>\n        /// Link entities\n        /// </summary>\n        private void OnLinkEntities()\n        {\n            foreach (var objectGroup in ObjectGroups)\n            {\n                objectGroup.LinkEntities();\n            }\n\n            // Load snap point links (LinkedSnapPoints cleared and LinkedSnapPointsBuilders set in Init from checkpoint)\n            foreach (var item in LinkedSnapPointsBuilders)\n            {\n                List<MySnapPointLink> snapPointGroup = new List<MySnapPointLink>();\n                foreach (var link in item.Links)\n                {\n                    MyEntity entity = null;\n                    bool success = MyEntities.TryGetEntityById(new MyEntityIdentifier(link.EntityId), out entity);\n                    //Debug.Assert(success, \"Snap points: unknown link target entityID\");\n                    MyPrefabBase prefab = entity as MyPrefabBase;\n                    //Debug.Assert(prefab != null, \"Snap points: link target is not a prefab\");\n\n                    if (string.IsNullOrEmpty(link.SnapPointName))\n                    {\n                        if (prefab != null &&\n                            link.Index < prefab.SnapPoints.Count)   // in case of removed snap point\n                        {\n                            var snapPoint = prefab.SnapPoints[link.Index];\n                            snapPointGroup.Add(new MySnapPointLink(snapPoint));\n                        }\n                    }\n                    else if (prefab != null)\n                    {\n                        foreach (var snapPoint in prefab.SnapPoints)\n                        {\n                            if (snapPoint.Name == link.SnapPointName)\n                            {\n                                snapPointGroup.Add(new MySnapPointLink(snapPoint));\n                            }\n                        }\n                    }\n                }\n\n                // Only 2 or more is valid link\n                if (snapPointGroup.Count > 1)\n                {\n                    // Accept link only if all snap points are in valid distance (1m snap)\n                    bool samePosition = true;\n                    Vector3? prevPosition = null;\n                    for (int i = 0; i < snapPointGroup.Count; i++)\n                    {\n                        var link = snapPointGroup[i];\n                        var position = (link.SnapPoint.Matrix * link.SnapPoint.Prefab.WorldMatrix).Translation;\n                        if (prevPosition.HasValue && Vector3.DistanceSquared(position, prevPosition.Value) > 1.0f)\n                        {\n                            samePosition = false;\n                            Debug.Assert(samePosition, string.Format(\"Linked snap points {3}:{5} {0} and {4}:{6} {1} are too far ({2})\",\n                                position, prevPosition.Value, Vector3.Distance(position, prevPosition.Value),\n                                (link.SnapPoint.Prefab as MyPrefab) == null ? link.SnapPoint.Prefab.PrefabId.ToString() : (link.SnapPoint.Prefab as MyPrefab).PrefabType.ToString(),\n                                (snapPointGroup[i - 1].SnapPoint.Prefab as MyPrefab) == null ? snapPointGroup[i - 1].SnapPoint.Prefab.PrefabId.ToString() : (snapPointGroup[i - 1].SnapPoint.Prefab as MyPrefab).PrefabType.ToString(),\n                                link.SnapPoint.Name,\n                                snapPointGroup[i - 1].SnapPoint.Name\n                            ));\n                            break;\n                        }\n                        prevPosition = position;\n                    }\n\n                    if (samePosition)\n    \t            {\n                        AddLinkedSnapPoints(snapPointGroup);\n\t                }\n                }\n            }\n            LinkedSnapPointsBuilders = null;\n\n            MySession.Static.LinkEntities -= OnLinkEntities;\n        }\n        \n        public List<MyMwcObjectBuilder_SnapPointLink> GetSnapPointLinkBuilders()\n        {\n            List<MyMwcObjectBuilder_SnapPointLink> linkBuilders = new List<MyMwcObjectBuilder_SnapPointLink>();\n            foreach (var snapPointGroup in LinkedSnapPoints)\n            {\n                MyMwcObjectBuilder_SnapPointLink builder = MyMwcObjectBuilder_Base.CreateNewObject(MyMwcObjectBuilderTypeEnum.SnapPointLink, null) as MyMwcObjectBuilder_SnapPointLink;\n                builder.Links = new List<MyMwcObjectBuilder_SnapPointLink.LinkElement>();\n\n                foreach (var snapPoint in snapPointGroup)\n                {\n                    uint entityId = snapPoint.SnapPoint.Prefab.EntityId.Value.NumericValue;\n                    short index = (short)snapPoint.SnapPoint.Prefab.SnapPoints.IndexOf(snapPoint.SnapPoint);\n\n                    builder.Links.Add(new MyMwcObjectBuilder_SnapPointLink.LinkElement(entityId, index, snapPoint.SnapPoint.Name));\n                }\n\n                linkBuilders.Add(builder);\n            }\n\n            return linkBuilders;\n        }\n        \n        /// <summary>\n        /// When objects are added, collision check fails, this is quick workaround\n        /// </summary>\n        public void IssueCheckAllCollidingObjects()\n        {\n            m_issueCheckAllCollidingObjectsCounter = 2;           \n        }\n\n        private MyMwcObjectBuilder_PrefabContainer m_extractPrefabsBuilder = null;\n        public void ExtractPrefabsToNewContainer()\n        {\n            foreach (var entity in MyEditorGizmo.SelectedEntities)\n            {\n                if (entity is MyPrefabBase == false)\n                {\n                    return;\n                }\n            }\n\n            List<MyMwcObjectBuilder_PrefabBase> prefabBuilders = new List<MyMwcObjectBuilder_PrefabBase>();\n            foreach (var entity in MyEditorGizmo.SelectedEntities)\n            {\n                prefabBuilders.Add(entity.GetObjectBuilder(true) as MyMwcObjectBuilder_PrefabBase);\n                entity.MarkForClose();\n            }\n\n            m_extractPrefabsBuilder = new MyMwcObjectBuilder_PrefabContainer(\n                null, MyMwcObjectBuilder_PrefabContainer_TypesEnum.INSTANCE, prefabBuilders, MyClientServer.LoggedPlayer.GetUserId(),\n                MyMwcObjectBuilder_FactionEnum.Euroamerican, new MyMwcObjectBuilder_Inventory(new List<MyMwcObjectBuilder_InventoryItem>(), 1000));\n        }\n        #endregion\n\n        /// <summary>\n        /// Sets other selection settings based on currently selected things\n        /// </summary>\n        internal void RefreshSelectionSettings()\n        {\n            // if waypoints became unselectable, also deselect waypoint paths\n            if (!MyEntities.IsTypeSelectable(typeof(MyWayPoint)))\n                MyWayPointGraph.SelectedPath = null;\n\n            // if prefabs became unselectable, exit prefab container\n            if (!MyEntities.IsTypeSelectable(typeof(MyPrefabBase)))\n                MyEditor.Static.ExitActivePrefabContainer();\n\n            // if voxels became hidden, exit voxel hand\n            if (MyEntities.IsTypeHidden(typeof(MyVoxelMap)))\n                MyEditorVoxelHand.SetEnabled(false);\n        }\n\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Editor/MyEditorActionBase.cs",
    "content": "﻿using MinerWars.AppCode.Game.Entities;\nusing System.Collections.Generic;\nusing MinerWars.AppCode.Game.Entities.Prefabs;\nusing MinerWars.AppCode.Game.Prefabs;\n\nnamespace MinerWars.AppCode.Game.Editor\n{\n    /// <summary>\n    /// Base class for all editor undoable/redoable actions\n    /// </summary>\n    abstract class MyEditorActionBase\n    {\n        public List<MyEntity> ActionEntities;\n        protected MyPrefabContainer m_activeContainer;\n\n        public MyEditorActionBase()\n        {\n            Init(1);\n        }\n\n        private void Init(int entitiesCount)\n        {\n            m_activeContainer = MyEditor.Static.GetEditedPrefabContainer();\n            if (ActionEntities == null) ActionEntities = new List<MyEntity>(entitiesCount);\n        }\n\n        public MyEditorActionBase(MyEntity entity)\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyEditorActionBase::ctor\");\n            Init(1);\n            AddEntity(entity);\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        public MyEditorActionBase(List<MyEntity> entities)\n        {\n            Init(entities.Count);\n            AddEntities(entities);\n        }\n\n        /// <summary>\n        /// Performs the action\n        /// </summary>\n        public abstract bool Perform();\n\n        /// <summary>\n        /// Rollbacks the action\n        /// </summary>\n        public abstract bool Rollback();\n\n        /// <summary>\n        /// Registers action in action history and performs it\n        /// </summary>\n        internal void RegisterAndDoAction()\n        {\n            MyEditorActions.AddAction(this);\n        }\n\n        /// <summary>\n        /// Adds entity to action entities list\n        /// </summary>\n        public void AddEntity(MyEntity entity)\n        {\n            if (entity != null)\n            {\n                ActionEntities.Add(entity);\n            }\n        }\n\n        /// <summary>\n        /// Adss entities to action entities list\n        /// </summary>\n        public void AddEntities(IEnumerable<MyEntity> entities)\n        {\n            foreach (MyEntity entity in entities)\n            {\n                AddEntity(entity);\n            }\n        }\n\n        protected virtual MyPrefabBase GetAnyPrefabInvolved()\n        {\n            if (ActionEntities.Count > 0)\n            {\n                foreach (MyEntity entity in ActionEntities)\n                {\n                    if (entity is MyPrefabBase) return (MyPrefabBase)entity;\n                }\n            }\n            return null;\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Editor/MyEditorActionClearSector.cs",
    "content": "﻿\nnamespace MinerWars.AppCode.Game.Editor\n{\n    /// <summary>\n    /// Action used for clearing whole sector\n    /// </summary>\n    class MyEditorActionClearSector : MyEditorActionWithObjectBuildersBase\n    {\n        public MyEditorActionClearSector()\n            : base()\n        {\n        }\n\n        public override bool Perform()\n        {\n            RemoveAllInBackgroundThread();            \n            return true;\n        }\n\n        public override bool Rollback()\n        {\n            AddOrCreateInBackgroundThread();            \n            return true;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Editor/MyEditorActionEntityAdd.cs",
    "content": "﻿using MinerWars.AppCode.Game.Prefabs;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing System.Collections.Generic;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Entities.SubObjects;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Entities.Prefabs;\nusing MinerWars.AppCode.Game.GUI.Core;\n\nnamespace MinerWars.AppCode.Game.Editor\n{\n    /// <summary>\n    /// Add entity editor action\n    /// </summary>\n    class MyEditorActionEntityAdd : MyEditorActionWithObjectBuildersBase\n    {\n\n        public MyEditorActionEntityAdd(MyMwcObjectBuilder_Base actionObjectBuilder, Matrix matrix, Vector2? screenPosition)\n            : base(actionObjectBuilder, matrix)\n        {\n            ActionObjectBuilders.ForEach(a => a.ScreenPosition = screenPosition);\n        }\n\n        public override bool Perform()\n        {\n            AddOrCreateInBackgroundThread();            \n            return true;\n        }\n\n        public override bool Rollback()\n        {\n            RemoveInBackgroundThread();            \n            return true;\n        }\n\n        protected override MyEntity CreateEntity(string hudLabelText, MyMwcObjectBuilder_Base objectBuilder, Matrix matrix, Vector2? screenPosition)\n        {\n            MyEntity entity = base.CreateEntity(hudLabelText, objectBuilder, matrix, screenPosition);\n            \n            // add waypoints\n            if (entity is MyPrefabBase)\n                (entity as MyPrefabBase).InitWaypoints();\n            else if (entity is MyPrefabContainer)\n                foreach (var prefab in (entity as MyPrefabContainer).GetPrefabs())\n                    (prefab as MyPrefabBase).InitWaypoints();\n\n            float distanceFromCamera = entity.WorldVolume.Radius * (entity is MyPrefabBase ? 4 : 2);\n\n            Vector3 newPosition;\n            if (screenPosition.HasValue)\n            {\n                Ray ray = MyUtils.ConvertMouseToRay(MyGuiManager.GetScreenCoordinateFromNormalizedCoordinate(screenPosition.Value));\n                newPosition = ray.Position + ray.Direction * distanceFromCamera;\n            }\n            else\n            {\n                newPosition = MySpectator.Position + distanceFromCamera * MySpectator.Orientation;\n            }\n\n            entity.MoveAndRotate(newPosition, entity.GetWorldRotation());\n            \n            return entity;\n        }\n\n        protected override void AddToScene(MyEntity entity)\n        {\n            base.AddToScene(entity);\n\n            // in case we are adding new prefab container, enter directly into edit mode of this new container\n            // but we dont want enter into edit mode when containers are duplicated\n            if (entity is MyPrefabContainer)\n            {\n                MyEditor.Static.EditPrefabContainer((MyPrefabContainer)entity);\n                foreach (MyPrefabBase child in (entity as MyPrefabContainer).Children)\n                    MyEditorGizmo.AddEntityToSelection(child);\n\n            }\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Editor/MyEditorActionEntityCopy.cs",
    "content": "﻿using MinerWars.AppCode.Game.Entities;\nusing System.Collections.Generic;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.AppCode.Game.Prefabs;\nusing MinerWars.AppCode.Game.Entities.WayPoints;\n\nnamespace MinerWars.AppCode.Game.Editor\n{\n    /// <summary>\n    /// Copy entity editor action\n    /// </summary>\n    class MyEditorActionEntityCopy : MyEditorActionWithObjectBuildersBase\n    {\n        public List<MyEntity> SourceEntities;\n        public IMyEntityIdRemapContext RemapContext;\n\n        public MyEditorActionEntityCopy(MyEntity actionEntity)\n            : base(actionEntity, true)\n        {\n            ActionEntities.Clear();\n            SourceEntities = new List<MyEntity>();\n            SourceEntities.Add(actionEntity);\n            AddChildren();\n            RemapEntityIdsOnInit();\n        }\n\n        public MyEditorActionEntityCopy(List<MyEntity> actionEntities)\n            : base(actionEntities, true)\n        {\n            ActionEntities.Clear();\n            SourceEntities = new List<MyEntity>();\n            SourceEntities.AddRange(actionEntities);\n            AddChildren();\n            RemapEntityIdsOnInit();\n        }\n\n        /// <summary>\n        /// Some copied entities need their children copied, too.\n        /// </summary>\n        private void AddChildren()\n        {\n            int oldCount = SourceEntities.Count;\n            for (int i = 0; i < oldCount; i++)\n            {\n                if (SourceEntities[i] is MyPrefabBase)\n                {\n                    foreach (var child in SourceEntities[i].Children)\n                        if (child is MyWayPoint)\n                        {\n                            SourceEntities.Add(child);\n                            ActionObjectBuilders.Add(new ObjectBuilderCreate(child, true));\n                        }\n                }\n                else if (SourceEntities[i] is MyPrefabContainer)\n                {\n                    foreach (var prefab in (SourceEntities[i] as MyPrefabContainer).GetPrefabs())\n                        foreach (var child in prefab.Children)\n                            if (child is MyWayPoint)\n                            {\n                                SourceEntities.Add(child);\n                                ActionObjectBuilders.Add(new ObjectBuilderCreate(child, true));\n                            }\n                }\n            }\n        }\n\n        private void RemapEntityIdsOnInit()\n        {\n            RemapContext = new MyEntityIdRemapContext();\n            foreach (var ob in ActionObjectBuilders)\n            {\n                ob.ObjectBuilder.RemapEntityIds(RemapContext);\n\n                if (!string.IsNullOrEmpty(ob.ObjectBuilder.Name))\n                {\n                    string baseName = ob.ObjectBuilder.Name;\n                    int index = 0;\n                    if (ob.ObjectBuilder.Name.Length > 2)\n                    {\n                        string indexString = ob.ObjectBuilder.Name.Substring(ob.ObjectBuilder.Name.Length - 2);\n                        try\n                        {\n                            index = System.Convert.ToInt32(indexString);\n                            baseName = ob.ObjectBuilder.Name.Substring(0, ob.ObjectBuilder.Name.Length - 3);\n                            index++;\n                        }\n                        catch\n                        {\n                        }\n                    }\n\n                    string proposedName = \"\"; \n                    do\n                    {\n                        proposedName = baseName + \"_\" + index.ToString(\"##00\");\n                        index++;\n                    }\n                    while (MyEntities.IsNameExists(null, proposedName) || ActionObjectBuilders.Exists(aob => aob.ObjectBuilder.Name == proposedName));\n\n                    ob.ObjectBuilder.Name = proposedName;\n                }\n            }\n        }\n\n        public override bool Perform()\n        {\n            AddOrCreateInBackgroundThread();\n            return true;\n        }\n\n        public override bool Rollback()\n        {\n            RemoveInBackgroundThread();            \n            return true;\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Editor/MyEditorActionEntityDelete.cs",
    "content": "﻿using MinerWars.AppCode.Game.Entities;\nusing System.Collections.Generic;\n\nnamespace MinerWars.AppCode.Game.Editor\n{\n    /// <summary>\n    /// Delete entity editor action\n    /// </summary>\n    class MyEditorActionEntityDelete : MyEditorActionWithObjectBuildersBase\n    {\n\n        public MyEditorActionEntityDelete(MyEntity actionPhysObject)\n            : base(actionPhysObject)\n        {\n        }\n\n        public MyEditorActionEntityDelete(List<MyEntity> actionPhysObjects)\n            : base(actionPhysObjects)\n        {\n        }\n\n        public override bool Perform()\n        {\n            RemoveInBackgroundThread();            \n            return true;\n        }\n\n        public override bool Rollback()\n        {\n            AddOrCreateInBackgroundThread();            \n            return true;\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Editor/MyEditorActionEntityPropertiesChange.cs",
    "content": "﻿using System.Collections.Generic;\nusing MinerWars.AppCode.Game.Entities;\n\nnamespace MinerWars.AppCode.Game.Editor\n{\n    class MyEditorActionEntityPropertiesChange : MyEditorActionBase\n    {\n        public MyEditorActionEntityPropertiesChange(MyEntity actionPhysObject)\n            : base(actionPhysObject)\n        {\n        }\n\n        public MyEditorActionEntityPropertiesChange(List<MyEntity> actionPhysObjects)\n            : base(actionPhysObjects)\n        {\n        }\n\n        public override bool Perform()\n        {\n            return true;\n        }\n\n        public override bool Rollback()\n        {\n            return true;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Editor/MyEditorActionEntityTransform.cs",
    "content": "﻿using MinerWarsMath;\nusing MinerWars.AppCode.Game.Entities;\nusing System.Collections.Generic;\nusing MinerWars.AppCode.Game.Entities.Prefabs;\nusing MinerWars.AppCode.Game.Prefabs;\n\nnamespace MinerWars.AppCode.Game.Editor\n{\n    /// <summary>\n    /// Entity transformation editor action\n    /// </summary>\n    class MyEditorActionEntityTransform : MyEditorActionBase\n    {\n        private List<MyEditorTransformData> m_startTransformData;\n        private List<MyEditorTransformData> m_endTransformData;\n        private bool m_containsPrefab;\n\n        public MyEditorActionEntityTransform()\n            : base()\n        {\n            m_startTransformData = new List<MyEditorTransformData>();\n            m_endTransformData = new List<MyEditorTransformData>();\n            m_containsPrefab = false;\n        }\n\n        /// <summary>\n        /// Transform entities to latest transformation state\n        /// </summary>\n        /// <returns></returns>\n        public override bool Perform()\n        {\n            if (m_containsPrefab) MyEditor.Static.EditPrefabContainer(m_activeContainer);\n            foreach (MyEditorTransformData transformData in m_endTransformData)\n            {\n                MyEditorGizmo.MoveAndRotateObject(transformData.GetPosition(), transformData.GetOrientation(), transformData.GetEntity());\n            }\n            MyEditor.Static.CheckAllCollidingObjects();\n            return true;\n        }\n\n        /// <summary>\n        /// Transform entities to starting transformation state\n        /// </summary>\n        /// <returns></returns>\n        public override bool Rollback()\n        {\n            if (m_containsPrefab) MyEditor.Static.EditPrefabContainer(m_activeContainer);\n            foreach (MyEditorTransformData transformData in m_startTransformData)\n            {\n                MyEditorGizmo.MoveAndRotateObject(transformData.GetPosition(), transformData.GetOrientation(), transformData.GetEntity());\n            }\n            MyEditor.Static.CheckAllCollidingObjects();\n            return true;\n        }\n\n        public void AddStartData(MyEditorTransformData startData)\n        {\n            if (startData.GetEntity() is MyPrefabBase) m_containsPrefab = true;\n            m_startTransformData.Add(startData);\n        }\n\n        public void AddEndData(MyEditorTransformData endData)\n        {\n            m_endTransformData.Add(endData);\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Editor/MyEditorActionRandomSector.cs",
    "content": "﻿using MinerWars.AppCode.Game.Managers.EntityManager.Entities;\nusing MinerWars.AppCode.Game.Voxels;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.AppCode.Game.GUI;\nusing System.Threading;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.GUI.Core;\n\nnamespace MinerWars.AppCode.Game.Editor\n{\n    class MyEditorActionRandomSector : MyEditorActionWithObjectBuildersBase\n    {\n        public MyEditorActionRandomSector()\n            : base()\n        {\n        }\n\n        public override bool Perform()\n        {\n            MyGuiManager.AddScreen(new MyGuiScreenEditorProgress(MyTextsWrapperEnum.LoadingPleaseWait, false));\n            MyEditorGizmo.ClearSelection();\n            MyEditor.Static.StartBackgroundThread(new Thread(new ThreadStart(MyGuiScreenGamePlay.Static.CreateRandomWorld)));\n            return true;\n        }\n\n        public override bool Rollback()\n        {\n            //TODO\n            AddOrCreateInBackgroundThread();\n            return true;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Editor/MyEditorActionVoxelHand.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Entities.VoxelHandShapes;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Voxels;\nusing MinerWars.AppCode.Game.Voxels;\nusing SysUtils.Utils;\n\nnamespace MinerWars.AppCode.Game.Editor\n{\n    /// <summary>\n    /// Voxel hand undo/redo action\n    /// </summary>\n    class MyEditorActionVoxelHand : MyEditorActionBase\n    {\n        private MyVoxelHandShape m_voxelHandShape;\n        private List<MyVoxelHandShape> m_voxelShapes;\n\n        public MyEditorActionVoxelHand(MyVoxelMap voxelMap, MyVoxelHandShape voxelHandShape)\n            : base(voxelMap)\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyEditorActionVoxelHand::ctor\");\n            m_voxelHandShape = voxelHandShape;\n            m_voxelShapes = voxelMap.GetVoxelHandShapes();\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        public override bool Perform()\n        {\n            foreach (MyEntity entity in ActionEntities)\n            {\n                MyVoxelMap voxelMap = (MyVoxelMap)entity;\n                voxelMap.AddVoxelHandShape(m_voxelHandShape, true);\n            }\n            return true;\n        }\n\n        public override bool Rollback()\n        {\n            MyCommonDebugUtils.AssertDebug(false, \"Rollback called, but voxel hands are not undoable!\");\n            return true;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Editor/MyEditorActionWithObjectBuildersBase.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing MinerWars.AppCode.Game.Prefabs;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.GUI;\nusing System.Threading;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Voxels;\nusing MinerWars.AppCode.Game.Voxels;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.InfluenceSpheres;\nusing MinerWars.AppCode.Game.Entities.Prefabs;\nusing MinerWars.AppCode.Game.Entities.SubObjects;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWarsMath;\n\nnamespace MinerWars.AppCode.Game.Editor\n{\n    using App;\n    using Managers;\n    using Managers.EntityManager;\n    using MinerWars.AppCode.Game.Managers.Session;\n    using MinerWars.AppCode.Game.Entities.WayPoints;\n    using MinerWars.AppCode.Game.Entities.InfluenceSpheres;\n\n    /// <summary>\n    /// Base class for all actions, that create/remove some/all entities\n    /// </summary>\n    abstract class MyEditorActionWithObjectBuildersBase : MyEditorActionBase\n    {\n        #region Fields\n\n        protected class ObjectBuilderCreate\n        {\n            public Matrix Matrix;\n            public MyMwcObjectBuilder_Base ObjectBuilder;\n            public Vector2? ScreenPosition { get; set; }\n\n            public ObjectBuilderCreate(MyEntity entity, bool getExactCopy = false)\n            {\n                Matrix = entity.WorldMatrix;\n                ObjectBuilder = entity.GetObjectBuilder(getExactCopy);\n            }\n\n            public ObjectBuilderCreate(MyMwcObjectBuilder_Base objectBuilder, Matrix matrix)\n            {\n                Matrix = matrix;\n                ObjectBuilder = objectBuilder;\n            }\n        }\n\n        protected List<ObjectBuilderCreate> ActionObjectBuilders; // Holds object builders actual for entities at the moment of creation of this action\n\n        #endregion\n\n        #region Methods\n        public MyEditorActionWithObjectBuildersBase()\n        {\n        }\n\n        protected void Init(int objectBuildersCount)\n        {\n            if(ActionObjectBuilders == null) ActionObjectBuilders = new List<ObjectBuilderCreate>(objectBuildersCount);\n        }\n\n        public MyEditorActionWithObjectBuildersBase(MyEntity actionEntity, bool getExactCopy = false)\n            : base(actionEntity)\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyEditorActionWithObjectBuildersBase::ctor\");\n            this.Init(1);\n            ActionObjectBuilders.Add(new ObjectBuilderCreate(actionEntity, getExactCopy));\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        public MyEditorActionWithObjectBuildersBase(List<MyEntity> actionEntities, bool getExactCopies = false)\n            : base(actionEntities)\n        {\n            this.Init(actionEntities.Count);\n            foreach (MyEntity actionEntity in actionEntities)\n            {\n                ActionObjectBuilders.Add(new ObjectBuilderCreate(actionEntity, getExactCopies));\n            }\n        }\n\n        public MyEditorActionWithObjectBuildersBase(MyMwcObjectBuilder_Base actionObjectBuilder, Matrix matrix)\n            : base((MyEntity)null)\n        {\n            this.Init(1);\n            ActionObjectBuilders.Add(new ObjectBuilderCreate(actionObjectBuilder, matrix));\n        }\n\n        /// <summary>\n        /// Adds object builder to current action object builders list\n        /// </summary>\n        /// <param name=\"actionObjectBuilder\"></param>\n        public void AddEntityObjectBuilder(MyMwcObjectBuilder_Base actionObjectBuilder, Matrix matrix)\n        {\n            ActionObjectBuilders.Add(new ObjectBuilderCreate(actionObjectBuilder, matrix));\n        }\n\n        /// <summary>\n        /// Add or create entities(in separate thread if needed - voxelmaps)\n        /// </summary>\n        internal void AddOrCreateInBackgroundThread()\n        {\n            // Perform in separate thread only for voxel maps\n            if (ActionObjectBuilders.Find(a => a.ObjectBuilder is MyMwcObjectBuilder_VoxelMap) != null)\n            {\n                Thread thread = new Thread(new ThreadStart(this.AddOrCreate));\n                thread.Name = \"AddOrCreate\";\n                MyEditor.Static.StartBackgroundThread(thread);\n                MyGuiManager.AddScreen(new MyGuiScreenEditorProgress(MyTextsWrapperEnum.LoadingPleaseWait, false));\n            }\n            else\n            {\n                AddOrCreate();\n            }\n        }\n\n        /// <summary>\n        /// Removes entities(in separate thread if needed - voxelmaps)\n        /// </summary>\n        internal void RemoveInBackgroundThread()\n        {\n            // Remove in separate thread only for voxel maps\n            if (ActionEntities.OfType<MyVoxelMap>().Any())\n            {\n                Thread thread = new Thread(new ThreadStart(this.RemoveFromScene));\n                thread.Name = \"RemoveFromScene\";\n                MyEditor.Static.StartBackgroundThread(thread);\n                MyGuiManager.AddScreen(new MyGuiScreenEditorProgress(MyTextsWrapperEnum.LoadingPleaseWait, false));\n            }\n            else\n            {\n                RemoveFromScene();\n            }\n            \n        }\n\n        /// <summary>\n        /// RemoveAndCreateInBackgroundThread\n        /// </summary>\n        internal void RemoveAndCreateInBackgroundThread()\n        {\n            Thread thread = new Thread(new ThreadStart(this.RemoveAndCreate));\n            thread.Name = \"RemoveAndCreate\";\n            MyEditor.Static.StartBackgroundThread(thread);\n            MyGuiManager.AddScreen(new MyGuiScreenEditorProgress(MyTextsWrapperEnum.LoadingPleaseWait, false));\n        }\n\n        /// <summary>\n        /// RemoveAndCreate\n        /// </summary>\n        void RemoveAndCreate()\n        {\n            RemoveFromScene();\n            AddOrCreate();\n        }\n\n        /// <summary>\n        /// Remove all entities, possibly in a separate thread\n        /// </summary>\n        internal void RemoveAllInBackgroundThread()\n        {\n            //MyGuiManager.AddScreen(new MyGuiScreenEditorProgress(MyTextsWrapperEnum.LoadingPleaseWait, false));\n            //MyEditor.Static.StartBackgroundThread(new Thread(new ThreadStart(this.RemoveAllEntities)));\n            \n            // Just do it in the foreground.\n            RemoveAllEntities();\n        }\n\n        /// <summary>\n        /// Create entities from action object builders\n        /// </summary>\n        void AddOrCreate()\n        {\n            MyEditorGizmo.ClearSelection();\n\n            // Once entities has been created in this action, they remain and if needed, are only removed/added to scene\n            if (ActionEntities != null && ActionEntities.Count > 0)\n            {\n                foreach (MyEntity actionEntity in ActionEntities)\n                {\n                    AddToScene(actionEntity);\n                }\n            }\n            else\n            {\n                // If no ActionEntites are present, create them from provided object builders\n                foreach (ObjectBuilderCreate crate in ActionObjectBuilders)\n                {                    \n                    CreateFromObjectBuilder(crate.ObjectBuilder, crate.Matrix, crate.ScreenPosition);\n                }\n            }\n            \n            // Link the new entities and clean up waypoint vertices\n            foreach (var e in ActionEntities)\n                e.Link();\n            MyWayPointGraph.DeleteNullVerticesFromPaths();\n\n            // When copying a single waypoint, connect it to its source\n            if (this is MyEditorActionEntityCopy && ActionEntities.Count == 1 && ActionEntities[0] is MyWayPoint)\n            {\n                var source = (this as MyEditorActionEntityCopy).SourceEntities[0] as MyWayPoint;\n                if (source != null)\n                    MyWayPoint.Connect(source, ActionEntities[0] as MyWayPoint);\n            }\n\n            // When copying prefabs, connect snap points connections\n            if (this is MyEditorActionEntityCopy)\n            {\n                MyEditor.Static.CopySnapPointLinks((this as MyEditorActionEntityCopy).SourceEntities, (this as MyEditorActionEntityCopy).RemapContext);\n            }\n\n            MyEditor.Static.IssueCheckAllCollidingObjects();\n        }\n\n        void CreateFromObjectBuilder(MyMwcObjectBuilder_Base objectBuilder, Matrix matrix, Vector2? screenPosition)\n        {\n            MyEntity actionEntity = CreateEntity(null, objectBuilder, matrix, screenPosition);\n            if (actionEntity != null)\n            {\n                AddEntity(actionEntity);\n                AddToScene(actionEntity);\n            }\n        }\n\n        /// <summary>\n        /// Adds entity to scene\n        /// </summary>\n        /// <param name=\"entity\"></param>\n        protected virtual void AddToScene(MyEntity entity)\n        {\n            //add entity into world if possible to ensure we manipulate with object in scene\n            if (!(entity is MyPrefabBase))\n            {\n                // Quit container edit mode if entity was created in non-edit mode\n                if (m_activeContainer == null && MyEditor.Static.IsEditingPrefabContainer()) \n                    MyEditor.Static.ExitActivePrefabContainer();\n\n                MyEntities.Add(entity);\n            }\n            else\n            {\n                // In case undo/redo is performed on prefab, make sure that its parent container is switched to edit mode\n                MyPrefabBase prefab = (MyPrefabBase)entity;\n                MyEditor.Static.EditPrefabContainer(m_activeContainer);\n                MyEditor.Static.GetEditedPrefabContainer().AddPrefab(prefab);\n            }\n\n            // adding an entity will make its type selectable\n            Type type = null;\n            if (entity is MyPrefabBase || entity is MyPrefabContainer) type = typeof(MyPrefabBase);\n            else if (entity is MyWayPoint) type = typeof(MyWayPoint);\n            else if (entity is MyVoxelMap) type = typeof(MyVoxelMap);\n            else if (entity is MyDummyPoint) type = typeof(MyDummyPoint);\n            else if (entity is MySpawnPoint) type = typeof(MySpawnPoint);\n            else if (entity is MyInfluenceSphere) type = typeof(MyInfluenceSphere);\n            if (type != null)\n            {\n                MyEntities.SetTypeHidden(type, false);\n                MyEntities.SetTypeSelectable(type, true);\n            }\n            \n            MyEditorGizmo.AddEntityToSelection(entity);\n        }\n\n        /// <summary>\n        /// Remove all action entities\n        /// </summary>\n        protected virtual void RemoveFromScene()\n        {\n            foreach (MyEntity actionEntity in ActionEntities)\n            {\n                //dont delete player ship\n                if (actionEntity == MySession.PlayerShip)\n                {\n                    continue;\n                }\n\n                MyEditorGizmo.RemoveEntityFromSelection(actionEntity);\n\n                if (actionEntity == MyEditor.Static.GetEditedPrefabContainer())\n                {\n                    MyEditor.Static.ResetActivePrefabContainer();\n                }\n\n                MyEditor.Static.DeleteEntityFromCollidingList(actionEntity);\n\n                if (!(actionEntity is MyPrefabBase))\n                {\n                    if (m_activeContainer == null && MyEditor.Static.IsEditingPrefabContainer())\n                        MyEditor.Static.ExitActivePrefabContainer();\n                }\n                else\n                {\n                    MyEditor.Static.EditPrefabContainer(m_activeContainer);\n                }\n\n                actionEntity.MarkForClose();\n                \n                MyEditor.Static.RecheckAllColidingEntitesAndClearNonColiding();\n            }\n\n            ActionEntities.Clear();\n\n            MyAudio.AddCue2D(MySoundCuesEnum.GuiEditorObjectDelete);\n        }\n\n        /// <summary>\n        /// Creates new entity based on its object builder\n        /// </summary>\n        /// <param name=\"hudLabelText\"></param>\n        /// <param name=\"objectBuilder\"></param>\n        /// <returns></returns>\n        protected virtual MyEntity CreateEntity(string hudLabelText, MyMwcObjectBuilder_Base objectBuilder, Matrix matrix, Vector2? screenPosition)\n        {\n            MyEntity entity = null;\n            if (objectBuilder is MyMwcObjectBuilder_PrefabBase)\n            {\n                //When creating prefabs, it will never happen that active container does not exist\n                entity = m_activeContainer.CreateAndAddPrefab(hudLabelText, objectBuilder as MyMwcObjectBuilder_PrefabBase);\n            }\n            else\n            {\n                entity = MyEntities.CreateFromObjectBuilder(hudLabelText, objectBuilder, matrix);\n            }\n            \n            return entity;\n        }\n\n        /// <summary>\n        /// Removes all entities - TODO - this will have to be unified in MyEntities.cs\n        /// </summary>\n        void RemoveAllEntities()\n        {\n            //MyEditor.Static.DeleteAllFromCollidingList();            \n            MyEditor.Static.CollidingElements.Clear();\n            MyEntities.CollisionsElements.Clear();\n            MyEditorGizmo.ClearSelection();\n            MyEntities.CloseAll(false);\n            MyVoxelMaps.RemoveAll();\n        }\n\n        #endregion\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Editor/MyEditorActions.cs",
    "content": "﻿using System.Collections.Generic;\nusing MinerWars.AppCode.Game.Utils;\n\nnamespace MinerWars.AppCode.Game.Editor\n{\n    /// <summary>\n    /// Editor actions history - used for Undo/Redo operations\n    /// </summary>\n    static class MyEditorActions\n    {\n        private static Stack<MyEditorActionBase> m_undoStack;\n        private static Stack<MyEditorActionBase> m_redoList;\n\n        /// <summary>\n        /// Loads action history\n        /// </summary>\n        public static void LoadData()\n        {\n            m_undoStack = new Stack<MyEditorActionBase>();\n            m_redoList = new Stack<MyEditorActionBase>();\n        }\n\n        /// <summary>\n        /// Unloads action history\n        /// </summary>\n        public static void UnloadData()\n        {\n            ResetActionHistory();\n        }\n\n        /// <summary>\n        /// Clears action history\n        /// </summary>\n        public static void ResetActionHistory()\n        {\n            if (m_undoStack != null) m_undoStack.Clear();\n            if (m_redoList != null) m_redoList.Clear();\n        }\n\n        /// <summary>\n        /// Adds action to action history\n        /// </summary>\n        /// <param name=\"editorAction\"></param>\n        public static void AddAction(MyEditorActionBase editorAction)\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"editorAction.Perform()\");\n            editorAction.Perform();\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"m_redoList.Clear()\");\n            m_redoList.Clear();\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"m_undoStack.Push()\");\n            m_undoStack.Push(editorAction);\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"if..\");\n            //While doing new actions, we must make room for new UNDO operations by removing old REDO actions\n            if ((m_redoList != null && m_redoList.Count > 0) && (m_undoStack.Count == MyEditorConstants.MAX_UNDO_REDO_HISTORY_LIMIT))\n            {\n               // m_redoList.RemoveLast();\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        /// <summary>\n        /// Undo action\n        /// </summary>\n        public static void Undo()\n        {\n            //if there are no actions, there is nothing to UNDO\n            if (m_undoStack != null && m_undoStack.Count > 0)\n            {\n                //rollback last action performed and put it into REDO stack\n                MyEditorActionBase editorAction = m_undoStack.Pop();\n                editorAction.Rollback();\n                m_redoList.Push(editorAction);\n            }\n\n        }\n\n        /// <summary>\n        /// Redo action\n        /// </summary>\n        public static void Redo()\n        {\n            if (m_redoList != null && m_redoList.Count > 0)\n            {\n                MyEditorActionBase editorAction = m_redoList.Pop();\n                editorAction.Perform();\n                m_undoStack.Push(editorAction);\n            }\n        }\n\n        /// <summary>\n        /// Nothing to undo/redo\n        /// </summary>\n        /// <returns></returns>\n        public static bool IsActionHistoryEmpty()\n        {\n            if (m_undoStack == null || m_undoStack.Count == 0)\n            {\n                return true;\n            }\n            return false;\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Editor/MyEditorDebugDraw.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Utils;\nusing Microsoft.Xna.Framework;\nusing MinerWars.AppCode.Game.Managers.EntityManager.Entities;\nusing MinerWars.AppCode.Game.Voxels;\nusing MinerWars.AppCode.Physics;\nusing MinerWars.AppCode.Game.GUI;    //TODO TEST JK\n\nnamespace MinerWars.AppCode.Game.Editor\n{\n    partial class MyEditor\n    {\n        private bool m_active = false;  //flag if user is in editable mode (in game/editor)\n\n        /// <summary>\n        /// EditorDebugDraw\n        /// </summary>\n        public void EditorDebugDraw()\n        {\n            if (!MyGuiScreenGamePlay.Static.IsEditorActive() && !MyGuiScreenGamePlay.Static.IsIngameEditorActive())\n                return;\n\n            DrawSelectionRectangle();\n            DrawSelectedBounding();\n\n            //@ JK just for debugging selection\n            //DrawDebugSelection();\n        }\n\n\n        // This method takes care of drawing rectangle, that is drawn by dragging mouse to select multiple objects inside rectangle\n        /// <summary>\n        /// DrawSelectionRectangle\n        /// </summary>\n        private void DrawSelectionRectangle()\n        {\n            if (!m_selectionRectangle.IsEmpty)\n            {\n                MyDebugDraw.DrawLine2D(new Vector2(m_selectionRectangle.Left, m_selectionRectangle.Top), new Vector2(m_selectionRectangle.Right, m_selectionRectangle.Top), Color.Green, Color.Green);\n                MyDebugDraw.DrawLine2D(new Vector2(m_selectionRectangle.Right, m_selectionRectangle.Top), new Vector2(m_selectionRectangle.Right, m_selectionRectangle.Bottom), Color.Green, Color.Green);\n                MyDebugDraw.DrawLine2D(new Vector2(m_selectionRectangle.Right, m_selectionRectangle.Bottom), new Vector2(m_selectionRectangle.Left, m_selectionRectangle.Bottom), Color.Green, Color.Green);\n                MyDebugDraw.DrawLine2D(new Vector2(m_selectionRectangle.Left, m_selectionRectangle.Bottom), new Vector2(m_selectionRectangle.Left, m_selectionRectangle.Top), Color.Green, Color.Green);\n            }\n        }\n\n\n        /// <summary>\n        /// DrawSelectedBounding\n        /// </summary>\n        private void DrawSelectedBounding()\n        {\n            if (MyConfig.EditorDisplayUnselectedBounding)\n            {\n                Vector4 color = new Vector4(0.6f, 0.6f, 0.6f, 0.2f);\n                foreach (MyEntity entity in MyEntities.GetEntities())\n                {\n                    entity.DebugDrawBox(color, false);\n                }\n\n                foreach (MyVoxelMap voxelMap in MyVoxelMaps.GetVoxelMaps())\n                {\n                    MyDebugDraw.DrawHiresBoxWireframe(Matrix.CreateScale(voxelMap.GetSize()) * voxelMap.WorldMatrix, new Vector3(0, 0.4f, 0), 0.3f);\n                }\n            }\n\n            if (IsEditingPrefabContainer())\n            {\n                m_activePrefabContainer.DebugDrawBox(new Vector4(1, 1, 0, 0.4f));\n            }\n\n            foreach (MyEntity entity in MyEditorGizmo.SelectedEntities)\n            {\n                if (entity is MyPrefabContainer)\n                {\n                    MyPrefabContainer container = (MyPrefabContainer)entity;\n                    container.DebugDrawBox(new Vector4(0, 1, 0, 0.4f));\n                }\n            }\n        }\n\n\n\n        //@ This stuff is here just for debugging selection\n        /*private MyLine m_testSelectLine;\n        private List<BoundingSphere> m_spheres = new List<BoundingSphere>();\n        /// <summary>\n        /// \n        /// </summary>\n        /// <param name=\"mouseSelectionLine\"></param>\n        private void FillDebugDrawOfSelection(ref MyLine mouseSelectionLine)\n        {\n            m_spheres.Clear();\n            m_testSelectLine = mouseSelectionLine;\n            MyPruningStructure m_PruningStructure = MyPhysics.physicsSystem.GetRigidBodyModule().GetPruningStructure();\n\n            BoundingBox boundingBox = BoundingBoxHelper.InitialBox;\n            BoundingBoxHelper.AddLine(ref m_testSelectLine, ref boundingBox);\n            List<MyRBElement> elements = new List<MyRBElement>(256);\n            m_PruningStructure.OverlapRBAllBoundingBox(ref boundingBox, ref elements);\n\n            foreach (MyRBElement element in elements)\n            {\n                MyEntity entity = ((MinerWars.AppCode.Game.Managers.PhysicsManager.Physics.MyRigidBody)element.GetRigidBody().m_UserData).Entity;\n                BoundingSphere vol = entity.WorldVolume;\n                m_spheres.Add(vol);\n\n                Matrix mat = Matrix.CreateTranslation(entity.OffsetToVolumeCenter);\n                mat = mat * entity.WorldMatrix;\n                vol = new BoundingSphere(mat.Translation, vol.Radius);\n\n                m_spheres.Add(vol);\n            }\n        }\n\n\n        /// <summary>\n        /// DrawDebugSelection\n        /// </summary>\n        private void DrawDebugSelection()\n        {\n            Vector3 vctStart = m_testSelectLine.From;\n            Vector3 vctEnd = m_testSelectLine.To;\n            MyDebugDraw.DrawLine3D(vctStart, vctEnd, Color.Green, Color.Green);\n\n            Vector3 vctColor = new Vector3(1f,0.6f,1f);\n            foreach(BoundingSphere sphere in m_spheres)\n            {\n                Matrix worldMatrix = Matrix.Identity;\n                worldMatrix.Translation = sphere.Center;\n                worldMatrix = Matrix.CreateScale(sphere.Radius) * worldMatrix;\n\n                MyDebugDraw.DrawSphereWireframe(worldMatrix, vctColor, 1f);\n            }\n        }*/\n\n        public void SetActive(bool bEnable) \n        { \n            m_active = bEnable;\n            if (m_active == false)\n            {\n                SwitchToGameplay();\n            }\n        }\n\n        public bool IsActive() \n        { \n            return m_active; \n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Editor/MyEditorGizmo.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing MinerWars.AppCode.Toolkit.Input;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.AppCode.Game.Effects;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Entities.Prefabs;\nusing MinerWars.AppCode.Game.Entities.WayPoints;\nusing MinerWars.AppCode.Game.Entities.Weapons;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Models;\nusing MinerWars.AppCode.Game.Physics;\nusing MinerWars.AppCode.Game.Prefabs;\nusing MinerWars.AppCode.Game.Render;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.VideoMode;\nusing MinerWars.AppCode.Physics;\nusing MinerWars.CommonLIB.AppCode.Utils;\n\nusing SharpDX;\nusing SharpDX.Direct3D9;\nusing SharpDX.Toolkit;\nusing SharpDX.Toolkit.Graphics;\n\nnamespace MinerWars.AppCode.Game.Editor\n{\n    using Byte4 = MinerWarsMath.Graphics.PackedVector.Byte4;\n    using HalfVector2 = MinerWarsMath.Graphics.PackedVector.HalfVector2;\n    using HalfVector4 = MinerWarsMath.Graphics.PackedVector.HalfVector4;\n    using Vector2 = MinerWarsMath.Vector2;\n    using Vector3 = MinerWarsMath.Vector3;\n    using Vector4 = MinerWarsMath.Vector4;\n    using Quaternion = MinerWarsMath.Quaternion;\n    using Rectangle = MinerWarsMath.Rectangle;\n    using Matrix = MinerWarsMath.Matrix;\n    using Color = MinerWarsMath.Color;\n    using BoundingBox = MinerWarsMath.BoundingBox;\n    using BoundingSphere = MinerWarsMath.BoundingSphere;\n    using BoundingFrustum = MinerWarsMath.BoundingFrustum;\n    using MathHelper = MinerWarsMath.MathHelper;\n    using Ray = MinerWarsMath.Ray;\n    using Plane = MinerWarsMath.Plane;\n\n    #region Enums\n\n    public enum GizmoAxis\n    {\n        X,\n        Y,\n        Z,\n        XY,\n        ZX,\n        YZ,\n        NONE\n    }\n\n    public enum GizmoMode\n    {\n        TRANSLATE,\n        ROTATE,\n    }\n\n    public enum PivotType\n    {\n        MODEL_CENTER,\n        OBJECT_CENTER,\n        SELECTION_CENTER\n    }\n\n    public enum TransformSpace\n    {\n        LOCAL,\n        WORLD\n    }\n\n\n    public enum RotateSnapping\n    {\n        NONE,\n        FIVE_DEGREES,\n        FIFTEEN_DEGREES,\n        FORTYFIVE_DEGREES,\n        NINETY_DEGREES\n    }\n\n    #endregion\n\n    /// <summary>\n    /// This class represents transformation gizmo, that provides users of editor translation and rotation functionality on\n    /// selected objects(both mouse and keyboard input way)\n    /// </summary>\n    static class MyEditorGizmo\n    {\n\n        struct MyPositionColor\n        {\n            public MyPositionColor(Vector3 pos, Color col)\n            {\n                Position = pos;\n                Color = col;\n            }\n\n            public Vector3 Position;\n            public Color Color;\n        }\n\n        #region Properties\n\n        /// <summary>\n        /// Action created when transformation was done with some entities\n        /// </summary>\n        private static MyEditorActionEntityTransform m_transformAction;\n\n        /// <summary>\n        /// Enables/Disables precision mode\n        /// </summary>\n        private static bool m_precisionMode = false;\n\n        /// <summary>\n        /// The value to adjust all transformation when precisionMode is active.\n        /// </summary>\n        private static float m_precisionModeScale = 0.1f;\n\n        /// <summary>\n        /// Gizmo quaternion rotation\n        /// </summary>\n        private static Quaternion m_rotation { get { return Quaternion.CreateFromRotationMatrix(Rotation); } }\n\n        /// <summary>\n        /// Translation scale snap delta\n        /// </summary>\n        private static Vector3 m_translationScaleSnapDelta;\n\n        /// <summary>\n        /// Rotation snap delta\n        /// </summary>\n        private static float m_rotationSnapDelta;\n\n        /// <summary>\n        /// When moving objects with keys, wait this time before it will be move smoothly by holding the key\n        /// </summary>\n        private static int m_delayObjectMovementInMillis;\n\n        /// <summary>\n        /// When moving objects with keys, wait this time before playing movement sound\n        /// </summary>\n        private static int m_delayMovementSoundInMillis;\n\n        /// <summary>\n        /// Used when we need to modify collection during iterating of its entities\n        /// </summary>\n        private static List<MyEntity> m_safeIterationHelper;\n\n        /// <summary>\n        /// Last cursor position\n        /// </summary>\n        private static Vector2 m_lastCursorPosition;\n\n        /// <summary>\n        /// Used for calculation of rotation delta to be displayed in editor info\n        /// </summary>\n        private static float m_deltaYaw, m_deltaPitch, m_deltaRoll;\n\n        /// <summary>\n        /// \n        /// </summary>\n        private static Vector2 m_oldCursorPosition;\n\n        /// <summary>\n        /// Local gizmo forward\n        /// </summary>\n        private static Vector3 m_localForward = Vector3.Forward;\n\n        /// <summary>\n        /// Local gizmo up\n        /// </summary>\n        private static Vector3 m_localUp = Vector3.Up;\n\n        /// <summary>\n        /// Local gizmo right\n        /// </summary>\n        private static Vector3 m_localRight;\n\n        /// <summary>\n        /// Screen scale matrix\n        /// </summary>\n        private static Matrix m_screenScaleMatrix;\n\n        /// <summary>\n        /// Screen scale\n        /// </summary>\n        private static float m_screenScale;\n\n        /// <summary>\n        /// Input scale\n        /// </summary>\n        private static float m_inputScale;\n\n        /// <summary>\n        /// Object oriented world\n        /// </summary>\n        private static Matrix m_objectOrientedWorld;\n\n        /// <summary>\n        /// Axis-aligned world\n        /// </summary>\n        private static Matrix m_axisAlignedWorld;\n\n        /// <summary>\n        /// Local space of models used for gizmo\n        /// </summary>\n        private static Matrix[] m_modelLocalSpace;\n\n        /// <summary>\n        /// Translation model\n        /// </summary>\n        private static MyModel m_translationModel;\n\n        /// <summary>\n        /// Rotation model\n        /// </summary>\n        private static MyModel m_rotationModel;\n\n        /// <summary>\n        /// Used for all drawing, assigned by local- or world-space matrices\n        /// </summary>\n        private static Matrix m_gizmoWorld = Matrix.Identity;\n\n        /// <summary>\n        /// The matrix used to apply to your whole scene, usually matrix.identity (default scale, origin on 0,0,0 etc.)\n        /// </summary>\n        private static Matrix m_sceneWorld;\n\n        /// <summary>\n        /// Translation Line vertices\n        /// </summary>\n        private static MyPositionColor[] m_translationLineVertices;\n\n        /// <summary>\n        /// Translation line length\n        /// </summary>\n        private static float m_lineLength = 3f;\n\n        /// <summary>\n        /// Translation line offset\n        /// </summary>\n        private static float m_lineOffset = 0.5f;\n\n        /// <summary>\n        /// Colors used for each gizmo axis\n        /// </summary>\n        private static Color[] m_axisColors;\n\n        /// <summary>\n        /// Highlighted gizmo axis color\n        /// </summary>\n        private static Color m_highlightColor;\n\n        /// <summary>\n        /// Offset of text drawn for each axis(X, Y, Z)\n        /// </summary>\n        private static Vector3 m_axisTextOffset = new Vector3(0, 0.5f, 0);\n\n        /// <summary>\n        /// Text Wrappers for axis texts\n        /// </summary>\n        private static List<MyTextsWrapperEnum> m_axisTexts;\n\n        /// <summary>\n        /// Translation delta vector\n        /// </summary>\n        private static Vector3 m_translationDelta;\n\n        /// <summary>\n        /// Last intersection position with plane of currently selected axis\n        /// </summary>\n        private static Vector3 m_lastIntersectionPosition;\n\n        /// <summary>\n        /// Current intersection position with plane of currently selected axis\n        /// </summary>\n        private static Vector3 m_intersectPosition;\n\n        /// <summary>\n        /// Gizmo axis bounding box thickness\n        /// </summary>\n        private static float m_boxThickness = 0.3f;\n\n        /// <summary>\n        /// Gizmo axis sphere radius\n        /// </summary>\n        private static float m_boundingSphereRadius = 1f;\n\n        /// <summary>\n        /// Vector from gizmo center to mouse intersection position (user never clicks to the center of gizmo)\n        /// </summary>\n        private static Vector3? m_gizmoDelta = null;\n\n        private static Vector3? m_gizmoStartPosition = null;\n        private static Matrix? m_gizmoStartRotation = null;\n\n        private static Vector3 m_startCameraForward;\n        private static Vector3 m_startCameraUp;\n        private static Vector3 m_startObjectPosition;\n\n        private static Vector2 m_mouseStartPosition;\n\n        // -- BoundingBoxes -- //\n        #region BoundingBoxes\n\n        private static MyOrientedBoundingBox X_Box\n        {\n            get\n            {\n                return new MyOrientedBoundingBox(Vector3.Transform(new Vector3((m_lineLength / 2) + (m_lineOffset * 2), 0, 0), m_gizmoWorld),\n                    Vector3.Transform(new Vector3(m_lineLength / 2, 0.2f, 0.2f), m_screenScaleMatrix), m_rotation);\n            }\n        }\n\n        private static MyOrientedBoundingBox Y_Box\n        {\n            get\n            {\n                return new MyOrientedBoundingBox(Vector3.Transform(new Vector3(0, (m_lineLength / 2) + (m_lineOffset * 2), 0), m_gizmoWorld),\n                    Vector3.Transform(new Vector3(0.2f, m_lineLength / 2, 0.2f), m_screenScaleMatrix), m_rotation);\n            }\n        }\n\n        private static MyOrientedBoundingBox Z_Box\n        {\n            get\n            {\n                return new MyOrientedBoundingBox(Vector3.Transform(new Vector3(0, 0, (m_lineLength / 2) + (m_lineOffset * 2)), m_gizmoWorld),\n                    Vector3.Transform(new Vector3(0.2f, 0.2f, m_lineLength / 2), m_screenScaleMatrix), m_rotation);\n            }\n        }\n\n        private static MyOrientedBoundingBox XZ_Box\n        {\n            get\n            {\n                return new MyOrientedBoundingBox(Vector3.Transform(new Vector3(m_lineOffset, 0, m_lineOffset), m_gizmoWorld),\n                    Vector3.Transform(new Vector3(m_lineOffset, m_boxThickness, m_lineOffset), m_screenScaleMatrix), m_rotation);\n            }\n        }\n\n        private static MyOrientedBoundingBox XY_Box\n        {\n            get\n            {\n                return new MyOrientedBoundingBox(Vector3.Transform(new Vector3(m_lineOffset, m_lineOffset, 0), m_gizmoWorld),\n                    Vector3.Transform(new Vector3(m_lineOffset, m_lineOffset, m_boxThickness), m_screenScaleMatrix), m_rotation);\n            }\n        }\n\n        private static MyOrientedBoundingBox YZ_Box\n        {\n            get\n            {\n                return new MyOrientedBoundingBox(Vector3.Transform(new Vector3(0, m_lineOffset, m_lineOffset), m_gizmoWorld),\n                    Vector3.Transform(new Vector3(m_boxThickness, m_lineOffset, m_lineOffset), m_screenScaleMatrix), m_rotation);\n            }\n        }\n\n        #endregion\n\n        // -- BoundingSpheres -- //\n        #region BoundingSpheres\n\n        private static BoundingSphere X_Sphere\n        {\n            get { return new BoundingSphere(Vector3.Transform(m_translationLineVertices[1].Position, m_gizmoWorld), m_boundingSphereRadius * m_screenScale); }\n        }\n\n        private static BoundingSphere Y_Sphere\n        {\n            get { return new BoundingSphere(Vector3.Transform(m_translationLineVertices[7].Position, m_gizmoWorld), m_boundingSphereRadius * m_screenScale); }\n        }\n\n        private static BoundingSphere Z_Sphere\n        {\n            get { return new BoundingSphere(Vector3.Transform(m_translationLineVertices[13].Position, m_gizmoWorld), m_boundingSphereRadius * m_screenScale); }\n        }\n        #endregion\n\n        #endregion\n\n        #region Fields\n\n        /// <summary>\n        /// Selected entities\n        /// </summary>\n        public static List<MyEntity> SelectedEntities = new List<MyEntity>();\n\n        private static MyPrefabSnapPoint m_selectedSnapPoint;\n        /// <summary>\n        /// SelectedSnapPoint\n        /// </summary>\n        public static MyPrefabSnapPoint SelectedSnapPoint\n        {\n            get\n            {\n                return m_selectedSnapPoint;\n            }\n            set\n            {\n                if (m_selectedSnapPoint != null)\n\t            {\n                    // Clear highlighting on previous snap point objects\n                    m_selectedSnapPoint.Prefab.ClearHighlightning();\n\n                    List<MyEntity> linkedEntities = new List<MyEntity>();\n                    MyEditor.Static.GetLinkedEntities(m_selectedSnapPoint.Prefab, linkedEntities, null);\n                    linkedEntities.ForEach(a => a.ClearHighlightning());\n\t            }\n\n                if (value != null)\n                {\n                    // Set highlighting on selected snap point objects\n                    value.Prefab.HighlightEntity(ref MyEditorConstants.LINKED_OBJECT_DIFFUSE_COLOR_ADDITION);\n                    \n                    List<MyEntity> linkedEntities = new List<MyEntity>();\n                    MyEditor.Static.GetLinkedEntities(value.Prefab, linkedEntities, null);\n                    linkedEntities.ForEach(a => a.HighlightEntity(ref MyEditorConstants.LINKED_OBJECT_DIFFUSE_COLOR_ADDITION));\n                }\n\n                m_selectedSnapPoint = value;\n            }\n        }\n\n        /// <summary>\n        /// Enabled only when some object is selected\n        /// </summary>\n        public static bool Enabled;\n\n        /// <summary>\n        /// True if any gizmo transformation is active\n        /// </summary>\n        public static bool TransformationActive;\n\n        /// <summary>\n        /// True if any gizmo transformation was active\n        /// </summary>\n        public static bool TransformationActivePrevious;\n\n        /// <summary>\n        /// Currently active axis\n        /// </summary>\n        private static GizmoAxis _activeAxis;\n        public static GizmoAxis ActiveAxis\n        {\n            get\n            {\n                return _activeAxis;\n            }\n            set\n            {\n                if (_activeAxis != GizmoAxis.NONE)\n                    LastActiveAxis = _activeAxis;\n                _activeAxis = value;\n            }\n        }\n        private static GizmoAxis LastActiveAxis;\n\n        /// <summary>\n        /// Currently active mode\n        /// </summary>\n        public static GizmoMode ActiveMode = GizmoMode.TRANSLATE;\n\n        /// <summary>\n        /// Currently active mode\n        /// </summary>\n        public static RotateSnapping ActiveRotateSnapping = RotateSnapping.NINETY_DEGREES;\n\n        /// <summary>\n        /// Currently active space\n        /// </summary>\n        public static TransformSpace ActiveSpace = TransformSpace.WORLD;\n\n        /// <summary>\n        /// Currently active pivot\n        /// </summary>\n        public static PivotType ActivePivot;\n\n        /// <summary>\n        /// Gizmo position\n        /// </summary>\n        public static Vector3 Position;\n\n        /// <summary>\n        /// Gizmo rotation\n        /// </summary>\n        public static Matrix Rotation = Matrix.Identity;\n\n        /// <summary>\n        /// Rotation amount in degrees\n        /// </summary>\n        public static int RotationAmountInDegrees;\n\n        /// <summary>\n        /// Snapping enabled/disabled\n        /// </summary>\n        public static bool SnapEnabled = true;\n\n        /// <summary>\n        /// Translation snap value\n        /// </summary>\n        public static float TranslationSnapValue = 5;\n\n        /// <summary>\n        /// Rotation snap value\n        /// </summary>\n        public static float RotationSnapValue = 45;\n\n        public static readonly float TRANSLATION_MAX_DISTANCE_FROM_CAMERA = MyCamera.FAR_PLANE_DISTANCE / 2;\n\n        #endregion\n\n        #region Load/Unload Methods\n\n\n        public static void LoadData()\n        {\n            ActiveSpace = TransformSpace.LOCAL;\n            SelectedEntities.Clear();\n            m_safeIterationHelper = new List<MyEntity>(100);\n\n            m_sceneWorld = Matrix.Identity;\n\n            // -- Set local-space offset -- //\n            m_modelLocalSpace = new Matrix[3];\n            m_modelLocalSpace[0] = Matrix.CreateWorld(new Vector3(m_lineLength, 0, 0), Vector3.Up, Vector3.Right);\n            m_modelLocalSpace[1] = Matrix.CreateWorld(new Vector3(0, m_lineLength, 0), Vector3.Left, Vector3.Up);\n            m_modelLocalSpace[2] = Matrix.CreateWorld(new Vector3(0, 0, m_lineLength), Vector3.Right, Vector3.Backward);\n\n            // -- Colors: X,Y,Z,Highlight -- //\n            m_axisColors = new Color[3];\n            m_axisColors[0] = Color.Red;\n            m_axisColors[1] = Color.Green;\n            m_axisColors[2] = Color.Blue;\n            m_highlightColor = Color.Gold;\n\n            m_axisTexts = new List<MyTextsWrapperEnum>();\n            m_axisTexts.Add(MyTextsWrapperEnum.AxisX);\n            m_axisTexts.Add(MyTextsWrapperEnum.AxisY);\n            m_axisTexts.Add(MyTextsWrapperEnum.AxisZ);\n\n            // fill array with vertex-data\n            #region Fill Axis-Line array\n            List<MyPositionColor> vertexList = new List<MyPositionColor>(18);\n\n            // helper to apply colors\n            Color xColor = m_axisColors[0];\n            Color yColor = m_axisColors[1];\n            Color zColor = m_axisColors[2];\n\n            float doubleLineOffset = m_lineOffset * 2;\n\n            // -- X Axis -- // index 0 - 5\n            vertexList.Add(new MyPositionColor(new Vector3(m_lineOffset, 0, 0), xColor));\n            vertexList.Add(new MyPositionColor(new Vector3(m_lineLength, 0, 0), xColor));\n\n            vertexList.Add(new MyPositionColor(new Vector3(doubleLineOffset, 0, 0), xColor));\n            vertexList.Add(new MyPositionColor(new Vector3(doubleLineOffset, doubleLineOffset, 0), xColor));\n\n            vertexList.Add(new MyPositionColor(new Vector3(doubleLineOffset, 0, 0), xColor));\n            vertexList.Add(new MyPositionColor(new Vector3(doubleLineOffset, 0, doubleLineOffset), xColor));\n\n            // -- Y Axis -- // index 6 - 11\n            vertexList.Add(new MyPositionColor(new Vector3(0, m_lineOffset, 0), yColor));\n            vertexList.Add(new MyPositionColor(new Vector3(0, m_lineLength, 0), yColor));\n\n            vertexList.Add(new MyPositionColor(new Vector3(0, doubleLineOffset, 0), yColor));\n            vertexList.Add(new MyPositionColor(new Vector3(doubleLineOffset, doubleLineOffset, 0), yColor));\n\n            vertexList.Add(new MyPositionColor(new Vector3(0, doubleLineOffset, 0), yColor));\n            vertexList.Add(new MyPositionColor(new Vector3(0, doubleLineOffset, doubleLineOffset), yColor));\n\n            // -- Z Axis -- // index 12 - 17\n            vertexList.Add(new MyPositionColor(new Vector3(0, 0, m_lineOffset), zColor));\n            vertexList.Add(new MyPositionColor(new Vector3(0, 0, m_lineLength), zColor));\n\n            vertexList.Add(new MyPositionColor(new Vector3(0, 0, doubleLineOffset), zColor));\n            vertexList.Add(new MyPositionColor(new Vector3(doubleLineOffset, 0, doubleLineOffset), zColor));\n\n            vertexList.Add(new MyPositionColor(new Vector3(0, 0, doubleLineOffset), zColor));\n            vertexList.Add(new MyPositionColor(new Vector3(0, doubleLineOffset, doubleLineOffset), zColor));\n            #endregion\n\n            // -- Convert to array -- //\n            m_translationLineVertices = vertexList.ToArray();\n        }\n\n        /// <summary>\n        /// Load gizmo content\n        /// </summary>\n        public static void LoadContent()\n        {\n\n            m_translationModel = MyModels.GetModelOnlyData(MyModelsEnum.GizmoTranslation);\n            m_rotationModel = MyModels.GetModelOnlyData(MyModelsEnum.GizmoRotation);\n\n        }\n\n        /// <summary>\n        /// Unloads gizmo content\n        /// </summary>\n        public static void UnloadData()\n        {\n            if (SelectedEntities != null) SelectedEntities.Clear();\n            if (m_safeIterationHelper != null) m_safeIterationHelper.Clear();\n            if (m_axisTexts != null) m_axisTexts.Clear();\n        }\n\n        #endregion\n\n        #region Handle Input Methods\n        public static void GizmoTranslation(Vector3 planeVector, Vector3? secondPlaneVector, ref Vector3 worldPosition)\n        {\n            Matrix transform = Matrix.Invert(Rotation);\n            Vector3 localPosition = Vector3.Transform(Position, transform);\n\n            Ray ray;\n\n            bool oneAxisMove = !secondPlaneVector.HasValue;\n\n            Vector3 planeMove = planeVector;\n\n            if (oneAxisMove)\n            {\n                // Choose \"better\" plane: better is that which has lower dot (bigger angle) in the 2D projection\n                var sideDot = MyUtils.Project3dCoordinateTo2dCoordinate(planeVector, m_gizmoWorld).X; // side\n                var upDot = MyUtils.Project3dCoordinateTo2dCoordinate(planeVector, m_gizmoWorld).Y; // up\n                if (Math.Abs(sideDot) < Math.Abs(upDot))\n                {\n                    secondPlaneVector = Vector3.Cross(planeVector, m_startCameraUp);\n                }\n                else\n                {\n                    secondPlaneVector = Vector3.Cross(planeVector, Vector3.Cross(m_startCameraForward, m_startCameraUp));\n                }\n                \n                ray = CalculateRayProjected(planeVector);\n                if (float.IsNaN(ray.Position.X)) return;  // there's no valid axis: don't do anything\n            }\n            else\n            {\n                planeMove += secondPlaneVector.Value;\n                ray = CalculateRay();\n            }\n\n            ray.Position = Vector3.Transform(ray.Position, transform);\n            ray.Direction = Vector3.TransformNormal(ray.Direction, transform);\n\n            if (!m_gizmoStartPosition.HasValue)\n            {\n                m_gizmoStartPosition = localPosition;\n                \n            }\n\n            Plane plane = new Plane(m_gizmoStartPosition.Value, m_gizmoStartPosition.Value + planeVector, m_gizmoStartPosition.Value + secondPlaneVector.Value);\n\n            float? intersection = ray.Intersects(plane);\n            if (intersection.HasValue)\n            {\n                m_intersectPosition = (ray.Position + (ray.Direction * intersection.Value));\n                if (!m_gizmoDelta.HasValue)\n                {\n                    Vector3 gizmo_delta = m_intersectPosition - localPosition;\n\n                    /*\n                    if (planeMove.X != 0) gizmo_delta.X = 0;\n                    if (planeMove.Y != 0) gizmo_delta.Y = 0;\n                    if (planeMove.Z != 0) gizmo_delta.Z = 0;\n                    */\n                    m_gizmoDelta = gizmo_delta;\n                }\n\n                Vector3 newLocalPosition = (m_intersectPosition - m_gizmoDelta.Value);\n\n                //if (oneAxisMove)\n                //{\n                //    Vector3 move = newLocalPosition - localPosition;\n                //    if (move.Length() > 0)\n                //    {\n                //        float lenMoveInAxis = Vector3.Dot(move, planeVector);\n                //        newLocalPosition = localPosition + planeVector * lenMoveInAxis;\n                //    }\n                //    else\n                //    {\n                //        return;\n                //    }\n                //}\n\n                if (planeMove.X == 0) newLocalPosition.X = m_gizmoStartPosition.Value.X;\n                if (planeMove.Y == 0) newLocalPosition.Y = m_gizmoStartPosition.Value.Y;\n                if (planeMove.Z == 0) newLocalPosition.Z = m_gizmoStartPosition.Value.Z;\n\n                worldPosition = Vector3.Transform(newLocalPosition, Rotation);\n            }\n        }\n\n        public static void SnapToGrid(ref Vector3 position, float gridSize)\n        {   \n            position /= gridSize;\n            \n            if (m_gizmoStartPosition != null)\n            {\n                \n                if (!MyMwcUtils.IsZero(m_gizmoStartPosition.Value.X - m_gizmoWorld.Translation.X)) position.X = (float) Math.Round(position.X);\n                if (!MyMwcUtils.IsZero(m_gizmoStartPosition.Value.Y - m_gizmoWorld.Translation.Y)) position.Y = (float) Math.Round(position.Y);\n                if (!MyMwcUtils.IsZero(m_gizmoStartPosition.Value.Z - m_gizmoWorld.Translation.Z)) position.Z = (float) Math.Round(position.Z);\n            }\n            \n\n            position *= gridSize;\n        }\n\n\n        /*\n        private static void SnapRotation(ref Matrix rotation, MyEntity entity)\n        {\n            if (m_gizmoStartRotation != null)\n            {\n                float yawFrom = 0;\n                float pitchFrom = 0;\n                float rollFrom = 0;\n\n                \n                Matrix start = m_gizmoStartRotation.Value;\n                MyUtils.RotationMatrixToYawPitchRoll(ref start, out yawFrom, out pitchFrom, out rollFrom);\n\n                yawFrom = float.IsNaN(yawFrom) ? 0 : yawFrom;\n                pitchFrom = float.IsNaN(pitchFrom) ? 0 : pitchFrom;\n                rollFrom = float.IsNaN(rollFrom) ? 0 : rollFrom;\n\n                float yawTo = 0;\n                float pitchTo = 0;\n                float rollTo = 0;\n                MyUtils.RotationMatrixToYawPitchRoll(ref m_gizmoWorld, out yawTo, out pitchTo, out rollTo);\n\n                yawTo = float.IsNaN(yawTo) ? 0 : yawTo;\n                pitchTo = float.IsNaN(pitchTo) ? 0 : pitchTo;\n                rollTo = float.IsNaN(rollTo) ? 0 : rollTo;\n\n                Vector3 to = new Vector3(yawTo, pitchTo, rollTo);\n\n\n                var fifteenDegsInRadians = MathHelper.ToRadians(15);\n\n                if (ActiveRotateSnapping == RotateSnapping.FIFTEEN_DEGREES)\n                {\n                    to /= fifteenDegsInRadians;\n                    if (!MyMwcUtils.IsZero(yawFrom - yawTo)) to.X = (float)Math.Round(to.X);\n                    if (!MyMwcUtils.IsZero(pitchFrom - pitchTo)) to.Y = (float)Math.Round(to.Y);\n                    if (!MyMwcUtils.IsZero(rollFrom - rollTo)) to.Z = (float)Math.Round(to.Z);\n                    to *= fifteenDegsInRadians;\n                }\n\n                var ninghtyDegsInRadians = MathHelper.ToRadians(90);\n                if (ActiveRotateSnapping == RotateSnapping.NINETY_DEEGREES)\n                {\n                    to /= ninghtyDegsInRadians;\n                    if (!MyMwcUtils.IsZero(yawFrom - yawTo)) to.X = (float)Math.Round(to.X);\n                    if (!MyMwcUtils.IsZero(pitchFrom - pitchTo)) to.Y = (float)Math.Round(to.Y);\n                    if (!MyMwcUtils.IsZero(rollFrom - rollTo)) to.Z = (float)Math.Round(to.Z);\n                    to *= ninghtyDegsInRadians;\n                }\n                \n\n\n                rotation = Matrix.CreateFromYawPitchRoll(to.X, to.Y, to.Z);\n\n\n                // use gizmo position for all PivotTypes except for object-center, it should use the entity.position instead.\n                Vector3 newPosition;\n                Matrix newRotation;\n                GetRotationAndPosition(entity, rotation, out newPosition, out newRotation);\n\n\n                Matrix normalizedMat = new Matrix();\n                normalizedMat.Right = Vector3.Normalize(newRotation.Right);\n                normalizedMat.Forward = Vector3.Normalize(Vector3.Cross(Vector3.Normalize(newRotation.Up), normalizedMat.Right));\n                normalizedMat.Up = Vector3.Normalize(Vector3.Cross(normalizedMat.Right, normalizedMat.Forward));\n                normalizedMat.Translation = newRotation.Translation;\n                normalizedMat.M44 = newRotation.M44;\n\n                MoveAndRotateObject(newPosition, newRotation, entity);\n\n\n                MyUtils.AssertIsValid(rotation);\n            }\n\n        }\n\n         * */\n\n\n        public static Ray CalculateRay()\n        {\n            return MyUtils.ConvertMouseToRay();\n        }\n\n        public static Ray CalculateRayProjected(Vector3 moveAxis)\n        {\n            // Get mouse ray and consider only one move axis\n            Vector2 dir = MyUtils.Project3dCoordinateTo2dCoordinate(moveAxis, m_gizmoWorld);\n            Vector3 start3D = SharpDXHelper.ToXNA(MyMinerGame.Static.GraphicsDevice.Viewport.Project(SharpDXHelper.ToSharpDX(m_gizmoWorld.Translation), SharpDXHelper.ToSharpDX(MyCamera.ProjectionMatrix), SharpDXHelper.ToSharpDX(MyCamera.ViewMatrix), SharpDXHelper.ToSharpDX(Matrix.Identity)));\n            Vector2 start = new Vector2(start3D.X, start3D.Y);\n                           \n            if (float.IsNaN(dir.X))\n            {\n                return new MinerWarsMath.Ray(new Vector3(float.NaN, float.NaN, float.NaN), new Vector3(float.NaN, float.NaN, float.NaN));  // can't project, return NaNs\n            }\n            Vector2 mousePos = MyGuiManager.GetScreenCoordinateFromNormalizedCoordinate(MyGuiManager.MouseCursorPosition);\n            return MyUtils.ConvertMouseToRay(start + dir * Vector2.Dot(mousePos - start, dir));\n        }\n\n        public static void HandleInput(MyGuiInput input)\n        {\n            // -- Select Gizmo Mode -- //\n            if (input.IsEditorControlNewPressed(MyEditorControlEnums.SWITCH_GIZMO_MODE) && !input.IsAnyCtrlKeyPressed())\n            {\n                SwitchGizmoMode();\n            }\n\n            // -- Select Gizmo Mode -- //\n            if (input.IsEditorControlNewPressed(MyEditorControlEnums.SWITCH_GIZMO_MODE) && input.IsAnyCtrlKeyPressed() )\n            {\n                SwitchRotateSnapping();\n            }\n\n\n\n            // -- Cycle TransformationSpaces -- //\n            if (input.IsEditorControlNewPressed(MyEditorControlEnums.SWITCH_GIZMO_SPACE))\n            {\n                if (ActiveSpace == TransformSpace.LOCAL)\n                    ActiveSpace = TransformSpace.WORLD;\n                else\n                {\n                    ActiveSpace = TransformSpace.LOCAL;\n                }\n            }\n\n            // Below are options, that we can add later, but gizmo is prepared for them\n            // however, key mappings will be probably changed\n            // -- Cycle PivotTypes -- //\n            //if (input.IsNewKeyPress(Keys.P))\n            //{\n            //    ActivePivot++;\n            //}\n\n            // -- Toggle PrecisionMode -- //\n            //if (input.IsKeyPress(Keys.K))\n            //{\n            //    m_precisionMode = true;\n            //}\n            //else\n            //{\n            //    m_precisionMode = false;\n            //}\n\n            // -- Toggle Snapping -- //\n            //if (MyEditor.Static.IsEditingPrefabContainer() == false)\n            //{\n            if (input.IsNewKeyPress(Keys.G))            \n            {\n                SnapEnabled = !SnapEnabled;\n            }\n            //}\n\n            if (Enabled)\n            {\n                if (input.IsEditorControlNewPressed(MyEditorControlEnums.PRIMARY_ACTION_KEY))\n                {\n                    // reset for intersection (plane vs. ray)\n                    m_translationDelta = Vector3.Zero;\n                    m_intersectPosition = Vector3.Zero;\n                    // reset for snapping\n                    m_translationScaleSnapDelta = Vector3.Zero;\n                    m_rotationSnapDelta = 0;\n                    m_lastCursorPosition = MyGuiManager.MouseCursorPosition;\n                    m_oldCursorPosition = MyGuiManager.MouseCursorPosition;\n                    m_gizmoDelta = null;\n                    m_gizmoStartPosition = null;\n                    m_mouseStartPosition = m_lastCursorPosition;\n\n                    m_startCameraForward = MyCamera.ForwardVector;\n                    m_startCameraUp = MyCamera.UpVector;\n                    m_startObjectPosition = Position;\n                }\n\n                m_lastIntersectionPosition = m_intersectPosition;\n                TransformationActive = false;\n\n                if (input.IsEditorControlPressed(MyEditorControlEnums.PRIMARY_ACTION_KEY))\n                {\n                    if (MyEditor.TransformLocked)\n                    {\n                        ActiveAxis = LastActiveAxis;\n                    }\n\n                    if (ActiveAxis != GizmoAxis.NONE)\n                    {\n\n                        //this will help to disable rectangular selection of multiple objects during object transformation with mouse\n                        TransformationActive = true;\n\n                        if (ActiveMode == GizmoMode.TRANSLATE)\n                        {\n                            #region Translate\n\n                            if (HasTransformationStarted())\n                            {\n                                StartTransformationData();\n                            }\n                            //if (input.IsAnyShiftKeyPressed() && input.IsNewLeftMousePressed())\n                            //{\n                            //    MyEditor.Static.CopySelected(false);\n                            //}\n                            //else if (HasTransformationStarted())\n                            //{\n                            //    StartTransformationData();\n                            //}\n\n                            Vector3 delta = Vector3.Zero;\n\n                            Vector3 worldPosition = Position;\n\n                            if (ActiveAxis == GizmoAxis.XY)\n                            {\n                                GizmoTranslation(Vector3.Left, Vector3.Up, ref worldPosition);\n                            }\n                            else if (ActiveAxis == GizmoAxis.YZ)\n                            {\n                                GizmoTranslation(Vector3.Up, Vector3.Forward, ref worldPosition);\n                            }\n                            else if (ActiveAxis == GizmoAxis.ZX)\n                            {\n                                GizmoTranslation(Vector3.Left, Vector3.Forward, ref worldPosition);\n                            }\n                            else if (ActiveAxis == GizmoAxis.X)\n                            {\n                                GizmoTranslation(Vector3.Left, null, ref worldPosition);\n                            }\n                            else if (ActiveAxis == GizmoAxis.Y)\n                            {\n                                GizmoTranslation(Vector3.Up, null, ref worldPosition);\n                            }\n                            else if (ActiveAxis == GizmoAxis.Z)\n                            {\n                                GizmoTranslation(Vector3.Forward, null, ref worldPosition);\n                            }\n\n                            // When object is half distance to far, stop it's movement\n                            Plane maxMovePlane = MyCamera.GetBoundingFrustum().Far;\n                            maxMovePlane.D *= TRANSLATION_MAX_DISTANCE_FROM_CAMERA / MyCamera.FAR_PLANE_DISTANCE;\n\n                            Vector3 moveVector = worldPosition - Position;\n                            Ray moveRay = new Ray(Position, -moveVector);\n\n                            float? intersection = moveRay.Intersects(maxMovePlane);\n\n                            Vector3 cam = MyCamera.Position;\n\n                            // Intersection found and moving object towards far clip plane\n                            if (intersection.HasValue && Vector3.Dot(MyCamera.ForwardVector, moveVector) > 0 && (worldPosition - cam).Length() > Math.Abs(maxMovePlane.D))\n                            {\n                                Vector3 intersectionPoint = (moveRay.Position + (moveRay.Direction * intersection.Value));\n                                worldPosition = intersectionPoint;\n                            }\n\n                            moveVector = worldPosition - Position;\n\n                            // copy selected object only when moved from his original position + LMB + Shift\n                            bool copySelected = (moveVector.LengthSquared() >= 0f &&\n                                input.IsAnyShiftKeyPressed() &&\n                                input.IsNewLeftMousePressed());\n\n                            if (copySelected)\n                            {\n                                MyEditor.Static.CopySelected(false);\n                            }\n\n                            bool applyTranslation = true;\n\n                            PrepareSafeSelectedEntitiesIterationHelper();\n                            foreach (var entity in m_safeIterationHelper)\n                            {\n                                Vector3 newPosition = entity.GetPosition() + moveVector;\n\n                                BoundingSphere sphere = new BoundingSphere(newPosition + entity.LocalVolumeOffset, entity.WorldVolume.Radius);\n                                if (!entity.CanMoveAndRotate(newPosition, entity.GetWorldRotation()) || MyMwcSectorConstants.SECTOR_SIZE_FOR_PHYS_OBJECTS_BOUNDING_BOX.Contains(sphere) != MinerWarsMath.ContainmentType.Contains)\n                                {\n                                    applyTranslation = false;\n                                    break;\n                                }\n                            }\n\n                            if (applyTranslation)\n                            {\n                                PrepareSafeSelectedEntitiesIterationHelper();\n\n                                List<MyEntity> transformedEntities = new List<MyEntity>();\n\n                                // apply\n                                foreach (MyEntity entity in m_safeIterationHelper)\n                                {\n                                    // skip already transformed linked entities\n                                    if (transformedEntities.Contains(entity))\n                                    {\n                                        continue;\n                                    }\n\n                                    Vector3 newPosition = entity.GetPosition() + moveVector;\n\n                                    //snaping after mouse over\n                                    /*\n                                    // Snap to grid\n                                    if (SnapEnabled && ActiveSpace == TransformSpace.WORLD && !MyEditor.Static.IsLinked(entity))\n                                    {\n                                        SnapToGrid(ref newPosition, TranslationSnapValue);\n                                    }\n                                    */\n\n\n                                    MoveAndRotateObject(newPosition, entity.GetWorldRotation(), entity);\n\n                                    MyEditor.Static.FixLinkedEntities(entity, transformedEntities, null);\n                                    transformedEntities.Add(entity);\n                                }\n\n                                // test if some entities are intersection\n                                //CheckCollisions(m_safeIterationHelper); \n                                //MyEditor.Static.CheckAllCollidingObjects();                                \n                                MyEditor.Static.HighlightCollisions(m_safeIterationHelper);\n\n                            }\n\n                            #endregion\n                        }\n                        else if (ActiveMode == GizmoMode.ROTATE)\n                        {\n                            #region Rotate\n\n                            if (HasTransformationStarted()) StartTransformationData();\n                            Vector2 deltaCursorPosition;\n                            float delta;\n                            if (!MyVideoModeManager.IsHardwareCursorUsed())\n                            {\n                                Vector2 minMouseCoord = MyGuiManager.GetMinMouseCoord();\n                                Vector2 maxMouseCoord = MyGuiManager.GetMaxMouseCoord();\n\n                                Vector2 newCursorPosition = MyGuiManager.MouseCursorPosition;\n                                if (MyGuiManager.MouseCursorPosition.X <= minMouseCoord.X) newCursorPosition = new Vector2(maxMouseCoord.X, MyGuiManager.MouseCursorPosition.Y);\n                                if (MyGuiManager.MouseCursorPosition.X >= maxMouseCoord.X) newCursorPosition = new Vector2(minMouseCoord.X, MyGuiManager.MouseCursorPosition.Y);\n                                if (MyGuiManager.MouseCursorPosition.Y <= minMouseCoord.Y) newCursorPosition = new Vector2(MyGuiManager.MouseCursorPosition.X, maxMouseCoord.Y);\n                                if (MyGuiManager.MouseCursorPosition.Y >= maxMouseCoord.Y) newCursorPosition = new Vector2(MyGuiManager.MouseCursorPosition.X, minMouseCoord.Y);\n                                MyGuiManager.MouseCursorPosition = newCursorPosition;\n                                //KeenSoftwareHouse.Library.Trace.Trace.SendMsgLastCall(MyGuiManager.MouseCursorPosition.ToString() + \" \" + MyGuiManager.MouseCursorPosition.ToString());\n\n                                float deltaX = MathHelper.ToRadians(input.GetMouseXForGamePlay() - MyMinerGame.ScreenSizeHalf.X);\n                                float deltaY = MathHelper.ToRadians(input.GetMouseYForGamePlay() - MyMinerGame.ScreenSizeHalf.Y);\n\n                                deltaX = MathHelper.Clamp(deltaX, -1, 1);\n                                deltaY = MathHelper.Clamp(deltaY, -1, 1);\n\n                                delta = deltaY + deltaX;\n                                Vector2 cursorDelta = Vector2.Zero;\n                                if (MyGuiManager.MouseCursorPosition.Y != 0.0 && MyGuiManager.MouseCursorPosition.Y != 1.0)\n                                {\n                                    cursorDelta = MyGuiManager.MouseCursorPosition - m_lastCursorPosition;\n                                }\n                                m_inputScale = MathHelper.Clamp(Math.Abs(cursorDelta.Y) * 100, 0, 1);\n                                delta *= m_inputScale;\n                                m_oldCursorPosition = MyGuiManager.MouseCursorPosition;\n\n                            }\n                            else\n                            {\n\n                                Vector2 minMouseCoord = MyGuiManager.GetMinMouseCoord();\n                                Vector2 maxMouseCoord = MyGuiManager.GetMaxMouseCoord();\n                                Vector2 newCursorPosition = MyGuiManager.MouseCursorPosition;\n\n                                deltaCursorPosition = MyGuiManager.MouseCursorPosition - m_oldCursorPosition;\n\n                                if (MyGuiManager.MouseCursorPosition.X - 0.03f <= minMouseCoord.X)\n                                {\n                                    deltaCursorPosition = new Vector2(0, 0);\n                                    newCursorPosition = new Vector2(maxMouseCoord.X - 0.05f, MyGuiManager.MouseCursorPosition.Y);\n                                }\n                                if (MyGuiManager.MouseCursorPosition.X + 0.03f >= maxMouseCoord.X * 0.98f)\n                                {\n                                    deltaCursorPosition = new Vector2(0, 0);\n                                    newCursorPosition = new Vector2(minMouseCoord.X + 0.05f, MyGuiManager.MouseCursorPosition.Y);\n                                }\n                                if (MyGuiManager.MouseCursorPosition.Y - 0.03f <= minMouseCoord.Y)\n                                {\n                                    deltaCursorPosition = new Vector2(0, 0);\n                                    newCursorPosition = new Vector2(MyGuiManager.MouseCursorPosition.X, maxMouseCoord.Y - 0.05f);\n                                }\n                                if (MyGuiManager.MouseCursorPosition.Y + 0.03f >= maxMouseCoord.Y)\n                                {\n                                    deltaCursorPosition = new Vector2(0, 0);\n                                    newCursorPosition = new Vector2(MyGuiManager.MouseCursorPosition.X, minMouseCoord.Y + 0.05f);\n                                }\n                                MyGuiManager.MouseCursorPosition = newCursorPosition;\n\n                                delta = (deltaCursorPosition.X + deltaCursorPosition.Y) * 4.0f;\n                                delta = MathHelper.Clamp(delta, -2.0f, 2.0f);\n                                m_oldCursorPosition = MyGuiManager.MouseCursorPosition;\n                            }\n\n                            // Allow snapping of gizmo to make it move depending on the selected grid scale\n                            if (ActiveRotateSnapping!=RotateSnapping.NONE)\n                            {\n                                float snapValue = MathHelper.ToRadians(GetRotateSnapValue());\n                                if (m_precisionMode)\n                                {\n                                    delta *= m_precisionModeScale;\n                                    snapValue *= m_precisionModeScale;\n                                }\n\n                                m_rotationSnapDelta += delta;\n\n                                float snapped = (int)(m_rotationSnapDelta / snapValue) * snapValue;\n                                m_rotationSnapDelta -= snapped;\n                                delta = snapped;\n                            }\n                            else if (m_precisionMode)\n                            {\n                                delta *= m_precisionModeScale;\n                            }\n\n                            // rotation matrix to transform - if more than one objects selected, always use world-space.\n                            Matrix rot = Matrix.Identity;\n                            rot.Forward = m_sceneWorld.Forward;\n                            rot.Up = m_sceneWorld.Up;\n                            rot.Right = m_sceneWorld.Right;\n\n                            // Create rotation delta matrix\n                            if (ActiveAxis == GizmoAxis.X)\n                            {\n                                rot *= Matrix.CreateFromAxisAngle(Rotation.Right, delta);\n                            }\n                            else if (ActiveAxis == GizmoAxis.Y)\n                            {\n                                rot *= Matrix.CreateFromAxisAngle(Rotation.Up, delta);\n                            }\n                            else if (ActiveAxis == GizmoAxis.Z)\n                            {\n                                rot *= Matrix.CreateFromAxisAngle(Rotation.Forward, delta);\n                            }\n\n                            // store rotation parameters so that we can calculate the difference in rotation of \"before\" rotation and \"after\"\n                            CalculateYawPitchRollFromRotationDelta(rot);\n\n                            PrepareSafeSelectedEntitiesIterationHelper();\n\n                            List<MyEntity> transformedEntities = new List<MyEntity>();\n\n                            // -- Apply rotation -- //\n                            foreach (MyEntity entity in m_safeIterationHelper)\n                            {\n                                // skip already transformed linked entities\n                                if (transformedEntities.Contains(entity))\n                                {\n                                    continue;\n                                }\n\n                                // VoxelMaps cannot be rotated\n                                if (entity is MyVoxelMap == false)\n                                {\n                                    // use gizmo position for all PivotTypes except for object-center, it should use the entity.position instead.\n                                    Vector3 newPosition;\n                                    Matrix newRotation;\n                                    GetRotationAndPosition(entity, rot, out newPosition, out newRotation);\n\n\n                                    Matrix normalizedMat = new Matrix();\n                                    normalizedMat.Right = Vector3.Normalize(newRotation.Right);\n                                    normalizedMat.Forward = Vector3.Normalize(Vector3.Cross(Vector3.Normalize(newRotation.Up), normalizedMat.Right));\n                                    normalizedMat.Up = Vector3.Normalize(Vector3.Cross(normalizedMat.Right, normalizedMat.Forward));\n                                    normalizedMat.Translation = newRotation.Translation;\n                                    normalizedMat.M44 = newRotation.M44;\n\n                                    //KeenSoftwareHouse.Library.Trace.Trace.SendMsgLastCall(\"{\");\n                                    //KeenSoftwareHouse.Library.Trace.Trace.SendMsgLastCall(normalizedMat.ToString());\n                                    //KeenSoftwareHouse.Library.Trace.Trace.SendMsgLastCall(newRotation.ToString());\n                                    //KeenSoftwareHouse.Library.Trace.Trace.SendMsgLastCall(\"}\");\n\n                                    MoveAndRotateObject(newPosition, normalizedMat, entity);\n\n                                    MyEditor.Static.FixLinkedEntities(entity, transformedEntities, null);\n                                    transformedEntities.Add(entity);\n                                }\n                            }\n\n                            SetPosition();\n                            Vector3 moveVector = m_startObjectPosition - Position;\n                            PrepareSafeSelectedEntitiesIterationHelper();\n                            transformedEntities = new List<MyEntity>();\n                            // apply\n                            foreach (MyEntity entity in m_safeIterationHelper)\n                            {\n                                // skip already transformed linked entities\n                                if (transformedEntities.Contains(entity))\n                                {\n                                    continue;\n                                }\n\n                                Vector3 newPosition = entity.GetPosition() + moveVector;\n\n                                MoveAndRotateObject(newPosition, entity.GetWorldRotation(), entity);\n\n                                MyEditor.Static.FixLinkedEntities(entity, transformedEntities, null);\n                                transformedEntities.Add(entity);\n                            }\n\n                            #endregion\n                        }\n                    }\n                }\n                else\n                {\n                    PrepareSafeSelectedEntitiesIterationHelper();\n\n                    foreach (MyEntity entity in m_safeIterationHelper)\n                    {\n\n                        float moveObjectDistanceInMeters = MyEditorGrid.GetGridStepInMeters();\n                        float rotationAngleInRadians = MathHelper.ToRadians(GetRotationDelta());\n                        Matrix entityOrientation = entity.GetWorldRotation();\n\n                        bool isVoxelMap = entity is MyVoxelMap;\n\n                        Vector3 entityPosition = entity.GetPosition();\n\n                        #region Translate and Rotate with keyboard\n\n                        Vector3 newPosition = entityPosition;\n                        Matrix newRotation = entityOrientation;\n\n                        // Keyboard translation\n                        if (IsTransformationKeyPressed(input, Keys.NumPad1))\n                        {\n                            newPosition = GetTransformInAxis(GizmoAxis.X, entityPosition, Rotation, -moveObjectDistanceInMeters);\n                        }\n                        if (IsTransformationKeyPressed(input, Keys.NumPad3))\n                        {\n                            newPosition = GetTransformInAxis(GizmoAxis.X, entityPosition, Rotation, +moveObjectDistanceInMeters);\n                        }\n                        if (IsTransformationKeyPressed(input, Keys.NumPad2))\n                        {\n                            newPosition = GetTransformInAxis(GizmoAxis.Z, entityPosition, Rotation, +moveObjectDistanceInMeters);\n                        }\n                        if (IsTransformationKeyPressed(input, Keys.NumPad5))\n                        {\n                            newPosition = GetTransformInAxis(GizmoAxis.Z, entityPosition, Rotation, -moveObjectDistanceInMeters);\n\n                        }\n                        if (IsTransformationKeyPressed(input, Keys.NumPad9))\n                        {\n                            newPosition = GetTransformInAxis(GizmoAxis.Y, entityPosition, Rotation, +moveObjectDistanceInMeters);\n                        }\n                        if (IsTransformationKeyPressed(input, Keys.NumPad6))\n                        {\n                            newPosition = GetTransformInAxis(GizmoAxis.Y, entityPosition, Rotation, -moveObjectDistanceInMeters);\n                        }\n\n                        // Keyboard rotation\n                        Matrix oneStepRotationDelta = Matrix.Identity;\n                        if (IsTransformationKeyPressed(input, Keys.NumPad7) && !isVoxelMap)\n                        {\n                            oneStepRotationDelta = Matrix.CreateFromAxisAngle(Rotation.Right, rotationAngleInRadians);\n                            GetRotationAndPosition(entity, oneStepRotationDelta, out newPosition, out newRotation);\n                        }\n                        if (IsTransformationKeyPressed(input, Keys.NumPad4) && !isVoxelMap)\n                        {\n                            oneStepRotationDelta = Matrix.CreateFromAxisAngle(Rotation.Up, rotationAngleInRadians);\n                            GetRotationAndPosition(entity, oneStepRotationDelta, out newPosition, out newRotation);\n                        }\n                        if (IsTransformationKeyPressed(input, Keys.NumPad8) && !isVoxelMap)\n                        {\n                            oneStepRotationDelta = Matrix.CreateFromAxisAngle(Rotation.Forward, rotationAngleInRadians);\n                            GetRotationAndPosition(entity, oneStepRotationDelta, out newPosition, out newRotation);\n                        }\n\n                        if (HasTransformationStarted()) StartTransformationData();\n\n                        // Transform\n                        bool translated = newPosition != entityPosition;\n                        bool rotated = newRotation != entityOrientation;\n\n                        if (translated || rotated)\n                        {\n                            if (translated) ActiveMode = GizmoMode.TRANSLATE;\n                            if (rotated)\n                            {\n                                ActiveMode = GizmoMode.ROTATE;\n                                if (IsDelayForSmoothMovementReached())\n                                {\n                                    RotationAmountInDegrees += (int)GetRotationDelta();\n                                }\n                                else\n                                {\n                                    RotationAmountInDegrees = (int)GetRotationDelta();\n                                }\n                            }\n\n                            MoveAndRotateObject(newPosition, newRotation, entity);\n                        }\n                        #endregion\n                    }\n\n\n                    UpdateAxisSelection(MyGuiManager.GetScreenCoordinateFromNormalizedCoordinate(MyGuiManager.MouseCursorPosition));\n\n                    /*\n                    if (GetSnapPoint(true) == null)\n                    {\n                        \n                    }\n                    else\n                    {\n                        ActiveAxis = GizmoAxis.NONE;\n                    }\n                    */\n                }\n\n                if (HasTransformationEnded()) EndTransformationData();\n\n                // previous is used to detect, when is right time to create undo/redo editor action(start of transform, and end of transform)\n                TransformationActivePrevious = TransformationActive;\n            }\n            else\n            {\n                ActiveAxis = GizmoAxis.NONE;\n            }\n        }\n\n        private static float GetRotateSnapValue()\n        {\n            switch (ActiveRotateSnapping)\n            {\n                case RotateSnapping.NONE:\n                    return 1;\n                    break;\n                case RotateSnapping.FIVE_DEGREES:\n                    return 5;\n                    break;\n                case RotateSnapping.FIFTEEN_DEGREES:\n                    return 15;\n                    break;\n                case RotateSnapping.FORTYFIVE_DEGREES:\n                    return 45;\n                    break;\n                case RotateSnapping.NINETY_DEGREES:\n                    return 90;\n                    break;\n                default:\n                    {\n                        System.Diagnostics.Debug.Assert(false);\n                        return 1;\n                    }\n            }\n        }\n\n        #endregion\n\n        #region Draw Methods\n\n        /// <summary>\n        /// Draw gizmo\n        /// </summary>\n        public static void Draw()\n        {\n            if (!MyConfig.EditorUseCameraCrosshair && MyCamera.IsInFrustum(ref Position))\n            {\n                Device graphics = MyMinerGame.Static.GraphicsDevice;\n                m_translationModel.LoadInDraw();\n                m_rotationModel.LoadInDraw();\n\n                if (Enabled)\n                {\n\n                    #region Draw: Axis-Lines\n                    for (int c = 0; c < m_translationLineVertices.Length; c += 2)\n                    {\n                        MyDebugDraw.DrawLine3D(\n                            Vector3.Transform(m_translationLineVertices[c + 0].Position, m_gizmoWorld),\n                            Vector3.Transform(m_translationLineVertices[c + 1].Position, m_gizmoWorld),\n                            m_translationLineVertices[c + 0].Color,\n                            m_translationLineVertices[c + 1].Color);\n                    }\n\n                    #endregion\n\n\n                    if (ActiveMode == GizmoMode.TRANSLATE)\n                    {\n                        #region Translate\n                        RasterizerState.CullNone.Apply();\n                        // -- Draw Cones -- //\n                        for (int i = 0; i < 3; i++) // 3 = nr. of axis (order: x, y, z)\n                        {\n                            /*\n                            //Vector3 color = m_axisColors[i].ToVector3();\n                            Matrix worldMatrix = m_modelLocalSpace[i] * m_gizmoWorld;\n                            MyRender.DrawModel(m_translationModel, GetWorldMatrixForDraw(ref worldMatrix), null);\n                            */\n                            Matrix worldMatrix = m_modelLocalSpace[i] * m_gizmoWorld;\n                            //loadn new model from prefab config\n                            MyModel mymodel = m_translationModel;\n\n                            //create new Effects\n                            MyEffectRenderGizmo effectRenderGizmo = MyRender.GetEffect(MyEffects.Gizmo) as MyEffectRenderGizmo;\n                            Matrix view = Matrix.Identity;\n\n                            worldMatrix = GetWorldMatrixForDraw(ref worldMatrix);\n                            effectRenderGizmo.SetWorldViewProjectionMatrix(worldMatrix * MyCamera.ViewMatrixAtZero * MyCamera.ProjectionMatrix);\n\n                            Color color = m_axisColors[i];\n                            if (i == 0)\n                            {\n                                if (ActiveAxis == GizmoAxis.X || ActiveAxis == GizmoAxis.XY || ActiveAxis == GizmoAxis.ZX)\n                                {\n                                    color = m_highlightColor;\n                                }\n                            }\n                            else if (i == 1)\n                            {\n                                if (ActiveAxis == GizmoAxis.Y || ActiveAxis == GizmoAxis.XY || ActiveAxis == GizmoAxis.YZ)\n                                {\n                                    color = m_highlightColor;\n                                }\n                            }\n                            else\n                            {\n                                if (ActiveAxis == GizmoAxis.Z || ActiveAxis == GizmoAxis.YZ || ActiveAxis == GizmoAxis.ZX)\n                                {\n                                    color = m_highlightColor;\n                                }\n                            }\n\n                            effectRenderGizmo.SetDiffuseColor(color.ToVector3());\n                            //effectRenderGizmo.Apply();\n\n\n                            MyMinerGame.Static.GraphicsDevice.VertexDeclaration = mymodel.GetVertexDeclaration();\n                            MyMinerGame.Static.GraphicsDevice.SetStreamSource(0, mymodel.VertexBuffer, 0, mymodel.GetVertexStride());\n                            MyMinerGame.Static.GraphicsDevice.Indices = mymodel.IndexBuffer;\n                            effectRenderGizmo.Begin();\n                            foreach (MyMesh mesh in mymodel.GetMeshList())\n                            {\n                                mesh.Render(MyMinerGame.Static.GraphicsDevice, mymodel.GetVerticesCount());\n                            }\n                            effectRenderGizmo.End();\n                        }\n                        #endregion\n                    }\n                    else if (ActiveMode == GizmoMode.ROTATE)\n                    {\n\n                        #region Rotation\n                        RasterizerState.CullNone.Apply();\n                        //draw rottiaons\n                        for (int i = 0; i < 3; i++) // 3 = nr. of axis (order: x, y, z)\n                        {\n                            Matrix worldMatrix = m_modelLocalSpace[i] * m_gizmoWorld;\n                            //loadn new model from prefab config\n                            MyModel mymodel = m_rotationModel;\n\n                            //create new Effects\n                            MyEffectRenderGizmo effectRenderGizmo = MyRender.GetEffect(MyEffects.Gizmo) as MyEffectRenderGizmo;\n                            Matrix view = Matrix.Identity;\n\n                            worldMatrix = GetWorldMatrixForDraw(ref worldMatrix);\n                            effectRenderGizmo.SetWorldViewProjectionMatrix(worldMatrix * MyCamera.ViewMatrixAtZero * MyCamera.ProjectionMatrix);\n\n                            Color color = m_axisColors[i];\n                            if (i == 0)\n                            {\n                                if (ActiveAxis == GizmoAxis.X || ActiveAxis == GizmoAxis.XY || ActiveAxis == GizmoAxis.ZX)\n                                {\n                                    color = m_highlightColor;\n                                }\n                            }\n                            else if (i == 1)\n                            {\n                                if (ActiveAxis == GizmoAxis.Y || ActiveAxis == GizmoAxis.XY || ActiveAxis == GizmoAxis.YZ)\n                                {\n                                    color = m_highlightColor;\n                                }\n                            }\n                            else\n                            {\n                                if (ActiveAxis == GizmoAxis.Z || ActiveAxis == GizmoAxis.YZ || ActiveAxis == GizmoAxis.ZX)\n                                {\n                                    color = m_highlightColor;\n                                }\n                            }\n\n                            effectRenderGizmo.SetDiffuseColor(color.ToVector3());\n                            //effectRenderGizmo.Apply();\n\n\n                            MyMinerGame.Static.GraphicsDevice.VertexDeclaration = mymodel.GetVertexDeclaration();\n                            MyMinerGame.Static.GraphicsDevice.SetStreamSource(0, mymodel.VertexBuffer, 0, mymodel.GetVertexStride());\n                            MyMinerGame.Static.GraphicsDevice.Indices = mymodel.IndexBuffer;\n\n                            effectRenderGizmo.Begin();\n                            foreach (MyMesh mesh in mymodel.GetMeshList())\n                            {\n                                mesh.Render(MyMinerGame.Static.GraphicsDevice, mymodel.GetVerticesCount());\n                            }\n                            effectRenderGizmo.End();\n\n                        }\n                        #endregion\n                    }\n\n                    #region Draw: Axis-texts\n\n\n                    MyGuiManager.BeginSpriteBatch();\n\n                    // -- Draw Axis Text (\"X\",\"Y\",\"Z\") -- //\n                    for (int i = 0; i < 3; i++)\n                    {\n                        Vector3 screenPos = SharpDXHelper.ToXNA(graphics.Viewport.Project(SharpDXHelper.ToSharpDX(m_modelLocalSpace[i].Translation + m_modelLocalSpace[i].Up + m_axisTextOffset), SharpDXHelper.ToSharpDX(MyCamera.ProjectionMatrix), SharpDXHelper.ToSharpDX(MyCamera.ViewMatrix), SharpDXHelper.ToSharpDX(m_gizmoWorld)));\n\n                        Color color = m_axisColors[i];\n                        if (i == 0)\n                        {\n                            if (ActiveAxis == GizmoAxis.X || ActiveAxis == GizmoAxis.XY || ActiveAxis == GizmoAxis.ZX)\n                            {\n                                color = m_highlightColor;\n                            }\n                        }\n                        else if (i == 1)\n                        {\n                            if (ActiveAxis == GizmoAxis.Y || ActiveAxis == GizmoAxis.XY || ActiveAxis == GizmoAxis.YZ)\n                            {\n                                color = m_highlightColor;\n                            }\n                        }\n                        else\n                        {\n                            if (ActiveAxis == GizmoAxis.Z || ActiveAxis == GizmoAxis.YZ || ActiveAxis == GizmoAxis.ZX)\n                            {\n                                color = m_highlightColor;\n                            }\n                        }\n\n                        const float TEXT_SCALE = 0.70f;\n\n                        MyGuiManager.GetFontMinerWarsWhite().DrawString(new Vector2(screenPos.X, screenPos.Y), color, MyTextsWrapper.Get(m_axisTexts[i]), TEXT_SCALE);\n                    }\n\n                    MyGuiManager.EndSpriteBatch();\n\n                    #endregion\n                }\n            }\n        }\n\n        #endregion\n\n        #region Update Methods\n\n        /// <summary>\n        /// Main update\n        /// </summary>\n        public static void Update()\n        {\n            //if (SelectedEntities.Count > 0)\n            //{\n            //    var x = SelectedEntities[6];\n\n            //    SelectedEntities.Clear();\n\n            //    SelectedEntities.Add(x);\n            //}\n\n            //if (SelectedEntities.Count == 1)\n            //{\n            //    var dummy = SelectedEntities[0] as MyDummyPoint;\n            //    if (dummy != null)\n            //    {\n            //        SelectedEntities[0].SetPosition(new Vector3(5423, -952, 4686));\n            //    }\n            //}\n\n            if (!Enabled)\n                return;\n\n            // scale for mouse.delta\n            m_inputScale = (float)MyMinerGame.TotalGamePlayTimeInMilliseconds / 1000;\n\n            SetActivePivot();\n            SetPosition();\n\n\n            TranslationSnapValue = MyEditorGrid.GetGridStepInMeters();\n            RotationSnapValue = GetRotationDelta();\n\n            // -- Scale Gizmo to fit on-screen -- //\n            Vector3 vLength = MyCamera.Position - Position;\n            float scaleFactor = 25;\n\n            m_screenScale = vLength.Length() / scaleFactor;\n            m_screenScaleMatrix = Matrix.CreateScale(new Vector3(m_screenScale));\n\n            var worldMatrix = GetWorldMatrix();\n            m_localForward = worldMatrix.Forward;\n            m_localUp = worldMatrix.Up;\n            m_localRight = worldMatrix.Right;\n            //// -- Vector Rotation (Local/World) -- //\n            //m_localForward = MyMwcUtils.Normalize(m_localForward);\n            //m_localRight = Vector3.Cross(m_localForward, m_localUp);\n            //m_localUp = Vector3.Cross(m_localRight, m_localForward);\n            //m_localRight = MyMwcUtils.Normalize(m_localRight);\n            //m_localUp = MyMwcUtils.Normalize(m_localUp);\n\n            m_objectOrientedWorld = m_screenScaleMatrix * Matrix.CreateWorld(Position, m_localForward, m_localUp);\n            m_axisAlignedWorld = m_screenScaleMatrix * Matrix.CreateWorld(Position, m_sceneWorld.Forward, m_sceneWorld.Up);\n\n            // Assign World\n            if (ActiveSpace == TransformSpace.WORLD ||\n                (ActiveMode == GizmoMode.ROTATE && SelectedEntities.Count > 1))\n            {\n                m_gizmoWorld = m_axisAlignedWorld;\n\n                // align lines, boxes etc. with the grid-lines\n                Rotation.Forward = m_sceneWorld.Forward;\n                Rotation.Up = m_sceneWorld.Up;\n                Rotation.Right = m_sceneWorld.Right;\n            }\n            else\n            {\n                m_gizmoWorld = m_objectOrientedWorld;\n\n                // align lines, boxes etc. with the selected object\n                Rotation.Forward = m_localForward;\n                Rotation.Up = m_localUp;\n                Rotation.Right = m_localRight;\n            }\n\n            // -- Reset Colors to default -- //\n            ApplyColor(GizmoAxis.X, m_axisColors[0]);\n            ApplyColor(GizmoAxis.Y, m_axisColors[1]);\n            ApplyColor(GizmoAxis.Z, m_axisColors[2]);\n\n            // -- Apply Highlight -- //\n            ApplyColor(ActiveAxis, m_highlightColor);\n\n            if (IsRotationActive())\n            {\n\n                float value = GetHigherAbsValue(m_deltaPitch, m_deltaYaw);\n                value = GetHigherAbsValue(value, m_deltaRoll);\n                RotationAmountInDegrees = (int)value;\n            }\n            else\n            {\n                m_deltaPitch = 0;\n                m_deltaYaw = 0;\n                m_deltaRoll = 0;\n            }\n        }\n\n        /// <summary>\n        /// Helper method for applying color to the gizmo lines.\n        /// </summary>\n        /// <param name=\"axis\"></param>\n        /// <param name=\"color\"></param>\n        static void ApplyColor(GizmoAxis axis, Color color)\n        {\n            if (ActiveMode == GizmoMode.TRANSLATE)\n            {\n                switch (axis)\n                {\n                    case GizmoAxis.X:\n                        ApplyLineColor(0, 6, color);\n                        break;\n                    case GizmoAxis.Y:\n                        ApplyLineColor(6, 6, color);\n                        break;\n                    case GizmoAxis.Z:\n                        ApplyLineColor(12, 6, color);\n                        break;\n                    case GizmoAxis.XY:\n                        ApplyLineColor(0, 4, color);\n                        ApplyLineColor(6, 4, color);\n                        break;\n                    case GizmoAxis.YZ:\n                        ApplyLineColor(6, 2, color);\n                        ApplyLineColor(12, 2, color);\n                        ApplyLineColor(10, 2, color);\n                        ApplyLineColor(16, 2, color);\n                        break;\n                    case GizmoAxis.ZX:\n                        ApplyLineColor(0, 2, color);\n                        ApplyLineColor(4, 2, color);\n                        ApplyLineColor(12, 4, color);\n                        break;\n                }\n            }\n            else if (ActiveMode == GizmoMode.ROTATE)\n            {\n                switch (axis)\n                {\n                    case GizmoAxis.X:\n                        ApplyLineColor(0, 6, color);\n                        break;\n                    case GizmoAxis.Y:\n                        ApplyLineColor(6, 6, color);\n                        break;\n                    case GizmoAxis.Z:\n                        ApplyLineColor(12, 6, color);\n                        break;\n                }\n            }\n        }\n\n        /// <summary>\n        /// Apply color on the lines associated with translation mode (re-used in Scale)\n        /// </summary>\n        /// <param name=\"startindex\"></param>\n        /// <param name=\"count\"></param>\n        /// <param name=\"color\"></param>\n        static void ApplyLineColor(int startindex, int count, Color color)\n        {\n            for (int i = startindex; i < (startindex + count); i++)\n            {\n                m_translationLineVertices[i].Color = color;\n            }\n        }\n\n        /// <summary>\n        /// Per-frame check to see if mouse is hovering over any axis.\n        /// </summary>\n        /// <param name=\"mousePosition\"></param>\n        static void UpdateAxisSelection(Vector2 mousePosition)\n        {\n            float closestintersection = float.MaxValue;\n            MinerWarsMath.Ray ray = MyUtils.ConvertMouseToRay();\n\n            closestintersection = float.MaxValue;\n            float? intersection;\n\n            if (ActiveMode == GizmoMode.TRANSLATE)\n            {\n                #region BoundingBoxes\n\n                intersection = XY_Box.Intersects(ref ray);\n                if (intersection.HasValue)\n                {\n                    if (intersection.Value < closestintersection)\n                    {\n                        ActiveAxis = GizmoAxis.XY;\n                        closestintersection = intersection.Value;\n                    }\n                }\n                intersection = XZ_Box.Intersects(ref ray);\n                if (intersection.HasValue)\n                {\n                    if (intersection.Value < closestintersection)\n                    {\n                        ActiveAxis = GizmoAxis.ZX;\n                        closestintersection = intersection.Value;\n                    }\n                }\n                intersection = YZ_Box.Intersects(ref ray);\n                if (intersection.HasValue)\n                {\n                    if (intersection.Value < closestintersection)\n                    {\n                        ActiveAxis = GizmoAxis.YZ;\n                        closestintersection = intersection.Value;\n                    }\n                }\n\n                intersection = X_Box.Intersects(ref ray);\n                if (intersection.HasValue)\n                {\n                    if (intersection.Value < closestintersection)\n                    {\n                        ActiveAxis = GizmoAxis.X;\n                        closestintersection = intersection.Value;\n                    }\n                }\n                intersection = Y_Box.Intersects(ref ray);\n                if (intersection.HasValue)\n                {\n                    if (intersection.Value < closestintersection)\n                    {\n                        ActiveAxis = GizmoAxis.Y;\n                        closestintersection = intersection.Value;\n                    }\n                }\n                intersection = Z_Box.Intersects(ref ray);\n                if (intersection.HasValue)\n                {\n                    if (intersection.Value < closestintersection)\n                    {\n                        ActiveAxis = GizmoAxis.Z;\n                        closestintersection = intersection.Value;\n                    }\n                }\n\n                #endregion\n            }\n\n            if (ActiveMode == GizmoMode.ROTATE || ActiveMode == GizmoMode.TRANSLATE)\n            {\n                #region BoundingSpheres\n\n                intersection = X_Sphere.Intersects(ray);\n                if (intersection.HasValue)\n                {\n                    if (intersection.Value < closestintersection)\n                    {\n                        ActiveAxis = GizmoAxis.X;\n                        closestintersection = intersection.Value;\n                    }\n                }\n                intersection = Y_Sphere.Intersects(ray);\n                if (intersection.HasValue)\n                {\n                    if (intersection.Value < closestintersection)\n                    {\n                        ActiveAxis = GizmoAxis.Y;\n                        closestintersection = intersection.Value;\n                    }\n                }\n                intersection = Z_Sphere.Intersects(ray);\n                if (intersection.HasValue)\n                {\n                    if (intersection.Value < closestintersection)\n                    {\n                        ActiveAxis = GizmoAxis.Z;\n                        closestintersection = intersection.Value;\n                    }\n                }\n\n\n                #endregion\n            }\n\n            if (ActiveMode == GizmoMode.ROTATE)\n            {\n                #region X,Y,Z Boxes\n                intersection = X_Box.Intersects(ref ray);\n                if (intersection.HasValue)\n                {\n                    if (intersection.Value < closestintersection)\n                    {\n                        ActiveAxis = GizmoAxis.X;\n                        closestintersection = intersection.Value;\n                    }\n                }\n                intersection = Y_Box.Intersects(ref ray);\n                if (intersection.HasValue)\n                {\n                    if (intersection.Value < closestintersection)\n                    {\n                        ActiveAxis = GizmoAxis.Y;\n                        closestintersection = intersection.Value;\n                    }\n                }\n                intersection = Z_Box.Intersects(ref ray);\n                if (intersection.HasValue)\n                {\n                    if (intersection.Value < closestintersection)\n                    {\n                        ActiveAxis = GizmoAxis.Z;\n                        closestintersection = intersection.Value;\n                    }\n                }\n                #endregion\n            }\n\n            if (closestintersection == float.MaxValue)\n            {\n                ActiveAxis = GizmoAxis.NONE;\n            }\n        }\n\n        /// <summary>\n        /// Probably temporary - we will want to have possibility to choose pivot type by some key maybe?\n        /// </summary>\n        static void SetActivePivot()\n        {\n            //Debug.Assert(!(SelectedSnapPoint != null && SelectedEntities.Count != 0));\n\n            if (SelectedEntities.Count == 1 || SelectedSnapPoint != null)\n            {\n                ActivePivot = PivotType.OBJECT_CENTER;\n                if (MyEditor.EnableObjectPivot)\n                {\n                    ActivePivot = PivotType.OBJECT_CENTER;\n                }\n                else\n                {\n                    ActivePivot = PivotType.MODEL_CENTER;\n                }\n            }\n            else if (SelectedEntities.Count > 1)\n            {\n                ActivePivot = PivotType.SELECTION_CENTER;\n            }\n        }\n\n        /// <summary>\n        /// Set position of the gizmo, position will be center of all selected entities.\n        /// </summary>\n        static void SetPosition()\n        {\n            switch (ActivePivot)\n            {\n                case PivotType.MODEL_CENTER:\n                    {\n                        if (SelectedEntities.Count > 0 || SelectedSnapPoint != null)\n                        {\n                            Position = GetWorldMatrix().Translation;\n                        }\n\n                    }\n                    break;\n                case PivotType.OBJECT_CENTER:\n                    {\n                        if (SelectedEntities.Count > 0)\n                        {\n                            Position = Vector3.Transform(SelectedEntities[0].LocalAABB.GetCenter(), GetWorldMatrix());\n                        }\n                        else if (SelectedSnapPoint != null)\n                        {\n                            Position = GetWorldMatrix().Translation;\n                        }\n                    }\n                    break;\n                case PivotType.SELECTION_CENTER:\n                    {\n                        Position = GetSelectedObjectsCenter();\n                    }\n                    break;\n            }\n        }\n\n        #endregion\n\n        #region Selection Methods\n\n        /// <summary>\n        /// Prepare safe selected entities iteration helper\n        /// </summary>\n        static void PrepareSafeSelectedEntitiesIterationHelper()\n        {\n            m_safeIterationHelper.Clear();\n            if (SelectedSnapPoint != null)\n            {\n                m_safeIterationHelper.Add(SelectedSnapPoint.Prefab);\n            }\n            else\n            {\n                foreach (MyEntity entity in SelectedEntities)\n                {\n                    m_safeIterationHelper.Add(entity);\n                }\n            }\n        }\n\n        /// <summary>\n        /// Add entities to selection\n        /// </summary>\n        /// <param name=\"entities\"></param>\n        public static void AddEntitiesToSelection(IEnumerable<MyEntity> entities)\n        {            \n            foreach (MyEntity entity in entities)\n            {\n                AddEntityToSelection(entity);\n            }            \n\n            MyAudio.AddCue2D(MySoundCuesEnum.GuiEditorObjectSelect);\n        }\n\n        // check if some entities are intersecting\n        public static void CheckCollisions(IEnumerable<MyEntity> entities)\n        {\n            // Compute AABB of all selected objects\n            BoundingBox aabb;\n            aabb.Min = new Vector3(1e38f);\n            aabb.Max = new Vector3(-1e38f);\n\n            foreach (MyEntity entity in entities)\n            {\n                if (entity is MyPrefab)\n                {\n                    BoundingBoxHelper.AddBBox(entity.WorldAABB, ref aabb);\n                }\n            }\n\n            // Get all elements from AABB\n            List<MyRBElement> allRBelements = new List<MyRBElement>();\n            MyEntities.GetCollisionsInBoundingBox(ref aabb, allRBelements);\n\n            MyEditor.Static.ClearCollidingElements();\n\n            // Check non prefab elements for collision\n            foreach (MyRBElement worldCollidingElement in allRBelements)\n            {\n                MyEntity worldCollidingEntity = ((MyPhysicsBody)worldCollidingElement.GetRigidBody().m_UserData).Entity;\n\n                if (worldCollidingEntity is MyPrefab)\n                    continue;\n\n                MyEditor.Static.CheckAllCollidingObjectsForEntity(worldCollidingEntity);\n            }\n        }\n\n        private static void UnregistreEntityFromUpdateRecursive(MyEntity entity)\n        {\n            foreach (MyEntity child in entity.Children)\n            {\n                UnregistreEntityFromUpdateRecursive(child);\n            }\n            MyEntities.UnregisterForUpdate(entity);\n        }\n\n        /// <summary>\n        /// Adds entity to selection\n        /// </summary>\n        /// <param name=\"entity\"></param>\n        public static void AddEntityToSelection(MyEntity entity)\n        {\n            ////if animated - disable animation\n            //MyEntities.RegisterForStopAnimations(entity);\n            if (!(entity is MinerWars.AppCode.Game.Entities.InfluenceSpheres.MyInfluenceSphere))\n            {\n                UnregistreEntityFromUpdateRecursive(entity);\n            }\n            \n\n            if (MyFakes.POST_MYENTITYANIMATOR_VALUES)\n            {\n                Quaternion rotation = Quaternion.CreateFromRotationMatrix(entity.WorldMatrix);\n                Debug.WriteLine(string.Format(\"animator.AddKey(,new Vector3({0:0.0##}f, {1:0.0##}f, {2:0.0##}f), new Quaternion({3:0.0##}f, {4:0.0##}f, {5:0.0##}f, {6:0.0##}f));\",\n                    entity.WorldMatrix.Translation.X, entity.WorldMatrix.Translation.Y, entity.WorldMatrix.Translation.Z,\n                    rotation.X, rotation.Y, rotation.Z, rotation.W));\n            }\n\n            // disable selecting another prefabs or object except ones in prefab container\n            if (MyEditor.Static.GetEditedPrefabContainer() != null)\n            {\n                MyPrefabContainer selectedPrefabContainer = null;\n                MyEntity selectedEntity = entity;\n\n                while (selectedEntity != null)\n                {\n                    selectedPrefabContainer = selectedEntity.Parent as MyPrefabContainer;\n                    if (selectedPrefabContainer != null)\n                        break;\n\n                    selectedEntity = selectedEntity.Parent;\n                }\n\n                if (selectedPrefabContainer != MyEditor.Static.GetEditedPrefabContainer())\n                    return;\n            }\n\n            if (entity == MyEditor.Static.GetEditedPrefabContainer()) return;\n\n            if (SelectedSnapPoint != null) return;\n\n            entity = MySelectionTool.GetSelectableEntity(entity);\n            \n            if (entity != null)\n            {\n                /*\n                if (entity is MyPrefabLargeWeapon)\n                {\n                    ((MyPrefabLargeWeapon)entity).GetGun().ForceDeactivate();\n                    ((MyPrefabLargeWeapon)entity).GetGun().HighlightEntity(ref MyEditorConstants.SELECTED_OBJECT_DIFFUSE_COLOR_ADDITION);\n                    entity.HighlightEntity(ref MyEditorConstants.SELECTED_OBJECT_DIFFUSE_COLOR_ADDITION);\n                }  */                               \n                \n                //@ get selectable entity\n                if (SelectedEntities.Contains(entity) == false)\n                {                    \n                    //@ hack coz prefab containers\n                    if (MyEditor.Static.GetEditedPrefabContainer() != null && MyEditor.Static.GetEditedPrefabContainer().HasEditState())\n                        MyEditor.Static.GetEditedPrefabContainer().UpdateEditedNode(entity);                    \n\n                    SelectedEntities.Add(entity);                    \n                }                \n\n                if (entity is MyVoxelMap) SwitchGizmoMode();\n\n                entity.HighlightEntity(ref MyEditorConstants.SELECTED_OBJECT_DIFFUSE_COLOR_ADDITION);                \n            }\n        }\n\n        /// <summary>\n        /// Remove multiple entities from selection\n        /// </summary>\n        /// <param name=\"entities\"></param>\n        public static void RemoveEntitiesFromSelection(List<MyEntity> entities)\n        {\n            foreach (MyEntity entity in entities)\n            {\n                RemoveEntityFromSelection(entity);\n            }            \n            // play sound:\n            MyAudio.AddCue2D(MySoundCuesEnum.GuiEditorObjectSelect);\n        }\n\n        /// <summary>\n        /// Removes entity from selection\n        /// </summary>\n        /// <param name=\"entity\"></param>\n        public static void RemoveEntityFromSelection(MyEntity entity)\n        {\n            ////enable object again\n            //MyEntities.UnregisterForStopAnimations(entity);\n            if (!(entity is MinerWars.AppCode.Game.Entities.InfluenceSpheres.MyInfluenceSphere))\n            {\n                MyEntities.RegisterForUpdate(entity);\n            }\n\n            // first try to remove the entity on its own (the entity might have become non-selectable)\n            if (SelectedEntities.Contains(entity) == true)\n            {\n                SelectedEntities.Remove(entity);\n                entity.ClearHighlightning();\n            }\n\n            // do selectable entities\n            entity = MySelectionTool.GetSelectableEntity(entity);\n\n            if (entity != null)\n            {\n                if (SelectedEntities.Contains(entity) == true)\n                {                    \n                    SelectedEntities.Remove(entity);\n                    entity.ClearHighlightning();\n\n                    /*\n                    if (entity is MyPrefabLargeWeapon)\n                    {\n                        ((MyPrefabLargeWeapon)entity).GetGun().ClearHighlightning();\n                    } */                                                       \n                }\n\n            }\n        }\n\n        /// <summary>\n        /// Resets rotation of selected entities\n        /// </summary>\n        public static void ResetSelectedRotation()\n        {\n            Matrix rot = Matrix.Invert(Rotation);\n            \n            PrepareSafeSelectedEntitiesIterationHelper();\n\n            List<MyEntity> transformedEntities = new List<MyEntity>();\n\n            // -- Apply rotation -- //\n            foreach (MyEntity entity in m_safeIterationHelper)\n            {\n                // skip already transformed linked entities\n                if (transformedEntities.Contains(entity))\n                {\n                    continue;\n                }\n\n                // VoxelMaps cannot be rotated\n                if (entity is MyVoxelMap == false)\n                {\n                    // use gizmo position for all PivotTypes except for object-center, it should use the entity.position instead.\n                    Vector3 newPosition;\n                    Matrix newRotation;\n                    GetRotationAndPosition(entity, rot, out newPosition, out newRotation);\n                    MoveAndRotateObject(newPosition, newRotation, entity);\n\n                    MyEditor.Static.FixLinkedEntities(entity, transformedEntities, null);\n                    transformedEntities.Add(entity);\n                }\n            } \n        }\n\n        /// <summary>\n        /// Clears gizmo selection\n        /// </summary>\n        public static void ClearSelection()\n        {\n            if (SelectedEntities.Count != 0)\n            {\n                for (int ci = SelectedEntities.Count; ci-- != 0; )\n                {\n                    /*\n                    if (SelectedEntities[ci] is MyPrefabLargeWeapon)\n                    {\n                        MyLargeShipGunBase weapon = ((MyPrefabLargeWeapon)SelectedEntities[ci]).GetGun();\n                        if (weapon != null)\n                        {\n                            weapon.ForceActivate();\n                        }\n                    } */                        \n                    RemoveEntityFromSelection(SelectedEntities[ci]);                        \n                }\n            }                \n            // play sound:\n            if (MyGuiScreenGamePlay.Static != null && !MyGuiScreenGamePlay.Static.IsGameActive())\n                MyAudio.AddCue2D(MySoundCuesEnum.GuiEditorObjectSelect);\n\n            // unselect waypoint paths\n            MyWayPointGraph.SelectedPath = null;\n        }\n\n        /// <summary>\n        /// Get center position of currently selected objects\n        /// </summary>\n        /// <returns></returns>\n        public static Vector3 GetSelectedObjectsCenter()\n        {\n            PrepareSafeSelectedEntitiesIterationHelper();\n            return MyEntities.GetEntitiesCenter(m_safeIterationHelper);\n        }\n\n        /// <summary>\n        /// This method can be usefull sometimes, when we know that there is only one selected object at the moment\n        /// </summary>\n        /// <returns></returns>\n        public static MyEntity GetFirstSelected()\n        {\n            if (SelectedEntities.Count > 0)\n            {\n                foreach (MyEntity entity in SelectedEntities)\n                {\n                    return entity;\n                }\n            }\n            return null;\n        }\n\n        static int snapPointSelectionCounter = 0;\n        /// <summary>\n        /// Get selected prefab snap point\n        /// </summary>\n        public static MyPrefabSnapPoint GetSnapPoint(bool getFirst)\n        {\n            if (!MyEditor.Static.ShowSnapPoints)\n            {\n                return null;\n            }\n\n            List<MyPrefabSnapPoint> snapPoints = new List<MyPrefabSnapPoint>();\n            MyPrefabSnapPoint selectedSnapPoint = null;\n            Vector2 mouseScreenPosition = MyGuiManager.GetScreenCoordinateFromNormalizedCoordinate(MyGuiManager.MouseCursorPosition);\n            var snapSizeSquared = MyPrefabSnapPoint.GetFixedSnapSize() * MyPrefabSnapPoint.GetFixedSnapSize();\n            Ray ray = MyUtils.ConvertMouseToRay();\n\n            var container = MyEditor.Static.GetEditedPrefabContainer();\n            if (container != null)\n            {\n                foreach (var child in container.Children)\n                {\n                    var prefab = child as MyPrefabBase;\n                    if (prefab != null)\n                    {\n                        foreach (var snapPoint in prefab.SnapPoints)\n                        {\n                            // Forbid selection of snap points which are invisible or can't be attached\n                            if (!snapPoint.Visible || \n                                (SelectedSnapPoint != null && SelectedSnapPoint != snapPoint && !SelectedSnapPoint.CanAttachTo(snapPoint)))\n                            {\n                                continue;\n                            }\n\n                            bool hitTest = false;\n                            if (MyEditor.Static.FixedSizeSnapPoints)\n                            {\n                                Vector3 proj = SharpDXHelper.ToXNA(MyMinerGame.Static.GraphicsDevice.Viewport.Project(SharpDXHelper.ToSharpDX(snapPoint.Matrix.Translation),\n                                    SharpDXHelper.ToSharpDX(MyCamera.ProjectionMatrix),\n                                    SharpDXHelper.ToSharpDX(MyCamera.ViewMatrix), SharpDXHelper.ToSharpDX(prefab.WorldMatrix)));\n                                Vector2 screenCoord = new Vector2(proj.X, proj.Y);\n\n                                hitTest = (mouseScreenPosition - screenCoord).LengthSquared() < snapSizeSquared;\n                            }\n                            else\n                            {\n                                var snapPointPosition = (snapPoint.Matrix * snapPoint.Prefab.WorldMatrix).Translation;\n                                var hit = ray.Intersects(new BoundingSphere(snapPointPosition, MyPrefabSnapPoint.GetRealSnapSize()));\n                                hitTest = hit.HasValue;\n                            }\n\n                            if (hitTest)\n                            {\n                                if (getFirst)\n                                {\n                                    return snapPoint;\n                                }\n                                snapPoints.Add(snapPoint);\n                            }\n                        }\n                    }\n                }\n\n                snapPoints.Sort((x, y) =>\n                    (MyCamera.Position - Vector3.Transform(x.Matrix.Translation, x.Prefab.WorldMatrix)).LengthSquared().CompareTo(\n                    (MyCamera.Position - Vector3.Transform(y.Matrix.Translation, y.Prefab.WorldMatrix)).LengthSquared()));\n\n                ++snapPointSelectionCounter;\n                selectedSnapPoint = snapPoints.Count > 0 ? snapPoints[snapPointSelectionCounter % snapPoints.Count] : null;\n            }\n\n            if (selectedSnapPoint == null)\n            {\n                snapPointSelectionCounter = 0;\n            }\n\n            return selectedSnapPoint;\n        }\n\n        /// <summary>\n        /// Selects objects under mouse cursor\n        /// </summary>\n        public static void SelectByIntersectionLine(MyGuiInput input)\n        {\n            List<MyEntity> beforeSelectionObjects = SelectedEntities;\n            MyEntity selectedNow = MyEntities.GetEntityUnderMouseCursor();\n\n            //TODO solve better\n            if (selectedNow != null && selectedNow.Parent is MyPrefabBase && !(selectedNow is MyWayPoint))\n            {\n                selectedNow = selectedNow.Parent;\n            }\n\n            //while transforming objects with mouse(using gizmo), do not deselect current selection\n            if (TransformationActive == false && ActiveAxis == GizmoAxis.NONE  && !(MyGuiScreenGamePlay.Static.IsIngameEditorActive() && MyEditor.Static.GetEditedPrefabContainer() == null))\n            {\n                \n                //Get selected prefab snap point\n                // IMPORTANT: first assign snap point to local field because setter affects highlighting (ClearSelection clears highlight)\n                var snapPoint = GetSnapPoint(false);\n                if (snapPoint != null)\n                {\n                    ClearSelection();\n                    SelectedSnapPoint = snapPoint;\n                    return;\n                }\n                else\n                {\n                    SelectedSnapPoint = snapPoint;\n                }\n                \n                //if nothing is selected now, clear selection\n                if (selectedNow == null && !input.IsAnyCtrlKeyPressed() && !input.IsAnyShiftKeyPressed())\n                {\n                    ClearSelection();\n                }\n                else\n                {\n                    //if we are in conteiner editing  dont allow changes to selection outside the prefab container\n                    //allow selection of container if exit is allowed\n                    if (MyEditor.Static.IsEditingPrefabContainer())\n                    {\n                        if (selectedNow is MyPrefabBase)\n                        {\n                            if ((selectedNow as MyPrefabBase).Parent != MyEditor.Static.GetEditedPrefabContainer())\n                            {\n                                return;\n                            }\n                        }\n                        else if (!(MyEditor.Static.GetEditedPrefabContainer() == selectedNow && !MyGuiScreenGamePlay.Static.IsIngameEditorActive()))\n                        {\n                            return;\n                        }\n                    }\n\n                    // if CTRL isn't held, clear selection (otherwise add/remove from selection)\n                    if (input.IsAnyControlPress() == false && input.IsAnyShiftPress() == false)\n                    {\n                        // click a waypoint multiple times: cycle among paths\n                        if (selectedNow is MyWayPoint && beforeSelectionObjects.Contains(selectedNow))\n                        {\n                            var pathsContainingSelectedWayPoint = (selectedNow as MyWayPoint).Paths();\n                            int indexOfLastPath = pathsContainingSelectedWayPoint.IndexOf(MyWayPointGraph.SelectedPath);\n                            \n                            ClearSelection();\n\n                            if (pathsContainingSelectedWayPoint.Count == 0)\n                            {\n                                MyWayPointGraph.SelectedPath = null;\n                            }\n                            else\n                            {\n                                // select next path (or, if it was the last one, select just the vertex)\n                                if (indexOfLastPath == pathsContainingSelectedWayPoint.Count - 1)\n                                    MyWayPointGraph.SelectedPath = null;\n                                else if (indexOfLastPath == -1)\n                                    MyWayPointGraph.SelectedPath = pathsContainingSelectedWayPoint[0];\n                                else\n                                    MyWayPointGraph.SelectedPath = pathsContainingSelectedWayPoint[indexOfLastPath + 1];\n                            }\n\n                            if (MyWayPointGraph.SelectedPath != null)\n                            {\n                                // a path is selected: select waypoints from path in the correct order\n                                // the clicked waypoint will try to be added again later, but will be prevented from it\n                                AddEntitiesToSelection(MyWayPointGraph.SelectedPath.WayPoints);\n                            }\n                        }\n                        else\n                        {\n                            ClearSelection();\n                        }\n                    }\n\n                    //When editing container(selecting prefabs inside it), it should not be possible to select any objects outside container\n                    if (MyEditor.Static.IsEditingPrefabContainer())\n                    {\n                        //Allow selection of objects inside container, but disallow all outside\n                        BoundingSphere vol = selectedNow.WorldVolume;\n                        if (MyEditor.Static.GetEditedPrefabContainer().GetIntersectionWithMaximumBoundingBox(ref vol) == false && (selectedNow is MyPrefabBase == false))\n                        {\n                            selectedNow = null;\n                        }\n\n                        // Allow selection of edited container only if exit editing mode action is allowed\n                        if (selectedNow == MyEditor.Static.GetEditedPrefabContainer())\n                        {\n                            MyEditor.Static.ExitActivePrefabContainer();\n                            AddEntityToSelection(selectedNow);\n                            return;\n                        }\n                    }\n\n\n                    // If selected item is child of the prefab and is not a prefab switch selection to the parent prefab:\n                    // for weapon case:\n                    if (selectedNow is MyLargeShipGunBase || selectedNow is MyLargeShipBarrelBase)\n                    {\n                        //selectedNow = ((MyLargeShipGunBase)selectedNow).PrefabParent;\n                        selectedNow = MySelectionTool.GetSelectableEntity(selectedNow);\n                    }\n\n                    // When selected object is prefab, switch to edit mode of prefab container immediately\n                    if (selectedNow is MyPrefabBase)\n                    {\n                        MyPrefabContainer parentContainer = (MyPrefabContainer)selectedNow.Parent;\n                        MyEditor.Static.EditPrefabContainer(parentContainer);\n                    }                    \n\n                    // CTRL held: add/remove entities to/from selection\n                    if (input.IsAnyControlPress() == true)\n                    {\n                        if (selectedNow != null)\n                        {\n                            if (IsEntitySelected(selectedNow))\n                            {\n                                RemoveEntityFromSelection(selectedNow);\n                            }\n                            else\n                            {\n                                AddEntityToSelection(selectedNow);\n                            }\n\n                            // add/remove waypoints from selected waypoint path\n                            MyWayPointGraph.UpdateSelectedPath();\n                        }\n                    }\n                    else if (!input.IsAnyShiftPress())\n                    {\n                        if (selectedNow != null)\n                        {\n                            AddEntityToSelection(selectedNow);\n                            /*\n                            if (selectedNow is MyPrefabLargeWeapon)\n                            {\n                                AddEntityToSelection(((MyPrefabLargeWeapon)selectedNow).GetGun());\n                            } */\n                        }\n                    }\n                }\n                // play sound:\n                MyAudio.AddCue2D(MySoundCuesEnum.GuiEditorObjectSelect);\n            }\n\n\n            //There is new selection made compared to previous selection, reload control buttons\n            if ((beforeSelectionObjects.Count > 0 && beforeSelectionObjects.Contains(selectedNow) == false) ||\n                (beforeSelectionObjects.Count == 0 && selectedNow != null) ||\n                (beforeSelectionObjects.Count > 0 && selectedNow == null))\n            {\n                MyEditor.Static.ReloadEditorControls = true;\n            }\n        }\n\n        #endregion\n\n        #region Move And Rotate Methods\n\n        /// <summary>\n        /// HasTransformationStarted\n        /// </summary>\n        /// <returns></returns>\n        static bool HasTransformationStarted()\n        {\n            return TransformationActivePrevious == false && TransformationActive == true;\n        }\n\n        /// <summary>\n        /// HasTransformationEnded\n        /// </summary>\n        /// <returns></returns>\n        static bool HasTransformationEnded()\n        {\n            return TransformationActivePrevious == true && TransformationActive == false;\n        }\n\n        /// <summary>\n        /// When transformation starts, prepare transformation action data\n        /// </summary>\n        public static void StartTransformationData()\n        {\n\n            m_gizmoStartRotation = m_gizmoWorld;\n\n            m_transformAction = new MyEditorActionEntityTransform();\n            foreach (MyEntity entity in SelectedEntities)\n            {\n                MyEditorTransformData data = new MyEditorTransformData(entity, entity.GetPosition(), entity.GetWorldRotation());\n                m_transformAction.AddStartData(data);\n            }\n        }\n\n        /// <summary>\n        /// When transformation finished, register and do transformation action\n        /// </summary>\n        public static void EndTransformationData()\n        {\n            if (m_transformAction != null)\n            {\n                Vector3? snapMovement = null;\n                foreach (MyEntity entity in SelectedEntities)\n                {\n                    Matrix rotation = entity.GetWorldRotation();\n\n                    if (SnapEnabled)\n                    {\n                        Vector3 pos = entity.GetPosition();\n\n                        if (snapMovement == null) // We snap only first entities\n                        {\n                            Vector3 oldPosition = pos;\n                            SnapToGrid(ref pos, TranslationSnapValue);\n                            snapMovement = pos - oldPosition;\n                        }\n                        else // We move other entites based only on movement of first entity\n                        {\n                            pos += snapMovement.Value;\n                        }\n\n\n\n                        if (!MyEditor.Static.IsLinked(entity))\n                        {\n                            entity.MoveAndRotate(pos, rotation);\n                        }\n                        else if (SelectedEntities.Count == 1)\n                        {\n                            List<MyEntity> temp = new List<MyEntity>();\n                            entity.MoveAndRotate(pos, rotation);\n                            MyEditor.Static.FixLinkedEntities(entity, temp, null);\n                        }\n                    }\n\n                    MyEditorTransformData data = new MyEditorTransformData(entity, entity.GetPosition(), entity.GetWorldRotation());\n                    m_transformAction.AddEndData(data);\n                }\n\n                m_transformAction.RegisterAndDoAction();\n                m_transformAction = null;\n            }\n            m_gizmoStartRotation = null;\n        }\n\n\n\n        /// <summary>\n        /// Calculates yaw, pitch, roll by provided rotation delta matrix\n        /// </summary>\n        /// <param name=\"rotationDelta\"></param>\n        static void CalculateYawPitchRollFromRotationDelta(Matrix rotationDelta)\n        {\n            float yaw = 0;\n            float pitch = 0;\n            float roll = 0;\n\n            MyUtils.RotationMatrixToYawPitchRoll(ref rotationDelta, out yaw, out pitch, out roll);\n\n            // store rotation parameters so that we can calculate the difference in rotation of \"before\" rotation and \"after\"\n            m_deltaYaw += MathHelper.ToDegrees(yaw);\n            m_deltaPitch += MathHelper.ToDegrees(pitch);\n            m_deltaRoll += MathHelper.ToDegrees(roll);\n        }\n\n        /// <summary>\n        /// Get delta vector transformation around provided rotation matrix\n        /// </summary>\n        /// <param name=\"axis\"></param>\n        /// <param name=\"position\"></param>\n        /// <param name=\"rotation\"></param>\n        /// <param name=\"delta\"></param>\n        /// <returns></returns>\n        static Vector3 GetTransformInAxis(GizmoAxis axis, Vector3 position, Matrix rotation, float delta)\n        {\n            Vector3 deltaVec = Vector3.Zero;\n            if (axis == GizmoAxis.X)\n            {\n                deltaVec = new Vector3(delta, 0, 0);\n                deltaVec = Vector3.Transform(deltaVec, rotation);\n            }\n            else if (axis == GizmoAxis.Y)\n            {\n                deltaVec = new Vector3(0, delta, 0);\n                deltaVec = Vector3.Transform(deltaVec, rotation);\n            }\n            else if (axis == GizmoAxis.Z)\n            {\n                deltaVec = new Vector3(0, 0, delta);\n                deltaVec = Vector3.Transform(deltaVec, rotation);\n            }\n\n            position += deltaVec;\n\n            return position;\n        }\n\n        /// <summary>\n        /// This method calculates new object position when its being rotated - in case only one object is selected and rotated\n        /// only rotation is changed, but for multiple selected object, rotation is calculated based on the objects selected center\n        /// </summary>\n        static void GetRotationAndPosition(MyEntity entity, Matrix rotation, out Vector3 newPosition, out Matrix newRotation)\n        {\n            Matrix entityOrientation = entity.GetWorldRotation();\n            Vector3 entityPosition = entity.GetPosition();\n            Vector3 gizmoPosition = Position;\n\n            if (ActivePivot == PivotType.OBJECT_CENTER)\n            {\n                //gizmoPosition = entityPosition;\n            }\n\n            Matrix localRot = Matrix.Identity;\n            localRot.Forward = entityOrientation.Forward;\n            localRot.Up = entityOrientation.Up;\n            localRot.Right = entityOrientation.Right;\n            m_localRight = MyMwcUtils.Normalize(m_localRight);\n            localRot.Translation = entityPosition - gizmoPosition;\n\n            Matrix rot = localRot * rotation;\n            newPosition = rot.Translation + gizmoPosition;\n            entityOrientation.Forward = rot.Forward;\n            entityOrientation.Up = rot.Up;\n            entityOrientation.Right = rot.Right;\n            entityOrientation.Translation = Vector3.Zero;\n            newRotation = entityOrientation;\n        }\n\n        /// <summary>\n        /// Moves and Rotates entity\n        /// </summary>\n        /// <param name=\"newPosition\"></param>\n        /// <param name=\"newOrientation\"></param>\n        /// <param name=\"entity\"></param>\n        public static void MoveAndRotateObject(Vector3 newPosition, Matrix newOrientation, MyEntity entity)\n        {\n            BoundingSphere sphere = new BoundingSphere(newPosition + entity.LocalVolumeOffset, entity.WorldVolume.Radius);\n\n            if (MyMwcSectorConstants.SECTOR_SIZE_FOR_PHYS_OBJECTS_BOUNDING_BOX.Contains(sphere) == MinerWarsMath.ContainmentType.Contains)\n            {\n                Matrix entityBeforeMoveOrientation = entity.GetWorldRotation();\n                Vector3 entityBeforeMovePosition = entity.GetPosition();\n\n                if (entityBeforeMovePosition != newPosition || entityBeforeMoveOrientation != newOrientation)\n                {\n                    // Move object\n                    bool moveSuccesfull = entity.MoveAndRotate(newPosition, newOrientation);\n                    Vector3 currentPosition = entity.GetPosition();\n                    Matrix currentOrientation = entity.GetWorldRotation();\n\n                    if (moveSuccesfull)\n                    {\n                        //entity.UpdateWorldMatrix();\n                        //  Play movement or rotation sounds\n                        if (MyMinerGame.TotalGamePlayTimeInMilliseconds > m_delayMovementSoundInMillis)\n                        {\n                            if (entityBeforeMovePosition != currentPosition)\n                            {\n                                MyAudio.AddCue2D(MySoundCuesEnum.GuiEditorObjectMoveStep);\n                            }\n\n                            if (entityBeforeMoveOrientation != currentOrientation)\n                            {\n                                MyAudio.AddCue2D(MySoundCuesEnum.GuiEditorObjectRotateStep);\n                            }\n\n                            m_delayMovementSoundInMillis = MyMinerGame.TotalGamePlayTimeInMilliseconds + MyEditorConstants.DELAY_OBJECT_MOVEMENT_SOUND_IN_MILLIS;\n                        }\n\n                        MyEditor.Static.RecheckAllColidingEntitesAndClearNonColiding();//check all coliding entites to see if any went out of collision state\n                        \n                        //MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"CheckAllCollidingObjectsForEntity\");\n\n                        // This was taking up to 170ms for 800 prefabs, so its replaced by void CheckCollisions(IEnumerable<MyEntity> entities) in HandleInput().\n                        //MyEditor.Static.CheckAllCollidingObjectsForEntity(entity);//check all colliding state of entity after move\n\n                        //MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock(); \n                    }\n                    else\n                    {\n                        if (MyMinerGame.TotalGamePlayTimeInMilliseconds > m_delayMovementSoundInMillis)\n                        {\n                            if ((entityBeforeMovePosition != currentPosition) || (entityBeforeMoveOrientation != currentOrientation))\n                            {\n                                MyAudio.AddCue2D(MySoundCuesEnum.GuiEditorObjectMoveInvalid);\n                                m_delayMovementSoundInMillis = MyMinerGame.TotalGamePlayTimeInMilliseconds + 1000;\n                            }\n                        }\n                    }\n\n                }\n            }\n        }\n\n        #endregion\n\n        #region Validation Methods\n\n        /// <summary>\n        /// Checks if entity or its parent is selected\n        /// </summary>\n        /// <param name=\"entity\"></param>\n        /// <returns></returns>\n        public static bool IsEntityOrItsParentSelected(MyEntity entity)\n        {\n            MyEntity actualentity = entity;\n            while (actualentity != null)\n            {\n                if (SelectedEntities.Contains(actualentity))\n                {\n                    return true;\n                }\n                actualentity = actualentity.Parent;\n            }\n            return false;\n        }\n\n        /// <summary>\n        /// Checks if entity is selected\n        /// </summary>\n        /// <param name=\"entity\"></param>\n        /// <returns></returns>\n        public static bool IsEntitySelected(MyEntity entity)\n        {\n            if (SelectedEntities.Contains(entity) == true)\n            {\n                return true;\n            }\n            else\n            {\n                return false;\n            }\n        }\n\n        /// <summary>\n        /// Is only one entity selected\n        /// </summary>\n        /// <returns></returns>\n        public static bool IsOnlyOneEntitySelected()\n        {\n            return SelectedEntities.Count == 1;\n        }\n\n        /// <summary>\n        /// Is any entity selected\n        /// </summary>\n        /// <returns></returns>\n        public static bool IsAnyEntitySelected()\n        {\n            return SelectedEntities != null && SelectedEntities.Count > 0;\n        }\n\n        /// <summary>\n        /// Is more than one entity selected\n        /// </summary>\n        /// <returns></returns>\n        public static bool IsMoreThanOneEntitySelected()\n        {\n            return SelectedEntities != null && SelectedEntities.Count > 1;\n        }\n\n        /// <summary>\n        /// Is only one entity type selected\n        /// </summary>\n        /// <returns></returns>\n        public static bool IsOnlyOneEntityTypeSelected() \n        {            \n            if (IsAnyEntitySelected()) \n            {\n                Type selectedType = null;\n                foreach (MyEntity entity in SelectedEntities)\n                {\n                    if (selectedType == null)\n                    {\n                        selectedType = entity.GetType();\n                    }\n                    else if(selectedType != entity.GetType())\n                    {\n                        return false;\n                    }\n                }\n                return true;\n            }\n            return false;\n        }\n\n        /// <summary>\n        /// Is any voxel map selected\n        /// </summary>\n        /// <returns></returns>\n        static bool IsAnyVoxelMapSelected()\n        {\n            if (IsAnyEntitySelected())\n            {\n                foreach (MyEntity entity in SelectedEntities)\n                {\n                    if (entity is MyVoxelMap) return true;\n                }\n            }\n            return false;\n        }\n\n        /// <summary>\n        /// Is any transformation key pressed\n        /// </summary>\n        /// <param name=\"input\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        static bool IsTransformationKeyPressed(MyGuiInput input, Keys key)\n        {\n            bool result = false;\n            MyEntity entity = GetFirstSelected();\n            //when the key is pressed for a longer period, allow to move object constantly in chosen direction and not only in one step\n            if (input.IsKeyPress(key))\n            {\n                if (input.WasKeyPressed(key) == false)\n                {\n                    m_delayObjectMovementInMillis = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n                    result = input.IsNewKeyPress(key);\n                }\n                else\n                {\n                    if (IsDelayForSmoothMovementReached())\n                    {\n                        result = true;\n                    }\n                }\n            }\n\n            if (result) TransformationActive = true;\n\n            return result;\n        }\n\n        /// <summary>\n        /// Is delay for smooth movement of entities reached\n        /// </summary>\n        /// <returns></returns>\n        static bool IsDelayForSmoothMovementReached()\n        {\n            return m_delayObjectMovementInMillis + MyEditorConstants.DELAY_FOR_SMOOTH_OBJECT_MOVEMENT_IN_MILLIS < MyMinerGame.TotalGamePlayTimeInMilliseconds;\n        }\n\n        /// <summary>\n        /// Is rotation active\n        /// </summary>\n        /// <returns></returns>\n        public static bool IsRotationActive()\n        {\n            return MyEditorGizmo.TransformationActive == true && MyEditorGizmo.ActiveMode == GizmoMode.ROTATE;\n        }\n\n        /// <summary>\n        /// Is any axis active\n        /// </summary>\n        /// <returns></returns>\n        public static bool IsAnyAxisSelected()\n        {\n            return MyEditorGizmo.ActiveAxis != GizmoAxis.NONE;\n        }\n\n        #endregion\n\n        #region Other Methods\n\n        /// <summary>\n        /// Switch gizmo mode\n        /// </summary>\n        public static void SwitchGizmoMode()\n        {\n            if (ActiveMode == GizmoMode.TRANSLATE)\n            {\n                if (IsAnyVoxelMapSelected() == false)\n                {\n                    ActiveMode = GizmoMode.ROTATE;\n                }\n                else\n                {\n                    ActiveMode = GizmoMode.TRANSLATE;\n                }\n            }\n            else\n            {\n                ActiveMode = GizmoMode.TRANSLATE;\n            }\n        }\n\n        public static void SwitchRotateSnapping()\n        {\n   \n                    // Obtain the values of all the elements within myEnum \n                var rotateSnappings = Enum.GetValues( typeof( RotateSnapping ) );\n                    \n\n                    var index = 0;\n                    foreach (RotateSnapping rotateSnapping in rotateSnappings)\n                    {\n                        if (rotateSnapping == ActiveRotateSnapping)\n                        {\n                            var newIndex = (index + 1)%rotateSnappings.Length;\n                            ActiveRotateSnapping = (RotateSnapping)rotateSnappings.GetValue(newIndex);\n                            break;\n                        }\n                        index++;\n                    }\n        }\n\n\n\n        /// <summary>\n        /// Get predefined rotation delta value\n        /// </summary>\n        /// <returns></returns>\n        public static float GetRotationDelta()\n        {\n            float rotationAngleInDegrees = MyEditorConstants.BASE_ROTATION_DELTA_ANGLE_IN_DEGREES;\n            if ((GetFirstSelected() is MyPrefabBase  || SelectedSnapPoint != null) && MyConfig.EditorLockedPrefab90DegreesRotation)\n            {\n                rotationAngleInDegrees = MyEditorConstants.ROTATION_DELTA_RIGHT_ANGLE_IN_DEGREES;\n            }\n            \n            return rotationAngleInDegrees;\n        }\n\n        /// <summary>\n        /// Only for drawing gizmo models, because some objects need to use special world matrix\n        /// </summary>\n        /// <param name=\"worldMatrix\"></param>\n        /// <returns></returns>\n        static Matrix GetWorldMatrixForDraw(ref Matrix worldMatrix)\n        {\n            Matrix outMatrix;\n            Matrix.Multiply(ref worldMatrix, ref MyCamera.InversePositionTranslationMatrix, out outMatrix);\n            return outMatrix;\n        }\n\n        /// <summary>\n        /// Gets higher value from two floats\n        /// </summary>\n        /// <param name=\"a\"></param>\n        /// <param name=\"b\"></param>\n        /// <returns></returns>\n        static float GetHigherAbsValue(float a, float b)\n        {\n            float result = a;\n            float absValueA = Math.Abs(a);\n            float absValueB = Math.Abs(b);\n            if (absValueA < absValueB) result = b;\n            return result;\n        }\n\n        static Matrix GetWorldMatrix()\n        {\n            if (SelectedSnapPoint != null)\n            {\n                return SelectedSnapPoint.Matrix * SelectedSnapPoint.Prefab.WorldMatrix;\n            }\n            else\n            {\n                Debug.Assert(SelectedEntities.Count > 0);\n                return SelectedEntities[0].WorldMatrix;\n            }\n        }\n\n        #endregion\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Editor/MyEditorGrid.cs",
    "content": "﻿using System;\nusing System.Linq;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.TransparentGeometry;\n\nnamespace MinerWars.AppCode.Game.Editor\n{\n    static class MyEditorGrid\n    {\n        public enum GridOrientation\n        {\n            ORIENTATION_XY,\n            ORIENTATION_XZ,\n            ORIENTATION_YZ\n        }\n\n        public enum GridStep : short\n        {\n            STEP_LEVEL_1 = 1,   //0,1m\n            STEP_LEVEL_2 = 5,\n            STEP_LEVEL_3 = 10,\n            STEP_LEVEL_4 = 50,\n            STEP_LEVEL_5 = 100,\n            STEP_LEVEL_6 = 1000  //100m\n        }\n\n        static GridStep m_gridStepMode;\n        static GridOrientation m_gridOrientation;\n        static Vector4 m_gridColor;\n        static bool m_isGridVisible;\n        static bool m_isGridActive;\n        static float m_gridStepInMeters;\n\n        public static void LoadData()\n        {\n            m_gridStepMode = MyFakes.MWBUILDER ? GridStep.STEP_LEVEL_4 : GridStep.STEP_LEVEL_3;\n            m_gridOrientation = GridOrientation.ORIENTATION_XY;\n            m_gridColor = MyEditorConstants.COLOR_WHITE;\n            m_isGridVisible = false;\n            m_gridStepInMeters = GetGridStepInMeters();\n        }\n\n        public static float GetGridStepInMeters()\n        {\n            return (((short)m_gridStepMode) / (float)MyEditorConstants.GRID_CONVERSION_UNIT);\n        }\n\n        public static bool IsGridActive\n        {\n            get { return m_isGridActive; }\n            set { m_isGridActive = value; }\n        }\n\n        public static void IncreaseGridStep()\n        {\n            if (IsMaxGridStep() == false)\n            {\n                m_gridStepMode = MyUtils.GetNextOrPreviousEnumValue(m_gridStepMode, true);\n            }\n        }\n\n        public static void DecreaseGridStep()\n        {\n            if (IsMinGridStep() == false)\n            {\n                m_gridStepMode = MyUtils.GetNextOrPreviousEnumValue(m_gridStepMode, false);\n            }\n        }\n\n        public static void SwitchGridOrientation()\n        {\n            if (m_isGridActive)\n            {\n                m_gridOrientation = MyUtils.GetNextOrPreviousEnumValue(m_gridOrientation, true);\n            }\n        }\n\n        public static bool IsMaxGridStep()\n        {\n            return m_gridStepMode == GridStep.STEP_LEVEL_6;\n        }\n\n        public static bool IsMinGridStep()\n        {\n            return m_gridStepMode == GridStep.STEP_LEVEL_1;\n        }\n\n        public static void Update()\n        {\n            if (m_isGridActive)\n            {\n                if (MyEditorGizmo.SelectedEntities.Count > 0)\n                {\n                    MyEntity selectedPhysObject = MyEditorGizmo.SelectedEntities.ElementAt(0);\n                    if (selectedPhysObject != null)\n                    {\n                        BoundingSphere vol = selectedPhysObject.WorldVolume;\n                        var spectatorPosition = MySpectator.Position;\n                        float distance = Math.Abs(MyUtils.GetSmallestDistanceToSphere(ref spectatorPosition, ref vol));\n                        //float maxDistance = MyEditorConstants.MAX_DISTANCE_TO_DRAW_GRID * m_gridStepInMeters;\n                        //float normalizedDistance = MathHelper.Clamp(distance - maxDistance, 0, 1);\n                        //Vector4.Lerp(ref MyEditorConstants.COLOR_WHITE, ref MyEditorConstants.COLOR_BLACK, 1, out CurrentGridColor);\n\n                        if (distance > MyEditorConstants.MAX_DISTANCE_TO_DRAW_GRID * m_gridStepInMeters)\n                        {\n                            ShadeOutGrid();\n                        }\n                        else\n                        {\n                            ShadeInGrid();\n                        }\n                    }\n                    else\n                    {\n                        //Vector4.Lerp(ref MyEditorConstants.COLOR_WHITE, ref MyEditorConstants.COLOR_BLACK, 1, out CurrentGridColor);\n                        ShadeOutGrid();\n                    }\n                }\n                else\n                {\n                    ShadeInGrid();\n                }\n            }\n        }\n\n        private static void ShadeOutGrid()\n        {\n            if (m_gridColor.X < 0.01f && m_gridColor.Y < 0.01f && m_gridColor.Z < 0.01f)\n            {\n                m_isGridVisible = false;\n            }\n\n            if (m_isGridVisible)\n            {   \n                //CurrentGridColor = Color.Lerp(MyEditorConstants.COLOR_WHITE, MyEditorConstants.COLOR_BLACK,\n\t\t\t    m_gridColor.X -= 0.01f;\n                m_gridColor.Y -= 0.01f;\n                m_gridColor.Z -= 0.01f;\n            }\n        }\n\n        private static void ShadeInGrid()\n        {\n            m_isGridVisible = true; \n\n            if (m_gridColor.X < MyEditorConstants.DEFAULT_GRID_COLOR.X && m_gridColor.Y < MyEditorConstants.DEFAULT_GRID_COLOR.Y &&\n                m_gridColor.Z < MyEditorConstants.DEFAULT_GRID_COLOR.Z)\n            {\n                m_gridColor.X += 0.01f;\n                m_gridColor.Y += 0.01f;\n                m_gridColor.Z += 0.01f;\n            }\n        }\n\n        public static void Draw()\n        {\n            if (m_isGridActive && m_isGridVisible)\n            {\n                float billboardDelta = m_gridStepInMeters * 10;\n          \n                Vector3 selectedObjectPosition = new Vector3(0,0,0);\n                Vector3 selectedObjectSize = MinerWars.CommonLIB.AppCode.Utils.MyMwcSectorConstants.SECTOR_SIZE_VECTOR3;\n\n                if (MyEditorGizmo.SelectedEntities.Count > 0)\n                {\n                    MyEntity selectedPhysObject = MyEditorGizmo.SelectedEntities.ElementAt(0);\n                    selectedObjectPosition = selectedPhysObject.GetPosition();\n                    selectedObjectSize = selectedPhysObject.WorldAABB.Size();\n                }\n\n                Vector3 gridStartPosition;\n                Vector3 billboardPositionDelta;\n                Vector3 orientationA;\n                Vector3 orientationB;\n                float sizeA;\n                float sizeB;\n\n                if (m_gridOrientation == GridOrientation.ORIENTATION_XY)\n                {\n                    orientationA = Vector3.Right;\n                    orientationB = Vector3.Up;\n                    sizeA = selectedObjectSize.X;\n                    sizeB = selectedObjectSize.Y;\n                    gridStartPosition = selectedObjectPosition - new Vector3(sizeA / 2, sizeB / 2, 0);\n                    billboardPositionDelta = new Vector3(billboardDelta, billboardDelta, 0);\n                }\n                else if (m_gridOrientation == GridOrientation.ORIENTATION_XZ)\n                {\n                    orientationA = -Vector3.Forward;\n                    orientationB = Vector3.Right;\n                    sizeA = selectedObjectSize.X;\n                    sizeB = selectedObjectSize.Z;\n                    gridStartPosition = selectedObjectPosition - new Vector3(sizeA / 2, 0, sizeB / 2);\n                    billboardPositionDelta = new Vector3(billboardDelta, 0, billboardDelta);\n                }\n                else\n                {\n                    orientationA = Vector3.Up;\n                    orientationB = -Vector3.Forward;\n                    sizeA = selectedObjectSize.Y;\n                    sizeB = selectedObjectSize.Z;\n                    gridStartPosition = selectedObjectPosition - new Vector3(0, sizeA / 2, sizeB / 2);\n                    billboardPositionDelta = new Vector3(0, billboardDelta, billboardDelta);\n                }\n\n\n                for (float gridADirection = 0; gridADirection < sizeA; gridADirection += billboardDelta)\n                {\n                    Vector3 startPosition = gridStartPosition + orientationA * gridADirection;\n                    Vector3 endPosition = gridStartPosition + orientationA * gridADirection + orientationB * sizeB;\n\n                    MyTransparentGeometry.AddLineBillboard2(MyTransparentMaterialEnum.ProjectileTrailLine, m_gridColor, \n                        startPosition, endPosition, 1);\n                }\n\n                for (float gridBDirection = 0; gridBDirection < sizeB; gridBDirection += billboardDelta)\n                {\n                    Vector3 startPosition = gridStartPosition + orientationB * gridBDirection;\n                    Vector3 endPosition = gridStartPosition + orientationB * gridBDirection + orientationA * sizeA;\n\n                    MyTransparentGeometry.AddLineBillboard2(MyTransparentMaterialEnum.ProjectileTrailLine, m_gridColor,\n                        startPosition, endPosition, 1);\n                }\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Editor/MyEditorOptions.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace MinerWars.AppCode.Game.Editor\n{\n    static class MyEditorOptions\n    {\n        // This option holds information, weather to display bounding boxes of unselected objects(it is then easier to find some object)\n        public static bool DisplayUnselectedObjectsBounding;\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Editor/MyEditorShortcutManager.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Debugging;\nusing MinerWars.AppCode.Toolkit.Input;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWarsMath;\n\nnamespace MinerWars.AppCode.Game.Editor\n{\n    class MyEditorShortcutManager\n    {\n        private static MyEditorShortcutManager m_Instance = null;\n\n\n        /// <summary>\n        /// GetInstance\n        /// </summary>\n        /// <returns></returns>\n        public static MyEditorShortcutManager GetInstance()\n        {\n            if (m_Instance == null)\n                m_Instance = new MyEditorShortcutManager();\n\n            return m_Instance;\n        }\n\n\n        /// <summary>\n        /// Initialize\n        /// </summary>\n        public void Initialize()\n        {\n            short modifier = (short)MyShortcut.ModifierValue.Control + (short)MyShortcut.ModifierValue.Shift;\n\n            //@ reset camera\n            MyShortcut shortcut = new MyShortcut(Keys.R, modifier);\n            MyDebugConsole.GetInstance().RegisterShortcut(MyDebugSystem.Editor, \"EditorShortcutManager\", \"Reset camera\", shortcut, OnResetCamera);\n\n            //@ reset object rotation\n            short resObjMod = (short)MyShortcut.ModifierValue.Control;\n            shortcut = new MyShortcut(Keys.R, resObjMod);\n            MyDebugConsole.GetInstance().RegisterShortcut(MyDebugSystem.Editor, \"EditorShortcutManager\", \"Reset object rotation\", shortcut, OnRotationScaleReset);\n        }\n\n\n        /// <summary>\n        /// Clear\n        /// </summary>\n        public void Clear()\n        {\n            short modifier = (short)MyShortcut.ModifierValue.Control + (short)MyShortcut.ModifierValue.Shift;\n            MyShortcut shortcut = new MyShortcut(Keys.R, modifier);\n            MyDebugConsole.GetInstance().UnregisterShortcut(shortcut);\n\n            short resObjMod = (short)MyShortcut.ModifierValue.Control;\n            shortcut = new MyShortcut(Keys.R, resObjMod);\n            MyDebugConsole.GetInstance().UnregisterShortcut(shortcut);\n        }\n\n\n\n        /// <summary>\n        /// OnResetCamera\n        /// </summary>\n        /// <param name=\"sender\"></param>\n        public void OnResetCamera(MyDebugConsole.MyDebugConsoleItem sender)\n        {\n            MySpectator.ResetSpectatorView();\n        }\n\n\n        /// <summary>\n        /// OnResetObjectRotation\n        /// </summary>\n        /// <param name=\"sender\"></param>\n        public void OnRotationScaleReset(MyDebugConsole.MyDebugConsoleItem sender)\n        {\n            if (MyEditor.Static.IsActive())\n            {\n                //@ getSelection - reset rot on selected objects!\n                List<MyEntity> selection = MyEditorGizmo.SelectedEntities;\n                if (selection.Count == 0)\n                    return;\n\n                foreach(MyEntity entity in selection)\n                {\n                    Matrix mat = Matrix.Identity;\n                    mat.Translation = entity.WorldMatrix.Translation;\n                    entity.WorldMatrix = mat;\n                }\n            }\n        }\n\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Editor/MyEditorTransformData.cs",
    "content": "﻿using MinerWars.AppCode.Game.Entities;\nusing MinerWarsMath;\n\nnamespace MinerWars.AppCode.Game.Editor\n{\n    /// <summary>\n    /// Holds transformation data used for entity transform action\n    /// </summary>\n    struct MyEditorTransformData\n    {\n        MyEntity m_entity;\n        Vector3 m_position;\n        Matrix m_orientation;\n\n        public MyEditorTransformData(MyEntity entity, Vector3 position, Matrix orientation)\n        {\n            m_entity = entity;\n            m_position = position;\n            m_orientation = orientation;\n        }\n\n        public MyEntity GetEntity()\n        {\n            return m_entity;\n        }\n\n        public Vector3 GetPosition()\n        {\n            return m_position;\n        }\n\n        public Matrix GetOrientation()\n        {\n            return m_orientation;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Editor/MyEditorVoxelHand.cs",
    "content": "﻿using MinerWarsMath;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.GUI.Helpers;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Toolkit.Input;\nusing MinerWars.AppCode.Game.Voxels;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Voxels;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.Game.Entities.VoxelHandShapes;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.GUI.ScreenEditor;\nusing MinerWars.AppCode.Game.Audio;\nusing KeenSoftwareHouse.Library.Trace;\nusing MinerWars.AppCode.Game.Render;\nusing MinerWars.AppCode.Game.Entities.WayPoints;\nusing System;\nusing System.Collections.Generic;\n\nnamespace MinerWars.AppCode.Game.Editor\n{\n    delegate void OnVoxelShapeSizeChanged(float newSize);\n    delegate void OnVoxelShapeDistanceChanged(float newDistance);\n\n    static class MyEditorVoxelHand\n    {\n        public static MyVoxelHandShape VoxelHandShape; // We keep reference to shape, that is currently attached to camera\n        static float m_distance = MyVoxelConstants.DEFAULT_VOXEL_HAND_DISTANCE; // when objects attached to camera, this is used to change distance of objects from camera as required\n        static MyVoxelMap m_applyToVoxelMap;  // reference to voxel map, to which voxel hand shapes are applied\n        private static bool m_Enabled;\n        private static Vector3 m_conePosition;\n        public static bool IsProjected;\n        public static bool IsProjectedToWaypoints;\n\n        private static int m_timeFromLastShaping = 0;\n        public static MyVoxelMap SelectedVoxelMap = null;\n\n        public static MyDummyPoint DetachedVoxelHand = null;\n\n        static MyEditorVoxelHand()\n        {\n            Render.MyRender.RegisterRenderModule(MyRenderModuleEnum.VoxelHand, \"Voxel hand\", Draw, Render.MyRenderStage.PrepareForDraw);\n        }\n\n        public static void LoadData()\n        {\n            // default shape is sphere\n            MyMwcObjectBuilder_VoxelHand_Sphere defaultBuilder = new MyMwcObjectBuilder_VoxelHand_Sphere(new MyMwcPositionAndOrientation(MySpectator.Orientation, Vector3.Forward, Vector3.Up), MyVoxelConstants.DEFAULT_VOXEL_HAND_SIZE, MyMwcVoxelHandModeTypeEnum.SUBTRACT);\n            VoxelHandShape = new MyVoxelHandSphere();\n            ((MyVoxelHandSphere)VoxelHandShape).Init(defaultBuilder, null);\n\n            m_Enabled = false;\n            m_timeFromLastShaping = 0;\n            m_distance = MyVoxelConstants.DEFAULT_VOXEL_HAND_DISTANCE;\n            IsProjected = false;\n            IsProjectedToWaypoints = false;\n        }\n\n        public static void UnloadData()\n        {\n        }\n\n        public static void LoadContent()\n        {\n        }\n\n        public static void UnloadContent()\n        {\n        }\n\n        //public static event OnVoxelShapeSizeChanged OnVoxelShapeSize;\n        //public static event OnVoxelShapeDistanceChanged OnVoxelShapeDistance;\n        \n        public static void HandleInput(MyGuiInput input)\n        {\n            // exit voxel hand using this key\n            if (input.IsEditorControlNewPressed(MyEditorControlEnums.VOXEL_HAND))\n            {\n                SwitchEnabled();\n            }\n\n            if (m_Enabled == false || !IsAnyEditorActive()) return;\n\n            m_applyToVoxelMap = null;\n\n            //here possible change\n            if ((input.IsEditorControlNewPressed(MyEditorControlEnums.PRIMARY_ACTION_KEY)\n                || input.IsAnyShiftKeyPressed() && input.IsEditorControlPressed(MyEditorControlEnums.PRIMARY_ACTION_KEY)) &&\n                (m_timeFromLastShaping >= MyVoxelConstants.VOXEL_HAND_SHAPING_INTERVAL || MyFakes.RAPID_VOXEL_HAND_SHAPING_ENABLED || MyFakes.MWBUILDER))\n            {\n                m_timeFromLastShaping = 0;\n\n                if (DetachedVoxelHand != null && !input.IsKeyPress(Keys.Space))\n                    return;\n\n                MyVoxelMap voxelMap = null;\n\n                if (VoxelHandShape is MyVoxelHandSphere)\n                {\n                    MyVoxelHandSphere sphere = (MyVoxelHandSphere)VoxelHandShape;\n                    BoundingSphere vol = sphere.WorldVolume;\n                    voxelMap = MyVoxelMaps.GetIntersectionWithSphere(ref vol, SelectedVoxelMap);\n                }\n                else if (VoxelHandShape is MyVoxelHandBox)\n                {\n                    MyVoxelHandBox box = (MyVoxelHandBox)VoxelHandShape;\n                    BoundingBox localBoundingBox = box.GetLocalBoundingBox();\n                    Vector3 boxWorldPosition = box.GetPosition();\n                    voxelMap = MyVoxelMaps.GetIntersectionWithBox(ref localBoundingBox, ref boxWorldPosition, SelectedVoxelMap);\n                }\n                else if (VoxelHandShape is MyVoxelHandCuboid)\n                {\n                    MyVoxelHandCuboid cuboid = (MyVoxelHandCuboid)VoxelHandShape;\n                    BoundingBox localBoundingBox = cuboid.GetLocalBoundingBox();\n                    Vector3 boxWorldPosition = cuboid.GetPosition();\n                    voxelMap = MyVoxelMaps.GetIntersectionWithBox(ref localBoundingBox, ref boxWorldPosition, SelectedVoxelMap);\n                }\n                else if (VoxelHandShape is MyVoxelHandCylinder)\n                {\n                    MyVoxelHandCylinder cylinder = (MyVoxelHandCylinder)VoxelHandShape;\n                    BoundingBox localBoundingBox = cylinder.GetLocalBoundingBox();\n                    Vector3 boxWorldPosition = cylinder.GetPosition();\n                    voxelMap = MyVoxelMaps.GetIntersectionWithBox(ref localBoundingBox, ref boxWorldPosition, SelectedVoxelMap);\n                }\n                else\n                {\n                    System.Diagnostics.Debug.Assert(false);\n                }\n\n                if (voxelMap != null)\n                {\n                    m_applyToVoxelMap = voxelMap;\n                }\n            }\n\n            ////////////////////////////////////////////////////////////////////////////////////////////////////////////\n            // Change size of asteroid tool from camera\n            ////////////////////////////////////////////////////////////////////////////////////////////////////////////\n                     /*\n            if (input.IsAnyShiftKeyPressed())\n            {\n                if (input.PreviousMouseScrollWheelValue() > input.MouseScrollWheelValue())\n                {                    \n                    SetVoxelSize(MyEditorVoxelHand.VoxelHandShape.GetShapeSize() - MyVoxelConstants.VOXEL_HAND_SIZE_STEP);\n                }\n                else if (input.PreviousMouseScrollWheelValue() < input.MouseScrollWheelValue())\n                {                    \n                    SetVoxelSize(MyEditorVoxelHand.VoxelHandShape.GetShapeSize() + MyVoxelConstants.VOXEL_HAND_SIZE_STEP);\n                }\n\n            }          \n\n            ////////////////////////////////////////////////////////////////////////////////////////////////////////////\n            // Change distance of asteroid tool from camera\n            ////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\n            if (input.IsAnyControlPress())\n            {\n                if (input.PreviousMouseScrollWheelValue() > input.MouseScrollWheelValue())\n                {\n                    SetShapeDistance(GetShapeDistance() - MyVoxelConstants.VOXEL_HAND_DISTANCE_STEP);\n\n                }\n                else if (input.PreviousMouseScrollWheelValue() < input.MouseScrollWheelValue())\n                {\n                    SetShapeDistance(GetShapeDistance() + MyVoxelConstants.VOXEL_HAND_DISTANCE_STEP);\n                }\n            } */\n        }        \n\n        public static Matrix UpdateShapePosition()\n        {\n            if (DetachedVoxelHand != null)\n            {\n                VoxelHandShape.MoveAndRotate(DetachedVoxelHand.WorldMatrix.Translation, DetachedVoxelHand.WorldMatrix);\n                return DetachedVoxelHand.WorldMatrix;\n            }\n\n            Matrix world = Matrix.Identity;\n\n            float minDist = 2 * VoxelHandShape.LocalVolume.Radius;\n            float dist = 2 * minDist;\n            Vector3 from = MyCamera.Position - MyCamera.UpVector * minDist * 0.5f;\n\n            if (IsProjected)\n            {\n                if (!MyFakes.MWBUILDER)\n                {\n                    var line = new MyLine(from, from + MyCamera.ForwardVector * 10000, true);\n                    var hit = MyEntities.GetIntersectionWithLine_IgnoreOtherThanSpecifiedClass(ref line, new System.Type[] { typeof(MyVoxelMap) });\n                    if (hit != null)\n                        dist = Vector3.Distance(MyCamera.Position, hit.Value.IntersectionPointInWorldSpace);\n                    else\n                        dist = 5000;\n\n                    m_conePosition = from + MyCamera.ForwardVector * minDist * 0.7f;\n                    Vector3 shapePosition = from + MyCamera.ForwardVector * (dist + VoxelHandShape.LocalVolume.Radius * m_distance * 2);\n                    Vector3 shapeForward = Vector3.Normalize(MyCamera.UpVector * minDist * 0.5f + shapePosition - from);\n                    Vector3 shapeUp = shapeForward - MyCamera.ForwardVector + MyCamera.UpVector;\n                    world = Matrix.CreateWorld(shapePosition, shapeForward, shapeUp);\n                    VoxelHandShape.MoveAndRotate(shapePosition, world);\n                    return world;\n                }\n                else\n                {\n                    var line = new MyLine(from, from + MyCamera.ForwardVector * 10000, true);\n                    var hit = MyEntities.GetIntersectionWithLine_IgnoreOtherThanSpecifiedClass(ref line, new System.Type[] { typeof(MyVoxelMap) });\n                    Vector3 normal = Vector3.Up;\n                    dist = 5000;\n                    Vector3 shapePosition = from + MyCamera.ForwardVector * dist;\n                    if (hit != null)\n                    {\n                        dist = Vector3.Distance(MyCamera.Position, hit.Value.IntersectionPointInWorldSpace);\n                        normal = hit.Value.NormalInWorldSpace;\n                        shapePosition = hit.Value.IntersectionPointInWorldSpace;\n                    }\n                    \n\n                    m_conePosition = from + MyCamera.ForwardVector * minDist * 0.7f;\n                    \n                    Vector3 shapeUp = normal;\n                    Vector3 shapeForward = Vector3.Cross(-MyCamera.LeftVector, shapeUp);\n                    float dot = Vector3.Dot(shapeUp, shapeForward);\n                    if ((dot > 0.9f) || (dot < -0.9f))\n                    {\n                        shapeForward = Vector3.Forward;\n                    }\n\n                    shapePosition.X = MyEditorGrid.GetGridStepInMeters() *\n                                (float)Math.Round(shapePosition.X / MyEditorGrid.GetGridStepInMeters());\n                    shapePosition.Y = MyEditorGrid.GetGridStepInMeters() *\n                                (float)Math.Round(shapePosition.Y / MyEditorGrid.GetGridStepInMeters());\n                    shapePosition.Z = MyEditorGrid.GetGridStepInMeters() *\n                                (float)Math.Round(shapePosition.Z / MyEditorGrid.GetGridStepInMeters());\n\n                     \n                    world = Matrix.CreateWorld(shapePosition, shapeForward, shapeUp);\n                    VoxelHandShape.MoveAndRotate(shapePosition, world);\n                    return world; \n                }\n            }\n            else if (IsProjectedToWaypoints)\n            {\n                //Lets find projection on closest collision with waypoint edge\n                from = MyCamera.Position - MyCamera.UpVector * 10.5f;\n                m_conePosition = from + MyCamera.ForwardVector * 10.7f;\n                Vector3 shapePosition = from + MyCamera.ForwardVector * m_distance;\n\n                List<Tuple<MyWayPoint, MyWayPoint>> edges = MyWayPointGraph.GetAllEdgesInSphere(shapePosition, VoxelHandShape.LocalVolume.Radius * 2);\n\n                Tuple<MyWayPoint, MyWayPoint> closestEdge = null;\n                float minDistance = float.MaxValue;\n                Vector3 closestPoint = shapePosition;\n                float distFromFirstWaypoint = 0;\n\n                foreach (Tuple<MyWayPoint, MyWayPoint> edge in edges)\n                {\n                    Vector3 linePos1 = edge.Item1.Position;\n                    Vector3 linePos2 = edge.Item2.Position;\n\n                    Vector3 point = MyUtils.GetClosestPointOnLine(ref linePos1, ref linePos2, ref shapePosition, out distFromFirstWaypoint);\n\n                    float distance = Vector3.Distance(shapePosition, point);\n                    if (distance < minDistance)\n                    {\n                        minDistance = distance;\n                        closestEdge = edge;\n                        closestPoint = point;\n                    }\n                }\n\n                if (closestEdge != null)\n                {\n                    shapePosition = closestPoint;\n\n                    Vector3 shapeForward = Vector3.Normalize(shapePosition - from);\n                    Vector3 shapeUp = MyCamera.UpVector;\n                    world = Matrix.CreateWorld(shapePosition, shapeForward, shapeUp);\n                    VoxelHandShape.MoveAndRotate(shapePosition, world);\n\n                    MyWayPoint firstWaypoint = null;\n                    MyWayPoint secondWaypoint = null;\n                    float edgeDistance = Vector3.Distance(closestEdge.Item1.Position, closestEdge.Item2.Position);\n\n                    if (closestEdge.Item1.Position.Y < closestEdge.Item2.Position.Y)\n                    {\n                        firstWaypoint = closestEdge.Item1;\n                        secondWaypoint = closestEdge.Item2;\n                    }\n                    else\n                    {\n                        firstWaypoint = closestEdge.Item2;\n                        secondWaypoint = closestEdge.Item1;\n                        distFromFirstWaypoint = edgeDistance - distFromFirstWaypoint;\n                    }\n\n                    float edgeRatio = edgeDistance > 0 ? distFromFirstWaypoint / edgeDistance : 0;\n\n                    Quaternion quaternion1 = Quaternion.CreateFromRotationMatrix(closestEdge.Item1.WorldMatrix);\n                    Quaternion quaternion2 = Quaternion.CreateFromRotationMatrix(closestEdge.Item2.WorldMatrix);\n\n                    Quaternion resultQuaternion = Quaternion.Lerp(quaternion1, quaternion2, edgeRatio);\n\n                    Matrix resultMatrix = Matrix.CreateFromQuaternion(resultQuaternion);\n                    resultMatrix.Translation = shapePosition;\n\n                    VoxelHandShape.MoveAndRotate(shapePosition, resultMatrix);\n\n                    return resultMatrix;\n                }\n            }\n\n            if (MyFakes.MWBUILDER)\n            {\n                from = MyCamera.Position;\n                m_conePosition = from + MyCamera.ForwardVector * 10.7f;\n                        /*\n                //Vector3 planeNormal = new Vector3(MyCamera.ForwardVector.X, 0, MyCamera.ForwardVector.Z);\n                Vector3 planeNormal = new Vector3(0, MyCamera.ForwardVector.Y, MyCamera.ForwardVector.Z);\n                \n                \n                planeNormal.Normalize();\n                Vector3 planePoint = planePoint = from + planeNormal * m_distance;\n                planeNormal = -planeNormal;\n\n                Plane plane = new Plane(planeNormal, -Vector3.Dot(planeNormal, planePoint));\n\n                Ray r = new Ray(from, MyCamera.ForwardVector);\n                float? intr = r.Intersects(plane); */\n               // if (intr.HasValue)\n                {\n                    Vector3 shapePosition = from + MyCamera.ForwardVector * m_distance;\n                    Vector3 shapeForward = Vector3.Forward;\n                    Vector3 shapeUp = Vector3.Up;\n\n                    shapePosition.X = MyEditorGrid.GetGridStepInMeters() *\n                                  (float)Math.Round(shapePosition.X / MyEditorGrid.GetGridStepInMeters());\n                    shapePosition.Y = MyEditorGrid.GetGridStepInMeters() *\n                                (float)Math.Round(shapePosition.Y / MyEditorGrid.GetGridStepInMeters());\n                    shapePosition.Z = MyEditorGrid.GetGridStepInMeters() *\n                                (float)Math.Round(shapePosition.Z / MyEditorGrid.GetGridStepInMeters());\n\n                    world = Matrix.CreateWorld(shapePosition, shapeForward, shapeUp);\n                    VoxelHandShape.MoveAndRotate(shapePosition, world);\n                }\n            }\n            else\n            {\n                from = MyCamera.Position - MyCamera.UpVector * 10.5f;\n                m_conePosition = from + MyCamera.ForwardVector * 10.7f;\n                Vector3 shapePosition = from + MyCamera.ForwardVector * m_distance;\n                Vector3 shapeForward = Vector3.Normalize(/*MyCamera.UpVector * minDist * 0.5f*/ shapePosition - from);\n                Vector3 shapeUp = /*shapeForward - MyCamera.ForwardVector +*/ MyCamera.UpVector;\n                world = Matrix.CreateWorld(shapePosition, shapeForward, shapeUp);\n                VoxelHandShape.MoveAndRotate(shapePosition, world);\n            }\n\n            return world;\n        }\n\n        public static void Update()\n        {                        \n            // update carving tool\n            if (m_Enabled && IsAnyEditorActive())\n            {\n                m_timeFromLastShaping += MyConstants.PHYSICS_STEP_SIZE_IN_MILLISECONDS;\n\n                // If we pressed LMB and collision of voxel hand shape with voxel map occurs, apply voxel hand shape to voxelMap\n                if (m_applyToVoxelMap != null)\n                {\n                    MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"if (m_applyToVoxelMap != null)\");\n                                \n                    // New voxel hand shape object needs to be created, because otherwise all voxel hand shapes will point to same reference\n                    // Perform action\n                    MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"new MyEditorActionVoxelHand\");\n                    MyEditorActionVoxelHand voxelHandAction = new MyEditorActionVoxelHand(m_applyToVoxelMap, VoxelHandShape.CreateCopy());\n                    MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n                    MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"voxelHandAction.RegisterAndDoAction()\");\n                    voxelHandAction.RegisterAndDoAction();\n                    MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n                    // Immediately remove voxel map reference, so that only one hand shape is created at one LMB click\n                    m_applyToVoxelMap = null;\n\n                    MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n                }\n            }\n        }\n                  /*\n        public static void SetVoxelSize(float size)\n        {            \n            if ((size >= MyVoxelConstants.MIN_VOXEL_HAND_SIZE) && (size <= MyVoxelConstants.MAX_VOXEL_HAND_SIZE))\n            {\n                MyEditorVoxelHand.VoxelHandShape.SetShapeSize(size);\n                if(OnVoxelShapeSize != null)\n                {\n                    OnVoxelShapeSize(size);\n                }\n            }\n        }           */\n\n        public static float GetShapeDistance()\n        {\n            return m_distance;\n        }\n\n        public static void SetShapeDistance(float distance)\n        {\n            float oldDistance = m_distance;\n            if (IsProjected)\n            {\n                if (!MyFakes.MWBUILDER)\n                {\n                    if (distance < MyVoxelConstants.MIN_PROJECTED_VOXEL_HAND_OFFSET) distance = MyVoxelConstants.MIN_PROJECTED_VOXEL_HAND_OFFSET;\n                    if (distance > MyVoxelConstants.MAX_PROJECTED_VOXEL_HAND_OFFSET) distance = MyVoxelConstants.MAX_PROJECTED_VOXEL_HAND_OFFSET;\n                }\n\n                if (distance != oldDistance)\n                {\n                    m_distance = distance;\n                    //if (OnVoxelShapeDistance != null) OnVoxelShapeDistance(distance);\n                }                \n            }\n            else if (IsProjectedToWaypoints)\n            {\n            }\n            else\n            {\n                if (distance < MyVoxelConstants.MIN_VOXEL_HAND_DISTANCE) distance = MyVoxelConstants.MIN_VOXEL_HAND_DISTANCE;\n                if (distance > MyVoxelConstants.MAX_VOXEL_HAND_DISTANCE) distance = MyVoxelConstants.MAX_VOXEL_HAND_DISTANCE;\n                if (distance != oldDistance)\n                {\n                    m_distance = distance;\n                    //if (OnVoxelShapeDistance != null) OnVoxelShapeDistance(distance);\n                }\n            }\n        }\n\n\n        public static void SetVoxelProperties(MyVoxelHandShapeType voxelHandShapeType, float distance, MyMwcVoxelHandModeTypeEnum modeType, MyMwcVoxelMaterialsEnum? materialEnum, bool isProjected, bool isProjectedToWaypoints)\n        {\n            IsProjected = isProjected;\n            IsProjectedToWaypoints = isProjectedToWaypoints;\n            // same shape type\n            if (voxelHandShapeType == MyEditorVoxelHand.VoxelHandShape.GetShapeType())\n            {\n                //if ((size >= MyVoxelConstants.MIN_VOXEL_HAND_SIZE) && (size <= MyVoxelConstants.MAX_VOXEL_HAND_SIZE))\n                {\n                    //MyEditorVoxelHand.VoxelHandShape.SetShapeSize(size);\n                    //MyEditorVoxelHand.VoxelHandShape.SetShapeSize2(size2);\n                    //MyEditorVoxelHand.VoxelHandShape.SetShapeSize3(size3);\n                    MyEditorVoxelHand.VoxelHandShape.ModeType = modeType;\n                    MyEditorVoxelHand.VoxelHandShape.Material = materialEnum;\n                }\n            }\n            // another shape type\n            else \n            {\n              //  float newShapeSize = size;\n               // if ((newShapeSize < MyVoxelConstants.MIN_VOXEL_HAND_SIZE) && (newShapeSize > MyVoxelConstants.MAX_VOXEL_HAND_SIZE))\n               \n                float    newShapeSize = MyVoxelConstants.DEFAULT_VOXEL_HAND_SIZE;\n                \n                MyMwcPositionAndOrientation positionAndOritentation = new MyMwcPositionAndOrientation(MySpectator.Position, Vector3.Forward, Vector3.Up);\n                switch (voxelHandShapeType) \n                {\n                    case MyVoxelHandShapeType.Sphere:\n                        MyMwcObjectBuilder_VoxelHand_Sphere sphereObjectBuilder = new MyMwcObjectBuilder_VoxelHand_Sphere(positionAndOritentation, newShapeSize, modeType);\n                        MyEditorVoxelHand.VoxelHandShape = new MyVoxelHandSphere();\n                        ((MyVoxelHandSphere)MyEditorVoxelHand.VoxelHandShape).Init(sphereObjectBuilder, null);\n                        break;\n                    case MyVoxelHandShapeType.Box:\n                        MyMwcObjectBuilder_VoxelHand_Box boxObjectBuilder = new MyMwcObjectBuilder_VoxelHand_Box(positionAndOritentation, newShapeSize, modeType);\n                        MyEditorVoxelHand.VoxelHandShape = new MyVoxelHandBox();\n                        ((MyVoxelHandBox)MyEditorVoxelHand.VoxelHandShape).Init(boxObjectBuilder, null);\n                        break;\n                    case MyVoxelHandShapeType.Cuboid:\n                        MyMwcObjectBuilder_VoxelHand_Cuboid cuboidObjectBuilder = new MyMwcObjectBuilder_VoxelHand_Cuboid(positionAndOritentation, newShapeSize, newShapeSize, newShapeSize, newShapeSize, newShapeSize, modeType);\n                        MyEditorVoxelHand.VoxelHandShape = new MyVoxelHandCuboid();\n                        ((MyVoxelHandCuboid)MyEditorVoxelHand.VoxelHandShape).Init(cuboidObjectBuilder, null);\n                        break;\n                    case MyVoxelHandShapeType.Cylinder:\n                        MyMwcObjectBuilder_VoxelHand_Cylinder cylinderObjectBuilder = new MyMwcObjectBuilder_VoxelHand_Cylinder(positionAndOritentation, newShapeSize, newShapeSize, newShapeSize, modeType);\n                        MyEditorVoxelHand.VoxelHandShape = new MyVoxelHandCylinder();\n                        ((MyVoxelHandCylinder)MyEditorVoxelHand.VoxelHandShape).Init(cylinderObjectBuilder, null);\n                        break;\n\n                    default:\n                        System.Diagnostics.Debug.Assert(false);\n                        break;\n                }\n                MyEditorVoxelHand.VoxelHandShape.Material = materialEnum;\n            }\n\n            if (IsProjected)\n            {\n                if (!MyFakes.MWBUILDER)\n                {\n                    if ((distance >= MyVoxelConstants.MIN_PROJECTED_VOXEL_HAND_OFFSET) && (distance <= MyVoxelConstants.MAX_PROJECTED_VOXEL_HAND_OFFSET))\n                        MyEditorVoxelHand.SetShapeDistance(distance);\n                }\n            }\n            else if (IsProjectedToWaypoints)\n            {\n            }\n            else\n            {\n                if ((distance >= MyVoxelConstants.MIN_VOXEL_HAND_DISTANCE) && (distance <= MyVoxelConstants.MAX_VOXEL_HAND_DISTANCE))\n                    MyEditorVoxelHand.SetShapeDistance(distance);\n            }\n\n            MyEditorVoxelHand.UpdateShapePosition();\n        }\n\n        private static bool IsAnyEditorActive()\n        {\n            return MyGuiScreenGamePlay.Static.IsEditorActive() ||\n                   MyGuiScreenGamePlay.Static.IsEditorMmoActive() ||\n                   MyGuiScreenGamePlay.Static.IsEditorSandboxActive() ||\n                   MyGuiScreenGamePlay.Static.IsEditorStoryActive() ||\n                   MyGuiScreenGamePlay.Static.IsIngameEditorActive();\n        }\n\n        public static void Draw()\n        {                                                       \n            if (m_Enabled && IsAnyEditorActive())\n            {                \n                VoxelHandShape.Draw();\n                if (MyVoxelConstants.VOXEL_HAND_DRAW_CONE && !MyFakes.MWBUILDER)\n                {\n                    VoxelHandShape.DrawCone(m_conePosition);\n                }\n\n                if (MyEditor.DisplayVoxelBounding)\n                {\n                    foreach (MyEntity voxelMapEntity in MyVoxelMaps.GetVoxelMaps())\n                    {\n                        MyVoxelMap voxelMap = voxelMapEntity as MyVoxelMap;\n                        voxelMap.DrawBounding();\n                    }\n                }\n\n                if (MyFakes.MWBUILDER)\n                {\n                    Matrix wm = VoxelHandShape.WorldMatrix;\n                    Vector4 clr = Vector4.One;\n                    MySimpleObjectDraw.DrawTransparentSphere(ref wm, 10, ref clr, false, 8);\n\n                    MyDebugDraw.TextBatch.AddText(wm.Translation, new System.Text.StringBuilder(MyUtils.GetFormatedVector3(wm.Translation, 0)), Color.White, 0.8f);\n                }\n            }\n        }\n\n        public static void SwitchEnabled()\n        {\n            m_Enabled = !m_Enabled;\n            MyAudio.AddCue2D(MySoundCuesEnum.GuiEditorVoxelHandSwitch);\n\n            //if (m_Enabled == true)\n            //{\n            //    SelectedVoxelMap = null;\n            //    foreach (var entity in MyEditorGizmo.SelectedEntities) if (entity is MyVoxelMap)\n            //    {\n            //        SelectedVoxelMap = entity as MyVoxelMap;\n            //    }\n            //}\n        }\n\n        public static bool IsEnabled()\n        {\n            return m_Enabled;\n        }\n\n        public static void SetEnabled(bool enabled)\n        {\n            if (m_Enabled != enabled)\n            {\n                SwitchEnabled();\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Editor/MyMouseInputTool.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Entities.SubObjects;\nusing MinerWars.AppCode.Game.Entities.Weapons;\nusing SysUtils;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWarsMath;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Physics;\n\nnamespace MinerWars.AppCode.Game.Editor\n{\n\n    /// <summary>\n    /// MyMouseInputTool\n    /// </summary>\n    class MyMouseInputTool\n    {\n        private List<MyRBElement> m_physOverlapElemList = new List<MyRBElement>();\n        private Vector2 m_lastPos;\n        private bool m_bHandleInput = true;\n\n        MyEntity m_mouseOverEntity = null;\n\n        bool m_bEnableAABBUnderMouse = false;\n\n        /// <summary>\n        /// EnableInputHandling\n        /// </summary>\n        public void EnableInputHandling(bool bEnable)\n        {\n            m_bHandleInput = bEnable;\n            if (m_bHandleInput == false)\n            {\n                HighlightEntity(m_mouseOverEntity, false);\n            }\n        }\n\n\n        public MyEntity GetMouseOverEntity() { return m_mouseOverEntity; }\n\n        /// <summary>\n        /// EnableAABBUnderMouse\n        /// </summary>\n        /// <param name=\"bEnable\"></param>\n        public void EnableAABBUnderMouse(bool bEnable)\n        {\n            m_bEnableAABBUnderMouse = bEnable;\n        }\n\n        public void HandleInput(MyGuiInput input)\n        {\n            if (!m_bHandleInput)\n                return;\n\n            Vector2 currPos = MyGuiManager.MouseCursorPosition;// new MyPoint(input.GetMouseX(), input.GetMouseY());\n\n            if (currPos == m_lastPos && MyConfig.EditorUseCameraCrosshair == false)\n                return;\n\n            m_lastPos = currPos;\n\n            MyEntity entity = GetIntersectedEntity();\n            if (entity == null && m_mouseOverEntity != null)\n            {\n                //@ TurnOff highlightning\n                HighlightEntity(m_mouseOverEntity, false);\n                return;\n            }\n\n            entity = MySelectionTool.GetSelectableEntity(entity);   //this needs to be tweaked\n\n            //@ entity is selected do not highlight!\n            foreach (MyEntity sel in MyEditorGizmo.SelectedEntities)\n            {\n                if (sel == entity)\n                    return;\n            }\n\n            //@ filter - if editor is in mode EditPrefabContainer (so it's not allowed to select other entity outside container)\n            //@ i do not allow highlight entity outside of prefab container\n            //@ - when editor ingamemode - dont allow to select/mouseover anything except my own container or entities in it\n            MyPrefabContainer container = MyEditor.Static.GetEditedPrefabContainer();\n            if (container != null && entity != null)\n            {\n                if (container.IsEntityFromContainer(entity) == false)\n                {\n                    BoundingSphere sphere = entity.WorldVolume;\n                    if (container.GetIntersectionWithMaximumBoundingBox(ref sphere) == false)\n                        return;\n                }\n            }\n\n            if (entity == null)\n            {\n                //@ TurnOff highlightning\n                HighlightEntity(m_mouseOverEntity, false);\n                return;\n            }\n\n            if (entity != m_mouseOverEntity)\n            {\n                if (m_mouseOverEntity != null)\n                    HighlightEntity(m_mouseOverEntity, false);\n                HighlightEntity(entity, true);\n            }\n        }\n\n        /// <summary>\n        /// GetIntersectedEntity\n        /// </summary>\n        /// <returns></returns>\n        private MyEntity GetIntersectedEntity()\n        {\n            MyLine mouseSelectionLine = MyUtils.ConvertMouseToLine();\n            var result = MyEntities.GetIntersectionWithLine(ref mouseSelectionLine, null, null);\n            MyEntity entity = result.HasValue ? result.Value.Entity : null;\n\n            if (entity is MyLargeShipGunBase) entity = ((MyLargeShipGunBase)entity).PrefabParent;\n\n            if (m_bEnableAABBUnderMouse)\n            {\n                m_physOverlapElemList.Clear();\n                MyEntities.GetIntersectedElements(ref mouseSelectionLine, m_physOverlapElemList);\n            }\n\n            return entity;\n        }\n\n\n        /// <summary>\n        /// HighlightEntity - just clear internal handle on entity - coz of every update particle building\n        /// </summary>\n        private void HighlightEntity(MyEntity entity, bool bEnabled)\n        {\n            if (bEnabled)\n                m_mouseOverEntity = entity;\n            else\n            {\n                if (m_mouseOverEntity != null)\n                    m_mouseOverEntity.ClearHighlightning();\n                m_mouseOverEntity = null;\n            }\n        }\n\n\n        /// <summary>\n        /// RenderHighlitedEntity - has to be called from render?\n        /// </summary>\n        public void DrawMouseOver()\n        {\n            if (m_bEnableAABBUnderMouse && m_physOverlapElemList.Count != 0)\n            {\n                //@ render of Ales rbElements\n                /*foreach (MyRBElement elem in m_physOverlapElemList)\n                {\n                    BoundingBox elemBox = elem.GetWorldSpaceAABB();\n\n                    //@ Draw AABB\n                    Vector4 vctColorAABB = new Vector4(0.1f, 0.8f, 0.8f, 0.5f);\n                    Matrix mtWorldAABB = Matrix.Identity;\n                    MyDebugDraw.DrawWireFramedBox(ref mtWorldAABB, ref elemBox, ref vctColorAABB, 0.01f, 1);\n                }*/\n            }\n            if (MyEditorGizmo.IsAnyAxisSelected()) HighlightEntity(m_mouseOverEntity, false);\n\n            if (m_mouseOverEntity == null)\n                return;\n\n            //@ mozny hack pro optimalizaci viditelnosti don't use IsVisible, nedoresena koncepce viditelnosti render/engine/game\n            /*BoundingSphere bSphere = m_highlitedEntity.WorldVolumeHr;\n            if (!MyCamera.IsInFrustum(ref bSphere))\n                return;*/\n\n            m_mouseOverEntity.DrawMouseOver(ref MyEditorConstants.MOUSE_OVER_HIGHLIGHT_COLOR);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Editor/MySelectionTool.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Entities.WayPoints;\n\nnamespace MinerWars.AppCode.Game.Editor\n{\n    /// <summary>\n    /// MySelectionTool\n    /// </summary>\n    class MySelectionTool\n    {\n        /// <summary>\n        /// GetSelectableEntity - return top most parent which can be selectable (in case of weapons slection return ship!)\n        /// </summary>\n        /// <param name=\"entity\"></param>\n        /// <returns></returns>\n        public static MyEntity GetSelectableEntity(MyEntity entity)\n        {\n            if (entity == null)\n                return null;\n\n            if (entity.Parent == null)\n            {\n                if (entity.IsSelectable())\n                    return entity;\n                else\n                    return null;\n            }\n\n            MyEntity currEntity = entity;\n            MyEntity topMostSelectable = (currEntity.IsSelectable()) ? currEntity : null; //store\n            while (currEntity.Parent != null)\n            {\n                if (currEntity.IsSelectableAsChild() && currEntity.IsSelectable())\n                    return currEntity;\n\n                currEntity = currEntity.Parent;\n                if (currEntity.IsSelectable())\n                    topMostSelectable = currEntity;\n            }\n\n            return topMostSelectable;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Editor/MySnapPointLink.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Prefabs;\nusing MinerWarsMath;\n\nnamespace MinerWars.AppCode.Game.Editor\n{\n    /// <summary>\n    /// Holds linked snap point data\n    /// </summary>\n    class MySnapPointLink\n    {\n        /// <summary>\n        /// Snap Point\n        /// </summary>\n        public MyPrefabSnapPoint SnapPoint { get; set; }\n\n        /// <summary>\n        /// Link Time Transformation (World)\n        /// </summary>\n        public Matrix LinkTransformation { get; set; }\n\n        public MySnapPointLink(MyPrefabSnapPoint snapPoint)\n        {\n            SnapPoint = snapPoint;\n            LinkTransformation = snapPoint.Prefab.WorldMatrix;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Effects/BaseEffects/MyEffectBase.cs",
    "content": "﻿using MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Utils;\nusing System.IO;\n                             /*\nusing MinerWarsMath;\n\nusing MinerWarsMath.Graphics;\n                               */\nusing SharpDX.Direct3D;\nusing SharpDX.Direct3D9;\n\n//  This class is wrapper for XNA effect with added functionality of holding references to commonly used parameters (light positions, fog, camera, matrixes, etc).\n\nnamespace MinerWars.AppCode.Game.Effects\n{\n    using Vector2 = MinerWarsMath.Vector2;\n    using Vector3 = MinerWarsMath.Vector3;\n    using Matrix = MinerWarsMath.Matrix;\n    using System;\n\n    //  Base class for all effects\n    public abstract class MyEffectBase : IDisposable\n    {\n        protected readonly Effect m_D3DEffect;\n\n        EffectHandle m_fogDistanceNear;\n        EffectHandle m_fogDistanceFar;\n        EffectHandle m_fogColor;\n        EffectHandle m_fogMultiplier;\n        EffectHandle m_fogBacklightMultiplier;\n\n        EffectHandle m_lodCut;\n        EffectHandle m_lodBackgroundCut;\n\n        protected MyEffectBase(Effect xnaEffect)\n        {\n            m_D3DEffect = xnaEffect;\n\n            Init();\n        }\n\n        protected MyEffectBase(string asset)\n        {\n            string curdir = System.IO.Directory.GetCurrentDirectory();\n            System.IO.Directory.SetCurrentDirectory(System.IO.Path.GetDirectoryName(MyMinerGame.Static.RootDirectoryEffects + \"\\\\\" + asset));\n\n            string sourceFX = Path.GetFileName(asset + \".fx\");\n            string compiledFX = Path.GetFileName(asset + \".fxo\");\n\n            bool needRecompile = false;\n            if (File.Exists(compiledFX))\n            {\n                if (File.Exists(sourceFX))\n                {\n                    DateTime compiledTime = File.GetLastWriteTime(compiledFX);\n                    DateTime sourceTime = File.GetLastWriteTime(sourceFX);\n                    if (sourceTime > compiledTime)\n                        needRecompile = true;\n                }\n            }\n            else\n            {\n                if (File.Exists(sourceFX))\n                    needRecompile = true;\n                else\n                {\n                    throw new FileNotFoundException(\"Effect not found: \" + asset);\n                }\n            }\n\n            //Nepouzivat ShaderFlags.PartialPrecision, kurvi to na GeForce6600\n            ShaderFlags flags = ShaderFlags.OptimizationLevel3 | ShaderFlags.SkipValidation;\n       \n            if (needRecompile)\n            {\n//#if DEBUG\n//                flags |= ShaderFlags.Debug;\n//#endif\n                //m_D3DEffect = Effect.FromFile(MyMinerGameDX.Static.GraphicsDevice, sourceFX, flags);\n          \n                ShaderBytecode shaderByteCode = ShaderBytecode.CompileFromFile(sourceFX, \"fx_2_0\", flags);\n                shaderByteCode.Save(compiledFX);\n                shaderByteCode.Dispose();\n            }\n\n            FileStream fs = File.Open(compiledFX, FileMode.Open, FileAccess.Read);\n            byte[] m = new byte[fs.Length];\n            fs.Read(m, 0, (int)fs.Length);\n            fs.Close();\n            fs.Dispose();\n\n            m_D3DEffect = Effect.FromMemory(MyMinerGame.Static.GraphicsDevice, m, flags);\n\n            System.IO.Directory.SetCurrentDirectory(curdir);\n\n            Init();\n        }\n\n        private void Init()\n        {\n            EffectHandle nearPlane = m_D3DEffect.GetParameter(null, \"NEAR_PLANE_DISTANCE\");\n            EffectHandle farPlane = m_D3DEffect.GetParameter(null, \"FAR_PLANE_DISTANCE\");\n\n            if (nearPlane != null && farPlane != null)\n            {\n                m_D3DEffect.SetValue(farPlane, MyCamera.FAR_PLANE_DISTANCE);\n                m_D3DEffect.SetValue(nearPlane, MyCamera.NEAR_PLANE_DISTANCE);\n            }\n\n            m_fogDistanceNear = m_D3DEffect.GetParameter(null, \"FogDistanceNear\");\n            m_fogDistanceFar = m_D3DEffect.GetParameter(null, \"FogDistanceFar\");\n            m_fogColor = m_D3DEffect.GetParameter(null, \"FogColor\");\n            m_fogMultiplier = m_D3DEffect.GetParameter(null, \"FogMultiplier\");\n            m_fogBacklightMultiplier = m_D3DEffect.GetParameter(null, \"FogBacklightMultiplier\");\n\n            m_lodCut = m_D3DEffect.GetParameter(null, \"LodCut\");\n            m_lodBackgroundCut = m_D3DEffect.GetParameter(null, \"LodBackgroundCut\");\n\n            //UseChannels = false;\n        }\n\n        public virtual void Dispose()\n        {\n            m_D3DEffect.Dispose();\n        }\n\n        public virtual void SetTextureNormal(Texture texture2D) { } \n        public virtual void SetTextureDiffuse(Texture texture2D) { }\n\n        public virtual bool IsTextureNormalSet() { return true; }\n        public virtual bool IsTextureDiffuseSet() { return true; }\n        public virtual bool IsTextureSpecularSet() { return true; }\n\n        public virtual void SetDiffuseColor(MinerWarsMath.Vector3 diffuseColor) { }\n        public virtual void SetHighlightColor(MinerWarsMath.Vector3 highlight) { }\n\n        public virtual void SetEmissivity(float emissivity) { }\n        public virtual void SetEmissivityOffset(float emissivityOffset) { }\n        public virtual void SetEmissivityUVAnim(Vector2 uvAnim) { }\n        public virtual void SetDiffuseUVAnim(Vector2 uvAnim) { }\n\n\n        public virtual void SetSpecularPower(float specularPower) { }\n        public virtual void SetSpecularIntensity(float specularIntensity) { }\n\n        public virtual void SetProjectionMatrix(ref Matrix projectionMatrix) { }\n        public virtual void SetViewMatrix(ref Matrix matrix) { }\n\n\n        /*\n        public virtual void Apply()\n        {\n            //m_D3DEffect.Technique.Passes[0].Apply();\n        } */\n\n        bool begin = false;\n        public virtual void Begin(int pass = 0, FX fx = FX.None)\n        {\n            System.Diagnostics.Debug.Assert(begin == false);\n            m_D3DEffect.Begin(fx);\n            m_D3DEffect.BeginPass(pass);\n            begin = true;\n        }\n\n        public virtual void End()\n        {\n            System.Diagnostics.Debug.Assert(begin == true);\n            m_D3DEffect.EndPass();\n            m_D3DEffect.End();\n            begin = false;\n        } \n\n\n        public void SetFogDistanceNear(float fogDistanceNear)\n        {\n            m_D3DEffect.SetValue(m_fogDistanceNear, fogDistanceNear);\n        }\n\n        public void SetFogDistanceFar(float fogDistanceFar)\n        {\n            m_D3DEffect.SetValue(m_fogDistanceFar, fogDistanceFar);\n        }\n\n        public void SetFogColor(Vector3 fogColor)\n        {\n            m_D3DEffect.SetValue(m_fogColor, fogColor);\n        }\n\n        public void SetFogMultiplier(float fogMultiplier)\n        {\n            m_D3DEffect.SetValue(m_fogMultiplier, fogMultiplier);\n        }\n\n        public void SetFogBacklightMultiplier(float multiplier)\n        {\n            m_D3DEffect.SetValue(m_fogBacklightMultiplier, multiplier);\n        }\n\n        public void SetLodCut(float lodCut)\n        {\n            m_D3DEffect.SetValue(m_lodCut, lodCut);\n        }\n\n        public void SetLodBackgroundCut(float lodCut)\n        {\n            m_D3DEffect.SetValue(m_lodBackgroundCut, lodCut);\n        }\n\n        public Effect D3DEffect\n        {\n            get { return m_D3DEffect; }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Effects/BaseEffects/MyEffectDynamicLightingBase.cs",
    "content": "﻿using MinerWars.AppCode.Game.Utils;\n\nusing SharpDX.Direct3D9;\n\nnamespace MinerWars.AppCode.Game.Effects\n{\n    using Vector3 = MinerWarsMath.Vector3;\n    using Vector4 = MinerWarsMath.Vector4;\n    using Color = MinerWarsMath.Color;\n\n    public class MyEffectDynamicLightingBase : MyEffectShadowBase\n    {\n        EffectHandle m_dynamicLightsCount;\n        EffectHandle[] DynamicLightsPosition;\n        EffectHandle[] DynamicLightsColor;\n        EffectHandle[] DynamicLightsFalloff;\n        EffectHandle[] DynamicLightsRange;\n\n        EffectHandle m_sunColor;\n        EffectHandle m_sunIntensity;\n        EffectHandle m_directionToSun;\n        EffectHandle m_ambientColor;\n\n\n        public MyEffectDynamicLightingBase(Effect xnaEffect)\n            : base(xnaEffect)\n        {\n            Init();\n        }\n\n        public MyEffectDynamicLightingBase(string asset)\n            : base(asset)\n        {\n            Init();\n        }\n\n        private void Init()\n        {\n              m_dynamicLightsCount = m_D3DEffect.GetParameter(null, \"DynamicLightsCount\");\n\n            m_sunColor = m_D3DEffect.GetParameter(null, \"SunColor\");\n            m_sunIntensity = m_D3DEffect.GetParameter(null, \"SunIntensity\");\n            m_directionToSun = m_D3DEffect.GetParameter(null, \"DirectionToSun\");\n            m_ambientColor = m_D3DEffect.GetParameter(null, \"AmbientColor\");\n\n\n            //  Dynamic lights array\n            EffectHandle dynamicLights = m_D3DEffect.GetParameter(null, \"DynamicLights\");\n            if (dynamicLights != null)\n            {\n                DynamicLightsPosition = new EffectHandle[MyLightsConstants.MAX_LIGHTS_FOR_EFFECT];\n                DynamicLightsColor = new EffectHandle[MyLightsConstants.MAX_LIGHTS_FOR_EFFECT];\n                DynamicLightsFalloff = new EffectHandle[MyLightsConstants.MAX_LIGHTS_FOR_EFFECT];\n                DynamicLightsRange = new EffectHandle[MyLightsConstants.MAX_LIGHTS_FOR_EFFECT];\n                for (int i = 0; i < MyLightsConstants.MAX_LIGHTS_FOR_EFFECT; i++)\n                {\n                    DynamicLightsPosition[i] = m_D3DEffect.GetParameter(m_D3DEffect.GetParameterElement(dynamicLights, i), \"Position\");\n                    DynamicLightsColor[i] = m_D3DEffect.GetParameter(m_D3DEffect.GetParameterElement(dynamicLights, i), \"Color\");\n                    DynamicLightsFalloff[i] = m_D3DEffect.GetParameter(m_D3DEffect.GetParameterElement(dynamicLights, i), \"Falloff\");\n                    DynamicLightsRange[i] = m_D3DEffect.GetParameter(m_D3DEffect.GetParameterElement(dynamicLights, i), \"Range\");\n                }\n            }\n        }\n\n        public void SetDynamicLightsCount(int dynamicLightsCount)\n        {\n            m_D3DEffect.SetValue(m_dynamicLightsCount, dynamicLightsCount);\n        }\n\n        public void SetSunColor(Vector3 sunColor)\n        {\n            m_D3DEffect.SetValue(m_sunColor, sunColor);\n    }\n\n        public void SetSunIntensity(float sunIntensity)\n        {\n            m_D3DEffect.SetValue(m_sunIntensity, sunIntensity);\n}\n\n        public void SetDirectionToSun(Vector3 directionToSun)\n        {\n            m_D3DEffect.SetValue(m_directionToSun, directionToSun);\n        }\n\n        public void SetAmbientColor(Vector3 ambient)\n        {\n            m_D3DEffect.SetValue(m_ambientColor, ambient);\n        }\n\n        public void SetDynamicLightsPosition(int index, Vector3 pos)\n        {\n            m_D3DEffect.SetValue(DynamicLightsPosition[index], pos);\n        }\n\n        public void SetDynamicLightsColor(int index, Vector4 color)\n        {\n            m_D3DEffect.SetValue(DynamicLightsColor[index], color);\n        }\n\n        public void SetDynamicLightsFalloff(int index, float falloff)\n        {\n            m_D3DEffect.SetValue(DynamicLightsFalloff[index], falloff);\n        }\n\n        public void SetDynamicLightsRange(int index, float range)\n        {\n            m_D3DEffect.SetValue(DynamicLightsRange[index], range);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Effects/BaseEffects/MyEffectPerlinNoiseBase.cs",
    "content": "﻿using MinerWars.AppCode.App;\nusing MinerWarsMath.Graphics.PackedVector;\n\nusing SharpDX.Direct3D9;\n\nnamespace MinerWars.AppCode.Game.Effects\n{\n    using Vector2 = MinerWarsMath.Vector2;\n    using Vector3 = MinerWarsMath.Vector3;\n    using Vector4 = MinerWarsMath.Vector4;\n    using Matrix = MinerWarsMath.Matrix;\n    using Color = MinerWarsMath.Color;\n    using SharpDX;\n\n\n    public class MyEffectPerlinNoiseBase : MyEffectBase\n    {\n        EffectHandle m_permTexture;\n        EffectHandle m_permTexture2d;\n        EffectHandle m_gradTexture;\n        EffectHandle m_permGradTexture;\n        EffectHandle m_permGrad4dTexture;\n        EffectHandle m_gradTexture4d;\n\n        static Texture permTexture;\n        static Texture permTexture2d;\n        static Texture gradTexture;\n        static Texture permGradTexture;\n        static Texture permGrad4dTexture;\n        static Texture gradTexture4d;\n\n        // permutation table\n        static int[] perm = new int[] { 151,160,137,91,90,15,\n        131,13,201,95,96,53,194,233,7,225,140,36,103,30,69,142,8,99,37,240,21,10,23,\n        190, 6,148,247,120,234,75,0,26,197,62,94,252,219,203,117,35,11,32,57,177,33,\n        88,237,149,56,87,174,20,125,136,171,168, 68,175,74,165,71,134,139,48,27,166,\n        77,146,158,231,83,111,229,122,60,211,133,230,220,105,92,41,55,46,245,40,244,\n        102,143,54, 65,25,63,161, 1,216,80,73,209,76,132,187,208, 89,18,169,200,196,\n        135,130,116,188,159,86,164,100,109,198,173,186, 3,64,52,217,226,250,124,123,\n        5,202,38,147,118,126,255,82,85,212,207,206,59,227,47,16,58,17,182,189,28,42,\n        223,183,170,213,119,248,152, 2,44,154,163, 70,221,153,101,155,167, 43,172,9,\n        129,22,39,253, 19,98,108,110,79,113,224,232,178,185, 112,104,218,246,97,228,\n        251,34,242,193,238,210,144,12,191,179,162,241, 81,51,145,235,249,14,239,107,\n        49,192,214, 31,181,199,106,157,184, 84,204,176,115,121,50,45,127, 4,150,254,\n        138,236,205,93,222,114,67,29,24,72,243,141,128,195,78,66,215,61,156,180\n        };\n\n        // gradients for 3d noise\n        static float[,] g3 =  \n        {\n            {1,1,0},\n            {-1,1,0},\n            {1,-1,0},\n            {-1,-1,0},\n            {1,0,1},\n            {-1,0,1},\n            {1,0,-1},\n            {-1,0,-1}, \n            {0,1,1},\n            {0,-1,1},\n            {0,1,-1},\n            {0,-1,-1},\n            {1,1,0},\n            {0,-1,1},\n            {-1,1,0},\n            {0,-1,-1}\n        };\n\n        // gradients for 4D noise\n        static float[,] g4 = \n        {\n\t        {0, -1, -1, -1},\n\t        {0, -1, -1, 1},\n\t        {0, -1, 1, -1},\n\t        {0, -1, 1, 1},\n\t        {0, 1, -1, -1},\n\t        {0, 1, -1, 1},\n\t        {0, 1, 1, -1},\n\t        {0, 1, 1, 1},\n\t        {-1, -1, 0, -1},\n\t        {-1, 1, 0, -1},\n\t        {1, -1, 0, -1},\n\t        {1, 1, 0, -1},\n\t        {-1, -1, 0, 1},\n\t        {-1, 1, 0, 1},\n\t        {1, -1, 0, 1},\n\t        {1, 1, 0, 1},\n        \t\n\t        {-1, 0, -1, -1},\n\t        {1, 0, -1, -1},\n\t        {-1, 0, -1, 1},\n\t        {1, 0, -1, 1},\n\t        {-1, 0, 1, -1},\n\t        {1, 0, 1, -1},\n\t        {-1, 0, 1, 1},\n\t        {1, 0, 1, 1},\n\t        {0, -1, -1, 0},\n\t        {0, -1, -1, 0},\n\t        {0, -1, 1, 0},\n\t        {0, -1, 1, 0},\n\t        {0, 1, -1, 0},\n\t        {0, 1, -1, 0},\n\t        {0, 1, 1, 0},\n\t        {0, 1, 1, 0}\n        };\n\n        private void GeneratePermTexture()\n        {\n            if (permTexture != null)\n                permTexture.Dispose();\n\n            permTexture = new Texture(MyMinerGame.Static.GraphicsDevice, 256, 1, 0, Usage.Dynamic, Format.L8, Pool.Default);\n            byte[] data = new byte[256 * 1];\n            for (int x = 0; x < 256; x++)\n            {\n                for (int y = 0; y < 1; y++)\n                {\n                    data[x + (y * 256)] = (byte)(perm[x]);// / 255.0);\n                }\n            }\n            \n            SharpDX.DataStream ds;\n            DataRectangle dr = permTexture.LockRectangle(0, LockFlags.None, out ds);\n            ds.WriteRange(data);\n            permTexture.UnlockRectangle(0);\n\n        }                     \n\n        // 2d permutation texture for optimized version\n        int perm2d(int i)\n        {\n            return perm[i % 256];\n        }\n\n        private void GeneratePermTexture2d()\n        {           \n            if (permTexture2d != null)\n                permTexture2d.Dispose();\n            permTexture2d = new Texture(MyMinerGame.Static.GraphicsDevice, 256, 256, 0, Usage.Dynamic, Format.A8R8G8B8, Pool.Default);\n            Color[] data = new Color[256 * 256];\n            for (int x = 0; x < 256; x++)\n            {\n                for (int y = 0; y < 256; y++)\n                {\n                    int A = perm2d(x) + y;\n                    int AA = perm2d(A);\n                    int AB = perm2d(A + 1);\n                    int B = perm2d(x + 1) + y;\n                    int BA = perm2d(B);\n                    int BB = perm2d(B + 1);\n                    //data[x + (y * 256)] = new Color((byte)(AA / 255.0), (byte)(AB / 255.0),\n                    //                                (byte)(BA / 255.0), (byte)(BB / 255.0));\n                    \n                    //XNA Color = r g b a\n\n                    //need a r g b\n                    data[x + (y * 256)] = new Color((byte)(BA), (byte)(AB), (byte)(AA), (byte)(BB));\n                }\n            }\n\n            SharpDX.DataStream ds;\n            DataRectangle dr = permTexture2d.LockRectangle(0, LockFlags.None, out ds);\n            ds.WriteRange(data);\n            permTexture2d.UnlockRectangle(0);\n\n        }\n\n        private void GenerateGradTexture()\n        {                                                                                       //NormalizedByte4\n            gradTexture = new Texture(MyMinerGame.Static.GraphicsDevice, 16, 1, 0, Usage.Dynamic, Format.Q8W8V8U8, Pool.Default);\n            NormalizedByte4[] data = new NormalizedByte4[16 * 1];\n            for (int x = 0; x < 16; x++)\n            {\n                for (int y = 0; y < 1; y++)\n                {\n                    data[x + (y * 16)] = new NormalizedByte4(g3[x, 0], g3[x, 1], g3[x, 2], 1);\n                }\n            }\n\n            SharpDX.DataStream ds;\n            DataRectangle dr = gradTexture.LockRectangle(0, LockFlags.None, out ds);\n            ds.WriteRange(data);\n            gradTexture.UnlockRectangle(0);\n        }\n\n        // permuted gradient texture for optimized version\n        private void GeneratePermGradTexture()\n        {\n            if (permGradTexture != null)\n                permGradTexture.Dispose();\n            //NormalizedByte4\n            permGradTexture = new Texture(MyMinerGame.Static.GraphicsDevice, 256, 1, 0, Usage.Dynamic, Format.Q8W8V8U8, Pool.Default);\n            \n                 \n            NormalizedByte4[] data = new NormalizedByte4[256 * 1];\n            for (int x = 0; x < 256; x++)\n            {\n                for (int y = 0; y < 1; y++)\n                {\n                    //data[x + (y * 256)] = new NormalizedByte4(g3[perm[x] % 16, 0], g3[perm[x] % 16, 1], g3[perm[x] % 16, 2], 1);\n                    data[x + (y * 256)] = new NormalizedByte4(g3[perm[x] % 16, 0], g3[perm[x] % 16, 1], g3[perm[x] % 16, 2], 1);\n                }\n            }      \n                 \n            /*\n            byte[] data = new byte[256 * 1 * 4];\n            for (int x = 0; x < 256; x++)\n            {\n                for (int y = 0; y < 1; y++)\n                {\n                    data[(x + (y * 256)) * 4 + 0] = (byte)(255.0f * ((g3[perm[x] % 16, 0] + 1) / 2.0f));\n                    data[(x + (y * 256)) * 4 + 1] = (byte)(255.0f * ((g3[perm[x] % 16, 1] + 1) / 2.0f));\n                    data[(x + (y * 256)) * 4 + 2] = (byte)(255.0f * ((g3[perm[x] % 16, 2] + 1) / 2.0f));\n                    data[(x + (y * 256)) * 4 + 3] = 1;\n                }\n            } */   \n           \n            SharpDX.DataStream ds;\n            DataRectangle dr = permGradTexture.LockRectangle(0, LockFlags.None, out ds);\n            ds.WriteRange(data);\n            permGradTexture.UnlockRectangle(0);\n        }\n            \n            \n\n        private void GeneratePermGrad4dTexture()\n        {                                                                                     //NormalizedByte4\n            permGrad4dTexture = new Texture(MyMinerGame.Static.GraphicsDevice, 256, 1, 0, Usage.Dynamic, Format.Q8W8V8U8, Pool.Default);\n            NormalizedByte4[] data = new NormalizedByte4[256 * 1];\n            for (int x = 0; x < 256; x++)\n            {\n                for (int y = 0; y < 1; y++)\n                {\n                    data[x + (y * 256)] = new NormalizedByte4(g4[perm[x] % 32, 0], g4[perm[x] % 32, 1], g4[perm[x] % 32, 2], g4[perm[x] % 32, 3]);\n                }\n            }\n\n            SharpDX.DataStream ds;\n            DataRectangle dr = permGrad4dTexture.LockRectangle(0, LockFlags.None, out ds);\n            ds.WriteRange(data);\n            permGrad4dTexture.UnlockRectangle(0);\n\n            \n        }\n\n        private void GenerateGradTexture4d()\n        {\n            if (gradTexture4d != null)\n                gradTexture4d.Dispose();\n\n            //NormalizedByte4\n            gradTexture4d = new Texture(MyMinerGame.Static.GraphicsDevice, 32, 1, 0, Usage.Dynamic , Format.Q8W8V8U8, Pool.Default);\n            NormalizedByte4[] data = new NormalizedByte4[32 * 1];\n            for (int x = 0; x < 32; x++)\n            {\n                for (int y = 0; y < 1; y++)\n                {\n                    data[x + (y * 32)] = new NormalizedByte4(g4[x, 0], g4[x, 1], g4[x, 2], g4[x, 3]);\n                    //data[31 - x + (y * 32)] = new NormalizedByte4(0, 0, 0, 0);\n                }\n            }\n\n            SharpDX.DataStream ds;\n            DataRectangle dr = gradTexture4d.LockRectangle(0, LockFlags.None, out ds);\n            ds.WriteRange(data);\n            gradTexture4d.UnlockRectangle(0);\n                       \n        }\n\n        public MyEffectPerlinNoiseBase(Effect xnaEffect)\n            : base(xnaEffect)\n        {\n            Init();\n        }\n\n        public MyEffectPerlinNoiseBase(string asset)\n            : base(asset)\n        {\n            Init();\n        }\n\n\n        void DisposeTextures()\n        {\n            if (permTexture != null)\n            {\n                permTexture.Dispose();\n                permTexture2d.Dispose();\n                gradTexture.Dispose();\n                permGradTexture.Dispose();\n                permGrad4dTexture.Dispose();\n                gradTexture4d.Dispose();\n            }\n        }\n\n        private void Init()\n        {\n            m_permTexture = m_D3DEffect.GetParameter(null, \"permTexture\");\n            m_permTexture2d = m_D3DEffect.GetParameter(null, \"permTexture2d\");\n            m_gradTexture = m_D3DEffect.GetParameter(null, \"gradTexture\");\n            m_permGradTexture = m_D3DEffect.GetParameter(null, \"permGradTexture\");\n            m_permGrad4dTexture = m_D3DEffect.GetParameter(null, \"permGrad4dTexture\");\n            m_gradTexture4d = m_D3DEffect.GetParameter(null, \"gradTexture4d\");\n\n            DisposeTextures();\n\n            if (permTexture == null || permTexture.IsDisposed)\n            {\n                GeneratePermTexture();\n                GeneratePermTexture2d();\n                GenerateGradTexture();\n                GeneratePermGradTexture();\n                GeneratePermGrad4dTexture();\n                GenerateGradTexture4d();\n            }\n                     \n            m_D3DEffect.SetTexture(m_permTexture, permTexture);\n            m_D3DEffect.SetTexture(m_permTexture2d, permTexture2d);\n            m_D3DEffect.SetTexture(m_gradTexture,gradTexture);\n            m_D3DEffect.SetTexture(m_permGradTexture,permGradTexture);\n            m_D3DEffect.SetTexture(m_permGrad4dTexture,permGrad4dTexture);\n            m_D3DEffect.SetTexture(m_gradTexture4d, gradTexture4d);\n        }\n\n        public void Update()\n        {/*\n            GeneratePermTexture();\n            GeneratePermTexture2d();\n            GeneratePermGradTexture();\n            GenerateGradTexture4d();\n\n            m_D3DEffect.SetTexture(m_permTexture, permTexture);\n            m_D3DEffect.SetTexture(m_permTexture2d, permTexture2d);\n            m_D3DEffect.SetTexture(m_gradTexture, gradTexture);\n            m_D3DEffect.SetTexture(m_permGradTexture, permGradTexture);\n            m_D3DEffect.SetTexture(m_permGrad4dTexture, permGrad4dTexture);\n            m_D3DEffect.SetTexture(m_gradTexture4d, gradTexture4d);*/\n        }\n\n        public override void Dispose()\n        {\n            DisposeTextures();\n\n            base.Dispose();\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Effects/BaseEffects/MyEffectReflectorBase.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n//using MinerWarsMath.Graphics;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.VideoMode;\nusing MinerWars.CommonLIB.AppCode.Utils;\n//using MinerWarsMath;\n\nusing SharpDX.Direct3D9;\n\nnamespace MinerWars.AppCode.Game.Effects\n{\n    using Vector2 = MinerWarsMath.Vector2;\n    using Vector3 = MinerWarsMath.Vector3;\n    using Vector4 = MinerWarsMath.Vector4;\n    using Matrix = MinerWarsMath.Matrix;\n    using Color = MinerWarsMath.Color;\n\n    public class MyEffectReflectorBase : MyEffectShadowBase\n    {\n        EffectHandle m_cameraPosition;\n        EffectHandle m_reflectorDirection;\n        EffectHandle m_reflectorConeMaxAngleCos;\n        EffectHandle m_reflectorColor;\n        EffectHandle m_reflectorRange;\n\n        public MyEffectReflectorBase(Effect d3dEffect)\n            : base(d3dEffect)\n        {\n            Init();\n        }\n\n        public MyEffectReflectorBase(string asset)\n            : base(asset)\n        {\n            Init();\n        }\n\n        private void Init()\n        {\n            m_cameraPosition = m_D3DEffect.GetParameter(null, \"CameraPosition\");\n            m_reflectorDirection = m_D3DEffect.GetParameter(null, \"ReflectorDirection\");\n            m_reflectorConeMaxAngleCos = m_D3DEffect.GetParameter(null, \"ReflectorConeMaxAngleCos\");\n            m_reflectorColor = m_D3DEffect.GetParameter(null, \"ReflectorColor\");\n            m_reflectorRange = m_D3DEffect.GetParameter(null, \"ReflectorRange\");\n\n        }\n\n\n        public void SetCameraPosition(Vector3 cameraPosition)\n        {\n            m_D3DEffect.SetValue(m_cameraPosition, cameraPosition);\n        }\n\n        public void SetReflectorDirection(Vector3 reflectorDirection)\n        {\n            m_D3DEffect.SetValue(m_reflectorDirection, reflectorDirection);\n        }\n\n        public void SetReflectorConeMaxAngleCos(float reflectorConeMax)\n        {\n            m_D3DEffect.SetValue(m_reflectorConeMaxAngleCos, reflectorConeMax);\n        }\n\n        public void SetReflectorColor(Vector4 reflectorColor)\n        {\n            m_D3DEffect.SetValue(m_reflectorColor, reflectorColor);\n        }\n\n        public void SetReflectorRange(float reflectorRange)\n        {\n            m_D3DEffect.SetValue(m_reflectorRange, reflectorRange);\n        }\n\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Effects/BaseEffects/MyEffectShadowBase.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nusing SharpDX.Direct3D9;\n\nnamespace MinerWars.AppCode.Game.Effects\n{\n    using Vector2 = MinerWarsMath.Vector2;\n    using Vector3 = MinerWarsMath.Vector3;\n    using Vector4 = MinerWarsMath.Vector4;\n    using Matrix = MinerWarsMath.Matrix;\n    using Color = MinerWarsMath.Color;\n\n    public class MyEffectShadowBase : MyEffectBase\n    {\n        EffectHandle m_invViewMatrix;\n        EffectHandle m_lightViewProjMatrices;\n        EffectHandle m_clipPlanes;\n        EffectHandle m_shadowMap;\n        EffectHandle m_shadowMapSize;\n        EffectHandle m_showSplitColors;\n        EffectHandle m_shadowBias;\n        EffectHandle m_slopeBias;\n        EffectHandle m_slopeCascadeMultiplier;\n\n\n        public MyEffectShadowBase(Effect xnaEffect)\n            : base(xnaEffect)\n        {\n            Init();\n        }\n\n        public MyEffectShadowBase(string asset)\n            : base(asset)\n        {\n            Init();\n        }\n\n        private void Init()\n        {\n            m_invViewMatrix = m_D3DEffect.GetParameter(null, \"InvViewMatrix\");\n            m_lightViewProjMatrices = m_D3DEffect.GetParameter(null, \"LightViewProjMatrices\");\n            m_clipPlanes = m_D3DEffect.GetParameter(null, \"ClipPlanes\");\n            m_shadowMap = m_D3DEffect.GetParameter(null, \"ShadowMap\");\n            m_shadowMapSize = m_D3DEffect.GetParameter(null, \"ShadowMapSize\");\n            m_showSplitColors = m_D3DEffect.GetParameter(null, \"ShowSplitColors\");\n            m_shadowBias = m_D3DEffect.GetParameter(null, \"ShadowBias\");\n            m_slopeBias = m_D3DEffect.GetParameter(null, \"SlopeBias\");\n            m_slopeCascadeMultiplier = m_D3DEffect.GetParameter(null, \"SlopeCascadeMultiplier\");\n        }\n\n        public void SetInvViewMatrix(Matrix matrix)\n        {\n            m_D3DEffect.SetValue(m_invViewMatrix, matrix);\n        }\n\n        public void SetLightViewProjMatrices(Matrix[] matrices)\n        {\n            m_D3DEffect.SetValue(m_lightViewProjMatrices, matrices);\n        }\n\n        public void SetClipPlanes(Vector2[] planes)\n        {\n            m_D3DEffect.SetValue(m_clipPlanes, planes);\n        }\n\n        public void SetShadowMap(Texture shadowMap)\n        {\n            m_D3DEffect.SetTexture(m_shadowMap, shadowMap);\n        }\n\n        public void SetShadowMapSize(Vector4 size)\n        {\n            m_D3DEffect.SetValue(m_shadowMapSize, size);\n        }\n\n        public void ShowSplitColors(bool show)\n        {\n            m_D3DEffect.SetValue(m_showSplitColors, show);\n        }\n\n        public void SetShadowBias(float bias)\n        {\n            m_D3DEffect.SetValue(m_shadowBias, bias);\n        }\n\n        public void SetSlopeBias(float bias)\n        {\n            m_D3DEffect.SetValue(m_slopeBias, bias);\n        }\n\n        public void SetSlopeCascadeMultiplier(float multiplier)\n        {\n            m_D3DEffect.SetValue(m_slopeCascadeMultiplier, multiplier);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Effects/BaseEffects/MyEffectSpotShadowBase.cs",
    "content": "﻿using SharpDX.Direct3D9;\n\nnamespace MinerWars.AppCode.Game.Effects\n{\n    using Vector2 = MinerWarsMath.Vector2;\n    using Vector3 = MinerWarsMath.Vector3;\n    using Vector4 = MinerWarsMath.Vector4;\n    using Matrix = MinerWarsMath.Matrix;\n\n    public class MyEffectSpotShadowBase : MyEffectBase\n    {\n        readonly EffectHandle m_shadowBias;\n        readonly EffectHandle m_slopeBias;\n        readonly EffectHandle m_shadowMap;\n        readonly EffectHandle m_shadowMapSize;\n\n        readonly EffectHandle m_invViewMatrix;\n        readonly EffectHandle m_lightViewProjectionShadow;\n\n        public MyEffectSpotShadowBase(string asset)\n            : base(asset)\n        {\n            m_shadowBias = m_D3DEffect.GetParameter(null, \"ShadowBias\");\n            m_slopeBias = m_D3DEffect.GetParameter(null, \"SlopeBias\");\n            m_shadowMap = m_D3DEffect.GetParameter(null, \"ShadowMap\");\n            m_shadowMapSize = m_D3DEffect.GetParameter(null, \"ShadowMapSize\");\n\n            m_invViewMatrix = m_D3DEffect.GetParameter(null, \"InvViewMatrix\");\n            m_lightViewProjectionShadow = m_D3DEffect.GetParameter(null, \"LightViewProjectionShadow\");\n        }\n\n        // Sets light view projection matrix for shadow mapping (different from texture mapping, shadow mapping camera is expanded to prevent shadow border flickering)\n        public void SetLightViewProjectionShadow(Matrix lightViewProjection)\n        {\n            m_D3DEffect.SetValue(m_lightViewProjectionShadow, lightViewProjection);\n        }\n\n        public void SetInvViewMatrix(Matrix viewMatrix)\n        {\n            m_D3DEffect.SetValue(m_invViewMatrix, viewMatrix);\n        }\n\n        public void SetShadowBias(float bias)\n        {\n            m_D3DEffect.SetValue(m_shadowBias, bias);\n        }\n\n        public void SetSlopeBias(float bias)\n        {\n            m_D3DEffect.SetValue(m_slopeBias, bias);\n        }\n\n        public void SetShadowMap(Texture shadowMap)\n        {\n            m_D3DEffect.SetTexture(m_shadowMap, shadowMap);\n        }\n\n        public void SetShadowMapSize(Vector2 size)\n        {\n            m_D3DEffect.SetValue(m_shadowMapSize, size);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Effects/BaseEffects/MyEffectVoxelsBase.cs",
    "content": "﻿using MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.VideoMode;\nusing MinerWars.AppCode.Game.Voxels;\nusing MinerWars.AppCode.Game.Render;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils.Utils;\nusing SharpDX.Direct3D9;\n\nnamespace MinerWars.AppCode.Game.Effects\n{\n    using Vector2 = MinerWarsMath.Vector2;\n    using Vector3 = MinerWarsMath.Vector3;\n    using Vector4 = MinerWarsMath.Vector4;\n    using Matrix = MinerWarsMath.Matrix;\n\n    abstract class MyEffectVoxelsBase : MyEffectBase\n    {\n        public enum MyEffectVoxelsTechniqueEnum\n        {\n            Low,\n            Normal,\n            High,\n            Extreme,\n        }\n\n\n        readonly EffectHandle m_projectionMatrix;\n\n        readonly EffectHandle m_textureDiffuseForAxisXZ;\n        readonly EffectHandle m_textureDiffuseForAxisY;\n        readonly EffectHandle m_textureNormalMapForAxisXZ;\n        readonly EffectHandle m_textureNormalMapForAxisY;\n\n        readonly EffectHandle m_textureDiffuseForAxisXZ2;\n        readonly EffectHandle m_textureDiffuseForAxisY2;\n        readonly EffectHandle m_textureNormalMapForAxisXZ2;\n        readonly EffectHandle m_textureNormalMapForAxisY2;\n\n        readonly EffectHandle m_textureDiffuseForAxisXZ3;\n        readonly EffectHandle m_textureDiffuseForAxisY3;\n        readonly EffectHandle m_textureNormalMapForAxisXZ3;\n        readonly EffectHandle m_textureNormalMapForAxisY3;\n\n        readonly EffectHandle m_specularIntensity;\n        readonly EffectHandle m_specularPower;\n\n        readonly EffectHandle m_specularIntensity2;\n        readonly EffectHandle m_specularPower2;\n\n        readonly EffectHandle m_specularIntensity3;\n        readonly EffectHandle m_specularPower3;\n\n        readonly EffectHandle m_lowTechnique;\n        readonly EffectHandle m_normalTechnique;\n        readonly EffectHandle m_highTechnique;\n        readonly EffectHandle m_extremeTechnique;\n\n        readonly EffectHandle m_normalMultimaterialTechnique;\n        readonly EffectHandle m_highMultimaterialTechnique;\n        readonly EffectHandle m_extremeMultimaterialTechnique;\n\n        readonly EffectHandle m_lowInstancedTechnique;\n        readonly EffectHandle m_normalInstancedTechnique;\n        readonly EffectHandle m_highInstancedTechnique;\n        readonly EffectHandle m_extremeInstancedTechnique;\n\n        readonly EffectHandle m_forwardTechnique;\n\n        /// <summary>\n        /// Set to true when multiple materials has been set\n        /// </summary>\n        protected bool m_multimaterial;\n\n        public MyEffectDynamicLightingBase DynamicLights { get; private set; }\n        public MyEffectReflectorBase Reflector { get; private set; }\n\n        public MyEffectVoxelsBase(string asset)\n            : base(asset)\n        {\n            m_projectionMatrix = m_D3DEffect.GetParameter(null, \"ProjectionMatrix\");\n\n            m_textureDiffuseForAxisXZ = m_D3DEffect.GetParameter(null, \"TextureDiffuseForAxisXZ\");\n            m_textureDiffuseForAxisY = m_D3DEffect.GetParameter(null, \"TextureDiffuseForAxisY\");\n            m_textureNormalMapForAxisXZ = m_D3DEffect.GetParameter(null, \"TextureNormalMapForAxisXZ\");\n            m_textureNormalMapForAxisY = m_D3DEffect.GetParameter(null, \"TextureNormalMapForAxisY\");\n\n            m_textureDiffuseForAxisXZ2 = m_D3DEffect.GetParameter(null, \"TextureDiffuseForAxisXZ2\");\n            m_textureDiffuseForAxisY2 = m_D3DEffect.GetParameter(null, \"TextureDiffuseForAxisY2\");\n            m_textureNormalMapForAxisXZ2 = m_D3DEffect.GetParameter(null, \"TextureNormalMapForAxisXZ2\");\n            m_textureNormalMapForAxisY2 = m_D3DEffect.GetParameter(null, \"TextureNormalMapForAxisY2\");\n\n            m_textureDiffuseForAxisXZ3 = m_D3DEffect.GetParameter(null, \"TextureDiffuseForAxisXZ3\");\n            m_textureDiffuseForAxisY3 = m_D3DEffect.GetParameter(null, \"TextureDiffuseForAxisY3\");\n            m_textureNormalMapForAxisXZ3 = m_D3DEffect.GetParameter(null, \"TextureNormalMapForAxisXZ3\");\n            m_textureNormalMapForAxisY3 = m_D3DEffect.GetParameter(null, \"TextureNormalMapForAxisY3\");\n\n            m_specularIntensity = m_D3DEffect.GetParameter(null, \"SpecularIntensity\");\n            m_specularPower = m_D3DEffect.GetParameter(null, \"SpecularPower\");\n\n            m_specularIntensity2 = m_D3DEffect.GetParameter(null, \"SpecularIntensity2\");\n            m_specularPower2 = m_D3DEffect.GetParameter(null, \"SpecularPower2\");\n\n            m_specularIntensity3 = m_D3DEffect.GetParameter(null, \"SpecularIntensity3\");\n            m_specularPower3 = m_D3DEffect.GetParameter(null, \"SpecularPower3\");\n\n            m_lowTechnique = m_D3DEffect.GetTechnique(\"Technique_RenderQualityLow\");\n            m_normalTechnique = m_D3DEffect.GetTechnique(\"Technique_RenderQualityNormal\");\n            m_highTechnique = m_D3DEffect.GetTechnique(\"Technique_RenderQualityHigh\");\n            m_extremeTechnique = m_D3DEffect.GetTechnique(\"Technique_RenderQualityExtreme\");\n\n            m_normalMultimaterialTechnique = m_D3DEffect.GetTechnique(\"Technique_RenderQualityNormal_Multimaterial\");\n            m_highMultimaterialTechnique = m_D3DEffect.GetTechnique(\"Technique_RenderQualityHigh_Multimaterial\");\n            m_extremeMultimaterialTechnique = m_D3DEffect.GetTechnique(\"Technique_RenderQualityExtreme_Multimaterial\");\n\n            m_lowInstancedTechnique = m_D3DEffect.GetTechnique(\"Technique_RenderQualityLow_Instanced\");\n            m_normalInstancedTechnique = m_D3DEffect.GetTechnique(\"Technique_RenderQualityNormal_Instanced\");\n            m_highInstancedTechnique = m_D3DEffect.GetTechnique(\"Technique_RenderQualityHigh_Instanced\");\n            m_extremeInstancedTechnique = m_D3DEffect.GetTechnique(\"Technique_RenderQualityExtreme_Instanced\");\n\n            m_forwardTechnique = m_D3DEffect.GetTechnique(\"Technique_RenderQualityLow_Forward\");\n\n            DynamicLights = new MyEffectDynamicLightingBase(m_D3DEffect);\n            Reflector = new MyEffectReflectorBase(m_D3DEffect);\n\n        }\n\n        public override void SetSpecularIntensity(float specularIntensity)\n        {\n            // DO NOTHING, these values are set by UpdateVoxelTextures()\n        }\n\n        public override void SetSpecularPower(float specularPower)\n        {\n            // DO NOTHING, these values are set by UpdateVoxelTextures()\n        }\n\n        public void UpdateVoxelTextures(MyMwcVoxelMaterialsEnum material)\n        {\n            m_multimaterial = false;\n\n            //  Get with lazy-load\n            MyVoxelMaterial voxelMaterial = MyVoxelMaterials.Get(material);\n            MyVoxelMaterialTextures voxelTexture = voxelMaterial.GetTextures();\n\n            if (MyRender.DebugDiffuseTexture)\n            {\n                m_D3DEffect.SetTexture(m_textureDiffuseForAxisXZ, (Texture)MyRender.GetDebugTexture());\n                m_D3DEffect.SetTexture(m_textureDiffuseForAxisY, (Texture)MyRender.GetDebugTexture());\n            }\n            else\n            {\n                m_D3DEffect.SetTexture(m_textureDiffuseForAxisXZ, (Texture)voxelTexture.TextureDiffuseForAxisXZ);\n                m_D3DEffect.SetTexture(m_textureDiffuseForAxisY, (Texture)voxelTexture.TextureDiffuseForAxisY);\n            }\n\n            if (MyRender.DebugNormalTexture)\n            {\n                m_D3DEffect.SetTexture(m_textureNormalMapForAxisXZ, (Texture)MyRender.GetDebugNormalTexture());\n                m_D3DEffect.SetTexture(m_textureNormalMapForAxisY, (Texture)MyRender.GetDebugNormalTexture());\n            }\n            else\n            {\n                m_D3DEffect.SetTexture(m_textureNormalMapForAxisXZ, (Texture)voxelTexture.TextureNormalMapForAxisXZ);\n                m_D3DEffect.SetTexture(m_textureNormalMapForAxisY, (Texture)voxelTexture.TextureNormalMapForAxisY);\n            }\n\n            m_D3DEffect.SetValue(m_specularIntensity, voxelMaterial.SpecularIntensity);\n            m_D3DEffect.SetValue(m_specularPower, voxelMaterial.SpecularPower);\n        }\n\n        public void UpdateVoxelMultiTextures(MyMwcVoxelMaterialsEnum mat0, MyMwcVoxelMaterialsEnum? mat1, MyMwcVoxelMaterialsEnum? mat2)\n        {\n            m_multimaterial = false;\n            //  Get with lazy-load\n            // Material 0\n            MyVoxelMaterial voxelMaterial = MyVoxelMaterials.Get(mat0);\n            MyVoxelMaterialTextures voxelTexture = voxelMaterial.GetTextures();\n\n            m_D3DEffect.SetTexture(m_textureDiffuseForAxisXZ, (Texture)voxelTexture.TextureDiffuseForAxisXZ);\n            m_D3DEffect.SetTexture(m_textureNormalMapForAxisXZ, (Texture)voxelTexture.TextureNormalMapForAxisXZ);\n            m_D3DEffect.SetTexture(m_textureDiffuseForAxisY, (Texture)voxelTexture.TextureDiffuseForAxisY);\n            m_D3DEffect.SetTexture(m_textureNormalMapForAxisY, (Texture)voxelTexture.TextureNormalMapForAxisY);\n\n            m_D3DEffect.SetValue(m_specularIntensity, voxelMaterial.SpecularIntensity);\n            m_D3DEffect.SetValue(m_specularPower, voxelMaterial.SpecularPower);\n\n            // Material 1\n            if (mat1.HasValue)\n            {\n                m_multimaterial = true;\n                MyVoxelMaterial voxelMaterial2 = MyVoxelMaterials.Get(mat1.Value);\n                MyVoxelMaterialTextures voxelTexture2 = voxelMaterial2.GetTextures();\n\n                m_D3DEffect.SetTexture(m_textureDiffuseForAxisXZ2, (Texture)voxelTexture2.TextureDiffuseForAxisXZ);\n                m_D3DEffect.SetTexture(m_textureNormalMapForAxisXZ2, (Texture)voxelTexture2.TextureNormalMapForAxisXZ);\n                m_D3DEffect.SetTexture(m_textureDiffuseForAxisY2, (Texture)voxelTexture2.TextureDiffuseForAxisY);\n                m_D3DEffect.SetTexture(m_textureNormalMapForAxisY2, (Texture)voxelTexture2.TextureNormalMapForAxisY);\n\n                m_D3DEffect.SetValue(m_specularIntensity2, voxelMaterial2.SpecularIntensity);\n                m_D3DEffect.SetValue(m_specularPower2, voxelMaterial2.SpecularPower);\n            }\n\n            // Material 2\n            if (mat2.HasValue)\n            {\n                m_multimaterial = true;\n\n                MyVoxelMaterial voxelMaterial3 = MyVoxelMaterials.Get(mat2.Value);\n                MyVoxelMaterialTextures voxelTexture3 = voxelMaterial3.GetTextures();\n\n                m_D3DEffect.SetTexture(m_textureDiffuseForAxisXZ3, (Texture)voxelTexture3.TextureDiffuseForAxisXZ);\n                m_D3DEffect.SetTexture(m_textureNormalMapForAxisXZ3, (Texture)voxelTexture3.TextureNormalMapForAxisXZ);\n                m_D3DEffect.SetTexture(m_textureDiffuseForAxisY3, (Texture)voxelTexture3.TextureDiffuseForAxisY);\n                m_D3DEffect.SetTexture(m_textureNormalMapForAxisY3, (Texture)voxelTexture3.TextureNormalMapForAxisY);\n\n                m_D3DEffect.SetValue(m_specularIntensity3, voxelMaterial3.SpecularIntensity);\n                m_D3DEffect.SetValue(m_specularPower3, voxelMaterial3.SpecularPower);\n            }\n        }\n\n        public override void SetProjectionMatrix(ref Matrix projectionMatrix)\n        {\n            m_D3DEffect.SetValue(m_projectionMatrix, projectionMatrix);\n        }\n\n        public void SetTechnique(MyEffectVoxelsTechniqueEnum technique)\n        {\n            if (MyRenderConstants.RenderQualityProfile.ForwardRender)\n            {\n                m_D3DEffect.Technique = m_forwardTechnique;\n                return;\n            }\n\n            switch (technique)\n            {\n                case MyEffectVoxelsTechniqueEnum.Low:\n                    m_D3DEffect.Technique = m_lowTechnique;\n                    break;\n                case MyEffectVoxelsTechniqueEnum.Normal:\n                    m_D3DEffect.Technique = m_normalTechnique;\n                    break;\n                case MyEffectVoxelsTechniqueEnum.High:\n                    m_D3DEffect.Technique = m_highTechnique;\n                    break;\n                case MyEffectVoxelsTechniqueEnum.Extreme:\n                    m_D3DEffect.Technique = m_extremeTechnique;\n                    break;\n\n\n                default:\n                    throw new MyMwcExceptionApplicationShouldNotGetHere();\n\n            }\n        }\n\n        // Valid only for static asteroids\n        public void ApplyInstanced()\n        {\n            switch (MyRenderConstants.RenderQualityProfile.VoxelsRenderTechnique)\n            {\n                case MyEffectVoxelsTechniqueEnum.Low:\n                    m_D3DEffect.Technique = m_lowInstancedTechnique;\n                    break;\n                case MyEffectVoxelsTechniqueEnum.Normal:\n                    m_D3DEffect.Technique = m_normalInstancedTechnique;\n                    break;\n                case MyEffectVoxelsTechniqueEnum.High:\n                    m_D3DEffect.Technique = m_highInstancedTechnique;\n                    break;\n                case MyEffectVoxelsTechniqueEnum.Extreme:\n                    m_D3DEffect.Technique = m_extremeInstancedTechnique;\n                    break;\n            }\n\n        }\n\n        public void ApplyMultimaterial()\n        {\n            if (MyRenderConstants.RenderQualityProfile.ForwardRender)\n            {\n                m_D3DEffect.Technique = m_forwardTechnique;\n                return;\n            }\n\n            switch (MyRenderConstants.RenderQualityProfile.VoxelsRenderTechnique)\n            {\n                case MyEffectVoxelsTechniqueEnum.Low:\n                    m_D3DEffect.Technique = m_forwardTechnique;\n                    break;\n                case MyEffectVoxelsTechniqueEnum.Normal:\n                    m_D3DEffect.Technique = m_normalMultimaterialTechnique;\n                    break;\n                case MyEffectVoxelsTechniqueEnum.High:\n                    m_D3DEffect.Technique = m_highMultimaterialTechnique;\n                    break;\n                case MyEffectVoxelsTechniqueEnum.Extreme:\n                    m_D3DEffect.Technique = m_extremeMultimaterialTechnique;\n                    break;\n            }\n        }\n\n        public void Apply()\n        {\n            SetTechnique(MyRenderConstants.RenderQualityProfile.VoxelsRenderTechnique);\n        }\n        \n        public void ApplyWithoutTechniqueChange()\n        {\n        }\n\n        public override void Begin(int pass, FX fx)\n        {\n            base.Begin(pass, FX.DoNotSaveState | FX.DoNotSaveShaderState | FX.DoNotSaveSamplerState);\n        }\n\n        public override void Dispose()\n        {\n            DynamicLights.Dispose();\n            Reflector.Dispose();\n            base.Dispose();\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Effects/Lights/MyEffectBlendLights.cs",
    "content": "﻿using MinerWars.AppCode.Game.Utils;\n\nusing SharpDX.Direct3D9;\n\nnamespace MinerWars.AppCode.Game.Effects\n{\n    using Vector2 = MinerWarsMath.Vector2;\n    using Vector3 = MinerWarsMath.Vector3;\n    using Vector4 = MinerWarsMath.Vector4;\n    using Matrix = MinerWarsMath.Matrix;\n\n    class MyEffectBlendLights : MyEffectBase\n    {\n        public enum Technique\n        {\n            LightsEnabled,\n            LightsDisabled,\n            OnlyLights,\n            OnlySpecularIntensity,\n            OnlySpecularPower,\n            OnlyEmissivity,\n            OnlyReflectivity,\n\n            CopyEmissivity,\n        }\n\n        public Technique DefaultTechnique { get; set; }\n        public Technique CopyEmissivityTechnique { get; set; }\n\n        readonly EffectHandle m_Diffuse;\n        readonly EffectHandle m_Normal;\n        readonly EffectHandle m_Lights;\n        readonly EffectHandle m_LightsMod;\n        readonly EffectHandle m_LightsDiv;\n        readonly EffectHandle m_Depth;\n        readonly EffectHandle m_backgroundTexture;\n        readonly EffectHandle m_halfPixel;\n        readonly EffectHandle m_scale;\n        readonly EffectHandle m_AmbientColor;\n\n        readonly EffectHandle m_basicTechnique;\n        readonly EffectHandle m_disableLightsTechnique;\n        readonly EffectHandle m_onlyLightsTechnique;\n        readonly EffectHandle m_onlySpecularIntensityTechnique;\n        readonly EffectHandle m_onlySpecularPowerTechnique;\n        readonly EffectHandle m_onlyEmissivityTechnique;\n        readonly EffectHandle m_onlyReflectivityTechnique;\n        readonly EffectHandle m_copyEmissivity;\n\n        public MyEffectBlendLights()\n            : base(\"Effects2\\\\Lights\\\\MyEffectBlendLights\")\n        {\n            m_Diffuse = m_D3DEffect.GetParameter(null, \"DiffuseTexture\");\n            m_Lights = m_D3DEffect.GetParameter(null, \"LightTexture\");\n            m_LightsMod = m_D3DEffect.GetParameter(null, \"LightTextureMod\");\n            m_LightsDiv = m_D3DEffect.GetParameter(null, \"LightTextureDiv\");\n            m_Depth = m_D3DEffect.GetParameter(null, \"DepthTexture\");\n            m_Normal = m_D3DEffect.GetParameter(null, \"NormalsTexture\");\n            m_backgroundTexture = m_D3DEffect.GetParameter(null, \"BackgroundTexture\");\n            m_halfPixel = m_D3DEffect.GetParameter(null, \"HalfPixel\");\n            m_scale = m_D3DEffect.GetParameter(null, \"Scale\");\n            m_AmbientColor = m_D3DEffect.GetParameter(null, \"AmbientColor\");\n\n            m_basicTechnique = m_D3DEffect.GetTechnique(\"BasicTechnique\");\n            m_disableLightsTechnique = m_D3DEffect.GetTechnique(\"DisableLightsTechnique\");\n            m_onlyLightsTechnique = m_D3DEffect.GetTechnique(\"OnlyLightsTechnique\");\n            m_onlySpecularIntensityTechnique = m_D3DEffect.GetTechnique(\"OnlySpecularIntensity\");\n            m_onlySpecularPowerTechnique = m_D3DEffect.GetTechnique(\"OnlySpecularPower\");\n            m_onlyEmissivityTechnique = m_D3DEffect.GetTechnique(\"OnlyEmissivity\");\n            m_onlyReflectivityTechnique = m_D3DEffect.GetTechnique(\"OnlyReflectivity\");\n            m_copyEmissivity = m_D3DEffect.GetTechnique(\"CopyEmissivity\");\n\n            DefaultTechnique = Technique.LightsEnabled;\n            CopyEmissivityTechnique = Technique.CopyEmissivity;\n            SetTechnique(DefaultTechnique);\n        }\n\n        public void SetDiffuseTexture(Texture renderTarget2D)\n        {\n            m_D3DEffect.SetTexture(m_Diffuse, renderTarget2D);\n        }\n\n        public void SetNormalTexture(Texture renderTarget2D)\n        {\n            m_D3DEffect.SetTexture(m_Normal, renderTarget2D);\n        }\n\n        public void SetLightsTexture(Texture renderTarget2D)\n        {\n            m_D3DEffect.SetTexture(m_Lights, renderTarget2D);\n        }\n\n        public void SetLightsModTexture(Texture renderTarget2D)\n        {\n            m_D3DEffect.SetTexture(m_LightsMod, renderTarget2D);\n        }\n\n        public void SetLightsDivTexture(Texture renderTarget2D)\n        {\n            m_D3DEffect.SetTexture(m_LightsDiv, renderTarget2D);\n        }\n\n        public void SetDepthTexture(Texture renderTarget2D)\n        {\n            m_D3DEffect.SetTexture(m_Depth, renderTarget2D);\n        }\n\n        public void SetBackgroundTexture(Texture renderTarget2D)\n        {\n            m_D3DEffect.SetTexture(m_backgroundTexture, renderTarget2D);\n        }\n\n        public void SetHalfPixel(int screenSizeX, int screenSizeY)\n        {\n            m_D3DEffect.SetValue(m_halfPixel, MyUtils.GetHalfPixel(screenSizeX, screenSizeY));\n        }\n\n        public void SetScale(Vector2 scale)\n        {\n            m_D3DEffect.SetValue(m_scale, scale);\n        }\n\n        public Vector3 AmbientColor\n        {\n            //get { return m_AmbientColor.GetValueVector3(); }\n            set { m_D3DEffect.SetValue(m_AmbientColor, value); }\n        }\n\n        public void SetTechnique(Technique technique)\n        {\n            switch (technique)\n            {\n                case Technique.LightsEnabled:\n                    m_D3DEffect.Technique = m_basicTechnique;\n                    break;\n\n                case Technique.LightsDisabled:\n                    m_D3DEffect.Technique = m_disableLightsTechnique;\n                    break;\n\n                case Technique.OnlyLights:\n                    m_D3DEffect.Technique = m_onlyLightsTechnique;\n                    break;\n\n                case Technique.OnlySpecularIntensity:\n                    m_D3DEffect.Technique = m_onlySpecularIntensityTechnique;\n                    break;\n\n                case Technique.OnlySpecularPower:\n                    m_D3DEffect.Technique = m_onlySpecularPowerTechnique;\n                    break;\n\n                case Technique.OnlyEmissivity:\n                    m_D3DEffect.Technique = m_onlyEmissivityTechnique;\n                    break;\n\n                case Technique.OnlyReflectivity:\n                    m_D3DEffect.Technique = m_onlyReflectivityTechnique;\n                    break;\n\n                case Technique.CopyEmissivity:\n                    m_D3DEffect.Technique = m_copyEmissivity;\n                    break;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Effects/Lights/MyEffectDirectionalLight.cs",
    "content": "﻿using MinerWars.AppCode.Game.Utils;\nusing SysUtils.Utils;\n\nusing SharpDX.Direct3D9;\n\nnamespace MinerWars.AppCode.Game.Effects\n{\n    using Vector2 = MinerWarsMath.Vector2;\n    using Vector3 = MinerWarsMath.Vector3;\n    using Vector4 = MinerWarsMath.Vector4;\n    using Matrix = MinerWarsMath.Matrix;\n\n    class MyEffectDirectionalLight : MyEffectShadowBase\n    {\n        public enum Technique\n        {\n            Default,\n            WithoutShadows,\n            NoLighting,\n        }\n\n        public Technique DefaultTechnique { get; set; }\n        public Technique DefaultWithoutShadowsTechnique { get; set; }\n        public Technique DefaultNoLightingTechnique { get; set; }\n\n        readonly EffectHandle m_depthsRT;\n        readonly EffectHandle m_normalsRT;\n        readonly EffectHandle m_diffuseRT;\n        readonly EffectHandle m_halfPixelAndScale;\n        readonly EffectHandle m_lightColorAndIntensity;\n        readonly EffectHandle m_backlightColorAndIntensity;\n\n\n        readonly EffectHandle m_shadowHalfPixel;\n        readonly EffectHandle m_lightDirection;\n        readonly EffectHandle m_lightSpecularColor;\n\n        readonly EffectHandle m_worldViewProjMatrix;\n        readonly EffectHandle m_cameraMatrix;\n\n        readonly EffectHandle m_frustumCorners;\n        readonly EffectHandle m_enableCascadeBlending;\n\n        readonly EffectHandle m_textureEnvironmentMain;\n        readonly EffectHandle m_textureEnvironmentAux;\n        readonly EffectHandle m_textureAmbientMain;\n        readonly EffectHandle m_textureAmbientAux;\n        readonly EffectHandle m_textureEnvironmentBlendFactor;\n        readonly EffectHandle m_cameraPosition;\n\n        readonly EffectHandle m_enableAmbientEnvironment;\n        readonly EffectHandle m_enableReflectionEnvironment;\n        readonly EffectHandle m_ambientMinimumAndIntensity;\n        readonly EffectHandle m_voxelReflectionMultiplier;\n\n        readonly EffectHandle m_nearSlopeBiasDistance;\n\n        readonly EffectHandle m_lightingTechnique;\n        readonly EffectHandle m_lightingWOShadowsTechnique;\n        readonly EffectHandle m_noLightingTechnique;\n        readonly EffectHandle m_lightingHDRTechnique;\n        readonly EffectHandle m_lightingWOShadowsHDRTechnique;\n        readonly EffectHandle m_noLightingHDRTechnique;\n\n        public MyEffectDirectionalLight()\n            : base(\"Effects2\\\\Lights\\\\MyEffectDirectionalLight\")\n        {\n            m_normalsRT = m_D3DEffect.GetParameter(null, \"NormalsRT\");\n            m_diffuseRT = m_D3DEffect.GetParameter(null, \"DiffuseRT\");\n            m_depthsRT = m_D3DEffect.GetParameter(null, \"DepthsRT\");\n            m_halfPixelAndScale = m_D3DEffect.GetParameter(null, \"HalfPixelAndScale\");\n            m_shadowHalfPixel = m_D3DEffect.GetParameter(null, \"ShadowHalfPixel\");\n\n            m_lightDirection = m_D3DEffect.GetParameter(null, \"LightDirection\");\n            m_lightColorAndIntensity = m_D3DEffect.GetParameter(null, \"LightColorAndIntensity\");\n            m_lightSpecularColor = m_D3DEffect.GetParameter(null, \"LightSpecularColor\");\n            m_backlightColorAndIntensity = m_D3DEffect.GetParameter(null, \"BacklightColorAndIntensity\");\n\n            m_worldViewProjMatrix = m_D3DEffect.GetParameter(null, \"WorldViewProjMatrix\");\n            m_cameraMatrix = m_D3DEffect.GetParameter(null, \"CameraMatrix\");\n\n            m_frustumCorners = m_D3DEffect.GetParameter(null, \"FrustumCorners\");\n            m_enableCascadeBlending = m_D3DEffect.GetParameter(null, \"EnableCascadeBlending\");\n\n            m_textureEnvironmentMain = m_D3DEffect.GetParameter(null, \"TextureEnvironmentMain\");\n            m_textureEnvironmentAux = m_D3DEffect.GetParameter(null, \"TextureEnvironmentAux\");\n            m_textureAmbientMain = m_D3DEffect.GetParameter(null, \"TextureAmbientMain\");\n            m_textureAmbientAux = m_D3DEffect.GetParameter(null, \"TextureAmbientAux\");\n            m_textureEnvironmentBlendFactor = m_D3DEffect.GetParameter(null, \"TextureEnvironmentBlendFactor\");\n            m_cameraPosition = m_D3DEffect.GetParameter(null, \"CameraPosition\");\n\n            m_enableAmbientEnvironment = m_D3DEffect.GetParameter(null, \"EnableAmbientEnv\");\n            m_enableReflectionEnvironment = m_D3DEffect.GetParameter(null, \"EnableReflectionEnv\");\n            m_ambientMinimumAndIntensity = m_D3DEffect.GetParameter(null, \"AmbientMinimumAndIntensity\");\n            m_voxelReflectionMultiplier = m_D3DEffect.GetParameter(null, \"VoxelReflectionMultiplier\");\n\n            m_nearSlopeBiasDistance = m_D3DEffect.GetParameter(null, \"NearSlopeBiasDistance\");\n\n            DefaultTechnique = Technique.Default;\n            DefaultWithoutShadowsTechnique= Technique.WithoutShadows;\n            DefaultNoLightingTechnique = Technique.NoLighting;\n\n            m_lightingTechnique = m_D3DEffect.GetTechnique(\"Technique_Lighting\");\n            m_lightingWOShadowsTechnique = m_D3DEffect.GetTechnique(\"Technique_LightingWithoutShadows\");\n            m_noLightingTechnique = m_D3DEffect.GetTechnique(\"Technique_NoLighting\");\n\n            SetTechnique(DefaultTechnique);\n\n        }\n\n        public void SetNormalsRT(Texture renderTarget2D)\n        {\n            m_D3DEffect.SetTexture(m_normalsRT, renderTarget2D);\n        }\n\n        public void SetDiffuseRT(Texture renderTarget2D)\n        {\n            m_D3DEffect.SetTexture(m_diffuseRT, renderTarget2D);\n        }\n\n        public void SetDepthsRT(Texture renderTarget2D)\n        {\n            m_D3DEffect.SetTexture(m_depthsRT, renderTarget2D);\n        }\n\n        public void SetHalfPixelAndScale(int screenSizeX, int screenSizeY, Vector2 scale)\n        {\n            Vector2 halfPixel = MyUtils.GetHalfPixel(screenSizeX, screenSizeY);\n            m_D3DEffect.SetValue(m_halfPixelAndScale, new Vector4(halfPixel.X, halfPixel.Y, scale.X, scale.Y));\n        }\n\n\n        public void SetShadowHalfPixel(int screenSizeX, int screenSizeY)\n        {\n            m_D3DEffect.SetValue(m_shadowHalfPixel, MyUtils.GetHalfPixel(screenSizeX, screenSizeY));\n        }\n\n        public void SetLightDirection(Vector3 lightDirection)\n        {\n            m_D3DEffect.SetValue(m_lightDirection, lightDirection);\n        }\n\n        public void SetLightColorAndIntensity(Vector3 lightColor, float intensity)\n        {\n            m_D3DEffect.SetValue(m_lightColorAndIntensity, new Vector4(lightColor.X, lightColor.Y, lightColor.Z, intensity));\n        }\n\n        public void SetSpecularLightColor(Vector3 lightColor)\n        {\n            m_D3DEffect.SetValue(m_lightSpecularColor, lightColor);\n        }\n\n        public void SetBacklightColorAndIntensity(Vector3 lightColor, float intensity)\n        {\n            m_D3DEffect.SetValue(m_backlightColorAndIntensity, new Vector4(lightColor.X, lightColor.Y, lightColor.Z, intensity));\n        }\n\n        public void SetWorldViewProjMatrix(Matrix matrix)\n        {\n            m_D3DEffect.SetValue(m_worldViewProjMatrix, matrix);\n        }\n\n        public void SetCameraMatrix(Matrix matrix)\n        {\n            m_D3DEffect.SetValue(m_cameraMatrix, matrix);\n        }\n\n        public void SetFrustumCorners(Vector3[] frustumCornersVS)\n        {\n            m_D3DEffect.SetValue(m_frustumCorners, frustumCornersVS);\n        }\n\n        public void EnableCascadeBlending(bool enable)\n        {\n            m_D3DEffect.SetValue(m_enableCascadeBlending, enable ? 1 : 0);\n        }\n\n        public void SetTextureEnvironmentMain(CubeTexture environmentMapMain)\n        {\n            m_D3DEffect.SetTexture(m_textureEnvironmentMain, environmentMapMain);\n        }\n\n        public void SetTextureEnvironmentAux(CubeTexture environmentMapAux)\n        {\n            m_D3DEffect.SetTexture(m_textureEnvironmentAux, environmentMapAux);\n        }\n\n        public void SetTextureAmbientMain(CubeTexture ambientMapMain)\n        {\n            m_D3DEffect.SetTexture(m_textureAmbientMain, ambientMapMain);\n        }\n\n        public void SetTextureAmbientAux(CubeTexture ambientMapAux)\n        {\n            m_D3DEffect.SetTexture(m_textureAmbientAux, ambientMapAux);\n        }\n\n        public void SetTextureEnvironmentBlendFactor(float blendFactor)\n        {\n            m_D3DEffect.SetValue(m_textureEnvironmentBlendFactor, blendFactor);\n        }\n\n        public void SetCameraPosition(Vector3 cameraPosition)\n        {\n            m_D3DEffect.SetValue(m_cameraPosition, cameraPosition);\n        }\n\n        /// <summary>\n        /// Enables ambient environmental mapping.\n        /// </summary>\n        /// <param name=\"enable\">True to enable ambient envrionmental mapping.</param>\n        public void SetEnableAmbientEnvironment(bool enable)\n        {\n            m_D3DEffect.SetValue(m_enableAmbientEnvironment, enable);\n        }\n\n        /// <summary>\n        /// Enables reflective environment mapping.\n        /// </summary>\n        /// <param name=\"enable\">True to enable reflective environmental mapping.</param>\n        public void SetEnableReflectionEnvironment(bool enable)\n        {\n            m_D3DEffect.SetValue(m_enableReflectionEnvironment, enable);\n        }\n\n        /// <summary>\n        /// Sets ambient minimum, ambient is taken from environment map, if environment map is too dark, this value is used insted.\n        /// </summary>\n        /// <param name=\"minimumAmbient\">Ambient minimum.</param>\n        public void SetAmbientMinimumAndIntensity(Vector4 minimumAmbientAndIntensity)\n        {\n            m_D3DEffect.SetValue(m_ambientMinimumAndIntensity, minimumAmbientAndIntensity);\n        }\n\n        /// <summary>\n        /// Sets voxel reflection multiplier, values around 0.1f are good\n        /// </summary>\n        /// <param name=\"voxelReflectionMultiplier\">Voxel reflection multiplier, values around 0.1f are good</param>\n        public void SetVoxelReflectionMultiplier(float voxelReflectionMultiplier)\n        {\n            m_D3DEffect.SetValue(m_voxelReflectionMultiplier, voxelReflectionMultiplier);\n        }\n\n        public void SetNearSlopeBiasDistance(float nearSlopeBiasDistance)\n        {\n            m_D3DEffect.SetValue(m_nearSlopeBiasDistance, nearSlopeBiasDistance);\n        }\n\n\n        public void SetTechnique(Technique technique)\n        {\n            switch (technique)\n            {\n                case Technique.Default:\n                    m_D3DEffect.Technique = m_lightingTechnique;\n                    break;\n\n                case Technique.WithoutShadows:\n                    m_D3DEffect.Technique = m_lightingWOShadowsTechnique;\n                    break;\n\n                case Technique.NoLighting:\n                    m_D3DEffect.Technique = m_noLightingTechnique;\n                    break;\n                    \n                default:\n                    throw new MyMwcExceptionApplicationShouldNotGetHere();\n            }\n        }\n    }   \n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Effects/Lights/MyEffectPointLight.cs",
    "content": "﻿using MinerWars.AppCode.Game.Utils;\nusing SysUtils.Utils;\n\nusing SharpDX.Direct3D9;\n\nnamespace MinerWars.AppCode.Game.Effects\n{\n    using Vector2 = MinerWarsMath.Vector2;\n    using Vector3 = MinerWarsMath.Vector3;\n    using Vector4 = MinerWarsMath.Vector4;\n    using Matrix = MinerWarsMath.Matrix;\n\n    class MyEffectPointLight : MyEffectSpotShadowBase\n    {\n        public enum MyEffectPointLightTechnique\n        {\n            Default,    // for Point and Hemisphere\n            Reflector, // unused\n            Spot,\n            SpotShadows,\n        }\n\n        public MyEffectPointLightTechnique DefaultTechnique { get; set; }\n        public MyEffectPointLightTechnique DefaultPointTechnique { get; set; }\n        public MyEffectPointLightTechnique DefaultHemisphereTechnique { get; set; }\n        public MyEffectPointLightTechnique DefaultReflectorTechnique { get; set; }\n        public MyEffectPointLightTechnique DefaultSpotTechnique { get; set; }\n        public MyEffectPointLightTechnique DefaultSpotShadowTechnique { get; set; }\n\n\n        readonly EffectHandle m_depthsRT;\n        readonly EffectHandle m_normalsRT;\n        readonly EffectHandle m_diffuseRT;\n        readonly EffectHandle m_halfPixel;\n        readonly EffectHandle m_scale;\n        readonly EffectHandle m_lightPosition;\n        readonly EffectHandle m_lightRadius;\n        readonly EffectHandle m_lightColor;\n        readonly EffectHandle m_lightSpecularColor;\n        readonly EffectHandle m_lightIntensity;\n        readonly EffectHandle m_lightFalloff;\n        readonly EffectHandle m_viewMatrix;\n\n        readonly EffectHandle m_worldViewProjMatrix;\n        readonly EffectHandle m_viewProjMatrix;\n        readonly EffectHandle m_worldMatrix;\n        readonly EffectHandle m_lightViewProjection;\n\n        readonly EffectHandle m_cameraPosition;\n        readonly EffectHandle m_reflectorDirection;\n        readonly EffectHandle m_reflectorConeMaxAngleCos;\n        readonly EffectHandle m_reflectorColor;\n        readonly EffectHandle m_reflectorRange;\n        readonly EffectHandle m_reflectorIntensity;\n        readonly EffectHandle m_reflectorFalloff;\n        readonly EffectHandle m_reflectorTexture;\n        readonly EffectHandle m_reflectorTextureEnabled;\n\n        readonly EffectHandle m_nearSlopeBiasDistance;\n\n        readonly EffectHandle m_pointTechnique;\n\n        readonly EffectHandle m_pointWithReflectorTechnique;\n        readonly EffectHandle m_spotTechnique;\n        readonly EffectHandle m_spotShadowsTechnique;\n        readonly EffectHandle m_pointHDRTechnique;\n        readonly EffectHandle m_pointWithReflectorHDRTechnique;\n        readonly EffectHandle m_spotHDRTechnique;\n        readonly EffectHandle m_spotShadowsHDRTechnique;\n\n        public MyEffectPointLight()\n            : base(\"Effects2\\\\Lights\\\\MyEffectPointLight\")\n        {\n            m_normalsRT = m_D3DEffect.GetParameter(null, \"NormalsRT\");\n            m_diffuseRT = m_D3DEffect.GetParameter(null, \"DiffuseRT\");\n            m_depthsRT = m_D3DEffect.GetParameter(null, \"DepthsRT\");\n            m_halfPixel = m_D3DEffect.GetParameter(null, \"HalfPixel\");\n            m_scale = m_D3DEffect.GetParameter(null, \"Scale\");\n\n            m_lightPosition = m_D3DEffect.GetParameter(null, \"LightPosition\");\n            m_lightRadius = m_D3DEffect.GetParameter(null, \"LightRadius\");\n            m_lightColor = m_D3DEffect.GetParameter(null, \"LightColor\");\n            m_lightSpecularColor = m_D3DEffect.GetParameter(null, \"LightSpecularColor\");\n            m_lightIntensity = m_D3DEffect.GetParameter(null, \"LightIntensity\");\n            m_lightFalloff = m_D3DEffect.GetParameter(null, \"Falloff\");\n\n            m_worldViewProjMatrix = m_D3DEffect.GetParameter(null, \"WorldViewProjMatrix\");\n            m_viewProjMatrix = m_D3DEffect.GetParameter(null, \"ViewProjMatrix\");\n            m_worldMatrix = m_D3DEffect.GetParameter(null, \"WorldMatrix\");\n            m_viewMatrix = m_D3DEffect.GetParameter(null, \"ViewMatrix\");\n            m_lightViewProjection = m_D3DEffect.GetParameter(null, \"LightViewProjection\");\n            \n            m_cameraPosition = m_D3DEffect.GetParameter(null, \"CameraPosition\");\n            m_reflectorDirection = m_D3DEffect.GetParameter(null, \"ReflectorDirection\");\n            m_reflectorConeMaxAngleCos = m_D3DEffect.GetParameter(null, \"ReflectorConeMaxAngleCos\");\n            m_reflectorColor = m_D3DEffect.GetParameter(null, \"ReflectorColor\");\n            m_reflectorRange = m_D3DEffect.GetParameter(null, \"ReflectorRange\");\n            m_reflectorIntensity = m_D3DEffect.GetParameter(null, \"ReflectorIntensity\");\n            m_reflectorFalloff = m_D3DEffect.GetParameter(null, \"ReflectorFalloff\");\n            m_reflectorTexture = m_D3DEffect.GetParameter(null, \"ReflectorTexture\");\n            m_reflectorTextureEnabled = m_D3DEffect.GetParameter(null, \"ReflectorTextureEnabled\");\n\n            m_nearSlopeBiasDistance = m_D3DEffect.GetParameter(null, \"NearSlopeBiasDistance\");\n\n            m_pointTechnique = m_D3DEffect.GetTechnique(\"Technique_Lighting\");\n\n            m_pointWithReflectorTechnique = m_D3DEffect.GetTechnique(\"Technique_LightingWithReflector\");\n            m_spotTechnique = m_D3DEffect.GetTechnique(\"Technique_Spot\");\n            m_spotShadowsTechnique = m_D3DEffect.GetTechnique(\"Technique_SpotShadows\");\n\n            // Reflector texture disabled unless set\n            m_D3DEffect.SetValue(m_reflectorTextureEnabled, false);\n\n            DefaultTechnique = MyEffectPointLightTechnique.Default;\n            DefaultPointTechnique = MyEffectPointLightTechnique.Default;\n            DefaultHemisphereTechnique = MyEffectPointLightTechnique.Default;\n\n            DefaultReflectorTechnique = MyEffectPointLightTechnique.Reflector;\n            DefaultSpotTechnique = MyEffectPointLightTechnique.Spot;\n            DefaultSpotShadowTechnique = MyEffectPointLightTechnique.SpotShadows;\n\n            SetTechnique(DefaultTechnique);\n        }\n\n        public void SetNormalsRT(Texture renderTarget2D)\n        {\n            m_D3DEffect.SetTexture(m_normalsRT, renderTarget2D);\n        }\n\n        public void SetDiffuseRT(Texture renderTarget2D)\n        {\n            m_D3DEffect.SetTexture(m_diffuseRT, renderTarget2D);\n        }\n\n        public void SetDepthsRT(Texture renderTarget2D)\n        {\n            m_D3DEffect.SetTexture(m_depthsRT, renderTarget2D);\n        }\n\n        public void SetHalfPixel(int screenSizeX, int screenSizeY)\n        {\n            m_D3DEffect.SetValue(m_halfPixel, MyUtils.GetHalfPixel(screenSizeX, screenSizeY));\n        }\n\n        public void SetScale(Vector2 scale)\n        {\n            m_D3DEffect.SetValue(m_scale, scale);\n        }\n\n        public void SetLightPosition(Vector3 lightPosition)\n        {\n            m_D3DEffect.SetValue(m_lightPosition, lightPosition);\n        }\n\n        public void SetLightColor(Vector3 lightColor)\n        {\n            m_D3DEffect.SetValue(m_lightColor, lightColor);\n        }\n\n        public void SetSpecularLightColor(Vector3 lightColor)\n        {\n            m_D3DEffect.SetValue(m_lightSpecularColor, lightColor);\n        }\n\n        public void SetLightIntensity(float lightIntensity)\n        {\n            m_D3DEffect.SetValue(m_lightIntensity, lightIntensity);\n        }\n\n        public void SetFalloff(float falloff)\n        {\n            m_D3DEffect.SetValue(m_lightFalloff, falloff);\n        }\n\n        public void SetLightRadius(float lightRadius)\n        {\n            m_D3DEffect.SetValue(m_lightRadius, lightRadius);\n        }\n\n        public void SetViewProjMatrix(ref Matrix matrix)\n        {\n            m_D3DEffect.SetValue(m_viewProjMatrix, matrix);\n        }\n\n        public void SetWorldViewProjMatrix(ref Matrix matrix)\n        {\n            m_D3DEffect.SetValue(m_worldViewProjMatrix, matrix);\n        }\n\n        public void SetWorldMatrix(ref Matrix matrix)\n        {\n            m_D3DEffect.SetValue(m_worldMatrix, matrix);\n        }\n\n        public void SetTechnique(MyEffectPointLightTechnique technique)\n        {\n            switch (technique)\n            {\n                case MyEffectPointLightTechnique.Default:\n                    m_D3DEffect.Technique = m_pointTechnique;\n                    break;\n\n                case MyEffectPointLightTechnique.Reflector:\n                    m_D3DEffect.Technique = m_pointWithReflectorTechnique;\n                    break;\n\n                case MyEffectPointLightTechnique.Spot:\n                    m_D3DEffect.Technique = m_spotTechnique;\n                    break;\n\n                case MyEffectPointLightTechnique.SpotShadows:\n                    m_D3DEffect.Technique = m_spotShadowsTechnique;\n                    break;\n\n                default:\n                    throw new MyMwcExceptionApplicationShouldNotGetHere();\n            }\n        }\n\n        public void SetCameraPosition(Vector3 cameraPosition)\n        {\n            m_D3DEffect.SetValue(m_cameraPosition, cameraPosition);\n        }\n        \n        public void SetReflectorDirection(Vector3 reflectorDirection)\n        {\n            m_D3DEffect.SetValue(m_reflectorDirection, reflectorDirection);\n        }\n\n        public void SetReflectorConeMaxAngleCos(float reflectorConeMax)\n        {\n            m_D3DEffect.SetValue(m_reflectorConeMaxAngleCos, reflectorConeMax);\n        }\n\n        public void SetReflectorColor(Vector4 reflectorColor)\n        {\n            m_D3DEffect.SetValue(m_reflectorColor, reflectorColor);\n        }\n\n        public void SetReflectorRange(float reflectorRange)\n        {\n            m_D3DEffect.SetValue(m_reflectorRange, reflectorRange);\n        }\n\n        public void SetReflectorIntensity(float reflectorIntensity)\n        {\n            m_D3DEffect.SetValue(m_reflectorIntensity, reflectorIntensity);\n        }\n\n        public void SetReflectorFalloff(float reflectorFalloff)\n        {\n            m_D3DEffect.SetValue(m_reflectorFalloff, reflectorFalloff);\n        }\n\n        public void SetReflectorTexture(Texture reflectorTexture)\n        {\n            m_D3DEffect.SetTexture(m_reflectorTexture, reflectorTexture);\n            m_D3DEffect.SetValue(m_reflectorTextureEnabled, reflectorTexture != null ? 1 : 0);\n        }\n\n        public void SetViewMatrix(Matrix viewMatrix)\n        {\n            m_D3DEffect.SetValue(m_viewMatrix, viewMatrix);\n        }\n\n        // Sets light view projection matrix for texturing purposes (reflector texture)\n        public void SetLightViewProjection(Matrix lightViewProjection)\n        {\n            m_D3DEffect.SetValue(m_lightViewProjection, lightViewProjection);\n        }\n\n        public void SetNearSlopeBiasDistance(float nearSlopeBiasDistance)\n        {\n            m_D3DEffect.SetValue(m_nearSlopeBiasDistance, nearSlopeBiasDistance);\n        }\n    }   \n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Effects/MyEffectAmbientPrecalculation.cs",
    "content": "﻿using MinerWars.AppCode.Game.Utils;\nusing SharpDX.Direct3D9;\n\nnamespace MinerWars.AppCode.Game.Effects\n{\n    using Vector3 = MinerWarsMath.Vector3;\n    using Vector4 = MinerWarsMath.Vector4;\n    using Matrix = MinerWarsMath.Matrix;\n\n    class MyEffectAmbientPrecalculation : MyEffectBase\n    {\n        readonly EffectHandle m_environmentMap;\n        readonly EffectHandle m_halfPixel;\n        readonly EffectHandle m_faceMatrix;\n        readonly EffectHandle m_randomTexture;\n        readonly EffectHandle m_randomTextureSize;\n        readonly EffectHandle m_iterationCount;\n        readonly EffectHandle m_mainVectorWeight;\n        readonly EffectHandle m_backlightColorAndIntensity;\n\n        public MyEffectAmbientPrecalculation()\n            : base(\"Effects2\\\\Fullscreen\\\\MyEffectAmbientPrecalculation\")\n        {\n            m_environmentMap = m_D3DEffect.GetParameter(null, \"EnvironmentMap\");\n            m_halfPixel = m_D3DEffect.GetParameter(null, \"HalfPixel\");\n            m_faceMatrix = m_D3DEffect.GetParameter(null, \"FaceMatrix\");\n            m_randomTexture = m_D3DEffect.GetParameter(null, \"RandomTexture\");\n            m_randomTextureSize = m_D3DEffect.GetParameter(null, \"RandomTextureSize\");\n            m_iterationCount = m_D3DEffect.GetParameter(null, \"IterationCount\");\n            m_mainVectorWeight = m_D3DEffect.GetParameter(null, \"MainVectorWeight\");\n            m_backlightColorAndIntensity = m_D3DEffect.GetParameter(null, \"BacklightColorAndIntensity\");\n        }\n\n        public void SetRandomTexture(Texture randomTexture)\n        {\n            m_D3DEffect.SetTexture(m_randomTexture, randomTexture);\n            m_D3DEffect.SetValue(m_randomTextureSize, randomTexture.GetLevelDescription(0).Width);\n        }\n\n        public void SetFaceMatrix(Matrix faceMatrix)\n        {\n            m_D3DEffect.SetValue(m_faceMatrix, faceMatrix);\n        }\n\n        public void SetEnvironmentMap(CubeTexture environmentMap)\n        {\n            m_D3DEffect.SetTexture(m_environmentMap, environmentMap);\n            m_D3DEffect.SetValue(m_halfPixel, MyUtils.GetHalfPixel(environmentMap.GetLevelDescription(0).Width, environmentMap.GetLevelDescription(0).Height));\n        }\n\n        public void SetIterationCount(int iterationCount)\n        {\n            m_D3DEffect.SetValue(m_iterationCount, iterationCount);\n        }\n\n        public void SetMainVectorWeight(float mainVectorWeight)\n        {\n            m_D3DEffect.SetValue(m_mainVectorWeight, mainVectorWeight);\n        }\n\n        public void SetBacklightColorAndIntensity(Vector3 lightColor, float intensity)\n        {\n            m_D3DEffect.SetValue(m_backlightColorAndIntensity, new Vector4(lightColor.X, lightColor.Y, lightColor.Z, intensity));\n        }\n\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Effects/MyEffectAntiAlias.cs",
    "content": "﻿using MinerWars.AppCode.Game.Utils;\nusing SharpDX.Direct3D9;\n\nnamespace MinerWars.AppCode.Game.Effects\n{\n    using Vector2 = MinerWarsMath.Vector2;\n    using Vector3 = MinerWarsMath.Vector3;\n    using Vector4 = MinerWarsMath.Vector4;\n    using Matrix = MinerWarsMath.Matrix;\n\n    class MyEffectAntiAlias : MyEffectBase\n    {\n        readonly EffectHandle m_diffuse;\n        readonly EffectHandle m_fullPixel;\n        readonly EffectHandle m_halfPixel;\n        readonly EffectHandle m_applyFxaa;\n        readonly EffectHandle m_noAntialiasing;\n\n        public MyEffectAntiAlias()\n            : base(\"Effects2\\\\Fullscreen\\\\MyEffectAntiAlias\")\n        {\n            m_diffuse = m_D3DEffect.GetParameter(null, \"DiffuseTexture\");\n            m_fullPixel = m_D3DEffect.GetParameter(null, \"FullPixel\");\n            m_halfPixel = m_D3DEffect.GetParameter(null, \"HalfPixel\");\n            m_applyFxaa = m_D3DEffect.GetTechnique(\"ApplyFxaa\");\n            m_noAntialiasing = m_D3DEffect.GetTechnique(\"NoAntialiasing\");\n        }\n\n        public void SetDiffuseTexture(Texture renderTarget2D)\n        {\n            m_D3DEffect.SetTexture(m_diffuse, renderTarget2D);\n        }\n\n        public void SetHalfPixel(int screenSizeX, int screenSizeY)\n        {\n            Vector2 halfPixel = MyUtils.GetHalfPixel(screenSizeX, screenSizeY);\n            m_D3DEffect.SetValue(m_halfPixel, halfPixel);\n            m_D3DEffect.SetValue(m_fullPixel, 2.0f * halfPixel);\n        }\n\n        public void ApplyFxaa()\n        {\n            m_D3DEffect.Technique = m_applyFxaa;\n        }\n\n        public void DisableAntialiasing()\n        {\n            m_D3DEffect.Technique = m_noAntialiasing;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Effects/MyEffectBackgroundCube.cs",
    "content": "﻿using SysUtils.Utils;\nusing SharpDX.Direct3D9;\n\nnamespace MinerWars.AppCode.Game.Effects\n{\n    using Vector2 = MinerWarsMath.Vector2;\n    using Vector3 = MinerWarsMath.Vector3;\n    using Vector4 = MinerWarsMath.Vector4;\n    using Matrix = MinerWarsMath.Matrix;\n\n    class MyEffectBackgroundCube : MyEffectBase\n    {\n        readonly EffectHandle m_backgroundTexture;\n        readonly EffectHandle m_backgroundColor;\n        readonly EffectHandle m_viewProjectionMatrix;\n\n        public MyEffectBackgroundCube()\n            : base(\"Effects2\\\\BackgroundCube\\\\MyBackgroundCube\")\n        {\n            m_backgroundTexture = m_D3DEffect.GetParameter(null, \"BackgroundTexture\");\n            m_backgroundColor = m_D3DEffect.GetParameter(null, \"BackgroundColor\");\n            m_viewProjectionMatrix = m_D3DEffect.GetParameter(null, \"ViewProjectionMatrix\");\n        }\n\n        public void SetBackgroundTexture(CubeTexture texture)\n        {\n            m_D3DEffect.SetTexture(m_backgroundTexture, texture);\n        }\n\n        public void SetBackgroundColor(Vector3 color)\n        {\n            m_D3DEffect.SetValue(m_backgroundColor, color);\n        }\n\n        public void SetViewProjectionMatrix(Matrix matrix)\n        {\n            m_D3DEffect.SetValue(m_viewProjectionMatrix, matrix);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Effects/MyEffectClearGbuffer.cs",
    "content": "﻿namespace MinerWars.AppCode.Game.Effects\n{\n    class MyEffectClearGbuffer : MyEffectBase\n    {\n        public MyEffectClearGbuffer()\n            : base(\"Effects2\\\\Fullscreen\\\\MyEffectClearGbuffer\")\n        {\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Effects/MyEffectCockpitGlass.cs",
    "content": "﻿using SharpDX.Direct3D9;\n\nnamespace MinerWars.AppCode.Game.Effects\n{\n    using Vector2 = MinerWarsMath.Vector2;\n    using Vector3 = MinerWarsMath.Vector3;\n    using Vector4 = MinerWarsMath.Vector4;\n    using Matrix = MinerWarsMath.Matrix;\n    using MinerWars.AppCode.Game.Render;\n\n    class MyEffectCockpitGlass : MyEffectDynamicLightingBase\n    {\n        public enum MyEffectCockpitGlassTechniqueEnum\n        {\n            Default,\n            Forward\n        }\n\n        readonly EffectHandle m_cockpitGlassTexture;\n        readonly EffectHandle m_cockpitInteriorLight;\n        readonly EffectHandle m_glassDirtLevelAlpha;\n        readonly EffectHandle m_depthTexture;\n        readonly EffectHandle m_halfPixel;\n        readonly EffectHandle m_worldMatrix;\n        readonly EffectHandle m_viewMatrix;\n        readonly EffectHandle m_worldViewProjectionMatrix;\n        readonly EffectHandle m_reflectorPosition;\n        readonly EffectHandle m_nearLightRange;\n        readonly EffectHandle m_nearLightColor;\n\n        readonly EffectHandle m_defaultTechnique;\n        readonly EffectHandle m_forwardTechnique;\n\n        public MyEffectCockpitGlass()\n            : base(\"Effects2\\\\HUD\\\\MyEffectCockpitGlass\")\n        {\n            m_cockpitGlassTexture = m_D3DEffect.GetParameter(null, \"CockpitGlassTexture\");\n            m_cockpitInteriorLight = m_D3DEffect.GetParameter(null, \"CockpitInteriorLight\");\n            m_glassDirtLevelAlpha = m_D3DEffect.GetParameter(null, \"GlassDirtLevelAlpha\");\n            m_depthTexture = m_D3DEffect.GetParameter(null, \"DepthsRT\");\n            m_halfPixel = m_D3DEffect.GetParameter(null, \"HalfPixel\");\n            m_worldMatrix = m_D3DEffect.GetParameter(null, \"WorldMatrix\");\n            m_viewMatrix = m_D3DEffect.GetParameter(null, \"ViewMatrix\");\n            m_worldViewProjectionMatrix = m_D3DEffect.GetParameter(null, \"WorldViewProjectionMatrix\");\n            m_reflectorPosition = m_D3DEffect.GetParameter(null, \"ReflectorPosition\");\n            m_nearLightRange = m_D3DEffect.GetParameter(null, \"NearLightRange\");\n            m_nearLightColor = m_D3DEffect.GetParameter(null, \"NearLightColor\");\n\n            m_defaultTechnique = m_D3DEffect.GetTechnique(\"GlassDefault\");\n            m_forwardTechnique = m_D3DEffect.GetTechnique(\"GlassForward\");\n        }\n\n        public void SetCockpitGlassTexture(Texture texture)\n        {\n            m_D3DEffect.SetTexture(m_cockpitGlassTexture, texture);\n        }\n\n        public void SetGlassDirtLevelAlpha(Vector4 alpha)\n        {\n            m_D3DEffect.SetValue(m_glassDirtLevelAlpha, alpha);\n        }\n\n        public void SetDepthTexture(Texture texture)\n        {\n            m_D3DEffect.SetTexture(m_depthTexture, texture);\n        }\n\n        public void SetHalfPixel(Vector2 halfPixel)\n        {\n            m_D3DEffect.SetValue(m_halfPixel, halfPixel);\n        }\n\n        public void SetWorldMatrix(Matrix worldMatrix)\n        {\n            m_D3DEffect.SetValue(m_worldMatrix, worldMatrix);\n        }\n\n        public void SetViewMatrix(Matrix viewMatrix)\n        {\n            m_D3DEffect.SetValue(m_viewMatrix, viewMatrix);\n        }\n\n        public void SetWorldViewProjectionMatrix(Matrix matrix)\n        {\n            m_D3DEffect.SetValue(m_worldViewProjectionMatrix, matrix);\n        }\n\n\n        public void SetReflectorPosition(Vector3 pos)\n        {\n            m_D3DEffect.SetValue(m_reflectorPosition, pos);\n        }\n\n        public void SetNearLightRange(float range)\n        {\n            m_D3DEffect.SetValue(m_nearLightRange, range);\n        }\n\n        public void SetNearLightColor(Vector4 color)\n        {\n            m_D3DEffect.SetValue(m_nearLightColor, color);\n        }\n\n        void SetTechnique(MyEffectCockpitGlassTechniqueEnum technique)\n        {\n            switch (technique)\n            {\n                case MyEffectCockpitGlassTechniqueEnum.Default:\n                    m_D3DEffect.Technique = m_defaultTechnique;\n                    break;\n\n                case MyEffectCockpitGlassTechniqueEnum.Forward:\n                    m_D3DEffect.Technique = m_forwardTechnique;\n                    break;\n    }\n}\n\n        public override void Begin(int pass = 0, FX fx = FX.DoNotSaveSamplerState | FX.DoNotSaveShaderState | FX.DoNotSaveState)\n        {\n            if (MyRenderConstants.RenderQualityProfile.ForwardRender)\n                SetTechnique(MyEffectCockpitGlassTechniqueEnum.Forward);\n            else\n                SetTechnique(MyEffectCockpitGlassTechniqueEnum.Default);\n\n            base.Begin(pass);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Effects/MyEffectContrast.cs",
    "content": "﻿using MinerWars.AppCode.Game.Utils;\nusing SharpDX.Direct3D9;\n\nnamespace MinerWars.AppCode.Game.Effects\n{\n    using Vector2 = MinerWarsMath.Vector2;\n    using Vector3 = MinerWarsMath.Vector3;\n    using Vector4 = MinerWarsMath.Vector4;\n    using Matrix = MinerWarsMath.Matrix;\n\n    class MyEffectContrast : MyEffectBase\n    {\n        readonly EffectHandle m_diffuseTexture;\n        readonly EffectHandle m_contrast;\n        readonly EffectHandle m_saturation;\n        readonly EffectHandle m_hue;\n        readonly EffectHandle m_halfPixel;\n\n        public MyEffectContrast()\n            : base(\"Effects2\\\\Fullscreen\\\\MyEffectContrast\")\n        {\n            m_diffuseTexture = m_D3DEffect.GetParameter(null, \"DiffuseTexture\");\n            m_contrast = m_D3DEffect.GetParameter(null, \"Contrast\");\n            m_hue = m_D3DEffect.GetParameter(null, \"Hue\");\n            m_saturation = m_D3DEffect.GetParameter(null, \"Saturation\");\n            m_halfPixel = m_D3DEffect.GetParameter(null, \"HalfPixel\");\n        }\n\n        public void SetDiffuseTexture(Texture dt)\n        {\n            m_D3DEffect.SetTexture(m_diffuseTexture, dt);\n        }\n\n        public void SetHalfPixel(Vector2 hf)\n        {\n            m_D3DEffect.SetValue(m_halfPixel, hf);\n        }\n\n        public void SetContrast(float contrast)\n        {\n            m_D3DEffect.SetValue(m_contrast, contrast);\n        }\n\n        public void SetSaturation(float saturation)\n        {\n            m_D3DEffect.SetValue(m_saturation, saturation);\n        }\n\n        public void SetHue(float hue)\n        {\n            m_D3DEffect.SetValue(m_hue, hue);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Effects/MyEffectDecals.cs",
    "content": "﻿using SysUtils.Utils;\n\nusing SharpDX.Direct3D9;\n\nnamespace MinerWars.AppCode.Game.Effects\n{\n    using Vector2 = MinerWarsMath.Vector2;\n    using Vector3 = MinerWarsMath.Vector3;\n    using Vector4 = MinerWarsMath.Vector4;\n    using Matrix = MinerWarsMath.Matrix;\n\n    class MyEffectDecals : MyEffectBase\n    {\n        readonly EffectHandle m_voxelMapPosition;\n        readonly EffectHandle m_techniqueVoxelDecals;\n        readonly EffectHandle m_techniqueModelDecals;\n        readonly EffectHandle m_techniqueVoxelDecalsForward;\n        readonly EffectHandle m_techniqueModelDecalsForward;\n\n        readonly EffectHandle m_decalDiffuseTexture;\n        readonly EffectHandle m_decalNormalMapTexture;\n        readonly EffectHandle m_fadeoutDistance;\n        readonly EffectHandle m_worldMatrix;\n        readonly EffectHandle m_viewProjectionMatrix;\n        readonly EffectHandle m_emissivityColor;\n\n        public MyEffectDynamicLightingBase DynamicLights { get; private set; }\n        public MyEffectReflectorBase Reflector { get; private set; }\n\n\n        public enum Technique\n        {\n            Voxels,\n            Model,\n            VoxelsForward,\n            ModelForward\n        }\n\n        public MyEffectDecals()\n            : base(\"Effects2\\\\Decals\\\\MyDecalEffect\")\n        {\n            m_voxelMapPosition = m_D3DEffect.GetParameter(null, \"VoxelMapPosition\");\n            m_techniqueVoxelDecals = m_D3DEffect.GetTechnique(\"TechniqueVoxelDecals\");\n            m_techniqueModelDecals = m_D3DEffect.GetTechnique(\"TechniqueModelDecals\");\n            m_techniqueVoxelDecalsForward = m_D3DEffect.GetTechnique(\"TechniqueVoxelDecals_Forward\");\n            m_techniqueModelDecalsForward = m_D3DEffect.GetTechnique(\"TechniqueModelDecals_Forward\");\n\n            m_decalDiffuseTexture = m_D3DEffect.GetParameter(null, \"DecalDiffuseTexture\");\n            m_decalNormalMapTexture = m_D3DEffect.GetParameter(null, \"DecalNormalMapTexture\");\n            m_fadeoutDistance = m_D3DEffect.GetParameter(null, \"FadeoutDistance\");\n            m_worldMatrix = m_D3DEffect.GetParameter(null, \"WorldMatrix\");\n            m_viewProjectionMatrix = m_D3DEffect.GetParameter(null, \"ViewProjectionMatrix\");\n            m_emissivityColor = m_D3DEffect.GetParameter(null, \"EmissiveColor\");\n\n            DynamicLights = new MyEffectDynamicLightingBase(m_D3DEffect);\n            Reflector = new MyEffectReflectorBase(m_D3DEffect);\n        }\n\n        public void SetDecalDiffuseTexture(Texture texture)\n        {\n            m_D3DEffect.SetTexture(m_decalDiffuseTexture, texture);\n        }\n\n        public void SetDecalNormalMapTexture(Texture texture)\n        {\n            m_D3DEffect.SetTexture(m_decalNormalMapTexture, texture);\n        }\n\n        public void SetWorldMatrix(Matrix matrix)\n        {\n            m_D3DEffect.SetValue(m_worldMatrix, matrix);\n        }\n\n        public void SetViewProjectionMatrix(Matrix matrix)\n        {\n            m_D3DEffect.SetValue(m_viewProjectionMatrix, matrix);\n        }\n\n        public void SetFadeoutDistance(float distance)\n        {\n            m_D3DEffect.SetValue(m_fadeoutDistance, distance);\n        }\n\n        public void SetVoxelMapPosition(Vector3 pos)\n        {\n            m_D3DEffect.SetValue(m_voxelMapPosition, pos);\n        }\n\n        public void SetEmissivityColor(Vector4 color)\n        {\n            m_D3DEffect.SetValue(m_emissivityColor, color);\n        }\n\n        public void SetTechnique(Technique technique)\n        {\n            switch (technique)\n            {\n                case Technique.Voxels:\n                     m_D3DEffect.Technique = m_techniqueVoxelDecals;\n                    break;\n                case Technique.Model:\n                     m_D3DEffect.Technique = m_techniqueModelDecals;\n                    break;\n\n                case Technique.VoxelsForward:\n                    m_D3DEffect.Technique = m_techniqueVoxelDecalsForward;\n                    break;\n                case Technique.ModelForward:\n                    m_D3DEffect.Technique = m_techniqueModelDecalsForward;\n                    break;\n\n                default:\n                    throw new MyMwcExceptionApplicationShouldNotGetHere();\n                    break;\n            }\n        }\n\n        public override void Dispose()\n        {\n            DynamicLights.Dispose();\n            Reflector.Dispose();\n            base.Dispose();\n        }\n\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Effects/MyEffectDistantImpostors.cs",
    "content": "﻿using SysUtils.Utils;\nusing SharpDX.Direct3D9;\n\nnamespace MinerWars.AppCode.Game.Effects\n{\n    using Vector2 = MinerWarsMath.Vector2;\n    using Vector3 = MinerWarsMath.Vector3;\n    using Vector4 = MinerWarsMath.Vector4;\n    using Matrix = MinerWarsMath.Matrix;\n\n    class MyEffectDistantImpostors : MyEffectBase\n    {\n        readonly EffectHandle m_impostorTexture;\n        readonly EffectHandle m_worldMatrix;\n        readonly EffectHandle m_viewProjectionMatrix;\n        readonly EffectHandle m_scale;\n        readonly EffectHandle m_cameraPos;\n        readonly EffectHandle m_animation;\n        readonly EffectHandle m_contrastAndIntensity;\n        readonly EffectHandle m_color;\n        readonly EffectHandle m_sunDirection;\n\n        readonly EffectHandle m_defaultTechnique;\n        readonly EffectHandle m_coloredTechnique;\n        readonly EffectHandle m_coloredLitTechnique;\n        readonly EffectHandle m_textured3DTechnique;\n\n        public MyEffectPerlinNoiseBase PerlinBase  { get; private set; }\n\n        public enum Technique\n        {\n            Default,\n            Colored,\n            ColoredLit,\n            Textured3D\n        }\n\n        public MyEffectDistantImpostors()\n            : base(\"Effects2\\\\BackgroundCube\\\\MyDistantImpostorEffect\")\n        {\n            m_impostorTexture = m_D3DEffect.GetParameter(null, \"ImpostorTexture\");\n            m_worldMatrix = m_D3DEffect.GetParameter(null, \"WorldMatrix\");\n            m_viewProjectionMatrix = m_D3DEffect.GetParameter(null, \"ViewProjectionMatrix\");\n            m_scale = m_D3DEffect.GetParameter(null, \"Scale\");\n            m_cameraPos = m_D3DEffect.GetParameter(null, \"CameraPos\");\n            m_animation = m_D3DEffect.GetParameter(null, \"Animation\");\n            m_contrastAndIntensity = m_D3DEffect.GetParameter(null, \"ContrastAndIntensity\");\n            m_color = m_D3DEffect.GetParameter(null, \"Color\");\n            m_sunDirection = m_D3DEffect.GetParameter(null, \"SunDir\");\n\n            m_defaultTechnique = m_D3DEffect.GetTechnique(\"Default\");\n            m_coloredTechnique = m_D3DEffect.GetTechnique(\"Colored\");\n            m_coloredLitTechnique = m_D3DEffect.GetTechnique(\"ColoredLit\");\n            m_textured3DTechnique = m_D3DEffect.GetTechnique(\"Textured3D\");\n\n            PerlinBase = new MyEffectPerlinNoiseBase(m_D3DEffect);\n        }\n\n        public void SetImpostorTexture(Texture texture)\n        {\n            m_D3DEffect.SetTexture(m_impostorTexture, texture);\n        }\n\n        public void SetWorldMatrix(Matrix matrix)\n        {\n            m_D3DEffect.SetValue(m_worldMatrix, matrix);\n        }\n\n        public void SetViewProjectionMatrix(Matrix matrix)\n        {\n            m_D3DEffect.SetValue(m_viewProjectionMatrix, matrix);\n        }\n\n        public void SetScale(float scale)\n        {\n            m_D3DEffect.SetValue(m_scale, scale);\n        }\n\n        public void SetCameraPos(Vector3 cameraPos)\n        {\n            m_D3DEffect.SetValue(m_cameraPos, cameraPos);\n        }\n\n        public void SetAnimation(Vector4 animation)\n        {\n            m_D3DEffect.SetValue(m_animation, animation);\n        }\n\n        public void SetContrastAndIntensity(Vector2 value)\n        {\n            m_D3DEffect.SetValue(m_contrastAndIntensity, value);\n        }\n\n        public void SetColor(Vector3 value)\n        {\n            m_D3DEffect.SetValue(m_color, value);\n        }\n\n        public void SetSunDirection(Vector3 sunDirection)\n        {\n            m_D3DEffect.SetValue(m_sunDirection, sunDirection);\n        }\n\n        public void SetTechnique(Technique technique)\n        {\n            switch(technique)\n            {\n                case Technique.Colored:\n                    m_D3DEffect.Technique = m_coloredTechnique;\n                    break;\n\n                case Technique.ColoredLit:\n                    m_D3DEffect.Technique = m_coloredLitTechnique;\n                    break;\n\n                case Technique.Textured3D:\n                    m_D3DEffect.Technique = m_textured3DTechnique;\n                    break;\n\n                default:\n                    m_D3DEffect.Technique = m_defaultTechnique;\n                    break;\n            }\n        }\n\n        public override void Dispose()\n        {\n            PerlinBase.Dispose();\n\n            base.Dispose();\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Effects/MyEffectGaussianBlur.cs",
    "content": "﻿using System;\nusing MinerWars.AppCode.Game.Utils;\n\nusing SharpDX.Direct3D9;\n\nnamespace MinerWars.AppCode.Game.Effects\n{\n    using Vector2 = MinerWarsMath.Vector2;\n    using Vector3 = MinerWarsMath.Vector3;\n    using Vector4 = MinerWarsMath.Vector4;\n    using Matrix = MinerWarsMath.Matrix;\n\n    class MyEffectGaussianBlur : MyEffectBase\n    {\n        readonly EffectHandle m_sourceTexture;\n        readonly EffectHandle m_halfPixel;\n\n        readonly EffectHandle m_weightsParameter;\n        readonly EffectHandle m_offsetsParameter;\n        readonly float[] m_sampleWeights;\n        readonly Vector2[] m_sampleOffsets;\n        readonly int m_sampleCount;\n\n        //  Controls how much blurring is applied to the image. The typical range is from 1 up to 10 or so.\n        public float BlurAmount = 1;\n\n        public MyEffectGaussianBlur()\n            : base(\"Effects2\\\\Fullscreen\\\\MyEffectGaussianBlur\")\n        {\n            m_sourceTexture = m_D3DEffect.GetParameter(null, \"SourceTexture\");\n            m_halfPixel = m_D3DEffect.GetParameter(null, \"HalfPixel\");\n\n            // Look up the sample weight and offset effect parameters.\n            m_weightsParameter = m_D3DEffect.GetParameter(null, \"SampleWeights\");\n            m_offsetsParameter = m_D3DEffect.GetParameter(null, \"SampleOffsets\");\n\n            // Look up how many samples our gaussian blur effect supports.\n            m_sampleCount = m_D3DEffect.GetParameterDescription(m_weightsParameter).Elements;\n\n            // Create temporary arrays for computing our filter settings.\n            m_sampleWeights = new float[m_sampleCount];\n            m_sampleOffsets = new Vector2[m_sampleCount];\n        }\n\n        public void SetSourceTexture(Texture texture2D)\n        {\n            m_D3DEffect.SetTexture(m_sourceTexture, texture2D);\n        }\n\n        public void SetHalfPixel(int screenSizeX, int screenSizeY)\n        {\n            m_D3DEffect.SetValue(m_halfPixel, MyUtils.GetHalfPixel(screenSizeX, screenSizeY));\n        }\n\n        public void SetWidthForHorisontalPass(int width)\n        {\n            // Pass 2: draw from rendertarget 1 into rendertarget 2,\n            // using a shader to apply a horizontal gaussian blur filter.\n            SetBlurEffectHandles(1.0f / (float)width, 0);\n        }\n\n        public void SetHeightForVerticalPass(int height)\n        {\n            // Pass 3: draw from rendertarget 2 back into rendertarget 1,\n            // using a shader to apply a vertical gaussian blur filter.\n            SetBlurEffectHandles(0, 1.0f / (float)height);\n        }\n\n        //  Computes sample weightings and texture coordinate offsets\n        //  for one pass of a separable gaussian blur filter.\n        void SetBlurEffectHandles(float dx, float dy)\n        {\n            // The first sample always has a zero offset.\n            m_sampleWeights[0] = ComputeGaussian(0);\n            m_sampleOffsets[0] = new Vector2(0);\n\n            // Maintain a sum of all the weighting values.\n            float totalWeights = m_sampleWeights[0];\n\n            // Add pairs of additional sample taps, positioned\n            // along a line in both directions from the center.\n            for (int i = 0; i < m_sampleCount / 2; i++)\n            {\n                // Store weights for the positive and negative taps.\n                float weight = ComputeGaussian(i + 1);\n\n                m_sampleWeights[i * 2 + 1] = weight;\n                m_sampleWeights[i * 2 + 2] = weight;\n\n                totalWeights += weight * 2;\n\n                // To get the maximum amount of blurring from a limited number of\n                // pixel shader samples, we take advantage of the bilinear filtering\n                // hardware inside the texture fetch unit. If we position our texture\n                // coordinates exactly halfway between two texels, the filtering unit\n                // will average them for us, giving two samples for the price of one.\n                // This allows us to step in units of two texels per sample, rather\n                // than just one at a time. The 1.5 offset kicks things off by\n                // positioning us nicely in between two texels.\n                float sampleOffset = i * 2 + 1.5f;\n\n                Vector2 delta = new Vector2(dx, dy) * sampleOffset;\n\n                // Store texture coordinate offsets for the positive and negative taps.\n                m_sampleOffsets[i * 2 + 1] = delta;\n                m_sampleOffsets[i * 2 + 2] = -delta;\n            }\n\n            // Normalize the list of sample weightings, so they will always sum to one.\n            for (int i = 0; i < m_sampleWeights.Length; i++)\n            {\n                m_sampleWeights[i] /= totalWeights;\n            }\n\n            // Tell the effect about our new filter settings.\n            m_D3DEffect.SetValue(m_weightsParameter, m_sampleWeights);\n            m_D3DEffect.SetValue(m_offsetsParameter, m_sampleOffsets);\n        }\n\n        //  Evaluates a single point on the gaussian falloff curve.\n        //  Used for setting up the blur filter weightings.\n        float ComputeGaussian(float n)\n        {\n            float theta = BlurAmount;\n            return (float)((1.0 / Math.Sqrt(2 * Math.PI * theta)) * Math.Exp(-(n * n) / (2 * theta * theta)));\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Effects/MyEffectGodRays.cs",
    "content": "﻿using MinerWars.AppCode.Game.Utils;\nusing SharpDX.Direct3D9;\n\nnamespace MinerWars.AppCode.Game.Effects\n{\n    using Vector2 = MinerWarsMath.Vector2;\n    using Vector3 = MinerWarsMath.Vector3;\n    using Vector4 = MinerWarsMath.Vector4;\n    using Matrix = MinerWarsMath.Matrix;\n\n    class MyEffectGodRays : MyEffectBase\n    {\n        readonly EffectHandle m_diffuseTexture;\n        readonly EffectHandle m_depthTexture;\n        readonly EffectHandle m_halfPixel;\n        readonly EffectHandle m_frustumCorners;\n\n        readonly EffectHandle m_view;\n        readonly EffectHandle m_worldViewProjection;\n        readonly EffectHandle m_density;\n        readonly EffectHandle m_weight;\n        readonly EffectHandle m_decay;\n        readonly EffectHandle m_exposition;\n        readonly EffectHandle m_lightPosition;\n        readonly EffectHandle m_lightDirection;\n        readonly EffectHandle m_cameraPos;\n\n        public MyEffectGodRays()\n            : base(\"Effects2\\\\Fullscreen\\\\MyEffectGodRays\")\n        {\n            m_diffuseTexture = m_D3DEffect.GetParameter(null, \"frameTex\");\n            m_depthTexture = m_D3DEffect.GetParameter(null, \"depthTex\");\n            m_halfPixel = m_D3DEffect.GetParameter(null, \"HalfPixel\");\n            m_view = m_D3DEffect.GetParameter(null, \"View\");\n            m_worldViewProjection = m_D3DEffect.GetParameter(null, \"WorldViewProjection\");\n            m_density = m_D3DEffect.GetParameter(null, \"Density\");\n            m_weight = m_D3DEffect.GetParameter(null, \"Weight\");\n            m_decay = m_D3DEffect.GetParameter(null, \"Decay\");\n            m_exposition = m_D3DEffect.GetParameter(null, \"Exposition\");\n            m_lightPosition = m_D3DEffect.GetParameter(null, \"LightPosition\");\n            m_lightDirection = m_D3DEffect.GetParameter(null, \"LightDirection\");\n            m_cameraPos = m_D3DEffect.GetParameter(null, \"CameraPos\");\n            m_frustumCorners = m_D3DEffect.GetParameter(null, \"FrustumCorners\");\n        }\n\n        public void SetDiffuseTexture(Texture dt)\n        {\n            m_D3DEffect.SetTexture(m_diffuseTexture, dt);\n\n            SetHalfPixel(MyUtils.GetHalfPixel(dt.GetLevelDescription(0).Width, dt.GetLevelDescription(0).Height));\n        }\n\n        public void SetDepthTexture(Texture dt)\n        {\n            m_D3DEffect.SetTexture(m_depthTexture, dt);\n        }\n\n        void SetHalfPixel(Vector2 hf)\n        {\n            m_D3DEffect.SetValue(m_halfPixel, hf);\n        }\n\n        public void SetFrustumCorners(Vector3[] frustumCornersVS)\n        {\n            m_D3DEffect.SetValue(m_frustumCorners, frustumCornersVS);\n        }\n\n        public void SetView(Matrix matrix)\n        {\n            m_D3DEffect.SetValue(m_view, matrix);\n        }\n\n        public void SetWorldViewProjection(Matrix worldViewProjection)\n        {\n            m_D3DEffect.SetValue(m_worldViewProjection, worldViewProjection);\n        }\n\n        public void SetDensity(float density)\n        {\n            m_D3DEffect.SetValue(m_density, density);\n        }\n\n        public void SetWeight(float weight)\n        {\n            m_D3DEffect.SetValue(m_weight, weight);\n        }\n\n        public void SetDecay(float decay)\n        {\n            m_D3DEffect.SetValue(m_decay, decay);\n        }\n\n        public void SetExposition(float e)\n        {\n            m_D3DEffect.SetValue(m_exposition, e);\n        }\n\n        public void SetLightPosition(Vector3 pos)\n        {\n            m_D3DEffect.SetValue(m_lightPosition, pos);\n        }\n\n        public void SetLightDirection(Vector3 dir)\n        {\n            m_D3DEffect.SetValue(m_lightDirection, dir);\n        }\n\n        public void SetCameraPos(Vector3 pos)\n        {\n            m_D3DEffect.SetValue(m_cameraPos, pos);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Effects/MyEffectHDR.cs",
    "content": "﻿using SharpDX.Direct3D9;\n\nnamespace MinerWars.AppCode.Game.Effects\n{\n    class MyEffectHDR : MyEffectHDRBase\n    {\n        readonly EffectHandle m_bloomTexture;\n\n        public MyEffectHDR()\n            : base(\"Effects2\\\\HDR\\\\MyEffectHDR\")\n        {\n            m_bloomTexture = m_D3DEffect.GetParameter(null, \"BloomTexture\");\n        }\n\n        public void SetBloomTexture(Texture renderTarget2D)\n        {\n            m_D3DEffect.SetTexture(m_bloomTexture, renderTarget2D);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Effects/MyEffectHDRBase.cs",
    "content": "﻿using MinerWars.AppCode.Game.Utils;\nusing SharpDX.Direct3D9;\n\nnamespace MinerWars.AppCode.Game.Effects\n{\n    using Vector2 = MinerWarsMath.Vector2;\n    using Vector3 = MinerWarsMath.Vector3;\n    using Vector4 = MinerWarsMath.Vector4;\n    using Matrix = MinerWarsMath.Matrix;\n\n    abstract class MyEffectHDRBase : MyEffectBase\n    {\n        readonly protected EffectHandle m_sourceMod;\n        readonly protected EffectHandle m_sourceDiv;\n        readonly protected EffectHandle m_lumSource;\n        readonly protected EffectHandle m_halfPixel;\n        //readonly protected EffectHandle m_middleGrey;\n        readonly protected EffectHandle m_Exposure;\n\n        public MyEffectHDRBase(string asset)\n            : base(asset)\n        {\n            m_sourceMod = m_D3DEffect.GetParameter(null, \"SourceTexture\");\n            m_sourceDiv = m_D3DEffect.GetParameter(null, \"SourceTextureDiv\");\n            m_lumSource = m_D3DEffect.GetParameter(null, \"LumTexture\");\n            m_halfPixel = m_D3DEffect.GetParameter(null, \"HalfPixel\");\n            //m_middleGrey = m_xnaEffect.GetParameter(null, \"MiddleGrey\");\n            m_Exposure = m_D3DEffect.GetParameter(null, \"Exposure\");\n        }\n\n        public void SetSourceTextureMod(Texture renderTarget2D)\n        {\n            m_D3DEffect.SetTexture(m_sourceMod, renderTarget2D);\n        }\n\n        public void SetSourceTextureDiv(Texture renderTarget2D)\n        {\n            m_D3DEffect.SetTexture(m_sourceDiv, renderTarget2D);\n        }\n\n        public void SetLumTexture(Texture renderTarget2D)\n        {\n            m_D3DEffect.SetTexture(m_lumSource, renderTarget2D);\n        }\n\n        public void SetExposure(float exposure)\n        {\n            m_D3DEffect.SetValue(m_Exposure, exposure);\n        }\n\n        public void SetHalfPixel(int screenSizeX, int screenSizeY)\n        {\n            m_D3DEffect.SetValue(m_halfPixel, MyUtils.GetHalfPixel(screenSizeX, screenSizeY));\n        }\n\n        public void SetMiddleGrey(float middleGrey)\n        {\n            //m_D3DEffect.SetValue(m_middleGrey, middleGrey);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Effects/MyEffectHud.cs",
    "content": "﻿using SysUtils.Utils;\nusing SharpDX.Direct3D9;\n\nnamespace MinerWars.AppCode.Game.Effects\n{\n    using Vector2 = MinerWarsMath.Vector2;\n    using Vector3 = MinerWarsMath.Vector3;\n    using Vector4 = MinerWarsMath.Vector4;\n    using Matrix = MinerWarsMath.Matrix;\n\n    class MyEffectHud : MyEffectBase\n    {\n        readonly EffectHandle m_billboardTexture;\n        readonly EffectHandle m_projectionMatrix;\n\n        public MyEffectHud()\n            : base(\"Effects2\\\\HUD\\\\MyHudEffect\")\n        {\n            m_billboardTexture = m_D3DEffect.GetParameter(null, \"HudTexture\");\n            m_projectionMatrix = m_D3DEffect.GetParameter(null, \"ProjectionMatrix\");\n        }\n\n        public void SetBillboardTexture(Texture texture)\n        {\n            m_D3DEffect.SetTexture(m_billboardTexture, texture);\n        }\n\n        public void SetProjectionMatrix(Matrix matrix)\n        {\n            m_D3DEffect.SetValue(m_projectionMatrix, matrix);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Effects/MyEffectHudRadar.cs",
    "content": "﻿using SysUtils.Utils;\nusing SharpDX.Direct3D9;\n\nnamespace MinerWars.AppCode.Game.Effects\n{\n    using Vector2 = MinerWarsMath.Vector2;\n    using Vector3 = MinerWarsMath.Vector3;\n    using Vector4 = MinerWarsMath.Vector4;\n    using Matrix = MinerWarsMath.Matrix;\n\n    class MyEffectHudRadar : MyEffectBase\n    {\n        readonly EffectHandle m_billboardTexture;\n        readonly EffectHandle m_viewProjectionMatrix;\n\n        public MyEffectHudRadar()\n            : base(\"Effects2\\\\HUD\\\\MyHudRadarEffect\")\n        {\n            m_billboardTexture = m_D3DEffect.GetParameter(null, \"Texture\");\n           m_viewProjectionMatrix = m_D3DEffect.GetParameter(null, \"ViewProjectionMatrix\");\n        }\n\n        public void SetBillboardTexture(Texture texture)\n        {\n            m_D3DEffect.SetTexture(m_billboardTexture, texture);\n        }\n\n        public void SetViewProjectionMatrix(Matrix matrix)\n        {\n            m_D3DEffect.SetValue(m_viewProjectionMatrix, matrix);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Effects/MyEffectLuminance.cs",
    "content": "﻿using MinerWars.AppCode.Game.Utils;\nusing SharpDX.Direct3D9;\n\nnamespace MinerWars.AppCode.Game.Effects\n{\n    using Vector2 = MinerWarsMath.Vector2;\n    using Vector3 = MinerWarsMath.Vector3;\n    using Vector4 = MinerWarsMath.Vector4;\n    using Matrix = MinerWarsMath.Matrix;\n\n    class MyEffectLuminance: MyEffectHDRBase\n    {\n        readonly EffectHandle m_DT;\n        readonly EffectHandle m_Tau;\n        readonly EffectHandle m_MipLevel;\n        readonly EffectHandle m_SourceTexture2;\n        readonly EffectHandle m_luminance;\n        readonly EffectHandle m_calcAdaptedLuminance;\n        readonly EffectHandle m_luminanceMipmap;\n\n        public MyEffectLuminance()\n            : base(\"Effects2\\\\HDR\\\\MyEffectLuminance\")\n        {\n            m_DT = m_D3DEffect.GetParameter(null, \"DT\");\n            m_Tau = m_D3DEffect.GetParameter(null, \"Tau\");\n            m_MipLevel = m_D3DEffect.GetParameter(null, \"MipLevel\");\n            m_SourceTexture2 = m_D3DEffect.GetParameter(null, \"SourceTexture2\");\n            m_luminance = m_D3DEffect.GetTechnique(\"Luminance\");\n            m_calcAdaptedLuminance = m_D3DEffect.GetTechnique(\"CalcAdaptedLuminance\");\n            m_luminanceMipmap = m_D3DEffect.GetTechnique(\"LuminanceMipmap\");\n        }\n\n        public void SetDT(float dt)\n        {\n            m_D3DEffect.SetValue(m_halfPixel, dt);\n        }\n\n        public void SetMipLevel(int exponent)\n        {\n            m_D3DEffect.SetValue(m_MipLevel, (float)exponent);\n        }\n\n        public void SetTau(float tau)\n        {\n            m_D3DEffect.SetValue(m_Tau, tau);\n        }\n\n        public void SetSourceTexture2(Texture source)\n        {\n            m_D3DEffect.SetTexture(m_SourceTexture2, source);\n        }\n\n        public void SetTechniqueLuminance()\n        {\n            m_D3DEffect.Technique = m_luminance;\n        }\n\n        public void SetTechniqueAdaptedLuminance()\n        {\n            m_D3DEffect.Technique = m_calcAdaptedLuminance;\n        }\n\n        internal void SetTechniqueLuminanceMipmap()\n        {\n            m_D3DEffect.Technique = m_luminanceMipmap;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Effects/MyEffectModelsDNS.cs",
    "content": "﻿using MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Render;\nusing SharpDX.Direct3D9;\n\nnamespace MinerWars.AppCode.Game.Effects\n{\n    using Vector2 = MinerWarsMath.Vector2;\n    using Vector3 = MinerWarsMath.Vector3;\n    using Matrix = MinerWarsMath.Matrix;\n\n    class MyEffectModelsDNS : MyEffectBase\n    {\n        public enum MyEffectModelsDNSTechniqueEnum\n        {\n            Low,\n            //LowInstanced,\n            LowBlended,\n            LowMasked,\n\n            Normal,\n            //Normalnstanced,\n            NormalBlended,\n            NormalMasked,\n\n            High,\n            //HighInstanced,\n            HighBlended,\n            HighMasked,\n            //HighChannels,\n\n            Extreme,\n            //ExtremeInstanced,\n            ExtremeBlended,\n            ExtremeMasked,\n            //ExtremeChannels,\n\n            Holo,\n            HoloForward,\n            HoloIgnoreDepth,\n\n            Stencil,\n            StencilLow,\n\n            //StencilInstanced,\n            //StencilLowInstanced,\n\n            LowForward,\n            LowBlendedForward,\n        }\n\n        readonly EffectHandle m_viewMatrix;\n        readonly EffectHandle m_worldMatrix;\n        readonly EffectHandle m_projectionMatrix;\n        readonly EffectHandle m_textureDiffuse;\n        readonly EffectHandle m_textureNormal;\n        readonly EffectHandle m_emissivity;\n        readonly EffectHandle m_emissivityOffset;\n        readonly EffectHandle m_emissivityUVAnim;\n        readonly EffectHandle m_diffuseUVAnim;\n        readonly EffectHandle m_diffuseColor;\n        readonly EffectHandle m_specularIntensity;\n        readonly EffectHandle m_specularPower;\n        readonly EffectHandle m_highlightColor;\n\n        readonly EffectHandle m_depthTextureNear;\n        readonly EffectHandle m_depthTextureFar;\n        readonly EffectHandle m_halfPixel;\n        readonly EffectHandle m_scale;\n\n        //readonly EffectHandle m_maskTexture;\n        //readonly EffectHandle[] m_channelTexture;\n        //readonly EffectHandle[] m_channelIntensities;\n\n        public MyEffectDynamicLightingBase DynamicLights { get; private set; }\n        public MyEffectReflectorBase Reflector { get; private set; }\n\n        bool m_diffuseTextureSet = false;\n        bool m_normalTextureSet = false;\n        bool m_specularTextureSet = false;\n\n        //Techniques \n        EffectHandle m_lowTechnique;\n        //EffectHandle m_lowInstancedTechnique;\n        EffectHandle m_lowBlendedTechnique;\n        EffectHandle m_lowMaskedTechnique;\n\n        EffectHandle m_normalTechnique;\n        //EffectHandle m_normalInstancedTechnique;\n        EffectHandle m_normalBlendedTechnique;\n        EffectHandle m_normalMaskedTechnique;\n\n        EffectHandle m_highTechnique;\n        //EffectHandle m_highInstancedTechnique;\n        EffectHandle m_highBlendedTechnique;\n        EffectHandle m_highMaskedTechnique;\n        //EffectHandle m_highChannelsTechnique;\n\n        EffectHandle m_extremeTechnique;\n        //EffectHandle m_extremeInstancedTechnique;\n        EffectHandle m_extremeBlendedTechnique;\n        EffectHandle m_extremeMaskedTechnique;\n        //EffectHandle m_extremeChannelsTechnique;\n\n        EffectHandle m_holoTechnique;\n        EffectHandle m_holoForwardTechnique;\n        EffectHandle m_holoIgnoreDepthTechnique;\n\n        EffectHandle m_stencilTechnique;\n        EffectHandle m_stencilLowTechnique;\n\n        //EffectHandle m_stencilTechniqueInstanced;\n        //EffectHandle m_stencilLowTechniqueInstanced;\n\n        EffectHandle m_forwardTechnique;\n        EffectHandle m_lowBlendedForwardTechnique;\n\n\n        float m_emissivityLocal;\n        float m_emissivityOffsetLocal;\n        Vector2 m_emissivityUVAnimLocal;\n        Vector2 m_diffuseUVAnimLocal;\n        Vector3 m_diffuseColorLocal;\n        float m_specularIntensityLocal;\n        float m_specularPowerLocal;\n        Vector3 m_highlightColorLocal;\n        int m_screenSizeXLocal;\n        int m_screenSizeYLocal;\n        Vector2 m_scaleLocal;\n\n\n        public MyEffectModelsDNS()\n            : base(\"Effects2\\\\Models\\\\MyEffectModelsDNS\")\n        {\n            m_viewMatrix = m_D3DEffect.GetParameter(null, \"ViewMatrix\");\n            m_worldMatrix = m_D3DEffect.GetParameter(null, \"WorldMatrix\");\n            m_projectionMatrix = m_D3DEffect.GetParameter(null, \"ProjectionMatrix\");\n\n            m_textureDiffuse = m_D3DEffect.GetParameter(null, \"TextureDiffuse\");\n            m_textureNormal = m_D3DEffect.GetParameter(null, \"TextureNormal\");\n            m_diffuseColor = m_D3DEffect.GetParameter(null, \"DiffuseColor\");\n            m_emissivity = m_D3DEffect.GetParameter(null, \"Emissivity\");\n            m_emissivityOffset = m_D3DEffect.GetParameter(null, \"EmissivityOffset\");\n            m_emissivityUVAnim = m_D3DEffect.GetParameter(null, \"EmissivityUVAnim\");\n            m_diffuseUVAnim = m_D3DEffect.GetParameter(null, \"DiffuseUVAnim\");\n            m_specularIntensity = m_D3DEffect.GetParameter(null, \"SpecularIntensity\");\n            m_specularPower = m_D3DEffect.GetParameter(null, \"SpecularPower\");\n            m_highlightColor = m_D3DEffect.GetParameter(null, \"Highlight\");\n\n            m_depthTextureNear = m_D3DEffect.GetParameter(null, \"DepthTextureNear\");\n            m_depthTextureFar = m_D3DEffect.GetParameter(null, \"DepthTextureFar\");\n            m_halfPixel = m_D3DEffect.GetParameter(null, \"HalfPixel\");\n            m_scale = m_D3DEffect.GetParameter(null, \"Scale\");\n\n            m_lowTechnique = m_D3DEffect.GetTechnique(\"Technique_RenderQualityLow\");\n            //m_lowInstancedTechnique = m_xnaEffect.GetTechnique(\"Technique_RenderQualityLowInstanced\");\n            m_lowBlendedTechnique = m_D3DEffect.GetTechnique(\"Technique_RenderQualityLowBlended\");\n            m_lowMaskedTechnique = m_D3DEffect.GetTechnique(\"Technique_RenderQualityLowMasked\");\n\n            m_normalTechnique = m_D3DEffect.GetTechnique(\"Technique_RenderQualityNormal\");\n            //m_normalInstancedTechnique = m_xnaEffect.GetTechnique(\"Technique_RenderQualityNormalInstanced\");\n            m_normalBlendedTechnique = m_D3DEffect.GetTechnique(\"Technique_RenderQualityNormalBlended\");\n            m_normalMaskedTechnique = m_D3DEffect.GetTechnique(\"Technique_RenderQualityNormalMasked\");\n\n            m_highTechnique = m_D3DEffect.GetTechnique(\"Technique_RenderQualityHigh\");\n            //m_highInstancedTechnique = m_xnaEffect.GetTechnique(\"Technique_RenderQualityHighInstanced\");\n            m_highBlendedTechnique = m_D3DEffect.GetTechnique(\"Technique_RenderQualityHighBlended\");\n            m_highMaskedTechnique = m_D3DEffect.GetTechnique(\"Technique_RenderQualityHighMasked\");\n            //m_highChannelsTechnique = m_xnaEffect.GetTechnique(\"Technique_RenderQualityHighChannels\");\n\n            m_extremeTechnique = m_D3DEffect.GetTechnique(\"Technique_RenderQualityHigh\");\n            //m_extremeInstancedTechnique = m_xnaEffect.GetTechnique(\"Technique_RenderQualityExtremeInstanced\");\n            m_extremeBlendedTechnique = m_D3DEffect.GetTechnique(\"Technique_RenderQualityHighBlended\");\n            m_extremeMaskedTechnique = m_D3DEffect.GetTechnique(\"Technique_RenderQualityHighMasked\");\n            //m_extremeChannelsTechnique = m_xnaEffect.GetTechnique(\"Technique_RenderQualityHighChannels\");\n\n            m_holoTechnique = m_D3DEffect.GetTechnique(\"Technique_Holo\");\n            m_holoForwardTechnique = m_D3DEffect.GetTechnique(\"Technique_HoloForward\");\n            m_holoIgnoreDepthTechnique = m_D3DEffect.GetTechnique(\"Technique_Holo_IgnoreDepth\");\n\n            m_stencilTechnique = m_D3DEffect.GetTechnique(\"Technique_Stencil\");\n            m_stencilLowTechnique = m_D3DEffect.GetTechnique(\"Technique_StencilLow\");\n\n            //m_stencilTechniqueInstanced = m_xnaEffect.GetTechnique(\"Technique_StencilInstanced\");\n            //m_stencilLowTechniqueInstanced = m_xnaEffect.GetTechnique(\"Technique_StencilLowInstanced\");\n\n            m_forwardTechnique = m_D3DEffect.GetTechnique(\"Technique_RenderQualityLow_Forward\");\n            m_lowBlendedForwardTechnique = m_D3DEffect.GetTechnique(\"Technique_RenderQualityLowBlended_Forward\");\n\n            DynamicLights = new MyEffectDynamicLightingBase(m_D3DEffect);\n            Reflector = new MyEffectReflectorBase(m_D3DEffect);\n        }\n\n        public void SetWorldMatrix(Matrix worldMatrix)\n        {\n            m_D3DEffect.SetValue(m_worldMatrix, worldMatrix);\n        }\n\n        public override void SetViewMatrix(ref Matrix viewMatrix)\n        {\n            m_D3DEffect.SetValue(m_viewMatrix, viewMatrix);\n        }\n\n        public override void SetProjectionMatrix(ref Matrix projectionMatrix)\n        {\n            m_D3DEffect.SetValue(m_projectionMatrix, projectionMatrix);\n        }\n\n        public override void SetTextureDiffuse(Texture texture2D)\n        {\n            m_D3DEffect.SetTexture(m_textureDiffuse, texture2D);\n            m_diffuseTextureSet = texture2D != null;\n        }\n\n        public override void SetTextureNormal(Texture texture2D)\n        {\n            m_D3DEffect.SetTexture(m_textureNormal, texture2D);\n            m_normalTextureSet = texture2D != null;\n        }\n\n        public override bool IsTextureDiffuseSet()\n        {\n            return m_diffuseTextureSet;\n        }\n\n        public override bool IsTextureSpecularSet()\n        {\n            return m_specularTextureSet;\n        }\n\n        public override bool IsTextureNormalSet()\n        {\n            return m_normalTextureSet;\n        }\n\n        public override void SetDiffuseColor(Vector3 diffuseColor)\n        {\n            m_D3DEffect.SetValue(m_diffuseColor, diffuseColor);\n        }\n        public override void SetEmissivity(float emissivity)\n        {\n            if (m_emissivityLocal != emissivity)\n            {\n                m_D3DEffect.SetValue(m_emissivity, emissivity);\n                m_emissivityLocal = emissivity;\n            }\n        }\n        public override void SetEmissivityOffset(float emissivityOffset)\n        {\n            if (m_emissivityOffsetLocal != emissivityOffset)\n            {\n                m_D3DEffect.SetValue(m_emissivityOffset, emissivityOffset);\n                m_emissivityOffsetLocal = emissivityOffset;\n            }\n        }\n        public override void SetEmissivityUVAnim(Vector2 uvAnim) \n        {\n            if (m_emissivityUVAnimLocal != uvAnim)\n            {\n                m_D3DEffect.SetValue(m_emissivityUVAnim, uvAnim);\n                m_emissivityUVAnimLocal = uvAnim;\n            }\n        }\n\n        public override void SetDiffuseUVAnim(Vector2 uvAnim)\n        {\n            if (m_diffuseUVAnimLocal != uvAnim)\n            {\n                m_D3DEffect.SetValue(m_diffuseUVAnim, uvAnim);\n                m_diffuseUVAnimLocal = uvAnim;\n            }\n        }\n\n\n        public override void SetSpecularIntensity(float specularIntensity)\n        {\n            if (m_specularIntensityLocal != specularIntensity)\n            {\n                m_D3DEffect.SetValue(m_specularIntensity, specularIntensity);\n                m_specularIntensityLocal = specularIntensity;\n            }\n        }\n        public override void SetSpecularPower(float specularPower)\n        {\n            if (m_specularPowerLocal != specularPower)\n            {\n                m_D3DEffect.SetValue(m_specularPower, specularPower);\n                m_specularPowerLocal = specularPower;\n            }\n        }\n\n        public override void SetHighlightColor(Vector3 highlightColor)\n        {\n            if (m_highlightColorLocal != highlightColor)\n            {\n                m_D3DEffect.SetValue(m_highlightColor, highlightColor);\n                m_highlightColorLocal = highlightColor;\n            }\n        }\n\n        public void SetDepthTextureNear(Texture depthTextureNear)\n        {\n            m_D3DEffect.SetTexture(m_depthTextureNear, depthTextureNear);\n        }\n\n        public void SetDepthTextureFar(Texture depthTextureFar)\n        {\n            m_D3DEffect.SetTexture(m_depthTextureFar, depthTextureFar);\n        }\n\n        public void SetHalfPixel(int screenSizeX, int screenSizeY)\n        {\n            if (m_screenSizeXLocal != screenSizeX || m_screenSizeYLocal != screenSizeY)\n            {\n                m_D3DEffect.SetValue(m_halfPixel, MyUtils.GetHalfPixel(screenSizeX, screenSizeY));\n                m_screenSizeXLocal = screenSizeX;\n                m_screenSizeYLocal = screenSizeY;\n            }\n        }\n\n        public void SetScale(Vector2 scale)\n        {\n            if (m_scaleLocal != scale)\n            {\n                m_D3DEffect.SetValue(m_scale, scale);\n                m_scaleLocal = scale;\n            }\n        }\n\n\n        public void SetTechnique(MyEffectModelsDNSTechniqueEnum technique)\n        {\n            if (MyRenderConstants.RenderQualityProfile.ForwardRender)\n            {\n                switch (technique)\n                {\n                    case MyEffectModelsDNSTechniqueEnum.Holo:\n                    case MyEffectModelsDNSTechniqueEnum.HoloIgnoreDepth:\n                        m_D3DEffect.Technique = m_holoForwardTechnique;\n                        return;\n                        break;\n                    case MyEffectModelsDNSTechniqueEnum.Low:\n                    case MyEffectModelsDNSTechniqueEnum.LowMasked:\n                        m_D3DEffect.Technique = m_forwardTechnique;\n                        return;\n                        break;\n                }\n            }\n\n            switch (technique)\n            {\n                case MyEffectModelsDNSTechniqueEnum.Low:\n                case MyEffectModelsDNSTechniqueEnum.LowBlended:\n                    m_D3DEffect.Technique = m_lowTechnique;\n                    break;\n                //case MyEffectModelsDNSTechniqueEnum.LowInstanced:\n                //    m_xnaEffect.Technique = m_lowInstancedTechnique;\n                //    break;\n                //case MyEffectModelsDNSTechniqueEnum.LowBlended:\n                    //m_xnaEffect.Technique = m_lowBlendedTechnique;\n                   // break;\n                case MyEffectModelsDNSTechniqueEnum.LowMasked:\n                    m_D3DEffect.Technique = m_lowMaskedTechnique;\n                    break;\n\n                case MyEffectModelsDNSTechniqueEnum.Normal:\n                    m_D3DEffect.Technique = m_normalTechnique;\n                    break;\n                //case MyEffectModelsDNSTechniqueEnum.Normalnstanced:\n                    //m_xnaEffect.Technique = m_normalInstancedTechnique;\n                  //  break;\n                case MyEffectModelsDNSTechniqueEnum.NormalBlended:\n                    m_D3DEffect.Technique = m_normalBlendedTechnique;\n                    break;\n                case MyEffectModelsDNSTechniqueEnum.NormalMasked:\n                    m_D3DEffect.Technique = m_normalMaskedTechnique;\n                    break;\n\n                case MyEffectModelsDNSTechniqueEnum.High:\n                    m_D3DEffect.Technique = m_highTechnique;\n                    break;\n                //case MyEffectModelsDNSTechniqueEnum.HighInstanced:\n                  //  m_xnaEffect.Technique = m_highInstancedTechnique;\n                  //  break;\n                case MyEffectModelsDNSTechniqueEnum.HighBlended:\n                    m_D3DEffect.Technique = m_highBlendedTechnique;\n                    break;\n                case MyEffectModelsDNSTechniqueEnum.HighMasked:\n                    m_D3DEffect.Technique = m_highMaskedTechnique;\n                    break;                         /*\n                case MyEffectModelsDNSTechniqueEnum.HighChannels:\n                    m_xnaEffect.Technique = m_highChannelsTechnique;\n                    break;                           */\n\n                case MyEffectModelsDNSTechniqueEnum.Extreme:\n                    m_D3DEffect.Technique = m_extremeTechnique;\n                    break;\n                //case MyEffectModelsDNSTechniqueEnum.ExtremeInstanced:\n                 //   m_xnaEffect.Technique = m_extremeInstancedTechnique;\n                   // break;\n                case MyEffectModelsDNSTechniqueEnum.ExtremeBlended:\n                    m_D3DEffect.Technique = m_extremeBlendedTechnique;\n                    break;\n                case MyEffectModelsDNSTechniqueEnum.ExtremeMasked:\n                    m_D3DEffect.Technique = m_extremeMaskedTechnique;\n                    break;                             /*\n                case MyEffectModelsDNSTechniqueEnum.ExtremeChannels:\n                    m_xnaEffect.Technique = m_extremeChannelsTechnique;\n                    break;                               */\n\n                case MyEffectModelsDNSTechniqueEnum.Holo:\n                    m_D3DEffect.Technique = m_holoTechnique;\n                    break;\n                case MyEffectModelsDNSTechniqueEnum.HoloIgnoreDepth:\n                    m_D3DEffect.Technique = m_holoIgnoreDepthTechnique;\n                    break;\n\n                case MyEffectModelsDNSTechniqueEnum.Stencil:\n                    m_D3DEffect.Technique = m_stencilTechnique;\n                    break;\n                case MyEffectModelsDNSTechniqueEnum.StencilLow:\n                    m_D3DEffect.Technique = m_stencilLowTechnique;\n                    break;\n                /*\n                case MyEffectModelsDNSTechniqueEnum.StencilInstanced:\n                    m_xnaEffect.Technique = m_stencilTechniqueInstanced;\n                    break;\n                case MyEffectModelsDNSTechniqueEnum.StencilLowInstanced:\n                    m_xnaEffect.Technique = m_stencilLowTechniqueInstanced;\n                    break;\n                  */\n                case MyEffectModelsDNSTechniqueEnum.LowForward:\n                    m_D3DEffect.Technique = m_forwardTechnique;\n                    break;\n\n                case MyEffectModelsDNSTechniqueEnum.LowBlendedForward:\n                    m_D3DEffect.Technique = m_lowBlendedForwardTechnique;\n                    break;\n            }\n        }\n\n\n\n        public override void Begin(int pass, FX fx)\n        {       /*\n            if (UseChannels && m_maskTexture != null)\n            {\n                SetTechnique(MyRenderConstants.RenderQualityProfile.ModelsChannelsTechnique);\n            }\n            else  */\n            //{\n                //SetTechnique(MyRenderConstants.RenderQualityProfile.ModelsRenderTechnique);\n            //}\n\n                base.Begin(pass);\n        }\n\n\n        public void BeginBlended()\n        {\n            SetTechnique(MyRenderConstants.RenderQualityProfile.ModelsBlendedRenderTechnique);\n        }\n\n        public void ApplyHolo(bool ignoreDepth)\n        {\n            if (!ignoreDepth)\n                SetTechnique(MyRenderConstants.RenderQualityProfile.ModelsHoloRenderTechnique);\n            else\n                SetTechnique(MyEffectModelsDNSTechniqueEnum.HoloIgnoreDepth);\n        }\n\n\n        public void ApplyMasked()\n        {\n            SetTechnique(MyRenderConstants.RenderQualityProfile.ModelsMaskedRenderTechnique);\n        }\n\n        public void ApplyStencil()\n        {\n            SetTechnique(MyRenderConstants.RenderQualityProfile.ModelsStencilTechnique);\n        }\n\n        public override void Dispose()\n        {\n            DynamicLights.Dispose();\n            Reflector.Dispose();\n            base.Dispose();\n        }\n    }\n\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Effects/MyEffectModelsDiffuse.cs",
    "content": "﻿using MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Render;\nusing SharpDX.Direct3D9;\n\nnamespace MinerWars.AppCode.Game.Effects\n{\n    using Vector2 = MinerWarsMath.Vector2;\n    using Vector3 = MinerWarsMath.Vector3;\n    using Vector4 = MinerWarsMath.Vector4;\n    using Matrix = MinerWarsMath.Matrix;\n\n    class MyEffectModelsDiffuse : MyEffectBase\n    {\n        public enum Technique\n        {\n            PositionColor,\n            Position,\n        }\n\n        readonly EffectHandle m_viewMatrix;\n        readonly EffectHandle m_worldMatrix;\n        readonly EffectHandle m_projectionMatrix;\n        readonly EffectHandle m_diffuseColor;\n        \n        readonly EffectHandle m_positionColorTechnique;\n        readonly EffectHandle m_positionTechnique;\n\n\n        public MyEffectModelsDiffuse()\n            : base(\"Effects2\\\\Models\\\\MyEffectModelsDiffuse\")\n        {\n            m_viewMatrix = m_D3DEffect.GetParameter(null, \"ViewMatrix\");\n            m_worldMatrix = m_D3DEffect.GetParameter(null, \"WorldMatrix\");\n            m_projectionMatrix = m_D3DEffect.GetParameter(null, \"ProjectionMatrix\");\n\n            m_diffuseColor = m_D3DEffect.GetParameter(null, \"DiffuseColor\");\n\n            m_positionColorTechnique = m_D3DEffect.GetTechnique(\"Technique_PositionColor\");\n            m_positionTechnique = m_D3DEffect.GetTechnique(\"Technique_Position\");\n        }\n\n        public void SetWorldMatrix(Matrix worldMatrix)\n        {\n            m_D3DEffect.SetValue(m_worldMatrix, worldMatrix);\n        }\n\n        public override void SetViewMatrix(ref Matrix viewMatrix)\n        {\n            m_D3DEffect.SetValue(m_viewMatrix, viewMatrix);\n        }\n\n        public void SetViewMatrix(Matrix viewMatrix)\n        {\n            m_D3DEffect.SetValue(m_viewMatrix, viewMatrix);\n        }\n\n        public override void SetProjectionMatrix(ref Matrix projectionMatrix)\n        {\n            m_D3DEffect.SetValue(m_projectionMatrix, projectionMatrix);\n        }\n\n        public void SetProjectionMatrix(Matrix projectionMatrix)\n        {\n            m_D3DEffect.SetValue(m_projectionMatrix, projectionMatrix);\n        }\n\n        public override void SetDiffuseColor(Vector3 diffuseColor)\n        {\n            m_D3DEffect.SetValue(m_diffuseColor, new MinerWarsMath.Vector4(diffuseColor.X, diffuseColor.Y, diffuseColor.Z, 1));\n        }\n\n        public void SetDiffuseColor(Vector4 diffuseColor)\n        {\n            m_D3DEffect.SetValue(m_diffuseColor, new MinerWarsMath.Vector4(diffuseColor.X, diffuseColor.Y, diffuseColor.Z, diffuseColor.W));\n        }\n\n        public void SetTechnique(Technique technique)\n        {\n            switch (technique)\n            {\n                case Technique.PositionColor:\n                    m_D3DEffect.Technique = m_positionColorTechnique;\n                    break;\n                case Technique.Position:\n                    m_D3DEffect.Technique = m_positionTechnique;\n                    break;\n\n                default:\n                    System.Diagnostics.Debug.Assert(false);\n                    break;\n            }\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Effects/MyEffectOcclusionQueryDraw.cs",
    "content": "﻿using MinerWars.AppCode.Game.Utils;\nusing SharpDX.Direct3D9;\n\nnamespace MinerWars.AppCode.Game.Effects\n{\n    using Vector2 = MinerWarsMath.Vector2;\n    using Matrix = MinerWarsMath.Matrix;\n\n    class MyEffectOcclusionQueryDraw : MyEffectBase\n    {\n        public enum Technique\n        {\n            DepthTestEnabled,\n            DepthTestDisabled,\n            DepthTestEnabledNonMRT,\n            DepthTestDisabledNonMRT,\n        }\n\n        readonly EffectHandle m_depthTestTechnique;\n        readonly EffectHandle m_noDepthTestTechnique;\n        readonly EffectHandle m_depthTestTechniqueNonMRT;\n        readonly EffectHandle m_noDepthTestTechniqueNonMRT;\n\n        readonly EffectHandle m_viewMatrix;\n        readonly EffectHandle m_worldMatrix;\n        readonly EffectHandle m_projectionMatrix;\n\n        readonly EffectHandle m_depthRT;\n        readonly EffectHandle m_halfPixel;\n        readonly EffectHandle m_scale;\n\n        public MyEffectOcclusionQueryDraw()\n            : base(\"Effects2\\\\Models\\\\MyEffectOcclusionQueryDraw\")\n        {\n            m_depthTestTechnique = m_D3DEffect.GetTechnique(\"EnableDepthTest\");\n            m_noDepthTestTechnique = m_D3DEffect.GetTechnique(\"DisableDepthTest\");\n            m_depthTestTechniqueNonMRT = m_D3DEffect.GetTechnique(\"EnableDepthTestNonMRT\");\n            m_noDepthTestTechniqueNonMRT = m_D3DEffect.GetTechnique(\"DisableDepthTestNonMRT\");\n\n            m_viewMatrix = m_D3DEffect.GetParameter(null, \"ViewMatrix\");\n            m_worldMatrix = m_D3DEffect.GetParameter(null, \"WorldMatrix\");\n            m_projectionMatrix = m_D3DEffect.GetParameter(null, \"ProjectionMatrix\");\n\n            m_depthRT = m_D3DEffect.GetParameter(null, \"DepthsRT\");\n            m_halfPixel = m_D3DEffect.GetParameter(null, \"HalfPixel\");\n            m_scale = m_D3DEffect.GetParameter(null, \"Scale\");\n        }\n\n        public void SetWorldMatrix(Matrix worldMatrix)\n        {\n            m_D3DEffect.SetValue(m_worldMatrix, worldMatrix);\n        }\n\n        public void SetViewMatrix(Matrix viewMatrix)\n        {\n            m_D3DEffect.SetValue(m_viewMatrix, viewMatrix);\n        }\n\n        public void SetProjectionMatrix(Matrix projectionMatrix)\n        {\n            m_D3DEffect.SetValue(m_projectionMatrix, projectionMatrix);\n        }\n\n        public Effect GetEffect()\n        {\n            return m_D3DEffect;\n        }\n\n        public void SetDepthRT(Texture depthRT)\n        {\n            m_D3DEffect.SetTexture(m_depthRT, depthRT);\n            m_D3DEffect.SetValue(m_halfPixel, MyUtils.GetHalfPixel(depthRT.GetLevelDescription(0).Width, depthRT.GetLevelDescription(0).Height));\n        }\n\n        public void SetScale(Vector2 scale)\n        {\n            m_D3DEffect.SetValue(m_scale, scale);\n        }\n\n        public void SetTechnique(Technique technique)\n        {\n            switch (technique)\n            {\n                case Technique.DepthTestEnabled:\n                    m_D3DEffect.Technique = m_depthTestTechnique;\n                    break;\n\n                case Technique.DepthTestDisabled:\n                    m_D3DEffect.Technique = m_noDepthTestTechnique;\n                    break;\n\n                case Technique.DepthTestEnabledNonMRT:\n                    m_D3DEffect.Technique = m_depthTestTechniqueNonMRT;\n                    break;\n\n                case Technique.DepthTestDisabledNonMRT:\n                    m_D3DEffect.Technique = m_noDepthTestTechniqueNonMRT;\n                    break;\n            }\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Effects/MyEffectRenderGizmo.cs",
    "content": "﻿using SharpDX.Direct3D9;\n\nnamespace MinerWars.AppCode.Game.Effects\n{\n    using Vector2 = MinerWarsMath.Vector2;\n    using Vector3 = MinerWarsMath.Vector3;\n    using Vector4 = MinerWarsMath.Vector4;\n    using Matrix = MinerWarsMath.Matrix;\n\n    class MyEffectRenderGizmo : MyEffectBase\n    {\n        readonly EffectHandle m_worldViewProjectionMatrix;\n        readonly EffectHandle m_textureDiffuse;\n        readonly EffectHandle m_diffuseColor;\n        readonly EffectHandle m_technique_RenderGizmo;\n\n        public MyEffectRenderGizmo()\n            : base(\"Effects2\\\\Models\\\\MyEffectRenderGizmo\")\n        {\n            m_worldViewProjectionMatrix = m_D3DEffect.GetParameter(null, \"WorldViewProjectionMatrix\");\n            m_textureDiffuse = m_D3DEffect.GetParameter(null, \"TextureDiffuse\");\n            m_diffuseColor = m_D3DEffect.GetParameter(null, \"DiffuseColor\");\n            m_technique_RenderGizmo = m_D3DEffect.GetTechnique(\"Technique_RenderGizmo\");\n        }\n\n        public void SetWorldViewProjectionMatrix(Matrix projectionMatrix)\n        {\n            m_D3DEffect.SetValue(m_worldViewProjectionMatrix, projectionMatrix);\n        }\n\n        public override void SetTextureDiffuse(Texture texture2D)\n        {\n            if (texture2D == null && Render.MyRender.CheckDiffuseTextures)\n                m_D3DEffect.SetTexture(m_textureDiffuse, (Texture)Render.MyRender.GetDebugTexture());\n            else\n                m_D3DEffect.SetTexture(m_textureDiffuse, texture2D);\n        }\n\n        public override void SetDiffuseColor(Vector3 diffuseColor)\n        {\n            m_D3DEffect.SetValue(m_diffuseColor, diffuseColor); \n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Effects/MyEffectScale.cs",
    "content": "﻿using SharpDX.Direct3D9;\n\nnamespace MinerWars.AppCode.Game.Effects\n{\n    using Vector2 = MinerWarsMath.Vector2;\n    using Vector3 = MinerWarsMath.Vector3;\n    using Vector4 = MinerWarsMath.Vector4;\n    using Matrix = MinerWarsMath.Matrix;\n\n    class MyEffectScale: MyEffectHDRBase\n    {\n        public enum Technique\n        {\n            HWScale,\n            HWScalePrefabPreviews,\n            Downscale4,\n            Downscale8,\n        }\n\n        readonly EffectHandle m_sourceDimensions;\n        readonly EffectHandle m_scale;\n        //readonly EffectHandle m_downscale;\n        //readonly EffectHandle m_downscaleLuminance;\n        readonly EffectHandle m_HWScale;\n        readonly EffectHandle m_HWScalePrefabPreviews;\n        readonly EffectHandle m_downscale8;\n        readonly EffectHandle m_downscale4;\n        \n        public MyEffectScale()\n            : base(\"Effects2\\\\HDR\\\\MyEffectScale\")\n        {\n            m_sourceDimensions = m_D3DEffect.GetParameter(null, \"SourceDimensions\");\n            m_scale = m_D3DEffect.GetParameter(null, \"Scale\");\n            //m_downscale = m_xnaEffect.GetTechnique(\"Downscale\"];\n            //m_downscaleLuminance = m_xnaEffect.Technique = m_xnaEffect.GetTechnique(\"DownscaleLuminance\"];\n            m_HWScale = m_D3DEffect.Technique = m_D3DEffect.GetTechnique(\"HWScale\");\n            m_HWScalePrefabPreviews = m_D3DEffect.Technique = m_D3DEffect.GetTechnique(\"HWScalePrefabPreviews\");\n            m_downscale8 = m_D3DEffect.Technique = m_D3DEffect.GetTechnique(\"Downscale8\");\n            m_downscale4 = m_D3DEffect.Technique = m_D3DEffect.GetTechnique(\"Downscale4\");\n        }\n\n        public void SetSourceDimensions(int width, int height)\n        {\n            m_D3DEffect.SetValue(m_sourceDimensions, new Vector2(width, height));\n        }\n\n        public void SetScale(Vector2 scale)\n        {\n            m_D3DEffect.SetValue(m_scale, scale);\n        }\n\n        public void SetTechnique(Technique technique)\n        {\n            switch (technique)\n            {\n                case Technique.HWScale:\n                    m_D3DEffect.Technique = m_HWScale;\n                    break;\n\n                case Technique.HWScalePrefabPreviews:\n                    m_D3DEffect.Technique = m_HWScalePrefabPreviews;\n                    break;\n\n                case Technique.Downscale4:\n                    m_D3DEffect.Technique = m_downscale4;\n                    break;\n\n                case Technique.Downscale8:\n                    m_D3DEffect.Technique = m_downscale8;\n                    break;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Effects/MyEffectScreenshot.cs",
    "content": "﻿using MinerWars.AppCode.Game.Utils;\nusing SysUtils.Utils;\nusing SharpDX.Direct3D9;\n\nnamespace MinerWars.AppCode.Game.Effects\n{\n    using Vector2 = MinerWarsMath.Vector2;\n    using Vector3 = MinerWarsMath.Vector3;\n    using Vector4 = MinerWarsMath.Vector4;\n    using Matrix = MinerWarsMath.Matrix;\n\n    class MyEffectScreenshot: MyEffectBase\n    {\n        public enum ScreenshotTechniqueEnum\n        {\n            Default,\n            Color,\n            HDR,\n            Alpha,\n            DepthToAlpha,\n            LinearScale,\n        }\n\n        readonly EffectHandle m_source;\n        readonly EffectHandle m_halfPixel;\n        readonly EffectHandle m_scale;\n\n        readonly EffectHandle m_defaultTechnique;\n        readonly EffectHandle m_colorTechnique;\n        readonly EffectHandle m_alphaTechnique;\n        readonly EffectHandle m_hdrTechnique;\n        readonly EffectHandle m_depthToAlpha;\n        readonly EffectHandle m_linearTechnique;\n\n        public MyEffectScreenshot()\n            : base(\"Effects2\\\\Fullscreen\\\\MyEffectScreenshot\")\n        {\n            m_source = m_D3DEffect.GetParameter(null, \"SourceTexture\");\n            m_halfPixel = m_D3DEffect.GetParameter(null, \"HalfPixel\");\n            m_scale = m_D3DEffect.GetParameter(null, \"Scale\");\n\n            m_defaultTechnique = m_D3DEffect.GetTechnique(\"BasicTechnique\");\n            m_colorTechnique = m_D3DEffect.GetTechnique(\"ColorTechnique\");\n            m_alphaTechnique = m_D3DEffect.GetTechnique(\"AlphaTechnique\");\n            m_hdrTechnique = m_D3DEffect.GetTechnique(\"HDRTechnique\");\n            m_depthToAlpha = m_D3DEffect.GetTechnique(\"DepthToAlphaTechnique\");\n            m_linearTechnique = m_D3DEffect.GetTechnique(\"LinearTechnique\");\n        }\n\n        public void SetSourceTexture(Texture renderTarget2D)\n        {\n            m_D3DEffect.SetTexture(m_source, renderTarget2D);\n            m_D3DEffect.SetValue(m_halfPixel, MyUtils.GetHalfPixel(renderTarget2D.GetLevelDescription(0).Width, renderTarget2D.GetLevelDescription(0).Height));\n        }\n\n        public void SetScale(Vector2 scale)\n        {\n            m_D3DEffect.SetValue(m_scale, scale);\n        }\n\n        public void SetTechnique(ScreenshotTechniqueEnum technique)\n        {\n            switch (technique)\n            {\n                case ScreenshotTechniqueEnum.Default:\n                    m_D3DEffect.Technique = m_defaultTechnique;\n                    break;\n\n                case ScreenshotTechniqueEnum.Color:\n                    m_D3DEffect.Technique = m_colorTechnique;\n                    break;\n\n                case ScreenshotTechniqueEnum.HDR:\n                    m_D3DEffect.Technique = m_hdrTechnique;\n                    break;\n\n                case ScreenshotTechniqueEnum.Alpha:\n                    m_D3DEffect.Technique = m_alphaTechnique;\n                    break;\n\n                case ScreenshotTechniqueEnum.DepthToAlpha:\n                    m_D3DEffect.Technique = m_depthToAlpha;\n                    break;\n\n                case ScreenshotTechniqueEnum.LinearScale:\n                    m_D3DEffect.Technique = m_linearTechnique;\n                    break;\n\n                default:\n                    throw new MyMwcExceptionApplicationShouldNotGetHere();\n            }\n        }\n        \n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Effects/MyEffectShadowMap.cs",
    "content": "﻿using MinerWars.AppCode.Game.Utils;\n\nusing SharpDX.Direct3D9;\n\nnamespace MinerWars.AppCode.Game.Effects\n{\n    using Vector2 = MinerWarsMath.Vector2;\n    using Vector3 = MinerWarsMath.Vector3;\n    using Matrix = MinerWarsMath.Matrix;\n\n    class MyEffectShadowMap : MyEffectBase\n    {\n        public enum ShadowTechnique\n        {\n            PCF2x2 = 0,\n            PCF3x3 = 1,\n            PCF5x5 = 2,\n            PCF7x7 = 3,\n            GenerateShadow,\n            GenerateShadowForVoxels,\n            GenerateShadowInstanced,\n            GenerateShadowForVoxelsInstanced,\n            Clear,\n        }\n\n        readonly EffectHandle m_bias;\n        readonly EffectHandle m_invViewMatrix;\n        readonly EffectHandle m_lightViewProjMatrices;\n        readonly EffectHandle m_frustumCornersVS;\n        readonly EffectHandle m_clipPlanes;\n        readonly EffectHandle m_shadowMap;\n        readonly EffectHandle m_depthTexture;\n        readonly EffectHandle m_shadowTermHalfPixel;\n        readonly EffectHandle m_shadowMapSize;\n        readonly EffectHandle m_showSplitColors;\n        readonly EffectHandle m_halfPixel;\n        readonly EffectHandle m_worldMatrix;\n        readonly EffectHandle m_viewProjMatrix;\n\n        readonly EffectHandle m_createShadowTerm2x2;\n        readonly EffectHandle m_createShadowTerm3x3;\n        readonly EffectHandle m_createShadowTerm5x5;\n        readonly EffectHandle m_createShadowTerm7x7;\n        readonly EffectHandle m_generateShadowMap;\n        readonly EffectHandle m_generateVoxelShadowMap;\n        readonly EffectHandle m_generateShadowMapInstanced;\n        readonly EffectHandle m_generateVoxelShadowMapInstanced;\n\n        readonly EffectHandle m_clearTechnique;\n\n        public MyEffectShadowMap()\n            : base(\"Effects2\\\\Shadows\\\\MyEffectShadowMap\")\n        {\n            m_bias = m_D3DEffect.GetParameter(null, \"ShadowBias\");\n            m_invViewMatrix = m_D3DEffect.GetParameter(null, \"InvViewMatrix\");\n            m_lightViewProjMatrices = m_D3DEffect.GetParameter(null, \"LightViewProjMatrices\");\n            m_frustumCornersVS = m_D3DEffect.GetParameter(null, \"FrustumCornersVS\");\n            m_clipPlanes = m_D3DEffect.GetParameter(null, \"ClipPlanes\");\n            m_shadowMap = m_D3DEffect.GetParameter(null, \"ShadowMap\");\n            m_depthTexture = m_D3DEffect.GetParameter(null, \"DepthTexture\");\n            m_shadowTermHalfPixel = m_D3DEffect.GetParameter(null, \"ShadowTermHalfPixel\");\n            m_shadowMapSize = m_D3DEffect.GetParameter(null, \"ShadowMapSize\");\n            m_showSplitColors = m_D3DEffect.GetParameter(null, \"ShowSplitColors\");\n            m_halfPixel = m_D3DEffect.GetParameter(null, \"HalfPixel\");\n            m_worldMatrix = m_D3DEffect.GetParameter(null, \"WorldMatrix\");\n            m_viewProjMatrix = m_D3DEffect.GetParameter(null, \"ViewProjMatrix\");\n\n            m_createShadowTerm2x2 = m_D3DEffect.GetTechnique(\"CreateShadowTerm2x2PCF\");\n            m_createShadowTerm3x3 = m_D3DEffect.GetTechnique(\"CreateShadowTerm3x3PCF\");\n            m_createShadowTerm5x5 = m_D3DEffect.GetTechnique(\"CreateShadowTerm5x5PCF\");\n            m_createShadowTerm7x7 = m_D3DEffect.GetTechnique(\"CreateShadowTerm7x7PCF\");\n            m_generateShadowMap = m_D3DEffect.GetTechnique(\"GenerateShadowMap\");\n            m_generateVoxelShadowMap = m_D3DEffect.GetTechnique(\"GenerateVoxelShadowMap\");\n            m_clearTechnique = m_D3DEffect.GetTechnique(\"Clear\");\n\n            m_generateShadowMapInstanced = m_D3DEffect.GetTechnique(\"GenerateShadowMapInstanced\");\n            m_generateVoxelShadowMapInstanced = m_D3DEffect.GetTechnique(\"GenerateVoxelShadowMapInstanced\");\n        }\n\n        public void SetInvViewMatrix(Matrix matrix)\n        {\n            m_D3DEffect.SetValue(m_invViewMatrix, matrix);\n        }\n\n        public void SetLightViewProjMatrices(ref Matrix[] matrices)\n        {\n            m_D3DEffect.SetValue(m_lightViewProjMatrices, matrices);\n        }\n\n        public void SetFrustumCornersVS(ref Vector3[] frustumCornersVS)\n        {\n            m_D3DEffect.SetValue(m_frustumCornersVS, frustumCornersVS);\n        }\n\n        public void SetClipPlanes(ref Vector2[] clipPlanes)\n        {\n            m_D3DEffect.SetValue(m_clipPlanes, clipPlanes);\n        }\n\n        public void SetShadowMap(Texture texture)\n        {\n            m_D3DEffect.SetTexture(m_shadowMap, texture);\n        }\n\n        public void SetDepthTexture(Texture texture)\n        {\n            m_D3DEffect.SetTexture(m_depthTexture, texture);\n        }\n\n        public void SetShadowTermHalfPixel(int width, int height)\n        {\n            m_D3DEffect.SetValue(m_shadowTermHalfPixel, MyUtils.GetHalfPixel(width, height));\n        }\n\n        public void SetShadowMapSize(int width, int height)\n        {\n            m_D3DEffect.SetValue(m_shadowMapSize, new Vector2(width, height));\n        }\n\n        public void SetShowSplitColors(bool show)\n        {\n            m_D3DEffect.SetValue(m_showSplitColors, show);\n        }\n\n        public void SetHalfPixel(int width, int height)\n        {\n            m_D3DEffect.SetValue(m_halfPixel, MyUtils.GetHalfPixel(width, height));\n        }\n\n        public void SetWorldMatrix(Matrix matrix)\n        {\n            m_D3DEffect.SetValue(m_worldMatrix, matrix);\n        }\n\n        public void SetViewProjMatrix(Matrix matrix)\n        {\n            m_D3DEffect.SetValue(m_viewProjMatrix, matrix);\n        }\n\n\n        public void SetTechnique(ShadowTechnique type)\n        {\n            switch (type)\n            {\n                case ShadowTechnique.PCF2x2:\n                    m_D3DEffect.Technique = m_createShadowTerm2x2;\n                    break;\n                case ShadowTechnique.PCF3x3:\n                    m_D3DEffect.Technique = m_createShadowTerm3x3;\n                    break;\n                case ShadowTechnique.PCF5x5:\n                    m_D3DEffect.Technique = m_createShadowTerm5x5;\n                    break;\n                case ShadowTechnique.PCF7x7:\n                    m_D3DEffect.Technique = m_createShadowTerm7x7;\n                    break;\n                case ShadowTechnique.GenerateShadow:\n                    m_D3DEffect.Technique = m_generateShadowMap;\n                    break;\n                case ShadowTechnique.GenerateShadowForVoxels:\n                    m_D3DEffect.Technique = m_generateVoxelShadowMap;\n                    break;\n                case ShadowTechnique.GenerateShadowInstanced:\n                    m_D3DEffect.Technique = m_generateShadowMapInstanced;\n                    break;\n                case ShadowTechnique.GenerateShadowForVoxelsInstanced:\n                    m_D3DEffect.Technique = m_generateVoxelShadowMapInstanced;\n                    break;\n                case ShadowTechnique.Clear:\n                    m_D3DEffect.Technique = m_clearTechnique;\n                    break;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Effects/MyEffectSolarMapGrid.cs",
    "content": "﻿using SysUtils.Utils;\nusing SharpDX.Direct3D9;\n\nnamespace MinerWars.AppCode.Game.Effects\n{\n    using Vector2 = MinerWarsMath.Vector2;\n    using Vector3 = MinerWarsMath.Vector3;\n    using Vector4 = MinerWarsMath.Vector4;\n    using Matrix = MinerWarsMath.Matrix;\n\n    class MyEffectSolarMapGrid : MyEffectBase\n    {\n        readonly EffectHandle m_gridTexture;\n        readonly EffectHandle m_colorA, m_alphaA;\n        readonly EffectHandle m_worldMatrix;\n        readonly EffectHandle m_viewProjectionMatrix;\n\n\n        public MyEffectSolarMapGrid()\n            : base(\"Effects2\\\\SolarSystemMap\\\\MySolarSystemMapGrid\")\n        {\n            m_gridTexture = m_D3DEffect.GetParameter(null, \"GridTexture\");\n            m_colorA = m_D3DEffect.GetParameter(null, \"ColorA\");\n            m_alphaA = m_D3DEffect.GetParameter(null, \"AlphaA\");\n            m_worldMatrix = m_D3DEffect.GetParameter(null, \"WorldMatrix\");\n            m_viewProjectionMatrix = m_D3DEffect.GetParameter(null, \"ViewProjectionMatrix\");\n        }\n\n        public void SetGridTexture(Texture texture)\n        {\n            m_D3DEffect.SetTexture(m_gridTexture, texture);\n        }\n\n        public void SetWorldMatrix(Matrix matrix)\n        {\n            m_D3DEffect.SetValue(m_worldMatrix, matrix);\n        }\n\n        public void SetViewProjectionMatrix(Matrix matrix)\n        {\n            m_D3DEffect.SetValue(m_viewProjectionMatrix, matrix);\n        }\n\n        public void SetColorA(Vector3 colorA)\n        {\n            m_D3DEffect.SetValue(m_colorA, colorA);\n        }\n\n        public void SetAlpha(float alpha)\n        {\n            m_D3DEffect.SetValue(m_alphaA, alpha);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Effects/MyEffectSpriteBatchShader.cs",
    "content": "﻿using MinerWars.AppCode.Game.Utils;\nusing SharpDX.Direct3D9;\n\nnamespace MinerWars.AppCode.Game.Effects\n{\n    using Vector2 = MinerWarsMath.Vector2;\n    using Vector3 = MinerWarsMath.Vector3;\n    using Vector4 = MinerWarsMath.Vector4;\n    using Matrix = MinerWarsMath.Matrix;\n\n    class MyEffectSpriteBatchShader : MyEffectBase\n    {\n\n        public enum Technique\n        {\n            LightsEnabled,\n            LightsDisabled,\n            OnlyLights\n        }\n\n\n        readonly EffectHandle m_Texture1;\n        readonly EffectHandle m_Texture2;\n        readonly EffectHandle m_TextureTiling;\n        \n\n        public MyEffectSpriteBatchShader()\n            : base(\"Effects2\\\\Sprites\\\\MyEffectSpriteBatchShader\")\n        {\n            m_Texture1 = m_D3DEffect.GetParameter(null, \"Texture1\");\n            m_Texture2 = m_D3DEffect.GetParameter(null, \"Texture2\");\n            m_TextureTiling = m_D3DEffect.GetParameter(null, \"Texture2Tiling\");\n        }\n\n        public void SetDiffuseTexture1(Texture textureToSet)\n        {\n             m_D3DEffect.SetTexture(m_Texture1, textureToSet);\n        }\n\n        public void SetDiffuseTexture2(Texture textureToSet)\n        {\n            m_D3DEffect.SetTexture(m_Texture2, textureToSet);\n        }\n\n        public void SetTexture2Tiling(Vector2 tiling)\n        {\n            m_D3DEffect.SetValue(m_TextureTiling, tiling);\n        }\n\n        public Effect GetEffect() { return m_D3DEffect; }\n    }\n\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Effects/MyEffectThreshold.cs",
    "content": "﻿using SharpDX.Direct3D9;\n\nnamespace MinerWars.AppCode.Game.Effects\n{\n    using Vector2 = MinerWarsMath.Vector2;\n    using Vector3 = MinerWarsMath.Vector3;\n    using Vector4 = MinerWarsMath.Vector4;\n    using Matrix = MinerWarsMath.Matrix;\n\n    class MyEffectThreshold : MyEffectHDRBase\n    {\n        readonly EffectHandle m_threshold;\n        readonly EffectHandle m_bloomIntensity;\n        readonly EffectHandle m_bloomIntensityBackground;\n\n        public MyEffectThreshold()\n            : base(\"Effects2\\\\HDR\\\\MyEffectThreshold\")\n        {\n            m_threshold = m_D3DEffect.GetParameter(null, \"Threshold\");\n            m_bloomIntensity = m_D3DEffect.GetParameter(null, \"BloomIntensity\");\n            m_bloomIntensityBackground = m_D3DEffect.GetParameter(null, \"BloomIntensityBackground\");\n        }\n\n        public void SetThreshold(float threshold)\n        {\n            m_D3DEffect.SetValue(m_threshold,threshold);\n        }\n\n        public void SetBloomIntensity(float bloomIntensity)\n        {\n            m_D3DEffect.SetValue(m_bloomIntensity,bloomIntensity);\n        }\n\n        public void SetBloomIntensityBackground(float bloomIntensityBackground)\n        {\n            m_D3DEffect.SetValue(m_bloomIntensityBackground,bloomIntensityBackground);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Effects/MyEffectTransparentGeometry.cs",
    "content": "﻿using MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.VideoMode;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils.Utils;\n\nusing SharpDX.Direct3D9;\n\nnamespace MinerWars.AppCode.Game.Effects\n{\n    using Vector2 = MinerWarsMath.Vector2;\n    using Vector3 = MinerWarsMath.Vector3;\n    using Matrix = MinerWarsMath.Matrix;\n    using Color = MinerWarsMath.Color;\n\n    class MyEffectTransparentGeometry : MyEffectDynamicLightingBase\n    {\n        public enum Technique\n        {\n            Lit,\n            Unlit,\n            UnlitForward,\n            IgnoreDepth,\n            ColorizeHeight,\n            VisualizeOverdraw\n        }\n\n        readonly EffectHandle m_worldMatrix;\n        readonly EffectHandle m_viewMatrix;\n        readonly EffectHandle m_projectionMatrix;\n\n        readonly EffectHandle m_worldViewMatrix;\n        readonly EffectHandle m_worldViewProjectionMatrix;\n\n        readonly EffectHandle m_billboardTexture;\n        readonly EffectHandle m_billboardBlendTexture;\n        readonly EffectHandle m_billboardBlendRatio;\n        readonly EffectHandle m_depthsRT;\n        readonly EffectHandle m_halfPixel;\n        readonly EffectHandle m_scale;\n        readonly EffectHandle m_softParticleDistanceScale;\n\n        readonly EffectHandle m_colorizeColor, m_colorizePlaneNormal, m_colorizePlaneDistance, m_colorizeSoftDistance;\n\n        readonly EffectHandle m_alphaMultiplier;\n\n        readonly EffectHandle m_litBasicTechnique;\n        readonly EffectHandle m_unlitBasicTechnique;\n        readonly EffectHandle m_unlitBasicForwardTechnique;\n        readonly EffectHandle m_ignoreDepthBasicTechnique;\n        readonly EffectHandle m_colorizeTechnique;\n\n        readonly EffectHandle m_visualizeOverdrawTechnique;\n\n        Matrix m_world, m_view, m_projection;\n   \n        public MyEffectReflectorBase Reflector { get; private set; }\n   \n        public MyEffectTransparentGeometry()\n            : base(\"Effects2\\\\TransparentGeometry\\\\MyEffectTransparentGeometry\")\n        {\n            m_worldMatrix = m_D3DEffect.GetParameter(null, \"WorldMatrix\");\n            m_projectionMatrix = m_D3DEffect.GetParameter(null, \"ProjectionMatrix\");\n            m_viewMatrix = m_D3DEffect.GetParameter(null, \"ViewMatrix\");\n\n            m_worldViewMatrix = m_D3DEffect.GetParameter(null, \"WorldViewMatrix\");\n            m_worldViewProjectionMatrix = m_D3DEffect.GetParameter(null, \"WorldViewProjectionMatrix\");\n\n            m_billboardTexture = m_D3DEffect.GetParameter(null, \"BillboardTexture\");\n            m_billboardBlendTexture = m_D3DEffect.GetParameter(null, \"BillboardBlendTexture\");\n            m_billboardBlendRatio = m_D3DEffect.GetParameter(null, \"BillboardBlendRatio\");\n            m_depthsRT = m_D3DEffect.GetParameter(null, \"DepthsRT\");\n            m_halfPixel = m_D3DEffect.GetParameter(null, \"HalfPixel\");\n            m_scale = m_D3DEffect.GetParameter(null, \"Scale\");\n            m_softParticleDistanceScale = m_D3DEffect.GetParameter(null, \"SoftParticleDistanceScale\");\n\n            m_colorizeColor = m_D3DEffect.GetParameter(null, \"ColorizeColor\");\n            m_colorizePlaneNormal = m_D3DEffect.GetParameter(null, \"ColorizePlaneNormal\");\n            m_colorizePlaneDistance = m_D3DEffect.GetParameter(null, \"ColorizePlaneDistance\");\n            m_colorizeSoftDistance = m_D3DEffect.GetParameter(null, \"ColorizeSoftDistance\");\n\n            m_alphaMultiplier = m_D3DEffect.GetParameter(null, \"AlphaMultiplierSaturation\");\n\n            m_litBasicTechnique = m_D3DEffect.GetTechnique(\"Technique_LitBasic\");\n            m_unlitBasicTechnique = m_D3DEffect.GetTechnique(\"Technique_UnlitBasic\");\n            m_unlitBasicForwardTechnique = m_D3DEffect.GetTechnique(\"Technique_UnlitBasic_Forward\");\n            m_ignoreDepthBasicTechnique = m_D3DEffect.GetTechnique(\"Technique_IgnoreDepthBasic\");\n            m_colorizeTechnique = m_D3DEffect.GetTechnique(\"Technique_ColorizeHeight\");\n\n            m_visualizeOverdrawTechnique = m_D3DEffect.GetTechnique(\"Technique_VisualizeOverdraw\");\n\n            Reflector = new MyEffectReflectorBase(m_D3DEffect);\n        }\n\n        public void SetWorldMatrix(Matrix worldMatrix)\n        {\n            m_world = worldMatrix;\n            m_D3DEffect.SetValue(m_worldMatrix, worldMatrix);\n        }\n\n        public override void SetViewMatrix(ref Matrix viewMatrix)\n        {\n            m_view = viewMatrix;\n            m_D3DEffect.SetValue(m_viewMatrix, viewMatrix);\n        }\n\n        public override void SetProjectionMatrix(ref Matrix projectionMatrix)\n        {\n            m_projection = projectionMatrix;\n            m_D3DEffect.SetValue(m_projectionMatrix, projectionMatrix);\n        }\n\n        public void SetBillboardTexture(Texture texture)\n        {\n            m_D3DEffect.SetTexture(m_billboardTexture, texture);\n        }\n\n        public void SetBillboardBlendTexture(Texture texture)\n        {\n            m_D3DEffect.SetTexture(m_billboardBlendTexture, texture);\n        }\n\n        public void SetDepthsRT(Texture renderTarget2D)\n        {\n            m_D3DEffect.SetTexture(m_depthsRT, renderTarget2D);\n        }\n\n        public void SetHalfPixel(int screenSizeX, int screenSizeY)\n        {\n            m_D3DEffect.SetValue(m_halfPixel, MyUtils.GetHalfPixel(screenSizeX, screenSizeY));\n        }\n\n        public void SetScale(Vector2 scale)\n        {\n            m_D3DEffect.SetValue(m_scale, scale);\n        }\n\n        public void SetSoftParticleDistanceScale(float softParticleDistanceScale)\n        {\n            m_D3DEffect.SetValue(m_softParticleDistanceScale, softParticleDistanceScale);\n        }\n\n        public void SetColorizeColor(Color color)\n        {\n            m_D3DEffect.SetValue(m_colorizeColor, color.ToVector4());\n        }\n\n        public void SetColorizePlane(Vector3 planeNormal, float planeDistance)\n        {\n            m_D3DEffect.SetValue(m_colorizePlaneNormal, planeNormal);\n            m_D3DEffect.SetValue(m_colorizePlaneDistance, planeDistance);\n        }\n\n        public void SetColorizeSoftDistance(float distance)\n        {\n            m_D3DEffect.SetValue(m_colorizeSoftDistance, distance);\n        }\n\n        public override void Begin(int pass = 0, FX fx = FX.DoNotSaveSamplerState | FX.DoNotSaveShaderState | FX.DoNotSaveState)\n        {\n            m_D3DEffect.SetValue(m_worldViewMatrix, m_world * m_view);\n            m_D3DEffect.SetValue(m_worldViewProjectionMatrix, m_world * m_view * m_projection);\n            base.Begin(pass);\n        }\n\n        public void SetTechnique(Technique technique)\n        {\n            switch (technique)\n            {\n                case Technique.Lit:\n                    m_D3DEffect.Technique = m_litBasicTechnique;\n                    break;\n                case Technique.Unlit:\n                    m_D3DEffect.Technique = m_unlitBasicTechnique;\n                    break;\n                case Technique.UnlitForward:\n                    m_D3DEffect.Technique = m_unlitBasicForwardTechnique;\n                    break;\n                case Technique.IgnoreDepth:\n                    m_D3DEffect.Technique = m_ignoreDepthBasicTechnique;\n                    break;\n                case Technique.ColorizeHeight:\n                    m_D3DEffect.Technique = m_colorizeTechnique;\n                    break;\n\n                case Technique.VisualizeOverdraw:\n                    m_D3DEffect.Technique = m_visualizeOverdrawTechnique;\n                    break;\n\n                default:\n                    throw new MyMwcExceptionApplicationShouldNotGetHere();\n                    break;\n\n            }\n        }\n\n        public void SetAlphaMultiplierAndSaturation(float alphaMultiplier, float alphaSaturation)\n        {\n            m_D3DEffect.SetValue(m_alphaMultiplier, new Vector2(alphaMultiplier, alphaSaturation));\n        }\n\n        public override void Dispose()\n        {\n            Reflector.Dispose();\n            base.Dispose();\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Effects/MyEffectVolumetricFog.cs",
    "content": "﻿using MinerWars.AppCode.Game.Utils;\nusing SharpDX.Direct3D9;\n\nnamespace MinerWars.AppCode.Game.Effects\n{\n    using Vector2 = MinerWarsMath.Vector2;\n    using Vector3 = MinerWarsMath.Vector3;\n    using Vector4 = MinerWarsMath.Vector4;\n    using Matrix = MinerWarsMath.Matrix;\n\n    class MyEffectVolumetricFog : MyEffectBase\n    {\n        public enum TechniqueEnum\n        {\n            Default,\n            SkipBackground\n        }\n\n\n        readonly EffectHandle m_sourceRT;\n        readonly EffectHandle m_depthsRT;\n        readonly EffectHandle m_halfPixel;\n        readonly EffectHandle m_normalsTexture;\n        readonly EffectHandle m_worldMatrix;\n        readonly EffectHandle m_viewProjectionMatrix;\n        readonly EffectHandle m_cameraPosition;\n        readonly EffectHandle m_cameraMatrix;\n        readonly EffectHandle m_frustumCorners;\n\n        readonly EffectHandle m_defaultTechnique;\n        readonly EffectHandle m_skipBackgroundTechnique;\n\n        public MyEffectPerlinNoiseBase PerlinNoise { get; private set; }\n\n        public MyEffectVolumetricFog()\n            : base(\"Effects2\\\\Fullscreen\\\\MyEffectVolumetricFog\")\n        {\n            m_sourceRT = m_D3DEffect.GetParameter(null, \"SourceRT\");\n            m_depthsRT = m_D3DEffect.GetParameter(null, \"DepthsRT\");\n            m_normalsTexture = m_D3DEffect.GetParameter(null, \"NormalsTexture\");\n            m_halfPixel = m_D3DEffect.GetParameter(null, \"HalfPixel\");\n            m_worldMatrix = m_D3DEffect.GetParameter(null, \"WorldMatrix\");\n            m_viewProjectionMatrix = m_D3DEffect.GetParameter(null, \"ViewProjectionMatrix\");\n            m_cameraPosition = m_D3DEffect.GetParameter(null, \"CameraPos\");\n            m_cameraMatrix = m_D3DEffect.GetParameter(null, \"CameraMatrix\");\n            m_frustumCorners = m_D3DEffect.GetParameter(null, \"FrustumCorners\");\n\n            m_defaultTechnique = m_D3DEffect.GetTechnique(\"Technique1\");\n            m_skipBackgroundTechnique = m_D3DEffect.GetTechnique(\"SkipBackgroundTechnique\");\n\n            PerlinNoise = new MyEffectPerlinNoiseBase(m_D3DEffect);\n        }\n\n        public void SetSourceRT(Texture renderTarget2D)\n        {\n            m_D3DEffect.SetTexture(m_sourceRT, renderTarget2D);\n        }\n\n        public void SetDepthsRT(Texture renderTarget2D)\n        {\n            m_D3DEffect.SetTexture(m_depthsRT, renderTarget2D);\n        }\n\n        public void SetHalfPixel(int screenSizeX, int screenSizeY)\n        {\n            m_D3DEffect.SetValue(m_halfPixel, MyUtils.GetHalfPixel(screenSizeX, screenSizeY));\n        }\n\n        public void SetNormalsTexture(Texture normalsTexture)\n        {\n            m_D3DEffect.SetTexture(m_normalsTexture, normalsTexture);\n        }\n\n        public void SetViewProjectionMatrix(Matrix viewProjectionMatrix)\n        {\n            m_D3DEffect.SetValue(m_viewProjectionMatrix, viewProjectionMatrix);\n        }\n\n        public void SetWorldMatrix(Matrix worldMatrix)\n        {\n            m_D3DEffect.SetValue(m_worldMatrix, worldMatrix);\n        }\n\n        public void SetCameraPosition(Vector3 pos)\n        {\n            m_D3DEffect.SetValue(m_cameraPosition, pos);\n        }\n\n        public void SetCameraMatrix(Matrix matrix)\n        {\n            m_D3DEffect.SetValue(m_cameraMatrix, matrix);\n        }\n\n        public void SetFrustumCorners(Vector3[] frustumCornersVS)\n        {\n            m_D3DEffect.SetValue(m_frustumCorners, frustumCornersVS);\n        }\n\n        public void SetTechnique(TechniqueEnum technique)\n        {\n            switch(technique)\n            {\n                case TechniqueEnum.Default:\n                    m_D3DEffect.Technique = m_defaultTechnique;\n                    break;\n                case TechniqueEnum.SkipBackground:\n                    m_D3DEffect.Technique = m_skipBackgroundTechnique;\n                    break;\n\n                default:\n                    System.Diagnostics.Debug.Assert(false);\n                    break;\n            }\n        }\n\n        public override void Dispose()\n        {\n            PerlinNoise.Dispose();\n            base.Dispose();\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Effects/SSAO/MyEffectDownsampleDepthForSSAO.cs",
    "content": "﻿using MinerWars.AppCode.Game.Utils;\n\nusing SharpDX.Direct3D9;\n\nnamespace MinerWars.AppCode.Game.Effects\n{\n    using Vector2 = MinerWarsMath.Vector2;\n    using Vector3 = MinerWarsMath.Vector3;\n    using Vector4 = MinerWarsMath.Vector4;\n    using Matrix = MinerWarsMath.Matrix;\n\n    class MyEffectDownsampleDepthForSSAO : MyEffectBase\n    {\n        readonly EffectHandle m_sourceDepthsRT;\n        readonly EffectHandle m_halfPixel;\n\n        public MyEffectDownsampleDepthForSSAO()\n            : base(\"Effects2\\\\SSAO\\\\MyEffectDownsampleDepthForSSAO\")\n        {\n            m_sourceDepthsRT = m_D3DEffect.GetParameter(null, \"SourceDepthsRT\");\n            m_halfPixel = m_D3DEffect.GetParameter(null, \"HalfPixel\");\n        }\n\n        public void SetSourceDepthsRT(Texture renderTarget2D)\n        {\n            m_D3DEffect.SetTexture(m_sourceDepthsRT, renderTarget2D);\n        }\n\n        //  Set half-pixel and calculates 'quarter pixel' immediatelly\n        public void SetHalfPixel(int screenSizeX, int screenSizeY)\n        {\n            Vector2 halfPixel = MyUtils.GetHalfPixel(screenSizeX, screenSizeY);\n            m_D3DEffect.SetValue(m_halfPixel, halfPixel);\n        }    \n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Effects/SSAO/MyEffectSSAOBlur2.cs",
    "content": "﻿using MinerWars.AppCode.Game.Utils;\n\nusing SharpDX.Direct3D9;\n\nnamespace MinerWars.AppCode.Game.Effects\n{\n    using Vector2 = MinerWarsMath.Vector2;\n    using Vector3 = MinerWarsMath.Vector3;\n    using Vector4 = MinerWarsMath.Vector4;\n    using Matrix = MinerWarsMath.Matrix;\n\n    class MyEffectSSAOBlur2 : MyEffectBase\n    {\n        readonly EffectHandle m_depthsRT;\n        readonly EffectHandle m_ssaoRT;\n        readonly EffectHandle m_halfPixel;\n        readonly EffectHandle m_SSAOhalfPixel;\n        readonly EffectHandle m_blurDirection;\n\n        public MyEffectSSAOBlur2()\n            : base(\"Effects2\\\\SSAO\\\\MyEffectSSAOBlur2\")\n        {\n            m_depthsRT = m_D3DEffect.GetParameter(null, \"DepthsRT\");\n            m_halfPixel = m_D3DEffect.GetParameter(null, \"HalfPixel\");\n            m_SSAOhalfPixel = m_D3DEffect.GetParameter(null, \"SSAOHalfPixel\");\n            m_ssaoRT = m_D3DEffect.GetParameter(null, \"SsaoRT\");\n            m_blurDirection = m_D3DEffect.GetParameter(null, \"BlurDirection\");\n        }\n\n        public void SetDepthsRT(Texture renderTarget2D)\n        {\n            m_D3DEffect.SetTexture(m_depthsRT, renderTarget2D);\n        }\n\n        public void SetSsaoRT(Texture renderTarget2D)\n        {\n            m_D3DEffect.SetTexture(m_ssaoRT, renderTarget2D);\n        }\n\n        public void SetHalfPixel(int screenSizeX, int screenSizeY)\n        {\n            m_D3DEffect.SetValue(m_halfPixel, MyUtils.GetHalfPixel(screenSizeX, screenSizeY));\n        }\n\n        public void SetSSAOHalfPixel(int screenSizeX, int screenSizeY)\n        {\n            m_D3DEffect.SetValue(m_SSAOhalfPixel, MyUtils.GetHalfPixel(screenSizeX, screenSizeY));\n        }\n\n\n        public void SetBlurDirection(Vector2 blurDirection)\n        {\n            m_D3DEffect.SetValue(m_blurDirection, blurDirection);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Effects/SSAO/MyEffectVolumetricSSAO2.cs",
    "content": "﻿using MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.Utils;\n\nusing SharpDX.Direct3D9;\n\nnamespace MinerWars.AppCode.Game.Effects\n{\n    using Vector2 = MinerWarsMath.Vector2;\n    using Vector3 = MinerWarsMath.Vector3;\n    using Vector4 = MinerWarsMath.Vector4;\n    using Matrix = MinerWarsMath.Matrix;\n\n    class MyEffectVolumetricSSAO2 : MyEffectBase\n    {\n        public float ColorScale = 0.6f;\n\n        readonly EffectHandle m_depthsRT;\n        readonly EffectHandle m_halfPixel;\n        readonly EffectHandle m_normalsTexture;\n        readonly EffectHandle m_viewMatrix;\n        readonly EffectHandle m_projCoef;\n        readonly EffectHandle m_occlPos;\n        readonly EffectHandle m_occlPosFlipped;\n        readonly EffectHandle m_frustumCorners;\n        readonly EffectHandle m_projectionMatrix;\n\n        readonly EffectHandle m_params;\n        readonly EffectHandle m_params2;\n        readonly EffectHandle m_contrast;\n\n        \n\n        bool m_useBlur = true;\n        bool m_showOnlySSAO = false;\n\n        float m_colorScale = 0;\n\n        const uint\tNUM_SAMPLES = 8;\n\n        readonly Vector2[] filterKernel =\n\t\t{\n\t\t\tnew Vector2( 1.0f,\t\t 1.0f),\n\t\t\tnew Vector2( 1.0f / 4,\t-1.0f / 4),\n\t\t\tnew Vector2(-1.0f,\t\t-1.0f),\n\t\t\tnew Vector2(-1.0f / 4,\t 1.0f / 4),\n\t\t\tnew Vector2( 1.0f / 2,\t 1.0f / 2),\n\t\t\tnew Vector2( 3.0f / 4,\t-3.0f / 4),\n\t\t\tnew Vector2(-1.0f / 2,\t-1.0f / 2),\n\t\t\tnew Vector2(-3.0f / 4,\t 3.0f / 4)\n\t\t};\t\t\n\n        public MyEffectVolumetricSSAO2()\n            : base(\"Effects2\\\\SSAO\\\\MyEffectVolumetricSSAO2\")\n        {\n            m_depthsRT = m_D3DEffect.GetParameter(null, \"DepthsRT\");\n            m_normalsTexture = m_D3DEffect.GetParameter(null, \"NormalsTexture\");\n            m_halfPixel = m_D3DEffect.GetParameter(null, \"HalfPixel\");\n            m_viewMatrix = m_D3DEffect.GetParameter(null, \"ViewMatrix\");\n            m_projCoef = m_D3DEffect.GetParameter(null, \"ProjViewPortCoef\");\n            m_occlPos = m_D3DEffect.GetParameter(null, \"OcclPos\");\n            m_occlPosFlipped = m_D3DEffect.GetParameter(null, \"OcclPosFlipped\");\n            m_frustumCorners = m_D3DEffect.GetParameter(null, \"FrustumCorners\");\n            m_projectionMatrix = m_D3DEffect.GetParameter(null, \"ProjectionMatrix\");\n\n            m_params = m_D3DEffect.GetParameter(null, \"SSAOParams\");\n            m_params2 = m_D3DEffect.GetParameter(null, \"SSAOParams2\");\n            m_contrast = m_D3DEffect.GetParameter(null, \"Contrast\");\n\n            fillRandomVectors();\n        }\n\n        void fillRandomVectors()\n        {\n            float maxTapMag = -1;\t\t\n\t\t    for (uint i = 0; i < NUM_SAMPLES; i++)\n\t\t    {\n\t\t\t    float curr = filterKernel[i].Length();\n\t\t\t    maxTapMag = (float)System.Math.Max(maxTapMag,curr);\n\t\t    }\n\n\n\t\t    float maxTapMagInv = 1.0f / maxTapMag;\n\t\t    float rsum = 0.0f;\n\t\t    Vector4[]\toccluderPoints = new Vector4[NUM_SAMPLES];\n\t\t    Vector4[]\toccluderPointsFlipped = new Vector4[NUM_SAMPLES];\n\t\t    for (uint i = 0; i < NUM_SAMPLES; i++)\n\t\t    {\n\t\t\t    Vector2\ttapOffs = new Vector2(filterKernel[i].X * maxTapMagInv,filterKernel[i].Y * maxTapMagInv);\n\n\t\t\t    occluderPoints[i].X = tapOffs.X;\n\t\t\t    occluderPoints[i].Y = tapOffs.Y;\n\t\t\t    occluderPoints[i].Z = 0;\n\t\t\t    occluderPoints[i].W = (float)System.Math.Sqrt(1 - tapOffs.X * tapOffs.X - tapOffs.Y * tapOffs.Y);\n\n\t\t\t    rsum += occluderPoints[i].W;\n\n\t\t\t    //\n\t\t\t    occluderPointsFlipped[i].X = tapOffs.X;\n\t\t\t    occluderPointsFlipped[i].Y = -tapOffs.Y;\n\t\t    }\n\n            m_colorScale = 1.0f / (2 * rsum); // 1 / Samples total volume\n            m_colorScale *= ColorScale;\n\n            SetOcclPos(occluderPoints);\n            SetOcclPosFlipped(occluderPointsFlipped);\n        }\n\n        public void SetDepthsRT(Texture renderTarget2D)\n        {\n            m_D3DEffect.SetTexture(m_depthsRT, renderTarget2D);\n        }\n\n        public void SetHalfPixel(int screenSizeX, int screenSizeY)\n        {\n            m_D3DEffect.SetValue(m_halfPixel, MyUtils.GetHalfPixel(screenSizeX, screenSizeY));\n        }\n\n        public void SetNormalsTexture(Texture normalsTexture)\n        {\n            m_D3DEffect.SetTexture(m_normalsTexture, normalsTexture);\n        }\n\n        public void SetViewMatrix(Matrix viewMatrix)\n        {\n            m_D3DEffect.SetValue(m_viewMatrix, viewMatrix);\n        }\n\n        public void SetOcclPos(Vector4[] occlPos)\n        {\n            m_D3DEffect.SetValue(m_occlPos, occlPos);           \n        }\n\n        public void SetOcclPosFlipped(Vector4[] occlPosFlipped)\n        {\n            m_D3DEffect.SetValue(m_occlPosFlipped, occlPosFlipped);\n        }\n\n        public void SetParams1(Vector4 params1)\n        {\n            m_D3DEffect.SetValue(m_params, params1);\n        }\n\n        public void SetParams2(Vector4 params2)\n        {\n            params2.Z *= m_colorScale;\n            m_D3DEffect.SetValue(m_params2, params2);\n        }\n\n        public void SetFrustumCorners(Vector3[] frustumCornersVS)\n        {\n            m_D3DEffect.SetValue(m_frustumCorners, frustumCornersVS);\n        }\n\n        public void SetProjectionMatrix(Matrix projectionMatrix)\n        {\n            m_D3DEffect.SetValue(m_projectionMatrix, projectionMatrix);\n        }\n\n        public void SetContrast(float contrast)\n        {\n            m_D3DEffect.SetValue(m_contrast, contrast);\n        }\n\n        public bool ShowOnlySSAO\n        {\n            get { return m_showOnlySSAO; }\n            set { m_showOnlySSAO = value; }\n        }\n\n        public bool UseBlur\n        {\n            get { return m_useBlur; }\n            set { m_useBlur = value; }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Effects/Voxels/MyEffectVoxels.cs",
    "content": "﻿using SharpDX.Direct3D9;\n\nnamespace MinerWars.AppCode.Game.Effects\n{\n    using Vector2 = MinerWarsMath.Vector2;\n    using Vector3 = MinerWarsMath.Vector3;\n    using Vector4 = MinerWarsMath.Vector4;\n    using Matrix = MinerWarsMath.Matrix;\n\n    class MyEffectVoxels : MyEffectVoxelsBase\n    {\n        readonly EffectHandle m_voxelMapPosition;\n        readonly EffectHandle m_viewMatrix;\n        readonly EffectHandle m_diffuseColor;\n        readonly EffectHandle m_highlightColor;\n        \n        readonly EffectHandle m_worldMatrix;\n        readonly EffectHandle m_enablePerVertexAmbient;\n\n        public MyEffectVoxels()\n            : base(\"Effects2\\\\Voxels\\\\MyEffectVoxels\")\n        {\n            m_viewMatrix = m_D3DEffect.GetParameter(null, \"ViewMatrix\");\n            m_voxelMapPosition = m_D3DEffect.GetParameter(null, \"VoxelMapPosition\");\n            m_diffuseColor = m_D3DEffect.GetParameter(null, \"DiffuseColor\");\n            m_highlightColor = m_D3DEffect.GetParameter(null, \"Highlight\");\n\n            m_worldMatrix = m_D3DEffect.GetParameter(null, \"WorldMatrix\");\n            m_enablePerVertexAmbient = m_D3DEffect.GetParameter(null, \"EnablePerVertexAmbient\");\n        }\n\n        public void EnablePerVertexAmbient(bool bEnable)\n        {\n            m_D3DEffect.SetValue(m_enablePerVertexAmbient, bEnable ? 1 : 0);\n        }\n\n        public override void SetViewMatrix(ref Matrix matrix)\n        {\n            m_D3DEffect.SetValue(m_viewMatrix, matrix);\n        }\n\n        public void SetVoxelMapPosition(Vector3 pos)\n        {\n            m_D3DEffect.SetValue(m_voxelMapPosition, pos);\n        }\n\n        public override void SetDiffuseColor(Vector3 diffuseColorAdd)\n        {\n            m_D3DEffect.SetValue(m_diffuseColor, diffuseColorAdd);\n        }\n\n        public override void SetHighlightColor(Vector3 highlight)\n        {\n            m_D3DEffect.SetValue(m_highlightColor, highlight);\n        }\n\n        public void SetWorldMatrix(ref Matrix matrix)\n        {\n            m_D3DEffect.SetValue(m_worldMatrix, matrix);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Effects/Voxels/MyEffectVoxelsDebris.cs",
    "content": "﻿using SharpDX.Direct3D9;\n\nnamespace MinerWars.AppCode.Game.Effects\n{\n    using Vector2 = MinerWarsMath.Vector2;\n    using Vector3 = MinerWarsMath.Vector3;\n    using Vector4 = MinerWarsMath.Vector4;\n    using Matrix = MinerWarsMath.Matrix;\n\n    class MyEffectVoxelsDebris : MyEffectVoxelsBase\n    {\n        readonly EffectHandle m_worldMatrix;\n        readonly EffectHandle m_viewWorldScaleMatrix;\n        readonly EffectHandle m_textureCoordRandomPositionOffset;\n        readonly EffectHandle m_textureCoordScale;\n        readonly EffectHandle m_diffuseTextureColorMultiplier;\n\n        public MyEffectVoxelsDebris()\n            : base(\"Effects2\\\\Voxels\\\\MyEffectVoxelsDebris\")\n        {\n            m_worldMatrix = m_D3DEffect.GetParameter(null, \"WorldMatrix\");\n            m_viewWorldScaleMatrix = m_D3DEffect.GetParameter(null, \"ViewWorldScaleMatrix\");\n            m_textureCoordRandomPositionOffset = m_D3DEffect.GetParameter(null, \"TextureCoordRandomPositionOffset\");\n            m_textureCoordScale = m_D3DEffect.GetParameter(null, \"TextureCoordScale\");\n            m_diffuseTextureColorMultiplier = m_D3DEffect.GetParameter(null, \"DiffuseTextureColorMultiplier\");\n        }\n\n        public void SetViewWorldScaleMatrix(Matrix matrix)\n        {\n            m_D3DEffect.SetValue(m_viewWorldScaleMatrix, matrix);\n        }\n\n        public void SetWorldMatrix(ref Matrix matrix)\n        {\n            m_D3DEffect.SetValue(m_worldMatrix, matrix);\n        }\n\n        //  This applies only for explosion debris, because we want to add some randomization to 'world position to texture coord' transformation\n        public void SetTextureCoordRandomPositionOffset(float textureCoordRandomPositionOffset)\n        {\n            m_D3DEffect.SetValue(m_textureCoordRandomPositionOffset, textureCoordRandomPositionOffset);\n        }\n\n        //  This applies only for explosion debris, because we want to add some randomization to 'world position to texture coord' transformation\n        public void SetTextureCoordScale(float textureCoordScale)\n        {\n            m_D3DEffect.SetValue(m_textureCoordScale, textureCoordScale);\n        }\n\n        //\tAdd random color overlay on explosion debris diffuse texture output\n        public void SetDiffuseTextureColorMultiplier(float diffuseTextureColorMultiplier)\n        {\n            m_D3DEffect.SetValue(m_diffuseTextureColorMultiplier, diffuseTextureColorMultiplier);\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Effects/Voxels/MyEffectVoxelsStaticAsteroid.cs",
    "content": "﻿using SharpDX.Direct3D9;\nusing MinerWarsMath.Graphics.PackedVector;\nusing MinerWars.AppCode.App;\n\nnamespace MinerWars.AppCode.Game.Effects\n{\n    using Vector2 = MinerWarsMath.Vector2;\n    using Vector3 = MinerWarsMath.Vector3;\n    using Vector4 = MinerWarsMath.Vector4;\n    using Matrix = MinerWarsMath.Matrix;\n\n    class MyEffectVoxelsStaticAsteroid : MyEffectVoxelsBase\n    {\n        readonly EffectHandle m_viewMatrix;\n        readonly EffectHandle m_worldMatrix;\n        readonly EffectHandle m_diffuseColor;\n        readonly EffectHandle m_highlightColor;\n        readonly EffectHandle m_fieldStart;\n        readonly EffectHandle m_fieldDir;\n        readonly EffectHandle m_time;\n        readonly EffectHandle m_emissivityPower1;\n\n        Vector3 m_diffuseColorLocal;\n        Vector3 m_highlightColorLocal;\n        Vector3 m_fieldStartLocal;\n        Vector3 m_fieldDirLocal;\n        float m_timeLocal;\n        float m_emissivityPower1Local;\n\n\n        public MyEffectVoxelsStaticAsteroid()\n            : base(\"Effects2\\\\Voxels\\\\MyEffectVoxelsStaticAsteroid\")\n        {\n            m_viewMatrix = m_D3DEffect.GetParameter(null, \"ViewMatrix\");\n            m_worldMatrix = m_D3DEffect.GetParameter(null, \"WorldMatrix\");\n            m_diffuseColor = m_D3DEffect.GetParameter(null, \"DiffuseColor\");\n            m_highlightColor = m_D3DEffect.GetParameter(null, \"Highlight\");\n            m_fieldStart = m_D3DEffect.GetParameter(null, \"FieldStart\");\n            m_time = m_D3DEffect.GetParameter(null, \"Time\");\n            m_emissivityPower1 = m_D3DEffect.GetParameter(null, \"EmissivityPower1\");\n            m_D3DEffect.SetValue(m_fieldStart, Vector3.Zero);\n\n            m_fieldStart = m_D3DEffect.GetParameter(null, \"FieldStart\");\n            m_fieldDir = m_D3DEffect.GetParameter(null, \"FieldDir\");\n\n            m_permTexture = m_D3DEffect.GetParameter(null, \"permTexture\");\n            m_permTexture2d = m_D3DEffect.GetParameter(null, \"permTexture2d\");\n            m_gradTexture = m_D3DEffect.GetParameter(null, \"gradTexture\");\n            m_permGradTexture = m_D3DEffect.GetParameter(null, \"permGradTexture\");\n            m_permGrad4dTexture = m_D3DEffect.GetParameter(null, \"permGrad4dTexture\");\n            m_gradTexture4d = m_D3DEffect.GetParameter(null, \"gradTexture4d\");\n\n            if (permTexture != null)\n            {\n                permTexture.Dispose();\n                permTexture2d.Dispose();\n                gradTexture.Dispose();\n                permGradTexture.Dispose();\n                permGrad4dTexture.Dispose();\n                gradTexture4d.Dispose();\n            }\n\n            if (permTexture == null || permTexture.IsDisposed)\n            {\n                GeneratePermTexture();\n                GeneratePermTexture2d();\n                GenerateGradTexture();\n                GeneratePermGradTexture();\n                GeneratePermGrad4dTexture();\n                GenerateGradTexture4d();\n            }\n\n            m_D3DEffect.SetTexture(m_permTexture, permTexture);\n            m_D3DEffect.SetTexture(m_permTexture2d, permTexture2d);\n            m_D3DEffect.SetTexture(m_gradTexture, gradTexture);\n            m_D3DEffect.SetTexture(m_permGradTexture, permGradTexture);\n            m_D3DEffect.SetTexture(m_permGrad4dTexture, permGrad4dTexture);\n            m_D3DEffect.SetTexture(m_gradTexture4d, gradTexture4d);\n        }\n\n        public override void Begin(int pass, FX fx = FX.DoNotSaveSamplerState | FX.DoNotSaveShaderState | FX.DoNotSaveState)\n        {\n            if (m_multimaterial)\n            {\n                base.ApplyMultimaterial();\n            }\n\n            base.Begin(pass, fx);\n        }\n\n        public void SetEmissivityPower1(float emissivityPower1)\n        {\n            if (m_emissivityPower1Local != emissivityPower1)\n            {\n                m_D3DEffect.SetValue(m_emissivityPower1, emissivityPower1);\n                m_emissivityPower1Local = emissivityPower1;\n            }\n        }\n\n        public void SetTime(float time)\n        {\n            if (m_timeLocal != time)\n            {\n                m_D3DEffect.SetValue(m_time, time);\n                m_timeLocal = time;\n            }\n        }\n\n        public void SetFieldDir(Vector3 fieldDir)\n        {\n            if (m_fieldDirLocal != fieldDir)\n            {\n                m_D3DEffect.SetValue(m_fieldDir, fieldDir);\n                m_fieldDirLocal = fieldDir;\n            }\n        }\n\n        public override void SetViewMatrix(ref Matrix matrix)\n        {\n            m_D3DEffect.SetValue(m_viewMatrix, matrix);\n        }\n\n        public void SetWorldMatrix(ref Matrix matrix)\n        {\n            m_D3DEffect.SetValue(m_worldMatrix, matrix);\n        }\n\n        public override void SetDiffuseColor(Vector3 diffuseColor)\n        {\n            if (m_diffuseColorLocal != diffuseColor)\n            {\n                m_D3DEffect.SetValue(m_diffuseColor, diffuseColor);\n                m_diffuseColorLocal = diffuseColor;\n            }\n        }\n\n        public override void SetHighlightColor(MinerWarsMath.Vector3 highlight)\n        {\n            if (m_highlightColorLocal != highlight)\n            {\n                m_D3DEffect.SetValue(m_highlightColor, highlight);\n                m_highlightColorLocal = highlight;\n            }\n        }\n\n        EffectHandle m_permTexture;\n        EffectHandle m_permTexture2d;\n        EffectHandle m_gradTexture;\n        EffectHandle m_permGradTexture;\n        EffectHandle m_permGrad4dTexture;\n        EffectHandle m_gradTexture4d;\n\n        static Texture permTexture;\n        static Texture permTexture2d;\n        static Texture gradTexture;\n        static Texture permGradTexture;\n        static Texture permGrad4dTexture;\n        static Texture gradTexture4d;\n\n        // permutation table\n        static int[] perm = new int[] { 151,160,137,91,90,15,\n        131,13,201,95,96,53,194,233,7,225,140,36,103,30,69,142,8,99,37,240,21,10,23,\n        190, 6,148,247,120,234,75,0,26,197,62,94,252,219,203,117,35,11,32,57,177,33,\n        88,237,149,56,87,174,20,125,136,171,168, 68,175,74,165,71,134,139,48,27,166,\n        77,146,158,231,83,111,229,122,60,211,133,230,220,105,92,41,55,46,245,40,244,\n        102,143,54, 65,25,63,161, 1,216,80,73,209,76,132,187,208, 89,18,169,200,196,\n        135,130,116,188,159,86,164,100,109,198,173,186, 3,64,52,217,226,250,124,123,\n        5,202,38,147,118,126,255,82,85,212,207,206,59,227,47,16,58,17,182,189,28,42,\n        223,183,170,213,119,248,152, 2,44,154,163, 70,221,153,101,155,167, 43,172,9,\n        129,22,39,253, 19,98,108,110,79,113,224,232,178,185, 112,104,218,246,97,228,\n        251,34,242,193,238,210,144,12,191,179,162,241, 81,51,145,235,249,14,239,107,\n        49,192,214, 31,181,199,106,157,184, 84,204,176,115,121,50,45,127, 4,150,254,\n        138,236,205,93,222,114,67,29,24,72,243,141,128,195,78,66,215,61,156,180\n        };\n\n        // gradients for 3d noise\n        static float[,] g3 =  \n        {\n            {1,1,0},\n            {-1,1,0},\n            {1,-1,0},\n            {-1,-1,0},\n            {1,0,1},\n            {-1,0,1},\n            {1,0,-1},\n            {-1,0,-1}, \n            {0,1,1},\n            {0,-1,1},\n            {0,1,-1},\n            {0,-1,-1},\n            {1,1,0},\n            {0,-1,1},\n            {-1,1,0},\n            {0,-1,-1}\n        };\n\n        // gradients for 4D noise\n        static float[,] g4 = \n        {\n\t        {0, -1, -1, -1},\n\t        {0, -1, -1, 1},\n\t        {0, -1, 1, -1},\n\t        {0, -1, 1, 1},\n\t        {0, 1, -1, -1},\n\t        {0, 1, -1, 1},\n\t        {0, 1, 1, -1},\n\t        {0, 1, 1, 1},\n\t        {-1, -1, 0, -1},\n\t        {-1, 1, 0, -1},\n\t        {1, -1, 0, -1},\n\t        {1, 1, 0, -1},\n\t        {-1, -1, 0, 1},\n\t        {-1, 1, 0, 1},\n\t        {1, -1, 0, 1},\n\t        {1, 1, 0, 1},\n        \t\n\t        {-1, 0, -1, -1},\n\t        {1, 0, -1, -1},\n\t        {-1, 0, -1, 1},\n\t        {1, 0, -1, 1},\n\t        {-1, 0, 1, -1},\n\t        {1, 0, 1, -1},\n\t        {-1, 0, 1, 1},\n\t        {1, 0, 1, 1},\n\t        {0, -1, -1, 0},\n\t        {0, -1, -1, 0},\n\t        {0, -1, 1, 0},\n\t        {0, -1, 1, 0},\n\t        {0, 1, -1, 0},\n\t        {0, 1, -1, 0},\n\t        {0, 1, 1, 0},\n\t        {0, 1, 1, 0}\n        };\n\n        private void GeneratePermTexture()\n        {\n            //TODO\n            /*\n            permTexture = new Texture2D(MyMinerGame.Static.GraphicsDevice, 256, 1, false, SurfaceFormat.Alpha8);\n            byte[] data = new byte[256 * 1];\n            for (int x = 0; x < 256; x++)\n            {\n                for (int y = 0; y < 1; y++)\n                {\n                    data[x + (y * 256)] = (byte)(perm[x]);// / 255.0);\n                }\n            }\n            permTexture.SetData<byte>(data);*/\n        }\n\n        // 2d permutation texture for optimized version\n        int perm2d(int i)\n        {\n            return perm[i % 256];\n        }\n\n        private void GeneratePermTexture2d()\n        {          /*\n            permTexture2d = new Texture2D(MyMinerGame.Static.GraphicsDevice, 256, 256, false, SurfaceFormat.Color);\n            Color[] data = new Color[256 * 256];\n            for (int x = 0; x < 256; x++)\n            {\n                for (int y = 0; y < 256; y++)\n                {\n                    int A = perm2d(x) + y;\n                    int AA = perm2d(A);\n                    int AB = perm2d(A + 1);\n                    int B = perm2d(x + 1) + y;\n                    int BA = perm2d(B);\n                    int BB = perm2d(B + 1);\n                    //data[x + (y * 256)] = new Color((byte)(AA / 255.0), (byte)(AB / 255.0),\n                    //                                (byte)(BA / 255.0), (byte)(BB / 255.0));\n                    data[x + (y * 256)] = new Color((byte)(AA), (byte)(AB),\n                                                    (byte)(BA), (byte)(BB));\n                }\n            }\n            permTexture2d.SetData<Color>(data);   */\n        }\n\n        private void GenerateGradTexture()\n        {       /*\n            gradTexture = new Texture2D(MyMinerGame.Static.GraphicsDevice, 16, 1, false, SurfaceFormat.NormalizedByte4);\n            NormalizedByte4[] data = new NormalizedByte4[16 * 1];\n            for (int x = 0; x < 16; x++)\n            {\n                for (int y = 0; y < 1; y++)\n                {\n                    data[x + (y * 16)] = new NormalizedByte4(g3[x, 0], g3[x, 1], g3[x, 2], 1);\n                }\n            }\n            gradTexture.SetData<NormalizedByte4>(data);*/\n        }\n\n        // permuted gradient texture for optimized version\n        private void GeneratePermGradTexture()\n        {        /*\n            permGradTexture = new Texture2D(MyMinerGame.Static.GraphicsDevice, 256, 1, false, SurfaceFormat.NormalizedByte4);\n            NormalizedByte4[] data = new NormalizedByte4[256 * 1];\n            for (int x = 0; x < 256; x++)\n            {\n                for (int y = 0; y < 1; y++)\n                {\n                    data[x + (y * 256)] = new NormalizedByte4(g3[perm[x] % 16, 0], g3[perm[x] % 16, 1], g3[perm[x] % 16, 2], 1);\n                }\n            }\n            permGradTexture.SetData<NormalizedByte4>(data);  */\n        }\n\n        private void GeneratePermGrad4dTexture()\n        {              /*\n            permGrad4dTexture = new Texture2D(MyMinerGame.Static.GraphicsDevice, 256, 1, false, SurfaceFormat.NormalizedByte4);\n            NormalizedByte4[] data = new NormalizedByte4[256 * 1];\n            for (int x = 0; x < 256; x++)\n            {\n                for (int y = 0; y < 1; y++)\n                {\n                    data[x + (y * 256)] = new NormalizedByte4(g4[perm[x] % 32, 0], g4[perm[x] % 32, 1], g4[perm[x] % 32, 2], g4[perm[x] % 32, 3]);\n                }\n            }\n            permGrad4dTexture.SetData<NormalizedByte4>(data);   */\n        }\n\n        private void GenerateGradTexture4d()\n        {            /*\n            gradTexture4d = new Texture2D(MyMinerGame.Static.GraphicsDevice, 32, 1, false, SurfaceFormat.NormalizedByte4);\n            NormalizedByte4[] data = new NormalizedByte4[32 * 1];\n            for (int x = 0; x < 32; x++)\n            {\n                for (int y = 0; y < 1; y++)\n                {\n                    data[x + (y * 32)] = new NormalizedByte4(g4[x, 0], g4[x, 1], g4[x, 2], g4[x, 3]);\n                }\n            }\n            gradTexture4d.SetData<NormalizedByte4>(data); */\n        }\n\n\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Asteroids/MyMeteor.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.TransparentGeometry.Particles;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Physics;\nusing MinerWars.AppCode.Game.Physics;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Explosions;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Prefabs;\nusing MinerWars.AppCode.Game.SolarSystem;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.Game.Renders;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Audio;\n\nusing MinerWars.AppCode.Game.Sessions;\n\nnamespace MinerWars.AppCode.Game.Entities\n{\n    class MyMeteor : MyStaticAsteroid\n    {\n        private MyParticleEffect m_trailEffect;\n        List<MyRBElement> m_collisionList = new List<MyRBElement>();\n        private float m_size;\n        \n        int m_maxTime = 10000;\n        int m_startTime;\n\n        private MySoundCue? m_burningCue;\n\n        private static List<MyMwcObjectBuilder_StaticAsteroid_TypesEnum> asteroids = new List<MyMwcObjectBuilder_StaticAsteroid_TypesEnum>(5);\n\n        public override void Init(StringBuilder displayName, Models.MyModelsEnum? modelLod0Enum, Models.MyModelsEnum? modelLod1Enum, MyEntity parentObject, float? scale, CommonLIB.AppCode.ObjectBuilders.MyMwcObjectBuilder_Base objectBuilder, Models.MyModelsEnum? modelCollision = null, Models.MyModelsEnum? modelLod2Enum = null)\n        {\n            base.Init(displayName, modelLod0Enum, modelLod1Enum, parentObject, scale, objectBuilder, modelCollision, modelLod2Enum);\n\n            this.CastShadows = false;\n            this.NeedsUpdate = true;\n            this.Save = false;\n        }\n\n        protected override void InitPhysics()\n        {\n           // this.InitBoxPhysics(MyMaterialType.ROCK, this.ModelLod0.BoundingBox.GetCenter(), this.ModelLod0.BoundingBoxSize * 0.65f, 10000000, 0, 0, RigidBodyFlag.RBF_DEFAULT);\n           // this.InitTrianglePhysics(MyMaterialType.ROCK, 10000000, this.ModelLod1, this.ModelLod0, MyConstants.COLLISION_LAYER_METEOR);\n            this.InitSpherePhysics(MyMaterialType.ROCK, this.ModelLod0, 10000000, 0, MyConstants.COLLISION_LAYER_METEOR, RigidBodyFlag.RBF_DEFAULT);\n\n            this.Physics.CollisionLayer = MyConstants.COLLISION_LAYER_METEOR;\n\n            this.Physics.AngularDamping = 0;\n            this.Physics.LinearDamping = 0;\n            this.Physics.MaxLinearVelocity = 5000;\n\n        }\n\n        public void Start(Vector3 direction, int? trailEffectId)\n        {\n            this.Physics.LinearVelocity = direction;\n            this.Physics.AngularVelocity = new Vector3(MyMwcUtils.GetRandomFloat(0.2f, 1.5f), MyMwcUtils.GetRandomFloat(0.2f, 1.5f), 0);\n\n            if (m_size == 0)\n            {\n                m_size = this.WorldVolume.Radius;\n            }\n\n            if (trailEffectId != null)\n            {\n                m_trailEffect = MyParticlesManager.CreateParticleEffect(trailEffectId.Value);\n                m_trailEffect.AutoDelete = true;\n                m_trailEffect.UserScale = this.WorldVolume.Radius / 10;\n                m_trailEffect.UserBirthMultiplier /= 2;\n                m_trailEffect.WorldMatrix = this.WorldMatrix;// worldMatrix;\n            }\n\n            m_burningCue = MyAudio.AddCue3D(MySoundCuesEnum.SfxMeteorFly, this.GetPosition(), this.GetForward(), Vector3.Up, direction);\n            m_startTime = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n\n            if (MyMultiplayerGameplay.IsHosting)\n            {\n                MyMultiplayerGameplay.Static.NewEntity(GetObjectBuilder(true), WorldMatrix);\n            }\n        }\n\n        public override void Close()\n        {\n            if (m_trailEffect != null)\n            {\n                //MyParticlesManager.RemoveParticleEffect(m_trailEffect);\n                m_trailEffect.Stop();\n                m_trailEffect = null;\n            }\n            StopCue();\n            base.Close();\n        }\n\n        private void StopCue()\n        {\n            if ((m_burningCue != null) && (m_burningCue.Value.IsPlaying == true))\n            {\n                m_burningCue.Value.Stop(SharpDX.XACT3.StopFlags.Immediate);\n            }\n        }\n        public override void UpdateBeforeSimulation()\n        {\n            if (MyMinerGame.TotalGamePlayTimeInMilliseconds > m_startTime + m_maxTime)\n            {\n                MarkForClose();\n                return;\n            }\n\n            if (m_trailEffect != null)\n            {\n                m_trailEffect.WorldMatrix = Matrix.CreateWorld(this.WorldVolume.Center, m_trailEffect.WorldMatrix.Forward, m_trailEffect.WorldMatrix.Up);\n            }\n\n            if (m_burningCue != null)\n            {\n                MyAudio.UpdateCuePosition(m_burningCue, this.GetPosition(), this.GetForward(), Vector3.Up, Vector3.Zero);\n            }\n                           \n            base.UpdateBeforeSimulation();\n        }\n\n\n        protected override void OnContactStart(MyContactEventInfo contactInfo)\n        {\n            var collidedEntity = contactInfo.GetOtherEntity(this);\n\n            if (!(collidedEntity is MyMeteor))\n            {\n                MyParticleEffect pe = MyParticlesManager.CreateParticleEffect((int)MyParticleEffectsIDEnum.Explosion_Meteor);\n                pe.WorldMatrix = this.WorldMatrix;\n                pe.UserScale = this.m_size * 0.01f;\n\n\n                MyExplosion newExplosion = MyExplosions.AddExplosion();\n                MyExplosionInfo info = new MyExplosionInfo()\n                {\n                    PlayerDamage = 100,\n                    Damage = 100,\n                    EmpDamage = 0,\n                    ExplosionType = MyExplosionTypeEnum.METEOR_EXPLOSION,\n                    ExplosionSphere = new BoundingSphere(GetPosition(), m_size),\n                    LifespanMiliseconds = MyExplosionsConstants.EXPLOSION_LIFESPAN,\n                    ParticleScale = 1,\n                    OwnerEntity = this,\n                    HitEntity = collidedEntity,\n                    ExplosionFlags = MyExplosionFlags.APPLY_FORCE_AND_DAMAGE | MyExplosionFlags.AFFECT_VOXELS | MyExplosionFlags.CREATE_DEBRIS /*| MyExplosionFlags.FORCE_DEBRIS*/,\n                    PlaySound = true,\n                    VoxelCutoutScale = 1,\n                    VoxelExplosionCenter = GetPosition()\n                };\n\n                if (newExplosion != null)\n                {\n                    newExplosion.Start(ref info);\n                }\n\n\n                this.MarkForClose();\n            }\n        }\n\n\n\n        public static MyMeteor GenerateMeteor(float sizeInMeters, Matrix worldMatrix, Vector3 position, MyMwcVoxelMaterialsEnum material)\n        {\n            int size = MySectorGenerator.FindAsteroidSize(sizeInMeters, MyMwcObjectBuilder_StaticAsteroid.AsteroidSizes);\n            asteroids.Clear();\n            MyMwcObjectBuilder_Meteor.GetAsteroids(size, MyStaticAsteroidTypeSetEnum.A, asteroids);\n            int rndIndex = MyMwcUtils.GetRandomInt(0, asteroids.Count);\n\n            var builder = new MyMwcObjectBuilder_Meteor(asteroids[rndIndex], material);\n            builder.PositionAndOrientation.Position = position;\n            builder.PositionAndOrientation.Forward = MyMwcUtils.GetRandomVector3Normalized();\n            builder.PositionAndOrientation.Up = MyMwcUtils.GetRandomVector3Normalized();\n            \n            builder.UseModelTechnique = false;\n\n            MyMeteor meteor = (MyMeteor)MyEntities.CreateFromObjectBuilderAndAdd(null, builder, worldMatrix);\n            meteor.m_size = sizeInMeters;\n\n            return meteor;\n        }\n\n        protected override CommonLIB.AppCode.ObjectBuilders.MyMwcObjectBuilder_Base GetObjectBuilderInternal(bool getExactCopy)\n        {\n            var meteorBuilder = (MyMwcObjectBuilder_Meteor)base.GetObjectBuilderInternal(getExactCopy);\n\n            meteorBuilder.Direction = this.Physics.LinearVelocity;\n\n            if (m_trailEffect != null)\n            {\n                meteorBuilder.EffectID = m_trailEffect.GetID();\n            }\n\n            return meteorBuilder;\n        }       \n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Asteroids/MyStaticAsteroid.cs",
    "content": "﻿using System.Runtime.Serialization;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.TransparentGeometry.Particles;\nusing SysUtils.Utils;\nusing System.Text;\n\nusing System.Collections.Generic;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.AppCode.Game.Models;\nusing System;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.AppCode.Physics;\nusing MinerWars.AppCode.Game.Utils;\n\nnamespace MinerWars.AppCode.Game.Entities\n{\n    using MinerWars.CommonLIB.AppCode.Networking;\n    using MinerWars.AppCode.Game.Voxels;\n    using System.Diagnostics;\n    using MinerWars.CommonLIB.AppCode.ObjectBuilders;\n    using MinerWars.AppCode.Game.SolarSystem;\n    using MinerWars.AppCode.Game.Render;\n    using MinerWars.AppCode.Game.World;\n    using MinerWars.CommonLIB.AppCode.Import;\n\n    /// <summary>\n    /// Represent static non-destructable asteroid.\n    /// </summary>\n    class MyStaticAsteroid : MyEntity\n    {\n        MyMeshMaterial m_meshMaterial;\n        MyMeshDrawTechnique m_drawTechnique = MyMeshDrawTechnique.VOXELS_STATIC_ASTEROID;\n        public MyMwcVoxelMaterialsEnum? VoxelMaterial1;\n        public Vector3? FieldDir;\n\n        #region Properties\n\n        /// <summary>\n        /// Gets or sets the type of the asteroid.\n        /// </summary>\n        /// <value>\n        /// The type of the asteroid.\n        /// </value>\n        public MyMwcObjectBuilder_StaticAsteroid_TypesEnum AsteroidType { get; set; }\n\n\n        #endregion\n\n        #region Methods\n\n        /// <summary>\n        /// Initializes a new instance of the <see cref=\"MyStaticAsteroid\"/> class.\n        /// </summary>\n        public MyStaticAsteroid()\n        {\n        }\n\n        /// <summary>\n        /// Initializes a new instance of the <see cref=\"MyStaticAsteroid\"/> class.\n        /// </summary>\n        public MyStaticAsteroid(MyModel modelLod0)\n        {\n            m_modelLod0 = modelLod0;\n        }\n\n    \n        #endregion\n\n        #region Init\n\n        internal struct MyStaticAsteroidModels\n        {\n            public MyStaticAsteroidModels(MyModelsEnum lod0, MyModelsEnum? lod1, MyModelsEnum? lod2)\n            {\n                LOD0 = lod0;\n                LOD1 = lod1;\n                LOD2 = lod2;\n            }\n\n            public MyModelsEnum LOD0;\n            public MyModelsEnum? LOD1;\n            public MyModelsEnum? LOD2;\n        }\n\n        /// <summary>\n        /// Inits the specified hud label text.\n        /// </summary>\n        /// <param name=\"hudLabelText\">The hud label text.</param>\n        /// <param name=\"objectBuilder\">The object builder.</param>\n        public void Init(string hudLabelText, MyMwcObjectBuilder_StaticAsteroid objectBuilder, Matrix matrix)\n        {\n            MyStaticAsteroidModels models = GetModelsFromType(objectBuilder.AsteroidType);\n\n            StringBuilder hudLabelTextSb = (hudLabelText == null) ? null : new StringBuilder(hudLabelText);\n\n            if (objectBuilder.Generated)\n            {\n                Flags &= ~EntityFlags.EditableInEditor;\n                Flags &= ~EntityFlags.NeedsId;\n            }\n            else\n            {\n                Flags |= EntityFlags.EditableInEditor;\n                Flags |= EntityFlags.NeedsId;\n            }\n\n            CastShadows = !objectBuilder.Generated;\n\n            if (!objectBuilder.AsteroidMaterial1.HasValue && MySector.Area.HasValue)\n            {\n                var area = MySolarSystemConstants.Areas[MySector.Area.Value];\n                objectBuilder.AsteroidMaterial1 = area.SecondaryStaticAsteroidMaterial;\n                objectBuilder.FieldDir = MinerWars.AppCode.Game.GUI.MyGuiScreenGamePlay.Static.GetDirectionToSunNormalized();\n            }\n\n            NeedsUpdate = false;\n\n            Init(hudLabelTextSb, models.LOD0, models.LOD1, null, null, objectBuilder, null, models.LOD2);\n\n            AsteroidType = objectBuilder.AsteroidType;\n\n            SetWorldMatrix(matrix);\n\n            FieldDir = objectBuilder.FieldDir;\n\n            if (objectBuilder.AsteroidMaterial.HasValue)\n            {\n                VoxelMaterial = objectBuilder.AsteroidMaterial.Value;\n                VoxelMaterial1 = objectBuilder.AsteroidMaterial1;\n                m_drawTechnique = MyMeshDrawTechnique.VOXELS_STATIC_ASTEROID;\n            }\n\n            if (objectBuilder.UseModelTechnique)\n            {\n                m_meshMaterial = MyVoxelMaterials.GetMaterialForMesh(VoxelMaterial);\n                m_drawTechnique = MyMeshDrawTechnique.MESH;\n            }\n\n            InitDrawTechniques();\n\n            InitPhysics();\n\n            MyModels.OnContentLoaded += InitDrawTechniques;\n            InitDrawTechniques();\n\n        }\n\n        /// <summary>\n        /// Backup conversion from ob type to models.\n        /// </summary>\n        /// <param name=\"type\">The type.</param>\n        public static MyStaticAsteroidModels GetModelsFromType(MyMwcObjectBuilder_StaticAsteroid_TypesEnum type)\n            {\n            switch (type)\n            {\n                case MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid10m_A:\n                    return new MyStaticAsteroidModels(MyModelsEnum.StaticAsteroid10m_A_LOD0, MyModelsEnum.StaticAsteroid10m_A_LOD1, MyModelsEnum.StaticAsteroid10m_A_LOD2);\n                case MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid20m_A:\n                    return new MyStaticAsteroidModels(MyModelsEnum.StaticAsteroid20m_A_LOD0, MyModelsEnum.StaticAsteroid20m_A_LOD1, MyModelsEnum.StaticAsteroid20m_A_LOD2);\n                case MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid30m_A:\n                    return new MyStaticAsteroidModels(MyModelsEnum.StaticAsteroid30m_A_LOD0, MyModelsEnum.StaticAsteroid30m_A_LOD1, MyModelsEnum.StaticAsteroid30m_A_LOD2);\n                case MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid50m_A:\n                    return new MyStaticAsteroidModels(MyModelsEnum.StaticAsteroid50m_A_LOD0, MyModelsEnum.StaticAsteroid30m_A_LOD1, MyModelsEnum.StaticAsteroid30m_A_LOD2);\n                case MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid100m_A:\n                    return new MyStaticAsteroidModels(MyModelsEnum.StaticAsteroid100m_A_LOD0, MyModelsEnum.StaticAsteroid100m_A_LOD1, MyModelsEnum.StaticAsteroid100m_A_LOD2);\n                case MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid300m_A:\n                    return new MyStaticAsteroidModels(MyModelsEnum.StaticAsteroid300m_A_LOD0, MyModelsEnum.StaticAsteroid300m_A_LOD1, MyModelsEnum.StaticAsteroid300m_A_LOD2);\n                case MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid500m_A:\n                    return new MyStaticAsteroidModels(MyModelsEnum.StaticAsteroid500m_A_LOD0, MyModelsEnum.StaticAsteroid500m_A_LOD1, MyModelsEnum.StaticAsteroid500m_A_LOD2);\n                case MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid1000m_A:\n                    return new MyStaticAsteroidModels(MyModelsEnum.StaticAsteroid1000m_A_LOD0, MyModelsEnum.StaticAsteroid1000m_A_LOD1, MyModelsEnum.StaticAsteroid1000m_A_LOD2);\n                case MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid2000m_A:\n                    return new MyStaticAsteroidModels(MyModelsEnum.StaticAsteroid2000m_A_LOD0, MyModelsEnum.StaticAsteroid2000m_A_LOD1, MyModelsEnum.StaticAsteroid2000m_A_LOD2);\n                case MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid5000m_A:\n                    return new MyStaticAsteroidModels(MyModelsEnum.StaticAsteroid5000m_A_LOD0, MyModelsEnum.StaticAsteroid5000m_A_LOD1, MyModelsEnum.StaticAsteroid5000m_A_LOD1);\n                case MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid10000m_A:\n                    return new MyStaticAsteroidModels(MyModelsEnum.StaticAsteroid10000m_A_LOD0, MyModelsEnum.StaticAsteroid10000m_A_LOD1, MyModelsEnum.StaticAsteroid10000m_A_LOD1);\n                //case MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid40000m_A:\n                  //  return new MyStaticAsteroidModels(MyModelsEnum.StaticAsteroid40000m_A_LOD0, MyModelsEnum.StaticAsteroid40000m_A_LOD1, MyModelsEnum.StaticAsteroid40000m_A_LOD2);\n\n                case MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid10m_B:\n                    return new MyStaticAsteroidModels(MyModelsEnum.StaticAsteroid10m_B_LOD0, MyModelsEnum.StaticAsteroid10m_B_LOD1, MyModelsEnum.StaticAsteroid10m_B_LOD2);\n                case MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid20m_B:\n                    return new MyStaticAsteroidModels(MyModelsEnum.StaticAsteroid20m_B_LOD0, MyModelsEnum.StaticAsteroid20m_B_LOD1, MyModelsEnum.StaticAsteroid20m_B_LOD2);\n                case MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid30m_B:\n                    return new MyStaticAsteroidModels(MyModelsEnum.StaticAsteroid30m_B_LOD0, MyModelsEnum.StaticAsteroid30m_B_LOD1, MyModelsEnum.StaticAsteroid30m_B_LOD2);\n                case MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid50m_B:\n                    return new MyStaticAsteroidModels(MyModelsEnum.StaticAsteroid50m_B_LOD0, MyModelsEnum.StaticAsteroid50m_B_LOD1, MyModelsEnum.StaticAsteroid50m_B_LOD2);\n                case MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid100m_B:\n                    return new MyStaticAsteroidModels(MyModelsEnum.StaticAsteroid100m_B_LOD0, MyModelsEnum.StaticAsteroid100m_B_LOD1, MyModelsEnum.StaticAsteroid100m_B_LOD2);\n                case MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid300m_B:\n                    return new MyStaticAsteroidModels(MyModelsEnum.StaticAsteroid300m_B_LOD0, MyModelsEnum.StaticAsteroid300m_B_LOD1, MyModelsEnum.StaticAsteroid300m_B_LOD2);\n                case MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid500m_B:\n                    return new MyStaticAsteroidModels(MyModelsEnum.StaticAsteroid500m_B_LOD0, MyModelsEnum.StaticAsteroid500m_B_LOD1, MyModelsEnum.StaticAsteroid500m_B_LOD2);\n                case MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid1000m_B:\n                    return new MyStaticAsteroidModels(MyModelsEnum.StaticAsteroid1000m_B_LOD0, MyModelsEnum.StaticAsteroid1000m_B_LOD1, MyModelsEnum.StaticAsteroid1000m_B_LOD2);\n                case MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid2000m_B:\n                    return new MyStaticAsteroidModels(MyModelsEnum.StaticAsteroid2000m_B_LOD0, MyModelsEnum.StaticAsteroid2000m_B_LOD1, MyModelsEnum.StaticAsteroid2000m_B_LOD2);\n                case MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid5000m_B:\n                    return new MyStaticAsteroidModels(MyModelsEnum.StaticAsteroid5000m_B_LOD0, MyModelsEnum.StaticAsteroid5000m_B_LOD1, MyModelsEnum.StaticAsteroid5000m_B_LOD1);\n                case MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid10000m_B:\n                    return new MyStaticAsteroidModels(MyModelsEnum.StaticAsteroid10000m_B_LOD0, MyModelsEnum.StaticAsteroid10000m_B_LOD1, MyModelsEnum.StaticAsteroid10000m_B_LOD1);\n\n                    //Removed support\n                case MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid10m_C:\n                    return new MyStaticAsteroidModels(MyModelsEnum.StaticAsteroid10m_A_LOD0, MyModelsEnum.StaticAsteroid10m_A_LOD1, null);\n                case MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid20m_C:\n                    return new MyStaticAsteroidModels(MyModelsEnum.StaticAsteroid20m_A_LOD0, MyModelsEnum.StaticAsteroid20m_A_LOD1, null);\n                case MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid30m_C:\n                    return new MyStaticAsteroidModels(MyModelsEnum.StaticAsteroid30m_A_LOD0, MyModelsEnum.StaticAsteroid30m_A_LOD1, null);\n                case MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid50m_C:\n                    return new MyStaticAsteroidModels(MyModelsEnum.StaticAsteroid50m_A_LOD0, MyModelsEnum.StaticAsteroid50m_A_LOD1, null);\n                case MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid100m_C:\n                    return new MyStaticAsteroidModels(MyModelsEnum.StaticAsteroid100m_A_LOD0, MyModelsEnum.StaticAsteroid100m_A_LOD1, null);\n                case MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid300m_C:\n                    return new MyStaticAsteroidModels(MyModelsEnum.StaticAsteroid300m_A_LOD0, MyModelsEnum.StaticAsteroid300m_A_LOD1, null);\n                case MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid500m_C:\n                    return new MyStaticAsteroidModels(MyModelsEnum.StaticAsteroid500m_A_LOD0, MyModelsEnum.StaticAsteroid500m_A_LOD1, null);\n                case MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid1000m_C:\n                    return new MyStaticAsteroidModels(MyModelsEnum.StaticAsteroid1000m_A_LOD0, MyModelsEnum.StaticAsteroid1000m_A_LOD1, null);\n                case MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid2000m_C:\n                    return new MyStaticAsteroidModels(MyModelsEnum.StaticAsteroid2000m_A_LOD0, MyModelsEnum.StaticAsteroid2000m_A_LOD1, null);\n                case MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid5000m_C:\n                    return new MyStaticAsteroidModels(MyModelsEnum.StaticAsteroid5000m_A_LOD0, MyModelsEnum.StaticAsteroid5000m_A_LOD1, null);\n                case MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid10000m_C:\n                    return new MyStaticAsteroidModels(MyModelsEnum.StaticAsteroid10000m_A_LOD0, MyModelsEnum.StaticAsteroid10000m_A_LOD1, null);\n\n                case MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid10m_D:\n                    return new MyStaticAsteroidModels(MyModelsEnum.StaticAsteroid10m_A_LOD0, MyModelsEnum.StaticAsteroid10m_A_LOD1, null);\n                case MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid20m_D:\n                    return new MyStaticAsteroidModels(MyModelsEnum.StaticAsteroid20m_A_LOD0, MyModelsEnum.StaticAsteroid20m_A_LOD1, null);\n                case MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid30m_D:\n                    return new MyStaticAsteroidModels(MyModelsEnum.StaticAsteroid30m_A_LOD0, MyModelsEnum.StaticAsteroid30m_A_LOD1, null);\n                case MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid50m_D:\n                    return new MyStaticAsteroidModels(MyModelsEnum.StaticAsteroid50m_A_LOD0, MyModelsEnum.StaticAsteroid50m_A_LOD1, null);\n                case MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid100m_D:\n                    return new MyStaticAsteroidModels(MyModelsEnum.StaticAsteroid100m_A_LOD0, MyModelsEnum.StaticAsteroid100m_A_LOD1, null);\n                case MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid300m_D:\n                    return new MyStaticAsteroidModels(MyModelsEnum.StaticAsteroid300m_A_LOD0, MyModelsEnum.StaticAsteroid300m_A_LOD1, null);\n                case MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid500m_D:\n                    return new MyStaticAsteroidModels(MyModelsEnum.StaticAsteroid500m_A_LOD0, MyModelsEnum.StaticAsteroid500m_A_LOD1, null);\n                case MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid1000m_D:\n                    return new MyStaticAsteroidModels(MyModelsEnum.StaticAsteroid1000m_A_LOD0, MyModelsEnum.StaticAsteroid1000m_A_LOD1, null);\n                case MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid2000m_D:\n                    return new MyStaticAsteroidModels(MyModelsEnum.StaticAsteroid2000m_A_LOD0, MyModelsEnum.StaticAsteroid2000m_A_LOD1, null);\n                case MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid5000m_D:\n                    return new MyStaticAsteroidModels(MyModelsEnum.StaticAsteroid5000m_A_LOD0, MyModelsEnum.StaticAsteroid5000m_A_LOD1, null);\n                case MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid10000m_D:\n                    return new MyStaticAsteroidModels(MyModelsEnum.StaticAsteroid10000m_A_LOD0, MyModelsEnum.StaticAsteroid10000m_A_LOD1, null);\n\n                case MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid10m_E:\n                    return new MyStaticAsteroidModels(MyModelsEnum.StaticAsteroid10m_A_LOD0, MyModelsEnum.StaticAsteroid10m_A_LOD1, null);\n                case MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid20m_E:\n                    return new MyStaticAsteroidModels(MyModelsEnum.StaticAsteroid20m_A_LOD0, MyModelsEnum.StaticAsteroid20m_A_LOD1, null);\n                case MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid30m_E:\n                    return new MyStaticAsteroidModels(MyModelsEnum.StaticAsteroid30m_A_LOD0, MyModelsEnum.StaticAsteroid30m_A_LOD1, null);\n                case MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid50m_E:\n                    return new MyStaticAsteroidModels(MyModelsEnum.StaticAsteroid50m_A_LOD0, MyModelsEnum.StaticAsteroid50m_A_LOD1, null);\n                case MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid100m_E:\n                    return new MyStaticAsteroidModels(MyModelsEnum.StaticAsteroid100m_A_LOD0, MyModelsEnum.StaticAsteroid100m_A_LOD1, null);\n                case MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid300m_E:\n                    return new MyStaticAsteroidModels(MyModelsEnum.StaticAsteroid300m_A_LOD0, MyModelsEnum.StaticAsteroid300m_A_LOD1, null);\n                case MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid500m_E:\n                    return new MyStaticAsteroidModels(MyModelsEnum.StaticAsteroid500m_A_LOD0, MyModelsEnum.StaticAsteroid500m_A_LOD1, null);\n                case MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid1000m_E:\n                    return new MyStaticAsteroidModels(MyModelsEnum.StaticAsteroid1000m_A_LOD0, MyModelsEnum.StaticAsteroid1000m_A_LOD1, null);\n                case MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid2000m_E:\n                    return new MyStaticAsteroidModels(MyModelsEnum.StaticAsteroid2000m_A_LOD0, MyModelsEnum.StaticAsteroid2000m_A_LOD1, null);\n                case MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid5000m_E:\n                    return new MyStaticAsteroidModels(MyModelsEnum.StaticAsteroid5000m_A_LOD0, MyModelsEnum.StaticAsteroid5000m_A_LOD1, null);\n                case MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid10000m_E:\n                    return new MyStaticAsteroidModels(MyModelsEnum.StaticAsteroid10000m_A_LOD0, MyModelsEnum.StaticAsteroid10000m_A_LOD1, null);\n                    \n                default:\n                    throw new MyMwcExceptionApplicationShouldNotGetHere();\n            }\n        }\n\n        /// <summary>\n        /// Inits the physics.\n        /// </summary>\n        protected virtual void InitPhysics()\n        {\n            if (!MySectorGenerator.IsOutsideSector(this.GetPosition(), LocalVolume.Radius))\n            {\n                // create the box\n                InitTrianglePhysics(MyMaterialType.ROCK, 1.0f, ModelCollision, null);\n            }\n        }\n\n        public override void InitDrawTechniques()\n        {\n            InitDrawTechniques(m_drawTechnique);\n\n            if (m_meshMaterial != null)\n                m_meshMaterial.DrawTechnique = m_drawTechnique;\n        }\n\n        #endregion\n\n        public override bool Draw(MyRenderObject renderObject)\n        {\n            if (MyFakes.STRANGE_PARTICLES_WHEN_DUST_ON_STATIC_ASTEROIDS)\n            {\n                MyTransparentGeometry.AddPointBillboard(MyTransparentMaterialEnum.Smoke, new Vector4(0.1f, 0.1f, 0.1f, 1.0f),\n                    GetPosition(), 800, GetPosition().Length());\n\n                MyTransparentGeometry.AddPointBillboard(MyTransparentMaterialEnum.Smoke, new Vector4(0.1f, 0.1f, 0.1f, 1.0f),\n                    GetPosition() + (Vector3.Normalize(MyCamera.Position - this.GetPosition()) * 250f), 300, GetPosition().Length() * 2.564f);\n            }\n\n            return base.Draw(renderObject);\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyStaticAsteroid\";\n        }\n\n        public override MyMeshMaterial GetMaterial(MyMesh mesh)\n        {\n            if (m_meshMaterial == null)\n                return base.GetMaterial(mesh);\n\n            m_meshMaterial.PreloadTexture();\n            return m_meshMaterial;\n        }\n\n        public override void Close()\n        {\n            MyModels.OnContentLoaded -= InitDrawTechniques;\n            base.Close();\n        }\n\n        public override MyMwcVoxelMaterialsEnum VoxelMaterial\n        {\n            set\n            {\n                base.VoxelMaterial = value;\n                //m_meshMaterial = MyVoxelMaterials.GetMaterialForMesh(voxelMaterial);\n            }\n        }\n\n        protected override MyMwcObjectBuilder_Base GetObjectBuilderInternal(bool getExactCopy)\n        {\n            var staticAsteroidBuilder = (MyMwcObjectBuilder_StaticAsteroid)base.GetObjectBuilderInternal(getExactCopy);\n\n            staticAsteroidBuilder.AsteroidMaterial = VoxelMaterial;\n\n            return staticAsteroidBuilder;\n        }\n\n        public void Explode()\n        {\n            var explosionEffect = MyParticlesManager.CreateParticleEffect((int) MyParticleEffectsIDEnum.Explosion_Bomb);\n            explosionEffect.WorldMatrix = this.WorldMatrix;\n            explosionEffect.UserScale = .05f * this.WorldVolume.Radius;\n            this.MarkForClose();\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Asteroids/MyVoxelMap.cs",
    "content": "﻿//#define DETECT_POTENCIAL_COLLISIONS_CALLS\n\nusing MinerWars.AppCode.Physics;\nusing MinerWars.AppCode.Game.Physics;\n\nnamespace MinerWars.AppCode.Game.Entities\n{\n    using System;\n    using System.Collections.Generic;\n    using System.Diagnostics;\n    using System.IO;\n    using System.Text;\n    using App;\n    using CommonLIB.AppCode.Networking;\n    using CommonLIB.AppCode.ObjectBuilders;\n    using CommonLIB.AppCode.ObjectBuilders.Voxels;\n    using CommonLIB.AppCode.Utils;\n    using MinerWarsMath;\n    using MinerWarsMath.Graphics;\n    using Models;\n    using TransparentGeometry;\n    using SysUtils;\n    using SysUtils.Utils;\n    using Utils;\n    using VoxelHandShapes;\n    using Voxels;\n    using MinerWars.AppCode.Game.Render;\n    using MinerWars.AppCode.Game.Effects;\n    using MinerWars.AppCode.Game.Managers;\n    using MinerWars.AppCode.Game.Audio;\n    \n    using MinerWars.CommonLIB.AppCode.Generics;\n    using BulletXNA.LinearMath;\n    using System.Linq;\n    //using System.Threading;\n    using MinerWars.AppCode.Game.Managers.Session;\n    using ParallelTasks;\n    using MinerWars.AppCode.Game.TransparentGeometry.Particles;\n    using MinerWars.AppCode.Physics.Collisions;\n    using KeenSoftwareHouse.Library.Parallelization.Threading;\n    using MinerWars.CommonLIB.AppCode.Import;\n\n    delegate void OnVoxelHandShapeCountChange(int changeCount);\n\n    class MyVoxelMap : MyEntity\n    {\n        //  Voxel map ID must be unique, now just on client side, but later maybe on server too\n        public int VoxelMapId;\n\n#if DETECT_POTENCIAL_COLLISIONS_CALLS\n        List<BoundingBox> m_potencianCollsBBs = new List<BoundingBox>();\n#endif\n\n        //  Position of left/bottom corner of this voxel map, in world space (not relative to sector)\n        public Vector3 PositionLeftBottomCorner;\n\n        //  Size of voxel map (in voxels)\n        public MyMwcVector3Int Size;\n        public MyMwcVector3Int SizeMinusOne;\n\n        //  Size of voxel map (in metres)\n        public Vector3 SizeInMetres;\n        public Vector3 SizeInMetresHalf;\n\n        //  Count of voxel data cells in all directions\n        public MyMwcVector3Int DataCellsCount;\n        public MyMwcVector3Int DataCellsCountMinusOne;\n\n        //  Count of voxel render cells in all directions\n        public MyMwcVector3Int RenderCellsCount;\n        public MyMwcVector3Int RenderCellsCountMinusOne;\n\n        public static readonly List<int> AsteroidSizes = new List<int>()\n        {\n            (int)(64  * MyVoxelConstants.VOXEL_SIZE_IN_METRES),\n            (int)(128 * MyVoxelConstants.VOXEL_SIZE_IN_METRES),\n            (int)(256 * MyVoxelConstants.VOXEL_SIZE_IN_METRES),\n            (int)(512 * MyVoxelConstants.VOXEL_SIZE_IN_METRES),\n        };\n\n        //  Array of voxel cells in this voxel map\n        MyVoxelContentCell[][][] m_voxelContentCells;\n\n        //  Here we store material for each voxel; And average material for data cell too (that is used for LOD)\n        MyVoxelMaterialCell[][][] m_voxelMaterialCells;\n\n        private List<MyVoxelHandShape> m_voxelHandShapes;\n        private List<BoundingSphere> m_explosions;\n\n        MyMeshMaterial m_fakeVoxelMaterial = new MyMeshMaterial(\"VoxelMaterial\", null, null, null);\n\n        public FastResourceLock ContentLock = new FastResourceLock();\n        public FastResourceLock OreDepositsLock = new FastResourceLock();\n\n        [ThreadStatic]\n        private static List<int> m_octreeOverlapElementList;\n        private static List<List<int>> m_octreeOverlapElementListCollection = new List<List<int>>();\n\n        private static List<int> OctreeOverlapElementList\n        {\n            get\n            {\n                if (m_octreeOverlapElementList == null)\n                {\n                    m_octreeOverlapElementList = new List<int>(1024);\n                    lock (m_octreeOverlapElementListCollection)\n                    {\n                        m_octreeOverlapElementListCollection.Add(m_octreeOverlapElementList);\n                    }\n                }\n                return m_octreeOverlapElementList;\n            }\n        }\n\n        \n        // Used for fast data cell - line intersection\n        [ThreadStatic]\n        private static List<MyMwcVector3Int> m_sweepResult;\n        private static List<List<MyMwcVector3Int>> m_sweepResultCollection = new List<List<MyMwcVector3Int>>();\n\n        private static List<MyMwcVector3Int> SweepResult\n        {\n            get\n            {\n                if (m_sweepResult == null)\n                {\n                    m_sweepResult = new List<MyMwcVector3Int>(128);\n                    lock (m_sweepResultCollection)\n                    {\n                        m_sweepResultCollection.Add(m_sweepResult);\n                    }\n                }\n                return m_sweepResult;\n            }\n        }\n\n\n        private bool m_isClosed = false; //This is probably temporary - now it is needed by undo/redo - voxel map needs to be completely closed/reinitialized for that\n\n        //  Ore deposits fields        \n        private Dictionary<Int64, MyVoxelMapOreDepositCell> m_oreDepositCells;\n        int m_oreDepositCellsCountX = 0;\n        int m_oreDepositCellsCountY = 0;\n        int m_oreDepositCellsCountZ = 0;\n        public List<MyVoxelMapOreDepositCell> OreDepositCellsContainsOre = new List<MyVoxelMapOreDepositCell>();\n\n        public event OnVoxelHandShapeCountChange OnVoxelHandShapeCountChange;\n\n        // Creates full voxel map, does not initialize base !!! Use only for importing voxel maps from models !!!\n        public virtual void Init(Vector3 position, MyMwcVector3Int size, MyMwcVoxelMaterialsEnum material)\n        {\n            InitVoxelMap(position, size, material);\n        }\n\n        static byte[] buffer = new byte[MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS_TOTAL];\n\n        public virtual void Init(string hudLabelText, Vector3 position, MyMwcObjectBuilder_VoxelMap objectBuilder)\n        {\n            StringBuilder hudLabelTextSb = (hudLabelText == null) ? null : new StringBuilder(hudLabelText);\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"base init\");\n\n            base.Init(hudLabelTextSb, null, null, null, null, objectBuilder);\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"Decompress file\");\n\n            LoadFile(position, objectBuilder);\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        private void LoadFile(Vector3 position, MyMwcObjectBuilder_VoxelMap objectBuilder)\n        {\n            MyCompressionFileLoad decompressFile = null;\n\n            if (objectBuilder.VoxelData != null)\n            {\n                decompressFile = new MyCompressionFileLoad(objectBuilder.VoxelData);    \n            }\n            else\n            {\n                string voxelFilePath = MyVoxelFiles.Get(objectBuilder.VoxelFile).GetVoxFilePath();\n                m_voxelFile = objectBuilder.VoxelFile;\n\n                decompressFile = new MyCompressionFileLoad(voxelFilePath);\n            }\n\n            \n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"Decompress file header\");\n\n            //  Version of a VOX file\n            int fileVersion = decompressFile.GetInt32();\n\n            //  Not supported VOX file version\n            MyCommonDebugUtils.AssertRelease(fileVersion == MyVoxelConstants.VOXEL_FILE_ACTUAL_VERSION);\n\n            //  Size of this voxel map (in voxels)\n            int sizeX = decompressFile.GetInt32();\n            int sizeY = decompressFile.GetInt32();\n            int sizeZ = decompressFile.GetInt32();\n\n            //  Size of data cell in voxels. Has to be the same as current size specified by our constants.\n            int cellSizeX = decompressFile.GetInt32();\n            int cellSizeY = decompressFile.GetInt32();\n            int cellSizeZ = decompressFile.GetInt32();\n            MyCommonDebugUtils.AssertDebug(\n                cellSizeX == MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS &&\n                cellSizeY == MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS &&\n                cellSizeZ == MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS);\n\n            int cellsCountX = sizeX / cellSizeX;\n            int cellsCountY = sizeY / cellSizeY;\n            int cellsCountZ = sizeZ / cellSizeZ;\n\n            //  Init ore deposit cells\n            if (MyFakes.ENABLE_DISPLAYING_ORE_ON_HUD)\n            {\n                m_oreDepositCellsCountX = cellsCountX / MyVoxelConstants.VOXEL_MAP_ORE_DEPOSIT_CELL_IN_DATA_CELLS;\n                m_oreDepositCellsCountY = cellsCountY / MyVoxelConstants.VOXEL_MAP_ORE_DEPOSIT_CELL_IN_DATA_CELLS;\n                m_oreDepositCellsCountZ = cellsCountZ / MyVoxelConstants.VOXEL_MAP_ORE_DEPOSIT_CELL_IN_DATA_CELLS;\n\n                m_oreDepositCells = new Dictionary<long, MyVoxelMapOreDepositCell>();\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"InitVoxelMap\");\n\n            //  Init this voxel map (arrays are allocated, sizes calculated). It must be called before we start reading and seting voxels.\n            InitVoxelMap(position, new MyMwcVector3Int(sizeX, sizeY, sizeZ), objectBuilder.VoxelMaterial);\n            \n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"Cells foreach\");\n\n            MyMwcVector3Int cellCoord;\n            for (cellCoord.X = 0; cellCoord.X < cellsCountX; cellCoord.X++)\n            {\n                for (cellCoord.Y = 0; cellCoord.Y < cellsCountY; cellCoord.Y++)\n                {\n                    for (cellCoord.Z = 0; cellCoord.Z < cellsCountZ; cellCoord.Z++)\n                    {\n                        //MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"cell\");\n\n                        MyVoxelCellType cellType = (MyVoxelCellType)decompressFile.GetByte();\n\n                        //  Cell's are FULL by default, therefore we don't need to change them\n                        if (cellType != MyVoxelCellType.FULL)\n                        {\n                            MyVoxelContentCell newCell = AddCell(ref cellCoord);\n\n                            //  If cell is empty we don't need to set all its voxels to empty. Just allocate cell and set its type to empty.\n                            if (cellType == MyVoxelCellType.EMPTY)\n                            {\n                                newCell.SetToEmpty();\n                            }\n                            else if (cellType == MyVoxelCellType.MIXED)\n                            {\n                                decompressFile.GetBytes(cellSizeX * cellSizeY * cellSizeZ, buffer);\n                                if (!MyFakes.MWCURIOSITY)\n                                {\n                                    newCell.SetAllVoxelContents(buffer);\n                                }\n                            }\n                        }\n                        //MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n                    }\n                }\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"Materials + indestructible\");\n\n            if (!decompressFile.EndOfFile())\n            {\n                // Read materials and indestructible\n                for (cellCoord.X = 0; cellCoord.X < cellsCountX; cellCoord.X++)\n                {\n                    for (cellCoord.Y = 0; cellCoord.Y < cellsCountY; cellCoord.Y++)\n                    {\n                        for (cellCoord.Z = 0; cellCoord.Z < cellsCountZ; cellCoord.Z++)\n                        {\n                            //MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"mat\");\n                            var matCell = m_voxelMaterialCells[cellCoord.X][cellCoord.Y][cellCoord.Z];\n\n                            bool isSingleMaterial = decompressFile.GetByte() == 1;\n                            MyMwcVoxelMaterialsEnum material = MyMwcVoxelMaterialsEnum.Indestructible_01;\n                            byte indestructibleContent = 0;\n\n                            MyMwcVector3Int oreDepositCellCoord = GetOreDepositCellCoordByDataCellCoord(ref cellCoord);\n\n                            if (isSingleMaterial)\n                            {\n                                //MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"single material\");\n                                material = (MyMwcVoxelMaterialsEnum)decompressFile.GetByte();\n                                indestructibleContent = MyVoxelMaterials.IsIndestructible(material) ? (byte)255 : (byte)0;\n                                this.SetVoxelMaterialAndIndestructibleContentForWholeCell(material, indestructibleContent, ref cellCoord);\n                                //MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n                            }\n                            else\n                            {\n                                //MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"mixed material\");                                \n\n                                MyMwcVector3Int voxelCoordInCell;\n                                for (voxelCoordInCell.X = 0; voxelCoordInCell.X < MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS; voxelCoordInCell.X++)\n                                {\n                                    for (voxelCoordInCell.Y = 0; voxelCoordInCell.Y < MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS; voxelCoordInCell.Y++)\n                                    {\n                                        for (voxelCoordInCell.Z = 0; voxelCoordInCell.Z < MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS; voxelCoordInCell.Z++)\n                                        {\n                                            material = (MyMwcVoxelMaterialsEnum)decompressFile.GetByte();\n                                            indestructibleContent = decompressFile.GetByte();\n                                            matCell.SetMaterialAndIndestructibleContent(material, indestructibleContent, ref voxelCoordInCell);\n                                        }\n                                    }\n                                }\n                                matCell.CalcAverageCellMaterial();\n                                //MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n                            }\n                            //MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n                        }\n                    }\n                }\n            }\n\n            // compute ore deposits\n            if (MyFakes.ENABLE_DISPLAYING_ORE_ON_HUD)\n            {\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"Compute ore deposits\");\n\n                for (cellCoord.X = 0; cellCoord.X < cellsCountX; cellCoord.X++)\n                {\n                    for (cellCoord.Y = 0; cellCoord.Y < cellsCountY; cellCoord.Y++)\n                    {\n                        for (cellCoord.Z = 0; cellCoord.Z < cellsCountZ; cellCoord.Z++)\n                        {\n                            MyMwcVector3Int oreDepositCellCoord = GetOreDepositCellCoordByDataCellCoord(ref cellCoord);\n                            var matCell = m_voxelMaterialCells[cellCoord.X][cellCoord.Y][cellCoord.Z];\n                            var contentCell = m_voxelContentCells[cellCoord.X][cellCoord.Y][cellCoord.Z];\n\n                            if (matCell.IsSingleMaterialForWholeCell())\n                            {\n                                //MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"single material\");\n                                var material = matCell.GetAverageCellMaterial();\n                                if (MyVoxelMapOreMaterials.IsRareOre(material))\n                                {\n                                    int content = (contentCell == null) ? MyVoxelConstants.VOXEL_CELL_CONTENT_SUM_TOTAL : contentCell.GetVoxelContentSum();\n                                    if (GetOreDepositCell(ref oreDepositCellCoord) == null)\n                                    {\n                                        AddOreDepositCell(ref oreDepositCellCoord).SetOreContent(material, content);\n                                    }\n                                }\n                                //MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n                            }\n                            else\n                            {\n                                //MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"more materials\");\n                                // buffer one rare material\n                                MyMwcVoxelMaterialsEnum bufferedMaterial = MyMwcVoxelMaterialsEnum.Ice_01;  // IMPORTANT: the default value must be a rare material\n                                int bufferedContent = 0;\n\n                                MyMwcVector3Int voxelCoordInCell;\n                                for (voxelCoordInCell.X = 0; voxelCoordInCell.X < MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS; voxelCoordInCell.X++)\n                                {\n                                    for (voxelCoordInCell.Y = 0; voxelCoordInCell.Y < MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS; voxelCoordInCell.Y++)\n                                    {\n                                        for (voxelCoordInCell.Z = 0; voxelCoordInCell.Z < MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS; voxelCoordInCell.Z++)\n                                        {\n                                            var material = matCell.GetMaterial(ref voxelCoordInCell);\n                                            if (material == bufferedMaterial)  // do we buffer this material?\n                                            {\n                                                int content = (contentCell == null) ? MyVoxelConstants.VOXEL_CONTENT_FULL : contentCell.GetVoxelContent(ref voxelCoordInCell);\n                                                bufferedContent += content;  // yes: just update the content\n                                            }\n                                            else\n                                            {\n                                                if (MyVoxelMapOreMaterials.IsRareOre(material))  // skip non-rare materials\n                                                {\n                                                    int content = (contentCell == null) ? MyVoxelConstants.VOXEL_CONTENT_FULL : contentCell.GetVoxelContent(ref voxelCoordInCell);\n                                                    if (content > 0)  // skip empty cells\n                                                    {\n                                                        // new rare material: if there's any old buffered content, add it to the deposit\n                                                        if (bufferedContent > 0 && GetOreDepositCell(ref oreDepositCellCoord) == null)\n                                                        {\n                                                            AddOreDepositCell(ref oreDepositCellCoord).SetOreContent(bufferedMaterial, bufferedContent);\n                                                        }\n\n                                                        bufferedMaterial = material;\n                                                        bufferedContent = content;\n                                                    }\n                                                }\n                                            }\n                                        }\n                                    }\n                                }\n\n                                if (bufferedContent > 0 && GetOreDepositCell(ref oreDepositCellCoord) == null)  // if there's any buffered content left, add it to the deposit\n                                {\n                                    AddOreDepositCell(ref oreDepositCellCoord).SetOreContent(bufferedMaterial, bufferedContent);\n                                }\n                                //MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n                            }\n                        }\n                    }\n                }\n            }\n        }\n\n        public void OptimizeSize()\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"OptimizeSize\");\n\n            MyMwcVector3Int cellCoord;\n            for (cellCoord.X = 0; cellCoord.X < DataCellsCount.X; cellCoord.X++)\n            {\n                for (cellCoord.Y = 0; cellCoord.Y < DataCellsCount.Y; cellCoord.Y++)\n                {\n                    for (cellCoord.Z = 0; cellCoord.Z < DataCellsCount.Z; cellCoord.Z++)\n                    {\n                        var matCell = this.GetVoxelMaterialCells()[cellCoord.X][cellCoord.Y][cellCoord.Z];\n                        matCell.OptimizeSize();\n                    }\n                }\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        //  This method initializes voxel map (size, position, etc) but doesn't load voxels\n        //  It only presets all materials to values specified in 'defaultMaterial' - so it will become material everywhere.\n        void InitVoxelMap(Vector3 position, MyMwcVector3Int size, MyMwcVoxelMaterialsEnum material)\n        {\n            MyMwcLog.WriteLine(\"MyVoxelMap.InitVoxelMap() - Start\");\n            MyMwcLog.IncreaseIndent();\n\n            VoxelMaterial = material;\n\n            VoxelMapId = MyVoxelMaps.GetUniqueVoxelMapId();\n\n            MyMwcLog.WriteLine(\"ID: \" + VoxelMapId, LoggingOptions.VOXEL_MAPS);\n            MyMwcLog.WriteLine(\"Size: \" + MyUtils.GetFormatedVector3Int(size), LoggingOptions.VOXEL_MAPS);\n\n            //  If you need more voxel maps, enlarge this constant.\n            MyCommonDebugUtils.AssertRelease(VoxelMapId <= MyVoxelConstants.MAX_VOXEL_MAP_ID);\n\n            Size = size;\n            SizeMinusOne = new MyMwcVector3Int(Size.X - 1, Size.Y - 1, Size.Z - 1);\n\n            SizeInMetres = GetVoxelSizeInMetres(ref size);\n            SizeInMetresHalf = SizeInMetres / 2.0f;\n\n            LocalAABB = new BoundingBox(-SizeInMetresHalf, SizeInMetresHalf);\n\n            PositionLeftBottomCorner = position;\n            SetWorldMatrix(Matrix.CreateTranslation(PositionLeftBottomCorner + SizeInMetresHalf));\n\n            Flags |= EntityFlags.EditableInEditor;\n\n            //  If you need larged voxel maps, enlarge this constant.\n            MyCommonDebugUtils.AssertRelease(Size.X <= MyVoxelConstants.MAX_VOXEL_MAP_SIZE_IN_VOXELS);\n            MyCommonDebugUtils.AssertRelease(Size.Y <= MyVoxelConstants.MAX_VOXEL_MAP_SIZE_IN_VOXELS);\n            MyCommonDebugUtils.AssertRelease(Size.Z <= MyVoxelConstants.MAX_VOXEL_MAP_SIZE_IN_VOXELS);\n\n            //  Voxel map size must be multiple of a voxel data cell size.\n            MyCommonDebugUtils.AssertRelease((Size.X & MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS_MASK) == 0);\n            MyCommonDebugUtils.AssertRelease((Size.Y & MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS_MASK) == 0);\n            MyCommonDebugUtils.AssertRelease((Size.Z & MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS_MASK) == 0);\n            DataCellsCount.X = Size.X >> MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS_BITS;\n            DataCellsCount.Y = Size.Y >> MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS_BITS;\n            DataCellsCount.Z = Size.Z >> MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS_BITS;\n            DataCellsCountMinusOne = new MyMwcVector3Int(DataCellsCount.X - 1, DataCellsCount.Y - 1, DataCellsCount.Z - 1);\n\n            //  Voxel map size must be multiple of a voxel data cell size.\n            MyCommonDebugUtils.AssertRelease((Size.X % MyVoxelConstants.VOXEL_RENDER_CELL_SIZE_IN_VOXELS) == 0);\n            MyCommonDebugUtils.AssertRelease((Size.Y % MyVoxelConstants.VOXEL_RENDER_CELL_SIZE_IN_VOXELS) == 0);\n            MyCommonDebugUtils.AssertRelease((Size.Z % MyVoxelConstants.VOXEL_RENDER_CELL_SIZE_IN_VOXELS) == 0);\n            RenderCellsCount.X = Size.X / MyVoxelConstants.VOXEL_RENDER_CELL_SIZE_IN_VOXELS;\n            RenderCellsCount.Y = Size.Y / MyVoxelConstants.VOXEL_RENDER_CELL_SIZE_IN_VOXELS;\n            RenderCellsCount.Z = Size.Z / MyVoxelConstants.VOXEL_RENDER_CELL_SIZE_IN_VOXELS;\n            RenderCellsCountMinusOne = new MyMwcVector3Int(RenderCellsCount.X - 1, RenderCellsCount.Y - 1, RenderCellsCount.Z - 1);\n\n            m_fakeVoxelMaterial.DrawTechnique = MyMeshDrawTechnique.VOXEL_MAP;\n            //  Array of voxel cells in this voxel map\n            m_voxelContentCells = new MyVoxelContentCell[DataCellsCount.X][][];\n            for (int x = 0; x < m_voxelContentCells.Length; x++)\n            {\n                m_voxelContentCells[x] = new MyVoxelContentCell[DataCellsCount.Y][];\n                for (int y = 0; y < m_voxelContentCells[x].Length; y++)\n                {\n                    m_voxelContentCells[x][y] = new MyVoxelContentCell[DataCellsCount.Z];\n                }\n            }\n\n            CastShadows = true;\n\n            InitRenderObjects();\n\n            //////////////////////////////////////////////////////////////////////////////////////////////////////////////\n            //  Materials\n            //////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\n            byte defaultIndestructibleContents = GetIndestructibleContentByMaterial(material);\n\n            m_voxelMaterialCells = new MyVoxelMaterialCell[DataCellsCount.X][][];\n            for (int x = 0; x < DataCellsCount.X; x++)\n            {\n                m_voxelMaterialCells[x] = new MyVoxelMaterialCell[DataCellsCount.Y][];\n                for (int y = 0; y < DataCellsCount.Y; y++)\n                {\n                    m_voxelMaterialCells[x][y] = new MyVoxelMaterialCell[DataCellsCount.Z];\n                    for (int z = 0; z < DataCellsCount.Z; z++)\n                    {\n                        m_voxelMaterialCells[x][y][z] = new MyVoxelMaterialCell(material, defaultIndestructibleContents);\n                    }\n                }\n            }\n\n\n            //////////////////////////////////////////////////////////////////////////////////////////////////////////////\n            //  Voxel map as phys object\n            //////////////////////////////////////////////////////////////////////////////////////////////////////////////            \n\n            //initialize list of voxelHandShapes used for editor purpose\n            m_voxelHandShapes = new List<MyVoxelHandShape>(100);\n\n            //initialize list of explosions, to save cutted spheres fast, before we convert them to voxel hands\n            m_explosions = new List<BoundingSphere>(1000);\n\n            MyPhysicsObjects physobj = MyPhysics.physicsSystem.GetPhysicsObjects();\n            MyRBVoxelElementDesc voxelDesc = physobj.GetRBVoxelElementDesc();\n            MyMaterialType materialType = MyMaterialType.ROCK;\n\n            voxelDesc.SetToDefault();\n            voxelDesc.m_Size = SizeInMetres;\n            voxelDesc.m_RBMaterial = MyMaterialsConstants.GetMaterialProperties(materialType).PhysicsMaterial;\n\n            MyRBVoxelElement voxEl = (MyRBVoxelElement)physobj.CreateRBElement(voxelDesc);\n\n            this.Physics = new MyPhysicsBody(this, 100000, RigidBodyFlag.RBF_RBO_STATIC) { MaterialType = materialType };\n            this.Physics.Enabled = true;\n            this.Physics.AddElement(voxEl, true);\n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyVoxelMap.InitVoxelMap() - End\");\n        }\n\n        // Not used\n        //public void Reinitialize()\n        //{\n        //    if (m_isClosed)\n        //    {\n        //        Init(this.Name, this.PositionLeftBottomCorner, (MyMwcObjectBuilder_VoxelMap)this.GetObjectBuilderInternal());\n        //        m_isClosed = false;\n        //    }\n        //}\n\n        //  Merges a specified voxel map (from a file) into our actual voxel map at a specified position. \n        //  This merging is slower than loading voxel map through constructor (because we are setting voxels through SetVoxelContent) - so use it only \n        //  for merging-in small areas.\n        //  Parameter 'voxelPosition' - where will be placed new merged voxel map withing actual voxel map. It's in voxel coords.\n        //  Voxel map we are trying to merge into existing voxel map can be bigger or outside of area of existing voxel map. This method will just ignore those parts.\n        //  Coordinate of 'voxelPosition' DOESN'T NEED to be aligned to data cell (multiplies of 8).\n        public void MergeVoxelContents(MyMwcVoxelFilesEnum voxelFile, MyMwcVector3Short voxelPosition, MyMwcVoxelMapMergeTypeEnum mergeType)\n        {\n            MyCompressionFileLoad decompressFile = new MyCompressionFileLoad(MyVoxelFiles.Get(voxelFile).GetVoxFilePath());\n\n            //  Version of a VOX file\n            int fileVersion = decompressFile.GetInt32();\n\n            //  Not supported VOX file version\n            MyCommonDebugUtils.AssertRelease(fileVersion == MyVoxelConstants.VOXEL_FILE_ACTUAL_VERSION);\n\n            //  Size of this voxel map (in voxels)\n            int sizeX = decompressFile.GetInt32();\n            int sizeY = decompressFile.GetInt32();\n            int sizeZ = decompressFile.GetInt32();\n\n            //  Size of data cell in voxels, doesn't have to be same as current size specified by our constants.\n            int cellSizeX = decompressFile.GetInt32();\n            int cellSizeY = decompressFile.GetInt32();\n            int cellSizeZ = decompressFile.GetInt32();\n\n            int cellsCountX = sizeX / cellSizeX;\n            int cellsCountY = sizeY / cellSizeY;\n            int cellsCountZ = sizeZ / cellSizeZ;\n\n            MyMwcVector3Int cellCoord;\n            for (cellCoord.X = 0; cellCoord.X < cellsCountX; cellCoord.X++)\n            {\n                for (cellCoord.Y = 0; cellCoord.Y < cellsCountY; cellCoord.Y++)\n                {\n                    for (cellCoord.Z = 0; cellCoord.Z < cellsCountZ; cellCoord.Z++)\n                    {\n                        MyVoxelCellType cellType = (MyVoxelCellType)decompressFile.GetByte();\n\n                        MyMwcVector3Int cellCoordInVoxels = GetVoxelCoordinatesOfDataCell(ref cellCoord);\n\n                        //  Go through every voxel in a cell and change it's value. If cell is empty, set all voxels to empty. Otherwise set by value from file.\n                        MyMwcVector3Int voxelCoordInCell;\n                        for (voxelCoordInCell.X = 0; voxelCoordInCell.X < cellSizeX; voxelCoordInCell.X++)\n                        {\n                            for (voxelCoordInCell.Y = 0; voxelCoordInCell.Y < cellSizeY; voxelCoordInCell.Y++)\n                            {\n                                for (voxelCoordInCell.Z = 0; voxelCoordInCell.Z < cellSizeZ; voxelCoordInCell.Z++)\n                                {\n                                    byte newContent;\n                                    if (cellType == MyVoxelCellType.EMPTY)\n                                    {\n                                        newContent = MyVoxelConstants.VOXEL_CONTENT_EMPTY;\n                                    }\n                                    else if (cellType == MyVoxelCellType.FULL)\n                                    {\n                                        newContent = MyVoxelConstants.VOXEL_CONTENT_FULL;\n                                    }\n                                    else\n                                    {\n                                        newContent = decompressFile.GetByte();\n                                    }\n\n                                    MyMwcVector3Int voxelCoord;\n                                    voxelCoord.X = voxelPosition.X + cellCoordInVoxels.X + voxelCoordInCell.X;\n                                    voxelCoord.Y = voxelPosition.Y + cellCoordInVoxels.Y + voxelCoordInCell.Y;\n                                    voxelCoord.Z = voxelPosition.Z + cellCoordInVoxels.Z + voxelCoordInCell.Z;\n\n                                    if (IsVoxelInVoxelMap(ref voxelCoord) == true)\n                                    {\n                                        byte originalContent = GetVoxelContent(ref voxelCoord);\n\n                                        if (mergeType == MyMwcVoxelMapMergeTypeEnum.ADD)\n                                        {\n                                            //  Set new content only if its value is higher than actual - so we only can add matter\n                                            if (newContent > originalContent)\n                                            {\n                                                SetVoxelContent(newContent, ref voxelCoord);\n                                            }\n                                        }\n                                        else if (mergeType == MyMwcVoxelMapMergeTypeEnum.INVERSE_AND_SUBTRACT)\n                                        {\n                                            //  Subtract new content from original, so if original voxel is full and new is full too, result will be empty voxel\n                                            //  If new is empty, nothing will happen. If new is full but original is empty, nothing will happen either.\n                                            SetVoxelContent((byte)MyMwcUtils.GetClampInt((int)originalContent - (int)newContent, MyVoxelConstants.VOXEL_CONTENT_EMPTY, MyVoxelConstants.VOXEL_CONTENT_FULL), ref voxelCoord);\n                                        }\n                                        else\n                                        {\n                                            throw new MyMwcExceptionApplicationShouldNotGetHere();\n                                        }\n                                    }\n                                }\n                            }\n                        }\n                    }\n                }\n            }\n        }\n\n        //  Sets new voxel material and invalidates cache\n        public void SetVoxelMaterialInvalidateCache(MyMwcVoxelMaterialsEnum materialToSet, BoundingSphere sphere, ref bool changed)\n        {\n            //  Get min corner of the sphere\n            MyMwcVector3Int minCorner = GetVoxelCoordinateFromMeters(new Vector3(\n                sphere.Center.X - sphere.Radius - 2 * MyVoxelConstants.VOXEL_SIZE_IN_METRES,\n                sphere.Center.Y - sphere.Radius - 2 * MyVoxelConstants.VOXEL_SIZE_IN_METRES,\n                sphere.Center.Z - sphere.Radius - 2 * MyVoxelConstants.VOXEL_SIZE_IN_METRES));\n\n            //  Get max corner of the sphere\n            MyMwcVector3Int maxCorner = GetVoxelCoordinateFromMeters(new Vector3(\n                sphere.Center.X + sphere.Radius + 2 * MyVoxelConstants.VOXEL_SIZE_IN_METRES,\n                sphere.Center.Y + sphere.Radius + 2 * MyVoxelConstants.VOXEL_SIZE_IN_METRES,\n                sphere.Center.Z + sphere.Radius + 2 * MyVoxelConstants.VOXEL_SIZE_IN_METRES));\n\n            FixVoxelCoord(ref minCorner);\n            FixVoxelCoord(ref maxCorner);\n\n            MyMwcVector3Int minChanged = maxCorner;\n            MyMwcVector3Int maxChanged = minCorner;\n\n            bool isMaterialToSetIndestructible = MyVoxelMaterials.IsIndestructible(materialToSet);\n\n            MyMwcVector3Int tempVoxelCoord;\n            for (tempVoxelCoord.X = minCorner.X; tempVoxelCoord.X <= maxCorner.X; tempVoxelCoord.X++)\n            {\n                for (tempVoxelCoord.Y = minCorner.Y; tempVoxelCoord.Y <= maxCorner.Y; tempVoxelCoord.Y++)\n                {\n                    for (tempVoxelCoord.Z = minCorner.Z; tempVoxelCoord.Z <= maxCorner.Z; tempVoxelCoord.Z++)\n                    {\n                        if (IsVoxelInVoxelMap(ref tempVoxelCoord))\n                        {\n                            Vector3 voxelPosition = GetVoxelCenterPositionAbsolute(ref tempVoxelCoord);\n                            float dist = (voxelPosition - sphere.Center).Length();\n                            float diff = dist - sphere.Radius;\n\n                            if (diff <= MyVoxelConstants.VOXEL_SIZE_IN_METRES * 1.5f)  // could be VOXEL_SIZE_IN_METRES_HALF, but we want to set material in empty cells correctly\n                            {\n                                byte indestructibleContentToSet = MyVoxelConstants.VOXEL_CONTENT_FULL;\n                                if (diff >= MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF)  // outside\n                                {\n                                    indestructibleContentToSet = MyVoxelConstants.VOXEL_CONTENT_EMPTY;\n                                }\n                                else if (diff >= -MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF)  // boundary\n                                {\n                                    indestructibleContentToSet = (byte)(MyVoxelConstants.VOXEL_ISO_LEVEL - diff / MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF * MyVoxelConstants.VOXEL_ISO_LEVEL);\n                                }\n\n                                MyMwcVoxelMaterialsEnum originalMaterial;\n                                byte originalIndestructibleContent;\n\n                                GetMaterialAndIndestructibleContent(ref tempVoxelCoord, out originalMaterial, out originalIndestructibleContent);\n\n                                byte newIndestructibleContent;\n                                if (isMaterialToSetIndestructible)\n                                    newIndestructibleContent = Math.Max(indestructibleContentToSet, originalIndestructibleContent);  // add\n                                else\n                                    newIndestructibleContent = Math.Min((byte)(MyVoxelConstants.VOXEL_CONTENT_FULL - indestructibleContentToSet), originalIndestructibleContent);  // subtract\n\n                                // Change the material: \n                                // - always on boundaries between material and nothing\n                                // - smoothly on inner boundaries\n                                MyMwcVoxelMaterialsEnum newMaterial = materialToSet;\n                                if (diff > 0)\n                                {\n                                    byte content = GetVoxelContent(ref tempVoxelCoord);\n                                    if (content == MyVoxelConstants.VOXEL_CONTENT_FULL)\n                                        newMaterial = originalMaterial;\n                                    if (diff >= MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF && content != MyVoxelConstants.VOXEL_CONTENT_EMPTY)  // set material behind boundary only for empty voxels\n                                        newMaterial = originalMaterial;\n                                }\n\n                                if (originalMaterial == newMaterial && originalIndestructibleContent == newIndestructibleContent)\n                                {\n                                    continue;\n                                }\n\n                                SetVoxelMaterialAndIndestructibleContent(newMaterial, newIndestructibleContent, ref tempVoxelCoord);\n                                changed = true;\n\n                                if (tempVoxelCoord.X < minChanged.X) minChanged.X = tempVoxelCoord.X;\n                                if (tempVoxelCoord.Y < minChanged.Y) minChanged.Y = tempVoxelCoord.Y;\n                                if (tempVoxelCoord.Z < minChanged.Z) minChanged.Z = tempVoxelCoord.Z;\n                                if (tempVoxelCoord.X > maxChanged.X) maxChanged.X = tempVoxelCoord.X;\n                                if (tempVoxelCoord.Y > maxChanged.Y) maxChanged.Y = tempVoxelCoord.Y;\n                                if (tempVoxelCoord.Z > maxChanged.Z) maxChanged.Z = tempVoxelCoord.Z;\n                            }\n                        }\n                    }\n                }\n            }\n\n            if (changed == true)\n            {\n                //  Extend borders for cleaning by one voxel\n                minChanged.X -= 1;\n                minChanged.Y -= 1;\n                minChanged.Z -= 1;\n                maxChanged.X += 1;\n                maxChanged.Y += 1;\n                maxChanged.Z += 1;\n                FixVoxelCoord(ref minChanged);\n                FixVoxelCoord(ref maxChanged);\n\n                // Optimize\n                MyMwcVector3Int minCellCoord = GetDataCellCoordinate(ref minChanged);\n                MyMwcVector3Int maxCellCoord = GetDataCellCoordinate(ref maxChanged);\n                MyMwcVector3Int cellCoord;\n                for (cellCoord.X = minCellCoord.X; cellCoord.X <= maxCellCoord.X; cellCoord.X++)\n                    for (cellCoord.Y = minCellCoord.Y; cellCoord.Y <= maxCellCoord.Y; cellCoord.Y++)\n                        for (cellCoord.Z = minCellCoord.Z; cellCoord.Z <= maxCellCoord.Z; cellCoord.Z++)\n                            GetVoxelMaterialCells()[cellCoord.X][cellCoord.Y][cellCoord.Z].OptimizeSize();\n\n                InvalidateCache(minChanged, maxChanged);\n            }\n        }\n\n        //  Sets new voxel material and invalidates cache\n        public void SetVoxelMaterialInvalidateCache(MyMwcVoxelMaterialsEnum materialToSet, BoundingBox box, ref bool changed)\n        {\n            //  Get min corner of the box\n            MyMwcVector3Int minCorner = GetVoxelCoordinateFromMeters(new Vector3(\n                box.Min.X - MyVoxelConstants.VOXEL_SIZE_IN_METRES,\n                box.Min.Y - MyVoxelConstants.VOXEL_SIZE_IN_METRES,\n                box.Min.Z - MyVoxelConstants.VOXEL_SIZE_IN_METRES));\n\n\n            //  Get max corner of the box\n            MyMwcVector3Int maxCorner = GetVoxelCoordinateFromMeters(new Vector3(\n                box.Max.X + MyVoxelConstants.VOXEL_SIZE_IN_METRES,\n                box.Max.Y + MyVoxelConstants.VOXEL_SIZE_IN_METRES,\n                box.Max.Z + MyVoxelConstants.VOXEL_SIZE_IN_METRES));\n\n            FixVoxelCoord(ref minCorner);\n            FixVoxelCoord(ref maxCorner);\n\n            MyMwcVector3Int minChanged = maxCorner;\n            MyMwcVector3Int maxChanged = minCorner;\n\n            bool materialChanged = false;\n\n            MyMwcVector3Int tempVoxelCoord;\n            for (tempVoxelCoord.X = minCorner.X; tempVoxelCoord.X <= maxCorner.X; tempVoxelCoord.X++)\n            {\n                for (tempVoxelCoord.Y = minCorner.Y; tempVoxelCoord.Y <= maxCorner.Y; tempVoxelCoord.Y++)\n                {\n                    for (tempVoxelCoord.Z = minCorner.Z; tempVoxelCoord.Z <= maxCorner.Z; tempVoxelCoord.Z++)\n                    {\n                        if (IsVoxelInVoxelMap(ref tempVoxelCoord))\n                        {\n                            //  Actual voxel content\n                            byte voxelContent = GetVoxelContent(ref tempVoxelCoord);\n                            byte indestructibleContent = MyVoxelConstants.VOXEL_CONTENT_EMPTY;\n\n                            SetVoxelMaterialAndIndestructibleContent(materialToSet, indestructibleContent, ref tempVoxelCoord);\n                            materialChanged = true;\n\n                            if (tempVoxelCoord.X < minChanged.X) minChanged.X = tempVoxelCoord.X;\n                            if (tempVoxelCoord.Y < minChanged.Y) minChanged.Y = tempVoxelCoord.Y;\n                            if (tempVoxelCoord.Z < minChanged.Z) minChanged.Z = tempVoxelCoord.Z;\n                            if (tempVoxelCoord.X > maxChanged.X) maxChanged.X = tempVoxelCoord.X;\n                            if (tempVoxelCoord.Y > maxChanged.Y) maxChanged.Y = tempVoxelCoord.Y;\n                            if (tempVoxelCoord.Z > maxChanged.Z) maxChanged.Z = tempVoxelCoord.Z;\n                        }\n                    }\n                }\n            }\n\n            if (materialChanged == true)\n            {\n                //  Extend borders for cleaning, so it's one pixel on both sides\n                minChanged.X -= 1;\n                minChanged.Y -= 1;\n                minChanged.Z -= 1;\n                maxChanged.X += 1;\n                maxChanged.Y += 1;\n                maxChanged.Z += 1;\n                FixVoxelCoord(ref minChanged);\n                FixVoxelCoord(ref maxChanged);\n\n                // Optimize\n                MyMwcVector3Int minCellCoord = GetDataCellCoordinate(ref minChanged);\n                MyMwcVector3Int maxCellCoord = GetDataCellCoordinate(ref maxChanged);\n                MyMwcVector3Int cellCoord;\n                for (cellCoord.X = minCellCoord.X; cellCoord.X <= maxCellCoord.X; cellCoord.X++)\n                    for (cellCoord.Y = minCellCoord.Y; cellCoord.Y <= maxCellCoord.Y; cellCoord.Y++)\n                        for (cellCoord.Z = minCellCoord.Z; cellCoord.Z <= maxCellCoord.Z; cellCoord.Z++)\n                            GetVoxelMaterialCells()[cellCoord.X][cellCoord.Y][cellCoord.Z].OptimizeSize();\n\n                InvalidateCache(minChanged, maxChanged);\n            }\n        }\n\n        //  Merges specified materials (from file) into our actual voxel map - overwriting materials only.\n        //  We are using a regular voxel map to define areas where we want to set a specified material. Empty voxels are ignored and \n        //  only mixed/full voxels are used to tell us that that voxel will contain new material - 'materialToSet'.\n        //  If we are seting indestructible material, voxel content values from merged voxel map will be used to define indestructible content.\n        //  Parameter 'voxelPosition' - place where we will place merged voxel map withing actual voxel map. It's in voxel coords.\n        //  IMPORTANT: THIS METHOD WILL WORK ONLY IF WE PLACE THE MAP THAT WE TRY TO MERGE FROM IN VOXEL COORDINATES THAT ARE MULTIPLY OF DATA CELL SIZE\n        //  This method is used to load small material areas, overwriting actual material only if value from file is 1. Zeros are ignored (it's empty space).\n        //  This method is quite fast, even on large maps - 512x512x512, so we can do more overwrites.\n        //  Parameter 'materialToSet' tells us what material to set at places which are full in file. Empty are ignored - so stay as they were before this method was called.\n        //  IMPORTANT: THIS MERGE MATERIAL CAN BE CALLED ONLY AFTER ALL VOXEL CONTENTS ARE LOADED. THAT'S BECAUSE WE NEED TO KNOW THEM FOR MIN CONTENT / INDESTRUCTIBLE CONTENT.\n        //  Voxel map we are trying to merge into existing voxel map can be bigger or outside of area of existing voxel map. This method will just ignore those parts.\n        public void MergeVoxelMaterials(MyMwcVoxelFilesEnum voxelFile, MyMwcVector3Short voxelPosition, MyMwcVoxelMaterialsEnum materialToSet)\n        {\n            MyMwcLog.WriteLine(\"MyVoxelMap.MergeVoxelMaterials() - Start\");\n            MyMwcLog.IncreaseIndent();\n\n            MyCompressionFileLoad decompressFile = new MyCompressionFileLoad(MyVoxelFiles.Get(voxelFile).GetVoxFilePath());\n\n            //  Version of a VOX file\n            int fileVersion = decompressFile.GetInt32();\n\n            //  Not supported VOX file version\n            MyCommonDebugUtils.AssertRelease(fileVersion == MyVoxelConstants.VOXEL_FILE_ACTUAL_VERSION);\n\n            //  Size of this voxel map (in voxels)\n            int sizeX = decompressFile.GetInt32();\n            int sizeY = decompressFile.GetInt32();\n            int sizeZ = decompressFile.GetInt32();\n\n            //  Size of data cell in voxels, doesn't have to be same as current size specified by our constants.\n            int cellSizeX = decompressFile.GetInt32();\n            int cellSizeY = decompressFile.GetInt32();\n            int cellSizeZ = decompressFile.GetInt32();\n\n            int cellsCountX = sizeX / cellSizeX;\n            int cellsCountY = sizeY / cellSizeY;\n            int cellsCountZ = sizeZ / cellSizeZ;\n\n            //  This method will work only if we place the map that we try to merge from in voxel coordinates that are multiply of data cell size\n            MyCommonDebugUtils.AssertRelease((voxelPosition.X & MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS_MASK) == 0);\n            MyCommonDebugUtils.AssertRelease((voxelPosition.Y & MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS_MASK) == 0);\n            MyCommonDebugUtils.AssertRelease((voxelPosition.Z & MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS_MASK) == 0);\n            MyMwcVector3Int cellFullForVoxelPosition = GetDataCellCoordinate(ref voxelPosition);\n\n            MyMwcVector3Int cellCoord;\n            for (cellCoord.X = 0; cellCoord.X < cellsCountX; cellCoord.X++)\n            {\n                for (cellCoord.Y = 0; cellCoord.Y < cellsCountY; cellCoord.Y++)\n                {\n                    for (cellCoord.Z = 0; cellCoord.Z < cellsCountZ; cellCoord.Z++)\n                    {\n                        MyVoxelCellType cellType = (MyVoxelCellType)decompressFile.GetByte();\n\n                        //  We can do \"continue\" here, becase we need to read this file properly, even if we will ignore that data\n                        bool isDataCellInVoxelMap = IsDataCellInVoxelMap(\n                            new MyMwcVector3Int(\n                                cellFullForVoxelPosition.X + cellCoord.X,\n                                cellFullForVoxelPosition.Y + cellCoord.Y,\n                                cellFullForVoxelPosition.Z + cellCoord.Z));\n\n                        if (cellType == MyVoxelCellType.EMPTY)\n                        {\n                            //  If merged cell is empty, there is nothing to overwrite, so we can skip this cell\n                            continue;\n                        }\n                        else if (cellType == MyVoxelCellType.FULL)\n                        {\n                            //  If merged cell is full, than we reset whole material cell to 'materialToSet'\n                            if (isDataCellInVoxelMap)\n                            {\n                                m_voxelMaterialCells[cellFullForVoxelPosition.X + cellCoord.X][cellFullForVoxelPosition.Y +\n                                    cellCoord.Y][cellFullForVoxelPosition.Z + cellCoord.Z].Reset(\n                                    materialToSet, GetIndestructibleContentByMaterial(materialToSet));\n                            }\n                        }\n                        else\n                        {\n                            MyMwcVector3Int cellCoordInVoxels = GetVoxelCoordinatesOfDataCell(ref cellCoord);\n\n                            MyMwcVector3Int voxelCoordRelative;\n                            voxelCoordRelative.X = voxelPosition.X + cellCoordInVoxels.X;\n                            voxelCoordRelative.Y = voxelPosition.Y + cellCoordInVoxels.Y;\n                            voxelCoordRelative.Z = voxelPosition.Z + cellCoordInVoxels.Z;\n\n                            MyMwcVector3Int voxelCoordInCell;\n                            for (voxelCoordInCell.X = 0; voxelCoordInCell.X < cellSizeX; voxelCoordInCell.X++)\n                            {\n                                for (voxelCoordInCell.Y = 0; voxelCoordInCell.Y < cellSizeY; voxelCoordInCell.Y++)\n                                {\n                                    for (voxelCoordInCell.Z = 0; voxelCoordInCell.Z < cellSizeZ; voxelCoordInCell.Z++)\n                                    {\n                                        byte voxelFromFile = decompressFile.GetByte();\n\n                                        if (isDataCellInVoxelMap)\n                                        {\n                                            //  Ignore empty voxels, but use mixed/full for seting the material\n                                            if (voxelFromFile > MyVoxelConstants.VOXEL_CONTENT_EMPTY)\n                                            {\n                                                MyMwcVector3Int voxelCoord = new MyMwcVector3Int(\n                                                    voxelCoordRelative.X + voxelCoordInCell.X,\n                                                    voxelCoordRelative.Y + voxelCoordInCell.Y,\n                                                    voxelCoordRelative.Z + voxelCoordInCell.Z);\n\n                                                //  Actual voxel content\n                                                byte voxelContent = GetVoxelContent(ref voxelCoord);\n\n                                                //  If this is indestructible material, here we will get 'min content' for this voxel\n                                                byte indestructibleContent = GetIndestructibleContentsByMaterialAndContent(materialToSet, voxelFromFile);\n\n                                                //  Indestructible content can be less than real voxel at this place. First I made this mistake.\n                                                //  If forgoten, then during explosions we will in fact create matter from 'indestructible content' array.\n                                                if (indestructibleContent > voxelContent)\n                                                {\n                                                    indestructibleContent = voxelContent;\n                                                }\n\n                                                SetVoxelMaterialAndIndestructibleContent(materialToSet, indestructibleContent, ref voxelCoord);\n                                            }\n                                        }\n                                    }\n                                }\n                            }\n                        }\n                    }\n                }\n            }\n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyVoxelMap.MergeVoxelMaterials() - End\");\n        }\n\n        public void SetVoxelMaterialAndIndestructibleContentForWholeCell(MyMwcVoxelMaterialsEnum material, byte indestructibleContent, ref MyMwcVector3Int cellCoord)\n        {\n            m_voxelMaterialCells[cellCoord.X][cellCoord.Y][cellCoord.Z].Reset(material, indestructibleContent);\n        }\n\n        public void SetVoxelMaterialAndIndestructibleContent(MyMwcVoxelMaterialsEnum material, byte indestructibleContent, ref MyMwcVector3Int voxelCoord)\n        {\n            MyMwcVector3Int cellCoord = GetDataCellCoordinate(ref voxelCoord);\n            MyMwcVector3Int voxelCoordInCell = GetVoxelCoordinatesInDataCell(ref voxelCoord);\n            MyMwcVoxelMaterialsEnum oldMaterial = m_voxelMaterialCells[cellCoord.X][cellCoord.Y][cellCoord.Z].GetMaterial(ref voxelCoordInCell);\n            m_voxelMaterialCells[cellCoord.X][cellCoord.Y][cellCoord.Z].SetMaterialAndIndestructibleContent(material, indestructibleContent, ref voxelCoordInCell);\n            if (MyFakes.ENABLE_DISPLAYING_ORE_ON_HUD)\n            {\n                ChangeOreDepositMaterial(oldMaterial, material, ref voxelCoord);\n            }\n        }\n\n        //  Voxel at specified coordinate 'x, y, z' sets to value 'content'\n        //  Coordinates are relative to voxel map\n        public void SetVoxelContent(byte content, ref MyMwcVector3Int voxelCoord, bool needLock = true)\n        {\n            try\n            {\n                if (needLock)\n                    ContentLock.AcquireExclusive();\n\n                //  We don't change voxel if it's a border voxel and it would be an empty voxel (not full). Because that would make voxel map with wrong/missing edges.\n                if ((content > 0) && (IsVoxelAtBorder(ref voxelCoord))) return;\n\n                MyMwcVector3Int cellCoord = GetDataCellCoordinate(ref voxelCoord);\n                MyVoxelContentCell voxelCell = GetCell(ref cellCoord);\n\n                if (voxelCell == null)\n                {\n                    //  Voxel wasn't found in cell dictionary, therefore cell must be FULL\n\n                    if (content == MyVoxelConstants.VOXEL_CONTENT_FULL)\n                    {\n                        //  Cell is full and we are seting voxel to full, so nothing needs to be changed\n                        return;\n                    }\n                    else\n                    {\n                        //  We are switching cell from type FULL to EMPTY or MIXED, therefore we need to allocate new cell\n                        MyVoxelContentCell newCell = AddCell(ref cellCoord);\n                        MyMwcVector3Int voxelCoordInCell = GetVoxelCoordinatesInDataCell(ref voxelCoord);\n                        newCell.SetVoxelContent(content, ref voxelCoordInCell);\n\n                        //  We change ore deposit content from full to new content\n                        if (MyFakes.ENABLE_DISPLAYING_ORE_ON_HUD)\n                        {\n                            ChangeOreDepositCellContent(MyVoxelConstants.VOXEL_CONTENT_FULL, MyVoxelContentCellContent.QuantizedValue(content), ref voxelCoord);\n                        }\n                    }\n                }\n                else if (voxelCell.CellType == MyVoxelCellType.FULL)\n                {\n                    if (content == MyVoxelConstants.VOXEL_CONTENT_FULL)\n                    {\n                        //  Cell is full and we are seting voxel to full, so nothing needs to be changed\n                        return;\n                    }\n                    else\n                    {\n                        MyMwcVector3Int voxelCoordInCell = GetVoxelCoordinatesInDataCell(ref voxelCoord);\n                        voxelCell.SetVoxelContent(content, ref voxelCoordInCell);\n                        CheckIfCellChangedToFull(voxelCell, ref cellCoord);\n\n                        if (MyFakes.ENABLE_DISPLAYING_ORE_ON_HUD)\n                        {\n                            //  We change ore deposit content from full to new content\n                            ChangeOreDepositCellContent(MyVoxelConstants.VOXEL_CONTENT_FULL, MyVoxelContentCellContent.QuantizedValue(content), ref voxelCoord);\n                        }\n                    }\n                }\n                else if (voxelCell.CellType == MyVoxelCellType.EMPTY)\n                {\n                    if (content == MyVoxelConstants.VOXEL_CONTENT_EMPTY)\n                    {\n                        //  Cell is empty and we are seting voxel to empty, so nothing needs to be changed\n                        return;\n                    }\n                    else\n                    {\n                        MyMwcVector3Int voxelCoordInCell = GetVoxelCoordinatesInDataCell(ref voxelCoord);\n                        voxelCell.SetVoxelContent(content, ref voxelCoordInCell);\n                        CheckIfCellChangedToFull(voxelCell, ref cellCoord);\n\n                        //  We change ore deposit content from empty to new content\n                        if (MyFakes.ENABLE_DISPLAYING_ORE_ON_HUD)\n                        {\n                            ChangeOreDepositCellContent(MyVoxelConstants.VOXEL_CONTENT_EMPTY, MyVoxelContentCellContent.QuantizedValue(content), ref voxelCoord);\n                        }\n                    }\n                }\n                else if (voxelCell.CellType == MyVoxelCellType.MIXED)\n                {\n                    MyMwcVector3Int voxelCoordInCell = GetVoxelCoordinatesInDataCell(ref voxelCoord);\n                    byte oldContent = voxelCell.GetVoxelContent(ref voxelCoordInCell);\n                    voxelCell.SetVoxelContent(content, ref voxelCoordInCell);\n                    CheckIfCellChangedToFull(voxelCell, ref cellCoord);\n\n                    byte newContent = voxelCell.GetVoxelContent(ref voxelCoordInCell);\n                    //  We change ore deposit content from old to new\n                    if (MyFakes.ENABLE_DISPLAYING_ORE_ON_HUD)\n                    {\n                        ChangeOreDepositCellContent(oldContent, newContent, ref voxelCoord);\n                    }\n                }\n                else\n                {\n                    throw new MyMwcExceptionApplicationShouldNotGetHere();\n                }\n            }\n            finally\n            {\n                if (needLock)\n                    ContentLock.ReleaseExclusive();\n            }\n        }\n\n        //\tSoftenuje skalarnu hodnotu voxelu. Spriemeruje skalarnu hodnotu voxelu podla zadanej vahy a skalarnych hodnot susednych voxelov.\n        public bool SoftenVoxelContent(\n            MyMwcVector3Int voxelCoord,\t\t//\tVoxel ktory chceme softenovat\n            float softenWeight\t\t        //\tVaha na morfovanie medzi povodnou skalarnou hodnotou a novou spriemerovanou (0.0 = dominantna je stara hodnota, 0.5 = stred, 1.0 = dominantna je nova/priemerna hodnota)\n            )\n        {\n            int sumScalar = 0;\t\t//\tSuma skalarov\n            int count = 0;\t\t\t//\tPocet spocitanych voxelov\n\n            //\tSpocitame skalary vsetkych susednych voxelov nasho voxelu (aj diagonalne)\n            for (int x = -1; x <= 1; x++)\n            {\n                for (int y = -1; y <= 1; y++)\n                {\n                    for (int z = -1; z <= 1; z++)\n                    {\n                        MyMwcVector3Int tempVoxelCoord = new MyMwcVector3Int(voxelCoord.X + x, voxelCoord.Y + y, voxelCoord.Z + z);\n                        sumScalar += GetVoxelContent(ref tempVoxelCoord);\n                        count++;\n                    }\n                }\n            }\n\n            //\tPovodna skalarna hodnota\n            int oldScalar = GetVoxelContent(ref voxelCoord);\n\n            //\tNova priemerna hodnota je suma skalarov deleno pocet susednych voxelov\n            int avgScalar = sumScalar / count;\n\n            //\tNova hodnota je vypocitana na zaklade starej a novej priemernej hodnoty a vahy\n            int newVal = (int)MathHelper.Lerp((float)oldScalar, (float)avgScalar, softenWeight);\n\n            bool softened = false;\n            //\tZapiseme priemernu skalarnu hodnotu voxelu, len ak je mensia nez ta ktora tam bola doteraz\n            if (newVal < oldScalar)\n            {\n                //  Content must be in interval <0..255>\n                MyCommonDebugUtils.AssertDebug((newVal >= MyVoxelConstants.VOXEL_CONTENT_EMPTY) && (newVal <= MyVoxelConstants.VOXEL_CONTENT_FULL));\n                SetVoxelContent((byte)newVal, ref voxelCoord);\n                softened = true;\n            }\n\n            return softened;\n        }\n\n        //\tSoftenuje skalarne hodnoty voxelov v kvadry ktoreho zaciatok je vo voxely \"kro_From\" a koniec vo voxely \"kro_To\".\n        public void SoftenVoxelContentInBox(\n            MyMwcVector3Int from,\t\t\t//\tVoxel v ktorom zacne soften\n            MyMwcVector3Int to,\t\t\t    //\tVoxel kvadra v ktorom konci soften\n            float softenWeight\t//\tVaha na morfovanie medzi povodnou skalarnou hodnotou a novou spriemerovanou.\n            )\n        {\n            MyMwcVector3Int tempVoxelCoord;\n            for (tempVoxelCoord.X = from.X; tempVoxelCoord.X <= to.X; tempVoxelCoord.X++)\n            {\n                for (tempVoxelCoord.Y = from.Y; tempVoxelCoord.Y <= to.Y; tempVoxelCoord.Y++)\n                {\n                    for (tempVoxelCoord.Z = from.Z; tempVoxelCoord.Z <= to.Z; tempVoxelCoord.Z++)\n                    {\n                        SoftenVoxelContent(tempVoxelCoord, softenWeight);\n                    }\n                }\n            }\n        }\n\n        /// <summary>\n        /// Softens voxel material and invalidates cache\n        /// </summary>\n        /// <param name=\"sphere\"></param>\n        /// <param name=\"softenWeight\"></param>\n        /// <param name=\"originalContents\"></param>\n        public void SoftenVoxelContentInSphereInvalidateCache(BoundingSphere sphere, float softenWeight, ref bool changed)\n        {\n            //  Get min corner of the explosion\n            MyMwcVector3Int minCorner = GetVoxelCoordinateFromMeters(new Vector3(\n                sphere.Center.X - sphere.Radius - MyVoxelConstants.VOXEL_SIZE_IN_METRES,\n                sphere.Center.Y - sphere.Radius - MyVoxelConstants.VOXEL_SIZE_IN_METRES,\n                sphere.Center.Z - sphere.Radius - MyVoxelConstants.VOXEL_SIZE_IN_METRES));\n\n            //  Get max corner of the explosion\n            MyMwcVector3Int maxCorner = GetVoxelCoordinateFromMeters(new Vector3(\n                sphere.Center.X + sphere.Radius + MyVoxelConstants.VOXEL_SIZE_IN_METRES,\n                sphere.Center.Y + sphere.Radius + MyVoxelConstants.VOXEL_SIZE_IN_METRES,\n                sphere.Center.Z + sphere.Radius + MyVoxelConstants.VOXEL_SIZE_IN_METRES));\n\n            FixVoxelCoord(ref minCorner);\n            FixVoxelCoord(ref maxCorner);\n\n            MyMwcVector3Int minChanged = maxCorner;\n            MyMwcVector3Int maxChanged = minCorner;\n\n            MyMwcVector3Int tempVoxelCoord;\n            for (tempVoxelCoord.X = minCorner.X; tempVoxelCoord.X <= maxCorner.X; tempVoxelCoord.X++)\n            {\n                for (tempVoxelCoord.Y = minCorner.Y; tempVoxelCoord.Y <= maxCorner.Y; tempVoxelCoord.Y++)\n                {\n                    for (tempVoxelCoord.Z = minCorner.Z; tempVoxelCoord.Z <= maxCorner.Z; tempVoxelCoord.Z++)\n                    {\n                        if (IsVoxelInVoxelMap(ref tempVoxelCoord))\n                        {\n                            Vector3 voxelPosition = GetVoxelCenterPositionAbsolute(ref tempVoxelCoord);\n                            float dist = (voxelPosition - sphere.Center).Length();\n                            float diff = dist - sphere.Radius;\n\n                            if (diff <= 0f)\n                            {\n                                byte originalContent = GetVoxelContent(ref tempVoxelCoord);\n                                if (originalContent > MyVoxelConstants.VOXEL_CONTENT_EMPTY)\n                                {\n                                    bool result = SoftenVoxelContent(tempVoxelCoord, softenWeight);\n                                    if (changed == false) changed = result;\n                                    if (result == true)\n                                    {\n                                        if (tempVoxelCoord.X < minChanged.X) minChanged.X = tempVoxelCoord.X;\n                                        if (tempVoxelCoord.Y < minChanged.Y) minChanged.Y = tempVoxelCoord.Y;\n                                        if (tempVoxelCoord.Z < minChanged.Z) minChanged.Z = tempVoxelCoord.Z;\n                                        if (tempVoxelCoord.X > maxChanged.X) maxChanged.X = tempVoxelCoord.X;\n                                        if (tempVoxelCoord.Y > maxChanged.Y) maxChanged.Y = tempVoxelCoord.Y;\n                                        if (tempVoxelCoord.Z > maxChanged.Z) maxChanged.Z = tempVoxelCoord.Z;\n                                    }\n                                }\n                            }\n                        }\n                    }\n                }\n            }\n\n            if (changed == true)\n            {\n                //  Extend borders for cleaning, so it's two voxels on both sides (two voxels because softening takes more space than pure set-voxel-content)\n                minChanged.X -= 2;\n                minChanged.Y -= 2;\n                minChanged.Z -= 2;\n                maxChanged.X += 2;\n                maxChanged.Y += 2;\n                maxChanged.Z += 2;\n                FixVoxelCoord(ref minChanged);\n                FixVoxelCoord(ref maxChanged);\n\n                InvalidateCache(minChanged, maxChanged);\n            }\n        }\n\n        public void SoftenVoxelContentInBoxInvalidateCache(BoundingBox box, float softenWeight, ref bool changed)\n        {\n            //  Get min corner of the box\n            MyMwcVector3Int minCorner = GetVoxelCoordinateFromMeters(box.Min);\n\n            //  Get max corner of the box\n            MyMwcVector3Int maxCorner = GetVoxelCoordinateFromMeters(box.Max);\n\n            FixVoxelCoord(ref minCorner);\n            FixVoxelCoord(ref maxCorner);\n\n            MyMwcVector3Int minChanged = maxCorner;\n            MyMwcVector3Int maxChanged = minCorner;\n\n            MyMwcVector3Int tempVoxelCoord;\n            bool softened = false;\n            for (tempVoxelCoord.X = minCorner.X; tempVoxelCoord.X <= maxCorner.X; tempVoxelCoord.X++)\n            {\n                for (tempVoxelCoord.Y = minCorner.Y; tempVoxelCoord.Y <= maxCorner.Y; tempVoxelCoord.Y++)\n                {\n                    for (tempVoxelCoord.Z = minCorner.Z; tempVoxelCoord.Z <= maxCorner.Z; tempVoxelCoord.Z++)\n                    {\n                        if (IsVoxelInVoxelMap(ref tempVoxelCoord))\n                        {\n                            bool result = SoftenVoxelContent(tempVoxelCoord, softenWeight);\n                            if (softened == false) softened = result;\n                            if (result == true)\n                            {\n                                if (tempVoxelCoord.X < minChanged.X) minChanged.X = tempVoxelCoord.X;\n                                if (tempVoxelCoord.Y < minChanged.Y) minChanged.Y = tempVoxelCoord.Y;\n                                if (tempVoxelCoord.Z < minChanged.Z) minChanged.Z = tempVoxelCoord.Z;\n                                if (tempVoxelCoord.X > maxChanged.X) maxChanged.X = tempVoxelCoord.X;\n                                if (tempVoxelCoord.Y > maxChanged.Y) maxChanged.Y = tempVoxelCoord.Y;\n                                if (tempVoxelCoord.Z > maxChanged.Z) maxChanged.Z = tempVoxelCoord.Z;\n                            }\n                        }\n                    }\n                }\n            }\n\n            if (softened == true)\n            {\n                //  Extend borders for cleaning, so it's two voxels on both sides (two voxels because softening takes more space than pure set-voxel-content)\n                minChanged.X -= 2;\n                minChanged.Y -= 2;\n                minChanged.Z -= 2;\n                maxChanged.X += 2;\n                maxChanged.Y += 2;\n                maxChanged.Z += 2;\n                FixVoxelCoord(ref minChanged);\n                FixVoxelCoord(ref maxChanged);\n\n                InvalidateCache(minChanged, maxChanged);\n            }\n        }\n\n\n        public bool WrinkleVoxelContent(\n            MyMwcVector3Int voxelCoord,\n            float wrinkleWeightAdd,\n            float wrinkleWeightRemove\n        )\n        {\n            int max = Int32.MinValue, min = Int32.MaxValue;\n            int randomizationAdd = (int)(wrinkleWeightAdd * 255);\n            int randomizationRemove = (int)(wrinkleWeightRemove * 255);\n\n            for (int x = -1; x <= 1; x++)\n                for (int y = -1; y <= 1; y++)\n                    for (int z = -1; z <= 1; z++)\n                    {\n                        MyMwcVector3Int tempVoxelCoord = new MyMwcVector3Int(voxelCoord.X + x, voxelCoord.Y + y, voxelCoord.Z + z);\n                        var content = GetVoxelContent(ref tempVoxelCoord);\n                        max = Math.Max(max, content);\n                        min = Math.Min(min, content);\n                    }\n\n            if (min == max) return false;\n\n            int old = GetVoxelContent(ref voxelCoord);\n\n            byte newVal = (byte)MyMwcUtils.GetClampInt(old + MyMwcUtils.GetRandomInt(randomizationAdd + randomizationRemove) - randomizationRemove, min, max);\n            newVal = MyVoxelContentCellContent.QuantizedValue(newVal);\n\n            if (newVal != old)\n            {\n                SetVoxelContent((byte)newVal, ref voxelCoord);\n                return true;\n            }\n            return false;\n        }\n\n\n        /// <summary>\n        /// Wrinkles voxel material and invalidates cache\n        /// </summary>\n        /// <param name=\"sphere\"></param>\n        /// <param name=\"wrinkleWeight\"></param>\n        /// <param name=\"originalContents\"></param>\n        public void WrinkleVoxelContentInSphereInvalidateCache(BoundingSphere sphere, float wrinkleWeightAdd, float wrinkleWeightRemove, ref bool changed)\n        {\n            //  Get min corner of the explosion\n            MyMwcVector3Int minCorner = GetVoxelCoordinateFromMeters(new Vector3(\n                sphere.Center.X - sphere.Radius - MyVoxelConstants.VOXEL_SIZE_IN_METRES,\n                sphere.Center.Y - sphere.Radius - MyVoxelConstants.VOXEL_SIZE_IN_METRES,\n                sphere.Center.Z - sphere.Radius - MyVoxelConstants.VOXEL_SIZE_IN_METRES));\n\n            //  Get max corner of the explosion\n            MyMwcVector3Int maxCorner = GetVoxelCoordinateFromMeters(new Vector3(\n                sphere.Center.X + sphere.Radius + MyVoxelConstants.VOXEL_SIZE_IN_METRES,\n                sphere.Center.Y + sphere.Radius + MyVoxelConstants.VOXEL_SIZE_IN_METRES,\n                sphere.Center.Z + sphere.Radius + MyVoxelConstants.VOXEL_SIZE_IN_METRES));\n\n            FixVoxelCoord(ref minCorner);\n            FixVoxelCoord(ref maxCorner);\n\n            MyMwcVector3Int minChanged = maxCorner;\n            MyMwcVector3Int maxChanged = minCorner;\n\n            MyMwcVector3Int tempVoxelCoord;\n            for (tempVoxelCoord.X = minCorner.X; tempVoxelCoord.X <= maxCorner.X; tempVoxelCoord.X++)\n            {\n                for (tempVoxelCoord.Y = minCorner.Y; tempVoxelCoord.Y <= maxCorner.Y; tempVoxelCoord.Y++)\n                {\n                    for (tempVoxelCoord.Z = minCorner.Z; tempVoxelCoord.Z <= maxCorner.Z; tempVoxelCoord.Z++)\n                    {\n                        if (IsVoxelInVoxelMap(ref tempVoxelCoord))\n                        {\n                            Vector3 voxelPosition = GetVoxelCenterPositionAbsolute(ref tempVoxelCoord);\n                            float dist = (voxelPosition - sphere.Center).Length();\n                            float diff = dist - sphere.Radius;\n\n                            if (diff <= 0f)\n                            {\n                                byte originalContent = GetVoxelContent(ref tempVoxelCoord);\n                                if (originalContent > MyVoxelConstants.VOXEL_CONTENT_EMPTY)\n                                {\n                                    bool result = WrinkleVoxelContent(tempVoxelCoord, wrinkleWeightAdd, wrinkleWeightRemove);\n                                    if (changed == false) changed = result;\n                                    if (result == true)\n                                    {\n                                        if (tempVoxelCoord.X < minChanged.X) minChanged.X = tempVoxelCoord.X;\n                                        if (tempVoxelCoord.Y < minChanged.Y) minChanged.Y = tempVoxelCoord.Y;\n                                        if (tempVoxelCoord.Z < minChanged.Z) minChanged.Z = tempVoxelCoord.Z;\n                                        if (tempVoxelCoord.X > maxChanged.X) maxChanged.X = tempVoxelCoord.X;\n                                        if (tempVoxelCoord.Y > maxChanged.Y) maxChanged.Y = tempVoxelCoord.Y;\n                                        if (tempVoxelCoord.Z > maxChanged.Z) maxChanged.Z = tempVoxelCoord.Z;\n                                    }\n                                }\n                            }\n                        }\n                    }\n                }\n            }\n\n            if (changed == true)\n            {\n                //  Extend borders for cleaning, so it's two voxels on both sides (two voxels because wrinkling takes more space than pure set-voxel-content)\n                minChanged.X -= 2;\n                minChanged.Y -= 2;\n                minChanged.Z -= 2;\n                maxChanged.X += 2;\n                maxChanged.Y += 2;\n                maxChanged.Z += 2;\n                FixVoxelCoord(ref minChanged);\n                FixVoxelCoord(ref maxChanged);\n\n                InvalidateCache(minChanged, maxChanged);\n            }\n        }\n\n        //  Coordinates are relative to voxel map. Returned value is just byte converted to float on interval <0..1>\n        public float GetVoxelContentAsFloat(ref MyMwcVector3Int voxelCoord)\n        {\n            return (float)GetVoxelContent(ref voxelCoord) / MyVoxelConstants.VOXEL_CONTENT_FULL_FLOAT;\n        }\n\n        //  Coordinates are relative to voxel map\n        public byte GetVoxelContent(ref MyMwcVector3Int voxelCoord)\n        {\n            using (ContentLock.AcquireSharedUsing())\n            {\n                MyMwcVector3Int cellCoord = GetDataCellCoordinate(ref voxelCoord);\n                MyVoxelContentCell voxelCell = GetCell(ref cellCoord);\n\n                if (voxelCell == null)\n                {\n                    //  Voxel wasn't found in cell dictionary, therefore cell must be full\n                    return MyVoxelConstants.VOXEL_CONTENT_FULL;\n                }\n                else\n                {\n                    MyMwcVector3Int voxelCoordInCell = GetVoxelCoordinatesInDataCell(ref voxelCoord);\n                    byte ret = voxelCell.GetVoxelContent(ref voxelCoordInCell);\n                    return ret;\n                }\n            }\n        }\n\n        //  Return average content for whole data cell. This is used only for LOD (level of detail) - or lower/higher level.\n        //  Coordinates are 'data cell coordinates'\n        public byte GetDataCellAverageContent(ref MyMwcVector3Int cellCoord)\n        {\n            MyVoxelContentCell cell = GetCell(ref cellCoord);\n\n            if (cell == null)\n            {\n                //  Cell wasn't found in cell dictionary, therefore cell must be full\n                return MyVoxelConstants.VOXEL_CONTENT_FULL;\n            }\n            else\n            {\n                if (cell.CellType == MyVoxelCellType.EMPTY)\n                {\n                    return MyVoxelConstants.VOXEL_CONTENT_EMPTY;\n                }\n                else\n                {\n                    return cell.GetAverageContent();\n                }\n            }\n        }\n\n        ////  Return shadow value of whole data cell.\n        ////  Coordinates are 'data cell coordinates'\n        //public byte GetDataCellShadow(ref MyMwcVector3Int dataCellCoord)\n        //{\n        //    return m_dataCellShadows[dataCellCoord.X][dataCellCoord.Y][dataCellCoord.Z];\n        //}\n\n        ////  Return shadow value of whole data cell.\n        ////  Coordinates are 'data cell coordinates'\n        //public byte GetVoxelShadow(ref MyMwcVector3Int voxelCoord)\n        //{\n        //    return m_voxelShadows[voxelCoord.X / MyShadowConstants.SHADOW_ENTITY_SIZE_IN_VOXELS][voxelCoord.Y / MyShadowConstants.SHADOW_ENTITY_SIZE_IN_VOXELS][voxelCoord.Z / MyShadowConstants.SHADOW_ENTITY_SIZE_IN_VOXELS];\n        //}\n\n        //  Return average material for whole data cell. This is used only for LOD (level of detail) - or lower/higher level.\n        //  Coordinates are 'data cell coordinates'\n        public MyMwcVoxelMaterialsEnum GetDataCellAverageMaterial(ref MyMwcVector3Int cellCoord)\n        {\n            return m_voxelMaterialCells[cellCoord.X][cellCoord.Y][cellCoord.Z].GetAverageCellMaterial();\n        }\n\n        //  Return voxel's coordinates relative to cell (in voxel space)\n        //  IMPORTANT: Input variable 'tempVoxelCoord' is 'ref' only for optimization. Never change its value in the method!!!\n        public MyMwcVector3Int GetVoxelCoordinatesInDataCell(ref MyMwcVector3Int voxelCoord)\n        {\n            return new MyMwcVector3Int(voxelCoord.X & MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS_MASK, voxelCoord.Y & MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS_MASK, voxelCoord.Z & MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS_MASK);\n        }\n\n        //  Return cell coordinates, but defined in voxels.\n        //  You enter 'precalculatedCellCoord' in cell coords and get voxel coordinate of corner of a cell.\n        public MyMwcVector3Int GetVoxelCoordinatesOfDataCell(ref MyMwcVector3Int cellCoord)\n        {\n            return new MyMwcVector3Int(cellCoord.X << MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS_BITS, cellCoord.Y << MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS_BITS, cellCoord.Z << MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS_BITS);\n        }\n\n        //  Return coordinates of data cell center, but defined in voxels.\n        //  You enter 'precalculatedCellCoord' in cell coords and get voxel coordinate of corner of a cell.\n        public MyMwcVector3Int GetVoxelCoordinatesOfCenterOfDataCell(ref MyMwcVector3Int cellCoord)\n        {\n            return new MyMwcVector3Int(\n                (cellCoord.X << MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS_BITS) + MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS / 2,\n                (cellCoord.Y << MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS_BITS) + MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS / 2,\n                (cellCoord.Z << MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS_BITS) + MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS / 2);\n        }\n\n        //  Return data cell to which belongs specified voxel (data cell)\n        //  IMPORTANT: Input variable 'tempVoxelCoord' is 'ref' only for optimization. Never change its value in the method!!!\n        public MyMwcVector3Int GetDataCellCoordinate(ref MyMwcVector3Int voxelCoord)\n        {\n            return new MyMwcVector3Int(voxelCoord.X >> MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS_BITS, voxelCoord.Y >> MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS_BITS, voxelCoord.Z >> MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS_BITS);\n        }\n\n        //  Return data cell to which belongs specified voxel (data cell)\n        //  IMPORTANT: Input variable 'tempVoxelCoord' is 'ref' only for optimization. Never change its value in the method!!!\n        public MyMwcVector3Int GetDataCellCoordinate(ref MyMwcVector3Short voxelCoord)\n        {\n            return new MyMwcVector3Int(voxelCoord.X >> MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS_BITS, voxelCoord.Y >> MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS_BITS, voxelCoord.Z >> MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS_BITS);\n        }\n\n        //  Return data cell to which belongs point specified by 'position'. It convertes from metres to cell coordinate.\n        //  Data cell begins at voxel center, not its corner. This method takes it into account.\n        public MyMwcVector3Int GetDataCellCoordinateFromMeters(ref Vector3 position)\n        {\n            MyMwcVector3Int voxelCoord = GetVoxelCenterCoordinateFromMeters(ref position);\n            return new MyMwcVector3Int(voxelCoord.X >> MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS_BITS, voxelCoord.Y >> MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS_BITS, voxelCoord.Z >> MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS_BITS);\n        }\n\n        //  Return cell to which belongs specified voxel (render cell)\n        //  IMPORTANT: Input variable 'tempVoxelCoord' is 'ref' only for optimization. Never change its value in the method!!!\n        public MyMwcVector3Int GetVoxelRenderCellCoordinateFromMeters(ref Vector3 point)\n        {\n            MyMwcVector3Int voxelCoord = GetVoxelCenterCoordinateFromMeters(ref point);\n            return GetVoxelRenderCellCoordinate(ref voxelCoord);\n        }\n\n        //  Return cell to which belongs specified voxel (render cell)\n        //  IMPORTANT: Input variable 'tempVoxelCoord' is 'ref' only for optimization. Never change its value in the method!!!\n        public MyMwcVector3Int GetVoxelRenderCellCoordinate(ref MyMwcVector3Int voxelCoord)\n        {\n            return new MyMwcVector3Int(voxelCoord.X / MyVoxelConstants.VOXEL_RENDER_CELL_SIZE_IN_VOXELS, voxelCoord.Y / MyVoxelConstants.VOXEL_RENDER_CELL_SIZE_IN_VOXELS, voxelCoord.Z / MyVoxelConstants.VOXEL_RENDER_CELL_SIZE_IN_VOXELS);\n        }\n\n        //  Coordinates are relative to voxel map\n        //  IMPORTANT: Input variable 'tempVoxelCoord' is 'ref' only for optimization. Never change its value in the method!!!\n        public void GetMaterialAndIndestructibleContent(ref MyMwcVector3Int voxelCoord, out MyMwcVoxelMaterialsEnum voxelMaterial, out byte voxelMaterialIndestructibleContent)\n        {\n            MyMwcVector3Int cellCoord = GetDataCellCoordinate(ref voxelCoord);\n            MyMwcVector3Int voxelCoordInCell = GetVoxelCoordinatesInDataCell(ref voxelCoord);\n            voxelMaterialIndestructibleContent = m_voxelMaterialCells[cellCoord.X][cellCoord.Y][cellCoord.Z].GetIndestructibleContent(ref voxelCoordInCell);\n            voxelMaterial = m_voxelMaterialCells[cellCoord.X][cellCoord.Y][cellCoord.Z].GetMaterial(ref voxelCoordInCell);\n            voxelMaterial = MyVoxelMaterials.GetAllowedVoxelMaterial(voxelMaterial);\n        }\n\n        //  Coordinates are relative to voxel map\n        //  IMPORTANT: Input variable 'tempVoxelCoord' is 'ref' only for optimization. Never change its value in the method!!!\n        public byte GetVoxelMaterialIndestructibleContent(ref MyMwcVector3Int voxelCoord)\n        {\n            MyMwcVector3Int cellCoord = GetDataCellCoordinate(ref voxelCoord);\n            MyMwcVector3Int voxelCoordInCell = GetVoxelCoordinatesInDataCell(ref voxelCoord);\n            return m_voxelMaterialCells[cellCoord.X][cellCoord.Y][cellCoord.Z].GetIndestructibleContent(ref voxelCoordInCell);\n        }\n\n        //  Coordinates are relative to voxel map\n        //  IMPORTANT: Input variable 'tempVoxelCoord' is 'ref' only for optimization. Never change its value in the method!!!\n        public MyMwcVoxelMaterialsEnum GetVoxelMaterial(ref MyMwcVector3Int voxelCoord)\n        {\n            MyMwcVector3Int cellCoord = GetDataCellCoordinate(ref voxelCoord);\n            MyMwcVector3Int voxelCoordInCell = GetVoxelCoordinatesInDataCell(ref voxelCoord);\n            MyMwcVoxelMaterialsEnum material = m_voxelMaterialCells[cellCoord.X][cellCoord.Y][cellCoord.Z].GetMaterial(ref voxelCoordInCell);\n\n            return MyVoxelMaterials.GetAllowedVoxelMaterial(material);\n        }\n\n        //  Calculates normal for specified voxel. Used by poligonization grid.\n        //  This method has only one drawback: if voxels around voxel for which we want to get normal are empty, resulting normal will be NaN\n        //  If this happens, I replace it by vector with right direction. It's a fake. Hope nobody notices.\n        public Vector3 GetVoxelNormal(ref MyMwcVector3Int voxelCoord)\n        {\n            if ((voxelCoord.X == 0) || (voxelCoord.X == (Size.X - 1)) ||\n                (voxelCoord.Y == 0) || (voxelCoord.Y == (Size.Y - 1)) ||\n                (voxelCoord.Z == 0) || (voxelCoord.Z == (Size.Z - 1)))\n            {\n                //  If asked for normal vector for voxel that is at the voxel map border, we can't compute it by gradient, so return this hack.\n                return Vector3.Up;\n            }\n\n            MyMwcVector3Int tempVoxelCoord0 = new MyMwcVector3Int(voxelCoord.X - 1, voxelCoord.Y, voxelCoord.Z);\n            MyMwcVector3Int tempVoxelCoord1 = new MyMwcVector3Int(voxelCoord.X + 1, voxelCoord.Y, voxelCoord.Z);\n            MyMwcVector3Int tempVoxelCoord2 = new MyMwcVector3Int(voxelCoord.X, voxelCoord.Y - 1, voxelCoord.Z);\n            MyMwcVector3Int tempVoxelCoord3 = new MyMwcVector3Int(voxelCoord.X, voxelCoord.Y + 1, voxelCoord.Z);\n            MyMwcVector3Int tempVoxelCoord4 = new MyMwcVector3Int(voxelCoord.X, voxelCoord.Y, voxelCoord.Z - 1);\n            MyMwcVector3Int tempVoxelCoord5 = new MyMwcVector3Int(voxelCoord.X, voxelCoord.Y, voxelCoord.Z + 1);\n\n            Vector3 normal = new Vector3(\n                (GetVoxelContent(ref tempVoxelCoord0) - GetVoxelContent(ref tempVoxelCoord1)) / MyVoxelConstants.VOXEL_CONTENT_FULL_FLOAT,\n                (GetVoxelContent(ref tempVoxelCoord2) - GetVoxelContent(ref tempVoxelCoord3)) / MyVoxelConstants.VOXEL_CONTENT_FULL_FLOAT,\n                (GetVoxelContent(ref tempVoxelCoord4) - GetVoxelContent(ref tempVoxelCoord5)) / MyVoxelConstants.VOXEL_CONTENT_FULL_FLOAT);\n\n            if (normal.LengthSquared() <= 0.0f)\n            {\n                //  If voxels surounding voxel for which we want to get normal vector are of the same value, their subtracting leads to zero vector and that can't be used. So following line is hack.\n                return Vector3.Up;\n            }\n            else\n            {\n                return MyMwcUtils.Normalize(normal);\n            }\n        }\n\n        //  Return voxel center coordinate relative to voxel map (in metres)\n        //  It's coordinate of center of a voxel (not corner)\n        public Vector3 GetVoxelCenterPositionRelative(ref MyMwcVector3Int voxelCoord)\n        {\n            return new Vector3(\n                voxelCoord.X * MyVoxelConstants.VOXEL_SIZE_IN_METRES + MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF,\n                voxelCoord.Y * MyVoxelConstants.VOXEL_SIZE_IN_METRES + MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF,\n                voxelCoord.Z * MyVoxelConstants.VOXEL_SIZE_IN_METRES + MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF);\n        }\n\n        //  Return voxel's coordinate (from meters) to voxel map (int)\n        //  Method return position of voxel corner, not the center.\n        public MyMwcVector3Int GetVoxelCoordinateFromMeters(Vector3 pos)\n        {\n            return new MyMwcVector3Int(\n                (int)((pos.X - PositionLeftBottomCorner.X) / MyVoxelConstants.VOXEL_SIZE_IN_METRES),\n                (int)((pos.Y - PositionLeftBottomCorner.Y) / MyVoxelConstants.VOXEL_SIZE_IN_METRES),\n                (int)((pos.Z - PositionLeftBottomCorner.Z) / MyVoxelConstants.VOXEL_SIZE_IN_METRES));\n        }\n\n        //  Return voxel's coordinate (from meters) to voxel map (int)\n        //  Method return position of the center, not voxel corner\n        public MyMwcVector3Int GetVoxelCenterCoordinateFromMeters(ref Vector3 pos)\n        {\n            return new MyMwcVector3Int(\n                (int)((pos.X - PositionLeftBottomCorner.X - MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF) / MyVoxelConstants.VOXEL_SIZE_IN_METRES),\n                (int)((pos.Y - PositionLeftBottomCorner.Y - MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF) / MyVoxelConstants.VOXEL_SIZE_IN_METRES),\n                (int)((pos.Z - PositionLeftBottomCorner.Z - MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF) / MyVoxelConstants.VOXEL_SIZE_IN_METRES));\n        }\n\n        //  Return voxel's coordinate in world space (in metres)\n        //  It's coordinate of closest corner (not center of a voxel)\n        public Vector3 GetVoxelPositionAbsolute(ref MyMwcVector3Int voxelCoord)\n        {\n            return PositionLeftBottomCorner + GetVoxelSizeInMetres(ref voxelCoord);\n        }\n\n        //  Return voxel's coordinate in world space (in metres)\n        //  It's coordinate of center of a voxel (not corner)\n        public Vector3 GetVoxelCenterPositionAbsolute(ref MyMwcVector3Int voxelCoord)\n        {\n            return PositionLeftBottomCorner + GetVoxelCenterPositionRelative(ref voxelCoord);\n        }\n\n        //  Return render cell absolute coordinate in world space (in metres).\n        //  It's coordinate of closest corner (not center of a cell)\n        //  It can be used to calculate bounding box of a render cell.\n        //  IMPORTANT: It's hard to say if border should be offset by half-voxel or not... depends on requirements.\n        public Vector3 GetRenderCellPositionAbsolute(ref MyMwcVector3Int cellCoord)\n        {\n            MyMwcVector3Int voxelCoord = new MyMwcVector3Int(cellCoord.X * MyVoxelConstants.VOXEL_RENDER_CELL_SIZE_IN_VOXELS, cellCoord.Y * MyVoxelConstants.VOXEL_RENDER_CELL_SIZE_IN_VOXELS, cellCoord.Z * MyVoxelConstants.VOXEL_RENDER_CELL_SIZE_IN_VOXELS);\n            //return GetVoxelCenterPositionAbsolute(ref voxelCoord);\n            return GetVoxelPositionAbsolute(ref voxelCoord);\n        }\n\n        //  Return render cell center absolute coordinate in world space (in metres).\n        //  It can be used to calculate bounding box of a render cell.\n        //  IMPORTANT: It's hard to say if center should be offset by half-voxel or not... depends on requirements.\n        public Vector3 GetRenderCellCenterPositionAbsolute(ref MyMwcVector3Int cellCoord)\n        {\n            MyMwcVector3Int voxelCoord = new MyMwcVector3Int(cellCoord.X * MyVoxelConstants.VOXEL_RENDER_CELL_SIZE_IN_VOXELS, cellCoord.Y * MyVoxelConstants.VOXEL_RENDER_CELL_SIZE_IN_VOXELS, cellCoord.Z * MyVoxelConstants.VOXEL_RENDER_CELL_SIZE_IN_VOXELS);\n            return GetVoxelPositionAbsolute(ref voxelCoord) + new Vector3(MyVoxelConstants.VOXEL_RENDER_CELL_SIZE_IN_METRES_HALF);\n        }\n\n        //  Return data cell center absolute coordinate in world space (in metres).\n        //  It can be used to calculate bounding box of a data cell.\n        //  IMPORTANT: It's hard to say if center should be offset by half-voxel or not... depends on requirements.\n        public Vector3 GetDataCellCenterPositionAbsolute(ref MyMwcVector3Int cellCoord)\n        {\n            MyMwcVector3Int voxelCoord = new MyMwcVector3Int(cellCoord.X << MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS_BITS, cellCoord.Y << MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS_BITS, cellCoord.Z << MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS_BITS);\n            return GetVoxelPositionAbsolute(ref voxelCoord) + new Vector3(MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_METRES_HALF);\n        }\n\n        //  Return data cell center absolute coordinate in world space (in metres).\n        //  It can be used to calculate bounding box of a data cell.\n        //  IMPORTANT: It's hard to say if center should be offset by half-voxel or not... depends on requirements.\n        public Vector3 GetDataCellCenterPositionRelative(ref MyMwcVector3Int cellCoord)\n        {\n            MyMwcVector3Int voxelCoord = new MyMwcVector3Int(cellCoord.X << MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS_BITS, cellCoord.Y << MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS_BITS, cellCoord.Z << MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS_BITS);\n            return GetVoxelSizeInMetres(ref voxelCoord) + new Vector3(MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_METRES_HALF);\n        }\n\n        //  Return data cell absolute coordinate in world space (in metres).\n        //  It is based on center of voxels (not corner positions).\n        //  It can be used to calculate bounding box of a data cell.\n        //  IMPORTANT: Border is calculated using voxel centers!!! I tested it and it looks like right solution (at least for cell bounding box)\n        public Vector3 GetDataCellPositionAbsolute(ref MyMwcVector3Int cellCoord)\n        {\n            MyMwcVector3Int voxelCoord = new MyMwcVector3Int(cellCoord.X << MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS_BITS, cellCoord.Y << MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS_BITS, cellCoord.Z << MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS_BITS);\n            //return GetVoxelPositionAbsolute(ref voxelCoord);// GetVoxelPositionAbsolute(ref tempVoxelCoord);\n            return GetVoxelCenterPositionAbsolute(ref voxelCoord);// GetVoxelPositionAbsolute(ref tempVoxelCoord);\n        }\n\n        //  Calculates bounding box of a specified data cell. Coordinates are in world/absolute space.\n        public void GetDataCellBoundingBox(ref MyMwcVector3Int cellCoord, out BoundingBox outBoundingBox)\n        {\n            Vector3 dataCellMin = GetDataCellPositionAbsolute(ref cellCoord);\n            outBoundingBox = new BoundingBox(dataCellMin, dataCellMin + MyVoxelConstants.VOXEL_DATA_CELL_SIZE_VECTOR_IN_METRES);\n        }\n\n        //  Calculates bounding sphere of a specified data cell. Coordinates are in world/absolute space.\n        public void GetDataCellBoundingSphere(ref MyMwcVector3Int cellCoord, out BoundingSphere outBoundingSphere)\n        {\n            Vector3 dataCellMin = GetDataCellPositionAbsolute(ref cellCoord);\n            outBoundingSphere = new BoundingSphere(dataCellMin + MyVoxelConstants.VOXEL_DATA_CELL_SIZE_HALF_VECTOR_IN_METRES, MyVoxelConstants.VOXEL_DATA_CELL_RADIUS);\n        }\n\n        //  Calculates bounding box of a specified render cell. Coordinates are in world/absolute space.\n        public void GetRenderCellBoundingBox(ref MyMwcVector3Int cellCoord, out BoundingBox outBoundingBox)\n        {\n            Vector3 renderCellMin = GetRenderCellPositionAbsolute(ref cellCoord);\n            outBoundingBox = new BoundingBox(renderCellMin, renderCellMin + MyVoxelConstants.VOXEL_RENDER_CELL_SIZE_VECTOR_IN_METRES);\n        }\n\n        //  Calculates bounding sphere of a specified render cell. Coordinates are in world/absolute space.\n        public void GetRenderCellBoundingSphere(ref MyMwcVector3Int cellCoord, out BoundingSphere outBoundingSphere)\n        {\n            Vector3 renderCellMin = GetRenderCellPositionAbsolute(ref cellCoord);\n            outBoundingSphere = new BoundingSphere(renderCellMin + MyVoxelConstants.VOXEL_RENDER_CELL_SIZE_HALF_VECTOR_IN_METRES, MyVoxelConstants.VOXEL_RENDER_CELL_RADIUS);\n        }\n\n        //  Same as 'int-version' of ScanLine3D, but this one accepts line coordinates in metres in absolute space.\n        //  and returns coordinates in metres in absolute space.\n        public bool ScanLine3D(Vector3 lineStart, Vector3 lineEnd, out Vector3? intersection)\n        {\n            MyMwcVector3Int? temp;\n            if (ScanLine3D(GetVoxelCoordinateFromMeters(lineStart), GetVoxelCoordinateFromMeters(lineEnd), out temp) == true)\n            {\n                MyMwcVector3Int tempForThisCall = temp.Value;\n                intersection = GetVoxelCenterPositionAbsolute(ref tempForThisCall);\n                return true;\n            }\n\n            //  We didn't find any non-empty voxel along the line\n            intersection = null;\n            return false;\n        }\n\n        //  Scans line in 3D space of voxels using bresenhem line scanning algorithm.\n        //  Voxels outside of a voxel map are treated as empty\n        //  Returns true if intersection with non-empty voxel found and also returns coordinate of first non-empty voxel - in \"intersection\"\n        //  Uses Bresenham algorithm.\n        //\n        //  IDEA: This method can be optimized so it will start scaning the line not where lineStart is, but where the line enters\n        //  the voxel map. Same for lineEnd. Now we do voxel map boundary check for every scanned voxel (it's slower and\n        //  we iterate over a lot of not relevant voxels).\n        //\n        //\tSource:\n        //\t    C code from the article \"Voxel Traversal along a 3D Line\" by Daniel Cohen, danny@bengus.bgu.ac.il\n        //\t    in \"Graphics Gems IV\", Academic Press, 1994\n        public bool ScanLine3D(MyMwcVector3Int lineStart, MyMwcVector3Int lineEnd, out MyMwcVector3Int? intersection)\n        {\n            int i_Dx = lineEnd.X - lineStart.X;\n            int i_Dy = lineEnd.Y - lineStart.Y;\n            int i_Dz = lineEnd.Z - lineStart.Z;\n\n            int sx = MyUtils.GetBresenhamSgn(i_Dx);\n            int sy = MyUtils.GetBresenhamSgn(i_Dy);\n            int sz = MyUtils.GetBresenhamSgn(i_Dz);\n            int ax = Math.Abs(i_Dx);\n            int ay = Math.Abs(i_Dy);\n            int az = Math.Abs(i_Dz);\n            int bx = 2 * ax;\n            int by = 2 * ay;\n            int bz = 2 * az;\n            int exy = ay - ax;\n            int exz = az - ax;\n            int ezy = ay - az;\n\n            for (int n = (ax + ay + az); n > 0; n--)\n            {\n                //  Voxels outside of a voxel map are treated as empty\n                if ((lineStart.X >= 0) && (lineStart.Y >= 0) && (lineStart.Z >= 0) && (lineStart.X < Size.X) && (lineStart.Y < Size.Y) && (lineStart.Z < Size.Z))\n                {\n                    if (GetVoxelContent(ref lineStart) > MyVoxelConstants.VOXEL_CONTENT_EMPTY)\n                    {\n                        intersection = lineStart;\n                        return true;\n                    }\n                }\n\n                if (exy < 0)\n                {\n                    if (exz < 0)\n                    {\n                        lineStart.X += sx;\n                        exy += by;\n                        exz += bz;\n                    }\n                    else\n                    {\n                        lineStart.Z += sz;\n                        exz -= bx;\n                        ezy += by;\n                    }\n                }\n                else\n                {\n                    if (ezy < 0)\n                    {\n                        lineStart.Z += sz;\n                        exz -= bx;\n                        ezy += by;\n                    }\n                    else\n                    {\n                        lineStart.Y += sy;\n                        exy -= bx;\n                        ezy -= bz;\n                    }\n                }\n            }\n\n            //  We didn't find any non-empty voxel along the line\n            intersection = null;\n            return false;\n        }\n\n        //  Prepares render cell cache. Basicaly, it will precalculate all cells in this voxel map.\n        //  Cells that don't contain triangles will be precalced too, but of course not stored in the cache.\n        //  This method prepares render and data cells too, so you don't have to call PrepareDataCellCache()\n        //  IMPORTANT: Do not use this method because it fills vertex/index buffers and when called from background thread \n        //  while game is minimized through alt+f4, those VB/IB won't be filled\n        public void PrepareRenderCellCache()\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyVoxelMapCache::PrepareRenderCellCache\");\n\n            MyMwcVector3Int cellCoord;\n            for (cellCoord.X = 0; cellCoord.X < RenderCellsCount.X; cellCoord.X++)\n            {\n                for (cellCoord.Y = 0; cellCoord.Y < RenderCellsCount.Y; cellCoord.Y++)\n                {\n                    for (cellCoord.Z = 0; cellCoord.Z < RenderCellsCount.Z; cellCoord.Z++)\n                    {\n                        MyVoxelCacheRender.GetCell(this, ref cellCoord, MyLodTypeEnum.LOD0);\n                        MyVoxelCacheRender.GetCell(this, ref cellCoord, MyLodTypeEnum.LOD1);\n                    }\n                }\n            }\n\n            UpdateAABBHr();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        //  Return true if this voxel is on voxel map border\n        public bool IsVoxelAtBorder(ref MyMwcVector3Int voxelCoord)\n        {\n            float offset = MyFakes.VOXEL_MAP_SMALLER_BOUNDARIES ? MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS : 0f;\n\n            if (voxelCoord.X <= 0 + offset) return true;\n            if (voxelCoord.Y <= 0 + offset) return true;\n            if (voxelCoord.Z <= 0 + offset) return true;\n            if (voxelCoord.X >= SizeMinusOne.X - offset) return true;\n            if (voxelCoord.Y >= SizeMinusOne.Y - offset) return true;\n            if (voxelCoord.Z >= SizeMinusOne.Z - offset) return true;\n            return false;\n        }\n\n        //  If voxel coord0 (in voxel units, not meters) is outside of the voxelmap, we fix its coordinate so it lie in the voxelmap.\n        public void FixVoxelCoord(ref MyMwcVector3Int voxelCoord)\n        {\n            if (voxelCoord.X < 0) voxelCoord.X = 0;\n            if (voxelCoord.Y < 0) voxelCoord.Y = 0;\n            if (voxelCoord.Z < 0) voxelCoord.Z = 0;\n            if (voxelCoord.X > SizeMinusOne.X) voxelCoord.X = SizeMinusOne.X;\n            if (voxelCoord.Y > SizeMinusOne.Y) voxelCoord.Y = SizeMinusOne.Y;\n            if (voxelCoord.Z > SizeMinusOne.Z) voxelCoord.Z = SizeMinusOne.Z;\n        }\n\n        //  If data cell coord0 (in data cell units, not voxels or metres) is outside of the voxelmap, we fix its coordinate so\n        //  it lie in the voxelmap.\n        public void FixDataCellCoord(ref MyMwcVector3Int cellCoord)\n        {\n            if (cellCoord.X < 0) cellCoord.X = 0;\n            if (cellCoord.Y < 0) cellCoord.Y = 0;\n            if (cellCoord.Z < 0) cellCoord.Z = 0;\n            if (cellCoord.X > DataCellsCountMinusOne.X) cellCoord.X = DataCellsCountMinusOne.X;\n            if (cellCoord.Y > DataCellsCountMinusOne.Y) cellCoord.Y = DataCellsCountMinusOne.Y;\n            if (cellCoord.Z > DataCellsCountMinusOne.Z) cellCoord.Z = DataCellsCountMinusOne.Z;\n        }\n\n        //  If render cell coord0 (in render cell units, not voxels or metres) is outside of the voxelmap, we fix its coordinate so\n        //  it lie in the voxelmap.\n        public void FixRenderCellCoord(ref MyMwcVector3Int cellCoord)\n        {\n            if (cellCoord.X < 0) cellCoord.X = 0;\n            if (cellCoord.Y < 0) cellCoord.Y = 0;\n            if (cellCoord.Z < 0) cellCoord.Z = 0;\n            if (cellCoord.X > RenderCellsCountMinusOne.X) cellCoord.X = RenderCellsCountMinusOne.X;\n            if (cellCoord.Y > RenderCellsCountMinusOne.Y) cellCoord.Y = RenderCellsCountMinusOne.Y;\n            if (cellCoord.Z > RenderCellsCountMinusOne.Z) cellCoord.Z = RenderCellsCountMinusOne.Z;\n        }\n\n        //  Method fills preallocated array with voxel triangles that potentialy intersects bounding box. Later, JLX will do intersection testing on these triangles.\n        //  Input:\n        //      boundingBox - bounding box that can intersect with voxel maps\n        //  Output:\n        //      potentialTriangles - potential voxel triangles\n        //      numTriangles - count of potential voxel triangles\n        public void GetPotentialTrianglesForColDet(ref int numTriangles, ref BoundingBox boundingBox)\n        {\n#if DETECT_POTENCIAL_COLLISIONS_CALLS\n            m_potencianCollsBBs.Add(boundingBox);\n#endif\n\n            //  If no overlap between the voxel map bounding pitch and the box\n            if (IsBoxIntersectingBoundingBoxOfThisVoxelMap(ref boundingBox) == false)\n                return;\n\n            //  Get min and max cell coordinate where boundingBox can fit\n            MyMwcVector3Int cellCoordMin = GetDataCellCoordinateFromMeters(ref boundingBox.Min);\n            MyMwcVector3Int cellCoordMax = GetDataCellCoordinateFromMeters(ref boundingBox.Max);\n\n            //  Fix min and max cell coordinates so they don't overlap the voxelmap\n            FixDataCellCoord(ref cellCoordMin);\n            FixDataCellCoord(ref cellCoordMax);\n\n            BoundingBox modelSpaceBox = new BoundingBox(boundingBox.Min - PositionLeftBottomCorner, boundingBox.Max - PositionLeftBottomCorner);\n\n            MyMwcVector3Int cellCoord;\n            for (cellCoord.X = cellCoordMin.X; cellCoord.X <= cellCoordMax.X; cellCoord.X++)\n            {\n                for (cellCoord.Y = cellCoordMin.Y; cellCoord.Y <= cellCoordMax.Y; cellCoord.Y++)\n                {\n                    for (cellCoord.Z = cellCoordMin.Z; cellCoord.Z <= cellCoordMax.Z; cellCoord.Z++)\n                    {\n                        MyVoxelCacheCellData cachedDataCell = MyVoxelCacheData.GetCell(this, ref cellCoord, true);\n                        if (cachedDataCell == null || cachedDataCell.VoxelTrianglesCount == 0 || cachedDataCell.Octree == null) continue;\n\n                        //  If no overlap between bounding pitch of data cell and the box\n                        BoundingBox dataCellBoundingBox;\n                        GetDataCellBoundingBox(ref cellCoord, out dataCellBoundingBox);\n                        //if (dataCellBoundingBox.Intersects(boundingBox) == false) continue;\n                        if (MyUtils.IsBoxIntersectingBox(ref dataCellBoundingBox, ref boundingBox) == false)\n                            continue;\n\n                        //  Get cell from cache. If not there, precalc it and store in the cache.\n                        //  If null is returned, we know that cell doesn't contain any triangleVertexes so we don't need to do intersections.\n\n                        OctreeOverlapElementList.Clear();\n                        \n                        cachedDataCell.Octree.BoxQuery(ref modelSpaceBox, OctreeOverlapElementList);\n                        foreach (var e in OctreeOverlapElementList)\n                        {\n                            MyVoxelTriangle voxelTriangle = cachedDataCell.VoxelTriangles[e];\n\n                            MyTriangle_Vertexes triangle;\n                            triangle.Vertex0 = cachedDataCell.VoxelVertices[voxelTriangle.VertexIndex0].Position + PositionLeftBottomCorner;\n                            triangle.Vertex1 = cachedDataCell.VoxelVertices[voxelTriangle.VertexIndex1].Position + PositionLeftBottomCorner;\n                            triangle.Vertex2 = cachedDataCell.VoxelVertices[voxelTriangle.VertexIndex2].Position + PositionLeftBottomCorner;\n\n                            // Uncomment to test performance when doing triangle exact AABB tests (it passes less triangle to physics then, but it takes more CPU)\n                            BoundingBox voxelTriangleBoundingBox = BoundingBoxHelper.InitialBox;\n                            BoundingBoxHelper.AddTriangle(ref voxelTriangleBoundingBox, ref triangle.Vertex0, ref triangle.Vertex1, ref triangle.Vertex2);\n\n                            //  If no overlap between bounding pitch of voxel triangleVertexes and the box\n                            if (voxelTriangleBoundingBox.Intersects(boundingBox) == false)\n                                continue;\n\n                            //  IMPORTANT: We swap vertex indices, because JLX wants it so.\n                            MyVoxelMaps.PotentialColDetTriangles[numTriangles].Update(\n                                ref triangle.Vertex0,\n                                ref triangle.Vertex2,\n                                ref triangle.Vertex1);\n\n                            if (MyUtils.IsValidNormal(MyVoxelMaps.PotentialColDetTriangles[numTriangles].Normal))\n                            {\n                                numTriangles++;\n                            }\n                        }\n                    }\n                }\n            }\n        }\n\n\n        //collisions\n        //sphere vs voxel volumetric test\n        public bool DoOverlapSphereTest(float sphereRadius, Vector3 spherePos)\n        {\n\n            MyVoxelMap voxelMap = this;\n\n            if (voxelMap == null)\n                return false;\n            Vector3 body0Pos = spherePos; // sphere pos\n            BoundingSphere newSphere;\n            newSphere.Center = body0Pos;\n            newSphere.Radius = sphereRadius;\n\n            //  We will iterate only voxels contained in the bounding box of new sphere, so here we get min/max corned in voxel units\n            MyMwcVector3Int minCorner = voxelMap.GetVoxelCoordinateFromMeters(new Vector3(\n                newSphere.Center.X - newSphere.Radius - MyVoxelConstants.VOXEL_SIZE_IN_METRES,\n                newSphere.Center.Y - newSphere.Radius - MyVoxelConstants.VOXEL_SIZE_IN_METRES,\n                newSphere.Center.Z - newSphere.Radius - MyVoxelConstants.VOXEL_SIZE_IN_METRES));\n            MyMwcVector3Int maxCorner = voxelMap.GetVoxelCoordinateFromMeters(new Vector3(\n                newSphere.Center.X + newSphere.Radius + MyVoxelConstants.VOXEL_SIZE_IN_METRES,\n                newSphere.Center.Y + newSphere.Radius + MyVoxelConstants.VOXEL_SIZE_IN_METRES,\n                newSphere.Center.Z + newSphere.Radius + MyVoxelConstants.VOXEL_SIZE_IN_METRES));\n            voxelMap.FixVoxelCoord(ref minCorner);\n            voxelMap.FixVoxelCoord(ref maxCorner);\n\n            MyMwcVector3Int tempVoxelCoord;\n            for (tempVoxelCoord.X = minCorner.X; tempVoxelCoord.X <= maxCorner.X; tempVoxelCoord.X++)\n            {\n                for (tempVoxelCoord.Y = minCorner.Y; tempVoxelCoord.Y <= maxCorner.Y; tempVoxelCoord.Y++)\n                {\n                    for (tempVoxelCoord.Z = minCorner.Z; tempVoxelCoord.Z <= maxCorner.Z; tempVoxelCoord.Z++)\n                    {\n                        byte voxelContent = voxelMap.GetVoxelContent(ref tempVoxelCoord);\n\n                        //  Ignore voxels bellow the ISO value (empty, partialy empty...)\n                        if (voxelContent < MyVoxelConstants.VOXEL_ISO_LEVEL) continue;\n\n                        Vector3 voxelPosition = voxelMap.GetVoxelCenterPositionAbsolute(ref tempVoxelCoord);\n\n                        //float voxelSize = MyVoxelMaps.GetVoxelContentAsFloat(voxelContent) * MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF;\n                        float voxelSize = MyVoxelMaps.GetVoxelContentAsFloat(voxelContent) * MyVoxelConstants.VOXEL_RADIUS;\n\n                        //  If distance to voxel border is less than sphere radius, we have a collision\n                        //  So now we calculate normal vector and penetration depth but on OLD sphere\n                        float newDistanceToVoxel = Vector3.Distance(voxelPosition, newSphere.Center) - voxelSize;\n                        if (newDistanceToVoxel < (newSphere.Radius))\n                        {\n                            return true;\n                        }\n                    }\n                }\n            }\n            return false;\n        }\n\n\n\n        //  Return list of triangles intersecting specified sphere. \n        //  Triangles are returned in 'retTriangles', and this list must be preallocated!\n        //  Count of returned triangles is in 'retTrianglesCount'\n        //public void GetTrianglesIntersectingSphere(ref BoundingSphere sphere, int ignoreTriangleWithIndex, List<MyTriangle_Vertex_Normals_Sun> retTriangles, int maxNeighbourTriangles)\n        public void GetTrianglesIntersectingSphere(ref BoundingSphere sphere, List<MyTriangle_Vertex_Normals> retTriangles,\n            int maxNeighbourTriangles, bool returnAbsoluteVoxelVertexCoordinates)\n        {\n            //  If sphere doesn't intersect bounding box of a voxel map, we end this method\n            if (IsSphereIntersectingBoundingBoxOfThisVoxelMap(ref sphere) == false) return;\n\n\n            //  Get min and max cell coordinate where boundingBox can fit\n            BoundingBox sphereBoundingBox = BoundingBoxHelper.InitialBox;\n            BoundingBoxHelper.AddSphere(sphere, ref sphereBoundingBox);\n            MyMwcVector3Int cellCoordMin = GetDataCellCoordinateFromMeters(ref sphereBoundingBox.Min);\n            MyMwcVector3Int cellCoordMax = GetDataCellCoordinateFromMeters(ref sphereBoundingBox.Max);\n\n            //  Fix min and max cell coordinates so they don't overlap the voxelmap\n            FixDataCellCoord(ref cellCoordMin);\n            FixDataCellCoord(ref cellCoordMax);\n\n            MyMwcVector3Int cellCoord;\n            for (cellCoord.X = cellCoordMin.X; cellCoord.X <= cellCoordMax.X; cellCoord.X++)\n            {\n                for (cellCoord.Y = cellCoordMin.Y; cellCoord.Y <= cellCoordMax.Y; cellCoord.Y++)\n                {\n                    for (cellCoord.Z = cellCoordMin.Z; cellCoord.Z <= cellCoordMax.Z; cellCoord.Z++)\n                    {\n                        //  If no overlap between bounding pitch of data cell and the sphere\n                        BoundingBox dataCellBoundingBox;\n                        GetDataCellBoundingBox(ref cellCoord, out dataCellBoundingBox);\n                        if (MyUtils.IsBoxIntersectingSphere(ref dataCellBoundingBox, ref sphere) == false) continue;\n\n                        //  Get cell from cache. If not there, precalc it and store in the cache.\n                        //  If null is returned, we know that cell doesn't contain any triangleVertexes so we don't need to do intersections.\n                        MyVoxelCacheCellData cachedDataCell = null;\n                        using (MyVoxelCacheData.Locker.AcquireSharedUsing())\n                        {\n                            cachedDataCell = MyVoxelCacheData.GetCell(this, ref cellCoord, true);\n\n                            if (cachedDataCell == null) continue;\n\n                            for (int i = 0; i < cachedDataCell.VoxelTrianglesCount; i++)\n                            {\n                                //  If we reached end of the buffer of neighbour triangles, we stop adding new ones. This is better behavior than throwing exception because of array overflow.\n                                if (retTriangles.Count == maxNeighbourTriangles)\n                                {\n                                    return;\n                                }\n\n                                MyVoxelTriangle voxelTriangle = cachedDataCell.VoxelTriangles[i];\n\n                                MyVoxelVertex voxelVertex0 = cachedDataCell.VoxelVertices[voxelTriangle.VertexIndex0];\n                                MyVoxelVertex voxelVertex1 = cachedDataCell.VoxelVertices[voxelTriangle.VertexIndex1];\n                                MyVoxelVertex voxelVertex2 = cachedDataCell.VoxelVertices[voxelTriangle.VertexIndex2];\n\n                                MyTriangle_Vertexes triangle;\n                                triangle.Vertex0 = voxelVertex0.Position + PositionLeftBottomCorner;\n                                triangle.Vertex1 = voxelVertex1.Position + PositionLeftBottomCorner;\n                                triangle.Vertex2 = voxelVertex2.Position + PositionLeftBottomCorner;\n\n                                BoundingBox voxelTriangleBoundingBox = BoundingBoxHelper.InitialBox;\n                                BoundingBoxHelper.AddTriangle(ref voxelTriangleBoundingBox, ref triangle.Vertex0, ref triangle.Vertex1, ref triangle.Vertex2);\n\n                                //  First test intersection of triangle's bounding box with line's bounding box. And only if they overlap or intersect, do further intersection tests.\n                                if (MyUtils.IsBoxIntersectingSphere(ref voxelTriangleBoundingBox, ref sphere) == true)\n                                {\n                                    //if (ignoreTriangleWithIndex != cachedDataCell.VoxelTriangles[value].TriangleId)\n                                    {\n                                        MyPlane trianglePlane = new MyPlane(ref triangle);\n\n                                        if (MyUtils.GetSphereTriangleIntersection(ref sphere, ref trianglePlane, ref triangle) != null)\n                                        {\n                                            MyTriangle_Vertex_Normals retTriangle;\n                                            retTriangle.Normals.Normal0 = voxelVertex0.Normal;\n                                            retTriangle.Normals.Normal1 = voxelVertex1.Normal;\n                                            retTriangle.Normals.Normal2 = voxelVertex2.Normal;\n\n                                            // Hack: fix thix\n                                            retTriangle.Binormals.Normal0 = MyMwcUtils.Normalize(Vector3.Cross(retTriangle.Normals.Normal0, new Vector3(0.2341f, 0.2341f, 0.9865f)));\n                                            retTriangle.Binormals.Normal1 = MyMwcUtils.Normalize(Vector3.Cross(retTriangle.Normals.Normal1, new Vector3(0.2341f, 0.2341f, 0.9865f)));\n                                            retTriangle.Binormals.Normal2 = MyMwcUtils.Normalize(Vector3.Cross(retTriangle.Normals.Normal2, new Vector3(0.2341f, 0.2341f, 0.9865f)));\n\n                                            retTriangle.Tangents.Normal0 = MyMwcUtils.Normalize(Vector3.Cross(retTriangle.Binormals.Normal0, retTriangle.Normals.Normal0));\n                                            retTriangle.Tangents.Normal1 = MyMwcUtils.Normalize(Vector3.Cross(retTriangle.Binormals.Normal1, retTriangle.Normals.Normal1));\n                                            retTriangle.Tangents.Normal2 = MyMwcUtils.Normalize(Vector3.Cross(retTriangle.Binormals.Normal2, retTriangle.Normals.Normal2));\n\n                                            if (returnAbsoluteVoxelVertexCoordinates)\n                                            {\n                                                retTriangle.Vertexes = triangle;\n                                            }\n                                            else\n                                            {\n                                                retTriangle.Vertexes.Vertex0 = voxelVertex0.Position;\n                                                retTriangle.Vertexes.Vertex1 = voxelVertex1.Position;\n                                                retTriangle.Vertexes.Vertex2 = voxelVertex2.Position;\n                                            }\n\n                                            retTriangles.Add(retTriangle);\n                                        }\n                                    }\n                                }\n                            }\n                        }\n                    }\n                }\n            }\n        }\n\n        //  Return true if voxel map intersects specified sphere.\n        //  This method doesn't return exact point of intersection or any additional data.\n        //  We don't look for closest intersection - so we stop on first intersection found.\n        public override bool GetIntersectionWithSphere(ref BoundingSphere sphere)\n        {\n\n            //Lock.AcquireReaderLock(Timeout.Infinite);\n            //  If sphere doesn't intersect bounding box of a voxel map, we end this method\n            if (IsSphereIntersectingBoundingBoxOfThisVoxelMap(ref sphere) == false) return false;\n\n            //  Get min and max cell coordinate where boundingBox can fit\n            BoundingBox sphereBoundingBox = BoundingBoxHelper.InitialBox;\n            BoundingBoxHelper.AddSphere(sphere, ref sphereBoundingBox);\n            MyMwcVector3Int cellCoordMin = GetDataCellCoordinateFromMeters(ref sphereBoundingBox.Min);\n            MyMwcVector3Int cellCoordMax = GetDataCellCoordinateFromMeters(ref sphereBoundingBox.Max);\n\n            //  Fix min and max cell coordinates so they don't overlap the voxelmap\n            FixDataCellCoord(ref cellCoordMin);\n            FixDataCellCoord(ref cellCoordMax);\n\n            MyMwcVector3Int cellCoord;\n            for (cellCoord.X = cellCoordMin.X; cellCoord.X <= cellCoordMax.X; cellCoord.X++)\n            {\n                for (cellCoord.Y = cellCoordMin.Y; cellCoord.Y <= cellCoordMax.Y; cellCoord.Y++)\n                {\n                    for (cellCoord.Z = cellCoordMin.Z; cellCoord.Z <= cellCoordMax.Z; cellCoord.Z++)\n                    {\n                        //  If no overlap between bounding box of data cell and the sphere\n                        BoundingBox dataCellBoundingBox;\n                        GetDataCellBoundingBox(ref cellCoord, out dataCellBoundingBox);\n                        if (MyUtils.IsBoxIntersectingSphere(ref dataCellBoundingBox, ref sphere) == false) continue;\n\n                        //  Get cell from cache. If not there, precalc it and store in the cache.\n                        //  If null is returned, we know that cell doesn't contain any triangleVertexes so we don't need to do intersections.\n                        MyVoxelCacheCellData cachedDataCell = null;\n                        using (MyVoxelCacheData.Locker.AcquireSharedUsing())\n                        {\n                            cachedDataCell = MyVoxelCacheData.GetCell(this, ref cellCoord, true);\n\n                            if (cachedDataCell == null) continue;\n\n                            for (int i = 0; i < cachedDataCell.VoxelTrianglesCount; i++)\n                            {\n                                MyVoxelTriangle voxelTriangle = cachedDataCell.VoxelTriangles[i];\n\n                                MyVoxelVertex voxelVertex0 = cachedDataCell.VoxelVertices[voxelTriangle.VertexIndex0];\n                                MyVoxelVertex voxelVertex1 = cachedDataCell.VoxelVertices[voxelTriangle.VertexIndex1];\n                                MyVoxelVertex voxelVertex2 = cachedDataCell.VoxelVertices[voxelTriangle.VertexIndex2];\n\n                                MyTriangle_Vertexes triangle;\n                                triangle.Vertex0 = voxelVertex0.Position + PositionLeftBottomCorner;\n                                triangle.Vertex1 = voxelVertex1.Position + PositionLeftBottomCorner;\n                                triangle.Vertex2 = voxelVertex2.Position + PositionLeftBottomCorner;\n\n                                BoundingBox voxelTriangleBoundingBox = BoundingBoxHelper.InitialBox;\n                                BoundingBoxHelper.AddTriangle(ref voxelTriangleBoundingBox, ref triangle.Vertex0, ref triangle.Vertex1, ref triangle.Vertex2);\n\n                                //  First test intersection of triangle's bounding box with line's bounding box. And only if they overlap or intersect, do further intersection tests.\n                                if (MyUtils.IsBoxIntersectingSphere(ref voxelTriangleBoundingBox, ref sphere) == true)\n                                {\n                                    //if (ignoreTriangleWithIndex != cachedDataCell.VoxelTriangles[value].TriangleId)\n                                    {\n                                        MyPlane trianglePlane = new MyPlane(ref triangle);\n\n                                        if (MyUtils.GetSphereTriangleIntersection(ref sphere, ref trianglePlane, ref triangle) != null)\n                                        {\n                                            //  If intersection found - we are finished. We don't need to look for more.\n                                            return true;\n                                        }\n                                    }\n                                }\n                            }\n                        }\n                    }\n                }\n            }\n\n            return false;\n        }\n\n        //  Return true if voxel map intersects specified box.\n        //  This method doesn't return exact point of intersection or any additional data.\n        //  We don't look for closest intersection - so we stop on first intersection found.\n        public bool GetIntersectionWithBox(ref BoundingBox box)\n        {\n\n            //   Lock.AcquireReaderLock(Timeout.Infinite);\n            //  If box doesn't intersect bounding box of a voxel map, we end this method\n            if (IsBoxIntersectingBoundingBoxOfThisVoxelMap(ref box) == false) return false;\n\n            //  Get min and max cell coordinate where boundingBox can fit            \n            MyMwcVector3Int cellCoordMin = GetDataCellCoordinateFromMeters(ref box.Min);\n            MyMwcVector3Int cellCoordMax = GetDataCellCoordinateFromMeters(ref box.Max);\n\n            //  Fix min and max cell coordinates so they don't overlap the voxelmap\n            FixDataCellCoord(ref cellCoordMin);\n            FixDataCellCoord(ref cellCoordMax);\n\n            MyMwcVector3Int cellCoord;\n            for (cellCoord.X = cellCoordMin.X; cellCoord.X <= cellCoordMax.X; cellCoord.X++)\n            {\n                for (cellCoord.Y = cellCoordMin.Y; cellCoord.Y <= cellCoordMax.Y; cellCoord.Y++)\n                {\n                    for (cellCoord.Z = cellCoordMin.Z; cellCoord.Z <= cellCoordMax.Z; cellCoord.Z++)\n                    {\n                        //  If no overlap between bounding box of data cell and the sphere\n                        BoundingBox dataCellBoundingBox;\n                        GetDataCellBoundingBox(ref cellCoord, out dataCellBoundingBox);\n                        if (MyUtils.IsBoxIntersectingBox(ref dataCellBoundingBox, ref box))\n                            return true;\n                    }\n                }\n            }\n            return false;\n        }\n\n        /// <summary>\n        /// Called when [world position changed].\n        /// </summary>\n        /// <param name=\"source\">The source object that caused this event.</param>\n        public override void OnWorldPositionChanged(object source)\n        {\n            if (MyFakes.MW25DCorrectVoxelPosition)\n            {\n                if (m_voxelFile == MyMwcVoxelFilesEnum.Flat_256x64x256)\n                {\n                    this.SetPosition(new Vector3(this.GetPosition().X, 50, this.GetPosition().Z));\n                }\n            }\n            base.OnWorldPositionChanged(source);\n        }\n\n        protected override void UpdateWorldVolume()\n        {\n            this.PositionLeftBottomCorner = (this.WorldMatrix.Translation - this.SizeInMetresHalf);\n            m_worldAABB = MyUtils.GetNewBoundingBox(PositionLeftBottomCorner, SizeInMetres);\n            m_worldVolume = BoundingSphere.CreateFromBoundingBox(m_worldAABB);\n\n            this.RecalculateOreDepositCellBoundingBoxes();\n\n            InvalidateRenderObjects();\n        }\n\n        //  Method finds intersection with line and any voxel triangleVertexes in this voxel map. Closes intersection is returned.\n        public override bool GetIntersectionWithLine(ref MyLine line, out MyIntersectionResultLineTriangleEx? t, IntersectionFlags flags = IntersectionFlags.ALL_TRIANGLES)\n        {\n            ++MyPerformanceCounter.PerCameraDraw.RayCastModelsProcessed;\n\n            t = null;\n            //  Line and voxel map bounding box intersection test\n            //  We don't need to transform line into voxel map space, because they both are always in world space\n            if (IsLineIntersectingBoundingBoxOfThisVoxelMap(ref line) == false)\n                return false;\n\n            MyIntersectionResultLineTriangle? result = null;\n            if (MyVoxelMaps.GetSortedDataCellList() == null)\n                return false;\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"VoxelMap.LineIntersection\");\n\n            MyVoxelMaps.GetSortedDataCellList().Clear();\n\n            MyMwcVector3Int cellCoord;\n\n            MyLine modelSpaceLine = new MyLine(line.From - PositionLeftBottomCorner, line.To - PositionLeftBottomCorner, true);\n            MyLine gridLine = modelSpaceLine;\n\n            // convert from center-based to corner-based coordinates\n            gridLine.From -= MyVoxelConstants.VOXEL_SIZE_VECTOR_HALF;\n            gridLine.To -= MyVoxelConstants.VOXEL_SIZE_VECTOR_HALF;\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"VoxelMap.LineIntersection AABB sweep\");\n            SweepResult.Clear();\n            MyGridIntersection.Calculate(\n                SweepResult,\n                (int)MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_METRES,\n                modelSpaceLine.From,\n                modelSpaceLine.To,\n                new MyMwcVector3Int(0, 0, 0),\n                DataCellsCountMinusOne\n            );\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"VoxelMap.LineIntersection test AABBs\");\n            float? minDistanceUntilNow = null;\n            BoundingBox cellBoundingBox;\n\n            if (MyFakes.DRAW_TESTED_CELLS_IN_VOXEL_LINE_INTERSECTION)\n            {\n                // debug: draw all intersected cells\n                var mat = Matrix.Identity;\n                var color = new Vector4(1, 1, 0, 0.5f);\n                foreach (var coord in SweepResult)\n                {\n                    cellCoord = coord;\n                    GetDataCellBoundingBox(ref cellCoord, out cellBoundingBox);\n                    MySimpleObjectDraw.DrawWireFramedBox(ref mat, ref cellBoundingBox, ref color, 0.01f, 1);\n                }\n            }\n\n            //List<float> allIntersections = new List<float>();\n            //foreach (var coord in SweepResult)\n            for (int index = 0; index < SweepResult.Count; index++)\n            {\n                var coord = SweepResult[index];\n                cellCoord = coord;\n                //MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"VoxelMap.LineIntersection init tests\");\n\n                GetDataCellBoundingBox(ref cellCoord, out cellBoundingBox);\n\n                float? distanceToBoundingBox = MyUtils.GetLineBoundingBoxIntersection(ref line, ref cellBoundingBox);\n\n                //MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n                // Sweep results are sorted; when we get far enough, make an early exit\n                const float earlyOutDistance = 1.948557f * MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_METRES;  // = sqrt(3) * 9/8 * cell_side\n                if (minDistanceUntilNow != null && distanceToBoundingBox != null && minDistanceUntilNow + earlyOutDistance < distanceToBoundingBox.Value)\n                {\n                    break;\n                }\n                //  Continue to check only if distance to data cell bounding box is closer than closest intersection point found so far\n                //                if ((distanceToBoundingBox.HasValue == false) || ((minDistanceUntilNow != null) && (minDistanceUntilNow < distanceToBoundingBox.Value)))\n                //                    continue;\n\n                //MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"VoxelMap.LineIntersection get cell\");\n\n                //  Get cell from cache. If not there, precalc it and store in the cache.\n                //  If null is returned, we know that cell doesn't contain any triangleVertexes so we don't need to do intersections.\n                MyVoxelCacheCellData cachedDataCell = null;\n                using (MyVoxelCacheData.Locker.AcquireSharedUsing())\n                {\n\n                    cachedDataCell = MyVoxelCacheData.GetCell(this, ref cellCoord, true);\n\n\n                    //MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n                    if (cachedDataCell == null || cachedDataCell.VoxelTrianglesCount == 0) continue;\n\n                    GetCellLineIntersectionOctree(ref result, ref modelSpaceLine, ref minDistanceUntilNow, cachedDataCell, flags);\n                }\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            if (result != null)\n            {\n                t = new MyIntersectionResultLineTriangleEx(result.Value, this, ref line);\n                return true;\n            }\n            else\n            {\n                t = null;\n                return false;\n            }\n        }\n\n        private void GetCellLineIntersectionOctree(ref MyIntersectionResultLineTriangle? result, ref MyLine modelSpaceLine, ref float? minDistanceUntilNow, MyVoxelCacheCellData cachedDataCell, IntersectionFlags flags)\n        {\n            //MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"VoxelMap.ClearList Octree\");\n            OctreeOverlapElementList.Clear();\n            //MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n            if (cachedDataCell.Octree != null)\n            {\n                //MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"VoxelMap.LineIntersection Octree prun\");\n                var ray = new Ray(modelSpaceLine.From, modelSpaceLine.Direction);\n                cachedDataCell.Octree.GetIntersectionWithLine(ref ray, OctreeOverlapElementList);\n                //cachedDataCell.Octree.GetAllTriangles(OctreeOverlapElementList);\n                //MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n            }\n\n            //MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"VoxelMap.LineIntersection test tris Octree\");\n\n            for (int j = 0; j < OctreeOverlapElementList.Count; j++)\n            {\n                var i = OctreeOverlapElementList[j];\n\n                if (cachedDataCell.VoxelTriangles == null) //probably not calculated yet\n                    continue;\n\n                // this should never happen\n                if (i >= cachedDataCell.VoxelTriangles.Length)\n                {\n                    MyCommonDebugUtils.AssertDebug(i < cachedDataCell.VoxelTriangles.Length);\n                    continue;\n                }\n\n                MyVoxelTriangle voxelTriangle = cachedDataCell.VoxelTriangles[i];\n\n                MyVoxelVertex voxelVertex0 = cachedDataCell.VoxelVertices[voxelTriangle.VertexIndex0];\n                MyVoxelVertex voxelVertex1 = cachedDataCell.VoxelVertices[voxelTriangle.VertexIndex1];\n                MyVoxelVertex voxelVertex2 = cachedDataCell.VoxelVertices[voxelTriangle.VertexIndex2];\n\n                MyTriangle_Vertexes triangleVertices;\n                triangleVertices.Vertex0 = voxelVertex0.Position;\n                triangleVertices.Vertex1 = voxelVertex1.Position;\n                triangleVertices.Vertex2 = voxelVertex2.Position;\n\n\n                Vector3 calculatedTriangleNormal = MyUtils.GetNormalVectorFromTriangle(ref triangleVertices);\n\n                //We dont want backside intersections\n                if (((int)(flags & IntersectionFlags.FLIPPED_TRIANGLES) == 0) &&\n                    Vector3.Dot(modelSpaceLine.Direction, calculatedTriangleNormal) > 0)\n                        continue;\n\n                // draw triangles that were tested\n                if (MyFakes.DRAW_TESTED_TRIANGLES_IN_VOXEL_LINE_INTERSECTION)\n                {\n                    Vector3 avg02 = (voxelVertex0.Position + voxelVertex1.Position + voxelVertex2.Position) * 0.33333333333f * 0.2f;\n                    MyDebugDrawCachedLines.AddLine(PositionLeftBottomCorner + voxelVertex0.Position * 0.8f + avg02, PositionLeftBottomCorner + voxelVertex1.Position * 0.8f + avg02, Color.White, Color.White);\n                    MyDebugDrawCachedLines.AddLine(PositionLeftBottomCorner + voxelVertex1.Position * 0.8f + avg02, PositionLeftBottomCorner + voxelVertex2.Position * 0.8f + avg02, Color.White, Color.White);\n                    MyDebugDrawCachedLines.AddLine(PositionLeftBottomCorner + voxelVertex2.Position * 0.8f + avg02, PositionLeftBottomCorner + voxelVertex0.Position * 0.8f + avg02, Color.White, Color.White);\n                }\n\n                // AABB intersection test removed, AABB is tested inside BVH\n                float? distance = MyUtils.GetLineTriangleIntersection(ref modelSpaceLine, ref triangleVertices);\n\n                //if (distance != null) allIntersections.Add(distance.Value);\n\n                //  If intersection occured and if distance to intersection is closer to origin than any previous intersection\n                if ((distance != null) && ((result == null) || (distance.Value < result.Value.Distance)))\n                {\n                    minDistanceUntilNow = distance.Value;\n                    result = new MyIntersectionResultLineTriangle(ref triangleVertices, ref calculatedTriangleNormal, distance.Value);\n                }\n            }\n\n            //MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        public override bool GetIntersectionWithLine(ref MyLine line, out Vector3? v, bool useCollisionModel = true, IntersectionFlags flags = IntersectionFlags.ALL_TRIANGLES)\n        {\n            MyIntersectionResultLineTriangleEx? result;\n            GetIntersectionWithLine(ref line, out result);\n            v = null;\n            if (result != null)\n            {\n                v = result.Value.IntersectionPointInWorldSpace;\n                return true;\n            }\n            return false;\n        }\n\n        //  Checks if specified sphere intersects this bounding box of this voxel map.\n        public bool IsSphereIntersectingBoundingBoxOfThisVoxelMap(ref BoundingSphere boundingSphere)\n        {\n            bool outRet;\n            WorldAABB.Intersects(ref boundingSphere, out outRet);\n            return outRet;\n        }\n\n        //  Checks if specified sphere intersects this bounding box of this voxel map.\n        public bool IsSphereIntersectingBoundingSphereOfThisVoxelMap(ref BoundingSphere boundingSphere)\n        {\n            // MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"IsSphereIntersectingBoundingSphereOfThisVoxelMap\");\n            bool outRet;\n            WorldVolume.Intersects(ref boundingSphere, out outRet);\n\n            // MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n            return outRet;\n\n        }\n\n        //  Checks if specified box intersects bounding box of this this voxel map.\n        public bool IsBoxIntersectingBoundingBoxOfThisVoxelMap(ref BoundingBox boundingBox)\n        {\n            bool outRet;\n            WorldAABB.Intersects(ref boundingBox, out outRet);\n            return outRet;\n        }\n\n        //  Checks if specified line intersects bounding box of this voxel map.\n        public bool IsLineIntersectingBoundingBoxOfThisVoxelMap(ref MyLine line)\n        {\n            return MyUtils.IsLineIntersectingBoundingBox(ref line, ref m_worldAABB);\n        }\n\n        //  This is just wrapper for refed IsDataCellInVoxelMap()\n        public bool IsDataCellInVoxelMap(MyMwcVector3Int cellCoord)\n        {\n            return IsDataCellInVoxelMap(ref cellCoord);\n        }\n\n        //  Checks if precalculatedCellCoord is in the voxel map (true), if it isn't outside (false).\n        //  Input parameter is cell coordinate (not voxel, not in meters)\n        public bool IsDataCellInVoxelMap(ref MyMwcVector3Int cellCoord)\n        {\n            if (cellCoord.X < 0) return false;\n            if (cellCoord.Y < 0) return false;\n            if (cellCoord.Z < 0) return false;\n            if (cellCoord.X >= DataCellsCount.X) return false;\n            if (cellCoord.Y >= DataCellsCount.Y) return false;\n            if (cellCoord.Z >= DataCellsCount.Z) return false;\n            return true;\n        }\n\n        //  Checks if voxel is in the voxel map (true), if it isn't outside (false).\n        //  Input parameter is voxel coordinate in voxel coords\n        public bool IsVoxelInVoxelMap(ref MyMwcVector3Int voxelCoord)\n        {\n            if (voxelCoord.X < 0) return false;\n            if (voxelCoord.Y < 0) return false;\n            if (voxelCoord.Z < 0) return false;\n            if (voxelCoord.X >= Size.X) return false;\n            if (voxelCoord.Y >= Size.Y) return false;\n            if (voxelCoord.Z >= Size.Z) return false;\n            return true;\n        }\n\n        //  Calculates reverb value for our sound engine. For interval, see MySounds.ReverbControl.\n        //  This value is calculated by finding how many mixed or full voxel cells are around the camera (it is similar to occlusion lighting). If no, reverb is 0. If many, reverb is 100.\n        //  Return null if camera isn't in the voxel map bounding box (so we can't calculate reverb)\n        //  Otherwise calculate reverb value and return float.\n        public float? GetReverb(Vector3 cameraPosition)\n        {\n            //  If camera isn't in voxel map, we can't calculate reverb, so end this method and try another voxel map\n            if (m_worldAABB.Contains(cameraPosition) == ContainmentType.Disjoint) return null;\n\n            MyMwcVector3Int cameraCellCoord = GetDataCellCoordinateFromMeters(ref cameraPosition);\n\n            float reverb = 0;\n\n            const int CELLS_IN_ONE_DIRECTION_COUNT = 2;\n            const int CELLS_IN_ONE_DIRECTION_COUNT_TOTAL = CELLS_IN_ONE_DIRECTION_COUNT * 2 + 1;\n            const float CELLS_TOTAL = (float)(CELLS_IN_ONE_DIRECTION_COUNT_TOTAL * CELLS_IN_ONE_DIRECTION_COUNT_TOTAL * CELLS_IN_ONE_DIRECTION_COUNT_TOTAL);\n\n            MyMwcVector3Int cellCoordMin = new MyMwcVector3Int(cameraCellCoord.X - CELLS_IN_ONE_DIRECTION_COUNT, cameraCellCoord.Y - CELLS_IN_ONE_DIRECTION_COUNT, cameraCellCoord.Z - CELLS_IN_ONE_DIRECTION_COUNT);\n            MyMwcVector3Int cellCoordMax = new MyMwcVector3Int(cameraCellCoord.X + CELLS_IN_ONE_DIRECTION_COUNT, cameraCellCoord.Y + CELLS_IN_ONE_DIRECTION_COUNT, cameraCellCoord.Z + CELLS_IN_ONE_DIRECTION_COUNT);\n\n            //  Fix min and max cell coordinates so they don't overlap the voxelmap\n            FixDataCellCoord(ref cellCoordMin);\n            FixDataCellCoord(ref cellCoordMax);\n\n            //  Check\n            MyMwcVector3Int cellCoord;\n            for (cellCoord.X = cellCoordMin.X; cellCoord.X <= cellCoordMax.X; cellCoord.X++)\n            {\n                for (cellCoord.Y = cellCoordMin.Y; cellCoord.Y <= cellCoordMax.Y; cellCoord.Y++)\n                {\n                    for (cellCoord.Z = cellCoordMin.Z; cellCoord.Z <= cellCoordMax.Z; cellCoord.Z++)\n                    {\n                        MyVoxelContentCell cell = GetCell(ref cellCoord);\n                        if ((cell == null) || (cell.CellType != MyVoxelCellType.EMPTY))\n                        {\n                            reverb++;\n                        }\n                    }\n                }\n            }\n\n            //  At this point, 'reverb' contains count of data cells that aren't empty. We need to convert\n            //  it to interval 0..100, so we divide it by total count of data cells we checked, except\n            //  the cell camera is in. Number 2 is for negative and positive side, number 3 is for XYZ.\n            return MathHelper.Clamp(reverb / CELLS_TOTAL * MyAudioConstants.REVERB_MAX, 0, MyAudioConstants.REVERB_MAX);\n        }\n\n        //  Save all of the vertices in this voxel map to the OBJ file format\n        public void SaveVoxelVertices(StreamWriter sw)\n        {\n            MyMwcVector3Int cellCoord;\n            for (cellCoord.X = 0; cellCoord.X < DataCellsCount.X; cellCoord.X++)\n            {\n                for (cellCoord.Y = 0; cellCoord.Y < DataCellsCount.Y; cellCoord.Y++)\n                {\n                    for (cellCoord.Z = 0; cellCoord.Z < DataCellsCount.Z; cellCoord.Z++)\n                    {\n                        MyVoxelCacheCellData cachedDataCell = MyVoxelCacheData.GetCell(this, ref cellCoord);\n                        if (cachedDataCell != null)\n                        {\n                            for (int k = 0; k < cachedDataCell.VoxelVerticesCount; k++)\n                            {\n                                MyVoxelVertex vert = cachedDataCell.VoxelVertices[k];\n                                sw.WriteLine(\"v \" +\n                                    MyValueFormatter.GetFormatedFloat(vert.Position.X, 6, \"\") + ' ' +\n                                    MyValueFormatter.GetFormatedFloat(vert.Position.Y, 6, \"\") + ' ' +\n                                    MyValueFormatter.GetFormatedFloat(vert.Position.Z, 6, \"\"));\n                            }\n                        }\n\n                    }\n                }\n            }\n\n        }\n\n        //  Save all the normals of this voxel map to the OBJ file format\n        public void SaveVoxelNormals(StreamWriter sw)\n        {\n            MyMwcVector3Int cellCoord;\n            for (cellCoord.X = 0; cellCoord.X < DataCellsCount.X; cellCoord.X++)\n            {\n                for (cellCoord.Y = 0; cellCoord.Y < DataCellsCount.Y; cellCoord.Y++)\n                {\n                    for (cellCoord.Z = 0; cellCoord.Z < DataCellsCount.Z; cellCoord.Z++)\n                    {\n                        MyVoxelCacheCellData cachedDataCell = MyVoxelCacheData.GetCell(this, ref cellCoord);\n                        if (cachedDataCell != null)\n                        {\n                            for (int k = 0; k < cachedDataCell.VoxelVerticesCount; k++)\n                            {\n                                MyVoxelVertex vert = cachedDataCell.VoxelVertices[k];\n                                sw.WriteLine(\"vn \" +\n                                    MyValueFormatter.GetFormatedFloat(vert.Normal.X, 6, \"\") + ' ' +\n                                    MyValueFormatter.GetFormatedFloat(vert.Normal.Y, 6, \"\") + ' ' +\n                                    MyValueFormatter.GetFormatedFloat(vert.Normal.Z, 6, \"\"));\n                            }\n                        }\n\n                    }\n                }\n            }\n        }\n\n        //  Save each triangle in the voxel map to the OBJ file format\n        public void SaveVoxelFaces(StreamWriter sw, ref int vertexOffset)\n        {\n            MyMwcVector3Int cellCoord;\n            for (cellCoord.X = 0; cellCoord.X < DataCellsCount.X; cellCoord.X++)\n            {\n                for (cellCoord.Y = 0; cellCoord.Y < DataCellsCount.Y; cellCoord.Y++)\n                {\n                    for (cellCoord.Z = 0; cellCoord.Z < DataCellsCount.Z; cellCoord.Z++)\n                    {\n                        MyVoxelCacheCellData cachedDataCell = MyVoxelCacheData.GetCell(this, ref cellCoord);\n                        if (cachedDataCell != null)\n                        {\n                            for (int k = 0; k < cachedDataCell.VoxelTrianglesCount; k++)\n                            {\n                                MyVoxelTriangle triangle = cachedDataCell.VoxelTriangles[k];\n                                int index0 = ((int)triangle.VertexIndex0) + vertexOffset + 1;\n                                int index1 = ((int)triangle.VertexIndex1) + vertexOffset + 1;\n                                int index2 = ((int)triangle.VertexIndex2) + vertexOffset + 1;\n                                sw.Write(\"f \" +\n                                    index0.ToString() + \"//\" + index0.ToString() + ' ' +\n                                    index1.ToString() + \"//\" + index1.ToString() + ' ' +\n                                    index2.ToString() + \"//\" + index2.ToString() + '\\n');\n                            }\n                            //  Update offset for each data cell\n                            vertexOffset += cachedDataCell.VoxelVerticesCount;\n                        }\n                    }\n                }\n            }\n        }\n\n\n        private MyCompressionFileSave SaveVoxelContents(bool saveMaterialContent = false)\n        {\n            MyCompressionFileSave compressFile = new MyCompressionFileSave();\n\n            //  Version of a VOX file\n            compressFile.Add(MyVoxelConstants.VOXEL_FILE_ACTUAL_VERSION);\n\n            //  Size of this voxel map (in voxels)\n            compressFile.Add(Size.X);\n            compressFile.Add(Size.Y);\n            compressFile.Add(Size.Z);\n\n            //  Size of data cell in voxels, doesn't have to be same as current size specified by our constants.\n            compressFile.Add(MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS);\n            compressFile.Add(MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS);\n            compressFile.Add(MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS);\n\n            MyMwcVector3Int cellCoord;\n            for (cellCoord.X = 0; cellCoord.X < DataCellsCount.X; cellCoord.X++)\n            {\n                for (cellCoord.Y = 0; cellCoord.Y < DataCellsCount.Y; cellCoord.Y++)\n                {\n                    for (cellCoord.Z = 0; cellCoord.Z < DataCellsCount.Z; cellCoord.Z++)\n                    {\n                        MyVoxelContentCell voxelCell = GetCell(ref cellCoord);\n\n                        if (voxelCell == null)\n                        {\n                            //  Voxel wasn't found in cell dictionary, so cell must be full\n                            compressFile.Add((byte)MyVoxelCellType.FULL);\n                        }\n                        else\n                        {\n                            //MyCommonDebugUtils.AssertDebug((voxelCell.CellType == MyVoxelCellType.EMPTY) || (voxelCell.CellType == MyVoxelCellType.MIXED));\n\n                            //  Cell type\n                            compressFile.Add((byte)voxelCell.CellType);\n\n                            //  Cell coordinates - otherwise we won't know which cell is this when loading a voxel map\n                            //compressFile.Add(cellCoord.X);\n                            //compressFile.Add(cellCoord.Y);\n                            //compressFile.Add(cellCoord.Z);\n\n                            //  If we are here, cell is empty or mixed. If empty, we don't need to save each individual voxel.\n                            //  But if it is mixed, we will do it here.\n                            if (voxelCell.CellType == MyVoxelCellType.MIXED)\n                            {\n                                MyMwcVector3Int voxelCoordInCell;\n                                for (voxelCoordInCell.X = 0; voxelCoordInCell.X < MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS; voxelCoordInCell.X++)\n                                {\n                                    for (voxelCoordInCell.Y = 0; voxelCoordInCell.Y < MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS; voxelCoordInCell.Y++)\n                                    {\n                                        for (voxelCoordInCell.Z = 0; voxelCoordInCell.Z < MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS; voxelCoordInCell.Z++)\n                                        {\n                                            compressFile.Add(voxelCell.GetVoxelContent(ref voxelCoordInCell));\n                                        }\n                                    }\n                                }\n                            }\n                        }\n                    }\n                }\n            }\n\n            if (saveMaterialContent)\n            {\n                // Save material cells\n                for (cellCoord.X = 0; cellCoord.X < DataCellsCount.X; cellCoord.X++)\n                {\n                    for (cellCoord.Y = 0; cellCoord.Y < DataCellsCount.Y; cellCoord.Y++)\n                    {\n                        for (cellCoord.Z = 0; cellCoord.Z < DataCellsCount.Z; cellCoord.Z++)\n                        {\n                            var matCell = this.GetVoxelMaterialCells()[cellCoord.X][cellCoord.Y][cellCoord.Z];\n\n                            MyMwcVector3Int voxelCoordInCell = new MyMwcVector3Int(0, 0, 0);\n\n                            bool isWholeMaterial = matCell.IsSingleMaterialForWholeCell();\n                            compressFile.Add((byte)(isWholeMaterial ? 1 : 0));\n                            if (isWholeMaterial)\n                            {\n                                MyMwcVoxelMaterialsEnum singleMaterial = matCell.GetMaterial(ref voxelCoordInCell);\n                                compressFile.Add((byte)singleMaterial);\n                            }\n                            else\n                            {\n                                for (voxelCoordInCell.X = 0; voxelCoordInCell.X < MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS; voxelCoordInCell.X++)\n                                {\n                                    for (voxelCoordInCell.Y = 0; voxelCoordInCell.Y < MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS; voxelCoordInCell.Y++)\n                                    {\n                                        for (voxelCoordInCell.Z = 0; voxelCoordInCell.Z < MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS; voxelCoordInCell.Z++)\n                                        {\n                                            compressFile.Add((byte)matCell.GetMaterial(ref voxelCoordInCell));\n                                            compressFile.Add((byte)matCell.GetIndestructibleContent(ref voxelCoordInCell));\n                                        }\n                                    }\n                                }\n                            }\n                        }\n                    }\n                }\n            }\n\n            return compressFile;\n        }\n\n        //  Save voxel map into a file. \n        //  Final byte array is compressed and saved on disk.\n        //  This method used the idea of data cells, but size of data cell doesn't have to be same as current size specified by our constants.\n        //  It is stored in the file only for knowing how many voxels has each data cell.\n        public void SaveVoxelContents(string fileName, bool saveMaterialContent = false)\n        {\n            MyCompressionFileSave compressFile = SaveVoxelContents(saveMaterialContent);\n\n            compressFile.Save(fileName);\n        }\n\n        public void SaveVoxelContents(out byte[] savedVoxelContents, bool saveMaterialContent = false)\n        {\n            MyCompressionFileSave compressFile = SaveVoxelContents(saveMaterialContent);\n\n            compressFile.Save(out savedVoxelContents);\n        }\n\n\n        List<Tuple<BoundingBox, Vector4>> m_voxelsDebugDraw = new List<Tuple<BoundingBox, Vector4>>();\n\n        public override bool DebugDraw()\n        {\n            if (MyFakes.DRAW_TESTED_TRIANGLES_IN_VOXEL_LINE_INTERSECTION)\n            {\n                MyDebugDrawCachedLines.DrawLines();\n                MyDebugDrawCachedLines.Clear();\n            }\n\n            BoundingBox boundingBox = WorldAABB;\n\n            //Vector4 clrgr = new Vector4(0,1,0,1);\n            //MyDebugDraw.DrawAABBLine(ref boundingBox, ref clrgr, 1);\n\n            return true;\n\n\n\n            //  Get min and max cell coordinate where camera bounding box can fit\n            MyMwcVector3Int cellCoordMin = GetVoxelRenderCellCoordinateFromMeters(ref boundingBox.Min);\n            MyMwcVector3Int cellCoordMax = GetVoxelRenderCellCoordinateFromMeters(ref boundingBox.Max);\n\n            //  Fix min and max cell coordinates so they don't overlap the voxelmap\n            FixRenderCellCoord(ref cellCoordMin);\n            FixRenderCellCoord(ref cellCoordMax);\n\n            MyVoxelMaps.GetSortedRenderCells().Clear();\n\n            //  Get non-empty render cells visible to the frustum and sort them by distance to camera\n            MyMwcVector3Int cellCoord;\n\n            //MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            //MyRender.GetRenderProfiler().StartProfilingBlock(\"for for for\");\n\n            for (cellCoord.X = cellCoordMin.X; cellCoord.X <= cellCoordMax.X; cellCoord.X++)\n            {\n                for (cellCoord.Y = cellCoordMin.Y; cellCoord.Y <= cellCoordMax.Y; cellCoord.Y++)\n                {\n                    for (cellCoord.Z = cellCoordMin.Z; cellCoord.Z <= cellCoordMax.Z; cellCoord.Z++)\n                    {\n                        //  If no overlap between bounding box of a render cell and camera bounding frustum, we skip this cell\n                        //  We need to do this because checking only bounding boxes isn't sufficient as frustum's bounding box is too large\n                        BoundingBox renderCellBoundingBox;\n                        GetRenderCellBoundingBox(ref cellCoord, out renderCellBoundingBox);\n\n                        /*\n                  MyVoxelCacheCellRender myVoxelCacheCellRender = MyVoxelCacheRender.GetCell(this, ref cellCoord, MyLodTypeEnum.LOD0);\n\n                  foreach (MyVoxelCacheCellRenderBatch batch in myVoxelCacheCellRender.Batches)\n                  {\n                      short[] indices = new short[batch.IndexBufferSize / 2];\n                      batch.IndexBuffer.GetData(indices);\n\n                      MinerWars.AppCode.Game.Utils.MyVertexFormats.MyVertexFormatVoxelSingleMaterial[] vertices = new Utils.MyVertexFormats.MyVertexFormatVoxelSingleMaterial[batch.VertexBufferCount];\n\n                      batch.VertexBuffer.GetData(vertices);\n\n                      for (int i = 0; i < indices.Length; i += 3)\n                      {\n                          MinerWars.AppCode.Game.Utils.MyVertexFormats.MyVertexFormatVoxelSingleMaterial v1 = vertices[indices[i + 0]];\n                          MinerWars.AppCode.Game.Utils.MyVertexFormats.MyVertexFormatVoxelSingleMaterial v2 = vertices[indices[i + 1]];\n                          MinerWars.AppCode.Game.Utils.MyVertexFormats.MyVertexFormatVoxelSingleMaterial v3 = vertices[indices[i + 2]];\n\n                          if (renderCellBoundingBox.Contains(v1.Position) == ContainmentType.Disjoint)\n                          {\n                          }\n\n                          if (renderCellBoundingBox.Contains(v2.Position) == ContainmentType.Disjoint)\n                          {\n                          }\n\n                          if (renderCellBoundingBox.Contains(v3.Position) == ContainmentType.Disjoint)\n                          {\n                          }\n                      }\n                  }   */\n\n                        Vector4 cl = Vector4.One;\n                        MyDebugDraw.DrawAABBLine(ref renderCellBoundingBox, ref cl, 1);\n                    }\n                }\n            }\n\n            //return true;\n#if DETECT_POTENCIAL_COLLISIONS_CALLS\n            foreach (BoundingBox bbox in m_potencianCollsBBs)\n            {\n                Vector4 color = new Vector4(1, 0, 0, 1);\n                BoundingBox b = bbox;\n                MyDebugDraw.DrawAABB(ref b, ref color, 1);\n            }\n\n            m_potencianCollsBBs.Clear();\n#endif\n            m_voxelsDebugDraw.Clear();\n\n            Vector4 c = Vector4.One;\n            Vector4 c2 = new Vector4(0, 1, 0, 1);\n            Vector4 c3 = new Vector4(1, 0, 0, 1);\n            /*\n            BoundingBox box = new BoundingBox();\n            box = box.CreateInvalid();\n            Vector3 rn = new Vector3();\n            rn.X = MyMwcUtils.GetRandomFloat(0,1) * m_worldAABB.Size().X;\n            rn.Y = MyMwcUtils.GetRandomFloat(0,1) * m_worldAABB.Size().Y;\n            rn.Z = MyMwcUtils.GetRandomFloat(0, 1) * m_worldAABB.Size().Z;\n            rn += m_worldAABB.Min;\n            box = box.Include(ref rn);\n            rn = new Vector3();\n            rn.X = MyMwcUtils.GetRandomFloat(0, 1) * m_worldAABB.Size().X;\n            rn.Y = MyMwcUtils.GetRandomFloat(0, 1) * m_worldAABB.Size().Y;\n            rn.Z = MyMwcUtils.GetRandomFloat(0, 1) * m_worldAABB.Size().Z;\n            rn += m_worldAABB.Min;\n            box = box.Include(ref rn);\n\n            m_selectionHighlightColor = box.Min;\n            m_collisionHighlightColor = box.Max;\n                */\n\n            //BoundingBox box = new BoundingBox(m_selectionHighlightColor, m_collisionHighlightColor);\n            //m_selectionHighlightColor = Vector3.Zero;\n            /*\nMyEntity e;\nMyEntities.TryGetEntityById(new MyEntityIdentifier(23), out e);\nif (e == null)\n    return true;\n            */\n            BoundingBox box = WorldAABB;\n\n\n            //MyDebugDraw.DrawAABBLowRes(ref box, ref v, 1);\n\n            //  Get min and max cell coordinate where boundingBox can fit\n            cellCoordMin = GetDataCellCoordinateFromMeters(ref box.Min);\n            cellCoordMax = GetDataCellCoordinateFromMeters(ref box.Max);\n\n            for (cellCoord.X = cellCoordMin.X; cellCoord.X <= cellCoordMax.X; cellCoord.X++)\n            {\n                for (cellCoord.Y = cellCoordMin.Y; cellCoord.Y <= cellCoordMax.Y; cellCoord.Y++)\n                {\n                    for (cellCoord.Z = cellCoordMin.Z; cellCoord.Z <= cellCoordMax.Z; cellCoord.Z++)\n                    {\n                        //  If no overlap between bounding box of a render cell and camera bounding frustum, we skip this cell\n                        //  We need to do this because checking only bounding boxes isn't sufficient as frustum's bounding box is too large\n                        BoundingBox dataCellBoundingBox;\n                        GetDataCellBoundingBox(ref cellCoord, out dataCellBoundingBox);\n\n                        if (GetDataCellAverageContent(ref cellCoord) > 0) \n                            MyDebugDraw.DrawAABBLowRes(ref dataCellBoundingBox, ref c3, 1);\n                        /*\nif (dataCellBoundingBox.Intersects(box) == false)\n    continue;\n\n//  Get min and max cell coordinate where boundingBox can fit\nMyMwcVector3Int cellCoordMin2 = GetDataCellCoordinateFromMeters(ref dataCellBoundingBox.Min);\nMyMwcVector3Int cellCoordMax2 = GetDataCellCoordinateFromMeters(ref dataCellBoundingBox.Max);\n\nBoundingBox dataCellBoundingBox2;\nGetDataCellBoundingBox(ref cellCoord, out dataCellBoundingBox2);\nMyDebugDraw.DrawAABBLowRes(ref dataCellBoundingBox2, ref v2, 1);\n\nMyVoxelCacheCellData cachedDataCell = MyVoxelCacheData.GetCell(this, ref cellCoord);\nif (cachedDataCell == null) continue;\n\n\n\n\nif (cachedDataCell.VoxelTrianglesCount > 0)\n{\n    foreach (MyVoxelTriangle tri in cachedDataCell.VoxelTriangles)\n    {\n        MyDebugDraw.DrawTriangle(\n            cachedDataCell.VoxelVertices[tri.VertexIndex0].Position + PositionLeftBottomCorner,\n            cachedDataCell.VoxelVertices[tri.VertexIndex1].Position + PositionLeftBottomCorner,\n            cachedDataCell.VoxelVertices[tri.VertexIndex2].Position + PositionLeftBottomCorner,\n            Color.White,\n            Color.White,\n            Color.White);\n    }\n}                         */\n                    }\n                }\n            }\n\n\n\n            /*\n            //This code now draws colored spheres depending on voxel cell material\n          // if (MyMwcFinalBuildConstants.DrawVoxelContentAsBillboards)\n            {\n                //  Get min and max cell coordinate where boundingBox can fit\n                MyMwcVector3Int cellCoordMin = GetDataCellCoordinateFromMeters(ref MyCamera.BoundingBox.Min);\n                MyMwcVector3Int cellCoordMax = GetDataCellCoordinateFromMeters(ref MyCamera.BoundingBox.Max);\n\n                //  Fix min and max cell coordinates so they don't overlap the voxelmap\n                FixDataCellCoord(ref cellCoordMin);\n                FixDataCellCoord(ref cellCoordMax);\n\n                MyMwcVector3Int cellCoord;\n                for (cellCoord.X = cellCoordMin.X; cellCoord.X <= cellCoordMax.X; cellCoord.X++)\n                {\n                    for (cellCoord.Y = cellCoordMin.Y; cellCoord.Y <= cellCoordMax.Y; cellCoord.Y++)\n                    {\n                        for (cellCoord.Z = cellCoordMin.Z; cellCoord.Z <= cellCoordMax.Z; cellCoord.Z++)\n                        {\n                            //  If no overlap between bounding box of a render cell and camera bounding frustum, we skip this cell\n                            //  We need to do this because checking only bounding boxes isn't sufficient as frustum's bounding box is too large\n                            BoundingBox dataCellBoundingBox;\n                            GetDataCellBoundingBox(ref cellCoord, out dataCellBoundingBox);\n\n                            if (!MyCamera.IsInFrustum(ref dataCellBoundingBox))\n                            {\n                                continue;\n                            }\n\n                            // draw only nonempty cells\n                            if (GetDataCellAverageContent(ref cellCoord) <= 0)\n                            {\n                                continue;\n                            }\n\n                            MyMwcVector3Int cellCoordInVoxels = GetVoxelCoordinatesOfDataCell(ref cellCoord);\n\n                            var matCell = this.GetVoxelMaterialCells()[cellCoord.X][cellCoord.Y][cellCoord.Z];\n\n\n                            if (!matCell.IsMaterialForWholeCell())\n                            {\n\n                                MyMwcVector3Int voxelCoordInCell;\n\n                                for (voxelCoordInCell.X = 0; voxelCoordInCell.X < MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS; voxelCoordInCell.X++)\n                                {\n                                    for (voxelCoordInCell.Y = 0; voxelCoordInCell.Y < MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS; voxelCoordInCell.Y++)\n                                    {\n                                        for (voxelCoordInCell.Z = 0; voxelCoordInCell.Z < MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS; voxelCoordInCell.Z++)\n                                        {\n                                            // compressFile.Add((byte)matCell.GetMaterial(ref voxelCoordInCell));\n                                            // compressFile.Add((byte)matCell.GetIndestructibleContent(ref voxelCoordInCell));\n                                            Vector4 color = new Vector4(0.5f, 0, 0, 0.5f);\n\n                                            Vector3 delta = (dataCellBoundingBox.Max - dataCellBoundingBox.Min) / MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS;\n\n                                            BoundingBox vvv = new BoundingBox(dataCellBoundingBox.Min + new Vector3(delta.X * voxelCoordInCell.X, delta.Y * voxelCoordInCell.Y, delta.Z * voxelCoordInCell.Z),\n                                                dataCellBoundingBox.Min + new Vector3(delta.X * (voxelCoordInCell.X + 1), delta.Y * (voxelCoordInCell.Y + 1), delta.Z * (voxelCoordInCell.Z + 1)));\n\n\n                                            MyMwcVoxelMaterialsEnum mat = matCell.GetMaterial(ref voxelCoordInCell);\n                                            if (mat != MyMwcVoxelMaterialsEnum.Lava_01)\n                                            {\n                                                color = new Vector4(0, 0, 1, 1);\n                                                \n                                            }\n                                            else\n                                                color = new Vector4(1, 0, 0, 1);\n\n                                            MyMwcVector3Int cnt;\n                                            cnt.X = cellCoordInVoxels.X + voxelCoordInCell.X;\n                                            cnt.Y = cellCoordInVoxels.Y + voxelCoordInCell.Y;\n                                            cnt.Z = cellCoordInVoxels.Z + voxelCoordInCell.Z;\n\n                                            if (GetVoxelContent(ref cnt) > 0)\n                                            {\n                                                m_voxelsDebugDraw.Add(new Tuple<BoundingBox, Vector4>(vvv, color));\n                                            }\n\n                                            // MyDebugDraw.DrawAABBSolidLowRes(vvv, color, 1);\n\n\n                                        }\n                                    }\n                                }\n\n\n                            }\n                            else\n                            {\n                            }\n\n                            //MyDebugDraw.DrawAABBLowRes(ref renderCellBoundingBox, ref color, 1);\n                            //MyDebugDraw.DrawAABBSolidLowRes(dataCellBoundingBox, color, 1);\n                        }\n                    }\n                }\n            }\n\n    //        if (EntityId.Value.NumericValue == 42059)\n            {\n\n                foreach (Tuple<BoundingBox, Vector4> bb in m_voxelsDebugDraw)\n                {\n                    BoundingBox d = bb.Item1;\n                    Vector4 c = bb.Item2;\n                    MyDebugDraw.DrawSphereWireframe(d.GetCenter(), 1, new Vector3(c.X, c.Y, c.Z), 1);\n                    //MyDebugDraw.DrawAABBSolidLowRes(bb.Item1, bb.Item2, 1);\n                }\n            }\n            */\n\n            if (!base.DebugDraw())\n                return false;\n\n            return true;\n        }\n\n        static void AddRenderCellToSortingList(MyVoxelCacheCellRender cachedRenderCell)\n        {\n            //  If cell is empty, skip it (don't add to sorting list)\n            if (cachedRenderCell.Batches.Count <= 0) return;\n\n            //  Cell is in the frustum and isn't empty, so add to sorting list\n            MyVoxelMaps.GetSortedRenderCells().Add(new MyRenderCellForSorting(cachedRenderCell));\n        }\n\n        //  This distance isn't from center of render cell to camera, but from bounding sphere of a render cell. So if camera\n        //  is inside, distance is zero.\n        public float GetSmallestDistanceFromCameraToRenderCell(ref MyMwcVector3Int cellCoord)\n        {\n            BoundingSphere renderCellBoundingSphere;\n            Vector3 campos = MyCamera.Position;\n            GetRenderCellBoundingSphere(ref cellCoord, out renderCellBoundingSphere);\n            return MyUtils.GetSmallestDistanceToSphereAlwaysPositive(ref campos, ref renderCellBoundingSphere);\n        }\n\n        //  This distance isn't from center of render cell to camera, but from opposite side of bounding sphere of a render cell. \n        public float GetLargestDistanceFromCameraToRenderCell(ref MyMwcVector3Int cellCoord)\n        {\n            BoundingSphere renderCellBoundingSphere;\n            GetRenderCellBoundingSphere(ref cellCoord, out renderCellBoundingSphere);\n            Vector3 campos = MyCamera.Position;\n            return MyUtils.GetLargestDistanceToSphere(ref campos, ref renderCellBoundingSphere);\n        }\n\n        //  This distance isn't from center of data cell to camera, but from bounding sphere of a render cell. So if camera\n        //  is inside, distance is zero.\n        public float GetSmallestDistanceFromCameraToDataCell(ref MyMwcVector3Int cellCoord)\n        {\n            BoundingSphere dataCellBoundingSphere;\n            GetDataCellBoundingSphere(ref cellCoord, out dataCellBoundingSphere);\n            Vector3 campos = MyCamera.Position;\n            return MyUtils.GetSmallestDistanceToSphereAlwaysPositive(ref campos, ref dataCellBoundingSphere);\n        }\n\n        /*\n        public void GetRenderElements(List<MyRender.MyRenderElement> renderElements, BoundingBox boundingBox, MyLodTypeEnum lod)\n        {\n            if (MyRender.SkipVoxels)\n                return;\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyVoxelMap.GetRenderElements\");\n\n            using (MyVoxelCacheData.Locker.AcquireSharedUsing())\n            {\n                //MyRender.GetRenderProfiler().StartProfilingBlock(\"MyVoxelMap::GetRenderElements\");\n\n                //MyRender.GetRenderProfiler().StartProfilingBlock(\"GetVoxelRenderCellCoordinateFromMeters\");\n\n                //  Get min and max cell coordinate where camera bounding box can fit\n                MyMwcVector3Int cellCoordMin = GetVoxelRenderCellCoordinateFromMeters(ref boundingBox.Min);\n                MyMwcVector3Int cellCoordMax = GetVoxelRenderCellCoordinateFromMeters(ref boundingBox.Max);\n\n                //  Fix min and max cell coordinates so they don't overlap the voxelmap\n                FixRenderCellCoord(ref cellCoordMin);\n                FixRenderCellCoord(ref cellCoordMax);\n\n                MyVoxelMaps.GetSortedRenderCells().Clear();\n\n                //  Get non-empty render cells visible to the frustum and sort them by distance to camera\n                MyMwcVector3Int cellCoord;\n                MyVoxelCacheCellRender myVoxelCacheCellRender = null;\n\n                //MyRender.GetRenderProfiler().EndProfilingBlock();\n\n                //MyRender.GetRenderProfiler().StartProfilingBlock(\"for for for\");\n\n                for (cellCoord.X = cellCoordMin.X; cellCoord.X <= cellCoordMax.X; cellCoord.X++)\n                {\n                    for (cellCoord.Y = cellCoordMin.Y; cellCoord.Y <= cellCoordMax.Y; cellCoord.Y++)\n                    {\n                        for (cellCoord.Z = cellCoordMin.Z; cellCoord.Z <= cellCoordMax.Z; cellCoord.Z++)\n                        {\n                            //  If no overlap between bounding box of a render cell and camera bounding frustum, we skip this cell\n                            //  We need to do this because checking only bounding boxes isn't sufficient as frustum's bounding box is too large\n                            BoundingBox renderCellBoundingBox;\n                            GetRenderCellBoundingBox(ref cellCoord, out renderCellBoundingBox);\n\n                            if (!MyCamera.IsInFrustum(ref renderCellBoundingBox))\n                            {\n                                continue;\n                            }\n\n                            if (lod == MyLodTypeEnum.LOD0)\n                            {\n                                float distanceForLod0 = GetSmallestDistanceFromCameraToRenderCell(ref cellCoord);\n\n                                if (distanceForLod0 <= MyRender.CurrentRenderSetup.LodTransitionFar.Value)\n                                {\n                                    myVoxelCacheCellRender = MyVoxelCacheRender.GetCell(this, ref cellCoord, MyLodTypeEnum.LOD0);\n                                    //myVoxelCacheCellRender.CellBoundingBox = renderCellBoundingBox;\n\n                                    if (myVoxelCacheCellRender != null)\n                                    {\n                                        //AddRenderCellToSortingList(myVoxelCacheCellRender);\n                                        GetRenderElementsFromRenderCell(renderElements, myVoxelCacheCellRender);\n                                    }\n                                }\n                            }\n                            else if (lod == MyLodTypeEnum.LOD1)\n                            {\n                                float distanceForLod1 = GetLargestDistanceFromCameraToRenderCell(ref cellCoord);\n                                float distanceForBackground = GetSmallestDistanceFromCameraToRenderCell(ref cellCoord);\n                                if (distanceForLod1 >= MyRender.CurrentRenderSetup.LodTransitionNear.Value\n                                    &&\n                                    distanceForBackground < MyRender.CurrentRenderSetup.LodTransitionBackgroundEnd.Value)\n                                {\n                                    myVoxelCacheCellRender = MyVoxelCacheRender.GetCell(this, ref cellCoord, MyLodTypeEnum.LOD1);\n                                    //myVoxelCacheCellRender.CellBoundingBox = renderCellBoundingBox;\n                                    //AddRenderCellToSortingList(myVoxelCacheCellRender);\n\n                                    if (myVoxelCacheCellRender != null)\n                                    {\n                                        GetRenderElementsFromRenderCell(renderElements, myVoxelCacheCellRender);\n                                    }\n                                }\n                            }\n\n                            if (myVoxelCacheCellRender == null)\n                                continue;\n                        }\n                    }\n                }\n\n                //MyRender.GetRenderProfiler().EndProfilingBlock();\n                //MyRender.GetRenderProfiler().EndProfilingBlock();\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }  */\n\n\n        public void GetRenderElements(List<MyRender.MyRenderElement> renderElements, MyMwcVector3Int cellCoord, MyLodTypeEnum lod)\n        {\n            if (MyRender.SkipVoxels)\n                return;\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyVoxelMap.GetRenderElements2\");\n\n            \n                MyVoxelCacheCellRender myVoxelCacheCellRender = null;\n\n                if (lod == MyLodTypeEnum.LOD0)\n                {\n                    float distanceForLod0 = GetSmallestDistanceFromCameraToRenderCell(ref cellCoord);\n\n                    if (distanceForLod0 <= MyRender.CurrentRenderSetup.LodTransitionFar.Value)\n                    {\n                        MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Lock\");\n                        using (MyVoxelCacheData.Locker.AcquireExclusiveUsing())\n                        {\n                            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n                            myVoxelCacheCellRender = MyVoxelCacheRender.GetCell(this, ref cellCoord, MyLodTypeEnum.LOD0);\n\n                            //myVoxelCacheCellRender.CellBoundingBox = renderCellBoundingBox;\n\n                            if (myVoxelCacheCellRender != null)\n                            {\n                                //AddRenderCellToSortingList(myVoxelCacheCellRender);\n                                MyRender.GetRenderProfiler().StartProfilingBlock(\"GetRenderElementsFromRenderCellLOD0\");\n                                GetRenderElementsFromRenderCell(renderElements, myVoxelCacheCellRender);\n                                MyRender.GetRenderProfiler().EndProfilingBlock();\n                            }\n                        }\n                    }\n                }\n                else if (lod == MyLodTypeEnum.LOD1)\n                {\n                    float distanceForLod1 = GetLargestDistanceFromCameraToRenderCell(ref cellCoord);\n                    float distanceForBackground = GetSmallestDistanceFromCameraToRenderCell(ref cellCoord);\n                    if (distanceForLod1 >= MyRender.CurrentRenderSetup.LodTransitionNear.Value\n                        &&\n                        distanceForBackground < MyRender.CurrentRenderSetup.LodTransitionBackgroundEnd.Value)\n                    {\n                         MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Lock\");\n                         using (MyVoxelCacheData.Locker.AcquireExclusiveUsing())\n                         {\n                             MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n                             myVoxelCacheCellRender = MyVoxelCacheRender.GetCell(this, ref cellCoord, MyLodTypeEnum.LOD1);\n\n                             //myVoxelCacheCellRender.CellBoundingBox = renderCellBoundingBox;\n                             //AddRenderCellToSortingList(myVoxelCacheCellRender);\n\n                             if (myVoxelCacheCellRender != null)\n                             {\n                                 MyRender.GetRenderProfiler().StartProfilingBlock(\"GetRenderElementsFromRenderCellLOD0\");\n                                 GetRenderElementsFromRenderCell(renderElements, myVoxelCacheCellRender);\n                                 MyRender.GetRenderProfiler().EndProfilingBlock();\n                             }\n                         }\n                    }\n                }\n                //MyRender.GetRenderProfiler().EndProfilingBlock();\n                //MyRender.GetRenderProfiler().EndProfilingBlock();\n            \n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        void GetRenderElementsFromRenderCell(List<MyRender.MyRenderElement> renderElements, MyVoxelCacheCellRender renderCell)\n        {      \n            //MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"GetElementsFromRenderCell\");\n\n            //  Performance counters\n            if (renderCell.CellHashType == MyLodTypeEnum.LOD1)\n                MyPerformanceCounter.PerCameraDraw.RenderCellsInFrustum_LOD1++;\n            else\n                MyPerformanceCounter.PerCameraDraw.RenderCellsInFrustum_LOD0++;\n\n            foreach (MyVoxelCacheCellRenderBatch batch in renderCell.Batches)\n            {\n                if (batch.IndexBuffer == null)\n                    continue;\n\n                MyRender.MyRenderElement renderElement;\n                MyRender.AllocateRenderElement(out renderElement);\n                //MyRender.AddRenderElement(renderElements, out renderElement);\n\n                //renderElement.DebugName = this.Name;\n                renderElement.Entity = this;\n                renderElement.IndexBuffer = batch.IndexBuffer;\n                renderElement.VertexDeclaration = MinerWars.AppCode.Game.Utils.VertexFormats.MyVertexFormatVoxelSingleMaterial.VertexDeclaration;\n                renderElement.VertexStride = MinerWars.AppCode.Game.Utils.VertexFormats.MyVertexFormatVoxelSingleMaterial.Stride;\n                renderElement.VertexCount = batch.VertexBufferCount;\n                renderElement.VertexBuffer = batch.VertexBuffer;\n                renderElement.IndexStart = 0;\n                renderElement.TriCount = batch.IndexBufferCount / 3;\n                renderElement.WorldMatrix = Matrix.CreateTranslation(PositionLeftBottomCorner);\n                renderElement.DrawTechnique = MyMeshDrawTechnique.VOXEL_MAP;\n                renderElement.Material = m_fakeVoxelMaterial;\n                renderElement.VoxelBatch = batch;\n\n                renderElements.Add(renderElement);\n\n                MyPerformanceCounter.PerCameraDraw.VoxelTrianglesInFrustum += renderElement.TriCount;\n\n            }\n              \n            //MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n        /*\n        public void GetRenderElementsForShadowmap(List<MyRender.MyRenderElement> renderElements, ref BoundingBox boundingBox, BoundingFrustum frustum, MyLodTypeEnum lod, bool generateIfNotExists)\n        {\n            if (MyRender.SkipVoxels)\n                return;\n            using (MyVoxelCacheData.Locker.AcquireExclusiveUsing())\n            {\n\n                //   Lock.AcquireReaderLock(Timeout.Infinite);\n\n                //  Get min and max cell coordinate where camera bounding box can fit\n                MyMwcVector3Int cellCoordMin = GetVoxelRenderCellCoordinateFromMeters(ref boundingBox.Min);\n                MyMwcVector3Int cellCoordMax = GetVoxelRenderCellCoordinateFromMeters(ref boundingBox.Max);\n\n                //  Fix min and max cell coordinates so they don't overlap the voxelmap\n                FixRenderCellCoord(ref cellCoordMin);\n                FixRenderCellCoord(ref cellCoordMax);\n\n                SharpDX.Direct3D9.Device device = MyMinerGame.Static.GraphicsDevice;\n\n                if (MyVoxelMaps.GetSortedRenderCells() != null)\n                    MyVoxelMaps.GetSortedRenderCells().Clear();\n\n                //  Get non-empty render cells visible to the frustum and sort them by distance to camera\n                MyMwcVector3Int cellCoord;\n                MyVoxelCacheCellRender myVoxelCacheCellRender;\n\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"GetElements from MyVoxelMap\");\n\n                for (cellCoord.X = cellCoordMin.X; cellCoord.X <= cellCoordMax.X; cellCoord.X++)\n                {\n                    for (cellCoord.Y = cellCoordMin.Y; cellCoord.Y <= cellCoordMax.Y; cellCoord.Y++)\n                    {\n                        for (cellCoord.Z = cellCoordMin.Z; cellCoord.Z <= cellCoordMax.Z; cellCoord.Z++)\n                        {\n                            //Skip render cells outside frustum\n                            if (frustum.Contains(boundingBox) == ContainmentType.Disjoint)\n                                return;\n\n                            var loadingMode = generateIfNotExists ? MyVoxelCellQueryMode.LoadImmediately : MyVoxelCellQueryMode.DoNotLoad;\n\n                            myVoxelCacheCellRender = MyVoxelCacheRender.GetCell(this, ref cellCoord, lod, loadingMode);\n                            if (myVoxelCacheCellRender == null)\n                                continue;\n                            //myVoxelCacheCellRender.CellBoundingBox = renderCellBoundingBox;\n\n                            foreach (MyVoxelCacheCellRenderBatch batch in myVoxelCacheCellRender.Batches)\n                            {\n                                if (batch.IndexBufferCount == 0)\n                                    continue;\n\n                                MyRender.MyRenderElement renderElement;\n                                //MyRender.AddRenderElement(renderElements, out renderElement);\n                                MyRender.AllocateRenderElement(out renderElement);\n\n                                //renderElement.DebugName = this.Name;\n                                renderElement.Entity = this;\n                                renderElement.IndexBuffer = batch.IndexBuffer;\n                                renderElement.IndexStart = 0;\n                                if (renderElement.IndexBuffer != null)\n                                {\n                                    renderElement.TriCount = batch.IndexBufferCount / 3;\n                                }\n                                renderElement.VertexDeclaration = MinerWars.AppCode.Game.Utils.VertexFormats.MyVertexFormatVoxelSingleMaterial.VertexDeclaration;\n                                renderElement.VertexStride = MinerWars.AppCode.Game.Utils.VertexFormats.MyVertexFormatVoxelSingleMaterial.Stride;\n                                renderElement.VertexCount = batch.VertexBufferCount;\n                                renderElement.VertexBuffer = batch.VertexBuffer;\n                                renderElement.WorldMatrix = Matrix.CreateTranslation(PositionLeftBottomCorner);\n                                // renderElement.Center = GetDataCellPositionAbsolute(ref cellCoord) + MyVoxelConstants.VOXEL_DATA_CELL_SIZE_HALF_VECTOR_IN_METRES;\n                                renderElement.VoxelBatch = batch;\n\n                                renderElements.Add(renderElement);\n\n                                //Vector3 one = Vector3.One;\n                                //renderElement.Material = m_fakeVoxelMaterial;\n                                //renderElement.BoundingBox = myVoxelCacheCellRender.CellBoundingBox;\n                            }\n                        }\n                    }\n                }\n\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n            } \n        }        */\n\n        public void GetRenderElementsForShadowmap(List<MyRender.MyRenderElement> renderElements, MyMwcVector3Int cellCoord, MyLodTypeEnum lod, bool generateIfNotExists)\n        {      \n            if (MyRender.SkipVoxels)\n                return;\n\n            //   Lock.AcquireReaderLock(Timeout.Infinite);\n\n            SharpDX.Direct3D9.Device device = MyMinerGame.Static.GraphicsDevice;\n\n            //  Get non-empty render cells visible to the frustum and sort them by distance to camera\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"GetElements from MyVoxelMap\");\n            var loadingMode = generateIfNotExists ? MyVoxelCellQueryMode.LoadImmediately : MyVoxelCellQueryMode.DoNotLoad;\n\n            MyVoxelCacheCellRender myVoxelCacheCellRender = null;\n            using (MyVoxelCacheData.Locker.AcquireExclusiveUsing())\n            {\n                myVoxelCacheCellRender = MyVoxelCacheRender.GetCell(this, ref cellCoord, lod, loadingMode);\n\n                if (myVoxelCacheCellRender == null)\n                {\n                    MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();     \n                    return;\n                }\n\n                foreach (MyVoxelCacheCellRenderBatch batch in myVoxelCacheCellRender.Batches)\n                {\n                    if (batch.IndexBufferCount == 0)\n                        continue;\n\n                    MyRender.MyRenderElement renderElement;\n                    //MyRender.AddRenderElement(renderElements, out renderElement);\n                    MyRender.AllocateRenderElement(out renderElement);\n\n                    //renderElement.DebugName = this.Name;\n                    renderElement.Entity = this;\n                    renderElement.IndexBuffer = batch.IndexBuffer;\n                    renderElement.IndexStart = 0;\n                    if (renderElement.IndexBuffer != null)\n                    {\n                        renderElement.TriCount = batch.IndexBufferCount / 3;\n                    }\n                    renderElement.VertexDeclaration = MinerWars.AppCode.Game.Utils.VertexFormats.MyVertexFormatVoxelSingleMaterial.VertexDeclaration;\n                    renderElement.VertexStride = MinerWars.AppCode.Game.Utils.VertexFormats.MyVertexFormatVoxelSingleMaterial.Stride;\n                    renderElement.VertexCount = batch.VertexBufferCount;\n                    renderElement.VertexBuffer = batch.VertexBuffer;\n                    renderElement.WorldMatrix = Matrix.CreateTranslation(PositionLeftBottomCorner);\n                    // renderElement.Center = GetDataCellPositionAbsolute(ref cellCoord) + MyVoxelConstants.VOXEL_DATA_CELL_SIZE_HALF_VECTOR_IN_METRES;\n                    renderElement.VoxelBatch = batch;\n\n                    renderElements.Add(renderElement);\n\n                    //Vector3 one = Vector3.One;\n                    //renderElement.Material = m_fakeVoxelMaterial;\n                    //renderElement.BoundingBox = myVoxelCacheCellRender.CellBoundingBox;\n                }\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();     \n        }\n\n        public override bool Draw(MyRenderObject renderObject = null)\n        {\n            if (MyMwcFinalBuildConstants.DrawVoxelContentAsBillboards)\n                DrawVoxelsAsBillboards();\n\n            return base.Draw(renderObject);\n        }\n\n        //  This method is for debugging only, so doesn't have to be super-optimal.\n        //  We don't use data/render cache, so we even don't check if cell is empty. It's because we want to be sure we display all voxels.\n        //  IMPORTANT: This method adds billboars to list in MyParticles. So if there is too many voxels in front of camera, some particles\n        //  IMPORTANT: may not be displayed (because billboard buffer is full and we sort particles by distance).\n        public void DrawVoxelsAsBillboards()\n        {\n            //  Get min and max cell coordinate where camera bounding box can fit\n            MyMwcVector3Int cellCoordMin = GetDataCellCoordinateFromMeters(ref MyCamera.BoundingBox.Min);\n            MyMwcVector3Int cellCoordMax = GetDataCellCoordinateFromMeters(ref MyCamera.BoundingBox.Max);\n\n            //  Fix min and max cell coordinates so they don't overlap the voxelmap\n            FixDataCellCoord(ref cellCoordMin);\n            FixDataCellCoord(ref cellCoordMax);\n\n            //  Get data cells visible to the frustum and draw its voxels as billboards\n            MyMwcVector3Int cellCoord;\n            for (cellCoord.X = cellCoordMin.X; cellCoord.X <= cellCoordMax.X; cellCoord.X++)\n            {\n                for (cellCoord.Y = cellCoordMin.Y; cellCoord.Y <= cellCoordMax.Y; cellCoord.Y++)\n                {\n                    for (cellCoord.Z = cellCoordMin.Z; cellCoord.Z <= cellCoordMax.Z; cellCoord.Z++)\n                    {\n                        float distanceToDataCell = GetSmallestDistanceFromCameraToDataCell(ref cellCoord);\n\n                        //  Don't draw cells far away, because it's very slow\n                        if (distanceToDataCell < (30.0f))\n                        {\n                            MyMwcVector3Int voxelCoordTemp;\n                            for (voxelCoordTemp.X = 0; voxelCoordTemp.X < MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS; voxelCoordTemp.X++)\n                            {\n                                for (voxelCoordTemp.Y = 0; voxelCoordTemp.Y < MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS; voxelCoordTemp.Y++)\n                                {\n                                    for (voxelCoordTemp.Z = 0; voxelCoordTemp.Z < MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS; voxelCoordTemp.Z++)\n                                    {\n                                        MyMwcVector3Int cellVoxelCoord = GetVoxelCoordinatesOfDataCell(ref cellCoord);\n                                        MyMwcVector3Int voxelCoord;\n                                        voxelCoord.X = cellVoxelCoord.X + voxelCoordTemp.X;\n                                        voxelCoord.Y = cellVoxelCoord.Y + voxelCoordTemp.Y;\n                                        voxelCoord.Z = cellVoxelCoord.Z + voxelCoordTemp.Z;\n\n                                        float radius = GetVoxelContentAsFloat(ref voxelCoord);\n                                        if (radius > 0)\n                                        {\n                                            radius *= MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF;// *0.99f;\n                                            MyTransparentGeometry.AddPointBillboard(MyTransparentMaterialEnum.Test, new Vector4(1, 1, 1, 1),\n                                                GetVoxelCenterPositionAbsolute(ref voxelCoord), radius, 0);\n                                        }\n                                    }\n                                }\n                            }\n                        }\n                    }\n                }\n            }\n        }\n\n        //  Draw bounding box around whole voxel map (12 lines)\n        public override void DebugDrawOBB()\n        {\n            base.DebugDrawOBB();\n\n            MyDebugDraw.DrawLine3D(PositionLeftBottomCorner + new Vector3(0, 0, 0), PositionLeftBottomCorner + new Vector3(SizeInMetres.X, 0, 0), Color.Red, Color.Red);\n            MyDebugDraw.DrawLine3D(PositionLeftBottomCorner + new Vector3(0, 0, 0), PositionLeftBottomCorner + new Vector3(0, SizeInMetres.Y, 0), Color.Red, Color.Red);\n            MyDebugDraw.DrawLine3D(PositionLeftBottomCorner + new Vector3(0, 0, 0), PositionLeftBottomCorner + new Vector3(0, 0, SizeInMetres.Z), Color.Red, Color.Red);\n            MyDebugDraw.DrawLine3D(PositionLeftBottomCorner + new Vector3(0, SizeInMetres.Y, 0), PositionLeftBottomCorner + new Vector3(SizeInMetres.X, SizeInMetres.Y, 0), Color.Red, Color.Red);\n            MyDebugDraw.DrawLine3D(PositionLeftBottomCorner + new Vector3(SizeInMetres.X, SizeInMetres.Y, 0), PositionLeftBottomCorner + new Vector3(SizeInMetres.X, SizeInMetres.Y, SizeInMetres.Z), Color.Red, Color.Red);\n            MyDebugDraw.DrawLine3D(PositionLeftBottomCorner + new Vector3(SizeInMetres.X, 0, 0), PositionLeftBottomCorner + new Vector3(SizeInMetres.X, 0, SizeInMetres.Z), Color.Red, Color.Red);\n            MyDebugDraw.DrawLine3D(PositionLeftBottomCorner + new Vector3(0, SizeInMetres.Y, 0), PositionLeftBottomCorner + new Vector3(0, SizeInMetres.Y, SizeInMetres.Z), Color.Red, Color.Red);\n            MyDebugDraw.DrawLine3D(PositionLeftBottomCorner + new Vector3(0, 0, SizeInMetres.Z), PositionLeftBottomCorner + new Vector3(0, SizeInMetres.Y, SizeInMetres.Z), Color.Red, Color.Red);\n            MyDebugDraw.DrawLine3D(PositionLeftBottomCorner + new Vector3(SizeInMetres.X, 0, SizeInMetres.Z), PositionLeftBottomCorner + new Vector3(SizeInMetres.X, SizeInMetres.Y, SizeInMetres.Z), Color.Red, Color.Red);\n            MyDebugDraw.DrawLine3D(PositionLeftBottomCorner + new Vector3(SizeInMetres.X, 0, 0), PositionLeftBottomCorner + new Vector3(SizeInMetres.X, SizeInMetres.Y, 0), Color.Red, Color.Red);\n            MyDebugDraw.DrawLine3D(PositionLeftBottomCorner + new Vector3(0, SizeInMetres.Y, SizeInMetres.Z), PositionLeftBottomCorner + new Vector3(SizeInMetres.X, SizeInMetres.Y, SizeInMetres.Z), Color.Red, Color.Red);\n            MyDebugDraw.DrawLine3D(PositionLeftBottomCorner + new Vector3(0, 0, SizeInMetres.Z), PositionLeftBottomCorner + new Vector3(SizeInMetres.X, 0, SizeInMetres.Z), Color.Red, Color.Red);\n        }\n\n        //  Draw bounding boxes of data cells\n        public void DrawDataCellBoundingBoxres()\n        {\n            return;\n\n            if (MyMwcFinalBuildConstants.DrawHelperPrimitives == false) return;\n\n            Color color = new Color(new Vector4(0.35f, 0, 0, 1));\n\n            //  Draw lines perpendicular to YZ plane\n            for (int y = 0; y <= DataCellsCount.Y; y++)\n            {\n                for (int z = 0; z <= DataCellsCount.Z; z++)\n                {\n                    Vector3 start = PositionLeftBottomCorner + new Vector3(0, y * MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_METRES, z * MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_METRES);\n                    Vector3 end = PositionLeftBottomCorner + new Vector3(SizeInMetres.X, y * MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_METRES, z * MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_METRES);\n                    MyDebugDraw.DrawLine3D(start, end, color, color);\n                }\n            }\n\n            //  Draw lines perpendicular to XY plane\n            for (int x = 0; x <= DataCellsCount.X; x++)\n            {\n                for (int y = 0; y <= DataCellsCount.Y; y++)\n                {\n                    Vector3 start = PositionLeftBottomCorner + new Vector3(x * MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_METRES, y * MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_METRES, 0);\n                    Vector3 end = PositionLeftBottomCorner + new Vector3(x * MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_METRES, y * MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_METRES, SizeInMetres.Z);\n                    MyDebugDraw.DrawLine3D(start, end, color, color);\n                }\n            }\n\n            //  Draw lines perpendicular to XZ plane\n            for (int x = 0; x <= DataCellsCount.X; x++)\n            {\n                for (int z = 0; z <= DataCellsCount.Z; z++)\n                {\n                    Vector3 start = PositionLeftBottomCorner + new Vector3(x * MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_METRES, 0, z * MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_METRES);\n                    Vector3 end = PositionLeftBottomCorner + new Vector3(x * MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_METRES, SizeInMetres.Y, z * MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_METRES);\n                    MyDebugDraw.DrawLine3D(start, end, color, color);\n                }\n            }\n        }\n\n        public void DrawBounding()\n        {\n            Vector4 color = new Vector4(0f, 0.95f, 0f, 0.1f);\n            float x = SizeInMetres.X / 2f;\n            float y = SizeInMetres.Y / 2f;\n            float z = SizeInMetres.Z / 2f;\n            AddBoundingBillboard(Vector3.Left, Vector3.Forward, Vector3.Up, new Vector3(-x, 0, 0), y, z, color);\n            AddBoundingBillboard(Vector3.Left, Vector3.Forward, Vector3.Up, new Vector3(x, 0, 0), y, z, color);\n            AddBoundingBillboard(Vector3.Left, Vector3.Forward, Vector3.Right, new Vector3(0, y, 0), x, z, color);\n            AddBoundingBillboard(Vector3.Left, Vector3.Forward, Vector3.Right, new Vector3(0, -y, 0), x, z, color);\n            AddBoundingBillboard(Vector3.Left, Vector3.Up, Vector3.Right, new Vector3(0, 0, z), x, y, color);\n            AddBoundingBillboard(Vector3.Left, Vector3.Up, Vector3.Right, new Vector3(0, 0, -z), x, y, color);\n        }\n\n        private void AddBoundingBillboard(Vector3 localForward, Vector3 localUp, Vector3 localRight, Vector3 localTranslation, float width, float height, Vector4 color)\n        {\n            Matrix localRot = Matrix.Identity;\n            localRot.Forward = localForward;\n            localRot.Up = localUp;\n            localRot.Right = localRight;\n            localRot.Translation = localTranslation;\n            Matrix matrix = localRot * this.GetOrientation();\n            matrix.Translation += this.GetPosition();\n\n            MyTransparentGeometry.AddBillboardOriented(MyTransparentMaterialEnum.ContainerBorderSelected, color, matrix.Translation, matrix.Left, matrix.Up, width, height);\n        }\n\n        //  Get cell. If not found (cell is full), null is returned.\n        //  IMPORTANT: This method doesn't check if input cell coord0 is inside of the voxel map.\n        //  IMPORTANT: This method has overloaded version that is sometimes needed too.\n        public MyVoxelContentCell GetCell(MyMwcVector3Int cellCoord)\n        {\n            if (!CheckVoxelCoord(cellCoord)) return null;\n            return m_voxelContentCells[cellCoord.X][cellCoord.Y][cellCoord.Z];\n        }\n\n        //  Get cell. If not found (cell is full), null is returned.\n        //  IMPORTANT: This method doesn't check if input cell coord0 is inside of the voxel map.\n        //  IMPORTANT: This method has overloaded version that is sometimes needed too.\n        public MyVoxelContentCell GetCell(ref MyMwcVector3Int cellCoord)\n        {\n            if (!CheckVoxelCoord(ref cellCoord)) return null;\n            return m_voxelContentCells[cellCoord.X][cellCoord.Y][cellCoord.Z];\n        }\n\n        private bool CheckVoxelCoord(MyMwcVector3Int cellCoord)\n        {\n            if (cellCoord.X >= 0 && cellCoord.Y >= 0 && cellCoord.Z >= 0)\n            {\n                if (cellCoord.X < m_voxelContentCells.Length &&\n                    cellCoord.Y < m_voxelContentCells[cellCoord.X].Length &&\n                    cellCoord.Z < m_voxelContentCells[cellCoord.X][cellCoord.Y].Length)\n                {\n                    return true;\n                }\n            }\n            return false;\n        }\n\n        private bool CheckVoxelCoord(ref MyMwcVector3Int cellCoord)\n        {\n            if (cellCoord.X >= 0 && cellCoord.Y >= 0 && cellCoord.Z >= 0)\n            {\n                if (cellCoord.X < m_voxelContentCells.Length &&\n                    cellCoord.Y < m_voxelContentCells[cellCoord.X].Length &&\n                    cellCoord.Z < m_voxelContentCells[cellCoord.X][cellCoord.Y].Length)\n                {\n                    return true;\n                }\n            }\n            return false;\n        }\n\n        //  Allocates cell from a buffer, store reference to dictionary and return reference to the cell\n        //  Use it when changing cell type from full to empty or mixed.\n        public MyVoxelContentCell AddCell(ref MyMwcVector3Int cellCoord)\n        {\n            //  Adding or creating cell can be made only once\n            Debug.Assert(m_voxelContentCells[cellCoord.X][cellCoord.Y][cellCoord.Z] == null);\n\n            MyVoxelContentCell ret = new MyVoxelContentCell();\n            m_voxelContentCells[cellCoord.X][cellCoord.Y][cellCoord.Z] = ret;\n\n            return ret;\n        }\n\n        public MyVoxelContentCell[][][] GetVoxelContentCells()\n        {\n            return m_voxelContentCells;\n        }\n\n        public MyVoxelMaterialCell[][][] GetVoxelMaterialCells()\n        {\n            return m_voxelMaterialCells;\n        }\n\n        //  Checks if cell didn't change to FULL and if is, we set it to null\n        public void CheckIfCellChangedToFull(MyVoxelContentCell voxelCell, ref MyMwcVector3Int cellCoord)\n        {\n            if (voxelCell.CellType == MyVoxelCellType.FULL)\n            {\n                m_voxelContentCells[cellCoord.X][cellCoord.Y][cellCoord.Z] = null;\n            }\n        }\n\n        //  Return true if data cell specified by 'cellPosition' and its neighborhood cells/voxels are completely full or completely empty.\n        //  If some are empty and other are full, that's taken as not completely full or empty. All cells must have same type and that can't be mixed.\n        //  It's used to know if cell may have triangles. So if completely full/empty, it can't have triangles.        \n        //  We care only about cells on right/bottom side of specified cell (because during precalc it get its voxels).\n        public bool IsDataCellCompletelyFullOrCompletelyEmpty(ref MyMwcVector3Int cellCoord)\n        {\n            MyMwcVector3Int cellCoordMax = new MyMwcVector3Int(cellCoord.X + 1, cellCoord.Y + 1, cellCoord.Z + 1);\n\n            //  Fix max cell coordinates so they don't fall from voxelmap\n            FixDataCellCoord(ref cellCoordMax);\n\n            bool foundFull = false;\n            bool foundEmpty = false;\n\n            MyMwcVector3Int tempCellCoord;\n            for (tempCellCoord.X = cellCoord.X; tempCellCoord.X <= cellCoordMax.X; tempCellCoord.X++)\n            {\n                for (tempCellCoord.Y = cellCoord.Y; tempCellCoord.Y <= cellCoordMax.Y; tempCellCoord.Y++)\n                {\n                    for (tempCellCoord.Z = cellCoord.Z; tempCellCoord.Z <= cellCoordMax.Z; tempCellCoord.Z++)\n                    {\n                        //  Cell may be FULL because it's still null, or if allocated, may have cell type equal to FULL\n                        MyVoxelContentCell voxelCell = GetCell(ref tempCellCoord);\n\n                        if (voxelCell == null)\n                        {\n                            foundFull = true;\n                        }\n                        else if (voxelCell.CellType == MyVoxelCellType.MIXED)\n                        {\n                            return false;\n                        }\n                        else if (voxelCell.CellType == MyVoxelCellType.FULL)\n                        {\n                            foundFull = true;\n                        }\n                        else if (voxelCell.CellType == MyVoxelCellType.EMPTY)\n                        {\n                            foundEmpty = true;\n                        }\n\n                        if ((foundFull == true) && (foundEmpty == true))\n                        {\n                            if (MyFakes.MWCURIOSITY)\n                            {\n                                return true;\n                            }\n                            return false;\n                        }\n                    }\n                }\n            }\n\n            //  If we get here, all cells are full\n            return true;\n        }\n\n        //  Calculates average material per data cell so it can be used for drawing LOD\n        public void CalcAverageDataCellMaterials()\n        {\n            MyPerformanceTimer.CalcAverageDataCellMaterials.Start();\n\n            MyMwcVector3Int cellCoord;\n            for (cellCoord.X = 0; cellCoord.X < DataCellsCount.X; cellCoord.X++)\n            {\n                for (cellCoord.Y = 0; cellCoord.Y < DataCellsCount.Y; cellCoord.Y++)\n                {\n                    for (cellCoord.Z = 0; cellCoord.Z < DataCellsCount.Z; cellCoord.Z++)\n                    {\n                        m_voxelMaterialCells[cellCoord.X][cellCoord.Y][cellCoord.Z].CalcAverageCellMaterial();\n                    }\n                }\n            }\n\n            MyPerformanceTimer.CalcAverageDataCellMaterials.End();\n        }\n\n        //  Iterate over all data cells and checks if \"average data cell content\" value is calculated properly (because it might have been incorectly calculated during voxel map loading)\n        //  If doesn't match, exception is thrown. It is good to call this method for every loaded voxel map. At least during debuging.\n        public void CheckAverageDataCellContent()\n        {\n            MyMwcVector3Int dataCellCoord;\n            for (dataCellCoord.X = 0; dataCellCoord.X < DataCellsCount.X; dataCellCoord.X++)\n            {\n                for (dataCellCoord.Y = 0; dataCellCoord.Y < DataCellsCount.Y; dataCellCoord.Y++)\n                {\n                    for (dataCellCoord.Z = 0; dataCellCoord.Z < DataCellsCount.Z; dataCellCoord.Z++)\n                    {\n                        byte average = GetDataCellAverageContent(ref dataCellCoord);\n\n                        int calculated = 0;\n\n                        MyMwcVector3Int tempVoxelCoord;\n                        for (tempVoxelCoord.X = 0; tempVoxelCoord.X < MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS; tempVoxelCoord.X++)\n                        {\n                            for (tempVoxelCoord.Y = 0; tempVoxelCoord.Y < MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS; tempVoxelCoord.Y++)\n                            {\n                                for (tempVoxelCoord.Z = 0; tempVoxelCoord.Z < MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS; tempVoxelCoord.Z++)\n                                {\n                                    MyMwcVector3Int voxelCoord = new MyMwcVector3Int(\n                                        dataCellCoord.X * MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS + tempVoxelCoord.X,\n                                        dataCellCoord.Y * MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS + tempVoxelCoord.Y,\n                                        dataCellCoord.Z * MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS + tempVoxelCoord.Z);\n\n                                    calculated += GetVoxelContent(ref voxelCoord);\n                                }\n                            }\n                        }\n\n                        byte voxelContent = (byte)(calculated / MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS_TOTAL);\n                        if (voxelContent != average)\n                        {\n                            throw new Exception(\"Average data cell content in cell [\" + dataCellCoord.X + \", \" + dataCellCoord.Y + \", \" + dataCellCoord.Z + \"] doesn't match!!!\");\n                        }\n                    }\n                }\n            }\n        }\n\n        //  This is just for writing debugging information\n        public void WriteDebugInfo()\n        {\n            if (!MyMwcLog.LogFlag(LoggingOptions.VOXEL_MAPS))\n            {\n                return;\n            }\n\n            MyMwcLog.WriteLine(\"MyVoxelMap.WriteDebugInfo - Start\", LoggingOptions.VOXEL_MAPS);\n            MyMwcLog.IncreaseIndent(LoggingOptions.VOXEL_MAPS);\n\n            MyMwcLog.WriteLine(\"ID: \" + VoxelMapId, LoggingOptions.VOXEL_MAPS);\n            MyMwcLog.WriteLine(\"Size: \" + MyUtils.GetFormatedVector3Int(Size), LoggingOptions.VOXEL_MAPS);\n\n            int fullCellsCount = 0;\n            int emptyCellsCount = 0;\n            int mixedCellsCount = 0;\n            MyMwcVector3Int dataCellCoord;\n            for (dataCellCoord.X = 0; dataCellCoord.X < DataCellsCount.X; dataCellCoord.X++)\n            {\n                for (dataCellCoord.Y = 0; dataCellCoord.Y < DataCellsCount.Y; dataCellCoord.Y++)\n                {\n                    for (dataCellCoord.Z = 0; dataCellCoord.Z < DataCellsCount.Z; dataCellCoord.Z++)\n                    {\n                        MyVoxelContentCell voxelCell = GetCell(ref dataCellCoord);\n\n                        if (voxelCell == null)\n                        {\n                            fullCellsCount++;\n                        }\n                        else if (voxelCell.CellType == MyVoxelCellType.EMPTY)\n                        {\n                            emptyCellsCount++;\n                        }\n                        else if (voxelCell.CellType == MyVoxelCellType.MIXED)\n                        {\n                            mixedCellsCount++;\n                        }\n                        else\n                        {\n                            throw new MyMwcExceptionApplicationShouldNotGetHere();\n                        }\n                    }\n                }\n            }\n            MyMwcLog.WriteLine(\"FullCellsCount: \" + MyValueFormatter.GetFormatedInt(fullCellsCount), LoggingOptions.VOXEL_MAPS);\n            MyMwcLog.WriteLine(\"EmptyCellsCount: \" + MyValueFormatter.GetFormatedInt(emptyCellsCount), LoggingOptions.VOXEL_MAPS);\n            MyMwcLog.WriteLine(\"MixedCellsCount: \" + MyValueFormatter.GetFormatedInt(mixedCellsCount), LoggingOptions.VOXEL_MAPS);\n\n            MyMwcLog.DecreaseIndent(LoggingOptions.VOXEL_MAPS);\n            MyMwcLog.WriteLine(\"MyVoxelMap.WriteDebugInfo - End\", LoggingOptions.VOXEL_MAPS);\n        }\n\n        //  If material is indestructible, then indestructible content value must be FULL, because that means that is the smallest \n        //  possible voxel content for that voxel\n        //  This method is used when initializing voxel map so if material is indestructible, we set whole cell to FULL\n        byte GetIndestructibleContentByMaterial(MyMwcVoxelMaterialsEnum material)\n        {\n            if (MyVoxelMaterials.Get(material).IsIndestructible)\n            {\n                return MyVoxelConstants.VOXEL_CONTENT_FULL;\n            }\n            else\n            {\n                return MyVoxelConstants.VOXEL_CONTENT_EMPTY;\n            }\n        }\n\n        //  This method is used when merging individual voxels from voxel map file, so if material is indestructible, we need \n        //  to look on voxel value at that place\n        byte GetIndestructibleContentsByMaterialAndContent(MyMwcVoxelMaterialsEnum material, byte content)\n        {\n            if (MyVoxelMaterials.Get(material).IsIndestructible)\n            {\n                return content;\n            }\n            else\n            {\n                return MyVoxelConstants.VOXEL_CONTENT_EMPTY;\n            }\n        }\n\n        public static bool IsNewAllowed(MyMwcVoxelFilesEnum voxelFileEnum)\n        {\n            int totalDataCells = MyVoxelMaps.GetTotalDataCellsCount();\n            return IsNewAllowed(voxelFileEnum, ref totalDataCells);\n        }\n\n        public static bool IsNewAllowed(MyMwcVoxelFilesEnum voxelFileEnum, ref int totalDataCells)\n        {\n            bool allowed = false;\n\n            MyVoxelFile voxelFile = MyVoxelFiles.Get(voxelFileEnum);\n            MyCompressionFileLoad decompressFile = new MyCompressionFileLoad(voxelFile.GetVoxFilePath());\n\n            int fileVersion = decompressFile.GetInt32();\n\n            //  Size of this voxel map (in voxels)\n            int sizeX = decompressFile.GetInt32();\n            int sizeY = decompressFile.GetInt32();\n            int sizeZ = decompressFile.GetInt32();\n\n            int dataCellCountX = sizeX >> MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS_BITS;\n            int dataCellCountY = sizeY >> MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS_BITS;\n            int dataCellCountZ = sizeZ >> MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS_BITS;\n\n            int newVoxelCellCount = dataCellCountX * dataCellCountY * dataCellCountZ;\n\n            totalDataCells = newVoxelCellCount + totalDataCells;\n            if (totalDataCells < MyVoxelConstants.MAX_VOXEL_MAPS_DATA_CELL_COUNT)\n            {\n                allowed = true;\n            }\n\n            return allowed;\n        }\n\n        public static Vector3 GetVoxelSizeInMetres(ref MyMwcVector3Int sizeInVoxels)\n        {\n            return new Vector3(sizeInVoxels.X * MyVoxelConstants.VOXEL_SIZE_IN_METRES, sizeInVoxels.Y * MyVoxelConstants.VOXEL_SIZE_IN_METRES, sizeInVoxels.Z * MyVoxelConstants.VOXEL_SIZE_IN_METRES);\n        }\n\n        public static Vector3 GetVoxelSizeInMetres(ref MyMwcVector3Short sizeInVoxels)\n        {\n            return new Vector3(sizeInVoxels.X * MyVoxelConstants.VOXEL_SIZE_IN_METRES, sizeInVoxels.Y * MyVoxelConstants.VOXEL_SIZE_IN_METRES, sizeInVoxels.Z * MyVoxelConstants.VOXEL_SIZE_IN_METRES);\n        }\n\n        public static void GetAsteroidsBySizeInMeters(int size, List<MyMwcVoxelFilesEnum> asteroids, bool treatNonuniformAsBigger)\n        {\n            switch (size)\n            {\n                case (int)(512 * MyVoxelConstants.VOXEL_SIZE_IN_METRES):\n                    asteroids.Add(MyMwcVoxelFilesEnum.PerfectSphereSplitted_512x512x512);\n                    asteroids.Add(MyMwcVoxelFilesEnum.PerfectSphereWithFewTunnels_512x512x512);\n                    asteroids.Add(MyMwcVoxelFilesEnum.PerfectSphereWithMassiveTunnels_512x512x512);\n                    asteroids.Add(MyMwcVoxelFilesEnum.PerfectSphereWithMassiveTunnels2_512x512x512);\n                    asteroids.Add(MyMwcVoxelFilesEnum.PerfectSphereWithRaceTunnel_512x512x512);\n                    asteroids.Add(MyMwcVoxelFilesEnum.PerfectSphereWithRaceTunnel2_512x512x512);\n                    break;\n\n                case (int)(256 * MyVoxelConstants.VOXEL_SIZE_IN_METRES):\n                    asteroids.Add(MyMwcVoxelFilesEnum.DeformedSphereWithCorridor_256x256x256);\n                    if (treatNonuniformAsBigger)\n                    {\n                        asteroids.Add(MyMwcVoxelFilesEnum.TorusStorySector_256x128x256);\n                        asteroids.Add(MyMwcVoxelFilesEnum.TorusWithManyTunnels_2_256x128x256);\n                        asteroids.Add(MyMwcVoxelFilesEnum.TorusWithManyTunnels_256x128x256);\n                        asteroids.Add(MyMwcVoxelFilesEnum.TorusWithSmallTunnel_256x128x256);\n                        asteroids.Add(MyMwcVoxelFilesEnum.VerticalIsland_128x256x128);\n                        asteroids.Add(MyMwcVoxelFilesEnum.VerticalIslandStorySector_128x256x128);\n                    }\n                    break;\n\n                case (int)(128 * MyVoxelConstants.VOXEL_SIZE_IN_METRES):\n                    asteroids.Add(MyMwcVoxelFilesEnum.DeformedSphereWithCraters_128x128x128);\n                    asteroids.Add(MyMwcVoxelFilesEnum.ScratchedBoulder_128x128x128);\n                    asteroids.Add(MyMwcVoxelFilesEnum.SphereWithLargeCutOut_128x128x128);\n                    asteroids.Add(MyMwcVoxelFilesEnum.VerticalIsland_128x128x128);\n                    if (treatNonuniformAsBigger)\n                    {\n                        asteroids.Add(MyMwcVoxelFilesEnum.DeformedSphereWithCorridor_128x64x64);\n                        asteroids.Add(MyMwcVoxelFilesEnum.DeformedSphereWithHoles_64x128x64);\n                    }\n                    else\n                    {\n                        asteroids.Add(MyMwcVoxelFilesEnum.TorusStorySector_256x128x256);\n                        asteroids.Add(MyMwcVoxelFilesEnum.TorusWithManyTunnels_2_256x128x256);\n                        asteroids.Add(MyMwcVoxelFilesEnum.TorusWithManyTunnels_256x128x256);\n                        asteroids.Add(MyMwcVoxelFilesEnum.TorusWithSmallTunnel_256x128x256);\n                        asteroids.Add(MyMwcVoxelFilesEnum.VerticalIsland_128x256x128);\n                        asteroids.Add(MyMwcVoxelFilesEnum.VerticalIslandStorySector_128x256x128);\n                    }\n                    break;\n\n                case (int)(64 * MyVoxelConstants.VOXEL_SIZE_IN_METRES):\n                    if (!treatNonuniformAsBigger)\n                    {\n                        asteroids.Add(MyMwcVoxelFilesEnum.DeformedSphereWithCorridor_128x64x64);\n                        asteroids.Add(MyMwcVoxelFilesEnum.DeformedSphereWithHoles_64x128x64);\n                    }\n                    asteroids.Add(MyMwcVoxelFilesEnum.DeformedSphere1_64x64x64);\n                    asteroids.Add(MyMwcVoxelFilesEnum.DeformedSphere2_64x64x64);\n                    break;\n            }\n        }\n\n        protected override MyMwcObjectBuilder_Base GetObjectBuilderInternal(bool getExactCopy)\n        {\n            MyMwcObjectBuilder_VoxelMap voxelMapBuilder = base.GetObjectBuilderInternal(getExactCopy) as MyMwcObjectBuilder_VoxelMap;\n            if (voxelMapBuilder == null)\n            {\n                voxelMapBuilder = new MinerWars.CommonLIB.AppCode.ObjectBuilders.Voxels.MyMwcObjectBuilder_VoxelMap(this.GetPosition(), MyMwcVoxelFilesEnum.Cube_512x512x512, MyMwcVoxelMaterialsEnum.Stone_01);\n            }\n            voxelMapBuilder.PositionAndOrientation.Position = PositionLeftBottomCorner;\n            voxelMapBuilder.VoxelMaterial = VoxelMaterial;\n            if (GetVoxelHandShapes().Count > 0)\n            {\n                if (!MyFakes.MWBUILDER)\n                {\n                    voxelMapBuilder.VoxelHandShapes = new List<MyMwcObjectBuilder_VoxelHand_Shape>();\n                    foreach (MyVoxelHandShape voxelHandShape in GetVoxelHandShapes())\n                    {\n\n                        voxelMapBuilder.VoxelHandShapes.Add((MyMwcObjectBuilder_VoxelHand_Shape)voxelHandShape.GetObjectBuilder(getExactCopy));\n                    }\n                }\n            }\n\n            if (MyFakes.MWBUILDER)\n            {\n                SaveVoxelContents(out voxelMapBuilder.VoxelData, true);\n            }\n\n            return voxelMapBuilder;\n        }\n\n        //  This method must be called when this object dies or is removed\n        //  E.g. it removes lights, sounds, etc\n        public override void Close()\n        {\n            base.Close();\n\n            //  Delete this voxel map from data cell cache\n            MyMwcVector3Int dataCellCoord;\n            for (dataCellCoord.X = 0; dataCellCoord.X < DataCellsCount.X; dataCellCoord.X++)\n            {\n                for (dataCellCoord.Y = 0; dataCellCoord.Y < DataCellsCount.Y; dataCellCoord.Y++)\n                {\n                    for (dataCellCoord.Z = 0; dataCellCoord.Z < DataCellsCount.Z; dataCellCoord.Z++)\n                    {\n                        MyVoxelCacheData.RemoveCell(VoxelMapId, ref dataCellCoord);\n                        MyVoxelContentCell voxelCell = GetCell(ref dataCellCoord);\n                        if (voxelCell != null) voxelCell.Deallocate();\n                    }\n                }\n            }\n\n            //  Delete this voxel map from render cell cache\n            MyMwcVector3Int renderCellCoord;\n            for (renderCellCoord.X = 0; renderCellCoord.X < RenderCellsCount.X; renderCellCoord.X++)\n            {\n                for (renderCellCoord.Y = 0; renderCellCoord.Y < RenderCellsCount.Y; renderCellCoord.Y++)\n                {\n                    for (renderCellCoord.Z = 0; renderCellCoord.Z < RenderCellsCount.Z; renderCellCoord.Z++)\n                    {\n                        MyVoxelCacheRender.RemoveCell(VoxelMapId, ref renderCellCoord, MyLodTypeEnum.LOD1);\n                        MyVoxelCacheRender.RemoveCell(VoxelMapId, ref renderCellCoord, MyLodTypeEnum.LOD0);\n                    }\n                }\n            }\n\n            if (MyFakes.ENABLE_DISPLAYING_ORE_ON_HUD && m_oreDepositCells != null)\n            {\n                /*\n                MyMwcVector3Int oreDepositCellCoord;\n                for (oreDepositCellCoord.X = 0; oreDepositCellCoord.X < m_oreDepositCells.GetLength(0); oreDepositCellCoord.X++)\n                {\n                    for (oreDepositCellCoord.Y = 0; oreDepositCellCoord.Y < m_oreDepositCells.GetLength(1); oreDepositCellCoord.Y++)\n                    {\n                        for (oreDepositCellCoord.Z = 0; oreDepositCellCoord.Z < m_oreDepositCells.GetLength(2); oreDepositCellCoord.Z++)\n                        {\n                            if (m_oreDepositCells[oreDepositCellCoord.X, oreDepositCellCoord.Y, oreDepositCellCoord.Z] != null)\n                            {\n                                RemoveOreDepositCell(ref oreDepositCellCoord, false);\n                            }\n                        }\n                    }\n                } */\n\n                foreach (var ore in m_oreDepositCells)\n                {\n                    RemoveOreDepositCell(ore.Value, false);\n                }\n                m_oreDepositCells.Clear();\n                \n                using (OreDepositsLock.AcquireExclusiveUsing())\n                {\n                    OreDepositCellsContainsOre.Clear();\n                }\n            }\n\n            lock (m_octreeOverlapElementListCollection)\n            {\n                foreach (var item in m_octreeOverlapElementListCollection)\n                {\n                    item.Clear();\n                }\n            }\n            lock (m_sweepResultCollection)\n            {\n                foreach (var item in m_sweepResultCollection)\n                {\n                    item.Clear();\n                }\n            }\n\n\n            MyVoxelMaps.RemoveVoxelMap(this);\n\n            m_isClosed = true;\n        }\n\n        /// <summary>\n        /// Applies voxel hand shape to this voxel map\n        /// </summary>\n        /// <param name=\"voxelHandShape\"></param>\n        public void AddVoxelHandShape(MyVoxelHandShape voxelHandShape, bool playSounds)\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"AddVoxelHandShape\");\n\n            if (MyVoxelMaps.GetVoxelShapesCount() + 1 <= MyVoxelConstants.MAX_VOXEL_HAND_SHAPES_COUNT)\n            {\n                bool changed = false;\n                MyMwcVoxelHandModeTypeEnum voxelHandModeType = voxelHandShape.ModeType;\n                // sphere\n                if (voxelHandShape is MyVoxelHandSphere)\n                {\n                    MyVoxelHandShape voxelHandSphere = (MyVoxelHandShape)voxelHandShape;\n                    BoundingSphere bSphere = voxelHandSphere.WorldVolume;\n\n                    if (voxelHandModeType == MyMwcVoxelHandModeTypeEnum.SUBTRACT)\n                    {\n                        MyVoxelGenerator.CutOutSphereInvalidateCache(this, bSphere, ref changed);\n                        if (playSounds)\n                            MyAudio.AddCue2D(MySoundCuesEnum.GuiEditorVoxelHandRemove);\n                    }\n                    else if (voxelHandModeType == MyMwcVoxelHandModeTypeEnum.ADD)\n                    {\n                        MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"CreateSphereInvalidateCache\");\n                        MyVoxelGenerator.CreateSphereInvalidateCache(this, bSphere, ref changed, voxelHandShape.Material);\n                        MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"MyAudio.AddCue2D\");\n                        if (playSounds)\n                            MyAudio.AddCue2D(MySoundCuesEnum.GuiEditorVoxelHandAdd);\n                        MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n                    }\n                    else if (voxelHandModeType == MyMwcVoxelHandModeTypeEnum.SET_MATERIAL)\n                    {\n                        SetVoxelMaterialInvalidateCache(voxelHandShape.Material.Value, bSphere, ref changed);\n                        if (playSounds)\n                            MyAudio.AddCue2D(MySoundCuesEnum.GuiEditorVoxelHandMaterial);\n                    }\n                    else if (voxelHandModeType == MyMwcVoxelHandModeTypeEnum.SOFTEN)\n                    {\n                        SoftenVoxelContentInSphereInvalidateCache(bSphere, MyVoxelConstants.DEFAULT_SOFTEN_WEIGHT, ref changed);\n                        if (playSounds)\n                            MyAudio.AddCue2D(MySoundCuesEnum.GuiEditorVoxelHandSoften);\n                    }\n                    else if (voxelHandModeType == MyMwcVoxelHandModeTypeEnum.WRINKLE)\n                    {\n                        WrinkleVoxelContentInSphereInvalidateCache(bSphere, MyVoxelConstants.DEFAULT_WRINKLE_WEIGHT_ADD, MyVoxelConstants.DEFAULT_WRINKLE_WEIGHT_REMOVE, ref changed);\n                        if (playSounds)\n                            MyAudio.AddCue2D(MySoundCuesEnum.GuiEditorVoxelHandSoften);\n                    }\n                }\n                // box\n                else if (voxelHandShape is MyVoxelHandBox)\n                {\n                    MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"VoxelHand MyVoxelHandBox\");\n\n                    MyVoxelHandBox voxelHandBox = (MyVoxelHandBox)voxelHandShape;\n                    //BoundingBox bBox = voxelHandBox.GetLocalBoundingBox();\n                    //Matrix world = Matrix.CreateWorld(voxelHandBox.GetPosition(), this.WorldMatrix.Forward, this.WorldMatrix.Up);\n                    Matrix world = voxelHandBox.WorldMatrix;\n                    //bBox = bBox.Transform(world);\n\n                    //MyModel model = MyModels.GetModelForDraw(MyModelsEnum.ExplosionDebrisVoxel);\n                    //MyModel model = MyMinerGameDX.Static.Content.Load<MyModel>(\"Box\");\n                    List<Vector3> vertexes = new List<Vector3>();\n                    List<MyTriangleVertexIndices> triangles = new List<MyTriangleVertexIndices>();\n                    MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"GenerateBoxVerticesAndTriangles\");\n                    GenerateBoxVerticesAndTriangles(ref vertexes, ref triangles, voxelHandBox.Size, voxelHandBox.Size);\n                    MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n                    if (voxelHandModeType == MyMwcVoxelHandModeTypeEnum.SUBTRACT)\n                    {\n                        //MyVoxelGenerator.CutOutBoxInvalidateCache(this, bBox, ref originalContents);\n                        //MyVoxelImport.Run(this, vertexes.ToArray(), triangles.ToArray(), MyvoxelImportAction.RemoveVoxels, world, voxelHandShape.Material, ref changed);\n\n                        MyOrientedBoundingBox box = MyOrientedBoundingBox.Create(voxelHandBox.GetLocalBoundingBox(), voxelHandBox.WorldMatrix);\n                        MyVoxelGenerator.CutOutOrientedBox(this, box, ref changed);\n                        if (playSounds)\n                            MyAudio.AddCue2D(MySoundCuesEnum.GuiEditorVoxelHandRemove);\n                    }\n                    else if (voxelHandModeType == MyMwcVoxelHandModeTypeEnum.ADD)\n                    {\n                        MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyMwcVoxelHandModeTypeEnum.ADD\");\n                        \n                        //MyVoxelImport.Run(this, vertexes.ToArray(), triangles.ToArray(), MyvoxelImportAction.AddVoxels, world, voxelHandShape.Material, ref changed);\n                        \n                        MyOrientedBoundingBox box = MyOrientedBoundingBox.Create(voxelHandBox.GetLocalBoundingBox(), voxelHandBox.WorldMatrix);\n                        MyVoxelGenerator.CreateOrientedBox(this, box, voxelHandShape.Material);\n                        changed = true;\n                          \n                        MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n                        //MyVoxelGenerator.CreateBoxInvalidateCache(this, bBox, ref originalContents);\n                        //if (voxelHandShape.Material != null)\n                        //{\n                        //    SetVoxelMaterialInvalidateCache(voxelHandShape.Material.Value, bBox, ref originalContents);\n                        //}\n                        if (playSounds)\n                            MyAudio.AddCue2D(MySoundCuesEnum.GuiEditorVoxelHandAdd);\n                    }\n                    else if (voxelHandModeType == MyMwcVoxelHandModeTypeEnum.SET_MATERIAL)\n                    {\n                        //SetVoxelMaterialInvalidateCache(voxelHandShape.Material.Value, bBox, ref originalContents);\n                        MyVoxelImport.Run(this, vertexes.ToArray(), triangles.ToArray(), MyvoxelImportAction.ChangeMaterial, world, voxelHandShape.Material, ref changed);\n                        if (playSounds)\n                            MyAudio.AddCue2D(MySoundCuesEnum.GuiEditorVoxelHandMaterial);\n                    }\n                    else if (voxelHandModeType == MyMwcVoxelHandModeTypeEnum.SOFTEN)\n                    {\n                        //SoftenVoxelContentInBoxInvalidateCache(bBox, MyVoxelConstants.DEFAULT_SOFTEN_WEIGHT, ref originalContents);\n                        MyVoxelImport.Run(this, vertexes.ToArray(), triangles.ToArray(), MyvoxelImportAction.SoftenVoxels, world, voxelHandShape.Material, ref changed);\n                        if (playSounds)\n                            MyAudio.AddCue2D(MySoundCuesEnum.GuiEditorVoxelHandSoften);\n                    }\n                    else if (voxelHandModeType == MyMwcVoxelHandModeTypeEnum.WRINKLE)\n                    {\n                        //SoftenVoxelContentInBoxInvalidateCache(bBox, MyVoxelConstants.DEFAULT_WRINKLE_WEIGHT, ref originalContents);\n                        MyVoxelImport.Run(this, vertexes.ToArray(), triangles.ToArray(), MyvoxelImportAction.WrinkleVoxels, world, voxelHandShape.Material, ref changed);\n                        if (playSounds)\n                            MyAudio.AddCue2D(MySoundCuesEnum.GuiEditorVoxelHandSoften);\n                    }\n\n                    MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n                }\n                // cuboid\n                else if (voxelHandShape is MyVoxelHandCuboid)\n                {\n                    MyVoxelHandCuboid voxelHandCuboid = (MyVoxelHandCuboid)voxelHandShape;\n                    Matrix world = voxelHandCuboid.WorldMatrix;\n                  \n                    if (voxelHandModeType == MyMwcVoxelHandModeTypeEnum.SUBTRACT)\n                    {\n                        MyVoxelGenerator.CutOutCuboid(this, voxelHandCuboid.Cuboid.CreateTransformed(ref world), voxelHandShape.Material);\n                        if (playSounds)\n                            MyAudio.AddCue2D(MySoundCuesEnum.GuiEditorVoxelHandRemove);\n                    }\n                    else if (voxelHandModeType == MyMwcVoxelHandModeTypeEnum.ADD)\n                    {\n                        MyVoxelGenerator.CreateCuboid(this, voxelHandCuboid.Cuboid.CreateTransformed(ref world), voxelHandShape.Material);\n                        if (playSounds)\n                            MyAudio.AddCue2D(MySoundCuesEnum.GuiEditorVoxelHandAdd);\n                    }\n                    else if (voxelHandModeType == MyMwcVoxelHandModeTypeEnum.SET_MATERIAL)\n                    {\n                       // MyVoxelImport.Run(this, vertexes.ToArray(), triangles.ToArray(), MyvoxelImportAction.ChangeMaterial, world, voxelHandShape.Material, ref changed);\n                        //SetVoxelMaterialInvalidateCache(voxelHandShape.Material.Value, bBox, ref originalContents);\n                        if (playSounds)\n                            MyAudio.AddCue2D(MySoundCuesEnum.GuiEditorVoxelHandMaterial);\n                    }\n                    else if (voxelHandModeType == MyMwcVoxelHandModeTypeEnum.SOFTEN)\n                    {\n                        //MyVoxelImport.Run(this, vertexes.ToArray(), triangles.ToArray(), MyvoxelImportAction.SoftenVoxels, world, voxelHandShape.Material, ref changed);\n                        //SoftenVoxelContentInBoxInvalidateCache(bBox, MyVoxelConstants.DEFAULT_SOFTEN_WEIGHT, ref originalContents);\n                        if (playSounds)\n                            MyAudio.AddCue2D(MySoundCuesEnum.GuiEditorVoxelHandSoften);\n                    }\n                    else if (voxelHandModeType == MyMwcVoxelHandModeTypeEnum.WRINKLE)\n                    {\n                        //MyVoxelImport.Run(this, vertexes.ToArray(), triangles.ToArray(), MyvoxelImportAction.WrinkleVoxels, world, voxelHandShape.Material, ref changed);\n                        //SoftenVoxelContentInBoxInvalidateCache(bBox, MyVoxelConstants.DEFAULT_WRINKLE_WEIGHT, ref originalContents);\n                        if (playSounds)\n                            MyAudio.AddCue2D(MySoundCuesEnum.GuiEditorVoxelHandSoften);\n                    }\n                }\n                else if (voxelHandShape is MyVoxelHandCylinder)\n                {\n                    MyVoxelHandCylinder voxelHandCylinder = (MyVoxelHandCylinder)voxelHandShape;\n\n                    MyOrientedBoundingBox box = MyOrientedBoundingBox.Create(voxelHandCylinder.GetLocalBoundingBox(), voxelHandCylinder.WorldMatrix);\n\n                    if (voxelHandModeType == MyMwcVoxelHandModeTypeEnum.SUBTRACT)\n                    {\n                        MyVoxelGenerator.CutOutCylinder(this, voxelHandCylinder.Radius1, voxelHandCylinder.Radius2, box, voxelHandShape.Material, ref changed);\n                        if (playSounds)\n                            MyAudio.AddCue2D(MySoundCuesEnum.GuiEditorVoxelHandRemove);\n                    }\n                    else if (voxelHandModeType == MyMwcVoxelHandModeTypeEnum.ADD)\n                    {\n                        MyVoxelGenerator.CreateCylinder(this, voxelHandCylinder.Radius1, voxelHandCylinder.Radius2, box, voxelHandShape.Material, ref changed);\n                        if (playSounds)\n                            MyAudio.AddCue2D(MySoundCuesEnum.GuiEditorVoxelHandAdd);\n                    }\n                }\n                else\n                    System.Diagnostics.Debug.Assert(false);\n\n                // adds only if there are any changes\n                if (changed == true)\n                {\n                    this.AddChild(voxelHandShape, true);\n\n                    m_voxelHandShapes.Add(voxelHandShape);\n                    if (OnVoxelHandShapeCountChange != null)\n                    {\n                        OnVoxelHandShapeCountChange(1);\n                    }\n\n                    CalcAverageDataCellMaterials();\n                }\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        private static void GenerateBoxVerticesAndTriangles(ref List<Vector3> vertexes, ref List<MyTriangleVertexIndices> triangles, float size, float length)\n        {\n            if (vertexes == null)\n            {\n                vertexes = new List<Vector3>();\n            }\n            if (triangles == null)\n            {\n                triangles = new List<MyTriangleVertexIndices>();\n            }\n\n            float x = length / 2f;\n            float y = size / 2f;\n            float z = size / 2f;\n\n            // left side vertexes \n            vertexes.Add(new Vector3(-x, y, z));\n            vertexes.Add(new Vector3(-x, y, -z));\n            vertexes.Add(new Vector3(-x, -y, -z));\n            vertexes.Add(new Vector3(-x, -y, z));\n\n            // right side vertexes            \n            vertexes.Add(new Vector3(x, y, z));\n            vertexes.Add(new Vector3(x, y, -z));\n            vertexes.Add(new Vector3(x, -y, -z));\n            vertexes.Add(new Vector3(x, -y, z));\n\n            // left triangles\n            triangles.Add(new MyTriangleVertexIndices(0, 1, 2));\n            triangles.Add(new MyTriangleVertexIndices(0, 2, 3));\n\n            // right triangles\n            triangles.Add(new MyTriangleVertexIndices(4, 5, 6));\n            triangles.Add(new MyTriangleVertexIndices(4, 6, 7));\n\n            // front triangles\n            triangles.Add(new MyTriangleVertexIndices(0, 4, 7));\n            triangles.Add(new MyTriangleVertexIndices(0, 7, 3));\n\n            // back triangles\n            triangles.Add(new MyTriangleVertexIndices(1, 5, 6));\n            triangles.Add(new MyTriangleVertexIndices(1, 6, 2));\n\n            // top triangles\n            triangles.Add(new MyTriangleVertexIndices(3, 7, 6));\n            triangles.Add(new MyTriangleVertexIndices(3, 6, 2));\n\n            // bottom triangles\n            triangles.Add(new MyTriangleVertexIndices(0, 4, 5));\n            triangles.Add(new MyTriangleVertexIndices(0, 5, 1));\n        }\n\n        /// <summary>\n        /// Invalidates voxel cache\n        /// </summary>\n        /// <param name=\"minChanged\"></param>\n        /// <param name=\"maxChanged\"></param>\n        public void InvalidateCache(MyMwcVector3Int minChanged, MyMwcVector3Int maxChanged)\n        {\n            MyVoxelCacheData.RemoveCellForVoxels(this, minChanged, maxChanged);\n            MyVoxelCacheRender.RemoveCellForVoxels(this, minChanged, maxChanged);\n\n            //Cannot be here because of peaks\n            //InvalidateRenderObjects(true);\n        }\n\n        public List<MyVoxelHandShape> GetVoxelHandShapes()\n        {\n            return m_voxelHandShapes;\n        }\n\n        // moved to MyVoxelMaps, because max shapes count is now for all voxel maps\n        // This method returns count of remaining voxel hand shapes, that can be applied to to this voxel map\n        //public int GetRemainingVoxelHandShapes()\n        //{\n        //    return MyVoxelConstants.MAX_VOXEL_HAND_SHAPES_COUNT - m_voxelHandShapes.Count;\n        //}\n\n        public int GetCountOfVoxelHandShapes()\n        {\n            return m_voxelHandShapes.Count;\n        }\n\n        private MyMwcVoxelFilesEnum m_voxelFile;\n        public MyMwcVoxelFilesEnum GetVoxelFile()\n        {\n            return ((MyMwcObjectBuilder_VoxelMap)GetObjectBuilderInternal(false)).VoxelFile;\n        }\n\n        public bool IsCorrectVoxelCoords(ref MyMwcVector3Int voxelCoord)\n        {\n            return CheckVoxelCoord(ref voxelCoord);\n        }\n\n        private MyVoxelMapOreDepositCell AddOreDepositCell(ref MyMwcVector3Int oreDepositCellCoord)\n        {\n            //  Adding or creating cell can be made only once\n            Int64 key = MyVoxelMaps.GetCellHashCode(VoxelMapId, ref oreDepositCellCoord, MyLodTypeEnum.LOD0);\n            Debug.Assert(!m_oreDepositCells.ContainsKey(key));\n\n            MyVoxelMapOreDepositCell ret = new MyVoxelMapOreDepositCell(this, oreDepositCellCoord);\n            ret.OnVoxelMapOreDepositCellContainsOreChanged += OnMyVoxelMapOreDepositCellContainsOreChanged;\n            m_oreDepositCells[key] = ret;\n\n            RecalculateOreDepositCellBoundingBox(ref ret, ref key);\n\n            return ret;\n        }\n\n\n        private void RemoveOreDepositCell(MyVoxelMapOreDepositCell oreDepositCell, bool lockEntityCloseLock = true)\n        {\n            oreDepositCell.OnVoxelMapOreDepositCellContainsOreChanged -= OnMyVoxelMapOreDepositCellContainsOreChanged;\n            oreDepositCell.Close(lockEntityCloseLock);\n        }\n                                                   \n        private void RemoveOreDepositCell(ref MyMwcVector3Int oreDepositCellCoord, bool lockEntityCloseLock = true)\n        {\n            Int64 key = MyVoxelMaps.GetCellHashCode(VoxelMapId, ref oreDepositCellCoord, MyLodTypeEnum.LOD0);\n            MyVoxelMapOreDepositCell oreDepositCell = m_oreDepositCells[key];\n\n            RemoveOreDepositCell(oreDepositCell, lockEntityCloseLock);\n\n            m_oreDepositCells.Remove(key);\n        }                                            \n\n        private void ChangeOreDepositCellContent(byte oldContent, byte newContent, ref MyMwcVector3Int voxelCoord)\n        {\n            // if contents are same, then do nothing\n            if (oldContent == newContent)\n            {\n                return;\n            }\n\n            MyMwcVector3Int cellCoord = GetDataCellCoordinate(ref voxelCoord);\n            MyMwcVector3Int voxelCoordInCell = GetVoxelCoordinatesInDataCell(ref voxelCoord);\n            MyMwcVoxelMaterialsEnum material = m_voxelMaterialCells[cellCoord.X][cellCoord.Y][cellCoord.Z].GetMaterial(ref voxelCoordInCell);\n\n            // we change content only if material is ore\n            if (MyVoxelMapOreMaterials.IsRareOre(material))\n            {\n                MyMwcVector3Int oreDepositCellCoord = GetOreDepositCellCoord(ref voxelCoord);\n                MyVoxelMapOreDepositCell oreDepositCell = GetOreDepositCell(ref oreDepositCellCoord);\n                if (oreDepositCell == null)\n                {\n                    oreDepositCell = AddOreDepositCell(ref oreDepositCellCoord);\n                }\n                int content = newContent - oldContent;\n                oreDepositCell.SetOreContent(material, content);\n\n                if (oreDepositCell.GetOreWithContent().Count == 0)\n                {\n                    RemoveOreDepositCell(oreDepositCell);\n                    Int64 key = MyVoxelMaps.GetCellHashCode(VoxelMapId, ref oreDepositCellCoord, MyLodTypeEnum.LOD0);\n                    m_oreDepositCells.Remove(key);\n                }\n            }\n        }\n\n        private void ChangeOreDepositMaterial(MyMwcVoxelMaterialsEnum oldMaterial, MyMwcVoxelMaterialsEnum newMaterial, ref MyMwcVector3Int voxelCoord)\n        {\n            int content = GetVoxelContent(ref voxelCoord);\n\n            // if there is no content in voxel, then do nothing\n            if (content == MyVoxelConstants.VOXEL_CONTENT_EMPTY)\n            {\n                return;\n            }\n\n            MyMwcVector3Int oreDepositCellCoord = GetOreDepositCellCoord(ref voxelCoord);\n            MyVoxelMapOreDepositCell oreDepositCell = GetOreDepositCell(ref oreDepositCellCoord);\n\n            // if new material is ore, then we must add it to ore deposit cell\n            if (MyVoxelMapOreMaterials.IsRareOre(newMaterial))\n            {\n                if (oreDepositCell == null) \n                    oreDepositCell = AddOreDepositCell(ref oreDepositCellCoord);\n\n                oreDepositCell.SetOreContent(newMaterial, content);\n            }\n\n            // if old material is ore, then we must remove it from ore deposit cell\n            if (MyVoxelMapOreMaterials.IsRareOre(oldMaterial))\n            {\n                //MyCommonDebugUtils.AssertDebug(oreDepositCell != null, \"Ore deposit wasn't initialized!\");  // may not happen\n                //// could happen!!!\n                //if (oreDepositCell == null) oreDepositCell = AddOreDepositCell(ref oreDepositCellCoord);\n\n                if (oreDepositCell != null)\n                {\n                    oreDepositCell.SetOreContent(oldMaterial, -content);\n\n                    if (oreDepositCell.GetOreWithContent().Count <= 0) \n                        RemoveOreDepositCell(ref oreDepositCellCoord);\n                }\n            }\n        }\n\n        // Fast, no locking: should be called only during loading\n        private void ChangeOreDepositMaterialFast(MyMwcVoxelMaterialsEnum oldMaterial, MyMwcVoxelMaterialsEnum newMaterial, ref MyMwcVector3Int cellCoord, ref MyMwcVector3Int coordInCell, ref MyMwcVector3Int oreDepositCellCoord)\n        {\n            int content;\n\n            MyVoxelContentCell voxelCell = GetCell(ref cellCoord);\n            if (voxelCell == null)\n                content = MyVoxelConstants.VOXEL_CONTENT_FULL;\n            else\n                content = voxelCell.GetVoxelContent(ref coordInCell);\n\n            // if there is no content in voxel, then do nothing\n            if (content == MyVoxelConstants.VOXEL_CONTENT_EMPTY)\n            {\n                return;\n            }\n\n            MyVoxelMapOreDepositCell oreDepositCell = GetOreDepositCell(ref oreDepositCellCoord);\n\n            // if new material is ore, then we must add it to ore deposit cell\n            if (MyVoxelMapOreMaterials.IsRareOre(newMaterial))\n            {\n                if (oreDepositCell == null) oreDepositCell = AddOreDepositCell(ref oreDepositCellCoord);\n                oreDepositCell.SetOreContent(newMaterial, content);\n            }\n\n            // if old material is ore, then we must remove it from ore deposit cell\n            if (MyVoxelMapOreMaterials.IsRareOre(oldMaterial))\n            {\n                MyCommonDebugUtils.AssertDebug(oreDepositCell != null, \"Ore deposit wasn't initialized!\");  // may not happen\n                //if (oreDepositCell == null) oreDepositCell = AddOreDepositCell(ref oreDepositCellCoord);  \n\n                oreDepositCell.SetOreContent(oldMaterial, -content);\n                if (oreDepositCell.GetOreWithContent().Count == 0) RemoveOreDepositCell(ref oreDepositCellCoord);\n            }\n        }\n\n        private MyMwcVector3Int GetOreDepositCellCoord(ref MyMwcVector3Int voxelCoord)\n        {\n            MyMwcVector3Int dataCellCoord = GetDataCellCoordinate(ref voxelCoord);\n            return GetOreDepositCellCoordByDataCellCoord(ref dataCellCoord);\n        }\n\n        private MyMwcVector3Int GetOreDepositCellCoordByDataCellCoord(ref MyMwcVector3Int dataCellCoord)\n        {\n            return new MyMwcVector3Int(\n                    dataCellCoord.X / MyVoxelConstants.VOXEL_MAP_ORE_DEPOSIT_CELL_IN_DATA_CELLS,\n                    dataCellCoord.Y / MyVoxelConstants.VOXEL_MAP_ORE_DEPOSIT_CELL_IN_DATA_CELLS,\n                    dataCellCoord.Z / MyVoxelConstants.VOXEL_MAP_ORE_DEPOSIT_CELL_IN_DATA_CELLS\n                );\n        }\n\n        private MyVoxelMapOreDepositCell GetOreDepositCell(ref MyMwcVector3Int oreDepositCellCoord)\n        {\n            Int64 key = MyVoxelMaps.GetCellHashCode(VoxelMapId, ref oreDepositCellCoord, MyLodTypeEnum.LOD0);\n\n            MyVoxelMapOreDepositCell cell;\n            m_oreDepositCells.TryGetValue(key, out cell);\n            return cell;\n        }\n\n        private MyVoxelMapOreDepositCell GetOreDepositCellByVoxelCoord(ref MyMwcVector3Int voxelCoord)\n        {\n            MyMwcVector3Int oreDepositCellCoord = GetOreDepositCellCoord(ref voxelCoord);\n            return GetOreDepositCell(ref oreDepositCellCoord);\n        }\n\n        private MyVoxelMapOreDepositCell GetOreDepositCellByDataCellCoord(ref MyMwcVector3Int dataCellCoord)\n        {\n            MyMwcVector3Int oreDepositCellCoord = GetOreDepositCellCoordByDataCellCoord(ref dataCellCoord);\n            return GetOreDepositCell(ref oreDepositCellCoord);\n        }\n\n        private void RecalculateOreDepositCellBoundingBoxes()\n        {\n            if (m_oreDepositCells == null)\n                return;\n\n            /*\n            MyMwcVector3Int oreDepositCellCoord;\n            for (oreDepositCellCoord.X = 0; oreDepositCellCoord.X < m_oreDepositCells.GetLength(0); oreDepositCellCoord.X++)\n            {\n                for (oreDepositCellCoord.Y = 0; oreDepositCellCoord.Y < m_oreDepositCells.GetLength(1); oreDepositCellCoord.Y++)\n                {\n                    for (oreDepositCellCoord.Z = 0; oreDepositCellCoord.Z < m_oreDepositCells.GetLength(2); oreDepositCellCoord.Z++)\n                    {\n                        MyVoxelMapOreDepositCell oreDepositCell = GetOreDepositCell(ref oreDepositCellCoord);\n                        if (oreDepositCell != null)\n                        {\n                            RecalculateOreDepositCellBoundingBox(ref oreDepositCell, ref oreDepositCellCoord);\n                        }\n                    }\n                }\n            } */\n\n            foreach (var oreCell in m_oreDepositCells)\n            {\n                MyVoxelMapOreDepositCell oreDepositCell = oreCell.Value;\n                Int64 oreDepositCellCoord = oreCell.Key;\n                RecalculateOreDepositCellBoundingBox(ref oreDepositCell, ref oreDepositCellCoord);\n            }\n        }\n\n        private void RecalculateOreDepositCellBoundingBox(ref MyVoxelMapOreDepositCell oreDepositCell, ref Int64 oreDepositCellCoord)\n        {\n            Vector3 minPosition;\n            Vector3 maxPosition;\n            GetMinAndMaxPositionOfOreDepositCell(ref oreDepositCellCoord, out minPosition, out maxPosition);\n            //oreDepositCell.BoundingBox = new BoundingBox(minPosition, maxPosition);\n            oreDepositCell.WorldAABB = new BoundingBox(minPosition, maxPosition);\n        }\n\n        private void GetMinAndMaxPositionOfOreDepositCell(ref Int64 oreDepositCellCoord, out Vector3 minPosition, out Vector3 maxPosition)\n        {\n            Vector3 oreDepositCellSize = new Vector3(SizeInMetres.X / m_oreDepositCellsCountX,\n                                                     SizeInMetres.Y / m_oreDepositCellsCountY,\n                                                     SizeInMetres.Z / m_oreDepositCellsCountZ);\n\n            MyVoxelMapOreDepositCell oreCell = m_oreDepositCells[oreDepositCellCoord];\n\n            minPosition = PositionLeftBottomCorner + new Vector3(oreCell.Coord.X * oreDepositCellSize.X, oreCell.Coord.Y * oreDepositCellSize.Y, oreCell.Coord.Z * oreDepositCellSize.Z);\n            maxPosition = minPosition + oreDepositCellSize;\n        }\n\n        private void OnMyVoxelMapOreDepositCellContainsOreChanged(MyVoxelMapOreDepositCell oreDepositCell, bool isEmpty)\n        {\n            using (OreDepositsLock.AcquireExclusiveUsing())\n            {\n                if (isEmpty)\n                {\n                    OreDepositCellsContainsOre.Remove(oreDepositCell);\n                }\n                else\n                {\n                    OreDepositCellsContainsOre.Add(oreDepositCell);\n                }\n            }\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyVoxelMap\";\n        }\n\n\n        public override MyMwcVoxelMaterialsEnum VoxelMaterial\n        {\n            set\n            {\n                if (MyFakes.ENABLE_DISPLAYING_ORE_ON_HUD)\n                {\n                    foreach (var oreDeposit in OreDepositCellsContainsOre)\n                    {\n                        MyMwcVector3Int coord = oreDeposit.Coord;\n                        RemoveOreDepositCell(ref coord);\n                    }\n                    using (OreDepositsLock.AcquireExclusiveUsing())\n                    {\n                        OreDepositCellsContainsOre.Clear();\n                    }\n                }\n\n                byte defaultIndestructibleContents = GetIndestructibleContentByMaterial(value);\n\n                for (int x = 0; x < DataCellsCount.X; x++)\n                {\n                    for (int y = 0; y < DataCellsCount.Y; y++)\n                    {\n                        for (int z = 0; z < DataCellsCount.Z; z++)\n                        {\n                            m_voxelMaterialCells[x][y][z].Reset(value, defaultIndestructibleContents);\n                            m_voxelMaterialCells[x][y][z].CalcAverageCellMaterial();\n\n                            if (MyFakes.ENABLE_DISPLAYING_ORE_ON_HUD)\n                            {\n                                // we need update ore deposit values\n                                MyMwcVector3Int dataCellCoord = new MyMwcVector3Int(x, y, z);\n                                MyMwcVector3Int oreDepositCellCoord = GetOreDepositCellCoordByDataCellCoord(ref dataCellCoord);\n                                MyVoxelMapOreDepositCell oreDepositCell = GetOreDepositCell(ref oreDepositCellCoord);\n                                if (MyVoxelMapOreMaterials.IsRareOre(value))\n                                {\n                                    if (oreDepositCell == null)\n                                    {\n                                        oreDepositCell = AddOreDepositCell(ref oreDepositCellCoord);\n                                    }\n                                    int content;\n                                    MyVoxelContentCell contentCell = GetCell(new MyMwcVector3Int(x, y, z));\n                                    if (contentCell == null)\n                                    {\n                                        content = MyVoxelConstants.VOXEL_CELL_CONTENT_SUM_TOTAL;\n                                    }\n                                    else\n                                    {\n                                        content = contentCell.GetVoxelContentSum();\n                                    }\n                                    oreDepositCell.SetOreContent(value, content);\n                                }\n                            }\n                        }\n                    }\n                }\n\n                base.VoxelMaterial = value;\n                MyMwcVector3Int minCorner = new MyMwcVector3Int(0, 0, 0);\n                MyMwcVector3Int maxCorner = Size;\n                InvalidateCache(minCorner, maxCorner);\n\n                if (m_voxelHandShapes != null)\n                {\n                    foreach (MyVoxelHandShape handShape in m_voxelHandShapes.ToArray())\n                    {\n                        if (handShape.ModeType == MyMwcVoxelHandModeTypeEnum.SET_MATERIAL)\n                        {\n                            m_voxelHandShapes.Remove(handShape);\n                        }\n\n                        if (handShape.ModeType == MyMwcVoxelHandModeTypeEnum.ADD)\n                        {\n                            handShape.Material = value;\n                        }\n                    }\n                }\n            }\n        }\n\n        public void AddExplosion(BoundingSphere explosion)\n        {\n            m_explosions.Add(explosion);\n        }\n\n        public override void BeforeSave()\n        {\n            base.BeforeSave();\n            // we convert explosions to voxel hands\n            foreach (BoundingSphere explosion in m_explosions)\n            {\n                MyVoxelHandSphere voxelHandSphere = new MyVoxelHandSphere();\n                MyMwcObjectBuilder_VoxelHand_Sphere builder = new MyMwcObjectBuilder_VoxelHand_Sphere(new MyMwcPositionAndOrientation(explosion.Center, Vector3.Forward, Vector3.Up), explosion.Radius, MyMwcVoxelHandModeTypeEnum.SUBTRACT);\n                voxelHandSphere.Init(builder, this);\n                m_voxelHandShapes.Add(voxelHandSphere);\n            }\n\n            m_explosions.Clear();\n        }\n\n        public void ClearVoxelHands()\n        {\n            m_voxelHandShapes.Clear();\n\n            MyMwcVector3Int voxelCoordMin = new MyMwcVector3Int(0, 0, 0);\n            MyMwcVector3Int voxelCoordMax = Size;\n\n            //  Fix min and max cell coordinates so they don't overlap the voxelmap\n            FixVoxelCoord(ref voxelCoordMin);\n            FixVoxelCoord(ref voxelCoordMax);\n            this.LoadFile(this.GetPosition(), this.GetObjectBuilder(true) as MyMwcObjectBuilder_VoxelMap);\n            this.Activate(false, false);\n            this.Activate(true, false);\n        }\n\n        [ThreadStatic]\n        Vector3[] m_helperFrustumCorners;\n\n        Vector3[] HelperFrustumCorners\n        {\n            get\n            {\n                if (m_helperFrustumCorners == null)\n                {\n                    m_helperFrustumCorners = new Vector3[8];\n                }\n                return m_helperFrustumCorners;\n            }\n        }\n\n        public override bool GetIntersectionWithBoundingFrustum(ref BoundingFrustum boundingFrustum)\n        {\n            ContainmentType con = boundingFrustum.Contains(WorldAABB);\n            if (con == ContainmentType.Contains)\n            {\n                return true;\n            }\n\n            if (con == ContainmentType.Intersects)\n            {\n                BoundingSphere sphere = boundingFrustum.ToBoundingSphere(HelperFrustumCorners);\n\n                //  Get min and max cell coordinate where boundingBox can fit\n                BoundingBox sphereBoundingBox = BoundingBoxHelper.InitialBox;\n                BoundingBoxHelper.AddSphere(sphere, ref sphereBoundingBox);\n                MyMwcVector3Int cellCoordMin = GetDataCellCoordinateFromMeters(ref sphereBoundingBox.Min);\n                MyMwcVector3Int cellCoordMax = GetDataCellCoordinateFromMeters(ref sphereBoundingBox.Max);\n\n                //  Fix min and max cell coordinates so they don't overlap the voxelmap\n                FixDataCellCoord(ref cellCoordMin);\n                FixDataCellCoord(ref cellCoordMax);\n\n                MyMwcVector3Int cellCoord;\n                for (cellCoord.X = cellCoordMin.X; cellCoord.X <= cellCoordMax.X; cellCoord.X++)\n                {\n                    for (cellCoord.Y = cellCoordMin.Y; cellCoord.Y <= cellCoordMax.Y; cellCoord.Y++)\n                    {\n                        for (cellCoord.Z = cellCoordMin.Z; cellCoord.Z <= cellCoordMax.Z; cellCoord.Z++)\n                        {\n                            //  If no overlap between bounding pitch of data cell and the sphere\n                            BoundingBox dataCellBoundingBox;\n                            GetDataCellBoundingBox(ref cellCoord, out dataCellBoundingBox);\n                            if (MyUtils.IsBoxIntersectingSphere(ref dataCellBoundingBox, ref sphere) == false) continue;\n\n                            //  Get cell from cache. If not there, precalc it and store in the cache.\n                            //  If null is returned, we know that cell doesn't contain any triangleVertexes so we don't need to do intersections.\n                            MyVoxelCacheCellData cachedDataCell = null;\n                            using (MyVoxelCacheData.Locker.AcquireSharedUsing())\n                            {\n                                cachedDataCell = MyVoxelCacheData.GetCell(this, ref cellCoord, true);\n\n                                if (cachedDataCell == null) continue;\n\n                                for (int i = 0; i < cachedDataCell.VoxelTrianglesCount; i++)\n                                {\n                                    MyVoxelTriangle voxelTriangle = cachedDataCell.VoxelTriangles[i];\n\n                                    MyVoxelVertex voxelVertex0 = cachedDataCell.VoxelVertices[voxelTriangle.VertexIndex0];\n                                    MyVoxelVertex voxelVertex1 = cachedDataCell.VoxelVertices[voxelTriangle.VertexIndex1];\n                                    MyVoxelVertex voxelVertex2 = cachedDataCell.VoxelVertices[voxelTriangle.VertexIndex2];\n\n                                    if (boundingFrustum.Contains(voxelVertex0.Position + PositionLeftBottomCorner) == ContainmentType.Contains)\n                                        return true;\n                                    if (boundingFrustum.Contains(voxelVertex1.Position + PositionLeftBottomCorner) == ContainmentType.Contains)\n                                        return true;\n                                    if (boundingFrustum.Contains(voxelVertex2.Position + PositionLeftBottomCorner) == ContainmentType.Contains)\n                                        return true;\n                                }\n                            }\n                        }\n                    }\n                }\n            }\n            return false;\n        }\n\n\n        protected override void InitRenderObjects()\n        {\n            m_renderObjects = new MyRenderObject[RenderCellsCount.X * RenderCellsCount.Y * RenderCellsCount.Z];\n\n            int i = 0;\n            MyMwcVector3Int cellCoord;\n            for (cellCoord.X = 0; cellCoord.X < RenderCellsCount.X; cellCoord.X++)\n            {\n                for (cellCoord.Y = 0; cellCoord.Y < RenderCellsCount.Y; cellCoord.Y++)\n                {\n                    for (cellCoord.Z = 0; cellCoord.Z < RenderCellsCount.Z; cellCoord.Z++)\n                    {\n                        m_renderObjects[i++] = new MyRenderObject(this, cellCoord);\n                    }\n                }\n            }\n        }\n\n        protected override void AddRenderObjects()\n        {\n            foreach (MyRenderObject renderObject in m_renderObjects)\n            {\n                MyRender.AddRenderObject(renderObject);\n            }\n        }\n\n        protected override void RemoveRenderObjects()\n        {\n            foreach (MyRenderObject renderObject in m_renderObjects)\n            {\n                MyRender.RemoveRenderObject(renderObject);\n            }\n        }\n\n        public void Explode()\n        {\n            var explosionEffect = MyParticlesManager.CreateParticleEffect((int)MyParticleEffectsIDEnum.Explosion_Bomb);\n            explosionEffect.WorldMatrix = this.WorldMatrix;\n            explosionEffect.UserScale = .05f * this.WorldVolume.Radius;\n            this.MarkForClose();\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Asteroids/tempfile.2.tmp",
    "content": ""
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Asteroids/tempfile.tmp",
    "content": ""
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/CargoBox/MyCargoBox.cs",
    "content": "﻿using System;\nusing System.Text;\nusing MinerWars.AppCode.Game.Inventory;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.TransparentGeometry.Particles;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.AppCode.Game.Models;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Physics;\nusing MinerWars.AppCode.Game.HUD;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.AppCode.Game.Sessions;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.Localization;\n\nnamespace MinerWars.AppCode.Game.Entities.CargoBox\n{\n    class MyCargoBox : MyEntity, IMyInventory, IResetable\n    {\n        public MyInventory Inventory { get; set; }\n\n        private float m_elapsedTime;\n        public TimeSpan? RespawnTime;\n        private bool m_shouldRespawn;\n\n        /// <summary>\n        /// Indicates whether this cargo box should disappear after all items have been taken from it.\n        /// </summary>\n        public bool CloseAfterEmptied\n        {\n            get { return m_cargoBoxType == MyMwcObjectBuilder_CargoBox_TypesEnum.DroppedItems; }\n        }\n\n        private MyMwcObjectBuilder_CargoBox_TypesEnum m_cargoBoxType;\n        public MyMwcObjectBuilder_CargoBox_TypesEnum CargoBoxType\n        {\n            get { return m_cargoBoxType; }\n            set\n            {\n                m_cargoBoxType = value;\n                ChangeModelLod0(value);\n            }\n        }\n\n        public MyCargoBox()\n            : base(true)\n        {\n            Inventory = new MyInventory();\n            Inventory.OnInventoryContentChange += Inventory_OnInventoryContentChange;\n        }\n\n        void Inventory_OnInventoryContentChange(MyInventory sender)\n        {\n            UpdateState();\n\n            if (RespawnTime.HasValue && MyMultiplayerGameplay.IsRunning && !MyGuiScreenGamePlay.Static.IsGameStoryActive())\n            {\n                if (Inventory.GetInventoryItems().Count < m_inventoryTemplate.InventoryItems.Count)\n                {\n                    m_shouldRespawn = NeedsUpdate = true;\n                }\n            }\n\n            if (sender.IsInventoryEmpty() && CloseAfterEmptied)\n            {\n                MarkForClose();\n            }\n        }\n\n        private void UpdateState()\n        {\n            if (IsNotEmpty())\n            {\n                m_diffuseColor = Vector3.One * 2f;\n                m_enableEmissivity = true;\n            }\n            else\n            {\n                m_diffuseColor = Vector3.One;\n                m_enableEmissivity = false;\n            }\n            SetHudMarker();\n        }\n\n        public override void UpdateBeforeSimulation()\n        {\n            base.UpdateBeforeSimulation();\n\n            if (m_shouldRespawn)\n            {\n                m_elapsedTime += MyConstants.PHYSICS_STEP_SIZE_IN_MILLISECONDS;\n                if (m_elapsedTime > RespawnTime.Value.TotalMilliseconds)\n                {\n                    Respawn();\n                }\n            }\n        }\n\n        public bool IsNotEmpty()\n        {\n            return Inventory != null && Inventory.GetInventoryItems().Count > 0;\n        }\n\n        private MyMwcObjectBuilder_Inventory m_inventoryTemplate;\n\n        public void Init(string hudLabelText, MyMwcObjectBuilder_CargoBox objectBuilder, Matrix matrix)\n        {\n            Flags |= EntityFlags.EditableInEditor;\n\n            StringBuilder hudLabelTextSb = (hudLabelText == null) ? MyTextsWrapper.Get(MyTextsWrapperEnum.CargoBox) : new StringBuilder(hudLabelText);\n\n            // We want to make cargo box \"lazy\" to prevent rapid movement\n            const float cargoBoxMass = 5000.0f;\n            const float cargoAngularDamping = 0.5f;\n\n            var modelLod0Enum = GetModelLod0EnumFromType(objectBuilder.CargoBoxType);\n\n            base.Init(hudLabelTextSb, modelLod0Enum, null, null, null, objectBuilder);\n            base.InitBoxPhysics(MyMaterialType.METAL, ModelLod0, cargoBoxMass, cargoAngularDamping, MyConstants.COLLISION_LAYER_DEFAULT, RigidBodyFlag.RBF_RBO_STATIC);\n            this.Physics.LinearDamping = 0.7f;\n            this.Physics.MaxLinearVelocity = 350;\n            this.Physics.MaxAngularVelocity = 5;\n\n            m_inventoryTemplate = objectBuilder.Inventory;\n            if (m_inventoryTemplate != null)\n            {\n                Inventory.Init(m_inventoryTemplate);\n            }\n            CargoBoxType = objectBuilder.CargoBoxType;\n\n            SetWorldMatrix(matrix);\n\n            Save = true;\n            this.Physics.Enabled = true;\n            UpdateState();\n        }\n\n        public void Respawn()\n        {\n            // Dummy entities won't respawn;\n            if (!IsDummy)\n            {\n                NeedsUpdate = false;\n                m_shouldRespawn = false;\n                m_elapsedTime = 0;\n                if (m_inventoryTemplate != null)\n                {\n                    Inventory.Init(m_inventoryTemplate);\n                }\n                if (MyMultiplayerGameplay.IsRunning)\n                {\n                    MyMultiplayerGameplay.Static.ResetEntity(this);\n                }\n            }\n        }\n\n        public string GetCorrectDisplayName(ref MyHudMaxDistanceMultiplerTypes? maxDistanceMultiplerType)\n        {\n            string displayName = GetCorrectDisplayName();\n\n            switch (m_cargoBoxType)\n            {\n                case MyMwcObjectBuilder_CargoBox_TypesEnum.Type7:\n                case MyMwcObjectBuilder_CargoBox_TypesEnum.Type3:\n                    maxDistanceMultiplerType = MyHudMaxDistanceMultiplerTypes.CargoBoxMedkit;\n                    break;\n                case MyMwcObjectBuilder_CargoBox_TypesEnum.Type8:\n                case MyMwcObjectBuilder_CargoBox_TypesEnum.Type6:\n                    maxDistanceMultiplerType = MyHudMaxDistanceMultiplerTypes.CargoBoxAmmo;\n                    break;\n                case MyMwcObjectBuilder_CargoBox_TypesEnum.TypeProp_A:\n                case MyMwcObjectBuilder_CargoBox_TypesEnum.Type9:\n                    maxDistanceMultiplerType = MyHudMaxDistanceMultiplerTypes.CargoBoxOxygen;\n                    break;\n                case MyMwcObjectBuilder_CargoBox_TypesEnum.Type5:\n                case MyMwcObjectBuilder_CargoBox_TypesEnum.Type11:\n                    maxDistanceMultiplerType = MyHudMaxDistanceMultiplerTypes.CargoBoxFuel;\n                    break;\n                case MyMwcObjectBuilder_CargoBox_TypesEnum.Type2:\n                case MyMwcObjectBuilder_CargoBox_TypesEnum.Type12:\n                    maxDistanceMultiplerType = MyHudMaxDistanceMultiplerTypes.CargoBoxRepair;\n                    break;\n                default:\n                    maxDistanceMultiplerType = null;\n                    break;\n            }\n\n            return displayName;\n        }\n\n        public override string GetCorrectDisplayName()\n        {\n            string displayName = DisplayName;\n\n            switch (m_cargoBoxType)\n            {\n                case MyMwcObjectBuilder_CargoBox_TypesEnum.Type7:\n                case MyMwcObjectBuilder_CargoBox_TypesEnum.Type3:\n                    if (DisplayName == \"Medikit\")\n                        displayName = MyTextsWrapper.Get(MyTextsWrapperEnum.CargoBoxMedikit).ToString();\n                    break;\n                case MyMwcObjectBuilder_CargoBox_TypesEnum.Type8:\n                case MyMwcObjectBuilder_CargoBox_TypesEnum.Type6:\n                    if (DisplayName == \"Ammo\")\n                        displayName = MyTextsWrapper.Get(MyTextsWrapperEnum.CargoBoxAmmo).ToString();\n                    break;\n                case MyMwcObjectBuilder_CargoBox_TypesEnum.TypeProp_A:\n                case MyMwcObjectBuilder_CargoBox_TypesEnum.Type9:\n                    if (DisplayName == \"Oxygen\")\n                        displayName = MyTextsWrapper.Get(MyTextsWrapperEnum.CargoBoxOxygen).ToString();\n                    break;\n                case MyMwcObjectBuilder_CargoBox_TypesEnum.Type5:\n                case MyMwcObjectBuilder_CargoBox_TypesEnum.Type11:\n                    if (DisplayName == \"Fuel\")\n                        displayName = MyTextsWrapper.Get(MyTextsWrapperEnum.CargoBoxFuel).ToString();\n                    break;\n                case MyMwcObjectBuilder_CargoBox_TypesEnum.Type2:\n                case MyMwcObjectBuilder_CargoBox_TypesEnum.Type12:\n                    if (DisplayName == \"Repair\")\n                        displayName = MyTextsWrapper.Get(MyTextsWrapperEnum.CargoBoxRepair).ToString();\n                    break;\n                default:\n                    \n                    break;\n            }\n\n            if (DisplayName == \"Health\")\n                displayName = MyTextsWrapper.Get(MyTextsWrapperEnum.Health).ToString();\n\n\n            return displayName;\n        }\n\n        protected override void SetHudMarker()\n        {\n            if (IsNotEmpty())\n            {\n                MyHudMaxDistanceMultiplerTypes? maxDistanceMultiplerType = null;\n\n                if (m_cargoBoxType == 0)\n                    m_cargoBoxType = GetTypeFromModelLod0Enum(m_modelLod0.ModelEnum);\n\n                string displayName = GetCorrectDisplayName(ref maxDistanceMultiplerType);\n\n                MyHud.ChangeText(this, new StringBuilder(displayName), MyGuitargetMode.CargoBox, 200f, MyHudIndicatorFlagsEnum.SHOW_BORDER_INDICATORS | MyHudIndicatorFlagsEnum.SHOW_DISTANCE | MyHudIndicatorFlagsEnum.SHOW_TEXT, maxDistanceMultiplerType: maxDistanceMultiplerType);\n            }\n            else\n            {\n                MyHud.RemoveText(this);\n            }\n        }\n\n        private static MyMwcObjectBuilder_CargoBox_TypesEnum GetTypeFromModelLod0Enum(MyModelsEnum model)\n        {\n            switch (model)\n            {\n                case MyModelsEnum.cargo_box_1:\n                    return MyMwcObjectBuilder_CargoBox_TypesEnum.Type1;\n                case MyModelsEnum.cargo_box_2:\n                    return MyMwcObjectBuilder_CargoBox_TypesEnum.Type2;\n                case MyModelsEnum.cargo_box_3:\n                    return MyMwcObjectBuilder_CargoBox_TypesEnum.Type3;\n                case MyModelsEnum.cargo_box_4:\n                    return MyMwcObjectBuilder_CargoBox_TypesEnum.Type4;\n                case MyModelsEnum.cargo_box_5:\n                    return MyMwcObjectBuilder_CargoBox_TypesEnum.Type5;\n                case MyModelsEnum.cargo_box_6:\n                    return MyMwcObjectBuilder_CargoBox_TypesEnum.Type6;\n                case MyModelsEnum.cargo_box_7:\n                    return MyMwcObjectBuilder_CargoBox_TypesEnum.Type7;\n                case MyModelsEnum.cargo_box_8:\n                    return MyMwcObjectBuilder_CargoBox_TypesEnum.Type8;\n                case MyModelsEnum.cargo_box_9:\n                    return MyMwcObjectBuilder_CargoBox_TypesEnum.Type9;\n                case MyModelsEnum.cargo_box_10:\n                    return MyMwcObjectBuilder_CargoBox_TypesEnum.Type10;\n                case MyModelsEnum.cargo_box_11:\n                    return MyMwcObjectBuilder_CargoBox_TypesEnum.Type11;\n                case MyModelsEnum.cargo_box_12:\n                    return MyMwcObjectBuilder_CargoBox_TypesEnum.Type12;\n                case MyModelsEnum.CargoBox_prop_A:\n                    return MyMwcObjectBuilder_CargoBox_TypesEnum.TypeProp_A;\n                case MyModelsEnum.CargoBox_prop_B:\n                    return MyMwcObjectBuilder_CargoBox_TypesEnum.TypeProp_B;\n                case MyModelsEnum.CargoBox_prop_C:\n                    return MyMwcObjectBuilder_CargoBox_TypesEnum.TypeProp_C;\n                case MyModelsEnum.CargoBox_prop_D:\n                    return MyMwcObjectBuilder_CargoBox_TypesEnum.TypeProp_D;\n                case MyModelsEnum.cargo_box_small:\n                    return MyMwcObjectBuilder_CargoBox_TypesEnum.DroppedItems;\n                default:\n                    return (MyMwcObjectBuilder_CargoBox_TypesEnum)0;\n            }\n        }\n\n        public static MyModelsEnum GetModelLod0EnumFromType(MyMwcObjectBuilder_CargoBox_TypesEnum cargoBoxType)\n        {\n            switch (cargoBoxType)\n            {\n                case MyMwcObjectBuilder_CargoBox_TypesEnum.Type1:\n                    return MyModelsEnum.cargo_box_1;\n                case MyMwcObjectBuilder_CargoBox_TypesEnum.Type2:\n                    return MyModelsEnum.cargo_box_2;\n                case MyMwcObjectBuilder_CargoBox_TypesEnum.Type3:\n                    return MyModelsEnum.cargo_box_3;\n                case MyMwcObjectBuilder_CargoBox_TypesEnum.Type4:\n                    return MyModelsEnum.cargo_box_4;\n                case MyMwcObjectBuilder_CargoBox_TypesEnum.Type5:\n                    return MyModelsEnum.cargo_box_5;\n                case MyMwcObjectBuilder_CargoBox_TypesEnum.Type6:\n                    return MyModelsEnum.cargo_box_6;\n                case MyMwcObjectBuilder_CargoBox_TypesEnum.Type7:\n                    return MyModelsEnum.cargo_box_7;\n                case MyMwcObjectBuilder_CargoBox_TypesEnum.Type8:\n                    return MyModelsEnum.cargo_box_8;\n                case MyMwcObjectBuilder_CargoBox_TypesEnum.Type9:\n                    return MyModelsEnum.cargo_box_9;\n                case MyMwcObjectBuilder_CargoBox_TypesEnum.Type10:\n                    return MyModelsEnum.cargo_box_10;\n                case MyMwcObjectBuilder_CargoBox_TypesEnum.Type11:\n                    return MyModelsEnum.cargo_box_11;\n                case MyMwcObjectBuilder_CargoBox_TypesEnum.Type12:\n                    return MyModelsEnum.cargo_box_12;\n                case MyMwcObjectBuilder_CargoBox_TypesEnum.TypeProp_A:\n                    return MyModelsEnum.CargoBox_prop_A;\n                case MyMwcObjectBuilder_CargoBox_TypesEnum.TypeProp_B:\n                    return MyModelsEnum.CargoBox_prop_B;\n                case MyMwcObjectBuilder_CargoBox_TypesEnum.TypeProp_C:\n                    return MyModelsEnum.CargoBox_prop_C;\n                case MyMwcObjectBuilder_CargoBox_TypesEnum.TypeProp_D:\n                    return MyModelsEnum.CargoBox_prop_D;\n                case MyMwcObjectBuilder_CargoBox_TypesEnum.DroppedItems:\n                    return MyModelsEnum.cargo_box_small;\n                default:\n                    throw new ArgumentOutOfRangeException(\"cargoBoxType\");\n            }\n        }\n\n        public MySoundCuesEnum GetTakeAllSound()\n        {\n            switch (CargoBoxType)\n            {\n                case MyMwcObjectBuilder_CargoBox_TypesEnum.Type1:\n                case MyMwcObjectBuilder_CargoBox_TypesEnum.TypeProp_B:\n                case MyMwcObjectBuilder_CargoBox_TypesEnum.TypeProp_C:\n                case MyMwcObjectBuilder_CargoBox_TypesEnum.TypeProp_D:\n                case MyMwcObjectBuilder_CargoBox_TypesEnum.Type4:\n                case MyMwcObjectBuilder_CargoBox_TypesEnum.Type10:\n                case MyMwcObjectBuilder_CargoBox_TypesEnum.DroppedItems:\n                    return MySoundCuesEnum.SfxTakeAllUniversal;\n                case MyMwcObjectBuilder_CargoBox_TypesEnum.Type6:\n                case MyMwcObjectBuilder_CargoBox_TypesEnum.Type8:\n                    return MySoundCuesEnum.SfxTakeAllAmmo;\n                case MyMwcObjectBuilder_CargoBox_TypesEnum.Type5:\n                case MyMwcObjectBuilder_CargoBox_TypesEnum.Type11:\n                    return MySoundCuesEnum.SfxTakeAllFuel;\n                case MyMwcObjectBuilder_CargoBox_TypesEnum.Type3:\n                case MyMwcObjectBuilder_CargoBox_TypesEnum.Type7:\n                    return MySoundCuesEnum.SfxTakeAllMedkit;\n                case MyMwcObjectBuilder_CargoBox_TypesEnum.Type9:\n                case MyMwcObjectBuilder_CargoBox_TypesEnum.TypeProp_A:\n                    return MySoundCuesEnum.SfxTakeAllOxygen;\n                case MyMwcObjectBuilder_CargoBox_TypesEnum.Type2:\n                case MyMwcObjectBuilder_CargoBox_TypesEnum.Type12:\n                    return MySoundCuesEnum.SfxTakeAllRepair;\n                default:\n                    return MySoundCuesEnum.SfxTakeAllUniversal;\n            }\n        }\n\n        private void ChangeModelLod0(MyMwcObjectBuilder_CargoBox_TypesEnum cargoBoxType)\n        {\n            var modelLod0Enum = GetModelLod0EnumFromType(cargoBoxType);\n            var modelLod0 = MyModels.GetModelForDraw(modelLod0Enum);\n            m_modelLod0 = modelLod0;\n        }\n\n        protected override MyMwcObjectBuilder_Base GetObjectBuilderInternal(bool getExactCopy)\n        {\n            var builder = (MyMwcObjectBuilder_CargoBox)base.GetObjectBuilderInternal(getExactCopy);\n            builder.Inventory = Inventory.GetObjectBuilder(getExactCopy);\n            builder.DisplayName = DisplayName;\n            builder.CargoBoxType = CargoBoxType;\n\n            return builder;\n        }\n\n        public override void Close()\n        {\n            Inventory.OnInventoryContentChange -= Inventory_OnInventoryContentChange;\n            Inventory.Close();\n            base.Close();\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyCargoBox\";\n        }\n\n        public void Reset()\n        {\n            Respawn();\n        }\n\n        protected override void DoDamageInternal(float playerDamage, float damage, float empDamage, MyDamageType damageType, MyAmmoType ammoType, MyEntity damageSource, bool justDeactivate)\n        {\n            base.DoDamageInternal(playerDamage, damage, empDamage, damageType, ammoType, damageSource, justDeactivate);\n\n            if (IsDead())\n            {\n                MarkForClose();\n\n                var effect = MyParticlesManager.CreateParticleEffect((int)MyParticleEffectsIDEnum.Explosion_SmallPrefab);\n                effect.WorldMatrix = WorldMatrix;\n                effect.UserScale = 0.5f;\n            }\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/CargoBox/MyMysteriousCube.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Inventory;\nusing MinerWarsMath;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.AppCode.Game.Models;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Physics;\n\nnamespace MinerWars.AppCode.Game.Entities\n{\n    class MyMysteriousCube : MyEntity\n    {\n        public MyMysteriousCube() \n            : base(true)\n        {\n        }\n\n        public void Init(string hudLabelText, MyMwcObjectBuilder_MysteriousCube objectBuilder, Matrix matrix) \n        {\n            Flags |= EntityFlags.EditableInEditor;\n\n            StringBuilder hudLabelTextSb = (hudLabelText == null) ? null : new StringBuilder(hudLabelText);\n\n            \n\n            switch (objectBuilder.MysteriousCubeType)\n            {\n                case MyMwcObjectBuilder_MysteriousCube_TypesEnum.Type1:\n                    base.Init(hudLabelTextSb, MyModelsEnum.MysteriousBox_matt_5m, null, null, null, objectBuilder);\n                    m_diffuseColor = new Vector3(0, 0, 0);\n                    break;\n\n                case MyMwcObjectBuilder_MysteriousCube_TypesEnum.Type2:\n                    base.Init(hudLabelTextSb, MyModelsEnum.MysteriousBox_spec_5m, null, null, null, objectBuilder);\n                    m_diffuseColor = new Vector3(0, 0, 0);\n                    break;\n\n                case MyMwcObjectBuilder_MysteriousCube_TypesEnum.Type3:\n                    base.Init(hudLabelTextSb, MyModelsEnum.MysteriousBox_mid_5m, null, null, null, objectBuilder);\n                    m_diffuseColor = new Vector3(0, 0, 0);\n                    break;\n\n            }\n\n            base.InitBoxPhysics(MyMaterialType.METAL, ModelLod0, 1f, 0f, MyConstants.COLLISION_LAYER_DEFAULT, RigidBodyFlag.RBF_RBO_STATIC);\n            SetWorldMatrix(matrix);\n            Save = true;\n            this.Physics.Enabled = true;\n\n           // NeedsUpdate = true;\n\n        }\n\n        protected override MyMwcObjectBuilder_Base GetObjectBuilderInternal(bool getExactCopy)\n        {\n            MyMwcObjectBuilder_MysteriousCube builder = base.GetObjectBuilderInternal(getExactCopy) as MyMwcObjectBuilder_MysteriousCube;\n\n            return builder;\n        }\n\n\n        public override void UpdateBeforeSimulation()\n        {\n            base.UpdateBeforeSimulation();\n                                             \n            //MyMesh mesh = m_modelLod0.GetMeshList()[0];\n            //mesh.Materials[0].SpecularIntensity = 0.5f;\n            //mesh.Materials[0].SpecularPower = 3.5f;\n            //mesh.Materials[0].SpecularColor = Vector3.Zero;\n \n        }\n\n        public override void Close()\n        {\n            base.Close();\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Debris/MyExplosionDebrisBase.cs",
    "content": "﻿using MinerWars.AppCode.Physics;\nusing MinerWars.AppCode.Game.Physics;\n\nnamespace MinerWars.AppCode.Game.Entities\n{\n    using System.Collections.Generic;\n    using App;\n    using CommonLIB.AppCode.Utils;\n    using MinerWarsMath;\n    using Models;\n    using Utils;\n    using System;\n    using KeenSoftwareHouse.Library.Trace;\n    using SysUtils.Utils;\n    using SysUtils;\n    using MinerWars.AppCode.Game.GUI;\n    using MinerWars.AppCode.Game.Managers.Session;\n\n    //  This is instance of one debris phys object\n    abstract class MyExplosionDebrisBase : MyEntity\n    {\n        //  This variables are persistent even betwen Start (because we don't need to change them)\n        int m_maxLifeTimeInMiliseconds;\n        Matrix m_initialOrientation;\n        bool m_explosionType;\n\n        //  Per-debris object randomization parameters, they influence how debris looks when rendered\n        float m_randomizedDiffuseTextureColorMultiplier;\n\n        //  This variables are changed during every Start() (when new object is allocated)\n        int m_createdTime;\n\n\n        public MyExplosionDebrisBase()\n            : base(false)\n        {\n        }\n\n        //  IMPORTANT: This class isn't realy inicialized by constructor, but by Start()\n        //  So don't initialize members here, do it in Start()\n        public virtual void Init(MyModelsEnum modelLod0Enum, MyModelsEnum? modelLod1Enum, MyMaterialType materialType, float scale, List<MyRBElementDesc> collisionPrimitives, float mass)\n        {\n            MyPhysicsObjects physobj = MyPhysics.physicsSystem.GetPhysicsObjects();\n\n            base.Init(null, modelLod0Enum, modelLod1Enum, null, scale, null);\n\n            m_maxLifeTimeInMiliseconds = MyMwcUtils.GetRandomInt(MyExplosionsConstants.EXPLOSION_DEBRIS_LIVING_MIN_IN_MILISECONDS, MyExplosionsConstants.EXPLOSION_DEBRIS_LIVING_MAX_IN_MILISECONDS);\n            m_randomizedDiffuseTextureColorMultiplier = MyMwcUtils.GetRandomFloat(0.4f, 0.6f);\n            m_initialOrientation = Matrix.CreateRotationX(MyMwcUtils.GetRandomRadian()) * Matrix.CreateRotationY(MyMwcUtils.GetRandomRadian()) * Matrix.CreateRotationZ(MyMwcUtils.GetRandomRadian());\n\n            // create physics\n            this.Physics = new MyPhysicsBody(this, mass, 0) { MaterialType = materialType };\n            \n            for (int i = 0; i < collisionPrimitives.Count; i++)\n            {\n                MyRBSphereElement sphereEl = (MyRBSphereElement)physobj.CreateRBElement(collisionPrimitives[i]);\n                //\n                sphereEl.Radius *= scale;\n                this.Physics.AddElement(sphereEl, true);\n            }\n        }\n        \n\n        //  IMPORTANT: This class isn't realy inicialized by constructor, but by Start()\n        //  So don't initialize members here, do it in Start()\n        protected virtual void Start(Vector3 position, float scale, MyGroupMask groupMask, bool explosionType)\n        {\n            Save = false;\n            m_explosionType = explosionType;\n\n            m_createdTime = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n\n            Matrix worldMat = Matrix.Identity;//; Matrix.CreateScale(scale);\n            Scale = scale;\n            worldMat.Translation = position;\n\n            SetWorldMatrix(worldMat);\n\n            //  This is here because we are restarting the object after it was sleeping in object pool\n            this.Physics.Clear();\n\n            if (m_explosionType)\n            {\n                NeedsUpdate = true;\n                this.Physics.PlayCollisionCueEnabled = true;\n                //reset the physical radius of object!\n                if ((this.Physics as MyPhysicsBody).GetRBElementList().Count > 0)\n                {\n                    MyRBElement element = (this.Physics as MyPhysicsBody).GetRBElementList()[0];\n                    (element as MyRBSphereElement).Radius = this.ModelLod0.BoundingSphere.Radius * scale;\n                }\n\n                //this.Physics.Enabled = true;\n                this.Physics.GroupMask = groupMask;\n                this.Physics.AngularDamping = MySession.Is25DSector ? 0.5f : 0.1f;\n                //this.Physics.Update();\n            }\n            else\n                NeedsUpdate = false;\n        }\n\n        /// <summary>\n        /// Updates resource.\n        /// </summary>\n        public override void UpdateBeforeSimulation()\n        {\n            base.UpdateBeforeSimulation();\n\n            if (m_explosionType)\n            {\n                if (IsLiving() == false)\n                {\n                    Close();\n                }\n            }\n        }\n\n        //  This method must be called when this object dies or is removed\n        //  E.g. it removes lights, sounds, etc\n        public override void Close()\n        {\n            MyEntities.Remove(this);\n            MyEntities.RemoveFromClosedEntities(this);\n\n            //  This will move the object to default waiting position\n            SetWorldMatrix(Matrix.Identity);\n        }\n\n        protected override void OnContactStart(MyContactEventInfo contactInfo)\n        {\n            MyPhysicsBody ps1 = (MyPhysicsBody)contactInfo.m_RigidBody1.m_UserData;\n            MyPhysicsBody ps2 = (MyPhysicsBody)contactInfo.m_RigidBody2.m_UserData;\n            if (ps1.Entity is MyExplosionDebrisBase && ps2.Entity is MyExplosionDebrisBase)\n            {\n                MyCommonDebugUtils.AssertDebug(false);   \n            }\n\n            base.OnContactStart(contactInfo);\n        }\n\n        //  This method tells us how much this explosion debris lives. If 1.0, it isn't transparent. If between 1.0 and 0.0,\n        //  it is alpha-blended. If 0.0, we remove it from buffer.\n        bool IsLiving()\n        {\n            float deltaTime = MyMinerGame.TotalGamePlayTimeInMilliseconds - m_createdTime;\n            return (deltaTime <= m_maxLifeTimeInMiliseconds);\n        }\n\n        public float GetRandomizedDiffuseTextureColorMultiplier()\n        {\n            return m_randomizedDiffuseTextureColorMultiplier;\n        }\n\n        public override bool IsSelectable()\n        {\n            return false;\n        }\n\n        public override bool IsSelectableAsChild()\n        {\n            return false;\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Debris/MyExplosionDebrisModel.cs",
    "content": "﻿using System.Collections.Generic;\nusing MinerWars.AppCode.Game.Explosions;\nusing MinerWars.CommonLIB.AppCode.Generics;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Models;\nusing MinerWars.AppCode.Physics;\nusing SysUtils.Utils;\n\nusing System;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.Import;\n\nnamespace MinerWars.AppCode.Game.Entities\n{\n    class MyExplosionDebrisModel : MyExplosionDebrisBase\n    {\n        private const MyMaterialType MODEL_DEBRIS_MATERIAL_TYPE = MyMaterialType.METAL;\n        static MyObjectsPool<MyExplosionDebrisModel> m_objectPool = null;\n\n        static readonly List<BoundingSphere> m_debugVoxelSpheres = new List<BoundingSphere>();\n\n        static private readonly List<Vector3> m_positions = new List<Vector3>(MyExplosionsConstants.APPROX_NUMBER_OF_DEBRIS_OBJECTS_PER_MODEL_EXPLOSION);\n\n\n        public virtual void Init(List<MyRBElementDesc> collisionPrimitives, MyModelsEnum modelEnum)\n        {\n            float randomSize = MyMwcUtils.GetRandomFloat(0, 1);\n            float mass = MathHelper.Lerp(2500, 5000, randomSize); //  The mass can't be too low, because then debris objects are too fast. This values aren't real, but works.\n            base.Init(modelEnum, null, MODEL_DEBRIS_MATERIAL_TYPE, 1.0f, collisionPrimitives, mass);\n            Physics.MaxLinearVelocity = 200.0f;\n\n            Physics.CollisionLayer = MyConstants.COLLISION_LAYER_MODEL_DEBRIS;\n\n            MyModels.OnContentLoaded += InitDrawTechniques;\n        }\n\n        protected override void Start(Vector3 position, float scale, MyGroupMask groupMask, bool explosionType)\n        {\n            base.Start(position, scale, groupMask, explosionType);\n\n            //apply random rotation impulse\n            Physics.AngularVelocity = new Vector3(MyMwcUtils.GetRandomRadian(), MyMwcUtils.GetRandomRadian(), MyMwcUtils.GetRandomRadian());\n            Physics.Enabled = true;\n\n            InitDrawTechniques();\n        }\n\n        //  This method must be called when this object dies or is removed\n        //  E.g. it removes lights, sounds, etc\n        public override void Close()\n        {\n            MyModels.OnContentLoaded -= InitDrawTechniques;\n            m_objectPool.Deallocate(this);\n            base.Close();\n        }\n\n        public override void InitDrawTechniques()\n        {\n            InitDrawTechniques(MyMeshDrawTechnique.MESH);\n        }\n\n        public static void CreateExplosionDebris(ref BoundingSphere explosionSphere, MyGroupMask groupMask, MyEntity entity, MyVoxelMap voxelMap)\n        {\n            CreateExplosionDebris(ref explosionSphere, groupMask, entity, voxelMap, ref entity.GetModelLod0().BoundingBox);\n        }\n\n        public static void CreateExplosionDebris(ref BoundingSphere explosionSphere, MyGroupMask groupMask, MyEntity entity, MyVoxelMap voxelMap, ref BoundingBox bb)\n        {\n            //  Number of debris is random, but not more than size of the offset array\n            float scaleMul = explosionSphere.Radius / 4.0f;\n\n            GeneratePositions(bb);\n\n            foreach (Vector3 positionInLocalSpace in m_positions)\n            {\n                var positionInWorldSpace = Vector3.Transform(positionInLocalSpace, entity.WorldMatrix);\n\n                MyExplosionDebrisModel newObj = m_objectPool.Allocate(true);\n\n                if (newObj == null) continue;\n\n                //  Check if new object won't intersect any existing triangle - because if yes, then it will decrease JLX performace a lot\n                float randomNewScale = MyMwcUtils.GetRandomFloat(scaleMul / 4, scaleMul);\n                var sphere = new BoundingSphere(positionInWorldSpace, newObj.m_modelLod0.BoundingSphere.Radius * randomNewScale);\n\n                MyEntity myEntitiesGetIntersectionWithSphere = MyEntities.GetIntersectionWithSphere(ref sphere);\n                if ((myEntitiesGetIntersectionWithSphere == null || myEntitiesGetIntersectionWithSphere == entity) && (voxelMap == null || !voxelMap.DoOverlapSphereTest(sphere.Radius, sphere.Center)))\n                {\n                    if (Vector3.DistanceSquared(positionInWorldSpace, explosionSphere.Center) > MyMwcMathConstants.EPSILON_SQUARED)\n                    {\n                        newObj.Start(positionInWorldSpace, randomNewScale, groupMask, true);\n                    newObj.Physics.LinearVelocity = GetDirection(positionInWorldSpace, explosionSphere.Center) * MyExplosionsConstants.EXPLOSION_DEBRIS_SPEED;\n                    MyEntities.Add(newObj);\n\n                        if (MyExplosion.DEBUG_EXPLOSIONS)\n                            m_debugVoxelSpheres.Add(sphere);\n                    }\n                }\n                else\n                {\n                    // Put back to object pool\n                    newObj.Close();\n                }\n            }\n        }\n\n        private static Vector3 GetDirection(Vector3 position, Vector3 sphereCenter)\n        {\n            Vector3 dist = position - sphereCenter;\n            if (MyUtils.IsValid(dist) && MyMwcUtils.HasValidLength(dist))\n            {\n                return Vector3.Normalize(dist);\n            }\n            else\n            {\n                return MyMwcUtils.GetRandomVector3Normalized();\n            }\n        }\n\n        private static void GeneratePositions(BoundingBox boundingBox)\n        {\n            m_positions.Clear();\n\n            Vector3 minMax = boundingBox.Max - boundingBox.Min;\n            float product = minMax.X * minMax.Y * minMax.Z;\n\n            float a3 = MyExplosionsConstants.APPROX_NUMBER_OF_DEBRIS_OBJECTS_PER_MODEL_EXPLOSION / product;\n\n            float a = (float)Math.Pow(a3, 1f / 3.0f);\n\n            Vector3 minMaxScaled = minMax * a;\n\n            int maxX = (int)Math.Ceiling(minMaxScaled.X);\n            int maxY = (int)Math.Ceiling(minMaxScaled.Y);\n            int maxZ = (int)Math.Ceiling(minMaxScaled.Z);\n\n            Vector3 offset = new Vector3(minMax.X / maxX, minMax.Y / maxY, minMax.Z / maxZ);\n\n            Vector3 origin = boundingBox.Min + 0.5f * offset;\n\n            for (int x = 0; x < maxX; x++)\n            {\n                for (int y = 0; y < maxY; y++)\n                {\n                    for (int z = 0; z < maxZ; z++)\n                    {\n                        Vector3 pos = origin + new Vector3(x * offset.X, y * offset.Y, z * offset.Z);\n\n                        //  Phys object created near/inside the external 'explosion force' are making JLX freeze, so we don't create debris too close to the center of explosion\n                        if (Vector3.Distance(pos, Vector3.Zero) >= MyConstants.SAFE_DISTANCE_FOR_ADD_WORLD_FORCE_JLX)\n                        {\n                            m_positions.Add(pos);\n                        }\n                    }\n                }\n            }\n        }\n\n        internal static void LoadData()\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyExplosionDebrisModel.LoadData\");\n\n            MyMwcLog.WriteLine(\"MyExplosionDebrisModel.LoadData() - START\");\n            MyMwcLog.IncreaseIndent();\n\n            PreallocateObjects();\n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyExplosionDebrisModel.LoadData() - END\");\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        public static void UnloadData() \n        {\n        }\n\n        static void PreallocateObjects()\n        {\n            if (m_objectPool == null)\n                m_objectPool = new MyObjectsPool<MyExplosionDebrisModel>(MyExplosionsConstants.MAX_EXPLOSION_DEBRIS_OBJECTS);\n            m_objectPool.DeallocateAll();\n            \n            List<MyRBElementDesc> collisionPrimitives = new List<MyRBElementDesc>();\n\n            MyPhysicsObjects physobj = MyPhysics.physicsSystem.GetPhysicsObjects();\n            MyRBSphereElementDesc sphereDesc = physobj.GetRBSphereElementDesc();\n            sphereDesc.SetToDefault();\n            sphereDesc.m_RBMaterial = MyMaterialsConstants.GetMaterialProperties(MODEL_DEBRIS_MATERIAL_TYPE).PhysicsMaterial;\n\n            collisionPrimitives.Add(sphereDesc);\n\n            int counter = 0;\n            foreach (var item in m_objectPool.GetPreallocatedItemsArray())\n            {\n                MyModelsEnum modelEnum = (MyModelsEnum)((int)MyModelsEnum.Debris1 + counter % 31);\n                MyModel model = MyModels.GetModelOnlyData(modelEnum);\n                BoundingSphere boundingSphere = model.BoundingSphere;\n\n                sphereDesc.m_Radius = boundingSphere.Radius;\n                sphereDesc.m_Matrix.Translation = boundingSphere.Center;\n\n                item.Value.Init(collisionPrimitives, modelEnum);\n                counter++;\n            }     \n        }\n\n        public override bool DebugDraw()\n        {\n            foreach (BoundingSphere sphere in m_debugVoxelSpheres)\n            {\n                MyDebugDraw.DrawSphereWireframe(sphere.Center, sphere.Radius, Color.Green.ToVector3(), 1);\n            }\n            return base.DebugDraw();\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Debris/MyExplosionDebrisVoxel.cs",
    "content": "﻿using System.Diagnostics;\nusing MinerWars.CommonLIB.AppCode.Generics;\nusing MinerWars.AppCode.Physics;\nusing MinerWars.AppCode.Game.Physics;\n\nnamespace MinerWars.AppCode.Game.Entities\n{\n    using System.Collections.Generic;\n    using CommonLIB.AppCode.Networking;\n    using CommonLIB.AppCode.Utils;\n    using MinerWarsMath;\n    using Models;\n    using SysUtils.Utils;\n    using Utils;\n    \n    using KeenSoftwareHouse.Library.Trace;\n    using MinerWars.AppCode.Game.Render;\n    using MinerWars.CommonLIB.AppCode.Import;\n\n\n    /// <summary>\n    /// This class has two functions: it encapsulated one instance of voxel debris object, and also holds static prepared/preallocated \n    /// object pool for those instances - and if needed adds them to main phys objects collection for short life.\n    /// It's because initializing JLX object is slow and we don't want to initialize 20 (or so) objects for every explosion.\n    /// </summary>\n    class MyExplosionDebrisVoxel : MyExplosionDebrisBase\n    {\n        class MyPositionOffsetGroup\n        {\n            public BoundingBox LocalBoundingBox;\n            public List<Vector3> Positions;\n\n            public MyPositionOffsetGroup(BoundingBox localBoundingBox)\n            {\n                LocalBoundingBox = localBoundingBox;\n                Positions = new List<Vector3>();\n            }\n        }\n\n        //  Number of debris objects in one line / row / column\n        const int EXPLOSION_DEBRIS_OFFSET_COUNT = 3;\n\n        const MyModelsEnum VOXEL_DEBRIS_MODEL_ENUM = MyModelsEnum.ExplosionDebrisVoxel;\n\n        public static float DebrisScaleLower = 0.0068f; // In size of explosion\n        public static float DebrisScaleUpper = 0.0155f; // In size of explosion\n        public static float DebrisScaleClamp = 0.5f; // Max size is half size of model\n\n        static MyObjectsPool<MyExplosionDebrisVoxel> m_objectPool = null;\n\n        //  Per-debris object randomization parameters, they influence how debris looks when rendered\n        float m_randomizedTextureCoordRandomPositionOffset;\n        float m_randomizedTextureCoordScale;\n\n        // List of precalculated position offsets of individual pieces of debris (relative to center of explosion)\n        protected static List<Vector3> m_positionOffsets;\n\n        //private const int POSITION_GROUPS_COUNT = 2;\n        //private const float POSITION_GROUPS_SPACE = EXPLOSION_DEBRIS_OFFSET_SIZE / (float)(POSITION_GROUPS_COUNT - 1);\n        //private static List<MyPositionOffsetGroup> m_positionOffsetGroups;\n\n        static List<BoundingSphere> m_debugVoxelSpheres = new List<BoundingSphere>();\n\n\n        public virtual void Init(List<MyRBElementDesc> collisionPrimitives)\n        {\n            float randomSize = MyMwcUtils.GetRandomFloat(0, 1);\n            float mass = MathHelper.Lerp(2400, 3700, randomSize);     //  The mass can't be too low, because then debris objects are too fast. This values aren't real, but works.\n            mass /= 2.0f;\n\n            base.Init(VOXEL_DEBRIS_MODEL_ENUM, null, MyMaterialType.ROCK, 1.0f, collisionPrimitives, mass);\n            this.Physics.MaxLinearVelocity = 200.0f;//added  0001003: Bug A - pool (7-8 Missile Basic)\n\n            this.Physics.CollisionLayer = MyConstants.COLLISION_LAYER_VOXEL_DEBRIS;\n\n            m_randomizedTextureCoordRandomPositionOffset = MathHelper.Lerp(5, 15, randomSize);\n            m_randomizedTextureCoordScale = MathHelper.Lerp(8f, 12f, randomSize);\n\n            MyModels.OnContentLoaded += InitDrawTechniques;\n        }\n\n        public void Start(Vector3 position, float scale, MyMwcVoxelMaterialsEnum voxelMaterial, MyGroupMask groupMask, bool explosionType)\n        {\n            base.Start(position, scale, groupMask, explosionType);\n\n            if (explosionType)\n            {\n                //apply random rotation impulse\n                base.Physics.AngularVelocity = new Vector3(MyMwcUtils.GetRandomRadian(), MyMwcUtils.GetRandomRadian(), MyMwcUtils.GetRandomRadian()) * 0.7f;\n                if (base.Physics.AngularVelocity.Length() == 0)\n                    Debug.Assert(false);\n\n                if (!Physics.Enabled)\n                    Physics.Enabled = true;\n\n            }\n            else\n            {\n                if (Physics.Enabled)\n                    Physics.Enabled = false;\n            }\n\n            VoxelMaterial = voxelMaterial;\n\n            InitDrawTechniques();\n\n            RenderObjects[0].NeedsResolveCastShadow = true;\n            RenderObjects[0].FastCastShadowResolve = true;\n        }\n\n        public override void InitDrawTechniques()\n        {\n            InitDrawTechniques(MyMeshDrawTechnique.VOXELS_DEBRIS);\n        }\n\n        public float GetRandomizedTextureCoordRandomPositionOffset()\n        {\n            return m_randomizedTextureCoordRandomPositionOffset;\n        }\n\n        public float GetRandomizedTextureCoordScale()\n        {\n            return m_randomizedTextureCoordScale;\n        }\n\n        //  This method must be called when this object dies or is removed\n        //  E.g. it removes lights, sounds, etc\n        public override void Close()\n        {\n            MyModels.OnContentLoaded -= InitDrawTechniques;\n            m_objectPool.Deallocate(this);\n            base.Close();\n        }\n\n        public static void LoadData()\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyExplosionDebrisVoxel.LoadData\");\n\n            MyMwcLog.WriteLine(\"MyExplosionDebrisVoxel.LoadData() - START\");\n            MyMwcLog.IncreaseIndent();\n\n            PreallocatePositionOffsets();\n            PreallocateObjects();\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyExplosionDebrisVoxel.LoadData() - END\");\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        public static void UnloadData()\n        {\n        }\n\n        static void PreallocateObjects()\n        {\n            if (m_objectPool == null)\n                m_objectPool = new MyObjectsPool<MyExplosionDebrisVoxel>(MyExplosionsConstants.MAX_EXPLOSION_DEBRIS_OBJECTS);\n            m_objectPool.DeallocateAll();\n\n            //  This collision primitive is used by every instance of this class\n            MyModel model = MyModels.GetModelOnlyData(VOXEL_DEBRIS_MODEL_ENUM);\n            BoundingSphere boundingSphere = model.BoundingSphere;\n            List<MyRBElementDesc> collisionPrimitives = new List<MyRBElementDesc>();\n\n            MyPhysicsObjects physobj = MyPhysics.physicsSystem.GetPhysicsObjects();\n            MyRBSphereElementDesc sphereDesc = physobj.GetRBSphereElementDesc();\n            MyMaterialType materialType = MyMaterialType.ROCK;\n            sphereDesc.SetToDefault();\n            sphereDesc.m_RBMaterial = MyMaterialsConstants.GetMaterialProperties(materialType).PhysicsMaterial;\n            sphereDesc.m_Radius = boundingSphere.Radius;\n            sphereDesc.m_Matrix.Translation = model.BoundingSphere.Center;\n\n            collisionPrimitives.Add(sphereDesc);\n\n\n            int counter = 0;\n            foreach (LinkedListNode<MyExplosionDebrisVoxel> item in m_objectPool.GetPreallocatedItemsArray())\n            {\n                item.Value.Init(collisionPrimitives);\n                counter++;\n            }\n        }\n\n        //  Prepare offset positions for explosion debris voxels\n        protected static void PreallocatePositionOffsets()\n        {\n            //Vector3 origin = new Vector3(-EXPLOSION_DEBRIS_OFFSET_SIZE / 2, -EXPLOSION_DEBRIS_OFFSET_SIZE / 2, -EXPLOSION_DEBRIS_OFFSET_SIZE / 2);\n            const float normalizedSize = 0.7f; // This should be 1, but we need to take into account size of debris, size of debris is 30% of explosion radius at max\n            Vector3 origin = new Vector3(-normalizedSize);\n\n            const float spacing = normalizedSize * 2.0f / (EXPLOSION_DEBRIS_OFFSET_COUNT - 1); // calculate spacing between debris (from -1 to 1)\n\n            m_positionOffsets = new List<Vector3>(EXPLOSION_DEBRIS_OFFSET_COUNT * EXPLOSION_DEBRIS_OFFSET_COUNT * EXPLOSION_DEBRIS_OFFSET_COUNT);\n            for (int x = 0; x < EXPLOSION_DEBRIS_OFFSET_COUNT; x++)\n            {\n                for (int y = 0; y < EXPLOSION_DEBRIS_OFFSET_COUNT; y++)\n                {\n                    for (int z = 0; z < EXPLOSION_DEBRIS_OFFSET_COUNT; z++)\n                    {\n                        Vector3 pos = origin + new Vector3(x * spacing, y * spacing, z * spacing);\n\n                        //  Phys object created near/inside the external 'explosion force' are making JLX freeze, so we don't create debris too close to the center of explosion\n                        if (Vector3.Distance(pos, Vector3.Zero) >= MyConstants.SAFE_DISTANCE_FOR_ADD_WORLD_FORCE_JLX)\n                        {\n                            m_positionOffsets.Add(pos);\n                        }\n                    }\n                }\n            }\n        }\n\n        static Vector3 GetRandomScale(float randomSize)\n        {\n            float basisScale = MathHelper.Lerp(0.3f, 0.7f, randomSize);\n            Vector3 ret = new Vector3(basisScale + MyMwcUtils.GetRandomFloat(-0.1f, +0.1f), basisScale + MyMwcUtils.GetRandomFloat(-0.1f, +0.1f), basisScale + MyMwcUtils.GetRandomFloat(-0.1f, +0.1f));\n            ret.X = MathHelper.Clamp(ret.X, 0, 1);\n            ret.Y = MathHelper.Clamp(ret.Y, 0, 1);\n            ret.Z = MathHelper.Clamp(ret.Z, 0, 1);\n            return ret;\n        }\n\n        public static void CreateExplosionDebris(ref BoundingSphere explosionSphere, float voxelsCountInPercent, MyMwcVoxelMaterialsEnum voxelMaterial, MyGroupMask groupMask, MyVoxelMap voxelMap)\n        {\n            MyCommonDebugUtils.AssertDebug((voxelsCountInPercent >= 0.0f) && (voxelsCountInPercent <= 1.0f));\n            MyCommonDebugUtils.AssertDebug(explosionSphere.Radius > 0);\n\n            Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"CreateExplosionDebris\");\n\n            Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Matrices\");\n\n            //  This matrix will rotate all newly created debrises, so they won't apper as alligned with coordinate system\n            Matrix randomRotationMatrix = Matrix.CreateRotationX(MyMwcUtils.GetRandomRadian()) * Matrix.CreateRotationY(MyMwcUtils.GetRandomRadian());\n\n            float highScale = MathHelper.Clamp(explosionSphere.Radius * DebrisScaleUpper, 0, DebrisScaleClamp);\n            float lowScale = highScale * (DebrisScaleLower / DebrisScaleUpper);\n\n            int objectsToGenerate = (int)(m_positionOffsets.Count * voxelsCountInPercent * MyRenderConstants.RenderQualityProfile.ExplosionDebrisCountMultiplier);\n\n            long dbgObjectsGenerated = 0;\n\n            Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"m_positionOffsets\");\n\n            for (int i = 0; i < m_positionOffsets.Count; i++)\n            {\n                //  IMPORTANT: If you place explosion debris exactly in the center of an explosion, JLX will fail or end in endless loop\n                //  Probably it's because it can't handle external force acting from inside the object.\n                if (dbgObjectsGenerated >= objectsToGenerate)\n                    break;\n\n                const float cubeInsideSphereMod = 1 / 1.73f; // Resize sphere to fit inside cube\n\n                Vector3 position = m_positionOffsets[i] * explosionSphere.Radius * cubeInsideSphereMod;\n                Vector3.Transform(ref position, ref randomRotationMatrix, out position);\n                position += explosionSphere.Center;\n\n                MyExplosionDebrisVoxel newObj = Allocate();\n\n                if (newObj != null)\n                {\n                    //  Check if new object won't intersect any existing triangle - because if yes, then it will decrease JLX performace a lot\n                    float randomNewScale = MyMwcUtils.GetRandomFloat(lowScale, highScale);\n                    BoundingSphere sphere = new BoundingSphere(position, newObj.m_modelLod0.BoundingSphere.Radius * randomNewScale);\n\n                    Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"GetIntersectionWithSphere\");\n\n                  //This takes 4-5ms, is it necessary?  \n                   // if (MyEntities.GetIntersectionWithSphere(ref sphere) == null)\n                    //if (false)\n                    {\n                        Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"newObj.Start\");\n                        newObj.Start(position, randomNewScale, voxelMaterial, groupMask, true);\n                        MyEntities.Add(newObj);\n                        Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n                        /*\n                        Vector3 imp = position - explosionSphere.Center;\n                        imp.Normalize();\n                        imp *= MyExplosionsConstants.EXPLOSION_STRENGTH_IMPULSE;\n\n                        newObj.Physics.AddForce(PhysicsManager.Physics.MyPhysicsForceType.APPLY_WORLD_IMPULSE_AND_WORLD_ANGULAR_IMPULSE, imp, explosionSphere.Center, Vector3.Zero);\n                          */\n                        if (MinerWars.AppCode.Game.Explosions.MyExplosion.DEBUG_EXPLOSIONS)\n                            m_debugVoxelSpheres.Add(sphere);\n\n                        dbgObjectsGenerated++;\n                    }\n                    //else\n                    {\n                        //  Put back to object pool\n                        //newObj.Close();\n                    }\n\n                    Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n                    //if (newObj.Physics.Enabled)\n                    //  newObj.Physics.Enabled = false;\n                    // newObj.Physics.CollisionLayer = MyConstants.COLLISION_LAYER_UNCOLLIDABLE;\n                }\n            }\n\n            Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        public static MyExplosionDebrisVoxel Allocate()\n        {\n            return m_objectPool.Allocate(true);\n        }\n\n        public override bool DebugDraw()\n        {\n            foreach (BoundingSphere sphere in m_debugVoxelSpheres)\n            {\n                MyDebugDraw.DrawSphereWireframe(sphere.Center, sphere.Radius, Color.Green.ToVector3(), 1);\n            }\n            return base.DebugDraw();\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Debris/MyLargeDebrisField.cs",
    "content": "﻿using MinerWars.AppCode.Physics;\nusing MinerWars.AppCode.Game.Physics;\n\nnamespace MinerWars.AppCode.Game.Entities\n{\n    using System.Text;\n    using CommonLIB.AppCode.ObjectBuilders.Object3D;\n    using MinerWarsMath;\n    using Models;\n    using SysUtils.Utils;\n    using Utils;\n\n    class MyLargeDebrisField : MyEntity\n    {\n        public virtual void Init(string hudLabelText, MyMwcObjectBuilder_LargeDebrisField objectBuilder, Matrix matrix)\n        {\n            switch (objectBuilder.DebrisType)\n            {\n                case MyMwcObjectBuilder_LargeDebrisField_TypesEnum.Debris84:\n                    InitDebris(hudLabelText, MyModelsEnum.DebrisField, null, MyMaterialType.METAL, objectBuilder, matrix);\n                    break;\n                default:\n                    throw new MyMwcExceptionApplicationShouldNotGetHere();\n            }\n            Save = false;\n        }\n\n        void InitDebris(string hudLabelText, MyModelsEnum modelLod0Enum, MyModelsEnum? modelLod1Enum, MyMaterialType materialType, MyMwcObjectBuilder_LargeDebrisField objectBuilder, Matrix matrix)\n        {\n            StringBuilder hudLabelTextSb = (hudLabelText == null) ? null : new StringBuilder(hudLabelText);\n            base.Init(hudLabelTextSb, modelLod0Enum, modelLod1Enum, null, null, objectBuilder);\n\n            MyModel model = MyModels.GetModelOnlyData(modelLod0Enum);\n\n            InitTrianglePhysics(materialType, 1.0f, model, null, enable: false);\n\t\t\tSetWorldMatrix(matrix);            \n        }\n    }\n}\n\n\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Debris/MySmallDebris .cs",
    "content": "﻿using MinerWars.AppCode.Physics;\nusing MinerWars.AppCode.Game.Physics;\n\nnamespace MinerWars.AppCode.Game.Entities\n{\n    using System;\n    using System.Reflection;\n    using System.Runtime.Serialization;\n    using System.Text;\n    using CommonLIB.AppCode.ObjectBuilders.Object3D;\n    using MinerWarsMath;\n    using Models;\n    using SysUtils.Utils;\n    using Utils;\n\n    class MySmallDebris : MyEntity\n    {\n        /// <summary>\n        /// Initializes a new instance of the <see cref=\"MyEntity\"/> class.\n        /// </summary>\n        public MySmallDebris()\n        {\n        }\n\n        /// <summary>\n        /// Initializes a new instance of the <see cref=\"MyEntity\"/> class.\n        /// </summary>\n        public MySmallDebris(string name)\n        {\n            this.Name = name;\n\n            InitDebris(null, MyModelsEnum.Debris1, null, MyMaterialType.METAL, null, Matrix.Identity, 10000);\n            Save = false;\n        }\n\n        public static MyModelsEnum GetModelForType(MyMwcObjectBuilder_SmallDebris_TypesEnum smallDebrisEnum)\n        {\n            switch (smallDebrisEnum)\n            {\n                case MyMwcObjectBuilder_SmallDebris_TypesEnum.Cistern:\n                    return MyModelsEnum.cistern;\n                    break;\n                case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris1:\n                    return MyModelsEnum.Debris1;\n                    break;\n                case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris2:\n                    return MyModelsEnum.Debris2;\n                    break;\n                case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris3:\n                    return MyModelsEnum.Debris3;\n                    break;\n                case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris4:\n                    return MyModelsEnum.Debris4;\n                    break;\n                case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris5:\n                    return MyModelsEnum.Debris5;\n                    break;\n                case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris6:\n                    return MyModelsEnum.Debris6;\n                    break;\n                case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris7:\n                    return MyModelsEnum.Debris7;\n                    break;\n                case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris8:\n                    return MyModelsEnum.Debris8;\n                    break;\n                case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris9:\n                    return MyModelsEnum.Debris9;\n                    break;\n                case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris10:\n                    return MyModelsEnum.Debris10;\n                    break;\n                case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris11:\n                    return MyModelsEnum.Debris11;\n                    break;\n                case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris12:\n                    return MyModelsEnum.Debris12;\n                    break;\n                case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris13:\n                    return MyModelsEnum.Debris13;\n                    break;\n                case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris14:\n                    return MyModelsEnum.Debris14;\n                    break;\n                case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris15:\n                    return MyModelsEnum.Debris15;\n                    break;\n                case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris16:\n                    return MyModelsEnum.Debris16;\n                    break;\n                case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris17:\n                    return MyModelsEnum.Debris17;\n                    break;\n                case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris18:\n                    return MyModelsEnum.Debris18;\n                    break;\n                case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris19:\n                    return MyModelsEnum.Debris19;\n                    break;\n                case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris20:\n                    return MyModelsEnum.Debris20;\n                    break;\n                case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris21:\n                    return MyModelsEnum.Debris21;\n                    break;\n                case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris22:\n                    return MyModelsEnum.Debris22;\n                    break;\n                case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris23:\n                    return MyModelsEnum.Debris23;\n                    break;\n                case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris24:\n                    return MyModelsEnum.Debris24;\n                    break;\n                case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris25:\n                    return MyModelsEnum.Debris25;\n                    break;\n                case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris26:\n                    return MyModelsEnum.Debris26;\n                    break;\n                case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris27:\n                    return MyModelsEnum.Debris27;\n                    break;\n                case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris28:\n                    return MyModelsEnum.Debris28;\n                    break;\n                case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris29:\n                    return MyModelsEnum.Debris29;\n                    break;\n                case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris30:\n                    return MyModelsEnum.Debris30;\n                    break;\n                case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris31:\n                    return MyModelsEnum.Debris31;\n                    break;\n                case MyMwcObjectBuilder_SmallDebris_TypesEnum.pipe_bundle:\n                    return MyModelsEnum.pipe_bundle;\n                    break;\n                case MyMwcObjectBuilder_SmallDebris_TypesEnum.UtilityVehicle_1:\n                    return MyModelsEnum.UtilityVehicle_1;\n                    break;\n                case MyMwcObjectBuilder_SmallDebris_TypesEnum.Standard_Container_1:\n                    return MyModelsEnum.Standard_Container_1;\n                    break;\n                case MyMwcObjectBuilder_SmallDebris_TypesEnum.Standard_Container_2:\n                    return MyModelsEnum.Standard_Container_2;\n                    break;\n                case MyMwcObjectBuilder_SmallDebris_TypesEnum.Standard_Container_3:\n                    return MyModelsEnum.Standard_Container_3;\n                    break;\n                case MyMwcObjectBuilder_SmallDebris_TypesEnum.Standard_Container_4:\n                    return MyModelsEnum.Standard_Container_4;\n                    break;\n                case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris32_pilot:\n                    return MyModelsEnum.Debris32_pilot;\n                    break;\n                default:\n                    throw new MyMwcExceptionApplicationShouldNotGetHere();\n            }\n\n        }\n\n        public virtual void Init(string hudLabelText, MyMwcObjectBuilder_SmallDebris objectBuilder, Matrix matrix)\n        {\n            InitDebris(hudLabelText, GetModelForType(objectBuilder.DebrisType), null, MyMaterialType.METAL, objectBuilder, matrix, objectBuilder.Mass);\n        }\n\n        void InitDebris(string hudLabelText, MyModelsEnum modelLod0Enum, MyModelsEnum? modelLod1Enum, MyMaterialType materialType,\n            MyMwcObjectBuilder_SmallDebris objectBuilder, Matrix matrix, float mass)\n        {\n            StringBuilder hudLabelTextSb = (hudLabelText == null) ? null : new StringBuilder(hudLabelText);\n\n            base.Init(hudLabelTextSb, modelLod0Enum, modelLod1Enum, null, null, objectBuilder);\n\n            if (objectBuilder != null)\n            {\n                SetWorldMatrix(matrix);\n            }\n\n            if (mass > 0)\n            {\n                base.InitBoxPhysics(materialType, this.ModelLod0, mass, 0, MyConstants.COLLISION_LAYER_DEFAULT, RigidBodyFlag.RBF_DEFAULT);\n                this.Physics.PlayCollisionCueEnabled = true;\n            }\n        }\n\n        public override void Close()\n        {\n            base.Close();\n\n            if (this.Physics != null)\n                this.Physics.RemoveAllElements();\n        }\n\n        public override bool IsSelectable()\n        {\n            return false;\n        }\n\n        public override bool IsSelectableAsChild()\n        {\n            return false;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/DummyPoints/MyDummyEffectHelper.cs",
    "content": "﻿using MinerWars.AppCode.Game.Audio;\n\nnamespace MinerWars.AppCode.Game.Entities\n{\n    class MyDummyEffectHelper\n    {\n        public float? DamageStrength { get; set; }\n        public float? DirectionalPushStrength { get; set; }\n        public MySoundCuesEnum? SoundCueEnum { get; set; }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/DummyPoints/MyDummyEffectHelpers.cs",
    "content": "﻿using System.Collections.Generic;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.AppCode.Game.Utils;\n\nnamespace MinerWars.AppCode.Game.Entities\n{\n    static class MyDummyEffectHelpers\n    {\n        static readonly Dictionary<MyParticleEffectsIDEnum, MyDummyEffectHelper> m_dummyEffectHelpers =\n            new Dictionary<MyParticleEffectsIDEnum, MyDummyEffectHelper>();\n\n        static MyDummyEffectHelpers()\n        {\n            m_dummyEffectHelpers.Add(\n                MyParticleEffectsIDEnum.Prefab_LeakingFire,\n                new MyDummyEffectHelper { DamageStrength = 10, SoundCueEnum = MySoundCuesEnum.Amb3D_PrefabFire });\n            m_dummyEffectHelpers.Add(\n                MyParticleEffectsIDEnum.Prefab_LeakingFire_x2,\n                new MyDummyEffectHelper { DamageStrength = 10, SoundCueEnum = MySoundCuesEnum.Amb3D_PrefabFire });\n            m_dummyEffectHelpers.Add(\n                MyParticleEffectsIDEnum.EngineThrust,\n                new MyDummyEffectHelper { DamageStrength = 10, SoundCueEnum = MySoundCuesEnum.Amb3D_EngineThrust });\n\n            m_dummyEffectHelpers.Add(\n                MyParticleEffectsIDEnum.Prefab_LeakingSteamBlack,\n                new MyDummyEffectHelper { DirectionalPushStrength = 1, SoundCueEnum = MySoundCuesEnum.Amb3D_SteamLoop01 });\n            m_dummyEffectHelpers.Add(\n                MyParticleEffectsIDEnum.Prefab_LeakingSteamGrey,\n                new MyDummyEffectHelper { DirectionalPushStrength = 1, SoundCueEnum = MySoundCuesEnum.Amb3D_SteamLoop02 });\n            m_dummyEffectHelpers.Add(\n                MyParticleEffectsIDEnum.Prefab_LeakingSteamWhite,\n                new MyDummyEffectHelper { DirectionalPushStrength = 1, SoundCueEnum = MySoundCuesEnum.Amb3D_SteamLoop03 });\n        }\n\n        public static MyDummyEffectHelper Get(MyParticleEffectsIDEnum particleEffectType)\n        {\n            MyDummyEffectHelper ret;\n            if (m_dummyEffectHelpers.TryGetValue(particleEffectType, out ret))\n            {\n                return ret;\n            }\n\n            return null;\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/DummyPoints/MyDummyPoint.cs",
    "content": "﻿#region Using\n\nusing System;\nusing System.Collections.Generic;\nusing System.Text;\nusing MinerWarsMath;\n\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.AppCode.Game.Gameplay;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.Entities.WayPoints;\nusing MinerWars.AppCode.Game.Physics;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Physics;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing System.Diagnostics;\nusing MinerWars.AppCode.Game.TransparentGeometry.Particles;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.AppCode.Game.Missions;\nusing MinerWars.AppCode.Game.HUD;\nusing MinerWars.AppCode.Game.Render;\nusing MinerWars.AppCode.Physics.Collisions;\nusing MinerWars.AppCode.Game.World.Global;\n\n#endregion\n\n\nnamespace MinerWars.AppCode.Game.Entities\n{\n    class MyDummyPoint : MyEntity\n    {\n        #region Members\n\n        MyDummyPointFlags m_dummyFlags;\n        MyDummyPointType m_type;\n        Vector3 m_size;\n        Vector4 m_color;\n        float m_argument;\n\n        MyDummyEffectHelper m_effectHelper;\n        MySoundCue? m_cue;\n\n        BoundingBox m_particleAABB = MyMath.CreateInvalidAABB();\n\n        /// <summary>\n        /// This is only used internally for gameplay properties of the particle effect.\n        /// </summary>\n        private MyEntityDetector m_smallShipDetector;\n\n        public MyTransparentMaterialEnum? LineMaterial = null;\n        public MyTransparentMaterialEnum? FaceMaterial = null;\n\n        public uint Tag;\n\n        #endregion\n\n        #region Init\n\n\n        public MyDummyPoint()\n            : base(true)\n        {\n        }\n\n        public virtual void Init(string hudLabelText, MyMwcObjectBuilder_DummyPoint objectBuilder, Matrix matrix)\n        {\n            StringBuilder hudLabelTextSb = (hudLabelText == null) ? null : new StringBuilder(hudLabelText);\n            base.Init(hudLabelTextSb, objectBuilder);\n\n            Type = objectBuilder.Type;\n            Size = objectBuilder.Size;\n\n            Flags |= EntityFlags.EditableInEditor;\n\n            DummyFlags = objectBuilder.DummyFlags;\n            CastShadows = false;\n\n            if (Type == MyDummyPointType.Sphere)\n                Radius = Size.X / 2.0f;\n\n            SetWorldMatrix(matrix);\n\n            Color = objectBuilder.Color.ToVector4();\n            Argument = objectBuilder.Argument;\n\n            RespawnPointFaction = objectBuilder.RespawnPointFaction;\n\n            RefreshParticleEffect();\n\n            foreach (MyRenderObject ro in RenderObjects)\n            {\n                ro.SkipIfTooSmall = false;\n            }\n\n            StartEffect();\n        }\n\n        #endregion\n\n        public void StartEffect()\n        {\n            if ((DummyFlags & MyDummyPointFlags.PARTICLE) != 0)\n            {\n                ParticleEffect = MyParticlesManager.CreateParticleEffect((int)ParticleID, true);\n                ParticleEffect.WorldMatrix = WorldMatrix;\n                ParticleEffect.UserRadiusMultiplier = 1.0f;\n                ParticleEffect.UserScale = UserScale;\n\n                RefreshParticleSound();\n            }\n        }\n\n        void StartParticleSound()\n        {\n            var effectShouldEmitSound = Enabled && m_effectHelper != null && m_effectHelper.SoundCueEnum.HasValue;\n            var effectCurrentlyEmittingSound = m_cue.HasValue && m_cue.Value.IsPlaying;\n            if (effectShouldEmitSound && !effectCurrentlyEmittingSound)\n            {\n                m_cue = MyAudio.AddCue3D(\n                    m_effectHelper.SoundCueEnum.Value,\n                    WorldMatrix.Translation,\n                    WorldMatrix.Forward,\n                    WorldMatrix.Up,\n                    Vector3.Zero);\n            }\n        }\n\n        public void StopEffect()\n        {\n            if (ParticleEffect != null)\n            {\n                MyParticlesManager.RemoveParticleEffect(ParticleEffect);\n                ParticleEffect = null;\n            }\n\n            RefreshParticleSound();\n        }\n\n        void StopParticleSound()\n        {\n            if (m_cue.HasValue)\n            {\n                m_cue.Value.Stop(SharpDX.XACT3.StopFlags.Release);\n            }\n        }\n\n        public void RestartEffect()\n        {\n            StopEffect();\n            StartEffect();\n        }\n\n        public override void UpdateBeforeSimulation()\n        {\n            //We dont want to update every frame because of this\n            //Visible = IsDummyVisible();\n\n            base.UpdateBeforeSimulation();\n\n            if ((DummyFlags & MyDummyPointFlags.PARTICLE) != 0 && \n                ParticleEffect == null && \n                //MyGuiScreenGamePlay.Static.IsGameActive() && \n                (PersistentFlags & MyPersistentEntityFlags.Enabled) > 0)\n            {\n                StartEffect();\n            }\n\n            if (ParticleEffect != null &&\n                //((MyGuiScreenGamePlay.Static.IsEditorActive() && !MyGuiScreenGamePlay.Static.IsIngameEditorActive()) || \n                (DummyFlags & MyDummyPointFlags.PARTICLE) == 0)\n            {\n                StopEffect();\n            }\n\n            if (m_cue != null && m_cue.Value.IsPlaying)\n            {\n                MyAudio.UpdateCuePosition(m_cue, WorldMatrix.Translation, WorldMatrix.Forward, WorldMatrix.Up, Vector3.Zero);\n            }\n\n            if (DoesParticleEffectNeedDetector())\n            {\n                RefreshParticleSound();\n\n                if (m_smallShipDetector == null)\n                {\n                    RefreshParticleEffect();\n                }\n\n                foreach (var detectedEntityPair in m_smallShipDetector.GetDetectedEntities())\n                {\n                    var detectedSmallShip = (MySmallShip)detectedEntityPair.Key;\n\n                    float distance = Vector3.Distance(detectedSmallShip.GetPosition(), this.GetPosition());\n                    float influenceStrength = MathHelper.Clamp((m_smallShipDetector.Radius - distance) / m_smallShipDetector.Radius, 0f, 1f);\n\n                    if (m_effectHelper.DamageStrength.HasValue)\n                    {\n                        DamageShip(detectedSmallShip, influenceStrength);\n                    }\n\n                    if (m_effectHelper.DirectionalPushStrength.HasValue)\n                    {\n                        PushShip(detectedSmallShip, distance, influenceStrength);\n                    }\n                }\n            }\n        }\n\n        void RefreshParticleSound()\n        {\n            if (DummyIsTooFarAway())\n            {\n                StopParticleSound();\n            }\n            else\n            {\n                StartParticleSound();\n            }\n        }\n\n        bool DummyIsTooFarAway()\n        {\n            return Vector3.DistanceSquared(MyCamera.Position, this.GetPosition()) > MyDummyPointConstants.MAX_SOUND_DISTANCE_SQUARED;\n        }\n\n        void DamageShip(MySmallShip detectedEntity, float influenceStrength)\n        {\n            Debug.Assert(m_effectHelper.DamageStrength != null);\n            var damageAmount = m_effectHelper.DamageStrength.Value * influenceStrength;\n\n            detectedEntity.DoDamage(0, damageAmount * MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS, 0, MyDamageType.Unknown, MyAmmoType.None, this);\n        }\n\n        void PushShip(MySmallShip detectedEntity, float distance, float influenceStrength)\n        {\n            var direction = detectedEntity.GetPosition() - this.GetPosition();\n            var directionNormalized = (1 / distance) * direction;\n            float alignment = Vector3.Dot(directionNormalized, WorldMatrix.Up);\n\n            alignment = MathHelper.Clamp(alignment, 0, 1);\n            alignment = alignment * alignment * alignment;\n\n            Debug.Assert(m_effectHelper.DirectionalPushStrength != null);\n            detectedEntity.Physics.AddForce(\n                MyPhysicsForceType.APPLY_WORLD_IMPULSE_AND_WORLD_ANGULAR_IMPULSE,\n                MyDummyPointConstants.PUSH_STRENGTH * m_effectHelper.DirectionalPushStrength.Value *\n                alignment * influenceStrength * directionNormalized,\n                detectedEntity.GetPosition(),\n                Vector3.Zero);\n\n            detectedEntity.IncreaseHeadShake(MyHeadShakeConstants.HEAD_SHAKE_AMOUNT_AFTER_SMOKE_PUSH * alignment * influenceStrength);\n        }\n\n        bool IsDummyVisible()\n        {\n            if (!IsVisible()) return false;\n\n            switch (DummyFlags)\n            {\n                case MyDummyPointFlags.SAFE_AREA: if (MyEntities.SafeAreasHidden) return false; break;\n                case MyDummyPointFlags.DETECTOR: if (MyEntities.DetectorsHidden) return false; break;\n                case MyDummyPointFlags.PARTICLE: if (MyEntities.ParticleEffectsHidden) return false; break;\n                case MyDummyPointFlags.VOXEL_HAND: return true; break;\n                default: break;\n            }\n\n            return ((MyGuiScreenGamePlay.Static.IsEditorActive() && !MyGuiScreenGamePlay.Static.IsIngameEditorActive()) ||\n                (MyGuiScreenGamePlay.Static.IsGameActive() && (DummyFlags & MyDummyPointFlags.COLOR_AREA) > 0));\n        }\n\n        public override bool IsSelectable()\n        {\n            switch (DummyFlags)\n            {\n                case MyDummyPointFlags.SAFE_AREA: if (!MyEntities.SafeAreasSelectable) return false; break;\n                case MyDummyPointFlags.DETECTOR: if (!MyEntities.DetectorsSelectable) return false; break;\n                case MyDummyPointFlags.PARTICLE: if (!MyEntities.ParticleEffectsSelectable) return false; break;\n                default: break;\n            }\n\n            return base.IsSelectable();\n        }\n\n        public bool CanSurvivePrefabDestruction()\n        {\n            return (DummyFlags & MyDummyPointFlags.SURIVE_PREFAB_DESTRUCTION) > 0;\n        }\n\n        public override void UpdateHudMarker(bool enableReset = false)\n        {\n            if (MyMissions.IsMissionEntity(this))\n            {\n                base.SetHudMarker();\n            }\n            else \n            {\n                MyHud.RemoveText(this);\n            }\n        }\n\n        #region Draw\n\n        \n\n        public override bool Draw(MyRenderObject renderObject)\n        {\n            if (Render.MyRender.GetCurrentLodDrawPass() == MyLodTypeEnum.LOD0)\n            {\n                if (IsDummyVisible())\n                {\n                    base.Draw(renderObject);\n\n                    Vector4 color;\n                    switch (DummyFlags)\n                    {\n                        case MyDummyPointFlags.NONE: color = new Vector4(0.5f, 0.7f, 0.1f, 0.3f); break;\n                        case MyDummyPointFlags.SAFE_AREA: color = new Vector4(0.2f, 0.3f, 0.22f, 0.1f); break;\n                        case MyDummyPointFlags.DETECTOR: color = new Vector4(0.12f, 0.1f, 0.7f, 0.3f); break;\n                        case MyDummyPointFlags.PARTICLE: color = new Vector4(0.6f, 0.05f, 0.1f, 0.3f); break;\n                        default: color = new Vector4(0.6f, 0.6f, 0.7f, 0.3f); break;\n                    }\n                    if ((DummyFlags & MyDummyPointFlags.COLOR_AREA) != 0)\n                        color = Color;  // color Color areas with their area color (overriding the default color). I like to write \"color\".\n\n                    Matrix worldMatrix = WorldMatrix;\n\n                    if ((int)(DummyFlags & MyDummyPointFlags.TEXTURE_QUAD) > 0)\n                    {\n                        BoundingBox localAABB = LocalAABB;\n                        MySimpleObjectDraw.DrawWireFramedBox(ref worldMatrix, ref localAABB, ref color, 0.01f, 1, LineMaterial);\n\n                        if (!string.IsNullOrEmpty(Name))\n                        {\n                            //var tex = MinerWars.AppCode.Game.Textures.MyTextureManager.GetTexture<MinerWars.AppCode.Game.Textures.MyTexture2D>(Name);\n                            int i = 0;\n                            foreach (MyTransparentMaterialEnum trEnum in Enum.GetValues(typeof(MyTransparentMaterialEnum)))\n                            {\n                                if (MyTransparentMaterialConstants.MyTransparentMaterialStrings[i] == Name)\n                                {\n                                    Vector4 quadColor = Vector4.One;\n                                    MyQuad quad;\n                                    Vector3 position = GetPosition();\n                                    Vector3 zeroPosition = Vector3.Zero;\n\n                                    var texture = MyTransparentGeometry.GetTexture(trEnum);\n                                    float ratio = texture.Height / (float)texture.Width;\n\n                                    MyUtils.GenerateQuad(out quad, ref position, WorldAABB.Size().X * ratio, WorldAABB.Size().X, ref worldMatrix);\n                                    MyTransparentGeometry.AddQuad(trEnum, ref quad, ref quadColor, ref position); \n                                }\n                                i++;\n                            }\n                        }\n                    }\n                    else\n                    {\n                        if (Type == MyDummyPointType.Box)\n                        {\n                            BoundingBox localAABB = LocalAABB;\n                            MySimpleObjectDraw.DrawTransparentBox(ref worldMatrix, ref localAABB, ref color, true, 1, FaceMaterial, LineMaterial);\n                        }\n                        else\n                        {\n                            BoundingSphere localSphere = new BoundingSphere(worldMatrix.Translation, Radius);\n                            MySimpleObjectDraw.DrawTransparentSphere(ref worldMatrix, localSphere.Radius, ref color, true, 12, FaceMaterial, LineMaterial);\n                        }\n                    }\n                }\n\n                if (ParticleEffect != null && IsVisible() && Enabled)\n                {\n                    Vector4 particleColor = Color == Vector4.Zero ? Vector4.One : Color;\n                    ParticleEffect.UserColorMultiplier = particleColor;\n                    ParticleEffect.UserScale = UserScale;\n\n                    UpdateWorldVolume();\n\n                    MyParticlesManager.CustomDraw(ParticleEffect);\n                }\n            }\n\n            return false;\n        }\n\n        protected override void UpdateWorldVolume()\n        {\n            base.UpdateWorldVolume();\n                                \n            if (ParticleEffect != null && IsVisible() && Enabled)\n            {\n                BoundingBox newAABB = BoundingBox.CreateMerged(WorldAABB, ParticleEffect.GetAABB());\n                if (m_particleAABB.Contains(newAABB) != ContainmentType.Contains)\n                {\n                    m_particleAABB = BoundingBox.CreateMerged(m_particleAABB, newAABB);\n                    m_worldAABB = m_particleAABB;\n                    InvalidateRenderObjects(true);\n                }\n            }                    \n        }\n\n        public override bool DebugDraw()\n        {\n            Vector4 color = Vector4.One;\n            Vector3 color2 = Vector3.One;\n            if (ParticleEffect != null && IsVisible() && Enabled)\n            {\n                \n                //MyDebugDraw.DrawAABB(ref m_worldAABB, ref color, 1);\n            }\n\n            if (m_smallShipDetector != null)\n            {\n                MyDebugDraw.DrawSphereWireframe(GetPosition(), m_smallShipDetector.Radius, color2, 1);\n            }\n\n            return base.DebugDraw();\n        }\n\n        public override void DebugDrawDeactivated()\n        {\n            if (Activated || !Visible)\n            {\n                return;\n            }\n\n            Vector3 colorToDraw = MinerWarsMath.Color.Green.ToVector3();\n            float alpha = 1f;\n            if (Type == MyDummyPointType.Box)\n            {                                \n                MyDebugDraw.DrawHiresBoxWireframe(Matrix.CreateScale(LocalAABB.Size()) * WorldMatrix, colorToDraw, alpha);                \n            }\n            else\n            {\n                MyDebugDraw.DrawSphereWireframe(Matrix.CreateScale(Radius) * WorldMatrix, colorToDraw, alpha);\n            }\n        }\n\n        #endregion\n\n        public override bool GetIntersectionWithLine(ref MyLine line, out Vector3? v, bool useCollisionModel = true, IntersectionFlags flags = IntersectionFlags.ALL_TRIANGLES)\n        {\n            v = null;\n            Ray ray = new Ray(line.From, line.Direction);\n            float? ds = null;\n            if (Type == MyDummyPointType.Box)\n            {\n                ds = ray.Intersects(this.WorldAABB);\n            }\n            else if (Type == MyDummyPointType.Sphere)\n            {\n                ds = ray.Intersects(new BoundingSphere(WorldMatrix.Translation, Radius));\n            }\n            \n            if (ds == null)\n                return false;\n            v = line.From + line.Direction * ds;\n            return true;\n        }\n\n        public override bool GetIntersectionWithSphere(ref BoundingSphere sphere)\n        {\n            if (Type == MyDummyPointType.Box)\n            {\n                BoundingBox boundingBox = new BoundingBox(WorldMatrix.Translation - Size, WorldMatrix.Translation + Size);\n                return boundingBox.Intersects(sphere);\n            }\n            else if (Type == MyDummyPointType.Sphere)\n            {\n                BoundingSphere boundingSphere = new BoundingSphere(WorldMatrix.Translation, Radius);\n                return boundingSphere.Intersects(sphere);\n            }\n            \n            return false;\n        }\n\n        protected override MyMwcObjectBuilder_Base GetObjectBuilderInternal(bool getExactCopy)\n        {\n            MyMwcObjectBuilder_DummyPoint objectBuilder = (MyMwcObjectBuilder_DummyPoint)base.GetObjectBuilderInternal(getExactCopy);\n\n            objectBuilder.Type = Type;\n            if (Type == MyDummyPointType.Box)\n            {\n                objectBuilder.Size = Size;\n            }\n            else\n            {\n                objectBuilder.Size = new Vector3(Radius * 2, 1f, 1f);\n            }\n            objectBuilder.DummyFlags = DummyFlags;\n            objectBuilder.Color = new Color(Color);\n            objectBuilder.Argument = Argument;\n            objectBuilder.RespawnPointFaction = RespawnPointFaction;\n\n            return objectBuilder;\n        }\n\n        public MyEntityDetector GetDetector()\n        {\n            return ((DummyFlags & MyDummyPointFlags.DETECTOR) > 0 && Children.Count == 1) ? FindChild(0) as MyEntityDetector : null;\n        }\n\n        public override void OnWorldPositionChanged(object source)\n        {\n            base.OnWorldPositionChanged(source);\n            if (ParticleEffect != null)\n            {\n                ParticleEffect.WorldMatrix = this.WorldMatrix;\n            }\n\n            if (m_cue != null && m_cue.Value.IsPlaying)\n            {\n                MyAudio.UpdateCuePosition(m_cue, WorldMatrix.Translation, WorldMatrix.Forward, WorldMatrix.Up, Vector3.Zero);\n            }\n        }\n\n        #region Properties\n\n        public MyDummyPointType Type\n        {\n            get\n            {\n                return m_type;\n            }\n            set\n            {\n                m_type = value;\n                if (value == MyDummyPointType.Box)\n                    Size = m_size;\n                else\n                    Radius = m_size.X / 2.0f;\n            }\n        }\n\n        public Vector3 Size\n        {\n            get\n            {\n                return m_size;\n            }\n            set\n            {\n                m_size = value;\n                LocalAABB = new BoundingBox(-m_size / 2.0f, m_size / 2.0f);\n            }\n        }\n\n        public float Radius\n        {\n            get\n            {\n                return m_size.X / 2.0f;\n            }\n            set\n            {\n                m_size = new Vector3(value * 2.0f, value * 2.0f, value * 2.0f);\n                LocalVolume = new BoundingSphere(Vector3.Zero, value);\n                m_localAABB = BoundingBox.CreateFromSphere(LocalVolume);\n            }\n        }\n\n        public MyDummyPointFlags DummyFlags\n        {\n            get\n            {\n                return m_dummyFlags;\n            }\n            set\n            {\n                if (m_dummyFlags != value)\n                {\n                    m_dummyFlags = value;\n\n                    if ((DummyFlags & MyDummyPointFlags.PARTICLE) != 0)\n                    {\n                        NeedsUpdate = true;\n                        RefreshParticleEffect();\n                    }\n\n                    if ((DummyFlags & MyDummyPointFlags.DETECTOR) > 0)\n                    {\n                        MyEntityDetector detector = new MyEntityDetector();\n\n                        if (Type == MyDummyPointType.Sphere)\n                        {\n                            detector.Init(null, new MyMwcObjectBuilder_EntityDetector(new Vector3(Radius * 2f, 0f, 0f), MyMwcObjectBuilder_EntityDetector_TypesEnum.Sphere), this, WorldMatrix, new List<IMyEntityDetectorCriterium>());\n                        }\n                        else\n                        {\n                            detector.Init(null, new MyMwcObjectBuilder_EntityDetector(Size, MyMwcObjectBuilder_EntityDetector_TypesEnum.Box), this, WorldMatrix, new List<IMyEntityDetectorCriterium>());\n                        }\n\n                        detector.Save = false;\n                        detector.SetSensorDetectRigidBodyTypes(MyConstants.RIGIDBODY_TYPE_SHIP);\n                    }\n\n                    if ((DummyFlags & MyDummyPointFlags.NOTE) > 0)\n                    {\n                        MyHud.AddText(this, new StringBuilder(Name), MyGuitargetMode.Neutral, 0, MyHudIndicatorFlagsEnum.SHOW_TEXT | MyHudIndicatorFlagsEnum.SHOW_DISTANCE, null, null);\n                    }\n                    else\n                    {\n                        MyHud.RemoveText(this);\n                    }\n                }\n            }\n        }\n\n        private bool DoesParticleEffectNeedDetector()\n        {\n            return (DummyFlags & MyDummyPointFlags.PARTICLE) != 0 && m_effectHelper != null &&\n                   (m_effectHelper.DamageStrength.HasValue || m_effectHelper.DirectionalPushStrength.HasValue) && this.Enabled;\n        }\n\n        public float UserScale\n        {\n            get\n            {\n                float arg = Argument;\n                bool minus = arg < 0;\n                if (minus) arg *= -1;\n                float fraction = (arg - (float)Math.Floor(arg));\n                return ((minus ? fraction : 1 + ( 3 *fraction)));\n            }\n            set\n            {\n                System.Diagnostics.Debug.Assert(value > 0.0f && value < 4.0f);\n\n                Argument = Math.Abs((int)(Argument));\n\n                bool minus = false;\n\n                if (value < 1)\n                {\n                    minus = true;\n                }\n                else\n                    value = (value - 1) / 3;\n\n                value = Math.Abs(value);\n\n                Argument = (Math.Abs(Argument) + value) * (minus ? -1 : 1); \n            }\n        }\n\n        public float ParticleID\n        {\n            get\n            {\n                return (int)Math.Floor(Math.Abs(Argument));\n            }\n            set\n            {\n                bool minus = Argument < 0;\n                float frac = Math.Abs(Argument) - (int)Math.Floor(Math.Abs(Argument));\n                if (frac < 0) frac *= -1;\n                Argument = value;\n\n                Argument += frac;\n                if (minus)\n                    Argument *= -1;\n\n                RefreshParticleEffect();\n\n                RestartEffect();\n            }\n        }\n\n        public MyMwcObjectBuilder_FactionEnum RespawnPointFaction { get; set; }\n\n        void RefreshParticleEffect()\n        {\n            m_effectHelper = MyDummyEffectHelpers.Get((MyParticleEffectsIDEnum) ParticleID);\n\n            if (DoesParticleEffectNeedDetector())\n            {\n                CreateDetectorForParticleEffect();\n            }\n        }\n\n        void CreateDetectorForParticleEffect()\n        {\n            m_smallShipDetector = new MyEntityDetector();\n\n            m_smallShipDetector.Init(\n                null,\n                new MyMwcObjectBuilder_EntityDetector(\n                    new Vector3(MyDummyPointConstants.PARTICLE_DETECTOR_SIZE * UserScale, 0, 0),\n                    MyMwcObjectBuilder_EntityDetector_TypesEnum.Sphere),\n                this,\n                WorldMatrix,\n                new List<IMyEntityDetectorCriterium>());\n\n            m_smallShipDetector.Save = false;\n            m_smallShipDetector.SetSensorDetectRigidBodyTypes(MyConstants.RIGIDBODY_TYPE_SHIP);\n\n            m_smallShipDetector.On();\n        }\n\n\n        public Vector4 Color\n        {\n            get\n            {\n                return m_color;\n            }\n            set\n            {\n                m_color = value;\n            }\n        }\n\n        public float Argument\n        {\n            get { return m_argument; }\n            set { m_argument = value; }\n        }\n\n        public MyParticleEffect ParticleEffect { get; private set; }\n\n        public string SecretRoomName\n        {\n            get \n            {\n                if (DummyFlags == MyDummyPointFlags.DETECTOR && MySecretRooms.SecretRooms.ContainsKey((int)Argument))\n                {\n                    return MySecretRooms.SecretRooms[(int)Argument];\n                }\n                return null;\n            }\n        }\n\n        public override bool Enabled\n        {\n            get\n            {\n                return base.Enabled;\n            }\n            set\n            {\n                if (base.Enabled != value)\n                {\n                    base.Enabled = value;\n\n                    RefreshParticleSound();\n                }\n            }\n        }\n\n        #endregion\n\n        public void DisableParticleEffect()\n        {\n            DummyFlags &= ~MyDummyPointFlags.PARTICLE;\n            StopEffect();\n        }\n\n        public override void Close()\n        {\n            StopParticleSound();\n            StopEffect();\n\n            base.Close();\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Editor/MyVoxelHandBox.cs",
    "content": "﻿namespace MinerWars.AppCode.Game.Entities.VoxelHandShapes\n{\n    using CommonLIB.AppCode.ObjectBuilders;\n    using CommonLIB.AppCode.ObjectBuilders.Voxels;\n    using MinerWarsMath;\n    using Utils;\n    using System;\n    using System.Text;\n\n    // This phys object represents voxel hand shape - SPHERE. Voxel Hand is applied to voxel maps in order to add, subtract, soften voxels or change material.\n    sealed class MyVoxelHandBox : MyVoxelHandShape\n    {\n        public float Size { get; private set; }\n        public float Size2 { get; private set; }\n        public float Size3 { get; private set; }\n        private BoundingBox m_localBoundingBox;\n\n        public void Init(MyMwcObjectBuilder_VoxelHand_Box objectBuilder, MyVoxelMap parentVoxelMap)\n        {\n            base.Init(objectBuilder, parentVoxelMap);\n                                    \n            this.Size = objectBuilder.Size;\n            this.Size2 = objectBuilder.Size2;\n            this.Size3 = objectBuilder.Size3;\n\n            UpdateLocalVolume();\n        }\n\n        protected override MyMwcObjectBuilder_Base GetObjectBuilderInternal(bool getExactCopy)\n        {\n            MyMwcObjectBuilder_VoxelHand_Box objectBuilder = (MyMwcObjectBuilder_VoxelHand_Box)base.GetObjectBuilderInternal(getExactCopy);            \n            objectBuilder.Size = this.Size;\n            objectBuilder.Size2 = this.Size2;\n            objectBuilder.Size3 = this.Size3;\n            return objectBuilder;\n        }\n\n        public override int GetPropertiesCount()\n        {\n            return 3;\n        }\n\n        public override StringBuilder GetPropertyName(int index)\n        {\n            switch (index)\n            {\n                case 0:\n                    return new StringBuilder(\"Width\");\n                    break;\n                case 1:\n                    return new StringBuilder(\"Length\");\n                    break;\n                case 2:\n                    return new StringBuilder(\"Depth\");\n                    break;\n                default:\n                    System.Diagnostics.Debug.Assert(false);\n                    break;\n            }\n\n            return new StringBuilder();\n        }\n\n        public override float GetPropertyValue(int index)\n        {\n            switch (index)\n            {\n                case 0:\n                    return Size;\n                    break;\n                case 1:\n                    return Size2;\n                    break;\n                case 2:\n                    return Size3;\n                    break;\n                default:\n                    System.Diagnostics.Debug.Assert(false);\n                    break;\n            }\n\n            return 0;\n        }\n\n        public override void SetPropertyValue(int index, float value)\n        {\n            switch (index)\n            {\n                case 0:\n                    Size = value;\n                    break;\n                case 1:\n                    Size2 = value;\n                    break;\n                case 2:\n                    Size3 = value;\n                    break;\n                default:\n                    System.Diagnostics.Debug.Assert(false);\n                    break;\n            }\n\n            UpdateLocalVolume();\n        }\n\n        void UpdateLocalVolume()\n        {\n            float halfSize1 = this.Size / 2.0f;\n            float halfSize2 = this.Size2 / 2.0f;\n            float halfSize3 = this.Size3 / 2.0f;\n            this.m_localBoundingBox = new BoundingBox(new Vector3(-halfSize1, -halfSize2, -halfSize3), new Vector3(halfSize1, halfSize2, halfSize3));\n\n            float radius = (float)Math.Sqrt(3) * this.Size;\n            BoundingSphere.CreateFromBoundingBox(ref m_localBoundingBox, out m_localVolume);\n        }\n\n        public override MyVoxelHandShapeType GetShapeType()\n        {\n            return MyVoxelHandShapeType.Box;\n        }\n\n        public override void DrawCone(Vector3 position)\n        {                        \n            MyQuad backQuad;            \n\n            Matrix world = this.WorldMatrix;\n            Vector3 position2 = this.GetPosition() - world.Forward * (this.Size / 2.0f);\n            MyUtils.GenerateQuad(out backQuad, ref position2, this.Size / 2.0f, this.Size / 2.0f, ref world);\n\n            Vector4 vctColor = new Vector4(0.4f, 0.7f, 0.0f, 0.6f);\n            MySimpleObjectDraw.DrawTransparentPyramid(ref position, ref backQuad, ref vctColor, 1, 0.5f);\n        }\n\n        public override void DrawShape()\n        {\n            Vector4 vctColor = new Vector4(0.1f, 0.3f, 0.0f, 0.2f);\n            Matrix world = this.WorldMatrix;\n            BoundingBox localBoundingBox = this.m_localBoundingBox;\n            MySimpleObjectDraw.DrawTransparentBox(ref world, ref localBoundingBox, ref vctColor, true, 1);            \n        }\n\n        public BoundingBox GetLocalBoundingBox() \n        {\n            return this.m_localBoundingBox;\n        }\n\n        public override MyVoxelHandShape CreateCopy()\n        {\n            MyVoxelHandBox newBox = new MyVoxelHandBox();\n            newBox.Init((MyMwcObjectBuilder_VoxelHand_Box)GetObjectBuilderInternal(false), null);\n            newBox.SetWorldMatrix(this.WorldMatrix);\n\n            return newBox;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Editor/MyVoxelHandCuboid.cs",
    "content": "﻿namespace MinerWars.AppCode.Game.Entities.VoxelHandShapes\n{\n    using CommonLIB.AppCode.ObjectBuilders;\n    using CommonLIB.AppCode.ObjectBuilders.Voxels;\n    using MinerWarsMath;\n    using Utils;\n    using System;\n    using System.Text;\n\n    // This phys object represents voxel hand shape - SPHERE. Voxel Hand is applied to voxel maps in order to add, subtract, soften voxels or change material.\n    sealed class MyVoxelHandCuboid : MyVoxelHandShape\n    {        \n        public float Width1 { get; private set; }\n        public float Depth1 { get; private set; }\n        public float Width2 { get; private set; }\n        public float Depth2 { get; private set; }\n        public float Length { get; private set; }        \n\n        private BoundingBox m_localBoundingBox;\n        private MyCuboid m_cuboid = new MyCuboid();\n\n        public void Init(MyMwcObjectBuilder_VoxelHand_Cuboid objectBuilder, MyVoxelMap parentVoxelMap)\n        {\n            base.Init(objectBuilder, parentVoxelMap);\n\n            Width1 = objectBuilder.Width1;\n            Depth1 = objectBuilder.Depth1;\n            Width2 = objectBuilder.Width2;\n            Depth2 = objectBuilder.Depth2;\n            Length = objectBuilder.Length;\n\n            UpdateLocalVolume();\n        }\n\n        protected override MyMwcObjectBuilder_Base GetObjectBuilderInternal(bool getExactCopy)\n        {\n            MyMwcObjectBuilder_VoxelHand_Cuboid objectBuilder = (MyMwcObjectBuilder_VoxelHand_Cuboid)base.GetObjectBuilderInternal(getExactCopy);\n            objectBuilder.Width1 = this.Width1;\n            objectBuilder.Depth1 = this.Depth1;\n            objectBuilder.Width2 = this.Width2;\n            objectBuilder.Depth2 = this.Depth2;\n            objectBuilder.Length = this.Length;\n            return objectBuilder;\n        }       \n\n\n        public override int GetPropertiesCount()\n        {\n            return 5;\n        }\n\n        public override StringBuilder GetPropertyName(int index)\n        {\n            switch (index)\n            {\n                case 0:\n                    return new StringBuilder(\"Width 1\");\n                    break;\n                case 1:\n                    return new StringBuilder(\"Depth 1\");\n                    break;\n                case 2:\n                    return new StringBuilder(\"Width 2\");\n                    break;\n                case 3:\n                    return new StringBuilder(\"Depth 2\");\n                    break;\n                case 4:\n                    return new StringBuilder(\"Length\");\n                    break;\n                default:\n                    System.Diagnostics.Debug.Assert(false);\n                    break;\n            }\n\n            return new StringBuilder();\n        }\n\n        public override float GetPropertyValue(int index)\n        {\n            switch (index)\n            {\n                case 0:\n                    return Width1;\n                    break;\n                case 1:\n                    return Depth1;\n                    break;\n                case 2:\n                    return Width2;\n                    break;\n                case 3:\n                    return Depth2;\n                    break;\n                case 4:\n                    return Length;\n                    break;\n                default:\n                    System.Diagnostics.Debug.Assert(false);\n                    break;\n            }\n\n            return 0;\n        }\n\n        public override void SetPropertyValue(int index, float value)\n        {\n            switch (index)\n            {\n                case 0:\n                    Width1 = value;\n                    break;\n                case 1:\n                    Depth1 = value;\n                    break;\n                case 2:\n                    Width2 = value;\n                    break;\n                case 3:\n                    Depth2 = value;\n                    break;\n                case 4:\n                    Length = value;\n                    break;\n                default:\n                    System.Diagnostics.Debug.Assert(false);\n                    break;\n            }\n\n            UpdateLocalVolume();\n        }\n\n        void UpdateLocalVolume()\n        {\n            m_cuboid.CreateFromSizes(Width1, Depth1, Width2, Depth2, Length);\n            this.m_localBoundingBox = m_cuboid.GetLocalAABB();\n            BoundingSphere.CreateFromBoundingBox(ref m_localBoundingBox, out m_localVolume);\n        }\n\n        public override MyVoxelHandShapeType GetShapeType()\n        {\n            return MyVoxelHandShapeType.Cuboid;\n        }\n\n        public override void DrawCone(Vector3 position)\n        {          /*  \n            MyQuad backQuad;\n\n            Matrix world = this.WorldMatrix;\n            Vector3 position2 = this.GetPosition() - world.Forward * LocalVolume.Radius;\n            MyUtils.GenerateQuad(out backQuad, ref position2, Width1 / 2, this.Length / 2.0f, ref world);\n\n            Vector4 vctColor = new Vector4(0.4f, 0.7f, 0.0f, 0.6f);\n            MySimpleObjectDraw.DrawTransparentPyramid(ref position, ref backQuad, ref vctColor, 1, 0.5f);*/\n        }\n\n        public override void DrawShape()\n        {\n            Vector4 vctColor = new Vector4(0.1f, 0.3f, 0.0f, 2f);\n            Vector4 vctColor2 = new Vector4(1.0f, 0.0f, 0.0f, 10.0f);\n            Matrix world = this.WorldMatrix;\n            \n            \n            \n            MySimpleObjectDraw.DrawTransparentCuboid(ref world, m_cuboid, ref vctColor, true, 2);            \n             \n               /*\n            Vector3 tr = world.Translation;\n\n            Vector3 triTransl = new Vector3(4600, 2380, 3330);\n\n            Vector3 p1 = new Vector3(0, 0, 0);\n            Vector3 p2 = new Vector3(400, 0, 0);\n            Vector3 p3 = new Vector3(400, 0, 400);\n\n          \n\n            Vector3 t1 = p1 + triTransl;\n            Vector3 t2 = p2 + triTransl;\n            Vector3 t3 = p3 + triTransl;\n\n            MySimpleObjectDraw.DrawLine(t1, t2, null, ref vctColor, 1);\n            MySimpleObjectDraw.DrawLine(t2, t3, null, ref vctColor, 1);\n            MySimpleObjectDraw.DrawLine(t3, t1, null, ref vctColor, 1);\n\n            Matrix m = Matrix.CreateWorld(tr, Vector3.Forward, Vector3.Up);\n            MyTriangle_Vertexes tri = new MyTriangle_Vertexes();\n            tri.Vertex0 = t1;\n            tri.Vertex1 = t2;\n            tri.Vertex2 = t3;\n            bool ins = MyUtils.IsPointInTriangle(ref tr, ref tri);\n            if (ins)\n            {\n            }\n            Vector4 clr = ins ? vctColor2 : vctColor;\n            MySimpleObjectDraw.DrawTransparentSphere(ref world, 1.0f, ref clr, false, 8);\n                */\n        }\n\n        public BoundingBox GetLocalBoundingBox()\n        {\n            return this.m_localBoundingBox;\n        }\n\n        public override MyVoxelHandShape CreateCopy()\n        {\n            MyVoxelHandCuboid newCuboid = new MyVoxelHandCuboid();\n            newCuboid.Init((MyMwcObjectBuilder_VoxelHand_Cuboid)GetObjectBuilderInternal(false), null);\n            newCuboid.SetWorldMatrix(this.WorldMatrix);\n\n            return newCuboid;\n        }\n\n        public MyCuboid Cuboid\n        {\n            get { return m_cuboid; }\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Editor/MyVoxelHandCylinder.cs",
    "content": "﻿namespace MinerWars.AppCode.Game.Entities.VoxelHandShapes\n{\n    using CommonLIB.AppCode.ObjectBuilders;\n    using CommonLIB.AppCode.ObjectBuilders.Voxels;\n    using MinerWarsMath;\n    using Utils;\n    using System;\n    using System.Text;\n\n    sealed class MyVoxelHandCylinder : MyVoxelHandShape\n    {        \n        public float Radius1 { get; private set; }\n        public float Radius2 { get; private set; }\n        public float Length { get; set; }\n        private BoundingBox m_localBoundingBox;\n\n        public void Init(MyMwcObjectBuilder_VoxelHand_Cylinder objectBuilder, MyVoxelMap parentVoxelMap)\n        {\n            base.Init(objectBuilder, parentVoxelMap);\n\n            this.Radius1 = objectBuilder.Radius1;\n            this.Radius2 = objectBuilder.Radius2;\n            this.Length = objectBuilder.Length;\n\n            UpdateLocalVolume();\n        }\n\n        protected override MyMwcObjectBuilder_Base GetObjectBuilderInternal(bool getExactCopy)\n        {\n            MyMwcObjectBuilder_VoxelHand_Cylinder objectBuilder = (MyMwcObjectBuilder_VoxelHand_Cylinder)base.GetObjectBuilderInternal(getExactCopy);\n            objectBuilder.Radius1 = this.Radius1;\n            objectBuilder.Radius2 = this.Radius2;\n            objectBuilder.Length = this.Length;\n            return objectBuilder;\n        }       \n\n      \n        private void UpdateLocalVolume()\n        {\n            float maxRadius = Math.Max(Radius1, Radius2);\n            this.LocalVolume = new BoundingSphere(Vector3.Zero, Math.Max(maxRadius, Length / 2));\n\n            this.m_localBoundingBox = new BoundingBox(new Vector3(-maxRadius, -Length / 2, -maxRadius), new Vector3(maxRadius, Length / 2, maxRadius));\n        }\n\n        public override int GetPropertiesCount()\n        {\n            return 3;\n        }\n\n        public override StringBuilder GetPropertyName(int index)\n        {\n            switch (index)\n            {\n                case 0:\n                    return new StringBuilder(\"Radius 1\");\n                    break;\n                case 1:\n                    return new StringBuilder(\"Radius 2\");\n                    break;\n                case 2:\n                    return new StringBuilder(\"Length\");\n                    break;\n                default:\n                    System.Diagnostics.Debug.Assert(false);\n                    break;\n            }\n\n            return new StringBuilder();\n        }\n\n        public override float GetPropertyValue(int index)\n        {\n            switch (index)\n            {\n                case 0:\n                    return Radius1;\n                    break;\n                case 1:\n                    return Radius2;\n                    break;\n                case 2:\n                    return Length;\n                    break;\n                default:\n                    System.Diagnostics.Debug.Assert(false);\n                    break;\n            }\n\n            return 0;\n        }\n\n        public override void SetPropertyValue(int index, float value)\n        {\n            switch (index)\n            {\n                case 0:\n                    Radius1 = value;\n                    break;\n                case 1:\n                    Radius2 = value;\n                    break;\n                case 2:\n                    Length = value;\n                    break;\n                default:\n                    System.Diagnostics.Debug.Assert(false);\n                    break;\n            }\n\n            UpdateLocalVolume();\n        }\n\n        public override MyVoxelHandShapeType GetShapeType()\n        {\n            return MyVoxelHandShapeType.Cylinder;\n        }\n\n        public override void DrawCone(Vector3 position)\n        {            \n            MyQuad backQuad;\n\n            Matrix world = this.WorldMatrix;\n            Vector3 position2 = this.GetPosition() - world.Forward * (Radius1 / 2.0f);\n            MyUtils.GenerateQuad(out backQuad, ref position2, Radius1, this.Length / 2.0f, ref world);\n\n            Vector4 vctColor = new Vector4(0.4f, 0.7f, 0.0f, 0.6f);\n            MySimpleObjectDraw.DrawTransparentPyramid(ref position, ref backQuad, ref vctColor, 1, 0.5f);\n        }\n\n        public override void DrawShape()\n        {\n            Vector4 vctColor = new Vector4(0.1f, 0.3f, 0.0f, 0.2f);\n            Matrix world = this.WorldMatrix;\n            BoundingBox localBoundingBox = this.m_localBoundingBox;\n            MySimpleObjectDraw.DrawTransparentCylinder(ref world, Radius1, Radius2, Length, ref vctColor, true, 32, 1);            \n        }\n\n        public BoundingBox GetLocalBoundingBox()\n        {\n            return this.m_localBoundingBox;\n        }\n\n        public override MyVoxelHandShape CreateCopy()\n        {\n            MyVoxelHandCylinder newCylinder = new MyVoxelHandCylinder();\n            newCylinder.Init((MyMwcObjectBuilder_VoxelHand_Cylinder)GetObjectBuilderInternal(false), null);\n            newCylinder.SetWorldMatrix(this.WorldMatrix);\n\n            return newCylinder;\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Editor/MyVoxelHandShape.cs",
    "content": "﻿namespace MinerWars.AppCode.Game.Entities.VoxelHandShapes\n{\n    using CommonLIB.AppCode.Networking;\n    using CommonLIB.AppCode.ObjectBuilders;\n    using CommonLIB.AppCode.ObjectBuilders.Voxels;\n    using MinerWarsMath;\n    using MinerWars.AppCode.Game.Utils;\n    using MinerWars.AppCode.Game.Render;\n    using System.Text;\n\n    enum MyVoxelHandShapeType : byte\n    {\n        Sphere = 0,\n        Box = 1,\n        Cuboid = 2,\n        Cylinder = 3,\n    }\n\n    // This is the base class for all shapes, that can be applied to voxel maps using voxel hand tool\n    abstract class MyVoxelHandShape : MyEntity\n    {\n        public MyMwcVoxelHandModeTypeEnum ModeType;\n        public MyMwcVoxelMaterialsEnum? Material;        \n        //protected float m_radiusScale;\n\n        public MyVoxelHandShape()\n            : base(false)\n        {\n            Save = false;\n        }\n\n\n        protected virtual void Init(MyMwcObjectBuilder_VoxelHand_Shape objectBuilder, MyVoxelMap parentVoxelMap)\n        {\n            base.Init(null, objectBuilder, parentVoxelMap);\n            ModeType = objectBuilder.VoxelHandModeType;\n            Material = objectBuilder.VoxelHandMaterial;\n\n            SetWorldMatrix(Matrix.CreateWorld(objectBuilder.PositionAndOrientation.Position, objectBuilder.PositionAndOrientation.Forward, objectBuilder.PositionAndOrientation.Up));\n\n            Visible = false;\n        }\n\n        // This method overrides parent draw, that expects that phys object has Model. VoxelHandShape doesnt, so we cant call parent's draw.\n        public override bool Draw(MyRenderObject renderObject = null)\n        {\n            DrawShape();            \n            return true;\n        }\n\n        protected override MyMwcObjectBuilder_Base GetObjectBuilderInternal(bool getExactCopy)\n        {\n            MyMwcObjectBuilder_VoxelHand_Shape objectBuilder = (MyMwcObjectBuilder_VoxelHand_Shape)base.GetObjectBuilderInternal(getExactCopy);\n            objectBuilder.VoxelHandModeType = ModeType;\n            objectBuilder.VoxelHandMaterial = Material;\n            //objectBuilder.m_scale= m_radiusScale;\n            //objectBuilder.Position = GetPosition();\n            objectBuilder.PositionAndOrientation = new MyMwcPositionAndOrientation(WorldMatrix);\n            return objectBuilder;\n        }\n\n        public void SetVoxelProperties(MyMwcVoxelHandModeTypeEnum modeType, MyMwcVoxelMaterialsEnum? materialEnum) \n        {\n            this.ModeType = modeType;\n            this.Material = materialEnum;\n        }\n\n        public abstract int GetPropertiesCount();\n        public abstract void SetPropertyValue(int index, float value);\n        public abstract float GetPropertyValue(int index);\n        public abstract StringBuilder GetPropertyName(int index);\n\n        public abstract MyVoxelHandShapeType GetShapeType();\n        public abstract void DrawCone(Vector3 position);\n        public abstract void DrawShape();\n        public abstract MyVoxelHandShape CreateCopy();\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Editor/MyVoxelHandSphere.cs",
    "content": "﻿namespace MinerWars.AppCode.Game.Entities.VoxelHandShapes\n{\n    using CommonLIB.AppCode.ObjectBuilders;\n    using CommonLIB.AppCode.ObjectBuilders.Voxels;\n    using MinerWarsMath;\n    using Utils;\n    using System;\n    using System.Text;\n\n    // This phys object represents voxel hand shape - SPHERE. Voxel Hand is applied to voxel maps in order to add, subtract, soften voxels or change material.\n    sealed class MyVoxelHandSphere : MyVoxelHandShape\n    {\n        public float Radius { get; private set; }\n        public void Init(MyMwcObjectBuilder_VoxelHand_Sphere objectBuilder, MyVoxelMap parentVoxelMap)\n        {\n            base.Init(objectBuilder, parentVoxelMap);\n            this.Radius = objectBuilder.Radius;\n            UpdateLocalVolume();\n        }\n\n        protected override MyMwcObjectBuilder_Base GetObjectBuilderInternal(bool getExactCopy)\n        {\n            MyMwcObjectBuilder_VoxelHand_Sphere objectBuilder = (MyMwcObjectBuilder_VoxelHand_Sphere)base.GetObjectBuilderInternal(getExactCopy);            \n            objectBuilder.Radius = this.Radius;\n            return objectBuilder;\n        }        \n\n         public override int GetPropertiesCount()\n        {\n            return 1;\n        }\n\n         public override StringBuilder GetPropertyName(int index)\n        {\n            switch (index)\n            {\n                case 0:\n                    return new StringBuilder(\"Radius\");\n                    break;\n                default:\n                    System.Diagnostics.Debug.Assert(false);\n                    break;\n            }\n\n            return new StringBuilder();\n        }\n\n        public override float GetPropertyValue(int index)\n        {\n            switch (index)\n            {\n                case 0:\n                    return Radius;\n                    break;\n                default:\n                    System.Diagnostics.Debug.Assert(false);\n                    break;\n            }\n\n            return 0;\n        }\n\n        public override void SetPropertyValue(int index, float value)\n        {\n            switch (index)\n            {\n                case 0:\n                    Radius = value;\n                    break;\n                default:\n                    System.Diagnostics.Debug.Assert(false);\n                    break;\n            }\n\n            UpdateLocalVolume();\n        }\n\n\n        public override MyVoxelHandShapeType GetShapeType()\n        {\n            return MyVoxelHandShapeType.Sphere;            \n        }\n\n        private void UpdateLocalVolume()\n        {\n            this.LocalVolume = new BoundingSphere(Vector3.Zero, this.Radius);\n        }\n\n        public override void DrawCone(Vector3 position)\n        {                        \n            Vector3 forwardDirection = Vector3.Normalize(this.GetPosition() - position);\n            Vector3 upDirection = this.WorldMatrix.Up + (forwardDirection - this.WorldMatrix.Forward);\n            //Matrix world = Matrix.CreateWorld(position, forwardDirection, new Vector3(-direction.X, direction.Y, -direction.Z));\n            Matrix world = Matrix.CreateWorld(position, forwardDirection, upDirection);\n                        \n            float dist = (this.GetPosition() - position).Length();\n            float x = (float)Math.Sqrt(dist * dist - this.Radius * this.Radius);\n            float alphaRad = (float)Math.Asin(this.Radius / dist);\n\n            float coneLength = x * (float)Math.Cos(alphaRad);\n            float coneRadius = x * (float)Math.Sin(alphaRad);\n\n            Vector4 vctColor = new Vector4(0.4f, 0.7f, 0.0f, 0.6f);\n            MySimpleObjectDraw.DrawTransparentCone(ref world, -coneLength, coneRadius, ref vctColor, false, 12, 0.5f);\n        }\n\n        public override void DrawShape()\n        {\n            Vector4 vctColor = new Vector4(0.1f, 0.3f, 0.0f, 0.2f);\n            Matrix world = this.WorldMatrix;\n            \n            MySimpleObjectDraw.DrawTransparentSphere(ref world, this.Radius, ref vctColor, false, 12);\n        }\n\n        public override MyVoxelHandShape CreateCopy()\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyVoxelHandSphere::CreateCopy\");\n            \n            MyVoxelHandSphere newSphere = new MyVoxelHandSphere();\n            newSphere.Init((MyMwcObjectBuilder_VoxelHand_Sphere)GetObjectBuilderInternal(false), null);\n            newSphere.SetWorldMatrix(this.WorldMatrix);\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            return newSphere;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/EntityDetector/MyEntityDetector.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.HUD;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Physics;\nusing MinerWars.AppCode.Game.Physics;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils.Utils;\nusing MinerWars.AppCode.Game.Render;\nusing MinerWars.AppCode.Physics.Collisions;\n\nnamespace MinerWars.AppCode.Game.Entities.EntityDetector\n{\n    delegate void OnEntityEnter(MyEntityDetector sender, MyEntity entity, int meetCriterias);\n    delegate void OnEntityLeave(MyEntityDetector sender, MyEntity entity);\n    delegate void OnEntityPositionChange(MyEntityDetector sender, MyEntity entity, Vector3 newPosition);\n    delegate void OnNearestEntityChange(MyEntityDetector sender, MyEntity oldNearestEntity, MyEntity newNearestEntity);\n    delegate void OnNearestEntityCriteriasChange(MyEntityDetector sender, MyEntity entity, int meetCriterias);\n\n    enum MyEntityDetectorType\n    {\n        Sphere,\n        Box,\n    }\n\n    class MyEntityDetector : MyEntity, IMySensorEventHandler\n    {\n        #region constants\n\n        #endregion\n\n        #region members\n\n        private bool m_isOn;\n        private MySensor m_sensor;        \n        private Dictionary<MyEntity, int> m_detectedEntities;\n        private List<MyEntity> m_observableEntities;\n        private MyEntity m_nearestEntity;\n        private int m_nearestEntityCriterias;\n        private MyEntity m_previousNearestEntity;\n        private MyEntity m_tempNearestEntity;\n        private int m_tempNearestEntityCriterias;\n        private List<IMyEntityDetectorCriterium> m_detectionCriterias;        \n\n        private int m_detectedEntitiesActualIndex;\n        private int m_detectedEntitiesCount;\n        private int m_detectedEntitiesCountPerFrame;\n\n        private int m_observableEntitiesActualIndex;\n        private int m_observableEntitiesCount;\n        private int m_observableEntitiesCountPerFrame;\n\n        private bool m_containsCriteriumToReCheck;\n\n        private float m_radius;\n        private Vector3 m_extent;\n        private Vector3 m_size;\n\n        private bool m_isClosed;\n\n        private Action<MyEntity> m_onEntityMarkForClose;\n        private Action<MyEntity> m_onEntityClose;\n        private EventHandler m_onEntityPositionChange;\n\n        private bool m_isSlowDetector;\n\n        #endregion\n\n        #region ctors\n\n        public MyEntityDetector(bool isSlowDetector = false)\n            : base()\n        {                                    \n            m_detectedEntities = new Dictionary<MyEntity, int>();\n            m_observableEntities = new List<MyEntity>();\n            m_sensor = new MySensor();\n            m_detectionCriterias = new List<IMyEntityDetectorCriterium>();\n\n            m_onEntityMarkForClose = new Action<MyEntity>(OnMarkForCloseHandler);\n            m_onEntityClose = new Action<MyEntity>(OnCloseHandler);\n            m_onEntityPositionChange = new EventHandler(OnDetectedEntityPositionChange);\n            m_isSlowDetector = isSlowDetector;\n            //InitCriterias(detectionCriterias);            \n        }        \n\n        #endregion\n\n        #region events\n\n        public event OnEntityEnter OnEntityEnter;\n\n        public event OnEntityLeave OnEntityLeave;\n\n        public event OnEntityPositionChange OnEntityPositionChange;\n\n        public event OnNearestEntityChange OnNearestEntityChange;\n\n        public event OnNearestEntityCriteriasChange OnNearestEntityCriteriasChange;\n\n        #endregion\n\n        #region properties\n\n        public MyEntityDetectorType EntityDetectorType { get; private set; }\n\n        public Vector3 Size \n        {\n            get \n            {\n                return m_size;\n            }\n            set \n            {\n                m_size = value;\n\n                bool isOn = m_isOn;\n                if (isOn)\n                {\n                    Off();\n                }\n\n                MySensorElement sensorElement = m_sensor.GetElement();\n                sensorElement.SetSize(m_size);\n\n                if (isOn)\n                {\n                    On();\n                }\n            }\n        }\n\n        public float Radius\n        {\n            get\n            {\n                Debug.Assert(\n                    ((MyMwcObjectBuilder_EntityDetector) GetObjectBuilder(true)).EntityDetectorType ==\n                    MyMwcObjectBuilder_EntityDetector_TypesEnum.Sphere);\n                return 0.5f * Size.X;\n            }\n            set\n            {\n                if (m_sensor != null && m_sensor.GetElement() is MySphereSensorElement)\n                {\n                    var sphereSensorElement = (MySphereSensorElement)m_sensor.GetElement();\n                    sphereSensorElement.Radius = value;\n                }\n\t\t\t\tm_radius = value;\n            }\n        }\n\n        public int UpdateCounter\n        {\n            get;\n            set;\n        }\n\n        #endregion\n\n        #region initialization\n\n        public void Init(string hudLabelText, MyMwcObjectBuilder_EntityDetector objectBuilder, MyEntity parent, Matrix matrix, IEnumerable<IMyEntityDetectorCriterium> detectionCriterias)\n        {\n            InitCriterias(detectionCriterias);\n            InitSensor(objectBuilder.EntityDetectorType, objectBuilder.Size);\n\n            StringBuilder hudLabelTextSb = (hudLabelText == null) ? null : new StringBuilder(hudLabelText);\n\n            Init(hudLabelTextSb, null, null, parent, null, objectBuilder);\n\n            SetWorldMatrix(matrix);                        \n\n            Save = false;\n            m_isClosed = false;\n            Visible = false;\n            //NeedsUpdate = true;\n        }\n\n        private void InitSensor(MyMwcObjectBuilder_EntityDetector_TypesEnum type, Vector3 size)\n        {\n            MySensorElement sensorElement;\n\n            if (type == MyMwcObjectBuilder_EntityDetector_TypesEnum.Sphere)\n            {\n                MySphereSensorElement sphereSensorElement = new MySphereSensorElement();\n                sphereSensorElement.Radius = size.Length() / 2f;\n                sensorElement = sphereSensorElement;\n                EntityDetectorType = MyEntityDetectorType.Sphere;\n                m_radius = sphereSensorElement.Radius;\n            }\n            else if (type == MyMwcObjectBuilder_EntityDetector_TypesEnum.Box)\n            {\n                MyBoxSensorElement boxSensorElement = new MyBoxSensorElement();\n                boxSensorElement.Size = size;\n                sensorElement = boxSensorElement;\n                EntityDetectorType = MyEntityDetectorType.Box;\n                m_extent = size / 2f;\n            }\n            else\n            {\n                throw new MyMwcExceptionApplicationShouldNotGetHere();\n            }\n\n            sensorElement.LocalPosition = Vector3.Zero;\n            MySensorDesc senDesc = new MySensorDesc();\n            senDesc.m_Element = sensorElement;\n            senDesc.m_Matrix = Matrix.Identity;\n            senDesc.m_SensorEventHandler = this;\n            m_sensor.Inserted = false;\n            m_sensor.LoadFromDesc(senDesc);\n            m_sensor.Active = true;\n            m_size = size;           \n        }\n\n        protected override void SetHudMarker()\n        {            \n        }\n\n        private void InitCriterias(IEnumerable<IMyEntityDetectorCriterium> detectionCriterias)\n        {\n            Debug.Assert(detectionCriterias != null);\n\n            m_detectionCriterias.AddRange(detectionCriterias);\n            m_containsCriteriumToReCheck = false;\n\n            foreach (IMyEntityDetectorCriterium criterium in m_detectionCriterias)\n            {                \n                if (criterium.ReCheckCriterium)\n                {\n                    m_containsCriteriumToReCheck = true;                    \n                }\n            }            \n        }\n\n        #endregion\n\n        #region public methods\n\n        public void On()\n        {\n            //Debug.Assert(!m_isOn);\n            if (!m_isOn)\n            {\n                m_isOn = true;\n                AddSensor();\n                NeedsUpdate = true;\n                if (m_isSlowDetector) \n                {\n                    MyEntityDetectorsManager.RegisterSlowDetectorForUpdate(this);\n                }\n            }\n        }\n\n        public void Off()\n        {\n            //Debug.Assert(m_isOn);\n            SetOff(true);\n        }\n\n        public bool IsOn()\n        {\n            return m_isOn;\n        }\n\n        public void Reset()\n        {\n            if (m_isOn)\n            {\n                Off();\n                On();\n            }\n        }\n\n        public bool TrySetStatus(bool setOn) \n        {\n            bool changed = false;\n            if (setOn && !m_isOn) \n            {\n                On();\n                changed = true;\n            }\n            else if (!setOn && m_isOn) \n            {\n                Off();\n                changed = true;\n            }\n            return changed;\n        }\n\n        public void ActivateSensor() \n        {\n            if (!m_sensor.Active)\n            {\n                m_sensor.Active = true;\n            }\n        }\n\n        public MyEntity GetNearestEntity()\n        {\n            return m_nearestEntity;\n        }\n\n        public bool IsEntityDetected(MyEntity entity, out int? meetCriterias)\n        {            \n            meetCriterias = GetCriteriasForDetectedEntity(entity);\n            return meetCriterias != null;\n        }\n\n        public int? GetCriteriasForDetectedEntity(MyEntity entity)\n        {\n            Debug.Assert(entity != null);\n\n            if(m_detectedEntities.Count == 0)\n            {\n                return null;\n            }\n\n            int meetCriterias;\n            m_detectedEntities.TryGetValue(entity, out meetCriterias);\n            return meetCriterias;\n        }\n\n        public int? GetNearestEntityCriterias()\n        {\n            if(m_nearestEntity == null)\n            {\n                return null;\n            }\n            else\n            {\n                return m_nearestEntityCriterias;\n            }\n        }\n\n        public Dictionary<MyEntity, int> GetDetectedEntities()\n        {\n            return m_detectedEntities;\n        }\n\n        public void SetSensorDetectRigidBodyTypes(uint? rigidBodyType) \n        {\n            if (m_sensor != null && m_sensor.GetElement() != null) \n            {\n                m_sensor.GetElement().DetectRigidBodyTypes = rigidBodyType;\n            }\n        }\n        #endregion\n\n        #region private methods\n\n        private void SetOff(bool callEvents) \n        {\n            if (m_isOn)\n            {\n                m_isOn = false;\n                RemoveSensor();\n                ClearDetectedEntities(callEvents);\n                NeedsUpdate = false;\n                if (m_isSlowDetector)\n                {\n                    MyEntityDetectorsManager.UnregisterSlowDetectorForUpdate(this);\n                }\n            }\n        }\n\n        private void OnDetectedEntityPositionChange(object sender, EventArgs args)\n        {            \n            CallOnEntityPositionChange(sender as MyEntity);\n        }\n\n        private void OnMarkForCloseHandler(MyEntity entity)\n        {\n            RemoveEntityFromDetectedAndObservable(entity);\n        }\n\n        private void OnCloseHandler(MyEntity entity)\n        {\n            RemoveEntityFromDetectedAndObservable(entity);\n        }\n\n        private void RemoveEntityFromDetectedAndObservable(MyEntity entity) \n        {\n            if (m_containsCriteriumToReCheck)\n            {\n                m_observableEntities.Remove(entity);\n            }\n            RemoveDetectedEntity(entity);\n            UnregisterOnCloseHandlers(entity);\n        }\n\n        private void RegisterOnCloseHandlers(MyEntity entity) \n        {\n            entity.OnMarkForClose += m_onEntityMarkForClose;\n            entity.OnClose += m_onEntityClose;\n        }\n\n        private void UnregisterOnCloseHandlers(MyEntity entity) \n        {\n            entity.OnMarkForClose -= m_onEntityMarkForClose;\n            entity.OnClose -= m_onEntityClose;\n        }\n\n        private void AddDetectedEntity(MyEntity entity, int criterias)\n        {\n            Debug.Assert(!m_detectedEntities.ContainsKey(entity), \"This should not happen!\");\n            if (!m_detectedEntities.ContainsKey(entity))\n            {\n                entity.OnPositionChanged += m_onEntityPositionChange;                \n                m_detectedEntities.Add(entity, criterias);\n\n                CallOnEntityEnter(entity, criterias);\n            }\n        }\n\n        private void RemoveDetectedEntity(MyEntity entity, bool callEvents = true)\n        {            \n            bool removed = m_detectedEntities.Remove(entity);\n\n            if (removed)\n            {\n                entity.OnPositionChanged -= m_onEntityPositionChange;\n                if (callEvents)\n                {\n                    CallOnEntityLeave(entity);\n                }\n            }\n        }\n\n        private void CallOnEntityEnter(MyEntity entity, int criterias)\n        {\n            if(OnEntityEnter != null)\n            {\n                OnEntityEnter(this, entity, criterias);\n            }\n        }\n\n        private void CallOnEntityLeave(MyEntity entity)\n        {\n            if(OnEntityLeave != null)\n            {\n                OnEntityLeave(this, entity);\n            }\n        }\n\n        private void CallOnNearestEntityChange(MyEntity oldEntity, MyEntity newEntity)\n        {\n            if(OnNearestEntityChange != null)\n            {\n                OnNearestEntityChange(this, oldEntity, newEntity);\n            }\n        }\n\n        private void CallOnNearestEntityCriteriasChange(MyEntity entity, int meetCriterias)         \n        {\n            if (OnNearestEntityCriteriasChange != null) \n            {\n                OnNearestEntityCriteriasChange(this, entity, meetCriterias);\n            }\n        }\n\n        private void CallOnEntityPositionChange(MyEntity entity)\n        {\n            if(OnEntityPositionChange != null)\n            {\n                OnEntityPositionChange(this, entity, entity.GetPosition());\n            }\n        }\n\n        private bool IsEntityMeetCritarias(MyEntity entity, ref int meetCriterias, bool reCheck = false)\n        {            \n            if(m_detectionCriterias.Count == 0)\n            {\n                return true;\n            }\n\n            foreach(IMyEntityDetectorCriterium criterium in m_detectionCriterias)\n            {\n                if (reCheck && !criterium.ReCheckCriterium)\n                {\n                    continue;                    \n                }\n\n                if (criterium.Check(entity))\n                {\n                    if ((meetCriterias & criterium.Key) == 0)\n                    {\n                        meetCriterias |= criterium.Key;\n                    }\n                }\n                else\n                {\n                    if ((meetCriterias & criterium.Key) != 0)\n                    {\n                        meetCriterias &= ~criterium.Key;\n                    }\n                }\n            }\n            return meetCriterias > 0;\n        }        \n\n        private bool CanBeEntityObserved(MyEntity entity)\n        {\n            if (m_detectionCriterias.Count == 0)\n            {\n                return true;\n            }\n\n            foreach (IMyEntityDetectorCriterium criterium in m_detectionCriterias)\n            {\n                if (criterium.IsEntityInRightType(entity))\n                {\n                    return true;\n                }\n            }\n            return false;\n        }\n\n        private float GetEntityDistance(MyEntity entity)\n        {\n            return Vector3.Distance(GetPosition(), entity.GetPosition());\n        }\n\n        private void UpdateDetectedEntities()\n        {\n            m_detectedEntitiesCount = m_detectedEntities.Count;\n            m_detectedEntitiesCountPerFrame = (int)Math.Ceiling(m_detectedEntitiesCount / MyConstants.PHYSICS_STEPS_PER_SECOND);\n\n            if (m_detectedEntitiesActualIndex == 0)\n            {\n                m_tempNearestEntity = null;\n                m_previousNearestEntity = m_nearestEntity;\n            }\n\n            int recaltulateTo = Math.Min(m_detectedEntitiesActualIndex + m_detectedEntitiesCountPerFrame, m_detectedEntitiesCount);\n            while (m_detectedEntitiesActualIndex < recaltulateTo)\n            {\n                KeyValuePair<MyEntity, int> entityKvp = m_detectedEntities.ElementAt(m_detectedEntitiesActualIndex);\n                MyEntity entity = entityKvp.Key;\n                int meetCriterias = entityKvp.Value;\n\n                if(m_containsCriteriumToReCheck)\n                {                    \n                    if(!IsEntityMeetCritarias(entity, ref meetCriterias, true))\n                    {\n                        RemoveDetectedEntity(entity);\n                        m_observableEntities.Add(entity);\n                        m_detectedEntitiesCount = m_detectedEntities.Count;\n                        recaltulateTo = Math.Min(recaltulateTo, m_detectedEntitiesCount);\n                        continue;\n                    }\n                }\n\n                if (m_tempNearestEntity == null || GetEntityDistance(entity) < GetEntityDistance(m_tempNearestEntity))\n                {\n                    m_tempNearestEntity = entity;\n                    m_tempNearestEntityCriterias = meetCriterias;\n                }\n                m_detectedEntitiesActualIndex++;\n            }\n\n            if (m_detectedEntitiesActualIndex >= m_detectedEntitiesCount)\n            {\n                m_nearestEntity = m_tempNearestEntity;\n                int previousNearestEntityCriterias = m_nearestEntityCriterias;\n                m_nearestEntityCriterias = m_tempNearestEntityCriterias;\n\n                if (m_nearestEntity != m_previousNearestEntity)\n                {\n                    CallOnNearestEntityChange(m_previousNearestEntity, m_nearestEntity);\n                }\n                else if (m_nearestEntityCriterias != previousNearestEntityCriterias) \n                {\n                    CallOnNearestEntityCriteriasChange(m_nearestEntity, m_nearestEntityCriterias);\n                }\n\n                m_detectedEntitiesActualIndex = 0;\n            }\n        }\n\n        private void UpdateObservableEntities()\n        {\n            m_observableEntitiesCount = m_observableEntities.Count;\n            m_observableEntitiesCountPerFrame = (int)Math.Ceiling(m_observableEntitiesCount / MyConstants.PHYSICS_STEPS_PER_SECOND);            \n\n            int recaltulateTo = Math.Min(m_observableEntitiesActualIndex + m_observableEntitiesCountPerFrame, m_observableEntitiesCount);\n            while (m_observableEntitiesActualIndex < recaltulateTo)\n            {\n                MyEntity entity = m_observableEntities[m_observableEntitiesActualIndex];\n\n                int meetCriterias = 0;\n                if (IsEntityMeetCritarias(entity, ref meetCriterias, true))\n                {\n                    m_observableEntities.RemoveAt(m_observableEntitiesActualIndex);\n                    AddDetectedEntity(entity, meetCriterias);\n                    m_observableEntitiesCount = m_observableEntities.Count;\n                    recaltulateTo = Math.Min(recaltulateTo, m_observableEntitiesCount);\n                    continue;\n                }\n                m_observableEntitiesActualIndex++;\n            }\n\n            if (m_observableEntitiesActualIndex >= m_observableEntitiesCount)\n            {\n                m_observableEntitiesActualIndex = 0;\n            }\n        }\n\n        private void ClearDetectedEntities(bool callEvents)\n        {            \n            while (m_detectedEntities.Count > 0)\n            {\n                MyEntity entityToRemove = m_detectedEntities.ElementAt(0).Key;\n                RemoveDetectedEntity(entityToRemove, callEvents);\n                UnregisterOnCloseHandlers(entityToRemove);\n            }\n            m_detectedEntities.Clear();\n            m_observableEntities.Clear();\n\n            if (callEvents && m_nearestEntity != null)\n            {\n                CallOnNearestEntityChange(m_nearestEntity, null);\n            }            \n\n            m_nearestEntity = null;\n            m_tempNearestEntity = null;\n            m_previousNearestEntity = null;\n            m_detectedEntitiesActualIndex = 0;\n            m_observableEntitiesActualIndex = 0;            \n        }\n\n        private void AddSensor()\n        {\n            //m_sensor.GetElement().ProxyData = MyElement.PROXY_UNASSIGNED;\n            //m_sensor.m_Interactions.Clear();\n            MyPhysics.physicsSystem.GetSensorModule().AddSensor(m_sensor);\n        }\n\n        private void RemoveSensor()\n        {\n            //m_sensor.GetElement().ProxyData = MyElement.PROXY_UNASSIGNED;\n            MyPhysics.physicsSystem.GetSensorModule().RemoveSensor(m_sensor);\n        }\n\n        #endregion\n\n        #region overriden members\n\n        public override void UpdateBeforeSimulation()\n        {\n\n            if (m_isClosed) \n            {\n                Debug.Fail(\"This shoudln't happen!\");\n                return;\n            }\n            //base.UpdateBeforeSimulation();            \n\n            if (m_isOn)\n            {\n                if (m_isSlowDetector && !MyEntityDetectorsManager.CanBeSlowDetectorUpdated(this))\n                {\n                    return;\n                }\n                if (m_containsCriteriumToReCheck)\n                {\n                    UpdateObservableEntities();\n                }\n                UpdateDetectedEntities();\n            }\n\n        }\n\n        public override bool Draw(MyRenderObject renderObject)\n        {\n        //    return base.Draw();\n\n//            if (IsOn())\n            {\n                Matrix world = WorldMatrix;\n                Vector4 color = new Vector4(0f, 0f, 1f, 0.5f);\n\n                if (EntityDetectorType == MyEntityDetectorType.Sphere)\n                {\n                    MySimpleObjectDraw.DrawTransparentSphere(ref world, m_radius, ref color, true, 1);\n                }\n                else if (EntityDetectorType == MyEntityDetectorType.Box)\n                {\n                    BoundingBox bBox = new BoundingBox(-m_extent, m_extent);\n                    MySimpleObjectDraw.DrawTransparentBox(ref world, ref bBox, ref color, true, 1);\n                }\n            }\n            return true;\n        }\n\n        public override void Close()\n        {\n            Debug.Assert(!m_isClosed);\n            m_sensor.MarkForClose();\n            SetOff(false);\n            //ClearDetectedEntities(false);            \n            //RemoveSensor();\n            //m_isOn = false;\n            m_detectionCriterias.Clear();\n            m_sensor = null;\n            OnEntityEnter = null;\n            OnEntityLeave = null;\n            OnEntityPositionChange = null;\n            base.Close();\n            m_isClosed = true;            \n        }\n\n        public override void OnWorldPositionChanged(object source)\n        {\n            base.OnWorldPositionChanged(source);\n            m_sensor.Matrix = WorldMatrix;\n        }\n\n        public override bool GetIntersectionWithLine(ref MyLine line, out Vector3? v, bool useCollisionModel = true, IntersectionFlags flags = IntersectionFlags.ALL_TRIANGLES)\n        {\n            v = null;\n            Ray ray = new Ray(line.From, line.Direction);\n            float? ds = null;\n            if (EntityDetectorType == MyEntityDetectorType.Box)\n            {\n                ds = ray.Intersects(this.WorldAABB);\n            }\n            else if (EntityDetectorType == MyEntityDetectorType.Sphere)\n            {\n                ds = ray.Intersects(new BoundingSphere(WorldMatrix.Translation, m_radius));\n            }\n\n            if (ds == null)\n                return false;\n            v = line.From + line.Direction * ds;\n            return true;\n        }\n\n        public override bool GetIntersectionWithSphere(ref BoundingSphere sphere)\n        {\n            if (EntityDetectorType == MyEntityDetectorType.Box)\n            {\n                BoundingBox boundingBox = new BoundingBox(WorldMatrix.Translation - m_extent, WorldMatrix.Translation + m_extent);\n                return boundingBox.Intersects(sphere);\n            }\n            else if (EntityDetectorType == MyEntityDetectorType.Sphere)\n            {\n                BoundingSphere boundingSphere = new BoundingSphere(WorldMatrix.Translation, m_radius);\n                return boundingSphere.Intersects(sphere);\n            }\n\n            return false;\n        }\n\n        public void OnEnter(MySensor sensor, MyRigidBody rbo, MyRBElement rbElement)\n        {\n            if(m_isOn && rbo.m_UserData != null)\n            {\n                MyEntity entity = (rbo.m_UserData as MyPhysicsBody).Entity;\n                if(entity != null && (Parent == null || Parent != entity))\n                {\n                    int meetCriterias = 0;\n                    bool canRegisteForClose = false;\n                    if (IsEntityMeetCritarias(entity, ref meetCriterias))\n                    {\n                        AddDetectedEntity(entity, meetCriterias);\n                        canRegisteForClose = true;\n                    }\n                    else\n                    {\n                        if (m_containsCriteriumToReCheck)\n                        {\n                            if (CanBeEntityObserved(entity))\n                            {\n                                m_observableEntities.Add(entity);\n                                canRegisteForClose = true;\n                            }\n                        }\n                    }\n                    if (canRegisteForClose) \n                    {\n                        RegisterOnCloseHandlers(entity);\n                    }\n                }\n            }\n        }\n\n        public void OnLeave(MySensor sensor, MyRigidBody rbo, MyRBElement rbElement)\n        {\n            if (rbo == null)\n                return;\n\n            if (m_isOn && rbo.m_UserData != null)\n            {\n                MyEntity entity = (rbo.m_UserData as MyPhysicsBody).Entity;\n                if (entity != null && (Parent == null || Parent != entity))\n                {\n                    RemoveEntityFromDetectedAndObservable(entity);\n                }\n            }\n        }\n\n        #endregion        \n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/EntityDetector/MyEntityDetectorCriterium.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Utils;\n\nnamespace MinerWars.AppCode.Game.Entities.EntityDetector\n{\n    internal delegate bool MyEntityDetectorCriteriumCondition<T>(T entity, params object[] args);\n\n    interface IMyEntityDetectorCriterium\n    {\n        int Key { get; }\n        bool ReCheckCriterium { get; }\n\n        bool IsEntityInRightType(MyEntity entity);\n        bool Check(MyEntity entity);\n    }\n\n    class MyEntityDetectorCriterium<T> : IMyEntityDetectorCriterium\n        where T : MyEntity\n    {\n        public int Key { get; private set; }\n        public MyEntityDetectorCriteriumCondition<T> Condition { get; set; }        \n        public bool ReCheckCriterium { get; set; }\n        public object[] Args { get; set; }\n\n        public MyEntityDetectorCriterium(int key, MyEntityDetectorCriteriumCondition<T> condition, bool reCheckCriterium, params object[] args)\n        {\n            if (!MyUtils.IsPowerOfTwo(key))\n            {\n                throw new Exception(\"Criterium key must by power of 2\");\n            }\n            Key = key;\n            Condition = condition;\n            ReCheckCriterium = reCheckCriterium;\n            Args = args;\n        }        \n\n        public MyEntityDetectorCriterium(int key)\n            : this(key, null, false, null)\n        {\n        }\n\n        public MyEntityDetectorCriterium(int key, MyEntityDetectorCriteriumCondition<T> condition, params object[] args)\n            : this(key, condition, false, args)\n        {\n        }              \n\n        public bool IsEntityInRightType(MyEntity entity)\n        {\n            return entity is T;\n        }\n\n        public bool Check(MyEntity entity)\n        {\n            if (!IsEntityInRightType(entity))\n            {\n                return false;\n            }\n\n            if(Condition != null)\n            {\n                if (!Condition(entity as T, Args))\n                {\n                    return false;\n                }\n            }\n\n            return true;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/EntityDetector/MyEntityDetectorsManager.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.App;\nusing System.Diagnostics;\n\nnamespace MinerWars.AppCode.Game.Entities.EntityDetector\n{\n    static class MyEntityDetectorsManager\n    {\n        private static List<MyEntityDetector> m_slowDetectors;\n        private static int m_currentDetectorIndex;\n        private static int m_entitiesPerFrameToUpdate;\n\n        public static int GlobalSlowDetectorCounter = 0;\n\n        static MyEntityDetectorsManager()\n        {\n            m_slowDetectors = new List<MyEntityDetector>();\n            m_currentDetectorIndex = 0;\n\n            GlobalSlowDetectorCounter = 0;\n        }\n\n        public static void RegisterSlowDetectorForUpdate(MyEntityDetector detector)\n        {\n            m_slowDetectors.Add(detector);\n            detector.UpdateCounter = GlobalSlowDetectorCounter++;\n\n            UpdateEntitiesPerFrame();\n        }\n\n        public static void UnregisterSlowDetectorForUpdate(MyEntityDetector detector)\n        {\n            m_slowDetectors.Remove(detector);\n            m_currentDetectorIndex = 0;\n\n            UpdateEntitiesPerFrame();\n        }\n\n        private static void UpdateEntitiesPerFrame()\n        {\n            //Update all entities in 30 frames\n            m_entitiesPerFrameToUpdate = (int)Math.Ceiling(m_slowDetectors.Count / 30f);\n        }\n\n        public static void Update()\n        {\n            if (m_slowDetectors.Count > 0)\n            {\n                m_currentDetectorIndex += m_entitiesPerFrameToUpdate;\n                if (m_currentDetectorIndex >= m_slowDetectors.Count)\n                {\n                    m_currentDetectorIndex = 0;\n                }\n            }\n        }\n\n        public static bool CanBeSlowDetectorUpdated(MyEntityDetector detector)\n        {\n            Debug.Assert(m_slowDetectors.Count > m_currentDetectorIndex);\n            int index = detector.UpdateCounter % m_slowDetectors.Count;\n            if (index >= m_currentDetectorIndex && index < m_currentDetectorIndex + m_entitiesPerFrameToUpdate)\n                return true;\n\n            return false;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/FoundationFactory/MyBuildingRequirement.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.GUI.Helpers;\nusing MinerWars.AppCode.Game.Inventory;\nusing MinerWars.AppCode.Game.Entities.Prefabs;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Prefabs;\nusing MinerWars.AppCode.Game.World;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.Utils;\n\nnamespace MinerWars.AppCode.Game.Entities.FoundationFactory\n{\n    /// <summary>\n    /// Building requirement's interface\n    /// </summary>\n    interface IMyBuildingRequirement\n    {\n        /// <summary>\n        /// Checks if player meet this requirement\n        /// </summary>\n        /// <param name=\"foundationFactory\">Foundation factory</param>\n        /// <returns></returns>\n        bool Check(MyPrefabFoundationFactory foundationFactory);\n\n        /// <summary>\n        /// Returns description of bulding requirement\n        /// </summary>\n        /// <returns></returns>\n        StringBuilder GetDescription();\n    }\n\n    /// <summary>\n    /// This requirement means, that player must have some item in FF's inventory\n    /// </summary>\n    class MyBuildingRequirementInventoryItem : IMyBuildingRequirement\n    {\n        private static readonly StringBuilder m_amountAndDescriptionSeparator = new StringBuilder(\"x \");\n        private StringBuilder m_description;\n\n        /// <summary>\n        /// Object builder's type\n        /// </summary>\n        public MyMwcObjectBuilderTypeEnum ObjectBuilderType { get; set; }\n\n        /// <summary>\n        /// Object builder's Id\n        /// </summary>\n        public int ObjectBuilderId { get; set; }\n\n        /// <summary>\n        /// Needed amount of inventory item\n        /// </summary>\n        public float Amount { get; set; }\n\n        /// <summary>\n        /// If true, then remove it from inventory\n        /// </summary>\n        public bool RemoveAfterBuild { get; set; }\n\n        /// <summary>\n        /// Creates new instance of inventory item requirement\n        /// </summary>\n        /// <param name=\"objectBuilderType\"></param>\n        /// <param name=\"objectBuilderId\"></param>\n        /// <param name=\"amount\"></param>\n        /// <param name=\"removeAfterBuild\"></param>\n        public MyBuildingRequirementInventoryItem(MyMwcObjectBuilderTypeEnum objectBuilderType, int objectBuilderId, float amount, bool removeAfterBuild)\n        {\n            ObjectBuilderType = objectBuilderType;\n            ObjectBuilderId = objectBuilderId;\n            Amount = amount;\n            RemoveAfterBuild = removeAfterBuild;\n            m_description = new StringBuilder();\n        }\n\n        /// <summary>\n        /// Checks if player meet this requirement\n        /// </summary>\n        /// <param name=\"foundationFactory\">Foundation factory</param>\n        /// <returns></returns>\n        public bool Check(MyPrefabFoundationFactory foundationFactory)\n        {\n            float requiredInventoryItemAmount = foundationFactory.Player.Ship.Inventory.GetTotalAmountOfInventoryItems(ObjectBuilderType, ObjectBuilderId);\n            return requiredInventoryItemAmount >= Amount;\n        }\n\n        /// <summary>\n        /// Returns description of bulding requirement\n        /// </summary>\n        /// <returns></returns>\n        public StringBuilder GetDescription()\n        {\n            m_description.Clear();\n            m_description.Append(Amount);\n            MyMwcUtils.AppendStringBuilder(m_description, m_amountAndDescriptionSeparator);\n            MyMwcUtils.AppendStringBuilder(m_description, MyGuiObjectBuilderHelpers.GetGuiHelper(ObjectBuilderType, ObjectBuilderId).Description);            \n            return m_description;\n        }\n    }\n\n    ///// <summary>\n    ///// This requirement means, that player must have builded some prefab\n    ///// </summary>\n    //class MyBuildingRequirementBuildedPrefab : IMyBuildingRequirement\n    //{\n    //    /// <summary>\n    //    /// Prefabs type\n    //    /// </summary>\n    //    public MyMwcObjectBuilder_Prefab_TypesEnum PrefabType { get; set; }\n\n    //    /// <summary>\n    //    /// Creates new instance of builded prefab requirement\n    //    /// </summary>\n    //    /// <param name=\"prefabType\"></param>\n    //    public MyBuildingRequirementBuildedPrefab(MyMwcObjectBuilder_Prefab_TypesEnum prefabType)\n    //    {\n    //        PrefabType = prefabType;\n    //    }\n\n    //    /// <summary>\n    //    /// Checks if player meet this requirement\n    //    /// </summary>\n    //    /// <param name=\"foundationFactory\">Foundation factory</param>\n    //    /// <returns></returns>\n    //    public bool Check(MyFoundationFactory foundationFactory)\n    //    {\n    //        foreach (MyPrefabBase prefab in foundationFactory.PrefabContainer.GetPrefabs())\n    //        {\n    //            if (((MyMwcObjectBuilder_Prefab)prefab.GetObjectBuilder(true)).PrefabType == PrefabType)\n    //            {\n    //                return true;\n    //            }\n    //        }\n    //        return false;\n    //    }\n\n    //    /// <summary>\n    //    /// Returns description of bulding requirement\n    //    /// </summary>\n    //    /// <returns></returns>\n    //    public StringBuilder GetDescription()\n    //    {\n    //        return MyGuiObjectBuilderHelpers.GetGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (int)PrefabType).Description;\n    //    }\n    //}\n\n    /// <summary>\n    /// This requirement means, that player must have some blueprint in checkpoint's inventory\n    /// </summary>\n    class MyBuildingRequirementBlueprint : IMyBuildingRequirement\n    {        \n        /// <summary>\n        /// Blueprint's type\n        /// </summary>\n        public MyMwcObjectBuilder_Blueprint_TypesEnum BlueprintType { get; private set; }\n\n        /// <summary>\n        /// Creates new instance of blueprint's requirement\n        /// </summary>\n        /// <param name=\"blueprintType\">Blueprint's type</param>        \n        public MyBuildingRequirementBlueprint(MyMwcObjectBuilder_Blueprint_TypesEnum blueprintType)\n        {\n            BlueprintType = blueprintType;                        \n        }\n\n        /// <summary>\n        /// Checks if player meet this requirement\n        /// </summary>\n        /// <param name=\"foundationFactory\">Foundation factory</param>\n        /// <returns></returns>\n        public bool Check(MyPrefabFoundationFactory foundationFactory)\n        {\n            return MySession.Static.Inventory.Contains(MyMwcObjectBuilderTypeEnum.Blueprint, (int) BlueprintType);\n        }\n\n        /// <summary>\n        /// Returns description of bulding requirement\n        /// </summary>\n        /// <returns></returns>\n        public StringBuilder GetDescription()\n        {\n            return MyGuiObjectBuilderHelpers.GetGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int) BlueprintType).Description;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/FoundationFactory/MyBuildingSpecification.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing MinerWars.AppCode.Game.Prefabs;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.Prefabs;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils.Utils;\n\nnamespace MinerWars.AppCode.Game.Entities.FoundationFactory\n{\n    /// <summary>\n    /// Building specification for building any object in foundation factory\n    /// </summary>\n    class MyBuildingSpecification\n    {\n        /// <summary>\n        /// Building requirementes collection\n        /// </summary>\n        public IList<IMyBuildingRequirement> BuildingRequirements { get; set; }\n\n        /// <summary>\n        /// Building time in ms\n        /// </summary>\n        public int BuildingTime { get; set; }\n\n        /// <summary>\n        /// Creates new instance of building specification\n        /// </summary>\n        public MyBuildingSpecification() : this(0, new BindingList<IMyBuildingRequirement>())\n        {\n        }\n\n        /// <summary>\n        /// Creates new instance of building specification\n        /// </summary>\n        /// <param name=\"buildingTime\">Building time</param>\n        /// <param name=\"buildingRequirements\">Building requirements</param>\n        public MyBuildingSpecification(int buildingTime, IList<IMyBuildingRequirement> buildingRequirements)\n        {\n            BuildingTime = buildingTime;\n            BuildingRequirements = buildingRequirements;\n        }                \n\n        /// <summary>\n        /// Returns if player can build this object\n        /// </summary>\n        /// <param name=\"foundationFactory\">Foundation factory</param>\n        /// <returns></returns>\n        public bool CanBuild(MyPrefabFoundationFactory foundationFactory)\n        {            \n            foreach (IMyBuildingRequirement myBuildingRequirement in BuildingRequirements)\n            {\n                if (!myBuildingRequirement.Check(foundationFactory))\n                {\n                    return false;\n                }\n            }\n            return true;\n        }\n    }\n\n    /// <summary>\n    /// Building specification for all objects which player can build in foundation factory\n    /// </summary>\n    internal static class MyBuildingSpecifications\n    {\n        static readonly MyBuildingSpecification[][] m_buildingSpecifications = new MyBuildingSpecification[MyMwcUtils.GetMaxValueFromEnum<MyMwcObjectBuilderTypeEnum>() + 1][];\n        static readonly IMyBuildingRequirement[] m_blueprintRequirements = new IMyBuildingRequirement[MyMwcUtils.GetMaxValueFromEnum<MyMwcObjectBuilder_Blueprint_TypesEnum>() + 1];\n        static readonly List<IMyBuildingRequirement>[] m_blueprintRequirementDependencies = new List<IMyBuildingRequirement>[MyMwcUtils.GetMaxValueFromEnum<MyMwcObjectBuilder_Blueprint_TypesEnum>() + 1];\n\n        static MyBuildingSpecifications()\n        {\n            MyMwcLog.WriteLine(\"MyBuildingSpecifications()\");\n\n            #region Blueprint's definition\n            m_blueprintRequirements[(int)MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit]\n                = new MyBuildingRequirementBlueprint(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit);\n            m_blueprintRequirements[(int)MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit]\n                = new MyBuildingRequirementBlueprint(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit);\n            m_blueprintRequirements[(int)MyMwcObjectBuilder_Blueprint_TypesEnum.SuperiorConstructionKit]\n                = new MyBuildingRequirementBlueprint(MyMwcObjectBuilder_Blueprint_TypesEnum.SuperiorConstructionKit);\n            m_blueprintRequirements[(int)MyMwcObjectBuilder_Blueprint_TypesEnum.UtilitiesKit]\n                = new MyBuildingRequirementBlueprint(MyMwcObjectBuilder_Blueprint_TypesEnum.UtilitiesKit);\n            m_blueprintRequirements[(int)MyMwcObjectBuilder_Blueprint_TypesEnum.FortificationKit]\n                = new MyBuildingRequirementBlueprint(MyMwcObjectBuilder_Blueprint_TypesEnum.FortificationKit);\n            m_blueprintRequirements[(int)MyMwcObjectBuilder_Blueprint_TypesEnum.HonorableKit]\n                = new MyBuildingRequirementBlueprint(MyMwcObjectBuilder_Blueprint_TypesEnum.HonorableKit);\n            m_blueprintRequirements[(int)MyMwcObjectBuilder_Blueprint_TypesEnum.WeaponKit]\n                = new MyBuildingRequirementBlueprint(MyMwcObjectBuilder_Blueprint_TypesEnum.WeaponKit);\n\n            m_blueprintRequirementDependencies[(int)MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit] = new List<IMyBuildingRequirement>();\n            m_blueprintRequirementDependencies[(int)MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit].Add(m_blueprintRequirements[(int)MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit]);\n\n            m_blueprintRequirementDependencies[(int)MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit] = new List<IMyBuildingRequirement>();            \n            m_blueprintRequirementDependencies[(int)MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit].AddRange(m_blueprintRequirementDependencies[(int)MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit]);\n            m_blueprintRequirementDependencies[(int)MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit].Add(m_blueprintRequirements[(int)MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit]);\n\n            m_blueprintRequirementDependencies[(int)MyMwcObjectBuilder_Blueprint_TypesEnum.SuperiorConstructionKit] = new List<IMyBuildingRequirement>();\n            m_blueprintRequirementDependencies[(int)MyMwcObjectBuilder_Blueprint_TypesEnum.SuperiorConstructionKit].AddRange(m_blueprintRequirementDependencies[(int)MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit]);\n            m_blueprintRequirementDependencies[(int)MyMwcObjectBuilder_Blueprint_TypesEnum.SuperiorConstructionKit].Add(m_blueprintRequirements[(int)MyMwcObjectBuilder_Blueprint_TypesEnum.SuperiorConstructionKit]);\n\n            m_blueprintRequirementDependencies[(int)MyMwcObjectBuilder_Blueprint_TypesEnum.UtilitiesKit] = new List<IMyBuildingRequirement>();\n            m_blueprintRequirementDependencies[(int)MyMwcObjectBuilder_Blueprint_TypesEnum.UtilitiesKit].AddRange(m_blueprintRequirementDependencies[(int)MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit]);\n            m_blueprintRequirementDependencies[(int)MyMwcObjectBuilder_Blueprint_TypesEnum.UtilitiesKit].Add(m_blueprintRequirements[(int)MyMwcObjectBuilder_Blueprint_TypesEnum.UtilitiesKit]);\n\n            m_blueprintRequirementDependencies[(int)MyMwcObjectBuilder_Blueprint_TypesEnum.FortificationKit] = new List<IMyBuildingRequirement>();\n            m_blueprintRequirementDependencies[(int)MyMwcObjectBuilder_Blueprint_TypesEnum.FortificationKit].AddRange(m_blueprintRequirementDependencies[(int)MyMwcObjectBuilder_Blueprint_TypesEnum.SuperiorConstructionKit]);\n            m_blueprintRequirementDependencies[(int)MyMwcObjectBuilder_Blueprint_TypesEnum.FortificationKit].Add(m_blueprintRequirements[(int)MyMwcObjectBuilder_Blueprint_TypesEnum.FortificationKit]);\n\n            m_blueprintRequirementDependencies[(int)MyMwcObjectBuilder_Blueprint_TypesEnum.HonorableKit] = new List<IMyBuildingRequirement>();\n            m_blueprintRequirementDependencies[(int)MyMwcObjectBuilder_Blueprint_TypesEnum.HonorableKit].AddRange(m_blueprintRequirementDependencies[(int)MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit]);\n            m_blueprintRequirementDependencies[(int)MyMwcObjectBuilder_Blueprint_TypesEnum.HonorableKit].Add(m_blueprintRequirements[(int)MyMwcObjectBuilder_Blueprint_TypesEnum.HonorableKit]);\n\n            m_blueprintRequirementDependencies[(int)MyMwcObjectBuilder_Blueprint_TypesEnum.WeaponKit] = new List<IMyBuildingRequirement>();\n            m_blueprintRequirementDependencies[(int)MyMwcObjectBuilder_Blueprint_TypesEnum.WeaponKit].AddRange(m_blueprintRequirementDependencies[(int)MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit]);\n            m_blueprintRequirementDependencies[(int)MyMwcObjectBuilder_Blueprint_TypesEnum.WeaponKit].Add(m_blueprintRequirements[(int)MyMwcObjectBuilder_Blueprint_TypesEnum.WeaponKit]);\n            #endregion\n\n            #region prefabs\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab] = new MyBuildingSpecification[MyMwcUtils.GetMaxValueFromEnum<MyMwcObjectBuilder_Prefab_TypesEnum>() + 1];\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P430_A01_PASSAGE_10M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P430_A02_PASSAGE_40M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P424_A01_PIPE_BASE] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P423_A01_PIPE_JUNCTION] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P422_A01_PIPE_TURN_90] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P421_A01_PIPE_STRAIGHT_80M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P421_A02_PIPE_STRAIGHT_40M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P421_A03_PIPE_STRAIGHT_10M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P413_G01_JUNCTION_6AXES] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P414_G02_ENTRANCE_60M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P410_G01_TURN_90_RIGHT_0M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P411_G01_STRAIGHT_1] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P411_G02_STRAIGHT_2] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P411_G03_STRAIGHT_3] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P411_G04_STRAIGHT_4] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            //m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P414_F02_ENTRANCE_60M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P412_F21_TURN_S_UP] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P412_F22_TURN_S_LEFT] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P412_F23_TURN_S_RIGHT] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P412_F24_TURN_S_DOWN] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P412_F01_TURN_90_UP_230M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P412_F02_TURN_90_LEFT_230M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P412_F03_TURN_90_RIGHT_230M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P412_F04_TURN_90_DOWN_230M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P411_F01_STRAIGHT_1] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P411_F02_STRAIGHT_2] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P411_F03_STRAIGHT_3] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P414_E01_ENTRANCE_60M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P411_E01_STRAIGHT_1] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P411_E02_STRAIGHT_2] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P411_E03_STRAIGHT_3] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P411_E04_STRAIGHT_4] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P411_E05_STRAIGHT_5] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P415_D01_DOORCASE] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P415_D02_DOOR1] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P415_D03_DOOR2_A] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P415_D03_DOOR2_B] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P413_D01_JUNCTION_T_HORIZONTAL] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P413_D03_JUNCTION_X_HORIZONTAL] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P414_D01_ENTRANCE_60M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P411_D01_STRAIGHT_10M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P411_D02_STRAIGHT_40M_WITH_HOLE] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P411_D03_STRAIGHT_60M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P411_D04_STRAIGHT_120M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P411_D05_STRAIGHT_180M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));            \n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P413_C01_JUNCTION_T_HORIZONTAL] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P413_C01_JUNCTION_X_HORIZONTAL] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P414_C01_ENTRANCE_60M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P411_C01_STRAIGHT_10M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P411_C02_STRAIGHT_40M_WITH_HOLE] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P411_C03_STRAIGHT_60M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P411_C04_STRAIGHT_120M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P411_C05_STRAIGHT_180M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P415_B01_DOORCASE] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            //m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P415_B02_DOOR] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P413_B01_JUNCTION_T_HORIZONTAL] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P413_B02_JUNCTION_T_VERTICAL] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P414_B02_ENTRANCE_60M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P412_B21_TURN_S_UP] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P412_B22_TURN_S_LEFT] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P412_B23_TURN_S_RIGHT] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P412_B24_TURN_S_DOWN] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P412_B11_TURN_90_UP_160M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P412_B12_TURN_90_LEFT_160M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P412_B13_TURN_90_RIGHT_160M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P412_B14_TURN_90_DOWN_160M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P412_B01_TURN_90_UP_80M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P412_B02_TURN_90_LEFT_80M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P412_B03_TURN_90_RIGHT_80M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P412_B04_TURN_90_DOWN_80M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P411_B01_STRAIGHT_10M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.p411_B02_STRAIGHT_30M_YELLOW] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.p411_B04_STRAIGHT_80M_WITH_SIDE_GRATES] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));            \n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.p411_B03_STRAIGHT_320M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));            \n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.p411_B05_STRAIGHT_80M_WITH_SIDE_OPEN] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));                                    \n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P413_A01_JUNCTION_T_HORIZONTAL] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P413_A02_JUNCTION_T_VERTICAL] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            //m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P414_A01_ENTRANCE_30M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P414_A02_ENTRANCE_60M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P412_A21_TURN_S_UP] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P412_A22_TURN_S_LEFT] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P412_A23_TURN_S_RIGHT] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P412_A24_TURN_S_DOWN] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P412_A11_TURN_90_UP_160M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P412_A12_TURN_90_LEFT_160M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P412_A13_TURN_90_RIGHT_160M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P412_A14_TURN_90_DOWN_160M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P412_A01_TURN_90_UP_80M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P412_A02_TURN_90_LEFT_80M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P412_A03_TURN_90_RIGHT_80M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P412_A04_TURN_90_DOWN_80M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P411_A01_STRAIGHT_10M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P411_A02_STRAIGHT_60M_WITH_HOLE] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P411_A03_STRAIGHT_120M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P411_A04_STRAIGHT_80M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P411_A05_STRAIGHT_80M_WITH_EXTENSION] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P382_E01_BRIDGE5] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P382_D01_BRIDGE4] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P382_C01_BRIDGE3] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P382_B01_BRIDGE2] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P382_A01_BRIDGE1] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P381_C01_BUILDING4] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.UtilitiesKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P381_C01_BUILDING3] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.UtilitiesKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P381_B01_BUILDING2] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.UtilitiesKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P381_A01_BUILDING1] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.UtilitiesKit));            \n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P362_A01_SHORT_DISTANCE_ANTENNA] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.UtilitiesKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P361_A01_LONG_DISTANCE_ANTENNA] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.UtilitiesKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P351_A01_WEAPON_MOUNT] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P345_A01_REFINERY] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P344_A01_CONTAINER_ARM_FILLED] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P344_A02_CONTAINER_ARM_EMPTY] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P343_A01_ORE_STORAGE] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P342_A01_LOADING_BAY] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P341_B01_OPEN_DOCK_VARIATION1] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P341_B02_OPEN_DOCK_VARIATION2] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));            \n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P341_A02_OPEN_DOCK_VARIATION2] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P333_A01_HYDROPONIC_BUILDING] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.UtilitiesKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P332_A01_OXYGEN_STORAGE] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P331_A01_OXYGEN_GENERATOR] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P324B01_FUEL_STORAGE_B] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P324A01_FUEL_STORAGE_A] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P323A01_FUEL_GENERATOR] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P322A01_BATTERY] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));            \n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P321B01_NUCLEAR_REACTOR] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            //m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P321A01_SOLAR_PANEL] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P312A01_SHORT_TERM_THRUSTER_LATITUDE] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.UtilitiesKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P312A02_SHORT_TERM_THRUSTER_LATERAL] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.UtilitiesKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P311A01_LONG_TERM_THRUSTER] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.UtilitiesKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P231A01_ARMOR] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.FortificationKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P231A02_ARMOR] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.FortificationKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P231A03_ARMOR] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.FortificationKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P231A04_ARMOR] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.FortificationKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P231A05_ARMOR] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.FortificationKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P231A06_ARMOR] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.FortificationKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P231A07_ARMOR] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.FortificationKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P231A08_ARMOR] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.FortificationKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P231A09_ARMOR] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.FortificationKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P231A10_ARMOR] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.FortificationKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P231A11_ARMOR] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.FortificationKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P231A12_ARMOR] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.FortificationKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P231A13_ARMOR] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.FortificationKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P231A14_ARMOR] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.FortificationKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P231A15_ARMOR] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.FortificationKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P231A16_ARMOR] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.FortificationKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P231A17_ARMOR] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.FortificationKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P231A18_ARMOR] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.FortificationKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P221E01_CHAMBER_V1] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P221D01_CHAMBER_V1] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P221C01_CHAMBER_V1] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P221B01_CHAMBER_V1] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.SuperiorConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P221A01_CHAMBER_V1] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.SuperiorConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P211G01_PANEL_120MX60M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P211H01_PANEL_535MX130M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P211G02_PANEL_60MX60M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P211G03_PANEL_60MX30M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P211F01_PANEL_120MX60M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P211F02_PANEL_60MX60M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P211F03_PANEL_60MX30M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P211E01_PANEL_120MX60M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P211E02_PANEL_60MX60M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P211E03_PANEL_60MX30M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P211D01_PANEL_120MX60M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P211D02_PANEL_60MX60M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P211D03_PANEL_60MX30M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P211C01_PANEL_120MX60M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P211C02_PANEL_60MX60M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P211C03_PANEL_60MX30M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P211B01_PANEL_120MX60M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P211B02_PANEL_60MX60M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P211B03_PANEL_60MX30M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P211A01_PANEL_120MX60M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P211A02_PANEL_60MX60M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P211A03_PANEL_60MX30M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P142B01_CAGE_EMPTY] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P142B02_CAGE_HALFCUT] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P142B03_CAGE_WITH_CORNERS] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P142B11_CAGE_PILLAR] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P142B12_CAGE_EDGE] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P142A01_CAGE_EMPTY] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P142A02_CAGE_HALFCUT] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P142A03_CAGE_WITH_CORNERS] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P142A11_CAGE_PILLAR] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P142A12_CAGE_EDGE] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P141B01_THICK_FRAME_STRAIGHT_10M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P141B02_THICK_FRAME_STRAIGHT_60M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P141B11_THICK_FRAME_EDGE] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P141B12_THICK_FRAME_CORNER] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P141B31_THICK_FRAME_JOINT] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P141A01_THICK_FRAME_STRAIGHT_10M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P141A02_THICK_FRAME_STRAIGHT_60M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P141A11_THICK_FRAME_EDGE] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P141A12_THICK_FRAME_CORNER] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P141A31_THICK_FRAME_JOINT] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P120J01_J_STRAIGHT_30M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P130J02_J_STRAIGHT_10M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P120I01_I_STRAIGHT_30M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P130I02_I_STRAIGHT_10M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P120H01_H_STRAIGHT_30M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P130H02_H_STRAIGHT_10M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            //m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P120G01_G_STRAIGHT_30M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            //m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P130G02_G_STRAIGHT_10M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            //m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P120F01_F_STRAIGHT_30M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            //m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P130F02_F_STRAIGHT_10M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            //m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P120E01_E_STRAIGHT_30M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            //m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P130E02_E_STRAIGHT_10M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            //m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P120D01_D_STRAIGHT_30M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            //m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P130D02_D_STRAIGHT_10M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            //m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P120C01_C_STRAIGHT_30M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            //m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P130C02_C_STRAIGHT_10M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            //m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P120B01_B_STRAIGHT_30M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            //m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P130B02_B_STRAIGHT_10M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            //m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P120A01_A_STRAIGHT_30M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            //m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P130A02_A_STRAIGHT_10M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P120D01_D_STRAIGHT_10M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P120D02_D_STRAIGHT_40M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P120C01_C_STRAIGHT_10M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P120C02_C_STRAIGHT_40M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P120B01_B_STRAIGHT_10M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P120B02_B_STRAIGHT_40M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P120A01_STRONG_LATTICE_STRAIGHT_10M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P120A02_STRONG_LATTICE_STRAIGHT_60M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P120A03_STRONG_LATTICE_STRAIGHT_120M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P120A21_STRONG_LATTICE_JUNCTION_T_STRONG] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P120A22_STRONG_LATTICE_JUNCTION_T_WEAK] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P120A23_STRONG_LATTICE_JUNCTION_T_ROTATED] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P120A51_STRONG_TO_WEAK_LATTICE_2TO1] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P120A52_STRONG_TO_WEAK_LATTICE_1TO2] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P120A61_WEAK_LATTICE_JUNCTION_T_ROTATED] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P110B01_LATTICE_BEAM_STRAIGHT_10M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P110B02_LATTICE_BEAM_STRAIGHT_30M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P110B03_LATTICE_BEAM_STRAIGHT_60M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P110B04_LATTICE_BEAM_STRAIGHT_60M_WITH_PANELS] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P110B21_LATTICE_BEAM_JUNCTION_T_STRONG] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P110B22_LATTICE_BEAM_JUNCTION_T_WEAK] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P110B31_LATTICE_BEAM_JOINT_HORIZONTAL] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P110B32_LATTICE_BEAM_JOINT_VERTICAL] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P110A01_SOLID_BEAM_STRAIGHT_10M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P110A02_SOLID_BEAM_STRAIGHT_20M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P110A03_SOLID_BEAM_STRAIGHT_40M_WITH_HOLE] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P110A04_SOLID_BEAM_STRAIGHT_40M_LATTICE] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P110A05_SOLID_BEAM_STRAIGHT_80M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P110A11_SOLID_BEAM_JUNCTION_X_STRONG] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P110A12_SOLID_BEAM_JUNCTION_X_WEAK] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P110A13_SOLID_BEAM_JUNCTION_X_ROTATED] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P110A21_SOLID_BEAM_JUNCTION_T_STRONG] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P110A22_SOLID_BEAM_JUNCTION_T_WEAK] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P110A23_SOLID_BEAM_JUNCTION_T_ROTATED] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P110A31_SOLID_BEAM_JOINT_HORIZONTAL] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P110A32_SOLID_BEAM_JOINT_VERTICAL] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P110A33_SOLID_BEAM_JOINT_LONGITUDINAL] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P110A41_SOLID_BEAM_SUPERJOINT] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));                        \n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P511_A01_BILLBOARD] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.HonorableKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P511_A02_BILLBOARD] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.HonorableKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P511_A03_BILLBOARD] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.HonorableKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P511_A04_BILLBOARD] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.HonorableKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P511_A05_BILLBOARD] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.HonorableKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P511_A06_BILLBOARD] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.HonorableKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P511_A07_BILLBOARD] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.HonorableKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P511_A08_BILLBOARD] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.HonorableKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P511_A09_BILLBOARD] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.HonorableKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P511_A10_BILLBOARD] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.HonorableKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P511_A11_BILLBOARD] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.HonorableKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P511_A12_BILLBOARD] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.HonorableKit));            \n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P511_A14_BILLBOARD] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.HonorableKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P511_A15_BILLBOARD] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.HonorableKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P511_A16_BILLBOARD] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.HonorableKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P531_A01_SIGN1] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.HonorableKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P531_A02_SIGN2] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.HonorableKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P531_A03_SIGN3] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.HonorableKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P531_A04_SIGN4] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.HonorableKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P531_A05_SIGN5] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.HonorableKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P531_A06_SIGN6] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.HonorableKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P531_A07_SIGN7] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.HonorableKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P531_A08_SIGN8] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.HonorableKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P531_A09_SIGN9] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.HonorableKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P531_A10_SIGN10] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.HonorableKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P531_A11_SIGN11] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.HonorableKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P531_A12_SIGN12] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.HonorableKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_ADMINISTRATIVE_AREA] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.HonorableKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_ARMORY] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.HonorableKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_ARROW_L] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.HonorableKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_ARROW_R] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.HonorableKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_ARROW_STR] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.HonorableKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_CARGO_BAY] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.HonorableKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_COMMAND_CENTER] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.HonorableKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_COMMERCIAL_AREA] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.HonorableKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_COMMUNICATIONS] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.HonorableKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_DEFENSES] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.HonorableKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_DOCKS] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.HonorableKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_EMERGENCY_EXIT] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.HonorableKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_ENGINEERING_AREA] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.HonorableKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_EXIT] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.HonorableKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_EXPERIMENTAL_LABS] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.HonorableKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_FOUNDRY] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.HonorableKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_HABITATS] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.HonorableKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_HANGARS] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.HonorableKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_INDUSTRIAL_AREA] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.HonorableKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_LANDING_BAY] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.HonorableKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_MAINTENANCE] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.HonorableKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_MILITARY_AREA] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.HonorableKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_MINES] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.HonorableKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_ORE_PROCESSING] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.HonorableKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_OUTER_AREA] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.HonorableKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_PRISON] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.HonorableKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_PUBLIC_AREA] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.HonorableKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_REACTOR] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.HonorableKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_RESEARCH] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.HonorableKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_RESTRICTED_AREA] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.HonorableKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_SECURITY] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.HonorableKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_SIGN] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.HonorableKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_STORAGE] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.HonorableKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_TECHNICAL_AREA] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.HonorableKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_TRADE_PORT] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.HonorableKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P221_A02_CHAMBER_V2] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P221_B02_CHAMBER_V2] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P221_C02_CHAMBER_V2] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P221_D02_CHAMBER_V2] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P221_E02_CHAMBER_V2] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P130_A01_STRAIGHT_10M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P130_A02_STRAIGHT_30M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P130_B01_STRAIGHT_10M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P130_B02_STRAIGHT_30M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P130_C01_STRAIGHT_10M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P130_C02_STRAIGHT_30M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P130_D01_STRAIGHT_10M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P130_D02_STRAIGHT_30M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P130_E01_STRAIGHT_10M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P130_E02_STRAIGHT_30M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P321_B01_SOLAR_PANEL] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P321_C01_SOLAR_PANEL] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P321_D01_BIG_SOLAR_PANEL] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P413_D02_JUNCTION_T_VERTICAL] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P413_D04_JUNCTION_X_VERTICAL] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P412_F11_TURN_90_UP_230M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P412_F12_TURN_90_LEFT_230M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P412_F13_TURN_90_RIGHT_230M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P412_F14_TURN_90_DOWN_230M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P411_F04_STRAIGHT_4] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P411_F05_STRAIGHT_5] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P411_G05_STRAIGHT_5] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P414_F01_ENTRANCE_60M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P414_G01_ENTRANCE_60M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P571_A01_TRAFFIC_SIGN] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P571_B01_TRAFFIC_SIGN] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P571_BOX01_TRAFFIC_SIGN] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P571_BOX02_TRAFFIC_SIGN] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P571_C01_TRAFFIC_SIGN] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P571_D01_TRAFFIC_SIGN] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P571_E01_TRAFFIC_SIGN] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P571_F01_TRAFFIC_SIGN] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P571_G01_TRAFFIC_SIGN] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P571_H01_TRAFFIC_SIGN] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P571_I01_TRAFFIC_SIGN] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P571_J01_TRAFFIC_SIGN] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P571_K01_TRAFFIC_SIGN] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P571_L01_TRAFFIC_SIGN] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.SimpleObject] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            //m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.AsteroidPrefabTest] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));                        \n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.p411_B06_STRAIGHT_180M_CONCRETE] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.p411_B06_STRAIGHT_200M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.p411_B07_STRAIGHT_180M_BLUE] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.p411_B09_STRAIGHT_30M_GRAY] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.p411_B11_STRAIGHT_220M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.p411_B12_STRAIGHT_160M_DARK_METAL] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.p411_B13_STRAIGHT_100M_TUBE_INSIDE] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P385_A01_TEMPLE_900M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.UtilitiesKit));            \n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P383_A01_CHURCH] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.UtilitiesKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P334_A01_FOOD_GROW] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.UtilitiesKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P345_A01_BIO_EXP] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.UtilitiesKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P345_A01_BIO_MACH_EXP] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.UtilitiesKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P345_A01_RECYCLE] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.UtilitiesKit));            \n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P541_ESCAPE_POD] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.UtilitiesKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P541_ESCAPE_POD_BASE] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.UtilitiesKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P541_VENTILATOR_BODY] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.UtilitiesKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P541_VENTILATOR_PROPELLER] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.UtilitiesKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P541_VENTILATOR] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.UtilitiesKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P349_A_TOWER] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P349_B_TOWER] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int) MyMwcObjectBuilderTypeEnum.Prefab][(int) MyMwcObjectBuilder_Prefab_TypesEnum.P349_C_TOWER] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));            \n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_B_FACTION] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.HonorableKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_B_FACTION_HOLO] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.HonorableKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.ARMOR_HULL] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P212A01_PANEL_LARGE] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P212A01_PANEL_MEDIUM] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P212A01_PANEL_SMALL] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P212B02_PANEL_MEDIUM] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P212B02_PANEL_SMALL] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P212C03_PANEL_MEDIUM] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P212C03_PANEL_SMALL] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P212D04_PANEL_MEDIUM] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P212D04_PANEL_SMALL] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P212E05_PANEL_MEDIUM] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P212E05_PANEL_SMALL] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P221F01_CHAMBER_V1] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P221G01_CHAMBER_V1] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P221H01_CHAMBER_V1] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P221J01_CHAMBER_V1] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P221K01_CHAMBER_V1] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P341_C01_CLOSED_DOCK_V1] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P212B02_PANEL_LARGE] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P212C03_PANEL_LARGE] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P212D04_PANEL_LARGE] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P212E05_PANEL_LARGE] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P212F01_PANEL_LARGE] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P391_ALIEN_GATE] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.SuperiorConstructionKit));                        \n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P381_D03_HOSPITAL] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.UtilitiesKit));            \n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P381_D05_FOOD_GROW] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.UtilitiesKit));                        \n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.CABLE_CORNER_25M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.CABLE_S_45M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.CABLE_STRAIGHT_180] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.CABLE_STRAIGHT_45] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.CABLE_STRAIGHT_90] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.CONNECTION_BOX] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P361_B01_LONG_DISTANCE_ANTENNA_BIG] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.UtilitiesKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.FOURTH_REICH_WRECK] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P344_A03_CONTAINER] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P231B01_ARMOR] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.FortificationKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P231B01_ARMOR_CORNER] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.FortificationKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P231B01_ARMOR_EDGE] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.FortificationKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P231B01_ARMOR_HOLE] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.FortificationKit));\n\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P150A03_SHELF_1] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P150A02_SHELF_1X2] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P150A01_SHELF_1X3] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P611_ASTEROID_PART_A] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P611_ASTEROID_PART_B] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P363_A01_BIG_ANTENNA_300M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P130D02_D_STRAIGHT_300M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P130J01_J_STRAIGHT_300M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P120C02_C_STRAIGHT_400M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P110B03_LATTICE_BEAM_STRAIGHT_420M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P110B04_LATTICE_BEAM_STRAIGHT_420M_WITH_PANELS] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            \n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P363_A01_BIG_ANTENNA_1500M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P4221_A01_COOLING_DEVICE_WALL_340X400] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.UtilitiesKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P4222_A01_PIPES_CONNECTOR] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P4223_A01_OPEN_PIPE] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P311B01_LONG_TERM_THRUSTER] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.UtilitiesKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P221K01_CHAMBER_V2] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P581_A01_BARREL_BIOHAZARD] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.UtilitiesKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P581_A01_BARREL_BIOHAZARD_2] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.UtilitiesKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P581_A01_NUKE_BARREL] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.UtilitiesKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P581_A01_RED_BARREL] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.UtilitiesKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P581_A01_SIMPLE_BARREL] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.UtilitiesKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P581_A01_SIMPLE_BARREL_2] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.UtilitiesKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.BARREL_PROP_A] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.UtilitiesKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.BARREL_PROP_B] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.UtilitiesKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.BARREL_PROP_C] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.UtilitiesKit));\n            //m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.BARREL_PROP_D] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.UtilitiesKit));\n            //m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.BARREL_PROP_E] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.UtilitiesKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.CANNONBALL_CAPSULE_1] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.UtilitiesKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.GATTLING_AMMO_BELT] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.UtilitiesKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.MISSILE_PACK01] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.UtilitiesKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.MISSILE_PACK02] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.UtilitiesKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.MISSILE_PLAZMA01] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.UtilitiesKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.MISSILE_STACK_BIOCHEM01] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.UtilitiesKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P581_A01_O2_BARREL] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.UtilitiesKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.NUCLEAR_WARHEAD_CLOSED] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.UtilitiesKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.NUCLEAR_WARHEAD_OPEN] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.UtilitiesKit));            \n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P581_A01_NUKE_BARREL_1] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.UtilitiesKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P581_A01_SIMPLE_BARREL_3] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.UtilitiesKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P221L01_CHAMBER_V1] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P221M01_CHAMBER_BOTTOM_V1] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P221M01_CHAMBER_CENTER_V1] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P221M01_CHAMBER_TOP_V1] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P321E01_SOLAR_PANEL] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P110A06_SOLID_BEAM_STRAIGHT_420M] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P311B01_CUT_THRUSTER] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P312B01_CUT_THRUSTER_LATERAL] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P312B02_CUT_THRUSTER_LATITUDE] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.ALIEN_DETECTOR_UNIT] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P381_C01_BUILDING5] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P381_C01_BUILDING6] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P381_C01_BUILDING7] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P221N01_CHAMBER_V1] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_D_MEDIC_CROSS] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.ALIEN_ARTEFACT] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.BOMB] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.RAIL_GUN] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P345_A01_RECYCLE_SPHERE] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.PRISON] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P511_A17_BILLBOARD_PORTRAIT_1] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P511_A18_BILLBOARD] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P511_A19_BILLBOARD] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.DEAD_PILOT] = new MyBuildingSpecification(100, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P511_A17_BILLBOARD_PORTRAIT_2] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            #endregion\n\n            #region ammo\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo] = new MyBuildingSpecification[MyMwcUtils.GetMaxValueFromEnum<MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum>() + 1];\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_Armor_Piercing_Incendiary]\n                = new MyBuildingSpecification(7000,  GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.WeaponKit) );\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_Basic]\n                = new MyBuildingSpecification(7000,  GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.WeaponKit) );\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_BioChem]\n                = new MyBuildingSpecification(7000,  GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.WeaponKit) );\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_High_Speed]\n                = new MyBuildingSpecification(7000,  GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.WeaponKit) );\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_SAPHEI]\n                = new MyBuildingSpecification(7000,  GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.WeaponKit) );\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Automatic_Rifle_With_Silencer_BioChem]\n                = new MyBuildingSpecification(7000,  GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.WeaponKit) );\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Automatic_Rifle_With_Silencer_High_Speed]\n                = new MyBuildingSpecification(7000,  GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.WeaponKit) );\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Automatic_Rifle_With_Silencer_SAPHEI]\n                = new MyBuildingSpecification(7000,  GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.WeaponKit) );\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_Armor_Piercing_Incendiary]\n                = new MyBuildingSpecification(7000,  GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.WeaponKit) );\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_Basic]\n                = new MyBuildingSpecification(7000,  GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.WeaponKit) );\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_High_Speed]\n                = new MyBuildingSpecification(7000,  GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.WeaponKit) );\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_Proximity_Explosive]\n                = new MyBuildingSpecification(7000,  GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.WeaponKit) );\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_SAPHEI]\n                = new MyBuildingSpecification(7000,  GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.WeaponKit) );\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_Tunnel_Buster]\n                = new MyBuildingSpecification(7000,  GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.WeaponKit) );\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Guided_Missile_Engine_Detection]\n                = new MyBuildingSpecification(7000,  GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.WeaponKit) );\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Guided_Missile_Radar_Detection]\n                = new MyBuildingSpecification(7000,  GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.WeaponKit) );\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Guided_Missile_Visual_Detection]\n                = new MyBuildingSpecification(7000,  GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.WeaponKit) );\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Machine_Gun_Armor_Piercing_Incendiary]\n                = new MyBuildingSpecification(7000,  GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.WeaponKit) );\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Machine_Gun_Basic]\n                = new MyBuildingSpecification(7000,  GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.WeaponKit) );\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Machine_Gun_BioChem]\n                = new MyBuildingSpecification(7000,  GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.WeaponKit) );\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Machine_Gun_High_Speed]\n                = new MyBuildingSpecification(7000,  GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.WeaponKit) );\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Machine_Gun_SAPHEI]\n                = new MyBuildingSpecification(7000,  GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.WeaponKit) );\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Missile_Basic]\n                = new MyBuildingSpecification(7000,  GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.WeaponKit) );\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Shotgun_Armor_Piercing]\n                = new MyBuildingSpecification(7000,  GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.WeaponKit) );\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Shotgun_Basic]\n                = new MyBuildingSpecification(7000,  GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.WeaponKit) );\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Shotgun_Explosive]\n                = new MyBuildingSpecification(7000,  GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.WeaponKit) );\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Shotgun_High_Speed]\n                = new MyBuildingSpecification(7000,  GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.WeaponKit) );\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Sniper_BioChem]\n                = new MyBuildingSpecification(7000,  GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.WeaponKit) );\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Sniper_High_Speed]\n                = new MyBuildingSpecification(7000,  GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.WeaponKit) );\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Sniper_SAPHEI]\n                = new MyBuildingSpecification(7000,  GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.WeaponKit) );\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Asteroid_Killer]\n                = new MyBuildingSpecification(7000,  GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.WeaponKit) );\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Decoy_Flare]\n                = new MyBuildingSpecification(7000,  GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.WeaponKit) );\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Directional_Explosive]\n                = new MyBuildingSpecification(7000,  GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.WeaponKit) );\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Flash_Bomb]\n                = new MyBuildingSpecification(7000,  GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.WeaponKit) );\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Gravity_Bomb]\n                = new MyBuildingSpecification(7000,  GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.WeaponKit) );\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Hologram]\n                = new MyBuildingSpecification(7000,  GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.WeaponKit) );\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Illuminating_Shell]\n                = new MyBuildingSpecification(7000,  GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.WeaponKit) );\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Mine_Basic]\n                = new MyBuildingSpecification(7000,  GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.WeaponKit) );\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Mine_Smart]\n                = new MyBuildingSpecification(7000,  GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.WeaponKit) );\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Remote_Bomb]\n                = new MyBuildingSpecification(7000,  GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.WeaponKit) );\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Remote_Camera]\n                = new MyBuildingSpecification(7000,  GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.WeaponKit) );\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Smoke_Bomb]\n                = new MyBuildingSpecification(7000,  GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.WeaponKit) );\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Sphere_Explosive]\n                = new MyBuildingSpecification(7000,  GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.WeaponKit) );\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Time_Bomb]\n                = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.WeaponKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Mine_BioChem]\n                = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.WeaponKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Missile_BioChem]\n                = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.WeaponKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_BioChem]\n                = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.WeaponKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_EMP]\n                = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.WeaponKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Sniper_EMP]\n                = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.WeaponKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Machine_Gun_EMP]\n                = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.WeaponKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Missile_EMP]\n                = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.WeaponKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_EMP]\n                = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.WeaponKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_EMP_Bomb]\n                = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.WeaponKit));\n            #endregion\n\n            #region small ship weapons\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Weapon] = new MyBuildingSpecification[MyMwcUtils.GetMaxValueFromEnum<MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum>() + 1];\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Weapon][(int)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Autocanon]\n                = new MyBuildingSpecification(7000,  GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.WeaponKit) );\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Weapon][(int)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Automatic_Rifle_With_Silencer]\n                = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.WeaponKit) );\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Weapon][(int)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Cannon]\n                = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.WeaponKit) );\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Weapon][(int)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Crusher]\n                = new MyBuildingSpecification(7000,  GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.WeaponKit) );\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Weapon][(int)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Laser]\n                = new MyBuildingSpecification(7000,  GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.WeaponKit) );\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Weapon][(int)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Nuclear]\n                = new MyBuildingSpecification(7000,  GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.WeaponKit) );\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Weapon][(int)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Pressure]\n                = new MyBuildingSpecification(7000,  GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.WeaponKit) );\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Weapon][(int)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Saw]\n                = new MyBuildingSpecification(7000,  GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.WeaponKit) );\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Weapon][(int)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Thermal]\n                = new MyBuildingSpecification(7000,  GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.WeaponKit) );\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Weapon][(int)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Harvesting_Device]\n                = new MyBuildingSpecification(7000,  GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.WeaponKit) );\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Weapon][(int)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Machine_Gun]\n                = new MyBuildingSpecification(7000,  GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.WeaponKit) );\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Weapon][(int)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Missile_Launcher]\n                = new MyBuildingSpecification(7000,  GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.WeaponKit) );\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Weapon][(int)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Shotgun]\n                = new MyBuildingSpecification(7000,  GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.WeaponKit) );\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Weapon][(int)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Sniper]\n                = new MyBuildingSpecification(7000,  GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.WeaponKit) );\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Weapon][(int)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Universal_Launcher_Back]\n                = new MyBuildingSpecification(7000,  GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.WeaponKit) );\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Weapon][(int)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Universal_Launcher_Front]\n                = new MyBuildingSpecification(7000,  GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.WeaponKit) );\n            #endregion\n\n            #region Create Prefab Light Helpers (also included in Prefab helpers)\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.PrefabLight] = new MyBuildingSpecification[MyMwcUtils.GetMaxValueFromEnum<MyMwcObjectBuilder_PrefabLight_TypesEnum>() + 1];\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.PrefabLight][(int)MyMwcObjectBuilder_PrefabLight_TypesEnum.DEFAULT_LIGHT_0]\n                = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.PrefabLight][(int)MyMwcObjectBuilder_PrefabLight_TypesEnum.P521_A01_LIGHT1]\n                = new MyBuildingSpecification(7000,  GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit) );\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.PrefabLight][(int)MyMwcObjectBuilder_PrefabLight_TypesEnum.P521_A02_LIGHT2]\n                = new MyBuildingSpecification(7000,  GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit) );\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.PrefabLight][(int)MyMwcObjectBuilder_PrefabLight_TypesEnum.P521_A03_LIGHT3]\n                = new MyBuildingSpecification(7000,  GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit) );\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.PrefabLight][(int)MyMwcObjectBuilder_PrefabLight_TypesEnum.P521_A04_LIGHT4]\n                = new MyBuildingSpecification(7000,  GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit) );            \n            #endregion\n\n            #region Prefab particles\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.PrefabParticles] = new MyBuildingSpecification[MyMwcUtils.GetMaxValueFromEnum<MyMwcObjectBuilder_PrefabParticles_TypesEnum>() + 1];\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.PrefabParticles][(int)MyMwcObjectBuilder_PrefabParticles_TypesEnum.DEFAULT_PARTICLE_PREFAB_0]\n                = new MyBuildingSpecification(7000,  GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit) );\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.PrefabParticles][(int)MyMwcObjectBuilder_PrefabParticles_TypesEnum.P551_A01_PARTICLES]\n                = new MyBuildingSpecification(7000,  GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit) );\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.PrefabParticles][(int)MyMwcObjectBuilder_PrefabParticles_TypesEnum.P551_B01_PARTICLES]\n                = new MyBuildingSpecification(7000,  GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit) );\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.PrefabParticles][(int)MyMwcObjectBuilder_PrefabParticles_TypesEnum.P551_C01_PARTICLES]\n                = new MyBuildingSpecification(7000,  GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit) );\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.PrefabParticles][(int)MyMwcObjectBuilder_PrefabParticles_TypesEnum.P551_D01_PARTICLES]\n                = new MyBuildingSpecification(7000,  GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit) );            \n            #endregion\n\n            #region Prefab sound\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.PrefabSound] = new MyBuildingSpecification[MyMwcUtils.GetMaxValueFromEnum<MyMwcObjectBuilder_PrefabSound_TypesEnum>() + 1];\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.PrefabSound][(int)MyMwcObjectBuilder_PrefabSound_TypesEnum.DEFAULT_SOUND_PREFAB_0]\n                = new MyBuildingSpecification(7000,  GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit) );\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.PrefabSound][(int)MyMwcObjectBuilder_PrefabSound_TypesEnum.P561_A01_SOUND]\n                = new MyBuildingSpecification(7000,  GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit) );\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.PrefabSound][(int)MyMwcObjectBuilder_PrefabSound_TypesEnum.P561_B01_SOUND]\n                = new MyBuildingSpecification(7000,  GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit) );\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.PrefabSound][(int)MyMwcObjectBuilder_PrefabSound_TypesEnum.P561_C01_SOUND]\n                = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.PrefabSound][(int)MyMwcObjectBuilder_PrefabSound_TypesEnum.P561_D01_SOUND]\n                = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.PrefabSound][(int)MyMwcObjectBuilder_PrefabSound_TypesEnum.MOTHERSHIP_SOUND]\n                = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.PrefabSound][(int)MyMwcObjectBuilder_PrefabSound_TypesEnum.MADELINE_MOTHERSHIP_SOUND]\n                = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));            \n            #endregion\n\n            #region Prefab kinematic\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.PrefabKinematic] = new MyBuildingSpecification[MyMwcUtils.GetMaxValueFromEnum<MyMwcObjectBuilder_Blueprint_TypesEnum>() + 1];\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.PrefabKinematic][(int)MyMwcObjectBuilder_PrefabKinematic_TypesEnum.P415_C01_DOOR1] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.PrefabKinematic][(int)MyMwcObjectBuilder_PrefabKinematic_TypesEnum.P415_C01_DOOR2] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.PrefabKinematic][(int)MyMwcObjectBuilder_PrefabKinematic_TypesEnum.P415_C01_DOOR3] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.PrefabKinematic][(int)MyMwcObjectBuilder_PrefabKinematic_TypesEnum.P415_C01_DOOR4] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.PrefabKinematic][(int)MyMwcObjectBuilder_PrefabKinematic_TypesEnum.P341_A01_OPEN_DOCK_VARIATION1] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.PrefabKinematic][(int)MyMwcObjectBuilder_PrefabKinematic_TypesEnum.P415_A01_DOORCASE] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));            \n            #endregion\n\n            #region prefab largeship\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.PrefabLargeShip] = new MyBuildingSpecification[MyMwcUtils.GetMaxValueFromEnum<MyMwcObjectBuilder_PrefabLargeShip_TypesEnum>() + 1];\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.PrefabLargeShip][(int)MyMwcObjectBuilder_PrefabLargeShip_TypesEnum.LARGESHIP_ARDANT]\n                = new MyBuildingSpecification(7000, new BindingList<IMyBuildingRequirement>());\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.PrefabLargeShip][(int)MyMwcObjectBuilder_PrefabLargeShip_TypesEnum.LARGESHIP_KAI]\n                = new MyBuildingSpecification(7000, new BindingList<IMyBuildingRequirement>());\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.PrefabLargeShip][(int)MyMwcObjectBuilder_PrefabLargeShip_TypesEnum.LARGESHIP_SAYA]\n                = new MyBuildingSpecification(7000, new BindingList<IMyBuildingRequirement>());\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.PrefabLargeShip][(int)MyMwcObjectBuilder_PrefabLargeShip_TypesEnum.FOURTH_REICH_MOTHERSHIP]\n                = new MyBuildingSpecification(7000, new BindingList<IMyBuildingRequirement>());\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.PrefabLargeShip][(int)MyMwcObjectBuilder_PrefabLargeShip_TypesEnum.FOURTH_REICH_MOTHERSHIP_B]\n                = new MyBuildingSpecification(7000, new BindingList<IMyBuildingRequirement>());\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.PrefabLargeShip][(int)MyMwcObjectBuilder_PrefabLargeShip_TypesEnum.RUS_MOTHERSHIP]\n                = new MyBuildingSpecification(7000, new BindingList<IMyBuildingRequirement>());\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.PrefabLargeShip][(int)MyMwcObjectBuilder_PrefabLargeShip_TypesEnum.RUSSIAN_MOTHERSHIP_HUMMER]\n                = new MyBuildingSpecification(7000, new BindingList<IMyBuildingRequirement>());\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.PrefabLargeShip][(int)MyMwcObjectBuilder_PrefabLargeShip_TypesEnum.MSHIP_BODY]\n                = new MyBuildingSpecification(7000, new BindingList<IMyBuildingRequirement>());\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.PrefabLargeShip][(int)MyMwcObjectBuilder_PrefabLargeShip_TypesEnum.MSHIP_ENGINE]\n                = new MyBuildingSpecification(7000, new BindingList<IMyBuildingRequirement>());\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.PrefabLargeShip][(int)MyMwcObjectBuilder_PrefabLargeShip_TypesEnum.MSHIP_SHIELD_BACK_LARGE_LEFT]\n                = new MyBuildingSpecification(7000, new BindingList<IMyBuildingRequirement>());\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.PrefabLargeShip][(int)MyMwcObjectBuilder_PrefabLargeShip_TypesEnum.MSHIP_SHIELD_BACK_LARGE_RIGHT]\n                = new MyBuildingSpecification(7000, new BindingList<IMyBuildingRequirement>());\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.PrefabLargeShip][(int)MyMwcObjectBuilder_PrefabLargeShip_TypesEnum.MSHIP_SHIELD_BACK_SMALL_LEFT]\n                = new MyBuildingSpecification(7000, new BindingList<IMyBuildingRequirement>());\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.PrefabLargeShip][(int)MyMwcObjectBuilder_PrefabLargeShip_TypesEnum.MSHIP_SHIELD_BACK_SMALL_RIGHT]\n                = new MyBuildingSpecification(7000, new BindingList<IMyBuildingRequirement>());\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.PrefabLargeShip][(int)MyMwcObjectBuilder_PrefabLargeShip_TypesEnum.MSHIP_SHIELD_FRONT_LARGE_LEFT]\n                = new MyBuildingSpecification(7000, new BindingList<IMyBuildingRequirement>());\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.PrefabLargeShip][(int)MyMwcObjectBuilder_PrefabLargeShip_TypesEnum.MSHIP_SHIELD_FRONT_LARGE_RIGHT]\n                = new MyBuildingSpecification(7000, new BindingList<IMyBuildingRequirement>());\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.PrefabLargeShip][(int)MyMwcObjectBuilder_PrefabLargeShip_TypesEnum.MSHIP_SHIELD_FRONT_SMALL_LEFT]\n                = new MyBuildingSpecification(7000, new BindingList<IMyBuildingRequirement>());\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.PrefabLargeShip][(int)MyMwcObjectBuilder_PrefabLargeShip_TypesEnum.MSHIP_SHIELD_FRONT_SMALL_RIGHT]\n                = new MyBuildingSpecification(7000, new BindingList<IMyBuildingRequirement>());\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.PrefabLargeShip][(int)MyMwcObjectBuilder_PrefabLargeShip_TypesEnum.MSHIP_SHIELD_FRONT_SMALL02_LEFT]\n                = new MyBuildingSpecification(7000, new BindingList<IMyBuildingRequirement>());\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.PrefabLargeShip][(int)MyMwcObjectBuilder_PrefabLargeShip_TypesEnum.MSHIP_SHIELD_FRONT_SMALL02_RIGHT]\n                = new MyBuildingSpecification(7000, new BindingList<IMyBuildingRequirement>());\n            #endregion\n\n            #region prefab largeship weapons\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.PrefabLargeWeapon] = new MyBuildingSpecification[MyMwcUtils.GetMaxValueFromEnum<MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum>() + 1];\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.PrefabLargeWeapon][(int)MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A01_LARGESHIP_AUTOCANNON]\n                = new MyBuildingSpecification(7000,  GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit) );\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.PrefabLargeWeapon][(int)MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A01_LARGESHIP_CIWS]\n                = new MyBuildingSpecification(7000,  GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit) );\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.PrefabLargeWeapon][(int)MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A01_LARGESHIP_MACHINEGUN]\n                = new MyBuildingSpecification(7000,  GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit) );\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.PrefabLargeWeapon][(int)MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A01_LARGESHIP_MISSILE_BASIC4]\n                = new MyBuildingSpecification(7000,  GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.WeaponKit) );\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.PrefabLargeWeapon][(int)MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A01_LARGESHIP_MISSILE_BASIC6]\n                = new MyBuildingSpecification(7000,  GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.WeaponKit) );\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.PrefabLargeWeapon][(int)MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A01_LARGESHIP_MISSILE_BASIC9]\n                = new MyBuildingSpecification(7000,  GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.WeaponKit) );\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.PrefabLargeWeapon][(int)MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A02_LARGESHIP_MISSILE_GUIDED4]\n                = new MyBuildingSpecification(7000,  GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.WeaponKit) );\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.PrefabLargeWeapon][(int)MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A02_LARGESHIP_MISSILE_GUIDED6]\n                = new MyBuildingSpecification(7000,  GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.WeaponKit) );\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.PrefabLargeWeapon][(int)MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A02_LARGESHIP_MISSILE_GUIDED9]\n                = new MyBuildingSpecification(7000,  GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.WeaponKit) );                   \n            #endregion\n\n            #region prefab hangars\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.PrefabHangar] = new MyBuildingSpecification[MyMwcUtils.GetMaxValueFromEnum<MyMwcObjectBuilder_PrefabHangar_TypesEnum>() + 1];\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.PrefabHangar][(int)MyMwcObjectBuilder_PrefabHangar_TypesEnum.VENDOR]\n                = new MyBuildingSpecification(7000,  GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit) );\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.PrefabHangar][(int)MyMwcObjectBuilder_PrefabHangar_TypesEnum.HANGAR]\n                = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            #endregion\n\n            #region prefab kinematic part\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.PrefabKinematicPart] = new MyBuildingSpecification[MyMwcUtils.GetMaxValueFromEnum<MyMwcObjectBuilder_PrefabKinematicPart_TypesEnum>() + 1];\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.PrefabKinematicPart][(int)MyMwcObjectBuilder_PrefabKinematicPart_TypesEnum.P415_C02_DOOR1_RIGHT] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.PrefabKinematicPart][(int)MyMwcObjectBuilder_PrefabKinematicPart_TypesEnum.P415_C02_DOOR1_LEFT] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.PrefabKinematicPart][(int)MyMwcObjectBuilder_PrefabKinematicPart_TypesEnum.P415_C03_DOOR2_A] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.PrefabKinematicPart][(int)MyMwcObjectBuilder_PrefabKinematicPart_TypesEnum.P415_C03_DOOR2_B] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.PrefabKinematicPart][(int)MyMwcObjectBuilder_PrefabKinematicPart_TypesEnum.P415_C03_DOOR2_A_LEFT] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.PrefabKinematicPart][(int)MyMwcObjectBuilder_PrefabKinematicPart_TypesEnum.P415_C03_DOOR2_A_RIGHT] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.PrefabKinematicPart][(int)MyMwcObjectBuilder_PrefabKinematicPart_TypesEnum.P415_C03_DOOR2_B_LEFT] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.PrefabKinematicPart][(int)MyMwcObjectBuilder_PrefabKinematicPart_TypesEnum.P415_C03_DOOR2_B_RIGHT] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.PrefabKinematicPart][(int)MyMwcObjectBuilder_PrefabKinematicPart_TypesEnum.P341_A01_OPEN_DOCK_VARIATION1_DOORLEFT] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.PrefabKinematicPart][(int)MyMwcObjectBuilder_PrefabKinematicPart_TypesEnum.P341_A01_OPEN_DOCK_VARIATION1_DOORRIGHT] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.PrefabKinematicPart][(int)MyMwcObjectBuilder_PrefabKinematicPart_TypesEnum.P415_A02_DOOR_LEFT] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.PrefabKinematicPart][(int)MyMwcObjectBuilder_PrefabKinematicPart_TypesEnum.P415_A02_DOOR_RIGHT] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit));\n            #endregion\n\n            #region prefab foundation factory\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.PrefabFoundationFactory] = new MyBuildingSpecification[MyMwcUtils.GetMaxValueFromEnum<MyMwcObjectBuilder_PrefabFoundationFactory_TypesEnum>() + 1];\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.PrefabFoundationFactory][(int)MyMwcObjectBuilder_PrefabFoundationFactory_TypesEnum.DEFAULT]\n                = new MyBuildingSpecification(7000, new BindingList<IMyBuildingRequirement>());\n            #endregion\n\n            #region prefab generator\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.PrefabGenerator] = new MyBuildingSpecification[MyMwcUtils.GetMaxValueFromEnum<MyMwcObjectBuilder_PrefabGenerator_TypesEnum>() + 1];\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.PrefabGenerator][(int)MyMwcObjectBuilder_PrefabGenerator_TypesEnum.P321C01_INERTIA_GENERATOR] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.UtilitiesKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.PrefabGenerator][(int)MyMwcObjectBuilder_PrefabGenerator_TypesEnum.P321C03_CENTRIFUGE] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.UtilitiesKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.PrefabGenerator][(int)MyMwcObjectBuilder_PrefabGenerator_TypesEnum.P321C04_BOX_GENERATOR] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.UtilitiesKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.PrefabGenerator][(int)MyMwcObjectBuilder_PrefabGenerator_TypesEnum.P321C05_CENTRIFUGE_BIG] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.UtilitiesKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.PrefabGenerator][(int)MyMwcObjectBuilder_PrefabGenerator_TypesEnum.P321C02_GENERATOR_WALL_BIG] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.UtilitiesKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.PrefabGenerator][(int)MyMwcObjectBuilder_PrefabGenerator_TypesEnum.P321C06_INERTIA_GENERATOR_B] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.UtilitiesKit));\n            m_buildingSpecifications[(int)MyMwcObjectBuilderTypeEnum.PrefabGenerator][(int)MyMwcObjectBuilder_PrefabGenerator_TypesEnum.P321C07_GENERATOR] = new MyBuildingSpecification(7000, GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum.UtilitiesKit));            \n            #endregion            \n\n            foreach (MyMwcObjectBuilder_Blueprint_TypesEnum blueprint in Enum.GetValues(typeof(MyMwcObjectBuilder_Blueprint_TypesEnum)))\n            {\n                MyCommonDebugUtils.AssertDebug(GetBlueprintRequirements(blueprint) != null);\n            }\n\n            AssertObjectBuilder(MyMwcObjectBuilderTypeEnum.Prefab);\n            AssertObjectBuilder(MyMwcObjectBuilderTypeEnum.PrefabLight);\n            AssertObjectBuilder(MyMwcObjectBuilderTypeEnum.PrefabParticles);\n            AssertObjectBuilder(MyMwcObjectBuilderTypeEnum.PrefabSound);\n            AssertObjectBuilder(MyMwcObjectBuilderTypeEnum.PrefabKinematic);\n            AssertObjectBuilder(MyMwcObjectBuilderTypeEnum.PrefabLargeShip);\n            AssertObjectBuilder(MyMwcObjectBuilderTypeEnum.PrefabLargeWeapon);\n            AssertObjectBuilder(MyMwcObjectBuilderTypeEnum.PrefabHangar);\n            AssertObjectBuilder(MyMwcObjectBuilderTypeEnum.SmallShip_Ammo);\n            AssertObjectBuilder(MyMwcObjectBuilderTypeEnum.SmallShip_Weapon);\n        }\n\n        // this method is there because we need load and check asserts when the game started\n        public static void Check()\n        {\n            MyMwcLog.WriteLine(\"MyBuildingSpecifications.Check()\");\n        }\n\n        private static void AssertObjectBuilder(MyMwcObjectBuilderTypeEnum objectBuilderType)\n        {\n            // check if there are valid ObjectBuilderIds for concrete ObjectBuilderType\n            var buildingSpecificationsForType = m_buildingSpecifications[(int)objectBuilderType];\n            MyCommonDebugUtils.AssertDebug(buildingSpecificationsForType != null);\n            for (int objectBuilderId = 0; objectBuilderId < buildingSpecificationsForType.Length; objectBuilderId++)\n            {\n                var buildingSpecification = buildingSpecificationsForType[objectBuilderId];\n                if (buildingSpecification != null)\n                {\n                    MyCommonDebugUtils.AssertDebug(MyMwcObjectBuilder_Base.IsObjectBuilderIdValid(objectBuilderType, objectBuilderId));\n                }\n            }\n\n            // check if there are all objectbuilder's types and ids\n            int[] objectBuilderIDs = MyMwcObjectBuilder_Base.GetObjectBuilderIDs(objectBuilderType);\n            foreach (int objectBuilderId in objectBuilderIDs)\n            {\n                MyCommonDebugUtils.AssertDebug(buildingSpecificationsForType[objectBuilderId] != null);\n            }            \n        }\n\n        private static List<IMyBuildingRequirement> GetBlueprintRequirements(MyMwcObjectBuilder_Blueprint_TypesEnum blueprintType)\n        {\n            try\n            {\n                return m_blueprintRequirementDependencies[(int)blueprintType];\n            }\n            catch\n            {\n                return null;                \n            }\n        }\n\n        public static MyBuildingSpecification GetBuildingSpecification(MyMwcObjectBuilderTypeEnum objectBuilderType, int objectBuilderId)\n        {\n            try\n            {\n                return m_buildingSpecifications[(int)objectBuilderType][objectBuilderId];\n            }\n            catch\n            {\n                return null;\n            }\n        }\n\n        public static MyBuildingSpecification GetBuildingSpecification(MyMwcObjectBuilder_Base objectBuilder)\n        {\n            int objectBuilderId = objectBuilder.GetObjectBuilderId() != null\n                                      ? objectBuilder.GetObjectBuilderId().Value\n                                      : 0;\n            return GetBuildingSpecification(objectBuilder.GetObjectBuilderType(), objectBuilderId);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/FoundationFactory/MyFoundationFactory.cs",
    "content": "﻿//using System;\n//using System.Collections.Generic;\n//using System.Diagnostics;\n//using System.Linq;\n//using System.Text;\n//using MinerWarsMath;\n//using MinerWars.AppCode.App;\n//using MinerWars.AppCode.Game.Gameplay;\n//using MinerWars.AppCode.Game.HUD;\n//using MinerWars.AppCode.Game.Inventory;\n//using MinerWars.AppCode.Game.Localization;\n//using MinerWars.AppCode.Game.Entities.Prefabs;\n//using MinerWars.AppCode.Game.Entities.Tools;\n//using MinerWars.AppCode.Game.Managers.Session;\n//using MinerWars.AppCode.Game.Models;\n//using MinerWars.AppCode.Game.Utils;\n//using MinerWars.AppCode.Game.World;\n//using MinerWars.AppCode.Physics;\n//using MinerWars.CommonLIB.AppCode.ObjectBuilders;\n//using MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\n//using MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\n\n//namespace MinerWars.AppCode.Game.Entities.FoundationFactory\n//{\n//    internal delegate void OnBuildingComplete(MyFoundationFactory sender, MyObjectToBuild buildedObject);\n\n//    /// <summary>\n//    /// Foundation factory entity\n//    /// </summary>\n//    class MyFoundationFactory : MyEntity//, IMyInventory\n//    {\n//        #region Fields\n//        private int m_buildingTimeFromStart;          // elapsed time from when building started\n//        private bool m_isBuilding;                      // is building now\n//        //private BoundingSphere m_boundingShere;         // helper bounding sphere to detecting\n//        private MyNanoRepairToolFoundationFactory m_nanoRepairTool;\n//        #endregion\n\n//        #region Properties\n//        ///// <summary>\n//        ///// Inventory of foundation factory\n//        ///// </summary>\n//        //public MyInventory Inventory { get { return PrefabContainer.Inventory; } }\n\n//        /// <summary>\n//        /// Build objects collection\n//        /// </summary>\n//        public List<MyObjectToBuild> BuildObjects { get; private set; }\n\n//        /// <summary>\n//        /// Building queue\n//        /// </summary>\n//        public List<MyObjectToBuild> BuildingQueue { get; private set; }\n\n//        /// <summary>\n//        /// Actual building object\n//        /// </summary>\n//        public MyObjectToBuild BuildingObject { get; private set; }\n\n//        /// <summary>\n//        /// Prefab container of foundation factory\n//        /// </summary>\n//        public MyPrefabContainer PrefabContainer { get; private set; }\n\n//        /// <summary>\n//        /// Owner of foundation factory\n//        /// </summary>\n//        public MyPlayer Player { get; private set; }        \n\n//        /// <summary>\n//        /// Is building enabled\n//        /// </summary>\n//        public bool IsBuilding\n//        {\n//            get { return m_isBuilding; }\n//        }\n\n//        /// <summary>\n//        /// Time left to complete building\n//        /// </summary>\n//        public int TimeToCompleteBuldingLeft\n//        {\n//            get\n//            {\n//                if(IsBuilding)\n//                {\n//                    return BuildingObject.BuildingSpecification.BuildingTime - m_buildingTimeFromStart;\n//                } \n//                else\n//                {\n//                    return 0;\n//                }\n//            }\n//        }\n\n//        /// <summary>\n//        /// How much is building complete\n//        /// </summary>\n//        public float BuildingPercentageComplete\n//        {\n//            get\n//            {\n//                if(IsBuilding)\n//                {\n//                    if (BuildingObject.BuildingSpecification.BuildingTime > 0)\n//                    {\n//                        return (float)m_buildingTimeFromStart/BuildingObject.BuildingSpecification.BuildingTime;\n//                    }\n//                    else\n//                    {\n//                        return 1f;\n//                    }\n//                }\n//                else\n//                {\n//                    return 0f;\n//                }\n//            }\n//        }\n//        #endregion\n\n//        #region Events\n//        /// <summary>\n//        /// Call when building complete\n//        /// </summary>\n//        public event OnBuildingComplete BuildingComplete;        \n//        #endregion\n\n//        #region Ctors\n//        /// <summary>\n//        /// Creates new instance of foundation factory\n//        /// </summary>\n//        /// <param name=\"player\">Owner of foundation factory</param>\n//        public MyFoundationFactory(MyPlayer player)\n//        {                        \n//            BuildObjects = new List<MyObjectToBuild>();\n//            BuildingQueue = new List<MyObjectToBuild>();\n//            BuildingObject = null;\n\n//            PrefabContainer = null;\n\n//            Player = player;\n\n//            m_buildingTimeFromStart = 0;\n//            m_isBuilding = false;                        \n//        }\n//        #endregion\n\n//        #region Methods\n//        /// <summary>\n//        /// Starts building\n//        /// </summary>\n//        public void StartBuilding()\n//        {\n//            if (IsBuilding)\n//            {\n//                throw new Exception(\"Building is already started\");\n//            }\n\n//            if (BuildingObject == null)\n//            {\n//                if (BuildingQueue.Count == 0)\n//                {\n//                    throw new Exception(\"There are nothing to build\");\n//                }\n                \n//                SetBuildingNextObject();\n//                m_buildingTimeFromStart = 0;\n//            }\n\n//            m_isBuilding = true;\n//        }\n\n//        /// <summary>\n//        /// Stops building\n//        /// </summary>\n//        public void StopBuilding()\n//        {\n//            if (!IsBuilding)\n//            {\n//                throw new Exception(\"Building is not running\");\n//            }\n\n//            m_isBuilding = false;\n//        }\n\n//        /// <summary>\n//        /// Cancels actual building object\n//        /// </summary>\n//        public void CancelBuilding()\n//        {\n//            if (!IsBuilding)\n//            {\n//                throw new Exception(\"Building is not running\");\n//            }\n\n//            ChangeInventoryItemsAmount(false, MyFoundationFactoryConstants.RETURN_AMOUNT_RATIO * m_buildingTimeFromStart / BuildingObject.BuildingSpecification.BuildingTime, BuildingObject);\n//            if (BuildingQueue.Count > 0)\n//            {\n//                SetBuildingNextObject();\n//            } \n//            else\n//            {\n//                BuildingObject = null;\n//                m_isBuilding = false;\n//            }\n\n//            m_buildingTimeFromStart = 0;            \n//        }\n\n//        /// <summary>\n//        /// Adds object to building queue\n//        /// </summary>\n//        /// <param name=\"objectToBuild\">Object to build</param>\n//        public void AddToBuildingQueue(MyObjectToBuild objectToBuild)\n//        {            \n//            if(!objectToBuild.BuildingSpecification.CanBuild(this))\n//            {\n//                throw new Exception(\"You can't build this!\");\n//            }\n\n//            BuildingQueue.Add(objectToBuild);\n//            ChangeInventoryItemsAmount(true, 1f, objectToBuild);            \n\n//            if(!IsBuilding)\n//            {\n//                StartBuilding();\n//            }            \n//        }\n\n//        /// <summary>\n//        /// Removes object from building queue\n//        /// </summary>\n//        /// <param name=\"objectToBuild\">Object to build</param>\n//        public void RemoveFromBuildingQueue(MyObjectToBuild objectToBuild)\n//        {\n//            int indexOfLastObjectToBuild = BuildingQueue.FindLastIndex(x => x == objectToBuild);\n//            if(indexOfLastObjectToBuild >= 0)\n//            {\n//                BuildingQueue.RemoveAt(indexOfLastObjectToBuild);\n//            }            \n//            ChangeInventoryItemsAmount(false, MyFoundationFactoryConstants.RETURN_AMOUNT_RATIO, objectToBuild);            \n//        }\n\n//        /// <summary>\n//        /// Removes build object from build objects collection\n//        /// </summary>\n//        /// <param name=\"objectToBuild\">Build object</param>\n//        public void RemoveFromBuildObjects(MyObjectToBuild objectToBuild)\n//        {\n//            BuildObjects.Remove(objectToBuild);\n//        }                        \n\n//        /// <summary>\n//        /// Sets next object from building queue to building\n//        /// </summary>\n//        private void SetBuildingNextObject()\n//        {\n//            if(BuildingQueue.Count == 0)\n//            {\n//                throw new Exception(\"There is no object to build in building queue\");\n//            }\n            \n//            BuildingObject = BuildingQueue[0];\n//            BuildingQueue.RemoveAt(0);            \n//        }\n\n//        /// <summary>\n//        /// Changes inventory item's amount. When add/remove object to/from building queue\n//        /// </summary>\n//        /// <param name=\"remove\">Remove = true, Add = false</param>\n//        /// <param name=\"ratio\">Ratio of item's amount</param>\n//        /// <param name=\"objectToBuild\">Object to build</param>\n//        private void ChangeInventoryItemsAmount(bool remove, float ratio, MyObjectToBuild objectToBuild)\n//        {\n//            foreach (IMyBuildingRequirement buildingRequirement in objectToBuild.BuildingSpecification.BuildingRequirements)\n//            {\n//                MyBuildingRequirementInventoryItem buildingRequirementInventoryItem = buildingRequirement as MyBuildingRequirementInventoryItem;\n//                if (buildingRequirementInventoryItem != null)\n//                {\n//                    if (buildingRequirementInventoryItem.RemoveAfterBuild)\n//                    {\n//                        if (remove)\n//                        {\n//                            Player.Ship.Inventory.RemoveInventoryItemAmount(buildingRequirementInventoryItem.ObjectBuilderType,\n//                                                            buildingRequirementInventoryItem.ObjectBuilderId,\n//                                                            buildingRequirementInventoryItem.Amount * ratio);\n//                        } \n//                        else\n//                        {\n//                            Player.Ship.Inventory.AddInventoryItem(buildingRequirementInventoryItem.ObjectBuilderType,\n//                                                            buildingRequirementInventoryItem.ObjectBuilderId,\n//                                                            buildingRequirementInventoryItem.Amount * ratio, false);\n//                        }\n//                    }\n//                }\n//            }\n//        }\n\n//        /// <summary>\n//        /// Completes actual building\n//        /// </summary>\n//        private void CompleteBuilding()\n//        {\n//            MyObjectToBuild buildObject = BuildingObject;\n//            PrefabContainer.Inventory.AddInventoryItem(buildObject.ObjectBuilder, buildObject.Amount, false);\n//            //BuildObjects.Add(buildObject);            );\n\n//            if(BuildingQueue.Count != 0)\n//            {\n//                SetBuildingNextObject();\n//            } \n//            else\n//            {\n//                BuildingObject = null;\n//                m_isBuilding = false;                \n//            }\n\n//            m_buildingTimeFromStart = 0;\n\n//            if (BuildingComplete != null)\n//            {\n//                BuildingComplete(this, buildObject);\n//            }\n//        }\n\n//        /// <summary>\n//        /// Creates new foundation factory from player's inventory. When player has no foundation factory in inventory, then returns result false.\n//        /// </summary>\n//        /// <param name=\"player\">Owner of foundation factory</param>\n//        /// <param name=\"result\">Result of foundation factory creation</param>\n//        /// <returns>Instance of new foundation factory</returns>\n//        public static MyFoundationFactory TryCreateFoundationFactory(MyPlayer player, out bool result)\n//        {\n//            MyFoundationFactory foundationFactory = null;\n//            List<MyInventoryItem> foundationFactories = player.Ship.Inventory.GetInventoryItems(MyMwcObjectBuilderTypeEnum.FoundationFactory, null);\n//            if (foundationFactories.Count == 0)\n//            {\n//                result = false;                \n//            }\n//            else\n//            {\n//                MyMwcObjectBuilder_FoundationFactory foundationFactoryBuilder =\n//                    MyMwcObjectBuilder_Base.CreateNewObject(MyMwcObjectBuilderTypeEnum.FoundationFactory, null) as MyMwcObjectBuilder_FoundationFactory;\n//                foundationFactoryBuilder.PrefabContainer = new MyMwcObjectBuilder_PrefabContainer(\n//                    null, MyMwcObjectBuilder_PrefabContainer_TypesEnum.INSTANCE, new List<MyMwcObjectBuilder_PrefabBase>(), MyClientServer.LoggedPlayer.GetUserId(),\n//                    player.Faction, new MyMwcObjectBuilder_Inventory(new List<MyMwcObjectBuilder_InventoryItem>(), 1000));\n\n//                Matrix ffWorld = Matrix.Identity;\n//                ffWorld.Translation = player.Ship.WorldMatrix.Translation + player.Ship.WorldMatrix.Forward * 20;\n//                //Matrix ffWorld = Matrix.CreateWorld(player.Ship.WorldMatrix.Translation + player.Ship.WorldMatrix.Forward * 20,\n//                //                                    player.Ship.WorldMatrix.Forward, player.Ship.WorldMatrix.Up);                \n//                foundationFactory = new MyFoundationFactory(player);\n//                foundationFactory.Init(null, foundationFactoryBuilder, ffWorld);\n//                MyEntities.Add(foundationFactory);\n\n//                MyInventoryItem foundationFactoryItem = foundationFactories[0];\n//                foundationFactories.RemoveAt(0);\n//                player.Ship.Inventory.RemoveInventoryItemAmount(ref foundationFactoryItem, 1f);\n                                \n//                result = true;\n//            }\n//            return foundationFactory;\n//        }\n\n//        /// <summary>\n//        /// Inits foundation factory \n//        /// </summary>\n//        /// <param name=\"hudLabelText\">HUD label text</param>\n//        /// <param name=\"objectBuilder\">Object builder of foundation factory</param>\n//        /// <param name=\"matrix\">World's matrix</param>\n//        public virtual void Init(string hudLabelText, MyMwcObjectBuilder_FoundationFactory objectBuilder, Matrix matrix)\n//        {\n//            InitFoundationFactory(hudLabelText, objectBuilder, matrix);\n\n//            Debug.Assert(objectBuilder.PrefabContainer != null);\n\n//            Matrix pcWorld = WorldMatrix;\n//            pcWorld.Translation = WorldVolume.Center;\n//            PrefabContainer = new MyPrefabContainer();\n//            PrefabContainer.Init(null, objectBuilder.PrefabContainer, pcWorld);\n//            PrefabContainer.AssignToFoundationFactory(this);\n          \n//            PrefabContainer.Inventory.OnInventoryContentChange += OnInventoryContentChanged;            \n            \n//        }\n\n//        /// <summary>\n//        /// Inits foundation factory and assign existing prefab container\n//        /// </summary>\n//        /// <param name=\"hudLabelText\">HUD label text</param>\n//        /// <param name=\"objectBuilder\">Object builder of foundation factory</param>\n//        /// <param name=\"assignedPrefabContainer\">Assigned prefab container</param>\n//        public virtual void Init(string hudLabelText, MyMwcObjectBuilder_FoundationFactory objectBuilder, MyPrefabContainer assignedPrefabContainer)\n//        {                        \n//            InitFoundationFactory(hudLabelText, objectBuilder, assignedPrefabContainer.WorldMatrix);\n\n//            Matrix newWorldMatrix = WorldMatrix;\n//            newWorldMatrix.Translation += (WorldMatrix.Translation - WorldVolume.Center);\n//            SetWorldMatrix(newWorldMatrix);\n\n//            PrefabContainer = assignedPrefabContainer;\n//            PrefabContainer.AssignToFoundationFactory(this);            \n\n//            PrefabContainer.Inventory.OnInventoryContentChange += OnInventoryContentChanged;            \n//        }\n\n//        private void InitFoundationFactory(string hudLabelText, MyMwcObjectBuilder_FoundationFactory objectBuilder, Matrix matrix)\n//        {\n//            Debug.Assert(objectBuilder != null);            \n\n//            StringBuilder hudLabelTextSb = string.IsNullOrEmpty(hudLabelText) ? MyTextsWrapper.Get(MyTextsWrapperEnum.FoundationFactory) : new StringBuilder(hudLabelText);\n\n//            base.Init(hudLabelTextSb, MyModelsEnum.FoundationFactory, null, null, null, objectBuilder);\n\n//            SetWorldMatrix(matrix);\n\n//            m_isBuilding = objectBuilder.IsBuilding;\n//            m_buildingTimeFromStart = objectBuilder.BuildingTimeFromStart;\n//            if (objectBuilder.BuildingObject != null)\n//            {\n//                BuildingObject = MyObjectToBuild.CreateFromObjectBuilder(objectBuilder.BuildingObject.ObjectBuilder, objectBuilder.BuildingObject.Amount);\n//            }\n//            if (objectBuilder.BuildingQueue != null)\n//            {\n//                foreach (MyMwcObjectBuilder_ObjectToBuild buildingQueue in objectBuilder.BuildingQueue)\n//                {\n//                    BuildingQueue.Add(MyObjectToBuild.CreateFromObjectBuilder(buildingQueue.ObjectBuilder, buildingQueue.Amount));\n//                }\n//            }\n\n//            base.InitBoxPhysics(MyMaterialType.METAL, ModelLod0, 1f, 0f, MyConstants.COLLISION_LAYER_ALL, RigidBodyFlag.RBF_RBO_STATIC);\n\n//            MyHud.RemoveText(this);            \n//        }\n\n//        private void OnInventoryContentChanged(MyInventory sender)\n//        {\n//            if (sender.GetInventoryItems(MyMwcObjectBuilderTypeEnum.SmallShip_Tool, (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.NANO_REPAIR_TOOL).Count > 0)\n//            {\n//                if (m_nanoRepairTool == null)\n//                {\n//                    m_nanoRepairTool = new MyNanoRepairToolFoundationFactory(this);\n//                }\n//            }\n//            else\n//            {\n//                m_nanoRepairTool = null;                \n//            }\n//        }\n\n//        #endregion\n\n//        #region Overriden methods\n//        public override void Update()\n//        {\n//            base.Update();\n\n//            if (IsBuilding)\n//            {\n//                m_buildingTimeFromStart += MyConstants.PHYSICS_STEP_SIZE_IN_MILLISECONDS;\n//                if (m_buildingTimeFromStart >= BuildingObject.BuildingSpecification.BuildingTime)\n//                {\n//                    CompleteBuilding();\n//                }\n//            }\n\n//            if (m_nanoRepairTool != null)\n//            {\n//                m_nanoRepairTool.Use();\n//            }\n//        }        \n\n//        protected override MyMwcObjectBuilder_Base  GetObjectBuilderInternal(bool getExactCopy)\n//        {\n//            MyMwcObjectBuilder_Base objectBuilderBase = base.GetObjectBuilderInternal(getExactCopy);\n//            MyMwcObjectBuilder_FoundationFactory ffBuilder = objectBuilderBase as MyMwcObjectBuilder_FoundationFactory;\n//            if (ffBuilder != null)\n//            {\n//                ffBuilder.BuildingObject = BuildingObject != null ? new MyMwcObjectBuilder_ObjectToBuild(BuildingObject.ObjectBuilder, BuildingObject.Amount) : null;\n//                ffBuilder.IsBuilding = m_isBuilding;\n//                ffBuilder.BuildingTimeFromStart = m_buildingTimeFromStart;\n//                ffBuilder.PrefabContainer = PrefabContainer.GetObjectBuilder(getExactCopy) as MyMwcObjectBuilder_PrefabContainer;\n//                ffBuilder.BuildingQueue = new List<MyMwcObjectBuilder_ObjectToBuild>();                \n//                foreach (MyObjectToBuild objectToBuild in BuildingQueue)\n//                {\n//                    ffBuilder.BuildingQueue.Add(new MyMwcObjectBuilder_ObjectToBuild(objectToBuild.ObjectBuilder, objectToBuild.Amount));\n//                }                \n//                //objectBuilderBase = ffBuilder;\n//            }\n//            return objectBuilderBase;\n//        }\n\n//        public override MyMwcObjectBuilder_FactionEnum Faction\n//        {\n//            get\n//            {\n//                return Player.Faction;\n//            }\n//        }\n\n//        #endregion\n//    }\n//}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/FoundationFactory/MyObjectToBuild.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Gameplay;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\n\nnamespace MinerWars.AppCode.Game.Entities.FoundationFactory\n{\n    /// <summary>\n    /// Object, which can be build in foundation factory\n    /// </summary>\n    class MyObjectToBuild\n    {\n        /// <summary>\n        /// Object's object builder\n        /// </summary>\n        public MyMwcObjectBuilder_Base ObjectBuilder { get; set; }\n\n        /// <summary>\n        /// Building specification\n        /// </summary>\n        public MyBuildingSpecification BuildingSpecification { get; set; }\n\n        /// <summary>\n        /// Amount of builded object\n        /// </summary>\n        public float Amount { get; set; }\n        \n        /// <summary>\n        /// Creates new instance of object to build\n        /// </summary>\n        /// <param name=\"objectBuilder\">Object builder</param>\n        /// <param name=\"buildingSpecification\">Building specification</param>\n        /// <param name=\"amount\">Amount</param>\n        public MyObjectToBuild(MyMwcObjectBuilder_Base objectBuilder, MyBuildingSpecification buildingSpecification, float amount)\n        {\n            ObjectBuilder = objectBuilder;\n            BuildingSpecification = buildingSpecification;\n            Amount = amount;\n        }                \n\n        /// <summary>\n        /// Returns new instance of object to build with max amount from gameplay properties\n        /// </summary>\n        /// <param name=\"objectBuilder\">Object builder</param>\n        /// <returns>New instance of object to build</returns>\n        public static MyObjectToBuild CreateFromObjectBuilder(MyMwcObjectBuilder_Base objectBuilder)\n        {\n            //warning: use default faction for get gameplay properties for creating object to build\n            float amount = MyGameplayConstants.GetGameplayProperties(objectBuilder, MyMwcObjectBuilder_FactionEnum.Euroamerican).MaxAmount;\n            return MyObjectToBuild.CreateFromObjectBuilder(objectBuilder, amount);\n        }\n\n        /// <summary>\n        /// Returns new instance of object to build with specified amount\n        /// </summary>\n        /// <param name=\"objectBuilder\">Object builder</param>\n        /// <param name=\"amount\">Amount</param>\n        /// <returns>New instance of object to build</returns>\n        public static MyObjectToBuild CreateFromObjectBuilder(MyMwcObjectBuilder_Base objectBuilder, float amount)\n        {\n            MyBuildingSpecification buildingSpecification = MyBuildingSpecifications.GetBuildingSpecification(objectBuilder);\n            MyObjectToBuild objectToBuild = new MyObjectToBuild(objectBuilder, buildingSpecification, amount);\n            return objectToBuild;\n        }\n\n        public static bool HasSameObjectBuilders(MyObjectToBuild obj1, MyObjectToBuild obj2)\n        {\n            if (obj1 == null || obj2 == null)\n            {\n                return false;\n            }\n            else\n            {\n                return obj1.ObjectBuilder.GetObjectBuilderType() == obj2.ObjectBuilder.GetObjectBuilderType() &&\n                       obj1.ObjectBuilder.GetObjectBuilderId() == obj2.ObjectBuilder.GetObjectBuilderId();\n            }\n        }\n\n        public bool IsSame(MyObjectToBuild other)\n        {\n            if (other == null)\n            {\n                return false;\n            }\n\n            if(Amount != other.Amount)\n            {\n                return false;\n            }\n\n            bool hasSameObjectBuilder = ObjectBuilder.GetObjectBuilderType() == other.ObjectBuilder.GetObjectBuilderType() &&\n                       ObjectBuilder.GetObjectBuilderId() == other.ObjectBuilder.GetObjectBuilderId();\n\n            if(ObjectBuilder is MyMwcObjectBuilder_PrefabBase)\n            {\n                hasSameObjectBuilder = hasSameObjectBuilder &&\n                                       ((MyMwcObjectBuilder_PrefabBase) ObjectBuilder).FactionAppearance ==\n                                       ((MyMwcObjectBuilder_PrefabBase) other.ObjectBuilder).FactionAppearance;\n            }\n\n            return hasSameObjectBuilder;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/IMyEditableEntity.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\n\nnamespace MinerWars.AppCode.Game.Entities\n{\n    interface IMyEditableEntity\n    {\n        /// <summary>\n        /// Set diffuse color to selected color\n        /// </summary>\n        void HighlightEntity(ref Vector3 vctColor);\n        \n        /// <summary>\n        /// HighlightEntity\n        /// </summary>\n        /// <param name=\"?\"></param>\n        void ClearHighlightning();\n\n        /// <summary>\n        /// Return if entity can be selected in editor - guns under \n        /// </summary>\n        /// <returns></returns>\n        bool IsSelectable();\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/IMyHasFaction.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\n\nnamespace MinerWars.AppCode.Game.Entities\n{\n    interface IMyHasFaction\n    {\n        MyMwcObjectBuilder_FactionEnum Faction { get; }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/IResetable.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace MinerWars.AppCode.Game.Entities\n{\n    interface IResetable\n    {\n        void Reset();\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/InfluenceSpheres/MyInfluenceSphere.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Text;\n\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Prefabs;\nusing MinerWars.AppCode.Game.Render;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.AppCode.Game.World;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.InfluenceSpheres;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils.Utils;\nusing MinerWars.AppCode.Game.GUI.Helpers;\nusing MinerWars.AppCode.Physics.Collisions;\nusing MinerWars.AppCode.Game.HUD;\nusing MinerWars.AppCode.Game.GUI.Core;\n\nnamespace MinerWars.AppCode.Game.Entities.InfluenceSpheres\n{\n    /// <summary>\n    /// Abstract class for all influence areas (spheres and boxes).\n    /// </summary>\n    class MyInfluenceSphere : MyEntity\n    {\n        /// <summary>\n        /// Flags describing which effects if this influence sphere are active.\n        /// </summary>\n        public MyInfluenceFlags InfluenceFlags;\n\n        #region Radius\n\n        /// <summary>\n        /// Entities closer to the center of the influence sphere than this value\n        /// will be influenced in full strength.\n        /// </summary>\n        public float RadiusMin\n        {\n            get { return m_radiusMin; }\n            set\n            {\n                Debug.Assert(value <= m_radiusMax);\n                m_radiusMin = value;\n            }\n        }\n\n        private float m_radiusMin;\n\n        /// <summary>\n        /// Entities closer to the center of the influence sphere than this value\n        /// will be influenced. If the entity is between this and RadiusMin, then the\n        /// strength of the influence is linearly interpolated.\n        /// </summary>\n        public float RadiusMax\n        {\n            get { return m_radiusMax; }\n            set\n            {\n                Debug.Assert(value >= m_radiusMin);\n                m_radiusMax = value;\n                m_radiusMaxSquared = m_radiusMax * m_radiusMax;\n                this.LocalAABB = BoundingBox.CreateFromSphere(new BoundingSphere(Vector3.Zero, m_radiusMax));\n             //   this.UpdateRenderobject(this.Visible);\n            }\n        }\n        private float m_radiusMaxSquared;\n\n        private float m_radiusMax;\n\n        #endregion\n\n        private Color m_dustColor;\n        public Color DustColor\n        {\n            set { m_dustColor = value; }\n            get { return m_dustColor; Refresh(); }\n        }\n\n        /// <summary>\n        /// The magnitude of the radioactivity.\n        /// </summary>\n        public float Magnitude;\n\n        #region Sound stuff\n\n        private MySoundCuesEnum m_cueEnum;\n        protected MySoundCue? m_cue;\n        private float m_volume;\n        private float m_influenceStrengthCamera;\n        private float m_influenceStrengthShip;\n\n        //protected MyInfluenceSphereSoundsEnum m_soundType;        \n\n        protected float Volume\n        {\n            get { return m_volume; }\n            set { m_volume = value; Refresh(); }\n        }\n\n        #endregion\n\n        public override bool Enabled\n        {\n            set\n            {\n                if (Enabled != value)\n                {\n                    if (!value)\n                    {\n                        DisableEffects();\n                    }\n                }\n\n                base.Enabled = value;\n                NeedsUpdate = value;\n            }\n        }\n\n        private void Refresh()\n        {\n            m_influenceStrengthCamera = m_influenceStrengthShip = -1;\n        }\n\n        void DisableEffects()\n        {\n            RestoreSectorDust();\n\n            if (m_cue.HasValue)\n            {\n                m_cue.Value.Stop(SharpDX.XACT3.StopFlags.Immediate);\n            }\n        }\n\n        #region Influence types\n\n        public bool IsDust\n        {\n            get\n            {\n                return (InfluenceFlags & MyInfluenceFlags.Dust) != 0;\n            }\n            set\n            {\n                if (value)\n                {\n                    InfluenceFlags |= MyInfluenceFlags.Dust;\n                }\n                else\n                {\n                    InfluenceFlags &= (~MyInfluenceFlags.Dust);\n                }\n\n                OnFlagChanged();\n            }\n        }\n\n        public bool IsRadioactivity\n        {\n            get\n            {\n                return (InfluenceFlags & MyInfluenceFlags.Radioactivity) != 0;\n            }\n            set\n            {\n                if (value)\n                {\n                    InfluenceFlags |= MyInfluenceFlags.Radioactivity;\n                }\n                else\n                {\n                    InfluenceFlags &= (~MyInfluenceFlags.Radioactivity);\n                }\n\n                OnFlagChanged();\n            }\n        }\n\n        public bool IsSound\n        {\n            get\n            {\n                return (InfluenceFlags & MyInfluenceFlags.Sound) != 0;\n            }\n            set\n            {\n                if (value)\n                {\n                    InfluenceFlags |= MyInfluenceFlags.Sound;\n                }\n                else\n                {\n                    InfluenceFlags &= (~MyInfluenceFlags.Sound);\n                }\n\n                OnFlagChanged();\n            }\n        }\n\n        #endregion\n\n        #region Init\n\n        public static void Init()\n        {\n            MyRender.RegisterRenderModule(MyRenderModuleEnum.InfluenceSpheres, \"Influence spheres\", DrawInGame, MyRenderStage.DebugDraw, false);\n        }\n\n        public void Init(StringBuilder hudLabelText, MyMwcObjectBuilder_InfluenceSphere objectBuilder, Matrix matrix)\n        {\n            // Influence spheres dont have hud label text\n            base.Init(hudLabelText, objectBuilder);\n\n            InfluenceFlags = objectBuilder.InfluenceFlags;\n\n            m_radiusMin = objectBuilder.RadiusMin;\n            RadiusMax = objectBuilder.RadiusMax;\n            DustColor = objectBuilder.DustColor;\n            Magnitude = objectBuilder.Magnitude;\n\n            VisibleInGame = false;\n\n            SetWorldMatrix(matrix);\n\n            Enabled = objectBuilder.Enabled;\n\n            NeedsUpdate = Enabled;\n            Save = true;\n\n            //m_soundType = objectBuilder.SoundType;\n            //MySoundCuesEnum cueEnum = GetSoundCueByObjectBuilderType(m_soundType);\n            //m_cueEnum = cueEnum;\n            m_cueEnum = (MySoundCuesEnum)objectBuilder.SoundCueId;\n\n            if ((InfluenceFlags & MyInfluenceFlags.Sound) > 0)\n            {\n                MyGuiInfluenceSphereHelper musicHelper = MyGuiInfluenceSphereHelpers.GetInfluenceSphereSoundHelper(m_cueEnum);\n                if (musicHelper == null || !musicHelper.Description.ToString().ToLower().StartsWith(\"amb2d_\"))\n                {\n                    if (musicHelper == null)\n                    {\n                        Debug.Fail(\"Incorrect influence sphere sound doesn't exist\");\n                        MyMwcLog.WriteLine(\"Incorrect influence sphere sound doesn't exist\");\n                    }\n                    else\n                    {\n                        Debug.Fail(\"Incorrect influence sphere sound: \" + musicHelper.Description.ToString() + \", deleted\");\n                        MyMwcLog.WriteLine(\"Incorrect influence sphere sound: \" + musicHelper.Description.ToString() + \", deleted\");\n                    }\n                }\n            }\n\n            Flags |= EntityFlags.EditableInEditor;\n        }\n        #endregion\n\n        private float CalculateInfluenceStrength(Vector3 position)\n        {\n            float distanceFromCenterSquared = Vector3.DistanceSquared(position, this.GetPosition());\n\n            if (distanceFromCenterSquared > m_radiusMaxSquared)\n                return 0;\n\n            float distanceFromCenter = (float)Math.Sqrt(distanceFromCenterSquared);\n\n            float distanceFromInnerRadius = distanceFromCenter - RadiusMin;\n            if (distanceFromInnerRadius < 0)\n            {\n                return 1;\n            }\n            else\n            {\n                float distanceFromOuterRadius = RadiusMax - distanceFromCenter;\n\n                float interpolationAreaLength = RadiusMax - RadiusMin;\n\n                return MathHelper.Clamp(distanceFromOuterRadius / interpolationAreaLength, 0, 1);\n            }\n        }\n\n\n        public override bool Draw(MyRenderObject renderObject)\n        {\n            bool drawDebug = MyRender.IsModuleEnabled(MyRenderStage.DebugDraw, MyRenderModuleEnum.InfluenceSpheres);\n            var isEditorOrDebugDraw = MyGuiScreenGamePlay.Static.IsEditorActive() || drawDebug;\n\n            if (isEditorOrDebugDraw && MyRender.GetCurrentLodDrawPass() == MyLodTypeEnum.LOD0 && !MyEntities.IsTypeHidden(typeof(MyInfluenceSphere)))\n            {\n                Matrix worldMatrix = WorldMatrix;\n\n                var innerColor = Color.White.ToVector4();\n                var innerSphere = new BoundingSphere(worldMatrix.Translation, RadiusMin);\n                MySimpleObjectDraw.DrawTransparentSphere(ref worldMatrix, innerSphere.Radius, ref innerColor, true, 12,\n                                                         MyTransparentMaterialEnum.ObjectiveDummyFace,\n                                                         MyTransparentMaterialEnum.ObjectiveDummyLine);\n\n                var outerColor = 0.5f * innerColor;\n                var outerSphere = new BoundingSphere(worldMatrix.Translation, RadiusMax);\n                MySimpleObjectDraw.DrawTransparentSphere(ref worldMatrix, outerSphere.Radius, ref outerColor, true, 12,\n                                                         MyTransparentMaterialEnum.ObjectiveDummyFace,\n                                                         MyTransparentMaterialEnum.ObjectiveDummyLine);\n            }\n\n            return true;\n        }\n\n        public override void DebugDrawDeactivated()\n        {\n            if (Activated || !Visible)\n            {\n                return;\n            }\n\n            MyDebugDraw.DrawSphereWireframe(Matrix.CreateScale(RadiusMax) * WorldMatrix, Color.Green.ToVector3(), 1f);\n        }\n\n        private static void DrawInGame()\n        {\n            // dummy method\n        }\n\n        protected override MyMwcObjectBuilder_Base GetObjectBuilderInternal(bool getExactCopy)\n        {\n            var objectBuilder = (MyMwcObjectBuilder_InfluenceSphere)base.GetObjectBuilderInternal(getExactCopy);\n\n            objectBuilder.InfluenceFlags = InfluenceFlags;\n\n            objectBuilder.RadiusMin = RadiusMin;\n            objectBuilder.RadiusMax = RadiusMax;\n            objectBuilder.Magnitude = Magnitude;\n            objectBuilder.DustColor = DustColor;\n            //objectBuilder.SoundType = m_soundType;\n            objectBuilder.SoundCueId = (short)m_cueEnum;\n\n            return objectBuilder;\n        }\n\n        #region Intersections\n\n        public override bool GetIntersectionWithBoundingFrustum(ref BoundingFrustum boundingFrustum)\n        {\n            ContainmentType con = boundingFrustum.Contains(WorldAABB);\n            return con == ContainmentType.Contains || con == ContainmentType.Intersects;\n        }\n\n        public override bool GetIntersectionWithLine(ref MyLine line, out Vector3? v, bool useCollisionModel = true, IntersectionFlags flags = IntersectionFlags.ALL_TRIANGLES)\n        {\n            v = null;\n            Ray ray = new Ray(line.From, line.Direction);\n            float? ds = ray.Intersects(new BoundingSphere(WorldMatrix.Translation, RadiusMax));\n            if (ds == null)\n                return false;\n            v = line.From + line.Direction * ds;\n            return true;\n        }\n\n        public override bool GetIntersectionWithSphere(ref BoundingSphere sphere)\n        {\n            var boundingSphere = new BoundingSphere(WorldMatrix.Translation, RadiusMax);\n            return boundingSphere.Intersects(sphere);\n        }\n\n        #endregion\n\n        private void ChangeDustColor(float influenceStrength)\n        {\n            Debug.Assert(IsDust);\n\n            float dust = influenceStrength;\n\n            if (influenceStrength <= 0.001f)\n            {\n                MyParticlesDustField.CustomColor = null;\n            }\n            else\n            {\n                Color interpolatedColor = Color.Lerp(\n                    MySector.ParticleDustProperties.Color,\n                    DustColor,\n                    influenceStrength);\n\n                MyParticlesDustField.CustomColor = interpolatedColor;\n            }\n        }\n\n        protected void ChangeSound(float influenceStrength)\n        {\n            Debug.Assert(IsSound);\n            Volume = influenceStrength * (MyFakes.ENABLE_DEBUG_INFLUENCE_SPHERES_SOUNDS ? m_maxVolume : 100.0f);\n            if (m_volume <= 0.0f)\n            {\n                if (m_cue.HasValue)\n                {\n                    m_cue.Value.Stop(SharpDX.XACT3.StopFlags.Release);\n                }\n            }\n            else\n            {\n                if ((m_cue.HasValue == false) || (m_cue.Value.IsPlaying == false))\n                {\n                    m_cue = MyAudio.AddCue2D(m_cueEnum, m_volume);\n                }\n\n                MyAudio.UpdateCueAmbVolume(m_cue, m_volume);\n            }\n\n        }\n        protected void ChangeRadioactivity(float influenceStrength)\n        {\n            Debug.Assert(IsRadioactivity);\n            if (MyGuiScreenGamePlay.Static.ControlledEntity == MySession.PlayerShip)\n            {\n                MySession.PlayerShip.RadioactivityAmount = Magnitude * CalculateInfluenceStrength(MySession.PlayerShip.GetPosition());\n            }\n        }\n    \n\n\n        protected void OnFlagChanged()\n        {\n            if (!IsDust)\n            {\n                RestoreSectorDust();\n            }\n\n            if (!IsSound)\n            {\n                Volume = 0;\n\n                if (m_cue.HasValue)\n                {\n                    m_cue.Value.Stop(SharpDX.XACT3.StopFlags.Immediate);\n                }\n            }\n        }\n\n        public override void Close()\n        {\n            DisableEffects();\n\n            base.Close();\n        }\n\n        private static void RestoreSectorDust()\n        {\n            MyParticlesDustField.CustomColor = null;\n        }\n\n        public void ChangeCueEnum(MySoundCuesEnum soundCue)\n        {\n            m_cueEnum = soundCue;\n        }\n\n        public override void UpdateBeforeSimulation()\n        {\n            base.UpdateBeforeSimulation();\n\n            if (IsDust || IsSound)\n            {\n                float influence = CalculateInfluenceStrength(MyCamera.Position);\n                if (m_influenceStrengthCamera != influence)\n                {\n                    if (IsDust)\n                        ChangeDustColor(influence);\n                    if (IsSound)\n                        ChangeSound(influence);\n                    m_influenceStrengthCamera = influence;\n                }\n\n                #region DEBUGING\n                if (MyFakes.ENABLE_DEBUG_INFLUENCE_SPHERES_SOUNDS && IsSound) \n                {\n                    if (influence > 0f)\n                    {\n                        if (influence > m_nearestInfluenceSphereStrength)\n                        {\n                            m_nearestInfluenceSphere = this;\n                            if (m_notification == null) \n                            {\n                                m_notification = new MyHudNotification.MyNotification(m_nearestInfluenceSphere.m_cueEnum.ToString() + \":\" + (int)m_maxVolume, MyGuiManager.GetFontMinerWarsBlue());\n                                MyHudNotification.AddNotification(m_notification);\n                            }                            \n                        }\n                    }\n                    else \n                    {\n                        if (m_nearestInfluenceSphere == this) \n                        {\n                            m_nearestInfluenceSphere = null;\n                            m_nearestInfluenceSphereStrength = 0f;\n                            if (m_notification != null) \n                            {\n                                m_notification.Disappear();\n                                m_notification = null;\n                            }\n                        }\n                    }\n                }\n                #endregion\n            }\n\n            if (IsRadioactivity)\n            {\n                float influence = CalculateInfluenceStrength(MySession.PlayerShip.GetPosition());\n                if (m_influenceStrengthShip != influence)\n                {\n                    ChangeRadioactivity(influence);\n                    m_influenceStrengthShip = influence;\n                }\n            }\n        }\n\n        #region DEBUGING\n        private static MyInfluenceSphere m_nearestInfluenceSphere = null;\n        private static float m_nearestInfluenceSphereStrength = 0f;\n        private static List<MySoundCuesEnum> m_sounds;\n        private static MyHudNotification.MyNotification m_notification = null;\n        private static float m_maxVolume = 100f;\n\n        public static void UpdateMaxVolume(bool forward) \n        {\n            float increment = forward ? 10f : -10f;\n            m_maxVolume = MathHelper.Clamp(m_maxVolume + increment, 0f, 100f);\n            if (m_nearestInfluenceSphere != null)\n            {\n                m_nearestInfluenceSphere.ChangeSound(m_nearestInfluenceSphereStrength);\n            }\n            if (m_notification != null)\n            {\n                m_notification.Disappear();\n                m_notification = null;\n            }\n        }\n\n        public static void SwitchToNextSound(bool forward) \n        {\n            if (m_nearestInfluenceSphere != null) \n            {\n                if (m_sounds == null) \n                {\n                    LoadSounds();                    \n                }\n                int currentIndex = m_sounds.IndexOf(m_nearestInfluenceSphere.m_cueEnum);\n                if (forward)\n                {\n                    currentIndex++;\n                    if (currentIndex >= m_sounds.Count)\n                    {\n                        currentIndex = 0;\n                    }\n                }\n                else \n                {\n                    currentIndex--;\n                    if (currentIndex < 0) \n                    {\n                        currentIndex = m_sounds.Count - 1;\n                    }\n                }\n                m_nearestInfluenceSphere.m_cueEnum = m_sounds[currentIndex];\n                if (m_nearestInfluenceSphere.m_cue.HasValue) \n                {\n                    m_nearestInfluenceSphere.m_cue.Value.Stop(SharpDX.XACT3.StopFlags.Immediate);\n                }\n                m_nearestInfluenceSphere.ChangeSound(m_nearestInfluenceSphereStrength);\n                if (m_notification != null) \n                {\n                    m_notification.Disappear();\n                    m_notification = null;\n                }\n            }\n        }\n\n        private static void LoadSounds() \n        {\n            m_sounds = new List<MySoundCuesEnum>();\n            foreach (MySoundCuesEnum enumValue in MyGuiInfluenceSphereHelpers.MyInfluenceSphereSoundHelperTypesEnumValues)\n            {\n                MyGuiInfluenceSphereHelper musicHelper = MyGuiInfluenceSphereHelpers.GetInfluenceSphereSoundHelper(enumValue);\n                if (musicHelper != null && musicHelper.Description.ToString().ToLower().StartsWith(\"amb2d_\"))\n                {\n                    m_sounds.Add(enumValue);\n                }\n            }\n        }\n        #endregion\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/InfluenceSpheres/MyInfluenceSpheres.cs",
    "content": "﻿namespace MinerWars.AppCode.Game.Managers.EntityManager.Entities.InfluenceSpheres\n{\n    using System;\n    using System.Collections.Generic;\n    using System.Diagnostics;\n    using GUI;\n    using Microsoft.Xna.Framework;\n    using SysUtils.Utils;\n    using Utils;\n\n    //This class holds all influence spheres in a sector and is responsible for adding, removing drawing and updating them.\n    class MyInfluenceSpheres\n    {\n        public bool DrawHelpers;  //  This property helps to control, weather draw bounding spheres of influence spheres(ingame, they should be drawn)\n        List<MyInfluenceSphereBase> m_sortedSoundSpheres;  // Each type of influence sphere will has its corresponding list\n        List<MyInfluenceSphereBase> m_sortedDustSpheres;\n        List<MyInfluenceSphereBase> m_soundSpheresSAP;\n        List<MyInfluenceSphereBase> m_dustSpheresSAP;\n        public static Vector4 ResultDustColor;  // Property holds dust color, that will be used by MyParticleDustField for drawing dust, if it is Vector4.Zero, MyGuiScreenGamePlay.Static.DustColor is used\n        List<Vector4> m_dustColors; // Helper list containing interpolated color, but before changing them based on their weights in multiple dusts\n        float m_largestSoundX;\n        float m_largestDustX;\n\n        List<MyInfluenceSphereBase> m_spheresIterationHelper;\n\n        // Main Constructor\n        public MyInfluenceSpheres()\n        {\n        }\n\n        public void LoadData()\n        {\n            MyMwcLog.WriteLine(\"MyInfluenceSpheres.LoadContent() - START\");\n            MyMwcLog.IncreaseIndent();\n\n            m_sortedSoundSpheres = new List<MyInfluenceSphereBase>(MyInfluenceSphereConstants.MAX_SOUND_SPHERES_COUNT_FOR_SORT);\n            m_sortedDustSpheres = new List<MyInfluenceSphereBase>(MyInfluenceSphereConstants.MAX_DUST_SPHERES_COUNT_FOR_SORT);\n            m_soundSpheresSAP = new List<MyInfluenceSphereBase>(MyInfluenceSphereConstants.MAX_SOUND_SPHERES_COUNT);\n            m_dustSpheresSAP = new List<MyInfluenceSphereBase>(MyInfluenceSphereConstants.MAX_DUST_SPHERES_COUNT);\n            m_spheresIterationHelper = new List<MyInfluenceSphereBase>();\n            m_dustColors = new List<Vector4>(MyInfluenceSphereConstants.MAX_DUST_SPHERES_COUNT_FOR_SORT);\n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyInfluenceSpheres.LoadContent() - END\");\n        }\n\n        public void UnloadData()\n        {\n            if (m_sortedSoundSpheres != null) m_sortedSoundSpheres.Clear();\n            if (m_sortedDustSpheres != null) m_sortedDustSpheres.Clear();\n            if (m_soundSpheresSAP != null) m_soundSpheresSAP.Clear();\n            if (m_dustSpheresSAP != null) m_dustSpheresSAP.Clear();\n            if (m_spheresIterationHelper != null) m_spheresIterationHelper.Clear();\n            if (m_dustColors != null) m_dustColors.Clear();\n        }\n\n\n        //  Use this method to add any type of influence sphere\n        public void Add(MyInfluenceSphereBase influenceSphere)\n        {\n            if (!Exist(influenceSphere))\n            {\n                if (influenceSphere is MyInfluenceSphereDust)\n                {\n                    m_dustSpheresSAP.Add(influenceSphere);\n                }\n                else if (influenceSphere is MyInfluenceSphereSound)\n                {\n                    m_soundSpheresSAP.Add(influenceSphere);\n                }\n                else\n                {\n                    throw new MyMwcExceptionApplicationShouldNotGetHere();\n                }\n            }\n        }\n\n        //  Use this method to remove any type of influence sphere\n        public void Remove(MyInfluenceSphereBase influenceSphere)\n        {\n            if (Exist(influenceSphere))\n            {\n                if (influenceSphere is MyInfluenceSphereDust)\n                {\n                    m_dustSpheresSAP.Remove(influenceSphere);\n                }\n                else if (influenceSphere is MyInfluenceSphereSound)\n                {\n                    m_soundSpheresSAP.Remove(influenceSphere);\n                }\n                else\n                {\n                    throw new MyMwcExceptionApplicationShouldNotGetHere();\n                }\n            }\n        }\n\n        public bool Exist(MyInfluenceSphereBase influenceSphere)\n        {\n            if (influenceSphere is MyInfluenceSphereDust)\n            {\n                return m_dustSpheresSAP.Contains(influenceSphere);\n            }\n            else if (influenceSphere is MyInfluenceSphereSound)\n            {\n                return m_soundSpheresSAP.Contains(influenceSphere);\n            }\n            \n            return false;\n        }\n\n        //  This method must be called on every update.\n        public void Update()\n        {\n            BoundingSphere sphere = new BoundingSphere(MyCamera.Position, 5);\n            UpdateDust(ref sphere);\n            UpdateSounds(ref sphere);\n        }\n\n        int BinarySearchSAP(List<MyInfluenceSphereBase> sapList, float x)\n        {\n            //  It is up to the caller to make sure this isn't called on an empty collection.\n            int top = sapList.Count;\n            int bot = 0;\n            while (top > bot)\n            {\n                int mid = (top + bot) >> 1;\n\n                if ((sapList[mid].GetPosition().X - sapList[mid].WorldVolume.Radius) >= x)\n                {\n                    Debug.Assert(top > mid);\n                    top = mid;\n                }\n                else\n                {\n                    Debug.Assert(bot <= mid);\n                    bot = mid + 1;\n                }\n            }\n\n            Debug.Assert(top >= 0 && top <= sapList.Count);\n            Debug.Assert(top == 0 || (sapList[top - 1].GetPosition().X - sapList[top - 1].WorldVolume.Radius) < x);\n            Debug.Assert(top == sapList.Count || (sapList[top].GetPosition().X - sapList[top].WorldVolume.Radius) >= x);\n            return top;\n        }\n\n        // This method is responsible for getting only nearest spheres and changing color/interpolate it.\n        public void UpdateDust(ref BoundingSphere boundingSphere)\n        {\n            foreach (MyInfluenceSphereBase dustSphere in m_dustSpheresSAP)\n            {\n                float dx = dustSphere.WorldVolume.Radius * 2;\n                if (dx > m_largestDustX) m_largestDustX = dx;\n            }\n\n            m_sortedDustSpheres.Clear();\n            m_dustColors.Clear();\n\n            float xMin = boundingSphere.Center.X - boundingSphere.Radius;\n            float xMax = boundingSphere.Center.X + boundingSphere.Radius;\n\n            //  Take only sounds that can have influence on our bounding sphere\n            int search = BinarySearchSAP(m_dustSpheresSAP, xMin - m_largestDustX);\n            while (search < m_dustSpheresSAP.Count && (m_dustSpheresSAP[search].GetPosition().X - m_dustSpheresSAP[search].WorldVolume.Radius) < xMax)\n            {\n                MyInfluenceSphereDust dustSphere = (MyInfluenceSphereDust)m_dustSpheresSAP[search];\n\n                if (dustSphere.Enabled == true)\n                {\n                    if ((dustSphere.GetPosition().X + dustSphere.WorldVolume.Radius) > xMin)\n                    {\n                        //  Don't add more sounds into sorting list than our 'sorting list' can handle\n                        if (m_sortedDustSpheres.Count >= MyInfluenceSphereConstants.MAX_DUST_SPHERES_COUNT_FOR_SORT) break;\n\n                        float distance = Vector3.Distance(dustSphere.GetPosition(), boundingSphere.Center);\n                        float maxDistance = boundingSphere.Radius + dustSphere.WorldVolume.Radius;\n\n                        if (distance <= maxDistance)\n                        {\n                            m_sortedDustSpheres.Add(dustSphere);\n                        }\n                    }\n                }\n\n                ++search;\n            }\n\n            ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n            //  Now in 'm_sortedDustSpheres' we have only dust spheres that intersects bounding sphere in SAP list\n            ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\n            Vector4 sectorDustColor = MyGuiScreenGamePlay.Static.SectorDustColor;\n\n            foreach (MyInfluenceSphereDust dustSphere in m_sortedDustSpheres)\n            {\n                Vector4 dustSphereColorVec = dustSphere.DustColor.ToVector4();\n                Vector3 influencedPosition = boundingSphere.Center;\n                Vector3 soundSpherePosition = dustSphere.GetPosition();\n                float distance = Math.Abs(Vector3.Distance(soundSpherePosition, influencedPosition));\n                float radiusMin = dustSphere.InnerBoundingSphere.Radius;\n                float radiusMax = dustSphere.WorldVolume.Radius;\n               \n                bool addToColors = false;\n                if (distance < radiusMin)\n                {\n                    addToColors = true;\n                }\n                else if ((distance > radiusMin) && (distance <= radiusMax)) // interpolate dust between radiusMin and radiusMax\n                {\n                    float total = (radiusMax - radiusMin);\n                    float normalizedDistance = MathHelper.Clamp((distance - radiusMin) / total, 0, 1);\n\n                    dustSphereColorVec = Vector4.Lerp(dustSphereColorVec, Vector4.Zero, normalizedDistance);\n                    addToColors = true;\n                }\n\n                if (addToColors == true) m_dustColors.Add(dustSphereColorVec);\n            }\n\n            // Now sector color is always full in every part of the sector\n            m_dustColors.Add(sectorDustColor);\n\n            // Calculate weight for each color and then calculate result color using weights\n            Vector4 colorSum = Vector4.Zero;\n            foreach (Vector4 color in m_dustColors)\n            {\n                colorSum += color;\n            }\n\n            Vector4 resultColor = Vector4.Zero;\n            foreach (Vector4 color in m_dustColors)\n            {\n                Vector4 weight = color / colorSum;\n                resultColor += color * weight;\n            }\n\n            if (resultColor == sectorDustColor) resultColor = Vector4.Zero;\n            ResultDustColor = resultColor;\n        }\n\n        // This method is responsible for getting only nearest spheres and apply volume change/interpolation of ambient sounds\n        public void UpdateSounds(ref BoundingSphere boundingSphere)\n        {\n            foreach (MyInfluenceSphereSound soundSphere in m_soundSpheresSAP)\n            {\n                float dx = soundSphere.WorldVolume.Radius * 2;\n                if (dx > m_largestDustX) m_largestSoundX = dx;\n                soundSphere.Enabled = false;\n\n                if (MyFakes.TEST_MISSION_1_ENABLED)\n                {\n                    MyTestMission.UpdateInfluenceSphereSoundScript(soundSphere);\n                }\n            }\n\n            m_sortedSoundSpheres.Clear();\n\n            float xMin = boundingSphere.Center.X - boundingSphere.Radius;\n            float xMax = boundingSphere.Center.X + boundingSphere.Radius;\n\n            //  Take only sounds that can have influence on our bounding sphere\n            int search = BinarySearchSAP(m_soundSpheresSAP, xMin - m_largestSoundX);\n            while (search < m_soundSpheresSAP.Count && (m_soundSpheresSAP[search].GetPosition().X - m_soundSpheresSAP[search].WorldVolume.Radius) < xMax)\n            {\n                MyInfluenceSphereSound soundSphere = (MyInfluenceSphereSound) m_soundSpheresSAP[search];\n\n                if ((soundSphere.GetPosition().X + soundSphere.WorldVolume.Radius) > xMin)\n                {\n                    //  Don't add more sounds into sorting list than our 'sorting list' can handle\n                    if (m_sortedSoundSpheres.Count >= MyInfluenceSphereConstants.MAX_SOUND_SPHERES_COUNT_FOR_SORT) break;\n\n                    float distance = Vector3.Distance(soundSphere.GetPosition(), boundingSphere.Center);\n                    float maxDistance = boundingSphere.Radius + soundSphere.WorldVolume.Radius;\n\n                    if (distance <= maxDistance)\n                    {\n                        m_sortedSoundSpheres.Add(soundSphere);\n                    }\n                }\n\n                ++search;\n            }\n\n            ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n            //  Now in 'm_sortedSoundSpheres' we have only sounds that intersects bounding sphere in SAP list\n            ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\n            //  handle sounds\n            foreach (MyInfluenceSphereSound soundSphere in m_sortedSoundSpheres)\n            {\n                soundSphere.Enabled = true;\n                float normalizedVolume = 0.0f;\n                Vector3 influencedPosition = boundingSphere.Center;\n                Vector3 soundSpherePosition = soundSphere.GetPosition();\n                float distance = Math.Abs(Vector3.Distance(soundSpherePosition, influencedPosition));\n                float radiusMin = soundSphere.InnerBoundingSphere.Radius;\n                float radiusMax = soundSphere.WorldVolume.Radius;\n\n                // if we are located in the center sphere, sound volume must be full\n                if (distance <= radiusMin)\n                {\n                    normalizedVolume = 1.0f;\n                }\n                else if ((distance > radiusMin) && (distance <= radiusMax)) // interpolate volume between radiusMin and radiusMax\n                {\n                    float total = (radiusMax - radiusMin);\n                    float normalizedDistance = MathHelper.Clamp((distance - radiusMin) / total, 0, 1);\n                    normalizedVolume = MathHelper.Lerp(1, 0, normalizedDistance);\n                }\n\n                soundSphere.SetVolume(normalizedVolume);\n                soundSphere.UpdateAfterIntegration();\n            }\n        }\n\n        public void Draw()\n        {\n            foreach (MyInfluenceSphereSound sphereSound in m_soundSpheresSAP)\n            {\n                sphereSound.Draw();\n            }\n\n            foreach (MyInfluenceSphereDust sphereDust in m_dustSpheresSAP)\n            {\n                sphereDust.Draw();\n            }\n        }\n\n        void PrepareSpheresIterationHelper()\n        {\n            m_spheresIterationHelper.Clear();\n            foreach (MyInfluenceSphereSound sphereSound in m_soundSpheresSAP)\n            {\n                m_spheresIterationHelper.Add(sphereSound);\n            }\n            foreach (MyInfluenceSphereDust sphereDust in m_dustSpheresSAP)\n            {\n                m_spheresIterationHelper.Add(sphereDust);\n            }\n        }\n\n        public List<MyInfluenceSphereBase> GetInfluenceSpheres()\n        {\n            PrepareSpheresIterationHelper();\n\n            return m_spheresIterationHelper;\n        }\n\n        public int GetInfluenceSpheresCount()\n        {\n            return m_spheresIterationHelper.Count;\n        }\n\n        public void CloseAll()\n        {\n            PrepareSpheresIterationHelper();\n\n            foreach (var item in m_spheresIterationHelper)\n            {\n                item.Close();\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/MyEntities.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Editor;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.Entities.FoundationFactory;\nusing MinerWars.AppCode.Game.Entities.Weapons;\nusing MinerWars.AppCode.Game.Entities.WayPoints;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Models;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Voxels;\nusing MinerWars.AppCode.Physics;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.InfluenceSpheres;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Voxels;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils.Utils;\nusing MinerWars.AppCode.Game.Physics;\n\n\n\nusing System.Linq;\n\n//  Here we store JLX phys objects. Not normal missiles and not projectiles.\n//\n//  This class is just holder of the list, so it doesn't do any real logic\n//  E.g. when you add or remove object from here, don't expect this object will\n//  call Start or Close on it.s You must do it!!!\n\nnamespace MinerWars.AppCode.Game.Entities\n{\n    using App;\n    using InfluenceSpheres;\n    using VoxelHandShapes;\n    using World;\n    using Prefabs;\n    using System.Diagnostics;\n    using MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\n    using MinerWars.AppCode.Game.Gameplay;\n    using MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\n    using MinerWars.AppCode.Game.Prefabs;\n    using MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.Prefabs;\n    using MinerWars.AppCode.Game.Entities.SubObjects;\n    using MinerWars.AppCode.Game.World.Global;\n    using MinerWars.AppCode.Game.Localization;\n    using MinerWars.AppCode.Game.TransparentGeometry.Particles;\n    using MinerWars.AppCode.Game.Entities.CargoBox;\n    using MinerWars.AppCode.Game.Explosions;\n    using KeenSoftwareHouse.Library.Collections;\n    using MinerWars.AppCode.Game.Missions;\n    using KeenSoftwareHouse.Library.Parallelization.Threading;\n    using KeenSoftwareHouse.Library.Trace;\n    using MinerWars.AppCode.Game.HUD;\n    using MinerWars.AppCode.Game.Render;\n    using MinerWars.AppCode.Physics.Collisions;\n    using MinerWars.AppCode.Networking;\n    using MinerWars.AppCode.Game.Managers;\n\n    internal enum MyExplosionForceDirection\n    {\n        EXPLOSION = 1,      //  Throw objects from the epicentrum\n        IMPLOSION = 2       //  Throw objects into the epicentrum\n    }\n\n    static class MyEntities\n    {\n        // List of physic objects in the world\n        static HashSet<MyEntity> m_entities = new HashSet<MyEntity>();\n        public static List<MyEntity> m_entitiesForUpdate = new List<MyEntity>();\n\n        // Count of objects editable in editor\n        static int m_editorObjectsCount = 0;\n        readonly static int MAX_ENTITIES_CLOSE_PER_UPDATE = 10;\n\n        // Event called when entity is removed from scene\n        public static event Action<MyEntity> OnEntityRemove;\n        public static event Action OnCloseAll;\n        public static event Action<MyEntity, string, string> OnEntityNameSet;\n\n        [ThreadStatic]\n        static List<MyRBElement> m_overlapRBElementList;\n        static List<List<MyRBElement>> m_overlapRBElementListCollection = new List<List<MyRBElement>>();\n\n        static List<MyRBElement> OverlapRBElementList\n        {\n            get\n            {\n                if (m_overlapRBElementList == null)\n                {\n                    m_overlapRBElementList = new List<MyRBElement>(256);\n                    lock (m_overlapRBElementListCollection)\n                    {\n                        m_overlapRBElementListCollection.Add(m_overlapRBElementList);\n                    }\n                }\n                return m_overlapRBElementList;\n            }\n        }\n\n        static List<MyRBElement> GetElementsInBox(MyDynamicAABBTree pruningStructure, ref BoundingBox boundingBox)\n        {\n            MyCommonDebugUtils.AssertDebug(OverlapRBElementList.Count == 0, \"The result of GetElementsInBox() wasn't cleared after last use!\");\n            pruningStructure.OverlapAllBoundingBox(ref boundingBox, OverlapRBElementList, (uint)MyElementFlag.EF_RB_ELEMENT);\n            return OverlapRBElementList;\n        }\n\n        /// <summary>\n        /// Get all rigid body elements touching a bounding box.\n        /// Clear() the result list after you're done with it!\n        /// </summary>\n        /// <returns>The list of results.</returns>\n        public static List<MyRBElement> GetElementsInBox(ref BoundingBox boundingBox)\n        {\n            return GetElementsInBox(m_pruningStructure, ref boundingBox);\n        }\n\n        public static void GetElementsInBox(ref BoundingBox boundingBox, List<MyRBElement> foundElements)\n        {\n            m_pruningStructure.OverlapAllBoundingBox(ref boundingBox, foundElements, (uint)MyElementFlag.EF_RB_ELEMENT);\n        }\n\n        // Helper list for storing results of various operations, mostly used in intersections\n        [ThreadStatic]\n        private static HashSet<MyEntity> m_entityResultSet;\n        private static List<HashSet<MyEntity>> m_entityResultSetCollection = new List<HashSet<MyEntity>>();\n        static HashSet<MyEntity> EntityResultSet\n        {\n            get\n            {\n                if (m_entityResultSet == null)\n                {\n                    m_entityResultSet = new HashSet<MyEntity>();\n                    lock (m_entityResultSetCollection)\n                    {\n                        m_entityResultSetCollection.Add(m_entityResultSet);\n                    }\n                }\n                return m_entityResultSet;\n            }\n        }\n\n        // Helper list for storing temporary entities\n        [ThreadStatic]\n        private static List<MyEntity> m_entityInputList;\n        private static List<List<MyEntity>> m_entityInputListCollection = new List<List<MyEntity>>();\n        static List<MyEntity> EntityInputList\n        {\n            get\n            {\n                if (m_entityInputList == null)\n                {\n                    m_entityInputList = new List<MyEntity>(32);\n                    lock (m_entityInputListCollection)\n                    {\n                        m_entityInputListCollection.Add(m_entityInputList);\n                    }\n                }\n                return m_entityInputList;\n            }\n        }\n\n        [ThreadStatic]\n        static List<MyLineSegmentOverlapResult<MyRBElement>> m_lineOverlapRBElementList;\n        static List<List<MyLineSegmentOverlapResult<MyRBElement>>> m_lineOverlapRBElementListCollection = new List<List<MyLineSegmentOverlapResult<MyRBElement>>>();\n        static List<MyLineSegmentOverlapResult<MyRBElement>> LineOverlapRBElementList\n        {\n            get\n            {\n                if (m_lineOverlapRBElementList == null)\n                {\n                    m_lineOverlapRBElementList = new List<MyLineSegmentOverlapResult<MyRBElement>>(256);\n                    lock (m_lineOverlapRBElementListCollection)\n                    {\n                        m_lineOverlapRBElementListCollection.Add(m_lineOverlapRBElementList);\n                    }\n                }\n                return m_lineOverlapRBElementList;\n            }\n        }\n\n        //  For quick space-traversal\n        static MyDynamicAABBTree m_pruningStructure;\n\n        //  Sometimes we need to remove objects from \"m_entities\" while we iterate that list, so this is the helper\n        static List<MyEntity> m_safeIterationHelper = new List<MyEntity>(MyConstants.MAX_ENTITIES);\n\n        // Helper collection, entities are added with MarkForClose(entity), real remove is done with CloseRememberedEntities() which is last Update call\n        static HashSet<MyEntity> m_entitiesToClose = new HashSet<MyEntity>();\n\n        static HashSet<MyEntity> m_activateList = new HashSet<MyEntity>();\n        static HashSet<MyEntity> m_deactivateList = new HashSet<MyEntity>();\n\n        //preallocated list of entities fileld up/cleared when testing collisions with element\n        static List<MyRBElement> m_CollisionsForElementsHelper = new List<MyRBElement>();\n\n        static public List<MyRBElement> CollisionsElements\n        {\n            get { return m_CollisionsForElementsHelper; }\n        }\n\n        // Dictionary of entities where entity name is key\n        static public Dictionary<string, MyEntity> m_entityNameDictionary = new Dictionary<string, MyEntity>();\n\n        static bool m_isLoaded = false;\n        public static bool IsLoaded\n        {\n            get { return m_isLoaded; }\n        }\n\n        //  Common functionality is provided by this class for phys objects, however, some of them are not JLX and we need to reuse that functionality\n        //  and keep it at one place, for that reason, influence spheres are managed by this class.\n        public static void LoadData()\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyEntities.LoadData\");\n\n            m_entities.Clear();\n            m_safeIterationHelper.Clear();\n            m_entitiesToClose.Clear();\n            m_pruningStructure = MyPhysics.physicsSystem.GetRigidBodyModule().GetPruningStructure();\n            MyCommonDebugUtils.AssertRelease(m_pruningStructure != null);\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n            m_isLoaded = true;\n        }\n\n        public static void UnloadData()\n        {\n            using (UnloadDataLock.AcquireExclusiveUsing())\n            {\n                MyPrefabContainerManager.GetInstance().Clear();\n                CloseAll(true);\n\n                System.Diagnostics.Debug.Assert(m_entities.Count == 0);\n                System.Diagnostics.Debug.Assert(m_entitiesToClose.Count == 0);\n\n                m_safeIterationHelper.Clear();\n                m_pruningStructure = null;\n                m_lineOverlapRBElementList = null;\n                m_overlapRBElementList = null;\n                m_entityResultSet = null;\n                m_isLoaded = false;\n\n                lock (m_lineOverlapRBElementListCollection)\n                {\n                    foreach (var item in m_lineOverlapRBElementListCollection)\n                    {\n                        item.Clear();\n                    }\n                }\n                lock (m_entityInputListCollection)\n                {\n                    foreach (var item in m_entityInputListCollection)\n                    {\n                        item.Clear();\n                    }\n                }\n                lock (m_overlapRBElementListCollection)\n                {\n                    foreach (var item in m_overlapRBElementListCollection)\n                    {\n                        item.Clear();\n                    }\n                }\n                lock (m_entityResultSetCollection)\n                {\n                    foreach (var item in m_entityResultSetCollection)\n                    {\n                        item.Clear();\n                    }\n                }\n                lock (m_allIgnoredEntitiesCollection)\n                {\n                    foreach (var item in m_allIgnoredEntitiesCollection)\n                    {\n                        item.Clear();\n                    }\n                }\n            }\n        }\n\n        //  IMPORTANT: Only adds object to the list. Caller must call Start() or Init() on the object.\n        public static void Add(MyEntity entity)\n        {\n            if (Exist(entity) == false)\n            {\n                if (entity is MyVoxelMap)\n                {\n                    MyVoxelMaps.Add((MyVoxelMap)entity);\n                }\n\n                m_entities.Add(entity);\n\n                RegisterForUpdate(entity);\n\n                if (entity.Flags.HasFlag(MyEntity.EntityFlags.EditableInEditor))\n                    m_editorObjectsCount++;\n            }\n\n            entity.NotifyAddedToScene(null);\n        }\n\n        public static void SetEntityName(MyEntity myEntity, bool possibleRename = true)\n        {\n            string oldName = null;\n            string newName = myEntity.Name;\n            if (possibleRename)\n            {\n                foreach (var item in m_entityNameDictionary)\n                {\n                    if (item.Value == myEntity)\n                    {\n                        m_entityNameDictionary.Remove(item.Key);\n                        oldName = item.Key;\n                        break;\n                    }\n                }\n            }\n\n            if (!string.IsNullOrEmpty(myEntity.Name))\n            {\n                Debug.Assert(!m_entityNameDictionary.ContainsKey(myEntity.Name));\n                if (!m_entityNameDictionary.ContainsKey(myEntity.Name))\n                {\n                    m_entityNameDictionary.Add(myEntity.Name, myEntity);\n                }\n            }\n\n            if (OnEntityNameSet != null)\n            {\n                OnEntityNameSet(myEntity, oldName, newName);\n            }\n        }\n\n        public static bool IsNameExists(MyEntity entity, string name)\n        {\n            foreach (var item in m_entityNameDictionary)\n            {\n                if (item.Key == name && item.Value != entity)\n                {\n                    return true;\n                }\n            }\n            return false;\n        }\n\n        /// <summary>\n        /// Removes the specified entity from scene\n        /// </summary>\n        /// <param name=\"entity\">The entity.</param>\n        /// <param name=\"skipIfNotExist\">if set to <c>true</c> [skip if not exist].</param>\n        public static void Remove(MyEntity entity)\n        {\n            System.Diagnostics.Debug.Assert(entity != null);\n\n            if (entity is MyVoxelMap)\n            {\n                MyVoxelMaps.RemoveVoxelMap((MyVoxelMap)entity);\n            }\n\n            if (m_entities.Contains(entity))\n            {\n                m_entities.Remove(entity);\n                if (entity.NeedsUpdate)\n                    UnregisterForUpdate(entity);\n                if (entity.Flags.HasFlag(MyEntity.EntityFlags.EditableInEditor))\n                    m_editorObjectsCount--;\n            }\n\n            if (m_activateList.Contains(entity))\n                m_activateList.Remove(entity);\n\n            RaiseEntityRemove(entity);\n            entity.NotifyRemovedFromScene(null);\n        }\n\n\n        public static FastResourceLock EntityCloseLock = new FastResourceLock();\n        public static FastResourceLock EntityMarkForCloseLock = new FastResourceLock();\n        public static FastResourceLock UnloadDataLock = new FastResourceLock();\n        //public static object EntityCloseLock = new object();\n\n        private static void CloseRememberedEntities(int countToClose = int.MaxValue)\n        {\n            CloseAllowed = true;\n\n            while (m_entitiesToClose.Count > 0 && countToClose > 0)\n            {\n                EntityCloseLock.AcquireExclusive();\n                m_entitiesToClose.FirstElement().Close();\n                EntityCloseLock.ReleaseExclusive();\n                countToClose--;\n            }\n\n            CloseAllowed = false;\n        }\n\n        public static void RemoveFromClosedEntities(MyEntity entity)\n        {\n            if (m_entitiesToClose.Count > 0)\n            {\n                m_entitiesToClose.Remove(entity);\n            }\n\n            m_activateList.Remove(entity);\n            m_deactivateList.Remove(entity);\n        }\n\n        /// <summary>\n        /// Remove name of entity from used names\n        /// </summary>\n        public static void RemoveName(MyEntity entity)\n        {\n            if (!string.IsNullOrEmpty(entity.Name))\n            {\n                m_entityNameDictionary.Remove(entity.Name);\n            }\n        }\n\n        /// <summary>\n        /// Checks if entity exists in scene already\n        /// </summary>\n        /// <param name=\"entity\"></param>\n        /// <returns></returns>\n        public static bool Exist(MyEntity entity)\n        {\n\n            if (entity is MyVoxelMap)\n            {\n                return MyVoxelMaps.Exist((MyVoxelMap)entity);\n            }\n\n            if (entity is MyPrefabBase)\n            {\n                if ((entity as MyPrefabBase).GetOwner() != null)\n                    return m_entities.Contains((entity as MyPrefabBase).GetOwner());\n            }\n\n            if (m_entities == null)\n                return false;\n\n            return m_entities.Contains(entity);\n        }\n\n        public static void MarkForClose(MyEntity entity)\n        {\n            Debug.Assert(!entity.Closed, \"MarkForClose() is being called on close entity, use OnClose to prevent this call\");\n            //Debug.Assert(MyMinerGame.IsMainThread(), \"MarkForClose() can be called only from main thread\");\n\n            if (CloseAllowed)\n            {\n                entity.Close();\n                return;\n            }\n\n            if (!m_entitiesToClose.Contains(entity))\n            {\n                EntityMarkForCloseLock.AcquireExclusive();\n                m_entitiesToClose.Add(entity);\n                EntityMarkForCloseLock.ReleaseExclusive();\n            }\n            //else\n            //{\n            //    Debug.Fail(\"Entity marked more than once for close!\");\n            //}\n        }\n\n        //  Closes all objects - they are removed from within close method\n        public static void CloseAll(bool deletePlayerShip)\n        {\n            if (OnCloseAll != null)\n                OnCloseAll();\n\n            CloseAllowed = true;\n\n            foreach (MyEntity entity in m_entities.ToArray())\n            {\n                if (!deletePlayerShip && MySession.PlayerShip == entity)\n                {\n                    continue;\n                }\n\n                entity.Close();\n\n                //This is already called from Entity.Close\n                //MyEntities.Remove(entity, false);\n            }\n\n            foreach (MyEntity entity in m_entitiesToClose.ToArray())\n            {\n                entity.Close();\n            }\n\n            CloseAllowed = false;\n            m_entitiesToClose.Clear();\n\n            // Clear all\n            MyEntityIdentifier.Clear();\n\n            if (!deletePlayerShip)\n            {\n                MySession.PlayerShip.RemoveFromGamePruningStructure();\n            }\n            MyGamePruningStructure.Clear();\n            if (!deletePlayerShip)\n            {\n                MySession.PlayerShip.AddToGamePruningStructure();  // put player ship back into pruning structure\n            }\n\n\n            if (deletePlayerShip)\n            {\n                MyParticlesManager.CloseAll();\n                MySession.PlayerShip = null;\n            }\n            else\n            {\n                MySession.PlayerShip.CleanupAfterCloseAll();\n            }\n        }\n\n        public static void ClearCollisionHighlights()\n        {\n            Vector3 zero = Vector3.Zero;\n            foreach (MyVoxelMap voxelMap in MyVoxelMaps.GetVoxelMaps())\n            {\n                voxelMap.SetCollisionHighlighting(ref zero);\n            }\n            if (m_entities != null)\n            {\n                TraverseEntities(ClearCollisionHighlight);\n            }\n        }\n\n        private static void ClearCollisionHighlight(MyEntity entity)\n        {\n            Vector3 zero = Vector3.Zero;\n            entity.SetCollisionHighlighting(ref zero);\n        }\n\n        public static void ClearHighlights()\n        {\n            foreach (MyVoxelMap voxelMap in MyVoxelMaps.GetVoxelMaps())\n            {\n                voxelMap.ClearHighlightning();\n            }\n            if (m_entities != null)\n            {\n                foreach (MyEntity entity in m_entities)\n                {\n                    entity.ClearHighlightning();\n                }\n            }\n        }\n\n        //  Prepare list of phys objects, so then we can do remove while iterating it\n        static void PrepareSafeIterationHelperForUpdate()\n        {\n            m_safeIterationHelper.Clear();\n\n            foreach (MyEntity entity in m_entitiesForUpdate)\n            {\n                //if(!m_registreForStopAnimations.Contains(entity))\n                m_safeIterationHelper.Add(entity);\n            }\n\n            MyCommonDebugUtils.AssertDebug(m_safeIterationHelper.Count <= MyConstants.MAX_ENTITIES);\n        }\n\n        static void PrepareSafeIterationHelperForAll()\n        {\n            m_safeIterationHelper.Clear();\n\n            foreach (MyEntity entity in m_entities)\n            {\n                if (!MinerWars.AppCode.Game.SolarSystem.MySectorGenerator.IsOutsideSector(entity.GetPosition(), entity.LocalVolume.Radius))\n                {\n                    m_safeIterationHelper.Add(entity);\n                }\n            }\n\n            MyCommonDebugUtils.AssertDebug(m_safeIterationHelper.Count <= MyConstants.MAX_ENTITIES);\n        }\n\n        public static List<MyEntity> GetSafeIterationHelperForAll()\n        {\n            PrepareSafeIterationHelperForAll();\n            return m_safeIterationHelper;\n        }\n\n        static void GetChildren(List<MyEntity> collect)\n        {\n            collect.Clear();\n            foreach (MyEntity entity in m_entities)\n            {\n                GetChildrenRecursive(entity.Children, ref collect);\n            }\n        }\n\n        static void GetChildrenRecursive(ObservableCollection<MyEntity> entities, ref List<MyEntity> collect)\n        {\n            foreach (MyEntity entity in entities)\n            {\n                collect.Add(entity);\n\n                GetChildrenRecursive(entity.Children, ref collect);\n            }\n        }\n\n        public static void Link()\n        {\n            PrepareSafeIterationHelperForAll();\n            foreach (var entity in m_safeIterationHelper)\n                entity.Link();\n        }\n\n        public static void RegisterForUpdate(MyEntity entity)\n        {\n            //Add children first, to be updated first (and removed before parent)\n            foreach (MyEntity child in entity.Children)\n            {\n                RegisterForUpdate(child);\n            }\n\n            if (entity.NeedsUpdate)\n            {\n                if (m_entitiesForUpdate != null && !m_entitiesForUpdate.Contains(entity) && m_entities.Contains(entity.GetTopMostParent()))\n                    m_entitiesForUpdate.Add(entity);\n            }\n        }\n\n        public static void UnregisterForUpdate(MyEntity entity)\n        {\n            if (m_entitiesForUpdate != null && m_entitiesForUpdate.Contains(entity))\n                m_entitiesForUpdate.Remove(entity);\n        }\n\n        /*private static HashSet<MyEntity> m_registreForStopAnimations = new HashSet<MyEntity>();\n\n        public static void RegisterForStopAnimations(MyEntity entity)\n        {\n            //Add children first, to be updated first (and removed before parent)\n            foreach (MyEntity child in entity.Children)\n            {\n                RegisterForStopAnimations(child);\n            }\n\n            if (m_registreForStopAnimations != null && !m_registreForStopAnimations.Contains(entity) && m_entities.Contains(entity.GetTopMostParent()))\n                m_registreForStopAnimations.Add(entity);\n        }\n\n        public static void UnregisterForStopAnimations(MyEntity entity)\n        {\n            foreach (MyEntity child in entity.Children)\n            {\n                UnregisterForStopAnimations(child);\n            }\n            if (m_registreForStopAnimations != null && m_registreForStopAnimations.Contains(entity))\n                m_registreForStopAnimations.Remove(entity);\n        }*/\n\n        public static bool UpdateInProgress = false;\n        public static bool CloseAllowed = false;\n\n        //  Update all physics objects - BEFORE physics simulation\n        public static void UpdateBeforeSimulation()\n        {\n            System.Diagnostics.Debug.Assert(UpdateInProgress == false);\n            UpdateInProgress = true;\n\n            //           MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"PrepareSafeIterationHelperForUpdate\");\n            PrepareSafeIterationHelperForUpdate();\n            //           MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            //            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Activate from buffer\");\n            int counter = 20;\n            while (m_activateList.Count > 0 && counter > 0)\n            {\n                MyEntity entity = m_activateList.First();\n                entity.Activate(true, false);\n                m_activateList.Remove(entity);\n                counter--;\n            }\n            //            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            //            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Deactivate from buffer\");\n            counter = 20;\n            while (m_deactivateList.Count > 0 && counter > 0)\n            {\n                MyEntity entity = m_deactivateList.First();\n                entity.Activate(false, false);\n                m_deactivateList.Remove(entity);\n                counter--;\n            }\n            //          MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n\n            foreach (MyEntity entity in m_safeIterationHelper)\n            {\n                /*\n                if (entity is MySmallShip)\n                    continue;\n                   \n                if (entity is MyPrefabBase)\n                    continue;\n                         \n                if (entity is MySpawnPoint)\n                    continue;\n                           \n                if (entity is MyDummyPoint)\n                    continue;\n                                              \n                if (entity is MyPrefabContainer)\n                    continue; \n\n                if (entity is MinerWars.AppCode.Game.Entities.EntityDetector.MyEntityDetector)\n                    continue;\n\n                if (entity is MySmallShip)\n                    continue;\n\n                if (entity is MyPrefabLight)\n                    continue;\n\n                if (entity is MyPrefab)\n                    continue;\n\n                if (entity is MyPrefabKinematicPartBase)\n                    continue;\n\n                if (entity is MyPrefabSecurityControlHUB)\n                    continue;\n\n                if (entity is MyPrefabLargeWeapon)\n                    continue;\n\n                if (entity is MyInfluenceSphere)\n                    continue;\n\n                if (entity is MyPrefabAlarm)\n                    continue;\n\n                if (entity is MyLargeShipBarrelBase)\n                    continue;\n\n                if (entity is MyLargeShipGunBase)\n                    continue;\n\n                if (entity is MyPrefabLargeShip)\n                    continue;\n\n                if (entity is MyPrefabKinematic)\n                    continue;\n\n                if (entity is MyPrefabKinematicPart)\n                    continue;\n\n                if (entity is MyPrefabGenerator)\n                {\n                    continue;\n                }   */\n\n                entity.UpdateBeforeSimulation();\n            }\n\n            UpdateInProgress = false;\n\n            CloseRememberedEntities(MAX_ENTITIES_CLOSE_PER_UPDATE);\n        }\n\n        //  Update all physics objects - AFTER physics simulation\n        public static void UpdateAfterSimulation()\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"UpdateAfterSimulation\");\n\n            System.Diagnostics.Debug.Assert(UpdateInProgress == false);\n            UpdateInProgress = true;\n\n            PrepareSafeIterationHelperForUpdate();\n\n            //  Iterate over all phys objects. We can remove objects from \"m_entities\" while iterating this list. It is safe.\n            foreach (MyEntity entity in m_safeIterationHelper)\n            {\n                entity.UpdateAfterSimulation();\n            }\n\n            UpdateInProgress = false;\n\n            CloseRememberedEntities(MAX_ENTITIES_CLOSE_PER_UPDATE);\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n\n        public static void ActivateBuffered(MyEntity entity)\n        {\n            m_activateList.Add(entity);\n        }\n\n        public static void DeactivateBuffered(MyEntity entity)\n        {\n            m_deactivateList.Add(entity);\n        }\n\n\n        static List<MyRBElement> m_overlapRBElementListLocal = new List<MyRBElement>(256);\n        static Queue<MyExplosionInfo> m_explosionInfo = new Queue<MyExplosionInfo>(10); // For explosions which creates explosions\n        static bool processingExplosions = false;\n\n        [ThreadStatic]\n        private static List<MyEntity> m_allIgnoredEntities;\n        private static List<List<MyEntity>> m_allIgnoredEntitiesCollection = new List<List<MyEntity>>();\n        private static List<MyEntity> AllIgnoredEntities\n        {\n            get\n            {\n                if (m_allIgnoredEntities == null)\n                {\n                    m_allIgnoredEntities = new List<MyEntity>();\n                    m_allIgnoredEntitiesCollection.Add(m_allIgnoredEntities);\n                }\n                return m_allIgnoredEntities;\n            }\n        }\n\n        //  Applies external force to all physical objects near the explosion epicentrum. Result is something like throwing them away from the epicentrum, with slight rotation impulse.\n        public static void ApplyExplosionForceAndDamage(ref MyExplosionInfo explosionInfo)\n        {\n            if (processingExplosions)\n            {\n                m_explosionInfo.Enqueue(explosionInfo);\n                return;\n            }\n            processingExplosions = true;\n\n            try\n            {\n                // Large weapons have got 3 parts, this is to apply damage only once\n                AllIgnoredEntities.Clear();\n\n                //  Get collision elements near the explosion (use sweep-and-prune, so we iterate only close objects)\n                BoundingSphere boundingSphere = new BoundingSphere(explosionInfo.HitEntity is MyVoxelMap ? explosionInfo.VoxelExplosionCenter : explosionInfo.ExplosionSphere.Center, explosionInfo.ExplosionSphere.Radius);\n                BoundingBox boundingBox = BoundingBoxHelper.InitialBox;\n                BoundingBoxHelper.AddSphere(ref boundingSphere, ref boundingBox);\n\n                // we need local list because this method can be called from inside of the loop\n\n                m_pruningStructure.OverlapAllBoundingBox(ref boundingBox, m_overlapRBElementListLocal, (uint)MyElementFlag.EF_RB_ELEMENT);\n\n                foreach (MyRBElement element in m_overlapRBElementListLocal)\n                {\n                    MyEntity entity = ((MyPhysicsBody)element.GetRigidBody().m_UserData).Entity;\n\n                    /*if (entity is MyStaticAsteroid && explosionInfo.OwnerEntity == Managers.Session.MySession.PlayerShip)\n                    {\n                        HUD.MyHud.ShowIndestructableAsteroidNotification();\n                    }*/\n\n                    if (entity.IsExploded())\n                        continue;\n\n                    if ((entity is Weapons.MyAmmoBase) && !(entity as Weapons.MyAmmoBase).CanBeAffectedByExplosionForce())\n                        continue;\n\n                    //We dont need to calculate damage and force here\n                    if (entity is MyVoxelMap)\n                        continue;\n\n                    if (AllIgnoredEntities.Contains(entity.GetBaseEntity()))\n                        continue;\n\n\n                    const float explosionStrengthExponent = 2;\n\n                    bool doDamage = true;\n                    float normalizedStrength = 0;\n\n\n                    //  Ignore objects not in the radius\n                    float centerDistance = Vector3.Distance(entity.GetPosition(), boundingSphere.Center);\n                    BoundingSphere entitySphere = entity.WorldVolume;\n                    float distance = Math.Min(MyUtils.GetSmallestDistanceToSphereAlwaysPositive(ref boundingSphere.Center, ref entitySphere), centerDistance);\n\n                    if (MyMwcUtils.IsZero(distance * 0.01f))\n                        distance = 1;// continue; //we need it more sensitive\n\n                    MyEntity damageEntity = entity.GetBaseEntity();\n\n                    Vector3 awayDirection = entity.GetPosition() - boundingSphere.Center;\n                    bool isSamePosition = false;\n                    if (awayDirection.LengthSquared() > 0.1f)\n                    {\n                        awayDirection = MyMwcUtils.Normalize(awayDirection);\n                    }\n                    else\n                    {\n                        awayDirection = Vector3.Forward;\n                        isSamePosition = true;\n                    }\n\n\n                    // Hit entity always get full hit\n                    if (explosionInfo.HitEntity == entity)\n                    {\n                        normalizedStrength = 1;\n                    }\n                    else\n                    {\n                        float radius = explosionInfo.ExplosionSphere.Radius;\n\n                        //  If objects is in the radius, calculate how much strength will explosion send to him and apply it to the object\n                        float normalizedDistance = MathHelper.Clamp(distance / radius, 0, 1);\n                        normalizedStrength = 1 - (float)Math.Pow(normalizedDistance, explosionStrengthExponent); // Reversed exponencial, at 50% distance from explosion is dealt 75% of max damage (when power = 2)\n\n                        if (normalizedStrength <= 0)\n                            continue; // No hit\n\n                        //normalizedStrength *= normalizedStrength; //lets do it exponential\n\n                        if (explosionInfo.CheckIntersections && !isSamePosition)\n                        {\n                            MyRender.GetRenderProfiler().StartProfilingBlock(\"CheckIntersections\");\n\n                            // do damage linearly proportional to the distance (the closer, the more damage)\n                            var line = new MyLine(boundingSphere.Center, entity.GetPosition(), true);\n\n                            if (damageEntity.CheckExplosionObstacles)\n                            {\n                                var intersection = GetAnyIntersectionWithLine(ref line, entity, explosionInfo.HitEntity, false, false, false, true);\n\n                                // check intersection with scene from epicentre to entity position\n                                doDamage = !intersection.HasValue;\n                            }\n\n                            MyRender.GetRenderProfiler().EndProfilingBlock();\n                        }\n                    }\n\n                    // if nothing is in the way (no wall, no asteroid), apply damage\n                    if (doDamage)\n                    {\n                        MyRender.GetRenderProfiler().StartProfilingBlock(\"doDamage\");\n                        AllIgnoredEntities.Add(damageEntity);\n                        damageEntity.DoDamage(normalizedStrength * explosionInfo.PlayerDamage, normalizedStrength * explosionInfo.Damage, normalizedStrength * explosionInfo.EmpDamage, MyDamageType.Explosion, MyAmmoType.Unknown, explosionInfo.OwnerEntity, explosionInfo.CustomEffect != null);\n                        MyRender.GetRenderProfiler().EndProfilingBlock();\n                    }\n\n\n                    if (explosionInfo.ExplosionForceDirection == MyExplosionForceDirection.IMPLOSION)\n                    {\n                        awayDirection *= -1;\n                    }\n\n                    float angStrength = explosionInfo.StrengthAngularImpulse;\n                    var forcePosition = entity.WorldAABB.Min; // Apply force to entity corner - to make it rotate\n\n                    //  If this object is miner ship, then shake his head little bit\n                    if (entity == MySession.PlayerShip)\n                    {\n                        MyRender.GetRenderProfiler().StartProfilingBlock(\"IncreaseHeadShake\");\n                        MySmallShip minerShip = (MySmallShip)entity;\n                        minerShip.IncreaseHeadShake(normalizedStrength * MyHeadShakeConstants.HEAD_SHAKE_AMOUNT_AFTER_EXPLOSION);\n                        angStrength *= MyExplosionsConstants.EXPLOSION_STRENGTH_ANGULAR_IMPULSE_PLAYER_MULTIPLICATOR;\n                        forcePosition = entity.GetPosition(); // We don't want to rotate player by force\n                        MyRender.GetRenderProfiler().EndProfilingBlock();\n                    }\n\n                    // When MyAmmoBase entity is close to explosion it will explode\n                    var ammo = entity as MyAmmoBase;\n                    if (ammo != null)\n                    {\n                        MyRender.GetRenderProfiler().StartProfilingBlock(\"ammo.ExplodeCascade\");\n                        ammo.ExplodeCascade(explosionInfo.CascadeLevel + 1);\n                        MyRender.GetRenderProfiler().EndProfilingBlock();\n                    }\n\n                    MyRender.GetRenderProfiler().StartProfilingBlock(\"entity.Physics.AddForce\");\n                    if (!entity.IsDead())\n                    {\n                        entity.Physics.AddForce(\n                            MyPhysicsForceType.APPLY_WORLD_IMPULSE_AND_WORLD_ANGULAR_IMPULSE,\n                            awayDirection * normalizedStrength * explosionInfo.StrengthImpulse * MyExplosionsConstants.EXPLOSION_FORCE_RADIUS_MULTIPLIER,\n                            forcePosition,\n                            normalizedStrength * MyMwcUtils.GetRandomVector3Normalized() * angStrength);\n                    }\n                    MyRender.GetRenderProfiler().EndProfilingBlock();\n                }\n\n                m_overlapRBElementListLocal.Clear();\n            }\n            finally\n            {\n                processingExplosions = false;\n            }\n            while (m_explosionInfo.Count > 0)\n            {\n                var info = m_explosionInfo.Dequeue();\n                ApplyExplosionForceAndDamage(ref info);\n            }\n        }\n\n        //  Throws objects in direction of sun wind, but only if objects are inside the sun wind \"storm\" and are visible from sun.\n        public static void ApplySunWindForce(List<MyEntity> entities, ref MyPlane planeFront, ref MyPlane planeBack, Type[] doNotIgnoreTheseTypes, ref Vector3 sunWindDirectionNormalized)\n        {\n            MyUtilRandomVector3ByDeviatingVector a = new MyUtilRandomVector3ByDeviatingVector(sunWindDirectionNormalized);\n\n            foreach (var entity in entities)\n            {\n                MyPerformanceCounter.PerCameraDraw.Increment(\"SunWind all entities\");\n\n                //  Forces are random\n                if (MyMwcUtils.GetRandomBool(5) != true) continue;\n\n                //  Apply force only if object is in between the sun wind planes\n                float distanceToFront = MyUtils.GetDistanceFromPointToPlane(entity.GetPosition(), ref planeFront);\n                float distanceToBack = MyUtils.GetDistanceFromPointToPlane(entity.GetPosition(), ref planeBack);\n                if ((distanceToFront <= 0) && (distanceToBack >= 0))\n                {\n                    MyPerformanceCounter.PerCameraDraw.Increment(\"SunWind entities between planes\");\n\n                    //  Apply impulse only if this object is visible from sun, or of sun wind can move with it\n                    if (entity.IsVisibleFromSun)\n                    {\n                        MyPerformanceCounter.PerCameraDraw.Increment(\"SunWind entities influented\");\n\n                        Vector3 randomVector = a.GetNext(MySunWindConstants.FORCE_ANGLE_RANDOM_VARIATION_IN_RADIANS);\n                        if (entity.Physics != null)\n                        {\n                            entity.Physics.AddForce(\n                                MyPhysicsForceType.APPLY_WORLD_IMPULSE_AND_WORLD_ANGULAR_IMPULSE,\n                                randomVector * MyMwcUtils.GetRandomFloat(0.0f, MySunWindConstants.FORCE_IMPULSE_RANDOM_MAX),\n                                entity.GetPosition() - randomVector * MySunWindConstants.FORCE_IMPULSE_POSITION_DISTANCE,\n                                null);\n                        }\n\n                        // Apply damage to affected entities (small ships etc.)\n                        entity.DoDamage(\n                            MySunWindConstants.HEALTH_DAMAGE * MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS,\n                            MySunWindConstants.SHIP_DAMAGE * MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS,\n                            0,\n                            MyDamageType.Sunwind, MyAmmoType.Unknown, null);\n                    }\n                }\n            }\n        }\n\n        //  Calculates intersection of line with any bounding sphere in the world (every model instance). Closest intersection and intersected triangleVertexes will be returned.\n        //  Params:\n        //      line - line we want to test for intersection\n        //      ignoreModelInstance0 and 1 - we may specify two phys objects we don't want to test for intersections. Usually this is model instance of who is shoting, or missile, etc.\n        //      outIntersection - intersection data calculated by this method\n        //      scale - the amount to scale the bounding sphere by, so we can pick up objects near the line\n        public static MyIntersectionResultLineBoundingSphere? GetIntersectionWithLineAndBoundingSphere(ref MyLine line, MyEntity ignorePhysObject0, MyEntity ignorePhysObject1, float scale, Predicate<MyEntity> condition, bool ignoreChilds = false)\n        {\n            EntityResultSet.Clear();\n            if (ignoreChilds)\n            {\n                if (ignorePhysObject0 != null)\n                {\n                    ignorePhysObject0 = ignorePhysObject0.GetBaseEntity();\n                    ignorePhysObject0.GetChildrenRecursive(EntityResultSet);\n                }\n\n                if (ignorePhysObject1 != null)\n                {\n                    ignorePhysObject1 = ignorePhysObject1.GetBaseEntity();\n                    ignorePhysObject1.GetChildrenRecursive(EntityResultSet);\n                }\n            }\n\n            //  Get collision elements near the line's bounding box (use sweep-and-prune, so we iterate only close objects)\n            BoundingBox boundingBox = new BoundingBox();\n            boundingBox = boundingBox.CreateInvalid();\n            BoundingBoxHelper.AddLine(ref line, ref boundingBox);\n\n            MyIntersectionResultLineBoundingSphere? ret = null;\n\n            var elements = GetElementsInBox(ref boundingBox);\n            foreach (MyRBElement element in elements)\n            {\n                MyEntity tempEntity = ((MyPhysicsBody)element.GetRigidBody().m_UserData).Entity;\n                MyEntity topMostParentPrefab = tempEntity.GetTopMostParent(typeof(MyPrefabBase));\n                MyEntity physicObject = topMostParentPrefab != null ? topMostParentPrefab : tempEntity;\n\n                if (condition != null && !condition(physicObject)) continue;\n\n                //  Objects to ignore\n                if ((physicObject == ignorePhysObject0) || (physicObject == ignorePhysObject1) || (ignoreChilds && EntityResultSet.Contains(physicObject))) continue;\n\n                BoundingSphere sphere = physicObject.WorldVolumeHr.Radius == 0 ?\n                    new BoundingSphere(physicObject.WorldVolume.Center, physicObject.WorldVolume.Radius) :\n                    new BoundingSphere(physicObject.WorldVolumeHr.Center, physicObject.WorldVolumeHr.Radius);\n\n                Ray ray = new Ray(line.From, line.Direction);\n                float? intersectionDistance = sphere.Intersects(ray);\n                if (intersectionDistance.HasValue && intersectionDistance <= line.Length)\n                {\n                    MyIntersectionResultLineBoundingSphere? testResult = new MyIntersectionResultLineBoundingSphere(intersectionDistance.Value, physicObject);\n\n                    //  If intersection occured and distance to intersection is closer to origin than any previous intersection)\n                    ret = MyIntersectionResultLineBoundingSphere.GetCloserIntersection(ref ret, ref testResult);\n                }\n            }\n            elements.Clear();\n\n            return ret;\n        }\n\n\n        [Conditional(\"DEBUG\"), Conditional(\"DEVELOP\")]\n        public static void GetIntersectedElements(ref MyLine line, List<MyRBElement> outElementList)\n        {\n            BoundingBox boundingBox = BoundingBoxHelper.InitialBox;\n            BoundingBoxHelper.AddLine(ref line, ref boundingBox);\n            m_pruningStructure.OverlapAllBoundingBox(ref boundingBox, outElementList, (uint)MyElementFlag.EF_RB_ELEMENT);\n        }\n\n        //  Calculate an intersection between a line and any of the models in the world. Use collision models.\n        //  The returned intersection doesn't need to be the closest one.\n        //  Params:\n        //      ignoreEntity0 and 1: entities we don't want to test for intersections: usually someone who is shoting, missile, etc.\n        public static Vector3? GetAnyIntersectionWithLine(ref MyLine line, MyEntity ignoreEntity1, MyEntity ignoreEntity2, bool skipAmmo, bool skipShips, bool skipOpenableDoors, bool ignoreWithChildren)\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"GetAnyIntersectionWithLine.GetChildren\");\n            EntityResultSet.Clear();\n            if (ignoreWithChildren)\n            {\n                if (ignoreEntity1 != null)\n                {\n                    ignoreEntity1 = ignoreEntity1.GetBaseEntity();\n                    ignoreEntity1.GetChildrenRecursive(EntityResultSet);\n                }\n\n                if (ignoreEntity2 != null)\n                {\n                    ignoreEntity2 = ignoreEntity2.GetBaseEntity();\n                    ignoreEntity2.GetChildrenRecursive(EntityResultSet);\n                }\n            }\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            ++MyPerformanceCounter.PerCameraDraw.RayCastCount;\n\n            //  Get collision skins near the line's bounding box (use sweep-and-prune, so we iterate only close objects)\n            m_pruningStructure.OverlapAllLineSegment(ref line, LineOverlapRBElementList, (uint)MyElementFlag.EF_RB_ELEMENT);\n\n            foreach (var result in LineOverlapRBElementList)\n            {\n                ++MyPerformanceCounter.PerCameraDraw.RayCastModelsProcessed;\n                MyEntity entity = ((MyPhysicsBody)(result.Element).GetRigidBody().m_UserData).Entity;\n\n                if (entity.Physics.CollisionLayer == MyConstants.COLLISION_LAYER_UNCOLLIDABLE)\n                    continue;\n\n                //  Objects to ignore\n                if (entity == ignoreEntity1 ||\n                    entity == ignoreEntity2 ||\n                    entity is MyExplosionDebrisBase ||\n                    entity is MyDummyPoint ||\n                    entity is MySpawnPoint ||\n                    entity is MyInfluenceSphere ||\n                    (skipAmmo && entity is MyAmmoBase) ||\n                    (skipShips && entity is MySmallShip) ||\n                    (skipOpenableDoors && entity is MyPrefabKinematicPartBase && !(entity is MyPrefabKinematicRotatingPart)) ||\n                    (ignoreWithChildren && EntityResultSet.Contains(entity))\n                )\n                    continue;\n\n                Vector3? ret;\n                entity.GetIntersectionWithLine(ref line, out ret, true);\n                if (ret != null) return ret;\n            }\n            return null;\n        }\n\n        //  Calculate whether there's an intersection between a line and any of the models in the world. Use only AABBs for speed.\n        //  Params:\n        //      ignoreEntity0 and 1: entities we don't want to test for intersections: usually someone who is shoting, missile, etc.\n        public static bool IsAnyIntersectionWithLineAABBOnly(ref MyLine line, MyEntity ignoreEntity1, MyEntity ignoreEntity2)\n        {\n            ++MyPerformanceCounter.PerCameraDraw.RayCastCount;\n\n            //  Get collision skins near the line's bounding box (use sweep-and-prune, so we iterate only close objects)\n            m_pruningStructure.OverlapAllLineSegment(ref line, LineOverlapRBElementList);\n\n            foreach (var result in LineOverlapRBElementList)\n            {\n                MyEntity entity = ((MyPhysicsBody)(result.Element).GetRigidBody().m_UserData).Entity;\n\n                if (entity.Physics.CollisionLayer == MyConstants.COLLISION_LAYER_UNCOLLIDABLE)\n                    continue;\n\n                //  Objects to ignore\n                if (entity == ignoreEntity1 ||\n                    entity == ignoreEntity2 ||\n                    entity is MyExplosionDebrisBase ||\n                    entity is MyDummyPoint ||\n                    entity is MySpawnPoint ||\n                    entity is MyInfluenceSphere ||\n                    entity is MyAmmoBase ||\n                    entity is MySmallShip ||\n                    (entity is MyPrefabKinematicPartBase && !(entity is MyPrefabKinematicRotatingPart))\n                )\n                    continue;\n\n                return true;\n            }\n            return false;\n        }\n\n        //  Calculates intersection of line with any triangleVertexes in the world (every model instance). Closest intersection and intersected triangleVertexes will be returned.\n        //  Params:\n        //      line - line we want to test for intersection\n        //      ignoreModelInstance0 and 1 - we may specify two phys objects we don't want to test for intersections. Usually this is model instance of who is shoting, or missile, etc.\n        //      outIntersection - intersection data calculated by this method\n        public static MyIntersectionResultLineTriangleEx? GetIntersectionWithLine(ref MyLine line, MyEntity ignorePhysObject0, MyEntity ignorePhysObject1, bool skipExplosionDebris = false, bool skipAmmo = false, bool skipKinematics = false, bool ignoreChilds = false, bool ignorePrefabLights = false, IntersectionFlags flags = IntersectionFlags.ALL_TRIANGLES, bool ignoreSmallShips = false)\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"GetIntersectionWithLine.GetChildren\");\n            EntityResultSet.Clear();\n            if (ignoreChilds)\n            {\n                if (ignorePhysObject0 != null)\n                {\n                    ignorePhysObject0 = ignorePhysObject0.GetBaseEntity();\n                    ignorePhysObject0.GetChildrenRecursive(EntityResultSet);\n                }\n\n                if (ignorePhysObject1 != null)\n                {\n                    ignorePhysObject1 = ignorePhysObject1.GetBaseEntity();\n                    ignorePhysObject1.GetChildrenRecursive(EntityResultSet);\n                }\n            }\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            ++MyPerformanceCounter.PerCameraDraw.RayCastCount;\n\n            //  Get collision skins near the line's bounding box (use sweep-and-prune, so we iterate only close objects)\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"GetIntersectionWithLine.OverlapRBAllLineSegment\");\n            m_pruningStructure.OverlapAllLineSegment(ref line, LineOverlapRBElementList, (uint)MyElementFlag.EF_RB_ELEMENT);\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            LineOverlapRBElementList.Sort(MyLineSegmentOverlapResult<MyRBElement>.DistanceComparer);\n\n            MyIntersectionResultLineTriangleEx? ret = null;\n            foreach (var result in LineOverlapRBElementList)\n            {\n                ++MyPerformanceCounter.PerCameraDraw.RayCastModelsProcessed;\n                if (ret.HasValue)\n                {\n                    float distToIntersectionSq = Vector3.DistanceSquared(line.From, ret.Value.IntersectionPointInWorldSpace);\n                    float distToAabbSq = result.Distance * result.Distance;\n                    if (distToIntersectionSq < distToAabbSq)\n                    {\n                        break;\n                    }\n                }\n\n                MyRBElement element = result.Element;\n\n                //Physics on this entity could be disabled in another thread\n                if (element.GetRigidBody() == null)\n                    continue;\n                if (element.GetRigidBody().m_UserData == null)\n                    continue;\n\n                MyEntity entity = ((MyPhysicsBody)element.GetRigidBody().m_UserData).Entity;\n\n                //  Objects to ignore\n                if (entity == ignorePhysObject0 || entity == ignorePhysObject1 || (ignoreChilds && EntityResultSet.Contains(entity))) continue;\n\n                if (skipExplosionDebris && entity is Entities.MyExplosionDebrisBase)\n                {\n                    //PM: Do we ever need intersection with this? It causes problems with aiming correction\n                    continue;\n                }\n\n                if (skipAmmo && entity is MyAmmoBase)\n                {\n                    continue;\n                }\n\n                if (skipKinematics && (entity is MyPrefabKinematicPart || entity is MyPrefabKinematic))\n                {\n                    continue;\n                }\n\n                if (ignorePrefabLights && (entity is MyPrefabLight))\n                    continue;\n\n                if (entity.Physics.CollisionLayer == MyConstants.COLLISION_LAYER_UNCOLLIDABLE)\n                    continue;\n\n                if (ignoreSmallShips && (entity is MySmallShip))\n                    continue;\n\n\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"GetIntersectionWithLine.GetIntersectionWithLine\");\n                MyIntersectionResultLineTriangleEx? testResultEx;\n                entity.GetIntersectionWithLine(ref line, out testResultEx, flags);\n\n                // Large weapons problem - PrefabLargeWeapon in fact tests GunBase\n                if (testResultEx.HasValue && testResultEx.Value.Entity != ignorePhysObject0 && testResultEx.Value.Entity != ignorePhysObject1 && (!ignoreChilds || !EntityResultSet.Contains(testResultEx.Value.Entity)))\n                {\n                    MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"GetIntersectionWithLine.GetCloserIntersection\");\n                    //  If intersection occured and distance to intersection is closer to origin than any previous intersection\n                    ret = MyIntersectionResultLineTriangleEx.GetCloserIntersection(ref ret, ref testResultEx);\n                    MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n                }\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n            }\n\n            return ret;\n        }\n\n        private static MyEntity GetCloserEntity(MyEntity a, MyEntity b)\n        {\n            if (((a == null) && (b != null)) ||\n                ((a != null) && (b != null) && (b.GetDistanceBetweenCameraAndPosition() < a.GetDistanceBetweenCameraAndPosition())))\n            {\n                //  If only \"b\" contains valid intersection, or when it's closer than \"a\"\n                return b;\n            }\n            else\n            {\n                //  This will be returned also when ((a == null) && (b == null))\n                return a;\n            }\n        }\n\n        // preinsert interection testing:\n        // if these pairs collide, we take it as collision. Any other combination is ignored.\n        // sphere vs sphere, box, voxel, tringle mesh\n        // box vs shpere, box, voxel, tringle mesh\n        // tringle mesh vs box, shpere\n        // voxel vs voxel (check only boundig box)\n        // the input rigid body can be already in scene\n\n        // assumption rbInputToTest should have in userdata variable pointer to parent entity (for collision test with itself exclusion) \n        //      otherwise its new object not added in phys scene yet\n\n        public static void GetCollisionListForElement(MyRBElement rbInputElement)\n        {\n            MyDynamicAABBTree prunningStructure = MyPhysics.physicsSystem.GetRigidBodyModule().GetPruningStructure();\n            rbInputElement.UpdateAABB();\n\n            BoundingBox rbInputElementGetWorldSpaceAABB = rbInputElement.GetWorldSpaceAABB();//wrong investigate fix\n\n            var elements = GetElementsInBox(prunningStructure, ref rbInputElementGetWorldSpaceAABB);\n            foreach (MyRBElement worldCollidingElement in elements)\n            {\n                MyRBElement el1 = rbInputElement;\n                MyRBElement el2 = worldCollidingElement;\n                MyPhysicsBody gameRB = (MyPhysicsBody)worldCollidingElement.GetRigidBody().m_UserData;\n                if (!gameRB.Enabled)\n                    continue;\n                MyEntity worldCollidingEntity = gameRB.Entity;\n\n\n                if (!MyPhysics.physicsSystem.GetRigidBodyModule().IsEnabledCollisionInLayers(el1.CollisionLayer, el2.CollisionLayer))\n                    continue;\n\n                //test if object is alredy in scene //? how we have only rigid body now so far\n                if (rbInputElement.GetRigidBody().m_UserData != null && ((MyPhysicsBody)rbInputElement.GetRigidBody().m_UserData).Entity == worldCollidingEntity)\n                    continue;\n                MyEntity inputEntity = ((MyPhysicsBody)rbInputElement.GetRigidBody().m_UserData).Entity;\n\n                if (!worldCollidingEntity.VisibleInGame)\n                    continue;\n\n                // we ignore collision between foundation factory and her prefab container\n                if (worldCollidingEntity is MyPrefabFoundationFactory)\n                {\n                    MyPrefabFoundationFactory foundationFactory = worldCollidingEntity as MyPrefabFoundationFactory;\n                    if (foundationFactory.PrefabContainer == inputEntity)\n                        continue;\n                }\n\n                // we ignore collision between largeship and her hangar\n                if (worldCollidingEntity is MyPrefabLargeShip && inputEntity is MyPrefabHangar ||\n                    worldCollidingEntity is MyPrefabHangar && inputEntity is MyPrefabLargeShip)\n                {\n                    continue;\n                }\n\n                bool collision = false;\n                if (el1 is MyRBSphereElement) //sphere vs sphere\n                    collision = MyPhysics.physicsSystem.GetRBInteractionModule().DoStaticTestInteraction(el1, el2);\n                if (el1 is MyRBSphereElement && el2 is MyRBVoxelElement) //sphere vs voxel\n                {\n                    MyRBSphereElement el1Retyped = el1 as MyRBSphereElement;\n                    MyVoxelMap el2Retyped = worldCollidingEntity as MyVoxelMap;\n                    collision = (el2Retyped != null && el2Retyped.DoOverlapSphereTest(el1Retyped.Radius, el1Retyped.GetGlobalTransformation().Translation));\n                }\n                /*\n                if (el1 is MyRBSphereElement && el1 is MyRBSphereElement) //sphere vs sphere\n                {\n                    collision = MyPhysics.physicsSystem.GetRBInteractionModule().DoStaticTestInteraction(el1, el2);\n                }\n                if (el1 is MyRBSphereElement && el1 is MyRBSphereElement) //sphere vs sphere\n                {\n                    collision = MyPhysics.physicsSystem.GetRBInteractionModule().DoStaticTestInteraction(el1, el2);\n                }\n                if (el1 is MyRBSphereElement && el1 is MyRBSphereElement) //sphere vs sphere\n                {\n                    collision = MyPhysics.physicsSystem.GetRBInteractionModule().DoStaticTestInteraction(el1, el2);\n                }\n                */\n                if (el1 is MyRBBoxElement)\n                {\n                    collision = MyPhysics.physicsSystem.GetRBInteractionModule().DoStaticTestInteraction(el1, el2);\n                }\n                if (el1 is MyRBTriangleMeshElement && (el2 is MyRBSphereElement || el2 is MyRBBoxElement))\n                    collision = MyPhysics.physicsSystem.GetRBInteractionModule().DoStaticTestInteraction(el1, el2);\n\n                /*\n                if (el1 is MyRBVoxelElement && el2 is MyRBVoxelElement)\n                {\n                    MyVoxelMap e1 = inputEntity as MyVoxelMap;\n                    MyVoxelMap e2 = worldCollidingEntity as MyVoxelMap;\n\n                    BoundingBox woxMapBB = e2.BoundingBox;\n                    if (e1.IsBoxIntersectingBoundingBoxOfThisVoxelMap(ref woxMapBB))\n                        collision = true;\n                }\n                */\n\n                if (collision)\n                    m_CollisionsForElementsHelper.Add(el2);\n            }\n            elements.Clear();\n        }\n\n\n        //  Return JLX that is intersecting sphere, see comments for method used below\n        public static MyEntity GetIntersectionWithSphere(ref BoundingSphere sphere)\n        {\n            return GetIntersectionWithSphere(ref sphere, null, null, false, false);\n        }\n\n        //  Return objects that is intersecting sphere, see comments for method used below\n        public static MyEntity GetIntersectionWithSphere(ref BoundingSphere sphere, MyEntity ignorePhysObject0, MyEntity ignorePhysObject1)\n        {\n            return GetIntersectionWithSphere(ref sphere, ignorePhysObject0, ignorePhysObject1, false, true);\n        }\n\n\n        //  Return reference to object that intersects specific sphere. If not intersection, null is returned.\n        //  We don't look for closest intersection - so we stop on first intersection found.\n        //  Params:\n        //      sphere - sphere we want to test for intersection\n        //      ignoreModelInstance0 and 1 - we may specify two phys objects we don't want to test for intersections. Usually this is model instance of who is shoting, or missile, etc.\n        //      ignoreVoxelMaps - in some cases, we want to test intersection only with non-voxelmap phys objects\n        public static void GetIntersectionWithSphere(ref BoundingSphere sphere, MyEntity ignorePhysObject0, MyEntity ignorePhysObject1, bool ignoreVoxelMaps, bool volumetricTest, ref List<MyEntity> result)\n        {\n            //  Get collision elements near the line's bounding box (use sweep-and-prune, so we iterate only close objects)\n            BoundingBox boundingBox = BoundingBoxHelper.InitialBox;\n            BoundingBoxHelper.AddSphere(ref sphere, ref boundingBox);\n\n            var elements = GetElementsInBox(ref boundingBox);\n            foreach (MyRBElement element in elements)\n            {\n                MyEntity physicObject = ((MyPhysicsBody)element.GetRigidBody().m_UserData).Entity;\n\n                // Voxelmap to ignore\n                if (ignoreVoxelMaps && physicObject is MyVoxelMap) continue;\n                //  Objects to ignore\n                if ((physicObject == ignorePhysObject0) || (physicObject == ignorePhysObject1)) continue;\n\n                if (physicObject.Physics.CollisionLayer == MyConstants.COLLISION_LAYER_UNCOLLIDABLE)\n                    continue;\n\n\n                if (physicObject is Entities.MyExplosionDebrisBase)\n                {\n                    //PM: Do we ever need intersection with this? It causes problems with aiming correction\n                    continue;\n                }\n\n                if (physicObject.GetIntersectionWithSphere(ref sphere))\n                {\n                    //  If intersection found, return that object. We don't need to look for more objects.\n                    result.Add(physicObject);\n                }\n\n                if (volumetricTest && (physicObject is MyVoxelMap) && (physicObject as MyVoxelMap).DoOverlapSphereTest(sphere.Radius, sphere.Center))\n                {\n                    //  If intersection found, return that object. We don't need to look for more objects.\n                    result.Add(physicObject);\n                }\n            }\n            elements.Clear();\n        }\n\n        //  Return reference to object that intersects specific sphere. If not intersection, null is returned.\n        //  We don't look for closest intersection - so we stop on first intersection found.\n        //  Params:\n        //      sphere - sphere we want to test for intersection\n        //      ignoreModelInstance0 and 1 - we may specify two phys objects we don't want to test for intersections. Usually this is model instance of who is shoting, or missile, etc.\n        //      ignoreVoxelMaps - in some cases, we want to test intersection only with non-voxelmap phys objects\n        public static MyEntity GetIntersectionWithSphere(ref BoundingSphere sphere, MyEntity ignorePhysObject0, MyEntity ignorePhysObject1, bool ignoreVoxelMaps, bool volumetricTest)\n        {\n            //  Get collision elements near the line's bounding box (use sweep-and-prune, so we iterate only close objects)\n            BoundingBox boundingBox = BoundingBoxHelper.InitialBox;\n            BoundingBoxHelper.AddSphere(ref sphere, ref boundingBox);\n\n            MyEntity result = null;\n\n            var elements = GetElementsInBox(ref boundingBox);\n            foreach (MyRBElement element in elements)\n            {\n                MyEntity physicObject = ((MyPhysicsBody)element.GetRigidBody().m_UserData).Entity;\n\n                // Voxelmap to ignore\n                if (ignoreVoxelMaps && physicObject is MyVoxelMap) continue;\n                //  Objects to ignore\n                if ((physicObject == ignorePhysObject0) || (physicObject == ignorePhysObject1)) continue;\n\n                if (physicObject is MyExplosionDebrisBase)\n                {\n                    //PM: Do we ever need intersection with this? It causes problems with aiming correction\n                    continue;\n                }\n\n                if (physicObject.Physics.CollisionLayer == MyConstants.COLLISION_LAYER_UNCOLLIDABLE)\n                    continue;\n\n                if (physicObject.GetIntersectionWithSphere(ref sphere))\n                {\n                    //  If intersection found, return that object. We don't need to look for more objects.\n                    result = physicObject;\n                    break;\n                }\n\n                if (volumetricTest && (physicObject is MyVoxelMap) && (physicObject as MyVoxelMap).DoOverlapSphereTest(sphere.Radius, sphere.Center))\n                {\n                    //  If intersection found, return that object. We don't need to look for more objects.\n                    result = physicObject;\n                    break;\n                }\n            }\n            elements.Clear();\n            return result;\n        }\n\n        public static void GetIntersectionsWithAABB(BoundingBox boundingBox, List<MyEntity> intersected)\n        {\n            var elements = GetElementsInBox(ref boundingBox);\n            foreach (MyRBElement element in elements)\n            {\n                MyEntity physicObject = ((MyPhysicsBody)element.GetRigidBody().m_UserData).Entity;\n                intersected.Add(physicObject);\n            }\n            elements.Clear();\n        }\n\n        public static void GetIntersectionsWithAABBOfType<T>(BoundingBox boundingBox, List<T> intersected) where T : MyEntity\n        {\n            var elements = GetElementsInBox(ref boundingBox);\n            foreach (MyRBElement element in elements)\n            {\n                MyEntity physicObject = ((MyPhysicsBody)element.GetRigidBody().m_UserData).Entity;\n                if (physicObject is T)\n                {\n                    intersected.Add((T)physicObject);\n                }\n            }\n            elements.Clear();\n        }\n\n        //the method finds the new direction from weapon position to the nearest small ship hit point, which is hit in given direction. Can be used for better-aiming system.\n        public static Vector3? GetDirectionFromStartPointToHitPointOfNearestObject(MyEntity ignoreEntity, Vector3 weaponPosition, float maxTrajectoryLeng)\n        {\n            Vector3 directionStartPosition = MyCamera.Position;\n            Vector3 directionToSearchTheHit;\n\n            MyCameraAttachedToEnum cameraAttachment = MyGuiScreenGamePlay.Static.CameraAttachedTo;\n\n            bool cameraAttachmentAllowedMode = ((cameraAttachment == MyCameraAttachedToEnum.PlayerMinerShip) || (cameraAttachment == MyCameraAttachedToEnum.PlayerMinerShip_ThirdPersonDynamic) || cameraAttachment == MyCameraAttachedToEnum.LargeWeapon);\n            if (!cameraAttachmentAllowedMode)\n                return null;\n\n            if (cameraAttachment == MyCameraAttachedToEnum.PlayerMinerShip_ThirdPersonDynamic)\n            {\n                if (MySession.Is25DSector)\n                {\n                    directionStartPosition = ignoreEntity.GetPosition();\n                    Vector3 crosshair = directionStartPosition + ignoreEntity.WorldMatrix.Forward;\n                    crosshair.Y = 0;\n\n                    directionToSearchTheHit = crosshair - directionStartPosition;\n                    directionToSearchTheHit.Y = 0;\n                }\n                else\n                {\n                    directionToSearchTheHit = MyThirdPersonSpectator.GetCrosshair() - directionStartPosition;\n                }\n\n                directionToSearchTheHit.Normalize();\n            }\n            else\n            {\n                directionToSearchTheHit = MyCamera.ForwardVector;\n            }\n\n            Vector3 lineEndPosition = directionStartPosition + (directionToSearchTheHit * maxTrajectoryLeng);\n\n\n            MyLine line = new MyLine(directionStartPosition, lineEndPosition, true);\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyEntities.GetIntersectionWithLine\");\n            //Intersection ignores children of \"ignoreEntity\", thus we must not hit our own barrels\n            MyIntersectionResultLineTriangleEx? intersection = MyEntities.GetIntersectionWithLine(ref line, ignoreEntity, null, true, false, false, true);\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n\n            if (intersection == null)\n                return null;\n\n            Vector3 result = intersection.Value.IntersectionPointInWorldSpace - weaponPosition;\n            if (MySession.Is25DSector)\n                result.Y = 0;\n            result.Normalize();\n\n            return result;\n        }\n\n        //  This method calculated the nearest intersection between line and phys object exactly as GetIntersectionWithLine().\n        //  You can define one ignorePhysObject entity\n        //public static MyIntersectionResultLineTriangleEx? GetNearestIntersectionWithSphere(MyEntity ignorePhysObject, ref MyLine line)\n        //{\n        //    //  Get collision elements near the line's bounding box (use sweep-and-prune, so we iterate only close objects)\n        //    //BoundingBox boundingBox = BoundingBoxHelper.InitialBox;\n        //    //BoundingBoxHelper.AddLine(ref line, ref boundingBox);\n        //    //m_pruningStructure.OverlapRBAllBoundingBox(ref boundingBox, m_overlapRBElementList);\n        //    m_pruningStructure.OverlapRBAllLineSegment(ref line, m_overlapRBElementList);\n\n        //    MyIntersectionResultLineTriangleEx? ret = null;\n\n        //    foreach (MyRBElement element in m_overlapRBElementList)\n        //    {\n        //        MyEntity physicObject = ((MyGameRigidBody)element.GetRigidBody().m_UserData).Entity;\n        //        if (physicObject == ignorePhysObject)\n        //            continue;\n        //        if (physicObject is AppCode.Game.Managers.EntityManager.Entities.MyExplosionDebrisBase)\n        //        { //PM: Do we ever need intersection with this? It causes problems with aiming correction\n        //            continue;\n        //        }\n\n        //        MyIntersectionResultLineTriangleEx? testResultEx = null;\n        //        //physicObject.GetIntersectionWithLine(ref line, out testResultEx);\n        //        if (testResultEx == null)\n        //            continue;\n\n        //        ret = MyIntersectionResultLineTriangleEx.GetCloserIntersection(ref ret, ref testResultEx);\n        //    }\n\n        //    return ret;\n        //}\n\n        //  This method calculated intersection between line and phys object exactly as GetIntersectionWithLine(), but ignores object other than specified types/classes.\n        //  It's usefull if you want to check intersection with specified types, e.g. voxels, large ships, etc, but want to ignore other ones.\n        public static MyIntersectionResultLineTriangleEx? GetIntersectionWithLine_IgnoreOtherThanSpecifiedClass(ref MyLine line, Type[] doNotIgnoreTheseTypes, bool checkDerivedTypes = false)\n        {\n            ++MyPerformanceCounter.PerCameraDraw.RayCastCount;\n\n            //  Get collision elements near the line's bounding box (use sweep-and-prune, so we iterate only close objects)\n            BoundingBox boundingBox = BoundingBoxHelper.InitialBox;\n            BoundingBoxHelper.AddLine(ref line, ref boundingBox);\n\n            MyIntersectionResultLineTriangleEx? ret = null;\n            var elements = GetElementsInBox(ref boundingBox);\n            foreach (MyRBElement element in elements)\n            {\n                MyEntity physicObject = ((MyPhysicsBody)element.GetRigidBody().m_UserData).Entity;\n                ++MyPerformanceCounter.PerCameraDraw.RayCastModelsProcessed;\n\n                //  Find if this object is of type we MUST NOT ignore and if is, we don't ignore. Otherwise we ignore.\n                bool ignore = true;\n                foreach (Type doNotIgnore in doNotIgnoreTheseTypes)\n                {\n                    if (physicObject.GetType() == doNotIgnore ||\n                        checkDerivedTypes && doNotIgnore.IsAssignableFrom(physicObject.GetType()))\n                    {\n                        ignore = false;\n                        break;\n                    }\n                }\n                if (ignore == true) continue;\n\n                MyIntersectionResultLineTriangleEx? testResultEx;\n                physicObject.GetIntersectionWithLine(ref line, out testResultEx);\n\n                //  If intersection occured and distance to intersection is closer to origin than any previous intersection\n                ret = MyIntersectionResultLineTriangleEx.GetCloserIntersection(ref ret, ref testResultEx);\n            }\n            elements.Clear();\n\n            return ret;\n        }\n\n        //  This method calculated intersection between line and phys object exactly as GetIntersectionWithLine(), but ignores object other than specified types/classes.\n        //  It's usefull if you want to check intersection with specified types, e.g. voxels, large ships, etc, but want to ignore other ones.\n        public static bool GetAnyIntersectionWithLine_IgnoreOtherThanSpecifiedClass(ref MyLine line, Type[] doNotIgnoreTheseTypes, bool checkDerivedTypes = false)\n        {\n            ++MyPerformanceCounter.PerCameraDraw.RayCastCount;\n\n            //  Get collision elements near the line's bounding box (use sweep-and-prune, so we iterate only close objects)\n            BoundingBox boundingBox = BoundingBoxHelper.InitialBox;\n            BoundingBoxHelper.AddLine(ref line, ref boundingBox);\n\n            bool result = false;\n            var elements = GetElementsInBox(ref boundingBox);\n            foreach (MyRBElement element in elements)\n            {\n                MyEntity physicObject = ((MyPhysicsBody)element.GetRigidBody().m_UserData).Entity;\n                ++MyPerformanceCounter.PerCameraDraw.RayCastModelsProcessed;\n\n                //  Find if this object is of type we MUST NOT ignore and if is, we don't ignore. Otherwise we ignore.\n                bool ignore = true;\n                foreach (Type doNotIgnore in doNotIgnoreTheseTypes)\n                {\n                    if (physicObject.GetType() == doNotIgnore ||\n                        checkDerivedTypes && doNotIgnore.IsAssignableFrom(physicObject.GetType()))\n                    {\n                        ignore = false;\n                        break;\n                    }\n                }\n                if (ignore == true) continue;\n\n                MyIntersectionResultLineTriangleEx? testResultEx;\n                if (physicObject.GetIntersectionWithLine(ref line, out testResultEx))\n                {\n                    result = true;\n                    break;\n                }\n            }\n            elements.Clear();\n            return result;\n        }\n\n        //  Usefull especially for rectangular selection of objects - we get all objects intersecting bounding frustum\n        public static void GetAllIntersectionWithBoundingFrustum_UNOPTIMIZED(ref BoundingFrustum boundingFrustum, List<MyEntity> resultList, bool onlyVisible = true, bool onlySelectable = false, bool ignorePrefabs = false)\n        {\n            EntityInputList.Clear();\n\n            if (onlySelectable)\n            {\n                GetChildren(EntityInputList);\n            }\n            else\n            {\n                EntityInputList.Clear();\n                foreach (var entity in m_entities)\n                {\n                    EntityInputList.Add(entity);\n                }\n            }\n\n            GetIntersectionWithBoundingFrustum(ref boundingFrustum, EntityInputList, resultList, onlyVisible, onlySelectable, ignorePrefabs);\n        }\n\n\n        //  Usefull especially for rectangular selection of objects - we get all objects intersecting bounding frustum\n        public static void GetAllIntersectionWithBoundingFrustum(ref BoundingFrustum boundingFrustum, List<MyEntity> resultList, bool onlyVisible = true, bool onlySelectable = false, bool ignorePrefabs = false)\n        {\n            EntityInputList.Clear();\n\n            m_pruningStructure.OverlapAllFrustum(ref boundingFrustum, OverlapRBElementList, (uint)MyElementFlag.EF_RB_ELEMENT);\n\n            foreach (MyRBElement element in OverlapRBElementList)\n            {\n                MyPhysicsBody gameRB = (MyPhysicsBody)element.GetRigidBody().m_UserData;\n                if (gameRB.CollisionLayer == MyConstants.COLLISION_LAYER_UNCOLLIDABLE)\n                    continue;\n\n                resultList.Add(gameRB.Entity);\n            }\n\n            OverlapRBElementList.Clear();\n        }\n\n        // internal method for bounding frustum intersection\n        static void GetIntersectionWithBoundingFrustum(ref BoundingFrustum boundingFrustum, List<MyEntity> testObjects, List<MyEntity> addToList, bool onlyVisible = true, bool onlySelectable = false, bool ignorePrefabs = false)\n        {\n            System.Diagnostics.Debug.Assert(addToList != null);\n\n            foreach (MyEntity physObject in testObjects)\n            {\n                if (physObject.GetIntersectionWithBoundingFrustum(ref boundingFrustum) == true)\n                {\n                    if (!onlyVisible || (onlyVisible && physObject.IsVisible()))\n                        if (!onlySelectable || (onlySelectable && MyEntities.IsTypeSelectable(physObject.GetType())))\n                            if (!ignorePrefabs || (ignorePrefabs && !(physObject is MyPrefabBase)))\n                                addToList.Add(physObject);\n                }\n            }\n        }\n\n        //  Returns total count of large ships in sectors\n        public static int GetLargeShipsCount()\n        {\n            int largeShipCounter = 0;\n            foreach (MyEntity entity in m_entities)\n            {\n                if (entity is MyPrefabLargeShip)\n                {\n                    largeShipCounter++;\n                }\n            }\n            return largeShipCounter;\n        }\n\n        //  Returns count of all non-voxel map objects\n        //  //check for all childs of prefab container\n        public static int GetObjectsCount()\n        {\n            return m_entities.Count;\n        }\n\n        //  Returns count of all non-voxel map objects\n        //  //check for all childs of prefab container\n        public static int GetEditorObjectsCount()\n        {\n            return m_editorObjectsCount;\n        }\n\n        public static List<MyMwcObjectBuilder_Base> Save()\n        {            /*\n            if (MyFakes.MWBUILDER)\n            {\n                MyVoxelMaps.SaveVoxelContents();\n            }\n                       */\n            return GetObjectBuilders(m_entities, true, true);\n        }\n\n        public static bool IsMarkedForClose(MyEntity entity)\n        {\n            return m_entitiesToClose.Contains(entity);\n        }\n\n        // This method returns object builders of all objects in MyEntities, not only JLX objects.\n        // Saves the whole hierarchy, but every type needs to resolve parent links on its own (probably in Link)\n        private static List<MyMwcObjectBuilder_Base> GetObjectBuilders(HashSet<MyEntity> entities, bool getExactCopy, bool entitiesToSave)\n        {\n            /*\n            foreach (MyEntity entity in m_deactivateList)\n            {\n                entity.Activate(false, false);\n            }\n            m_deactivateList.Clear();\n\n            foreach (MyEntity entity in m_activateList)\n            {\n                entity.Activate(true, false);\n            }\n            m_activateList.Clear();\n              */\n\n            List<MyMwcObjectBuilder_Base> physObjectBuilders = null;\n            if (entities != null)\n            {\n                physObjectBuilders = new List<MyMwcObjectBuilder_Base>();\n\n                foreach (var entity in entities)\n                {\n                    if (entity.Save && !m_entitiesToClose.Contains(entity))\n                    {\n                        entity.BeforeSave();\n                        MyMwcObjectBuilder_Base objBuilder = entity.GetObjectBuilder(getExactCopy);\n                        Debug.Assert(objBuilder != null, \"Save flag specified returns nullable objectbuilder\");\n                        \n             if (m_activateList.Contains(entity))\n                 objBuilder.PersistentFlags &= ~MyPersistentEntityFlags.Deactivated;\n\n             if (m_deactivateList.Contains(entity))\n                 objBuilder.PersistentFlags |= MyPersistentEntityFlags.Deactivated;\n                          \n                        physObjectBuilders.Add(objBuilder);\n                    }\n\n                    // recurse\n                    var childrenObjectBuilders = GetObjectBuilders(entity.Children, getExactCopy, entitiesToSave);\n                    if (childrenObjectBuilders != null) physObjectBuilders.AddRange(childrenObjectBuilders);\n                }\n            }\n\n            return physObjectBuilders;\n        }\n\n\n        // This method returns object builders of all objects in MyEntities, not only JLX objects.\n        // Saves the whole hierarchy, but every type needs to resolve parent links on its own (probably in Link)\n        private static List<MyMwcObjectBuilder_Base> GetObjectBuilders(ObservableCollection<MyEntity> entities, bool getExactCopy, bool entitiesToSave)\n        {\n            List<MyMwcObjectBuilder_Base> physObjectBuilders = null;\n            if (entities != null)\n            {\n                physObjectBuilders = new List<MyMwcObjectBuilder_Base>();\n\n                foreach (var entity in entities)\n                {\n                    if (entity.Save)\n                    {\n                        entity.BeforeSave();\n                        MyMwcObjectBuilder_Base objBuilder = entity.GetObjectBuilder(getExactCopy);\n                        Debug.Assert(objBuilder != null, \"Save flag specified returns nullable objectbuilder\");\n                        physObjectBuilders.Add(objBuilder);\n                    }\n\n                    // recurse\n                    var childrenObjectBuilders = GetObjectBuilders(entity.Children, getExactCopy, entitiesToSave);\n                    if (childrenObjectBuilders != null) physObjectBuilders.AddRange(childrenObjectBuilders);\n                }\n            }\n\n            return physObjectBuilders;\n        }\n\n\n        private static bool TestRigidBody(MyRBElement element, bool assert = true)\n        {\n            if (element == null)\n                return false;\n            MyEntities.CollisionsElements.Clear();\n            MyEntities.GetCollisionListForElement(element);\n            if (MyEntities.CollisionsElements.Count != 0)\n            {\n                //TODO: This does not works well too, log is full of false asserts!\n                /*\n                MyMwcLog.WriteLine(\"Collision when inserting object\");\n                MyMwcLog.IncreaseIndent();\n                MyMwcLog.WriteLine(element.ToString() + \" at \" + element.GetGlobalTransformation().Translation.ToString());\n                MyEntity entity = ((MyPhysicsBody)element.GetRigidBody().m_UserData).Entity;\n                MyMwcLog.WriteLine(entity.ToString());\n                MyMwcLog.DecreaseIndent();\n                MyMwcLog.WriteLine(\"with\");\n                MyMwcLog.IncreaseIndent();\n                foreach (MyRBElement dbg_element in MyEntities.CollisionsElements)\n                {\n                    MyEntity dbg_entity = ((MyPhysicsBody)dbg_element.GetRigidBody().m_UserData).Entity;\n                    MyMwcLog.WriteLine(dbg_entity.ToString() + \" at \" + dbg_entity.GetPosition().ToString());\n                    //add as many more lines as needed\n                }\n                MyMwcLog.DecreaseIndent();\n                  */\n                //TODO: This does not works well. Put large ship weapon on some prefab and you get false asserts!\n                //Debug.Fail(\"Attempt to add Element failed due to the initial collision interaction. See log for details.\");\n\n                return true;\n            }\n\n            return false;\n        }\n\n        public static bool TestEntityAfterInsertionForCollision(MyEntity thisEntity, bool assert = true)\n        {\n            bool res = false;\n            if (thisEntity.Physics != null)\n            {\n                foreach (MyRBElement element in (thisEntity.Physics as MyPhysicsBody).GetRBElementList())\n                    res |= TestRigidBody(element, assert);\n            }\n            foreach (MyEntity entity in thisEntity.Children)\n            {\n                res |= TestEntityAfterInsertionForCollision(entity, assert);\n            }\n\n            return res;\n        }\n\n        static void ReleaseMaskOnClose(MyEntity obj, MyGroupMask mask)\n        {\n            obj.OnClose += new Action<MyEntity>((e) => MyPhysics.physicsSystem.GetRigidBodyModule().GetGroupMaskManager().PushBackGroupMask(mask));\n        }\n\n        public static MyEntity CreateFromObjectBuilder(string hudLabelText, MyMwcObjectBuilder_Base objectBuilder, Matrix matrix)\n        {\n            switch (objectBuilder.GetObjectBuilderType())\n            {\n                case MyMwcObjectBuilderTypeEnum.SmallShip_Player:\n                    {\n                        MyMwcObjectBuilder_SmallShip_Player objectBuilderEx = (MyMwcObjectBuilder_SmallShip_Player)objectBuilder;\n                        objectBuilderEx.PositionAndOrientation = new MyMwcPositionAndOrientation(matrix);\n                        objectBuilderEx.EntityId = MyEntityIdentifier.AllocatePlayershipId().NumericValue; // Get unused entity id\n                        MySmallShip newObject = new MySmallShip();\n                        MySession.PlayerShip = newObject;\n                        MyGuiScreenGamePlay.Static.ControlledShip = MySession.PlayerShip;\n                        newObject.Init(objectBuilderEx.DisplayName, objectBuilderEx);\n                        newObject.OnDie += new DieHandler(onPlayerDie);\n\n                        if (MySession.Static != null && MySession.Static.Player != null)\n                        {\n                            MySession.Static.Player.Ship = newObject;\n\n                            if (newObject.ShipType == MyMwcObjectBuilder_SmallShip_TypesEnum.STANISLAV)\n                            {\n                                MySteamStats.SetAchievement(MySteamAchievementNames.ShipStanislav);\n                            }\n                        }\n\n                        if (MySession.PlayerFriends != null)\n                        {\n                            MyGroupMask mask = new MyGroupMask();\n                            var result = MyPhysics.physicsSystem.GetRigidBodyModule().GetGroupMaskManager().GetGroupMask(ref mask);\n                            Debug.Assert(result, \"Out of masks\");\n                            //newObject.Physics.GroupMask |= mask;\n                            //ReleaseMaskOnClose(newObject, mask);\n                            //MySession.PlayerFriends.FriendMask = mask;\n\n                            foreach (var friend in MySession.PlayerFriends.GetDebug())\n                            {\n                                MySmallShipBot bot = friend as MySmallShipBot;\n                                if (bot != null && bot.Leader != null)\n                                {   //Suppose that player lead changed\n                                    bot.Follow(MySession.Static.Player.Ship);\n\n                                }\n                            }\n                        }\n                        return newObject;\n                    }\n                case MyMwcObjectBuilderTypeEnum.SmallShip:\n                    {\n                        MyMwcObjectBuilder_SmallShip objectBuilderEx = (MyMwcObjectBuilder_SmallShip)objectBuilder;\n                        objectBuilderEx.PositionAndOrientation = new MyMwcPositionAndOrientation(matrix);\n                        MySmallShip newObject = new MySmallShip();\n                        //newObject.Init(hudLabelText, objectBuilderEx, matrix, 1.0f);\n                        newObject.Init(objectBuilderEx.DisplayName, objectBuilderEx);\n                        return newObject;\n                    }\n                case MyMwcObjectBuilderTypeEnum.SmallShip_Bot:\n                    {\n                        MyMwcObjectBuilder_SmallShip_Bot objectBuilderEx = (MyMwcObjectBuilder_SmallShip_Bot)objectBuilder;\n                        objectBuilderEx.PositionAndOrientation = new MyMwcPositionAndOrientation(matrix);\n                        objectBuilderEx.ShipHealthRatio = MyGameplayConstants.HEALTH_RATIO_MAX;\n                        MySmallShipBot newObject = new MySmallShipBot();\n                        // !!! we must detect faction status with player by another method\n                        //if (string.IsNullOrEmpty(objectBuilderEx.DisplayName))\n                        //{\n                        //    if (string.IsNullOrEmpty(hudLabelText))\n                        //    {\n                        //        if (MySession.PlayerShip != null)\n                        //        {\n                        //            var relationToPlayer = MyFactions.GetFactionsRelation(MySession.PlayerShip.Faction, objectBuilderEx.Faction);\n                        //            switch (relationToPlayer)\n                        //            {\n                        //            case MyFactionRelationEnum.Neutral:\n                        //                objectBuilderEx.DisplayName = MyTextsWrapper.Get(MyTextsWrapperEnum.Neutral).ToString();\n                        //                break;\n                        //            case MyFactionRelationEnum.Friend:\n                        //                objectBuilderEx.DisplayName = MyTextsWrapper.Get(MyTextsWrapperEnum.Friend).ToString();\n                        //                break;\n                        //            case MyFactionRelationEnum.Enemy:\n                        //                objectBuilderEx.DisplayName = MyTextsWrapper.Get(MyTextsWrapperEnum.Enemy).ToString();\n                        //                break;\n                        //            }\n                        //        }\n                        //    }\n                        //    else\n                        //    {\n                        //        objectBuilderEx.DisplayName = hudLabelText;\n                        //    }                            \n                        //}\n                        if (string.IsNullOrEmpty(objectBuilderEx.DisplayName))\n                        {\n                            if (!string.IsNullOrEmpty(hudLabelText))\n                            {\n                                objectBuilderEx.DisplayName = hudLabelText;\n                            }\n                        }\n\n                        //newObject.Init(hudLabelText, objectBuilderEx, matrix, 1.0f);\n                        newObject.Init(objectBuilderEx.DisplayName, objectBuilderEx);\n\n                        // disable because 0004748: Disable all HUD names for generic Friend, Enemy, Neutral\n                        //if (string.IsNullOrEmpty(objectBuilderEx.DisplayName)) \n                        //{\n                        //    if (MySession.PlayerShip != null)\n                        //    {\n                        //        var relationToPlayer = MyFactions.GetFactionsRelation(MySession.PlayerShip, newObject);\n                        //        switch (relationToPlayer)\n                        //        {\n                        //            case MyFactionRelationEnum.Neutral:\n                        //                newObject.DisplayName = MyTextsWrapper.Get(MyTextsWrapperEnum.Neutral).ToString();\n                        //                break;\n                        //            case MyFactionRelationEnum.Friend:\n                        //                newObject.DisplayName = MyTextsWrapper.Get(MyTextsWrapperEnum.Friend).ToString();\n                        //                break;\n                        //            case MyFactionRelationEnum.Enemy:\n                        //                newObject.DisplayName = MyTextsWrapper.Get(MyTextsWrapperEnum.Enemy).ToString();\n                        //                break;\n                        //        }\n                        //    }\n                        //}\n                        return newObject;\n                    }\n                case MyMwcObjectBuilderTypeEnum.Drone:\n                    {\n                        var droneObjectBuilder = (MyMwcObjectBuilder_Drone)objectBuilder;\n                        droneObjectBuilder.PositionAndOrientation = new MyMwcPositionAndOrientation(matrix);\n                        //droneObjectBuilder.ShipHealth = MyGameplayConstants.MAXHEALTH_DRONE;\n                        var drone = new MyDrone();\n\n                        StringBuilder displayName;\n                        if (!string.IsNullOrEmpty(droneObjectBuilder.DisplayName))\n                        {\n                            displayName = new StringBuilder(droneObjectBuilder.DisplayName);\n                        }\n                        else\n                        {\n                            var defaultName = MyTextsWrapper.Get(MyTextsWrapperEnum.Drone);\n                            displayName = string.IsNullOrEmpty(hudLabelText) ? defaultName : new StringBuilder(hudLabelText);\n                        }\n\n                        drone.Init(displayName, droneObjectBuilder);\n                        drone.Health = MyGameplayConstants.MAXHEALTH_DRONE;\n                        return drone;\n                    }\n                case MyMwcObjectBuilderTypeEnum.LargeShip:\n                    {\n                        MyMwcObjectBuilder_LargeShip objectBuilderEx = (MyMwcObjectBuilder_LargeShip)objectBuilder;\n                        objectBuilderEx.PositionAndOrientation = new MyMwcPositionAndOrientation(matrix);\n                        MyPrefabContainer container = new MyPrefabContainer();\n                        MyMwcObjectBuilder_PrefabContainer prefabContOB = MyMwcObjectBuilder_Base.CreateNewObject(MyMwcObjectBuilderTypeEnum.PrefabContainer, (int?)MyMwcObjectBuilder_PrefabContainer_TypesEnum.INSTANCE) as MyMwcObjectBuilder_PrefabContainer;\n                        prefabContOB.Faction = MyMwcObjectBuilder_FactionEnum.None;\n                        prefabContOB.Prefabs = new List<MyMwcObjectBuilder_PrefabBase>();\n                        container.Init(null, prefabContOB, matrix);\n                        // MyEntities.Add(container);\n\n                        MyPrefabLargeShip newObject = new MyPrefabLargeShip(container);\n                        MyMwcObjectBuilder_PrefabLargeShip newObjectBuilder = new MyMwcObjectBuilder_PrefabLargeShip(MyMwcObjectBuilder_PrefabLargeShip_TypesEnum.LARGESHIP_KAI, MyMwcObjectBuilder_Prefab_AppearanceEnum.None, new MyMwcVector3Short(0, 0, 0), Vector3.Zero, null, MyGameplayConstants.HEALTH_RATIO_MAX, null, 0, false, 0);\n                        newObject.Init(\"KAI Mothership\", Vector3.Zero, Matrix.Identity, newObjectBuilder,\n                            MyPrefabConstants.GetPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabLargeShip, (int)MyMwcObjectBuilder_PrefabLargeShip_TypesEnum.LARGESHIP_KAI));\n                        container.AddPrefab(newObject);\n                        container.Faction = MyMwcObjectBuilder_FactionEnum.Euroamerican;\n                        container.WorldMatrix = Matrix.CreateWorld(objectBuilderEx.PositionAndOrientation.Position, objectBuilderEx.PositionAndOrientation.Forward, objectBuilderEx.PositionAndOrientation.Up);\n                        // newObject.WorldMatrix = container.WorldMatrix;\n\n                        return container;\n                    }\n\n                case MyMwcObjectBuilderTypeEnum.SmallDebris:\n                    {\n                        MyMwcObjectBuilder_SmallDebris objectBuilderEx = (MyMwcObjectBuilder_SmallDebris)objectBuilder;\n                        MySmallDebris newObject = new MySmallDebris();\n                        newObject.Init(hudLabelText, objectBuilderEx, matrix);\n                        return newObject;\n                    }\n                case MyMwcObjectBuilderTypeEnum.LargeDebrisField:\n                    {\n                        MyMwcObjectBuilder_LargeDebrisField objectBuilderEx = (MyMwcObjectBuilder_LargeDebrisField)objectBuilder;\n                        MyLargeDebrisField newObject = new MyLargeDebrisField();\n                        newObject.Init(hudLabelText, objectBuilderEx, matrix);\n                        return newObject;\n                    }\n                case MyMwcObjectBuilderTypeEnum.Meteor:\n                    {\n                        MyMwcObjectBuilder_Meteor objectBuilderEx = (MyMwcObjectBuilder_Meteor)objectBuilder;\n                        MyMeteor newObject = new MyMeteor();\n                        newObject.Init(hudLabelText, objectBuilderEx, matrix);\n\n                        if (objectBuilderEx.Direction != Vector3.Zero)\n                        {\n                            newObject.Start(objectBuilderEx.Direction, objectBuilderEx.EffectID);\n                        }\n                        return newObject;\n                    }\n                case MyMwcObjectBuilderTypeEnum.StaticAsteroid:\n                    {\n                        MyMwcObjectBuilder_StaticAsteroid objectBuilderEx = (MyMwcObjectBuilder_StaticAsteroid)objectBuilder;\n                        MyStaticAsteroid newObject = new MyStaticAsteroid();\n                        newObject.Init(hudLabelText, objectBuilderEx, matrix);\n                        return newObject;\n                    }\n                case MyMwcObjectBuilderTypeEnum.VoxelMap:\n                    {\n                        MyPerformanceTimer.VoxelLoad.Start();\n\n                        MyMwcObjectBuilder_VoxelMap objectBuilderEx = (MyMwcObjectBuilder_VoxelMap)objectBuilder;\n                        Vector3 voxelPosition = objectBuilderEx.PositionAndOrientation.Position;\n\n                        MyVoxelMap newObject = new MyVoxelMap();\n\n                        MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Voxel map init\");\n                        newObject.Init(hudLabelText, voxelPosition, objectBuilderEx);\n                        MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n                        MyPerformanceTimer.VoxelContentMerge.Start();\n                        MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Voxel content merge\");\n                        for (int i = 0; i < objectBuilderEx.MergeContents.Count; i++)\n                        {\n                            MyMwcObjectBuilder_VoxelMap_MergeContent voxelMapMergeContentObjectBuilder = objectBuilderEx.MergeContents[i];\n                            if (voxelMapMergeContentObjectBuilder != null)\n                            {\n                                newObject.MergeVoxelContents(\n                                    voxelMapMergeContentObjectBuilder.VoxelFile,\n                                    voxelMapMergeContentObjectBuilder.PositionInVoxelMapInVoxelCoords,\n                                    voxelMapMergeContentObjectBuilder.MergeType);\n                            }\n                        }\n                        MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n                        MyPerformanceTimer.VoxelContentMerge.End();\n\n                        MyPerformanceTimer.VoxelMaterialMerge.Start();\n                        MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Voxel material merge\");\n                        for (int i = 0; i < objectBuilderEx.MergeMaterials.Count; i++)\n                        {\n                            MyMwcObjectBuilder_VoxelMap_MergeMaterial voxelMapMergeMaterialObjectBuilder = objectBuilderEx.MergeMaterials[i];\n                            newObject.MergeVoxelMaterials(\n                                voxelMapMergeMaterialObjectBuilder.VoxelFile,\n                                voxelMapMergeMaterialObjectBuilder.PositionInVoxelMapInVoxelCoords,\n                                voxelMapMergeMaterialObjectBuilder.VoxelMaterial);\n                        }\n                        MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n                        MyPerformanceTimer.VoxelMaterialMerge.End();\n\n                        MyPerformanceTimer.VoxelHandLoad.Start();\n                        MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Voxel hand load\");\n                        if (objectBuilderEx.EntityId.HasValue)\n                        {\n                            MyLoadingPerformance.Instance.AddVoxelHandCount(objectBuilderEx.VoxelHandShapes.Count, objectBuilderEx.EntityId.Value, MyVoxelFiles.DefaultVoxelFiles[(int)objectBuilderEx.VoxelFile].VoxelName);\n\n\n                        }\n                        for (int i = 0; i < objectBuilderEx.VoxelHandShapes.Count; i++)\n                        {\n                            MyMwcObjectBuilder_VoxelHand_Shape voxelHandShapeBuilder = objectBuilderEx.VoxelHandShapes[i];\n                            switch (voxelHandShapeBuilder.GetObjectBuilderType())\n                            {\n                                case MyMwcObjectBuilderTypeEnum.VoxelHand_Sphere:\n                                    {\n                                        MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Voxel hand sphere\");\n                                        MyMwcObjectBuilder_VoxelHand_Sphere voxelHandSphereBuilder = (MyMwcObjectBuilder_VoxelHand_Sphere)voxelHandShapeBuilder;\n                                        MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"new MyVoxelHandSphere()\");\n                                        MyVoxelHandSphere voxelHandSphere = new MyVoxelHandSphere();\n                                        MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"voxelHandSphere.Init\");\n                                        voxelHandSphere.Init(voxelHandSphereBuilder, newObject);\n                                        MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"newObject.AddVoxelHandShape\");\n                                        newObject.AddVoxelHandShape(voxelHandSphere, false);\n                                        MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n                                        MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n                                        break;\n                                    }\n                                case MyMwcObjectBuilderTypeEnum.VoxelHand_Box:\n                                    {\n                                        MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Voxel hand box\");\n                                        MyMwcObjectBuilder_VoxelHand_Box voxelHandboxBuilder = (MyMwcObjectBuilder_VoxelHand_Box)voxelHandShapeBuilder;\n                                        MyVoxelHandBox voxelHandBox = new MyVoxelHandBox();\n                                        voxelHandBox.Init(voxelHandboxBuilder, newObject);\n                                        newObject.AddVoxelHandShape(voxelHandBox, false);\n                                        MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n                                        break;\n                                    }\n                                case MyMwcObjectBuilderTypeEnum.VoxelHand_Cuboid:\n                                    {\n                                        MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Voxel hand cuboid\");\n                                        MyMwcObjectBuilder_VoxelHand_Cuboid voxelHandCuboidBuilder = (MyMwcObjectBuilder_VoxelHand_Cuboid)voxelHandShapeBuilder;\n                                        MyVoxelHandCuboid voxelHandCuboid = new MyVoxelHandCuboid();\n                                        voxelHandCuboid.Init(voxelHandCuboidBuilder, newObject);\n                                        newObject.AddVoxelHandShape(voxelHandCuboid, false);\n                                        MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n                                        break;\n                                    }\n                                default:\n                                    throw new MyMwcExceptionApplicationShouldNotGetHere();\n                            }\n                        }\n                        MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n                        MyPerformanceTimer.VoxelHandLoad.End();\n                        MyPerformanceTimer.VoxelLoad.End();\n\n                        // Dont use now\n                        //newObject.OptimizeSize();\n\n                        newObject.WriteDebugInfo();\n\n                        return newObject;\n                    }\n                case MyMwcObjectBuilderTypeEnum.PrefabContainer:\n                    {\n                        MyMwcObjectBuilder_PrefabContainer objectBuilderEx = (MyMwcObjectBuilder_PrefabContainer)objectBuilder;\n                        MyPrefabContainer container = new MyPrefabContainer();\n                        MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Prefab container - Init\");\n                        container.Init(null, objectBuilderEx, matrix);\n                        MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n                        return container;\n                    }\n                case MyMwcObjectBuilderTypeEnum.InfluenceSphere:\n                    {\n                        var builder = (MyMwcObjectBuilder_InfluenceSphere)objectBuilder;\n\n                        var influenceSphere = new MyInfluenceSphere();\n                        influenceSphere.Init(null, builder, matrix);\n                        return influenceSphere;\n                    }\n                case MyMwcObjectBuilderTypeEnum.SpawnPoint:\n                    {\n                        MyMwcObjectBuilder_SpawnPoint objectBuilderEx = (MyMwcObjectBuilder_SpawnPoint)objectBuilder;\n                        MySpawnPoint spawnPoint = new MySpawnPoint();\n                        spawnPoint.Init(null, objectBuilderEx, matrix);\n                        return spawnPoint;\n                    }\n                case MyMwcObjectBuilderTypeEnum.FoundationFactory:\n                    {\n                        MyMwcObjectBuilder_FoundationFactory objectBuilderEx = (MyMwcObjectBuilder_FoundationFactory)objectBuilder;\n                        MyMwcObjectBuilder_PrefabFoundationFactory ffBuilder =\n                            MyMwcObjectBuilder_Base.CreateNewObject(MyMwcObjectBuilderTypeEnum.PrefabFoundationFactory,\n                                                                    (int)MyMwcObjectBuilder_PrefabFoundationFactory_TypesEnum.DEFAULT) as MyMwcObjectBuilder_PrefabFoundationFactory;\n                        ffBuilder.BuildingObject = objectBuilderEx.BuildingObject;\n                        ffBuilder.BuildingQueue = objectBuilderEx.BuildingQueue;\n                        ffBuilder.BuildingTimeFromStart = objectBuilderEx.BuildingTimeFromStart;\n                        ffBuilder.IsBuilding = objectBuilderEx.IsBuilding;\n                        ffBuilder.PersistentFlags = objectBuilderEx.PersistentFlags;\n                        ffBuilder.PrefabHealthRatio = MyGameplayConstants.HEALTH_RATIO_MAX;\n                        ffBuilder.PrefabMaxHealth = null;\n\n                        MyMwcObjectBuilder_PrefabContainer prefabContainerBuilder = objectBuilderEx.PrefabContainer;\n                        if (prefabContainerBuilder.Prefabs == null)\n                        {\n                            prefabContainerBuilder.Prefabs = new List<MyMwcObjectBuilder_PrefabBase>();\n                        }\n                        prefabContainerBuilder.Prefabs.Add(ffBuilder);\n\n                        MyPrefabContainer prefabContainer = new MyPrefabContainer();\n\n                        prefabContainer.Init(null, objectBuilderEx.PrefabContainer, matrix);\n\n                        return prefabContainer;\n                    }\n                case MyMwcObjectBuilderTypeEnum.WaypointNew:\n                    {\n                        MyMwcObjectBuilder_WaypointNew waypointOB = (MyMwcObjectBuilder_WaypointNew)objectBuilder;\n                        var waypoint = new MyWayPoint();\n                        waypoint.Init(hudLabelText, waypointOB, matrix);\n                        return waypoint;\n                    }\n                case MyMwcObjectBuilderTypeEnum.DummyPoint:\n                    {\n                        MyMwcObjectBuilder_DummyPoint dummyOB = (MyMwcObjectBuilder_DummyPoint)objectBuilder;\n                        MyDummyPoint dummy = new MyDummyPoint();\n                        dummy.Init(hudLabelText, dummyOB, matrix);\n                        return dummy;\n                    }\n                case MyMwcObjectBuilderTypeEnum.CargoBox:\n                    {\n                        MyMwcObjectBuilder_CargoBox cargoBoxOB = (MyMwcObjectBuilder_CargoBox)objectBuilder;\n                        MyCargoBox cargoBox = new MyCargoBox();\n                        cargoBox.Init(string.IsNullOrEmpty(cargoBoxOB.DisplayName) ? hudLabelText : cargoBoxOB.DisplayName, cargoBoxOB, matrix);\n                        return cargoBox;\n                    }\n                case MyMwcObjectBuilderTypeEnum.MysteriousCube:\n                    {\n                        MyMwcObjectBuilder_MysteriousCube mysteriousBoxOB = (MyMwcObjectBuilder_MysteriousCube)objectBuilder;\n                        MyMysteriousCube mysteriousBox = new MyMysteriousCube();\n                        mysteriousBox.Init(hudLabelText, mysteriousBoxOB, matrix);\n                        return mysteriousBox;\n                    }\n                default:\n                    throw new MyMwcExceptionApplicationShouldNotGetHere();\n            }\n        }\n\n        static void onPlayerDie(MyEntity entity, MyEntity killer)\n        {\n            MinerWars.AppCode.Game.HUD.MyHudNotification.ClearOwnerNotifications(entity);\n            MyHudWarnings.Remove(entity);\n        }\n\n        //  Create instance and add it into list of phys objects, if it is JLX phys object, otherwise add it to different lists\n        //  based on the type of created phys object\n        public static MyEntity CreateFromObjectBuilderAndAdd(string hudLabelText, MyMwcObjectBuilder_Base objectBuilder, Matrix matrix)\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(objectBuilder.GetType().Name);\n\n            MyEntity retVal = CreateFromObjectBuilder(hudLabelText, objectBuilder, matrix);\n\n            if (MyFakes.TEST_STORY_MISSION_OBJECTS_AT_SECTOR_BORDER_FOR_LARGE_POSITION_TEST)\n            {\n                Vector3 position = retVal.GetPosition();\n                retVal.MoveAndRotate(MyFakes.TEST_STORY_MISSION_OBJECTS_LARGE_POSITION_OFFSET + position, retVal.WorldMatrix);\n            }\n\n            Add(retVal);\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n            return retVal;\n        }\n\n        //  Allows you to iterate through all phys. objects\n        public static HashSet<MyEntity> GetEntities()\n        {\n            return m_entities;\n        }\n\n        public static MyEntity GetEntityById(MyEntityIdentifier entityId)\n        {\n            return MyEntityIdentifier.GetEntityById(entityId);\n        }\n\n        public static bool ExistsById(MyEntityIdentifier entityId)\n        {\n            return MyEntityIdentifier.ExistsById(entityId);\n        }\n\n        public static MyEntity GetEntityByIdOrNull(MyEntityIdentifier entityId)\n        {\n            return MyEntityIdentifier.GetEntityByIdOrNull(entityId);\n        }\n\n        public static bool TryGetEntityById(MyEntityIdentifier entityId, out MyEntity entity)\n        {\n            return MyEntityIdentifier.TryGetEntity(entityId, out entity);\n        }\n\n        public static bool TryGetEntityById<T>(MyEntityIdentifier entityId, out T entity)\n            where T : MyEntity\n        {\n            MyEntity baseEntity;\n            var result = MyEntityIdentifier.TryGetEntity(entityId, out baseEntity) && baseEntity is T;\n            entity = baseEntity as T;\n            return result;\n        }\n\n        public static MyEntity GetEntityByName(string name)\n        {\n            return m_entityNameDictionary[name];\n        }\n\n        public static bool TryGetEntityByName(string name, out MyEntity entity)\n        {\n            return m_entityNameDictionary.TryGetValue(name, out entity);\n        }\n\n        public static MyEntity GetEntityByMissionLocationIdentifier(MyMissionBase.MyMissionLocationEntityIdentifier missionLocationIdentifier)\n        {\n            if (missionLocationIdentifier.LocationEntityId != null)\n            {\n                return GetEntityByIdOrNull(new MyEntityIdentifier(missionLocationIdentifier.LocationEntityId.Value));\n            }\n            else\n            {\n                MyEntity entity;\n                TryGetEntityByName(missionLocationIdentifier.LocationEntityName, out entity);\n                return entity;\n            }\n        }\n\n        public static bool EntityExists(string name)\n        {\n            return m_entityNameDictionary.ContainsKey(name);\n        }\n\n        /// <summary>\n        /// Gets the entities by predicate\n        /// </summary>\n        /// <param name=\"predicate\">The predicate filter.</param>\n        /// <param name=\"result\">The result list which will be populated.</param>\n        /// <returns>true if some entity was found.</returns>\n        public static bool FindEntities(Predicate<MyEntity> predicate, IList<MyEntity> result)\n        {\n            bool added = false;\n\n            foreach (var myEntity in m_entities)\n            {\n                if (!predicate(myEntity))\n                {\n                    continue;\n                }\n\n                result.Add(myEntity);\n                added = true;\n            }\n\n            return added;\n        }\n\n        /// <summary>\n        /// Gets the entities by predicate (recursively traverse childrens if current entity is not matched)\n        /// atm. constrained to prefab container\n        /// </summary>\n        /// <param name=\"predicate\">The predicate filter.</param>\n        /// <param name=\"result\">The result list which will be populated.</param>\n        /// <returns>true if some entity was found.</returns>\n        public static bool FindEntitiesRecursive(Predicate<MyEntity> predicate, IList<MyEntity> result)\n        {\n            int oldCount = result.Count;\n            foreach (var myEntity in m_entities)\n            {\n                if (!predicate(myEntity))\n                {\n                    if (myEntity is MyPrefabContainer)\n                    {\n                        FindEntitiesRecursive(myEntity.Children, predicate, result);\n                    }\n                    continue;\n                }\n\n                result.Add(myEntity);\n            }\n\n            return result.Count > oldCount;\n        }\n\n        /// <summary>\n        /// Gets the entities by predicate from entity collection\n        /// </summary>\n        private static void FindEntitiesRecursive(ICollection<MyEntity> entities, Predicate<MyEntity> predicate, IList<MyEntity> result)\n        {\n            foreach (var myEntity in entities)\n            {\n                if (!predicate(myEntity))\n                {\n                    FindEntitiesRecursive(myEntity.Children, predicate, result);\n                    continue;\n                }\n\n                result.Add(myEntity);\n            }\n        }\n\n        /// <summary>\n        /// Traverse whole hierarchy of entities and invokes action on each one of them\n        /// </summary>\n        /// <param name=\"action\"></param>\n        public static void TraverseEntities(Action<MyEntity> action)\n        {\n            //foreach (var item in m_entities)\n            PrepareSafeIterationHelperForAll();\n            foreach (var item in m_safeIterationHelper)\n            {\n                TraverseEntitiesRecursive(item, action);\n            }\n        }\n\n        private static void TraverseEntitiesRecursive(MyEntity entity, Action<MyEntity> action)\n        {\n            action(entity);\n            foreach (var item in entity.Children)\n            {\n                TraverseEntitiesRecursive(item, action);\n            }\n        }\n\n\n\n        /// <summary>\n        /// This method unprojects mouse cursor to 3D space and checks intersection with line that is created from nearpoint and farpoint.\n        /// Method used for intersection returns triangle, that is nearest from all.\n        /// </summary>\n        /// <returns></returns>\n        public static MyEntity GetEntityUnderMouseCursor()\n        {\n            MyLine mouseSelectionLine = MyUtils.ConvertMouseToLine();\n            //return GetAllIntersectionWithLine(ref mouseSelectionLine, null, null, true);\n            return Render.MyRender.GetClosestIntersectionWithLine(ref mouseSelectionLine, null, null);\n        }\n\n        // IMPORTANT!! - carefull with this method, it can be called only from within Draw method!!!\n        // This method can be usefull in case, that we need to reload during gameplay(because by default, LoadInDraw is\n        // called from MyGuiScreenLoading screen on gameplay screen)\n        public static void ReloadModelsInDraw()\n        {\n            foreach (var entity in m_entities)\n            {\n                entity.ModelLod0.LoadInDraw();\n                if (entity.ModelLod1 != null)\n                {\n                    entity.ModelLod1.LoadInDraw();\n                }\n            }\n        }\n\n        //  Helper method to check if object is voxel map\n        public static bool IsObjectVoxelMap(MyEntity physObject)\n        {\n            if (physObject is MyVoxelMap)\n            {\n                return true;\n            }\n            return false;\n        }\n\n        //  Helper method to retrieve center position of multiple phys objects\n        public static Vector3 GetEntitiesCenter(List<MyEntity> physObjects)\n        {\n            Vector3 center = Vector3.Zero;\n            int i = 0;\n            foreach (MyEntity physObject in physObjects)\n            {\n                center = center + physObject.GetPosition();\n                i++;\n            }\n\n            return Vector3.Divide(center, i);\n        }\n\n        //  Try if there is physObject having coordinate of provided position and if yes, return it\n        public static MyEntity TryGetPhysObjectAtPosition(Vector3 position)\n        {\n            foreach (var entity in m_entities)\n            {\n                if (entity.Physics == null)\n                {\n                    continue;\n                }\n\n                if (entity.GetPosition() != position)\n                {\n                    continue;\n                }\n\n                return entity;\n            }\n            return null;\n        }\n\n        //  Method returns all collision skins intersecting provided bounding box - see method used inside\n        public static void GetCollisionsInBoundingBox(ref BoundingBox boundingBox, List<MyRBElement> list)\n        {\n            m_pruningStructure.OverlapAllBoundingBox(ref boundingBox, list, (uint)MyElementFlag.EF_RB_ELEMENT);\n        }\n\n        public static void RaiseEntityRemove(MyEntity entity)\n        {\n            if (OnEntityRemove != null)\n            {\n                OnEntityRemove(entity);\n            }\n        }\n\n        #region Global visibility and selectability by entity types/groups\n\n        /// <summary>\n        /// Types in this set and their subtypes won't be able to be selected.\n        /// </summary>\n        private static HashSet<Type> m_unselectableTypes = new HashSet<Type>();\n\n        public static void SetTypeSelectable(Type type, bool selectable)\n        {\n            if (selectable)\n                m_unselectableTypes.Remove(type);\n            else\n                m_unselectableTypes.Add(type);\n        }\n\n        public static bool IsTypeSelectable(Type type)\n        {\n            foreach (var unselectableType in m_unselectableTypes)\n                if (unselectableType.IsAssignableFrom(type))\n                    return false;\n            return !IsTypeHidden(type);  // hidden entities aren't selectable\n        }\n\n        public static bool IsSelectable(MyEntity entity)\n        {\n            // Didn't you want to override MyEntity.IsSelectable instead? Thought so.\n            return IsTypeSelectable(entity.GetType()) && (entity.Flags & MyEntity.EntityFlags.EditableInEditor) > 0;\n        }\n\n\n        /// <summary>\n        /// Types in this set and their subtypes will be temporarily invisible.\n        /// </summary>\n        private static HashSet<Type> m_hiddenTypes = new HashSet<Type>();\n\n        public static void SetTypeHidden(Type type, bool hidden)\n        {\n            if (hidden == m_hiddenTypes.Contains(type)) return;  // no change\n\n            if (hidden)\n                m_hiddenTypes.Add(type);\n            else\n                m_hiddenTypes.Remove(type);\n        }\n\n        public static bool IsTypeHidden(Type type)\n        {\n            foreach (var hiddenType in m_hiddenTypes)\n                if (hiddenType.IsAssignableFrom(type))\n                    return true;\n            return false;\n        }\n\n        public static bool IsVisible(MyEntity entity)\n        {\n            return !IsTypeHidden(entity.GetType());\n        }\n\n        public static void UnhideAllTypes()\n        {\n            foreach (var type in m_hiddenTypes.ToList())\n                SetTypeHidden(type, false);\n        }\n\n        public static bool SafeAreasHidden, SafeAreasSelectable;\n        public static bool DetectorsHidden, DetectorsSelectable;\n        public static bool ParticleEffectsHidden, ParticleEffectsSelectable;\n\n        public static bool ShowDebugDrawStatistics = false;\n        static Dictionary<string, int> m_typesStats = new Dictionary<string, int>();\n\n        #endregion\n\n        static public void DebugDrawStatistics()\n        {/*\n            foreach (MyEntity entity in m_entities)\n            {\n                if (entity is MyPrefabContainer)\n                {\n                    entity.DebugDraw();\n                }\n            }\n*/\n            /*\n           foreach (MyEntity e in GetEntities())\n           {\n               MyDummyPoint dp = e as MyDummyPoint;\n               if (dp != null && ((int)(dp.DummyFlags & MyDummyPointFlags.PARTICLE) > 0))\n               {\n                   MyDebugDraw.DrawSphereSmooth(dp.GetPosition(), dp.Radius, Vector3.One, 0.4f);\n               }\n           }\n              */\n\n\n            m_typesStats.Clear();\n\n            if (!ShowDebugDrawStatistics)\n                return;\n\n            foreach (MyEntity entity in m_entitiesForUpdate)\n            {\n                string ts = entity.GetType().Name.ToString();\n                if (!m_typesStats.ContainsKey(ts))\n                    m_typesStats.Add(ts, 0);\n                m_typesStats[ts]++;\n            }\n\n            Vector2 offset = new Vector2(100, 0);\n            MyDebugDraw.DrawText(offset, new System.Text.StringBuilder(\"Detailed entity statistics\"), Color.Yellow, 2);\n\n            float scale = 0.7f;\n            offset.Y += 50;\n            MyDebugDraw.DrawText(offset, new System.Text.StringBuilder(\"Entities for update:\"), Color.Yellow, scale);\n            offset.Y += 30;\n            foreach (KeyValuePair<string, int> pair in Render.MyRender.SortByValue(m_typesStats))\n            {\n                MyDebugDraw.DrawText(offset, new System.Text.StringBuilder(pair.Key + \": \" + pair.Value.ToString() + \"x\"), Color.Yellow, scale);\n                offset.Y += 20;\n            }\n\n\n            m_typesStats.Clear();\n\n            foreach (MyEntity entity in m_entities)\n            {\n                string ts = entity.GetType().Name.ToString();\n                if (!m_typesStats.ContainsKey(ts))\n                    m_typesStats.Add(ts, 0);\n                m_typesStats[ts]++;\n            }\n\n            offset = new Vector2(500, 0);\n            scale = 0.7f;\n            offset.Y += 50;\n            MyDebugDraw.DrawText(offset, new System.Text.StringBuilder(\"All entities:\"), Color.Yellow, scale);\n            offset.Y += 30;\n            foreach (KeyValuePair<string, int> pair in Render.MyRender.SortByValue(m_typesStats))\n            {\n                MyDebugDraw.DrawText(offset, new System.Text.StringBuilder(pair.Key + \": \" + pair.Value.ToString() + \"x\"), Color.Yellow, scale);\n                offset.Y += 20;\n            }\n        }\n\n        [Conditional(\"DEBUG\")]\n        public static void DumpTurretIds()\n        {\n            List<MyEntityIdentifier?> ids = new List<MyEntityIdentifier?>(100);\n\n            foreach (var container in GetEntities().OfType<MyPrefabContainer>())\n            {\n                foreach (var weapon in container.Children.OfType<MyPrefabLargeWeapon>())\n                {\n                    ids.Add(weapon.EntityId);\n                }\n            }\n\n            ids.Sort(new Comparison<MyEntityIdentifier?>((a, b) => Comparer<uint?>.Default.Compare(a.ToNullableUInt(), b.ToNullableUInt())));\n            Console.WriteLine(\"Dumping turret IDS\");\n            foreach (var id in ids)\n            {\n                Console.WriteLine(id);\n            }\n        }\n\n        public static void DumpWrongEntities()\n        {\n            HashSet<string> alreadyTestedModels = new HashSet<string>();\n\n            foreach (MyEntity entity in GetEntities())\n            {\n                if (entity.ModelLod0 != null)\n                {\n                    if (alreadyTestedModels.Add(entity.ModelLod0.AssetName))\n                    {\n                        entity.DumpErrorModels();\n                    }\n                }\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/MyEntity.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Collections.Specialized;\nusing System.Diagnostics;\nusing System.Linq;\nusing System.Reflection;\nusing System.Text;\nusing KeenSoftwareHouse.Library.Collections;\nusing MinerWarsMath;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.AppCode.Game.Decals;\nusing MinerWars.AppCode.Game.Editor;\nusing MinerWars.AppCode.Game.Gameplay;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.HUD;\nusing MinerWars.AppCode.Game.Managers.EntityManager.Notifications;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Missions;\nusing MinerWars.AppCode.Game.Models;\nusing MinerWars.AppCode.Game.Physics;\nusing MinerWars.AppCode.Game.Radar;\nusing MinerWars.AppCode.Game.Render;\nusing MinerWars.AppCode.Game.Sessions;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.AppCode.Physics;\nusing MinerWars.AppCode.Physics.Collisions;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.Networking.Multiplayer;\nusing MinerWars.CommonLIB.AppCode.Utils;\n\nusing SysUtils;\nusing SysUtils.Utils;\nusing MinerWars.AppCode.Game.Managers;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.CommonLIB.AppCode.Import;\n\nnamespace MinerWars.AppCode.Game.Entities\n{\n    /// <summary>\n    /// Enumeration flags\n    /// </summary>\n    [Flags]\n    public enum EnumerationFlags\n    {\n        /// <summary>\n        /// No flags\n        /// </summary>\n        None = 1 << 0,\n\n        /// <summary>\n        /// Enumerate also all sub-children.\n        /// </summary>\n        Hierarchically = 1 << 1,\n    }\n\n    delegate void DieHandler(MyEntity entity, MyEntity killer);\n\n    /// <summary>\n    /// Abstract engine entity object representing non-mass point object in space.\n    /// Resources can extend this object and give it purpose. Game entities inherites directly from this class.\n    /// </summary>\n    internal abstract class MyEntity : MyResource, IMyEditableEntity, IMyNotifyEntityChanged, IMyObjectToDetect, IMyHasFaction\n    {\n        #region Enums\n\n        /// <summary>\n        /// Entity flags.\n        /// </summary>\n        [Flags]\n        public enum EntityFlags\n        {\n            /// <summary>\n            /// No flags\n            /// </summary>\n            None = 1 << 0,\n\n            /// <summary>\n            /// Specified that position changed and all dependent values should be recalculated.\n            /// </summary>\n            PositionDirty = 1 << 1,\n\n            /// <summary>\n            /// Specifies that volume is dirty and should be recalculated in parents.\n            /// </summary>\n            VolumeDirty = 1 << 2,\n\n            /// <summary>\n            /// Draw also all chidren of this entity.\n            /// Temporary flag. Removed because everybody children are drawn individually\n            /// </summary>\n            //DrawChildren = 1 << 3,\n\n            /// <summary>\n            /// Specifies whether draw this entity or not.\n            /// </summary>\n            Visible = 1 << 4,\n\n            /// <summary>\n            /// Specifies whether draw this entity in game  or not.\n            /// </summary>\n            VisibleInGame = 1 << 5,\n\n            /// <summary>\n            /// Specified whether entity need entity id (for example SmallDebris needs no EntityId)\n            /// </summary>\n            NeedsId = 1 << 6,\n\n            /// <summary>\n            /// Specifies whether save entity when saving sector or not\n            /// </summary>\n            Save = 1 << 7,\n\n            /// <summary>\n            /// Specifies whether entity is \"near\", near entities are cockpit and weapons, these entities are rendered in special way\n            /// </summary>\n            Near = 1 << 8,\n\n            /// <summary>\n            /// Entity is editable object in editor. Used for statistics\n            /// </summary>\n            EditableInEditor = 1 << 9,\n\n            /// <summary>\n            /// On this entity and its children will be called UpdateBeforeSimulation and UpdateAfterSimulation each frame\n            /// </summary>\n            NeedsUpdate = 1 << 10,\n\n            /// <summary>\n            /// This entity is generated by SectorGenerator, it will be not saved \n            /// </summary>\n            Generated = 1 << 11,\n\n            /// <summary>\n            /// When entity is hit by explosion, it will check for obstacles (eg. entity can hide from explosion behind corner)\n            /// </summary>\n            CheckExplosionObstacles = 1 << 12,\n\n            /// <summary>\n            /// Shows entity on HUD only when detected by radar\n            /// </summary>\n            ShowOnHudOnlyWhenDetected = 1 << 13,\n        }\n\n        #endregion\n\n        #region Constants\n        private const MyPersistentEntityFlags ACTIVATED_DIFFICULTY_EASY = MyPersistentEntityFlags.ActivatedOnDifficultyEasy;\n        private const MyPersistentEntityFlags ACTIVATED_DIFFICULTY_NORMAL = ACTIVATED_DIFFICULTY_EASY | MyPersistentEntityFlags.ActivatedOnDifficultyNormal;\n        private const MyPersistentEntityFlags ACTIVATED_DIFFICULTY_HARD = ACTIVATED_DIFFICULTY_NORMAL | MyPersistentEntityFlags.ActivatedOnDifficultyHard;\n        #endregion\n\n        #region Fields\n\n        /// <summary>\n        /// Internal world matrix of entity.\n        /// </summary>\n        private Matrix m_worldMatrix;\n\n        /// <summary>\n        /// Internal local matrix relative to parent of entity.\n        /// </summary>\n        private Matrix m_localMatrix;\n\n        /// <summary>\n        /// Gets the childs collection.\n        /// </summary>\n        private readonly ObservableCollection<MyEntity> m_children;\n\n        /// <summary>\n        /// Currently means that entity was added into MyEntities list\n        /// </summary>\n        protected bool m_activated = false;\n\n        //Bounding boxes\n        protected BoundingBox m_localAABB;   //untransformed aabb of this entity (mostly LOD0 model) \n        protected BoundingSphere m_localVolume;   //untransformed sphere of this entity (mostly LOD0 model) \n        protected Vector3 m_localVolumeOffset;\n        protected BoundingBox m_worldAABB;   //world AABB of this entity\n        protected BoundingSphere m_worldVolume;   //sphere volume\n        private BoundingBox m_worldAABBHr;   //world AABB of this entity including children\n        private BoundingSphere m_worldVolumeHr;   //sphere volume including children\n\n        private MyMwcObjectBuilder_Base m_objectBuilder; // Object builder is the template this object was created from and is saved as\n\n        //Rendering\n        protected MyModel m_modelLod0;                       //  LOD0 main model, used for rendering and also physics / col-det\n        protected MyModel m_modelLod1;                       //  LOD1 version of this model, used only for rendering (not physics and col-det)\n        protected MyModel m_modelLod2;                       //  LOD2 version of this model, used only for rendering (not physics and col-det)\n        protected MyModel m_modelCollision;                       //  Collision model, used only for collisions\n        protected bool m_frustumCheckBeforeDrawEnabled = true; //  If true, we always check if this phys object is contained in frustum. If false we don't check and draw it directly (which is faster for small-low-face objects)\n        protected Vector3? m_diffuseColor;  //diffuse color multiplier\n        protected Vector3 m_highlightColor; //used for objects that are selected in editor(shader adds this color to pixel shader output)\n        protected Vector4 m_mouseOverColorWire = new Vector4(0.5f, 1f, 0.5f, 0.5f);\n        protected Vector4 m_mouseOverColor = new Vector4(0.9f, 0.8f, 0.5f, 0.3f);\n        protected Vector3 m_selectionHighlightColor;\n        protected Vector3 m_collisionHighlightColor;\n        protected float? m_lod1ForcedDistance;\n        protected bool m_enableEmissivity = true;\n\n        //  Textures\n        MyMwcVoxelMaterialsEnum m_voxelMaterial;\n        public virtual MyMwcVoxelMaterialsEnum VoxelMaterial\n        {\n            get\n            {\n                return m_voxelMaterial;\n            }\n            set\n            {\n                m_voxelMaterial = value;\n            }\n        }\n\n\n        protected MyRenderObject[] m_renderObjects;\n\n        //Space query structure\n        public int GamePruningProxyId = MyConstants.GAME_PRUNING_STRUCTURE_PROXY_ID_NOT_INSERTED;\n\n        //Gameplay\n        protected MyGameplayProperties m_gameplayProperties;\n        private float? m_maxHealth;\n        private float m_healthRatio;\n        //protected float m_health;\n                \n        protected bool m_wasDead;\n        protected bool m_isExploded;\n\n        #endregion\n\n        #region Properties\n\n        /// <summary>\n        /// Entity id, can be set by subclasses (for example when using pool...)\n        /// </summary>\n        public MyEntityIdentifier? EntityId { get; set; }\n\n        public bool IsDummy;\n\n        /// <summary>\n        /// Priority for AI, ie. when bot is selecting target for attack it will select entity with highest priority\n        /// </summary>\n        public int AIPriority { get; set; }\n\n        public bool IsHologram { get; set; }\n\n        //public float Channel0Intensity { get { return MyRender.Channel0Intensity; } }\n        //public float Channel1Intensity { get { return MyRender.Channel1Intensity; } }\n\n        public bool Closed { get; protected set; }\n\n        private bool m_visibleFromSun;\n        private int m_visibleFromSunNextCheck;\n\n        public bool IsVisibleFromSun\n        {\n            get\n            {\n                if (MyMinerGame.TotalGamePlayTimeInMilliseconds > m_visibleFromSunNextCheck)\n                {\n                    UpdateVisibleFromSun();\n                }\n\n                return m_visibleFromSun;\n            }\n        }\n\n        private void UpdateVisibleFromSun()\n        {\n            MyPerformanceCounter.PerCameraDraw.Increment(\"Updated sun visibility\");\n            MyLine line = new MyLine(GetPosition(), GetPosition() + MyGuiScreenGamePlay.Static.GetDirectionToSunNormalized() * MyMwcSectorConstants.SECTOR_DIAMETER, true);\n            m_visibleFromSun = !MyEntities.GetAnyIntersectionWithLine_IgnoreOtherThanSpecifiedClass(ref line, MySunWind.DoNotIgnoreTheseTypes);\n\n            int checkInterval = MyConstants.VISIBLE_FROM_SUN_MIN_CHECK_INTERVAL.Milliseconds;\n            m_visibleFromSunNextCheck = MyMinerGame.TotalGamePlayTimeInMilliseconds + MyMwcUtils.GetRandomInt(checkInterval, checkInterval + checkInterval / 3);\n        }\n\n        /// <summary>\n        /// World matrix of this physic object. Use it whenever you want to do world-matrix transformations with this physic objects.\n        /// </summary>\n        public Matrix WorldMatrix\n        {\n            get { return this.m_worldMatrix; }\n            set { SetWorldMatrix(value); }\n        }\n\n        public bool Save\n        {\n            get\n            {\n                return (Flags & EntityFlags.Save) != 0 && !IsGenerated;\n            }\n            set\n            {\n                if (value)\n                    Flags |= EntityFlags.Save;\n                else\n                    Flags &= ~EntityFlags.Save;\n            }\n        }\n\n        public virtual bool NearFlag\n        {\n            get\n            {\n                return (Flags & EntityFlags.Near) != 0;\n            }\n            set\n            {\n                bool hasChanged = value != NearFlag;\n\n                if (value)\n                    Flags |= EntityFlags.Near;\n                else\n                    Flags &= ~EntityFlags.Near;\n\n\n                if (RenderObjects != null && hasChanged)\n                {\n                    UpdateRenderObject(false); // Remove (because we need to remove from one group)\n                    UpdateRenderObject(true); // And insert again (...and insert into another)\n                }\n\n                // Update children near flag\n                foreach (var c in Children)\n                {\n                    c.NearFlag = value;\n                }\n            }\n        }\n\n\n        public bool NeedsUpdate\n        {\n            get\n            {\n                return (Flags & EntityFlags.NeedsUpdate) != 0;\n            }\n            set\n            {\n                bool hasChanged = value != NeedsUpdate;\n\n                if (value)\n                    Flags |= EntityFlags.NeedsUpdate;\n                else\n                    Flags &= ~EntityFlags.NeedsUpdate;\n\n\n                if (hasChanged && value)\n                {\n                    MyEntities.RegisterForUpdate(this);\n                }\n                else\n                    if (hasChanged && !value)\n                    {\n                        MyEntities.UnregisterForUpdate(this);\n                    }\n            }\n        }\n\n        public bool IsGenerated\n        {\n            get\n            {\n                return (Flags & EntityFlags.Generated) != 0;\n            }\n            set\n            {\n                if (value)\n                    Flags |= EntityFlags.Generated;\n                else\n                    Flags &= ~EntityFlags.Generated;\n            }\n        }\n\n        public bool ShowOnHudOnlyWhenDetected\n        {\n            get\n            {\n                return (Flags & EntityFlags.ShowOnHudOnlyWhenDetected) != 0;\n            }\n            set\n            {\n                if (value)\n                    Flags |= EntityFlags.ShowOnHudOnlyWhenDetected;\n                else\n                    Flags &= ~EntityFlags.ShowOnHudOnlyWhenDetected;\n            }\n        }\n\n        public bool CastShadows\n        {\n            get\n            {\n                return (PersistentFlags & MyPersistentEntityFlags.CastShadows) != 0;\n            }\n            set\n            {\n                if (value)\n                {\n                    PersistentFlags |= MyPersistentEntityFlags.CastShadows;\n\n                    if (RenderObjects != null)\n                    {\n                        foreach (var renderObject in RenderObjects)\n                        {\n                            MyRender.AddShadowRenderObject(renderObject);\n                        }\n                    }\n                }\n                else\n                {\n                    PersistentFlags &= ~MyPersistentEntityFlags.CastShadows;\n\n                    if (RenderObjects != null)\n                    {\n                        foreach (var renderObject in RenderObjects)\n                        {\n                            MyRender.RemoveShadowRenderObject(renderObject);\n                        }\n                    }\n                }\n            }\n        }\n\n        public bool UseKinematicPhysics\n        {\n            get\n            {\n                return (PersistentFlags & MyPersistentEntityFlags.KinematicPhysics) != 0;\n            }\n            set\n            {\n                if (value)\n                {\n                    PersistentFlags |= MyPersistentEntityFlags.KinematicPhysics;\n                }\n                else\n                {\n                    PersistentFlags &= ~MyPersistentEntityFlags.KinematicPhysics;\n                }\n            }\n        }\n\n\n        public virtual bool Enabled\n        {\n            get\n            {\n                return (PersistentFlags & MyPersistentEntityFlags.Enabled) != 0 && Activated;\n            }\n            set\n            {\n                if (value)\n                {\n                    PersistentFlags |= MyPersistentEntityFlags.Enabled;\n                }\n                else\n                {\n                    PersistentFlags &= (~MyPersistentEntityFlags.Enabled);\n                }\n            }\n        }\n\n        public bool IsSecret\n        {\n            get\n            {\n                return (PersistentFlags & MyPersistentEntityFlags.Secret) != 0;\n            }\n            set\n            {\n                if (value)\n                    PersistentFlags |= MyPersistentEntityFlags.Secret;\n                else\n                    PersistentFlags &= ~MyPersistentEntityFlags.Secret;\n            }\n        }\n\n        /// <summary>\n        /// Gets or sets the local matrix.\n        /// </summary>\n        /// <value>\n        /// The local matrix.\n        /// </value>\n        public Matrix LocalMatrix\n        {\n            get { return this.m_localMatrix; }\n            set { SetLocalMatrix(value); }\n        }\n\n        /// <summary>\n        /// Gets the world aabb.\n        /// </summary>\n        public BoundingBox WorldAABB\n        {\n            get { return m_worldAABB; }\n        }\n\n        /// <summary>\n        /// Gets the world volume.\n        /// </summary>\n        public BoundingSphere WorldVolume\n        {\n            get { return m_worldVolume; }\n        }\n\n        /// <summary>\n        /// Gets the hiearchical box in world.\n        /// </summary>\n        public BoundingBox WorldAABBHr\n        {\n            get\n            {\n                return m_worldAABBHr;\n            }\n        }\n\n        /// <summary>\n        /// Gets the hiearchical volume in world.\n        /// </summary>\n        public BoundingSphere WorldVolumeHr\n        {\n            get\n            {\n                return m_worldVolumeHr;\n            }\n        }\n\n        /// <summary>\n        /// Sets the local aabb.\n        /// </summary>\n        /// <value>\n        /// The local aabb.\n        /// </value>\n        public BoundingBox LocalAABB\n        {\n            get\n            {\n                return m_localAABB;\n            }\n            set\n            {\n                m_localAABB = value;\n                m_localVolume = BoundingSphere.CreateFromBoundingBox(m_localAABB);\n                UpdateWorldVolume();\n            }\n        }\n\n        /// <summary>\n        /// Sets the local volume.\n        /// </summary>\n        /// <value>\n        /// The local volume.\n        /// </value>\n        public BoundingSphere LocalVolume\n        {\n            get\n            {\n                return m_localVolume;\n            }\n            set\n            {\n                m_localVolume = value;\n                m_localAABB = MyMath.CreateFromInsideRadius(value.Radius);\n                m_localAABB = m_localAABB.Translate(value.Center);\n                UpdateWorldVolume();\n            }\n        }\n\n\n        /// <summary>\n        /// Gets or sets the local volume offset.\n        /// </summary>\n        /// <value>\n        /// The local volume offset.\n        /// </value>\n        public Vector3 LocalVolumeOffset\n        {\n            get\n            {\n                return this.m_localVolumeOffset;\n            }\n            set\n            {\n                this.m_localVolumeOffset = value;\n                UpdateWorldVolume();\n            }\n        }\n\n        /// <summary>\n        /// Gets or sets the parent.\n        /// </summary>\n        /// <value>\n        /// The parent.\n        /// </value>\n        public MyEntity Parent { get; private set; }\n\n        /// <summary>\n        /// Return top most parent of this entity\n        /// </summary>\n        /// <returns></returns>\n        public MyEntity GetTopMostParent(Type type = null)\n        {\n            MyEntity parent = this;\n\n            while (parent.Parent != null && (type == null || !parent.GetType().IsSubclassOf(type)))\n            {\n                parent = parent.Parent;\n            }\n\n            return parent;\n        }\n\n        /// <summary>\n        /// Gets the childs collection.\n        /// </summary>\n        //[Remoting(Controller)]\n        public ObservableCollection<MyEntity> Children\n        {\n            get\n            {\n                return this.m_children;\n            }\n        }\n\n        /// <summary>\n        /// Gets the physic body representation of the entity.\n        /// </summary>\n        public MyPhysicsBody Physics { get; internal set; }\n\n        /// <summary>\n        /// Gets the graphics representation of entity.\n        /// </summary>\n        public int Graphics { get; internal set; }\n\n        /// <summary>\n        /// Gets the sound representation of entity.\n        /// </summary>\n        public int Sound { get; internal set; }\n\n        /// <summary>\n        /// Gets or sets a value indicating whether this <see cref=\"MyEntity\"/> is visible.\n        /// </summary>\n        /// <value>\n        ///   <c>true</c> if visible; otherwise, <c>false</c>.\n        /// </value>\n        public bool Visible\n        {\n            get\n            {\n                return (Flags & EntityFlags.Visible) != 0;\n            }\n\n            set\n            {\n                Debug.Assert(!Closed, \"Cannot change visibility, entity is closed\");\n\n                EntityFlags oldValue = Flags;\n\n                if (value)\n                {\n                    Flags = Flags | EntityFlags.Visible;\n                }\n                else\n                {\n                    Flags = Flags & (~EntityFlags.Visible);\n                }\n\n                if (oldValue != Flags)\n                {\n                    UpdateRenderObject(value);\n                }\n            }\n        }\n        \n        public bool DisplayOnHud\n        {\n            get\n            {\n                return (PersistentFlags & MyPersistentEntityFlags.DisplayOnHud) != 0;\n            }\n            set\n            {\n                if (value != DisplayOnHud) \n                {\n                    if (value)\n                    {\n                        PersistentFlags |= MyPersistentEntityFlags.DisplayOnHud;                        \n                    }\n                    else \n                    {\n                        PersistentFlags &= ~MyPersistentEntityFlags.DisplayOnHud;                        \n                    }\n                    UpdateHudMarker();\n                }\n            }\n        }\n\n        private MyPersistentEntityFlags GetFlagsForDifficulty(MyGameplayDifficultyEnum difficulty) \n        {                        \n            switch(difficulty)\n            {\n                case MyGameplayDifficultyEnum.EASY:\n                    return ACTIVATED_DIFFICULTY_EASY;\n                case MyGameplayDifficultyEnum.NORMAL:\n                    return ACTIVATED_DIFFICULTY_NORMAL;\n                case MyGameplayDifficultyEnum.HARD:\n                    return ACTIVATED_DIFFICULTY_HARD;\n            }\n            throw new MyMwcExceptionApplicationShouldNotGetHere();\n        }\n\n        public bool IsActivatedForDifficulty(MyGameplayDifficultyEnum difficulty) \n        {\n            MyPersistentEntityFlags flagsForDifficulty = GetFlagsForDifficulty(difficulty);\n            return (PersistentFlags & flagsForDifficulty) == flagsForDifficulty;\n        }                \n\n        public MyGameplayDifficultyEnum MaxDifficultyToActivated \n        {\n            get \n            {\n                if (IsActivatedForDifficulty(MyGameplayDifficultyEnum.HARD))\n                {\n                    return MyGameplayDifficultyEnum.HARD;\n                }\n                else if (IsActivatedForDifficulty(MyGameplayDifficultyEnum.NORMAL))\n                {\n                    return MyGameplayDifficultyEnum.NORMAL;\n                }\n                else if (IsActivatedForDifficulty(MyGameplayDifficultyEnum.EASY))\n                {\n                    return MyGameplayDifficultyEnum.EASY;\n                }\n                throw new MyMwcExceptionApplicationShouldNotGetHere();\n            }\n            set \n            {\n                PersistentFlags &= ~GetFlagsForDifficulty(MyGameplayDifficultyEnum.HARD);\n                PersistentFlags |= GetFlagsForDifficulty(value);\n            }\n        }\n\n        public bool Activated\n        {\n            get\n            {\n                bool activated = !((PersistentFlags & MyPersistentEntityFlags.Deactivated) != 0);\n                if (MyGuiScreenGamePlay.Static != null && MyGuiScreenGamePlay.Static.IsGameStoryActive())\n                {\n                    activated &= IsActivatedForDifficulty(MyGameplayConstants.GameplayDifficultyProfile.GameplayDifficulty);\n                }\n                return activated;\n                //return !((PersistentFlags & MyPersistentEntityFlags.Deactivated) != 0);\n            }\n        }\n\n        public void Activate(bool activate, bool buffered = true)\n        {\n            Debug.Assert(!Closed, \"Cannot change visibility, entity is closed\");\n\n            if (buffered)\n            {\n                if (activate)\n                    MyEntities.ActivateBuffered(this);\n                else\n                    MyEntities.DeactivateBuffered(this);\n\n                foreach (MyEntity child in Children)\n                {\n                    child.Activate(activate, buffered);\n                }\n            }\n            else\n            {\n                MyPersistentEntityFlags oldValue = PersistentFlags;\n\n                if (!activate)\n                {\n                    PersistentFlags = PersistentFlags | MyPersistentEntityFlags.Deactivated;\n                }\n                else\n                {\n                    PersistentFlags = PersistentFlags & (~MyPersistentEntityFlags.Deactivated);\n                }\n\n                if (oldValue != PersistentFlags)\n                {\n                    if (activate)\n                    {\n                        OnActivated(null);\n                        if (NeedsUpdate)\n                            MyEntities.RegisterForUpdate(this);\n                    }\n                    else\n                    {\n                        OnDeactivated(null);\n                        MyEntities.UnregisterForUpdate(this);\n                    }\n\n                    foreach (MyEntity child in Children)\n                    {\n                        child.Activate(activate, buffered);\n                    }\n                }\n            }\n        }\n\n        protected virtual void InitRenderObjects()\n        {\n            m_renderObjects = new MyRenderObject[] { new MyRenderObject(this, null) };\n        }\n\n        protected virtual void AddRenderObjects()\n        {\n            MyRender.AddRenderObject(RenderObjects[0]);\n        }\n\n        protected virtual void RemoveRenderObjects()\n        {\n            MyRender.RemoveRenderObject(RenderObjects[0]);\n        }\n\n        protected void UpdateRenderObject(bool visible)\n        {\n            if (!Activated && visible)\n                return;\n\n            if (visible)\n            {\n                if (Visible && (Parent == null || Parent.Visible) && m_frustumCheckBeforeDrawEnabled)\n                {\n                    if (CanBeAddedToRender())\n                    {\n                        AddRenderObjects();    \n                    }\n                }\n            }\n            else\n            {\n                if (RenderObjects != null)\n                {\n                    RemoveRenderObjects();\n                }\n            }\n\n            foreach (MyEntity child in Children)\n            {\n                child.UpdateRenderObject(visible);\n            }\n        }\n\n        public void UpdateGamePruningStructure()\n        {\n            MyGamePruningStructure.Move(this);\n            foreach (MyEntity child in Children) child.UpdateGamePruningStructure();\n        }\n\n        public void AddToGamePruningStructure()\n        {\n            MyGamePruningStructure.Add(this);\n            foreach (MyEntity child in Children) child.AddToGamePruningStructure();\n        }\n\n        public void RemoveFromGamePruningStructure()\n        {\n            MyGamePruningStructure.Remove(this);\n            foreach (MyEntity child in Children) child.RemoveFromGamePruningStructure();\n        }\n\n        static public void ClearGamePruningStructure()\n        {\n            MyGamePruningStructure.Clear();\n        }\n    \n        protected virtual bool CanBeAddedToRender()\n        {\n            return true;\n        }\n\n        public bool VisibleInGame\n        {\n            get\n            {\n                return (Flags & EntityFlags.VisibleInGame) != 0;\n            }\n\n            set\n            {\n                if (value)\n                {\n                    Flags = Flags | EntityFlags.VisibleInGame;\n                }\n                else\n                {\n                    Flags = Flags & (~EntityFlags.VisibleInGame);\n                }\n            }\n        }\n\n        /// <summary>\n        /// Gets or sets the entity flags.\n        /// </summary>\n        /// <value>\n        /// The flags.\n        /// </value>\n        public EntityFlags Flags { get; set; }\n        public MyPersistentEntityFlags PersistentFlags { get; set; }\n\n\n        protected bool NeedsId\n        {\n            get\n            {\n                return (Flags & EntityFlags.NeedsId) != 0;\n            }\n        }\n\n        public bool CheckExplosionObstacles\n        {\n            get\n            {\n                return (Flags & EntityFlags.CheckExplosionObstacles) != 0;\n            }\n            protected set\n            {\n                if (value)\n                {\n                    Flags |= EntityFlags.CheckExplosionObstacles;\n                }\n                else\n                {\n                    Flags &= ~EntityFlags.CheckExplosionObstacles;\n                }\n            }\n        }\n\n        public Vector3? GetDiffuseColor() { return m_diffuseColor; }\n        public Vector3 GetHighlightColor() { return m_highlightColor; }\n        private void SetDiffuseColor(ref Vector3 vctColor) { m_diffuseColor = vctColor; }\n        private void SetHighlightColor(Vector3 vctColor)\n        {\n            if (MyMwcFinalBuildConstants.ENABLE_OBJECT_HIGHLIGHT)\n            {\n                m_highlightColor = vctColor;\n            }\n        }\n\n        public MyModel ModelLod0\n        {\n            get { return m_modelLod0; }\n        }\n\n        public MyModel ModelLod1\n        {\n            get { return m_modelLod1; }\n        }\n\n        public MyModel ModelLod2\n        {\n            get { return m_modelLod2; }\n        }\n\n        public float? Lod1ForcedDistance\n        {\n            get { return m_lod1ForcedDistance; }\n        }\n\n        public MyModel ModelCollision\n        {\n            get\n            {\n                if (m_modelCollision != null)\n                {\n                    return m_modelCollision;\n                }\n                else\n                    return m_modelLod0;\n            }\n        }\n\n        private ushort m_materialIndex;\n\n        /// <summary>\n        /// Only used by prefabs so far. Indicates the material which is used for the entity.\n        /// </summary>\n        public ushort MaterialIndex\n        {\n            get { return m_materialIndex; }\n            set\n            {\n                MyRender.GetRenderProfiler().StartProfilingBlock(\"MyEntity preload Material textures\");\n\n                var modelLod0 = GetModelLod0();\n                if (modelLod0 != null)\n                    foreach (var mesh in modelLod0.GetMeshList())\n                    {\n                        if (value > mesh.Materials.Length - 1)\n                        {\n                            MyRender.GetRenderProfiler().EndProfilingBlock();\n                            throw new MyMaterialNotAvailableException(modelLod0.AssetName, value);\n                        }\n\n                        //Let it for render\n                        //mesh.Materials[value].PreloadTexture();\n                    }\n\n                var modelLod1 = GetModelLod1();\n                if (modelLod1 != null)\n                    foreach (var mesh in modelLod1.GetMeshList())\n                    {\n                        if (value > mesh.Materials.Length - 1)\n                        {\n                            MyRender.GetRenderProfiler().EndProfilingBlock();\n                            throw new MyMaterialNotAvailableException(modelLod1.AssetName, value);\n                        }\n\n                        //Let it for render\n                        //mesh.Materials[value].PreloadTexture();\n                    }\n\n                m_materialIndex = value;\n\n                MyRender.GetRenderProfiler().EndProfilingBlock();\n            }\n        }\n\n        /// <summary>\n        /// Gets or sets the faction.\n        /// </summary>\n        /// <value>\n        /// The faction.\n        /// </value>\n        protected MyMwcObjectBuilder_FactionEnum m_faction;\n        public virtual MyMwcObjectBuilder_FactionEnum Faction\n        {\n            get { return m_faction; }\n            set { m_faction = value; }\n        }\n\n        public MyRenderObject[] RenderObjects\n        {\n            get { return m_renderObjects; }\n        }\n\n        private string m_displayName;\n        public string DisplayName\n        {\n            get\n            {\n                return m_displayName;\n            }\n            set\n            {\n                m_displayName = value;\n                if (MyHud.ContainsEntity(this))\n                {\n                    MyHud.RenameHudEntity(this, new StringBuilder(GetCorrectDisplayName()));\n                }\n            }\n        }\n\n        public virtual string GetCorrectDisplayName()\n        {\n            return DisplayName;\n        }\n\n\n        #endregion\n\n        #region Methods\n\n        /// <summary>\n        /// Initializes a new instance of the <see cref=\"MyEntity\"/> class.\n        /// </summary>\n        protected MyEntity(bool needsId)\n        {\n            Faction = MyMwcObjectBuilder_FactionEnum.None;\n\n            this.m_children = new ObservableCollection<MyEntity>();\n            this.m_children.CollectionChanged += NotifyChidrenCollectionChanged;\n            this.m_localMatrix = Matrix.Identity;\n            this.Flags = EntityFlags.Visible | EntityFlags.VisibleInGame | EntityFlags.Save | EntityFlags.CheckExplosionObstacles;\n            \n            if (needsId)\n            {\n                this.Flags |= EntityFlags.NeedsId;\n            }\n\n            this.PersistentFlags = MyPersistentEntityFlags.Enabled | MyPersistentEntityFlags.CastShadows;\n\n            MyScriptWrapper.OnEntityCreated(this);\n        }\n\n        protected MyEntity()\n            : this(true)\n        {\n        }\n\n        /// <summary>\n        /// \n        /// </summary>\n        public virtual void UpdateBeforeSimulation()\n        {\n            Debug.Assert(!Closed, \"Cannot update entity, entity is closed\");\n\n            // When somebody just set health to 0, we must handle somewhere raising OnDie events\n            // Condition added to optimize (complex conditions inside)\n            if (m_healthRatio <= MyGameplayConstants.HEALTH_RATIO_DEATH)\n                TestDeath(null);\n\n            //Each entity is responsible for registering for update  \n            for (int i = 0; i < this.m_children.Count; i++)\n            {\n                this.m_children[i].UpdateBeforeSimulation();\n            }\n        }\n\n        /// <summary>\n        /// UpdateBeforeSimulation\n        /// </summary>\n        public virtual void UpdateAfterSimulation()\n        {\n            Debug.Assert(!Closed, \"Cannot update entity, entity is closed\");\n\n            //Each entity is responsible for registering for update\n            for (int i = 0; i < this.m_children.Count; i++)\n            {\n                this.m_children[i].UpdateAfterSimulation();\n            }  \n        }\n\n        /// <summary>\n        /// Collects all sub-resources of this object.\n        /// </summary>\n        /// <param name=\"collectedResources\">The collected resources.</param>\n        /// <param name=\"hierarchically\"></param>\n        public override void CollectResources(ICollection<MyResource> collectedResources, bool hierarchically = true)\n        {\n            base.CollectResources(collectedResources);\n\n            for (int i = 0; i < this.m_children.Count; i++)\n            {\n                var entity = this.m_children[i];\n\n                collectedResources.Add(entity);\n\n                if (hierarchically)\n                {\n                    entity.CollectResources(collectedResources);\n                }\n            }\n\n            if (this.Physics != null)\n            {\n                collectedResources.Add(this.Physics);\n\n                if (hierarchically)\n                {\n                    this.Physics.CollectResources(collectedResources);\n                }\n            }\n        }\n\n        //WorldAABB\n        //public virtual BoundingBox GetLocalAABB() \n\n        /// <summary>\n        /// Generates new debug name for entity.\n        /// </summary>\n        [Conditional(\"DEBUG\")]\n        private void DebugGenerateEntityDisplayName()\n        {\n            if (this.DisplayName == null)\n            {\n                //Storkovina\n                //this.DisplayName = string.Format(\"{0}:{1}\", this.GetType().Name, this.GetHashCode());\n                this.DisplayName = this.GetType().Name;\n            }\n        }\n\n        public virtual string GetFriendlyName()\n        {\n            return string.Empty;\n        }\n\n        public virtual MyMeshMaterial GetMaterial(MyMesh mesh)\n        {\n            MyMeshMaterial material = mesh.Materials[MaterialIndex];\n            material.EmissivityEnabled = m_enableEmissivity;\n            //Preload needs to be here because of reloadcontent\n            material.PreloadTexture(LoadingMode.Background);\n\n            return material;\n        }\n\n        #endregion\n\n        #region Position And Movement Methods\n\n        /// <summary>\n        /// Sets the world matrix.\n        /// </summary>\n        /// <param name=\"worldMatrix\">The world matrix.</param>\n        /// <param name=\"source\">The source object that caused this change or null when not important.</param>\n        public void SetWorldMatrix(Matrix worldMatrix, object source = null)\n        {\n            MyUtils.AssertIsValid(worldMatrix);\n\n            if (m_scale != null)\n            {\n                MyMwcUtils.Normalize(ref worldMatrix, out worldMatrix);\n                worldMatrix = Matrix.CreateScale(m_scale.Value) * worldMatrix;\n            }\n\n            if (this.m_worldMatrix == worldMatrix)\n                return;\n\n            if (this.Parent == null)\n            {\n                this.m_worldMatrix = worldMatrix;\n\n            }\n            else\n            {\n                Matrix matParentInv = Matrix.Invert(Parent.WorldMatrix);\n                this.m_localMatrix = worldMatrix * matParentInv;\n\n            }\n\n            UpdateWorldMatrix(source);\n        }\n\n        /// <summary>\n        /// Sets the local matrix.\n        /// </summary>\n        /// <param name=\"localMatrix\">The local matrix.</param>\n        /// <param name=\"source\">The source object that caused this change or null when not important.</param>\n        public void SetLocalMatrix(Matrix localMatrix, object source = null)\n        {\n            if (this.m_localMatrix != localMatrix)\n            {\n                this.m_localMatrix = localMatrix;\n                UpdateWorldMatrix(source);\n            }\n        }\n\n        /// <summary>\n        /// Gets the entity position.\n        /// </summary>\n        /// <returns></returns>\n        public Vector3 GetPosition()\n        {\n            return this.m_worldMatrix.Translation;\n        }\n\n        /// <summary>\n        /// Gets the entity direction.\n        /// </summary>\n        /// <returns></returns>\n        public Vector3 GetForward()\n        {\n            return this.m_worldMatrix.Forward;\n        }\n\n        /// <summary>\n        /// Gets the entity up vector.\n        /// </summary>\n        /// <returns></returns>\n        public Vector3 GetUp()\n        {\n            return this.m_worldMatrix.Up;\n        }\n\n        /// <summary>\n        /// Sets the position.\n        /// </summary>\n        /// <param name=\"pos\">The pos.</param>\n        public void SetPosition(Vector3 pos)\n        {\n            if (!MyMwcUtils.IsZero(this.m_worldMatrix.Translation - pos))\n            {\n                this.m_worldMatrix.Translation = pos;\n                UpdateWorldMatrix();\n            }\n        }\n\n        /// <summary>\n        /// Scaling of this object's model. \n        /// Actualy used only for drawing and JLX collision skins. \n        /// I don't use it for line-triangleVertexes intersections in octree (but it can be added).\n        /// </summary>\n\n        float? m_scale;\n        public float? Scale\n        {\n            get { return m_scale; }\n            set\n            {\n                if (m_scale != value)\n                {\n                    m_scale = value;\n\n                    if (m_scale != null)\n                    {\n                        System.Diagnostics.Debug.Assert(!MyMwcUtils.IsZero(m_scale.Value));\n\n                        if (Parent == null)\n                        {\n                            MyMwcUtils.Normalize(ref m_worldMatrix, out m_worldMatrix);\n                            m_worldMatrix = Matrix.CreateScale(m_scale.Value) * m_worldMatrix;\n                        }\n                        else\n                        {\n                            MyMwcUtils.Normalize(ref m_localMatrix, out m_localMatrix);\n                            m_localMatrix = Matrix.CreateScale(m_scale.Value) * m_localMatrix;\n                        }\n                    }\n                    else\n                    {\n                        MyMwcUtils.Normalize(ref m_localMatrix, out m_localMatrix);\n                    }\n\n                    UpdateWorldMatrix();\n                }\n            }\n        }\n\n\n\n        /// <summary>\n        /// Gets the orientation.\n        /// </summary>\n        /// <returns></returns>\n        public Matrix GetOrientation()\n        {\n            Matrix orientation = Matrix.Identity;\n            orientation.Forward = WorldMatrix.Forward;\n            orientation.Up = WorldMatrix.Up;\n            orientation.Right = WorldMatrix.Right;\n            return orientation;\n        }\n\n        /// <summary>\n        /// Gets the world rotation.\n        /// </summary>\n        /// <returns></returns>\n        [Obsolete]\n        public Matrix GetWorldRotation()\n        {\n            var rot = Matrix.Identity;\n            rot.Forward = this.WorldMatrix.Forward;\n            rot.Up = this.WorldMatrix.Up;\n            rot.Right = this.WorldMatrix.Right;\n\n            return rot;\n        }\n\n        /// <summary>\n        /// Inverted world matrix of this physic object calculated on-demand (non cached).\n        /// Use it whenever you want to do world-matrix transformations with this physic objects.\n        /// </summary>\n        public Matrix GetWorldMatrixInverted()\n        {\n            Matrix inv;\n            Matrix.Invert(ref this.m_worldMatrix, out inv);\n\n            return inv;\n        }\n\n        /// <summary>\n        /// Gets the world matrix for draw.\n        /// </summary>\n        /// <returns></returns>\n        public virtual Matrix GetWorldMatrixForDraw()\n        {\n            Matrix outMatrix;\n            Matrix inMatrix = this.m_worldMatrix;\n\n            Matrix.Multiply(ref inMatrix, ref MyCamera.InversePositionTranslationMatrix, out outMatrix);\n\n            return outMatrix;\n        }\n\n        /// <summary>\n        /// Moves the and rotate.\n        /// </summary>\n        /// <param name=\"newPosition\">The new position.</param>\n        /// <param name=\"newOrientation\">The new orientation.</param>\n        /// <returns> return false, if object cannot be moved - this method is most important for editor and moving objects there</returns>\n        public virtual bool MoveAndRotate(Vector3 newPosition, Matrix newOrientation)\n        {\n            newOrientation.Translation = newPosition;\n\n            SetWorldMatrix(newOrientation);\n\n            return true;\n        }\n\n        public virtual bool CanMoveAndRotate(Vector3 newPosition, Matrix newOrientation)\n        {\n            return true;\n        }\n\n        /// <summary>\n        /// Resets rotation of entity to default.\n        /// </summary>\n        public virtual void ResetRotation()\n        {\n            Matrix resettedOrientation = Matrix.Identity;\n            resettedOrientation.Translation = this.GetPosition();\n\n            SetWorldMatrix(resettedOrientation);\n        }\n\n        /// <summary>\n        /// Called when all entities are loaded, override to fill referenced entities.\n        /// ALWAYS call base.Link(), otherwise children entities won't be linked.\n        /// </summary>\n        public virtual void Link()\n        {\n            // When needs id and has no id\n            if ((this.Flags & EntityFlags.NeedsId) != 0 && !this.EntityId.HasValue)\n            {\n                this.EntityId = MyEntityIdentifier.AllocateId();\n                MyEntityIdentifier.AddEntityWithId(this);\n            }\n\n            foreach (var child in m_children.ToList())\n                child.Link();\n        }\n\n        /// <summary>\n        /// Updates the world matrix (change caused by this entity)\n        /// </summary>\n        private void UpdateWorldMatrix(object source = null)\n        {\n            if (this.Parent != null)\n            {\n                Matrix parentWorldMatrix = this.Parent.WorldMatrix;\n                UpdateWorldMatrix(ref parentWorldMatrix);\n\n                return;\n            }\n\n            \n            //UpdateWorldVolume();\n            OnWorldPositionChanged(source);\n            UpdateChildren(source);\n\n            if (this.Physics != null && this.Physics.Enabled && this.Physics != source)\n            {\n                this.Physics.OnWorldPositionChanged(source);\n            }\n\n            // NotifyEntityChange(source);\n        }\n\n        /// <summary>\n        /// Optimized version for setting up message data\n        /// </summary>\n        /// <param name=\"entity\"></param>\n        /// <param name=\"msg\"></param>\n        public static void FillMessage(MyEntity entity, ref MyEventUpdatePosition msg)\n        {\n            msg.EntityId = entity.EntityId.Value.NumericValue;\n            msg.Position = new MyMwcPositionAndOrientation(ref entity.m_worldMatrix);\n            msg.Velocity = entity.Physics.LinearVelocity;\n            msg.Acceleration = entity.Physics.LinearAcceleration;\n        }\n\n        /// <summary>\n        /// Updates the world matrix (change caused by parent)\n        /// </summary>\n        public virtual void UpdateWorldMatrix(ref Matrix parentWorldMatrix, object source = null)\n        {\n            Matrix oldWorldMatrix = m_worldMatrix;\n            Matrix.Multiply(ref this.m_localMatrix, ref parentWorldMatrix, out this.m_worldMatrix);\n\n            if (m_worldMatrix != oldWorldMatrix)\n            {\n                OnWorldPositionChanged(source);\n                UpdateChildren(source);\n\n                if (this.Physics != null && this.Physics.Enabled && this.Physics != source)\n                {\n                    this.Physics.OnWorldPositionChanged(source);\n                }\n            }\n\n            //NotifyEntityChange(source);\n        }\n\n        /// <summary>\n        /// Updates the childs of this entity.\n        /// </summary>\n        private void UpdateChildren(object source)\n        {\n            for (int i = 0; i < this.m_children.Count; i++)\n            {\n                this.m_children[i].UpdateWorldMatrix(ref this.m_worldMatrix, source);\n            }\n        }\n\n        /// <summary>\n        /// Updates the volume of this entity.\n        /// </summary>\n        protected virtual void UpdateWorldVolume()\n        {\n            BoundingBox oldWorldAABB = m_worldAABB;\n\n            m_worldAABB = m_localAABB.Transform(this.m_worldMatrix);\n            Matrix mat = Matrix.CreateTranslation(m_localVolume.Center);\n            Matrix.Multiply(ref mat, ref m_worldMatrix, out mat); //mat = mat * this.WorldMatrix;\n            \n            m_worldVolume = new BoundingSphere(mat.Translation, m_localVolume.Radius);\n\n            if (oldWorldAABB.Contains(m_worldAABB) != ContainmentType.Contains)\n            {   //New world AABB is not same as previous world AABB\n                InvalidateRenderObjects();\n            }\n        }\n\n        protected void InvalidateRenderObjects(bool sortIntoCullobjects = false)\n        {\n            if (this.RenderObjects != null)\n            {\n                foreach (MyRenderObject renderObject in m_renderObjects)\n                {\n                    renderObject.SetDirty();\n                    if (Visible)\n                    {\n                        MyRender.UpdateRenderObject(renderObject, sortIntoCullobjects);\n                    }\n                }\n            }\n        }\n\n\n        /// <summary>\n        /// Update volume hr and of all children.\n        /// </summary>\n        /// <param name=\"volume\"></param>\n        private void UpdateAABBHr(ref BoundingBox volume)\n        {\n            UpdateWorldVolume();\n\n            BoundingBox box = MyMath.CreateInvalidAABB();\n            BoundingBox.CreateMerged(ref box, ref this.m_worldAABB, out box);\n\n            for (int i = 0; i < this.m_children.Count; i++)\n            {\n                this.m_children[i].UpdateAABBHr(ref box);\n            }\n\n            m_worldAABBHr = box;\n            m_worldVolumeHr = BoundingSphere.CreateFromBoundingBox(m_worldAABBHr);\n\n            BoundingBox.CreateMerged(ref box, ref volume, out volume);\n        }\n\n        public void UpdateAABBHr()\n        {\n            BoundingBox box = MyMath.CreateInvalidAABB();\n            UpdateAABBHr(ref box);\n        }\n\n        #endregion\n\n        #region Draw Methods\n\n        /// <summary>\n        /// Check if we have to draw this phys object in this frame.\n        /// </summary>\n        /// <returns>Returns true if visible from camera.</returns>\n        public bool IsVisible()\n        {\n            if (!MyEntities.IsVisible(this))\n            {\n                return false;\n            }\n\n            if (!this.Visible)\n            {\n                return false;\n            }\n\n            if (!this.Activated)\n            {\n                return false;\n            }\n\n            return true;\n        }\n\n        /// <summary>\n        /// Gets the lod0 model of the entity. Null if there is no model applicable.\n        /// </summary>\n        public virtual MyModel GetModelLod0()\n        {\n            return ModelLod0;\n        }\n\n        /// <summary>\n        /// Gets the lod1 model of the entity. Null if there is no model applicable.\n        /// </summary>\n        public virtual MyModel GetModelLod1()\n        {\n            return ModelLod1;\n        }\n\n        /// <summary>\n        /// Draws this object's model and return true. If object isn't in frustum or for whatever reason we won't draw it, return false.\n        /// </summary>\n        /// <returns></returns>\n        public virtual bool Draw(MyRenderObject renderObject = null)\n        {\n            if (IsVisible())\n            {\n                MyRender.AddRenderObjectToDraw(renderObject ?? RenderObjects[0]);\n                return true;\n            }\n\n            return false;\n        }\n\n        public void PreloadTextures()\n        {\n            if (ModelLod0 != null)\n                ModelLod0.PreloadTextures(LoadingMode.Immediate, MaterialIndex);\n            if (ModelLod1 != null)\n                ModelLod1.PreloadTextures(LoadingMode.Immediate, MaterialIndex);\n            if (ModelLod2 != null)\n                ModelLod2.PreloadTextures(LoadingMode.Immediate, MaterialIndex);\n        }\n\n        public virtual void PreloadForDraw()\n        {\n            PreloadTextures();\n            \n            if (ModelLod0 != null)\n            {\n                ModelLod0.LoadInDraw();\n            }\n\n            if (ModelLod1 != null)\n            {\n                ModelLod1.LoadInDraw();\n            }\n\n            if (ModelLod2 != null)\n            {\n                ModelLod2.LoadInDraw();\n            }\n        }\n\n        /// <summary>\n        /// Draw debug.  \n        /// </summary>\n        /// <returns></returns>\n        public virtual bool DebugDraw()\n        {\n            if (MyMwcFinalBuildConstants.DrawHelperPrimitives)\n            {\n                DebugDrawVolume();\n                DebugDrawOBB();\n                MyDebugDraw.DrawAxis(WorldMatrix, LocalVolume.Radius, 1);\n/*\n                if (Vector3.Distance(GetPosition(), MyCamera.Position) < 200)\n                {\n                    Vector4 clr = Vector4.One;\n                    if (this is MyDummyPoint && (((this as MyDummyPoint).DummyFlags) & MyDummyPointFlags.PARTICLE) > 0)\n                        MyDebugDraw.DrawAABBLine(ref m_worldAABB, ref clr, 1);\n                }*/\n            }\n\n            if (MyMwcFinalBuildConstants.DrawJLXCollisionPrimitives)\n            {\n                DebugDrawPhysics();\n            }\n\n            if (MyMwcFinalBuildConstants.DrawNormalVectors)\n            {\n                DebugDrawNormalVectors();\n            }\n\n            return true;\n        }\n\n        /// <summary>\n        /// Draws world bounding box of this entity\n        /// </summary>\n        [Conditional(\"DEBUG\"), Conditional(\"DEVELOP\")]\n        public void DebugDrawWorldAABB()\n        {\n            BoundingBox aabb = WorldAABB;\n            Vector4 color = Vector4.One;\n            MyDebugDraw.DrawAABB(ref aabb, ref color, 1.0f);\n        }\n\n        /// <summary>\n        /// Debug draw volume of this entity.\n        /// </summary>\n        [Conditional(\"DEBUG\"), Conditional(\"DEVELOP\")]\n        public void DebugDrawVolume()\n        {\n            if ((this is MyVoxelMap) == false)\n            {\n                MyDebugDraw.DrawSphereWireframe(Matrix.CreateScale(m_worldVolume.Radius) * Matrix.CreateTranslation(m_worldVolume.Center), Color.Red.ToVector3(), 1);\n            }\n        }\n\n        /// <summary>\n        /// Debug draw hierarchical volume of this entity.\n        /// </summary>\n        [Conditional(\"DEBUG\"), Conditional(\"DEVELOP\")]\n        public void DebugDrawVolumeHr()\n        {\n            if ((this is MyVoxelMap) == false)\n            {\n                MyDebugDraw.DrawSphereWireframe(Matrix.CreateScale(m_worldVolumeHr.Radius) * Matrix.CreateTranslation(m_worldVolumeHr.Center), Color.Red.ToVector3(), 1);\n            }\n        }\n\n        /// <summary>\n        /// Debug draw box of this entity.\n        /// </summary>\n        [Conditional(\"DEBUG\"), Conditional(\"DEVELOP\")]\n        public virtual void DebugDrawOBB()\n        {\n            Vector3 boundingBoxSize = LocalAABB.Size();\n\n            const float alpha = 1.0f;\n            MyDebugDraw.DrawHiresBoxWireframe(Matrix.CreateScale(boundingBoxSize) * Matrix.CreateTranslation(this.LocalVolumeOffset) * this.m_worldMatrix, Color.DarkRed.ToVector3(), alpha);\n        }\n\n        /// <summary>\n        /// Debug draw box of this entity.\n        /// </summary>\n        [Conditional(\"DEBUG\"), Conditional(\"DEVELOP\")]\n        public virtual void DebugDrawAABB()\n        {\n            const float alpha = 1.0f;\n            MyDebugDraw.DrawHiresBoxWireframe(Matrix.CreateScale(WorldAABB.Size()) * Matrix.CreateTranslation(WorldAABB.GetCenter()), Color.Gray.ToVector3(), alpha);\n        }\n\n        /// <summary>\n        /// Debug draw box of this entity.\n        /// </summary>\n        [Conditional(\"DEBUG\"), Conditional(\"DEVELOP\")]\n        public virtual void DebugDrawAABBHr()\n        {\n            const float alpha = 1.0f;\n            MyDebugDraw.DrawHiresBoxWireframe(Matrix.CreateScale(m_worldAABBHr.Size()) * Matrix.CreateTranslation(m_worldAABBHr.GetCenter()), Color.Gray.ToVector3(), alpha);\n        }\n\n        /// <summary>\n        /// Debug draw box of this entity.\n        /// </summary>\n        [Conditional(\"DEBUG\"), Conditional(\"DEVELOP\"), Conditional(\"RELEASE\")]\n        public virtual void DebugDrawBox(Vector4 color, bool bWireFrame)\n        {\n            /*\n            BoundingBox worldBB = GetLocalAABB();\n            Vector3 size = worldBB.Max - worldBB.Min;\n            Vector3 center = size / 2f;\n            center = center + worldBB.Min;\n            //Matrix mat = Matrix.CreateWorld(center, this.worldMatrix.Forward, this.worldMatrix.Up);\n\n            Matrix tmpInv = Matrix.Identity;\n            tmpInv.Translation = -center;\n            BoundingBox localbox = worldBB.Transform(tmpInv);    //to local\n\n\n            Matrix mat = Matrix.CreateTranslation(LocalVolumeOffset) * this.WorldMatrix;\n            MySimpleObjectDraw.DrawTransparentBox(ref mat, ref localbox, ref color, bWireFrame, 1);\n\n            */\n\n            Matrix mat = Matrix.Identity;\n            BoundingBox box = WorldAABB;\n            MySimpleObjectDraw.DrawTransparentBox(ref mat, ref box, ref color, bWireFrame, 1);\n        }\n\n\n        /// <summary>\n        /// If model of this phys object uses alpha for rendering, this method will calculate that alpha\n        /// Of course childs of this class must implement it's own alpha calculation, because this one will throw an exception.\n        /// Children shouldn't call this base method\n        /// Only for drawing this object, because some objects need to use special world matrix\n        /// </summary>\n        /// <returns></returns>\n        [Conditional(\"DEBUG\"), Conditional(\"DEVELOP\")]\n        public virtual void DebugDrawNormalVectors()\n        {\n            bool retVal = IsVisible();\n\n            if (retVal == false)\n                return;\n\n            // Must be enabled\n            if (!MyMwcFinalBuildConstants.ENABLE_VERTEX_NORMALS_DEBUG_DRAW)\n                return;\n\n\n            if ((this == MySession.PlayerShip) &&\n                (MyGuiScreenGamePlay.Static.CameraAttachedTo == MyCameraAttachedToEnum.PlayerMinerShip)) return;\n\n            const float MAX_DRAW_DISTANCE = 300;\n            if (GetDistanceBetweenCameraAndBoundingSphere() > MAX_DRAW_DISTANCE) return;\n\n            //Matrix worldMatrixNotCentered = Matrix.CreateTranslation(-m_invertedCenterOfMass) * WorldMatrix;\n            Matrix worldMatrixNotCentered = WorldMatrix;\n            Matrix transformMatrix = worldMatrixNotCentered;\n\n            MyDebugDrawCachedLines.Clear();\n\n            //  This is just a reserve\n            const int NUMBER_OF_ADD_TRIANGLES_IN_LOOP = 1;\n\n            int vertexIndex = 0;\n            while (true)\n            {\n                //bool finished = triangleIndex >= mesh.GetNumTriangles();\n                bool finished = vertexIndex >= m_modelLod0.GetVerticesCount();\n\n                if ((MyDebugDrawCachedLines.IsFull(-NUMBER_OF_ADD_TRIANGLES_IN_LOOP)) || (finished))\n                {\n                    MyDebugDrawCachedLines.DrawLines();\n                    MyDebugDrawCachedLines.Clear();\n                }\n\n                if (finished)\n                {\n                    break;\n                }\n\n                //  We now transform the triangleVertexes into world space (we could keep leave the mesh alone\n                //  but at this point 3 vector transforms is probably not a major slow down)\n                Vector3 vertex0 = m_modelLod0.GetVertex(vertexIndex);\n                Vector3 normal = m_modelLod0.GetVertexNormal(vertexIndex);\n                Vector3 vertex1 = vertex0 + normal * 1;\n\n                Vector3.Transform(ref vertex0, ref transformMatrix, out vertex0);\n                Vector3.Transform(ref vertex1, ref transformMatrix, out vertex1);\n\n                MyDebugDrawCachedLines.AddLine(vertex0, vertex1, Color.Red, Color.Red);\n\n                vertexIndex++;\n            }\n        }\n\n\n\n        /// <summary>\n        /// Draw physical representation of entity\n        /// </summary>\n        [Conditional(\"DEBUG\"), Conditional(\"DEVELOP\")]\n        public void DebugDrawPhysics()\n        {\n            if (this.Physics == null)\n            {\n                return;\n            }\n\n            const float maxDrawDistance = 50;\n\n            if (GetDistanceBetweenCameraAndBoundingSphere() > maxDrawDistance)\n            {\n                return;\n            }\n\n            this.Physics.DebugDraw();\n\n            MyDebugDraw.DrawLine3D(GetPosition(), GetPosition() + Physics.LinearVelocity * 4, Color.Red, Color.Red);\n        }\n\n        public virtual void DebugDrawDeactivated()         \n        {\n            if (Activated || !Visible)\n            {\n                return;\n            }\n\n            var model = GetModelLod1();\n            if (model == null) \n            {\n                model = GetModelLod0();                \n            }\n            if (model == null) \n            {\n                return;\n            }\n\n            Matrix transformMatrix = WorldMatrix;\n\n            MyDebugDrawCachedLines.Clear();\n\n            //  This is just a reserve\n            const int numberOfAddTrianglesInLoop = 3;\n\n            int triangleIndex = 0;\n            while (true)\n            {\n                //bool finished = triangleIndex >= mesh.GetNumTriangles();\n                bool finished = triangleIndex >= model.GetTrianglesCount();\n\n                if ((MyDebugDrawCachedLines.IsFull(-numberOfAddTrianglesInLoop)) || (finished))\n                {\n                    MyDebugDrawCachedLines.DrawLines();\n                    MyDebugDrawCachedLines.Clear();\n                }\n\n                if (finished)\n                {\n                    break;\n                }\n\n                MyTriangleVertexIndices triangle = model.Triangles[triangleIndex];\n\n                //  We now transform the triangleVertexes into world space (we could keep leave the mesh alone\n                //  but at this point 3 vector transforms is probably not a major slow down)\n                Vector3 triVec0 = model.GetVertex(triangle.I0);\n                Vector3 triVec1 = model.GetVertex(triangle.I2);\n                Vector3 triVec2 = model.GetVertex(triangle.I1);\n\n                // Move triangle into world space                        \n                Vector3.Transform(ref triVec0, ref transformMatrix, out triVec0);\n                Vector3.Transform(ref triVec1, ref transformMatrix, out triVec1);\n                Vector3.Transform(ref triVec2, ref transformMatrix, out triVec2);\n\n                MyDebugDrawCachedLines.AddLine(triVec0, triVec1, Color.Green, Color.Green);\n                MyDebugDrawCachedLines.AddLine(triVec1, triVec2, Color.Green, Color.Green);\n                MyDebugDrawCachedLines.AddLine(triVec2, triVec0, Color.Green, Color.Green);\n\n                //MyDebugDraw.AddDrawTriangle(triVec0, triVec1, triVec2, new Color(0,0.8f, 0, 0.1f));\n\n                triangleIndex++;\n            }\n        }\n\n        public virtual void InitDrawTechniques()\n        {\n        }\n\n        protected void InitDrawTechniques(MyMeshDrawTechnique drawTechnique)\n        {\n            InitDrawTechnique(ModelLod0, drawTechnique);\n            InitDrawTechnique(ModelLod1, drawTechnique);\n            InitDrawTechnique(ModelLod2, drawTechnique);\n        }\n\n        private void InitDrawTechnique(MyModel model, MyMeshDrawTechnique drawTechnique)\n        {\n            if (model != null)\n            {\n                //Be careful about this, return correct technique in entity::GetMaterial\n                model.SetDrawTechnique(drawTechnique);\n                foreach (MyMesh mesh in model.GetMeshList())\n                {\n                    foreach (MyMeshMaterial material in mesh.Materials)\n                    {\n                        material.DrawTechnique = drawTechnique;\n                    }\n                }\n            }\n        }\n\n        #endregion\n\n        #region Intersection Methods\n\n        //  Calculates intersection of line with object.\n        public virtual bool GetIntersectionWithLine(ref MyLine line, out Vector3? v, bool useCollisionModel = true, IntersectionFlags flags = IntersectionFlags.ALL_TRIANGLES)\n        {\n            v = null;\n            MyModel collisionModel = ModelLod0;\n            if (useCollisionModel)\n                collisionModel = ModelCollision;\n\n            if (collisionModel != null)\n            {\n                MyIntersectionResultLineTriangleEx? result = collisionModel.GetTrianglePruningStructure().GetIntersectionWithLine(this, ref line, flags);\n                if (result != null)\n                {\n                    v = result.Value.IntersectionPointInWorldSpace;\n                    return true;\n                }\n            }\n            else\n                Debug.Assert(false);//this should be overriden by child class if object has no model by default\n            return false;\n        }\n\n        //  Calculates intersection of line with any triangleVertexes in this model instance. Closest intersection and intersected triangleVertexes will be returned.\n        public virtual bool GetIntersectionWithLine(ref MyLine line, out MyIntersectionResultLineTriangleEx? t, IntersectionFlags flags = IntersectionFlags.ALL_TRIANGLES)\n        {\n            //Cannot profile because of multithreading\n            //MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyEntity.LineIntersection fast\");\n\n            bool ret = false;\n\n            t = null;\n            MyModel collisionModel = ModelLod0;\n\n            if (collisionModel != null)\n            {\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyEntity.GetIntersectionWithLine on model\");\n                MyIntersectionResultLineTriangleEx? result = collisionModel.GetTrianglePruningStructure().GetIntersectionWithLine(this, ref line, flags);\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n                if (result != null)\n                {\n                    t = result.Value;\n                    ret = true;\n                }\n            }\n\n            //Cannot profile because of multithreading\n            //MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n            return ret;\n\n        }\n\n        //  Calculates intersection of line with any bounding sphere in this model instance. Center of the bounding sphere will be returned.\n        //  It takes boundingSphereRadiusMultiplier argument which serves for extending the influence (radius) for interaction with line.\n        public virtual Vector3? GetIntersectionWithLineAndBoundingSphere(ref MyLine line, float boundingSphereRadiusMultiplier)\n        {\n            if (m_modelLod0 == null)\n                return null;\n\n            BoundingSphere vol = m_worldVolume;\n            vol.Radius *= boundingSphereRadiusMultiplier;\n\n            //  Check if line intersects phys object's current bounding sphere, and if not, return 'no intersection'\n            if (!MyUtils.IsLineIntersectingBoundingSphere(ref line, ref vol))\n                return null;\n\n            return vol.Center;\n        }\n\n        //  Return true if object intersects specified sphere.\n        //  This method doesn't return exact point of intersection or any additional data.\n        //  We don't look for closest intersection - so we stop on first intersection found.\n        public virtual bool GetIntersectionWithSphere(ref BoundingSphere sphere)\n        {\n            MyModel collisionModel = ModelLod0;\n\n            if (collisionModel != null)\n                return collisionModel.GetTrianglePruningStructure().GetIntersectionWithSphere(this, ref sphere);\n            return false;\n        }\n\n        //  Return list of triangles intersecting specified sphere. \n        public void GetTrianglesIntersectingSphere(ref BoundingSphere sphere, Vector3? referenceNormalVector, float? maxAngle,\n                                                   List<MyTriangle_Vertex_Normals> retTriangles, int maxNeighbourTriangles)\n        {\n            MyModel collisionModel = ModelLod0;\n\n            if (collisionModel != null)\n            {\n                collisionModel.GetTrianglePruningStructure().GetTrianglesIntersectingSphere(ref sphere, referenceNormalVector, maxAngle, retTriangles, maxNeighbourTriangles);\n            }\n        }\n\n        private Vector3[] m_frustumIntersectionCorners = new Vector3[8];\n\n        //  Return true if bounding sphere of this object intersects bounding frustum\n        public virtual bool GetIntersectionWithBoundingFrustum(ref BoundingFrustum boundingFrustum)\n        {\n            ContainmentType con = boundingFrustum.Contains(WorldAABB);\n            if (con == ContainmentType.Contains)\n            {\n                return true;\n            }\n\n            if (con == ContainmentType.Intersects)\n            {\n                if (ModelLod0 == null)\n                {\n                    return true;\n                }\n\n                for (int v = 0; v < ModelLod0.GetVerticesCount(); v++)\n                {\n                    Vector3 vet = ModelLod0.GetVertex(v);\n                    Vector3 transformed = Vector3.Transform(vet, WorldMatrix);\n                    ContainmentType con2 = boundingFrustum.Contains(transformed);\n                    if (con2 != ContainmentType.Disjoint)\n                    {\n                        return true;\n                    }\n                }\n\n                boundingFrustum.GetCorners(m_frustumIntersectionCorners);\n                MyLine l0 = new MyLine(m_frustumIntersectionCorners[0], m_frustumIntersectionCorners[4], true);\n                MyLine l1 = new MyLine(m_frustumIntersectionCorners[1], m_frustumIntersectionCorners[5], true);\n                MyLine l2 = new MyLine(m_frustumIntersectionCorners[2], m_frustumIntersectionCorners[6], true);\n                MyLine l3 = new MyLine(m_frustumIntersectionCorners[3], m_frustumIntersectionCorners[7], true);\n\n                var prun = ModelLod0.GetTrianglePruningStructure();\n\n                if (prun.GetIntersectionWithLine(this, ref l0).HasValue || prun.GetIntersectionWithLine(this, ref l1).HasValue\n                    || prun.GetIntersectionWithLine(this, ref l2).HasValue || prun.GetIntersectionWithLine(this, ref l3).HasValue)\n                {\n                    return true;\n                }\n            }\n\n            return false;\n        }\n\n        //  Smalles distance between camera and bounding sphere of this phys object. Result is always positive, even if camera is inside the sphere.\n        public float GetSmallestDistanceBetweenCameraAndBoundingSphere()\n        {\n            Vector3 campos = MyCamera.Position;\n            return MyUtils.GetSmallestDistanceToSphereAlwaysPositive(ref campos, ref m_worldVolume);\n        }\n\n        //  Largest distance from camera to bounding sphere of this phys object. Result is always positive, even if camera is inside the sphere.\n        //  It's actualy distance between camera and opposite side of the sphere\n        public float GetLargestDistanceBetweenCameraAndBoundingSphere()\n        {\n            Vector3 campos = MyCamera.Position;\n            return MyUtils.GetLargestDistanceToSphere(ref campos, ref m_worldVolume);\n        }\n\n        //  Distance from camera to bounding sphere of this phys object. Result is always positive, even if camera is inside the sphere.\n        public float GetDistanceBetweenCameraAndBoundingSphere()\n        {\n            Vector3 campos = MyCamera.Position;\n            return MyUtils.GetSmallestDistanceToSphereAlwaysPositive(ref campos, ref m_worldVolume);\n        }\n\n        //  Distance from camera to position of entity.\n        public float GetDistanceBetweenCameraAndPosition()\n        {\n            return Vector3.Distance(MyCamera.Position, this.GetPosition());\n        }\n\n        // When ie. Large Weapon is hit, all parts must be ignored in aoe damage\n        public virtual MyEntity GetBaseEntity()\n        {\n            return this;\n        }\n        #endregion\n\n        #region Children Methods\n\n        /// <summary>\n        /// Adds the child.\n        /// </summary>\n        /// <param name=\"child\">The child.</param>\n        /// <param name=\"preserveWorldPos\">if set to <c>true</c> [preserve absolute position].</param>\n        public void AddChild(MyEntity child, bool preserveWorldPos = false)\n        {\n            //MyEntities.Remove(child);  // if it's already in the world, remove it\n            if (preserveWorldPos)\n            {\n                var tmpWorldMatrix = child.WorldMatrix;\n\n                this.Children.Add(child);\n\n                child.WorldMatrix = tmpWorldMatrix;\n            }\n            else\n            {\n                this.Children.Add(child);\n            }\n        }\n\n        /// <summary>\n        /// Adds the child.\n        /// </summary>\n        /// <param name=\"child\">The child.</param>\n        /// <param name=\"preserveWorldPos\">if set to <c>true</c> [preserve absolute position].</param>\n        public void RemoveChild(MyEntity child, bool preserveWorldPos = false)\n        {\n            if (preserveWorldPos)\n            {\n                var tmpWorldMatrix = child.WorldMatrix;\n\n                this.Children.Remove(child);\n\n                child.WorldMatrix = tmpWorldMatrix;\n            }\n            else\n            {\n                this.Children.Remove(child);\n            }\n        }\n\n        /// <summary>\n        /// Finds the child.\n        /// </summary>\n        /// <param name=\"childName\">Name of the child.</param>\n        /// <returns></returns>\n        public MyEntity FindChild(string childName)\n        {\n            return this.Children.FirstOrDefault(entity => string.Compare(childName, entity.Name, true) == 0);\n        }\n\n        /// <summary>\n        /// Finds the child.\n        /// </summary>\n        /// <param name=\"childIndex\">Index of the child.</param>\n        /// <returns></returns>\n        public MyEntity FindChild(int childIndex)\n        {\n            var list = this.Children as IList<MyEntity>;\n\n            return list != null ? list[childIndex] : this.Children.ElementAt(childIndex);\n        }\n\n        /// <summary>\n        /// Enumerate the children.\n        /// Do not use this method in performance critical code. Makes garbadge !\n        /// </summary>\n        /// <param name=\"enumerationFlags\">The enumeration flags.</param>\n        /// <returns></returns>\n        public IEnumerable<MyEntity> EnumChildren(EnumerationFlags enumerationFlags = EnumerationFlags.None)\n        {\n            for (int i = 0; i < this.m_children.Count; i++)\n            {\n                var child = this.m_children[i];\n\n                yield return child;\n\n                if ((enumerationFlags & EnumerationFlags.Hierarchically) != 0)\n                {\n                    foreach (var subChild in child.EnumChildren(enumerationFlags))\n                    {\n                        yield return subChild;\n                    }\n                }\n            }\n        }\n\n        #endregion\n\n        #region Entity events\n\n        /// <summary>\n        /// Notifies sub dependent resources about entity change.\n        /// </summary>\n        /// <param name=\"source\">Source of change-or-null if unknown.</param>\n        private void NotifyEntityChange(object source)\n        {\n            //Like to be Obsolete\n\n            IMyNotifyEntityChanged notifier;\n\n            {\n                notifier = this.Physics;\n\n                if (notifier != null && notifier != source)\n                {\n                    notifier.OnWorldPositionChanged(source);\n                }\n            }\n\n            {\n                notifier = this;\n\n                if (notifier != source)\n                {\n                    notifier.OnWorldPositionChanged(source);\n                }\n            }\n        }\n\n        /// <summary>\n        /// Called on some contact start with this entity.\n        /// </summary>\n        /// <param name=\"contactInfo\">The contact info.</param>\n        protected virtual void OnContactStart(MyContactEventInfo contactInfo)\n        {\n            MyRender.GetRenderProfiler().StartProfilingBlock(\"MyEntity::OnContactStart\");\n\n            if (this.Physics.PlayCollisionCueEnabled)\n            {\n                MyAudio.PlayCollisionCue(contactInfo, MyMaterialsConstants.MyMaterialCollisionType.Start);\n            }\n\n            if (MyMwcFinalBuildConstants.DrawCollisionSpotsInHud)\n            {\n                MyHud.DebugClearAndAddText(contactInfo.m_ContactPoint, new StringBuilder(\"COLLISION POINT\"));\n            } \n\n            MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        /// <summary>\n        /// Called on some contact end with this entity.\n        /// </summary>\n        /// <param name=\"contactInfo\">The contact info.</param>\n        protected virtual void OnContactEnd(MyContactEventInfo contactInfo)\n        {\n            if (this.Physics.PlayCollisionCueEnabled)\n            {\n                MyAudio.PlayCollisionCue(contactInfo, MyMaterialsConstants.MyMaterialCollisionType.End);\n            }\n        }\n\n        /// <summary>\n        /// Called when [contact touches] with this entity.\n        /// </summary>\n        /// <param name=\"contactInfo\">The contact info.</param>\n        protected virtual void OnContactTouch(MyContactEventInfo contactInfo)\n        {\n            if (this.Physics.PlayCollisionCueEnabled)\n            {\n                MyAudio.PlayCollisionCue(contactInfo, MyMaterialsConstants.MyMaterialCollisionType.Touch);\n            }\n        }\n\n        /// <summary>\n        /// Called when [contact] with entity.\n        /// </summary>\n        /// <param name=\"constraint\">The constraint.</param>\n        /// <returns></returns>\n        protected virtual bool OnContact(ref MyRBSolverConstraint constraint)\n        {\n            if (OnContactEvent != null)\n            {\n                OnContactEvent(constraint.GetOtherEntity(this));\n            }\n\n            return true;\n        }\n\n        /// <summary>\n        /// Called when [deserialized].\n        /// </summary>\n        protected virtual void OnDeserialized()\n        {\n        }\n\n        /// <summary>\n        /// Called when [activated] which for entity means that was added to scene.\n        /// </summary>\n        /// <param name=\"source\">The source of activation.</param>\n        protected override void OnActivated(object source)\n        {\n            System.Diagnostics.Debug.Assert(m_activated == false, \"Object was insertes twice into the scene\");\n\n            if (!Activated)\n                return;\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"OnActivated\");\n\n            m_activated = true;\n\n            base.OnActivated(source);\n\n            if (Visible)\n            {\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"UpdateRenderobject\");\n                UpdateRenderObject(true);                \n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n            }\n\n            if (this.Physics != null && !this.Physics.Enabled)\n            {\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Physics.Enabled\");\n                this.Physics.Enabled = true;\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Enabled\");\n            //TODO: Must be set another way\n            //Enabled = true;\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            UpdateHudMarker();\n\n            //Visible = true;\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"AddToGamePruningStructure\");\n            AddToGamePruningStructure();\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        /// <summary>\n        /// Called when [deactivated] which for entity means that was removed from scene.\n        /// </summary>\n        /// <param name=\"source\">The source of deactivation.</param>\n        protected override void OnDeactivated(object source)\n        {\n            //System.Diagnostics.Debug.Assert(m_activated == true);\n            m_activated = false;            \n\n            if (this.Physics != null && this.Physics.Enabled)\n            {\n                this.Physics.Enabled = false;\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Enabled\");\n            //TODO: Must be set another way\n            //Enabled = false;\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            MyHud.RemoveText(this);\n\n            UpdateRenderObject(false);\n\n            //Visible = false;\n\n            RemoveFromGamePruningStructure();\n\n            base.OnDeactivated(source);\n        }\n\n        public override void NotifyActivated(object source)\n        {\n            if (Activated)\n            {\n                base.NotifyActivated(source);\n            }\n            else \n            {\n                NotifyDeactivated(source);\n            }\n        }\n\n        public override void NotifyDeactivated(object source)\n        {\n            base.NotifyDeactivated(source);\n        }\n\n        public event EventHandler OnPositionChanged;\n\n        /// <summary>\n        /// This event may not be invoked at all, when calling MyEntities.CloseAll, marking is bypassed\n        /// </summary>\n        public event Action<MyEntity> OnMarkForClose;\n        public event Action<MyEntity> OnClose;\n        public event Action<MyEntity> OnClosing;\n        public event Action<MyEntity> OnContactEvent;\n\n        /// <summary>\n        /// Arguments: Killed entity, Killer\n        /// </summary>\n        public event DieHandler OnDie;\n\n        #endregion\n\n        #region Notification Methods\n\n        /// <summary>\n        /// Rise the OnContactStart event.\n        /// </summary>\n        /// <param name=\"contactInfo\">The contact info.</param>\n        internal void NotifyContactStart(MyContactEventInfo contactInfo)\n        {\n            OnContactStart(contactInfo);\n        }\n\n        /// <summary>\n        /// Rise the OnContactsEnd event.\n        /// </summary>\n        /// <param name=\"contactInfo\">The contact info.</param>\n        internal void NotifyContactEnd(MyContactEventInfo contactInfo)\n        {\n            OnContactEnd(contactInfo);\n        }\n\n        /// <summary>\n        /// Rise the OnContactTouche event.\n        /// </summary>\n        /// <param name=\"contactInfo\">The contact info.</param>\n        internal void NotifyContactTouch(MyContactEventInfo contactInfo)\n        {\n            OnContactTouch(contactInfo);\n        }\n\n        /// <summary>\n        /// Rise the OnContact event.\n        /// </summary>\n        /// <param name=\"constraint\">The constraint.</param>\n        /// <returns></returns>\n        internal bool NotifyContact(ref MyRBSolverConstraint constraint)\n        {\n            return OnContact(ref constraint);\n        }\n\n        /// <summary>\n        /// Notifies entity that the chidren collection has changed.\n        /// </summary>\n        /// <param name=\"sender\">The sender.</param>\n        /// <param name=\"e\">The <see cref=\"System.Collections.Specialized.NotifyCollectionChangedEventArgs\"/> instance containing the event data.</param>\n        private void NotifyChidrenCollectionChanged(object sender, NotifyCollectionChangedEventArgs e)\n        {\n            switch (e.Action)\n            {\n                case NotifyCollectionChangedAction.Add:\n                    foreach (var changedItem in e.NewItems.Cast<MyEntity>())\n                    {\n                        changedItem.Parent = this;\n                        if (m_activated && !changedItem.m_activated)\n                            changedItem.NotifyActivated(sender);\n                        changedItem.UpdateWorldMatrix(ref this.m_worldMatrix);\n                    }\n                    break;\n                case NotifyCollectionChangedAction.Remove:\n                    {\n                        // TODO: Simplify\n                        if (e.OldItems == this.Children)\n                        {\n                            for (int i = 0; i < this.m_children.Count; i++)\n                            {\n                                this.m_children[i].Parent = null;\n                                this.m_children[i].UpdateWorldMatrix();\n\n                                if (m_activated)\n                                    this.m_children[i].NotifyDeactivated(sender);\n                            }\n                        }\n                        else\n                        {\n                            foreach (var changedItem in e.OldItems)\n                            {\n                                var changedEntity = (MyEntity)changedItem;\n\n                                changedEntity.Parent = null;\n                                //changedEntity.UpdateWorldMatrix();\n\n                                if (m_activated)\n                                    changedEntity.NotifyDeactivated(sender);\n                            }\n                        }\n\n                        break;\n                    }\n            }\n        }\n\n        /// <summary>\n        /// Notifies that entity was added to scene (activated)\n        /// </summary>\n        /// <param name=\"source\"></param>\n        internal void NotifyAddedToScene(object source)\n        {\n            if (Activated)\n            {\n                NotifyActivated(source);\n            }\n            else\n            {\n                NotifyDeactivated(source);\n            }\n        }\n\n        /// <summary>\n        /// Notifies that entity was removed from scene (deactivated)\n        /// </summary>\n        /// <param name=\"source\"></param>\n        internal void NotifyRemovedFromScene(object source)\n        {\n            NotifyDeactivated(source);\n        }\n\n        #endregion\n\n        #region Gameplay methods & properties\n\n        public bool IsExploded()\n        {\n            return m_isExploded;\n        }\n\n        public virtual void RepairToMax()\n        {\n            //Health = MaxHealth;\n            HealthRatio = MyGameplayConstants.HEALTH_RATIO_MAX;\n        }\n\n        public virtual float Health\n        {\n            get \n            {\n                return MaxHealth * HealthRatio;\n            }\n            set \n            {\n                if (MaxHealth != 0f)\n                {\n                    HealthRatio = value / MaxHealth;\n                }\n                else\n                {\n                    HealthRatio = 0f;\n                }\n            }\n        }\n\n        public float MaxHealth\n        {            \n            get \n            {\n                if (m_maxHealth != null)\n                {\n                    return m_maxHealth.Value;\n                }\n                else \n                {                    \n                    return m_gameplayProperties.MaxHealth;                     \n                }\n            }\n            set \n            {\n                Debug.Assert(value > 0f);\n                Debug.Assert(!float.IsNaN(value));\n                Debug.Assert(!float.IsInfinity(value));\n                if (m_gameplayProperties.MaxHealth == value)\n                {\n                    m_maxHealth = null;\n                }\n                else\n                {\n                    m_maxHealth = value;\n                }\n            }\n        }\n\n        /// <summary>\n        /// Get max health field, use only when you want to save this value to objectbuilder\n        /// </summary>\n        /// <returns></returns>\n        public float? GetMaxHealth() \n        {\n            return m_maxHealth;\n        }\n        /// <summary>\n        /// Set max health field, use only when you want to load this value from objectbuilder\n        /// </summary>\n        /// <param name=\"maxHealth\"></param>\n        protected void SetMaxHealth(float? maxHealth) \n        {\n            if (maxHealth != null) \n            {\n                Debug.Assert(maxHealth.Value > 0f);\n                Debug.Assert(!float.IsInfinity(maxHealth.Value));\n                Debug.Assert(!float.IsNaN(maxHealth.Value));\n            }\n            m_maxHealth = maxHealth;\n        }\n\n        public float HealthRatio \n        {\n            get \n            {\n                Debug.Assert(m_healthRatio >= MyGameplayConstants.HEALTH_RATIO_DEATH);\n                Debug.Assert(m_healthRatio <= MyGameplayConstants.HEALTH_RATIO_MAX);\n                m_healthRatio = MathHelper.Clamp(m_healthRatio, MyGameplayConstants.HEALTH_RATIO_DEATH, MyGameplayConstants.HEALTH_RATIO_MAX);\n                return m_healthRatio;\n            }\n            set \n            {\n                //Debug.Assert(value >= MyGameplayConstants.HEALTH_RATIO_DEATH);\n                //Debug.Assert(value <= MyGameplayConstants.HEALTH_RATIO_MAX);\n                m_healthRatio = MathHelper.Clamp(value, MyGameplayConstants.HEALTH_RATIO_DEATH, MyGameplayConstants.HEALTH_RATIO_MAX);                \n            }\n        }\n        \n        public bool IsDestructible\n        {\n            get \n            { \n                return (PersistentFlags & MyPersistentEntityFlags.Destructible) != 0; \n            }\n            set \n            {\n                if (value)\n                {\n                    PersistentFlags |= MyPersistentEntityFlags.Destructible;\n                }\n                else\n                {\n                    PersistentFlags &= (~MyPersistentEntityFlags.Destructible);\n                }\n            }\n        }\n\n\n        protected virtual void DoDamageInternal(float playerDamage, float damage, float empDamage, MyDamageType damageType, MyAmmoType ammoType, MyEntity damageSource, bool justDeactivate)\n        {\n            if (damageSource == MySession.PlayerShip && (damageSource != this && MinerWars.AppCode.Game.World.Global.MyFactions.GetFactionsRelation(damageSource, this) == MinerWars.AppCode.Game.World.Global.MyFactionRelationEnum.Enemy))\n            {\n                playerDamage *= MyGameplayConstants.GameplayDifficultyProfile.DamageFromPlayerToEnemyMultiplicator;\n                damage *= MyGameplayConstants.GameplayDifficultyProfile.DamageFromPlayerToEnemyMultiplicator;\n                empDamage *= MyGameplayConstants.GameplayDifficultyProfile.DamageFromPlayerToEnemyMultiplicator;\n            }\n\n            Health = MathHelper.Clamp(Health - damage, 0, MaxHealth);\n\n            TestDeath(damageSource);\n\n        }\n\n        ///<summary>\n        ///Does domage to entity\n        ///</summary>\n        ///<param name=\"deltaHealth\">Amount of damage</param>\n        public void DoDamage(float playerDamage, float damage, float empDamage, MyDamageType damageType, MyAmmoType ammoType, MyEntity damageSource, bool justDeactivate = false)\n        {\n            Debug.Assert(!Closed, \"Cannot do damage, entity is closed\");\n\n#if GPU_PROFILING\n            if (this == MySession.PlayerShip)\n                return; //We dont want die anymore while profiling!\n#endif\n            if (!IsDestructible || IsDummy) // Dummy entities are driven by host\n            {\n                return;\n            }\n\n            DoDamageInternal(playerDamage, damage, empDamage, damageType, ammoType, damageSource, justDeactivate);\n\n            if (MyMultiplayerGameplay.IsRunning)\n            {\n                MyMultiplayerGameplay.Static.DoDamage(this, playerDamage, damage, empDamage, damageType, ammoType, damageSource, HealthRatio);\n            }\n        }\n\n        private void TestDeath(MyEntity damageSource)\n        {\n            bool isDead = IsDead();\n            if (!isDead && damageSource != null)\n            {\n                MyScriptWrapper.EntityAtacked(damageSource, this);\n            }\n\n            if (!m_wasDead && isDead)\n            {\n                MyScriptWrapper.OnEntityDeath(this, damageSource);\n                RaiseOnDie(damageSource);\n            }\n            m_wasDead = isDead;\n        }\n\n        void RaiseOnDie(MyEntity killer)\n        {\n            var handler = OnDie;\n            if (handler != null)\n            {\n                handler(this, killer);\n            }\n        }\n\n        /// <summary>\n        /// Decreases health of this entity to 0, if it is destructible.\n        /// </summary>\n        public virtual void Kill(MyEntity killer)\n        {\n            if (!IsDestructible)\n            {\n                if (this is MyStaticAsteroid)\n                {\n                    MyHudNotification.AddNotification(new MyHudNotification.MyNotification(Localization.MyTextsWrapperEnum.IndestructibleAsteroidNotification, 2000, null));\n                }\n                return;\n            }\n\n            Health = 0;\n\n            TestDeath(killer);\n        }\n\n        /// <summary>\n        /// Gets how much is entity damaged\n        /// </summary>\n        /// <returns></returns>\n        public float GetDamageRatio()\n        {\n            return IsDestructible ? 1f - (HealthRatio) : 0.0f;\n        }\n\n        /// <summary>\n        /// Indicates if prefab is damaged\n        /// </summary>\n        public bool IsDamaged()\n        {\n            return IsDestructible ? HealthRatio < MyGameplayConstants.HEALTH_RATIO_MAX : false;\n        }\n\n        /// <summary>\n        /// Adds health to entity\n        /// </summary>\n        /// <param name=\"deltaHealth\"></param>\n        public virtual void AddHealth(float deltaHealth)\n        {\n            Health = Health + deltaHealth;\n        }\n\n        /// <summary>\n        /// Indicates if entity is dead\n        /// </summary>\n        public virtual bool IsDead()\n        {\n            return IsDestructible ? HealthRatio <= MyGameplayConstants.HEALTH_RATIO_DEATH : false;\n        }\n\n        /// <summary>\n        /// Sets entity name\n        /// </summary>\n        /// <param name=\"name\">Name</param>\n        public void SetName(string name)\n        {\n            Name = name;\n            MyEntities.SetEntityName(this);\n        }\n\n        public virtual Vector3 GetHUDMarkerPosition()\n        {\n            return WorldVolume.Center;\n        }\n\n        public virtual float GetHUDDamageRatio() \n        {\n            return GetDamageRatio();\n        }\n\n        public void GetChildrenRecursive(HashSet<MyEntity> result)\n        {\n            for (int i = 0; i < Children.Count; i++)\n            {\n                var entity = Children[i];\n                result.Add(entity);\n                entity.GetChildrenRecursive(result);\n            }\n        }\n\n        public virtual Vector3 GetFormationPosition(MySmallShipBot bot)\n        {\n            Vector3 centerToBot = bot.GetPosition() - WorldVolume.Center;\n            Vector3 centerToBotNormalized = Vector3.Normalize(centerToBot);\n            \n            return WorldVolume.Center + centerToBotNormalized * (WorldVolume.Radius + MyAIConstants.FORMATION_SPACING);\n        }\n        #endregion\n\n        #region Implementation of IMyNotifyEntityChanged\n\n        // Because for now entity = script resource entity also implements this interface for inheritors.\n\n        /// <summary>\n        /// Called when [world position changed].\n        /// </summary>\n        /// <param name=\"source\">The source object that caused this event.</param>\n        public virtual void OnWorldPositionChanged(object source)\n        {\n            Debug.Assert(source != this, \"Recursion detected!\");\n\n            UpdateWorldVolume();\n\n            UpdateGamePruningStructure();\n\n            if (OnPositionChanged != null)\n            {\n                OnPositionChanged(this, EventArgs.Empty);\n            }\n        }\n\n        #endregion\n\n        #region Implementation of INotifyMemberChanged\n\n        /// <summary>\n        /// Called when [member changed].\n        /// </summary>\n        /// <param name=\"memberInfo\">The member info.</param>\n        public void OnMemberChanged(MemberInfo memberInfo)\n        {\n            {\n                UpdateWorldMatrix(null);\n            }\n        }\n\n        #endregion\n\n        #region Drawing, objectbuilder, init & close\n\n        protected void Init(StringBuilder displayName, MyMwcObjectBuilder_Base objectBuilder)\n        {\n            Closed = false;\n            m_wasDead = false;\n            m_isExploded = false;\n\n            // System.Diagnostics.Debug.Assert(objectBuilder != null);\n\n            if (objectBuilder != null)\n            {\n                this.EntityId = MyEntityIdentifier.FromNullableInt(objectBuilder.EntityId);\n                this.m_objectBuilder = objectBuilder.Clone(); // MyMwcUtils.DeepCopy(objectBuilder);\n                m_gameplayProperties = MyGameplayConstants.GetGameplayProperties(objectBuilder, Faction);\n\n                Debug.Assert(m_gameplayProperties != null);\n                if (m_gameplayProperties != null)\n                {\n                    MaxHealth = m_gameplayProperties.MaxHealth;\n                    Health = m_gameplayProperties.MaxHealth;\n                }\n\n                PersistentFlags = objectBuilder.PersistentFlags;\n\n                this.Name = objectBuilder.Name;\n                MyEntities.SetEntityName(this, false);\n\n                IsGenerated = objectBuilder.Generated;\n\n                if (IsGenerated)\n                {\n                    Flags &= ~EntityFlags.NeedsId;\n                    Flags &= ~EntityFlags.Save;\n                }\n            }\n            else\n            {\n                PersistentFlags |= MyMwcObjectBuilder_Base.GetDefaultPersistantFlags();\n            }\n\n            InitRenderObjects();\n\n            // When entity needs id and has id, add it to list\n            if ((Flags & EntityFlags.NeedsId) != 0)\n            {\n                // When suspended, id is allocated during link\n                if (!this.EntityId.HasValue && MyEntityIdentifier.AllocationSuspended == false)\n                {\n                    this.EntityId = MyEntityIdentifier.AllocateId();\n                }\n\n                if (this.EntityId.HasValue)\n                {\n                    MyEntityIdentifier.AddEntityWithId(this);\n                }\n            }\n            else\n            {\n                this.EntityId = null;\n            }\n\n            this.DisplayName = displayName != null ? displayName.ToString() : null;\n\n            UpdateHudMarker();\n\n            m_worldMatrix = Matrix.Identity;\n            //DebugGenerateEntityDisplayName();\n            if (!MyFakes.MWBUILDER)\n            {\n                Debug.Assert(IsActivatedForDifficulty(MyGameplayDifficultyEnum.EASY) || IsActivatedForDifficulty(MyGameplayDifficultyEnum.NORMAL) || IsActivatedForDifficulty(MyGameplayDifficultyEnum.HARD));\n            }\n        }\n\n        public virtual void UpdateHudMarker(bool enableReset = false) \n        {\n            if (DisplayOnHud)\n            {\n                // we want set hud marker only when entity has no HUD marker (because sometimes we set hud, before activating or activating is buffered etc)\n                if (enableReset || !MyHud.ContainsEntity(this))\n                {\n                    SetHudMarker();\n                }\n            }\n            else \n            {\n                MyHud.RemoveText(this);\n            }\n        }\n\n        protected virtual void SetHudMarker()\n        {\n            if (!string.IsNullOrEmpty(this.DisplayName) && this.DisplayName != this.GetType().Name)\n            {\n                var flags = MyHud.DEFAULT_FLAGS;\n                if(ShowOnHudOnlyWhenDetected)\n                {\n                    flags |= MyHudIndicatorFlagsEnum.SHOW_ONLY_IF_DETECTED_BY_RADAR;\n                }\n\n                MyHud.ChangeText(this, new StringBuilder(this.DisplayName), null, 0, flags);\n            }\n        }\n\n        //  This is real initialization of this class!!! Instead of constructor.\n        protected void Init(StringBuilder hudLabelText, MyMwcObjectBuilder_Base objectBuilder, MyEntity parentObject)\n        {\n            Init(hudLabelText, objectBuilder);\n\n            if (parentObject != null)\n            {\n                parentObject.Children.Add(this);\n            }\n\n            MaterialIndex = 0;\n        }\n\n        //  This is real initialization of this class!!! Instead of constructor.\n        public virtual void Init(StringBuilder displayName, MyModelsEnum? modelLod0Enum, MyModelsEnum? modelLod1Enum,\n                                 MyEntity parentObject, float? scale, MyMwcObjectBuilder_Base objectBuilder, MyModelsEnum? modelCollision = null, MyModelsEnum? modelLod2Enum = null)\n        {\n            Init(displayName, objectBuilder);\n\n            if (modelLod0Enum != null)\n            {\n                m_modelLod0 = MyModels.GetModelOnlyData(modelLod0Enum.Value);\n                LocalVolumeOffset = m_modelLod0.BoundingSphere.Center;\n            }\n            if (modelLod1Enum != null)\n                m_modelLod1 = MyModels.GetModelOnlyData(modelLod1Enum.Value);\n            if (modelCollision != null)\n                m_modelCollision = MyModels.GetModelOnlyData(modelCollision.Value);\n            if (modelLod2Enum != null)\n                m_modelLod2 = MyModels.GetModelOnlyData(modelLod2Enum.Value);\n\n            if (m_modelLod0 != null)\n            {\n                if (m_modelLod1 != null)\n                {\n                    BoundingBox modelLod1Box = m_modelLod1.BoundingBox;\n                    LocalAABB = m_modelLod0.BoundingBox.Include(ref modelLod1Box);\n                }\n                else\n                {\n                    this.LocalAABB = m_modelLod0.BoundingBox;\n                }\n            }\n            else\n            {   //entities without model has box with side length = 1 by default\n                float defaultBoxHalfSize = 0.5f;\n                this.LocalAABB = new BoundingBox(new Vector3(-defaultBoxHalfSize), new Vector3(defaultBoxHalfSize));\n            }\n\n            if (parentObject != null)\n            {\n                parentObject.Children.Add(this);\n            }\n\n            this.Scale = scale;\n        }\n\n        /// <summary>\n        /// Every object must have this method, but not every phys object must necessarily have something to cleanup\n        /// <remarks>\n        /// </remarks>\n        /// </summary>\n        public virtual void Close()\n        {\n            //Debug.Assert(MyMinerGame.IsMainThread(), \"Entity.Close() called not from Main Thread!\");\n            Debug.Assert(MyEntities.UpdateInProgress == false, \"Do not close entities directly in Update*, use MarkForClose() instead\");\n            Debug.Assert(MyEntities.CloseAllowed == true, \"Use MarkForClose()\");\n            Debug.Assert(!Closed, \"Close() called twice!\");\n\n            OnPositionChanged = null;\n\n            MyScriptWrapper.OnEntityClosing(this);\n            CallAndClearOnClosing();\n\n            MyEditor.Static.RemoveFromObjectGroups(this);            \n            MyDecals.RemoveModelDecals(this);            \n            MyEntities.RemoveName(this);\n            MyEntities.RemoveFromClosedEntities(this);\n            \n            if (Physics != null && Physics.Enabled)\n            {\n                Physics.Enabled = false;\n                Physics.RemoveAllElements();\n                Physics.Close();\n                Physics = null;\n            }\n\n            if (Parent == null) //only root objects are in entities list\n                MyEntities.Remove(this);\n            else\n            {\n                Parent.Children.Remove(this);  \n                /* //TODO: Povolit az budou vyhozeny storkoviny (Observable collection a \n                //Test for last item to faster removal\n                if (Parent.Children[Parent.Children.Count - 1] == this)\n                    Parent.Children.RemoveAt(Parent.Children.Count - 1);\n                else\n                    Parent.Children.Remove(this);  \n                 */\n\n                if (NeedsUpdate)\n                    MyEntities.UnregisterForUpdate(this);\n\n                NotifyRemovedFromScene(null);\n                MyEntities.RaiseEntityRemove(this);\n            }\n\n            //Children has to be cleared after close notification is send\n            while (this.Children.Count > 0)\n            {\n                MyEntity entToRemove = this.m_children[this.m_children.Count - 1];\n                //TODO: Cannot uncomment because of storkoviny. Start new story and kill yourself. Then reload.\n                //Debug.Assert(entToRemove.Parent != null, \"Entity has no parent but is part of children collection\");\n                \n                entToRemove.Close();\n                // TODO: Cannot remove because of storkoviny!\n                this.Children.Remove(entToRemove);\n            }\n\n            if (this.EntityId.HasValue)\n            {\n                MyEntityIdentifier.RemoveEntity(this.EntityId.Value);\n            }\n\n            this.EntityId = null;\n            Debug.Assert(this.Children.Count == 0);\n\n            MyScriptWrapper.OnEntityClose(this);\n            CallAndClearOnClose();\n\n            Closed = true;\n            Debug.Assert(!MyEntities.m_entitiesForUpdate.Contains(this));\n        }\n\n        /// <summary>\n        /// This method marks this entity for close which means, that Close\n        /// will be called after all entities are updated\n        /// </summary>\n        public virtual void MarkForClose()\n        {\n            // Needs update = false, added, because entities was updated once before closed\n            NeedsUpdate = false;\n            MyEntities.MarkForClose(this);\n            if (OnMarkForClose != null)\n            {\n                OnMarkForClose(this);\n            }\n        }\n\n        protected void CallAndClearOnClose()\n        {\n            if (OnClose != null)\n                OnClose(this);\n\n            OnClose = null;\n        }\n\n        protected void CallAndClearOnClosing() \n        {\n            if (OnClosing != null)\n                OnClosing(this);\n\n            OnClosing = null;\n        }\n\n        /// <summary>\n        /// Gets proper object builder and assigns other base properties (EntityId etc.) from MyEntity class\n        /// </summary>\n        /// <param name=\"getCopy\">\n        /// Exact copy - entity will have same EntityID\n        /// Value indication whether get exact copy of object or just the same object with different id.\n        /// Set to true for example when saving object to database.\n        /// </param>\n        /// <returns></returns>\n        public MyMwcObjectBuilder_Base GetObjectBuilder(bool getExactCopy)\n        {\n            var result = GetObjectBuilderInternal(getExactCopy);\n            if (result != null)\n            {\n                if (getExactCopy && this.EntityId.HasValue)\n                {\n                    result.EntityId = this.EntityId.Value.NumericValue;\n                    result.Name = this.Name;\n                }\n                else\n                {\n                    result.EntityId = null;\n                    result.Name = null;\n                }\n\n                result.PersistentFlags = PersistentFlags;\n            }\n\n            return result;\n        }\n\n        /// <summary>\n        /// Returns whether object builder is not null.\n        /// </summary>\n        /// <returns></returns>\n        public bool HasObjectBuilder()\n        {\n            return m_objectBuilder != null;\n        }\n\n        /// <summary>\n        /// Gets object builder from object.\n        /// </summary>\n        /// <returns></returns>\n        protected virtual MyMwcObjectBuilder_Base GetObjectBuilderInternal(bool getExactCopy)\n        {\n            if (m_objectBuilder is MyMwcObjectBuilder_Object3dBase)\n            {\n                var builder = m_objectBuilder as MyMwcObjectBuilder_Object3dBase;\n                builder.PositionAndOrientation.Position = this.GetPosition();\n                builder.PositionAndOrientation.Up = this.GetOrientation().Up;\n                builder.PositionAndOrientation.Forward = this.GetOrientation().Forward;\n\n                //return m_objectBuilder;\n            }\n\n            if (m_objectBuilder != null)\n            {\n                m_objectBuilder.Name = Name;\n            }\n\n            return m_objectBuilder;\n        }\n\n        /// <summary>\n        /// Called before method GetObjectBuilder, when saving sector\n        /// </summary>\n        public virtual void BeforeSave()\n        {\n\n        }\n\n        #region Body Methods\n        protected void InitSpherePhysics(MyMaterialType materialType, Vector3 sphereCenter, float sphereRadius, float mass, float angularDamping, ushort collisionLayer, RigidBodyFlag rbFlag)\n        {\n            UseKinematicPhysics = (rbFlag & RigidBodyFlag.RBF_KINEMATIC) != 0;\n\n            MyPhysicsObjects physobj = MyPhysics.physicsSystem.GetPhysicsObjects();\n            MyRBSphereElementDesc sphereDesc = physobj.GetRBSphereElementDesc();\n            sphereDesc.SetToDefault();\n            sphereDesc.m_RBMaterial = MyMaterialsConstants.GetMaterialProperties(materialType).PhysicsMaterial;\n            sphereDesc.m_Radius = sphereRadius;\n            sphereDesc.m_Matrix.Translation = sphereCenter;\n            sphereDesc.m_CollisionLayer = collisionLayer;\n\n            MyRBSphereElement sphereEl = (MyRBSphereElement)physobj.CreateRBElement(sphereDesc);\n            System.Diagnostics.Debug.Assert(sphereEl != null);\n            if (sphereEl != null)\n            {\n                System.Diagnostics.Debug.Assert(Physics == null || !Physics.Enabled);\n                // Remove object from physics\n                if (Physics != null && Physics.Enabled)\n                {\n                    Physics.Enabled = false;\n                    Physics.RemoveAllElements();\n                    Physics.Close();\n                    Physics = null;\n                }\n                \n                this.Physics = new MinerWars.AppCode.Game.Physics.MyPhysicsBody(this, mass, rbFlag)\n                {\n                    MaterialType = materialType,\n                    AngularDamping = angularDamping\n                };                \n\n                this.Physics.AddElement(sphereEl, true);\n            }\n        }\n\n        public void InitSpherePhysics(MyMaterialType materialType, MyModel model, float mass, float angularDamping, ushort collisionLayer, RigidBodyFlag rbFlag)\n        {\n            Debug.Assert(model != null);\n            InitSpherePhysics(materialType, model.BoundingSphere.Center, model.BoundingSphere.Radius, mass, angularDamping, collisionLayer, rbFlag);\n        }\n\n        public void InitTrianglePhysics(MyMaterialType materialType, float mass, MyModel modelCollision, MyModel modelLOD0, ushort? collisionLayer = null, bool enable = true)\n        {\n            MyPhysicsObjects physobj = MyPhysics.physicsSystem.GetPhysicsObjects();\n            MyRBTriangleMeshElementDesc trianglemeshDesc = physobj.GetRBTriangleMeshElementDesc();\n            trianglemeshDesc.SetToDefault();\n\n\t\t\tif (modelCollision != null)\n\t\t\t{\n            \ttrianglemeshDesc.Model = modelCollision;\n\t\t\t}\n            if (modelLOD0 != null) \n            {\n                trianglemeshDesc.ModelLOD0 = modelLOD0;\n            }\n\n            trianglemeshDesc.m_RBMaterial = MyMaterialsConstants.GetMaterialProperties(materialType).PhysicsMaterial;\n            if (collisionLayer != null)\n            {\n                trianglemeshDesc.m_CollisionLayer = collisionLayer.Value;\n            }\n\n            //trianglemeshDesc.m_Matrix.Translation = ModelLod0.BoundingSphere.Center;\n        \n            MyRBTriangleMeshElement trEl = (MyRBTriangleMeshElement)physobj.CreateRBElement(trianglemeshDesc);\n            System.Diagnostics.Debug.Assert(trEl != null);\n\n            // Base rigid body is used to hold static prefabs\n            this.Physics = new MyPhysicsBody(this, mass, RigidBodyFlag.RBF_RBO_STATIC) { MaterialType = materialType };\n\n            if (collisionLayer != null)\n            {\n                this.Physics.CollisionLayer = collisionLayer.Value;\n            }\n\n            if (enable && Activated)\n            {\n                this.Physics.Enabled = true;\n            }\n\n            this.Physics.AddElement(trEl, true);\n        }\n\n        public void InitBoxPhysics(MyMaterialType materialType, Vector3 center, Vector3 size, float mass, float angularDamping, ushort collisionLayer, RigidBodyFlag rbFlag)\n        {\n            UseKinematicPhysics = (rbFlag & RigidBodyFlag.RBF_KINEMATIC) != 0;\n\n            MyPhysicsObjects physobj = MyPhysics.physicsSystem.GetPhysicsObjects();\n\n            MyRBBoxElementDesc boxDesc = physobj.GetRBBoxElementDesc();\n            boxDesc.SetToDefault();\n            boxDesc.m_RBMaterial = MyMaterialsConstants.GetMaterialProperties(materialType).PhysicsMaterial;\n            boxDesc.m_Size = size;\n            boxDesc.m_Matrix.Translation = center;\n            boxDesc.m_CollisionLayer = collisionLayer;\n\n            MyRBBoxElement boxEl = (MyRBBoxElement)physobj.CreateRBElement(boxDesc);\n            System.Diagnostics.Debug.Assert(boxEl != null);\n            if (boxEl != null)\n            {\n                //System.Diagnostics.Debug.Assert(Physics == null || !Physics.Enabled);\n                // Remove object from physics\n                if (Physics != null && Physics.Enabled)\n                {                    \n                    Physics.Enabled = false;\n                    Physics.RemoveAllElements();\n                    Physics.Close();\n                    Physics = null;\n                }\n\n                // Create new physics\n                this.Physics = new MinerWars.AppCode.Game.Physics.MyPhysicsBody(this, mass, rbFlag)\n                {\n                    MaterialType = materialType,\n                    AngularDamping = angularDamping\n                };                \n\n                this.Physics.AddElement(boxEl, true);\n            }\n        }\n\n        public void InitBoxPhysics(MyMaterialType materialType, MyModel model, float mass, float angularDamping, ushort collisionLayer, RigidBodyFlag rbFlag)\n        {\n            Debug.Assert(model != null);\n            var center = model.BoundingBox.GetCenter();\n            var size = model.BoundingBoxSize;\n            InitBoxPhysics(materialType, center, size, mass, angularDamping, collisionLayer, rbFlag);\n        }\n\n        #endregion\n\n        /// <summary>\n        /// SetSelectedColor\n        /// </summary>\n        /// <param name=\"vctColor\"></param>\n        public virtual void HighlightEntity(ref Vector3 vctColor)\n        {\n            m_selectionHighlightColor = vctColor;\n            this.SetHighlightColor(m_selectionHighlightColor + m_collisionHighlightColor);\n\n            if (IsSelectableParentOnly() == false)\n            {\n                for (int i = 0; i < this.m_children.Count; i++)\n                {\n                    this.m_children[i].HighlightEntity(ref vctColor);\n                }\n            }\n        }\n\n        public void ChangeHUDDisplayStatus(MyGuitargetMode targetMode, float distance, MyHudIndicatorFlagsEnum indicatorFlags)\n        {\n            MyHud.ChangeText(this, new StringBuilder(this.DisplayName), targetMode, distance, indicatorFlags);\n        }\n\n        public virtual void DrawMouseOver(ref Vector3 highlightColor)\n        {\n            BoundingBox aabb = WorldAABB;\n            Matrix mat = Matrix.Identity;\n            MySimpleObjectDraw.DrawWireFramedBox(ref mat, ref aabb, ref m_mouseOverColorWire, 0.01f, 1);\n\n            this.HighlightEntity(ref highlightColor);\n        }\n\n        /// <summary>\n        /// Clearhighlightning\n        /// </summary>\n        public virtual void ClearHighlightning()\n        {\n            m_selectionHighlightColor = Vector3.Zero;\n            this.SetHighlightColor(m_selectionHighlightColor + m_collisionHighlightColor);\n\n            if (IsSelectableParentOnly() == false)\n            {\n                for (int i = 0; i < this.m_children.Count; i++)\n                {\n                    this.m_children[i].ClearHighlightning();\n                }\n            }\n        }\n\n        /// <summary>\n        /// SetCollisionHighlighting\n        /// </summary>\n        public virtual void SetCollisionHighlighting(ref Vector3 vctColor)\n        {\n\n            m_collisionHighlightColor = vctColor;\n            this.SetHighlightColor(m_selectionHighlightColor + m_collisionHighlightColor);\n\n        }\n\n        /// <summary>\n        /// IsSelectable\n        /// </summary>\n        /// <returns></returns>\n        public virtual bool IsSelectable()\n        {\n            return MyEntities.IsSelectable(this);\n        }\n\n        /// <summary>\n        /// When selecting children component(this), ask weather it can be selected separately\n        /// without selecting and highlighting its parent\n        /// </summary>\n        /// <returns></returns>\n        public virtual bool IsSelectableAsChild()\n        {\n            return false;\n        }\n\n        /// <summary>\n        /// When selected parent component(this), ask weather its children components will be\n        /// selected and highlighted too\n        /// </summary>\n        /// <returns></returns>\n        public virtual bool IsSelectableParentOnly()\n        {\n            return false;\n        }\n\n        /// <summary>\n        /// Return default max health from gaemplay constants\n        /// </summary>\n        /// <returns></returns>\n        public float GetDefaultMaxHealth()\n        {\n            return m_gameplayProperties.MaxHealth;\n        }\n\n        public void DumpErrorModels()\n        {\n            float allowedMaxRatio = 0.25f;\n            int allowedMinimum = 50;\n\n            Vector3 wrongModelColor = new Vector3(1, 0, 0);\n\n            //Check on invalid models\n            if (m_modelLod1 != null && m_modelLod0 != null)\n            {\n                if (m_modelLod1.GetTrianglesCount() > m_modelLod0.GetTrianglesCount() * allowedMaxRatio)\n                {\n                    MyMwcLog.WriteLine(\"ERROR: Improper LOD1 model in the game: \" + m_modelLod1.AssetName + \" (too many triangles[\" + m_modelLod1.GetTrianglesCount().ToString() + \"/\" + m_modelLod0.GetTrianglesCount().ToString() + \"])\");\n                    m_modelLod1 = null;\n                    if (MyFakes.HIGHLIGHT_WRONG_MODELS)\n                        HighlightEntity(ref wrongModelColor);\n                }\n            }\n            //Check on invalid models\n            if (m_modelLod2 != null && m_modelLod0 != null)\n            {\n                if (m_modelLod2.GetTrianglesCount() > m_modelLod0.GetTrianglesCount() * allowedMaxRatio)\n                {\n                    MyMwcLog.WriteLine(\"ERROR: Improper LOD2 model in the game: \" + m_modelLod2.AssetName + \" (too many triangles[\" + m_modelLod2.GetTrianglesCount().ToString() + \"/\" + m_modelLod0.GetTrianglesCount().ToString() + \"])\");\n                    m_modelLod2 = null;\n                    if (MyFakes.HIGHLIGHT_WRONG_MODELS)\n                        HighlightEntity(ref wrongModelColor);\n                }\n            }\n\n            bool hasTriangleCollision = false;\n            if (Physics != null && Physics.RigidBody != null)\n            {\n                foreach (MyRBElement rbe in Physics.RigidBody.GetRBElementList())\n                {\n                    if (rbe is MyRBTriangleMeshElement)\n                    {\n                        hasTriangleCollision = true;\n                        break;\n                    }\n                }\n            }\n\n            if (hasTriangleCollision)\n            {\n                //Check on invalid models\n                if (m_modelCollision != null && m_modelLod0 != null)\n                {\n                    if ((m_modelCollision.GetTrianglesCount() > m_modelLod0.GetTrianglesCount() * allowedMaxRatio) && (m_modelCollision.GetTrianglesCount() > allowedMinimum))\n                    {\n                        MyMwcLog.WriteLine(\"ERROR: Improper COL model in the game: \" + m_modelCollision.AssetName + \" (too many triangles[\" + m_modelCollision.GetTrianglesCount().ToString() + \"/\" + m_modelLod0.GetTrianglesCount().ToString() + \"])\");\n                        if (MyFakes.HIGHLIGHT_WRONG_MODELS)\n                            HighlightEntity(ref wrongModelColor);\n                    }\n                }\n\n                if (m_modelCollision == null && m_modelLod0 != null)\n                {\n                    MyMwcLog.WriteLine(\"ERROR: Improper COL model in the game (missing COL): \" + m_modelLod0.AssetName + \" (too many triangles[\" + m_modelLod0.GetTrianglesCount().ToString() + \"/\" + m_modelLod0.GetTrianglesCount().ToString() + \"])\");\n                    if (MyFakes.HIGHLIGHT_WRONG_MODELS)\n                        HighlightEntity(ref wrongModelColor);\n                }\n            }\n        }\n\n        #endregion\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/MyEntity.cs.bak",
    "content": "﻿//-----------------------------------------------------------------------\n// <copyright file=\"MyEntity.cs\" company=\"Keen Software House\">\n//     Copyright (c) Keen Software House 2011. All rights reserved.\n// </copyright>\n// <author>Ondřej Štorek</author>\n//-----------------------------------------------------------------------\n\nnamespace MinerWars.AppCode.Game.Managers.EntityManager.Entities\n{\n    using System;\n    using System.Collections.Generic;\n    using System.Collections.Specialized;\n    using System.Diagnostics;\n    using System.Linq;\n    using System.Reflection;\n    using System.Runtime.Serialization;\n    using System.Text;\n    using Audio;\n    using CommonLIB.AppCode.ObjectBuilders;\n    using CommonLIB.AppCode.ObjectBuilders.Object3D;\n    using CommonLIB.AppCode.Utils;\n    using GUI;\n    using KeenSoftwareHouse.Library.Collections;\n    using KeenSoftwareHouse.Library.Remoting;\n    using KeenSoftwareHouse.Library.Extensions;\n    using Microsoft.Xna.Framework;\n    using Models;\n    using Notifications;\n    using Physics; //TODO: Get rid of direct physics usage.\n    using PhysicsManager.Physics;\n    using SysUtils;\n    using Utils;\n    using Render;\n    using HUD;\n    using MinerWarsCustomContentImporters;\n\n    /// <summary>\n    /// Enumeration flags\n    /// </summary>\n    [Flags]\n    public enum EnumerationFlags\n    {\n        /// <summary>\n        /// No flags\n        /// </summary>\n        None = 1 << 0,\n\n        /// <summary>\n        /// Enumerate also all sub-children.\n        /// </summary>\n        Hierarchically = 1 << 1,\n    }\n\n    /// <summary>\n    /// Abstract engine entity object representing non-mass point object in space.\n    /// Resources can extend this object and give it purpose. Game entities inherites directly from this class.\n    /// </summary>\n    [RemoContract(\"Entity\")]\n    internal abstract class MyEntity : MyResource, IMyNotifyEntityChanged, INotifyMemberChanged, IMyEditableEntity\n    {\n        #region Enums\n        \n        /// <summary>\n        /// Entity flags.\n        /// </summary>\n        [Flags]\n        private enum EntityFlags\n        {\n            /// <summary>\n            /// No flags\n            /// </summary>\n            None = 1 << 0,\n\n            /// <summary>\n            /// Specified that position changed and all dependent values should be recalculated.\n            /// </summary>\n            PositionDirty = 1 << 1,\n\n            /// <summary>\n            /// Specifies that volume is dirty and should be recalculated in parents.\n            /// </summary>\n            VolumeDirty = 1 << 2,\n            \n            /// <summary>\n            /// Draw also all chidren of this entity.\n            /// TODO: Temporary flag. To be removed when everybody use Children collection.\n            /// </summary>\n            DrawChildren = 1 << 3,\n\n            /// <summary>\n            /// Specifies whether draw this entity or not.\n            /// </summary>\n            Visible = 1 << 4\n        }\n\n        #endregion\n\n        #region Constants\n\n        private static readonly MemberInfo LocalMatrixMember = MemberHelper<MyEntity>.GetMember(i => i.localMatrix);\n        private static readonly MemberInfo WorldMatrixMember = MemberHelper<MyEntity>.GetMember(i => i.worldMatrix);\n\n        #endregion\n\n        #region Fields\n\n        /// <summary>\n        /// Internal world matrix of entity.\n        /// </summary>\n        [Remoting(1, User, DenyPolicy = DenyPolicy.Cache)]\n        private Matrix worldMatrix;\n\n        /// <summary>\n        /// Internal local matrix relative to parent of entity.\n        /// </summary>\n        [Remoting(2, User, DenyPolicy = DenyPolicy.Cache)]\n        private Matrix localMatrix;\n\n        /// <summary>\n        /// Gets the childs collection.\n        /// </summary>\n        [Remoting(3, User)]\n        private readonly ObservableCollection<MyEntity> children;\n\n        /// <summary>\n        /// \n        /// </summary>\n        private Vector3 localVolumeOffset;\n\n        /// <summary>\n        /// \n        /// </summary>\n        private BoundingSphere localVolume;\n\n        /// <summary>\n        /// \n        /// </summary>\n        private BoundingSphere worldVolume;\n\n        #endregion\n\n        #region Properties\n\n        /// <summary>\n        /// World matrix of this physic object. Use it whenever you want to do world-matrix transformations with this physic objects.\n        /// </summary>\n        public Matrix WorldMatrix\n        {\n            get { return this.worldMatrix; }\n            set { SetWorldMatrix(value); }\n        }\n\n        /// <summary>\n        /// Gets or sets the local matrix.\n        /// </summary>\n        /// <value>\n        /// The local matrix.\n        /// </value>\n        public Matrix LocalMatrix\n        {\n            get { return this.localMatrix; }\n            set { SetLocalMatrix(value); }\n        }\n\n        /// <summary>\n        /// Gets the world volume.\n        /// </summary>\n        public BoundingSphere WorldVolume\n        {\n            get { return worldVolume; }\n        }\n\n        /// <summary>\n        /// Gets the hiearchical volume in world.\n        /// </summary>\n        public BoundingSphere WorldVolumeHr\n        {\n            get\n            {\n                BoundingSphere sphere = new BoundingSphere();\n\n                UpdateVolumeHr(ref sphere);\n                \n                return sphere;\n            }\n        }\n\n        /// <summary>\n        /// Sets the local volume.\n        /// </summary>\n        /// <value>\n        /// The local volume.\n        /// </value>\n        public BoundingSphere LocalVolume\n        {\n            set\n            {\n                localVolume = value;\n                \n                UpdateWorldVolume();\n\n                NotifyEntityVolumeChange(null);\n            }\n        }\n\n        /// <summary>\n        /// Gets or sets the local volume offset.\n        /// </summary>\n        /// <value>\n        /// The local volume offset.\n        /// </value>\n        public Vector3 LocalVolumeOffset\n        {\n            get\n            {\n                return this.localVolumeOffset;\n            }\n            set\n            {\n                this.localVolumeOffset = value;\n\n                UpdateWorldVolume();\n\n                NotifyEntityVolumeChange(null);\n            }\n        }\n\n        /// <summary>\n        /// Gets or sets the parent.\n        /// </summary>\n        /// <value>\n        /// The parent.\n        /// </value>\n        public MyEntity Parent { get; private set; }\n\n        /// <summary>\n        /// Gets the childs collection.\n        /// </summary>\n        //[Remoting(Controller)]\n        public ICollection<MyEntity> Children\n        {\n            get\n            {\n                return this.children;\n            }\n        }\n\n        /// <summary>\n        /// Gets the physic body representation of the entity.\n        /// </summary>\n        public MyPhysicsBody Physics { get; internal set; }\n\n        /// <summary>\n        /// Gets the graphics representation of entity.\n        /// </summary>\n        public int Graphics { get; internal set; }\n\n        /// <summary>\n        /// Gets the sound representation of entity.\n        /// </summary>\n        public int Sound { get; internal set; }\n\n        /// <summary>\n        /// Gets or sets a value indicating whether this <see cref=\"MyEntity\"/> is visible.\n        /// </summary>\n        /// <value>\n        ///   <c>true</c> if visible; otherwise, <c>false</c>.\n        /// </value>\n        public bool Visible \n        { \n            get\n            {\n                return (Flags & EntityFlags.Visible) != 0;\n            }\n\n            set\n            {\n                if (value)\n                {\n                    Flags = Flags | EntityFlags.Visible;\n                }\n                else\n                {\n                    Flags = Flags & (~EntityFlags.Visible);\n                }\n            }\n        }\n\n        /// <summary>\n        /// Gets or sets a value indicating whether [draw children].\n        /// </summary>\n        /// <value>\n        ///   <c>true</c> if [draw children]; otherwise, <c>false</c>.\n        /// </value>\n        public bool DrawChildren\n        {\n            get\n            {\n                return (this.Flags & EntityFlags.DrawChildren) == EntityFlags.DrawChildren;\n            }\n            set\n            {\n                this.Flags = this.Flags.SetFlags(EntityFlags.DrawChildren, value);\n            }\n        }\n\n        /// <summary>\n        /// Scaling of this object's model. \n        /// Actualy used only for drawing and JLX collision skins. \n        /// I don't use it for line-triangleVertexes intersections in octree (but it can be added).\n        /// </summary>\n        // TODO: Move to graphics object.\n        protected Vector3? Scale { get; set; }\n\n        /// <summary>\n        /// Gets or sets the entity flags.\n        /// </summary>\n        /// <value>\n        /// The flags.\n        /// </value>\n        private EntityFlags Flags { get; set; }\n\n        #endregion\n\n        #region Methods\n\n        /// <summary>\n        /// Initializes a new instance of the <see cref=\"MyEntity\"/> class.\n        /// </summary>\n        protected MyEntity()\n        {\n            this.children = new ObservableCollection<MyEntity>();\n            this.children.CollectionChanged += NotifyChidrenCollectionChanged;\n            this.localMatrix = Matrix.Identity;\n            this.Flags = EntityFlags.Visible;\n        }\n\n        /// <summary>\n        /// Updates resource.\n        /// </summary>\n        public override void Update()\n        {\n            for (int i = 0; i < this.children.Count; i++)\n            {\n                 this.children[i].Update();\n            }\n        }\n\n        /// <summary>\n        /// Animates resource.\n        /// </summary>\n        public override void Animate()\n        {\n            for (int i = 0; i < this.children.Count; i++)\n            {\n                this.children[i].Animate();\n            }\n        }\n\n        /// <summary>\n        /// Notify objects that its local access rights just changed.\n        /// </summary>\n        /// <param name=\"newAccessLevel\">The new access level.</param>\n        /// <returns></returns>\n        public override bool AccessRightsChanged(byte newAccessLevel)\n        {\n            var entityManager = (MyEntityManager)this.Manager;\n\n            if (entityManager == null)\n            {\n                return true;\n            }\n\n            if ((newAccessLevel & Controller) == Controller)\n            {\n                entityManager.RegisterForUpdate(this);\n            }\n            else\n            {\n                entityManager.UnRegisterForUpdate(this);\n            }\n\n            return true;\n        }\n\n        /// <summary>\n        /// Collects all sub-resources of this object.\n        /// </summary>\n        /// <param name=\"collectedResources\">The collected resources.</param>\n        /// <param name=\"hierarchically\"></param>\n        public override void CollectResources(ICollection<MyResource> collectedResources, bool hierarchically = true)\n        {\n            base.CollectResources(collectedResources);\n\n            for (int i = 0; i < this.children.Count; i++)\n            {\n                var entity = this.children[i];\n\n                collectedResources.Add(entity);\n\n                if (hierarchically)\n                {\n                    entity.CollectResources(collectedResources);\n                }\n            }\n\n            if (this.Physics != null)\n            {\n                collectedResources.Add(this.Physics);\n\n                if (hierarchically)\n                {\n                    this.Physics.CollectResources(collectedResources);\n                }\n            }\n        }\n\n        /// <summary>\n        /// GetWorldBoundingBox - return BoundingBox in world (not rotated! just translated)\n        /// </summary>\n        /// <returns></returns>\n        /// TODO time consuming! precalculate aabox\n        public virtual BoundingBox GetWorldBoundingBox() \n        {\n            if (this.m_modelLod0 == null)\n            {\n                BoundingBox aabb = BoundingBox.CreateFromSphere(worldVolume);\n                return aabb;\n            }\n\n            BoundingBox aabbModel = this.m_modelLod0.BoundingBox;\n            aabbModel = aabbModel.Transform(worldMatrix);\n\n            return aabbModel;\n\n        }\n\n        /// <summary>\n        /// Generates new debug name for entity.\n        /// </summary>\n        [Conditional(\"DEBUG\")]\n        private void DebugGenerateEntityName()\n        {\n            if (this.Name == null)\n            {\n                this.Name = string.Format(\"{0}:{1}\", this.GetType().Name, this.GetHashCode());\n            }\n        }\n\n        #endregion\n        \n        #region Position And Movement Methods\n\n        /// <summary>\n        /// Sets the world matrix.\n        /// </summary>\n        /// <param name=\"worldMatrix\">The world matrix.</param>\n        /// <param name=\"source\">The source object that caused this change or null when not important.</param>\n        public void SetWorldMatrix(Matrix worldMatrix, object source = null)\n        {\n            MyUtils.AssertIsValid(worldMatrix);\n\n            if (this.Parent == null)\n            {\n                this.worldMatrix = worldMatrix;\n\n                Remoting.Post(this, WorldMatrixMember);\n            }\n            else\n            {\n                Matrix matParentInv = Matrix.Invert(Parent.WorldMatrix);\n                this.localMatrix = worldMatrix * matParentInv;\n\n                Remoting.Post(this, LocalMatrixMember);\n            }\n\n            UpdateWorldMatrix(source);\n        }\n\n        /// <summary>\n        /// Sets the local matrix.\n        /// </summary>\n        /// <param name=\"localMatrix\">The local matrix.</param>\n        /// <param name=\"source\">The source object that caused this change or null when not important.</param>\n        public void SetLocalMatrix(Matrix localMatrix, object source = null)\n        {\n            this.localMatrix = localMatrix;\n\n            Remoting.Post(this, LocalMatrixMember);\n\n            UpdateWorldMatrix(source);\n        }\n\n        /// <summary>\n        /// Gets the entity position.\n        /// </summary>\n        /// <returns></returns>\n        public Vector3 GetPosition()\n        {\n            return this.worldMatrix.Translation;\n        }\n\n        /// <summary>\n        /// Sets the position.\n        /// </summary>\n        /// <param name=\"pos\">The pos.</param>\n        public void SetPosition(Vector3 pos)\n        {\n            this.worldMatrix.Translation = pos;\n            \n            UpdateWorldMatrix();\n        }\n\n\n        /// <summary>\n        /// Gets the world rotation.\n        /// </summary>\n        /// <returns></returns>\n        public Matrix GetWorldRotation()\n        {\n            var rot = Matrix.Identity;\n            rot.Forward = this.WorldMatrix.Forward;\n            rot.Up = this.WorldMatrix.Up;\n            rot.Right = this.WorldMatrix.Right;\n            \n            return rot;\n        }\n\n\n        /// <summary>\n        /// Gets the local rotation.\n        /// </summary>\n        /// <returns></returns>\n        public Matrix GetLocalRotation()\n        {\n            var rot = Matrix.Identity;\n            rot.Forward = this.LocalMatrix.Forward;\n            rot.Up = this.LocalMatrix.Up;\n            rot.Right = this.LocalMatrix.Right;\n\n            return rot;\n        }\n\n\n        /// <summary>\n        /// Inverted world matrix of this physic object calculated on-demand (non cached).\n        /// Use it whenever you want to do world-matrix transformations with this physic objects.\n        /// </summary>\n        public Matrix GetWorldMatrixInverted()\n        {\n            Matrix inv;\n            Matrix.Invert(ref this.worldMatrix, out inv);\n\n            return inv;\n        }\n\n        /// <summary>\n        /// Gets the world matrix for draw.\n        /// </summary>\n        /// <returns></returns>\n        public virtual Matrix GetWorldMatrixForDraw()\n        {\n            Matrix outMatrix;\n            Matrix inMatrix = GetScaleMatrix() * this.worldMatrix;\n            \n            Matrix.Multiply(ref inMatrix, ref MyCamera.InversePositionTranslationMatrix, out outMatrix);\n            \n            return outMatrix;\n        }\n\n        \n        /// <summary>\n        /// Gets the scale matrix.\n        /// </summary>\n        /// <returns></returns>\n        public virtual Matrix GetScaleMatrix()\n        {\n            if (Scale != null)\n                return Matrix.CreateScale(Scale.Value);\n            else\n                return Matrix.Identity;\n        }\n\n        /// <summary>\n        /// Moves the and rotate.\n        /// </summary>\n        /// <param name=\"newPosition\">The new position.</param>\n        /// <param name=\"newOrientation\">The new orientation.</param>\n        /// <returns> return false, if object cannot be moved - this method is most important for editor and moving objects there</returns>\n        // TODO: Remove this functions, person who is moving with object should handle special cases! Or better remove them all.\n        public virtual bool MoveAndRotate(Vector3 newPosition, Matrix newOrientation)\n        {\n            newOrientation.Translation = newPosition;\n\n            SetWorldMatrix(newOrientation);\n\n            return true;\n        }\n\n        public virtual bool CanMoveAndRotate(Vector3 newPosition, Matrix newOrientation)\n        {\n            return true;\n        }\n\n        /// <summary>\n        /// Resets rotation of entity to default.\n        /// </summary>\n        public virtual void ResetRotation()\n        {\n            Matrix resettedOrientation = Matrix.Identity;\n            resettedOrientation.Translation = this.GetPosition();\n            \n            SetWorldMatrix(resettedOrientation);\n        }\n\n        /// <summary>\n        /// Updates the world matrix (change caused by this entity)\n        /// </summary>\n        private void UpdateWorldMatrix(object source = null)\n        {\n            if (this.Parent != null)\n            {\n                Matrix parentWorldMatrix = this.Parent.WorldMatrix;\n                UpdateWorldMatrix(ref parentWorldMatrix);\n\n                return;\n            }\n\n            UpdateChildren(source);\n            UpdateWorldVolume();\n            \n            NotifyEntityChange(source);\n        }\n\n        /// <summary>\n        /// Updates the world matrix (change caused by parent)\n        /// </summary>\n        private void UpdateWorldMatrix(ref Matrix parentWorldMatrix, object source = null)\n        {\n            Matrix.Multiply(ref this.localMatrix, ref parentWorldMatrix, out this.worldMatrix);\n\n            UpdateChildren(source);\n            UpdateWorldVolume();\n\n            NotifyEntityChange(source);\n        }\n\n        /// <summary>\n        /// Updates the childs of this entity.\n        /// </summary>\n        private void UpdateChildren(object source)\n        {\n            for (int i = 0; i < this.children.Count; i++)\n            {\n                this.children[i].UpdateWorldMatrix(ref this.worldMatrix, source);\n            }\n        }\n\n        /// <summary>\n        /// Updates the volume of this entity.\n        /// </summary>\n        private void UpdateWorldVolume()\n        {\n            Matrix mat = Matrix.CreateTranslation(LocalVolumeOffset + localVolume.Center);\n\n            mat = mat * this.WorldMatrix;\n\n            worldVolume = new BoundingSphere(mat.Translation, localVolume.Radius);\n        }\n\n        /// <summary>\n        /// Update volume hr and of all children.\n        /// </summary>\n        /// <param name=\"volume\"></param>\n        private void UpdateVolumeHr(ref BoundingSphere volume)\n        {\n            BoundingSphere.CreateMerged(ref volume, ref this.worldVolume, out volume);\n\n            for (int i = 0; i < this.children.Count; i++)\n            {\n                this.children[i].UpdateVolumeHr(ref volume);\n            }\n        }\n\n        #endregion\n\n        #region Draw Methods\n\n        /// <summary>\n        /// Check if we have to draw this phys object in this frame.\n        /// </summary>\n        /// <returns>Returns true if visible from camera.</returns>\n        public virtual bool IsVisible()\n        {\n            if (this is MyVoxelMap) return true;\n\n            if (this.m_modelLod0 == null)\n            {\n                return false;\n            }\n\n            if (!this.Visible)\n            {\n                return false;\n            }\n\n            BoundingSphere volumeHr = this.WorldVolumeHr;\n\n            return !this.m_frustumCheckBeforeDrawEnabled || MyCamera.IsInFrustum(ref volumeHr);\n        }\n\n        /// <summary>\n        /// Draws this object's model and return true. If object isn't in frustum or for whatever reason we won't draw it, return false.\n        /// </summary>\n        /// <returns></returns>\n        public virtual bool Draw()\n        {\n            bool retVal = IsVisible();\n\n            if (retVal)\n            {\n                MyRender.AddPhysObjectToDraw(this);\n            }\n\n                if (this.DrawChildren)\n                {\n                    for (int i = 0; i < this.children.Count; i++)\n                    {\n                        this.children[i].Draw();\n                    }\n                }\n\n            return retVal;\n        }\n\n        /// <summary>\n        /// Draw debug.  \n        /// </summary>\n        /// <returns></returns>\n        public virtual bool DebugDraw()\n        {\n            bool retVal = IsVisible();\n\n            if (retVal)\n            {\n                if (MyMwcFinalBuildConstants.DrawHelperPrimitives)\n                {\n                    DebugDrawVolume();\n                    DebugDrawBox();\n                    MyDebugDraw.DrawAxis(WorldMatrix, 5, 1);\n                }\n\n                if (MyMwcFinalBuildConstants.DrawJLXCollisionPrimitives)\n                {\n                    DebugDrawPhysics();\n                }\n\n                if (MyMwcFinalBuildConstants.DrawNormalVectors)\n                {\n                    DebugDrawNormalVectors();\n                }\n            }\n\n            return retVal;\n        }\n\n        /// <summary>\n        /// Draws world bounding box of this entity\n        /// </summary>\n        [Conditional(\"DEBUG\"), Conditional(\"DEVELOP\")]\n        public void DebugDrawWorldAABB()\n        {\n            BoundingBox aabb = GetWorldBoundingBox();\n            Vector4 color = Vector4.One;\n            MyDebugDraw.DrawAABB(ref aabb, ref color ,1.0f);\n        }\n\n        /// <summary>\n        /// Debug draw volume of this entity.\n        /// </summary>\n        [Conditional(\"DEBUG\"), Conditional(\"DEVELOP\")]\n        public void DebugDrawVolume()\n        {\n            if ((this is MyVoxelMap) == false)\n            {\n                MyDebugDraw.DrawSphereWireframe(Matrix.CreateScale(worldVolume.Radius) * Matrix.CreateTranslation(worldVolume.Center), Color.Red.ToVector3(), 1);\n            }\n        }\n\n        /// <summary>\n        /// Debug draw box of this entity.\n        /// </summary>\n        [Conditional(\"DEBUG\"), Conditional(\"DEVELOP\")]\n        public virtual void DebugDrawBox()\n        {\n            Vector3 boundingBoxSize;\n\n            if (this is MyVoxelMap)\n            {\n                BoundingBox bbox = ((MyVoxelMap)this).BoundingBox;\n                boundingBoxSize = bbox.Max - bbox.Min;\n            }\n            else if (this.m_modelLod0 != null)\n            {\n                boundingBoxSize = this.m_modelLod0.BoundingBoxSize;\n            }\n            else\n            {\n                return;\n            }\n\n            const float alpha = 1.0f;\n            MyDebugDraw.DrawHiresBoxWireframe(Matrix.CreateScale(boundingBoxSize) * Matrix.CreateTranslation(this.LocalVolumeOffset) * this.worldMatrix, Color.DarkRed.ToVector3(), alpha);\n        }\n\n\n        /// <summary>\n        /// Debug draw box of this entity.\n        /// </summary>\n        [Conditional(\"DEBUG\"), Conditional(\"DEVELOP\"), Conditional(\"RELEASE\")]\n        public virtual void DebugDrawBox(Vector4 color, bool bWireFrame)\n        {\n            BoundingBox worldBB = GetWorldBoundingBox();\n            Vector3 size = worldBB.Max - worldBB.Min;\n            Vector3 center = size / 2f;\n            center = center + worldBB.Min;\n            //Matrix mat = Matrix.CreateWorld(center, this.worldMatrix.Forward, this.worldMatrix.Up);\n\n            Matrix tmpInv = Matrix.Identity;\n            tmpInv.Translation = -center;\n            BoundingBox localbox = worldBB.Transform(tmpInv);    //to local\n\n\n            Matrix mat = Matrix.CreateTranslation(LocalVolumeOffset) * this.WorldMatrix;\n            MySimpleObjectDraw.DrawTransparentBox(ref mat, ref localbox, ref color, bWireFrame, 1);\n\n            //@ for debug JK\n            /*foreach (MyEntity child in children)\n            {\n                child.DebugDrawBox(color, bWireFrame);\n            }*/\n        }\n\n\n        /// <summary>\n        /// If model of this phys object uses alpha for rendering, this method will calculate that alpha\n        /// Of course childs of this class must implement it's own alpha calculation, because this one will throw an exception.\n        /// Children shouldn't call this base method\n        /// Only for drawing this object, because some objects need to use special world matrix\n        /// </summary>\n        /// <returns></returns>\n        [Conditional(\"DEBUG\"), Conditional(\"DEVELOP\")]\n        public virtual void DebugDrawNormalVectors()\n        {\n            bool retVal = IsVisible();\n            \n            if (retVal == false) \n                return;\n            \n            // Must be enabled\n            if (!MyMwcFinalBuildConstants.ENABLE_VERTEX_NORMALS_DEBUG_DRAW)\n                return;\n           \n\n            if ((this == MyGuiScreenGamePlay.Static.PlayerShip) && \n                (MyGuiScreenGamePlay.Static.CameraAttachedTo == MyCameraAttachedToEnum.PlayerMinerShip)) return;\n\n            const float MAX_DRAW_DISTANCE = 300;\n            if (GetDistanceBetweenCameraAndBoundingSphere() > MAX_DRAW_DISTANCE) return;\n\n            //Matrix worldMatrixNotCentered = Matrix.CreateTranslation(-m_invertedCenterOfMass) * WorldMatrix;\n            Matrix worldMatrixNotCentered = WorldMatrix;\n            Matrix transformMatrix = worldMatrixNotCentered;\n\n            MyDebugDrawCachedLines.Clear();\n\n            //  This is just a reserve\n            const int NUMBER_OF_ADD_TRIANGLES_IN_LOOP = 1;\n\n            int vertexIndex = 0;\n            while (true)\n            {\n                //bool finished = triangleIndex >= mesh.GetNumTriangles();\n                bool finished = vertexIndex >= m_modelLod0.GetVerticesCount();\n\n                if ((MyDebugDrawCachedLines.IsFull(-NUMBER_OF_ADD_TRIANGLES_IN_LOOP)) || (finished))\n                {\n                    MyDebugDrawCachedLines.DrawLines();\n                    MyDebugDrawCachedLines.Clear();\n                }\n\n                if (finished)\n                {\n                    break;\n                }\n\n                //  We now transform the triangleVertexes into world space (we could keep leave the mesh alone\n                //  but at this point 3 vector transforms is probably not a major slow down)\n                Vector3 vertex0 = m_modelLod0.Vertexes[vertexIndex];\n                Vector3 normal = m_modelLod0.GetVertexNormal(vertexIndex);\n                Vector3 vertex1 = vertex0 + normal * 1;\n\n                Vector3.Transform(ref vertex0, ref transformMatrix, out vertex0);\n                Vector3.Transform(ref vertex1, ref transformMatrix, out vertex1);\n\n                MyDebugDrawCachedLines.AddLine(vertex0, vertex1, Color.Red, Color.Red);\n\n                vertexIndex++;\n            }\n        }\n\n        \n\n        /// <summary>\n        /// Draw physical representation of entity\n        /// </summary>\n        [Conditional(\"DEBUG\"), Conditional(\"DEVELOP\")]\n        public void DebugDrawPhysics()\n        {\n            if (this.Physics == null)\n            {\n                return;\n            }\n\n            const float maxDrawDistance = 1000;\n\n            if (!IsVisible() || GetDistanceBetweenCameraAndBoundingSphere() > maxDrawDistance)\n            {\n                return;\n            }\n\n            this.Physics.DebugDraw();\n\n            MyDebugDraw.DrawLine3D(GetPosition(), GetPosition() + Physics.LinearVelocity * 4, Color.Red, Color.Red);\n        }\n\n\n        protected virtual void InitDrawTechniques()\n        {\n        }\n\n        protected void InitDrawTechniques(MyMeshDrawTechnique drawTechnique)\n        {\n            InitDrawTechnique(ModelLod0, drawTechnique);\n            InitDrawTechnique(ModelLod1, drawTechnique);\n        }\n\n        private void InitDrawTechnique(MyModel model, MyMeshDrawTechnique drawTechnique)\n        {\n            if (model != null)\n            {\n                model.SetDrawTechnique(drawTechnique);\n                foreach (MyMesh mesh in model.GetMeshList())\n                {\n                    mesh.GetMaterial().DrawTechnique = drawTechnique;\n                }\n            }\n        }\n\n        #endregion\n        \n        #region Intersection Methods\n\n        //  Calculates intersection of line with any triangleVertexes in this model instance. Closest intersection and intersected triangleVertexes will be returned.\n        public virtual MyIntersectionResultLineTriangleEx? GetIntersectionWithLine(ref MyLine line)\n        {\n            if (m_modelLod0 != null)\n                return m_modelLod0.GetOctree().GetIntersectionWithLine(this, ref line);\n            return null;\n        }\n\n        //  Calculates intersection of line with any bounding sphere in this model instance. Center of the bounding sphere will be returned.\n        //  It takes boundingSphereRadiusMultiplier argument which serves for extending the influence (radius) for interaction with line.\n        public virtual Vector3? GetIntersectionWithLineAndBoundingSphere(ref MyLine line, float boundingSphereRadiusMultiplier)\n        {\n            if (m_modelLod0 == null)\n                return null;\n\n            BoundingSphere vol = this.WorldVolume;\n            vol.Radius *= boundingSphereRadiusMultiplier;\n\n            //  Check if line intersects phys object's current bounding sphere, and if not, return 'no intersection'\n            if (!MyUtils.IsLineIntersectingBoundingSphere(ref line, ref vol))\n                return null;\n\n            return vol.Center;\n        }\n\n        //  Return true if object intersects specified sphere.\n        //  This method doesn't return exact point of intersection or any additional data.\n        //  We don't look for closest intersection - so we stop on first intersection found.\n        public virtual bool GetIntersectionWithSphere(ref BoundingSphere sphere)\n        {\n            if (m_modelLod0 != null)\n                return m_modelLod0.GetOctree().GetIntersectionWithSphere(this, ref sphere);\n            return false;\n        }\n\n        //  Return list of triangles intersecting specified sphere. \n        public void GetTrianglesIntersectingSphere(ref BoundingSphere sphere, Vector3? referenceNormalVector, float? maxAngle, \n                                                   List<MyTriangle_Vertex_Normals> retTriangles, int maxNeighbourTriangles)\n        {\n            if (m_modelLod0 != null)\n            {\n                m_modelLod0.GetOctree().GetTrianglesIntersectingSphere(this, ref sphere, referenceNormalVector, maxAngle, retTriangles, maxNeighbourTriangles);\n            }\n        }\n\n        //  Return true if bounding sphere of this object intersects bounding frustum\n        public virtual bool GetIntersectionWithBoundingFrustum(ref BoundingFrustum boundingFrustum)\n        {\n            ContainmentType con = boundingFrustum.Contains(this.GetWorldBoundingBox());\n            if (con == ContainmentType.Contains || con == ContainmentType.Intersects)\n            {\n                return true;\n            }\n            return false;\n        }\n\n        //  Smalles distance between camera and bounding sphere of this phys object. Result is always positive, even if camera is inside the sphere.\n        public float GetSmallestDistanceBetweenCameraAndBoundingSphere()\n        {\n            return MyUtils.GetSmallestDistanceToSphereAlwaysPositive(ref MyCamera.Position, ref worldVolume);\n        }\n\n        //  Largest distance from camera to bounding sphere of this phys object. Result is always positive, even if camera is inside the sphere.\n        //  It's actualy distance between camera and opposite side of the sphere\n        public float GetLargestDistanceBetweenCameraAndBoundingSphere()\n        {\n            return MyUtils.GetLargestDistanceToSphere(ref MyCamera.Position, ref worldVolume);\n        }\n        \n        //  Distance from camera to bounding sphere of this phys object. Result is always positive, even if camera is inside the sphere.\n        public float GetDistanceBetweenCameraAndBoundingSphere()\n        {\n            return MyUtils.GetSmallestDistanceToSphereAlwaysPositive(ref MyCamera.Position, ref worldVolume);\n        }\n\n        //  Distance from camera to position of entity.\n        public float GetDistanceBetweenCameraAndPosition()\n        {\n            return Vector3.Distance(MyCamera.Position, this.GetPosition());\n        }\n\n        #endregion\n\n        #region Children Methods\n\n        /// <summary>\n        /// Adds the child.\n        /// </summary>\n        /// <param name=\"child\">The child.</param>\n        /// <param name=\"preserveWorldPos\">if set to <c>true</c> [preserve absolute position].</param>\n        public void AddChild(MyEntity child, bool preserveWorldPos = false)\n        {\n            if (preserveWorldPos)\n            {\n                var tmpWorldMatrix = child.WorldMatrix;\n\n                this.Children.Add(child);\n\n                child.WorldMatrix = tmpWorldMatrix;\n            }\n            else\n            {\n                this.Children.Add(child);\n            }\n        }\n\n        /// <summary>\n        /// Adds the child.\n        /// </summary>\n        /// <param name=\"child\">The child.</param>\n        /// <param name=\"preserveWorldPos\">if set to <c>true</c> [preserve absolute position].</param>\n        public void RemoveChild(MyEntity child, bool preserveWorldPos = false)\n        {\n            if (preserveWorldPos)\n            {\n                var tmpWorldMatrix = child.WorldMatrix;\n\n                this.Children.Remove(child);\n\n                child.WorldMatrix = tmpWorldMatrix;\n            }\n            else\n            {\n                this.Children.Remove(child);\n            }\n        }\n\n        /// <summary>\n        /// Finds the child.\n        /// </summary>\n        /// <param name=\"childName\">Name of the child.</param>\n        /// <returns></returns>\n        public MyEntity FindChild(string childName)\n        {\n            return this.Children.FirstOrDefault(entity => string.Compare(childName, entity.Name, true) == 0);\n        }\n\n        /// <summary>\n        /// Finds the child.\n        /// </summary>\n        /// <param name=\"childIndex\">Index of the child.</param>\n        /// <returns></returns>\n        public MyEntity FindChild(int childIndex)\n        {\n            var list = this.Children as IList<MyEntity>;\n\n            return list != null ? list[childIndex] : this.Children.ElementAt(childIndex);\n        }\n\n        /// <summary>\n        /// Enumerate the children.\n        /// Do not use this method in performance critical code. Makes garbadge !\n        /// </summary>\n        /// <param name=\"enumerationFlags\">The enumeration flags.</param>\n        /// <returns></returns>\n        public IEnumerable<MyEntity> EnumChildren(EnumerationFlags enumerationFlags = EnumerationFlags.None)\n        {\n            for (int i = 0; i < this.children.Count; i++)\n            {\n                var child = this.children[i];\n\n                yield return child;\n\n                if (enumerationFlags.IsFlagSet(EnumerationFlags.Hierarchically))\n                {\n                    foreach (var subChild in child.EnumChildren(enumerationFlags))\n                    {\n                        yield return subChild;\n                    }\n                }\n            }\n        }\n\n        #endregion\n\n        #region Entity events\n\n\n        /// <summary>\n        /// Called on some contact start with this entity.\n        /// </summary>\n        /// <param name=\"contactInfo\">The contact info.</param>\n        protected virtual void OnContactStart(MyContactEventInfo contactInfo)\n        {\n            // TODO: Move to some derived entity (dont do this for all!)\n            if (this.Physics.PlayCollisionCueEnabled)\n            {\n                MyAudio.PlayCollisionCue(contactInfo, MyMaterialsConstants.MyMaterialCollisionType.Start);\n            }\n\n            if (MyMwcFinalBuildConstants.DrawCollisionSpotsInHud)\n            {\n                MyHud.DebugClearAndAddText(contactInfo.m_ContactPoint, new StringBuilder(\"COLLISION POINT\"));\n            }\n        }\n\n        /// <summary>\n        /// Called on some contact end with this entity.\n        /// </summary>\n        /// <param name=\"contactInfo\">The contact info.</param>\n        protected virtual void OnContactEnd(MyContactEventInfo contactInfo)\n        {\n            // TODO: Move to some derived entity (dont do this for all!)\n            if (this.Physics.PlayCollisionCueEnabled)\n            {\n                MyAudio.PlayCollisionCue(contactInfo, MyMaterialsConstants.MyMaterialCollisionType.End);\n            }\n        }\n\n        /// <summary>\n        /// Called when [contact touches] with this entity.\n        /// </summary>\n        /// <param name=\"contactInfo\">The contact info.</param>\n        protected virtual void OnContactTouch(MyContactEventInfo contactInfo)\n        {\n            // TODO: Move to some derived entity (dont do this for all!)\n            if (this.Physics.PlayCollisionCueEnabled)\n            {\n                MyAudio.PlayCollisionCue(contactInfo, MyMaterialsConstants.MyMaterialCollisionType.Touch);\n            }\n        }\n\n        /// <summary>\n        /// Called when [contact] with entity.\n        /// </summary>\n        /// <param name=\"constraint\">The constraint.</param>\n        /// <returns></returns>\n        protected virtual bool OnContact(ref Physics.MyRBSolverConstraint constraint)\n        {\n            return true;\n        }\n\n        /// <summary>\n        /// Called when all remoting members are [deserialized] and should set not remoting members to correct state.\n        /// </summary>\n        [OnDeserialized]\n        protected virtual void OnDeserialized()\n        {\n        }\n\n        /// <summary>\n        /// Called when [deserialized]\n        /// // TODO: Change to remoting memebers!\n        /// </summary>\n        protected void OnDeserialized(MyModelsEnum? lod0, MyModelsEnum? lod1, Vector3? scale)\n        {\n            this.m_modelLod0 = lod0 != null ? MyModels.GetModelOnlyData(lod0.Value) : null;\n            this.m_modelLod1 = lod1 != null ? MyModels.GetModelOnlyData(lod1.Value) : null;\n            //this.Scale = scale;\n\n            //TODO is this really clear? this means, that all entities, that does not have model, will have radius 1!!\n            this.LocalVolumeOffset = (m_modelLod0 != null) ? m_modelLod0.BoundingSphere.Center : Vector3.Zero;\n            this.LocalVolume = new BoundingSphere(Vector3.Zero, (m_modelLod0 != null) ? m_modelLod0.BoundingSphere.Radius : 1);\n        }\n\n        /// <summary>\n        /// Called when [activated] which for entity means that was added to scene.\n        /// </summary>\n        /// <param name=\"source\">The source of activation.</param>\n        protected override void OnActivated(object source)\n        {\n            base.OnActivated(source);\n\n            if (this.Physics != null && this.Physics.Enabled == false)\n            {\n                this.Physics.Enabled = true;\n            }\n\n            if ((this.Name != null) && (Parent == null))\n            {\n                MyHud.AddText(this, new StringBuilder(this.Name));\n        }\n        }\n\n        /// <summary>\n        /// Called when [deactivated] which for entity means that was removed from scene.\n        /// </summary>\n        /// <param name=\"source\">The source of deactivation.</param>\n        protected override void OnDeactivated(object source)\n        {\n            if (this.Physics != null && this.Physics.Enabled)\n            {\n                this.Physics.Enabled = false;\n            }\n\n            MyHud.RemoveText(this);\n\n            base.OnDeactivated(source);\n        }\n\n        #endregion\n\n        #region Notification Methods\n\n        /// <summary>\n        /// Notifies sub dependent resources about entity change.\n        /// </summary>\n        /// <param name=\"source\">Source of change-or-null if unknown.</param>\n        private void NotifyEntityChange(object source)\n        {\n            IMyNotifyEntityChanged notifier;\n\n            {\n                notifier = this.Physics;\n\n                if (notifier != null && notifier != source)\n                {\n                    notifier.OnWorldPositionChanged(source);\n                }\n            }\n            \n            {\n                notifier = this;\n\n                if (notifier != source)\n                {\n                    notifier.OnWorldPositionChanged(source);\n                }\n            }\n        }\n\n        /// <summary>\n        /// Notifies the entity volume change.\n        /// </summary>\n        /// <param name=\"source\">The source.</param>\n        private void NotifyEntityVolumeChange(object source)\n        {\n            IMyNotifyEntityChanged notifier = this;\n\n            if (notifier != source)\n            {\n                notifier.OnVolumeChanged(source);\n            }\n        }\n\n        /// <summary>\n        /// Rise the OnContactStart event.\n        /// </summary>\n        /// <param name=\"contactInfo\">The contact info.</param>\n        internal void NotifyContactStart(MyContactEventInfo contactInfo)\n        {\n            OnContactStart(contactInfo);\n        }\n\n        /// <summary>\n        /// Rise the OnContactsEnd event.\n        /// </summary>\n        /// <param name=\"contactInfo\">The contact info.</param>\n        internal void NotifyContactEnd(MyContactEventInfo contactInfo)\n        {\n            OnContactEnd(contactInfo);\n        }\n\n        /// <summary>\n        /// Rise the OnContactTouche event.\n        /// </summary>\n        /// <param name=\"contactInfo\">The contact info.</param>\n        internal void NotifyContactTouch(MyContactEventInfo contactInfo)\n        {\n            OnContactTouch(contactInfo);\n        }\n\n        /// <summary>\n        /// Rise the OnContact event.\n        /// </summary>\n        /// <param name=\"constraint\">The constraint.</param>\n        /// <returns></returns>\n        internal bool NotifyContact(ref MyRBSolverConstraint constraint)\n        {\n            return OnContact(ref constraint);\n        }\n\n        /// <summary>\n        /// Notifies entity that the chidren collection has changed.\n        /// </summary>\n        /// <param name=\"sender\">The sender.</param>\n        /// <param name=\"e\">The <see cref=\"System.Collections.Specialized.NotifyCollectionChangedEventArgs\"/> instance containing the event data.</param>\n        private void NotifyChidrenCollectionChanged(object sender, NotifyCollectionChangedEventArgs e)\n        {\n            switch (e.Action)\n            {\n                case NotifyCollectionChangedAction.Add:\n                    foreach (var changedItem in e.NewItems.Cast<MyEntity>())\n                    {\n                        Debug.Assert(changedItem != null, \"Null child added!\");\n\n                        if (changedItem != null)\n                        {\n                        changedItem.Parent = this;\n                        changedItem.UpdateWorldMatrix(ref this.worldMatrix);\n                    }\n                    }\n                    break;\n                case NotifyCollectionChangedAction.Remove:\n                    {\n                        // TODO: Simplify\n                        if (e.OldItems == this.Children)\n                        {\n                            for (int i = 0; i < this.children.Count; i++)\n                            {\n                                this.children[i].Parent = null;\n                                this.children[i].UpdateWorldMatrix();\n                            }\n                        }\n                        else\n                        {\n                            foreach (var changedItem in e.OldItems)\n                            {\n                                var changedEntity = (MyEntity)changedItem;\n\n                                changedEntity.Parent = null;\n                                changedEntity.UpdateWorldMatrix();\n                            }\n                        }\n\n                        break;\n                    }\n            }\n\n            Remoting.Post(this.children);\n        }\n\n        /// <summary>\n        /// Notifies that entity was added to scene (activated)\n        /// </summary>\n        /// <param name=\"source\"></param>\n        internal void NotifyAddedToScene(object source)\n        {\n            NotifyActivated(source);\n        }\n\n        /// <summary>\n        /// Notifies that entity was removed from scene (deactivated)\n        /// </summary>\n        /// <param name=\"source\"></param>\n        internal void NotifyRemovedFromScene(object source)\n        {\n            NotifyDeactivated(source);\n        }\n\n        #endregion\n\n        #region Implementation of IMyNotifyEntityChanged\n\n        // Because for now entity = script resource entity also implements this interface for inheritors.\n\n        /// <summary>\n        /// Called when [world position changed].\n        /// </summary>\n        /// <param name=\"source\">The source object that caused this event.</param>\n        public virtual void OnWorldPositionChanged(object source)\n        {\n            Debug.Assert(source != this, \"Recursion detected!\");\n        }\n\n        /// <summary>\n        /// Called when [volume changed].\n        /// </summary>\n        /// <param name=\"source\">The source.</param>\n        public virtual void OnVolumeChanged(object source)\n        {\n            Debug.Assert(source != this, \"Recursion detected!\");\n        }\n\n        #endregion\n\n        #region Implementation of INotifyMemberChanged\n\n        /// <summary>\n        /// Called when [member changed].\n        /// </summary>\n        /// <param name=\"memberInfo\">The member info.</param>\n        public virtual void OnMemberChanged(MemberInfo memberInfo)\n        {\n            if (memberInfo == WorldMatrixMember)\n            {\n                UpdateWorldMatrix();\n            }\n        }\n\n        #endregion\n\n        #region Bordel\n\n        // TODO: Get rid of this\n        private MyMwcObjectBuilder_Base m_objectBuilder; // Object builder is the template this phys object was created from and is saved as\n\n        // TODO: Move to graphics object.\n        protected MyModel m_modelLod0;                       //  LOD0 main model, used for rendering and also physics / col-det\n        protected MyModel m_modelLod1;                       //  LOD1 version of this model, used only for rendering (not physics and col-det)\n\n        public MyModel ModelLod0\n        {\n            get { return m_modelLod0; }\n        }\n\n\n        public MyModel ModelLod1\n        {\n            get { return m_modelLod1; }\n        }\n\n\n        //  If true, we always check if this phys object is contained in frustum. If false we don't check and draw it directly (which is faster for small-low-face objects)\n        protected bool m_frustumCheckBeforeDrawEnabled = true;\n        protected Vector3? m_diffuseColor;  //diffuse color multiplier\n        protected Vector3 m_highlightColor; //used for objects that are selected in editor(shader adds this color to pixel shader output)\n        protected Vector4 m_mouseOverColorWire = new Vector4(0.5f, 1f, 0.5f, 0.5f);\n        protected Vector4 m_mouseOverColor = new Vector4(0.9f, 0.8f, 0.5f, 0.3f);\n        protected Vector3 m_selectionHighlightColor;\n        protected Vector3 m_collisionHighlightColor;\n        public Vector3? GetDiffuseColor() { return m_diffuseColor; }\n        public Vector3 GetHighlightColor() { return m_highlightColor; }\n        private void SetDiffuseColor(ref Vector3 vctColor) { m_diffuseColor = vctColor; }\n        private void SetHighlightColor(Vector3 vctColor) \n        {\n            if (MyMwcFinalBuildConstants.ENABLE_OBJECT_HIGHLIGHT)\n            {\n                m_highlightColor = vctColor;\n            }\n        }\n\n        protected void Init(StringBuilder hudLabelText, MyMwcObjectBuilder_Base objectBuilder)\n        {\n            this.m_objectBuilder = objectBuilder != null ? MyMwcUtils.DeepCopy(objectBuilder) : null;\n            this.Name = hudLabelText != null ? hudLabelText.ToString() : null;\n            \n            if (this.Name != null)\n            {\n                MyHud.AddText(this, new StringBuilder(this.Name));\n            }\n\n            if (MyFakes.TEST_MISSION_1_ENABLED == false)\n            {\n                DebugGenerateEntityName();\n            }\n        }\n\n        //  This is real initialization of this class!!! Instead of constructor.\n        protected void Init(StringBuilder hudLabelText, MyMwcObjectBuilder_Base objectBuilder, MyEntity parentObject)\n        {\n            Init(hudLabelText, objectBuilder);\n\n            if (parentObject != null)\n            {\n                parentObject.Children.Add(this);\n            }\n        }\n\n        //  This is real initialization of this class!!! Instead of constructor.\n        public virtual void Init(StringBuilder hudLabelText, MyModelsEnum? modelLod0Enum, MyModelsEnum? modelLod1Enum,\n                                 MyEntity parentObject, Vector3? scale, MyMwcObjectBuilder_Base objectBuilder)\n        {\n            Init(hudLabelText, objectBuilder);\n            \n            if (modelLod0Enum != null)\n            {\n                m_modelLod0 = MyModels.GetModelOnlyData(modelLod0Enum.Value);\n            }\n            if (modelLod1Enum != null)\n                m_modelLod1 = MyModels.GetModelOnlyData(modelLod1Enum.Value);\n\n            //TODO is this really clear? this means, that all entities, that does not have model, will have radius 1!!\n            this.LocalVolumeOffset = (m_modelLod0 != null) ? m_modelLod0.BoundingSphere.Center : Vector3.Zero;\n            this.LocalVolume = new BoundingSphere(Vector3.Zero, (m_modelLod0 != null) ? m_modelLod0.BoundingSphere.Radius : 1);\n\n            if (parentObject != null)\n            {\n                parentObject.Children.Add(this);\n            }\n\n            this.Scale = scale;\n        }\n\n        /// <summary>\n        /// Every object must have this method, but not every phys object must necessarily have something to cleanup\n        /// <remarks>\n        /// TODO: Implement pool auto clear / dispose.\n        /// TODO: Close is stupid unless we never forger clear all something will always linger in memory.\n        /// </remarks>\n        /// </summary>\n        public virtual void Close()\n        {\n            //BUG: I can't null another members because somehow new Init(...) on this object wont make him valid again.\n            //     ModelLod0 will be null and it crashes in pre render phys obj sorting comparer.\n            \n            for (int i = 0; i < this.children.Count; i++)\n            {\n                this.children[i].Close();\n            }\n\n            this.Children.Clear();\n\n            MyEntities.Remove(this, false);\n        }\n\n        // TODO: This shoul cover Volume\n        public virtual Vector3 GetSize()\n        {\n            if (m_modelLod0 != null)\n            {\n                return m_modelLod0.BoundingBoxSize;\n            }\n\n            BoundingBox boundingBox = BoundingBox.CreateFromSphere(worldVolume);\n            return boundingBox.Max - boundingBox.Min;\n        }\n\n        public virtual MyMwcObjectBuilder_Base GetObjectBuilder()\n        {\n            if (m_objectBuilder is MyMwcObjectBuilder_Object3dBase)\n            {\n                var builder = m_objectBuilder as MyMwcObjectBuilder_Object3dBase;\n                builder.PositionAndOrientation.Position = this.GetPosition();\n                builder.PositionAndOrientation.Up = this.WorldMatrix.Up;\n                builder.PositionAndOrientation.Forward = this.WorldMatrix.Forward;\n\n                return m_objectBuilder;\n            }\n            return m_objectBuilder;\n        }\n\n        #region Body Methods\n\n        protected void InitSpherePhysics(MyMaterialType materialType, MyModel model, float mass, float angularDamping, ushort collisionLayer, RigidBodyFlag rbFlag)\n        {\n            if (model == null)\n            {\n                return;\n            }\n\n            MyPhysicsObjects physobj = MyPhysics.physicsSystem.GetPhysicsObjects();\n            MyRBSphereElementDesc sphereDesc = physobj.GetRBSphereElementDesc();\n            sphereDesc.SetToDefault();\n            sphereDesc.m_RBMaterial = MyMaterialsConstants.GetMaterialProperties(materialType).PhysicsMaterial;\n            sphereDesc.m_Radius = model.BoundingSphere.Radius;\n            sphereDesc.m_Matrix.Translation = model.BoundingSphere.Center;\n            sphereDesc.m_CollisionLayer = collisionLayer;\n\n            MyRBSphereElement sphereEl = (MyRBSphereElement)physobj.CreateRBElement(sphereDesc);\n            System.Diagnostics.Debug.Assert(sphereEl != null);\n            if (sphereEl != null)\n            {\n                this.Physics = new MinerWars.AppCode.Game.Managers.PhysicsManager.Physics.MyGameRigidBody(this, mass, rbFlag)\n                {\n                    MaterialType = materialType,\n                    AngularDamping = angularDamping\n                };\n\n                this.Physics.AddElement(sphereEl, true);\n            }\n        }\n\n        protected void InitBoxPhysics(MyMaterialType materialType, MyModel model, float mass, float angularDamping, ushort collisionLayer, RigidBodyFlag rbFlag)\n        {\n            MyPhysicsObjects physobj = MyPhysics.physicsSystem.GetPhysicsObjects();\n\n            MyRBBoxElementDesc boxDesc = physobj.GetRBBoxElementDesc();\n            boxDesc.SetToDefault();\n            boxDesc.m_RBMaterial = MyMaterialsConstants.GetMaterialProperties(materialType).PhysicsMaterial;\n            boxDesc.m_Size = model.BoundingBoxSize;\n            boxDesc.m_Matrix.Translation = model.BoundingBox.GetCenter();\n            boxDesc.m_CollisionLayer = collisionLayer;\n\n            MyRBBoxElement boxEl = (MyRBBoxElement)physobj.CreateRBElement(boxDesc);\n            System.Diagnostics.Debug.Assert(boxEl != null);\n            if (boxEl != null)\n            {\n                this.Physics = new MinerWars.AppCode.Game.Managers.PhysicsManager.Physics.MyGameRigidBody(this, mass, rbFlag)\n                {\n                    MaterialType = materialType,\n                    AngularDamping = angularDamping\n                };\n\n                this.Physics.AddElement(boxEl, true);\n            }\n        }\n\n        protected void InitShperePhysicsUncollidable(MyMaterialType materialType, BoundingSphere boundingSphere, float mass, float angularDamping, RigidBodyFlag rbFlag)\n        {\n            MyPhysicsObjects physobj = MyPhysics.physicsSystem.GetPhysicsObjects();\n            MyRBSphereElementDesc sphereDesc = physobj.GetRBSphereElementDesc();\n            sphereDesc.SetToDefault();\n            sphereDesc.m_RBMaterial = MyMaterialsConstants.GetMaterialProperties(materialType).PhysicsMaterial;\n            sphereDesc.m_Radius = boundingSphere.Radius;\n            sphereDesc.m_Matrix.Translation = boundingSphere.Center;\n            sphereDesc.m_CollisionLayer = MyConstants.COLLISION_LAYER_UNCOLLIDABLE;\n\n            MyRBSphereElement sphereEl = (MyRBSphereElement)physobj.CreateRBElement(sphereDesc);\n            System.Diagnostics.Debug.Assert(sphereEl != null);\n            if (sphereEl != null)\n        {\n                this.Physics = new MinerWars.AppCode.Game.Managers.PhysicsManager.Physics.MyGameRigidBody(this, mass, rbFlag)\n                {\n                    MaterialType = materialType,\n                    AngularDamping = angularDamping\n                };\n\n                this.Physics.AddElement(sphereEl, true);\n        }\n\n            MinerWars.AppCode.Physics.MyPhysics.physicsSystem.GetRigidBodyModule().EnableCollisionInLayers(MyConstants.COLLISION_LAYER_UNCOLLIDABLE, MyConstants.COLLISION_LAYER_ALL, false);\n            MinerWars.AppCode.Physics.MyPhysics.physicsSystem.GetRigidBodyModule().EnableCollisionInLayers(MyConstants.COLLISION_LAYER_UNCOLLIDABLE, MyConstants.COLLISION_LAYER_UNCOLLIDABLE, false);\n            MinerWars.AppCode.Physics.MyPhysics.physicsSystem.GetRigidBodyModule().EnableCollisionInLayers(MyConstants.COLLISION_LAYER_UNCOLLIDABLE, MyConstants.COLLISION_LAYER_MISSILE, false);\n            MinerWars.AppCode.Physics.MyPhysics.physicsSystem.GetRigidBodyModule().EnableCollisionInLayers(MyConstants.COLLISION_LAYER_UNCOLLIDABLE, MyConstants.COLLISION_LAYER_VOXEL_DEBRIS, false);\n            MinerWars.AppCode.Physics.MyPhysics.physicsSystem.GetRigidBodyModule().EnableCollisionInLayers(MyConstants.COLLISION_LAYER_UNCOLLIDABLE, MyConstants.COLLISION_LAYER_MODEL_DEBRIS, false);\n        }\n\n        [Obsolete]\n        public virtual bool UpdateAfterIntegration()\n        {\n            return true;\n        }\n\n        [Obsolete]\n        public virtual void UpdateBeforeIntegration()\n        {\n        }\n\n        #endregion\n\n        /// <summary>\n        /// SetSelectedColor\n        /// </summary>\n        /// <param name=\"vctColor\"></param>\n        public virtual void HighlightEntity(ref Vector3 vctColor)\n        {\n            m_selectionHighlightColor = vctColor;\n            this.SetHighlightColor(m_selectionHighlightColor+m_collisionHighlightColor);\n\n            if (IsSelectableParentOnly() == false)\n            {\n                for (int i = 0; i < this.children.Count; i++)\n                {\n                    this.children[i].HighlightEntity(ref vctColor);\n                }\n            }\n        }\n\n        public virtual void DrawMouseOver(ref Vector3 highlightColor)\n        {\n            //@ mozny hack pro optimalizaci viditelnosti don't use IsVisible, nedoresena koncepce viditelnosti render/engine/game\n            /*BoundingSphere bSphere = m_highlitedEntity.WorldVolumeHr;\n            if (!MyCamera.IsInFrustum(ref bSphere))\n                return;*/\n\n            //@ generate particles for wireframe\n            BoundingBox localAABB = this.GetWorldBoundingBox();  //TODO Need to renamed to LocalHrAABB   //local hierarchical AABB\n            Matrix mat = Matrix.Identity;\n            MySimpleObjectDraw.DrawWireFramedBox(ref mat, ref localAABB, ref m_mouseOverColorWire, 0.01f, 1);\n\n            this.HighlightEntity(ref highlightColor);\n        }\n\n        /// <summary>\n        /// Clearhighlightning\n        /// </summary>\n        public virtual void ClearHighlightning()\n        {\n            m_selectionHighlightColor = Vector3.Zero;\n            this.SetHighlightColor(m_selectionHighlightColor + m_collisionHighlightColor);\n\n            if (IsSelectableParentOnly() == false)\n            {\n                for (int i = 0; i < this.children.Count; i++)\n                {\n                    this.children[i].ClearHighlightning();\n                }\n            }\n        }\n\n        /// <summary>\n        /// SetCollisionHighlighting\n        /// </summary>\n        public virtual void SetCollisionHighlighting(ref Vector3 vctColor)\n        {\n\n            m_collisionHighlightColor = vctColor;\n            this.SetHighlightColor(m_selectionHighlightColor + m_collisionHighlightColor);\n\n        }\n        \n        /// <summary>\n        /// IsSelectable\n        /// </summary>\n        /// <returns></returns>\n        public virtual bool IsSelectabale()\n        {\n            return true;\n        }\n\n        /// <summary>\n        /// When selecting children component(this), ask weather it can be selected separately\n        /// without selecting and highlighting its parent\n        /// </summary>\n        /// <returns></returns>\n        public virtual bool IsSelectableAsChild()\n        {\n            return false;\n        }\n\n        /// <summary>\n        /// When selected parent component(this), ask weather its children components will be\n        /// selected and highlighted too\n        /// </summary>\n        /// <returns></returns>\n        public virtual bool IsSelectableParentOnly()\n        {\n            return false;\n        }\n\n        #endregion\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/MyEntityIdRemapContext.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing System.Diagnostics;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Entities.WayPoints;\nusing MinerWars.AppCode.Game.Utils;\n\nnamespace MinerWars.AppCode.Game.Entities\n{\n    class MyEntityIdRemapContext : IMyEntityIdRemapContext\n    {\n        Dictionary<uint, uint> m_remapTable = new Dictionary<uint, uint>();\n\n        // Used for checking when something tries to remap same EntityId twice\n        HashSet<uint> m_targetIds = new HashSet<uint>();\n\n        public uint? RemapEntityId(uint? currentId)\n        {\n            if(!currentId.HasValue) return null;\n\n            //Debug.Assert(!m_targetIds.Contains(currentId.Value), \"Id is being remapped twice!\");\n\n            uint newValue;\n            if (!m_remapTable.TryGetValue(currentId.Value, out newValue))\n            {\n                newValue = MyEntityIdentifier.AllocateId().NumericValue;\n                m_targetIds.Add(newValue);\n                m_remapTable.Add(currentId.Value, newValue);\n            }\n            return newValue;\n        }\n\n        public string RemapWaypointGroupName(string currentName)\n        {\n            string name = currentName;\n            uint endNumber = 0;\n\n            // if the group exists, make another group name by adding _1, _2, _3, ...\n            while (MyWayPointGraph.GetPath(name) != null)\n            {\n                endNumber++;\n                if (endNumber == 1)\n                    name += \"_1\";\n                else\n                {\n                    int last_ = name.LastIndexOf('_');\n                    name = name.Substring(0, last_+1) + endNumber.ToString();\n                }\n                        \n                // name length cap: hashing\n                if (name.Length > MyWaypointConstants.MAXIMUM_WAYPOINT_PATH_NAME_LENGTH)\n                {\n                    endNumber = (uint)name.GetHashCode();\n                    name = \"G_\" + endNumber.ToString();\n                }\n            }\n            return name;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/MyEntityIdentifier.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Diagnostics;\nusing KeenSoftwareHouse.Library.Trace;\nusing MinerWars.AppCode.Game.Sessions;\n\nnamespace MinerWars.AppCode.Game.Entities\n{\n    internal static class MyEntityIdentifierExtension\n    {\n        public static uint? ToNullableUInt(this MyEntityIdentifier? entityId)\n        {\n            return MyEntityIdentifier.ToNullableInt(entityId);\n        }\n\n        public static MyEntityIdentifier ToEntityId(this uint entityId)\n        {\n            return new MyEntityIdentifier(entityId);\n        }\n\n        public static MyEntityIdentifier? ToEntityId(this uint? entityId)\n        {\n            return entityId.HasValue ? new MyEntityIdentifier(entityId.Value) : (MyEntityIdentifier?)null;\n        }\n    }\n\n    internal struct MyEntityIdentifier\n    {\n        public const uint MAX_PER_USER_ENTITY_ID = 256 * 256 * 256;\n\n        const int DEFAULT_DICTIONARY_SIZE = 30000;\n        const uint MAX_PER_USER_ENTITY_ID_COULD_BE_ALLOCATED = MAX_PER_USER_ENTITY_ID - 7216;\n\n        public uint NumericValue\n        {\n            get\n            {\n                return m_numericValue;\n            }\n        }\n\n        public byte PlayerId\n        {\n            get\n            {\n                return (byte)(NumericValue / MAX_PER_USER_ENTITY_ID);\n            }\n        }\n\n        public uint PerUserEntityId\n        {\n            get\n            {\n                return NumericValue % MAX_PER_USER_ENTITY_ID;\n            }\n        }\n\n        public MyEntityIdentifier(uint entityId)\n        {\n            m_numericValue = entityId;\n        }\n\n        public MyEntityIdentifier(byte userId, uint perUserEntityId)\n        {\n            if (perUserEntityId > MAX_PER_USER_ENTITY_ID)\n            {\n                throw new ArgumentException(\"Per user entity id cannot be larger than 256^3 (16777216)\", \"perUserEntityId\");\n            }\n            m_numericValue = userId * MAX_PER_USER_ENTITY_ID + perUserEntityId;\n        }\n\n        public static MyEntityIdentifier? FromNullableInt(uint? value)\n        {\n            if (value.HasValue)\n            {\n                return new MyEntityIdentifier(value.Value);\n            }\n            else\n            {\n                return null;\n            }\n        }\n\n        public static uint? ToNullableInt(MyEntityIdentifier? entityId)\n        {\n            if (entityId.HasValue)\n            {\n                return entityId.Value.NumericValue;\n            }\n            else\n            {\n                return null;\n            }\n        }\n\n        public static byte CurrentPlayerId\n        {\n            get\n            {\n                return m_currentUserId;\n            }\n            set\n            {\n                m_currentUserId = value;\n                m_lastId = m_currentUserId * MAX_PER_USER_ENTITY_ID;\n            }\n        }\n\n        uint m_numericValue;\n\n        static Dictionary<uint, MyEntity> m_entityList = new Dictionary<uint, MyEntity>(DEFAULT_DICTIONARY_SIZE);\n        static uint m_lastId = 1;\n        static bool m_allocationSuspended = false;\n        static byte m_currentUserId = 1;\n\n        /// <summary>\n        /// Freezes allocating entity ids.\n        /// This is important, because during load, no entity cannot allocate new id, because it could allocate id which already has entity which will be loaded soon.\n        /// </summary>\n        public static bool AllocationSuspended\n        {\n            get\n            {\n                return m_allocationSuspended;\n            }\n            set\n            {\n                m_allocationSuspended = value;\n                //MyTrace.Send(TraceWindow.EntityId, value ? \"Allocation suspended\" : \"Allocation resumed\" ); \n            }\n        }\n\n        /// <summary>\n        /// Adds entity with existing ID\n        /// </summary>\n        /// <param name=\"entity\"></param>\n        public static void AddEntityWithId(MyEntity entity)\n        {\n            Debug.Assert(entity.EntityId.HasValue, \"Entity must have id!, use MyEntityIdentifier.Allocate() to get free id\");\n            Debug.Assert(!m_entityList.ContainsKey(entity.EntityId.Value.NumericValue), \"Entity with this key already exists in entity list! This can't happen.\");\n\n            m_entityList.Add(entity.EntityId.Value.NumericValue, entity);\n            //MyTrace.Send(TraceWindow.EntityId, \"Added entity: \" + entity.EntityId.ToString());\n            if (entity.EntityId.Value.PlayerId == CurrentPlayerId && m_lastId < entity.EntityId.Value.NumericValue && entity.EntityId.Value.PerUserEntityId <= MAX_PER_USER_ENTITY_ID_COULD_BE_ALLOCATED)\n            {\n                m_lastId = entity.EntityId.Value.NumericValue;\n                //MyTrace.Send(TraceWindow.EntityId, \"New last id: \" + new MyEntityIdentifier(m_lastId).ToString());\n            }\n        }\n\n        private static bool TestAllocation(byte? playerId)\n        {\n            if (playerId.HasValue && MyMultiplayerGameplay.IsRunning)\n            {\n                if (MyMultiplayerGameplay.Static.IsHost)\n                {\n                    return playerId.Value == 0 || playerId.Value == CurrentPlayerId;\n                }\n                else\n                {\n                    return playerId.Value == CurrentPlayerId;\n                }\n            }\n            return true;\n        }\n\n        /// <summary>\n        /// Allocated new entity ID (won't add to list)\n        /// Entity with this ID should be added immediatelly\n        /// </summary>\n        public static MyEntityIdentifier AllocateId(byte? playerId = null)\n        {\n            Debug.Assert(!AllocationSuspended, \"Cannot allocate new entity id, becase allocation is suspended - probably because of load.\");\n            Debug.Assert(TestAllocation(playerId), \"PlayerId is invalid!\");\n\n            byte currentPlayerId = playerId ?? CurrentPlayerId;\n\n            // Find next free id\n            uint perUserId = m_lastId % MAX_PER_USER_ENTITY_ID;\n            uint newId;\n            do\n            {\n                perUserId++;\n                if (perUserId > MAX_PER_USER_ENTITY_ID_COULD_BE_ALLOCATED)\n                {\n                    perUserId = 1;\n                }\n                newId = currentPlayerId * MAX_PER_USER_ENTITY_ID + perUserId;\n            }\n            while (m_entityList.ContainsKey(newId));\n            m_lastId = newId;\n            //do\n            //{\n            //    m_lastId++;                \n            //    m_lastId = CurrentUserId * MaxPerUserEntityId + m_lastId % MaxPerUserEntityId; // Clamp between 0 and MaxPerUserEntityId\n            //    //m_lastId = CurrentUserId * MaxPerUserEntityId + m_lastId % MAX_PER_USER_ENTITY_ID_COULD_BE_ALLOCATED; // Clamp between 0 and MAX_PER_USER_ENTITY_ID_COULD_BE_ALLOCATED\n            //}\n            //while (m_entityList.ContainsKey(m_lastId));\n\n            var result = new MyEntityIdentifier(m_lastId);\n            //MyTrace.Send(TraceWindow.EntityId, \"Allocated id (and also last id): \" + result.ToString());\n            return result;\n        }\n\n        public static MyEntityIdentifier AllocatePlayershipId()\n        {\n            uint perUserId = MAX_PER_USER_ENTITY_ID_COULD_BE_ALLOCATED;\n            MyEntityIdentifier entityId;\n            do\n            {\n                perUserId++;\n                entityId = new MyEntityIdentifier(CurrentPlayerId, perUserId);\n            } while (m_entityList.ContainsKey(entityId.NumericValue));\n            return entityId;\n        }\n\n        public static void RemoveEntity(MyEntityIdentifier entityIdentifier)\n        {\n            //MyTrace.Send(TraceWindow.EntityId, \"Remove entity: \" + entityIdentifier.ToString());\n            m_entityList.Remove(entityIdentifier.NumericValue);\n        }\n\n        public static MyEntity GetEntityByIdOrNull(MyEntityIdentifier entityId)\n        {\n            MyEntity entity;\n            m_entityList.TryGetValue(entityId.NumericValue, out entity);\n            return entity;\n        }\n\n        public static bool TryGetEntity(MyEntityIdentifier entityId, out MyEntity entity)\n        {\n            return m_entityList.TryGetValue(entityId.NumericValue, out entity);\n        }\n\n        public static bool TryGetEntity<T>(MyEntityIdentifier entityId, out T entity) where T : MyEntity\n        {\n            MyEntity e;\n            bool result = m_entityList.TryGetValue(entityId.NumericValue, out e);\n            entity = e as T;\n            return result && entity != null;\n        }\n\n        public static MyEntity GetEntityById(MyEntityIdentifier entityId)\n        {\n            return m_entityList[entityId.NumericValue];\n        }\n\n        public static bool ExistsById(MyEntityIdentifier entityId)\n        {\n            return m_entityList.ContainsKey(entityId.NumericValue);\n        }\n\n        public static void Clear()\n        {\n            m_entityList.Clear();\n            m_lastId = 1;\n        }\n\n        public override string ToString()\n        {\n            return String.Format(\"Value: {0}, User: {1}, Per user id: {2}\", m_numericValue, PlayerId, PerUserEntityId);\n        }\n\n        internal static void Reset()\n        {\n            m_entityList = new Dictionary<uint, MyEntity>(DEFAULT_DICTIONARY_SIZE);\n            m_lastId = 1;\n            m_allocationSuspended = false;\n            m_currentUserId = 1;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/MyGamePruningStructure.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Entities.WayPoints;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Physics;\n\nnamespace MinerWars.AppCode.Game.Entities\n{\n    // For space queries on all entities (including children, invisible objects and objects without physics)\n    static class MyGamePruningStructure\n    {\n        [Flags]\n        internal enum QueryFlags: uint\n        {\n            Waypoints = 1u << 0,\n            Others = 1u << 31,\n            All = ~0u,\n        }\n\n        // A tree for each query type.\n        // If you query for a specific type, consider adding a new QueryFlag and AABBTree (so that you don't have to filter the result afterwards).\n        static MyDynamicAABBTree m_waypoints;\n        static MyDynamicAABBTree m_others;\n\n        static MyGamePruningStructure()\n        {\n            Init();\n        }\n\n        static void Init()\n        {\n            m_waypoints = new MyDynamicAABBTree(MyConstants.GAME_PRUNING_STRUCTURE_AABB_EXTENSION);\n            m_others = new MyDynamicAABBTree(MyConstants.GAME_PRUNING_STRUCTURE_AABB_EXTENSION);\n        }\n\n        public static void Add(MyEntity entity)\n        {\n            if (entity.GamePruningProxyId != MyConstants.GAME_PRUNING_STRUCTURE_PROXY_ID_NOT_INSERTED) return;  // already inserted\n\n            BoundingBox bbox = entity.WorldAABB;\n            if (bbox.Size() == Vector3.Zero) return;  // don't add entities with zero bounding boxes\n\n            if (entity is MyWayPoint)\n                entity.GamePruningProxyId = m_waypoints.AddProxy(ref bbox, entity, 0);\n            else\n                entity.GamePruningProxyId = m_others.AddProxy(ref bbox, entity, 0);\n        }\n\n        public static void Remove(MyEntity entity)\n        {\n            if (entity.GamePruningProxyId == MyConstants.GAME_PRUNING_STRUCTURE_PROXY_ID_NOT_INSERTED) return;  // not inserted\n\n            if (entity is MyWayPoint)\n                m_waypoints.RemoveProxy(entity.GamePruningProxyId);\n            else\n                m_others.RemoveProxy(entity.GamePruningProxyId);\n\n            entity.GamePruningProxyId = MyConstants.GAME_PRUNING_STRUCTURE_PROXY_ID_NOT_INSERTED;\n        }\n\n        public static void Clear()\n        {\n            Init();\n            m_waypoints.Clear();\n            m_others.Clear();\n        }\n\n        public static void Move(MyEntity entity)\n        {\n            if (entity.GamePruningProxyId == MyConstants.GAME_PRUNING_STRUCTURE_PROXY_ID_NOT_INSERTED) return;\n\n            BoundingBox bbox = entity.WorldAABB;\n            if (bbox.Size() == Vector3.Zero)  // remove entities with zero bounding boxes\n            {\n                Remove(entity);\n                return;\n            }\n\n            if (entity is MyWayPoint)\n                m_waypoints.MoveProxy(entity.GamePruningProxyId, ref bbox, Vector3.Zero);\n            else\n                m_others.MoveProxy(entity.GamePruningProxyId, ref bbox, Vector3.Zero);\n        }\n\n        public static List<MyEntity> GetAllEntitiesInBox(ref BoundingBox box, QueryFlags flags)\n        {\n            var result = new List<MyEntity>();\n\n            if ((flags & QueryFlags.Waypoints) != 0)\n                m_waypoints.OverlapAllBoundingBox(ref box, result, 0, false);\n            if ((flags & QueryFlags.Others) != 0)\n                m_others.OverlapAllBoundingBox(ref box, result, 0, false);\n            \n            return result;\n        }\n    }\n}\n\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Notifications/IMyNotifyEntityChanged.cs",
    "content": "﻿namespace MinerWars.AppCode.Game.Managers.EntityManager.Notifications\n{\n    /// <summary>\n    /// Provides interface that notifies about changes of shared values.\n    /// </summary>\n    public interface IMyNotifyEntityChanged\n    {\n        /// <summary>\n        /// Called when [world position changed].\n        /// </summary>\n        /// <param name=\"source\">The source object that caused this event.</param>\n        void OnWorldPositionChanged(object source);\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Ships/AI/Jobs/MyDetectEnemiesJob.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWarsMath;\nusing ParallelTasks;\nusing MinerWars.AppCode.Physics;\nusing KeenSoftwareHouse.Library.Memory;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.AppCode.Game.Physics;\nusing MinerWars.AppCode.Game.Entities.Weapons;\nusing MinerWars.AppCode.Game.Entities.Prefabs;\nusing MinerWars.AppCode.Game.Entities.SubObjects;\nusing MinerWars.AppCode.Game.Entities.Weapons.Ammo.UniversalLauncher;\n\nnamespace MinerWars.AppCode.Game.Entities.Ships.AI.Jobs\n{\n    class MyDetectEnemiesJob : IWork\n    {\n        MySmallShipBot m_bot;\n        MyMwcObjectBuilder_FactionEnum m_botFaction;\n        float m_seeDistance;\n        Matrix m_botWorldMatrix;\n        Vector3 m_position;\n\n        private MyEntity m_closestEnemy;\n        public MyEntity ClosestEnemy\n        {\n            get { return m_closestEnemy; }\n            set\n            {\n                if (m_closestEnemy != null)\n                {\n                    m_closestEnemy.OnClose -= m_closestEnemy_OnClose;\n                }\n                m_closestEnemy = value;\n                if (m_closestEnemy != null)\n                {\n                    m_closestEnemy.OnClose += m_closestEnemy_OnClose;\n                }\n            }\n        }\n\n        private MyEntity m_closestVisual;\n        public MyEntity ClosestVisual\n        {\n            get { return m_closestVisual; }\n            set\n            {\n                if (m_closestVisual != null)\n                {\n                    m_closestVisual.OnClose -= m_closestVisual_OnClose;\n                }\n                m_closestVisual = value;\n                if (m_closestVisual != null)\n                {\n                    m_closestVisual.OnClose += m_closestVisual_OnClose;\n                }\n            }\n        }\n\n        public void Start(MySmallShipBot bot)\n        {\n            m_bot = bot;\n            m_botFaction = bot.Faction;\n            m_seeDistance = bot.SeeDistance;\n            m_botWorldMatrix = bot.WorldMatrix;\n            m_position = bot.GetPosition();\n            m_closestEnemy_OnClose = closestEnemy_OnClose;\n            m_closestVisual_OnClose = closestVisual_OnClose;\n            m_bot.OnClose += m_bot_OnClose;\n        }\n\n        void m_bot_OnClose(MyEntity obj)\n        {\n            m_bot = null;\n            Finish();\n        }\n\n        Action<MyEntity> m_closestEnemy_OnClose;\n        Action<MyEntity> m_closestVisual_OnClose;\n\n        void closestEnemy_OnClose(MyEntity obj)\n        {\n            m_closestEnemy = null;\n        }\n\n        void closestVisual_OnClose(MyEntity obj)\n        {\n            m_closestVisual = null;\n        }\n\n        public void DoWork()\n        {\n            //  Search for target to attack\n            ClosestEnemy = null;\n            ClosestVisual = null;\n\n            float distanceSqr = m_seeDistance * m_seeDistance;\n            float closestEnemyDistanceSqr = float.PositiveInfinity;\n            float closestVisualDistanceSqr = float.PositiveInfinity;\n\n            using (var rbFounded = PoolList<MyRBElement>.Get())\n            {\n                try\n                {\n                    MyEntities.EntityCloseLock.AcquireShared();\n\n                    MyDynamicAABBTree prunningStructure = MyPhysics.physicsSystem.GetRigidBodyModule().GetPruningStructure();\n\n                    BoundingBox rbInputElementGetWorldSpaceAABB = new BoundingBox(\n                        m_botWorldMatrix.Translation - new Vector3(m_seeDistance),\n                        m_botWorldMatrix.Translation + new Vector3(m_seeDistance));\n                    prunningStructure.OverlapAllBoundingBox(ref rbInputElementGetWorldSpaceAABB, rbFounded, (uint)MyElementFlag.EF_RB_ELEMENT);\n\n                    //now try find spot\n                    foreach (MyRBElement rb in rbFounded)\n                    {\n\n                        if (m_bot == null)\n                            return;\n\n                        var rigidBody = rb.GetRigidBody();\n                        if (rigidBody == null)\n                            continue;\n\n                        MyEntity entity = ((MyPhysicsBody)rigidBody.m_UserData).Entity;\n                        if (entity == m_bot || entity == null || entity.AIPriority == -1) \n                            continue;\n\n\n                        entity = entity.GetBaseEntity();    // Large weapons\n\n                        // Ignore spoiled holograms\n                        if (m_bot.IsSpoiledHologram(entity))\n                        {\n                            continue;\n                        }\n\n                        // Don't attack disabled weapons\n                        MyPrefabLargeWeapon largeWeapon = entity as MyPrefabLargeWeapon;\n                        MySmallShip smallShip = entity as MySmallShip;\n                        MyPrefabLargeShip largeShip = entity as MyPrefabLargeShip;\n\n                        if (largeWeapon != null && !largeWeapon.IsWorking())\n                        {\n                            continue;\n                        }\n\n                        // Test smallships and largeweapons\n                        if (smallShip != null || largeWeapon != null || largeShip != null)\n                        {\n                            // Is enemy?\n                            if (MyFactions.GetFactionsRelation(m_bot, entity) == MyFactionRelationEnum.Enemy && CanSeeTarget(m_bot, entity))\n                            {\n                                var entityDistanceSqr = Vector3.DistanceSquared(entity.GetPosition(), m_position);\n\n                                if (entityDistanceSqr < distanceSqr &&\n                                    (ClosestEnemy == null || entity.AIPriority >= ClosestEnemy.AIPriority) &&\n                                    (entityDistanceSqr < closestEnemyDistanceSqr || entity.AIPriority > ClosestEnemy.AIPriority))\n                                {\n                                    MyLine line = new MyLine(m_position, entity.GetPosition(), true);\n                                    var result = MyEntities.GetIntersectionWithLine(ref line, m_bot, entity, true, ignoreChilds: true);\n                                    if (!result.HasValue)\n                                    {\n                                        // Visual Detection - ignore visualy detected targets if they are further than any normaly detected target\n                                        if (IsVisualyDetected(smallShip))\n                                        {\n                                            if (entityDistanceSqr < closestVisualDistanceSqr)\n                                            {\n                                                ClosestVisual = entity;\n                                                closestVisualDistanceSqr = entityDistanceSqr;\n                                            }\n                                        }\n                                        else\n                                        {\n                                            closestEnemyDistanceSqr = entityDistanceSqr;\n                                            ClosestEnemy = entity;\n                                        }\n                                    }\n                                }\n                            }\n                        }\n                    }\n                }\n                finally\n                {\n                    MyEntities.EntityCloseLock.ReleaseShared();\n                }\n            }\n        }\n\n        public void Finish()\n        {\n            if (m_bot != null)\n            {\n                m_bot.OnClose -= new Action<MyEntity>(m_bot_OnClose);\n            }\n            if (m_closestEnemy != null)\n            {\n                m_closestEnemy.OnClose -= m_closestEnemy_OnClose;\n            }\n            if (m_closestVisual != null)\n            {\n                m_closestVisual.OnClose -= m_closestVisual_OnClose;\n            }\n        }\n\n        /// <summary>\n        /// Returns if bot can see target. If bot's fov is enabled and target is smallship which has radar jammer, then bot can see only targets in front of him\n        /// </summary>\n        /// <param name=\"target\">Target</param>\n        private bool CanSeeTarget(MySmallShipBot me, MyEntity target) \n        {\n            bool canSeeTarget = true;\n            if (MyFakes.ENABLE_BOTS_FOV_WHEN_RADAR_JAMMER)\n            {\n                MySmallShip smallShipTarget = target as MySmallShip;\n                if (smallShipTarget != null && !smallShipTarget.IsHologram && smallShipTarget.HasRadarJammerActive()) \n                {\n                    float distanceSqr = (me.GetPosition() - target.GetPosition()).LengthSquared();\n                    float rangeOfViewSqr = smallShipTarget.IsHiddenFromBots() ? MyAIConstants.BOT_FOV_RANGE_HIDDEN : MyAIConstants.BOT_FOV_RANGE;\n                    float targetRange = Vector3.Dot(m_botWorldMatrix.Forward, target.GetPosition() - me.GetPosition());\n\n                    canSeeTarget =\n                        targetRange <= rangeOfViewSqr &&\n                        Vector3.Dot(m_botWorldMatrix.Forward, Vector3.Normalize(target.GetPosition() - m_position)) >= MyAIConstants.BOT_FOV_COS;\n                }                \n            }\n            return canSeeTarget;\n        }\n\n        private bool IsVisualyDetected(MySmallShip smallShip)\n        {\n            return MyFakes.ENABLE_BOTS_FOV_WHEN_RADAR_JAMMER && smallShip != null && smallShip.HasRadarJammerActive();\n        }\n\n        public WorkOptions Options\n        {\n            get { return new WorkOptions() { MaximumThreads = 1 }; }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Ships/AI/Jobs/MyTestPositionJob.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Utils;\nusing ParallelTasks;\nusing MinerWars.CommonLIB.AppCode.Utils;\n\nnamespace MinerWars.AppCode.Game.Entities.Ships.AI.Jobs\n{\n    class MyTestPositionJob : IWork\n    {\n        MySmallShipBot m_bot;\n        Vector3 m_position;\n        Vector3 m_targetPosition;\n        Vector3 m_up;\n\n        Vector3[] m_points;\n\n        public Vector3? Result;\n\n        public MyTestPositionJob()\n        {\n            m_points = new Vector3[4];\n        }\n\n        public void Start(MySmallShipBot bot, Vector3 position, Vector3 targetPosition)\n        {\n            m_bot = bot;\n            m_position = position;\n            m_targetPosition = targetPosition;\n            m_up = bot.WorldMatrix.Up;\n\n            float delta = 1.0f;\n            m_points[0] = new Vector3(m_bot.LocalAABB.Max.X * delta, m_bot.LocalAABB.Max.Y * delta, m_bot.LocalAABB.Max.Z);\n            m_points[1] = new Vector3(m_bot.LocalAABB.Min.X * delta, m_bot.LocalAABB.Max.Y * delta, m_bot.LocalAABB.Max.Z);\n            m_points[2] = new Vector3(m_bot.LocalAABB.Max.X * delta, m_bot.LocalAABB.Min.Y, m_bot.LocalAABB.Max.Z);\n            m_points[3] = new Vector3(m_bot.LocalAABB.Min.X * delta, m_bot.LocalAABB.Min.Y, m_bot.LocalAABB.Max.Z);\n\n            Result = null;\n            m_bot.OnClose += m_bot_OnClose;\n        }\n\n        void m_bot_OnClose(MyEntity obj)\n        {\n            m_bot = null;\n        }\n\n        public void DoWork()\n        {\n            try\n            {\n                MyEntities.EntityCloseLock.AcquireShared();\n\n                if (m_bot == null)\n                {\n                    return;\n                }\n\n                BoundingSphere boundingSphere = new BoundingSphere(m_position, m_bot.WorldVolume.Radius * 2.0f);\n                if (MyEntities.GetIntersectionWithSphere(ref boundingSphere) != null)\n                {\n                    return;\n                }\n\n                Matrix transform = Matrix.CreateWorld(m_position, MyMwcUtils.Normalize(m_targetPosition - m_position), m_up);\n                float distanceToRoutePoint = Vector3.Dot(m_targetPosition - m_position, transform.Forward);\n\n                for (int i = 0; i < m_points.Length; i++)\n                {\n                    Vector3 transformedPoint = Vector3.Transform(m_points[i], transform);\n                    MyLine line = new MyLine(transformedPoint, transformedPoint + transform.Forward * distanceToRoutePoint, true);\n\n                    var result = MyEntities.GetIntersectionWithLine(ref line, m_bot, null, true);\n                    if (result.HasValue)\n                    {\n                        // Collision detected\n                        return;\n                    }\n                }\n\n                Result = m_position;\n            }\n            finally\n            {\n                if (m_bot != null)\n                {\n                    m_bot.OnClose -= m_bot_OnClose;\n                }\n                MyEntities.EntityCloseLock.ReleaseShared();\n            }\n        }\n\n        public WorkOptions Options\n        {\n            get { return new WorkOptions() { MaximumThreads = 1 }; }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Ships/AI/MyAtackedByEnemyDesire.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.AppCode.Game.World.Global;\n\nnamespace MinerWars.AppCode.Game.Entities.Ships.AI\n{\n    internal class MyAttackedByEnemyDesire : MyBotDesire\n    {\n        public MyEntity DamageSource { get; set; }\n        private bool invalid;\n\n        public MyAttackedByEnemyDesire(MyEntity damageSource)\n            : base(BotDesireType.ATACKED_BY_ENEMY)\n        {\n            DamageSource = damageSource.GetBaseEntity();\n        }\n\n        public override MyEntity GetEnemy()\n        {\n            return DamageSource;\n        }\n\n        public override bool IsInvalid(MySmallShipBot bot)\n        {\n            return invalid || DamageSource.IsDead() || bot.IsLeaderLost() || bot.IsSpoiledHologram(DamageSource) || MyFactions.GetFactionsRelation(bot, DamageSource) != MyFactionRelationEnum.Enemy || !DamageSource.Activated;\n        }\n\n        public override void OnEntityRemove(MyEntity entity)\n        {\n            base.OnEntityRemove(entity);\n\n            if (entity == DamageSource)\n            {\n                invalid = true;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Ships/AI/MyAttackFormations.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\n\nnamespace MinerWars.AppCode.Game.Entities.Ships.AI\n{\n    internal class MyAttackFormations\n    {\n        const float FORMATION_LEADER_RANGE_SQR = 500 * 500;\n        const float FORMATION_FORWARD_PROJECTION = 400;\n\n        public class MyAttackFormation\n        {\n            public MyEntity Target { get; set; }\n            public MyEntity Leader { get; set; }\n            public List<MyEntity> Followers { get; set; }\n\n            public MyAttackFormation()\n            {\n                Followers = new List<MyEntity>();\n            }\n\n            public void Add(MyEntity entity)\n            {\n                Followers.Add(entity);\n            }\n\n            public Vector3 GetFormationPosition(MyEntity entity)\n            {\n                if (entity == Leader)\n                {\n                    return Target.GetPosition();\n                }\n\n                int index = Followers.IndexOf(entity);\n                if (index >= 0)\n                {\n                    float FORMATION_SPACING = 100;\n\n                    Vector3 leaderToTarget = Target.GetPosition() - Leader.GetPosition();\n                    Matrix matrix = Matrix.CreateWorld(Leader.GetPosition(), leaderToTarget, Leader.WorldMatrix.Up);\n\n                    int sideIndex = index / 2 + 1;\n                    int sideSign = index % 2 * 2 - 1;   // just -1 is left and +1 right\n\n                    leaderToTarget.Normalize();\n\n                    return Leader.GetPosition() + leaderToTarget * FORMATION_FORWARD_PROJECTION + matrix.Left * sideIndex * sideSign * FORMATION_SPACING;\n                }\n\n                return Vector3.Zero;\n            }\n        }\n\n        public static MyAttackFormations Instance = new MyAttackFormations();\n        public List<MyAttackFormation> Formations { get; set; }\n\n        public MyAttackFormations()\n        {\n            Formations = new List<MyAttackFormation>();\n        }\n\n        public Vector3 GetFormationPosition(MyEntity entity, MyEntity target)\n        {\n            MyAttackFormation entityFormation = null;\n            \n            // Try find existing formation (if entity is already in some)\n            foreach (var formation in Formations)\n            {\n                if (formation.Target == target)\n                {\n                    // Already  in formation as leader or follower\n                    if (formation.Leader == entity || formation.Followers.Contains(entity))\n                    {\n                        entityFormation = formation;\n                        break;\n                    }\n                }\n            }\n\n            // Try enter existing formation (if it is close enough)\n            if (entityFormation == null)\n            {\n                foreach (var formation in Formations)\n                {\n                    if (formation.Target == target)\n                    {\n                        if ((formation.Leader.GetPosition() - entity.GetPosition()).LengthSquared() <= FORMATION_LEADER_RANGE_SQR)\n                        {\n                            formation.Add(entity);\n                            entityFormation = formation;\n                            break;\n                        }\n                    }\n                }\n            }\n\n            // All failed, create new formation\n            if (entityFormation == null)\n            {\n                entityFormation = new MyAttackFormation();\n                entityFormation.Target = target;\n                entityFormation.Leader = entity;\n                Formations.Add(entityFormation);\n            }\n\n            return entityFormation.GetFormationPosition(entity);\n        }\n\n        public void RemoveEntity(MyEntity entity)\n        {\n            foreach (MyAttackFormation formation in Formations.ToArray())\n            {\n                if (formation.Leader == entity)\n                {\n                    Formations.Remove(formation);\n                }\n\n                if (formation.Followers.Remove(entity))\n                {\n                    break;\n                }\n            }\n        }\n\n        public void Update()\n        {\n            //Debug.WriteLine(\"Formations Count: \" + Formations.Count);\n            // TODO: sort formations, every follower should travel only shortest route to formation position\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Ships/AI/MyBotAITemplates.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing System.Diagnostics;\nusing MinerWars.AppCode.Game.Managers.Session;\n\nnamespace MinerWars.AppCode.Game.Entities.Ships.AI\n{\n    public class MyBotAITemplate\n    {\n        public MyAITemplateEnum TemplateId { get; set; }\n\n        static int DESIRE_TYPE_COUNT = Enum.GetValues(typeof(BotDesireType)).Length;\n\n        private BotBehaviorType[] m_selectedBehaviors;\n        private int[] m_priorities;\n\n        public MyBotAITemplate(MyAITemplateEnum templateId, BotBehaviorType idle, BotBehaviorType seeEnemy, BotBehaviorType atackedByEnemy, BotBehaviorType lowHealth, BotBehaviorType noAmmo, BotBehaviorType curious,\n                             int idlePriority, int seeEnemyPriority, int atackedByEnemyPriority, int lowHealthPriority, int noAmmoPriority, int curiousPriority)\n        {\n            TemplateId = templateId;\n\n            m_selectedBehaviors = new BotBehaviorType[DESIRE_TYPE_COUNT];\n\n            m_selectedBehaviors[(int)BotDesireType.IDLE] = idle;\n            m_selectedBehaviors[(int)BotDesireType.SEE_ENEMY] = seeEnemy;\n            m_selectedBehaviors[(int)BotDesireType.ATACKED_BY_ENEMY] = atackedByEnemy;\n            m_selectedBehaviors[(int)BotDesireType.NO_AMMO] = noAmmo;\n            m_selectedBehaviors[(int)BotDesireType.LOW_HEALTH] = lowHealth;\n            m_selectedBehaviors[(int)BotDesireType.CURIOUS] = curious;\n            m_selectedBehaviors[(int)BotDesireType.KILL] = BotBehaviorType.ATTACK;\n            m_selectedBehaviors[(int)BotDesireType.FLASHED] = BotBehaviorType.PANIC;\n\n            m_priorities = new int[DESIRE_TYPE_COUNT];\n\n            m_priorities[(int)BotDesireType.IDLE] = idlePriority;\n            m_priorities[(int)BotDesireType.SEE_ENEMY] = seeEnemyPriority;\n            m_priorities[(int)BotDesireType.ATACKED_BY_ENEMY] = atackedByEnemyPriority;\n            m_priorities[(int)BotDesireType.NO_AMMO] = noAmmoPriority;\n            m_priorities[(int)BotDesireType.LOW_HEALTH] = lowHealthPriority;\n            m_priorities[(int)BotDesireType.CURIOUS] = curiousPriority;\n            m_priorities[(int)BotDesireType.KILL] = 1000;\n            m_priorities[(int)BotDesireType.FLASHED] = 2000;\n\n            // IMPORTANT: Don't forget to modify GetCopy() method\n        }\n\n        internal int CompareDesires(MyBotDesire a, MyBotDesire b)\n        {\n            if (a.DesireType == b.DesireType)\n            {\n                var ta = a.GetEnemy();\n                var tb = b.GetEnemy();\n\n                int priorityA = ta != null ? ta.AIPriority : -1;\n                int priorityB = tb != null ? tb.AIPriority : -1;\n\n                return priorityA.CompareTo(priorityB);\n            }\n            \n            return m_priorities[(int)a.DesireType] - m_priorities[(int)b.DesireType];\n        }\n\n        public BotBehaviorType GetBehaviorType(BotDesireType desire)\n        {\n            return m_selectedBehaviors[(int)desire];\n        }\n\n        public MyBotBehaviorBase GetBehavior(BotDesireType desire)\n        {\n            BotBehaviorType behaviorType = m_selectedBehaviors[(int)desire];\n            switch (behaviorType)\n            {\n                case BotBehaviorType.IGNORE:\n                    return null;\n                case BotBehaviorType.PATROL:\n                    return new MyBotBehaviorPatrol();\n                case BotBehaviorType.FOLLOW:\n                    return new MyBotBehaviorFollow();\n                case BotBehaviorType.ATTACK:\n                    return new MyBotBehaviorAttack();\n                case BotBehaviorType.RUN_AWAY:\n                    return new MyBotBehaviorRunAway();\n                case BotBehaviorType.PANIC:\n                    return new MyBotBehaviorPanic();\n                case BotBehaviorType.KAMIKADZE:\n                    return new MyBotBehaviorKamikadze();\n                case BotBehaviorType.IDLE:\n                    return new MyBotBehaviorIdle();\n                case BotBehaviorType.CURIOUS:\n                    return new MyBotBehaviorCurious();\n            }\n            System.Diagnostics.Debug.Fail(\"Unexpected behavior: \" + behaviorType);\n            return null;\n        }\n\n        public bool IsIgnored(BotDesireType desire)\n        {\n            return m_selectedBehaviors[(int)desire] == BotBehaviorType.IGNORE;\n        }\n\n        public bool IsPatroling()\n        {\n            return m_selectedBehaviors[(int)BotDesireType.IDLE] == BotBehaviorType.PATROL;\n        }\n\n        public MyBotAITemplate GetCopy()\n        {\n            return new MyBotAITemplate(TemplateId,\n\n                m_selectedBehaviors[(int)BotDesireType.IDLE],\n                m_selectedBehaviors[(int)BotDesireType.SEE_ENEMY],\n                m_selectedBehaviors[(int)BotDesireType.ATACKED_BY_ENEMY],\n                m_selectedBehaviors[(int)BotDesireType.LOW_HEALTH],\n                m_selectedBehaviors[(int)BotDesireType.NO_AMMO],\n                m_selectedBehaviors[(int)BotDesireType.CURIOUS],\n\n                m_priorities[(int)BotDesireType.IDLE],\n                m_priorities[(int)BotDesireType.SEE_ENEMY],\n                m_priorities[(int)BotDesireType.ATACKED_BY_ENEMY],\n                m_priorities[(int)BotDesireType.LOW_HEALTH],\n                m_priorities[(int)BotDesireType.NO_AMMO],\n                m_priorities[(int)BotDesireType.CURIOUS]);\n        }\n\n        public void SetIdleBehavior(BotBehaviorType idleBehavior)\n        {\n            m_selectedBehaviors[(int)BotDesireType.IDLE] = idleBehavior;\n        }\n\n        public BotBehaviorType GetIdleBehavior()\n        {\n            return m_selectedBehaviors[(int)BotDesireType.IDLE];\n        }\n    }\n    \n    public class MyBotAITemplates\n    {\n        public static List<MyBotAITemplate> Templates;\n        static MyBotAITemplates()\n        {\n            Templates = new List<MyBotAITemplate>();\n\n            Templates.Add(new MyBotAITemplate(MyAITemplateEnum.DEFAULT, BotBehaviorType.IDLE, BotBehaviorType.ATTACK, BotBehaviorType.ATTACK, BotBehaviorType.IGNORE, BotBehaviorType.IGNORE, BotBehaviorType.IGNORE,\n                                            0, 2, 3, 4, 5, 1));\n            Templates.Add(new MyBotAITemplate(MyAITemplateEnum.AGGRESIVE, BotBehaviorType.IDLE, BotBehaviorType.ATTACK, BotBehaviorType.ATTACK, BotBehaviorType.IGNORE, BotBehaviorType.IGNORE, BotBehaviorType.CURIOUS,\n                                            0, 2, 3, 4, 5, 1));\n            Templates.Add(new MyBotAITemplate(MyAITemplateEnum.DEFENSIVE, BotBehaviorType.IDLE, BotBehaviorType.IGNORE, BotBehaviorType.ATTACK, BotBehaviorType.IGNORE, BotBehaviorType.IGNORE, BotBehaviorType.IGNORE,\n                                            0, 2, 3, 4, 5, 1));\n            Templates.Add(new MyBotAITemplate(MyAITemplateEnum.FLEE, BotBehaviorType.IDLE, BotBehaviorType.RUN_AWAY, BotBehaviorType.RUN_AWAY, BotBehaviorType.IGNORE, BotBehaviorType.IGNORE, BotBehaviorType.IGNORE,\n                                            0, 2, 3, 4, 5, 1));\n            Templates.Add(new MyBotAITemplate(MyAITemplateEnum.CRAZY, BotBehaviorType.PANIC, BotBehaviorType.KAMIKADZE, BotBehaviorType.KAMIKADZE, BotBehaviorType.PANIC, BotBehaviorType.IGNORE, BotBehaviorType.IGNORE,\n                                            0, 2, 3, 4, 5, 1));\n            Templates.Add(new MyBotAITemplate(MyAITemplateEnum.DRONE, BotBehaviorType.FOLLOW, BotBehaviorType.IGNORE, BotBehaviorType.IGNORE, BotBehaviorType.IGNORE, BotBehaviorType.IGNORE, BotBehaviorType.IGNORE,\n                                            5, 3, 2, 1, 0, 4));\n            Templates.Add(new MyBotAITemplate(MyAITemplateEnum.PASSIVE, BotBehaviorType.IDLE, BotBehaviorType.IGNORE, BotBehaviorType.IGNORE, BotBehaviorType.IGNORE, BotBehaviorType.IGNORE, BotBehaviorType.IGNORE,\n                                            0, 2, 3, 4, 5, 1));\n        }\n\n        public static MyBotAITemplate GetTemplate(MyAITemplateEnum templateEnum)\n        {\n            foreach (var template in Templates)\n            {\n                if (template.TemplateId == templateEnum)\n                {\n                    return template.GetCopy();\n                }\n            }\n\n            Debug.Fail(\"AI template not found!\");\n            return null;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Ships/AI/MyBotBehaviorAttack.cs",
    "content": "﻿#region Using\n\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Utils;\nusing System.Diagnostics;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.Missions;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Entities.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\n\n#endregion\n\nnamespace MinerWars.AppCode.Game.Entities.Ships.AI\n{\n    public class MyBotBehaviorAttack : MyBotBehaviorBase\n    {\n        #region Enums\n\n        enum StateEnum\n        {\n            CLOSING,\n            CLOSING_IN_FORMATION,\n            FLYING_AROUND,\n            ATTACKING,\n            ATACKING_SEARCHING,\n        }\n\n        enum FireStateEnum\n        {\n            WAIT,\n            FIRE,\n            HIT,\n            COOLDOWN,\n        }\n\n        #endregion\n\n        #region Members\n\n        // TODO: change to constants\n        static float MANEUVERING_RANGE = 300;\n        static float FIRING_RANGE_MAX = 600;\n        static float FIRING_RANGE_MIN = 200;\n        static float ATTACK_DISTANCE_MIN = 45;\n        static float ATTACK_DISTANCE_MAX = 70;\n        static float SHOOT_CONE = MathHelper.Pi / 180 * 25.5f;\n        static float HIT_CONE = MathHelper.Pi / 180 * 2.5f;\n        static float CLOSING_FORMATION_TIME = 2.0f;\n        static float FORCED_CLOSING_TIME = 4.0f;\n\n        MyEntity m_target;\n        Vector3 m_flyToTarget;\n\n        bool m_targetVisible;\n        float m_visibilityCheckTimer;\n\n        private StateEnum m_state;\n        float m_attackTimer;\n        float m_flyAroundTimer;\n        bool m_strafe;\n        float m_closingTimer;\n        float m_forcedClosingTimer;\n        FireStateEnum m_fireState;\n        float m_fireTimer;\n\n        float m_hologramTargetTimer;\n        bool m_isInvalid;\n\n        int m_planedMissileTime;\n\n        float m_timeToAlarmCheck;\n\n        float m_playerAttackDecisionTimer;\n\n        MyFindSmallshipHelper findSmallship;\n\n        bool m_canShootWithAutocanon;\n        bool m_canShootWithShotGun;\n        bool m_canShootWithSniper;\n        bool m_canShootMissile;\n        bool m_canShootCannon;\n        bool m_canShootFlash;\n        bool m_canShootSmoke;\n        bool m_canShootHologram;\n\n        float m_weaponChangeTimer;\n        MyMwcObjectBuilder_FireKeyEnum m_currentWeapon;\n\n        float m_smokeBombTimer;\n        float m_flashBombTimer;\n        float m_hologramTimer;\n\n        #endregion\n\n        #region Init & close\n\n        public MyBotBehaviorAttack()\n        {\n        }\n\n        internal override void Init(MySmallShipBot bot)\n        {\n            base.Init(bot);\n            \n            m_isInvalid = false;\n            m_target = SourceDesire.GetEnemy();\n            if (m_target != null)\n            {\n                Debug.Assert(m_target != bot);\n            }\n            findSmallship = new MyFindSmallshipHelper();\n\n            m_visibilityCheckTimer = 0;       // force visibility test\n            m_closingTimer = 0;\n            m_forcedClosingTimer = 0;\n            m_hologramTargetTimer = 0;\n\n            SwitchToClosing();\n            \n            PlanNextMissile();\n\n            m_timeToAlarmCheck = 2;\n            \n            m_playerAttackDecisionTimer = 0;\n\n            MyScriptWrapper.OnEntityAttackedByBot(bot, m_target);\n\n            m_canShootWithAutocanon = bot.CanShootWith(MyMwcObjectBuilder_FireKeyEnum.Primary);\n            m_canShootWithShotGun = bot.CanShootWith(MyMwcObjectBuilder_FireKeyEnum.Secondary);\n            m_canShootWithSniper = bot.CanShootWith(MyMwcObjectBuilder_FireKeyEnum.Third);\n            m_canShootMissile = bot.CanShootWith(MyMwcObjectBuilder_FireKeyEnum.Fourth);\n            m_canShootCannon = bot.CanShootWith(MyMwcObjectBuilder_FireKeyEnum.Fifth);\n\n            m_canShootFlash = bot.CanShootWith(MyMwcObjectBuilder_FireKeyEnum.FlashBombFront) && MyFakes.BOT_USE_FLASH_BOMBS;\n            m_canShootSmoke = bot.CanShootWith(MyMwcObjectBuilder_FireKeyEnum.SmokeBombFront) && MyFakes.BOT_USE_SMOKE_BOMBS;\n            m_canShootHologram = bot.CanShootWith(MyMwcObjectBuilder_FireKeyEnum.HologramFront) && MyFakes.BOT_USE_HOLOGRAMS;\n\n            m_weaponChangeTimer = 0;\n            m_currentWeapon = SelectWeapon((bot.GetPosition() - m_target.GetPosition()).Length());\n\n            m_smokeBombTimer = MyMwcUtils.GetRandomFloat(0.5f, 3.0f);\n            m_flashBombTimer = MyMwcUtils.GetRandomFloat(0.5f, 3.0f);\n            m_hologramTimer = MyMwcUtils.GetRandomFloat(0.5f, 3.0f);\n        }\n\n        internal override void Close(MySmallShipBot bot)\n        {\n            base.Close(bot);\n\n            if (m_state == StateEnum.CLOSING_IN_FORMATION)\n            {\n                MyAttackFormations.Instance.RemoveEntity(bot);\n            }\n\n            MyBotCoordinator.RemoveAttacker(bot);\n        }\n\n        #endregion\n\n        #region Update\n\n        internal override void Update(MySmallShipBot bot)\n        {\n            base.Update(bot);\n\n            if (m_target != null && !m_target.IsDead())\n            {\n                MySmallShip smallShipTarget = m_target as MySmallShip;\n                MyPrefabLargeWeapon largeWeaponTarget = m_target as MyPrefabLargeWeapon;\n\n                if (largeWeaponTarget != null && !largeWeaponTarget.IsWorking())\n                {\n                    m_isInvalid = true;\n                    return;\n                }\n\n                if (m_timeToAlarmCheck >= 0)\n                {\n                    m_timeToAlarmCheck -= MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS;\n                    // When transition from curious behavior try raise alarm (if this doesn't work pass some flag curious behavior)\n                    if (m_timeToAlarmCheck < 0 && smallShipTarget != null && smallShipTarget.HasRadarJammerActive())\n                    {\n                        bot.LaunchAlarm(smallShipTarget);\n                    }\n                }\n\n                UpdateVisibility(bot);\n\n                if (m_targetVisible)\n                {\n                    AttackTarget(bot, m_targetVisible);\n                    findSmallship.Init(bot);\n\n                    // Attack player to prevent his passivity when we have invicible wingmans\n                    m_playerAttackDecisionTimer -= MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS;\n                    if (smallShipTarget != null && smallShipTarget.Leader == MySession.PlayerShip && m_playerAttackDecisionTimer <= 0)\n                    {\n                        m_playerAttackDecisionTimer = 2.5f;\n                        if (MyMwcUtils.GetRandomFloat(0, 1.0f) < 0.7f)\n                        {\n                            m_target = smallShipTarget.Leader;\n                        }\n                    }\n                }\n                else\n                {\n                    m_state = StateEnum.CLOSING;\n\n                    findSmallship.Update(bot, m_target);\n\n                    if (findSmallship.PathNotFound)\n                    {\n                        bot.IsSleeping = true;\n                        m_isInvalid = true;\n                    }\n                    else if (!findSmallship.GotPosition())\n                    {\n                        AttackTarget(bot, false);\n                    }\n                }\n            }\n        }\n\n        private void UpdateVisibility(MySmallShipBot bot)\n        {\n            if (m_visibilityCheckTimer <= 0)\n            {\n                if (bot.GetPosition() == m_target.GetPosition())\n                {\n                    m_targetVisible = true;\n                }\n                else\n                {\n                    MyLine line = new MyLine(bot.GetPosition(), m_target.GetPosition(), true);\n                    var result = MyEntities.GetIntersectionWithLine(ref line, bot, m_target, true, ignoreChilds: true);\n                    m_targetVisible = !result.HasValue;\n                }\n\n                m_visibilityCheckTimer = 0.5f;\n            }\n            else\n            {\n                m_visibilityCheckTimer -= MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS;\n            }\n        }\n\n        #endregion\n\n        #region Attack\n\n        private void AttackTarget(MySmallShipBot bot, bool targetVisible)\n        {\n            Vector3 botToTarget = m_target.WorldVolume.Center - bot.GetPosition();\n            float distance = botToTarget.Length() - m_target.WorldVolume.Radius;\n            Vector3 botToTargetDirection = botToTarget / distance;\n            float angleToTarget = (float)Math.Acos(MathHelper.Clamp(Vector3.Dot(bot.WorldMatrix.Forward, botToTargetDirection), -1, 1));\n\n            switch (m_state)\n            {\n                case StateEnum.CLOSING:\n                    if (distance > MANEUVERING_RANGE || m_forcedClosingTimer > 0)\n                    {\n                        bot.Move(GetTargetPositionByDamageRatio(bot), m_target.GetPosition(), GetUpPlane(), true);                        \n                        m_closingTimer += MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS;\n                        m_forcedClosingTimer -= MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS;\n\n                        if (distance < FIRING_RANGE_MAX)\n                        {\n                            HandleShooting(bot, distance, angleToTarget, m_targetVisible);\n                        }\n\n                        if (m_closingTimer >= CLOSING_FORMATION_TIME)\n                        {\n                            SwitchToClosingInFormation();\n                        }\n                    }\n                    else\n                    {\n                        SwitchToAttack(bot);\n                    }\n\n                    break;\n                case StateEnum.CLOSING_IN_FORMATION:\n                    if (distance > MANEUVERING_RANGE || m_forcedClosingTimer > 0)\n                    {\n                        Vector3 formationTarget = MyAttackFormations.Instance.GetFormationPosition(bot, m_target);\n                        m_closingTimer += MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS;\n                        m_forcedClosingTimer -= MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS;\n                        \n                        if (distance < FIRING_RANGE_MAX)\n                        {\n                            bot.Move(formationTarget, m_target.GetPosition(), GetUpPlane(), true);\n                            HandleShooting(bot, distance, angleToTarget, m_targetVisible);\n                        }\n                        else\n\t                    {\n                            bot.Move(formationTarget, formationTarget, GetUpPlane(), true);\n\t                    }\n                    }\n                    else\n                    {\n                        MyAttackFormations.Instance.RemoveEntity(bot);\n                        SwitchToAttack(bot);\n                    }\n\n                    if (distance < FIRING_RANGE_MAX)\n                    {\n                        HandleShooting(bot, distance, angleToTarget, m_targetVisible);\n                    }\n                    break;\n                case StateEnum.FLYING_AROUND:\n                    float flyToDistance = Vector3.Distance(bot.GetPosition(), m_flyToTarget);\n\n                    if (m_strafe)\n                    {\n                        float rspeed = (1.0f - Math.Abs(MathHelper.Clamp(angleToTarget / MathHelper.Pi, -1, 1))) * 900 + 100;\n\n                        //bot.Move(m_flyToTarget, m_target.GetPosition(), GetUpPlane(), false, customDamping: 0.35f,\n                        //    rotationSpeed: rspeed);\n                        bot.Move(bot.GetPosition(), GetTargetPositionByDamageRatio(bot), GetUpPlane(), false, customDamping: 0.35f,\n                            rotationSpeed: rspeed);\n                    }\n                    else\n                    {\n                        float factor = MathHelper.Clamp(flyToDistance / 20, 0.15f, 0.45f);\n                        //factor = factor * factor * factor;\n                        bot.Move(m_flyToTarget, m_flyToTarget, GetUpPlane(), false, 1, 5, factor, slowRotation: true);\n                    }\n\n                    HandleShooting(bot, distance, angleToTarget, targetVisible);\n\n                    if (flyToDistance < 10 || m_flyAroundTimer < 0)\n                    {\n                        if (distance > MANEUVERING_RANGE)\n                        {\n                            SwitchToClosing();\n                        }\n                        else\n                        {\n                            SwitchToAttack(bot);\n                        }\n                    }\n\n                    m_flyAroundTimer -= MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS;\n                    break;\n                case StateEnum.ATTACKING:\n                    // Handle hologram target, if bot is atacking hologram for 5 seconds he will get it's a hologram\n                    MySmallShip smallShip = m_target as MySmallShip;\n                    if (smallShip != null && smallShip.IsHologram)\n                    {\n                        m_hologramTargetTimer += MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS;\n                        if (m_hologramTargetTimer > 5.0f)\n                        {\n                            bot.SpoilHologram(smallShip);\n                        }\n                    }\n\n                    //bot.Move(bot.GetPosition(), m_target.GetPosition(), GetUpPlane(), false, rotationSpeed: 100);\n                    bot.Move(bot.GetPosition(), GetTargetPositionByDamageRatio(bot), GetUpPlane(), false, rotationSpeed: 100);                    \n\n                    if (m_attackTimer < 0)\n                    {\n                        if (distance > MANEUVERING_RANGE)\n                        {\n                            SwitchToClosing();\n                        }\n                        else\n                        {\n                            if (!MyFakes.DISABLE_BOT_MANEUVERING)\n                            {\n                                TrySwitchToAttackSearch(bot);\n                            }\n                        }\n                    }\n                    m_attackTimer -= MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS;\n\n                    HandleShooting(bot, distance, angleToTarget, targetVisible);\n                    break;\n                case StateEnum.ATACKING_SEARCHING:\n                    //bot.Move(bot.GetPosition(), m_target.GetPosition(), GetUpPlane(), false, rotationSpeed: 100);\n                    bot.Move(bot.GetPosition(), GetTargetPositionByDamageRatio(bot), GetUpPlane(), false, rotationSpeed: 100);\n\n                    TrySwitchToFlyAround(bot);\n\n                    HandleShooting(bot, distance, angleToTarget, targetVisible);\n                    break;\n            }\n        }\n\n        private Vector3 GetTargetPositionByDamageRatio(MySmallShipBot bot)         \n        {\n            Vector3 targetPos = m_target.GetPosition();\n            if (MySession.PlayerShip != null && MyFactions.GetFactionsRelation(bot, MySession.PlayerShip) == MyFactionRelationEnum.Enemy)\n            {\n                Vector3 botPos = bot.GetPosition();\n                Vector3 botToTarget = targetPos - botPos;\n                Vector3 dir = Vector3.Normalize(botToTarget);                \n                float degrees = (float)Math.Pow(120, bot.GetDamageRatio() * 1.5 - 1.2) * 4f;\n                float deviatingAngle = MathHelper.ToRadians(degrees);\n                dir = MyUtilRandomVector3ByDeviatingVector.GetRandom(dir, deviatingAngle);\n                targetPos = botPos + botToTarget.Length() * dir * 3;                \n            }\n            return targetPos;\n        }\n\n        #endregion\n\n        #region Switching\n\n        bool TrySwitchToAttackSearch(MySmallShipBot bot)\n        {\n            Vector3 newFlyToTarget = m_target.WorldVolume.Center\n                + m_target.WorldMatrix.Forward * (MyMwcUtils.GetRandomFloat(ATTACK_DISTANCE_MIN, ATTACK_DISTANCE_MAX) + m_target.WorldVolume.Radius)\n                + m_target.WorldMatrix.Up * MyMwcUtils.GetRandomFloat(-50, 50)\n                + m_target.WorldMatrix.Left * MyMwcUtils.GetRandomFloat(-50, 50);\n            if (bot.TryTestPosition(newFlyToTarget, bot.GetPosition()))\n            {\n                m_state = StateEnum.ATACKING_SEARCHING;\n                return true;\n            }\n            return false;\n        }\n        \n        void TrySwitchToFlyAround(MySmallShipBot bot)\n        {\n            Vector3? result = null;\n            if (bot.TryGetTestPositionResult(ref result))\n            {\n                if (result.HasValue)\n                {\n                    m_flyToTarget = result.Value;\n                    m_flyAroundTimer = MyMwcUtils.GetRandomFloat(2, 3);\n                    m_strafe = MyMwcUtils.GetRandomBool(4); //Vector3.DistanceSquared(flyToTarget, bot.GetPosition()) < STRAFE_DISTANCE_SQR;\n                    m_state = StateEnum.FLYING_AROUND;\n                }\n                else\n                {\n                    // Position failed, try again\n                    bool success = TrySwitchToAttackSearch(bot);\n                    Debug.Assert(success);\n                }\n            }\n        }\n\n        void SwitchToClosing()\n        {\n            m_fireState = FireStateEnum.WAIT;\n            m_state = StateEnum.CLOSING;\n            m_closingTimer = 0;\n        }\n\n        void SwitchToClosingInFormation()\n        {\n            m_fireState = FireStateEnum.WAIT;\n            m_state = StateEnum.CLOSING_IN_FORMATION;\n        }\n\n        void SwitchToAttack(MySmallShipBot bot)\n        {\n            m_state = StateEnum.ATTACKING;\n            m_attackTimer = MyMwcUtils.GetRandomFloat(2, 4);\n\n            MyBotCoordinator.AddAttacker(bot, m_target);\n        }\n\n        #endregion\n\n        #region Shooting\n\n        void HandleShooting(MySmallShipBot bot, float distance, float angleToTarget, bool targetVisible)\n        {\n            if (bot.InitTime > 0)\n                return;\n\n            if (!MyBotCoordinator.IsAllowedToAttack(bot, m_target))\n            {      \n                return;\n            }\n\n            m_smokeBombTimer -= MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS;\n            m_flashBombTimer -= MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS;\n            m_hologramTimer -= MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS;\n\n            // Change weapon - 2sec CD\n            if (m_weaponChangeTimer < 2)\n            {\n                m_weaponChangeTimer = 0;\n\n                var oldWeapon = m_currentWeapon;\n                m_currentWeapon = SelectWeapon(distance);\n                \n                if (m_currentWeapon != oldWeapon)\n                {\n                    m_fireState = FireStateEnum.WAIT;\n                }\n            }\n\n            // Handle weapon shooting\n            switch (m_currentWeapon)\n            {\n                case MyMwcObjectBuilder_FireKeyEnum.Primary:\n                    ShootAutocannon(bot, targetVisible, distance, angleToTarget);\n                    break;\n                case MyMwcObjectBuilder_FireKeyEnum.Secondary:\n                    ShootShotgun(bot, targetVisible, distance, angleToTarget);\n                    break;\n                case MyMwcObjectBuilder_FireKeyEnum.Third:\n                    ShootSniper(bot, targetVisible, distance, angleToTarget);\n                    break;\n            }\n\n            if (MyFakes.ENABLE_BOT_MISSILES_AND_CANNON)\n            {\n                if (m_canShootFlash &&\n                    m_flashBombTimer <= 0 &&\n                    targetVisible &&\n                    distance > 125 && distance < 250 &&\n                    angleToTarget < SHOOT_CONE)\n                {\n                    m_flashBombTimer = MyMwcUtils.GetRandomFloat(30, 60);\n                    bot.Shoot(MyMwcObjectBuilder_FireKeyEnum.FlashBombFront);\n                }\n\n                if (m_canShootSmoke &&\n                    m_smokeBombTimer <= 0 &&\n                    targetVisible &&\n                    distance > 150 && distance < 300 &&\n                    angleToTarget < SHOOT_CONE)\n                {\n                    m_smokeBombTimer = MyMwcUtils.GetRandomFloat(30, 60);\n                    bot.Shoot(MyMwcObjectBuilder_FireKeyEnum.SmokeBombFront);\n                }\n\n                if (m_canShootHologram &&\n                    m_hologramTimer <= 0 &&\n                    distance > 100 && distance < 500)\n                {\n                    m_hologramTimer = MyMwcUtils.GetRandomFloat(30, 60);\n                    bot.Shoot(MyMwcObjectBuilder_FireKeyEnum.HologramFront);\n                }\n\n                // Handle missile and cannon shooting\n                if (m_canShootMissile || m_canShootCannon)\n                {\n                    MyMwcObjectBuilder_FireKeyEnum firekey;\n                    if (m_canShootMissile)\n                    {\n                        firekey = MyMwcObjectBuilder_FireKeyEnum.Fourth;\n                    }\n                    else\n                    {\n                        firekey = MyMwcObjectBuilder_FireKeyEnum.Fifth;\n                    }\n\n                    int missileFireTime = MyMinerGame.TotalGamePlayTimeInMilliseconds - m_planedMissileTime;\n                    if (missileFireTime > 0)\n                    {\n\n                        if (missileFireTime > 1500)\n                        {\n                            // if bot can't shoot in 1.5 sec, wait for next time window\n                            PlanNextMissile();\n                        }\n                        else if (targetVisible &&\n                            distance >= MyFakes.BOT_MISSILE_FIRING_RANGE_MIN &&\n                            distance <= FIRING_RANGE_MAX &&\n                            angleToTarget < SHOOT_CONE)\n                        {\n                            // Successful shot\n                            bot.Shoot(firekey);\n                            PlanNextMissile();\n                        }\n                    }\n                }\n            }\n        }\n\n        private MyMwcObjectBuilder_FireKeyEnum SelectWeapon(float distance)\n        {\n            if (m_canShootWithShotGun && distance < 200)\n            {\n                return MyMwcObjectBuilder_FireKeyEnum.Secondary;\n            }\n            else if (m_canShootWithSniper && distance > 400)\n            {\n                return MyMwcObjectBuilder_FireKeyEnum.Third;\n            }\n            else\n            {\n                return MyMwcObjectBuilder_FireKeyEnum.Primary;\n            }\n        }\n\n        void ShootAutocannon(MySmallShipBot bot, bool targetVisible, float distance, float angleToTarget)\n        {\n            switch (m_fireState)\n            {\n                case FireStateEnum.WAIT:\n                    m_fireTimer = 0;\n                    if (angleToTarget < SHOOT_CONE && targetVisible && distance <= FIRING_RANGE_MAX)\n                    {\n                        m_fireState = FireStateEnum.FIRE;\n                    }\n                    break;\n                case FireStateEnum.FIRE:\n                    if (targetVisible && distance <= FIRING_RANGE_MAX && angleToTarget < SHOOT_CONE)\n                    {\n                        m_fireTimer += MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS;\n                        bot.Shoot(m_currentWeapon);\n                        if (m_fireTimer > 0.5f)\n                        {\n                            m_fireTimer = 0;\n                            m_fireState = FireStateEnum.COOLDOWN;\n                        }\n                        else if (angleToTarget < HIT_CONE)\n                        {\n                            m_fireTimer = 0;\n                            m_fireState = FireStateEnum.HIT;\n                        }\n                    }\n                    else\n                    {\n                        m_fireState = FireStateEnum.WAIT;\n                    }\n                    break;\n                case FireStateEnum.HIT:\n                    m_fireTimer += MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS;\n                    bot.Shoot(m_currentWeapon);\n                    if (m_fireTimer > 0.5f)\n                    {\n                        m_fireState = FireStateEnum.COOLDOWN;\n                        m_fireTimer = 0;\n                    }\n                    break;\n                case FireStateEnum.COOLDOWN:\n                    m_fireTimer += MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS;\n                    if (m_fireTimer > 0.5f)\n                    {\n                        m_fireTimer = 0;\n                        m_fireState = FireStateEnum.FIRE;\n                    }\n                    break;\n            }\n        }\n\n        void ShootShotgun(MySmallShipBot bot, bool targetVisible, float distance, float angleToTarget)\n        {\n            switch (m_fireState)\n            {\n                case FireStateEnum.WAIT:\n                    m_fireTimer = 0;\n                    if (angleToTarget < SHOOT_CONE && targetVisible && distance <= FIRING_RANGE_MAX)\n                    {\n                        m_fireState = FireStateEnum.FIRE;\n                    }\n                    break;\n                case FireStateEnum.FIRE:\n                    if (targetVisible && distance <= FIRING_RANGE_MAX && angleToTarget < SHOOT_CONE)\n                    {\n                        m_fireTimer += MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS;\n                        bot.Shoot(m_currentWeapon);\n                        if (m_fireTimer > 0.5f)\n                        {\n                            m_fireTimer = 0;\n                            m_fireState = FireStateEnum.COOLDOWN;\n                        }\n                        else if (angleToTarget < HIT_CONE)\n                        {\n                            m_fireTimer = 0;\n                            m_fireState = FireStateEnum.HIT;\n                        }\n                    }\n                    else\n                    {\n                        m_fireState = FireStateEnum.WAIT;\n                    }\n                    break;\n                case FireStateEnum.HIT:\n                    m_fireTimer += MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS;\n                    bot.Shoot(m_currentWeapon);\n                    if (m_fireTimer > 0.5f)\n                    {\n                        m_fireState = FireStateEnum.COOLDOWN;\n                        m_fireTimer = 0;\n                    }\n                    break;\n                case FireStateEnum.COOLDOWN:\n                    m_fireTimer += MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS;\n                    if (m_fireTimer > 0.5f)\n                    {\n                        m_fireTimer = 0;\n                        m_fireState = FireStateEnum.FIRE;\n                    }\n                    break;\n            }\n        }\n\n        void ShootSniper(MySmallShipBot bot, bool targetVisible, float distance, float angleToTarget)\n        {\n            switch (m_fireState)\n            {\n                case FireStateEnum.WAIT:\n                    m_fireTimer = 0;\n                    if (angleToTarget < HIT_CONE && targetVisible && distance <= FIRING_RANGE_MAX)\n                    {\n                        m_fireState = FireStateEnum.HIT;\n                    }\n                    break;\n                case FireStateEnum.HIT:\n                    m_fireTimer += MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS;\n                    bot.Shoot(m_currentWeapon);\n                    if (m_fireTimer > 0.5f)\n                    {\n                        m_fireState = FireStateEnum.COOLDOWN;\n                        m_fireTimer = 0;\n                    }\n                    break;\n                case FireStateEnum.COOLDOWN:\n                    m_fireTimer += MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS;\n                    if (m_fireTimer > 0.5f)\n                    {\n                        m_fireTimer = 0;\n                        m_fireState = FireStateEnum.WAIT;\n                    }\n                    break;\n            }\n        }\n\n        void PlanNextMissile()\n        {\n            m_planedMissileTime = MyMinerGame.TotalGamePlayTimeInMilliseconds + MyMwcUtils.GetRandomInt(3000, 6000);\n        }\n\n        internal override bool IsInvalid()\n        {\n            return m_isInvalid;\n        }\n\n        internal override BotBehaviorType GetBehaviorType()\n        {\n            return BotBehaviorType.ATTACK;\n        }\n\n        internal Vector3 GetUpPlane()\n        {\n            if(MySession.PlayerShip != null)\n            {\n                return MySession.PlayerShip.WorldMatrix.Up;\n            }\n\n            if (m_target != null)\n\t        {\n                return m_target.WorldMatrix.Up;\n\t        }\n\n            return Vector3.Up;\n        }\n\n        #endregion\n\n        internal override string GetDebugHudString()\n        {\n            if (m_targetVisible)\n            {\n                return string.Format(\"{0} {1}\", base.GetDebugHudString(), m_state);\n            }\n            else\n            {\n                return string.Format(\"{0} {1} Can't see target\", base.GetDebugHudString(), m_state);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Ships/AI/MyBotBehaviorBase.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Utils;\n\nnamespace MinerWars.AppCode.Game.Entities.Ships.AI\n{\n    public class MyBotBehaviorBase\n    {\n        internal MyBotDesire SourceDesire;\n\n        internal virtual void Init(MySmallShipBot bot)\n        {\n        }\n\n        internal virtual void Update(MySmallShipBot bot)\n        {\n\n        }\n\n        internal virtual void Close(MySmallShipBot bot)\n        {\n            \n        }\n\n        internal virtual bool IsInvalid()\n        {\n            return false;\n        }\n\n        internal virtual BotBehaviorType GetBehaviorType()\n        {\n            throw new ApplicationException();\n        }\n\n        internal virtual bool ShouldFallAsleep(MySmallShipBot bot)\n        {\n            return bot.IsFarEnoughToBeAsleep();\n        }\n\n        internal virtual void DebugDraw() \n        {\n\n        }\n\n        internal virtual string GetDebugHudString()\n        {\n            string behaviorName = this.GetType().Name;\n            if (behaviorName.StartsWith(\"MyBotBehavior\"))\n            {\n                behaviorName = behaviorName.Substring(13);\n            }\n\n            string desireName = SourceDesire != null ? SourceDesire.GetType().Name : \"\";\n            if (desireName.StartsWith(\"My\") && desireName.EndsWith(\"Desire\"))\n            {\n                desireName = \" \" + desireName.Substring(2, desireName.Length - 2 - 6);\n            }\n\n            return string.Format(\"{0}{1}\", behaviorName, desireName);\n\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Ships/AI/MyBotBehaviorCurious.cs",
    "content": "﻿\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing System.Diagnostics;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Audio.Dialogues;\n\nnamespace MinerWars.AppCode.Game.Entities.Ships.AI\n{\n    public class MyBotBehaviorCurious : MyBotBehaviorBase\n    {\n        private enum CuriousState\n        {\n            GOTO,\n            EXPLORE,\n            EXPLORE_SEARCHING,\n            FINISHED\n        }\n\n        private static float LOCATION_NEAR_DISTANCE_SQR = 100;\n        private static float EXPLORATION_TIME = 10;\n        private static float DISCOVER_TIME = 3;\n        private static float IDENTIFY_DISTANCE_SQR = 200*200; \n        \n        Vector3 m_location;\n        CuriousState m_state;\n        float m_explorationTime;\n        Vector3 m_exploreTarget;\n        float m_exploreTargetTimer;\n        \n        MyEntity m_target;\n        bool m_targetVisible;\n        float m_visibilityCheckTimer;\n        float m_targetVisibleTime;\n\n        MyGotoLocationHelper m_gotoLocationHelper = new MyGotoLocationHelper();\n\n        public MyBotBehaviorCurious()\n        {\n            \n        }\n\n        internal override void Init(MySmallShipBot bot)\n        {\n            base.Init(bot);\n\n            m_location = SourceDesire.GetLocation();\n            m_state = CuriousState.GOTO;\n            m_explorationTime = 0;\n\n            m_target = SourceDesire.GetEnemy();\n\n            if (m_target != null)\n            {\n\t            Debug.Assert(!m_target.Closed);\n                Debug.Assert(m_target != bot);\n                //MyDialogues.Play(MyDialogueEnum.EAC_SURVEY_SITE_1800_RUSSIANSCREAM_02);\n            }\n\n            m_gotoLocationHelper.Init(bot, m_location);\n        }\n\n        internal override void Update(MySmallShipBot bot)\n        {\n            base.Update(bot);\n\n            m_targetVisibleTime += MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS;\n\n            //No need to have this here, because it runs on main thread\n            //lock (MyEntities.EntityCloseLock)\n            {\n                UpdateTargetVisibility(bot);\n\n                if (m_targetVisible && m_target != null)\n                {\n                    // If target is visible long enough, attack is initiated, this also happens when target is too close or target shoots\n                    MySmallShip smallShip = m_target as MySmallShip;\n                    if (m_targetVisibleTime > DISCOVER_TIME || \n                        (m_target.GetPosition() - bot.GetPosition()).LengthSquared() < IDENTIFY_DISTANCE_SQR ||\n                        (smallShip != null && smallShip.Weapons != null && smallShip.Weapons.IsShooting()))\n                    {\n                        bot.AddSeenEnemy(m_target);\n                        m_state = CuriousState.FINISHED;\n                        return;\n                    }\n                }\n            }\n\n            switch (m_state)\n            {\n                // First stage - goto location\n                case CuriousState.GOTO:\n                    m_gotoLocationHelper.Update(bot);\n                    \n                    if (m_gotoLocationHelper.PathNotFound || Vector3.DistanceSquared(bot.GetPosition(), m_location) < LOCATION_NEAR_DISTANCE_SQR)\n                    {\n                        TrySwitchExploreSearch(bot);\n                    }\n                    break;\n                \n                // Second stage - try explore area\n                case CuriousState.EXPLORE:\n                    m_explorationTime += MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS;\n                    m_exploreTargetTimer -= MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS;\n\n                    if (m_explorationTime > EXPLORATION_TIME)\n                    {\n                        m_state = CuriousState.FINISHED;\n                    }\n                    else if (m_exploreTargetTimer <= 0)\n                    {\n                        TrySwitchExploreSearch(bot);\n                    }\n                    else\n                    {\n                        float factor = MathHelper.Clamp((m_exploreTarget - bot.GetPosition()).Length() / 20, 0.15f, 0.45f);\n                        bot.Move(m_exploreTarget, m_exploreTarget, GetUpPlane(bot), false, 1, 5, factor, slowRotation: true); \n                    }\n                    \n                    break;\n\n                // Paralel searching for new explore location\n                case CuriousState.EXPLORE_SEARCHING:\n                    TrySwitchToExplore(bot);\n                    \n                    if (m_explorationTime > EXPLORATION_TIME)\n                    {\n                        m_state = CuriousState.FINISHED;\n                    }\n                    break;\n\n                // Third stage - nothing interesting was found (IsInvalid is true)\n                case CuriousState.FINISHED:\n                default:\n                    break;\n            }\n        }\n\n        internal override BotBehaviorType GetBehaviorType()\n        {\n            return BotBehaviorType.CURIOUS;\n        }\n\n        internal override bool ShouldFallAsleep(MySmallShipBot bot)\n        {\n            return base.ShouldFallAsleep(bot);\n        }\n\n        internal override bool IsInvalid()\n        {\n            return m_state == CuriousState.FINISHED;\n        }\n\n        internal bool TrySwitchExploreSearch(MySmallShipBot bot)\n        {\n            Vector3 flyTo = bot.GetPosition() + MyMwcUtils.GetRandomVector3Normalized() * MyMwcUtils.GetRandomFloat(0, 100);\n\n            if (bot.TryTestPosition(flyTo, bot.GetPosition()))\n            {\n                m_state = CuriousState.EXPLORE_SEARCHING;\n                return true;\n            }\n            return false;\n        }\n\n        void TrySwitchToExplore(MySmallShipBot bot)\n        {\n            Vector3? result = null;\n            if (bot.TryGetTestPositionResult(ref result))\n            {\n                if (result.HasValue)\n                {\n                    m_exploreTarget = result.Value;\n                    m_exploreTargetTimer = MyMwcUtils.GetRandomFloat(2, 3);\n                    m_state = CuriousState.EXPLORE;\n                }\n                else\n                {\n                    bool success = TrySwitchExploreSearch(bot);\n                    Debug.Assert(success);\n                }\n            }\n        }\n\n        internal Vector3 GetUpPlane(MySmallShipBot bot)\n        {\n            if (MySession.PlayerShip != null)\n            {\n                return MySession.PlayerShip.WorldMatrix.Up;\n            }\n\n            return bot.WorldMatrix.Up;\n        }\n\n        private void UpdateTargetVisibility(MySmallShipBot bot)\n        {\n            if (m_target != null && m_visibilityCheckTimer <= 0)\n            {\n                Debug.Assert(!m_target.Closed);\n\n                MyLine line = new MyLine(bot.GetPosition(), m_target.GetPosition(), true);\n                var result = MyEntities.GetIntersectionWithLine(ref line, bot, m_target, true, ignoreChilds: true);\n                m_targetVisible = !result.HasValue;\n                m_visibilityCheckTimer = 0.25f;\n            }\n            else\n            {\n                m_visibilityCheckTimer -= MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Ships/AI/MyBotBehaviorFollow.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing System.Diagnostics;\nusing MinerWars.AppCode.Game.Managers.Session;\n\nnamespace MinerWars.AppCode.Game.Entities.Ships.AI\n{\n    public class MyBotBehaviorFollow : MyBotBehaviorBase\n    {\n        const float LOOK_DISTANCE = 60;\n        const float AFTERBURNER_DISTANCE = 100.0f;\n        const float CHECK_PERIOD = 1.5f;\n        const float MIN_LEADER_DISTANCE = 40;\n\n        float checkTimer = CHECK_PERIOD;\n        Vector3 formationPosition;\n        Vector3 formationUpVector;\n\n        MyFindSmallshipHelper findSmallship;\n\n        bool leaderVisible;\n        float visibilityCheckTimer;\n\n        public MyBotBehaviorFollow()\n        {\n            findSmallship = new MyFindSmallshipHelper();\n        }\n\n        internal override void Init(MySmallShipBot bot)\n        {\n            base.Init(bot);\n\n            leaderVisible = true;\n            visibilityCheckTimer = 0;\n        }\n\n        internal override void Update(MySmallShipBot bot)\n        {\n            base.Update(bot);\n\n            if (bot.Leader != null)\n            {\n                if (ShouldFallAsleep(bot))\n                {\n                    bot.IsSleeping = true;\n                    return;\n                }\n\n                Vector3 leaderToBot = bot.GetPosition() - bot.Leader.GetPosition();\n                Vector3 formationPositionActual = bot.Leader.GetFormationPosition(bot);\n                Vector3 botToFormationPosition = formationPositionActual - bot.GetPosition();\n\n                float leaderDistance = leaderToBot.Length();\n                float formationPositionDistance = botToFormationPosition.Length();\n\n                Vector3 flyTo;\n                if (formationPositionDistance > MyMwcMathConstants.EPSILON_SQUARED && leaderDistance > MyMwcMathConstants.EPSILON)\n                {\n                    float leaderFactor = MathHelper.Clamp(leaderDistance - 5, 0, 25) / 20;\n                    flyTo = (1.0f - leaderFactor) * leaderToBot / leaderDistance + leaderFactor * botToFormationPosition / formationPositionDistance;\n                    flyTo = MyMwcUtils.Normalize(flyTo);\n                    flyTo = bot.GetPosition() + flyTo * formationPositionDistance;\n\n                    // Update leader visibility\n                    if (visibilityCheckTimer <= 0)\n                    {\n                        MyLine line = new MyLine(bot.GetPosition(), formationPositionActual, true);\n                        leaderVisible = !MyEntities.GetIntersectionWithLine(ref line, bot, bot.Leader, true, ignoreSmallShips: true).HasValue;\n\n                        visibilityCheckTimer = 0.5f;\n                    }\n                    else\n                    {\n                        visibilityCheckTimer -= MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS;\n                    }\n                }\n                else\n                {\n                    // Bot is on formation position\n                    flyTo = bot.GetPosition() + bot.WorldMatrix.Forward;\n                    leaderVisible = true;\n                }\n                 \n                if (leaderVisible)\n                {\n                    bool afterburner = /*bot.Leader.IsAfterburnerOn() || */formationPositionDistance > AFTERBURNER_DISTANCE;\n                    Vector3 lookTarget = formationPositionDistance < LOOK_DISTANCE ? formationPositionActual + bot.Leader.WorldMatrix.Forward * 5000 : formationPositionActual;\n\n                    float factor = MathHelper.Clamp(formationPositionDistance / 200, 0.5f, 1.0f);\n\n                    factor = factor * factor * factor;\n\n                    bot.Move(flyTo, lookTarget, bot.Leader.WorldMatrix.Up, afterburner, 1, 25, factor, slowRotation: true);\n\n                    checkTimer += MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS;\n\n                    findSmallship.Init(bot);\n                }\n                else\n                {\n                    if (leaderDistance > MIN_LEADER_DISTANCE)\n                    {\n                        findSmallship.Update(bot, bot.Leader);\n\n                        if (findSmallship.PathNotFound)\n                        {\n\t\t\t\t\t\t\t//We dont want our friends sleeping elsewhere\n                          //  bot.IsSleeping = true;\n                        }\n                    }\n                }\n            }\n        }\n\n        internal override BotBehaviorType GetBehaviorType()\n        {\n            return BotBehaviorType.FOLLOW;\n        }\n\n        internal override bool ShouldFallAsleep(MySmallShipBot bot)\n        {\n            // check whether the followed object is/can be asleep\n            if (bot.Leader != null)\n            {\n                var leaderBot = bot.Leader as MySmallShipBot;\n                if (leaderBot == null) return false;  // if I don't follow a bot, I don't fall asleep no matter what\n                return leaderBot.IsSleeping;\n            }\n            return base.ShouldFallAsleep(bot);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Ships/AI/MyBotBehaviorIdle.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.Utils;\n\nnamespace MinerWars.AppCode.Game.Entities.Ships.AI\n{\n    public class MyBotBehaviorIdle : MyBotBehaviorBase\n    {\n        const float CHANGE_TIME_MIN = 1.0f;\n        const float CHANGE_TIME_MAX = 6.0f;\n\n        float timeToGoalChange = 0;\n\n        Vector3 lookTarget;\n\n        Matrix baseMatrix;\n\n        internal override void Init(MySmallShipBot bot)\n        {\n            base.Init(bot);\n\n            baseMatrix = bot.WorldMatrix;\n            lookTarget = bot.GetPosition() + baseMatrix.Forward * 100;\n        }\n\n        internal override void Update(MySmallShipBot bot)\n        {\n            base.Update(bot);\n\n            if (ShouldFallAsleep(bot))\n            {\n                bot.IsSleeping = true;\n                return;\n            }\n\n            if (timeToGoalChange <= 0)\n            {\n                UpdateGoals(bot);\n                timeToGoalChange = MyMwcUtils.GetRandomFloat(CHANGE_TIME_MIN, CHANGE_TIME_MAX);\n            }\n            else\n            {\n                timeToGoalChange -= MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS;\n            }\n\n            bot.Move(bot.GetPosition(), lookTarget, baseMatrix.Up, false, slowRotation: true);\n\n        }\n\n        void UpdateGoals(MySmallShipBot bot)\n        {\n            lookTarget = bot.GetPosition() + baseMatrix.Forward * 50 + baseMatrix.Right * MyMwcUtils.GetRandomFloat(-50, 50) + baseMatrix.Up * MyMwcUtils.GetRandomFloat(-50, 50);\n        }\n\n        internal override BotBehaviorType GetBehaviorType()\n        {\n            return BotBehaviorType.IDLE;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Ships/AI/MyBotBehaviorKamikadze.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWarsMath;\n\nnamespace MinerWars.AppCode.Game.Entities.Ships.AI\n{\n    public class MyBotBehaviorKamikadze : MyBotBehaviorBase\n    {\n        const float AFTERBURNER_DISTANCE = 100.0f;\n\n        internal override void Close(MySmallShipBot bot)\n        {\n            base.Close(bot);\n\n            var drill = bot.Weapons.GetMountedDrill();\n            if (drill != null && drill.CurrentState != MyDrillStateEnum.InsideShip)\n            {\n                drill.Eject();\n            }\n        }\n\n        internal override void Update(MySmallShipBot bot)\n        {\n            base.Update(bot);\n\n            MyEntity enemy = bot.GetEnemy();\n            MyDrillBase drill = bot.Weapons.GetMountedDrill();\n\n            if (enemy != null && drill != null)\n            {\n                Vector3 botToEnemy = enemy.GetPosition() - bot.GetPosition();\n                float distance = botToEnemy.Length();\n                if (distance <= (bot.DrillDistance + bot.WorldVolume.Radius + enemy.WorldVolume.Radius))\n                {\n                    if (drill.CurrentState == MyDrillStateEnum.InsideShip)\n                    {\n                        drill.Eject();\n                    }\n                    else\n                    {\n                        drill.Shot(null);\n                    }\n                }\n                else\n                {\n                    // pull drill back\n                    if (drill.CurrentState == MyDrillStateEnum.Activated)\n                    {\n                        drill.Eject();\n                    }\n                }\n\n                bot.Move(enemy.GetPosition(), enemy.GetPosition(), enemy.WorldMatrix.Up, distance < 100);\n            }\n        }\n\n        internal override BotBehaviorType GetBehaviorType()\n        {\n            return BotBehaviorType.KAMIKADZE;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Ships/AI/MyBotBehaviorPanic.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\n\nnamespace MinerWars.AppCode.Game.Entities.Ships.AI\n{\n    public class MyBotBehaviorPanic : MyBotBehaviorBase\n    {\n        const float CHANGE_TIME_MIN = 0.25f;\n        const float CHANGE_TIME_MAX = 1.25f;\n\n        float timeToGoalChange = 0;\n\n        Vector3 moveTarget;\n        Vector3 lookTarget;\n        Vector3 up;\n        bool shoot;\n\n        internal override void Update(MySmallShipBot bot)\n        {\n            base.Update(bot);\n\n            if (timeToGoalChange <= 0)\n            {\n                UpdateGoals(bot);\n                timeToGoalChange = MyMwcUtils.GetRandomFloat(CHANGE_TIME_MIN, CHANGE_TIME_MAX);\n            }\n            else\n            {\n                timeToGoalChange -= MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS;\n            }\n\n            bot.Move(moveTarget, lookTarget, up, false);\n            if (shoot)\n            {\n                // just some default distance so that bot shoots (legacy shoot method)\n                bot.Shoot(MyMwcObjectBuilder_FireKeyEnum.Primary);\n            }\n        }\n\n        void UpdateGoals(MySmallShipBot bot)\n        {\n            moveTarget = bot.GetPosition() + MyMwcUtils.GetRandomVector3Normalized() * 1000;\n            lookTarget = bot.GetPosition() + MyMwcUtils.GetRandomVector3Normalized() * 1000;\n            up = MyMwcUtils.GetRandomVector3Normalized() * 1000;\n            shoot = MyMwcUtils.GetRandomBool(2);\n        }\n\n        internal override BotBehaviorType GetBehaviorType()\n        {\n            return BotBehaviorType.PANIC;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Ships/AI/MyBotBehaviorPatrol.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Entities.WayPoints;\nusing MinerWars.AppCode.Game.Missions;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Utils;\nusing System.Diagnostics;\nusing MinerWars.AppCode.Game.Sessions;\nusing KeenSoftwareHouse.Library.Parallelization.Threading;\n\nnamespace MinerWars.AppCode.Game.Entities.Ships.AI\n{\n    public class MyBotBehaviorPatrol : MyBotBehaviorBase\n    {\n        const float WAYPOINT_NEAR_DISTANCE_SQR = 100;\n        //int processedWaypoints;\n        bool m_forward = true;\n        List<MyWayPoint> m_path = new List<MyWayPoint>();\n        int m_lastBlockedEdgesChangeId = -1;\n        int m_currentWayPointIndex = 0;\n\n        bool m_targetVisible;\n        float m_visibilityCheckTimer;\n        bool m_isInvalid;\n        MyFindSmallshipHelper findSmallship;\n        private MyWayPoint m_lastWayPoint;\n        MyWayPointPath m_lastWayPointPath;\n\n        internal override void Init(MySmallShipBot bot)\n        {\n            base.Init(bot);\n\n            findSmallship = new MyFindSmallshipHelper();\n            //processedWaypoints = 0;\n            if (bot.WaypointPath != null && bot.WaypointPath.WayPoints.Count > 0)\n            {\n                bot.CurrentWaypoint = bot.WaypointPath.WayPoints[0];\n                m_lastWayPointPath = bot.WaypointPath;\n            }\n        }\n\n        internal override void Update(MySmallShipBot bot)\n        {\n            base.Update(bot);\n\n            if (ShouldFallAsleep(bot))\n            {\n                bot.IsSleeping = true;\n                return;\n            }\n\n            bool pathChange = m_lastWayPointPath != bot.WaypointPath;\n            if (pathChange) \n            {\n                m_lastWayPointPath = bot.WaypointPath;\n                m_currentWayPointIndex = 0;\n            }\n\n            bool cycle = bot.PatrolMode == MyPatrolMode.CYCLE;\n\n            if (bot.WaypointPath != null && !bot.SuspendPatrol && bot.WaypointPath.WayPoints.Count > 0)\n            {\n                UpdateVisibility(bot, bot.CurrentWaypoint.GetPosition());\n\n                if (!m_targetVisible)\n                {\n                    findSmallship.Update(bot, bot.CurrentWaypoint);\n                    if (findSmallship.PathNotFound)\n                    {\n                        bot.IsSleeping = true;\n                        m_isInvalid = true;\n                    }\n                }\n                else\n                {\n                    bool blockedEdgesIdDirty = m_lastBlockedEdgesChangeId != MyWayPoint.BlockedEdgesChangeId;\n                    m_path.Clear();\n                    using (MyWayPoint.BlockedEdgesLock.AcquireSharedUsing())\n                    {\n                        m_path.AddRange(bot.WaypointPath.CompletePath(MyWayPoint.BlockedEdgesForBots, bot.CurrentWaypoint, false, cycle, !blockedEdgesIdDirty));\n                    }\n                    m_lastBlockedEdgesChangeId = MyWayPoint.BlockedEdgesChangeId;\n\n                    if (blockedEdgesIdDirty)\n                    {\n                        if (bot.CurrentWaypoint == null)\n                        {\n                            m_currentWayPointIndex = 0;\n                        }\n                        else\n                        {\n                            m_currentWayPointIndex = m_path.IndexOf(bot.CurrentWaypoint);\n                        }\n                    }\n\n                    // no path found\n                    if (m_currentWayPointIndex == -1)\n                    {\n                        return;\n                    }\n\n                    bot.CurrentWaypoint = m_path[m_currentWayPointIndex];\n\n                    if (Vector3.DistanceSquared(bot.GetPosition(), bot.CurrentWaypoint.GetPosition()) <= WAYPOINT_NEAR_DISTANCE_SQR)\n                    {\n                        if (bot.CurrentWaypoint.EntityId != null && m_lastWayPoint != bot.CurrentWaypoint)\n                        {\n                            m_lastWayPoint = bot.CurrentWaypoint;\n\n                            MyScriptWrapper.BotReachedWaypoint(bot, bot.CurrentWaypoint);\n                        }\n                        //++processedWaypoints;\n\n                        int count = m_path.Count;\n                        switch (bot.PatrolMode)\n                        {\n                            case MyPatrolMode.CYCLE:\n                                //bot.CurrentWaypointIndex = processedWaypoints % count;\n                                m_currentWayPointIndex++;\n                                if (m_currentWayPointIndex >= count)\n                                {\n                                    m_currentWayPointIndex = 0;\n                                }\n                                break;\n                            case MyPatrolMode.PING_PONG:\n                                if (count > 1)\n                                {\n                                    //bot.CurrentWaypointIndex = processedWaypoints % (count * 2 - 2);\n                                    //if (bot.CurrentWaypointIndex >= count)\n                                    //{\n                                    //    bot.CurrentWaypointIndex = (count * 2 - 2) - bot.CurrentWaypointIndex;\n                                    //}\n                                    if (m_forward)\n                                    {\n                                        if (m_currentWayPointIndex < count - 1)\n                                        {\n                                            m_currentWayPointIndex++;\n                                        }\n                                        else\n                                        {\n                                            m_currentWayPointIndex--;\n                                            m_forward = false;\n                                        }\n                                    }\n                                    else\n                                    {\n                                        if (m_currentWayPointIndex > 0)\n                                        {\n                                            m_currentWayPointIndex--;\n                                        }\n                                        else\n                                        {\n                                            m_currentWayPointIndex++;\n                                            m_forward = true;\n                                        }\n                                    }\n                                }\n                                else\n                                {\n                                    m_currentWayPointIndex = 0;\n                                }\n                                break;\n                            case MyPatrolMode.ONE_WAY:\n                                if (m_currentWayPointIndex < m_path.Count - 1)\n                                {\n                                    ++m_currentWayPointIndex;\n                                }\n                                break;\n                        }\n\n                        bot.CurrentWaypoint = m_path[m_currentWayPointIndex];\n                    }\n\n                    bot.Move(bot.CurrentWaypoint.GetPosition(), bot.CurrentWaypoint.GetPosition(), GetUpPlane(), false);\n                    findSmallship.Init(bot);\n                }\n            }\n        }\n\n        internal override BotBehaviorType GetBehaviorType()\n        {\n            return BotBehaviorType.PATROL;\n        }\n\n        internal override bool ShouldFallAsleep(MySmallShipBot bot)\n        {\n            // check distance from path\n            if (bot.WaypointPath == null)\n                return base.ShouldFallAsleep(bot);\n            if (MySession.PlayerShip == null)\n                return false;  // don't fall asleep if there's no player\n\n            var playerPos = MySession.PlayerShip.GetPosition();\n            bool cycle = bot.PatrolMode == MyPatrolMode.CYCLE;\n\n            List<MyWayPoint> path = null;\n\n            using (MyWayPoint.BlockedEdgesLock.AcquireSharedUsing())\n            {\n                path = bot.WaypointPath.CompletePath(MyWayPoint.BlockedEdgesForBots, bot.CurrentWaypoint, false, cycle);\n            }\n\n            for (int i = (cycle ? 0 : 1), j = (cycle ? path.Count - 1 : 0); i < path.Count; j = i++)\n                if (MyMath.DistanceSquaredFromLineSegment(path[i].Position, path[j].Position, playerPos) < MyAIConstants.SLEEP_DISTANCE_FROM_PATH_SQUARED)\n                    return false;\n\n            return base.ShouldFallAsleep(bot);\n        }\n\n        internal Vector3 GetUpPlane()\n        {\n            if (MySession.PlayerShip != null)\n            {\n                return MySession.PlayerShip.WorldMatrix.Up;\n            }\n\n            return Vector3.Up;\n        }\n\n        internal override void DebugDraw()\n        {\n            if (m_path != null && m_path.Count > 0)\n            {\n                MyDebugDraw.DrawSphereWireframe(m_path[0].Position, 2, new Vector3(0, 1, 1), 1);\n                for (int i = 1; i < m_path.Count; i++)\n                {\n                    MyDebugDraw.DrawSphereWireframe(m_path[i].Position, 2, new Vector3(0, 1, 1), 1);\n                    MyDebugDraw.DrawLine3D(m_path[i - 1].Position, m_path[i].Position, Color.Blue, Color.Cyan);\n\n                }\n            }\n        }\n\n        private void UpdateVisibility(MySmallShipBot bot, Vector3 targetPosition)\n        {\n            if (m_visibilityCheckTimer <= 0)\n            {\n                if (bot.GetPosition() == targetPosition)\n                {\n                    m_targetVisible = true;\n\n\n                }\n                else\n                {\n                    MyLine line = new MyLine(bot.GetPosition(), targetPosition, true);\n                    var result = MyEntities.GetIntersectionWithLine(ref line, bot, null, true, ignoreChilds: true);\n                    m_targetVisible = !result.HasValue;\n                }\n\n                m_visibilityCheckTimer = 0.5f;\n            }\n            else\n            {\n                m_visibilityCheckTimer -= MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS;\n            }\n        }\n\n        internal override bool IsInvalid()\n        {\n            return m_isInvalid;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Ships/AI/MyBotBehaviorRunAway.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWarsMath;\n\nnamespace MinerWars.AppCode.Game.Entities.Ships.AI\n{\n    public class MyBotBehaviorRunAway : MyBotBehaviorBase\n    {\n        internal override void Update(MySmallShipBot bot)\n        {\n            base.Update(bot);\n\n            MyEntity enemy = bot.GetClosestEnemy();\n            if (enemy != null)\n            {\n                Vector3 enemyToBot = bot.GetPosition() - enemy.GetPosition();\n                float distance = enemyToBot.Length();\n                if (distance <= bot.RunAwayDistance)\n                {\n                    Vector3 enemyToBotDirection = enemyToBot / distance;\n                    Vector3 escapeTarget = bot.GetPosition() + enemyToBotDirection * 1000;\n                    bot.Move(escapeTarget, escapeTarget, bot.WorldMatrix.Up, false);\n                }\n            }\n        }\n\n        internal override BotBehaviorType GetBehaviorType()\n        {\n            return BotBehaviorType.RUN_AWAY;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Ships/AI/MyBotCoordinator.cs",
    "content": "﻿#region Using\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Diagnostics;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Render;\n#endregion\n\nnamespace MinerWars.AppCode.Game.Entities.Ships.AI\n{\n    static class MyBotCoordinator\n    {\n        #region Members\n\n        public static readonly int MAX_BOTS_ATTACKING_PLAYER = 4;\n        static private List<MySmallShipBot> m_bots;\n        private static List<KeyValuePair<float, MySmallShipBot>> m_currentBotsAttackingPlayer = new List<KeyValuePair<float, MySmallShipBot>>();\n        private static int m_maxBotsAttackingPlayer = MAX_BOTS_ATTACKING_PLAYER;\n\n        #endregion\n\n        #region Properties\n\n\n\n        public static List<KeyValuePair<float, MySmallShipBot>> CurrentBotsAttackingPlayer\n        {\n            get { return m_currentBotsAttackingPlayer; }\n            set { m_currentBotsAttackingPlayer = value; }\n        }\n\n        public static int MaxBotsAttackingPlayer\n        {\n            get { return m_maxBotsAttackingPlayer; }\n            set { m_maxBotsAttackingPlayer = value; }\n        }\n\n        #endregion\n\n        #region Constructor\n\n        static MyBotCoordinator()\n        {\n            m_bots = new List<MySmallShipBot>(256);\n\n            MyEntities.OnEntityRemove += MyEntities_OnEntityRemove;\n\n            MyRender.RegisterRenderModule(MyRenderModuleEnum.AttackingBots, \"Attacking bots\", DebugDraw, MyRenderStage.DebugDraw, false);\n        }\n\n        #endregion\n\n        #region Coordinator\n\n        static int Compare(KeyValuePair<float, MySmallShipBot> a, KeyValuePair<float, MySmallShipBot> b)\n        {\n            return a.Key.CompareTo(b.Key);\n        }\n\n\n        static void MyEntities_OnEntityRemove(MyEntity obj)\n        {\n            MySmallShipBot smallShipBot = obj as MySmallShipBot;\n            if (m_bots.Remove(smallShipBot))\n            {\n                // Bot removed\n            }\n\n            if (smallShipBot != null)\n            {\n                RemoveAttacker(smallShipBot);\n            }\n        }\n\n        static public void AddBot(MySmallShipBot bot)\n        {\n            Debug.Assert(!m_bots.Contains(bot));\n            m_bots.Add(bot);\n        }\n\n        static public List<MySmallShipBot> GetBots()\n        {\n            return m_bots;\n        }\n\n        #endregion\n\n        #region Attack coordination\n\n        public static bool IsAllowedToAttack(MySmallShipBot attacker, MyEntity target)\n        {\n            if (MySession.IsPlayerShip(target))\n            {\n                foreach (var pair in CurrentBotsAttackingPlayer)\n                {\n                    if (pair.Value == attacker)\n                        return true;\n                }\n\n                return false;\n            }\n\n            return true;\n        }\n\n        static List<MySmallShipBot> m_sortHelper = new List<MySmallShipBot>(4);\n\n        public static void AddAttacker(MySmallShipBot attacker, MyEntity target)\n        {\n            if (MySession.IsPlayerShip(target))\n            {\n                foreach (var pair in CurrentBotsAttackingPlayer)\n                {\n                    if (pair.Value == attacker)\n                        return;\n                }\n\n                float attackerDistance = Vector3.Distance(MyCamera.Position, attacker.GetPosition());\n\n                if (CurrentBotsAttackingPlayer.Count == MaxBotsAttackingPlayer)\n                {\n                    if (CurrentBotsAttackingPlayer[CurrentBotsAttackingPlayer.Count - 1].Key <= attackerDistance)\n                        return;\n\n                    for (int i = 0; i < CurrentBotsAttackingPlayer.Count; i++ )\n                    {\n                        var pair = CurrentBotsAttackingPlayer[i];\n\n                        if (attackerDistance < pair.Key)\n                        {\n                            CurrentBotsAttackingPlayer.RemoveAt(i);\n                            break;\n                        }\n                    }\n                }\n\n                CurrentBotsAttackingPlayer.Add(new KeyValuePair<float, MySmallShipBot>(attackerDistance, attacker));\n                CurrentBotsAttackingPlayer.Sort(Compare);\n            }\n\n            System.Diagnostics.Debug.Assert(CurrentBotsAttackingPlayer.Count <= MaxBotsAttackingPlayer);\n        }\n\n        public static void RemoveAttacker(MySmallShipBot attacker)\n        {\n            for (int i = 0; i < CurrentBotsAttackingPlayer.Count; i++)\n            {\n                var pair = CurrentBotsAttackingPlayer[i];\n                if (pair.Value == attacker)\n                {\n                    CurrentBotsAttackingPlayer.RemoveAt(i);\n                    break;\n                }\n            }\n        }\n\n        public static void Update()\n        {\n            m_sortHelper.Clear();\n            foreach (var pair in CurrentBotsAttackingPlayer)\n            {\n                m_sortHelper.Add(pair.Value);\n            }\n\n            CurrentBotsAttackingPlayer.Clear();\n\n            foreach (MySmallShipBot bot in m_sortHelper)\n            {\n                float distance = Vector3.Distance(MyCamera.Position, bot.GetPosition());\n                CurrentBotsAttackingPlayer.Add(new KeyValuePair<float, MySmallShipBot>(distance, bot));\n            }\n\n            CurrentBotsAttackingPlayer.Sort(Compare);\n\n            m_sortHelper.Clear();\n        }\n\n        #endregion\n\n        #region Follow coordination\n\n        public static void ChangeShip(MySmallShip oldShip, MySmallShip newShip)\n        {\n            Debug.Assert(oldShip != null && newShip != null);\n            foreach (var bot in m_bots)\n            {\n                if (bot.Leader == oldShip)\n                {\n                    bot.StopFollow();\n                    bot.Follow(newShip);\n                }\n            }\n        }\n\n        #endregion\n\n        public static void DebugDraw()\n        {\n            foreach (var pair in CurrentBotsAttackingPlayer)\n            {\n                MySmallShipBot bot = pair.Value;\n                MyDebugDraw.DrawSphereWireframe(bot.GetPosition(), bot.WorldVolume.Radius, new Vector3(1, 0, 0), 1);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Ships/AI/MyBotDesire.cs",
    "content": "﻿\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWarsMath;\n\nnamespace MinerWars.AppCode.Game.Entities.Ships.AI\n{\n    internal class MyBotDesire\n    {\n        public BotDesireType DesireType { get; set; }\n\n        public MyBotDesire(BotDesireType desireType)\n        {\n            DesireType = desireType;\n        }\n\n        public virtual MyEntity GetEnemy()\n        {\n            return null;\n        }\n\n        public virtual Vector3 GetLocation()\n        {\n            return Vector3.Zero;\n        }\n\n        public virtual bool IsInvalid(MySmallShipBot bot)\n        {\n            return false;\n        }\n\n        public virtual void OnEntityRemove(MyEntity entity)\n        {\n        }\n\n        public virtual void Update()\n        {\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Ships/AI/MyCuriousDesire.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWarsMath;\n\nnamespace MinerWars.AppCode.Game.Entities.Ships.AI\n{\n    internal class MyCuriousDesire : MyBotDesire\n    {\n        MyEntityIdentifier? EntityID { get; set; }\n        public MyEntity Entity\n        {\n            get\n            {\n                return EntityID.HasValue ? MyEntities.GetEntityByIdOrNull(EntityID.Value) : null;\n            }\n        }\n\n        public Vector3 Location { get; set; }\n\n        private bool m_invalid;\n\n        public MyCuriousDesire(MyEntity entity, Vector3 location)\n            : base(BotDesireType.CURIOUS)\n        {\n            if (entity != null)\n                EntityID = entity.GetBaseEntity().EntityId;\n            Location = location;\n\n            System.Diagnostics.Debug.Assert(entity == null || !entity.Closed);\n        }\n\n        public override void OnEntityRemove(MyEntity entity)\n        {\n            base.OnEntityRemove(entity);\n\n            if (entity == Entity)\n            {\n                m_invalid = true;\n            }\n        }\n\n        public override MyEntity GetEnemy()\n        {\n            return Entity;\n        }\n\n        public override Vector3 GetLocation()\n        {\n            return Location;\n        }\n\n        public override bool IsInvalid(MySmallShipBot bot)\n        {\n            return base.IsInvalid(bot) || Entity == null || bot.IsLeaderLost() || bot.IsSpoiledHologram(Entity);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Ships/AI/MyDangerZones.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Physics;\nusing MinerWars.AppCode.Game.World.Global;\n\nnamespace MinerWars.AppCode.Game.Entities.Ships.AI\n{\n    class MyDangerZones\n    {\n        public const float DANGER_ZONE_SIZE = 200;\n        public const float EXTRA_EXPLOSION_RADIUS = 300;\n        \n        public static MyDangerZones Instance = new MyDangerZones();\n\n        private List<MyDangerZoneElement> results = new List<MyDangerZoneElement>();\n        private List<MyLineSegmentOverlapResult<MyDangerZoneElement>> lineResults = new List<MyLineSegmentOverlapResult<MyDangerZoneElement>>();\n\n        private static MyDynamicAABBTree m_dangerZoneStructure = new MyDynamicAABBTree(MyConstants.GAME_PRUNING_STRUCTURE_AABB_EXTENSION);\n        private EventHandler OnPositionChangedHandler;\n\n        public MyDangerZones()\n        {\n            OnPositionChangedHandler = new EventHandler(OnEntityPositionChanged);\n        }\n\n        public int Register(MySmallShipBot entity)\n        {\n            System.Diagnostics.Debug.Assert(entity == null || !entity.Closed);\n\n            entity.OnPositionChanged += OnPositionChangedHandler;\n\n            MyDangerZoneElement element = new MyDangerZoneElement(entity);\n\n            BoundingBox bbox = new BoundingBox(entity.WorldAABB.Min - new Vector3(DANGER_ZONE_SIZE), entity.WorldAABB.Max + new Vector3(DANGER_ZONE_SIZE));\n\n            int proxyId = m_dangerZoneStructure.AddProxy(ref bbox, element, 0);\n\n            return proxyId;\n        }\n\n        public void Unregister(MySmallShipBot entity)\n        {\n            System.Diagnostics.Debug.Assert(entity == null || !entity.Closed);\n\n            entity.OnPositionChanged -= OnPositionChangedHandler;\n            m_dangerZoneStructure.RemoveProxy(entity.GetDangerZoneID());\n        }\n\n        void OnEntityPositionChanged(object sender, EventArgs e)\n        {\n            MySmallShipBot smallShip = sender as MySmallShipBot;\n            if (smallShip != null)\n\t        {\n                BoundingBox bbox = new BoundingBox(smallShip.WorldAABB.Min - new Vector3(DANGER_ZONE_SIZE), smallShip.WorldAABB.Max + new Vector3(DANGER_ZONE_SIZE));\n                m_dangerZoneStructure.MoveProxy(smallShip.GetDangerZoneID(), ref bbox, Vector3.Zero);\n\t        }\n        }\n\n        public void Notify(MyLine line, MyEntity source)\n        {\n            System.Diagnostics.Debug.Assert(source == null || !source.Closed);\n\n            lineResults.Clear();\n            m_dangerZoneStructure.OverlapAllLineSegment<MyDangerZoneElement>(ref line, lineResults);\n\n            foreach (var resultItem in lineResults)\n            {\n                if (source == null || (resultItem.Element.Bot != source && MyFactions.GetFactionsRelation(resultItem.Element.Bot, source) == MyFactionRelationEnum.Enemy))\n                {\n                    resultItem.Element.Bot.AddCuriousLocation(source != null ? source.GetPosition() : line.From, source);\n                }\n            }\n        }\n\n        public void Notify(BoundingBox bbox, MyEntity source)\n        {\n            System.Diagnostics.Debug.Assert(source == null || !source.Closed);\n\n            results.Clear();\n            m_dangerZoneStructure.OverlapAllBoundingBox<MyDangerZoneElement>(ref bbox, results);\n\n            foreach (var dangerZone in results)\n            {\n                if (source == null || (dangerZone.Bot != source && MyFactions.GetFactionsRelation(dangerZone.Bot, source) == MyFactionRelationEnum.Enemy))\n                {\n                    dangerZone.Bot.AddCuriousLocation(source != null ? source.GetPosition() : bbox.GetCenter(), source);\n                }\n            }\n        }\n\n        public void NotifyExplosion(Vector3 position, float radius, MyEntity source)\n        {\n            System.Diagnostics.Debug.Assert(source == null || !source.Closed);\n\n            BoundingBox bbox = new BoundingBox(position - new Vector3(radius + EXTRA_EXPLOSION_RADIUS), position + new Vector3(radius + EXTRA_EXPLOSION_RADIUS));\n\n            results.Clear();\n            m_dangerZoneStructure.OverlapAllBoundingBox<MyDangerZoneElement>(ref bbox, results);\n\n            foreach (var dangerZone in results)\n            {\n                if (source == null || (dangerZone.Bot != source && MyFactions.GetFactionsRelation(dangerZone.Bot, source) == MyFactionRelationEnum.Enemy))\n                {\n                    dangerZone.Bot.AddCuriousLocation(position, null);\n                }\n            }\n        }\n\n        public void NotifyArea(Vector3 position, float area, MyEntity source)\n        {\n            System.Diagnostics.Debug.Assert(source == null || !source.Closed);\n\n            BoundingBox bbox = new BoundingBox(position - new Vector3(area), position + new Vector3(area));\n\n            results.Clear();\n            m_dangerZoneStructure.OverlapAllBoundingBox<MyDangerZoneElement>(ref bbox, results);\n\n            foreach (var dangerZone in results)\n            {\n                if (source == null || (dangerZone.Bot != source && MyFactions.GetFactionsRelation(dangerZone.Bot, source) == MyFactionRelationEnum.Enemy))\n                {\n                    dangerZone.Bot.AddCuriousLocation(position, null);\n                }\n            }\n        }\n\n        public void Aggro(BoundingBox bbox, MySmallShip source)\n        {\n            System.Diagnostics.Debug.Assert(source == null || !source.Closed);\n\n            results.Clear();\n            m_dangerZoneStructure.OverlapAllBoundingBox<MyDangerZoneElement>(ref bbox, results);\n\n            foreach (var dangerZone in results)\n            {\n                dangerZone.Bot.Attack(source);\n            }\n        }\n\n        public void UnloadData()\n        {\n            results.Clear();\n            lineResults.Clear();\n            m_dangerZoneStructure.Clear();\n        }\n    }\n\n    class MyDangerZoneElement : MyElement\n    {\n        public MySmallShipBot Bot { get; set; }\n\n        public MyDangerZoneElement(MySmallShipBot bot)\n        {\n            Bot = bot;\n        }\n    }\n\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Ships/AI/MyFindSmallshipHelper.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.Utils;\n\nnamespace MinerWars.AppCode.Game.Entities.Ships.AI\n{\n    class MyFindSmallshipHelper\n    {\n        public bool PathNotFound;\n\n        const float STUCK_DISTANCE = 3;\n        const float STUCK_TIME = 0.5f;\n\n        Vector3? m_followPosition = null;\n        bool m_lookingForPosition = false;\n        Vector3 m_stuckPosition;\n        float m_stuckTimer;\n\n        bool m_lookingForPath = false;\n        List<Vector3> m_followPath = null;\n        int m_currentPathPosition = 0;\n        const float PATH_NEAR_DISTANCE_SQR = 100;\n\n        public void Init(MySmallShipBot bot)\n        {\n            m_stuckPosition = bot.GetPosition();\n            m_stuckTimer = 0;\n            m_followPosition = null;\n            m_followPath = null;\n            PathNotFound = false;\n        }\n\n        private void CheckIfRoutePositionComputed(MySmallShipBot bot, MyEntity entityTarget)\n        {\n            // Wait for result (visible route position)\n            if (bot.TryGetRoute(out m_followPosition))\n            {\n                m_lookingForPosition = false;\n\n                if (!m_followPosition.HasValue)\n                {\n                    //PathNotFound = true;\n                    m_lookingForPath = bot.TryFindPath(entityTarget.WorldAABB.GetCenter());  // can't get unstuck; try to find path using waypoints\n                }\n\n                ResetStuck(bot);\n            }\n        }\n\n        private void FollowToRoutePosition(MySmallShipBot bot)\n        {\n            // Fly to visible position, if too close look for new visible position\n            if (Vector3.DistanceSquared(m_followPosition.Value, bot.GetPosition()) < 5 * 5)\n            {\n                m_followPosition = null;\n            }\n            else\n            {\n                bot.Move(m_followPosition.Value, m_followPosition.Value, bot.WorldMatrix.Up, false, 1, 2);\n\n                if (m_stuckTimer > STUCK_TIME)\n                {\n                    if (Vector3.DistanceSquared(bot.GetPosition(), m_stuckPosition) > STUCK_DISTANCE)\n                    {\n                        m_followPosition = null;\n                    }\n                    else\n                    {\n                        m_followPosition = m_stuckPosition + MyMwcUtils.GetRandomVector3Normalized() * 1000;\n                    }\n                }\n                else if (Vector3.DistanceSquared(bot.GetPosition(), m_stuckPosition) > STUCK_DISTANCE)\n                {\n                    ResetStuck(bot);\n                }\n                else\n                {\n                    m_stuckTimer += MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS;\n                }\n            }\n        }\n\n        private void CheckIfPathComputed(MySmallShipBot bot)\n        {\n            if (bot.TryGetPath(out m_followPath))\n            {\n                if (m_followPath == null)\n                {\n                    PathNotFound = true;\n                }\n                m_lookingForPath = false;\n                m_currentPathPosition = 0;\n                ResetStuck(bot);\n            }\n        }\n\n        private void FollowPath(MySmallShipBot bot)\n        {\n            if (m_currentPathPosition >= m_followPath.Count)\n            {\n                m_followPath = null;  // reached the goal or got stuck\n            }\n            else if (Vector3.DistanceSquared(m_followPath[m_currentPathPosition], bot.GetPosition()) < PATH_NEAR_DISTANCE_SQR)\n            {\n                m_currentPathPosition++;  // next waypoint reached\n            }\n            else\n            {\n                bot.Move(m_followPath[m_currentPathPosition], m_followPath[m_currentPathPosition], bot.WorldMatrix.Up, false, 1, 2);\n\n                if (m_stuckTimer > STUCK_TIME)\n                {\n                    if (Vector3.DistanceSquared(bot.GetPosition(), m_stuckPosition) > STUCK_DISTANCE)\n                    {\n                        m_currentPathPosition++;  // try skipping ahead to the next waypoint instead of getting stuck right away\n                        ResetStuck(bot);\n                    }\n                    else\n                    {\n                        m_followPath[m_currentPathPosition] += MyMwcUtils.GetRandomVector3Normalized() * 1000;  // jitter the sub-goal\n                    }\n                }\n                else if (Vector3.DistanceSquared(bot.GetPosition(), m_stuckPosition) > STUCK_DISTANCE)\n                {\n                    ResetStuck(bot);\n                }\n                else\n                {\n                    m_stuckTimer += MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS;\n                }\n            }\n        }\n\n        public void Update(MySmallShipBot bot, MyEntity entityTarget)\n        {\n            var smallShipTarget = entityTarget as MySmallShip;\n\n            if (!m_followPosition.HasValue && !m_lookingForPosition && m_followPath == null && !m_lookingForPath)\n            {\n                if (smallShipTarget != null)\n                {\n                    // Start looking for visible route position\n                    m_lookingForPosition = bot.TryFindRoute(smallShipTarget);\n                }\n                else\n                {\n                    // No remembered position pathfinding\n                    m_lookingForPath = bot.TryFindPath(entityTarget.WorldAABB.GetCenter());\n                }\n            }\n            else if (m_lookingForPosition)\n            {\n                CheckIfRoutePositionComputed(bot, entityTarget);\n            }\n            else if (!m_lookingForPosition && m_followPosition.HasValue)\n            {\n                FollowToRoutePosition(bot);\n            }\n            else if (m_lookingForPath)\n            {\n                CheckIfPathComputed(bot);\n            }\n            else if (!m_lookingForPath && m_followPath != null)\n            {\n                FollowPath(bot);\n            }\n        }\n\n        public bool GotPosition()\n        {\n            return m_followPosition != null || m_followPath != null;\n        }\n\n        private void ResetStuck(MySmallShip bot)\n        {\n            m_stuckPosition = bot.GetPosition();\n            m_stuckTimer = 0;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Ships/AI/MyFlashedDesire.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Utils;\n\nnamespace MinerWars.AppCode.Game.Entities.Ships.AI\n{\n    internal class MyFlashedDesire : MyBotDesire\n    {\n        int m_flashDurationInMS;\n\n        public MyFlashedDesire(int flashDurationInMS)\n            : base(BotDesireType.FLASHED)\n        {\n            m_flashDurationInMS = flashDurationInMS;\n        }\n\n        public override void Update()\n        {\n            base.Update();\n\n            m_flashDurationInMS -= MyConstants.PHYSICS_STEP_SIZE_IN_MILLISECONDS;\n        }\n\n        public override bool IsInvalid(MySmallShipBot bot)\n        {\n            return m_flashDurationInMS <= 0;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Ships/AI/MyGotoLocationHelper.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Managers.Session;\n\nnamespace MinerWars.AppCode.Game.Entities.Ships.AI\n{\n    class MyGotoLocationHelper\n    {\n        const float STUCK_DISTANCE = 3;\n        const float STUCK_TIME = 0.5f;\n        const float PATH_NEAR_DISTANCE_SQR = 100;\n\n        public bool PathNotFound;\n\n        Vector3 location;\n        bool lookingForPath = false;\n        List<Vector3> followPath = null;\n        int currentPathPosition = 0;\n\n        Vector3 stuckPosition;\n        float stuckTimer;\n\n        bool locationVisible;\n        float locationVisibleCheckTimer;\n\n        public void Init(MySmallShipBot bot, Vector3 location)\n        {\n            locationVisibleCheckTimer = 0;\n            stuckPosition = bot.GetPosition();\n            stuckTimer = 0;\n            PathNotFound = false;\n            this.location = location;\n            currentPathPosition = 0;\n\n            UpdateTargetVisibility(bot);\n        }\n\n        private void FollowPath(MySmallShipBot bot)\n        {\n            if (currentPathPosition >= followPath.Count)\n            {\n                followPath = null;  // reached the goal or got stuck\n            }\n            else if (Vector3.DistanceSquared(followPath[currentPathPosition], bot.GetPosition()) < PATH_NEAR_DISTANCE_SQR)\n            {\n                currentPathPosition++;  // next waypoint reached\n            }\n            else\n            {\n                bot.Move(followPath[currentPathPosition], followPath[currentPathPosition], bot.WorldMatrix.Up, false, 1, 2);\n\n                if (stuckTimer > 3)\n                {\n                    if (Vector3.DistanceSquared(bot.GetPosition(), stuckPosition) > STUCK_DISTANCE)\n                    {\n                        currentPathPosition++;  // try skipping ahead to the next waypoint instead of getting stuck right away\n                        ResetStuck(bot);\n                    }\n                    else\n                    {\n                        //followPath[currentPathPosition] += MyMwcUtils.GetRandomVector3Normalized() * 1000;  // jitter the sub-goal\n                    }\n                }\n                else if (Vector3.DistanceSquared(bot.GetPosition(), stuckPosition) > STUCK_DISTANCE)\n                {\n                    ResetStuck(bot);\n                }\n                else\n                {\n                    stuckTimer += MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS;\n                }\n            }\n        }\n\n        private void WaitForPath(MySmallShipBot bot)\n        {\n            if (bot.TryGetPath(out followPath))\n            {\n                if (followPath == null)\n                {\n                    PathNotFound = true;\n                }\n                lookingForPath = false;\n                currentPathPosition = 0;\n                ResetStuck(bot);\n            }\n        }\n\n        private void ResetStuck(MySmallShipBot bot)\n        {\n            stuckPosition = bot.GetPosition();\n            stuckTimer = 0;\n        }\n\n        private void FlyToLocation(MySmallShipBot bot)\n        {\n            bot.Move(location, location, GetUpPlane(bot), false, 1, 2);\n        }\n\n        public void Update(MySmallShipBot bot)\n        {\n            // Location visible, fly to it\n            if (!lookingForPath)\n            {\n                UpdateTargetVisibility(bot);\n                \n                if (locationVisible)\n                {\n                    FlyToLocation(bot);\n                    return;\n                }\n            }\n\n            // Wait for path\n            if (lookingForPath)\n            {\n                WaitForPath(bot);\n            }\n            // Path found, follow path\n            else if (!lookingForPath && followPath != null)\n            {\n                FollowPath(bot);\n            }\n            // Start looking for path\n            else if (!lookingForPath)\n            {\n                lookingForPath = bot.TryFindPath(location);\n            }\n        }\n\n        private void UpdateTargetVisibility(MySmallShipBot bot)\n        {\n            if (locationVisibleCheckTimer <= 0)\n            {\n                MyLine line = new MyLine(bot.GetPosition(), location, true);\n                var result = MyEntities.GetIntersectionWithLine(ref line, bot, null, true, ignoreChilds: true);\n                locationVisible = !result.HasValue;\n                locationVisibleCheckTimer = 0.25f;\n            }\n            else\n            {\n                locationVisibleCheckTimer -= MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS;\n            }\n        }\n\n        internal Vector3 GetUpPlane(MySmallShipBot bot)\n        {\n            if (MySession.PlayerShip != null)\n            {\n                return MySession.PlayerShip.WorldMatrix.Up;\n            }\n\n            return bot.WorldMatrix.Up;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Ships/AI/MyKillDesire.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\n\nnamespace MinerWars.AppCode.Game.Entities.Ships.AI\n{\n    internal class MyKillDesire : MyBotDesire\n    {\n        public MyEntity Target;\n        private bool m_entityRemoved;\n        private bool m_invalidated;\n\n        public MyKillDesire(MyEntity target)\n            : base(BotDesireType.KILL)\n        {\n            Target = target.GetBaseEntity();\n        }\n\n        public override void OnEntityRemove(MyEntity entity)\n        {\n            base.OnEntityRemove(entity);\n\n            if (entity == Target)\n            {\n                m_entityRemoved = true;\n            }\n        }\n\n        public override MyEntity GetEnemy()\n        {\n            return Target;\n        }\n\n        public override bool IsInvalid(MySmallShipBot bot)\n        {\n            return m_invalidated || m_entityRemoved || Target == null || Target.IsDead() || bot.IsSpoiledHologram(Target) || !Target.Activated;\n        }\n\n        public void Invalidate()\n        {\n            m_invalidated = true;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Ships/AI/MyLowHealthDesire.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\n\nnamespace MinerWars.AppCode.Game.Entities.Ships.AI\n{\n    internal class MyLowHealthDesire : MyBotDesire\n    {\n        public MyLowHealthDesire()\n            : base(BotDesireType.LOW_HEALTH)\n        {\n\n        }\n\n        public override bool IsInvalid(MySmallShipBot bot)\n        {\n            return !bot.IsDamagedForWarnignAlert();\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Ships/AI/MyPathfindingHelper.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n//using System.Threading.Tasks;\n//using System.Threading;\nusing MinerWarsMath;\nusing System.Collections.Concurrent;\nusing SysUtils.Utils;\nusing MinerWars.AppCode.Game.Entities.WayPoints;\nusing MinerWars.AppCode.Game.Utils;\nusing KeenSoftwareHouse.Library.Parallelization.Threading;\nusing ParallelTasks;\n\nnamespace MinerWars.AppCode.Game.Entities.Ships.AI\n{\n    internal delegate void PathFoundHandler(List<Vector3> path, object userData);\n\n    static class MyPathfindingHelper\n    {\n        static Task m_findPathTask;\n        static BackgroundTaskWork m_pathfindingHelper = new BackgroundTaskWork();\n\n        class BackgroundTaskWork : IWork\n        {\n            public void DoWork()\n            {\n                MyPathfindingHelper.BackgroundTask();\n            }\n\n            public WorkOptions Options\n            {\n                get { return Parallel.DefaultOptions; }\n            }\n        }\n\n        /// <summary>\n        /// Finds a path using waypoints. Use whenever the direct path is blocked.\n        /// </summary>\n        /// <param name=\"from\">First endpoint of the path. Will be duplicated in the returned path.</param>\n        /// <param name=\"to\">First endpoint of the path. Will be duplicated in the returned path.</param>\n        /// <param name=\"pathFoundHandler\">To be called after the pathfinder is finished. Will receive the found path, or null when there's none.</param>\n        /// <param name=\"userData\">An object that will be passed to pathFoundHandler. Can be used to identify the query.</param>\n        /// <param name=\"useRaycasts\">Whether the bot should use raycasts.</param>\n        public static void FindPathInBackground(Vector3 from, Vector3 to, PathFoundHandler pathFoundHandler, object userData, bool useRaycasts)\n        {\n            MyCommonDebugUtils.AssertDebug(from != null && to != null && pathFoundHandler != null);\n            m_queue.Enqueue(new PathToBeFound(from, to, pathFoundHandler, userData, useRaycasts));\n            //m_event.Set();\n            m_findPathTask = Parallel.Start(m_pathfindingHelper);\n        }\n\n        #region Implementation\n\n        static MyPathfindingHelper()\n        {\n            m_queue = new ConcurrentQueue<PathToBeFound>();\n            //m_event = new AutoResetEvent(false);\n            //Task.Factory.StartNew(BackgroundTask, TaskCreationOptions.PreferFairness);\n        }\n\n        private struct PathToBeFound\n        {\n            public Vector3 From;\n            public Vector3 To;\n            public PathFoundHandler PathFoundHandler;\n            public object UserData;\n            public bool UseRaycasts;\n\n            public PathToBeFound(Vector3 from, Vector3 to, PathFoundHandler pathFoundHandler, object userData, bool useRaycasts)\n            {\n                From = from;\n                To = to;\n                PathFoundHandler = pathFoundHandler;\n                UserData = userData;\n                UseRaycasts = useRaycasts;\n            }\n        }\n\n        private static readonly ConcurrentQueue<PathToBeFound> m_queue;\n        //private static readonly AutoResetEvent m_event;\n        private static void BackgroundTask()\n        {\n            PathToBeFound next;\n            if (m_queue.TryDequeue(out next))\n                next.PathFoundHandler(FindPath(next.From, next.To, next.UseRaycasts), next.UserData);\n        }\n\n        private static List<Vector3> FindPath(Vector3 start, Vector3 end, bool useRaycasts)\n        {\n            using (MyEntities.EntityCloseLock.AcquireSharedUsing())\n            {\n                var closestToStart = MyWayPointGraph.GetClosestWaypointReachableByShip(start, null, MyAIConstants.PATHFINDING_MAX_START_RAYCASTS, MyAIConstants.PATHFINDING_SHIP_RADIUS);\n                if (closestToStart == null)\n                    return null;\n\n                var closestToEnd = MyWayPointGraph.GetClosestWaypointReachableByShip(end, null, MyAIConstants.PATHFINDING_MAX_END_RAYCASTS, MyAIConstants.PATHFINDING_SHIP_RADIUS);\n                if (closestToEnd == null)\n                    return null;\n\n                if (useRaycasts)\n                {\n                    HashSet<Tuple<MyWayPoint, MyWayPoint>> blockedEdges = null;\n                    HashSet<Tuple<MyWayPoint, MyWayPoint>> unblockedEdges = null;\n\n                    using (MyWayPoint.BlockedEdgesLock.AcquireSharedUsing())\n                    {\n                        blockedEdges = new HashSet<Tuple<MyWayPoint, MyWayPoint>>(MyWayPoint.BlockedEdgesForBots);  // TODO: do we need to copy this every time?\n                        unblockedEdges = new HashSet<Tuple<MyWayPoint, MyWayPoint>>();\n                    }\n\n                    for (int retryCount = 0; retryCount < 30; retryCount++)\n                    {\n                        var pathWaypoints = closestToStart.GetShortestPathTo(closestToEnd, blockedEdges, true, true);\n                        if (pathWaypoints == null || pathWaypoints.Count == 0)\n                            return null;  // no path (we can exit right away since we only *add* blocked edges)\n\n                        bool blocked = false;\n                        for (int i = 0; i < pathWaypoints.Count - 2; i++)\n                        {\n                            var tuple = Tuple.Create(pathWaypoints[i], pathWaypoints[i+1]);\n                            if (unblockedEdges.Contains(tuple))  // already tested and it was ok\n                            {\n                            }\n                            else if (pathWaypoints[i+1].IsVisibleFrom(pathWaypoints[i].Position))\n                            {\n                                unblockedEdges.Add(tuple);\n                                unblockedEdges.Add(Tuple.Create(pathWaypoints[i+1], pathWaypoints[i]));\n                            }\n                            else\n                            {\n                                blockedEdges.Add(tuple);\n                                blockedEdges.Add(Tuple.Create(pathWaypoints[i+1], pathWaypoints[i]));\n                                blocked = true;\n                                break;\n                            }\n                        }\n                        if (blocked) continue;\n\n                        var path = new List<Vector3>();\n                        path.Add(start);\n                        foreach (var waypoint in pathWaypoints) path.Add(waypoint.Position);\n                        path.Add(end);\n                        return path;\n                    }\n                    return null;  // no path found after many tries\n                }\n                else\n                {\n                    List<MyWayPoint> pathWaypoints = null;\n                    \n                    using (MyWayPoint.BlockedEdgesLock.AcquireSharedUsing())\n                    {\n                        pathWaypoints = closestToStart.GetShortestPathTo(closestToEnd, MyWayPoint.BlockedEdgesForBots, true, true);\n                    }\n\n                    if (pathWaypoints == null || pathWaypoints.Count == 0)\n                        return null;  // no path\n\n                    var path = new List<Vector3>();\n                    path.Add(start);\n                    foreach (var waypoint in pathWaypoints) path.Add(waypoint.Position);\n                    path.Add(end);\n                    return path;\n                }\n\n            }\n        }\n\n        public static void Unload()\n        {\n            PathToBeFound next;\n            while (m_queue.TryDequeue(out next))\n            {\n            }\n        }\n\n        #endregion\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Ships/AI/MyRoutefindingHelper.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n//using System.Threading.Tasks;\n//using System.Threading;\nusing MinerWarsMath;\nusing System.Collections.Concurrent;\nusing SysUtils.Utils;\nusing MinerWars.AppCode.Game.Entities.WayPoints;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing KeenSoftwareHouse.Library.Parallelization.Threading;\nusing ParallelTasks;\n\nnamespace MinerWars.AppCode.Game.Entities.Ships.AI\n{\n    internal delegate void RouteFoundHandler(Vector3? routePosition, object userData);\n\n    static class MyRoutefindingHelper\n    {\n        static BackgroundTaskWork m_routefindingHelper = new BackgroundTaskWork();\n\n        class BackgroundTaskWork : IWork\n        {\n            public void DoWork()\n            {\n                MyRoutefindingHelper.BackgroundTask();\n            }\n\n            public WorkOptions Options\n            {\n                get { return Parallel.DefaultOptions; }\n            }\n        }\n\n\n        public static void FindRouteInBackground(MySmallShipBot bot, MyPositionMemory route, RouteFoundHandler routeFoundHandler, object userData)\n        {\n            m_queue.Enqueue(new RouteToBeFound(bot, route, routeFoundHandler, userData));\n        }\n\n        private const int MAX_ROUTES_UPDATED_PER_ADVANCE = 8;\n        private const int MAX_POINTS_TESTED_PER_ROUTE_UPDATE = 10;\n\n        static Task m_advanceRouteTask;\n\n        public static void AdvanceRoutefinding()\n        {\n            if (m_queue.Count > 0)\n                //   m_event.Set();\n                m_advanceRouteTask = Parallel.Start(m_routefindingHelper);\n        }\n\n        #region Implementation\n\n        static MyRoutefindingHelper()\n        {\n            m_queue = new ConcurrentQueue<RouteToBeFound>();\n            //m_event = new AutoResetEvent(false);\n           // Task.Factory.StartNew(BackgroundTask, TaskCreationOptions.PreferFairness);\n        }\n\n        private struct RouteToBeFound\n        {\n            public MySmallShipBot Bot;\n            void OnCloseBot(MyEntity obj) { ClearHandlers(); Bot = null; }\n            Vector3 Up;\n            Vector3 Position;\n            Vector3[] Points;\n            MyPositionMemory PositionMemory;\n            int PositionMemoryIndex;\n\n            public RouteFoundHandler RouteFoundHandler;\n            public object UserData;\n\n            public void ClearHandlers() \n            {\n                if (Bot != null)\n                {\n                    Bot.OnClose -= OnCloseBot;\n                }\n            }\n\n            public RouteToBeFound(MySmallShipBot bot, MyPositionMemory positionMemory, RouteFoundHandler routeFoundHandler, object userData)\n            {\n                PositionMemory = positionMemory;\n                PositionMemoryIndex = PositionMemory.GetCount() - 1;\n\n                Bot = bot;\n                Up = bot.WorldMatrix.Up;\n                Position = bot.WorldMatrix.Translation;\n\n                Points = new Vector3[4];\n                float delta = 1.0f;\n                float scale = 1.0f / MySmallShipConstants.ALL_SMALL_SHIP_MODEL_SCALE;\n                Points[0] = new Vector3(Bot.LocalAABB.Max.X * delta * scale, Bot.LocalAABB.Max.Y * delta * scale, Bot.LocalAABB.Max.Z * scale);\n                Points[1] = new Vector3(Bot.LocalAABB.Min.X * delta * scale, Bot.LocalAABB.Max.Y * delta * scale, Bot.LocalAABB.Max.Z * scale);\n                Points[2] = new Vector3(Bot.LocalAABB.Max.X * delta * scale, Bot.LocalAABB.Min.Y * scale, Bot.LocalAABB.Max.Z * scale);\n                Points[3] = new Vector3(Bot.LocalAABB.Min.X * delta * scale, Bot.LocalAABB.Min.Y * scale, Bot.LocalAABB.Max.Z * scale);\n\n                RouteFoundHandler = routeFoundHandler;\n                UserData = userData;\n\n                Bot.OnClose += OnCloseBot;\n            }\n\n            /// <summary>\n            /// Advance routefinding.\n            /// </summary>\n            /// <returns>True when routefinding is finished.</returns>\n            public bool AdvanceRoutefinding(out Vector3? result)\n            {\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"AdvanceRoutefinding\");\n\n                using (MyEntities.EntityCloseLock.AcquireSharedUsing())\n                {\n                    if (Bot == null)\n                    {\n                        result = null;\n                        MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n                        return true;\n                    }  // bot was closed, no need to continue\n\n                    using (PositionMemory.RouteMemoryLock.AcquireSharedUsing())\n                    {\n                        for (int pointsTested = 0; pointsTested < MAX_POINTS_TESTED_PER_ROUTE_UPDATE; PositionMemoryIndex--, pointsTested++)\n                        {\n                            if (PositionMemoryIndex == -1)\n                            {\n                                result = null;\n                                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n                                return true;\n                            }  // all points done, no route found\n\n                            Vector3 routePosition = PositionMemory.GetItem(PositionMemoryIndex);\n                            Matrix transform = Matrix.CreateWorld(Position, MyMwcUtils.Normalize(routePosition - Position), Up);\n                            float distanceToRoutePoint = Vector3.Dot(routePosition - Position, transform.Forward);\n\n                            if ((routePosition - Position).LengthSquared() < 5 * 5) continue;  // too close for comfort, try next point\n\n                            bool collisionFound = false;\n                            for (int i = 0; i < Points.Length; i++)\n                            {\n                                Vector3 transformedPoint = Vector3.Transform(Points[i], transform);\n                                MyLine line = new MyLine(transformedPoint, transformedPoint + transform.Forward * distanceToRoutePoint, true);\n                                var intersectionResult = MyEntities.GetAnyIntersectionWithLine(ref line, Bot, null, true, false, true, true);\n                                if (intersectionResult.HasValue)\n                                {\n                                    collisionFound = true;  // collision: try next point\n                                    break;\n                                }\n                            }\n                            if (!collisionFound)\n                            {\n                                result = routePosition;\n                                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n                                return true;\n                            }\n                        }\n                    }\n                }\n\n                result = null;\n\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n                return false;\n            }\n        }\n\n        private static readonly ConcurrentQueue<RouteToBeFound> m_queue;\n        //private static readonly AutoResetEvent m_event;\n        private static void BackgroundTask()\n        {\n            RouteToBeFound next;\n            int routesUpdated = 0;\n            while (++routesUpdated <= MAX_ROUTES_UPDATED_PER_ADVANCE && m_queue.TryDequeue(out next))\n            {\n                Vector3? result;\n                bool complete = next.AdvanceRoutefinding(out result);\n                if (complete)\n                {\n                    if (next.Bot != null)  // bot closed - routefinding canceled\n                        next.RouteFoundHandler(result, next.UserData);  // finished, notify the callback\n                    next.ClearHandlers();\n                }\n                else\n                {\n                    m_queue.Enqueue(next);  // not finished yet, insert it back to the queue\n                }\n            }\n        }\n\n        #endregion\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Ships/AI/MySeeEnemyDesire.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.AppCode.Game.World.Global;\n\nnamespace MinerWars.AppCode.Game.Entities.Ships.AI\n{\n    internal class MySeeEnemyDesire : MyBotDesire\n    {\n        public MyEntity Enemy { get; set; }\n        \n        private bool invalid;\n\n        public MySeeEnemyDesire(MyEntity enemy)\n            : base(BotDesireType.SEE_ENEMY)\n        {\n            System.Diagnostics.Debug.Assert(!enemy.Closed);\n            Enemy = enemy.GetBaseEntity();\n            invalid = false;\n        }\n\n        public override void OnEntityRemove(MyEntity entity)\n        {\n            base.OnEntityRemove(entity);\n\n            if (entity == Enemy)\n            {\n                invalid = true;\n            }\n        }\n\n        public override MyEntity GetEnemy()\n        {\n            return Enemy;\n        }\n\n        public override bool IsInvalid(MySmallShipBot bot)\n        {\n            return base.IsInvalid(bot) || invalid || Enemy.IsDead() || bot.IsLeaderLost() || bot.IsSpoiledHologram(Enemy) || MyFactions.GetFactionsRelation(bot, Enemy) != MyFactionRelationEnum.Enemy || !Enemy.Activated || Enemy.AIPriority == -1;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Ships/Config/MyReflectorConfig.cs",
    "content": "﻿namespace MinerWars.AppCode.Game.Entities.SubObjects\n{\n    using MinerWarsMath;\n    using Utils;\n\n    /// <summary>\n    /// Configuration of small ship reflector.\n    /// </summary>\n    class MyReflectorConfig\n    {\n        public Vector4 CurrentReflectorLightColor;\n        public float CurrentReflectorRangeForward;\n        public float CurrentReflectorRangeBackward;\n        public float CurrentReflectorConeAngleForward;\n        public float CurrentReflectorConeAngleBackward;\n        public float CurrentBillboardLength;\n        public float CurrentBillboardThickness;\n\n        MySmallShip m_ship;\n\n        public MyReflectorConfig(MySmallShip ship)\n        {\n            m_ship = ship;\n        }\n\n        public void Update()\n        {\n            CurrentReflectorLightColor = Vector4.Lerp(MyReflectorConstants.SHORT_REFLECTOR_LIGHT_COLOR, MyReflectorConstants.LONG_REFLECTOR_LIGHT_COLOR, m_ship.Config.ReflectorLongRange.Level);\n            CurrentReflectorRangeForward = MathHelper.Lerp(MyReflectorConstants.SHORT_REFLECTOR_RANGE_FORWARD, MyReflectorConstants.LONG_REFLECTOR_RANGE_FORWARD, m_ship.Config.ReflectorLongRange.Level);\n            CurrentReflectorRangeBackward = MathHelper.Lerp(MyReflectorConstants.SHORT_REFLECTOR_RANGE_BACKWARD, MyReflectorConstants.LONG_REFLECTOR_RANGE_BACKWARD, m_ship.Config.ReflectorLongRange.Level);\n            CurrentReflectorConeAngleForward = MathHelper.Lerp(MyReflectorConstants.SHORT_REFLECTOR_CONE_ANGLE_FORWARD, MyReflectorConstants.LONG_REFLECTOR_CONE_ANGLE_FORWARD, m_ship.Config.ReflectorLongRange.Level);\n            CurrentReflectorConeAngleBackward = MathHelper.Lerp(MyReflectorConstants.SHORT_REFLECTOR_CONE_ANGLE_BACKWARD, MyReflectorConstants.LONG_REFLECTOR_CONE_ANGLE_BACKWARD, m_ship.Config.ReflectorLongRange.Level);\n            CurrentBillboardLength = MathHelper.Lerp(MyReflectorConstants.SHORT_REFLECTOR_BILLBOARD_LENGTH, MyReflectorConstants.LONG_REFLECTOR_BILLBOARD_LENGTH, m_ship.Config.ReflectorLongRange.Level);\n            CurrentBillboardThickness = MathHelper.Lerp(MyReflectorConstants.SHORT_REFLECTOR_BILLBOARD_THICKNESS, MyReflectorConstants.LONG_REFLECTOR_BILLBOARD_THICKNESS, m_ship.Config.ReflectorLongRange.Level);\n\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Ships/Config/MySmallShipConfig.cs",
    "content": "﻿using System.Globalization;\n\nnamespace MinerWars.AppCode.Game.Entities\n{\n    using System;\n    using System.Text;\n    using App;\n    using Audio;\n    using CommonLIB.AppCode.ObjectBuilders.SubObjects;\n    using GUI;\n    using Localization;\n    using MinerWarsMath;\n    using Utils;\n    using MinerWars.AppCode.Game.Managers.Session;\n    using MinerWars.CommonLIB.AppCode.ObjectBuilders;\n    using System.Diagnostics;\n\n    class MySmallShipConfig\n    {\n        StringBuilder m_noText = new StringBuilder();\n        MyPhysObjectSmallShipConfigItem[] m_items;\n\n        public MyPhysObjectSmallShipConfigItemBoolSwitchWithLevel Engine { get; private set; }\n        public MyPhysObjectSmallShipConfigItemBoolSwitchWithLevel ReflectorLight { get; private set; }\n        public MyPhysObjectSmallShipConfigItemBoolSwitchWithLevel ReflectorLongRange { get; private set; }\n        public MyPhysObjectSmallShipConfigItemHudRadar RadarType { get; private set; }\n        public MyPhysObjectSmallShipConfigItemBoolSwitch AutoLeveling { get; private set; }\n        public MyPhysObjectSmallShipConfigItemBoolSwitch MovementSlowdown { get; private set; }\n        public MyPhysObjectSmallShipConfigItemBoolSwitch BackCamera { get; private set; }\n        public MyPhysObjectSmallShipConfigItemBoolSwitch HarvestingTool { get; private set; }\n        public MyPhysObjectSmallShipConfigItemBoolSwitch DrillingTool { get; private set; }\n        public MyPhysObjectSmallShipConfigItemViewMode ViewMode { get; private set; }\n        public MyPhysObjectSmallShipConfigItemBoolSwitch HealthEnhancingMedicine { get; private set; }\n        public MyPhysObjectSmallShipConfigItemBoolSwitch PerformanceEnhancingMedicine { get; private set; }\n        public MyPhysObjectSmallShipConfigItemIntArray TimeBombTimer { get; private set; }\n        public MyPhysObjectSmallShipConfigItemBoolSwitch RadarJammer { get; private set; }\n\n        public event Action<MySmallShipConfig> ConfigChanged;\n\n        public MySmallShipConfig(MySmallShip ship)\n        {\n            Engine = new MyPhysObjectSmallShipConfigItemBoolSwitchWithLevel(MyTextsWrapper.Get(MyTextsWrapperEnum.EngineShutdown), 0.25f, 0f, 1f, true, delegate()\n                {\n                    ship.SetEngineSound(this.Engine.On);\n                    RaiseConfigChanged();\n                }, null, MyMinerShipConstants.MINER_SHIP_ENGINE_SWITCH_MIN_REPEAT_TRESHOLD, null); //later it will be good to have repeat threshold changing with engine type for example\n\n            ReflectorLight = new MyPhysObjectSmallShipConfigItemBoolSwitchWithLevel(MyTextsWrapper.Get(MyTextsWrapperEnum.ToggleHeadlights), 0.25f, 0f, 1f, true, delegate()\n                {\n                    MyAudio.AddCue2D(this.ReflectorLight.On ? MySoundCuesEnum.VehShipaLightsOn : MySoundCuesEnum.VehShipaLightsOff);\n                    RaiseConfigChanged();\n                }, null, 0, MyGameControlEnums.HEADLIGHTS);\n\n            ReflectorLongRange = new MyPhysObjectSmallShipConfigItemBoolSwitchWithLevel(MyTextsWrapper.Get(MyTextsWrapperEnum.HeadlightsRange),\n                MyReflectorConstants.CHANGE_RANGE_INTERVAL_IN_MILISECONDS / 1000, 0f, 1f,\n                MyTextsWrapper.Get(MyTextsWrapperEnum.HeadlightsRangeLong), MyTextsWrapper.Get(MyTextsWrapperEnum.HeadlightsRangeClose), false, delegate()\n                {\n                    MyAudio.AddCue2D(MySoundCuesEnum.SfxHudReflectorRange);\n                    RaiseConfigChanged();\n                }, null, 0, MyGameControlEnums.HEADLIGTHS_DISTANCE);\n\n            RadarType = new MyPhysObjectSmallShipConfigItemHudRadar();\n\n            if (!(ship is MySmallShipBot))\n            {\n                AutoLeveling = new MyPhysObjectSmallShipConfigItemBoolSwitch(MyTextsWrapper.Get(MyTextsWrapperEnum.AutoLevel), false, delegate()\n                    {\n                        MyAudio.AddCue2D(this.AutoLeveling.On ? MySoundCuesEnum.SfxHudAutolevelingOn : MySoundCuesEnum.SfxHudAutolevelingOff);\n                    }, null, 0, MyGameControlEnums.AUTO_LEVEL);\n            }\n            else\n            {\n                AutoLeveling = new MyPhysObjectSmallShipConfigItemBoolSwitch(MyTextsWrapper.Get(MyTextsWrapperEnum.AutoLevel), false, delegate()\n                {\n                    ;\n                }, null, 0, MyGameControlEnums.AUTO_LEVEL);\n            }\n\n\n            MovementSlowdown = new MyPhysObjectSmallShipConfigItemBoolSwitch(MyTextsWrapper.Get(MyTextsWrapperEnum.MovementSlowdown), true, delegate()\n                {\n                    MyAudio.AddCue2D(this.MovementSlowdown.On ? MySoundCuesEnum.SfxHudSlowMovementOn : MySoundCuesEnum.SfxHudSlowMovementOff);\n                    RaiseConfigChanged();\n                }, null, 0, MyGameControlEnums.MOVEMENT_SLOWDOWN);\n\n            BackCamera = new MyPhysObjectSmallShipConfigItemBoolSwitch(MyTextsWrapper.Get(MyTextsWrapperEnum.RearCam), false, delegate()\n                {\n                    MyAudio.AddCue2D(this.BackCamera.On ? MySoundCuesEnum.SfxHudBackcameraOn : MySoundCuesEnum.SfxHudBackcameraOff);\n                    RaiseConfigChanged();\n                }, null, 0, MyGameControlEnums.REAR_CAM);\n\n            HarvestingTool = new MyPhysObjectSmallShipConfigItemBoolSwitch(MyTextsWrapper.Get(MyTextsWrapperEnum.Harvest), m_noText, m_noText, false, delegate()\n                {\n                    MySession.PlayerShip.Weapons.FireHarvester();\n                    RaiseConfigChanged();\n                }, delegate()\n                {\n                    if (ship.Weapons.GetWeaponsObjectBuilders(false) == null) return false;\n                    if (!ship.Config.Engine.Enable || ship.Fuel == 0) return false;\n                    foreach (var item in ship.Weapons.GetWeaponsObjectBuilders(false))\n                    {\n                        if (item.WeaponType == MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Harvesting_Device) return true;\n                    }\n                    return false;\n                }, 0, MyGameControlEnums.HARVEST);\n\n            DrillingTool = new MyPhysObjectSmallShipConfigItemBoolSwitch(MyTextsWrapper.Get(MyTextsWrapperEnum.UseDrill), m_noText, m_noText, false, delegate()\n                {\n                    //This should be implemented somehow different\n                    MySession.PlayerShip.Weapons.FireDrill();\n                    RaiseConfigChanged();\n                }, delegate()\n                {\n                    if (ship.Weapons.GetWeaponsObjectBuilders(false) == null) return false;\n                    if (!ship.Config.Engine.Enable || ship.Fuel == 0) return false;\n                    foreach (var item in ship.Weapons.GetWeaponsObjectBuilders(false))\n                    {\n                        if (item.WeaponType == MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Crusher ||\n                            item.WeaponType == MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Laser ||\n                            item.WeaponType == MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Nuclear ||\n                            item.WeaponType == MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Saw ||\n                            item.WeaponType == MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Thermal ||\n                            item.WeaponType == MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Pressure)\n                            return true;\n                    }\n                    return false;\n                }, 0, MyGameControlEnums.DRILL);\n\n            HealthEnhancingMedicine = new MyPhysObjectSmallShipConfigItemBoolSwitch(MyTextsWrapper.Get(MyTextsWrapperEnum.ActivateHealthEnhancingMedicine), m_noText, m_noText, false, delegate()\n            {\n                if (!MySession.Static.Player.Medicines[(int)MinerWars.AppCode.Game.Entities.Tools.MyMedicineType.HEALTH_ENHANCING_MEDICINE].IsActive())\n                    MySession.Static.Player.Medicines[(int)MinerWars.AppCode.Game.Entities.Tools.MyMedicineType.HEALTH_ENHANCING_MEDICINE].ActivateIfInInventory(MySession.PlayerShip.Inventory);\n                RaiseConfigChanged();\n            }, delegate()\n            {\n                var item = MySession.PlayerShip.Inventory.GetInventoryItem(MyMwcObjectBuilderTypeEnum.SmallShip_Tool, (int?)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.HEALTH_ENHANCING_MEDICINE);\n                return item != null;\n            }, 0, null);\n\n            PerformanceEnhancingMedicine = new MyPhysObjectSmallShipConfigItemBoolSwitch(MyTextsWrapper.Get(MyTextsWrapperEnum.ActivatePerformanceEnhancingMedicine), m_noText, m_noText, false, delegate()\n            {\n                if (!MySession.Static.Player.Medicines[(int)MinerWars.AppCode.Game.Entities.Tools.MyMedicineType.PERFORMANCE_ENHANCING_MEDICINE].IsActive())\n                    MySession.Static.Player.Medicines[(int)MinerWars.AppCode.Game.Entities.Tools.MyMedicineType.PERFORMANCE_ENHANCING_MEDICINE].ActivateIfInInventory(MySession.PlayerShip.Inventory);\n                RaiseConfigChanged();\n            }, delegate()\n            {\n                var item = MySession.PlayerShip.Inventory.GetInventoryItem(MyMwcObjectBuilderTypeEnum.SmallShip_Tool, (int?)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.PERFORMANCE_ENHANCING_MEDICINE);\n                return item != null;\n            }, 0, null);\n\n            ViewMode = new MyPhysObjectSmallShipConfigItemViewMode();\n\n            TimeBombTimer = new MyPhysObjectSmallShipConfigItemIntArray(\n                MyTimeBombConstants.TIMEOUT_ARRAY, 1, MyTextsWrapper.Get(MyTextsWrapperEnum.TimeBombTimer),\n                delegate()\n                {\n                    RaiseConfigChanged();\n                }, null, null);\n\n            RadarJammer = new MyPhysObjectSmallShipConfigItemBoolSwitch(MyTextsWrapper.Get(MyTextsWrapperEnum.ToolRadarJammerName), true,\n                delegate()\n                {\n                    RaiseConfigChanged();\n                },\n                delegate()\n                {\n                    return MySession.PlayerShip.Inventory.Contains(MyMwcObjectBuilderTypeEnum.SmallShip_Tool, (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.RADAR_JAMMER);\n                }, 0, null);\n\n            m_items = new MyPhysObjectSmallShipConfigItem[] \n            { \n                Engine, \n                ReflectorLight, \n                ReflectorLongRange, \n                //RadarType, \n                AutoLeveling, \n                MovementSlowdown, \n                BackCamera,\n                HarvestingTool,\n                DrillingTool,\n                ViewMode,\n                HealthEnhancingMedicine,\n                PerformanceEnhancingMedicine,\n                TimeBombTimer,\n                RadarJammer,\n            };\n\n        }\n\n        void RaiseConfigChanged()\n        {\n            var handler = ConfigChanged;\n            if (handler != null)\n            {\n                handler(this);\n            }\n        }\n\n        public void Update()\n        {\n            foreach (var item in m_items)\n            {\n                if (item is MyPhysObjectSmallShipConfigItemBoolSwitchWithLevel)\n                {\n                    ((MyPhysObjectSmallShipConfigItemBoolSwitchWithLevel)item).Update();\n                }\n            }\n        }\n\n        public void Items(int first, ref MyPhysObjectSmallShipConfigItem[] items, ref int count)\n        {\n            int enabledCount = 0;\n            foreach (var item in m_items) if (item.Enable) ++enabledCount;\n\n            // Try get as much items as possible\n            int last = Math.Max(enabledCount - items.Length, 0);\n            if (last < first)\n            {\n                first = last;\n            }\n\n            count = 0;\n            foreach (var item in m_items)\n            {\n                if (!item.Enable) continue;\n                if (first <= count && items.Length > count - first)\n                {\n                    items[count - first] = item;\n                }\n                count++;\n            }\n\n            for (int i = count - first; i < items.Length; i++)\n            {\n                items[i] = null;\n            }\n        }\n\n\n        public void Items(ref MyPhysObjectSmallShipConfigItem[] items)\n        {\n            if (items.Length < m_items.Length)\n            {\n                items = new MyPhysObjectSmallShipConfigItem[m_items.Length];\n            }\n\n            int count = 0;\n            foreach (var item in m_items)\n            {\n                items[count] = item.Enable ? item : null;\n                count++;\n            }\n\n        }\n\n\n        public MyMwcObjectBuilder_ShipConfig GetObjectBuilder()\n        {\n            return new MyMwcObjectBuilder_ShipConfig\n            (\n                Engine.On,\n                (byte)RadarType.Current,\n                AutoLeveling.On,\n                MovementSlowdown.On,\n                BackCamera.On,\n                (byte)ViewMode.Current\n            );\n        }\n\n        public void Init(MyMwcObjectBuilder_ShipConfig objectBuilder)\n        {\n            Engine.SetValue(objectBuilder.Engine);\n            RadarType.SetValue((MyHudRadarTypesEnum)objectBuilder.RadarType);\n            AutoLeveling.SetValue(objectBuilder.AutoLeveling);\n            MovementSlowdown.SetValue(objectBuilder.MovementSlowdown);\n            BackCamera.SetValue(objectBuilder.BackCamera);\n            ViewMode.SetValue((MyViewModeTypesEnum)objectBuilder.ViewMode);\n        }\n    }\n\n    abstract class MyPhysObjectSmallShipConfigItem\n    {\n        protected Action m_changeValueCallback;\n        private Func<bool> m_isEnableCallback;\n\n        public StringBuilder Name { get; private set; }\n        public MyGameControlEnums? AssociatedControl { get; private set; }\n\n        public abstract StringBuilder CurrentValueText { get; }\n\n        public MyPhysObjectSmallShipConfigItem(StringBuilder name, Action onChangeValueCallback, Func<bool> isEnableCallback, MyGameControlEnums? associatedControl)\n        {\n            Name = name;\n            m_changeValueCallback = onChangeValueCallback;\n            m_isEnableCallback = isEnableCallback;\n            AssociatedControl = associatedControl;\n        }\n\n        public virtual void ChangeValueUp()\n        {\n            if (m_changeValueCallback != null) m_changeValueCallback();\n        }\n\n        public virtual void ChangeValueDown()\n        {\n            if (m_changeValueCallback != null) m_changeValueCallback();\n        }\n\n        public bool Enable\n        {\n            get\n            {\n                if (m_isEnableCallback == null)\n                    return true;\n                else\n                    return m_isEnableCallback();\n            }\n        }\n    }\n\n    class MyPhysObjectSmallShipConfigItemBoolSwitch : MyPhysObjectSmallShipConfigItem\n    {\n        bool m_value;\n        StringBuilder m_trueText;\n        StringBuilder m_falseText;\n        int m_lastTimeChanged;\n        int m_minChangeThreshold;  //this can be used to control, how often in time can be item switched on/off(for example engine)\n\n        public override StringBuilder CurrentValueText\n        {\n            get { return m_value ? m_trueText : m_falseText; }\n        }\n\n        public bool On { get { return m_value; } }\n\n        public MyPhysObjectSmallShipConfigItemBoolSwitch(StringBuilder name, bool isDefaultOn, Action onChangeValueCallback, Func<bool> isEnableCallback, int minChangeThreshold, MyGameControlEnums? associatedControl)\n            : this(name, MyTextsWrapper.Get(MyTextsWrapperEnum.On), MyTextsWrapper.Get(MyTextsWrapperEnum.Off), isDefaultOn, onChangeValueCallback, isEnableCallback, minChangeThreshold, associatedControl)\n        { }\n\n        public MyPhysObjectSmallShipConfigItemBoolSwitch(StringBuilder name, StringBuilder trueText, StringBuilder falseText, bool isDefaultTrue, Action onChangeValue, Func<bool> isEnableCallback, int minChangeThreshold, MyGameControlEnums? associatedControl)\n            : base(name, onChangeValue, isEnableCallback, associatedControl)\n        {\n            m_value = isDefaultTrue;\n            m_trueText = trueText;\n            m_falseText = falseText;\n            m_minChangeThreshold = minChangeThreshold;\n        }\n\n        public override void ChangeValueUp()\n        {\n            System.Diagnostics.Debug.Assert(!MyMinerGame.IsPaused());\n            if (MyMinerGame.TotalGamePlayTimeInMilliseconds > m_lastTimeChanged + m_minChangeThreshold)\n            {\n                m_value = !m_value;\n                base.ChangeValueUp();\n                m_lastTimeChanged = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n            }\n        }\n\n        public override void ChangeValueDown()\n        {\n            System.Diagnostics.Debug.Assert(!MyMinerGame.IsPaused());\n            if (MyMinerGame.TotalGamePlayTimeInMilliseconds > m_lastTimeChanged + m_minChangeThreshold)\n            {\n                m_value = !m_value;\n                base.ChangeValueDown();\n                m_lastTimeChanged = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n            }\n        }\n\n        public virtual void SetOn()\n        {\n            if (!m_value)\n            {\n                m_value = true;\n                m_changeValueCallback();\n            }\n        }\n\n        public virtual void SetOff()\n        {\n            if (m_value)\n            {\n                m_value = false;\n                m_changeValueCallback();\n            }\n        }\n\n        public void SetValue(bool value)\n        {\n            m_value = value;\n        }\n    }\n\n    class MyPhysObjectSmallShipConfigItemBoolSwitchWithLevel : MyPhysObjectSmallShipConfigItemBoolSwitch\n    {\n        public float Level { get; set; } //I think 'set' should be private, but method TrailerUpdate in MySmallShip set level for reflector and engine directly.\n        private float m_intervalInSeconds;\n        private float m_levelMinValue;\n        private float m_levelMaxValue;\n        private float m_levelChangePerSecond;\n\n        public MyPhysObjectSmallShipConfigItemBoolSwitchWithLevel(StringBuilder name, float levelIntervalInSeconds, float levelMinValue, float levelMaxValue, bool isDefaultOn, Action onChangeValue, Func<bool> isEnableCallback, int minChangeThreshold, MyGameControlEnums? associatedControl)\n            : base(name, isDefaultOn, onChangeValue, isEnableCallback, minChangeThreshold, associatedControl)\n        {\n            m_intervalInSeconds = levelIntervalInSeconds;\n            m_levelMinValue = levelMinValue;\n            m_levelMaxValue = levelMaxValue;\n            m_levelChangePerSecond = (m_levelMaxValue - m_levelMinValue) / m_intervalInSeconds;\n        }\n\n        public MyPhysObjectSmallShipConfigItemBoolSwitchWithLevel(StringBuilder name, float levelIntervalInSeconds, float levelMinValue, float levelMaxValue, StringBuilder trueText, StringBuilder falseText, bool isDefaultTrue, Action onChangeValue, Func<bool> isEnableCallback, int minChangeThreshold, MyGameControlEnums? associatedControl)\n            : base(name, trueText, falseText, isDefaultTrue, onChangeValue, isEnableCallback, minChangeThreshold, associatedControl)\n        {\n            m_intervalInSeconds = levelIntervalInSeconds;\n            m_levelMinValue = levelMinValue;\n            m_levelMaxValue = levelMaxValue;\n            m_levelChangePerSecond = (m_levelMaxValue - m_levelMinValue) / m_intervalInSeconds;\n        }\n\n        public void Update()\n        {\n            float sign = (this.On) ? +1 : -1;\n            Level += sign * m_levelChangePerSecond * MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS;\n            Level = MathHelper.Clamp(Level, m_levelMinValue, m_levelMaxValue);\n        }\n    }\n\n    class MyPhysObjectSmallShipConfigItemHudRadar : MyPhysObjectSmallShipConfigItem\n    {\n        protected MyHudRadarTypesEnum m_current;\n        protected MyHudRadarTypesEnum m_default;\n\n        public MyHudRadarTypesEnum Current { get { return m_current; } }\n\n        public MyPhysObjectSmallShipConfigItemHudRadar()\n            : base(MyTextsWrapper.Get(MyTextsWrapperEnum.RadarType), null, null, null /*MyGameControlEnums.RADAR*/)\n        {\n            m_default = MyHudRadarTypesEnum.Normal3D;\n            m_current = m_default;\n        }\n\n        public override void ChangeValueUp()\n        {\n            MyAudio.AddCue2D(MySoundCuesEnum.SfxHudRadarMode);\n            switch (m_current)\n            {\n                case MyHudRadarTypesEnum.Normal3D:\n                    m_current = MyHudRadarTypesEnum.Player2D;\n                    break;\n                case MyHudRadarTypesEnum.Player2D:\n                    m_current = MyHudRadarTypesEnum.Solar2D;\n                    break;\n                case MyHudRadarTypesEnum.Solar2D:\n                    m_current = MyHudRadarTypesEnum.Normal3D;\n                    break;\n            }\n            base.ChangeValueUp();\n        }\n\n        public override void ChangeValueDown()\n        {\n            MyAudio.AddCue2D(MySoundCuesEnum.SfxHudRadarMode);\n            switch (m_current)\n            {\n                case MyHudRadarTypesEnum.Normal3D:\n                    m_current = MyHudRadarTypesEnum.Solar2D;\n                    break;\n                case MyHudRadarTypesEnum.Player2D:\n                    m_current = MyHudRadarTypesEnum.Normal3D;\n                    break;\n                case MyHudRadarTypesEnum.Solar2D:\n                    m_current = MyHudRadarTypesEnum.Player2D;\n                    break;\n            }\n            base.ChangeValueDown();\n        }\n\n        public override StringBuilder CurrentValueText\n        {\n            get\n            {\n                switch (m_current)\n                {\n                    case MyHudRadarTypesEnum.Normal3D:\n                        return MyTextsWrapper.Get(MyTextsWrapperEnum.RadarTypeNormal3D);\n                    case MyHudRadarTypesEnum.Player2D:\n                        return MyTextsWrapper.Get(MyTextsWrapperEnum.RadarTypePlayer2D);\n                    case MyHudRadarTypesEnum.Solar2D:\n                        return MyTextsWrapper.Get(MyTextsWrapperEnum.RadarTypeSolar2D);\n                    default:\n                        return new StringBuilder();\n                }\n            }\n        }\n\n        public void SetValue(MyHudRadarTypesEnum value)\n        {\n            m_current = value;\n        }\n    }\n\n    //IMPORTANT: If you add some item to enum below, add case to switches in class MyPhysObjectSmallShipConfigItemHudRadar\n    enum MyHudRadarTypesEnum\n    {\n        //  Standard 3d Radar\n        Normal3D = 0,\n        //  2D radar where points are projected on to the horizontal\n        //  plane in relation to the player\n        Player2D = 1,\n        //  2D radar where points are projected on to the solar system plane\n        Solar2D = 2,\n    }\n\n    class MyPhysObjectSmallShipConfigItemViewMode : MyPhysObjectSmallShipConfigItem\n    {\n        protected MyViewModeTypesEnum m_current;\n\n        public MyViewModeTypesEnum Current { get { return m_current; } }\n\n        public MyPhysObjectSmallShipConfigItemViewMode()\n            : base(MyTextsWrapper.Get(MyTextsWrapperEnum.ViewMode), null, null, MyGameControlEnums.VIEW_MODE)\n        {\n            m_current = MyViewModeTypesEnum.CockpitOn;\n        }\n\n        private void OnValueChange(bool playSound = true)\n        {\n            if (playSound) MyAudio.AddCue2D(MySoundCuesEnum.SfxHudCockpitOff);\n\n            if (m_current == MyViewModeTypesEnum.ThirdPerson)\n            {\n                MyThirdPersonSpectator.Init(MySession.PlayerShip.GetPosition(),\n                                            MySession.PlayerShip.GetWorldRotation());\n            }\n\n            MyGuiScreenGamePlay.Static.CameraAttachedTo = GetCameraMode();\n        }\n\n        public override void ChangeValueUp()\n        {\n            if (MyGuiScreenGamePlay.Static.DetachingForbidden)\n            {\n                return;\n            }\n\n            if (MySession.Is25DSector)\n            {\n                m_current = MyViewModeTypesEnum.ThirdPerson;\n            }\n            else\n            {\n                switch (m_current)\n                {\n                    case MyViewModeTypesEnum.CockpitOn:\n                        m_current = MyViewModeTypesEnum.CockpitOff;\n                        break;\n                    case MyViewModeTypesEnum.CockpitOff:\n                        m_current = MyViewModeTypesEnum.ThirdPerson;\n                        break;\n                    case MyViewModeTypesEnum.ThirdPerson:\n                        m_current = MyViewModeTypesEnum.CockpitOn;\n                        break;\n                }\n            }\n\n            OnValueChange();\n            base.ChangeValueUp();\n        }\n\n        public override void ChangeValueDown()\n        {\n            if (MyGuiScreenGamePlay.Static.DetachingForbidden)\n            {\n                return;\n            }\n\n            if (MySession.Is25DSector)\n            {\n                m_current = MyViewModeTypesEnum.ThirdPerson;\n            }\n            else\n            {\n                switch (m_current)\n                {\n                    case MyViewModeTypesEnum.CockpitOn:\n                        m_current = MyViewModeTypesEnum.ThirdPerson;\n                        break;\n                    case MyViewModeTypesEnum.ThirdPerson:\n                        m_current = MyViewModeTypesEnum.CockpitOff;\n                        break;\n                    case MyViewModeTypesEnum.CockpitOff:\n                        m_current = MyViewModeTypesEnum.CockpitOn;\n                        break;\n                }\n            }\n\n            OnValueChange();\n            base.ChangeValueDown();\n        }\n\n        public override StringBuilder CurrentValueText\n        {\n            get\n            {\n                switch (m_current)\n                {\n                    case MyViewModeTypesEnum.CockpitOn:\n                        return MyTextsWrapper.Get(MyTextsWrapperEnum.ViewModeCockpitOn);\n                    case MyViewModeTypesEnum.CockpitOff:\n                        return MyTextsWrapper.Get(MyTextsWrapperEnum.ViewModeCockpitOff);\n                    case MyViewModeTypesEnum.ThirdPerson:\n                        return MyTextsWrapper.Get(MyTextsWrapperEnum.ViewModeThirdPerson);\n                    default:\n                        return new StringBuilder();\n                }\n            }\n        }\n\n        public void SetValue(MyViewModeTypesEnum value)\n        {\n            m_current = value;\n\n            // we dont wanna change camera mode in editor, change camera only in gameplay\n            if (MyGuiScreenGamePlay.Static != null && MyGuiScreenGamePlay.Static.IsGameActive() && !MyGuiScreenGamePlay.Static.DetachingForbidden)\n            {\n                OnValueChange(false);\n            }\n        }\n\n        public MyCameraAttachedToEnum GetCameraMode()\n        {\n            switch (m_current)\n            {\n                case MyViewModeTypesEnum.CockpitOn:\n                case MyViewModeTypesEnum.CockpitOff:\n                    return MyCameraAttachedToEnum.PlayerMinerShip;\n                    break;\n                case MyViewModeTypesEnum.ThirdPerson:\n                    return MyCameraAttachedToEnum.PlayerMinerShip_ThirdPersonDynamic;\n                    break;\n            }\n\n            Debug.Fail(\"SmallShipConfig.ViewMode in incorrect state!\");\n            return MyCameraAttachedToEnum.PlayerMinerShip;\n        }\n    }\n\n    class MyPhysObjectSmallShipConfigItemIntArray : MyPhysObjectSmallShipConfigItem\n    {\n        readonly int[] m_array;\n        readonly StringBuilder[] m_texts;\n        int m_index;\n\n        public MyPhysObjectSmallShipConfigItemIntArray(int[] array, int defaultIndex, StringBuilder name, Action onChangeValueCallback, Func<bool> isEnableCallback, MyGameControlEnums? associatedControl)\n            : base(name, onChangeValueCallback, isEnableCallback, associatedControl)\n        {\n            m_array = array;\n            m_index = defaultIndex;\n\n            m_texts = new StringBuilder[array.Length];\n            for (int i = 0; i < array.Length; i++)\n            {\n                m_texts[i] = new StringBuilder(array[i].ToString(CultureInfo.InvariantCulture));\n            }\n        }\n\n        public override void ChangeValueDown()\n        {\n            m_index--;\n            if (m_index < 0) m_index += m_array.Length;\n            m_index %= m_array.Length;\n            base.ChangeValueDown();\n        }\n\n        public override void ChangeValueUp()\n        {\n            m_index++;\n            m_index %= m_array.Length;\n            base.ChangeValueUp();\n        }\n\n        public void SetValue(int value)\n        {\n            for (int i = 0; i < m_array.Length; i++)\n            {\n                if (m_array[i] == value)\n                {\n                    m_index = i;\n                    break;\n                }\n            }\n        }\n\n        public override StringBuilder CurrentValueText { get { return m_texts[m_index]; } }\n\n        public int CurrentValue { get { return m_array[m_index]; } }\n    }\n\n    //IMPORTANT: If you add some item to enum below, add case to switches in class MyPhysObjectSmallShipConfigItemViewMode\n    enum MyViewModeTypesEnum\n    {\n        CockpitOn = 0,\n        CockpitOff = 1,\n        ThirdPerson = 2,\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Ships/MyDrone.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.Inventory;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.AppCode.Game.Entities.SubObjects;\nusing MinerWars.AppCode.Game.Entities.Weapons;\nusing MinerWars.AppCode.Game.Entities.Weapons.UniversalLauncher;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Models;\nusing MinerWars.AppCode.Game.Prefabs;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Physics;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.AppCode.Game.Entities.Ships.AI;\nusing MinerWars.AppCode.Game.Render;\nusing MinerWars.AppCode.Game.Entities.Prefabs;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.AppCode.Game.Localization;\n\nnamespace MinerWars.AppCode.Game.Entities\n{\n    class MyDrone : MySmallShipBot, IMyUseableEntity\n    {\n        // Inherits from bot because we need AI for drone as well. \n        // Perhaps in the future it would be better to separate AI logic without inheritance and \n        // then drone could inherit from MyShip and only use some AI controller.\n\n        private const int MIN_TIME_TO_ACTIVATE_SHELL = 20;\n\n        private enum MyDroneFunction\n        {\n            None,\n            Explosive,\n            EMP,\n            NonExplosive,\n            //Biochem bomb?,\n            //Blaster bomb?,\n            Hacking,\n        }\n\n        private MyDroneFunction m_function;\n        private MyMwcObjectBuilder_Drone m_droneObjectBuilder;\n\n        private MySmallShip m_ownerShip;\n        private bool m_fired;\n\n        public MySmallShip OwnerShip\n        {\n            get { return m_ownerShip; }\n            set\n            {\n                m_ownerShip = value;\n                SetFollow();\n            }\n        }\n\n        public bool HoldPosition { get; set; }\n\n        public MyDrone()\n        {\n            Inventory.MaxItems = 1;\n        }\n\n        public void Init(StringBuilder hudLabelText, MyMwcObjectBuilder_Drone droneBuilder, MyModelsEnum? modelCollision = null, MyModelsEnum? modelLod2 = null, float? scale = null)\n        {\n            var modelLod0Enum = GetModelLod0Enum(droneBuilder.DroneType);\n\n            MyEntity owner = null;\n\n            base.Init(hudLabelText, modelLod0Enum, null, owner, scale, droneBuilder, modelCollision, modelLod2);\n\n            SetWorldMatrix(droneBuilder.PositionAndOrientation.GetMatrix());\n\n            m_fired = false;\n\n            m_shipTypeProperties = new MyShipTypeProperties();\n\n            m_reflectorProperies = new MyReflectorConfig(this);\n\n            Faction = droneBuilder.Faction;\n\n            Save = true;\n\n            m_function = MyDroneFunction.None;\n\n            InitWeapons();\n\n            InitEntityDetector();\n\n            InitPhysics(droneBuilder.DroneType);\n\n            InitAI();\n\n            InitSpoiledHolograms();\n\n            InitInventory(droneBuilder.Inventory);\n\n            // back camera is turned off by default\n            Config.BackCamera.SetOff();\n\n            m_droneObjectBuilder = droneBuilder;\n\n            UseProperties = new MyUseProperties(MyUseType.Solo, MyUseType.None, MyTextsWrapperEnum.NotificationYouCanTake);\n            UseProperties.Init(MyUseType.Solo, MyUseType.None, 0, 1, false);\n\n            HackingTool = new Tools.MyHackingTool(this, MySession.PlayerShip.HackingTool.HackingLevel);\n        }\n\n        private static MyModelsEnum GetModelLod0Enum(MyMwcObjectBuilder_Drone_TypesEnum droneType)\n        {\n            MyModelsEnum modelLod0Enum;\n            switch (droneType)\n            {\n                case MyMwcObjectBuilder_Drone_TypesEnum.DroneUS:\n                    modelLod0Enum = MyModelsEnum.DroneUS;\n                    break;\n                case MyMwcObjectBuilder_Drone_TypesEnum.DroneCN:\n                    modelLod0Enum = MyModelsEnum.DroneCN;\n                    break;\n                case MyMwcObjectBuilder_Drone_TypesEnum.DroneSS:\n                    modelLod0Enum = MyModelsEnum.DroneSS;\n                    break;\n                default:\n                    throw new ArgumentOutOfRangeException();\n            }\n            return modelLod0Enum;\n        }\n\n        private void InitInventory(MyMwcObjectBuilder_Inventory inventory)\n        {\n            if (inventory != null)\n            {\n                Inventory.Init(inventory);\n                Inventory_OnInventoryContentChange(Inventory);\n            }\n            Inventory.MaxItems = 1;\n            Inventory.OnInventoryContentChange += Inventory_OnInventoryContentChange;\n        }\n\n        public override void Link()\n        {\n            base.Link();\n\n\n            if (OwnerEntity != null)\n            {\n                Debug.Assert(OwnerEntity is MySmallShip);\n                OwnerShip = (MySmallShip)OwnerEntity;\n                OwnerShip.AddDrone(this);\n            }\n        }\n\n        private void InitWeapons()\n        {\n            Weapons = new MySmallShipWeapons(this, m_shipTypeProperties, 0);\n        }\n\n        private void InitEntityDetector()\n        {\n            List<IMyEntityDetectorCriterium> useableEntityCriterias = new List<IMyEntityDetectorCriterium>\n            {\n                new MyEntityDetectorCriterium<MyPrefabBase>(\n                    (int)MySmallShipInteractionActionEnum.Use, \n                    MySmallShipInteraction.CanUse, true, this),\n                new MyEntityDetectorCriterium<MyPrefabBase>(\n                    (int)MySmallShipInteractionActionEnum.Hack, \n                    MySmallShipInteraction.CanHack, true, this),\n            };\n\n            UseableEntityDetector = new MyEntityDetector();\n            UseableEntityDetector.Init(null, new MyMwcObjectBuilder_EntityDetector(new Vector3(MySmallShipConstants.DETECT_SHIP_RADIUS * 2f, 0f, 0f), MyMwcObjectBuilder_EntityDetector_TypesEnum.Sphere), this, WorldMatrix, useableEntityCriterias);\n            UseableEntityDetector.OnNearestEntityChange += OnNearestDetectedEntityChanged;\n            UseableEntityDetector.On();\n        }\n\n        void Inventory_OnInventoryContentChange(MyInventory sender)\n        {\n            m_function = GetFunctionFromInventory(this.Inventory);\n        }\n\n        private void InitAI()\n        {\n            Faction = MySession.PlayerShip.Faction;\n            m_aiTemplate = MyBotAITemplates.GetTemplate(MyAITemplateEnum.DRONE);\n            Aggressivity = 0;\n            RouteMemory = new MyPositionMemory(MySmallShipConstants.POSITION_MEMORY_SIZE, 1);\n\n            ActiveAI = true;\n\n            SetFollow();\n        }\n\n        private void SetFollow()\n        {\n            if (OwnerShip != null)\n            {\n                Follow(OwnerShip);\n            }\n            else\n            {\n                Follow(MySession.PlayerShip);\n            }\n        }\n\n        private void InitPhysics(MyMwcObjectBuilder_Drone_TypesEnum droneType)\n        {\n            // TODO constants\n\n            switch (droneType)\n            {\n                case MyMwcObjectBuilder_Drone_TypesEnum.DroneUS:\n                    m_shipTypeProperties.Physics = new MyShipTypePhysicsProperties\n                    {\n                        Mass = 750,\n                        MultiplierMovement = 1f,\n                        MultiplierForwardBackward = 420,\n                        MultiplierStrafe = 420,\n                        MultiplierStrafeRotation = 1.2f,\n                        MultiplierUpDown = 420,\n                        MultiplierRoll = 0.15f,\n                        MultiplierRotation = 0.14f,\n                        MultiplierRotationEffect = 0.05f,\n                        MultiplierRotationDecelerate = 1.85f,\n                        MultiplierHorizontalAngleStabilization = 21f,\n                        MaxAngularVelocity = 20f,\n                    };\n                    break;\n                case MyMwcObjectBuilder_Drone_TypesEnum.DroneCN:\n                    m_shipTypeProperties.Physics = new MyShipTypePhysicsProperties\n                    {\n                        Mass = 1000,\n                        MultiplierMovement = 1f,\n                        MultiplierForwardBackward = 420,\n                        MultiplierStrafe = 420,\n                        MultiplierStrafeRotation = 1.2f,\n                        MultiplierUpDown = 420,\n                        MultiplierRoll = 0.15f,\n                        MultiplierRotation = 0.14f,\n                        MultiplierRotationEffect = 0.05f,\n                        MultiplierRotationDecelerate = 1.85f,\n                        MultiplierHorizontalAngleStabilization = 21f,\n                        MaxAngularVelocity = 20f,\n                    };\n                    break;\n                case MyMwcObjectBuilder_Drone_TypesEnum.DroneSS:\n                    m_shipTypeProperties.Physics = new MyShipTypePhysicsProperties\n                    {\n                        Mass = 500,\n                        MultiplierMovement = 1f,\n                        MultiplierForwardBackward = 420,\n                        MultiplierStrafe = 420,\n                        MultiplierStrafeRotation = 1.2f,\n                        MultiplierUpDown = 420,\n                        MultiplierRoll = 0.30f,\n                        MultiplierRotation = 0.05f,\n                        MultiplierRotationEffect = 0.04f,\n                        MultiplierRotationDecelerate = 0.85f,\n                        MultiplierHorizontalAngleStabilization = 21f,\n                        MaxAngularVelocity = 20f,\n                    };\n                    break;\n                default:\n                    throw new ArgumentOutOfRangeException(\"droneType\");\n            }\n\n            m_shipTypeProperties.PhysicsForBot = m_shipTypeProperties.Physics;\n\n            var center = ModelLod0.BoundingBox.GetCenter();\n            var size = MyDroneConstants.DRONE_PHYSICS_SIZE_MULTIPLIER * ModelLod0.BoundingBoxSize;\n            InitBoxPhysics(MyMaterialType.METAL, center, size, m_shipTypeProperties.Physics.Mass,\n                           MyPhysicsConfig.DefaultAngularDamping,\n                           MyConstants.COLLISION_LAYER_DEFAULT, RigidBodyFlag.RBF_DEFAULT);\n\n            this.Physics.Type = MyConstants.RIGIDBODY_TYPE_SHIP;\n            this.Physics.PlayCollisionCueEnabled = true;\n            //this.Physics.MaxLinearVelocity = m_shipTypeProperties.Physics.MaxSpeed;\n            this.Physics.LinearDamping = MyPhysicsConfig.DefaultLinearDamping;\n            this.Physics.Enabled = true;\n\n            Config.AutoLeveling.SetOn();\n        }\n\n        public override void UpdateBeforeSimulation()\n        {\n            if (IsDead())\n            {\n                if (!m_fired)\n                {\n                    Fire();\n                }\n\n            }\n\n            base.UpdateBeforeSimulation();\n        }\n\n        public override bool Draw(MyRenderObject renderObject)\n        {\n            if (MyGuiScreenGamePlay.IsRenderingInsideEntity(this))\n            {\n                return false;\n            }\n\n            return base.Draw(renderObject);\n        }\n\n        //public static bool IsRenderingInsideControlledDrone()\n        //{\n        //    var isMainRenderInsideControlledDrone = MyGuiScreenGamePlay.Static.CameraAttachedTo ==\n        //                                            MyCameraAttachedToEnum.Drone &&\n        //                                            !MySecondaryCamera.Instance.IsCurrentlyRendering;\n\n        //    var isSecondaryRenderInsideControlledDrone = MySecondaryCamera.Instance.SecondaryCameraAttachedTo ==\n        //                                                 MySecondaryCameraAttachedTo.Drone &&\n        //                                                 MySecondaryCamera.Instance.IsCurrentlyRendering;\n\n        //    return isMainRenderInsideControlledDrone || isSecondaryRenderInsideControlledDrone;\n        //}\n\n        public override void Close()\n        {\n            Inventory.OnInventoryContentChange -= Inventory_OnInventoryContentChange;\n            if (OwnerShip != null)\n                OwnerShip.RemoveDrone(this);\n\n            base.Close();\n        }\n\n        protected override MyMwcObjectBuilder_Base GetObjectBuilderInternal(bool getExactCopy)\n        {\n            var objectBuilder = (MyMwcObjectBuilder_Drone)base.GetObjectBuilderInternal(getExactCopy);\n\n            return objectBuilder;\n        }\n\n        public void Fire()\n        {\n            switch (m_function)\n            {\n                case MyDroneFunction.None:\n                case MyDroneFunction.Hacking:\n                    // do nothing\n                    break;\n\n                case MyDroneFunction.NonExplosive:\n                    UseDroneItem();\n                    // just closes the drone\n                    this.MarkForClose();\n                    break;\n\n                case MyDroneFunction.Explosive:\n                case MyDroneFunction.EMP:\n                    UseDroneItem();\n                    // closes it and also makes it explode\n                    this.Kill(null);\n                    break;\n\n                default:\n                    throw new ArgumentOutOfRangeException();\n            }\n        }\n\n        void UseDroneItem()\n        {\n            m_fired = true;\n\n            // use universal launcher here:\n            var inventoryItem = Inventory.GetInventoryItems()[0];\n            var ammoBuilder = (MyMwcObjectBuilder_SmallShip_Ammo) inventoryItem.GetInventoryItemObjectBuilder(false);\n\n            // explode the shell immediately\n            Shot(MIN_TIME_TO_ACTIVATE_SHELL, ammoBuilder);\n        }\n\n        #region More or less copied from MyUniversalLauncher.cs\n\n        private void Shot(int timeToActivateShell, MyMwcObjectBuilder_SmallShip_Ammo ammoBuilder)\n        {\n            switch (ammoBuilder.AmmoType)\n            {\n                case MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Mine_Smart:\n                    Shot<MyMineSmart>(this.GetPosition(), timeToActivateShell);\n                    break;\n\n                case MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Mine_Basic:\n                    Shot<MyMineBasic>(this.GetPosition(), timeToActivateShell);\n                    break;\n\n                case MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Mine_BioChem:\n                    Shot<MyMineBioChem>(this.GetPosition(), timeToActivateShell);\n                    break;\n\n                case MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Sphere_Explosive:\n                    Shot<MySphereExplosive>(this.GetPosition(), timeToActivateShell);\n                    break;\n\n                case MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Decoy_Flare:\n                    Shot<MyDecoyFlare>(this.GetPosition(), timeToActivateShell);\n                    break;\n\n                case MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Flash_Bomb:\n                    Shot<MyFlashBomb>(this.GetPosition(), timeToActivateShell);\n                    break;\n\n                case MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Illuminating_Shell:\n                    Shot<MyIlluminatingShell>(this.GetPosition(), timeToActivateShell);\n                    break;\n\n                case MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Smoke_Bomb:\n                    Shot<MySmokeBomb>(this.GetPosition(), timeToActivateShell);\n                    break;\n\n                case MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Asteroid_Killer:\n                    Shot<MyAsteroidKiller>(this.GetPosition(), timeToActivateShell);\n                    break;\n\n                case MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Directional_Explosive:\n                    Shot<MyDirectionalExplosive>(this.GetPosition(), timeToActivateShell);\n                    break;\n\n                //case MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Time_Bomb:\n                //    Shot<MyTimeBomb>(this.GetPosition(), 3000);\n                //    break;\n\n                case MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Remote_Bomb:\n                    Shot<MyRemoteBomb>(this.GetPosition(), timeToActivateShell);\n                    break;\n\n                case MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Hologram:\n                    Shot<MyHologram>(this.GetPosition(), timeToActivateShell);\n                    break;\n\n                case MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Gravity_Bomb:\n                    Shot<MyGravityBomb>(this.GetPosition(), timeToActivateShell);\n                    break;\n\n                //case MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Remote_Camera:\n                //    Shot<MyRemoteCamera>(this.GetPosition(), timeToActivateShell);\n                //    break;\n\n                case MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_EMP_Bomb:\n                    Shot<MyEMPBomb>(this.GetPosition(), timeToActivateShell);\n                    break;\n            }\n        }\n\n        void Shot<T>(Vector3 position, int? timeToActivateShell = null)\n            where T : class, IUniversalLauncherShell, new()\n        {\n            T shell = MyUniversalLauncherShells.Allocate<T>(m_ownerShip.EntityId.Value.PlayerId);\n            if (shell != null)\n            {\n                shell.TimeToActivate = timeToActivateShell;\n                shell.Start(position, Vector3.Zero, WorldMatrix.Forward, 0, OwnerShip);\n            }\n        }\n\n        #endregion\n\n        private static MyDroneFunction GetFunctionFromInventory(MyInventory inventory)\n        {\n            var inventoryItems = inventory.GetInventoryItems();\n\n            if (inventoryItems.Count > 0)\n            {\n                Debug.Assert(inventoryItems.Count == 1, \"Max capacity of drone inventory is 1.\");\n\n                var inventoryItem = inventoryItems[0];\n\n                return GetFunctionFromInventoryItem(inventoryItem);\n            }\n\n            return MyDroneFunction.None;\n        }\n\n        private static MyDroneFunction GetFunctionFromInventoryItem(MyInventoryItem inventoryItem)\n        {\n            switch (inventoryItem.ObjectBuilderType)\n            {\n                case MyMwcObjectBuilderTypeEnum.SmallShip_Ammo:\n                    Debug.Assert(inventoryItem.ObjectBuilderId != null);\n                    var ammoBuilderType = (MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum)inventoryItem.ObjectBuilderId;\n                    return GetFunctionFromAmmoType(ammoBuilderType);\n\n                case MyMwcObjectBuilderTypeEnum.SmallShip_HackingTool:\n                    return MyDroneFunction.Hacking;\n\n                default:\n                    return MyDroneFunction.None;\n            }\n        }\n\n        private static MyDroneFunction GetFunctionFromAmmoType(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum ammoBuilderType)\n        {\n            switch (ammoBuilderType)\n            {\n                case MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Sphere_Explosive:\n                case MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Directional_Explosive:\n                case MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Flash_Bomb:\n                case MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Gravity_Bomb:\n                case MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Remote_Bomb:\n                case MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Decoy_Flare:\n                case MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_EMP_Bomb:\n                    return MyDroneFunction.Explosive;\n\n                case MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Smoke_Bomb:\n                case MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Hologram:\n                    return MyDroneFunction.NonExplosive;\n\n                default:\n                    return MyDroneFunction.None;\n            }\n        }\n\n        #region IMyUseableEntity\n        public MyUseProperties UseProperties { get; set; }\n\n        public bool CanBeUsed(MySmallShip usedBy)\n        {\n            return usedBy == Leader;\n        }\n\n        public bool CanBeHacked(MySmallShip hackedBy)\n        {\n            return false;\n        }\n\n        public void Use(MySmallShip useBy)\n        {\n            //m_droneObjectBuilder.DroneType\n            // return the drone to inventory\n            bool addedSuccess = useBy.Inventory.AddInventoryItem(MyMwcObjectBuilderTypeEnum.Drone, (int?)m_droneObjectBuilder.DroneType, 1, false) == 0f;\n            if (!addedSuccess)\n            {\n                MyAudio.AddCue2D(MySoundCuesEnum.HudInventoryFullWarning);\n            }\n            else\n            {\n                MyAudio.AddCue2D(MySoundCuesEnum.SfxTakeAllUniversal);\n                MyAudio.AddCue2D(MySoundCuesEnum.HudInventoryTransfer);\n            }\n            this.MarkForClose();\n        }\n\n        public void UseFromHackingTool(MySmallShip useBy, int hackingLevelDifference)\n        {\n        }\n        #endregion\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Ships/MyEnemyTargeting.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Text;\nusing MinerWarsMath;\n\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.AppCode.Game.Decals;\nusing MinerWars.AppCode.Game.Explosions;\nusing MinerWars.AppCode.Game.Gameplay;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.HUD;\nusing MinerWars.AppCode.Game.Inventory;\nusing MinerWars.AppCode.Game.Lights;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.AppCode.Game.Entities.FoundationFactory;\nusing MinerWars.AppCode.Game.Entities.Prefabs;\nusing MinerWars.AppCode.Game.Entities.SubObjects;\nusing MinerWars.AppCode.Game.Entities.Tools;\nusing MinerWars.AppCode.Game.Entities.Weapons;\nusing MinerWars.AppCode.Game.Entities.Weapons.UniversalLauncher;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.Physics;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Missions;\nusing MinerWars.AppCode.Game.Models;\nusing MinerWars.AppCode.Game.Prefabs;\nusing MinerWars.AppCode.Game.Radar;\nusing MinerWars.AppCode.Game.Render.SecondaryCamera;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.AppCode.Game.TransparentGeometry.Particles;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.AppCode.Physics;\nusing MinerWars.CommonLIB.AppCode.Generics;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.CommonLIB.AppCode.Utils;\n\nusing SysUtils.Utils;\nusing MinerWars.AppCode.Game.GUI.Helpers;\nusing MinerWars.AppCode.Game.Entities.Ships.SubObjects;\nusing MinerWars.AppCode.Game.Render;\nusing MinerWars.AppCode.Game.Entities.Weapons.Ammo;\nusing MinerWars.AppCode.Game.Entities.CargoBox;\n\nnamespace MinerWars.AppCode.Game.Entities\n{\n    static class MyEnemyTargeting\n    {\n        private const int ACTUALIZE_TIME = 1000;                        // in ms\n        private const float ACTUALIZE_ORIENTATION = 0.5f;               // in cos angle\n        private const float ACTUALIZE_DISTANCE_SQUARED = 10000f;        // in meters\n\n        private static MyEntity m_owner;\n        private static List<MyEntity> m_targets;\n        private static int m_currentIndex;\n\n        private static int m_lastTimeTargeting;\n        private static Matrix m_lastOwnerWorldMatrix;\n\n        private static int m_lastActualizeTime = 0;\n        private static MyEntity m_currentTarget;\n        public static MyEntity CurrentTarget\n        {\n            get { return m_currentTarget; }\n        }\n\n        static MyEnemyTargeting()\n        {\n            m_targets = new List<MyEntity>();\n            MyScriptWrapper.EntityClose += new MyScriptWrapper.EntityHandler(MyScriptWrapper_EntityClose);\n        }\n\n        static void MyScriptWrapper_EntityClose(MyEntity entity)\n        {\n            if (entity == CurrentTarget)\n            {\n                /*\n                if (MyHud.GetHudEnemiesOnScreen().Contains(entity))\n                    MyHud.GetHudEnemiesOnScreen().Remove(entity);\n                SwitchNextTarget(true);\n                 */\n\n                m_currentTarget = null; //will invoke next target selection in update\n            }\n\n            System.Diagnostics.Debug.Assert(entity != CurrentTarget);\n        }\n\n        public static void SwitchOwner(MyEntity owner)\n        {\n            m_owner = owner;\n            m_lastTimeTargeting = 0;\n            m_currentIndex = 0;\n        }\n\n        public static MyEntity SwitchNextTarget(bool forward)\n        {\n            MyEntity newTarget = null;\n            m_targets.Clear();\n            m_targets.AddRange(MyHud.GetHudEnemiesOnScreen());\n\n            bool needActualizeIndex = NeedActualizeIndex();            \n\n            int targetsLeft = m_targets.Count;\n            while (targetsLeft > 0)\n            {\n                if (needActualizeIndex)\n                {\n                    m_currentIndex = 0;\n                    m_lastOwnerWorldMatrix = m_owner.WorldMatrix;\n                    needActualizeIndex = false;\n                }\n                else\n                {\n                    m_currentIndex += forward ? 1 : -1;\n                }\n\n                if (m_currentIndex >= m_targets.Count)\n                {\n                    m_currentIndex = 0;\n                }\n                if (m_currentIndex < 0)\n                {\n                    m_currentIndex = m_targets.Count - 1;\n                }\n                if (CanSee(m_owner, m_targets[m_currentIndex]) == null)\n                {\n                    newTarget = m_targets[m_currentIndex];\n                    break;\n                }\n                targetsLeft--;                \n            }\n            m_lastTimeTargeting = MyMinerGame.TotalTimeInMilliseconds;\n\n            if (m_owner is MySmallShip)\n            {\n                (m_owner as MySmallShip).TargetEntity = newTarget;\n            }\n\n            m_currentTarget = newTarget;\n            return m_currentTarget;\n        }\n\n        private static bool NeedActualizeIndex()\n        {\n            int timeDiff = MyMinerGame.TotalTimeInMilliseconds - m_lastTimeTargeting;\n            float cosAngle = Vector3.Dot(m_owner.WorldMatrix.Forward, m_lastOwnerWorldMatrix.Forward);\n            float distance = Vector3.DistanceSquared(m_owner.WorldMatrix.Translation, m_lastOwnerWorldMatrix.Translation);\n            return timeDiff > ACTUALIZE_TIME || cosAngle < ACTUALIZE_ORIENTATION || distance > ACTUALIZE_DISTANCE_SQUARED;\n        }\n\n        /// <summary>\n        /// Chceck if ship can see target\n        /// </summary>\n        /// <param name=\"position\">Target position</param>\n        /// <param name=\"target\">Target entity.</param>\n        /// <returns>True, if bot can see position.</returns>\n        public static MyEntity CanSee(MyEntity source, MyEntity target)\n        {\n            return CanSee(source, target.GetPosition(), target);\n        }\n\n        /// <summary>\n        /// Chceck if ship can see target\n        /// </summary>\n        /// <param name=\"position\">Target position</param>\n        /// <param name=\"target\">Target entity.</param>\n        /// <returns>True, if bot can see position.</returns>\n        public static MyEntity CanSee(MyEntity source, Vector3 position, MyEntity ignoreEntity)\n        {\n            MyIntersectionResultLineTriangleEx? result = null;\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MySmallShip CanSee\");\n            //There is 100 multiplier because Epsilon can get lost during transformation inside GetAllIntersectionWithLine\n            //and normalization assert then appears\n            if ((source.GetPosition() - position).Length() > MyMwcMathConstants.EPSILON * 100.0f)\n            {\n                var line = new MyLine(source.GetPosition(), position, true);\n                result = MyEntities.GetIntersectionWithLine(ref line, source, ignoreEntity, ignoreChilds: true);\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            return result.HasValue ? result.Value.Entity : null;\n        }\n\n\n        public static void Update()\n        {\n            if ((MyMinerGame.TotalTimeInMilliseconds - m_lastActualizeTime) > ACTUALIZE_TIME)\n            {\n                m_lastActualizeTime = MyMinerGame.TotalTimeInMilliseconds;\n\n                if (MyHud.GetHudEnemiesOnScreen().Count > 0 && CurrentTarget == null)\n                {\n                    SwitchNextTarget(true);\n                    return;\n                }\n\n                if (CurrentTarget != null && !MyHud.GetHudEnemiesOnScreen().Contains(CurrentTarget))\n                {\n                    SwitchNextTarget(true);\n                    return;\n                }\n\n                MySmallShip smallShipTarget = CurrentTarget as MySmallShip;\n                if (smallShipTarget != null)\n                {\n                    if (smallShipTarget.IsEngineTurnedOff())\n                    {\n                        SwitchNextTarget(true);\n                        return;\n                    }\n                }\n            }\n        }\n\n        public static void Unload()\n        {\n            m_currentTarget = null;\n            m_targets.Clear();\n            m_owner = null;\n        }\n    }\n}\n\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Ships/MyLargeShip.cs",
    "content": "﻿//  How to find correct positions for lights or lams on mother ships or similar large and static objects?\n//  You can't get those coords from 3dsmax because there is still a chance that coords that 3dsmax tells\n//  you will be different than what you import (internal 3dsmax transformations...), and also model can\n//  be rescaled and re-centered so that will definitely destroy your hand grabbed coords.\n//  Instead go with camera at place where you wanna place light/lamp, press F12 for debug screen, get your\n//  current camera position, subtract object's center out of it and you have relative coordinates.\n/*\nnamespace MinerWars.AppCode.Game.Entities\n{\n    using System;\n    using System.Collections.Generic;\n    using System.Text;\n    using App;\n    using CommonLIB.AppCode.ObjectBuilders.Object3D;\n    using Lights;\n    using MinerWarsMath;\n    using Models;\n    using PhysicsManager.Physics;\n    using TransparentGeometry;\n    using Physics;\n    using SysUtils.Utils;\n    using Utils;\n    using MinerWars.CommonLIB.AppCode.Utils;\n    \n    using MinerWars.AppCode.Game.HUD;\n\n    /// <summary>\n    /// Large ship.\n    /// </summary>\n    class MyLargeShip : MyShip\n    {\n        class MyLargeShipLamp\n        {\n            public readonly Vector3 Position;\n            public readonly float RadiusMin;\n            public readonly float RadiusMax;\n            public readonly int TimerForBlic;\n            public readonly MyLight Light;\n\n            public MyLargeShipLamp(Vector3 position, float radiusMin, float radiusMax, int timerForBlic)\n            {\n                Position = position;\n                RadiusMin = radiusMin;\n                RadiusMax = radiusMax;\n                TimerForBlic = timerForBlic;\n                Light = MyLights.AddLight();\n                Light.Start(MyLight.LightTypeEnum.PointLight, position, Vector4.One, 1, radiusMin);\n                Light.Intensity = 1;\n                Light.LightOn = true;\n            }\n        }\n\n        private List<MyLargeShipLamp> m_lamps;\n        const float BLIC_DURATON_IN_MILISECONDS = 30.0f;\n        bool m_debugIndicateShip = false;\n\n        public virtual void Init(string hudLabelText, MyMwcObjectBuilder_LargeShip objectBuilder)\n        {\n            base.Init(hudLabelText, objectBuilder);\n            switch (objectBuilder.ShipType)\n            {\n                case MyMwcObjectBuilder_LargeShip_TypesEnum.KAI:\n                    {\n                        List<MyLargeShipLamp> localLamps = new List<MyLargeShipLamp>();\n\n                        MyLight hangarLight = null;\n                        \n                        //TODO: temporary, we need to set this from editor\n                        Name = \"KAI Mothership\";\n\n                        Dictionary<string, MyModelDummy> dummies = MyModels.GetModelOnlyData(MyModelsEnum.Kai_LOD0).Dummies;\n                        foreach (KeyValuePair<string, MyModelDummy> dummy in dummies)\n                        {\n                            float scale = 4 * dummy.Value.Matrix.Left.Length();\n                            if (dummy.Key.StartsWith(\"LAMP\"))\n                                localLamps.Add(new MyLargeShipLamp(dummy.Value.Matrix.Translation, 5 * scale, 20 * scale, 980));\n                            if (dummy.Key.StartsWith(\"HANGAR_LIGHT\"))\n                            {\n                                hangarLight = MyLights.AddLight();\n                                hangarLight.Start(MyLight.LightTypeEnum.PointLight, WorldMatrix.Translation + dummy.Value.Matrix.Translation, new Vector4(0, 1, 0, 1), 2f, 25 * scale);\n                            }\n                        }\n\n                        InitShip(Name, MyModelsEnum.Kai_LOD0, MyModelsEnum.Kai_LOD1, MyMaterialType.SHIP, objectBuilder,\n                                 hangarLight, localLamps);\n\n                        MyHud.ChangeText(this, new StringBuilder(Name), null, 0, MyHudIndicatorFlagsEnum.SHOW_ALL);\n\n                    }\n                    break;\n                case MyMwcObjectBuilder_LargeShip_TypesEnum.MOTHERSHIP_SAYA:\n                    InitShip(hudLabelText, MyModelsEnum.MotherShipSaya, MyModelsEnum.MotherShipSaya_LOD1, MyMaterialType.SHIP, objectBuilder, null, null);\n                    break;\n                //temporary for testing - 0000177: Red large ship\n                case MyMwcObjectBuilder_LargeShip_TypesEnum.CRUISER_SHIP:\n                    InitShip(hudLabelText, MyModelsEnum.CruiserShip, null, MyMaterialType.SHIP, objectBuilder, null, null);\n                    break;\n                case MyMwcObjectBuilder_LargeShip_TypesEnum.ARDANT:\n                    InitShip(hudLabelText, MyModelsEnum.Ardant, MyModelsEnum.Ardant_LOD1, MyMaterialType.SHIP, objectBuilder, null, null);\n                    break;\n                default:\n                    throw new MyMwcExceptionApplicationShouldNotGetHere();\n            }\n        }\n\n        //  Position - in world space\n        //  HangarLight - position in world space\n        //  LocalLamps - position in world space\n        void InitShip(string hudLabelText, MyModelsEnum modelLod0Enum, MyModelsEnum? modelLod1Enum, MyMaterialType materialType, MyMwcObjectBuilder_LargeShip objectBuilder, MyLight hangarLight,\n            List<MyLargeShipLamp> localLamps)\n        {\n            StringBuilder hudLabelTextSb = (hudLabelText == null) ? null : new StringBuilder(hudLabelText);\n            MyModel model = MyModels.GetModelOnlyData(modelLod0Enum);\n\n            base.Init(hudLabelTextSb, modelLod0Enum, modelLod1Enum, null, null, objectBuilder);\n\n            MyPhysicsObjects physobj = MyPhysics.physicsSystem.GetPhysicsObjects();\n            MyRBTriangleMeshElementDesc trianglemeshDesc = physobj.GetRBTriangleMeshElementDesc();\n\n            trianglemeshDesc.SetToDefault();\n            trianglemeshDesc.m_Model = model;\n            trianglemeshDesc.m_RBMaterial = MyMaterialsConstants.GetMaterialProperties(materialType).PhysicsMaterial; \n\n            MyRBTriangleMeshElement trEl = (MyRBTriangleMeshElement)physobj.CreateRBElement(trianglemeshDesc);\n\n            Matrix matrix = objectBuilder.PositionAndOrientation.GetMatrix();\n            SetWorldMatrix(matrix);\n\n            this.Physics = new MyGameRigidBody(this, 100.0f, RigidBodyFlag.RBF_RBO_STATIC) { MaterialType = materialType };\n            //this.Physics.Enabled = true;\n            this.Physics.AddElement(trEl, true);\n                       \n            if (localLamps != null)\n            {\n                m_lamps = new List<MyLargeShipLamp>();\n                for (int i = 0; i < localLamps.Count; i++)\n                {\n                    m_lamps.Add(new MyLargeShipLamp(matrix.Translation + localLamps[i].Position, localLamps[i].RadiusMin,\n                        localLamps[i].RadiusMax, localLamps[i].TimerForBlic));\n                }\n            }\n        }\n\n        public override bool Draw()\n        {\n            bool retVal = base.Draw();\n            if (retVal)\n            {\n                if (m_lamps != null)\n                {\n                    for (int i = 0; i < m_lamps.Count; i++)\n                    {\n                        MyLargeShipLamp lamp = m_lamps[i];\n                        DrawGlare(lamp);\n                    }\n                }\n            }\n\n            return retVal;\n        }\n\n        public override bool DebugDraw()\n        {\n            if (!base.DebugDraw())\n                return false;\n\n            if (m_debugIndicateShip)\n            {\n                MyDebugDraw.DrawSphereWireframe(WorldMatrix.Translation, 20, Vector3.One, 1);\n            }  \n\n\n\n            return true;\n        }\n\n\n        static void DrawGlare(MyLargeShipLamp lamp)\n        {\n            Vector3 dir = MyMwcUtils.Normalize(MyCamera.Position - lamp.Position);\n\n            float timeBlic = MyMinerGame.TotalGamePlayTimeInMilliseconds % lamp.TimerForBlic;\n            if (timeBlic > BLIC_DURATON_IN_MILISECONDS) timeBlic = lamp.TimerForBlic - timeBlic;\n            timeBlic = MathHelper.Clamp(1 - timeBlic / BLIC_DURATON_IN_MILISECONDS, 0, 1);\n\n            float radius = MathHelper.Lerp(lamp.RadiusMin, lamp.RadiusMax, timeBlic);\n\n            MyTransparentGeometry.AddPointBillboard(MyTransparentMaterialEnum.ReflectorGlareAlphaBlended, Vector4.One,\n                lamp.Position + dir * 5, radius, 0);\n\n            lamp.Light.Range = radius * 4;\n        }\n\n        public override void Close()\n        {\n            base.Close();\n        }\n\n        //  Calculate thrusts strength, etc\n        public override bool UpdateAfterIntegration()\n        {\n            if (base.UpdateAfterIntegration() == false) return false;\n\n            return true;\n        }\n    }\n}\n*/"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Ships/MyShip.cs",
    "content": "﻿using System.Diagnostics;\nusing MinerWars.AppCode.Game.Utils;\n\nnamespace MinerWars.AppCode.Game.Entities\n{\n    using System.Text;\n    using CommonLIB.AppCode.ObjectBuilders;\n    using MinerWarsMath;\n    using Models;\n    using MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\n    using Inventory;\n    using World.Global;\n    using System.Reflection;\n    using KeenSoftwareHouse.Library.Extensions;\n    using MinerWars.AppCode.Game.Missions;\nusing System;\n\n    /// <summary>\n    /// Represent base class for all ships.\n    /// </summary>\n    internal abstract class MyShip: MyEntity, IMyInventory\n    {\n        private MyInventory m_inventory;\n\n        /// <summary>\n        /// Gets the inventory.\n        /// </summary>\n        public MyInventory Inventory \n        {\n            get \n            {\n                return m_inventory;\n            }\n            private set \n            {\n                m_inventory = value;\n            }\n        }\n\n        public event Action<MyShip> InventoryChanged;\n\n        /// <summary>\n        /// Initializes a new instance of the <see cref=\"MyEntity\"/> class.\n        /// </summary>\n        protected MyShip()\n        {\n            this.Faction = MyMwcObjectBuilder_FactionEnum.Euroamerican;\n            Inventory = new MyInventory();\n            Inventory.OnInventoryContentChange += OnInventoryContentChange;\n            Inventory.OnInventoryItemAmountChange += OnInventoryItemAmountChange;\n            Inventory.OnInventoryContentChange += new AppCode.Game.Inventory.OnInventoryContentChange(Inventory_OnInventoryContentChange);\n        }\n\n        void Inventory_OnInventoryContentChange(MyInventory sender)\n        {\n            RaiseInventoryChanged();\n        }\n\n        void RaiseInventoryChanged()\n        {\n            var handler = InventoryChanged;\n            if (handler != null)\n            {\n                handler(this);\n            }\n        }\n\n        /// <summary>\n        /// Inits the specified hud label text.\n        /// </summary>\n        /// <param name=\"hudLabelText\">The hud label text.</param>\n        /// <param name=\"modelLod0Enum\">The model lod0 enum.</param>\n        /// <param name=\"modelLod1Enum\">The model lod1 enum.</param>\n        /// <param name=\"parentObject\">The parent object.</param>\n        /// <param name=\"scale\">The scale.</param>\n        /// <param name=\"objectBuilder\">The object builder.</param>\n        public override void Init(StringBuilder hudLabelText, MyModelsEnum? modelLod0Enum, MyModelsEnum? modelLod1Enum, MyEntity parentObject, float? scale, MyMwcObjectBuilder_Base objectBuilder, MyModelsEnum? modelCollision = null, Models.MyModelsEnum? modelLod2 = null)\n        {\n            Flags |= EntityFlags.EditableInEditor;\n            NeedsUpdate = true;\n\n            base.Init(hudLabelText, modelLod0Enum, modelLod1Enum, null, scale, objectBuilder, modelCollision, modelLod2);\n        }\n\n        public virtual void Init(string hudLabelText, MyMwcObjectBuilder_Ship shipObjectBuilder)\n        {\n            Debug.Assert(shipObjectBuilder != null);\n\n            this.Faction = shipObjectBuilder.Faction;\n\n            if (shipObjectBuilder.Inventory != null)\n            {\n                Inventory.Init(shipObjectBuilder.Inventory);\n            }\n            else \n            {\n                OnInventoryContentChange(Inventory);\n            }\n        }\n\n        protected override MyMwcObjectBuilder_Base GetObjectBuilderInternal(bool getExactCopy)\n        {\n            MyMwcObjectBuilder_Base baseBuilder = base.GetObjectBuilderInternal(getExactCopy);\n            var builder = baseBuilder as MyMwcObjectBuilder_Ship;\n            if(builder != null)\n            {                \n                builder.Inventory = Inventory.GetObjectBuilder(getExactCopy);\n                builder.Faction = Faction;\n                return builder;\n            }\n            return baseBuilder;\n        }\n\n        protected virtual void OnInventoryContentChange(MyInventory sender)\n        {\n            MyScriptWrapper.OnEntityInventoryContentChange(this, sender);\n        }\n\n        protected virtual void OnInventoryItemAmountChange(MyInventory sender, MyInventoryItem inventoryItem, float amountChanged)\n        {\n            MyScriptWrapper.OnEntityInventoryAmountChange(this, sender, inventoryItem, amountChanged);\n        }\n\n        /// <summary>\n        /// Every object must have this method, but not every phys object must necessarily have something to cleanup\n        /// </summary>\n        public override void Close()\n        {\n            Inventory.OnInventoryContentChange -= OnInventoryContentChange;\n            Inventory.OnInventoryItemAmountChange -= OnInventoryItemAmountChange;\n            Inventory.Close();            \n\n            base.Close();\n\n            //TODO this is now causing crash when destroying bot, will solve later\n            //if (this.Physics != null)\n            //    this.Physics.RemoveAllElements();\n        }        \n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Ships/MySmallShip.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Text;\nusing KeenSoftwareHouse.Library.Extensions;\nusing MinerWarsMath;\n\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.AppCode.Game.Decals;\nusing MinerWars.AppCode.Game.Explosions;\nusing MinerWars.AppCode.Game.Gameplay;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.HUD;\nusing MinerWars.AppCode.Game.Inventory;\nusing MinerWars.AppCode.Game.Lights;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.AppCode.Game.Entities.FoundationFactory;\nusing MinerWars.AppCode.Game.Entities.Prefabs;\nusing MinerWars.AppCode.Game.Entities.SubObjects;\nusing MinerWars.AppCode.Game.Entities.Tools;\nusing MinerWars.AppCode.Game.Entities.Weapons;\nusing MinerWars.AppCode.Game.Entities.Weapons.UniversalLauncher;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.Physics;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Missions;\nusing MinerWars.AppCode.Game.Models;\nusing MinerWars.AppCode.Game.Prefabs;\nusing MinerWars.AppCode.Game.Radar;\nusing MinerWars.AppCode.Game.Render.SecondaryCamera;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.AppCode.Game.TransparentGeometry.Particles;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.AppCode.Physics;\nusing MinerWars.AppCode.Physics.Collisions;\nusing MinerWars.CommonLIB.AppCode.Generics;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.CommonLIB.AppCode.Utils;\n\nusing SysUtils.Utils;\nusing MinerWars.AppCode.Game.GUI.Helpers;\nusing MinerWars.AppCode.Game.Entities.Ships.SubObjects;\nusing MinerWars.AppCode.Game.Render;\nusing MinerWars.AppCode.Game.Entities.Weapons.Ammo;\nusing MinerWars.AppCode.Game.Entities.CargoBox;\nusing MinerWars.AppCode.Game.Entities.Tools.ToolKits;\nusing MinerWars.AppCode.Game.World;\nusing MinerWars.AppCode.Game.Audio.Dialogues;\nusing MinerWars.AppCode.Game.Sessions;\nusing MinerWars.AppCode.Game.Entities.Ships.AI;\nusing MinerWars.CommonLIB.AppCode.Networking.Multiplayer;\nusing MinerWars.AppCode.Game.Renders;\nusing MinerWars.AppCode.Game.Sessions.Multiplayer;\nusing KeenSoftwareHouse.Library.Parallelization.Threading;\nusing MinerWars.AppCode.Game.Managers;\nusing MinerWars.CommonLIB.AppCode.Import;\n\nnamespace MinerWars.AppCode.Game.Entities\n{\n    /// <summary>\n    /// Small ship controlled by player.\n    /// </summary>\n    class MySmallShip : MyShip\n    {\n        #region Structs\n        private class MyModelShipSubOject\n        {\n            public MyModelSubObject ModelSubObject;\n            public MyLight Light;\n        }\n\n        private class MyDamageOverTimeItem\n        {\n            public float IntervalDamage { get; set; }\n            public float Damage { get; set; }\n        }\n        #endregion\n\n        #region Constants\n\n        public static float SENSITIVITY_MODIFIER_FOR_MAX_ZOOM = 0.2f;\n\n        public static bool PlayerSimulation = true;\n\n        private const float MIN_GLASS_DIRT_LEVEL = 0.3f;\n        private const float MAX_GLASS_DIRT_LEVEL = 1f;\n\n        private const float SOUND_VARIABLE_SHIP_A_SPEED_MAX_VALUE = 250;\n        private const float SOUND_VARIABLE_SHIP_IDLE_SPEED_MAX_VALUE = 250;\n\n        private const int MAX_AVAILABLE_SLOTS = 32;\n        private const int MAX_AVAILABLE_DEVICES = 32;\n        private const int MAX_SHIP_SUBOBJECTS = 128;\n        private const int MAX_SAME_SUBOBJECTS = 8;\n        private const float ROLL_BALANCING_FACTOR = 0.02f;//step angle in wich we approach the upper vector in strafe-roll movement .. 0 means no roll during strafing at all (up-vector stays unchanged)\n        private const float UPVECTOR_UPDATE_MULTIPLICATOR = 0.99f;//constant by wich we multiply upvector (for strafing allign) every update to reduce its influence \n        private const float MAX_SHIP_WEIGHT = 1000000.0f;\n\n        // empirically calculated value for conversion of max speed into deceleration multiplier\n        public const int MAGIC_CONSTANT_FOR_MAX_SPEED = 503;\n        public static float SHIP_ROTATION_SENSITIVITY_MODIFIER = 1.075f;\n\n        #endregion\n\n        public enum ReflectorTypeEnum\n        {\n            Single,\n            Dual,\n        }\n\n        #region Fields\n\n        public float PilotHealth = PilotMaxHealth;\n        public const float PilotMaxHealth = 100f;\n\n        public Matrix PlayerHeadForCockpitInteriorWorldMatrix = Matrix.Identity;\n        public Matrix PlayerHeadForGunsWorldMatrix = Matrix.Identity;\n        public static bool DebugDrawEngineThrusts = false;\n        public static bool DebugDrawEngineWeapons = false;\n        public bool DebugDrawSecondaryCameraBoundingFrustum = false;\n        //public bool IsDummy;\n\n        private bool m_engineAfterburnerOn;\n        private bool m_engineAfterburnerCanRefill;\n        public bool AfterburnerEnabled { get; set; }\n        private int m_engineIdleCueDelayMillis;\n        MySoundCue? m_engineIdleCue;\n        MySoundCue? m_engineOnOffSound;\n        MySoundCue? m_engineMovingCue;\n        MySoundCue? m_engineAfterburnerCue;\n        float m_engineVolume;\n        private MyLight m_light;                 //  Dynamic light used for reflector or muzzle flash\n        public MyEntity OwnerEntity;\n        public uint? OwnerId;\n\n        private float m_reflectorShadowDistance = MyLightsConstants.MAX_SPOTLIGHT_SHADOW_RANGE;\n        public float ReflectorShadowDistance\n        {\n            get\n            {\n                return m_reflectorShadowDistance;\n            }\n            set\n            {\n                m_reflectorShadowDistance = value;\n                if (m_light != null)\n                {\n                    m_light.ShadowDistanceSquared = m_reflectorShadowDistance * m_reflectorShadowDistance;\n                }\n            }\n        }\n\n        //For tweaking light\n        public static float LightRangeMultiplier = 1.0f;\n        public static float LightIntensityMultiplier = 1.0f;\n        public static float ReflectorIntensityMultiplier = 2.0f;\n\n        public static float LightOffsetX = 0;\n        public static float LightOffsetY = 0;\n        public static float LightOffsetZ = 0;\n\n        private ReflectorTypeEnum m_reflectorType = ReflectorTypeEnum.Dual;\n        private MyGroupMask m_groupMask; // This is only mask allocated to entity, not all masks\n        MySoundCue? m_playerBreathing;\n        protected Matrix m_levelingMatrix;\n        bool m_hasCollided = false;\n        float m_collisionFriction = 0.0f;\n\n        protected bool m_includeCargoWeight = false;\n        //Matrix m_zedAxisRotationState = 0.0f;// rotation about Z axis of ship... to evoke roll status// will be later upgraded to statematrix\n\n        // group mask for collision blocker\n\n        //  Weapons sounds are unified per miner ship (two or more weapons of same type and shooting simultanously will produce only one sound)\n        MySoundCue?[] m_unifiedWeaponCues;\n\n        MyCockpit m_cockpit;\n        MyCockpitGlassEntity m_glassIdealPhysObject;\n\n        //  m_initialSunWindPosition of player head inside the cockpit moved in response to acceleration and deceleration.\n        //  This coordinates are local, therefor in this object space\n        Vector3 m_playerHeadLocal;\n        Vector3 m_playerHeadExtraShake;\n        Vector3 m_playerViewAngleLocal;\n        Vector3 m_playerViewAngleExtraShake;\n\n        MyCameraHeadShake m_shaker;\n        MyCameraSpring m_cameraSpring;\n\n        public MyCameraHeadShake GetShake() { return m_shaker; }\n        public MyCameraSpring GetCameraSpring() { return m_cameraSpring; }\n        public Vector3 GetHeadPosition() { return m_playerHeadLocal; }\n        public Vector3 GetHeadDirection() { return m_playerViewAngleLocal; }\n        public float GetFuelPercentage() { return Fuel / MaxFuel; }\n\n        private MyMissile m_lastMissileFired;\n\n        public MyMissile LastMissileFired\n        {\n            get { return m_lastMissileFired; }\n            set\n            {\n                if (m_lastMissileFired != null)\n                {\n                    m_lastMissileFired.OnClose -= LastMissileFiredOnClose;\n                }\n\n                value.OnClose += LastMissileFiredOnClose;\n\n                m_lastMissileFired = value;\n\n                if (this == MyGuiScreenGamePlay.Static.ControlledEntity)\n                {\n                    MySecondaryCamera.Instance.SetEntityCamera(LastMissileFired);\n                    MySecondaryCamera.Instance.SecondaryCameraAttachedTo = MySecondaryCameraAttachedTo.Missile;\n                }\n            }\n        }\n\n        void LastMissileFiredOnClose(MyEntity missile)\n        {\n            m_lastMissileFired.OnClose -= LastMissileFiredOnClose;\n            m_lastMissileFired = null;\n        }\n\n        bool m_engineSoundOn;\n        MyPrefabHangar m_nearMotherShipContainer;\n\n        /// <summary>\n        /// Time in seconds to PumpFuel()\n        /// </summary>\n        float m_timeToPumpFuel;\n\n        //  Parameters for controling the ship\n\n        MyObjectsPool<MyModelShipSubOject> m_modelSubObjectsPool = new MyObjectsPool<MyModelShipSubOject>(MAX_SHIP_SUBOBJECTS);\n        List<MyModelShipSubOject> m_subObjectEngineThrustBackwardSmallLeftside = new List<MyModelShipSubOject>();\n        List<MyModelShipSubOject> m_subObjectEngineThrustBackwardSmallRightside = new List<MyModelShipSubOject>();\n        List<MyModelShipSubOject> m_subObjectEngineThrustBackwardLeftside = new List<MyModelShipSubOject>();\n        List<MyModelShipSubOject> m_subObjectEngineThrustBackwardRightside = new List<MyModelShipSubOject>();\n        List<MyModelShipSubOject> m_subObjectEngineThrustBackward2Leftside = new List<MyModelShipSubOject>();\n        List<MyModelShipSubOject> m_subObjectEngineThrustBackward2Rightside = new List<MyModelShipSubOject>();\n        List<MyModelShipSubOject> m_subObjectEngineThrustBackward2Middle = new List<MyModelShipSubOject>();\n        List<MyModelShipSubOject> m_subObjectEngineThrustForwardLeftside = new List<MyModelShipSubOject>();\n        List<MyModelShipSubOject> m_subObjectEngineThrustForwardRightside = new List<MyModelShipSubOject>();\n        List<MyModelShipSubOject> m_subObjectEngineThrustStrafeLeft = new List<MyModelShipSubOject>();\n        List<MyModelShipSubOject> m_subObjectEngineThrustStrafeRight = new List<MyModelShipSubOject>();\n        List<MyModelShipSubOject> m_subObjectEngineThrustUpLeftside = new List<MyModelShipSubOject>();\n        List<MyModelShipSubOject> m_subObjectEngineThrustUpRightside = new List<MyModelShipSubOject>();\n        List<MyModelShipSubOject> m_subObjectEngineThrustDownLeftside = new List<MyModelShipSubOject>();\n        List<MyModelShipSubOject> m_subObjectEngineThrustDownRightside = new List<MyModelShipSubOject>();\n        List<MyModelShipSubOject> m_subObjectReflectorLeft = new List<MyModelShipSubOject>();\n        List<MyModelShipSubOject> m_subObjectReflectorRight = new List<MyModelShipSubOject>();\n        MyModelShipSubOject m_subObjectLight;\n        MyModelShipSubOject m_subObjectPlayerHeadForCockpitInteriorTranslation;\n\n        // engine thrust particle effects\n        private MyParticleEffect m_damageEffect;\n        private Matrix? m_damageEffectLocalMatrix;\n\n        List<MyModelShipSubOject> m_subObjects = new List<MyModelShipSubOject>();\n\n        float m_lockTargetCheckTime;\n        protected MyReflectorConfig m_reflectorProperies;\n\n        protected Vector3 m_engineForce = Vector3.Zero;\n        protected Vector3 m_engineTorque = Vector3.Zero;\n\n        protected MyShipTypeProperties m_shipTypeProperties;\n        protected MySmallShipEngineTypeProperties m_engineTypeProperties;\n        protected MySmallShipArmorTypeProperties? m_armorProperties;\n\n        private int m_waypointTicks;\n\n        private bool m_hasRadarJammer = false;\n        private MyNanoRepairToolEntity m_nanoRepairTool;\n\n        // Gameplay fields\n        public float Weight { get; set; }\n        public float MaxFuel { get; set; }\n        public float MaxOxygen { get; set; }\n\n        public float MaxArmorHealth { get; set; }\n\n        // time from last detecting another ship to trade\n        private float m_lastShipDetecting = 0;\n        private MyHudNotification.MyNotification m_tradeNotification = null;\n        private MyHudNotification.MyNotification m_buildNotification = null;\n        private MyHudNotification.MyNotification m_travelNotification = null;\n        private MyHudNotification.MyNotification m_securityControlHUBNotification = null;\n\n        // time from last checking for mission proximity\n        private float m_lastMissionProximityCheck = 0.1f * MySmallShipConstants.DETECT_INTERVAL;\n\n        /// <summary>\n        /// Active radar devices\n        /// </summary>\n        private List<MyMwcObjectBuilder_SmallShip_Radar_TypesEnum> RadarCapabilities;\n\n        private int m_enemiesCountDetectedLastUpdate = 0;\n\n        private List<MyInventoryItem> m_helperInventoryItems = new List<MyInventoryItem>();\n\n        private int m_lastAfterburnerFilling;\n        private int m_lastAfterburnerEmptying;\n        public float AfterburnerStatus = 0.0f;\n\n\n        private float m_lastEnemyDetection = -60000;\n\n        private float m_angularDampingDefault = 0.0f;\n        private float m_angularDampingSlowdown = 0.8f;\n\n        /// <summary>\n        /// In milliseconds.\n        /// </summary>\n        float m_disabledByEMPDuration;\n\n        private Dictionary<uint, MyDamageOverTimeItem> m_damageOverTimeList = new Dictionary<uint, MyDamageOverTimeItem>();\n        private static List<uint> m_damageOverTimeRemoveBuffer = new List<uint>(5);\n        private float m_friendlyFireDamageTimer;\n\n        //MWBuilder fields\n        int m_stepStartMS;\n        int m_stepDurationMS = 1000;\n\n\n        #endregion\n\n        #region Remoting Properties\n        /// <summary>\n        /// Dirt level of cockpit glass, in interval 0..1\n        /// </summary>\n        public float GlassDirtLevel { get; private set; }\n\n        /// <summary>\n        /// Mounted Engine\n        /// </summary>\n        MyMwcObjectBuilder_SmallShip_Engine m_engine;\n\n        public MyCubeBuilder CubeBuilder { get; private set; }\n\n        /// <summary>\n        /// Mounted Engine\n        /// </summary>\n        public MyMwcObjectBuilder_SmallShip_Engine Engine\n        {\n            get\n            {\n                return m_engine;\n            }\n            set\n            {\n                if (m_engine != value)\n                {\n                    m_engineChanged = true;\n                }\n                m_engine = value;\n                m_engineTypeProperties = value != null ? MySmallShipEngineTypeConstants.GetProperties(value.EngineType) : MySmallShipEngineTypeConstants.ShipWithoutEngineProperties;\n            }\n        }\n\n        private bool m_engineChanged = false;\n\n        /// <summary>\n        /// Mounted Armor\n        /// </summary>\n        MyMwcObjectBuilder_SmallShip_Armor m_armor;\n\n        /// <summary>\n        /// Mounted Armor\n        /// </summary>\n        public MyMwcObjectBuilder_SmallShip_Armor Armor\n        {\n            get\n            {\n                return m_armor;\n            }\n            set\n            {\n                m_armor = value;\n                OnArmorChanged();\n            }\n        }\n\n        public bool HasSunWindArmor\n        {\n            get\n            {\n                return Armor != null && Armor.ArmorType == MyMwcObjectBuilder_SmallShip_Armor_TypesEnum.Solar_Wind;\n            }\n        }\n\n        float m_armorHealth;\n        public float ArmorHealth\n        {\n            get\n            {\n                return m_armorHealth;\n            }\n            set\n            {\n                m_armorHealth = value;\n            }\n        }\n\n        float m_oxygen;\n\n        public float Oxygen\n        {\n            get\n            {\n                return m_oxygen;\n            }\n            set\n            {\n                m_oxygen = value;\n            }\n        }\n\n        public float PlayerBloodTextureOpacity\n        {\n            get\n            {\n                if (MySession.Static != null && MySession.Static.Player != null)\n                {\n                    float playerHealth = MathHelper.Clamp(MySession.Static.Player.Health / MySession.Static.Player.MaxHealth * 100, 0, 100);\n                    if (playerHealth > 40)\n                    {\n                        return 0;\n                    }\n                    else if (playerHealth > 0)\n                    {\n                        return (40f - playerHealth) / 40f;\n                    }\n                    else\n                    {\n                        return 1;\n                    }\n                }\n                else\n                {\n                    return 0;\n                }\n            }\n        }\n\n        public float NoOxygenTextureOpacity\n        {\n            get\n            {\n                return MathHelper.Clamp(MySession.Static.Player.TimeWithoutOxygen / 30f, 0f, 1f);\n            }\n        }\n\n        public float Fuel { get; set; }\n\n\n        MyMwcObjectBuilder_SmallShip_TypesEnum m_shipType;\n\n        public MyMwcObjectBuilder_SmallShip_TypesEnum ShipType\n        {\n            get\n            {\n                return m_shipType;\n            }\n            set\n            {\n                m_shipType = value;\n                m_shipTypeProperties = MyShipTypeConstants.GetShipTypeProperties(value);\n            }\n        }\n\n        private MySmallShipWeapons m_smallShipWeapons;\n\n        /// <summary>\n        /// Gets the weapons.\n        /// </summary>\n        /// TODO: This also should be entity.        \n        public MySmallShipWeapons Weapons\n        {\n            get\n            {\n                return m_smallShipWeapons;\n            }\n            protected set\n            {\n                m_smallShipWeapons = value;\n            }\n        }\n        #endregion\n\n        #region Properties\n\n        public MyPlayerBase Player;\n\n        /// <summary>\n        /// Gets the config.\n        /// </summary>\n        public MySmallShipConfig Config { get; private set; }\n\n        /// <summary>\n        /// Gets the group mask.\n        /// </summary>\n        public MyGroupMask GroupMask\n        {\n            get\n            {\n                return m_groupMask;\n            }\n        }\n\n        /// <summary>\n        /// Gets the target entity.\n        /// </summary>\n        public MyEntity TargetEntity { get; /*private */set; }\n        public List<MyEntity> SideTargets = new List<MyEntity>();\n\n        /// <summary>\n        /// List of acquired targets\n        /// </summary>\n        private List<MyEntity> m_targetEntityHistory;\n\n        /// <summary>\n        /// Gets the cockpit glass model enum.\n        /// </summary>\n        public MyModelsEnum CockpitGlassModelEnum { get; private set; }\n\n        /// <summary>\n        /// Gets the cockpit interior model enum.\n        /// </summary>\n        public MyModelsEnum CockpitInteriorModelEnum { get; private set; }\n\n        /// <summary>\n        /// Gets the light.\n        /// </summary>\n        public MyLight Light\n        {\n            get { return m_light; }\n        }\n\n        /// <summary>\n        /// fire weapons \n        /// </summary>\n        /// <param name=\"en\"></param>\n        public void InitGroupMaskIfNeeded()\n        {\n            // prevent collision with ship\n            if (m_groupMask.Equals(MyGroupMask.Empty))\n            {\n                bool retVal = MyPhysics.physicsSystem.GetRigidBodyModule().GetGroupMaskManager().GetGroupMask(ref m_groupMask);\n                MyCommonDebugUtils.AssertDebug(retVal);\n                this.Physics.GroupMask |= this.GroupMask;\n            }\n        }\n\n        /// <summary>\n        /// Gets the ship type properties.\n        /// </summary>\n        public MyShipTypeProperties ShipTypeProperties\n        {\n            get { return m_shipTypeProperties; }\n        }\n\n        /// <summary>\n        /// Memorizing players flight\n        /// </summary>\n        public MyPositionMemory RouteMemory { get; protected set; }\n\n        ///// <summary>\n        ///// Another ships detector\n        ///// </summary>\n        //public MyShipDetector ShipDetector { get; private set; }\n\n        public MyEntityDetector TradeDetector { get; private set; }\n\n        public MyEntityDetector BuildDetector { get; private set; }\n\n        public MyEntityDetector MotherShipDetector { get; private set; }\n\n        public MyEntityDetector UseableEntityDetector { get; protected set; }\n\n        public MyHackingTool HackingTool { get; protected set; }\n\n        /// <summary>\n        /// Ship's radar\n        /// </summary>\n        private List<IMyObjectToDetect> m_detectedObjects;\n\n        /// <summary>\n        /// Tool kits\n        /// </summary>\n        private MyToolKits ToolKits { get; set; }\n\n        public float DeadTime { get; set; }\n\n        public override bool NearFlag\n        {\n            get\n            {\n                return false;\n            }\n            set\n            {\n                //base.NearFlag = value;\n            }\n        }\n\n        public MyEntity Leader = null;\n\n        public List<MySmallShipBot> Followers = new List<MySmallShipBot>();\n        public static List<MySmallShipBot> FollowersBuffer = new List<MySmallShipBot>(10);\n\n        float m_pilotDeathTime;\n\n        bool m_isLooted;\n\n        float m_lastLootTime;\n\n        public float RadioactivityAmount;\n\n        #endregion\n\n        public event Action<MySmallShip> ConfigChanged;\n\n        #region Methods\n\n        /// <summary>\n        /// Initializes a new instance of the <see cref=\"MySmallShip\"/> class.\n        /// </summary>\n        public MySmallShip()\n        {\n            FalseFactions = MyMwcObjectBuilder_FactionEnum.None;\n            this.m_includeCargoWeight = MySmallShipConstants.INCLUDE_CARGO_WEIGHT;\n            this.Config = new MySmallShipConfig(this);\n            this.Config.ConfigChanged += new Action<MySmallShipConfig>(Config_ConfigChanged);\n            m_targetEntityHistory = new List<MyEntity>();\n\n            RadarCapabilities = new List<MyMwcObjectBuilder_SmallShip_Radar_TypesEnum>();\n\n            ShowOnHudOnlyWhenDetected = true;\n        }\n\n        /// <summary>\n        /// Initializes a new instance of the <see cref=\"MySmallShip\"/> class.\n        /// </summary>\n        /// <param name=\"health\">The health.</param>\n        /// <param name=\"displayName\">The name.</param>\n        public MySmallShip(float health, string displayName)\n            : this()\n        {\n            this.DisplayName = displayName;\n        }\n\n        void Config_ConfigChanged(MySmallShipConfig obj)\n        {\n            RaiseConfigChanged();\n        }\n\n        void RaiseConfigChanged()\n        {\n            var handler = ConfigChanged;\n            if (handler != null)\n            {\n                handler(this);\n            }\n        }\n\n        void UpdateSubObjectsState(bool cameraInCockpit)\n        {\n            Debug.Assert(this == MySession.PlayerShip);\n\n            EnableThrustLights(!cameraInCockpit);\n            UpdateWeaponsNear(cameraInCockpit);\n        }\n\n        private void UpdateWeaponsNear(bool inCockpit)\n        {\n            foreach (var weapon in Weapons.GetMountedWeaponsWithHarvesterAndDrill())\n            {\n                weapon.NearFlag = inCockpit;\n            }\n        }\n\n        private void EnableThrustLights(bool enable)\n        {\n            EnableThrustLights(m_subObjectEngineThrustBackwardSmallLeftside, enable);\n            EnableThrustLights(m_subObjectEngineThrustBackwardSmallRightside, enable);\n            EnableThrustLights(m_subObjectEngineThrustBackwardLeftside, enable);\n            EnableThrustLights(m_subObjectEngineThrustBackwardRightside, enable);\n            EnableThrustLights(m_subObjectEngineThrustBackward2Leftside, enable);\n            EnableThrustLights(m_subObjectEngineThrustBackward2Rightside, enable);\n            EnableThrustLights(m_subObjectEngineThrustBackward2Middle, enable);\n            EnableThrustLights(m_subObjectEngineThrustForwardLeftside, enable);\n            EnableThrustLights(m_subObjectEngineThrustForwardRightside, enable);\n            EnableThrustLights(m_subObjectEngineThrustStrafeLeft, enable);\n            EnableThrustLights(m_subObjectEngineThrustStrafeRight, enable);\n            EnableThrustLights(m_subObjectEngineThrustUpLeftside, enable);\n            EnableThrustLights(m_subObjectEngineThrustUpRightside, enable);\n            EnableThrustLights(m_subObjectEngineThrustDownLeftside, enable);\n            EnableThrustLights(m_subObjectEngineThrustDownRightside, enable);\n        }\n\n        private void EnableThrustLights(List<MyModelShipSubOject> subobjectGroup, bool enable)\n        {\n            foreach (MyModelShipSubOject subObject in subobjectGroup)\n            {\n                if (subObject.Light != null)\n                {\n                    subObject.Light.LightOn = enable;\n                }\n            }\n        }\n\n        public override void Init(string displayName, MyMwcObjectBuilder_Ship shipObjectBuilder)\n        {\n            MyMwcObjectBuilder_SmallShip smallShipObjectBuilder = shipObjectBuilder as MyMwcObjectBuilder_SmallShip;\n            Debug.Assert(smallShipObjectBuilder != null);\n\n            m_unifiedWeaponCues = new MySoundCue?[MyAudio.GetNumberOfSounds()];\n\n            MaxArmorHealth = 100.0f;\n\n            bool isPlayerShip = smallShipObjectBuilder is MyMwcObjectBuilder_SmallShip_Player;\n\n            if (isPlayerShip)\n            {\n                Save = false; // Do not save player ships\n                m_waypointTicks = 0;\n            }\n\n            OwnerId = smallShipObjectBuilder.OwnerId;\n\n            RouteMemory = new MyPositionMemory(MySmallShipConstants.POSITION_MEMORY_SIZE, 1);\n\n            Name = shipObjectBuilder.Name;\n\n            //set leveling matrix default \n            m_levelingMatrix = Matrix.Identity;\n\n            m_engineSoundOn = true;\n\n            StringBuilder hudLabel = null;\n            if (displayName != null)\n            {\n                hudLabel = new StringBuilder(displayName);\n            }\n            InitShip(hudLabel, smallShipObjectBuilder, null);\n\n            MyModelDummy dummy;\n            if (GetModelLod0().Dummies.TryGetValue(\"destruction\", out dummy))\n            {\n                m_damageEffectLocalMatrix = dummy.Matrix;\n            }\n            if (shipObjectBuilder.Inventory == null)\n            {\n                shipObjectBuilder.Inventory = new MyMwcObjectBuilder_Inventory(new List<MyMwcObjectBuilder_InventoryItem>(), m_shipTypeProperties.GamePlay.CargoCapacity);\n            }\n            shipObjectBuilder.Inventory.MaxItems = m_shipTypeProperties.GamePlay.CargoCapacity;\n            if (isPlayerShip)\n            {\n                if (MyGameplayCheats.IsCheatEnabled(MyGameplayCheatsEnum.INCREASE_CARGO_CAPACITY))\n                {\n                    shipObjectBuilder.Inventory.MaxItems = MyGamePlayCheatsConstants.CHEAT_INCREASE_CARGO_CAPACITY_MAX_ITEMS;\n                }\n                //shipObjectBuilder.Inventory.UnlimitedCapacity = MyGameplayCheats.IsCheatEnabled(MyGameplayCheatsEnum.UNLIMITED_CARGO_CAPACITY);\n            }\n            base.Init(displayName, shipObjectBuilder);\n\n            if (isPlayerShip)\n            {\n                Inventory.InventorySynchronizer = new MyInventorySynchronizer(Inventory, MyPlayerShipInventorySynchronizerHelper.MustBePlayerShipInventorySynchronized);\n            }\n\n            System.Diagnostics.Debug.Assert(Faction != 0);\n            m_targetEntityHistory.Clear();\n\n            m_pilotDeathTime = 0;\n            m_lastLootTime = 0;\n            m_isExploded = false;\n            m_lastTimeDeployedDrone = MyConstants.FAREST_TIME_IN_PAST;\n\n            RenderObjects[0].ShadowCastUpdateInterval = 600;\n\n            MyGuiScreenInventoryManagerForGame.OpeningInventoryScreen += OpeningInventoryScreen;\n            MyGuiScreenInventoryManagerForGame.InventoryScreenClosed += InventoryScreenClosed;\n            AfterburnerStatus = 1.0f;\n            AfterburnerEnabled = true;\n            IsDummy = smallShipObjectBuilder.IsDummy;\n            m_friendlyFireDamageTimer = 0;\n            AIPriority = smallShipObjectBuilder.AIPriority;\n\n            UpdateMaxFuel();\n            UpdateMaxOxygen();\n        }\n\n        public override void Link()\n        {\n            base.Link();\n\n            if (OwnerId.HasValue)\n            {\n                if (OwnerId == uint.MaxValue)\n                {\n                    this.OwnerEntity = MySession.PlayerShip;\n                }\n                else\n                {\n                    this.OwnerEntity = MyEntities.GetEntityById(new MyEntityIdentifier(OwnerId.Value));\n                }\n            }\n        }\n\n        protected override MyMwcObjectBuilder_Base GetObjectBuilderInternal(bool getExactCopy)\n        {\n            MyMwcObjectBuilder_Base baseBuilder = base.GetObjectBuilderInternal(getExactCopy);\n            var builder = baseBuilder as MyMwcObjectBuilder_SmallShip;\n            if (builder != null)\n            {\n                builder.ShipType = m_shipType;\n                //builder.Weapons = Weapons != null ? Weapons.GetWeaponsObjectBuilders(getExactCopy) : null;\n                builder.Weapons = Weapons.GetWeaponsObjectBuilders(getExactCopy);\n                builder.Engine = Engine;\n                builder.AssignmentOfAmmo = Weapons.AmmoAssignments.GetObjectBuilder();\n                builder.Armor = Armor;\n                builder.Radar = new MyMwcObjectBuilder_SmallShip_Radar(MyMwcObjectBuilder_SmallShip_Radar_TypesEnum.Radar_1);\n\n                //if (MaxHealth == m_gameplayProperties.MaxHealth)\n                //    builder.ShipMaxHealth = MyGameplayConstants.MAX_HEALTH_MAX;\n                //else\n                //    builder.ShipMaxHealth = MaxHealth;\n\n                //if (Health == m_gameplayProperties.MaxHealth)\n                //    builder.ShipHealthRatio = MyGameplayConstants.HEALTH_MAX;\n                //else\n                //    builder.ShipHealthRatio = Health;\n                builder.ShipHealthRatio = HealthRatio;\n                builder.ShipMaxHealth = GetMaxHealth();\n\n                builder.ArmorHealth = ArmorHealth;\n                builder.Oxygen = Oxygen;\n                builder.Fuel = Fuel;\n                builder.DisplayName = DisplayName;\n                builder.ReflectorLight = Config.ReflectorLight.On;\n                builder.ReflectorLongRange = Config.ReflectorLongRange.On;\n                builder.ReflectorShadowDistance = ReflectorShadowDistance;\n                builder.AIPriority = AIPriority;\n\n                if (OwnerEntity != null)\n                {\n                    if (OwnerEntity == MySession.PlayerShip)\n                    {\n                        builder.OwnerId = uint.MaxValue;\n                    }\n                    else\n                    {\n                        builder.OwnerId = OwnerEntity.EntityId.Value.NumericValue;\n                    }\n                }\n\n\n                return builder;\n            }\n            return baseBuilder;\n        }\n\n        public static MyMwcObjectBuilder_SmallShip CreateDefaultSmallShipObjectBuilder(Matrix matrix)\n        {\n            MyMwcObjectBuilder_SmallShip objectBuilder = new MyMwcObjectBuilder_SmallShip(\n                MyMwcObjectBuilder_SmallShip_TypesEnum.GETTYSBURG,\n                null,\n                new List<MyMwcObjectBuilder_SmallShip_Weapon>(),\n                new MyMwcObjectBuilder_SmallShip_Engine(MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.PowerCells_1),\n                new List<MyMwcObjectBuilder_AssignmentOfAmmo>(),\n                new MyMwcObjectBuilder_SmallShip_Armor(MyMwcObjectBuilder_SmallShip_Armor_TypesEnum.Basic),\n                new MyMwcObjectBuilder_SmallShip_Radar(MyMwcObjectBuilder_SmallShip_Radar_TypesEnum.Radar_1),\n                MyGameplayConstants.MAXHEALTH_SMALLSHIP, MyGameplayConstants.HEALTH_RATIO_MAX, float.MaxValue, float.MaxValue, float.MaxValue, true, false, MyLightsConstants.MAX_SPOTLIGHT_SHADOW_RANGE, 0);\n            objectBuilder.PositionAndOrientation = new MyMwcPositionAndOrientation(matrix);\n            return objectBuilder;\n        }\n\n        /// <summary>\n        /// Damage is first taken from armor, at full rate. The amount taken from armor is then multiplied by armor\n        /// ratio to get how much damage armor absorbed. The rest is taken from ship health.\n        /// </summary>\n        /// <param name=\"healthDamage\">Damage which should be taken from player health</param>\n        /// <param name=\"damage\">Damage to be taken from ship/entity</param>\n        /// <param name=\"damageType\"></param>\n        /// <param name=\"ammoType\"></param>\n        /// <param name=\"damageSource\"></param>\n        protected override void DoDamageInternal(float healthDamage, float damage, float empDamage, MyDamageType damageType, MyAmmoType ammoType, MyEntity damageSource, bool justDeactivate)\n        {\n            if (HasSunWindArmor && damageType == MyDamageType.Sunwind)\n            {\n                return;\n            }\n\n            HandleAttack(damageSource);\n\n            // Mantis 5877: There will be \"friendly fire\" voice notification, but nobody will get hurt.\n            // It will work only on small ships.\n\n            if (damageSource is MySmallShip && damageSource != this)\n            {\n                var factionRelation = MyFactions.GetFactionsRelation(this, damageSource);\n                if (factionRelation == MyFactionRelationEnum.Friend || factionRelation == MyFactionRelationEnum.Neutral)\n                {\n                    // Report friendly fire on friendly units, when too much damage over time is done, friends will aggro\n                    if (damageSource == MySession.PlayerShip && (this.PersistentFlags & MyPersistentEntityFlags.Parked) == 0)\n                    {\n                        MySession.PlayerShip.AddFriendlyFireDamage(this, damage);\n                    }\n\n                    healthDamage = damage = empDamage = 0;\n                }\n            }\n            \n            // When ship damages itself and it's player ship, don't do damage\n            if (damageSource == this && damageSource == MySession.PlayerShip)\n            {\n                healthDamage = damage = empDamage = 0;\n            }\n\n            bool isPlayerShip = this == MySession.PlayerShip;\n\n#if RENDER_PROFILING\n            if (isPlayerShip)\n                return;\n#endif\n            // Invincibility for player in editor or when profiling\n            if (isPlayerShip && MyGuiScreenGamePlay.Static.IsEditorActive())\n            {\n                return;\n            }\n\n\n            if (isPlayerShip && (MyGuiScreenGamePlay.Static.IsCheatEnabled(MyGameplayCheatsEnum.PLAYER_SHIP_INDESTRUCTIBLE)))\n            {\n                damage = empDamage = 0;\n            }\n\n            if (MyFakes.TEST_MISSION_GAMEPLAY && (damage != 10000 || damageType != MyDamageType.Explosion))\n            {\n                damage = empDamage = healthDamage = 0;\n            }\n\n            if (isPlayerShip)\n            {\n                if (damageType != MyDamageType.Unknown)\n                {\n                    damage *= MyGameplayConstants.GameplayDifficultyProfile.DamageToPlayerMultiplicator;\n                }\n            }\n\n            //how much armor absorbs damage (0.0 no absorbtion, 1.0 full absorbtion)\n            float armorReduction = m_armorProperties.HasValue ? m_armorProperties.Value.Resistance : 0;\n\n            if (ammoType == MyAmmoType.Piercing)\n            {\n                armorReduction *= MyAmmoConstants.ArmorEffectivityVsPiercingAmmo; // Armor effectivity is lower against piercing ammo\n            }\n\n            //actual damage armor absorbed\n            float armorDamage = Math.Min(ArmorHealth, damage);\n\n            //update armor health value\n            ArmorHealth -= armorDamage;\n\n            //calculate actual damage to the ship (decrease it by the absorbed damage by armor)\n            float shipDamage = damage - armorDamage * armorReduction;\n\n\n            if (this == MySession.PlayerShip)\n            {\n                if (MySession.Static.Player.Medicines[(int)MyMedicineType.HEALTH_ENHANCING_MEDICINE].IsActive())\n                    healthDamage *= MyMedicineConstants.HEALTH_ENHANCING_MEDICINE_DAMAGE_MULTIPLIER;\n\n                if (damageType == MyDamageType.Radioactivity || damageType == MyDamageType.Sunwind)\n                {\n                    // activate if not active\n                    if (!MySession.Static.Player.Medicines[(int)MyMedicineType.ANTIRADIATION_MEDICINE].IsActive())\n                    {\n                        MySession.Static.Player.Medicines[(int)MyMedicineType.ANTIRADIATION_MEDICINE].ActivateIfInInventory(Inventory);\n                    }\n                    // if active, modify health damage\n                    if (MySession.Static.Player.Medicines[(int)MyMedicineType.ANTIRADIATION_MEDICINE].IsActive())\n                    {\n                        healthDamage *= MyMedicineConstants.ANTIRADIATION_MEDICINE_RADIATION_DAMAGE_MULTIPLIER;\n                    }\n                }\n\n                if (damageSource == null || (damageSource != this && MyFactions.GetFactionsRelation(damageSource, this) == MyFactionRelationEnum.Enemy))\n                {\n                    healthDamage *= MyGameplayConstants.GameplayDifficultyProfile.DamageToPlayerFromEnemyMultiplicator;\n                    shipDamage *= MyGameplayConstants.GameplayDifficultyProfile.DamageToPlayerFromEnemyMultiplicator;\n                    empDamage *= MyGameplayConstants.GameplayDifficultyProfile.DamageToPlayerFromEnemyMultiplicator;\n                }\n\n                if (MySession.Static != null)\n                {\n                    if (!MySession.Static.Player.IsDead())\n                    {\n                        MySession.Static.Player.AddHealth(-healthDamage, damageSource);\n                    }\n                }\n\n                if (damageType == MyDamageType.Radioactivity || damageType == MyDamageType.Sunwind)\n                {\n                    m_radiationLastDamage = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n                    //PlayGeigerBeeping();\n                    if (healthDamage >= MySmallShipConstants.WARNING_RADIATION_DAMAGE_PER_SECOND * MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS)\n                    {\n                        m_radiationCriticalLastDamage = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n                        //PlayRadiationWarning();\n                    }\n                }\n            }\n\n            DisableByEMP(TimeSpan.FromSeconds(MySmallShipConstants.EMP_SMALLSHIP_DISABLE_DURATION_MULTIPLIER * empDamage));\n\n            if (isPlayerShip)\n            {\n                if (damageSource != null)\n                {\n                    MyHud.SetDamageIndicator(damageSource, damageSource.GetPosition(), shipDamage);\n                }\n            }\n\n            base.DoDamageInternal(healthDamage, shipDamage, empDamage, damageType, ammoType, damageSource, justDeactivate);\n\n            UpdateDamageEffect();\n        }\n\n        public override void AddHealth(float deltaHealth)\n        {\n            float oldHealth = Health;\n\n            base.AddHealth(deltaHealth);\n\n            if (oldHealth != Health)\n            {\n                UpdateDamageEffect();\n            }\n        }\n\n        private void UpdateDamageEffect()\n        {\n            var damageRatio = GetDamageRatio();\n            bool threshold = damageRatio > MyShipConstants.DAMAGED_HEALTH;\n\n            if (m_damageEffect == null && threshold)\n            {\n                m_damageEffect = MyParticlesManager.CreateParticleEffect((int)MyParticleEffectsIDEnum.Damage_Smoke);\n                m_damageEffect.AutoDelete = false;\n                m_damageEffect.UserBirthMultiplier = 0;\n                m_damageEffect.WorldMatrix = m_damageEffectLocalMatrix != null ? m_damageEffectLocalMatrix.Value * WorldMatrix : WorldMatrix;\n            }\n        }\n\n        //  We don't need to optimize this value in a member because it's retrieved only once per update or draw and only for player's miner ship\n        //  It we also shake the camera/hear. As this method is called only for player ship (not every mining ship), it doesn't have to be super optimized.\n        //  Moreover, this method is called from Update, not from Draw.\n        public Matrix GetViewMatrix()\n        {\n            Matrix matrixRotation = Matrix.CreateFromAxisAngle(Vector3.Forward, m_playerViewAngleLocal.Z) *\n                Matrix.CreateFromAxisAngle(Vector3.Right, m_playerViewAngleLocal.X);\n            Matrix rboRot = WorldMatrix;\n            Matrix worldMatrix = WorldMatrix;\n            rboRot.Translation = Vector3.Zero;\n            return Matrix.Invert(rboRot * matrixRotation * Matrix.CreateTranslation(MyUtils.GetTransform(m_playerHeadLocal, ref worldMatrix)));\n        }\n\n        public override float GetHUDDamageRatio()\n        {\n            return 1f - (HealthRatio);\n        }\n\n        /// <summary>\n        /// Only for multiplayer\n        /// </summary>\n        public void SetAfterburner(bool enabled)\n        {\n            if (!IsDummy)\n            {\n                return;\n            }\n            m_engineAfterburnerOn = enabled;\n        }\n\n        //  Prepares engine forces but don't apply them to physic object. That is done in UpdateController()\n        //  Reason is that JLX clears all forces before Integration Step and then calls UpdateController() for every enabled controller.\n        //  So that's only place where we can really alter physic objects.\n        //  This method aceepts float rollIndicator, which is used to control the rolling rotation\n        public virtual void MoveAndRotate(Vector3 moveIndicator, Vector2 rotationIndicator, float rollIndicator, bool afterburner)\n        {\n            MyUtils.AssertIsValid(moveIndicator);\n            MyUtils.AssertIsValid(rotationIndicator);\n            MyUtils.AssertIsValid(rollIndicator);\n\n            if (MySession.Is25DSector)\n            {\n                if (!(this is MySmallShipBot))\n                {\n                    rotationIndicator.X = 0;\n                    moveIndicator.Y = 0;\n                    rollIndicator = 0;\n                }\n            }\n\n            if (MyFakes.MWBUILDER)\n            {         /*\n                if (!(this is MySmallShipBot))\n                {\n                    //rotationIndicator.X = 0;\n                    rollIndicator = 0;\n                }   \n\n                if (moveIndicator.LengthSquared() > 0.1f && (MyMinerGame.TotalTimeInMilliseconds - m_stepStartMS > m_stepDurationMS))\n                {\n                    m_stepStartMS = MyMinerGame.TotalTimeInMilliseconds;\n                }   */\n            }\n\n            rotationIndicator *= SHIP_ROTATION_SENSITIVITY_MODIFIER;\n\n            var zoomSensitivityModifier = (1 - SENSITIVITY_MODIFIER_FOR_MAX_ZOOM) * MyCamera.Zoom.GetZoomLevel() +\n                                          SENSITIVITY_MODIFIER_FOR_MAX_ZOOM;\n            rotationIndicator *= zoomSensitivityModifier;\n\n            var activeEngineProps = GetEngineProperties();\n            //// Ship without engine, fuel, electricity can't move\n            //if (Fuel <= 0 || Electricity <= 0 || Engine != null)\n            //{\n            //    moveIndicator *= 0.0f;\n            //    rotationIndicator *= 0.0f;\n            //    rollIndicator *= 0.0f;\n            //}\n\n            //  If drill is currently active then ship should move and rotate slowly\n            if (m_smallShipWeapons != null)\n            {\n                var drill = m_smallShipWeapons.GetMountedDrill();\n                if (drill != null)\n                {\n                    if (!MySession.Is25DSector && drill.CurrentState != MyDrillStateEnum.InsideShip)\n                    {\n                        moveIndicator *= 0.25f;\n                        rotationIndicator *= 0.25f;\n                        rollIndicator *= 0.25f;\n                    }\n                    else if (drill.CurrentState == MyDrillStateEnum.Drilling)\n                    {\n                        moveIndicator *= 0.25f;\n                        rotationIndicator *= 0.25f;\n                        rollIndicator *= 0.25f;\n                    }\n                }\n            }\n\n            var newAfterburnerValue = afterburner && AfterburnerStatus > 0 && moveIndicator.Z < 0 && Fuel > 0 && IsEngineWorking() && Engine != null && AfterburnerEnabled;\n            if (MyMultiplayerGameplay.IsRunning && newAfterburnerValue != m_engineAfterburnerOn && this == MySession.PlayerShip)\n            {\n                MyMultiplayerGameplay.Static.Afterburner(newAfterburnerValue);\n            }\n            m_engineAfterburnerOn = newAfterburnerValue;\n\n            // prevent afterburner usage after depletion (you have to release Shift to be able to use it again)\n            // engine off: always refill\n            m_engineAfterburnerCanRefill = !afterburner || moveIndicator.Z >= 0 || !Config.Engine.On;\n\n            var physicsProperties = GetPhysicsProperties();\n\n            if (m_engineAfterburnerOn)\n            {\n                rotationIndicator *= 0.25f;\n                rollIndicator *= 0.25f;\n                moveIndicator.X *= 0.25f;\n                moveIndicator.Y *= 0.25f;\n                moveIndicator.Z *= activeEngineProps.AfterburnerSpeedMultiplier;\n            }\n            else\n            {\n                moveIndicator *= 1.2f;\n            }\n\n            // no movement: no change\n            if (moveIndicator == Vector3.Zero && rotationIndicator == Vector2.Zero && rollIndicator == 0.0f)\n                return;\n\n            Matrix tempInvertedWorldMatrix = GetWorldMatrixInverted();\n            tempInvertedWorldMatrix.Translation = Vector3.Zero;\n\n            Vector3 localWorldAxisY = Vector3.Zero;\n            Vector3 localWorldAxisX = Vector3.Zero;\n            if (Config.AutoLeveling.On)\n            {\n                Vector3 vec = new Vector3(WorldMatrix.Right.X, 0, WorldMatrix.Right.Z);\n                if (MyMwcUtils.HasValidLength(vec))\n                {\n                    localWorldAxisY = MyUtils.GetTransformNormal(m_levelingMatrix.Up, ref tempInvertedWorldMatrix);\n                    localWorldAxisX = MyUtils.GetTransformNormal(MyMwcUtils.Normalize(vec), ref tempInvertedWorldMatrix);\n                }\n                else\n                {\n                    localWorldAxisY = MyUtils.GetTransformNormal(WorldMatrix.Up, ref tempInvertedWorldMatrix);\n                    localWorldAxisX = MyUtils.GetTransformNormal(WorldMatrix.Right, ref tempInvertedWorldMatrix);\n                }\n\n            }\n            else //  Without autolevel, dont need to transform local x and y axis based on up right orientation\n            {\n                if (rollIndicator != 0 && IsEngineWorking()) // this is the roll around the forward vector(z)\n                {\n                    m_engineTorque.Z -= rollIndicator * physicsProperties.MultiplierRoll * Physics.Mass * physicsProperties.MultiplierHorizontalAngleStabilization;\n                }\n\n                localWorldAxisY = MyUtils.GetTransformNormal(WorldMatrix.Up, ref tempInvertedWorldMatrix);\n                localWorldAxisX = MyUtils.GetTransformNormal(WorldMatrix.Right, ref tempInvertedWorldMatrix);\n            }\n\n            if (IsEngineWorking())\n            {\n                //  Forward/backward\n                m_engineForce.Z += moveIndicator.Z * activeEngineProps.Force * physicsProperties.MultiplierForwardBackward * physicsProperties.MultiplierMovement;\n\n                //  Strafe left/right\n                m_engineForce += (localWorldAxisX * moveIndicator.X) * activeEngineProps.Force * physicsProperties.MultiplierStrafe * physicsProperties.MultiplierMovement;\n                if (Config.AutoLeveling.On) // without auto level, this torque thing would make strafe too difficult\n                {\n                    m_engineTorque.Z -= moveIndicator.X * Physics.Mass * physicsProperties.MultiplierStrafeRotation * (MySession.Is25DSector && this == MySession.PlayerShip ? 10 : 1);\n                    //m_engineTorque.Z -= moveIndicator.X * Physics.Mass * physicsProperties.MultiplierStrafeRotation * (MyFakes.MW25D && this == MySession.PlayerShip ? 1 : 1);\n\n                    if (MySession.Static.Is2DSector && Math.Abs(WorldMatrix.Right.Y) < 0.01f)\n                    {\n                        //TODO: Sometimes destroy world matrix?\n                        m_engineTorque.X += moveIndicator.Z * Physics.Mass * physicsProperties.MultiplierStrafeRotation * (MySession.Is25DSector && this == MySession.PlayerShip ? 40 : 0);\n                    }\n                }\n              \n                //  Up/down\n                m_engineForce += moveIndicator.Y * localWorldAxisY * activeEngineProps.Force * physicsProperties.MultiplierUpDown * physicsProperties.MultiplierMovement;\n\n                //  Rotate up/down\n                m_engineTorque.X -= rotationIndicator.X * Physics.Mass * physicsProperties.MultiplierRotation;\n\n                //  This rotation is just for effect (when rotating left/right, we rotate around front axis - it looks more natural, but it's not really needed for navigation).\n                m_engineTorque.Z -= rotationIndicator.Y * Physics.Mass * physicsProperties.MultiplierRotationEffect * (MySession.Is25DSector && this == MySession.PlayerShip ? 5 : 1);\n                //m_engineTorque.Z -= rotationIndicator.Y * Physics.Mass * physicsProperties.MultiplierRotationEffect * (MyFakes.MW25D && this == MySession.PlayerShip ? 1 : 1);\n\n                //  Rotate around up vector (left/right)            \n                m_engineTorque -= localWorldAxisY * rotationIndicator.Y * Physics.Mass * physicsProperties.MultiplierRotation;\n            }\n\n            MyUtils.AssertIsValid(m_engineTorque);\n            MyUtils.AssertIsValid(m_engineForce);\n        }\n\n        /// <summary>\n        /// Returns the rolling angle of the ship\n        /// </summary>\n        /// <param name=\"ship\"></param>\n        /// <returns></returns>\n        public float RollingAngle(MySmallShip ship)\n        {\n            Vector3 plane;\n            Vector3 plane2;\n\n            //plane .. two vectors\n            var v1 = ship.WorldMatrix.Right;\n            var v2 = ship.WorldMatrix.Up;\n\n            //second plane\n            var p1 = ship.WorldMatrix.Forward;\n            var p2 = Vector3.Up;\n\n            //plane normal vector\n            Vector3.Cross(ref v1, ref v2, out plane);\n            Vector3.Cross(ref p1, ref p2, out plane2);\n\n            Vector3 intersection;\n\n            //help variables for next calculations\n            float zF = (plane.Y * plane2.Z - plane2.Y * plane.Z);\n            float yF = plane.Y;\n\n            //if these variables are zero, we cant calculate intersection, so make it same as up vector\n            if (zF != 0 && yF != 0)\n            {\n                //calculate intersection of two planes\n                intersection.X = 1;\n                intersection.Z = ((-plane.Y * plane2.X + plane2.Y * plane.X) / zF);\n                intersection.Y = (-plane.X - plane.Z * intersection.Z) / yF;\n                intersection = MyMwcUtils.Normalize(intersection);\n            }\n            else intersection = Vector3.Up;\n\n            //Make sure that intersection will be in the same direction all the time\n            if (MyUtils.GetAngleBetweenVectors(Vector3.Up, intersection) > 1.57f)\n                intersection *= -1;\n\n            var d = ship.WorldMatrix.Forward;\n\n            //Debug draw of all used vectors for planes and intersection vector\n            //MyDebugDraw.DrawLine3D(GetPosition(), GetPosition()+10*p2, Color.Gold, Color.Gold);\n            //MyDebugDraw.DrawLine3D(GetPosition(), GetPosition() + 10 * p1, Color.Gold, Color.Gold);\n            //MyDebugDraw.DrawLine3D(this.GetPosition(), GetPosition() + 10*v2, Color.Aquamarine, Color.Aquamarine);\n            //MyDebugDraw.DrawLine3D(this.GetPosition(), GetPosition()+10*v1, Color.Aquamarine, Color.Aquamarine);\n            //MyDebugDraw.DrawLine3D(this.GetPosition(), GetPosition() + 10 * intersection, Color.Fuchsia, Color.Fuchsia);\n\n            var angleUp = MathHelper.ToDegrees(MyUtils.GetAngleBetweenVectors(intersection, v2));\n\n            //direction of plane for differencing angles with same absolute value\n            Vector3.Cross(ref v2, ref d, out d);\n\n            //value of point in view of plane \n            float val = d.X * intersection.X + d.Y * intersection.Y + d.Z * intersection.Z;\n\n            //rolling side\n            if (Math.Sign(val) != 0)\n                angleUp *= Math.Sign(val);\n\n            return angleUp;\n        }\n\n        /// <summary>\n        /// Adds new waypoint and deletes previous one if it is redundant\n        /// </summary>\n        private void AddRoutePoint()\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Smallship::AddRoutePoint\");\n            RouteMemory.Add(GetPosition());\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        //public void CheckMemoryListBackwards(int dist)\n        //{\n        //    var count = RouteMemory.Count;\n        //    if ((dist < 0) && (dist > -count))\n        //    {\n        //        if (null == CanSee(RouteMemory[count + dist]))\n        //        {\n        //            RouteMemory.RemoveRange(count + dist, -dist);\n        //        }\n        //    }\n        //}\n\n        /// <summary>\n        /// Chceck if ship can see to target position.\n        /// </summary>\n        /// <param name=\"position\">Target ship.</param>\n        /// <returns>True, if bot can see ship.</returns>\n        protected MyEntity CanSee(Vector3 position)\n        {\n            return MyEnemyTargeting.CanSee(this, position, null);\n        }\n\n        public MyEntity CanSee(MyEntity target)\n        {\n            return MyEnemyTargeting.CanSee(this, target.GetPosition(), target);\n        }\n\n        //  Slown down and stabilization of the ship\n\n        public void UpdatePlayerHeadAndShakingNew()\n        {\n            m_cameraSpring.Update(MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS, GetWorldMatrixInverted(), ref m_playerHeadLocal);\n\n            //  Extra camera shaking after shooting or explosions\n            m_shaker.UpdateShake(MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS, ref m_playerHeadLocal, ref m_playerViewAngleLocal);\n\n            if (m_shaker.ShakeActive())\n            {\n                this.Physics.WakeUp();\n            }\n        }\n\n        //  Ammount is on interval <1....infinity>\n        public void IncreaseHeadShake(float amount)\n        {\n            // Only shake head if this is player, because for other it doesn't make sence, no one can see that shake\n            // Dont shake if player is in main menu\n            if (this != MySession.PlayerShip ||\n                (MyGuiScreenGamePlay.Static != null && MyGuiScreenGamePlay.Static.GetGameType() == MyGuiScreenGamePlayType.MAIN_MENU)) return;\n\n            m_shaker.AddShake(amount);\n\n            //  Shake the head after shooting\n            m_playerHeadExtraShake.Y += amount * MyMwcUtils.GetRandomFloat(MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS * 0.5f, MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS * 2);\n            m_playerHeadExtraShake.Z += amount * MyMwcUtils.GetRandomFloat(MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS * 0.5f, MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS * 2);\n            //m_playerHeadExtraShake += MyMwcUtils.GetRandomVector3Normalized() * MyMwcUtils.GetRandomFloat(0.002f, 0.003f);\n\n            //  Shake-rotate the view after shooting\n            m_playerViewAngleExtraShake.Z += amount * MyMwcUtils.GetRandomSign() * MyMwcUtils.GetRandomFloat(MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS * 0.5f, MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS * 0.6f);\n            m_playerViewAngleExtraShake.X += amount * MyMwcUtils.GetRandomSign() * MyMwcUtils.GetRandomFloat(MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS * 0.5f, MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS * 0.6f);\n        }\n\n        //  Update light (position, color - reflector or muzzle flash)\n\n        public Vector3 GetPlayerHeadForCockpitInterior()\n        {\n            Matrix worldMatrix = this.WorldMatrix;\n            if (m_subObjectPlayerHeadForCockpitInteriorTranslation != null)\n            {\n                return MyUtils.GetTransform(m_subObjectPlayerHeadForCockpitInteriorTranslation.ModelSubObject.Position * -1, ref worldMatrix);\n            }\n            else\n            {\n                return worldMatrix.Translation;\n            }\n        }\n\n        public void StopSounds(SharpDX.XACT3.StopFlags stopOptions = SharpDX.XACT3.StopFlags.Release)\n        {\n\n            if (m_engineIdleCue != null && m_engineIdleCue.Value.IsPlaying)\n            {\n                m_engineIdleCue.Value.Stop(stopOptions);\n                m_engineIdleCue = null;\n            }\n            if (m_engineMovingCue != null && m_engineMovingCue.Value.IsPlaying)\n            {\n                m_engineMovingCue.Value.Stop(stopOptions);\n                m_engineMovingCue = null;\n            }\n            if (m_playerBreathing != null && m_playerBreathing.Value.IsPlaying)\n            {\n                m_playerBreathing.Value.Stop(stopOptions);\n                m_playerBreathing = null;\n            }\n\n        }\n\n        protected override void SetHudMarker()\n        {\n            StringBuilder hudLabel = new StringBuilder();\n\n            if (DisplayName != \"Ship\" && DisplayName != MyTextsWrapper.Get(MyTextsWrapperEnum.Ship).ToString())\n            {\n                string displayName = GetCorrectDisplayName();\n\n                hudLabel.Append(displayName);\n            }\n\n            MyHud.ChangeText(this, hudLabel, null, MySmallShipConstants.MAX_HUD_DISTANCE, MyHudIndicatorFlagsEnum.SHOW_ALL);\n        }\n\n        public void SetEngineSound(bool isEngineOn)\n        {\n            m_engineOnOffSound = MyAudio.AddCue3D(isEngineOn ? GetEngineProperties().OnCue : GetEngineProperties().OffCue,\n                                   GetPlayerHeadForCockpitInterior(), WorldMatrix.Forward, WorldMatrix.Up, Physics.LinearVelocity);\n\n            m_engineSoundOn = isEngineOn;\n            if (isEngineOn)\n            {\n                if ((m_playerBreathing != null) && (m_playerBreathing.Value.IsPlaying == true))\n                {\n                    m_playerBreathing.Value.Stop(SharpDX.XACT3.StopFlags.Release);\n                }\n\n                //engine idle sound can start only a moment after engine on sound plays, not immediately\n                m_engineIdleCueDelayMillis = MyMinerGame.TotalGamePlayTimeInMilliseconds + MyMinerShipConstants.MINER_SHIP_ENGINE_IDLE_CUE_DELAY_IN_MILLIS;\n            }\n            else\n            {\n                if (m_engineIdleCue != null && m_engineIdleCue.Value.IsPlaying)\n                {\n                    m_engineIdleCue.Value.Stop(SharpDX.XACT3.StopFlags.Release);\n                }\n                if (m_engineMovingCue != null && m_engineMovingCue.Value.IsPlaying)\n                {\n                    m_engineMovingCue.Value.Stop(SharpDX.XACT3.StopFlags.Release);\n                }\n                m_playerBreathing = null;\n            }\n        }\n\n        //  Weapons sounds are unified per miner ship (two or more weapons of same type and shooting simultanously will produce only one sound)\n        public void UnifiedWeaponCueSet(MySoundCuesEnum cueEnum, MySoundCue? value)\n        {\n            m_unifiedWeaponCues[(int)cueEnum] = value;\n        }\n\n        public MySoundCue? UnifiedWeaponCueGet(MySoundCuesEnum cueEnum)\n        {\n            return m_unifiedWeaponCues[(int)cueEnum];\n        }\n\n        public MyReflectorConfig GetReflectorProperties()\n        {\n            return m_reflectorProperies;\n        }\n\n        public void TrailerUpdate(float reflectorLevel, float engineLevel)\n        {\n            Config.ReflectorLight.Level = reflectorLevel;\n            Config.Engine.Level = engineLevel;\n        }\n\n        /// <summary>\n        /// This is the real initialization of the class. This separation lets us control when the heavy-lifting is\n        /// done in regards to initialization.\n        /// </summary>\n        /// <param name=\"helperName\">This objects name. For debugging only. Bot default: \"Bot\".</param>\n        /// <param name=\"scale\">Scale for bot model and JLX (only) collions. Not currently used for line-triangleVertexes intersections in octree. Bot default: null.</param>\n        /// <param name=\"doInitInsertionTest\">Test for intital intersection</param>\n        void InitShip(StringBuilder displayName, /*Matrix matrix,*/MyMwcObjectBuilder_SmallShip objectBuilder, float? scale)\n        {\n            ShipType = objectBuilder.ShipType;\n\n            m_subObjects.Clear();\n\n            GetModelShipSubObject(ref m_subObjectPlayerHeadForCockpitInteriorTranslation, m_shipTypeProperties.Visual.ModelLod0Enum, \"PLAYER_HEAD\", false);\n\n            //Will be removed\n            if (m_subObjectPlayerHeadForCockpitInteriorTranslation == null)\n            {\n                GetModelShipSubObject(ref m_subObjectPlayerHeadForCockpitInteriorTranslation, m_shipTypeProperties.Visual.ModelLod0Enum, \"COCKPIT\", false);\n            }\n\n            System.Diagnostics.Debug.Assert(m_subObjectPlayerHeadForCockpitInteriorTranslation != null);\n\n            GetModelShipSubObject(m_subObjectEngineThrustBackwardLeftside, m_shipTypeProperties.Visual.ModelLod0Enum, \"ENGINE_THRUST_BACKWARD_LEFTSIDE\", true);\n            GetModelShipSubObject(m_subObjectEngineThrustBackwardRightside, m_shipTypeProperties.Visual.ModelLod0Enum, \"ENGINE_THRUST_BACKWARD_RIGHTSIDE\", true);\n            GetModelShipSubObject(m_subObjectEngineThrustStrafeLeft, m_shipTypeProperties.Visual.ModelLod0Enum, \"ENGINE_THRUST_STRAFE_LEFT\", true);\n            GetModelShipSubObject(m_subObjectEngineThrustStrafeRight, m_shipTypeProperties.Visual.ModelLod0Enum, \"ENGINE_THRUST_STRAFE_RIGHT\", true);\n            GetModelShipSubObject(m_subObjectEngineThrustDownLeftside, m_shipTypeProperties.Visual.ModelLod0Enum, \"ENGINE_THRUST_DOWN_LEFTSIDE\", true);\n            GetModelShipSubObject(m_subObjectEngineThrustDownRightside, m_shipTypeProperties.Visual.ModelLod0Enum, \"ENGINE_THRUST_DOWN_RIGHTSIDE\", true);\n            GetModelShipSubObject(m_subObjectEngineThrustForwardLeftside, m_shipTypeProperties.Visual.ModelLod0Enum, \"ENGINE_THRUST_FORWARD_LEFTSIDE\", true);\n            GetModelShipSubObject(m_subObjectEngineThrustForwardRightside, m_shipTypeProperties.Visual.ModelLod0Enum, \"ENGINE_THRUST_FORWARD_RIGHTSIDE\", true);\n            GetModelShipSubObject(m_subObjectEngineThrustUpLeftside, m_shipTypeProperties.Visual.ModelLod0Enum, \"ENGINE_THRUST_UP_LEFTSIDE\", true);\n            GetModelShipSubObject(m_subObjectEngineThrustUpRightside, m_shipTypeProperties.Visual.ModelLod0Enum, \"ENGINE_THRUST_UP_RIGHTSIDE\", true);\n            GetModelShipSubObject(m_subObjectReflectorLeft, m_shipTypeProperties.Visual.ModelLod0Enum, \"REFLECTOR_LEFT\", false);\n            GetModelShipSubObject(m_subObjectReflectorRight, m_shipTypeProperties.Visual.ModelLod0Enum, \"REFLECTOR_RIGHT\", false);\n            GetModelShipSubObject(ref m_subObjectLight, m_shipTypeProperties.Visual.ModelLod0Enum, \"LIGHT_01\", false);\n            GetModelShipSubObject(m_subObjectEngineThrustBackwardSmallLeftside, m_shipTypeProperties.Visual.ModelLod0Enum, \"ENGINE_THRUST_BACKWARD_SMALL_LEFTSIDE\", true);\n            GetModelShipSubObject(m_subObjectEngineThrustBackwardSmallRightside, m_shipTypeProperties.Visual.ModelLod0Enum, \"ENGINE_THRUST_BACKWARD_SMALL_RIGHTSIDE\", true);\n            GetModelShipSubObject(m_subObjectEngineThrustBackward2Leftside, m_shipTypeProperties.Visual.ModelLod0Enum, \"ENGINE_THRUST_BACKWARD2_LEFTSIDE\", true);\n            GetModelShipSubObject(m_subObjectEngineThrustBackward2Rightside, m_shipTypeProperties.Visual.ModelLod0Enum, \"ENGINE_THRUST_BACKWARD2_RIGHTSIDE\", true);\n            GetModelShipSubObject(m_subObjectEngineThrustBackward2Middle, m_shipTypeProperties.Visual.ModelLod0Enum, \"ENGINE_THRUST_BACKWARD2_MIDDLE\", true);\n\n            base.Init(displayName, m_shipTypeProperties.Visual.ModelLod0Enum, m_shipTypeProperties.Visual.ModelLod1Enum, null, scale, objectBuilder);\n\n            this.GlassDirtLevel = MIN_GLASS_DIRT_LEVEL;\n\n            m_playerHeadLocal = Vector3.Zero;\n            m_playerHeadExtraShake = Vector3.Zero;\n            m_playerViewAngleLocal = Vector3.Zero;\n            m_playerViewAngleExtraShake = Vector3.Zero;\n\n            m_shaker = new MyCameraHeadShake();\n\n            CockpitGlassModelEnum = m_shipTypeProperties.Visual.CockpitGlassModel;\n            CockpitInteriorModelEnum = m_shipTypeProperties.Visual.CockpitInteriorModel;\n            m_glassIdealPhysObject = null;\n\n            // it can happen that too many weapons are in this object builder (old server data, etc.)\n            // so we have to remove weapons that don't fit into this ship's slots\n            RemoveRedundantWeapons(objectBuilder, m_shipTypeProperties.GamePlay.MaxWeapons);\n\n            Weapons = new MySmallShipWeapons(this, m_shipTypeProperties, MAX_AVAILABLE_SLOTS);\n            //Weapons = new MySmallShipWeapons(this, m_shipTypeProperties, m_shipTypeProperties.GamePlay.MaxWeapons);\n            Weapons.Init(objectBuilder.Weapons, objectBuilder.AssignmentOfAmmo);\n\n            CubeBuilder = new MyCubeBuilder();\n            CubeBuilder.Init(null, null, null, this, null, null);\n\n            ////This solves bad saved values in DB\n            //if (objectBuilder.ShipMaxHealth == 0 || objectBuilder.ShipMaxHealth == MyGameplayConstants.MAX_HEALTH_MAX)\n            //{\n            //    objectBuilder.ShipMaxHealth = m_gameplayProperties.MaxHealth;\n            //}\n\n            ////This solves bad saved values in DB\n            //if (objectBuilder.ShipHealthRatio == 0 || objectBuilder.ShipHealthRatio == MyGameplayConstants.HEALTH_MAX)\n            //{\n            //    objectBuilder.ShipHealthRatio = m_gameplayProperties.MaxHealth;\n            //}\n\n            //MaxHealth = objectBuilder.ShipMaxHealth;\n            //Health = objectBuilder.ShipHealthRatio;\n\n            // TODO: MartinBauer - Marcus is loaded from checkpoint and should be Indestructible\n            //Debug.Assert(IsDestructible);\n            //IsDestructible = true;\n            SetMaxHealth(objectBuilder.ShipMaxHealth);\n            HealthRatio = objectBuilder.ShipHealthRatio;\n            ArmorHealth = objectBuilder.ArmorHealth;\n            Oxygen = objectBuilder.Oxygen;\n            Fuel = objectBuilder.Fuel;\n            Engine = objectBuilder.Engine;\n            Armor = objectBuilder.Armor;\n            Config.ReflectorLight.SetValue(objectBuilder.ReflectorLight);\n            Config.ReflectorLongRange.SetValue(objectBuilder.ReflectorLongRange);\n            ReflectorShadowDistance = objectBuilder.ReflectorShadowDistance;\n\n            // Clamp ArmorHealth values\n            ArmorHealth = MathHelper.Clamp(ArmorHealth, 0, MaxArmorHealth);\n\n            m_lockTargetCheckTime = 0;\n            m_reflectorProperies = new MyReflectorConfig(this);\n\n            SetWorldMatrix(objectBuilder.PositionAndOrientation.GetMatrix());\n\n            //  Collision SPHERE - works best if miner ship is controled by human player (so we ignore high impulses after collision, good sliding along walls, etc)\n            MyModel model = MyModels.GetModelOnlyData(m_shipTypeProperties.Visual.ModelLod0Enum);\n            //InitSpherePhysics(objectBuilder is MyMwcObjectBuilder_SmallShip_Player ? MyMaterialType.PLAYERSHIP : m_shipTypeProperties.Visual.MaterialType, model, m_shipTypeProperties.Physics.Mass, 0, MyConstants.COLLISION_LAYER_ALL, RigidBodyFlag.RBF_DEFAULT);\n\n            Weight = ShipTypeProperties.Physics.Mass;\n\n            InitPhysics(1 / MySmallShipConstants.ALL_SMALL_SHIP_MODEL_SCALE, objectBuilder is MyMwcObjectBuilder_SmallShip_Player\n                    ? MyMaterialType.PLAYERSHIP\n                    : m_shipTypeProperties.Visual.MaterialType);\n\n            m_cameraSpring = new MyCameraSpring(this);\n\n            UpdateParked();\n            UpdateLight();\n\n            UpdatePlayerHeadForCockpitInteriorWorldMatrix();\n\n            // if this is player's ship, i will register fuel, oxygen, electricity and damage warnings\n            if (objectBuilder is MyMwcObjectBuilder_SmallShip_Player)\n            {\n                MySession.Static.Inventory.OnInventoryContentChange += CheckPointInventory_OnInventoryContentChange;\n                LoadHackingTool();\n                ToolKits = new MyToolKits(this, MySession.Static.Player);\n                InitShipDetector();\n                m_detectedObjects = new List<IMyObjectToDetect>();\n                OnMarkForClose += new Action<MyEntity>(PlayerShip_OnMarkForClose);\n\n                // sector boundaries\n                m_sectorBoundariesWarning = new MyHudTextWarning(MyTextsWrapperEnum.Blank);\n                MyHudWarnings.Add(\n                    this,\n                    new MyHudWarningGroup(\n                        new List<MyHudWarning>()\n                            {\n                                new MyHudWarning(\n                                    IsCloseToSectorBoundaries,\n                                    null,\n                                    m_sectorBoundariesWarning,\n                                    0)\n                            }, canBeTurnedOff: false\n                        ));\n\n                // fuel\n                MyHudWarnings.Add(this, new MyHudWarningGroup(new List<MyHudWarning>()\n                    { \n                        new MyHudWarning(HasNoFuelLevel, new MyHudSoundWarning(MySoundCuesEnum.HudFuelNoWarning, MySmallShipConstants.WARNING_FUEL_NO_INVERVAL), \n                            new MyHudTextWarning(MyTextsWrapperEnum.NotificationFuelNo), 0),\n                        new MyHudWarning(HasCriticalFuelLevel, new MyHudSoundWarning(MySoundCuesEnum.HudFuelCriticalWarning, MySmallShipConstants.WARNING_FUEL_CRITICAL_INVERVAL), \n                            new MyHudTextWarning(MyTextsWrapperEnum.NotificationFuelCritical), 1),\n                        new MyHudWarning(HasLowFuelLevel, new MyHudSoundWarning(MySoundCuesEnum.HudFuelLowWarning, MySmallShipConstants.WARNING_FUEL_LOW_INVERVAL), \n                            new MyHudTextWarning(MyTextsWrapperEnum.NotificationFuelLow), 2) \n                    }, canBeTurnedOff: true\n                ));\n                //// death breath\n                //MyHudWarnings.Add(this, new MyHudWarningGroup(new List<MyHudWarning>()\n                //    {\n                //        new MyHudWarning(HasNoOxygen, new MyHudSoundWarning(MySoundCuesEnum.SfxPlayerDeathBreath, 0), null, 0)\n                //    }, canBeTurnedOff:false\n                //));\n                // oxygen\n                MyHudWarnings.Add(this, new MyHudWarningGroup(new List<MyHudWarning>()\n                     {\n                        // TODO simon when cue is prepared\n                        new MyHudWarning(HasNoOxygen, new MyHudSoundWarning(MySoundCuesEnum.HudOxygenNoWarning, MySmallShipConstants.WARNING_NO_OXYGEN_INVERVAL), \n                            new MyHudTextWarning(MyTextsWrapperEnum.NotificationNoOxygen), 0),\n                        new MyHudWarning(HasCriticalOxygenLevel, new MyHudSoundWarning(MySoundCuesEnum.HudOxygenCriticalWarning, MySmallShipConstants.WARNING_OXYGEN_CRITICAL_INVERVAL), \n                            new MyHudTextWarning(MyTextsWrapperEnum.NotificationOxygenCritical), 1),\n                        new MyHudWarning(HasLowOxygenLevel, new MyHudSoundWarning(MySoundCuesEnum.HudOxygenLowWarning, MySmallShipConstants.WARNING_OXYGEN_LOW_INVERVAL), \n                            new MyHudTextWarning(MyTextsWrapperEnum.NotificationOxygenLow), 2) \n                     }, canBeTurnedOff: true\n                ));\n                // oxygen leaking\n                MyHudWarnings.Add(this, new MyHudWarningGroup(new List<MyHudWarning>()\n                    {\n                        new MyHudWarning(IsOxygenLeaking, new MyHudSoundWarning(MySoundCuesEnum.HudOxygenLeakingWarning, MySmallShipConstants.WARNING_OXYGEN_LEAKING_INVERVAL), \n                            new MyHudTextWarning(MyTextsWrapperEnum.NotificationOxygenLeaking), 0)\n                    }, canBeTurnedOff: true\n                ));\n                // damage\n                MyHudWarnings.Add(this, new MyHudWarningGroup(new List<MyHudWarning>()\n                    { \n                        new MyHudWarning(IsCriticalDamaged, new MyHudSoundWarning(MySoundCuesEnum.HudDamageCriticalWarning, MySmallShipConstants.WARNING_DAMAGE_CRITICAL_INVERVAL), \n                            new MyHudTextWarning(MyTextsWrapperEnum.NotificationDamageCritical), 0),\n                        new MyHudWarning(IsDamagedForWarnignAlert, new MyHudSoundWarning(MySoundCuesEnum.HudDamageAlertWarning, MySmallShipConstants.WARNING_DAMAGE_ALERT_INVERVAL), \n                            new MyHudTextWarning(MyTextsWrapperEnum.NotificationDamageAlert), 1) \n                    }, canBeTurnedOff: true\n                ));\n                // ammo\n                MyHudWarnings.Add(this, new MyHudWarningGroup(new List<MyHudWarning>()\n                    { \n                        new MyHudWarning(HasNoAmmoLevel, new MyHudSoundWarning(MySoundCuesEnum.HudAmmoNoWarning, MySmallShipConstants.WARNING_AMMO_NO_INVERVAL), new MyHudTextWarning(MyTextsWrapperEnum.NotificationAmmoNo), 0),\n                        new MyHudWarning(HasCriticalAmmoLevel, new MyHudSoundWarning(MySoundCuesEnum.HudAmmoCriticalWarning), null, 1),\n                        new MyHudWarning(HasLowAmmoLevel, new MyHudSoundWarning(MySoundCuesEnum.HudAmmoLowWarning), null, 2) \n                    }, canBeTurnedOff: true\n                ));\n                // armor\n                MyHudWarnings.Add(this, new MyHudWarningGroup(new List<MyHudWarning>()\n                    { \n                        new MyHudWarning(HasNoArmorLevel, new MyHudSoundWarning(MySoundCuesEnum.HudArmorNoWarning, MySmallShipConstants.WARNING_ARMOR_NO_INVERVAL), \n                            new MyHudTextWarning(MyTextsWrapperEnum.NotificationArmorNo), 0),\n                        new MyHudWarning(HasCriticalArmorLevel, new MyHudSoundWarning(MySoundCuesEnum.HudArmorCriticalWarning, MySmallShipConstants.WARNING_ARMOR_CRITICAL_INVERVAL), \n                            new MyHudTextWarning(MyTextsWrapperEnum.NotificationArmorCritical), 1),\n                        new MyHudWarning(HasLowArmorLevel, new MyHudSoundWarning(MySoundCuesEnum.HudArmorLowWarning, MySmallShipConstants.WARNING_ARMOR_LOW_INVERVAL), \n                            new MyHudTextWarning(MyTextsWrapperEnum.NotificationArmorLow), 2) \n                    }, canBeTurnedOff: true\n                ));\n                // radar jammed\n                MyHudWarnings.Add(this, new MyHudWarningGroup(new List<MyHudWarning>()\n                    { \n                        new MyHudWarning(IsRadarJammed, new MyHudSoundWarning(MySoundCuesEnum.HudRadarJammedWarning, MySmallShipConstants.WARNING_RADAR_JAMMED_INVERVAL), new MyHudTextWarning(MyTextsWrapperEnum.RadarJammed), 0)\n                    }, canBeTurnedOff: true\n                ));\n                // health\n                MyHudWarnings.Add(this, new MyHudWarningGroup(new List<MyHudWarning>()\n                    { \n                        new MyHudWarning(HasNoHealthLevel, null, new MyHudTextWarning(MyTextsWrapperEnum.SmallShipPilotDead), 0),\n                        new MyHudWarning(HasCriticalHealthLevel, new MyHudSoundWarning(MySoundCuesEnum.HudHealthCriticalWarning, MySmallShipConstants.WARNING_HEALTH_CRITICAL_INVERVAL), \n                            new MyHudTextWarning(MyTextsWrapperEnum.NotificationHealthCritical), 1),\n                        new MyHudWarning(HasLowHealthLevel, new MyHudSoundWarning(MySoundCuesEnum.HudHealthLowWarning, MySmallShipConstants.WARNING_HEALTH_LOW_INVERVAL), \n                            new MyHudTextWarning(MyTextsWrapperEnum.NotificationHealthLow), 2) \n                    }, canBeTurnedOff: true\n                ));\n                // radiation geiger\n                MyHudWarnings.Add(this, new MyHudWarningGroup(new List<MyHudWarning>()\n                    {\n                        new MyHudWarning(IsRadiation, new MyHudSoundWarning(MySoundCuesEnum.SfxGeigerCounterHeavyLoop, MySmallShipConstants.GEIGER_BEEP_INTERVAL), null, 0)                            \n                    }, canBeTurnedOff: false\n                ));\n                // radiation warning\n                MyHudWarnings.Add(this, new MyHudWarningGroup(new List<MyHudWarning>()\n                    {\n                        new MyHudWarning(IsRadiationCritical, new MyHudSoundWarning(MySoundCuesEnum.HudRadiationWarning, MySmallShipConstants.WARNING_RADIATION_INTERVAL),                             \n                            new MyHudTextWarning(MyTextsWrapperEnum.NotificationRadiationCritical), 0)                            \n                    }, canBeTurnedOff: true\n                ));\n                // engine turn off\n                MyHudWarnings.Add(this, new MyHudWarningGroup(new List<MyHudWarning>()\n                    { \n                        new MyHudWarning(IsEngineTurnedOff, null, new MyHudTextWarning(MyTextsWrapperEnum.NotificationEngineOff, MyGuiManager.GetInput().GetGameControlTextEnum(MyGameControlEnums.WHEEL_CONTROL) ), 0),\n                    }, canBeTurnedOff: true\n                ));\n                // movement slowdown\n                MyHudWarnings.Add(this, new MyHudWarningGroup(new List<MyHudWarning>()\n                    { \n                        new MyHudWarning(IsMovementSlowdownDisabled, null, new MyHudTextWarning(MyTextsWrapperEnum.NotificationMovementSlowdownEnabled, MyGuiManager.GetInput().GetGameControlTextEnum(MyGameControlEnums.MOVEMENT_SLOWDOWN)), 0),\n                    }, canBeTurnedOff: true\n                ));\n\n                //// enemy alert\n                //MyHudWarnings.Add(this, new MyHudWarningGroup()\n                //    { \n                //        new MyHudWarning(IsEnemyDetected, new MyHudSoundWarning(MySoundCuesEnum.SfxEnemyAlertWarning, MySmallShipConstants.WARNING_ENEMY_ALERT_INVERVAL), null, 0)\n                //    }, canBeTurnedOff:true\n                //);\n                // missile detected\n                MyHudWarnings.Add(this, new MyHudWarningGroup(new List<MyHudWarning>()\n                    { \n                        new MyHudWarning(IsMissileDetected, new MyHudSoundWarning(MySoundCuesEnum.SfxHudAlarmIncoming, MySmallShipConstants.WARNING_MISSILE_ALERT_INTERVAL), new MyHudTextWarning(MyTextsWrapperEnum.IncommingMissileAlarm), 1)\n                    }, canBeTurnedOff: false\n                ));\n                // health low\n                MyHudWarnings.Add(this, new MyHudWarningGroup(new List<MyHudWarning>()\n                    { \n                        new MyHudWarning(IsShipDamage1Detected, new MyHudSoundWarning(MySoundCuesEnum.SfxHudAlarmDamageA, MySmallShipConstants.WARNING_HEALTH_CONSTANT1), null, 5),\n                        new MyHudWarning(IsShipDamage2Detected, new MyHudSoundWarning(MySoundCuesEnum.SfxHudAlarmDamageB, MySmallShipConstants.WARNING_HEALTH_CONSTANT2), null, 4),\n                        new MyHudWarning(IsShipDamage3Detected, new MyHudSoundWarning(MySoundCuesEnum.SfxHudAlarmDamageC, MySmallShipConstants.WARNING_HEALTH_CONSTANT3), null, 3),\n                        new MyHudWarning(IsShipDamage4Detected, new MyHudSoundWarning(MySoundCuesEnum.SfxHudAlarmDamageD, MySmallShipConstants.WARNING_HEALTH_CONSTANT4), null, 2),\n                        new MyHudWarning(IsShipDamage5Detected, new MyHudSoundWarning(MySoundCuesEnum.SfxHudAlarmDamageE, MySmallShipConstants.WARNING_HEALTH_CONSTANT5), null, 1),\n                    }, canBeTurnedOff: false\n                ));\n\n                m_lowHealthAlertSounds.Add(MySoundCuesEnum.SfxHudAlarmDamageA);\n                m_lowHealthAlertSounds.Add(MySoundCuesEnum.SfxHudAlarmDamageB);\n                m_lowHealthAlertSounds.Add(MySoundCuesEnum.SfxHudAlarmDamageC);\n                m_lowHealthAlertSounds.Add(MySoundCuesEnum.SfxHudAlarmDamageD);\n                m_lowHealthAlertSounds.Add(MySoundCuesEnum.SfxHudAlarmDamageE);\n\n                // Solar wind warning\n                MyHudWarnings.Add(this, new MyHudWarningGroup(new List<MyHudWarning>()\n                    {\n                        new MyHudWarning(MySunWind.IsActiveForHudWarning, new MyHudSoundWarning(MySoundCuesEnum.HudSolarFlareWarning, MySmallShipConstants.WARNING_SOLAR_WIND_INTERVAL), new MyHudTextWarning(MyTextsWrapperEnum.NotificationSolarWindWarning, MyGuiManager.GetFontMinerWarsRed()), 0),\n                    }, canBeTurnedOff: false\n                ));\n\n                // Explanation for players that stay in critical state for 30 seconds\n                if (MyFakes.ENABLE_WARNING_EXPLANATION)\n                {\n                    MyHudWarnings.Add(this, new MyHudWarningGroup(new List<MyHudWarning>()\n                        {\n                            new MyHudWarning(DoesPlayerNeedExplanation, new MyHudSoundWarning(/*TODO:placeholder*/MySoundCuesEnum.SfxAlertVoc, MySmallShipConstants.WARNING_EXPLANATION_INTERVAL, MySmallShipConstants.WARNING_EXPLANATION_INITIAL_DELAY, false), null, 0),\n                        }, canBeTurnedOff: true\n                    ));\n                }\n            }\n\n            //OnInventoryContentChange(Inventory);\n        }\n\n        private static bool IsCloseToSectorBoundaries()\n        {\n            return MyGuiScreenGamePlay.Static.GetDistanceToSectorBoundaries() <= MyHudConstants.DISTANCE_FOR_SECTOR_BORDER_WARNING;\n        }\n\n        private void CheckPointInventory_OnInventoryContentChange(MyInventory sender)\n        {\n            LoadHackingTool();\n        }\n\n        private void LoadHackingTool()\n        {\n            int maxHackingLevel = 0;\n            foreach (MyInventoryItem inventoryItem in MySession.Static.Inventory.GetInventoryItems())\n            {\n                if (inventoryItem.ObjectBuilderType != MyMwcObjectBuilderTypeEnum.SmallShip_HackingTool)\n                {\n                    continue;\n                }\n                maxHackingLevel = Math.Max(maxHackingLevel, (int)((MyMwcObjectBuilder_SmallShip_HackingTool)inventoryItem.GetInventoryItemObjectBuilder(false)).HackingToolType);\n            }\n            if (HackingTool == null)\n            {\n                HackingTool = new MyHackingTool(this, maxHackingLevel);\n            }\n            else\n            {\n                HackingTool.HackingLevel = maxHackingLevel;\n            }\n        }\n\n        public void InitPhysics(float sizeMultiplier, MyMaterialType materialType)\n        {\n            //  Collision SPHERE - works best if miner ship is controled by human player (so we ignore high impulses after collision, good sliding along walls, etc)\n            MyModel model = MyModels.GetModelOnlyData(m_shipTypeProperties.Visual.ModelLod0Enum);\n            //InitSpherePhysics(objectBuilder is MyMwcObjectBuilder_SmallShip_Player ? MyMaterialType.PLAYERSHIP : m_shipTypeProperties.Visual.MaterialType, model, m_shipTypeProperties.Physics.Mass, 0, MyConstants.COLLISION_LAYER_ALL, RigidBodyFlag.RBF_DEFAULT);\n            InitBoxPhysics(materialType,\n                model.BoundingBox.GetCenter(),\n                sizeMultiplier * model.BoundingBoxSize,\n                GetPhysicsProperties().Mass,\n                m_angularDampingDefault,\n                MyConstants.COLLISION_LAYER_DEFAULT,\n                RigidBodyFlag.RBF_DEFAULT);\n\n            // Lets disable this because we have too many of strange bugs (shivering, inside collisions), maybe it is caused by this below\n            if (sizeMultiplier != 1 && this != MySession.PlayerShip)\n            {\n                Physics.RigidBody.InertiaTensor = MyPhysicsUtils.GetSphereInertiaTensor(model.BoundingBox.Size().Length() / 2, Physics.Mass);\n            } \n\n            //this.Physics.GroupMask = this.GroupMask;\n            this.Physics.Type = MyConstants.RIGIDBODY_TYPE_SHIP;\n            this.Physics.PlayCollisionCueEnabled = true;\n            //this.Physics.MaxLinearVelocity = GetEngineProperties().MaxSpeed * GetEngineProperties().AfterburnerSpeedMultiplier;\n            this.Physics.MaxAngularVelocity = GetPhysicsProperties().MaxAngularVelocity;\n            this.Physics.Enabled = true;\n            this.Physics.CollisionLayer = MyConstants.COLLISION_LAYER_SMALL_SHIP;\n        }\n\n        static void RemoveRedundantWeapons(MyMwcObjectBuilder_SmallShip shipBuilder, int maxWeapons)\n        {\n            int harvestersAndDrillCount = 0;\n            foreach (var weaponBuilder in shipBuilder.Weapons)\n            {\n                if (weaponBuilder.IsHarvester || weaponBuilder.IsDrill)\n                {\n                    harvestersAndDrillCount++;\n                }\n            }\n\n            int maxWeaponsWithHarvestersAndDrills = maxWeapons + harvestersAndDrillCount;\n\n            int indexToRemove = shipBuilder.Weapons.Count - 1;\n            while (shipBuilder.Weapons.Count > maxWeaponsWithHarvestersAndDrills)\n            {\n                var weapon = shipBuilder.Weapons[indexToRemove];\n                if (weapon.IsNormalWeapon)\n                {\n                    shipBuilder.Weapons.Remove(weapon);\n                }\n\n                indexToRemove--;\n            }\n        }\n\n        public bool IsShipDamage1Detected()\n        {\n            return HealthRatio <= 0.5f && HealthRatio > 0.4f;\n        }\n\n        public bool IsShipDamage2Detected()\n        {\n            return HealthRatio <= 0.4f && HealthRatio > 0.3f;\n        }\n\n        public bool IsShipDamage3Detected()\n        {\n            return HealthRatio <= 0.3f && HealthRatio > 0.2f;\n        }\n\n        public bool IsShipDamage4Detected()\n        {\n            return HealthRatio <= 0.2f && HealthRatio > 0.1f;\n        }\n\n        public bool IsShipDamage5Detected()\n        {\n            return HealthRatio <= 0.1f && HealthRatio > 0;\n        }\n\n        public bool DoesPlayerNeedExplanation()\n        {\n            return IsCriticalDamaged() || HasNoAmmoLevel() || HasCriticalFuelLevel() || HasCriticalOxygenLevel() || HasCriticalHealthLevel();\n        }\n\n        private void InitShipDetector()\n        {\n            //MyDetectingCriteria detectingCriteria = new MyDetectingCriteria();\n\n            //detectingCriteria.DetectingCriteria.Add(\n            //new MyDetectingCriterium(\n            //    MyDetectedEntityAction.TradeForFree,\n            //    new MyDetectingCondition<MyEntity>(\n            //    //x => (MyFactions.GetFactionsRelation(this.Faction, x.Faction) == MyFactionRelationEnum.Friend) && (x is MySmallShip || x is MyPrefabHangar || x is MyFoundationFactory) && ((IMyInventory)x).Inventory != null,\n            //        x => (MyFactions.GetFactionsRelation(this.Faction, x.Faction) == MyFactionRelationEnum.Friend) && (x is MySmallShip || x is MyPrefabHangar) && ((IMyInventory)x).Inventory != null,\n            //        MySmallShipConstants.DETECT_SHIP_RADIUS)));\n            //detectingCriteria.DetectingCriteria.Add(\n            //    new MyDetectingCriterium(\n            //        MyDetectedEntityAction.TradeForMoney,\n            //        new MyDetectingCondition<MyEntity>(\n            //            x => (MyFactions.GetFactionsRelation(this.Faction, x.Faction) == MyFactionRelationEnum.Neutral) && (x is MySmallShip || x is MyPrefabHangar) && !x.IsCripple() && ((IMyInventory)x).Inventory != null,\n            //            MySmallShipConstants.DETECT_SHIP_RADIUS)));\n            //detectingCriteria.DetectingCriteria.Add(\n            //    new MyDetectingCriterium(\n            //        MyDetectedEntityAction.Steal,\n            //        new MyDetectingCondition<MyEntity>(\n            //            x => (MyFactions.GetFactionsRelation(this.Faction, x.Faction) == MyFactionRelationEnum.Enemy || MyFactions.GetFactionsRelation(this.Faction, x.Faction) == MyFactionRelationEnum.Neutral) && x.IsCripple() && x is MySmallShip,\n            //            MySmallShipConstants.DETECT_SHIP_RADIUS)));\n            //detectingCriteria.DetectingCriteria.Add(\n            //    new MyDetectingCriterium(\n            //        MyDetectedEntityAction.Build,\n            //    //new MyDetectingCondition<MyFoundationFactory>(\n            //    //    x => true,\n            //        new MyDetectingCondition<MyPrefabContainer>(\n            //            x => (MyFactions.GetFactionsRelation(this.Faction, x.Faction) == MyFactionRelationEnum.Friend) && x.ContainsPrefab(PrefabTypesFlagEnum.FoundationFactory),\n            //            MySmallShipConstants.DETECT_FOUNDATION_FACTORY_RADIUS)));\n\n            //ShipDetector = new MyShipDetector(this, detectingCriteria);\n\n            List<IMyEntityDetectorCriterium> tradeCriterias = new List<IMyEntityDetectorCriterium>()\n                {\n                    new MyEntityDetectorCriterium<MyEntity>((int)MySmallShipInteractionActionEnum.TradeForFree, \n                        MySmallShipInteraction.CanTradeForFree, true, this),                    \n                    new MyEntityDetectorCriterium<MyEntity>((int)MySmallShipInteractionActionEnum.TradeForMoney, \n                        MySmallShipInteraction.CanTrade, true, this),\n                    new MyEntityDetectorCriterium<MySmallShip>((int)MySmallShipInteractionActionEnum.Loot, \n                        MySmallShipInteraction.CanLootShip, true, this),\n                    new MyEntityDetectorCriterium<MyCargoBox>((int)MySmallShipInteractionActionEnum.Examine,\n                        MySmallShipInteraction.CanExamineCargoBox, true, this),\n                    new MyEntityDetectorCriterium<MyCargoBox>((int)MySmallShipInteractionActionEnum.ExamineEmpty,\n                        MySmallShipInteraction.CanExamineEmptyCargoBox, true, this),\n                    new MyEntityDetectorCriterium<MyEntity>((int)MySmallShipInteractionActionEnum.Blocked, \n                        MySmallShipInteraction.IsBlocked, true, this),\n                };\n            List<IMyEntityDetectorCriterium> buildCriterias = new List<IMyEntityDetectorCriterium>()\n                {\n                    new MyEntityDetectorCriterium<MyPrefabContainer>((int) MySmallShipInteractionActionEnum.Build,\n                        MySmallShipInteraction.CanBuild, this)\n                };\n            List<IMyEntityDetectorCriterium> motherShipCriterias = new List<IMyEntityDetectorCriterium>()\n                {\n                    new MyEntityDetectorCriterium<MyPrefabHangar>(1, MySmallShipInteraction.IsNearMothership, true, this)\n                };\n            List<IMyEntityDetectorCriterium> useableEntityCriterias = new List<IMyEntityDetectorCriterium>()\n                {\n                    new MyEntityDetectorCriterium<MyEntity>((int)MySmallShipInteractionActionEnum.Use, \n                        MySmallShipInteraction.CanUse, true, this),\n                    new MyEntityDetectorCriterium<MyEntity>((int)MySmallShipInteractionActionEnum.Hack, \n                        MySmallShipInteraction.CanHack, true, this),\n                };\n\n            TradeDetector = new MyEntityDetector();\n            TradeDetector.Init(null, new MyMwcObjectBuilder_EntityDetector(new Vector3(MySmallShipConstants.DETECT_SHIP_RADIUS * 2f, 0f, 0f), MyMwcObjectBuilder_EntityDetector_TypesEnum.Sphere), this, WorldMatrix, tradeCriterias);\n            TradeDetector.OnNearestEntityChange += OnNearestDetectedEntityChanged;\n            TradeDetector.OnNearestEntityCriteriasChange += OnNearestDetectedEntityCriteriasChanged;\n\n            BuildDetector = new MyEntityDetector();\n            BuildDetector.Init(null, new MyMwcObjectBuilder_EntityDetector(new Vector3(MySmallShipConstants.DETECT_FOUNDATION_FACTORY_RADIUS * 2f, 0f, 0f), MyMwcObjectBuilder_EntityDetector_TypesEnum.Sphere), this, WorldMatrix, buildCriterias);\n            BuildDetector.OnNearestEntityChange += OnNearestDetectedEntityChanged;\n            BuildDetector.OnNearestEntityCriteriasChange += OnNearestDetectedEntityCriteriasChanged;\n\n            MotherShipDetector = new MyEntityDetector();\n            MotherShipDetector.Init(null, new MyMwcObjectBuilder_EntityDetector(new Vector3(MySmallShipConstants.DETECT_SHIP_RADIUS * 2f, 0f, 0f), MyMwcObjectBuilder_EntityDetector_TypesEnum.Sphere), this, WorldMatrix, motherShipCriterias);\n            MotherShipDetector.OnNearestEntityChange += OnNearestDetectedEntityChanged;\n            MotherShipDetector.OnNearestEntityCriteriasChange += OnNearestDetectedEntityCriteriasChanged;\n\n            UseableEntityDetector = new MyEntityDetector();\n            UseableEntityDetector.Init(null, new MyMwcObjectBuilder_EntityDetector(new Vector3(MySmallShipConstants.DETECT_SHIP_RADIUS * 2f, 0f, 0f), MyMwcObjectBuilder_EntityDetector_TypesEnum.Sphere), this, WorldMatrix, useableEntityCriterias);\n            UseableEntityDetector.OnNearestEntityChange += OnNearestDetectedEntityChanged;\n            UseableEntityDetector.OnNearestEntityCriteriasChange += OnNearestDetectedEntityCriteriasChanged;\n        }\n\n        private void StopShipDetectors()\n        {\n            TradeDetector.TrySetStatus(false);\n            BuildDetector.TrySetStatus(false);\n            UseableEntityDetector.TrySetStatus(false);\n            MotherShipDetector.TrySetStatus(false);\n        }\n\n        protected void OnNearestDetectedEntityChanged(MyEntityDetector sender, MyEntity oldEntity, MyEntity newEntity)\n        {\n            UpdateNotification(sender, newEntity);\n        }\n\n        protected void OnNearestDetectedEntityCriteriasChanged(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            UpdateNotification(sender, entity);\n        }\n\n        private void UpdateNotification(MyEntityDetector entityDetector, MyEntity entity)\n        {\n            if (entityDetector == TradeDetector)\n            {\n                UpdateNotification(entityDetector, ref m_tradeNotification, entity);\n            }\n            else if (entityDetector == BuildDetector)\n            {\n                UpdateNotification(entityDetector, ref m_buildNotification, entity);\n            }\n            else if (entityDetector == MotherShipDetector)\n            {\n                m_nearMotherShipContainer = entity as MyPrefabHangar;\n            }\n            else if (entityDetector == UseableEntityDetector)\n            {\n                UpdateNotification(entityDetector, ref m_securityControlHUBNotification, entity);\n            }\n            else\n            {\n                throw new MyMwcExceptionApplicationShouldNotGetHere();\n            }\n        }\n\n        private void UpdateNotification(MyEntityDetector entityDetector, ref MyHudNotification.MyNotification notification, MyEntity newEntity)\n        {\n            if (notification != null)\n            {\n                notification.Disappear();\n                notification = null;\n            }\n            if (newEntity != null)\n            {\n                MySmallShipInteractionActionEnum action = (MySmallShipInteractionActionEnum)entityDetector.GetNearestEntityCriterias();\n                notification = DisplayDetectedEntityActionNotification(newEntity, action);\n            }\n        }\n\n        MyModelShipSubOject AddSubObject(List<MyModelShipSubOject> subObjects, MyModelSubObject modelSubObject, bool createLight)\n        {\n            MyModelShipSubOject subObject = m_modelSubObjectsPool.Allocate();\n            subObject.ModelSubObject = modelSubObject;\n\n            if (subObjects != null)\n                subObjects.Add(subObject);\n\n            if (createLight)\n            {\n                subObject.Light = MyLights.AddLight();\n                if (subObject.Light != null)\n                {\n                    subObject.Light.Start(MyLight.LightTypeEnum.PointLight, Color.White.ToVector4(), 0.8f, 1);\n                    subObject.Light.LightOn = false;\n                    subObject.Light.LightOwner = MyLight.LightOwnerEnum.SmallShip;\n                }\n            }\n\n            m_subObjects.Add(subObject);\n\n            return subObject;\n        }\n\n        void GetModelShipSubObject(ref MyModelShipSubOject subObject, MyModelsEnum modelEnum, string subObjectName, bool createLight)\n        {\n            MyModelSubObject modelSubObject = MyModelSubObjects.GetModelSubObject(modelEnum, subObjectName);\n            if (modelSubObject != null)\n            {\n                subObject = AddSubObject(null, modelSubObject, createLight);\n            }\n        }\n\n        void GetModelShipSubObject(List<MyModelShipSubOject> subObjects, MyModelsEnum modelEnum, string subObjectName, bool createLight)\n        {\n            MyModelSubObject modelSubObject = MyModelSubObjects.GetModelSubObject(modelEnum, subObjectName);\n            if (modelSubObject != null)\n            {\n                AddSubObject(subObjects, modelSubObject, createLight);\n            }\n            else\n            {\n                for (int i = 0; i < MAX_SAME_SUBOBJECTS; i++)\n                {\n                    modelSubObject = MyModelSubObjects.GetModelSubObject(modelEnum, subObjectName + \"_\" + (i + 1).ToString(\"##00\"));\n                    if (modelSubObject == null)\n                        continue;\n\n                    AddSubObject(subObjects, modelSubObject, createLight);\n                }\n            }\n        }\n\n        void UpdateLight()\n        {\n            float distanceSq = Vector3.DistanceSquared(MyCamera.Position, WorldMatrix.Translation);\n            //float maxTurnOnDistance = 15000;\n            //float maxKeepedDistance = 100;\n\n            float lightActivationDistanceSq = 4000 * 4000;\n\n            if (distanceSq > lightActivationDistanceSq)\n            {\n                return;\n            }\n\n            MyPerformanceCounter.PerCameraDraw.Increment(\"Small ships with updated lights\");\n\n            if (/*distance < maxTurnOnDistance && */m_light == null)\n            {\n                m_light = MyLights.AddLight();\n                if (m_light != null)\n                {\n                    m_light.Start(MyLight.LightTypeEnum.PointLight | MyLight.LightTypeEnum.Spotlight, 1.5f);\n                    m_light.ShadowDistanceSquared = m_reflectorShadowDistance * m_reflectorShadowDistance;\n                    m_light.ReflectorFalloff = MyMinerShipConstants.MINER_SHIP_NEAR_REFLECTOR_FALLOFF;\n                    m_light.LightOwner = MyLight.LightOwnerEnum.SmallShip;\n                    m_light.UseInForwardRender = true;\n\n                    if (MyFakes.SMALL_SHIPS_GLARE)\n                    {\n                        m_light.GlareOn = true;\n                        m_light.Glare.Type = MyLightGlare.GlareTypeEnum.Normal;\n                        m_light.Glare.QuerySize = 2.5f;\n                    }\n\n                    switch (m_reflectorType)\n                    {\n                        case ReflectorTypeEnum.Single:\n                            m_light.ReflectorTexture = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\Lights\\\\reflector\");\n                            break;\n\n                        case ReflectorTypeEnum.Dual:\n                            m_light.ReflectorTexture = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\Lights\\\\dual_reflector\");\n                            break;\n\n                        default:\n                            {\n                                throw new MyMwcExceptionApplicationShouldNotGetHere();\n                            }\n                    }\n                }\n            }      /*\n            if (distance >= maxTurnOnDistance && m_light != null)\n            {\n                MyLights.RemoveLight(m_light);\n                m_light = null;\n            }        */\n\n            if (m_light == null) return;\n\n            if (Fuel <= 0 || !Config.Engine.On)\n            {\n                m_light.ReflectorOn = false;\n                m_light.LightOn = false;\n                return;\n            }\n\n            var isCameraInsideMinerShip = IsCameraInsideMinerShip();\n\n            var positionLightTransformed = GetLightPosition(isCameraInsideMinerShip);\n\n            //  Update light position\n            m_light.SetPosition(positionLightTransformed);\n\n\n            if ((MyGuiScreenGamePlay.Static.ControlledEntity != this) && (MyFactions.GetFactionsRelation(this.Faction, MySession.PlayerShip.Faction) == MyFactionRelationEnum.Friend))\n            {\n                m_light.ShadowDistance = MyLightsConstants.MAX_SPOTLIGHT_SHADOW_RANGE;\n            }\n            else\n            {\n                if (MyRender.DrawPlayerLightShadow || MySession.Is25DSector)\n                {\n                    m_light.ShadowDistance = MyLightsConstants.MAX_SPOTLIGHT_SHADOW_RANGE;\n                }\n                else\n                    m_light.ShadowDistance = 0;\n            }\n\n\n            //  Get interpolator between reflector influence and muzzle flash influence. It is because\n            //  this one light display reflector or muzzle, so we need to interpolate.\n            int muzzleFlashDeltaTime = MyMinerGame.TotalGamePlayTimeInMilliseconds - Weapons.MuzzleFlashLastTime;\n            float interpolator = 1.0f - (float)Math.Pow(MathHelper.Clamp(((float)muzzleFlashDeltaTime /\n                                                                          (float)MyMachineGunConstants.MUZZLE_FLASH_MACHINE_GUN_LIFESPAN), 0, 1), 3);\n\n            var range = MathHelper.Lerp(MyMinerShipConstants.MINER_SHIP_NEAR_LIGHT_RANGE, MyMinerShipConstants.MINER_SHIP_MUZZLE_FLASH_LIGHT_RANGE, interpolator);\n            range = MathHelper.Clamp(range * MyMinerShipConstants.MINER_SHIP_PLAYER_NEAR_LIGHT_RANGE_MULTIPLIER * LightRangeMultiplier, 0.1f, MyLightsConstants.MAX_POINTLIGHT_RADIUS);\n            if (!isCameraInsideMinerShip)\n            {\n                range *= MyMinerShipConstants.MINER_SHIP_LIGHT_RADIUS_OUTSIDE_MODIFIER;\n            }\n\n            m_light.Range = range;\n            \n            //  Reflector color and range. See that color depends on reflector's level.\n            //Vector4 colorReflector = MyMinerShipConstants.MINER_SHIP_REFLECTOR_LIGHT_COLOR * m_reflectorLevel;\n            Vector4 colorReflector = GetReflectorProperties().CurrentReflectorLightColor * Config.ReflectorLight.Level;\n\n            //  Color and range will be interpolated by current muzzle flash value and by state of reflector\n            m_light.Color = Vector4.Lerp(colorReflector, MyMinerShipConstants.MINER_SHIP_MUZZLE_FLASH_LIGHT_COLOR, interpolator);\n            m_light.SpecularColor = new Vector3(colorReflector.X, colorReflector.Y, colorReflector.Z);\n            m_light.Falloff = MyMinerShipConstants.MINER_SHIP_LIGHT_FALLOFF;\n\n            //more distant the ship, smaller light is.\n            //float smallerSpeed = 0.1f; //10% on 100m\n            /*float ratio = 1.0f;\n\n            if (distance > maxKeepedDistance)\n                ratio = 0.7f / (((distance - maxKeepedDistance) / 100.0f) + 1);\n            m_light.Range *= ratio;\n              */\n            m_light.Intensity = MyMinerShipConstants.MINER_SHIP_NEAR_LIGHT_INTENSITY * System.Math.Max(Config.ReflectorLight.Level, interpolator) * LightIntensityMultiplier;\n            /*if (this != MySession.PlayerShip)\n            {\n                m_light.Intensity *= 1.0f;\n            }\n              */\n\n            m_light.ReflectorIntensity = MyMinerShipConstants.MINER_SHIP_NEAR_REFLECTOR_INTENSITY * ReflectorIntensityMultiplier;\n\n            // Reflector properties\n            m_light.ReflectorOn = Config.ReflectorLight.Level > 0.0f;\n            if (m_light.ReflectorOn)\n            {\n                m_light.ReflectorUp = this.WorldMatrix.Up;\n                m_light.ReflectorDirection = this.WorldMatrix.Forward;\n                m_light.ReflectorColor = Config.ReflectorLight.Level * GetReflectorProperties().CurrentReflectorLightColor;\n                m_light.UpdateReflectorRangeAndAngle(GetReflectorProperties().CurrentReflectorConeAngleForward, GetReflectorProperties().CurrentReflectorRangeForward);\n            }\n\n            m_light.LightOn = !IsDisabledByEMP();\n        }\n\n        private Vector3 GetLightPosition(bool isCameraInsideThisShip)\n        {\n            if (m_subObjectLight == null)\n            {\n                // fallback to some value at least\n                return this.GetPosition();\n            }\n\n            Matrix worldMatrix = this.WorldMatrix;\n            if (isCameraInsideThisShip)\n            {\n                return MyUtils.GetTransform(m_subObjectPlayerHeadForCockpitInteriorTranslation.ModelSubObject.Position, ref worldMatrix);\n            }\n            else\n            {\n                LightOffsetZ = -5;\n                LightOffsetY = -3;\n                Vector3 offset = new Vector3(LightOffsetX, LightOffsetY, LightOffsetZ); // For debug testing\n                return MyUtils.GetTransform(m_subObjectLight.ModelSubObject.Position + offset, ref worldMatrix);\n            }\n        }\n\n        public bool IsCameraThirdPerson()\n        {\n            return ((MyGuiScreenGamePlay.Static.CameraAttachedTo == MyCameraAttachedToEnum.PlayerMinerShip_ThirdPersonDynamic) && (this.Equals(MySession.PlayerShip)));\n        }\n\n        public bool IsCameraInsideMinerShip()\n        {\n            return ((MyGuiScreenGamePlay.Static.CameraAttachedTo == MyCameraAttachedToEnum.PlayerMinerShip) && (this.Equals(MySession.PlayerShip)));\n        }\n\n        //  Draw all engine thrusts as billboards and polylines.\n        //  IMPORTANT: In the method I use a lot of 'ref' for performance reasons, so please be careful.\n        void DrawEngineThrusts()\n        {\n            //  Calculate velocity, speed and local velocity (in model's coordinate space) based on position change from previous Update\n            if (Physics == null)\n                return;\n            float actualSpeed = Physics.Speed;\n            Matrix worldInv = this.GetWorldMatrixInverted();\n            Vector3 actualVelocityLocal = MyUtils.GetVector3Scaled(MyUtils.GetTransformNormal(Physics.LinearVelocity, ref worldInv), actualSpeed);\n            Vector3 actualAcceleration = MyUtils.GetTransformNormal(Physics.LinearAcceleration, ref worldInv);\n\n            //  Calculate strengths for drawing engine thrusts\n            float thrustStrengthBackward = CalculateEngineThrustStrength(actualAcceleration.Z, actualVelocityLocal.Z);\n            float thrustStrengthForward = CalculateEngineThrustStrength(-actualAcceleration.Z, -actualVelocityLocal.Z);\n            float thrustStrengthStrafeLeft = CalculateEngineThrustStrength(-actualAcceleration.X, -actualVelocityLocal.X);\n            float thrustStrengthStrafeRight = CalculateEngineThrustStrength(actualAcceleration.X, actualVelocityLocal.X);\n            float thrustStrengthUp = CalculateEngineThrustStrength(actualAcceleration.Y, actualVelocityLocal.Y);\n            float thrustStrengthDown = CalculateEngineThrustStrength(-actualAcceleration.Y, -actualVelocityLocal.Y);\n\n            DrawEngineThrusts(m_subObjectEngineThrustBackwardSmallLeftside, thrustStrengthBackward);\n            DrawEngineThrusts(m_subObjectEngineThrustBackwardSmallRightside, thrustStrengthBackward);\n            DrawEngineThrusts(m_subObjectEngineThrustBackwardLeftside, thrustStrengthBackward);\n            DrawEngineThrusts(m_subObjectEngineThrustBackwardRightside, thrustStrengthBackward);\n            DrawEngineThrusts(m_subObjectEngineThrustBackward2Leftside, thrustStrengthBackward);\n            DrawEngineThrusts(m_subObjectEngineThrustBackward2Rightside, thrustStrengthBackward);\n            DrawEngineThrusts(m_subObjectEngineThrustBackward2Middle, thrustStrengthBackward);\n            DrawEngineThrusts(m_subObjectEngineThrustForwardLeftside, thrustStrengthForward);\n            DrawEngineThrusts(m_subObjectEngineThrustForwardRightside, thrustStrengthForward);\n            DrawEngineThrusts(m_subObjectEngineThrustStrafeLeft, thrustStrengthStrafeLeft);\n            DrawEngineThrusts(m_subObjectEngineThrustStrafeRight, thrustStrengthStrafeRight);\n            DrawEngineThrusts(m_subObjectEngineThrustUpLeftside, thrustStrengthUp);\n            DrawEngineThrusts(m_subObjectEngineThrustUpRightside, thrustStrengthUp);\n            DrawEngineThrusts(m_subObjectEngineThrustDownLeftside, thrustStrengthDown);\n            DrawEngineThrusts(m_subObjectEngineThrustDownRightside, thrustStrengthDown);\n\n        }\n\n        //  Calculate strength of engine thrust\n        float CalculateEngineThrustStrength(float actualAccelerationLocal, float actualVelocityLocal)\n        {\n            const float MIN_VEL = 0.1f;\n            const float MAX_VEL = 10.0f;\n\n            float result = 0;\n\n            //  Only if there is acceleration\n            if (actualAccelerationLocal < -0.001f)\n            {\n                //  If velocity in direction we are interseted is not zero\n                if (actualVelocityLocal <= 0)\n                {\n                    result = -actualVelocityLocal / (MAX_VEL - MIN_VEL);\n                }\n                else\n                {\n                    //  This will be thrust that stops the ship from oposite movement. We decrease it because it can't be too long.\n                    result = actualVelocityLocal / (MAX_VEL - MIN_VEL) * 0.25f;\n                }\n            }\n\n            return MathHelper.Clamp(result, 0, 1);\n        }\n\n        //  Draws particle in place of engine thrust. Size/length is determined by 'strength', where 0 means no thrust is drawn, 1 means full size/length thrust particles are drawn.\n        //  Input position must be in world space.\n        void DrawEngineThrusts(List<MyModelShipSubOject> subObjects, float strength)\n        {\n            var activeEngineProps = GetEngineProperties();\n            Vector4 color = activeEngineProps.ThrustsColor;\n            color.W = 0.75f;\n\n            foreach (MyModelShipSubOject subObject in subObjects)\n            {\n                if (subObject.ModelSubObject == null) continue;\n                if (subObject.ModelSubObject.Enabled == false) continue;\n\n                Matrix worldMatrix = this.WorldMatrix;\n                Vector3 position = MyUtils.GetTransform(subObject.ModelSubObject.Position, ref worldMatrix);\n                Vector3 forward = MyUtils.GetTransformNormalNormalized(subObject.ModelSubObject.ForwardVector.Value, ref worldMatrix);\n\n                float thrustRadius = 1.0f;\n                if (subObject.ModelSubObject.Scale != null)\n                {\n                    thrustRadius = Config.Engine.Level * MyMwcUtils.GetRandomFloat(subObject.ModelSubObject.Scale.Value * 0.9f, subObject.ModelSubObject.Scale.Value);\n                }\n\n                float thrustLength = 0;\n\n                if (strength > 0 && thrustRadius > 0)\n                {\n                    float angle = 1 - Math.Abs(Vector3.Dot(MyMwcUtils.Normalize(MyCamera.Position - position), forward));\n                    float alphaCone = (1 - (float)Math.Pow(1 - angle, 30)) * 0.5f;\n\n                    thrustLength = strength * 5 * MyMwcUtils.GetRandomFloat(0.6f, 1.0f);\n                    float thrustThickness = MyMwcUtils.GetRandomFloat(thrustRadius * 0.90f, thrustRadius);\n\n                    //  We move polyline particle backward, because we are stretching ball texture and it doesn't look good if stretched. This will hide it.\n                    MyTransparentGeometry.AddLineBillboard(MyTransparentMaterialEnum.EngineThrustMiddle, color * alphaCone, position - forward * thrustLength * 0.25f,\n                                                 forward, thrustLength, thrustThickness);\n                }\n\n                if (thrustRadius > 0)\n                    MyTransparentGeometry.AddPointBillboard(MyTransparentMaterialEnum.EngineThrustMiddle, color, position, thrustRadius, 0);\n\n                if (subObject.Light != null)\n                {\n                    if (strength > 0 && thrustRadius > 0)\n                    {\n                        subObject.Light.LightOn = true;\n                        subObject.Light.Intensity = 1.3f + thrustLength * 2;\n                        subObject.Light.Color = color;\n                        subObject.Light.Range = thrustRadius * 12 + thrustLength / 10;\n                        subObject.Light.SetPosition(subObject.ModelSubObject.ForwardVector.Value + position);\n                        subObject.Light.LightType = MinerWars.AppCode.Game.Lights.MyLight.LightTypeEnum.PointLight;\n                    }\n                    else\n                    {\n                        subObject.Light.LightOn = false;\n                        subObject.Light.Intensity = 0;\n                    }\n                }\n            }\n        }\n\n        void DrawReflectors()\n        {\n            DrawReflector(m_subObjectReflectorLeft);\n            DrawReflector(m_subObjectReflectorRight);\n        }\n\n        void DrawReflector(List<MyModelShipSubOject> subObjects)\n        {\n            foreach (MyModelShipSubOject subObject in subObjects)\n            {\n\n                Matrix worldMatrix = this.WorldMatrix;\n                Vector3 position = MyUtils.GetTransform(subObject.ModelSubObject.Position, ref worldMatrix);\n                Vector3 forwardVector = MyUtils.GetTransformNormal(subObject.ModelSubObject.ForwardVector.Value, ref worldMatrix);\n                Vector3 leftVector = MyUtils.GetTransformNormal(subObject.ModelSubObject.LeftVector.Value, ref worldMatrix);\n                Vector3 upVector = MyUtils.GetTransformNormal(subObject.ModelSubObject.UpVector.Value, ref worldMatrix);\n\n                float reflectorLength = m_reflectorProperies.CurrentBillboardLength / 2.0f;//40;\n                float reflectorThickness = m_reflectorProperies.CurrentBillboardThickness / 2.0f;//6.0f;\n                float reflectorRadiusForAdditive = 1;//0.65f;\n                reflectorRadiusForAdditive = subObject.ModelSubObject.Scale.Value;\n\n                Vector3 color = Vector3.One;\n\n                var dot = Vector3.Dot(MyMwcUtils.Normalize(MyCamera.Position - position), forwardVector);\n                float angle = 1 - Math.Abs(dot);\n                float alphaGlareAlphaBlended = (float)Math.Pow(1 - angle, 2);\n                float alphaGlareAdditive = (float)Math.Pow(1 - angle, 2);\n                float alphaCone = (1 - (float)Math.Pow(1 - angle, 30)) * 0.25f;\n\n                float reflectorRadiusForAlphaBlended = MathHelper.Lerp(0.5f, 2.5f, alphaGlareAlphaBlended); //3.5f;\n\n                //  Multiply alpha by reflector level (and not the color), because if we multiply the color and let alpha unchanged, reflector cune will be drawn as very dark cone, but still visible\n                var reflectorLevel = Config.ReflectorLight.Level;\n\n                if (IsDisabledByEMP())\n                {\n                    reflectorLevel = 0;\n                }\n\n                alphaCone *= reflectorLevel;\n                alphaGlareAlphaBlended *= reflectorLevel * 0.3f;\n                alphaGlareAdditive *= reflectorLevel * 0.8f;\n\n                if (reflectorLength > 0 && reflectorThickness > 0)\n                {\n                    MyTransparentGeometry.AddLineBillboard(MyTransparentMaterialEnum.ReflectorCone, new Vector4(color, 1.0f) * alphaCone, position - forwardVector * 1.5f,\n                                                 forwardVector, reflectorLength, reflectorThickness);\n                }\n                MyTransparentGeometry.AddPointBillboard(MyTransparentMaterialEnum.ReflectorGlareAlphaBlended, new Vector4(color, 1.0f) * alphaGlareAlphaBlended,\n                                              position + forwardVector * 0.7f, reflectorRadiusForAlphaBlended, 0);\n                if (dot > 0)\n                {\n                    MyTransparentGeometry.AddBillboardOriented(MyTransparentMaterialEnum.ReflectorGlareAdditive, new Vector4(color, 1f) * alphaGlareAdditive,\n                                                     position - forwardVector * 0.38f, leftVector, upVector, reflectorRadiusForAdditive);\n                }\n\n                //MyTransparentGeometry.AddPointBillboard(MyTransparentMaterialEnum.ReflectorGlareAlphaBlended, new Vector4(color, 1.0f) * alphaGlareAlphaBlended,\n                //                              position + forwardVector * 0.7f, reflectorRadiusForAlphaBlended, 0);\n                //MyTransparentGeometry.AddBillboardOriented(MyTransparentMaterialEnum.ReflectorGlareAdditive, new Vector4(color, 0.65f) * alphaGlareAdditive,\n                //                                 position - forwardVector * 0.4f, leftVector, upVector, reflectorRadiusForAdditive);\n\n            }\n        }\n\n        public MyCockpit GetShipCockpit()\n        {\n            if (m_cockpit == null)\n            {\n                m_cockpit = new MyCockpit();\n                m_cockpit.Init(null, CockpitInteriorModelEnum, null, this, null, null);\n            }\n            return m_cockpit;\n        }\n\n        //  Calculates intersection of line with any triangleVertexes in this model instance. Closest intersection and intersected triangleVertexes will be returned.\n\n        //  Lazy-load for cockpit glass, because it's needed only for ship controlled by a player\n        public MyCockpitGlassEntity GetShipCockpitGlass()\n        {\n            if (m_glassIdealPhysObject == null)\n            {\n                m_glassIdealPhysObject = new MyCockpitGlassEntity();\n                m_glassIdealPhysObject.Init(null, CockpitGlassModelEnum, null, this, null, null);\n            }\n            return m_glassIdealPhysObject;\n        }\n\n        internal void AcquireTarget()\n        {\n            //  Release dead targets\n            if (TargetEntity != null)\n            {\n                if (TargetEntity.IsDead())\n                {\n                    TargetEntity = null;\n                }\n            }\n\n            MyLine line;\n            MyEntity shootingEntity = this;\n            MyIntersectionResultLineBoundingSphere? result;\n\n            if (this == MySession.PlayerShip && MyGuiScreenGamePlay.Static.CameraAttachedTo == MyCameraAttachedToEnum.PlayerMinerShip_ThirdPersonDynamic)\n            {\n                // Handle targeting for players in third person camera mode\n                Vector3 toVector = MyThirdPersonSpectator.GetCrosshair() - MyThirdPersonSpectator.Position;\n                if (toVector == Vector3.Zero)\n                {\n                    return;\n                }\n                toVector.Normalize();\n                line = new MyLine(MyThirdPersonSpectator.Position, MyThirdPersonSpectator.Position + toVector * 10000, true);\n            }\n            else if (MyGuiScreenGamePlay.Static.CameraAttachedTo == MyCameraAttachedToEnum.LargeWeapon)\n            {\n                line = MyGuiScreenGamePlay.Static.ControlledLargeWeapon.GetLine();\n                shootingEntity = MyGuiScreenGamePlay.Static.ControlledLargeWeapon;\n            }\n            else\n            {\n                line = new MyLine(this.GetPosition(), this.GetPosition() + WorldMatrix.Forward * 10000, true);\n            }\n            result = MyEntities.GetIntersectionWithLineAndBoundingSphere(ref line, MyGuiScreenGamePlay.Static.ControlledLargeWeapon, null, MySmallShipConstants.LOCK_TARGET_OVERLAP, MyMissile.CanBeTargetedPredicate, true);\n\n            if (result.HasValue && !result.Value.PhysObject.IsDead())\n            {\n                MyEntity target = result.Value.PhysObject;\n\n                bool canSeeTest = false;\n                if ((shootingEntity.GetPosition() - target.GetPosition()).LengthSquared() > MyMwcMathConstants.EPSILON * 100.0f)\n                {\n                    MyLine canSeeLine = new MyLine(shootingEntity.GetPosition(), target.GetPosition(), true);\n                    canSeeTest = !MyEntities.GetIntersectionWithLine(ref canSeeLine, shootingEntity, target, ignoreChilds: true).HasValue;\n                }\n\n                if (canSeeTest && target != TargetEntity && this != target && MyFactions.GetFactionsRelation(this, target) == MyFactionRelationEnum.Enemy)\n                {\n                    int lockTime = MySmallShipConstants.LOCK_TARGET_CHECK_TIME;     // add one check period (curently acquired target)\n                    foreach (var historyTarget in m_targetEntityHistory)\n                    {\n                        lockTime += MySmallShipConstants.LOCK_TARGET_CHECK_TIME;\n                        if (historyTarget != target)\n                        {\n                            m_targetEntityHistory.Clear();\n                            m_targetEntityHistory.Add(target);  // start locking new target\n                            return;\n                        }\n\n                        // succesfull target lock\n                        if (lockTime >= MySmallShipConstants.LOCK_TARGET_TIME)\n                        {\n                            TargetEntity = target;\n\n                            if (this == MySession.PlayerShip && MyGuiScreenGamePlay.Static.IsGameActive())\n                                MyAudio.AddCue2D(MySoundCuesEnum.WepMissileLock);\n                            return;\n                        }\n                    }\n\n                    // continue locking same target\n                    m_targetEntityHistory.Add(target);\n                }\n            }\n            else\n            {\n                m_targetEntityHistory.Clear();\n            }\n        }\n\n        private void OnArmorChanged()\n        {\n            m_armorProperties = m_armor != null ? MySmallShipArmorTypeConstants.GetProperties(m_armor.ArmorType) : (MySmallShipArmorTypeProperties?)null;\n            var armorColor = m_armorProperties.HasValue ? m_armorProperties.Value.DiffuseColor : Vector3.One;\n            if (m_modelLod0 != null)\n            {\n                foreach (var mesh in m_modelLod0.GetMeshList())\n                {\n                    //We will make armor visualisation better later\n                    //mesh.GetMaterial().DiffuseColor = armorColor;\n                }\n            }\n        }\n\n        protected override void OnInventoryContentChange(MyInventory sender)\n        {\n            Inventory.OnInventoryContentChange -= OnInventoryContentChange;\n            base.OnInventoryContentChange(sender);\n\n            // we must play new sound for new engine type, so we must stop old sound cues\n            if (m_engineChanged)\n            {\n                StopEngineSounds(SharpDX.XACT3.StopFlags.Release);\n                if (MySession.PlayerShip == this)\n                {\n                    SetEngineSound(Config.Engine.On);\n                }\n                m_engineChanged = false;\n            }\n\n            //UpdateWeight();\n            UpdateMaxFuel();\n            UpdateMaxOxygen();\n            UpdateRadarCapabilities();\n\n            if (Fuel > MaxFuel)\n            {\n                Fuel = MaxFuel;\n            }\n\n            if (Oxygen > MaxOxygen)\n            {\n                Oxygen = MaxOxygen;\n            }\n\n            m_hasRadarJammer = Inventory.Contains(MyMwcObjectBuilderTypeEnum.SmallShip_Tool, (int?)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.RADAR_JAMMER);\n            if (Inventory.Contains(MyMwcObjectBuilderTypeEnum.SmallShip_Tool, (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.NANO_REPAIR_TOOL))\n            {\n                if (m_nanoRepairTool == null)\n                {\n                    m_nanoRepairTool = new MyNanoRepairToolEntity(this);\n                }\n            }\n            else\n            {\n                m_nanoRepairTool = null;\n            }\n\n            if (MySession.PlayerShip == this)\n            {\n                // False ID's\n                FalseFactions = MyMwcObjectBuilder_FactionEnum.None;\n                m_helperInventoryItems.Clear();\n                Inventory.GetInventoryItems(ref m_helperInventoryItems, MyMwcObjectBuilderTypeEnum.FalseId, null);\n                foreach (MyInventoryItem falsefactionsInventoryItem in m_helperInventoryItems)\n                {\n                    FalseFactions |= ((MyMwcObjectBuilder_FalseId)falsefactionsInventoryItem.GetInventoryItemObjectBuilder(false)).Faction;\n                }\n\n                // if any blueprints was added to player ship's inventory, then we move them to checkpoint's inventory\n                // if any hackingtool was added to player ship's inventory, then we move them to checkpoint's inventory\n                m_helperInventoryItems.Clear();\n                Inventory.GetInventoryItems(ref m_helperInventoryItems, MyMwcObjectBuilderTypeEnum.Blueprint, null);\n                Inventory.GetInventoryItems(ref m_helperInventoryItems, MyMwcObjectBuilderTypeEnum.SmallShip_HackingTool, null);\n\n                foreach (MyInventoryItem itemToCheckpointInventory in m_helperInventoryItems)\n                {\n                    if (!MySession.Static.Inventory.Contains(itemToCheckpointInventory.GetInventoryItemObjectBuilder(false)))\n                    {\n                        MySession.Static.Inventory.AddInventoryItem(itemToCheckpointInventory);\n                    }\n                }\n                Inventory.RemoveInventoryItems(m_helperInventoryItems);\n            }\n            Inventory.OnInventoryContentChange += OnInventoryContentChange;\n        }\n\n        private void UpdateRadarCapabilities()\n        {\n            RadarCapabilities.Clear();\n            foreach (var item in Inventory.GetInventoryItems())\n            {\n                if (item.ObjectBuilderType == MyMwcObjectBuilderTypeEnum.SmallShip_Radar)\n                {\n                    RadarCapabilities.Add((MyMwcObjectBuilder_SmallShip_Radar_TypesEnum)item.ObjectBuilderId);\n                }\n            }\n        }\n\n        //private void UpdateWeight()\n        //{\n        //    var inventoryItems = Inventory.GetInventoryItems();\n        //    Weight = GetPhysicsProperties().Mass;\n\n        //    if (m_includeCargoWeight)\n        //    {\n        //        foreach (var inventoryItem in inventoryItems)\n        //        {\n        //            Weight += inventoryItem.Weight;\n        //        }\n\n        //        if (Engine != null)\n        //        {\n        //            var props = MyGameplayConstants.GetGameplayProperties(MyMwcObjectBuilderTypeEnum.SmallShip_Engine, (int)Engine.EngineType, Faction);\n        //            if (props != null)\n        //            {\n        //                Weight += props.WeightPerUnit;\n        //            }\n        //        }\n\n        //        if (Armor != null)\n        //        {\n        //            var props = MyGameplayConstants.GetGameplayProperties(MyMwcObjectBuilderTypeEnum.SmallShip_Armor, (int)Armor.ArmorType, Faction);\n        //            if (props != null)\n        //            {\n        //                Weight += props.WeightPerUnit;\n        //            }\n        //        }\n\n        //        if (Weapons != null)\n        //        {\n        //            foreach (var slot in Weapons.WeaponSlots)\n        //            {\n        //                if (slot.IsMounted())\n        //                {\n        //                    var weapon = slot.MountedWeapon;\n        //                    var props = MyGameplayConstants.GetGameplayProperties(MyMwcObjectBuilderTypeEnum.SmallShip_Weapon, (int)weapon.WeaponType, Faction);\n        //                    if (props != null)\n        //                    {\n        //                        Weight += props.WeightPerUnit;\n        //                    }\n        //                }\n        //            }\n        //        }\n        //    }\n\n        //    // Physics is null on Sector Server\n        //    if (Physics != null)\n        //    {\n        //        Physics.Mass = Weight;\n        //    }\n        //}\n\n        public void UpdateMaxFuel()\n        {\n            MaxFuel = m_shipTypeProperties.GamePlay.FuelCapacity + m_shipTypeProperties.GamePlay.ExtraFuelCapacity *\n                Inventory.GetInventoryItemsCount(MyMwcObjectBuilderTypeEnum.SmallShip_Tool, (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.EXTRA_FUEL_CONTAINER_DISABLED);\n        }\n\n        public void UpdateMaxOxygen()\n        {\n            MaxOxygen = m_shipTypeProperties.GamePlay.OxygenCapacity + m_shipTypeProperties.GamePlay.ExtraOxygenCapacity *\n                Inventory.GetInventoryItemsCount(MyMwcObjectBuilderTypeEnum.SmallShip_Tool, (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.EXTRA_OXYGEN_CONTAINER_DISABLED);\n        }\n\n\n        public MyPrefabHangar GetNearMotherShipContainer()\n        {\n            return m_nearMotherShipContainer;\n        }\n\n        ///// <summary>\n        ///// Try detect another entity in detecting radius, if founded then display notification about it\n        ///// </summary>\n        //private void DetectEntityToAction()\n        //{\n        //    //MyDetectedEntity oldNearestDetectedShip = ShipDetector.GetDetectedEntities().Find(x => x.Entity is MySmallShip);\n        //    MyDetectedEntity oldNearestDetectedEntity = ShipDetector.GetNearestDetectedEntity();\n\n        //    ShipDetector.Detect();\n        //    // if foundation factory detected\n        //    MyDetectedEntity detectedFoundationFactory = ShipDetector.GetDetectedEntities().Find(x => x.DetectedAction == MyDetectedEntityAction.Build);\n        //    if (detectedFoundationFactory != null)\n        //    {\n        //        if (m_buildNotification == null)\n        //        {\n        //            m_buildNotification = DisplayDetectedEntityActionNotification(detectedFoundationFactory.Entity, MyDetectedEntityAction.Build);\n        //        }\n        //    }\n        //    else\n        //    {\n        //        if (m_buildNotification != null)\n        //        {\n        //            m_buildNotification.Disapear();\n        //            m_buildNotification = null;\n        //        }\n        //    }\n\n        //    if (MyFakes.USE_LARGE_SHIP_HANGAR_DETECTION)\n        //    {\n        //        MyPrefabContainer nearMotherShipPrefabContainer = null;\n        //        MyDetectedEntity detectedHangar = ShipDetector.GetDetectedEntities().Find(x => x.Entity is MyPrefabHangar);\n        //        if (detectedHangar != null)\n        //        {\n        //            MyPrefabContainer prefabContainer = (detectedHangar.Entity as MyPrefabHangar).GetOwner();\n        //            if (prefabContainer.ContainsPrefab(PrefabTypesFlagEnum.LargeShip))\n        //            {\n        //                nearMotherShipPrefabContainer = prefabContainer;\n        //            }\n        //        }\n        //        if (nearMotherShipPrefabContainer != null)\n        //        {\n        //            if (MySession.PlayerShip != null && nearMotherShipPrefabContainer.Faction == MySession.PlayerShip.Faction)\n        //                m_nearMotherShipContainer = nearMotherShipPrefabContainer;\n        //            else\n        //                m_nearMotherShipContainer = null;\n        //        }\n        //        else\n        //            m_nearMotherShipContainer = null;\n\n        //        if (m_nearMotherShipContainer != null && MyGuiScreenGamePlay.Static.CanTravel)\n        //        {\n        //            if (m_travelNotification == null)\n        //                m_travelNotification = DisplayDetectedEntityActionNotification(detectedHangar.Entity, MyDetectedEntityAction.Travel);\n        //        }\n        //        else\n        //        {\n        //            if (m_travelNotification != null)\n        //            {\n        //                m_travelNotification.Disapear();\n        //                m_travelNotification = null;\n        //            }\n        //        }\n        //    }\n        //    else\n        //    {\n        //        MyDetectedEntity detectedLargeShip = ShipDetector.GetDetectedEntities().Find(x => x.Entity is MyPrefabBase);\n        //        if (detectedLargeShip != null)\n        //        {\n        //            var nearMotherShip = detectedLargeShip.Entity as MyPrefabLargeShip;\n        //            if (nearMotherShip != null && MySession.PlayerShip != null && nearMotherShip.Faction == MySession.PlayerShip.Faction)\n        //                m_nearMotherShipContainer = nearMotherShip.GetOwner();\n        //            else\n        //                m_nearMotherShipContainer = null;\n        //        }\n        //        else\n        //            m_nearMotherShipContainer = null;\n\n        //        if (m_nearMotherShipContainer != null && MyGuiScreenGamePlay.Static.CanTravel)\n        //        {\n        //            if (m_travelNotification == null)\n        //                m_travelNotification = DisplayDetectedEntityActionNotification(detectedLargeShip.Entity, MyDetectedEntityAction.Travel);\n        //        }\n        //        else\n        //        {\n        //            if (m_travelNotification != null)\n        //            {\n        //                m_travelNotification.Disapear();\n        //                m_travelNotification = null;\n        //            }\n        //        }\n        //    }\n\n        //    // if new entity to trade/free trade/loot detected\n        //    MyDetectedEntity newNearestDetectedEntity = ShipDetector.GetNearestDetectedEntity();\n        //    bool displayNotification = false;\n        //    bool disapearNotification = false;\n        //    if (newNearestDetectedEntity != null)\n        //{\n        //        if (oldNearestDetectedEntity != null && oldNearestDetectedEntity.Entity != newNearestDetectedEntity.Entity)\n        //    {\n        //            disapearNotification = true;\n        //            displayNotification = true;\n        //    }\n        //        else if (oldNearestDetectedEntity == null)\n        //        {\n        //            displayNotification = true;\n        //}\n        //    }\n        //    else if (oldNearestDetectedEntity != null)\n        //{\n        //        disapearNotification = true;\n        //    }\n\n        //    if (m_tradeNotification != null && disapearNotification)\n        //    {\n        //        m_tradeNotification.Disapear();\n        //        m_tradeNotification = null;\n        //    }\n        //    if (displayNotification)\n        //    {\n        //        if (newNearestDetectedEntity.Entity is MyPrefabContainer)\n        //        {\n        //            if (((MyPrefabContainer)newNearestDetectedEntity.Entity).ContainsPrefab(PrefabTypesFlagEnum.FoundationFactory) &&\n        //            !((MyPrefabContainer)newNearestDetectedEntity.Entity).ContainsPrefab(PrefabTypesFlagEnum.Hangar))\n        //            {\n        //                m_tradeNotification = DisplayDetectedEntityActionNotification(newNearestDetectedEntity.Entity, MyDetectedEntityAction.TradeForFree);\n        //    }\n        //}\n        //        else\n        //        {\n        //            m_tradeNotification = DisplayDetectedEntityActionNotification(newNearestDetectedEntity.Entity, newNearestDetectedEntity.DetectedAction);\n        //        }\n        //    }\n\n\n        //    //// if new ship to trade/free trade/loot detected\n        //    //MyDetectedEntity newNearestDetectedShip = ShipDetector.GetDetectedEntities().Find(x => x.Entity is MySmallShip);            \n        //    //if (oldNearestDetectedShip == null)\n        //    //{\n        //    //    if (newNearestDetectedShip != null)\n        //    //    {\n        //    //        m_tradeNotification = DisplayDetectedEntityActionNotification(newNearestDetectedShip);\n        //    //    }\n        //    //}\n        //    //else\n        //    //{\n        //    //    if (newNearestDetectedShip == null || newNearestDetectedShip.Entity != oldNearestDetectedShip.Entity)\n        //    //    {\n        //    //        m_tradeNotification.Disapear();\n        //    //    }\n        //    //    if (newNearestDetectedShip != null && newNearestDetectedShip.Entity != oldNearestDetectedShip.Entity)\n        //    //    {\n        //    //        m_tradeNotification = DisplayDetectedEntityActionNotification(newNearestDetectedShip);\n        //    //    }\n        //    //}\n        //}\n\n        public void ClearNotifications()\n        {\n            TradeDetector.Reset();\n            BuildDetector.Reset();\n            MotherShipDetector.Reset();\n            UseableEntityDetector.Reset();\n            //SecurityControlHUBDetector.Reset();\n\n            //if (m_tradeNotification != null) m_tradeNotification.Disapear();\n            //if (m_buildNotification != null) m_buildNotification.Disapear();\n            //if (m_travelNotification != null) m_travelNotification.Disapear();\n\n            //m_tradeNotification = null;\n            //m_buildNotification = null;\n            //m_travelNotification = null;\n        }\n\n        /// <summary>\n        /// Displays notification\n        /// </summary>\n        /// <param name=\"entity\">Entity</param>        \n        /// <param name=\"action\">Action</param>\n        private MyHudNotification.MyNotification DisplayDetectedEntityActionNotification(MyEntity entity, MySmallShipInteractionActionEnum action)\n        {\n            string entityName = entity.DisplayName;\n            //// if we trade throught hangar, we want display prefab container's name, not hangar's name\n            //if (entity is MyPrefabHangar)\n            //{\n            //    entityName = (entity as MyPrefabHangar).GetOwner().DisplayName;\n            //}\n\n            //else\n            //{\n            //    entityName = entity.DisplayName;\n            //}\n\n\n            //get localized entity name\n            entityName = entity.GetCorrectDisplayName();\n\n            if (String.IsNullOrWhiteSpace(entityName))\n            {\n                entityName = MyTextsWrapper.Get(MyTextsWrapperEnum.ThisObject).ToString();\n            }\n\n            bool isMissionNotification = MyMissions.IsMissionEntityNotification(entity, action);\n            object[] args = new object[3];\n            MyTextsWrapperEnum notificationText;\n            MyGuiFont notificationFont;\n            switch (action)\n            {\n                case MySmallShipInteractionActionEnum.TradeForFree:\n                    notificationFont = MyHudConstants.FRIEND_FONT;\n                    notificationText = MyTextsWrapperEnum.NotificationYouCanTradeWith;\n                    args[0] = MyGuiManager.GetInput().GetGameControlTextEnum(MyGameControlEnums.INVENTORY);\n                    args[1] = entityName;\n                    break;\n                case MySmallShipInteractionActionEnum.TradeForMoney:\n                    notificationFont = MyHudConstants.NEUTRAL_FONT;\n                    notificationText = MyTextsWrapperEnum.NotificationYouCanTradeWith;\n                    args[0] = MyGuiManager.GetInput().GetGameControlTextEnum(MyGameControlEnums.INVENTORY);\n                    args[1] = entityName;\n                    break;\n                case MySmallShipInteractionActionEnum.Loot:\n                    notificationFont = MyHudConstants.ENEMY_FONT;\n                    notificationText = MyTextsWrapperEnum.NotificationYouCanLoot;\n                    args[0] = MyGuiManager.GetInput().GetGameControlTextEnum(MyGameControlEnums.INVENTORY);\n                    args[1] = entityName;\n                    break;\n                case MySmallShipInteractionActionEnum.Examine:\n                    notificationFont = MyHudConstants.NEUTRAL_FONT;\n                    notificationText = MyTextsWrapperEnum.NotificationYouCanExamine;\n                    args[0] = MyGuiManager.GetInput().GetGameControlTextEnum(MyGameControlEnums.INVENTORY);\n                    args[1] = MyGuiManager.GetInput().GetGameControlTextEnum(MyGameControlEnums.USE);\n                    args[2] = entityName;\n                    break;\n                case MySmallShipInteractionActionEnum.ExamineEmpty:\n                    notificationFont = MyHudConstants.NEUTRAL_FONT;\n                    notificationText = MyTextsWrapperEnum.NotificationYouCanExamineEmpty;\n                    args[0] = MyGuiManager.GetInput().GetGameControlTextEnum(MyGameControlEnums.INVENTORY);\n                    args[1] = entityName;\n                    break;\n                case MySmallShipInteractionActionEnum.Blocked:\n                    notificationFont = MyHudConstants.ENEMY_FONT;\n                    notificationText = MyTextsWrapperEnum.NotificationYouCantExamine;\n                    args[0] = entityName;\n                    break;\n                case MySmallShipInteractionActionEnum.Build:\n                    notificationFont = MyHudConstants.NEUTRAL_FONT;\n                    notificationText = MyTextsWrapperEnum.NotificationYouCanBuild;\n                    break;\n                case MySmallShipInteractionActionEnum.Travel:\n                    notificationFont = MyHudConstants.FRIEND_FONT;\n                    notificationText = MyTextsWrapperEnum.NotificationYouCanTravel;\n                    args[0] = MyGuiManager.GetInput().GetGameControlTextEnum(MyGameControlEnums.TRAVEL);\n                    args[1] = entityName;\n                    break;\n                case MySmallShipInteractionActionEnum.Use:\n                    IMyUseableEntity useableEntity = entity as IMyUseableEntity;\n                    Debug.Assert(useableEntity != null);\n                    notificationFont = MyHudConstants.FRIEND_FONT;\n                    if (useableEntity.UseProperties.UseText != null)\n                    {\n                        notificationText = useableEntity.UseProperties.UseText.Value;\n                    }\n                    else\n                    {\n                        notificationText = MyTextsWrapperEnum.NotificationYouCanUse;\n                    }\n                    args[0] = MyGuiManager.GetInput().GetGameControlTextEnum(MyGameControlEnums.USE);\n                    args[1] = entityName;\n                    break;\n                case MySmallShipInteractionActionEnum.Hack:\n                    notificationFont = MyHudConstants.NEUTRAL_FONT;\n                    notificationText = MyTextsWrapperEnum.NotificationYouCanHack;\n                    args[0] = MyGuiManager.GetInput().GetGameControlTextEnum(MyGameControlEnums.USE);\n                    args[1] = entityName;\n                    break;\n                default:\n                    throw new Exception();\n            }\n\n            MyHudNotification.MyNotification notification = new MyHudNotification.MyNotification(\n                notificationText,\n                MyHudNotification.GetCurrentScreen(),\n                1f,\n                isMissionNotification ? MyHudConstants.MISSION_FONT : notificationFont,\n                MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER,\n                MyHudNotification.DONT_DISAPEAR,\n                null,\n                false,\n                args);\n            MyHudNotification.AddNotification(notification);\n\n            return notification;\n        }\n\n        #region Methods for HUD warnings\n        int m_radiationLastDamage = 0;\n        int m_radiationCriticalLastDamage = 0;\n\n        private bool IsRadiation()\n        {\n            return MyMinerGame.TotalGamePlayTimeInMilliseconds - m_radiationLastDamage <= MySmallShipConstants.RADIATION_DAMAGE_MAX_TIME;\n        }\n\n        private bool IsRadiationCritical()\n        {\n            return MyMinerGame.TotalGamePlayTimeInMilliseconds - m_radiationCriticalLastDamage <= MySmallShipConstants.RADIATION_DAMAGE_MAX_TIME;\n        }\n\n\n        public virtual bool IsPilotDead()\n        {\n            if (MySession.Static != null && MySession.Static.Player != null && MySession.PlayerShip == this)\n            {\n                return MySession.Static.Player.IsDead();\n            }\n            else\n            {\n                return PilotHealth <= 0;\n            }\n        }\n\n        public bool IsDamagedForWarnignAlert()\n        {\n            return HealthRatio <= MySmallShipConstants.WARNING_DAMAGE_ALERT_LEVEL;\n        }\n\n        public bool IsCriticalDamaged()\n        {\n            return HealthRatio <= MySmallShipConstants.WARNING_DAMAGE_CRITICAL_LEVEL;\n        }\n\n        public bool HasLowOxygenLevel()\n        {\n            return Oxygen <= MaxOxygen * MySmallShipConstants.WARNING_OXYGEN_LOW_LEVEL;\n        }\n\n        public bool HasCriticalOxygenLevel()\n        {\n            return Oxygen <= MaxOxygen * MySmallShipConstants.WARNING_OXYGEN_CRITICAL_LEVEL;\n        }\n\n        public bool IsOxygenLeaking()\n        {\n            return HealthRatio <= MySmallShipConstants.SHIP_HEALTH_RATIO_TO_OXYGEN_LEAKING_MIN;\n        }\n\n        private float GetOxygenLeakingAmount()\n        {\n            float damageRatioForOxygenLeaking = (MySmallShipConstants.SHIP_HEALTH_RATIO_TO_OXYGEN_LEAKING_MIN - HealthRatio) / (MySmallShipConstants.SHIP_HEALTH_RATIO_TO_OXYGEN_LEAKING_MIN - MySmallShipConstants.SHIP_HEALTH_RATIO_TO_OXYGEN_LEAKING_MAX);\n            float oxygenLeft = MySmallShipConstants.OXYGEN_LEFT_AT_MIN_DAMAGE_LEVEL - (MySmallShipConstants.OXYGEN_LEFT_AT_MIN_DAMAGE_LEVEL - MySmallShipConstants.OXYGEN_LEFT_AT_MAX_DAMAGE_LEVEL) * damageRatioForOxygenLeaking;\n            float oxygenLeaking = 1f / oxygenLeft;\n            return oxygenLeaking * MaxOxygen;\n        }\n\n        public bool HasLowFuelLevel()\n        {\n            return Fuel <= MaxFuel * MySmallShipConstants.WARNING_FUEL_LOW_LEVEL;\n        }\n\n        public bool HasCriticalFuelLevel()\n        {\n            return Fuel <= MaxFuel * MySmallShipConstants.WARNING_FUEL_CRITICAL_LEVEL;\n        }\n\n        public bool HasNoFuelLevel()\n        {\n            return Fuel <= 0f;\n        }\n\n        private bool HasMountedAnyWeapon()\n        {\n            return Weapons.GetNormalWeaponCount(null) > 0;\n        }\n\n        public bool HasLowAmmoLevel()\n        {\n            if (HasMountedAnyWeapon())\n            {\n                return GetTheLowestLevelOfPrimaryAndSecondaryAmmo() <= MySmallShipConstants.WARNING_AMMO_LOW_LEVEL;\n            }\n            return false;\n        }\n\n        public bool HasCriticalAmmoLevel()\n        {\n            if (HasMountedAnyWeapon())\n            {\n                return GetTheLowestLevelOfPrimaryAndSecondaryAmmo() <= MySmallShipConstants.WARNING_AMMO_CRITICAL_LEVEL;\n            }\n            return false;\n        }\n\n        public bool HasNoAmmoLevel()\n        {\n            if (HasMountedAnyWeapon())\n            {\n                return GetTheLowestLevelOfPrimaryAndSecondaryAmmo() <= 0f;\n            }\n            return false;\n        }\n\n        private float GetTheLowestLevelOfPrimaryAndSecondaryAmmo()\n        {\n            return Math.Min(GetLevelOfAmmo(MyMwcObjectBuilder_FireKeyEnum.Primary), GetLevelOfAmmo(MyMwcObjectBuilder_FireKeyEnum.Secondary));\n        }\n\n        private float GetLevelOfAmmo(MyMwcObjectBuilder_FireKeyEnum fireKey)\n        {\n            MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum ammoType = Weapons.AmmoAssignments.GetAmmoType(fireKey);\n            float maxAmount = 1;\n            if (ammoType != 0)\n            {\n                maxAmount = MyGameplayConstants.GetGameplayProperties(MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)ammoType, Faction).MaxAmount;\n            }\n\n            int amount = Weapons.GetAmountOfAmmo(fireKey);\n            return amount / maxAmount;\n        }\n\n        public bool HasLowArmorLevel()\n        {\n            return ArmorHealth <= MaxArmorHealth * MySmallShipConstants.WARNING_ARMOR_LOW_LEVEL;\n        }\n\n        public bool HasCriticalArmorLevel()\n        {\n            return ArmorHealth <= MaxArmorHealth * MySmallShipConstants.WARNING_ARMOR_CRITICAL_LEVEL;\n        }\n\n        public bool HasNoArmorLevel()\n        {\n            return ArmorHealth <= 0f;\n        }\n\n        public bool HasLowHealthLevel()\n        {\n            return MySession.Static.Player.Health <= MySession.Static.Player.MaxHealth * MySmallShipConstants.WARNING_HEALTH_LOW_LEVEL;\n        }\n\n        public bool HasNoHealthLevel()\n        {\n            return MySession.Static.Player.Health <= 0;\n        }\n\n        public bool HasCriticalHealthLevel()\n        {\n            return MySession.Static.Player.Health <= MySession.Static.Player.MaxHealth * MySmallShipConstants.WARNING_HEALTH_CRITICAL_LEVEL;\n        }\n\n        public bool IsRadarJammed()\n        {\n            if (this == MyGuiScreenGamePlay.Static.ControlledEntity)\n            {\n                return MyRadar.IsNearRadarJammer();\n            }\n            return false;\n        }\n\n        public bool IsEnemyDetected()\n        {\n            if (this == MyGuiScreenGamePlay.Static.ControlledEntity)\n            {\n                MyRadar.GetDetectedObjects(ref m_detectedObjects);\n                foreach (IMyObjectToDetect detectedObject in m_detectedObjects)\n                {\n                    if (detectedObject is MySmallShipBot &&\n                       MyFactions.GetFactionsRelation(((MySmallShipBot)detectedObject), this) == MyFactionRelationEnum.Enemy)\n                    {\n                        return true;\n                    }\n                }\n            }\n            return false;\n        }\n\n        public bool IsMissileDetected()\n        {\n            if (MyMinerGame.TotalGamePlayTimeInMilliseconds < m_lastIdestructibleAsteroidWarningShowTime + 50)\n            {\n                return m_lastMissileDetectionStatus;\n            }\n\n            m_lastIdestructibleAsteroidWarningShowTime = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n\n            MyRadar.GetDetectedObjects(ref m_detectedObjects);\n\n            BoundingSphere playerSphere = new BoundingSphere(this.GetPosition(), 100);\n\n            foreach (IMyObjectToDetect detectedObject in m_detectedObjects)\n            {\n                MyMissile missile = detectedObject as MyMissile;\n                if (missile != null)\n                {\n                    Ray missileRay = new Ray(missile.GetPosition(), missile.GetOrientation().Forward);\n\n                    if (!missileRay.Intersects(playerSphere).HasValue) continue;\n\n                    if (missile.OwnerEntity == null)\n                    {\n                        if (MyFactions.GetFactionsRelation(missile.Faction, this.Faction) == MyFactionRelationEnum.Enemy)\n                        {\n                            m_lastMissileDetectionStatus = true;\n                            return m_lastMissileDetectionStatus;\n                        }\n                    }\n                    else if (missile.OwnerEntity != MySession.PlayerShip)\n                    {\n                        if (MyFactions.GetFactionsRelation(missile.Faction, this.Faction) == MyFactionRelationEnum.Enemy)\n                        {\n                            m_lastMissileDetectionStatus = true;\n                            return m_lastMissileDetectionStatus;\n                        }\n                    }\n\n                }\n            }\n            m_lastMissileDetectionStatus = false;\n            return false;\n        }\n\n        private float m_lastIdestructibleAsteroidWarningShowTime = 0;\n\n        private bool m_lastMissileDetectionStatus = false;\n\n        private bool IsShipDamageDetected(int level)\n        {\n            switch (level)\n            {\n                case 0:\n                    return HealthRatio <= 0.5f && HealthRatio > 0.4f;\n                case 1:\n                    return HealthRatio <= 0.4f && HealthRatio > 0.3f;\n                case 2:\n                    return HealthRatio <= 0.3f && HealthRatio > 0.2f;\n                case 3:\n                    return HealthRatio <= 0.2f && HealthRatio > 0.1f;\n                case 4:\n                    return HealthRatio <= 0.1f && HealthRatio > 0;\n                default:\n                    return false;\n            }\n        }\n\n        private void PlayLowHealthAlertSound()\n        {\n            if (HealthRatio <= 0 && m_actualAlertCue.HasValue)\n            {\n                m_actualAlertCue.Value.Stop(SharpDX.XACT3.StopFlags.Immediate);\n            }\n            for (int i = m_lowHealthAlertSounds.Count - 1; i >= 0; i--)\n            {\n                if (IsShipDamageDetected(i))\n                {\n                    if (m_actualAlertCue == null)\n                    {\n                        m_actualAlertCue = MyAudio.AddCue2D(m_lowHealthAlertSounds[i]);\n                        if (!m_actualAlertCue.HasValue) continue;\n                    }\n                    if (m_actualAlertCue.Value.CueEnum != m_lowHealthAlertSounds[i])\n                    {\n                        m_actualAlertCue.Value.Stop(SharpDX.XACT3.StopFlags.Immediate);\n                        m_actualAlertCue = MyAudio.AddCue2D(m_lowHealthAlertSounds[i]);\n                    }\n                    break;\n                }\n            }\n        }\n\n        private MySoundCue? m_actualAlertCue;\n\n        private List<MySoundCuesEnum> m_lowHealthAlertSounds = new List<MySoundCuesEnum>(5);\n\n        #endregion\n\n        bool IsDisabledByEMP()\n        {\n            return m_disabledByEMPDuration > 0;\n        }\n\n        /// <summary>\n        /// Disables the fire keys for the specified duration.\n        /// </summary>\n        void DisableByEMP(TimeSpan duration)\n        {\n            m_disabledByEMPDuration += (float)duration.TotalMilliseconds;\n        }\n\n        public bool IsEngineWorking()\n        {\n            return IsEngineTurnedOn() && !IsDisabledByEMP();\n        }\n\n        public bool IsEngineOn()\n        {\n            return m_engineForce != Vector3.Zero || m_engineTorque != Vector3.Zero;\n        }\n\n        public bool IsEngineTurnedOn()\n        {\n            return Config.Engine.On;\n        }\n\n        public bool IsEngineTurnedOff()\n        {\n            return !IsEngineTurnedOn();\n        }\n\n        public bool IsMovementSlowdownDisabled()\n        {\n            return !Config.MovementSlowdown.On;\n        }\n\n        public bool HasRadarJammerActive()\n        {\n            return m_hasRadarJammer && Config.RadarJammer.On;\n        }\n\n        public bool HasNoOxygen()\n        {\n            return Oxygen <= MyMwcMathConstants.EPSILON;\n        }\n\n        public bool HasNoFuel()\n        {\n            return Fuel <= MyMwcMathConstants.EPSILON;\n        }\n\n        /// <summary>\n        /// Tries fill up fuel tank from inventory\n        /// </summary>\n        public void PumpFuel()\n        {\n            if (m_engineTypeProperties.FuelType.HasValue)\n            {\n                var fuelType = m_engineTypeProperties.FuelType;\n                float maxAmountToPump = Inventory.GetTotalAmountOfInventoryItems(MyMwcObjectBuilderTypeEnum.Ore, (int)fuelType);\n\n                const float fuelEffeciency = 250.0f; // 1.0 means that 1 unit of material adds 1 fuel.\n\n                float fuelToPump = Math.Min((MaxFuel - Fuel) / fuelEffeciency, maxAmountToPump);\n                Fuel += fuelToPump * fuelEffeciency;\n                Inventory.RemoveInventoryItemAmount(MyMwcObjectBuilderTypeEnum.Ore, (int)fuelType, fuelToPump);\n            }\n        }\n\n        public MySmallShipEngineTypeProperties GetEngineProperties()\n        {\n            return (Fuel <= 0) ? MySmallShipEngineTypeConstants.ShipWithoutEngineProperties : m_engineTypeProperties;\n        }\n\n        /// <summary>\n        /// Use only for debug, not for actual engine properties. For those, use GetEngineProperties() method.\n        /// </summary>\n        public MySmallShipEngineTypeProperties EnginePropertiesForDebug\n        {\n            get { return m_engineTypeProperties; }\n        }\n\n        public Vector3 GetFormationPosition(int index)\n        {\n            float lag_distance = WorldVolume.Radius * 2;\n\n            int sideIndex = index / 2 + 1;\n            int sideSign = index % 2 * 2 - 1;   // just -1 is left and +1 right\n\n            return GetPosition() + WorldMatrix.Left * sideIndex * sideSign * MyAIConstants.FORMATION_SPACING - WorldMatrix.Forward * sideIndex * lag_distance;\n        }\n\n        private void SortFormation()\n        {\n            FollowersBuffer.Clear();\n            FollowersBuffer.AddRange(Followers);\n\n            Followers.Clear();\n            while (FollowersBuffer.Count != Followers.Count)\n            {\n                float closestDistance = float.MaxValue;\n                MySmallShipBot closestBot = null;\n\n                Vector3 position = GetFormationPosition(Followers.Count);\n\n                for (int i = 0; i < FollowersBuffer.Count; i++)\n                {\n                    var bot = FollowersBuffer[i];\n                    Vector3 delta = bot.GetPosition() - position;\n                    Vector3 projected = delta - Vector3.Dot(delta, WorldMatrix.Forward) * WorldMatrix.Forward;  // Project on plane defined by leader forward vector - better results\n\n                    float distance = projected.Length() - (i == Followers.Count ? 10 : 0);  // Stabilization - if some bot is already heading to some position, make it harder to change target\n                    if (distance < closestDistance && !Followers.Contains(bot))\n                    {\n                        closestDistance = distance;\n                        closestBot = bot;\n                    }\n                }\n\n                Debug.Assert(closestBot != this);\n                Followers.Add(closestBot);\n            }\n        }\n\n        public override Vector3 GetFormationPosition(MySmallShipBot bot)\n        {\n            int followerIndex = Followers.IndexOf(bot);\n            if (followerIndex < 0)\n            {\n                System.Diagnostics.Debug.Fail(\"GetFormationPosition - Follower not found!\");\n                return bot.GetPosition();\n            }\n\n            return GetFormationPosition(followerIndex);\n        }\n\n        public virtual void AtackedByEnemy(MyEntity damageSource)\n        {\n\n        }\n\n        protected bool IsFriendlyFire(MyEntity damageSource)\n        {\n            var smallShipLeader = Leader as MySmallShip;\n\n            if (damageSource == null)\n            {\n                return false;\n            }\n\n            if (damageSource == this)\n            {\n                return true;\n            }\n\n            // Group leader atacked by his follower?\n            foreach (var follower in Followers)\n            {\n                if (follower == damageSource)\n                {\n                    return true;\n                }\n            }\n\n            if (Leader != null)\n            {\n                // Atacked by leader?\n                if (damageSource == Leader)\n                {\n                    return true;\n                }\n                else if (smallShipLeader != null)\n                {\n                    // Atacked by another follower from same group?\n                    foreach (var follower in smallShipLeader.Followers)\n                    {\n                        if (follower == damageSource)\n                        {\n                            return true;\n                        }\n                    }\n                }\n            }\n            return false;\n        }\n\n        protected void HandleAttack(MyEntity damageSource)\n        {\n            bool friendlyfire = IsFriendlyFire(damageSource);\n            bool isSmallShip = damageSource is MySmallShip;\n            if (damageSource != null && !friendlyfire)\n            {\n                MyFactionRelationEnum factionRelation = MyFactions.GetFactionsRelation(this, damageSource);\n                if (factionRelation == MyFactionRelationEnum.Friend)\n                {\n                    return;\n                }\n\n                if (factionRelation == MyFactionRelationEnum.Neutral)\n                {\n                    return;\n                }\n\n                var smallShipLeader = Leader as MySmallShip;\n                if (smallShipLeader != null)\n                {\n                    // follower - notify whole group about attack\n                    smallShipLeader.AtackedByEnemy(damageSource);\n                    foreach (var follower in smallShipLeader.Followers)\n                    {\n                        follower.AtackedByEnemy(damageSource);\n                    }\n                }\n                else\n                {\n                    AtackedByEnemy(damageSource);\n\n                    // if this bot is leader, notify also followers about attack\n                    foreach (var follower in Followers)\n                    {\n                        follower.AtackedByEnemy(damageSource);\n                    }\n                }\n            }\n        }\n\n        public bool IsAfterburnerOn()\n        {\n            return m_engineAfterburnerOn;\n        }\n\n        void OpeningInventoryScreen(MyEntity entity, MySmallShipInteractionActionEnum interactionAction)\n        {\n            if (entity == this && interactionAction == MySmallShipInteractionActionEnum.Loot)\n            {\n                m_isLooted = true;\n            }\n        }\n\n        void InventoryScreenClosed(MyGuiScreenBase screen)\n        {\n            if (m_isLooted)\n            {\n                m_isLooted = false;\n                m_lastLootTime = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n            }\n        }\n\n        public void HideFromBots()\n        {\n            Config.Engine.SetOff();\n            Config.ReflectorLight.SetOff();\n        }\n\n        public bool IsHiddenFromBots()\n        {\n            return !Config.Engine.On && !Config.ReflectorLight.On;\n        }\n        #endregion\n\n        #region Overrides of MyEntity\n\n        public override void RepairToMax()\n        {\n            base.RepairToMax();\n            ArmorHealth = MaxArmorHealth;\n            Fuel = MaxFuel;\n            Oxygen = MaxOxygen;\n        }\n\n        /// <summary>\n        /// Updates resource.\n        /// </summary>\n        public override void UpdateBeforeSimulation()\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MySmallShip.UpdateBeforeSimulation\");\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"SmallShip part 1\");\n\n            //Physics.MaxAngularVelocity\n            bool isPlayerShip = this == MySession.PlayerShip;\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"SortFormation\");\n            if (Followers.Count > 1)\n            {\n                SortFormation();\n            }\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"AddRoutePoint\");\n\n            m_lod1ForcedDistance = MySmallShipConstants.MAX_UPDATE_DISTANCE;\n\n            AddRoutePoint();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"isPlayerShip collision\");\n            if (isPlayerShip)\n            {\n                if (m_hasCollided)\n                {\n                    Vector3 newVel = Physics.LinearVelocity * (1 - m_collisionFriction * MySmallShipConstants.COLLISION_FRICTION_MULTIPLIER);\n                    System.Diagnostics.Debug.Assert((newVel.Length() <= Physics.LinearVelocity.Length()));\n                    Physics.LinearVelocity = newVel;\n                    m_collisionFriction = 0.0f;\n                }\n\n                RenderObjects[0].ShadowCastUpdateInterval = 60;\n\n                if (MySession.Is25DSector)\n                    Config.AutoLeveling.SetOn();\n                  /*\n                if (MyFakes.MWBUILDER)\n                    Config.AutoLeveling.SetOn();\n                */\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            m_hasCollided = false;\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"SmallShip base UpdateBeforeSimulation\");\n            base.UpdateBeforeSimulation();\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"SmallShip engine, gameplay\");\n            var activeEngineProps = GetEngineProperties();\n            if (isPlayerShip || !MyFakes.OPTIMIZATION_FOR_300_SMALLSHIPS)\n            {\n                UpdateGamePlayProperties(isPlayerShip, activeEngineProps);\n            }\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"SmallShip stats update\");\n\n            // Pump up fuel from inventory\n            if (isPlayerShip || !MyFakes.OPTIMIZATION_FOR_300_SMALLSHIPS)\n            {\n                m_timeToPumpFuel -= MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS;\n                if (m_timeToPumpFuel <= 0)\n                {\n                    PumpFuel();\n                    m_timeToPumpFuel = 1.0f;\n                }\n            }\n\n            // shorten remaining EMP disable\n            if (m_disabledByEMPDuration >= 0)\n            {\n                m_disabledByEMPDuration = m_disabledByEMPDuration - MyConstants.PHYSICS_STEP_SIZE_IN_MILLISECONDS;\n            }\n\n            // Increase hud indicator distance based on current player needs\n            if (isPlayerShip)\n            {\n                const float needMultipler = 4f;\n\n                if (HasLowFuelLevel())\n                    MyHud.HudMaxDistanceMultiplers[(int)MyHudMaxDistanceMultiplerTypes.CargoBoxFuel] = needMultipler;\n                else\n                    MyHud.HudMaxDistanceMultiplers[(int)MyHudMaxDistanceMultiplerTypes.CargoBoxFuel] = 1;\n\n                if (HasLowOxygenLevel())\n                    MyHud.HudMaxDistanceMultiplers[(int)MyHudMaxDistanceMultiplerTypes.CargoBoxOxygen] = needMultipler;\n                else\n                    MyHud.HudMaxDistanceMultiplers[(int)MyHudMaxDistanceMultiplerTypes.CargoBoxOxygen] = 1;\n\n                if (IsCriticalDamaged() || HasLowArmorLevel())\n                    MyHud.HudMaxDistanceMultiplers[(int)MyHudMaxDistanceMultiplerTypes.CargoBoxRepair] = needMultipler;\n                else\n                    MyHud.HudMaxDistanceMultiplers[(int)MyHudMaxDistanceMultiplerTypes.CargoBoxRepair] = 1;\n\n                if (HasLowAmmoLevel())\n                    MyHud.HudMaxDistanceMultiplers[(int)MyHudMaxDistanceMultiplerTypes.CargoBoxAmmo] = needMultipler;\n                else\n                    MyHud.HudMaxDistanceMultiplers[(int)MyHudMaxDistanceMultiplerTypes.CargoBoxAmmo] = 1;\n\n                if (HasLowHealthLevel())\n                    MyHud.HudMaxDistanceMultiplers[(int)MyHudMaxDistanceMultiplerTypes.CargoBoxMedkit] = needMultipler;\n                else\n                    MyHud.HudMaxDistanceMultiplers[(int)MyHudMaxDistanceMultiplerTypes.CargoBoxMedkit] = 1;\n            }\n\n            if (isPlayerShip /* && IsCameraInsideMinerShip()*/)\n            {\n                UpdatePlayerHeadAndShakingNew();\n            }\n\n            m_engineVolume = Config.Engine.Level;\n            // i hope that this is enought to remove unnecessary memory allocation\n            if (MySession.PlayerShip == this)\n            //if (this.GetObjectBuilderInternal(false) is MyMwcObjectBuilder_SmallShip_Player)\n            {\n                m_engineVolume -= MyAudioConstants.PLAYER_SHIP_ENGINE_VOLUME_DECREASE_AMOUNT;\n            }\n\n            m_lockTargetCheckTime += MyConstants.PHYSICS_STEP_SIZE_IN_MILLISECONDS;\n            if (m_lockTargetCheckTime > MySmallShipConstants.LOCK_TARGET_CHECK_TIME && this == MySession.PlayerShip)\n            {\n                m_lockTargetCheckTime = 0;\n                AcquireTarget();\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"SmallShip engine + forces\");\n\n            Config.Update();\n\n            Matrix tempInvertedWorldMatrix = GetWorldMatrixInverted();\n            tempInvertedWorldMatrix.Translation = Vector3.Zero;\n            Vector3 localVelocity = MyUtils.GetTransform(Physics.LinearVelocity, ref tempInvertedWorldMatrix);\n            Vector3 localAngularVelocity = MyUtils.GetTransform(Physics.AngularVelocity, ref tempInvertedWorldMatrix);\n\n            //  Slowdown movement and rotation\n            var physicsProperties = GetPhysicsProperties();\n            var maxSpeedMultiplierDecelerate = MAGIC_CONSTANT_FOR_MAX_SPEED / activeEngineProps.MaxSpeed;\n            Vector3 slowdownForce = Vector3.Zero;\n            if (Config.MovementSlowdown.On)\n            {\n                slowdownForce -= localVelocity * activeEngineProps.Force * maxSpeedMultiplierDecelerate * physicsProperties.MultiplierMovement;\n            }\n\n            // Slowdown movement over a fixed velocity (e.g. 120 m/s) even if engine slowdown is off\n            // let's pretend it dissipates as heat or something\n            if ((!Config.MovementSlowdown.On || !Config.Engine.On) && localVelocity.Length() > activeEngineProps.MaxSpeed)\n            {\n                slowdownForce -= localVelocity * activeEngineProps.Force * maxSpeedMultiplierDecelerate * physicsProperties.MultiplierMovement;\n            }\n\n            m_engineTorque -= localAngularVelocity * Physics.Mass * physicsProperties.MultiplierRotationDecelerate;\n\n            //  Stabilization of angle around axis Z\n            if (Config.AutoLeveling.On)\n            {\n                Vector3 cameraRight = WorldMatrix.Right;\n                Vector3 horizontal = m_levelingMatrix.Up;\n                float angle = (MyUtils.GetAngleBetweenVectors(cameraRight, horizontal) - MathHelper.PiOver2) * -1;\n\n                m_engineTorque.Z -= angle * Physics.Mass * physicsProperties.MultiplierHorizontalAngleStabilization * (MySession.Is25DSector && this == MySession.PlayerShip ? 5 : 1);\n            }\n            \n            MyUtils.AssertIsValid(m_engineTorque);\n            MyUtils.AssertIsValid(m_engineForce);\n\n            //  Prepare force/torque for update controller\n            if (IsEngineWorking())\n            {\n                if (MySession.Is25DSector)\n                {\n                    m_engineForce.Y = 0;\n                    slowdownForce.Y = 0;\n                }\n\n                if (MyFakes.MWBUILDER)\n                {\n                    //m_engineForce.Y = -500000;\n                    this.Physics.PlayCollisionCueEnabled = false;\n                }\n              \n\n                this.Physics.AddForce(MyPhysicsForceType.ADD_BODY_FORCE_AND_BODY_TORQUE, m_engineForce, null, m_engineTorque);\n                this.Physics.AddForce(MyPhysicsForceType.ADD_BODY_FORCE_AND_BODY_TORQUE, slowdownForce, null, null);\n            }\n            else\n                this.Physics.AddForce(MyPhysicsForceType.ADD_BODY_FORCE_AND_BODY_TORQUE, null, null, null);  // don't add any forces with engine off (not even slowdown)\n\n            //  We can reset this temporary forces. They are used in MoveAndRotate too, that is the place where they are filled first time in each Update()\n            m_engineForce = Vector3.Zero;\n            m_engineTorque = Vector3.Zero;\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"SmallShip dead tests\");\n\n            if (IsDead() || IsPilotDead())\n            {\n                if (isPlayerShip && m_pilotDeathTime == 0)\n                {\n                    if (MyMultiplayerGameplay.IsStory())\n                    {\n                        if (MyMultiplayerGameplay.IsRunning)\n                        {\n                            if (MyMultiplayerGameplay.Static.IsHost)\n                            {\n                                bool anyAlive = false;\n                                foreach (var player in MyMultiplayerGameplay.Peers.Players)\n                                {\n                                    if (player.Ship != null && !player.Ship.IsDead())\n                                    {\n                                        anyAlive = true;\n                                    }\n                                }\n\n                                if (!anyAlive)\n                                {\n                                    Gameover();\n                                }\n                            }\n                        }\n                        else\n                        {\n                            Gameover();\n                        }\n                    }\n\n                    MyDialogues.Stop();\n\n                    MyGuiScreenGamePlay.Static.CameraAttachedTo = MyCameraAttachedToEnum.PlayerMinerShip_ThirdPersonDynamic;\n                    MyHud.EnableDrawingMissionObjectives = false;\n                    StopShipDetectors();\n                }\n\n                // Ship is destroyed with alive pilot or pilot is dead for specified amount of time (dont explode if ship is looted and right after looting)\n                if (!IsExploded() && (!IsPilotDead() || base.IsDead() ||\n                    (m_pilotDeathTime > MyGameplayConstants.SHIP_WITHOUT_PILOT_DESTRUCTION_TIME &&\n                     !WasRecentlyLooted())))\n                {\n                    StopSounds();\n\n                    m_isExploded = true;\n                    //  small ship explosion!\n                    MyExplosion explosion = MyExplosions.AddExplosion();\n                    Vector3 explosionPosition = GetPosition();\n                    if (explosion != null)\n                    {\n                        explosion.Start(0, WorldVolume.Radius, 0,\n                                        MyExplosionTypeEnum.SMALL_SHIP_EXPLOSION,\n                                        new BoundingSphere(explosionPosition,\n                                                           MyMwcUtils.GetRandomFloat(\n                                                               MyExplosionsConstants.EXPLOSION_RANDOM_RADIUS_MIN,\n                                                               MyExplosionsConstants.EXPLOSION_RANDOM_RADIUS_MAX)),\n                                        MyExplosionsConstants.EXPLOSION_LIFESPAN, 0, this);\n                    }\n                    if (!isPlayerShip)\n                    {\n                        MarkForClose();\n                    }\n                    else\n                    {\n                        Activate(false, false);\n                    }\n                }\n            }\n            else\n            {\n                MyHud.EnableDrawingMissionObjectives = true;\n            }\n\n            if (IsPilotDead())\n            {\n                m_pilotDeathTime += MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS;\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"SmallShip playership upd\");\n\n            if (isPlayerShip)\n            {                \n                Update_PlayerShip();\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"SmallShip 2.5D + tools\");\n\n            if (MySession.Is25DSector)\n            {                       \n                var worldMatrix = this.WorldMatrix;\n                var position = worldMatrix.Translation;\n                position.Y = 0;\n                worldMatrix.Translation = position;\n                worldMatrix.Up = Vector3.Up;\n                worldMatrix.Forward = Vector3.Cross(worldMatrix.Left, worldMatrix.Up);\n\n                //worldMatrix = Matrix.Identity;\n\n\n                worldMatrix.Translation = position;\n\n                this.WorldMatrix = worldMatrix;\n            }                         \n\n            if (m_nanoRepairTool != null)\n            {\n                m_nanoRepairTool.Use();\n            }\n\n            if (HackingTool != null)\n            {\n                HackingTool.Update();\n            }\n\n            Debug.Assert(RadioactivityAmount >= 0, \"Radioactivity influence cannot be negative!\");\n            if (RadioactivityAmount > MyMwcMathConstants.EPSILON)\n            {\n                this.DoDamage(RadioactivityAmount * MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS, 0, 0, MyDamageType.Radioactivity, MyAmmoType.None, null);\n            }\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        void Gameover()\n        {\n            if (MyMissions.ActiveMission != null)\n            {\n                MyMissions.ActiveMission.Fail();\n            }\n            else\n            {\n                MySession.Static.GameOver();\n            }\n        }\n\n        public virtual MyShipTypePhysicsProperties GetPhysicsProperties()\n        {\n            return m_shipTypeProperties.Physics;\n        }\n\n        private MySmallShipEngineTypeProperties UpdateGamePlayProperties(bool isPlayerShip, MySmallShipEngineTypeProperties activeEngineProps)\n        {\n            // Modify oxygen consuption according to game difficulty\n            float oxygenConsumption = isPlayerShip ?\n                MyGameplayConstants.GameplayDifficultyProfile.PlayerOxygenConsumptionMultiplicator : 1;\n\n            if (isPlayerShip && MySession.Static.Player.Medicines[(int)MyMedicineType.PERFORMANCE_ENHANCING_MEDICINE].IsActive())\n                oxygenConsumption *= MyMedicineConstants.PERFORMANCE_ENHANCING_MEDICINE_OXYGEN_CONSUMPTION_MULTIPLIER;\n\n            Oxygen = Math.Max(0, m_oxygen - oxygenConsumption * MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS);\n            if (IsOxygenLeaking())\n            {\n                Oxygen = Math.Max(0, m_oxygen - GetOxygenLeakingAmount() * MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS);\n            }\n\n            if (MySession.Static != null)\n            {\n                var player = MySession.Static.Player;\n                if (isPlayerShip)\n                {\n                    if (Oxygen <= 0)\n                    {\n                        player.TimeWithoutOxygen += MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS;\n                    }\n                    else\n                    {\n                        player.TimeWithoutOxygen = 0;\n                    }\n\n                    // Reduce player health after 30 seconds without oxygen\n                    if (player.TimeWithoutOxygen > 30)\n                    {\n                        if (!player.IsDead())\n                        {\n                            player.AddHealth(-MyMinerShipConstants.MINER_SHIP_PLAYER_NO_OXYGEN_HEALTH_LOSS * MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS, null);\n\n                            if (MyMultiplayerGameplay.IsRunning && IsPilotDead())\n                            {\n                                MyMultiplayerGameplay.Static.PilotDie(this, null);\n                            }\n                        }\n                    }\n                }\n            }\n\n\n            // Update amount of Fuel\n            float fuelConsumption = 0;\n            if (IsEngineWorking())\n            {\n                if (IsEngineOn())\n                {\n                    fuelConsumption = (m_engineAfterburnerOn ? activeEngineProps.AfterburnerConsumptionMultiplier : 1.0f) * activeEngineProps.FuelConsumption;\n\n                    var drill = Weapons.GetMountedDrill();\n                    if (drill != null && drill.CurrentState == MyDrillStateEnum.Drilling)\n                    {\n                        fuelConsumption += MySmallShipConstants.DRILL_FUEL_CONSUMPTION;\n                    }\n\n                    var harvester = Weapons.GetMountedHarvestingDevice();\n                    if (harvester != null && harvester.IsHarvesterActive)\n                    {\n                        fuelConsumption += MySmallShipConstants.HARVESTER_FUEL_CONSUMPTION;\n                    }\n                }\n                else\n                {\n                    // 5% fuel consuption if engine is not active and is on\n                    fuelConsumption = activeEngineProps.FuelConsumption * 0.05f;\n                }\n            }\n\n            if (isPlayerShip)\n            {\n                fuelConsumption *= MyGameplayConstants.GameplayDifficultyProfile.PlayerFuelConsumptionMultiplicator;\n            }\n\n            Fuel = Math.Max(0, Fuel - fuelConsumption * MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS);\n            return activeEngineProps;\n        }\n\n        public void WeaponShot(MySmallShipGunBase gun, MyAmmoAssignment ammoAssignment)\n        {\n            //Electricity -= MySmallShipConstants.WEAPON_ELECTRICITY_CONSUMPTION;\n        }\n\n        private void Update_PlayerShip()\n        {\n            if (IsDead() || IsPilotDead())\n            {\n                return;\n            }\n\n            UpdateSecondaryCamera();\n\n            UpdateFriendlyFireDamage();\n\n            int updatePlBlock = -1;\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"SmallShip_Update_PlayerShip\", ref updatePlBlock);\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"SmallShip_Update_PlayerShip trade test\");\n\n            UpdateSubObjectsState(IsCameraInsideMinerShip());\n\n            bool cameraAttachedToPlayer = MyGuiScreenGamePlay.Static.CameraAttachedTo == MyCameraAttachedToEnum.PlayerMinerShip ||\n               MyGuiScreenGamePlay.Static.CameraAttachedTo == MyCameraAttachedToEnum.PlayerMinerShip_ThirdPersonDynamic ||\n               MyGuiScreenGamePlay.Static.CameraAttachedTo == MyCameraAttachedToEnum.PlayerMinerShip_ThirdPersonFollowing ||\n               MyGuiScreenGamePlay.Static.CameraAttachedTo == MyCameraAttachedToEnum.PlayerMinerShip_ThirdPersonStatic;\n            bool canBeDetectorsActive = MyGuiScreenGamePlay.Static.IsGameActive() &&\n                (MyFakes.ENABLE_DETECTORS_IN_EDITOR_GAME || (\n                MyGuiScreenGamePlay.Static.GetPreviousGameType() != MyGuiScreenGamePlayType.EDITOR_MMO &&\n                MyGuiScreenGamePlay.Static.GetPreviousGameType() != MyGuiScreenGamePlayType.EDITOR_STORY &&\n                MyGuiScreenGamePlay.Static.GetPreviousGameType() != MyGuiScreenGamePlayType.EDITOR_SANDBOX));\n\n\n\n            // Trade detector\n            if (cameraAttachedToPlayer)\n            {\n                if (TradeDetector.TrySetStatus(true))\n                    TradeDetector.ActivateSensor();\n            }\n            else\n            {\n                TradeDetector.TrySetStatus(false);\n            }\n\n            // other detectors\n            if (cameraAttachedToPlayer && canBeDetectorsActive)\n            {\n                if (MyFakes.ENABLE_BUILDER_MODE)\n                {\n                    if (BuildDetector.TrySetStatus(true))\n                        BuildDetector.ActivateSensor();\n                }\n                if (MotherShipDetector.TrySetStatus(true))\n                    MotherShipDetector.ActivateSensor();\n                if (UseableEntityDetector.TrySetStatus(true))\n                    UseableEntityDetector.ActivateSensor();\n            }\n            else\n            {\n                BuildDetector.TrySetStatus(false);\n                MotherShipDetector.TrySetStatus(false);\n                UseableEntityDetector.TrySetStatus(false);\n            }\n\n            //// Detecting nearest friend or neutral ship to trade\n            //if (MyGuiScreenGamePlay.Static.IsGameActive() &&\n            //    (MyFakes.ENABLE_DETECTORS_IN_EDITOR_GAME || (\n            //    MyGuiScreenGamePlay.Static.GetPreviousGameType() != MyGuiScreenGamePlayType.EDITOR_MMO &&\n            //    MyGuiScreenGamePlay.Static.GetPreviousGameType() != MyGuiScreenGamePlayType.EDITOR_STORY &&\n            //    MyGuiScreenGamePlay.Static.GetPreviousGameType() != MyGuiScreenGamePlayType.EDITOR_SANDBOX)) &&\n            //    (MyGuiScreenGamePlay.Static.CameraAttachedTo == MyCameraAttachedToEnum.PlayerMinerShip ||\n            //     MyGuiScreenGamePlay.Static.CameraAttachedTo == MyCameraAttachedToEnum.PlayerMinerShip_ThirdPersonDynamic ||\n            //     MyGuiScreenGamePlay.Static.CameraAttachedTo == MyCameraAttachedToEnum.PlayerMinerShip_ThirdPersonFollowing ||\n            //     MyGuiScreenGamePlay.Static.CameraAttachedTo == MyCameraAttachedToEnum.PlayerMinerShip_ThirdPersonStatic))\n            //{\n            //    if (TradeDetector.TrySetStatus(true))\n            //        TradeDetector.ActivateSensor();\n            //    if (BuildDetector.TrySetStatus(true))\n            //        BuildDetector.ActivateSensor();\n            //    if (MotherShipDetector.TrySetStatus(true))\n            //        MotherShipDetector.ActivateSensor();\n            //    if (UseableEntityDetector.TrySetStatus(true))\n            //        UseableEntityDetector.ActivateSensor();\n            //}\n            //else\n            //{\n\n            //}\n\n            if (m_travelNotification == null && m_nearMotherShipContainer != null && MyGuiScreenGamePlay.Static.CanTravel)\n            {\n                m_travelNotification = DisplayDetectedEntityActionNotification(m_nearMotherShipContainer, MySmallShipInteractionActionEnum.Travel);\n            }\n            else if (m_travelNotification != null && (m_nearMotherShipContainer == null || !MyGuiScreenGamePlay.Static.CanTravel))\n            {\n                m_travelNotification.Disappear();\n                m_travelNotification = null;\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"SmallShip_Update_PlayerShip radar\");\n\n\n\n            //if (MyHudConstants.RADAR_DATA_SHARING_WITH_FRIENDLY_RADARS || this == MySession.PlayerShip) \n            //{\n            //    ShipRadar.UdpdateTime(MyConstants.PHYSICS_STEP_SIZE_IN_MILLISECONDS);\n            //}\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"SmallShip_Update_PlayerShip mission or neutral\");\n\n            if (ToolKits != null)\n            {\n                ToolKits.Update();\n            }\n\n            // Detecting nearest mission or neutral ship to trade\n            if (MyMissions.ActiveMission == null)\n            {\n                m_lastMissionProximityCheck += MyConstants.PHYSICS_STEP_SIZE_IN_MILLISECONDS;\n                if (m_lastMissionProximityCheck >= MySmallShipConstants.DETECT_INTERVAL)\n                {\n                    MyMissions.CheckMissionProximity();\n                    m_lastMissionProximityCheck = 0f;\n                }\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"SmallShip_Update_PlayerShip regen\");\n\n            // Regen gameplay properties if near friendly Mother Ship\n            if (MyFakes.ENABLE_REFILL_PLAYER_IN_MOTHERSHIP &&\n                GetNearMotherShipContainer() != null &&\n                MyFactions.GetFactionsRelation(GetNearMotherShipContainer(), this) == MyFactionRelationEnum.Friend)\n            {\n                float regenRate = 1.0f / 5.0f * MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS;\n                Health += MaxHealth * regenRate;\n                ArmorHealth += MaxArmorHealth * regenRate;\n                Oxygen += MaxOxygen * regenRate;\n                Fuel += MaxFuel * regenRate;\n\n                Health = MathHelper.Clamp(Health, 0, MaxHealth);\n                ArmorHealth = MathHelper.Clamp(ArmorHealth, 0, MaxArmorHealth);\n                Oxygen = MathHelper.Clamp(Oxygen, 0, MaxOxygen);\n                Fuel = MathHelper.Clamp(Fuel, 0, MaxFuel);\n\n                MySession.Static.Player.AddHealth(MySession.Static.Player.MaxHealth * regenRate, null);\n            }\n\n            // handle medikit\n            {\n                var medikit = MySession.Static.Player.Medicines[(int)MyMedicineType.MEDIKIT];\n\n                // medikit has an effect over time: handle it here\n                if (medikit.WasActiveSinceLastTriggered())\n                {\n                    MySession.Static.Player.AddHealth(medikit.ActiveTimeSinceLastTriggered() * 0.001f * MyMedicineConstants.MEDIKIT_HEALTH_RESTORED_PER_SECOND, null);\n                    medikit.Trigger();\n                }\n\n                // player low on health: started medikit automatically\n                if (!medikit.IsActive() && MySession.Static.Player.Health <= MyMedicineConstants.MEDIKIT_HEALTH_TO_ACTIVATE)\n                {\n                    medikit.ActivateIfInInventory(Inventory);\n                }\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"SmallShip_Update_PlayerShip enemy sounds\");\n\n            int enemiesDetectedCount = MyHud.GetHudEnemiesCount(MySmallShipConstants.WARNING_ENEMY_ALERT_MAX_DISTANCE_SQR);\n\n            if (m_enemiesCountDetectedLastUpdate == 0 && enemiesDetectedCount > 0)\n            {\n                MyAudio.AddCue2D(MySoundCuesEnum.HudEnemyAlertWarning);\n            }\n            m_enemiesCountDetectedLastUpdate = enemiesDetectedCount;\n\n            //if (Fuel <= 0 || !Config.Engine.On)\n            //{\n            //    Config.ReflectorLight.SetValue(false);\n            //}\n\n            UpdateAfterburner();\n\n            if (enemiesDetectedCount > 0)\n            {\n                m_lastEnemyDetection = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n            }\n\n            if (MyMinerGame.TotalGamePlayTimeInMilliseconds - m_lastEnemyDetection < 5000)\n            {\n                MyAudio.ApplyTransition(MyMusicTransitionEnum.LightFight, 2);\n            }\n            else\n            {\n                MyAudio.StopTransition(2);\n            }\n\n            PlayLowHealthAlertSound();\n\n            GlassDirtLevel = MAX_GLASS_DIRT_LEVEL - (MaxHealth > 0f ? ((MAX_GLASS_DIRT_LEVEL - MIN_GLASS_DIRT_LEVEL) * HealthRatio) : 0f);\n\n            UpdateSectorBoundariesWarning();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock(updatePlBlock);\n        }\n\n        /// <summary>\n        /// When player is too close to sector safe boundaries, we display this notification text\n        /// </summary>\n        void UpdateSectorBoundariesWarning()\n        {\n            float dist = MyGuiScreenGamePlay.Static.GetDistanceToSectorBoundaries();\n\n            if (dist <= MyHudConstants.DISTANCE_FOR_SECTOR_BORDER_WARNING)\n            {\n                if (m_sectorBoundariesWarning != null)\n                {\n                    var text = m_sectorBoundariesWarning.Text;\n                    text.Clear();\n                    if (MyGuiScreenGamePlay.Static.CanTravelThroughSectorBoundaries())\n                    {\n                        //  Construct message: Sector border in XXX meters. Neighbouring sector will load when zero.\n                        text.Append(MyTextsWrapper.Get(MyTextsWrapperEnum.SectorBorderBegin));\n                        text.AppendInt32((int)dist);\n                        text.Append(MyTextsWrapper.Get(MyTextsWrapperEnum.SectorBorderEnd));\n                    }\n                    else if (!MyClientServer.LoggedPlayer.GetCanSave())\n                    {\n                        text.Append(MyTextsWrapper.Get(MyTextsWrapperEnum.DemoUserCannotTravel));\n                    }\n                    else if (MyMultiplayerGameplay.IsRunning && !MyMultiplayerGameplay.Static.IsHost && MyGuiScreenGamePlay.Static.IsGameStoryActive())\n                    {\n                        text.Append(MyTextsWrapper.Get(MyTextsWrapperEnum.MP_OnlyHostCanTravel));\n                    }\n                    else if (MyGuiScreenGamePlay.Static.IsGameStoryActive())\n                    {\n                        //  Construct message: Finish the mission before leaving the sector\n                        text.Append(MyTextsWrapper.Get(MyTextsWrapperEnum.UnableToLeaveSectorMission));\n                    }\n                    else\n                    {\n                        //  Construct message: Unable to leave the sector\n                        text.Append(MyTextsWrapper.Get(MyTextsWrapperEnum.UnableToLeaveSector));\n                    }\n                }\n            }\n        }\n\n        private void UpdateAfterburner()\n        {\n            if (m_engineAfterburnerOn)\n            {\n                AfterburnerStatus -= (m_lastAfterburnerEmptying != 0) ? ((MyMinerGame.TotalGamePlayTimeInMilliseconds - m_lastAfterburnerEmptying) / m_shipTypeProperties.GamePlay.AfterBurnerDurationTime) * 0.001f : 0;\n                if (AfterburnerStatus < 0) AfterburnerStatus = 0.0f;\n                m_lastAfterburnerEmptying = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n                m_lastAfterburnerFilling = 0;\n            }\n            else if (m_engineAfterburnerCanRefill)\n            {\n                AfterburnerStatus += (m_lastAfterburnerFilling != 0) ? ((MyMinerGame.TotalGamePlayTimeInMilliseconds - m_lastAfterburnerFilling) / m_shipTypeProperties.GamePlay.AfterBurnerRefillTime) * 0.001f : 0;\n                if (AfterburnerStatus > 1) AfterburnerStatus = 1.0f;\n                m_lastAfterburnerFilling = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n                m_lastAfterburnerEmptying = 0;\n            }\n        }\n\n\n\n        public override void UpdateAfterSimulation()\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"SmallShip.UpdateAfterIntegration base\");\n            base.UpdateAfterSimulation();\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"SmallShip.UpdateAfterIntegration\");\n\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Distance test\");\n\n            float distance = Vector3.Distance(MyCamera.Position, WorldMatrix.Translation);\n            float maxDistanceForUpdate = MySession.Is25DSector ? 500 : 100;\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n            //  Update guns\n            if (Weapons != null)\n            {\n                Weapons.UpdateAfterSimulation();\n            }\n\n            if (distance < maxDistanceForUpdate)\n            {\n              \n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"SmallShip.UpdateAfterIntegration cockpit\");\n\n                if (this == MySession.PlayerShip)\n                {\n                    GetShipCockpit().UpdateBeforeSimulation();\n                    GetShipCockpitGlass().UpdateBeforeSimulation();\n                }\n\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"SmallShip.UpdateAfterIntegration physics\");\n\n                if (this.Physics != null)\n                {\n                    if (MyGuiScreenGamePlay.Static.IsGameActive() || MyGuiScreenGamePlay.Static.IsFlyThroughActive())\n                    {\n                        MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"SmallShip.UpdateAfterIntegration sounds\");\n\n                        if (m_engineSoundOn)\n                        {\n                            //  Engine moving sound\n                            if (m_engineMovingCue == null || !m_engineMovingCue.Value.IsPlaying)\n                            {\n                                if (MyMinerGame.TotalGamePlayTimeInMilliseconds > m_engineIdleCueDelayMillis)\n                                {\n                                    m_engineMovingCue = MyAudio.AddCue2dOr3d(this, GetEngineProperties().HighCue3d,\n                                                                             GetPosition(), WorldMatrix.Forward, WorldMatrix.Up,\n                                                                             this.Physics.LinearVelocity, m_engineVolume);\n                                }\n                            }\n                            else\n                            {\n                                MyAudio.UpdateCueVolume(m_engineMovingCue, m_engineVolume);\n                                m_engineMovingCue.Value.SetVariable(MyCueVariableEnum.ShipASpeed,\n                                                                             MathHelper.Clamp(Physics.Speed, 0,\n                                                                                              SOUND_VARIABLE_SHIP_A_SPEED_MAX_VALUE));\n                                MyAudio.UpdateCuePosition(m_engineMovingCue, GetPosition(), WorldMatrix.Forward, WorldMatrix.Up,\n                                                          Physics.LinearVelocity);\n                            }\n\n                            //  Engine idle sound\n                            if (m_engineIdleCue == null || !m_engineIdleCue.Value.IsPlaying)\n                            {\n                                if (MyMinerGame.TotalGamePlayTimeInMilliseconds > m_engineIdleCueDelayMillis)\n                                {\n                                    m_engineIdleCue = MyAudio.AddCue2dOr3d(this, GetEngineProperties().IdleCue3d,\n                                                                           GetPosition(),\n                                                                           WorldMatrix.Forward, WorldMatrix.Up,\n                                                                           Physics.LinearVelocity, m_engineVolume);\n                                }\n                            }\n                            else\n                            {\n                                m_engineIdleCue.Value.SetVariable(MyCueVariableEnum.ShipAIdle,\n                                                                           MathHelper.Clamp(Physics.Speed, 0,\n                                                                                            SOUND_VARIABLE_SHIP_IDLE_SPEED_MAX_VALUE));\n                                MyAudio.UpdateCueVolume(m_engineIdleCue, m_engineVolume);\n                                MyAudio.UpdateCuePosition(m_engineIdleCue, GetPosition(), WorldMatrix.Forward, WorldMatrix.Up,\n                                                          Physics.LinearVelocity);\n                            }\n\n                            //  Engine afterburner sound\n                            if (m_engineAfterburnerOn)\n                            {\n                                if (m_engineAfterburnerCue == null)\n                                {\n                                    if (Config.Engine.On)\n                                    {\n                                        m_engineAfterburnerCue = MyAudio.AddCue2dOr3d(this, GetEngineProperties().Thrust3d,\n                                            GetPosition(),\n                                                                                      WorldMatrix.Forward, WorldMatrix.Up,\n                                                                                      Physics.LinearVelocity);\n                                    }\n                                }\n                                if (m_engineAfterburnerCue != null)\n                                {\n                                    MyAudio.UpdateCuePosition(m_engineAfterburnerCue,\n                                        GetPosition(), WorldMatrix.Forward,\n                                                              WorldMatrix.Up, Physics.LinearVelocity);\n                                }\n                            }\n                            else\n                            {\n                                if (m_engineAfterburnerCue != null)\n                                {\n                                    if (m_engineAfterburnerCue.Value.IsPlaying)\n                                    {\n                                        m_engineAfterburnerCue.Value.Stop(SharpDX.XACT3.StopFlags.Immediate);\n                                    }\n                                    m_engineAfterburnerCue = null;\n                                }\n                            }\n                        }\n                        MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n                        MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"SmallShip.UpdateAfterIntegration sounds2\");\n\n                        if (m_engineOnOffSound != null && !m_engineOnOffSound.Value.IsPlaying)\n                        {\n                            if (!IsEngineWorking())\n                            {\n                                if (m_playerBreathing == null)\n                                {\n                                    if ((m_engineIdleCue != null) && (m_engineIdleCue.Value.IsPlaying == true))\n                                    {\n                                        m_engineIdleCue.Value.Stop(SharpDX.XACT3.StopFlags.Release);\n                                    }\n\n                                    if ((m_engineMovingCue != null) && (m_engineMovingCue.Value.IsPlaying == true))\n                                    {\n                                        m_engineMovingCue.Value.Stop(SharpDX.XACT3.StopFlags.Release);\n                                    }\n\n                                    // duck all sounds outside ship when respirator on\n                                    //MyAudio.GetDefaultCategory().SetVolume(0.02f);\n                                    m_playerBreathing = MyAudio.AddCue2D(MySoundCuesEnum.SfxPlayerBreath);\n                                }\n                                else\n                                {\n                                    // we cant allow breathing in non-player minerships\n                                    if (IsCameraInsideMinerShip())\n                                    {\n                                        MyAudio.GetCockpitCategory().SetVolume(MyAudio.VolumeGame);\n                                    }\n                                    else\n                                    {\n                                        MyAudio.GetCockpitCategory().SetVolume(0.0f);\n                                    }\n                                }\n                            }\n                            else\n                            {\n                                //if (m_playerBreathing != null && m_playerBreathing.Value.IsStopping)\n                                //{\n                                //    MySounds.GetDefaultCategory().SetVolume(1.0f);\n                                //}                        \n                            }\n                        }\n\n                        if (m_playerBreathing != null && m_playerBreathing.Value.IsValid && m_playerBreathing.Value.IsStopping)\n                        {\n                            MyAudio.GetDefaultCategory().SetVolume(MyAudio.VolumeGame);\n                        }\n\n                        MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n\n                    }\n                    else\n                    {\n                        //turn off sounds of engine.. if possible\n                        StopEngineSounds(SharpDX.XACT3.StopFlags.Immediate);\n                        //StopSounds();\n                    }\n                }\n\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n            }\n            else\n            {\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Stop engine sounds\");\n                StopEngineSounds(SharpDX.XACT3.StopFlags.Immediate);\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n                //StopSounds();\n            }\n\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"SmallShip.UpdateAfterIntegration particles\");\n\n            if (m_damageEffect != null)\n            {\n                if (IsCameraInsideMinerShip())\n                    m_damageEffect.UserBirthMultiplier = 0;\n                else\n                {\n                    m_damageEffect.UserBirthMultiplier = GetDamageRatio() > MyShipConstants.DAMAGED_HEALTH\n                                                          ? MathHelper.Clamp(0.1f * Physics.LinearVelocity.Length(), 0.0f, 2f)\n                                                          : 0;\n                    m_damageEffect.UserRadiusMultiplier = GetDamageRatio() > MyShipConstants.DAMAGED_HEALTH\n                                                       ? MathHelper.Clamp(0.01f * Physics.LinearVelocity.Length(), 0.75f, 1.5f)\n                                                       : 0;\n                }\n\n                m_damageEffect.WorldMatrix = m_damageEffectLocalMatrix != null ? m_damageEffectLocalMatrix.Value * WorldMatrix : WorldMatrix;\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"SmallShip.UpdateAfterIntegration reflector\");\n\n            // TODO Only temporary until update / update anim / on worldpos solved\n            //  Reflector short-long range\n            if (m_reflectorProperies != null)\n                m_reflectorProperies.Update();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Update light\");\n\n            UpdateLight();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyMultiplayerGameplay\");\n            UpdateMultiplayerPosition();\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        protected virtual void UpdateMultiplayerPosition()\n        {\n            if (MyMultiplayerGameplay.IsRunning && !IsDummy)\n            {\n                MyMultiplayerGameplay.Static.UpdatePosition(this);\n            }\n        }\n\n        /// <summary>\n        /// Draws this object's model and return true. If object isn't in frustum or for whatever reason we won't draw it, return false.\n        /// </summary>\n        /// <returns></returns>\n        public override bool Draw(MyRenderObject renderObject = null)\n        {\n            if (!MyFakes.DRAW_PLAYER_MINER_SHIP)\n                return false;\n\n            if (this == MySession.PlayerShip && /*IsRenderingInsidePlayerShip()*/\n                MyGuiScreenGamePlay.IsRenderingInsideEntity(MySession.PlayerShip))\n            {\n                return false;\n            }\n\n            float distance = Vector3.Distance(this.GetPosition(), MyCamera.Position);\n\n            //  If camera sits in the player ship, we won't draw the ship, reflector and guns.\n            if (Render.MyRender.GetCurrentLodDrawPass() == MyLodTypeEnum.LOD0)\n            {\n                // TODO: Go ahead and do it in customization screen then!\n                //ModelLod0.LoadInDraw(); //if we dont call it here, there will be no GPU data if ship is added through customization screen\n\n                base.Draw(renderObject);\n\n                if (distance < MySmallShipConstants.MAX_UPDATE_DISTANCE)\n                {\n                    MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Smallship thrusts\");\n                    DrawEngineThrusts();\n                    MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n                    //  We need to draw reflectors always, because they aren't contained in ship's model bounding sphere\n                    MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Smallship reflectors LOD0\");\n                    DrawReflectors();\n                    MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n                }\n            }\n            else if (Render.MyRender.GetCurrentLodDrawPass() == MyLodTypeEnum.LOD1 && (ModelLod1 != null))\n            {\n                // TODO: Go ahead and do it in customization screen then!\n                // ModelLod1.LoadInDraw(); //if we dont call it here, there will be no GPU data if ship is added through customization screen\n\n                base.Draw();\n\n                //  We need to draw reflectors always, because they aren't contained in ship's model bounding sphere\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Smallship reflectors LOD1\");\n                DrawReflectors();\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n            }\n            else if (Render.MyRender.GetCurrentLodDrawPass() == MyLodTypeEnum.LOD0 || MyRender.GetCurrentLodDrawPass() == MyLodTypeEnum.LOD_NEAR)\n            {\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Smallship thrusts 2\");\n                DrawEngineThrusts();\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n            }\n\n            if (Render.MyRender.GetCurrentLodDrawPass() != MyLodTypeEnum.LOD1)\n            {\n                bool drawGuns = true;\n                if (this == MySession.PlayerShip)\n                {\n                    if (!MyGuiScreenGamePlay.Static.IsGameActive() || MyGuiScreenGamePlay.Static.IsEditorActive())\n                    {\n                        drawGuns = false;\n                    }\n                }\n\n                if (MyRender.CurrentRenderSetup.CallerID.Value != MyRenderCallerEnum.Main)\n                    drawGuns = false;\n\n                drawGuns &= distance < MySmallShipConstants.MAX_UPDATE_DISTANCE;\n\n                if (drawGuns)\n                {\n                    float maxDistanceForGuns = MyLodConstants.MAX_DISTANCE_FOR_DRAWING_MINER_SHIP_GUNS * (MySession.Is25DSector ?  2 : 1);\n\n                    if (Vector3.Distance(MyCamera.Position, GetPosition()) <= maxDistanceForGuns && Children.Count > 0)\n                    {\n                        //  Do not draw guns if this is player. Reason is that in large positions guns aren't at precise positions and if viewed from the ship, user will note shakiness.\n                        //  But for guns on other players it is not visible.\n                        MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Smallship weapons\");\n                        Weapons.Draw();\n                        MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n                    }\n                }\n            }\n\n            //  We return true, but in this case it means nothing. Caller don't need it.\n            return true;\n        }\n\n        /// <summary>\n        /// If model of this phys object uses alpha for rendering, this method will calculate that alpha\n        /// Of course childs of this class must implement it's own alpha calculation, because this one will throw an exception.\n        /// Children shouldn't call this base method\n        /// Only for drawing this object, because some objects need to use special world matrix\n        /// </summary>\n        public override void DebugDrawNormalVectors()\n        {\n            base.DebugDrawNormalVectors();\n\n            Weapons.DrawNormalVectors();\n        }\n\n        /// <summary>\n        /// Draw debug.\n        /// </summary>\n        /// <returns></returns>\n        public override bool DebugDraw()\n        {\n\n            //MyDebugDraw.DrawAxis(WorldMatrix, 5, 1);\n\n            /*\n            if (this.IsCameraInsideMinerShip())\n            {\n                return true;\n            }   */\n\n            if (!base.DebugDraw())\n                return false;\n\n            if (DebugDrawEngineThrusts)\n            {\n                Vector3 color = Color.Blue.ToVector3();\n                DebugDrawSubobject(m_subObjectEngineThrustBackwardSmallLeftside, color);\n                DebugDrawSubobject(m_subObjectEngineThrustBackwardSmallRightside, color);\n                DebugDrawSubobject(m_subObjectEngineThrustBackwardLeftside, color);\n                DebugDrawSubobject(m_subObjectEngineThrustBackwardRightside, color);\n\n                DebugDrawSubobject(m_subObjectEngineThrustBackward2Leftside, color);\n                DebugDrawSubobject(m_subObjectEngineThrustBackward2Rightside, color);\n                DebugDrawSubobject(m_subObjectEngineThrustForwardLeftside, color);\n\n                DebugDrawSubobject(m_subObjectEngineThrustForwardRightside, color);\n                DebugDrawSubobject(m_subObjectEngineThrustStrafeLeft, color);\n                DebugDrawSubobject(m_subObjectEngineThrustStrafeRight, color);\n                DebugDrawSubobject(m_subObjectEngineThrustUpLeftside, color);\n\n                DebugDrawSubobject(m_subObjectEngineThrustUpRightside, color);\n                DebugDrawSubobject(m_subObjectEngineThrustDownLeftside, color);\n                DebugDrawSubobject(m_subObjectEngineThrustDownRightside, color);\n            }\n\n            if (DebugDrawEngineWeapons)\n            {\n                DebugDrawWeapons();\n\n\n                Matrix lightMatrix = Matrix.CreateWorld(m_subObjectLight.ModelSubObject.Position, m_subObjectLight.ModelSubObject.ForwardVector.Value, m_subObjectLight.ModelSubObject.UpVector.Value);\n                lightMatrix *= WorldMatrix;\n                MyDebugDraw.DrawSphereWireframe(lightMatrix.Translation, m_light.Range, new Vector3(m_light.Color.X, m_light.Color.Y, m_light.Color.Z), 1);\n                MyDebugDraw.DrawAxis(lightMatrix, 5.0f, 1.0f);\n            }\n\n            //MyDebugDraw.DrawSphereWireframe(m_positionLightTransformed, 1, new Vector3(m_light.Color.X, m_light.Color.Y, m_light.Color.Z), 1);\n\n\n            //MyDebugDraw.DrawSphereWireframe(WorldMatrix.Translation, ModelLod0.BoundingSphere.Radius, Vector3.Up, 1.0f);\n            //MyDebugDraw.DrawSphereWireframe(Vector3.Transform(ModelLod0.BoundingSphere.Center, WorldMatrix), ModelLod0.BoundingSphere.Radius, Vector3.Right, 1.0f);\n\n            if (MyGuiManager.GetScreenDebugBot() != null)\n            {\n                for (int i = 1; i < RouteMemory.GetCount(); i++)\n                {\n                    MyDebugDraw.DrawLine3D(RouteMemory.GetItem(i - 1), RouteMemory.GetItem(i), Color.White, Color.Red);\n                }\n\n\n                if (Leader == MySession.PlayerShip)\n                {\n                    for (int i = 1; i < RouteMemory.GetCount(); i++)\n                    {\n                        MyDebugDraw.DrawLine3D(((MySmallShip)Leader).RouteMemory.GetItem(i - 1), ((MySmallShip)Leader).RouteMemory.GetItem(i), Color.White, Color.Green);\n                    }\n                }\n            }\n\n            if (this == MySession.PlayerShip && DebugDrawSecondaryCameraBoundingFrustum)\n            {\n                MySecondaryCamera.Instance.DebugDraw();\n            }\n            return true;\n        }\n\n        void DebugDrawSubobject(StringBuilder text, Matrix matrix, Vector3 color)\n        {\n            float radius = 0.1f;\n            Matrix worldMatrix = this.WorldMatrix;\n\n            matrix *= worldMatrix;\n            MyDebugDraw.DrawSphereWireframe(matrix.Translation, radius, color, 1);\n            MyDebugDraw.DrawAxis(matrix, 5.0f, 1.0f);\n\n            MyDebugDraw.DrawText(matrix.Translation, text, Color.White, 0.5f);\n        }\n\n        void DebugDrawSubobject(MyModelSubObject subObject, Vector3 color)\n        {\n            if (subObject != null)\n            {\n                Vector3 forward = Vector3.Forward;\n                if (subObject.ForwardVector.HasValue)\n                    forward = subObject.ForwardVector.Value;\n                Vector3 up = Vector3.Up;\n                if (subObject.UpVector.HasValue)\n                    up = subObject.UpVector.Value;\n\n                Matrix thrustMatrix = Matrix.CreateWorld(subObject.Position, forward, up);\n\n                DebugDrawSubobject(new StringBuilder(subObject.Name), thrustMatrix, color);\n            }\n        }\n\n        void DebugDrawSubobject(List<MyModelShipSubOject> subObjects, Vector3 color)\n        {\n            foreach (MyModelShipSubOject subObject in subObjects)\n            {\n                DebugDrawSubobject(subObject.ModelSubObject, color);\n            }\n        }\n\n        void DebugDrawWeapons()\n        {\n            foreach (MyWeaponSlot weaponSlot in Weapons.WeaponSlots)\n            {\n                DebugDrawSubobject(weaponSlot.WeaponSubObject, weaponSlot.IsMounted() ? Color.Green.ToVector3() : Color.Yellow.ToVector3());\n            }\n\n            if (Weapons.GetMountedDrill() != null)\n            {\n                DebugDrawSubobject(new StringBuilder(\"Drill\"), Weapons.GetMountedDrill().LocalMatrix, Vector3.One);\n            }\n            if (Weapons.GetMountedHarvestingDevice() != null)\n            {\n                DebugDrawSubobject(new StringBuilder(\"Harvester\"), Weapons.GetMountedHarvestingDevice().LocalMatrix, Vector3.One);\n            }\n        }\n\n        /// <summary>\n        /// Gets the intersection with line.\n        /// </summary>\n        /// <param name=\"line\">The line.</param>\n        /// <returns></returns>\n        public override bool GetIntersectionWithLine(ref MyLine line, out MyIntersectionResultLineTriangleEx? t, IntersectionFlags flags = IntersectionFlags.ALL_TRIANGLES)\n        {\n            t = null;\n            //  First check bounding sphere of whole physic object. We must trust that all his childs are inside of default model bounding sphere.\n            Matrix worldMatrix = this.WorldMatrix;\n            BoundingSphere boundingSphere = new BoundingSphere(MyUtils.GetTransform(ModelLod0.BoundingSphere.Center, ref worldMatrix), ModelLod0.BoundingSphere.Radius);\n            if (MyUtils.IsLineIntersectingBoundingSphere(ref line, ref boundingSphere) == false)\n                return false;\n\n            //  Test against default object model\n            MyIntersectionResultLineTriangleEx? intersectionWithBase;\n            base.GetIntersectionWithLine(ref line, out intersectionWithBase);\n\n            //  Test against childs of this phys object (in this case guns)\n            MyIntersectionResultLineTriangleEx? intersectionWithWeapons = Weapons != null ? Weapons.GetIntersectionWithLine(ref line) : null;\n\n            //  Find closer intersection of these two\n            MyIntersectionResultLineTriangleEx? result = MyIntersectionResultLineTriangleEx.GetCloserIntersection(ref intersectionWithBase, ref intersectionWithWeapons);\n\n            //  Only if this is \"player's ship\" - thus someone is siting in inside (this is an optimization - enemy ships don't render glass decals, they don't need this code)\n            if (this == MySession.PlayerShip)\n            {\n                //  Intersection with ideal glass\n                if (GetShipCockpitGlass() != null && GetShipCockpitGlass().ModelLod0 != null && GetShipCockpitGlass().ModelLod0.GetTrianglePruningStructure() != null)\n                {\n                    var intersectionGlass =\n                        GetShipCockpitGlass().ModelLod0.GetTrianglePruningStructure().GetIntersectionWithLine(\n                            GetShipCockpitGlass(), ref line, IntersectionFlags.FLIPPED_TRIANGLES);\n\n                    const float GLASS_DISTANCE_TOLERANCE = 3 * MySmallShipConstants.ALL_SMALL_SHIP_MODEL_SCALE;\n                    if (MyIntersectionResultLineTriangleEx.IsDistanceLessThanTolerance(ref result, ref intersectionGlass, GLASS_DISTANCE_TOLERANCE))\n                    {\n                        result = intersectionGlass;\n                    }\n                }\n            }\n            t = result;\n\n            return result != null;\n        }\n\n        /// <summary>\n        /// \n        /// </summary>\n        public override void Close()\n        {\n            Debug.Assert(!Closed, \"Closing already closed entity\");\n\n            MySession.Static.Inventory.OnInventoryContentChange -= CheckPointInventory_OnInventoryContentChange;\n\n            if (ToolKits != null)\n            {\n                ToolKits.Close();\n                ToolKits = null;\n            }\n\n            TradeDetector = null;\n            BuildDetector = null;\n            MotherShipDetector = null;\n            UseableEntityDetector = null;\n\n            if (!m_groupMask.Equals(MyGroupMask.Empty))\n                MyPhysics.physicsSystem.GetRigidBodyModule().GetGroupMaskManager().PushBackGroupMask(GroupMask);\n\n            RemoveLight();\n\n            m_subObjectEngineThrustBackwardSmallLeftside.Clear();\n            m_subObjectEngineThrustBackwardSmallRightside.Clear();\n            m_subObjectEngineThrustBackwardLeftside.Clear();\n            m_subObjectEngineThrustBackwardRightside.Clear();\n            m_subObjectEngineThrustBackward2Leftside.Clear();\n            m_subObjectEngineThrustBackward2Rightside.Clear();\n            m_subObjectEngineThrustBackward2Middle.Clear();\n            m_subObjectEngineThrustForwardLeftside.Clear();\n            m_subObjectEngineThrustForwardRightside.Clear();\n            m_subObjectEngineThrustStrafeLeft.Clear();\n            m_subObjectEngineThrustStrafeRight.Clear();\n            m_subObjectEngineThrustUpLeftside.Clear();\n            m_subObjectEngineThrustUpRightside.Clear();\n            m_subObjectEngineThrustDownLeftside.Clear();\n            m_subObjectEngineThrustDownRightside.Clear();\n            m_subObjectReflectorLeft.Clear();\n            m_subObjectReflectorRight.Clear();\n\n            foreach (MyModelShipSubOject subObject in m_subObjects)\n            {\n                if (subObject.Light != null)\n                {\n                    MyLights.RemoveLight(subObject.Light);\n                    subObject.Light = null;\n                }\n\n                m_modelSubObjectsPool.Deallocate(subObject);\n            }\n\n            StopSounds();\n\n            Weapons.Close();\n\n            if (m_damageEffect != null)\n            {\n                m_damageEffect.Stop();\n                m_damageEffect = null;\n            }\n\n            if (m_tradeNotification != null)\n            {\n                m_tradeNotification.Disappear();\n            }\n            if (m_buildNotification != null)\n            {\n                m_buildNotification.Disappear();\n            }\n            if (m_travelNotification != null)\n            {\n                m_travelNotification.Disappear();\n            }\n            if (m_securityControlHUBNotification != null)\n            {\n                m_securityControlHUBNotification.Disappear();\n            }\n\n            MyHudWarnings.Remove(this);\n            MyGuiScreenInventoryManagerForGame.OpeningInventoryScreen -= OpeningInventoryScreen;\n            MyGuiScreenInventoryManagerForGame.InventoryScreenClosed -= InventoryScreenClosed;\n\n            base.Close();\n\n            m_unifiedWeaponCues = null;\n            m_smallShipWeapons = null;\n        }\n\n        public void StopSounds()\n        {\n            StopEngineSounds(SharpDX.XACT3.StopFlags.Immediate);\n            if (m_playerBreathing != null) m_playerBreathing.Value.Stop(SharpDX.XACT3.StopFlags.Immediate);\n\n            if (m_unifiedWeaponCues != null) // can be null for e.g. drone (it has no weapons)\n            {\n                foreach (MySoundCue? soundCue in m_unifiedWeaponCues)\n                {\n                    if (soundCue != null)\n                    {\n                        soundCue.Value.Stop(SharpDX.XACT3.StopFlags.Immediate);\n                    }\n                }\n            }\n        }\n\n        /// <summary>\n        /// Called when [world position changed].\n        /// </summary>\n        /// <param name=\"source\">The source object that caused this event.</param>\n        public override void OnWorldPositionChanged(object source)\n        {\n            base.OnWorldPositionChanged(source);\n\n            if (MyGuiScreenGamePlay.Static == null)\n            {\n                return;\n            }\n\n            if (this == MySession.PlayerShip)\n            {\n                UpdatePlayerHeadForCockpitInteriorWorldMatrix();\n            }\n\n            if (MySession.Is25DSector)\n            {\n                // if (!(this is MySmallShipBot))\n                {\n                    var worldMatrix = this.WorldMatrix;\n                    var position = WorldMatrix.Translation;\n                    position.Y = 0;\n                    worldMatrix.Translation = position;\n\n                    if (this == MySession.PlayerShip)\n                    {\n                        //worldMatrix.Up = Vector3.Up;\n                        //worldMatrix.Forward = Vector3.Cross(worldMatrix.Up, worldMatrix.Right);\n                    }\n\n\n                    this.WorldMatrix = worldMatrix;\n                    if (this.Physics != null)\n                    {\n                        this.Physics.LinearVelocity = new Vector3(this.Physics.LinearVelocity.X, 0, this.Physics.LinearVelocity.Z);\n                    }\n                }\n            }\n\n        }\n\n        private void StopEngineSounds(SharpDX.XACT3.StopFlags stopOptions)\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"StopEngineSounds\");\n\n            if (m_engineIdleCue != null) m_engineIdleCue.Value.Stop(stopOptions);\n            if (m_engineOnOffSound != null) m_engineOnOffSound.Value.Stop(stopOptions);\n            if (m_engineMovingCue != null) m_engineMovingCue.Value.Stop(stopOptions);\n            if (m_engineAfterburnerCue != null) m_engineAfterburnerCue.Value.Stop(stopOptions);\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        void UpdatePlayerHeadForCockpitInteriorWorldMatrix()\n        {\n            Matrix worldMatrixAtZero = Matrix.CreateWorld(Vector3.Zero, WorldMatrix.Forward, WorldMatrix.Up);\n            PlayerHeadForCockpitInteriorWorldMatrix = Matrix.CreateTranslation(-m_playerHeadLocal +\n                                                                               m_subObjectPlayerHeadForCockpitInteriorTranslation.ModelSubObject.Position) *\n                                                      worldMatrixAtZero;\n\n            PlayerHeadForGunsWorldMatrix = Matrix.CreateTranslation(-m_playerHeadLocal +\n                -m_subObjectPlayerHeadForCockpitInteriorTranslation.ModelSubObject.Position)\n                * worldMatrixAtZero;\n        }\n\n        /// <summary>\n        /// Called when [contact] with entity.\n        /// </summary>\n        /// <param name=\"constraint\">The constraint.</param>\n        /// <returns></returns>\n        protected override bool OnContact(ref MyRBSolverConstraint constraint)\n        {\n            var entityA = (constraint.m_SolverBody1.m_RigidBody.m_UserData as MyPhysicsBody).Entity;\n            var entityB = (constraint.m_SolverBody2.m_RigidBody.m_UserData as MyPhysicsBody).Entity;\n\n            Debug.Assert(entityA == this || entityB == this, \"Contact is not with this smallship\");\n\n            var otherEntity = entityA == this ? entityB : entityA;\n\n            if (!PlayerSimulation)\n            {\n                if (otherEntity is MyEntityDetector)\n                    return true;\n\n                return false;\n            }\n\n            // For ammo base, don't use \"lazy\" collision reaction\n            if (otherEntity is MyAmmoBase)\n                return true;\n\n            var otherSmallShip = otherEntity as MySmallShip;\n            if (otherSmallShip != null)\n            {\n                //// disable collisions of player friends with player\n                //if (otherSmallShip.Leader == MySession.PlayerShip && Leader == MySession.PlayerShip)\n                //{\n                //    return false;\n                //}\n\n                if (otherSmallShip.Leader == this && this == MySession.PlayerShip)\n                {\n                    return false;\n                }\n\n                // disable collisions of player and other peers\n                if (MyMultiplayerPeers.Static.IsStarted)\n                {\n                    bool a = false;\n                    bool b = false;\n                    foreach (var player in MyMultiplayerPeers.Static.Players)\n\t                {\n                        a |= player.Ship == this;\n                        b |= player.Ship == this;\n\n                        if (a && b)\n\t                    {\n                            return false;\n\t                    }\n\t                }\n                }\n\n                if (this == MySession.PlayerShip && MySession.PlayerFriends.Contains(otherSmallShip))\n                {\n                    return false;\n                }\n            }\n            \n            if ((otherEntity is MySmallShip || otherEntity is MyCargoBox) && this == MySession.PlayerShip)\n            {\n                //There is 0 because otherwise collision with marcus is too bouncy\n                this.Physics.AngularDamping = m_angularDampingSlowdown;\n                //return true;\n            }\n\n            //this.Physics.AngularDamping = 0.0f;\n\n            m_hasCollided = true;\n            MyUtils.AssertIsValid(Physics.LinearVelocity);\n            MyUtils.AssertIsValid(constraint.m_Normal);\n            if (MyMwcUtils.IsZero(Physics.LinearVelocity))// can be because ship switches between static during harvest\n                return true;\n            m_collisionFriction = Math.Abs(Vector3.Dot(Vector3.Normalize(Physics.LinearVelocity), constraint.m_Normal));\n\n            if (constraint.m_SolverBody1.m_RigidBody.m_UserData == this.Physics)\n            {\n                //  Marek Rosa: I have disabled Ales' trick with rotating in one direction after contact, because it seems to be not needed after I switched small ship from sphere to a box\n                constraint.m_Body1LocalPointCrossedNormal = Vector3.Zero;\n                //constraint.m_Body1LocalPointCrossedNormal *= 0.02f;\n            }\n            else if (constraint.m_SolverBody2.m_RigidBody.m_UserData == this.Physics)\n            {\n                //  Marek Rosa: I have disabled Ales' trick with rotating in one direction after contact, because it seems to be not needed after I switched small ship from sphere to a box\n                constraint.m_Body2LocalPointCrossedNormal = Vector3.Zero;\n                //constraint.m_Body2LocalPointCrossedNormal *= 0.02f;\n            }\n\n            return true;\n        }\n\n        protected override void OnContactEnd(MyContactEventInfo contactInfo)\n        {\n            base.OnContactEnd(contactInfo);\n            this.Physics.AngularDamping = m_angularDampingDefault;\n        }\n\n        /// <summary>\n        /// Called when [contact touches] with this entity.\n        /// </summary>\n        /// <param name=\"contactInfo\">The contact info.</param>\n        protected override void OnContactTouch(MyContactEventInfo contactInfo)\n        {\n            /*var physicObject0 = (MyRigidBody) contactInfo.m_RigidBody1.m_UserData;\n            var physicObject1 = (MyRigidBody) contactInfo.m_RigidBody2.m_UserData;\n\n            float minSpeedForScrapeSound = 5;\n\n            if (physicObject0.Speed > 5 || physicObject1.Speed > minSpeedForScrapeSound)\n            {\n                base.OnContactTouch(contactInfo);\n            }*/\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MySmallShip\";\n        }\n\n        #endregion\n\n        #region Secondary camera\n\n        // determines which camera is active: 0 for rear-mirror, 1 for missile, 2+ for remote cameras.\n        private int m_selectedRemoteCameraIndex = 0;\n        private int m_selectedDroneIndex = 0;\n\n        private readonly List<MyRemoteCamera> m_remoteCameras = new List<MyRemoteCamera>();\n\n        private readonly StringBuilder m_remoteCameraStringBuilder = new StringBuilder();\n\n        public void AddRemoteCamera(MyRemoteCamera remoteCamera)\n        {\n            m_remoteCameras.Add(remoteCamera);\n        }\n\n        public void RemoveRemoteCamera(MyRemoteCamera remoteCamera)\n        {\n            if (IsSelectedRemoteCamera())\n            {\n                MySecondaryCamera.Instance.SecondaryCameraAttachedTo = MySecondaryCameraAttachedTo.RearMirror;\n                UpdateSecondaryCamera();\n            }\n            m_remoteCameras.Remove(remoteCamera);\n        }\n\n        public bool IsSelectedRemoteCamera()\n        {\n            return MySecondaryCamera.Instance.SecondaryCameraAttachedTo == MySecondaryCameraAttachedTo.RemoteCamera;\n        }\n\n        public MyRemoteCamera GetSelectedRemoteCamera()\n        {\n            if (IsSelectedRemoteCamera())\n                return m_remoteCameras[m_selectedRemoteCameraIndex];\n\n            return null;\n        }\n\n        public bool IsSelectedDrone()\n        {\n            return MySecondaryCamera.Instance.SecondaryCameraAttachedTo == MySecondaryCameraAttachedTo.Drone;\n        }\n\n        public MyDrone GetSelectedDrone()\n        {\n            if (IsSelectedDrone())\n                return m_drones[m_selectedDroneIndex];\n\n            return null;\n        }\n\n        public void SelectPreviousSecondaryCamera()\n        {\n            switch (MySecondaryCamera.Instance.SecondaryCameraAttachedTo)\n            {\n                case MySecondaryCameraAttachedTo.RearMirror:\n                    MySecondaryCamera.Instance.SecondaryCameraAttachedTo = MySecondaryCameraAttachedTo.RemoteCamera;\n                    m_selectedRemoteCameraIndex = m_remoteCameras.Count - 1;\n                    break;\n\n                case MySecondaryCameraAttachedTo.Missile:\n                    MySecondaryCamera.Instance.SecondaryCameraAttachedTo = MySecondaryCameraAttachedTo.RearMirror;\n                    break;\n\n                case MySecondaryCameraAttachedTo.Drone:\n                    m_selectedDroneIndex--;\n                    if (m_selectedDroneIndex < 0)\n                    {\n                        m_selectedDroneIndex = 0;\n                        MySecondaryCamera.Instance.SecondaryCameraAttachedTo = MySecondaryCameraAttachedTo.Missile;\n                    }\n                    break;\n\n                case MySecondaryCameraAttachedTo.RemoteCamera:\n                    m_selectedRemoteCameraIndex--;\n                    if (m_selectedRemoteCameraIndex < 0)\n                    {\n                        m_selectedRemoteCameraIndex = 0;\n                        MySecondaryCamera.Instance.SecondaryCameraAttachedTo = MySecondaryCameraAttachedTo.Drone;\n                        m_selectedDroneIndex = m_drones.Count - 1;\n                    }\n                    break;\n\n                case MySecondaryCameraAttachedTo.PlayerShip:\n                    {\n                        break;\n                    }\n                default:\n                    throw new ArgumentOutOfRangeException();\n            }\n\n            UpdateSecondaryCamera(wasDecrement: true);\n        }\n\n        public void SelectNextSecondaryCamera()\n        {\n            switch (MySecondaryCamera.Instance.SecondaryCameraAttachedTo)\n            {\n                case MySecondaryCameraAttachedTo.RearMirror:\n                    MySecondaryCamera.Instance.SecondaryCameraAttachedTo = MySecondaryCameraAttachedTo.Missile;\n                    break;\n\n                case MySecondaryCameraAttachedTo.Missile:\n                    MySecondaryCamera.Instance.SecondaryCameraAttachedTo = MySecondaryCameraAttachedTo.Drone;\n                    m_selectedDroneIndex = 0;\n                    break;\n\n                case MySecondaryCameraAttachedTo.Drone:\n                    m_selectedDroneIndex++;\n                    if (m_selectedDroneIndex > m_drones.Count - 1)\n                    {\n                        m_selectedDroneIndex = m_drones.Count - 1;\n                        MySecondaryCamera.Instance.SecondaryCameraAttachedTo = MySecondaryCameraAttachedTo.RemoteCamera;\n                        m_selectedRemoteCameraIndex = 0;\n                    }\n                    break;\n\n                case MySecondaryCameraAttachedTo.RemoteCamera:\n                    m_selectedRemoteCameraIndex++;\n                    if (m_selectedRemoteCameraIndex > m_remoteCameras.Count - 1)\n                    {\n                        m_selectedRemoteCameraIndex = m_remoteCameras.Count - 1;\n                        MySecondaryCamera.Instance.SecondaryCameraAttachedTo = MySecondaryCameraAttachedTo.RearMirror;\n                    }\n                    break;\n\n                case MySecondaryCameraAttachedTo.PlayerShip:\n                    {\n                        break;\n                    }\n\n                default:\n                    throw new ArgumentOutOfRangeException();\n            }\n\n            UpdateSecondaryCamera(wasDecrement: false);\n        }\n\n        public void SelectLastRemoteCamera()\n        {\n            MySecondaryCamera.Instance.SecondaryCameraAttachedTo = MySecondaryCameraAttachedTo.RemoteCamera;\n            m_selectedRemoteCameraIndex = m_remoteCameras.Count - 1;\n            UpdateSecondaryCamera();\n        }\n\n        public void SelectLastDroneCamera()\n        {\n            MySecondaryCamera.Instance.SecondaryCameraAttachedTo = MySecondaryCameraAttachedTo.Drone;\n            m_selectedDroneIndex = m_drones.Count - 1;\n            UpdateSecondaryCamera();\n        }\n\n        public void SelectShipCamera()\n        {\n            MySecondaryCamera.Instance.SecondaryCameraAttachedTo = MySecondaryCameraAttachedTo.PlayerShip;\n            MySecondaryCamera.Instance.SetPlayerShip();\n            UpdateSecondaryCamera();\n        }\n\n        public void UpdateSecondaryCamera(bool wasDecrement = false)\n        {\n            bool isCameraAvailable = false;\n\n            switch (MySecondaryCamera.Instance.SecondaryCameraAttachedTo)\n            {\n                case MySecondaryCameraAttachedTo.RearMirror:\n                    MySecondaryCamera.Instance.SetRearMirror();\n                    isCameraAvailable = true;\n                    break;\n\n                case MySecondaryCameraAttachedTo.Missile:\n                    if (LastMissileFired != null && !LastMissileFired.IsExploded())\n                    {\n                        MySecondaryCamera.Instance.SetEntityCamera(LastMissileFired);\n                        isCameraAvailable = true;\n                    }\n                    break;\n\n                case MySecondaryCameraAttachedTo.Drone:\n                    if (m_drones.Count > 0 && m_selectedDroneIndex < m_drones.Count)\n                    {\n                        MySecondaryCamera.Instance.SetEntityCamera(GetSelectedDrone());\n                        isCameraAvailable = true;\n                    }\n                    break;\n\n                case MySecondaryCameraAttachedTo.RemoteCamera:\n                    if (m_remoteCameras.Count > 0 && m_selectedRemoteCameraIndex < m_remoteCameras.Count)\n                    {\n                        MySecondaryCamera.Instance.SetEntityCamera(GetSelectedRemoteCamera());\n                        isCameraAvailable = true;\n                    }\n                    break;\n\n                // This can only be true in special like, such as player is controlling drone\n                case MySecondaryCameraAttachedTo.PlayerShip:\n                    Debug.Assert(MySession.PlayerShip != null);\n                    isCameraAvailable = true;\n                    break;\n\n                default:\n                    throw new ArgumentOutOfRangeException();\n            }\n\n            if (!isCameraAvailable)\n            {\n                if (wasDecrement)\n                {\n                    SelectPreviousSecondaryCamera();\n                }\n                else\n                {\n                    SelectNextSecondaryCamera();\n                }\n            }\n        }\n\n        public StringBuilder GetCameraDescription()\n        {\n            switch (MySecondaryCamera.Instance.SecondaryCameraAttachedTo)\n            {\n                case MySecondaryCameraAttachedTo.RearMirror:\n                    return MyTextsWrapper.Get(MyTextsWrapperEnum.RearViewMirror);\n\n                case MySecondaryCameraAttachedTo.Drone:\n                    m_remoteCameraStringBuilder.Clear();\n                    m_remoteCameraStringBuilder.AppendFormat(\n                        MyTextsWrapper.Get(MyTextsWrapperEnum.DroneNo).ToString(),\n                        (m_selectedDroneIndex + 1),\n                        MyGuiManager.GetInput().GetGameControlTextEnum(MyGameControlEnums.DRONE_CONTROL)\n                    );\n                    return m_remoteCameraStringBuilder;\n\n                case MySecondaryCameraAttachedTo.Missile:\n                    return MyTextsWrapper.Get(MyTextsWrapperEnum.MissileCamera);\n\n                case MySecondaryCameraAttachedTo.RemoteCamera:\n                    MyRemoteCamera remoteCamera = null;\n                    if (MySecondaryCamera.Instance != null)\n                        remoteCamera = MySecondaryCamera.Instance.GetCameraEntity() as MyRemoteCamera;\n\n                    m_remoteCameraStringBuilder.Clear();\n                    m_remoteCameraStringBuilder.AppendFormat(\n                        MyTextsWrapper.Get(remoteCamera != null && remoteCamera.CanBeRotated() ? MyTextsWrapperEnum.RemoteCameraNoRotate : MyTextsWrapperEnum.RemoteCameraNo).ToString(),\n                        (m_selectedRemoteCameraIndex + 1),\n                        MyGuiManager.GetInput().GetGameControlTextEnum(MyGameControlEnums.CONTROL_SECONDARY_CAMERA));\n                    return m_remoteCameraStringBuilder;\n\n                case MySecondaryCameraAttachedTo.PlayerShip:\n                    return MyTextsWrapper.Get(MyTextsWrapperEnum.Ship);\n\n                default:\n                    throw new ArgumentOutOfRangeException();\n            }\n        }\n\n        #endregion\n\n        #region Remote bombs\n\n        readonly List<MyRemoteBomb> m_firedRemoteBombs =\n            new List<MyRemoteBomb>(MyUniversalLauncherConstants.MAX_REMOTEBOMBS_COUNT);\n\n        public void AddRemoteBomb(MyRemoteBomb bomb)\n        {\n            m_firedRemoteBombs.Add(bomb);\n        }\n\n        public void RemoveRemoteBomb(MyRemoteBomb bomb)\n        {\n            m_firedRemoteBombs.Remove(bomb);\n        }\n\n        public int RemoteBombCount\n        {\n            get { return m_firedRemoteBombs.Count; }\n        }\n\n        #endregion\n\n        #region Ammo special function\n\n        /// <summary>\n        /// Invokes ammo special if special ammo exists in assignment ammo.\n        /// </summary>\n        /// <remarks>\n        /// This is hardcoded now, it would be better if it was more robust.\n        /// </remarks>\n        public void InvokeAmmoSpecialFunction()\n        {\n            MyAudio.AddCue2dOr3d(this, MySoundCuesEnum.SfxHudRadarMode,\n                    GetPosition(), WorldMatrix.Forward, WorldMatrix.Up, Physics.LinearVelocity);\n\n            if (HasFiredRemoteBombs())\n            {\n                foreach (var remoteBomb in m_firedRemoteBombs)\n                {\n                    remoteBomb.Explode();\n                }\n                m_firedRemoteBombs.Clear();\n            }\n            else\n            {\n                Config.TimeBombTimer.ChangeValueUp();\n            }\n        }\n\n        public bool HasFiredRemoteBombs()\n        {\n            return m_firedRemoteBombs.Count > 0;\n        }\n\n        #endregion\n\n        public override MyMwcObjectBuilder_FactionEnum Faction\n        {\n            get\n            {\n                if (this == MySession.PlayerShip && MySession.Static != null)\n                    return MySession.Static.Player.Faction;\n                return m_faction;\n            }\n            set\n            {\n                System.Diagnostics.Debug.Assert(value > 0, \"Cannot assign faction 'None' to ship\");\n                base.Faction = value;\n                if (MySession.PlayerShip != null)\n                {\n\n                    if (MyFactions.GetFactionsRelation(MySession.PlayerShip.Faction, value) == MyFactionRelationEnum.Enemy)\n                    {\n                        if ((ShipType != MyMwcObjectBuilder_SmallShip_TypesEnum.YG) &&\n                                   (ShipType != MyMwcObjectBuilder_SmallShip_TypesEnum.ORG) &&\n                                   (ShipType != MyMwcObjectBuilder_SmallShip_TypesEnum.STANISLAV) &&\n                                   (ShipType != MyMwcObjectBuilder_SmallShip_TypesEnum.STEELHEAD))\n                        {\n                        }\n                    }\n                }\n            }\n        }\n\n        internal void RemoveLight()\n        {\n            if (m_light != null)\n            {\n                MyLights.RemoveLight(m_light);\n                m_light = null;\n            }\n        }\n\n        internal void RemoveSubObjectLights()\n        {\n            foreach (MyModelShipSubOject subObject in m_subObjects)\n            {\n                if (subObject.Light != null)\n                {\n                    MyLights.RemoveLight(subObject.Light);\n                    subObject.Light = null;\n                }\n            }\n        }\n\n        public MyMwcObjectBuilder_FactionEnum FalseFactions\n        {\n            get;\n            private set;\n        }\n\n        public bool WasRecentlyLooted()\n        {\n            return m_isLooted || MyMinerGame.TotalGamePlayTimeInMilliseconds - m_lastLootTime <= MyGameplayConstants.SHIP_DESTRUCTION_TIME_AFTER_LOOT * 1000;\n        }\n\n        #region Drones\n\n        private readonly List<MyDrone> m_drones = new List<MyDrone>();\n\n        public List<MyDrone> Drones\n        {\n            get { return m_drones; }\n        }\n\n        private int m_lastTimeDeployedDrone;\n        MyHudTextWarning m_sectorBoundariesWarning;\n\n\n        /// <summary>\n        /// Tries to deploy a drone from inventory. Fails if there are no drone items in inventory\n        /// or if there is already a drone deployed.\n        /// </summary>\n        /// <returns>True if drone was deployed successfully.</returns>\n        public bool TryDeployDrone()\n        {\n            if ((MyMinerGame.TotalGamePlayTimeInMilliseconds - m_lastTimeDeployedDrone) > MySmallShipConstants.DRONE_RELEASE_INTERVAL)\n            {\n                var droneItem = Inventory.GetInventoryItem(MyMwcObjectBuilderTypeEnum.Drone, null);\n                // because in missions you will have drones in session's inventory\n                if (droneItem == null)\n                {\n                    droneItem = MySession.Static.Inventory.GetInventoryItem(MyMwcObjectBuilderTypeEnum.Drone, null);\n                }\n                if (droneItem != null)\n                {\n                    var droneInitialPosition = WorldMatrix.Translation + WorldMatrix.Forward * WorldAABB.Size().Z;\n                    var lineToTestDroneDeploy = new MyLine(this.GetPosition(), droneInitialPosition + 30 * WorldMatrix.Forward);\n                    var intersection = MyEntities.GetIntersectionWithLine(ref lineToTestDroneDeploy, this, null);\n                    if (!intersection.HasValue)\n                    {\n                        MyInventory droneInventory = droneItem.Owner as MyInventory;\n                        Debug.Assert(droneItem != null);\n                        droneInventory.RemoveInventoryItemAmount(ref droneItem, 1);\n\n                        var droneBuilder = (MyMwcObjectBuilder_Drone)droneItem.GetInventoryItemObjectBuilder(false);\n                        if (droneBuilder.Faction == 0)\n                        {\n                            Debug.Fail(\"Wrong drone object builder faction. Should not happen.\");\n                            droneBuilder.Faction = MyMwcObjectBuilder_FactionEnum.None;\n                        }\n\n                        DeployDrone((MyMwcObjectBuilder_Drone)droneBuilder.Clone(), droneInitialPosition);\n                        m_lastTimeDeployedDrone = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n                        return true;\n                    }\n                }\n            }\n\n            return false;\n        }\n\n        private void DeployDrone(MyMwcObjectBuilder_Drone objectBuilder, Vector3 droneInitialPosition)\n        {\n            objectBuilder.Faction = this.Faction;\n            objectBuilder.OwnerId = this.EntityId.Value.NumericValue;\n            objectBuilder.EntityId = MyEntityIdentifier.AllocateId().NumericValue;\n            var drone = (MyDrone)MyEntities.CreateFromObjectBuilderAndAdd(\n                null, objectBuilder,\n                Matrix.CreateWorld(droneInitialPosition, WorldMatrix.Forward, WorldMatrix.Up));\n            drone.OwnerShip = this;\n            m_drones.Add(drone);\n        }\n\n        public void RemoveDrone(MyDrone drone)\n        {\n            Debug.Assert(m_drones.Contains(drone));\n            m_drones.Remove(drone);\n            UpdateSecondaryCamera(true);\n        }\n\n        public void AddDrone(MyDrone drone)\n        {\n            Debug.Assert(!m_drones.Contains(drone), \"Duplicit drone add.\");\n            m_drones.Add(drone);\n        }\n\n        #endregion\n\n        /// <summary>\n        /// Called on player ship after CloseAll (e.g. when leaving the sector, in editor, ...).\n        /// Clears all references to other entities (now non-existing).\n        /// </summary>\n        public void CleanupAfterCloseAll()\n        {\n        }\n\n        /// <summary>\n        /// Because, playership has fixed entity ID, so we must remove it, because when we want init new playership, than we need this ID\n        /// </summary>        \n        private void PlayerShip_OnMarkForClose(MyEntity obj)\n        {\n            OnMarkForClose -= PlayerShip_OnMarkForClose;\n        }\n\n        public void AddFriendlyFireDamage(MyEntity entity, float damage)\n        {\n            uint entityId = entity.EntityId.Value.NumericValue;\n            MyDamageOverTimeItem item;\n            if (!m_damageOverTimeList.TryGetValue(entityId, out item))\n            {\n                item = new MyDamageOverTimeItem();\n                m_damageOverTimeList.Add(entityId, item);\n            }\n            item.IntervalDamage += damage;\n        }\n\n\n        public void UpdateFriendlyFireDamage()\n        {\n            if (m_friendlyFireDamageTimer > MySmallShipConstants.DAMAGE_OVER_TIME_INTERVAL && MyGuiScreenGamePlay.Static.IsGameStoryActive())\n            {\n                m_friendlyFireDamageTimer = 0;\n                m_damageOverTimeRemoveBuffer.Clear();\n\n                foreach (var item in m_damageOverTimeList)\n                {\n                    if (item.Value.IntervalDamage <= 0)\n                    {\n                        m_damageOverTimeRemoveBuffer.Add(item.Key);\n                        continue;\n                    }\n\n                    item.Value.Damage += item.Value.IntervalDamage;\n                    item.Value.IntervalDamage = 0;\n\n                    // Too much friendly damage, turn friends into enemy\n                    if (item.Value.Damage > MySmallShipConstants.MAX_FRIENDLY_DAMAGE)\n                    {\n                        MyFriendlyFire.MakeEnemy(Faction);\n                        MyFriendlyFire.StartGameoverTimer();\n\n                        if (MyMultiplayerGameplay.IsRunning)\n                        {\n                            MyMultiplayerGameplay.Static.FriendlyFire(MyFriendlyFireEnum.AGGRO);\n                        }\n\n                        m_damageOverTimeRemoveBuffer.Add(item.Key);\n                    }\n                }\n\n                // Remove obsolete items\n                foreach (var entityID in m_damageOverTimeRemoveBuffer)\n                {\n                    m_damageOverTimeList.Remove(entityID);\n                }\n            }\n            else\n            {\n                m_friendlyFireDamageTimer += MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS;\n            }\n        }\n\n        public void Refill()\n        {\n            this.Fuel = this.MaxFuel;\n            this.Oxygen = this.MaxOxygen;\n            this.AddHealth(this.MaxHealth);\n            this.ArmorHealth = this.MaxArmorHealth;\n        }\n\n        public void SetParked(bool staticPhysics)\n        {\n            PersistentFlags |= MyPersistentEntityFlags.Parked;\n            if (staticPhysics)\n            {\n                PersistentFlags |= MyPersistentEntityFlags.StaticPhysics;\n            }\n            UpdateParked();\n        }\n\n        private void UpdateParked()\n        {\n            if ((PersistentFlags & MyPersistentEntityFlags.Parked) != 0)\n            {\n                AIPriority = -1;    // stop attacks from other bots\n                HideFromBots();\n                Config.Engine.SetOff();\n                Physics.Static = (PersistentFlags & MyPersistentEntityFlags.StaticPhysics) != 0;\n                if (!Physics.Static)\n                {\n                    Physics.LinearDamping = 0.5f;\n                    Physics.AngularDamping = 0.85f;\n                    Physics.MaxLinearVelocity = 350;\n                    Physics.MaxAngularVelocity = 0.5f;\n                }\n                Enabled = false;\n                MyHud.RemoveText(this);\n\n                if (MySession.PlayerFriends.Contains(this))\n                    MySession.PlayerFriends.Remove(this);\n\n                MySmallShipBot bot = this as MySmallShipBot;\n                if (bot != null)\n                {\n                    bot.ActiveAI = false;\n                }\n            }\n        }\n\n        public override bool Enabled\n        {\n            get\n            {\n                return base.Enabled;\n            }\n            set\n            {\n                base.Enabled = value;\n\n                if (!value)\n                {\n                    if (Weapons != null)\n                    {\n                        Weapons.StopAllSounds();\n                    }\n                }\n            }\n        }\n\n        public override void MarkForClose()\n        {\n            if (MySession.PlayerFriends.Contains(this))\n                MySession.PlayerFriends.Remove(this);\n\n            base.MarkForClose();\n        }\n\n        //MWBuilder method\n        public float GetStepRatio()\n        {\n            int diff = MyMinerGame.TotalTimeInMilliseconds - m_stepStartMS;\n            diff = (int)MathHelper.Clamp(diff, 0, m_stepDurationMS);\n\n            return (float)diff / m_stepDurationMS;\n        }\n\n        public override string GetCorrectDisplayName()\n        {\n            if (DisplayName == \"Ship\")\n            {\n                return MyTextsWrapper.Get(MyTextsWrapperEnum.Ship).ToString();\n            }\n\n            return base.GetCorrectDisplayName();\n        }\n    }\n\n    #region Position memory helper class\n    class MyPositionMemory\n    {\n        public FastResourceLock RouteMemoryLock = new FastResourceLock();\n\n        int m_startIndex;\n        int m_count;\n\n        float m_closeRadiusSquared;\n\n        Vector3[] m_positionList;\n\n        public MyPositionMemory(int capacity, float closeRadius)\n        {\n            m_closeRadiusSquared = closeRadius * closeRadius;\n            m_positionList = new Vector3[capacity];\n\n            m_startIndex = 0;\n            m_count = 0;\n        }\n\n        private int GetArrayIndex(int index)\n        {\n            return (m_startIndex + index) % m_positionList.Length;\n        }\n\n        private bool IsFull()\n        {\n            return m_count == m_positionList.Length;\n        }\n\n        public void Add(Vector3 position)\n        {\n            // Don't add position if last and this position are considered same\n            if (m_count > 0 && Vector3.DistanceSquared(GetItem(m_count - 1), position) <= m_closeRadiusSquared)\n            {\n                return;\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"IsFull\");\n            if (IsFull())\n            {\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Remove\");\n                using (RouteMemoryLock.AcquireExclusiveUsing())\n                {\n                    RemoveFirst();\n                }\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n            }\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"GetArrayIndex\");\n            \n            // Add item, increase item count\n            m_positionList[GetArrayIndex(m_count++)] = position;\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        public void RemoveFirst()\n        {\n            if (m_count > 0)\n            {\n                m_startIndex = GetArrayIndex(1);\n                --m_count;\n            }\n        }\n\n        public int GetCount()\n        {\n            return m_count;\n        }\n\n        public Vector3 GetItem(int index)\n        {\n            //Debug.Assert(index >= 0 && index < m_positionList.Length);\n            return m_positionList[GetArrayIndex(index)];\n        }\n\n        public void Copy(MyPositionMemory route)\n        {\n            Debug.Assert(m_positionList.Length == route.m_positionList.Length);\n            if (m_positionList.Length != route.m_positionList.Length)\n            {\n                return;\n            }\n\n            m_startIndex = route.m_startIndex;\n            m_count = route.m_count;\n\n            for (int i = 0; i < m_positionList.Length; i++)\n            {\n                m_positionList[i] = route.m_positionList[i];\n            }\n        }\n    }\n    #endregion\n\n}\n\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Ships/MySmallShipBot.cs",
    "content": "﻿#region Using\n\nusing System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Text;\nusing KeenSoftwareHouse.Library.Memory;\nusing KeenSoftwareHouse.Library.Trace;\nusing MinerWarsMath;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.AppCode.Game.Gameplay;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.GUI.Helpers;\nusing MinerWars.AppCode.Game.HUD;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Entities.Prefabs;\nusing MinerWars.AppCode.Game.Entities.Ships.AI;\nusing MinerWars.AppCode.Game.Entities.Ships.AI.Jobs;\nusing MinerWars.AppCode.Game.Entities.SubObjects;\nusing MinerWars.AppCode.Game.Entities.WayPoints;\nusing MinerWars.AppCode.Game.Entities.Weapons;\nusing MinerWars.AppCode.Game.Physics;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Sessions;\nusing MinerWars.AppCode.Game.TransparentGeometry.Particles;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.AppCode.Physics;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.CommonLIB.AppCode.Utils;\n\nusing ParallelTasks;\nusing SysUtils;\nusing MinerWars.AppCode.Game.Audio.Dialogues;\nusing MinerWars.AppCode.Game.Inventory;\nusing MinerWars.AppCode.Game.Radar;\nusing KeenSoftwareHouse.Library.Parallelization.Threading;\nusing MinerWars.CommonLIB.AppCode.Import;\n\n#endregion\n\nnamespace MinerWars.AppCode.Game.Entities\n{\n    class MySmallShipBot : MySmallShip\n    {\n        public static bool BotLogic = true;\n        public static int TotalAliveBots = 0;\n\n        public int InitTime = 0; //Initialization time in ms \n\n        #region OldWeapons\n        /// <summary>\n        /// Contains current bot's burst times for each weapon slot, based on ammo types.\n        /// For each weapon slot we have some important values:\n        /// 0 - Firing duration tuner    - less for rockets and low amount of ammo weapons, basic value is 10x shot interval for tuner = 1.0\n        /// 1 - Firing frequency tuner   - more for rockets and low amount of ammo weapons\n        /// 2 - Firing Cone tuner        - bot should launch its bigger weapons when it has more chances for hit\n        /// 3 - Firing Distance          - maximal shoot distance for weapon\n        /// 4 - Firing distance tuner    - tuner for shooting range\n        /// 5 - Shot interval            - interval between two shots from weapon\n        /// </summary>\n        private enum MyBotWeaponsParametrsEnum\n        {\n            FiringDurationTuner = 0,\n            FiringFrequencyTuner = 1,\n            FiringConeTuner = 2,\n            FiringDistance = 3,\n            FiringDistanceTuner = 4,\n            ShotIntervalMilliseconds = 5,\n        }\n\n        /// <summary>\n        /// Params of mounted weapons, so bot know when to fire each slot etc.\n        /// </summary>\n        private struct MyBotParams\n        {\n            public float[] WeaponsParams;\n            public MyMwcObjectBuilder_FireKeyEnum FireKey;\n            public MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum WeaponType;\n            public bool Enabled;\n            public float LastShotMilliseconds;\n            public bool ForceUse;\n            public bool HasAmmo;\n        }\n\n        /// <summary>\n        /// Weapon parameters for all weapon slots\n        /// </summary>\n        private MyBotParams[] m_botWeaponParamsAllSlots;\n\n        public MySmallShipBot()\n        {\n            m_includeCargoWeight = true;\n        }\n\n        public void ForceWeaponUse(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum weaponType)\n        {\n            for (int i = 0; i < m_botWeaponParamsAllSlots.Length; i++)\n            {\n                if (m_botWeaponParamsAllSlots[i].WeaponType == weaponType)\n                {\n                    m_botWeaponParamsAllSlots[i].ForceUse = true;\n                    break;\n                }\n            }\n        }\n\n        private bool TryGetWeaponParams(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum weaponType, ref MyBotParams weaponParams)\n        {\n            for (int i = 0; i < m_botWeaponParamsAllSlots.Length; i++)\n            {\n                if (m_botWeaponParamsAllSlots[i].WeaponsParams == null)\n                    continue;\n\n                if (m_botWeaponParamsAllSlots[i].WeaponType == weaponType)\n                {\n                    weaponParams = m_botWeaponParamsAllSlots[i];\n                    return true;\n                }\n            }\n            return false;\n        }\n\n        public bool CanShootWith(MyMwcObjectBuilder_FireKeyEnum fireKey)\n        {\n            var parameters = m_botWeaponParamsAllSlots[(int)fireKey - 1];\n            return parameters.Enabled && parameters.HasAmmo;\n        }\n\n        public void Shoot(MyMwcObjectBuilder_FireKeyEnum fireKey)\n        {\n            if (m_botWeaponParamsAllSlots == null)\n                return;\n\n            MyBotParams weaponParams = m_botWeaponParamsAllSlots[(int)fireKey - 1];\n            \n            if (!weaponParams.Enabled || !weaponParams.HasAmmo)\n            {\n                return;\n            }\n\n            weaponParams.LastShotMilliseconds = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n            Weapons.Fire(fireKey);\n        }\n\n        /// <summary>\n        /// Constants for all mountable weapons\n        /// TODO: numeric params should be taken from editor later\n        /// </summary>\n        private MyBotParams SettingsForWeaponType(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum weaponType, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum ammoType)\n        {\n            var settings = new MyBotParams { WeaponsParams = new float[Enum.GetNames(typeof(MyBotWeaponsParametrsEnum)).Length] };\n\n            switch (weaponType)\n            {\n                case MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Autocanon:\n                    {\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringDurationTuner] = 10.0f;\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringFrequencyTuner] = 0.06f;\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringConeTuner] = 0.2f;\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.ShotIntervalMilliseconds] = MyAutocanonConstants.SHOT_INTERVAL_IN_MILISECONDS;\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringDistanceTuner] = 0.9f;\n                        settings.Enabled = true;\n                        break;\n                    }\n                case MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Shotgun:\n                    {\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringDurationTuner] = 0.5f;\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringFrequencyTuner] = 0.3f;\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringConeTuner] = 1.4f;\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.ShotIntervalMilliseconds] = MyShotgunConstants.SHOT_INTERVAL_IN_MILISECONDS;\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringDistanceTuner] = 0.9f;\n                        settings.Enabled = true;\n                        break;\n                    }\n                case MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Automatic_Rifle_With_Silencer:\n                    {\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringDurationTuner] = 0.3f;\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringFrequencyTuner] = 0.4f;\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringConeTuner] = 0.2f;\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.ShotIntervalMilliseconds] = MyARSConstants.SHOT_INTERVAL_IN_MILISECONDS;\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringDistanceTuner] = 0.9f;\n                        settings.Enabled = true;\n                        break;\n                    }\n                case MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Cannon:\n                    {\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringDurationTuner] = 0.15f;\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringFrequencyTuner] = 0.2f;\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringConeTuner] = 0.25f;\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.ShotIntervalMilliseconds] = MyCannonConstants.SHOT_INTERVAL_IN_MILISECONDS;\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringDistanceTuner] = 0.9f;\n                        settings.Enabled = true;\n                        break;\n                    }\n                case MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Machine_Gun:\n                    {\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringDurationTuner] = 0.6f;\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringFrequencyTuner] = 0.6f;\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringConeTuner] = 0.2f;\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.ShotIntervalMilliseconds] = MyMachineGunConstants.SHOT_INTERVAL_IN_MILISECONDS;\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringDistanceTuner] = 0.9f;\n                        settings.Enabled = true;\n                        break;\n                    }\n                case MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Missile_Launcher:\n                    {\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringDurationTuner] = 0.2f;\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringFrequencyTuner] = 0.25f;\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringConeTuner] = 0.45f;\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.ShotIntervalMilliseconds] = MyMissileConstants.MISSILE_LAUNCHER_SHOT_INTERVAL_IN_MILISECONDS;\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringDistanceTuner] = 0.9f;\n                        settings.Enabled = true;\n                        break;\n                    }\n                case MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Sniper:\n                    {\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringDurationTuner] = 0.2f;\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringFrequencyTuner] = 0.2f;\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringConeTuner] = 0.05f;\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.ShotIntervalMilliseconds] = MySniperConstants.SHOT_INTERVAL_IN_MILISECONDS;\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringDistanceTuner] = 0.9f;\n                        settings.Enabled = true;\n                        break;\n                    }\n                case (MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Universal_Launcher_Back):\n                    {\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringDurationTuner] = 0.15f;\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringFrequencyTuner] = 0.05f;\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringConeTuner] = 1.0f;\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.ShotIntervalMilliseconds] = MyMissileConstants.MISSILE_LAUNCHER_SHOT_INTERVAL_IN_MILISECONDS;\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringDistanceTuner] = 0.9f;\n                        settings.Enabled = false;\n                        break;\n                    }\n                case MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Universal_Launcher_Front:\n                    {\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringDurationTuner] = 0.15f;\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringFrequencyTuner] = 0.05f;\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringConeTuner] = 0.5f;\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.ShotIntervalMilliseconds] = MyMissileConstants.MISSILE_LAUNCHER_SHOT_INTERVAL_IN_MILISECONDS;\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringDistanceTuner] = 0.9f;\n                        settings.Enabled = true;\n                        break;\n                    }\n            }\n\n            //Keep max trajectory and weapon type\n            settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringDistance] = MyAmmoConstants.GetAmmoProperties(ammoType).MaxTrajectory;\n\n            settings.WeaponType = weaponType;\n\n            settings.LastShotMilliseconds = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n            return settings;\n        }\n        #endregion\n\n        #region Properties\n\n        // how much will bot strafe during combat  (not its speed)\n        public float DifficultyStrafingSpeed { get; set; }\n\n        // ship speed \n        public float DifficultyMovingSpeed { get; set; }\n\n        // affect speed of shooting (delays between all shooting)\n        public float DifficultyFireRatio { get; set; }\n\n        // what guns/slots will be used during fight / shoting\n        public float DifficultyGunUsageRatio { get; set; }\n\n        // how often will be raid attack executed\n        public float DifficultyRaidAttackOccurrence { get; set; }\n\n        // how often will be fly around exectued\n        public float DifficultyFlyAroundTargetOccurrence { get; set; }\n\n        //how far will bot react on enemy presence and from what distance he will shoot ( harder - more far )\n        public float DifficultyAttackReactDistance { get; set; }\n\n        //use of fire burst 0 - 1\n        public float DifficultyUseFireBurst { get; set; }\n\n        private static MySoundCue? m_friendlyFireCue;\n\n        private static int m_friendlyFireTimeFromLastPlayed;\n\n        public MyWayPointPath WaypointPath = null;        \n\n        public MyWayPoint CurrentWaypoint = null;\n\n        public float RunAwayDistance = 1200;\n\n        public float DrillDistance = 20;\n\n        public float Aggressivity = 0;\n\n        public float SeeDistance = 1000;\n        \n        public float SleepDistance = 1000;\n\n        public MyPatrolMode PatrolMode = MyPatrolMode.CYCLE;\n\n        public bool SuspendPatrol;\n\n        /// <summary>\n        /// Modifies bots speed 1.0 means normal speed, 0.0 means bot wont move\n        /// </summary>\n        public float SpeedModifier = 1.0f;\n\n        private static string m_pilotDeadString;\n\n        protected MyBotAITemplate m_aiTemplate = MyBotAITemplates.GetTemplate(MyAITemplateEnum.DEFAULT);\n        public MyBotAITemplate AITemplate\n        {\n            get { return m_aiTemplate; }\n            set { m_aiTemplate = value; }\n        }\n\n        bool m_isSleeping = false;\n        public bool IsSleeping\n        {\n            get { return m_isSleeping; }\n            set\n            {\n                if (value != m_isSleeping)\n                {\n                    if (value)\n                        TotalAliveBots--;\n                    else\n                        TotalAliveBots++;\n                }\n\n                m_isSleeping = value;\n\n                if (m_isSleeping)\n                {\n                    if (Weapons != null)\n                        Weapons.StopAllSounds();\n                }\n            }\n        }\n\n        List<MyBotDesire> m_desires = new List<MyBotDesire>();\n\n        MyBotBehaviorBase m_currentBehavior;\n\n        MyDetectEnemiesJob m_detectEnemiesJob = new MyDetectEnemiesJob();\n        bool m_detectingEnemies = false;\n        Task m_detectEnemiesTask;\n        int m_lastDetect = 0;\n\n        MyTestPositionJob m_testPositionJob = new MyTestPositionJob();\n        bool m_testingPosition = false;\n        Task m_testPositionTask;\n\n        Vector3 m_debugMovePosition;\n\n        private MyParticleEffect m_biochemEffect;\n        private Matrix? m_biochemEffectLocalMatrix;\n\n        /// <summary>\n        /// Indicates whether the AI controlling the ship is active.\n        /// </summary>\n        public bool ActiveAI { get; set; }\n\n        private float m_shock_time;\n\n        private List<MySmallShip> m_spoiledHolograms;\n\n        private object m_hologramLock = new object();\n\n        public bool LeaderLostEnabled { get; set; }\n\n        private int m_dangerZoneId = -1;\n\n\n        public MyEntity LookTarget;\n\n        private float m_crippleTime;\n\n        private uint? m_leaderId;\n\n        private bool m_wasAfterBurnerOn = false;\n        private int m_afterBurnerOnTime = 0;\n        private int m_afterBurnerOffTime = 0;\n\n        #endregion\n\n        #region Init\n\n        static MySmallShipBot()\n        {\n            m_pilotDeadString = MyTextsWrapper.Get(MyTextsWrapperEnum.SmallShipPilotDead).ToString();\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MySmallShipBot\";\n        }\n\n        public virtual void Init(string hudLabelText, MyMwcObjectBuilder_SmallShip_Bot objectBuilder)\n        {\n            System.Diagnostics.Debug.Assert(objectBuilder.Faction != 0);\n\n            //StringBuilder label = new StringBuilder(hudLabelText);\n            TotalAliveBots++;\n\n            string fixedHudLabelText = hudLabelText;\n            if (string.IsNullOrEmpty(hudLabelText) || hudLabelText == GetFriendlyName())\n            {\n                fixedHudLabelText = MyTextsWrapper.GetFormatString(MyTextsWrapperEnum.Ship);\n            }\n\n            base.Init(fixedHudLabelText, objectBuilder);\n\n            Faction = objectBuilder.Faction;\n            m_aiTemplate = MyBotAITemplates.GetTemplate(objectBuilder.AITemplate);\n            Aggressivity = objectBuilder.Aggressivity;\n            SeeDistance = objectBuilder.SeeDistance == 0 ? 1000 : objectBuilder.SeeDistance;\n            SleepDistance = objectBuilder.SleepDistance == 0 ? 1000 : objectBuilder.SleepDistance;\n            PatrolMode = objectBuilder.PatrolMode;\n            ActiveAI = true;\n            m_leaderId = objectBuilder.Leader;\n            AITemplate.SetIdleBehavior(objectBuilder.IdleBehavior);\n            LeaderLostEnabled = objectBuilder.LeaderLostEnabled;\n            ActiveAI = ActiveAI;\n\n            SetupWeapons(objectBuilder);\n\n            SetupDifficulty();\n\n            //if (hudLabelText == GetFriendlyName())\n            //{\n            //    label = new StringBuilder(\"\");\n            //}\n\n            //if (string.IsNullOrEmpty(hudLabelText) || hudLabelText == GetFriendlyName())\n            //{\n            //    DisplayName = MyTextsWrapper.GetFormatString(MyTextsWrapperEnum.Ship);\n            //}\n\n            //MyHud.ChangeText(this, label, null, 10000, MyHudIndicatorFlagsEnum.SHOW_ALL);\n\n\n            MyModelDummy dummy;\n            if (GetModelLod0().Dummies.TryGetValue(\"destruction\", out dummy))\n            {\n                m_biochemEffectLocalMatrix = dummy.Matrix;\n            }\n\n            m_shock_time = -1;\n\n            MyBotCoordinator.AddBot(this);\n            \n            InitSpoiledHolograms();\n\n            MyEntities.OnEntityRemove += MyEntities_OnEntityRemove;\n\n            m_dangerZoneId = MyDangerZones.Instance.Register(this);\n            \n            MySession.Static.LinkEntities += OnLinkEntities;\n        }\n\n\n        void OnLinkEntities()\n        {\n            if (m_leaderId.HasValue)\n            {\n                //var leader = MyEntities.GetEntityById(new MyEntityIdentifier(m_leaderId.Value)) as MySmallShip;\n                //Debug.Assert(leader != null);\n                var leader = MyEntities.GetEntityByIdOrNull(new MyEntityIdentifier(m_leaderId.Value)) as MySmallShip;\n                Follow(leader);\n            }\n            MySession.Static.LinkEntities -= OnLinkEntities;\n        }\n\n        public override void Link()\n        {\n            base.Link();\n\n            if (OwnerEntity != null)\n            {\n                if (OwnerEntity is MySpawnPoint)\n                {\n                    ((MySpawnPoint)OwnerEntity).LinkShip(this);\n                }\n            }\n        }\n\n        protected void InitSpoiledHolograms()\n        {\n            m_spoiledHolograms = new List<MySmallShip>();\n        }\n\n        #endregion\n\n        #region Weapons\n\n        private bool TryAssignAmmo(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum weaponType, MyMwcObjectBuilder_AmmoGroupEnum ammoGroup, MyMwcObjectBuilder_FireKeyEnum fireKey, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum[] ammoPriorities)\n        {\n            for (int i = 0; i < ammoPriorities.Length; i++)\n            {\n                if (Weapons.AmmoInventoryItems.GetAmmoInventoryItems(ammoPriorities[i]).Count > 0)\n                {\n                    Weapons.AmmoAssignments.AssignAmmo(fireKey, ammoGroup, ammoPriorities[i]);\n\n                    MyBotParams botParamsOneSlot = SettingsForWeaponType(weaponType, ammoPriorities[i]);\n                    botParamsOneSlot.FireKey = fireKey;\n                    botParamsOneSlot.HasAmmo = true;\n                    m_botWeaponParamsAllSlots[(int)fireKey - 1] = botParamsOneSlot;\n                    return true;\n                }\n            }\n            return false;\n        }\n\n        private void SetupWeapons(MyMwcObjectBuilder_SmallShip_Bot objectBuilder)\n        {\n            m_botWeaponParamsAllSlots = new MyBotParams[Enum.GetNames(typeof(MyMwcObjectBuilder_FireKeyEnum)).Length];\n\n            bool autoCannonMounted = Weapons.HasMountedWeapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Autocanon);\n            bool machineGunMounted = Weapons.HasMountedWeapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Machine_Gun);\n            bool shotgunMounted = Weapons.HasMountedWeapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Shotgun);\n            bool sniperMounted = Weapons.HasMountedWeapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Sniper);\n            bool missileLauncherMounted = Weapons.HasMountedWeapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Missile_Launcher);\n            bool cannonMounted = Weapons.HasMountedWeapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Cannon);\n            bool frontLauncherMounted = Weapons.HasMountedWeapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Universal_Launcher_Front);\n\n            if (machineGunMounted)  // Will be overwritten when autoCannonm mounted\n            {\n                MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum[] ammoPriorities = { MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Machine_Gun_SAPHEI, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Machine_Gun_High_Speed, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Machine_Gun_Basic, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Machine_Gun_BioChem, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Machine_Gun_EMP };\n                TryAssignAmmo(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Machine_Gun, MyMwcObjectBuilder_AmmoGroupEnum.Bullet, MyMwcObjectBuilder_FireKeyEnum.Primary, ammoPriorities);\n            }\n            \n            if (autoCannonMounted)\n\t        {\n                MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum[] ammoPriorities = { MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_SAPHEI, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_High_Speed, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_Basic, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_BioChem, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_EMP };\n                TryAssignAmmo(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Autocanon, MyMwcObjectBuilder_AmmoGroupEnum.Bullet, MyMwcObjectBuilder_FireKeyEnum.Primary, ammoPriorities);\n\t        }\n\n            if (shotgunMounted)\n            {\n                MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum[] ammoPriorities = { MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Shotgun_Explosive, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Shotgun_Armor_Piercing, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Shotgun_High_Speed, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Shotgun_Basic };\n                TryAssignAmmo(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Shotgun, MyMwcObjectBuilder_AmmoGroupEnum.Bullet, MyMwcObjectBuilder_FireKeyEnum.Secondary, ammoPriorities);\n            }\n\n            if (sniperMounted)\n            {\n                MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum[] ammoPriorities = { MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Sniper_SAPHEI, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Sniper_High_Speed, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Sniper_BioChem, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Sniper_EMP };\n                TryAssignAmmo(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Sniper, MyMwcObjectBuilder_AmmoGroupEnum.Bullet, MyMwcObjectBuilder_FireKeyEnum.Third, ammoPriorities);\n            }\n\n            if (missileLauncherMounted)\n            {\n                MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum[] ammoPriorities = { MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Guided_Missile_Visual_Detection, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Guided_Missile_Engine_Detection, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Missile_Basic, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Missile_BioChem, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Missile_EMP };\n                TryAssignAmmo(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Missile_Launcher, MyMwcObjectBuilder_AmmoGroupEnum.Missile, MyMwcObjectBuilder_FireKeyEnum.Fourth, ammoPriorities);\n            }\n\n            if (cannonMounted)\n            {\n                MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum[] ammoPriorities = { MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_Basic, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_BioChem, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_EMP };\n                TryAssignAmmo(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Cannon, MyMwcObjectBuilder_AmmoGroupEnum.Cannon, MyMwcObjectBuilder_FireKeyEnum.Fifth, ammoPriorities);\n            }\n\n            if (frontLauncherMounted)\n            {\n                MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum[] flashAmmo = { MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Flash_Bomb };\n                TryAssignAmmo(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Universal_Launcher_Front, MyMwcObjectBuilder_AmmoGroupEnum.UniversalLauncherFront, MyMwcObjectBuilder_FireKeyEnum.FlashBombFront, flashAmmo);\n\n                MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum[] hologramAmmo = { MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Hologram };\n                TryAssignAmmo(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Universal_Launcher_Front, MyMwcObjectBuilder_AmmoGroupEnum.UniversalLauncherFront, MyMwcObjectBuilder_FireKeyEnum.HologramFront, hologramAmmo);\n\n                MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum[] smokeAmmo = { MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Smoke_Bomb};\n                TryAssignAmmo(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Universal_Launcher_Front, MyMwcObjectBuilder_AmmoGroupEnum.UniversalLauncherFront, MyMwcObjectBuilder_FireKeyEnum.SmokeBombFront, smokeAmmo);\n            }\n        }\n\n        private MyGameplayDifficultyEnum GetBotDifficulty()\n        {\n            MyFactionRelationEnum relationToPlayer = MyFactions.GetFactionsRelation(MySession.PlayerShip, this);\n            if (relationToPlayer == MyFactionRelationEnum.Friend)\n            {\n                switch (MyGameplayConstants.GameplayDifficultyProfile.GameplayDifficulty)\n                {\n                    case MyGameplayDifficultyEnum.EASY:\n                        return MyGameplayDifficultyEnum.HARD;\n                    case MyGameplayDifficultyEnum.NORMAL:\n                        return MyGameplayDifficultyEnum.NORMAL;\n                    case MyGameplayDifficultyEnum.HARD:\n                        return MyGameplayDifficultyEnum.EASY;\n                }\n            }\n\n            return MyGameplayConstants.GameplayDifficultyProfile.GameplayDifficulty;\n        }\n\n        private void SetupDifficulty()\n        {\n            //always 0 super easy 1 max hard\n            MyGameplayDifficultyEnum difficultyOfThisBot = GetBotDifficulty();\n\n            DifficultyStrafingSpeed = MyGameplayConstants.GetGameplayDifficultyProfile(difficultyOfThisBot).BotStrafingSpeed;\n\n            DifficultyMovingSpeed = MyGameplayConstants.GetGameplayDifficultyProfile(difficultyOfThisBot).BotMovingSpeed;\n\n            DifficultyFireRatio = MyGameplayConstants.GetGameplayDifficultyProfile(difficultyOfThisBot).BotFireRatio;\n\n            //HACK BECAUSE OF TEST BUILD..\n            DifficultyGunUsageRatio = 0.5f;\n            //DifficultyGunUsageRatio = MyGameplayConstants.GetGameplayDifficulty(difficultyOfThisBot).BotGunUsageRatio;\n\n            DifficultyRaidAttackOccurrence = MyGameplayConstants.GetGameplayDifficultyProfile(difficultyOfThisBot).BotRaidAttackOccurrence;\n\n            DifficultyFlyAroundTargetOccurrence = MyGameplayConstants.GetGameplayDifficultyProfile(difficultyOfThisBot).BotFlyAroundTargetOccurrence;\n\n            DifficultyAttackReactDistance = MyGameplayConstants.GetGameplayDifficultyProfile(difficultyOfThisBot).BotAttackReactDistance;\n\n            DifficultyUseFireBurst = 1;\n        }\n\n        private void RefillAmmoAndResources()\n        {\n            Oxygen = MaxOxygen;\n            Fuel = MaxFuel;\n\n            foreach (Inventory.MyInventoryItem item in Weapons.AmmoInventoryItems.GetAmmoInventoryItems())\n            {\n                item.Amount = item.MaxAmount;\n            }\n        }\n\n        #endregion\n\n        #region Damage & death\n\n        void MyEntities_OnEntityRemove(MyEntity entity)\n        {\n            MySmallShip smallShip = entity as MySmallShip;\n            if (smallShip != null && smallShip.IsHologram)\n            {\n                lock (m_hologramLock)\n                {\n                    m_spoiledHolograms.Remove(smallShip);\n                }\n            }\n\n            foreach (var desire in m_desires)\n            {\n                desire.OnEntityRemove(entity);\n            }\n        }\n\n        public override void Close()\n        {\n            if (m_dangerZoneId != -1)\n            {\n                MyDangerZones.Instance.Unregister(this);\n                m_dangerZoneId = -1;\n            }\n\n            MyEntities.OnEntityRemove -= MyEntities_OnEntityRemove;\n            MySession.Static.LinkEntities -= OnLinkEntities;\n\n            if (Followers.Count > 0)\n            {\n                MySmallShipBot newLeader = Followers[0];\n                Debug.Assert(newLeader != this);\n\n                newLeader.Leader = null;\n                Debug.Assert(!newLeader.Closed);\n\n                if (m_aiTemplate.IsPatroling() && newLeader.WaypointPath != null)\n                {\n                    SetWaypointPath(newLeader.WaypointPath.Name);\n                    newLeader.Patrol();\n                }\n                else\n                {\n                    Idle();\n                }\n\n                var followers = Followers.ToArray();\n                for (int i = 1; i < followers.Length; i++)\n                {\n                    followers[i].Follow(newLeader);\n                }\n                Followers.Remove(newLeader);\n                Debug.Assert(Followers.Count == 0);\n            }\n            \n            StopFollow();\n\n            if (m_currentBehavior != null)\n            {\n                m_currentBehavior.Close(this);\n                m_currentBehavior = null;\n            }\n            \n            if (m_biochemEffect != null)\n            {\n                m_biochemEffect.Stop();\n                m_biochemEffect = null;\n            }\n            WaypointPath = null;\n\n            if (!IsSleeping)\n                MySmallShipBot.TotalAliveBots--;\n            \n            base.Close();\n        }\n\n        private bool CanDie(MyEntity damageSource)\n        {\n            if (!IsDestructible)\n            {\n                return false;\n            }\n            if (MyGuiScreenGamePlay.Static != null && MySession.PlayerShip != null && damageSource != null)\n            {\n                var playerFactionRelation = MyFactions.GetFactionsRelation(this, MySession.PlayerShip);\n\n                // Cheat enemy can't die\n                if (playerFactionRelation == MyFactionRelationEnum.Enemy &&\n                    MyGuiScreenGamePlay.Static.IsCheatEnabled(MyGameplayCheatsEnum.ENEMY_CANT_DIE))\n                {\n                    return false;\n                }\n\n                // Cheat neutral can't die\n                if ((playerFactionRelation == MyFactionRelationEnum.Friend || playerFactionRelation == MyFactionRelationEnum.Neutral) &&\n                    MyGuiScreenGamePlay.Static.IsCheatEnabled(MyGameplayCheatsEnum.FRIEND_NEUTRAL_CANT_DIE))\n                {\n                    return false;\n                }\n            }\n\n            return true;\n        }\n\n        protected override void DoDamageInternal(float healthDamage, float damage, float empDamage, MyDamageType damageType, MyAmmoType ammoType, MyEntity damageSource, bool justDeactivate)\n        {\n            bool wasDead = IsDead();\n            bool pilotWasDead = IsPilotDead();\n            if (CanDie(damageSource))\n            {\n                PilotHealth -= healthDamage;\n                PilotHealth = MathHelper.Clamp(PilotHealth, 0, MyGameplayConstants.HEALTH_BASIC);\n\n                base.DoDamageInternal(healthDamage, damage, empDamage, damageType, ammoType, damageSource, justDeactivate);\n\n                if (IsDamagedForWarnignAlert())\n                {\n                    LowHealth();\n                }\n            }\n            bool died = !wasDead && IsDead();\n            bool pilotDied = !pilotWasDead && IsPilotDead();\n\n            // if player's ship fired\n            if (damageSource == MySession.PlayerShip)\n            {\n                MyFactionRelationEnum? factionRelation = MyFactions.GetFactionsRelation(this, damageSource);\n\n                // friendly fire warning\n                if (factionRelation == MyFactionRelationEnum.Friend)\n                {\n                    if (m_friendlyFireCue == null ||\n                        !m_friendlyFireCue.Value.IsPlaying && MyMinerGame.TotalGamePlayTimeInMilliseconds - m_friendlyFireTimeFromLastPlayed >= MySmallShipConstants.WARNING_FRIENDLY_FIRE_INTERVAL)\n                    {\n                        m_friendlyFireCue = MyAudio.AddCue2D(MySoundCuesEnum.HudFriendlyFireWarning);\n                        m_friendlyFireTimeFromLastPlayed = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n                    }\n                }\n\n                // targed destroyed notification\n                if (factionRelation == MyFactionRelationEnum.Enemy && died)\n                {\n                    MyAudio.AddCue2D(MySoundCuesEnum.HudTargetDestroyed);\n                }\n\n                // Only when pilot\n                if (died && MyMultiplayerGameplay.IsRunning && MinerWars.AppCode.Game.World.MyClientServer.LoggedPlayer != null)\n                {\n                    MyMultiplayerGameplay.Static.PlayerStatistics.PlayersKilled++;\n                    MyMultiplayerGameplay.Static.UpdateStats();\n                }\n            }\n\n            if (pilotDied)\n            {\n                Save = false;\n                DisplayName = m_pilotDeadString;\n            }\n\n            if (damageType == MyDamageType.Explosion)\n            {\n                Shock(MySmallShipConstants.EXPLOSION_SHOCK_TIME);\n            }\n\n            UpdateBioChemEffect(pilotDied && ammoType == MyAmmoType.Biochem);\n        }\n\n        public void Shock(float shockTime)\n        {\n            m_shock_time = shockTime * (1 + MyMwcUtils.GetRandomFloat(-MySmallShipConstants.SHOCK_TIME_VAR, MySmallShipConstants.SHOCK_TIME_VAR));\n        }\n\n\n        private void LowHealth()\n        {\n            MyBotDesire desire = null;\n            foreach (var item in m_desires)\n            {\n                if (item.DesireType == BotDesireType.LOW_HEALTH)\n                {\n                    desire = item;\n                    break;\n                }\n            }\n\n            if (desire == null)\n            {\n                desire = new MyLowHealthDesire();\n                AddDesire(desire);\n            }\n        }\n\n        #endregion\n\n        #region Update\n\n        protected override void UpdateMultiplayerPosition()\n        {\n            if (MyMultiplayerGameplay.IsRunning && !IsDummy && !this.IsSleeping)\n            {\n                MyMultiplayerGameplay.Static.UpdatePosition(this);\n            }\n        }\n\n        public override void UpdateBeforeSimulation()\n        {\n            //MyHud.ChangeText(this, new StringBuilder(Health.ToString()), null, 10000, MyHudIndicatorFlagsEnum.SHOW_ALL);\n            \n            if (IsDummy)\n                return;\n\n            if (InitTime > 0)\n            {\n                InitTime -= MyConstants.PHYSICS_STEP_SIZE_IN_MILLISECONDS;\n                if (InitTime < 0)\n                    InitTime = 0;\n            }\n\n            // Disable slowdown when bot is shocked by explosion\n            m_shock_time -= MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS;\n            Config.MovementSlowdown.SetValue(!IsShocked());\n\n            if (IsDead())\n            {\n                IsSleeping = false;\n            }\n\n            if (IsSleeping)\n            {\n                // HACK: When sleeping, make them stop here, because their update is not called\n                Physics.AngularVelocity *= 0.93f;\n                Physics.LinearVelocity *= 0.93f;\n\n                if (m_currentBehavior != null)\n                {\n                    IsSleeping = m_currentBehavior.ShouldFallAsleep(this);\n                }\n                else\n                {\n                    IsSleeping = IsFarEnoughToBeAsleep();  // no behaviour: wake up based on player distance\n                }\n                return;\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"SmallShipBot base.Update\");\n            base.UpdateBeforeSimulation();\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            if (MyGuiScreenGamePlay.Static.IsEditorActive() || \n                MyMwcFinalBuildConstants.DisableEnemyBots ||\n                !BotLogic)\n            {\n                return;\n            }\n\n            if (!IsDead() && \n                ActiveAI)\n            {\n                RefillAmmoAndResources();\n\n                // Don't detect enemies when leader is too far\n                if (!IsLeaderFar())\n                {\n                    DetectEnemies();\n                }\n\n                UpdateBehavior();\n\n                if (m_currentBehavior != null)\n                {\n                    m_currentBehavior.Update(this);\n                }\n            }\n\n            if (m_biochemEffect != null)\n            {\n                m_biochemEffect.UserBirthMultiplier = MathHelper.Clamp(0.1f * Physics.LinearVelocity.Length(), 0.5f, 2f);\n                m_biochemEffect.UserRadiusMultiplier = MathHelper.Clamp(0.01f * Physics.LinearVelocity.Length(), 0.75f, 1.5f);\n\n                m_biochemEffect.WorldMatrix = m_biochemEffectLocalMatrix.HasValue ? m_biochemEffectLocalMatrix.Value * WorldMatrix : WorldMatrix;\n            }\n        }\n\n        public bool IsFarEnoughToBeAsleep()\n        {\n            if (MySession.PlayerShip == null)  // don't fall asleep if there's no player\n                return false;\n            var distanceSquaredFromNearestPointOfInterest =\n                MyGuiScreenGamePlay.Static.GetDistanceSquaredFromNearestPointOfInterest(GetPosition());\n            return distanceSquaredFromNearestPointOfInterest > SleepDistance * SleepDistance;\n        }\n\n        #endregion\n\n        #region Movement\n\n        private float TuneRotation(float angle)\n        {\n            return MathHelper.Clamp(angle * angle * angle, -0.75f, 0.75f);\n        }\n\n        public void Move(Vector3 moveTo, Vector3 lookTarget, Vector3 targetUp, bool afterburner, float deadDistance = 5.0f, float dampDistance = 5, float customDamping = 1.0f, float rotationSpeed = 100, bool slowRotation = false)\n        {\n            if (LookTarget != null)\n            {\n                lookTarget = LookTarget.GetPosition();\n                targetUp = LookTarget.WorldMatrix.Up;\n            }\n\n            if (IsShocked())\n            {\n                return;\n            }\n\n            float MAX_SPEED = 150;\n            float ROLL_SPEED = 10;\n            float SPEED_CORRECTION_WEIGHT = 4;\n            float ROTATION_DAMPING = 0.3f;\n\n            Matrix tempInvertedWorldMatrix = GetWorldMatrixInverted();\n            tempInvertedWorldMatrix.Translation = Vector3.Zero;\n            Vector3 localAngularVelocity = MyUtils.GetTransform(Physics.AngularVelocity, ref tempInvertedWorldMatrix);\n\n            Vector3 botToLookTarget = lookTarget - GetPosition();\n            Vector3 normalizedBotToTarget = Vector3.Normalize(botToLookTarget);\n\n            // ROTATE\n            float fp = Vector3.Dot(WorldMatrix.Forward, botToLookTarget);\n            float up = Vector3.Dot(WorldMatrix.Up, botToLookTarget);\n            float lp = Vector3.Dot(WorldMatrix.Left, botToLookTarget);\n\n            Vector2 rotationIndicator;\n            float rollIndicator;\n            if (slowRotation)\n            {\n                rotationIndicator = new Vector2(\n                    -TuneRotation((float)Math.Atan2(up, fp)) * rotationSpeed + localAngularVelocity.X * 30,\n                    -TuneRotation((float)Math.Atan2(lp, fp)) * rotationSpeed + localAngularVelocity.Y * 30);\n                rollIndicator = (-TuneRotation((float)Math.Atan2(\n                    Vector3.Dot(targetUp, WorldMatrix.Left),\n                    Vector3.Dot(targetUp, WorldMatrix.Up))) + localAngularVelocity.Z * ROTATION_DAMPING) * ROLL_SPEED;\n            }\n            else\n            {\n                rotationIndicator = new Vector2(\n                    -(float)Math.Atan2(up, fp) * rotationSpeed + localAngularVelocity.X * 30,\n                    -(float)Math.Atan2(lp, fp) * rotationSpeed + localAngularVelocity.Y * 30);\n                rollIndicator = (-(float)Math.Atan2(\n                    Vector3.Dot(targetUp, WorldMatrix.Left),\n                    Vector3.Dot(targetUp, WorldMatrix.Up)) + localAngularVelocity.Z * ROTATION_DAMPING) * ROLL_SPEED;\n            }\n            \n            // MOVE\n            // Correct actual speed to adjust direction\n            Vector3 moveToVector = moveTo - GetPosition();\n            float moveToDistance = moveToVector.Length();\n\n            Vector3 normalizedMoveTo = moveToDistance == 0 ? WorldMatrix.Forward : moveToVector / moveToDistance;\n            Vector3 speedCorrection = normalizedMoveTo * MAX_SPEED * SpeedModifier - (Physics.LinearVelocity - Vector3.Dot(Physics.LinearVelocity, normalizedMoveTo) * normalizedMoveTo) * SPEED_CORRECTION_WEIGHT;\n\n            if (speedCorrection.LengthSquared() > 0)\n            {\n                float damping = MathHelper.Clamp((moveToDistance - deadDistance) / dampDistance, 0, 1) * customDamping * SpeedModifier;\n\n                // Convert to local coordinates\n                Vector3 moveIndicator = Vector3.Transform(Vector3.Normalize(speedCorrection), tempInvertedWorldMatrix);\n\n                bool useAfterburner =\n                    (afterburner && moveIndicator.Z < -0.7f && (MyMinerGame.TotalGamePlayTimeInMilliseconds - m_afterBurnerOffTime > MyAIConstants.MIN_AFTERBURNER_OFF_TIME)) ||\n                    ((MyMinerGame.TotalGamePlayTimeInMilliseconds - m_afterBurnerOnTime) < MyAIConstants.MIN_AFTERBURNER_ON_TIME);\n\n                if (useAfterburner)\n                {\n                //    moveIndicator = new Vector3(moveIndicator.X * 4, moveIndicator.Y * 4, moveIndicator.Z / (afterburner ? 1f : GetEngineProperties().AfterburnerSpeedMultiplier));\n                }\n\n                if (m_wasAfterBurnerOn && !useAfterburner)\n                {\n                    m_afterBurnerOffTime = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n                }\n                \n                if (!m_wasAfterBurnerOn && useAfterburner)\n                {\n                    m_afterBurnerOnTime = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n                }\n\n                m_wasAfterBurnerOn = useAfterburner;\n\n                MoveAndRotate(moveIndicator * damping, rotationIndicator, rollIndicator, useAfterburner);\n            }\n\n            m_debugMovePosition = moveTo;\n        }\n\n        #endregion\n\n        #region Finding route\n\n        private bool m_findingRoute = false;\n        public bool TryFindRoute(MySmallShip target)\n        {\n            if (m_findingRoute) \n                return false;\n\n            m_findingRoute = true;\n\n            MyRoutefindingHelper.FindRouteInBackground(this, target.RouteMemory, RouteFoundCallback, null);\n            return true;\n        }\n\n        private Vector3? m_routePosition;\n        private void RouteFoundCallback(Vector3? routePosition, object userData)\n        {\n            m_routePosition = routePosition;\n            m_findingRoute = false;\n        }\n\n        public bool TryGetRoute(out Vector3? routePosition)\n        {\n            if (m_findingRoute == false)\n            {\n                routePosition = m_routePosition; \n                return true;\n            }\n            else\n            {\n                routePosition = null; \n                return false;\n            }\n        }\n\n        private bool m_findingPath = false;\n        public bool TryFindPath(Vector3 goal)\n        {\n            if (m_findingPath) return false;  // already finding the path\n            m_findingPath = true;\n            MyPathfindingHelper.FindPathInBackground(WorldAABB.GetCenter(), goal, PathFoundCallback, null, useRaycasts: MySession.PlayerFriends.Contains(this));\n            return true;\n        }\n\n        private List<Vector3> m_path = null;\n        private void PathFoundCallback(List<Vector3> path, object userData)\n        {\n            m_path = path;\n            m_findingPath = false;\n        }\n\n        public bool TryGetPath(out List<Vector3> path)\n        {\n            if (m_findingPath == false) { path = m_path; return true; }\n            else { path = null; return false; }\n        }\n        \n        public bool TryTestPosition(Vector3 position, Vector3 targetPosition)\n        {\n            if (m_testPositionTask.IsComplete)\n            {\n                m_testingPosition = false;\n            }\n\n            if (!m_testingPosition)\n\t        {\n                m_testPositionJob.Start(this, position, targetPosition);\n                m_testPositionTask = Parallel.Start(m_testPositionJob);\n                m_testingPosition = true;\n\n                return true;\n\t        }\n            \n            return false;\n        }\n\n        public bool TryGetTestPositionResult(ref Vector3? result)\n        {\n            if (m_testingPosition && m_testPositionTask.IsComplete)\n\t        {\n                result = m_testPositionJob.Result;\n                m_testingPosition = false;\n                return true;\n\t        }\n            \n            return false;\n        }\n\n        #endregion\n\n        #region Desires & behaviors\n\n        private void AddDesire(MyBotDesire desire)\n        {\n            m_desires.Add(desire);\n            m_desires.Sort(m_aiTemplate.CompareDesires);\n        }\n\n        private void UpdateBehavior()\n        {\n            // Remove topmost ignored desires\n            while (m_desires.Count > 0 && m_aiTemplate.IsIgnored(m_desires[m_desires.Count - 1].DesireType))\n            {\n                m_desires.RemoveAt(m_desires.Count - 1);\n            }\n\n            foreach (MyBotDesire desire in m_desires)\n            {\n                desire.Update();\n            }\n\n            // Remove invalid behavior\n            if (m_currentBehavior != null && (\n                m_currentBehavior.IsInvalid() || (m_currentBehavior.SourceDesire != null && m_currentBehavior.SourceDesire.IsInvalid(this))))   // invalid desire or behavior\n            {\n                m_desires.Remove(m_currentBehavior.SourceDesire);\n                m_currentBehavior.Close(this);\n                m_currentBehavior = null;\n            }\n\n\n            if (m_desires.Count == 0)\n            {\n                if (m_currentBehavior == null ||\n                    m_aiTemplate.GetBehaviorType(BotDesireType.IDLE) != m_currentBehavior.GetBehaviorType() ||    // if AItemplate is changed\n                    m_currentBehavior.SourceDesire != null)                                     // current behavior is not idle behavior\n                {\n                    m_currentBehavior = m_aiTemplate.GetBehavior(BotDesireType.IDLE);\n                    m_currentBehavior.Init(this);\n                }\n            }\n            else\n            {\n                // Select first desire (sorted)\n                MyBotDesire desire = m_desires[m_desires.Count - 1];\n\n                // Don't update current behavior if it's the same\n                if (m_currentBehavior != null && m_currentBehavior.SourceDesire != null &&\n                    m_currentBehavior.GetBehaviorType() == m_aiTemplate.GetBehaviorType(m_currentBehavior.SourceDesire.DesireType) && \n                    m_currentBehavior.SourceDesire == desire)\n                {\n                    return;\n                }\n\n                if (m_currentBehavior != null)\n                {\n                    m_currentBehavior.Close(this);\n                }\n                \n                m_currentBehavior = m_aiTemplate.GetBehavior(desire.DesireType);\n                if (m_currentBehavior != null)\n                {\n                    m_currentBehavior.SourceDesire = desire;\n                    m_currentBehavior.Init(this);\n                }\n            }\n        }        \n\n        #endregion \n\n        #region Debug draw\n\n        public StringBuilder GetDebugHudString()\n        {\n            return new StringBuilder(string.Format(\"{0}{1}\",\n                IsSleeping ? \"Sleeping \" : \"\", \n                m_currentBehavior != null ? m_currentBehavior.GetDebugHudString() : \"no behavior\"));\n        }\n\n        public override bool DebugDraw()\n        {\n            if (MyGuiManager.GetScreenDebugBot() == null)\n                return base.DebugDraw();\n\n            MyDebugDraw.DrawAxis(WorldMatrix, 10, 1);\n            MyDebugDraw.DrawLine3D(GetPosition(), m_debugMovePosition, Color.Orange, Color.Orange);\n            MyDebugDraw.DrawLine3D(GetPosition(), GetPosition() + WorldMatrix.Forward * 1000, Color.Orange, Color.Yellow);\n            MyDebugDraw.DrawSphereWireframe(m_debugMovePosition, 1, Vector3.One, 1);\n\n            if (m_path != null)\n            {\n                MyDebugDraw.DrawSphereWireframe(m_path[0], 2, new Vector3(0, 1, 1), 1);\n                for (int i = 1; i < m_path.Count; i++)\n                {\n                    MyDebugDraw.DrawSphereWireframe(m_path[i], 2, new Vector3(0, 1, 1), 1);\n                    MyDebugDraw.DrawLine3D(m_path[i - 1], m_path[i], Color.Blue, Color.Cyan);\n                }\n            }\n\n            if (m_currentBehavior != null)\n            {\n                m_currentBehavior.DebugDraw();\n                if (m_currentBehavior.SourceDesire != null && m_currentBehavior.SourceDesire.GetEnemy() != null)\n                {\n                    MyDebugDraw.DrawLine3D(GetPosition(), m_currentBehavior.SourceDesire.GetEnemy().GetPosition(), Color.Red, Color.Red);\n                }\n            }\n\n            /*\n            // Draw visual detection frustrum\n            float tgFovOver2 = (float)Math.Tan(MySmallShipConstants.BOT_FOV / 2);\n            float normalRadius = tgFovOver2 * MySmallShipConstants.BOT_FOV_RANGE;\n            float hiddenRadius = tgFovOver2 * MySmallShipConstants.BOT_FOV_RANGE_HIDDEN;\n\n            Vector3? prevHiddenRangePoint = null;\n            Vector3? prevNormalRangePoint = null;\n            \n            Vector3 normalCenter = WorldMatrix.Translation + WorldMatrix.Forward * MySmallShipConstants.BOT_FOV_RANGE;\n            Vector3 hiddenCenter = WorldMatrix.Translation + WorldMatrix.Forward * MySmallShipConstants.BOT_FOV_RANGE_HIDDEN;\n\n            for (float i = 0; i < MathHelper.TwoPi; i += MathHelper.Pi / 6)\n            {\n                float x = (float)Math.Cos(i);\n                float y = (float)Math.Sin(i);\n\n                Vector3 hiddenRangePoint = hiddenCenter + WorldMatrix.Up * y * hiddenRadius + WorldMatrix.Right * x * hiddenRadius;\n                Vector3 normalRangePoint = normalCenter + WorldMatrix.Up * y * normalRadius + WorldMatrix.Right * x * normalRadius;\n\n                //MyDebugDraw.DrawLine3D(GetPosition(), hiddenRangePoint, Color.Red, Color.Red);\n                //MyDebugDraw.DrawLine3D(hiddenRangePoint, normalRangePoint, Color.Green, Color.Green);\n\n                MyDebugDraw.DrawLine3D(hiddenCenter, hiddenRangePoint, Color.Red, Color.Red);\n                MyDebugDraw.DrawLine3D(normalCenter, normalRangePoint, Color.Green, Color.Green);\n\n                if (prevHiddenRangePoint.HasValue && prevNormalRangePoint.HasValue)\n                {\n                    MyDebugDraw.DrawLine3D(prevHiddenRangePoint.Value, hiddenRangePoint, Color.Red, Color.Red);\n                    MyDebugDraw.DrawLine3D(prevNormalRangePoint.Value, normalRangePoint, Color.Green, Color.Green);\n                }\n\n                prevHiddenRangePoint = hiddenRangePoint;\n                prevNormalRangePoint = normalRangePoint;\n            }\n            */\n            return base.DebugDraw();\n        }\n\n        #endregion\n\n        #region Enemies\n\n\n        /// <summary>\n        /// Finds nearby enemy ship\n        /// </summary>\n        /// <returns></returns>\n        private void DetectEnemies()\n        {\n            const int DETECT_TIME_MS = 1000;\n\n            if (!m_detectingEnemies && MyMinerGame.TotalGamePlayTimeInMilliseconds > (m_lastDetect + DETECT_TIME_MS))\n            {\n                m_detectEnemiesJob.Start(this);\n                m_detectEnemiesTask = Parallel.Start(m_detectEnemiesJob);\n                m_detectingEnemies = true;\n            }\n            else if (m_detectEnemiesTask.IsComplete && m_detectingEnemies)\n            {\n                // To prevent same detection time for bots spawned in one moment\n                m_lastDetect = MyMinerGame.TotalGamePlayTimeInMilliseconds + MyMwcUtils.GetRandomInt(DETECT_TIME_MS / 3);\n                m_detectingEnemies = false;\n\n                // Detected entity\n                if (m_detectEnemiesJob.ClosestEnemy != null)\n                {\n                    AddSeenEnemy(m_detectEnemiesJob.ClosestEnemy);\n                    m_detectEnemiesJob.ClosestEnemy = null;\n                }\n\n                // Visualy detected entity\n                if (m_detectEnemiesJob.ClosestVisual != null)\n                {\n                    AddCuriousLocation(m_detectEnemiesJob.ClosestVisual.GetPosition(), m_detectEnemiesJob.ClosestVisual);\n                    m_detectEnemiesJob.ClosestVisual = null;\n                }\n                m_detectEnemiesJob.Finish();\n            }\n        }\n\n        public void AddSeenEnemy(MyEntity enemy)\n        {\n            if (enemy != null)\n            {\n                Debug.Assert(!enemy.Closed);\n\n                if (LeaderLostEnabled && Leader != null && Vector3.DistanceSquared(Leader.GetPosition(), enemy.GetPosition()) > MyAIConstants.FAR_LEADER_DISTANCE_SQR)\n                    return;\n\n                MyBotDesire desire = null;\n                foreach (var item in m_desires)\n                {\n                    if (item.DesireType == BotDesireType.SEE_ENEMY && item.GetEnemy() == enemy)\n                    {\n                        desire = item;\n                        break;\n                    }\n                }\n\n                if (desire == null)\n                {\n                    desire = new MySeeEnemyDesire(enemy);\n                    AddDesire(desire);\n                }\n            }\n        }\n\n        public void AddCuriousLocation(Vector3 location, MyEntity source)\n        {\n            Debug.Assert(source == null || !source.Closed);\n\n            MyBotDesire desire = null;\n            foreach (var item in m_desires)\n            {\n                if (item.DesireType == BotDesireType.CURIOUS && item.GetEnemy() == source)\n                {\n                    desire = item;\n                    break;\n                }\n            }\n\n            if (desire == null)\n            {\n                desire = new MyCuriousDesire(source, location);\n                AddDesire(desire);\n            }\n        }\n\n        public void Flash()\n        {\n            MyBotDesire desire = null;\n            foreach (var item in m_desires)\n            {\n                if (item.DesireType == BotDesireType.FLASHED)\n                {\n                    desire = item;\n                    break;\n                }\n            }\n\n            if (desire == null)\n            {\n                desire = new MyFlashedDesire(3 * MyFlashBombConstants.FLASH_TIME);\n                AddDesire(desire);\n            }\n        }\n\n        public override void AtackedByEnemy(MyEntity damageSource)\n        {\n            // Leaders is far - ignore enemy attack\n            if (IsLeaderFar() || (LeaderLostEnabled && Vector3.DistanceSquared(Leader.GetPosition(), damageSource.GetPosition()) > MyAIConstants.FAR_LEADER_DISTANCE_SQR))\n            {\n                return;\n            }\n\n            MyBotDesire desire = null;\n            foreach (var item in m_desires)\n            {\n                if (item.DesireType == BotDesireType.ATACKED_BY_ENEMY && item.GetEnemy() == damageSource)\n                {\n                    desire = item;\n                    break;\n                }\n            }\n\n            if (desire == null)\n            {\n                desire = new MyAttackedByEnemyDesire(damageSource);\n                AddDesire(desire);\n            }\n        }\n\n        public MyEntity GetEnemy()\n        {\n            for (int i = m_desires.Count - 1; i >= 0; i--)\n            {\n                MyEntity desireEnemy = m_desires[i].GetEnemy();\n                if (desireEnemy != null)\n                {\n                    return desireEnemy;\n                }\n            }\n            return null;\n        }\n\n        public MyEntity GetClosestEnemy()\n        {\n            float closestDistanceSqr = float.PositiveInfinity;\n            MyEntity closestEnemy = null;\n\n            foreach (var desire in m_desires)\n            {\n                MyEntity enemy = desire.GetEnemy();\n                if (enemy != null)\n                {\n                    float distanceSqr = Vector3.DistanceSquared(GetPosition(), enemy.GetPosition());\n                    if (distanceSqr < closestDistanceSqr)\n                    {\n                        closestDistanceSqr = distanceSqr;\n                        closestEnemy = enemy;\n                    }\n                }\n            }\n\n            return closestEnemy;\n        }\n\n        #endregion\n\n        #region Attacking\n\n        public bool CanSeeTarget(MyEntity target)\n        {\n            bool canSeeTarget = true;\n            if (MyFakes.ENABLE_BOTS_FOV_WHEN_RADAR_JAMMER)\n            {\n                MySmallShip smallShipTarget = target as MySmallShip;\n                if (smallShipTarget != null && !smallShipTarget.IsHologram && smallShipTarget.HasRadarJammerActive())\n                {\n                    float distanceSqr = (GetPosition() - GetPosition()).LengthSquared();\n                    float rangeOfViewSqr = smallShipTarget.IsHiddenFromBots() ? MyAIConstants.BOT_FOV_RANGE_HIDDEN : MyAIConstants.BOT_FOV_RANGE;\n                    float targetRange = Vector3.Dot(WorldMatrix.Forward, target.GetPosition() - GetPosition());\n\n                    canSeeTarget =\n                        targetRange <= rangeOfViewSqr &&\n                        Vector3.Dot(WorldMatrix.Forward, Vector3.Normalize(target.GetPosition() - GetPosition())) >= MyAIConstants.BOT_FOV_COS;\n                }\n            }\n            return canSeeTarget;\n        }\n\n\n        private void UpdateBioChemEffect(bool start)\n        {\n            if (m_biochemEffect == null && start)\n            {\n                m_biochemEffect = MyParticlesManager.CreateParticleEffect((int)MyParticleEffectsIDEnum.Damage_SmokeBiochem);\n                m_biochemEffect.AutoDelete = false;\n                m_biochemEffect.UserBirthMultiplier = 0;\n                m_biochemEffect.WorldMatrix = m_biochemEffectLocalMatrix.HasValue ? m_biochemEffectLocalMatrix.Value * WorldMatrix : WorldMatrix;\n            }\n        }\n\n        public void Attack(MyEntity target)\n        {\n            Debug.Assert(!this.Closed);\n\n            Debug.Assert(target != this);\n            if (target == this)\n                return;\n\n            bool alreadyThere = false;\n            \n            // Invalidate all kill desires (maybe there's only one, but whatever)\n            foreach (var desire in m_desires)\n            {\n                var killDesire = desire as MyKillDesire;\n                if (killDesire == null) continue;\n\n                if (target == killDesire.Target) alreadyThere = true;  // I already want to kill the target :)\n                else killDesire.Invalidate();\n            }\n\n            // Create a new kill desire\n            if (!alreadyThere)\n                AddDesire(new MyKillDesire(target));\n        }\n\n        public void Idle()\n        {\n            m_aiTemplate.SetIdleBehavior(BotBehaviorType.IDLE);\n        }\n\n        public void Follow(MyEntity leader)\n        {\n            Debug.Assert(!this.Closed);\n\n            Debug.Assert(leader != this);\n            var smallShipLeader = Leader as MySmallShip;\n            if (smallShipLeader != null)\n            {\n                smallShipLeader.Followers.Remove(this);\n            }\n\n            Leader = leader;\n\n            var newSmallShipLeader = leader as MySmallShip;\n            if (newSmallShipLeader != null)\n            {\n                newSmallShipLeader.Followers.Add(this);\n            }\n            \n            m_aiTemplate.SetIdleBehavior(BotBehaviorType.FOLLOW);\n        }\n\n        public void StopFollow()\n        {\n            Debug.Assert(!this.Closed);\n\n            MySmallShip leaderShip = Leader as MySmallShip;\n            if (leaderShip != null)\n            {\n                leaderShip.Followers.Remove(this);\n            }\n            Leader = null;\n            Idle();\n        }\n\n        public void Patrol()\n        {\n            Debug.Assert(!this.Closed);\n\n            m_aiTemplate.SetIdleBehavior(BotBehaviorType.PATROL);\n        }\n\n        public override bool IsDead()\n        {\n            return base.IsDead() || IsPilotDead();\n        }\n\n        public override bool IsPilotDead()\n        {\n            return IsDestructible ? PilotHealth / PilotMaxHealth <= MyGameplayConstants.HEALTH_RATIO_DEATH : false;\n        }\n\n        public bool IsShocked()\n        {\n            return m_shock_time > 0;\n        }\n\n        public void SetWaypointPath(string name)\n        {\n            CurrentWaypoint = null;\n            WaypointPath = MyWayPointGraph.GetPath(name);\n            \n            if (WaypointPath != null && WaypointPath.WayPoints.Count > 0)\n            {\n                CurrentWaypoint = WaypointPath.WayPoints[0];\n            }\n        }\n\n        public void SpoilHologram(MySmallShip smallShip)\n        {\n            Debug.Assert(smallShip.IsHologram);\n            lock (m_hologramLock)\n            {\n                m_spoiledHolograms.Add(smallShip);\n            }\n        }\n\n        public bool IsSpoiledHologram(MyEntity entity)\n        {\n            MySmallShip smallShip = entity as MySmallShip;\n            if (smallShip != null && smallShip.IsHologram)\n            {\n                lock (m_hologramLock)\n                {\n                    return m_spoiledHolograms.Contains(smallShip);\n                }\n            }\n            return false;\n        }\n\n        public void SetAITemplate(MyAITemplateEnum template)\n        {\n            MyBotAITemplate oldTemplate = m_aiTemplate;\n            m_aiTemplate = MyBotAITemplates.GetTemplate(template);\n            m_aiTemplate.SetIdleBehavior(oldTemplate.GetBehaviorType(BotDesireType.IDLE));\n        }\n\n        public bool IsLeaderLost()\n        {\n            if (LeaderLostEnabled && Leader != null)\n            {\n                float leaderDistanceSqr = (Leader.GetPosition() - GetPosition()).LengthSquared();\n                if (leaderDistanceSqr > MyAIConstants.MAX_LEADER_DISTANCE_SQR)\n                {\n                    return true;\n                }\n            }\n            return false;\n        }\n\n        public bool IsLeaderFar()\n        {\n            if (LeaderLostEnabled && Leader != null)\n            {\n                float leaderDistanceSqr = (Leader.GetPosition() - GetPosition()).LengthSquared();\n                if (leaderDistanceSqr > MyAIConstants.FAR_LEADER_DISTANCE_SQR)\n                {\n                    return true;\n                }\n            }\n            return false;\n        }\n\n\n        public void LaunchAlarm(MySmallShip source)\n        {\n            foreach (var entity in MyEntities.GetEntities())\n            {\n                var container = entity as MyPrefabContainer;\n                if (container != null)\n                {\n                    container.LaunchAlarm(this, source);\n                }\n            }\n        }\n\n        #endregion\n\n        /// <summary>\n        /// For debugging purposes\n        /// </summary>\n        public override string ToString()\n        {\n            return \"Bot: \" + DisplayName.ToString() + \", ID: \" + (EntityId.HasValue ? EntityId.Value.NumericValue.ToString() : \"null\");\n        }\n\n        #region Gets\n\n        public int GetDangerZoneID()\n        {\n            return m_dangerZoneId;\n        }\n\n        protected override MyMwcObjectBuilder_Base GetObjectBuilderInternal(bool getExactCopy)\n        {\n            MyMwcObjectBuilder_Base baseBuilder = base.GetObjectBuilderInternal(getExactCopy);\n\n            var builder = baseBuilder as MyMwcObjectBuilder_SmallShip_Bot;\n            if (builder != null)\n            {\n                builder.AITemplate = m_aiTemplate.TemplateId;\n                builder.Aggressivity = Aggressivity;\n                builder.SeeDistance = SeeDistance;\n                builder.SleepDistance = SleepDistance;\n                builder.PatrolMode = PatrolMode;\n                builder.Leader = Leader != null && Leader.EntityId.HasValue ? Leader.EntityId.Value.NumericValue : (uint?)null;\n                builder.IdleBehavior = AITemplate.GetIdleBehavior();\n                builder.LeaderLostEnabled = LeaderLostEnabled;\n                builder.ActiveAI = ActiveAI;\n                builder.SlowDown = SpeedModifier;\n            }\n            return baseBuilder;\n        }\n\n\n       \n        public bool IsParked() \n        {\n            return AIPriority == -1 && IsHiddenFromBots() && !ActiveAI;\n        }\n\n        public override MyShipTypePhysicsProperties GetPhysicsProperties()\n        {\n            return m_shipTypeProperties.PhysicsForBot;\n        }\n\n        #endregion\n\n        public void SetEquip(List<MyMwcObjectBuilder_SmallShip_Weapon> weapons, List<MyMwcObjectBuilder_InventoryItem> inventoryItems)\n        {\n            // Cleanup Weapons and inventory\n            Weapons.RemoveAllWeapons(false, false);\n            List<MyInventoryItem> removeItems = new List<MyInventoryItem>();\n            foreach (var item in Inventory.GetInventoryItems())\n            {\n                if (item.ObjectBuilderType == MyMwcObjectBuilderTypeEnum.SmallShip_Weapon || item.ObjectBuilderType == MyMwcObjectBuilderTypeEnum.SmallShip_Ammo)\n                {\n                    removeItems.Add(item);\n                }\n            }\n            \n            Inventory.RemoveInventoryItems(removeItems, true);\n\n            Weapons.Init(weapons, new List<MyMwcObjectBuilder_AssignmentOfAmmo>());\n\n            foreach (var item in inventoryItems)\n            {\n                Inventory.AddInventoryItem(MyInventory.CreateInventoryItemFromInventoryItemObjectBuilder(item));\n            }\n\n            SetupWeapons(GetObjectBuilderInternal(true) as MyMwcObjectBuilder_SmallShip_Bot);\n        }\n\n        public static void PlayFriendlyFireCue()\n        {\n            if (m_friendlyFireCue == null || !m_friendlyFireCue.Value.IsPlaying)\n            {\n                m_friendlyFireCue = MyAudio.AddCue2D(MySoundCuesEnum.HudFriendlyFireWarning);\n                m_friendlyFireTimeFromLastPlayed = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Ships/MySmallShipBot2.cs",
    "content": "﻿using System;\nusing Microsoft.Xna.Framework;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing System.Collections.Generic;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.AppCode.Game.Utils;\nusing SysUtils;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.GUI;\nusing KeenSoftwareHouse.Library.Memory;\nusing MinerWars.AppCode.Physics;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.GUI.Helpers;\nusing KeenSoftwareHouse.Library.Trace;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.AppCode.Game.HUD;\nusing System.Text;\nusing MinerWars.AppCode.Game.Managers.PhysicsManager.Physics;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Gameplay;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Managers.EntityManager.Entities.Prefabs;\n\nnamespace MinerWars.AppCode.Game.Managers.EntityManager.Entities\n{\n\n    //using MinerWars.AppCode.Game.Trailer;\n\n    \n\n    class MySmallShipBot : MySmallShip\n    {\n\n        public const int TICKS_BETWEEN_WAYPOINT_CHECKS = 20;\n\n        //TODO hack for let enemy go after some time\n        private int m_guardingCounter;\n\n        #region Constants\n\n        //Each parameter is scaled for these values, there is a function for rescaling these parameters so don't change this\n        private const int DEFAULT_MASS = 7000;\n        private const int DEFAULT_DDISTANCE = 250;\n\n        //Which aim is good for shooting, adjusted with tuner for each weapon during shooting\n        private const float FIRING_CONE_DEGREES = 45f;\n\n        //How far can we check waypoint as visited\n        private const float WAYPOINT_DISTANCE_FOR_CHECK = 100f;\n\n        //Speed modificator\n        private const float MAX_SPEED_AHEAD = -0.5f;\n        private const float MAX_ROTATE_SPEED_COEF = 40.0f;\n\n        //Minimal rotation\n        private const float MIN_ROTATION_POWER = 1200;\n\n        // How much should bot predict movements to aim more precisely\n        private const float MOVEMENT_PREDICTION_TUNER = 0.18f;\n\n        // How much must bots position change to save new position as waypoint\n        private const int MEMORY_MAX_TIME_MILLISECONDS = 1000;\n        private const int CHECKS_TO_GET_LOST = 5;\n        private const int FREQUENCY_FOR_RAYCAST_TICKS = 5;\n\n        private const int MAX_LEVELING_DISTANCE = 2000;\n        public  const int MAX_FOLLOW_DISTANCE = 1000;\n        private const int MAX_CHAIN_AGGRO_DISTANCE = 2000;\n        private const int MAX_ENEMY_IN_SIGHT = 2000;\n        private const int MIN_WAY_POINT_CHECK_TIMER = 2000;//2sec\n        private const int MAX_WAY_POINT_CHECK_TIMER = 10000;//10sec\n\n        private float GetMinAttackDistance() { return 100.0f * MathHelper.Lerp(0.5f, 1f, DifficultyAttackReactDistance); }\n        private float m_attack_distance = 0;//maybe problem\n\n        /// <summary>\n        /// At what distance does bot consider player too close to get a shot and should back off.\n        /// </summary>\n        private const float TOO_CLOSE_DISTANCE = 750.0f;\n\n        /// <summary>\n        /// How long will bot roll to the side he is strafing\n        /// </summary>\n        private const int MAX_ROLLING_TIME_WHEN_STRAFING = 30;\n\n        #endregion\n\n        #region Enums\n\n        /// <summary>\n        /// Contains current bot's burst times for each weapon slot, based on ammo types.\n        /// For each weapon slot we have some important values:\n        /// 0 - Firing duration tuner    - less for rockets and low amount of ammo weapons, basic value is 10x shot interval for tuner = 1.0\n        /// 1 - Firing frequency tuner   - more for rockets and low amount of ammo weapons\n        /// 2 - Firing Cone tuner        - bot should launch its bigger weapons when it has more chances for hit\n        /// 3 - Firing Distance          - maximal shoot distance for weapon\n        /// 4 - Firing distance tuner    - tuner for shooting range\n        /// 5 - Shot interval            - interval between two shots from weapon\n        /// </summary>\n        private enum MyBotWeaponsParametrsEnum\n        {\n            FiringDurationTuner = 0,\n            FiringFrequencyTuner = 1,\n            FiringConeTuner = 2,\n            FiringDistance = 3,\n            FiringDistanceTuner = 4,\n            ShotIntervalMilliseconds = 5,\n        }\n\n        /// <summary>\n        /// All behaviors bot can use in decision logic\n        /// </summary>\n        public enum MyBotBehaviorsEnum\n        {\n            None = 0,\n            Attack = 1,\n            FollowTarget = 2,\n            FollowWaypoint = 3,\n            FlyAroundTarget = 4,\n            RunFromTarget = 5,\n            RaidAttack = 6,\n        }\n\n        /// <summary>\n        /// Supported decision logics, main setup for bots overall behavior \n        /// </summary>\n        public enum MyBotDecisionLogicsEnum\n        {\n            None=0,\n            CasualFighter=1,\n            GuardingFighter=2,\n            CarefulFighter=3,\n            Follower=4,\n            Guard=5,\n            FindYourself=6,\n            Harvester=7,\n            Repair=8\n        }\n\n        /// <summary>\n        /// Survival triggers bot can use\n        /// </summary>\n        public enum MyBotSurvivalAlertsEnum\n        {\n            None=0,\n            LowHealth=1,\n            LowOxygen=2,\n            LowFuel=3,\n            EnemyInsight=4,\n            CallForHelp=5,\n            Lost=6,\n            UnderAttack=7\n        }\n\n        /// <summary>\n        /// Type of waypoint ridethrough\n        /// </summary>\n        public enum MyBotGuardTypeEnum\n        {\n            OneWay=0,\n            Cycle=1,\n            Patrol=2\n        }\n        #endregion\n\n        #region Properties\n\n        /// <summary>\n        /// Bot decision for normal and combat situations\n        /// </summary>\n        public MyBotDecisionLogicsEnum NormalDecision { get; set; }\n\n        public MyBotDecisionLogicsEnum AttackDecision { get; set; }\n\n\n        //always 0 super easy 1 max hard\n\n        // how much will bot strafe during combat  (not its speed)\n        public float DifficultyStrafingSpeed { get; set; }\n\n        // ship speed \n        public float DifficultyMovingSpeed { get; set; }\n\n        // affect speed of shooting (delays between all shooting)\n        public float DifficultyFireRatio { get; set; }\n\n        // what guns/slots will be used during fight / shoting\n        public float DifficultyGunUsageRatio { get; set; }\n\n        // how often will be raid attack executed\n        public float DifficultyRaidAttackOccurrence { get; set; }\n\n        // how often will be fly around exectued\n        public float DifficultyFlyAroundTargetOccurrence { get; set; }\n\n        //how far will bot react on enemy presence and from what distance he will shoot ( harder - more far )\n        public float DifficultyAttackReactDistance { get; set; }\n\n        //use of fire burst 0 - 1\n        public float DifficultyUseFireBurst { get; set; }\n\n\n        #endregion\n\n        #region Variables\n        //Determines if bot should fire now\n        private bool m_isFiring = false;\n\n        //Switches afterburner on/off\n        private bool m_afterBurner = false;\n\n        //Switches decision logic between non-combat decision and combat decision\n        private bool m_isInCombat = false;\n\n        //Switches between flight right to the target or some way around\n        private bool m_rolling = false;\n\n        //If bot is lost\n        private bool m_isLost = false;\n\n        /// <summary>\n        /// reference to keep track of all bots following us\n        /// </summary>\n        private List<MySmallShipBot> m_followers = new List<MySmallShipBot> ();\n\n        /// <summary>\n        /// Size of waypoint memory\n        /// </summary>\n        private int m_waypointMemorySize = 200;\n\n        /// <summary>\n        /// Arrays for control times for each behavior\n        /// </summary>\n        private float[] m_minBehaviorsTimesInTicks = new float[Enum.GetNames(typeof(MyBotBehaviorsEnum)).Length];\n        private float[] m_maxBehaviorsTimesInTicks = new float[Enum.GetNames(typeof(MyBotBehaviorsEnum)).Length];\n\n        /// <summary>\n        /// Keeps distance from target for multiple use of this parameter each update\n        /// </summary>\n        private float m_distanceToTarget;\n\n        /// <summary>\n        /// Keeps angle to target for multiple use of this parameter each update\n        /// </summary>\n        private float m_angleToTarget;\n\n        /// <summary>\n        /// Direction of current ship strafe.\n        /// </summary>\n        //private MyBotStrafeDirectionsEnum m_strafe = MyBotStrafeDirectionsEnum.None;\n        private float m_strafeHorizontal = 0;\n        private float m_strafeVertical = 0;\n\n\n        /// <summary>\n        /// Timers for strafing direction change, making decision etc. \n        /// </summary>\n        private float m_strafeTimeCounter;\n        private float m_strafeMaxTime;\n\n        private float m_raidTimeCounter;\n        private float m_raidMaxTime;\n\n\n        private float m_decisionTimeCounter;\n        private float m_decisionMaxTime = MyConstants.PHYSICS_STEPS_PER_SECOND * 0.5f;\n\n        private float m_behaviourTimeCounter;\n        private float m_behaviourMaxTime;\n\n        private int m_nextWaypointTimer;\n        private int m_waypointCheckTimer;\n\n        private int m_lostCounter;\n\n        private MyEntity m_target;\n        /// <summary>\n        /// Target for attack/follow etc.\n        /// </summary>\n        private MyEntity Target\n        {\n            get\n            {\n                return m_target;\n            }\n            set\n            {\n                if (m_target != value)\n\t            {\n                    Trace.SendMsgLastCall(string.Format(\"Bot {0} Target changed: {1}\", Name, value != null ? value.ToString() : \"null\"));\n\t            }\n\n                m_target = value;\n            }\n        }\n\n        private MyEntity m_followTarget;\n        /// <summary>\n        /// Target for attack/follow etc.\n        /// </summary>\n        private MyEntity FollowTarget\n        {\n            get\n            {\n                return m_followTarget;\n            }\n\n            set\n            {\n                if (m_followTarget != value)\n                {\n                    Trace.SendMsgLastCall(string.Format(\"Bot {0} Follow target: {1}\", Name, value != null ? value.ToString() : \"null\"));\n                }\n                m_followTarget = value;\n            }\n        }\n\n        private MyEntity m_threat;\n        /// <summary>\n        /// some1 who attacked me or is threat to me\n        /// </summary>\n        private MyEntity Threat\n        {\n            get\n            {\n                return m_threat;\n            }\n            set\n            {\n                if (m_threat != value)\n                {\n                    Trace.SendMsgLastCall(string.Format(\"Bot {0} Threat changed: {1}\", Name, value != null ? value.ToString() : \"null\"));\n                }\n                m_threat = value;\n            }\n        }\n\n        /// <summary>\n        /// spot where are we moving\n        /// </summary>\n        private Vector3? m_flightTarget;\n\n        private MyBotBehaviorsEnum m_behaviour = MyBotBehaviorsEnum.None;\n        /// <summary>\n        /// Actual behavior of bot\n        /// This can be changed only in decision logic\n        /// </summary>\n        private MyBotBehaviorsEnum Behaviour\n        {\n            get\n            {\n                return m_behaviour;\n            }\n\n            set\n            {\n                if (m_behaviour != value)\n                {\n                    Trace.SendMsgLastCall(string.Format(\"Bot {0} Behavior changed: {1}\", Name, value));\n                }\n                m_behaviour = value;\n            }\n        }\n\n        private MyBotDecisionLogicsEnum m_survivalDecision = MyBotDecisionLogicsEnum.None;\n        //notEditable | this is changed by survival kit, there you can set your desired decision for each occasion\n        private MyBotDecisionLogicsEnum SurvivalDecision\n        {\n            get\n            {\n                return m_survivalDecision;\n            }\n            set\n            {\n                if (value != m_survivalDecision)\n                {\n                    Trace.SendMsgLastCall(string.Format(\"Bot {0} Survival Decision changed: {1}\", Name, value));\n                }\n\n                m_survivalDecision = value;\n            }\n        }\n\n        /// <summary>\n        /// Waypoint for guarding/traveling and second one for creating bot's own way (so he can return back or find a way for others)\n        /// </summary>\n        private MyWaypointMemory m_savedWaypoints;\n\n        private MyWaypointMemory m_rememberWaypoints;\n        private MyWaypointMemory m_temporaryWaypoints;\n\n        private MyCanSeeMemory m_canSeeCheck;\n        private MyCanSeeMemory m_canSeeCheckForMove;\n        private MyCanSeeMemory m_canSeeCheckForShoot;\n\n        /// <summary>\n        /// Priority survival alerts and decision logic for each one so bot can control some indicators before his usual work\n        /// Priority 0 has the highest priority\n        /// /// </summary>\n        private Dictionary<MyBotSurvivalAlertsEnum, MySurvivalDecision> m_survivalKit;\n\n        /// <summary>\n        /// Saves all weapon types the bot can use\n        /// </summary>\n        private MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum m_weaponTypesMounted;\n\n        /// <summary>\n        /// Weapon parameters for all weapon slots\n        /// </summary>\n        private MyBotParams[] m_botWeaponParamsAllSlots;\n\n        /// <summary>\n        /// Friendly fire cue\n        /// </summary>\n        private MySoundCue? m_friendlyFireCue;\n        #endregion\n\n        #region Structs\n        /// <summary>\n        /// Params of mounted weapons, so bot know when to fire each slot etc.\n        /// </summary>\n        private struct MyBotParams\n        {\n            public float[] WeaponsParams;\n            public MyMwcObjectBuilder_FireKeyEnum FireKey;\n            public MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum WeaponType;\n            public bool Enabled;\n            public bool BurstFiring;\n            public MyStopwatch BurstTimer;\n            public float LastShotMilliseconds;\n        }\n\n        /// <summary>\n        /// Survival control and trigger\n        /// </summary>\n        private struct MySurvivalDecision\n        {\n            public MyBotDecisionLogicsEnum SurvivalDecision;\n            public int SurvivalTrigger;\n        }\n\n        /// <summary>\n        /// Struct for memorize waypoint way\n        /// </summary>\n        public struct MyWaypointMemory\n        {\n            //List of waypoints\n            public List<Vector3> m_WaypointList;\n\n            //Pointer to actual waypoint\n            public int m_WayIndex;\n\n            //How many waypoints will be checked while looking for shorter way\n            public int m_checkDistance;\n\n            /// <summary>\n            /// If bot is goin forward or getting back\n            /// +1 forward\n            /// -1 backward\n            /// </summary>\n            public int m_IndexDirection;\n\n            /// <summary>\n            /// Type of cycling waypoints \n            /// </summary>\n            public MyBotGuardTypeEnum m_GuardType;\n\n            public MyWaypointMemory(MySmallShipBot m_bot)\n            {\n                m_WayIndex = 0;\n                m_checkDistance = 1;\n                m_IndexDirection = 1;\n                m_GuardType = MyBotGuardTypeEnum.OneWay;\n                m_WaypointList = new List<Vector3>(m_bot.m_waypointMemorySize){m_bot.GetPosition()};\n            }\n        }\n\n        private struct MyCanSeeMemory\n        {\n            public bool m_result;\n            public int m_ticksFromLastCheck;\n\n            public MyCanSeeMemory(bool result)\n            {\n                m_result = result;\n                m_ticksFromLastCheck = FREQUENCY_FOR_RAYCAST_TICKS;\n            }\n        }\n        #endregion\n\n        #region BotLogics\n\n        /// <summary>\n        /// This method sets various variables for moving, shooting, etc. based on actual behavior and bot conditions\n        /// TODO\n        /// </summary>\n        public void ResolveBehavior()\n        {\n            switch (Behaviour)\n            {\n                case MyBotBehaviorsEnum.Attack:\n                    {\n                        //VOICE: aggressive\n                        break;\n                    }\n                case MyBotBehaviorsEnum.FlyAroundTarget:\n                    {\n                        break;\n                    }\n                case MyBotBehaviorsEnum.FollowTarget:\n                case MyBotBehaviorsEnum.FollowWaypoint:\n                    {\n                        if (m_flightTarget == null)\n                            break;\n                        //VOICE: On my way\n                        //If bot is really far from target, he should use afterburner\n                        if (DistanceToTarget(m_flightTarget.Value) > 250 ) \n                            m_afterBurner = true;\n                        else \n                            m_afterBurner = false;\n                        break;\n                    }\n                case MyBotBehaviorsEnum.RunFromTarget:\n                    {\n                        //VOICE: flee\n                        break;\n                    }\n            }\n        }\n\n        /// <summary>\n        /// Sets variables which can be set only once - when changed to some behavior\n        /// TODO\n        /// </summary>\n        /// <param name=\"behavior\"></param>\n        private void OnBehaviorChanged(MyBotBehaviorsEnum behavior)\n        {\n            switch (behavior)\n            {\n                case MyBotBehaviorsEnum.Attack:\n                    {\n                        m_isFiring = true;\n                        m_rolling = false;\n                        m_afterBurner = false;\n                        break;\n                    }\n                case MyBotBehaviorsEnum.RaidAttack:\n                    {\n                        m_isFiring = true;\n                        m_rolling = true;\n                        m_afterBurner = true;\n                        break;\n                    }\n                case MyBotBehaviorsEnum.FlyAroundTarget:\n                    {\n                        m_isFiring = false;\n                        m_rolling = true;\n                        m_afterBurner = true;\n                        break;\n                    }\n                case MyBotBehaviorsEnum.FollowTarget:\n                    {\n                        m_isFiring = false;\n                        m_rolling = false;\n                        m_afterBurner = false;\n                        break;\n                    }\n                case MyBotBehaviorsEnum.FollowWaypoint:\n                    {\n                        m_isFiring = false;\n                        m_rolling = false;\n                        m_afterBurner = false;\n                        break;\n                    }\n                case MyBotBehaviorsEnum.RunFromTarget:\n                    {\n                        m_isFiring = false;\n                        m_rolling = false;\n                        m_afterBurner = true;\n                        break;\n                    }\n            }\n        }\n\n        public void SetWaypoints(MyWaypointMemory mem)\n        {\n            m_savedWaypoints = mem;\n        }\n\n        public void InitPatrolWaypointsSimpleDirections(Vector3 pos, float radi)\n        {\n            m_savedWaypoints = new MyWaypointMemory(this);\n\n            Matrix randomMatrix = Matrix.CreateLookAt(pos, pos + MyMwcUtils.GetRandomVector3Normalized(), MyMwcUtils.GetRandomVector3Normalized());\n\n            //Set Waypoint route\n            SetFirstWaypoint(ref m_savedWaypoints, pos);\n            AddWaypoint(ref m_savedWaypoints, pos + randomMatrix.Right * radi);\n            AddWaypoint(ref m_savedWaypoints, pos + randomMatrix.Up * radi);\n            AddWaypoint(ref m_savedWaypoints, pos + randomMatrix.Down * radi + randomMatrix.Right * radi);\n\n            //WayPointerToStart(ref m_savedWaypoints);\n            m_savedWaypoints.m_GuardType = MyBotGuardTypeEnum.Cycle;\n        }\n\n        Vector3 HelperGetSidePositionVector(Matrix spot, float dir, float dr, float myradi, List<MyRBElement> rbFounded, ref bool canPlace)\n        {\n            Vector3 sideDir = spot.Right;\n            sideDir.Normalize();\n            Vector3 pos = spot.Translation + sideDir * dr * dir /*+ -spot.Forward * myradi * 2*/;\n            //bool canPlace = true;\n            if (CanSee(pos) != null)\n                return Vector3.Zero;\n            //now try find spot\n            foreach (MyRBElement rb in rbFounded)\n            {\n                MyEntity ent = ((MyGameRigidBody)rb.GetRigidBody().m_UserData).Entity;\n                if (ent == this)\n                    continue;\n                if (ent is MySmallShip)\n                {\n                    if (MyMwcUtils.SphereVsSphere(ent.WorldVolume.Center, ent.WorldVolume.Radius, pos, WorldVolume.Radius))\n                    {\n                        canPlace = false;\n                        break;\n                    }\n                }\n\n                if (ent is MySmallShipBot)\n                {\n                    MySmallShipBot bot = ent as MySmallShipBot;\n                    if (bot.m_flightTarget.HasValue && MyMwcUtils.SphereVsSphere(bot.m_flightTarget.Value, ent.WorldVolume.Radius, pos, WorldVolume.Radius))\n                    {\n                        canPlace = false;\n                        break;\n                    }\n                }\n            }\n            return pos;\n        }\n\n        //computable expensive\n        Vector3 GetNearestFreeSpotToFollowTarget(Matrix spot)\n        {\n            Vector3 toRet = Vector3.Zero;\n            float myradi = WorldVolume.Radius * 2.5f;\n            float myboxd = 500;\n\n            //find our free spot\n            using (var rbFounded = PoolList<MyRBElement>.Get())\n            {\n\n                MyPruningStructure prunningStructure = MyPhysics.physicsSystem.GetRigidBodyModule().GetPruningStructure();\n\n                BoundingBox rbInputElementGetWorldSpaceAABB = new BoundingBox(\n                    spot.Translation - new Vector3(myboxd ,myboxd ,myboxd ), \n                    spot.Translation +new Vector3(myboxd ,myboxd ,myboxd ) );\n                prunningStructure.OverlapRBAllBoundingBox(ref rbInputElementGetWorldSpaceAABB, rbFounded);\n\n                for (float dr = 0; dr < 100; dr += myradi)//100m from left to right\n                {\n                    bool canPlaced1 = true;\n                    Vector3 d1 = HelperGetSidePositionVector(spot, -1, dr, myradi, rbFounded, ref canPlaced1);\n\n                    bool canPlaced2 = true;\n                    Vector3 d2 = HelperGetSidePositionVector(spot, 1, dr, myradi, rbFounded, ref canPlaced2);\n\n                    if (canPlaced1)\n                        toRet = d1;\n\n                    if (canPlaced2 && (d2 - WorldMatrix.Translation).Length() < (d1 - WorldMatrix.Translation).Length() || !canPlaced1)\n                        toRet = d2;\n\n                    if (toRet != Vector3.Zero)\n                        break;\n                }\n\n            }\n            return toRet;\n        }\n\n        /// <summary>\n        /// Changes behaviors according actual decision logic\n        /// TODO\n        /// </summary>\n        private void MakeDecision()\n        {\n            //Selects bot decision logic, according to priority: Survival -> Combat -> Normal\n            MyBotDecisionLogicsEnum superiorBehaviour = NormalDecision;\n            if (m_isInCombat) \n                superiorBehaviour = AttackDecision;\n            if (SurvivalDecision != MyBotDecisionLogicsEnum.None) \n                superiorBehaviour = SurvivalDecision;\n\n            //Make decision \n            switch (superiorBehaviour)\n            {\n                case MyBotDecisionLogicsEnum.None:\n                    {\n                        break;\n                    }\n                //Follow waypoint route\n                case MyBotDecisionLogicsEnum.Guard:\n                    {\n                        FollowWaypoint(ref m_savedWaypoints);\n                        \n                        //If we cant go to target, try go this way for a while before getting lost\n                        if (CheckCanSeeIgnoreMovingObjects(ref m_canSeeCheckForMove, m_flightTarget.Value))\n                        {\n                            //we want to return bot to his actual position if something happens\n\n                            SetActualWaypoint(ref m_rememberWaypoints, this.GetPosition());\n                            m_lostCounter = 0;\n                        }\n                        else\n                        {\n                            m_lostCounter++;\n                        }\n\n                        //OK, we are definitely lost now\n                        if (m_lostCounter > CHECKS_TO_GET_LOST)\n                        {\n                            m_lostCounter = 0;\n                            m_rememberWaypoints.m_IndexDirection = -1;\n                            //CheckMemoryList(ref m_rememberWaypoints, -1, 15);\n                            m_isLost = true;\n                            break;\n                        }\n                        break;\n                    }\n                case MyBotDecisionLogicsEnum.Follower:\n                    {\n                        if (FollowTarget == null)\n                        {\n                            FollowTarget = SearchTargetToFollow();\n                            if (FollowTarget == null)\n                                NormalDecision = MyBotDecisionLogicsEnum.Guard;\n                        }\n\n                        float toleranceRadius = WorldVolume.Radius * 7;//experimental value so far yet\n\n                        if (FollowTarget != null && (this.WorldMatrix.Translation - FollowTarget.GetPosition()).Length() > toleranceRadius)\n                        {\n                            if (true||CheckCanSeeIgnoreMovingObjects(ref m_canSeeCheckForMove, FollowTarget.GetPosition()))\n                            {\n                                Vector3 toleranceFly = GetNearestFreeSpotToFollowTarget(FollowTarget.WorldMatrix);\n                                if ((this.WorldMatrix.Translation - toleranceFly).Length() < toleranceRadius)\n                                    m_flightTarget = this.WorldMatrix.Translation;\n                                else\n                                    m_flightTarget = toleranceFly;\n                                Behaviour = MyBotBehaviorsEnum.FollowTarget;\n                                OnBehaviorChanged(Behaviour);\n                                m_lostCounter = 0;\n                            }\n                            else\n                            {\n                                m_lostCounter++;\n                            }\n                        }else\n                            m_flightTarget = this.WorldMatrix.Translation;\n                        \n                        if(m_lostCounter > CHECKS_TO_GET_LOST)\n                        {\n                            if (FollowTarget == MySession.PlayerShip) GetTargetsRoute((MySmallShip)FollowTarget);\n                            m_lostCounter = 0;\n                            m_isLost = true;\n                        }\n                        \n                        break;\n                    }\n                \n                case MyBotDecisionLogicsEnum.CasualFighter:\n                    {\n                        CasualFighter();\n                        break;\n                    }\n                case MyBotDecisionLogicsEnum.GuardingFighter:\n                    {\n                        if (m_guardingCounter++ > 30)\n                        {\n                            m_guardingCounter = 0;\n                            m_isInCombat = false;\n                            Target = null;\n                        }\n                        else\n                            CasualFighter();\n                        break;\n                    }\n                    \n                case MyBotDecisionLogicsEnum.FindYourself:\n                    {\n                        if(Target==null)\n                        {\n                            //set next flight target and change behaviour to fly\n                            m_flightTarget = SetupNextWaypointIfPosible(ref m_rememberWaypoints);\n\n                            //If waypoint changed, delete previous waypoint from list\n                            int previousWaypoint = m_rememberWaypoints.m_WayIndex + 1;\n                            if (m_rememberWaypoints.m_WaypointList.Count > previousWaypoint)\n                                m_rememberWaypoints.m_WaypointList.RemoveRange(previousWaypoint, 1);\n\n                            MyBotBehaviorsEnum next_behaviour = MyBotBehaviorsEnum.FollowWaypoint;\n                            if (next_behaviour != Behaviour)\n                                OnBehaviorChanged(next_behaviour);\n\n                            Behaviour = next_behaviour;\n\n                            //if we are at start of memory, we are not lost anymore\n                            float d = DistanceToTarget(m_rememberWaypoints.m_WaypointList[0]);\n                            if (DistanceToTarget(m_rememberWaypoints.m_WaypointList[0]) < WAYPOINT_DISTANCE_FOR_CHECK)\n                            {\n                                m_rememberWaypoints.m_IndexDirection = 1;\n                                m_isLost = false;\n                            }\n                            break;\n                        }\n                        else\n                        {\n                            if (CheckCanSee(ref m_canSeeCheck, Target) && Target == MySession.PlayerShip)\n                            {\n                                if (m_temporaryWaypoints.m_WayIndex >= m_temporaryWaypoints.m_WaypointList.Count - 1)\n                                {\n                                    GetTargetsRoute((MySmallShip)Target);\n                                }\n                                FollowWaypoint(ref m_temporaryWaypoints);\n                            }\n                            else\n                            {\n                                m_isLost = false;\n                            }\n                            break; \n                        }\n                    }\n                   \n            }\n        }\n\n        private void NotifyEnemy(MyEntity enemy)\n        {\n            bool factionPossibleEnemy =\n                MyFactions.GetFactionsRelation(this.Faction, enemy.Faction) == MyFactionRelationEnum.Enemy;\n                //||\n                //MyFactions.GetFactionsRelation(this.Faction, enemy.Faction) == MyFactionRelationEnum.Neutral;\n            if (factionPossibleEnemy)\n                Threat = enemy;\n        }\n\n        /// <summary>\n        /// \n        /// </summary>\n        /// <param name=\"enemy\"></param>\n        private void NotifyMyGroupAboutEnemy(MyEntity enemy)\n        {\n            NotifyEnemy(enemy);\n\n            //notify leader and its followers\n            if (FollowTarget != null && FollowTarget is MySmallShipBot)\n            {\n                (FollowTarget as MySmallShipBot).NotifyEnemy(enemy);\n                foreach (MySmallShip fl in (FollowTarget as MySmallShipBot).m_followers)\n                    (fl as MySmallShipBot).NotifyEnemy(enemy);\n            }\n\n            //notify my childs\n            foreach(MySmallShip fl in m_followers)\n                (fl as MySmallShipBot).NotifyEnemy(enemy);\n            \n            //then all \"friends\" around\n            using (var rbFounded = PoolList<MyRBElement>.Get())\n            {\n                MyPruningStructure prunningStructure = MyPhysics.physicsSystem.GetRigidBodyModule().GetPruningStructure();\n                float myboxd = MAX_CHAIN_AGGRO_DISTANCE / 2.0f;\n                BoundingBox rbInputElementGetWorldSpaceAABB = new BoundingBox(\n                    GetPosition() - new Vector3(myboxd, myboxd, myboxd),\n                    GetPosition() + new Vector3(myboxd, myboxd, myboxd));\n                prunningStructure.OverlapRBAllBoundingBox(ref rbInputElementGetWorldSpaceAABB, rbFounded);\n                foreach (MyRBElement rb in rbFounded)\n                {\n                    MyEntity ent = ((MyGameRigidBody)rb.GetRigidBody().m_UserData).Entity;\n                    if (ent == this)\n                        continue;\n\n                    if (ent is MySmallShipBot)\n                    {\n                        MySmallShipBot bot = ent as MySmallShipBot;\n                        bool factionFriend = MyFactions.GetFactionsRelation(this.Faction, bot.Faction) == MyFactionRelationEnum.Friend;\n                        if (!bot.IsDead() && bot.GetObjectWeFollow() == null && factionFriend)\n                            bot.NotifyEnemy(enemy);\n                    }\n\n                }\n            }\n            return; \n        }\n        \n\n        /// <summary>\n        /// \n        /// </summary>\n        /// <param name=\"spot\"></param>\n        /// <returns></returns>\n        private Vector3 GetRaidAttackSpot(Matrix spot, float direct_angle, float deltadist)\n        {\n            Vector3 disp = this.WorldMatrix.Up * MyMwcUtils.GetRandomFloat(-1,1)  + this.WorldMatrix.Left * MyMwcUtils.GetRandomFloat(-1,1);\n            disp.Normalize();\n\n            // rotate disp about its forward\n            float radi = (WorldMatrix.Translation - spot.Translation).Length() * (2 + deltadist);\n            disp *= radi * (float)Math.Tan(direct_angle);\n            return this.WorldMatrix.Translation + this.WorldMatrix.Forward * radi + disp;\n        }\n\n        /// <summary>\n        /// \n        /// </summary>\n        /// <param name=\"spot\"></param>\n        /// <returns></returns>\n        private Vector3 GetFlyAroundSpot(Matrix spot)\n        {\n            Vector3 LeftNormal = spot.Left;\n            LeftNormal.Normalize();\n            float around = (MyMwcUtils.GetRandomFloat(0,1) > 0.5f )?(MyMwcUtils.GetRandomFloat(-0.6f, -0.3f)) : (MyMwcUtils.GetRandomFloat(0.3f, 0.6f));\n            return this.WorldMatrix.Translation + LeftNormal * (spot.Translation - this.WorldMatrix.Translation).Length() * around;\n        }\n\n        /// <summary>\n        /// \n        /// </summary>\n        /// <param name=\"spot\"></param>\n        /// <returns></returns>\n        private Vector3 GetAttackSpot(Matrix spot, float rightleftcoef, float updowncoef)\n        {\n            rightleftcoef = MathHelper.Lerp(0, 1, DifficultyStrafingSpeed);\n            updowncoef = MathHelper.Lerp(0, 1, DifficultyStrafingSpeed);\n            Vector3 LeftNormal = spot.Left;\n            LeftNormal.Normalize();\n            Vector3 UpNormal = spot.Up;\n            UpNormal.Normalize();\n            return spot.Translation + Vector3.Normalize(WorldMatrix.Translation - spot.Translation) * m_attack_distance + LeftNormal*rightleftcoef + UpNormal*updowncoef;//ATTACK_DISTANCE;\n        }\n\n\n        /// <summary>\n        /// Does domage to entity\n        /// </summary>\n        /// <param name=\"deltaHealth\">Amount of damage</param>\n        public override void DoDamage(float healthDamage, float damage, MyDamageType damageType, MyAmmoType ammoType, MyEntity damageSource)\n        {     \n            MyFactionRelationEnum? factionRelation = null;\n            if (damageSource != null)\n            {\n                factionRelation = MyFactions.GetFactionsRelation(this.Faction, damageSource.Faction);\n            }\n\n            // notify group\n            if (damageSource is MySmallShip && factionRelation == MyFactionRelationEnum.Enemy)\n            {\n                NotifyMyGroupAboutEnemy(damageSource);                \n            }\n            \n            bool wasDead = IsDead();\n            \n            if (CanDie(damageSource))\n            {\n                base.DoDamage(healthDamage, damage, damageType, ammoType, damageSource);\n            }\n            \n            // if player's ship fired\n            if (damageSource == MySession.PlayerShip)\n            {\n                // friendly fire warning\n                if (factionRelation == MyFactionRelationEnum.Friend)\n                {\n                    if (m_friendlyFireCue == null || !m_friendlyFireCue.Value.IsPlaying)\n                    {\n                        m_friendlyFireCue = MyAudio.AddCue2D(MySoundCuesEnum.SfxFriendlyFireWarning);\n                    }\n                }\n                // targed destroyed notification\n                if (factionRelation == MyFactionRelationEnum.Enemy && !wasDead && IsDead())\n                {\n                    MyAudio.AddCue2D(MySoundCuesEnum.SfxTargetDestroyed);\n                }\n            }\n        }\n\n        /// <summary>\n        /// \n        /// </summary>\n        private void CasualFighter()\n        {\n            //If target insight, set flight target to it, else try to fly on last known position of enemy\n            if (Behaviour == MyBotBehaviorsEnum.Attack)\n                m_attack_distance = MyMwcUtils.GetRandomFloat(GetMinAttackDistance(), GetMinAttackDistance());\n\n            \n            if(Behaviour == MyBotBehaviorsEnum.FlyAroundTarget || Behaviour == MyBotBehaviorsEnum.RaidAttack)\n            {\n                if ((m_flightTarget.Value - this.WorldMatrix.Translation).Length() < this.WorldVolume.Radius || m_flightTarget.HasValue && CanSee(m_flightTarget.Value)!=null)\n                {\n                    Behaviour = MyBotBehaviorsEnum.Attack;\n                    OnBehaviorChanged(Behaviour);\n                    ResetBehaviourTimer();\n                }\n            }\n\n            if (Behaviour == MyBotBehaviorsEnum.Attack && Target != null && Target.Health > 0)\n            {\n                if (CheckCanSee(ref m_canSeeCheckForShoot, Target))\n                {\n                    if (m_strafeTimeCounter++ > m_strafeMaxTime)\n                    {\n                        m_strafeHorizontal = MyMwcUtils.GetRandomFloat(-100,100);\n                        m_strafeVertical = MyMwcUtils.GetRandomFloat(-100, 100);\n                        ResetStrafeTimer();\n                    }\n\n                    m_flightTarget = GetAttackSpot(Target.WorldMatrix, m_strafeHorizontal, m_strafeVertical);\n                }\n                else\n                {\n                    Behaviour = MyBotBehaviorsEnum.FollowWaypoint;\n                    if (Target == MySession.PlayerShip) GetTargetsRoute((MySmallShip)Target);\n                    OnBehaviorChanged(Behaviour);\n                    ResetBehaviourTimer();\n                }\n            }\n\n            if (Behaviour == MyBotBehaviorsEnum.FollowWaypoint)\n            {\n            }\n\n            if (m_behaviourTimeCounter > m_behaviourMaxTime)\n            {\n                switch (Behaviour)\n                {\n                    case MyBotBehaviorsEnum.RaidAttack:\n                        {\n                            break;\n                        }\n                    //If bot is near target and attacking now, he should try some evasive maneuver\n                    case MyBotBehaviorsEnum.Attack:\n                        {\n\n                            if (m_distanceToTarget < TOO_CLOSE_DISTANCE * MathHelper.Lerp(1f,0.5f, DifficultyAttackReactDistance))\n                            {\n                                Behaviour = MyBotBehaviorsEnum.FlyAroundTarget;\n                                if (Target != null)\n                                {\n                                    m_flightTarget = GetFlyAroundSpot(Target.WorldMatrix);\n                                }\n                            }\n                            //here setup raid type attack triger on some switch\n                            if (m_distanceToTarget < TOO_CLOSE_DISTANCE * MathHelper.Lerp(1f, 0.5f, DifficultyAttackReactDistance) && m_raidTimeCounter++ > m_raidMaxTime)\n                            {\n                                Behaviour = MyBotBehaviorsEnum.RaidAttack;\n\n                                if (Target != null && Target.Health > 0)\n                                    m_flightTarget = GetRaidAttackSpot(Target.WorldMatrix, (float)Math.PI * (float)MyMwcUtils.GetRandomFloat(10, 15) / 180, MyMwcUtils.GetRandomFloat(0.5f, 1));\n                                //NotifyMyGroupAboutRaid( m_target );\n                                ResetRaidTimer();\n                            }\n\n                            if (Target != null && Target.Health > 0)\n                                NotifyMyGroupAboutEnemy( Target );\n                            //m_strife_attack_coef = 0; // how many meters will strife +- to avoid shots this value vill pump constantly to add some dynamics during attack\n                            //m_attack_distance = MyMwcUtils.GetRandomFloat(MIN_ATTACK_DISTANCE, MAX_ATTACK_DISTANCE);\n\n                            break;\n                        }\n                    case MyBotBehaviorsEnum.FollowWaypoint:\n                        if (CheckCanSee(ref m_canSeeCheckForShoot, Target))\n                        {\n                            Behaviour = MyBotBehaviorsEnum.Attack;\n                        }\n                        else\n                        {\n                            if (m_temporaryWaypoints.m_WayIndex >= m_temporaryWaypoints.m_WaypointList.Count - 1)\n                            {\n                                GetTargetsRoute((MySmallShip)Target);\n                            }\n\n                            if (m_temporaryWaypoints.m_WaypointList != null)\n                            {\n                                if (m_temporaryWaypoints.m_WaypointList.Count > m_temporaryWaypoints.m_WayIndex)\n                                {\n                                    int index = m_temporaryWaypoints.m_WayIndex;\n                                    while (index < m_temporaryWaypoints.m_WaypointList.Count)\n                                    {\n                                        Vector3 waypoint = m_temporaryWaypoints.m_WaypointList[index];\n                                        if (CanSee(waypoint) == null)\n                                        {\n                                            m_temporaryWaypoints.m_WayIndex = index++;\n                                        }\n                                        else\n                                        {\n                                            break;\n                                        }\n                                    }\n                                    m_flightTarget = m_temporaryWaypoints.m_WaypointList[m_temporaryWaypoints.m_WayIndex];\n                                }\n                            }\n\n                            ResetBehaviourTimer();\n                        }\n                        break;\n                    //If bot is not attacking now, he should attack\n                    default:\n                        {\n                            Behaviour = MyBotBehaviorsEnum.Attack;\n                            break;\n                        }\n                }\n                //Restart behaviour timer so bot will change behaviour later\n                OnBehaviorChanged(Behaviour);\n                ResetBehaviourTimer();\n            }\n        }\n\n        private void FollowWaypoint(ref MyWaypointMemory memory)\n        {\n            if (memory.m_WaypointList == null)\n                return;\n\n            //Set the right waypoint as target for flight\n            m_flightTarget = SetupNextWaypointIfPosible(ref memory);\n\n            MyBotBehaviorsEnum next_behaviour = MyBotBehaviorsEnum.FollowWaypoint;\n            if (next_behaviour != Behaviour)\n                OnBehaviorChanged(next_behaviour);\n\n            Behaviour = next_behaviour;\n\n        }\n\n        /// <summary>\n        /// Cycle all survival alerts by their priority and sets survival decision\n        /// </summary>\n        private void CheckSurvivalKit()\n        {\n            SurvivalDecision = MyBotDecisionLogicsEnum.None;\n            foreach (var item in m_survivalKit)\n            {\n                if (CheckSurvivalAlert(item.Key, item.Value))\n                {\n                    SurvivalDecision = item.Value.SurvivalDecision;\n                    return;\n                }\n            }\n        }\n\n        /// <summary>\n        /// Check one survival alert and decide if it is triggered\n        /// </summary>\n        /// <param name=\"alert\"></param>\n        /// <param name=\"check\"></param>\n        /// <returns></returns>\n        private bool CheckSurvivalAlert(MyBotSurvivalAlertsEnum alert, MySurvivalDecision check)\n        {\n            switch (alert)\n            {\n                case MyBotSurvivalAlertsEnum.LowHealth:\n                    {\n                        //VOICE: DMG taking / LOW HP \n                        //TODO: merge\n                        //if (check.SurvivalTrigger * DEFAULT_HEALTH_MAX < this.Health) return true;\n                        return false;\n                    }\n                case MyBotSurvivalAlertsEnum.LowOxygen:\n                    {\n                        //VOICE: LOW AIR/ EMPTY AIR\n                        return false;\n                    }\n                case MyBotSurvivalAlertsEnum.LowFuel:\n                    {\n                        //VOICE: LOW FUEL / EMPTY FUEL\n                        return false;\n                    }\n                case MyBotSurvivalAlertsEnum.UnderAttack:\n                    {\n                        if (Threat != null)\n                        {\n                            if (MyFactions.GetFactionsRelation(this.Faction, Threat.Faction) == MyFactionRelationEnum.Enemy\n                                ||\n                                MyFactions.GetFactionsRelation(this.Faction, Threat.Faction) == MyFactionRelationEnum.Neutral)\n                            {\n                                Target = Threat;\n                                return true;\n                            }\n                        }\n\n                        return false;\n                    }\n\n                case MyBotSurvivalAlertsEnum.EnemyInsight:\n                    {\n                        //handle this with under attack\n                        if (Threat != null && m_survivalKit.ContainsKey(MyBotSurvivalAlertsEnum.UnderAttack))\n                            return false;\n                        //VOICE: DETECT PLAYER\n\n                        //Search for targets around\n                        //find new target if old target is hidden\n                        if (Target == null || !CheckCanSee(ref m_canSeeCheck, Target) )\n                        {\n                            Target = SearchTargetToAttack(check.SurvivalTrigger);\n\n                            if (Target != null)\n                            {\n                                m_isInCombat = true;\n                                m_behaviourTimeCounter = Int16.MaxValue;\n                                return true;\n                            }\n                            else\n                            {\n                                Target = null;\n                                m_isInCombat = false;\n                                m_behaviourTimeCounter = Int16.MaxValue;\n                            }\n                        }\n                        else if (Target.IsDead())\n                        {\n                            Target = null;\n                            m_isInCombat = false;\n                            m_behaviourTimeCounter = Int16.MaxValue;\n                            return true;\n                        }\n                        else \n                            if (\n                                MyFactions.GetFactionsRelation(this.Faction, Target.Faction) == MyFactionRelationEnum.Enemy\n                                &&\n                                (GetPosition() - Target.GetPosition()).Length() < MAX_ENEMY_IN_SIGHT)\n                            return true;\n\n                        return false;\n                    }\n                case MyBotSurvivalAlertsEnum.CallForHelp: \n                    {\n                        return false;\n                    }\n                case MyBotSurvivalAlertsEnum.Lost:\n                    {\n                        if (m_isLost)\n                        {\n                            return true;\n                        }\n                        return false;\n                    }\n                default:\n                    {\n                        return false;\n                    }\n            }\n        }\n\n        /// <summary>\n        /// Adds survival alert, what to do when this alert is triggered and trigger for this ocasion\n        /// </summary>\n        /// <param name=\"survivalAlert\">trigger for survival decision</param>\n        /// <param name=\"decision\">decision for handeling survival</param>\n        /// <param name=\"trigger\">percentage of max parameter for health, oxygen and fuel issues | distance for detecting enemy</param>\n        public void AddSurvivalAlert(MyBotSurvivalAlertsEnum survivalAlert, MyBotDecisionLogicsEnum decision, int trigger)\n        {\n            var survivalHandler = new MySurvivalDecision { SurvivalDecision = decision, SurvivalTrigger = trigger };\n            m_survivalKit.Add(survivalAlert, survivalHandler);\n        }\n\n        /// <summary>\n        /// Adds one waypoint to the end of waypoint list\n        /// </summary>\n        /// <param name=\"memory\">Waypoint memory</param>\n        /// <param name=\"waypoint\"></param>\n        public void AddWaypoint(ref MyWaypointMemory memory, Vector3 waypoint)\n        {\n            //TODO: check if waypoint is inside sector\n            //if(MyMwcSectorConstants.SECTOR_SIZE_FOR_PHYS_OBJECTS_BOUNDING_BOX.Contains(waypoint) != ContainmentType.Contains)\n\n            memory.m_WaypointList.Add(waypoint);\n            memory.m_WayIndex = memory.m_WaypointList.Count - 1;\n        }\n\n        //Re - Initialize waypoint memory\n        public void CleanRoute(ref MyWaypointMemory memory)\n        {\n            memory.m_WaypointList.Clear();\n            memory.m_WaypointList.Add(GetPosition());\n        }\n\n        //Changes first waypoint which is normally set to bot starting location\n        public void SetFirstWaypoint(ref MyWaypointMemory memory, Vector3 target)\n        {\n            memory.m_WaypointList[0] = target;\n        }\n\n        /// <summary>\n        /// Sets position instead actual waypoint\n        /// </summary>\n        /// <param name=\"memory\">which memory to use</param>\n        /// <param name=\"target\">position to set</param>\n        public void SetActualWaypoint(ref MyWaypointMemory memory, Vector3 target)\n        {\n            if (memory.m_WaypointList.Count > 0)\n                memory.m_WaypointList[memory.m_WayIndex] = target;\n\n            else\n                AddWaypoint(ref memory, target);\n        }\n\n        protected void AddFollower(MySmallShipBot follower)\n        {\n            if (m_followers.Contains(follower))\n                return;\n            m_followers.Add(follower);\n        }\n\n        protected void RemoveFollower(MySmallShipBot follower)\n        {\n            m_followers.Remove(follower);\n        }\n\n        public MyEntity GetObjectWeFollow()\n        {\n            return FollowTarget;\n        }\n\n        /// <summary>\n        /// Sets the next waypoint pointer based on actual waypoint, direction which we are taking and guarding type\n        /// </summary>\n        /// <param name=\"memory\"></param>\n        private void NextWayPointer(ref MyWaypointMemory memory)\n        {\n            int nextIndex = memory.m_WayIndex + memory.m_IndexDirection;\n\n            //If we are not at the very end or start of route, just return next index\n            if (nextIndex < memory.m_WaypointList.Count && nextIndex >= 0)\n            {\n                memory.m_WayIndex = nextIndex;\n                return;\n            }\n            //else handle the end of route\n            switch (memory.m_GuardType)\n            {\n                case MyBotGuardTypeEnum.OneWay:\n                    {\n                        return;\n                    }\n                case MyBotGuardTypeEnum.Cycle:\n                    {\n                        if (memory.m_IndexDirection > 0)\n                            memory.m_WayIndex = 0;\n                        else\n                            memory.m_WayIndex = memory.m_WaypointList.Count - 1;\n\n                        return;\n                    }\n                case MyBotGuardTypeEnum.Patrol:\n                    {\n                        memory.m_IndexDirection *= -1;\n                        memory.m_WayIndex += memory.m_IndexDirection;\n                        return;\n                    }\n            }\n        }\n\n        /// <summary>\n        /// Decides if bot will change to next waypoint or keeps previous\n        /// </summary>\n        /// <param name=\"memory\"></param>\n        /// <returns>Position of waypoint</returns>\n        private Vector3 SetupNextWaypointIfPosible(ref MyWaypointMemory memory)\n        {\n            //If bot is far away from target waypoint, he should go to it, else he should continou with next waypoint\n            if (DistanceToTarget(memory.m_WaypointList[memory.m_WayIndex]) < WAYPOINT_DISTANCE_FOR_CHECK && MyMinerGame.TotalGamePlayTimeInMilliseconds - m_nextWaypointTimer > m_waypointCheckTimer)\n            {\n                m_nextWaypointTimer = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n                m_waypointCheckTimer = (int)MyMwcUtils.GetRandomFloat(MIN_WAY_POINT_CHECK_TIMER, MAX_WAY_POINT_CHECK_TIMER);\n                NextWayPointer(ref memory);\n            }\n            return memory.m_WaypointList[memory.m_WayIndex];\n        }\n\n        /*\n        private void RememberPosition()\n        {\n            //add waypoint\n            AddWaypoint(ref m_rememberWaypoints, GetPosition());\n\n            //check previous slots\n            //CheckMemoryList(ref m_rememberWaypoints, -1);\n\n            if (m_waypointTicks >= TICKS_BETWEEN_WAYPOINT_CHECKS)\n            {\n                CheckMemoryListBackwards(ref m_rememberWaypoints, -TICKS_BETWEEN_WAYPOINT_CHECKS);\n                m_waypointTicks = 0;\n            }\n            m_waypointTicks++;\n        }\n        */\n\n        /// <summary>\n        /// Checks some waypoint and sets WayIndex to position with further visible waypoint from current position\n        /// </summary>\n        /// <param name=\"memory\">Memory to check</param>\n        /// <param name=\"direction\">Direction to check - forward check is the same as direction in memory</param>\n        /// <param name=\"checkDistance\">How many waypoint to check</param>\n        private void CheckMemoryList(ref MyWaypointMemory memory, int direction, int checkDistance)\n        {\n\n            int checkingIndex = memory.m_WayIndex;\n            int finalIndex = memory.m_WayIndex;\n\n            for (int i = 0; i < checkDistance; i++)\n            {\n                checkingIndex += direction;\n                if ((checkingIndex < 0) || (checkingIndex >= memory.m_WaypointList.Count))\n                    break;\n\n                //if cant see this waypoint, try next one\n                if (null != CanSee(memory.m_WaypointList[checkingIndex]))\n                    continue;\n\n                finalIndex = checkingIndex;\n                i = 0;\n            }\n\n            //If we can only see waypoint just before this one, dont make any change\n            var count = Math.Abs(finalIndex - memory.m_WayIndex) - 1;\n            if (count < 1)\n                return;\n\n            //otherwise, delete redundant waypoints\n            memory.m_WaypointList.RemoveRange(Math.Min(finalIndex, memory.m_WayIndex) + 1, count);\n            memory.m_WayIndex += count * direction;\n        }\n        #endregion\n\n        #region BotHandlers\n        public virtual void Init(string hudLabelText, MyMwcObjectBuilder_SmallShip_Bot objectBuilder/*, Matrix matrix, float health*/)\n        {\n            System.Diagnostics.Debug.Assert(objectBuilder.Faction != 0);\n            if (objectBuilder.Faction == 0)\n            {\n                Trace.SendMsgLastCall(objectBuilder.EntityId.ToString());\n            }\n            base.Init(hudLabelText, objectBuilder/*, matrix, health*/);\n\n            Faction = objectBuilder.Faction;\n\n            // Array of params for all weapons on ship \n            m_botWeaponParamsAllSlots = new MyBotParams[Enum.GetNames(typeof(MyMwcObjectBuilder_FireKeyEnum)).Length];\n\n            //Assignment of constants for each weapon\n            foreach (var item in objectBuilder.AssignmentOfAmmo)\n            {\n                //Set params for weapon in selected slot\n                MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum ammo = item.AmmoType;\n                MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum? weaponTypeNullable = MyGuiSmallShipHelpers.GetWeaponType(item.AmmoType, item.Group);\n                MyMwcObjectBuilder_FireKeyEnum fireKey = item.FireKey;\n\n                if (weaponTypeNullable != null)\n                {\n                    var weaponType = (MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum)weaponTypeNullable;\n                    MyBotParams botParamsOneSlot = SettingsForWeaponType(weaponType, ammo);\n                    botParamsOneSlot.FireKey = fireKey;\n                    m_botWeaponParamsAllSlots[(int)fireKey - 1] = botParamsOneSlot;\n\n                    //store all weapon types bot has\n                    m_weaponTypesMounted |= weaponType;\n                }\n            }\n\n            //always 0 super easy 1 max hard\n            MyGameplayDifficultyEnum difficultyOfThisBot = GetBotDifficulty();\n\n            DifficultyStrafingSpeed = MyGameplayConstants.GetGameplayDifficulty(difficultyOfThisBot).BotStrafingSpeed;\n\n            DifficultyMovingSpeed = MyGameplayConstants.GetGameplayDifficulty(difficultyOfThisBot).BotMovingSpeed;\n\n            DifficultyFireRatio = MyGameplayConstants.GetGameplayDifficulty(difficultyOfThisBot).BotFireRatio;\n\n            //HACK BECAUSE OF TEST BUILD..\n\t        DifficultyGunUsageRatio = 0.5f;\n            //DifficultyGunUsageRatio = MyGameplayConstants.GetGameplayDifficulty(difficultyOfThisBot).BotGunUsageRatio;\n\n            DifficultyRaidAttackOccurrence = MyGameplayConstants.GetGameplayDifficulty(difficultyOfThisBot).BotRaidAttackOccurrence;\n\n            DifficultyFlyAroundTargetOccurrence = MyGameplayConstants.GetGameplayDifficulty(difficultyOfThisBot).BotFlyAroundTargetOccurrence;\n\n            DifficultyAttackReactDistance = MyGameplayConstants.GetGameplayDifficulty(difficultyOfThisBot).BotAttackReactDistance;\n\n            DifficultyUseFireBurst = 1;\n\n            MyHud.ChangeText(this, new StringBuilder(hudLabelText), null, 10000, MyHudIndicatorFlagsEnum.SHOW_ALL);\n\n            NormalDecision = MyBotDecisionLogicsEnum.None;\n            AttackDecision = MyBotDecisionLogicsEnum.None;\n\n            //bot survival waypoints if getting lost\n            m_rememberWaypoints = new MyWaypointMemory(this);\n            m_temporaryWaypoints = new MyWaypointMemory(this);\n\n            m_canSeeCheck = new MyCanSeeMemory(false);\n            m_canSeeCheckForShoot = new MyCanSeeMemory(false);\n            m_canSeeCheckForMove = new MyCanSeeMemory(false);\n\n            //Set behavrior duration times\n            SettingsForBehaviorTimers();\n\n            //Inicialize timers\n            ResetBehaviourTimer();\n            ResetStrafeTimer();\n\n            m_decisionTimeCounter = 0;\n            m_lostCounter = 0;\n\n            Threat = null;\n            Target = null;\n            FollowTarget = null;\n\n            //Next inicialization should be done from input so every bot can do something different (shuold it be in object builder for bot?)\n            //--------------------------------------------------------\n            //Set default decision logic\n            NormalDecision = MyBotDecisionLogicsEnum.Guard;\n            AttackDecision = MyBotDecisionLogicsEnum.CasualFighter;\n\n            m_survivalKit = new Dictionary<MyBotSurvivalAlertsEnum, MySurvivalDecision>();\n            AddSurvivalAlert(MyBotSurvivalAlertsEnum.EnemyInsight, MyBotDecisionLogicsEnum.None, 1000);\n            AddSurvivalAlert(MyBotSurvivalAlertsEnum.UnderAttack, MyBotDecisionLogicsEnum.CasualFighter, 1000);\n            \n            //Initialize waypoint memories\n            m_savedWaypoints = new MyWaypointMemory(this);\n\n            Trace.SendMsgLastCall(\"Init Bot \" + base.Name);\n        }\n\n        /// <summary>\n        /// Updates resource.\n        /// </summary>\n        public override void Update()\n        {\n            if (MyFakes.BOT_DEBUG_VIEW)\n            {\n                MyHud.ChangeText(this, new StringBuilder(string.Format(\"{0} {1} {2} {3} T: {4} Thr: {5}\", Name, Behaviour, SurvivalDecision, Health,\n                    Target != null ? (Target == MySession.PlayerShip ? \"player\" : Target.Name): \"no target\",\n                    Threat != null ? (Threat == MySession.PlayerShip ? \"player\" : Threat.Name) : \"no threat\")));\n            }\n\n            base.Update();\n           \n            if (IsDead())\n            {\n                return;\n            }\n\n            SettingsForBehaviorTimers();\n\n            // if bots are disabled, do not update\n            if (MyGuiScreenGamePlay.Static.IsEditorActive() || MyMwcFinalBuildConstants.DisableEnemyBots)\n            {\n                return;\n            }\n\n            if (Target != null && Target.Health <= 0)\n                Target = null;\n            if (Threat != null && Threat.Health <= 0)\n                Threat = null;\n            \n            // autoleveling on\n            if (Config.Engine.On && !Config.AutoLeveling.On && (Target != null || FollowTarget != null) )\n            {\n                Config.AutoLeveling.ChangeValueUp();\n            }\n\n            // autoleveling off when no target\n            if (Config.Engine.On && Config.AutoLeveling.On && (Target != null || FollowTarget != null))\n            {\n                Config.AutoLeveling.ChangeValueUp();\n            }\n\n            //0002539: Bug - enemy bots - why they do not align to my horisontal orientation? friends do it\n            //hotfix for release\n            if(MySession.PlayerShip != null)\n                SetLevelingMatrix(MySession.PlayerShip.WorldMatrix);\n            /*\n            //allign autolevel matrix priorly to follow then to attack target\n            if ((m_target != null && DistanceToTarget(m_target.GetPosition()) < MAX_LEVELING_DISTANCE))\n            {\n                SetLevelingMatrix(m_target.WorldMatrix);\n            } else if ((m_followTarget != null && DistanceToTarget(m_followTarget.GetPosition()) < MAX_LEVELING_DISTANCE))\n            {\n                SetLevelingMatrix(m_followTarget.WorldMatrix);\n            }\n            */\n\n            /*\n            //Save position if we need it\n            if (m_rememberWaypoint)//???\n                RememberPosition();\n            */\n\n            //  If now is the right time, call survival and decision logic's update\n            if ((m_decisionTimeCounter++ > m_decisionMaxTime) || (m_behaviourTimeCounter++ > m_behaviourMaxTime && m_minBehaviorsTimesInTicks[(int)Behaviour] > 0))\n            {\n                CheckSurvivalKit();\n\n                MakeDecision();\n                m_decisionTimeCounter = 0;\n\n                ResetBehaviourTimer();\n            }\n            //else\n                //m_target = null;\n            \n            //If bot has flight target, get distance and angle to it\n            if (Target != null)//why not null at default?\n            {\n                // Calculate bot to target distance.\n                m_distanceToTarget = DistanceToTarget(Target.GetPosition());\n\n                //Calculate bot's anglet o target.\n                m_angleToTarget = AngleTo(Target.GetPosition());\n            }\n\n            //  Call update method of current behavior, if there is any.\n            if ((Behaviour != MyBotBehaviorsEnum.None))\n            {\n                ResolveBehavior();\n                if (m_isFiring) \n                    Shoot();\n            }\n            ResolveMovement();\n\n            //\n            //if (IS_BOT_DEBUG_MODE_ACTIVE)\n            //{\n            //    MyBotDebugUtils.ThirdPersonCameraDelta(new Vector3(0, 100, 200));\n            //}\n\n            RefillAmmoAndResources();\n        }\n\n        /// <summary>\n        /// Draw bot and associated visuals.\n        /// </summary>\n        /// <returns>An ununsed true result.</returns>\n        public override bool Draw()\n        {\n            // Draw this bot.\n            bool result = base.Draw();\n\n            // If debug mode is active, draw debug helpers.\n            if (MyMwcFinalBuildConstants.BOT_DEBUG_MODE)\n            {\n                // Draw debug geometry.\n                MyBotDebugUtils.DrawForward(WorldMatrix);\n                MyBotDebugUtils.DrawLocalCoordinateAxes(WorldMatrix);\n            }\n\n            // Returns an (unused) true result.\n            return result;\n        }\n\n        public override bool DebugDraw()\n        {\n            if (!MyFakes.BOT_DEBUG_VIEW)\n                return base.DebugDraw();\n\n            if (m_flightTarget != null && MyMwcFinalBuildConstants.BOT_DEBUG_MODE)\n            {\n                MyDebugDraw.DrawLine3D(this.GetPosition(), m_flightTarget.Value, Color.BlueViolet, Color.Gold);\n                return true;\n            }\n\n            //draw my target,\n            if (Target != null)\n            {\n                Matrix mat = Matrix.Identity;\n                mat.Translation = Target.WorldMatrix.Translation;\n                MyDebugDraw.DrawLine3D(WorldMatrix.Translation, Target.WorldMatrix.Translation, Color.Green, Color.Red);\n                MyDebugDraw.DrawSphereWireframe(mat.Translation, WorldVolume.Radius, Color.Red.ToVector3(), 1.0f);\n            }\n            //draw my go-to,\n            //?\n            if (m_flightTarget != null)\n            {\n                Matrix mat = Matrix.Identity;\n                mat.Translation = m_flightTarget.Value;\n                MyDebugDraw.DrawLine3D(WorldMatrix.Translation, m_flightTarget.Value, Color.Green, Color.Green);\n                MyDebugDraw.DrawSphereWireframe(m_flightTarget.Value, WorldVolume.Radius / 2, Color.Green.ToVector3(), 1.0f);\n            }\n\n            MyDebugDraw.DrawLine3D(WorldMatrix.Translation, WorldMatrix.Translation + WorldMatrix.Forward * 10000, Color.Green, Color.Red);\n            \n            //draw my aim target\n\n            return base.DebugDraw();\n        }\n\n        /// <summary>\n        /// Called when [world position changed].\n        /// </summary>\n        /// <param name=\"source\">The source object that caused this event.</param>\n        public override void OnWorldPositionChanged(object source)\n        {\n            base.OnWorldPositionChanged(source);\n        }\n\n        /// <summary>\n        /// Movement and shooting\n        /// </summary>\n        public override void UpdateBeforeIntegration()\n        {\n            base.UpdateBeforeIntegration();\n\n        }\n\n        /// <summary>\n        /// Shooting moved to beforeintegration, only calling base function now\n        /// </summary>\n        /// <returns></returns>\n        public override bool UpdateAfterIntegration()\n        {\n            return base.UpdateAfterIntegration();\n        }\n\n        /// <summary>\n        /// Resets strafe timer to count from zero\n        /// </summary>\n        public void ResetStrafeTimer()\n        {\n            float MinStrafeTimeInTicks = 4;//Math.Lerp(5f, 10f, DifficultyStrafingSpeed);\n            float MaxStrafeTimeInTicks = 5;//Math.Lerp(5f, 10f, DifficultyStrafingSpeed);\n            m_strafeMaxTime = MyMwcUtils.GetRandomFloat(MinStrafeTimeInTicks, MaxStrafeTimeInTicks);\n            m_strafeTimeCounter = 0;\n        }\n\n        public void ResetRaidTimer()\n        {\n            float MinRaidTimeInTicks = MathHelper.Lerp(4, 8, 1-DifficultyRaidAttackOccurrence);\n            float MaxRaidTimeInTicks = MathHelper.Lerp(5, 15, 1-DifficultyRaidAttackOccurrence);\n            m_raidMaxTime = MyMwcUtils.GetRandomFloat(MinRaidTimeInTicks, MaxRaidTimeInTicks);\n            m_raidTimeCounter = 0;\n        }\n\n        /// <summary>\n        /// Resets behaviour timer to count from zero\n        /// </summary>\n        public void ResetBehaviourTimer()\n        {\n            m_behaviourMaxTime = MyMwcUtils.GetRandomFloat(m_minBehaviorsTimesInTicks[(int)Behaviour], m_maxBehaviorsTimesInTicks[(int)Behaviour]);\n            m_behaviourTimeCounter = 0;\n        }\n        #endregion\n\n        #region SensorMethods\n\n        private bool CheckCanSee(ref MyCanSeeMemory mem, MyEntity target)\n        {\n            if (mem.m_ticksFromLastCheck >= FREQUENCY_FOR_RAYCAST_TICKS)\n            {\n                mem.m_result = CanSee(target) == null;\n                mem.m_ticksFromLastCheck = 0;\n            }\n            mem.m_ticksFromLastCheck++;\n            return mem.m_result;\n        }\n\n        private bool CheckCanSeeIgnoreMovingObjects(ref MyCanSeeMemory mem, Vector3 target)\n        {\n            if (mem.m_ticksFromLastCheck >= FREQUENCY_FOR_RAYCAST_TICKS||true)\n            {\n                mem.m_result = CanSeeIgnoreMovingObj(target);\n                mem.m_ticksFromLastCheck = 0;\n            }\n            mem.m_ticksFromLastCheck++;\n            return mem.m_result;\n        }\n\n        /// <summary>\n        /// Calculate distance between bot and target. ... public because of TestMission\n        /// </summary>\n        /// <param name=\"target\">Target entity.</param>\n        /// <returns>Distance between bot and ship.</returns>\n        public float DistanceToTarget(Vector3 target)\n        {\n            return Vector3.Distance(GetPosition(), target);\n        }\n\n        /// <summary>\n        /// Angle between the bot's forward axis and an imganary line drawn from bot to player. Example 1: If this angle\n        /// is zero, player is exactly in front of bot. Example 2: At 45 degrees player is in front of bot but is either\n        /// up/down/left/right of bot a pretty good amount (not really lined up for a shot).\n        /// </summary>\n        /// <param name=\"target\">Target position.</param>\n        /// <returns>Angle, in degrees.</returns>\n        private float AngleTo(Vector3 target)\n        {\n            Vector3 targetRelativePosition = target - WorldMatrix.Translation;\n\n            if (targetRelativePosition.Length() < MyMwcMathConstants.EPSILON)\n                return 0;\n\n            Vector3 v1 = MyMwcUtils.Normalize(WorldMatrix.Forward);\n            Vector3 v2 = MyMwcUtils.Normalize(targetRelativePosition);\n            return MathHelper.ToDegrees(MyUtils.GetAngleBetweenVectors(v1, v2));\n        }\n\n        /// <summary>\n        /// This checks to see if bot is \"too close\" to player. We have this so that bot doesn't just always ram \n        /// into the player. We want to get a sense of being too close. If so, we can act on that knowledge to \n        /// correct the problem. For example: kill thrusters or even reverse them and back off. Bot consider distance \n        /// between players as \"OK\" in 10% range for both directions\n        /// </summary>\n        /// <returns></returns>\n        ///\n        \n        private bool CanSeeIgnoreMovingObj(Vector3 position)\n        {\n            return CanSeeIgnoreMovingObj(position, null);\n        }\n\n        private bool CanSeeIgnoreMovingObj(Vector3 position, MyEntity target)\n        {\n            var result = CanSee(position, target);\n            return (result == null) || IsMovingObject(result);\n        }\n\n        private bool IsMovingObject(MyEntity obj)\n        {\n            return obj != null && obj.Physics != null && obj.Physics.LinearVelocity != Vector3.Zero;\n        }\n\n        /// <summary>\n        /// Finds some nearby player or bot to follow ( if am i follower ) \n        /// </summary>\n        /// <returns></returns>\n        private MySmallShip SearchTargetToFollow()\n        {\n            //  Search for friend to follow (in case of player)\n            MySmallShip target = null;\n            if (\n                DistanceToTarget(MySession.PlayerShip.GetPosition()) < MAX_FOLLOW_DISTANCE\n                && CheckCanSee(ref m_canSeeCheck, MySession.PlayerShip)\n                && MyFactions.GetFactionsRelation(this.Faction, MySession.PlayerShip.Faction) == MyFactionRelationEnum.Friend\n                )\n            {\n                return target = MySession.PlayerShip;\n            }\n\n            // ( find other non follwing bot / leader )\n            //\n            //find our free bot to follow\n            using (var rbFounded = PoolList<MyRBElement>.Get())\n            {\n                MyPruningStructure prunningStructure = MyPhysics.physicsSystem.GetRigidBodyModule().GetPruningStructure();\n                float myboxd = MAX_FOLLOW_DISTANCE / 2.0f;\n                BoundingBox rbInputElementGetWorldSpaceAABB = new BoundingBox(\n                    GetPosition() - new Vector3(myboxd, myboxd, myboxd),\n                    GetPosition() + new Vector3(myboxd, myboxd, myboxd));\n                prunningStructure.OverlapRBAllBoundingBox(ref rbInputElementGetWorldSpaceAABB, rbFounded);\n                foreach (MyRBElement rb in rbFounded)\n                {\n                    MyEntity ent = ((MyGameRigidBody)rb.GetRigidBody().m_UserData).Entity;\n                    if (ent == this)\n                        continue;\n\n                    if (ent is MySmallShipBot)\n                    {\n                        MySmallShipBot bot = ent as MySmallShipBot;\n                        if (MyFactions.GetFactionsRelation(this.Faction, ent.Faction) == MyFactionRelationEnum.Friend)\n                        {\n                            if (!bot.IsDead() && bot.GetObjectWeFollow() == null && bot.NormalDecision != MyBotDecisionLogicsEnum.Follower)\n                                return target = bot;\n                        }\n                    }\n\n                }\n            }\n\n            return target;\n        }\n\n        /// <summary>\n        /// Finds nearby enemy ship\n        /// </summary>\n        /// <returns></returns>\n        private MyEntity SearchTargetToAttack(int triggerDistance)\n        {\n            //  Search for target to attack\n            MyEntity target = null;\n            float distance = float.PositiveInfinity;\n\n            using (var rbFounded = PoolList<MyRBElement>.Get())\n            {\n\n                MyPruningStructure prunningStructure = MyPhysics.physicsSystem.GetRigidBodyModule().GetPruningStructure();\n\n                BoundingBox rbInputElementGetWorldSpaceAABB = new BoundingBox(\n                    this.WorldMatrix.Translation - new Vector3(triggerDistance ,triggerDistance ,triggerDistance ), \n                    this.WorldMatrix.Translation +new Vector3(triggerDistance ,triggerDistance ,triggerDistance ) );\n                prunningStructure.OverlapRBAllBoundingBox(ref rbInputElementGetWorldSpaceAABB, rbFounded);\n                \n                //now try find spot\n                foreach (MyRBElement rb in rbFounded)\n                {\n                    MyEntity ent = ((MyGameRigidBody)rb.GetRigidBody().m_UserData).Entity;\n                    if (ent == this || ent == null)\n                        continue;\n                    if(ent is MySmallShip || ent is MyPrefabLargeShip)\n                    {\n                        if (MyFactions.GetFactionsRelation(this.Faction, ent.Faction) == MyFactionRelationEnum.Enemy)\n                        {\n                            var d = DistanceToTarget(ent.WorldMatrix.Translation);\n                            if (d < distance && d < triggerDistance && CheckCanSee(ref m_canSeeCheck, ent))\n                            {\n                                distance = d;\n                                target = ent;\n                            }\n                        }\n                    }\n                }\n            }\n            return  target;\n        }\n\n        private void GetTargetsRoute(MySmallShip target)\n        {\n            CleanRoute(ref m_temporaryWaypoints);\n            // Get first visible index of target route\n            int firstVisibleIndex = -1;\n            for (int i = target.RouteMemory.GetCount() - 1; i >= 0; i--)\n            {\n                if (CanSee(target.RouteMemory.GetItem(i)) == null)\n                {\n                    firstVisibleIndex = i;\n                    break;\n                }\n            }\n\n            if (firstVisibleIndex < 0)\n            {\n                return;\n            }\n\n            for (int i = firstVisibleIndex; i < target.RouteMemory.GetCount(); i++)\n            {\n                m_temporaryWaypoints.m_WaypointList.Add(target.RouteMemory.GetItem(i));\n            }\n\n            m_temporaryWaypoints.m_GuardType = MyBotGuardTypeEnum.OneWay;\n            m_temporaryWaypoints.m_WayIndex = 1;                            // First record is actual ship position for some reason\n            m_temporaryWaypoints.m_checkDistance = 0;\n            m_temporaryWaypoints.m_IndexDirection = 1;\n\n            //for (int i = 0; i < target.RouteMemory.GetCount(); i++)\n            //{\n            //    m_temporaryWaypoints.m_WaypointList.Add(target.RouteMemory.GetItem(i));\n            //}\n\n            //m_temporaryWaypoints.m_GuardType = MyBotGuardTypeEnum.OneWay;\n            //m_temporaryWaypoints.m_WayIndex = m_temporaryWaypoints.m_WaypointList.Count-1;\n            //m_temporaryWaypoints.m_checkDistance = 0;\n            //m_temporaryWaypoints.m_IndexDirection = 1;\n\n            //while (m_temporaryWaypoints.m_WayIndex >= 0)\n            //{\n            //    if (CanSee(m_temporaryWaypoints.m_WaypointList[m_temporaryWaypoints.m_WayIndex]) == null)\n            //        break;\n\n            //    m_temporaryWaypoints.m_WayIndex--;\n            //}\n        }\n\n        #endregion\n\n        #region ActionMethods\n        /// <summary>\n        /// Calls MoveAndRotate method with parameters based on m_flightTarget:\n        /// - rotates bot \n        /// - moves bot in desired direction\n        /// - strafes when enemy around\n        /// - keeps minimal distance from target\n        /// </summary>\n        private void ResolveMovement()\n        {\n            // Declare movement variables\n            Vector3 moveIndicator = Vector3.Zero;\n            Vector2 rotationIndicator = Vector2.Zero;\n            float rollIndicator = 0f;\n\n            if (Behaviour != MyBotBehaviorsEnum.None)\n            {\n                \n                if (m_rolling) \n                    rollIndicator = MyMwcUtils.GetRandomFloat(-1, 1);\n                \n                // rotate to my target or rotate to my go to spot or do nothing\n                if (Target != null && Behaviour != MyBotBehaviorsEnum.FlyAroundTarget && Behaviour != MyBotBehaviorsEnum.FollowWaypoint)\n                {\n                    if ((Target.WorldMatrix.Translation - WorldMatrix.Translation).Length() > WorldVolume.Radius)\n                        rotationIndicator = RotationTowardsTarget(Target.WorldMatrix.Translation);\n                }\n                else if (m_flightTarget != null)\n                {\n                    if ((m_flightTarget.Value - WorldMatrix.Translation).Length() > WorldVolume.Radius)\n                        rotationIndicator = RotationTowardsTarget(m_flightTarget.Value);\n                }\n                else\n                    rotationIndicator = Vector2.Zero;\n                MyUtils.AssertIsValid(rotationIndicator);\n\n                //Trace.SendMsgLastCall(rotationIndicator.ToString());\n\n                // fly to my target\n                if (m_flightTarget != null)\n                {\n                    //reduce my moveIndicator by our current velocity\n                    moveIndicator = MoveTowardsTarget(m_flightTarget.Value - Physics.LinearVelocity * MOVEMENT_PREDICTION_TUNER);\n                    if (moveIndicator.Length() > 0)\n                    {\n                        float dR = moveIndicator.Length();\n\n                        moveIndicator.Z *= -1;\n                        moveIndicator.X *= -1;\n                        moveIndicator.Y *= -1;\n                        moveIndicator.Normalize();\n                        moveIndicator *= Math.Min(dR * MathHelper.Lerp(0.3f, 1, DifficultyMovingSpeed), MAX_SPEED_AHEAD * MathHelper.Lerp(0.3f, 1, DifficultyMovingSpeed));\n                    }\n                    //just unification \n                    if ((m_flightTarget.Value - WorldMatrix.Translation).Length() / WorldVolume.Radius < 2.0f)\n                        moveIndicator = Vector3.Zero;\n                }\n                //Trace.SendMsgLastCall(moveIndicator.ToString());\n                MyUtils.AssertIsValid(moveIndicator);\n\n            }\n            MoveAndRotate(moveIndicator, rotationIndicator, rollIndicator, m_afterBurner);\n        }\n\n        private Vector3 MoveTowardsTarget(Vector3 position)\n        {\n            return Vector3.Transform(position, GetWorldMatrixInverted()); \n        }\n\n        /// <summary>\n        /// Transforms position from Vector3 to matrix and balances movements\n        /// </summary>\n        private Vector2 RotationTowardsTarget(Vector3 position)\n        {\n            Matrix defMatrix;\n            Vector3 forward = Vector3.Forward;\n            Vector3 up = Vector3.Up;\n\n            var distancePredictionTuner = m_distanceToTarget / DEFAULT_DDISTANCE;\n\n            //Compute with bots movement (strafing at most)\n            position -= MOVEMENT_PREDICTION_TUNER * Physics.LinearVelocity * distancePredictionTuner;\n\n            //Compute with targets movement\n            if (Target != null)\n                position += MOVEMENT_PREDICTION_TUNER * Target.Physics.LinearVelocity * distancePredictionTuner;\n\n            Matrix.CreateWorld(ref position, ref forward, ref up, out defMatrix);\n            return RotationTowardsTarget(defMatrix);\n        }\n\n        /// <summary>\n        /// Computes rotation parameters towards target coordinates. It is done for move and rotate method.\n        /// </summary>\n        private Vector2 RotationTowardsTarget(Matrix targetPosition)\n        {\n            Vector2 dR = Vector2.Zero;\n            Vector3 dP = Vector3.Transform(targetPosition.Translation, GetWorldMatrixInverted());\n            bool behind = dP.Z > 0;\n            if (dP.Length() > 0)\n            {\n\n                float l = dP.Length();\n                dP.Normalize();\n                dP *= -1;\n                dR.X = dP.Y * MAX_ROTATE_SPEED_COEF * 0.5f;\n                dR.Y = -dP.X * MAX_ROTATE_SPEED_COEF * 0.5f;\n            }\n\n            return dR;\n        }\n\n        float GetActiveDistanceToTarget(MyEntity e)\n        {\n            return (e.GetPosition() - GetPosition()).Length();\n        }\n\n        /// <summary>\n        /// Shoot with all weapons we can\n        /// TODO\n        /// </summary>\n        private void Shoot()\n        {\n            if (Target == null)\n                return;\n\n            if (!CheckCanSee(ref m_canSeeCheckForShoot, Target))\n                return;\n\n            foreach (var item in m_botWeaponParamsAllSlots)\n            {\n                var fire = false;\n                if (item.WeaponsParams == null)\n                    continue;\n                if(item.WeaponType == MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Universal_Launcher_Back && DifficultyGunUsageRatio <= 0.75f)\n                    continue;\n                if(item.WeaponType == MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Universal_Launcher_Front && DifficultyGunUsageRatio <= 0.75f)\n                    continue;\n                if(item.WeaponType == MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Missile_Launcher && DifficultyGunUsageRatio <= 0.75f)\n                    continue;\n                if(item.WeaponType == MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Shotgun && DifficultyGunUsageRatio <= 0.5f)\n                    continue;\n                if(item.WeaponType == MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Cannon && DifficultyGunUsageRatio <= 0.75f)\n                    continue;\n\n                //m_ammoProperties.ExplosionRadius\n                MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum ammoType = Weapons.AmmoAssignments.GetAmmoType(item.FireKey);\n                MyAmmoProperties m_ammoProperties = MyAmmoConstants.GetAmmoProperties(ammoType);\n                float radius = m_ammoProperties.ExplosionRadius;\n\n                //spot explosion fail\n                if (item.WeaponType == MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Missile_Launcher && GetActiveDistanceToTarget(Target) * 1.1 <= radius)\n                    continue;\n\n                //check if weapon is enabled, if bot is in range for firing this weapon and if bot has sufficient aim for selected weapon\n                float distCheck = item.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringDistance] * item.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringDistanceTuner];\n                float angleCheck = FIRING_CONE_DEGREES * item.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringConeTuner];\n                if (item.Enabled\n                    && distCheck > m_distanceToTarget\n                    && m_angleToTarget < angleCheck)\n                {\n                    int bl = MyMinerGame.TotalGamePlayTimeInMilliseconds - (int)item.LastShotMilliseconds;\n                    //shoot in bursts or just single shots\n                    if (item.BurstFiring && DifficultyUseFireBurst > 0 )\n                    {\n                        //fire in burst or wait for pause ends\n                        if (!item.BurstTimer.IsTimeUp)\n                        {\n                            fire = true;\n                            m_botWeaponParamsAllSlots[(int)item.FireKey - 1].LastShotMilliseconds = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n                        }\n                        else if (\n                            MyMinerGame.TotalGamePlayTimeInMilliseconds - item.LastShotMilliseconds > \n                            MathHelper.Lerp(5,1,DifficultyFireRatio)*item.WeaponsParams[(int)MyBotWeaponsParametrsEnum.ShotIntervalMilliseconds] * (1 / item.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringFrequencyTuner]))\n                        {\n                            item.BurstTimer.Reset();\n                            item.BurstTimer.Start();\n                        }\n                    }\n                    //If not burst firing, just shoot once and wait\n                    else if(\n                        MyMinerGame.TotalGamePlayTimeInMilliseconds - item.LastShotMilliseconds > \n                        MathHelper.Lerp(5,1,DifficultyFireRatio)*item.WeaponsParams[(int)MyBotWeaponsParametrsEnum.ShotIntervalMilliseconds] * (1 / item.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringFrequencyTuner]))\n                    {\n                        m_botWeaponParamsAllSlots[(int)item.FireKey - 1].LastShotMilliseconds = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n                        fire = true;\n                    }\n                        /*\n                    else\n                        fire = true;\n                        */\n                }\n                \n\n                //Are we shooting? If yes, just fire this weapon\n                if (fire/*||true*/)\n                {\n                    Weapons.Fire(item.FireKey);\n                }\n            }\n        }\n\n        #endregion\n\n        #region SettingsMethods\n\n        private float RescaleForCurrentMass(float param)\n        {\n            float modificator = m_shipTypeProperties.Physics.Mass / DEFAULT_MASS;\n            return param * modificator;\n        }\n\n\n        /// <summary>\n        /// Constants for all mountable weapons\n        /// TODO: numeric params should be taken from editor later\n        /// </summary>\n        private MyBotParams SettingsForWeaponType(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum weaponType, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum ammoType)\n        {\n            var settings = new MyBotParams { WeaponsParams = new float[Enum.GetNames(typeof(MyBotWeaponsParametrsEnum)).Length] };\n\n            switch (weaponType)\n            {\n                case MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Autocanon:\n                    {\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringDurationTuner] = 10.0f;\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringFrequencyTuner] = 0.06f;\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringConeTuner] = 0.2f;\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.ShotIntervalMilliseconds] = MyAutocanonConstants.SHOT_INTERVAL_IN_MILISECONDS;\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringDistanceTuner] = 0.9f;\n                        settings.Enabled = true;\n                        settings.BurstFiring = true;\n                        break;\n                    }\n                case MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Shotgun:\n                    {\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringDurationTuner] = 0.5f;\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringFrequencyTuner] = 0.3f;\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringConeTuner] = 1.4f;\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.ShotIntervalMilliseconds] = MyShotgunConstants.SHOT_INTERVAL_IN_MILISECONDS;\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringDistanceTuner] = 0.9f;\n                        settings.Enabled = true;\n                        settings.BurstFiring = false;\n                        break;\n                    }\n                case MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Automatic_Rifle_With_Silencer:\n                    {\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringDurationTuner] = 0.3f;\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringFrequencyTuner] = 0.4f;\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringConeTuner] = 0.2f;\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.ShotIntervalMilliseconds] = MyARSConstants.SHOT_INTERVAL_IN_MILISECONDS;\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringDistanceTuner] = 0.9f;\n                        settings.Enabled = true;\n                        settings.BurstFiring = false;\n                        break;\n                    }\n                case MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Cannon:\n                    {\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringDurationTuner] = 0.15f;\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringFrequencyTuner] = 0.2f;\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringConeTuner] = 0.25f;\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.ShotIntervalMilliseconds] = MyCannonConstants.SHOT_INTERVAL_IN_MILISECONDS;\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringDistanceTuner] = 0.9f;\n                        settings.Enabled = true;\n                        settings.BurstFiring = false;\n                        break;\n                    }\n                case MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Machine_Gun:\n                    {\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringDurationTuner] = 0.6f;\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringFrequencyTuner] = 0.6f;\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringConeTuner] = 0.2f;\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.ShotIntervalMilliseconds] = MyMachineGunConstants.SHOT_INTERVAL_IN_MILISECONDS;\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringDistanceTuner] = 0.9f;\n                        settings.Enabled = true;\n                        settings.BurstFiring = true;\n                        break;\n                    }\n                case MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Missile_Launcher:\n                    {\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringDurationTuner] = 0.2f;\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringFrequencyTuner] = 0.25f;\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringConeTuner] = 0.45f;\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.ShotIntervalMilliseconds] = MyMissileConstants.MISSILE_LAUNCHER_SHOT_INTERVAL_IN_MILISECONDS;\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringDistanceTuner] = 0.9f;\n                        settings.Enabled = true;\n                        settings.BurstFiring = false;\n                        break;\n                    }\n                case MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Sniper:\n                    {\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringDurationTuner] = 0.2f;\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringFrequencyTuner] = 0.2f;\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringConeTuner] = 0.05f;\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.ShotIntervalMilliseconds] = MySniperConstants.SHOT_INTERVAL_IN_MILISECONDS;\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringDistanceTuner] = 0.9f;\n                        settings.Enabled = true;\n                        settings.BurstFiring = false;\n                        break;\n                    }\n                case (MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Universal_Launcher_Back):\n                    {\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringDurationTuner] = 0.15f;\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringFrequencyTuner] = 0.05f;\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringConeTuner] = 1.0f;\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.ShotIntervalMilliseconds] = MyMissileConstants.MISSILE_LAUNCHER_SHOT_INTERVAL_IN_MILISECONDS;\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringDistanceTuner] = 0.9f;\n                        settings.Enabled = false;\n                        settings.BurstFiring = false;\n                        break;\n                    }\n                case MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Universal_Launcher_Front:\n                    {\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringDurationTuner] = 0.15f;\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringFrequencyTuner] = 0.05f;\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringConeTuner] = 0.5f;\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.ShotIntervalMilliseconds] = MyMissileConstants.MISSILE_LAUNCHER_SHOT_INTERVAL_IN_MILISECONDS;\n                        settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringDistanceTuner] = 0.9f;\n                        settings.Enabled = false;\n                        settings.BurstFiring = false;\n                        break;\n                    }\n            }\n\n            //Keep max trajectory and weapon type\n            settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringDistance] = GetMaxTrajectoryForAmmoType(ammoType);\n            settings.WeaponType = weaponType;\n\n            //If weapon is set for burstFiring, start burst timer\n            if (settings.BurstFiring)\n            {\n                settings.BurstTimer = new MyStopwatch((int)(settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.ShotIntervalMilliseconds] * settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringDurationTuner] * 0.9f), (int)(settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.ShotIntervalMilliseconds] * settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringDurationTuner] * 1.1f));\n            }\n\n            settings.LastShotMilliseconds = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n            return settings;\n        }\n\n        /// <summary>\n        /// Default settings for behavior timers are set here, TODO: take this from editor\n        /// </summary>\n        private void SettingsForBehaviorTimers()\n        {\n            float ticks = MyConstants.PHYSICS_STEPS_PER_SECOND;\n\n            m_minBehaviorsTimesInTicks[(int)MyBotBehaviorsEnum.None] = 2f * ticks;\n            m_maxBehaviorsTimesInTicks[(int)MyBotBehaviorsEnum.None] = 2.1f * ticks;\n\n            m_minBehaviorsTimesInTicks[(int)MyBotBehaviorsEnum.Attack] = 5.5f * ticks;\n            m_maxBehaviorsTimesInTicks[(int)MyBotBehaviorsEnum.Attack] = 8f * ticks;\n\n            m_minBehaviorsTimesInTicks[(int)MyBotBehaviorsEnum.FlyAroundTarget] = 1.0f * ticks * MathHelper.Lerp(1,4,1-DifficultyFlyAroundTargetOccurrence);\n            m_maxBehaviorsTimesInTicks[(int)MyBotBehaviorsEnum.FlyAroundTarget] = 3.2f * ticks * MathHelper.Lerp(1,4,1-DifficultyFlyAroundTargetOccurrence);\n\n            m_minBehaviorsTimesInTicks[(int)MyBotBehaviorsEnum.FollowTarget] = 0.5f * ticks;\n            m_maxBehaviorsTimesInTicks[(int)MyBotBehaviorsEnum.FollowTarget] = 0.5f * ticks;\n\n            m_minBehaviorsTimesInTicks[(int)MyBotBehaviorsEnum.FollowWaypoint] = 0.5f * ticks;\n            m_maxBehaviorsTimesInTicks[(int)MyBotBehaviorsEnum.FollowWaypoint] = 0.5f * ticks;\n\n            m_minBehaviorsTimesInTicks[(int)MyBotBehaviorsEnum.RunFromTarget] = 15f * ticks;\n            m_maxBehaviorsTimesInTicks[(int)MyBotBehaviorsEnum.RunFromTarget] = 20f * ticks;\n\n            m_minBehaviorsTimesInTicks[(int)MyBotBehaviorsEnum.RaidAttack] = 15f * ticks;\n            m_maxBehaviorsTimesInTicks[(int)MyBotBehaviorsEnum.RaidAttack] = 20f * ticks;\n        }\n\n        /// <summary>\n        /// Returns Max trajectory for given ammo type\n        /// TODO: Universal launcher ammo\n        /// </summary>\n        private float GetMaxTrajectoryForAmmoType(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum ammoType)\n        {\n            float maxTrajectory = MyAmmoConstants.GetAmmoProperties(ammoType).MaxTrajectory;\n\n            return maxTrajectory;\n        }\n        #endregion\n\n        private void RefillAmmoAndResources()\n        {\n            Oxygen = MaxOxygen;\n            Electricity = MaxElectricity;\n            Fuel = MaxFuel;\n\n            foreach (Inventory.MyInventoryItem item in Weapons.AmmoInventoryItems.GetAmmoInventoryItems())\n            {\n                item.Amount = item.MaxAmount;\n            }\n        }\n\n        private bool CanDie(MyEntity damageSource)\n        {\n            if (MyGuiScreenGamePlay.Static != null && MySession.PlayerShip != null && damageSource != null)\n            {\n                var playerFactionRelation = MyFactions.GetFactionsRelation(this.Faction, damageSource.Faction);\n\n                // Cheat enemy can't die\n                if (playerFactionRelation == MyFactionRelationEnum.Enemy &&\n                    MyGuiScreenGamePlay.Static.IsCheatEnabled(MyGameplayCheatsEnum.ENEMY_CANT_DIE))\n                {\n                    return false;\n                }\n\n                // Cheat neutral can't die\n                if ((playerFactionRelation == MyFactionRelationEnum.Friend || playerFactionRelation == MyFactionRelationEnum.Neutral) &&\n                    MyGuiScreenGamePlay.Static.IsCheatEnabled(MyGameplayCheatsEnum.FRIEND_NEUTRAL_CANT_DIE))\n                {\n                    return false;\n                }\n            }\n\n            return true;\n        }\n\n        private MyGameplayDifficultyEnum GetBotDifficulty()\n        {\n            MyFactionRelationEnum relationToPlayer = MyFactions.GetFactionsRelation(MySession.PlayerShip.Faction, Faction);\n            if (relationToPlayer == MyFactionRelationEnum.Friend)\n            {\n                switch (MyGameplayConstants.GameplayDifficultyProfile.GameplayDifficulty)\n                {\n                    case MyGameplayDifficultyEnum.EASY:\n                        return MyGameplayDifficultyEnum.HARD;\n                    case MyGameplayDifficultyEnum.NORMAL:\n                        return MyGameplayDifficultyEnum.NORMAL;\n                    case MyGameplayDifficultyEnum.HARD:\n                        return MyGameplayDifficultyEnum.EASY;\n                }\n            }\n\n            return MyGameplayConstants.GameplayDifficultyProfile.GameplayDifficulty;\n        }\n\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Ships/MySmallShipInteraction.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Entities.Prefabs;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Prefabs;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.AppCode.Game.Entities.Ships;\nusing System.Diagnostics;\nusing MinerWars.AppCode.Game.Entities.CargoBox;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Sessions;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.Prefabs;\n\nnamespace MinerWars.AppCode.Game.Entities\n{\n    [Flags]\n    internal enum MySmallShipInteractionActionEnum\n    {\n        TradeForFree = 1 << 0,\n        TradeForMoney = 1 << 1,\n        Loot = 1 << 2,\n        Build = 1 << 3,\n        Travel = 1 << 4,\n        Use = 1 << 5,\n        Hack = 1 << 6,\n        Examine = 1 << 7,\n        ExamineEmpty = 1 << 8,\n        Blocked = 1 << 9,\n    }\n\n    static class MySmallShipInteraction\n    {\n        public static bool MUST_LOOK_AT_TARGET = true;\n\n        private static bool IsLookAtTarget(MySmallShip smallShip, MyEntity otherEntity) \n        {\n            if (!MUST_LOOK_AT_TARGET || MySession.Is25DSector) \n            {\n                return true;\n            }\n            float length = Vector3.Distance(smallShip.WorldVolume.Center, otherEntity.WorldVolume.Center);\n            MyLine line = new MyLine(smallShip.WorldVolume.Center, smallShip.WorldVolume.Center + smallShip.WorldMatrix.Forward * length * 1.5f, true);\n            MyIntersectionResultLineTriangleEx? result = MyEntities.GetIntersectionWithLine(ref line, smallShip, null, ignoreChilds: true);\n            return result != null && result.Value.Entity.GetBaseEntity() == otherEntity;                       \n        }\n\n        private static bool IsCustomLookAtTarget(MySmallShip smallShip, MyEntity otherEntity, float radius)\n        {\n            if (!MUST_LOOK_AT_TARGET)\n            {\n                return true;\n            }\n\n            BoundingSphere sphere = new BoundingSphere(otherEntity.WorldVolume.Center, radius);\n            Ray ray = new Ray(smallShip.GetPosition(), smallShip.WorldMatrix.Forward);\n            float? rayIntersection = ray.Intersects(sphere);\n            if (rayIntersection.HasValue)\n            {\n                MyLine line = new MyLine(smallShip.WorldVolume.Center, otherEntity.WorldVolume.Center, true);\n                MyIntersectionResultLineTriangleEx? result = MyEntities.GetIntersectionWithLine(ref line, smallShip, null, ignoreChilds: true);\n                return !result.HasValue || !result.HasValue || result.Value.Entity == otherEntity;\n            }\n            return false;\n        }\n\n        private static bool IsTargetVisible(MySmallShip smallShip, MyEntity otherEntity)\n        {\n            MyLine line = new MyLine(smallShip.WorldVolume.Center, otherEntity.GetPosition(), true);\n            MyIntersectionResultLineTriangleEx? result = MyEntities.GetIntersectionWithLine(ref line, smallShip, null, ignoreChilds: true);\n            return result != null && result.Value.Entity.GetBaseEntity() == otherEntity;\n        }\n\n        private static bool ControlIsInPlayerShip()\n        {\n            return MyGuiScreenGamePlay.Static.IsControlledPlayerShip;\n        }\n\n        public static bool CanTradeForFree(MyEntity entityToTrade, params object[] args)\n        {\n            if (!ControlIsInPlayerShip() || IsBlocked(entityToTrade, args))\n            {\n                return false;\n            }                        \n            \n            // temporary disabled trading for free with smallships\n            bool hasRightType = /*(entityToTrade is MySmallShip) || */(entityToTrade is MyPrefabHangar || entityToTrade is MyDrone);\n            if (!hasRightType) \n            {\n                return false;\n            }\n\n            MySmallShip smallShip = GetSmallShipFromArguments(args);\n            MyFactionRelationEnum factionRelation = MyFactions.GetFactionsRelation(entityToTrade, smallShip);            \n            if (entityToTrade is MyPrefabHangar)\n            {\n                MyPrefabHangar prefabHangar = entityToTrade as MyPrefabHangar;\n                return prefabHangar.PrefabHangarType == MyMwcObjectBuilder_PrefabHangar_TypesEnum.HANGAR &&\n                       factionRelation == MyFactionRelationEnum.Friend &&\n                       prefabHangar.IsWorking() && IsTargetVisible(smallShip, prefabHangar);\n            }\n            else if(entityToTrade is MyDrone)\n            {\n                return factionRelation == MyFactionRelationEnum.Friend &&\n                    !IsShipLootable(entityToTrade as MySmallShip) &&\n                    IsCustomLookAtTarget(smallShip, entityToTrade, entityToTrade.WorldVolume.Radius * 1.0f);\n            }\n            else \n            {\n                return factionRelation == MyFactionRelationEnum.Friend &&\n                    !IsShipLootable(entityToTrade as MySmallShip) && \n                    IsLookAtTarget(smallShip, entityToTrade);\n            }\n        }        \n\n        public static bool CanTrade(MyEntity entityToTrade, params object[] args)\n        {\n            if (!ControlIsInPlayerShip() || IsBlocked(entityToTrade, args))\n            {\n                return false;\n            }\n\n            bool hasRightType = /*(entityToTrade is MySmallShip) || */(entityToTrade is MyPrefabHangar);\n            if (!hasRightType)\n            {\n                return false;\n            }\n            \n            MySmallShip smallShip = GetSmallShipFromArguments(args);\n            MyFactionRelationEnum factionRelation = MyFactions.GetFactionsRelation(entityToTrade, smallShip);            \n\n            if (entityToTrade is MyPrefabHangar)\n            {\n                MyPrefabHangar prefabHangar = entityToTrade as MyPrefabHangar;\n                return (factionRelation == MyFactionRelationEnum.Neutral || factionRelation == MyFactionRelationEnum.Friend || prefabHangar.UseProperties.IsHacked) &&\n                       prefabHangar.IsWorking() && prefabHangar.PrefabHangarType == MyMwcObjectBuilder_PrefabHangar_TypesEnum.VENDOR && IsTargetVisible(smallShip, prefabHangar);\n            }\n            else\n            {\n                Debug.Fail(\"This shouldn't happen! You can't trade with bot\");\n                return factionRelation == MyFactionRelationEnum.Neutral &&\n                    !IsShipLootable(entityToTrade as MySmallShip) &&\n                    IsLookAtTarget(smallShip, entityToTrade);\n            }\n        }        \n\n        private static bool IsShipLootable(MySmallShip smallShip) \n        {\n            bool isParked = (smallShip is MySmallShipBot && ((MySmallShipBot)smallShip).IsParked());\n\n            return smallShip.IsPilotDead() || isParked && smallShip.Enabled;\n        }\n\n        public static bool CanLootShip(MySmallShip shipToLoot, params object[] args)\n        {\n            if (!ControlIsInPlayerShip() || IsBlocked(shipToLoot, args))\n            {\n                return false;\n            }            \n\n            MySmallShip smallShip = GetSmallShipFromArguments(args);\n            //bool hasRightFactionRelation = MyFactions.GetFactionsRelation(smallShip, shipToLoot) == MyFactionRelationEnum.Enemy;            \n            //return hasRightFactionRelation && IsLookAtTarget(smallShip, shipToLoot);            \n            return IsShipLootable(shipToLoot) && IsLookAtTarget(smallShip, shipToLoot);            \n        }\n\n        public static bool CanExamineCargoBox(MyCargoBox cargoBox, params object[] args)\n        {\n            if (IsBlocked(cargoBox, args))\n            {\n                return false;\n            }\n\n            MySmallShip smallShip = GetSmallShipFromArguments(args);\n            return cargoBox.Inventory.GetInventoryItems().Count > 0 && IsLookAtTarget(smallShip, cargoBox) && ControlIsInPlayerShip();\n        }\n\n        public static bool CanExamineEmptyCargoBox(MyCargoBox cargoBox, params object[] args)\n        {\n            if (IsBlocked(cargoBox, args))\n            {\n                return false;\n            }\n\n            MySmallShip smallShip = GetSmallShipFromArguments(args);\n            return cargoBox.Inventory.GetInventoryItems().Count == 0 && IsLookAtTarget(smallShip, cargoBox) && ControlIsInPlayerShip();\n        }\n\n        public static bool IsBlocked(MyEntity entity, params object[] args)\n        {\n            return MyMultiplayerGameplay.IsRunning && MyMultiplayerGameplay.Static.IsLockedByOtherPlayer(entity);\n        }\n\n        public static bool CanBuild(MyPrefabContainer prefabContainer, params object[] args)\n        {\n            MySmallShip smallShip = GetSmallShipFromArguments(args);\n\n            return (MyFactions.GetFactionsRelation(smallShip, prefabContainer) == MyFactionRelationEnum.Friend) &&\n                   prefabContainer.ContainsPrefab(PrefabTypesFlagEnum.FoundationFactory) &&\n                    ControlIsInPlayerShip();\n        }\n\n        public static bool IsNearMothership(MyPrefabHangar prefabHangar, params object[] args)\n        {\n            MySmallShip smallShip = GetSmallShipFromArguments(args);\n\n            return (prefabHangar.PrefabHangarType == MyMwcObjectBuilder_PrefabHangar_TypesEnum.HANGAR && \n                   MyFactions.GetFactionsRelation(smallShip, prefabHangar) == MyFactionRelationEnum.Friend) &&\n                   IsTargetVisible(smallShip, prefabHangar) && \n                   ControlIsInPlayerShip();\n        }\n\n        public static bool CanUse(MyEntity entity, params object[] args) \n        {\n            IMyUseableEntity useableEntity = entity as IMyUseableEntity;\n\n            MySmallShip smallShip = GetSmallShipFromArguments(args);\n\n            if (useableEntity == null) \n            {\n                return false;\n            }\n            if((useableEntity.UseProperties.UseType & MyUseType.Solo) == 0)\n            {\n                return false;\n            }\n            if (entity is MyDrone ? !IsCustomLookAtTarget(smallShip, entity, entity.WorldVolume.Radius) : !IsLookAtTarget(smallShip, entity)) \n            {\n                return false;\n            }\n            if (smallShip != MyGuiScreenGamePlay.Static.ControlledEntity)\n            {\n                return false;\n            }\n\n            return useableEntity.CanBeUsed(smallShip);\n        }\n\n        public static bool CanHack(MyEntity entity, params object[] args) \n        {\n            IMyUseableEntity useableEntity = entity as IMyUseableEntity;\n\n            MySmallShip smallShip = GetSmallShipFromArguments(args);\n            \n            if (useableEntity == null)\n            {\n                return false;\n            }\n            if (useableEntity.UseProperties.IsHacked)\n            {\n                return false;\n            }\n            if ((useableEntity.UseProperties.HackType & MyUseType.Solo) == 0)\n            {\n                return false;\n            }\n            if (!IsLookAtTarget(smallShip, entity))\n            {\n                return false;\n            }\n            if (smallShip != MyGuiScreenGamePlay.Static.ControlledEntity)\n            {\n                return false;\n            }\n\n            return useableEntity.CanBeHacked(smallShip);\n        }\n\n        private static MySmallShip GetSmallShipFromArguments(object[] args) \n        {\n            MySmallShip smallShip = args[0] as MySmallShip;\n            Debug.Assert(smallShip != null);\n            return smallShip;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Ships/SubObjects/MyCameraHeadShake.cs",
    "content": "﻿using System;\nusing MinerWarsMath;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Utils;\n\nnamespace MinerWars.AppCode.Game.Entities\n{\n    class MyCameraHeadShake\n    {\n        public MyCameraHeadShake()\n        {\n            m_Shake = false;\n            m_CurrentShakeDirPower = 0.0f;\n            m_CurrentShakePosPower = 0.0f;\n        }\n\n        //m_MaxShake - tahle konstanta definuje kdy je shake = 1 tedy prevadi hodnoty realne ciselne do cisla se kterym pak pracuju\n        //m_MaxShakePos - tohle je maximalni cislo o ktere se muzu posunovat pri shaku z,y,z\n        //m_MaxShakeDir - tohle je maximalni cislo o ktere muzu zmenit dir x, z\n        //m_Damping - tohle cislo, ktere utlumuje ten shake. Tzn to co hledas na zastaveni shaku. Snizuje to aktualni mozny shake. Je to value* m_Damping vkazdem snimku\n        //m_OffConstant - pri tomhle ciste se shake vypne\n        //m_DirReduction - o tohle se snizi power pro zmenu diru, protoze ta je potreba byt mensi, jinak kamera strasne moc lita\n        //m_Reduction - tohle je redukce pro random nasobic, aby to nebylo prilis zbesile\n\n        public float m_MaxShake = 15.0f;      //this constant defines when shake = 1, converts real values into values we work with\n        public float m_MaxShakePos = 1.0f;    //maximal shake pos diference z,y,z\n        public float m_MaxShakeDir = 0.2f;    //maximal shake dir diference x, z\n        public float m_Reduction = 0.2f;      //reduction for random multiplier\n        public float m_Damping = 0.95f;       //shake speed reduction. by wich we multiply every tick\n        public float m_OffConstant = 0.01f;   //reaching this constant shake turns off\n        public float m_DirReduction = 0.35f;  //this is reduction for random multiplier\n\n        private bool m_Shake = false;\n        private Vector3 m_ShakePos;\n        private Vector3 m_ShakeDir;\n        private float m_CurrentShakePosPower;\n        private float m_CurrentShakeDirPower;\n\n        public bool Shake { get { return m_Shake; } set { m_Shake = value; } }\n        public Vector3 ShakePos { get { return m_ShakePos; } }\n        public Vector3 ShakeDir { get { return m_ShakeDir; } }\n\n        public bool ShakeActive() { return m_Shake; }\n\n        public void AddShake(float shakePower)\n        {\n            if (MyFakes.DISABLE_CAMERA_HEADSHAKE)\n            {\n                return;\n            }\n\n            if (MyMwcUtils.IsZero(shakePower))\n                return;\n\n            if (MyMwcUtils.IsZero(m_MaxShake))\n                return;\n            \n            float pow = (shakePower / m_MaxShake);\n            //MyMwcLog.WriteLine(pow.ToString());\n            \n            if(m_CurrentShakePosPower < pow)\n                m_CurrentShakePosPower = pow;\n            if (m_CurrentShakeDirPower < pow * m_DirReduction)\n                m_CurrentShakeDirPower = pow * m_DirReduction;            \n\n            m_ShakePos = new Vector3(m_CurrentShakePosPower * m_MaxShakePos, m_CurrentShakePosPower * m_MaxShakePos, m_CurrentShakePosPower * m_MaxShakePos);\n            m_ShakeDir = new Vector3(m_CurrentShakeDirPower * m_MaxShakeDir, 0.0f, m_CurrentShakeDirPower * m_MaxShakeDir);\n\n            m_Shake = true;\n        }\n\n        public void UpdateShake(float timeStep,ref Vector3 outPos, ref Vector3 outDir)\n        {\n            if (!m_Shake)\n            {\n                return;\n            }\n\n            // camera shake (dir,up,pos)            \n            m_ShakePos.X *= MyMwcUtils.GetRandomSign();\n            m_ShakePos.Y *= MyMwcUtils.GetRandomSign();\n            m_ShakePos.Z *= MyMwcUtils.GetRandomSign();\n\n            outPos.X += m_ShakePos.X * (Math.Abs(m_ShakePos.X)) * m_Reduction;\n            outPos.Y += m_ShakePos.Y * (Math.Abs(m_ShakePos.Y)) * m_Reduction;\n            outPos.Z += m_ShakePos.Z * (Math.Abs(m_ShakePos.Z)) * m_Reduction;\n\n            m_ShakeDir.X *= MyMwcUtils.GetRandomSign();\n            m_ShakeDir.Y *= MyMwcUtils.GetRandomSign();\n            m_ShakeDir.Z *= MyMwcUtils.GetRandomSign();\n\n            outDir.X += m_ShakeDir.X * (Math.Abs(m_ShakeDir.X)) * 100;\n            outDir.Y += m_ShakeDir.Y * (Math.Abs(m_ShakeDir.Y)) * 100;\n            outDir.Z += m_ShakeDir.Z * (Math.Abs(m_ShakeDir.Z)) * 100;\n\n            outDir *= m_Reduction;\n\n            m_CurrentShakePosPower *= (float) Math.Pow(m_Damping, timeStep * 60.0f);\n            m_CurrentShakeDirPower *= (float) Math.Pow(m_Damping, timeStep * 60.0f);\n\n            if (m_CurrentShakeDirPower < 0.0f)\n            {\n                m_CurrentShakeDirPower = 0.0f;\n            }\n\n            if (m_CurrentShakePosPower < 0.0f)\n            {\n                m_CurrentShakePosPower = 0.0f;\n            }\n\n            m_ShakePos = new Vector3(m_CurrentShakePosPower * m_MaxShakePos, m_CurrentShakePosPower * m_MaxShakePos, m_CurrentShakePosPower * m_MaxShakePos);\n            m_ShakeDir = new Vector3(m_CurrentShakeDirPower * m_MaxShakeDir, 0.0f, m_CurrentShakeDirPower * m_MaxShakeDir);\n\n            if (m_CurrentShakeDirPower < m_OffConstant && m_CurrentShakePosPower < m_OffConstant)\n            {\n                m_CurrentShakeDirPower = 0.0f;\n                m_CurrentShakePosPower = 0.0f;\n                m_Shake = false;\n            }\n        }\n\n        \n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Ships/SubObjects/MyCameraSpring.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Utils;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Physics;\nusing MinerWars.AppCode.Game.Physics;\n\nnamespace MinerWars.AppCode.Game.Entities\n{\n    //////////////////////////////////////////////////////////////////////////\n    /// <summary>\n    /// Camera spring like binding with rigid body\n    /// </summary>\n    class MyCameraSpring\n    {\n        private MyPhysicsBody m_GameRigidBody0;\n\n        //m_MaxVelocity - maximalni rychlost jakou se hlava pohybuje vuci lodi\n        //m_MaxAccel - max zrychleni hlavy vuci lodi\n        //m_MaxDistanceSpeed - maximalni rychlost do ktere se zvetsuje kam se muze hlava hybat\n\n        //Utlum rychlosti z duvody zmeny pohybu. Tohle tam vicemene drzi setrvacnost, ale musi se ta rychlost redukovat jinak by se nedala ta rychlost zmenit dostatecne rychle. Proto se ta rychlost redukuje vyrazne a v dalsim snimku znova nastavuje.\n        // m_LinearVelocity *= 0.8f;\n\n        //Kdyz je:\n        //  m_LinearVelocity = 0.0f; znamena to, ze je vyrazna zmena pohybu lode - podminka, ze zrychleni je jinym smerem nez rychlost, v tom pripade zacnu tu rychlost kumulovat znova\n\n        //Navrat hlavy je reseni utlumem toho vectoru:\n        // m_LocalTranslation *= 0.98f; \n\n        public float m_MaxVelocity = 0.2f;        //maximum head speed according to ship\n        public float m_MaxAccel = 38.0f;           //maximum acceleration according to ship\n        private Vector3 m_LinearVelocity;   \n        private Vector3 m_LimitedVelocity;\n        public float m_MaxDistanceSpeed = 250f;   //maximum speed limit of head\n        public float m_linearVelocityDumping = 0.20f;//speed reduction \n        public float m_linearVelocityAdditionalDumping = 0.60f;//speed reduction according to direction\n        public float m_localTranslationDumping = 0.98f;//returing head into initial position, local dif position reduction\n\n        private Vector3 m_LocalTranslation;\n\n        private MySmallShip m_Ship;\n\n        public MyCameraSpring(MySmallShip ship)\n        {\n            m_LimitedVelocity = Vector3.Zero;\n\n            m_Ship = ship;\n            m_GameRigidBody0 = ship.Physics;\n\n            m_LinearVelocity = Vector3.Zero;        \n\n            m_LocalTranslation = Vector3.Zero;\n        }\n\n        /// <summary>\n        /// Maximum local velocity of the camera\n        /// </summary>\n        public float MaxVelocitySquered { get { return m_MaxVelocity; } set { m_MaxVelocity = value; } }\n        /// <summary>\n        /// Maximum local acceleration of the camera\n        /// </summary>\n        public float MaxAccelSquered { get { return m_MaxAccel; } set { m_MaxAccel = value; } }\n        /// <summary>\n        /// Max speed for the distance, until this distance the position limit of local camera space will increase\n        /// </summary>\n        public float MaxDistanceSpeedSquered { get { return m_MaxDistanceSpeed; } set { m_MaxDistanceSpeed = value; } }\n\n        public void Update(float timeStep, Matrix inverseRboMatrix, ref Vector3 headLocal)\n        {\n            Vector3 localVelocity = Vector3.TransformNormal(m_GameRigidBody0.LinearVelocity, inverseRboMatrix);\n\n            if(Vector3.Dot(m_GameRigidBody0.LinearAcceleration, m_GameRigidBody0.LinearVelocity) > 0.6f)\n            {                \n                m_LinearVelocity -= localVelocity;\n\n                Vector3 localAccel = Vector3.TransformNormal(m_GameRigidBody0.LinearAcceleration, inverseRboMatrix);\n\n                Vector3 oldVel = m_LimitedVelocity;\n                m_LimitedVelocity = m_LinearVelocity;\n\n                if (m_LimitedVelocity.LengthSquared() > m_MaxVelocity)\n                {\n                    m_LimitedVelocity.Normalize();\n                    m_LimitedVelocity *= m_MaxVelocity;\n                }\n\n                Vector3 accel = (m_LimitedVelocity - oldVel) / timeStep;\n\n                if (accel.Length() > m_MaxAccel)\n                {\n                    accel.Normalize();\n                    m_LimitedVelocity = oldVel + accel * (m_MaxAccel * timeStep);\n                }\n\n                Vector3 oldTranslation = m_LocalTranslation;\n                m_LocalTranslation += m_LimitedVelocity * timeStep;\n\n                float speedFactor = MathHelper.Clamp(localVelocity.Length() / m_MaxDistanceSpeed, 0.3f, 1.0f);\n\n                Vector3 distanceLimit = MyMinerShipConstants.PLAYER_HEAD_MAX_DISTANCE * 0.7f*speedFactor;\n\n                //  Limiting head movement\n                if (m_LocalTranslation.X > distanceLimit.X && m_LimitedVelocity.X >= 0.0f)\n                {\n                    if (m_LimitedVelocity.X * localAccel.X < 0.0f)\n                    {\n                        m_LocalTranslation.X = distanceLimit.X;\n                    }\n                    else\n                    {\n                        m_LocalTranslation.X = oldTranslation.X;\n                    }\n                }\n\n                if (m_LocalTranslation.X < -distanceLimit.X && m_LimitedVelocity.X < 0.0f)\n                {\n                    if (m_LimitedVelocity.X * localAccel.X < 0.0f)\n                    {\n                        m_LocalTranslation.X = -distanceLimit.X;\n                    }\n                    else\n                    {\n                        m_LocalTranslation.X = oldTranslation.X;\n                    }                    \n                }\n\n                if (m_LocalTranslation.Y > distanceLimit.Y && m_LimitedVelocity.Y > 0.0f)\n                {\n                    if (m_LimitedVelocity.Y * localAccel.Y < 0.0f)\n                    {\n                        m_LocalTranslation.Y = distanceLimit.Y;\n                    }\n                    else\n                    {\n                        m_LocalTranslation.Y = oldTranslation.Y;\n                    }                    \n                }\n\n                if (m_LocalTranslation.Y < -distanceLimit.Y && m_LimitedVelocity.Y < 0.0f)\n                {\n                    if (m_LimitedVelocity.Y * localAccel.Y < 0.0f)\n                    {\n                        m_LocalTranslation.Y = -distanceLimit.Y;\n                    }\n                    else\n                    {\n                        m_LocalTranslation.Y = oldTranslation.Y;\n                    }                    \n                }\n\n                if (m_LocalTranslation.Z > distanceLimit.Z && m_LimitedVelocity.Z > 0.0f)\n                {\n                    if (m_LimitedVelocity.Z * localAccel.Z < 0.0f)\n                    {\n                        m_LocalTranslation.Z = distanceLimit.Z;\n                    }\n                    else\n                    {\n                        m_LocalTranslation.Z = oldTranslation.Z;\n                    }                                        \n                }\n\n                if (m_LocalTranslation.Z < -distanceLimit.Z && m_LimitedVelocity.Z < 0.0f)\n                {\n                    if (m_LimitedVelocity.Z * localAccel.Z < 0.0f)\n                    {\n                        m_LocalTranslation.Z = -distanceLimit.Z;\n                    }\n                    else\n                    {\n                        m_LocalTranslation.Z = oldTranslation.Z;\n                    }\n                }\n\n                Vector3 velDir = m_LimitedVelocity;\n                velDir.Normalize();\n\n                m_LinearVelocity *= m_linearVelocityDumping + m_linearVelocityAdditionalDumping*(Math.Abs(Vector3.Dot(m_Ship.WorldMatrix.Forward,velDir)));\n            }\n            else\n            {\n                m_LinearVelocity = Vector3.Zero;\n            }            \n\n            m_LocalTranslation *= m_localTranslationDumping;\n\n            float velocityLength = localVelocity.Length();\n\n            if (velocityLength > MyMwcMathConstants.EPSILON)\n            {\n                float velocityFactor = MathHelper.Clamp(velocityLength * MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS * 0.5f, 0, 3);\n                m_Ship.IncreaseHeadShake(velocityFactor);\n            }\n\n            headLocal = m_LocalTranslation;\n        }\n\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Ships/SubObjects/MyCockpit.cs",
    "content": "﻿using System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Render;\nusing MinerWars.AppCode.Game.Managers;\n\nnamespace MinerWars.AppCode.Game.Entities.Ships.SubObjects\n{\n    class MyCockpit: MyEntity\n    {\n        public MyCockpit()\n        {\n            // Cockpit is near\n            NearFlag = true;\n            Save = false;\n        }\n\n        public MinerWars.AppCode.Game.HUD.MyHudTexturesEnum Crosshair;\n\n        public override void Init(StringBuilder displayName, Models.MyModelsEnum? modelLod0Enum, Models.MyModelsEnum? modelLod1Enum, MyEntity parentObject, float? scale, CommonLIB.AppCode.ObjectBuilders.MyMwcObjectBuilder_Base objectBuilder, Models.MyModelsEnum? modelCollision = null, Models.MyModelsEnum? modelLod2 = null)\n        {\n            base.Init(displayName, modelLod0Enum, modelLod1Enum, parentObject, scale, objectBuilder, modelCollision, modelLod2);\n\n            switch (modelLod0Enum)\n            {\n                case Models.MyModelsEnum.Cockpit_SS_04:\n                    Crosshair = HUD.MyHudTexturesEnum.crosshair_nazzi; \n                    break;\n                case Models.MyModelsEnum.Cockpit_Razorclaw:\n                    Crosshair = HUD.MyHudTexturesEnum.crosshair_templary;\n                    break;\n                case Models.MyModelsEnum.Cockpit_CN_03:\n                    Crosshair = HUD.MyHudTexturesEnum.crosshair_russian;\n                    break;\n                case Models.MyModelsEnum.OmniCorp_EAC01_Cockpit:\n                case Models.MyModelsEnum.OmniCorp01_Cockpit:\n                case Models.MyModelsEnum.OmniCorp04_Cockpit:\n                case Models.MyModelsEnum.OmniCorp03_Cockpit:\n                    Crosshair = HUD.MyHudTexturesEnum.crosshair_omnicorp;\n                    break;\n                case Models.MyModelsEnum.EAC02_Cockpit:\n                case Models.MyModelsEnum.EAC03_Cockpit:\n                case Models.MyModelsEnum.EAC04_Cockpit:\n                case Models.MyModelsEnum.EAC05_Cockpit:\n                default:\n                    Crosshair = HUD.MyHudTexturesEnum.Crosshair01;\n                    break;\n            }\n            m_modelLod0.PreloadTextures(LoadingMode.Immediate, MaterialIndex);\n        }\n\n        public override Matrix GetWorldMatrixForDraw()\n        {\n            return MySession.PlayerShip.PlayerHeadForCockpitInteriorWorldMatrix;\n        }\n\n        public override bool Draw(MyRenderObject renderObject = null)\n        {\n            return base.Draw(renderObject);\n        }\n\n        public override void UpdateBeforeSimulation()\n        {\n            base.UpdateBeforeSimulation();\n\n            this.Visible = Cockpit.MyCockpitGlass.CanDrawCockpit();\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Ships/SubObjects/MyCockpitGlassEntity.cs",
    "content": "﻿namespace MinerWars.AppCode.Game.Entities.SubObjects\n{\n    using System;\n    using MinerWars.AppCode.Game.Utils;\n    using MinerWars.AppCode.Physics;\n\n    /// <summary>\n    /// This phys object is not used for drawing. \n    /// It's whole purpose is only detect intersection between projectiles or dirt and cockpit glass.\n    /// </summary>\n    class MyCockpitGlassEntity : MyEntity\n    {\n        public MyCockpitGlassEntity()\n        {\n            IsDestructible = true;\n        }\n\n        public override void Init(System.Text.StringBuilder hudLabelText, Models.MyModelsEnum? modelLod0Enum, Models.MyModelsEnum? modelLod1Enum, MyEntity parentObject, float? scale, CommonLIB.AppCode.ObjectBuilders.MyMwcObjectBuilder_Base objectBuilder, Models.MyModelsEnum? modelCollision = null, Models.MyModelsEnum? modelLod2 = null)\n        {\n            base.Init(hudLabelText, modelLod0Enum, modelLod1Enum, parentObject, scale, objectBuilder, modelCollision, modelLod2);\n\n            //InitSpherePhysics(MyMaterialType.GLASS, ModelLod0, 1.0f, 0, MyConstants.COLLISION_LAYER_DEFAULT, RigidBodyFlag.RBF_DEFAULT);\n\n            Visible = false;\n            Save = false;\n        }\n\n        protected override void DoDamageInternal(float playerDamage, float damage, float empDamage, MyDamageType damageType, MyAmmoType ammoType, MyEntity damageSource, bool justDeactivate)\n        {\n            Parent.DoDamage(playerDamage, damage, empDamage, damageType, ammoType, damageSource, justDeactivate);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Ships/SubObjects/MyCockpitWeapons.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Render;\nusing MinerWars.AppCode.Game.Cockpit;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.Utils;\nusing SysUtils.Utils;\n\nnamespace MinerWars.AppCode.Game.Entities.Ships.SubObjects\n{\n    class MyCockpitWeapons\n    {\n        static MyCockpitWeapons()\n        {\n            MyRender.RegisterRenderModule(MyRenderModuleEnum.CockpitWeapons, \"Cockpit weapons\", Draw, MyRenderStage.LODDrawStart);\n        }\n\n        public static void LoadContent()\n        {\n            MyMwcLog.WriteLine(\"MyCockpitWeapons.LoadContent - START\");\n            MyMwcLog.IncreaseIndent();\n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyCockpitWeapons.LoadContent - END\");\n        }\n\n        public static void UnloadContent()\n        {\n            MyMwcLog.WriteLine(\"MyCockpitWeapons.UnloadContent - START\");\n            MyMwcLog.IncreaseIndent();\n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyCockpitWeapons.UnloadContent - END\");\n        }\n\n        public static bool CanDrawCockpitWeapons()\n        {\n            return MyGuiScreenGamePlay.Static.IsGameActive() == true &&\n              MyCamera.ActualCameraDirection == MyCameraDirection.FORWARD &&\n              MyGuiScreenGamePlay.Static.CameraAttachedTo == MyCameraAttachedToEnum.PlayerMinerShip &&\n              MySession.PlayerShip != null &&\n              !MySession.PlayerShip.IsDead() &&\n              MySession.Static != null &&\n              MySession.Static.Player != null &&\n              !MySession.Static.Player.IsDead();\n        }\n\n        public static void Draw()\n        {\n            if (MyRender.GetCurrentLodDrawPass() == Utils.MyLodTypeEnum.LOD_NEAR && CanDrawCockpitWeapons() && MyFakes.DRAW_WEAPONS)\n            {\n                var old = MySession.PlayerShip.Weapons.Visible;\n                MySession.PlayerShip.Weapons.Visible = true;\n                MySession.PlayerShip.Weapons.Draw();\n                MySession.PlayerShip.Weapons.Visible = old;\n\n                MySession.PlayerShip.CubeBuilder.Draw();\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Ships/SubObjects/MyCubeBuilder.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Render;\nusing MinerWars.AppCode.Game.Models;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Managers.Session;\n\nnamespace MinerWars.AppCode.Game.Entities.Ships.SubObjects\n{\n    class MyCubeBuilder : MyEntity\n    {\n        public bool BuilderActive { get; set; }\n\n        public List<MyEntity> m_intersections = new List<MyEntity>(3);\n\n        public MyCubeBuilder()\n        {\n        }\n\n        public override void Init(StringBuilder displayName, Models.MyModelsEnum? modelLod0Enum, Models.MyModelsEnum? modelLod1Enum, MyEntity parentObject, float? scale, CommonLIB.AppCode.ObjectBuilders.MyMwcObjectBuilder_Base objectBuilder, Models.MyModelsEnum? modelCollision = null, Models.MyModelsEnum? modelLod2Enum = null)\n        {\n            // Some fake builder\n            var builder = new MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Crusher);\n\n            base.Init(displayName, modelLod0Enum, modelLod1Enum, parentObject, scale, builder, modelCollision, modelLod2Enum);\n            SetModel(MyModelsEnum.MysteriousBox_matt_5m);\n        }\n\n        void SetModel(MyModelsEnum model)\n        {\n            m_modelLod0 = MyModels.GetModelForDraw(model);\n            m_modelLod1 = null;\n        }\n\n        public MyIntersectionResultLineTriangleEx? Intersect()\n        {\n            float maxDist = 200;\n            MyLine line = new MyLine(MyCamera.Position, MyCamera.Position + MyCamera.ForwardVector * maxDist);\n            var result = MyEntities.GetIntersectionWithLine(ref line, MySession.PlayerShip, null, true, true, false, false, true);\n            return result;\n        }\n\n        public void Add()\n        {\n            Vector3 position;\n            if (GetAddPosition(out position))\n            {\n                Matrix matrix = Matrix.CreateTranslation(position);\n                var cube = new MyMwcObjectBuilder_MysteriousCube(new CommonLIB.AppCode.Networking.MyMwcPositionAndOrientation(matrix));\n                cube.MysteriousCubeType = MyMwcObjectBuilder_MysteriousCube_TypesEnum.Type2;\n                MyEntities.CreateFromObjectBuilderAndAdd(null, cube, matrix);\n            }\n        }\n\n        void MakeCubePosition(ref Vector3 position)\n        {\n            Vector3 size = m_modelLod0.BoundingBoxSize;\n            Vector3 center = m_modelLod0.BoundingBox.Min + size / 2;\n            position -= center;\n            Vector3 div = position / size;\n            div.X = (float)Math.Round(div.X);\n            div.Y = (float)Math.Round(div.Y);\n            div.Z = (float)Math.Round(div.Z);\n\n            position = div * size;\n        }\n\n        bool GetAddPosition(out Vector3 position)\n        {\n            var result = Intersect();\n            if (result != null)\n            {\n                position = result.Value.IntersectionPointInWorldSpace - MyCamera.ForwardVector * 0.05f;\n            }\n            else\n            {\n                position = MyCamera.Position + MyCamera.ForwardVector * 70;\n            }\n\n            MakeCubePosition(ref position);\n            return result == null || position != result.Value.Entity.WorldMatrix.Translation;\n        }\n\n        bool IsSmallship(MyEntity entity)\n        {\n            return entity is MySmallShip;\n        }\n\n        public void Remove()\n        {\n            var result = Intersect();\n            if (result.HasValue && result.Value.Entity is MyMysteriousCube)\n            {\n                result.Value.Entity.MarkForClose();\n            }\n        }\n\n        public override bool Draw(MyRenderObject renderObject = null)\n        {\n            if (BuilderActive)\n            {\n                MyRender.AddRenderObjectToDraw(RenderObjects[0]);\n                return true;\n            }\n            return false;\n        }\n\n        public override bool DebugDraw()\n        {\n            bool boxMode = false;\n\n            Vector3 pos;\n            if (GetAddPosition(out pos))\n            {\n                var result = Intersect();\n                if(result.HasValue && result.Value.Entity is MyMysteriousCube)\n                {\n                    if (!boxMode)\n                    {\n                        float mult = 0.01f;\n                        var bb = m_modelLod0.BoundingBox.Translate(pos);\n                        bb.Max += m_modelLod0.BoundingBoxSize * mult;\n                        bb.Min -= m_modelLod0.BoundingBoxSize * mult;\n                        var bb2 = m_modelLod0.BoundingBox.Translate(result.Value.Entity.WorldMatrix.Translation);\n                        bb2.Max += m_modelLod0.BoundingBoxSize * mult;\n                        bb2.Min -= m_modelLod0.BoundingBoxSize * mult;\n\n                        if (bb.Intersects(bb2))\n                        {\n                            bb2.Min = Vector3.Clamp(bb2.Min, bb.Min, bb.Max);\n                            bb2.Max = Vector3.Clamp(bb2.Max, bb.Min, bb.Max);\n                            Vector4 color = Color.Green.ToVector4();\n                            color.W = 0.5f;\n                            MyStateObjects.DepthStencil_TestFarObject_DepthReadOnly.Apply();\n                            MyStateObjects.Additive_NoAlphaWrite_BlendState.Apply();\n                            MyDebugDraw.DrawAABBSolidLowRes(bb2, color, 1.0f);\n                        }\n                    }\n                    else\n                    {\n                        var bb = result.Value.Entity.WorldAABB;\n                        bb.Inflate(0.1f);\n                        Vector4 color = Color.Red.ToVector4();\n                        MyStateObjects.DepthStencil_TestFarObject.Apply();\n                        MyDebugDraw.DrawAABBLowRes(ref bb, ref color, 1.0f);\n                    }\n                }\n\n                if (boxMode)\n                {\n                    BoundingBox bb = m_modelLod0.BoundingBox;\n                    bb = bb.Translate(pos);\n                    bb.Inflate(0.1f);\n                    Vector4 color = Color.Green.ToVector4();\n                    color.W = 0.5f;\n                    MyStateObjects.DepthStencil_StencilReadOnly.Apply();\n                    MyStateObjects.Additive_NoAlphaWrite_BlendState.Apply();\n                    MyDebugDraw.DrawAABBSolidLowRes(bb, color, 1.0f);\n                }\n            }\n\n            return base.DebugDraw();\n        }\n\n        public override void UpdateAfterSimulation()\n        {\n            LocalMatrix = Matrix.CreateScale(0.7f) * Matrix.CreateTranslation(new Vector3(0, -7, -10));\n            base.UpdateAfterSimulation();\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Ships/SubObjects/MySecondaryCamera.cs",
    "content": "﻿using System;\nusing System.Diagnostics;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Render.SecondaryCamera;\nusing MinerWars.AppCode.Game.Utils;\n\nusing SharpDX;\nusing SharpDX.Direct3D9;\nusing SharpDX.Toolkit;\nusing SharpDX.Toolkit.Graphics;\n\n\nnamespace MinerWars.AppCode.Game.Entities.Ships.SubObjects\n{\n    using Vector2 = MinerWarsMath.Vector2;\n    using Vector3 = MinerWarsMath.Vector3;\n    using Vector4 = MinerWarsMath.Vector4;\n    using Rectangle = MinerWarsMath.Rectangle;\n    using Matrix = MinerWarsMath.Matrix;\n    using Color = MinerWarsMath.Color;\n    using BoundingBox = MinerWarsMath.BoundingBox;\n    using BoundingSphere = MinerWarsMath.BoundingSphere;\n    using BoundingFrustum = MinerWarsMath.BoundingFrustum;\n    using MathHelper = MinerWarsMath.MathHelper;\n\n    public enum MySecondaryCameraAttachedTo\n    {\n        RearMirror,\n        Drone,\n        Missile,\n        RemoteCamera,\n        PlayerShip\n    }\n\n    class MySecondaryCamera\n    {\n        private enum Mode\n        {\n            BackCamera,\n            PlayerShip,\n            Entity,\n        }\n\n        private static MySecondaryCamera m_instance;\n        public static MySecondaryCamera Instance\n        {\n            get\n            {\n                if (m_instance == null)\n                {\n                    m_instance = new MySecondaryCamera();\n                }\n                return m_instance;\n            }\n        }\n\n        public Matrix ViewMatrix { get; private set; }\n        public Matrix ProjectionMatrix { get; private set; }\n\n        public BoundingFrustum BoundingFrustum { get; private set; }\n\n        private Mode m_mode = Mode.BackCamera;\n\n        // For Mode.Entity, specifies the source of the camera view matrix\n        private MyEntity m_cameraSource;\n\n        public MySecondaryCameraAttachedTo SecondaryCameraAttachedTo { get; set; }\n\n        public MySecondaryCameraRenderer SecondaryCameraRenderer { get; private set; }\n\n        public bool MirrorImage { get; set; }\n\n        public bool IsInsidePlayerShip\n        {\n            get\n            {\n                return m_mode == Mode.BackCamera || m_mode == Mode.PlayerShip;\n            }\n        }\n\n        public bool IsCurrentlyRendering { get; set; }\n\n        public Texture GetRenderedTexture()\n        {\n            return SecondaryCameraRenderer.GetRenderedTexture();\n        }\n\n        private MySecondaryCamera()\n        {\n            SecondaryCameraRenderer = MySecondaryCameraRenderer.Instance;\n            BoundingFrustum = new BoundingFrustum(Matrix.Identity);\n        }\n\n        public void SetRearMirror()\n        {\n            m_mode = Mode.BackCamera;\n            MirrorImage = true;\n        }\n\n        public void SetPlayerShip()\n        {\n            m_mode = Mode.PlayerShip;\n            MirrorImage = false;\n        }\n\n        public MyEntity GetCameraEntity()\n        {\n            if (m_mode == Mode.Entity) return m_cameraSource;\n            else return null;\n        }\n\n        public void SetEntityCamera(MyEntity cameraSource)\n        {\n            m_mode = Mode.Entity;\n            m_cameraSource = cameraSource;\n            MirrorImage = false;\n        }\n\n        public void Render()\n        {\n            switch (m_mode)\n            {\n                case Mode.BackCamera:\n                    ViewMatrix = MySession.PlayerShip.GetViewMatrix() * Matrix.CreateRotationY(MathHelper.Pi);\n                    break;\n                case Mode.PlayerShip:\n                    ViewMatrix = MySession.PlayerShip.GetViewMatrix();\n                    break;\n                case Mode.Entity:\n                    ViewMatrix = Matrix.CreateLookAt(\n                        m_cameraSource.GetPosition(),\n                        m_cameraSource.GetPosition() +\n                        m_cameraSource.WorldMatrix.Forward,\n                        m_cameraSource.WorldMatrix.Up);\n                        break;\n                default:\n                    throw new ArgumentOutOfRangeException();\n            }            \n\n            SecondaryCameraRenderer.ViewMatrix = ViewMatrix;\n            this.IsCurrentlyRendering = true;\n            SecondaryCameraRenderer.Render();\n            this.IsCurrentlyRendering = false;\n            ProjectionMatrix = SecondaryCameraRenderer.ProjectionMatrix;\n\n            BoundingFrustum.Matrix = ViewMatrix * ProjectionMatrix;\n        }\n\n        public void DebugDraw()\n        {\n            MyDebugDraw.DrawBoundingFrustum(BoundingFrustum, Color.Green);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/SpawnPoints/MySpawnPoint.cs",
    "content": "﻿#region Using\n\nusing System;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Inventory;\nusing MinerWars.AppCode.Game.Missions;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing System.Collections.Generic;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.AppCode.Game.Utils;\nusing SysUtils;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.GUI;\nusing KeenSoftwareHouse.Library.Memory;\nusing MinerWars.AppCode.Physics;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.GUI.Helpers;\nusing KeenSoftwareHouse.Library.Trace;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing System.Text;\nusing MinerWars.AppCode.Game.Gameplay;\nusing MinerWars.AppCode.Game.Entities.WayPoints;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Models;\nusing MinerWars.AppCode.Game.Managers.Others;\nusing System.Diagnostics;\nusing MinerWars.AppCode.Game.Render;\nusing MinerWars.AppCode.Game.Sessions;\nusing MinerWars.AppCode.Physics.Collisions;\nusing MinerWars.AppCode.Game.Entities.Ships.AI;\nusing MinerWars.AppCode.Game.Missions.Components;\n\n#endregion\n\nnamespace MinerWars.AppCode.Game.Entities\n{\n    //templates \n    public class BotTemplate\n    {\n        public String m_name;\n        public MyMwcObjectBuilder_SmallShip_Bot m_builder;\n    }\n\n    class MySpawnPoint : MyEntity\n    {\n        private const int MIN_TIME_BETWEEN_BOT_SPAWN = 50;\n        private static int m_lastSpawnTime = 0;\n\n        public event Action<MySpawnPoint> OnActivatedChanged;\n\n        public class Bot\n        {\n            public MySmallShipBot Ship;\n            public MyMwcObjectBuilder_SmallShip_Bot Builder;\n            public int SpawnTime;\n            public bool FirstSpawned;\n            public bool DoSpawn;\n        };\n\n        public float FirstSpawnTimer { get; set; }  //in ms\n        public float RespawnTimer { get; set; }     //in ms\n        public bool SpawnInGroups { get; set; }\n        public int MaxSpawnCount { get; set; }\n        public int LeftToSpawn { get; set; }         // -1 means infinity\n        public float BoundingSphereRadius { get; set; }   // world radius for spawing / we generate ships within this radius randomly\n        public MyPatrolMode PatrolMode { get; set; }\n        public bool FirstSpawnDone { get; private set; }\n        //public bool IsDummy;\n\n        List<BotTemplate> m_botTemplates;\n        List<Bot> m_botShips; // templates or holders for ships we generate\n\n        String m_wayPointPath = \"\";\n\n        float m_followerChance = 0.7f;\n\n        bool m_spawnActivated = true;\n\n        int? m_spawnFailedTime;\n\n\n        /// <summary>\n        /// 0..1 chance to spawn follower -> 0 never 1 always\n        /// </summary>\n        public float FollowerChance\n        {\n            get\n            {\n                return m_followerChance;\n            }\n            set\n            {\n                m_followerChance = value;\n            }\n        }\n\n        private MySmallShip m_leader;\n\n        public MySmallShip Leader\n        {\n            get { return m_leader; }\n            set\n            {\n                m_leader = value;\n                foreach (var bot in m_botShips)\n                {\n                    if (bot.Ship != null)\n                    {\n                        bot.Ship.Follow(value);\n                    }\n                }\n            }\n        }\n\n        private bool m_allKilledEventRaised;\n\n        private const int MAX_SPAWN_ATTEMPTS = 5;// usualy\n        private const int MAX_SPAWN_COUNT = 5;\n\n        #region Limiters\n        private List<MySpawnpointLimiter> m_limiters = new List<MySpawnpointLimiter>();\n        \n        public void AddLimiter(MySpawnpointLimiter limiter)\n        {\n            m_limiters.Add(limiter);\n        }\n\n        public void RemoveLimiter(MySpawnpointLimiter limiter)\n        {\n            m_limiters.Remove(limiter);\n        }\n        #endregion\n\n        public MySpawnPoint()\n            : base(true)\n        {\n            LeftToSpawn = -1;\n            MaxSpawnCount = LeftToSpawn;\n            m_botShips = new List<Bot>();\n        }\n\n        public virtual void Init(string hudLabelText, MyMwcObjectBuilder_SpawnPoint objectBuilder, Matrix matrix)\n        {\n            Visible = MyGuiScreenGamePlay.Static == null || !MyGuiScreenGamePlay.Static.IsGameActive();\n\n            StringBuilder hudLabelTextSb = (hudLabelText == null) ? null : new StringBuilder(hudLabelText);\n            base.Init(hudLabelTextSb, objectBuilder);\n            m_botTemplates = new List<BotTemplate>();\n            CastShadows = false;\n\n            SpawnInGroups = objectBuilder.SpawnInGroups;\n            LeftToSpawn = objectBuilder.SpawnCount;\n            MaxSpawnCount = LeftToSpawn;\n            FirstSpawnTimer = objectBuilder.FirstSpawnTimer;\n            RespawnTimer = objectBuilder.RespawnTimer;\n            BoundingSphereRadius = objectBuilder.BoundingRadius;\n            PatrolMode = objectBuilder.PatrolMode;\n            m_wayPointPath = objectBuilder.WayPointPath;\n            m_allKilledEventRaised = false;\n\n            foreach (MyMwcObjectBuilder_SmallShip_Bot shipBuilder in objectBuilder.ShipTemplates)\n            {\n                // Disable names on spawned bots (in this way, thay can be changed when faction changes)\n                shipBuilder.DisplayName = null;\n\n                Bot nb = new Bot();\n                nb.Ship = null;\n                nb.Builder = shipBuilder;\n\n                nb.SpawnTime = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n                nb.FirstSpawned = false;\n                m_botShips.Add(nb);\n                BotTemplate bt = new BotTemplate();\n                bt.m_builder = shipBuilder;\n                bt.m_name = \"\";\n                m_botTemplates.Add(bt);\n            }\n\n            this.LocalVolume = new BoundingSphere(Vector3.Zero, objectBuilder.BoundingRadius);\n\n            if (Physics == null)\n            {\n                base.InitSpherePhysics(MyMaterialType.GLASS, WorldMatrix.Translation, BoundingSphereRadius, 1.0f, 1.0f, MyConstants.COLLISION_LAYER_UNCOLLIDABLE, RigidBodyFlag.RBF_RBO_STATIC);\n            }\n\n            VisibleInGame = false;\n            Flags |= EntityFlags.EditableInEditor;\n\n            Faction = objectBuilder.Faction;\n\n            SetWorldMatrix(matrix);\n            NeedsUpdate = true;\n\n            if (objectBuilder.Activated)\n            {\n                Activate();\n            }\n            else\n            {\n                Deactivate();\n            }\n\n            m_spawnFailedTime = null;\n        }\n\n        public List<BotTemplate> GetBotTemplates()\n        {\n            return m_botTemplates;\n        }\n\n        public List<BotTemplate> ApplyBotTemplates(List<BotTemplate> templates)\n        {\n            m_botTemplates.Clear();\n            m_botTemplates.AddRange(templates);\n            //here also delete / destroy all spawned ships \n            m_botShips.Clear();\n            foreach (BotTemplate tmp in m_botTemplates)\n            {\n                Bot nb = new Bot();\n                nb.Ship = null;\n                nb.Builder = tmp.m_builder;\n                nb.SpawnTime = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n                nb.FirstSpawned = false;\n                m_botShips.Add(nb);\n            }\n            return m_botTemplates;\n        }\n\n        public void Reset()\n        {\n            // Remove also dead bots\n            foreach (var bot in MyBotCoordinator.GetBots())\n            {\n                if (EntityId.HasValue && bot.OwnerId == EntityId.Value.NumericValue && bot.IsDead())\n                {\n                    bot.MarkForClose();\n                }\n            }\n\n            foreach (var bot in m_botShips)\n            {\n                if (bot.Ship != null && !bot.Ship.Closed)\n                {\n                    bot.Ship.MarkForClose();\n                }\n                bot.Ship = null;\n                bot.SpawnTime = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n                bot.FirstSpawned = false;\n            }\n            LeftToSpawn = MaxSpawnCount;\n\n            m_allKilledEventRaised = false;\n            FirstSpawnDone = false;\n        }\n\n        public void ResetBotsSpawnTime()\n        {\n            foreach (var bot in m_botShips)\n            {\n                bot.SpawnTime = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n            }\n        }\n\n        private MySmallShipBot CreateBotFromBuilder(MyMwcObjectBuilder_SmallShip_Bot bldr, Vector3 position)\n        {\n            //hax\n            bldr.ArmorHealth = MyGameplayConstants.HEALTH_BASIC;\n            bldr.ShipMaxHealth = MyGameplayConstants.HEALTH_BASIC;\n            bldr.Fuel = float.MaxValue;\n            bldr.Oxygen = float.MaxValue;\n            bldr.OwnerId = this.EntityId.Value.NumericValue;\n            if (bldr.ShipTemplateID != null) \n            {\n                var shipTemplate = MySmallShipTemplates.GetTemplateForSpawn(bldr.ShipTemplateID.Value);\n                Debug.Assert(shipTemplate != null, string.Format(\"ShipTemplate {0} was not found!\", bldr.ShipTemplateID.Value));\n                if (shipTemplate != null)\n                {\n                    shipTemplate.ApplyToSmallShipBuilder(bldr);\n                }\n            }\n            bldr.Faction = this.Faction;\n\n            MySmallShipBot bot = (MySmallShipBot)MyEntities.CreateFromObjectBuilder(null, bldr, Matrix.CreateWorld(position, Vector3.Backward, Vector3.Up));\n\n            return bot;\n        }\n\n        private bool GetSafePositionForSpawn(MyMwcObjectBuilder_SmallShip_TypesEnum shipType, out Vector3? safePosition)\n        {\n            var shipRadius = MyModels.GetModelOnlyData(MyShipTypeConstants.GetShipTypeProperties(shipType).Visual.ModelLod0Enum).BoundingSphere.Radius;\n\n            for (int c = MAX_SPAWN_ATTEMPTS; c-- != 0; )\n            {\n                Vector3 randomPointInSphere = MyMwcUtils.GetRandomVector3Normalized() * MyMwcUtils.GetRandomFloat(0, 1) * BoundingSphereRadius; // Random point in sphere\n                Vector3 newTestPos = GetPosition() + randomPointInSphere;\n\n                BoundingSphere bsphere = new BoundingSphere(newTestPos, shipRadius);\n                MyEntity col = MyEntities.GetIntersectionWithSphere(ref bsphere);\n\n                if (col == null)\n                {\n                    safePosition = newTestPos;\n                    return true;\n                }\n            }\n\n            safePosition = null;\n            return false; \n        }\n\n        private MySmallShipBot CreateShip(MyMwcObjectBuilder_SmallShip_Bot bldr, Vector3 position)\n        {\n            MySmallShipBot bot = CreateBotFromBuilder(bldr, position);\n            MyEntities.Add(bot);\n\n            SetBotPath(bot);\n\n            return bot;\n        }\n\n        private void SetBotPath(MySmallShipBot bot)\n        {\n            bot.WaypointPath = MyWayPointGraph.GetPath(m_wayPointPath);\n            bot.PatrolMode = PatrolMode;\n\n            //check if any leader present\n            Bot leader = m_botShips.Find(s => (s.Ship != null && s.Ship.Leader == null));\n            if (leader != null)\n            {\n                bot.Follow(leader.Ship);\n            }\n            else if (bot.WaypointPath != null)\n            {\n                bot.Patrol();\n            }\n\n            if (Leader != null)\n            {\n                bot.Follow(Leader);\n            }\n        }\n\n\n        public void LinkShip(MySmallShipBot bot)\n        {\n            SetBotPath(bot);\n\n            foreach (var botShip in m_botShips)\n            {\n                if (botShip.Builder.ShipType == bot.ShipType)\n                {\n                    if (botShip.Ship == null)\n                    {\n                        botShip.Ship = bot;\n                        break;\n                    }\n                }\n            }\n        }\n\n        public void SpawnShip(int botsIdx, Vector3? position = null, uint? desiredBotId = null)\n        {\n            Bot bots = m_botShips[botsIdx];\n\n            if (position == null)\n            {\n                if (m_spawnFailedTime.HasValue && MyMinerGame.TotalGamePlayTimeInMilliseconds - m_spawnFailedTime.Value < 1000)\n                {\n                    return;\n                }\n                else if (!GetSafePositionForSpawn(bots.Builder.ShipType, out position))\n                {\n                    // This should not happen\n                    m_spawnFailedTime = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n                   // System.Diagnostics.Debug.Assert(false, string.Format(\"Spawnpoint \\\"{0}\\\" failed on bot placement, try increase spawnpoint radius (atm. {1})!\", EntityId.HasValue ? EntityId.Value.NumericValue.ToString() : \"no EntityID\", BoundingSphereRadius));\n                    return;\n                }\n            }\n\n            Debug.Assert(position != null);\n            \n            bots.Builder.EntityId = desiredBotId ?? MyEntityIdentifier.AllocateId(0).NumericValue;\n            MySmallShipBot bot = CreateShip(bots.Builder, position.Value);\n            bots.Builder.ClearEntityId();\n\n            if (MyMultiplayerGameplay.IsRunning && !IsDummy)\n            {\n                MyMultiplayerGameplay.Static.SpawnBot(this, bot, botsIdx, position.Value);\n            }\n\n            bot.IsDummy = this.IsDummy;\n            bot.InitTime = 3000;\n\n            m_lastSpawnTime = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n            bots.DoSpawn = false;\n\n            LeftToSpawn--;\n            bots.Ship = bot; // Bot can be null (bot cant be placed, so won't be spawned)\n            bots.FirstSpawned = true;\n\n            MyScriptWrapper.SpawnpointBotSpawned(this, bot);\n\n        }\n\n        public override void UpdateBeforeSimulation()\n        {\n            if (MyGuiScreenGamePlay.Static.IsEditorActive() && !MyGuiScreenGamePlay.Static.IsIngameEditorActive())\n            {\n                base.UpdateBeforeSimulation();\n                return;\n            }\n\n            if (!IsDummy)\n            {\n                // normal spawn or if we can spawn whole group\n                bool spawnAllowed = m_spawnActivated;\n\n                // Spawn in groups\n                if (SpawnInGroups && spawnAllowed)\n                {\n                    foreach (Bot bot in m_botShips)\n                    {\n                        if ((bot.Ship != null && !bot.DoSpawn) || MyMinerGame.TotalGamePlayTimeInMilliseconds - bot.SpawnTime <= GetRespawnTime(bot))\n                        {\n                            spawnAllowed = false;\n                            break;\n                        }\n                    }\n\n                    if (spawnAllowed)\n                    {\n                        foreach (Bot bots in m_botShips) bots.DoSpawn = true;\n                    }\n                    else\n                    {\n                        foreach (Bot bots in m_botShips)\n                        {\n                            if (bots.DoSpawn)\n                            {\n                                spawnAllowed = true;\n                                break;\n                            }\n                        }\n                    }\n                }\n\n                // Check if spawnpoint is visible\n                if (MyFakes.ENABLE_VISIBLE_SPAWNPOINT_DEACTIVATION &&\n                    spawnAllowed && LeftToSpawn != 0)\n                {\n                    MyLine line = new MyLine(MySession.PlayerShip.GetPosition(), GetPosition());\n                    if (line.Length < 1000)\n                    {\n                        BoundingSphere boundingSphere = WorldVolume;\n                        if (MyCamera.IsInFrustum(ref boundingSphere))\n                        {\n                            var intersection = MyEntities.GetAnyIntersectionWithLine(ref line, MySession.PlayerShip, null, true, true, false, true);\n\n                            spawnAllowed = intersection.HasValue;\n                        }\n                    }\n                }\n\n                // Apply limiters\n                foreach (var limiter in m_limiters)\n                {\n                    if (limiter.CurrentBotCount >= limiter.MaxBotCount)\n                        spawnAllowed = false;\n                }\n            \n                //Limit max count of spawned ships to 5\n                for (int c = 0; c < Math.Min(m_botShips.Count, MAX_SPAWN_COUNT); c++)\n                {\n                    Bot bot = m_botShips[c];\n                    // Only spawn when ships can be spawned\n                    spawnAllowed &= LeftToSpawn != 0;\n\n                    if (spawnAllowed)\n                    {\n                        //check if we can respawn ship\n                        if (m_botShips[c].Ship == null &&\n                            MyMinerGame.TotalGamePlayTimeInMilliseconds - bot.SpawnTime > GetRespawnTime(bot) &&\n                            MyMinerGame.TotalGamePlayTimeInMilliseconds - m_lastSpawnTime > MIN_TIME_BETWEEN_BOT_SPAWN)\n                        {\n                            SpawnShip(c);\n\n                            //Reset also when no bot was created, to avoid creation in each frame again and again..\n                            if (m_botShips[c].Ship == null)\n                            {\n                                bot.SpawnTime = MyMinerGame.TotalGamePlayTimeInMilliseconds; // reset timer\n                            }\n                        }\n                    }\n                }\n            }\n\n            for (int c = 0; c < m_botShips.Count; c++)\n            {\n                Bot bot = m_botShips[c];\n\n                //reset spawning time\n                if (bot.Ship != null)\n                {\n                    bot.SpawnTime = MyMinerGame.TotalGamePlayTimeInMilliseconds; // reset timer\n                }\n\n                //dereference dead ship\n                if (bot.Ship != null && bot.Ship.IsDead())\n                {\n                    bot.Ship = null;\n                    bot.SpawnTime = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n                }\n            }\n            FirstSpawnDone = true;\n\n\n            if (!m_allKilledEventRaised && LeftToSpawn == 0)\n            {\n                bool allKilled = true;\n                foreach (var bot in m_botShips)\n                {\n                    if (bot.Ship != null && !bot.Ship.IsDead())\n                    {\n                        allKilled = false;\n                    }\n                }\n                if (allKilled)\n                {\n                    MyScriptWrapper.OnSpawnpointBotsKilled(this);\n                    m_allKilledEventRaised = true;\n                }\n            }\n\n            base.UpdateBeforeSimulation();\n        }\n\n\n        public override bool Draw(MyRenderObject renderObject)\n        {\n            return base.Draw(renderObject);\n        }\n\n        public override bool DebugDraw()\n        {\n            if (MyGuiScreenGamePlay.Static.IsEditorActive() && !MyGuiScreenGamePlay.Static.IsIngameEditorActive())\n            {\n                Matrix worldMatrix = WorldMatrix;\n                Vector4 sphereColor = new Vector4(0, 0.6f, 0.75f, 0.4f);\n                BoundingSphere localSphere = new BoundingSphere(WorldMatrix.Translation, BoundingSphereRadius);\n                MySimpleObjectDraw.DrawTransparentSphere(ref worldMatrix, localSphere.Radius, ref sphereColor, true, 12);\n            }\n            return base.DebugDraw();\n        }\n\n        protected override MyMwcObjectBuilder_Base GetObjectBuilderInternal(bool getExactCopy)\n        {\n            MyMwcObjectBuilder_SpawnPoint objectBuilder = (MyMwcObjectBuilder_SpawnPoint)base.GetObjectBuilderInternal(getExactCopy);\n\n            objectBuilder.SpawnInGroups = SpawnInGroups;\n            objectBuilder.SpawnCount = LeftToSpawn;\n            objectBuilder.FirstSpawnTimer = FirstSpawnTimer;\n            objectBuilder.RespawnTimer = RespawnTimer;\n            objectBuilder.BoundingRadius = BoundingSphereRadius;\n            objectBuilder.ShipTemplates = new List<MyMwcObjectBuilder_SmallShip_Bot>();\n            objectBuilder.Faction = Faction;\n            objectBuilder.WayPointPath = m_wayPointPath;\n            objectBuilder.Activated = m_spawnActivated;\n            objectBuilder.PatrolMode = PatrolMode;\n\n            foreach (Bot bot in m_botShips)\n            {\n                if (bot.Builder.Inventory == null)\n                    bot.Builder.Inventory = new MyMwcObjectBuilder_Inventory(new List<MyMwcObjectBuilder_InventoryItem>(), MyInventory.DEFAULT_MAX_ITEMS);\n                objectBuilder.ShipTemplates.Add(bot.Builder);\n            }\n\n            return objectBuilder;\n        }\n\n        private float GetRespawnTime(Bot bot)\n        {\n            return bot.FirstSpawned ? RespawnTimer : FirstSpawnTimer;\n        }\n\n        public override bool GetIntersectionWithLine(ref MyLine line, out Vector3? v, bool useCollisionModel = true, IntersectionFlags flags = IntersectionFlags.ALL_TRIANGLES)\n        {\n            BoundingSphere boundingSphere = new BoundingSphere(GetPosition(), BoundingSphereRadius);\n            Ray ray = new Ray(line.From, line.Direction);\n\n            float? result = ray.Intersects(boundingSphere);\n            v = result.HasValue ? ray.Position + ray.Direction * result.Value : (Vector3?)null;\n\n            return result.HasValue;\n        }\n\n        public void SetWayPointPath(String name)\n        {\n            m_wayPointPath = name;\n        }\n\n        public string GetWaypointPath()\n        {\n            return m_wayPointPath;\n        }\n\n        public void Activate()\n        {\n            bool changed = m_spawnActivated != true;\n            m_spawnActivated = true;\n            FirstSpawnDone = false;\n            foreach (var botShip in m_botShips)\n            {\n                botShip.SpawnTime = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n            }\n\n            if (changed && OnActivatedChanged != null)\n                OnActivatedChanged(this);\n        }\n\n        public void Deactivate()\n        {\n            bool changed = m_spawnActivated != false;\n            m_spawnActivated = false;\n\n            if (changed && OnActivatedChanged != null)\n                OnActivatedChanged(this);\n        }\n\n        public bool IsActive()\n        {\n            return m_spawnActivated;\n        }\n\n        public List<Bot> GetBots()\n        {\n            return m_botShips;\n        }\n\n        public MySmallShip GetLeader() \n        {            \n            foreach (Bot bot in m_botShips) \n            {\n                if (bot.Ship != null && !bot.Ship.IsDead() && bot.Ship.Leader == null) \n                {\n                    return bot.Ship;\n                }\n            }\n            return null;\n        }\n\n        public bool AllBotsKilled()\n        {\n            return m_allKilledEventRaised;\n        }\n\n        public override void PreloadForDraw()\n        {\n            base.PreloadForDraw();\n\n            foreach (Bot bot in m_botShips)\n            {\n                MySmallShipBot ship = CreateBotFromBuilder(bot.Builder, Vector3.Zero);\n                ship.PreloadForDraw();\n                ship.Physics.Enabled = false;\n                ship.MarkForClose();\n            }\n        }\n\n        public int GetShipCount()\n        {\n         //   if (!firstSpawnDone)\n           //     return m_botShips.Count;\n\n            int count = 0;\n            foreach (var botShip in m_botShips)\n            {\n                if (botShip.Ship != null && !botShip.Ship.IsDead())\n                {\n                    ++count;\n                }\n            }\n\n            return count;\n        }\n\n        public override void Link()\n        {\n            base.Link();\n\n            foreach (var nb in m_botShips)\n            {\n                nb.Builder.OwnerId = this.EntityId.Value.NumericValue;\n            }\n        }\n    }\n\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Tools/MyContactDrill.cs",
    "content": "﻿using System.Text;\nusing KeenSoftwareHouse.Library.Memory;\nusing MinerWarsMath;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.TransparentGeometry.Particles;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Voxels;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.Managers.Session;\n\nnamespace MinerWars.AppCode.Game.Entities\n{\n    abstract class MyContactDrill : MyDrillBase\n    {\n        protected float m_rotatingSpeed;\n        protected float m_maxRotatingSpeedDrilling;\n        protected float m_maxRotatingSpeedIdle;\n\n        protected Vector3 m_fakeSpherePositionLocal;  //  Fake sphere position relative to ship\n        protected Vector3 m_fakeSpherePositionTransformed;  //  Fake sphere position in world coordinates\n        protected BoundingSphere m_fakeCollisionSphere;\n\n        protected float m_lastTimeDrilled;\n        protected float m_lastTimeDrillNotCollidedWithVoxelMapInMiliseconds;\n        protected float m_lastTimeParticlesAdded;\n\n        public override void Init(StringBuilder hudLabelText, MySmallShip parentObject,\n            Vector3 position, Vector3 forwardVector, Vector3 upVector,\n            MyMwcObjectBuilder_SmallShip_Weapon objectBuilder)\n        {\n            base.Init(hudLabelText, parentObject,\n                      position, forwardVector, upVector,\n                      objectBuilder);\n\n            m_rotatingSpeed = 0;\n            m_ejectedDistance = 0;\n        }\n\n        public override bool Shot(MyMwcObjectBuilder_SmallShip_Ammo usedAmmo)\n        {\n            if (!base.Shot(usedAmmo))\n                return false;\n\n\n            return true;\n        }\n\n        public override bool Eject()\n        {\n            if (!base.Eject())\n                return false;\n\n            m_rotatingSpeed = 0;\n\n            return true;\n        }\n\n        public override void UpdateAfterSimulation()\n        {\n            base.UpdateAfterSimulation();\n\n            CalculateRotationSpeed();\n\n            //  Transform head position into world space\n            Matrix worldMatrix = Parent.WorldMatrix;\n            m_fakeSpherePositionLocal = LocalMatrix.Translation + 1.2f * m_range * m_modelLod0.BoundingBox.Size().Z * LocalMatrix.Forward;\n            m_fakeSpherePositionTransformed = MyUtils.GetTransform(m_fakeSpherePositionLocal, ref worldMatrix);\n\n            if (CurrentState != MyDrillStateEnum.Drilling)\n                m_lastTimeDrillNotCollidedWithVoxelMapInMiliseconds = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n        }\n\n        protected override void Drill()\n        {\n            //  Sphere which is used to make tunnel to voxel and sphere for testing collision with voxel\n            m_fakeCollisionSphere = new BoundingSphere(m_fakeSpherePositionTransformed, m_radius);\n            //  Check for collision with drill and world\n            //MyEntity collisionResult = MyEntities.GetIntersectionWithSphere(ref m_fakeCollisionSphere, this, Parent, false, true);\n            // bSphere collision doesn't work - the sphere is tested against LOD0 model, but it is hidden inside the COL model and the bSphere is too small to reach it - so I use line instead\n\n            MyEntity collisionResult = null;\n            MyLine line;\n\n            if (MySession.Is25DSector)\n            {\n                line = new MyLine(m_positionMuzzleInWorldSpace - 10 * WorldMatrix.Forward, m_positionMuzzleInWorldSpace + 20 * WorldMatrix.Forward, true);\n            }\n            else\n                line = new MyLine(m_positionMuzzleInWorldSpace - 10 * WorldMatrix.Forward, m_positionMuzzleInWorldSpace + 5 * WorldMatrix.Forward, true);\n\n            MyIntersectionResultLineTriangleEx? intersection = MyEntities.GetIntersectionWithLine(ref line, Parent, this, true, true);\n            if (intersection != null && intersection.Value.Entity.Physics != null)\n            {\n                collisionResult = intersection.Value.Entity;\n            }\n\n            if (!(collisionResult is MyVoxelMap))\n            {\n                m_lastTimeDrillNotCollidedWithVoxelMapInMiliseconds = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n\n                if (!MySession.Is25DSector)\n                {\n                    ((MySmallShip)Parent).IncreaseHeadShake(MyDrillDeviceConstants.SHAKE_DURING_ROTATION);\n                }\n\n                StopDustEffect();\n\n                if (collisionResult != null)\n                {\n                    var effect = MyParticlesManager.CreateParticleEffect((int) MyParticleEffectsIDEnum.MaterialHit_Autocannon_Metal);\n                    effect.WorldMatrix = Matrix.CreateTranslation(m_fakeCollisionSphere.Center);\n                    collisionResult.DoDamage(0, m_damage * MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS, 0, MyDamageType.Drill, MyAmmoType.Basic, Parent);\n                }\n            }\n            //  Display particles when we are in contact with voxel\n            else\n            {\n                if (m_dustEffect == null)\n                {\n                    m_dustEffect = MyParticlesManager.CreateParticleEffect((int)MyParticleEffectsIDEnum.Smoke_DrillDust);\n                }\n                m_dustEffect.WorldMatrix = Matrix.CreateTranslation(m_fakeSpherePositionTransformed);\n                m_dustEffect.UserScale = MySession.Is25DSector ? 3 : 1;\n                ((MySmallShip)Parent).IncreaseHeadShake(MyDrillDeviceConstants.SHAKE_DURING_IN_VOXELS);\n            }\n\n            //  Play sound if there is collision with voxel \n            if (collisionResult != null)\n            {\n                if (collisionResult is MyStaticAsteroid)\n                {\n                    if (!collisionResult.IsDestructible)\n                    {\n                        MinerWars.AppCode.Game.HUD.MyHud.ShowIndestructableAsteroidNotification();\n                    }\n                }\n                StartDrillingCue(collisionResult is MyVoxelMap);\n                StopMovingCue();\n            }\n            else\n            {\n                StartMovingCue();\n                StopDrillingCue();                \n            }\n\n            //  We found voxel so lets make tunel into it\n            using (var voxelMapsFound = PoolList<MyVoxelMap>.Get())\n            {\n                bool drilled = false;\n                bool drilledSomeDestructibleContent = false;\n                MyVoxelMaps.GetListOfVoxelMapsWhoseBoundingSphereIntersectsSphere(ref m_fakeCollisionSphere, voxelMapsFound, null);\n\n                int drillInterval = MySession.Is25DSector ? 100 : (int)MyDrillDeviceConstants.DRILL_INTERVAL_IN_MILISECONDS;\n                int timerToDrillInterval = MySession.Is25DSector ? 100 : (int)MyDrillDeviceConstants.TIME_TO_DRILL_VOXEL_IN_MILISECONDS;\n\n                foreach (MyVoxelMap voxelMap in voxelMapsFound)\n                {\n\n                    if ((collisionResult is MyVoxelMap) && ((MyMinerGame.TotalGamePlayTimeInMilliseconds - m_lastTimeDrilled) > drillInterval)\n                        && (MyMinerGame.TotalGamePlayTimeInMilliseconds - m_lastTimeDrillNotCollidedWithVoxelMapInMiliseconds) > timerToDrillInterval)\n                    {\n                        drilled = true;\n                        float rangeStep = 0;\n                        float radius = GetRadiusNeededForTunel();\n                        BoundingSphere bigSphereForTunnel = new BoundingSphere(m_fakeCollisionSphere.Center, radius);\n                        \n                        while (rangeStep < m_range)\n                        {\n                            MyMwcVector3Int exactCenterOfDrilling = voxelMap.GetVoxelCoordinateFromMeters(bigSphereForTunnel.Center);\n\n                            // we don't want to drill indestructible voxels or empty space\n                            if (voxelMap.IsVoxelInVoxelMap(ref exactCenterOfDrilling) && voxelMap.GetVoxelMaterialIndestructibleContent(ref exactCenterOfDrilling) == MyVoxelConstants.VOXEL_CONTENT_FULL)\n                            {\n                                break;\n                            }\n                            else\n                            {\n                                drilledSomeDestructibleContent = true;\n                            }\n                            \n                            CutOutFromVoxel(voxelMap, ref bigSphereForTunnel);\n\n                            bigSphereForTunnel.Center += 2 * WorldMatrix.Forward;\n\n                            rangeStep += 1;\n                        }\n                    }\n                }\n                if (drilled)\n                {\n                    m_lastTimeDrilled = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n                    if (!drilledSomeDestructibleContent)\n                    {\n                        HUD.MyHud.ShowIndestructableAsteroidNotification();\n                    }\n                }\n            }\n        }\n\n        public override bool DebugDraw()\n        {\n            if (!base.DebugDraw())\n                return false;\n\n            //MyDebugDraw.DrawSphereWireframe(m_fakeCollisionSphere.Center, m_fakeCollisionSphere.Radius, Vector3.One, 1.0f);\n\n            //MyLine line = new MyLine(m_positionMuzzleInWorldSpace - 10 * WorldMatrix.Forward, m_positionMuzzleInWorldSpace + 5 * WorldMatrix.Forward, true);\n            //MyDebugDraw.DrawLine3D(line.From, line.To, Color.White, Color.White);\n\n            return true;\n        }\n\n        protected void CalculateRotationSpeed()\n        {\n            if (MySession.Is25DSector)\n                m_maxRotatingSpeedIdle = 10.4f;\n\n            switch (CurrentState)\n            {\n                case MyDrillStateEnum.Activated:\n                    {\n                        if (m_rotatingSpeed < m_maxRotatingSpeedIdle)\n                        {\n                            m_rotatingSpeed += MyDrillDeviceConstants.ROTATION_ACCELERATION;\n                            m_rotatingSpeed = MathHelper.Clamp(m_rotatingSpeed, 0, m_maxRotatingSpeedIdle);\n                        }\n                        else\n                        {\n                            m_rotatingSpeed -= MyDrillDeviceConstants.ROTATION_DECELERATION;\n                            m_rotatingSpeed = MathHelper.Max(m_rotatingSpeed, m_maxRotatingSpeedIdle);\n                        }\n\n                        if (m_rotatingSpeed > m_maxRotatingSpeedIdle)\n                        {\n                            StartMovingCue();\n                        }\n                        else\n                        {\n                            StopMovingCue();\n                            if (!MySession.Is25DSector)\n                            {\n                                StartIdleCue();\n                            }\n                            else\n                            {\n                                StopAllSounds();\n\n                                //  if (MyFakes.MW25D)\n                                    CurrentState = MyDrillStateEnum.Deactivated;\n\n                            }\n                        }\n                        break;\n                    }\n                case MyDrillStateEnum.Drilling:\n                    {\n                        m_rotatingSpeed += MyDrillDeviceConstants.ROTATION_ACCELERATION;\n                        m_rotatingSpeed = MathHelper.Clamp(m_rotatingSpeed, 0, m_maxRotatingSpeedDrilling);\n                        break;\n                    }\n                case MyDrillStateEnum.Deactivated:\n                    {\n                        m_rotatingSpeed -= MyDrillDeviceConstants.ROTATION_DECELERATION;\n                        m_rotatingSpeed = MathHelper.Clamp(m_rotatingSpeed, 0, m_maxRotatingSpeedDrilling);\n                        break;\n                    }\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Tools/MyCrusherDrill.cs",
    "content": "namespace MinerWars.AppCode.Game.Entities\n{\n    using System;\n    using System.Text;\n    using App;\n    using Audio;\n    using CommonLIB.AppCode.ObjectBuilders.SubObjects;\n    using CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\n    using MinerWars.AppCode.Game.Decals;\n    using MinerWarsMath;\n    using Models;\n    using TransparentGeometry;\n    using TransparentGeometry.Particles;\n    using SubObjects;\n    using Utils;\n    using Voxels;\n    using KeenSoftwareHouse.Library.Memory;\n    using MinerWars.CommonLIB.AppCode.ObjectBuilders;\n\n    class MyCrusherDrill : MyContactDrill\n    {\n        private const int DRILL_BIT_COUNT = 9;\n\n        MyDrillBit[] m_drillBits;\n        Matrix m_rotationMatrix = Matrix.Identity;\n\n        public override void Init(StringBuilder hudLabelText, MySmallShip parentObject,\n            Vector3 position, Vector3 forwardVector, Vector3 upVector,\n            MyMwcObjectBuilder_SmallShip_Weapon objectBuilder)\n        {\n            m_model = MyModelsEnum.Drill_Base;\n            m_movingCueEnum = MySoundCuesEnum.VehToolCrusherDrillLoop3d;\n            m_movingCueReleaseEnum = MySoundCuesEnum.VehToolCrusherDrillRelease3d;\n            m_drillCueEnum = MySoundCuesEnum.VehToolCrusherDrillColliding3d;\n            m_drillOtherCueEnum = MySoundCuesEnum.VehToolCrusherDrillCollidingOther3d;\n            m_drillOtherCueReleaseEnum = MySoundCuesEnum.VehToolCrusherDrillCollidingOtherRelease3d;\n            m_drillCueReleaseEnum = MySoundCuesEnum.VehToolCrusherDrillCollidingRelease3d;\n            m_idleCueEnum = MySoundCuesEnum.VehToolCrusherDrillIdle3d;\n\n            base.Init(hudLabelText, parentObject, position, forwardVector, upVector, objectBuilder);\n\n            m_minDrillingDuration = MyCrusherDrillDeviceConstants.MIN_DRILLING_DURATION;\n            m_range = MyCrusherDrillDeviceConstants.RANGE;\n            m_radius = MyCrusherDrillDeviceConstants.RADIUS;\n            m_damage = MyCrusherDrillDeviceConstants.DAMAGE_PER_SECOND;\n            m_maxRotatingSpeedDrilling = MyCrusherDrillDeviceConstants.MAX_ROTATING_SPEED_DRILLING;\n            m_maxRotatingSpeedIdle = MyCrusherDrillDeviceConstants.MAX_ROTATING_SPEED_IDLE;\n\n            //Create Drill Bits\n            m_drillBits = new MyDrillBit[DRILL_BIT_COUNT];\n            for (int i = 0; i < DRILL_BIT_COUNT; i++)\n            {\n                m_drillBits[i] = new MyDrillBit();\n            }\n\n            //Init Drill Bits\n            Vector3 gear1Offset = new Vector3(0, 0, 0.05f);\n            Vector3 gear2Offset = new Vector3(0, 0, 0.15f);\n            Vector3 gear3Offset = new Vector3(0, 0, 0.30f);\n\n            const float FIRST_ROTATE_SPEED = 0.2f * MathHelper.TwoPi * MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS;\n            const float SECOND_ROTATE_SPEED = 0.5f * -FIRST_ROTATE_SPEED;\n            const float THIRD_ROTATE_SPEED = 1.25f * FIRST_ROTATE_SPEED;\n\n            Matrix bit01 = MyMath.NormalizeMatrix(ModelLod0.Dummies[\"BIT01\"].Matrix);\n            Matrix bit02 = MyMath.NormalizeMatrix(ModelLod0.Dummies[\"BIT02\"].Matrix);\n            Matrix bit03 = MyMath.NormalizeMatrix(ModelLod0.Dummies[\"BIT03\"].Matrix);\n\n            m_drillBits[0].Init(null, bit01, gear1Offset, FIRST_ROTATE_SPEED, this, MyModelsEnum.Drill_Gear1);\n            m_drillBits[1].Init(null, bit01, gear2Offset, SECOND_ROTATE_SPEED, this, MyModelsEnum.Drill_Gear2);\n            m_drillBits[2].Init(null, bit01, gear3Offset, THIRD_ROTATE_SPEED, this, MyModelsEnum.Drill_Gear3);\n            m_drillBits[3].Init(null, bit02, gear1Offset, FIRST_ROTATE_SPEED, this, MyModelsEnum.Drill_Gear1);\n            m_drillBits[4].Init(null, bit02, gear2Offset, SECOND_ROTATE_SPEED, this, MyModelsEnum.Drill_Gear2);\n            m_drillBits[5].Init(null, bit02, gear3Offset, THIRD_ROTATE_SPEED, this, MyModelsEnum.Drill_Gear3);\n            m_drillBits[6].Init(null, bit03, gear1Offset, FIRST_ROTATE_SPEED, this, MyModelsEnum.Drill_Gear1);\n            m_drillBits[7].Init(null, bit03, gear2Offset, SECOND_ROTATE_SPEED, this, MyModelsEnum.Drill_Gear2);\n            m_drillBits[8].Init(null, bit03, gear3Offset, THIRD_ROTATE_SPEED, this, MyModelsEnum.Drill_Gear3);\n        }\n\n        public override void DebugDrawNormalVectors()\n        {\n            if (IsVisible())\n            {\n                base.DebugDrawNormalVectors();\n\n                if (m_drillBits == null)\n                    return;\n\n                for (int i = 0; i < DRILL_BIT_COUNT; i++)\n                {\n                    m_drillBits[i].DebugDrawNormalVectors();\n                }\n            }\n        }\n\n        public override void UpdateBeforeSimulation()\n        {\n            if (Visible && Activated)\n            {\n                base.UpdateBeforeSimulation();\n            }\n        }\n\n        public override void UpdateAfterSimulation()\n        {\n            //  Change world matrix by rotation (order of matrix multiplications is important!!!)\n            var rotationMatrix = Matrix.CreateRotationZ(m_rotatingSpeed * MyDrillDeviceConstants.ROTATION_SPEED_PER_SECOND * MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS);\n            LocalMatrix = rotationMatrix * LocalMatrix;\n            m_rotationMatrix = rotationMatrix * m_rotationMatrix;\n\n            base.UpdateAfterSimulation();\n\n            if (CurrentState == MyDrillStateEnum.InsideShip)\n                return;\n\n            MyAudio.UpdateCueRotationSpeed(m_drillCue, ((m_rotatingSpeed - m_maxRotatingSpeedIdle) / (m_maxRotatingSpeedDrilling - m_maxRotatingSpeedIdle) * 100));\n            MyAudio.UpdateCueRotationSpeed(m_movingCue, ((m_rotatingSpeed - m_maxRotatingSpeedIdle) / (m_maxRotatingSpeedDrilling - m_maxRotatingSpeedIdle) * 100));\n            MyAudio.UpdateCueRotationSpeed(m_movingCueRelease, ((m_rotatingSpeed - m_maxRotatingSpeedIdle) / (m_maxRotatingSpeedDrilling - m_maxRotatingSpeedIdle) * 100));\n            MyAudio.UpdateCueRotationSpeed(m_idleCue, ((m_rotatingSpeed - m_maxRotatingSpeedIdle) / (m_maxRotatingSpeedDrilling - m_maxRotatingSpeedIdle) * 100));\n\n            if (m_drillBits != null)\n            {\n                for (int i = 0; i < DRILL_BIT_COUNT; i++)\n                {\n                    m_drillBits[i].SetWorldMatrixForCockpit(ref m_worldMatrixForRenderingFromCockpitView);\n                }\n            }\n        }\n\n        protected override MyMwcObjectBuilder_Base GetObjectBuilderInternal(bool getExactCopy)\n        {\n            MyMwcObjectBuilder_Base objectBuilder = base.GetObjectBuilderInternal(getExactCopy);\n            if (objectBuilder == null)\n            {\n                objectBuilder = new MyMwcObjectBuilder_SmallShip_Weapon(WeaponType = MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Crusher);\n            }\n            return objectBuilder;\n        }\n\n        protected override Matrix GetLocalMatrixForCockpitView()\n        {\n            return m_rotationMatrix * base.GetLocalMatrixForCockpitView();\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Tools/MyCrusherDrillBit.cs",
    "content": "﻿namespace MinerWars.AppCode.Game.Entities.SubObjects\n{\n    using System.Text;\n    using MinerWarsMath;\n    using Models;\n    using Utils;\n    using GUI;\n\n    class MyDrillBit : MyEntity\n    {\n        float m_rotateSpeed;\n        Matrix m_worldMatrixForRenderingFromCockpitView;\n\n        public virtual void Init(StringBuilder hudLabelText, Matrix localMatrix, Vector3 offset, float rotateSpeed, MyCrusherDrill parentObject, MyModelsEnum model)\n        {\n            base.Init(hudLabelText, model, null, parentObject, null, null);\n            m_rotateSpeed = rotateSpeed;\n            this.LocalMatrix = Matrix.CreateTranslation(offset) * localMatrix;\n            Save = false;\n        }\n\n        public void SetWorldMatrixForCockpit(ref Matrix worldMatrixForRenderingFromCockpitView)\n        {\n            m_worldMatrixForRenderingFromCockpitView = worldMatrixForRenderingFromCockpitView;\n        }\n\n        /// <summary>\n        /// Updates resource.\n        /// </summary>\n        public override void UpdateBeforeSimulation()\n        {\n            base.UpdateBeforeSimulation();\n\n            if (Parent.IsVisible())\n            {\n                Matrix rotationMatrix = Matrix.CreateRotationZ(m_rotateSpeed);// * Matrix.CreateFromYawPitchRoll(m_rotation.Y, m_rotation.X, m_rotation.Z);\n\n                LocalMatrix = rotationMatrix * LocalMatrix;\n            }\n        }\n\n        public override Matrix GetWorldMatrixForDraw()\n        {\n            if (MyGuiScreenGamePlay.Static.CameraAttachedTo == MyCameraAttachedToEnum.PlayerMinerShip && GetTopMostParent() == MinerWars.AppCode.Game.Managers.Session.MySession.PlayerShip)\n            {\n                return Matrix.CreateRotationZ(m_rotateSpeed) * LocalMatrix * m_worldMatrixForRenderingFromCockpitView;\n            }\n\n            return base.GetWorldMatrixForDraw();\n        }\n\n        public override bool DebugDraw()\n        {\n            return false;\n\n            if (!base.DebugDraw())\n                return false;\n\n            MyDebugDraw.DrawAxis(WorldMatrix, 1.0f, 1);            \n\n            return false;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Tools/MyDirectionalDrill.cs",
    "content": "﻿using MinerWarsMath;\nusing MinerWars.AppCode.Game.TransparentGeometry.Particles;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.CommonLIB.AppCode.Utils;\n\nnamespace MinerWars.AppCode.Game.Entities\n{\n    abstract class MyDirectionalDrill : MyDrillBase\n    {\n        protected MyParticleEffect m_directionalEffect;\n        protected MyParticleEffectsIDEnum m_directionalEffectID;\n\n        public override bool Shot(MyMwcObjectBuilder_SmallShip_Ammo usedAmmo)\n        {\n            if (!base.Shot(usedAmmo))\n                return false;\n\n            StartMovingCue();\n\n            return true;\n        }\n\n        public override void UpdateAfterSimulation()\n        {\n            base.UpdateAfterSimulation() ;\n\n            if (CurrentState == MyDrillStateEnum.Drilling)\n            {\n                if (m_directionalEffect == null)\n                {\n                    m_directionalEffect = MyParticlesManager.CreateParticleEffect((int) m_directionalEffectID);\n                }\n                m_directionalEffect.WorldMatrix = Matrix.CreateWorld(\n                    m_positionMuzzleInWorldSpace + MySmallShipConstants.ALL_SMALL_SHIP_MODEL_SCALE * WorldMatrix.Forward, WorldMatrix.Forward, WorldMatrix.Up);\n            }\n            else\n            {\n                if (m_directionalEffect != null)\n                {\n                    m_directionalEffect.Stop();\n                    m_directionalEffect = null;\n                }\n                StopDustEffect();\n            }\n        }\n\n        protected override void Drill()\n        {\n            //  Check for collision with drill and world\n            MyLine line = new MyLine(m_positionMuzzleInWorldSpace, m_positionMuzzleInWorldSpace + 50 * WorldMatrix.Forward, true);\n            //m_positionMuzzleInWorldSpace\n\n            MyIntersectionResultLineTriangleEx? intersection = MyEntities.GetIntersectionWithLine(ref line, Parent, null);\n            if (intersection != null && intersection.Value.Entity.Physics != null)\n            {\n                bool drillUsedForDestructibleContent = false;\n                MyVoxelMap voxelMap = intersection.Value.Entity as MyVoxelMap;\n                StartDrillingCue(voxelMap != null);\n\n                if (voxelMap != null)\n                {\n                    ((MySmallShip)Parent).IncreaseHeadShake(MyDrillDeviceConstants.SHAKE_DURING_IN_VOXELS);\n\n                    //  We found voxel so lets make tunel into it\n                    BoundingSphere bigSphereForTunnel = new BoundingSphere(GetPosition() + 10 * WorldMatrix.Forward, m_radius);\n\n                    for (int i = 0; i < (int)m_range; i++)\n                    {\n                        bigSphereForTunnel.Center = GetPosition() + (10 + i) * WorldMatrix.Forward;\n                        bigSphereForTunnel.Radius = MyMwcUtils.GetRandomFloat(1, MyDrillDeviceConstants.MAX_RADIUS_RANDOM_MULTIPLIER) * m_radius;\n                            \n                        MyMwcVector3Int exactCenterOfDrilling = voxelMap.GetVoxelCoordinateFromMeters(new Vector3(bigSphereForTunnel.Center.X, bigSphereForTunnel.Center.Y, bigSphereForTunnel.Center.Z));\n                            \n                        // we don't want drill indestructible voxels\n                        if (voxelMap.GetVoxelMaterialIndestructibleContent(ref exactCenterOfDrilling) > MyVoxelConstants.VOXEL_CONTENT_EMPTY)                            \n                        {                                                                    \n                            break;\n                        }\n\n                        CutOutFromVoxel(voxelMap, ref bigSphereForTunnel);\n                        \n                        drillUsedForDestructibleContent = true;                            \n                    }\n\n                    if (drillUsedForDestructibleContent)\n                    {\n                        if (m_dustEffect == null)\n                        {\n                            m_dustEffect = MyParticlesManager.CreateParticleEffect((int)MyParticleEffectsIDEnum.Smoke_DrillDust);\n                        }\n                        m_dustEffect.WorldMatrix = Matrix.CreateTranslation(intersection.Value.IntersectionPointInWorldSpace);\n                    }\n                }\n                else\n                {\n                    StopDustEffect();\n\n                    CreateImpactEffect(intersection.Value.IntersectionPointInWorldSpace, intersection.Value.NormalInWorldSpace, MyParticleEffectsIDEnum.MaterialHit_Autocannon_Metal);\n\n                    intersection.Value.Entity.DoDamage(0, m_damage * MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS, 0, MyDamageType.Drill, MyAmmoType.Piercing, Parent);\n                }\n\n                if (!drillUsedForDestructibleContent)                    \n                {\n                    ((MySmallShip)Parent).IncreaseHeadShake(MyDrillDeviceConstants.SHAKE_DURING_ROTATION);\n                    StopDustEffect();\n\n                    if (intersection.Value.Entity != null && !intersection.Value.Entity.IsDestructible)\n                    {\n                        HUD.MyHud.ShowIndestructableAsteroidNotification();                        \n                    }\n                }\n            }\n            else\n            {\n                StopDrillingCue();\n                StopDustEffect();\n            }\n        }\n\n        public override void Close()\n        {\n            base.Close();\n\n            if (m_directionalEffect != null)\n            {\n                m_directionalEffect.Stop();\n                m_directionalEffect = null;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Tools/MyDrillBase.cs",
    "content": "using MinerWars.AppCode.Game.Decals;\nusing MinerWars.AppCode.Game.Voxels;\n\nnamespace MinerWars.AppCode.Game.Entities\n{\n    using System;\n    using System.Text;\n    using App;\n    using Audio;\n    using CommonLIB.AppCode.ObjectBuilders.SubObjects;\n    using CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\n    using MinerWarsMath;\n    \n    using Models;\n    using TransparentGeometry.Particles;\n    using Utils;\n    using Weapons;\n    using Sessions;\n    using CommonLIB.AppCode.Networking.Multiplayer;\n    using MinerWars.AppCode.Game.GUI;\n    using MinerWars.AppCode.Game.Managers.Session;\n\n    public enum MyDrillStateEnum\n    {\n        Drilling,       //  Drill is ejected and ship is drilling (shooting)\n        Activated,      //  Drill was just activated and it starts ejecting and rotating\n        Deactivated,    //  Drill was just deacivated and it starts pulling back and stops rotating\n        InsideShip,     //  Drill is inside miner ship - default state\n    }\n\n\n    /// <summary>\n    /// Base class for drilling devices\n    /// </summary>\n    abstract class MyDrillBase : MySmallShipGunBase\n    {\n        protected int m_lastTimeStarted;\n        protected int m_lastTimeEjected;\n        private MyDrillStateEnum m_currentState;\n\n        protected MySoundCue? m_movingCue;\n        protected MySoundCue? m_movingCueRelease;\n        protected MySoundCue? m_drillCue;\n        protected MySoundCue? m_drillCueRelease;\n        protected MySoundCue? m_idleCue;\n        protected MySoundCue? m_voxelCutCue;\n\n        protected MySoundCuesEnum? m_movingCueEnum;\n        protected MySoundCuesEnum? m_movingCueReleaseEnum;\n        protected MySoundCuesEnum? m_drillCueEnum;\n        protected MySoundCuesEnum? m_drillCueReleaseEnum;\n        protected MySoundCuesEnum? m_drillOtherCueEnum;\n        protected MySoundCuesEnum? m_drillOtherCueReleaseEnum;\n        protected MySoundCuesEnum? m_idleCueEnum;\n\n        protected MyModelsEnum? m_model;\n        protected float m_range;\n        protected float m_radius;\n        protected float m_damage; // can mean dps or damage per hit, depends on type of drill\n\n        protected MyParticleEffect m_dustEffect;\n        protected float m_ejectedDistance;\n        protected float m_maxEjectDistance;\n        protected bool m_fullyEjected;\n        protected int m_minDrillingDuration; // in milliseconds\n\n        readonly Matrix m_localMatrixForDrillCockpit;\n        float m_drillScale = 1;\n\n        protected MyDrillBase()\n        {\n            // Here we set a constant value for the matrix that is used as the local transform\n            // for cockpit-view of all drills\n            m_localMatrixForDrillCockpit = new Matrix(\n                -1, 0, 0, 0,\n                0, -1, 0, 0,\n                0, 0, 1, 0,\n                0, -2.024051f, -2.577045f, 1);\n        }\n\n        public MyDrillStateEnum CurrentState\n        {\n            set\n            {\n                if (m_currentState != value)\n                {\n                    m_currentState = value;\n                    Visible = m_currentState != MyDrillStateEnum.InsideShip;\n\n                    if (MyMultiplayerGameplay.IsRunning && !IsDummy)\n                    {\n                        switch (m_currentState)\n                        {\n                            case MyDrillStateEnum.Activated:\n                                MyMultiplayerGameplay.Static.SpeacialWeaponEvent(MySpecialWeaponEventEnum.DRILL_ACTIVATED, this.WeaponType);\n                                break;\n\n                            case MyDrillStateEnum.Deactivated:\n                                MyMultiplayerGameplay.Static.SpeacialWeaponEvent(MySpecialWeaponEventEnum.DRILL_DEACTIVATED, this.WeaponType);\n                                break;\n\n                            case MyDrillStateEnum.Drilling:\n                                MyMultiplayerGameplay.Static.SpeacialWeaponEvent(MySpecialWeaponEventEnum.DRILL_DRILLING, this.WeaponType);\n                                break;\n                        }\n                    }\n                }\n            }\n            get\n            {\n                return m_currentState;\n            }\n\n        }\n\n        public override void Init(StringBuilder hudLabelText, MySmallShip parentObject,\n            Vector3 position, Vector3 forwardVector, Vector3 upVector,\n            MyMwcObjectBuilder_SmallShip_Weapon objectBuilder)\n        {\n            Init(hudLabelText, m_model, MyMaterialType.METAL, parentObject,\n                position, forwardVector, upVector, objectBuilder);\n\n            m_lastTimeStarted = MyConstants.FAREST_TIME_IN_PAST;\n            m_lastTimeEjected = MyConstants.FAREST_TIME_IN_PAST;\n\n            CurrentState = MyDrillStateEnum.InsideShip;\n\n            m_maxEjectDistance = MyDrillDeviceConstants.EJECT_DISTANCE_MULTIPLIER * ModelLod0.BoundingBoxSize.Z;\n            m_ejectedDistance = 0;\n        }\n\n\n        public override bool Shot(MyMwcObjectBuilder_SmallShip_Ammo usedAmmo)\n        {\n            if (MySession.Is25DSector)\n            {\n                CurrentState = MyDrillStateEnum.Activated;\n            }\n\n            if (!m_fullyEjected || GetParentMinerShip().Fuel <= 0 || !GetParentMinerShip().Config.Engine.On)\n                return false;\n\n            m_lastTimeStarted = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n            CurrentState = MyDrillStateEnum.Drilling;\n\n            return true;\n        }\n\n        public virtual bool Eject()\n        {\n            var ejectedLongAgoEnough = (MyMinerGame.TotalGamePlayTimeInMilliseconds - m_lastTimeEjected) >\n                                       MyDrillDeviceConstants.DRILL_EJECT_INTERVAL_IN_MILISECONDS;\n\n            if (CurrentState == MyDrillStateEnum.InsideShip && ejectedLongAgoEnough)\n            {\n                CurrentState = MyDrillStateEnum.Activated;\n                m_lastTimeEjected = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n                SetDrillScale(0.01f);\n                this.Visible = false;\n                return true;\n            }\n\n            if (CurrentState == MyDrillStateEnum.Activated && m_fullyEjected && ejectedLongAgoEnough)\n            {\n                CurrentState = MyDrillStateEnum.Deactivated;\n                m_lastTimeEjected = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n            }\n\n            return false;\n        }\n\n        void SetDrillScale(float scale)\n        {\n            m_drillScale = Math.Max(scale, 0.01f);\n            Scale = scale;\n        }\n\n        public override void UpdateAfterSimulation()\n        {\n            base.UpdateAfterSimulation();\n\n            // HACK: Multiplayer\n            if (IsDummy && CurrentState == MyDrillStateEnum.Drilling)\n            {\n                Shot(null);\n            }\n\n            switch (CurrentState)\n            {\n                case MyDrillStateEnum.InsideShip:\n                    // If drill isnt active we stop sound that might not be stopped before\n                    StopDustEffect();\n                    StopIdleCue();\n                    return;\n                case MyDrillStateEnum.Deactivated:\n                    PullDrillBack();\n                    return;\n                case MyDrillStateEnum.Activated:\n                    EjectDrill();\n                    break;\n                case MyDrillStateEnum.Drilling:\n                    Drill();\n                    break;\n            }\n\n            if ((m_drillCue != null) && m_drillCue.Value.IsPlaying)\n            {\n                MyAudio.UpdateCuePosition(m_drillCue, WorldMatrix.Translation,\n                    WorldMatrix.Forward, WorldMatrix.Up, this.Parent.Physics.LinearVelocity);\n            }\n                 \n            if ((MyMinerGame.TotalGamePlayTimeInMilliseconds - m_lastTimeStarted) > 100)\n            {\n                CurrentState = MyDrillStateEnum.Activated;\n                StopDrillingCue();\n                StopDustEffect();\n                //StopMovingCue();\n            }    \n        }\n\n        protected void StopDustEffect()\n        {\n            if (m_dustEffect != null)\n            {\n                m_dustEffect.Stop();\n                m_dustEffect = null;\n            }\n        }\n\n        protected abstract void Drill();\n\n        protected virtual void EjectDrill()\n        {\n            this.Visible = true;\n            m_ejectedDistance += MyDrillDeviceConstants.DRILL_EJECTING_SPEED;\n            if (m_ejectedDistance < m_maxEjectDistance)\n            {\n                SetDrillScale(m_ejectedDistance / m_maxEjectDistance);\n            }\n            else\n            {\n                m_ejectedDistance = m_maxEjectDistance;\n                if (!m_fullyEjected)\n                {\n                    StartIdleCue();\n                }\n                m_fullyEjected = true;\n                \n                SetDrillScale(1);\n            }\n        }\n\n        protected virtual void PullDrillBack()\n        {\n            StopDrillingCue();\n            StopMovingCue();\n\n            m_fullyEjected = false;\n            m_ejectedDistance -= MyDrillDeviceConstants.DRILL_EJECTING_SPEED;\n            if (m_ejectedDistance > 0.01f)\n            {\n                SetDrillScale(m_ejectedDistance / m_maxEjectDistance);\n            }\n            else\n            {\n                m_ejectedDistance = 0;\n                CurrentState = MyDrillStateEnum.InsideShip;\n            }\n        }\n\n        protected void StartIdleCue()\n        {\n            if (m_idleCueEnum != null && (m_idleCue == null || m_idleCue.Value.IsPlaying == false))\n            {\n                m_idleCue = MyAudio.AddCue2dOr3d(Parent, m_idleCueEnum.Value, WorldMatrix.Translation,\n                    WorldMatrix.Forward, WorldMatrix.Up, this.Parent.Physics.LinearVelocity);\n            }\n            /*if ((m_drillCueRelease != null) && m_drillCueRelease.Value.IsPlaying)\n            {\n                m_drillCueRelease.Value.Stop(SharpDX.XACT3.StopFlags.Release);\n            }*/\n            StopDrillingCue();\n            \n        }\n\n        protected void StopIdleCue()\n        {\n            if ((m_idleCue != null) && m_idleCue.Value.IsPlaying)\n            {\n                if (!MySession.Is25DSector)\n                    m_idleCue.Value.Stop(SharpDX.XACT3.StopFlags.Immediate);\n            }\n        }\n\n        protected void StartDrillingCue(bool mining)\n        {\n            if (!mining && (m_drillOtherCueEnum.HasValue && (m_drillCue == null || !m_drillCue.Value.IsPlaying)))\n            {\n                m_drillCue = MyAudio.AddCue2dOr3d(Parent, m_drillOtherCueEnum.Value, WorldMatrix.Translation,\n                    WorldMatrix.Forward, WorldMatrix.Up, this.Parent.Physics.LinearVelocity);\n            }\n            else if (m_drillCueEnum.HasValue && (m_drillCue == null || !m_drillCue.Value.IsPlaying) || MySession.Is25DSector)\n            {\n                if (!MySession.Is25DSector)\n                {\n                    m_drillCue = MyAudio.AddCue2dOr3d(Parent, m_drillCueEnum.Value, WorldMatrix.Translation,\n                        WorldMatrix.Forward, WorldMatrix.Up, this.Parent.Physics.LinearVelocity);\n                }\n            }    \n            StopIdleCue();\n        }\n\n        protected void StartMovingCue()\n        {\n            if (m_movingCueEnum != null && (m_movingCue == null) || !m_movingCue.Value.IsPlaying)\n            {\n                m_movingCue = MyAudio.AddCue2dOr3d(Parent, m_movingCueEnum.Value,\n                    Parent.GetPosition(), Parent.WorldMatrix.Forward, Parent.WorldMatrix.Up, Parent.Physics.LinearVelocity);\n            }\n            if ((m_movingCueRelease != null) && m_movingCueRelease.Value.IsPlaying)\n            {\n                m_movingCueRelease.Value.Stop(SharpDX.XACT3.StopFlags.Immediate);\n            }\n            StopIdleCue();\n        }\n\n        protected void StopDrillingCue()\n        {\n            if (m_drillCue != null && m_drillCue.Value.IsPlaying)\n            {\n                m_drillCue.Value.Stop(SharpDX.XACT3.StopFlags.Release);\n                if (m_drillCueReleaseEnum != null)\n                {\n                    MySoundCuesEnum releaseCue;\n                    if ( (m_drillCue.Value.CueEnum == m_drillOtherCueEnum || \n                          m_drillCue.Value.CueEnum == MyAudio.GetVersion2D(m_drillOtherCueEnum.Value)) &&\n                        m_drillOtherCueReleaseEnum.HasValue)\n                    {\n                        releaseCue = m_drillOtherCueReleaseEnum.Value;\n                    }\n                    else\n                    {\n                        releaseCue = m_drillCueReleaseEnum.Value;\n                    }\n\n                    if (m_drillCueRelease == null || !m_drillCueRelease.Value.IsPlaying)\n                    {\n                        m_drillCueRelease = MyAudio.AddCue2dOr3d(Parent, releaseCue, WorldMatrix.Translation, WorldMatrix.Forward,\n                            WorldMatrix.Up, this.Parent.Physics.LinearVelocity);\n                    }\n                }\n            }\n        }\n\n        protected void StopMovingCue()\n        {\n            if ((m_movingCue != null)/* && m_movingCue.Value.IsPlaying*/)\n            {\n                m_movingCue.Value.Stop(SharpDX.XACT3.StopFlags.Immediate);\n                if (m_movingCueReleaseEnum != null)\n                {\n                    m_movingCueRelease = MyAudio.AddCue2dOr3d(Parent, m_movingCueReleaseEnum.Value,\n                        Parent.GetPosition(), Parent.WorldMatrix.Forward, Parent.WorldMatrix.Up, Parent.Physics.LinearVelocity);\n                }\n            }\n        }\n\n        public override void StopAllSounds()\n        {\n            base.StopAllSounds();\n\n            if ((m_movingCue != null) && m_movingCue.Value.IsPlaying)\n            {\n                m_movingCue.Value.Stop(SharpDX.XACT3.StopFlags.Immediate);\n            }\n\n            if ((m_movingCueRelease != null) && m_movingCueRelease.Value.IsPlaying)\n            {\n                m_movingCueRelease.Value.Stop(SharpDX.XACT3.StopFlags.Immediate);\n            }\n\n            if ((m_drillCue != null) && m_drillCue.Value.IsPlaying)\n            {\n                m_drillCue.Value.Stop(SharpDX.XACT3.StopFlags.Immediate);\n            }\n\n            if ((m_drillCueRelease != null) && m_drillCueRelease.Value.IsPlaying)\n            {\n                m_drillCueRelease.Value.Stop(SharpDX.XACT3.StopFlags.Immediate);\n            }\n\n            if ((m_idleCue != null) && m_idleCue.Value.IsPlaying)\n            {\n                m_idleCue.Value.Stop(SharpDX.XACT3.StopFlags.Immediate);\n            }\n\n            if ((m_voxelCutCue != null) && m_voxelCutCue.Value.IsPlaying)\n            {\n                m_voxelCutCue.Value.Stop(SharpDX.XACT3.StopFlags.Immediate);\n            }\n        }\n\n        public override void Close()\n        {\n            //  Stop sound cues\n            StopAllSounds();\n\n            StopDustEffect();\n\n            base.Close();\n        }\n\n        protected virtual float GetRadiusNeededForTunel()\n        {\n            return (Vector3.Distance(Parent.WorldVolume.Center, this.WorldMatrix.Translation) + ModelLod0.BoundingSphere.Radius)\n                * (MySession.Is25DSector ? MyDrillDeviceConstants.BIG_SPHERE_RADIUS_MULTIPLIER * 1.8f : MyDrillDeviceConstants.BIG_SPHERE_RADIUS_MULTIPLIER);\n        }\n\n        protected static void CreateImpactEffect(Vector3 position, Vector3 normal, MyParticleEffectsIDEnum effectID)\n        {\n            var effect = MyParticlesManager.CreateParticleEffect((int)effectID);\n            Vector3 tangent;\n            MyUtils.GetPerpendicularVector(ref normal, out tangent);\n            effect.WorldMatrix = Matrix.CreateWorld(position, normal, tangent);\n        }\n\n        protected override Matrix GetLocalMatrixForCockpitView()\n        {\n            return Matrix.CreateScale(m_drillScale) * Matrix.CreateTranslation(((MySmallShip)Parent).GetHeadPosition()) * m_localMatrixForDrillCockpit;\n        }\n\n        void PlayVoxelCutCue()\n        {\n            if (m_voxelCutCue == null || !m_voxelCutCue.Value.IsPlaying || MySession.Is25DSector)\n            {\n                m_voxelCutCue = MyAudio.AddCue2dOr3d(Parent, MySoundCuesEnum.SfxVoxelCrack, Parent.GetPosition(), Parent.WorldMatrix.Forward, Parent.WorldMatrix.Up, Parent.Physics.LinearVelocity);\n            }\n        }\n        \n        protected void CutOutFromVoxel(MyVoxelMap voxelMap, ref BoundingSphere bigSphereForTunnel)\n        {\n            if (!IsDummy)\n            {\n                if (MyMultiplayerGameplay.IsRunning)\n                {\n                    MyMultiplayerGameplay.Static.CutOut(voxelMap, ref bigSphereForTunnel);\n                }\n\n                //remove decals\n                MyDecals.HideTrianglesAfterExplosion(voxelMap, ref bigSphereForTunnel);\n\n                //cut off \n                MyVoxelGenerator.CutOutSphereFast(voxelMap, bigSphereForTunnel);\n\n\n                if (MySession.Is25DSector)\n                {\n                    //  Create debris rocks thrown from the explosion\n                    MyExplosionDebrisVoxel.CreateExplosionDebris(ref bigSphereForTunnel, 1, CommonLIB.AppCode.Networking.MyMwcVoxelMaterialsEnum.Ice_01, MinerWars.AppCode.Game.Managers.Session.MySession.PlayerShip.GroupMask, voxelMap);\n\n                    BoundingBox boundingBox = BoundingBoxHelper.InitialBox;\n                    BoundingBoxHelper.AddSphere(ref bigSphereForTunnel, ref boundingBox);\n\n                    // we need local list because this method can be called from inside of the loop\n\n                    var elements = MyEntities.GetElementsInBox(ref boundingBox);\n                    foreach (var el in elements)\n                    {\n                        MyEntity entity = ((MinerWars.AppCode.Game.Physics.MyPhysicsBody)el.GetRigidBody().m_UserData).Entity;\n                        MyExplosionDebrisVoxel debris = entity as MyExplosionDebrisVoxel;\n\n                        if (debris == null)\n                            continue;\n\n                        Vector3 awayDirection = debris.GetPosition() - bigSphereForTunnel.Center;\n\n                        debris.Physics.AddForce(\n                               MinerWars.AppCode.Game.Physics.MyPhysicsForceType.APPLY_WORLD_IMPULSE_AND_WORLD_ANGULAR_IMPULSE,\n                               awayDirection * MyExplosionsConstants.EXPLOSION_FORCE_RADIUS_MULTIPLIER * 100000,\n                               bigSphereForTunnel.Center,\n                               MinerWars.CommonLIB.AppCode.Utils.MyMwcUtils.GetRandomVector3Normalized() * 10000);\n                    }\n\n                    elements.Clear();\n                }\n\n                PlayVoxelCutCue();\n            }\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Tools/MyDrillHead.cs",
    "content": "﻿using MinerWars.AppCode.Game.Utils;\n\nnamespace MinerWars.AppCode.Game.Entities.SubObjects\n{\n    using MinerWarsMath;\n    using Models;\n\n    class MyDrillHead : MyEntity\n    {\n        public float RotationSpeed;\n        Matrix m_worldMatrixForRenderingFromCockpitView;\n\n        public virtual void Init(Vector3 offset, MyEntity parentObject, MyModelsEnum model)\n        {\n            base.Init(null, model, null, parentObject, null, null);\n            LocalMatrix = Matrix.CreateTranslation(offset);\n            RotationSpeed = 0;\n            Save = false;\n        }\n\n        public void SetWorldMatrixForCockpit(ref Matrix worldMatrixForRenderingFromCockpitView)\n        {\n            m_worldMatrixForRenderingFromCockpitView = worldMatrixForRenderingFromCockpitView;\n        }\n\n        /// <summary>\n        /// Updates resource.\n        /// </summary>\n        public override void UpdateBeforeSimulation()\n        {\n            base.UpdateBeforeSimulation();\n\n            Matrix rotationMatrix = Matrix.CreateRotationZ(RotationSpeed * MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS);\n\n            LocalMatrix = rotationMatrix * LocalMatrix;\n        }\n\n        public override Matrix GetWorldMatrixForDraw()\n        {\n            if (GUI.MyGuiScreenGamePlay.Static.CameraAttachedTo == GUI.MyCameraAttachedToEnum.PlayerMinerShip)\n            {\n                return LocalMatrix * m_worldMatrixForRenderingFromCockpitView;\n            }\n\n            return base.GetWorldMatrixForDraw();\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Tools/MyHackingTool.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Entities.Prefabs;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Missions;\nusing System.Diagnostics;\nusing MinerWars.AppCode.Game.HUD;\n\nnamespace MinerWars.AppCode.Game.Entities.Tools\n{\n    enum MyHackingToolStateEnum\n    {\n        Idle,\n        Hacking,\n    }\n\n    enum MyHackingResultEnum\n    {\n        Success,        \n        CanNotBeHacked,\n        NotEnoughLevel,\n        Canceled,\n        NoHackingTool,\n    }\n\n    class MyHackingEventArgs : EventArgs \n    {\n        public MyHackingResultEnum HackingResult { get; private set; }\n        public IMyUseableEntity HackingEntity { get; private set; }\n\n        public MyHackingEventArgs(MyHackingResultEnum hackingResult, IMyUseableEntity hackingEntity) \n        {\n            HackingResult = hackingResult;\n            HackingEntity = hackingEntity;\n        }\n    }\n\n    delegate void OnMyHackingFinish(object sender, MyHackingEventArgs hackingEventArgs);\n    delegate void OnMyHackingStart(object sender, IMyUseableEntity hackingEntity);\n\n    class MyHackingTool\n    {\n        private delegate void HackingResultAction();        \n        private delegate MyGuiFont GetFontDelegate();\n\n        class MyHackingResultMessage\n        {\n            public MyTextsWrapperEnum? Text { get; set; }\n            public GetFontDelegate GetFontDelegate { get; set; }\n            public MySoundCuesEnum? SoundCue { get; set; }\n\n            public MyHackingResultMessage(MyTextsWrapperEnum? text, GetFontDelegate getFontDelegate, MySoundCuesEnum? soundCue)\n            {\n                Text = text;\n                GetFontDelegate = getFontDelegate;\n                SoundCue = soundCue;\n            }\n\n            public void Display(object[] parameters)\n            {\n                if (Text != null)\n                {\n                    MyGuiFont font = GetFontDelegate();\n                    MyHudNotification.MyNotification notification = new MyHudNotification.MyNotification(Text.Value, font, 5000, null, parameters);\n                    MyHudNotification.AddNotification(notification);\n                }\n                if (SoundCue != null) \n                {\n                    MyAudio.AddCue2D(SoundCue.Value);\n                }\n            }\n        }\n\n        private static readonly MyHackingResultMessage[] m_hackingResultMessages;\n        static MyHackingTool() \n        {\n            m_hackingResultMessages = new MyHackingResultMessage[MyMwcUtils.GetMaxValueFromEnum<MyHackingResultEnum>() + 1];\n            m_hackingResultMessages[(int)MyHackingResultEnum.Success] = null;\n            m_hackingResultMessages[(int)MyHackingResultEnum.NotEnoughLevel] = new MyHackingResultMessage(MyTextsWrapperEnum.HackingResult_NotEnoughLevel, delegate() { return MyGuiManager.GetFontMinerWarsRed(); }, MySoundCuesEnum.SfxCancelHack);\n            m_hackingResultMessages[(int)MyHackingResultEnum.CanNotBeHacked] = new MyHackingResultMessage(MyTextsWrapperEnum.HackingResult_CanNotBeHacked, delegate() { return MyGuiManager.GetFontMinerWarsRed(); }, MySoundCuesEnum.SfxCancelHack);\n            m_hackingResultMessages[(int)MyHackingResultEnum.Canceled] = null;\n            m_hackingResultMessages[(int)MyHackingResultEnum.NoHackingTool] = new MyHackingResultMessage(MyTextsWrapperEnum.HackingResult_NoHackingTool, delegate() { return MyGuiManager.GetFontMinerWarsRed(); }, MySoundCuesEnum.SfxCancelHack);\n        }\n\n        private MyHackingToolStateEnum m_state;\n        private IMyUseableEntity m_acutalHackingEntity;\n        //private int m_hackingTimeLeft;\n        //private int m_hackingTimeTotal;\n        private OnMyHackingFinish m_hackingFinishCallback;\n        private MyGuiScreenUseProgressBar m_hackingProgressScreen;\n        private EventHandler m_hackingProgressScreenSuccess;\n        private EventHandler m_hackingProgressScreenCanceled;\n        private DieHandler m_ownerDie;\n        private Action<MyEntity> m_ownerClose;\n        private MySmallShip m_owner;\n\n        public int HackingLevel { get; set; }\n\n        public MyHackingToolStateEnum ActualState { get { return m_state; } }        \n\n        public MyHackingTool(MySmallShip owner, int hackingLevel) \n        {\n            m_owner = owner;\n            HackingLevel = hackingLevel;\n            m_ownerDie = new DieHandler(OnOwnerDie);\n            m_ownerClose = OnOwnerClose;\n            m_owner.OnClose += m_ownerClose;\n            m_hackingProgressScreenSuccess = new EventHandler(m_hackingProgressScreen_OnSuccess);\n            m_hackingProgressScreenCanceled = new EventHandler(m_hackingProgressScreen_OnCanceled);\n        }        \n\n        public void Update() \n        {\n            //if (m_state == MyHackingToolStateEnum.Hacking) \n            //{\n            //    m_hackingTimeLeft -= MyConstants.PHYSICS_STEP_SIZE_IN_MILLISECONDS;\n            //    float newValue = (float)Math.Round((double)(m_hackingTimeTotal - m_hackingTimeLeft) / (double)m_hackingTimeTotal, 2);\n            //    newValue = MathHelper.Clamp(newValue, 0f, 1f);\n            //    m_hackingProgressScreen.UpdateValue(newValue);\n            //    if (m_hackingTimeLeft <= 0)\n            //    {\n            //        StopHacking(MyHackingResultEnum.Success, HackingSuccessAction);\n            //    }\n            //}\n        }\n\n        public event OnMyHackingFinish HackingFinish;\n        public event OnMyHackingStart HackingStart;\n\n        public void Hack(IMyUseableEntity entityToHack) \n        {\n            if (entityToHack == null) \n            {\n                throw new ArgumentNullException(\"entityToHack\");\n            }\n            if (!entityToHack.CanBeHacked(m_owner)) \n            {\n                StopHacking(MyHackingResultEnum.CanNotBeHacked);\n                return;\n            }\n            if (HackingLevel < 1) \n            {\n                StopHacking(MyHackingResultEnum.NoHackingTool);\n                return;\n            }\n            if (entityToHack.UseProperties.HackingLevel > HackingLevel) \n            {\n                StopHacking(MyHackingResultEnum.NotEnoughLevel, null, new object[]{ entityToHack.UseProperties.HackingLevel, HackingLevel });\n                return;\n            }\n\n            m_state = MyHackingToolStateEnum.Hacking;\n            m_acutalHackingEntity = entityToHack;\n            //m_hackingTimeTotal = (int)((float)entityToHack.UseProperties.HackingTime * (1f - (HackingLevel - entityToHack.UseProperties.HackingLevel) * 0.25f));\n            //m_hackingTimeLeft = m_hackingTimeTotal;\n            NotifyHackingStart();\n            int hackingTimeTotal = (int)((float)entityToHack.UseProperties.HackingTime * (1f - (HackingLevel - entityToHack.UseProperties.HackingLevel) * 0.25f));\n            m_hackingProgressScreen = new MyGuiScreenUseProgressBar(MyTextsWrapperEnum.Hacking, MyTextsWrapperEnum.HackingProgress, 0f, MySoundCuesEnum.SfxProgressHack, MySoundCuesEnum.SfxCancelHack, MyGameControlEnums.USE, 50, hackingTimeTotal, 0);\n            m_hackingProgressScreen.OnCanceled += m_hackingProgressScreenCanceled;\n            m_hackingProgressScreen.OnSuccess += m_hackingProgressScreenSuccess;\n            m_owner.OnDie += m_ownerDie;\n            MyGuiManager.AddScreen(m_hackingProgressScreen);\n        }\n\n        public IMyUseableEntity GetActualHackingEntity()\n        {\n            return m_acutalHackingEntity;\n        }\n\n        void m_hackingProgressScreen_OnSuccess(object sender, EventArgs e)\n        {\n            StopHacking(MyHackingResultEnum.Success, HackingSuccessAction);\n        }\n\n        void m_hackingProgressScreen_OnCanceled(object sender, EventArgs e)\n        {\n            StopHacking(MyHackingResultEnum.Canceled);\n        }\n\n        void OnOwnerDie(MyEntity entity, MyEntity killer)\n        {\n            Close();\n        }\n\n        void OnOwnerClose(MyEntity entity) \n        {\n            Close();\n        }\n\n        private void HackingSuccessAction() \n        {\n            m_acutalHackingEntity.UseProperties.IsHacked = true;\n            m_acutalHackingEntity.UseFromHackingTool(m_owner, HackingLevel - m_acutalHackingEntity.UseProperties.HackingLevel);\n        }\n\n        private void StopHacking(MyHackingResultEnum result, HackingResultAction action = null, object[] parameters = null) \n        {                        \n            MyHackingResultMessage resultMessage = m_hackingResultMessages[(int)result];\n            if (resultMessage != null)\n            {\n                //MyGuiManager.AddScreen(new MyGuiScreenMessageBox(resultConfig.MessageBoxType, resultConfig.Text, MyTextsWrapperEnum.HackingResult, MyTextsWrapperEnum.Ok, null));\n                resultMessage.Display(parameters);\n            }\n\n            if (m_hackingProgressScreen != null)\n            {\n                if (m_hackingProgressScreen.GetState() != MyGuiScreenState.CLOSED)\n                {\n                    m_hackingProgressScreen.CloseScreenNow();\n                }\n                m_hackingProgressScreen.OnCanceled -= m_hackingProgressScreenCanceled;\n                m_hackingProgressScreen.OnSuccess -= m_hackingProgressScreenSuccess;\n                m_hackingProgressScreen = null;\n            }\n            m_owner.OnDie -= m_ownerDie;\n            if (action != null) \n            {\n                action();\n            }\n            NotifyHackingFinish(result);\n            m_acutalHackingEntity = null;\n            //m_hackingTimeLeft = 0;\n            m_state = MyHackingToolStateEnum.Idle;\n        }\n\n        private void NotifyHackingFinish(MyHackingResultEnum result) \n        {\n            if (HackingFinish != null) \n            {\n                HackingFinish(this, new MyHackingEventArgs(result, m_acutalHackingEntity));\n            }\n            if (result == MyHackingResultEnum.Success) \n            {\n                MyScriptWrapper.OnEntityHacked(m_acutalHackingEntity as MyEntity);\n            }\n        }\n\n        private void NotifyHackingStart() \n        {\n            if (HackingStart != null) \n            {\n                HackingStart(this, m_acutalHackingEntity);\n            }\n        }\n\n        public void Close() \n        {\n            StopHacking(MyHackingResultEnum.Canceled);\n            m_owner.OnDie -= m_ownerDie;\n            m_owner.OnClose -= m_ownerClose;\n            m_owner = null;\n            m_hackingProgressScreenSuccess = null;\n            m_hackingProgressScreenCanceled = null;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Tools/MyHarvestingDevice.cs",
    "content": "﻿using MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Missions;\nusing MinerWars.AppCode.Game.TransparentGeometry.Particles;\n\nnamespace MinerWars.AppCode.Game.Entities.SubObjects\n{\n    using System;\n    using System.Text;\n    using App;\n    using Audio;\n    using CommonLIB.AppCode.Networking;\n    using CommonLIB.AppCode.ObjectBuilders.SubObjects;\n    using CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\n    using CommonLIB.AppCode.Utils;\n    using MinerWars.AppCode.Game.Decals;\n    using Lights;\n    using MinerWarsMath;\n    \n    using Models;\n    using Utils;\n    using Voxels;\n    using Weapons;\n    using World;\n    using MinerWars.AppCode.Game.Inventory;\n    using MinerWars.CommonLIB.AppCode.ObjectBuilders;\n    using MinerWars.AppCode.Networking.SectorService;\n    using System.Diagnostics;\n    using MinerWars.AppCode.Game.Sessions;\n    using MinerWars.AppCode.Game.Render;\n    using MinerWars.AppCode.Game.HUD;\n    using KeenSoftwareHouse.Library.Extensions;\n    using MinerWars.AppCode.Game.GUI.Helpers;\n    using MinerWars.AppCode.Game.GUI.Core;\n    using MinerWars.AppCode.Game.Localization;\n    using System.Collections.Generic;\n\n    public enum MyHarvestingDeviceEnum\n    {\n        FindingVoxel,           //  When tube is ejecting and looking for voxels\n        InVoxel,                //  When tube/head mounted into voxels and is harvesting\n        ReturningBack,          //  When tube didn't find voxels so it's pulling back\n        FastReturningBack,      //  When tube collided with something so we must pull it back quickly, so player won't notice intersection\n        InsideShip              //  When tube is inside miner ship, default status\n    }\n\n    class MyHarvestingDevice : MySmallShipGunBase\n    {\n        MyHarvestingHead m_harvestingOreHead;\n        MyHarvestingDeviceEnum m_currentState;\n\n        public MyHarvestingDeviceEnum CurrentState\n        {\n            get { return m_currentState; }\n            private set\n            {\n                m_currentState = value;\n                Visible = m_currentState != MyHarvestingDeviceEnum.InsideShip;\n            }\n        }\n\n        MySoundCue? m_grindingCue;\n        MySoundCue? m_grindingReleaseCue;\n        MySoundCue? m_tubeMovingCue;\n        MySoundCue? m_implodeCue;\n\n        int? m_lastTimeParticleAdded;\n        Vector3 m_headPositionLocal;                //  Position of head relative to this launcher (in object space)\n        Vector3 m_headPositionTransformed;          //  Position of head in world space\n        MySmallShip m_parentMinerShip;\n        float m_lastTimeCheckedForVoxelPresence;    //  If we are connected to voxel we check every time if we are still connected\n        MyLight m_light;                            //  Dynamic light at the tube head\n        MyVoxelMap m_inVoxelMap;          //  To which voxel map are we sticked in\n\n        float m_harvestingSpeed;\n        //  Sphere for head of harvester\n        //BoundingSphere m_headSphere;\n\n        //  We calculate how much should be in voxel while harvesting. It is stored in float because we remove each update from it small value\n        float m_actualVoxelContent;\n\n        //  How much content was in voxel when we started harvesthing\n        byte m_originalVoxelContent;\n\n        //  Material of voxel to which we are connected (approximate)\n        MyMwcVoxelMaterialsEnum m_voxelMaterial;\n\n        MyParticleEffect m_harvestingParticleEffect;\n\n        //  How much updates it takes to harvest whole voxel (ignoreing its content value, even empty voxels will take this time to harvest)\n        const float TIME_TO_HARVEST_WHOLE_VOXEL_IN_UPDATE_TIMES = 5 * MyConstants.PHYSICS_STEPS_PER_SECOND;\n        //const float HARVESTER_ROCK_THROWN_STRENGTH = 7;\n\n        public override void Init(StringBuilder hudLabelText, MySmallShip parentObject,\n            Vector3 position, Vector3 forwardVector, Vector3 upVector,\n            MyMwcObjectBuilder_SmallShip_Weapon objectBuilder)\n        {\n            base.Init(hudLabelText, MyModelsEnum.HarvestingTube, MyMaterialType.METAL, parentObject,\n                position, forwardVector, upVector, objectBuilder);\n\n            m_harvestingOreHead = new MyHarvestingHead();\n            m_harvestingOreHead.Init(this);\n\n            m_parentMinerShip = (MySmallShip)Parent;\n\n            StartInsideShip();\n        }\n\n        //  When tube is ejecting and looking for voxels\n        void StartFindingVoxel()\n        {\n            //  Else we normally start ejecting\n            CurrentState = MyHarvestingDeviceEnum.FindingVoxel;\n            m_headPositionLocal = Vector3.Zero;\n            StartTubeMovingCue();\n            StopGrindingCue();\n\n            if (m_light != null)\n                MyLights.RemoveLight(m_light);\n            m_light = null;\n\n            //m_light = MyLights.AddLight();\n\n            if (m_light != null)\n            {\n                var color = 5 * new Vector4(1, 0.3f, 0.3f, 1);\n                m_light.Start(MyLight.LightTypeEnum.PointLight, color, 3, 10);\n            }\n\n            MyScriptWrapper.HarvesterUse();\n            UpdateAfterSimulation();\n        }\n\n        //  When tube/head mounted into voxels and is harvesting\n        void StartInVoxel(MyVoxelMap voxelMap)\n        {\n            //  We found voxel so we stop here\n            m_inVoxelMap = voxelMap;\n            CurrentState = MyHarvestingDeviceEnum.InVoxel;\n            StopTubeMovingCue();\n            StartGrindingCue();\n            m_lastTimeParticleAdded = null;\n            m_parentMinerShip.Physics.Clear();\n            m_parentMinerShip.Physics.Immovable = true;\n\n            MyMwcVector3Int tempVoxelCoord = voxelMap.GetVoxelCenterCoordinateFromMeters(ref m_headPositionTransformed);\n            m_originalVoxelContent = voxelMap.GetVoxelContent(ref tempVoxelCoord);\n            m_voxelMaterial = voxelMap.GetVoxelMaterial(ref tempVoxelCoord);\n\n\n            m_harvestingParticleEffect = MyParticlesManager.CreateParticleEffect((int)MyParticleEffectsIDEnum.Harvester_Harvesting);\n            m_harvestingParticleEffect.UserBirthMultiplier = 0.25f;\n            m_harvestingParticleEffect.UserRadiusMultiplier = 1;\n            m_harvestingParticleEffect.UserColorMultiplier = new Vector4(3, 3, 3, 3);\n            Matrix dirMatrix = MyMath.MatrixFromDir(WorldMatrix.Forward);\n            m_harvestingParticleEffect.WorldMatrix = Matrix.CreateWorld(m_headPositionTransformed, dirMatrix.Forward, dirMatrix.Up);\n\n            //  Empty voxels are problematic and can lead to \"extremely fast harvesting\". So here we do this\n            //  trick and its effect will be that even empty voxels will take few seconds to harvest.\n            if (m_originalVoxelContent == 0) m_originalVoxelContent = 1;\n\n            m_actualVoxelContent = (float)m_originalVoxelContent;\n            m_harvestingSpeed = m_actualVoxelContent / TIME_TO_HARVEST_WHOLE_VOXEL_IN_UPDATE_TIMES;\n\n            if (!MyVoxelMapOreMaterials.CanBeHarvested(m_voxelMaterial))\n            {\n                HUD.MyHud.ShowIndestructableAsteroidNotification();\n                StartReturningBack();\n            }\n        }\n\n        //  When tube didn't find voxels so it's pulling back\n        void StartReturningBack()\n        {\n            //  Head was in voxels, so we return it back to the ship\n            CurrentState = MyHarvestingDeviceEnum.ReturningBack;\n            m_parentMinerShip.Physics.Immovable = false;\n            StopGrindingCue();\n            StartTubeMovingCue();\n            CloseEffect();\n        }\n\n        //  When tube collided with something so we must pull it back quickly, so player won't notice intersection\n        void StartFastReturningBack()\n        {\n            CurrentState = MyHarvestingDeviceEnum.FastReturningBack;\n            m_parentMinerShip.Physics.Immovable = false;\n            MyAudio.AddCue2dOr3d(Parent, MySoundCuesEnum.VehHarvesterTubeCollision2d,\n                Parent.GetPosition(), Parent.WorldMatrix.Forward, Parent.WorldMatrix.Up, Parent.Physics.LinearVelocity);\n            StopGrindingCue();\n            StopTubeMovingCue();\n            CloseEffect();\n        }\n\n        //  When tube is inside miner ship, default status\n        void StartInsideShip()\n        {\n            CurrentState = MyHarvestingDeviceEnum.InsideShip;\n            StopTubeMovingCue();\n\n            if (m_light != null) MyLights.RemoveLight(m_light);\n            m_light = null;\n        }\n\n        //  Called when we finished harvesting current voxel\n        void StartReleaseVoxel()\n        {\n            if (m_parentMinerShip == null || m_parentMinerShip.IsDead() || m_parentMinerShip.Inventory == null)\n                return;\n\n            StartImplodeCue();\n            BoundingSphere explosion = new BoundingSphere(m_headPositionTransformed, MyVoxelConstants.VOXEL_SIZE_IN_METRES * 1);\n            //remove decals\n            MyDecals.HideTrianglesAfterExplosion(m_inVoxelMap, ref explosion);\n            //cut off \n\n            var minedMaterialsWithContents = MyVoxelGenerator.CutOutSphereFastWithMaterials(m_inVoxelMap, explosion);\n\n            var dustEffect = MyParticlesManager.CreateParticleEffect((int)MyParticleEffectsIDEnum.Harvester_Finished);\n            dustEffect.WorldMatrix = Matrix.CreateTranslation(m_headPositionTransformed);\n\n            bool hudHarvestingCompletePlayed = false;\n            bool harvestingFinishedAsyncSent = false;\n\n            var minedOres = new Dictionary<int, float>();\n\n            foreach (var minedMaterialWithContent in minedMaterialsWithContents)\n            {\n                MyOreRatioFromVoxelMaterial[] oreFromVoxel = MyVoxelMapOreMaterials.GetOreFromVoxelMaterial(minedMaterialWithContent.Key);\n                if (oreFromVoxel != null && this.Parent == MySession.PlayerShip)\n                {\n                    // accumulate amounts of the same type\n                    foreach (MyOreRatioFromVoxelMaterial oreRatio in oreFromVoxel)\n                    {\n                        float amount = minedMaterialWithContent.Value * oreRatio.Ratio * MyHarvestingTubeConstants.MINED_CONTENT_RATIO;\n                        float oldAmount = 0;\n                        minedOres.TryGetValue((int)oreRatio.OreType, out oldAmount);\n                        minedOres[(int)oreRatio.OreType] = amount + oldAmount;\n                    }\n\n                    if (!harvestingFinishedAsyncSent)\n                    {\n                        try\n                        {\n                            // Disabled, still unused on server\n                            //var client = MySectorServiceClient.GetCheckedInstance();\n                            //client.HarvestingFinishedAsync(minedMaterialWithContent.Key, (byte)(minedMaterialWithContent.Value * MyVoxelConstants.VOXEL_CONTENT_FULL_FLOAT));\n                        }\n                        catch (Exception)\n                        {\n                            Debug.Fail(\"Cannot send harvesting to server\");\n                        }\n                        harvestingFinishedAsyncSent = true;\n                    }\n\n                    if (!hudHarvestingCompletePlayed)\n                    {\n                        hudHarvestingCompletePlayed = true;\n                        MyAudio.AddCue2D(MySoundCuesEnum.HudHarvestingComplete);\n                    }\n                }\n            }\n\n\n            bool inventoryFullWarningPlayed = false;\n\n            // add ores to inventory\n            foreach (var ore in minedOres)\n            {\n                float amountLeft = m_parentMinerShip.Inventory.AddInventoryItem(MyMwcObjectBuilderTypeEnum.Ore, ore.Key, ore.Value, false);\n\n                float amountAdded = ore.Value - amountLeft;\n                if (amountAdded > 0f)\n                {\n                    MyHudNotification.AddNotification(new MyHudNotification.MyNotification(MyTextsWrapperEnum.HarvestNotification, 3500, textFormatArguments: new object[]\n                        {\n                            amountAdded,\n                            ((MyGuiOreHelper)MyGuiObjectBuilderHelpers.GetGuiHelper(MyMwcObjectBuilderTypeEnum.Ore, ore.Key)).Name\n                        }\n                    ));\n                }\n\n                if (amountLeft > 0f)\n                {\n                    MyHudNotification.AddNotification(new MyHudNotification.MyNotification(MyTextsWrapperEnum.HarvestNotificationInventoryFull, MyGuiManager.GetFontMinerWarsRed(), 3500,\n                        textFormatArguments: new object[]\n                        {\n                            amountLeft,\n                            ((MyGuiOreHelper)MyGuiObjectBuilderHelpers.GetGuiHelper(MyMwcObjectBuilderTypeEnum.Ore, ore.Key)).Name\n                        }\n                    ));\n                    if (!inventoryFullWarningPlayed)\n                    {\n                        MyAudio.AddCue2D(MySoundCuesEnum.HudInventoryFullWarning);\n                        inventoryFullWarningPlayed = true;\n                    }\n                }\n            }\n\n            StartReturningBack();\n        }\n\n        void StartTubeMovingCue()\n        {\n            if ((m_tubeMovingCue == null) || (m_tubeMovingCue.Value.IsPlaying == false))\n            {\n                m_tubeMovingCue = MyAudio.AddCue3D(MySoundCuesEnum.VehHarvesterTubeMovingLoop2d, WorldMatrix.Translation,\n                    WorldMatrix.Forward, WorldMatrix.Up, Parent.Physics.LinearVelocity);\n            }\n        }\n\n        void StartGrindingCue()\n        {\n            if ((m_grindingCue == null) || (m_grindingCue.Value.IsPlaying == false))\n            {\n                m_grindingCue = MyAudio.AddCue2dOr3d(this, MySoundCuesEnum.VehHarvesterTubeColliding2d, m_headPositionTransformed,\n                    WorldMatrix.Forward, WorldMatrix.Up, Parent.Physics.LinearVelocity);\n            }\n        }\n\n        void StartImplodeCue()\n        {\n            if ((m_implodeCue == null) || (m_implodeCue.Value.IsPlaying == false))\n            {\n                m_implodeCue = MyAudio.AddCue2dOr3d(this, MySoundCuesEnum.VehHarvesterTubeImplode2d, m_headPositionTransformed,\n                    WorldMatrix.Forward, WorldMatrix.Up, Parent.Physics.LinearVelocity);\n            }\n        }\n\n        void StopGrindingCue()\n        {\n            if ((m_grindingCue != null) && (m_grindingCue.Value.IsPlaying == true))\n            {\n                m_grindingCue.Value.Stop(SharpDX.XACT3.StopFlags.Immediate);\n                m_grindingReleaseCue = MyAudio.AddCue2dOr3d(this, MySoundCuesEnum.VehHarvesterTubeRelease2d, m_headPositionTransformed, WorldMatrix.Forward,\n                    WorldMatrix.Up, Parent.Physics.LinearVelocity);\n            }\n        }\n\n        void StopTubeMovingCue()\n        {\n            if ((m_tubeMovingCue != null) && (m_tubeMovingCue.Value.IsPlaying == true))\n            {\n                m_tubeMovingCue.Value.Stop(SharpDX.XACT3.StopFlags.Immediate);\n            }\n        }\n\n        //  Every child of this base class must implement Shot() method, which shots projectile or missile.\n        //  Method returns true if something was shot. False if not (because interval between two shots didn't pass)\n        public override bool Shot(MyMwcObjectBuilder_SmallShip_Ammo usedAmmo)\n        {\n            if (CurrentState == MyHarvestingDeviceEnum.InVoxel)\n            {\n                StartReturningBack();\n            }\n            else if (CurrentState == MyHarvestingDeviceEnum.InsideShip)\n            {\n                StartFindingVoxel();\n            }\n            else\n            {\n                StartFastReturningBack();\n            }\n\n            return true;\n        }\n\n        public override bool Draw(MyRenderObject renderObject)\n        {\n            bool retVal = base.Draw(renderObject);\n\n            foreach (MyEntity child in Children)\n            {\n                child.Draw();\n            }\n\n            return retVal;\n        }\n\n        public override bool DebugDraw()\n        {\n            return false;\n\n            bool retVal = base.DebugDraw();\n\n            if (retVal)\n            {\n                //MyDebugDraw.DrawLine3D(WorldMatrix.Translation, m_headPositionTransformed, Color.Red, Color.Red);\n\n                float length = Vector3.Distance(WorldMatrix.Translation, m_headPositionTransformed);\n                float scale = (length / (2 * ModelLod0.BoundingSphere.Radius));\n\n                //float scale = GetScaleMatrix().Forward.Length();\n                MyDebugDraw.DrawLine3D(WorldMatrix.Translation, WorldMatrix.Translation + length * WorldMatrix.Forward, Color.Red, Color.Red);\n\n                MyDebugDraw.DrawSphereWireframe(Matrix.CreateScale(m_harvestingOreHead.ModelLod0.BoundingSphere.Radius) *\n                    Matrix.CreateTranslation(m_headPositionTransformed), new Vector3(0, 1, 0), 0.6f);\n            }\n\n            return true;\n        }\n\n        /// <summary>\n        /// Updates resource.\n        /// </summary>\n        public override void UpdateAfterSimulation()\n        {\n            base.UpdateAfterSimulation();\n\n            if ((!GetParentMinerShip().Config.Engine.On || GetParentMinerShip().Fuel <= 0) &&\n                (CurrentState == MyHarvestingDeviceEnum.InVoxel || CurrentState == MyHarvestingDeviceEnum.FindingVoxel))\n            {\n                StartFastReturningBack();\n            }\n\n            if (CurrentState == MyHarvestingDeviceEnum.InsideShip)\n            {\n                //  Do nothing\n                return;\n            }\n\n            if (CurrentState == MyHarvestingDeviceEnum.FindingVoxel)\n            {\n                //  Head in local space\n                m_headPositionLocal += this.LocalMatrix.Forward * MyHarvestingTubeConstants.EJECTION_SPEED_IN_METERS_PER_SECOND;\n            }\n            else if (CurrentState == MyHarvestingDeviceEnum.ReturningBack)\n            {\n                //  Head in local space\n                m_headPositionLocal -= this.LocalMatrix.Forward * MyHarvestingTubeConstants.EJECTION_SPEED_IN_METERS_PER_SECOND;\n            }\n            else if (CurrentState == MyHarvestingDeviceEnum.FastReturningBack)\n            {\n                //  Head in local space\n                m_headPositionLocal -= this.LocalMatrix.Forward * MyHarvestingTubeConstants.FAST_PULL_BACK_IN_METERS_PER_SECOND;\n            }\n\n            //  Transform head position into world space\n            Matrix worldMatrix = Parent.WorldMatrix;\n            m_harvestingOreHead.LocalMatrix = Matrix.CreateWorld(m_headPositionLocal, m_harvestingOreHead.LocalMatrix.Forward, m_harvestingOreHead.LocalMatrix.Up);\n            m_headPositionTransformed = m_harvestingOreHead.WorldMatrix.Translation;\n\n            //  Distance must carry sign (plus/minus) because when we need to know if head is behind it's starting point when pulling back\n            //  IMPORTANT: Forward is in -Z direction, so that's why I subtract position from head and not oppositely\n\n            float distance = this.LocalMatrix.Translation.Z - m_headPositionLocal.Z;\n            if (CurrentState == MyHarvestingDeviceEnum.ReturningBack ||\n                CurrentState == MyHarvestingDeviceEnum.FastReturningBack)\n            {\n                if (distance <= MyHarvestingTubeConstants.DISTANCE_TO_PLUG_IN_THE_TUBE)\n                {\n                    StartInsideShip();\n                }\n            }\n            else\n            {\n                if (distance >= MyHarvestingTubeConstants.MAX_DISTANCE_OF_HARVESTING_DEVICE)\n                {\n                    StartReturningBack();\n                }\n            }\n\n            //  Sphere for head of harvester\n            BoundingSphere headSphere = new BoundingSphere(m_headPositionTransformed, m_harvestingOreHead.ModelLod0.BoundingSphere.Radius);\n\n            if (CurrentState == MyHarvestingDeviceEnum.FindingVoxel)\n            {\n                //  Check if head doesn't collide with anything\n                MyEntity sphereResult = MyEntities.GetIntersectionWithSphere(ref headSphere, m_parentMinerShip, null);\n                if (sphereResult != null)\n                {\n                    if (sphereResult is MyVoxelMap)\n                    {\n                        StartInVoxel((MyVoxelMap)sphereResult);\n                    }\n                    else\n                    {\n                        //  Intersection between sphere and anything else but voxels, so we start pulling back quickly\n                        StartFastReturningBack();\n                    }\n                }\n            }\n\n            //  If we are connected to voxel check permanently if the voxel is still there\n            if ((CurrentState == MyHarvestingDeviceEnum.InVoxel) && (MyMinerGame.TotalGamePlayTimeInMilliseconds - m_lastTimeCheckedForVoxelPresence) > MyHarvestingTubeConstants.INTERVAL_TO_CHECK_FOR_VOXEL_CONNECTION_IN_MILISECONDS)\n            {\n                m_lastTimeCheckedForVoxelPresence = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n                //  Check if head doesn't collide with anything\n                MyEntity sphereResult = MyEntities.GetIntersectionWithSphere(ref headSphere, m_parentMinerShip, null);\n                if (!(sphereResult is MyVoxelMap))\n                {\n                    StartFastReturningBack();\n                }\n            }\n\n            //  If we are connected to voxel we can harvest it\n            if (CurrentState == MyHarvestingDeviceEnum.InVoxel)\n            {\n                m_actualVoxelContent -= m_harvestingSpeed;\n\n                if (m_actualVoxelContent <= 0)\n                {\n                    StartReleaseVoxel();\n                }\n            }\n\n            if ((WorldMatrix.Translation - m_headPositionTransformed).Length() > MyMwcMathConstants.EPSILON)\n            {\n                //  Check if tube doesn't colide with something\n                MyLine tubeLine = new MyLine(WorldMatrix.Translation, m_headPositionTransformed, true);\n                MyIntersectionResultLineTriangleEx? tubeIntersection = MyEntities.GetIntersectionWithLine(ref tubeLine, this, m_parentMinerShip);\n\n                //  We colide with something and we need fast return back\n                if (tubeIntersection != null)\n                {\n                    StartFastReturningBack();\n                }\n            }\n\n            if (CurrentState == MyHarvestingDeviceEnum.InVoxel)\n            {\n                m_parentMinerShip.IncreaseHeadShake(MyHarvestingTubeConstants.SHAKE_DURING_IN_VOXELS);\n            }\n            else if ((CurrentState == MyHarvestingDeviceEnum.FastReturningBack) ||\n                    (CurrentState == MyHarvestingDeviceEnum.FindingVoxel) ||\n                    (CurrentState == MyHarvestingDeviceEnum.ReturningBack))\n            {\n                m_parentMinerShip.IncreaseHeadShake(MyHarvestingTubeConstants.SHAKE_DURING_EJECTION);\n            }\n\n            if (m_light != null)\n            {\n                m_light.SetPosition(m_headPositionTransformed - WorldMatrix.Forward);\n            }\n\n            if ((m_tubeMovingCue != null) && (m_tubeMovingCue.Value.IsPlaying == true))\n            {\n                MyAudio.UpdateCuePosition(m_tubeMovingCue, WorldMatrix.Translation,\n                    WorldMatrix.Forward, WorldMatrix.Up, Parent.Physics.LinearVelocity);\n            }\n\n            if ((m_grindingCue != null) && (m_grindingCue.Value.IsPlaying == true))\n            {\n                MyAudio.UpdateCuePosition(m_grindingCue, m_headPositionTransformed,\n                    WorldMatrix.Forward, WorldMatrix.Up, Parent.Physics.LinearVelocity);\n            }\n\n            m_harvestingOreHead.SetData(ref m_worldMatrixForRenderingFromCockpitView);\n        }\n\n        //  Only for drawing this object, because some objects need to use special world matrix\n        public override Matrix GetWorldMatrixForDraw()\n        {\n            float length = Vector3.Distance(WorldMatrix.Translation, m_headPositionTransformed);\n            float scale = (length / (2 * ModelLod0.BoundingSphere.Radius));\n            Matrix scaleMatrix = Matrix.CreateScale(new Vector3(1, 1, scale));\n\n            if (NearFlag)\n            {\n                //  Only our player's guns are rendered using this trick. It's because we can't use WorldMatrix in large positions as \n                //  floating point inprecision is too visible if viewed from inside the ship\n                return scaleMatrix * m_worldMatrixForRenderingFromCockpitView;\n            }\n            else\n            {\n                return scaleMatrix * base.GetWorldMatrixForDraw();\n            }\n        }\n\n        public override void Close()\n        {\n            //  Free the light\n            if (m_light != null)\n            {\n                MyLights.RemoveLight(m_light);\n                m_light = null;\n            }\n\n            //  Stop sound cues\n            if ((m_grindingCue != null) && (m_grindingCue.Value.IsPlaying == true))\n            {\n                m_grindingCue.Value.Stop(SharpDX.XACT3.StopFlags.Immediate);\n            }\n\n            if ((m_grindingReleaseCue != null) && (m_grindingReleaseCue.Value.IsPlaying == true))\n            {\n                m_grindingReleaseCue.Value.Stop(SharpDX.XACT3.StopFlags.Immediate);\n            }\n\n            if ((m_tubeMovingCue != null) && (m_tubeMovingCue.Value.IsPlaying == true))\n            {\n                m_tubeMovingCue.Value.Stop(SharpDX.XACT3.StopFlags.Immediate);\n            }\n\n            CloseEffect();\n\n            base.Close();\n        }\n\n        private void CloseEffect()\n        {\n            if (m_harvestingParticleEffect != null)\n            {\n                m_harvestingParticleEffect.Stop();\n                m_harvestingParticleEffect = null;\n            }\n        }\n\n        public bool IsHarvesterActive\n        {\n            get { return CurrentState != MyHarvestingDeviceEnum.InsideShip; }\n        }\n\n        protected override MyMwcObjectBuilder_Base GetObjectBuilderInternal(bool getExactCopy)\n        {\n            MyMwcObjectBuilder_Base objectBuilder = base.GetObjectBuilderInternal(getExactCopy);\n            if (objectBuilder == null)\n            {\n                objectBuilder = new MyMwcObjectBuilder_SmallShip_Weapon(WeaponType = MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Harvesting_Device);\n            }\n            return objectBuilder;\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Tools/MyHarvestingHead.cs",
    "content": "﻿namespace MinerWars.AppCode.Game.Entities.SubObjects\n{\n    using MinerWarsMath;\n    using Models;\n    using MinerWars.AppCode.Game.Render;\n\n    sealed class MyHarvestingHead : MyEntity\n    {\n        Matrix m_worldMatrixForRenderingFromCockpitView = Matrix.Identity;\n\n        public void Init(MyEntity parent)\n        {\n            base.Init(null, MyModelsEnum.HarvestingHead, null, parent, null, null);\n\n            //  For performance optimizations, we don't check if this small objects are in a frustum and draw them directly\n            m_frustumCheckBeforeDrawEnabled = false;\n            Save = false;\n        }\n\n        public bool Update(Vector3 currentPosition, Vector3 direction, Vector3 up)\n        {\n            SetWorldMatrix(Matrix.CreateWorld(currentPosition, direction, up));\n            \n            return true;\n        }\n\n        public void SetData(ref Matrix worldMatrixForRenderingFromCockpitView)\n        {\n            m_worldMatrixForRenderingFromCockpitView = worldMatrixForRenderingFromCockpitView;\n        }\n\n        public override bool Draw(MyRenderObject renderObject)\n        {\n            if (base.Draw(renderObject) == false) return false;\n\n            return true;\n        }\n\n        public override Matrix GetWorldMatrixForDraw()\n        {\n            if (MinerWars.AppCode.Game.GUI.MyGuiScreenGamePlay.Static.CameraAttachedTo == MinerWars.AppCode.Game.GUI.MyCameraAttachedToEnum.PlayerMinerShip)\n            {\n                return LocalMatrix * m_worldMatrixForRenderingFromCockpitView;\n            }\n\n            return base.GetWorldMatrixForDraw();\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Tools/MyLaserDrill.cs",
    "content": "namespace MinerWars.AppCode.Game.Entities\n{\n    using System.Text;\n    using Audio;\n    using CommonLIB.AppCode.ObjectBuilders.SubObjects;\n    using MinerWarsMath;\n    using Models;\n    using Utils;\n    using CommonLIB.AppCode.ObjectBuilders;\n\n    class MyLaserDrill : MyDirectionalDrill\n    {\n        public override void Init(StringBuilder hudLabelText, MySmallShip parentObject,\n            Vector3 position, Vector3 forwardVector, Vector3 upVector,\n            MyMwcObjectBuilder_SmallShip_Weapon objectBuilder)\n        {\n            m_model = MyModelsEnum.LaserDrill;\n            m_movingCueEnum = MySoundCuesEnum.VehToolLaserDrillLoop3d;\n            m_movingCueReleaseEnum = MySoundCuesEnum.VehToolLaserDrillRelease3d;\n            m_drillCueEnum = MySoundCuesEnum.VehToolLaserDrillColliding3d;\n            m_drillOtherCueEnum = MySoundCuesEnum.VehToolLaserCollidingOther3d;\n            m_drillOtherCueReleaseEnum = MySoundCuesEnum.VehToolLaserCollidingOtherRelease3d;\n            m_drillCueReleaseEnum = MySoundCuesEnum.VehToolLaserDrillCollidingRelease3d;\n            m_idleCueEnum = MySoundCuesEnum.VehToolLaserDrillIdle3d;\n\n            base.Init(hudLabelText, parentObject, position, forwardVector, upVector, objectBuilder);\n\n            m_minDrillingDuration = MyLaserDrillDeviceConstants.MIN_DRILLING_DURATION;\n            m_range = MyLaserDrillDeviceConstants.RANGE;\n            m_radius = MyLaserDrillDeviceConstants.RADIUS;\n            m_damage = MyLaserDrillDeviceConstants.DAMAGE_PER_SECOND;\n            m_directionalEffectID = MyParticleEffectsIDEnum.Drill_Laser;\n        }\n\n        protected override MyMwcObjectBuilder_Base GetObjectBuilderInternal(bool getExactCopy)\n        {\n            MyMwcObjectBuilder_Base objectBuilder = base.GetObjectBuilderInternal(getExactCopy);\n            if (objectBuilder == null)\n            {                \n                objectBuilder = new MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Laser);\n            }\n            return objectBuilder;\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Tools/MyMedicine.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.App;\nusing SysUtils.Utils;\nusing MinerWars.AppCode.Game.Inventory;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\n\nnamespace MinerWars.AppCode.Game.Entities.Tools\n{\n    public enum MyMedicineType\n    {\n        PERFORMANCE_ENHANCING_MEDICINE,\n        HEALTH_ENHANCING_MEDICINE,\n        ANTIRADIATION_MEDICINE,\n        MEDIKIT,\n    }\n\n    class MyMedicine\n    {\n        private MyMedicineType m_type;\n        private float m_activationTime;\n        private float m_lastTriggerTime;\n\n        MyMedicine(MyMedicineType type)\n        {\n            m_type = type;\n            Deactivate();\n        }\n\n        public static MyMedicine[] GetArrayOfAllMedicines()\n        {\n            return new MyMedicine[] {\n                new MyMedicine(MyMedicineType.PERFORMANCE_ENHANCING_MEDICINE),\n                new MyMedicine(MyMedicineType.HEALTH_ENHANCING_MEDICINE),\n                new MyMedicine(MyMedicineType.ANTIRADIATION_MEDICINE),\n                new MyMedicine(MyMedicineType.MEDIKIT),\n            };\n        }\n\n        #region Commands\n\n        public void Activate()\n        {\n            m_activationTime = m_lastTriggerTime = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n        }\n\n        public void Deactivate()\n        {\n            m_activationTime = m_lastTriggerTime = float.NegativeInfinity;\n        }\n\n        public void Trigger()\n        {\n            m_lastTriggerTime = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n        }\n\n        public void ActivateIfInInventory(MyInventory inventory)\n        {\n            MyInventoryItem item;\n            switch (Type())\n            {\n                case MyMedicineType.MEDIKIT:\n                    item = inventory.GetInventoryItem(MyMwcObjectBuilderTypeEnum.SmallShip_Tool, (int?)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.MEDIKIT);\n                    if (item != null)\n                    {\n                        Activate();\n                        inventory.RemoveInventoryItemAmount(ref item, 1);\n                    }\n                    break;\n                case MyMedicineType.ANTIRADIATION_MEDICINE:\n                    item = inventory.GetInventoryItem(MyMwcObjectBuilderTypeEnum.SmallShip_Tool, (int?)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.ANTIRADIATION_MEDICINE);\n                    if (item != null)\n                    {\n                        Activate();\n                        inventory.RemoveInventoryItemAmount(ref item, 1);\n                    }\n                    break;\n                case MyMedicineType.HEALTH_ENHANCING_MEDICINE:\n                    item = inventory.GetInventoryItem(MyMwcObjectBuilderTypeEnum.SmallShip_Tool, (int?)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.HEALTH_ENHANCING_MEDICINE);\n                    if (item != null)\n                    {\n                        Activate();\n                        inventory.RemoveInventoryItem(item, true);\n                    }\n                    break;\n                case MyMedicineType.PERFORMANCE_ENHANCING_MEDICINE:\n                    item = inventory.GetInventoryItem(MyMwcObjectBuilderTypeEnum.SmallShip_Tool, (int?)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.PERFORMANCE_ENHANCING_MEDICINE);\n                    if (item != null)\n                    {\n                        Activate();\n                        inventory.RemoveInventoryItem(item, true);\n                    }\n                    break;\n            }\n        }\n\n        #endregion\n\n        #region Queries\n\n        public MyMedicineType Type()\n        {\n            return m_type;\n        }\n\n        public float Duration()\n        {\n            switch (m_type)\n            {\n                case MyMedicineType.MEDIKIT: return MyMedicineConstants.MEDIKIT_DURATION;\n                case MyMedicineType.ANTIRADIATION_MEDICINE: return MyMedicineConstants.ANTIRADIATION_MEDICINE_DURATION;\n                case MyMedicineType.HEALTH_ENHANCING_MEDICINE: return MyMedicineConstants.HEALTH_ENHANCING_MEDICINE_DURATION;\n                case MyMedicineType.PERFORMANCE_ENHANCING_MEDICINE: return MyMedicineConstants.PERFORMANCE_ENHANCING_MEDICINE_DURATION;\n                default: MyCommonDebugUtils.AssertDebug(false, \"Unknown medicine type.\"); return 0;\n            }\n        }\n\n        public float TimeSinceActivation()\n        {\n            return MyMinerGame.TotalGamePlayTimeInMilliseconds - m_activationTime;\n        }\n\n        public bool IsActive()\n        {\n            return TimeSinceActivation() >= 0 && TimeSinceActivation() < Duration();\n        }\n\n        public float ActiveTimeSinceLastTriggered()\n        {\n            return MyMinerGame.TotalGamePlayTimeInMilliseconds - m_lastTriggerTime - Math.Max(0, TimeSinceActivation() - Duration());\n        }\n\n        public bool WasActiveSinceLastTriggered()\n        {\n            return ActiveTimeSinceLastTriggered() > 0;\n        }\n\n        #endregion\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Tools/MyNanoRepairToolBase.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Gameplay;\nusing MinerWars.AppCode.Game.Utils;\n\nnamespace MinerWars.AppCode.Game.Entities.Tools\n{\n    abstract class MyNanoRepairToolBase\n    {                \n        public abstract void Use();\n\n        protected void UseForEntity(MyEntity entity)\n        {\n            if (entity.IsDamaged() && entity.HealthRatio < MyGameplayConstants.NANO_REPAIR_TOOL_REPAIR_TO_HEALTH_MAX)\n            {\n                float repairHealth =\n                    Math.Min(\n                        entity.MaxHealth * MyGameplayConstants.NANO_REPAIR_TOOL_REPAIR_HEALTH_RATIO_PER_SEC *\n                        MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS,\n                        entity.MaxHealth * MyGameplayConstants.NANO_REPAIR_TOOL_REPAIR_TO_HEALTH_MAX - entity.Health);\n                entity.AddHealth(repairHealth);\n            }            \n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Tools/MyNanoRepairToolEntity.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Linq;\nusing System.Text;\n\nnamespace MinerWars.AppCode.Game.Entities.Tools\n{\n    class MyNanoRepairToolEntity : MyNanoRepairToolBase\n    {\n        private MyEntity m_entity;\n\n        public MyNanoRepairToolEntity(MyEntity entity)            \n        {\n            Debug.Assert(entity != null);\n            m_entity = entity;            \n        }        \n\n        public override void Use()\n        {\n            UseForEntity(m_entity);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Tools/MyNanoRepairToolFoundationFactory.cs",
    "content": "﻿//using System;\n//using System.Collections.Generic;\n//using System.Diagnostics;\n//using System.Linq;\n//using System.Text;\n//using MinerWars.AppCode.Game.Gameplay;\n//using MinerWars.AppCode.Game.Entities.FoundationFactory;\n//using MinerWars.AppCode.Game.Entities.Prefabs;\n//using MinerWars.AppCode.Game.Prefabs;\n//using MinerWars.AppCode.Game.Utils;\n\n//namespace MinerWars.AppCode.Game.Entities.Tools\n//{\n//    class MyNanoRepairToolFoundationFactory : MyNanoRepairToolBase\n//    {\n//        private MyFoundationFactory m_foundationFactory;\n\n//        public MyNanoRepairToolFoundationFactory(MyFoundationFactory foundationFactory)            \n//        {\n//            Debug.Assert(foundationFactory != null);\n//            m_foundationFactory = foundationFactory;            \n//        }        \n\n//        public override void Use()\n//        {\n//            foreach (MyPrefabBase prefab in m_foundationFactory.PrefabContainer.GetPrefabs())\n//            {\n//                UseForEntity(prefab);\n//            }\n//        }\n//    }\n//}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Tools/MyNanoRepairToolSmallShip.cs",
    "content": "﻿//using System;\n//using System.Collections.Generic;\n//using System.Diagnostics;\n//using System.Linq;\n//using System.Text;\n//using MinerWars.AppCode.Game.Gameplay;\n//using MinerWars.AppCode.Game.Utils;\n\n//namespace MinerWars.AppCode.Game.Entities.Tools\n//{\n//    class MyNanoRepairToolSmallShip : MyNanoRepairToolBase\n//    {\n//        private MySmallShip m_smallShip;\n\n//        public MyNanoRepairToolSmallShip(MySmallShip smallShip)\n//        {\n//            Debug.Assert(smallShip != null);\n//            m_smallShip = smallShip;\n//        }\n\n//        public override void Use()\n//        {\n//            UseForEntity(m_smallShip);\n//        }\n//    }\n//}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Tools/MyNuclearDrill.cs",
    "content": "using System;\nusing System.Diagnostics;\n\n\nnamespace MinerWars.AppCode.Game.Entities\n{\n    using System.Text;\n    using Audio;\n    using CommonLIB.AppCode.ObjectBuilders.SubObjects;\n    using MinerWarsMath;\n    using Models;\n    using Utils;\n    using CommonLIB.AppCode.ObjectBuilders;\n    using TransparentGeometry.Particles;\n    using SubObjects;\n    using MinerWars.AppCode.Game.GUI;\n    using MinerWars.AppCode.Game.Managers.Session;\n    using MinerWars.CommonLIB.AppCode.Import;\n\n    class MyNuclearDrill : MyContactDrill\n    {\n        MyDrillHead m_drillHead;\n\n        MyParticleEffect m_nuclearEffect;\n\n        public override void Init(StringBuilder hudLabelText, MySmallShip parentObject,\n            Vector3 position, Vector3 forwardVector, Vector3 upVector,\n            MyMwcObjectBuilder_SmallShip_Weapon objectBuilder)\n        {\n            m_model = MyModelsEnum.NuclearDrill;\n\n            //We want nuclear drills only in 2.5D\n            System.Diagnostics.Debug.Assert(MySession.Is25DSector);\n\n\n            /*\n            m_movingCueEnum = MySoundCuesEnum.VehToolNuclearDrillLoop3d;\n            m_movingCueReleaseEnum = MySoundCuesEnum.VehToolNuclearDrillRelease3d;\n            m_drillCueEnum = MySoundCuesEnum.VehToolNuclearDrillColliding3d;\n            m_drillOtherCueEnum = MySoundCuesEnum.VehToolNuclearDrillCollidingOther3d;\n            m_drillOtherCueReleaseEnum = MySoundCuesEnum.VehToolNuclearDrillCollidingOtherRelease3d;\n            m_drillCueReleaseEnum = MySoundCuesEnum.VehToolNuclearDrillCollidingRelease3d;\n            m_idleCueEnum = MySoundCuesEnum.VehToolNuclearDrillIdle3d;\n              */\n\n            m_movingCueEnum = MySoundCuesEnum.VehToolSawIdle3d;\n            m_movingCueReleaseEnum = MySoundCuesEnum.VehToolLaserDrillRelease3d;\n            m_drillCueEnum = MySoundCuesEnum.VehToolLaserDrillColliding3d;\n            m_drillOtherCueEnum = MySoundCuesEnum.VehToolLaserDrillColliding3d;\n            m_drillOtherCueReleaseEnum = MySoundCuesEnum.VehToolLaserDrillCollidingRelease3d;\n            m_drillCueReleaseEnum = MySoundCuesEnum.VehToolLaserDrillCollidingRelease3d;\n            m_idleCueEnum = MySoundCuesEnum.VehToolSawCut3d;\n\n            base.Init(hudLabelText, parentObject, position, forwardVector, upVector, objectBuilder);\n\n            m_minDrillingDuration = MyNuclearDrillDeviceConstants.MIN_DRILLING_DURATION;\n            m_range = MyNuclearDrillDeviceConstants.RANGE;\n            m_radius = MyNuclearDrillDeviceConstants.RADIUS;\n            m_damage = MyNuclearDrillDeviceConstants.DAMAGE_PER_SECOND;\n            m_maxRotatingSpeedDrilling = MyNuclearDrillDeviceConstants.MAX_ROTATING_SPEED_DRILLING;\n            m_maxRotatingSpeedIdle = MyNuclearDrillDeviceConstants.MAX_ROTATING_SPEED_IDLE;\n\n            // drill head:\n            Matrix matrix = Matrix.Identity;\n            MyModelDummy dummy;\n            if (ModelLod0.Dummies.TryGetValue(\"head\", out dummy))\n                matrix = dummy.Matrix;\n            else\n                Debug.Assert(false, \"Dummy 'head' in nuclear drill model is missing.\");\n\n            m_drillHead = new MyDrillHead();\n            m_drillHead.Init(matrix.Translation, this, MyModelsEnum.NuclearDrillHead);\n        }\n\n        public override void UpdateAfterSimulation()\n        {\n            base.UpdateAfterSimulation();\n\n            if (CurrentState == MyDrillStateEnum.Drilling)\n            {\n                if (m_nuclearEffect == null)\n                {\n                    m_nuclearEffect = MyParticlesManager.CreateParticleEffect((int) MyParticleEffectsIDEnum.Drill_Nuclear);\n\n                    //Must be done with handler because we need to set world matrix until effect totally dies\n                    m_nuclearEffect.OnDelete += OnNuclearEffectDeleted;\n                }\n            }\n            else\n            {\n                if (m_nuclearEffect != null)\n                {\n                    m_nuclearEffect.Stop();\n                    m_nuclearEffect.OnDelete -= OnNuclearEffectDeleted;\n                    m_nuclearEffect = null;\n                }\n            }\n\n            if (m_nuclearEffect != null)\n            {\n                Matrix effectMatrix = Matrix.CreateWorld(m_positionMuzzleInWorldSpace + MySmallShipConstants.ALL_SMALL_SHIP_MODEL_SCALE * 2 * WorldMatrix.Forward, WorldMatrix.Forward, WorldMatrix.Up);\n                m_nuclearEffect.WorldMatrix = effectMatrix;\n            }\n\n            if (m_drillHead != null)\n            {\n                m_drillHead.SetWorldMatrixForCockpit(ref m_worldMatrixForRenderingFromCockpitView);\n                m_drillHead.RotationSpeed = m_rotatingSpeed;\n            }\n        }\n\n        private void OnNuclearEffectDeleted(object sender, EventArgs e)\n        {\n            m_nuclearEffect = null;\n        }\n\n        public override void Close()\n        {\n            base.Close();\n\n            if (m_nuclearEffect != null)\n            {\n                m_nuclearEffect.Stop();\n                m_nuclearEffect = null;\n            }\n        }\n\n        protected override MyMwcObjectBuilder_Base GetObjectBuilderInternal(bool getExactCopy)\n        {\n            MyMwcObjectBuilder_Base objectBuilder = base.GetObjectBuilderInternal(getExactCopy);\n            if (objectBuilder == null)\n            {\n                objectBuilder = new MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Nuclear);\n            }\n            return objectBuilder;\n        }\n\n        protected override float GetRadiusNeededForTunel()\n        {\n            return (Vector3.Distance(Parent.ModelLod0.BoundingSphere.Center, this.LocalMatrix.Translation) +\n                ModelLod0.BoundingSphere.Radius) * (MySession.Is25DSector ? MyDrillDeviceConstants.BIG_SPHERE_RADIUS_MULTIPLIER * 1.8f : MyDrillDeviceConstants.BIG_SPHERE_RADIUS_MULTIPLIER);\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Tools/MyPressureDrill.cs",
    "content": "namespace MinerWars.AppCode.Game.Entities\n{\n    using System;\n    using System.Text;\n    using App;\n    using Audio;\n    using CommonLIB.AppCode.ObjectBuilders.SubObjects;\n    using CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\n    using MinerWarsMath;\n    using Models;\n    using TransparentGeometry.Particles;\n    using Utils;\n    using CommonLIB.AppCode.ObjectBuilders;\n    \n\n    class MyPressureDrill : MyDrillBase\n    {\n        MySoundCue? m_drillChargingCue;\n        MySoundCue? m_drillBlastCue;\n        MySoundCue? m_pressureIdleCue;\n\n        enum PressureState\n        {\n            Init,\n            Charging,\n            Ready,\n            Pushed\n        }\n\n        PressureState m_state = PressureState.Pushed;\n\n        private MyParticleEffect m_chargingPressureEffect;\n        private MyParticleEffect m_pressureFireEffect;\n\n        public override void Init(StringBuilder hudLabelText, MySmallShip parentObject,\n            Vector3 position, Vector3 forwardVector, Vector3 upVector,\n            MyMwcObjectBuilder_SmallShip_Weapon objectBuilder)\n        {\n            m_model = MyModelsEnum.PressureDrill;\n            m_movingCueEnum = null;\n            m_movingCueReleaseEnum = null;\n            m_drillCueEnum = null;\n            m_drillOtherCueEnum = null;\n            m_drillCueReleaseEnum = null;\n            m_drillOtherCueReleaseEnum = null;\n\n            m_radius = MyPressureDrillDeviceConstants.RADIUS;\n            m_damage = MyPressureDrillDeviceConstants.DAMAGE;\n\n            base.Init(hudLabelText, parentObject, position, forwardVector, upVector, objectBuilder);\n        }\n\n        //  Every child of this base class must implement Shot() method, which shots projectile or missile.\n        //  Method returns true if something was shot. False if not (because interval between two shots didn't pass)\n        public override bool Shot(MyMwcObjectBuilder_SmallShip_Ammo usedAmmo)\n        {\n            if ((MyMinerGame.TotalGamePlayTimeInMilliseconds - m_lastTimeStarted) < MyPressureDrillDeviceConstants.SHOT_INTERVAL_IN_MILISECONDS)\n                return false;\n\n            if (!base.Shot(usedAmmo))\n                return false;\n\n            m_state = PressureState.Init;\n\n            return true;\n        }\n\n        public override bool Eject()\n        {\n            switch (m_state)\n            {\n                case PressureState.Init:\n                case PressureState.Ready:\n                case PressureState.Pushed:\n                    return base.Eject();\n                case PressureState.Charging:\n                    return true;\n                default:\n                    throw new ArgumentOutOfRangeException();\n            }\n        }\n\n        private void StartPressureIdleCue()\n        {\n            if (m_pressureIdleCue == null || m_pressureIdleCue.Value.IsPlaying == false)\n            {\n                m_pressureIdleCue = MyAudio.AddCue2dOr3d(Parent, MySoundCuesEnum.VehToolPressureDrillIdle3d, WorldMatrix.Translation,\n                    WorldMatrix.Forward, WorldMatrix.Up, this.Parent.Physics.LinearVelocity);\n            }\n        }\n\n        private void StopPressureIdleCue()\n        {\n            if (m_pressureIdleCue != null &&  m_pressureIdleCue.Value.IsPlaying)\n            {\n                m_pressureIdleCue.Value.Stop(SharpDX.XACT3.StopFlags.Release);\n            }\n        }\n\n\n        public override void UpdateAfterSimulation()\n        {\n            base.UpdateAfterSimulation();\n\n            var muzzlePosition = m_positionMuzzleInWorldSpace;\n            muzzlePosition += NearFlag\n                                     ? MySmallShipConstants.ALL_SMALL_SHIP_MODEL_SCALE * WorldMatrix.Forward\n                                     : .5f * WorldMatrix.Forward;\n            if (m_state == PressureState.Pushed && CurrentState == MyDrillStateEnum.Activated)\n            {\n                StartPressureIdleCue();\n            }\n            else\n            {\n                StopPressureIdleCue();\n            }\n\n            if ((MyMinerGame.TotalGamePlayTimeInMilliseconds - m_lastTimeStarted) >= MyPressureDrillDeviceConstants.SHOT_INTERVAL_IN_MILISECONDS)\n            {\n                StopDrillingCue();\n                StopMovingCue();\n                m_state = PressureState.Pushed;\n\n                return;\n            }\n\n            if (m_pressureFireEffect != null && !m_pressureFireEffect.IsStopped)\n            {\n                m_pressureFireEffect.WorldMatrix = Matrix.CreateWorld(\n                    muzzlePosition + 1.5f * WorldMatrix.Forward,\n                    WorldMatrix.Forward,\n                    WorldMatrix.Up);\n            }\n\n            switch (m_state)\n            {\n                case PressureState.Init:\n                    StartDrillChargingCue();\n                    m_state = PressureState.Charging;\n\n                    m_chargingPressureEffect = MyParticlesManager.CreateParticleEffect((int)MyParticleEffectsIDEnum.Drill_Pressure_Charge);\n                    m_chargingPressureEffect.WorldMatrix = Matrix.CreateWorld(muzzlePosition, WorldMatrix.Forward, WorldMatrix.Up);\n                    break;\n\n                case PressureState.Charging:\n                    {\n                        ((MySmallShip)Parent).IncreaseHeadShake(MyDrillDeviceConstants.SHAKE_DURING_ROTATION);\n\n                        if (m_chargingPressureEffect != null)\n                        {\n                            m_chargingPressureEffect.WorldMatrix = Matrix.CreateWorld(muzzlePosition, WorldMatrix.Forward, WorldMatrix.Up);\n                        }\n\n                        if (m_drillChargingCue == null || !m_drillChargingCue.Value.IsPlaying)\n                            m_state = PressureState.Ready;\n                    }\n                    break;\n\n                case PressureState.Ready:\n                    {\n                        \n                        m_chargingPressureEffect.Stop();\n                        m_chargingPressureEffect = null;\n\n                        m_pressureFireEffect = MyParticlesManager.CreateParticleEffect((int)MyParticleEffectsIDEnum.Drill_Pressure_Fire);\n                        m_pressureFireEffect.OnDelete += OnPressureFireEffectDelete;\n                        m_pressureFireEffect.WorldMatrix = Matrix.CreateWorld(muzzlePosition, WorldMatrix.Forward, WorldMatrix.Up);\n\n                        //  Check for collision with drill and world\n                        MyLine line = new MyLine(GetPosition(), GetPosition() + 2 * m_radius * WorldMatrix.Forward, true);\n\n                        MyIntersectionResultLineTriangleEx? intersection = MyEntities.GetIntersectionWithLine(ref line, Parent, null);\n\n                        if (intersection != null && intersection.Value.Entity.Physics != null)\n                        {\n                            var voxelMap = intersection.Value.Entity as MyVoxelMap;\n\n                            StartDrillingCue(voxelMap != null);\n\n                            if (voxelMap != null)\n                            {\n\n                                ((MySmallShip)Parent).IncreaseHeadShake(MyDrillDeviceConstants.SHAKE_DURING_IN_VOXELS);\n\n                                //  We found voxel so lets make tunel into it\n                                BoundingSphere bigSphereForTunnel = new BoundingSphere(GetPosition() + 20 * WorldMatrix.Forward, m_radius);\n\n                                for (int i = 1; i < (int)m_radius; i++)\n                                {\n                                    bigSphereForTunnel.Center = GetPosition() + (20 + i) * WorldMatrix.Forward;\n                                    bigSphereForTunnel.Radius = i * 2;\n\n                                    CutOutFromVoxel(voxelMap, ref bigSphereForTunnel);\n                                }\n\n                                CreateImpactEffect(intersection.Value.IntersectionPointInWorldSpace, intersection.Value.NormalInWorldSpace, MyParticleEffectsIDEnum.Drill_Pressure_Impact);\n                                StartDrillBlastRockCue();\n                            }\n                            //  Display particles when we are in contact with voxel\n                            else\n                            {\n                                ((MySmallShip)Parent).IncreaseHeadShake(MyDrillDeviceConstants.SHAKE_DURING_ROTATION);\n\n                                CreateImpactEffect(intersection.Value.IntersectionPointInWorldSpace, intersection.Value.NormalInWorldSpace, MyParticleEffectsIDEnum.Drill_Pressure_Impact_Metal);\n\n                                intersection.Value.Entity.DoDamage(0, m_damage, 0, MyDamageType.Drill, MyAmmoType.Explosive, Parent);\n\n                                StartDrillBlastOtherCue();\n                            }\n\n                        }\n                        else\n                        {\n                            StartDrillBlastCue();\n                        }\n                        m_state = PressureState.Pushed;\n                    }\n                    break;\n\n                case PressureState.Pushed:\n                    {\n                        StopDrillingBlastCue();\n                        StopMovingCue();\n                    }\n                    break;\n            }\n        }\n\n        private void OnPressureFireEffectDelete(object sender, EventArgs e)\n        {\n            m_pressureFireEffect = null;\n        }\n\n        protected override void Drill() { }\n\n        public override void Close()\n        {\n            base.Close();\n\n            if (m_chargingPressureEffect != null)\n            {\n                m_chargingPressureEffect.Stop();\n                m_chargingPressureEffect = null;\n            }\n            if (m_pressureFireEffect != null)\n            {\n                m_pressureFireEffect.Stop();\n                m_pressureFireEffect = null;\n            }\n            if (m_drillChargingCue != null)\n            {\n                m_drillChargingCue.Value.Stop(SharpDX.XACT3.StopFlags.Release);\n                m_drillChargingCue = null;\n            }\n        }\n\n        void StartDrillChargingCue()\n        {\n            if ((m_drillChargingCue == null) || (m_drillChargingCue.Value.IsPlaying == false))\n            {\n                m_drillChargingCue = MyAudio.AddCue2dOr3d(Parent, MySoundCuesEnum.VehToolPressureDrillRecharge3d, WorldMatrix.Translation,\n                    WorldMatrix.Forward, WorldMatrix.Up, this.Parent.Physics.LinearVelocity);\n            }\n        }\n\n        void StartDrillBlastCue()\n        {\n            if ((m_drillBlastCue == null) || (m_drillBlastCue.Value.IsPlaying == false))\n            {\n                m_drillBlastCue = MyAudio.AddCue2dOr3d(Parent, MySoundCuesEnum.VehToolPressureDrillBlast3d, WorldMatrix.Translation,\n                WorldMatrix.Forward, WorldMatrix.Up, this.Parent.Physics.LinearVelocity);\n            }\n        }\n\n        void StartDrillBlastRockCue()\n        {\n            if ((m_drillBlastCue == null) || (m_drillBlastCue.Value.IsPlaying == false))\n            {\n                m_drillBlastCue = MyAudio.AddCue2dOr3d(Parent, MySoundCuesEnum.VehToolPressureDrillBlastRock3d, WorldMatrix.Translation,\n                WorldMatrix.Forward, WorldMatrix.Up, this.Parent.Physics.LinearVelocity);\n            }\n        }\n\n        void StartDrillBlastOtherCue()\n        {\n            if ((m_drillBlastCue == null) || (m_drillBlastCue.Value.IsPlaying == false))\n            {\n                m_drillBlastCue = MyAudio.AddCue2dOr3d(Parent, MySoundCuesEnum.VehToolPressureDrillBlastOther3d, WorldMatrix.Translation,\n                WorldMatrix.Forward, WorldMatrix.Up, this.Parent.Physics.LinearVelocity);\n            }\n        }\n\n        void StopDrillingBlastCue()\n        {\n            if ((m_drillBlastCue != null) && m_drillBlastCue.Value.IsPlaying)\n            {\n                //m_drillBlastCue.Value.Stop(SharpDX.XACT3.StopFlags.Release);\n            }\n        }\n\n\n\n        protected override MyMwcObjectBuilder_Base GetObjectBuilderInternal(bool getExactCopy)\n        {\n            MyMwcObjectBuilder_Base objectBuilder = base.GetObjectBuilderInternal(getExactCopy);\n            if (objectBuilder == null)\n            {\n                objectBuilder = new MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Pressure);\n            }\n            return objectBuilder;\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Tools/MySawDrill.cs",
    "content": "namespace MinerWars.AppCode.Game.Entities\n{\n    using System.Text;\n    using Audio;\n    using CommonLIB.AppCode.ObjectBuilders.SubObjects;\n    using MinerWarsMath;\n    using Models;\n    using Utils;\n    using CommonLIB.AppCode.ObjectBuilders;\n\n    class MySawDrill : MyDirectionalDrill\n    {\n        public override void Init(StringBuilder hudLabelText, MySmallShip parentObject,\n            Vector3 position, Vector3 forwardVector, Vector3 upVector,\n            MyMwcObjectBuilder_SmallShip_Weapon objectBuilder)\n        {\n            m_model = MyModelsEnum.SawDrill;\n            m_movingCueEnum = MySoundCuesEnum.VehToolSawLoop3d;\n            m_movingCueReleaseEnum = MySoundCuesEnum.VehToolSawRelease3d;\n            m_drillCueEnum = MySoundCuesEnum.VehToolSawCut3d;\n            m_drillOtherCueEnum = MySoundCuesEnum.VehToolSawCutOther3d;\n            m_drillOtherCueReleaseEnum = MySoundCuesEnum.VehToolSawCutOtherRelease3d;\n            m_drillCueReleaseEnum = MySoundCuesEnum.VehToolSawCutRelease3d;\n            m_idleCueEnum = MySoundCuesEnum.VehToolSawIdle3d;\n\n            base.Init(hudLabelText, parentObject, position, forwardVector, upVector, objectBuilder);\n\n            m_minDrillingDuration = MySawDrillDeviceConstants.MIN_DRILLING_DURATION;\n            m_range = MySawDrillDeviceConstants.RANGE;\n            m_radius = MySawDrillDeviceConstants.RADIUS;\n            m_damage = MySawDrillDeviceConstants.DAMAGE_PER_SECOND;\n            m_directionalEffectID = MyParticleEffectsIDEnum.Drill_Saw;\n        }\n\n        protected override MyMwcObjectBuilder_Base GetObjectBuilderInternal(bool getExactCopy)\n        {\n            MyMwcObjectBuilder_Base objectBuilder = base.GetObjectBuilderInternal(getExactCopy);\n            if (objectBuilder == null)\n            {                \n                objectBuilder = new MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Saw);                \n            }\n            return objectBuilder;\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Tools/MyThermalDrill.cs",
    "content": "using System;\nusing System.Diagnostics;\nusing MinerWars.AppCode.Game.Entities.SubObjects;\n\n\nnamespace MinerWars.AppCode.Game.Entities\n{\n    using System.Text;\n    using Audio;\n    using CommonLIB.AppCode.ObjectBuilders.SubObjects;\n    using MinerWarsMath;\n    using Models;\n    using TransparentGeometry.Particles;\n    using Utils;\n    using CommonLIB.AppCode.ObjectBuilders;\n    using MinerWars.CommonLIB.AppCode.Import;\n\n    class MyThermalDrill : MyContactDrill\n    {\n        MyDrillHead m_drillHead;\n\n        MyParticleEffect m_trailEffect;\n\n        public override void Init(StringBuilder hudLabelText, MySmallShip parentObject,\n            Vector3 position, Vector3 forwardVector, Vector3 upVector,\n            MyMwcObjectBuilder_SmallShip_Weapon objectBuilder)\n        {\n            m_model = MyModelsEnum.ThermalDrill;\n            m_movingCueEnum = MySoundCuesEnum.VehToolThermalDrillLoop3d;\n            m_movingCueReleaseEnum = MySoundCuesEnum.VehToolThermalDrillRelease3d;\n            m_drillCueEnum = MySoundCuesEnum.VehToolThermalDrillColliding3d;\n            m_drillOtherCueEnum = MySoundCuesEnum.VehToolThermalDrillCollidingOther3d;\n            m_drillOtherCueReleaseEnum = MySoundCuesEnum.VehToolThermalDrillCollidingOtherRelease3d;\n            m_drillCueReleaseEnum = MySoundCuesEnum.VehToolThermalDrillCollidingRelease3d;\n            m_idleCueEnum = MySoundCuesEnum.VehToolThermalDrillIdle3d;\n\n            base.Init(hudLabelText, parentObject, position, forwardVector, upVector, objectBuilder);\n\n            m_minDrillingDuration = MyThermalDrillDeviceConstants.MIN_DRILLING_DURATION;\n            m_range = MyThermalDrillDeviceConstants.RANGE;\n            m_radius = MyThermalDrillDeviceConstants.RADIUS;\n            m_damage = MyThermalDrillDeviceConstants.DAMAGE_PER_SECOND;\n            m_maxRotatingSpeedDrilling = MyThermalDrillDeviceConstants.MAX_ROTATING_SPEED_DRILLING;\n            m_maxRotatingSpeedIdle = MyThermalDrillDeviceConstants.MAX_ROTATING_SPEED_IDLE;\n\n            // drill head:\n            Matrix matrix = Matrix.Identity;\n            MyModelDummy dummy;\n            if (ModelLod0.Dummies.TryGetValue(\"head\", out dummy))\n                matrix = dummy.Matrix;\n            else\n                Debug.Assert(false, \"Dummy 'head' in thermal drill model is missing.\");\n\n            m_drillHead = new MyDrillHead();\n            m_drillHead.Init(matrix.Translation, this, MyModelsEnum.ThermalDrillHead);\n        }\n\n        public override void UpdateAfterSimulation()\n        {\n            base.UpdateAfterSimulation();\n\n            if (CurrentState == MyDrillStateEnum.Drilling)\n            {\n                if (m_trailEffect == null)\n                {\n                    m_trailEffect = MyParticlesManager.CreateParticleEffect((int)MyParticleEffectsIDEnum.Drill_Thermal);\n\n                    //Must be done with handler because we need to set world matrix until effect totally dies\n                    m_trailEffect.OnDelete += OnTrailEffectDeleted;\n                }\n            }\n            else\n            {\n                if (m_trailEffect != null)\n                {\n                    m_trailEffect.Stop();\n                    m_trailEffect = null;\n                }\n            }\n\n            if (m_trailEffect != null)\n            {\n                Matrix effectMatrix = Matrix.CreateWorld(m_positionMuzzleInWorldSpace + MySmallShipConstants.ALL_SMALL_SHIP_MODEL_SCALE * 2 * WorldMatrix.Forward, WorldMatrix.Forward, WorldMatrix.Up);\n                m_trailEffect.WorldMatrix = effectMatrix;\n            }\n\n            if (m_drillHead != null)\n            {\n                m_drillHead.SetWorldMatrixForCockpit(ref m_worldMatrixForRenderingFromCockpitView);\n                m_drillHead.RotationSpeed = -m_rotatingSpeed;\n            }\n        }\n\n        private void OnTrailEffectDeleted(object sender, EventArgs e)\n        {\n            m_trailEffect = null;\n        }\n\n        public override void Close()\n        {\n            if (m_trailEffect != null)\n            {\n                m_trailEffect.Stop();\n                m_trailEffect = null;\n            }\n            base.Close();\n        }\n\n        protected override MyMwcObjectBuilder_Base GetObjectBuilderInternal(bool getExactCopy)\n        {\n            MyMwcObjectBuilder_Base objectBuilder = base.GetObjectBuilderInternal(getExactCopy);\n            if (objectBuilder == null)\n            {\n                objectBuilder = new MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Thermal);\n            }\n            return objectBuilder;\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Tools/ToolKits/MyToolKit.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.World;\nusing MinerWars.AppCode.Game.Inventory;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing System.Linq.Expressions;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing System.Diagnostics;\n\nnamespace MinerWars.AppCode.Game.Entities.Tools.ToolKits\n{    \n    class MyToolKit\n    {\n        delegate float GetAmountDelegate(MySmallShip smallShipOwner, MyPlayer playerOwner);\n        delegate void AddAmountDelegate(MySmallShip smallShipOwner, MyPlayer playerOwner, float amount);    \n    \n        class MyToolKitDelegates\n        {\n            public GetAmountDelegate AmountDelegate { get; set; }\n            public GetAmountDelegate MaxAmountDelegate { get; set; }\n            public AddAmountDelegate AddAmountDelegate { get; set; }\n\n            public MyToolKitDelegates(GetAmountDelegate amountDelegate, GetAmountDelegate maxAmountDelegate, AddAmountDelegate addAmountDelegate)\n            {\n                AmountDelegate = amountDelegate;\n                MaxAmountDelegate = maxAmountDelegate;\n                AddAmountDelegate = addAmountDelegate;\n            }\n        }\n\n        #region Predefined delegates\n        // Player health\n        private static GetAmountDelegate GetPlayerHealth = delegate(MySmallShip smallShipOwner, MyPlayer playerOwner) { return playerOwner.Health; };\n        private static GetAmountDelegate GetPlayerMaxHealth = delegate(MySmallShip smallShipOwner, MyPlayer playerOwner) { return playerOwner.MaxHealth; };\n        private static AddAmountDelegate AddPlayerHealth = delegate(MySmallShip smallShipOwner, MyPlayer playerOwner, float amount) { playerOwner.AddHealth(amount, null); };\n        private static MyToolKitDelegates PlayerHealthDelegates = new MyToolKitDelegates(GetPlayerHealth, GetPlayerMaxHealth, AddPlayerHealth);\n\n        // Ship health\n        private static GetAmountDelegate GetShipHealth = delegate(MySmallShip smallShipOwner, MyPlayer playerOwner) { return smallShipOwner.Health; };\n        private static GetAmountDelegate GetShipMaxHealth = delegate(MySmallShip smallShipOwner, MyPlayer playerOwner) { return smallShipOwner.MaxHealth; };\n        private static AddAmountDelegate AddShipHealth = delegate(MySmallShip smallShipOwner, MyPlayer playerOwner, float amount) { smallShipOwner.Health += amount; };\n        private static MyToolKitDelegates ShipHealthDelegates = new MyToolKitDelegates(GetShipHealth, GetShipMaxHealth, AddShipHealth);\n\n        // Ship armor\n        private static GetAmountDelegate GetShipArmor = delegate(MySmallShip smallShipOwner, MyPlayer playerOwner) { return smallShipOwner.ArmorHealth; };\n        private static GetAmountDelegate GetShipMaxArmor = delegate(MySmallShip smallShipOwner, MyPlayer playerOwner) { return smallShipOwner.MaxArmorHealth; };\n        private static AddAmountDelegate AddShipArmor = delegate(MySmallShip smallShipOwner, MyPlayer playerOwner, float amount) { smallShipOwner.ArmorHealth += amount; };\n        private static MyToolKitDelegates ShipArmorDelegates = new MyToolKitDelegates(GetShipArmor, GetShipMaxArmor, AddShipArmor);\n\n        // Ship oxygen\n        private static GetAmountDelegate GetShipOxygen = delegate(MySmallShip smallShipOwner, MyPlayer playerOwner) { return smallShipOwner.Oxygen; };\n        private static GetAmountDelegate GetShipMaxOxygen = delegate(MySmallShip smallShipOwner, MyPlayer playerOwner) { return smallShipOwner.MaxOxygen; };\n        private static AddAmountDelegate AddShipOxygen = delegate(MySmallShip smallShipOwner, MyPlayer playerOwner, float amount) { smallShipOwner.Oxygen += amount; };\n        private static MyToolKitDelegates ShipOxygenDelegates = new MyToolKitDelegates(GetShipOxygen, GetShipMaxOxygen, AddShipOxygen);\n\n        // Ship fuel\n        private static GetAmountDelegate GetShipFuel = delegate(MySmallShip smallShipOwner, MyPlayer playerOwner) { return smallShipOwner.Fuel; };\n        private static GetAmountDelegate GetShipMaxFuel = delegate(MySmallShip smallShipOwner, MyPlayer playerOwner) { return smallShipOwner.MaxFuel; };\n        private static AddAmountDelegate AddShipFuel = delegate(MySmallShip smallShipOwner, MyPlayer playerOwner, float amount) { smallShipOwner.Fuel += amount; };\n        private static MyToolKitDelegates ShipFuelDelegates = new MyToolKitDelegates(GetShipFuel, GetShipMaxFuel, AddShipFuel);\n        #endregion        \n\n        #region delegates for tool kits\n        private static Dictionary<int, MyToolKitDelegates[]> m_delegatesPerToolKitType = new Dictionary<int, MyToolKitDelegates[]>()\n        {\n            { (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.HEALTH_KIT, new MyToolKitDelegates[]{ PlayerHealthDelegates} },\n            { (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.REPAIR_KIT, new MyToolKitDelegates[]{ ShipHealthDelegates, ShipArmorDelegates} },\n            { (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.OXYGEN_KIT, new MyToolKitDelegates[]{ ShipOxygenDelegates} },\n            { (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.FUEL_KIT, new MyToolKitDelegates[]{ ShipFuelDelegates} },\n        };\n        #endregion\n\n        private MySmallShip m_smallShipOwner;\n        private MyPlayer m_playerOwner;\n        private MyInventoryItem m_toolInventoryItem;\n        private MyToolKitDelegates[] m_delegates;\n\n        private MyToolKit(MySmallShip smallShipOwner, MyPlayer playerOwner, MyInventoryItem toolInventoryItem, MyToolKitDelegates[] delegates) \n        {\n            m_smallShipOwner = smallShipOwner;\n            m_playerOwner = playerOwner;\n            m_toolInventoryItem = toolInventoryItem;\n            m_delegates = delegates;\n        }\n\n        public void Update() \n        {\n            float maxAmountPercentageAdded = 0f;\n            foreach (MyToolKitDelegates delegates in m_delegates) \n            {\n                float maxAmount = delegates.MaxAmountDelegate(m_smallShipOwner, m_playerOwner);                \n                float amount = delegates.AmountDelegate(m_smallShipOwner, m_playerOwner);\n                if (amount < maxAmount) \n                {\n                    float amountPercentageToAdd = 1f - amount / maxAmount;\n                    amountPercentageToAdd = Math.Min(m_toolInventoryItem.Amount, amountPercentageToAdd);\n                    delegates.AddAmountDelegate(m_smallShipOwner, m_playerOwner, maxAmount * amountPercentageToAdd);\n                    maxAmountPercentageAdded = Math.Max(amountPercentageToAdd, maxAmountPercentageAdded);\n                }\n            }\n            if (maxAmountPercentageAdded > 0f)\n            {\n                m_toolInventoryItem.Amount -= maxAmountPercentageAdded;\n            }\n        }\n\n        public bool IsEmpty() \n        {\n            return m_toolInventoryItem.Amount <= 0f;\n        }\n\n        public MyInventoryItem GetToolInventoryItem() \n        {\n            return m_toolInventoryItem;\n        }\n\n        public static bool IsSupportedToolKitItem(MyInventoryItem toolInventoryItem) \n        {\n            return toolInventoryItem != null &&\n                   toolInventoryItem.Amount > 0f &&\n                   toolInventoryItem.ObjectBuilderType == MyMwcObjectBuilderTypeEnum.SmallShip_Tool &&\n                   toolInventoryItem.ObjectBuilderId != null &&\n                   m_delegatesPerToolKitType.ContainsKey(toolInventoryItem.ObjectBuilderId.Value);\n        }\n\n        public static MyToolKit CreateInstance(MySmallShip smallShipOwner, MyPlayer playerOwner, MyInventoryItem toolInventoryItem) \n        {\n            Debug.Assert(smallShipOwner != null);\n            Debug.Assert(playerOwner != null);\n            Debug.Assert(IsSupportedToolKitItem(toolInventoryItem));\n\n            MyToolKitDelegates[] delegates = m_delegatesPerToolKitType[toolInventoryItem.ObjectBuilderId.Value];\n            Debug.Assert(delegates.Length > 0);\n            return new MyToolKit(smallShipOwner, playerOwner, toolInventoryItem, delegates);\n        }\n    }    \n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Tools/ToolKits/MyToolKits.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.World;\nusing MinerWars.AppCode.Game.Inventory;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\n\nnamespace MinerWars.AppCode.Game.Entities.Tools.ToolKits\n{\n    class MyToolKits\n    {        \n        private MySmallShip m_smallShipOwner;\n        private MyPlayer m_playerOwner;\n        private List<MyToolKit> m_toolKits;\n        private List<MyInventoryItem> m_inventoryItemsHelper;\n        private OnInventoryContentChange OnInventoryContentChangedHandler;\n\n        public MyToolKits(MySmallShip smallShipOwner, MyPlayer playerOwner) \n        {\n            OnInventoryContentChangedHandler = new OnInventoryContentChange(SmallShipInventory_OnInventoryContentChange);\n            m_smallShipOwner = smallShipOwner;\n            m_playerOwner = playerOwner;\n            m_inventoryItemsHelper = new List<MyInventoryItem>();\n            m_toolKits = new List<MyToolKit>();\n            m_smallShipOwner.Inventory.OnInventoryContentChange += OnInventoryContentChangedHandler;\n            RefreshToolKits();\n        }        \n\n        private void SmallShipInventory_OnInventoryContentChange(MyInventory sender)\n        {\n            RefreshToolKits();\n        }\n\n        public void Update() \n        {\n            for (int i = m_toolKits.Count - 1; i >= 0; i--) \n            {\n                MyToolKit toolKit = m_toolKits[i];\n                toolKit.Update();\n                if (toolKit.IsEmpty()) \n                {\n                    m_smallShipOwner.Inventory.OnInventoryContentChange -= OnInventoryContentChangedHandler;\n                    m_smallShipOwner.Inventory.RemoveInventoryItem(toolKit.GetToolInventoryItem(), true);\n                    m_smallShipOwner.Inventory.OnInventoryContentChange += OnInventoryContentChangedHandler;\n                    m_toolKits.RemoveAt(i);\n                }\n            }\n        }\n\n        public void Close() \n        {\n            m_smallShipOwner.Inventory.OnInventoryContentChange -= OnInventoryContentChangedHandler;\n            OnInventoryContentChangedHandler = null;\n            m_toolKits.Clear();\n            m_toolKits = null;\n            m_inventoryItemsHelper.Clear();\n            m_inventoryItemsHelper = null;\n            m_smallShipOwner = null;\n            m_playerOwner = null;\n        }\n\n        private void RefreshToolKits() \n        {\n            m_toolKits.Clear();\n            m_inventoryItemsHelper.Clear();\n            m_smallShipOwner.Inventory.GetInventoryItems(ref m_inventoryItemsHelper, MyMwcObjectBuilderTypeEnum.SmallShip_Tool, null);\n            foreach (MyInventoryItem inventoryItem in m_inventoryItemsHelper) \n            {\n                if (MyToolKit.IsSupportedToolKitItem(inventoryItem)) \n                {\n                    m_toolKits.Add(MyToolKit.CreateInstance(m_smallShipOwner, m_playerOwner, inventoryItem));\n                }\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/WayPoints/MyWayPoint.cs",
    "content": "﻿using System;\nusing MinerWarsMath;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing System.Collections.Generic;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.AppCode.Game.Utils;\nusing SysUtils;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.GUI;\nusing KeenSoftwareHouse.Library.Memory;\nusing MinerWars.AppCode.Physics;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.GUI.Helpers;\nusing MinerWars.AppCode.Game.Editor;\nusing KeenSoftwareHouse.Library.Trace;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing System.Text;\nusing MinerWars.AppCode.Game.Gameplay;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.AppCode.Game.Prefabs;\nusing System.Diagnostics;\nusing MinerWars.AppCode.Game.HUD;\nusing MinerWars.AppCode.Physics.Collisions;\nusing KeenSoftwareHouse.Library.Parallelization.Threading;\nusing SysUtils.Utils;\n\nnamespace MinerWars.AppCode.Game.Entities.WayPoints\n{\n    class MyWayPoint : MyEntity\n    {\n        #region 3D position and distance\n\n        public Vector3 Position  // world position; orientation doesn't matter\n        {\n            get { return GetPosition(); }\n            set { SetPosition(value); }\n        }\n\n        // Get the distance between two vertices, no matter their parents.\n        public static float Distance(MyWayPoint v1, MyWayPoint v2)\n        {\n            return Vector3.Distance(v1.Position, v2.Position);\n        }\n\n        #endregion\n\n        #region Edges\n\n        private HashSet<MyWayPoint> m_neighbors;\n        public static FastResourceLock NeighborsLock = new FastResourceLock();\n\n        public HashSet<MyWayPoint> Neighbors\n        {\n            get { return m_neighbors; }\n        }\n\n        // Add a symmetric edge between two vertices. O(1)\n        public static void Connect(MyWayPoint v1, MyWayPoint v2)\n        {\n            if (v1 == v2) return;\n            using (NeighborsLock.AcquireExclusiveUsing())\n            {\n                MyWayPointGraph.MakeConnectedComponentsDirty();\n                v1.m_neighbors.Add(v2);\n                v2.m_neighbors.Add(v1);\n            }\n        }\n\n        // Add a symmetric edge between two vertices if there's nothing blocking the way.\n        // Returns whether the connection exists after the raycast.\n        public static bool ConnectIfVisible(MyWayPoint v1, MyWayPoint v2)\n        {\n            if (v1 == v2) return true;\n            if (v1.Neighbors.Contains(v2)) return true;\n            if (v1.Position == v2.Position)\n            {\n                Connect(v1, v2);\n                return true;\n            }\n            var line = new MyLine(v1.Position, v2.Position, true);\n            if (MyEntities.GetAnyIntersectionWithLine(ref line, null, null, true, true, true, false) == null)\n            {\n                Connect(v1, v2);\n                return true;\n            }\n            return false;\n        }\n\n        // Add a symmetric edge between two vertices if there are no AABBs blocking the way.\n        // Returns whether the connection exists after the raycast.\n        public static bool ConnectIfNoAABBBlockers(MyWayPoint v1, MyWayPoint v2, MyEntity ignore1 = null, MyEntity ignore2 = null)\n        {\n            if (v1 == v2) return true;\n            if (v1.Neighbors.Contains(v2)) return true;\n            if (v1.Position == v2.Position)\n            {\n                Connect(v1, v2);\n                return true;\n            }\n            var line = new MyLine(v1.Position, v2.Position, true);\n            if (!MyEntities.IsAnyIntersectionWithLineAABBOnly(ref line, ignore1, ignore2))\n            {\n                Connect(v1, v2);\n                return true;\n            }\n            return false;\n        }\n\n        // Remove an edge if it exists. O(1)\n        public static void Disconnect(MyWayPoint v1, MyWayPoint v2)\n        {\n            if (v1 == v2) return;\n            using (NeighborsLock.AcquireExclusiveUsing())\n            {\n                MyWayPointGraph.MakeConnectedComponentsDirty();\n                v1.m_neighbors.Remove(v2);\n                v2.m_neighbors.Remove(v1);\n            }\n        }\n\n        // Add a symmetric edge between this and all vertices from a list. O(n)\n        public void ConnectTo(IEnumerable<MyWayPoint> newNeighbors)\n        {\n            foreach (var v in newNeighbors)\n                Connect(this, v);\n        }\n\n        // Remove all edges to vertices from a list. O(others.Count)\n        public void DisconnectFrom(IEnumerable<MyWayPoint> others)\n        {\n            foreach (var v in others)\n                Disconnect(this, v);\n        }\n\n        // Remove all edges from this. O(deg(this))\n        public void DisconnectFromAllNeighbors()\n        {\n            using (NeighborsLock.AcquireExclusiveUsing())\n            {\n                MyWayPointGraph.MakeConnectedComponentsDirty();\n                foreach (var v in m_neighbors)\n                    v.m_neighbors.Remove(this);\n                m_neighbors.Clear();\n            }\n        }\n\n        // Find out whether there are any edges between any vertices from a list. O(n^2)\n        public static bool AnyEdgesBetween(IEnumerable<MyWayPoint> vertices)\n        {\n            foreach (var v in vertices)\n                foreach (var w in vertices)\n                    if (v.m_neighbors.Contains(w))\n                        return true;\n            return false;\n        }\n\n        // Add symmetric edges between all vertices from a list. O(n^2)\n        public static void ConnectAll(IEnumerable<MyWayPoint> vertices)\n        {\n            foreach (var v in vertices)\n                v.ConnectTo(vertices);\n        }\n\n        // Remove all edges between all vertices from a list. O(n^2)\n        public static void DisconnectAll(IEnumerable<MyWayPoint> vertices)\n        {\n            foreach (var v in vertices)\n                v.DisconnectFrom(vertices);\n        }\n\n        // Return true if the given waypoints are connected by a path. O(n) (or O(1) if connected components were unchanged)\n        /// <summary>This function needs to be called with EntityCloseLock already acquired, or not an issue.</summary>\n        public static bool Connected(IEnumerable<MyWayPoint> vertices)\n        {\n            int component = -1;\n            bool first = true;\n            foreach (var v in vertices)\n            {\n                if (first)\n                {\n                    component = MyWayPointGraph.GetConnectedComponentId(v);\n                    first = false;\n                }\n                else\n                {\n                    int c = MyWayPointGraph.GetConnectedComponentId(v);\n                    if (c != component) return false;\n                    else if (c == -1) return false;  // two vertices that don't lie in the waypoint graph must be unconnected\n                }\n            }\n            return true;  // 0 or 1 vertices are always connected\n        }\n\n        // Return true if the given waypoints are connected by a path. O(n) (or O(1) if connected components were unchanged)\n        /// <summary>This function needs to be called with EntityCloseLock already acquired, or not an issue.</summary>\n        public static bool Connected(MyWayPoint v1, MyWayPoint v2)\n        {\n            int c1 = MyWayPointGraph.GetConnectedComponentId(v1);\n            int c2 = MyWayPointGraph.GetConnectedComponentId(v2);\n            return c1 == c2 && c1 != -1;\n        }\n\n        #endregion\n\n        #region A* path searching\n\n        static private int m_searchId = 0;     // Path search id. Incremented on every search.\n        private MyWayPoint m_cameFrom;         // Previous vertex in the current path. If it's the same as the vertex, it's the start of the path.\n        private float m_fScore;                // Path length from the start + estimated path length to the goal.\n        private float m_gScore;                // Path length from the start.\n        private int m_visitedSearchId = 0;     // Path search id in which this vertex was last visited. If visitedSearchId==searchId, the vertex was already visited in this search.\n\n        public int SearchId\n        {\n            get { return m_visitedSearchId; }\n            set { m_visitedSearchId = value; }\n        }\n\n        // Reset search ids to 0 (to be used on search id overflow).\n        public void ResetVisitedSearchId()\n        {\n            m_visitedSearchId = 0;\n        }\n\n        // Sort vertices in the open set by lowest f; break ties by highest g (makes the last iteration faster).\n        private class MyWayPointVertexAStarComparer : IComparer<MyWayPoint>\n        {\n            public int Compare(MyWayPoint u, MyWayPoint v)\n            {\n                int fComparison = u.m_fScore.CompareTo(v.m_fScore);\n                if (fComparison != 0) return fComparison;\n                return v.m_gScore.CompareTo(u.m_gScore);\n            }\n        }\n\n        private static MyWayPointVertexAStarComparer m_aStarComparer;\n        private static object m_shortestPathLock = new object();\n\n        private static HashSet<Tuple<MyWayPoint, MyWayPoint>> m_blockedEdgesForBots = new HashSet<Tuple<MyWayPoint, MyWayPoint>>();\n        private static int m_blockedEdgesChangeId = 0;\n\n        private static HashSet<Tuple<MyWayPoint, MyWayPoint>> m_blockedEdgesForPlayer = new HashSet<Tuple<MyWayPoint, MyWayPoint>>();\n\n        public static FastResourceLock BlockedEdgesLock = new FastResourceLock();\n\n        public static void AddBlockedEdgesForBots(Tuple<MyWayPoint, MyWayPoint> blockedEdges) \n        {\n            if (!BlockedEdgesForBots.Contains(blockedEdges)) \n            {\n                using (BlockedEdgesLock.AcquireExclusiveUsing())\n                {\n                    BlockedEdgesForBots.Add(blockedEdges);\n                    m_blockedEdgesChangeId++;\n                }\n            }\n        }\n\n        public static void RemoveBlockedEdgesForBots(Tuple<MyWayPoint, MyWayPoint> blockedEdges)\n        {\n            using (BlockedEdgesLock.AcquireExclusiveUsing())\n            {\n                if (BlockedEdgesForBots.Remove(blockedEdges))\n                {\n                    m_blockedEdgesChangeId++;\n                }\n            }\n        }\n\n        public static HashSet<Tuple<MyWayPoint, MyWayPoint>> BlockedEdgesForBots\n        {\n            get { return m_blockedEdgesForBots; }\n        }\n\n        public static HashSet<Tuple<MyWayPoint, MyWayPoint>> BlockedEdgesForPlayer\n        {\n            get { return m_blockedEdgesForPlayer; }\n        }\n\n        public static int BlockedEdgesChangeId \n        {\n            get { return m_blockedEdgesChangeId; }\n        }\n\n\n        public static void AddBlockedEdgesForPlayer(Tuple<MyWayPoint, MyWayPoint> blockedEdges)\n        {\n            using (BlockedEdgesLock.AcquireExclusiveUsing())\n            {\n                if (!BlockedEdgesForPlayer.Contains(blockedEdges))\n                {\n                    BlockedEdgesForPlayer.Add(blockedEdges);\n                }\n            }\n        }\n\n        public static void RemoveBlockedEdgesForPlayer(Tuple<MyWayPoint, MyWayPoint> blockedEdges)\n        {\n            using (BlockedEdgesLock.AcquireExclusiveUsing())\n            {\n                if (BlockedEdgesForPlayer.Remove(blockedEdges))\n                {\n                }\n            }\n        }\n\n\n        public static void CleanBlockedEdges()\n        {\n            MyMwcLog.WriteLine(\"MyWayPoint.CleanBlockedEdges - START\");\n            MyMwcLog.IncreaseIndent();\n\n            using (BlockedEdgesLock.AcquireExclusiveUsing())\n            {\n                BlockedEdgesForBots.Clear();\n                BlockedEdgesForPlayer.Clear();\n            }\n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyWayPoint.CleanBlockedEdges - END\");\n        }\n\n        private static SortedSet<MyWayPoint> m_openSet;\n\n        // Get the shortest path to the goal vertex using the A* algorithm. Return an empty list if the goal is unreachable.\n        /// <summary>This function needs to be called with EntityCloseLock already acquired, or not an issue.</summary>\n        public List<MyWayPoint> GetShortestPathTo(MyWayPoint goal, HashSet<Tuple<MyWayPoint, MyWayPoint>> blockedEdges = null, bool useGeneratedWaypoints = true, bool useSecretWaypoints = true)\n        {\n            lock (m_shortestPathLock)\n            {\n                if (Connected(this, goal) && (useGeneratedWaypoints || (Save && goal.Save)) && (useSecretWaypoints || (!IsSecret && !goal.IsSecret)))\n                {\n                    // use next search id, handle overflow\n                    m_searchId++;\n                    if (m_searchId == int.MaxValue)\n                    {\n                        MyWayPointGraph.ResetAllVisitedSearchIds();\n                        m_searchId = 1;\n                    }\n\n                    // seen but yet unvisited vertices; add start vertex\n                    m_openSet.Clear();\n                    m_fScore = Distance(this, goal);  // estimate distance to goal as Euclidean (= consistent)\n                    m_gScore = 0;\n                    m_cameFrom = this;\n                    m_openSet.Add(this);\n\n                    int num = 0;\n\n                    while (m_openSet.Count != 0)\n                    {\n                        if (num++ > MyWayPointGraph.WaypointCount() + 10)\n                        {\n                            int maxSearchId = 0;\n                            foreach (var v in MyWayPointGraph.GetCopyOfAllWaypoints())\n                            {\n                                maxSearchId = Math.Max(maxSearchId, v.m_visitedSearchId);\n                            }\n                            Debug.Fail(string.Format(\n                                \"Infinite path search... contact JanK! \\nDebug info: set_count={0} start_end_connected={1} current_search_id={2} max_search_id={3}\",\n                                m_openSet.Count,\n                                Connected(this, goal),\n                                m_searchId,\n                                maxSearchId\n                            ));\n                            break;\n                        }\n\n                        var current = m_openSet.Min;  // get vertex with the smallest f (ties: highest g)\n                        m_openSet.Remove(current);\n                        if (current == goal) return ReconstructPath(goal);  // found the shortest path, return it\n                        current.m_visitedSearchId = m_searchId;  // mark current as visited\n\n                        using (NeighborsLock.AcquireSharedUsing())\n                        {\n                            // look at all neighbors\n                            foreach (var neighbor in current.m_neighbors)\n                            {\n                                if (!useGeneratedWaypoints && !neighbor.Save) continue;  // generated\n                                if (!useSecretWaypoints && neighbor.IsSecret) continue;  // secret\n                                if (neighbor.m_visitedSearchId == m_searchId) continue;  // already visited\n\n                                if (blockedEdges != null && blockedEdges.Contains(Tuple.Create(current, neighbor))) continue;  // blocked\n\n                                var gScoreThroughCurrent = current.m_gScore + Distance(current, neighbor);\n\n                                if (m_openSet.Contains(neighbor))  // already seen\n                                {\n                                    if (gScoreThroughCurrent < neighbor.m_gScore) m_openSet.Remove(neighbor);  // path through current is better: remove neighbor and put it back with updated score\n                                    else continue;\n                                }\n\n                                neighbor.m_fScore = gScoreThroughCurrent + Distance(neighbor, goal);\n                                neighbor.m_gScore = gScoreThroughCurrent;\n                                neighbor.m_cameFrom = current;\n                                m_openSet.Add(neighbor);\n                            }\n                        }\n                    }\n                }\n            }\n            return new List<MyWayPoint>();  // unreachable\n        }\n\n        // Reconstruct the path that leads to the given vertex using cameFrom links.\n        private static List<MyWayPoint> ReconstructPath(MyWayPoint v)\n        {\n            var result = new List<MyWayPoint>();\n            result.Add(v);\n            while (v.m_cameFrom != v)\n            {\n                v = v.m_cameFrom;\n                result.Add(v);\n            }\n            result.Reverse();\n            return result;\n        }\n\n        #endregion\n\n        #region Construction and destruction, Entity stuff\n\n        public MyWayPoint()\n            : base(true)\n        {\n            m_neighbors = new HashSet<MyWayPoint>();\n        }\n\n        static MyWayPoint()\n        {\n            m_aStarComparer = new MyWayPointVertexAStarComparer();\n            m_openSet = new SortedSet<MyWayPoint>(m_aStarComparer);\n        }\n\n        const float MAX_RADIUS_WAYPOINT = 10.0f;  // for selecting\n\n        public MyMwcObjectBuilder_WaypointNew objectBuilder;\n\n        public virtual void Init(string hudLabelText, MyMwcObjectBuilder_WaypointNew ob, Matrix matrix)\n        {\n            StringBuilder hudLabelTextSb = (hudLabelText == null) ? null : new StringBuilder(hudLabelText);\n            base.Init(hudLabelTextSb, ob);\n\n            objectBuilder = ob;\n\n            SetWorldMatrix(matrix);\n\n            MyWayPointGraph.AddVertex(this);\n\n            this.LocalVolume = new BoundingSphere(Vector3.Zero, MAX_RADIUS_WAYPOINT);\n            //VisibleInGame = false;\n            Visible = true;\n            Flags |= EntityFlags.EditableInEditor;\n            CastShadows = false;\n            UpdateRenderObject(Visible);\n        }\n\n        // Resolve EntityId links.\n        public void ResolveLinks()\n        {\n            // parent entities (prefabs)\n            if (objectBuilder.ParentEntityId != null && MyEntities.GetEntities().Contains(this))\n            {\n                var parent = MyEntities.GetEntityByIdOrNull(new MyEntityIdentifier((uint)objectBuilder.ParentEntityId.Value));\n                if (parent != null)\n                {\n                    var worldMatrix = WorldMatrix;\n                    MyEntities.Remove(this);\n                    //parent.Children.Add(this);  // remove it and add back through the parent\n                    parent.AddChild(this);\n                    this.Activate(true, false);\n                    SetWorldMatrix(worldMatrix);\n                }\n            }\n\n            // neighbors\n            foreach (var neighborId in objectBuilder.NeighborEntityIds)\n            {\n                var neighbor = MyEntities.GetEntityByIdOrNull(new MyEntityIdentifier((uint)neighborId));\n                if (neighbor != null && neighbor is MyWayPoint)\n                    Connect(this, (MyWayPoint)neighbor);\n            }\n\n            // path placing\n            for (int i = 0; i < objectBuilder.GroupPlacings.Count; i++)\n            {\n                var name = objectBuilder.GroupNames[i];\n                var placing = objectBuilder.GroupPlacings[i];\n                \n                // resolve path by name: create it if it didn't exist\n                MyWayPointPath path = MyWayPointGraph.GetPath(name);\n                if (path == null)\n                    path = new MyWayPointPath(name);\n\n                // make enough empty waypoints to make it fit\n                while (placing >= path.WayPoints.Count)\n                    path.WayPoints.Add(null);\n\n                path.WayPoints[placing] = this;\n            }\n\n            // can't delete object builder\n            // This function is reentrant and sometimes we need both runs.\n            //objectBuilder = null;\n\n            // but we can delete neighbor and path info\n            if (MyGuiScreenGamePlay.Static.IsGameActive())\n            {\n                objectBuilder.GroupNames.Clear();\n                objectBuilder.GroupPlacings.Clear();\n                objectBuilder.NeighborEntityIds.Clear();\n            }\n        }\n\n        public override void Link()\n        {\n            base.Link();\n            ResolveLinks();\n        }\n\n        public override void Close()\n        {\n            MyWayPointGraph.RemoveVertex(this);\n            base.Close();\n        }\n\n        protected override MyMwcObjectBuilder_Base GetObjectBuilderInternal(bool getExactCopy)\n        {\n            MyMwcObjectBuilder_WaypointNew ob = (MyMwcObjectBuilder_WaypointNew)base.GetObjectBuilderInternal(getExactCopy);\n\n            ob.GroupNames = new List<string>();\n            ob.GroupPlacings = new List<int>();\n            foreach (var path in Paths())\n            {\n                System.Diagnostics.Debug.Assert(path.Name.Length <= MyWaypointConstants.MAXIMUM_WAYPOINT_PATH_NAME_LENGTH);\n                ob.GroupNames.Add(path.Name);\n                ob.GroupPlacings.Add(path.WayPoints.IndexOf(this));\n            }\n\n            ob.NeighborEntityIds = new List<int>();\n            using (MyWayPoint.NeighborsLock.AcquireSharedUsing())\n            {\n                foreach (var neighbor in Neighbors)\n                {\n                    var id = neighbor.EntityId;\n                    System.Diagnostics.Debug.Assert(id != null);\n                    ob.NeighborEntityIds.Add((int)id.Value.NumericValue);\n                }\n            }\n\n            ob.ParentEntityId = (Parent == null || Parent.EntityId == null) ? null : (int?)Parent.EntityId.Value.NumericValue;\n\n            return ob;\n        }\n\n        #endregion\n\n        #region Editor\n\n        void DrawWaypointVertex(Vector3 position, Vector3 color)\n        {\n            if (MyWayPointGraph.WaypointsIgnoreDepth)\n                MyTransparentGeometry.AddPointBillboard(MyTransparentMaterialEnum.snap_point, new Vector4(color * 0.5f, 0.5f), position, WorldVolume.Radius, 0.0f, 2);\n            else\n                MyTransparentGeometry.AddPointBillboard(MyTransparentMaterialEnum.snap_point_depth, new Vector4(color * 0.5f, 0.5f), position, WorldVolume.Radius, 0.0f, 2);\n        }\n\n        void DrawWaypointEdge(Vector3 position1, Vector3 position2, Color color1, Color color2)\n        {\n            if (MyFakes.MWBUILDER)\n            {\n                MyDebugDraw.DrawText((position1 + position2) / 2, new StringBuilder(Vector3.Distance(position1, position2).ToString(\"#,###0.000\")), Color.White, 1); \n            }\n\n            if (position1 == position2) return;\n            Vector3 direction = position2 - position1;\n            float lineLength = direction.Length();\n            direction.Normalize();\n            MyTransparentGeometry.AddLineBillboard(MyTransparentMaterialEnum.ProjectileTrailLine, color1.ToVector4(), position1, direction, lineLength, 0.25f);\n\n            if (MyWayPointGraph.WaypointsIgnoreDepth)\n            {\n                MyDebugDraw.DrawLine3D(position1, position2, color1, color2);\n            }\n        }\n\n        private static Vector3 HsvToRgb(float h, float s, float v)\n        {\n            float[] hues = { 0, 15, 21, 25, 36, 49, 55 };\n            h *= hues[hues.Length - 1];\n\n            for (int i = 0; i < hues.Length - 1; i++)\n                if (h <= hues[i + 1])\n                {\n                    h = i + (h - hues[i]) / (hues[i + 1] - hues[i]);\n                    break;\n                }\n\n            float f = h % 1.0f;\n            float p = v * (1 - s);\n            float q = v * (1 - f * s);\n            float t = v * (1 - (1 - f) * s);\n            switch ((int)h)\n            {\n                case 0: return new Vector3(v, t, p);\n                case 1: return new Vector3(q, v, p);\n                case 2: return new Vector3(p, v, t);\n                case 3: return new Vector3(p, q, v);\n                case 4: return new Vector3(t, p, v);\n                default:return new Vector3(v, p, q);\n            }\n        }\n\n        public override bool DebugDraw()\n        {            /*\n            int i = MyWayPointGraph.GetConnectedComponentId(this);\n            var vertexColor = HsvToRgb((0.36f + i * 0.618034f) % 1.0f, 0.8f, 0.75f);\n\n            DrawWaypointVertex(WorldMatrix.Translation, vertexColor);  // draw only edges for generated waypoints\n\n\n            // draw edges\n            foreach (var neighbor in Neighbors)\n            {\n                //DrawWaypointEdge(wp.WorldMatrix.Translation, neighbor.WorldMatrix.Translation, Color.Red, Color.Green);  // selected path: red-green edges\n\n                if (neighbor.WorldMatrix.Translation != WorldMatrix.Translation)\n                {\n                    Vector3 direction = neighbor.WorldMatrix.Translation - WorldMatrix.Translation;\n                    float lineLength = direction.Length();\n                    direction.Normalize();\n                    MyTransparentGeometry.AddLineBillboard(MyTransparentMaterialEnum.ProjectileTrailLine, Color.Yellow.ToVector4(), WorldMatrix.Translation, direction, lineLength, 0.25f);\n                }\n\n            }\n                       */\n            if (((MyHud.ShowDebugWaypoints) || (MyGuiScreenGamePlay.Static.IsEditorActive() && !MyGuiScreenGamePlay.Static.IsIngameEditorActive())) && (MyFakes.ENABLE_GENERATED_WAYPOINTS_IN_EDITOR || MyHud.ShowDebugGeneratedWaypoints || Save))\n            {\n                // color by connected components\n                int i = MyWayPointGraph.GetConnectedComponentId(this);\n                var vertexColor = HsvToRgb((0.36f + i * 0.618034f) % 1.0f, 0.8f, 0.75f);\n\n                if (MyWayPointGraph.SelectedPath != null && MyWayPointGraph.SelectedPath.WayPoints.Contains(this))\n                {\n                    vertexColor = Color.Orange.ToVector3();  // selected path: orange vertices\n                }\n\n                if (IsSecret) { vertexColor *= 0.25f; }\n\n                // draw vertices\n                if (MyEditorGizmo.SelectedEntities.Contains(this))\n                {\n                    DrawWaypointVertex(WorldMatrix.Translation, vertexColor + (IsSecret ? 1 : 3) * GetHighlightColor());\n                    var name = new StringBuilder();\n                    if (MyWayPointGraph.SelectedPath != null && MyWayPointGraph.SelectedPath.WayPoints.Contains(this))\n                    {\n                        name.Append(MyWayPointGraph.SelectedPath.Name).Append(\": \").Append(MyWayPointGraph.SelectedPath.WayPoints.IndexOf(this) + 1);\n                    }\n                    else\n                    {\n                        name.Append(MyWayPoint.FilterWayPoints(MyEditorGizmo.SelectedEntities).IndexOf(this) + 1);\n                    }\n                    MyDebugDraw.DrawText(WorldMatrix.Translation, name, Color.White, 1);\n                }\n                else\n                {\n                    if (Save)\n                        DrawWaypointVertex(WorldMatrix.Translation, vertexColor);  // for generated waypoints, draw only edges\n                }\n\n                // draw edges\n                if (Save || MyHud.ShowDebugGeneratedWaypoints)\n                {\n                    using (MyWayPoint.NeighborsLock.AcquireSharedUsing())\n                    {\n                        foreach (var neighbor in Neighbors)\n                        {\n                            if (MyWayPointGraph.SelectedPath != null && MyWayPointGraph.SelectedPath.ContainsEdge(this, neighbor))\n                            {\n                                DrawWaypointEdge(WorldMatrix.Translation, neighbor.WorldMatrix.Translation, Color.Yellow, Color.White);  // on selected path: yellow-white\n                                continue;\n                            }\n\n                            if (neighbor.Save || MyHud.ShowDebugGeneratedWaypoints)\n                            {\n                                using (MyWayPoint.BlockedEdgesLock.AcquireSharedUsing())\n                                {\n\n                                    // blocked for player (by a locked indestructible door: white-gray)\n                                    if (BlockedEdgesForPlayer.Contains(Tuple.Create(this, neighbor)) || BlockedEdgesForPlayer.Contains(Tuple.Create(neighbor, this)))\n                                    {\n                                        DrawWaypointEdge(WorldMatrix.Translation, neighbor.WorldMatrix.Translation, Color.White, Color.Gray);\n                                        continue;\n                                    }\n\n                                    // blocked for bots by a locked door: black-gray\n                                    if (BlockedEdgesForBots.Contains(Tuple.Create(this, neighbor)) || BlockedEdgesForBots.Contains(Tuple.Create(neighbor, this)))\n                                    {\n                                        DrawWaypointEdge(WorldMatrix.Translation, neighbor.WorldMatrix.Translation, Color.Black, Color.Gray);\n                                        continue;\n                                    }\n                                }\n\n                                // obstructed: violet-white\n                                if (MyHud.ShowDebugWaypointsCollisions && Position != neighbor.Position)\n                                {\n                                    var line = new MyLine(Position, neighbor.Position, true);\n                                    if (MyEntities.GetAnyIntersectionWithLine(ref line, null, null, true, true, true, false) != null)\n                                    {\n                                        DrawWaypointEdge(WorldMatrix.Translation, neighbor.WorldMatrix.Translation, Color.Violet, Color.White);\n                                        continue;\n                                    }\n                                }\n\n                                // normal-normal: red-green\n                                // generated-normal: orange-green (normally invisible)\n                                // generated-generated: yellow-green (normally invisible)\n                                bool generated = !(Save && neighbor.Save);\n                                bool fullyGenerated = !Save && !neighbor.Save;\n                                DrawWaypointEdge(WorldMatrix.Translation, neighbor.WorldMatrix.Translation, generated ? fullyGenerated ? Color.Yellow : Color.Orange : Color.Red, Color.Green);\n                                continue;\n                            }\n                        }\n                    }\n                }\n            }\n            return base.DebugDraw();\n        }\n\n        public override bool GetIntersectionWithLine(ref MyLine line, out Vector3? v, bool useCollisionModel = true, IntersectionFlags flags = IntersectionFlags.ALL_TRIANGLES)\n        {\n            v = null;\n            Ray ray = new Ray(line.From, line.Direction);\n            float? ds = ray.Intersects(this.WorldAABB);\n            if (ds == null)\n                return false;\n            v = line.From + line.Direction * ds;\n            return true;\n        }\n\n\n        public override bool IsSelectableAsChild()\n        {\n            return true;\n        }\n\n        #endregion\n\n        #region Visibility\n        \n        // Return whether a waypoint is visible from the current position. Ignores debris, ammo and ships.\n        // You can provide a cache that contains previous query results for this position. Results of new queries will be added to the cache.\n        public bool IsVisibleFrom(Vector3 position, MyEntity ignore = null, Dictionary<MyWayPoint, bool> visibilityCache = null)\n        {\n            bool visible;\n            if (visibilityCache == null || !visibilityCache.TryGetValue(this, out visible))\n            {\n                if (Vector3.DistanceSquared(position, Position) < 0.01f)\n                {\n                    visible = true;\n                }\n                else\n                {\n                    var line = new MyLine(position, Position, true);\n                    visible = (MyEntities.GetAnyIntersectionWithLine(ref line, ignore, null, true, true, true, false) == null);  // skip explosion debris, ammo, ships, closed doors that can open, dummies\n                }\n\n                if (visibilityCache != null) \n                    visibilityCache[this] = visible;\n            }\n            return visible;\n        }\n        \n        #endregion\n\n        // Get all vertices from a list of entities. O(n)\n        public static List<MyWayPoint> FilterWayPoints(IEnumerable<MyEntity> entities)\n        {\n            var vertexList = new List<MyWayPoint>();\n            foreach (var e in entities)\n                if (e is MyWayPoint)\n                    vertexList.Add(e as MyWayPoint);\n            return vertexList;\n        }\n\n        // Return true if a list contains waypoints.\n        public static bool ContainsWayPoint(IEnumerable<MyEntity> entities)\n        {\n            foreach (var e in entities)\n                if (e is MyWayPoint)\n                    return true;\n            return false;\n        }\n\n\n        public List<MyWayPointPath> Paths()\n        {\n            var result = new List<MyWayPointPath>();\n            foreach (var path in MyWayPointGraph.StoredPaths)\n                if (path.WayPoints.Contains(this))\n                    result.Add(path);\n            return result;\n        }\n\n        #region Needs to be saved?\n\n        public bool NeedsToBeSaved()\n        {\n            if (Save == false) return false;\n            if (Parent == null) return true;\n\n            // it has a prefab as a parent; check whether it corresponds to the default ones\n            var prefab = Parent as MyPrefabBase;\n            if (prefab == null) return true;  // wtf, waypoints should have only prefabs as parents\n\n            var positions = new List<Vector3>();\n            var names = new List<string>();\n            var parentNames = new List<string>();\n            prefab.GetDefaultWaypointData(positions, names, parentNames);\n\n            for (int j = 0; j < positions.Count; j++)\n            {\n                var pos = positions[j];\n                if (Vector3.DistanceSquared(pos, Position) < 1)\n                {\n                    // TODO: test whether all edges have originated from the parent prefab or snap points; also that no edges are missing\n                    foreach (var n in Neighbors)\n                    {\n                        bool neighborOk = false;\n                        if (n.Parent == Parent)\n                        {\n                            for (int k = 0; k < names.Count; k++)\n                            {\n                                // should be connected? (the neighbor doesn't have to be in its original position, but then I wouldn't know if it's the correct one)\n                                if (Vector3.DistanceSquared(positions[k], n.Position) < 1 && (names[j].Equals(parentNames[k]) || names[k].Equals(parentNames[j])))\n                                {\n                                    neighborOk = true;\n                                    break;\n                                }\n                            }\n                        }\n                        else\n                        {\n                            /*\n                            // if both are in the reach of a snappoint, they may be connected\n                            foreach (var snappoint in prefab.SnapPoints)\n                            {\n                                var snappointWorldPosition = (snappoint.Matrix * snappoint.Prefab.WorldMatrix).Translation;\n\n                                var wps = MyWayPointGraph.GetAllWaypointsInSphere(snappointWorldPosition, 20);\n                                if (wps.Count == 2 && wps.Contains(this) && wps.Contains(n))\n                                {\n                                    neighborOk = true;\n                                }\n                            }\n                            */\n                        }\n                        if (!neighborOk) return true;\n                    }\n                }\n            }\n\n            return false;\n        }\n\n        #endregion\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/WayPoints/MyWayPointGraph.cs",
    "content": "﻿using System;\nusing MinerWarsMath;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing System.Collections.Generic;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.AppCode.Game.Utils;\nusing SysUtils;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.Editor;\nusing KeenSoftwareHouse.Library.Memory;\nusing MinerWars.AppCode.Physics;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.GUI.Helpers;\nusing MinerWars.AppCode.Game.Prefabs;\nusing KeenSoftwareHouse.Library.Trace;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing System.Text;\nusing MinerWars.AppCode.Game.Gameplay;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing System.Linq;\nusing MinerWars.AppCode.Game.Entities.Prefabs;\nusing SysUtils.Utils;\nusing BulletXNA;\nusing KeenSoftwareHouse.Library.Parallelization.Threading;\n\n\nnamespace MinerWars.AppCode.Game.Entities.WayPoints\n{\n    static class MyWayPointGraph\n    {\n        #region Vertices\n\n        private static HashSet<MyWayPoint> m_vertices;\n        private static FastResourceLock VerticesLock = new FastResourceLock();\n\n        /// <summary>\n        /// Make a copy of all waypoints.\n        /// Please don't use this in time-critical code.\n        /// </summary>\n        public static List<MyWayPoint> GetCopyOfAllWaypoints()\n        {\n            var list = new List<MyWayPoint>();\n            using (VerticesLock.AcquireSharedUsing())\n            {\n                foreach (var v in m_vertices)\n                    list.Add(v);\n            }\n            return list;\n        }\n\n        // Add a new vertex to the graph. Return true if the vertex was successfully added.\n        // If you also want to add it into the world (MyEntities), use CreateWaypoint instead.\n        public static bool AddVertex(MyWayPoint v)\n        {\n            MakeConnectedComponentsDirty();\n            using (VerticesLock.AcquireExclusiveUsing())\n            {\n                System.Diagnostics.Debug.Assert(readingVertices == false);\n                return m_vertices.Add(v);\n            }\n        }\n\n        // Remove a vertex and all of its edges. Return true if the vertex was successfully removed from the graph.\n        // Note that this function doesn't remove the vertex from the world (MyEntities): use MyWayPoint.Close for that.\n        public static bool RemoveVertex(MyWayPoint v)\n        {\n            MakeConnectedComponentsDirty();\n            v.DisconnectFromAllNeighbors();\n\n            // delete vertex from all paths\n            foreach (var path in StoredPaths)\n                if (path.WayPoints.Contains(v))\n                    path.WayPoints.Remove(v);\n            RemovePathsWithZeroVertices();\n\n            using (VerticesLock.AcquireExclusiveUsing())\n            {\n                System.Diagnostics.Debug.Assert(readingVertices == false);\n                return m_vertices.Remove(v);\n            }\n        }\n\n        public static void RemovePath(MyWayPointPath path)\n        {\n            if (path == SelectedPath) SelectedPath = null;\n            StoredPaths.Remove(path);\n            PathFromName.Remove(path.Name);\n        }\n\n        public static void RemovePathsWithZeroVertices()\n        {\n            for (int i = StoredPaths.Count - 1; i >= 0; i--)\n                if (StoredPaths[i].WayPoints.Count == 0)\n                    RemovePath(StoredPaths[i]);\n        }\n\n        // Reset all vertex search ids. Used when path searching overflows.\n        public static void ResetAllVisitedSearchIds()\n        {\n            foreach (var v in m_vertices)\n                v.ResetVisitedSearchId();\n        }\n\n        public static int CountPathsWithWaypointsWithParents()\n        {\n            int count = 0;\n            foreach (var p in StoredPaths)\n                foreach (var v in p.WayPoints)\n                    if (v.Parent != null) { count++; break; }\n            return count;\n        }\n\n        public static int CountWaypointsWithParents()\n        {\n            int count = 0;\n            using (VerticesLock.AcquireSharedUsing())\n            {\n                foreach (var v in m_vertices)\n                    if (v.Parent != null) count++;\n            }\n            return count;\n        }\n\n        /// <summary>\n        /// Remove and recreate all vertices with parents.\n        /// Needs to be called from the main thread (because it uses MyEntities.GetSafeIterationHelperForAll).\n        /// </summary>\n        public static void ReloadAllWaypointsWithParents()\n        {\n            var waypointlessPrefabs = new HashSet<string>();  // collect waypointless prefabs with snappoints\n\n            // remove\n            foreach (var v in GetVertexListForModification())\n                if (v.Parent != null)\n                    v.Close();\n\n            // recreate\n            var recreatedPrefabs = new List<MyPrefabBase>();\n            foreach (var entity in MyEntities.GetSafeIterationHelperForAll())\n            {\n                var waypoints = new List<MyWayPoint>();\n                if (entity is MyPrefabBase)\n                {\n                    waypoints = (entity as MyPrefabBase).InitWaypoints();\n                    if (waypoints.Count > 0)\n                        recreatedPrefabs.Add(entity as MyPrefabBase);\n                }\n                else if (entity is MyPrefabContainer)\n                {\n                    foreach (var prefab in (entity as MyPrefabContainer).GetPrefabs())\n                    {\n                        var prefabWaypoints = (prefab as MyPrefabBase).InitWaypoints();\n                        waypoints.AddRange(prefabWaypoints);\n                        if (prefabWaypoints.Count > 0)\n                            recreatedPrefabs.Add(prefab as MyPrefabBase);\n                        /*\n                        if (prefabWaypoints.Count == 0 && (prefab as MyPrefabBase).SnapPoints.Count > 0)\n                        {\n                            var p = (prefab as MyPrefabBase);\n                            if (prefab is MyPrefab)\n                                waypointlessPrefabs.Add((prefab as MyPrefab).PrefabType.ToString());  // add name\n                            else\n                                waypointlessPrefabs.Add((prefab as MyPrefabBase).PrefabId.ToString());  // just add the id number\n                        }\n                        */\n                    }\n                }\n                // delete duplicate waypoints if any have remained\n                foreach (var waypoint in waypoints)\n                {\n                    var old = GetClosestWaypointWithoutEdges(waypoint.Position);\n                    if (old != null && old != waypoint && Vector3.DistanceSquared(old.Position, waypoint.Position) < 1e-5)\n                        old.Close();\n                }\n            }\n\n            // connect along snappoints\n            foreach (var prefab in recreatedPrefabs)\n            {\n                // for each snap point, \n                // O(N^2), but done rarely... probably ok\n                foreach (var snappoint in prefab.SnapPoints)\n                {\n                    List<MySnapPointLink> snaps = new List<MySnapPointLink>();\n                    snaps.Add(new MySnapPointLink(snappoint));\n\n                    var snappointWorldPosition = (snappoint.Matrix * snappoint.Prefab.WorldMatrix).Translation;\n\n                    foreach (var prefab2 in recreatedPrefabs)\n                        if (prefab2 != prefab)\n                            foreach (var snappoint2 in prefab2.SnapPoints)\n                                // if the snap points are close (<20m), link their waypoints\n                                if (Vector3.DistanceSquared(snappointWorldPosition, (snappoint2.Matrix * snappoint2.Prefab.WorldMatrix).Translation) < 400.0f)\n                                    snaps.Add(new MySnapPointLink(snappoint2));\n\n                    //                    if (snaps.Count >= 2)\n                    MyEditor.Static.ConnectWayPointsAtSnapPointLinks(snaps);\n                }\n            }\n\n            // connect waypoints along snap point links\n            foreach (var snaps in MyEditor.Static.LinkedSnapPoints)\n                MyEditor.Static.ConnectWayPointsAtSnapPointLinks(snaps);\n\n            /*\n            // for collecting prefabs without waypoints\n            var sb = new StringBuilder();\n            foreach (var name in waypointlessPrefabs)\n                sb.Append(name).Append(\" \");\n            string s = sb.ToString();\n            */\n        }\n\n        /*\n        public static MyWayPoint GetWaypointAtGeneratedPosition(Vector3 idealPosition, MyPrefabBase parent)\n        {\n            MyWayPoint closestWaypoint = null;\n            float closestDistance = float.MaxValue;\n            foreach (var wp in GetAllWaypointsInSphere(idealPosition, 1)) if (wp.Parent == parent)\n            {\n                var distance = Vector3.DistanceSquared(wp.Position, idealPosition);\n                if (distance < closestDistance)\n                {\n                    closestDistance = distance;\n                    closestWaypoint = wp;\n                }\n            }\n            return closestWaypoint;\n        }\n        \n        // Recreate waypoints that didn't need to be saved.\n        public static void RecreateImplicitWaypoints(List<MyPrefabBase> prefabs)\n        {\n            var added = new List<MyWayPoint>();\n            var addedIndex = new List<int>();\n\n            // pass 1: recreate waypoints\n            foreach (var prefab in prefabs)\n            {\n                var positions = new List<Vector3>();\n                var names = new List<string>();\n                var parentNames = new List<string>();\n                prefab.GetDefaultWaypointData(positions, names, parentNames);\n\n                for (int j = 0; j < positions.Count; j++)\n                {\n                    MyWayPoint closestToGeneratedPosition = GetWaypointAtGeneratedPosition(positions[j], prefab);\n                    if (closestToGeneratedPosition == null)\n                    {\n                        added.Add(CreateWaypoint(positions[j], prefab));\n                        addedIndex.Add(j);\n                    }\n                }\n            }\n\n            // pass 2: recreate their edges\n            for (int i = 0; i < added.Count; i++)\n            {\n                var prefab = added[i].Parent as MyPrefabBase;\n\n                var positions = new List<Vector3>();\n                var names = new List<string>();\n                var parentNames = new List<string>();\n                prefab.GetDefaultWaypointData(positions, names, parentNames);\n\n                int k = addedIndex[i];\n                for (int j = 0; j < positions.Count; j++)\n                {\n                    if (names[j].Equals(parentNames[k]) || names[k].Equals(parentNames[j]))\n                    {\n                        MyWayPoint closestToGeneratedPosition = GetWaypointAtGeneratedPosition(positions[j], prefab);\n                        MyWayPoint.Connect(added[i], closestToGeneratedPosition);\n                    }\n                }\n            }\n        }\n\n        // Delete waypoints that don't need to be saved.\n        public static void DeleteImplicitWaypoints()\n        {\n            PrepareVertexListForModification();\n            foreach (var v in m_vertexListForModification)\n            {\n                if (!v.NeedsToBeSaved())\n                {\n                    v.Close();\n                }\n            }\n        }\n        */\n\n        // Return the closest waypoint.\n        public static MyWayPoint GetClosestWaypoint(Vector3 position)\n        {\n            MyWayPoint best = null;\n            float bestDistanceSquared = float.PositiveInfinity;\n            using (VerticesLock.AcquireSharedUsing())\n            {\n                foreach (var v in m_vertices)\n                {\n                    float distanceSquared = Vector3.DistanceSquared(position, v.Position);\n                    if (distanceSquared < bestDistanceSquared)\n                    {\n                        bestDistanceSquared = distanceSquared;\n                        best = v;\n                    }\n                }\n            }\n            return best;\n        }\n\n        // Return the closest non-generated waypoint.\n        public static MyWayPoint GetClosestNonGeneratedWaypoint(Vector3 position)\n        {\n            MyWayPoint best = null;\n            float bestDistanceSquared = float.PositiveInfinity;\n\n            using (VerticesLock.AcquireSharedUsing())\n            {\n                foreach (var v in m_vertices)\n                {\n                    if (!v.Save) continue;\n                    float distanceSquared = Vector3.DistanceSquared(position, v.Position);\n                    if (distanceSquared < bestDistanceSquared)\n                    {\n                        bestDistanceSquared = distanceSquared;\n                        best = v;\n                    }\n                }\n            }\n            return best;\n        }\n\n        static bool readingVertices = false;\n\n        // Return K closest waypoints sorted by distance (smallest first). Worst case O(#waypoints * K).\n        public static List<MyWayPoint> GetClosestWaypoints(Vector3 position, int k)\n        {\n            var sorted = new SortedList<float, MyWayPoint>(k);\n            using (VerticesLock.AcquireSharedUsing())\n            {\n                readingVertices = true;\n                foreach (var v in m_vertices)\n                {\n                    var distanceSquared = Vector3.DistanceSquared(position, v.Position);\n                    if (sorted.Count < k)\n                    {\n                        while (sorted.ContainsKey(distanceSquared))  // can't add two equal keys, wtf\n                        {\n                            distanceSquared = MathUtil.NextAfter(distanceSquared, float.MaxValue);\n                        }\n                        sorted.Add(distanceSquared, v);  // add it\n                    }\n                    else if (distanceSquared < sorted.Keys[k - 1])  // smaller than maximum: remove the maximum and add it\n                    {\n                        sorted.RemoveAt(k - 1);\n\n                        while (sorted.ContainsKey(distanceSquared))  // can't add two equal keys, wtf\n                        {\n                            distanceSquared = MathUtil.NextAfter(distanceSquared, float.MaxValue);\n                        }\n                        sorted.Add(distanceSquared, v);\n                    }\n                }\n                readingVertices = false;\n            }            \n\n            var result = new List<MyWayPoint>();\n            foreach (var pair in sorted)\n            {\n                result.Add(pair.Value);\n            }\n\n            return result;\n        }\n\n        // Return N closest waypoints visible from a position.\n        public static List<MyWayPoint> GetClosestVisibleWaypoints(Vector3 position, MyEntity ignore, int n, int maxRaycasts, Dictionary<MyWayPoint, bool> visibilityCache = null)\n        {\n            var result = new List<MyWayPoint>();\n            foreach (var v in GetClosestWaypoints(position, maxRaycasts))\n            {\n                if (result.Count >= n) break;\n                if (v.Position == position || v.IsVisibleFrom(position, ignore, visibilityCache))\n                    result.Add(v);\n            }\n            return result;\n        }\n\n        // Return the closest waypoint reachable by a ship.\n        public static MyWayPoint GetClosestWaypointReachableByShip(Vector3 position, MyEntity ignore, int maxRaycasts, float shipRadius)\n        {\n            // One \"fat\" raycast needs 4 regular raycasts (or fewer when we discover that the path is blocked).\n            // This means that success is possible only when maxRaycasts >= 4.\n            maxRaycasts = Math.Max(maxRaycasts, 4);\n\n            MyLine line;\n            int raycastsDone = 0;\n\n            foreach (var v in GetClosestWaypoints(position, maxRaycasts))\n            {\n                Vector3 vertexPosition = v.Position;\n                Vector3 diff = vertexPosition - position;\n                if (MyMwcUtils.IsZero(diff)) return v;  // we're right on it, no need for raycasts\n\n                if (maxRaycasts - raycastsDone < 4) break;  // can't be successful when there's fewer than 4 raycasts remaining\n\n                Matrix m = MinerWars.AppCode.Game.Utils.MyMath.MatrixFromDir(Vector3.Normalize(diff)) * shipRadius;\n\n                const float sin120 = 0.8660254f;\n                const float cos120 = 0.5f;\n\n                // center\n                line = new MyLine(position, vertexPosition, true);\n                if (MyEntities.GetAnyIntersectionWithLine(ref line, ignore, null, true, true, true, false) != null) continue;\n                raycastsDone++;\n\n                // triangle\n                line = new MyLine(position + m.Forward - m.Up, vertexPosition + m.Forward - m.Up, true);\n                if (MyEntities.GetAnyIntersectionWithLine(ref line, ignore, null, true, true, true, false) != null) continue;\n                raycastsDone++;\n\n                line = new MyLine(position + m.Forward + m.Up * cos120 + m.Left * sin120, vertexPosition + m.Forward + m.Up * cos120 + m.Left * sin120, true);\n                if (MyEntities.GetAnyIntersectionWithLine(ref line, ignore, null, true, true, true, false) != null) continue;\n                raycastsDone++;\n\n                line = new MyLine(position + m.Forward + m.Up * cos120 - m.Left * sin120, vertexPosition + m.Forward + m.Up * cos120 - m.Left * sin120, true);\n                if (MyEntities.GetAnyIntersectionWithLine(ref line, ignore, null, true, true, true, false) != null) continue;\n                raycastsDone++;\n\n                return v;\n            }\n            return null;\n        }\n\n        // Return the closest waypoint. Waypoints along the given direction are considered to be closer.\n        // directionBonus = 0: no bonus (= return the closest waypoint)\n        // directionBonus = 1: every point on line has distance 0 (= return the waypoint with the smallest angle from direction)\n        public static MyWayPoint GetClosestWaypointWithDirectionBias(Vector3 position, Vector3 direction, float directionBonus)\n        {\n            MyWayPoint best = null;\n            float bestScore = float.MaxValue;\n            direction.Normalize();\n\n            using (VerticesLock.AcquireSharedUsing())\n            {\n                foreach (var v in m_vertices)\n                {\n                    float distanceAlongDirection = Vector3.Dot(v.Position - position, direction);\n                    float totalDistance = Vector3.Distance(position, v.Position);\n\n                    float score = totalDistance - distanceAlongDirection * directionBonus;\n                    if (score < bestScore)\n                    {\n                        bestScore = score;\n                        best = v;\n                    }\n                }\n            }\n\n            return best;\n        }\n\n        /*\n        // Return the closest visible waypoint. Waypoints along the given direction are considered to be closer.\n        // directionBonus = 0: no bonus (= return the closest waypoint)\n        // directionBonus = 1: every point on line has distance 0 (= return the waypoint with the smallest angle from direction)\n        public static MyWayPoint GetClosestVisibleWaypointWithDirectionBias(Vector3 position, Vector3 direction, float directionBonus, int maxTests)\n        {\n            direction.Normalize();\n\n            PrepareVertexListForModification();\n            var ordered = m_vertexListForModification.OrderBy(\n                delegate(MyWayPoint v)\n                {\n                    float distanceAlongDirection = Vector3.Dot(v.Position - position, direction);\n                    float totalDistance = Vector3.Distance(position, v.Position);\n                    return totalDistance - distanceAlongDirection * directionBonus;\n                }\n            ).Take(maxTests);\n            foreach (var v in ordered)\n                if (v.IsVisibleFrom(position, null))\n                    return v;\n            return null;\n        }\n        */\n\n        // Return the closest waypoint without any edges.\n        public static MyWayPoint GetClosestWaypointWithoutEdges(Vector3 position)\n        {\n            MyWayPoint best = null;\n            float bestDistance = float.MaxValue;\n\n            using (VerticesLock.AcquireSharedUsing())\n            {                \n                foreach (var v in m_vertices) if (v.Neighbors.Count == 0)\n                    {\n                        float distance = Vector3.DistanceSquared(position, v.Position);\n                        if (distance < bestDistance)\n                        {\n                            bestDistance = distance;\n                            best = v;\n                        }\n                    }\n            }\n            return best;\n        }\n\n        // Return all waypoints inside a sphere.\n        public static List<MyWayPoint> GetAllWaypointsInSphere(Vector3 center, float radius)\n        {\n            float radiusSquared = radius * radius;\n            var list = new List<MyWayPoint>();\n\n            using (VerticesLock.AcquireSharedUsing())\n            {\n                foreach (var v in m_vertices)\n                    if (Vector3.DistanceSquared(center, v.Position) <= radiusSquared)\n                        list.Add(v);\n            }\n\n            return list;\n        }\n\n        // Return all waypoint edges touching a sphere.\n        public static List<Tuple<MyWayPoint, MyWayPoint>> GetAllEdgesInSphere(Vector3 center, float radius)\n        {\n            float radiusSquared = radius * radius;\n            var list = new List<Tuple<MyWayPoint, MyWayPoint>>();\n            using (VerticesLock.AcquireSharedUsing())\n            {\n                using (MyWayPoint.NeighborsLock.AcquireSharedUsing())\n                {\n                    foreach (var v in m_vertices)\n                        foreach (var n in v.Neighbors)\n                            if (MyMath.DistanceSquaredFromLineSegment(v.Position, n.Position, center) <= radiusSquared)\n                                list.Add(Tuple.Create(v, n));\n                }\n            }\n            return list;\n        }\n\n        // Return all waypoint edges touching a box.\n        public static List<Tuple<MyWayPoint, MyWayPoint>> GetAllEdgesInBox(ref BoundingBox box)\n        {\n            var list = new List<Tuple<MyWayPoint, MyWayPoint>>();\n            if (box.Max.X < box.Min.X)\n                return list;\n            using (VerticesLock.AcquireSharedUsing())\n            {\n                using (MyWayPoint.NeighborsLock.AcquireSharedUsing())\n                {\n                    foreach (var v in m_vertices) foreach (var n in v.Neighbors)\n                        {\n                            var d = n.Position - v.Position;\n                            var l = d.Length();\n                            d.Normalize();\n                            float? result = box.Intersects(new Ray(v.Position, d));\n                            if (result != null && result.Value <= l)\n                                list.Add(Tuple.Create(v, n));\n                        }\n                }\n            }\n            return list;\n        }\n\n        // Remove all generated visibility-obstructed waypoint edges around an entity.\n        public static void RemoveAllObstructedGeneratedEdgesAround(MyEntity entity)\n        {\n            using(MyEntities.EntityCloseLock.AcquireSharedUsing())\n            {                \n                entity.UpdateAABBHr();\n                BoundingBox box = entity.WorldAABBHr;\n                if (box.Max - box.Min == Vector3.Zero)\n                {\n                    box = entity.WorldAABB;\n                    if (box.Max - box.Min == Vector3.Zero)\n                        return;\n                }\n\n                foreach (var edge in GetAllEdgesInBox(ref box))\n                {\n                    if (edge.Item1.Save && edge.Item2.Save) continue;\n                    if (!edge.Item1.IsVisibleFrom(edge.Item2.Position))\n                        MyWayPoint.Disconnect(edge.Item1, edge.Item2);\n                }\n            }\n        }\n\n        public static void CountWaypointTypes(out int total, out int notsave, out int save, out int gen)\n        {\n            total = save = notsave = gen = 0;\n            using (VerticesLock.AcquireSharedUsing())\n            {\n                foreach (var v in m_vertices)\n                {\n                    total++;\n                    if (!v.Save) { gen++; continue; }\n                    if (v.NeedsToBeSaved()) save++; else notsave++;\n                }\n            }\n        }\n\n        #endregion\n\n        #region Connected components\n\n        static bool m_componentsDirty = true;\n\n        static public void MakeConnectedComponentsDirty()\n        {\n            m_componentsDirty = true;\n        }\n\n        static Dictionary<MyWayPoint, int> m_componentIds;\n        static List<List<MyWayPoint>> m_waypointsFromComponentId;\n\n        /// <summary>This function needs to be called with EntityCloseLock already acquired, or not an issue.</summary>\n        static void RecomputeConnectedComponents()\n        {\n            if (!m_componentsDirty) return;\n\n            int componentId = 0;\n            m_componentIds = new Dictionary<MyWayPoint, int>();\n            m_waypointsFromComponentId = new List<List<MyWayPoint>>();\n            using (VerticesLock.AcquireSharedUsing())\n            {\n                readingVertices = true;\n                foreach (var v in m_vertices)\n                {\n                    if (!m_componentIds.ContainsKey(v))\n                    {\n                        var componentWaypoints = new List<MyWayPoint>();\n                        var todo = new Stack<MyWayPoint>();\n                        todo.Push(v);\n                        while (todo.Count != 0)\n                        {\n                            var w = todo.Pop();\n                            componentWaypoints.Add(w);\n                            if (!m_componentIds.ContainsKey(w))\n                            {\n                                m_componentIds[w] = componentId;\n                                using (MyWayPoint.NeighborsLock.AcquireSharedUsing())\n                                {\n                                    foreach (var n in w.Neighbors)\n                                        todo.Push(n);\n                                }\n                            }\n                        }\n                        m_waypointsFromComponentId.Add(componentWaypoints);\n                        componentId++;\n                    }\n                }\n                readingVertices = false;\n            }\n            \n            m_componentsDirty = false;\n        }\n\n        // Return the component id, or -1 if the given waypoint doesn't lie in the waypoint graph.\n        /// <summary>This function needs to be called with EntityCloseLock already acquired, or not an issue.</summary>\n        public static int GetConnectedComponentId(MyWayPoint wp)\n        {\n            RecomputeConnectedComponents();\n            int value;\n            if (m_componentIds.TryGetValue(wp, out value))\n                return value;\n            return -1;\n        }\n\n        /// <summary>This function needs to be called with EntityCloseLock already acquired, or not an issue.</summary>\n        public static List<MyWayPoint> GetWaypointsWithConnectedComponentId(int id)\n        {\n            RecomputeConnectedComponents();\n            if (id >= 0 && id < m_waypointsFromComponentId.Count)\n                return m_waypointsFromComponentId[id];\n            else\n                return new List<MyWayPoint>();\n        }\n\n        #endregion\n\n        #region ObjectBuilders\n\n        public static void Init()\n        {\n            m_vertices = new HashSet<MyWayPoint>();\n            InitPaths();\n            m_GPSWaypointsInited = false;\n        }\n\n        public static MyWayPoint CreateWaypoint(Vector3 position, MyEntity parent)\n        {\n            var builder = MyMwcObjectBuilder_Base.CreateNewObject(MyMwcObjectBuilderTypeEnum.WaypointNew, null) as MyMwcObjectBuilder_WaypointNew;\n            builder.ParentEntityId = (parent == null || parent.EntityId == null) ? null : (int?)parent.EntityId.Value.NumericValue;\n            var result = MyEntities.CreateFromObjectBuilderAndAdd(null, builder, Matrix.CreateWorld(position, Vector3.Forward, Vector3.Up)) as MyWayPoint;\n            result.ResolveLinks();\n            return result;\n        }\n\n        #endregion\n\n        #region StoredPaths and editor\n\n        public static List<MyWayPointPath> StoredPaths;\n        public static Dictionary<string, MyWayPointPath> PathFromName;\n        public static MyWayPointPath SelectedPath;\n\n        private static void InitPaths()\n        {\n            StoredPaths = new List<MyWayPointPath>();\n            PathFromName = new Dictionary<string, MyWayPointPath>();\n            SelectedPath = null;\n        }\n\n        // Update visibility, path and vertex selection. Used when toggling waypoint visibility.\n        public static void UpdateVisibilityAndSelection(bool visible)\n        {\n            using (VerticesLock.AcquireSharedUsing())\n            {\n                foreach (var waypoint in m_vertices)\n                {\n                    waypoint.Visible = visible;\n                }\n            }\n\n            // deselect waypoints\n            if (!visible)\n            {\n                SelectedPath = null;\n                foreach (var waypoint in MyWayPoint.FilterWayPoints(MyEditorGizmo.SelectedEntities))\n                    MyEditorGizmo.RemoveEntityFromSelection(waypoint);\n            }\n        }\n\n        // Update or delete the selected waypoint path.\n        public static void UpdateSelectedPath()\n        {\n            if (SelectedPath != null)\n            {\n                var selectedWaypoints = MyWayPoint.FilterWayPoints(MyEditorGizmo.SelectedEntities);\n                if (selectedWaypoints.Count == 0)\n                    RemovePath(SelectedPath);\n                else\n                    SelectedPath.WayPoints = selectedWaypoints;\n            }\n        }\n\n        // Find a waypoint path by name.\n        public static MyWayPointPath GetPath(string name)\n        {\n            MyWayPointPath path;\n            if (PathFromName.TryGetValue(name, out path))\n                return path;\n            return null;\n        }\n\n        // Purge null vertices. Called after sector load.\n        public static void DeleteNullVerticesFromPaths()\n        {\n            foreach (var path in StoredPaths)\n                path.DeleteNullVertices();\n            RemovePathsWithZeroVertices();\n        }\n\n        public static void Close()\n        {\n            foreach (var v in GetVertexListForModification())\n                v.Close();\n            InitPaths();\n            m_GPSWaypointsInited = false;\n            RecomputeConnectedComponents();  // releases m_waypointsFromComponentId and m_componentIds\n        }\n\n        public static void LoadData()\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyWayPointGraph.LoadData\");\n            m_vertices = new HashSet<MyWayPoint>();\n            InitPaths();\n            m_GPSWaypointsInited = false;\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        public static void UnloadData()\n        {\n            Close();\n        }\n\n        public static void InvalidateStoredPathCache()\n        {\n            foreach (var s in StoredPaths)\n                s.InvalidateStoredPathCache();\n        }\n\n        public static void SetSecrecyForPath(string pathName, bool newSecrecy)\n        {\n            var path = GetPath(pathName);\n            if (path == null) return;\n            foreach (var v in path.WayPoints)\n                v.IsSecret = newSecrecy;\n        }\n\n        public static void SetSecrecyForWaypoints(List<MyWayPoint> waypoints, bool newSecrecy)\n        {\n            foreach (var v in waypoints)\n                v.IsSecret = newSecrecy;\n        }\n\n        #endregion\n\n        #region Sector filling\n\n        private static bool m_GPSWaypointsInited = false;\n\n        public static void RemoveWaypointsAroundLargeStaticObjects()\n        {\n            if (!m_GPSWaypointsInited) return;\n\n            foreach (var v in GetVertexListForModification())\n                if (!v.Save)\n                    v.MarkForClose();\n\n            m_GPSWaypointsInited = false;\n            InvalidateStoredPathCache();\n        }\n\n\n        public static bool WaypointsIgnoreDepth = true;\n\n        private static bool m_visibilityOfAllWaypoints = true;\n\n        public static bool GetVisibilityOfAllWaypoints()\n        {\n            return m_visibilityOfAllWaypoints;\n        }\n\n        public static void SetVisibilityOfAllWaypoints(bool visibility)\n        {\n            if (m_visibilityOfAllWaypoints == visibility) return;\n\n            m_visibilityOfAllWaypoints = visibility;\n\n            using (VerticesLock.AcquireSharedUsing())\n            {                \n                foreach (var v in m_vertices)\n                {\n                    v.Visible = visibility;\n                    v.RenderObjects[0].SkipIfTooSmall = false;\n                }\n            }\n        }\n\n        /// <summary>\n        /// Create and connect waypoints to enable navigation outside prefab containers.\n        /// Needs to be called from the main thread (because it uses MyEntities.GetSafeIterationHelperForAll).\n        /// </summary>\n        public static void CreateWaypointsAroundLargeStaticObjects()\n        {\n            if (m_GPSWaypointsInited) return;\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"CreateWaypointsAroundLargeStaticObjects\");\n\n            // memory benchmark\n            //GC.Collect(2);\n            //MyMwcLog.WriteLine(\"#CreateWaypointsAroundLargeStaticObjects# before: working set \" + MyValueFormatter.GetFormatedLong(Environment.WorkingSet) + \", gc \" + MyValueFormatter.GetFormatedLong(GC.GetTotalMemory(false)));\n\n            // counters for debugging\n            int largeObjects = 0;\n            int totalWaypointsOutside = 0;\n            int bigSubdivisions = 0;\n            int freeEnvelopes = 0;\n            int edgesWithoutRaycasts = 0;\n            int edgesWithRaycastsAdded = 0;\n            int edgesWithRaycastsNotAdded = 0;\n            int closed = 0;\n\n            var envelopes = new List<MyWayPoint[, ,]>();\n            var envelopeEntity = new List<MyEntity>();\n            var envelopeBvh = new MyDynamicAABBTree(MyConstants.GAME_PRUNING_STRUCTURE_AABB_EXTENSION);\n\n            var nonFree = new HashSet<MyWayPoint>();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"create envelopes\");\n\n            var interestingBoxInflation = new Vector3(MyWaypointConstants.MAXIMUM_BOX_DISTANCE_TO_INTERESTING_STUFF_TO_GENERATE_WAYPOINTS);\n            var interestingBoxes = new List<BoundingBox>();\n\n            // find interesting stuff (only prefab containers for now)\n            foreach (var entity in MyEntities.GetEntities())\n            {\n                if (!(entity is MyPrefabContainer)) continue;\n\n                entity.UpdateAABBHr();\n                BoundingBox box = entity.WorldAABBHr;\n                if (box.Max - box.Min == Vector3.Zero)\n                {\n                    box = entity.WorldAABB;\n                    if (box.Max - box.Min == Vector3.Zero) continue;  // no bounding box\n                }\n\n                BoundingBox extrudedBox = new BoundingBox(box.Min - interestingBoxInflation, box.Max + interestingBoxInflation);\n                interestingBoxes.Add(extrudedBox);\n            }\n\n            int ss = 0;\n            int madelynsBox = -1;\n            // create envelopes\n            foreach (var entity in MyEntities.GetSafeIterationHelperForAll())\n            {\n                if (!(entity is MyVoxelMap || entity is MyPrefabContainer || entity is MyStaticAsteroid)) continue;\n\n                entity.UpdateAABBHr();\n                BoundingBox box = entity.WorldAABBHr;\n                if (box.Max - box.Min == Vector3.Zero)\n                    box = entity.WorldAABB;\n                if (entity is MyStaticAsteroid &&\n                    (box.Max - box.Min).LengthSquared() < MyWaypointConstants.MINIMUM_ASTEROID_DIAGONAL_LENGTH_TO_GENERATE_WAYPOINTS * MyWaypointConstants.MINIMUM_ASTEROID_DIAGONAL_LENGTH_TO_GENERATE_WAYPOINTS)\n                {\n                    continue;  // small static asteroids: ignore\n                }\n                if (entity is MyStaticAsteroid)\n                {\n                    ss++;\n                    bool inInteresting = false;\n                    foreach (var iBox in interestingBoxes)\n                    {\n                        if (iBox.Contains(box) != ContainmentType.Disjoint)\n                        {\n                            inInteresting = true;\n                            break;\n                        }\n                    }\n                    if (!inInteresting) continue;  // static asteroids far from interesting stuff: ignore\n                }\n                // enlarge by 1% and 15 meters on each side\n                BoundingBox extrudedBox = new BoundingBox(box.Min - (box.Max - box.Min) * 0.01f - new Vector3(15, 15, 15), box.Max + (box.Max - box.Min) * 0.01f + new Vector3(15, 15, 15));\n\n                //diagonals.Add((float)Math.Sqrt((box.Max - box.Min).LengthSquared()));\n\n                var waypointsOutside = new HashSet<MyWayPoint>();\n\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"find crossing\");\n                // add all edges that cross the non-extruded box from inside to outside (remember out-vertices)\n                foreach (var waypoint in MyGamePruningStructure.GetAllEntitiesInBox(ref extrudedBox, MyGamePruningStructure.QueryFlags.Waypoints))\n                {\n                    var v = waypoint as MyWayPoint;\n                    if (!v.Save) continue;\n                    nonFree.Add(v);\n                    using (MyWayPoint.NeighborsLock.AcquireSharedUsing())\n                    {\n                        foreach (var n in v.Neighbors) if (n.Save && extrudedBox.Contains(n.Position) != ContainmentType.Contains)\n                            {\n                                if (waypointsOutside.Add(n)) totalWaypointsOutside++;\n                                nonFree.Add(n);\n                            }\n                    }\n                }\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n                // create envelope\n                int s = 1;\n                if (waypointsOutside.Count > 0 || entity as MyStaticAsteroid == null)  // voxel maps and prefabs are automatically subdivided more\n                {\n                    s = 2;\n                    bigSubdivisions++;\n                }\n                MyWayPoint[, ,] envelope = new MyWayPoint[s + 1, s + 1, s + 1];\n\n                for (int i = 0; i <= s; i++) for (int j = 0; j <= s; j++) for (int k = 0; k <= s; k++)\n                        {\n                            if (s == 2 && i == 1 && j == 1 && k == 1) continue;\n                            envelope[i, j, k] = CreateWaypoint(new Vector3(\n                                extrudedBox.Min.X + i * (extrudedBox.Max.X - extrudedBox.Min.X) / s,\n                                extrudedBox.Min.Y + j * (extrudedBox.Max.Y - extrudedBox.Min.Y) / s,\n                                extrudedBox.Min.Z + k * (extrudedBox.Max.Z - extrudedBox.Min.Z) / s\n                            ), null);\n                            envelope[i, j, k].Save = false;  // don't save generated waypoints\n                            nonFree.Add(envelope[i, j, k]);\n\n                            // connect with neighbors\n                            // use ConnectIfNoAABBBlockers only for non-static asteroids\n                            // don't connect to the non-existing middle vertex\n                            if (entity is MyStaticAsteroid)\n                            {\n                                if (i != 0) if (!(s == 2 && i - 1 == 1 && j == 1 && k == 1)) { MyWayPoint.Connect(envelope[i, j, k], envelope[i - 1, j, k]); edgesWithoutRaycasts++; }\n                                if (j != 0) if (!(s == 2 && j - 1 == 1 && i == 1 && k == 1)) { MyWayPoint.Connect(envelope[i, j, k], envelope[i, j - 1, k]); edgesWithoutRaycasts++; }\n                                if (k != 0) if (!(s == 2 && k - 1 == 1 && j == 1 && i == 1)) { MyWayPoint.Connect(envelope[i, j, k], envelope[i, j, k - 1]); edgesWithoutRaycasts++; }\n                            }\n                            else\n                            {\n                                if (i != 0) if (!(s == 2 && i - 1 == 1 && j == 1 && k == 1)) { if (MyWayPoint.ConnectIfNoAABBBlockers(envelope[i, j, k], envelope[i - 1, j, k])) edgesWithRaycastsAdded++; else edgesWithRaycastsNotAdded++; }\n                                if (j != 0) if (!(s == 2 && j - 1 == 1 && i == 1 && k == 1)) { if (MyWayPoint.ConnectIfNoAABBBlockers(envelope[i, j, k], envelope[i, j - 1, k])) edgesWithRaycastsAdded++; else edgesWithRaycastsNotAdded++; }\n                                if (k != 0) if (!(s == 2 && k - 1 == 1 && j == 1 && i == 1)) { if (MyWayPoint.ConnectIfNoAABBBlockers(envelope[i, j, k], envelope[i, j, k - 1])) edgesWithRaycastsAdded++; else edgesWithRaycastsNotAdded++; }\n                            }\n\n                            // if it's a part of a face that faces an out-vertex, connect it\n                            foreach (var v in waypointsOutside)\n                                if ((i == 0 && v.Position.X <= envelope[i, j, k].Position.X) ||\n                                    (i == s && v.Position.X >= envelope[i, j, k].Position.X) ||\n                                    (j == 0 && v.Position.Y <= envelope[i, j, k].Position.Y) ||\n                                    (j == s && v.Position.Y >= envelope[i, j, k].Position.Y) ||\n                                    (k == 0 && v.Position.Z <= envelope[i, j, k].Position.Z) ||\n                                    (k == s && v.Position.Z >= envelope[i, j, k].Position.Z)\n                                )\n                                {\n                                    if (MyWayPoint.ConnectIfNoAABBBlockers(v, envelope[i, j, k]))\n                                        edgesWithRaycastsAdded++;\n                                    else\n                                        edgesWithRaycastsNotAdded++;\n                                }\n                        }\n\n                envelopes.Add(envelope);\n                envelopeEntity.Add(entity);\n                envelopeBvh.AddProxy(ref extrudedBox, envelopes.Count - 1, 0);\n                largeObjects++;\n\n                if (entity.Name == \"Madelyn\")\n                {\n                    madelynsBox = envelopes.Count - 1;\n                }\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n            var componentsDone = new HashSet<int>();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"connect free wps\");\n\n            // free waypoint: check whether it's connected to an envelope\n            foreach (var v in GetVertexListForModification()) if (!nonFree.Contains(v))\n                {\n                    int id = GetConnectedComponentId(v);\n                    if (componentsDone.Contains(id)) continue;\n\n                    componentsDone.Add(id);\n\n                    var connectedWaypoints = GetWaypointsWithConnectedComponentId(id);\n\n                    // is this component already connected to an envelope?\n                    var box = new BoundingBox(v.Position, v.Position);\n                    foreach (var w in connectedWaypoints) if (w.Save)\n                        {\n                            var pos = w.Position;\n                            box = box.Include(ref pos);\n                            if (nonFree.Contains(w))\n                                goto alreadyConnected;\n                        }\n\n                    BoundingBox extrudedBox = new BoundingBox(box.Min - (box.Max - box.Min) * 0.01f - new Vector3(5, 5, 5), box.Max + (box.Max - box.Min) * 0.01f + new Vector3(5, 5, 5));\n\n                    // no - create a new one\n                    int s = 1;\n                    MyWayPoint[, ,] envelope = new MyWayPoint[s + 1, s + 1, s + 1];\n                    for (int i = 0; i <= s; i++) for (int j = 0; j <= s; j++) for (int k = 0; k <= s; k++)\n                            {\n                                envelope[i, j, k] = CreateWaypoint(new Vector3(\n                                    extrudedBox.Min.X + i * (extrudedBox.Max.X - extrudedBox.Min.X) / s,\n                                    extrudedBox.Min.Y + j * (extrudedBox.Max.Y - extrudedBox.Min.Y) / s,\n                                    extrudedBox.Min.Z + k * (extrudedBox.Max.Z - extrudedBox.Min.Z) / s\n                                ), null);\n                                envelope[i, j, k].Save = false;  // don't save generated waypoints\n                                nonFree.Add(envelope[i, j, k]);\n\n                                // connect with neighbors\n                                // should use ConnectIfVisible, but it's slow and we can resolve it while computing the GPS\n                                if (i != 0) { if (MyWayPoint.ConnectIfNoAABBBlockers(envelope[i, j, k], envelope[i - 1, j, k])) edgesWithRaycastsAdded++; else edgesWithRaycastsNotAdded++; }\n                                if (j != 0) { if (MyWayPoint.ConnectIfNoAABBBlockers(envelope[i, j, k], envelope[i, j - 1, k])) edgesWithRaycastsAdded++; else edgesWithRaycastsNotAdded++; }\n                                if (k != 0) { if (MyWayPoint.ConnectIfNoAABBBlockers(envelope[i, j, k], envelope[i, j, k - 1])) edgesWithRaycastsAdded++; else edgesWithRaycastsNotAdded++; }\n                            }\n\n                    // connect all waypoints to the closest corner of the new envelope\n                    foreach (var w in connectedWaypoints)\n                    {\n                        var pos = w.Position;\n                        if (MyWayPoint.ConnectIfNoAABBBlockers(w, envelope[pos.X < extrudedBox.GetCenter().X ? 0 : 1, pos.Y < extrudedBox.GetCenter().Y ? 0 : 1, pos.Z < extrudedBox.GetCenter().Z ? 0 : 1]))\n                            edgesWithRaycastsAdded++;\n                        else\n                            edgesWithRaycastsNotAdded++;\n                    }\n                    envelopes.Add(envelope);\n                    envelopeEntity.Add(null);\n                    envelopeBvh.AddProxy(ref extrudedBox, envelopes.Count - 1, 0);\n                    freeEnvelopes++;\n\n                alreadyConnected: { }\n                }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"connect envelopes\");\n\n            // connect envelopes together\n            for (int eIndex = 0; eIndex < envelopes.Count; eIndex++)\n            {\n                var e = envelopes[eIndex];\n                int es = e.GetLength(0) - 1;\n                var eCenter = 0.5f * (e[0, 0, 0].Position + e[es, es, es].Position);\n\n                // get K closest indices\n                var closestEnvelopeIndices = new List<int>();\n                for (int i = 200; i <= 6400; i *= 2)  // try 200, 400, 800, 1600, 3200, 6400 m\n                {\n                    var halfExtent = new Vector3(i);\n                    var bbox = new BoundingBox(eCenter - halfExtent, eCenter + halfExtent);\n                    envelopeBvh.OverlapAllBoundingBox(ref bbox, closestEnvelopeIndices);\n                    if (closestEnvelopeIndices.Count >= 16) break;\n                }\n\n                // connect them together\n                int k = 0;\n                foreach (var qIndex in closestEnvelopeIndices)\n                {\n                    if (++k == 16) break;  // take only 16 envelopes\n                    if (qIndex == eIndex) continue;\n\n                    var q = envelopes[qIndex];\n\n                    int qs = q.GetLength(0) - 1;\n                    var qCenter = 0.5f * (q[0, 0, 0].Position + q[qs, qs, qs].Position);\n\n                    // connect the closest opposite vertices\n                    int qx, qy, qz, ex, ey, ez;\n                    if (qCenter.X < eCenter.X) { qx = qs; ex = 0; } else { qx = 0; ex = es; }\n                    if (qCenter.Y < eCenter.Y) { qy = qs; ey = 0; } else { qy = 0; ey = es; }\n                    if (qCenter.Z < eCenter.Z) { qz = qs; ez = 0; } else { qz = 0; ez = es; }\n\n                    if (es > 1 || qs > 1)\n                    {\n                        if (MyWayPoint.ConnectIfNoAABBBlockers(e[ex, ey, ez], q[qx, qy, qz], envelopeEntity[eIndex], envelopeEntity[qIndex]))\n                            edgesWithRaycastsAdded++;\n                        else\n                            edgesWithRaycastsNotAdded++;\n                    }\n                    else\n                    {\n                        // don't make a raycast if one of the envelopes isn't important\n                        MyWayPoint.Connect(e[ex, ey, ez], q[qx, qy, qz]);\n                        edgesWithoutRaycasts++;\n                    }\n\n                    // connect Madelyn's waypoint to envelopes\n                    if (eIndex == madelynsBox)\n                    {\n                        MyEntity madelyn = envelopeEntity[madelynsBox];\n                        foreach (var child in madelyn.Children)\n                        {\n                            var w = child as MyWayPoint;\n                            if (w == null)\n                                continue;\n                            MyWayPoint.ConnectIfNoAABBBlockers(w, q[qx, qy, qz]);  // make a raycast\n                        }\n                    }\n                }\n\n                // connect Madelyn's waypoint to envelopes\n                if (eIndex == madelynsBox)\n                {\n                    MyEntity madelyn = envelopeEntity[madelynsBox];\n\n                    madelyn.UpdateAABBHr();\n                    BoundingBox extrudedAABB = madelyn.WorldAABBHr;\n                    extrudedAABB.Min -= new Vector3(500);\n                    extrudedAABB.Max += new Vector3(500);\n\n                    List<MyWayPoint> nearMadelynWaypoints = new List<MyWayPoint>();\n\n                    foreach (var waypoint in MyGamePruningStructure.GetAllEntitiesInBox(ref extrudedAABB, MyGamePruningStructure.QueryFlags.Waypoints))\n                    {\n                        MyWayPoint v = waypoint as MyWayPoint;\n                        if (v != null)\n                        {\n                            if (!v.Save)\n                                continue;\n                            nearMadelynWaypoints.Add(v);\n                        }\n                    }\n\n                    foreach (var child in madelyn.Children)\n                    {\n                        var w = child as MyWayPoint;\n                        if (w == null)\n                            continue;\n\n                        foreach (MyWayPoint v in nearMadelynWaypoints)\n                        {\n                            MyWayPoint.ConnectIfVisible(w, v);  // make a raycast\n                        }\n                    }\n                }\n            }\n\n            // delete generated waypoints without edges\n            foreach (var v in GetVertexListForModification())\n            {\n                if (!v.Save && v.Neighbors.Count == 0)\n                {\n                    v.MarkForClose();\n                    closed++;\n                }\n            }\n\n            m_GPSWaypointsInited = true;\n            InvalidateStoredPathCache();\n\n            // memory benchmark\n            //GC.Collect(2);\n            //MyMwcLog.WriteLine(\"#CreateWaypointsAroundLargeStaticObjects# after: working set \" + MyValueFormatter.GetFormatedLong(Environment.WorkingSet) + \", gc \" + MyValueFormatter.GetFormatedLong(GC.GetTotalMemory(false)));\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n\n        /// <summary>\n        /// Create and connect waypoints to enable navigation outside prefab containers.\n        /// Needs to be called from the main thread (because it uses MyEntities.GetSafeIterationHelperForAll).\n        /// </summary>\n        public static void RecreateWaypointsAroundMadelyn()\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"RecreateWaypointsAroundMadelyn\");\n\n            // counters for debugging\n            int largeObjects = 0;\n            int totalWaypointsOutside = 0;\n            int bigSubdivisions = 0;\n            int closed = 0;\n\n            var envelopes = new List<MyWayPoint[, ,]>();\n            var envelopeEntity = new List<MyEntity>();\n            var envelopeBvh = new MyDynamicAABBTree(MyConstants.GAME_PRUNING_STRUCTURE_AABB_EXTENSION);\n\n            var nonFree = new HashSet<MyWayPoint>();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"create envelope\");\n\n            int madelynsBox = -1;\n            // create envelopes\n            {\n                var entity = MyEntities.GetEntityByName(\"Madelyn\");\n\n                entity.UpdateAABBHr();\n                BoundingBox box = entity.WorldAABBHr;\n                if (box.Max - box.Min == Vector3.Zero)\n                    box = entity.WorldAABB;\n\n                // enlarge by 1% and 15 meters on each side\n                BoundingBox extrudedBox = new BoundingBox(box.Min - (box.Max - box.Min) * 0.01f - new Vector3(15, 15, 15), box.Max + (box.Max - box.Min) * 0.01f + new Vector3(15, 15, 15));\n\n                var waypointsOutside = new HashSet<MyWayPoint>();\n\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"find crossing\");\n                // add all edges that cross the non-extruded box from inside to outside (remember out-vertices)\n                foreach (var waypoint in MyGamePruningStructure.GetAllEntitiesInBox(ref extrudedBox, MyGamePruningStructure.QueryFlags.Waypoints))\n                {\n                    var v = waypoint as MyWayPoint;\n                    if (!v.Save) continue;\n                    nonFree.Add(v);\n                    using (MyWayPoint.NeighborsLock.AcquireSharedUsing())\n                    {\n                        foreach (var n in v.Neighbors)\n                            if (n.Save && extrudedBox.Contains(n.Position) != ContainmentType.Contains)\n                            {\n                                if (waypointsOutside.Add(n)) totalWaypointsOutside++;\n                                nonFree.Add(n);\n                            }\n                    }\n                }\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n                // create envelope\n                int s = 1;\n                if (waypointsOutside.Count > 0 || entity as MyStaticAsteroid == null)  // voxel maps and prefabs are automatically subdivided more\n                {\n                    s = 2;\n                    bigSubdivisions++;\n                }\n                MyWayPoint[, ,] envelope = new MyWayPoint[s + 1, s + 1, s + 1];\n\n                for (int i = 0; i <= s; i++) for (int j = 0; j <= s; j++) for (int k = 0; k <= s; k++)\n                {\n                    if (s == 2 && i == 1 && j == 1 && k == 1) continue;\n                    envelope[i, j, k] = CreateWaypoint(new Vector3(\n                        extrudedBox.Min.X + i * (extrudedBox.Max.X - extrudedBox.Min.X) / s,\n                        extrudedBox.Min.Y + j * (extrudedBox.Max.Y - extrudedBox.Min.Y) / s,\n                        extrudedBox.Min.Z + k * (extrudedBox.Max.Z - extrudedBox.Min.Z) / s\n                    ), null);\n                    envelope[i, j, k].Save = false;  // don't save generated waypoints\n                    nonFree.Add(envelope[i, j, k]);\n\n                    // assume Madelyn's envelope has no blockers\n                    if (i != 0) if (!(s == 2 && i - 1 == 1 && j == 1 && k == 1)) MyWayPoint.Connect(envelope[i, j, k], envelope[i - 1, j, k]);\n                    if (j != 0) if (!(s == 2 && j - 1 == 1 && i == 1 && k == 1)) MyWayPoint.Connect(envelope[i, j, k], envelope[i, j - 1, k]);\n                    if (k != 0) if (!(s == 2 && k - 1 == 1 && j == 1 && i == 1)) MyWayPoint.Connect(envelope[i, j, k], envelope[i, j, k - 1]);\n\n                    // if it's a part of a face that faces an out-vertex, connect it\n                    foreach (var v in waypointsOutside)\n                        if ((i == 0 && v.Position.X <= envelope[i, j, k].Position.X) ||\n                            (i == s && v.Position.X >= envelope[i, j, k].Position.X) ||\n                            (j == 0 && v.Position.Y <= envelope[i, j, k].Position.Y) ||\n                            (j == s && v.Position.Y >= envelope[i, j, k].Position.Y) ||\n                            (k == 0 && v.Position.Z <= envelope[i, j, k].Position.Z) ||\n                            (k == s && v.Position.Z >= envelope[i, j, k].Position.Z)\n                        )\n                        {\n                            MyWayPoint.Connect(v, envelope[i, j, k]);\n                        }\n                }\n\n                envelopes.Add(envelope);\n                envelopeEntity.Add(entity);\n                envelopeBvh.AddProxy(ref extrudedBox, envelopes.Count - 1, 0);\n                largeObjects++;\n\n                madelynsBox = envelopes.Count - 1;\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"disconnect from old waypoints\");\n            var madelynWaypoints = new HashSet<MyWayPoint>();\n            {\n                var entity = MyEntities.GetEntityByName(\"Madelyn\");\n\n                foreach (var child in entity.Children)\n                {\n                    var w = child as MyWayPoint;\n                    if (w == null) continue;\n                    madelynWaypoints.Add(w);\n                }\n                foreach (var v in madelynWaypoints)\n                {\n                    var outsiders = new List<MyWayPoint>();\n                    foreach (var n in v.Neighbors)\n                        if (!madelynWaypoints.Contains(n)) outsiders.Add(n);\n                    foreach (var n in outsiders)\n                        MyWayPoint.Disconnect(v, n);\n                }\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"connect to new surrounding waypoints\");\n\n            for (int eIndex = 0; eIndex < envelopes.Count; eIndex++)\n            {\n                var e = envelopes[eIndex];\n                int es = e.GetLength(0) - 1;\n                var eCenter = 0.5f * (e[0, 0, 0].Position + e[es, es, es].Position);\n\n                // connect Madelyn's inner waypoints to waypoints around her\n                if (eIndex == madelynsBox)\n                {\n                    MyEntity madelyn = envelopeEntity[madelynsBox];\n\n                    madelyn.UpdateAABBHr();\n                    BoundingBox extrudedAABB = madelyn.WorldAABBHr;\n                    extrudedAABB.Min -= new Vector3(500);\n                    extrudedAABB.Max += new Vector3(500);\n\n                    List<MyWayPoint> nearMadelynWaypoints = new List<MyWayPoint>();\n\n                    foreach (var waypoint in MyGamePruningStructure.GetAllEntitiesInBox(ref extrudedAABB, MyGamePruningStructure.QueryFlags.Waypoints))\n                    {\n                        MyWayPoint v = waypoint as MyWayPoint;\n                        if (v != null)\n                        {\n                            if (!v.Save) continue;\n                            if (madelyn.Children.Contains(v)) continue;\n                            nearMadelynWaypoints.Add(v);\n                        }\n                    }\n                    int connected = 0, raycasts = 0;\n                    foreach (MyWayPoint v in nearMadelynWaypoints)\n                    {\n                        foreach (var child in madelyn.Children)\n                        {\n                            var w = child as MyWayPoint;\n                            if (w == null) continue;\n\n                            if (v.Neighbors.Contains(w)) continue;\n                            raycasts++;\n                            if (MyWayPoint.ConnectIfVisible(w, v))  // make a raycast\n                            {\n                                connected++;\n                                break;\n                            }\n                        }\n                    }\n                }\n            }\n\n            // delete generated waypoints without edges\n            foreach (var v in GetVertexListForModification())\n            {\n                if (!v.Save && v.Neighbors.Count == 0)\n                {\n                    v.MarkForClose();\n                    closed++;\n                }\n            }\n\n            InvalidateStoredPathCache();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n        \n        #endregion\n\n\n        #region Anti-allocation measures\n\n        private static List<MyWayPoint> m_vertexListForModification = new List<MyWayPoint>(MyWaypointConstants.MAX_WAYPOINTS);\n        private static void PrepareVertexListForModification()\n        {\n            m_vertexListForModification.Clear();\n            using (VerticesLock.AcquireSharedUsing())\n            {\n                foreach (var v in m_vertices)\n                    m_vertexListForModification.Add(v);\n            }\n\n            MyCommonDebugUtils.AssertDebug(m_vertexListForModification.Count <= MyWaypointConstants.MAX_WAYPOINTS);\n        }\n\n        private static List<MyWayPoint> GetVertexListForModification()\n        {\n            PrepareVertexListForModification();\n            return m_vertexListForModification;\n        }\n\n        #endregion\n\n        public static int WaypointCount()\n        {\n            if (m_vertices == null) return 0;\n            return m_vertices.Count;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/WayPoints/MyWayPointPath.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing KeenSoftwareHouse.Library.Parallelization.Threading;\n\nnamespace MinerWars.AppCode.Game.Entities.WayPoints\n{\n    // This is practically just a named list of waypoints.\n    class MyWayPointPath\n    {\n        public List<MyWayPoint> WayPoints;\n        public string Name { get; private set; }\n        private List<MyWayPoint> m_cachedCompletePath;\n\n        public MyWayPointPath(string name)\n        {\n            WayPoints = new List<MyWayPoint>();\n            Name = name;\n            m_cachedCompletePath = null;\n            MyWayPointGraph.StoredPaths.Add(this);\n            MyWayPointGraph.PathFromName.Add(name, this);\n        }\n\n        public void DeleteNullVertices()\n        {\n            if (WayPoints == null) return;\n\n            var newWaypoints = new List<MyWayPoint>();\n            for (int i = 0; i < WayPoints.Count; i++)\n                if (WayPoints[i] != null)\n                    newWaypoints.Add(WayPoints[i]);\n            if (newWaypoints.Count != WayPoints.Count)\n                WayPoints = newWaypoints;\n        }\n\n        public void InvalidateStoredPathCache()\n        {\n            m_cachedCompletePath = null;\n        }\n\n        // Return the complete shortest path between vertices in a list.\n        public List<MyWayPoint> CompletePath(HashSet<Tuple<MyWayPoint, MyWayPoint>> blockedEdges, MyWayPoint currentWayPoint, bool useGeneratedWaypoints = true, bool cycle = false, bool cachedIsOk = true)\n        {\n            if (!cachedIsOk || m_cachedCompletePath == null)\n            {\n                using (MyEntities.EntityCloseLock.AcquireSharedUsing())\n                {\n                    m_cachedCompletePath = new List<MyWayPoint>();\n                    if (WayPoints == null || WayPoints.Count == 0) return m_cachedCompletePath;\n\n                    int currentIndex = currentWayPoint != null ? WayPoints.IndexOf(currentWayPoint) : 0;\n                    m_cachedCompletePath.Add(WayPoints[0]);\n                    //for (int i = 0; i < WayPoints.Count - 1; i++)\n                    //{\n                    //    var subpath = WayPoints[i].GetShortestPathTo(WayPoints[i + 1], blockedEdges, useGeneratedWaypoints);\n                    //    if (subpath.Count == 0)\n                    //        m_cachedCompletePath.Add(WayPoints[i + 1]);  // no path: add straight line to next waypoint\n                    //    else\n                    //        m_cachedCompletePath.AddRange(subpath.GetRange(1, subpath.Count - 1));  // the first point was the last point of the previous segment\n                    //}\n                    //if (cycle)\n                    //{\n                    //    var subpath = WayPoints[WayPoints.Count - 1].GetShortestPathTo(WayPoints[0], blockedEdges, useGeneratedWaypoints);\n                    //    if (subpath.Count > 2)\n                    //        m_cachedCompletePath.AddRange(subpath.GetRange(1, subpath.Count - 2));  // the first point was the last point of the previous segment, the last point was point 0\n                    //}\n                    for (int i = 0; i < WayPoints.Count - 1; i++)\n                    {\n                        var subpath = WayPoints[i].GetShortestPathTo(WayPoints[i + 1], blockedEdges, useGeneratedWaypoints);\n                        if (subpath.Count == 0)\n                        {\n                            if (blockedEdges != null && blockedEdges.Contains(Tuple.Create(WayPoints[i], WayPoints[i + 1])))\n                            {\n                                // this part of the path is unreachable\n                                if (currentIndex > i)\n                                {\n                                    m_cachedCompletePath.Clear();\n                                    m_cachedCompletePath.Add(WayPoints[i + 1]);\n                                }\n                                else\n                                {\n                                    break;\n                                }\n                            }\n                            else\n                            {\n                                m_cachedCompletePath.Add(WayPoints[i + 1]);  // no path: add straight line to next waypoint\n                            }\n                        }\n                        else\n                        {\n                            m_cachedCompletePath.AddRange(subpath.GetRange(1, subpath.Count - 1));  // the first point was the last point of the previous segment\n                        }\n                    }\n\n                    if (cycle)\n                    {\n                        var subpath = WayPoints[WayPoints.Count - 1].GetShortestPathTo(WayPoints[0], blockedEdges, useGeneratedWaypoints);\n                        if (subpath.Count > 2)\n                            m_cachedCompletePath.AddRange(subpath.GetRange(1, subpath.Count - 2));  // the first point was the last point of the previous segment, the last point was point 0\n                    }\n                }\n            }\n            return m_cachedCompletePath;\n        }\n\n        public bool ContainsEdge(MyWayPoint v, MyWayPoint w)\n        {\n            using (MyEntities.EntityCloseLock.AcquireSharedUsing())\n            {\n                for (int i = 0; i < WayPoints.Count - 1; i++)\n                {\n                    var subpath = WayPoints[i].GetShortestPathTo(WayPoints[i + 1]);\n                    for (int j = 0; j < subpath.Count - 1; j++)\n                        if ((subpath[j] == v && subpath[j + 1] == w) || (subpath[j] == w && subpath[j + 1] == v))\n                            return true;\n                }\n            }\n            return false;\n        }\n\n        // returns true if everything's ok, false if zero name or if there already is a path with this name\n        public bool ChangeName(string newName)\n        {\n            if (newName == null || newName.Length == 0) return false;  // zero name\n            if (newName == Name) return true;  // already the same\n            if (MyWayPointGraph.PathFromName.ContainsKey(newName)) return false;  // duplicate\n\n            MyWayPointGraph.PathFromName.Remove(Name);\n            Name = newName;\n            MyWayPointGraph.PathFromName.Add(newName, this);\n            return true;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Weapons/Ammo/MyAmmoAssignment.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.AppCode.Game.Entities.Weapons.UniversalLauncher;\nusing System.Reflection;\nusing KeenSoftwareHouse.Library.Extensions;\nusing MinerWars.CommonLIB.AppCode.Utils;\n\nnamespace MinerWars.AppCode.Game.Entities.Weapons.Ammo\n{\n    class MyAmmoAssignment\n    {\n        private MyMwcObjectBuilder_FireKeyEnum m_fireKey;\n\n        private MyMwcObjectBuilder_AmmoGroupEnum m_ammoGroup;\n\n        private MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum m_ammoType;\n\n        /// <summary>\n        /// Fire key\n        /// </summary>\n        public MyMwcObjectBuilder_FireKeyEnum FireKey \n        {\n            get \n            {\n                return m_fireKey;\n            }\n            set \n            {\n                m_fireKey = value;\n            }\n        }\n\n        /// <summary>\n        /// Ammo group\n        /// </summary>\n        public MyMwcObjectBuilder_AmmoGroupEnum AmmoGroup \n        {\n            get \n            {\n                return m_ammoGroup;\n            }\n            set \n            {\n                m_ammoGroup = value;\n            }\n        }\n\n        /// <summary>\n        /// Ammo type\n        /// </summary>\n        public MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum AmmoType \n        {\n            get \n            {\n                return m_ammoType;\n            }\n            set \n            {\n                m_ammoType = value;\n            }\n        }\n\n        /// <summary>\n        /// Creates new instance of ammo assignment\n        /// </summary>\n        /// <param name=\"fireKey\">Fire key</param>\n        /// <param name=\"ammoGroup\">Ammo group</param>\n        /// <param name=\"ammoType\">Ammo type</param>\n        public MyAmmoAssignment(MyMwcObjectBuilder_FireKeyEnum fireKey, MyMwcObjectBuilder_AmmoGroupEnum ammoGroup, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum ammoType)\n        {\n            FireKey = fireKey;\n            AmmoGroup = ammoGroup;\n            AmmoType = ammoType;\n        }\n\n        /// <summary>\n        /// Creates new instance of ammo assignment\n        /// </summary>\n        /// <param name=\"assignmentOfAmmo\">Assignment of ammo object builder</param>        \n        public MyAmmoAssignment(MyMwcObjectBuilder_AssignmentOfAmmo assignmentOfAmmo)\n            : this(assignmentOfAmmo.FireKey, assignmentOfAmmo.Group, assignmentOfAmmo.AmmoType)\n        {\n        }\n\n        public MyAmmoAssignment() { }\n\n        public override int GetHashCode()\n        {\n            return (int)FireKey ^ 3 + (int)AmmoGroup ^ 7 + (int)AmmoType ^ 11;\n        }\n\n        public override bool Equals(object obj)\n        {\n            return Equals(obj as MyAmmoAssignment);\n        }\n\n        public bool Equals(MyAmmoAssignment other) \n        {\n            if (other == null) return false;\n\n            return GetHashCode() == other.GetHashCode();\n        }\n    }\n\n    class MyAmmoAssignments\n    {\n        // collection of ammo assignment        \n        private Dictionary<int, MyAmmoAssignment> m_ammoAssignmentCollection;\n        private MySmallShipWeapons m_smallShipWeapons;\n\n        public MyAmmoAssignments(MySmallShipWeapons smallShipWeapons)\n        {\n            m_smallShipWeapons = smallShipWeapons;\n            m_ammoAssignmentCollection = new Dictionary<int, MyAmmoAssignment>();\n        }\n        \n        /// <summary>\n        /// Initialize assignments of ammo from objectbuilders\n        /// </summary>\n        /// <param name=\"assignmentOfAmmoObjectBuilders\">Assignment of ammo objectbuilders collection</param>\n        public void Init(List<MyMwcObjectBuilder_AssignmentOfAmmo> assignmentOfAmmoObjectBuilders)\n        {\n            Debug.Assert(assignmentOfAmmoObjectBuilders != null);\n            m_ammoAssignmentCollection.Clear();\n            foreach (MyMwcObjectBuilder_AssignmentOfAmmo objectBuilder in assignmentOfAmmoObjectBuilders)\n            {                \n                AssignAmmo(objectBuilder.FireKey, objectBuilder.Group, objectBuilder.AmmoType);\n            }\n\n            // non-remappable assignments\n            AssignAmmo(MyMwcObjectBuilder_FireKeyEnum.HologramFront, MyMwcObjectBuilder_AmmoGroupEnum.UniversalLauncherFront, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Hologram);\n            AssignAmmo(MyMwcObjectBuilder_FireKeyEnum.HologramBack, MyMwcObjectBuilder_AmmoGroupEnum.UniversalLauncherBack, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Hologram);\n            AssignAmmo(MyMwcObjectBuilder_FireKeyEnum.BasicMineFront, MyMwcObjectBuilder_AmmoGroupEnum.UniversalLauncherFront, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Mine_Basic);\n            AssignAmmo(MyMwcObjectBuilder_FireKeyEnum.BasicMineBack, MyMwcObjectBuilder_AmmoGroupEnum.UniversalLauncherBack, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Mine_Basic);\n            AssignAmmo(MyMwcObjectBuilder_FireKeyEnum.SmartMineFront, MyMwcObjectBuilder_AmmoGroupEnum.UniversalLauncherFront, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Mine_Smart);\n            AssignAmmo(MyMwcObjectBuilder_FireKeyEnum.SmartMineBack, MyMwcObjectBuilder_AmmoGroupEnum.UniversalLauncherBack, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Mine_Smart);\n            AssignAmmo(MyMwcObjectBuilder_FireKeyEnum.FlashBombFront, MyMwcObjectBuilder_AmmoGroupEnum.UniversalLauncherFront, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Flash_Bomb);\n            AssignAmmo(MyMwcObjectBuilder_FireKeyEnum.FlashBombBack, MyMwcObjectBuilder_AmmoGroupEnum.UniversalLauncherBack, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Flash_Bomb);\n            AssignAmmo(MyMwcObjectBuilder_FireKeyEnum.DecoyFlareFront, MyMwcObjectBuilder_AmmoGroupEnum.UniversalLauncherFront, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Decoy_Flare);\n            AssignAmmo(MyMwcObjectBuilder_FireKeyEnum.DecoyFlareBack, MyMwcObjectBuilder_AmmoGroupEnum.UniversalLauncherBack, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Decoy_Flare);\n            AssignAmmo(MyMwcObjectBuilder_FireKeyEnum.SmokeBombFront, MyMwcObjectBuilder_AmmoGroupEnum.UniversalLauncherFront, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Smoke_Bomb);\n            AssignAmmo(MyMwcObjectBuilder_FireKeyEnum.SmokeBombBack, MyMwcObjectBuilder_AmmoGroupEnum.UniversalLauncherBack, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Smoke_Bomb);            \n        }        \n\n        /// <summary>\n        /// Returns collection of assignment of ammo objectbuilders\n        /// </summary>\n        /// <returns></returns>\n        public List<MyMwcObjectBuilder_AssignmentOfAmmo> GetObjectBuilder()\n        {\n            List<MyMwcObjectBuilder_AssignmentOfAmmo> objectBuilders = new List<MyMwcObjectBuilder_AssignmentOfAmmo>();\n            foreach (var ammoAssignmentKVP in m_ammoAssignmentCollection)\n            {\n                MyAmmoAssignment ammoAssignment = ammoAssignmentKVP.Value;\n                objectBuilders.Add(new MyMwcObjectBuilder_AssignmentOfAmmo(ammoAssignment.FireKey, ammoAssignment.AmmoGroup, ammoAssignment.AmmoType));\n            }\n            return objectBuilders;\n        }\n\n        /// <summary>\n        /// Assign ammo group, ammo type to fire key\n        /// </summary>\n        /// <param name=\"fireKey\">Fire key</param>\n        /// <param name=\"ammoGroup\">Ammo group</param>\n        /// <param name=\"ammoType\">Ammmo type</param>\n        public void AssignAmmo(MyMwcObjectBuilder_FireKeyEnum fireKey, MyMwcObjectBuilder_AmmoGroupEnum ammoGroup, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum ammoType)\n        {\n            MyAmmoAssignment ammoAssignment = GetAmmoAssignment(fireKey);\n            if (ammoAssignment != null)\n            {\n                ammoAssignment.AmmoGroup = ammoGroup;\n                ammoAssignment.AmmoType = ammoType;\n            }\n            else\n            {\n                m_ammoAssignmentCollection.Add((int)fireKey, new MyAmmoAssignment(fireKey, ammoGroup, ammoType));\n            }\n        }\n\n        /// <summary>\n        /// Returns ammo assignment by fire key (ammo group, ammo type)\n        /// </summary>\n        /// <param name=\"fireKey\">Fire key</param>\n        /// <param name=\"ammoGroup\">Ammo group</param>\n        /// <param name=\"ammoType\">Ammmo type</param>\n        /// <returns></returns>\n        public MyAmmoAssignment GetAmmoAssignment(MyMwcObjectBuilder_FireKeyEnum fireKey)\n        {\n            if (m_ammoAssignmentCollection.ContainsKey((int)fireKey)) \n            {\n                return m_ammoAssignmentCollection[(int)fireKey];\n            }\n            return null;            \n        }\n\n        /// <summary>\n        /// Returns ammo type by fire key\n        /// </summary>\n        /// <param name=\"key\">Fire key</param>\n        /// <returns></returns>\n        public MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum GetAmmoType(MyMwcObjectBuilder_FireKeyEnum key)\n        {\n            MyAmmoAssignment ammoAssignment = GetAmmoAssignment(key);\n            if (ammoAssignment == null)\n            {\n                return 0;\n            }\n            else\n            {\n                return ammoAssignment.AmmoType;\n            }\n        }\n\n        /// <summary>\n        /// Returns count of ammo assignment\n        /// </summary>\n        /// <returns></returns>\n        public int Count()\n        {\n            return m_ammoAssignmentCollection.Count;\n        }\n\n        /// <summary>\n        /// Returns ammo special text by fire key\n        /// </summary>\n        /// <param name=\"key\">Fire key</param>\n        /// <returns></returns>\n        public StringBuilder GetAmmoSpecialText(MyMwcObjectBuilder_FireKeyEnum key)\n        {\n            //Get ammo type\n            MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum ammoType = GetAmmoType(key);\n            if (ammoType == 0) return null;\n\n            return GetAmmoSpecialText(ammoType);\n        }\n\n        /// <summary>\n        /// Close method\n        /// </summary>\n        public void Close() \n        {\n            m_ammoAssignmentCollection.Clear();\n            m_ammoAssignmentCollection = null;\n            m_smallShipWeapons = null;\n        }\n\n        /// <summary>\n        /// Returns ammo special text from ammo type\n        /// </summary>\n        /// <param name=\"ammoType\">Ammo type</param>\n        /// <returns></returns>\n        private StringBuilder GetAmmoSpecialText(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum ammoType)\n        {\n            switch (ammoType)\n            {\n                case MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Time_Bomb:\n                    return MyTimeBomb.GetAmmoSpecialText();\n                    break;\n\n                case MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Remote_Bomb:\n                    return MyRemoteBomb.GetAmmoSpecialText();\n                    break;\n\n                //case MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Remote_Camera:\n                //    return MyRemoteCamera.GetAmmoSpecialText();\n                //    break;\n\n                default:\n                    break;\n            }\n\n            return MyMwcUtils.EmptyStringBuilder;\n        }\n    }    \n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Weapons/Ammo/MyAmmoBase.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing MinerWarsMath;\n\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.AppCode.Game.Explosions;\nusing MinerWars.AppCode.Game.HUD;\nusing MinerWars.AppCode.Game.Lights;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Models;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Physics;\nusing MinerWars.AppCode.Game.Physics;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.AppCode.Game.Sessions;\nusing MinerWars.AppCode.Game.Render;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.AppCode.Game.Gameplay;\nusing SysUtils.Utils;\n\n\nnamespace MinerWars.AppCode.Game.Entities.Weapons\n{\n    class MyAmmoBase : MyEntity\n    {\n        //  IMPORTANT: This class isn't realy inicialized by constructor, but by Start()\n        //  So don't initialize members here, do it in Start()\n\n        protected Vector3 m_previousPosition; //last position \n        protected Vector3 m_origin; //start position \n        protected Vector3 m_initialVelocity; //starting velocity \n        protected MyEntityIdentifier m_ownerEntityID; //owner entity (can be closed during ammo lifetime)\n        protected int m_elapsedMiliseconds;  //milliseconds from start\n        protected int m_cascadeExplosionLevel; //to reduce the range of the cascaded explosions\n        protected MyAmmoProperties m_ammoProperties;\n        protected bool m_canByAffectedByExplosionForce = true;        \n        //public bool IsDummy { get; set; }\n\n        /// <summary>\n        /// Need per frame position updates in multiplayer\n        /// </summary>\n        public bool GuidedInMultiplayer { get; set; }\n\n        public int CascadedExplosionLevel { get { return m_cascadeExplosionLevel; } }\n\n        /// <summary>\n        /// (optional) Time to activate the ammo in milliseconeds, if applicable.\n        /// Now used only in universal launcher shells, but can be extended to elsewhere.\n        /// </summary>\n        public int? TimeToActivate { get; set; }\n\n        public MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum AmmoType { get; set; }\n\n        public MyAmmoBase()\n            :base(false)\n        {\n            Save = false;\n        }\n\n        public virtual void Init(MyModelsEnum modelEnum, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum ammoEnum, bool spherePhysics = true)\n        {\n            base.Init(null, modelEnum, null, null, null, null);\n\n            AmmoType = ammoEnum;\n            m_gameplayProperties = MyGameplayConstants.GetGameplayProperties(MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)ammoEnum, Faction);\n            m_ammoProperties = MyAmmoConstants.GetAmmoProperties(ammoEnum);\n\n            //  Collision skin\n            if (spherePhysics)\n            {\n                InitSpherePhysics(MyMaterialType.AMMO, ModelLod0, m_gameplayProperties.WeightPerUnit,\n                                  MyPhysicsConfig.DefaultAngularDamping, MyConstants.COLLISION_LAYER_DEFAULT,\n                                  RigidBodyFlag.RBF_DEFAULT);\n            }\n            else\n            {\n                InitBoxPhysics(MyMaterialType.AMMO, ModelLod0, m_gameplayProperties.WeightPerUnit,\n                               MyPhysicsConfig.DefaultAngularDamping, MyConstants.COLLISION_LAYER_DEFAULT,\n                               RigidBodyFlag.RBF_DEFAULT);\n            }\n\n            Physics.GetRBElementList()[0].Flags |= MyElementFlag.EF_MODEL_PREFER_LOD0;\n\n            NeedsUpdate = true;\n            RenderObjects[0].SkipIfTooSmall = false;\n            CastShadows = false;\n            Closed = true; //Because ammobase instance is going to pool. It is started by Start()\n\n            IsDestructible = true;\n\n            PreloadTextures();\n        }\n\n        public virtual void Start(Vector3 position, Vector3 initialVelocity, Vector3 direction, float impulseMultiplier, MyEntity owner, StringBuilder displayName = null)\n        {\n            System.Diagnostics.Debug.Assert(Closed);\n            Closed = false;\n            GuidedInMultiplayer = false;\n\n            if(this.EntityId.HasValue)\n            {\n                MyEntityIdentifier.RemoveEntity(this.EntityId.Value);\n                this.EntityId = null;\n            }\n\n            if (this.NeedsId)\n            {\n                //if(owner.EntityId.HasValue) this.EntityId = MyEntityIdentifier.AllocateId(owner.EntityId.Value.PlayerId);\n                //else this.EntityId = MyEntityIdentifier.AllocateId();\n                this.EntityId = MyEntityIdentifier.AllocateId();\n                MyEntityIdentifier.AddEntityWithId(this);\n            }\n\n            if (displayName != null && owner == MySession.PlayerShip)\n            {\n                DisplayName = displayName.ToString();\n                MyHud.AddText(this, displayName, maxDistance: 1000);\n            }\n\n            m_isExploded = false;\n            m_cascadeExplosionLevel = 0;\n            m_origin = position;\n            m_previousPosition = position;\n            m_initialVelocity = initialVelocity;\n\n            System.Diagnostics.Debug.Assert(owner.EntityId.HasValue, \"Shooting entity must have ID\");\n\n            m_ownerEntityID = owner.EntityId.Value;\n            m_elapsedMiliseconds = 0;\n\n\n\n            Matrix ammoWorld = Matrix.CreateWorld(position, direction, owner.WorldMatrix.Up);\n\n            SetWorldMatrix(ammoWorld);\n\n            this.Physics.Clear();\n            this.Physics.Enabled = true;\n            this.Physics.LinearVelocity = initialVelocity;\n\n            if (owner.Physics != null)\n                this.Physics.GroupMask = owner.Physics.GroupMask;\n            else\n                this.Physics.GroupMask = MyGroupMask.Empty;\n\n            //this.Physics.Enabled = true;\n\n            this.Physics.ApplyImpulse(direction * this.Physics.Mass * impulseMultiplier, position);\n            \n            MyEntities.Add(this);\n            NeedsUpdate = true;\n        }\n\n        /// <summary>\n        /// Updates resource.\n        /// </summary>\n        public override void UpdateBeforeSimulation()\n        {\n            base.UpdateBeforeSimulation();\n\n            m_elapsedMiliseconds += MyConstants.PHYSICS_STEP_SIZE_IN_MILLISECONDS;\n            m_previousPosition = this.WorldMatrix.Translation;\n        }\n\n        public override void UpdateAfterSimulation()\n        {\n            base.UpdateAfterSimulation();\n            if (MyMultiplayerGameplay.IsRunning && GuidedInMultiplayer && !IsDummy)\n            {\n                MyMultiplayerGameplay.Static.UpdateAmmo(this);\n            }\n        }\n\n        public override bool Draw(MyRenderObject renderObject)\n        {\n            if (!base.Draw(renderObject))\n                return false;\n\n            if (ModelLod0 != null) ModelLod0.LoadInDraw();\n            if (ModelLod1 != null) ModelLod1.LoadInDraw();\n\n            return true;\n        }\n\n        public virtual void Explode()\n        {\n            //this.Physics.Enabled = false;\n            //this.Physics.Clear();\n\n            if (!IsDummy && !m_isExploded)\n            {\n                m_isExploded = true;\n                if (MyMultiplayerGameplay.IsRunning)\n                {\n                    MyMultiplayerGameplay.Static.ExplodeAmmo(this);\n                }\n            }\n        }\n\n        public virtual void ExplodeCascade(int level)\n        {\n            m_cascadeExplosionLevel = level;\n            Explode();\n        }\n\n        public bool CanBeAffectedByExplosionForce()\n        {\n            return m_canByAffectedByExplosionForce && !m_isExploded;\n        }\n\n        public MyEntity OwnerEntity\n        {\n            get \n            { \n                return MyEntities.GetEntityByIdOrNull(m_ownerEntityID); \n            }\n        }\n\n        public override void Close()\n        {\n            TimeToActivate = null;\n            if (Physics.Enabled)\n                Physics.Enabled = false;\n            \n            MyEntities.Remove(this);\n            MyEntities.RemoveFromClosedEntities(this);\n\n            CallAndClearOnClose();\n\n            IsDummy = false;\n            Closed = true;\n            System.Diagnostics.Debug.Assert(!MyEntities.m_entitiesForUpdate.Contains(this));\n\n            //Do not call base.Close because ammobase is always preallocated\n            //base.Close();\n        }\n\n        public override void OnWorldPositionChanged(object source)\n        {\n            base.OnWorldPositionChanged(source);\n\n            if (MySession.Is25DSector)\n            {\n                // if (!(this is MySmallShipBot))\n                {\n                    if (this.Physics != null)\n                    {\n                        this.Physics.LinearVelocity = new Vector3(this.Physics.LinearVelocity.X, 0, this.Physics.LinearVelocity.Z);\n                    }\n\n                    SetPosition(new Vector3(GetPosition().X, 0, GetPosition().Z));\n                }\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Weapons/Ammo/MyAmmoConstants.cs",
    "content": "﻿using MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Entities.Weapons;\nusing MinerWarsMath;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.AppCode.Game.Utils;\nusing System;\nusing SysUtils.Utils;\nusing System.IO;\nusing System.Text;\n\nnamespace MinerWars.AppCode.Game.Gameplay\n{\n    internal class MyAmmoProperties\n    {\n        public readonly float InitialSpeed;     // In metres/second\n        public readonly float DesiredSpeed;     // In metres/second\n        public readonly float SpeedVar;         // speed *= MyMwcUtils.GetRandomFloat(1.0f - SpeedVar, 1.0f + SpeedVar)\n        public readonly float MaxTrajectory;    // How far can projectile fly before we kill it (it's like distance timeout)\n        public readonly float HealthDamage;     // Damage for living entities in hit entity\n        public readonly float ShipDamage;       // Damage for hit entity\n        public readonly float EMPDamage;        // EMP damage for hit entity\n        public readonly float ExplosionRadius;  // Radius to create voxel damage\n        public readonly float DeviateAngle;     // Deviating angle in radians\n        public readonly Vector3 TrailColor;     // Color of ammo trail, if any\n        public readonly MySoundCuesEnum ShotSound; // Sound when ammo is shot\n        public readonly bool IsExplosive;       // Ammo explodes with some probability\n        public readonly bool AllowAimCorrection;// Ammo is corrected by autoaiming\n        public readonly float DecalEmissivity;    // Decals shines in dark\n        public readonly int ProjectileGroupSize; // Group size, for example for shotgun\n\n        public readonly MyDamageType DamageType; //Type of damage caused by this ammo\n        public readonly MyAmmoType AmmoType; //Type of ammo\n\n        public readonly MyCustomHitParticlesMethod OnHitParticles;  // Delegate to method to create hit particles\n        public readonly MyCustomHitMaterialMethod OnHitMaterialSpecificParticles; // Delegate to method to create material specific particles\n\n        public MyAmmoProperties(float InitialSpeed,\n                                float DesiredSpeed,\n                                float SpeedVar,\n                                float MaxTrajectory,\n                                float HealthDamage,\n                                float ShipDamage,\n                                float EMPDamage,\n                                float ExplosionRadius,\n                                float DeviateAngle,\n                                Vector3 TrailColor,\n                                MySoundCuesEnum ShotSound,\n                                bool IsExplosive,\n                                bool AllowAimCorrection,\n                                float DecalEmissivity,\n                                int ProjectileGroupSize,\n                                MyDamageType DamageType,\n                                MyAmmoType AmmoType,\n\n                                MyCustomHitParticlesMethod OnHitParticles,\n                                MyCustomHitMaterialMethod OnHitMaterialSpecificParticles)\n        {\n            this.InitialSpeed = InitialSpeed;\n            this.DesiredSpeed = DesiredSpeed;\n            this.SpeedVar = SpeedVar;\n            this.MaxTrajectory = MaxTrajectory;\n            this.HealthDamage = HealthDamage;\n            this.ShipDamage = ShipDamage;\n            this.EMPDamage = EMPDamage;\n            this.ExplosionRadius = ExplosionRadius;\n            this.DeviateAngle = DeviateAngle;\n            this.TrailColor = TrailColor;\n            this.ShotSound = ShotSound;\n            this.IsExplosive = IsExplosive;\n            this.AllowAimCorrection = AllowAimCorrection;\n            this.DecalEmissivity = DecalEmissivity;\n            this.ProjectileGroupSize = ProjectileGroupSize;\n\n            this.DamageType = DamageType;\n            this.AmmoType = AmmoType;\n\n            this.OnHitParticles = OnHitParticles;\n            this.OnHitMaterialSpecificParticles = OnHitMaterialSpecificParticles;\n        }\n    }\n\n    enum MyAmmoPropertiesEnum\n    {\n        Shrapnel = MyAmmoConstants.AMMO_ENUM_START\n    }\n\n\n    static class MyAmmoConstants\n    {\n        public const int AMMO_ENUM_START = 100;\n        public const float ArmorEffectivityVsPiercingAmmo = 0.5f;\n\n        static readonly MyAmmoProperties[] m_ammoProperties = new MyAmmoProperties[MyMwcUtils.GetMaxValueFromEnum<MyAmmoPropertiesEnum>() + 1];\n\n        // HACK: HUGE MULTIPLAYER HACK\n        [Obsolete]\n        internal static MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum FindAmmo(MyAmmoProperties ammoProperties)\n        {\n            for (int i = 0; i < m_ammoProperties.Length; i++)\n            {\n                if (m_ammoProperties[i] == ammoProperties)\n                {\n                    return (MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum)i;\n                }\n            }\n            return MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_Basic;\n        }\n\n        public static void GenerateDebugAmmoTypeInfo()\n        {\n            string format = \"{0}\\t{1}\\t{2}\\t{3}\\t{4}\\t{5}\\t{6}\";\n            StringBuilder sb = new StringBuilder();\n            sb.AppendLine(string.Format(format, \"ID\", \"Ship damage\", \"Player damage\", \"EMP damage\", \"Desired speed\", \"Explosion radius\", \"Range\"));\n            foreach (MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum ammoType in Enum.GetValues(typeof(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum)))\n            {\n                if (MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.MyMwcObjectBuilder_InventoryItem.IsDisabled(MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)ammoType)) \n                {\n                    continue;\n                }\n                var ammoProp = GetAmmoProperties(ammoType);\n                sb.AppendLine(string.Format(format, (int)ammoType, ammoProp.ShipDamage, ammoProp.HealthDamage, ammoProp.EMPDamage, ammoProp.DesiredSpeed > 0f ? ammoProp.DesiredSpeed : ammoProp.InitialSpeed, ammoProp.ExplosionRadius, ammoProp.MaxTrajectory));\n            }\n            string directory = @\"C:\\Temp\";\n            string fileName = directory + @\"\\AmmoInfo.txt\";\n\n            if (File.Exists(fileName))\n            {\n                File.Delete(fileName);\n            }\n            if (!Directory.Exists(directory))\n            {\n                Directory.CreateDirectory(directory);\n            }\n            using (var sw = File.CreateText(fileName))\n            {\n                sw.Write(sb.ToString());\n                sw.Close();\n            }\n        }\n\n        internal static void LoadData()\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyAmmoConstants.LoadData\");\n\n            System.Diagnostics.Debug.Assert(MyMwcUtils.GetMaxValueFromEnum<MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum>() < AMMO_ENUM_START);\n\n            m_ammoProperties[(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_Basic] = \n                new MyAmmoProperties(\n                    InitialSpeed: 0,\n                    DesiredSpeed: 2000,\n                    SpeedVar: 0,\n                    MaxTrajectory: 2800,\n                    HealthDamage: 0.0f,\n                    //ShipDamage: 3.0f, // default 6\n                    ShipDamage: 3.9f, // default 6\n                    EMPDamage: 0.0f,\n                    ExplosionRadius: 0,\n                    DeviateAngle: MathHelper.ToRadians(0.17f),\n                    TrailColor: Vector3.One,\n                    ShotSound: MySoundCuesEnum.WepAutocanonFire3d,\n                    IsExplosive: false,\n                    AllowAimCorrection: true,\n                    DecalEmissivity: 0.5f,\n                    ProjectileGroupSize: 1,\n\n                    DamageType: MyDamageType.Bullet,\n                    AmmoType: MyAmmoType.Basic,\n\n                    OnHitParticles: MyParticleEffects.DelegateForCreateAutocannonBasicHitParticles,\n                    OnHitMaterialSpecificParticles: MyParticleEffects.DelegateForCreateAutocannonHitMaterialParticles\n                   );\n            \n            m_ammoProperties[(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_High_Speed] =\n               new MyAmmoProperties(\n                   InitialSpeed: 0,\n                   DesiredSpeed: 3000,\n                   SpeedVar: 0,\n                   MaxTrajectory: 3000,\n                   HealthDamage: 0.0f,\n                   //ShipDamage: 4.5f,\n                   ShipDamage: 5.85f,\n                   EMPDamage: 0.0f,\n                   ExplosionRadius: 0,\n                   DeviateAngle: MathHelper.ToRadians(0.17f),\n                   TrailColor: MyProjectilesConstants.HIGH_SPEED_PROJECTILE_TRAIL_COLOR,\n                   ShotSound: MySoundCuesEnum.WepAutocanonFire3d,\n                   IsExplosive: false,\n                   AllowAimCorrection: true,\n                   DecalEmissivity: 1.0f,\n                   ProjectileGroupSize: 1,\n\n                   DamageType: MyDamageType.Bullet,\n                   AmmoType: MyAmmoType.HighSpeed,\n\n                   OnHitParticles: MyParticleEffects.DelegateForCreateAutocannonHighSpeedHitParticles,\n                   OnHitMaterialSpecificParticles: MyParticleEffects.DelegateForCreateAutocannonHitMaterialParticles\n                  );\n\n            m_ammoProperties[(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_Armor_Piercing_Incendiary] =\n               new MyAmmoProperties(\n                   InitialSpeed: 0,\n                   DesiredSpeed: 2000,\n                   SpeedVar: 0,\n                   MaxTrajectory: 2500,\n                   HealthDamage: 0.0f,\n                   //ShipDamage: 6f,\n                   ShipDamage: 7.8f,\n                   EMPDamage: 0.0f,\n                   ExplosionRadius: 0,\n                   DeviateAngle: MathHelper.ToRadians(0.17f),\n                   TrailColor: MyProjectilesConstants.PIERCING_PROJECTILE_TRAIL_COLOR,\n                   ShotSound: MySoundCuesEnum.WepAutocanonFire3d,\n                   IsExplosive: false,\n                   AllowAimCorrection: true,\n                   DecalEmissivity: 1.0f,\n                   ProjectileGroupSize: 1,\n\n                   DamageType: MyDamageType.Bullet,\n                   AmmoType: MyAmmoType.Piercing,\n\n                   OnHitParticles: MyParticleEffects.DelegateForCreateAutocannonPiercingHitParticles,\n                   OnHitMaterialSpecificParticles: MyParticleEffects.DelegateForCreateAutocannonHitMaterialParticles\n                  );\n\n            m_ammoProperties[(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_BioChem] =\n               new MyAmmoProperties(\n                   InitialSpeed: 0,\n                   DesiredSpeed: 1860,\n                   SpeedVar: 0,\n                   MaxTrajectory: 1800,\n                   HealthDamage: 10f,\n                   ShipDamage: 2f,\n                   EMPDamage: 0.0f,\n                   ExplosionRadius: 0,\n                   DeviateAngle: MathHelper.ToRadians(0.17f),\n                   TrailColor: MyProjectilesConstants.BIOCHEM_PROJECTILE_TRAIL_COLOR,\n                   ShotSound: MySoundCuesEnum.WepAutocanonFire3d,\n                   IsExplosive: false,\n                   AllowAimCorrection: true,\n                   DecalEmissivity: 0.5f,\n                   ProjectileGroupSize: 1,\n\n                   DamageType: MyDamageType.Bullet,\n                   AmmoType: MyAmmoType.Biochem,\n\n                   OnHitParticles: MyParticleEffects.DelegateForCreateAutocannonBiochemHitParticles,\n                   OnHitMaterialSpecificParticles: MyParticleEffects.DelegateForCreateAutocannonHitMaterialParticles\n                  );\n\n            m_ammoProperties[(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_SAPHEI] =\n               new MyAmmoProperties(\n                   InitialSpeed: 0,\n                   DesiredSpeed: 2000,\n                   SpeedVar: 0,\n                   MaxTrajectory: 2200,\n                   HealthDamage: 0.0f,\n                   //ShipDamage: 7.5f,\n                   ShipDamage: 9.75f,\n                   EMPDamage: 0.0f,\n                   ExplosionRadius: 0,\n                   DeviateAngle: MathHelper.ToRadians(0.17f),\n                   TrailColor: MyProjectilesConstants.EXPLOSIVE_PROJECTILE_TRAIL_COLOR,\n                   ShotSound: MySoundCuesEnum.WepAutocanonFire3d,\n                   IsExplosive: false,\n                   AllowAimCorrection: true,\n                   DecalEmissivity: 0.5f,\n                   ProjectileGroupSize: 1,\n\n                   DamageType: MyDamageType.Bullet,\n                   AmmoType: MyAmmoType.Explosive,\n\n                   OnHitParticles: MyParticleEffects.DelegateForCreateAutocannonExplosiveHitParticles,\n                   OnHitMaterialSpecificParticles: MyParticleEffects.DelegateForCreateAutocannonHitMaterialParticles\n                  );\n\n            m_ammoProperties[(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Machine_Gun_Basic] =\n               new MyAmmoProperties(\n                   InitialSpeed: 0,\n                   DesiredSpeed: 1700,\n                   SpeedVar: 0,\n                   MaxTrajectory: 2300,\n                   HealthDamage: 0.0f,\n                   ShipDamage: 6f,\n                   EMPDamage: 0.0f,\n                   ExplosionRadius: 0,\n                   DeviateAngle: MathHelper.ToRadians(0.17f),\n                   TrailColor: Vector3.One,\n                   ShotSound: MySoundCuesEnum.WepMachineGunNormFire3d,\n                   IsExplosive: false,\n                   AllowAimCorrection: true,\n                   DecalEmissivity: 0.5f,\n                   ProjectileGroupSize: 1,\n\n                   DamageType: MyDamageType.Bullet,\n                   AmmoType: MyAmmoType.Basic,\n\n                   OnHitParticles: MyParticleEffects.DelegateForCreateBasicHitParticles,\n                   OnHitMaterialSpecificParticles: MyParticleEffects.DelegateForCreateHitMaterialParticles\n                  );\n\n            m_ammoProperties[(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Machine_Gun_High_Speed] =\n               new MyAmmoProperties(\n                   InitialSpeed: 0,\n                   DesiredSpeed: 2200,\n                   SpeedVar: 0,\n                   MaxTrajectory: 2500,\n                   HealthDamage: 0.0f,\n                   ShipDamage: 9f,\n                   EMPDamage: 0.0f,\n                   ExplosionRadius: 0,\n                   DeviateAngle: MathHelper.ToRadians(0.17f),\n                   TrailColor: MyProjectilesConstants.HIGH_SPEED_PROJECTILE_TRAIL_COLOR,\n                   ShotSound: MySoundCuesEnum.WepMachineGunHighFire3d,\n                   IsExplosive: false,\n                   AllowAimCorrection: true,\n                   DecalEmissivity: 1.0f,\n                   ProjectileGroupSize: 1,\n\n                   DamageType: MyDamageType.Bullet,\n                   AmmoType: MyAmmoType.HighSpeed,\n\n                   OnHitParticles: MyParticleEffects.DelegateForCreateBasicHitParticles,\n                   OnHitMaterialSpecificParticles: MyParticleEffects.DelegateForCreateHitMaterialParticles\n                  );\n\n            m_ammoProperties[(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Machine_Gun_Armor_Piercing_Incendiary] =\n               new MyAmmoProperties(\n                   InitialSpeed: 0,\n                   DesiredSpeed: 1900,\n                   SpeedVar: 0,\n                   MaxTrajectory: 2100,\n                   HealthDamage: 0.0f,\n                   ShipDamage: 12f,\n                   EMPDamage: 0.0f,\n                   ExplosionRadius: 0,\n                   DeviateAngle: MathHelper.ToRadians(0.17f),\n                   TrailColor: MyProjectilesConstants.PIERCING_PROJECTILE_TRAIL_COLOR,\n                   ShotSound: MySoundCuesEnum.WepMachineGunNormFire3d,\n                   IsExplosive: false,\n                   AllowAimCorrection: true,\n                   DecalEmissivity: 1.0f,\n                   ProjectileGroupSize: 1,\n\n                   DamageType: MyDamageType.Bullet,\n                   AmmoType: MyAmmoType.Piercing,\n\n                   OnHitParticles: MyParticleEffects.DelegateForCreatePiercingHitParticles,\n                   OnHitMaterialSpecificParticles: MyParticleEffects.DelegateForCreateHitMaterialParticles\n                  );\n\n            m_ammoProperties[(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Machine_Gun_BioChem] =\n               new MyAmmoProperties(\n                   InitialSpeed: 0,\n                   DesiredSpeed: 900,\n                   SpeedVar: 0,\n                   MaxTrajectory: 1900,\n                   HealthDamage: 30f,\n                   ShipDamage: 3f,\n                   EMPDamage: 0.0f,\n                   ExplosionRadius: 0,\n                   DeviateAngle: MathHelper.ToRadians(0.17f),\n                   TrailColor: MyProjectilesConstants.BIOCHEM_PROJECTILE_TRAIL_COLOR,\n                   ShotSound: MySoundCuesEnum.WepMachineGunNormFire3d,\n                   IsExplosive: false,\n                   AllowAimCorrection: true,\n                   DecalEmissivity: 0.5f,\n                   ProjectileGroupSize: 1,\n\n                   DamageType: MyDamageType.Bullet,\n                   AmmoType: MyAmmoType.Biochem,\n\n                   OnHitParticles: MyParticleEffects.DelegateForCreateBiochemHitParticles,\n                   OnHitMaterialSpecificParticles: MyParticleEffects.DelegateForCreateHitMaterialParticles\n                  );\n\n            m_ammoProperties[(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Machine_Gun_SAPHEI] =\n               new MyAmmoProperties(\n                   InitialSpeed: 0,\n                   DesiredSpeed: 1900,\n                   SpeedVar: 0,\n                   MaxTrajectory: 1600,\n                   HealthDamage: 0.0f,\n                   ShipDamage: 15f,\n                   EMPDamage: 0.0f,\n                   ExplosionRadius: 0,\n                   DeviateAngle: MathHelper.ToRadians(0.17f),\n                   TrailColor: MyProjectilesConstants.EXPLOSIVE_PROJECTILE_TRAIL_COLOR,\n                   ShotSound: MySoundCuesEnum.WepMachineGunNormFire3d,\n                   IsExplosive: true,\n                   AllowAimCorrection: true,\n                   DecalEmissivity: 0.5f,\n                   ProjectileGroupSize: 1,\n\n                   DamageType: MyDamageType.Bullet,\n                   AmmoType: MyAmmoType.Explosive,\n\n                   OnHitParticles: MyParticleEffects.DelegateForCreateExplosiveHitParticles,\n                   OnHitMaterialSpecificParticles: MyParticleEffects.DelegateForCreateHitMaterialParticles\n                  );\n\n            m_ammoProperties[(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Automatic_Rifle_With_Silencer_High_Speed] =\n                new MyAmmoProperties(\n                    InitialSpeed: 0,\n                    DesiredSpeed: 1000,\n                    SpeedVar: 0,\n                    MaxTrajectory: 2000,\n                    HealthDamage: 0.0f,\n                    ShipDamage: 100.0f,\n                    EMPDamage: 0.0f,\n                    ExplosionRadius: 0,\n                    DeviateAngle: MathHelper.ToRadians(0.17f),\n                    TrailColor: MyProjectilesConstants.HIGH_SPEED_PROJECTILE_TRAIL_COLOR,\n                    ShotSound: MySoundCuesEnum.WepArsHighShot3d,\n                    IsExplosive: false,\n                    AllowAimCorrection: true,\n                    DecalEmissivity: 1.0f,\n                    ProjectileGroupSize: 1,\n\n                    DamageType: MyDamageType.Bullet,\n                    AmmoType: MyAmmoType.HighSpeed,\n\n                    OnHitParticles: MyParticleEffects.DelegateForCreateBasicHitParticles,\n                    OnHitMaterialSpecificParticles: MyParticleEffects.DelegateForCreateHitMaterialParticles\n                   );\n\n            m_ammoProperties[(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Automatic_Rifle_With_Silencer_BioChem] =\n                new MyAmmoProperties(\n                    InitialSpeed: 0,\n                    DesiredSpeed: 900,\n                    SpeedVar: 0,\n                    MaxTrajectory: 1500,\n                    HealthDamage: 1000.0f,\n                    ShipDamage: 50f,\n                    EMPDamage: 0.0f,\n                    ExplosionRadius: 0,\n                    DeviateAngle: MathHelper.ToRadians(0.17f),\n                    TrailColor: MyProjectilesConstants.BIOCHEM_PROJECTILE_TRAIL_COLOR,\n                    ShotSound: MySoundCuesEnum.WepArsNormShot3d,\n                    IsExplosive: false,\n                    AllowAimCorrection: true,\n                    DecalEmissivity: 0.5f,\n                    ProjectileGroupSize: 1,\n\n                    DamageType: MyDamageType.Bullet,\n                    AmmoType: MyAmmoType.Biochem,\n\n                    OnHitParticles: MyParticleEffects.DelegateForCreateBiochemHitParticles,\n                    OnHitMaterialSpecificParticles: MyParticleEffects.DelegateForCreateHitMaterialParticles\n                   );\n\n            m_ammoProperties[(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Automatic_Rifle_With_Silencer_SAPHEI] =\n                new MyAmmoProperties(\n                    InitialSpeed: 0,\n                    DesiredSpeed: 900,\n                    SpeedVar: 0,\n                    MaxTrajectory: 1800,\n                    HealthDamage: 0.0f,\n                    ShipDamage: 200f,\n                    EMPDamage: 0.0f,\n                    ExplosionRadius: 0,\n                    DeviateAngle: MathHelper.ToRadians(0.17f),\n                    TrailColor: MyProjectilesConstants.EXPLOSIVE_PROJECTILE_TRAIL_COLOR,\n                    ShotSound: MySoundCuesEnum.WepArsNormShot3d,\n                    IsExplosive: true,\n                    AllowAimCorrection: true,\n                    DecalEmissivity: 0.5f,\n                    ProjectileGroupSize: 1,\n\n                    DamageType: MyDamageType.Bullet,\n                    AmmoType: MyAmmoType.Explosive,\n\n                    OnHitParticles: MyParticleEffects.DelegateForCreateExplosiveHitParticles,\n                    OnHitMaterialSpecificParticles: MyParticleEffects.DelegateForCreateHitMaterialParticles\n                   );\n\n            m_ammoProperties[(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Shotgun_Basic] =\n                new MyAmmoProperties(\n                    InitialSpeed: 0,\n                    DesiredSpeed: 600,\n                    SpeedVar: 0.2f,\n                    MaxTrajectory: 300,\n                    HealthDamage: 0.0f,\n                    ShipDamage: 5f,\n                    EMPDamage: 0.0f,\n                    ExplosionRadius: 0,\n                    DeviateAngle: MathHelper.ToRadians(5f),\n                    TrailColor: Vector3.One,\n                    ShotSound: MySoundCuesEnum.WepShotgunNormShot3d,\n                    IsExplosive: false,\n                    AllowAimCorrection: false,\n                    DecalEmissivity: 0.5f,\n                    ProjectileGroupSize: 20,\n\n                    DamageType: MyDamageType.Bullet,\n                    AmmoType: MyAmmoType.Basic,\n\n                    OnHitParticles: MyParticleEffects.DelegateForCreateBasicHitParticles,\n                    OnHitMaterialSpecificParticles: MyParticleEffects.DelegateForCreateHitMaterialParticles\n                   );\n\n            m_ammoProperties[(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Shotgun_High_Speed] =\n                new MyAmmoProperties(\n                    InitialSpeed: 0,\n                    DesiredSpeed: 1200,\n                    SpeedVar: 0.2f,\n                    MaxTrajectory: 400,\n                    HealthDamage: 0.0f,\n                    ShipDamage: 8f,\n                    EMPDamage: 0.0f,\n                    ExplosionRadius: 0,\n                    DeviateAngle: MathHelper.ToRadians(5f),\n                    TrailColor: Vector3.One,\n                    ShotSound: MySoundCuesEnum.WepShotgunHighShot3d,\n                    IsExplosive: false,\n                    AllowAimCorrection: false,\n                    DecalEmissivity: 1.0f,\n                    ProjectileGroupSize: 18,\n\n                    DamageType: MyDamageType.Bullet,\n                    AmmoType: MyAmmoType.HighSpeed,\n\n                    OnHitParticles: MyParticleEffects.DelegateForCreateBasicHitParticles,\n                    OnHitMaterialSpecificParticles: MyParticleEffects.DelegateForCreateHitMaterialParticles\n                   );\n\n            m_ammoProperties[(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Shotgun_Armor_Piercing] =\n                new MyAmmoProperties(\n                    InitialSpeed: 0,\n                    DesiredSpeed: 800,\n                    SpeedVar: 0.2f,\n                    MaxTrajectory: 300,\n                    HealthDamage: 0.0f,\n                    ShipDamage: 10f,\n                    EMPDamage: 0.0f,\n                    ExplosionRadius: 0,\n                    DeviateAngle: MathHelper.ToRadians(5f),\n                    TrailColor: MyProjectilesConstants.PIERCING_PROJECTILE_TRAIL_COLOR,\n                    ShotSound: MySoundCuesEnum.WepShotgunNormShot3d,\n                    IsExplosive: false,\n                    AllowAimCorrection: false,\n                    DecalEmissivity: 1.0f,\n                    ProjectileGroupSize: 18,\n\n                    DamageType: MyDamageType.Bullet,\n                    AmmoType: MyAmmoType.Piercing,\n\n                    OnHitParticles: MyParticleEffects.DelegateForCreatePiercingHitParticles,\n                    OnHitMaterialSpecificParticles: MyParticleEffects.DelegateForCreateHitMaterialParticles\n                   );\n\n            m_ammoProperties[(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Shotgun_Explosive] =\n                new MyAmmoProperties(\n                    InitialSpeed: 0,\n                    DesiredSpeed: 700,\n                    SpeedVar: 0.2f,\n                    MaxTrajectory: 300,\n                    HealthDamage: 0.0f,\n                    ShipDamage: 10f,\n                    EMPDamage: 0.0f,\n                    ExplosionRadius: 0,\n                    DeviateAngle: MathHelper.ToRadians(7f),\n                    TrailColor: Vector3.One,\n                    ShotSound: MySoundCuesEnum.WepShotgunNormShot3d,\n                    IsExplosive: false,\n                    AllowAimCorrection: false,\n                    DecalEmissivity: 0.5f,\n                    ProjectileGroupSize: 16,\n\n                    DamageType: MyDamageType.Bullet,\n                    AmmoType: MyAmmoType.Explosive,\n\n                    OnHitParticles: MyParticleEffects.DelegateForCreateExplosiveHitParticles,\n                    OnHitMaterialSpecificParticles: MyParticleEffects.DelegateForCreateHitMaterialParticles\n                   );\n\n            m_ammoProperties[(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Sniper_High_Speed] =\n                new MyAmmoProperties(\n                    InitialSpeed: 0,\n                    DesiredSpeed: 15000,\n                    SpeedVar: 0.0f,\n                    MaxTrajectory: 12000,\n                    HealthDamage: 0.0f,\n                    ShipDamage: 60.0f,\n                    EMPDamage: 0.0f,\n                    ExplosionRadius: 0,\n                    DeviateAngle: MathHelper.ToRadians(0.0f),\n                    TrailColor: MyProjectilesConstants.HIGH_SPEED_PROJECTILE_TRAIL_COLOR,\n                    ShotSound: MySoundCuesEnum.WepSniperHighFire3d,\n                    IsExplosive: false,\n                    AllowAimCorrection: true,\n                    DecalEmissivity: 1.0f,\n                    ProjectileGroupSize: 14,\n\n                    DamageType: MyDamageType.Bullet,\n                    AmmoType: MyAmmoType.HighSpeed,\n\n                    OnHitParticles: MyParticleEffects.DelegateForCreateBasicHitParticles,\n                    OnHitMaterialSpecificParticles: MyParticleEffects.DelegateForCreateHitMaterialParticles\n                   );\n\n            m_ammoProperties[(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Sniper_BioChem] =\n                new MyAmmoProperties(\n                    InitialSpeed: 0,\n                    DesiredSpeed: 9000,\n                    SpeedVar: 0.0f,\n                    MaxTrajectory: 9600,\n                    HealthDamage: 50.0f,\n                    ShipDamage: 10.0f,\n                    EMPDamage: 0.0f,\n                    ExplosionRadius: 0,\n                    DeviateAngle: MathHelper.ToRadians(0.01f),\n                    TrailColor: MyProjectilesConstants.BIOCHEM_PROJECTILE_TRAIL_COLOR,\n                    ShotSound: MySoundCuesEnum.WepSniperNormFire3d,\n                    IsExplosive: false,\n                    AllowAimCorrection: true,\n                    DecalEmissivity: 0.5f,\n                    ProjectileGroupSize: 1,\n\n                    DamageType: MyDamageType.Bullet,\n                    AmmoType: MyAmmoType.Biochem,\n\n                    OnHitParticles: MyParticleEffects.DelegateForCreateBiochemHitParticles,\n                    OnHitMaterialSpecificParticles: MyParticleEffects.DelegateForCreateHitMaterialParticles\n                   );\n\n            m_ammoProperties[(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Sniper_SAPHEI] =\n                new MyAmmoProperties(\n                    InitialSpeed: 0,\n                    DesiredSpeed: 8000,\n                    SpeedVar: 0.0f,\n                    MaxTrajectory: 11400,\n                    HealthDamage: 0.0f,\n                    ShipDamage: 105.0f,\n                    EMPDamage: 0.0f,\n                    ExplosionRadius: 0,\n                    DeviateAngle: MathHelper.ToRadians(0.01f),\n                    TrailColor: MyProjectilesConstants.EXPLOSIVE_PROJECTILE_TRAIL_COLOR,\n                    ShotSound: MySoundCuesEnum.WepSniperNormFire3d,\n                    IsExplosive: true,\n                    AllowAimCorrection: true,\n                    DecalEmissivity: 0.5f,\n                    ProjectileGroupSize: 1,\n\n                    DamageType: MyDamageType.Bullet,\n                    AmmoType: MyAmmoType.Explosive,\n\n                    OnHitParticles: MyParticleEffects.DelegateForCreateExplosiveHitParticles,\n                    OnHitMaterialSpecificParticles: MyParticleEffects.DelegateForCreateHitMaterialParticles\n                   );\n\n            m_ammoProperties[(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Missile_Basic] =\n                new MyAmmoProperties(\n                    InitialSpeed: 1.0f,\n                    DesiredSpeed: 700.0f,\n                    SpeedVar: 0.0f,\n                    MaxTrajectory: 10000,\n                    HealthDamage: 0.0f,\n                    ShipDamage: 70.0f,\n                    EMPDamage: 0.0f,\n                    ExplosionRadius: 30.0f,\n                    DeviateAngle: MathHelper.ToRadians(0.01f),\n                    TrailColor: Vector3.One,\n                    ShotSound: MySoundCuesEnum.WepMissileFly,\n                    IsExplosive: true,\n                    AllowAimCorrection: true,\n                    DecalEmissivity: 0.0f,\n                    ProjectileGroupSize: 1,\n\n                    DamageType: MyDamageType.Rocket,\n                    AmmoType: MyAmmoType.Basic,\n\n                    OnHitParticles: MyParticleEffects.DelegateForCreateExplosiveHitParticles,\n                    OnHitMaterialSpecificParticles: MyParticleEffects.DelegateForCreateHitMaterialParticles\n                   );\n\n            m_ammoProperties[(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Guided_Missile_Engine_Detection] =\n                new MyAmmoProperties(\n                    InitialSpeed: 1.0f,\n                    DesiredSpeed: 400.0f,\n                    SpeedVar: 0.0f,\n                    MaxTrajectory: 15000,\n                    HealthDamage: 0.0f,\n                    ShipDamage: 20.0f,\n                    EMPDamage: 0.0f,\n                    ExplosionRadius: 30,\n                    DeviateAngle: MathHelper.ToRadians(0.01f),\n                    TrailColor: Vector3.One,\n                    ShotSound: MySoundCuesEnum.WepMissileFly,\n                    IsExplosive: true,\n                    AllowAimCorrection: false,\n                    DecalEmissivity: 0.0f,\n                    ProjectileGroupSize: 1,\n\n                    DamageType: MyDamageType.Rocket,\n                    AmmoType: MyAmmoType.Basic,\n\n                    OnHitParticles: MyParticleEffects.DelegateForCreateExplosiveHitParticles,\n                    OnHitMaterialSpecificParticles: MyParticleEffects.DelegateForCreateHitMaterialParticles\n                   );\n\n                m_ammoProperties[(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Guided_Missile_Visual_Detection] =\n                new MyAmmoProperties(\n                    InitialSpeed: 1.0f,\n                    DesiredSpeed: 400.0f,\n                    SpeedVar: 0.0f,\n                    MaxTrajectory: 15000,\n                    HealthDamage: 0.0f,\n                    ShipDamage: 20.0f,\n                    EMPDamage: 0.0f,\n                    ExplosionRadius: 30,\n                    DeviateAngle: MathHelper.ToRadians(0.01f),\n                    TrailColor: Vector3.One,\n                    ShotSound: MySoundCuesEnum.WepMissileFly,\n                    IsExplosive: true,\n                    AllowAimCorrection: false,\n                    DecalEmissivity: 0.0f,\n                    ProjectileGroupSize: 1,\n\n                    DamageType: MyDamageType.Rocket,\n                    AmmoType: MyAmmoType.Basic,\n\n                    OnHitParticles: MyParticleEffects.DelegateForCreateExplosiveHitParticles,\n                    OnHitMaterialSpecificParticles: MyParticleEffects.DelegateForCreateHitMaterialParticles\n                   );\n\n\n               m_ammoProperties[(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Guided_Missile_Radar_Detection] =\n                new MyAmmoProperties(\n                    InitialSpeed: 1.0f,\n                    DesiredSpeed: 400.0f,\n                    SpeedVar: 0.0f,\n                    MaxTrajectory: 15000,\n                    HealthDamage: 0.0f,\n                    ShipDamage: 20.0f,\n                    EMPDamage: 0.0f,\n                    ExplosionRadius: 30,\n                    DeviateAngle: MathHelper.ToRadians(0.01f),\n                    TrailColor: Vector3.One,\n                    ShotSound: MySoundCuesEnum.WepMissileFly,\n                    IsExplosive: true,\n                    AllowAimCorrection: false,\n                    DecalEmissivity: 0.0f,\n                    ProjectileGroupSize: 1,\n\n                    DamageType: MyDamageType.Rocket,\n                    AmmoType: MyAmmoType.Basic,\n\n                    OnHitParticles: MyParticleEffects.DelegateForCreateExplosiveHitParticles,\n                    OnHitMaterialSpecificParticles: MyParticleEffects.DelegateForCreateHitMaterialParticles\n                   );\n\n            m_ammoProperties[(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_Basic] =\n                new MyAmmoProperties(\n                    InitialSpeed: 0.0f,\n                    DesiredSpeed: 1000.0f,\n                    SpeedVar: 0.0f,\n                    MaxTrajectory: 14000,\n                    HealthDamage: 0.0f,\n                    ShipDamage: 30.0f,\n                    EMPDamage: 0.0f,\n                    ExplosionRadius: 22.0f,\n                    DeviateAngle: MathHelper.ToRadians(0.01f),\n                    TrailColor: Vector3.One,\n                    ShotSound: MySoundCuesEnum.WepMissileFly,\n                    IsExplosive: true,\n                    AllowAimCorrection: true,\n                    DecalEmissivity: 0.0f,\n                    ProjectileGroupSize: 1,\n\n                    DamageType: MyDamageType.Rocket,\n                    AmmoType: MyAmmoType.Basic,\n\n                    OnHitParticles: MyParticleEffects.DelegateForCreateExplosiveHitParticles,\n                    OnHitMaterialSpecificParticles: MyParticleEffects.DelegateForCreateHitMaterialParticles\n                   );\n\n            m_ammoProperties[(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_High_Speed] =\n                new MyAmmoProperties(\n                    InitialSpeed: 0.0f,\n                    DesiredSpeed: 1500.0f,\n                    SpeedVar: 0.0f,\n                    MaxTrajectory: 15000,\n                    HealthDamage: 0.0f,\n                    ShipDamage: 40.0f,\n                    EMPDamage: 0.0f,\n                    ExplosionRadius: 25.0f,\n                    DeviateAngle: MathHelper.ToRadians(0.01f),\n                    TrailColor: MyProjectilesConstants.HIGH_SPEED_PROJECTILE_TRAIL_COLOR,\n                    ShotSound: MySoundCuesEnum.WepMissileFly,\n                    IsExplosive: true,\n                    AllowAimCorrection: true,\n                    DecalEmissivity: 0.0f,\n                    ProjectileGroupSize: 1,\n\n                    DamageType: MyDamageType.Rocket,\n                    AmmoType: MyAmmoType.HighSpeed,\n\n                    OnHitParticles: MyParticleEffects.DelegateForCreateExplosiveHitParticles,\n                    OnHitMaterialSpecificParticles: MyParticleEffects.DelegateForCreateHitMaterialParticles\n                   );\n\n            m_ammoProperties[(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_Armor_Piercing_Incendiary] =\n                new MyAmmoProperties(\n                    InitialSpeed: 0.0f,\n                    DesiredSpeed: 1100.0f,\n                    SpeedVar: 0.0f,\n                    MaxTrajectory: 15000,\n                    HealthDamage: 0.0f,\n                    ShipDamage: 50.0f,\n                    EMPDamage: 0.0f,\n                    ExplosionRadius: 25.0f,\n                    DeviateAngle: MathHelper.ToRadians(0.01f),\n                    TrailColor: MyProjectilesConstants.PIERCING_PROJECTILE_TRAIL_COLOR,\n                    ShotSound: MySoundCuesEnum.WepMissileFly,\n                    IsExplosive: true,\n                    AllowAimCorrection: true,\n                    DecalEmissivity: 0.0f,\n                    ProjectileGroupSize: 1,\n\n                    DamageType: MyDamageType.Rocket,\n                    AmmoType: MyAmmoType.Piercing,\n\n                    OnHitParticles: MyParticleEffects.DelegateForCreateExplosiveHitParticles,\n                    OnHitMaterialSpecificParticles: MyParticleEffects.DelegateForCreateHitMaterialParticles\n                   );\n\n            m_ammoProperties[(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_SAPHEI] =\n                new MyAmmoProperties(\n                    InitialSpeed: 0.0f,\n                    DesiredSpeed: 1100.0f,\n                    SpeedVar: 0.0f,\n                    MaxTrajectory: 15000,\n                    HealthDamage: 0.0f,\n                    ShipDamage: 80.0f,\n                    EMPDamage: 0.0f,\n                    ExplosionRadius: 30.0f,\n                    DeviateAngle: MathHelper.ToRadians(0.01f),\n                    TrailColor: MyProjectilesConstants.EXPLOSIVE_PROJECTILE_TRAIL_COLOR,\n                    ShotSound: MySoundCuesEnum.WepMissileFly,\n                    IsExplosive: true,\n                    AllowAimCorrection: true,\n                    DecalEmissivity: 0.0f,\n                    ProjectileGroupSize: 1,\n\n                    DamageType: MyDamageType.Rocket,\n                    AmmoType: MyAmmoType.Explosive,\n\n                    OnHitParticles: MyParticleEffects.DelegateForCreateExplosiveHitParticles,\n                    OnHitMaterialSpecificParticles: MyParticleEffects.DelegateForCreateHitMaterialParticles\n                   );\n\n            m_ammoProperties[(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_Proximity_Explosive] =\n                new MyAmmoProperties(\n                    InitialSpeed: 0.0f,\n                    DesiredSpeed: 950.0f,\n                    SpeedVar: 0.0f,\n                    MaxTrajectory: 12000,\n                    HealthDamage: 0.0f,\n                    ShipDamage: 50.0f,\n                    EMPDamage: 0.0f,\n                    ExplosionRadius: 32.0f,\n                    DeviateAngle: MathHelper.ToRadians(0.01f),\n                    TrailColor: MyProjectilesConstants.EXPLOSIVE_PROJECTILE_TRAIL_COLOR,\n                    ShotSound: MySoundCuesEnum.WepMissileFly,\n                    IsExplosive: true,\n                    AllowAimCorrection: true,\n                    DecalEmissivity: 0.0f,\n                    ProjectileGroupSize: 1,\n\n                    DamageType: MyDamageType.Rocket,\n                    AmmoType: MyAmmoType.Explosive,\n\n                    OnHitParticles: MyParticleEffects.DelegateForCreateExplosiveHitParticles,\n                    OnHitMaterialSpecificParticles: MyParticleEffects.DelegateForCreateHitMaterialParticles\n                   );\n\n            m_ammoProperties[(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_Tunnel_Buster] =\n                new MyAmmoProperties(\n                    InitialSpeed: 0.0f,\n                    DesiredSpeed: 300.0f,\n                    SpeedVar: 0.0f,\n                    MaxTrajectory: 10000,\n                    HealthDamage: 0.0f,\n                    ShipDamage: 60.0f,\n                    EMPDamage: 0.0f,\n                    ExplosionRadius: 60.0f,\n                    DeviateAngle: MathHelper.ToRadians(0.01f),\n                    TrailColor: Vector3.One,\n                    ShotSound: MySoundCuesEnum.WepMissileFly,\n                    IsExplosive: true,\n                    AllowAimCorrection: true,\n                    DecalEmissivity: 0.0f,\n                    ProjectileGroupSize: 1,\n\n                    DamageType: MyDamageType.Rocket,\n                    AmmoType: MyAmmoType.Explosive,\n\n                    OnHitParticles: MyParticleEffects.DelegateForCreateExplosiveHitParticles,\n                    OnHitMaterialSpecificParticles: MyParticleEffects.DelegateForCreateHitMaterialParticles\n                   );\n\n            m_ammoProperties[(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Sphere_Explosive] =\n                new MyAmmoProperties(\n                    InitialSpeed: 5.0f,\n                    DesiredSpeed: 0.0f,\n                    SpeedVar: 0.0f,\n                    MaxTrajectory: 10000,\n                    HealthDamage: 50.0f,\n                    ShipDamage: 120.0f,\n                    EMPDamage: 0.0f,\n                    ExplosionRadius: 30.0f,\n                    DeviateAngle: MathHelper.ToRadians(0.01f),\n                    TrailColor: Vector3.One,\n                    ShotSound: MySoundCuesEnum.WepMissileFly,\n                    IsExplosive: true,\n                    AllowAimCorrection: false,\n                    DecalEmissivity: 0.0f,\n                    ProjectileGroupSize: 1,\n\n                    DamageType: MyDamageType.Mine,\n                    AmmoType: MyAmmoType.Explosive,\n\n                    OnHitParticles: MyParticleEffects.DelegateForCreateExplosiveHitParticles,\n                    OnHitMaterialSpecificParticles: MyParticleEffects.DelegateForCreateHitMaterialParticles\n                   );\n\n            m_ammoProperties[(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Directional_Explosive] =\n                new MyAmmoProperties(\n                    InitialSpeed: 5.0f,\n                    DesiredSpeed: 0.0f,\n                    SpeedVar: 0.0f,\n                    MaxTrajectory: 10000,\n                    HealthDamage: 60.0f,\n                    ShipDamage: 90.0f,\n                    EMPDamage: 0.0f,\n                    ExplosionRadius: 35.0f,\n                    DeviateAngle: MathHelper.ToRadians(0.01f),\n                    TrailColor: Vector3.One,\n                    ShotSound: MySoundCuesEnum.WepMissileFly,\n                    IsExplosive: true,\n                    AllowAimCorrection: false,\n                    DecalEmissivity: 0.0f,\n                    ProjectileGroupSize: 1,\n\n                    DamageType: MyDamageType.Mine,\n                    AmmoType: MyAmmoType.Explosive,\n\n                    OnHitParticles: MyParticleEffects.DelegateForCreateExplosiveHitParticles,\n                    OnHitMaterialSpecificParticles: MyParticleEffects.DelegateForCreateHitMaterialParticles\n                   );\n\n            m_ammoProperties[(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Time_Bomb] =\n                new MyAmmoProperties(\n                    InitialSpeed: 5.0f,\n                    DesiredSpeed: 0.0f,\n                    SpeedVar: 0.0f,\n                    MaxTrajectory: 10000,\n                    HealthDamage: 0.0f,\n                    ShipDamage: 100.0f,\n                    EMPDamage: 0.0f,\n                    ExplosionRadius: 30.0f,\n                    DeviateAngle: MathHelper.ToRadians(0.01f),\n                    TrailColor: Vector3.One,\n                    ShotSound: MySoundCuesEnum.WepMissileFly,\n                    IsExplosive: true,\n                    AllowAimCorrection: true,\n                    DecalEmissivity: 0.0f,\n                    ProjectileGroupSize: 1,\n\n                    DamageType: MyDamageType.Mine,\n                    AmmoType: MyAmmoType.Explosive,\n\n                    OnHitParticles: MyParticleEffects.DelegateForCreateExplosiveHitParticles,\n                    OnHitMaterialSpecificParticles: MyParticleEffects.DelegateForCreateHitMaterialParticles\n                   );\n\n            m_ammoProperties[(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Smoke_Bomb] =\n                new MyAmmoProperties(\n                    InitialSpeed: 5.0f,\n                    DesiredSpeed: 0.0f,\n                    SpeedVar: 0.0f,\n                    MaxTrajectory: 10000,\n                    HealthDamage: 0.0f,\n                    ShipDamage: 0.0f,\n                    EMPDamage: 0.0f,\n                    ExplosionRadius: 40.0f,\n                    DeviateAngle: MathHelper.ToRadians(0.01f),\n                    TrailColor: Vector3.One,\n                    ShotSound: MySoundCuesEnum.WepMissileFly,\n                    IsExplosive: true,\n                    AllowAimCorrection: true,\n                    DecalEmissivity: 0.0f,\n                    ProjectileGroupSize: 1,\n\n                    DamageType: MyDamageType.Mine,\n                    AmmoType: MyAmmoType.Explosive,\n\n                    OnHitParticles: MyParticleEffects.DelegateForCreateExplosiveHitParticles,\n                    OnHitMaterialSpecificParticles: MyParticleEffects.DelegateForCreateHitMaterialParticles\n                   );\n\n             m_ammoProperties[(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Remote_Bomb] =\n                new MyAmmoProperties(\n                    InitialSpeed: 5.0f,\n                    DesiredSpeed: 0.0f,\n                    SpeedVar: 0.0f,\n                    MaxTrajectory: 10000,\n                    HealthDamage: 60.0f,\n                    ShipDamage: 120.0f,\n                    EMPDamage: 0.0f,\n                    ExplosionRadius: 40.0f,\n                    DeviateAngle: MathHelper.ToRadians(0.01f),\n                    TrailColor: Vector3.One,\n                    ShotSound: MySoundCuesEnum.WepMissileFly,\n                    IsExplosive: true,\n                    AllowAimCorrection: false,\n                    DecalEmissivity: 0.0f,\n                    ProjectileGroupSize: 1,\n\n                    DamageType: MyDamageType.Mine,\n                    AmmoType: MyAmmoType.Explosive,\n\n                    OnHitParticles: MyParticleEffects.DelegateForCreateExplosiveHitParticles,\n                    OnHitMaterialSpecificParticles: MyParticleEffects.DelegateForCreateHitMaterialParticles\n                   );\n\n            m_ammoProperties[(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Asteroid_Killer] =\n                new MyAmmoProperties(\n                    InitialSpeed: 5.0f,\n                    DesiredSpeed: 0.0f,\n                    SpeedVar: 0.0f,\n                    MaxTrajectory: 10000,\n                    HealthDamage: 100.0f,\n                    ShipDamage: 150.0f,\n                    EMPDamage: 0.0f,\n                    ExplosionRadius: 90.0f,\n                    DeviateAngle: MathHelper.ToRadians(0.01f),\n                    TrailColor: Vector3.One,\n                    ShotSound: MySoundCuesEnum.WepMissileFly,\n                    IsExplosive: true,\n                    AllowAimCorrection: true,\n                    DecalEmissivity: 0.0f,\n                    ProjectileGroupSize: 1,\n\n                    DamageType: MyDamageType.Mine,\n                    AmmoType: MyAmmoType.Explosive,\n\n                    OnHitParticles: MyParticleEffects.DelegateForCreateExplosiveHitParticles,\n                    OnHitMaterialSpecificParticles: MyParticleEffects.DelegateForCreateHitMaterialParticles\n                   );\n\n            m_ammoProperties[(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Mine_Smart] =\n                new MyAmmoProperties(\n                    InitialSpeed: 5.0f,\n                    DesiredSpeed: 5.0f,\n                    SpeedVar: 0.0f,\n                    MaxTrajectory: 300,\n                    HealthDamage: 0.0f,\n                    ShipDamage: 60.0f,\n                    EMPDamage: 0.0f,\n                    ExplosionRadius: 50.0f,\n                    DeviateAngle: MathHelper.ToRadians(0.01f),\n                    TrailColor: Vector3.One,\n                    ShotSound: MySoundCuesEnum.WepMissileFly,\n                    IsExplosive: true,\n                    AllowAimCorrection: false,\n                    DecalEmissivity: 0.0f,\n                    ProjectileGroupSize: 1,\n\n                    DamageType: MyDamageType.Mine,\n                    AmmoType: MyAmmoType.Explosive,\n\n                    OnHitParticles: MyParticleEffects.DelegateForCreateExplosiveHitParticles,\n                    OnHitMaterialSpecificParticles: MyParticleEffects.DelegateForCreateHitMaterialParticles\n                   );\n \n            m_ammoProperties[(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Mine_Basic] =\n                new MyAmmoProperties(\n                    InitialSpeed: 5.0f,\n                    DesiredSpeed: 0.0f,\n                    SpeedVar: 0.0f,\n                    MaxTrajectory: 100,\n                    HealthDamage: 0.0f,\n                    ShipDamage: 80.0f,\n                    EMPDamage: 0.0f,\n                    ExplosionRadius: 30.0f,\n                    DeviateAngle: MathHelper.ToRadians(0.01f),\n                    TrailColor: Vector3.One,\n                    ShotSound: MySoundCuesEnum.WepMissileFly,\n                    IsExplosive: true,\n                    AllowAimCorrection: true,\n                    DecalEmissivity: 0.0f,\n                    ProjectileGroupSize: 1,\n\n                    DamageType: MyDamageType.Mine,\n                    AmmoType: MyAmmoType.Explosive,\n\n                    OnHitParticles: MyParticleEffects.DelegateForCreateExplosiveHitParticles,\n                    OnHitMaterialSpecificParticles: MyParticleEffects.DelegateForCreateHitMaterialParticles\n                   );\n         \n            m_ammoProperties[(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Gravity_Bomb] =\n                new MyAmmoProperties(\n                    InitialSpeed: 5.0f,\n                    DesiredSpeed: 0.0f,\n                    SpeedVar: 0.0f,\n                    MaxTrajectory: 100,\n                    HealthDamage: 0.0f,\n                    ShipDamage: 40.0f,\n                    EMPDamage: 0.0f,\n                    ExplosionRadius: 40.0f,\n                    DeviateAngle: MathHelper.ToRadians(0.01f),\n                    TrailColor: Vector3.One,\n                    ShotSound: MySoundCuesEnum.WepMissileFly,\n                    IsExplosive: true,\n                    AllowAimCorrection: true,\n                    DecalEmissivity: 0.0f,\n                    ProjectileGroupSize: 1,\n\n                    DamageType: MyDamageType.Mine,\n                    AmmoType: MyAmmoType.Explosive,\n\n                    OnHitParticles: MyParticleEffects.DelegateForCreateExplosiveHitParticles,\n                    OnHitMaterialSpecificParticles: MyParticleEffects.DelegateForCreateHitMaterialParticles\n                   );\n\n            m_ammoProperties[(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Hologram] =\n                new MyAmmoProperties(\n                    InitialSpeed: 2.0f,\n                    DesiredSpeed: 0.0f,\n                    SpeedVar: 0.0f,\n                    MaxTrajectory: 100,\n                    HealthDamage: 0.0f,\n                    ShipDamage: 40.0f,\n                    EMPDamage: 0.0f,\n                    ExplosionRadius: 40.0f,\n                    DeviateAngle: MathHelper.ToRadians(0.01f),\n                    TrailColor: Vector3.One,\n                    ShotSound: MySoundCuesEnum.WepMissileFly,\n                    IsExplosive: true,\n                    AllowAimCorrection: true,\n                    DecalEmissivity: 0.0f,\n                    ProjectileGroupSize: 1,\n\n                    DamageType: MyDamageType.Mine,\n                    AmmoType: MyAmmoType.Explosive,\n\n                    OnHitParticles: MyParticleEffects.DelegateForCreateExplosiveHitParticles,\n                    OnHitMaterialSpecificParticles: MyParticleEffects.DelegateForCreateHitMaterialParticles\n                   );\n\n            m_ammoProperties[(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Decoy_Flare] =\n                new MyAmmoProperties(\n                    InitialSpeed: 100.0f,\n                    DesiredSpeed: 0.0f,\n                    SpeedVar: 0.0f,\n                    MaxTrajectory: 100,\n                    HealthDamage: 0.0f,\n                    ShipDamage: 40.0f,\n                    EMPDamage: 0.0f,\n                    ExplosionRadius: 40.0f,\n                    DeviateAngle: MathHelper.ToRadians(0.01f),\n                    TrailColor: Vector3.One,\n                    ShotSound: MySoundCuesEnum.WepMissileFly,\n                    IsExplosive: true,\n                    AllowAimCorrection: true,\n                    DecalEmissivity: 0.0f,\n                    ProjectileGroupSize: 1,\n\n                    DamageType: MyDamageType.Mine,\n                    AmmoType: MyAmmoType.Explosive,\n\n                    OnHitParticles: MyParticleEffects.DelegateForCreateExplosiveHitParticles,\n                    OnHitMaterialSpecificParticles: MyParticleEffects.DelegateForCreateHitMaterialParticles\n                   );\n\n            m_ammoProperties[(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Flash_Bomb] =\n                new MyAmmoProperties(\n                    InitialSpeed: 2.0f,\n                    DesiredSpeed: 0.0f,\n                    SpeedVar: 0.0f,\n                    MaxTrajectory: 100,\n                    HealthDamage: 0.0f,\n                    ShipDamage: 1.0f,\n                    EMPDamage: 0.0f,\n                    ExplosionRadius: 1.0f,\n                    DeviateAngle: MathHelper.ToRadians(0.01f),\n                    TrailColor: Vector3.One,\n                    ShotSound: MySoundCuesEnum.WepMissileFly,\n                    IsExplosive: true,\n                    AllowAimCorrection: true,\n                    DecalEmissivity: 0.0f,\n                    ProjectileGroupSize: 1,\n\n                    DamageType: MyDamageType.Mine,\n                    AmmoType: MyAmmoType.Explosive,\n\n                    OnHitParticles: MyParticleEffects.DelegateForCreateExplosiveHitParticles,\n                    OnHitMaterialSpecificParticles: MyParticleEffects.DelegateForCreateHitMaterialParticles\n                   );\n\n            m_ammoProperties[(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Illuminating_Shell] =\n                new MyAmmoProperties(\n                    InitialSpeed: 2.0f,\n                    DesiredSpeed: 0.0f,\n                    SpeedVar: 0.0f,\n                    MaxTrajectory: 100,\n                    HealthDamage: 0.0f,\n                    ShipDamage: 1.0f,\n                    EMPDamage: 0.0f,\n                    ExplosionRadius: 0.0f,\n                    DeviateAngle: MathHelper.ToRadians(0.01f),\n                    TrailColor: Vector3.One,\n                    ShotSound: MySoundCuesEnum.WepMissileFly,\n                    IsExplosive: true,\n                    AllowAimCorrection: true,\n                    DecalEmissivity: 0.0f,\n                    ProjectileGroupSize: 1,\n\n                    DamageType: MyDamageType.Mine,\n                    AmmoType: MyAmmoType.Explosive,\n\n                    OnHitParticles: MyParticleEffects.DelegateForCreateExplosiveHitParticles,\n                    OnHitMaterialSpecificParticles: MyParticleEffects.DelegateForCreateHitMaterialParticles\n                   );\n\n            m_ammoProperties[(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Remote_Camera] =\n                new MyAmmoProperties(\n                    InitialSpeed: 2.0f,\n                    DesiredSpeed: 0.0f,\n                    SpeedVar: 0.0f,\n                    MaxTrajectory: 100,\n                    HealthDamage: 0.0f,\n                    ShipDamage: 0.0f,\n                    EMPDamage: 0.0f,\n                    ExplosionRadius: 0.0f,\n                    DeviateAngle: MathHelper.ToRadians(0.01f),\n                    TrailColor: Vector3.One,\n                    ShotSound: MySoundCuesEnum.WepMissileFly,\n                    IsExplosive: true,\n                    AllowAimCorrection: true,\n                    DecalEmissivity: 0.0f,\n                    ProjectileGroupSize: 1,\n\n                    DamageType: MyDamageType.Mine,\n                    AmmoType: MyAmmoType.Explosive,\n\n                    OnHitParticles: MyParticleEffects.DelegateForCreateExplosiveHitParticles,\n                    OnHitMaterialSpecificParticles: MyParticleEffects.DelegateForCreateHitMaterialParticles\n                   );\n   \n\n            m_ammoProperties[(int)MyAmmoPropertiesEnum.Shrapnel] =\n               new MyAmmoProperties(\n                   InitialSpeed: 0,\n                   DesiredSpeed: 800,\n                   SpeedVar: 0.2f,\n                   MaxTrajectory: 500,\n                   HealthDamage: 0.0f,\n                   ShipDamage: 5.0f,\n                   EMPDamage: 0.0f,\n                   ExplosionRadius: 0,\n                   DeviateAngle: MathHelper.ToRadians(MathHelper.TwoPi),\n                   TrailColor: MyProjectilesConstants.EXPLOSIVE_PROJECTILE_TRAIL_COLOR,\n                   ShotSound: MySoundCuesEnum.WepMachineGunNormFire3d,\n                   IsExplosive: false,\n                   AllowAimCorrection: true,\n                   DecalEmissivity: 0.0f,\n                   ProjectileGroupSize: 1,\n\n                   DamageType: MyDamageType.Bullet,\n                   AmmoType: MyAmmoType.Basic,\n\n                   OnHitParticles: MyParticleEffects.DelegateForCreateBasicHitParticles,\n                   OnHitMaterialSpecificParticles: MyParticleEffects.DelegateForCreateHitMaterialParticles\n                  );\n\n            m_ammoProperties[(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Mine_BioChem] =\n                new MyAmmoProperties(\n                    InitialSpeed: 5.0f,\n                    DesiredSpeed: 0.0f,\n                    SpeedVar: 0.0f,\n                    MaxTrajectory: 10000,\n                    HealthDamage: 60.0f,\n                    ShipDamage: 6.0f,\n                    EMPDamage: 0.0f,\n                    ExplosionRadius: 20.0f,\n                    DeviateAngle: MathHelper.ToRadians(0.01f),\n                    TrailColor: Vector3.One,\n                    ShotSound: MySoundCuesEnum.WepMissileFly,\n                    IsExplosive: true,\n                    AllowAimCorrection: false,\n                    DecalEmissivity: 0.0f,\n                    ProjectileGroupSize: 1,\n\n                    DamageType: MyDamageType.Mine,\n                    AmmoType: MyAmmoType.Biochem,\n\n                    OnHitParticles: MyParticleEffects.DelegateForCreateBiochemHitParticles,\n                    OnHitMaterialSpecificParticles: MyParticleEffects.DelegateForCreateHitMaterialParticles\n                   );\n\n            m_ammoProperties[(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Missile_BioChem] =\n                new MyAmmoProperties(\n                    InitialSpeed: 1.0f,\n                    DesiredSpeed: 500.0f,\n                    SpeedVar: 0.0f,\n                    MaxTrajectory: 10000,\n                    HealthDamage: 40.0f,\n                    ShipDamage: 2.0f,\n                    EMPDamage: 0.0f,\n                    ExplosionRadius: 40.0f,\n                    DeviateAngle: MathHelper.ToRadians(0.01f),\n                    TrailColor: Vector3.One,\n                    ShotSound: MySoundCuesEnum.WepMissileFly,\n                    IsExplosive: true,\n                    AllowAimCorrection: true,\n                    DecalEmissivity: 0.0f,\n                    ProjectileGroupSize: 1,\n\n                    DamageType: MyDamageType.Rocket,\n                    AmmoType: MyAmmoType.Biochem,\n\n                    OnHitParticles: MyParticleEffects.DelegateForCreateBiochemHitParticles,\n                    OnHitMaterialSpecificParticles: MyParticleEffects.DelegateForCreateHitMaterialParticles\n                   );\n\n            m_ammoProperties[(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_BioChem] =\n                new MyAmmoProperties(\n                    InitialSpeed: 0.0f,\n                    DesiredSpeed: 2000.0f,\n                    SpeedVar: 0.0f,\n                    MaxTrajectory: 14000,\n                    HealthDamage: 30.0f,\n                    ShipDamage: 3.0f,\n                    EMPDamage: 0.0f,\n                    ExplosionRadius: 15.0f,\n                    DeviateAngle: MathHelper.ToRadians(0.01f),\n                    TrailColor: Vector3.One,\n                    ShotSound: MySoundCuesEnum.WepMissileFly,\n                    IsExplosive: true,\n                    AllowAimCorrection: true,\n                    DecalEmissivity: 0.0f,\n                    ProjectileGroupSize: 1,\n\n                    DamageType: MyDamageType.Rocket,\n                    AmmoType: MyAmmoType.Biochem,\n\n                    OnHitParticles: MyParticleEffects.DelegateForCreateExplosiveHitParticles,\n                    OnHitMaterialSpecificParticles: MyParticleEffects.DelegateForCreateHitMaterialParticles\n                   );\n\n            m_ammoProperties[(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_EMP] =\n               new MyAmmoProperties(\n                   InitialSpeed: 0,\n                   DesiredSpeed: 1000,\n                   SpeedVar: 0,\n                   MaxTrajectory: 1800,\n                   HealthDamage: 0.0f,\n                   ShipDamage: 0.5f,\n                   EMPDamage: 5.0f,\n                   ExplosionRadius: 0,\n                   DeviateAngle: MathHelper.ToRadians(0.17f),\n                   TrailColor: MyProjectilesConstants.EMP_PROJECTILE_TRAIL_COLOR,\n                   ShotSound: MySoundCuesEnum.WepAutocanonFire3d,\n                   IsExplosive: false,\n                   AllowAimCorrection: true,\n                   DecalEmissivity: 0.5f,\n                   ProjectileGroupSize: 1,\n\n                   DamageType: MyDamageType.Bullet,\n                   AmmoType: MyAmmoType.EMP,\n\n                   OnHitParticles: MyParticleEffects.DelegateForCreateAutocannonEMPHitParticles,\n                   OnHitMaterialSpecificParticles: MyParticleEffects.DelegateForCreateAutocannonHitMaterialParticles\n                  );\n\n            m_ammoProperties[(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Sniper_EMP] =\n                new MyAmmoProperties(\n                    InitialSpeed: 0,\n                    DesiredSpeed: 8000,\n                    SpeedVar: 0.0f,\n                    MaxTrajectory: 9600,\n                    HealthDamage: 0.0f,\n                    ShipDamage: 15.0f,\n                    EMPDamage: 45.0f,\n                    ExplosionRadius: 0,\n                    DeviateAngle: MathHelper.ToRadians(0.01f),\n                    TrailColor: MyProjectilesConstants.EMP_PROJECTILE_TRAIL_COLOR,\n                    ShotSound: MySoundCuesEnum.WepSniperNormFire3d,\n                    IsExplosive: false,\n                    AllowAimCorrection: true,\n                    DecalEmissivity: 0.5f,\n                    ProjectileGroupSize: 1,\n\n                    DamageType: MyDamageType.Bullet,\n                    AmmoType: MyAmmoType.Biochem,\n\n                    OnHitParticles: MyParticleEffects.DelegateForCreateEMPHitParticles,\n                    OnHitMaterialSpecificParticles: MyParticleEffects.DelegateForCreateHitMaterialParticles\n                   );\n\n            m_ammoProperties[(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Machine_Gun_EMP] =\n               new MyAmmoProperties(\n                   InitialSpeed: 0,\n                   DesiredSpeed: 900,\n                   SpeedVar: 0,\n                   MaxTrajectory: 1900,\n                   HealthDamage: 0.0f,\n                   ShipDamage: 0.5f,\n                   EMPDamage: 5.0f,\n                   ExplosionRadius: 0,\n                   DeviateAngle: MathHelper.ToRadians(0.17f),\n                   TrailColor: MyProjectilesConstants.EMP_PROJECTILE_TRAIL_COLOR,\n                   ShotSound: MySoundCuesEnum.WepMachineGunNormFire3d,\n                   IsExplosive: false,\n                   AllowAimCorrection: true,\n                   DecalEmissivity: 0.5f,\n                   ProjectileGroupSize: 1,\n\n                   DamageType: MyDamageType.Bullet,\n                   AmmoType: MyAmmoType.EMP,\n\n                   OnHitParticles: MyParticleEffects.DelegateForCreateEMPHitParticles,\n                   OnHitMaterialSpecificParticles: MyParticleEffects.DelegateForCreateHitMaterialParticles\n                  );\n\n            m_ammoProperties[(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Missile_EMP] =\n                new MyAmmoProperties(\n                    InitialSpeed: 1.0f,\n                    DesiredSpeed: 500.0f,\n                    SpeedVar: 0.0f,\n                    MaxTrajectory: 10000,\n                    HealthDamage: 0.0f,\n                    ShipDamage: 2.0f,\n                    EMPDamage: 20.0f,\n                    ExplosionRadius: 40.0f,\n                    DeviateAngle: MathHelper.ToRadians(0.01f),\n                    TrailColor: Vector3.One,\n                    ShotSound: MySoundCuesEnum.WepMissileFly,\n                    IsExplosive: true,\n                    AllowAimCorrection: true,\n                    DecalEmissivity: 0.0f,\n                    ProjectileGroupSize: 1,\n\n                    DamageType: MyDamageType.Rocket,\n                    AmmoType: MyAmmoType.EMP,\n\n                    OnHitParticles: MyParticleEffects.DelegateForCreateEMPHitParticles,\n                    OnHitMaterialSpecificParticles: MyParticleEffects.DelegateForCreateHitMaterialParticles\n                   );\n\n            m_ammoProperties[(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_EMP] =\n                new MyAmmoProperties(\n                    InitialSpeed: 0.0f,\n                    DesiredSpeed: 2000.0f,\n                    SpeedVar: 0.0f,\n                    MaxTrajectory: 14000,\n                    HealthDamage: 0.0f,\n                    ShipDamage: 3.0f,\n                    EMPDamage: 30.0f,\n                    ExplosionRadius: 15.0f,\n                    DeviateAngle: MathHelper.ToRadians(0.01f),\n                    TrailColor: Vector3.One,\n                    ShotSound: MySoundCuesEnum.WepMissileFly,\n                    IsExplosive: true,\n                    AllowAimCorrection: true,\n                    DecalEmissivity: 0.0f,\n                    ProjectileGroupSize: 1,\n\n                    DamageType: MyDamageType.Rocket,\n                    AmmoType: MyAmmoType.EMP,\n\n                    OnHitParticles: MyParticleEffects.DelegateForCreateEMPHitParticles,\n                    OnHitMaterialSpecificParticles: MyParticleEffects.DelegateForCreateHitMaterialParticles\n                   );\n\n            m_ammoProperties[(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_EMP_Bomb] =\n                new MyAmmoProperties(\n                    InitialSpeed: 5.0f,\n                    DesiredSpeed: 0.0f,\n                    SpeedVar: 0.0f,\n                    MaxTrajectory: 10000,\n                    HealthDamage: 0.0f,\n                    ShipDamage: 20.0f,\n                    EMPDamage: 150.0f,\n                    ExplosionRadius: 100.0f,\n                    DeviateAngle: MathHelper.ToRadians(0.01f),\n                    TrailColor: Vector3.One,\n                    ShotSound: MySoundCuesEnum.WepMissileFly,\n                    IsExplosive: true,\n                    AllowAimCorrection: false,\n                    DecalEmissivity: 0.0f,\n                    ProjectileGroupSize: 1,\n\n                    DamageType: MyDamageType.Mine,\n                    AmmoType: MyAmmoType.EMP,\n\n                    OnHitParticles: MyParticleEffects.DelegateForCreateEMPHitParticles,\n                    OnHitMaterialSpecificParticles: MyParticleEffects.DelegateForCreateHitMaterialParticles\n                   );\n\n            float minimalExplosionRadius = (float)Math.Sqrt(3) * MyVoxelConstants.VOXEL_SIZE_IN_METRES * 0.5f;\n\n            foreach (MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum ammo in Enum.GetValues(typeof(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum)))\n            {\n                System.Diagnostics.Debug.Assert(MyAmmoConstants.GetAmmoProperties(ammo) != null);\n                if (MyAmmoConstants.GetAmmoProperties(ammo).ExplosionRadius > 1)\n                    System.Diagnostics.Debug.Assert(MyAmmoConstants.GetAmmoProperties(ammo).ExplosionRadius > minimalExplosionRadius);\n            }\n\n            foreach (MyAmmoPropertiesEnum ammo in Enum.GetValues(typeof(MyAmmoPropertiesEnum)))\n            {\n                System.Diagnostics.Debug.Assert(MyAmmoConstants.GetAmmoProperties(ammo) != null);\n                if (MyAmmoConstants.GetAmmoProperties(ammo).ExplosionRadius > 1)\n                    System.Diagnostics.Debug.Assert(MyAmmoConstants.GetAmmoProperties(ammo).ExplosionRadius > minimalExplosionRadius);\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        public static MyAmmoProperties GetAmmoProperties(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum ammoType)\n        {\n            return m_ammoProperties[(int)ammoType];\n        }\n\n        public static MyAmmoProperties GetAmmoProperties(MyAmmoPropertiesEnum ammoType)\n        {\n            return m_ammoProperties[(int)ammoType];\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Weapons/Ammo/MyAmmoInventoryItems.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Inventory;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.CommonLIB.AppCode.Utils;\n\nnamespace MinerWars.AppCode.Game.Entities.Weapons.Ammo\n{\n    /// <summary>\n    /// This class is only helper class, to easy ammo usage, because ammo is now as inventory item in inventory and we can't find ammo in whole inventory\n    /// </summary>\n    class MyAmmoInventoryItems\n    {\n        // ammo inventory items collection\n        private List<MyInventoryItem> m_ammoInventoryItems;\n        private List<MyInventoryItem>[] m_ammoInventoryItemsByAmmoType;\n\n        public MyAmmoInventoryItems() \n        {\n            m_ammoInventoryItems = new List<MyInventoryItem>();\n            m_ammoInventoryItemsByAmmoType = new List<MyInventoryItem>[MyMwcUtils.GetMaxValueFromEnum<MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum>() + 1];\n            for (int i = 0; i < m_ammoInventoryItemsByAmmoType.Length; i++)\n            {\n                m_ammoInventoryItemsByAmmoType[i] = new List<MyInventoryItem>();\n            }\n        }\n\n        /// <summary>\n        /// Initialize ammo inventory items by inventory items\n        /// </summary>\n        /// <param name=\"ammoInventoryItems\"></param>\n        public void Init(List<MyInventoryItem> ammoInventoryItems) \n        {\n            m_ammoInventoryItems.Clear();\n            m_ammoInventoryItems.AddRange(ammoInventoryItems);\n\n            foreach (List<MyInventoryItem> inventoryItems in m_ammoInventoryItemsByAmmoType)\n            {\n                inventoryItems.Clear();\n            }\n\n            foreach (MyInventoryItem ammoInventoryItem in m_ammoInventoryItems)\n            {\n                if (ammoInventoryItem.ObjectBuilderId != null)\n                {\n                    m_ammoInventoryItemsByAmmoType[ammoInventoryItem.ObjectBuilderId.Value].Add(ammoInventoryItem);\n                }\n            }\n        }\n\n        /// <summary>\n        /// Returns ammo objectuilders\n        /// </summary>\n        /// <returns></returns>\n        public List<MyMwcObjectBuilder_SmallShip_Ammo> GetAmmoObjectBuilders(bool getExactCopy) \n        {\n            List<MyMwcObjectBuilder_SmallShip_Ammo> ammoObjectBuilders = new List<MyMwcObjectBuilder_SmallShip_Ammo>();\n            foreach (MyInventoryItem ammoInventoryItem in m_ammoInventoryItems) \n            {\n                ammoObjectBuilders.Add((MyMwcObjectBuilder_SmallShip_Ammo)ammoInventoryItem.GetInventoryItemObjectBuilder(getExactCopy));\n            }\n            return ammoObjectBuilders;\n        }\n\n        /// <summary>\n        /// Returns ammo inventory items\n        /// </summary>\n        /// <returns></returns>\n        public List<MyInventoryItem> GetAmmoInventoryItems() \n        {\n            return m_ammoInventoryItems;\n        }        \n\n        /// <summary>\n        /// Returns ammo inventory items by ammo type\n        /// </summary>\n        /// <param name=\"ammoType\">Ammo type</param>\n        /// <returns></returns>\n        public List<MyInventoryItem> GetAmmoInventoryItems(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum ammoType)\n        {\n            return m_ammoInventoryItemsByAmmoType[(int) ammoType];            \n        }\n\n        /// <summary>\n        /// Returns amoo inventoy items count\n        /// </summary>\n        /// <returns></returns>\n        public int Count()\n        {\n            return m_ammoInventoryItems.Count;\n        }\n\n        public void Close() \n        {\n            m_ammoInventoryItems.Clear();\n            m_ammoInventoryItems = null;\n\n            for (int i = 0; i < m_ammoInventoryItemsByAmmoType.Length; i++) \n            {\n                m_ammoInventoryItemsByAmmoType[i].Clear();\n                m_ammoInventoryItemsByAmmoType[i] = null;\n            }\n            m_ammoInventoryItemsByAmmoType = null;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Weapons/Ammo/MyCannonShot.cs",
    "content": "﻿using System;\nusing MinerWarsMath;\n\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Decals;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.AppCode.Game.Explosions;\nusing MinerWars.AppCode.Game.Lights;\nusing MinerWars.AppCode.Game.Models;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.Entities.Weapons.UniversalLauncher;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing SysUtils.Utils;\nusing MinerWars.AppCode.Game.TransparentGeometry.Particles;\nusing MinerWars.AppCode.Physics;\nusing MinerWars.AppCode.Game.Physics;\n\n\nnamespace MinerWars.AppCode.Game.Entities.Weapons\n{\n    using UniversalLauncher;\n    using MinerWars.AppCode.Game.Entities.Prefabs;\n    using MinerWars.AppCode.Game.Gameplay;\n    using MinerWars.AppCode.Game.Entities.Ships.AI;\n    using MinerWars.AppCode.Game.Render;\n    using MinerWars.AppCode.Game.Managers.Session;\n\n    class MyCannonShot : MyAmmoBase\n    {\n        MyLight m_light;\n        MySoundCue? m_thrusterCue;\n\n        bool m_wasPenetration;\n        bool m_hasExplosion = false;\n        MyExplosionTypeEnum m_explosionType;\n        MyMwcObjectBuilder_SmallShip_Ammo m_usedAmmo;\n        Vector3 m_penetrationOrigin;\n        MyVoxelMap m_penetratedVoxelMap;\n        BoundingSphere m_cuttingSphere;\n\n        MyParticleEffect m_smokeEffect;\n        private MyEntity m_collidedEntity;\n\n        Vector3? m_collisionPoint;\n        Action<MyEntity> m_collidedEntityClosedHandler;\n\n        public MyCannonShot()\n        {\n            m_collidedEntityClosedHandler = new Action<MyEntity>(collidedEntity_OnClose);\n        }\n\n        //  Parameter-less constructor - because missiles are stored in object pool\n        public virtual void Init()\n        {\n            base.Init(MyModelsEnum.Missile, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_Basic);\n\n            m_cuttingSphere = new BoundingSphere(GetPosition(), 2.0f);\n\n            this.Physics.CollisionLayer = MyConstants.COLLISION_LAYER_MISSILE;\n            m_canByAffectedByExplosionForce = false;\n        }\n\n        //  This method realy initiates/starts the missile\n        //  IMPORTANT: Direction vector must be normalized!\n        public void Start(Vector3 position, Vector3 initialVelocity, Vector3 directionNormalized, MyMwcObjectBuilder_SmallShip_Ammo usedAmmo, MySmallShip minerShip)\n        {\n            m_usedAmmo = usedAmmo;\n            m_ammoProperties = MyAmmoConstants.GetAmmoProperties(usedAmmo.AmmoType);\n            m_gameplayProperties = MyGameplayConstants.GetGameplayProperties(m_usedAmmo, Faction);\n            m_penetratedVoxelMap = null;\n            m_wasPenetration = false;\n            m_hasExplosion = false;\n            m_isExploded = false;\n            m_collidedEntity = null;\n            m_collisionPoint = null;\n                \n            Matrix orientation = GetWorldRotation();\n            Vector3 pos = position;\n\n            //  Play missile thrust cue (looping)\n            m_thrusterCue = MyAudio.AddCue3D(MySoundCuesEnum.WepMissileFly, pos, orientation.Forward, orientation.Up, this.Physics.LinearVelocity);\n\n            m_light = MyLights.AddLight();\n            if (m_light != null)\n            {\n                m_light.Start(MyLight.LightTypeEnum.PointLight, GetPosition(), MyMissileHelperUtil.GetCannonShotLightColor(), 1, MyMissileConstants.MISSILE_LIGHT_RANGE);\n            }\n\n            m_diffuseColor = m_ammoProperties.TrailColor;\n\n            switch (usedAmmo.AmmoType)\n            {\n                case MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_Basic:\n                case MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_High_Speed:\n                case MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_Armor_Piercing_Incendiary:\n                case MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_SAPHEI:\n                case MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_Proximity_Explosive:\n                    m_explosionType = MyExplosionTypeEnum.MISSILE_EXPLOSION;\n                    break;\n                case MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_BioChem:\n                    m_explosionType = MyExplosionTypeEnum.BIOCHEM_EXPLOSION;\n                    break;\n                case MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_EMP:\n                    m_explosionType = MyExplosionTypeEnum.EMP_EXPLOSION;\n                    break;\n                case MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_Tunnel_Buster:\n                    m_explosionType = MyExplosionTypeEnum.BLASTER_EXPLOSION;\n                    break;\n                default:\n                    throw new MyMwcExceptionApplicationShouldNotGetHere();\n                    break;\n            }\n\n            this.Physics.Mass = m_gameplayProperties.WeightPerUnit;\n\n            Vector3? correctedDirection = null;\n            if (MyGameplayConstants.GameplayDifficultyProfile.EnableAimCorrection)\n            {\n                if (minerShip == MinerWars.AppCode.Game.Managers.Session.MySession.PlayerShip)\n                {\n                    correctedDirection = MyEntities.GetDirectionFromStartPointToHitPointOfNearestObject(minerShip, position, m_ammoProperties.MaxTrajectory);\n                }\n            }\n\n            if (correctedDirection != null)\n                directionNormalized = correctedDirection.Value;\n\n            base.Start(position, initialVelocity, directionNormalized, m_ammoProperties.DesiredSpeed, minerShip);\n\n            if (correctedDirection != null) //override the base class behaviour, update the missile direction\n            {\n                Matrix ammoWorld = minerShip.WorldMatrix;\n                ammoWorld.Translation = position;\n                ammoWorld.Forward = correctedDirection.Value;\n\n                SetWorldMatrix(ammoWorld);\n            }\n\n            m_smokeEffect = MyParticlesManager.CreateParticleEffect((int)MyParticleEffectsIDEnum.Smoke_CannonShot);\n            m_smokeEffect.AutoDelete = false;\n            m_smokeEffect.WorldMatrix = WorldMatrix;\n        }\n\n        public override void UpdateBeforeSimulation()\n        {\n            try\n            {\n                MyRender.GetRenderProfiler().StartProfilingBlock(\"MyCannonShot.UpdateBeforeSimulation\");\n\n                if (this.WorldMatrix.Translation != m_previousPosition)\n                {\n                    MyLine line = new MyLine(this.WorldMatrix.Translation, m_previousPosition);\n                    MyDangerZones.Instance.Notify(line, OwnerEntity);\n                }\n\n                //  Kill this missile\n                if (m_isExploded && !m_wasPenetration)\n                {\n                    //  Create explosion\n                    MyExplosion newExplosion = MyExplosions.AddExplosion();\n                    if (newExplosion != null)\n                    {\n                        float radius = MyMwcUtils.GetRandomFloat(m_ammoProperties.ExplosionRadius - 2, m_ammoProperties.ExplosionRadius + 2);\n                        BoundingSphere explosionSphere = new BoundingSphere((m_collisionPoint.HasValue ? m_collisionPoint.Value : GetPosition()), radius);\n                        MyExplosionInfo info = new MyExplosionInfo(m_ammoProperties.HealthDamage, m_ammoProperties.ShipDamage, m_ammoProperties.EMPDamage, explosionSphere, m_explosionType, true)\n                        {\n                            GroupMask = Physics.GroupMask,\n                            CascadeLevel = CascadedExplosionLevel,\n                            HitEntity = m_collidedEntity,\n                            OwnerEntity = this.OwnerEntity,\n                            Direction = WorldMatrix.Forward,\n                            ParticleScale = 1.5f,\n                            VoxelExplosionCenter = explosionSphere.Center + radius * WorldMatrix.Forward * 0.6f,\n                        };\n                        info.CreateParticleEffect = !m_hasExplosion;\n                        newExplosion.Start(ref info);\n                    }\n\n                    if (m_collidedEntity != null && !m_collidedEntity.IsExploded())\n                    {\n                        m_collidedEntity.Physics.AddForce(\n                            MyPhysicsForceType.APPLY_WORLD_IMPULSE_AND_WORLD_ANGULAR_IMPULSE,\n                            WorldMatrix.Forward * MyMissileConstants.HIT_STRENGTH_IMPULSE,\n                            GetPosition() + MyMwcUtils.GetRandomVector3Normalized() * 2,\n                            MyMissileConstants.HIT_STRENGTH_IMPULSE * MyMwcUtils.GetRandomVector3Normalized());\n                    }\n\n                    MarkForClose();\n\n                    return;\n                }\n\n                base.UpdateBeforeSimulation();\n\n                //  Chech timeout and max distance\n                if ((m_elapsedMiliseconds > MyCannonConstants.SHOT_TIMEOUT) || (Vector3.Distance(this.WorldMatrix.Translation, m_origin) >= m_ammoProperties.MaxTrajectory))\n                {\n                    MarkForClose();\n                    return;\n                }\n\n\n\n                Matrix orientation = GetWorldRotation();\n\n                //  Update thruster cue/sound\n                MyAudio.UpdateCuePosition(m_thrusterCue, this.WorldMatrix.Translation, orientation.Forward, orientation.Up, this.Physics.LinearVelocity);\n\n                Vector3 pos = this.WorldMatrix.Translation;\n\n                if (m_penetratedVoxelMap == null)\n                {\n                    if (m_smokeEffect != null)\n                        m_smokeEffect.WorldMatrix = WorldMatrix;\n                }\n                /*\n          if (m_wasPenetration)\n          {\n              //  Create explosion\n              MyExplosion newExplosion = MyExplosions.AddExplosion();\n              if (newExplosion != null)\n              {\n                  float radius = MyMwcUtils.GetRandomFloat(1, 2);\n                  float particleScale = 2.2f; // must be large enough to cover the hole\n                  newExplosion.StartWithPositionOffset(m_ammoProperties.HealthDamage, m_ammoProperties.ShipDamage, m_ammoProperties.EMPDamage, m_explosionType, m_penetrationOrigin - WorldMatrix.Forward * 2, radius, MyExplosionsConstants.EXPLOSION_LIFESPAN, CascadedExplosionLevel, particleScale: particleScale, hitEntity: m_collidedEntity, ownerEntity: m_ownerEntity);\n              }\n              m_wasPenetration = false;\n              m_hasExplosion = true;\n          }        */\n\n                if (m_usedAmmo.AmmoType == MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_Proximity_Explosive)\n                {\n                    //  Look for small ships in shots's proximity\n                    BoundingSphere boundingSphere = new BoundingSphere(GetPosition(), MyCannonShotConstants.PROXIMITY_DETECTION_RADIUS);\n                    BoundingBox boundingBox = new BoundingBox();\n                    BoundingBox.CreateFromSphere(ref boundingSphere, out boundingBox);\n\n                    var elements = MyEntities.GetElementsInBox(ref boundingBox);\n                    for (int i = 0; i < elements.Count; i++)\n                    {\n                        var rigidBody = (MyPhysicsBody)elements[i].GetRigidBody().m_UserData;\n                        var entity = rigidBody.Entity;\n\n\n                        if (!(entity is MinerWars.AppCode.Game.Entities.MySmallShip))\n                            continue;\n                        if (entity == OwnerEntity)\n                            continue;\n                        if (entity == this)\n                            continue;\n\n                        Explode(entity);\n                        break;\n                    }\n                    elements.Clear();\n                }\n\n                /*\n                if (m_usedAmmo.AmmoType == MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_Tunnel_Buster)\n                {\n                    m_cuttingSphere.Center = GetPosition();\n\n                    //  We found voxel so lets make tunel into it\n                    MyPhysObjectBase collisionResult = MyEntities.GetIntersectionWithSphere(ref m_cuttingSphere, this, (MySmallShip)Parent);\n                    if (collisionResult is MyVoxelMap)\n                    {\n                        MyVoxelMap voxelMap = collisionResult as MyVoxelMap;\n                        if (m_penetratedVoxelMap == null)\n                        {\n                            m_penetratedVoxelMap = voxelMap;\n                            m_penetrationOrigin = GetPosition();\n                        }\n\n                        Game.Voxels.MyVoxelGenerator.CutOutSphereFast(voxelMap, m_cuttingSphere);\n                    }\n                } */\n                /*\n          if (m_usedAmmo.AmmoType == MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_Tunnel_Buster)\n          {\n              if (m_penetratedVoxelMap != null)\n              {\n                  //MyCannonShotConstants.BUSTER_PENETRATION_LENGTH\n                  float busterPenetrationLength = m_ammoProperties.ExplosionRadius * 0.75f;\n                  if (Vector3.Distance(m_penetrationOrigin, GetPosition()) >= busterPenetrationLength)\n                  {\n                      m_collisionPoint = GetPosition(); //We want to explode inside voxel, not on collision point\n                      Explode(m_penetratedVoxelMap);\n                  }\n              }\n          }    */\n            }\n            finally\n            {\n                MyRender.GetRenderProfiler().EndProfilingBlock();\n            }\n        }\n\n        public override void OnWorldPositionChanged(object source)\n        {\n            base.OnWorldPositionChanged(source);\n\n            //  Update light position\n            if (m_light != null)\n            {\n                m_light.SetPosition(GetPosition());\n                m_light.Color = MyMissileHelperUtil.GetCannonShotLightColor();\n                m_light.Range = MyMissileConstants.MISSILE_LIGHT_RANGE;\n            }\n        }\n\n        //  Kills this missile. Must be called at her end (after explosion or timeout)\n        public override void Close()\n        {\n            base.Close();\n\n            if (m_collidedEntity != null)\n            {\n                m_collidedEntity.OnClose -= m_collidedEntityClosedHandler;\n                m_collidedEntity = null;\n            }\n\n            //  Free the light\n            if (m_light != null)\n            {\n                MyLights.RemoveLight(m_light);\n                m_light = null;\n            }\n\n            //  Stop thruster cue\n            if ((m_thrusterCue != null) && (m_thrusterCue.Value.IsPlaying == true))\n            {\n                m_thrusterCue.Value.Stop(SharpDX.XACT3.StopFlags.Immediate);\n            }\n\n            if (m_smokeEffect != null)\n            {\n                m_smokeEffect.Stop();\n                m_smokeEffect = null;\n            }\n\n            MyCannonShots.Remove(this);\n        }\n\n        /// <summary>\n        /// Called on some contact with this entity.\n        /// </summary>\n        /// <param name=\"contactInfo\">The contact info.</param>\n        protected override void OnContactStart(MyContactEventInfo contactInfo)\n        {\n            base.OnContactStart(contactInfo);\n\n            var collidedEntity = contactInfo.GetOtherEntity(this);\n\n            /*\n            if (IsExploded || contactInfo.GetOtherEntity(this) != m_collidedEntity || m_wasPenetration)\n            {\n                return;\n            } */\n\n            /*\n            if (Vector3.Dot(WorldMatrix.Forward, contactInfo.m_ContactNormal) < MyMissileConstants.MISSILE_MINIMAL_HIT_DOT)\n            {\n                //Hit wasnt facing the target, just slide or something\n                return;\n            } */\n\n            if (collidedEntity is MySmallShip\n              && OwnerEntity == MySession.PlayerShip\n              && MySession.PlayerFriends.Contains(collidedEntity as MySmallShip))\n            {\n                //missiles wont hit out friends\n                return;\n            }\n\n            m_collidedEntity = collidedEntity;\n            m_collidedEntity.OnClose += m_collidedEntityClosedHandler;\n            m_collisionPoint = contactInfo.m_ContactPoint;\n\n\n            if (this.OwnerEntity is MySmallShip && (MySmallShip)this.OwnerEntity == MySession.PlayerShip && m_collidedEntity is MyStaticAsteroid && !m_collidedEntity.IsDestructible)\n            {\n                HUD.MyHud.ShowIndestructableAsteroidNotification();\n            }\n              /*\n            if (m_usedAmmo.AmmoType == MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_Tunnel_Buster)\n            {\n                if (m_collidedEntity is MyVoxelMap)\n                {\n                    return;\n                }\n            }   */\n\n            Explode(m_collidedEntity);\n        }\n\n        void collidedEntity_OnClose(MyEntity obj)\n        {\n            m_collidedEntity = null;\n            obj.OnClose -= m_collidedEntityClosedHandler;\n        }\n\n        protected override bool OnContact(ref MyRBSolverConstraint constraint)\n        {\n            MyEntity collidedEntity = constraint.GetOtherEntity(this);\n\n            /*\n            // we take the closest collided entity\n            if (m_collidedEntity == null || Vector3.Distance(this.GetPosition(), constraint.m_ContactPoint) < Vector3.Distance(this.GetPosition(), m_collisionPoint.Value))\n            {\n                m_collisionPoint = constraint.m_ContactPoint;\n                if (collidedEntity != m_collidedEntity)\n                {\n                    m_collidedEntity = collidedEntity;\n                    if (m_collidedEntity is MyVoxelMap && m_usedAmmo.AmmoType == MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_Tunnel_Buster)\n                    {\n                        if (m_penetratedVoxelMap == null)\n                        {\n                            m_penetratedVoxelMap = m_collidedEntity as MyVoxelMap;\n                            m_penetrationOrigin = GetPosition();\n                            m_wasPenetration = true;\n                        }\n\n                        return false;\n                    }\n                }\n            }\n\n            if (m_penetratedVoxelMap != null)\n                return false;\n              */\n            return true;\n        }\n\n        public void Explode(MyEntity collideEntity)\n        {\n            if (m_usedAmmo.AmmoType == MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_Proximity_Explosive)\n            { //make flying shrapnels\n                int shrapnels = MyCannonShotConstants.PROXIMITY_SHRAPNELS_COUNT;\n                while (shrapnels-- > 0)\n                {\n                    Vector3 projectileForwardVector = MyUtilRandomVector3ByDeviatingVector.GetRandom(WorldMatrix.Forward, MathHelper.TwoPi);\n                    //MyProjectiles.Add(\n                      //  MyAmmoConstants.GetAmmoProperties(MyAmmoPropertiesEnum.Shrapnel),\n                        //Parent, GetPosition(), Vector3.Zero, projectileForwardVector, false, 3, this);\n\n                    MyProjectiles.Add(\n                        MyAmmoConstants.GetAmmoProperties(MyAmmoPropertiesEnum.Shrapnel),\n                        Parent, GetPosition(), Vector3.Zero, projectileForwardVector, false, 3, this);\n                }\n            }\n\n            Explode();\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Weapons/Ammo/MyCannonShots.cs",
    "content": "﻿using MinerWars.CommonLIB.AppCode.Generics;\n\nnamespace MinerWars.AppCode.Game.Entities.Weapons\n{\n    using System.Collections.Generic;\n    using CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\n    using MinerWarsMath;\n    using SysUtils.Utils;\n    using Utils;\n\n    static class MyCannonShots\n    {\n        static MyObjectsPool<MyCannonShot> m_missiles = null;\n\n        public static void LoadData()\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyCannonShots.LoadData\");\n\n            MyMwcLog.WriteLine(\"MyMissiles.LoadContent() - START\");\n            MyMwcLog.IncreaseIndent();\n\n            if (m_missiles == null)\n                m_missiles = new MyObjectsPool<MyCannonShot>(MyMissileConstants.MAX_MISSILES_COUNT);\n            m_missiles.DeallocateAll();\n\n            foreach (LinkedListNode<MyCannonShot> item in m_missiles.GetPreallocatedItemsArray())\n            {\n                item.Value.Init();\n            }\n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyMissiles.LoadContent() - END\");\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        //  Add new missile to the list\n        public static void UnloadData()\n        {\n        }\n\n        public static void Add(Vector3 position, Vector3 initialVelocity, Vector3 direction, MyMwcObjectBuilder_SmallShip_Ammo usedAmmo, MySmallShip ignoreMinerShip)\n        {\n            MyCannonShot newMissile = m_missiles.Allocate();\n            if (newMissile != null)\n            {\n                newMissile.Start(position, initialVelocity, direction, usedAmmo, ignoreMinerShip);\n            }\n        }\n\n        //  Update active missiles. If missile dies/timeouts, remove it from the list.\n        public static void Remove(MyCannonShot item)\n        {\n            m_missiles.Deallocate(item);\n        }\n\n        public static int GetActiveCount()\n        {\n            return m_missiles.GetActiveCount();\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Weapons/Ammo/MyMissile.cs",
    "content": "﻿//#define DEBUG_MISSILE\n\nusing MinerWars.AppCode.Game.Entities.SubObjects;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.AppCode.Physics;\nusing MinerWars.AppCode.Game.Physics;\n\n\nnamespace MinerWars.AppCode.Game.Entities.Weapons\n{\n    using System;\n    using System.Collections.Generic;\n    using Audio;\n    using CommonLIB.AppCode.Utils;\n    using Explosions;\n    using Lights;\n    using MinerWarsMath;\n    \n    using Models;\n    using TransparentGeometry;\n    using UniversalLauncher;\n    using Utils;\n    using MinerWars.AppCode.Game.Entities.Prefabs;\n    using MinerWars.AppCode.Game.TransparentGeometry.Particles;\n    using MinerWars.AppCode.Game.Gameplay;\n    using MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\n    using SysUtils.Utils;\n    using MinerWars.AppCode.Game.Managers.Session;\n    using MinerWars.AppCode.Game.Entities.Ships.AI;\n    using MinerWars.AppCode.Game.Render;\n    using System.Diagnostics;\n\n    class MyMissile : MyAmmoBase\n    {\n        //  IMPORTANT: This class isn't realy inicialized by constructor, but by Start()\n        //  So don't initialize members here, do it in Start()\n        MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum m_missileType;\n\n        protected Vector3 m_predicatedPosition; //predicated position of the target\n        protected Vector3 m_targetVelocity; //velocity of the target\n\n\n        MyLight m_light;\n        MySoundCue? m_thrusterCue; //sound\n        protected MyEntity m_targetEntity; //locked target entity\n\n        protected Vector3 m_desiredVelocity; //velocity missile should achieve\n        protected float m_actualSpeed; //current speed of missile\n\n        protected float m_maxTrajectory; //max trajectory for missile\n\n#if DEBUG_MISSILE\n        List<Vector3> m_trailDebug = new List<Vector3>();\n#endif\n\n        protected float m_initTime = MyMissileConstants.MISSILE_INIT_TIME;\n        protected Vector3 m_initDir = MyMissileConstants.MISSILE_INIT_DIR;\n        protected float m_blendVelocities = MyMissileConstants.MISSILE_BLEND_VELOCITIES_IN_MILISECONDS;\n        protected float m_missileTimeout = MyMissileConstants.MISSILE_TIMEOUT;\n        protected float m_turnSpeed = 0;\n\n        MyParticleEffect m_smokeEffect;\n        MyExplosionTypeEnum m_explosionType;\n        private MyEntity m_collidedEntity;\n        Vector3? m_collisionPoint;\n        int m_missileTargetUpdate;\n        static BoundingFrustum m_visualFrustum = new BoundingFrustum(Matrix.Identity);\n        static List<MyEntity> m_targetEntities = new List<MyEntity>(16);\n\n        public static Predicate<MyEntity> CanBeTargetedPredicate = new Predicate<MyEntity>(CanBeTargeted);\n        \n        public MyMissile()\n        {\n            m_collidedEntity_OnClose = collidedEntity_OnClose;\n        }\n\n        public static bool CanBeTargeted(MyEntity entity)\n        {\n            return (entity is MySmallShip || entity is MyPrefabLargeWeapon);\n        }\n\n        public bool CanTarget(MyEntity entity)\n        {\n            return CanBeTargeted(entity) && (MyFactions.GetFactionsRelation(Faction, entity.Faction) == MyFactionRelationEnum.Enemy);\n        }\n\n        //  Parameter-less init - because guided missiles are stored in object pool\n        public virtual void Init()\n        {\n            Init(MyModelsEnum.Missile, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Missile_Basic);\n            // Missles will hit voxels if you fire near them and line bellow is commented, however position of missle start is corrected in MyMissleLauncherGun.CorrectPosition\n            //this.Physics.RigidBody.RaiseFlag(RigidBodyFlag.RBF_COLDET_THROUGH_VOXEL_TRIANGLES);\n            this.Physics.CollisionLayer = MyConstants.COLLISION_LAYER_MISSILE;\n            m_canByAffectedByExplosionForce = false;\n        }\n\n        //  This method realy initiates/starts the missile\n        //  IMPORTANT: Direction vector must be normalized!\n        public virtual void Start(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum type, Vector3 position, Vector3 initialVelocity, Vector3 direction, Vector3 relativePos, MyEntity minerShip, MyEntity target, float customMaxDistance, bool isDummy, bool isLightWeight)\n        {\n            m_ammoProperties = MyAmmoConstants.GetAmmoProperties(type);\n            m_missileType = type;\n            m_isExploded = false;\n            m_collidedEntity = null;\n            m_collisionPoint = null;\n            m_maxTrajectory = customMaxDistance > 0 ? customMaxDistance : m_ammoProperties.MaxTrajectory;\n            IsDummy = isDummy;\n            Faction = minerShip.Faction;\n\n            Vector3? correctedDirection = null;\n            if (MyGameplayConstants.GameplayDifficultyProfile.EnableAimCorrection)\n            {\n                if (minerShip == MinerWars.AppCode.Game.Managers.Session.MySession.PlayerShip)\n                {\n                    correctedDirection = MyEntities.GetDirectionFromStartPointToHitPointOfNearestObject(minerShip, position, m_ammoProperties.MaxTrajectory);\n                }\n            }\n\n            if (correctedDirection != null)\n                direction = correctedDirection.Value;\n\n            base.Start(position, initialVelocity, direction, 0, minerShip);\n\n            if (correctedDirection != null) //override the base class behaviour, update the missile direction\n            {\n                Matrix ammoWorld = minerShip.WorldMatrix;\n                ammoWorld.Translation = position;\n                ammoWorld.Forward = correctedDirection.Value;\n\n                SetWorldMatrix(ammoWorld);\n            }\n\n            switch (m_missileType)\n            {\n                //just going forward (deprecated)\n                case MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Missile_Basic:\n                    m_initTime = MyMissileConstants.MISSILE_INIT_TIME;\n                    m_initDir = MyMissileConstants.MISSILE_INIT_DIR;\n                    m_blendVelocities = MyMissileConstants.MISSILE_BLEND_VELOCITIES_IN_MILISECONDS;\n                    m_missileTimeout = MyMissileConstants.MISSILE_TIMEOUT;\n                    m_explosionType = MyExplosionTypeEnum.MISSILE_EXPLOSION;\n                    break;\n                case MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Missile_BioChem:\n                    m_initTime = MyMissileConstants.MISSILE_INIT_TIME;\n                    m_initDir = MyMissileConstants.MISSILE_INIT_DIR;\n                    m_blendVelocities = MyMissileConstants.MISSILE_BLEND_VELOCITIES_IN_MILISECONDS;\n                    m_missileTimeout = MyMissileConstants.MISSILE_TIMEOUT;\n                    m_explosionType = MyExplosionTypeEnum.BIOCHEM_EXPLOSION;\n                    break;\n                case MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Missile_EMP:\n                    m_initTime = MyMissileConstants.MISSILE_INIT_TIME;\n                    m_initDir = MyMissileConstants.MISSILE_INIT_DIR;\n                    m_blendVelocities = MyMissileConstants.MISSILE_BLEND_VELOCITIES_IN_MILISECONDS;\n                    m_missileTimeout = MyMissileConstants.MISSILE_TIMEOUT;\n                    m_explosionType = MyExplosionTypeEnum.EMP_EXPLOSION;\n                    break;\n\n                //Missile is guided to the nearest enemy in the radius\n                case MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Guided_Missile_Engine_Detection:\n\n                //Missile is guided to the closest enemy in the visible spot\n                case MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Guided_Missile_Visual_Detection:\n\n                //Missile is guided to actual selected target by smallship radar\n                case MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Guided_Missile_Radar_Detection:\n                    m_initDir.X = 5.0f * MathHelper.Clamp(relativePos.X, -1, 1);\n                    m_blendVelocities = MyGuidedMissileConstants.MISSILE_BLEND_VELOCITIES_IN_MILISECONDS;\n                    m_missileTimeout = MyGuidedMissileConstants.MISSILE_TIMEOUT;\n                    m_turnSpeed = MyGuidedMissileConstants.MISSILE_TURN_SPEED;\n                    m_explosionType = MyExplosionTypeEnum.MISSILE_EXPLOSION;\n                    GuidedInMultiplayer = true;\n                    break;\n                default:\n                    throw new NotImplementedException();\n            }\n\n\n            UpdateTarget(target);\n\n\n            if (!isLightWeight)\n            {\n                //  Play missile thrust cue (looping)\n                m_thrusterCue = MyAudio.AddCue3D(m_ammoProperties.ShotSound, GetPosition(), WorldMatrix.Forward, WorldMatrix.Up, m_initialVelocity);\n\n                m_light = MyLights.AddLight();\n                if (m_light != null)\n                {\n                    m_light.Start(MyLight.LightTypeEnum.PointLight, GetPosition(), MyMissileHelperUtil.GetMissileLightColor(), 1, MyMissileConstants.MISSILE_LIGHT_RANGE);\n                }\n            }\n\n#if DEBUG_MISSILE\n            m_trailDebug.Clear();\n#endif\n\n            if (m_missileType == MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Missile_Basic)\n            {\n                /*\n                MyParticleEffect startEffect = MyParticlesManager.CreateParticleEffect((int)MyParticleEffectsIDEnum.Smoke_MissileStart);\n                startEffect.WorldMatrix = WorldMatrix;\n                 */\n                m_smokeEffect = MyParticlesManager.CreateParticleEffect((int)MyParticleEffectsIDEnum.Smoke_Missile);\n                m_smokeEffect.WorldMatrix = WorldMatrix;\n                m_smokeEffect.AutoDelete = false;\n            }\n        }\n\n        void UpdateTarget(MyEntity newTarget)\n        {\n            if (MySession.PlayerShip.EntityId != null && m_ownerEntityID.NumericValue == MySession.PlayerShip.EntityId.Value.NumericValue)\n            {\n                if (m_targetEntity != null)\n                    MySession.PlayerShip.SideTargets.Remove(m_targetEntity);\n\n                if (newTarget != null)\n                    MySession.PlayerShip.SideTargets.Add(newTarget);\n            }\n\n            m_targetEntity = newTarget;\n        }\n\n\n        /// <summary>\n        /// Updates resource.\n        /// </summary>\n        public override void UpdateBeforeSimulation()\n        {\n            try\n            {\n                MyRender.GetRenderProfiler().StartProfilingBlock(\"MyMissile.UpdateBeforeSimulation\");\n\n                //Large ship weapons wont make bots curious\n                if ((!(OwnerEntity is MyLargeShipMissileLauncherBarrel)) && MyMwcUtils.HasValidLength(this.WorldMatrix.Translation - m_previousPosition))\n                {\n                    MyLine line = new MyLine(this.WorldMatrix.Translation, m_previousPosition);\n                    MyDangerZones.Instance.Notify(line, OwnerEntity);\n                }\n\n                if (m_isExploded)\n                {\n                    //  Create explosion\n                    MyExplosion newExplosion = MyExplosions.AddExplosion();\n                    if (newExplosion != null)\n                    {\n                        float radius = m_ammoProperties.ExplosionRadius;\n\n                        // Explicitly on Marek's request (ticket 4740)\n                        bool amplifyRadius = m_collidedEntity != null ? MyFactions.GetFactionsRelation(m_collidedEntity.Faction, Faction) != MyFactionRelationEnum.Friend : false;\n                        if (amplifyRadius)\n                        {\n                            radius *= 2;\n                        }\n\n                        BoundingSphere explosionSphere = new BoundingSphere(m_collisionPoint.HasValue ? m_collisionPoint.Value : GetPosition(), radius);\n\n                        //  Call main explosion starter\n                        MyExplosionInfo info = new MyExplosionInfo()\n                        {\n                            PlayerDamage = m_ammoProperties.HealthDamage,\n                            Damage = m_ammoProperties.ShipDamage,\n                            EmpDamage = m_ammoProperties.EMPDamage,\n                            ExplosionType = m_explosionType,\n                            ExplosionSphere = explosionSphere,\n                            LifespanMiliseconds = MyExplosionsConstants.EXPLOSION_LIFESPAN,\n                            ExplosionForceDirection = MyExplosionForceDirection.EXPLOSION,\n                            GroupMask = Physics.GroupMask,\n                            CascadeLevel = CascadedExplosionLevel,\n                            HitEntity = m_collidedEntity,\n                            ParticleScale = 1.5f,\n                            OwnerEntity = this.OwnerEntity,\n                            Direction = WorldMatrix.Forward,\n                            VoxelExplosionCenter = explosionSphere.Center + m_ammoProperties.ExplosionRadius * WorldMatrix.Forward * 0.5f,\n                            ExplosionFlags = MyExplosionFlags.AFFECT_VOXELS | MyExplosionFlags.APPLY_FORCE_AND_DAMAGE | MyExplosionFlags.CREATE_DEBRIS | MyExplosionFlags.CREATE_DECALS | MyExplosionFlags.CREATE_PARTICLE_EFFECT,\n                            VoxelCutoutScale = amplifyRadius ? 0.5f : 1.0f,\n                            PlaySound = true,\n                        };\n\n                        newExplosion.Start(ref info);\n                    }\n\n                    if (m_collidedEntity != null && !m_collidedEntity.IsExploded())\n                    {\n                        m_collidedEntity.Physics.AddForce(\n                            MyPhysicsForceType.APPLY_WORLD_IMPULSE_AND_WORLD_ANGULAR_IMPULSE,\n                            WorldMatrix.Forward * MyMissileConstants.HIT_STRENGTH_IMPULSE,\n                            GetPosition() + MyMwcUtils.GetRandomVector3Normalized() * 2,\n                            MyMissileConstants.HIT_STRENGTH_IMPULSE * MyMwcUtils.GetRandomVector3Normalized());\n                        m_collidedEntity.OnClose -= m_collidedEntity_OnClose;\n                    }\n\n                    MarkForClose();\n\n                    return;\n                }\n\n                bool firstTargetting = m_elapsedMiliseconds == 0;\n\n                base.UpdateBeforeSimulation();\n\n                m_missileTargetUpdate += MyConstants.PHYSICS_STEP_SIZE_IN_MILLISECONDS;\n\n                if (m_missileTargetUpdate >= MyGuidedMissileConstants.MISSILE_TARGET_UPDATE_INTERVAL_IN_MS || firstTargetting)\n                {\n                    m_missileTargetUpdate = 0;\n\n                    switch (m_missileType)\n                    {\n                        case MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Guided_Missile_Radar_Detection:\n                            {\n                                MySmallShip targetShip = m_targetEntity as MySmallShip;\n                                if (targetShip != null && targetShip.IsRadarJammed())\n                                {\n                                    m_targetEntity = null;\n                                }\n                            }\n                            break;\n                        case MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Guided_Missile_Engine_Detection:\n                            {\n                                m_targetEntities.Clear();\n\n                                Matrix proj = Matrix.CreateOrthographic(MyGuidedMissileConstants.ENGINE_GUIDED_MISSILE_RADIUS, MyGuidedMissileConstants.ENGINE_GUIDED_MISSILE_RADIUS, 0, 1000);\n                                Matrix view = Matrix.CreateLookAt(GetPosition(), GetPosition() + WorldMatrix.Forward, WorldMatrix.Up);\n                                m_visualFrustum.Matrix = view * proj;\n\n                                MyEntities.GetAllIntersectionWithBoundingFrustum(ref m_visualFrustum, m_targetEntities);\n\n                                if (m_targetEntities.Contains(m_targetEntity))\n                                    break;\n\n                                MyEntity target = null;\n                                float closestToMissileDirection = float.MaxValue;\n\n                                foreach (MyEntity entity in m_targetEntities)\n                                {\n                                    if (CanTarget(entity))\n                                    {\n                                        MySmallShip targetShip = entity as MySmallShip;\n                                        if (targetShip != null)\n                                        {\n                                            if ((targetShip.IsEngineTurnedOff()))\n                                                continue;\n                                        }\n\n                                        Vector3 targetPos = entity.GetPosition();\n                                        Vector3 missilePos = this.GetPosition();\n                                        Vector3 missilePosEnd = this.GetPosition() + this.WorldMatrix.Forward * 10000;\n                                        Vector3 closestPos = MyUtils.GetClosestPointOnLine(ref missilePos, ref missilePosEnd, ref targetPos);\n\n                                        float distance = Vector3.Distance(closestPos, targetPos);\n                                        if (distance < closestToMissileDirection)\n                                        {\n                                            closestToMissileDirection = distance;\n                                            target = entity;\n                                        }\n                                    }\n                                }\n\n                                UpdateTarget(target);\n                            }\n                            break;\n\n                        case MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Guided_Missile_Visual_Detection:\n                            {\n                                Matrix projectionMatrix = Matrix.CreatePerspectiveFieldOfView(MathHelper.ToRadians(MyGuidedMissileConstants.VISUAL_GUIDED_MISSILE_FOV), 1, 10, MyGuidedMissileConstants.VISUAL_GUIDED_MISSILE_RANGE);\n                                m_visualFrustum.Matrix = Matrix.Invert(WorldMatrix) * projectionMatrix;\n\n                                m_targetEntities.Clear();\n                                MyEntities.GetAllIntersectionWithBoundingFrustum(ref m_visualFrustum, m_targetEntities);\n                                int testsLimit = 8;\n\n                                if (m_targetEntities.Contains(m_targetEntity))\n                                    break;\n\n                                MyEntity target = null; //looks better if missile gets \"lost\"\n\n                                float closestToMissileDirection = float.MaxValue;\n\n                                foreach (MyEntity entity in m_targetEntities)\n                                {\n                                    if (!CanTarget(entity))\n                                        continue;\n\n                                    if (testsLimit-- == 0)\n                                        break;\n\n                                    if (MyEnemyTargeting.CanSee(this, entity) == null)\n                                    {\n                                        Vector3 targetPos = entity.GetPosition();\n                                        Vector3 missilePos = this.GetPosition();\n                                        Vector3 missilePosEnd = this.GetPosition() + this.WorldMatrix.Forward * 10000;\n                                        Vector3 closestPos = MyUtils.GetClosestPointOnLine(ref missilePos, ref missilePosEnd, ref targetPos);\n\n                                        float distance = Vector3.Distance(closestPos, targetPos);\n                                        if (distance < closestToMissileDirection)\n                                        {\n                                            closestToMissileDirection = distance;\n                                            target = entity;\n                                        }\n                                    }\n                                }\n\n                                UpdateTarget(target);\n                            }\n                            break;\n                    }\n                }\n\n                if ((m_initTime - m_elapsedMiliseconds) > 0)\n                {   //simulating missile launch and engine ignition\n                    MyEntity owner = OwnerEntity;\n                    if (owner != null)\n                    {\n                        Vector3 transformedInitDir = Vector3.TransformNormal(m_initDir, owner.WorldMatrix); //\n                        Vector3 initialVelocity = Vector3.Zero;\n                        if (owner.Physics != null)\n                        {\n                            initialVelocity = owner.Physics.LinearVelocity;\n                        }\n                        Physics.LinearVelocity = transformedInitDir * m_ammoProperties.InitialSpeed + initialVelocity;\n                    }\n                }\n                else\n                {\n                    //  This will help blend \"initial velocity\" and \"thrust velocity\" so at the beginning missile is powered by initiatal velocity only, but later \n                    float velocityBlend = MathHelper.Clamp((float)(m_elapsedMiliseconds - m_initTime) / m_blendVelocities, 0, 1);\n\n                    if (velocityBlend == 1.0f)\n                    {\n                        m_actualSpeed = m_ammoProperties.DesiredSpeed;\n                    }\n                    else\n                    {\n                        float initialSpeed = 0.0f;\n                        MyEntity owner = OwnerEntity;\n                        if (owner != null)\n                        {\n                            if (owner.Physics != null)\n                            {\n                                initialSpeed = owner.Physics.LinearVelocity.Length();\n                            }\n                        }\n\n                        m_actualSpeed = velocityBlend * m_ammoProperties.DesiredSpeed + ((1.0f - velocityBlend) * (m_ammoProperties.InitialSpeed + initialSpeed));\n\n                        if (m_missileType != MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Missile_Basic && m_smokeEffect == null)\n                        {\n                            // if (MyCamera.GetDistanceWithFOV(GetPosition()) < 150)\n                            {\n                                /*\n                                MyParticleEffect startEffect = MyParticlesManager.CreateParticleEffect((int)MyParticleEffectsIDEnum.Smoke_MissileStart);\n                                startEffect.WorldMatrix = WorldMatrix;\n                                 */\n                                m_smokeEffect = MyParticlesManager.CreateParticleEffect((int)MyParticleEffectsIDEnum.Smoke_Missile);\n                                m_smokeEffect.WorldMatrix = WorldMatrix;\n                                m_smokeEffect.AutoDelete = false;\n                            }\n                        }\n                    }\n\n                    m_desiredVelocity = GetDesiredVelocity(m_targetEntity);\n\n                    Physics.LinearVelocity = m_desiredVelocity * m_actualSpeed * 1.0f;\n                }\n\n                Physics.AngularVelocity = Vector3.Zero;\n\n                if ((m_elapsedMiliseconds > m_missileTimeout) || (Vector3.Distance(GetPosition(), m_origin) >= m_maxTrajectory))\n                {\n                    Explode();\n                    return;\n                }\n\n\n                if (m_smokeEffect != null)\n                {\n                    Matrix smokeMatrix = Matrix.CreateWorld(WorldMatrix.Translation - 0.5f * WorldMatrix.Forward, WorldMatrix.Forward, WorldMatrix.Up);\n                    m_smokeEffect.WorldMatrix = smokeMatrix;\n                }\n\n                if (m_targetEntity != null)\n                {\n                    if (m_targetEntity.Physics != null)\n                        m_targetVelocity = m_targetEntity.Physics.LinearVelocity;\n                    else\n                        m_targetVelocity = Vector3.Zero;\n                }\n            }\n            finally\n            {\n                MyRender.GetRenderProfiler().EndProfilingBlock();\n            }\n        }\n\n        /// <summary>\n        /// Called when [world position changed].\n        /// </summary>\n        /// <param name=\"source\">The source object that caused this event.</param>\n        public override void OnWorldPositionChanged(object source)\n        {\n            base.OnWorldPositionChanged(source);\n\n            if (Physics != null && m_thrusterCue != null)\n            {\n                //  Update thruster cue/sound\n                MyAudio.UpdateCuePosition(m_thrusterCue, GetPosition(), WorldMatrix.Forward, WorldMatrix.Up,\n                                          Physics.LinearVelocity);\n            }\n\n            //  Update light position\n            if (m_light != null)\n            {\n                m_light.SetPosition(GetPosition());\n                m_light.Color = MyMissileHelperUtil.GetMissileLightColor();\n                m_light.Range = MyMissileConstants.MISSILE_LIGHT_RANGE;\n            }\n        }\n\n        //  Kills this missile. Must be called at her end (after explosion or timeout)\n        //  This method must be called when this object dies or is removed\n        //  E.g. it removes lights, sounds, etc\n        public override void Close()\n        {\n            UpdateTarget(null);\n\n            base.Close();\n\n            this.Physics.Clear();\n\n            MyMissiles.Remove(this);\n\n            if (m_collidedEntity != null)\n            {\n                m_collidedEntity.OnClose -= m_collidedEntity_OnClose;\n                m_collidedEntity = null;\n            }\n\n            if (m_smokeEffect != null)\n            {\n                m_smokeEffect.Stop();\n                m_smokeEffect = null;\n            }\n\n            //  Free the light\n            if (m_light != null)\n            {\n                MyLights.RemoveLight(m_light);\n                m_light = null;\n            }\n\n            //  Stop thruster cue\n            if ((m_thrusterCue != null) && (m_thrusterCue.Value.IsPlaying == true))\n            {\n                m_thrusterCue.Value.Stop(SharpDX.XACT3.StopFlags.Immediate);\n            }\n            m_thrusterCue = null;\n        }\n\n        public override bool Draw(MyRenderObject renderObject)\n        {\n            if (base.Draw(renderObject) == false) return false;\n\n            //  Draw flare at the end or back of the missile\n            //  Color and range is same as for missile's dynamic light\n            if (m_light != null)\n            {\n                if ((m_initTime - m_elapsedMiliseconds) <= 0)\n                {\n                    MyTransparentGeometry.AddPointBillboard(MyTransparentMaterialEnum.ReflectorGlareAlphaBlended, m_light.Color,\n                        WorldMatrix.Translation - 1.1f * WorldMatrix.Forward * ModelLod0.BoundingSphere.Radius, m_light.Range * 0.02f, 0);\n                }\n                else\n                {\n                    float delta = m_elapsedMiliseconds / m_initTime;\n\n                    MyTransparentGeometry.AddPointBillboard(MyTransparentMaterialEnum.ReflectorGlareAlphaBlended, m_light.Color,\n                        WorldMatrix.Translation - WorldMatrix.Forward * ModelLod0.BoundingSphere.Radius, m_light.Range * 0.005f * delta * delta, 0);\n                }\n            }\n            return true;\n        }\n\n        public override bool DebugDraw()\n        {\n            /*\n        m_targetEntities.Clear();\n\n        Matrix proj = Matrix.CreateOrthographic(300, 300, 0, 1000);\n        Matrix view = Matrix.CreateLookAt(GetPosition(), GetPosition() + WorldMatrix.Forward, WorldMatrix.Up);\n        m_visualFrustum.Matrix = view * proj;\n\n        //MyEntities.GetIntersectionWithSphere(ref sphere, this, OwnerEntity, false, false, ref m_targetEntities);\n        MyEntities.GetAllIntersectionWithBoundingFrustum(ref m_visualFrustum, m_targetEntities);\n           \n        MyEntity target = null;\n        float closestToMissileDirection = float.MaxValue;\n\n        foreach (MyEntity entity in m_targetEntities)\n        {\n            if (CanTarget(entity))\n            {\n                MySmallShip targetShip = entity as MySmallShip;\n                if (targetShip != null)\n                {\n                    if ((targetShip.IsEngineTurnedOff()))\n                        continue;\n                }\n\n                Vector3 targetPos = entity.GetPosition();\n                Vector3 missilePos = this.GetPosition();\n                Vector3 missilePosEnd = this.GetPosition() + this.WorldMatrix.Forward * 10000;\n                Vector3 closestPos = MyUtils.GetClosestPointOnLine(ref missilePos, ref missilePosEnd, ref targetPos);\n\n                float distance = Vector3.Distance(closestPos, targetPos);\n\n                MyDebugDraw.DrawText(targetPos, new System.Text.StringBuilder(distance.ToString()), Color.White, 1);\n\n                if (distance < closestToMissileDirection)\n                {\n                    closestToMissileDirection = distance;\n                    target = entity;\n                }\n            }\n        }\n\n          /*\n        MyEntity target = null; //looks better if missile gets \"lost\"\n\n        float closestToMissileDirection = float.MaxValue;\n\n        foreach (MyEntity entity in m_targetEntities)\n        {\n            if (!CanTarget(entity))\n                continue;\n\n            if (MyEnemyTargeting.CanSee(this, entity) == null)\n            {\n                Vector3 targetPos = entity.GetPosition();\n                Vector3 missilePos = this.GetPosition();\n                Vector3 missilePosEnd = this.GetPosition() + this.WorldMatrix.Forward * 10000;\n                Vector3 closestPos = MyUtils.GetClosestPointOnLine(ref missilePos, ref missilePosEnd, ref targetPos);\n\n                float distance = Vector3.Distance(closestPos, targetPos);\n\n\n                MyDebugDraw.DrawText(targetPos, new System.Text.StringBuilder(distance.ToString()), Color.White, 1);\n\n                if (distance < closestToMissileDirection)\n                {\n                    closestToMissileDirection = distance;\n                    target = entity;\n                }\n            }\n        }\n            */\n\n\n            return base.DebugDraw();\n            //MyDebugDraw.DrawBoundingFrustum(m_visualFrustum, Color.White);\n            return true;\n            //  bool retVal = base.DebugDraw();\n            //if (!retVal)\n            //  return false;\n\n            //Matrix tempInvertedWorldMatrix = Matrix.Invert(Body.CollisionSkin.GetPrimitiveLocal(0).Transform.Orientation * Physics.Matrix);\n\n            //  Transform world's Y axis to body space\n            //Vector3 forward = MyUtils.GetTransformNormal(WorldMatrix.Forward, ref tempInvertedWorldMatrix);\n\n#if DEBUG_MISSILE\n            if (m_targetShip != null)\n            {\n                //Vector3 torque = MyUtils.GetTransformNormal(MyMwcUtils.Normalize(m_targetEntity.WorldMatrix.Translation - WorldMatrix.Translation), ref tempInvertedWorldMatrix);\n                MyDebugDraw.DrawLine3D(WorldMatrix.Translation, WorldMatrix.Translation + (m_targetShip.WorldMatrix.Translation - WorldMatrix.Translation), Color.Pink, Color.Pink);\n\n                MyDebugDraw.DrawLine3D(WorldMatrix.Translation, WorldMatrix.Translation + (m_predicatedPosition - WorldMatrix.Translation), Color.Yellow, Color.Yellow);\n\n                \n            }\n#endif\n            Vector3 pos = WorldMatrix.Translation;\n            MyDebugDraw.DrawSphereWireframe(pos, WorldVolume.Radius, Vector3.One, 1);\n            //Matrix matrix = Physics.Matrix;\n\n            /*\nMyDebugDraw.DrawLine3D(pos, pos + matrix.Right * 1000, Color.Red, Color.Red);\nMyDebugDraw.DrawLine3D(pos, pos + matrix.Up * 1000, Color.Green, Color.Green);\nMyDebugDraw.DrawLine3D(pos, pos + matrix.Forward * 1000, Color.Blue, Color.Blue);\n          */\n            /*\n            pos = WorldMatrix.Translation;\n            matrix = Physics.Matrix;\n            matrix.Right *= m_targetsRelativePosition.X;\n            matrix.Up *= m_targetsRelativePosition.Y;\n            matrix.Forward *= m_targetsRelativePosition.Z;\n\n            MyDebugDraw.DrawLine3D(pos, pos + matrix.Right * 1000, Color.Red, Color.Red);\n            MyDebugDraw.DrawLine3D(pos, pos + matrix.Up * 1000, Color.Green, Color.Green);\n            MyDebugDraw.DrawLine3D(pos, pos + matrix.Forward * 1000, Color.Blue, Color.Blue);\n              */\n\n#if DEBUG_MISSILE\n            for (int i = 0; i < m_trailDebug.Count - 1; i++)\n            {\n                MyDebugDraw.DrawLine3D(m_trailDebug[i], m_trailDebug[i + 1] , Color.White, Color.White);\n            }\n#endif\n\n            //if (this.Physics.CollisionSkin.Collisions.Count > 0)\n            //{\n            //    MyDebugDraw.DrawLine3D(GetPosition(), GetPosition() + (Vector3.Negate(this.Physics.CollisionSkin.Collisions[0].DirToBody0) * 1000), Color.White, Color.White);\n            //}\n\n            return true;\n        }\n\n        private Vector3? DetectDecoys()\n        {\n            var bBox = new BoundingBox(GetPosition() - new Vector3(.5f * MyDecoyFlareConstants.DECOY_ATTRACT_RADIUS),\n                                       GetPosition() + new Vector3(.5f * MyDecoyFlareConstants.DECOY_ATTRACT_RADIUS));\n            Vector3? result = null;\n            var elements = MyEntities.GetElementsInBox(ref bBox);\n\n            foreach (var rbElement in elements)\n            {\n                var rigidBody = rbElement.GetRigidBody();\n                if (rigidBody == null) continue;\n\n                var decoy = ((MyPhysicsBody)rigidBody.m_UserData).Entity as MyDecoyFlare;\n                if (decoy == null) continue;\n\n                //if (MyFactions.GetFactionsRelation(this.OwnerEntity.Faction, decoy.OwnerEntity.Faction) != MyFactionRelationEnum.Enemy)\n                //    continue; // only attracts enemy missiles\n\n                var decoyDistanceSquared = (decoy.GetPosition() - this.GetPosition()).LengthSquared();\n                if (decoyDistanceSquared < MyDecoyFlareConstants.DECOY_ATTRACT_RADIUS * MyDecoyFlareConstants.DECOY_ATTRACT_RADIUS)\n                {\n                    result = decoy.GetPosition();\n                    break;\n                }\n            }\n            elements.Clear();\n            return result;\n        }\n\n\n        protected Vector3 GetDesiredVelocity(MyEntity targetEntity)\n        {\n            switch (m_missileType)\n            {\n                case MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Missile_Basic:\n                case MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Missile_BioChem:\n                case MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Missile_EMP:\n                    //fly straight ahead\n                    return WorldMatrix.Forward;\n                case MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Guided_Missile_Engine_Detection:\n                //Seems to be buggy when dont hit\n                //return GetPredictedVelocityToTargetShipPrecise(targetShip);\n                //return WorldMatrix.Forward;\n                case MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Guided_Missile_Visual_Detection:\n                case MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Guided_Missile_Radar_Detection:\n                    return GetPredictedVelocityToTargetEntity(targetEntity);\n\n                default:\n                    throw new ArgumentOutOfRangeException();\n            }\n        }\n\n        private bool IsInMyHemisphere(MyEntity targetEntity)\n        {\n            var direction = targetEntity.GetPosition() - GetPosition();\n            direction.Normalize();\n            var dot = Vector3.Dot(direction, WorldMatrix.Forward);\n            return dot > 0.5f;\n        }\n\n        /// <summary>\n        /// Simple prediction, not used\n        /// </summary>\n        /// <param name=\"targetEntity\"></param>\n        /// <returns></returns>\n        protected Vector3 GetPredictedVelocityToTargetEntity(MyEntity targetEntity)\n        {\n            Vector3? targetDir = null;\n\n            Vector3? decoyPosition = DetectDecoys();\n            if (decoyPosition.HasValue)\n            {\n                var decoyToMissile = decoyPosition.Value - GetPosition();\n                if (decoyToMissile.LengthSquared() < MyDecoyFlareConstants.DECOY_KILL_RADIUS * MyDecoyFlareConstants.DECOY_KILL_RADIUS)\n                {\n                    Explode();\n                    return Vector3.Zero;\n                }\n\n                targetDir = decoyToMissile;\n                targetDir = MyMwcUtils.Normalize(targetDir.Value);\n            }\n            else if (targetEntity != null)\n            {\n                //calculate position to navigate missile to\n                targetDir = targetEntity.WorldMatrix.Translation - WorldMatrix.Translation; //simple solution\n\n                float distance = (this.WorldMatrix.Translation - targetEntity.WorldMatrix.Translation).Length();\n                float time = distance / m_actualSpeed;\n\n                if (time > MyGuidedMissileConstants.MISSILE_PREDICATION_TIME_TRESHOLD)\n                {\n                    m_predicatedPosition = time * m_targetVelocity + targetEntity.WorldMatrix.Translation;\n                    targetDir = m_predicatedPosition - WorldMatrix.Translation; //simple solution\n                }\n\n                targetDir = MyMwcUtils.Normalize(targetDir.Value);\n            }\n\n            if (targetDir.HasValue)\n            {\n                //create new navigation direction\n                Vector3 actualDir = WorldMatrix.Forward;\n\n                Vector3 rotationAxis = Vector3.Cross(actualDir, targetDir.Value);\n                Matrix rotationMatrix = Matrix.CreateFromAxisAngle(rotationAxis, m_turnSpeed * MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS);\n                rotationMatrix.Right = MyMwcUtils.Normalize(rotationMatrix.Right);\n                rotationMatrix.Up = MyMwcUtils.Normalize(rotationMatrix.Up);\n                rotationMatrix.Forward = MyMwcUtils.Normalize(rotationMatrix.Forward);\n\n                Matrix newBodyMatrix = WorldMatrix * rotationMatrix;\n\n                newBodyMatrix.Translation = WorldMatrix.Translation;\n\n                SetWorldMatrix(newBodyMatrix);\n\n                return newBodyMatrix.Forward;\n            }\n\n            //no target ship, fly straight ahead\n            return WorldMatrix.Forward;\n        }\n\n        /// <summary>\n        /// Advanced prediction based on current target and missile velocity\n        /// </summary>\n        /// <param name=\"targetShip\"></param>\n        /// <returns></returns>\n        protected Vector3 GetPredictedVelocityToTargetShipPrecise(MySmallShip targetShip)\n        { //create new dir navigated to target ship.\n            if (targetShip != null)\n            {\n                //calculate position to navigate missile to\n                Vector3 idealDir = targetShip.WorldMatrix.Translation - WorldMatrix.Translation; //simple solution\n\n                float distance = (this.WorldMatrix.Translation - targetShip.WorldMatrix.Translation).Length();\n                float time = distance / m_actualSpeed;\n\n                if (time > MyGuidedMissileConstants.MISSILE_PREDICATION_TIME_TRESHOLD)\n                {\n                    m_predicatedPosition = time * m_targetVelocity + targetShip.WorldMatrix.Translation;\n                    idealDir = m_predicatedPosition - WorldMatrix.Translation; //simple solution\n                }\n\n                idealDir = MyMwcUtils.Normalize(idealDir);\n\n\n                Vector3 targetVelocity = targetShip.Physics.LinearVelocity;\n                Vector3 targetPosition = targetShip.WorldMatrix.Translation;\n                Vector3 position = this.WorldMatrix.Translation;\n                float speed = this.Physics.LinearVelocity.Length();\n\n                //These variables are named by linear equation constants. Solution\n                //of the equation is the time when missile and target collide\n                float a = targetVelocity.LengthSquared() - speed * speed;\n                float b = 2 * (Vector3.Dot(targetVelocity, targetPosition) - Vector3.Dot(targetVelocity, position));\n                float c = (position.LengthSquared() + targetPosition.LengthSquared() - 2 * (Vector3.Dot(targetPosition, position)));\n                float d = (b * b) - (4 * a * c);\n                if (d >= 0)\n                    d = (float)Math.Sqrt(d);\n                else\n                {\n                    return idealDir;\n                }\n\n                //We test both solutions and find better one\n                float t = (-b + d) / (2 * a);\n                Vector3 v1 = (targetVelocity * t + targetPosition - position) / (speed * t);\n                Vector3 pr1 = this.Physics.LinearVelocity * t;\n                v1 = MyMwcUtils.Normalize(v1);\n                t = (-b - d) / (2 * a);\n                Vector3 v2 = (targetVelocity * t + targetPosition - position) / (speed * t);\n                Vector3 pr2 = this.Physics.LinearVelocity * t;\n                v2 = MyMwcUtils.Normalize(v2);\n\n                float dot1 = Vector3.Dot(this.WorldMatrix.Forward, v1);\n                float dot2 = Vector3.Dot(this.WorldMatrix.Forward, v2);\n\n                //Which solution is closer to current missile dir?\n                if ((dot1 - 1) * (dot1 - 1) < (dot2 - 1) * (dot2 - 1))\n                {\n                    idealDir = v1;\n                    m_predicatedPosition = pr1 + this.GetPosition();\n                }\n                else\n                {\n                    idealDir = v2;\n                    m_predicatedPosition = pr2 + this.GetPosition();\n                }\n\n                //create new navigation direction\n                Vector3 actualDir = WorldMatrix.Forward;\n\n                Vector3 rotationAxis = Vector3.Cross(actualDir, idealDir);\n                Matrix rotationMatrix = Matrix.CreateFromAxisAngle(rotationAxis, m_turnSpeed * MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS);\n                rotationMatrix.Right = MyMwcUtils.Normalize(rotationMatrix.Right);\n                rotationMatrix.Up = MyMwcUtils.Normalize(rotationMatrix.Up);\n                rotationMatrix.Forward = MyMwcUtils.Normalize(rotationMatrix.Forward);\n\n                Matrix newBodyMatrix = WorldMatrix * rotationMatrix;\n\n                newBodyMatrix.Translation = WorldMatrix.Translation;\n\n                SetWorldMatrix(newBodyMatrix);\n\n                return newBodyMatrix.Forward;\n            }\n\n            //no target ship, fly straight ahead\n            return WorldMatrix.Forward;\n        }\n\n        /// <summary>\n        /// Called on some contact start with this entity.\n        /// </summary>\n        /// <param name=\"contactInfo\">The contact info.</param>\n        protected override void OnContactStart(MyContactEventInfo contactInfo)\n        {\n            MyEntity collidedEntity = contactInfo.GetOtherEntity(this);\n            Debug.Assert(!collidedEntity.Closed);\n\n            MyMissile missile = collidedEntity as MyMissile;\n\n            if ((missile != null) && (OwnerEntity == missile.OwnerEntity))\n            {   //We have hit another missile of ours\n                return;\n            }\n\n            if (collidedEntity is MySmallShip\n                && OwnerEntity == MySession.PlayerShip \n                && MySession.PlayerFriends.Contains(collidedEntity as MySmallShip))\n            {\n                //missiles wont hit out friends\n                return;\n            }\n\n            base.OnContactStart(contactInfo);\n\n            m_collidedEntity = collidedEntity;\n            m_collidedEntity.OnClose += m_collidedEntity_OnClose;\n            m_collisionPoint = contactInfo.m_ContactPoint;\n\n            if (this.OwnerEntity is MySmallShip && (MySmallShip)this.OwnerEntity == MySession.PlayerShip && m_collidedEntity is MyStaticAsteroid && !m_collidedEntity.IsDestructible)\n            {\n                HUD.MyHud.ShowIndestructableAsteroidNotification();\n            }\n\n            Explode();\n        }\n\n        public Action<MyEntity> m_collidedEntity_OnClose;\n        void collidedEntity_OnClose(MyEntity obj)\n        {\n            m_collidedEntity = null;\n            obj.OnClose -= m_collidedEntity_OnClose;\n        }\n\n        public override void Explode()\n        {\n            base.Explode();\n\n            MyDangerZones.Instance.NotifyExplosion(WorldMatrix.Translation, m_ammoProperties.ExplosionRadius, OwnerEntity);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Weapons/Ammo/MyMissiles.cs",
    "content": "﻿using MinerWars.CommonLIB.AppCode.Generics;\n\nnamespace MinerWars.AppCode.Game.Entities.Weapons\n{\n    using System.Collections.Generic;\n    using MinerWarsMath;\n    using SysUtils.Utils;\n    using Utils;\n    using MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\n\n    static class MyMissiles\n    {\n        static MyObjectsPool<MyMissile> m_missiles = null;\n\n        public static void LoadData()\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyMissiles.LoadData\");\n\n            MyMwcLog.WriteLine(\"MyMissiles.LoadContent() - START\");\n            MyMwcLog.IncreaseIndent();\n\n            if (m_missiles == null)\n                m_missiles = new MyObjectsPool<MyMissile>(MyMissileConstants.MAX_MISSILES_COUNT);\n            m_missiles.DeallocateAll();\n\n            foreach (LinkedListNode<MyMissile> item in m_missiles.GetPreallocatedItemsArray())\n            {\n                item.Value.Init();\n            }\n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyMissiles.LoadContent() - END\");\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n       \n        public static void UnloadData()\n        {\n        }\n\n        //  Add new missile to the list\n        public static MyMissile Add(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum type, Vector3 position, Vector3 initialVelocity, Vector3 direction, Vector3 relativePos, MyEntity ignoreMinerShip, MyEntity target, float customMaxDistance = 0, bool isDummy = false, bool isLightWeight = false)\n        {\n            MyMissile newMissile = m_missiles.Allocate();\n            if (newMissile != null)\n            {\n                newMissile.Start(type, position, initialVelocity, direction, relativePos, ignoreMinerShip, target, customMaxDistance, isDummy, isLightWeight);\n            }\n            return newMissile;\n        }\n\n        public static void Remove(MyMissile missile)\n        {\n            m_missiles.Deallocate(missile);\n        }\n\n        public static int GetActiveCount()\n        {\n            return m_missiles.GetActiveCount();\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Weapons/Ammo/UniversalLauncher/MyAsteroidKiller.cs",
    "content": "﻿using MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Physics;\nusing MinerWars.AppCode.Game.Physics;\nusing MinerWars.AppCode.Game.Explosions;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Models;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.AppCode.Game.Managers.Session;\n\nnamespace MinerWars.AppCode.Game.Entities.Weapons.UniversalLauncher\n{\n    class MyAsteroidKiller : MyAmmoBase, IUniversalLauncherShell\n    {\n        private MyEntity m_collidedEntity;\n\n        public void Init()\n        {\n            base.Init(MyModelsEnum.AsteroidKiller, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Asteroid_Killer, MyUniversalLauncherConstants.USE_SPHERE_PHYSICS);\n        }\n\n        public void Start(Vector3 position, Vector3 initialVelocity, Vector3 direction, float impulseMultiplier, MyEntity owner)\n        {\n            base.Start(position, initialVelocity, direction, impulseMultiplier, owner, MyTextsWrapper.Get(MyTextsWrapperEnum.AsteroidKillerHud));\n        }\n\n        protected override void OnContactStart(MyContactEventInfo contactInfo)\n        {\n            base.OnContactStart(contactInfo);\n            \n            m_collidedEntity = contactInfo.GetOtherEntity(this);\n\n            if (this.OwnerEntity is MySmallShip && (MySmallShip)this.OwnerEntity == MySession.PlayerShip && m_collidedEntity is MyStaticAsteroid && !m_collidedEntity.IsDestructible)\n            {\n                HUD.MyHud.ShowIndestructableAsteroidNotification();\n            }\n\n            Explode();\n        }\n\n        public override void Explode()\n        {\n            if (m_isExploded)\n                return;\n\n            base.Explode();\n\n            MarkForClose();\n\n            if (m_isExploded)\n            {\n                MyExplosion newExplosion = MyExplosions.AddExplosion();\n                if (newExplosion != null)\n                {\n                    newExplosion.Start(m_ammoProperties.HealthDamage, m_ammoProperties.ShipDamage, m_ammoProperties.EMPDamage, MyExplosionTypeEnum.BOMB_EXPLOSION, new BoundingSphere(GetPosition(), m_ammoProperties.ExplosionRadius), MyExplosionsConstants.EXPLOSION_LIFESPAN, CascadedExplosionLevel, ownerEntity: OwnerEntity, hitEntity: m_collidedEntity);\n                }\n            }\n        }\n\n        public override void Close()\n        {\n            base.Close();\n            MyUniversalLauncherShells.Remove(this, m_ownerEntityID.PlayerId);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Weapons/Ammo/UniversalLauncher/MyDecoyFlare.cs",
    "content": "﻿using MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.TransparentGeometry.Particles;\n\nnamespace MinerWars.AppCode.Game.Entities.Weapons.UniversalLauncher\n{\n    using System;\n    using System.Collections.Generic;\n    using App;\n    using CommonLIB.AppCode.Utils;\n    using MinerWarsMath;\n    using Models;\n    using Utils;\n    using CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\n    using Ships.AI;\n    using MinerWars.AppCode.Game.Audio;\n    \n\n    class MyDecoyFlare : MyAmmoBase, IUniversalLauncherShell\n    {\n        class FlareParticle\n        {\n            public Vector3 Position;\n            public Vector3 Dir;\n            public float FlyTime;\n            public float Life;\n            public MyParticleEffect ParticleEffect;\n        }\n\n        float m_startParticleTime;\n\n        readonly List<FlareParticle> m_particles = new List<FlareParticle>(MyDecoyFlareConstants.FLARES_COUNT);\n\n        bool m_flaresFired;\n\n        protected MySoundCue? m_flareLoop;\n        protected MySoundCue? m_flareDeploy;\n\n        public void Init()\n        {\n            base.Init(MyModelsEnum.DecoyFlare, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Decoy_Flare, MyUniversalLauncherConstants.USE_SPHERE_PHYSICS);\n\n            InitParticles();\n        }\n\n        private void InitParticles()\n        {\n            m_particles.Clear();\n            for (int i = 0; i < MyDecoyFlareConstants.FLARES_COUNT; i++)\n            {\n                m_particles.Add(new FlareParticle());\n            }\n\n            m_flaresFired = false;\n        }\n\n        public void Start(Vector3 position, Vector3 initialVelocity, Vector3 direction, float impulseMultiplier, MyEntity owner)\n        {\n            base.Start(position, initialVelocity, direction, impulseMultiplier, owner, MyTextsWrapper.Get(MyTextsWrapperEnum.DecoyFlareHud));\n\n            if (!TimeToActivate.HasValue)\n            {\n                TimeToActivate = MyDecoyFlareConstants.TIME_TO_ACTIVATE;\n            }\n        }\n\n        /// <summary>\n        /// Updates resource.\n        /// </summary>\n        public override void UpdateBeforeSimulation()\n        {\n            base.UpdateBeforeSimulation();\n\n            bool decoyLiving = true;\n\n            if (m_elapsedMiliseconds > TimeToActivate)\n            {\n                decoyLiving = UpdateParticles();\n                this.Physics.LinearVelocity = Vector3.Zero;\n\n                if (this.Visible)\n                {\n                    this.Visible = false;\n                    m_flareLoop = MyAudio.AddCue2dOr3d(this, MySoundCuesEnum.SfxFlareLoop01,\n                    GetPosition(), WorldMatrix.Forward, WorldMatrix.Up, Physics.LinearVelocity);\n                }\n            }\n\n            if (!decoyLiving)\n            {\n                MarkForClose();\n            }\n            else\n            {\n                // Aggro near bots\n                MyDangerZones.Instance.NotifyArea(GetPosition(), 300, OwnerEntity);\n\n                if (m_flareLoop != null && m_flareLoop.Value.IsPlaying)\n                {\n                    MyAudio.UpdateCuePosition(m_flareLoop, WorldMatrix.Translation, WorldMatrix.Forward, WorldMatrix.Up, Physics.LinearVelocity);\n                }\n            }\n\n        }\n\n        //  This mine collides with something after which it must explode\n        bool UpdateParticles()\n        {\n            if (!m_flaresFired)\n            {\n                FireFlares();\n            }\n\n            bool decoyLiving = false;\n\n            foreach (FlareParticle particle in m_particles)\n            {\n                if (MyMinerGame.TotalGamePlayTimeInMilliseconds < particle.FlyTime + m_startParticleTime)\n                {\n                    UpdateFlareParticlePosition(particle);\n                }\n\n                MyParticleEffect effect = particle.ParticleEffect;\n                if (effect != null)\n                {\n                    effect.WorldMatrix = Matrix.CreateTranslation(particle.Position);\n\n                    if (MyMinerGame.TotalGamePlayTimeInMilliseconds + 3000 > particle.Life + m_startParticleTime)\n                    {\n                        effect.Stop();\n                        particle.ParticleEffect = null;\n                    }\n                }\n\n                //Detect decoy alive\n                if (MyMinerGame.TotalGamePlayTimeInMilliseconds + 3000 < particle.Life + m_startParticleTime)\n                {\n                    decoyLiving = true;\n                }\n            }\n\n            return decoyLiving;\n        }\n\n        /// <summary>\n        /// Initialize flares to fire\n        /// </summary>\n        private void FireFlares()\n        {\n            m_flareDeploy = MyAudio.AddCue2dOr3d(this, MySoundCuesEnum.SfxFlareDeploy,\n            GetPosition(), WorldMatrix.Forward, WorldMatrix.Up, Physics.LinearVelocity);\n\n            MyAudio.UpdateCuePosition(m_flareDeploy, GetPosition(), GetForward(), GetUp(), Physics.LinearVelocity);\n\n            foreach (FlareParticle particle in m_particles)\n            {\n                particle.Position = WorldMatrix.Translation;\n                Matrix rot = Matrix.CreateFromAxisAngle(WorldMatrix.Forward, MyMwcUtils.GetRandomFloat(0.0f, MathHelper.TwoPi));\n                particle.Dir = Vector3.TransformNormal(MyUtilRandomVector3ByDeviatingVector.GetRandom(WorldMatrix.Up, 0.2f), rot);\n                particle.FlyTime = MyMwcUtils.GetRandomFloat(500, 8000);\n                particle.Life = MyMwcUtils.GetRandomFloat(8000, MyDecoyFlareConstants.MAX_LIVING_TIME);\n\n                var effect = MyParticlesManager.CreateParticleEffect((int)MyParticleEffectsIDEnum.UniversalLauncher_DecoyFlare);\n                effect.UserBirthMultiplier = 0.3f;\n                particle.ParticleEffect = effect;\n            }\n\n            m_startParticleTime = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n            m_flaresFired = true;\n        }\n\n        private void UpdateFlareParticlePosition(FlareParticle particle)\n        {\n            float delta = (MyMinerGame.TotalGamePlayTimeInMilliseconds - m_startParticleTime) / particle.FlyTime;\n            particle.Position += particle.Dir * MyMwcUtils.GetRandomFloat(0.2f, 0.4f) * (float) Math.Pow(1.0 - delta, 3);\n        }\n\n        public override void Close()\n        {\n            foreach (var particle in m_particles)\n            {\n                if (particle.ParticleEffect != null)\n                {\n                    particle.ParticleEffect.Stop();\n                    particle.ParticleEffect = null;\n                }\n            }\n\n            if ((m_flareLoop != null) && m_flareLoop.Value.IsPlaying)\n            {\n                m_flareLoop.Value.Stop(SharpDX.XACT3.StopFlags.Release);\n            }\n\n            m_flaresFired = false;\n            Visible = true;\n            base.Close();\n            MyUniversalLauncherShells.Remove(this, m_ownerEntityID.PlayerId);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Weapons/Ammo/UniversalLauncher/MyDirectionalExplosive.cs",
    "content": "﻿using MinerWars.AppCode.Physics;\nusing MinerWars.AppCode.Game.Physics;\nusing MinerWars.AppCode.Game.Localization;\n\nnamespace MinerWars.AppCode.Game.Entities.Weapons.UniversalLauncher\n{\n    using Explosions;\n    using MinerWarsMath;\n    using Models;\n    using Utils;\n    using Voxels;\n    using KeenSoftwareHouse.Library.Memory;\n    using MinerWars.AppCode.Game.Decals;\n    using MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\n    using MinerWars.AppCode.Game.Render;\n    using MinerWars.AppCode.Game.Managers.Session;\n\n    class MyDirectionalExplosive : MyAmmoBase, IUniversalLauncherShell\n    {\n        private MyEntity m_collidedEntity;\n\n        public void Init()\n        {\n            Init(MyModelsEnum.DirectionalExplosive, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Directional_Explosive, MyUniversalLauncherConstants.USE_SPHERE_PHYSICS);\n        }\n\n        //  This method realy initiates/starts the missile\n        //  IMPORTANT: Direction vector must be normalized!\n        public void Start(Vector3 position, Vector3 initialVelocity, Vector3 direction, float impulseMultiplier, MyEntity owner)\n        {\n            base.Start(position, initialVelocity, direction, impulseMultiplier, owner, MyTextsWrapper.Get(MyTextsWrapperEnum.DirectionalExplosiveHud));\n\n            if (!TimeToActivate.HasValue)\n            {\n                TimeToActivate = MyDirectionalExplosiveConstants.TIME_TO_ACTIVATE;\n            }\n        }\n\n        /// <summary>\n        /// Updates resource.\n        /// </summary>\n        public override void UpdateBeforeSimulation()\n        {\n            base.UpdateBeforeSimulation();\n\n            if (m_elapsedMiliseconds > TimeToActivate)\n            {\n                Explode();\n            }\n        }\n\n        public override bool Draw(MyRenderObject renderObject)\n        {\n            if (base.Draw(renderObject) == false) return false;\n            return true;\n        }\n\n        //  This explosive collides with something after which it must explode\n        public override void Explode()\n        {\n            if (m_isExploded)\n                return;\n\n            base.Explode();\n            MarkForClose();\n\n            if (m_isExploded)\n            {\n                const int stepsCount = 5;\n                Vector3 directionDelta = WorldMatrix.Forward * (7 * m_ammoProperties.ExplosionRadius / stepsCount);\n\n                for (int i = 0; i < stepsCount; i++)\n                {\n                    MyExplosion newExplosion = MyExplosions.AddExplosion();\n                    if (newExplosion != null)\n                    {\n                        Vector3 explosionPos = GetPosition() + directionDelta * i;\n                        BoundingSphere boundingSphere = new BoundingSphere(explosionPos, m_ammoProperties.ExplosionRadius);\n                        newExplosion.Start(m_ammoProperties.HealthDamage, m_ammoProperties.ShipDamage, m_ammoProperties.EMPDamage, MyExplosionTypeEnum.BOMB_EXPLOSION, boundingSphere, MyExplosionsConstants.EXPLOSION_LIFESPAN, CascadedExplosionLevel, ownerEntity: OwnerEntity, hitEntity: m_collidedEntity, playSound: i == 0 ? true : false);\n                    }\n                }\n            }\n        }\n\n        protected override void OnContactStart(MyContactEventInfo contactInfo)\n        {\n            base.OnContactStart(contactInfo);\n\n            m_collidedEntity = contactInfo.GetOtherEntity(this);\n\n            if (this.OwnerEntity is MySmallShip && (MySmallShip)this.OwnerEntity == MySession.PlayerShip && m_collidedEntity is MyStaticAsteroid && !m_collidedEntity.IsDestructible)\n            {\n                HUD.MyHud.ShowIndestructableAsteroidNotification();\n            }\n\n            Explode();\n        }\n\n        public override void Close()\n        {\n            base.Close();\n            MyUniversalLauncherShells.Remove(this, m_ownerEntityID.PlayerId);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Weapons/Ammo/UniversalLauncher/MyEMPBomb.cs",
    "content": "﻿using MinerWars.AppCode.Game.Localization;\n\nnamespace MinerWars.AppCode.Game.Entities.Weapons.UniversalLauncher\n{\n    using Explosions;\n    using MinerWarsMath;\n    using Models;\n    using Utils;\n    using CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\n    using MinerWars.AppCode.Game.Render;\n\n    class MyEMPBomb : MyAmmoBase, IUniversalLauncherShell\n    {\n        // Boxes are better for mines, because when they collide with environment, they start rotating. Sphere just slide.\n        const bool MINE_COLLISION_PRIMITIVE_IS_SPHERE = false;\n\n        public void Init()\n        {\n            Init(MyModelsEnum.SphereExplosive, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_EMP_Bomb, MyUniversalLauncherConstants.USE_SPHERE_PHYSICS);\n        }\n\n        //  This method realy initiates/starts the missile\n        //  IMPORTANT: Direction vector must be normalized!\n        public void Start(Vector3 position, Vector3 initialVelocity, Vector3 direction, float impulseMultiplier, MyEntity owner)\n        {\n            base.Start(position, initialVelocity, direction, 100, owner, MyTextsWrapper.Get(MyTextsWrapperEnum.EMPBombHud));\n\n            if (!TimeToActivate.HasValue)\n            {\n                TimeToActivate = MySphereExplosiveConstants.TIME_TO_ACTIVATE;\n            }\n        }\n\n        /// <summary>\n        /// Updates resource.\n        /// </summary>\n        public override void UpdateBeforeSimulation()\n        {\n            if (m_isExploded)\n                return;\n\n            base.UpdateBeforeSimulation();\n\n            if (m_elapsedMiliseconds > TimeToActivate)\n            {\n                Explode();\n            }\n        }\n\n        public override bool Draw(MyRenderObject renderObject)\n        {\n            if (base.Draw(renderObject) == false) return false;\n            return true;\n        }\n\n        //  This mine collides with something after which it must explode\n        public override void Explode()\n        {\n            if (m_isExploded)\n                return;\n\n            base.Explode();\n\n            MarkForClose();\n\n            if (m_isExploded)\n            {\n                MyExplosion newExplosion = MyExplosions.AddExplosion();\n                if (newExplosion != null)\n                {\n                    newExplosion.Start(m_ammoProperties.HealthDamage, m_ammoProperties.ShipDamage, m_ammoProperties.EMPDamage, MyExplosionTypeEnum.EMP_EXPLOSION, new BoundingSphere(GetPosition(), m_ammoProperties.ExplosionRadius), MyExplosionsConstants.EXPLOSION_LIFESPAN, CascadedExplosionLevel, ownerEntity: OwnerEntity);\n                }\n            }\n        }\n\n        public override void Close()\n        {\n            base.Close();\n            MyUniversalLauncherShells.Remove(this, m_ownerEntityID.PlayerId);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Weapons/Ammo/UniversalLauncher/MyFlashBomb.cs",
    "content": "﻿using MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Physics;\nusing MinerWars.AppCode.Game.Physics;\n\nnamespace MinerWars.AppCode.Game.Entities.Weapons.UniversalLauncher\n{\n    using System.Collections.Generic;\n    using Explosions;\n    using GUI;\n    using MinerWarsMath;\n    using Models;\n    using Renders;\n    using Utils;\n    using MinerWars.AppCode.Game.Managers.Session;\n    using MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\n    using MinerWars.AppCode.Game.Render;\n    using MinerWars.AppCode.Game.TransparentGeometry;\n\n    class MyFlashBomb : MyAmmoBase, IUniversalLauncherShell\n    {\n        static List<MyEntity> m_targetEntities = new List<MyEntity>(16);\n\n        public void Init()\n        {\n            base.Init(MyModelsEnum.FlashBomb, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Flash_Bomb, MyUniversalLauncherConstants.USE_SPHERE_PHYSICS);\n        }\n\n        //  This method realy initiates/starts the missile\n        //  IMPORTANT: Direction vector must be normalized!\n        public void Start(Vector3 position, Vector3 initialVelocity, Vector3 direction, float impulseMultiplier, MyEntity owner)\n        {\n            base.Start(position, initialVelocity, direction, impulseMultiplier, owner, MyTextsWrapper.Get(MyTextsWrapperEnum.FlashBombHud));\n\n            if (!TimeToActivate.HasValue)\n            {\n                TimeToActivate = MyFlashBombConstants.TIME_TO_ACTIVATE;\n            }\n        }\n\n        public override void UpdateBeforeSimulation()\n        {\n            base.UpdateBeforeSimulation();\n\n            if (m_elapsedMiliseconds > TimeToActivate)\n            {\n                Explode();\n            }\n        }\n\n        public override bool Draw(MyRenderObject renderObject)\n        {\n            if (base.Draw(renderObject) == false) return false;\n            return true;\n        }\n\n        //  This mine collides with something after which it must explode\n        public override void Explode()\n        {\n            MyExplosion newExplosion = MyExplosions.AddExplosion();\n            if (newExplosion != null)\n            {\n                newExplosion.Start(m_ammoProperties.HealthDamage, m_ammoProperties.ShipDamage, m_ammoProperties.EMPDamage, MyExplosionTypeEnum.FLASH_EXPLOSION, new BoundingSphere(GetPosition(), m_ammoProperties.ExplosionRadius), MyExplosionsConstants.EXPLOSION_LIFESPAN, CascadedExplosionLevel, ownerEntity: OwnerEntity, particleScale: 0.001f);\n            }\n\n            bool isBotFlashBomb = OwnerEntity as MySmallShipBot != null;\n\n            //If ship is another player, add flash to his view\n            BoundingSphere flashSphere = new BoundingSphere(GetPosition(), MyFlashBombConstants.FLASH_RADIUS);\n            m_targetEntities.Clear();\n            MyEntities.GetIntersectionWithSphere(ref flashSphere, this, null, true, false, ref m_targetEntities);\n            foreach (MyEntity ob in m_targetEntities)\n            {\n                if (ob is MySmallShip)\n                {\n                    if (MyEnemyTargeting.CanSee(this, ob) == null)\n                    {\n                        Vector3 bombPosition = GetPosition();\n                        if (ob == MySession.PlayerShip)\n                        {\n                            if (MyCamera.IsInFrustum(ref bombPosition))\n                            {\n                                MyFlashes.MakeFlash();\n                            }\n                        }\n                        else if (!isBotFlashBomb && ob is MySmallShipBot)  //If this flashbomb is from bot, dont flash bots\n                        {\n                            //If it is bot, make him panic\n                            MySmallShipBot bot = ob as MySmallShipBot;\n                            bot.Flash();\n                        }\n                    }\n                }\n            }\n\n            MarkForClose();\n        }\n\n        public override void Close()\n        {\n            base.Close();\n            MyUniversalLauncherShells.Remove(this, m_ownerEntityID.PlayerId);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Weapons/Ammo/UniversalLauncher/MyGravityBomb.cs",
    "content": "﻿using MinerWars.AppCode.Game.Localization;\n\nnamespace MinerWars.AppCode.Game.Entities.Weapons.UniversalLauncher\n{\n    using Explosions;\n    using MinerWarsMath;\n    using Models;\n    using Utils;\n    using MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\n    using MinerWars.AppCode.Game.Render;\n\n    class MyGravityBomb : MyAmmoBase, IUniversalLauncherShell\n    {\n        public void Init()\n        {\n            Init(MyModelsEnum.GravityBomb, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Gravity_Bomb, MyUniversalLauncherConstants.USE_SPHERE_PHYSICS);\n        }\n\n        //  This method realy initiates/starts the missile\n        //  IMPORTANT: Direction vector must be normalized!\n        public void Start(Vector3 position, Vector3 initialVelocity, Vector3 direction, float impulseMultiplier, MyEntity owner)\n        {\n            base.Start(position, initialVelocity, direction, impulseMultiplier, owner, MyTextsWrapper.Get(MyTextsWrapperEnum.GravityBombHud));\n\n            if (!TimeToActivate.HasValue)\n            {\n                TimeToActivate = MySphereExplosiveConstants.TIME_TO_ACTIVATE;\n            }\n        }\n\n        /// <summary>\n        /// Updates resource.\n        /// </summary>\n        public override void UpdateBeforeSimulation()\n        {\n            base.UpdateBeforeSimulation();\n\n            if (m_elapsedMiliseconds > TimeToActivate)\n            {\n                Explode();\n            }\n        }\n\n        public override bool Draw(MyRenderObject renderObject)\n        {\n            if (base.Draw(renderObject) == false) return false;\n            return true;\n        }\n\n        //  This mine collides with something after which it must explode\n        public override void Explode()\n        {\n            MyExplosion newExplosion = MyExplosions.AddExplosion();\n            if (newExplosion != null)\n            {\n                newExplosion.Start(m_ammoProperties.HealthDamage, m_ammoProperties.ShipDamage, m_ammoProperties.EMPDamage, MyExplosionTypeEnum.GRAVITY_EXPLOSION, new BoundingSphere(GetPosition(), m_ammoProperties.ExplosionRadius), MyExplosionsConstants.EXPLOSION_LIFESPAN, MyExplosionForceDirection.IMPLOSION, AppCode.Physics.MyGroupMask.Empty, true, CascadedExplosionLevel, ownerEntity: OwnerEntity);\n            }\n            MarkForClose();\n        }\n\n        public override void Close()\n        {\n            base.Close();\n            MyUniversalLauncherShells.Remove(this, m_ownerEntityID.PlayerId);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Weapons/Ammo/UniversalLauncher/MyHologram.cs",
    "content": "﻿using System;\nusing System.Diagnostics;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Entities.Weapons.Ammo.UniversalLauncher;\nusing MinerWars.AppCode.Game.Models;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Physics;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Entities.Ships.AI;\nusing System.Collections.Generic;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Render;\n\nnamespace MinerWars.AppCode.Game.Entities.Weapons.UniversalLauncher\n{\n    /// <summary>\n    /// A tool which, when fired and landed, begins to project holografic copy of smallship it was fired from. It inherits world matrix, but has no collision and it can blink sometimes. It disappears after some time. It makes no sounds, but it can simulate particles/billboards too.\n    /// </summary>\n    class MyHologram : MyAmmoBase, IUniversalLauncherShell\n    {\n        private enum HologramState\n        {\n            Deactivated,\n            Activating,\n            Activated,\n            Deactivating,\n        }\n\n        /// <summary>\n        /// The state of the hologram shell.\n        /// </summary>\n        private HologramState m_hologramState;\n\n        /// <summary>\n        /// The small ship representing the holographic image.\n        /// </summary>\n        private MySmallShip m_hologramShip;\n\n        /// <summary>\n        /// Current scaling vector of the hologram (used in Draw()).\n        /// </summary>\n        private Vector3 m_scale;\n\n        /// <summary>\n        /// The base world matrix of the hologram, is scaled in draw by m_scale.\n        /// After the holographic image is created, this remains unchanged.\n        /// </summary>\n        private Matrix m_hologramBaseMatrix;\n\n        /// <summary>\n        /// The number of milliseconds elapsed from last flicker start.\n        /// </summary>\n        private float m_flickerElapsedMilliseconds;\n\n        /// <summary>\n        /// The target flicker scale for one flicker occurrence.\n        /// </summary>\n        private Vector3 m_flickerScale;\n\n        private List<MySmallShipBot> m_awareBots;\n\n        private MyMwcObjectBuilder_SmallShip m_hologramBuilder = new MyMwcObjectBuilder_SmallShip(\n            MyMwcObjectBuilder_SmallShip_TypesEnum.DOON,\n            null, new List<MyMwcObjectBuilder_SmallShip_Weapon>(),\n            null, new List<MyMwcObjectBuilder_AssignmentOfAmmo>(),\n            null, null, 1, 1, 1, 1, 1, true, false, 1, 0);\n\n        public void Init()\n        {\n            Init(MyModelsEnum.Hologram, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Hologram, MyUniversalLauncherConstants.USE_SPHERE_PHYSICS);\n\n            m_awareBots = new List<MySmallShipBot>();\n        }\n\n        public void Start(Vector3 position, Vector3 initialVelocity, Vector3 direction, float impulseMultiplier, MyEntity owner)\n        {\n            base.Start(position, initialVelocity, direction, impulseMultiplier, owner);\n\n            m_hologramState = HologramState.Deactivated;\n\n            if (!TimeToActivate.HasValue)\n            {\n                TimeToActivate = MyHologramConstants.TIME_TO_ACTIVATE;\n            }\n\n            foreach (var bot in MyBotCoordinator.GetBots())\n            {\n                if (bot.CanSeeTarget(owner))\n                {\n                    m_awareBots.Add(bot);\n                }\n            }\n        }\n\n        public override void UpdateBeforeSimulation()\n        {\n            base.UpdateBeforeSimulation();\n\n            switch (m_hologramState)\n            {\n                case HologramState.Deactivated:\n                    if (m_elapsedMiliseconds > TimeToActivate)\n                    {\n                        Physics.GroupMask = MyGroupMask.Empty;\n\n                        ActivateHologram();\n                    }\n                    break;\n\n                case HologramState.Activating:\n                    EnlargeHologram();\n                    UpdateOrientation();\n                    break;\n\n                case HologramState.Activated:\n                    if (m_elapsedMiliseconds > MyHologramConstants.TIME_TO_DEACTIVATE)\n                    {\n                        DeactivateHologram();\n                    }\n\n                    GenerateFlicker();\n                    UpdateOrientation();\n\n                    break;\n\n                case HologramState.Deactivating:\n                    ShrinkHologram();\n                    UpdateOrientation();\n                    break;\n\n                default:\n                    throw new ArgumentOutOfRangeException();\n            }\n        }\n\n        /// <summary>\n        /// Sets the orientation of the hologram to the owner ship's orientation.\n        /// </summary>\n        private void UpdateOrientation()\n        {\n            m_hologramBaseMatrix.Translation = this.GetPosition();\n\n            MyEntity owner = OwnerEntity;\n            if (owner != null)\n            {\n                m_hologramBaseMatrix.Up = owner.WorldMatrix.Up;\n                m_hologramBaseMatrix.Forward = owner.WorldMatrix.Forward;\n                m_hologramBaseMatrix.Right = owner.WorldMatrix.Right;\n            }\n        }\n\n        /// <summary>\n        /// Prepares the hologram ship for display.\n        /// </summary>\n        private void ActivateHologram()\n        {\n            //this.Physics.Enabled = false;\n            //this.Physics.LinearVelocity = Vector3.Zero;\n\n            MyEntity owner = OwnerEntity;\n\n            if (owner != null)\n            {\n                var ownerShipBuilder = (owner.GetObjectBuilder(false) as MyMwcObjectBuilder_SmallShip);\n                Debug.Assert(ownerShipBuilder != null, \"ownerShipBuilder != null\");\n\n                m_hologramBuilder.ShipType = ownerShipBuilder.ShipType;\n                m_hologramBuilder.ShipMaxHealth = ownerShipBuilder.ShipMaxHealth;\n                m_hologramBuilder.ShipHealthRatio = ownerShipBuilder.ShipHealthRatio;\n                m_hologramBuilder.ArmorHealth = ownerShipBuilder.ArmorHealth;\n                m_hologramBuilder.Oxygen = ownerShipBuilder.Oxygen;\n                m_hologramBuilder.Fuel = ownerShipBuilder.Fuel;\n                m_hologramBuilder.ReflectorLight = ownerShipBuilder.ReflectorLight;\n                m_hologramBuilder.ReflectorLongRange = ownerShipBuilder.ReflectorLongRange;\n                m_hologramBuilder.ReflectorShadowDistance = ownerShipBuilder.ReflectorShadowDistance;\n                m_hologramBuilder.PositionAndOrientation = ownerShipBuilder.PositionAndOrientation;\n                m_hologramBuilder.Faction = ownerShipBuilder.Faction;\n\n                string displayName = ownerShipBuilder.DisplayName;\n                if (MyFactions.GetFactionsRelation(m_hologramBuilder.Faction, MySession.Static.Player.Faction) == MyFactionRelationEnum.Friend || MySession.PlayerShip == owner)\n                {\n                    displayName = \"Hologram\";\n                }\n\n                m_hologramShip = MyHologramShips.Add(displayName, m_hologramBuilder);\n                m_hologramShip.AIPriority = 1;\n                m_hologramShip.IsHologram = true;\n                if (m_hologramShip != null)\n                {\n                    m_hologramBaseMatrix = this.WorldMatrix;\n\n                    m_scale = new Vector3(0, 1, 1);\n                    m_hologramState = HologramState.Activating;\n\n                    foreach (var bot in m_awareBots)\n                    {\n                        bot.SpoilHologram(m_hologramShip);\n                    }\n                }            \n            }\n        }\n\n        /// <summary>\n        /// Starts shrinking the hologram.\n        /// </summary>\n        private void DeactivateHologram()\n        {\n            m_hologramState = HologramState.Deactivating;\n        }\n\n        private void EnlargeHologram()\n        {\n            m_scale.X += MyHologramConstants.APPEAR_SPEED;\n            if (m_scale.X >= 1)\n            {\n                m_scale = Vector3.One;\n                m_hologramState = HologramState.Activated;\n            }\n        }\n\n        private void ShrinkHologram()\n        {\n            m_scale.X -= MyHologramConstants.APPEAR_SPEED;\n            if (m_scale.X <= MyMwcMathConstants.EPSILON_SQUARED)\n            {\n                m_scale = Vector3.Zero;\n                m_hologramState = HologramState.Deactivated;\n                MarkForClose();\n            }\n        }\n\n        /// <summary>\n        /// Once per few frames, generates a flicker.\n        /// Actually only manipulates the m_scale vector in order to simulate flicker appearance.\n        /// </summary>\n        private void GenerateFlicker()\n        {\n            // TODO simon how do I make this independent of FPS?\n            bool startFlickerNow = MyMwcUtils.GetRandomBool(MyHologramConstants.FLICKER_FREQUENCY);\n            if (startFlickerNow && m_flickerElapsedMilliseconds > MyHologramConstants.FLICKER_DURATION)\n            {\n                m_flickerElapsedMilliseconds = 0;\n                m_flickerScale = MyMwcUtils.GetRandomVector3Normalized();\n            }\n\n            if (m_flickerElapsedMilliseconds < MyHologramConstants.FLICKER_DURATION)\n            {\n                float flickerProgress = m_flickerElapsedMilliseconds / MyHologramConstants.FLICKER_DURATION;\n                Vector3 maxFlickerScale = MyHologramConstants.FLICKER_MAX_SIZE * Vector3.One;\n                m_scale = Vector3.Lerp(maxFlickerScale, m_flickerScale, flickerProgress);\n            }\n            else\n            {\n                m_scale = Vector3.One;\n            }\n\n            m_flickerElapsedMilliseconds += MyConstants.PHYSICS_STEP_SIZE_IN_MILLISECONDS;\n        }\n\n        public override bool Draw(MyRenderObject renderObject)\n        {\n            bool draw = base.Draw(renderObject);\n\n            if (draw && m_hologramState != HologramState.Deactivated)\n            {\n                Vector3 maxScale = MyHologramConstants.FLICKER_MAX_SIZE * Vector3.One;\n                Vector3 minScale = new Vector3(.01f);\n                Vector3 clampedScale = Vector3.Clamp(m_scale, minScale, maxScale);\n                m_hologramShip.SetWorldMatrix(Matrix.CreateScale(clampedScale) * m_hologramBaseMatrix);\n\n                m_hologramShip.Draw();\n            }\n\n            return draw;\n        }\n\n        public override void Close()\n        {\n            if (m_hologramShip != null)\n            {\n                MyHologramShips.Remove(m_hologramShip);\n                m_hologramShip.MarkForClose();\n                m_hologramShip = null;\n            }\n            base.Close();\n            MyUniversalLauncherShells.Remove(this, m_ownerEntityID.PlayerId);\n        }\n\n        protected override void DoDamageInternal(float playerDamage, float damage, float empDamage, MyDamageType damageType, MyAmmoType ammoType, MyEntity damageSource, bool justDeactivate)\n        {\n            base.DoDamageInternal(playerDamage, damage, empDamage, damageType, ammoType, damageSource, justDeactivate);\n            MarkForClose();\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Weapons/Ammo/UniversalLauncher/MyHologramShips.cs",
    "content": "﻿using MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.Generics;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing SysUtils.Utils;\nusing System.Collections.Generic;\nusing MinerWars.AppCode.Game.Sessions;\n\nnamespace MinerWars.AppCode.Game.Entities.Weapons.Ammo.UniversalLauncher\n{\n    /// <summary>\n    /// This class is responsible for holding list of small ships that are used as holograms only!\n    /// Modeled after MyMissiles.cs.\n    /// </summary>\n    static class MyHologramShips\n    {\n        private static MyObjectsPool<MySmallShip> m_hologramShips = null;\n\n        public static void LoadData()\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyHologramShips.LoadData\");\n\n            MyMwcLog.WriteLine(\"MyHologramShips.LoadContent() - START\");\n            MyMwcLog.IncreaseIndent();\n\n            if (m_hologramShips == null)\n                m_hologramShips = new MyObjectsPool<MySmallShip>(MyUniversalLauncherConstants.MAX_HOLOGRAMS_COUNT * MyMultiplayerGameplay.MaxPlayers);\n            m_hologramShips.DeallocateAll();\n\n            foreach (var item in m_hologramShips.GetPreallocatedItemsArray())\n            {\n                // TODO simon - do we need something here?\n                //item.Value.Init();\n            }\n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyHologramShips.LoadContent() - END\");\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        public static void UnloadData()\n        {\n        }\n\n        //  Add new ship to the list\n        public static MySmallShip Add(string displayName, MyMwcObjectBuilder_Ship objectBuilder)\n        {\n            MySmallShip newShip = m_hologramShips.Allocate();\n            if (newShip != null)\n            {\n                newShip.Init(displayName, objectBuilder);\n\n                if (newShip.Physics.Enabled)\n                    newShip.Physics.Enabled = false;\n                /*\n                newShip.Physics.Type = MyConstants.RIGIDBODY_TYPE_DEFAULT;\n                newShip.Physics.CollisionLayer = MyConstants.COLLISION_LAYER_UNCOLLIDABLE;\n                 */\n                newShip.IsHologram = true;\n\n                // we dont want the hologram to have a light\n                newShip.RemoveLight();\n                newShip.RemoveSubObjectLights();\n\n                newShip.Config.Engine.Level = 1;\n                newShip.Config.ReflectorLight.Level = 1;\n                newShip.GetReflectorProperties().CurrentBillboardLength = 40;\n                newShip.GetReflectorProperties().CurrentBillboardThickness = 6;\n\n                newShip.CastShadows = false;\n            }\n            return newShip;\n        }\n\n        public static void Remove(MySmallShip ship)\n        {\n            m_hologramShips.Deallocate(ship);\n        }\n\n        public static int GetActiveCount()\n        {\n            return m_hologramShips.GetActiveCount();\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Weapons/Ammo/UniversalLauncher/MyIlluminatingShell.cs",
    "content": "﻿using MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.TransparentGeometry.Particles;\nusing MinerWars.AppCode.Physics;\nusing MinerWars.AppCode.Game.Physics;\n\nnamespace MinerWars.AppCode.Game.Entities.Weapons.UniversalLauncher\n{\n    using CommonLIB.AppCode.Utils;\n    using Lights;\n    using MinerWarsMath;\n    using Models;\n    using TransparentGeometry;\n    using Utils;\n    using MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\n    using MinerWars.AppCode.Game.Entities.Ships.AI;\n    using MinerWars.AppCode.Game.Render;\n\n    class MyIlluminatingShell : MyAmmoBase, IUniversalLauncherShell\n    {\n        MyLight m_light;\n        MyParticleEffect m_particleEffect;\n\n        public void Init()\n        {\n            base.Init(MyModelsEnum.IlluminatingShell, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Illuminating_Shell, MyUniversalLauncherConstants.USE_SPHERE_PHYSICS);\n        }\n\n        //  This method realy initiates/starts the missile\n        //  IMPORTANT: Direction vector must be normalized!\n        public void Start(Vector3 position, Vector3 initialVelocity, Vector3 direction, float impulseMultiplier, MyEntity owner)\n        {\n            base.Start(position, initialVelocity, direction, impulseMultiplier, owner, MyTextsWrapper.Get(MyTextsWrapperEnum.IlluminatingShellHud));\n\n            this.Physics.AddForce(\n                MyPhysicsForceType.APPLY_WORLD_IMPULSE_AND_WORLD_ANGULAR_IMPULSE,\n                initialVelocity * 2,\n                position,\n                null);  //  Setting a torque here make trouble for recycled mines... so for now we don't use it. Maybe in future in other physics engine than JLX.\n\n            m_light = MyLights.AddLight();\n            if (m_light != null)\n            {\n                m_light.Start(MyLight.LightTypeEnum.PointLight, position, MyIlluminatingShellsConstants.LIGHT_COLOR, 1, MyIlluminatingShellsConstants.LIGHT_RADIUS);\n            }\n\n            m_particleEffect = MyParticlesManager.CreateParticleEffect((int)MyParticleEffectsIDEnum.UniversalLauncher_IlluminatingShell);\n            m_particleEffect.WorldMatrix = WorldMatrix;\n        }\n\n        public override void UpdateBeforeSimulation()\n        {\n            base.UpdateBeforeSimulation();\n\n            if (m_elapsedMiliseconds > MyIlluminatingShellsConstants.MAX_LIVING_TIME + MyIlluminatingShellsConstants.DIYNG_TIME)\n            {\n                if (m_particleEffect != null)\n                {\n                    m_particleEffect.Stop();\n                    m_particleEffect = null;\n                }\n\n                //  Free the light\n                if (m_light != null)\n                {\n                    MyLights.RemoveLight(m_light);\n                    m_light = null;\n                }\n\n                MarkForClose();\n            }\n\n\n            //  Update light position\n            if (m_light != null)\n            {\n                // Aggro near bots\n                if (m_light.LightOn)\n                {\n                    if (this.WorldMatrix.Translation != m_previousPosition)\n                    {\n                        MyLine line = new MyLine(m_previousPosition, WorldMatrix.Translation);\n                        MyDangerZones.Instance.Notify(line, OwnerEntity);\n                    }\n                }\n\n                if ((m_elapsedMiliseconds > MyIlluminatingShellsConstants.MAX_LIVING_TIME) &&\n                    (m_elapsedMiliseconds < MyIlluminatingShellsConstants.MAX_LIVING_TIME +  MyIlluminatingShellsConstants.DIYNG_TIME))\n                {\n                    m_light.LightOn = MyMwcUtils.GetRandomBool(2);\n                    m_particleEffect.UserScale = m_light.LightOn ? 1.0f : 0.001f;\n                }\n\n                m_light.SetPosition(GetPosition());\n                m_light.Color = MyIlluminatingShellsConstants.LIGHT_COLOR;\n                m_light.Range = MyIlluminatingShellsConstants.LIGHT_RADIUS;\n            }\n        }\n\n        public override void UpdateAfterSimulation()\n        {\n            base.UpdateAfterSimulation();\n\n            if (m_particleEffect != null)\n            {\n                // Update effect position\n                m_particleEffect.WorldMatrix = WorldMatrix;\n            }\n        }\n\n        public override bool Draw(MyRenderObject renderObject)\n        {\n            if (base.Draw(renderObject) == false) return false;\n\n            return true;\n        }\n\n        public override void Close()\n        {\n            base.Close();\n            MyUniversalLauncherShells.Remove(this, m_ownerEntityID.PlayerId);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Weapons/Ammo/UniversalLauncher/MyMineBase.cs",
    "content": "﻿using System.Text;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.AppCode.Physics;\nusing MinerWars.AppCode.Game.Physics;\nusing MinerWars.AppCode.App;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Explosions;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Models;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.AppCode.Game.Gameplay;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Utils;\n\nnamespace MinerWars.AppCode.Game.Entities.Weapons.UniversalLauncher\n{\n    abstract class MyMineBase : MyAmmoBase, IUniversalLauncherShell\n    {\n        protected MyCurrentState m_state;\n        private MyEntity m_collidedEntity;\n        protected MyExplosionTypeEnum m_explosionType = MyExplosionTypeEnum.MISSILE_EXPLOSION;\n\n        public enum MyCurrentState\n        {\n            //  Mine was fired and it is moving to its destination point - few meters in front of its starting position\n            MOVING_TO_DESTINATION_POINT,\n            //  Mine reached its destination point and now is waiting for collision to explode\n            ACTIVATED,\n        }\n\n        public abstract void Init();\n\n        public abstract void Start(Vector3 position, Vector3 initialVelocity, Vector3 direction, float impulseMultiplier, MyEntity owner);\n\n        //  This method realy initiates/starts the missile\n        //  IMPORTANT: Direction vector must be normalized!\n        public override void Start(Vector3 position, Vector3 initialVelocity, Vector3 direction, float impulseMultiplier, MyEntity owner, StringBuilder displayName)\n        {\n            base.Start(position, initialVelocity, direction, impulseMultiplier, owner, displayName);\n            m_state = MyCurrentState.MOVING_TO_DESTINATION_POINT;\n            m_collidedEntity = null;\n\n            Faction = owner.Faction;\n            Physics.LinearDamping = 0.5f;\n\n            var ownerSmallShip = owner as MySmallShip;\n            if (ownerSmallShip != null)\n                Physics.GroupMask = ownerSmallShip.GroupMask;\n        }\n\n        public override void UpdateBeforeSimulation()\n        {\n            if (m_isExploded)\n            {\n                MarkForClose();\n                MyExplosion newExplosion = MyExplosions.AddExplosion();\n                if (newExplosion != null)\n                {\n                    float radius = m_ammoProperties.ExplosionRadius;\n                    newExplosion.Start(m_ammoProperties.HealthDamage, m_ammoProperties.ShipDamage, m_ammoProperties.EMPDamage, m_explosionType, new BoundingSphere(GetPosition(), radius), MyExplosionsConstants.EXPLOSION_LIFESPAN, CascadedExplosionLevel, hitEntity:m_collidedEntity, ownerEntity: OwnerEntity);\n                }\n                return;\n            }\n            base.UpdateBeforeSimulation();\n\n            if (m_elapsedMiliseconds > MyRemoteCameraConstants.TIME_TO_ACTIVATE_GROUP_MASK && m_state == MyCurrentState.MOVING_TO_DESTINATION_POINT)\n            {\n                m_state = MyCurrentState.ACTIVATED;\n                Physics.GroupMask = MyGroupMask.Empty;\n            }\n        }\n\n        protected override void OnContactStart(MyContactEventInfo contactInfo)\n        {\n            base.OnContactStart(contactInfo);\n\n            if (m_state == MyCurrentState.ACTIVATED)\n            {\n                m_collidedEntity = contactInfo.GetOtherEntity(this);\n\n                if (m_collidedEntity is MySmallShip && MyFactions.GetFactionsRelation(this, m_collidedEntity) == MyFactionRelationEnum.Enemy)\n                {\n                    if (this.OwnerEntity is MySmallShip && (MySmallShip)this.OwnerEntity == MySession.PlayerShip && m_collidedEntity is MyStaticAsteroid && !m_collidedEntity.IsDestructible)\n                    {\n                        HUD.MyHud.ShowIndestructableAsteroidNotification();\n                    }\n\n                    //  Create explosion and close;\n                    Explode();\n                }\n            }\n        }\n\n        protected override void DoDamageInternal(float playerDamage, float damage, float empDamage, MyDamageType damageType, MyAmmoType ammoType, MyEntity damageSource, bool justDeactivate)\n        {\n            base.DoDamageInternal(playerDamage, damage, empDamage, damageType, ammoType, damageSource, justDeactivate);\n\n            Explode();\n        }\n\n        public override void Close()\n        {\n            base.Close();\n            MyUniversalLauncherShells.Remove(this, m_ownerEntityID.PlayerId);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Weapons/Ammo/UniversalLauncher/MyMineBasic.cs",
    "content": "﻿using MinerWarsMath;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Utils;\n\nnamespace MinerWars.AppCode.Game.Entities.Weapons.UniversalLauncher\n{\n    using Models;\n    using MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\n\n    class MyMineBasic : MyMineBase\n    {\n        public override void Init()\n        {\n            Init(MyModelsEnum.MineBasic, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Mine_Basic, MyUniversalLauncherConstants.USE_SPHERE_PHYSICS);\n        }\n\n        public override void Start(Vector3 position, Vector3 initialVelocity, Vector3 direction, float impulseMultiplier, MyEntity owner)\n        {\n            base.Start(position, initialVelocity, direction, impulseMultiplier, owner, MyTextsWrapper.Get(MyTextsWrapperEnum.MineBasicHud));\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Weapons/Ammo/UniversalLauncher/MyMineBioChem.cs",
    "content": "﻿using MinerWarsMath;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Utils;\n\nnamespace MinerWars.AppCode.Game.Entities.Weapons.UniversalLauncher\n{\n    using Models;\n    using CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\n\n    class MyMineBioChem : MyMineBase\n    {\n        public override void Init()\n        {\n            Init(MyModelsEnum.MineBasic, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Mine_BioChem, MyUniversalLauncherConstants.USE_SPHERE_PHYSICS);\n            m_explosionType = Explosions.MyExplosionTypeEnum.BIOCHEM_EXPLOSION;\n        }\n\n        public override void Start(Vector3 position, Vector3 initialVelocity, Vector3 direction, float impulseMultiplier, MyEntity owner)\n        {\n            base.Start(position, initialVelocity, direction, impulseMultiplier, owner, MyTextsWrapper.Get(MyTextsWrapperEnum.MineBioChemHud));\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Weapons/Ammo/UniversalLauncher/MyMineSmart.cs",
    "content": "﻿using MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.AppCode.Physics;\nusing MinerWars.AppCode.Game.Physics;\n\n\nnamespace MinerWars.AppCode.Game.Entities.Weapons.UniversalLauncher\n{\n    using App;\n    using Audio;\n    using MinerWarsMath;\n    \n    using Models;\n    using Utils;\n    using CommonLIB.AppCode.Utils;\n    using CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\n    using MinerWars.CommonLIB.AppCode.ObjectBuilders;\n\n    class MyMineSmart : MyMineBase\n    {\n        MySmallShip m_currentTarget;\n        int m_lastTimeSearchedForTarget;\n        MySoundCue? m_movingCue;\n\n        public override void Init()\n        {\n            Init(MyModelsEnum.MineSmart, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Mine_Smart, MyUniversalLauncherConstants.USE_SPHERE_PHYSICS);\n        }\n\n        public override void Start(Vector3 position, Vector3 initialVelocity, Vector3 direction, float impulseMultiplier, MyEntity owner)\n        {\n            base.Start(position, initialVelocity, direction, impulseMultiplier, owner, MyTextsWrapper.Get(MyTextsWrapperEnum.MineSmartHud));\n\n            EntityId = MyEntityIdentifier.AllocateId();\n            MyEntityIdentifier.AddEntityWithId(this);\n\n            m_currentTarget = null;\n            m_movingCue = null;\n            m_lastTimeSearchedForTarget = MyConstants.FAREST_TIME_IN_PAST;\n            Faction = owner.Faction;\n            GuidedInMultiplayer = true;\n        }\n\n        public override void UpdateBeforeSimulation()\n        {\n            base.UpdateBeforeSimulation();\n\n            if (m_state == MyCurrentState.ACTIVATED)\n            {\n                if ((MyMinerGame.TotalGamePlayTimeInMilliseconds - m_lastTimeSearchedForTarget) > MyMineSmartConstants.INTERVAL_TO_SEARCH_FOR_ENEMY_IN_MILISECONDS)\n                {\n                    m_lastTimeSearchedForTarget = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n\n                    //  Look for small ships in mine's proximity\n                    BoundingSphere boundingSphere = new BoundingSphere(GetPosition(), m_ammoProperties.MaxTrajectory);\n                    BoundingBox boundingBox;\n                    BoundingBox.CreateFromSphere(ref boundingSphere, out boundingBox);                \n\n                    MySmallShip newTarget = null;\n\n                    var elements = MyEntities.GetElementsInBox(ref boundingBox);\n                    for (int i = 0; i < elements.Count; i++)\n                    {\n                        var rigidBody = (MyPhysicsBody)elements[i].GetRigidBody().m_UserData;\n                        var entity = rigidBody.Entity;\n\n                        if (entity is MySmallShip && MyFactions.GetFactionsRelation(Faction, entity.Faction) == MyFactionRelationEnum.Enemy)\n                        {\n                            float dist = Vector3.Distance(entity.GetPosition(), GetPosition());\n                            if (dist <= m_ammoProperties.MaxTrajectory)\n                            {\n                                newTarget = (MySmallShip)entity;\n                                break;\n                            }\n                        }\n                    }\n                    elements.Clear();\n\n                    //  If not target found at all\n                    if (newTarget == null) m_currentTarget = null;\n\n                    //  We assign new target only if we do not have any previous (that's a protection agains possible jumping over targets if more targets in proximity)\n                    if (m_currentTarget == null) m_currentTarget = newTarget;\n                }\n\n                //  There is some enemy so lets go to him and explode\n                if (m_currentTarget != null)\n                {\n                    //  Move towards the target\n                    Vector3 engineForce = MyMwcUtils.Normalize(m_currentTarget.GetPosition() - GetPosition()) * m_ammoProperties.InitialSpeed;\n                    engineForce *= MyMineSmartConstants.CHASE_SPEED_MULTIPLIER;\n                    this.Physics.AddForce(\n                        MyPhysicsForceType.APPLY_WORLD_IMPULSE_AND_WORLD_ANGULAR_IMPULSE,\n                        engineForce,\n                        GetPosition(),\n                        Vector3.Zero);\n\n                    StartMovingCue();\n                }\n                else\n                {\n                    StopMovingCue();\n                }\n\n                UpdateMovingCue();\n            }\n        }\n\n        void StartMovingCue()\n        {\n            if ((m_movingCue == null) || (m_movingCue.Value.IsPlaying == false))\n            {\n                m_movingCue = MyAudio.AddCue3D(MySoundCuesEnum.WepMineMoveALoop, GetPosition(),\n                    WorldMatrix.Forward, WorldMatrix.Up, this.Physics.LinearVelocity);\n            }\n        }\n\n        void StopMovingCue()\n        {\n            if ((m_movingCue != null) && (m_movingCue.Value.IsPlaying == true))\n            {\n                m_movingCue.Value.Stop(SharpDX.XACT3.StopFlags.Immediate);\n                m_movingCue = null;\n            }\n        }\n\n        void UpdateMovingCue()\n        {\n            if ((m_movingCue != null) && (m_movingCue.Value.IsPlaying == true))\n            {\n                MyAudio.UpdateCuePosition(m_movingCue, GetPosition(), WorldMatrix.Forward, WorldMatrix.Up, this.Physics.LinearVelocity);\n            }\n        }\n\n        public override void Close()\n        {\n            base.Close();\n            StopMovingCue();\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Weapons/Ammo/UniversalLauncher/MyRemoteBomb.cs",
    "content": "﻿using System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Explosions;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Models;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.AppCode.Game.Render;\n\nnamespace MinerWars.AppCode.Game.Entities.Weapons.UniversalLauncher\n{\n    internal class MyRemoteBomb : MyAmmoBase, IUniversalLauncherShell\n    {\n        private static readonly StringBuilder m_ammoSpecialText = new StringBuilder();\n\n        public void Init()\n        {\n            Init(MyModelsEnum.RemoteBomb, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Remote_Bomb, MyUniversalLauncherConstants.USE_SPHERE_PHYSICS);\n        }\n\n        //  This method realy initiates/starts the missile\n        //  IMPORTANT: Direction vector must be normalized!\n        public void Start(Vector3 position, Vector3 initialVelocity, Vector3 direction, float impulseMultiplier, MyEntity owner)\n        {\n            base.Start(position, initialVelocity, direction, impulseMultiplier, owner, MyTextsWrapper.Get(MyTextsWrapperEnum.RemoteBombHud));\n\n            var ownerShip = owner as MySmallShip;\n            if (ownerShip != null)\n            {\n                ownerShip.AddRemoteBomb(this);\n            }\n\n            if (!TimeToActivate.HasValue)\n            {\n                TimeToActivate = MyRemoteBombConstants.MAXIMUM_LIVING_TIME;\n            }\n        }\n\n        public override bool Draw(MyRenderObject renderObject)\n        {\n            if (base.Draw(renderObject) == false) return false;\n            return true;\n        }\n\n        /// <summary>\n        /// Updates resource.\n        /// </summary>\n        public override void UpdateBeforeSimulation()\n        {\n            base.UpdateBeforeSimulation();\n\n            if (m_elapsedMiliseconds >= TimeToActivate)\n            {\n                Explode();\n            }\n\n            if (m_isExploded)\n            {\n                MyExplosion newExplosion = MyExplosions.AddExplosion();\n                if (newExplosion != null)\n                {\n                    newExplosion.Start(m_ammoProperties.HealthDamage, m_ammoProperties.ShipDamage, m_ammoProperties.EMPDamage, MyExplosionTypeEnum.BOMB_EXPLOSION,\n                                       new BoundingSphere(GetPosition(), m_ammoProperties.ExplosionRadius),\n                                       MyExplosionsConstants.EXPLOSION_LIFESPAN, CascadedExplosionLevel, ownerEntity: OwnerEntity);\n                }\n                MarkForClose();\n            }\n        }\n\n        public static StringBuilder GetAmmoSpecialText()\n        {\n            m_ammoSpecialText.Clear();\n\n            var remoteBombCount = MySession.PlayerShip.RemoteBombCount;\n            if (remoteBombCount > 0)\n            {\n                m_ammoSpecialText.AppendFormat(MyTextsWrapper.GetFormatString(MyTextsWrapperEnum.RemoteBombHelp), MyGuiManager.GetInput().GetGameControlTextEnum(MyGameControlEnums.WEAPON_SPECIAL), remoteBombCount);\n            }\n            return m_ammoSpecialText;\n        }\n\n        public override void Close()\n        {\n            var ownerShip = OwnerEntity as MySmallShip;\n            if (ownerShip != null)\n            {\n                ownerShip.RemoveRemoteBomb(this);\n            }\n\n            base.Close();\n            MyUniversalLauncherShells.Remove(this, m_ownerEntityID.PlayerId);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Weapons/Ammo/UniversalLauncher/MyRemoteCamera.cs",
    "content": "﻿using System.Diagnostics;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.AppCode.Game.Entities.Prefabs;\nusing MinerWars.AppCode.Game.Gameplay;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Models;\nusing MinerWars.AppCode.Game.Physics;\nusing MinerWars.AppCode.Game.TransparentGeometry.Particles;\nusing MinerWars.AppCode.Physics;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\n\nnamespace MinerWars.AppCode.Game.Entities.Weapons.UniversalLauncher\n{\n    internal class MyRemoteCamera : MyAmmoBase, IUniversalLauncherShell, IMyUseableEntity\n    {\n        private const int DISTANCE_TO_TEST_VOXEL_INTERSECTION = 50;\n        // if this has value, that means the camera is sticked on some surface\n        private Vector3? m_directionAfterContact;\n        private Matrix m_matrixAfterContact;\n        private float m_elevation, m_azimuth;\n\n        public void Init()\n        {\n            Init(MyModelsEnum.RemoteCamera, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Remote_Camera, MyUniversalLauncherConstants.USE_SPHERE_PHYSICS);\n\n            // initialize gameplay properties here:\n            m_gameplayProperties = MyGameplayConstants.GetGameplayProperties(MyMwcObjectBuilderTypeEnum.SmallShip_Tool,\n                                                                             (int) MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.REMOTE_CAMERA,\n                                                                             MyMwcObjectBuilder_FactionEnum.None);\n            Debug.Assert(m_gameplayProperties != null);\n            if (m_gameplayProperties != null)\n            {\n                MaxHealth = m_gameplayProperties.MaxHealth;\n                Health = m_gameplayProperties.MaxHealth;\n            }\n\n            //Physics.RigidBody.RaiseFlag(RigidBodyFlag.RBF_COLDET_THROUGH_VOXEL_TRIANGLES);\n\n            m_canByAffectedByExplosionForce = true;\n\n            UseProperties = new MyUseProperties(MyUseType.Solo, MyUseType.None, MyTextsWrapperEnum.NotificationYouCanTake);\n            UseProperties.Init(MyUseType.Solo, MyUseType.None, 0, 1, false);\n        }\n\n        //  This method realy initiates/starts the missile\n        //  IMPORTANT: Direction vector must be normalized!\n        public void Start(\n            Vector3 position,\n            Vector3 initialVelocity,\n            Vector3 direction,\n            float impulseMultiplier,\n            MyEntity owner)\n        {\n            if (Physics.Static)\n            {\n                Physics.Static = false;\n            }\n\n            base.Start(position, initialVelocity, direction, impulseMultiplier, owner, MyTextsWrapper.Get(MyTextsWrapperEnum.RemoteCameraHud));\n\n            Physics.AngularDamping = 1;\n            Health = MaxHealth;\n            m_directionAfterContact = null;\n\n            var ownerShip = owner as MySmallShip;\n            if (ownerShip != null)\n            {\n                ownerShip.Config.BackCamera.SetOn();\n                ownerShip.AddRemoteCamera(this);\n                ownerShip.SelectLastRemoteCamera();\n            }\n        }\n\n        public override void Close()\n        {\n            var ownerShip = OwnerEntity as MySmallShip;\n            if (ownerShip != null)\n            {\n                ownerShip.RemoveRemoteCamera(this);\n            }\n            m_directionAfterContact = null;\n\n            base.Close();\n\n            MyUniversalLauncherShells.Remove(this, m_ownerEntityID.PlayerId);\n        }\n\n        protected override void OnContactStart(MyContactEventInfo contactInfo)\n        {\n            if (!m_directionAfterContact.HasValue)\n            {\n                base.OnContactStart(contactInfo);\n\n                var entityA = ((MyPhysicsBody) contactInfo.m_RigidBody1.m_UserData).Entity;\n                var entityB = ((MyPhysicsBody) contactInfo.m_RigidBody2.m_UserData).Entity;\n\n                var otherEntity = entityA == this ? entityB : entityA;\n\n                var voxelMap = otherEntity as MyVoxelMap;\n\n                Vector3 position;\n                Vector3 normal;\n\n                if (voxelMap != null)\n                {\n                    var line = new MyLine(this.GetPosition(), this.GetPosition() + DISTANCE_TO_TEST_VOXEL_INTERSECTION * this.GetForward());\n                    MyIntersectionResultLineTriangleEx? intersectionResult;\n                    var intersected = voxelMap.GetIntersectionWithLine(ref line, out intersectionResult);\n                    //Debug.Assert(intersected);\n                    //Debug.Assert(intersectionResult != null);\n                    if (intersectionResult != null)\n                    {\n                        normal = intersectionResult.Value.NormalInWorldSpace;\n                        position = intersectionResult.Value.IntersectionPointInWorldSpace - this.WorldVolume.Radius * 0.5f * normal;\n                    }\n                    else\n                    {\n                        normal = -contactInfo.m_ContactNormal;\n                        position = GetPosition() + this.WorldVolume.Radius * 0.5f * normal;\n                    }\n                }\n                else\n                {\n                    normal = -contactInfo.m_ContactNormal;\n                    position = GetPosition() + this.WorldVolume.Radius * 0.5f * normal;\n                }\n\n                Physics.LinearVelocity = Vector3.Zero;\n\n                Vector3 upVector;\n                MyUtils.GetPerpendicularVector(ref normal, out upVector);\n                m_directionAfterContact = normal;\n                this.MoveAndRotate(position, Matrix.CreateWorld(position, m_directionAfterContact.Value, upVector));\n\n                Physics.Static = true;\n\n                m_matrixAfterContact = WorldMatrix;\n                m_elevation = 0;\n                m_azimuth = 0;\n            }\n        }\n\n        protected override void DoDamageInternal(float playerDamage, float damage, float empDamage, MyDamageType damageType, MyAmmoType ammoType, MyEntity damageSource, bool justDeactivate)\n        {\n            base.DoDamageInternal(playerDamage, damage, empDamage, damageType, ammoType, damageSource, justDeactivate);\n\n            Explode();\n        }\n\n        public override void UpdateBeforeSimulation()\n        {\n            if (m_elapsedMiliseconds > 1000)\n            {\n                Physics.GroupMask = AppCode.Physics.MyGroupMask.Empty;\n            }\n\n            if (m_isExploded)\n            {\n                var effect = MyParticlesManager.CreateParticleEffect((int)MyParticleEffectsIDEnum.Damage_Sparks);\n                effect.WorldMatrix = WorldMatrix;\n                effect.UserScale = .20f;\n                MarkForClose();\n                return;\n            }\n\n            base.UpdateBeforeSimulation();\n        }\n\n        internal void Rotate(Vector3 rotationVector)\n        {\n            if (CanBeRotated())\n            {\n                m_elevation += 0.0005f * rotationVector.X;\n                m_azimuth += 0.0005f * rotationVector.Y;\n\n                // clamp azimuth and elevation spherically\n                var angleSquared = (m_azimuth * m_azimuth) + (m_elevation * m_elevation);\n                if (angleSquared > MyRemoteCameraConstants.MAX_ANGLE_SQUARED)\n                {\n                    var normalizationFactor = MyRemoteCameraConstants.MAX_ANGLE_SQUARED / angleSquared;\n                    m_elevation *= normalizationFactor;\n                    m_azimuth *= normalizationFactor;\n                }\n\n                var desiredDirection = m_directionAfterContact.Value;\n                desiredDirection = Vector3.Transform(desiredDirection,\n                                                     Quaternion.CreateFromAxisAngle(m_matrixAfterContact.Up, m_azimuth));\n                desiredDirection = Vector3.Transform(desiredDirection,\n                                                     Quaternion.CreateFromAxisAngle(m_matrixAfterContact.Right, m_elevation));\n\n                var position = GetPosition();\n                Vector3 upVector = m_matrixAfterContact.Up;\n\n                this.MoveAndRotate(position, Matrix.CreateWorld(position, desiredDirection, upVector));\n            }\n        }\n\n        public static StringBuilder GetAmmoSpecialText()\n        {\n            if (MySession.PlayerShip != null)\n            {\n                if (MySession.PlayerShip.IsSelectedRemoteCamera() && !MySession.PlayerShip.HasFiredRemoteBombs())\n                {\n                    return new StringBuilder().AppendFormat(MyTextsWrapper.Get(MyTextsWrapperEnum.RemoteCameraRotate).ToString(), MyGuiManager.GetInput().GetGameControlTextEnum(MyGameControlEnums.CONTROL_SECONDARY_CAMERA));\n                }\n            }\n\n            return null;\n        }\n\n        public MyUseProperties UseProperties { get; set; }\n\n        public bool CanBeUsed(MySmallShip usedBy)\n        {\n            return usedBy == OwnerEntity;\n        }\n\n        public bool CanBeHacked(MySmallShip hackedBy)\n        {\n            return false;\n        }\n\n        public bool CanBeRotated()\n        {\n            return m_directionAfterContact.HasValue;\n        }\n\n        public void Use(MySmallShip useBy)\n        {\n            // return the camera to owner's inventory\n            bool addedSuccess = useBy.Inventory.AddInventoryItem(MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int?) MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Remote_Camera, 1, false) == 0f;\n            if (!addedSuccess) \n            {\n                MyAudio.AddCue2D(MySoundCuesEnum.HudInventoryFullWarning);\n            }\n            this.MarkForClose();\n        }\n\n        public void UseFromHackingTool(MySmallShip useBy, int hackingLevelDifference)\n        {\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Weapons/Ammo/UniversalLauncher/MySmokeBomb.cs",
    "content": "﻿using System.Diagnostics;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.TransparentGeometry.Particles;\n\nnamespace MinerWars.AppCode.Game.Entities.Weapons.UniversalLauncher\n{\n    using MinerWarsMath;\n    using Models;\n    using Utils;\n    using CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\n    using MinerWars.AppCode.Game.Entities.Ships.AI;\n    using MinerWars.AppCode.Game.Audio;\n    \n\n    class MySmokeBomb : MyAmmoBase, IUniversalLauncherShell\n    {\n        bool m_smokeFired;\n        bool m_smokeEnded;\n        protected MySoundCue? m_smokeCue;\n\n        public void Init()\n        {\n            base.Init(MyModelsEnum.SmokeBomb, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Smoke_Bomb, MyUniversalLauncherConstants.USE_SPHERE_PHYSICS);\n        }\n\n        public void Start(Vector3 position, Vector3 initialVelocity, Vector3 direction, float impulseMultiplier, MyEntity owner)\n        {\n            base.Start(position, initialVelocity, direction, impulseMultiplier, owner, MyTextsWrapper.Get(MyTextsWrapperEnum.SmokeBombHud));\n\n            if (!TimeToActivate.HasValue)\n            {\n                TimeToActivate = MySmokeBombConstants.TIME_TO_ACTIVATE;\n            }\n\n            m_smokeFired = false;\n            m_smokeEnded = false;\n        }\n\n        public override void UpdateBeforeSimulation()\n        {\n            base.UpdateBeforeSimulation();\n\n            if (m_elapsedMiliseconds > TimeToActivate && !m_smokeFired)\n            {\n                StartSmokeEffect();\n                Physics.LinearVelocity = Vector3.Zero;\n                Explode();\n\n                m_smokeCue = MyAudio.AddCue2dOr3d(this, MySoundCuesEnum.WepBombSmartSmoke,\n                    GetPosition(), WorldMatrix.Forward, WorldMatrix.Up, Physics.LinearVelocity);\n            }\n            \n            if (m_isExploded)\n            {\n                var effect = MyParticlesManager.CreateParticleEffect((int)MyParticleEffectsIDEnum.Smoke_SmallGunShot);\n                effect.WorldMatrix = this.WorldMatrix;\n                effect.UserScale = 2f;\n                MarkForClose();\n            }\n\n            if (m_smokeEnded)\n            {\n                MarkForClose();\n            }\n            else if (m_smokeFired)\n            {\n                // Aggro near bots\n                MyDangerZones.Instance.NotifyArea(GetPosition(), 300, OwnerEntity);\n            }\n        }\n\n        public override void UpdateAfterSimulation()\n        {\n            base.UpdateAfterSimulation();\n            if (m_smokeCue != null && m_smokeCue.Value.IsPlaying) \n            {\n                MyAudio.UpdateCuePosition(m_smokeCue, GetPosition(), WorldMatrix.Forward, WorldMatrix.Up, Physics.LinearVelocity);\n            }\n        }\n\n        //  This mine collides with something after which it must explode\n        public void StartSmokeEffect()\n        {\n            Debug.Assert(!m_smokeFired);\n            {\n                m_smokeFired = true;\n\n                var effect = MyParticlesManager.CreateParticleEffect((int)MyParticleEffectsIDEnum.UniversalLauncher_SmokeBomb);\n                effect.WorldMatrix = WorldMatrix;\n                effect.OnDelete += delegate { m_smokeEnded = true; };\n            }\n        }\n\n        public override void Close()\n        {\n            if ((m_smokeCue != null) && m_smokeCue.Value.IsPlaying)\n            {\n                m_smokeCue.Value.Stop(SharpDX.XACT3.StopFlags.Release);\n            }\n\n            base.Close();\n            MyUniversalLauncherShells.Remove(this, m_ownerEntityID.PlayerId);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Weapons/Ammo/UniversalLauncher/MySphereExplosive.cs",
    "content": "﻿using MinerWarsMath;\nusing MinerWars.AppCode.Game.Explosions;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Models;\nusing MinerWars.AppCode.Game.Physics;\nusing MinerWars.AppCode.Game.Render;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Physics;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\n\nnamespace MinerWars.AppCode.Game.Entities.Weapons.UniversalLauncher\n{\n\n\n    class MySphereExplosive : MyAmmoBase, IUniversalLauncherShell\n    {\n        private MyEntity m_collidedEntity;\n        // Boxes are better for mines, because when they collide with environment, they start rotating. Sphere just slide.\n        const bool MINE_COLLISION_PRIMITIVE_IS_SPHERE = false;\n\n        public void Init()\n        {\n            Init(MyModelsEnum.SphereExplosive, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Sphere_Explosive, MyUniversalLauncherConstants.USE_SPHERE_PHYSICS);\n        }\n\n        //  This method realy initiates/starts the missile\n        //  IMPORTANT: Direction vector must be normalized!\n        public void Start(Vector3 position, Vector3 initialVelocity, Vector3 direction, float impulseMultiplier, MyEntity owner)\n        {\n            base.Start(position, initialVelocity, direction, 100, owner, MyTextsWrapper.Get(MyTextsWrapperEnum.SphereExplosiveHud));\n\n            if (!TimeToActivate.HasValue)\n            {\n                TimeToActivate = MySphereExplosiveConstants.TIME_TO_ACTIVATE;\n            }\n        }\n\n        /// <summary>\n        /// Updates resource.\n        /// </summary>\n        public override void UpdateBeforeSimulation()\n        {\n            base.UpdateBeforeSimulation();\n\n            if (m_elapsedMiliseconds > TimeToActivate)\n            {\n                Explode();\n            }\n        }\n\n        public override bool Draw(MyRenderObject renderObject)\n        {\n            if (base.Draw(renderObject) == false) return false;\n            return true;\n        }\n\n        //  This mine collides with something after which it must explode\n        public override void Explode()\n        {\n            if (m_isExploded)\n                return;\n\n            base.Explode();\n\n            MarkForClose();\n\n            if (m_isExploded)\n            {\n                MyExplosion newExplosion = MyExplosions.AddExplosion();\n                if (newExplosion != null)\n                {\n                    newExplosion.Start(m_ammoProperties.HealthDamage, m_ammoProperties.ShipDamage, m_ammoProperties.EMPDamage, MyExplosionTypeEnum.BOMB_EXPLOSION, new BoundingSphere(GetPosition(), m_ammoProperties.ExplosionRadius), MyExplosionsConstants.EXPLOSION_LIFESPAN, CascadedExplosionLevel, ownerEntity: OwnerEntity, hitEntity: m_collidedEntity);\n                }\n            }\n        }\n\n        protected override void OnContactStart(MyContactEventInfo contactInfo)\n        {\n            base.OnContactStart(contactInfo);\n\n            m_collidedEntity = contactInfo.GetOtherEntity(this);\n\n            if (this.OwnerEntity is MySmallShip && (MySmallShip)this.OwnerEntity == MySession.PlayerShip && m_collidedEntity is MyStaticAsteroid && !m_collidedEntity.IsDestructible)\n            {\n                HUD.MyHud.ShowIndestructableAsteroidNotification();\n            }\n            Explode();\n        }\n\n        public override void Close()\n        {\n            base.Close();\n            MyUniversalLauncherShells.Remove(this, m_ownerEntityID.PlayerId);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Weapons/Ammo/UniversalLauncher/MyTimeBomb.cs",
    "content": "﻿using System;\nusing System.Diagnostics;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Explosions;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Models;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.AppCode.Game.Audio;\n\nusing MinerWars.AppCode.Game.Render;\n\nnamespace MinerWars.AppCode.Game.Entities.Weapons.UniversalLauncher\n{\n    internal class MyTimeBomb : MyAmmoBase, IUniversalLauncherShell\n    {\n        private static readonly StringBuilder m_ammoSpecialText = new StringBuilder();\n\n        private static readonly object[] m_timeBombArgs = new object[1];\n        private static readonly StringBuilder m_timeBombHUDBuilder = new StringBuilder();\n        protected MySoundCue? m_timingCue;\n\n        static MyTimeBomb()\n        {\n        }\n\n        public void Init()\n        {\n            Init(MyModelsEnum.TimeBomb, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Time_Bomb, MyUniversalLauncherConstants.USE_SPHERE_PHYSICS);\n        }\n\n        //  This method realy initiates/starts the missile\n        //  IMPORTANT: Direction vector must be normalized!\n        public void Start(Vector3 position, Vector3 initialVelocity, Vector3 direction, float impulseMultiplier, MyEntity owner)\n        {\n            m_elapsedMiliseconds = 0;\n            if (!TimeToActivate.HasValue)\n            {\n                //TimeToActivate = MyTimeBombConstants.TIMEOUT_ARRAY[m_ammoTimeoutIndex] * 1000;\n\n                var ownerShip = owner as MySmallShip;\n                Debug.Assert(ownerShip != null);\n                if (ownerShip != null)\n                {\n                    TimeToActivate = ownerShip.Config.TimeBombTimer.CurrentValue * 1000;\n                }\n            }\n\n            m_timingCue = MyAudio.AddCue2dOr3d(this, MySoundCuesEnum.WepBombSmartTimer,\n            GetPosition(), WorldMatrix.Forward, WorldMatrix.Up, Physics.LinearVelocity);\n\n\n            FormatName();\n\n            base.Start(position, initialVelocity, direction, impulseMultiplier, owner, m_timeBombHUDBuilder);\n        }\n\n        private void FormatName()\n        {\n            m_timeBombArgs[0] = String.Format(\"{0:0.0}\", (TimeToActivate - m_elapsedMiliseconds) / 1000f);\n            var timeBombDisplay = MyTextsWrapper.GetFormatString(MyTextsWrapperEnum.TimeBombHud, m_timeBombArgs);\n            m_timeBombHUDBuilder.Clear();\n            m_timeBombHUDBuilder.Append(timeBombDisplay);\n        }\n\n        /// <summary>\n        /// Updates resource.\n        /// </summary>\n        public override void UpdateBeforeSimulation()\n        {\n            base.UpdateBeforeSimulation();\n\n            FormatName();\n            DisplayName = m_timeBombHUDBuilder.ToString();\n\n            if (m_elapsedMiliseconds >= TimeToActivate)\n            {\n                Explode();\n                TimeToActivate = null;\n            }\n\n            if (m_isExploded)\n            {\n                MarkForClose();\n                MyExplosion newExplosion = MyExplosions.AddExplosion();\n                newExplosion.Start(m_ammoProperties.HealthDamage, m_ammoProperties.ShipDamage, m_ammoProperties.EMPDamage, MyExplosionTypeEnum.BOMB_EXPLOSION,\n                                   new BoundingSphere(GetPosition(), m_ammoProperties.ExplosionRadius),\n                                   MyExplosionsConstants.EXPLOSION_LIFESPAN, CascadedExplosionLevel, ownerEntity: OwnerEntity);\n            }                                                                                                      \n        }\n\n        public override bool Draw(MyRenderObject renderObject)\n        {\n            if (base.Draw(renderObject) == false) return false;\n            return true;\n        }\n\n        private static void UpdateAmmoSpecialText()\n        {\n            m_ammoSpecialText.Clear();\n\n            if (!MySession.PlayerShip.HasFiredRemoteBombs())\n            {\n                m_ammoSpecialText.AppendFormat(MyTextsWrapper.GetFormatString(MyTextsWrapperEnum.TimeBombHelp), MySession.PlayerShip.Config.TimeBombTimer.CurrentValue, MyGuiManager.GetInput().GetGameControlTextEnum(MyGameControlEnums.WEAPON_SPECIAL));\n            }\n        }\n\n        public static StringBuilder GetAmmoSpecialText()\n        {\n            UpdateAmmoSpecialText();\n            return m_ammoSpecialText;\n        }\n\n        public override void Close()\n        {\n            if ((m_timingCue != null) && m_timingCue.Value.IsPlaying)\n            {\n                m_timingCue.Value.Stop(SharpDX.XACT3.StopFlags.Release);\n            }\n\n            base.Close();\n            MyUniversalLauncherShells.Remove(this, m_ownerEntityID.PlayerId);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Weapons/Ammo/UniversalLauncher/MyUniversalLauncher.cs",
    "content": "﻿using MinerWars.AppCode.Game.TransparentGeometry.Particles;\n\nnamespace MinerWars.AppCode.Game.Entities.Weapons.UniversalLauncher\n{\n    using System.Text;\n    using App;\n    using Audio;\n    using CommonLIB.AppCode.ObjectBuilders.SubObjects;\n    using CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\n    using MinerWarsMath;\n    using Models;\n    using TransparentGeometry;\n    using Utils;\n\n    class MyUniversalLauncher : MySmallShipGunBase\n    {\n        int m_lastTimeShoot;\n        const float UNIVERSAL_LAUNCHER_SHOT_INTERVAL_IN_MILISECONDS = 500;\n\n        public override void Init(StringBuilder hudLabelText, MySmallShip parentObject, Vector3 position, \n            Vector3 forwardVector, Vector3 upVector, \n            MyMwcObjectBuilder_SmallShip_Weapon objectBuilder)\n        {\n            base.Init(hudLabelText, MyModelsEnum.UniversalLauncher, MyMaterialType.METAL, parentObject, position, \n                forwardVector, upVector, objectBuilder);\n            m_lastTimeShoot = MyConstants.FAREST_TIME_IN_PAST;\n        }\n\n        public override bool Shot(MyMwcObjectBuilder_SmallShip_Ammo usedAmmo)\n        {\n            if (usedAmmo == null || (MyMinerGame.TotalGamePlayTimeInMilliseconds - m_lastTimeShoot) < UNIVERSAL_LAUNCHER_SHOT_INTERVAL_IN_MILISECONDS && !IsDummy) return false;\n\n            bool shot = false;\n            switch (usedAmmo.AmmoType)\n            {\n                case MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Mine_Smart:\n                    shot = Shot<MyMineSmart>();\n                    break;\n\n                case MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Mine_Basic:\n                    shot = Shot<MyMineBasic>();\n                    break;\n\n                case MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Mine_BioChem:\n                    shot = Shot<MyMineBioChem>();\n                    break;\n\n                case MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Sphere_Explosive:\n                    shot = Shot<MySphereExplosive>();\n                    break;\n\n                case MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Decoy_Flare:\n                    shot = Shot<MyDecoyFlare>();\n                    break;\n\n                case MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Flash_Bomb:\n                    shot = Shot<MyFlashBomb>();\n                    break;\n\n                case MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Illuminating_Shell:\n                    shot = Shot<MyIlluminatingShell>();\n                    break;\n\n                case MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Smoke_Bomb:\n                    shot = Shot<MySmokeBomb>();\n                    break;\n\n                case MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Asteroid_Killer:\n                    shot = Shot<MyAsteroidKiller>();\n                    break;\n\n                case MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Directional_Explosive:\n                    shot = Shot<MyDirectionalExplosive>();\n                    break;\n\n                case MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Time_Bomb:\n                    shot = Shot<MyTimeBomb>();\n                    break;\n\n                case MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Remote_Bomb:\n                    shot = Shot<MyRemoteBomb>();\n                    break;\n\n                case MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Hologram:\n                    shot = Shot<MyHologram>();\n                    break;\n\n                case MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Gravity_Bomb:\n                    shot = Shot<MyGravityBomb>();\n                    break;\n\n                case MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Remote_Camera:\n                    shot = Shot<MyRemoteCamera>();\n                    break;\n\n                case MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_EMP_Bomb:\n                    shot = Shot<MyEMPBomb>();\n                    break;\n            }\n\n            if (!shot)\n                return false;\n\n            AddWeaponCue(MySoundCuesEnum.WepUnivLaunch3d);\n\n            var smokeEffect = MyParticlesManager.CreateParticleEffect((int) MyParticleEffectsIDEnum.Smoke_SmallGunShot);\n            smokeEffect.WorldMatrix = Matrix.CreateWorld(m_positionMuzzleInWorldSpace, WorldMatrix.Forward, WorldMatrix.Up);\n\n            m_lastTimeShoot = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n            return true;\n        }\n\n        bool Shot<T>() where T : class, IUniversalLauncherShell, new()\n        {\n            T shell = MyUniversalLauncherShells.Allocate<T>(Parent.EntityId.Value.PlayerId);\n            if (shell != null)\n            {\n                Vector3 forwardVelocity = MyMath.ForwardVectorProjection(this.WorldMatrix.Forward,\n                                                                         GetParentMinerShip().Physics.LinearVelocity);\n\n                if (MinerWars.AppCode.Game.Managers.Session.MySession.Is25DSector)\n                    m_positionMuzzleInWorldSpace.Y = 0;\n\n                shell.Start(m_positionMuzzleInWorldSpace, forwardVelocity, WorldMatrix.Forward, 100, Parent);\n\n                return true;\n            }\n\n            return false;\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Weapons/Ammo/UniversalLauncher/MyUniversalLauncherShells.cs",
    "content": "﻿using MinerWars.CommonLIB.AppCode.Generics;\n\nnamespace MinerWars.AppCode.Game.Entities.Weapons.UniversalLauncher\n{\n    using System;\n    using System.Collections.Generic;\n    using MinerWarsMath;\n    using SysUtils.Utils;\n    using Utils;\nusing MinerWars.AppCode.Game.Sessions;\n\n    interface IUniversalLauncherShell\n    {\n        /// <summary>\n        /// Gets or sets an optional time to activate the shell, in milliseconeds.\n        /// </summary>\n        int? TimeToActivate { get; set; }\n\n        void Init();\n        void Start(Vector3 position, Vector3 initialVelocity, Vector3 direction, float impulseMultiplier, MyEntity owner);\n    }\n\n    interface IUniversalLauncherShellsPool\n    {\n        void InitAll();\n        void ReloadAll();\n\n        T Allocate<T>() where T : class, IUniversalLauncherShell, new();\n        void Remove(IUniversalLauncherShell item);\n        int GetActiveCount();\n    }\n\n    /// <summary>\n    /// Preallocates various ammo types used in universal launcher\n    /// </summary>\n    /// <typeparam name=\"T\"></typeparam>\n    class MyUniversalLauncherShellsPool<T> : MyObjectsPool<T>, IUniversalLauncherShellsPool where T : class, IUniversalLauncherShell, new() \n    {\n        public MyUniversalLauncherShellsPool(int capacity):base(capacity)\n        { }\n\n        public void InitAll()\n        {\n            foreach (LinkedListNode<T> item in GetPreallocatedItemsArray())\n            {\n                item.Value.Init();\n            }\n        }\n\n        public void ReloadAll()\n        {\n            foreach (LinkedListNode<T> item in GetPreallocatedItemsArray())\n            {\n                var entity = item.Value as MyEntity;\n                if (entity != null)\n                {\n                    if (entity.ModelLod0 != null)\n                        entity.ModelLod0.LoadData();\n                    if (entity.ModelLod1 != null)\n                        entity.ModelLod1.LoadData();\n                    if (entity.ModelLod2 != null)\n                        entity.ModelLod2.LoadData();\n                }\n            }\n        }\n\n        public U Allocate<U>() where U : class, IUniversalLauncherShell, new()\n        {\n            return Allocate(true) as U;\n        }\n\n        public void Remove(IUniversalLauncherShell item) \n        {\n            Deallocate(item as T);\n        }\n    }\n\n    static class MyUniversalLauncherShells\n    {\n        static Dictionary<Type, IUniversalLauncherShellsPool>[] m_objectsPools;\n        static bool poolsCreated = false;\n\n        public static void LoadData(bool isMultiplayer)\n        {\n            int poolsCount;\n            if (isMultiplayer)\n                poolsCount = MyMultiplayerGameplay.MaxPlayers;\n            else\n                poolsCount = 1;\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyUniversalLauncherShells.LoadData\");\n\n            MyMwcLog.WriteLine(\"MyPhysObjectUniversalLauncherLoads.LoadContent() - START\");\n            MyMwcLog.IncreaseIndent();\n\n            if (!poolsCreated || m_objectsPools.Length < poolsCount)\n            {\n                m_objectsPools = new Dictionary<Type, IUniversalLauncherShellsPool>[poolsCount];\n\n                for (int i = 0; i < m_objectsPools.Length; i++)\n                {\n                    var item = m_objectsPools[i] = new Dictionary<Type, IUniversalLauncherShellsPool>();\n                    createShellsPool<MyMineBasic>(MyUniversalLauncherConstants.MAX_BASICMINES_COUNT, item);\n                    createShellsPool<MyMineBioChem>(MyUniversalLauncherConstants.MAX_BIOCHEMMINES_COUNT, item);\n                    createShellsPool<MyMineSmart>(MyUniversalLauncherConstants.MAX_SMARTMINES_COUNT, item);\n                    createShellsPool<MySphereExplosive>(MyUniversalLauncherConstants.MAX_SPHEREEXPLOSIVES_COUNT, item);\n                    createShellsPool<MyDecoyFlare>(MyUniversalLauncherConstants.MAX_DECOYFLARES_COUNT, item);\n                    createShellsPool<MyFlashBomb>(MyUniversalLauncherConstants.MAX_FLASHBOMBS_COUNT, item);\n                    createShellsPool<MyIlluminatingShell>(MyUniversalLauncherConstants.MAX_ILLUMINATINGSHELLS_COUNT, item);\n                    createShellsPool<MySmokeBomb>(MyUniversalLauncherConstants.MAX_SMOKEBOMBS_COUNT, item);\n                    createShellsPool<MyAsteroidKiller>(MyUniversalLauncherConstants.MAX_ASTEROIDKILLERS_COUNT, item);\n                    createShellsPool<MyDirectionalExplosive>(MyUniversalLauncherConstants.MAX_DIRECTIONALEXPLOSIVES_COUNT, item);\n                    createShellsPool<MyTimeBomb>(MyUniversalLauncherConstants.MAX_TIMEBOMBS_COUNT, item);\n                    createShellsPool<MyRemoteBomb>(MyUniversalLauncherConstants.MAX_REMOTEBOMBS_COUNT, item);\n                    createShellsPool<MyGravityBomb>(MyUniversalLauncherConstants.MAX_GRAVITYBOMBS_COUNT, item);\n                    createShellsPool<MyHologram>(MyUniversalLauncherConstants.MAX_HOLOGRAMS_COUNT, item);\n                    createShellsPool<MyRemoteCamera>(MyUniversalLauncherConstants.MAX_REMOTECAMERAS_COUNT, item);\n                    createShellsPool<MyEMPBomb>(MyUniversalLauncherConstants.MAX_EMPBOMB_COUNT, item);\n                }\n                poolsCreated = true;\n            }\n            else\n            {\n                foreach (var item in m_objectsPools)\n                {\n                    reloadShellsPool<MyMineBasic>(item);\n                    reloadShellsPool<MyMineBioChem>(item);\n                    reloadShellsPool<MyMineSmart>(item);\n                    reloadShellsPool<MySphereExplosive>(item);\n                    reloadShellsPool<MyDecoyFlare>(item);\n                    reloadShellsPool<MyFlashBomb>(item);\n                    reloadShellsPool<MyIlluminatingShell>(item);\n                    reloadShellsPool<MySmokeBomb>(item);\n                    reloadShellsPool<MyAsteroidKiller>(item);\n                    reloadShellsPool<MyDirectionalExplosive>(item);\n                    reloadShellsPool<MyTimeBomb>(item);\n                    reloadShellsPool<MyRemoteBomb>(item);\n                    reloadShellsPool<MyGravityBomb>(item);\n                    reloadShellsPool<MyHologram>(item);\n                    reloadShellsPool<MyRemoteCamera>(item);\n                    reloadShellsPool<MyEMPBomb>(item);\n                }\n            }\n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyUniversalLauncherShells.LoadContent() - END\");\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n\n        public static void UnloadData()\n        {\n        }\n\n        private static void createShellsPool<T>(int capacity, Dictionary<Type, IUniversalLauncherShellsPool> item) where T : class, IUniversalLauncherShell, new() \n        {\n            IUniversalLauncherShellsPool pool = new MyUniversalLauncherShellsPool<T>(capacity);\n            item.Add(typeof(T), pool);\n\n            pool.InitAll();\n        }\n\n        private static void reloadShellsPool<T>(Dictionary<Type, IUniversalLauncherShellsPool> item) where T : class, IUniversalLauncherShell\n        {\n            var pool = item[typeof(T)];\n\n            pool.ReloadAll();\n        }\n\n        //  Add new shell to the list\n        public static T Allocate<T>(byte userId) where T : class, IUniversalLauncherShell, new() \n        {\n            var pools = m_objectsPools[userId];\n            IUniversalLauncherShellsPool pool = pools[typeof(T)];\n\n            T newItem = pool.Allocate<T>();\n\n            return newItem;\n        }\n\n        public static void Remove(IUniversalLauncherShell shell, byte userId)\n        {\n            var pools = m_objectsPools[userId];\n            IUniversalLauncherShellsPool pool = pools[shell.GetType()];\n            pool.Remove(shell);\n            MyEntities.RemoveFromClosedEntities(shell as MyEntity);\n        }\n\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Weapons/Guns/MyAutocanonGun.cs",
    "content": "﻿using System;\n\nnamespace MinerWars.AppCode.Game.Entities.Weapons\n{\n    using System.Text;\n    using App;\n    using Audio;\n    using CommonLIB.AppCode.ObjectBuilders.SubObjects;\n    using CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\n    using CommonLIB.AppCode.Utils;\n    using MinerWarsMath;\n    \n    using Models;\n    using TransparentGeometry;\n    using SysUtils;\n    using SysUtils.Utils;\n    using Utils;\n    using MinerWars.AppCode.Game.Render;\n    using MinerWars.CommonLIB.AppCode.ObjectBuilders;\n    using MinerWars.AppCode.Game.TransparentGeometry.Particles;\n    using MinerWars.AppCode.Game.Managers.Session;\n    using MinerWars.AppCode.Game.Gameplay;\n    using MinerWars.AppCode.Game.World.Global;\n\n    class MyAutocanonGun : MySmallShipGunBase\n    {\n        const MySoundCuesEnum AUTOCANON_RELEASE = MySoundCuesEnum.WepAutocanonRel3d;\n        const MySoundCuesEnum AUTOCANON_ATTACK = MySoundCuesEnum.WepAutocanon3Fire3d_nonLoop;\n        const MySoundCuesEnum AUTOCANON_ATTACK_LOOP = MySoundCuesEnum.WepAutocanonFire3d;\n\n        float m_rotationAngle;                          //  Actual rotation angle (not rotation speed) around Z axis\n        int m_lastTimeShoot;                            //  When was this gun last time shooting\n\n        float m_rotationTimeout;\n\n        bool m_cannonMotorEndPlayed;\n\n        //  Muzzle flash parameters, with random values at each shot\n        float m_muzzleFlashLength;\n        float m_muzzleFlashRadius;\n\n        //  When gun fires too much, we start generating smokes at the muzzle\n        int m_smokeLastTime;\n        int m_smokesToGenerate;\n\n\n        MyAutocannonBarrel m_barrel;\n        Matrix m_barrelMatrix;\n\n        MyParticleEffect m_smokeEffect;\n\n        public override void Init(StringBuilder hudLabelText, MySmallShip parentObject,\n            Vector3 position, Vector3 forwardVector, Vector3 upVector,\n            MyMwcObjectBuilder_SmallShip_Weapon objectBuilder)\n        {\n            base.Init(hudLabelText, MyModelsEnum.Autocannon_Base, MyMaterialType.METAL, parentObject, \n                position, forwardVector, upVector, objectBuilder);\n\n            m_rotationAngle = MyMwcUtils.GetRandomRadian();\n            m_lastTimeShoot = MyConstants.FAREST_TIME_IN_PAST;\n            m_smokeLastTime = MyConstants.FAREST_TIME_IN_PAST;\n            m_smokesToGenerate = 0;\n            m_cannonMotorEndPlayed = true;\n            m_rotationTimeout = (float)MyAutocanonConstants.ROTATION_TIMEOUT + MyMwcUtils.GetRandomFloat(-500, +500);\n\n            m_barrelMatrix = ModelLod0.Dummies[\"BARREL_POSITION\"].Matrix;\n            m_barrel = new MyAutocannonBarrel();\n            m_barrel.Init(null, m_barrelMatrix, this);\n        }\n\n        //  Every child of this base class must implement Shot() method, which shots projectile or missile.\n        //  Method returns true if something was shot. False if not (because interval between two shots didn't pass)\n        public override bool Shot(MyMwcObjectBuilder_SmallShip_Ammo usedAmmo)\n        {\n            if (GetParentMinerShip() == null)\n            {\n                return false;\n            }\n\n            //  Allow shoting only at intervals\n            if ((MyMinerGame.TotalGamePlayTimeInMilliseconds - m_lastTimeShoot) < MyAutocanonConstants.SHOT_INTERVAL_IN_MILISECONDS && !IsDummy) return false;\n            //  Stop 'release cue' if playing\n            MySoundCue? autocanonReleaseCue = GetParentMinerShip().UnifiedWeaponCueGet(AUTOCANON_RELEASE);\n            if ((autocanonReleaseCue != null) && (autocanonReleaseCue.Value.IsPlaying == true))\n            {\n                autocanonReleaseCue.Value.Stop(SharpDX.XACT3.StopFlags.Immediate);\n            }\n\n            //  Angle of muzzle flash particle\n            m_muzzleFlashLength = MyMwcUtils.GetRandomFloat(3, 4) * m_barrel.GetMuzzleSize();\n            m_muzzleFlashRadius = MyMwcUtils.GetRandomFloat(1.8f, 2.2f) * m_barrel.GetMuzzleSize();\n\n            //  Increase count of smokes to draw\n            SmokesToGenerateIncrease();\n\n            //Use looping cue only in playership\n            MySoundCuesEnum attackCue = GetParentMinerShip() == MySession.PlayerShip ? AUTOCANON_ATTACK_LOOP : AUTOCANON_ATTACK;\n\n            //  Start 'attack and loop' cue (shooting)\n            MySoundCue? autocanonAttackLoopCue = GetParentMinerShip().UnifiedWeaponCueGet(attackCue);\n            if ((autocanonAttackLoopCue == null) || (autocanonAttackLoopCue.Value.IsPlaying == false))\n            {\n                //MyMwcLog.WriteLine(\"Adding new AUTOCANNON attack loop\");\n                GetParentMinerShip().UnifiedWeaponCueSet(\n                    attackCue,\n                    MyAudio.AddCue2dOr3d(GetParentMinerShip(), attackCue,\n                    m_positionMuzzleInWorldSpace, WorldMatrix.Forward, WorldMatrix.Up, Parent.Physics.LinearVelocity));\n            }\n\n            MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum ammoType = MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_Basic;\n            if (usedAmmo != null) //TODO: bot fires without ammo\n            {\n                ammoType = usedAmmo.AmmoType;\n            }\n\n            MyAmmoProperties ammoProperties = MyAmmoConstants.GetAmmoProperties(ammoType);\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyAutocannonGun.Shot add projectile\");\n\n            if(MyMwcFinalBuildConstants.ENABLE_TRAILER_SAVE)\n            {\n                MinerWars.AppCode.Game.Trailer.MyTrailerSave.UpdateGunShot(this.Parent, Trailer.MyTrailerGunsShotTypeEnum.PROJECTILE);\n            }\n\n            AddProjectile(ammoProperties, this);\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            m_cannonMotorEndPlayed = false;\n            m_lastTimeShoot = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n\n            //  We shot one projectile\n            return true;\n        }\n\n        public override void Close()\n        {\n            StopAllSounds();\n            base.Close();\n        }\n\n        public override void OnWorldPositionChanged(object source)\n        {\n            base.OnWorldPositionChanged(source);\n\n            if (m_barrel != null)\n            {\n                m_positionMuzzleInWorldSpace = GetMuzzlePosition(m_barrel.GetMuzzlePosition());\n                m_barrel.SetData(ref m_worldMatrixForRenderingFromCockpitView, m_rotationAngle);\n            }\n        }\n\n        public override void UpdateAfterSimulation()\n        {\n            base.UpdateAfterSimulation();\n\n            //  Cannon is rotating while shoting. After that, it will slow-down.\n            float normalizedRotationSpeed = 1.0f - MathHelper.Clamp((float)(MyMinerGame.TotalGamePlayTimeInMilliseconds - m_lastTimeShoot) / m_rotationTimeout, 0, 1);\n            normalizedRotationSpeed = MathHelper.SmoothStep(0, 1, normalizedRotationSpeed);\n            m_rotationAngle -= normalizedRotationSpeed * MyAutocanonConstants.ROTATION_SPEED_PER_SECOND * MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS;\n\n            Matrix worldMatrix = this.WorldMatrix;\n\n            m_positionMuzzleInWorldSpace = GetMuzzlePosition(m_barrel.GetMuzzlePosition());\n            m_barrel.SetData(ref m_worldMatrixForRenderingFromCockpitView, m_rotationAngle);\n\n            //  Handle 'motor loop and motor end' cues\n            if ((m_cannonMotorEndPlayed == false) && ((MyMinerGame.TotalGamePlayTimeInMilliseconds - m_lastTimeShoot) > MyAutocanonConstants.SHOT_INTERVAL_IN_MILISECONDS))\n            {\n                //  Stop 'shooting loop' cue\n                if (MyMinerGame.TotalGamePlayTimeInMilliseconds > m_lastTimeShoot + MyAutocanonConstants.MIN_TIME_RELEASE_INTERVAL_IN_MILISECONDS)\n                {\n                    MySoundCue? autocanonAttackLoopCue = GetParentMinerShip().UnifiedWeaponCueGet(AUTOCANON_ATTACK_LOOP);\n                    if ((autocanonAttackLoopCue != null) && (autocanonAttackLoopCue.Value.IsPlaying == true))\n                    {\n                        autocanonAttackLoopCue.Value.Stop(SharpDX.XACT3.StopFlags.Immediate);\n                    }\n                    autocanonAttackLoopCue = GetParentMinerShip().UnifiedWeaponCueGet(AUTOCANON_ATTACK);\n                    if ((autocanonAttackLoopCue != null) && (autocanonAttackLoopCue.Value.IsPlaying == true))\n                    {\n                        autocanonAttackLoopCue.Value.Stop(SharpDX.XACT3.StopFlags.Immediate);\n                    }\n\n                    //  Start 'release' cue\n                    MySoundCue? autocanonReleaseCue = GetParentMinerShip().UnifiedWeaponCueGet(AUTOCANON_RELEASE);\n                    if ((autocanonReleaseCue == null) || (autocanonReleaseCue.Value.IsPlaying == false))\n                    {\n                        GetParentMinerShip().UnifiedWeaponCueSet(\n                            AUTOCANON_RELEASE,\n                            MyAudio.AddCue2dOr3d(GetParentMinerShip(), AUTOCANON_RELEASE,\n                                Parent.GetPosition(), Parent.WorldMatrix.Forward, Parent.WorldMatrix.Up,\n                                Parent.Physics.LinearVelocity));\n                    }\n\n                    m_cannonMotorEndPlayed = true;\n                }\n            }\n\n            //  Update sound position\n            MySoundCue? updateAutocanonAttackLoopCue = GetParentMinerShip().UnifiedWeaponCueGet(AUTOCANON_ATTACK_LOOP);\n            if ((updateAutocanonAttackLoopCue != null) && (updateAutocanonAttackLoopCue.Value.IsPlaying == true))\n            {\n                MyAudio.UpdateCuePosition(updateAutocanonAttackLoopCue, m_positionMuzzleInWorldSpace, WorldMatrix.Forward,\n                    WorldMatrix.Up, Parent.Physics.LinearVelocity);\n            }\n            updateAutocanonAttackLoopCue = GetParentMinerShip().UnifiedWeaponCueGet(AUTOCANON_ATTACK);\n            if ((updateAutocanonAttackLoopCue != null) && (updateAutocanonAttackLoopCue.Value.IsPlaying == true))\n            {\n                MyAudio.UpdateCuePosition(updateAutocanonAttackLoopCue, m_positionMuzzleInWorldSpace, WorldMatrix.Forward,\n                    WorldMatrix.Up, Parent.Physics.LinearVelocity);\n            }\n\n            //  Update sound position\n            MySoundCue? updateAutocanonReleaseCue = GetParentMinerShip().UnifiedWeaponCueGet(AUTOCANON_RELEASE);\n            if ((updateAutocanonReleaseCue != null) && (updateAutocanonReleaseCue.Value.IsPlaying == true))\n            {\n                MyAudio.UpdateCuePosition(updateAutocanonReleaseCue, m_positionMuzzleInWorldSpace, WorldMatrix.Forward,\n                    WorldMatrix.Up, Parent.Physics.LinearVelocity);\n            }\n\n            //  If gun fires too much, we start generating smokes at the muzzle\n            if ((MyMinerGame.TotalGamePlayTimeInMilliseconds - m_smokeLastTime) >= (MyAutocanonConstants.SMOKES_INTERVAL_IN_MILISECONDS))\n            {\n                m_smokeLastTime = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n\n                SmokesToGenerateDecrease();\n\n                if (m_smokesToGenerate > 0 && m_smokeEffect == null)\n                {\n                    if (MyCamera.GetDistanceWithFOV(GetPosition()) < 150)\n                    {\n                        m_smokeEffect = MyParticlesManager.CreateParticleEffect((int)MyParticleEffectsIDEnum.Smoke_Autocannon);\n                        m_smokeEffect.WorldMatrix = WorldMatrix;\n                        m_smokeEffect.OnDelete += new EventHandler(m_smokeEffect_OnDelete);\n                    }\n                }\n            }\n\n            if (m_smokeEffect != null)\n            {\n                float smokeOffset = 0.2f;\n                if ((MinerWars.AppCode.Game.GUI.MyGuiScreenGamePlay.Static.CameraAttachedTo == MinerWars.AppCode.Game.GUI.MyCameraAttachedToEnum.PlayerMinerShip) &&\n                    (Parent == MySession.PlayerShip))\n                {\n                    smokeOffset = 0.0f;\n                }\n\n                m_smokeEffect.WorldMatrix = Matrix.CreateTranslation(m_positionMuzzleInWorldSpace + worldMatrix.Forward * smokeOffset);\n                m_smokeEffect.UserBirthMultiplier = m_smokesToGenerate;\n            }\n        }\n\n        void m_smokeEffect_OnDelete(object sender, EventArgs e)\n        {\n            m_smokeEffect = null;\n        }\n\n\n        //  Only for drawing this object, because some objects need to use special world matrix\n        public Matrix GetWorldMatrixForDraw(Matrix matrix)\n        {\n            Matrix outMatrix;\n            Matrix.Multiply(ref matrix, ref MyCamera.InversePositionTranslationMatrix, out outMatrix);\n            return outMatrix;\n        }\n\n\n        //  Draw muzzle flash not matter if in frustum (it's because it's above the frustum)\n        public override bool Draw(MyRenderObject renderObject)\n        {\n            if (base.Draw(renderObject) == false) return false;\n            \n            m_barrel.Draw();\n\n            if (MyMinerGame.IsPaused())\n                return false;\n\n            //  Draw muzzle flash\n            int deltaTime = MyMinerGame.TotalGamePlayTimeInMilliseconds - m_lastTimeShoot;\n            if (deltaTime <= MyMachineGunConstants.MUZZLE_FLASH_MACHINE_GUN_LIFESPAN)\n            {\n                MyParticleEffects.GenerateMuzzleFlash(m_positionMuzzleInWorldSpace, WorldMatrix.Forward, m_muzzleFlashRadius, m_muzzleFlashLength, MyRender.GetCurrentLodDrawPass() == MyLodTypeEnum.LOD_NEAR);\n            }\n\n            if (m_smokeEffect != null)\n                m_smokeEffect.Near = MyRender.GetCurrentLodDrawPass() == MyLodTypeEnum.LOD_NEAR;\n\n            return true;\n        }\n\n        protected override MyMwcObjectBuilder_Base GetObjectBuilderInternal(bool getExactCopy)\n        {\n            MyMwcObjectBuilder_Base objectBuilder = base.GetObjectBuilderInternal(getExactCopy);\n            if (objectBuilder == null) \n            {\n                objectBuilder = new MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Autocanon);\n            }\n            return objectBuilder;\n        }\n\n        void ClampSmokesToGenerate()\n        {\n            m_smokesToGenerate = MyMwcUtils.GetClampInt(m_smokesToGenerate, 0, MyAutocanonConstants.SMOKES_MAX);\n        }\n\n        void SmokesToGenerateIncrease()\n        {\n            m_smokesToGenerate += MyAutocanonConstants.SMOKE_INCREASE_PER_SHOT;\n            ClampSmokesToGenerate();\n        }\n\n        void SmokesToGenerateDecrease()\n        {\n            m_smokesToGenerate -= MyAutocanonConstants.SMOKE_DECREASE;\n            ClampSmokesToGenerate();\n        }\n\n        public override void StopAllSounds()\n        {\n            base.StopAllSounds();\n\n            var minerShip = GetParentMinerShip();\n            if (minerShip != null)\n            {\n                MySoundCue? autocanonAttackLoopCue = GetParentMinerShip().UnifiedWeaponCueGet(AUTOCANON_ATTACK_LOOP);\n                if ((autocanonAttackLoopCue != null) && (autocanonAttackLoopCue.Value.IsPlaying == true))\n                {\n                    autocanonAttackLoopCue.Value.Stop(SharpDX.XACT3.StopFlags.Immediate);\n                }\n                autocanonAttackLoopCue = GetParentMinerShip().UnifiedWeaponCueGet(AUTOCANON_ATTACK);\n                if ((autocanonAttackLoopCue != null) && (autocanonAttackLoopCue.Value.IsPlaying == true))\n                {\n                    autocanonAttackLoopCue.Value.Stop(SharpDX.XACT3.StopFlags.Immediate);\n                }\n            }\n        }\n    }\n\n\n    class MyAutocannonBarrel : MyEntity\n    {\n        float m_rotationAngle;                          //  Actual rotation angle (not rotation speed) around Z axis\n        Matrix m_worldMatrixForRenderingFromCockpitView = Matrix.Identity;\n        Matrix m_muzzleMatrix;\n\n        public virtual void Init(StringBuilder hudLabelText, Matrix localMatrix, MyAutocanonGun parentObject)\n        {\n            base.Init(hudLabelText, MyModelsEnum.Autocannon_Barrel, null, parentObject, null, null);\n            LocalMatrix = Matrix.CreateTranslation(localMatrix.Translation);\n\n            m_frustumCheckBeforeDrawEnabled = false;\n            m_muzzleMatrix = ModelLod0.Dummies[\"MUZZLE_PARTICLE\"].Matrix;\n            Save = false;\n        }\n\n        public void SetData(ref Matrix worldMatrixForRenderingFromCockpitView, float rotationAngle)\n        {\n            m_worldMatrixForRenderingFromCockpitView = worldMatrixForRenderingFromCockpitView;\n            m_rotationAngle = rotationAngle;\n        }\n\n        public override Matrix GetWorldMatrixForDraw()\n        {          \n            Matrix cannonToDraw;\n            \n            if ((MinerWars.AppCode.Game.GUI.MyGuiScreenGamePlay.Static.CameraAttachedTo == MinerWars.AppCode.Game.GUI.MyCameraAttachedToEnum.PlayerMinerShip)\n             &&  (this.Parent.Parent == MySession.PlayerShip))\n            {\n                if (MyFakes.MWBUILDER)\n                {\n                    float stepRatio = ((MySmallShip)Parent.Parent).GetStepRatio();\n                    stepRatio = stepRatio * 2 - 1;\n                    //Matrix rot = Matrix.CreateRotationY((float)System.Math.Sin((float)MyMinerGameDX.TotalGamePlayTimeInMilliseconds * 0.005f) * 0.6f);\n                    Matrix rot = Matrix.CreateRotationY((float)System.Math.Sin(stepRatio * MathHelper.TwoPi * 0.5f) * 0.6f);\n\n                    cannonToDraw = Matrix.CreateRotationZ(m_rotationAngle) * rot * LocalMatrix * m_worldMatrixForRenderingFromCockpitView;\n                }\n                else\n                {\n                    cannonToDraw = Matrix.CreateRotationZ(m_rotationAngle) * LocalMatrix * m_worldMatrixForRenderingFromCockpitView;\n                }\n            }\n            else  \n            {\n                cannonToDraw = Matrix.CreateRotationZ(m_rotationAngle) * WorldMatrix;\n\n                if (Parent == null)\n                    return cannonToDraw;\n\n                cannonToDraw = (Parent as MyAutocanonGun).GetWorldMatrixForDraw(cannonToDraw);\n            }\n\n            return cannonToDraw;\n        }\n        public override bool DebugDraw()\n        {\n            if (!base.DebugDraw())\n                return false;\n\n            if (MyMwcFinalBuildConstants.DrawHelperPrimitives)\n            {\n                MyDebugDraw.DrawSphereWireframe(GetPosition(), 0.1f, new Vector3(0, 1, 0), 1);\n                MyDebugDraw.DrawAxis(WorldMatrix, 5, 1);\n            }\n\n            return true;\n        }\n\n        public Vector3 GetMuzzlePosition()\n        {\n            return (m_muzzleMatrix * WorldMatrix).Translation;\n        }\n\n        public float GetMuzzleSize()\n        {\n            return m_muzzleMatrix.Right.Length();\n        }\n\n        \n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Weapons/Guns/MyAutomaticRifleSilencerGun.cs",
    "content": "﻿using MinerWars.AppCode.Game.TransparentGeometry.Particles;\n\nnamespace MinerWars.AppCode.Game.Entities.Weapons\n{\n    using System;\n    using System.Text;\n    using App;\n    using Audio;\n    using CommonLIB.AppCode.ObjectBuilders.SubObjects;\n    using CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\n    using CommonLIB.AppCode.Utils;\n    using MinerWarsMath;\n    using Models;\n    using TransparentGeometry;\n    using Utils;\n    using MinerWars.CommonLIB.AppCode.ObjectBuilders;\n    using MinerWars.AppCode.Game.Gameplay;\n    using MinerWars.AppCode.Game.Render;\n\n    class MyAutomaticRifleSilencerGun : MySmallShipGunBase\n    {\n        int m_lastTimeShoot;\n\n        public override void Init(StringBuilder hudLabelText, MySmallShip parentObject,\n            Vector3 position, Vector3 forwardVector, Vector3 upVector,\n            MyMwcObjectBuilder_SmallShip_Weapon objectBuilder)\n        {\n            base.Init(hudLabelText, MyModelsEnum.Rifle, MyMaterialType.METAL, parentObject, position,\n                forwardVector, upVector, objectBuilder);\n        }\n\n        public override bool Shot(MyMwcObjectBuilder_SmallShip_Ammo usedAmmo)\n        {\n            if (usedAmmo == null || (MyMinerGame.TotalGamePlayTimeInMilliseconds - m_lastTimeShoot) < MyARSConstants.SHOT_INTERVAL_IN_MILISECONDS) \n                return false;\n\n            m_positionMuzzleInWorldSpace += WorldMatrix.Forward + WorldMatrix.Up * 0.2f;\n\n            MyAmmoProperties ammoProperties = MyAmmoConstants.GetAmmoProperties(usedAmmo.AmmoType);\n            AddProjectile(ammoProperties, this);\n\n            m_lastTimeShoot = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n            AddWeaponCue(ammoProperties.ShotSound);\n\n            if (SysUtils.MyMwcFinalBuildConstants.ENABLE_TRAILER_SAVE)\n            {\n                MinerWars.AppCode.Game.Trailer.MyTrailerSave.UpdateGunShot(this.Parent, Trailer.MyTrailerGunsShotTypeEnum.PROJECTILE);\n            }\n\n            MyParticleEffect startEffect = MyParticlesManager.CreateParticleEffect((int)MyParticleEffectsIDEnum.Smoke_SmallGunShot);\n            startEffect.WorldMatrix = Matrix.CreateTranslation(m_positionMuzzleInWorldSpace);\n\n            return true;\n        }\n\n        public override bool Draw(MyRenderObject renderObject)\n        {\n            if (!base.Draw(renderObject))\n                return false;\n            /*\n            //  Draw muzzle flash\n            int deltaTime = MyMinerGame.TotalGamePlayTimeInMilliseconds - m_lastTimeShoot;\n            if (deltaTime <= MyMachineGunConstants.MUZZLE_FLASH_MACHINE_GUN_LIFESPAN)\n            {\n                float FAKE_RADIUS = MyMwcUtils.GetRandomFloat(0.5f, 1.5f);\n                float FAKE_THICKNESS = MyMwcUtils.GetRandomFloat(FAKE_RADIUS - 0.1f, FAKE_RADIUS);\n                float FAKE_LENGTH = MyMwcUtils.GetRandomFloat(7, 8);\n                float FAKE_ANGLE = MyMwcUtils.GetRandomFloat(0, MathHelper.PiOver2);\n\n                //float colorComponent = 1;\n                float colorComponent = 1 - (float)deltaTime / (float)MyMachineGunConstants.MUZZLE_FLASH_MACHINE_GUN_LIFESPAN;\n                colorComponent = 1 - (float)Math.Pow(colorComponent, 5);\n                colorComponent *= 1.3f;\n                //Vector4 color = new Vector4(1.0f, 1.0f, 1.0f, 1);\n                Vector4 color = new Vector4(colorComponent, colorComponent, colorComponent, 1);\n\n                MyTransparentGeometry.AddLineBillboard(MyTransparentMaterialEnum.MuzzleFlashMachineGunSide, color, m_positionMuzzleInWorldSpace + GetUp() * 0.4f,\n                    WorldMatrix.Forward, FAKE_LENGTH, FAKE_THICKNESS);\n                MyTransparentGeometry.AddPointBillboard(MyTransparentMaterialEnum.MuzzleFlashMachineGunFront, color, m_positionMuzzleInWorldSpace + WorldMatrix.Forward + GetUp() * 0.4f, FAKE_RADIUS, FAKE_ANGLE);\n            }\n              */\n\n            return true;\n        }\n\n        protected override MyMwcObjectBuilder_Base GetObjectBuilderInternal(bool getExactCopy)\n        {\n            MyMwcObjectBuilder_Base objectBuilder = base.GetObjectBuilderInternal(getExactCopy);\n            if (objectBuilder == null)\n            {\n                objectBuilder = new MyMwcObjectBuilder_SmallShip_Weapon(WeaponType = MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Automatic_Rifle_With_Silencer);\n    }\n            return objectBuilder;\n}\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Weapons/Guns/MyCannonGun.cs",
    "content": "﻿using System;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.AppCode.Game.Models;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.AppCode.Physics;\nusing MinerWars.AppCode.Game.Physics;\n\n\nnamespace MinerWars.AppCode.Game.Entities.Weapons\n{\n    using MinerWars.CommonLIB.AppCode.ObjectBuilders;\n\n    class MyCannonGun : MySmallShipGunBase\n    {\n        int m_lastTimeShoot;                            //  When was this gun last time shooting\n        Vector3 m_lastSmokePosition;\n\n\n        public override void Init(StringBuilder hudLabelText, MySmallShip parentObject,\n            Vector3 position, Vector3 forwardVector, Vector3 upVector,\n            MyMwcObjectBuilder_SmallShip_Weapon objectBuilder)\n        {\n            base.Init(hudLabelText, MyModelsEnum.MissileLauncher, MyMaterialType.METAL, parentObject,\n                position, forwardVector, upVector, objectBuilder);\n\n            m_lastTimeShoot = MyConstants.FAREST_TIME_IN_PAST;\n        }\n\n        //  Every child of this base class must implement Shot() method, which shots projectile or missile.\n        //  Method returns true if something was shot. False if not (because interval between two shots didn't pass)\n        public override bool Shot(MyMwcObjectBuilder_SmallShip_Ammo usedAmmo)\n        {\n            if ((MyMinerGame.TotalGamePlayTimeInMilliseconds - m_lastTimeShoot) < MyCannonConstants.SHOT_INTERVAL_IN_MILISECONDS && !IsDummy) return false;\n\n            //  Throw ship backward (by deviated vector)\n            this.Parent.Physics.AddForce(MyPhysicsForceType.ADD_BODY_FORCE_AND_BODY_TORQUE,\n                MyUtilRandomVector3ByDeviatingVector.GetRandom(Vector3.Backward, MathHelper.ToRadians(5)) * MyMwcUtils.GetRandomFloat(40000, 50000), null, null);\n\n            //  Play missile launch cue (one-time)\n            //AddWeaponCue(MySoundCuesEnum.WepMissileLaunch3d);\n            AddWeaponCue(MySoundCuesEnum.WepCannon3d);\n\n            Vector3 forwardVelocity = MyMath.ForwardVectorProjection(this.WorldMatrix.Forward, GetParentMinerShip().Physics.LinearVelocity);\n            //Vector3 forwardVelocity = this.WorldMatrix.Forward;\n\n            Vector3 deviatedVector = GetDeviatedVector(MinerWars.AppCode.Game.Gameplay.MyAmmoConstants.GetAmmoProperties(usedAmmo.AmmoType));\n\n            var cannonShotStartPos = GetPosition() + WorldMatrix.Forward * WorldVolume.Radius;\n            cannonShotStartPos = CorrectPosition(cannonShotStartPos, deviatedVector, Parent);\n\n            //  Create and fire missile - but deviate missile direction be random angle\n            MyCannonShots.Add(cannonShotStartPos, forwardVelocity, deviatedVector, usedAmmo, (MySmallShip) Parent);\n\n            m_lastTimeShoot = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n\n            m_lastSmokePosition = GetSmokePosition();\n\n            //  We shot one missile\n            return true;\n        }\n\n        protected override MyMwcObjectBuilder_Base GetObjectBuilderInternal(bool getExactCopy)\n        {\n            MyMwcObjectBuilder_Base objectBuilder = base.GetObjectBuilderInternal(getExactCopy);\n            if (objectBuilder == null)\n            {                \n                objectBuilder = new MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Cannon);                \n            }\n            return objectBuilder;\n        }\n\n        Vector3 GetSmokePosition()\n        {\n            return m_positionMuzzleInWorldSpace - WorldMatrix.Forward * 0.5f;\n        }\n\n        /// <summary>\n        /// Check if the missile does not collide too close to ship\n        /// after shooting and correct its starting position if it does.\n        /// </summary>\n        private Vector3 CorrectPosition(Vector3 position, Vector3 direction, MyEntity viewerEntity)\n        {\n            var predictedTrajectory = new MyLine(\n                position - MyMissileConstants.DISTANCE_TO_CHECK_MISSILE_CORRECTION * direction,\n                position + MyMissileConstants.DISTANCE_TO_CHECK_MISSILE_CORRECTION * direction,\n                false);\n            var intersection = MyEntities.GetIntersectionWithLine(ref predictedTrajectory, this, viewerEntity);\n            if (intersection != null)\n            {\n                position = viewerEntity.GetPosition();\n            }\n            return position;\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Weapons/Guns/MyGunBase.cs",
    "content": "﻿namespace MinerWars.AppCode.Game.Entities.Weapons\n{\n    using System.Text;\n    using CommonLIB.AppCode.ObjectBuilders;\n    using CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\n    using MinerWarsMath;\n    using Models;\n    using Utils;\n    using System;\n    using MinerWars.AppCode.Game.Gameplay;\n    using MinerWars.AppCode.Game.World.Global;\n    using MinerWars.AppCode.Game.Managers.Session;\n\n    abstract class MyGunBase : MyEntity\n    {\n        //  This is 'm_positionMuzzle' transformed into world space during every update (world space)\n        protected Vector3 m_positionMuzzleInWorldSpace;\n\n        // In multiplayer, weapon which is not owned by player is dummy, it don't deal damage, and physics force, projectiles won't explode, etc...\n        //public bool IsDummy;\n        public MyEntityIdentifier? LastShotId { get; protected set; }\n\n        public MyGunBase()\n            : base(false)\n        {\n            Save = false;\n        }\n\n        public virtual void Init(StringBuilder hudLabelText, MyModelsEnum? modelEnum, MyMaterialType materialType,\n            MyEntity parentObject, Vector3 position, Vector3 forwardVector, Vector3 upVector,\n            MyMwcObjectBuilder_Base objectBuilder, MyModelsEnum? collisionModelEnum = null)            \n        {\n            base.Init(hudLabelText, modelEnum, null, parentObject, null, objectBuilder, modelCollision: collisionModelEnum);\n            this.LocalMatrix = Matrix.CreateWorld(position, forwardVector, upVector);\n            //NeedsUpdate = true; //Smallship updates weapons manually\n            CastShadows = false;\n\n            PreloadTextures();\n        }\n\n        //  Every child of this base class must implement Shot() method, which shots projectile or missile.\n        //  Method returns true if something was shot. False if not (because interval between two shots didn't pass)\n        public abstract bool Shot(MyMwcObjectBuilder_SmallShip_Ammo usedAmmo);\n\n        // This gun or some of its ammo can have special functions. Implement this method to do something special.\n        public virtual void InvokeAmmoSpecialFunction() { }\n\n\n        public override void UpdateAfterSimulation()\n        {\n            base.UpdateAfterSimulation();\n\n            Matrix worldMatrix = this.WorldMatrix;\n\n            const float MUZZLE_POSITION_SAFE_EPSILON = 0.7f;\n            if (ModelLod0 != null)\n            {\n                m_positionMuzzleInWorldSpace = MyUtils.GetTransform(\n                    new Vector3(0, 0, -(ModelLod0.BoundingSphere.Radius / 1.0f) - MUZZLE_POSITION_SAFE_EPSILON),\n                    ref worldMatrix);\n            }\n        }\n\n        public abstract bool IsThisGunFriendly();\n\n        public float GetDeviatedAngleFromDamageRatio() \n        {\n            MyEntity topMostParent = GetTopMostParent();\n            if(MySession.PlayerShip != null &&\n               MyFactions.GetFactionsRelation(topMostParent, MySession.PlayerShip) == MyFactionRelationEnum.Enemy)\n            {\n                float degrees = (float)Math.Pow(120, topMostParent.GetDamageRatio() * 1.5 - 1.2) * 4f;\n                return MathHelper.ToRadians(degrees);\n            }\n            return 0f;\n        }\n\n        protected Vector3 GetDeviatedVector(MyAmmoProperties ammoProperties)\n        {\n            float deviateAngle = ammoProperties.DeviateAngle;\n\n            //  Create one projectile - but deviate projectile direction be random angle\n            if (IsThisGunFriendly())            \n                deviateAngle += MyGameplayConstants.GameplayDifficultyProfile.DeviatingAnglePlayerOnEnemy;            \n            else            \n                deviateAngle += MyGameplayConstants.GameplayDifficultyProfile.DeviatingAngleEnemyBotOnPlayer;\n\n            return MyUtilRandomVector3ByDeviatingVector.GetRandom(WorldMatrix.Forward, deviateAngle);\n        }        \n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Weapons/Guns/MyLargeShipAutocannon.cs",
    "content": "using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Models;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.AppCode.Physics;\nusing MinerWars.AppCode.Game.Physics;\nusing MinerWars.AppCode.App;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils;\nusing MinerWarsMath;\n\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.Prefabs;\nusing MinerWars.AppCode.Game.TransparentGeometry.Particles;\n\n\nnamespace MinerWars.AppCode.Game.Entities.Weapons\n{\n    using App;\n    using Audio;\n    using CommonLIB.AppCode.ObjectBuilders;\n    using MinerWars.AppCode.Game.Gameplay;\n    using MinerWars.AppCode.Game.Render;\n    using MinerWars.CommonLIB.AppCode.Import;\n\n    class MyLargeShipAutocannon : MyLargeShipGunBase\n    {\n        public override void Init(StringBuilder hudLabelText, MyEntity parentObject, Vector3 position, Vector3 forwardVector, Vector3 upVector, MyMwcObjectBuilder_Base objectBuilder)\n        {\n            base.Init(hudLabelText, MyModelsEnum.LargeShipAutocannonBase, MyMaterialType.METAL, parentObject, position, forwardVector, upVector, objectBuilder, MyModelsEnum.LargeShipAutocannonBase);\n\n            Matrix barrelMatrix = MyMath.NormalizeMatrix(ModelLod0.Dummies[\"axis\"].Matrix);\n\n            MyLargeShipAutocannonBarrel barrel = new MyLargeShipAutocannonBarrel();\n            barrel.Init(hudLabelText, barrelMatrix, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_High_Speed, this);\n            MountBarrel(barrel);\n\n            // User settings:\n            m_predictionIntervalConst_ms = 250;\n            m_checkTargetIntervalConst_ms = 150;\n            m_randomStandbyChangeConst_ms = 4000;\n\n            m_shootingSound = MySoundCuesEnum.WepAutocanonFire3d;\n            m_shootingSoundRelease = MySoundCuesEnum.WepAutocanonRel3d;\n        }\n    }\n\n\n    class MyLargeShipAutocannonBarrel : MyLargeShipBarrelBase\n    {\n        //private Vector3 m_muzzleFlashStartPosition;  // Position of the barrel muzzle flashes from the dummy\n        private Vector3 m_muzzleFlashPosition;\n        float m_projectileMaxTrajectory;\n        Vector3 m_projectileColor;\n\n        public void Init(StringBuilder hudLabelText, Matrix localMatrix, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum AmmoType, MyLargeShipGunBase parentObject)\n        {\n            base.Init(hudLabelText, MyModelsEnum.LargeShipAutocannonBarrel, null, localMatrix, AmmoType, parentObject);\n        }\n\n        public override bool Draw(MyRenderObject renderObject)\n        {\n            if (base.Draw(renderObject) == false) return false;\n          //  if (IsControlledByPlayer()) return true;\n\n            Matrix worldMatrix = WorldMatrix;\n            List<MyModelDummy> muzzles = GetMuzzleFlashMatrix();\n            Vector3 muzzleFlashPosition = MyUtils.GetTransform(muzzles[m_activeMuzzle].Matrix.Translation, ref worldMatrix);\n\n            // Draw muzzle flash:\n            int dt = MyMinerGame.TotalGamePlayTimeInMilliseconds - m_lastTimeShoot;\n            if (dt <= MyMachineGunConstants.MUZZLE_FLASH_MACHINE_GUN_LIFESPAN && m_muzzleFlashLength > 0)\n            {\n                MyParticleEffects.GenerateMuzzleFlash(muzzleFlashPosition, worldMatrix.Forward, m_muzzleFlashRadius, m_muzzleFlashLength);\n            }\n\n            // Draw smoke:\n            if (m_shotSmoke != null)\n            {\n                m_shotSmoke.UserBirthMultiplier = m_smokeToGenerate;\n                m_shotSmoke.WorldMatrix = Matrix.CreateTranslation(muzzleFlashPosition);\n            }\n\n            return true;\n        }\n\n        // Start shooting on the presented target in the queue:\n        public override bool StartShooting()\n        {\n            // start shooting this kind of ammo ...\n            if (!base.StartShooting())\n                return false;\n\n            if ((MyMinerGame.TotalGamePlayTimeInMilliseconds - m_lastTimeShoot) < (MyMachineGunConstants.SHOT_INTERVAL_IN_MILISECONDS/* * 0.75f*/))\n                return false;\n\n            // Set muzzle flashes:\n            m_muzzleFlashLength = MyMwcUtils.GetRandomFloat(4, 6);\n            m_muzzleFlashRadius = MyMwcUtils.GetRandomFloat(1.2f, 2.0f);\n\n            // Increse smoke to generate\n            IncreaseSmoke();\n\n            // Make random trajectories for the bullet:\n            Matrix worldMatrix = WorldMatrix;\n       \n            // get muzzel flash positions:\n            List<MyModelDummy> muzzles = GetMuzzleFlashMatrix();\n            m_activeMuzzle = muzzles.Count == 1 ? 0 : MyMwcUtils.GetRandomInt(muzzles.Count);\n\n            m_muzzleFlashPosition = MyUtils.GetTransform(muzzles[m_activeMuzzle].Matrix.Translation, ref worldMatrix);\n\n            if (m_shotSmoke == null)\n            {\n                m_shotSmoke = MyParticlesManager.CreateParticleEffect((int)MyParticleEffectsIDEnum.Smoke_LargeGunShot);\n                m_shotSmoke.AutoDelete = false;\n            }\n            m_shotSmoke.UserEmitterScale = m_smokeToGenerate;\n            m_shotSmoke.WorldMatrix = Matrix.CreateTranslation(m_muzzleFlashPosition);\n            m_shotSmoke.UserScale = 5;\n\n            GetWeaponBase().PlayShootingSound();\n\n            // Shoot projectiles\n            AddProjectile(MyAmmoConstants.GetAmmoProperties(GetAmmoType()), m_muzzleFlashPosition);\n\n            // dont decrease ammo count ...\n            m_lastTimeShoot = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n            return true;\n        }\n\n        public override Matrix GetViewMatrix()\n        {\n            Vector3 lookPosition = WorldMatrix.Translation + WorldMatrix.Backward * 0.5f + WorldMatrix.Up * 3f;\n            Vector3 lookTarget = WorldMatrix.Translation + WorldMatrix.Forward * 1000000f;\n            Vector3 lookDirection = Vector3.Normalize(lookTarget - lookPosition);\n            Vector3 up = Vector3.Cross(WorldMatrix.Right, lookDirection);\n            return Matrix.CreateLookAt(lookPosition, lookTarget, up);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Weapons/Guns/MyLargeShipBarrelBase.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.AppCode.Game.Entities.Prefabs;\nusing MinerWars.AppCode.Game.Models;\nusing MinerWars.AppCode.Game.TransparentGeometry.Particles;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Physics;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.CommonLIB.AppCode.Utils;\n\n\nnamespace MinerWars.AppCode.Game.Entities.Weapons\n{\n    using CommonLIB.AppCode.ObjectBuilders;\n    using MinerWars.AppCode.Game.Physics;\n    using MinerWars.AppCode.Game.World.Global;\n    using MinerWars.AppCode.Game.Gameplay;\n    using MinerWars.AppCode.Game.Managers.Session;\n    using MinerWars.AppCode.Game.GUI;\n    using MinerWars.AppCode.Game.TransparentGeometry;\n    using MinerWars.AppCode.Game.HUD;\n    using MinerWars.AppCode.Game.Editor;\n    using System.Diagnostics;\n    using MinerWars.AppCode.Game.Entities.SubObjects;\n    using MinerWars.AppCode.Game.Render;\n    using MinerWars.CommonLIB.AppCode.Import;\n\n    abstract class MyLargeShipBarrelBase : MyEntity\n    {\n        public MyEntityIdentifier? LastShotId;\n\n        #region BARREL SETTINGS\n        // used ammo type for this barrel:\n        private MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum m_ammoType;\n\n        private List<MyModelDummy> m_muzzleDummies = new List<MyModelDummy>();\n        protected int m_activeMuzzle = 0;\n\n        // time diffs:\n        protected int m_lastTimeShoot;\n        private int m_lastTimeSmooke;\n\n        // Here because of the usability with the other types of barrels:\n        public float BarrelElevationMin { get; protected set; } // is actually set to nice friendly angle..\n        protected MyParticleEffect m_shotSmoke;\n\n        List<MyRBElement> m_collisionBox = new List<MyRBElement>();            \n\n        protected int m_smokeLastTime;             // Smoke time stamp\n        protected int m_smokeToGenerate;           // How much moke to generate\n        protected float m_muzzleFlashLength;        // Length of muzzle flash\n        protected float m_muzzleFlashRadius;        // Radius of the muzzle flash\n\n        #endregion\n\n        public MyLargeShipBarrelBase()\n        {            \n            m_ammoType = 0;\n            m_lastTimeShoot = 0;\n            m_lastTimeSmooke = 0;\n            //BarrelElevationMin = -0.507997036f;\n            BarrelElevationMin = -0.6f;\n        }\n\n\n        public void Init(StringBuilder hudLabelText, MyModelsEnum? modelLod0Enum, MyModelsEnum? modelLod1Enum,\n            Matrix localMatrix, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum ammoType, MyLargeShipGunBase parentObject)\n        {\n            base.Init(hudLabelText, modelLod0Enum, modelLod1Enum, parentObject, null, null);\n\n            LocalMatrix = localMatrix;\n            ((MyLargeShipGunBase)parentObject).InitializationBarrelMatrix = LocalMatrix;\n\n            // Check for the dummy cubes for the muzzle flash positions:\n            if (ModelLod0 != null)\n            {\n                // test for one value:\n                StringBuilder sb = new StringBuilder();\n                sb.Append(MyLargeShipWeaponsConstants.MUZZLE_FLASH_NAME_ONE);\n                if (ModelLod0.Dummies.Count > 0)\n                {\n                    if (ModelLod0.Dummies.ContainsKey(sb.ToString()))\n                    { // one muzzle flash value:\n                        m_muzzleDummies.Add(ModelLod0.Dummies[sb.ToString()]);\n                    }\n                    else\n                    {\n                        // more muzzle flashes values:\n                        int num = 0;\n                        for (int i = 0; i < ModelLod0.Dummies.Count; ++i)\n                        {\n                            sb.Clear();\n                            sb.Append(MyLargeShipWeaponsConstants.MUZZLE_FLASH_NAME_MODE);\n                            sb.Append(i.ToString());\n\n                            if (ModelLod0.Dummies.ContainsKey(sb.ToString()))\n                            {\n                                ++num;\n                            }\n                        }\n                        for (int i = 0; i < ModelLod0.Dummies.Count; ++i)\n                        {\n                            sb.Clear();\n                            sb.Append(MyLargeShipWeaponsConstants.MUZZLE_FLASH_NAME_MODE);\n                            sb.Append(i.ToString());\n                            if (ModelLod0.Dummies.ContainsKey(sb.ToString()))\n                            {\n                                m_muzzleDummies.Add(ModelLod0.Dummies[sb.ToString()]);\n                            }\n                        }\n                    }\n                }\n            }\n\n            //base.InitSpherePhysics(MyMaterialType.METAL, ModelLod0, 9999999.0f, 1.0f, MyConstants.COLLISION_LAYER_ALL, RigidBodyFlag.RBF_RBO_STATIC);\n            if (this.Physics != null)\n            {\n                //this.Physics.Enabled = true;\n                this.Physics.Update();\n            }\n\n            m_ammoType = ammoType;                        \n            Save = false;\n            //NeedsUpdate = true; //No, barrel is updated from parent\n        }\n\n        public override MyMwcObjectBuilder_FactionEnum Faction\n        {\n            get\n            {\n                return (Parent != null) ? Parent.Faction : MyMwcObjectBuilder_FactionEnum.None;\n            }\n            set\n            {\n                //  System.Diagnostics.Debug.Assert(false, \"Prefab always takes faction from container\");\n            }\n        }\n\n        public float SearchingDistance { get { return GetWeaponBase().PrefabParent.SearchingDistance; } }        \n\n        public override void OnWorldPositionChanged(object source)\n        {\n            bool tooFar = (Vector3.DistanceSquared(MyGuiScreenGamePlay.Static.ControlledEntity.GetPosition(), this.GetPosition()) > MyLargeShipWeaponsConstants.MAX_ROTATION_UPDATE_DISTANCE * MyLargeShipWeaponsConstants.MAX_ROTATION_UPDATE_DISTANCE);\n            if (!tooFar)\n            {\n                base.OnWorldPositionChanged(source);\n            }\n        }\n\n        public override bool Draw(MyRenderObject renderObject)\n        {\n            base.Draw(renderObject);            \n            /*if (!IsControlledByPlayer())\n            {\n                //return base.Draw();\n            }\n            else\n            {\n                //DrawCrossHair();\n            }*/\n            return true;\n        }\n\n        public override void Close()\n        {\n            base.Close();\n\n            if (m_shotSmoke != null)\n            {\n                MyParticlesManager.RemoveParticleEffect(m_shotSmoke);\n                m_shotSmoke = null;\n            }\n        }\n\n        public virtual bool StartShooting()\n        {\n            if (IsControlledByPlayer())\n            {\n                return true;\n            }\n\n            return true;\n            /* //do we need this?\n            if (GetWeaponBase().IsActive())\n            {\n                // test if there isnt something in the way of the fire:\n                MyEntity target = GetWeaponBase().GetTarget();\n\n                Matrix worldMatrix = WorldMatrix;\n                Vector3 effectivePosition = MyUtils.GetTransform(m_muzzleDummies[m_activeMuzzle].Matrix.Translation, ref worldMatrix);\n\n\n                MyLine shootingRay = new MyLine(effectivePosition, target.WorldMatrix.Translation, true);\n                var result = MyEntities.GetIntersectionWithLine(ref shootingRay, this, null, ignoreChilds: true);\n                MyEntity collisionEntity = result.HasValue ? result.Value.PhysObject : null;\n\n                if (collisionEntity == null)\n                {\n                    StopShooting();\n                    return false;\n                }\n\n                MyEntity intersected = collisionEntity;\n                while (intersected != null)\n                {\n                    if (intersected == target) \n                        return true;\n                    intersected = intersected.Parent;\n                }\n            }       */\n\n            StopShooting();\n            return false;\n        }\n\n        public virtual void StopShooting()\n        {\n            GetWeaponBase().StopShootingSound();\n        }\n\n        protected MyLargeShipGunBase GetWeaponBase()\n        {\n            return (MyLargeShipGunBase)Parent;\n        }\n\n        public MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum GetAmmoType()\n        {\n            return m_ammoType;\n        }        \n\n        protected List<MyModelDummy> GetMuzzleFlashMatrix()\n        {\n            return m_muzzleDummies;\n        }\n\n        protected float GetDeviatedAngleByDamageRatio() \n        {\n            MyPrefabLargeWeapon prefabLargeWeapon = GetWeaponBase().PrefabParent;\n            if (MySession.PlayerShip != null &&\n               MyFactions.GetFactionsRelation(prefabLargeWeapon, MySession.PlayerShip) == MyFactionRelationEnum.Enemy)\n            {\n                float degrees = (float)Math.Pow(120, prefabLargeWeapon.GetDamageRatio() * 1.5 - 1.2) * 4f;\n                return MathHelper.ToRadians(degrees);\n            }\n            return 0f;\n        }\n\n        protected Vector3 GetDeviatedVector(MyAmmoProperties ammoProperties)\n        {\n            float deviateAngle = ammoProperties.DeviateAngle;\n\n            //  Create one projectile - but deviate projectile direction be random angle\n            if (((Parent as MyGunBase).IsThisGunFriendly() || MyGuiScreenGamePlay.Static.ControlledEntity == (Parent as MyLargeShipGunBase).PrefabParent))\n            {\n                deviateAngle += MyGameplayConstants.GameplayDifficultyProfile.DeviatingAnglePlayerOnEnemy;\n            }\n            else\n            {\n                deviateAngle += MyGameplayConstants.GameplayDifficultyProfile.DeviatingAngleEnemyLargeWeaponOnPlayer;\n                deviateAngle += GetDeviatedAngleByDamageRatio();\n            }\n\n            return MyUtilRandomVector3ByDeviatingVector.GetRandom(WorldMatrix.Forward, deviateAngle);\n        }\n\n        protected void AddProjectile(MyAmmoProperties ammoProperties, Vector3 muzzlePosition)\n        {\n            float deviateAngle = ammoProperties.DeviateAngle;\n\n            Vector3 projectileForwardVector = GetDeviatedVector(ammoProperties);\n\n            Vector3 velocity = ((MyLargeShipGunBase)Parent).PrefabParent.Parent.Physics.LinearVelocity;\n            MyProjectiles.Add(ammoProperties, Parent, muzzlePosition, velocity, projectileForwardVector, false, 1.0f, this, ((MyLargeShipGunBase)Parent).WeaponOwner);\n        }\n\n        protected override void DoDamageInternal(float playerDamage, float damage, float empDamage, MyDamageType damageType, MyAmmoType ammoType, MyEntity damageSource, bool justDeactivate)\n        {\n            Parent.DoDamage(playerDamage, damage, empDamage, damageType, ammoType, damageSource, justDeactivate);\n        }\n\n        public override float Health\n        {\n            get { return Parent.Health; }\n            set\n            {\n                Parent.Health = value;\n            }\n        }\n\n\n        private void DrawCrossHair()\n        {            \n            if (!MyHud.Visible)\n            {\n                return;\n            }\n\n            // Recompute crosshair size for zoom mode\n            float crosshairSize = 1150;\n            if (MyCamera.Zoom.GetZoomLevel() < 1)\n            {\n                crosshairSize = crosshairSize / (float)(Math.Tan(MyCamera.FieldOfView / 2) / Math.Tan(MyCamera.Zoom.GetFOV() / 2));\n            }\n\n            MyTransparentGeometry.AddBillboardOriented(MyTransparentMaterialEnum.Crosshair, Vector4.One, WorldMatrix.Translation + WorldMatrix.Forward * 25000,\n                WorldMatrix.Up, WorldMatrix.Right, crosshairSize, 1);\n        }\n\n        public bool IsControlledByPlayer()\n        {\n            return MyGuiScreenGamePlay.Static.IsControlledByPlayer((Parent as MyLargeShipGunBase).PrefabParent);\n        }\n\n        public override MyEntity GetBaseEntity()\n        {\n            return GetWeaponBase().PrefabParent;\n        }\n\n        public MyLine GetLine()\n        {\n            return new MyLine(WorldMatrix.Translation, WorldMatrix.Translation + WorldMatrix.Forward * 5000, true);\n        }\n\n        public abstract Matrix GetViewMatrix();\n\n        protected void IncreaseSmoke()\n        {\n            m_smokeToGenerate += MyAutocanonConstants.SMOKE_INCREASE_PER_SHOT;\n            m_smokeToGenerate = MyMwcUtils.GetClampInt(m_smokeToGenerate, 0, MyAutocanonConstants.SMOKES_MAX);\n        }\n\n        protected void DecreaseSmoke()\n        {\n            m_smokeToGenerate -= MyAutocanonConstants.SMOKE_DECREASE;\n            m_smokeToGenerate = MyMwcUtils.GetClampInt(m_smokeToGenerate, 0, MyAutocanonConstants.SMOKES_MAX);\n        }\n\n        public override void UpdateAfterSimulation()\n        {\n            base.UpdateAfterSimulation();\n\n            DecreaseSmoke();\n        }\n\n        public void RemoveSmoke()\n        {\n            m_smokeToGenerate = 0;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Weapons/Guns/MyLargeShipCIWS.cs",
    "content": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Models;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.AppCode.Game.TransparentGeometry.Particles;\n\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.Prefabs;\n\n\nnamespace MinerWars.AppCode.Game.Entities.Weapons\n{\n    using Audio;\n    using CommonLIB.AppCode.ObjectBuilders;\n    using MinerWars.AppCode.Game.Gameplay;\n    using MinerWars.AppCode.Game.Render;\n    using MinerWars.CommonLIB.AppCode.Import;\n\n    class MyLargeShipCIWS : MyLargeShipGunBase\n    {\n\n        public override void Init(StringBuilder hudLabelText, MyEntity parentObject,\n            Vector3 position, Vector3 forwardVector, Vector3 upVector,\n            MyMwcObjectBuilder_Base objectBuilder)\n        {\n            base.Init(hudLabelText, MyModelsEnum.LargeShipCiwsBase, MyMaterialType.METAL, parentObject, position, forwardVector, upVector, objectBuilder, MyModelsEnum.LargeShipCiwsBase_COL);\n\n            Matrix barrelMatrix = MyMath.NormalizeMatrix(ModelLod0.Dummies[\"axis\"].Matrix);\n            MyLargeShipCIWSBarrel barrel = new MyLargeShipCIWSBarrel();\n\n            barrel.Init(hudLabelText, barrelMatrix, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_High_Speed, this);\n            MountBarrel(barrel);\n\n            // User settings:\n            m_predictionIntervalConst_ms = 250;\n            m_checkTargetIntervalConst_ms = 150;\n            m_randomStandbyChangeConst_ms = 4000;\n            \n            m_shootingSound = MySoundCuesEnum.WepMachineGunNormFire3d;\n            m_shootingSoundRelease = MySoundCuesEnum.WepMachineGunNormRel3d;\n        }\n    }\n\n\n    // Barrel for missile launcher:\n    class MyLargeShipCIWSBarrel : MyLargeShipBarrelBase\n    {\n        float m_projectileSpeed;\n        float m_ammoHealthDamage;\n        float m_projectileMaxTrajectory;\n        Vector3 muzzleFlashPosition1;\n        Vector3 muzzleFlashPosition2;\n        MyParticleEffect m_shotSmoke2;\n\n        public void Init(StringBuilder hudLabelText, Matrix localMatrix, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum AmmoType, MyLargeShipGunBase parentObject)\n        {\n            base.Init(hudLabelText, MyModelsEnum.LargeShipCiwsBarrel, null, localMatrix, AmmoType, parentObject);\n        }\n\n\n        public override bool Draw(MyRenderObject renderObject)\n        {\n            if (!base.Draw(renderObject)) return false;\n            //if (IsControlledByPlayer()) return true;\n\n            Matrix worldMatrix = WorldMatrix;\n            List<MyModelDummy> muzzles = GetMuzzleFlashMatrix();\n\n            Vector3 m_muzzleFlashPosition1 = MyUtils.GetTransform(muzzles[0].Matrix.Translation, ref worldMatrix);\n            m_muzzleFlashPosition1 -= WorldMatrix.Forward * 0.1f;\n            Vector3 m_muzzleFlashPosition2 = MyUtils.GetTransform(muzzles[1].Matrix.Translation, ref worldMatrix);\n            m_muzzleFlashPosition2 -= WorldMatrix.Forward * 0.1f;\n\n            // Draw muzzle flash:\n            int dt = MyMinerGame.TotalGamePlayTimeInMilliseconds - m_lastTimeShoot;\n            if (dt <= MyMachineGunConstants.MUZZLE_FLASH_MACHINE_GUN_LIFESPAN)\n            {\n                MyParticleEffects.GenerateMuzzleFlash(m_muzzleFlashPosition1, worldMatrix.Forward, m_muzzleFlashRadius, m_muzzleFlashLength);\n                MyParticleEffects.GenerateMuzzleFlash(m_muzzleFlashPosition2, worldMatrix.Forward, m_muzzleFlashRadius, m_muzzleFlashLength);\n            }\n\n            // Draw smoke:\n            if (m_shotSmoke != null)\n            {\n                m_shotSmoke.UserBirthMultiplier = m_smokeToGenerate / 5;\n                m_shotSmoke.UserScale = 10;\n                m_shotSmoke.WorldMatrix = Matrix.CreateTranslation(m_muzzleFlashPosition1);\n            }\n            if (m_shotSmoke2 != null)\n            {\n                m_shotSmoke2.UserBirthMultiplier = m_smokeToGenerate / 5;\n                m_shotSmoke2.UserScale = 10;\n                m_shotSmoke2.WorldMatrix = Matrix.CreateTranslation(m_muzzleFlashPosition2);\n            }\n\n            return true;\n        }\n\n        public override bool StartShooting()\n        {\n            if (!base.StartShooting())\n                return false;\n\n            if ((MyMinerGame.TotalGamePlayTimeInMilliseconds - m_lastTimeShoot) < MyAutocanonConstants.SHOT_INTERVAL_IN_MILISECONDS)\n                return false;\n\n            // Set muzzle flashes:\n            m_muzzleFlashLength = MyMwcUtils.GetRandomFloat(4, 6);\n            m_muzzleFlashRadius = MyMwcUtils.GetRandomFloat(1.2f, 2.0f);\n\n            // Increse smoke to generate\n            IncreaseSmoke();\n\n            // Make random trajectories for the bullet:\n            Matrix worldMatrix = WorldMatrix;\n            // get muzzle flashes:\n            List<MyModelDummy> muzzles = GetMuzzleFlashMatrix();\n\n            muzzleFlashPosition1 = MyUtils.GetTransform(muzzles[0].Matrix.Translation, ref worldMatrix);\n            muzzleFlashPosition2 = MyUtils.GetTransform(muzzles[1].Matrix.Translation, ref worldMatrix);\n\n           // if (!IsControlledByPlayer())\n            {\n                if (m_shotSmoke == null)\n                {\n                    m_shotSmoke = MyParticlesManager.CreateParticleEffect((int)MyParticleEffectsIDEnum.Smoke_LargeGunShot);\n                    m_shotSmoke.AutoDelete = false;\n                }\n                m_shotSmoke.UserEmitterScale = m_smokeToGenerate;\n                m_shotSmoke.WorldMatrix = Matrix.CreateTranslation(muzzleFlashPosition1);\n\n                if (m_shotSmoke2 == null)\n                {\n                    m_shotSmoke2 = MyParticlesManager.CreateParticleEffect((int)MyParticleEffectsIDEnum.Smoke_LargeGunShot);\n                    m_shotSmoke2.AutoDelete = false;\n                }\n                m_shotSmoke2.UserEmitterScale = m_smokeToGenerate;\n                m_shotSmoke2.WorldMatrix = Matrix.CreateTranslation(muzzleFlashPosition2);\n            }\n\n            int randSoundSource = MyMwcUtils.GetRandomInt(2);\n\n            MySoundCue? shootingSound = GetWeaponBase().UnifiedWeaponCueGet(MySoundCuesEnum.WepMachineGunNormFire3d);\n            if (shootingSound == null || !shootingSound.Value.IsPlaying)\n            {\n                GetWeaponBase().UnifiedWeaponCueSet(Audio.MySoundCuesEnum.WepMachineGunNormFire3d,\n                    MyAudio.AddCue2dOr3d(this.GetWeaponBase().PrefabParent, Audio.MySoundCuesEnum.WepMachineGunNormFire3d, randSoundSource == 1 ? muzzleFlashPosition1 : muzzleFlashPosition2, WorldMatrix.Forward, WorldMatrix.Up, Vector3.Zero));\n                    //MyAudio.AddCue3D(Audio.MySoundCuesEnum.WepAutocanonFire3d, randSoundSource == 1 ? muzzleFlashPosition1 : muzzleFlashPosition2, WorldMatrix.Forward, WorldMatrix.Up, Vector3.Zero));\n            }\n\n            AddProjectile(MyAmmoConstants.GetAmmoProperties(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_Basic), muzzleFlashPosition1);\n            AddProjectile(MyAmmoConstants.GetAmmoProperties(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_Basic), muzzleFlashPosition2);\n\n            m_lastTimeShoot = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n\n            return true;\n        }\n\n        public override void Close()\n        {\n            base.Close();\n\n            if (m_shotSmoke2 != null)\n            {\n                MyParticlesManager.RemoveParticleEffect(m_shotSmoke2);\n                m_shotSmoke2 = null;\n            }\n        }\n\n        public override Matrix GetViewMatrix()\n        {\n            Vector3 lookPosition = WorldMatrix.Translation + WorldMatrix.Backward * 1.65f + WorldMatrix.Up * 3f;\n            Vector3 lookTarget = WorldMatrix.Translation + WorldMatrix.Forward * 1000000f;\n            Vector3 lookDirection = Vector3.Normalize(lookTarget - lookPosition);\n            Vector3 up = Vector3.Cross(WorldMatrix.Right, lookDirection);\n            return Matrix.CreateLookAt(lookPosition, lookTarget, up);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Weapons/Guns/MyLargeShipGunBase.cs",
    "content": "﻿#region Using\nusing System;\nusing System.Text;\nusing MinerWarsMath;\n\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Entities.Prefabs;\nusing MinerWars.AppCode.Game.Entities.SubObjects;\nusing MinerWars.AppCode.Game.Models;\nusing MinerWars.AppCode.Game.Prefabs;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Physics;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.Prefabs;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils;\n\n#endregion\n\nnamespace MinerWars.AppCode.Game.Entities.Weapons\n{\n    using App;\n    using Audio;\n    using CommonLIB.AppCode.ObjectBuilders;\n    using MinerWars.AppCode.Game.Gameplay;\n    using SysUtils.Utils;\n    using MinerWars.AppCode.Game.World.Global;\n    using MinerWars.AppCode.Game.Managers.Session;\n    using MinerWars.AppCode.Game.GUI;\n    using System.Diagnostics;\n    using MinerWars.AppCode.Game.TransparentGeometry;\n    using System.Collections.Generic;\n    using MinerWars.AppCode.Game.Render;\n    using MinerWars.AppCode.Game.Sessions;\n    using MinerWars.AppCode.Physics.Collisions;\n    using MinerWars.AppCode.Game.Managers;\n\n\n    abstract class MyLargeShipGunBase : MyGunBase\n    {\n        #region BASE VARIABLES\n        private MyLargeShipBarrelBase       m_barrel;\n        private MyLargeShipGunStatus        m_status = MyLargeShipGunStatus.MyWeaponStatus_Deactivated;\n        private int                         m_predictionInterval_ms;\n        protected int                       m_predictionIntervalConst_ms;\n        private int                         m_checkTargetInterval_ms;\n        protected int                       m_checkTargetIntervalConst_ms;\n        private float                       m_rotation;\n        private float                       m_elevation;\n        private float                       m_rotationLast;\n        private float                       m_elevationLast;\n        protected float                     m_rotationSpeed;\n        protected float                     m_elevationSpeed;\n        private int                         m_rotationInterval_ms;\n        private int                         m_elevationInterval_ms;\n        private int                         m_randomStandbyChange_ms;\n        protected int                       m_randomStandbyChangeConst_ms;\n        private float                       m_randomStandbyRotation;\n        private float                       m_randomStandbyElevation;\n        private Vector3                     m_predictedTarget;\n        private MyLargeShipWeaponPrediction m_prediction;\n        private int                         m_shootDelayIntervalConst_ms;\n        private int                         m_shootIntervalConst_ms;\n        private int                         m_shootStatusChanged_ms;\n        private int                         m_shootDelayInterval_ms;\n        private int                         m_shootInterval_ms;\n        private int                         m_shootIntervalVarianceConst_ms;\n        private bool                        m_onlyPotentialTargetDetected;\n\n\n\n        public Matrix                       InitializationMatrix { get; private set; }\n        public Matrix                       InitializationBarrelMatrix { get; set; } \n        public MyPrefabLargeWeapon          PrefabParent { get; set; }\n        public MyEntity Target;\n\n        // When large ship is controlled, owner is set to player ship which controls this large ship\n        public MyEntity WeaponOwner { get; set; }\n\n        // Weapons sounds:\n        MySoundCue?[] m_unifiedWeaponCues = new MySoundCue?[MyAudio.GetNumberOfSounds()];\n\n        protected MySoundCuesEnum? m_shootingSound;\n        protected MySoundCuesEnum? m_shootingSoundRelease;\n\n        static int m_intervalShift = 0; //use this to avoid updating all weapons in one frame\n\n        public override bool Enabled \n        {\n            set\n            {\n                base.Enabled = value;\n                NeedsUpdate = value;\n                if (!Enabled) \n                {\n                    StopShootingSound();\n                    StopAimingSound();\n                    m_barrel.RemoveSmoke();\n                }\n            }\n        }\n        private bool m_playerFire = false;\n\n        #endregion\n\n        public enum MyLargeShipGunStatus\n        {\n            MyWeaponStatus_Deactivated,\n            MyWeaponStatus_Searching,\n            MyWeaponStatus_Shoothing,\n            MyWeaponStatus_ShootDelaying,\n        }\n\n        public override MyMwcObjectBuilder_FactionEnum Faction\n        {\n            get\n            {\n                return PrefabParent.Faction;\n            }\n            set\n            {\n                //  System.Diagnostics.Debug.Assert(false, \"Prefab always takes faction from container\");\n            }\n        }\n\n        public MyLargeShipGunBase()\n            :base()\n        {\n            m_status = MyLargeShipGunStatus.MyWeaponStatus_Deactivated;\n            m_predictionInterval_ms = 0;\n            m_predictionIntervalConst_ms = 250;\n            m_checkTargetInterval_ms = 0;\n            m_checkTargetIntervalConst_ms = 150;\n            m_randomStandbyChange_ms = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n            m_randomStandbyChangeConst_ms = 4000;\n            m_randomStandbyRotation = 0.0f;\n            m_randomStandbyElevation = 0.0f;\n            m_rotation = 0.0f;\n            m_elevation = 0.0f;\n            m_rotationSpeed = MyLargeShipWeaponsConstants.ROTATION_SPEED;\n            m_elevationSpeed = MyLargeShipWeaponsConstants.ELEVATION_SPEED;\n            m_rotationInterval_ms = 0;\n            m_elevationInterval_ms = 0;\n            m_predictedTarget = Vector3.Zero;\n            m_prediction = null;\n            m_shootDelayIntervalConst_ms = 200;\n            m_shootIntervalConst_ms = 1200;\n            m_shootIntervalVarianceConst_ms = 500;\n            m_shootStatusChanged_ms = 0;\n            m_onlyPotentialTargetDetected = false;\n\n            //NeedsUpdate = true;\n        }\n\n        public virtual void Init(StringBuilder hudLabelText, MyEntity parentObject,\n            Vector3 position, Vector3 forwardVector, Vector3 upVector,\n            MyMwcObjectBuilder_Base objectBuilder)\n        {\n        }\n\n        public override void Init(StringBuilder hudLabelText, MyModelsEnum? modelEnum, MyMaterialType materialType,\n            MyEntity parentObject, Vector3 position, Vector3 forwardVector, Vector3 upVector,\n            MyMwcObjectBuilder_Base objectBuilder, MyModelsEnum? collisionModel = null)\n        {\n            base.Init(null, modelEnum, materialType, parentObject, position, forwardVector, upVector, null, collisionModel);\n            //InitSpherePhysics(MyMaterialType.METAL, ModelLod0, 9999999.0f, 1.0f, MyConstants.COLLISION_LAYER_ALL, RigidBodyFlag.RBF_RBO_STATIC);\n            //if (this.Physics != null)\n            //{\n            //    this.Physics.Enabled = true;\n            //    this.Physics.Update();\n            //}\n\n            InitTrianglePhysics(materialType, 9999999.0f, ModelCollision, null);\n\n            m_checkTargetInterval_ms = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n            m_predictionInterval_ms = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n            m_rotationInterval_ms = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n            m_elevationInterval_ms = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n\n            m_prediction = new MyLargeShipWeaponPrediction();\n\n            InitializationMatrix = LocalMatrix;\n            InitializationBarrelMatrix = Matrix.Identity;\n        }\n\n        Matrix InitializationMatrixWorld\n        {\n            get\n            {\n                return InitializationMatrix * Parent.WorldMatrix;\n            }\n        }\n\n        public void SetRandomRotation()\n        {\n            // Start with random rotation\n            m_rotation = MyMwcUtils.GetRandomFloat(0, MathHelper.Pi*2);\n            RotateModels();\n        }\n\n        public void SetRotation(float angle, float elevation)\n        {\n            m_rotation = angle;\n            m_elevation = elevation;\n            RotateModels();\n        }\n\n        public void MountBarrel(MyLargeShipBarrelBase barrel)\n        {\n            m_barrel = barrel;\n        }\n\n        public MyLargeShipGunStatus GetStatus()\n        {\n            return m_status;\n        }\n\n        public override void UpdateBeforeSimulation()\n        {\n            // Don't call base, children don't use UpdateBeforeSimulation\n            //base.UpdateBeforeSimulation();\n        }\n\n        private bool HasElevationOrRotationChanged()\n        {\n            if(Math.Abs(m_rotationLast - m_rotation) > MyLargeShipWeaponsConstants.ROTATION_AND_ELEVATION_MIN_CHANGE)\n            {\n                return true;\n            }\n            if (Math.Abs(m_elevationLast - m_elevation) > MyLargeShipWeaponsConstants.ROTATION_AND_ELEVATION_MIN_CHANGE)\n            {\n                return true;\n            }\n            return false;\n        }\n\n        private float m_stopShootingTime = 0;\n\n        //Shooting must be handled here because only here is the correct start position for projectile (because of physics)\n        public override void UpdateAfterSimulation()\n        {\n            System.Diagnostics.Debug.Assert(!Closed);\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyLargeShipGunBase::UpdateAfterSimulation\");\n\n            float maxActiveDistanceSq = 3500 * 3500;\n            var distance = MySession.Static.DistanceToPlayersSquared(this);\n            bool active = IsActive();\n\n            bool isRemoteControlled = MyMultiplayerGameplay.IsRunning && MyMultiplayerGameplay.Static.IsLockedByOtherPlayer(this.PrefabParent);\n            bool isControlledByPlayer = MyGuiScreenGamePlay.Static.IsControlledByPlayer(PrefabParent);\n\n            if ((distance < maxActiveDistanceSq || (isRemoteControlled || isControlledByPlayer)) && active && Enabled && MyLargeShipWeaponsConstants.Enabled && this.PrefabParent.IsWorking())\n            {\n                MyPerformanceCounter.PerCameraDraw.Increment(\"Active large weapons\");\n                \n                if (isControlledByPlayer && MyMultiplayerGameplay.IsRunning)\n                {\n                    MyMultiplayerGameplay.Static.UpdateRotationFast(this.PrefabParent, new Vector3(m_elevation, m_rotation, 0));\n                }\n\n                if (isControlledByPlayer || isRemoteControlled)\n                {\n                    base.UpdateAfterSimulation();\n                    UpdateControlledWeapon();\n                }\n                else\n                {\n                    float activationDistance = m_barrel.SearchingDistance * 1.3f * m_barrel.SearchingDistance * 1.3f;\n\n                    if (distance < activationDistance)\n                    {\n                        MyPerformanceCounter.PerCameraDraw.Increment(\"Active large weapons updated by AI\");\n\n                        base.UpdateAfterSimulation();\n                        UpdateAiWeapon();\n                    }\n                }\n            }\n\n            if (!active)\n            {\n                StopShootingSound();\n            }\n\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        private void UpdateAiWeapon()\n        {\n            if ((MyMinerGame.TotalGamePlayTimeInMilliseconds - m_checkTargetInterval_ms) > 1500)\n            {\n                CheckNearTargets();\n\n                m_checkTargetInterval_ms = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n            }\n\n            if ((MyMinerGame.TotalGamePlayTimeInMilliseconds - m_predictionInterval_ms) > m_predictionIntervalConst_ms && Target != null)\n            {\n                UpdatePrediction(MyMinerGame.TotalGamePlayTimeInMilliseconds);\n\n                m_predictionInterval_ms = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n            }\n\n\n            float targetDistance = GetTargetDistance();\n\n            if (targetDistance < m_barrel.SearchingDistance)\n            {\n                bool isAimed = RotationAndElevation() && Target != null;\n\n                if (isAimed && !m_onlyPotentialTargetDetected)\n                {\n                    UpdateShootStatus();\n\n                    if (m_status == MyLargeShipGunStatus.MyWeaponStatus_Shoothing)\n                    {\n                        // Dummy weapons can't shoot\n                        if (!IsDummy)\n                        {\n                            m_canStopShooting = m_barrel.StartShooting();\n                            LastShotId = m_barrel.LastShotId;\n                            if (MyMultiplayerGameplay.IsRunning)\n                            {\n                                MyMultiplayerGameplay.Static.Shoot(this.Parent, this.GetBarell().WorldMatrix, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Autocanon, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_Basic, GetTarget(), LastShotId);\n                            }\n                        }\n                    }\n                    else\n                    {\n                        if (m_canStopShooting || (m_shootingSound.HasValue && UnifiedWeaponCueGet(m_shootingSound.Value).HasValue && UnifiedWeaponCueGet(m_shootingSound.Value).Value.IsPlaying))\n                        {\n                            m_barrel.StopShooting();\n                            m_canStopShooting = false;\n                        }\n                    }\n                }\n                else\n                {\n                    m_status = MyLargeShipGunStatus.MyWeaponStatus_Searching;\n                    if (m_canStopShooting || (m_shootingSound.HasValue && UnifiedWeaponCueGet(m_shootingSound.Value).HasValue && UnifiedWeaponCueGet(m_shootingSound.Value).Value.IsPlaying))\n                    {\n                        m_barrel.StopShooting();\n                        m_canStopShooting = false;\n                    }\n                }\n            }\n            else\n            {\n                m_status = MyLargeShipGunStatus.MyWeaponStatus_Deactivated;\n                StopAimingSound();\n                if (m_canStopShooting || (m_shootingSound.HasValue && UnifiedWeaponCueGet(m_shootingSound.Value).HasValue && UnifiedWeaponCueGet(m_shootingSound.Value).Value.IsPlaying))\n                {\n                    m_barrel.StopShooting();\n                    m_canStopShooting = false;\n                }\n\n                if (MyCamera.GetDistanceWithFOV(Vector3.Distance(MyCamera.Position, GetPosition())) <= MyLodConstants.MAX_DISTANCE_FOR_RANDOM_ROTATING_LARGESHIP_GUNS)\n                {\n                    RandomMovement();\n                }\n            }\n        }\n\n        private void UpdateControlledWeapon()\n        {\n            MySoundCue? movingSound = UnifiedWeaponCueGet(MySoundCuesEnum.WepLargeShipAutocannonRotate);\n\n            if (HasElevationOrRotationChanged())\n            {\n                if (movingSound == null || movingSound.Value.IsPlaying == false)\n                {\n                    UnifiedWeaponCueSet(MySoundCuesEnum.WepLargeShipAutocannonRotate,\n                        MyAudio.AddCue2dOr3d(PrefabParent, Audio.MySoundCuesEnum.WepLargeShipAutocannonRotate, GetPosition(), WorldMatrix.Forward, WorldMatrix.Up, Vector3.Zero));\n                    //MyAudio.AddCue3D(MySoundCuesEnum.WepLargeShipAutocannonRotate, GetPosition(), WorldMatrix.Forward, WorldMatrix.Up, Vector3.Zero));\n                }\n                m_stopShootingTime = 0;\n            }\n            else\n            {\n                if (m_stopShootingTime <= 0)\n                {\n                    m_stopShootingTime = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n                }\n                else\n                {\n                    if (m_stopShootingTime + MyLargeShipWeaponsConstants.AIMING_SOUND_DELAY < MyMinerGame.TotalGamePlayTimeInMilliseconds)\n                    {\n                        StopAimingSound();\n                    }\n                }\n            }\n\n            m_rotationLast = m_rotation;\n            m_elevationLast = m_elevation;\n\n            RotateModels();\n\n\n            if (m_playerFire/* && m_status != MyLargeShipGunStatus.MyWeaponStatus_Shoothing*/)\n            {\n                var old = m_barrel.IsDummy;\n                this.WeaponOwner = MySession.PlayerShip;\n                m_barrel.IsDummy = false;\n                m_barrel.StartShooting();\n                m_barrel.IsDummy = old;\n                this.WeaponOwner = null;\n                m_status = MyLargeShipGunStatus.MyWeaponStatus_Shoothing;\n\n                LastShotId = m_barrel.LastShotId;\n                if (MyMultiplayerGameplay.IsRunning)\n                {\n                    MyMultiplayerGameplay.Static.Shoot(this.Parent, this.GetBarell().WorldMatrix, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Autocanon, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_Basic, null, LastShotId);\n                }\n            }\n\n            if (!m_playerFire && m_status == MyLargeShipGunStatus.MyWeaponStatus_Shoothing)\n            {\n                m_barrel.StopShooting();\n                m_status = MyLargeShipGunStatus.MyWeaponStatus_Searching;\n            }\n\n            //m_playerFire = false;\n        }\n\n        private bool m_canStopShooting = false;\n\n        private void SetShootInterval(ref int shootInterval, ref int shootIntervalConst)\n        {\n            shootInterval = shootIntervalConst + MyMwcUtils.GetRandomInt(-m_shootIntervalVarianceConst_ms, m_shootIntervalVarianceConst_ms);\n        }\n\n        private void UpdateShootStatus()\n        {\n            switch (m_status)\n            {\n                case MyLargeShipGunStatus.MyWeaponStatus_Shoothing:\n                    {\n                        if ((MyMinerGame.TotalGamePlayTimeInMilliseconds - m_shootStatusChanged_ms) > m_shootInterval_ms)\n                        {\n                            StartShootDelaying();\n                        }\n                    }\n                    break;\n\n                case MyLargeShipGunStatus.MyWeaponStatus_ShootDelaying:\n                    {\n                        if ((MyMinerGame.TotalGamePlayTimeInMilliseconds - m_shootStatusChanged_ms) > m_shootDelayInterval_ms)\n                        {\n                            StartShooting();\n                        }\n                    }\n                    break;\n\n                case MyLargeShipGunStatus.MyWeaponStatus_Searching:\n                case MyLargeShipGunStatus.MyWeaponStatus_Deactivated:\n                    {\n                        StartShootDelaying();\n                    }\n                    break;\n            }\n        }\n\n        private void StartShooting()\n        {\n            m_status = MyLargeShipGunStatus.MyWeaponStatus_Shoothing;\n            m_shootStatusChanged_ms = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n            SetShootInterval(ref m_shootInterval_ms, ref m_shootIntervalConst_ms);\n        }\n\n        private void StartShootDelaying()\n        {\n            m_status = MyLargeShipGunStatus.MyWeaponStatus_ShootDelaying;\n            m_shootStatusChanged_ms = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n            SetShootInterval(ref m_shootDelayInterval_ms, ref m_shootDelayIntervalConst_ms);\n        }\n\n        private void ResetRandomAiming()\n        {\n            m_rotationInterval_ms = MyMinerGame.TotalGamePlayTimeInMilliseconds - m_rotationInterval_ms;\n            m_elevationInterval_ms = MyMinerGame.TotalGamePlayTimeInMilliseconds - m_elevationInterval_ms;\n\n            if ((MyMinerGame.TotalGamePlayTimeInMilliseconds - m_randomStandbyChange_ms) > m_randomStandbyChangeConst_ms)\n            {\n                m_randomStandbyRotation = MyMath.NormalizeAngle(MyMwcUtils.GetRandomFloat(-MathHelper.Pi * 2.0f, MathHelper.Pi * 2.0f));\n                m_randomStandbyElevation = MyMath.NormalizeAngle(MyMwcUtils.GetRandomFloat(0.0f, MathHelper.PiOver2));\n                m_randomStandbyChange_ms = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n            }\n        }\n\n        public void RandomMovement()\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyLargeShipGunBase::RandomMovement\");\n\n            ResetRandomAiming();\n\n            // real rotation:\n            float needRotation = m_randomStandbyRotation;\n            float needElevation = m_randomStandbyElevation;\n            float step = m_rotationSpeed * m_rotationInterval_ms;\n            float diffRot = needRotation - m_rotation;\n            float diffRotAbs = Math.Abs(diffRot);\n\n            if (diffRot > float.Epsilon)\n            {                          \n                float value = MathHelper.Clamp(step, float.Epsilon, needRotation - m_rotation);\n                m_rotation += value;\n            }\n            else if (diffRot < float.Epsilon)\n            {\n                float value = MathHelper.Clamp(step, float.Epsilon, Math.Abs(needRotation - m_rotation));\n                m_rotation -= value; \n            }\n                                    \n            bool canElevate = false;\n            step = m_elevationSpeed * m_elevationInterval_ms;\n\n            if (needElevation > m_barrel.BarrelElevationMin)\n            {\n                canElevate = true;\n            }\n            else\n            {\n                canElevate = false;\n            }\n\n            if (canElevate)\n            {   \n                if (needElevation > m_elevation - float.Epsilon)\n                {\n                    float value = MathHelper.Clamp(step, float.Epsilon, needElevation - m_elevation);\n                    m_elevation += value;\n                }\n                else if (needElevation < m_elevation + float.Epsilon)\n                {\n                    float value = MathHelper.Clamp(step, float.Epsilon, Math.Abs(needElevation - m_elevation));\n                    m_elevation -= value;\n                } \n            }    \n            m_elevationInterval_ms = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n            m_rotationInterval_ms = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n\n            // rotate models by rotation & elevation:\n            RotateModels();\n\n            // if is properly rotated:\n            /*\n            if (m_targetEntity != null && !m_targetEntity.IsDead())\n            {\n                // test intervals of the aiming:\n                float stapR = Math.Abs(Math.Abs(needRotation) - Math.Abs(m_rotation));\n                float stapE = Math.Abs(Math.Abs(needElevation) - Math.Abs(m_elevation));\n                if (stapR <= float.Epsilon && stapE <= float.Epsilon)\n                {\n                    m_randomStandbyChange_ms = 0;\n                    ResetRandomAiming();\n                }\n            } */\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        private void CheckNearTargets()\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyLargeShipGunBase::CheckNearTargets\");\n            MySmallShip nearestShip = null;\n            m_onlyPotentialTargetDetected = false;\n            PrefabParent.GetClosestSmallShipInSearchDistance(out nearestShip);\n\n            if (nearestShip == null)\n            {\n                PrefabParent.GetClosestPotentialSmallShipInSearchDistance(out nearestShip);\n                m_onlyPotentialTargetDetected = nearestShip != null;\n            }\n            else\n            {\n            }\n            \n\n            if (nearestShip != Target)\n            {\n                m_prediction.Clear();\n            }\n\n            if (Target == null || Target is MySmallShip) // If we dont have target or we are targeting some ship we can retarget\n            {\n                Target = nearestShip;\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        private void UpdatePrediction(int Time)\n        {\n            if (m_status == MyLargeShipGunStatus.MyWeaponStatus_Deactivated)\n            {\n                m_prediction.Clear();\n            }\n\n            if (Target != null)\n            {\n                m_prediction.AddRecord(Target.GetPosition(), MyMinerGame.TotalGamePlayTimeInMilliseconds);\n            }\n\n            m_predictionInterval_ms = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n        }\n\n        public float GetTargetDistance()\n        {\n            if (Target != null)\n            {\n                return (Target.GetPosition() - m_barrel.GetPosition()).Length();\n            }\n            return m_barrel.SearchingDistance;\n        }\n\n        public float GetActualTargetSpeed()\n        {\n            if (Target != null)\n            {\n                return m_prediction.GetLastRecordSpeed();\n            }\n            return 0.0f;\n        }\n\n        public bool IsActive()\n        {\n            return (!MyGuiScreenGamePlay.Static.IsEditorActive() || MyGuiScreenGamePlay.Static.IsIngameEditorActive()) && IsVisible();\n        }\n\n        public override bool Shot(MyMwcObjectBuilder_SmallShip_Ammo usedAmmo)\n        {\n            // Ammo is never changed, it uses always same ammo as in init\n            m_canStopShooting = m_barrel.StartShooting();\n            return m_canStopShooting;\n        }\n\n        private void RotateModels()\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyLargeShipGunBase::RotateModels\");\n\n            Matrix m = InitializationMatrixWorld;\n            Vector3 trans = m.Translation;\n\n            m *= Matrix.CreateFromAxisAngle(InitializationMatrixWorld.Up, m_rotation);\n            //m.Translation = new Vector3(WorldMatrix.Translation.X, WorldMatrix.Translation.Y, WorldMatrix.Translation.Z);\n            m.Translation = trans;\n            WorldMatrix = m;\n\n            Matrix.CreateRotationX(m_elevation, out m);\n            m.Translation = new Vector3(m_barrel.LocalMatrix.Translation.X, m_barrel.LocalMatrix.Translation.Y, m_barrel.LocalMatrix.Translation.Z);\n            m_barrel.LocalMatrix = m;\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        public void SetRotationAndElevation(Vector3 rotationAndElevation)\n        {\n            m_rotation = rotationAndElevation.Y;\n            m_elevation = rotationAndElevation.X;\n        }\n\n        public void RotateImmediately(Vector3 target)\n        {\n            var angles = LookAt(target);\n            m_rotation = angles.Y;\n            m_elevation = angles.X;\n        }\n\n        private Vector3 LookAt(Vector3 Target)\n        {\n            Matrix m = Matrix.CreateLookAt(m_barrel.GetPosition(), Target, WorldMatrix.Up);\n\n            m = Matrix.Invert(m);\n            m = MyMath.NormalizeMatrix(m);\n            m *= Matrix.Invert(MyMath.NormalizeMatrix(InitializationMatrixWorld));\n\n            Quaternion rot = Quaternion.CreateFromRotationMatrix(m);\n            return MyMath.QuaternionToEuler(rot);\n        }\n\n        private int CalculatePredictedTargetTime()\n        {\n            int predicatedTime = 0;\n\n            // calculate time dif based on the distance & speed of the ammo:\n            float targetDistance = GetTargetDistance();\n            float targetSpeed = m_prediction.GetLastRecordSpeed();\n\n            MyAmmoProperties ammoProperties = MyAmmoConstants.GetAmmoProperties(m_barrel.GetAmmoType());\n\n            float timeToTarget = targetDistance / ammoProperties.DesiredSpeed;\n            timeToTarget *= 1000;\n\n            // ass actual time:\n            float predictionStepDiff = m_predictionIntervalConst_ms - (MyMinerGame.TotalGamePlayTimeInMilliseconds - m_predictionInterval_ms);\n            predicatedTime = MyMinerGame.TotalGamePlayTimeInMilliseconds + (int)timeToTarget - 100;\n            return predicatedTime;\n        }\n\n        public Vector3 GetPredictedPosition()\n        {\n            return m_predictedTarget;\n        }\n\n        public bool RotationAndElevation(float rotSpeed = 0.01f)\n        {\n            bool baseMovingSoundPlay = false;\n\n            Vector3 lookAtPositionEuler = Vector3.Zero;\n\n            if (Target is MySmallShip) // we predict position only for moving targets\n            {\n                // calculate rotation & elevation in real with speed:\n                m_predictedTarget = m_prediction.GetPredictedPosition(CalculatePredictedTargetTime());\n            }\n            else\n            {\n                m_predictedTarget = Target.GetPosition();\n            }\n\n            if (Target != null)\n            {\n                lookAtPositionEuler = LookAt(m_predictedTarget);\n            }\n\n            // real rotation:\n            float needRotation = lookAtPositionEuler.Y;\n            float needElevation = lookAtPositionEuler.X;\n            float step = m_rotationSpeed * (MyMinerGame.TotalGamePlayTimeInMilliseconds - m_rotationInterval_ms);\n            \n            float diffRot = needRotation - m_rotation;\n\n            if (diffRot > MathHelper.Pi)\n                diffRot = diffRot - MathHelper.TwoPi;\n            else\n                if (diffRot < -MathHelper.Pi)\n                    diffRot = diffRot + MathHelper.TwoPi;\n            \n\n            float diffRotAbs = Math.Abs(diffRot);\n\n            //large weapon is too far to calculate rotation and similar mess\n            //Cannot use because large weapons then shoot immediatelly\n            //bool largeShipTooFar = (Vector3.DistanceSquared(MyGuiScreenGamePlay.Static.ControlledEntity.GetPosition(), this.GetPosition()) > MyLargeShipWeaponsConstants.MAX_ROTATION_UPDATE_DISTANCE * MyLargeShipWeaponsConstants.MAX_ROTATION_UPDATE_DISTANCE);\n\n            bool needUpdateMatrix = false;\n            \n            if (diffRotAbs > 0.001f)\n            {  /*\n                if (largeShipTooFar)\n                {\n                    m_rotation += diffRot; \n                    baseMovingSoundPlay = false;\n                }\n                else*/\n                {\n                    float value = MathHelper.Clamp(step, float.Epsilon, diffRotAbs);\n                    m_rotation += diffRot > 0 ? value : -value;\n                    baseMovingSoundPlay = true;\n                }\n\n                needUpdateMatrix = true;\n            }\n            else\n            {\n                m_rotation = needRotation;\n                baseMovingSoundPlay = false;\n            }\n\n            if (m_rotation > MathHelper.Pi)\n                m_rotation = m_rotation - MathHelper.TwoPi;\n            else\n                if (m_rotation < -MathHelper.Pi)\n                    m_rotation = m_rotation + MathHelper.TwoPi;\n\n\n            // real elevation:\n            step = m_elevationSpeed * (MyMinerGame.TotalGamePlayTimeInMilliseconds - m_elevationInterval_ms);\n\n            float diffElev = needElevation - m_elevation;\n            float diffElevAbs = Math.Abs(diffElev);\n\n            if (needElevation > m_barrel.BarrelElevationMin)\n            {\n                if (diffElevAbs > 0.001f)\n                {     /*\n                    if (largeShipTooFar)\n                    {\n                        m_elevation += diffElev;\n                    }\n                    else*/\n                    {\n                        float value = MathHelper.Clamp(step, float.Epsilon, diffElevAbs);\n                        m_elevation += diffElev > 0 ? value : -value;\n                    }\n\n                    needUpdateMatrix = true;\n                }\n                else\n                {\n                    m_elevation = needElevation;\n                    //baseMovingSoundPlay = false;\n                }\n            }\n           \n\n            m_elevationInterval_ms = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n            m_rotationInterval_ms = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n\n            if (needUpdateMatrix)\n            {\n                // rotate models by rotation & elevation:\n                RotateModels();\n            }\n\n            // Sounds:\n            MySoundCue? movingSound = null;\n            {\n                movingSound = UnifiedWeaponCueGet(MySoundCuesEnum.WepLargeShipAutocannonRotate);\n\n                if (baseMovingSoundPlay)\n                {\n                    if (movingSound == null || movingSound.Value.IsPlaying == false)\n                    {\n                        UnifiedWeaponCueSet(MySoundCuesEnum.WepLargeShipAutocannonRotate,\n                            MyAudio.AddCue2dOr3d(PrefabParent, Audio.MySoundCuesEnum.WepLargeShipAutocannonRotate, GetPosition(), WorldMatrix.Forward, WorldMatrix.Up, Vector3.Zero));\n                            //MyAudio.AddCue3D(MySoundCuesEnum.WepLargeShipAutocannonRotate, GetPosition(), WorldMatrix.Forward, WorldMatrix.Up, Vector3.Zero));\n                    }\n                }\n                else\n                {\n                    if (movingSound != null)\n                    {\n                        StopAimingSound();\n                    }\n                }\n            }\n\n            if (movingSound != null && movingSound.Value.IsPlaying)\n            {\n                MyAudio.UpdateCuePosition(movingSound, GetPosition(), WorldMatrix.Forward, WorldMatrix.Up, Vector3.Zero);\n            }\n            \n            // if is properly rotated:\n            if (Target != null && !Target.IsDead())\n            {\n                // test intervals of the aiming:\n                float stapR = Math.Abs(Math.Abs(needRotation) - Math.Abs(m_rotation));\n                float stapE = Math.Abs(Math.Abs(needElevation) - Math.Abs(m_elevation));\n                if (stapR <= float.Epsilon && stapE <= float.Epsilon)\n                {\n                    //baseMovingSoundPlay = false;\n                    return true;\n                }\n                else\n                {\n                    return false;\n                }\n            }\n\n            return false;\n        }\n\n        public MyEntity GetTarget()\n        {\n            return Target;\n        }\n\n        public override bool DebugDraw()\n        {\n            if (MyMwcFinalBuildConstants.DrawHelperPrimitives)\n            {\n                float radius = 0.0f;\n                if (ModelLod0 != null)\n                    radius = ModelLod0.BoundingSphere.Radius;\n                else if (ModelLod1 != null)\n                    radius = ModelLod1.BoundingSphere.Radius;\n\n                Vector3 statusColor = new Vector3();\n                switch (m_status)\n                {\n                    case MyLargeShipGunStatus.MyWeaponStatus_Deactivated:\n                        {\n                            statusColor = Color.Green.ToVector3();\n                        }\n                        break;\n                    case MyLargeShipGunStatus.MyWeaponStatus_Searching:\n                        {\n                            statusColor = Color.Red.ToVector3();\n                        }\n                        break;\n                    case MyLargeShipGunStatus.MyWeaponStatus_Shoothing:\n                        {\n                            statusColor = Color.White.ToVector3();\n                        }\n                        break;\n                }\n                Color from = new Color(statusColor);\n                Color to = new Color(statusColor);\n                if (Target != null)\n                {\n                    MyDebugDraw.DrawLine3D(m_barrel.GetPosition(), Target.GetPosition(), from, to);\n                }\n                // Try to draw prediction:\n                if (Target != null)\n                {\n                    Color supPreColor = Color.LightSeaGreen;\n                    MyDebugDraw.DrawLine3D(m_barrel.GetPosition(), m_predictedTarget, supPreColor, supPreColor);\n                }\n                m_prediction.DebugDraw(m_barrel.GetPosition(), new Color(statusColor));\n            }\n            return base.DebugDraw();\n        }\n\n        public override bool Draw(MyRenderObject renderObject)\n        {\n           // return false;\n            if (!MyGuiScreenGamePlay.Static.IsControlledByPlayer(PrefabParent))\n            {\n                return base.Draw(renderObject);\n            }\n            return true;\n        }\n        \n        public override void Close()\n        {\n            base.Close();\n\n            // close sounds:\n            foreach (MySoundCue? soundCue in m_unifiedWeaponCues)\n            {\n                if (soundCue != null && soundCue.Value.IsValid)\n                {\n                    soundCue.Value.Stop(SharpDX.XACT3.StopFlags.Immediate);\n                }\n            }\n            m_unifiedWeaponCues = null;\n            m_barrel = null;\n        }\n\n        public void UnifiedWeaponCueSet(MySoundCuesEnum cueEnum, MySoundCue? value)\n        {\n            m_unifiedWeaponCues[(int)cueEnum] = value;\n        }\n\n        public MySoundCue? UnifiedWeaponCueGet(MySoundCuesEnum cueEnum)\n        {\n            return m_unifiedWeaponCues[(int)cueEnum];\n        }\n\n        // helping static functions:\n        public static StringBuilder GetHudLabelText(MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum type)\n        {\n            switch (type)\n            {\n                case MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A01_LARGESHIP_AUTOCANNON:\n                    return MyTextsWrapper.Get(MyTextsWrapperEnum.p351_a01_largeship_autocannon);\n                    break;\n                case MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A01_LARGESHIP_MACHINEGUN:\n                    return MyTextsWrapper.Get(MyTextsWrapperEnum.p351_a01_largeship_machinegun);\n                    break;\n                case MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A01_LARGESHIP_CIWS:\n                    return MyTextsWrapper.Get(MyTextsWrapperEnum.p351_a01_largeship_ciws);\n                    break;\n                case MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A01_LARGESHIP_MISSILE_BASIC4:\n                    return MyTextsWrapper.Get(MyTextsWrapperEnum.p351_a01_largeship_missile_gun4);\n                    break;\n                case MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A01_LARGESHIP_MISSILE_BASIC6:\n                    return MyTextsWrapper.Get(MyTextsWrapperEnum.p351_a01_largeship_missile_gun6);\n                    break;\n                case MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A01_LARGESHIP_MISSILE_BASIC9:\n                    return MyTextsWrapper.Get(MyTextsWrapperEnum.p351_a01_largeship_missile_gun9);\n                    break;\n                case MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A02_LARGESHIP_MISSILE_GUIDED4:\n                    return MyTextsWrapper.Get(MyTextsWrapperEnum.p351_a02_largeship_missile_gun_guided4);\n                    break;\n                case MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A02_LARGESHIP_MISSILE_GUIDED6:\n                    return MyTextsWrapper.Get(MyTextsWrapperEnum.p351_a02_largeship_missile_gun_guided6);\n                    break;\n                case MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A02_LARGESHIP_MISSILE_GUIDED9:\n                    return MyTextsWrapper.Get(MyTextsWrapperEnum.p351_a02_largeship_missile_gun_guided9);\n                    break;\n                default:\n                    return null;\n            }\n            return null;\n        }\n\n        public static bool GetWeaponModels(MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum type, ref MyModel baseModel, ref MyModel barrelModel)\n        {\n            switch (type)\n            {\n                case MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A01_LARGESHIP_AUTOCANNON:\n                    baseModel = MyModels.GetModelForDraw(MyModelsEnum.LargeShipAutocannonBase);\n                    barrelModel = MyModels.GetModelForDraw(MyModelsEnum.LargeShipAutocannonBarrel);\n                    break;\n                case MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A01_LARGESHIP_CIWS:\n                    baseModel = MyModels.GetModelForDraw(MyModelsEnum.LargeShipCiwsBase);\n                    barrelModel = MyModels.GetModelForDraw(MyModelsEnum.LargeShipCiwsBarrel);\n                    break;\n                case MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A01_LARGESHIP_MACHINEGUN:\n                    baseModel = MyModels.GetModelForDraw(MyModelsEnum.LargeShipMachineGunBase);\n                    barrelModel = MyModels.GetModelForDraw(MyModelsEnum.LargeShipMachineGunBarrel);\n                    break;\n                case MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A01_LARGESHIP_MISSILE_BASIC4:\n                case MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A02_LARGESHIP_MISSILE_GUIDED4:\n                    baseModel = MyModels.GetModelForDraw(MyModelsEnum.LargeShipMissileLauncher4Base);\n                    barrelModel = MyModels.GetModelForDraw(MyModelsEnum.LargeShipMissileLauncher4Barrel);\n                    break;\n                case MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A01_LARGESHIP_MISSILE_BASIC6:\n                case MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A02_LARGESHIP_MISSILE_GUIDED6:\n                    baseModel = MyModels.GetModelForDraw(MyModelsEnum.LargeShipMissileLauncher6Base);\n                    barrelModel = MyModels.GetModelForDraw(MyModelsEnum.LargeShipMissileLauncher6Barrel);\n                    break;\n                case MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A01_LARGESHIP_MISSILE_BASIC9:\n                case MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A02_LARGESHIP_MISSILE_GUIDED9:\n                    baseModel = MyModels.GetModelForDraw(MyModelsEnum.LargeShipMissileLauncher9Base);\n                    barrelModel = MyModels.GetModelForDraw(MyModelsEnum.LargeShipMissileLauncher9Barrel);\n                    break;\n                default:\n                    return false;\n            }\n            return true;\n        }\n\n        public static bool GetModelEnums(MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum prefab, out MyModelsEnum baseModel, out MyModelsEnum barrelModel)\n        {\n            switch (prefab)\n            {\n                case MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A01_LARGESHIP_AUTOCANNON:\n                    baseModel = MyModelsEnum.LargeShipAutocannonBase;\n                    barrelModel = MyModelsEnum.LargeShipAutocannonBarrel;\n                    break;\n                case MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A01_LARGESHIP_CIWS:\n                    baseModel = MyModelsEnum.LargeShipCiwsBase;\n                    barrelModel = MyModelsEnum.LargeShipCiwsBarrel;\n                    break;\n                case MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A01_LARGESHIP_MACHINEGUN:\n                    baseModel = MyModelsEnum.LargeShipMachineGunBase;\n                    barrelModel = MyModelsEnum.LargeShipMachineGunBarrel;\n                    break;\n                case MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A01_LARGESHIP_MISSILE_BASIC4:\n                case MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A02_LARGESHIP_MISSILE_GUIDED4:\n                    baseModel = MyModelsEnum.LargeShipMissileLauncher4Base;\n                    barrelModel = MyModelsEnum.LargeShipMissileLauncher4Barrel;\n                    break;\n                case MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A01_LARGESHIP_MISSILE_BASIC6:\n                case MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A02_LARGESHIP_MISSILE_GUIDED6:\n                    baseModel = MyModelsEnum.LargeShipMissileLauncher6Base;\n                    barrelModel = MyModelsEnum.LargeShipMissileLauncher6Barrel;\n                    break;\n                case MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A01_LARGESHIP_MISSILE_BASIC9:\n                case MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A02_LARGESHIP_MISSILE_GUIDED9:\n                    baseModel = MyModelsEnum.LargeShipMissileLauncher9Base;\n                    barrelModel = MyModelsEnum.LargeShipMissileLauncher9Barrel;\n                    break;\n                //case MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P351_A01_WEAPON_MOUNT:\n                //    baseModel = MyModelsEnum.p351_a01_weapon_mount;\n                //    barrelModel = MyModelsEnum.p351_a01_weapon_mount;\n                //    break;\n                default:\n                    baseModel = MyModelsEnum.LargeShipAutocannonBase;\n                    barrelModel = MyModelsEnum.LargeShipAutocannonBarrel;\n                    return false;\n            }\n            return true;\n        }\n\n        public static bool GetVisualPreviewData(MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum prefab,\n            ref MyModel baseModel, ref MyModel barrelModel, ref Matrix baseMatrix, ref Matrix barrelMatrix)\n        {\n            MyModelsEnum baseModelEnum, barelModelEnum;\n            if (!GetModelEnums(prefab, out baseModelEnum, out barelModelEnum))\n            {\n                return false;\n            }\n\n            baseModel = MyModels.GetModelForDraw(baseModelEnum);\n            barrelModel = MyModels.GetModelForDraw(barelModelEnum);\n\n            baseMatrix = Matrix.Identity;\n            baseMatrix.Translation = -baseModel.BoundingSphere.Center;\n            baseMatrix.Translation -= new Vector3(0, 0.2f * baseModel.BoundingSphere.Radius, 0);\n            baseMatrix *= Matrix.CreateRotationY(MathHelper.PiOver2 + MathHelper.PiOver4 + MathHelper.PiOver4 * 0.2f);\n            baseMatrix *= Matrix.CreateRotationX(.35f * MathHelper.PiOver4);\n            float distanceMultiplier = baseModelEnum == MyModelsEnum.LargeShipCiwsBase ? 3.0f : 2.3f;\n            baseMatrix.Translation += new Vector3(0.0f, 0.0f, -baseModel.BoundingSphere.Radius * distanceMultiplier);\n            barrelMatrix = baseMatrix;\n            Matrix barrelMatrixLocal = baseModel.Dummies.ContainsKey(\"axis\") ? MyMath.NormalizeMatrix(baseModel.Dummies[\"axis\"].Matrix) : Matrix.Identity;\n            barrelMatrix.Translation += barrelMatrixLocal.Translation;\n\n            return true;\n        }\n\n        public static void CreateAloneWeapon(ref MyLargeShipGunBase weapon, string hudLabelText, Vector3 position, Matrix localOrientation,\n            MyMwcObjectBuilder_PrefabLargeWeapon objectBuilder, bool activated)\n        {\n            StringBuilder sb = new StringBuilder(\"Large weapon\");\n            MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum tmp = (MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum)objectBuilder.GetObjectBuilderId().Value;\n            switch (tmp)\n            {\n                case MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A01_LARGESHIP_MACHINEGUN:\n                    weapon = new MyLargeShipMachineGun();\n                    break;\n                case MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A01_LARGESHIP_CIWS:\n                    weapon = new MyLargeShipCIWS();\n                    break;\n                case MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A01_LARGESHIP_AUTOCANNON:\n                    weapon = new MyLargeShipAutocannon();\n                    break;\n                case MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A01_LARGESHIP_MISSILE_BASIC4:\n                case MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A01_LARGESHIP_MISSILE_BASIC6:\n                case MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A01_LARGESHIP_MISSILE_BASIC9:\n                case MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A02_LARGESHIP_MISSILE_GUIDED4:\n                case MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A02_LARGESHIP_MISSILE_GUIDED6:\n                case MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A02_LARGESHIP_MISSILE_GUIDED9:\n                    weapon = new MyLargeShipMissileLauncherGun();\n                    break;\n\n                default:\n                    throw new MyMwcExceptionApplicationShouldNotGetHere();\n                    break;\n            }\n\n            weapon.Init(null, null, position, localOrientation.Forward, localOrientation.Up, objectBuilder);\n\n            Matrix world = Matrix.CreateWorld(position, localOrientation.Forward, localOrientation.Up);\n            weapon.WorldMatrix = world;\n\n            if (activated)\n            {\n                weapon.PersistentFlags &= ~MyPersistentEntityFlags.Deactivated;\n                weapon.GetBarell().PersistentFlags &= ~MyPersistentEntityFlags.Deactivated;\n            }\n            else\n            {\n                weapon.PersistentFlags |= MyPersistentEntityFlags.Deactivated;\n                weapon.GetBarell().PersistentFlags |= MyPersistentEntityFlags.Deactivated;\n            }\n        }\n\n        public static void GetMissileAmmoParams(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum AmmoType, ref int MissileShotInterval)\n        {\n            MissileShotInterval = MyMissileConstants.MISSILE_LAUNCHER_SHOT_INTERVAL_IN_MILISECONDS;\n            switch (AmmoType)\n            {\n                case MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Missile_Basic:\n                    break;\n                case MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Guided_Missile_Engine_Detection:\n                    MissileShotInterval = MyGuidedMissileConstants.MISSILE_LAUNCHER_SHOT_INTERVAL_IN_MILISECONDS;\n                    break;\n                case MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Guided_Missile_Radar_Detection:\n                    MissileShotInterval = MyGuidedMissileConstants.MISSILE_LAUNCHER_SHOT_INTERVAL_IN_MILISECONDS;\n                    break;\n                case MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Guided_Missile_Visual_Detection:\n                    MissileShotInterval = MyGuidedMissileConstants.MISSILE_LAUNCHER_SHOT_INTERVAL_IN_MILISECONDS;\n                    break;\n                default:\n                    break;\n            }\n        }\n\n        public override bool GetIntersectionWithLine(ref MyLine line, out MyIntersectionResultLineTriangleEx? t, IntersectionFlags flags = IntersectionFlags.ALL_TRIANGLES)\n        {\n            System.Diagnostics.Debug.Assert(!Closed);\n\n            if (base.GetIntersectionWithLine(ref line, out t))\n                return true;\n\n            return m_barrel.GetIntersectionWithLine(ref line, out t);\n        }\n\n        public override bool GetIntersectionWithLine(ref MyLine line, out Vector3? v, bool useCollisionModel = true, IntersectionFlags flags = IntersectionFlags.ALL_TRIANGLES)\n        {\n            System.Diagnostics.Debug.Assert(!Closed);\n\n            if (base.GetIntersectionWithLine(ref line, out v, useCollisionModel))\n                return true;\n\n            return m_barrel.GetIntersectionWithLine(ref line, out v, useCollisionModel);\n        }\n\n        public override MyEntity GetBaseEntity()\n        {\n            return PrefabParent;\n        }\n\n        public override bool IsThisGunFriendly()\n        {\n            return ((Parent is MyPrefabBase) &&\n                MyFactions.GetFactionsRelation(((Parent as MyPrefabBase).Parent as MyPrefabContainer), MySession.Static.Player) == MyFactionRelationEnum.Friend);\n        }\n\n        protected override void DoDamageInternal(float playerDamage, float damage, float empDamage, MyDamageType damageType, MyAmmoType ammoType, MyEntity damageSource, bool justDeactivate)\n        {\n            if (Parent != null) //Because in objects got for explosion damage can be parent and children together\n            {\n                Parent.DoDamage(playerDamage, damage, empDamage, damageType, ammoType, damageSource, justDeactivate);\n            }\n        }\n\n        public override float Health\n        {\n            get\n            {\n                if (Parent == null) //parent is already dead and removed\n                    return 0;\n\n                return Parent.Health; \n            }\n            set\n            {\n                Parent.Health = value;\n            }\n        }\n\n        public override void OnWorldPositionChanged(object source)\n        {\n            base.OnWorldPositionChanged(source);\n\n            if (m_shootingSound.HasValue)\n            {\n                // update rotation sound position:\n                MySoundCue? updateSound = UnifiedWeaponCueGet(m_shootingSound.Value);\n                if (updateSound != null)\n                {\n                    MyAudio.UpdateCuePosition(updateSound, GetPosition(), GetWorldRotation().Forward, GetWorldRotation().Up, Vector3.Zero);\n                }\n            }\n        }\n\n        public void MoveAndRotate(Vector3 moveIndicator, Vector2 rotationIndicator, float rollIndicator, bool afterburner)\n        {\n            Debug.Assert(MyGuiScreenGamePlay.Static.IsControlledByPlayer(PrefabParent));\n\n            float rotationSpeed = MathHelper.Pi / 180 * 3;\n            float elevationSpeed = MathHelper.Pi / 180 * 3;\n\n            m_rotation += -rotationIndicator.Y * rotationSpeed * MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS;\n            m_elevation = MathHelper.Clamp(m_elevation - rotationIndicator.X * elevationSpeed * MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS,\n                m_barrel.BarrelElevationMin, MathHelper.PiOver2 - MathHelper.Pi / 180);\n        }\n\n        public Matrix GetViewMatrix()\n        {\n            return m_barrel.GetViewMatrix();\n        }\n\n        public void Fire()\n        {\n            m_playerFire = true;\n        }\n\n        public void StopFire() \n        {\n            m_playerFire = false;\n        }\n\n        public override Vector3 GetHUDMarkerPosition()\n        {\n            if (m_barrel != null)\n            {\n                return m_barrel.GetPosition();\n            }\n            else \n            {\n                return GetPosition();\n            }\n        }\n\n        public MyLargeShipBarrelBase GetBarell()\n        {\n            return m_barrel;\n        }\n\n        internal void SetTarget(MyEntity entity)\n        {\n            Target = entity;\n        }\n\n        internal void PlayShootingSound()\n        {\n            if (m_shootingSound.HasValue)\n            {\n                MySoundCue? shootingSound = UnifiedWeaponCueGet(m_shootingSound.Value);\n                if (shootingSound == null || !shootingSound.Value.IsPlaying)\n                {\n                    UnifiedWeaponCueSet(m_shootingSound.Value,\n                        MyAudio.AddCue2dOr3d(PrefabParent, m_shootingSound.Value, GetPosition(), WorldMatrix.Forward, WorldMatrix.Up, Vector3.Zero));\n                }\n            }\n        }\n\n        internal void StopShootingSound()\n        {\n            if (m_shootingSound.HasValue)\n            {\n                MySoundCue? shootingSound = UnifiedWeaponCueGet(m_shootingSound.Value);\n                if (shootingSound != null && shootingSound.Value.IsPlaying)\n                {\n                    shootingSound.Value.Stop(SharpDX.XACT3.StopFlags.Release);\n\n                    if (m_shootingSoundRelease.HasValue)\n                    {\n                        UnifiedWeaponCueSet(m_shootingSoundRelease.Value,\n                            MyAudio.AddCue2dOr3d(PrefabParent, m_shootingSoundRelease.Value, GetPosition(), WorldMatrix.Forward, WorldMatrix.Up, Vector3.Zero));\n                    }\n                }\n            }\n        }\n\n        internal void StopAimingSound()\n        {\n            MySoundCue? movingSound = UnifiedWeaponCueGet(MySoundCuesEnum.WepLargeShipAutocannonRotate);\n\n            if (movingSound.HasValue && movingSound.Value.IsPlaying)\n            {\n                movingSound.Value.Stop(SharpDX.XACT3.StopFlags.Release);\n                UnifiedWeaponCueSet(MySoundCuesEnum.WepLargeShipAutocannonRotateRelease,\n                    MyAudio.AddCue2dOr3d(PrefabParent, MySoundCuesEnum.WepLargeShipAutocannonRotateRelease, GetPosition(), WorldMatrix.Forward, WorldMatrix.Up, Vector3.Zero));\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Weapons/Guns/MyLargeShipMachineGun.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Models;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.AppCode.App;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils;\nusing MinerWarsMath;\n\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.AppCode.Game.TransparentGeometry.Particles;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.Prefabs;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Entities.Prefabs;\n\nusing MinerWars.AppCode.Physics;\nusing MinerWars.AppCode.Game.Physics;\n\n\nnamespace MinerWars.AppCode.Game.Entities.Weapons\n{\n    using System.Text;\n    using App;\n    using Audio;\n    using CommonLIB.AppCode.ObjectBuilders;\n    using CommonLIB.AppCode.ObjectBuilders.SubObjects;\n    using CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\n    using MinerWarsMath;\n    \n    using Models;\n    using TransparentGeometry;\n    using SysUtils;\n    using Utils;\n    using MinerWars.AppCode.Game.Gameplay;\n    using MinerWars.AppCode.Game.Render;\n    using MinerWars.CommonLIB.AppCode.Import;\n\n\n    class MyLargeShipMachineGun : MyLargeShipGunBase\n    {\n         //public override void Init(StringBuilder hudLabelText, MyLargeShip parentObject,\n         //   Vector3 position, Vector3 forwardVector, Vector3 upVector,\n         //   MyMwcObjectBuilder_LargeShip_Weapon objectBuilder)\n        public override void Init(StringBuilder hudLabelText, MyEntity parentObject, Vector3 position, Vector3 forwardVector, Vector3 upVector, MyMwcObjectBuilder_Base objectBuilder)\n        {\n            base.Init(hudLabelText, MyModelsEnum.LargeShipMachineGunBase, MyMaterialType.METAL, parentObject, position, forwardVector, upVector, objectBuilder, MyModelsEnum.LargeShipMachineGunBase_COL);\n\n            Matrix barrelMatrix = ModelLod0 != null\n                                      ? MyMath.NormalizeMatrix(ModelLod0.Dummies[\"axis\"].Matrix)\n                                      : Matrix.Identity;\n\n            MyLargeShipMachineBarrel barrel = new MyLargeShipMachineBarrel();\n            barrel.Init(hudLabelText, barrelMatrix, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Machine_Gun_High_Speed, this);\n            MountBarrel(barrel);\n\n            // User settings:\n            m_predictionIntervalConst_ms = 250;\n            m_checkTargetIntervalConst_ms = 150;\n            m_randomStandbyChangeConst_ms = 3000;\n\n            m_shootingSound = MySoundCuesEnum.WepMachineGunHighFire3d;\n            m_shootingSoundRelease = MySoundCuesEnum.WepMachineGunHighRel3d;\n        }\n    }\n\n    // Barrel for machine gun:\n    class MyLargeShipMachineBarrel : MyLargeShipBarrelBase\n    {\n        #region MACHINE GUN BARREL VARIABLES\n        // distances for the testing:\n        private Vector3 m_muzzleFlashStartPosition;  // Position of the barrel muzzle flashes from the dummy\n        private Vector3 m_muzzleFlashPosition;\n        #endregion\n\n        public void Init(StringBuilder hudLabelText, Matrix localMatrix, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum AmmoType, MyLargeShipGunBase parentObject)\n        {\n            base.Init(hudLabelText, MyModelsEnum.LargeShipMachineGunBarrel, null, localMatrix, AmmoType, parentObject);\n\n\n            // Muzzle flash position from the dummy on the model:\n            Matrix muzzleFlashDummy = ModelLod0 != null ? ModelLod0.Dummies[\"MUZZLE_FLASH\"].Matrix : Matrix.Identity;\n            m_muzzleFlashStartPosition = muzzleFlashDummy.Translation;\n        }\n\n        public override bool Draw(MyRenderObject renderObject)\n        {\n            if (base.Draw(renderObject) == false) return false;\n            //if (IsControlledByPlayer()) return true;\n\n            Matrix worldMatrix = WorldMatrix;\n            m_muzzleFlashPosition = MyUtils.GetTransform(m_muzzleFlashStartPosition, ref worldMatrix);\n\n            // Draw muzzle flash:\n            int dt = MyMinerGame.TotalGamePlayTimeInMilliseconds - m_lastTimeShoot;\n            if (dt <= MyMachineGunConstants.MUZZLE_FLASH_MACHINE_GUN_LIFESPAN)\n            {\n                MyParticleEffects.GenerateMuzzleFlash(m_muzzleFlashPosition, worldMatrix.Forward, m_muzzleFlashRadius, m_muzzleFlashLength);\n            }\n \n            // Draw smoke:\n            if (m_shotSmoke != null)\n            {\n                m_shotSmoke.UserBirthMultiplier = m_smokeToGenerate;\n                m_shotSmoke.WorldMatrix = Matrix.CreateTranslation(m_muzzleFlashPosition);\n            }\n\n            return true;\n        }\n\n        public override bool StartShooting()\n        {\n            if (!base.StartShooting())\n                return false;\n\n            if ((MyMinerGame.TotalGamePlayTimeInMilliseconds - m_lastTimeShoot) < MyAutocanonConstants.SHOT_INTERVAL_IN_MILISECONDS)\n                return false;\n\n            // Set muzzle flashes:\n            m_muzzleFlashLength = MyMwcUtils.GetRandomFloat(4, 6);\n            m_muzzleFlashRadius = MyMwcUtils.GetRandomFloat(1.2f, 2.0f);\n\n            // Increse smoke to generate\n            IncreaseSmoke();\n\n            // Make random trajectories for the bullet:\n            Matrix worldMatrix = WorldMatrix;\n\n            // get muzzel flash positions:\n            List<MyModelDummy> muzzles = GetMuzzleFlashMatrix();\n\n            Vector3 muzzleFlashPosition = MyUtils.GetTransform(muzzles[0].Matrix.Translation, ref worldMatrix);\n            m_muzzleFlashPosition = MyUtils.GetTransform(m_muzzleFlashStartPosition, ref worldMatrix);\n\n            if (m_shotSmoke == null)\n            {\n                m_shotSmoke = MyParticlesManager.CreateParticleEffect((int)MyParticleEffectsIDEnum.Smoke_LargeGunShot);\n                m_shotSmoke.AutoDelete = false;\n            }\n\n            m_shotSmoke.UserEmitterScale = m_smokeToGenerate;\n            m_shotSmoke.UserScale = 5;\n            m_shotSmoke.WorldMatrix = Matrix.CreateTranslation(m_muzzleFlashPosition);\n\n            GetWeaponBase().PlayShootingSound();\n\n            // Shoot projectiles\n            AddProjectile(MyAmmoConstants.GetAmmoProperties(GetAmmoType()), m_muzzleFlashPosition);\n\n            m_lastTimeShoot = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n\n            return true;\n        }\n\n        public override Matrix GetViewMatrix()\n        {\n            Vector3 lookPosition = WorldMatrix.Translation + WorldMatrix.Backward * 0f + WorldMatrix.Up * 3f;\n            Vector3 lookTarget = WorldMatrix.Translation + WorldMatrix.Forward * 1000000f;\n            Vector3 lookDirection = Vector3.Normalize(lookTarget - lookPosition);\n            Vector3 up = Vector3.Cross(WorldMatrix.Right, lookDirection);\n            return Matrix.CreateLookAt(lookPosition, lookTarget, up);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Weapons/Guns/MyLargeShipMissileLauncher4Gun.cs",
    "content": "﻿using System.Text;\nusing System.Collections.Generic;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing Microsoft.Xna.Framework;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Models;\nusing MinerWars.AppCode.App;\n\nusing MinerWarsCustomContentImporters;\n\nnamespace MinerWars.AppCode.Game.Managers.EntityManager.Entities.Weapons          \n{\n    using Audio;\n    using CommonLIB.AppCode.ObjectBuilders;\n/*\n    class MyLargeShipMissileLauncher4Gun : MyLargeShipGunBase\n    {\n        public override void Init(StringBuilder hudLabelText, MyLargeShip parentObject, Vector3 position, Vector3 forwardVector, Vector3 upVector, MyMwcObjectBuilder_Base objectBuilder)\n        {\n            base.Init(hudLabelText,  MyModelsEnum.LargeShipMissileLauncher4Base, MyMaterialType.METAL, parentObject, position, forwardVector, upVector, objectBuilder);\n\n            Matrix barrelMatrix = MyMath.NormalizeMatrix(ModelLod0.Dummies[\"axis\"].Matrix);\n            MyLargeShipMissileLauncher4Barrel barrel = new MyLargeShipMissileLauncher4Barrel();\n            \n            barrel.Init(hudLabelText, barrelMatrix, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Missile_Basic, this);\n            MountBarrel(barrel);\n\n            // User settings:\n            m_predictionIntervalConst_ms = 250;\n            m_checkTargetIntervalConst_ms = 150;\n            m_randomStandbyChangeConst_ms = 4000;\n            m_rotationSpeed = MathHelper.Pi / 2000.0f;\n            m_elevationSpeed = MathHelper.Pi / 2000.0f;\n        }\n\n        public override void Update()\n        {\n            base.Update();\n        }\n    }\n\n\n    class MyLargeShipMissileLauncher4Barrel : MyLargeShipBarrelBase\n    {\n        private int m_burstFireTime_ms = 0;\n        private int m_burstFireTimeLoadingIntervalConst_ms = 2000;\n        private bool m_burstFinish = false;\n        private const int m_burstFireCount = 4;\n        private int m_burstToFire = 0;\n\n        public void Init(StringBuilder hudLabelText, Matrix localMatrix, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum AmmoType, MyLargeShipGunBase parentObject)\n        {\n            base.Init(hudLabelText, MyModelsEnum.LargeShipMissileLauncher4Barrel, null, localMatrix, AmmoType, parentObject);\n\n            m_burstToFire = m_burstFireCount;\n            m_burstFireTime_ms = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n\n            // User settings:\n            m_searchingDistanceMax = 2000.0f;\n            m_aimingDistanceMax = 1000.0f;\n            m_burstFireTimeLoadingIntervalConst_ms = 2000;\n\n            // This is imoprtant for missile launchers (they are not able to lauchching rackets on safe trajectory)\n            m_barrelElevationMin = 0.1571f;\n        }\n\n        public override bool StartShooting()\n        {            \n            if (!m_burstFinish)\n            {\n                int missileShotInterval = 0;\n\n                MyLargeShipGunBase.GetMissileAmmoParams(GetAmmoType(), ref missileShotInterval);\n\n                if (!base.StartShooting())\n                    return false;\n\n                if ((MyMinerGame.TotalGamePlayTimeInMilliseconds - m_lastTimeShoot) < missileShotInterval) return false;                \n\n                MySmallShip target = ((MyLargeShipGunBase)Parent).GetTarget();\n\n                List<MyModelDummy> muzzles = GetMuzzleFlashMatrix();\n                m_activeMuzzle = --m_burstToFire;\n\n                Matrix worldMatrix = WorldMatrix;\n                Vector3 muzzleFlashPosition = MyUtils.GetTransform(muzzles[m_activeMuzzle].Matrix.Translation, ref worldMatrix);\n\n\n                if (target != null)\n                {\n                    MySoundCue? shootingSound = GetWeaponBase().UnifiedWeaponCueGet(MySoundCuesEnum.WepMissileLaunch3d);\n                    if (shootingSound == null || !shootingSound.Value.IsPlaying)\n                    {\n                        GetWeaponBase().UnifiedWeaponCueSet(Audio.MySoundCuesEnum.WepMissileLaunch3d,\n                            MyAudio.AddCue2dOr3d(this, Audio.MySoundCuesEnum.WepMissileLaunch3d, muzzleFlashPosition, WorldMatrix.Forward, WorldMatrix.Up, Vector3.Zero));\n                    }\n\n                    //MyMissiles.Add(missileType, muzzleFlashPosition, Vector3.Zero, WorldMatrix.Forward, this, target);\n                    MyMissiles.Add(GetAmmoType(), muzzleFlashPosition, WorldMatrix.Forward * 2.0f, WorldMatrix.Forward, this, target);\n                }\n            }\n            \n            if (m_burstToFire <= 0)\n            {\n                m_burstFireTime_ms = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n                m_burstToFire = m_burstFireCount;\n                m_burstFinish = true;\n            }\n            if ((MyMinerGame.TotalGamePlayTimeInMilliseconds - m_burstFireTime_ms) > m_burstFireTimeLoadingIntervalConst_ms)\n            {\n                m_burstFinish = false;\n            }\n            \n            m_lastTimeShoot = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n\n            return true;\n        }\n\n        public override void StopShooting()\n        {\n            base.StopShooting();\n\n            MySoundCue? shootingSound = GetWeaponBase().UnifiedWeaponCueGet(MySoundCuesEnum.WepMissileLaunch3d);\n            if (shootingSound != null)\n            {\n                shootingSound.Value.Stop(Microsoft.Xna.Framework.Audio.AudioStopOptions.Immediate);\n            }\n        }\n\n        public override void Update()\n        {\n            base.Update();\n\n            if (!GetWeaponBase().IsActivate())\n            {\n                MySoundCue? shootingSound = GetWeaponBase().UnifiedWeaponCueGet(MySoundCuesEnum.WepMissileLaunch3d);\n                if (shootingSound != null)\n                {\n                    shootingSound.Value.Stop(Microsoft.Xna.Framework.Audio.AudioStopOptions.Immediate);\n                }\n            }\n        }\n    }  */\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Weapons/Guns/MyLargeShipMissileLauncher6Gun.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing Microsoft.Xna.Framework;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Models;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.Prefabs;\nusing MinerWarsCustomContentImporters;\n\nnamespace MinerWars.AppCode.Game.Managers.EntityManager.Entities.Weapons          \n{\n    using Audio;\n    using CommonLIB.AppCode.ObjectBuilders;\n\n    /*\n    class MyLargeShipMissileLauncher6Gun : MyLargeShipGunBase\n    {\n        public override void Init(StringBuilder hudLabelText, MyLargeShip parentObject, Vector3 position, Vector3 forwardVector, Vector3 upVector, MyMwcObjectBuilder_Base objectBuilder)\n        {\n            base.Init(hudLabelText,  MyModelsEnum.LargeShipMissileLauncher6Base, MyMaterialType.METAL, parentObject, position, forwardVector, upVector, objectBuilder);\n\n            Matrix barrelMatrix = MyMath.NormalizeMatrix(ModelLod0.Dummies[\"axis\"].Matrix);\n            MyLargeShipMissileLauncher6Barrel barrel = new MyLargeShipMissileLauncher6Barrel();\n            \n            barrel.Init(hudLabelText, barrelMatrix, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Missile_Basic, this);\n            MountBarrel(barrel);\n\n            // User settings:\n            m_predictionIntervalConst_ms = 250;\n            m_checkTargetIntervalConst_ms = 150;\n            m_randomStandbyChangeConst_ms = 4000;\n            m_rotationSpeed = MathHelper.Pi / 2000.0f;\n            m_elevationSpeed = MathHelper.Pi / 2000.0f;\n        }\n\n        public override void Update()\n        {\n            base.Update();\n        }\n    }\n\n\n    class MyLargeShipMissileLauncher6Barrel : MyLargeShipBarrelBase\n    {\n        private int m_burstFireTime_ms = 0;\n        private int m_burstFireTimeLoadingIntervalConst_ms = 2000;\n        private bool m_burstFinish = false;\n        private const int m_burstFireCount = 6;\n        private int m_burstToFire = 0;\n\n        public void Init(StringBuilder hudLabelText, Matrix localMatrix, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum AmmoType, MyLargeShipGunBase parentObject)\n        {\n            base.Init(hudLabelText, MyModelsEnum.LargeShipMissileLauncher6Barrel, null, localMatrix, AmmoType, parentObject);\n\n            m_burstToFire = m_burstFireCount;\n            m_burstFireTime_ms = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n\n            // User settings:\n            m_searchingDistanceMax = 2000.0f;\n            m_aimingDistanceMax = 1000.0f;\n            m_burstFireTimeLoadingIntervalConst_ms = 2000;\n\n            // This is imoprtant for missile launchers (they are not able to lauchching rackets on safe trajectory)\n            m_barrelElevationMin = 0.1571f;\n        }\n\n        public override bool StartShooting()\n        {\n            if (!m_burstFinish)\n            {\n                int missileShotInterval = 0;\n\n                MyLargeShipGunBase.GetMissileAmmoParams(GetAmmoType(), ref missileShotInterval);\n\n                if (!base.StartShooting()) \n                    return false;\n\n                if ((MyMinerGame.TotalGamePlayTimeInMilliseconds - m_lastTimeShoot) < missileShotInterval) return false;                \n\n                MySmallShip target = ((MyLargeShipGunBase)Parent).GetTarget();\n\n                List<MyModelDummy> muzzles = GetMuzzleFlashMatrix();\n                m_activeMuzzle = --m_burstToFire;\n\n                Matrix worldMatrix = WorldMatrix;\n                Vector3 muzzleFlashPosition = MyUtils.GetTransform(muzzles[m_activeMuzzle].Matrix.Translation, ref worldMatrix);\n\n                //  Play missile launch cue (one-time)\n                //((MyLargeShipGunBase)Parent).AddWeaponCue(Audio.MySoundCuesEnum.WepMissileLaunch3d);\n\n                if (target != null)\n                {\n                    MySoundCue? shootingSound = GetWeaponBase().UnifiedWeaponCueGet(MySoundCuesEnum.WepMissileLaunch3d);\n                    if (shootingSound == null || !shootingSound.Value.IsPlaying)\n                    {\n                        GetWeaponBase().UnifiedWeaponCueSet(Audio.MySoundCuesEnum.WepMissileLaunch3d,\n                            MyAudio.AddCue2dOr3d(this, Audio.MySoundCuesEnum.WepMissileLaunch3d, muzzleFlashPosition, WorldMatrix.Forward, WorldMatrix.Up, Vector3.Zero));\n                    }\n\n                    MyMissiles.Add(GetAmmoType(), muzzleFlashPosition, Vector3.Zero, WorldMatrix.Forward, this, target);\n                }\n            }\n            \n            if (m_burstToFire <= 0)\n            {\n                m_burstFireTime_ms = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n                m_burstToFire = m_burstFireCount;\n                m_burstFinish = true;\n            }\n            if ((MyMinerGame.TotalGamePlayTimeInMilliseconds - m_burstFireTime_ms) > m_burstFireTimeLoadingIntervalConst_ms)\n            {\n                m_burstFinish = false;\n            }\n            \n            m_lastTimeShoot = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n\n            return true;\n        }\n\n        public override void StopShooting()\n        {\n            base.StopShooting();\n\n            MySoundCue? shootingSound = GetWeaponBase().UnifiedWeaponCueGet(MySoundCuesEnum.WepMissileLaunch3d);\n            if (shootingSound != null)\n            {\n                shootingSound.Value.Stop(Microsoft.Xna.Framework.Audio.AudioStopOptions.Immediate);\n            }\n        }\n\n        public override void Update()\n        {\n            base.Update();\n\n            if (!GetWeaponBase().IsActivate())\n            {\n                MySoundCue? shootingSound = GetWeaponBase().UnifiedWeaponCueGet(MySoundCuesEnum.WepMissileLaunch3d);\n                if (shootingSound != null)\n                {\n                    shootingSound.Value.Stop(Microsoft.Xna.Framework.Audio.AudioStopOptions.Immediate);\n                }\n            }\n        }\n    }\n     * */\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Weapons/Guns/MyLargeShipMissileLauncher9Gun.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing Microsoft.Xna.Framework;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Models;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.Prefabs;\nusing MinerWarsCustomContentImporters;\n\nnamespace MinerWars.AppCode.Game.Managers.EntityManager.Entities.Weapons          \n{\n    using Audio;\n    using CommonLIB.AppCode.ObjectBuilders;\n\n    /*\n    class MyLargeShipMissileLauncher9Gun : MyLargeShipGunBase\n    {\n        public override void Init(StringBuilder hudLabelText, MyLargeShip parentObject, Vector3 position, Vector3 forwardVector, Vector3 upVector, MyMwcObjectBuilder_Base objectBuilder)\n        {\n            base.Init(hudLabelText,  MyModelsEnum.LargeShipMissileLauncher9Base, MyMaterialType.METAL, parentObject, position, forwardVector, upVector, objectBuilder);\n\n            Matrix barrelMatrix = MyMath.NormalizeMatrix(ModelLod0.Dummies[\"axis\"].Matrix);\n            MyLargeShipMissileLauncher9Barrel barrel = new MyLargeShipMissileLauncher9Barrel();\n            \n            barrel.Init(hudLabelText, barrelMatrix, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Missile_Basic, this);\n            MountBarrel(barrel);\n\n            // User settings:\n            m_predictionIntervalConst_ms = 250;\n            m_checkTargetIntervalConst_ms = 150;\n            m_randomStandbyChangeConst_ms = 4000;\n            m_rotationSpeed = MathHelper.Pi / 2000.0f;\n            m_elevationSpeed = MathHelper.Pi / 2000.0f;\n        }\n    }\n\n\n    class MyLargeShipMissileLauncher9Barrel : MyLargeShipBarrelBase\n    {\n        private int m_burstFireTime_ms = 0;\n        private int m_burstFireTimeLoadingIntervalConst_ms = 2000;\n        private bool m_burstFinish = false;\n        private const int m_burstFireCount = 9;\n        private int m_burstToFire = 0;\n\n        public void Init(StringBuilder hudLabelText, Matrix localMatrix, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum AmmoType, MyLargeShipGunBase parentObject)\n        {\n            base.Init(hudLabelText, MyModelsEnum.LargeShipMissileLauncher9Barrel, null, localMatrix, AmmoType, parentObject);\n\n            m_burstToFire = m_burstFireCount;\n            m_burstFireTime_ms = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n\n            // User settings:\n            m_searchingDistanceMax = 2000.0f;\n            m_aimingDistanceMax = 1000.0f;\n            m_burstFireTimeLoadingIntervalConst_ms = 2000;\n\n            // This is imoprtant for missile launchers (they are not able to lauchching rackets on safe trajectory)\n            m_barrelElevationMin = 0.1571f;\n        }\n\n        public override bool StartShooting()\n        {\n            if (!m_burstFinish)\n            {\n                int missileShotInterval = 0;\n\n                MyLargeShipGunBase.GetMissileAmmoParams(GetAmmoType(), ref missileShotInterval);\n\n                if (!base.StartShooting()) \n                    return false;\n\n                if ((MyMinerGame.TotalGamePlayTimeInMilliseconds - m_lastTimeShoot) < missileShotInterval) return false;                \n\n                MySmallShip target = ((MyLargeShipGunBase)Parent).GetTarget();\n\n                List<MyModelDummy> muzzles = GetMuzzleFlashMatrix();\n                m_activeMuzzle = --m_burstToFire;\n\n                Matrix worldMatrix = WorldMatrix;\n                Vector3 muzzleFlashPosition = MyUtils.GetTransform(muzzles[m_activeMuzzle].Matrix.Translation, ref worldMatrix);\n\n                if (target != null)\n                {\n                    MySoundCue? shootingSound = GetWeaponBase().UnifiedWeaponCueGet(MySoundCuesEnum.WepMissileLaunch3d);\n                    if (shootingSound == null || !shootingSound.Value.IsPlaying)\n                    {\n                        GetWeaponBase().UnifiedWeaponCueSet(Audio.MySoundCuesEnum.WepMissileLaunch3d,\n                            MyAudio.AddCue2dOr3d(this, Audio.MySoundCuesEnum.WepMissileLaunch3d, muzzleFlashPosition, WorldMatrix.Forward, WorldMatrix.Up, Vector3.Zero));\n                    }\n\n                    MyMissiles.Add(GetAmmoType(), muzzleFlashPosition, Vector3.Zero, WorldMatrix.Forward, this, target);\n                }\n            }\n            \n            if (m_burstToFire <= 0)\n            {\n                m_burstFireTime_ms = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n                m_burstToFire = m_burstFireCount;\n                m_burstFinish = true;\n            }\n\n            if ((MyMinerGame.TotalGamePlayTimeInMilliseconds - m_burstFireTime_ms) > m_burstFireTimeLoadingIntervalConst_ms)\n            {\n                m_burstFinish = false;\n            }\n            \n            m_lastTimeShoot = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n            return true;\n        }\n\n        public override void StopShooting()\n        {\n            base.StopShooting();\n\n            MySoundCue? shootingSound = GetWeaponBase().UnifiedWeaponCueGet(MySoundCuesEnum.WepMissileLaunch3d);\n            if (shootingSound != null)\n            {\n                shootingSound.Value.Stop(Microsoft.Xna.Framework.Audio.AudioStopOptions.Immediate);\n            }\n        }\n\n        public override void Update()\n        {\n            base.Update();\n\n            if (!GetWeaponBase().IsActivate())\n            {\n                MySoundCue? shootingSound = GetWeaponBase().UnifiedWeaponCueGet(MySoundCuesEnum.WepMissileLaunch3d);\n                if (shootingSound != null)\n                {\n                    shootingSound.Value.Stop(Microsoft.Xna.Framework.Audio.AudioStopOptions.Immediate);\n                }\n            }\n        }\n    }\n     * */\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Weapons/Guns/MyLargeShipMissileLauncherBarrel.cs",
    "content": "﻿using System.Collections.Generic;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Models;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\n\n\nnamespace MinerWars.AppCode.Game.Entities.Weapons\n{\n    using Audio;\n    using MinerWars.AppCode.Physics;\n    using MinerWars.AppCode.Game.Gameplay;\n    using MinerWars.AppCode.Game.Managers.Session;\n    using MinerWars.CommonLIB.AppCode.Import;\n\n    class MyLargeShipMissileLauncherBarrel : MyLargeShipBarrelBase\n    {\n        private int m_burstFireTime_ms = 0;\n        private int m_burstFireTimeLoadingIntervalConst_ms = 2000;\n        private bool m_burstFinish = false;\n        private int m_burstFireCount = 0;\n        private int m_burstToFire = 0;\n\n        MyGroupMask m_groupMask;\n\n        public void Init(StringBuilder hudLabelText, MyModelsEnum modelEnum, int burstFireCount, Matrix localMatrix, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum ammoType, MyLargeShipGunBase parentObject)\n        {\n            base.Init(hudLabelText, modelEnum, null, localMatrix, ammoType, parentObject);\n\n            m_burstFireCount = burstFireCount;\n            m_burstToFire = m_burstFireCount;\n            m_burstFireTime_ms = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n\n            // User settings:            \n            m_burstFireTimeLoadingIntervalConst_ms = 2000;\n\n            // This is imoprtant for missile launchers (they are not able to lauchching rackets on safe trajectory)\n            //BarrelElevationMin = 0.1571f;\n            BarrelElevationMin = -0.6f;\n        }\n\n        public override bool StartShooting()\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyLargeShipMissileLauncherBarrel::StartShooting\");\n\n            LastShotId = null;\n\n            int missileShotInterval = 0;\n            MyLargeShipGunBase.GetMissileAmmoParams(GetAmmoType(), ref missileShotInterval);\n            if ((MyMinerGame.TotalGamePlayTimeInMilliseconds - m_lastTimeShoot) < missileShotInterval)\n            {\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n                return false;\n            }\n\n            m_burstFinish = false;\n            while (!m_burstFinish)\n            {\n                if (!base.StartShooting())\n                {\n                    MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n                    return false;\n                }\n\n                if (m_groupMask == null)\n                    MyPhysics.physicsSystem.GetRigidBodyModule().GetGroupMaskManager().GetGroupMask(ref m_groupMask);\n\n                MyEntity target = ((MyLargeShipGunBase)Parent).GetTarget();\n\n                List<MyModelDummy> muzzles = GetMuzzleFlashMatrix();\n                m_activeMuzzle = --m_burstToFire;\n\n                Matrix worldMatrix = WorldMatrix;\n                Vector3 muzzleFlashPosition = MyUtils.GetTransform(muzzles[m_activeMuzzle].Matrix.Translation, ref worldMatrix);\n\n\n                if (IsControlledByPlayer())\n                {\n                    //target = MySession.PlayerShip.TargetEntity as MySmallShip;\n                    target = MyEnemyTargeting.SwitchNextTarget(true);\n                }\n                \n                if (target != null || IsControlledByPlayer())\n                {\n                    MySoundCue? shootingSound = GetWeaponBase().UnifiedWeaponCueGet(MySoundCuesEnum.WepMissileLaunch3d);\n                    if (shootingSound == null || !shootingSound.Value.IsPlaying)\n                    {\n                        GetWeaponBase().UnifiedWeaponCueSet(Audio.MySoundCuesEnum.WepMissileLaunch3d,\n                            MyAudio.AddCue2dOr3d(this.GetWeaponBase().PrefabParent, Audio.MySoundCuesEnum.WepMissileLaunch3d, muzzleFlashPosition, WorldMatrix.Forward, WorldMatrix.Up, Vector3.Zero));\n                        //MyAudio.AddCue2dOr3d(this.GetWeaponBase().PrefabParent, Audio.MySoundCuesEnum.WepMissileLaunch3d, muzzleFlashPosition, WorldMatrix.Forward, WorldMatrix.Up, Vector3.Zero);\n                    }\n\n                    Vector3 deviateVector = GetDeviatedVector(MyAmmoConstants.GetAmmoProperties(GetAmmoType()));\n\n                    var missile = MyMissiles.Add(GetAmmoType(), muzzleFlashPosition + 2 * WorldMatrix.Forward, WorldMatrix.Forward * 2.0f, deviateVector, Vector3.Zero, this, target, SearchingDistance, isLightWeight: true);\n                    if (missile.GuidedInMultiplayer)\n                    {\n                        missile.EntityId = MyEntityIdentifier.AllocateId();\n                        MyEntityIdentifier.AddEntityWithId(missile);\n                        LastShotId = missile.EntityId;\n                    }\n                } \n\n\n                if (m_burstToFire <= 0)\n                {\n                    m_burstFireTime_ms = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n                    m_burstToFire = m_burstFireCount;\n                    m_burstFinish = true;\n                }\n                if ((MyMinerGame.TotalGamePlayTimeInMilliseconds - m_burstFireTime_ms) > m_burstFireTimeLoadingIntervalConst_ms)\n                {\n                    m_burstFinish = false;\n                }\n\n                if (!IsControlledByPlayer())\n                    m_burstFinish = true;\n            }\n\n            m_lastTimeShoot = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            return true;\n        }\n\n        public override void StopShooting()\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyLargeShipMissileLauncherBarrel::StopShooting\");\n\n            base.StopShooting();\n\n            if (m_groupMask != null)\n                MyPhysics.physicsSystem.GetRigidBodyModule().GetGroupMaskManager().PushBackGroupMask(m_groupMask);\n\n            /*\n            MySoundCue? shootingSound = GetWeaponBase().UnifiedWeaponCueGet(MySoundCuesEnum.WepMissileLaunch3d);\n            if (shootingSound != null)\n            {\n                shootingSound.Value.Stop(SharpDX.XACT3.StopFlags.Immediate);\n            }*/\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        public override void  UpdateAfterSimulation()\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyLargeShipMissileLauncherBarrel::UpdateAfterSimulation\");\n\n            base.UpdateAfterSimulation();\n\n            if (!GetWeaponBase().IsActive())\n            {\n                MySoundCue? shootingSound = GetWeaponBase().UnifiedWeaponCueGet(MySoundCuesEnum.WepMissileLaunch3d);\n                if (shootingSound != null)\n                {\n                    shootingSound.Value.Stop(SharpDX.XACT3.StopFlags.Immediate);\n                }\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        public override Matrix GetViewMatrix()\n        {\n            Vector3 lookPosition = WorldMatrix.Translation + WorldMatrix.Backward * 3f + WorldMatrix.Up * 5f;\n            Vector3 lookTarget = WorldMatrix.Translation + WorldMatrix.Forward * 1000000f;\n            Vector3 lookDirection = Vector3.Normalize(lookTarget - lookPosition);\n            Vector3 up = Vector3.Cross(WorldMatrix.Right, lookDirection);\n            return Matrix.CreateLookAt(lookPosition, lookTarget, up);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Weapons/Guns/MyLargeShipMissileLauncherGun.cs",
    "content": "﻿using System.Text;\nusing System.Collections.Generic;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Models;\nusing MinerWars.AppCode.App;\n\n\n\nnamespace MinerWars.AppCode.Game.Entities.Weapons\n{\n    using Audio;\n    using CommonLIB.AppCode.ObjectBuilders;\n    using MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.Prefabs;\n    using SysUtils.Utils;\n    using MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\n\n    class MyLargeShipMissileLauncherGun : MyLargeShipGunBase\n    {\n        public int Burst { get; private set; }\n\n        public override void Init(StringBuilder hudLabelText, MyEntity parentObject, Vector3 position, Vector3 forwardVector, Vector3 upVector, MyMwcObjectBuilder_Base objectBuilder)\n        {\n            MyModelsEnum modelEnumBase;\n            MyModelsEnum? modelEnumBaseCollision = null;\n            MyModelsEnum modelEnumBarrel;\n            MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum missileType;\n\n            switch ((MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum)objectBuilder.GetObjectBuilderId().Value)\n            {\n                case MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A01_LARGESHIP_MISSILE_BASIC4:\n                case MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A02_LARGESHIP_MISSILE_GUIDED4:\n                    modelEnumBase = MyModelsEnum.LargeShipMissileLauncher4Base;\n                    modelEnumBarrel = MyModelsEnum.LargeShipMissileLauncher4Barrel;\n                    modelEnumBaseCollision = MyModelsEnum.LargeShipMissileLauncher4Base_COL;\n                    Burst =  4;\n                    break;\n                case MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A01_LARGESHIP_MISSILE_BASIC6:\n                case MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A02_LARGESHIP_MISSILE_GUIDED6:\n                    modelEnumBase = MyModelsEnum.LargeShipMissileLauncher6Base;\n                    modelEnumBarrel = MyModelsEnum.LargeShipMissileLauncher6Barrel;\n                    modelEnumBaseCollision = MyModelsEnum.LargeShipMissileLauncher6Base_COL;\n                    Burst = 6;\n                    break;\n                case MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A01_LARGESHIP_MISSILE_BASIC9:\n                case MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A02_LARGESHIP_MISSILE_GUIDED9:\n                    modelEnumBase = MyModelsEnum.LargeShipMissileLauncher9Base;\n                    modelEnumBarrel = MyModelsEnum.LargeShipMissileLauncher9Barrel;\n                    modelEnumBaseCollision = MyModelsEnum.LargeShipMissileLauncher9Base_COL;\n                    Burst = 9;\n                    break;\n\n                default:\n                    throw new MyMwcExceptionApplicationShouldNotGetHere();\n                    break;\n            }\n\n            switch ((MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum)objectBuilder.GetObjectBuilderId().Value)\n            {\n                case MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A01_LARGESHIP_MISSILE_BASIC4:\n                case MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A01_LARGESHIP_MISSILE_BASIC6:\n                case MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A01_LARGESHIP_MISSILE_BASIC9:\n                        missileType = MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Missile_Basic;\n                    break;\n                case MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A02_LARGESHIP_MISSILE_GUIDED4:\n                case MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A02_LARGESHIP_MISSILE_GUIDED6:\n                case MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A02_LARGESHIP_MISSILE_GUIDED9:\n                        missileType = MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Guided_Missile_Radar_Detection;\n                    break;\n\n                default:\n                    throw new MyMwcExceptionApplicationShouldNotGetHere();\n                    break;\n            }\n\n            base.Init(hudLabelText, modelEnumBase, MyMaterialType.METAL, parentObject, position, forwardVector, upVector, objectBuilder, modelEnumBaseCollision);\n\n            Matrix barrelMatrix = MyMath.NormalizeMatrix(ModelLod0.Dummies[\"axis\"].Matrix);\n            MyLargeShipMissileLauncherBarrel barrel = new MyLargeShipMissileLauncherBarrel();\n\n            barrel.Init(hudLabelText, modelEnumBarrel, Burst, barrelMatrix, missileType, this);\n            MountBarrel(barrel);\n\n            // User settings:\n            m_predictionIntervalConst_ms = 250;\n            m_checkTargetIntervalConst_ms = 150;\n            m_randomStandbyChangeConst_ms = 4000;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Weapons/Guns/MyLargeShipWeaponPrediction.cs",
    "content": "﻿using System;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.Utils;\n\nnamespace MinerWars.AppCode.Game.Entities.Weapons\n{\n\n    class MyLargeShipWeaponPrediction\n    {\n        private class MyPredictionRecord\n        {\n            private Curve m_curveX = null;\n            private Curve m_curveY = null;\n            private Curve m_curveZ = null;\n            private int m_maxRecords = 1;\n            private const float PREDICTION_MINIMAL_EPSILON = 1.0e-5f;\n\n            public MyPredictionRecord(int MaxRecords, CurveLoopType PreLoopType = CurveLoopType.Linear, CurveLoopType PostLoopType = CurveLoopType.Linear)\n            {\n                m_curveX = new Curve();\n                m_curveX.PreLoop = PreLoopType;\n                m_curveX.PostLoop = PostLoopType;\n                m_curveY = new Curve();\n                m_curveY.PreLoop = PreLoopType;\n                m_curveY.PostLoop = PostLoopType;\n                m_curveZ = new Curve();\n                m_curveZ.PreLoop = PreLoopType;\n                m_curveZ.PostLoop = PostLoopType;\n                m_maxRecords = MaxRecords;\n            }\n\n            public int GetRecordCount()\n            {\n                return m_curveX.Keys.Count;\n            }\n\n            public void AddRecord(Vector3 Point, float Time, Vector3 TangentIn, Vector3 TangentOut)\n            {\n                if (m_curveX.Keys.Count >= m_maxRecords)\n                {\n                    m_curveX.Keys.RemoveAt(0);\n                    m_curveY.Keys.RemoveAt(0);\n                    m_curveZ.Keys.RemoveAt(0);\n                }\n\n                m_curveX.Keys.Add(new CurveKey(Time, Point.X, TangentIn.X, TangentOut.X));\n                m_curveY.Keys.Add(new CurveKey(Time, Point.Y, TangentIn.Y, TangentOut.Y));\n                m_curveZ.Keys.Add(new CurveKey(Time, Point.Z, TangentIn.Z, TangentOut.Z));\n            }\n\n            public void AddRecord(Vector3 Point, float Time)\n            {\n                AddRecord(Point, Time, Vector3.Zero, Vector3.Zero);\n            }\n\n            private static void SetCurveKeyTangent(ref CurveKey Prev, ref CurveKey Current, ref CurveKey Next)\n            {\n                float dt = Next.Position - Prev.Position;\n                float dv = Next.Value - Prev.Value;\n                if (Math.Abs(dv) < float.Epsilon)\n                {\n                    Current.TangentIn = 0.0f;\n                    Current.TangentOut = 0.0f;\n                }\n                else\n                {\n                    Current.TangentIn = dv * (Current.Position - Prev.Position) / dt;\n                    Current.TangentOut = dv * (Current.Position - Prev.Position) / dt;\n                }\n            }\n\n\n            public bool HasRecord()\n            {\n                return GetRecordCount() != 0;\n            }\n\n            public float GetStartTime()\n            {\n                if (GetRecordCount() != 0)\n                    return m_curveX.Keys[0].Position;\n                return 0.0f;\n            }\n\n            private float GetPrewTime()\n            {\n                if (GetRecordCount() > 1)\n                {\n                    return m_curveX.Keys[m_curveX.Keys.Count - 2].Position;\n                }\n                return 0.0f;\n            }\n\n            public float GetLastTime()\n            {\n                if (GetRecordCount() != 0)\n                    return m_curveX.Keys[m_curveX.Keys.Count - 1].Position;\n                return 0.0f;\n            }\n\n            public float GetRecordTime()\n            {\n                if (GetRecordCount() != 0)\n                    return GetLastTime() - GetStartTime();\n                return 0.0f;\n            }\n\n            public void Clear()\n            {\n                m_curveX.Keys.Clear();\n                m_curveY.Keys.Clear();\n                m_curveZ.Keys.Clear();\n            }\n\n            public bool GetRecordPoint(int index, ref Vector3 Point)\n            {\n                if (index < GetRecordCount())\n                {\n                    Point.X = m_curveX.Keys[index].Value;\n                    Point.Y = m_curveY.Keys[index].Value;\n                    Point.Z = m_curveZ.Keys[index].Value;\n                    return true;\n                }\n                return false;\n            }\n\n            public Vector3 GetPredictedRecord(float Time)\n            {\n                float lastTime = GetLastTime();\n\n                if (Time < lastTime)\n                {\n                    return new Vector3(m_curveX.Evaluate(Time), m_curveY.Evaluate(Time), m_curveZ.Evaluate(Time));\n                }\n                else\n                {\n                    // compute predicate point:\n                    int count = GetRecordCount();\n                    if (count > 1)\n                    {\n                        Vector3 Last = Vector3.Zero;\n                        Vector3 Previous = Vector3.Zero;\n                        GetRecordPoint(count - 1, ref Last);\n                        GetRecordPoint(count - 2, ref Previous);\n\n                        if (Last == Previous)\n                        {\n                            return Last;\n                        }\n\n                        Vector3 interpolated = LinearVector(ref Last, ref Previous, GetLastTime() - GetPrewTime(), Time - GetLastTime());\n\n                        if (interpolated.Length() != 0.0f)\n                            return Last + interpolated;\n\n                        return Last;\n                    }\n                    else if (count == 1)\n                    {\n                        return new Vector3(m_curveX.Keys[0].Value, m_curveZ.Keys[0].Value, m_curveY.Keys[0].Value);\n                    }\n                }\n                return Vector3.Zero;\n            }\n\n            public static Vector3 LinearVector(ref Vector3 B, ref Vector3 A, float LastTime, float t)\n            {\n                Vector3 diffVector = A - B;\n                float length = diffVector.Length();\n                if (diffVector.Length() < PREDICTION_MINIMAL_EPSILON)\n                {\n                    return A;\n                }\n                float lastSpeed = length / LastTime;\n                float newLength = lastSpeed * t;\n\n                diffVector = MyMwcUtils.Normalize(diffVector);\n                diffVector = Vector3.Negate(diffVector);\n                return Vector3.Multiply(diffVector, newLength);\n            }\n\n            public void DebugDraw_LinearValues()\n            {\n                Color color = Color.Yellow;\n                if (GetRecordCount() > 1)\n                    for (int i = 0; i < GetRecordCount() - 1; ++i)\n                    {\n                        Vector3 pointFrom = new Vector3();\n                        Vector3 pointTo = new Vector3();\n                        GetRecordPoint(i, ref pointFrom);\n                        GetRecordPoint(i + 1, ref pointTo);\n                        MyDebugDraw.DrawLine3D(pointFrom, pointTo, color, color);\n                    }\n            }\n\n            public void DebugDraw_FromVectorValues(Vector3 Point, Color endColor)\n            {\n                Color color = Color.Violet;\n                for (int i = 0; i < GetRecordCount(); ++i)\n                {\n                    Vector3 pointTo = new Vector3();\n                    GetRecordPoint(i, ref pointTo);\n                    MyDebugDraw.DrawLine3D(Point, pointTo, color, endColor);\n                }\n            }\n\n            public float GetLastRecordSpeed()\n            {\n                int count = GetRecordCount();\n                if (count > 1)\n                {\n                    float dt = GetLastTime() - m_curveX.Keys[m_curveX.Keys.Count - 2].Position;\n                    Vector3 last = new Vector3();\n                    Vector3 prew = new Vector3();\n                    GetRecordPoint(count - 2, ref prew);\n                    GetRecordPoint(count - 1, ref last);\n                    float length = (last - prew).Length();\n                    return length / dt;\n                }\n                return 0.0f;\n            }\n\n        }\n\n\n        private MyPredictionRecord m_record = null;\n\n        public MyLargeShipWeaponPrediction()\n        {\n            m_record = new MyPredictionRecord(/*10*/2);\n        }\n\n        public int GetRecordCount()\n        {\n            return m_record.GetRecordCount();\n        }\n\n        public void AddRecord(Vector3 Point, float dt)\n        {\n            m_record.AddRecord(Point, dt);\n        }\n\n        public Vector3 GetPredictedPosition(float Time)\n        {\n            return m_record.GetPredictedRecord(Time);\n        }\n\n        public bool HasPrediction()\n        {\n            return m_record.HasRecord();\n        }\n\n        public void Clear()\n        {\n            m_record.Clear();\n        }\n\n        public float GetLastRecordSpeed()\n        {\n            return m_record.GetLastRecordSpeed();\n        }\n\n        public void DebugDraw(Vector3 PointFrom, Color EndColor)\n        {\n            m_record.DebugDraw_LinearValues();\n            m_record.DebugDraw_FromVectorValues(PointFrom, EndColor);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Weapons/Guns/MyMachineGun.cs",
    "content": "﻿using MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.TransparentGeometry.Particles;\n\nnamespace MinerWars.AppCode.Game.Entities.Weapons\n{\n    using System;\n    using System.Text;\n    using App;\n    using Audio;\n    using CommonLIB.AppCode.ObjectBuilders.SubObjects;\n    using CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\n    using MinerWarsMath;\n    \n    using Models;\n    using TransparentGeometry;\n    using Utils;\n    using MinerWars.CommonLIB.AppCode.ObjectBuilders;\n    using MinerWars.AppCode.Game.Gameplay;\n    using SysUtils;\n    using MinerWars.AppCode.Game.Render;\n\n    class MyMachineGun : MySmallShipGunBase\n    {\n        int m_lastTimeShoot;\n\n        MySoundCuesEnum m_cueEnum;\n\n        MyParticleEffect m_smokeEffect;\n\n        public override void Init(StringBuilder hudLabelText, MySmallShip parentObject,\n            Vector3 position, Vector3 forwardVector, Vector3 upVector,\n            MyMwcObjectBuilder_SmallShip_Weapon objectBuilder)\n        {\n            base.Init(hudLabelText, MyModelsEnum.MachineGun, MyMaterialType.METAL, parentObject, position,\n                forwardVector, upVector, objectBuilder);\n        }\n\n        public override bool Shot(MyMwcObjectBuilder_SmallShip_Ammo usedAmmo)\n        {\n            if (usedAmmo == null || (MyMinerGame.TotalGamePlayTimeInMilliseconds - m_lastTimeShoot) < MyMachineGunConstants.SHOT_INTERVAL_IN_MILISECONDS && !IsDummy) return false;\n\n            if (m_smokeEffect == null)\n            {\n                if (MyCamera.GetDistanceWithFOV(GetPosition()) < 150)\n                {\n                    m_smokeEffect = MyParticlesManager.CreateParticleEffect((int)MyParticleEffectsIDEnum.Smoke_Autocannon);\n                    m_smokeEffect.WorldMatrix = WorldMatrix;\n                    m_smokeEffect.OnDelete += OnSmokeEffectDelete;\n                }\n            }\n\n            MyAmmoProperties ammoProperties = MyAmmoConstants.GetAmmoProperties(usedAmmo.AmmoType);\n\n            if (MyMwcFinalBuildConstants.ENABLE_TRAILER_SAVE)\n            {\n                MinerWars.AppCode.Game.Trailer.MyTrailerSave.UpdateGunShot(this.Parent, Trailer.MyTrailerGunsShotTypeEnum.PROJECTILE);\n            }\n\n            AddProjectile(ammoProperties, this);\n\n            m_lastTimeShoot = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n            StartLoopSound(ammoProperties.ShotSound);\n\n            return true;\n        }\n\n        private void OnSmokeEffectDelete(object sender, EventArgs eventArgs)\n        {\n            m_smokeEffect = null;\n        }\n\n        public override void UpdateAfterSimulation()\n        {\n            base.UpdateAfterSimulation();\n\n            CorrectMuzzlePositionHack();\n\n            if (m_smokeEffect != null)\n            {\n                float smokeOffset = 0.2f;\n                if ((GUI.MyGuiScreenGamePlay.Static.CameraAttachedTo == GUI.MyCameraAttachedToEnum.PlayerMinerShip) &&\n                    (Parent == MySession.PlayerShip))\n                {\n                    smokeOffset = 0.0f;\n                }\n\n                m_smokeEffect.WorldMatrix = Matrix.CreateTranslation(m_positionMuzzleInWorldSpace + WorldMatrix.Forward * smokeOffset);\n                m_smokeEffect.UserBirthMultiplier = 50;\n            }\n\n            if (MyMinerGame.TotalGamePlayTimeInMilliseconds - m_lastTimeShoot > MyMachineGunConstants.RELEASE_TIME_AFTER_FIRE)\n            {\n                StopLoopSound();\n\n                if (m_smokeEffect != null)\n                {\n                    m_smokeEffect.Stop(false);\n                }\n            }\n        }\n\n        private void CorrectMuzzlePositionHack()\n        {\n            m_positionMuzzleInWorldSpace += WorldMatrix.Up * 0.25f;\n            float offset = 0.6f;\n            if ((GUI.MyGuiScreenGamePlay.Static.CameraAttachedTo == GUI.MyCameraAttachedToEnum.PlayerMinerShip) &&\n                (Parent == MySession.PlayerShip))\n            {\n                offset = 1.0f;\n            }\n            m_positionMuzzleInWorldSpace += offset * WorldMatrix.Forward;\n        }\n\n        public void StartLoopSound(MySoundCuesEnum cueEnum)\n        {\n            MySoundCue? weaponCue = GetWeaponCue(cueEnum);\n            if ((weaponCue == null) || (weaponCue.Value.IsPlaying == false))\n            {\n                m_cueEnum = cueEnum;\n                AddWeaponCue(cueEnum);\n            }\n        }\n\n        public void StopLoopSound()\n        {\n            MySoundCue? weaponCue = GetWeaponCue(m_cueEnum);\n            if ((weaponCue != null) && weaponCue.Value.IsValid && (weaponCue.Value.IsPlaying == true))\n            {\n                MySoundCuesEnum? cueEnum = null;\n                if (m_cueEnum == MySoundCuesEnum.WepMachineGunHighFire3d)\n                {\n                    cueEnum = MySoundCuesEnum.WepMachineGunHighRel3d;\n                }\n                else\n                {\n                    cueEnum = MySoundCuesEnum.WepMachineGunNormRel3d;\n                }\n                weaponCue.Value.Stop(SharpDX.XACT3.StopFlags.Immediate);\n                AddWeaponCue(cueEnum.Value);\n            }\n        }\n\n        //  Draw muzzle flash not matter if in frustum (it's because it's above the frustum)\n        public override bool Draw(MyRenderObject renderObject)\n        {\n            if (base.Draw(renderObject) == false) return false;\n\n            //  Draw muzzle flash\n            int deltaTime = MyMinerGame.TotalGamePlayTimeInMilliseconds - m_lastTimeShoot;\n            if (deltaTime <= MyMachineGunConstants.MUZZLE_FLASH_MACHINE_GUN_LIFESPAN)\n            {\n                MyParticleEffects.GenerateMuzzleFlash(m_positionMuzzleInWorldSpace + WorldMatrix.Forward, WorldMatrix.Forward, 0.4f, 0.7f);\n            }\n\n            return true;\n        }\n\n        protected override MyMwcObjectBuilder_Base GetObjectBuilderInternal(bool getExactCopy)\n        {\n            MyMwcObjectBuilder_Base objectBuilder = base.GetObjectBuilderInternal(getExactCopy);\n            if (objectBuilder == null)\n            {\n                objectBuilder = new MyMwcObjectBuilder_SmallShip_Weapon(WeaponType = MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Machine_Gun);\n            }\n            return objectBuilder;\n        }\n\n        public override void Close()\n        {\n            if (m_smokeEffect != null)\n            {\n                m_smokeEffect.Stop();\n                m_smokeEffect = null;\n            }\n            base.Close();\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Weapons/Guns/MyMissileLauncherGun.cs",
    "content": "﻿using MinerWars.AppCode.Physics;\nusing MinerWars.AppCode.Game.Physics;\n\nnamespace MinerWars.AppCode.Game.Entities.Weapons\n{\n    using System;\n    using System.Text;\n    using App;\n    using Audio;\n    using CommonLIB.AppCode.ObjectBuilders.SubObjects;\n    using CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\n    using CommonLIB.AppCode.Utils;\n    using MinerWarsMath;\n    using MinerWars.CommonLIB.AppCode.ObjectBuilders;\n    using Models;\n    using Utils;\n\n    class MyMissileLauncherGun : MySmallShipGunBase\n    {\n        int m_lastTimeShoot;                            //  When was this gun last time shooting\n        //int m_lastTimeSmoke;                            //  When was this gun last time generated smoke\n        Vector3 m_lastSmokePosition;\n\n\n        public override void Init(StringBuilder hudLabelText, MySmallShip parentObject,\n            Vector3 position, Vector3 forwardVector, Vector3 upVector,\n            MyMwcObjectBuilder_SmallShip_Weapon objectBuilder)\n        {\n            base.Init(hudLabelText, MyModelsEnum.MissileLauncher, MyMaterialType.METAL, parentObject,\n                position, forwardVector, upVector, objectBuilder);\n\n            m_lastTimeShoot = MyConstants.FAREST_TIME_IN_PAST;\n        }\n\n        //  Every child of this base class must implement Shot() method, which shots projectile or missile.\n        //  Method returns true if something was shot. False if not (because interval between two shots didn't pass)\n        public override bool Shot(MyMwcObjectBuilder_SmallShip_Ammo usedAmmo)\n        {\n            LastShotId = null;\n            float missileLauncherShotInterval = float.MaxValue;\n\n            switch (usedAmmo.AmmoType)\n            {\n                case MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Missile_Basic:\n                case MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Missile_BioChem:\n                case MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Missile_EMP:\n                case MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Guided_Missile_Engine_Detection:\n                case MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Guided_Missile_Radar_Detection:\n                case MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Guided_Missile_Visual_Detection:\n                    missileLauncherShotInterval = MyGuidedMissileConstants.MISSILE_LAUNCHER_SHOT_INTERVAL_IN_MILISECONDS;\n                    break;\n\n                default:\n                    throw new ArgumentOutOfRangeException();\n            }\n\n            if ((MyMinerGame.TotalGamePlayTimeInMilliseconds - m_lastTimeShoot) < missileLauncherShotInterval && !IsDummy)\n                return false;\n\n            //  Throw ship backward (by deviated vector)\n            this.Parent.Physics.AddForce(MyPhysicsForceType.ADD_BODY_FORCE_AND_BODY_TORQUE,\n                MyUtilRandomVector3ByDeviatingVector.GetRandom(Vector3.Backward, MathHelper.ToRadians(5)) * MyMwcUtils.GetRandomFloat(40000, 50000), null, null);\n\n            //  Play missile launch cue (one-time)\n            AddWeaponCue(MySoundCuesEnum.WepMissileLaunch3d);\n\n            Vector3 forwardVelocity = MyMath.ForwardVectorProjection(this.WorldMatrix.Forward, GetParentMinerShip().Physics.LinearVelocity);\n\n\n            //  Create and fire missile - but deviate missile direction be random angle\n            Vector3 deviatedVector = GetDeviatedVector(MinerWars.AppCode.Game.Gameplay.MyAmmoConstants.GetAmmoProperties(usedAmmo.AmmoType));\n\n            // correct missile start position if it would intersect some entity\n            Vector3 missileStartPosition = m_positionMuzzleInWorldSpace;\n            missileStartPosition = CorrectPosition(missileStartPosition, deviatedVector, Parent);\n\n            if (MinerWars.AppCode.Game.Managers.Session.MySession.Static.Is2DSector)\n            {\n                forwardVelocity.Y = 0;\n                deviatedVector.Y = 0;\n            }\n\n            var missile = MyMissiles.Add(usedAmmo.AmmoType, missileStartPosition, forwardVelocity, deviatedVector, LocalMatrix.Translation, Parent, ((MySmallShip)Parent).TargetEntity, isDummy: this.IsDummy);\n            if (missile != null)\n            {\n                missile.EntityId = MyEntityIdentifier.AllocateId();\n                MyEntityIdentifier.AddEntityWithId(missile);\n                LastShotId = missile.EntityId;\n                GetParentMinerShip().LastMissileFired = missile;\n            }\n            //MyUtilRandomVector3ByDeviatingVector.GetRandom(WorldMatrix.Forward\n\n            m_lastTimeShoot = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n            m_lastSmokePosition = GetSmokePosition();\n\n            if (SysUtils.MyMwcFinalBuildConstants.ENABLE_TRAILER_SAVE)\n            {\n                MinerWars.AppCode.Game.Trailer.MyTrailerSave.UpdateGunShot(this.Parent, Trailer.MyTrailerGunsShotTypeEnum.MISSILE);\n            }\n\n            //  We shot one missile\n            return true;\n        }\n\n        protected override MyMwcObjectBuilder_Base GetObjectBuilderInternal(bool getExactCopy)\n        {\n            MyMwcObjectBuilder_Base objectBuilder = base.GetObjectBuilderInternal(getExactCopy);\n            if (objectBuilder == null)\n            {\n                objectBuilder = new MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Missile_Launcher);\n            }\n            return objectBuilder;\n        }\n\n        Vector3 GetSmokePosition()\n        {\n            return m_positionMuzzleInWorldSpace - WorldMatrix.Forward * 0.5f;\n        }\n\n\n        /// <summary>\n        /// Check if the missile does not collide too close to ship\n        /// after shooting and correct its starting position if it does.\n        /// </summary>\n        private Vector3 CorrectPosition(Vector3 position, Vector3 direction, MyEntity viewerEntity)\n        {\n            //var predictedTrajectory = new MyLine(\n            //    position - (MyMissileConstants.DISTANCE_TO_CHECK_MISSILE_CORRECTION) * direction,\n            //    position + (MyMissileConstants.DISTANCE_TO_CHECK_MISSILE_CORRECTION) * direction,\n            //    true);\n            //var intersection = MyEntities.GetIntersectionWithLine(ref predictedTrajectory, this, viewerEntity);\n\n\n            // This is fix for missles hitting voxels when you are near them (missles do not use per triangle collision as optimalization)\n            float radius = MyModels.GetModel(MyModelsEnum.Missile).BoundingSphere.Radius;\n\n            BoundingSphere boundingSphere = viewerEntity.WorldVolume;\n            boundingSphere.Center += viewerEntity.WorldMatrix.Up * 1;\n\n            var intersection = MyEntities.GetIntersectionWithSphere(ref boundingSphere, this, viewerEntity);\n\n            if (intersection != null && !(intersection is MyMissile))\n            {\n                position = viewerEntity.GetPosition() + 2 * Vector3.One;\n            }\n\n            return position;\n        }\n\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Weapons/Guns/MyShotGun.cs",
    "content": "﻿namespace MinerWars.AppCode.Game.Entities.Weapons\n{\n    using System.Text;\n    using App;\n    using Audio;\n    using CommonLIB.AppCode.ObjectBuilders.SubObjects;\n    using CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\n    using CommonLIB.AppCode.Utils;\n    using MinerWarsMath;\n    using Models;\n    using TransparentGeometry;\n    using SysUtils.Utils;\n    using Utils;\n    using MinerWars.CommonLIB.AppCode.ObjectBuilders;\n    using MinerWars.AppCode.Game.Gameplay;\n    using System;\n    using MinerWars.AppCode.Game.Render;\n\n    class MyShotGun : MySmallShipGunBase\n    {\n        int m_lastTimeShoot;\n\n        public override void Init(StringBuilder hudLabelText, MySmallShip parentObject,\n            Vector3 position, Vector3 forwardVector, Vector3 upVector,\n            MyMwcObjectBuilder_SmallShip_Weapon objectBuilder)\n        {\n            base.Init(hudLabelText, MyModelsEnum.Shotgun, MyMaterialType.METAL, parentObject, position,\n                forwardVector, upVector, objectBuilder);\n        }\n\n        public override bool Shot(MyMwcObjectBuilder_SmallShip_Ammo usedAmmo)\n        {\n            if (usedAmmo == null || (MyMinerGame.TotalGamePlayTimeInMilliseconds - m_lastTimeShoot) < MyShotgunConstants.SHOT_INTERVAL_IN_MILISECONDS && !IsDummy) return false;\n\n            MyAmmoProperties ammoProperties = MyAmmoConstants.GetAmmoProperties(usedAmmo.AmmoType);\n          \n            FireShotGunShot(ammoProperties);\n            \n            return true;\n        }\n\n        private void FireShotGunShot(MyAmmoProperties ammoProperties)\n        {\n            int currentRound = ammoProperties.ProjectileGroupSize;\n            float deviateAngle = ammoProperties.DeviateAngle;\n\n            //  Create one projectile - but deviate projectile direction be random angle\n            if (IsThisGunFriendly())\n                deviateAngle += MyGameplayConstants.GameplayDifficultyProfile.DeviatingAnglePlayerOnEnemy;\n            else\n                deviateAngle += MyGameplayConstants.GameplayDifficultyProfile.DeviatingAngleEnemyBotOnPlayer;\n\n            while (currentRound-- > 0)\n            {\n                Vector3 projectileForwardVector = MyUtilRandomVector3ByDeviatingVector.GetRandom(WorldMatrix.Forward, deviateAngle);\n\n                float billboardSize = ammoProperties.AmmoType == MyAmmoType.Explosive ? 2 : 1;\n\n                MyProjectiles.AddShotgun(ammoProperties, Parent, m_positionMuzzleInWorldSpace, Vector3.Zero/* Parent.Physics.LinearVelocity*/,\n                                  projectileForwardVector, currentRound % MyShotgunConstants.PROJECTILE_GROUP_SIZE == 0, 2, this, billboardSize, Parent);\n            }\n\n            m_lastTimeShoot = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n            AddWeaponCue(ammoProperties.ShotSound);\n        }\n\n        protected override MyMwcObjectBuilder_Base GetObjectBuilderInternal(bool getExactCopy)\n        {\n            MyMwcObjectBuilder_Base objectBuilder = base.GetObjectBuilderInternal(getExactCopy);\n            if (objectBuilder == null)\n            {                \n                objectBuilder = MyMwcObjectBuilder_Base.CreateNewObject(MyMwcObjectBuilderTypeEnum.SmallShip_Weapon, (int?)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Shotgun);\n            }\n            return objectBuilder;\n        }\n\n        public override bool Draw(MyRenderObject renderObject)\n        {\n            base.Draw(renderObject);\n\n                        //  Draw muzzle flash\n            int deltaTime = MyMinerGame.TotalGamePlayTimeInMilliseconds - m_lastTimeShoot;\n            if (deltaTime <= MyMachineGunConstants.MUZZLE_FLASH_MACHINE_GUN_LIFESPAN)\n            {\n                float FAKE_RADIUS = MyMwcUtils.GetRandomFloat(0.5f, 1.5f);\n                float FAKE_THICKNESS = MyMwcUtils.GetRandomFloat(FAKE_RADIUS - 0.1f, FAKE_RADIUS);\n                float FAKE_LENGTH = MyMwcUtils.GetRandomFloat(7, 8);\n                float FAKE_ANGLE = MyMwcUtils.GetRandomFloat(0, MathHelper.PiOver2);\n\n                //float colorComponent = 1;\n                float colorComponent = 1 - (float)deltaTime / (float)MyMachineGunConstants.MUZZLE_FLASH_MACHINE_GUN_LIFESPAN;\n                colorComponent = 1 - (float)Math.Pow(colorComponent, 5);\n                colorComponent *= 1.3f;\n                //Vector4 color = new Vector4(1.0f, 1.0f, 1.0f, 1);\n                Vector4 color = new Vector4(colorComponent, colorComponent, colorComponent, 1);\n\n                Vector3 muzzleInWorldSpace = m_positionMuzzleInWorldSpace + WorldMatrix.Up * 0.2f;\n\n                MyTransparentGeometry.AddLineBillboard(MyTransparentMaterialEnum.MuzzleFlashMachineGunSide, color, muzzleInWorldSpace - WorldMatrix.Forward * 1.0f,\n                    WorldMatrix.Forward, FAKE_LENGTH, FAKE_THICKNESS);\n                MyTransparentGeometry.AddPointBillboard(MyTransparentMaterialEnum.MuzzleFlashMachineGunFront, color, muzzleInWorldSpace, FAKE_RADIUS, FAKE_ANGLE);\n            }\n            return true;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Weapons/Guns/MySmallShipGunBase.cs",
    "content": "﻿using MinerWars.AppCode.Game.VideoMode;\n\nnamespace MinerWars.AppCode.Game.Entities.Weapons\n{\n    using System;\n    using System.Text;\n    using Audio;\n    using CommonLIB.AppCode.ObjectBuilders;\n    using GUI;\n    using MinerWarsMath;\n    using Models;\n    using MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\n    using System.Reflection;\n    using KeenSoftwareHouse.Library.Extensions;\n    using System.Diagnostics;\n    using MinerWars.AppCode.Game.Managers.Session;\n    using MinerWars.AppCode.Game.World.Global;\n    using MinerWars.AppCode.Game.Gameplay;\n    using MinerWars.AppCode.Game.Utils;\n\n    abstract class MySmallShipGunBase : MyGunBase\n    {\n        public MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum WeaponType { get; set; }\n\n        public bool IsHarvester\n        {\n            get { return WeaponType == MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Harvesting_Device; }\n        }\n\n        public bool IsDrill\n        {\n            get\n            {\n                switch (WeaponType)\n                {\n                    case MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Crusher:\n                    case MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Thermal:\n                    case MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Saw:\n                    case MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Nuclear:\n                    case MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Laser:\n                    case MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Pressure:\n                        return true;\n                }\n\n                return false;\n            }\n        }\n\n        public bool IsUniversalLauncher\n        {\n            get\n            {\n                return WeaponType == MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Universal_Launcher_Front ||\n                       WeaponType == MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Universal_Launcher_Back;\n            }\n        }\n\n        public bool IsNormalWeapon\n        {\n            get { return !IsDrill && !IsHarvester && !IsUniversalLauncher; }\n        }\n\n        protected Matrix m_worldMatrixForRenderingFromCockpitView = Matrix.Identity;    //  This is something like world matrix for this gun, except it is in gun's object space and is used only if gun's parent is our player.\n\n        public float YOffset;       // z-offset from ship's dummy\n        public float ZOffset;       // z-offset from ship's dummy\n\n        public void Init(StringBuilder hudLabelText, MyModelsEnum? modelEnum, MyMaterialType materialType,\n            MySmallShip parent, Vector3 position, Vector3 forwardVector, Vector3 upVector,\n            MyMwcObjectBuilder_Base objectBuilder)\n        {\n            base.Init(hudLabelText, modelEnum, materialType, parent, position, forwardVector, upVector, objectBuilder);\n\n            Debug.Assert(objectBuilder is MyMwcObjectBuilder_SmallShip_Weapon);\n            WeaponType = ((MyMwcObjectBuilder_SmallShip_Weapon)objectBuilder).WeaponType;\n            //  Don't need to check frustum, because it's checked by this gun's parent\n            m_frustumCheckBeforeDrawEnabled = false;\n        }\n\n        public virtual void Init(StringBuilder hudLabelText, MySmallShip parentObject,\n            Vector3 position, Vector3 forwardVector, Vector3 upVector,\n            MyMwcObjectBuilder_SmallShip_Weapon objectBuilder)\n        {\n            WeaponType = objectBuilder.WeaponType;\n            //  Don't need to check frustum, because it's checked by this gun's parent\n            m_frustumCheckBeforeDrawEnabled = false;\n        }\n\n        /// <summary>\n        /// Called after remoting.Deserialize\n        /// Remove old init version after objectBuilder is removed\n        /// </summary>\n        public void Init(StringBuilder hudLabelText, MySmallShip parentObject,\n            Vector3 position, Vector3 forwardVector, Vector3 upVector)\n        {\n            Debug.Assert((int)WeaponType != 0);\n            //  Don't need to check frustum, because it's checked by this gun's parent\n            m_frustumCheckBeforeDrawEnabled = false;\n\n            Init(hudLabelText, parentObject, position, forwardVector, upVector, new MyMwcObjectBuilder_SmallShip_Weapon(WeaponType));\n        }\n\n        public override void UpdateAfterSimulation()\n        {\n            //MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MySmallShipGunBase.UAI base\");\n            base.UpdateAfterSimulation();\n            //MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            //MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MySmallShipGunBase.UAI matrix\");\n            if (Parent == MySession.PlayerShip)\n            {\n                var localMatrix = GetLocalMatrixForCockpitView();\n\n                Matrix.Multiply(ref localMatrix, ref ((MySmallShip)Parent).PlayerHeadForGunsWorldMatrix, out m_worldMatrixForRenderingFromCockpitView);\n            }\n            //MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            //MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MySmallShipGunBase.UAI muzzle pos\");\n            m_positionMuzzleInWorldSpace = GetMuzzlePosition(m_positionMuzzleInWorldSpace);\n            //MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        protected virtual Matrix GetLocalMatrixForCockpitView()\n        {\n            float yOffset = MySmallShipConstants.ALL_SMALL_SHIP_MODEL_SCALE * YOffset;\n            float zOffset = MySmallShipConstants.ALL_SMALL_SHIP_MODEL_SCALE * ZOffset;\n\n            // in triple monitors, we must hack weapon's zOffset\n            if (MyVideoModeManager.IsTripleHead())\n            {\n                float maxDistanceFromCenterX = 10f;\n                float muFOV = (MyCamera.FieldOfView - MyConstants.FIELD_OF_VIEW_CONFIG_MIN) /\n                              (MyConstants.FIELD_OF_VIEW_CONFIG_MAX_TRIPLE_HEAD - MyConstants.FIELD_OF_VIEW_CONFIG_MIN);\n                float distanceFromCenterX = Math.Abs(this.LocalMatrix.Translation.X);\n                float muDistanceX = (distanceFromCenterX - 0f) / (maxDistanceFromCenterX - 0f);\n\n                zOffset = zOffset - ((1f - muDistanceX) * (1f - muFOV) * 0.9f) + muDistanceX * muFOV * 2.5f;\n            }\n\n            Matrix localMatrix = Matrix.CreateTranslation(0f, yOffset, zOffset) * this.LocalMatrix;\n            return localMatrix;\n        }\n\n        public MySmallShip GetParentMinerShip()\n        {\n            return (MySmallShip)Parent;\n        }\n\n        //  Only for drawing this object, because some objects need to use special world matrix\n        public override Matrix GetWorldMatrixForDraw()\n        {\n            if (MyGuiScreenGamePlay.Static.CameraAttachedTo == MyCameraAttachedToEnum.PlayerMinerShip && GetTopMostParent() == MinerWars.AppCode.Game.Managers.Session.MySession.PlayerShip)\n            {\n                //  Only our player's guns are rendered using this trick. It's because we can't use WorldMatrix in large positions as \n                //  floating point inprecision is too visible if viewed from inside the ship\n                return m_worldMatrixForRenderingFromCockpitView;\n            }\n            else\n            {\n                return base.GetWorldMatrixForDraw();\n            }\n        }\n\n        //  Only for drawing this object, because some objects need to use special world matrix\n        public Vector3 GetMuzzlePosition(Vector3 worldPosition)\n        {\n            if ((MyGuiScreenGamePlay.Static.CameraAttachedTo == MyCameraAttachedToEnum.PlayerMinerShip) &&\n                (Parent == MySession.PlayerShip))\n            {\n                //  Only our player's guns are rendered using this trick. It's because we can't use WorldMatrix in large positions as \n                //  floating point inprecision is too visible if viewed from inside the ship\n                Vector3 delta = (GetWorldMatrixForDraw().Translation - WorldMatrix.Translation) + Parent.WorldMatrix.Translation;\n                return worldPosition + delta;\n            }\n            else\n            {\n                return worldPosition;\n            }\n        }\n\n        protected void AddWeaponCue(MySoundCuesEnum cueEnum)\n        {\n            GetParentMinerShip().UnifiedWeaponCueSet(cueEnum, MyAudio.AddCue2dOr3d(GetParentMinerShip(), cueEnum,\n                        m_positionMuzzleInWorldSpace, Parent.WorldMatrix.Forward, Parent.WorldMatrix.Up, Parent.Physics.LinearVelocity));\n        }\n\n        protected MySoundCue? GetWeaponCue(MySoundCuesEnum cueEnum)\n        {\n            return GetParentMinerShip().UnifiedWeaponCueGet(cueEnum);\n        }\n\n\n        public override bool IsThisGunFriendly()\n        {\n            return ((Parent is MySmallShip) &&\n                ((MySession.Static != null) && //credits\n                MyFactions.GetFactionsRelation((Parent as MySmallShip), MySession.Static.Player) == MyFactionRelationEnum.Friend));\n        }\n\n        protected void AddProjectile(MyAmmoProperties ammoProperties, MyEntity weapon)\n        {\n            Vector3 projectileForwardVector = GetDeviatedVector(ammoProperties);\n\n            MyProjectiles.Add(ammoProperties, Parent, m_positionMuzzleInWorldSpace, Parent.Physics.LinearVelocity, projectileForwardVector, false, 1.0f, weapon);\n        }\n\n        public virtual void StopAllSounds()\n        {\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Weapons/Guns/MySniperGun.cs",
    "content": "﻿using MinerWars.AppCode.Game.TransparentGeometry.Particles;\n\nnamespace MinerWars.AppCode.Game.Entities.Weapons\n{\n    using System.Text;\n    using App;\n    using Audio;\n    using CommonLIB.AppCode.ObjectBuilders.SubObjects;\n    using CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\n    using MinerWarsMath;\n    using Models;\n    using TransparentGeometry;\n    using Utils;\n    using MinerWars.CommonLIB.AppCode.ObjectBuilders;\n    using MinerWars.AppCode.Game.Gameplay;\n    using MinerWars.AppCode.Game.Render;\n    using MinerWars.CommonLIB.AppCode.Utils;\n\n    class MySniperGun : MySmallShipGunBase\n    {\n        int m_lastTimeShoot;\n\n        public override void Init(StringBuilder hudLabelText, MySmallShip parentObject,\n            Vector3 position, Vector3 forwardVector, Vector3 upVector,\n            MyMwcObjectBuilder_SmallShip_Weapon objectBuilder)\n        {\n            base.Init(hudLabelText, MyModelsEnum.Sniper, MyMaterialType.METAL, parentObject, position,\n                forwardVector, upVector, objectBuilder);\n        }\n\n        Vector3 GetMuzzlePosition()\n        {\n            return m_positionMuzzleInWorldSpace + WorldMatrix.Forward * 0.1f + WorldMatrix.Up * 0.3f;\n        }\n\n        public override bool Shot(MyMwcObjectBuilder_SmallShip_Ammo usedAmmo)\n        {\n            if (usedAmmo == null || (MyMinerGame.TotalGamePlayTimeInMilliseconds - m_lastTimeShoot) < MySniperConstants.SHOT_INTERVAL_IN_MILISECONDS && !IsDummy) \n                return false;\n\n            MyAmmoProperties ammoProperties = MyAmmoConstants.GetAmmoProperties(usedAmmo.AmmoType);\n\n            AddProjectile(ammoProperties, this);\n\n            m_lastTimeShoot = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n            AddWeaponCue(ammoProperties.ShotSound);\n\n            if (SysUtils.MyMwcFinalBuildConstants.ENABLE_TRAILER_SAVE)\n            {\n                MinerWars.AppCode.Game.Trailer.MyTrailerSave.UpdateGunShot(this.Parent, Trailer.MyTrailerGunsShotTypeEnum.PROJECTILE);\n            }\n\n            MyParticleEffect startEffect = MyParticlesManager.CreateParticleEffect((int)MyParticleEffectsIDEnum.Smoke_SmallGunShot);\n            startEffect.WorldMatrix = Matrix.CreateWorld(GetMuzzlePosition(), GetForward(), GetUp());\n\n            return true;\n        }\n\n        public override bool Draw(Render.MyRenderObject renderObject = null)\n        {\n            if (base.Draw(renderObject))\n            {\n\n                //  Draw muzzle flash\n                int deltaTime = MyMinerGame.TotalGamePlayTimeInMilliseconds - m_lastTimeShoot;\n                if (deltaTime <= MyMachineGunConstants.MUZZLE_FLASH_MACHINE_GUN_LIFESPAN)\n                {\n                    MyParticleEffects.GenerateMuzzleFlash(GetMuzzlePosition(), WorldMatrix.Forward, MyMwcUtils.GetRandomFloat(0.8f, 1.2f), MyMwcUtils.GetRandomFloat(1, 2), MyRender.GetCurrentLodDrawPass() == MyLodTypeEnum.LOD_NEAR);\n                }\n\n                return true;\n            }\n\n            return false;\n        }\n\n        protected override MyMwcObjectBuilder_Base GetObjectBuilderInternal(bool getExactCopy)\n        {\n            MyMwcObjectBuilder_Base objectBuilder = base.GetObjectBuilderInternal(getExactCopy);\n            if (objectBuilder == null)\n            {                \n                objectBuilder = MyMwcObjectBuilder_Base.CreateNewObject(MyMwcObjectBuilderTypeEnum.SmallShip_Weapon, (int?)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Sniper);\n            }\n            return objectBuilder;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Weapons/MyLargeShipWeaponCIWS.cs",
    "content": "﻿namespace MinerWars.AppCode.Game.Managers.EntityManager.Entities.Weapons\n{\n    class MyLargeShipWeaponCIWS //: MyPhysObjectBaseNoJLX\n    {\n\n        //float m_rotationAngle;                          //  Actual rotation angle (not rotation speed) around Z axis\n        //Vector3 m_forward;\n        //Vector3 m_up;\n\n        //List<MyLargeShipGunBase> m_gunParts;\n\n        //public virtual void Init(StringBuilder hudLabelText, Vector3 position, MyLargeShip parentObject, MyMwcObjectBuilder_LargeShip_Weapon objectBuilder)\n        //{\n        //    base.Init(hudLabelText, MyModelsEnum.Turret_CIWS_Base, MyPhysObjectMaterialType.METAL, parentObject, position, objectBuilder);\n        //    m_positionRelative = position;\n        //    m_forward = objectBuilder.PositionAndOrientation.Forward;\n        //    m_up = objectBuilder.PositionAndOrientation.Up;\n        //    m_gunParts = new List<MyLargeShipGunBase>();\n        //    MyLargeShipWeaponCiwsGun m_turretGun = new MyLargeShipWeaponCiwsGun();\n        //    m_turretGun.Init(null, m_positionRelative, this, objectBuilder);\n        //    m_gunParts.Add(m_turretGun);\n        //}\n\n        //public override bool IsVisible()\n        //{\n        //    return base.IsVisible();\n        //}\n\n        ////  Draw muzzle flash not matter if in frustum (it's because it's above the frustum)\n        //public override bool Draw()\n        //{\n        //    if (base.Draw() == false) return false;\n        //    foreach(MyGunBase gunPart in m_gunParts)\n        //    {\n        //        gunPart.Draw();\n        //    }\n\n        //    return true;\n        //}\n\n        //public override void UpdateAfterIntegration()\n        //{\n        //    base.UpdateAfterIntegration();\n        //    if (IsInVisibleRange(TargetPosition()))\n        //    {\n        //        Vector2 rotIndicator = RotationTowardsTarget(WorldMatrixInverted, TargetWorldMatrix());\n        //        Vector2 normalizedRotationIndicator = Vector2.Normalize(rotIndicator);\n        //        m_rotationAngle -= normalizedRotationIndicator.Y;\n        //    }\n        //    else\n        //    {\n        //        //TODO temporary\n        //        m_rotationAngle -= 0.01f;\n        //    }\n        //    UpdateWorldMatrix();\n\n        //    foreach (MyGunBase gunPart in m_gunParts)\n        //    {\n        //        gunPart.UpdateAfterIntegration();\n        //    }\n        //}\n\n        //public override void UpdateWorldMatrix()\n        //{    \n        //    base.UpdateWorldMatrix();\n        //    Matrix rotationMatrix = Matrix.CreateRotationY(m_rotationAngle) * Matrix.CreateFromYawPitchRoll(m_forward.Y, m_forward.X, m_forward.Z);\n        //    WorldMatrix = rotationMatrix * Matrix.CreateTranslation(m_positionRelative) * Parent.WorldMatrix;\n        //    UpdateWorldMatrixInvertedAndBoundingSphere();\n        //    foreach (MyGunBase gunPart in m_gunParts)\n        //    {\n        //        gunPart.UpdateWorldMatrix();\n        //    }\n        //}\n\n        //public override MyLineTriangleIntersectionResult GetIntersectionWithLine(ref MyLine line)\n        //{\n        //    MyLineTriangleIntersectionResult result = ModelLod0.GetOctree().GetIntersectionWithLine(this, ref line);\n        //    //  Test against childs of this phys object (in this case gun parts)\n        //    foreach (MyGunBase gunPart in m_gunParts)\n        //    {\n        //        MyLineTriangleIntersectionResult intersectionGunPart = gunPart.GetIntersectionWithLine(ref line);\n\n        //        if (((result.Found == false) && (intersectionGunPart.Found == true)) ||\n        //            ((result.Found == true) && (intersectionGunPart.Found == true) && (intersectionGunPart.Distance < result.Distance)))\n        //        {\n        //            result = intersectionGunPart;\n        //        }\n        //    }\n        //    return result;\n        //}\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Weapons/MyLargeShipWeapons.cs",
    "content": "﻿namespace MinerWars.AppCode.Game.Managers.EntityManager.Entities.Weapons\n{\n    using System.Collections.Generic;\n    using CommonLIB.AppCode.ObjectBuilders.SubObjects;\n    using CommonLIB.AppCode.ObjectBuilders.SubObjects.LargeShipTools;\n    using Microsoft.Xna.Framework;\n    using Models;\n    using SysUtils.Utils;\n    using Utils;\n    using System.Text;\n\n    class MyLargeShipWeapons\n    {\n        MyLargeShip m_ship;\n\n        List<MyGunBase> m_guns;\n        List<MyMwcObjectBuilder_LargeShip_Weapon> m_weaponsObjectBuilders;\n        List<MyMwcObjectBuilder_LargeShip_Ammo> m_ammoObjectBuilders;\n\n        public int MuzzleFlashLastTime { get; set; }\n\n        public MyLargeShipWeapons(MyLargeShip ship, \n            List<MyMwcObjectBuilder_LargeShip_Weapon> weaponsObjectBuilders, List<MyMwcObjectBuilder_LargeShip_Ammo> ammoObjectBuilders)\n        {\n            m_ship = ship;\n            MuzzleFlashLastTime = MyConstants.FAREST_TIME_IN_PAST;\n\n            //  This object builders are needed even after ship is initialized because we may need to know what is in the ship in later time\n            m_weaponsObjectBuilders = weaponsObjectBuilders;\n            m_ammoObjectBuilders = ammoObjectBuilders;\n\n            //  Create phys-objects weapons from weapon object builders\n            m_guns = new List<MyGunBase>();\n            if (weaponsObjectBuilders != null)\n            {\n                foreach (MyMwcObjectBuilder_LargeShip_Weapon weaponObjectBuilder in weaponsObjectBuilders)\n                {\n                    AddWeapon(weaponObjectBuilder);\n                }\n            }\n        }\n\n        //  Adds one weapon or device to this large ship\n        void AddWeapon(MyMwcObjectBuilder_LargeShip_Weapon weaponObjectBuilder)\n        {\n            Vector3 position =  new Vector3(weaponObjectBuilder.PositionAndOrientation.Position.X, weaponObjectBuilder.PositionAndOrientation.Position.Y, weaponObjectBuilder.PositionAndOrientation.Position.Z);\n\n            switch (weaponObjectBuilder.WeaponType)\n            {\n                case MyMwcObjectBuilder_LargeShip_Weapon_TypesEnum.CIWS:\n                    {\n                        //MyLargeShipWeaponCIWS newGun = new MyLargeShipWeaponCIWS();\n                        //newGun.Init(new StringBuilder(\"CIWS gun\"), position, m_ship, weaponObjectBuilder);\n                        //m_guns.Add(newGun);\n                        break;\n                    }\n                case MyMwcObjectBuilder_LargeShip_Weapon_TypesEnum.MachineGun:\n                    {\n                        MyLargeShipMachineGun newGun = new MyLargeShipMachineGun();\n                        newGun.Init(new StringBuilder(\"Large machine gun\"), m_ship, position, m_ship.WorldMatrix.Forward, m_ship.WorldMatrix.Up, null);\n                        m_guns.Add(newGun);\n                    }\n                    break;\n\n                default:\n                    throw new MyMwcExceptionApplicationShouldNotGetHere();\n                    break;\n            }\n        }\n\n\n\n        public List<MyMwcObjectBuilder_LargeShip_Weapon> GetWeaponsObjectBuilders()\n        {\n            return m_weaponsObjectBuilders;\n        }\n\n        public List<MyMwcObjectBuilder_LargeShip_Ammo> GetAmmoObjectBuilders()\n        {\n            return m_ammoObjectBuilders;\n        }\n\n        public MyIntersectionResultLineTriangleEx? GetIntersectionWithLine(ref MyLine line)\n        {\n            MyIntersectionResultLineTriangleEx? result = null;\n\n            //  Test against childs of this phys object (in this case guns)\n            foreach (MyGunBase gun in m_guns)\n            {\n                MyIntersectionResultLineTriangleEx? intersectionGun = gun.GetIntersectionWithLine(ref line);\n\n                result = MyIntersectionResultLineTriangleEx.GetCloserIntersection(ref result, ref intersectionGun);\n            }\n\n            return result;\n        }\n\n        public List<MyGunBase> GetGuns()\n        {\n            return m_guns;\n        }\n\n        public void UpdateAfterIntegration()\n        {\n            foreach (MyGunBase gun in m_guns)\n            {\n                gun.UpdateAfterIntegration();\n            }\n        }\n\n        public void Draw()\n        {\n            foreach (MyGunBase gun in m_guns)\n            {\n                gun.Draw();\n            }\n        }\n\n        public void DrawNormalVectors()\n        {\n            foreach (MyGunBase gun in m_guns)\n            {\n                gun.DebugDrawNormalVectors();\n            }\n        }\n\n        public void Close()\n        {\n            for (int i = 0; i < m_guns.Count; i++)\n            {\n                m_guns[i].Close();\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Weapons/MySmallShipWeapons.cs",
    "content": "﻿namespace MinerWars.AppCode.Game.Entities.Weapons\n{\n    using System;\n    using System.Collections.Generic;\n    using System.Text;\n    using App;\n    using CommonLIB.AppCode.ObjectBuilders.SubObjects;\n    using CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\n    using GUI.Helpers;\n    using MinerWarsMath;\n    using Models;\n    using SubObjects;\n    using SysUtils.Utils;\n    using UniversalLauncher;\n    using Utils;\n    using MinerWars.AppCode.Game.Inventory;\n    using MinerWars.AppCode.Game.Entities.Weapons.Ammo;\n    using MinerWars.CommonLIB.AppCode.ObjectBuilders;\n    using System.Runtime.Serialization;\n    using System.Reflection;\n    using KeenSoftwareHouse.Library.Extensions;\n    using System.Diagnostics;\n    using MinerWars.AppCode.Game.Sessions;\n    using MinerWars.CommonLIB.AppCode.Networking.Multiplayer;\n    using MinerWars.AppCode.Game.GUI;\n    using MinerWars.AppCode.Game.Managers.Session;\n\n    internal class MySmallShipWeapons\n    {\n        /// <summary>\n        /// This factory class generate new instances of weapons from weapon type\n        /// </summary>\n        static class MySmallShipWeaponFactory\n        {\n            /// <summary>\n            /// Returns new instance of weapon\n            /// </summary>\n            /// <param name=\"weaponType\">Weapon type</param>\n            /// <returns></returns>\n            public static MySmallShipGunBase GenerateWeapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum weaponType)\n            {\n                MySmallShipGunBase newGun;\n                switch (weaponType)\n                {\n                    case MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Autocanon:\n                        newGun = new MyAutocanonGun();\n                        break;\n\n                    case MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Automatic_Rifle_With_Silencer:\n                        newGun = new MyAutomaticRifleSilencerGun();\n                        break;\n\n                    case MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Crusher:\n                        newGun = new MyCrusherDrill();\n                        break;\n\n                    case MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Laser:\n                        newGun = new MyLaserDrill();\n                        break;\n\n                    case MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Nuclear:\n                        newGun = new MyNuclearDrill();\n                        break;\n\n                    case MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Saw:\n                        newGun = new MySawDrill();\n                        break;\n\n                    case MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Thermal:\n                        newGun = new MyThermalDrill();\n                        break;\n\n                    case MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Pressure:\n                        newGun = new MyPressureDrill();\n                        break;\n\n                    case MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Missile_Launcher:\n                        newGun = new MyMissileLauncherGun();\n                        break;\n\n                    case MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Harvesting_Device:\n                        newGun = new MyHarvestingDevice();\n                        break;\n\n                    case MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Machine_Gun:\n                        newGun = new MyMachineGun();\n                        break;\n\n                    case MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Cannon:\n                        newGun = new MyCannonGun();\n                        break;\n\n                    case MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Shotgun:\n                        newGun = new MyShotGun();\n                        break;\n\n                    case MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Sniper:\n                        newGun = new MySniperGun();\n                        break;\n\n                    case MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Universal_Launcher_Back:\n                        newGun = new MyUniversalLauncher();\n                        break;\n\n                    case MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Universal_Launcher_Front:\n                        newGun = new MyUniversalLauncher();\n                        break;\n\n                    default:\n                        throw new MyMwcExceptionApplicationShouldNotGetHere();\n                        break;\n                }\n                return newGun;\n            }\n        }\n\n        #region Static and consts\n        private static readonly Dictionary<string, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum> m_weaponsModelNames;\n        private const string GUN_PREFIX_NAME = \"GUN_\";\n        private const string DRILL_NAME = \"DRILL\";\n        private const string HARVESTER_NAME = \"HARVESTER\";\n\n\n        static MySmallShipWeapons()\n        {\n            m_weaponsModelNames = new Dictionary<string, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum>()\n            {\n                {\"AUTOCANNON\", MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Autocanon},\n                {\"SHOTGUN\", MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Shotgun},\n                {\"MACHINEGUN\", MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Machine_Gun},\n                {\"RIFLE\", MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Automatic_Rifle_With_Silencer},\n                {\"SNIPER\", MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Sniper},\n                {\"MISSILE\", MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Missile_Launcher},\n                {\"CANNON\", MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Cannon},\n                {\"UNIVERSAL_FRONT\", MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Universal_Launcher_Front},\n                {\"UNIVERSAL_BACK\", MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Universal_Launcher_Back},                    \n            };\n        }\n        #endregion\n\n        #region Fields\n        private List<MyWeaponSlot> m_weaponSlots;       // weapon's slots\n\n        private MyWeaponSlot m_drillSlot;               // drill's slot\n\n        private MyWeaponSlot m_harvestingDeviceSlot;    // harvesting device's slot\n\n        private MySmallShip m_ship;                     // reference to ship\n\n        private MyAmmoAssignments m_ammoAssignments;    // ammo assignmens  \n\n        private List<MySmallShipGunBase> m_allMountedWeapons;    // all mounted weapons\n\n        private List<MyInventoryItem> m_helperInventoryItems = new List<MyInventoryItem>();\n\n        private bool m_isClosed;\n\n        private Weapons.OnWeaponMounting m_weaponMounting;\n        private Weapons.OnWeaponDismouting m_weaponDismounting;\n        #endregion\n\n        #region Ctors\n        /// <summary>\n        /// Creates new intance of small ship weapons\n        /// </summary>\n        /// <param name=\"ship\">Ship</param>\n        /// <param name=\"shipTypeProperties\">Ship's properties</param>\n        /// <param name=\"maxSlots\">Max weapon slots which can be mounted with a gun</param>\n        public MySmallShipWeapons(MySmallShip ship, MyShipTypeProperties shipTypeProperties, int maxSlots)\n        {\n            m_weaponMounting = new Weapons.OnWeaponMounting(OnWeaponMounting);\n            m_weaponDismounting = new Weapons.OnWeaponDismouting(OnWeaponDismounting);\n\n            Ship = ship;\n            AmmoAssignments = new MyAmmoAssignments(this);\n            AmmoInventoryItems = new MyAmmoInventoryItems();\n            Ship.Inventory.OnInventoryContentChange += OnInventoryContentChange;\n            FillAmmoInventoryItemsFromInventory();\n            MuzzleFlashLastTime = 0;\n            Visible = true;\n            InitSlots(shipTypeProperties, maxSlots);\n\n            m_allMountedWeapons = new List<MySmallShipGunBase>();\n            m_isClosed = false;\n        }\n\n        #endregion\n\n        #region Properties\n        /// <summary>\n        /// Ammo assignments\n        /// </summary>\n        public MyAmmoAssignments AmmoAssignments\n        {\n            get\n            {\n                return m_ammoAssignments;\n            }\n            private set\n            {\n                m_ammoAssignments = value;\n            }\n        }\n\n        /// <summary>\n        /// Ammo inventory items\n        /// </summary>\n        public MyAmmoInventoryItems AmmoInventoryItems { get; private set; }\n\n        /// <summary>\n        /// Last time of muzzle flash\n        /// </summary>\n        public int MuzzleFlashLastTime { get; set; }\n\n        private MyWeaponSlot DrillSlot\n        {\n            get\n            {\n                return m_drillSlot;\n            }\n            set\n            {\n                m_drillSlot = value;\n            }\n        }\n\n        private MyWeaponSlot HarvestingDeviceSlot\n        {\n            get\n            {\n                return m_harvestingDeviceSlot;\n            }\n            set\n            {\n                m_harvestingDeviceSlot = value;\n            }\n        }\n\n        private MySmallShip Ship\n        {\n            get\n            {\n                return m_ship;\n            }\n            set\n            {\n                m_ship = value;\n            }\n        }\n\n        /// <summary>\n        /// Returns all weapon's slots\n        /// </summary>\n        /// <returns></returns>\n        public List<MyWeaponSlot> WeaponSlots\n        {\n            get\n            {\n                return m_weaponSlots;\n            }\n            private set\n            {\n                m_weaponSlots = value;\n            }\n        }\n\n        public bool Visible { get; set; }\n\n        #endregion\n\n        #region Public methods\n\n        /// <summary>\n        /// Initialize small ship's weapons from object builders\n        /// </summary>\n        /// <param name=\"weaponObjectBuilders\">Weapon's objectbuilders</param>\n        /// <param name=\"assignmentOfAmmoObjectBuilders\">Assignment of ammo objectbuilders</param>\n        public void Init(List<MyMwcObjectBuilder_SmallShip_Weapon> weaponObjectBuilders, List<MyMwcObjectBuilder_AssignmentOfAmmo> assignmentOfAmmoObjectBuilders)\n        {\n            Debug.Assert(!m_isClosed);\n            RemoveAllWeapons();\n            if (weaponObjectBuilders != null)\n            {\n                foreach (MyMwcObjectBuilder_SmallShip_Weapon objectBuilder in weaponObjectBuilders)\n                {\n                    if (!MyMwcObjectBuilder_InventoryItem.IsDisabled(MyMwcObjectBuilderTypeEnum.SmallShip_Weapon, (int)objectBuilder.GetObjectBuilderId()))\n                    {\n                        AddWeapon(objectBuilder);\n                    }\n                }\n            }\n\n            if (assignmentOfAmmoObjectBuilders != null)\n            {\n                AmmoAssignments.Init(assignmentOfAmmoObjectBuilders);\n            }\n        }\n\n        /// <summary>\n        /// Adds weapon. First try find first empty preferred slot and then try find first empty slot\n        /// </summary>\n        /// <param name=\"weaponObjectBuilder\">Weapon's object builder</param>\n        public MySmallShipGunBase AddWeapon(MyMwcObjectBuilder_SmallShip_Weapon weaponObjectBuilder)\n        {\n            if (!MySession.Is25DSector)\n            {\n                if (weaponObjectBuilder.WeaponType == MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Nuclear)\n                    weaponObjectBuilder.WeaponType = MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Crusher;\n            }\n\n\n            MySmallShipGunBase newWeapon = MySmallShipWeaponFactory.GenerateWeapon(weaponObjectBuilder.WeaponType);\n            if (newWeapon is MyDrillBase)\n            {\n                AddDrill(newWeapon as MyDrillBase, weaponObjectBuilder);\n            }\n            else if (newWeapon is MyHarvestingDevice)\n            {\n                AddHarvestingDevice(newWeapon as MyHarvestingDevice, weaponObjectBuilder);\n            }\n            else\n            {\n                AddWeapon(newWeapon, weaponObjectBuilder);\n            }\n            var parentShip = newWeapon.Parent as MySmallShip;\n            if(parentShip != null)\n            {\n                newWeapon.NearFlag = parentShip.IsCameraInsideMinerShip();\n            }\n            return newWeapon;\n        }\n\n        /// <summary>\n        /// Adds drill to drill's slot\n        /// </summary>\n        /// <param name=\"drillObjectBuilder\">Drill's object builder</param>\n        public void AddDrill(MyMwcObjectBuilder_SmallShip_Weapon drillObjectBuilder)\n        {\n            MyDrillBase newDrill = MySmallShipWeaponFactory.GenerateWeapon(drillObjectBuilder.WeaponType) as MyDrillBase;\n            if (newDrill == null)\n            {\n                throw new ArgumentException(\"Object builder is not drill object builder\");\n            }\n            AddDrill(newDrill, drillObjectBuilder);\n        }\n\n        /// <summary>\n        /// Adds harvesting device to harvesting device's slot\n        /// </summary>\n        /// <param name=\"harvestingDeviceObjectBuilder\">Harvesting device's object builder</param>\n        public void AddHarvestingDevice(MyMwcObjectBuilder_SmallShip_Weapon harvestingDeviceObjectBuilder)\n        {\n            MyHarvestingDevice newHarvestingDevice = MySmallShipWeaponFactory.GenerateWeapon(harvestingDeviceObjectBuilder.WeaponType) as MyHarvestingDevice;\n            if (newHarvestingDevice == null)\n            {\n                throw new ArgumentException(\"Object builder is not harvesting device object builder\");\n            }\n            AddHarvestingDevice(newHarvestingDevice, harvestingDeviceObjectBuilder);\n        }\n\n        /// <summary>\n        /// Removes all weapons from ship (if remove drill or remove harvesting device is true, then remove them too)\n        /// </summary>\n        /// <param name=\"removeDrill\">If true, removes drill from ship</param>\n        /// <param name=\"removeHarvestingDevice\">If true, removes harvesting device from ship</param>\n        public void RemoveAllWeapons(bool removeDrill = true, bool removeHarvestingDevice = true)\n        {\n            if (removeDrill)\n            {\n                RemoveDrill();\n            }\n            if (removeHarvestingDevice)\n            {\n                RemoveHarvestingDevice();\n            }\n            for (int i = 0; i < WeaponSlots.Count; i++)\n            {\n                RemoveWeapon(i);\n            }\n        }\n\n        /// <summary>\n        /// Removes weapon from ship\n        /// </summary>\n        /// <param name=\"index\">Index of slot</param>\n        public void RemoveWeapon(int index)\n        {\n            if (index >= WeaponSlots.Count)\n            {\n                throw new ArgumentOutOfRangeException(\"index\");\n            }\n            MyWeaponSlot weaponSlot = WeaponSlots[index];\n            if (weaponSlot.IsMounted())\n            {\n                RemoveWeaponFromSlotAndFromShip(weaponSlot);\n            }\n        }\n\n        /// <summary>\n        /// Removes drill from ship\n        /// </summary>\n        public void RemoveDrill()\n        {\n            if (DrillSlot.IsMounted())\n            {\n                RemoveWeaponFromSlotAndFromShip(DrillSlot);\n            }\n        }\n\n        /// <summary>\n        /// Removes harvesting device from ship\n        /// </summary>\n        public void RemoveHarvestingDevice()\n        {\n            if (HarvestingDeviceSlot.IsMounted())\n            {\n                RemoveWeaponFromSlotAndFromShip(HarvestingDeviceSlot);\n            }\n        }\n\n        Queue<int> m_keysToShot = new Queue<int>(8);        \n        /// <summary>\n        /// Shot from weapon which is bind at fire key. Fire is delayed because we want to shoot from already simulated ship\n        /// </summary>\n        /// <param name=\"key\">Fire key</param>\n        public void Fire(MyMwcObjectBuilder_FireKeyEnum key)\n        {\n            if(!m_keysToShot.Contains((int)key))\n            {\n                m_keysToShot.Enqueue((int)key);\n            }\n        }\n\n        /// <summary>\n        /// Returns if weapon with this type is mounted\n        /// </summary>\n        /// <param name=\"weaponType\">Weapon's type</param>\n        /// <returns></returns>\n        public bool IsMounted(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum weaponType) \n        {\n            foreach (MySmallShipGunBase gun in GetMountedWeaponsWithHarvesterAndDrill()) \n            {\n                if (gun.WeaponType == weaponType) \n                {\n                    return true;\n                }\n            }\n            return false;\n        }\n\n        /// <summary>\n        /// Shot from weapon which is bind at fire key\n        /// </summary>\n        /// <param name=\"key\">Fire key</param>\n        void FirePrivate(MyMwcObjectBuilder_FireKeyEnum key)\n        {\n            //Do nothing if there are no ammo or weapons or assignments\n\n\n            this.m_ship.InitGroupMaskIfNeeded();\n\n            var drill = GetMountedDrill();\n            if ((!MySession.Is25DSector && (drill != null && (drill.CurrentState == MyDrillStateEnum.Activated || drill.CurrentState == MyDrillStateEnum.Drilling)))\n                || (MySession.Is25DSector && drill != null && key == MyMwcObjectBuilder_FireKeyEnum.Secondary))\n            {\n                drill.Shot(null);\n                return;\n            }\n\n            List<MySmallShipGunBase> mountedGuns = GetMountedWeaponsWithHarvesterAndDrill();\n            /*if (AmmoInventoryItems.Count() == 0 || AmmoAssignments.Count() == 0 || mountedGuns.Count == 0)\n                return;*/\n\n            MyAmmoAssignment ammoAssignment = AmmoAssignments.GetAmmoAssignment(key);\n\n            //If type or group is not found in object builders, do nothing\n            if (ammoAssignment == null) return;\n\n            //If type and group is bad combination, do nothing\n            if (!MyGuiSmallShipHelpers.GetWeaponType(ammoAssignment.AmmoType, ammoAssignment.AmmoGroup).HasValue) return;\n\n            MyInventoryItem usedAmmoInventoryItem = null;\n            foreach (MyInventoryItem ammoItem in AmmoInventoryItems.GetAmmoInventoryItems(ammoAssignment.AmmoType))\n            {\n                if (ammoItem.Amount > 0)\n                {\n                    usedAmmoInventoryItem = ammoItem;\n                    break;\n                }\n            }\n\n            bool thereWasShot = false;\n            bool wasCountedMuzzleTime = false;\n\n            //  Shot from gun\n            foreach (MySmallShipGunBase gun in mountedGuns)\n            {\n                if (MyGuiSmallShipHelpers.GetWeaponType(ammoAssignment.AmmoType, ammoAssignment.AmmoGroup).Value == gun.WeaponType)\n                {\n                    bool shot = false;\n                    if (usedAmmoInventoryItem != null && usedAmmoInventoryItem.Amount > 0)\n                    {\n                        shot = gun.Shot((MyMwcObjectBuilder_SmallShip_Ammo)usedAmmoInventoryItem.GetInventoryItemObjectBuilder(false));\n                        if (shot && MyMultiplayerGameplay.IsRunning && !m_ship.IsDummy)\n                        {\n                            var ammo = ((MyMwcObjectBuilder_SmallShip_Ammo)usedAmmoInventoryItem.GetInventoryItemObjectBuilder(false)).AmmoType;\n                            MyMultiplayerGameplay.Static.Shoot(this.m_ship, this.m_ship.WorldMatrix, gun.WeaponType, ammo, this.Ship.TargetEntity, gun.LastShotId);\n                        }\n                    }\n                    else\n                    {\n                        if (m_noAmmoSoundDelay + 175 < MyMinerGame.TotalGamePlayTimeInMilliseconds)\n                        {\n                            Audio.MyAudio.AddCue2dOr3d(Ship, Audio.MySoundCuesEnum.WepNoAmmo, Ship.GetPosition(), Ship.WorldMatrix.Forward, Ship.WorldMatrix.Up, Ship.Physics.LinearVelocity);\n                            m_noAmmoSoundDelay = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n                        }\n                    }\n\n                    if (shot)\n                    {\n                        Ship.Inventory.RemoveInventoryItemAmount(ref usedAmmoInventoryItem, 1f);\n                        thereWasShot = true;\n                        Ship.WeaponShot(gun, ammoAssignment);\n                    }\n\n                    //  If we shot from gun that uses projectiles, we need to remember it as last time of muzzle flash\n                    if ((shot == true) &&\n                        MyGuiSmallShipHelpers.IsAmmoInGroup(ammoAssignment.AmmoType, MyMwcObjectBuilder_AmmoGroupEnum.Bullet) &&\n                        !wasCountedMuzzleTime)\n                    {\n                        MuzzleFlashLastTime = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n                        wasCountedMuzzleTime = true;\n                    }\n                }\n            }\n\n            if (thereWasShot == true)\n            {\n                Ship.IncreaseHeadShake(MyHeadShakeConstants.HEAD_SHAKE_AMOUNT_AFTER_GUN_SHOT);\n            }\n        }\n\n        private float m_noAmmoSoundDelay = 0;\n\n        /// <summary>\n        /// Shots from harvester\n        /// </summary>\n        public void FireHarvester()\n        {\n            var drill = GetMountedDrill();\n            if (drill != null && drill.CurrentState != MyDrillStateEnum.InsideShip)\n                return;\n\n            MyHarvestingDevice harvester = GetMountedHarvestingDevice();\n            if (harvester != null)\n            {\n                if (MyMultiplayerGameplay.IsRunning && !harvester.IsDummy)\n                {\n                    MyMultiplayerGameplay.Static.SpeacialWeaponEvent(MySpecialWeaponEventEnum.HARVESTER_FIRE, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Harvesting_Device);\n                }\n\n                this.m_ship.InitGroupMaskIfNeeded();\n                harvester.Shot(null);\n            }\n        }\n\n        /// <summary>\n        /// Shots from drill\n        /// </summary>\n        public void FireDrill()\n        {\n            var harvester = GetMountedHarvestingDevice();\n            if (harvester != null && harvester.IsHarvesterActive)\n                return;\n\n            MyDrillBase drill = GetMountedDrill();\n            if (drill != null)\n            {\n                this.m_ship.InitGroupMaskIfNeeded();\n                drill.Eject();\n            }\n        }\n\n        /// <summary>\n        /// Returns all mounted weapons and drill and harvesting device\n        /// </summary>\n        /// <returns></returns>\n        public List<MySmallShipGunBase> GetMountedWeaponsWithHarvesterAndDrill()\n        {\n            return m_allMountedWeapons;\n        }\n\n        /// <summary>\n        /// Returns mounted harvesting device\n        /// </summary>\n        /// <returns></returns>\n        public MyHarvestingDevice GetMountedHarvestingDevice()\n        {\n            if (HarvestingDeviceSlot.IsMounted())\n            {\n                return HarvestingDeviceSlot.MountedWeapon as MyHarvestingDevice;\n            }\n            return null;\n        }\n\n        /// <summary>\n        /// Returns mounted drill\n        /// </summary>\n        /// <returns></returns>\n        public MyDrillBase GetMountedDrill()\n        {\n            if (DrillSlot.IsMounted())\n            {\n                return DrillSlot.MountedWeapon as MyDrillBase;\n            }\n            return null;\n        }\n\n        /// <summary>\n        /// Returns interstection with line\n        /// </summary>\n        /// <param name=\"line\">Line</param>\n        /// <returns></returns>\n        public MyIntersectionResultLineTriangleEx? GetIntersectionWithLine(ref MyLine line)\n        {\n            MyIntersectionResultLineTriangleEx? result = null;\n\n            //  Test against childs of this phys object (in this case guns)\n            foreach (MyGunBase gun in GetMountedWeaponsWithHarvesterAndDrill())\n            {\n                MyIntersectionResultLineTriangleEx? intersectionGun;\n                gun.GetIntersectionWithLine(ref line, out intersectionGun);\n                result = MyIntersectionResultLineTriangleEx.GetCloserIntersection(ref result, ref intersectionGun);\n            }\n\n            return result;\n        }\n\n        /// <summary>\n        /// Updates all weapons after integration\n        /// </summary>\n        public void UpdateAfterSimulation()\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MySmallShipWeapons.UAI fire\");            \n            while(m_keysToShot.Count > 0)\n            {\n                MyMwcObjectBuilder_FireKeyEnum keyToShot = (MyMwcObjectBuilder_FireKeyEnum)m_keysToShot.Dequeue();\n                FirePrivate(keyToShot);\n            }\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            //MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MySmallShipWeapons.UAI weapons\");\n            \n            /*\n            foreach (MySmallShipGunBase gun in GetMountedWeaponstWithHarvesterAndDrill())\n            {\n                gun.UpdateAfterSimulation();\n            }\n            */\n\n            //MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        /// <summary>\n        /// Draws all weapons\n        /// </summary>\n        public void Draw()\n        {\n            if (Visible)\n            {\n                foreach (MySmallShipGunBase gun in GetMountedWeaponsWithHarvesterAndDrill())\n                {\n                    if (gun.Visible)\n                        gun.Draw();\n                }\n            }\n        }\n\n        /// <summary>\n        /// Draws all weapons normals\n        /// </summary>\n        public void DrawNormalVectors()\n        {\n            foreach (MySmallShipGunBase gun in GetMountedWeaponsWithHarvesterAndDrill())\n            {\n                gun.DebugDrawNormalVectors();\n            }\n        }\n\n        /// <summary>\n        /// Close all weapons\n        /// </summary>\n        public void Close()\n        {\n            //foreach (MySmallShipGunBase gun in GetMountedWeaponstWithHarvesterAndDrill())\n            //{\n            //    gun.Close();\n            //}\n            foreach (MyWeaponSlot weaponSlot in WeaponSlots) \n            {\n                if (weaponSlot != null) \n                {\n                    weaponSlot.OnWeaponDismouting -= m_weaponDismounting;\n                    weaponSlot.OnWeaponMounting -= m_weaponMounting;\n                    weaponSlot.Close();                    \n                }\n            }\n            WeaponSlots.Clear();\n            WeaponSlots = null;\n\n            DrillSlot.OnWeaponDismouting -= m_weaponDismounting;\n            DrillSlot.OnWeaponMounting -= m_weaponMounting;\n            DrillSlot.Close();\n            DrillSlot = null;\n\n            HarvestingDeviceSlot.OnWeaponDismouting -= m_weaponDismounting;\n            HarvestingDeviceSlot.OnWeaponMounting -= m_weaponMounting;\n            HarvestingDeviceSlot.Close();\n            HarvestingDeviceSlot = null;\n\n            m_allMountedWeapons.Clear();\n            m_allMountedWeapons = null;\n\n            AmmoAssignments.Close();\n            AmmoAssignments = null;\n\n            AmmoInventoryItems.Close();\n            AmmoAssignments = null;\n\n            Ship.Inventory.OnInventoryContentChange -= OnInventoryContentChange;\n            Ship = null;\n\n            m_helperInventoryItems.Clear();\n            m_helperInventoryItems = null;\n\n            m_isClosed = true;\n        }\n\n        /// <summary>\n        /// Returns amount of ammo which is bind at fire key\n        /// </summary>\n        /// <param name=\"key\">Fire key</param>\n        /// <returns></returns>\n        public int GetAmountOfAmmo(MyMwcObjectBuilder_FireKeyEnum key)\n        {\n            if (AmmoInventoryItems.Count() == 0 || AmmoAssignments.Count() == 0) return 0;\n\n            //Get ammo type\n            MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum ammoType = AmmoAssignments.GetAmmoType(key);\n            if (ammoType == 0) return 0;\n\n            //Get amount\n            int result = 0;\n            foreach (MyInventoryItem ammoInventoryItem in AmmoInventoryItems.GetAmmoInventoryItems(ammoType))\n            {\n\n                result += (int)ammoInventoryItem.Amount;\n            }\n            return result;\n        }\n\n        /// <summary>\n        /// Returns weapons objectbuilders\n        /// </summary>\n        /// <returns></returns>\n        public List<MyMwcObjectBuilder_SmallShip_Weapon> GetWeaponsObjectBuilders(bool getExactCopy)\n        {\n            List<MyMwcObjectBuilder_SmallShip_Weapon> weaponsObjectBuilders = new List<MyMwcObjectBuilder_SmallShip_Weapon>();\n            foreach (MySmallShipGunBase weapon in GetMountedWeaponsWithHarvesterAndDrill())\n            {\n                weaponsObjectBuilders.Add((MyMwcObjectBuilder_SmallShip_Weapon)weapon.GetObjectBuilder(getExactCopy));\n            }\n            return weaponsObjectBuilders;\n        }\n\n        /// <summary>\n        /// Returns max weapon's slots from ship's model enum\n        /// </summary>\n        /// <param name=\"shipModelEnum\">Ship's model enum</param>\n        /// <returns>Max weapon's slots</returns>\n        public static int GetMaxWeaponsSlots(MyModelsEnum shipModelEnum) \n        {\n            int slots = 0;\n            List<MyModelSubObject> shipsSubObjects = MyModelSubObjects.GetModelSubObjects(shipModelEnum);\n            while (true) \n            {\n                string gunPrefix = GUN_PREFIX_NAME + (slots + 1).ToString(\"##00\");\n\n                // try find guns subobject by prefix (GUN_XX)\n                MyModelSubObject subObjectGun = shipsSubObjects.Find(x => x.Name.StartsWith(gunPrefix));\n\n                // if not found, then stop adding gun's positions, because there are no gun's subobjects\n                if (subObjectGun == null)\n                {\n                    break;\n                }\n                slots++;\n            }\n            return slots;\n        }\n\n        public bool IsShooting()\n        {\n            return m_keysToShot.Count > 0;\n        }\n\n        public bool HasMountedWeapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum weaponType)\n        {\n            foreach (var weapon in m_allMountedWeapons)\n\t        {\n                if (weapon.WeaponType == weaponType)\n\t            {\n                    return true;\n\t            }\n\t        }\n            return false;\n        }\n        #endregion\n\n        #region Private methods\n        /// <summary>\n        /// Initialize slots by small ship's model and preferred weapon's positions\n        /// </summary>\n        /// <param name=\"shipTypeProperties\">Type properties of ship</param>\n        /// <param name=\"maxSlots\">Maximum weapons that can be mounted</param>\n        private void InitSlots(MyShipTypeProperties shipTypeProperties, int maxSlots)\n        {\n            // initialize slot for drill\n            DrillSlot = new MyWeaponSlot();\n            DrillSlot.WeaponSubObject = MyModelSubObjects.GetModelSubObject(shipTypeProperties.Visual.ModelLod0Enum, DRILL_NAME);\n            DrillSlot.OnWeaponMounting += m_weaponMounting;\n            DrillSlot.OnWeaponDismouting += m_weaponDismounting;\n\n            // initialize slot for harvester\n            HarvestingDeviceSlot = new MyWeaponSlot();\n            HarvestingDeviceSlot.WeaponSubObject = MyModelSubObjects.GetModelSubObject(shipTypeProperties.Visual.ModelLod0Enum, HARVESTER_NAME);\n            HarvestingDeviceSlot.OnWeaponMounting += m_weaponMounting;\n            HarvestingDeviceSlot.OnWeaponDismouting += m_weaponDismounting;\n\n            // initialize slots for weapons\n            WeaponSlots = new List<MyWeaponSlot>();\n            AddGunsPositionsFromShipModel(shipTypeProperties.Visual.ModelLod0Enum, maxSlots);\n        }\n\n        /// <summary>\n        /// Creates gun's positions from ship's model. If find preferred position, then mark it as preffered.\n        /// </summary>\n        /// <param name=\"modelEnum\">Ship's model</param>\n        /// <param name=\"maxSlots\">Weapons maximum on ship</param>\n        /// <param name=\"maxWeapons\"> </param>\n        private void AddGunsPositionsFromShipModel(MyModelsEnum modelEnum, int maxSlots)\n        {\n            List<MyModelSubObject> shipsSubObjects = MyModelSubObjects.GetModelSubObjects(modelEnum);\n            if (shipsSubObjects != null)\n            {\n                for (int i = 0; i < maxSlots; i++)\n                {\n                    string gunPrefix = GUN_PREFIX_NAME + (i + 1).ToString(\"##00\");\n\n                    // try find guns subobject by prefix (GUN_XX)\n                    MyModelSubObject subObjectGun = shipsSubObjects.Find(x => x.Name.StartsWith(gunPrefix));\n\n                    // if not found, then stop adding gun's positions, because there are no gun's subobjects\n                    if (subObjectGun == null)\n                    {\n                        return;\n                    }\n\n                    // if not exists slot at this index, then create new one\n                    if (WeaponSlots.Count <= i)\n                    {\n                        MyWeaponSlot newWeaponSlot = new MyWeaponSlot();\n                        WeaponSlots.Add(newWeaponSlot);\n                        newWeaponSlot.OnWeaponMounting += m_weaponMounting;\n                        newWeaponSlot.OnWeaponDismouting += m_weaponDismounting;\n                    }\n\n                    WeaponSlots[i].WeaponSubObject = subObjectGun;\n\n                    // if this gun's position is preffered by any gun\n                    if (subObjectGun.Name.Length != gunPrefix.Length)\n                    {\n                        string prefferedGunName = subObjectGun.Name.Substring(gunPrefix.Length + 1, subObjectGun.Name.Length - gunPrefix.Length - 1);\n                        MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum weaponType;\n                        if (m_weaponsModelNames.TryGetValue(prefferedGunName, out weaponType))\n                        {\n                            WeaponSlots[i].WeaponSubObject.AuxiliaryParam0 = (int)weaponType;\n                        }\n                    }\n                }\n            }\n        }\n\n        /// <summary>\n        /// Returns first empty slot by preferred position, if not founded then returns first empty slot\n        /// </summary>\n        /// <param name=\"weaponBuilder\"></param>\n        /// <returns></returns>\n        private MyWeaponSlot GetEmptySlotToAdd(MyMwcObjectBuilder_SmallShip_Weapon weaponBuilder)\n        {\n            // first, try to find a slot that fits both type and location\n            for (int i = 0; i < WeaponSlots.Count; i++)\n            {\n                if (!WeaponSlots[i].IsMounted() &&\n                    WeaponSlots[i].GetPreferedWeaponType() == weaponBuilder.WeaponType && \n                    WeaponSlots[i].IsSlotEligibleForLocation(GetSlotLocation(weaponBuilder)))\n                {\n                    return WeaponSlots[i];\n                }\n            }\n\n            // then, try to find a slot that fits the location\n            for (int i = 0; i < WeaponSlots.Count; i++)\n            {\n                if (!WeaponSlots[i].IsMounted() &&\n                    WeaponSlots[i].IsSlotEligibleForLocation(GetSlotLocation(weaponBuilder)))\n                {\n                    return WeaponSlots[i];\n                }\n            }\n\n            /*\n            // if preffered weapon's slot not founded, then try find first empty slot\n            for (int i = 0; i < WeaponSlots.Count; i++)\n            {\n                if (!WeaponSlots[i].IsMounted())\n                {\n                    return WeaponSlots[i];\n                }\n            }\n            */\n\n            return null;\n        }\n\n        MySlotLocationEnum GetSlotLocation(MyMwcObjectBuilder_SmallShip_Weapon weaponBuilder)\n        {\n            if (weaponBuilder.AutoMountLeft)\n            {\n                return MySlotLocationEnum.LeftSide;\n            }\n\n            if (weaponBuilder.AutoMountRight)\n            {\n                return MySlotLocationEnum.RightSide;\n            }\n\n            return MySlotLocationEnum.None;\n        }\n\n        public int GetNormalWeaponCount(MySlotLocationEnum? location)\n        {\n            int result = 0;\n\n            foreach (var slot in WeaponSlots)\n            {\n                if ((location == null || slot.SlotLocation == location.Value) &&\n                    slot.IsMounted() &&\n                    slot.MountedWeapon.IsNormalWeapon)\n                {\n                    result++;\n                }\n            }\n\n            return result;\n        }\n\n        /// <summary>\n        /// Adds weapon\n        /// </summary>\n        /// <param name=\"weapon\">Weapon</param>\n        /// <param name=\"weaponObjectBuilder\">Weapon's object builder</param>\n        /// <param name=\"maxWeapons\"> </param>\n        private void AddWeapon(MySmallShipGunBase weapon, MyMwcObjectBuilder_SmallShip_Weapon weaponObjectBuilder)\n        {\n            SetAutoMountIfExceededLimit(weaponObjectBuilder);\n\n            MyWeaponSlot emptyWeaponSlot = GetEmptySlotToAdd(weaponObjectBuilder);\n            if (emptyWeaponSlot != null)\n            {\n                switch (emptyWeaponSlot.SlotLocation)\n                {\n                    case MySlotLocationEnum.None:\n                        break;\n                    case MySlotLocationEnum.LeftSide:\n                        weaponObjectBuilder.SetAutoMountLeft();\n                        break;\n                    case MySlotLocationEnum.RightSide:\n                        weaponObjectBuilder.SetAutoMountRight();\n                        break;\n                    default:\n                        throw new ArgumentOutOfRangeException();\n                }\n\n                AddWeaponToSlot(emptyWeaponSlot, weapon, weaponObjectBuilder);\n            }\n        }\n\n        void SetAutoMountIfExceededLimit(MyMwcObjectBuilder_SmallShip_Weapon weaponObjectBuilder)\n        {\n            if (!weaponObjectBuilder.IsNormalWeapon)\n            {\n                return;\n            }\n\n            const int universalLauncherCount = 2;\n            var maxNormalWeapons = Ship.ShipTypeProperties.GamePlay.MaxWeapons - universalLauncherCount;\n            var maxNormalWeaponsOnOneWing = maxNormalWeapons / 2;\n\n            var tooManyLeft = GetNormalWeaponCount(MySlotLocationEnum.LeftSide) >= maxNormalWeaponsOnOneWing;\n            var tooManyRight = GetNormalWeaponCount(MySlotLocationEnum.RightSide) >= maxNormalWeaponsOnOneWing;\n\n            if (tooManyLeft && tooManyRight)\n            {\n                weaponObjectBuilder.SetAutoMount();\n                return;\n            }\n\n            if (tooManyLeft)\n            {\n                weaponObjectBuilder.SetAutoMountRight();\n            }\n\n            if (tooManyRight)\n            {\n                weaponObjectBuilder.SetAutoMountLeft();\n            }\n        }\n\n        /// <summary>\n        /// Adds drill\n        /// </summary>\n        /// <param name=\"weapon\">Drill</param>\n        /// <param name=\"weaponObjectBuilder\">Drill's object builder</param>\n        private void AddDrill(MyDrillBase drill, MyMwcObjectBuilder_SmallShip_Weapon drillObjectBuilder)\n        {\n            if (DrillSlot.IsMounted())\n            {\n                RemoveWeaponFromSlotAndFromShip(DrillSlot);\n            }\n            AddWeaponToSlot(DrillSlot, drill, drillObjectBuilder);\n        }\n\n        /// <summary>\n        /// Adds harvesting device\n        /// </summary>\n        /// <param name=\"weapon\">Harvesting device</param>\n        /// <param name=\"weaponObjectBuilder\">Harvesting device's object builder</param>\n        private void AddHarvestingDevice(MyHarvestingDevice harvestingDevice, MyMwcObjectBuilder_SmallShip_Weapon harsvestingDeviceObjectBuilder)\n        {\n            if (HarvestingDeviceSlot.IsMounted())\n            {\n                RemoveWeaponFromSlotAndFromShip(HarvestingDeviceSlot);\n            }\n            AddWeaponToSlot(HarvestingDeviceSlot, harvestingDevice, harsvestingDeviceObjectBuilder);\n        }\n\n        /// <summary>\n        /// Adds weapon to slot\n        /// </summary>\n        /// <param name=\"weaponSlot\">Weapon's slot</param>\n        /// <param name=\"weapon\">Weapon</param>\n        /// <param name=\"weaponObjectBuilder\">Weapon's object builder</param>\n        private void AddWeaponToSlot(MyWeaponSlot weaponSlot, MySmallShipGunBase weapon, MyMwcObjectBuilder_SmallShip_Weapon weaponObjectBuilder)\n        {\n            weaponSlot.InitAndMount(weapon, weaponObjectBuilder, Ship);\n        }\n\n        /// <summary>\n        /// Removes weapons from slot and from ship child entities\n        /// </summary>\n        /// <param name=\"weaponSlot\">Weapon's slot</param>\n        private void RemoveWeaponFromSlotAndFromShip(MyWeaponSlot weaponSlot)\n        {\n            weaponSlot.MountedWeapon.MarkForClose();\n            weaponSlot.Dismount();\n        }\n\n        private void OnWeaponMounting(MyWeaponSlot sender, MySmallShipGunBase weapon)\n        {\n            m_allMountedWeapons.Add(weapon);\n        }\n\n        private void OnWeaponDismounting(MyWeaponSlot sender, MySmallShipGunBase weapon)\n        {\n            m_allMountedWeapons.Remove(weapon);\n        }\n\n        /// <summary>\n        /// Fills ammo inventory items from ship inventory\n        /// </summary>\n        private void FillAmmoInventoryItemsFromInventory()\n        {\n            m_helperInventoryItems.Clear();\n            Ship.Inventory.GetInventoryItems(ref m_helperInventoryItems, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, null);\n            AmmoInventoryItems.Init(m_helperInventoryItems);\n        }\n\n        /// <summary>\n        /// Calls when inventory content changed, and then update ammo inventory items from actual inventory content\n        /// </summary>\n        /// <param name=\"sender\"></param>\n        private void OnInventoryContentChange(MyInventory sender)\n        {\n            FillAmmoInventoryItemsFromInventory();\n        }\n\n        public void StopAllSounds()\n        {\n            foreach (var weapon in m_allMountedWeapons)\n            {\n                weapon.StopAllSounds();\n            }\n        }\n\n        ///// <summary>\n        ///// Called when [deserialized].\n        ///// </summary>\n        //[OnDeserialized]\n        //private void OnDeserialized()\n        //{\n        //    AmmoInventoryItems = new MyAmmoInventoryItems();\n        //    Ship.Inventory.OnInventoryContentChange += OnInventoryContentChange;\n        //    FillAmmoInventoryItemsFromInventory();\n        //}\n        #endregion\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Weapons/MyWeaponSlot.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Globalization;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Models;\nusing MinerWarsMath;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing System.Reflection;\nusing KeenSoftwareHouse.Library.Extensions;\nusing SysUtils.Utils;\nusing System.Diagnostics;\n\nnamespace MinerWars.AppCode.Game.Entities.Weapons\n{\n    delegate void OnWeaponMounting(MyWeaponSlot sender, MySmallShipGunBase weapon);\n    delegate void OnWeaponDismouting(MyWeaponSlot sender, MySmallShipGunBase weapon);\n\n    public enum MySlotLocationEnum\n    {\n        None,\n        LeftSide,\n        RightSide,\n    }\n\n    class MyWeaponSlot\n    {\n        private const string SUB_OBJECT_Y_OFFSET_KEY = \"YOffset\";\n        private const string SUB_OBJECT_Z_OFFSET_KEY = \"ZOffset\";\n        const int MINIMUM_DISTANCE_FOR_SIDE_SLOT = 1;\n\n        private MySmallShipGunBase m_mountedWeapon;\n\n        /// <summary>\n        /// Mounted weapon in this slot\n        /// </summary>\n        public MySmallShipGunBase MountedWeapon \n        {\n            get \n            {\n                return m_mountedWeapon;\n            }\n            private set \n            {\n                m_mountedWeapon = value;\n            }\n        }\n\n        MyModelSubObject m_weaponSubObject;\n\n        /// <summary>\n        /// Weapon's subobject\n        /// </summary>\n        public MyModelSubObject WeaponSubObject\n        {\n            get { return m_weaponSubObject; }\n            set\n            {\n                m_weaponSubObject = value;\n                if (value != null)\n                {\n                    UpdateSlotLocation();\n                }\n            }\n        }\n\n        public string SlotDescriptor\n        {\n            get { return WeaponSubObject.Name; }\n        }\n\n        public MySlotLocationEnum SlotLocation { get; set; }\n\n        void UpdateSlotLocation()\n        {\n            if (WeaponSubObject.Position.X > 0.95f)\n            {\n                SlotLocation = MySlotLocationEnum.RightSide;\n            }\n            else if (WeaponSubObject.Position.X < -0.95f)\n            {\n                SlotLocation = MySlotLocationEnum.LeftSide;\n            }\n        }\n\n        public MyWeaponSlot()\n        {\n\n        }\n\n        /// <summary>\n        /// Called when weapon mounted on slot\n        /// </summary>\n        public event OnWeaponMounting OnWeaponMounting;\n\n        /// <summary>\n        /// Called when weapon dismounted from slot\n        /// </summary>\n        public event OnWeaponDismouting OnWeaponDismouting;\n\n        /// <summary>\n        /// Returns true if weapon is mounted in this slot\n        /// </summary>\n        /// <returns></returns>\n        public bool IsMounted()\n        {\n            return MountedWeapon != null;\n        }\n\n        /// <summary>\n        /// Dismounts weapon from this slot\n        /// </summary>\n        public void Dismount()\n        {\n            if (OnWeaponDismouting != null)\n            {\n                OnWeaponDismouting(this, MountedWeapon);\n            }\n            MountedWeapon = null;\n        }\n\n        /// <summary>\n        /// Mounts weapon to this slot\n        /// </summary>\n        /// <param name=\"weapon\"></param>\n        public void Mount(MySmallShipGunBase weapon)\n        {\n            if (OnWeaponMounting != null)\n            {\n                OnWeaponMounting(this, weapon);\n            }\n            MountedWeapon = weapon;            \n        }\n\n        /// <summary>\n        /// Inits weapon and mount to this slot\n        /// </summary>\n        /// <param name=\"weapon\">Weapon</param>\n        /// <param name=\"objectBuilder\">Weapon's objectbuilder</param>\n        /// <param name=\"parentShip\">Parent ship</param>\n        public void InitAndMount(MySmallShipGunBase weapon, MyMwcObjectBuilder_SmallShip_Weapon objectBuilder, MySmallShip parentShip)\n        {\n            Debug.Assert(WeaponSubObject != null);\n            weapon.Init(null, parentShip, GetPosition(), GetForwardVector(), GetUpVector(), objectBuilder);\n            float? yOffset = GetOffsetFromWeaponSubObject(SUB_OBJECT_Y_OFFSET_KEY);\n            if (yOffset != null)\n            {\n                weapon.YOffset = yOffset.Value;\n            }\n\n            float? zOffset = GetOffsetFromWeaponSubObject(SUB_OBJECT_Z_OFFSET_KEY);\n            if (zOffset != null)\n            {\n                weapon.ZOffset = zOffset.Value;\n            }\n            Mount(weapon);\n        }\n\n        /// <summary>\n        /// Returns z-offset from weapon's subobject\n        /// </summary>\n        /// <param name=\"offsetKey\"> </param>\n        /// <returns></returns>\n        private float? GetOffsetFromWeaponSubObject(string offsetKey)\n        {\n            Debug.Assert(WeaponSubObject != null);\n            if (WeaponSubObject != null && WeaponSubObject.CustomData != null)\n            {\n                object offsetValue;\n                if (WeaponSubObject.CustomData.TryGetValue(offsetKey, out offsetValue)/* && zOffsetValue is float*/)\n                {\n                    try\n                    {\n                        CultureInfo ci = (CultureInfo) CultureInfo.CurrentCulture.Clone();\n                        ci.NumberFormat.CurrencyDecimalSeparator = \".\";\n                        return float.Parse(offsetValue.ToString(), NumberStyles.Any, ci);                                                \n                    }\n                    catch\n                    {\n                        return null;\n                    }\n                }\n            }\n            return null;\n        }\n\n        /// <summary>\n        /// Returns weapon's position from weapon's subobject\n        /// </summary>\n        /// <returns></returns>\n        private Vector3 GetPosition()\n        {\n            Debug.Assert(WeaponSubObject != null);\n            if (WeaponSubObject == null)\n                return Vector3.Zero;\n            return WeaponSubObject.Position;\n        }\n\n        /// <summary>\n        /// Returns up vector from weapon's subobject\n        /// </summary>\n        /// <returns></returns>\n        private Vector3 GetUpVector()\n        {\n            Debug.Assert(WeaponSubObject != null);\n            if (WeaponSubObject == null)\n                return Vector3.Up;\n            return WeaponSubObject.UpVector.Value;            \n        }\n\n        /// <summary>\n        /// Returns forward vector from weapon's subobject\n        /// </summary>\n        /// <returns></returns>\n        private Vector3 GetForwardVector()\n        {\n            Debug.Assert(WeaponSubObject != null);\n            if (WeaponSubObject == null)\n                return Vector3.Forward;\n            return WeaponSubObject.ForwardVector.Value;\n        }\n\n        /// <summary>\n        /// Returns prefered weapon's type in this slot\n        /// </summary>\n        /// <returns></returns>\n        public MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum GetPreferedWeaponType()\n        {\n            Debug.Assert(WeaponSubObject != null);\n            return (MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum)WeaponSubObject.AuxiliaryParam0;            \n        }\n\n        /// <summary>\n        /// Returns weapon's object builder\n        /// </summary>\n        /// <returns></returns>\n        public MyMwcObjectBuilder_SmallShip_Weapon GetWeaponObjectBuilder(bool getExactCopy)\n        {\n            if (MountedWeapon == null)\n            {\n                return null;\n            }\n            else\n            {\n                return (MyMwcObjectBuilder_SmallShip_Weapon)MountedWeapon.GetObjectBuilder(getExactCopy);\n            }\n        }\n\n        public void Close() \n        {\n            if (MountedWeapon != null) \n            {\n                MountedWeapon.Close();\n                MountedWeapon = null;\n            }\n            WeaponSubObject = null;\n        }\n\n        public bool IsSlotEligibleForLocation(MySlotLocationEnum slotLocation)\n        {\n            if (slotLocation == MySlotLocationEnum.None)\n            {\n                return true;\n            }\n\n            return slotLocation == this.SlotLocation;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Weapons/Projectile/MyProjectile.cs",
    "content": "﻿using MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.TransparentGeometry.Particles;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.Game.Entities.SubObjects;\nusing MinerWars.AppCode.Physics;\nusing MinerWars.AppCode.Game.Physics;\n\nnamespace MinerWars.AppCode.Game.Entities.Weapons\n{\n    using Audio;\n    using Cockpit;\n    using CommonLIB.AppCode.ObjectBuilders.Object3D;\n    using CommonLIB.AppCode.Utils;\n    using Decals;\n    using MinerWarsMath;\n    using TransparentGeometry;\n    using UniversalLauncher;\n    using Utils;\n    using System;\n    using Prefabs;\n    using MinerWars.AppCode.Game.Managers.Session;\n    using MinerWars.AppCode.Game.Gameplay;\n    using MinerWars.AppCode.Game.Entities.Ships.AI;\n    using MinerWars.AppCode.Game.Sessions;\n\n    internal delegate void MyCustomProjectileMethod(MySmallShip bot, float health);\n    internal delegate void MyCustomHitParticlesMethod(ref Vector3 hitPoint, ref Vector3 normal, ref Vector3 direction, MyEntity physObject, MyEntity weapon, MyEntity ownerEntity = null);\n    internal delegate void MyCustomHitMaterialMethod(ref Vector3 hitPoint, ref Vector3 normal, ref Vector3 direction, MyEntity physObject, MySurfaceImpactEnum surfaceImpact, MyEntity weapon);\n\n    public enum MySurfaceImpactEnum\n    {\n        METAL,\n        DESTRUCTIBLE,\n        INDESTRUCTIBLE,\n    }\n\n    class MyProjectile\n    {\n        //  Projectiles are killes in two states. First we get collision/timeout in update, but still need to draw\n        //  trail polyline, so we can't remove it from buffer. Second state is after 'killed' projectile is drawn\n        //  and only then we remove it from buffer.\n        enum MyProjectileStateEnum : byte\n        {\n            ACTIVE,\n            KILLED,\n            KILLED_AND_DRAWN\n        }\n\n        const int CHECK_INTERSECTION_INTERVAL = 5; //projectile will check for intersection each n-th frame with n*longer line\n\n        class MyProjectileGroupInfo\n        {\n            public bool Killed;\n        }\n\n        //  IMPORTANT: This class isn't realy inicialized by constructor, but by Start()\n        //  So don't initialize members here, do it in Start()\n\n        MyProjectileStateEnum m_state;\n        Vector3 m_origin;\n        Vector3 m_velocity;\n        Vector3 m_externalVelocity;\n        Vector3 m_directionNormalized;\n        float m_speed;\n        float m_externalAddition;\n        float m_maxTrajectory;\n\n        Vector3 m_position;\n        MyEntity m_ignorePhysObject;\n        MyEntity m_weapon;\n\n        public MyTransparentMaterialEnum? FrontBillboardMaterial = null;\n        public float FrontBillboardSize = 1;\n        public bool BlendByCameraDirection = false;\n        public float LengthMultiplier = 1;\n\n        //  Type of this projectile\n        MyAmmoProperties m_ammoProperties;\n\n        public MyEntity OwnerEntity = null;\n\n        /*\n        MyCustomHitParticlesMethod m_particlesMethod;\n        MyCustomHitMaterialMethod m_materialMethod;\n        float m_maxTrajectoryLength;\n        Vector3 m_trailColor;\n        float m_healthDamage;\n        bool m_explosive;\n         */ \n        float m_thicknessMultiplier;\n\n        bool m_groupStart;\n\n        public bool IsDummy { get; private set; }\n\n        int m_checkIntersectionIndex; //actual index to keep distributed checking intersection\n        static int checkIntersectionCounter = 0; //counter of started projectiles\n        //Vector3 m_positionToCheck; //position which needs to be tested for line intersection\n        bool m_positionChecked;\n\n        MyProjectileGroupInfo m_ownGroup = new MyProjectileGroupInfo();\n        MyProjectileGroupInfo m_sharedGroup;\n        static MyProjectileGroupInfo LastProjectileGroup;\n\n        MyParticleEffect m_trailEffect;\n    \n        //  This method realy initiates/starts the missile\n        //  IMPORTANT: Direction vector must be normalized!\n        public void Start(MyAmmoProperties ammoProperties, MyEntity ignoreEntity, Vector3 origin, Vector3 initialVelocity, Vector3 directionNormalized, \n            bool groupStart, float thicknessMultiplier, MyEntity weapon\n            )\n        {\n            if (MySession.Is25DSector)\n            {\n                directionNormalized.Y = 0;\n                directionNormalized.Normalize();\n                initialVelocity.Y = 0;\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Projectile.Start\");\n            m_ammoProperties = ammoProperties;\n            m_state = MyProjectileStateEnum.ACTIVE;\n            m_ignorePhysObject = ignoreEntity;\n            m_origin = origin;\n            m_position = origin;\n            m_externalAddition = 1.0f;\n            m_weapon = weapon;\n\n            IsDummy = weapon != null && weapon.IsDummy;\n\n            LengthMultiplier = 1;\n            FrontBillboardMaterial = null;\n            FrontBillboardSize = 1;\n            BlendByCameraDirection = false;\n\n            Vector3? correctedDirection = null;\n\n            if (MyGameplayConstants.GameplayDifficultyProfile.EnableAimCorrection)\n            {\n                MyEntity entityToCheck;\n                if (MyGuiScreenGamePlay.Static.ControlledEntity is MyPrefabLargeWeapon)\n                {\n                    entityToCheck = (MyGuiScreenGamePlay.Static.ControlledEntity as MyPrefabLargeWeapon).GetGun();\n                }\n                else\n                {\n                    entityToCheck = MyGuiScreenGamePlay.Static.ControlledEntity;\n                }\n                // TODO: Make proper test that source off projectile is player ship, testing ignore object is STUPID!\n                if (m_ammoProperties.AllowAimCorrection && (ignoreEntity == entityToCheck)) // Autoaim only available for player\n                {\n                    MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Projectile.Start autoaim generic\");\n                    //Intersection ignores children of \"ignoreEntity\", thus we must not hit our own barrels\n                    correctedDirection = MyEntities.GetDirectionFromStartPointToHitPointOfNearestObject(ignoreEntity, origin, m_ammoProperties.MaxTrajectory);\n                    MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n                }\n            }\n\n            if (correctedDirection != null)\n            {\n                m_directionNormalized = correctedDirection.Value;\n            }\n            else\n            {\n                m_directionNormalized = directionNormalized;\n            }\n\n            m_speed = ammoProperties.DesiredSpeed * (ammoProperties.SpeedVar > 0.0f ? MyMwcUtils.GetRandomFloat(1 - ammoProperties.SpeedVar, 1 + ammoProperties.SpeedVar) : 1.0f);\n            m_externalVelocity = initialVelocity;\n            m_velocity = m_directionNormalized * m_speed;\n            m_maxTrajectory = ammoProperties.MaxTrajectory * MyMwcUtils.GetRandomFloat(0.8f, 1.2f); // +/- 20%\n\n           \n            m_thicknessMultiplier = thicknessMultiplier;\n\n            m_checkIntersectionIndex = checkIntersectionCounter % CHECK_INTERSECTION_INTERVAL;\n            checkIntersectionCounter += 3;\n            m_positionChecked = false;\n            m_groupStart = groupStart;\n\n            if (groupStart)\n            {\n                m_trailEffect = MyParticlesManager.CreateParticleEffect((int)MyParticleEffectsIDEnum.Trail_Shotgun);\n                m_trailEffect.AutoDelete = false;\n                m_trailEffect.WorldMatrix = Matrix.CreateTranslation(m_position);\n            }\n\n            if (groupStart)\n            {\n                LastProjectileGroup = m_ownGroup;\n                m_ownGroup.Killed = false;\n            }\n\n            if (LastProjectileGroup != null && LastProjectileGroup.Killed == false)\n            {\n                m_sharedGroup = LastProjectileGroup;\n            }\n            else\n                m_sharedGroup = null;\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        \n        //  Update position, check collisions, etc.\n        //  Return false if projectile dies/timeouts in this tick.\n        public bool Update()\n        {\n            //  Projectile was killed , but still not last time drawn, so we don't need to do update (we are waiting for last draw)\n            if (m_state == MyProjectileStateEnum.KILLED) \n                return true;\n\n            //  Projectile was killed and last time drawn, so we can finally remove it from buffer\n            if (m_state == MyProjectileStateEnum.KILLED_AND_DRAWN)\n            {\n                if (m_trailEffect != null)\n                {\n                    // stop the trail effect\n                    m_trailEffect.Stop();\n                    m_trailEffect = null;\n                }\n\n                return false;\n            }\n\n            Vector3 position = m_position;\n            m_position += m_velocity * MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS;\n            m_velocity = m_externalVelocity * m_externalAddition + m_directionNormalized * m_speed;\n            if (m_externalAddition < 1.0f)\n                m_externalAddition *= 0.5f;\n\n            //  Distance timeout\n            float trajectoryLength = Vector3.Distance(m_position, m_origin);\n            if (trajectoryLength >= m_maxTrajectory)\n            {\n                if (m_trailEffect != null)\n                {\n                    // stop the trail effect\n                    m_trailEffect.Stop();\n                    m_trailEffect = null;\n                }\n\n                m_state = MyProjectileStateEnum.KILLED;\n                return true;\n            }\n\n            if (m_trailEffect != null)\n                m_trailEffect.WorldMatrix = Matrix.CreateTranslation(m_position);\n\n            m_checkIntersectionIndex++;\n            m_checkIntersectionIndex = m_checkIntersectionIndex % CHECK_INTERSECTION_INTERVAL;\n                                 \n            //check only each n-th intersection\n            if (m_checkIntersectionIndex != 0)\n                return true;\n\n            //  Calculate hit point, create decal and throw debris particles\n            Vector3 lineEndPosition = position + CHECK_INTERSECTION_INTERVAL * (m_velocity * MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS);\n\n            MyLine line = new MyLine(m_positionChecked ? position : m_origin, lineEndPosition, true);\n            m_positionChecked = true;\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyEntities.GetIntersectionWithLine()\");\n            MyIntersectionResultLineTriangleEx? intersection = MyEntities.GetIntersectionWithLine(ref line, m_ignorePhysObject, null, false);\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            MyEntity physObject = intersection != null ? intersection.Value.Entity : null;\n            if (physObject != null)\n            {\n                while (physObject.Physics == null && physObject.Parent != null)\n                {\n                    physObject = physObject.Parent;\n                }\n            }\n\n            if ((intersection != null) && (physObject != null) && (physObject.Physics.CollisionLayer != MyConstants.COLLISION_LAYER_UNCOLLIDABLE) && m_ignorePhysObject != physObject)\n            {\n                MyIntersectionResultLineTriangleEx intersectionValue = intersection.Value;\n\n                bool isPlayerShip = MySession.PlayerShip == physObject;\n\n                MyMaterialType materialType = isPlayerShip ? MyMaterialType.PLAYERSHIP : physObject.Physics.MaterialType;\n\n                //material properties\n                MyMaterialTypeProperties materialProperties = MyMaterialsConstants.GetMaterialProperties(materialType);\n\n                bool isProjectileGroupKilled = false;\n\n                if (m_sharedGroup != null)\n                {\n                    isProjectileGroupKilled = m_sharedGroup.Killed;\n                    m_sharedGroup.Killed = true;\n                }\n\n                if (!isProjectileGroupKilled)\n                {\n                    //  Play bullet hit cue \n                    MyAudio.AddCue3D(m_ammoProperties.IsExplosive ? materialProperties.ExpBulletHitCue : materialProperties.BulletHitCue, intersectionValue.IntersectionPointInWorldSpace, Vector3.Zero, Vector3.Zero, Vector3.Zero);\n                }\n\n                float decalAngle = MyMwcUtils.GetRandomRadian();\n\n                //  If we hit the glass of a miner ship, we need to create special bullet hole decals\n                //  drawn from inside the cockpit and change phys object so rest of the code will think we hit the parent\n                //  IMPORTANT: Intersection between projectile and glass is calculated only for mining ship in which player sits. So for enemies this will be never calculated.\n                if (intersection.Value.Entity is MyCockpitGlassEntity)\n                {\n                    if (!isProjectileGroupKilled)\n                    {\n                        MyCockpitGlassDecalTexturesEnum bulletHoleDecalTexture;\n                        float bulletHoleDecalSize;\n\n                        if (MyMwcUtils.GetRandomBool(3))\n                        {\n                            bulletHoleDecalTexture = MyCockpitGlassDecalTexturesEnum.BulletHoleOnGlass;\n                            bulletHoleDecalSize = 0.25f;\n                        }\n                        else\n                        {\n                            bulletHoleDecalTexture = MyCockpitGlassDecalTexturesEnum.BulletHoleSmallOnGlass;\n                            bulletHoleDecalSize = 0.1f;\n                        }\n\n                        //  Place bullet hole decal on player's cockpit glass (seen from inside the ship)\n                        MyCockpitGlassDecals.Add(bulletHoleDecalTexture, bulletHoleDecalSize, decalAngle, 1.0f, ref intersectionValue, false);\n\n                        //  Create hit particles throwed into the cockpit (it's simulation of broken glass particles)\n                        //  IMPORTANT: This particles will be relative to miner ship, so we create them in object space coordinates and update them by object WorldMatrix every time we draw them\n                        //MyParticleEffects.CreateHitParticlesGlass(ref intersectionValue.IntersectionPointInObjectSpace, ref intersectionValue.NormalInWorldSpace, ref line.Direction, physObject.Parent);\n                    }\n                }\n\n                //  If this was \"mine\", it must explode\n                else if (physObject is MyMineBase)\n                {\n                    m_state = MyProjectileStateEnum.KILLED;\n                    if (!IsDummy)\n                        (physObject as MyAmmoBase).Explode();\n                    return true;\n                }\n\n                //  If this was missile, cannon shot, it must explode if it is not mine missile\n                else if (physObject is MyAmmoBase)\n                {\n                    if (((MyAmmoBase)physObject).OwnerEntity == m_ignorePhysObject)\n                    {\n                        m_state = MyProjectileStateEnum.KILLED;\n                        if (!IsDummy)\n                            (physObject as MyAmmoBase).Explode();\n                        return true;\n                    }\n                }\n\n                else if (this.OwnerEntity is MySmallShip && (MySmallShip)this.OwnerEntity == MySession.PlayerShip && physObject is MyStaticAsteroid && !physObject.IsDestructible)\n                {\n                    if (this.m_ammoProperties.IsExplosive || (this.m_ammoProperties.AmmoType == MyAmmoType.Explosive && this.m_weapon is Weapons.MyShotGun))\n                    {\n                        HUD.MyHud.ShowIndestructableAsteroidNotification();\n                    }\n                }\n\n                else if (!isProjectileGroupKilled && !isPlayerShip)\n                {\n                    //  Create smoke and debris particle at the place of voxel/model hit\n                    m_ammoProperties.OnHitParticles(ref intersectionValue.IntersectionPointInWorldSpace, ref intersectionValue.Triangle.InputTriangleNormal, ref line.Direction, physObject, m_weapon, OwnerEntity);\n\n                    MySurfaceImpactEnum surfaceImpact;\n                    if (intersectionValue.Entity is MyVoxelMap)\n                    {\n                        var voxelMap = intersectionValue.Entity as MyVoxelMap;\n                        var voxelCoord = voxelMap.GetVoxelCenterCoordinateFromMeters(ref intersectionValue.IntersectionPointInWorldSpace);\n                        var material = voxelMap.GetVoxelMaterial(ref voxelCoord);\n                        if (material == MyMwcVoxelMaterialsEnum.Indestructible_01 ||\n                            material == MyMwcVoxelMaterialsEnum.Indestructible_02 ||\n                            material == MyMwcVoxelMaterialsEnum.Indestructible_03 ||\n                            material == MyMwcVoxelMaterialsEnum.Indestructible_04 ||\n                            material == MyMwcVoxelMaterialsEnum.Indestructible_05_Craters_01)\n                            surfaceImpact = MySurfaceImpactEnum.INDESTRUCTIBLE;\n                        else\n                            surfaceImpact = MySurfaceImpactEnum.DESTRUCTIBLE;\n                    }\n                    else if (intersectionValue.Entity is MyStaticAsteroid)\n                        surfaceImpact = MySurfaceImpactEnum.INDESTRUCTIBLE;\n                    else surfaceImpact = MySurfaceImpactEnum.METAL;\n\n                    m_ammoProperties.OnHitMaterialSpecificParticles(ref intersectionValue.IntersectionPointInWorldSpace, ref intersectionValue.Triangle.InputTriangleNormal, ref line.Direction, physObject, surfaceImpact, m_weapon);\n                }\n\n                if (!(physObject is MyExplosionDebrisBase) && physObject != MySession.PlayerShip)\n                {\n                    //  Decal size depends on material. But for mining ship create smaller decal as original size looks to large on the ship.\n                    float decalSize = MyMwcUtils.GetRandomFloat(materialProperties.BulletHoleSizeMin,\n                                                                materialProperties.BulletHoleSizeMax);\n\n                    //  Place bullet hole decal\n                    float randomColor = MyMwcUtils.GetRandomFloat(0.5f, 1.0f);\n\n                    MyDecals.Add(\n                        materialProperties.BulletHoleDecal,\n                        decalSize,\n                        decalAngle,\n                        new Vector4(randomColor, randomColor, randomColor, 1),\n                        false,\n                        ref intersectionValue, \n                        0.0f,\n                        m_ammoProperties.DecalEmissivity, MyDecalsConstants.DECAL_OFFSET_BY_NORMAL);\n                }\n\n                if (!(physObject is MyVoxelMap) && !IsDummy)\n                {\n                    ApplyProjectileForce(physObject, intersectionValue.IntersectionPointInWorldSpace, m_directionNormalized, isPlayerShip);\n                }\n\n\n                //  If this object is miner ship, then shake his head little bit\n                if (physObject is MySmallShip && !IsDummy)\n                {\n                    MySmallShip minerShip = (MySmallShip)physObject;\n                    minerShip.IncreaseHeadShake(MyHeadShakeConstants.HEAD_SHAKE_AMOUNT_AFTER_PROJECTILE_HIT);\n                }\n\n\n\n                //Handle damage\n\n                MyEntity damagedObject = intersectionValue.Entity;\n\n                // not a very nice way to damage actual prefab associated with the large ship weapon (if MyPrefabLargeWeapon is reworked, it might change)\n                if (damagedObject is MyLargeShipBarrelBase)\n                {\n                    damagedObject = damagedObject.Parent;\n                }\n                if (damagedObject is MyLargeShipGunBase)\n                {\n                    MyLargeShipGunBase physObj = damagedObject as MyLargeShipGunBase;\n                    if (physObj.PrefabParent != null)\n                        damagedObject = physObj.PrefabParent;\n                }\n\n                //  Decrease health of stricken object\n                if (!IsDummy)\n                {\n                    damagedObject.DoDamage(m_ammoProperties.HealthDamage, m_ammoProperties.ShipDamage, m_ammoProperties.EMPDamage, m_ammoProperties.DamageType, m_ammoProperties.AmmoType, m_ignorePhysObject);\n                    if (MyMultiplayerGameplay.IsRunning)\n                    {\n                        var ammo = MyAmmoConstants.FindAmmo(m_ammoProperties);\n                        MyMultiplayerGameplay.Static.ProjectileHit(damagedObject, intersectionValue.IntersectionPointInWorldSpace, this.m_directionNormalized, ammo, this.OwnerEntity);\n                    }\n                }\n\n                if (m_trailEffect != null)\n                {\n                    // stop the trail effect\n                    m_trailEffect.Stop();\n                    m_trailEffect = null;\n                }\n\n                //  Kill this projectile (set the position to intersection point, so we draw trail polyline only up to this point)\n                m_position = intersectionValue.IntersectionPointInWorldSpace;\n                m_state = MyProjectileStateEnum.KILLED;\n\n                return true;\n            }\n                \n            return true;\n        }\n\n        public static void ApplyProjectileForce(MyEntity physObject, Vector3 intersectionPosition, Vector3 normalizedDirection, bool isPlayerShip)\n        {\n            float impulseMultiplier = isPlayerShip ? MyMinerShipConstants.MINER_SHIP_PLAYER_PROJECTILE_HIT_MULTIPLIER : (MyMinerShipConstants.MINER_SHIP_PROJECTILE_HIT_MULTIPLIER);\n\n            // To make it look good, bots gets impulse which rotates them\n            if (physObject is MySmallShipBot)\n            {\n                // These are constants to make proper bot behaviour to physics\n                const float torqueMult = 4;\n                const float impulseMult = 20;\n\n                impulseMultiplier *= impulseMult;\n                var centerToIntersection = intersectionPosition - physObject.GetPosition();\n                intersectionPosition = physObject.GetPosition() + centerToIntersection * torqueMult;\n            }\n\n            //  If we hit model that belongs to physic object, apply some force to it (so it's thrown in the direction of shoting)\n            physObject.Physics.AddForce(\n                    MyPhysicsForceType.APPLY_WORLD_IMPULSE_AND_WORLD_ANGULAR_IMPULSE,\n                    normalizedDirection * MyProjectilesConstants.HIT_STRENGTH_IMPULSE * impulseMultiplier,\n                    intersectionPosition, Vector3.Zero);\n        }\n\n        //  Draw the projectile but only if desired polyline trail distance can fit in the trajectory (otherwise we will see polyline growing from the origin and it's ugly).\n        //  Or draw if this is last draw of this projectile (useful for short-distance shots).\n        public void Draw()\n        {\n            const float PROJECTILE_POLYLINE_DESIRED_LENGTH = 120;\n\n            float trajectoryLength = Vector3.Distance(m_position, m_origin);\n            if ((trajectoryLength > 0) || (m_state == MyProjectileStateEnum.KILLED))\n            {\n                if (m_state == MyProjectileStateEnum.KILLED)\n                {\n                    m_state = MyProjectileStateEnum.KILLED_AND_DRAWN;\n                }\n\n                if (!m_positionChecked)\n                    return;\n                \n              \n                    \n                //  If we calculate previous position using normalized direction (insted of velocity), projectile trails will \n                //  look like coming from cannon, and that is desired. Even during fast movement, acceleration, rotation or changes in movement directions.\n                //Vector3 previousPosition = m_position - m_directionNormalized * projectileTrailLength * 1.05f;\n                Vector3 previousPosition = m_position - m_directionNormalized * PROJECTILE_POLYLINE_DESIRED_LENGTH * MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS;\n                //Vector3 previousPosition = m_previousPosition;\n                //Vector3 previousPosition = m_initialSunWindPosition - MyMwcUtils.Normalize(m_desiredVelocity) * projectileTrailLength;\n\n                Vector3 direction = Vector3.Normalize(m_position - previousPosition);\n\n                float projectileTrailLength = 40 * LengthMultiplier;// PROJECTILE_POLYLINE_DESIRED_LENGTH;\n\n                projectileTrailLength *= MyMwcUtils.GetRandomFloat(0.6f, 0.8f);\n\n                if (trajectoryLength < projectileTrailLength)\n                {\n                    projectileTrailLength = trajectoryLength;\n                }\n\n                previousPosition = m_position - projectileTrailLength * direction;\n                if (m_externalAddition >= 1.0f)\n                    m_externalAddition = 0.5f;\n\n\n                //float color = MyMwcUtils.GetRandomFloat(1, 2);\n                float color = MyMwcUtils.GetRandomFloat(1, 2);\n                float thickness = m_thicknessMultiplier * MyMwcUtils.GetRandomFloat(0.2f, 0.3f);\n\n                //  Line particles (polyline) don't look good in distance. Start and end aren't rounded anymore and they just\n                //  look like a pieces of paper. Especially when zoom-in.\n                thickness *= MathHelper.Lerp(0.2f, 0.8f, MyCamera.Zoom.GetZoomLevel());\n\n                float alphaCone = 1;\n                float alphaGlare = 1;\n\n                if (BlendByCameraDirection)\n                {\n                    float angle = 1 - Math.Abs(Vector3.Dot(MyMwcUtils.Normalize(MyCamera.ForwardVector), direction));\n                    alphaGlare = (float)Math.Pow(1 - angle, 2);\n                    alphaCone = (1 - (float)Math.Pow(1 - angle, 30));\n                }\n\n                MyTransparentGeometry.AddLineBillboard(MyTransparentMaterialEnum.ProjectileTrailLine, new Vector4(m_ammoProperties.TrailColor * color, 1) * alphaCone,\n                    previousPosition, direction, projectileTrailLength, thickness);\n\n                if (FrontBillboardMaterial.HasValue)\n                {\n                    MyTransparentGeometry.AddPointBillboard(FrontBillboardMaterial.Value, new Vector4(m_ammoProperties.TrailColor * color, 1) * alphaGlare, m_position, 0.8f * FrontBillboardSize, 0);\n                }                   \n            }\n        }\n\n        public void Close()\n        {\n            OwnerEntity = null;\n            m_ignorePhysObject = null;\n            m_weapon = null;\n        }\n\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Entities/Weapons/Projectile/MyProjectiles.cs",
    "content": "﻿using MinerWars.CommonLIB.AppCode.Generics;\n\nnamespace MinerWars.AppCode.Game.Entities.Weapons\n{\n    using System.Collections.Generic;\n    using MinerWarsMath;\n    using SysUtils.Utils;\n    using Utils;\n    using MinerWars.AppCode.Game.Gameplay;\n    using MinerWars.CommonLIB.AppCode.Utils;\n    using MinerWars.AppCode.Game.TransparentGeometry;\n    using MinerWars.AppCode.Game.Render;\n\n    static class MyProjectiles\n    {\n        static MyObjectsPool<MyProjectile> m_projectiles = null;\n\n        static MyProjectiles()\n        {\n            Render.MyRender.RegisterRenderModule(MyRenderModuleEnum.Projectiles, \"Projectiles\", Draw, Render.MyRenderStage.PrepareForDraw);\n        }\n\n        public static void LoadData()\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyProjectiles.LoadData\");\n            if (m_projectiles == null)\n            {\n                m_projectiles = new MyObjectsPool<MyProjectile>(MyProjectilesConstants.MAX_PROJECTILES_COUNT);\n            }\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        public static void UnloadData()\n        {\n            m_projectiles.DeallocateAll();\n        }\n\n        //  Add new projectile to the list\n        public static void Add(MyAmmoProperties ammoProperties, MyEntity ignorePhysObject, Vector3 origin, Vector3 initialVelocity, Vector3 directionNormalized, bool groupStart, float thicknessMultiplier, MyEntity weapon, MyEntity ownerEntity = null)\n        {\n            MyProjectile newProjectile = m_projectiles.Allocate();\n            if (newProjectile != null)\n            {\n                newProjectile.Start(\n                    ammoProperties,\n                    ignorePhysObject, \n                    origin, \n                    initialVelocity, \n                    directionNormalized, \n                    groupStart, \n                    thicknessMultiplier,\n                    weapon\n                    );\n                newProjectile.OwnerEntity = ownerEntity != null ? ownerEntity : ignorePhysObject;\n            }\n        }\n\n        //  Add new projectile to the list\n        public static void AddShotgun(MyAmmoProperties ammoProperties, MyEntity ignorePhysObject, Vector3 origin, Vector3 initialVelocity, Vector3 directionNormalized, bool groupStart, float thicknessMultiplier, MyEntity weapon, float frontBillboardSize, MyEntity ownerEntity = null)\n        {\n            MyProjectile newProjectile = m_projectiles.Allocate();\n            if (newProjectile != null)\n            {\n                newProjectile.Start(\n                    ammoProperties,\n                    ignorePhysObject,\n                    origin,\n                    initialVelocity,\n                    directionNormalized,\n                    groupStart,\n                    thicknessMultiplier,\n                    weapon\n                    );\n\n                newProjectile.BlendByCameraDirection = true;\n                newProjectile.FrontBillboardMaterial = MyTransparentMaterialEnum.ShotgunParticle;\n                newProjectile.LengthMultiplier = 2;\n                newProjectile.FrontBillboardSize = frontBillboardSize;\n                newProjectile.OwnerEntity = ownerEntity != null ? ownerEntity : ignorePhysObject;\n            }\n        }\n\n        //  Update active projectiles. If projectile dies/timeouts, remove it from the list.\n        public static void Update()\n        {\n            foreach (LinkedListNode<MyProjectile> item in m_projectiles)\n            {\n                if (item.Value.Update() == false)\n                {\n                    item.Value.Close();\n                    m_projectiles.MarkForDeallocate(item);\n                }\n            }\n\n            m_projectiles.DeallocateAllMarked();\n        }\n\n        //  Draw active projectiles\n        public static void Draw()\n        {\n            foreach (LinkedListNode<MyProjectile> item in m_projectiles)\n            {\n                item.Value.Draw();\n            }\n        }\n\n        public static int GetActiveCount()\n        {\n            return m_projectiles.GetActiveCount();\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Explosions/MyExplosion.cs",
    "content": "﻿using System;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.AppCode.Game.Cockpit;\nusing MinerWars.AppCode.Game.Decals;\nusing MinerWars.AppCode.Game.Lights;\nusing MinerWars.AppCode.Game.Entities.SubObjects;\nusing MinerWars.AppCode.Game.TransparentGeometry.Particles;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Voxels;\nusing MinerWars.AppCode.Physics;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils.Utils;\nusing MinerWars.AppCode.Game.Physics;\nusing MinerWars.AppCode.Game.Entities.Weapons;\nusing MinerWars.AppCode.Game.Render;\n\n//  This explosion is started when missile hits something.\n//  During it start, it creates explosion and smoke particles that live on their own. This object than lives only for lighting and physics.\n//  After explosion's energy is burned, it dies.\n\nnamespace MinerWars.AppCode.Game.Explosions\n{\n    using Managers.Session;\n    using System.Collections.Generic;\n\n    //  This tells us what exploded. It doesn't say what was hit, just what exploded so then explosion can be made for that exploded thing.\n    internal enum MyExplosionTypeEnum : byte\n    {\n        MISSILE_EXPLOSION,          //  When missile explodes. By collision or by itself (e.g. timer).\n        SMALL_SHIP_EXPLOSION,       //  When small ship explodes by itself\n        BOMB_EXPLOSION,             //  When mine/bomb explodes\n        AMMO_EXPLOSION,\n        BLASTER_EXPLOSION,\n        BIOCHEM_EXPLOSION,\n        EMP_EXPLOSION,\n        METEOR_EXPLOSION,\n        PLASMA_EXPLOSION,\n        NUCLEAR_EXPLOSION,\n        SMALL_EXPLOSION,\n        GRAVITY_EXPLOSION,\n        FLASH_EXPLOSION,\n        LARGE_SHIP_EXPLOSION,\n        LARGE_PREFAB_EXPLOSION,\n        MEDIUM_PREFAB_EXPLOSION,\n        ASTEROID_EXPLOSION,\n    }\n\n    //  How will look explosion particles\n    internal enum MyExplosionParticlesTypeEnum\n    {\n        EXPLOSIVE_AND_DIRTY,        //  When rocks (voxels or static asteroids) aare involved in explosion\n        EXPLOSIVE_ONLY              //  When metalic only... usually just missile explosion\n    }\n\n    [Flags]\n    internal enum MyExplosionFlags\n    {\n        CREATE_DEBRIS = 1 << 0,\n        AFFECT_VOXELS = 1 << 1,\n        APPLY_FORCE_AND_DAMAGE = 1 << 2,\n        CREATE_DECALS = 1 << 3,\n        FORCE_DEBRIS = 1 << 4,\n        CREATE_PARTICLE_EFFECT = 1 << 5,\n    }\n\n    internal struct MyExplosionInfo\n    {\n        public MyExplosionInfo(float playerDamage, float damage, float empDamage, BoundingSphere explosionSphere, MyExplosionTypeEnum type, bool playSound, MyDummyPoint customEffect = null, bool checkIntersection = true)\n        {\n            PlayerDamage = playerDamage;\n            Damage = damage;\n            EmpDamage = empDamage;\n            ExplosionSphere = explosionSphere;\n            ExplosionForceDirection = MyExplosionForceDirection.EXPLOSION;\n            StrengthImpulse = StrengthAngularImpulse = 0.0f;\n            ExcludedEntity = OwnerEntity = HitEntity = null;\n            CascadeLevel = 0;\n            ExplosionFlags = MyExplosionFlags.AFFECT_VOXELS | MyExplosionFlags.APPLY_FORCE_AND_DAMAGE | MyExplosionFlags.CREATE_DEBRIS | MyExplosionFlags.CREATE_DECALS | MyExplosionFlags.CREATE_PARTICLE_EFFECT;\n            ExplosionType = type;\n            LifespanMiliseconds = MyExplosionsConstants.EXPLOSION_LIFESPAN;\n            GroupMask = MyGroupMask.Empty;\n            ParticleScale = 1.0f;\n            VoxelCutoutScale = 1.0f;\n            Direction = null;\n            VoxelExplosionCenter = explosionSphere.Center;\n            PlaySound = playSound;\n            CustomEffect = customEffect;\n            CheckIntersections = checkIntersection;\n        }\n\n        public float PlayerDamage;\n        public float Damage;\n        public float EmpDamage;\n        public BoundingSphere ExplosionSphere;\n        public MyExplosionForceDirection ExplosionForceDirection;\n        public float StrengthImpulse;\n        public float StrengthAngularImpulse;\n        public MyEntity ExcludedEntity;\n        public MyEntity OwnerEntity;\n        public MyEntity HitEntity;\n        public int CascadeLevel;\n        public MyExplosionFlags ExplosionFlags;\n        public MyExplosionTypeEnum ExplosionType;\n        public int LifespanMiliseconds;\n        public MyGroupMask GroupMask;\n        public float ParticleScale;\n        public float VoxelCutoutScale;\n        public Vector3? Direction;\n        public Vector3 VoxelExplosionCenter;\n        public bool PlaySound;\n        public MyDummyPoint CustomEffect;\n        public bool CheckIntersections;\n\n        private void SetFlag(MyExplosionFlags flag, bool value)\n        {\n            if (value) ExplosionFlags |= flag;\n            else ExplosionFlags &= ~flag;\n        }\n\n        private bool HasFlag(MyExplosionFlags flag)\n        {\n            return (ExplosionFlags & flag) == flag;\n        }\n\n        public bool AffectVoxels { get { return HasFlag(MyExplosionFlags.AFFECT_VOXELS); } set { SetFlag(MyExplosionFlags.AFFECT_VOXELS, value); } }\n        public bool CreateDebris { get { return HasFlag(MyExplosionFlags.CREATE_DEBRIS); } set { SetFlag(MyExplosionFlags.CREATE_DEBRIS, value); } }\n        public bool ApplyForceAndDamage { get { return HasFlag(MyExplosionFlags.APPLY_FORCE_AND_DAMAGE); } set { SetFlag(MyExplosionFlags.APPLY_FORCE_AND_DAMAGE, value); } }\n        public bool CreateDecals { get { return HasFlag(MyExplosionFlags.CREATE_DECALS); } set { SetFlag(MyExplosionFlags.CREATE_DECALS, value); } }\n        public bool ForceDebris { get { return HasFlag(MyExplosionFlags.FORCE_DEBRIS); } set { SetFlag(MyExplosionFlags.FORCE_DEBRIS, value); } }\n        public bool CreateParticleEffect { get { return HasFlag(MyExplosionFlags.CREATE_PARTICLE_EFFECT); } set { SetFlag(MyExplosionFlags.CREATE_PARTICLE_EFFECT, value); } }\n    }\n\n    class MyExplosion\n    {\n        //  IMPORTANT: This class isn't realy inicialized by constructor, but by Start()\n        //  So don't initialize members here, do it in Start()\n        BoundingSphere m_explosionSphere;\n        MyLight m_light;\n        int m_elapsedMiliseconds;\n        int m_lifespanInMiliseconds;\n        MySoundCue? m_explosionCue;\n        private List<MyElement> m_destroyHelper = new List<MyElement>();\n\n        //Use this bool to enable debug draw and better support for debugging explosions\n        public static bool DEBUG_EXPLOSIONS = false;\n\n        //  Start explosion at specified position, with radius and lifespan.\n        //      type - specifies what type of object exploded\n        //      explosionSphere - position and radius\n        //      lifespanInMiliseconds - explosion life span\n        //  IMPORTANT: This class isn't realy inicialized by constructor, but by Start()\n        public void Start(float playerDamage, float damage, float empDamage, MyExplosionTypeEnum type, BoundingSphere explosionSphere, int lifespanInMiliseconds, int cascadeLevel = 0, MyEntity hitEntity = null, float particleScale = 1.0f, MyEntity ownerEntity = null, bool forceDebris = false, bool createDecals = true, float voxelCutoutScale = 1.0f, bool playSound = true, bool checkIntersections = true)\n        {\n            //  Call main explosion starter\n            MyExplosionInfo info = new MyExplosionInfo(playerDamage, damage, empDamage, explosionSphere, type, playSound)\n            {\n                LifespanMiliseconds = lifespanInMiliseconds,\n                ExplosionForceDirection = MyExplosionForceDirection.EXPLOSION,\n                GroupMask = MyGroupMask.Empty,\n                ExplosionFlags = MyExplosionFlags.CREATE_DEBRIS | MyExplosionFlags.AFFECT_VOXELS | MyExplosionFlags.APPLY_FORCE_AND_DAMAGE | MyExplosionFlags.CREATE_PARTICLE_EFFECT,\n                CascadeLevel = cascadeLevel,\n                HitEntity = hitEntity,\n                ParticleScale = particleScale,\n                OwnerEntity = ownerEntity,\n                Direction = null,\n                VoxelCutoutScale = voxelCutoutScale,\n                CheckIntersections = checkIntersections,\n            };\n            info.ForceDebris = forceDebris;\n            info.CreateDecals = createDecals;\n            info.VoxelExplosionCenter = explosionSphere.Center;\n            Start(ref info);\n        }\n\n        public void Start(float playerDamage, float damage, float empDamage, MyExplosionTypeEnum type, BoundingSphere explosionSphere, int lifespanInMiliseconds, MyExplosionForceDirection explosionForceDirection, MyGroupMask groupMask, bool createExplosionDebris, int cascadeLevel = 0, MyEntity hitEntity = null, float particleScale = 1.0f, MyEntity ownerEntity = null, bool affectVoxels = true, bool applyForceAndDamage = true, bool createDecals = true, Vector3? direction = null, bool forceDebris = false, bool playSound = false)\n        {\n            MyExplosionInfo info = new MyExplosionInfo(playerDamage, damage, empDamage, explosionSphere, type, playSound)\n            {\n                LifespanMiliseconds = lifespanInMiliseconds,\n                ExplosionForceDirection = explosionForceDirection,\n                GroupMask = groupMask,\n                ExplosionFlags = MyExplosionFlags.CREATE_PARTICLE_EFFECT,\n                CascadeLevel = cascadeLevel,\n                HitEntity = hitEntity,\n                ParticleScale = particleScale,\n                OwnerEntity = ownerEntity,\n                Direction = direction,\n                VoxelCutoutScale = 1.0f,\n            };\n            info.AffectVoxels = affectVoxels;\n            info.ApplyForceAndDamage = applyForceAndDamage;\n            info.CreateDebris = createExplosionDebris;\n            info.CreateDecals = createDecals;\n            info.ForceDebris = forceDebris;\n            info.VoxelExplosionCenter = explosionSphere.Center;\n            Start(ref info);\n        }\n\n        /// <summary>\n        /// Starts the explosion.\n        /// </summary>\n        /// <param name=\"damage\"></param>\n        /// <param name=\"type\"></param>\n        /// <param name=\"explosionSphere\"></param>\n        /// <param name=\"lifespanInMiliseconds\"></param>\n        /// <param name=\"explosionForceDirection\"></param>\n        /// <param name=\"groupMask\"></param>\n        /// <param name=\"createExplosionDebris\"></param>\n        /// <param name=\"cascadeLevel\"></param>\n        /// <param name=\"hitEntity\"></param>\n        /// <param name=\"particleScale\"></param>\n        /// <param name=\"ownerEntity\"></param>\n        /// <param name=\"affectVoxels\"></param>\n        /// <param name=\"applyForceAndDamage\"></param>\n        /// <param name=\"createDecals\"></param>\n        /// <param name=\"direction\">If applicable, gives the direction of the explosion, e.g. when it was caused by a missile (with its moving direction).</param>\n        public void Start(ref MyExplosionInfo explosionInfo)\n        {\n            //MyCommonDebugUtils.AssertDebug(explosionInfo.ExplosionSphere.Radius <= MyExplosionsConstants.EXPLOSION_RADIUS_MAX);\n            MyCommonDebugUtils.AssertDebug(explosionInfo.ExplosionSphere.Radius > 0);\n\n            MyRender.GetRenderProfiler().StartProfilingBlock(\"MyExplosion.Start\");\n\n            m_explosionSphere = explosionInfo.ExplosionSphere;\n            m_elapsedMiliseconds = 0;\n            m_lifespanInMiliseconds = explosionInfo.LifespanMiliseconds;\n\n            if (explosionInfo.PlaySound)\n            {\n                MyRender.GetRenderProfiler().StartProfilingBlock(\"Sound\");\n                //  Play explosion sound            \n                if (m_explosionCue != null && m_explosionCue.Value.IsPlaying)\n                {\n                    m_explosionCue.Value.Stop(SharpDX.XACT3.StopFlags.Immediate);\n                }\n                m_explosionCue = MyAudio.AddCue3D(GetCueEnumByExplosionType(explosionInfo.ExplosionType), m_explosionSphere.Center, Vector3.Zero, Vector3.Zero, Vector3.Zero);\n                MyRender.GetRenderProfiler().EndProfilingBlock();\n            }\n\n            MyRender.GetRenderProfiler().StartProfilingBlock(\"Light\");\n            //  Light of explosion\n            /*\n            m_light = MyLights.AddLight();\n            if (m_light != null)\n            {\n                m_light.Start(MyLight.LightTypeEnum.PointLight, m_explosionSphere.Center, MyExplosionsConstants.EXPLOSION_LIGHT_COLOR, 1, Math.Min(m_explosionSphere.Radius * 8.0f, MyLightsConstants.MAX_POINTLIGHT_RADIUS));\n                m_light.Intensity = 2.0f;\n            } */\n            MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            // close explosion check\n            bool close = IsExplosionClose(explosionInfo.ExplosionSphere);\n\n            MyParticleEffectsIDEnum newParticlesType;\n\n            switch (explosionInfo.ExplosionType)\n            {\n                case MyExplosionTypeEnum.SMALL_SHIP_EXPLOSION:\n                    //  Create metal debris objects thrown from the explosion\n                    //  This must be called before ApplyExplosionForceAndDamage (because there we apply impulses to the debris)\n                    //  Throw a lot of debrises, more than only if some metalic object is hit (because this is destruction of a ship)\n                    //MyPhysObjectExplosionDebrises.CreateExplosionDebris(m_explosionSphere.Center, 1);\n                    newParticlesType = MyParticleEffectsIDEnum.Explosion_Smallship;\n                    break;\n                case MyExplosionTypeEnum.MISSILE_EXPLOSION:\n                    newParticlesType =\n                        // ? MyParticleEffectsIDEnum.Explosion_Missile_Close\n                                          MyParticleEffectsIDEnum.Explosion_Missile;\n                    break;\n\n                case MyExplosionTypeEnum.BOMB_EXPLOSION:\n                case MyExplosionTypeEnum.GRAVITY_EXPLOSION:\n                    newParticlesType = MyParticleEffectsIDEnum.Explosion_Bomb;\n                    break;\n\n                case MyExplosionTypeEnum.AMMO_EXPLOSION:\n                    newParticlesType = MyParticleEffectsIDEnum.Explosion_Ammo;\n                    break;\n\n                case MyExplosionTypeEnum.BLASTER_EXPLOSION:\n                    newParticlesType = MyParticleEffectsIDEnum.Explosion_Blaster;\n                    break;\n\n                case MyExplosionTypeEnum.BIOCHEM_EXPLOSION:\n                    newParticlesType = MyParticleEffectsIDEnum.Explosion_BioChem;\n                    break;\n\n                case MyExplosionTypeEnum.EMP_EXPLOSION:\n                case MyExplosionTypeEnum.FLASH_EXPLOSION:\n                    newParticlesType = MyParticleEffectsIDEnum.Explosion_EMP;\n                    break;\n                case MyExplosionTypeEnum.METEOR_EXPLOSION:\n                    newParticlesType = MyParticleEffectsIDEnum.Explosion_Meteor;\n                    break;\n                case MyExplosionTypeEnum.NUCLEAR_EXPLOSION:\n                    newParticlesType = MyParticleEffectsIDEnum.Explosion_Nuclear;\n                    break;\n                case MyExplosionTypeEnum.PLASMA_EXPLOSION:\n                    newParticlesType = MyParticleEffectsIDEnum.Explosion_Plasma;\n                    break;\n                case MyExplosionTypeEnum.SMALL_EXPLOSION:\n                    newParticlesType = MyParticleEffectsIDEnum.Explosion_SmallPrefab;\n                    break;\n                case MyExplosionTypeEnum.LARGE_SHIP_EXPLOSION:\n                    newParticlesType = MyParticleEffectsIDEnum.Explosion_Huge;\n                    break;\n                case MyExplosionTypeEnum.LARGE_PREFAB_EXPLOSION:\n                    newParticlesType = MyParticleEffectsIDEnum.Explosion_Large;\n                    break;\n                case MyExplosionTypeEnum.MEDIUM_PREFAB_EXPLOSION:\n                    newParticlesType = MyParticleEffectsIDEnum.Explosion_Medium;\n                    break;\n                case MyExplosionTypeEnum.ASTEROID_EXPLOSION:\n                    newParticlesType = MyParticleEffectsIDEnum.Explosion_Asteroid;\n                    break;\n\n                default:\n                    throw new System.NotImplementedException();\n                    break;\n            }\n\n\n            if (explosionInfo.Damage > 0)\n            {\n                MyRender.GetRenderProfiler().StartProfilingBlock(\"Voxel or collision\");\n\n                //  If explosion sphere intersects a voxel map, we need to cut out a sphere, spawn debrises, etc\n                MyVoxelMap voxelMap = explosionInfo.AffectVoxels && explosionInfo.EmpDamage == 0 ? MyVoxelMaps.GetOverlappingWithSphere(ref m_explosionSphere) : null;\n                if (voxelMap != null)\n                {\n                    //  Dirty explosion with a lot of dust\n\n                    MyMwcVoxelMaterialsEnum? voxelMaterial = null;\n                    float voxelContentRemovedInPercent = 0;\n\n                    bool createDebris = true; // We want to create debris\n\n                    if (explosionInfo.HitEntity != null) // but not when we hit prefab\n                    {\n                        createDebris &= explosionInfo.HitEntity is MyVoxelMap;\n                    }\n\n\n                    //cut off \n                    BoundingSphere voxelExpSphere = new BoundingSphere(explosionInfo.VoxelExplosionCenter, m_explosionSphere.Radius * explosionInfo.VoxelCutoutScale);\n                    if (MyVoxelGenerator.CutOutSphereFast(voxelMap, voxelExpSphere, out voxelContentRemovedInPercent, out voxelMaterial, (explosionInfo.OwnerEntity is MySmallShip && explosionInfo.OwnerEntity == Managers.Session.MySession.PlayerShip), MyFakes.VOXELS_REMOVE_RATIO))\n                    {\n                        if (explosionInfo.HitEntity is MyVoxelMap)\n                        {\n                            HUD.MyHud.ShowIndestructableAsteroidNotification();\n                        }\n                        createDebris = false; // and no debris when voxel is indestructible\n                    }\n\n                    //  Only if at least something was removed from voxel map\n                    //  If voxelContentRemovedInPercent is more than zero than also voxelMaterial shouldn't be null, but I rather check both of them.\n                    if ((voxelContentRemovedInPercent > 0) && (voxelMaterial != null))\n                    {\n                        //remove decals\n                        MyDecals.HideTrianglesAfterExplosion(voxelMap, ref voxelExpSphere);\n\n                        MyRender.GetRenderProfiler().StartProfilingBlock(\"CreateDebris\");\n\n                        if (explosionInfo.CreateDebris && (createDebris || explosionInfo.ForceDebris) && MyRenderConstants.RenderQualityProfile.ExplosionDebrisCountMultiplier > 0)\n                        {\n                            //  Create debris rocks thrown from the explosion\n                            //  This must be called before ApplyExplosionForceAndDamage (because there we apply impulses to the debris)\n                            MyExplosionDebrisVoxel.CreateExplosionDebris(ref voxelExpSphere, voxelContentRemovedInPercent, voxelMaterial.Value, explosionInfo.GroupMask, voxelMap);\n                        }\n\n                        MyRender.GetRenderProfiler().EndProfilingBlock();\n\n                        MyRender.GetRenderProfiler().StartProfilingBlock(\"CreateParticleEffect\");\n\n                        MyParticleEffect explosionEffect = MyParticlesManager.CreateParticleEffect((int)MyParticleEffectsIDEnum.MaterialExplosion_Destructible);\n                        explosionEffect.WorldMatrix = Matrix.CreateTranslation(voxelExpSphere.Center);\n                        explosionEffect.UserRadiusMultiplier = voxelExpSphere.Radius;\n\n                        MyRender.GetRenderProfiler().EndProfilingBlock();\n                    }\n\n                }\n                MyRender.GetRenderProfiler().EndProfilingBlock();\n            }\n\n            if (explosionInfo.Damage > 0)\n            {\n                //  Create dirt decals in player's cockpit glass\n                MyRender.GetRenderProfiler().StartProfilingBlock(\"Cockpit Decals\");\n                CreateDirtDecalOnCockpitGlass(ref m_explosionSphere);\n                MyRender.GetRenderProfiler().EndProfilingBlock();\n            }\n\n            if (DEBUG_EXPLOSIONS)\n            {\n                MyRender.GetRenderProfiler().EndProfilingBlock();\n                return;\n            }\n\n            if (explosionInfo.Damage > 0)\n            {\n                BoundingSphere influenceExplosionSphere = m_explosionSphere;\n                influenceExplosionSphere.Radius *= MyExplosionsConstants.EXPLOSION_RADIUS_MULTPLIER_FOR_IMPULSE;\n                for (int i = 0; i < explosionInfo.CascadeLevel; i++)\n                {\n                    influenceExplosionSphere.Radius *= MyExplosionsConstants.EXPLOSION_CASCADE_FALLOFF;\n                }\n\n                //  Throws surrounding objects away from centre of the explosion.\n                if (explosionInfo.ApplyForceAndDamage)\n                {\n                    if (explosionInfo.ExplosionType == MyExplosionTypeEnum.LARGE_PREFAB_EXPLOSION ||\n                        explosionInfo.ExplosionType == MyExplosionTypeEnum.LARGE_SHIP_EXPLOSION ||\n                        explosionInfo.ExplosionType == MyExplosionTypeEnum.MEDIUM_PREFAB_EXPLOSION)\n                        DisableContainedDummyParticles(ref explosionInfo);\n\n                    explosionInfo.StrengthImpulse = MyExplosionsConstants.EXPLOSION_STRENGTH_IMPULSE * m_explosionSphere.Radius / 20;\n                    explosionInfo.StrengthAngularImpulse = MyExplosionsConstants.EXPLOSION_STRENGTH_ANGULAR_IMPULSE;\n                    explosionInfo.HitEntity = explosionInfo.HitEntity != null ? explosionInfo.HitEntity.GetBaseEntity() : null;\n\n                    MyRender.GetRenderProfiler().StartProfilingBlock(\"ApplyExplosionForceAndDamage\");\n                    MyEntities.ApplyExplosionForceAndDamage(ref explosionInfo);\n                    MyRender.GetRenderProfiler().EndProfilingBlock();\n                }\n\n                //  Look for objects in explosion radius\n                BoundingBox boundingBox;\n                BoundingBox.CreateFromSphere(ref influenceExplosionSphere, out boundingBox);\n\n                //if (explosionInfo.CreateDecals && explosionInfo.Direction.HasValue && explosionInfo.EmpDamage == 0)\n                //{\n                //    CreateDecals(explosionInfo.Direction.Value);\n                //}\n            }\n\n            if (explosionInfo.CreateParticleEffect)\n            {\n                MyRender.GetRenderProfiler().StartProfilingBlock(\"Particles\");\n\n                if (explosionInfo.CustomEffect != null)\n                {\n                    if (explosionInfo.CustomEffect.ParticleID == 0)\n                        explosionInfo.CustomEffect.ParticleID = (int)newParticlesType;\n                    //Reload effect\n                    explosionInfo.CustomEffect.Enabled = false;\n                    explosionInfo.CustomEffect.Enabled = true;\n                }\n                else\n                {\n                    //  Explosion particles\n                    GenerateExplosionParticles(newParticlesType, m_explosionSphere, explosionInfo.ParticleScale);\n                }\n\n                MyRender.GetRenderProfiler().EndProfilingBlock();\n            }\n\n            MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            /*\n                // When MyAmmoBase entity is closed to explosion it will explode\n                if (entity is MyAmmoBase)\n                {\n                    (entity as MyAmmoBase).ExplodeCascade(cascadeLevel + 1);\n                }\n                */\n\n            //  Smut decals - must be called after the explosion, after voxels are cutted out\n            /*if ((intersection.PhysObject is MyVoxelMap) == false)\n            {\n                if (intersection.PhysObject is MyCockpitGlass)\n                {\n                    //  Change phys object so rest of the code will think we hit the parent\n                    //  Same fix is in projectile too - because cockpit glass is only helper object, we don't use it for real rendering and stuff\n                    //  And if not changed, it can make problem in \"phys object decals\"\n                    intersection.PhysObject = intersection.PhysObject.Parent;\n                }\n\n                //  Create explosion smut decal on model we hit by this missile                \n                MyDecals.Add(\n                    MyDecalTexturesEnum.ExplosionSmut,\n                    MyMwcUtils.GetRandomFloat(m_explosionSphere.Radius * 0.7f, m_explosionSphere.Radius * 1.3f),\n                    MyMwcUtils.GetRandomRadian(),\n                    GetSmutDecalRandomColor(),\n                    true,\n                    ref intersection);\n            }\n            else\n            {\n                //  Creating explosion smut decal on voxel is more complicated than on voxel. We will project few lines\n                //  from explosion epicentrum to the surounding world (random directions) and place decal where intersection detected.\n                //if (knownMissileDirection != null)\n                //{\n                //    MyLine linePrologned = new MyLine(knownIntersection.Value.IntersectionPointInObjectSpace,\n                //        knownIntersection.Value.IntersectionPointInObjectSpace + knownMissileDirection.Value * MyExplosionsConstants.EXPLOSION_RANDOM_RADIUS_MAX * 2,\n                //        true);\n                //    MyLineTriangleIntersectionResult intersectionForSmut = knownIntersection.Value.VoxelMap.GetIntersectionWithLine(ref linePrologned);\n                //    if (intersectionForSmut.Found == true)\n                //    {\n                //        MyDecals.Add(\n                //            MyDecalTexturesEnum.ExplosionSmut,\n                //            MyMwcUtils.GetRandomFloat(m_explosionSphere.Radius * 0.5f, m_explosionSphere.Radius * 1.0f),\n                //            MyMwcUtils.GetRandomRadian(),\n                //            GetSmutDecalRandomColor(),\n                //            false,\n                //            ref intersectionForSmut);\n                //    }\n                //}\n            }*/\n\n            //  Generate dust particles that will stay in place of the explosion\n            //doesnt look good in final \n            //GenerateStatisDustParticles(m_explosionSphere);\n        }\n\n        private void CreateDecals(Vector3 direction)\n        {\n            MyRender.GetRenderProfiler().StartProfilingBlock(\"Collisions\");\n\n            MyRender.GetRenderProfiler().StartProfilingBlock(\"Raycast\");\n\n            var intersectionEndPoint = m_explosionSphere.Center + 1.5f * m_explosionSphere.Radius * direction;\n            var intersectionStartPoint = m_explosionSphere.Center - 1.5f * m_explosionSphere.Radius * direction;\n            var line = new MyLine(intersectionStartPoint, intersectionEndPoint);\n\n            var result = MyEntities.GetIntersectionWithLine(ref line, null, null, true, true, false, false, true, AppCode.Physics.Collisions.IntersectionFlags.ALL_TRIANGLES, true);\n\n            MyRender.GetRenderProfiler().EndProfilingBlock();\n            MyRender.GetRenderProfiler().StartProfilingBlock(\"Add decal\");\n\n            if (result.HasValue)\n            {\n                MyIntersectionResultLineTriangleEx intersection = result.Value;\n\n                var radius = m_explosionSphere.Radius * (result.Value.Entity is MyVoxelMap ? 1.0f : MyMwcUtils.GetRandomFloat(0.4f, 0.6f));\n\n                MyDecals.Add(\n                    MyDecalTexturesEnum.ExplosionSmut,\n                    radius,\n                    MyMwcUtils.GetRandomRadian(),\n                    GetSmutDecalRandomColor(),\n                    true,\n                    ref intersection,\n                    0,\n                    0, \n                    MyDecalsConstants.DECAL_OFFSET_BY_NORMAL_FOR_SMUT_DECALS);\n            }\n\n            MyRender.GetRenderProfiler().EndProfilingBlock();\n            MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            //var elements = MyEntities.GetElementsInBox(ref boundingBox);\n\n            //foreach (MyRBElement element in elements)\n            //{\n            //    var rigidBody = (MyPhysicsBody)element.GetRigidBody().m_UserData;\n            //    var entity = rigidBody.Entity;\n\n            //    if (entity is MyExplosionDebrisBase || entity is MyPrefabContainer)\n            //        continue;\n\n            //    // Making interesection of line from the explosion center to every object closed to explosion\n            //    // and placing smut decals\n\n            //    // FIX : when hitting another samll boat explosion and entity position are equal !!!\n            //    //if (m_explosionSphere.Center == entity.GetPosition())\n            //    //    continue;\n\n            //    // FIX : when hitting another samll boat explosion and direction is < Epsilon !!!\n            //    if ((entity.GetPosition() - m_explosionSphere.Center).LengthSquared() <\n            //        2 * MyMwcMathConstants.EPSILON_SQUARED)\n            //        continue;\n\n            //    MyRender.GetRenderProfiler().StartProfilingBlock(\"Line intersection\");\n            //    MyIntersectionResultLineTriangleEx? intersection = null;\n            //    if (direction.HasValue)\n            //    {\n            //        var intersectionEndPoint = m_explosionSphere.Center + 1.5f * m_explosionSphere.Radius * direction.Value;\n            //        var intersectionStartPoint = m_explosionSphere.Center - 1.5f * m_explosionSphere.Radius * direction.Value;\n            //        MyLine intersectionLine = new MyLine(intersectionStartPoint, intersectionEndPoint, true);\n            //        entity.GetIntersectionWithLine(ref intersectionLine, out intersection);\n            //    }\n            //    else if (intersection == null && entity is MyVoxelMap)\n            //    {\n            //        // fall back if we dont have direction\n            //        var intersectionEndPoint = entity.GetPosition();\n            //        MyLine intersectionLine = new MyLine(m_explosionSphere.Center, intersectionEndPoint, true);\n            //        entity.GetIntersectionWithLine(ref intersectionLine, out intersection);\n            //    }\n            //    MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            //    if (intersection == null)\n            //        continue;\n\n            //    MyIntersectionResultLineTriangleEx intersectionValue = intersection.Value;\n\n            //    if (entity is MyVoxelMap)\n            //    {\n            //        MyRender.GetRenderProfiler().StartProfilingBlock(\"Decals\");\n\n            //        MyDecals.Add(\n            //            MyDecalTexturesEnum.ExplosionSmut,\n            //            m_explosionSphere.Radius,\n            //            MyMwcUtils.GetRandomRadian(),\n            //            GetSmutDecalRandomColor(),\n            //            true,\n            //            ref intersectionValue,\n            //            0,\n            //            0, MyDecalsConstants.DECAL_OFFSET_BY_NORMAL_FOR_SMUT_DECALS);\n\n            //        MyRender.GetRenderProfiler().EndProfilingBlock();\n            //    }\n            //    else if (((entity is MySmallShip) == false) &&\n            //             ((entity is MySmallDebris) == false)\n            //             && ((entity is MyAmmoBase) == false))\n            //    {\n            //        //  Create explosion smut decal on model we hit by this missile                \n            //        MyDecals.Add(\n            //            MyDecalTexturesEnum.ExplosionSmut,\n            //            MyMwcUtils.GetRandomFloat(m_explosionSphere.Radius * 0.4f, m_explosionSphere.Radius * 0.6f),\n            //            MyMwcUtils.GetRandomRadian(),\n            //            GetSmutDecalRandomColor(),\n            //            true,\n            //            ref intersectionValue,\n            //            0,\n            //            0, MyDecalsConstants.DECAL_OFFSET_BY_NORMAL);\n            //    }\n            //}\n            //elements.Clear();\n        }\n\n        private static bool IsExplosionClose(BoundingSphere explosionSphere)\n        {\n            float distance = (explosionSphere.Center - MyCamera.Position).Length();\n\n            return distance < MyExplosionsConstants.CLOSE_EXPLOSION_DISTANCE;\n        }\n\n        //  If explosion was with voxels, crease dirt decals in player's cockpit glass\n        //  We don't throw random number of debris lines from explosion (because it will be waste). Instead we get intersection line from explosion center to player head,\n        //  which should intersect the cockpit glass. Plus we move player head by random vector.\n        void CreateDirtDecalOnCockpitGlass(ref BoundingSphere explosionSphere)\n        {\n            MySmallShip player = MySession.PlayerShip;\n            float maxDistance = m_explosionSphere.Radius * MyExplosionsConstants.EXPLOSION_RADIUS_MULTPLIER_FOR_DIRT_GLASS_DECALS;\n            float distance = Vector3.Distance(player.GetPosition(), explosionSphere.Center) - player.ModelLod0.BoundingSphere.Radius;\n\n            //  Decal interpolator - based on distance to explosion, range <0..1>\n            //  But then increased because we aren't able to reach max distance so we need to help it little bit\n            float interpolator = 1 - MathHelper.Clamp(distance / maxDistance, 0, 1);\n            interpolator = (float)Math.Pow(interpolator, 3f);\n\n            //  Don't create dirt decal if we are too far\n            if (interpolator <= 0.0f) return;\n\n            //  Chech intersection between explosion and player's head. BUT move the line in player's head direction, because we don't want to make intersection with object which caused the explosion\n            //MyLine line = new MyLine(intersection.IntersectionPointInWorldSpace, player.GetPosition(), true);\n            //MyLine line = new MyLine(intersection.IntersectionPointInWorldSpace, MyCamera.m_initialSunWindPosition, true);\n            //Vector3 playerHeadPositionWorld = MyUtils.GetTransform(MyFakes.PLAYER_HEAD_FOR_COCKPIT_INTERIOR_FAKE_TRANSLATION * -1, ref player.WorldMatrix);\n            Vector3 playerHeadPositionWorld = player.GetPlayerHeadForCockpitInterior();\n            MyLine line = new MyLine(explosionSphere.Center, playerHeadPositionWorld, true);\n            line.From += line.Direction * MyExplosionsConstants.OFFSET_LINE_FOR_DIRT_DECAL;\n\n            MyIntersectionResultLineTriangleEx? glassIntersection = MyEntities.GetIntersectionWithLine_IgnoreOtherThanSpecifiedClass(ref line, new Type[] { typeof(MySmallShip) });\n\n            if ((glassIntersection != null) && (glassIntersection.Value.Entity is MyCockpitGlassEntity))\n            {\n                //  Decal alpha (never is 1.0f, because we want to see through the dirt)\n                float alpha = MathHelper.Clamp(MathHelper.Lerp(0.2f, 1.0f, interpolator) - 0.1f, 0, 1);\n                //const float ALPHA_INCREASE = 0.4f;\n                //float alpha = 1 - (float)Math.Pow(MathHelper.Clamp(distance / maxDistance, 0, 1), 5);\n                //float alpha = (float)MathHelper.SmoothStep(0, 1, 1 - MathHelper.Clamp(distance / maxDistance, 0, 1));\n                //float alpha = MathHelper.Clamp(1 - MathHelper.Clamp(distance / maxDistance, 0, 1) + ALPHA_INCREASE, ALPHA_INCREASE, 1);\n\n                //  Decal size\n                float size = MathHelper.Lerp(2.5f, 4f, interpolator);\n\n                MyIntersectionResultLineTriangleEx glassIntersection2 = glassIntersection.Value;\n\n                MyCockpitGlassDecals.Add(MyCockpitGlassDecalTexturesEnum.DirtOnGlass, size, MyMwcUtils.GetRandomRadian(), alpha, ref glassIntersection2, true);\n            }\n        }\n\n        MySoundCuesEnum GetCueEnumByExplosionType(MyExplosionTypeEnum explosionType)\n        {\n            MySoundCuesEnum? cueEnum = null;\n            switch (explosionType)\n            {\n                case MyExplosionTypeEnum.MISSILE_EXPLOSION:\n                    cueEnum = MySoundCuesEnum.WepMissileExplosion;\n                    break;\n\n                case MyExplosionTypeEnum.SMALL_SHIP_EXPLOSION:\n                    cueEnum = MySoundCuesEnum.SfxShipSmallExplosion;\n                    break;\n\n                case MyExplosionTypeEnum.BOMB_EXPLOSION:\n                    cueEnum = MySoundCuesEnum.WepBombExplosion;\n                    break;\n\n                case MyExplosionTypeEnum.METEOR_EXPLOSION:\n                    cueEnum = MySoundCuesEnum.SfxMeteorExplosion;\n                    break;\n\n                case MyExplosionTypeEnum.FLASH_EXPLOSION:\n                    cueEnum = MySoundCuesEnum.WepBombFlash;\n                    break;\n\n                case MyExplosionTypeEnum.GRAVITY_EXPLOSION:\n                    cueEnum = MySoundCuesEnum.WepBombGravSuck;\n                    break;\n\n                case MyExplosionTypeEnum.EMP_EXPLOSION:\n                    cueEnum = MySoundCuesEnum.WepEpmExplosion;\n                    break;\n\n                case MyExplosionTypeEnum.LARGE_SHIP_EXPLOSION:\n                    cueEnum = MySoundCuesEnum.SfxShipLargeExplosion;\n                    break;\n\n                default:\n                    cueEnum = MySoundCuesEnum.WepMissileExplosion;\n                    break;\n            }\n\n            return cueEnum.Value;\n        }\n\n        private Vector4 GetSmutDecalRandomColor()\n        {\n            float randomColor = MyMwcUtils.GetRandomFloat(0.2f, 0.3f);\n            return new Vector4(randomColor, randomColor, randomColor, 1);\n        }\n\n        //  We have only Update method for explosions, because drawing of explosion is mantained by particles and lights itself\n        public bool Update()\n        {\n            if (m_explosionCue != null && m_explosionCue.Value.IsPlaying)\n            {\n                MyAudio.CalculateOcclusion(m_explosionCue.Value, m_explosionSphere.Center);\n            }\n\n            m_elapsedMiliseconds += MyConstants.PHYSICS_STEP_SIZE_IN_MILLISECONDS;\n            if (m_elapsedMiliseconds >= m_lifespanInMiliseconds)\n            {\n                if (DEBUG_EXPLOSIONS)\n                {\n                    return true;\n                }\n                else\n                {\n                    Close();\n                    return false;\n                }\n            }\n\n            if (m_light != null)\n            {\n                float normalizedTimeElapsed = 1 - (float)m_elapsedMiliseconds / (float)m_lifespanInMiliseconds;\n\n                m_light.Color = MyExplosionsConstants.EXPLOSION_LIGHT_COLOR * normalizedTimeElapsed;\n                m_light.Range = /*MyMwcUtils.GetRandomFloat(0.9f, 1.0f) */ Math.Min(m_explosionSphere.Radius * 2.0f, MyLightsConstants.MAX_POINTLIGHT_RADIUS);\n            }\n\n            return true;\n        }\n\n        public void DebugDraw()\n        {\n            //if (DEBUG_EXPLOSIONS)\n            {\n                //BoundingSphere boundingSphere = new BoundingSphere(m_explosionInfo.HitEntity is MyVoxelMap ? m_explosionInfo.VoxelExplosionCenter : m_explosionInfo.ExplosionSphere.Center, m_explosionInfo.ExplosionSphere.Radius);\n                //MyDebugDraw.DrawSphereWireframe(m_explosionSphere.Center, m_explosionSphere.Radius, Color.Red.ToVector3(), 1);\n                //MyDebugDraw.DrawSphereWireframe(boundingSphere.Center, boundingSphere.Radius, Color.Red.ToVector3(), 1);\n            }\n        }\n\n        public void Close()\n        {\n            m_explosionCue = null;\n            if (m_light != null)\n            {\n                MyLights.RemoveLight(m_light);\n                m_light = null;\n            }\n        }\n\n        //  Generate explosion particles. These will be smoke, explosion and some polyline particles.\n        void GenerateExplosionParticles(MyParticleEffectsIDEnum newParticlesType, BoundingSphere explosionSphere, float particleScale)\n        {\n            Vector3 dirToCamera = MyCamera.Position - explosionSphere.Center;\n\n            if (MyMwcUtils.IsZero(dirToCamera))\n                dirToCamera = MyCamera.ForwardVector;\n            else\n                dirToCamera = MyMwcUtils.Normalize(dirToCamera);\n\n            //  Move explosion particles in the direction of camera, so we won't see billboards intersecting the large ship\n            BoundingSphere tempExplosionSphere = m_explosionSphere;\n            tempExplosionSphere.Center = m_explosionSphere.Center + dirToCamera * 0.9f;\n\n            MyParticleEffect explosionEffect = MyParticlesManager.CreateParticleEffect((int)newParticlesType);\n            explosionEffect.WorldMatrix = Matrix.CreateTranslation(tempExplosionSphere.Center);\n            explosionEffect.UserRadiusMultiplier = tempExplosionSphere.Radius;\n            explosionEffect.UserScale = particleScale;\n        }\n\n\n        private void DisableContainedDummyParticles(ref MyExplosionInfo explosionInfo)\n        {\n            BoundingBox aabb = BoundingBox.CreateFromSphere(explosionInfo.ExplosionSphere);\n            MyRender.GetEntitiesFromPrunningStructure(ref aabb, m_destroyHelper);\n\n            foreach (var elem in m_destroyHelper)\n            {\n                var entity = ((MyRenderObject)elem).Entity;\n\n                var dummyPoint = entity as MyDummyPoint;\n                if (dummyPoint != null && !dummyPoint.CanSurvivePrefabDestruction())\n                {\n                    var position = dummyPoint.GetPosition();\n                    dummyPoint.DisableParticleEffect();\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Explosions/MyExplosions.cs",
    "content": "﻿using System.Collections.Generic;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Render;\nusing MinerWars.CommonLIB.AppCode.Generics;\nusing SysUtils.Utils;\n\nnamespace MinerWars.AppCode.Game.Explosions\n{\n    static class MyExplosions\n    {\n        static MyObjectsPool<MyExplosion> m_explosions = null;\n\n        static MyExplosions()\n        {\n            //if (MyExplosion.DEBUG_EXPLOSIONS)\n            {\n                MyRender.RegisterRenderModule(MyRenderModuleEnum.Explosions, \"Explosions\", DebugDraw, MyRenderStage.DebugDraw, true);\n            }\n        }\n\n\n        public static void LoadData()\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyExplosions.LoadData\");\n            MyMwcLog.WriteLine(\"MyExplosions.LoadData() - START\");\n            MyMwcLog.IncreaseIndent();\n\n            if (m_explosions == null)\n            {\n                m_explosions = new MyObjectsPool<MyExplosion>(MyExplosionsConstants.MAX_EXPLOSIONS_COUNT);\n            }\n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyExplosions.LoadData() - END\");\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        public static void UnloadData()\n        {\n            foreach (LinkedListNode<MyExplosion> explosion in m_explosions)\n            {\n                explosion.Value.Close();\n            }\n\n            m_explosions.DeallocateAll();\n        }\n\n        public static void LoadContent()\n        {\n            MyMwcLog.WriteLine(\"MyExplosions.LoadContent() - START\");\n            MyMwcLog.IncreaseIndent();\n\n            \n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyExplosions.LoadContent() - END\");\n        }\n\n        public static void UnloadContent()\n        {\n            MyMwcLog.WriteLine(\"MyExplosions.UnloadContent - START\");\n            MyMwcLog.IncreaseIndent();\n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyExplosions.UnloadContent - END\");\n        }\n\n        //  Add new explosion to the list, but caller needs to start it using Start() method\n        public static MyExplosion AddExplosion()\n        {\n            return m_explosions.Allocate();\n        }\n\n        //  We have only Update method for explosions, because drawing of explosion is mantained by particles and lights itself\n        public static void Update()\n        {\n            //  Go over every active explosion and draw it, unless it isn't dead.\n            foreach (LinkedListNode<MyExplosion> item in m_explosions)\n            {\n                if (item.Value.Update() == false)\n                {\n                    m_explosions.MarkForDeallocate(item);\n                }\n            }\n\n            //  Deallocate/delete all lights that are turned off\n            m_explosions.DeallocateAllMarked();\n        }\n\n        public static void DebugDraw()\n        {\n            //  Go over every active explosion and draw it, unless it isn't dead.\n            foreach (LinkedListNode<MyExplosion> item in m_explosions)\n            {\n                item.Value.DebugDraw();\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Core/IMyGuiControlsParent.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\n\nnamespace MinerWars.AppCode.Game.GUI.Core\n{\n    interface IMyGuiControlsParent\n    {\n        MyGuiControls Controls { get; }\n        Vector2 GetPositionAbsolute();\n        Vector2? GetSize();\n        float GetTransitionAlpha();\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Core/Listbox/MyGuiControlListboxDragAndDrop.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.AppCode.Game.Utils;\n\nnamespace MinerWars.AppCode.Game.GUI.Core\n{\n    class MyDragAndDropInfo\n    {\n        public MyGuiControlListbox Listbox { get; set; }\n        public int RowIndex { get; set; }\n        public int ItemIndex { get; set; }\n    }\n\n    class MyDragAndDropRestriction\n    {\n        // main types enums can be dropped, if empty, all object builders can be dropped\n        public List<ushort> ObjectBuilders { get; private set; }\n        // sub types enums can be dropped, if empty, all object builder types can be dropped\n        public List<ushort> ObjectBuilderTypes { get; private set; }\n\n        public MyDragAndDropRestriction()\n        {\n            ObjectBuilders = new List<ushort>();\n            ObjectBuilderTypes = new List<ushort>();\n        }\n    }\n\n    enum MyDropHandleType\n    {\n        /// <summary>\n        /// Drop released on mouse left click\n        /// </summary>\n        LeftMouseClick,\n        /// <summary>\n        /// Drop released on stop pressed left mouse \n        /// </summary>\n        LeftMousePressed\n    }\n\n    class MyDragAndDropEventArgs\n    {\n        public MyDragAndDropInfo DragFrom { get; set; }\n        public MyDragAndDropInfo DropTo { get; set; }\n        public MyGuiControlListboxItem ListboxItem { get; set; }\n    }\n    delegate void OnListboxItemDropped(object sender, MyDragAndDropEventArgs eventArgs);\n    class MyGuiControlListboxDragAndDrop : MyGuiControlBase\n    {\n        #region fields\n        private MyGuiControlListboxItem m_draggingListboxItem;\n        private List<MyGuiControlListbox> m_listboxesToDrop;\n        private MyDragAndDropInfo m_draggingFrom;\n        private Vector4 m_textColor;\n        private float m_textScale;\n        private Vector2 m_textOffset;\n        private bool m_supportIcon;\n        private MyDropHandleType? m_currentDropHandleType;\n        #endregion\n\n        #region constructors\n        public MyGuiControlListboxDragAndDrop(IMyGuiControlsParent parent, List<MyGuiControlListbox> listboxesToDrop, MyGuiControlPreDefinedSize predefinedSize, Vector4 backgroundColor, Vector4 textColor, float textScale, Vector2 textOffset, bool supportIcon)\n            : base(parent, new Vector2(0.0f, 0.0f), predefinedSize, backgroundColor, null, true)\n        {\n            m_listboxesToDrop = listboxesToDrop;\n            m_textColor = textColor;\n            m_textScale = textScale;\n            m_textOffset = textOffset;\n            m_supportIcon = supportIcon;\n            m_size = GetPredefinedControlSize();\n            DrawBackgroundTexture = true;\n        }\n        #endregion\n\n        #region events and delegates\n        public event OnListboxItemDropped ListboxItemDropped;\n        #endregion\n\n        #region overriden methods\n        protected override bool CheckMouseOver()\n        {\n            return IsActive();\n        }\n\n        public override void Draw()\n        {\n            //base.Draw();\n\n            if (IsActive())\n            {\n                // draw item's background\n                if (m_backgroundColor != null && DrawBackgroundTexture)\n                {\n                    MyGuiManager.DrawSpriteBatch(MyGuiManager.GetBlankTexture(), MyGuiManager.MouseCursorPosition, m_size.Value, /*new Color(m_backgroundColor.Value)*/ GetColorAfterTransitionAlpha(m_backgroundColor.Value * (new Color(50, 66, 70, 255).ToVector4())), MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER);\n                }\n\n                Vector2 itemPosition = MyGuiManager.MouseCursorPosition - m_size.Value / 2.0f;\n                Vector2 textPosition = itemPosition + m_textOffset;\n                textPosition.Y += (m_size.Value.Y / 2.0f);\n                // draw item's icon\n                if (m_supportIcon == true && m_draggingListboxItem.Icon != null)\n                {\n                    MyGuiManager.DrawSpriteBatch(m_draggingListboxItem.Icon, itemPosition, m_size.Value, GetColorAfterTransitionAlpha(m_backgroundColor.Value), MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP);\n                }\n                // draw item's text\n                else if (m_draggingListboxItem.Value != null)\n                {\n                    //  End our standard sprite batch\n                    MyGuiManager.EndSpriteBatch();\n\n                    //  Draw the rectangle(basically the opened area) to stencil buffer to be used for clipping partial item\n                    MyGuiManager.DrawStencilMaskRectangle(new MyRectangle2D(itemPosition, m_size.Value), MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP);\n\n                    //  Set up the stencil operation and parameters\n                    MyGuiManager.BeginSpriteBatch_StencilMask();\n\n                    m_draggingListboxItem.ColoredText.Draw(textPosition, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER, m_parent.GetTransitionAlpha(), true);\n\n                    //  End stencil-mask batch, and restart the standard sprite batch\n                    //MyGuiManager.EndSpriteBatch();\n                    MyGuiManager.EndSpriteBatch_StencilMask();\n                    MyGuiManager.BeginSpriteBatch();\n                }\n\n                ShowToolTip();\n            }\n        }\n\n        public bool DrawBackgroundTexture { get; set; }\n\n        protected override Vector2 GetPredefinedControlSize()\n        {\n            Vector2 size = Vector2.Zero;\n            if (m_predefinedSize.HasValue)\n            {\n                if (m_predefinedSize == MyGuiControlPreDefinedSize.LARGE)\n                {\n                    size = MyGuiConstants.DRAG_AND_DROP_LARGE_SIZE;\n                }\n                else if (m_predefinedSize == MyGuiControlPreDefinedSize.MEDIUM)\n                {\n                    size = MyGuiConstants.DRAG_AND_DROP_MEDIUM_SIZE;\n                }\n                else if (m_predefinedSize == MyGuiControlPreDefinedSize.LONGMEDIUM)\n                {\n                    size = MyGuiConstants.DRAG_AND_DROP_LONGMEDIUM_SIZE;\n                }\n                else\n                {\n                    size = MyGuiConstants.DRAG_AND_DROP_SMALL_SIZE;\n                }\n            }\n\n            if (m_supportIcon == true) size.Y = MyGuiConstants.DRAG_AND_DROP_ICON_SIZE_Y;\n\n            return size;\n        }\n\n        public override void ShowToolTip()\n        {\n            if (IsActive() && m_toolTip != null && m_toolTip.GetToolTips().Count > 0)\n            {\n                m_toolTipPosition = MyGuiManager.MouseCursorPosition + MyGuiConstants.TOOL_TIP_RELATIVE_DEFAULT_POSITION;\n                m_toolTip.Draw(m_toolTipPosition);\n            }\n        }\n\n        public override bool HandleInput(MyGuiInput input, bool hasKeyboardActiveControl, bool hasKeyboardActiveControlPrevious, bool receivedFocusInThisUpdate)\n        {\n            bool captureInput = base.HandleInput(input, hasKeyboardActiveControl, hasKeyboardActiveControlPrevious, receivedFocusInThisUpdate);\n            if (!captureInput)\n            {\n                captureInput = HandleInput(input);\n            }\n            return captureInput;\n        }\n        #endregion\n\n        #region public methods\n        /// <summary>\n        /// Starts dragging item\n        /// </summary>\n        /// <param name=\"dropHandleType\">On which action released drop event</param>\n        /// <param name=\"draggingItem\">Item which is dragging</param>\n        /// <param name=\"draggingFrom\">Information about item's origin</param>\n        public void StartDragging(MyDropHandleType dropHandleType, MyGuiControlListboxItem draggingItem, MyDragAndDropInfo draggingFrom)\n        {\n            m_currentDropHandleType = dropHandleType;\n            m_draggingListboxItem = draggingItem;\n            m_draggingFrom = draggingFrom;\n            m_toolTip = draggingItem.ToolTip;\n        }\n\n        /// <summary>\n        /// Stops dragging item\n        /// </summary>\n        public void Stop()\n        {\n            m_draggingFrom = null;\n            m_draggingListboxItem = null;\n            m_currentDropHandleType = null;\n        }\n\n        /// <summary>\n        /// Returns if dragging is active\n        /// </summary>\n        /// <returns></returns>\n        public bool IsActive()\n        {\n            return m_draggingListboxItem != null && m_draggingFrom != null && m_currentDropHandleType != null;\n        }\n        #endregion\n\n        public void Drop()\n        {\n            if (!IsActive())\n                return;\n\n            MyDragAndDropInfo dropTo = null;\n            foreach (MyGuiControlListbox listbox in m_listboxesToDrop)\n            {\n                Point? mouseOverItemIndexes = listbox.GetMouseOverIndexes();\n                if (mouseOverItemIndexes != null && listbox.Enabled)\n                {\n                    dropTo = new MyDragAndDropInfo();\n                    dropTo.Listbox = listbox;\n                    dropTo.RowIndex = mouseOverItemIndexes.Value.Y;\n                    dropTo.ItemIndex = mouseOverItemIndexes.Value.X;\n                    break;\n                }\n            }\n\n            ListboxItemDropped(this, new MyDragAndDropEventArgs() { DragFrom = m_draggingFrom, DropTo = dropTo, ListboxItem = m_draggingListboxItem });\n        }\n\n\n        #region private methods\n        private bool HandleInput(MyGuiInput input)\n        {\n            bool captureInput = false;\n            if (IsActive())\n            {\n                // handling left mouse pressed drag and drop\n                if (m_currentDropHandleType.Value == MyDropHandleType.LeftMousePressed)\n                {\n                    // still dragging\n                    if (input.IsLeftMousePressed())\n                    {\n                        captureInput = true;\n                    }\n                    // dropping\n                    else\n                    {\n                        HandleDropingItem();\n                    }\n                }\n                // handling left mouse click drag and drop\n                else if (m_currentDropHandleType.Value == MyDropHandleType.LeftMouseClick)\n                {\n                    if (input.IsNewLeftMousePressed())\n                    {\n                        HandleDropingItem();\n                        captureInput = true;\n                    }\n                }\n            }\n            return captureInput;\n        }\n\n        private void HandleDropingItem()\n        {\n            if (IsActive())\n            {\n                Drop();\n                \n                MyAudio.AddCue2D(MySoundCuesEnum.GuiMouseClick);\n            }\n        }\n        #endregion\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Core/Listbox/MyGuiControlListboxItem.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.Utils;\n\nnamespace MinerWars.AppCode.Game.GUI.Core\n{\n    class MyGuiControlListboxItemEventArgs\n    {\n        public int RowIndex { get; set; }\n        public int ItemIndex { get; set; }\n        public int Key { get; set; }\n\n        public MyGuiControlListboxItemEventArgs(int rowIndex, int itemIndex, int key)\n        {\n            RowIndex = rowIndex;\n            ItemIndex = itemIndex;\n            Key = key;\n        }\n    }\n\n    class MyGuiControlListboxItem\n    {\n        public int Key { get; private set; }\n        public MyTexture2D Icon { get; private set; }\n        public MyColoredText ColoredText { get; set; }\n        public MyIconTexts IconTexts { get; set; }\n        public MyToolTips ToolTip { get; set; }\n\n        public Vector4 BackgroundColor { get; set; }\n        public bool Enabled { get; set; }\n\n        public StringBuilder Value\n        {\n            get\n            {\n                if (ColoredText != null)\n                {\n                    return ColoredText.Text;\n                }\n                else\n                {\n                    return null;\n                }\n            }\n        }\n\n        public MyGuiControlListboxItem(int key, StringBuilder value, MyTexture2D icon, float scale)\n            : this(key, value, icon, null, scale)\n        {\n        }\n\n        public MyGuiControlListboxItem(int key, StringBuilder value, MyTexture2D icon, MyToolTips tooltip, float scale)\n        {\n            Key = key;\n            Icon = icon;\n            ToolTip = tooltip;\n\n            if (value != null)\n            {\n                ColoredText = new MyColoredText(value, new Color(MyGuiConstants.LISTBOX_TEXT_COLOR),\n                                  new Color(MyGuiConstants.LISTBOX_TEXT_COLOR * MyGuiConstants.CONTROL_MOUSE_OVER_BACKGROUND_COLOR_MULTIPLIER),\n                                  MyGuiManager.GetFontMinerWarsBlue(),\n                                  scale, Vector2.Zero);\n\n                if (ToolTip == null)\n                {\n                    ToolTip = new MyToolTips(value);\n                }\n            }\n            BackgroundColor = Vector4.One;\n            Enabled = true;\n        }\n\n        public MyGuiControlListboxItem(int key, MyColoredText coloredText, MyTexture2D icon, MyToolTips toolTip)\n        {\n            Key = key;\n            Icon = icon;\n            ColoredText = coloredText;\n            ToolTip = toolTip;\n            BackgroundColor = Vector4.One;\n            Enabled = true;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Core/Listbox/MyGuiControlListboxRow.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\n\nnamespace MinerWars.AppCode.Game.GUI.Core\n{    \n    class MyGuiControlListboxRow\n    {\n        #region fields\n        #endregion\n\n        #region properties\n        public MyGuiControlListboxItem[] Items { get; private set; }\n        public Vector4? Color;\n        #endregion\n\n        #region constructors\n        public MyGuiControlListboxRow(int columns)\n        {\n            Items = new MyGuiControlListboxItem[columns];\n        }\n        #endregion\n\n        #region public methods\n        /// <summary>\n        /// Returns free empty slot in this row, if not founded then return null\n        /// </summary>\n        /// <returns>Index of first empty slot</returns>\n        public int? GetFirstEmptyItemSlot()\n        {\n            for (int i = 0; i < Items.Length; i++)\n            {\n                if (Items[i] == null)\n                {\n                    return i;\n                }\n            }\n            return null;\n        }\n\n        /// <summary>\n        /// Returns if row is empty\n        /// </summary>\n        /// <returns></returns>\n        public bool IsEmpty()\n        {\n            for (int i = 0; i < Items.Length; i++)\n            {\n                if (Items[i] != null)\n                {\n                    return false;\n                }\n            }\n            return true;\n        }\n\n        /// <summary>\n        /// Returns item's count\n        /// </summary>\n        /// <returns></returns>\n        public int ItemsCount()\n        {\n            int itemsCount = 0;\n            for (int i = 0; i < Items.Length; i++)\n            {\n                if (Items[i] != null)\n                {\n                    itemsCount++;\n                }\n            }\n            return itemsCount;\n        }\n        #endregion\n\n        #region private methods\n        #endregion\n\n    }    \n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Core/Listbox/MyGuiControlListboxScrollBar.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.Utils;\n\nnamespace MinerWars.AppCode.Game.GUI.Core\n{    \n    enum MyScrollDirection\n    {\n        Vertical,\n        Horizontal\n    }\n    class MyGuiControlListboxScrollBar\n    {\n        #region fields\n        private MyScrollDirection m_scrollDirection;\n        private float m_scrollValueMin;\n        private float m_scrollValueMax;\n        private float m_scrollValue;\n\n        private Vector2 m_scrollSliderSize;\n        private Vector2 m_scrollSliderSizeMax;\n        private Vector2 m_scrollSliderSizeMin;\n\n        private Vector2 m_scrollSliderPosition;\n        private Vector2 m_scrollSliderPositionMin;\n        private Vector2 m_scrollSliderPositionMax;\n\n        private Vector2? m_mouseLastPosition;\n        private bool m_isScrollSliderDragging;\n\n        private MyTexture2D m_texture;\n\n        private Vector2 m_position;         // topleft position\n        private Vector2 m_size;\n        private IMyGuiControlsParent m_parent;\n        #endregion\n\n        #region constructors\n        public MyGuiControlListboxScrollBar(IMyGuiControlsParent parent, Vector2 position, Vector2 size, Vector4? backgroundColor, Color sliderColor, MyScrollDirection scrollDirection, MyTexture2D texture)\n        {\n            m_parent = parent;\n            m_position = position;\n            m_size = size;\n            m_scrollDirection = scrollDirection;\n            m_texture = texture;\n            m_isScrollSliderDragging = false;\n            InitializeScrollBar(1.0f);\n            SetScrollValue(1.0f);\n        }\n        #endregion\n\n        #region events and delegates\n        public event EventHandler ScrollValueChanged;\n        #endregion\n\n        #region public methods\n        /// <summary>\n        /// Returns scrollbar's size\n        /// </summary>\n        /// <returns></returns>\n        public Vector2 GetSize()\n        {\n            return m_size;\n        }\n\n        /// <summary>\n        /// Sets new scrollbar's size\n        /// </summary>\n        /// <param name=\"newSize\"></param>\n        public void SetNewSize(Vector2 newSize)\n        {\n            m_size = newSize;\n            RecalculateScrollSliderMinAndMaxSize();\n            RecalculateScrollSliderSize();\n            RecalculateScrollSliderMinAndMaxPosition();\n            RecalculateSrollSliderPosition();\n        }\n\n        /// <summary>\n        /// Sets new scrollbar's position\n        /// </summary>\n        /// <param name=\"newPosition\"></param>\n        public void SetNewPosition(Vector2 newPosition)\n        {\n            m_position = newPosition;\n            RecalculateScrollSliderMinAndMaxPosition();\n            RecalculateSrollSliderPosition();\n        }\n\n        /// <summary>\n        /// Initialize scrollbar\n        /// </summary>\n        /// <param name=\"maxValue\">Max value of scrolling (must be >= 1.0f)</param>\n        public void InitializeScrollBar(float maxValue)\n        {\n            m_scrollValueMin = 1.0f;\n            m_scrollValueMax = Math.Max(maxValue, 1.0f);\n            RecalculateScrollSliderMinAndMaxSize();\n            RecalculateScrollSliderSize();\n            RecalculateScrollSliderMinAndMaxPosition();\n            RecalculateSrollSliderPosition();\n        }\n\n        /// <summary>\n        /// Sets current scrolling value\n        /// </summary>\n        /// <param name=\"value\">Scrolling value</param>\n        public void SetScrollValue(float value)\n        {\n            if (value <= m_scrollValueMin)\n            {\n                m_scrollValue = m_scrollValueMin;\n            }\n            else if (value >= m_scrollValueMax)\n            {\n                m_scrollValue = m_scrollValueMax;\n            }\n            else\n            {\n                m_scrollValue = value;\n            }\n            RecalculateSrollSliderPosition();\n        }\n\n        /// <summary>\n        /// Returns current scrolling value\n        /// </summary>\n        /// <returns></returns>\n        public float GetScrollValue()\n        {\n            return m_scrollValue;\n        }\n\n        /// <summary>\n        /// Returns scrolling ratio 0 - 1 ... (0% - 100%)\n        /// </summary>\n        /// <returns></returns>\n        public float GetScrollRatio()\n        {\n            if (m_scrollValueMax > m_scrollValueMin)\n            {\n                return (m_scrollValue - m_scrollValueMin) / (m_scrollValueMax - m_scrollValueMin);\n            }\n            else\n            {\n                return 0.0f;\n            }\n        }\n\n        /// <summary>\n        /// Returns true if is scrolling now\n        /// </summary>\n        /// <returns></returns>\n        public bool IsScrolling()\n        {\n            return m_isScrollSliderDragging;\n        }\n\n        /// <summary>\n        /// Handling scrollbar's input\n        /// </summary>\n        /// <param name=\"input\"></param>\n        /// <param name=\"hasKeyboardActiveControl\"></param>\n        /// <param name=\"hasKeyboardActiveControlPrevious\"></param>\n        /// <param name=\"receivedFocusInThisUpdate\"></param>\n        /// <returns></returns>\n        public bool HandleInput(MyGuiInput input, bool hasKeyboardActiveControl, bool hasKeyboardActiveControlPrevious, bool receivedFocusInThisUpdate)\n        {\n            bool captureInput = false;\n            // still scrolling\n            if (IsScrolling() && input.IsLeftMousePressed())\n            {\n                if (m_mouseLastPosition != null)\n                {\n                    Vector2 distance = new Vector2(0.0f, 0.0f);\n                    Vector2 sliderDistanceFromLastUpdate = MyGuiManager.MouseCursorPosition - m_mouseLastPosition.Value;\n                    switch (m_scrollDirection)\n                    {\n                        case MyScrollDirection.Horizontal:\n                            distance.X = sliderDistanceFromLastUpdate.X;\n                            break;\n                        case MyScrollDirection.Vertical:\n                            distance.Y = sliderDistanceFromLastUpdate.Y;\n                            break;\n                    }\n                    if (distance.Length() > 0.00001f)\n                    {\n                        Vector2 newScrollSliderPosition = m_scrollSliderPosition + distance;\n                        FixScrollSliderPosition(ref newScrollSliderPosition);\n\n                        if (newScrollSliderPosition != m_scrollSliderPosition)\n                        {                            \n                            SetScrollSliderPosition(newScrollSliderPosition);\n                            m_mouseLastPosition = MyGuiManager.MouseCursorPosition;\n                        }\n\n                    }\n                    captureInput = true;\n                }\n            }\n            // start scrolling\n            else if (!IsScrolling() && input.IsNewLeftMousePressed() && IsMouseOverScrollSlider())\n            {\n                m_isScrollSliderDragging = true;\n                m_mouseLastPosition = MyGuiManager.MouseCursorPosition;\n                captureInput = true;\n            }\n            // no scrolling\n            else\n            {\n                m_mouseLastPosition = null;\n                m_isScrollSliderDragging = false;\n            }\n\n            return captureInput;\n        }\n\n        /// <summary>\n        /// Draw's scrollbar\n        /// </summary>\n        public void Draw()\n        {\n            Vector4 vctColor = Color.White.ToVector4();\n            vctColor.W *= m_parent.GetTransitionAlpha();\n            MyGuiManager.DrawSpriteBatch(m_texture, m_parent.GetPositionAbsolute() + m_scrollSliderPosition, m_scrollSliderSize, new Color(vctColor), MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP);\n        }\n        #endregion\n\n        #region private methods\n        private void SetScrollSliderPosition(Vector2 position)\n        {\n            m_scrollSliderPosition = position;\n            RecalculateScrollValueByScrollSliderPosition();\n        }\n\n        private bool IsMouseOverScrollSlider()\n        {\n            Vector2 normalPosition = m_parent.GetPositionAbsolute() + m_scrollSliderPosition;\n            Vector2 minPosition = normalPosition;\n            Vector2 maxPosition = normalPosition + (m_scrollSliderSize);\n\n            return MyGuiManager.MouseCursorPosition.X >= minPosition.X && MyGuiManager.MouseCursorPosition.X <= maxPosition.X &&\n               MyGuiManager.MouseCursorPosition.Y >= minPosition.Y && MyGuiManager.MouseCursorPosition.Y <= maxPosition.Y;\n        }\n\n        private void RecalculateScrollValueByScrollSliderPosition()\n        {\n            float oldScrollValue = m_scrollValue;            \n            float sliderMaxAndMinPositionDelta = (m_scrollSliderPositionMax - m_scrollSliderPositionMin).Length();\n            float scrollRatio;\n            if (sliderMaxAndMinPositionDelta != 0f)\n            {\n                scrollRatio = (m_scrollSliderPosition - m_scrollSliderPositionMin).Length() / sliderMaxAndMinPositionDelta;\n            }\n            else\n            {\n                scrollRatio = 0.0f;\n            }\n            m_scrollValue = scrollRatio * (m_scrollValueMax - m_scrollValueMin) + m_scrollValueMin;\n            if (oldScrollValue != m_scrollValue && ScrollValueChanged != null)\n            {\n                ScrollValueChanged(this, EventArgs.Empty);\n            }\n        }\n\n        private void RecalculateSrollSliderPosition()\n        {\n            float scrollRatio = GetScrollRatio();\n            Vector2 scrollSliderOffset = (m_scrollSliderPositionMax - m_scrollSliderPositionMin) * new Vector2(scrollRatio, scrollRatio);\n            m_scrollSliderPosition = m_scrollSliderPositionMin + scrollSliderOffset;\n        }\n\n        private void RecalculateScrollSliderMinAndMaxPosition()\n        {\n            Vector2 topLeftPosition = m_position;\n            switch (m_scrollDirection)\n            {\n                case MyScrollDirection.Horizontal:\n                    m_scrollSliderPositionMin = topLeftPosition;\n                    m_scrollSliderPositionMax = topLeftPosition + new Vector2(m_size.X - m_scrollSliderSize.X, 0.0f);\n                    break;\n                case MyScrollDirection.Vertical:\n                    m_scrollSliderPositionMin = topLeftPosition;\n                    m_scrollSliderPositionMax = topLeftPosition + new Vector2(0.0f, m_size.Y - m_scrollSliderSize.Y);\n                    break;\n            }\n        }\n\n        private void RecalculateScrollSliderMinAndMaxSize()\n        {\n            switch (m_scrollDirection)\n            {\n                case MyScrollDirection.Horizontal:\n                    m_scrollSliderSizeMin = new Vector2(MyGuiConstants.LISTBOX_SCROLLBAR_MIN_SIZE, m_size.Y);\n                    m_scrollSliderSizeMax = new Vector2(MyGuiConstants.LISTBOX_SCROLLBAR_MAX_SIZE, m_size.Y);\n                    break;\n                case MyScrollDirection.Vertical:\n                    m_scrollSliderSizeMin = new Vector2(m_size.X, MyGuiConstants.LISTBOX_SCROLLBAR_MIN_SIZE);\n                    m_scrollSliderSizeMax = new Vector2(m_size.X, MyGuiConstants.LISTBOX_SCROLLBAR_MAX_SIZE);\n                    break;\n            }\n        }\n\n        private void RecalculateScrollSliderSize()\n        {\n            Vector2 newSliderSize = m_scrollSliderSizeMax;\n            switch (m_scrollDirection)\n            {\n                case MyScrollDirection.Horizontal:\n                    newSliderSize.X = newSliderSize.X / m_scrollValueMax;\n                    break;\n                case MyScrollDirection.Vertical:\n                    newSliderSize.Y = newSliderSize.Y / m_scrollValueMax;\n                    break;\n            }\n            if (newSliderSize.Length() > m_scrollSliderSizeMin.Length())\n            {\n                m_scrollSliderSize = newSliderSize;\n            }\n            else\n            {\n                m_scrollSliderSize = m_scrollSliderSizeMin;\n            }\n            //m_scrollSliderSize = m_scrollSliderSizeMax;\n        }\n\n        private void FixScrollSliderPosition(ref Vector2 scrollSliderPosition)\n        {\n            if (scrollSliderPosition.Y < m_scrollSliderPositionMin.Y) scrollSliderPosition.Y = m_scrollSliderPositionMin.Y;\n            if (scrollSliderPosition.X < m_scrollSliderPositionMin.X) scrollSliderPosition.X = m_scrollSliderPositionMin.X;\n            if (scrollSliderPosition.Y > m_scrollSliderPositionMax.Y) scrollSliderPosition.Y = m_scrollSliderPositionMax.Y;\n            if (scrollSliderPosition.X > m_scrollSliderPositionMax.X) scrollSliderPosition.X = m_scrollSliderPositionMax.X;\n        }\n\n        #endregion\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Core/MyColoredText.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Utils;\n\nnamespace MinerWars.AppCode.Game.GUI.Core\n{\n    class MyColoredText\n    {        \n        #region Properties\n        public StringBuilder Text { get; set; }\n        public Color NormalColor { get; set; }\n        public Color HighlightColor { get; set; }\n        public MyGuiFont Font { get; set; }\n        public float Scale { get; set; }\n        public Vector2 Offset { get; set; }\n        #endregion\n\n        #region Ctors\n        public MyColoredText(StringBuilder text)\n            : this(text, MyGuiConstants.COLORED_TEXT_DEFAULT_COLOR)\n        {\n        }\n\n        public MyColoredText(StringBuilder text, Color color)\n            : this(text, color, MyGuiConstants.COLORED_TEXT_DEFAULT_HIGHLIGHT_COLOR)\n        {\n        }\n\n        public MyColoredText(StringBuilder text, Color color, float textScale)\n            : this(text, color, MyGuiManager.GetFontMinerWarsWhite(), textScale)\n        {\n        }\n\n        public MyColoredText(StringBuilder text, Color color, MyGuiFont font, float textScale)\n            : this(text, color, MyGuiConstants.COLORED_TEXT_DEFAULT_HIGHLIGHT_COLOR, font, textScale, Vector2.Zero)\n        {\n        }\n\n        public MyColoredText(StringBuilder text, Color normalColor, Color highlightColor)\n            : this(text, normalColor, highlightColor, MyGuiManager.GetFontMinerWarsWhite(), MyGuiConstants.COLORED_TEXT_DEFAULT_TEXT_SCALE, Vector2.Zero)\n        {\n        }\n\n        public MyColoredText(StringBuilder text, Color normalColor, Color highlightColor, MyGuiFont font, float textScale, Vector2 offset)\n        {\n            Text = text;\n            NormalColor = normalColor;\n            HighlightColor = highlightColor;\n            Font = font;\n            Scale = textScale;\n            Offset = offset;\n        }\n        #endregion\n\n        #region Methods\n        public MyRectangle2D Draw(Vector2 normalizedPosition, MyGuiDrawAlignEnum drawAlign, float backgroundAlphaFade, bool isHighlight, float colorMultiplicator = 1f)\n        {\n            Color drawColor = isHighlight ? HighlightColor : NormalColor;\n            Vector4 vctColor = drawColor.ToVector4();\n            vctColor.W *= backgroundAlphaFade;\n            vctColor *= colorMultiplicator;\n\n            return MyGuiManager.DrawString(Font, Text, normalizedPosition + Offset, Scale, new Color(vctColor), drawAlign);\n        }\n\n        public MyRectangle2D Draw(Vector2 normalizedPosition, MyGuiDrawAlignEnum drawAlign, float backgroundAlphaFade, float colorMultiplicator = 1f)\n        {\n            return Draw(normalizedPosition, drawAlign, backgroundAlphaFade, false, colorMultiplicator);\n        }\n\n        #endregion\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Core/MyGuiControlBase.cs",
    "content": "﻿using MinerWarsMath;\nusing MinerWarsMath.Graphics;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Audio;\nusing System.Text;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Toolkit.Input;\n\n\nnamespace MinerWars.AppCode.Game.GUI.Core\n{\n    enum MyGuiControlPreDefinedSize\n    {\n        SMALL,\n        MEDIUM,\n        LONGMEDIUM,\n        LARGE,\n    }\n\n    enum MyGuiControlHighlightType\n    {\n        NEVER,\n        WHEN_CURSOR_OVER,\n        WHEN_ACTIVE\n    }\n\n    delegate void OnVisibilityChanged(MyGuiControlBase sender, bool isVisible);\n\n    abstract class MyGuiControlBase\n    {\n        public bool Enabled;        // false to disable control, disabled controls are skipped when switching with Tab key etc., look implemented atm. only in MyGuiControlButton\n        public bool DrawWhilePaused = true;\n        //public bool Visible;        // false to hide control, control will not handle input and will not call draw        \n\n        protected IMyGuiControlsParent m_parent;                //  Parent that contains this control\n        protected Vector2 m_position;                            //  Position of control's center (normalized and relative to parent screen center (not left/top corner!!!))\n        protected MyGuiControlPreDefinedSize? m_predefinedSize;  //  Predefined enum that controls size of the control\n        protected Vector2? m_size;                               //  Size of control (normalized)\n        protected Vector4? m_backgroundColor;\n        //protected StringBuilder m_toolTip;\n        protected MyToolTips m_toolTip;\n        protected object m_UserData;                             //Specific user data for this control\n        protected MyGuiControlHighlightType m_highlightType;\n        \n        protected bool m_canHandleKeyboardActiveControl = false;        //  By default controls can accept keyboard active control\n        //protected bool m_hasKeyboardActiveControlInPrevious = false;     //  Set to true so we won't hear false mouse over sound when screen loads. This isn't hack, it's OK.\n        protected bool m_hasKeyboardActiveControl = false;               //  Set to true so we won't hear false mouse over sound when screen loads. This isn't hack, it's OK.\n        bool m_isActiveControl = true;              // There are some controls, that cannot receive any handle input(control panel for example), thus disable them with this\n        bool m_isMouseOver = false;                 // Status of mouse over in this update\n        bool m_containsMouse = false;               // Status of mouse over in this update, it's set even for inactive controls\n        bool m_isMouseOverInPrevious = false;       // Status of mouse over in previous update\n        protected bool m_showToolTip = false;\n        int m_showToolTipDelay;\n        protected bool m_mouseButtonPressed = false;\n        \n        protected float m_scale = 1.0f;\n\n        protected MyTexture2D m_controlTexture;\n        protected MyTexture2D m_hoverTexture;\n        protected MyTexture2D m_pressedTexture;\n\n        protected Vector2 m_toolTipPosition;\n        //protected Vector2 m_toolTipSize;\n        //protected Vector2 m_toolTipFogPosition;\n        //protected Vector2 m_toolTipFadeSize;\n\n        protected MyTexture2D m_mouseCursorHoverTexture;\n        protected MyTexture2D m_mouseCursorPressedTexture;\n        /*\n        System.Drawing.Bitmap m_mouseCursorHoverBitmap;\n        System.Drawing.Bitmap m_mouseCursorPressedBitmap;\n        */\n        private bool m_visible;\n        public virtual bool Visible\n        {\n            get { return m_visible; }\n            set\n            {\n                bool changed = value != m_visible;                \n                m_visible = value;\n\n                if (changed && OnVisibilityChanged != null)\n                {\n                    OnVisibilityChanged(this, m_visible);\n                }\n            } \n        }\n\n        public event OnVisibilityChanged OnVisibilityChanged;\n\n        private MyGuiControlBase() { }\n\n        public MyGuiControlBase(IMyGuiControlsParent parent, Vector2 position, Vector2? size, Vector4? backgroundColor, StringBuilder toolTip) :\n            this(parent, position, size, backgroundColor, toolTip, null, null, null, true)\n        {\n\n        }\n\n        public MyGuiControlBase(IMyGuiControlsParent parent, Vector2 position, Vector2? size, Vector4? backgroundColor, StringBuilder toolTip, bool isActiveControl) :\n            this(parent, position, size, backgroundColor, toolTip, null, null, null, isActiveControl)\n        {\n        }\n\n        public MyGuiControlBase(IMyGuiControlsParent parent, Vector2 position, MyGuiControlPreDefinedSize predefinedSize, Vector4? backgroundColor, StringBuilder toolTip, bool isActiveControl) :\n            this(parent, position, predefinedSize, backgroundColor, toolTip, null, null, null, isActiveControl)\n        {\n\n        }\n\n        public MyGuiControlBase(IMyGuiControlsParent parent, Vector2 position, MyGuiControlPreDefinedSize predefinedSize, Vector4? backgroundColor, StringBuilder toolTip,\n            MyTexture2D controlTexture, MyTexture2D hoverTexture, MyTexture2D pressedTexture, bool isActiveControl) :\n            this(parent, position, backgroundColor, toolTip, controlTexture, hoverTexture, pressedTexture, isActiveControl, null, null/*, null, null*/)\n        {\n            m_predefinedSize = predefinedSize;\n            m_size = GetPredefinedControlSize();\n        }\n\n        public MyGuiControlBase(IMyGuiControlsParent parent, Vector2 position, Vector2? size, Vector4? backgroundColor, StringBuilder toolTip,\n            MyTexture2D controlTexture, MyTexture2D hoverTexture, MyTexture2D pressedTexture, bool isActiveControl) :\n            this(parent, position, size, backgroundColor, toolTip, controlTexture, hoverTexture, pressedTexture, isActiveControl, MyGuiControlHighlightType.WHEN_ACTIVE)\n        {\n        }\n\n        public MyGuiControlBase(IMyGuiControlsParent parent, Vector2 position, Vector2? size, Vector4? backgroundColor, StringBuilder toolTip,\n            MyTexture2D controlTexture, MyTexture2D hoverTexture, MyTexture2D pressedTexture, bool isActiveControl, MyGuiControlHighlightType highlightType) :\n            this(parent, position, size, backgroundColor, toolTip, controlTexture, hoverTexture, pressedTexture, isActiveControl, highlightType, null, null/*, null, null*/)\n        {            \n        }\n\n        public MyGuiControlBase(IMyGuiControlsParent parent, Vector2 position, Vector2? size, Vector4? backgroundColor, StringBuilder toolTip,\n            MyTexture2D controlTexture, MyTexture2D hoverTexture, MyTexture2D pressedTexture, bool isActiveControl, MyGuiControlHighlightType highlightType,\n            MyTexture2D mouseCursorHoverTexture, MyTexture2D mouseCursorPressedTexture/*,\n            System.Drawing.Bitmap mouseCursorHoverBitmap, System.Drawing.Bitmap mouseCursorPressedBitmap*/) :\n            this(parent, position, backgroundColor, toolTip, controlTexture, hoverTexture, pressedTexture, isActiveControl, mouseCursorHoverTexture, mouseCursorPressedTexture/*, mouseCursorHoverBitmap, mouseCursorPressedBitmap*/)\n        {\n            m_size = size;\n            m_highlightType = highlightType;\n        }\n\n        private MyGuiControlBase(IMyGuiControlsParent parent, Vector2 position, Vector4? backgroundColor, StringBuilder toolTip,\n            MyTexture2D controlTexture, MyTexture2D hoverTexture, MyTexture2D pressedTexture, bool isActiveControl, \n            MyTexture2D mouseCursorHoverTexture, MyTexture2D mouseCursorPressedTexture/*,\n            System.Drawing.Bitmap mouseCursorHoverBitmap, System.Drawing.Bitmap mouseCursorPressedBitmap*/) \n        {\n            Visible = true;\n            Enabled = true;\n            m_parent = parent;\n            m_position = position;\n            m_backgroundColor = backgroundColor;\n            //m_toolTip = toolTip;\n            if (toolTip != null)\n            {\n                m_toolTip = new MyToolTips(toolTip);\n            }\n            m_controlTexture = controlTexture;\n            m_hoverTexture = hoverTexture;\n            m_pressedTexture = pressedTexture;\n            m_isActiveControl = isActiveControl;\n            m_mouseCursorHoverTexture = mouseCursorHoverTexture;\n            m_mouseCursorPressedTexture = mouseCursorPressedTexture;\n            /*\n            m_mouseCursorHoverBitmap = mouseCursorHoverBitmap;\n            m_mouseCursorPressedBitmap = mouseCursorPressedBitmap;\n            */\n        }\n\n        //  Method returns true if input was captured by control, so no other controls, nor screen can use input in this update\n        public virtual bool HandleInput(MyGuiInput input, bool hasKeyboardActiveControl, bool hasKeyboardActiveControlPrevious, bool receivedFocusInThisUpdate)\n        {            \n            if (m_isActiveControl)\n            {\n                //m_hasKeyboardActiveControlInPrevious = m_hasKeyboardActiveControl;\n                m_hasKeyboardActiveControl = hasKeyboardActiveControl;\n\n                m_isMouseOverInPrevious = m_isMouseOver;\n                m_isMouseOver = CheckMouseOver();\n                m_mouseButtonPressed = IsMouseOver() && input.IsLeftMousePressed();\n\n                if (((m_isMouseOver == true) && (m_isMouseOverInPrevious == false)) ||\n                    ((m_hasKeyboardActiveControl == true) && (hasKeyboardActiveControlPrevious == false)))\n                {\n                    if (receivedFocusInThisUpdate == false)\n                    {\n                        MyAudio.AddCue2D(MySoundCuesEnum.GuiMouseOver);\n                    }\n                }\n            }\n\n            // if mouseover this control longer than specified period, show tooltip for the control\n            if ((m_isMouseOver == true) && (m_isMouseOverInPrevious == true))\n            {\n                if (m_showToolTip == false)\n                {\n                    m_showToolTipDelay = MyMinerGame.TotalGamePlayTimeInMilliseconds + MyGuiConstants.SHOW_CONTROL_TOOLTIP_DELAY;\n                    m_showToolTip = true;\n                }\n            }\n            else\n            {\n                m_showToolTip = false;\n            }\n\n            return false;\n        }\n\n        public bool CanHandleKeyboardActiveControl()\n        {\n            return m_canHandleKeyboardActiveControl;\n        }\n\n        //  Checks if mouse cursor is over control\n        protected virtual bool CheckMouseOver()\n        {\n            //  If size isn't specified, this test can't be done and that was probably intend\n            if (m_size.HasValue == false) return false;\n\n            return CheckMouseOver(m_size.Value * m_scale, m_parent.GetPositionAbsolute());\n        }\n\n        protected bool CheckMouseOver(Vector2 size, Vector2 position)\n        {\n            Vector2 min = new Vector2(position.X + m_position.X - (size.X / 2.0f), position.Y + m_position.Y - (size.Y / 2.0f));\n            Vector2 max = new Vector2(position.X + m_position.X + (size.X / 2.0f), position.Y + m_position.Y + (size.Y / 2.0f));\n\n            return ((MyGuiManager.MouseCursorPosition.X >= min.X) && (MyGuiManager.MouseCursorPosition.X <= max.X) && (MyGuiManager.MouseCursorPosition.Y >= min.Y) && (MyGuiManager.MouseCursorPosition.Y <= max.Y));\n        }        \n\n        public bool IsMouseOver()\n        {\n            return m_isMouseOver;\n        }\n\n        public virtual bool ContainsMouse()\n        {\n            return m_containsMouse;\n        }\n\n        protected MyGuiScreenBase GetTopMostParentScreen() \n        {\n            IMyGuiControlsParent currentParent = m_parent;\n            while(!(currentParent is MyGuiScreenBase))\n            {\n                currentParent = ((MyGuiControlBase)currentParent).GetParent();\n            }\n            return currentParent as MyGuiScreenBase;\n        }\n\n        protected bool IsMouseOverOrKeyboardActive()\n        {\n            MyGuiScreenBase topMostParentScreen = GetTopMostParentScreen();\n            return ((topMostParentScreen is MyGuiScreenBase &&\n                ((MyGuiScreenBase)topMostParentScreen).GetState() == MyGuiScreenState.OPENED) && \n                ((m_isMouseOver) || (m_hasKeyboardActiveControl&&m_canHandleKeyboardActiveControl)));\n        }\n\n        public virtual void Update()\n        {\n            m_containsMouse = CheckMouseOver();\n        }\n\n        public Color GetColorAfterTransitionAlpha(Vector4 color)\n        {\n            Vector4 ret = color;\n            ret.W *= m_parent.GetTransitionAlpha();\n            return new Color(ret);\n        }\n\n        public IMyGuiControlsParent GetParent() \n        {\n            return m_parent;\n        }\n\n        public Vector2 GetPosition()\n        {\n            return m_position;\n        }\n\n        public Vector2? GetSize()\n        {\n            return m_size;\n        }\n\n        public virtual void Draw()\n        {\n            if (m_backgroundColor.HasValue)\n            {\n                MyTexture2D controlTexture = MyGuiManager.GetBlankTexture();\n                Vector4 backgroundColor = m_backgroundColor.Value;\n\n                if (m_controlTexture != null)\n                {\n                    controlTexture = m_controlTexture;\n\n                    if (m_mouseButtonPressed && m_pressedTexture != null)\n                    {\n                        controlTexture = m_pressedTexture;\n                    }\n                    else if (IsMouseOverOrKeyboardActive())\n                    {\n                        if ((m_highlightType == MyGuiControlHighlightType.WHEN_ACTIVE) || (m_highlightType == MyGuiControlHighlightType.WHEN_CURSOR_OVER && IsMouseOver()) || (m_hasKeyboardActiveControl && m_canHandleKeyboardActiveControl))\n                        {\n                            backgroundColor = m_backgroundColor.Value * MyGuiConstants.CONTROL_MOUSE_OVER_BACKGROUND_COLOR_MULTIPLIER;\n                        }\n                    }\n                }\n\n                if (!Enabled)\n                    backgroundColor = m_backgroundColor.Value * MyGuiConstants.DISABLED_BUTTON_COLOR_VECTOR; \n\n                MyGuiManager.DrawSpriteBatch(controlTexture, m_parent.GetPositionAbsolute() + m_position, m_size.Value * m_scale, GetColorAfterTransitionAlpha(backgroundColor), MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER);\n            }\n        }\n\n        protected void DrawEffectHighlight()\n        {\n        }\n\n\n        public virtual void HideToolTip()\n        {\n            m_showToolTip = false;\n        }        \n\n        public virtual void ShowToolTip()\n        {\n            //show tooltip\n            if (m_showToolTip)\n            {\n                if ((MyMinerGame.TotalGamePlayTimeInMilliseconds > m_showToolTipDelay) && (m_toolTip != null) && (m_toolTip.GetToolTips().Count > 0))\n                {\n                    m_toolTipPosition = MyGuiManager.MouseCursorPosition + MyGuiConstants.TOOL_TIP_RELATIVE_DEFAULT_POSITION;\n                    m_toolTip.Draw(m_toolTipPosition);\n                }\n            }\n        }\n\n        protected virtual Vector2 GetPredefinedControlSize()\n        {\n            return Vector2.Zero;\n        }\n\n        public object UserData\n        {\n            get { return m_UserData; }\n            set { m_UserData = value; }\n        }\n\n        protected void DrawBorders(Vector2 topLeftPosition, Vector2 size, Color color, int borderSize)\n        {\n            Vector2 sizeInPixels = MyGuiManager.GetScreenSizeFromNormalizedSize(size);\n            sizeInPixels = new Vector2((int)sizeInPixels.X, (int)sizeInPixels.Y);\n            Vector2 leftTopInPixels = MyGuiManager.GetScreenCoordinateFromNormalizedCoordinate(topLeftPosition);\n            leftTopInPixels = new Vector2((int)leftTopInPixels.X, (int)leftTopInPixels.Y);\n            Vector2 rightTopInPixels = leftTopInPixels + new Vector2(sizeInPixels.X, 0);\n            Vector2 leftBottomInPixels = leftTopInPixels + new Vector2(0, sizeInPixels.Y);\n            // top\n            MyGuiManager.DrawSpriteBatch(MyGuiManager.GetBlankTexture(), (int)leftTopInPixels.X, (int)leftTopInPixels.Y, (int)sizeInPixels.X, borderSize, color);\n            // right\n            MyGuiManager.DrawSpriteBatch(MyGuiManager.GetBlankTexture(), (int)rightTopInPixels.X - borderSize, (int)rightTopInPixels.Y + borderSize, borderSize, (int)sizeInPixels.Y - borderSize * 2, color);\n            // bottom\n            MyGuiManager.DrawSpriteBatch(MyGuiManager.GetBlankTexture(), (int)leftBottomInPixels.X, (int)leftBottomInPixels.Y - borderSize, (int)sizeInPixels.X, borderSize, color);\n            //left\n            MyGuiManager.DrawSpriteBatch(MyGuiManager.GetBlankTexture(), (int)leftTopInPixels.X, (int)leftTopInPixels.Y + borderSize, borderSize, (int)sizeInPixels.Y - borderSize * 2, color);\n        }\n\n        public MyTexture2D GetMouseCursorTexture()\n        {\n            // this is default mouse cursor texture\n            MyTexture2D mouseCursorTexture = MyGuiManager.GetMouseCursorTexture();//null;\n            if (IsMouseOver())\n            {\n                // when mouse button pressed and mouse cursor texture for pressed is not null\n                if (m_mouseButtonPressed && m_mouseCursorPressedTexture != null)\n                {\n                    mouseCursorTexture = m_mouseCursorPressedTexture;\n                }\n                // when mouse over control and mouse cursor texture for hover is not null\n                else if(m_mouseCursorHoverTexture != null)\n                {\n                    mouseCursorTexture = m_mouseCursorHoverTexture;\n                }\n            }\n            return mouseCursorTexture;\n        }\n\n        public virtual void SetPosition(Vector2 position)\n        {\n            m_position = position;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Core/MyGuiControlButton.cs",
    "content": "﻿using System.Text;\nusing MinerWarsMath;\nusing MinerWarsMath.Graphics;\nusing MinerWars.AppCode.Toolkit.Input;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.AppCode.App;\nusing SysUtils.Utils;\nusing MinerWars.AppCode.Game.Textures;\n\nnamespace MinerWars.AppCode.Game.GUI.Core\n{\n    enum MyGuiControlButtonTextAlignment\n    {\n        CENTERED,       //  Text is in the button's center\n        LEFT            //  Text is moved to the left side\n    }\n\n    class MyGuiControlButton : MyGuiControlBase\n    {        \n        public delegate void OnButtonClick(MyGuiControlButton sender);\n        public delegate void OnIndexedButtonClick(int buttonIndex);\n\n        enum ScaleAnimationState\n        {\n            None,\n            ScaleIn,\n            ScaleOut,\n            Scaled\n        }\n\n        private StringBuilder m_text;\n        public Vector2 TextOffset;\n        Vector4 m_textColor;\n        float m_textScale = 1.0f;\n        OnButtonClick m_onButtonClick;\n        OnIndexedButtonClick m_onIndexedButtonClick;\n        int m_buttonIndex;\n        MyGuiControlButtonTextAlignment m_textAlignment;\n        bool m_canHandleKeyboardInput;\n        bool m_implementedFeature;\n        MyTextsWrapperEnum? m_accessForbiddenReason;\n\n        public MyTextsWrapperEnum? AccessForbiddenReason\n        {\n            get { return m_accessForbiddenReason; }\n            set { m_accessForbiddenReason = value; }\n        }\n\n        //MyTexture2D m_hoverButtonTexture;\n        MyTexture2D m_pressedButtonTexture;\n        //MyTexture2D m_shadowTexture;\n\n        ScaleAnimationState m_ScaleAnimationState = ScaleAnimationState.None;\n        int m_ScaleAnimationCurrentTime = 0;\n        int m_LastTime;\n\n        private bool m_useBackground = true;\n        public bool UseBorderBackground\n        {\n            get { return m_useBackground; }\n            set { m_useBackground = value; }\n        }\n\n        public bool DrawCrossTextureWhenDisabled = true;\n\n        private bool m_drawRedTextureWhenDisabled = true;\n        public bool DrawRedTextureWhenDisabled\n        {\n            get { return m_drawRedTextureWhenDisabled; }\n            set\n            {\n                if (value)\n                {\n                    m_drawRedTextureWhenDisabled = true;\n                }\n                else\n                {\n                    m_drawRedTextureWhenDisabled = false;\n                    DrawCrossTextureWhenDisabled = false;\n                }\n            }\n        }\n\n\n        // if using 'Switch Mode' then\n        // 1) highlight doesn't work\n        // 2) disabled button looks like enabled and opposite\n        // 3) disabled button can be clicked\n        public bool UseSwitchMode = false;\n\n        \n\n        public MyGuiControlButton(IMyGuiControlsParent parent, Vector2 position, Vector2? size, Vector4 backgroundColor, MyTextsWrapperEnum textEnum,\n            Vector4 textColor, float textScale, OnButtonClick onButtonClick, MyGuiControlButtonTextAlignment textAlignment, bool canHandleKeyboardInput,\n            MyGuiDrawAlignEnum align, bool implementedFeature, MyTextsWrapperEnum? accessForbiddenReason)\n            : this(parent, position, size, backgroundColor, MyTextsWrapper.Get(textEnum), null, textColor, textScale, onButtonClick, textAlignment,\n            canHandleKeyboardInput, align, implementedFeature)\n        {\n            m_accessForbiddenReason = accessForbiddenReason;\n            m_canHandleKeyboardActiveControl &= m_accessForbiddenReason == null;\n        }\n\n        // with delegate for indexed onButtonClick\n        public MyGuiControlButton(IMyGuiControlsParent parent, Vector2 position, Vector2? size, Vector4 backgroundColor, MyTextsWrapperEnum textEnum,\n            Vector4 textColor, float textScale, OnIndexedButtonClick onIndexedButtonClick, int buttonIndex, MyGuiControlButtonTextAlignment textAlignement, bool canHandleKeyboardInput,\n            MyGuiDrawAlignEnum align, bool implementedFeature, MyTextsWrapperEnum? accessForbiddenReason)\n            : this(parent, position, size, backgroundColor, MyTextsWrapper.Get(textEnum), textColor, textScale, onIndexedButtonClick, buttonIndex,\n            textAlignement, canHandleKeyboardInput, align, null, implementedFeature)\n        {\n            m_accessForbiddenReason = accessForbiddenReason;\n            m_canHandleKeyboardActiveControl &= m_accessForbiddenReason == null;\n        }\n\n        public MyGuiControlButton(IMyGuiControlsParent parent, Vector2 position, Vector2? size, Vector4 backgroundColor, MyTextsWrapperEnum textEnum,\n            Vector4 textColor, float textScale, OnButtonClick onButtonClick, MyGuiControlButtonTextAlignment textAlignement, bool canHandleKeyboardInput,\n            MyGuiDrawAlignEnum align, bool implementedFeature)\n            : this(parent, position, size, backgroundColor, MyTextsWrapper.Get(textEnum), null, textColor, textScale, onButtonClick, textAlignement,\n            canHandleKeyboardInput, align, implementedFeature)\n        {\n        }\n\n        public MyGuiControlButton(IMyGuiControlsParent parent, Vector2 position, Vector2? size, Vector4 backgroundColor, MyTextsWrapperEnum textEnum, MyTextsWrapperEnum tooltip,\n            Vector4 textColor, float textScale, OnButtonClick onButtonClick, MyGuiControlButtonTextAlignment textAlignement, bool canHandleKeyboardInput,\n            MyGuiDrawAlignEnum align, bool implementedFeature)\n            : this(parent, position, size, backgroundColor, MyTextsWrapper.Get(textEnum), MyTextsWrapper.Get(tooltip), textColor, textScale, onButtonClick, textAlignement,\n            canHandleKeyboardInput, align, implementedFeature)\n        {\n        }\n\n        // with delegate for indexed onButtonClick\n        public MyGuiControlButton(IMyGuiControlsParent parent, Vector2 position, Vector2? size, Vector4 backgroundColor, MyTextsWrapperEnum textEnum,\n            Vector4 textColor, float textScale, OnIndexedButtonClick onIndexedButtonClick, int buttonIndex, MyGuiControlButtonTextAlignment textAlignment, bool canHandleKeyboardInput,\n            MyGuiDrawAlignEnum align, bool implementedFeature)\n            : this(parent, position, size, backgroundColor, MyTextsWrapper.Get(textEnum), textColor, textScale, onIndexedButtonClick, buttonIndex,\n            textAlignment, canHandleKeyboardInput, align, null, implementedFeature)\n        {\n        }\n\n        //  Text constructor\n        public MyGuiControlButton(IMyGuiControlsParent parent, Vector2 position, Vector2? size, Vector4 backgroundColor, StringBuilder text, StringBuilder tooltip,\n            Vector4 textColor, float textScale, OnButtonClick onButtonClick, MyGuiControlButtonTextAlignment textAlignment, bool canHandleKeyboardInput,\n            MyGuiDrawAlignEnum align, bool implementedFeature)\n            : this(parent, position, size, backgroundColor, null, null, null, onButtonClick, canHandleKeyboardInput, align, tooltip, implementedFeature, true, MyGuiControlHighlightType.WHEN_ACTIVE, null, null/*, null, null*/)\n        {\n            m_textColor = textColor;\n            Text = text;\n            m_textScale = textScale;\n            m_textAlignment = textAlignment;\n        }\n\n        //  Text constructor with delegate for indexed onButtonClick\n        public MyGuiControlButton(IMyGuiControlsParent parent, Vector2 position, Vector2? size, Vector4 backgroundColor, StringBuilder text,\n            Vector4 textColor, float textScale, OnIndexedButtonClick onIndexedButtonClick, int buttonIndex, MyGuiControlButtonTextAlignment textAlignement, bool canHandleKeyboardInput,\n            MyGuiDrawAlignEnum align, StringBuilder tooltip, bool implementedFeature)\n            : this(parent, position, size, backgroundColor, onIndexedButtonClick, buttonIndex, canHandleKeyboardInput, align, tooltip, implementedFeature, true)\n        {\n            m_textColor = textColor;\n            Text = text;\n            m_textScale = textScale;\n            m_textAlignment = textAlignement;\n        }\n\n        public MyGuiControlButton(IMyGuiControlsParent parent, Vector2 position, Vector2? size, Vector4 backgroundColor, MyTexture2D buttonTexture, MyTexture2D hoverButtonTexture, MyTexture2D pressedButtonTexture,\n            MyTextsWrapperEnum textEnum, Vector4 textColor, float textScale, MyGuiControlButtonTextAlignment textAlignment,\n            OnButtonClick onButtonClick, bool canHandleKeyboardInput, MyGuiDrawAlignEnum align, bool implementedFeature, bool canHandleKeyboardActiveControl)\n            : this(parent, position, size, backgroundColor, buttonTexture, hoverButtonTexture, pressedButtonTexture, textEnum, textColor, textScale, textAlignment, onButtonClick,\n            canHandleKeyboardInput, align, implementedFeature, canHandleKeyboardActiveControl,MyGuiControlHighlightType.WHEN_ACTIVE)\n        {\n            \n        }\n        \n        public MyGuiControlButton(IMyGuiControlsParent parent, Vector2 position, Vector2? size, Vector4 backgroundColor, MyTexture2D buttonTexture, MyTexture2D hoverButtonTexture, MyTexture2D pressedButtonTexture,\n    MyTextsWrapperEnum textEnum, Vector4 textColor, float textScale, MyGuiControlButtonTextAlignment textAlignment,\n    OnButtonClick onButtonClick, bool canHandleKeyboardInput, MyGuiDrawAlignEnum align, bool implementedFeature, bool canHandleKeyboardActiveControl, bool useBackground, bool drawCrossTextureWhenDisabled = true)\n            : this(parent, position, size, backgroundColor, buttonTexture, hoverButtonTexture, pressedButtonTexture, textEnum, textColor, textScale, textAlignment, onButtonClick,\n            canHandleKeyboardInput, align, implementedFeature, canHandleKeyboardActiveControl, MyGuiControlHighlightType.WHEN_ACTIVE)\n        {\n            m_useBackground = useBackground;       \n        }\n\n\n\n        // Image without text constructor\n        public MyGuiControlButton(IMyGuiControlsParent parent, Vector2 position, Vector2? size, Vector4 backgroundColor, \n            MyTexture2D buttonTexture, MyTexture2D hoverButtonTexture, MyTexture2D pressedButtonTexture, StringBuilder tooltip,\n            OnButtonClick onButtonClick, bool canHandleKeyboardInput, MyGuiDrawAlignEnum align, bool implementedFeature, bool canHandleKeyboardActiveControl, MyGuiControlHighlightType highlightType)\n            : this(parent, position,\n            size, backgroundColor, buttonTexture, hoverButtonTexture, pressedButtonTexture, tooltip, onButtonClick, canHandleKeyboardInput, align, implementedFeature, \n            canHandleKeyboardActiveControl, highlightType, null, null/*, null, null*/)\n        {\n            \n        }\n\n        // Image without text constructor and with custom mouse cursor textures\n        public MyGuiControlButton(IMyGuiControlsParent parent, Vector2 position, Vector2? size, Vector4 backgroundColor,\n            MyTexture2D buttonTexture, MyTexture2D hoverButtonTexture, MyTexture2D pressedButtonTexture, StringBuilder tooltip,\n            OnButtonClick onButtonClick, bool canHandleKeyboardInput, MyGuiDrawAlignEnum align, bool implementedFeature, bool canHandleKeyboardActiveControl, \n            MyGuiControlHighlightType highlightType, MyTexture2D mouseCursorHoverTexture, MyTexture2D mouseCursorPressedTexture/*,\n            System.Drawing.Bitmap mouseCursorHoverBitmap, System.Drawing.Bitmap mouseCursorPressedBitmap*/)\n            : this(parent, position, size, backgroundColor, buttonTexture, hoverButtonTexture, pressedButtonTexture, onButtonClick, canHandleKeyboardInput, align, tooltip, implementedFeature,\n            canHandleKeyboardActiveControl, highlightType, mouseCursorHoverTexture, mouseCursorPressedTexture/*, mouseCursorHoverBitmap, mouseCursorPressedBitmap*/)\n        {\n\n        }\n\n        //  Image constructor\n        public MyGuiControlButton(IMyGuiControlsParent parent, Vector2 position, Vector2? size, Vector4 backgroundColor, MyTexture2D buttonTexture, MyTexture2D hoverButtonTexture, MyTexture2D pressedButtonTexture, \n            MyTextsWrapperEnum textEnum, Vector4 textColor, float textScale, MyGuiControlButtonTextAlignment textAlignment,\n            OnButtonClick onButtonClick, bool canHandleKeyboardInput, MyGuiDrawAlignEnum align, bool implementedFeature, bool canHandleKeyboardActiveControl, MyGuiControlHighlightType highlightType)\n            : this(parent, position, size, backgroundColor, buttonTexture, hoverButtonTexture, pressedButtonTexture, onButtonClick, canHandleKeyboardInput, align, null, implementedFeature, canHandleKeyboardActiveControl, highlightType, null, null/*, null, null*/)\n        {\n            Text = MyTextsWrapper.Get(textEnum);\n            m_textColor = textColor;\n            m_textAlignment = textAlignment;\n            m_textScale = textScale;\n        }        \n\n        //  Base constructor\n        private MyGuiControlButton(IMyGuiControlsParent parent, Vector2 position, Vector2? size, Vector4 backgroundColor, MyTexture2D buttonTexture, MyTexture2D hoverButtonTexture, MyTexture2D pressedButtonTexture,\n            OnButtonClick onButtonClick, bool canHandleKeyboardInput, MyGuiDrawAlignEnum align, StringBuilder tooltip, bool implementedFeature, bool canHandleKeyboardActiveControl, MyGuiControlHighlightType highlightType,\n            MyTexture2D mouseCursorHoverTexture, MyTexture2D mouseCursorPressedTexture/*,\n            System.Drawing.Bitmap mouseCursorHoverBitmap, System.Drawing.Bitmap mouseCursorPressedBitmap*/)\n            : base(parent, MyGuiManager.GetAlignedCoordinate(position, size.Value, align) + new Vector2(size.Value.X / 2.0f, size.Value.Y / 2.0f), size, backgroundColor, tooltip,\n             buttonTexture, hoverButtonTexture, pressedButtonTexture, true, highlightType, mouseCursorHoverTexture, mouseCursorPressedTexture/*, mouseCursorHoverBitmap, mouseCursorPressedBitmap*/)\n        {\n            m_canHandleKeyboardActiveControl = canHandleKeyboardActiveControl && implementedFeature;\n            m_onButtonClick = onButtonClick;\n            m_canHandleKeyboardInput = canHandleKeyboardInput && implementedFeature;\n            m_implementedFeature = implementedFeature;\n        }\n\n        //  Base constructor with delegate for indexed onButtonClick\n        private MyGuiControlButton(IMyGuiControlsParent parent, Vector2 position, Vector2? size, Vector4 backgroundColor,\n             MyTexture2D buttonTexture, MyTexture2D hoverButtonTexture, MyTexture2D pressedButtonTexture,\n            OnIndexedButtonClick onIndexedButtonClick, int buttonIndex, bool canHandleKeyboardInput, MyGuiDrawAlignEnum align, bool implementedFeature, bool canHandleKeyboardActiveControl)\n            : base(parent, MyGuiManager.GetAlignedCoordinate(position, size.Value, align) + new Vector2(size.Value.X / 2.0f, size.Value.Y / 2.0f), size, backgroundColor, null,\n             buttonTexture, hoverButtonTexture, pressedButtonTexture, true)\n        {\n            m_canHandleKeyboardActiveControl = canHandleKeyboardActiveControl;\n            m_onIndexedButtonClick = onIndexedButtonClick;\n            m_buttonIndex = buttonIndex;\n            m_canHandleKeyboardInput = canHandleKeyboardInput;\n            m_implementedFeature = implementedFeature;\n        }\n\n        //  Base constructor with delegate for indexed onButtonClick and tooltip\n        private MyGuiControlButton(IMyGuiControlsParent parent, Vector2 position, Vector2? size, Vector4 backgroundColor,\n            OnIndexedButtonClick onIndexedButtonClick, int buttonIndex, bool canHandleKeyboardInput, MyGuiDrawAlignEnum align, StringBuilder toolTip, bool implementedFeature, bool canHandleKeyboardActiveControl)\n            : base(parent, MyGuiManager.GetAlignedCoordinate(position, size.Value, align) + new Vector2(size.Value.X / 2.0f, size.Value.Y / 2.0f), size, backgroundColor, toolTip)\n        {\n            m_canHandleKeyboardActiveControl = canHandleKeyboardActiveControl;\n            m_onIndexedButtonClick = onIndexedButtonClick;\n            m_buttonIndex = buttonIndex;\n            m_canHandleKeyboardInput = canHandleKeyboardInput;\n            m_implementedFeature = implementedFeature;\n        }\n\n        public StringBuilder Text\n        {\n            get { return m_text; }\n            set { m_text = value; }\n        }\n\n\n\n\n        //  Method returns true if input was captured by control, so no other controls, nor screen can use input in this update\n        public override bool HandleInput(MyGuiInput input, bool hasKeyboardActiveControl, bool hasKeyboardActiveControlPrevious, bool receivedFocusInThisUpdate)\n        {\n            bool captureInput = base.HandleInput(input, hasKeyboardActiveControl, hasKeyboardActiveControlPrevious, receivedFocusInThisUpdate);\n\n            if (captureInput == false)\n            {\n                if (((IsMouseOver() == true) && ((input.IsNewLeftMouseReleased() == true))) ||\n                    ((hasKeyboardActiveControl == true) && (m_canHandleKeyboardInput == true) && ((input.IsJoystickButtonNewPressed(MyJoystickButtonsEnum.J01)) || (input.IsNewKeyPress(Keys.Enter)) || (input.IsNewKeyPress(Keys.Space)))))\n                {\n                    if (m_implementedFeature == false)\n                    {\n                        MyAudio.AddCue2D(MySoundCuesEnum.GuiMouseClick);\n                        MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.FeatureNotYetImplemented,\n                            MyTextsWrapperEnum.MessageBoxCaptionFeatureDisabled, MyTextsWrapperEnum.Ok, null));\n                    }\n                    else if (m_accessForbiddenReason != null)\n                    {\n                        MyAudio.AddCue2D(MySoundCuesEnum.GuiMouseClick);\n                        MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, m_accessForbiddenReason.Value,\n                            MyTextsWrapperEnum.MessageBoxCaptionFeatureDisabled, MyTextsWrapperEnum.Ok, null));\n                    }\n                    else if (Enabled || UseSwitchMode)\n                    {\n                        MyAudio.AddCue2D(MySoundCuesEnum.GuiMouseClick);\n                        if (m_onButtonClick != null)\n                        {\n                            m_onButtonClick(this);\n                        }\n                        else if (m_onIndexedButtonClick != null)\n                        {\n                            m_onIndexedButtonClick(m_buttonIndex);\n                        }\n                    }\n\n                    captureInput = true;\n                }\n            }\n\n            return captureInput;\n        }\n\n        public override void Update()\n        {\n            base.Update();\n\n            if (IsMouseOverOrKeyboardActive())\n            {\n                if (m_ScaleAnimationState == ScaleAnimationState.None) \n                {\n                    m_ScaleAnimationCurrentTime = 0;\n                    m_ScaleAnimationState = ScaleAnimationState.ScaleIn;\n                }\n\n                if (m_ScaleAnimationState == ScaleAnimationState.ScaleOut)\n                {\n                    m_ScaleAnimationCurrentTime = MyGuiConstants.BUTTON_HOVER_SCALE_TIME - m_ScaleAnimationCurrentTime;\n                    m_ScaleAnimationState = ScaleAnimationState.ScaleIn;\n                }\n            }\n            else\n            {\n                if (m_ScaleAnimationState == ScaleAnimationState.ScaleIn)\n                {\n                    m_ScaleAnimationCurrentTime = MyGuiConstants.BUTTON_HOVER_SCALE_TIME - m_ScaleAnimationCurrentTime;\n                    m_ScaleAnimationState = ScaleAnimationState.ScaleOut;\n                }\n\n                if (m_ScaleAnimationState == ScaleAnimationState.Scaled)\n                {\n                    m_ScaleAnimationCurrentTime = MyGuiConstants.BUTTON_HOVER_SCALE_TIME;\n                    m_ScaleAnimationState = ScaleAnimationState.ScaleOut;\n                }\n            }\n    \n            int timeDelta = MyMinerGame.TotalGamePlayTimeInMilliseconds - m_LastTime;\n\n            switch (m_ScaleAnimationState)\n            {\n                case ScaleAnimationState.ScaleIn:\n                    m_ScaleAnimationCurrentTime += timeDelta;\n                    if (m_ScaleAnimationCurrentTime >= MyGuiConstants.BUTTON_HOVER_SCALE_TIME)\n                    {\n                        m_ScaleAnimationCurrentTime = MyGuiConstants.BUTTON_HOVER_SCALE_TIME;\n                        m_ScaleAnimationState = ScaleAnimationState.Scaled;\n                    }\n\n                    m_scale = 1.0f + (MyGuiConstants.BUTTON_HOVER_SCALE - 1.0f) * m_ScaleAnimationCurrentTime / MyGuiConstants.BUTTON_HOVER_SCALE_TIME;\n\n                    break;\n\n                case ScaleAnimationState.Scaled:\n                    m_scale = MyGuiConstants.BUTTON_HOVER_SCALE;\n\n                    if (m_mouseButtonPressed)\n                    {\n                        m_scale *= MyGuiConstants.BUTTON_PRESSED_SCALE;\n                    }\n            \n                    break;\n\n                case ScaleAnimationState.ScaleOut:\n                    m_ScaleAnimationCurrentTime -= timeDelta;\n                    if (m_ScaleAnimationCurrentTime <= 0)\n                    {\n                        m_ScaleAnimationCurrentTime = 0;\n                        m_ScaleAnimationState = ScaleAnimationState.None;\n                    }\n\n                    m_scale = 1.0f + (MyGuiConstants.BUTTON_HOVER_SCALE - 1.0f) * m_ScaleAnimationCurrentTime / MyGuiConstants.BUTTON_HOVER_SCALE_TIME;\n\n                    break;\n\n\n                default:\n                    break;\n            }\n\n\n            m_LastTime = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n        }\n\n\n        public override void Draw()\n        {            \n            MyTexture2D buttonTexture = null;\n            MyTexture2D backgroundTexture = null;\n\n            if (m_controlTexture == null)\n            {\n                if (m_size.HasValue && m_size.Value.Y < MyGuiConstants.MAIN_MENU_BUTTON_SIZE.Y)\n                {\n                    buttonTexture = MyGuiManager.GetConfirmButton();\n                }\n                else\n\t            {\n                    buttonTexture = MyGuiManager.GetButtonTexture();\n\t            }\n                \n            }\n            else\n\t        {\n                if (IsMouseOver() && m_mouseButtonPressed && m_pressedTexture != null)\n                {\n                    buttonTexture = m_pressedTexture;\n                }\n                else if (IsMouseOver() && m_hoverTexture != null)\n                {\n                    buttonTexture = m_hoverTexture;\n                }\n                else\n                {\n                    buttonTexture = m_controlTexture;\n                }\n\t        }\n\n            backgroundTexture = MyGuiManager.GetButtonTextureBg(buttonTexture);\n\n            bool isNotImplementedForbidenOrDisabled = !m_implementedFeature || m_accessForbiddenReason != null || !Enabled;\n            Vector4 backgroundColor, textColor;\n            if (!UseSwitchMode)\n            {\n                bool isHighlighted = IsMouseOverOrKeyboardActive() &&\n                    (m_highlightType == MyGuiControlHighlightType.WHEN_ACTIVE || (m_highlightType == MyGuiControlHighlightType.WHEN_CURSOR_OVER && IsMouseOver()));\n\n                backgroundColor = isNotImplementedForbidenOrDisabled ?\n                    (DrawRedTextureWhenDisabled ? MyGuiConstants.DISABLED_BUTTON_COLOR_VECTOR : m_backgroundColor.Value * MyGuiConstants.DISABLED_BUTTON_NON_RED_MULTIPLIER) :\n                    (isHighlighted ? m_backgroundColor.Value * MyGuiConstants.CONTROL_MOUSE_OVER_BACKGROUND_COLOR_MULTIPLIER : m_backgroundColor.Value);\n\n                textColor = isNotImplementedForbidenOrDisabled ?\n                    (DrawRedTextureWhenDisabled ? MyGuiConstants.DISABLED_BUTTON_TEXT_COLOR : m_textColor * MyGuiConstants.DISABLED_BUTTON_NON_RED_MULTIPLIER) :\n                    (isHighlighted ? m_textColor * MyGuiConstants.CONTROL_MOUSE_OVER_BACKGROUND_COLOR_MULTIPLIER : m_textColor);\n            }\n            else\n            {\n                backgroundColor = isNotImplementedForbidenOrDisabled ?\n                    (DrawRedTextureWhenDisabled ? MyGuiConstants.DISABLED_BUTTON_COLOR_VECTOR : m_backgroundColor.Value * MyGuiConstants.DISABLED_BUTTON_NON_RED_MULTIPLIER * 2) :\n                    (m_backgroundColor.Value * 0.75f);\n\n                textColor = isNotImplementedForbidenOrDisabled ?\n                    (DrawRedTextureWhenDisabled ? MyGuiConstants.DISABLED_BUTTON_TEXT_COLOR : m_textColor * MyGuiConstants.DISABLED_BUTTON_NON_RED_MULTIPLIER * 2) :\n                    (m_textColor * 0.75f);\n            }\n\n            if (backgroundTexture!=null && m_useBackground)\n            {\n                // Draw background texture\n                MyGuiManager.DrawSpriteBatch(backgroundTexture, m_parent.GetPositionAbsolute() + m_position, m_size.Value * m_scale,\n                    Color.White, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER);\n            }\n\n            // Draw background texture\n            if (buttonTexture != null)\n            {\n                MyGuiManager.DrawSpriteBatch(buttonTexture, m_parent.GetPositionAbsolute() + m_position, m_size.Value * m_scale,\n                    GetColorAfterTransitionAlpha(backgroundColor), MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER);\n            }\n            \n            // Draw cross texture \n            if (isNotImplementedForbidenOrDisabled && DrawCrossTextureWhenDisabled)\n            {\n                MyGuiManager.DrawSpriteBatch(MyGuiManager.GetLockedButtonTexture(), m_parent.GetPositionAbsolute() + m_position, m_size.Value * MyGuiConstants.LOCKBUTTON_SIZE_MODIFICATION,\n                    MyGuiConstants.DISABLED_BUTTON_COLOR, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER);\n            }\n\n            if (Text != null)\n            {\n                Vector2 textPosition;\n                MyGuiDrawAlignEnum textDrawAlign;\n                if (m_textAlignment == MyGuiControlButtonTextAlignment.CENTERED)\n                {\n                    textPosition = m_parent.GetPositionAbsolute() + m_position;\n                    textDrawAlign = MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER;\n                }\n                else if (m_textAlignment == MyGuiControlButtonTextAlignment.LEFT)\n                {\n                    //  This will move text few pixels from button's left border\n                    textPosition = m_parent.GetPositionAbsolute() + m_position - new Vector2(m_size.Value.X / 2.0f, 0) + new Vector2(MyGuiConstants.BUTTON_TEXT_OFFSET.X, 0);\n                    textDrawAlign = MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER;\n                }\n                else\n                {\n                    throw new MyMwcExceptionApplicationShouldNotGetHere();\n                }\n\n                textPosition += TextOffset;\n\n                MyGuiManager.DrawString(MyGuiManager.GetFontMinerWarsBlue(), Text, textPosition, m_textScale, GetColorAfterTransitionAlpha(textColor), textDrawAlign);\n            }\n\n            //ShowToolTip();\n        }\n\n        public void SetTextEnum(MyTextsWrapperEnum textEnum)\n        {\n            Text = MyTextsWrapper.Get(textEnum);\n        }\n\n        public void SetText(StringBuilder text)\n        {\n            Text = text;\n        }\n\n        public void SetTextures(MyTexture2D buttonTexture, MyTexture2D hoverButtonTexture, MyTexture2D pressedButtonTexture)\n        {\n            m_controlTexture = buttonTexture;\n            m_hoverTexture = hoverButtonTexture;\n            m_pressedButtonTexture = pressedButtonTexture;\n        }        \n\n        public void SetSize(Vector2 size)\n        {\n            m_size = size;\n        }\n\n        public void SetHightlightType(MyGuiControlHighlightType hightlightType)\n        {\n            m_highlightType = hightlightType;\n        }\n\n        public void SetToolTip(StringBuilder tooltip)\n        {\n            m_toolTip = new MyToolTips(tooltip);\n        }\n\n        internal void SetTextScale(float textScale)\n        {\n            m_textScale = textScale;\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Core/MyGuiControlCheckbox.cs",
    "content": "﻿using System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Toolkit.Input;\nusing MinerWars.AppCode.Game.Managers;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Audio;\n\nnamespace MinerWars.AppCode.Game.GUI.Core\n{\n    class MyGuiControlCheckbox : MyGuiControlBase\n    {\n        public delegate void OnCheckBoxCheckCallback(MyGuiControlCheckbox sender);\n        public OnCheckBoxCheckCallback OnCheck;\n\n        bool m_checked;\n        bool m_highlightWhenChecked;\n        MyTexture2D m_checkedTexture;\n        MyGuiControlLabel m_label;\n        bool m_highlight;\n\n        private Vector2? m_innerSize; // if we have bigger texture than control\n        //public MyGuiControlCheckbox(MyGuiScreenBase parentScreen, Vector2 position, Vector2 size, bool checkedVal, Vector4 color)\n        //    : base(parentScreen, position, size, color, null, MyGuiManager.GetCheckboxTexture(), null, null, true)\n        //{\n        //    m_canHandleKeyboardActiveControl = true;\n        //    m_checked = checkedVal;\n        //    m_backgroundColor = color;\n        //}\n\n\n        public MyGuiControlCheckbox(IMyGuiControlsParent parent, Vector2 position, bool checkedVal, Vector4 color, MyGuiControlLabel label)\n            : this(parent, position, MyGuiConstants.CHECKBOX_WITH_GLOW_SIZE, MyGuiManager.GetCheckboxOffTexture(), MyGuiManager.GetCheckboxOnTexture(), null, checkedVal, color, false, label)\n        {\n        }\n\n\n        public MyGuiControlCheckbox(IMyGuiControlsParent parent, Vector2 position, Vector2 size, bool checkedVal, Vector4 color)\n            : this(parent, position, size, MyGuiManager.GetCheckboxOffTexture(), MyGuiManager.GetCheckboxOnTexture(), null, checkedVal, color, false, null)\n        {            \n        }\n\n        public MyGuiControlCheckbox(IMyGuiControlsParent parent, Vector2 position, bool checkedVal, Vector4 color)\n            : this(parent, position, MyGuiConstants.CHECKBOX_WITH_GLOW_SIZE, checkedVal, color)\n        {\n        }\n\n\n        public MyGuiControlCheckbox(IMyGuiControlsParent parent, Vector2 position, Vector2 size, MyTexture2D texture, MyTexture2D checkedTexture,\n    StringBuilder toolTip, bool checkedVal, Vector4 color, bool highlightWhenChecked, bool canHandeKeyboard )\n            : this(parent, position, size, texture, checkedTexture, toolTip, checkedVal, color, highlightWhenChecked, null)\n        {\n            m_canHandleKeyboardActiveControl = canHandeKeyboard;\n        }\n\n        public MyGuiControlCheckbox(IMyGuiControlsParent parent, Vector2 position, Vector2 size, MyTexture2D texture, MyTexture2D checkedTexture,\nStringBuilder toolTip, bool checkedVal, Vector4 color, bool highlightWhenChecked, bool canHandeKeyboard, Vector2 innerSize)\n            : this(parent, position, size, texture, checkedTexture, toolTip, checkedVal, color, highlightWhenChecked, null, innerSize)\n        {\n            m_canHandleKeyboardActiveControl = canHandeKeyboard;\n        }\n\n\n        public MyGuiControlCheckbox(IMyGuiControlsParent parent, Vector2 position, Vector2 size, MyTexture2D texture, MyTexture2D checkedTexture,\n            StringBuilder toolTip, bool checkedVal, Vector4 color, bool highlightWhenChecked)\n            : this(parent, position, size, texture, checkedTexture, toolTip, checkedVal, color, highlightWhenChecked, null)\n        {   \n        }\n\n        public MyGuiControlCheckbox(IMyGuiControlsParent parent, Vector2 position, Vector2 size, MyTexture2D texture, MyTexture2D checkedTexture,\n            StringBuilder toolTip, bool checkedVal, Vector4 color, bool highlightWhenChecked, MyGuiControlLabel label, Vector2? innerSize = null)\n            : base(parent, position, size, color, toolTip, texture, null, null, true)\n        {\n            m_canHandleKeyboardActiveControl = true;\n            m_checked = checkedVal;\n            m_highlightWhenChecked = false; // highlightWhenChecked; this feature is depracted\n            m_checkedTexture = checkedTexture;\n            m_label = label;\n            if (m_label != null) {\n                m_label.MouseEnter += delegate\n                {\n                    m_highlight = true;\n                };\n                m_label.MouseLeave += delegate\n                {\n                    m_highlight = false;\n                };\n                m_label.Click += delegate\n                {\n                    UserCheck();\n                };\n            }\n            if (innerSize == null) m_innerSize = size;\n            else m_innerSize = innerSize;\n        }\n\n        //  Checks if mouse cursor is over control\n        protected override bool CheckMouseOver()\n        {\n            //  If size isn't specified, this test can't be done and that was probably intend\n            if (m_innerSize.HasValue == false) return false;\n\n            return CheckMouseOver(m_innerSize.Value * m_scale, m_parent.GetPositionAbsolute());\n        }\n\n\n        public void SetSize(Vector2 size)\n        {\n            m_size = size;\n        }\n\n        public bool Checked\n        {\n            set\n            {\n                bool fireEvent = m_checked != value;\n                m_checked = value;\n\n                if (fireEvent && OnCheck != null) \n                    OnCheck(this);\n            }\n\n            get\n            {\n                return m_checked;\n            }\n        }\n\n        private void UserCheck()\n        {\n            MyAudio.AddCue2D(MySoundCuesEnum.GuiMouseClick);\n            Checked = !Checked;\n        }\n\n\n        //this twho methods doesnt fire event\n        public void Check()\n        {\n            m_checked = true;\n        }\n\n        public void UnCheck()\n        {\n            m_checked = false;\n        }\n\n        //  Method returns true if input was captured by control, so no other controls, nor screen can use input in this update\n        public override bool HandleInput(MyGuiInput input, bool hasKeyboardActiveControl, bool hasKeyboardActiveControlPrevious, bool isThisFirstHandleInput)\n        {\n            if (!Enabled)\n                return false;\n\n            bool ret = base.HandleInput(input, hasKeyboardActiveControl, hasKeyboardActiveControlPrevious, isThisFirstHandleInput);\n\n            if (ret == false)\n            {\n                if (((IsMouseOver() == true) && input.IsNewLeftMousePressed() ) ||\n                    ((hasKeyboardActiveControl == true) && ((input.IsNewKeyPress(Keys.Enter) || (input.IsNewKeyPress(Keys.Space)) || (input.IsNewGameControlPressed(MyGameControlEnums.FIRE_PRIMARY) && !input.IsNewLeftMousePressed())))))\n                {\n                    UserCheck();\n\n                    ret = true;\n                }\n            }\n\n            return ret;\n        }\n\n\n    \n        public override void Draw()\n        {\n            Vector4? oldBackgroundColor = m_backgroundColor;\n\n            if (m_highlight == true)\n            {\n                if (m_backgroundColor != null) {\n                    m_backgroundColor = m_backgroundColor.Value * MyGuiConstants.CONTROL_MOUSE_OVER_BACKGROUND_COLOR_MULTIPLIER;\n                }\n            }\n            \n            base.Draw();\n\n            m_backgroundColor = oldBackgroundColor;\n\n            if (m_checked == true)\n            {\n                Vector4 checkedColor = !Enabled ? MyGuiConstants.DISABLED_BUTTON_COLOR_VECTOR : (IsMouseOverOrKeyboardActive() || m_highlightWhenChecked) ?\n                    m_backgroundColor.Value * MyGuiConstants.CONTROL_MOUSE_OVER_BACKGROUND_COLOR_MULTIPLIER : m_backgroundColor.Value;\n\n                //  Checked sprite (fajka)\n                MyGuiManager.DrawSpriteBatch(m_checkedTexture, m_parent.GetPositionAbsolute() + m_position, m_size.Value,\n                    GetColorAfterTransitionAlpha(checkedColor), MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Core/MyGuiControlColor.cs",
    "content": "﻿using System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Managers;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils.Utils;\n\n//  Label is defined by string builder or by text enum. Only one of them at a time. It's good to use enum whenever \n//  possible, as it easily supports changing languages. Use string builder only if the text isn't and can't be defined \n//  in text resources.\n//\n//  If enum version is used, then text won't be stored in string builder until you use UpdateParams\n\n\nnamespace MinerWars.AppCode.Game.GUI.Core\n{\n    class MyGuiControlColor : MyGuiControlBase\n    {\n        public delegate void OnColorChangeCallback(MyGuiControlColor sender);\n        public OnColorChangeCallback OnChange = null;\n\n        Color m_color;\n        MyGuiControlSlider m_RSlider;\n        MyGuiControlSlider m_GSlider;\n        MyGuiControlSlider m_BSlider;\n        MyGuiControlLabel m_RLabel;\n        MyGuiControlLabel m_GLabel;\n        MyGuiControlLabel m_BLabel;\n\n        bool m_canChangeColor = true;\n\n        public MyGuiControlColor(IMyGuiControlsParent parent, StringBuilder text, Vector2 position, Vector2? size, float scale, Color color)\n            : base(parent, position, size, null, null, false)\n        {\n\n            m_color = color;\n\n\n            float localScale = 0.5f;\n\n            MyGuiControlLabel label = new MyGuiControlLabel(parent, position, null, text, Color.Yellow.ToVector4(), MyGuiConstants.LABEL_TEXT_SCALE * 0.8f * m_scale,\n                                            MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER);\n\n            parent.Controls.Add(label);\n            position.Y += 0.04f * m_scale;\n\n            m_RSlider = new MyGuiControlSlider(parent, position + new Vector2(0.04f, 0) * m_scale, 0.2f, 0, 255, new Vector4(1, 1, 0, 1),\n                new StringBuilder(), 0.1f, 3, 0.65f * m_scale * localScale, m_scale * localScale);\n            parent.Controls.Add(m_RSlider);\n            m_RSlider.SetValue(m_color.R);\n            m_RSlider.OnChange += delegate(MyGuiControlSlider sender)\n            {\n                if (m_canChangeColor)\n                {\n                    m_color.R = (byte)sender.GetValue();\n                    UpdateTexts();\n                    if (OnChange != null)\n                        OnChange(this);\n                }\n            };\n            m_RLabel = new MyGuiControlLabel(parent, position, null, new StringBuilder(), Color.Yellow.ToVector4(), MyGuiConstants.LABEL_TEXT_SCALE * 0.8f * m_scale, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP);\n            parent.Controls.Add(m_RLabel);\n\n            m_GSlider = new MyGuiControlSlider(parent, position + new Vector2(0.04f + 0.1f, 0) * m_scale, 0.2f, 0, 255, new Vector4(1, 1, 0, 1),\n    new StringBuilder(), 0.1f, 3, 0.65f * m_scale * localScale, m_scale * localScale);\n            parent.Controls.Add(m_GSlider);\n            m_GSlider.SetValue(m_color.G);\n            m_GSlider.OnChange += delegate(MyGuiControlSlider sender)\n            {\n                if (m_canChangeColor)\n                {\n                    m_color.G = (byte)sender.GetValue();\n                    UpdateTexts();\n                    if (OnChange != null)\n                        OnChange(this);\n                }\n            };\n            m_GLabel = new MyGuiControlLabel(parent, position + new Vector2(0.04f + 0.1f, 0) * m_scale, null, new StringBuilder(), Color.Yellow.ToVector4(), MyGuiConstants.LABEL_TEXT_SCALE * 0.8f * m_scale, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP);\n            parent.Controls.Add(m_GLabel);\n\n            m_BSlider = new MyGuiControlSlider(parent, position + new Vector2(0.04f + 2 * 0.1f, 0) * m_scale, 0.2f, 0, 255, new Vector4(1, 1, 0, 1),\nnew StringBuilder(), 0.1f, 3, 0.65f * m_scale * localScale, m_scale * localScale);\n            parent.Controls.Add(m_BSlider);\n            m_BSlider.SetValue(m_color.B);\n            m_BSlider.OnChange += delegate(MyGuiControlSlider sender)\n            {\n                if (m_canChangeColor)\n                {\n                    m_color.B = (byte)sender.GetValue();\n                    UpdateTexts();\n                    if (OnChange != null)\n                        OnChange(this);\n                }\n            };\n            m_BLabel = new MyGuiControlLabel(parent, position + new Vector2(0.04f + 2 * 0.1f, 0) * m_scale, null, new StringBuilder(), Color.Yellow.ToVector4(), MyGuiConstants.LABEL_TEXT_SCALE * 0.8f * m_scale, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP);\n            parent.Controls.Add(m_BLabel);\n\n\n            \n        }\n\n        public override void Draw()\n        {\n            base.Draw();\n\n            MyGuiManager.DrawSpriteBatch(MyGuiManager.GetBlankTexture(), m_parent.GetPositionAbsolute() + m_position + new Vector2(0.19f, 0.005f), new Vector2(0.1f, 0.03f), m_color, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER);\n        }\n\n        private void UpdateSliders()\n        {\n            m_canChangeColor = false;\n            m_RSlider.SetValue((byte)m_color.R);\n            m_GSlider.SetValue((byte)m_color.G);\n            m_BSlider.SetValue((byte)m_color.B);\n\n            UpdateTexts();\n\n            m_canChangeColor = true;\n        }\n\n        private void UpdateTexts()\n        {\n            m_RLabel.UpdateText(((byte)m_color.R).ToString());\n            m_GLabel.UpdateText(((byte)m_color.G).ToString());\n            m_BLabel.UpdateText(((byte)m_color.B).ToString());\n        }\n\n        public void SetColor(Vector3 color)\n        {\n            SetColor(new Color(color));\n        }\n\n        public void SetColor(Vector4 color)\n        {\n            SetColor(new Color(color));\n        }\n\n        public void SetColor(Color color)\n        {\n            m_color = color;\n            \n            UpdateSliders();\n            if (OnChange != null)\n                OnChange(this);\n        }\n\n        public Color GetColor()\n        {\n            return m_color;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Core/MyGuiControlCombobox.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWarsMath.Graphics;\nusing MinerWars.AppCode.Toolkit.Input;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Audio;\nusing SysUtils.Utils;\nusing MinerWars.AppCode.Game.Textures;\n\nnamespace MinerWars.AppCode.Game.GUI.Core\n{\n    class MyGuiControlCombobox : MyGuiControlBase\n    {\n        public class MyGuiControlComboboxItem : IComparable\n        {\n            public int Key;\n            public MyTexture2D Icon;\n            public StringBuilder Value;\n            public int SortOrder;\n            public MyToolTips ToolTip;\n\n            public MyGuiControlComboboxItem(int key, MyTexture2D icon, StringBuilder value, int sortOrder)\n            {\n                Key = key;\n                Icon = icon;\n                Value = value;\n                SortOrder = sortOrder;\n                if (value != null)\n                {\n                    ToolTip = new MyToolTips(value);\n                }                \n            }\n\n            //  Sorts from small to large, e.g. 0, 1, 2, 3, ...\n            public int CompareTo(object compareToObject)\n            {\n                MyGuiControlComboboxItem compareToItem = (MyGuiControlComboboxItem)compareToObject;\n                return this.SortOrder.CompareTo(compareToItem.SortOrder);\n            }\n        }\n\n        public delegate void OnComboBoxSelectCallback();\n        public event OnComboBoxSelectCallback OnSelect;\n\n        public delegate void OnComboBoxItemDoubleClick();\n        public event OnComboBoxItemDoubleClick OnSelectItemDoubleClick = null;\n\n        Vector4 m_textColor;\n        float m_textScale;\n        Vector2 m_textOffset;\n        bool m_isOpen;\n        bool m_scrollBarDragging = false;\n        List<MyGuiControlComboboxItem> m_items;\n        MyGuiControlComboboxItem m_selected;                            //  Item that is selected in the combobox, that is displayed in the main rectangle\n        MyGuiControlComboboxItem m_preselectedMouseOver;                //  Item that is under mouse and may be selected if user clicks on it\n        MyGuiControlComboboxItem m_preselectedMouseOverPrevious;        //  Same as m_preselectedMouseOver, but in previous update\n        int? m_preselectedKeyboardIndex = null;                                 //  Same as m_preselectedMouseOver, but for keyboard. By default no item is selected.\n        int? m_preselectedKeyboardIndexPrevious = null;                         //  Same as m_preselectedMouseOverPrevious, but for keyboard\n        int? m_mouseWheelValueLast = null;\n\n        //  Scroll Bar logic code\n        int m_openAreaItemsCount;\n        int m_middleIndex;\n        bool m_showScrollBar;\n        float? m_scrollBarCurrentPosition;\n        float m_scrollBarCurrentNonadjustedPosition;\n        float m_mouseOldPosition;\n        bool m_mousePositionReinit;\n        float m_maxScrollBarPosition;\n        float m_scrollBarEndPositionRelative;\n        int m_displayItemsStartIndex;\n        int m_displayItemsEndIndex;\n        int m_scrollBarItemOffSet;\n        float m_scrollBarHeight;\n        float m_scrollBarWidth; // not the texture width, but the clickable area width\n        float m_comboboxItemDeltaHeight;\n        float m_scrollRatio;\n        bool m_supportIcon;\n        bool m_supportSmoothScroll;\n        bool m_supportListBoxMode;\n        Vector2 m_iconPadding;\n        Vector2 m_iconSize;\n        Vector2 m_iconTextOffset;\n        private Vector2 m_dropDownItemSize;\n        double m_doubleClickTimer;\n        const double DOUBLE_CLICK_DELAY = 500;\n\n        private const float ITEM_DRAW_DELTA = 0.0001f;\n\n        bool m_useScrollBarOffset = false;\n\n        public MyGuiControlCombobox(IMyGuiControlsParent parent, Vector2 position, MyGuiControlPreDefinedSize predefinedSize, Vector2 iconSize, Vector2 textOffset, Vector4 backgroundColor, float textScale, int openAreaItemsCount, bool supportPicture, bool supportSmoothScroll, bool supportListBoxMode, bool useScrollBarOffset = false)\n            : base(parent, position, predefinedSize, backgroundColor, null, MyGuiManager.GetComboboxTexture(predefinedSize), null, null, true)\n        {\n            m_highlightType = MyGuiControlHighlightType.WHEN_CURSOR_OVER;\n            m_canHandleKeyboardActiveControl = true;\n            m_items = new List<MyGuiControlComboboxItem>();\n            m_isOpen = supportListBoxMode;\n            m_textColor = MyGuiConstants.COMBOBOX_TEXT_COLOR;\n            m_textScale = textScale;\n            m_openAreaItemsCount = openAreaItemsCount;\n            m_middleIndex = Math.Max(m_openAreaItemsCount / 2 - 1, 0);\n            m_supportIcon = supportPicture;\n            m_supportSmoothScroll = supportSmoothScroll;\n            m_supportListBoxMode = supportListBoxMode;\n            m_textOffset = textOffset;\n            m_size = GetPredefinedControlSize();\n            if(m_supportIcon)\n            {         \n                m_size = new Vector2(m_size.Value.X, iconSize.Y);                \n            }\n            m_dropDownItemSize = GetItemSize();\n            m_comboboxItemDeltaHeight = m_dropDownItemSize.Y; // \n            m_doubleClickTimer = 0;\n            m_mousePositionReinit = true;\n            InitializeScrollBarParameters();\n            m_showToolTip = true;\n            m_useScrollBarOffset = useScrollBarOffset;\n        }\n\n\n\n\n\n        //  Base Constructor\n        public MyGuiControlCombobox(IMyGuiControlsParent parent, Vector2 position, MyGuiControlPreDefinedSize predefinedSize, Vector4 backgroundColor, float textScale, int openAreaItemsCount, bool supportPicture, bool supportSmoothScroll, bool supportListBoxMode, bool useScrollbarOffset = false)\n            : this(parent, position, predefinedSize, MyGuiConstants.COMBOBOX_ICON_SIZE, MyGuiConstants.COMBOBOX_TEXT_OFFSET, backgroundColor, textScale, openAreaItemsCount, supportPicture, supportSmoothScroll, supportListBoxMode, useScrollbarOffset)\n        { }\n\n        //\n\n        //  Original MyGuiControlCombobox constructor with same signatures\n        public MyGuiControlCombobox(IMyGuiControlsParent parent, Vector2 position, MyGuiControlPreDefinedSize predefinedSize, Vector4 backgroundColor, float textScale)\n            : this(parent, position, predefinedSize, backgroundColor, textScale, 10, false, false, false)\n        { }\n\n        public MyGuiControlCombobox(IMyGuiControlsParent parent, Vector2 position, MyGuiControlPreDefinedSize predefinedSize, Vector4 backgroundColor, float textScale, int openAreaItemsCount)\n            : this(parent, position, predefinedSize, backgroundColor, textScale, openAreaItemsCount, false, false, false)\n        { }\n\n        //  Clears/removes all items\n        public void ClearItems()\n        {\n            m_items.Clear();\n            m_selected = null;\n            m_preselectedKeyboardIndex = null;\n            m_preselectedKeyboardIndexPrevious = null;\n            m_preselectedMouseOver = null;\n            m_preselectedMouseOverPrevious = null;\n            InitializeScrollBarParameters();\n        }\n\n        //  Same as other AddItem, but this one auto-assign sort order\n        public void AddItem(int key, MyTextsWrapperEnum value)\n        {\n            AddItem(key, value, m_items.Count);\n        }\n\n        //  Add new item\n        public void AddItem(int key, MyTextsWrapperEnum value, int sortOrder)\n        {\n            AddItem(key, MyTextsWrapper.Get(value), sortOrder);\n        }\n\n        //  Add new item\n        public void AddItem(int key, StringBuilder value)\n        {\n            AddItem(key, value, m_items.Count);\n        }\n\n        // Add new item with icon texture\n        public void AddItem(int key, MyTexture2D icon, StringBuilder value)\n        {\n            AddItem(key, icon, value, m_items.Count);\n        }\n\n        //  Add new item\n        public void AddItem(int key, StringBuilder value, int sortOrder)\n        {\n            System.Diagnostics.Debug.Assert(value != null);\n\n            //  Create new item\n            MyGuiControlComboboxItem newItem = new MyGuiControlComboboxItem(key, null, value, sortOrder);            \n            //  Add to list\n            m_items.Add(newItem);\n\n            //  Reorder the list\n            m_items.Sort();\n\n            //  scroll bar parameters need to be recalculated when new item is added\n            AdjustScrollBarParameters();\n        }\n\n        //  Add new item with icon\n        public void AddItem(int key, MyTexture2D icon, StringBuilder value, int sortOrder)\n        {\n            System.Diagnostics.Debug.Assert(value != null);\n\n            //  Create new item\n            MyGuiControlComboboxItem newItem = new MyGuiControlComboboxItem(key, icon, value, sortOrder);            \n            //  Add to list\n            m_items.Add(newItem);\n\n            //  Reorder the list\n            m_items.Sort();\n\n            //  scroll bar parameters need to be recalculated when new item is added\n            AdjustScrollBarParameters();\n        }\n\n        public void RemoveItem(int key) \n        {\n            MyGuiControlComboboxItem removedItem = m_items.Find(x => x.Key == key);\n            RemoveItem(removedItem);\n        }\n\n        public void RemoveItemByIndex(int index) \n        {\n            if (index < 0 || index >= m_items.Count) \n            {\n                throw new ArgumentOutOfRangeException(\"index\");\n            }\n\n            RemoveItem(m_items[index]);\n        }\n\n        private void RemoveItem(MyGuiControlComboboxItem item) \n        {\n            if (item == null) \n            {\n                throw new ArgumentNullException(\"item\");\n            }\n\n            m_items.Remove(item);\n\n            // if we remove selected item (clear selection)\n            if (m_selected == item)\n            {\n                m_selected = null;\n            }\n        }\n\n        public int GetItemsCount()\n        {\n            return m_items.Count;\n        }\n\n        public void SortItemsByValueText()\n        {\n            if (m_items != null)\n            {\n                m_items.Sort(delegate(MyGuiControlComboboxItem item1, MyGuiControlComboboxItem item2)\n                {\n                    return item1.Value.ToString().CompareTo(item2.Value.ToString());\n                });\n            }\n        }\n\n        public void CustomSortItems(Comparison<MyGuiControlComboboxItem> comparison)\n        {\n            if (m_items != null)\n            {\n                m_items.Sort(comparison);\n            }\n        }\n\n        public bool IsHandlingInputNow()\n        {\n            bool handlingInput = false;\n            if (m_supportListBoxMode)\n            {\n                if (IsMouseOver() || m_hasKeyboardActiveControl)\n                {\n                    handlingInput = true;\n                }\n            }\n            else\n            {\n                handlingInput = m_isOpen;\n            }\n\n            return handlingInput;\n        }\n        //  Selects item by index, so when you want to make first item as selected call SelectItemByIndex(0)\n        public void SelectItemByIndex(int index)\n        {\n            m_selected = m_items[index];\n            SetScrollBarPositionByIndex(index);\n        }\n        public void SetKeyboardActiveControl(bool value)\n        {\n            m_hasKeyboardActiveControl = value;\n        }\n        //  Selects item by key\n        public void SelectItemByKey(int key)\n        {\n            for (int i = 0; i < m_items.Count; i++)\n            {\n                MyGuiControlComboboxItem item = m_items[i];\n\n                if (item.Key.Equals(key))\n                {\n                    m_selected = item;\n                    m_preselectedKeyboardIndex = i;\n                    SetScrollBarPositionByIndex(i);\n                    //if (m_showScrollBar == true && m_supportSmoothScroll == false) ScrollToPreSelectedItem();\n                    if (OnSelect != null) OnSelect();\n                    return;\n                }\n            }\n        }\n\n        //  Return key of selected item\n        public int GetSelectedKey()\n        {\n            if (m_selected == null)\n                return -1;\n            return m_selected.Key;\n        }\n\n        public int GetSelectedIndex() \n        {\n            if (m_selected == null)\n                return -1;\n            return m_items.IndexOf(m_selected);\n        }\n\n        //  Return value of selected item\n        public StringBuilder GetSelectedValue()\n        {\n            return m_selected.Value;\n        }\n\n        void Assert()\n        {\n            //  If you forget to set default or pre-selected item, you must do it! It won't be assigned automaticaly!\n            MyCommonDebugUtils.AssertDebug(m_selected != null);\n\n            //  Combobox can't be empty!\n            MyCommonDebugUtils.AssertDebug(m_items.Count > 0);\n        }\n\n        private void SwitchComboboxMode()\n        {\n            //disallow closing of combobox when we r in listbox mode flag on\n            if (m_isOpen && m_supportListBoxMode)\n                return;\n\n            if (m_scrollBarDragging == false)\n            {\n                m_isOpen = !m_isOpen;\n            }\n        }\n\n        //  Method returns true if input was captured by control, so no other controls, nor screen can use input in this update\n        public override bool HandleInput(MyGuiInput input, bool hasKeyboardActiveControl, bool hasKeyboardActiveControlPrevious, bool receivedFocusInThisUpdate)\n        {\n            bool captureInput = base.HandleInput(input, hasKeyboardActiveControl, hasKeyboardActiveControlPrevious, receivedFocusInThisUpdate);\n\n            //Assert();\n\n            if (captureInput == false)\n            {\n                if ((IsMouseOver() == true) && (input.IsNewLeftMousePressed() == true) && (m_supportListBoxMode == false && !m_isOpen) && m_scrollBarDragging == false)\n                    return true;\n                // Make sure here, that whenever not in listbox mode, switch opened/closed state when clicked on combobobox\n                //if ((IsMouseOver() == true) && (input.IsNewLeftMouseReleased() == true) && (m_supportListBoxMode == false) && m_scrollBarDragging == false)\n                if (input.IsNewLeftMouseReleased() && !m_supportListBoxMode && !m_scrollBarDragging) \n                {\n                    if (IsMouseOver() && !m_isOpen || IsMouseOverSelectedItem() && m_isOpen) \n                    {\n                        MyAudio.AddCue2D(MySoundCuesEnum.GuiMouseClick);\n                        SwitchComboboxMode();\n                        captureInput = true;\n                    }\n                }\n\n                if ((hasKeyboardActiveControl == true) && ((input.IsNewKeyPress(Keys.Enter)) || (input.IsNewKeyPress(Keys.Space) || (input.IsNewGameControlPressed(MyGameControlEnums.FIRE_PRIMARY) && !input.IsNewLeftMousePressed()))))\n                {\n                    MyAudio.AddCue2D(MySoundCuesEnum.GuiMouseClick);\n\n                    if ((m_preselectedKeyboardIndex.HasValue) && (m_preselectedKeyboardIndex.Value < m_items.Count))\n                    {\n                        if (m_isOpen == false)\n                        {\n                            SetScrollBarPositionByIndex(m_selected.Key);\n                        }\n                        else\n                        {\n                            SelectItemByKey(m_items[m_preselectedKeyboardIndex.Value].Key);\n                        }\n                    }\n\n                    //  Close but capture focus for this update so parent screen don't receive this ENTER\n                    SwitchComboboxMode();\n                    captureInput = true;\n                }\n\n                //  In listbox mode, the list is always in opened state\n                if (m_isOpen == true)\n                {                   \n                    #region Handle mouse and scrollbar interaction\n                    if (m_showScrollBar == true && input.IsLeftMousePressed() == true)\n                    {\n                        //  Handles mouse input of dragging the scrollbar up or down\n                        Vector2 position = GetDrawPosition();\n                        MyRectangle2D openedArea = GetOpenedArea();\n                        float minX = position.X + m_size.Value.X - m_scrollBarWidth;\n                        float maxX = position.X + m_size.Value.X;\n                        float minY = m_supportListBoxMode == false ? position.Y + m_size.Value.Y / 2.0f : position.Y - m_size.Value.Y / 2.0f;\n                        float maxY = minY + openedArea.Size.Y;\n\n                        // if we are already scrolling, the area used for scrollbar moving will be extended to whole screen\n                        if (m_scrollBarDragging)\n                        {\n                            minX = 0;\n                            maxX = 1;\n                            minY = 0;\n                            maxY = 1;\n                        }\n\n                        // In case mouse cursor is intersecting scrollbar area, start scroll bar dragging mode\n                        if ((MyGuiManager.MouseCursorPosition.X >= minX) && (MyGuiManager.MouseCursorPosition.X <= maxX)\n                            && (MyGuiManager.MouseCursorPosition.Y >= minY) && (MyGuiManager.MouseCursorPosition.Y <= maxY))\n                        {                           \n                            // Are we over thee scroll bar handle?\n                            float P0 = m_scrollBarCurrentPosition.Value + (openedArea.LeftTop.Y);\n                            if (MyGuiManager.MouseCursorPosition.Y > P0 && MyGuiManager.MouseCursorPosition.Y < P0 + m_scrollBarHeight)\n                            {\n                                if (m_mousePositionReinit)\n                                {\n                                    m_mouseOldPosition = MyGuiManager.MouseCursorPosition.Y;\n                                    m_mousePositionReinit = false;\n                                }\n\n                                float mdeff = MyGuiManager.MouseCursorPosition.Y - m_mouseOldPosition;\n                                if (mdeff > float.Epsilon || mdeff < float.Epsilon)\n                                {\n                                    SetScrollBarPosition(m_scrollBarCurrentNonadjustedPosition + mdeff);\n                                }\n\n                                m_mouseOldPosition = MyGuiManager.MouseCursorPosition.Y;\n                            }\n                            else\n                            {\n                                // If we are not over the scrollbar handle -> jump:\n                                float scrollPositionY = MyGuiManager.MouseCursorPosition.Y - (openedArea.LeftTop.Y) - m_scrollBarHeight / 2.0f;\n                                SetScrollBarPosition(scrollPositionY);\n                            }\n\n                            m_scrollBarDragging = true;\n                        }\n                    }\n                    #endregion\n\n                    // Reset mouse parameters after it was released now\n                    if (input.IsNewLeftMouseReleased())\n                    {\n                        m_mouseOldPosition = MyGuiManager.MouseCursorPosition.Y;\n                        m_mousePositionReinit = true;\n                    }\n\n                    //  Don't try close combobox if listbox mode is suported.\n                    if (m_supportListBoxMode == false)\n                    {\n                        //  If ESC was pressed while combobox has keyboard focus and combobox was opened, then close combobox but don't send this ESC to parent screen\n                        //  Or if user clicked outside of the combobox's area\n                        if (((hasKeyboardActiveControl == true) && (input.IsNewKeyPress(Keys.Escape) || input.IsJoystickButtonNewPressed(MyJoystickButtonsEnum.J02))) ||\n                            ((IsMouseOverOnOpenedArea() != true) && (IsMouseOver() != true) && (input.IsNewLeftMouseReleased() == true)))\n                        {\n                            MyAudio.AddCue2D(MySoundCuesEnum.GuiMouseClick);\n                            m_isOpen = false;\n                        }\n\n                        //  Still capture focus, don't allow parent screen to receive this ESCAPE\n                        captureInput = true;\n                    }\n\n                    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n                    //  Mouse controling items in the combobox\n                    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\n                    if (m_scrollBarDragging == false)\n                    {\n                        #region Handle item that is under mouse cursor\n                        //  Search for item that is under the mouse cursor\n                        m_preselectedMouseOverPrevious = m_preselectedMouseOver;\n                        m_preselectedMouseOver = null;\n\n                        //  The following are used for controlling scroll window range\n                        int startIndex = 0;\n                        int endIndex = m_items.Count;\n                        float widthOffSet = 0f;\n                        if (m_showScrollBar == true)\n                        {\n                            if (m_supportSmoothScroll == true)\n                            {\n                                //  Extend the display items range by 1(top and bottom) in smooth scrolling mode because of the scenario of partial rendering\n                                startIndex = Math.Max(0, m_displayItemsStartIndex - 1);\n                                endIndex = Math.Min(m_items.Count, endIndex + 1);\n                            }\n                            else\n                            {\n                                startIndex = m_displayItemsStartIndex;\n                                endIndex = m_displayItemsEndIndex;\n                            }\n                            widthOffSet = 0.025f;\n                        }\n\n                        for (int i = startIndex; i < endIndex; i++)\n                        {\n                            Vector2 position = GetOpenItemPosition(i - m_displayItemsStartIndex);\n                            MyRectangle2D openedArea = GetOpenedArea();\n                            Vector2 min = new Vector2(position.X, Math.Max(openedArea.LeftTop.Y, position.Y));\n                            Vector2 max = min + new Vector2(m_size.Value.X - widthOffSet, m_comboboxItemDeltaHeight);\n\n                            if ((MyGuiManager.MouseCursorPosition.X >= min.X) && (MyGuiManager.MouseCursorPosition.X <= max.X) && (MyGuiManager.MouseCursorPosition.Y >= min.Y) && (MyGuiManager.MouseCursorPosition.Y <= max.Y))\n                            {\n                                m_preselectedMouseOver = m_items[i];\n\n                                //  Auto snap(scroll) current pre-selected/selected item to be fully visible \n                                if (m_supportSmoothScroll == true)\n                                {\n                                    if (position.Y + 0.001f < openedArea.LeftTop.Y)\n                                    {\n                                        float scrollUpBy = m_scrollBarCurrentPosition.Value;\n                                        scrollUpBy -= 0.001f;\n                                        SetScrollBarPosition(scrollUpBy);\n                                    }\n                                    else if (position.Y + m_comboboxItemDeltaHeight - 0.001f > openedArea.LeftTop.Y + openedArea.Size.Y)\n                                    {\n                                        float scrollDownBy = m_scrollBarCurrentPosition.Value;\n                                        scrollDownBy += 0.001f;\n                                        SetScrollBarPosition(scrollDownBy);\n                                    }\n                                }\n                            }\n                        }\n\n                        if (m_preselectedMouseOver != null && m_preselectedMouseOver != m_preselectedMouseOverPrevious)\n                        {\n                            MyAudio.AddCue2D(MySoundCuesEnum.GuiMouseOver);\n                        }\n\n                        //  To be used to check for mouse double click action\n                        m_doubleClickTimer += MyConstants.PHYSICS_STEP_SIZE_IN_MILLISECONDS;\n\n                        #endregion\n\n                        #region Selecting item in opened combobox area\n                        //  Select item when user clicks on it\n                        if (input.IsNewLeftMouseReleased() == true && m_preselectedMouseOver != null)\n                        {                            \n                            //  Checks for double click, only listbox mode supports this type of input\n                            if (m_supportListBoxMode == true && m_preselectedMouseOver.Key.Equals(m_selected.Key) == true && m_doubleClickTimer < DOUBLE_CLICK_DELAY)\n                            {\n                                if (OnSelectItemDoubleClick != null)\n                                    OnSelectItemDoubleClick();\n                            }\n                            m_doubleClickTimer = 0;\n\n                            //m_selected = m_preselectedMouseOver;\n                            SelectItemByKey(m_preselectedMouseOver.Key);\n\n                            MyAudio.AddCue2D(MySoundCuesEnum.GuiMouseClick);\n                            if (m_supportListBoxMode == false) m_isOpen = false;\n\n                            //  Still capture focus, don't allow parent screen to receive this CLICK\n                            captureInput = true;                                                   \n                        }\n                        #endregion\n\n                        #region Keyboard and scrollwheel controlling items in combobox\n\n                        if (hasKeyboardActiveControl == true || IsMouseOverOnOpenedArea())\n                        {\n                            if (m_mouseWheelValueLast == null) m_mouseWheelValueLast = input.MouseScrollWheelValue();\n\n                            if (input.MouseScrollWheelValue() < m_mouseWheelValueLast)\n                            {\n                                HandleItemMovement(true);\n                                captureInput = true;\n                            }\n                            else if (input.MouseScrollWheelValue() > m_mouseWheelValueLast)\n                            {\n                                HandleItemMovement(false);\n                                captureInput = true;\n                            }\n\n                            //  Keyboard and mouse movement\n                            if (input.IsNewKeyPress(Keys.Down) || input.IsNewGamepadKeyDownPressed())\n                            {\n                                HandleItemMovement(true);\n                                captureInput = true;\n                            }\n                            else if (input.IsNewKeyPress(Keys.Up) || input.IsNewGamepadKeyUpPressed())\n                            {\n                                HandleItemMovement(false);\n                                captureInput = true;\n                            }\n                            else if (input.IsNewKeyPress(Keys.PageDown))\n                            {\n                                HandleItemMovement(true, true);\n                            }\n                            else if (input.IsNewKeyPress(Keys.PageUp))\n                            {\n                                HandleItemMovement(false, true);\n                            }\n                            else if (input.IsNewKeyPress(Keys.Home))\n                            {\n                                HandleItemMovement(true, false, true);\n                            }\n                            else if (input.IsNewKeyPress(Keys.End))\n                            {\n                                HandleItemMovement(false, false, true);\n                            }\n                            else if (input.IsNewKeyPress(Keys.Tab))\n                            {\n                                //  We want to close the combobox without selecting any item and forward TAB or SHIF+TAB to parent screen so it can navigate to next control\n                                if (m_supportListBoxMode == false && m_isOpen) SwitchComboboxMode();\n                                captureInput = false;\n                            }\n\n                            m_mouseWheelValueLast = input.MouseScrollWheelValue();\n                        }\n                        #endregion\n                    }\n                    else\n                    {\n                        // When finished scrollbar dragging, set it to false and enable input capturing again\n                        if (input.IsNewLeftMouseReleased()) m_scrollBarDragging = false;\n                        captureInput = true;\n                    }\n                }\n            }\n\n            return captureInput;\n        }\n\n        //  Moves keyboard index to the next item, or previous item, or first item in the combobox.\n        //  forwardMovement -> set to TRUE when you want forward movement, set to FALSE when you wasnt backward\n        void HandleItemMovement(bool forwardMovement, bool page = false, bool list = false)\n        {\n            m_preselectedKeyboardIndexPrevious = m_preselectedKeyboardIndex;\n\n            int step = 0;\n            if (list && forwardMovement) // first item\n            {\n                m_preselectedKeyboardIndex = 0;\n            }\n            else if (list && !forwardMovement) // last item\n            {\n                m_preselectedKeyboardIndex = m_items.Count - 1;\n            }\n            else if (page && forwardMovement) // step + 1 page\n            {\n                if (m_openAreaItemsCount > m_items.Count)\n                    step = m_items.Count - 1;\n                else\n                    step = m_openAreaItemsCount - 1;\n            }\n            else if (page && !forwardMovement) // step - 1 page\n            {\n                if (m_openAreaItemsCount > m_items.Count)\n                    step = -(m_items.Count - 1);\n                else\n                    step = -m_openAreaItemsCount + 1;\n            }\n            else if (!page && !list && forwardMovement) // step 1 item\n            {\n                step = 1;\n            }\n            else // step -1 item\n            {\n                step = -1;\n            }\n\n\n            if (m_preselectedKeyboardIndex.HasValue == false)\n            {\n                //  If this is first keypress in this combobox, we will set keyboard index to begining or end of the list\n                m_preselectedKeyboardIndex = (forwardMovement == true) ? 0 : m_items.Count - 1;\n            }\n            else\n            {\n                //  Increase or decrease and than check ranges and do sort of overflow\n                m_preselectedKeyboardIndex += step;// sign;\n                if (m_preselectedKeyboardIndex > (m_items.Count - 1)) m_preselectedKeyboardIndex = (m_items.Count - 1);\n                if (m_preselectedKeyboardIndex < 0) m_preselectedKeyboardIndex = 0;\n                /*if (m_preselectedKeyboardIndex > (m_items.Count - 1)) m_preselectedKeyboardIndex = 0;\n                if (m_preselectedKeyboardIndex < 0) m_preselectedKeyboardIndex = m_items.Count - 1;*/\n            }\n\n            if (m_preselectedKeyboardIndex != m_preselectedKeyboardIndexPrevious)\n            {\n                MyAudio.AddCue2D(MySoundCuesEnum.GuiMouseOver);\n            }\n\n            SetScrollBarPositionByIndex(m_preselectedKeyboardIndex.Value);\n        }\n\n        private void SetScrollBarPositionByIndex(int index)\n        {\n            //  Programmatically adjust the scroll bar position based on changes in m_preselectedKeyboardIndex\n            //  So it handles the scrolling action when users press up and down keys\n            if (m_showScrollBar == true)\n            {\n                m_scrollRatio = 0f; //  Reset to zero, since keyboard navigation always does full item movement\n                //  These two conditions handle when either\n                //  1. the index is at top of the display index range (so scrolls down)\n                //  2. the index is at bottom of the display index range (so scrolls up)\n                //  3. if neither, then the index is in between the display range, so no scrolling is needed yet\n                if (m_preselectedKeyboardIndex >= m_displayItemsEndIndex)\n                {\n                    m_displayItemsEndIndex = Math.Max(m_openAreaItemsCount, m_preselectedKeyboardIndex.Value + 1);\n                    m_displayItemsStartIndex = Math.Max(0, m_displayItemsEndIndex - m_openAreaItemsCount);\n                    SetScrollBarPosition(m_preselectedKeyboardIndex.Value * m_maxScrollBarPosition  / (m_items.Count-1), false);\n                }\n                else if (m_preselectedKeyboardIndex < m_displayItemsStartIndex)\n                {\n                    m_displayItemsStartIndex = Math.Max(0, m_preselectedKeyboardIndex.Value);\n                    m_displayItemsEndIndex = Math.Max(m_openAreaItemsCount, m_displayItemsStartIndex + m_openAreaItemsCount);\n                    SetScrollBarPosition(m_preselectedKeyboardIndex.Value * m_maxScrollBarPosition / (m_items.Count - 1), false);\n                }\n                else if(m_preselectedKeyboardIndex.HasValue)\n                {\n                    SetScrollBarPosition(m_preselectedKeyboardIndex.Value * m_maxScrollBarPosition / (m_items.Count - 1), false);\n                }\n            }\n        }\n\n        //  Checks if mouse cursor is over opened combobox area\n        bool IsMouseOverOnOpenedArea()\n        {\n            MyRectangle2D openedArea = GetOpenedArea();\n            openedArea.Size.Y += m_dropDownItemSize.Y;\n\n            Vector2 min = openedArea.LeftTop;\n            Vector2 max = openedArea.LeftTop + openedArea.Size;\n\n            return ((MyGuiManager.MouseCursorPosition.X >= min.X) && (MyGuiManager.MouseCursorPosition.X <= max.X) && (MyGuiManager.MouseCursorPosition.Y >= min.Y) && (MyGuiManager.MouseCursorPosition.Y <= max.Y));\n        }\n\n        MyRectangle2D GetOpenedArea()\n        {\n            MyRectangle2D ret;\n            if (m_supportListBoxMode == false)\n                ret.LeftTop = m_parent.GetPositionAbsolute() + m_position + new Vector2(-m_dropDownItemSize.X / 2.0f, m_dropDownItemSize.Y / 2.0f);\n            else\n                ret.LeftTop = m_parent.GetPositionAbsolute() + m_position + new Vector2(-m_dropDownItemSize.X / 2.0f, -m_dropDownItemSize.Y / 2.0f);\n\n            // Adjust the open area to be as big as the scroll bar MAX_VISIBLE_ITEMS_COUNT when scrollbar is on\n            if (m_showScrollBar == true || (m_supportListBoxMode == true && m_supportIcon == false))\n                ret.Size = new Vector2(m_dropDownItemSize.X, m_openAreaItemsCount * m_comboboxItemDeltaHeight);\n            else\n                ret.Size = new Vector2(m_dropDownItemSize.X, m_items.Count * m_comboboxItemDeltaHeight);\n\n            return ret;\n        }\n\n        //  Returns position of item in open list\n        Vector2 GetOpenItemPosition(int index)\n        {\n            float yOffSet = m_supportListBoxMode == false ? m_dropDownItemSize.Y / 2.0f : -m_dropDownItemSize.Y / 2.0f;\n\n            if (m_supportSmoothScroll == true && m_scrollRatio != 0.0f)\n                return GetDrawPosition() + new Vector2(0, yOffSet + index * m_comboboxItemDeltaHeight - (m_scrollRatio - m_displayItemsStartIndex) * m_comboboxItemDeltaHeight) + new Vector2(0, GetTopOffsetSize());\n            else\n                return GetDrawPosition() + new Vector2(0, yOffSet + index * m_comboboxItemDeltaHeight)  + new Vector2(0, GetTopOffsetSize()); \n        }\n\n        Vector2 GetDrawPosition()\n        {\n            return m_parent.GetPositionAbsolute() + m_position + new Vector2(-m_dropDownItemSize.X / 2.0f, 0);\n        }\n\n        /// <summary>\n        /// two phase draw(two SpriteBatch phase):\n        /// 1. combobox itself and selected item\n        /// 2. opened area and display items draw(if opened area is displayed)\n        ///     a. setup up and draw stencil area to stencil buffer for clipping\n        ///     b. enable stencil\n        ///     c. draw the display items\n        ///     d. disable stencil\n        /// </summary>\n        public override void Draw()\n        {\n            // In case of listbox mode, before calling parent's draw, reset background color, because it will draw unwanted texture for first item in list(texture, that is used normally for closed combobox)\n            Vector4 tempBorderColor = m_backgroundColor.Value;\n            if (m_supportListBoxMode == true)\n            {\n                m_backgroundColor = null;\n            }\n\n            base.Draw();\n            //Assert();\n\n            m_backgroundColor = tempBorderColor;\n            Vector2 position = GetDrawPosition();\n            float scrollbarSeparatorPositionX = position.X + m_size.Value.X - m_scrollBarWidth;\n            float scrollbarInnerTexturePositionX = position.X + m_size.Value.X - m_scrollBarWidth / 2;\n            Vector4 localTextColor = m_textColor;\n            Vector4 vectorLineColor = MyGuiConstants.COMBOBOX_VERTICAL_LINE_COLOR;\n            Vector4 vectorLineColorWithoutHighlight = MyGuiConstants.COMBOBOX_VERTICAL_LINE_COLOR;\n\n            // Highlighting of combobox parts when mouse over\n            if (IsMouseOverOrKeyboardActive())\n            {\n                localTextColor = localTextColor * MyGuiConstants.CONTROL_MOUSE_OVER_BACKGROUND_COLOR_MULTIPLIER;\n                vectorLineColor = vectorLineColor * MyGuiConstants.CONTROL_MOUSE_OVER_BACKGROUND_COLOR_MULTIPLIER;\n                tempBorderColor = tempBorderColor * MyGuiConstants.CONTROL_MOUSE_OVER_BACKGROUND_COLOR_MULTIPLIER;\n            }\n            \n            Vector2 textPosition = position + m_textOffset;\n\n            //  The following are used for controlling scroll window range\n            int startIndex = 0;\n            int endIndex = m_items.Count;\n            float widthOffSet = 0f;\n\n            if (m_showScrollBar == true)\n            {\n                if (m_supportSmoothScroll == true)\n                {\n                    //  Extend the display items range by 1(top and bottom) in smooth scrolling mode because of the scenario of partial rendering\n                    startIndex = Math.Max(0, m_displayItemsStartIndex - 1);\n                    endIndex = Math.Min(m_items.Count, endIndex + 1);\n                }\n                else\n                {\n                    startIndex = m_displayItemsStartIndex;\n                    endIndex = m_displayItemsEndIndex;\n                }\n                widthOffSet = 0.00f; // scrolbar is now in \n            }\n            else\n            {\n                widthOffSet = 0;\n            }\n\n            #region Only non-listbox mode stuff\n            if (m_supportListBoxMode == false)\n            {\n                if (m_selected != null)\n                {\n                    if (m_supportIcon == true)\n                    {\n                        //  Selected item's icon\n                        if (m_selected.Icon != null)\n                            MyGuiManager.DrawSpriteBatchRoundUp(m_selected.Icon, new Vector2(position.X + m_textOffset.X, position.Y),\n                                                         m_iconSize, GetColorAfterTransitionAlpha(tempBorderColor),\n                                                         MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER);\n\n                        textPosition += m_iconTextOffset;\n                    }\n\n                    //  End our standard sprite batch\n                    MyGuiManager.EndSpriteBatch();\n\n                    //  Draw the rectangle(basically the opened area) to stencil buffer to be used for clipping partial item\n                    MyGuiManager.DrawStencilMaskRectangleRoundUp(new MyRectangle2D(position, new Vector2(m_size.Value.X - widthOffSet - (m_showScrollBar == true ? 4f : 2f) * GetGlowSize(), m_comboboxItemDeltaHeight + ITEM_DRAW_DELTA)), MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER);\n\n                    //  Set up the stencil operation and parameters\n                    MyGuiManager.BeginSpriteBatch_StencilMask();\n\n\n                    //  Selected item's text\n                    MyGuiManager.DrawString(MyGuiManager.GetFontMinerWarsBlue(), m_selected.Value, textPosition,\n                                            m_textScale, GetColorAfterTransitionAlpha(localTextColor),\n                                            MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER);                    \n\n                    //  End stencil-mask batch, and restart the standard sprite batch\n                    //MyGuiManager.EndSpriteBatch();\n                    MyGuiManager.EndSpriteBatch_StencilMask();\n                    MyGuiManager.BeginSpriteBatch();                    \n                }\n            }\n            #endregion\n\n            #region Only when combobox items area is opened\n            if (m_isOpen == true)\n            {\n                //MyGuiManager.ClearStencilBuffer();\n                MyRectangle2D openedArea = GetOpenedArea();\n\n                #region Draw Background\n                //  Draw background for items - we use DrawBackgroundRectangleForScreen() only because it can draw \n                //  different texture according to aspect ratio of the rectangle\n                Vector4 backRectColor = m_backgroundColor.Value * 1.67f;\n                backRectColor.W = 1;\n                if(m_supportListBoxMode == true) backRectColor.W = 0.7f; // in case of listbox mode, we want area to be bit transparent\n\n                //MyGuiManager.DrawBackgroundRectangleForOpaqueControl(openedArea.LeftTop, openedArea.Size, GetColorAfterTransitionAlpha(backRectColor * (new Color(50, 66, 70, 255)).ToVector4()),\n                 //   MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP);\n\n                //  If smooth scrolling is enabled, then stencil buffer is used for clipping\n                if (m_supportSmoothScroll == true)\n                {\n                    //  End our standard sprite batch\n                    MyGuiManager.EndSpriteBatch();\n\n                    //  Draw the rectangle(basically the opened area) to stencil buffer to be used for clipping partial item\n                    MyGuiManager.DrawStencilMaskRectangle(new MyRectangle2D(openedArea.LeftTop/* + new Vector2(0, 0.01f)*/, openedArea.Size/* - new Vector2(0, 0.02f)*/),\n                        MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP);\n\n                    //  Set up the stencil operation and parameters\n                    MyGuiManager.BeginSpriteBatch_StencilMask();\n                }\n\n                //  To cover up the stencil area's background texture(blank)\n                if (m_supportSmoothScroll == true)\n                {\n                    //MyGuiManager.DrawBackgroundRectangleForScreen(openedArea.LeftTop, openedArea.Size, GetColorAfterTransitionAlpha(m_backgroundColor.Value * 1.5f),\n                    //    MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP);\n                }\n                #endregion                \n\n                #region Draw Combobox Items\n                \n                //  Draw upper texture of list\n                var textureTop = MyGuiManager.GetComboboxTextureTop(m_predefinedSize.Value);\n                if (textureTop!=null){\n                    MyGuiManager.DrawSpriteBatchRoundUp(textureTop, GetOpenItemPosition(0) - new Vector2(0, GetTopOffsetSize()) - new Vector2(0, 0.02f), new Vector2(m_size.Value.X - widthOffSet, m_comboboxItemDeltaHeight + 0.001f),\n                    Color.White, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP);\n                }\n\n\n\n                for (int i = startIndex; i < endIndex; i++)\n                {\n                    MyGuiControlComboboxItem item = m_items[i];\n\n                    Vector2 itemPosition = GetOpenItemPosition(i - m_displayItemsStartIndex);\n                    float textScale;\n\n\n                    var texture = MyGuiManager.GetComboboxTextureItem(m_predefinedSize.Value);\n                    if (texture != null)\n                    {\n                        MyGuiManager.DrawSpriteBatchRoundUp(texture, itemPosition, new Vector2(m_size.Value.X - widthOffSet, m_comboboxItemDeltaHeight + ITEM_DRAW_DELTA),\nColor.White, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP);\n                    }\n\n                    // Draw selected background texture\n                    if ((item == m_preselectedMouseOver) || ((m_preselectedKeyboardIndex.HasValue) && (m_preselectedKeyboardIndex == i)))\n                    {\n                        textScale = m_textScale * MyGuiConstants.BUTTON_MOUSE_OVER_TEXT_SCALE;\n                        MyGuiManager.DrawSpriteBatchRoundUp(MyGuiManager.GetBlankTexture(), itemPosition + new Vector2(GetGlowSize(), 0), new Vector2(m_size.Value.X - widthOffSet - (m_showScrollBar == true ? 4f : 2f) * GetGlowSize(), m_comboboxItemDeltaHeight + ITEM_DRAW_DELTA),\n                             GetColorAfterTransitionAlpha(MyGuiConstants.COMBOBOX_SELECTED_ITEM_COLOR), MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP);\n                    }\n                    else\n                    {\n                        textScale = m_textScale;\n                    }\n\n                    textPosition = itemPosition + m_textOffset;\n\n                    if (m_supportIcon == true)\n                    {\n                        //  Draw combobox item's icon\n                        if (item.Icon != null && item.Icon.Height > 0)\n                            MyGuiManager.DrawSpriteBatchRoundUp(item.Icon, itemPosition + m_iconPadding, m_iconSize, GetColorAfterTransitionAlpha(m_backgroundColor.Value), MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP);\n\n                        //  Move combobox item's text position to the right of the item's icon\n                        textPosition += m_iconTextOffset + new Vector2(0.0f, m_comboboxItemDeltaHeight / 2.0f);\n                    }\n                    else\n                    {\n                        textPosition.Y += (m_comboboxItemDeltaHeight / 2.0f);\n                    }\n\n                    var itemTextColor = item == m_preselectedMouseOver ? m_textColor * MyGuiConstants.CONTROL_MOUSE_OVER_BACKGROUND_COLOR_MULTIPLIER : m_textColor;\n                    \n                    //  End our standard sprite batch\n                    MyGuiManager.EndSpriteBatch();\n\n                    //  Draw the rectangle(basically the opened area) to stencil buffer to be used for clipping partial item\n                    MyGuiManager.DrawStencilMaskRectangle(new MyRectangle2D(itemPosition, new Vector2(m_size.Value.X - widthOffSet - (m_showScrollBar == true ? 4f : 2f) * GetGlowSize(), m_comboboxItemDeltaHeight + ITEM_DRAW_DELTA)), MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP);\n\n                    //  Set up the stencil operation and parameters\n                    MyGuiManager.BeginSpriteBatch_StencilMask();\n\n                    //  Draw combobox item's text\n                    MyGuiManager.DrawString(MyGuiManager.GetFontMinerWarsBlue(), item.Value, textPosition,\n                        textScale, GetColorAfterTransitionAlpha(itemTextColor), MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER);\n                    \n                    //  End stencil-mask batch, and restart the standard sprite batch\n                    //MyGuiManager.EndSpriteBatch();\n                    MyGuiManager.EndSpriteBatch_StencilMask();\n                    MyGuiManager.BeginSpriteBatch();                    \n                }\n\n                var textureBottom = MyGuiManager.GetComboboxTextureBottom(m_predefinedSize.Value);\n                if (textureBottom != null)\n                {\n                    MyGuiManager.DrawSpriteBatchRoundUp(textureBottom, GetOpenItemPosition(endIndex - m_displayItemsStartIndex), new Vector2(m_size.Value.X - widthOffSet, m_comboboxItemDeltaHeight),\n    Color.White, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP);\n                }\n\n\n                #endregion\n\n                if (m_supportSmoothScroll == true)\n                {\n                    //  End stencil-mask batch, and restart the standard sprite batch\n                    //MyGuiManager.EndSpriteBatch();\n                    MyGuiManager.EndSpriteBatch_StencilMask();\n                    MyGuiManager.BeginSpriteBatch();\n                }\n\n                #region Draw opened combobox bounding lines\n               \n                /*int linePixelWidth = 3;\n                Vector2 screenSize = MyGuiManager.GetScreenSizeFromNormalizedSize(openedArea.Size);\n               \n                Vector2 screenSizeSlightlyBigger = MyGuiManager.GetScreenSizeFromNormalizedSize(openedArea.Size + new Vector2(0.0021f, 0.0021f));\n                Vector2 leftTop = MyGuiManager.GetScreenCoordinateFromNormalizedCoordinate(openedArea.LeftTop);\n                Vector2 rightTop = leftTop + new Vector2(screenSize.X, 0);\n                Vector2 leftBottom = leftTop + new Vector2(0, screenSize.Y);\n                Vector2 rightTopScrollbarOffset = MyGuiManager.GetScreenCoordinateFromNormalizedCoordinate(new Vector2(scrollbarSeparatorPositionX, 0));\n                 * */\n                Color comboboxBorderColor = GetColorAfterTransitionAlpha(vectorLineColorWithoutHighlight);\n                comboboxBorderColor *= 0.6f;\n                if (m_supportListBoxMode == false) comboboxBorderColor *=0.8f;\n                /*\n               // Following sprite drawing is used to draw combobox borders either for listbox or for scrollbar, in case no listbox mode is used\n               MyGuiManager.DrawSpriteBatch(MyGuiManager.GetBlankTexture(), (int)leftTop.X, (int)leftTop.Y, (int)screenSize.X + 1, linePixelWidth, comboboxBorderColor);\n               MyGuiManager.DrawSpriteBatch(MyGuiManager.GetBlankTexture(), (int)leftBottom.X, (int)leftBottom.Y - linePixelWidth, (int)screenSize.X + 1, linePixelWidth, comboboxBorderColor);\n               MyGuiManager.DrawSpriteBatch(MyGuiManager.GetBlankTexture(), (int)leftTop.X, (int)leftTop.Y + linePixelWidth, linePixelWidth, (int)screenSize.Y + 1 - linePixelWidth * 2, comboboxBorderColor);\n               MyGuiManager.DrawSpriteBatch(MyGuiManager.GetBlankTexture(), (int)rightTop.X - linePixelWidth, (int)rightTop.Y + linePixelWidth, linePixelWidth, (int)screenSize.Y + 1 - linePixelWidth * 2, comboboxBorderColor);\n               */\n\n\n                if (m_showScrollBar)\n                {\n                   // MyGuiManager.DrawSpriteBatch(MyGuiManager.GetBlankTexture(), (int)rightTopScrollbarOffset.X - 2, (int)rightTop.Y + linePixelWidth, linePixelWidth, (int)screenSize.Y + 1 - linePixelWidth * 2, comboboxBorderColor);\n                }\n                #endregion\n\n                #region Draw Scrollbar\n                //  Draw the scroll bar\n                if (m_showScrollBar == true)\n                {\n                    MyGuiManager.DrawSpriteBatchRoundUp(MyGuiManager.GetScrollbarSlider(),\n                        new Vector2(scrollbarInnerTexturePositionX, openedArea.LeftTop.Y + m_scrollBarCurrentPosition.Value + (m_useScrollBarOffset ? -m_dropDownItemSize.Y / 2.0f : 0)),\n                        new Vector2(m_scrollBarWidth, m_scrollBarHeight), MyGuiConstants.COMBOBOX_SCROLLBAR_COLOR, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_TOP);\n                }\n                #endregion\n            }\n            #endregion\n        }\n\n\n        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n        //  Scroll Bar logic code\n        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\n        void InitializeScrollBarParameters()\n        {\n            //  Misc\n            m_showScrollBar = false;\n            m_iconPadding = new Vector2(0.02f, m_comboboxItemDeltaHeight*0.1f);\n            m_iconSize = new Vector2(m_comboboxItemDeltaHeight * 0.8f *3f/4f, m_comboboxItemDeltaHeight * 0.8f);\n\n            m_iconTextOffset = new Vector2(m_comboboxItemDeltaHeight, 0f);\n\n            //  Scroll bar size related - this is exact pixel size, so that scrollbar always stays drawn same\n            Vector2 scrollbarSize = MyGuiConstants.COMBOBOX_VSCROLLBAR_SIZE;\n            m_scrollBarWidth = scrollbarSize.X;\n            m_scrollBarHeight = scrollbarSize.Y;\n\n            //  Scroll bar position and range related\n            m_scrollBarCurrentPosition = 0;\n            m_scrollBarEndPositionRelative = (m_openAreaItemsCount+1) * m_comboboxItemDeltaHeight ;\n\n            //  Display items range index related\n            m_displayItemsEndIndex = m_openAreaItemsCount;\n        }\n\n        void AdjustScrollBarParameters()\n        {\n            m_showScrollBar = m_items.Count > m_openAreaItemsCount;\n            if (m_showScrollBar == true)\n            {\n                m_maxScrollBarPosition = m_scrollBarEndPositionRelative - m_scrollBarHeight;\n                m_scrollBarItemOffSet = m_items.Count - m_openAreaItemsCount;\n            }\n        }\n\n        void CalculateStartAndEndDisplayItemsIndex()\n        {\n            m_scrollRatio = m_scrollBarCurrentPosition.Value == 0 ? 0.0f : m_scrollBarCurrentPosition.Value * m_scrollBarItemOffSet / m_maxScrollBarPosition;\n            m_displayItemsStartIndex = Math.Max(0, (int) Math.Floor(m_scrollRatio + 0.5));\n            m_displayItemsEndIndex = Math.Min(m_items.Count, m_displayItemsStartIndex + m_openAreaItemsCount);\n        }\n\n        public void ScrollToPreSelectedItem()\n        {\n            if (m_preselectedKeyboardIndex.HasValue == true)\n            {\n                m_displayItemsStartIndex = m_preselectedKeyboardIndex.Value <= m_middleIndex ?\n                    0 : m_preselectedKeyboardIndex.Value - m_middleIndex;\n\n                m_displayItemsEndIndex = m_displayItemsStartIndex + m_openAreaItemsCount;\n\n                if (m_displayItemsEndIndex > m_items.Count)\n                {\n                    m_displayItemsEndIndex = m_items.Count;\n                    m_displayItemsStartIndex = m_displayItemsEndIndex - m_openAreaItemsCount;\n                }\n                SetScrollBarPosition(m_displayItemsStartIndex * m_maxScrollBarPosition / m_scrollBarItemOffSet);\n            }\n        }\n\n        void SetScrollBarPosition(float value, bool calculateItemIndexes = true)\n        {\n            value = MathHelper.Clamp(value, 0, m_maxScrollBarPosition);\n\n            if ((m_scrollBarCurrentPosition.HasValue == false) || (m_scrollBarCurrentPosition.Value != value))\n            {\n                m_scrollBarCurrentNonadjustedPosition = value;\n                m_scrollBarCurrentPosition = value;\n                if (calculateItemIndexes)\n                {\n                    CalculateStartAndEndDisplayItemsIndex();\n                }\n            }\n        }\n\n        protected override Vector2 GetPredefinedControlSize()\n        {\n            if (m_predefinedSize.HasValue)\n            {\n                return GetPredefinedControlSize(m_predefinedSize.Value);\n            }            \n\n            return Vector2.Zero;\n        }\n\n        public static Vector2 GetPredefinedControlSize(MyGuiControlPreDefinedSize preDefinedSize)\n        {\n            switch (preDefinedSize)\n            {\n                case MyGuiControlPreDefinedSize.LARGE:\n                    return MyGuiConstants.COMBOBOX_LARGE_SIZE;\n                case MyGuiControlPreDefinedSize.MEDIUM:\n                    return MyGuiConstants.COMBOBOX_MEDIUM_SIZE;\n                case MyGuiControlPreDefinedSize.LONGMEDIUM:\n                    return MyGuiConstants.COMBOBOX_LONGMEDIUM_SIZE;\n                case MyGuiControlPreDefinedSize.SMALL:\n                    return MyGuiConstants.COMBOBOX_SMALL_SIZE;\n                default:\n                    throw new IndexOutOfRangeException(\"undefined for this size\");\n            }\n        }\n\n        protected float GetGlowSize()\n        {\n            float size = 0.0f;\n            if (m_predefinedSize.HasValue)\n            {\n                if (m_predefinedSize == MyGuiControlPreDefinedSize.LARGE)\n                {\n                    size = MyGuiConstants.COMBOBOX_MEDIUM_GLOW_SIZE;\n                }\n                else if (m_predefinedSize == MyGuiControlPreDefinedSize.MEDIUM)\n                {\n                    size = MyGuiConstants.COMBOBOX_MEDIUM_GLOW_SIZE;\n                }\n                else if (m_predefinedSize == MyGuiControlPreDefinedSize.LONGMEDIUM)\n                {\n                    size = MyGuiConstants.COMBOBOX_MEDIUM_GLOW_SIZE;\n                }\n                else\n                {\n                    size = MyGuiConstants.COMBOBOX_MEDIUM_GLOW_SIZE;\n                }\n            }\n\n            return size;\n        }\n\n\n        protected float GetTopOffsetSize()\n        {\n            float size = 0.0f;\n            if (m_predefinedSize.HasValue)\n            {\n                if (m_predefinedSize == MyGuiControlPreDefinedSize.LARGE)\n                {\n                    //size = MyGuiConstants.COMBOBOX_MEDIUM_DROPBOX_TOP_OFFSET;\n                }\n                else if (m_predefinedSize == MyGuiControlPreDefinedSize.MEDIUM)\n                {\n                    size = MyGuiConstants.COMBOBOX_MEDIUM_DROPBOX_TOP_OFFSET;\n                }\n                else if (m_predefinedSize == MyGuiControlPreDefinedSize.LONGMEDIUM)\n                {\n                    size = MyGuiConstants.COMBOBOX_LONGMEDIUM_DROPBOX_TOP_OFFSET;\n                    size = 0.025f;\n                }\n                else\n                {\n                    //size = MyGuiConstants.COMBOBOX_MEDIUM_DROPBOX_TOP_OFFSET;\n                }\n            }\n\n            return size;\n        }\n\n        protected Vector2 GetItemSize()\n        {\n            Vector2 size = Vector2.Zero;\n            if (m_predefinedSize.HasValue)\n            {\n                if (m_predefinedSize == MyGuiControlPreDefinedSize.LARGE)\n                {\n                    size = MyGuiConstants.COMBOBOX_LARGE_SIZE;\n                }\n                else if (m_predefinedSize == MyGuiControlPreDefinedSize.MEDIUM)\n                {\n                    size = MyGuiConstants.COMBOBOX_MEDIUM_ELEMENT_SIZE;\n                }\n                else if (m_predefinedSize == MyGuiControlPreDefinedSize.LONGMEDIUM)\n                {\n                    size = MyGuiConstants.COMBOBOX_LONGMEDIUM_ELEMENT_SIZE;\n                }\n                else\n                {\n                    size = MyGuiConstants.COMBOBOX_SMALL_SIZE;\n                }\n            }\n\n            return size;\n        }\n\n\n\n        protected override bool CheckMouseOver()\n        {\n            if (m_isOpen == true || m_supportListBoxMode == true)\n//          if (m_isOpen == true && m_supportListBoxMode == true)\n            {\n                float width = m_showScrollBar ? 0 : 0;\n                for (int i = 0; i < m_openAreaItemsCount; i++)\n                {\n                    Vector2 position = GetOpenItemPosition(i);\n                    MyRectangle2D openedArea = GetOpenedArea();\n                    Vector2 min = new Vector2(position.X, Math.Max(openedArea.LeftTop.Y, position.Y));\n                    Vector2 max = min + new Vector2(m_size.Value.X - width, m_comboboxItemDeltaHeight);\n\n                    if (((MyGuiManager.MouseCursorPosition.X >= min.X) && (MyGuiManager.MouseCursorPosition.X <= max.X) && (MyGuiManager.MouseCursorPosition.Y >= min.Y) && (MyGuiManager.MouseCursorPosition.Y <= max.Y)))\n                    {\n                        return true;\n                    }\n                }\n            }\n\n            if (m_scrollBarDragging) return false;\n\n            return base.CheckMouseOver(m_size.Value, m_parent.GetPositionAbsolute());\n        }\n\n        private bool IsMouseOverSelectedItem()\n        {\n            Vector2 position = GetDrawPosition();\n            Vector2 topLeft = position - new Vector2(0f, m_size.Value.Y / 2f);\n            Vector2 bottomRight = topLeft + m_size.Value;\n\n            return ((MyGuiManager.MouseCursorPosition.X >= topLeft.X) && (MyGuiManager.MouseCursorPosition.X <= bottomRight.X) && (MyGuiManager.MouseCursorPosition.Y >= topLeft.Y) && (MyGuiManager.MouseCursorPosition.Y <= bottomRight.Y));\n        }\n\n        public override void ShowToolTip()\n        {\n            MyToolTips tempTooltip = m_toolTip;\n            if (m_isOpen && IsMouseOverOnOpenedArea() && m_preselectedMouseOver != null)\n            {\n                m_toolTip = m_preselectedMouseOver.ToolTip;\n            }            \n            base.ShowToolTip();\n            m_toolTip = tempTooltip;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Core/MyGuiControlContextMenu.cs",
    "content": "﻿using System.Text;\nusing Microsoft.Xna.Framework;\nusing MinerWars.AppCode.Game.GUI.ScreenEditor;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Utils;\n\nnamespace MinerWars.AppCode.Game.GUI.Core\n{\n    class MyGuiControlContextMenu : MyGuiControlBase\n    {\n        StringBuilder m_text;\n        MyGuiScreenEditorContextMenu m_contextMenu;\n        bool m_enabled;\n        public bool IsEnabled { get { return m_enabled;} }\n\n        public MyGuiControlContextMenu(MyGuiScreenBase parentScreen, Vector2 position, Vector2? size)\n            : base(parentScreen, position, size, null, null)\n        {\n            m_enabled = false;\n            LoadText();\n        }\n\n        private void LoadText()\n        {\n            m_text = new StringBuilder();\n            m_text.Append(MyTextsWrapper.Get(MyTextsWrapperEnum.EnterContextMenu).ToString());\n        }\n\n        public override bool HandleInput(MyGuiInput input, bool hasKeyboardActiveControl, bool hasKeyboardActiveControlPrevious, bool receivedFocusInThisUpdate)\n        {\n            if ((MyGuiScreenGamePlay.Static.IsEditorActive() == true) && (MyGuiManager.IsScreenOfTypeOpen(typeof(MyGuiScreenEditorContextMenu)) == false))\n            {\n                m_enabled = true;\n                m_contextMenu = null;\n            }\n\n            if (!IsEnabled) return false;\n\n            if (input.IsEditorControlNewPressed(MyEditorControlEnums.ENTER_CONTEXT_MENU))\n            {\n                m_contextMenu = new MyGuiScreenEditorContextMenu();\n                MyGuiManager.AddScreen(m_contextMenu);\n                m_enabled = false;\n            }\n\n            if (m_contextMenu != null)\n            {\n                m_contextMenu.HandleInput(input, receivedFocusInThisUpdate);\n            }\n\n            return base.HandleInput(input, hasKeyboardActiveControl, hasKeyboardActiveControlPrevious, receivedFocusInThisUpdate);\n        }\n\n        public override void Draw()\n        {\n            base.Draw();\n\n            if (!IsEnabled) return;\n\n            MyGuiManager.BeginSpriteBatch();\n            if (m_text.Length > 0)\n            {\n                MyGuiManager.DrawString(MyGuiManager.GetFontGuiImpactLarge(), m_text, MyGuiManager.GetScreenTextLeftBottomPosition(), MyGuiConstants.LABEL_TEXT_SCALE * 0.93f,\n                            Color.Red, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP);\n            }\n            MyGuiManager.EndSpriteBatch();\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Core/MyGuiControlLabel.cs",
    "content": "﻿using System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Managers;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils.Utils;\nusing System;\nusing MinerWars.AppCode.Toolkit.Input;\n\n//  Label is defined by string builder or by text enum. Only one of them at a time. It's good to use enum whenever \n//  possible, as it easily supports changing languages. Use string builder only if the text isn't and can't be defined \n//  in text resources.\n//\n//  If enum version is used, then text won't be stored in string builder until you use UpdateParams\n\n\nnamespace MinerWars.AppCode.Game.GUI.Core\n{\n    class MyGuiControlLabel : MyGuiControlBase\n    {\n        enum MyGuiControlLabelType\n        {\n            DEFINED_BY_STRING_BUILDER,\n            DEFINED_BY_TEXT_WRAPPER_ENUM,\n        }\n\n        Vector4 m_textColor;\n        float m_textScale;\n        MyGuiDrawAlignEnum m_textAlign;\n\n        MyGuiControlLabelType m_type;\n\n        //  For DEFINED_BY_TEXT_WRAPPER_ENUM\n        MyTextsWrapperEnum m_textEnum;\n\n        public MyTextsWrapperEnum Text\n        {\n            get { return m_textEnum; }\n            set { m_textEnum = value; }\n        }\n        public Vector4 TextColor\n        {\n            get { return m_textColor; }\n            set { m_textColor  = value; }\n        }\n\n        //  For DEFINED_BY_STRING_BUILDER\n        StringBuilder m_textDefinition;\n        StringBuilder m_textDraw;       //  This can be also used by enum type\n\n        public bool lastIsMouseOver;\n        public EventHandler MouseLeave;\n        public EventHandler MouseEnter;\n        public EventHandler Click;\n\n        public MyGuiFont Font;\n\n        public MyGuiControlLabel(IMyGuiControlsParent parent, Vector2 position, Vector2? size, MyTextsWrapperEnum textEnum, Vector4 textColor, float textScale, MyGuiDrawAlignEnum textAlign, MyGuiFont font)\n            : base(parent, position, size, null, null, false)\n        {\n            m_type = MyGuiControlLabelType.DEFINED_BY_TEXT_WRAPPER_ENUM;\n\n            m_textEnum = textEnum;\n            Font = font;\n            Init(textColor, textScale, textAlign);\n        }\n\n        public MyGuiControlLabel(IMyGuiControlsParent parent, Vector2 position, Vector2? size, MyTextsWrapperEnum textEnum, Vector4 textColor, float textScale, MyGuiDrawAlignEnum textAlign)\n            : base(parent, position, size, null, null, false)\n        {\n            m_type = MyGuiControlLabelType.DEFINED_BY_TEXT_WRAPPER_ENUM;\n\n            m_textEnum = textEnum;\n\n            Init(textColor, textScale, textAlign);\n        }\n\n        public MyGuiControlLabel(IMyGuiControlsParent parent, Vector2 position, Vector2? size, StringBuilder text, Vector4 textColor, float textScale, MyGuiDrawAlignEnum textAlign)\n            : base(parent, position, size, null, null, false)\n        {\n            m_type = MyGuiControlLabelType.DEFINED_BY_STRING_BUILDER;\n\n            if (text != null)\n            {\n                //  Create COPY of the text (Don't just point to one string builder!!! This was my original mistake!)\n                m_textDefinition = new StringBuilder(text.ToString());\n                m_textDraw = new StringBuilder(text.ToString());\n            }\n\n            Init(textColor, textScale, textAlign);\n        }\n\n        public MyGuiControlLabel(IMyGuiControlsParent parent, Vector2 position, Vector2? size, StringBuilder text, Vector4 textColor, float textScale, MyGuiDrawAlignEnum textAlign,MyGuiFont font)\n            : base(parent, position, size, null, null, false)\n        {\n            m_type = MyGuiControlLabelType.DEFINED_BY_STRING_BUILDER;\n            Font = font;\n            if (text != null)\n            {\n                //  Create COPY of the text (Don't just point to one string builder!!! This was my original mistake!)\n                m_textDefinition = new StringBuilder(text.ToString());\n                m_textDraw = new StringBuilder(text.ToString());\n            }\n\n            Init(textColor, textScale, textAlign);\n        }\n\n        void Init(Vector4 textColor, float textScale, MyGuiDrawAlignEnum textAlign)\n        {\n            m_textColor = textColor;            \n            m_textAlign = textAlign;\n            SetTextScale(textScale);            \n        }\n\n        public void SetTextScale(float textScale) \n        {\n            m_textScale = textScale;\n            RecalculateSize();\n        }\n\n        //  If label's text contains params, we can update them here. Also don't forget that text is defined two time: one as a definition and one that we draw\n        public void UpdateParams(params object[] args)\n        {\n            if (m_type == MyGuiControlLabelType.DEFINED_BY_TEXT_WRAPPER_ENUM)\n            {\n                if (m_textDraw == null) m_textDraw = new StringBuilder();\n                MyMwcUtils.ClearStringBuilder(m_textDraw);\n                m_textDraw.AppendFormat(MyTextsWrapper.Get(m_textEnum).ToString(), args);\n                RecalculateSize();\n            }\n            else if (m_type == MyGuiControlLabelType.DEFINED_BY_STRING_BUILDER)\n            {\n                MyMwcUtils.ClearStringBuilder(m_textDraw);\n                m_textDraw.AppendFormat(m_textDefinition.ToString(), args);\n                RecalculateSize();\n            }\n            else\n            {\n                throw new MyMwcExceptionApplicationShouldNotGetHere();\n            }\n        }\n\n        public override bool HandleInput(MyGuiInput input, bool hasKeyboardActiveControl, bool hasKeyboardActiveControlPrevious, bool receivedFocusInThisUpdate)\n        {\n            bool ret = base.HandleInput(input, hasKeyboardActiveControl, hasKeyboardActiveControlPrevious, receivedFocusInThisUpdate);\n\n            if (ret == false)\n            {\n                if (MouseEnter != null|| MouseLeave != null)\n                {\n                    bool isMouseOver = CheckMouseOver();\n                    if (isMouseOver != lastIsMouseOver)\n                    {\n                        if (isMouseOver)\n                        {\n                            if (MouseEnter != null)\n                            {\n                                MouseEnter(this, EventArgs.Empty);\n                            }\n                        }\n                        else\n                        {\n                            if (MouseLeave != null)\n                            {\n                                MouseLeave(this, EventArgs.Empty);\n                            }\n                        }\n                    }\n                    lastIsMouseOver = isMouseOver;\n                }\n\n                if (Click != null)\n                {\n                    if (((CheckMouseOver() == true) && input.IsNewLeftMousePressed()) ||\n                        ((hasKeyboardActiveControl == true) && ((input.IsNewKeyPress(Keys.Enter) || (input.IsNewKeyPress(Keys.Space)) || (input.IsNewGameControlPressed(MyGameControlEnums.FIRE_PRIMARY) && !input.IsNewLeftMousePressed())))))\n                    {\n                        Click(this, EventArgs.Empty);\n                    }\n                }\n            }\n\n            return ret;\n        }\n\n        void RecalculateSize()\n        {            \n            m_size = GetTextSize().Size;\n        }\n\n        void DrawText(StringBuilder sb)\n        {\n            Vector4 textColor = m_textColor;\n            if (!Enabled)\n                textColor = m_textColor * MyGuiConstants.DISABLED_BUTTON_COLOR_VECTOR;\n            if (Font==null) MyGuiManager.DrawString(MyGuiManager.GetFontMinerWarsBlue(), sb, m_parent.GetPositionAbsolute() + m_position, m_textScale, GetColorAfterTransitionAlpha(textColor), m_textAlign);\n            else MyGuiManager.DrawString(Font, sb, m_parent.GetPositionAbsolute() + m_position, m_textScale, GetColorAfterTransitionAlpha(textColor), m_textAlign);\n        }\n\n        public override void Draw()\n        {\n            base.Draw();\n\n            if (m_textDraw != null)\n            {\n                //  This means that text was changed through UpdateParams\n                DrawText(m_textDraw);                \n            }\n            else\n            {\n                DrawText(MyTextsWrapper.Get(m_textEnum));                \n            }\n        }\n\n        public void UpdateText(string text)\n        {\n            //m_textDefinition = new StringBuilder(text);\n            //m_textDraw = new StringBuilder(text);\n            UpdateText(new StringBuilder(text));\n        }\n\n        public void UpdateText(StringBuilder builder)\n        {\n            m_textDefinition = builder;\n            m_textDraw = builder;\n            RecalculateSize();\n        }\n\n\n        public StringBuilder GetText() \n        {\n            return m_textDefinition;\n        }\n\n        public MyRectangle2D GetTextSize()\n        {\n            if (m_textDraw != null)\n            {\n                //  This means that text was changed through UpdateParams\n                return MyGuiManager.MeasureString(MyGuiManager.GetFontMinerWarsBlue(), m_textDraw, m_parent.GetPositionAbsolute() + m_position, m_textScale, m_textAlign);\n            }\n            else\n            {\n                return MyGuiManager.MeasureString(MyGuiManager.GetFontMinerWarsBlue(), MyTextsWrapper.Get(m_textEnum), m_parent.GetPositionAbsolute() + m_position, m_textScale, m_textAlign);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Core/MyGuiControlList.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.GUI.Core.TreeView;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.Utils;\n\nnamespace MinerWars.AppCode.Game.GUI.Core\n{\n    class MyGuiControlList : MyGuiControlParent\n    {\n        private MyScrollbar m_verticalScrollbar;\n        private Vector2 m_realSize;\n        private Vector2 m_controlsPadding = new Vector2(0.025f, 0.025f);\n\n        public MyGuiControlList(IMyGuiControlsParent parent, Vector2 position, Vector2 size, Vector4 backgroundColor, StringBuilder toolTip, MyTexture2D controlTexture) \n            : base(parent, position, size, backgroundColor, toolTip, controlTexture)\n        {\n            m_realSize = size;\n\n            m_verticalScrollbar = new MyVScrollbar(this);\n            m_verticalScrollbar.TopBorder = m_verticalScrollbar.RightBorder = m_verticalScrollbar.BottomBorder = false;\n            m_verticalScrollbar.LeftBorder = false;\n            m_verticalScrollbar.OnScrollValueChanged += OnScrollValueChanged;\n\n            RecalculateScrollbar();\n\n            Controls.CollectionChanged += ControlsCollectionChanged;            \n        }\n\n        public MyGuiControlList(IMyGuiControlsParent parent, Vector2 position, Vector2 size, Vector4 backgroundColor, StringBuilder toolTip, MyTexture2D controlTexture, Vector2 padding)\n            :this(parent,position,size,backgroundColor,toolTip,controlTexture)\n        {\n            m_controlsPadding = padding;\n        }\n\n        private void ControlsCollectionChanged(object sender, EventArgs e)\n        {\n            Recalculate();\n        }        \n\n        public void InitControls(IEnumerable<MyGuiControlBase> controls)\n        {\n            Controls.CollectionChanged -= ControlsCollectionChanged;\n            Controls.Clear();\n            foreach (MyGuiControlBase control in controls)\n            {\n                Controls.Add(control);\n            }\n            Controls.CollectionChanged += ControlsCollectionChanged;\n            Recalculate();\n        }\n\n        public override void Draw()\n        {\n            //  End our standard sprite batch\n            MyGuiManager.EndSpriteBatch();\n            //  Draw the rectangle(basically the opened area) to stencil buffer to be used for clipping partial item\n            if (m_controlsPadding.Y > 0)\n                MyGuiManager.DrawStencilMaskRectangle(new MyRectangle2D(GetPositionAbsolute(), m_size.Value), MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER);\n            else \n                MyGuiManager.DrawStencilMaskRectangle(new MyRectangle2D(GetPositionAbsolute(), m_size.Value - 2*m_controlsPadding), MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER);  \n            \n            //  Set up the stencil operation and parameters\n            MyGuiManager.BeginSpriteBatch_StencilMask();\n            \n            base.Draw();            \n            //  End stencil-mask batch, and restart the standard sprite batch\n            MyGuiManager.EndSpriteBatch_StencilMask();\n            //MyGuiManager.EndSpriteBatch();\n            MyGuiManager.BeginSpriteBatch();\n\n            m_verticalScrollbar.Draw();\n        }\n\n        public override bool HandleInput(MyGuiInput input, bool hasKeyboardActiveControl, bool hasKeyboardActiveControlPrevious, bool receivedFocusInThisUpdate)\n        {\n            bool baseResult = base.HandleInput(input, hasKeyboardActiveControl, hasKeyboardActiveControlPrevious, receivedFocusInThisUpdate);\n\n            bool captured = false;\n            var deltaWheel = input.DeltaMouseScrollWheelValue();\n            if (IsMouseOver() && deltaWheel != 0)\n            {\n                m_verticalScrollbar.ChangeValue(-0.0005f * deltaWheel);\n                captured = true;\n            }\n\n            bool capturedScrollbar = m_verticalScrollbar.HandleInput(input, hasKeyboardActiveControl, hasKeyboardActiveControlPrevious, receivedFocusInThisUpdate);\n\n            return baseResult || capturedScrollbar || captured;\n        }\n\n        public override void SetPosition(Vector2 position)\n        {\n            base.SetPosition(position);\n            RecalculateScrollbar();\n            CalculateNewPositionsForControls(m_verticalScrollbar.GetValue());\n        }\n\n        private void Recalculate()\n        {\n            Vector2 oldRealSize = m_realSize;\n            CalculateRealSize();\n            if (oldRealSize != m_realSize)\n            {\n                RecalculateScrollbar();\n            }\n            CalculateNewPositionsForControls(m_verticalScrollbar.GetValue());\n        }\n\n        private void RecalculateScrollbar()\n        {\n            bool vScrollbarVisible = m_size.Value.Y < m_realSize.Y;\n            \n           \n            m_verticalScrollbar.Visible = vScrollbarVisible;\n            m_verticalScrollbar.Init(m_realSize.Y, m_size.Value.Y);\n            m_verticalScrollbar.Layout(m_position + m_parent.GetPositionAbsolute() - m_size.Value / 2, m_size.Value, MyGuiConstants.COMBOBOX_VSCROLLBAR_SIZE, false);\n        }\n\n        private void OnScrollValueChanged(object sender, EventArgs args)\n        {\n            CalculateNewPositionsForControls(m_verticalScrollbar.GetValue());\n        }\n\n        private void CalculateNewPositionsForControls(float offset)\n        {\n            Vector2 positionTopLeft = new Vector2(-m_size.Value.X / 2f, -m_size.Value.Y / 2f) - new Vector2(0f, offset) + m_controlsPadding;\n\n            foreach (MyGuiControlBase control in Controls.GetVisibleControls())\n            {\n                Debug.Assert(control.GetSize() != null);\n                Vector2 controlSize = control.GetSize().Value;\n                control.SetPosition(positionTopLeft + controlSize / 2f);\n                positionTopLeft.Y += controlSize.Y + m_controlsPadding.Y;\n            }\n        }\n\n        private void CalculateRealSize()\n        {\n            Vector2 newSize = Vector2.Zero;\n            newSize.Y += m_controlsPadding.Y;\n            foreach (MyGuiControlBase control in Controls.GetVisibleControls())\n            {\n                Debug.Assert(control.GetSize() != null);\n                Vector2 controlSize = control.GetSize().Value;\n                newSize.Y += controlSize.Y + m_controlsPadding.Y;\n                newSize.X = Math.Max(newSize.X, controlSize.X);                \n            }\n\n            m_realSize.X = Math.Max(m_size.Value.X, newSize.X);\n            m_realSize.Y = Math.Max(m_size.Value.Y, newSize.Y);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Core/MyGuiControlListbox.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath.Graphics;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.AppCode.Toolkit.Input;\nusing SysUtils.Utils;\n\nnamespace MinerWars.AppCode.Game.GUI.Core\n{    \n    delegate void OnListboxItemSelect(object sender, MyGuiControlListboxItemEventArgs eventArgs);\n    delegate void OnListboxItemDoubleClick(object sender, MyGuiControlListboxItemEventArgs eventArgs);\n    delegate void OnListboxItemDrag(object sender, MyGuiControlListboxItemEventArgs eventArgs);\n    class MyGuiControlListbox : MyGuiControlBase\n    {\n        #region fields\n        public Vector2 IconScale = Vector2.One;\n\n        private readonly int m_columns;\n        private int m_itemsCount;\n        private Vector2 m_itemSize;\n        private MyTexture2D m_itemTexture;\n        private Vector4 m_itemColor;\n\n        private List<MyGuiControlListboxRow> m_rows;\n        private int? m_selectedRowIndex;\n        private int? m_selectedItemIndex;\n        private int? m_selectedKey;\n\n        private int? m_mousePreselectedRowIndex;\n        private int? m_mousePreselectedItemIndex;\n        private int? m_preselectedRowIndex;\n        private int? m_preselectedItemIndex;\n        private int m_rowsOffset;\n        private int m_columnsOffset;\n        private bool m_isListboxItemDragging;\n        private Vector2? m_mouseLastPosition;\n        private int? m_previousMousePreselectedRowIndex;\n        private int? m_previousMousePreselectedItemIndex;\n        private double m_doubleClickTimer;\n        private const double DOUBLE_CLICK_DELAY = 500;\n\n        private int m_displayRowsCount;\n        private int m_displayColumnsCount;\n\n        private Vector2 m_topLeftPosition;\n        private float m_columnWidth;\n        private float m_rowHeight;\n        private float m_textScale;\n        private bool m_supportIcon;\n\n        private int m_borderSize = 4;\n        private int m_itemBorderSize = 2;\n        private float m_borderSizeListBox;\n        private float m_borderSizeItem;\n        private float m_paddingTop;\n        private float m_paddingRight;\n        private float m_paddingBottom;\n        private float m_paddingLeft;\n        private float m_sliderOffset;\n        private float m_sliderOffsetTop;\n        private float m_sizeXincrease;\n        private float m_sliderLengthIncrease;\n        private bool m_useFullSizeicon;\n        private Vector2 m_textOffset = MyGuiConstants.LISTBOX_TEXT_OFFSET;\n        private MyGuiControlListboxScrollBar m_verticalScrollBar;\n        private MyGuiControlListboxScrollBar m_horizontalScrollBar;\n        private Vector2 m_innerItemSize;\n        private bool m_highlightAllRow;\n        private bool m_dontHighlightHeadlineRow;\n\n        private List<float> m_customCollumsWidths = null;\n\n        private List<Point> m_selectedItemIndices;\n        #endregion\n\n        #region properties\n        public bool MultipleSelection { get; set; }\n        public bool DisplayHighlight { get; set; }\n        public bool UseFullItemSizeIcon { get; set; }\n\n        public Vector2 TextOffset\n        {\n            get { return m_textOffset; }\n            set { m_textOffset = value; }\n        }\n\n        public Vector2 InnerItemSize\n        {\n            get { return m_innerItemSize; }\n            set { m_innerItemSize = value; }\n        }\n\n        public MyTexture2D ItemMouseOverTexture { get; set; }\n\n        public bool HighlightHeadline { get; set; }\n\n        public bool ShowScrollBarOnlyWhenNeeded { get; set; }\n\n        #endregion\n\n        #region constructors\n        public MyGuiControlListbox(IMyGuiControlsParent parent, Vector2 position, Vector2 size, Vector4 backgroundColor, StringBuilder toolTip, float textScale,\n            int columns, int displayRowsCount, int displayColumnsCount, bool supportPicture, bool verticalScrolling, bool horizontalScrolling,\n            MyTexture2D backgroundTexture, MyTexture2D itemBackgroundTexture, MyTexture2D verticalScrollBarTexture, MyTexture2D horizontalScrollBarTexture,\n            int borderSize, int itemBorderSize, Vector4 itemColor, float paddingTop, float paddingRight, float paddingBottom, float paddingLeft, float itemPaddingRight, float itemPaddingBottom, float sliderOffset, float sliderOffsetTop = 0, float sizeXincrease = 0, float sliderLengthIncrease = 0)\n            : base(parent, position, size, backgroundColor, toolTip, backgroundTexture, null, null, true)\n        {\n            System.Diagnostics.Debug.Assert(columns > 0);\n            System.Diagnostics.Debug.Assert(displayRowsCount > 0);\n            System.Diagnostics.Debug.Assert(displayColumnsCount > 0);\n            m_itemsCount = 0;\n            m_doubleClickTimer = 0;\n            m_canHandleKeyboardActiveControl = true;\n            m_rows = new List<MyGuiControlListboxRow>();\n            m_columns = columns;\n            m_textScale = textScale;\n            m_displayRowsCount = displayRowsCount;\n            m_displayColumnsCount = displayColumnsCount;\n            m_supportIcon = supportPicture;\n            m_itemSize = size;\n            m_innerItemSize = size;\n            m_topLeftPosition = m_position - m_itemSize / 2.0f;\n            m_rowHeight = m_itemSize.Y + itemPaddingBottom;\n            m_columnWidth = m_itemSize.X + itemPaddingRight;\n            m_borderSize = borderSize;\n            m_itemBorderSize = itemBorderSize;\n            m_itemTexture = itemBackgroundTexture;\n            m_itemColor = itemColor;\n            m_paddingTop = paddingTop;\n            m_paddingRight = paddingRight;\n            m_paddingBottom = paddingBottom;\n            m_paddingLeft = paddingLeft;\n            m_sliderOffset = sliderOffset;\n            m_sliderOffsetTop = sliderOffsetTop;\n            m_borderSizeListBox = MyGuiManager.GetNormalizedSizeFromScreenSize(new Vector2(m_borderSize, m_borderSize)).X;\n            m_borderSizeItem = MyGuiManager.GetNormalizedSizeFromScreenSize(new Vector2(m_itemBorderSize, m_itemBorderSize)).X;\n            m_sizeXincrease = sizeXincrease;\n            m_sliderLengthIncrease = sliderLengthIncrease;\n\n            if (verticalScrolling)\n            {\n                Vector2 scrollBarSize = MyGuiConstants.COMBOBOX_VSCROLLBAR_SIZE;\n                Vector2 scrollBarPosition =     m_topLeftPosition\n                                            + new Vector2(m_borderSizeListBox, m_borderSizeListBox) +\n                                            new Vector2(m_paddingLeft, m_paddingTop) + new Vector2(m_displayColumnsCount * m_columnWidth, 0f) + new Vector2(m_sliderOffset, m_sliderOffsetTop);\n                m_verticalScrollBar = new MyGuiControlListboxScrollBar(m_parent, scrollBarPosition, scrollBarSize, m_backgroundColor, MyGuiConstants.LISTBOX_SCROLLBAR_COLOR, MyScrollDirection.Vertical, verticalScrollBarTexture);\n                m_verticalScrollBar.ScrollValueChanged += OnScrollValueChanged;\n            }\n\n            if (horizontalScrolling)\n            {\n                Vector2 scrollBarSize = new Vector2(m_displayColumnsCount * m_columnWidth, MyGuiConstants.LISTBOX_SCROLLBAR_WIDTH);\n                Vector2 scrollBarPosition = m_topLeftPosition\n                    + new Vector2(m_borderSizeListBox, m_borderSizeListBox) + new Vector2(m_paddingLeft, m_paddingTop)\n                    + new Vector2(0f, m_rows.Count * m_rowHeight);\n                float scrollBarMaxValue = Math.Max((float)m_columns / (float)m_displayColumnsCount, 1.0f);\n                m_horizontalScrollBar = new MyGuiControlListboxScrollBar(m_parent, scrollBarPosition, scrollBarSize, m_backgroundColor, MyGuiConstants.LISTBOX_SCROLLBAR_COLOR, MyScrollDirection.Horizontal, horizontalScrollBarTexture);\n                m_horizontalScrollBar.ScrollValueChanged += OnScrollValueChanged;\n                m_horizontalScrollBar.InitializeScrollBar(scrollBarMaxValue);\n            }\n\n            RecalculateRealSize();\n            RecalculateRealPosition();\n\n            m_selectedItemIndices = new List<Point>();\n            DisplayHighlight = true;\n            ShowScrollBarOnlyWhenNeeded = false;\n        }\n\n        public MyGuiControlListbox(IMyGuiControlsParent parent, Vector2 position, Vector2 size, Vector4 backgroundColor, StringBuilder toolTip, float textScale, int columns, int displayRowsCount, int displayColumnsCount, bool supportPicture, bool verticalScrolling, bool horizontalScrolling)\n            : this(parent, position, size, backgroundColor, toolTip, textScale, columns, displayRowsCount, displayColumnsCount, supportPicture, verticalScrolling, horizontalScrolling,\n            null, null, MyGuiManager.GetScrollbarSlider(), MyGuiManager.GetHorizontalScrollbarSlider(), 4, 2, MyGuiConstants.LISTBOX_ITEM_COLOR, 0f, 0f, 0f, 0f, 0, 0, 0)\n        {\n\n        }\n        #endregion\n\n        #region events and delegates\n        public event OnListboxItemSelect ItemSelect;\n        public event OnListboxItemDrag ItemDrag;\n        public event OnListboxItemDoubleClick ItemDoubleClick;\n        #endregion\n\n        #region public methods\n\n        public void SetCustomCollumnsWidths(List<float> widths)\n        {\n            m_customCollumsWidths = widths;\n            RecalculateAfterRowsCountChanged();\n        }\n\n        public void EnableAllRowHighlightWhileMouseOver(bool enable, bool exceptForHeadline = false)\n        {\n            m_highlightAllRow = enable;\n            m_dontHighlightHeadlineRow = exceptForHeadline;\n        }\n\n        public void ResetScrollbarPosition()\n        {\n\n            if (m_verticalScrollBar!=null)\n            {\n                var verticalScrollposition = m_topLeftPosition\n                                             + new Vector2(m_borderSizeListBox, m_borderSizeListBox) +\n                                             new Vector2(m_paddingLeft, m_paddingTop) +\n                                             new Vector2(m_displayColumnsCount*m_columnWidth, 0f) +\n                                             new Vector2(m_sliderOffset, m_sliderOffsetTop);\n                m_verticalScrollBar.SetNewPosition(verticalScrollposition);\n                m_verticalScrollBar.SetScrollValue(0);\n                m_rowsOffset = 0;\n            }\n            RecalculateRealPosition();\n            RecalculateRealSize();\n\n        }\n\n        /// <summary>\n        /// Adds new row to the end and returs index of added row\n        /// </summary>        \n        /// <returns>index of new row</returns>\n        public int AddRow(Vector4? color = null)\n        {\n            return AddRow(m_rows.Count, color);\n        }\n\n        /// <summary>\n        /// Adds new row to specific index\n        /// </summary>\n        /// <param name=\"index\">index of added row</param>\n        /// <returns>index of new row</returns>\n        public int AddRow(int index, Vector4? color)\n        {\n            m_rows.Insert(index, new MyGuiControlListboxRow(m_columns) { Color = color } );\n            RecalculateAfterRowsCountChanged();\n            return index;\n        }\n\n        /// <summary>\n        /// Adds new rows to listbox\n        /// </summary>\n        /// <param name=\"count\">Count</param>\n        public void AddRows(int count)\n        {\n            for (int i = 0; i < count; i++)\n            {\n                AddRow();\n            }\n        }\n\n        /// <summary>\n        /// Removes row at index\n        /// </summary>\n        /// <param name=\"index\">row's index</param>\n        public void RemoveRow(int index)\n        {\n            int removedItems = m_rows[index].ItemsCount();\n            m_itemsCount -= removedItems;\n            m_rows.RemoveAt(index);\n\n            RecalculateAfterRowsCountChanged();\n            FixSelectedIndexes();\n        }\n\n        public void RemoveAllRows()\n        {\n            m_rows.Clear();\n            m_itemsCount = 0;\n\n            RecalculateAfterRowsCountChanged();\n            FixSelectedIndexes();\n        }\n\n        /// <summary>\n        /// Adds new item to first free row\n        /// </summary>\n        /// <param name=\"key\">item's key</param>\n        /// <param name=\"value\">item's value</param>\n        public MyGuiControlListboxItem AddItem(int key, MyTextsWrapperEnum value)\n        {\n            return AddItem(key, MyTextsWrapper.Get(value));\n        }\n\n        /// <summary>\n        /// Adds new item to first free row\n        /// </summary>\n        /// <param name=\"key\">item's key</param>\n        /// <param name=\"value\">item's value</param>\n        public MyGuiControlListboxItem AddItem(int key, StringBuilder value)\n        {\n            return AddItem(key, value, null);\n        }\n\n        /// <summary>\n        /// Adds new item to first free row\n        /// </summary>\n        /// <param name=\"key\">item's key</param>\n        /// <param name=\"value\">item's value</param>\n        /// <param name=\"icon\">item's icon</param>\n        public MyGuiControlListboxItem AddItem(int key, StringBuilder value, MyTexture2D icon)\n        {\n            MyGuiControlListboxItem newItem = CreateListboxItem(key, value, icon);\n            AddItem(newItem);\n            return newItem;\n        }\n\n        /// <summary>\n        /// Adds new item to specific row and item's index\n        /// </summary>\n        /// <param name=\"key\">item's key</param>\n        /// <param name=\"value\">item's value</param>\n        /// <param name=\"icon\">item's icon</param>\n        /// <param name=\"rowIndex\">row's index</param>\n        /// <param name=\"itemIndex\">item's index</param>        \n        public MyGuiControlListboxItem AddItem(int key, StringBuilder value, MyTexture2D icon, int rowIndex, int itemIndex)\n        {\n            MyGuiControlListboxItem newItem = CreateListboxItem(key, value, icon);\n            AddItem(newItem, rowIndex, itemIndex);\n            return newItem;\n        }\n\n        /// <summary>\n        /// Adds new item to first free row\n        /// </summary>\n        /// <param name=\"item\">item</param>\n        public void AddItem(MyGuiControlListboxItem item)\n        {\n            // if there are no rows, then add new one and add item there\n            if (m_rows.Count == 0)\n            {\n                AddRow();\n                AddItem(item, 0, 0);\n            }\n            else\n            {\n                int? emptyRowIndex = null;\n                int? emptyItemIndex = null;\n\n                // try find first empty row\n                for (int rowIndex = 0; rowIndex < m_rows.Count; rowIndex++)\n                {\n                    emptyItemIndex = m_rows[rowIndex].GetFirstEmptyItemSlot();\n                    if (emptyItemIndex != null)\n                    {\n                        emptyRowIndex = rowIndex;\n                        break;\n                    }\n                }\n\n                // if not founded, then add new row\n                if (emptyRowIndex == null || emptyItemIndex == null)\n                {\n                    emptyRowIndex = this.AddRow();\n                    emptyItemIndex = 0;\n                }\n\n                // add item at first empty position\n                AddItem(item, emptyRowIndex.Value, emptyItemIndex.Value);\n            }\n        }\n\n        /// <summary>\n        /// Adds new item to specific row and item's index\n        /// </summary>\n        /// <param name=\"item\">item</param>\n        /// <param name=\"rowIndex\">row's index</param>\n        /// <param name=\"itemIndex\">item's index</param>\n        public void AddItem(MyGuiControlListboxItem item, int rowIndex, int itemIndex)\n        {\n            MyGuiControlListboxRow row = m_rows[rowIndex];\n            row.Items[itemIndex] = item;\n\n            if (item != null)\n            {\n                m_itemsCount++;\n            }\n        }\n\n        /// <summary>\n        /// Removes item\n        /// </summary>\n        /// <param name=\"key\">item's key</param>\n        public void RemoveItem(int key, bool removeEmptyItems = true)\n        {\n            foreach (MyGuiControlListboxRow row in m_rows)\n            {\n                for (int i = 0; i < row.Items.Length; i++)\n                {\n                    MyGuiControlListboxItem item = row.Items[i];\n                    if (item != null && item.Key == key)\n                    {\n                        row.Items[i] = null;\n                        m_itemsCount--;\n                        FixAfterRemove(removeEmptyItems);\n                        return;\n                    }\n                }\n            }\n        }\n\n        /// <summary>\n        /// Removes item\n        /// </summary>\n        /// <param name=\"rowIndex\">row's index</param>\n        /// <param name=\"itemIndex\">item's index</param>\n        public void RemoveItem(int rowIndex, int itemIndex, bool removeEmptyItems = true)\n        {\n            if (m_rows[rowIndex].Items[itemIndex] != null)\n            {\n                m_itemsCount--;\n            }\n            m_rows[rowIndex].Items[itemIndex] = null;\n            FixAfterRemove(removeEmptyItems);\n        }\n\n        /// <summary>\n        /// Removes all items from listbox\n        /// </summary>\n        public void RemoveAllItems(bool removeEmptyItems = true)\n        {\n            foreach (MyGuiControlListboxRow row in m_rows)\n            {\n                for (int i = 0; i < row.Items.Length; i++)\n                {\n                    row.Items[i] = null;\n                }\n            }\n            m_itemsCount = 0;\n            FixAfterRemove(removeEmptyItems);\n        }\n\n        /// <summary>\n        /// Removes empty items and empty rows\n        /// </summary>\n        public void RemoveEmptyItems()\n        {\n            int rowIndex = 0;\n            int itemIndex = 0;\n            int emptyRowIndex = 0;\n            int emptyItemIndex = 0;\n            int lastNonEmptyRowIndex = 0;\n            int lastNonEmptyItemIndex = 0;\n            bool emptyItemFounded = false;\n\n            while (rowIndex < m_rows.Count)\n            {\n                for (itemIndex = 0; itemIndex < m_columns; itemIndex++)\n                {\n                    // we looking for empty item\n                    if (!emptyItemFounded)\n                    {\n                        if (m_rows[rowIndex].Items[itemIndex] == null)\n                        {\n                            emptyRowIndex = rowIndex;\n                            emptyItemIndex = itemIndex;\n                            emptyItemFounded = true;\n\n                            if (lastNonEmptyRowIndex > emptyRowIndex)\n                            {\n                                rowIndex = lastNonEmptyRowIndex;\n                                itemIndex = lastNonEmptyItemIndex;\n                            }\n                        }\n                    }\n                    // we looking for item after empty item\n                    else\n                    {\n                        MyGuiControlListboxItem item = m_rows[rowIndex].Items[itemIndex];\n                        if (item != null)\n                        {\n                            m_rows[emptyRowIndex].Items[emptyItemIndex] = item;\n                            m_rows[rowIndex].Items[itemIndex] = null;\n                            emptyItemFounded = false;\n\n                            lastNonEmptyRowIndex = rowIndex;\n                            lastNonEmptyItemIndex = itemIndex;\n                            rowIndex = emptyRowIndex;\n                            itemIndex = emptyItemIndex;\n                        }\n                    }\n                }\n                rowIndex++;\n            }\n            RemoveEmptyRows();\n        }\n\n        /// <summary>\n        /// Removes all empty rows\n        /// </summary>\n        public void RemoveEmptyRows()\n        {\n            for (int rowIndex = m_rows.Count - 1; rowIndex >= 0; rowIndex--)\n            {\n                if (m_rows[rowIndex].IsEmpty())\n                {\n                    m_rows.RemoveAt(rowIndex);\n                }\n            }\n            RecalculateAfterRowsCountChanged();\n            FixSelectedIndexes();\n        }\n\n        /// <summary>\n        /// Returns item by key\n        /// </summary>\n        /// <param name=\"key\">item's key</param>\n        /// <returns></returns>\n        public MyGuiControlListboxItem GetItem(int key)\n        {\n            foreach (MyGuiControlListboxRow row in m_rows)\n            {\n                foreach (MyGuiControlListboxItem item in row.Items)\n                {\n                    if (item != null && item.Key == key)\n                    {\n                        return item;\n                    }\n                }\n            }\n            return null;\n        }\n\n        /// <summary>\n        /// Returns item by row's index and item's index\n        /// </summary>\n        /// <param name=\"rowIndex\">row's index</param>\n        /// <param name=\"itemIndex\">imte's index</param>\n        /// <returns></returns>\n        public MyGuiControlListboxItem GetItem(int rowIndex, int itemIndex)\n        {\n            if (rowIndex < m_rows.Count && rowIndex >= 0)\n            {\n                if (itemIndex < m_columns && itemIndex >= 0)\n                {\n                    return m_rows[rowIndex].Items[itemIndex];\n                }\n            }\n            return null;\n        }\n\n        /// <summary>\n        /// Returns selected row\n        /// </summary>\n        /// <returns></returns>\n        public MyGuiControlListboxRow GetSelectedRow()\n        {\n            if (m_selectedRowIndex != null)\n            {\n                return m_rows[m_selectedRowIndex.Value];\n            }\n            return null;\n        }\n\n        /// <summary>\n        /// Returns selected item\n        /// </summary>\n        /// <returns></returns>\n        public MyGuiControlListboxItem GetSelectedItem()\n        {\n            MyGuiControlListboxRow selectedRow = GetSelectedRow();\n            if (selectedRow != null)\n            {\n                if (m_selectedItemIndex != null)\n                {\n                    return selectedRow.Items[m_selectedItemIndex.Value];\n                }\n            }\n            return null;\n        }\n\n        /// <summary>\n        /// Returns selected items, use this method if MultipleSelection is true\n        /// </summary>\n        public List<MyGuiControlListboxItem> GetSelectedItems()\n        {\n            List<MyGuiControlListboxItem> items = new List<MyGuiControlListboxItem>();\n            foreach (var multiSelectedItem in m_selectedItemIndices)\n            {\n                if (multiSelectedItem.Y < m_rows.Count)\n                {\n                    var item = m_rows[multiSelectedItem.Y].Items[multiSelectedItem.X];\n                    if (item != null)\n                    {\n                        items.Add(item);\n                    }\n                }\n            }\n            return items;\n        }\n\n\n        public void SelectAll()\n        {\n            if (MultipleSelection)\n            {\n                m_selectedItemIndices.Clear();\n                for (int i = 0; i < m_columns; i++)\n                {\n                    for (int j = 0; j < m_rows.Count; j++)\n                    {\n                        var item = GetItem(j, i);\n                        if (item != null)\n                        {\n                            m_selectedItemIndices.Add(new Point(i, j));\n                        }\n                    }\n                }\n            }\n        }\n\n        public void SelectRow(int rowToSelect)\n        {\n            if (MultipleSelection)\n            {\n                m_selectedItemIndices.Clear();\n                for (int i = 0; i < m_columns; i++)\n                {\n                    var item = GetItem(rowToSelect, i);\n                    if (item != null)\n                    {\n                        m_selectedItemIndices.Add(new Point(i, rowToSelect));\n                    }\n                }\n            }\n        }\n\n        public void SelectColumn(int columnToSelect)\n        {\n            if (MultipleSelection)\n            {\n                m_selectedItemIndices.Clear();\n                for (int j = 0; j < m_rows.Count; j++)\n                {\n                    var item = GetItem(j, columnToSelect);\n                    if (item != null)\n                    {\n                        m_selectedItemIndices.Add(new Point(columnToSelect, j));\n                    }\n                }\n            }\n        }\n\n        public void DeselectAll()\n        {\n            if (MultipleSelection)\n            {\n                m_selectedItemIndices.Clear();\n                m_preselectedRowIndex = m_selectedRowIndex = null;\n                m_preselectedItemIndex = m_selectedItemIndex = null;\n            }\n        }\n\n        /// <summary>\n        /// Returns selected item's key\n        /// </summary>\n        /// <returns></returns>\n        public int? GetSelectedItemKey()\n        {\n            MyGuiControlListboxRow selectedRow = GetSelectedRow();\n            if (selectedRow != null)\n            {\n                if (m_selectedItemIndex != null)\n                {\n                    return selectedRow.Items[m_selectedItemIndex.Value].Key;\n                }\n            }\n            return null;\n        }\n\n        /// <summary>\n        /// Sets selected item\n        /// </summary>\n        /// <param name=\"rowIndex\">row's index</param>\n        /// <param name=\"itemIndex\">item's index</param>\n        public void SetSelectedItem(int? rowIndex, int? itemIndex)\n        {\n            if (rowIndex == null || rowIndex.Value < m_rows.Count && rowIndex.Value > m_rows.Count)\n            {\n                m_selectedRowIndex = null;\n            }\n            else\n            {\n                m_selectedRowIndex = rowIndex;\n            }\n            m_selectedItemIndex = itemIndex;\n\n            var item = GetSelectedItem();\n            if (item != null && item.Enabled)\n            {\n                m_selectedKey = item.Key;\n                if (ItemSelect != null)\n                {\n                    ItemSelect(this, new MyGuiControlListboxItemEventArgs(m_selectedRowIndex.Value, m_selectedItemIndex.Value, item.Key));\n                }\n            }\n            else\n            {\n                m_selectedKey = null;\n            }\n            SetOffsets(m_selectedRowIndex, m_selectedItemIndex, true);\n        }\n\n        private bool IsMultipleSelected(int itemIndex, int rowIndex)\n        {\n            foreach (var item in m_selectedItemIndices)\n            {\n                if (item.X == itemIndex && item.Y == rowIndex)\n                {\n                    return true;\n                }\n            }\n            return false;\n        }\n\n        private void HandleMultiSelect(bool addSingleItem, bool addMultiple, int? oldSelectedRowIndex, int? oldSelectedItemIndex, int? m_selectedRowIndex, int? m_selectedItemIndex)\n        {\n            if (!MultipleSelection)\n            {\n                m_selectedItemIndices.Clear();\n                return;\n            }\n\n            Point? oldItem = oldSelectedRowIndex.HasValue && oldSelectedItemIndex.HasValue ? new Point(oldSelectedItemIndex.Value, oldSelectedRowIndex.Value) : (Point?)null;\n            Point? newItem = m_selectedRowIndex.HasValue && m_selectedItemIndex.HasValue ? new Point(m_selectedItemIndex.Value, m_selectedRowIndex.Value) : (Point?)null;\n\n            if (addSingleItem)\n            {\n                if (newItem.HasValue)\n                {\n                    if (m_selectedItemIndices.Contains(newItem.Value))\n                    {\n                        m_selectedItemIndices.Remove(newItem.Value);\n\n                        SetSelectedItem(null, null);\n                    }\n                    else\n                    {\n                        m_selectedItemIndices.Add(newItem.Value);\n                    }\n\n                }\n            }\n            else if (addMultiple)\n            {\n                if (oldItem.HasValue && newItem.HasValue)\n                {\n                    Point? start = oldItem;\n                    Point? end = newItem;\n\n                    // Switch if selection start after selection end\n                    if (oldItem.Value.Y > newItem.Value.Y || (oldItem.Value.Y == newItem.Value.Y && oldItem.Value.X > newItem.Value.X))\n                    {\n                        start = newItem;\n                        end = oldItem;\n                    }\n\n                    m_selectedItemIndices.Clear();\n                    if (start.Value.Y == end.Value.Y)\n                    {\n                        // same row\n                        for (int i = start.Value.X; i <= end.Value.X; i++)\n                        {\n                            var item = GetItem(start.Value.Y, i);\n                            if (item != null) m_selectedItemIndices.Add(new Point(i, start.Value.Y));\n                        }\n                    }\n                    else\n                    {\n                        // Start item to end of row\n                        for (int i = start.Value.X; i < m_columns; i++)\n                        {\n                            var item = GetItem(start.Value.Y, i);\n                            if (item != null) m_selectedItemIndices.Add(new Point(i, start.Value.Y));\n                        }\n\n                        // whole rows\n                        for (int i = start.Value.Y + 1; i <= end.Value.Y - 1; i++)\n                        {\n                            for (int j = 0; j < m_columns; j++)\n                            {\n                                var item = GetItem(i, j);\n                                if (item != null) m_selectedItemIndices.Add(new Point(j, i));\n                            }\n                        }\n\n                        // Start item to end of row\n                        for (int i = 0; i <= end.Value.X; i++)\n                        {\n                            var item = GetItem(end.Value.Y, i);\n                            if (item != null) m_selectedItemIndices.Add(new Point(i, end.Value.Y));\n                        }\n                    }\n                }\n            }\n            else\n            {\n                m_selectedItemIndices.Clear();\n                if (newItem.HasValue)\n                {\n                    m_selectedItemIndices.Add(newItem.Value);\n                }\n            }\n        }\n\n\n        /// <summary>\n        /// Sets selected item\n        /// </summary>\n        /// <param name=\"key\">item's key</param>\n        public void SetSelectedItem(int key)\n        {\n            for (int rowIndex = 0; rowIndex < m_rows.Count; rowIndex++)\n            {\n                for (int itemIndex = 0; itemIndex < m_columns; itemIndex++)\n                {\n                    if (m_rows[rowIndex].Items[itemIndex] != null &&\n                       m_rows[rowIndex].Items[itemIndex].Key == key)\n                    {\n                        SetSelectedItem(rowIndex, itemIndex);\n                        return;\n                    }\n                }\n            }\n            SetSelectedItem(null, null);\n        }\n\n        /// <summary>\n        /// Returns position (item's index and row's index) under the mouses's cursor\n        /// </summary>\n        /// <returns></returns>\n        public Point? GetMouseOverIndexes()\n        {\n            Vector2 leftTopPosition = GetLeftTopPosition() + new Vector2(m_borderSizeListBox, m_borderSizeListBox) + new Vector2(m_paddingLeft, m_paddingTop);\n            float mouseXPositionRelative = MyGuiManager.MouseCursorPosition.X - leftTopPosition.X;\n            float mouseYPositionRelative = MyGuiManager.MouseCursorPosition.Y - leftTopPosition.Y;\n            Vector2 itemsAreaSize = GetItemsAreaSizeForMouse();\n            float mouseXRelativeRatio = mouseXPositionRelative / itemsAreaSize.X;\n            float mouseYRelativeRatio = mouseYPositionRelative / itemsAreaSize.Y;\n            int currentMouseRowIndex = (int)Math.Floor(mouseYRelativeRatio * m_displayRowsCount);\n\n            int currentMouseItemIndex = (int)Math.Floor(mouseXRelativeRatio * m_displayColumnsCount);\n            if (m_customCollumsWidths != null)\n            {\n                currentMouseItemIndex = 0;\n                float offset = 0;\n                for (int i = 0; i <= m_displayColumnsCount; i++)\n                {\n                    if (offset > mouseXPositionRelative)\n                    {\n                        currentMouseItemIndex--;\n                        break;\n                    }\n                    else\n                    {\n                        currentMouseItemIndex++;\n                        if(m_customCollumsWidths.Count > i && m_customCollumsWidths[i] > 0){\n                            offset+=m_customCollumsWidths[i];\n                        }\n                        else{\n                            offset += m_itemSize.X;\n                        }\n                    }\n                }\n            }\n\n            if (currentMouseRowIndex >= 0 && currentMouseRowIndex < m_displayRowsCount &&\n               currentMouseItemIndex >= 0 && currentMouseItemIndex < m_displayColumnsCount)\n            {\n                return new Point(currentMouseItemIndex + m_columnsOffset, currentMouseRowIndex + m_rowsOffset);\n            }\n            else\n            {\n                return null;\n            }\n        }\n\n        /// <summary>\n        /// Returns row's count\n        /// </summary>\n        /// <returns></returns>\n        public int GetRowsCount()\n        {\n            return m_rows.Count;\n        }\n\n        /// <summary>\n        /// Returns column's count\n        /// </summary>\n        /// <returns></returns>\n        public int GetColumsCount()\n        {\n            return m_columns;\n        }\n\n        /// <summary>\n        /// Returns all items\n        /// </summary>\n        /// <returns></returns>\n        public List<MyGuiControlListboxItem> GetItems()\n        {\n            List<MyGuiControlListboxItem> items = new List<MyGuiControlListboxItem>();\n            foreach (MyGuiControlListboxRow row in m_rows)\n            {\n                foreach (MyGuiControlListboxItem item in row.Items)\n                {\n                    if (item != null)\n                    {\n                        items.Add(item);\n                    }\n                }\n            }\n\n            return items;\n        }\n\n        /// <summary>\n        /// Returns all items keys\n        /// </summary>\n        /// <returns></returns>\n        public List<int> GetItemsKeys()\n        {\n            List<int> keys = new List<int>();\n            foreach (MyGuiControlListboxRow row in m_rows)\n            {\n                foreach (MyGuiControlListboxItem item in row.Items)\n                {\n                    if (item != null)\n                    {\n                        keys.Add(item.Key);\n                    }\n                }\n            }\n\n            return keys;\n        }\n\n        /// <summary>\n        /// Returns item's count\n        /// </summary>\n        /// <returns></returns>\n        public int GetItemsCount()\n        {\n            //int count = 0;\n            //foreach (MyGuiControlListboxRow row in m_rows)\n            //{\n            //    foreach (MyGuiControlListboxItem item in row.Items)\n            //    {\n            //        if (item != null)\n            //        {\n            //            count++;\n            //        }\n            //    }\n            //}\n\n            //return count;\n            return m_itemsCount;\n        }\n\n        /// <summary>\n        /// Returns empty item's count\n        /// </summary>\n        /// <returns></returns>\n        public int GetEmptyItemsCount()\n        {\n            //int count = 0;\n            //foreach (MyGuiControlListboxRow row in m_rows)\n            //{\n            //    foreach (MyGuiControlListboxItem item in row.Items)\n            //    {\n            //        if (item == null)\n            //        {\n            //            count++;\n            //        }\n            //    }\n            //}\n\n            //return count;\n            return m_rows.Count * m_columns - m_itemsCount;\n        }\n\n        /// <summary>\n        /// Returns count of rows without any item\n        /// </summary>\n        /// <returns></returns>\n        public int GetEmptyRowsCount()\n        {\n            int count = 0;\n            foreach (MyGuiControlListboxRow row in m_rows)\n            {\n                if (row.IsEmpty())\n                {\n                    count++;\n                }\n            }\n\n            return count;\n        }\n\n        #endregion\n\n        #region overriden methods\n        public override void SetPosition(Vector2 position)\n        {\n            base.SetPosition(position);\n            RecalculateRealPosition();\n            //base.SetPosition(position);\n        }\n\n        public override bool HandleInput(MyGuiInput input, bool hasKeyboardActiveControl, bool hasKeyboardActiveControlPrevious, bool receivedFocusInThisUpdate)\n        {\n            bool captureInput = base.HandleInput(input, hasKeyboardActiveControl, hasKeyboardActiveControlPrevious, receivedFocusInThisUpdate);\n\n            if (Enabled && !captureInput && m_rows.Count > 0)\n            {\n                #region handle scrollbar\n                if (m_verticalScrollBar != null)\n                {\n                    if (m_verticalScrollBar.HandleInput(input, hasKeyboardActiveControl, hasKeyboardActiveControlPrevious, receivedFocusInThisUpdate))\n                    {\n                        captureInput = true;\n                    }\n                }\n                if (m_horizontalScrollBar != null)\n                {\n                    if (m_horizontalScrollBar.HandleInput(input, hasKeyboardActiveControl, hasKeyboardActiveControlPrevious, receivedFocusInThisUpdate))\n                    {\n                        captureInput = true;\n                    }\n                }\n                #endregion\n\n                // handle only if mouse is over the control\n                if (IsMouseOver() && !captureInput)\n                {\n                    #region handle mouse\n                    HandleCurrentMousePreselected();\n                    m_doubleClickTimer += MyConstants.PHYSICS_STEP_SIZE_IN_MILLISECONDS;\n\n                    // selection by mouse\n                    var preselectedItem = GetMousePreselectedItem();\n                    if (input.IsNewLeftMousePressed())\n                    {\n                        if (preselectedItem != null && preselectedItem.Enabled)\n                        {\n                            // double click handle                            \n                            if (m_doubleClickTimer <= DOUBLE_CLICK_DELAY && m_mouseLastPosition != null && (m_mouseLastPosition.Value - MyGuiManager.MouseCursorPosition).Length() <= 0.005f)\n                            {\n                                if (ItemDoubleClick != null)\n                                {\n                                    ItemDoubleClick(this, new MyGuiControlListboxItemEventArgs(m_mousePreselectedRowIndex.Value, m_mousePreselectedItemIndex.Value, preselectedItem.Key));\n                                    MyAudio.AddCue2D(MySoundCuesEnum.GuiMouseClick);\n                                    MyAudio.AddCue2D(MySoundCuesEnum.GuiMouseClick);\n                                }\n                            }\n                            // click handle\n                            else\n                            {\n                                int? oldSelectedRowIndex = m_selectedRowIndex;\n                                int? oldSelectedItemIndex = m_selectedItemIndex;\n\n                                SetSelectedItem(m_mousePreselectedRowIndex, m_mousePreselectedItemIndex);\n                                HandleMultiSelect(input.IsAnyCtrlKeyPressed(), input.IsAnyShiftKeyPressed(),\n                                    oldSelectedRowIndex, oldSelectedItemIndex, m_selectedRowIndex, m_selectedItemIndex);\n\n                                MyAudio.AddCue2D(MySoundCuesEnum.GuiMouseClick);\n                                ResetPreselected();\n                            }\n\n                            m_mouseLastPosition = MyGuiManager.MouseCursorPosition;\n                            m_doubleClickTimer = 0;\n                            m_isListboxItemDragging = true;\n                            captureInput = true;\n                        }\n                    }\n                    // listbox item dragging\n                    else if (input.IsLeftMousePressed())\n                    {\n                        if (m_isListboxItemDragging)\n                        {\n                            if (m_mouseLastPosition != null &&\n                                preselectedItem != null &&\n                                preselectedItem.Enabled && \n                                m_mousePreselectedItemIndex == m_previousMousePreselectedItemIndex &&\n                                m_mousePreselectedRowIndex == m_previousMousePreselectedRowIndex)\n                            {\n                                Vector2 mouseDistanceFromLastUpdate = MyGuiManager.MouseCursorPosition - m_mouseLastPosition.Value;\n                                if (mouseDistanceFromLastUpdate.Length() != 0.0f)\n                                {\n                                    if (ItemDrag != null)\n                                    {\n                                        ItemDrag(this, new MyGuiControlListboxItemEventArgs(m_mousePreselectedRowIndex.Value, m_previousMousePreselectedItemIndex.Value, preselectedItem.Key));\n                                    }\n                                    m_isListboxItemDragging = false;\n                                }\n\n                                captureInput = true;\n                            }\n                        }\n                        m_mouseLastPosition = MyGuiManager.MouseCursorPosition;\n                    }\n                    else\n                    {\n                        m_isListboxItemDragging = false;\n                    }\n                    #endregion\n\n                    #region handle keyboard\n                    if (hasKeyboardActiveControl)\n                    {\n                        // handle selection move\n                        if (HandleCurrentPreselected(input))\n                        {\n                            captureInput = true;\n                            preselectedItem = GetPreselectedItem();\n                        }\n\n                        // selection by keyboard\n                        if (input.IsNewKeyPress(Keys.Enter) || input.IsNewKeyPress(Keys.Space))\n                        {                            \n                            if (preselectedItem != null && preselectedItem.Enabled)\n                            {\n                                SetSelectedItem(m_preselectedRowIndex, m_preselectedItemIndex);\n                                MyAudio.AddCue2D(MySoundCuesEnum.GuiMouseClick);\n                            }\n                            captureInput = true;\n                        }\n                    }\n                    else\n                    {\n                        HandleMouseWheelScroll(input, ref captureInput);\n                    }\n                    #endregion\n                }\n                else\n                {\n                    m_mousePreselectedItemIndex = null;\n                    m_mousePreselectedRowIndex = null;\n                }\n            }\n\n            return captureInput;\n        }\n\n        void HandleMouseWheelScroll(MyGuiInput input, ref bool captureInput)\n        {\n            // MouseWheel movement\n            int deltaMouseScrollValue = input.DeltaMouseScrollWheelValue();\n\n            // MouseWheel scroll with scrollbar\n            if (m_verticalScrollBar != null)\n            {\n                bool rowsOffsetChanged = false;\n                if (deltaMouseScrollValue < 0)\n                {\n                    m_rowsOffset = Math.Min(\n                        m_rowsOffset + 1, Math.Max(m_rows.Count - m_displayRowsCount, 0));\n                    rowsOffsetChanged = true;\n                }\n                else if (deltaMouseScrollValue > 0)\n                {\n                    m_rowsOffset = Math.Max(m_rowsOffset - 1, 0);\n                    rowsOffsetChanged = true;\n                }\n\n                if (rowsOffsetChanged)\n                {\n                    SetScrollValueByOffset(m_verticalScrollBar, m_rowsOffset, m_displayRowsCount);\n                    captureInput = true;\n                }\n            }\n            else // MouseWheel movement\n            {\n                if (deltaMouseScrollValue < 0)\n                {\n                    //this.MovePreselected(true, false, true);\n                    MovePreselected(true, true);\n                    captureInput = true;\n                }\n                else if (deltaMouseScrollValue > 0)\n                {\n                    //this.MovePreselected(false, false, true);\n                    MovePreselected(false, true);\n                    captureInput = true;\n                }\n            }\n        }\n\n        public bool Contains(float x, float y)\n        {\n            var size = this.GetSize();\n            return size != null && MyGUIHelper.Contains(this.GetPosition(), size.Value, x, y);\n        }\n\n        public override void Draw()\n        {\n            //base.Draw();                                    \n\n            Vector4 vectorLineColor = MyGuiConstants.LISTBOX_LINE_COLOR;\n            Vector4 backgroundColor = m_backgroundColor.Value;\n            if (!Enabled)\n            {\n                backgroundColor *= MyGuiConstants.LISTBOX_DISABLED_COLOR;\n                vectorLineColor *= MyGuiConstants.LISTBOX_DISABLED_COLOR;\n            }\n            //Vector4 vectorLineColor = MyGuiConstants.LISTBOX_LINE_COLOR;\n            if (IsMouseOver())\n            {\n                vectorLineColor = vectorLineColor * MyGuiConstants.CONTROL_MOUSE_OVER_BACKGROUND_COLOR_MULTIPLIER;\n            }\n\n            #region Draw background\n            if (m_controlTexture != null)\n            {\n                MyGuiManager.DrawSpriteBatch(m_controlTexture,\n                                             GetLeftTopPosition() +\n                                             new Vector2(m_borderSizeListBox, m_borderSizeListBox), m_size.Value,\n                                             GetColorAfterTransitionAlpha(backgroundColor *\n                                                                          (new Color(50, 66, 70, 255)).ToVector4()),\n                                             MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP);\n            }\n            else\n            {   \n\n                //MyGuiManager.DrawBackgroundRectangleForOpaqueControl(\n                //    GetLeftTopPosition(), m_size.Value,\n                //    GetColorAfterTransitionAlpha(backgroundColor * (new Color(50, 66, 70, 255)).ToVector4()),\n                //    MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP);\n            }\n\n            #endregion\n\n            #region Draw scrollbar\n            if (m_verticalScrollBar != null)\n            {\n                if (!ShowScrollBarOnlyWhenNeeded || m_rows.Count > m_displayRowsCount)\n                {\n                    m_verticalScrollBar.Draw();\n                }\n            }\n            if (m_horizontalScrollBar != null)\n            {\n                if (!ShowScrollBarOnlyWhenNeeded || m_columns > m_displayColumnsCount)\n                {\n                    m_horizontalScrollBar.Draw();\n                }\n            }\n            #endregion\n\n            #region draw items\n            for (int rowIndex = m_rowsOffset; rowIndex < m_rowsOffset + Math.Min(m_displayRowsCount, m_rows.Count); rowIndex++)\n            {\n                for (int itemIndex = m_columnsOffset; itemIndex < m_columnsOffset + Math.Min(m_displayColumnsCount, m_columns); itemIndex++)\n                {\n                    DrawItem(rowIndex, itemIndex, MyGuiConstants.LISTBOX_LINE_COLOR);\n                }\n            }\n            #endregion\n\n            #region Draw borders\n            if (m_borderSizeListBox > 0.0f)\n            {\n                Color itemsBordersColor = GetColorAfterTransitionAlpha(vectorLineColor);\n                DrawBorders(GetLeftTopPosition(), m_size.Value, itemsBordersColor, m_borderSize);\n            }\n            #endregion\n\n            #region Draw disabled X\n            if (!Enabled)\n            {\n                MyGuiManager.DrawSpriteBatch(MyGuiManager.GetLockedInventoryItem(),\n                                             GetLeftTopPosition() +\n                                             new Vector2(m_borderSizeListBox, m_borderSizeListBox) + new Vector2(m_paddingLeft, m_paddingTop),\n                                             GetItemsAreaSize(), new Color(255,240,240,255), \n                                             MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP);\n            }\n\n            #endregion\n\n            //ShowToolTip();\n        }\n\n        public override void ShowToolTip()\n        {\n            // if listbox supports icons and mouse is over any item, then show item's value in tooltip\n            MyToolTips tempToolTip = m_toolTip;\n            //if (m_supportIcon)\n            //{\n            //    MyGuiControlListboxItem mouseOverItem = GetMousePreselectedItem();\n            //    if (mouseOverItem != null)\n            //    {\n            //        m_toolTip = new MyToolTips(mouseOverItem.Value);\n            //    }\n            //}                \n            MyGuiControlListboxItem mouseOverItem = GetMousePreselectedItem();\n            if (mouseOverItem != null && mouseOverItem.ToolTip != null && mouseOverItem.ToolTip.GetToolTips().Count > 0)\n            {\n                m_toolTip = mouseOverItem.ToolTip;\n            }\n            base.ShowToolTip();\n            m_toolTip = tempToolTip;\n        }\n\n        protected override bool CheckMouseOver()\n        {\n            return base.CheckMouseOver();\n        }\n        #endregion\n\n        #region private methods\n        private void FixAfterRemove(bool removeEmptyItems) \n        {\n            if (removeEmptyItems)\n            {\n                RemoveEmptyItems();\n            }\n            FixSelectedIndexes();\n        }\n\n        private MyGuiControlListboxItem CreateListboxItem(int key, StringBuilder value, MyTexture2D icon)\n        {\n            MyColoredText coloredText = null;\n            MyToolTips toolTips = null;\n            if (value != null)\n            {\n                coloredText = new MyColoredText(value, new Color(MyGuiConstants.LISTBOX_TEXT_COLOR),\n                                                new Color(MyGuiConstants.LISTBOX_TEXT_COLOR * MyGuiConstants.CONTROL_MOUSE_OVER_BACKGROUND_COLOR_MULTIPLIER),\n                                                MyGuiManager.GetFontMinerWarsBlue(), m_textScale, Vector2.Zero);\n                toolTips = new MyToolTips(value);\n            }\n            MyGuiControlListboxItem newItem = new MyGuiControlListboxItem(key, coloredText, icon, toolTips);\n            return newItem;\n        }\n\n        private void RecalculateAfterRowsCountChanged()\n        {\n            RecalculateRealSize();\n            RecalculateRealPosition();\n            int maxOffset = m_rows.Count - m_displayRowsCount;\n            m_rowsOffset = Math.Max(Math.Min(m_rowsOffset, maxOffset), 0);\n            if (m_verticalScrollBar != null)\n            {\n                float scrollBarMaxValue = Math.Max((float)m_rows.Count / (float)m_displayRowsCount, 1.0f);\n                m_verticalScrollBar.InitializeScrollBar(scrollBarMaxValue);\n                SetScrollValueByOffset(m_verticalScrollBar, m_rowsOffset, m_displayRowsCount);\n            }\n        }\n\n        private void SetOffsets(int? rowIndex, int? itemIndex, bool setMaxOffset = false)\n        {\n            m_rowsOffset = GetOffsetByIndex(m_rowsOffset, rowIndex, m_displayRowsCount, setMaxOffset);\n            m_columnsOffset = GetOffsetByIndex(m_columnsOffset, itemIndex, m_displayColumnsCount, setMaxOffset);\n            if (m_verticalScrollBar != null)\n            {\n                SetScrollValueByOffset(m_verticalScrollBar, m_rowsOffset, m_displayRowsCount);\n            }\n            if (m_horizontalScrollBar != null)\n            {\n                SetScrollValueByOffset(m_horizontalScrollBar, m_columnsOffset, m_displayColumnsCount);\n            }\n        }\n\n        private int GetOffsetByIndex(int currentOffset, int? index, int displayCount, bool setMaxOffset)\n        {\n            int newOffset;\n            if (index == null)\n            {\n                newOffset = 0;\n            }\n            else\n            {\n                // lowest offset, to see index on screen (index will be on last displayed row)\n                int minOffset = Math.Max(index.Value - displayCount + 1, 0);\n                // highest offset, to see index on screen (index will be on first displayed row)\n                int maxOffset = Math.Max(Math.Min(index.Value, m_rows.Count - displayCount), 0);\n\n                if (currentOffset >= minOffset && currentOffset <= maxOffset)\n                {\n                    newOffset = currentOffset;\n                }\n                else \n                {\n                    if (currentOffset < minOffset && !setMaxOffset)\n                    {\n                        newOffset = minOffset;\n                    }\n                    else \n                    {\n                        newOffset = maxOffset;\n                    }\n                }\n            }\n            return newOffset;\n        }\n\n        private void SetScrollValueByOffset(MyGuiControlListboxScrollBar scrollBar, int offset, int displayCount)\n        {\n            scrollBar.SetScrollValue((float)(offset + displayCount) / (float)displayCount);\n        }\n\n        private void SetRowsOffsetByScrollRatio(float scrollRatio)\n        {\n            int maxOffset = m_rows.Count - m_displayRowsCount;\n            m_rowsOffset = Math.Min((int)Math.Floor(scrollRatio * (maxOffset + 1)), maxOffset);\n        }\n\n        private void SetColumnsOffsetByScrollRatio(float scrollRatio)\n        {\n            int maxOffset = m_columns - m_displayColumnsCount;\n            m_columnsOffset = Math.Min((int)Math.Floor(scrollRatio * (maxOffset + 1)), maxOffset);\n        }\n\n        private void RecalculateRealSize()\n        {\n            Vector2 newSize = GetItemsAreaSize();\n            if (m_verticalScrollBar != null)\n            {\n                Vector2 scrollBarSize = m_verticalScrollBar.GetSize();\n                scrollBarSize.Y = newSize.Y + m_sliderLengthIncrease;\n                //scrollBarSize.X /= 2f;\n                m_verticalScrollBar.SetNewSize(scrollBarSize);\n                newSize.X = newSize.X + m_verticalScrollBar.GetSize().X;\n            }\n            if (m_horizontalScrollBar != null)\n            {\n                newSize.Y = newSize.Y + m_horizontalScrollBar.GetSize().Y;\n            }\n            newSize += new Vector2(m_borderSizeListBox * 2.0f, m_borderSizeListBox * 2.0f);\n            newSize += new Vector2(m_paddingLeft + m_paddingRight + m_sizeXincrease, m_paddingTop + m_paddingBottom);\n\n            m_size = newSize;\n        }\n\n        private Vector2 GetItemsAreaSize()\n        {\n            Vector2 itemsAreaSize = Vector2.Zero;\n            for (int i = 0; i < m_displayColumnsCount; i++)\n            {\n                if (m_customCollumsWidths != null && m_customCollumsWidths.Count > i && m_customCollumsWidths[i] > 0)\n                {\n                    itemsAreaSize.X += m_customCollumsWidths[i];\n                }\n                else\n                {\n                    itemsAreaSize.X += m_itemSize.X;\n                }\n            }\n            \n            itemsAreaSize.Y = m_itemSize.Y * m_displayRowsCount;\n\n\n            return itemsAreaSize;\n        }\n\n        private Vector2 GetItemsAreaSizeForMouse()\n        {\n            Vector2 itemsAreaSize = m_itemSize;\n            itemsAreaSize.X = m_columnWidth * m_displayColumnsCount;\n            itemsAreaSize.Y = m_rowHeight * m_displayRowsCount;\n            //itemsAreaSize.X = m_itemSize.X * m_displayColumnsCount;\n            //itemsAreaSize.Y = m_itemSize.Y * m_displayRowsCount;\n            //Vector2 itemPositionOffset = new Vector2((itemIndex - m_columnsOffset) * m_columnWidth, (rowIndex - m_rowsOffset) * m_rowHeight);\n            //Vector2 leftTopItemPosition = GetLeftTopPosition() + itemPositionOffset + new Vector2(m_borderSizeListBox, m_borderSizeListBox) + new Vector2(m_paddingLeft, m_paddingTop);\n\n\n            return itemsAreaSize;\n        }\n\n        private void RecalculateRealPosition()\n        {\n            //Vector2 newPosition = m_topLeftPosition;\n            //newPosition.Y = newPosition.Y + (m_size.Value.Y / 2.0f);\n            //newPosition.X = newPosition.X + (m_size.Value.X / 2.0f);\n\n            //m_position = newPosition;\n\n            m_topLeftPosition = new Vector2(m_position.X - (m_size.Value.X / 2.0f), m_position.Y - (m_size.Value.Y / 2.0f));\n\n            if (m_horizontalScrollBar != null)\n            {\n                m_horizontalScrollBar.SetNewPosition(m_topLeftPosition + new Vector2(0f, GetItemsAreaSize().Y) + new Vector2(m_borderSizeListBox, m_borderSizeListBox) + new Vector2(m_paddingLeft, m_paddingTop));\n            }\n            if (m_verticalScrollBar != null)\n            {\n                m_verticalScrollBar.SetNewPosition(m_topLeftPosition + new Vector2(GetItemsAreaSize().X, 0f) + new Vector2(m_borderSizeListBox, m_borderSizeListBox) + new Vector2(m_paddingLeft, m_paddingTop) + new Vector2(m_sliderOffset, m_sliderOffsetTop));\n            }\n        }\n\n        private Vector2 GetLeftTopPosition()\n        {\n            return m_parent.GetPositionAbsolute() + m_topLeftPosition;\n        }\n\n        private Vector2 GetLeftTopItemPosition(int rowIndex, int itemIndex)\n        {\n            float Xoffset = 0;\n            for (int i = 0; i < itemIndex; i++)\n            {\n                if (m_customCollumsWidths != null && m_customCollumsWidths.Count > i && m_customCollumsWidths[i] > 0)\n                {\n                    Xoffset += m_customCollumsWidths[i];\n                }\n                else\n                {\n                    Xoffset += m_columnWidth;\n                }\n            }\n            Vector2 itemPositionOffset = new Vector2(Xoffset, (rowIndex - m_rowsOffset) * m_rowHeight);\n            Vector2 leftTopItemPosition = GetLeftTopPosition() + itemPositionOffset + new Vector2(m_borderSizeListBox, m_borderSizeListBox) + new Vector2(m_paddingLeft, m_paddingTop);\n\n            return leftTopItemPosition;\n        }\n\n        private MyGuiControlListboxItem GetMousePreselectedItem()\n        {\n            if (m_mousePreselectedItemIndex != null && m_mousePreselectedRowIndex != null &&\n                AreIndexesValid(m_mousePreselectedRowIndex.Value, m_mousePreselectedItemIndex.Value))\n            {\n                return GetItem(m_mousePreselectedRowIndex.Value, m_mousePreselectedItemIndex.Value);\n            }\n            return null;\n        }\n\n        private MyGuiControlListboxItem GetPreselectedItem()\n        {\n            if (m_preselectedItemIndex != null && m_preselectedRowIndex != null &&\n                AreIndexesValid(m_preselectedRowIndex.Value, m_preselectedItemIndex.Value))\n            {\n                return GetItem(m_preselectedRowIndex.Value, m_preselectedItemIndex.Value);\n            }\n            return null;\n        }\n\n        private bool AreIndexesValid(int rowIndex, int itemIndex)\n        {\n            return rowIndex >= 0 && rowIndex < m_rows.Count && itemIndex >= 0 && itemIndex < m_columns;\n        }\n\n        private void ResetMousePreselected()\n        {\n            m_mousePreselectedItemIndex = m_selectedItemIndex;\n            m_mousePreselectedRowIndex = m_selectedRowIndex;\n        }\n\n        private void ResetPreselected()\n        {\n            m_preselectedItemIndex = m_selectedItemIndex;\n            m_preselectedRowIndex = m_selectedRowIndex;\n        }\n\n        private void HandleCurrentMousePreselected()\n        {\n            m_previousMousePreselectedRowIndex = m_mousePreselectedRowIndex;\n            m_previousMousePreselectedItemIndex = m_mousePreselectedItemIndex;\n            Point? mouseOverIndexes = GetMouseOverIndexes();\n            if (mouseOverIndexes != null)\n            {\n                m_mousePreselectedRowIndex = mouseOverIndexes.Value.Y;\n                m_mousePreselectedItemIndex = mouseOverIndexes.Value.X;\n            }\n            else\n            {\n                m_mousePreselectedRowIndex = null;\n                m_mousePreselectedItemIndex = null;\n            }\n        }\n\n        private void MovePreselected(bool forward, bool vertical, bool overflow = false, bool page = false, bool list = false)\n        {\n            if (m_preselectedItemIndex == null && m_preselectedRowIndex == null)\n            {\n                if (m_selectedItemIndex != null && m_selectedRowIndex != null)\n                {\n                    m_preselectedItemIndex = m_selectedItemIndex;\n                    m_preselectedRowIndex = m_selectedRowIndex;\n                }\n                else\n                {\n                    m_preselectedItemIndex = 0;\n                    m_preselectedRowIndex = 0;\n                    return;     // if not selected or preselected any item, then set preselected first item\n                }\n            }\n\n            if (page)\n            {\n                if (forward)\n                {\n                    m_preselectedRowIndex = Math.Min(m_preselectedRowIndex.Value + m_displayRowsCount, m_rows.Count - 1);\n                }\n                else\n                {\n                    m_preselectedRowIndex = Math.Max(m_preselectedRowIndex.Value - m_displayRowsCount, 0);\n                }\n            }\n            else if (list)\n            {\n                if (forward)\n                {\n                    m_preselectedRowIndex = m_rows.Count - 1;\n                }\n                else\n                {\n                    m_preselectedRowIndex = 0;\n                }\n            }\n            else if (overflow)\n            {\n                if (forward)\n                {\n                    if (m_preselectedItemIndex < m_columns - 1)\n                    {\n                        m_preselectedItemIndex++;\n                    }\n                    else\n                    {\n                        if (m_preselectedRowIndex < m_rows.Count - 1)\n                        {\n                            m_preselectedItemIndex = 0;\n                            m_preselectedRowIndex++;\n                        }\n                    }\n                }\n                else\n                {\n                    if (m_preselectedItemIndex > 0)\n                    {\n                        m_preselectedItemIndex--;\n                    }\n                    else\n                    {\n                        if (m_preselectedRowIndex > 0)\n                        {\n                            m_preselectedItemIndex = m_columns - 1;\n                            m_preselectedRowIndex--;\n                        }\n                    }\n                }\n            }\n            else\n            {\n                if (vertical)\n                {\n                    if (forward)\n                    {\n                        m_preselectedRowIndex = Math.Min(m_preselectedRowIndex.Value + 1, m_rows.Count - 1);\n                    }\n                    else\n                    {\n                        m_preselectedRowIndex = Math.Max(m_preselectedRowIndex.Value - 1, 0);\n                    }\n                }\n                else\n                {\n                    if (forward)\n                    {\n                        m_preselectedItemIndex = Math.Min(m_preselectedItemIndex.Value + 1, m_columns - 1);\n                    }\n                    else\n                    {\n                        m_preselectedItemIndex = Math.Max(m_preselectedItemIndex.Value - 1, 0);\n                    }\n                }\n            }\n            SetOffsets(m_preselectedRowIndex, m_preselectedItemIndex);\n        }\n\n        private bool HandleCurrentPreselected(MyGuiInput input)\n        {\n            bool captureInput = false;\n\n            HandleMouseWheelScroll(input, ref captureInput);\n\n            //  Keyboard movement\n            if (input.IsNewKeyPress(Keys.Down))\n            {\n                MovePreselected(true, true);\n                captureInput = true;\n            }\n            else if (input.IsNewKeyPress(Keys.Up))\n            {\n                MovePreselected(false, true);\n                captureInput = true;\n            }\n            else if (input.IsNewKeyPress(Keys.Right))\n            {\n                MovePreselected(true, false);\n                captureInput = true;\n            }\n            else if (input.IsNewKeyPress(Keys.Left))\n            {\n                MovePreselected(false, false);\n                captureInput = true;\n            }\n            else if (input.IsNewKeyPress(Keys.PageDown))\n            {\n                MovePreselected(true, true, false, true);\n                captureInput = true;\n            }\n            else if (input.IsNewKeyPress(Keys.PageUp))\n            {\n                MovePreselected(false, true, false, true);\n                captureInput = true;\n            }\n            else if (input.IsNewKeyPress(Keys.Home))\n            {\n                MovePreselected(false, true, false, false, true);\n                captureInput = true;\n            }\n            else if (input.IsNewKeyPress(Keys.End))\n            {\n                MovePreselected(true, true, false, false, true);\n                captureInput = true;\n            }\n\n            return captureInput;\n        }\n\n        private void DrawItem(int rowIndex, int itemIndex, Vector4 vectorLineColor)\n        {\n            var row = m_rows[rowIndex];\n            MyGuiControlListboxItem itemToDraw = GetItem(rowIndex, itemIndex);\n            Vector2 itemPosition = GetLeftTopItemPosition(rowIndex, itemIndex);\n            Vector2 itemSize = m_itemSize;\n            if (m_customCollumsWidths != null && m_customCollumsWidths.Count > itemIndex && m_customCollumsWidths[itemIndex] > 0)\n            {\n                itemSize.X = m_customCollumsWidths[itemIndex];\n            }\n            Color itemBackgroundColor;\n            bool isSelected = false;\n            bool isHighlighted = false;\n            bool isPreselected = false;\n            bool isMultipleSelected = false;\n\n            // there is a item at this position\n            if (itemToDraw != null && DisplayHighlight && itemToDraw.Enabled)\n            {\n                isSelected = m_selectedItemIndex == itemIndex && m_selectedRowIndex == rowIndex;\n                isMultipleSelected = IsMultipleSelected(itemIndex, rowIndex);\n                if (m_highlightAllRow && m_mousePreselectedRowIndex == rowIndex)\n                {\n                    if (!m_dontHighlightHeadlineRow || rowIndex > 0)\n                    {\n                        isHighlighted = true;\n                    }\n                    else\n                    {\n                        isHighlighted = m_mousePreselectedItemIndex == itemIndex && m_mousePreselectedRowIndex == rowIndex;\n                    }\n                }\n                else\n                {\n                    isHighlighted = m_mousePreselectedItemIndex == itemIndex && m_mousePreselectedRowIndex == rowIndex;\n                }\n                isPreselected = m_preselectedItemIndex == itemIndex && m_preselectedRowIndex == rowIndex || isHighlighted;\n\n                // if an item was selected or preselected\n                if ((isSelected || isPreselected || isMultipleSelected) && ItemMouseOverTexture==null)\n                {\n                    itemBackgroundColor = new Color(m_itemColor * MyGuiConstants.LISTBOX_HIGHLIGHT_MULTIPLIER);    // selected item's background\n                }\n                else if (isMultipleSelected)\n                {\n                    itemBackgroundColor = new Color(m_itemColor * MyGuiConstants.LISTBOX_HIGHLIGHT_MULTIPLIER / 2);\n                }\n                else if (rowIndex == 0 && HighlightHeadline)\n                {\n                    itemBackgroundColor = new Color(m_itemColor * MyGuiConstants.LISTBOX_HIGHLIGHT_MULTIPLIER / 2);\n                }\n                else\n                {\n                    itemBackgroundColor = new Color(m_itemColor);    // item's background\n                }\n            }\n            else\n            {\n                itemBackgroundColor = new Color(m_itemColor);        // empty slot's background                \n            }\n\n            if (itemToDraw != null && !itemToDraw.Enabled) \n            {\n                itemBackgroundColor *= 0.5f;\n            }\n\n            // draw item's background\n            MyTexture2D itemTexture = m_itemTexture != null ? m_itemTexture : MyGuiManager.GetBlankTexture();\n            if (row.Color != null)\n                itemBackgroundColor = new Color(itemBackgroundColor.ToVector4() + row.Color.Value);\n            MyGuiManager.DrawSpriteBatch(itemTexture, itemPosition, itemSize, itemBackgroundColor, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP);\n\n            // draw item if there is anyone\n            if (itemToDraw != null)\n            {\n                bool highLight = (isSelected || isPreselected || isMultipleSelected) && itemToDraw.Enabled;\n                Vector2 textPosition = itemPosition + TextOffset;\n                textPosition.Y += (m_rowHeight / 2.0f);\n                MyTexture2D icon = itemToDraw.Icon;\n                float colorMultiplicator = 1f;\n                if (!itemToDraw.Enabled)\n                {\n                    colorMultiplicator = 0.75f;\n                }\n\n                if (m_supportIcon == true && icon != null)\n                {\n                    //Vector2 iconSize = itemSize;\n\n\n                    Vector2 iconSize = UseFullItemSizeIcon ? m_itemSize : (new Vector2(itemSize.Y * 3 / 4, itemSize.Y));                                        \n                    Vector4 backgroundColor = itemToDraw.BackgroundColor * colorMultiplicator;\n\n                    iconSize *= IconScale;\n                    // draw icon\n                    MyGuiManager.DrawSpriteBatch(\n                        icon,\n                        itemPosition + new Vector2(m_borderSizeItem, m_borderSizeItem),\n                        iconSize - new Vector2(m_borderSizeItem, m_borderSizeItem),\n                        GetColorAfterTransitionAlpha(highLight ? MyGuiConstants.CONTROL_MOUSE_OVER_BACKGROUND_COLOR_MULTIPLIER * backgroundColor : backgroundColor),\n                        MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP);\n                    textPosition.X += itemSize.Y * 3 / 4;\n\n\n                    // draw icon texts\n                    if (itemToDraw.IconTexts != null)\n                    {\n                        itemToDraw.IconTexts.Draw(itemPosition, iconSize - new Vector2(m_borderSizeItem, m_borderSizeItem), m_parent.GetTransitionAlpha(), highLight, colorMultiplicator);\n                    }\n                }\n\n                // we draw text only if there is any text value to draw\n                if (itemToDraw.Value != null)\n                {\n                    //  End our standard sprite batch\n                    MyGuiManager.EndSpriteBatch();\n\n                    //  Draw the rectangle(basically the opened area) to stencil buffer to be used for clipping partial item\n                    MyGuiManager.DrawStencilMaskRectangle(new MyRectangle2D(itemPosition, itemSize), MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP);\n\n                    //  Set up the stencil operation and parameters\n                    MyGuiManager.BeginSpriteBatch_StencilMask();\n\n                    \n                    itemToDraw.ColoredText.Draw(textPosition, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER, m_parent.GetTransitionAlpha(), isHighlighted, colorMultiplicator);\n\n                    //  End stencil-mask batch, and restart the standard sprite batch\n                    //MyGuiManager.EndSpriteBatch();\n                    MyGuiManager.EndSpriteBatch_StencilMask();\n                    MyGuiManager.BeginSpriteBatch();\n                }\n\n\n                if (ItemMouseOverTexture!=null && isSelected && itemToDraw.Enabled)\n                {\n                    MyGuiManager.DrawSpriteBatch(ItemMouseOverTexture, itemPosition, itemSize, Color.White, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP);\n                }\n            }\n\n            // draw borders\n            if (m_borderSizeItem > 0.0f)\n            {\n                Color itemsBordersColor = GetColorAfterTransitionAlpha(vectorLineColor) * 0.8f;\n                DrawBorders(itemPosition, itemSize, itemsBordersColor, m_itemBorderSize);\n            }\n        }\n\n        public void CustomSortRows(Comparison<MyGuiControlListboxItem> comparison, int collumnIndex)\n        {\n            if (m_rows != null && collumnIndex < m_columns)\n            {\n                m_rows.Sort((a, b) =>\n                    {\n                        return comparison(a.Items[collumnIndex], b.Items[collumnIndex]);\n                    });\n            }\n        }\n\n        //private void DrawBorders(Vector2 position, Vector2 size, Color color, int borderSize) \n        //{\n        //    Vector2 sizeInPixels = MyGuiManager.GetScreenSizeFromNormalizedSize(size);\n        //    sizeInPixels = new Vector2((int)sizeInPixels.X, (int)sizeInPixels.Y);\n        //    Vector2 leftTopInPixels = MyGuiManager.GetScreenCoordinateFromNormalizedCoordinate(position);\n        //    leftTopInPixels = new Vector2((int)leftTopInPixels.X, (int)leftTopInPixels.Y);\n        //    Vector2 rightTopInPixels = leftTopInPixels + new Vector2(sizeInPixels.X, 0);\n        //    Vector2 leftBottomInPixels = leftTopInPixels + new Vector2(0, sizeInPixels.Y);\n        //    // top\n        //    MyGuiManager.DrawSpriteBatch(MyGuiManager.GetBlankTexture(), (int)leftTopInPixels.X, (int)leftTopInPixels.Y, (int)sizeInPixels.X, borderSize, color);\n        //    // right\n        //    MyGuiManager.DrawSpriteBatch(MyGuiManager.GetBlankTexture(), (int)rightTopInPixels.X - borderSize, (int)rightTopInPixels.Y + borderSize, borderSize, (int)sizeInPixels.Y - borderSize * 2, color);\n        //    // bottom\n        //    MyGuiManager.DrawSpriteBatch(MyGuiManager.GetBlankTexture(), (int)leftBottomInPixels.X, (int)leftBottomInPixels.Y - borderSize, (int)sizeInPixels.X, borderSize, color);\n        //    //left\n        //    MyGuiManager.DrawSpriteBatch(MyGuiManager.GetBlankTexture(), (int)leftTopInPixels.X, (int)leftTopInPixels.Y + borderSize, borderSize, (int)sizeInPixels.Y - borderSize * 2, color);            \n        //}                \n\n        private void OnScrollValueChanged(object sender, EventArgs args)\n        {\n            if(sender == m_verticalScrollBar)\n            {\n                OnVerticalScrollValueChanged();\n            }\n            else if(sender == m_horizontalScrollBar)\n            {\n                OnHorizontalScrollValueChanged();\n            }\n            else\n            {\n                throw new MyMwcExceptionApplicationShouldNotGetHere();\n            }\n        }\n\n        private void OnVerticalScrollValueChanged()\n        {\n            SetRowsOffsetByScrollRatio(m_verticalScrollBar.GetScrollRatio());\n        }\n        private void OnHorizontalScrollValueChanged()\n        {\n            SetColumnsOffsetByScrollRatio(m_horizontalScrollBar.GetScrollRatio());\n        }\n        private void FixSelectedIndexes()\n        {\n            // mouse preselected\n            if (m_mousePreselectedRowIndex != null)\n            {\n                if (m_mousePreselectedRowIndex.Value >= m_rows.Count)\n                {\n                    m_mousePreselectedRowIndex = null;\n                    m_mousePreselectedItemIndex = null;\n                }\n            }\n\n            // preselected\n            if (m_preselectedRowIndex != null)\n            {\n                if (m_preselectedRowIndex.Value >= m_rows.Count)\n                {\n                    m_preselectedRowIndex = null;\n                    m_preselectedItemIndex = null;\n                }\n            }\n\n            // selected            \n            if (m_selectedRowIndex != null)\n            {\n                if (m_selectedRowIndex.Value >= m_rows.Count/* ||\n                    m_rows[m_selectedRowIndex.Value].Items[m_selectedItemIndex.Value] == null*/)\n                {\n                    m_selectedRowIndex = null;\n                    m_selectedItemIndex = null;\n                }\n\n                SetSelectedItem(m_selectedRowIndex, m_selectedItemIndex);\n            }\n            //if(m_selectedKey != null)\n            //{\n            //    SetSelectedItem(m_selectedKey.Value);\n            //}            \n        }\n        #endregion\n    }        \n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Core/MyGuiControlMultilineText.cs",
    "content": "﻿using System.Collections.Generic;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.GUI.Core.TreeView;\n\nnamespace MinerWars.AppCode.Game.GUI.Core\n{\n    class MyGuiControlMultilineText : MyGuiControlBase\n    {\n        #region Fields\n\n        private readonly MyGuiFont m_font;\n        private readonly float m_textScale;\n        private readonly MyGuiDrawAlignEnum m_textAlign;\n\n        private readonly MyVScrollbar m_scrollbar;\n        private Vector2 m_scrollbarSize;\n        private MyRichLabel m_label;\n\n        private bool m_drawBorders;\n        private bool m_drawScrollbar;\n        private float m_scrollbarOffset;\n\n        #endregion\n\n        /// <summary>\n        /// Gets or sets the color of the text.\n        /// </summary>\n        public Color TextColor { get; set; }\n\n        public float ScrollbarOffset\n        {\n            get { return m_scrollbarOffset; }\n            set { m_scrollbarOffset = value; RecalculateScrollBar();}\n        }\n\n        public MyGuiControlMultilineText(\n            IMyGuiControlsParent parent, Vector2 position,\n            Vector2 size, Vector4? backgroundColor,\n            MyGuiFont font, float textScale, MyGuiDrawAlignEnum textAlign, StringBuilder contents, bool drawBorders = true, bool drawScrollbar = true)\n            : base(parent, position, size, backgroundColor, null)\n        {\n            m_font = font;\n            m_textScale = textScale;\n            m_textAlign = textAlign;\n            m_drawBorders = drawBorders;\n            m_drawScrollbar = drawScrollbar;\n            TextColor = new Color(MyGuiConstants.LABEL_TEXT_COLOR);\n\n            m_scrollbar = new MyVScrollbar(this);\n            m_scrollbar.TopBorder = m_scrollbar.RightBorder = m_scrollbar.BottomBorder = false;\n            m_scrollbar.LeftBorder = drawBorders;\n            m_scrollbarSize = new Vector2(0.0334f, MyGuiConstants.COMBOBOX_VSCROLLBAR_SIZE.Y);\n            m_scrollbarSize = MyGuiConstants.COMBOBOX_VSCROLLBAR_SIZE;\n            float minLineHeight = MyGuiManager.MeasureString(m_font,\n                                                      MyTextsWrapper.Get(MyTextsWrapperEnum.ServerShutdownNotificationCaption),\n                                                      m_parent.GetPositionAbsolute() + m_position, m_textScale,\n                                                      m_textAlign).Size.Y;\n            m_label = new MyRichLabel(size.X, minLineHeight);\n            if (contents != null && contents.Length > 0)\n            {\n                SetText(contents);\n            }\n        }                \n\n        /// <summary>\n        /// Sets the text to the given StringBuilder value.\n        /// Layouts the controls.\n        /// </summary>\n        /// <param name=\"value\"></param>\n        public void SetText(StringBuilder value)\n        {\n            m_label.Clear();\n            AppendText(value);\n        }\n        \n        public void AppendText(StringBuilder text)\n        {\n            AppendText(text, m_font, m_textScale, TextColor.ToVector4());\n            RecalculateScrollBar();\n        }\n\n        public void AppendText(StringBuilder text, MyGuiFont font, float scale, Vector4 color)\n        {\n            m_label.Append(text, font, scale, color);\n            RecalculateScrollBar();\n        }\n\n        public void AppendImage(MyTexture2D texture, Vector2 size, Vector4 color)\n        {\n            m_label.Append(texture, size, color);\n            RecalculateScrollBar();\n        }\n\n        public void AppendLine()\n        {\n            m_label.AppendLine();\n            RecalculateScrollBar();\n        }\n\n        public void Clear()\n        {\n            m_label.Clear();\n            RecalculateScrollBar();\n        }        \n\n        private void RecalculateScrollBar()\n        {\n            float realHeight = m_label.GetSize().Y;\n\n            bool vScrollbarVisible = m_size.Value.Y < realHeight;\n\n            m_scrollbar.Visible = vScrollbarVisible;\n            m_scrollbar.Init(realHeight, (m_size.Value - 2f * MyGuiConstants.MULTILINE_LABEL_BORDER).Y);\n            m_scrollbar.Layout(m_position + m_parent.GetPositionAbsolute() - m_size.Value / 2 + new Vector2(ScrollbarOffset, 0), m_size.Value, m_scrollbarSize, false);\n        }\n\n        public override void Draw()\n        {\n            base.Draw();\n\n            if (m_drawBorders)\n                DrawBorders(m_parent.GetPositionAbsolute() + m_position - .5f * m_size.Value + new Vector2(ScrollbarOffset,0), m_size.Value, new Color(MyGuiConstants.BUTTON_TEXT_COLOR), 2);\n            DrawText(m_scrollbar.GetValue());\n            if (m_drawScrollbar)\n                m_scrollbar.Draw();\n        }\n\n        public override bool HandleInput(MyGuiInput input, bool hasKeyboardActiveControl, bool hasKeyboardActiveControlPrevious, bool receivedFocusInThisUpdate)\n        {\n            bool baseResult = base.HandleInput(input, hasKeyboardActiveControl, hasKeyboardActiveControlPrevious, receivedFocusInThisUpdate);\n\n            bool captured = false;\n            var deltaWheel = input.DeltaMouseScrollWheelValue();\n            if (IsMouseOver() && deltaWheel != 0)\n            {\n                m_scrollbar.ChangeValue(-0.0005f * deltaWheel);\n                captured = true;\n            }\n\n            bool capturedScrollbar = m_scrollbar.HandleInput(input, hasKeyboardActiveControl, hasKeyboardActiveControlPrevious, receivedFocusInThisUpdate);\n\n            return baseResult || capturedScrollbar || captured;\n        }\n\n        /// <summary>\n        /// Draws the text with the offset given by the scrollbar.\n        /// </summary>\n        /// <param name=\"offset\">Indicates how low is the scrollbar (and how many beginning lines are skipped)</param>\n        private void DrawText(float offset)\n        {\n            Vector2 position = m_parent.GetPositionAbsolute() + m_position - 0.5f * m_size.Value + MyGuiConstants.MULTILINE_LABEL_BORDER;\n            Vector2 drawSizeMax = m_size.Value - 2f * MyGuiConstants.MULTILINE_LABEL_BORDER;\n            m_label.Draw(position, offset, drawSizeMax);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Core/MyGuiControlPanel.cs",
    "content": "﻿using System.Text;\nusing MinerWarsMath;\nusing MinerWarsMath.Graphics;\nusing MinerWars.AppCode.Game.Textures;\n\nnamespace MinerWars.AppCode.Game.GUI.Core\n{\n    class MyGuiControlPanel : MyGuiControlBase\n    {\n        private int m_borderSize;\n        private Vector4? m_borderColor;\n\n        public MyGuiControlPanel(IMyGuiControlsParent parent, Vector2 position, Vector2? size, Vector4 backgroundColor, int borderSize, Vector4 borderColor)\n            : this(parent, position, size, backgroundColor, null, null, null, null, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER)\n        {\n            m_borderSize = borderSize;\n            m_borderColor = borderColor;\n        }\n\n        public MyGuiControlPanel(IMyGuiControlsParent parent, Vector2 position, Vector2? size, Vector4 backgroundColor, \n            MyTexture2D texture, MyTexture2D hoverTexture, MyTexture2D pressedTexture, MyTexture2D shadowTexture, \n            MyGuiDrawAlignEnum align)\n            : base(parent, position, size, backgroundColor, new StringBuilder(), \n                    texture, hoverTexture, pressedTexture, false)\n        {\n            Visible = true;            \n        }\n\n        public MyGuiControlPanel(IMyGuiControlsParent parent, Vector2 position, Vector2? size, Vector4 backgroundColor, MyTexture2D texture, \n                                 MyTexture2D hoverTexture, MyTexture2D pressedTexture, int borderSize, Vector4 borderColor, StringBuilder toolTip)\n            : base(parent, position, size, backgroundColor, toolTip, texture, hoverTexture, pressedTexture, false)\n        {\n            Visible = true;            \n            m_borderSize = borderSize;\n            m_borderColor = borderColor;\n        }\n\n        public override bool HandleInput(MyGuiInput input, bool hasKeyboardActiveControl, bool hasKeyboardActiveControlPrevious, bool receivedFocusInThisUpdate)\n        {\n            return Visible && base.HandleInput(input, false, false, receivedFocusInThisUpdate);\n        }\n\n        public override void Draw()\n        {\n            if (Visible)\n            {\n                base.Draw();\n                if(m_borderSize > 0)\n                {\n                    DrawBorders(m_parent.GetPositionAbsolute() + m_position - new Vector2(m_size.Value.X / 2f, m_size.Value.Y / 2f), m_size.Value, new Color(m_borderColor.Value), m_borderSize);\n                }\n            }\n        }        \n\n        public void SetSize(Vector2 size)\n        {\n            m_size = size;\n        }\n\n        protected override bool CheckMouseOver()\n        {\n            return base.CheckMouseOver();\n        }\n\n        public void SetBackgroundTexture(MyTexture2D texture) \n        {\n            m_controlTexture = texture;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Core/MyGuiControlParent.cs",
    "content": "﻿using System;\nusing System.Collections;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Toolkit.Input;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.Utils;\n\nnamespace MinerWars.AppCode.Game.GUI.Core\n{\n    class MyGuiControlParent : MyGuiControlBase, IMyGuiControlsParent\n    {\n        private MyGuiControls m_controls;\n\n        public MyGuiControlParent(IMyGuiControlsParent parent, Vector2 position, Vector2 size, Vector4? backgroundColor, StringBuilder toolTip, MyTexture2D controlTexture)\n            : base(parent, position, size, backgroundColor, toolTip, controlTexture, null, null, true)\n        {\n            m_controls = new MyGuiControls();\n        }\n\n        public MyGuiControls Controls\n        {\n            get { return m_controls; }\n        }\n\n        public Vector2 GetPositionAbsolute()\n        {\n            return m_parent.GetPositionAbsolute() + m_position;\n        }\n\n        public float GetTransitionAlpha()\n        {\n            return m_parent.GetTransitionAlpha();\n        }\n\n        #region Overriden methods\n        public override void ShowToolTip()\n        {\n            foreach (MyGuiControlBase control in Controls.GetVisibleControls())\n            {\n                if (control.IsMouseOver()) return;\n            }\n            base.ShowToolTip();\n        }\n\n        public override void Draw()\n        {\n            base.Draw();\n            foreach (MyGuiControlBase control in Controls.GetList())\n            {\n                if (control is MyGuiControlListboxDragAndDrop)\n                {\n                    MyGuiControlListboxDragAndDrop tempDragAndDrop = (MyGuiControlListboxDragAndDrop)control;\n                    if (tempDragAndDrop.IsActive())\n                    {\n                        continue;\n                    }\n                }\n                if (control is MyGuiControlCombobox)\n                {\n                    MyGuiControlCombobox tempCombobox = (MyGuiControlCombobox)control;\n                    if (tempCombobox.IsHandlingInputNow() == true)\n                    {\n                        continue;\n                    }\n                }\n                if(control.Visible)\n                    control.Draw();\n            }\n        }\n\n        public override bool HandleInput(MyGuiInput input, bool hasKeyboardActiveControl, bool hasKeyboardActiveControlPrevious, bool receivedFocusInThisUpdate)\n        {\n            bool captured = base.HandleInput(input, hasKeyboardActiveControl, hasKeyboardActiveControlPrevious, receivedFocusInThisUpdate);\n            return captured;\n        }\n\n        public override void Update()\n        {\n            base.Update();\n        }\n\n        public override void HideToolTip()\n        {\n            base.HideToolTip();\n        }\n\n        public override bool Visible\n        {\n            get\n            {\n                return base.Visible;\n            }\n            set\n            {\n                if (Controls != null)\n                {\n                    foreach (MyGuiControlBase control in Controls.GetList())\n                    {\n                        control.Visible = value;\n                    }\n                }\n                base.Visible = value;\n            }\n        }\n        #endregion        \n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Core/MyGuiControlProgressBar.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Utils;\nusing KeenSoftwareHouse.Library.Extensions;\n\nnamespace MinerWars.AppCode.Game.GUI.Core\n{\n    class MyGuiControlProgressBar : MyGuiControlBase\n    {\n        private Vector4 m_progressColor;\n        private Vector4 m_textColor;\n        private float m_textScale;        \n        private float m_value;\n        private StringBuilder m_progressValueText;\n        private int m_decimals;\n\n        private const char PERCENTAGE = '%';\n\n        public MyGuiControlProgressBar(IMyGuiControlsParent parent, Vector2 position, Vector2? size, Vector4 backgroundColor, Vector4 progressColor, \n            Vector4 textColor, float textScale, float value, int decimals)\n            : base(parent, position, size, backgroundColor, null)\n        {\n            m_progressColor = progressColor;\n            m_textColor = textColor;\n            m_textScale = textScale;            \n            m_value = value;\n            m_progressValueText = new StringBuilder();\n            m_decimals = decimals;\n        }\n\n        public float Value \n        {\n            get { return m_value; }\n            set { m_value = value; }\n        }\n\n        public override void Draw()\n        {\n            base.Draw();\n            MyGuiManager.EndSpriteBatch();\n            Vector2 normalizeSize = new Vector2(483 / 1600f, 112 / 1200f);//MyGuiManager.GetNormalizedCoordsAndPreserveOriginalSize(483, 112); 559?\n            Vector2 stencilPos = GetParent().GetPositionAbsolute() - m_size.Value / 2f;\n            Vector2 senctilSize = new Vector2(normalizeSize.X * m_value, normalizeSize.Y) + new Vector2(38 / 1600f, 0);//MyGuiManager.GetNormalizedCoordsAndPreserveOriginalSize(38, 0);            \n            Utils.MyRectangle2D stencilRect = new Utils.MyRectangle2D(stencilPos, senctilSize);            \n            MyGuiManager.DrawStencilMaskRectangle(stencilRect, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP);\n            MyGuiManager.BeginSpriteBatch_StencilMask();\n            // draw progress bar            \n            MyGuiManager.DrawSpriteBatch(MyGuiManager.GetProgressBarTexture(), GetParent().GetPositionAbsolute(), m_size.Value, new Color(m_progressColor), MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER);\n            MyGuiManager.EndSpriteBatch_StencilMask();\n            MyGuiManager.BeginSpriteBatch();\n\n            // draw progress value\n            m_progressValueText.Clear();\n            float percentage = m_value * 100f;\n            if (m_decimals > 0)\n            {\n                m_progressValueText.AppendDecimal(percentage, m_decimals);\n            }\n            else \n            {\n                m_progressValueText.AppendInt32((int)percentage);\n            }\n            m_progressValueText.Append(PERCENTAGE);\n            MyGuiManager.DrawString(MyGuiManager.GetFontMinerWarsWhite(), m_progressValueText, GetParent().GetPositionAbsolute() - new Vector2(0f, m_size.Value.Y / 2f), m_textScale, new Color(m_textColor), MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Core/MyGuiControlRadioButton.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Toolkit.Input;\nusing MinerWars.AppCode.Game.Managers;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Audio;\n\nnamespace MinerWars.AppCode.Game.GUI.Core\n{\n    delegate void OnRadioButtonGroupSelectedChanged(MyGuiControlRadioButtonGroup sender);\n    class MyGuiControlRadioButtonGroup\n    {\n        private List<MyGuiControlRadioButton> m_radioButtons;\n        private MyGuiControlRadioButton m_selected;\n\n        public MyGuiControlRadioButtonGroup()\n        {\n            m_radioButtons = new List<MyGuiControlRadioButton>();\n            m_selected = null;\n        }\n\n        public void Add(MyGuiControlRadioButton radioButton)\n        {\n            m_radioButtons.Add(radioButton);\n            radioButton.OnSelect += OnRadioButtonSelect;\n        }\n\n        public void Remove(MyGuiControlRadioButton radioButton)\n        {\n            radioButton.OnSelect -= OnRadioButtonSelect;\n            m_radioButtons.Remove(radioButton);\n        }\n\n        public void Clear()\n        {\n            foreach (MyGuiControlRadioButton radioButton in m_radioButtons)\n            {\n                radioButton.OnSelect -= OnRadioButtonSelect;\n            }\n            m_radioButtons.Clear();\n        }\n\n        private void OnRadioButtonSelect(MyGuiControlRadioButton sender)\n        {\n            SetSelected(sender.Key);\n        }\n\n        public MyGuiControlRadioButton GetSelected()\n        {\n            return m_selected;\n        }\n\n        public int? GetSelectedKey() \n        {            \n            MyGuiControlRadioButton selectedRadioButton = GetSelected();\n            if (selectedRadioButton != null)\n            {\n                return m_selected.Key;\n            }\n            else \n            {\n                return null;\n            }\n        }\n\n        private void UnselectSelected() \n        {\n            foreach (MyGuiControlRadioButton radioButton in m_radioButtons)\n            {\n                if (radioButton.Selected)\n                {\n                    radioButton.Selected = false;\n                }\n            }\n            m_selected = null;\n        }\n\n        public void SetSelected(int key) \n        {            \n            MyGuiControlRadioButton radioButtonByKey = null;\n            foreach (MyGuiControlRadioButton radioButton in m_radioButtons) \n            {\n                if (radioButton.Key == key) \n                {\n                    radioButtonByKey = radioButton;\n                    break;\n                }\n            }\n\n            if (radioButtonByKey != null) \n            {\n                UnselectSelected();\n\n                radioButtonByKey.OnSelect -= OnRadioButtonSelect;\n                radioButtonByKey.Selected = true;\n                radioButtonByKey.OnSelect += OnRadioButtonSelect;\n\n                m_selected = radioButtonByKey;\n\n                if(OnSelectedChanged != null)\n                {\n                    OnSelectedChanged(this);\n                }\n            }\n        }\n\n        public event OnRadioButtonGroupSelectedChanged OnSelectedChanged;\n    }\n\n    delegate void OnRadioButtonSelect(MyGuiControlRadioButton sender);\n    class MyGuiControlRadioButton : MyGuiControlBase\n    {        \n        public event OnRadioButtonSelect OnSelect;\n\n        bool m_selected;\n        int m_key;\n\n        public MyGuiControlRadioButton(IMyGuiControlsParent parent, Vector2 position, Vector2 size, int key, Vector4 color)\n            : base(parent, position, size, color, null, MyGuiManager.GetCheckboxOffTexture(), null, null, true)\n        {\n            m_canHandleKeyboardActiveControl = true;\n            m_selected = false;\n            m_backgroundColor = color;\n            m_key = key;            \n        }\n\n        public MyGuiControlRadioButton(IMyGuiControlsParent parent, Vector2 position, int key, Vector4 color)\n            : this(parent, position, MyGuiConstants.RADIOBUTTON_SIZE, key, color)\n        {\n        }\n\n        public int Key \n        {\n            get \n            {\n                return m_key;\n            }\n        }\n\n        public bool Selected \n        {\n            set \n            {\n                bool valueChangedToSelected = m_selected != value && value == true;\n                \n                m_selected = value;\n\n                if (valueChangedToSelected && OnSelect != null) \n                        OnSelect(this);                                    \n            }\n            get \n            {\n                return m_selected;\n            }\n        }\n\n        //  Method returns true if input was captured by control, so no other controls, nor screen can use input in this update\n        public override bool HandleInput(MyGuiInput input, bool hasKeyboardActiveControl, bool hasKeyboardActiveControlPrevious, bool isThisFirstHandleInput)\n        {\n            bool ret = base.HandleInput(input, hasKeyboardActiveControl, hasKeyboardActiveControlPrevious, isThisFirstHandleInput);\n\n            if (ret == false)\n            {\n                if (((IsMouseOver() == true) && (input.IsNewLeftMousePressed() == true)) ||\n                    ((hasKeyboardActiveControl == true) && ((input.IsNewKeyPress(Keys.Enter) || (input.IsNewKeyPress(Keys.Space))))))\n                {\n                    if (!Selected) \n                    {\n                        MyAudio.AddCue2D(MySoundCuesEnum.GuiMouseClick);\n                        Selected = true;\n                        ret = true;\n                    }                    \n                }\n            }\n\n            return ret;\n        }\n\n        public override void Draw()\n        {\n            base.Draw();\n\n            if (m_selected == true)\n            {\n                Vector4 selectedColor = (IsMouseOverOrKeyboardActive() == false) ? \n                    m_backgroundColor.Value : m_backgroundColor.Value * MyGuiConstants.CONTROL_MOUSE_OVER_BACKGROUND_COLOR_MULTIPLIER;\n                // because checkbox texture is not aligned to center, then we must add offset to selected texture position\n                Vector2 selectedTextureOffset = new Vector2(m_size.Value.X/40f, 0f);\n\n                //  Selected sprite\n                MyGuiManager.DrawSpriteBatch(MyGuiManager.GetBlankTexture(), m_parent.GetPositionAbsolute() + m_position + selectedTextureOffset, m_size.Value * new Vector2(0.5f, 0.5f),\n                    GetColorAfterTransitionAlpha(selectedColor), MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Core/MyGuiControlRotatingWheel.cs",
    "content": "﻿using MinerWarsMath;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Managers;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.Utils;\n\nnamespace MinerWars.AppCode.Game.GUI.Core\n{\n    class MyGuiControlRotatingWheel : MyGuiControlBase\n    {\n        float m_rotatingAngle;\n        Vector4 m_color;\n        float m_wheelScale;\n        MyGuiDrawAlignEnum m_align;\n        private MyTexture2D m_texture;\n\n        public MyGuiControlRotatingWheel(IMyGuiControlsParent parent, Vector2 position, Vector4 color, float scale, MyGuiDrawAlignEnum align, MyTexture2D texture)\n            : base(parent, position, null, null, null, false)\n        {\n            m_rotatingAngle = MyMwcUtils.GetRandomRadian();\n            m_color = color;\n            m_wheelScale = scale;\n            //m_scale = 4;\n            m_align = align;\n            m_texture = texture;\n        }\n\n        public override bool HandleInput(MyGuiInput input, bool hasKeyboardActiveControl, bool hasKeyboardActiveControlPrevious, bool receivedFocusInThisUpdate)\n        {\n            return base.HandleInput(input, false, false, false);\n        }\n        \n        public override void Draw()\n        {\n            base.Draw();\n\n            //1.5 radian per second - not using MinerWars.GameTime, because its nort updated sometimes\n            m_rotatingAngle = (System.Environment.TickCount / 1000f) * 1.5f;\n\n\n            Vector2 rotatingSize = MyGuiManager.GetNormalizedSize(m_texture, m_wheelScale);\n            Vector2 rotatingPosition = m_parent.GetPositionAbsolute() + m_position + new Vector2(rotatingSize.X / 2.0f, rotatingSize.Y / 2.0f);\n            \n            //  Large wheel - shadow only\n            MyGuiManager.DrawSpriteBatch(m_texture, rotatingPosition + MyGuiConstants.SHADOW_OFFSET, m_wheelScale,\n                new Color(m_parent.GetTransitionAlpha() * (new Color(0, 0, 0, 80)).ToVector4()),\n                MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, m_rotatingAngle, new Vector2(0.5f, 0.5f));\n\n            //  Large wheel - wheel\n            MyGuiManager.DrawSpriteBatch(m_texture, rotatingPosition, m_wheelScale, new Color(m_color * m_parent.GetTransitionAlpha()),\n                MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, m_rotatingAngle, new Vector2(0.5f, 0.5f));\n\n            //  Small wheel - without shadow\n            const float SMALL_SCALE = 0.6f;\n            Vector2 smallRotatingPosition = rotatingPosition - (rotatingSize * ((1 - SMALL_SCALE) / 2.0f));\n            MyGuiManager.DrawSpriteBatch(m_texture, smallRotatingPosition,\n                SMALL_SCALE * m_wheelScale, new Color(m_color * m_parent.GetTransitionAlpha()),\n                MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, -m_rotatingAngle * 1.1f, new Vector2(0.5f, 0.5f));\n\n            //  Mini wheel - without shadow\n            const float MINI_SCALE = SMALL_SCALE * 0.6f;\n            MyGuiManager.DrawSpriteBatch(m_texture, rotatingPosition - (rotatingSize * ((1 - MINI_SCALE) / 2.0f)),\n                MINI_SCALE * m_wheelScale, new Color(m_color * m_parent.GetTransitionAlpha()),\n                MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, m_rotatingAngle * 1.2f, new Vector2(0.5f, 0.5f));\n        }\n\n     \n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Core/MyGuiControlSelectAmmo.cs",
    "content": "﻿using System.Collections.Generic;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.GUI.Helpers;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing System;\nusing System.Text;\nusing MinerWars.AppCode.Toolkit.Input;\nusing KeenSoftwareHouse.Library.Trace;\nusing MinerWars.AppCode.Game.Managers.Session;\n\nnamespace MinerWars.AppCode.Game.GUI.Core\n{\n    class MyGuiControlSelectAmmo : MyGuiControlBase\n    {\n        List<MyAmmoItem> m_ammoTypesAmounts = new List<MyAmmoItem>(10);\n        MyMwcObjectBuilder_AmmoGroupEnum m_selectedGroup;\n        MyMwcObjectBuilder_AmmoGroupEnum m_selectedGroupLast;\n        int m_selectedIndex;\n        MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum m_selectedAmmo;\n        //bool m_visible;\n        bool m_isPressLast;\n        StringBuilder m_text = null;\n        StringBuilder m_textValues = null;\n\n        //public bool IsVisible { get { return m_visible; } }\n        public bool IsEnabled { get; set; }\n\n        public MyGuiControlSelectAmmo(IMyGuiControlsParent parent, Vector2 position, Vector2? size, Vector4? backgroundColor)\n            : base(parent, position, size, backgroundColor, null)\n        {\n            Visible = false;\n            m_isPressLast = false;\n\n            m_textValues = new StringBuilder();\n            \n            ReloadControlText();\n            MyGuiManager.GetInput().ControlsSaved += OnGuiInputControlsSaved;\n        }\n\n        void OnGuiInputControlsSaved(MyGuiInput sender)\n        {\n            ReloadControlText();\n        }\n\n        public override bool HandleInput(MyGuiInput input, bool hasKeyboardActiveControl, bool hasKeyboardActiveControlPrevious, bool receivedFocusInThisUpdate)\n        {\n\n            //If this control is not enable, do nothing\n            if (!IsEnabled) return false;\n\n            bool isKeyPress = false;\n            bool backwardSelectDirection = input.IsKeyPress(Keys.LeftShift) || input.IsKeyPress(Keys.RightShift);\n            int deltaWheelPos = input.PreviousMouseScrollWheelValue() - input.MouseScrollWheelValue();\n            if (deltaWheelPos != 0) // determine just direction\n                deltaWheelPos /= Math.Abs(deltaWheelPos);\n\n            if (input.IsNewGameControlPressed(MyGameControlEnums.SELECT_AMMO_BULLET))\n            {\n                isKeyPress = true;\n                m_selectedGroup = MyMwcObjectBuilder_AmmoGroupEnum.Bullet;\n            }\n\n            if (input.IsNewGameControlPressed(MyGameControlEnums.SELECT_AMMO_MISSILE))\n            {\n                isKeyPress = true;\n                m_selectedGroup = MyMwcObjectBuilder_AmmoGroupEnum.Missile;\n            }\n\n            if (input.IsNewGameControlPressed(MyGameControlEnums.SELECT_AMMO_CANNON))\n            {\n                isKeyPress = true;\n                m_selectedGroup = MyMwcObjectBuilder_AmmoGroupEnum.Cannon;\n            }\n\n            if (input.IsNewGameControlPressed(MyGameControlEnums.SELECT_AMMO_UNIVERSAL_LAUNCHER_FRONT))\n            {\n                isKeyPress = true;\n                m_selectedGroup = MyMwcObjectBuilder_AmmoGroupEnum.UniversalLauncherFront;\n            }\n\n            if (input.IsNewGameControlPressed(MyGameControlEnums.SELECT_AMMO_UNIVERSAL_LAUNCHER_BACK))\n            {\n                isKeyPress = true;\n                m_selectedGroup = MyMwcObjectBuilder_AmmoGroupEnum.UniversalLauncherBack;\n            }\n\n            // in case of wheel direction modify flags to run correct code\n            if (deltaWheelPos > 0 && Visible && IsEnabled)\n            {\n                isKeyPress = true;\n                backwardSelectDirection = false;\n            }\n            // in case of wheel direction modify flags to run correct code\n            if (deltaWheelPos < 0 && Visible && IsEnabled)\n            {\n                isKeyPress = true;\n                backwardSelectDirection = true;\n            }\n\n            if (isKeyPress)\n            {\n                if (Visible == false)\n                {\n                    //I am here when the menu opens\n                    LoadAmmoFromShip();\n                    //If player change fire commands during game play, we need to show actual buttons names.\n                    //ReloadControlText();\n                    MyGuiSmallShipHelperAmmo.ResetDescription();\n                }\n                else\n                {\n                    if (m_selectedGroup == m_selectedGroupLast)\n                    {\n                       // if (!MyFakes.MW25D)\n                        {\n                            if (!backwardSelectDirection)\n                                m_selectedIndex++;\n                            else\n                                m_selectedIndex--;\n                        }\n                       // else\n                         //   m_selectedIndex = 0;\n                    }\n                    else\n                    {\n                        //I am here when category is changed\n                        LoadAmmoFromShip();\n                        MyGuiSmallShipHelperAmmo.ResetDescription();\n                    }\n\n                    if (m_selectedIndex >= m_ammoTypesAmounts.Count)\n                        m_selectedIndex = 0;\n                    if (m_selectedIndex < 0)\n                        m_selectedIndex = m_ammoTypesAmounts.Count - 1;\n                }\n\n                Visible = true;\n                m_selectedGroupLast = m_selectedGroup;\n                if (m_selectedIndex < m_ammoTypesAmounts.Count && m_selectedIndex >= 0)\n                {\n                    m_selectedAmmo = m_ammoTypesAmounts[m_selectedIndex].Type;\n                }\n\n                MyAudio.AddCue2D(MySoundCuesEnum.SfxHudWeaponScroll);\n            }\n\n\n            //Because I do not want the gun fired before I made the choice, the menu disappears after the release of key (not press)\n            if (Visible)\n            {\n                if (!MySession.Is25DSector)\n                {\n\n                    if (input.IsGameControlPressed(MyGameControlEnums.FIRE_PRIMARY) && m_selectedAmmo != 0)\n                    {\n                        MySession.PlayerShip.Weapons.AmmoAssignments.AssignAmmo(MyMwcObjectBuilder_FireKeyEnum.Primary, m_selectedGroup, m_selectedAmmo);\n                        m_isPressLast = true;\n                    }\n                    if (input.IsGameControlPressed(MyGameControlEnums.FIRE_SECONDARY) && m_selectedAmmo != 0)\n                    {\n                        MySession.PlayerShip.Weapons.AmmoAssignments.AssignAmmo(MyMwcObjectBuilder_FireKeyEnum.Secondary, m_selectedGroup, m_selectedAmmo);\n                        m_isPressLast = true;\n                    }\n                    if (input.IsGameControlPressed(MyGameControlEnums.FIRE_THIRD) && m_selectedAmmo != 0)\n                    {\n                        MySession.PlayerShip.Weapons.AmmoAssignments.AssignAmmo(MyMwcObjectBuilder_FireKeyEnum.Third, m_selectedGroup, m_selectedAmmo);\n                        m_isPressLast = true;\n                    }\n                    if (input.IsGameControlPressed(MyGameControlEnums.FIRE_FOURTH) && m_selectedAmmo != 0)\n                    {\n                        MySession.PlayerShip.Weapons.AmmoAssignments.AssignAmmo(MyMwcObjectBuilder_FireKeyEnum.Fourth, m_selectedGroup, m_selectedAmmo);\n                        m_isPressLast = true;\n                    }\n                    if (input.IsGameControlPressed(MyGameControlEnums.FIRE_FIFTH) && m_selectedAmmo != 0)\n                    {\n                        MySession.PlayerShip.Weapons.AmmoAssignments.AssignAmmo(MyMwcObjectBuilder_FireKeyEnum.Fifth, m_selectedGroup, m_selectedAmmo);\n                        m_isPressLast = true;\n                    }\n\n                    if (input.IsNewKeyPress(Keys.Escape))\n                    {\n                        Visible = false;\n                    }\n                }\n                else\n                {  //MyFakes.MW25D\n                    if (input.IsGameControlPressed(MyGameControlEnums.FIRE_PRIMARY) && m_selectedAmmo != 0)\n                    {\n                        MySession.PlayerShip.Weapons.AmmoAssignments.AssignAmmo(MyMwcObjectBuilder_FireKeyEnum.Primary, m_selectedGroup, m_selectedAmmo);\n                        m_isPressLast = true;\n                    }\n                    if (input.IsGameControlPressed(MyGameControlEnums.FIRE_SECONDARY) && m_selectedAmmo != 0)\n                    {\n                        MySession.PlayerShip.Weapons.AmmoAssignments.AssignAmmo(MyMwcObjectBuilder_FireKeyEnum.Primary, m_selectedGroup, m_selectedAmmo);\n                        m_isPressLast = true;\n                    }\n                    if (input.IsGameControlPressed(MyGameControlEnums.FIRE_THIRD) && m_selectedAmmo != 0)\n                    {\n                        MySession.PlayerShip.Weapons.AmmoAssignments.AssignAmmo(MyMwcObjectBuilder_FireKeyEnum.Primary, m_selectedGroup, m_selectedAmmo);\n                        m_isPressLast = true;\n                    }\n                    if (input.IsGameControlPressed(MyGameControlEnums.FIRE_FOURTH) && m_selectedAmmo != 0)\n                    {\n                        MySession.PlayerShip.Weapons.AmmoAssignments.AssignAmmo(MyMwcObjectBuilder_FireKeyEnum.Primary, m_selectedGroup, m_selectedAmmo);\n                        m_isPressLast = true;\n                    }\n                    if (input.IsGameControlPressed(MyGameControlEnums.FIRE_FIFTH) && m_selectedAmmo != 0)\n                    {\n                        MySession.PlayerShip.Weapons.AmmoAssignments.AssignAmmo(MyMwcObjectBuilder_FireKeyEnum.Primary, m_selectedGroup, m_selectedAmmo);\n                        m_isPressLast = true;\n                    }\n\n                    if (input.IsNewKeyPress(Keys.Escape))\n                    {\n                        Visible = false;\n                    }\n                }\n\n                for (int i = m_ammoTypesAmounts.Count - 1; i >= 0; i--)\n                {\n                    int itemsPerColumn = 7;\n\n                    int orderX = (int)m_selectedGroup + i / itemsPerColumn;\n                    int orderY = i % itemsPerColumn;\n\n                    /*\n                    Vector2 mousePos = MyGuiManager.MouseCursorPosition;\n                    if (MyVideoModeManager.IsTripleHead() == true)\n                        mousePos += new Vector2(-1, 0);\n                    \n                    if (MyGuiSmallShipHelpers.GetMyGuiSmallShipHelperAmmo(m_ammoTypesAmounts[i].Type).IsPointInMyArea(mousePos))\n                    {\n                    }\n                    */\n                    //if (MyGuiSmallShipHelpers.GetMyGuiSmallShipHelperAmmo(m_ammoTypesAmounts[i].Type).IsPointInMyArea(MyGuiManager.MouseCursorPosition))\n                    MyGuiSmallShipHelperAmmo ammoHelper =\n                        MyGuiObjectBuilderHelpers.GetGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int) m_ammoTypesAmounts[i].Type) as MyGuiSmallShipHelperAmmo;\n                    if (ammoHelper.IsPointInMyArea(MyGuiManager.MouseCursorPosition))\n                    {\n                        if (m_selectedIndex != i || m_selectedAmmo != m_ammoTypesAmounts[m_selectedIndex].Type)\n                            MyAudio.AddCue2D(MySoundCuesEnum.SfxHudWeaponScroll);\n                        m_selectedIndex = i;\n                        m_selectedAmmo = m_ammoTypesAmounts[m_selectedIndex].Type;\n                        \n                    }\n                }\n\n                //if (!MyFakes.MW25D)\n                {\n                    if (m_isPressLast &&\n                        !input.IsGameControlPressed(MyGameControlEnums.FIRE_PRIMARY) &&\n                        !input.IsGameControlPressed(MyGameControlEnums.FIRE_SECONDARY) &&\n                        !input.IsGameControlPressed(MyGameControlEnums.FIRE_THIRD) &&\n                        !input.IsGameControlPressed(MyGameControlEnums.FIRE_FOURTH) &&\n                        !input.IsGameControlPressed(MyGameControlEnums.FIRE_FIFTH))\n                    {\n                        //I am here when the menu closes\n                        m_isPressLast = false;\n                        Visible = false;\n                        MyAudio.AddCue2D(MySoundCuesEnum.SfxHudWeaponSelect);\n                    }\n                }\n              /*  else\n                {\n                    if (isKeyPress)\n                        MyAudio.AddCue2D(MySoundCuesEnum.SfxHudWeaponSelect);\n                } */\n            }\n              /*\n            if (MyFakes.MW25D)\n            {\n                return false;\n            }   */\n\n            return base.HandleInput(input, hasKeyboardActiveControl, hasKeyboardActiveControlPrevious, receivedFocusInThisUpdate);\n        }\n\n        private void LoadAmmoFromShip()\n        {\n            m_selectedAmmo = 0;\n            m_selectedIndex = 0;\n            m_ammoTypesAmounts.Clear();\n\n            //If there is no ammo or no weapon, do nothing\n            if (MySession.PlayerShip.Weapons.AmmoInventoryItems.GetAmmoInventoryItems().Count == 0 ||                 \n                MySession.PlayerShip.Weapons.GetWeaponsObjectBuilders(false) == null)\n            {\n                return;\n            }\n\n            foreach (var ammoInventoryItem in MySession.PlayerShip.Weapons.AmmoInventoryItems.GetAmmoInventoryItems())\n            {\n                MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum ammoType = (MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum)ammoInventoryItem.ObjectBuilderId.Value;\n                if (MyGuiSmallShipHelpers.IsAmmoInGroup(ammoType, m_selectedGroup))\n                {\n                    int index = -1;\n                    for (int i = 0; i < m_ammoTypesAmounts.Count; i++)\n                    {\n                        if (m_ammoTypesAmounts[i].Type == ammoType)\n                        {\n                            index = i;\n                            break;\n                        }\n                    }\n\n                    if (index >= 0)\n                    {\n                        m_ammoTypesAmounts[index] = new MyAmmoItem(ammoType, m_ammoTypesAmounts[index].Amount + (int)ammoInventoryItem.Amount);\n                    }\n                    else\n                    {\n                        bool isWeapon = false;\n                        foreach (var weaponBuilder in MySession.PlayerShip.Weapons.GetWeaponsObjectBuilders(false))\n                        {\n                            if (MyGuiSmallShipHelpers.GetWeaponType(ammoType, m_selectedGroup).HasValue &&\n                                MyGuiSmallShipHelpers.GetWeaponType(ammoType, m_selectedGroup).Value == weaponBuilder.WeaponType)\n                            {\n                                isWeapon = true;\n                                break;\n                            }\n                        }\n                        if (isWeapon) m_ammoTypesAmounts.Add(new MyAmmoItem(ammoType, (int)ammoInventoryItem.Amount));\n                    }\n                }\n            }\n\n            if (m_ammoTypesAmounts.Count > 0)\n            {\n                m_selectedAmmo = m_ammoTypesAmounts[m_selectedIndex].Type;\n            }\n        }\n\n        public void ReloadControlText()\n        {\n            m_text = MyTextsWrapper.Get(MyTextsWrapperEnum.AmmoSelectText);\n\n            MyGuiInput input = MyGuiManager.GetInput();\n            m_textValues.Clear();\n            m_textValues.AppendFormat(MyTextsWrapper.GetFormatString(MyTextsWrapperEnum.AmmoSelectTextValues),\n                input.GetGameControl(MyGameControlEnums.FIRE_PRIMARY).GetControlButtonStringBuilderCombined(\" / \"),\n                input.GetGameControl(MyGameControlEnums.FIRE_SECONDARY).GetControlButtonStringBuilderCombined(\" / \"),\n                input.GetGameControl(MyGameControlEnums.FIRE_THIRD).GetControlButtonStringBuilderCombined(\" / \"),\n                input.GetGameControl(MyGameControlEnums.FIRE_FOURTH).GetControlButtonStringBuilderCombined(\" / \"),\n                input.GetGameControl(MyGameControlEnums.FIRE_FIFTH).GetControlButtonStringBuilderCombined(\" / \")\n            );\n        }\n               \n        public override void Update()\n        {\n            base.Update();\n\n            //// if has changed controls?\n            //if (((MyGuiScreenGamePlay)m_parent).GetControlsChange())\n            //{\n            //    ReloadControlText();\n            //}\n\n            if (Visible) MyConfig.EditorUseCameraCrosshair = false;\n        }\n\n        public override void Draw()\n        {\n        /*    if (MyFakes.MW25D)\n            {\n                Visible = true;\n                //m_mouseCursorHoverTexture = null;\n               // return;\n            }\n          */\n            if (!Visible) return;\n            \n\n            MyGuiManager.BeginSpriteBatch();\n            var offset = new Vector2(VideoMode.MyVideoModeManager.IsTripleHead() ? -1 : 0, 0);\n\n            /*\n            // Draw information:\n            Vector2 screenSizeNormalize = MyGuiManager.GetNormalizedSize(MyGuiManager.GetAmmoSelectKeyConfirmBorderTexture(), MyGuiConstants.AMMO_SELECTION_CONFIRM_BORDER_INFO_SCALE);\n            screenSizeNormalize.X *= MyGuiConstants.AMMO_SELECTION_CONFIRM_BORDER_SCALE.X;\n            screenSizeNormalize.Y *= MyGuiConstants.AMMO_SELECTION_CONFIRM_BORDER_SCALE.Y;            \n           */\n\n            var screenSizeNormalize = new Vector2(918f / 1600f, 314f / 1200f);\n                       \n            //if (!MyFakes.MW25D)\n            if (Visible) \n            {\n                MyGuiManager.DrawSpriteBatch(MyGuiManager.GetAmmoSelectKeyConfirmBorderTexture(),\n                    MyGuiConstants.AMMO_SELECTION_CONFIRM_BORDER_POSITION + offset, screenSizeNormalize,\n                    MyGuiConstants.AMMO_SELECTION_CONFIRM_BORDER_COLOR, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER);\n\n                MyGuiManager.DrawStringCentered(MyGuiManager.GetFontMinerWarsBlue(), m_text,\n                    MyGuiConstants.AMMO_SELECTION_CONFIRM_BORDER_TEXT_INFO_POSITION + offset, MyGuiConstants.AMMO_SELECTION_CONFIRMATION_TEXT_SCALE,\n                    MyGuiConstants.AMMO_SELECTION_CONFIRM_INFO_TEXT_COLOR, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER);\n\n                MyGuiManager.DrawString(MyGuiManager.GetFontMinerWarsBlue(), m_textValues,\n                    MyGuiConstants.AMMO_SELECTION_CONFIRM_BORDER_TEXT_POSITION + offset, MyGuiConstants.AMMO_SELECTION_CONFIRMATION_TEXT_INFO_SCALE,\n                    MyGuiConstants.AMMO_SELECTION_CONFIRM_INFO_TEXT_COLOR, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER);\n            }\n                         \n            MyGuiSmallShipHelperAmmo.DrawSpriteBatchBackground(MyGuiConstants.SELECT_AMMO_BACKGROUND_COLOR);\n            \n            foreach (MyMwcObjectBuilder_AmmoGroupEnum item in MyGuiSmallShipHelpers.MyMwcObjectBuilder_SmallShip_AssignmentOfAmmo_GroupEnumValues)\n            {\n                MyGuiSmallShipHelpers.GetMyGuiSmallShipHelperAmmo(item).DrawSpriteBatchMenuHeader((int)item - 1, (m_selectedGroup == item), m_selectedIndex, m_backgroundColor.Value);\n            }\n               \n            if (!Visible)\n            {\n                MyGuiManager.EndSpriteBatch();\n                return;\n            }    \n\n            for (int i = m_ammoTypesAmounts.Count -1 ; i >= 0; i--)\n            {\n                int itemsPerColumn = 7;\n\n                int orderX = i / itemsPerColumn;\n                int orderY = i % itemsPerColumn;    \n\n                MyGuiSmallShipHelperAmmo ammoHelper = MyGuiObjectBuilderHelpers.GetGuiHelper(\n                    MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int) m_ammoTypesAmounts[i].Type) as MyGuiSmallShipHelperAmmo;\n                //MyGuiSmallShipHelpers.GetMyGuiSmallShipHelperAmmo(m_ammoTypesAmounts[i].Type).DrawSpriteBatchMenuItem(\n                //    orderX - 1, orderY - 1, (i == m_selectedIndex), m_ammoTypesAmounts[i].Amount, m_backgroundColor.Value, i, (int)m_selectedGroup);\n                ammoHelper.DrawSpriteBatchMenuItem(orderX - 1, orderY - 1, (i == m_selectedIndex), m_ammoTypesAmounts[i].Amount, m_backgroundColor.Value, i, (int)m_selectedGroup);\n            }\n\n\n            MyGuiSmallShipHelperAmmo.DrawSpriteBatchTooltip();\n\n            MyGuiManager.EndSpriteBatch();\n        }\n\n        private struct MyAmmoItem : IEquatable<MyAmmoItem>\n        {\n            public MyAmmoItem(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum type, int amount)\n            {\n                Amount = amount;\n                Type = type;\n            }\n\n            public MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum Type;\n            public int Amount;\n\n            public bool Equals(MyAmmoItem other)\n            {\n                return (this.Type == other.Type);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Core/MyGuiControlShipPreview.cs",
    "content": "﻿using System;\nusing MinerWarsMath;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.BackgroundCube;\nusing MinerWars.AppCode.Game.HUD;\nusing MinerWars.AppCode.Game.Managers;\nusing MinerWars.AppCode.Game.Models;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Utils.VertexFormats;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\n\nnamespace MinerWars.AppCode.Game.GUI.Core\n{\n    //  IMPORTATNT: This class must UnloadContent in the end of lifecycle\n    //class MyGuiControlShipPreview : MyGuiControlBase\n    //{\n        //const float CAMERA_REPOSITION_FOR_SHIP_MENU_DRAWING = 42f;\n\n        //MySmallShip m_minerShip;\n\n        //MyStencilOpaqueTexture m_backCameraStencilOpaque;\n        //MyCustomContentManager m_localContentManager;\n        //MyEffectHud m_effect;\n        //Texture2D m_borderTexture;\n\n        //Vector3 m_positionForNewShip;\n        //Matrix m_oldWorldMatrix;\n\n        //MyMwcPositionAndOrientation m_previewPosition;\n\n        //static VertexBuffer m_vertexBuffer;\n        //static VertexPositionColorTexture[] m_vertexes;\n        //static Matrix m_orthographicProjectionMatrix;\n\n        //public MyGuiControlShipPreview(MyGuiScreenBase parentScreen, MyMwcObjectBuilder_SmallShip smallShipObjectBuilder)\n        //    : base(parentScreen, Vector2.Zero, null, null)\n        //{\n        //    Vector3 oldShipPosition = MyGuiScreenGameBase.Static.PlayerShip.GetPosition();\n        //    m_positionForNewShip = oldShipPosition + MyGuiScreenGameBase.Static.PlayerShip.WorldMatrix.Backward * 50f;\n        //    m_oldWorldMatrix = MyGuiScreenGameBase.Static.PlayerShip.WorldMatrix;\n\n        //    m_previewPosition = new MyMwcPositionAndOrientation(m_positionForNewShip, m_oldWorldMatrix.Forward, m_oldWorldMatrix.Up);\n\n        //    CreateSmallShipForPreview(smallShipObjectBuilder);\n\n        //    //MyFakes.DRAW_PLAYER_MINER_SHIP = false;\n        //    m_localContentManager = new MyCustomContentManager(MyMinerGame.Static.Services, MyMinerGame.Static.Content.RootDirectory);\n        //    m_effect = new MyEffectHud(m_localContentManager, \"Effects\\\\HUD\\\\MyHudEffect\");\n        //    m_backCameraStencilOpaque = new MyStencilOpaqueTexture(\"ShipCustomizationStencil\", m_localContentManager);\n    //    m_borderTexture = m_localContentManager.Load<Texture2D>(\"Textures\\\\HUD\\\\ShipCustomizationBorder\", flags: TextureFlags.IgnoreQuality);\n        //    m_vertexes = new VertexPositionColorTexture[MyHudConstants.VERTEXES_PER_HUD_QUAD];\n        //    m_vertexBuffer = new VertexBuffer(MyMinerGame.Static.GraphicsDevice, typeof(VertexPositionColorTexture), m_vertexes.Length, BufferUsage.None);\n        //    int width = 1;\n        //    float height = width / MyCamera.MenuViewPort.AspectRatio;\n        //    m_orthographicProjectionMatrix = Matrix.CreateOrthographicOffCenter(0.0f, width, height, 0.0f, 0.0f, 1000);\n        //    AddShipCustomizationBorders();\n        //}\n\n        //public void CreateSmallShipForPreview(MyMwcObjectBuilder_SmallShip smallShipObjectBuilder)\n        //{\n        //    MyMwcPositionAndOrientation newPosition;\n        //    //Destroy old ship if there is any\n        //    if (m_minerShip != null)\n        //    {\n        //        newPosition = ((MyMwcObjectBuilder_SmallShip)m_minerShip.ObjectBuilder).PositionAndOrientation;\n        //        m_minerShip.Close();\n        //        m_minerShip = null;\n        //    }\n        //    else\n        //    {\n        //        newPosition = m_previewPosition;\n        //    }\n        //    //Create new ship (need diferent position, but don't change original object builder)\n        //    MyMwcPositionAndOrientation originalPosition = smallShipObjectBuilder.PositionAndOrientation;\n        //    smallShipObjectBuilder.PositionAndOrientation = newPosition;\n        //    m_minerShip = (MySmallShip)MyEntities.CreateFromObjectBuilder(null, smallShipObjectBuilder);\n        //    smallShipObjectBuilder.PositionAndOrientation = originalPosition;\n        //}\n\n        //public override void Update()\n        //{\n        //    base.Update();\n\n        //    if (m_backCameraStencilOpaque != null) m_backCameraStencilOpaque.UpdateScreenSize(MyCamera.MenuViewPort);\n\n        //    if (m_minerShip != null)\n        //    {\n        //        m_minerShip.MoveAndRotate(Vector3.Zero, new Vector2(0, -4), 0, false);\n        //        m_minerShip.UpdateBeforeIntegration();\n        //        m_minerShip.UpdateAfterIntegration();\n        //    }\n        //}\n\n        //public override void Draw()\n        //{\n        //    base.Draw();\n        //    if (m_minerShip == null) return;\n        //    m_minerShip.DynamicLightsOn = true;\n        //    MyCameraAttachedToEnum oldCamera = MyGuiScreenGameBase.Static.CameraAttachedTo;\n        //    MyGuiScreenGameBase.Static.CameraAttachedTo = MyCameraAttachedToEnum.PlayerMinerShip;\n        //    MyPerformanceCounter.PerCameraDraw.Reset();\n        //    MyCamera.EnableShipCustomizationScreen(m_minerShip.Volume.Radius);\n        //    MyMinerGame.Static.GraphicsDevice.Clear(ClearOptions.Stencil, Color.White, 1, 0);\n        //    MyMinerGame.Static.GraphicsDevice.Clear(ClearOptions.DepthBuffer, Color.White, 1, 0);\n        //    m_backCameraStencilOpaque.Draw();\n        //    m_backCameraStencilOpaque.StencilOpaqueEnable();\n        //    DrawMenuScene();\n        //    m_backCameraStencilOpaque.StencilOpaqueDisable();\n        //    DrawVertexBuffer();\n        //    MyCamera.EnableForward();\n        //    MyGuiScreenGameBase.Static.CameraAttachedTo = oldCamera;\n        //}\n\n        //void DrawMenuScene()\n        //{\n        //    MyEffectValuesManager.Update();\n        //    MyBackgroundCube.Draw();\n        //    MyCamera.Position += MyMwcUtils.Normalize(m_positionForNewShip - MyCamera.Position) * CAMERA_REPOSITION_FOR_SHIP_MENU_DRAWING;\n        //    m_minerShip.Draw();\n        //    MyModels.Draw();\n        //    MyParticles.Draw(true, true);\n        //}\n\n        //void DrawVertexBuffer()\n        //{\n        //    MyRenderStatePool.CullMode = CullMode.None;\n        //    MyRenderStatePool.AlphaBlendEnable = true;\n        //    MyRenderStatePool.BlendFunction = BlendFunction.Add;\n        //    MyRenderStatePool.DepthBufferFunction = CompareFunction.Always;\n        //    MyRenderStatePool.DepthBufferWriteEnable = false;\n        //    MyRenderStatePool.SourceBlend = Blend.SourceAlpha;\n        //    MyRenderStatePool.DestinationBlend = Blend.InverseSourceAlpha;\n        //    DrawVertexBuffer(m_borderTexture, m_vertexBuffer, m_vertexes, MyHudConstants.VERTEXES_PER_HUD_QUAD, MyHudConstants.TRIANGLES_PER_HUD_QUAD);\n        //    MyRenderStatePool.AlphaBlendEnable = false;\n        //    MyRenderStatePool.DepthBufferWriteEnable = true;\n        //    MyRenderStatePool.DepthBufferFunction = CompareFunction.LessEqual;\n        //}\n\n        //void DrawVertexBuffer(Texture2D texture, VertexBuffer vertexBuffer, VertexPositionColorTexture[] vertexes, int vertexCount, int primitivesCount)\n        //{\n        //    GraphicsDevice device = MyMinerGame.Static.GraphicsDevice;\n        //    vertexBuffer.SetData(vertexes, 0, vertexCount);\n        //    device.Indices = null;\n        //    device.VertexDeclaration = MyVertexFormatManager.Get(MyVertexFormatTypes.POSITION_COLOR_TEXTURE).GetVertexDeclaration();\n        //    device.Vertices[0].SetSource(vertexBuffer, 0, VertexPositionColorTexture.SizeInBytes);\n        //    m_effect.ProjectionMatrix.SetValue(m_orthographicProjectionMatrix);\n        //    m_effect.HudTexture.SetValue(texture);\n        //    m_effect.Effect.Begin();\n        //    m_effect.Effect.GetTechnique(0].Passes[0].Begin();\n        //    device.DrawPrimitives(PrimitiveType.TriangleList, 0, primitivesCount);\n        //    m_effect.Effect.GetTechnique(0].Passes[0].End();\n        //    m_effect.Effect.End();\n        //}\n\n        //void AddShipCustomizationBorders()\n        //{\n        //    AddTexturedQuad(Color.Azure);\n        //}\n\n        //void AddTexturedQuad(Color color)\n        //{\n        //    m_vertexes[0].Color = color;\n        //    m_vertexes[1].Color = color;\n        //    m_vertexes[2].Color = color;\n        //    m_vertexes[3].Color = color;\n        //    m_vertexes[4].Color = color;\n        //    m_vertexes[5].Color = color;\n\n        //    int width = 1;\n        //    float height = width / MyCamera.MenuViewPort.AspectRatio;\n\n        //    m_vertexes[0].Position = new Vector3(0, 0, 0);\n        //    m_vertexes[1].Position = new Vector3(width, 0, 0);\n        //    m_vertexes[2].Position = new Vector3(0, height, 0);\n        //    m_vertexes[3].Position = new Vector3(width, 0, 0);\n        //    m_vertexes[4].Position = new Vector3(width, height, 0);\n        //    m_vertexes[5].Position = new Vector3(0, height, 0);\n\n        //    m_vertexes[0].TextureCoordinate = new Vector2(0, 0);\n        //    m_vertexes[1].TextureCoordinate = new Vector2(1, 0);\n        //    m_vertexes[2].TextureCoordinate = new Vector2(0, 1);\n        //    m_vertexes[3].TextureCoordinate = new Vector2(1, 0);\n        //    m_vertexes[4].TextureCoordinate = new Vector2(1, 1);\n        //    m_vertexes[5].TextureCoordinate = new Vector2(0, 1);\n\n        //}\n\n        //public virtual void UnloadContent()\n        //{\n        //    if (m_vertexBuffer != null) m_vertexBuffer.Dispose();\n        //    if (m_localContentManager != null)\n        //    {\n        //        m_localContentManager.Unload();\n        //    }\n        //    if (m_minerShip != null)\n        //    {\n        //        m_minerShip.Close();\n        //        m_minerShip = null;\n        //    }\n        //}\n    //}\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Core/MyGuiControlSlider.cs",
    "content": "﻿using System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Toolkit.Input;\nusing MinerWars.AppCode.Game.Managers;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils.Utils;\n\nnamespace MinerWars.AppCode.Game.GUI.Core\n{\n    class MyGuiControlSlider : MyGuiControlBase\n    {\n        public delegate void OnSliderChangeCallback(MyGuiControlSlider sender);\n        public OnSliderChangeCallback OnChange;\n\n        public int LabelDecimalPlaces { get; set; }\n\n        float m_valueNormalized;        //  This is values selected on slider normalized to <0..1>\n        float? m_value;                  //  This is values selected on slider in original units, e.g. meters, so it can be for example 1000 meters\n        float m_minValue;               //  This is min value that can be selected on slider in original units, e.g. meters, so it can be for example 100 meters\n        float m_maxValue;               //  This is max value that can be selected on slider in original units, e.g. meters, so it can be for example 10,000 meters\n        string m_labelText;       //  Label on right side\n        float m_labelWidth;\n        float m_labelScale;\n        Vector4 m_color;\n        int m_blinkerTimer;\n        bool m_controlCaptured = false;\n\n        StringBuilder m_tempForDraw;        //  Only for drawing\n\n        public MyGuiControlSlider(IMyGuiControlsParent parent, Vector2 position, float width, float minValue, float maxValue,\n            Vector4 color, StringBuilder labelText, float labelWidth, int labelDecimalPlaces, float labelScale)\n            : this(parent, position, width, minValue, maxValue, color, labelText, labelWidth, labelDecimalPlaces, labelScale, 1.0f)\n        {\n        }\n\n        public MyGuiControlSlider(IMyGuiControlsParent parent, Vector2 position, float width, float minValue, float maxValue,\n            Vector4 color, StringBuilder labelText, float labelWidth, int labelDecimalPlaces, float labelScale, float scale)\n            : base(parent, position, new Vector2(width, MyGuiConstants.SLIDER_HEIGHT), MyGuiConstants.SLIDER_BACKGROUND_COLOR, null, MyGuiManager.GetSliderControlTexture(), null, null, true)\n        {\n            m_canHandleKeyboardActiveControl = true;\n            m_color = color;\n            m_minValue = minValue;\n            m_maxValue = maxValue;\n            m_blinkerTimer = 0;\n            m_value = minValue;\n            m_scale = scale;\n\n            //m_valuePrevious = 0;\n\n            MyCommonDebugUtils.AssertDebug(m_maxValue > m_minValue && m_maxValue != m_minValue);\n\n            m_tempForDraw = new StringBuilder(labelText.Length);\n\n            m_labelText = labelText.ToString();\n            m_labelWidth = labelWidth;\n            LabelDecimalPlaces = labelDecimalPlaces;\n            m_labelScale = labelScale;\n        }\n\n        public void SetBounds(float minValue, float maxValue)\n        {\n            m_minValue = minValue;\n            m_maxValue = maxValue;\n            SetValue(GetValue());\n        }\n\n        public void SetValue(float value)\n        {\n            value = MathHelper.Clamp(value, m_minValue, m_maxValue);\n\n            if ((m_value.HasValue == false) || (m_value.Value != value))\n            {\n                m_value = value;\n                UpdateNormalizedValue();\n\n                //  Change callback\n                if (OnChange != null) OnChange(this);\n            }\n        }\n\n\n        public void SetNormalizedValue(float value)\n        {\n            m_valueNormalized = MathHelper.Clamp(value, 0, 1);\n            m_value = m_valueNormalized * (m_maxValue - m_minValue) + m_minValue;\n        }\n\n        public float GetValue()\n        {\n            return m_value.Value;\n        }\n\n        public float GetNormalizedValue()\n        {\n            return (m_value.Value - m_minValue) / (m_maxValue - m_minValue);\n        }\n\n        void UpdateNormalizedValue()\n        {\n            MyCommonDebugUtils.AssertDebug(m_minValue < m_maxValue);\n            MyCommonDebugUtils.AssertDebug(m_value >= m_minValue);\n            MyCommonDebugUtils.AssertDebug(m_value <= m_maxValue);\n            m_valueNormalized = MathHelper.Clamp((m_value.Value - m_minValue) / (m_maxValue - m_minValue), 0, 1);\n        }\n\n        //  Method returns true if input was captured by control, so no other controls, nor screen can use input in this update\n        public override bool HandleInput(MyGuiInput input, bool hasKeyboardActiveControl, bool hasKeyboardActiveControlPrevious, bool isThisFirstHandleInput)\n        {\n            bool ret = base.HandleInput(input, hasKeyboardActiveControl, hasKeyboardActiveControlPrevious, isThisFirstHandleInput);\n\n            if (ret == false)\n            {\n                //float valuePrevious = m_value;\n\n                if ((IsMouseOver() == true) && (input.IsNewLeftMousePressed() == true))\n                {\n                    m_controlCaptured = true;\n                }\n\n                if (input.IsLeftMouseReleased())\n                {\n                    m_controlCaptured = false;\n                }\n\n                if ((IsMouseOver() == true) && m_controlCaptured)\n                {\n                    float lineHorizontalPositionStart = GetStart();\n                    float lineHorizontalPositionEnd = GetEnd();\n\n                    SetValue(((MyGuiManager.MouseCursorPosition.X - lineHorizontalPositionStart) / (lineHorizontalPositionEnd - lineHorizontalPositionStart)) * (m_maxValue - m_minValue) + m_minValue);\n                    //KeenSoftwareHouse.Library.Trace.Trace.SendMsgLastCall(\"t\");\n                    ret = true;\n                }\n\n                if (hasKeyboardActiveControl == true)\n                {\n                    const float MOVEMENT_DELTA_NORMALIZED = 0.001f;\n\n                    if (input.IsKeyPress(Keys.Left) || input.IsGamepadKeyLeftPressed())\n                    {\n                        MoveForward(-MOVEMENT_DELTA_NORMALIZED);\n                        ret = true;\n                    }\n\n                    if (input.IsKeyPress(Keys.Right) || input.IsGamepadKeyRightPressed())\n                    {\n                        MoveForward(+MOVEMENT_DELTA_NORMALIZED);\n                        ret = true;\n                    }\n\n                    if (ret == true) m_blinkerTimer = 0;\n                }\n            }\n\n            return ret;\n        }\n\n        void MoveForward(float movementDelta)\n        {\n            SetValue(m_value.Value + (m_maxValue - m_minValue) * movementDelta);\n        }\n\n        public override void Update()\n        {\n            base.Update();\n\n            UpdateNormalizedValue();\n        }\n\n        Vector2 GetLeftTopCorner()\n        {\n            return m_parent.GetPositionAbsolute() + m_position - (m_size.Value / 2.0f) * m_scale;\n        }\n\n        float GetStart()\n        {\n            return GetLeftTopCorner().X + MyGuiConstants.SLIDER_INSIDE_OFFSET_X;\n        }\n\n        float GetEnd()\n        {\n            return GetLeftTopCorner().X + (m_size.Value.X - MyGuiConstants.SLIDER_INSIDE_OFFSET_X) * m_scale;\n        }\n\n        void DrawSlider(Vector4 color)\n        {\n            Vector2 leftTopCorner = GetLeftTopCorner();\n\n            //  Beging and end of horizontal line\n            float lineVerticalPosition = leftTopCorner.Y + m_size.Value.Y / 2.0f * m_scale;\n            float lineHorizontalPositionStart = GetStart();\n            float lineHorizontalPositionEnd = GetEnd();\n\n            //  Horizontal position of silder's marker/selector\n            float lineHorizontalPositionSlider = MathHelper.Lerp(lineHorizontalPositionStart, lineHorizontalPositionEnd, m_valueNormalized);\n\n            //  Right part of horizontal line - it start at Start and ends at End\n            //MyGuiManager.DrawSpriteBatch(MyGuiManager.GradientTexture, new Vector2(lineHorizontalPositionStart, lineVerticalPosition),\n            //    lineHorizontalPositionEnd - lineHorizontalPositionStart, 2, GetColorAfterTransitionAlpha(tempColor * 0.7f), MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER);\n            //MyGuiManager.DrawSpriteBatch(MyGuiManager.GetButtonTexture(), new Vector2(lineHorizontalPositionStart, lineVerticalPosition),\n               // new Vector2(lineHorizontalPositionEnd - lineHorizontalPositionStart, 0.004f * m_scale), GetColorAfterTransitionAlpha(color * 0.8f), MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER);\n\n            //  Left part of horizontal line\n            //MyGuiManager.DrawSpriteBatch(MyGuiManager.GradientTexture, new Vector2(lineHorizontalPositionStart, lineVerticalPosition),\n            //    lineHorizontalPositionSlider - lineHorizontalPositionStart, 4, GetColorAfterTransitionAlpha(color * 0.9f), MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER);\n           // MyGuiManager.DrawSpriteBatch(MyGuiManager.GetButtonTexture(), new Vector2(lineHorizontalPositionStart, lineVerticalPosition),\n             //   new Vector2(lineHorizontalPositionSlider - lineHorizontalPositionStart, 0.006f * m_scale), GetColorAfterTransitionAlpha(color * 0.95f), MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER);\n\n            Vector4 startEndColor = color * 0.5f;\n            startEndColor.W = 1;\n\n            if (IsMouseOverOrKeyboardActive())\n            {\n                startEndColor = MyGuiConstants.DEFAULT_CONTROL_FOREGROUND_COLOR.ToVector4() * 0.8f;\n            }\n            else\n            {\n                startEndColor = MyGuiConstants.DEFAULT_CONTROL_FOREGROUND_COLOR.ToVector4() * 0.5f;\n            }\n\n            //  Small start vertical line\n            //MyGuiManager.DrawSpriteBatch(MyGuiManager.GetBlankTexture(), new Vector2(lineHorizontalPositionStart, lineVerticalPosition),\n            //    2, 0.02f, GetColorAfterTransitionAlpha(color * 0.7f), MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER);\n            //MyGuiManager.DrawSpriteBatch(MyGuiManager.GetBlankTexture(), new Vector2(lineHorizontalPositionStart, lineVerticalPosition),\n               // new Vector2(0.0025f, 0.01f) * m_scale, GetColorAfterTransitionAlpha(startEndColor), MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER);\n\n            //  Small end vertical line\n            //MyGuiManager.DrawSpriteBatch(MyGuiManager.GetBlankTexture(), new Vector2(lineHorizontalPositionEnd, lineVerticalPosition),\n               // new Vector2(0.0025f, 0.01f) * m_scale, GetColorAfterTransitionAlpha(startEndColor), MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER);\n\n            //  Draw carriage line\n            //  Carriage blinker time is solved here in Draw because I want to be sure it will be drawn even in low FPS\n            bool drawSlider = false;\n            if (m_hasKeyboardActiveControl == true)\n            {\n                //  This condition controls \"blinking\", so most often is carrier visible and blinks very fast\n                //  It also depends on FPS, but as we have max FPS set to 60, it won't go faster, nor will it omit a \"blink\".\n                int carriageInterval = m_blinkerTimer % 20;\n                if ((carriageInterval >= 0) && (carriageInterval <= 15))\n                {\n                    drawSlider = true;\n                }\n                m_blinkerTimer++;\n            }\n            else\n            {\n                drawSlider = true;\n            }\n\n\n            //  Moving Slider\n            if (drawSlider == true)\n            {\n                //MyGuiManager.DrawSpriteBatch(MyGuiManager.GetBlankTexture(), new Vector2(lineHorizontalPositionSlider, lineVerticalPosition),\n                //    new Vector2(0.01f, 0.0125f), GetColorAfterTransitionAlpha(color), MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER);\n                MyGuiManager.DrawSpriteBatch(MyGuiManager.GetSliderTexture(), new Vector2(lineHorizontalPositionSlider, lineVerticalPosition),\n                    new Vector2(0.017f, 0.0205f) * m_scale, GetColorAfterTransitionAlpha(new Vector4(color.X, color.Y, color.Z, 1)), MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER);\n            }\n        }\n\n        void DrawLabel(Vector4 color)\n        {\n            MyMwcUtils.ClearStringBuilder(m_tempForDraw);\n            m_tempForDraw.AppendFormat(m_labelText, MyValueFormatter.GetFormatedFloat(m_value.Value, LabelDecimalPlaces));\n\n            MyGuiManager.DrawString(MyGuiManager.GetFontMinerWarsBlue(), m_tempForDraw, m_parent.GetPositionAbsolute() + m_position + new Vector2(m_size.Value.X / 2.0f + m_labelWidth, 0), m_labelScale,\n                GetColorAfterTransitionAlpha(color), MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_CENTER);\n        }\n\n        public override void Draw()\n        {\n            base.Draw();\n\n            Vector4 tempColor = (IsMouseOverOrKeyboardActive() == true) ? m_color * MyGuiConstants.CONTROL_MOUSE_OVER_BACKGROUND_COLOR_MULTIPLIER : m_color;\n            DrawSlider(tempColor);\n            DrawLabel(tempColor);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Core/MyGuiControlTabControl.cs",
    "content": "﻿using System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Toolkit.Input;\nusing MinerWars.AppCode.Game.Managers;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Audio;\nusing System.Collections.Generic;\n\nnamespace MinerWars.AppCode.Game.GUI.Core\n{\n    class MyGuiControlSimpleTabControl : MyGuiControlParent\n    {\n\n        private string m_caption;\n\n        public MyGuiControlSimpleTabControl(IMyGuiControlsParent parent, Vector2 position, Vector2 size, Vector4 color)\n            : base(parent, position, size, color, null, null)\n        {\n            m_caption = \"\";\n            m_backgroundColor = null;\n        }\n\n        public void SetCatption(StringBuilder str)\n        {\n            m_caption = str.ToString();\n        }\n\n        public string GetCaption()\n        {\n            return m_caption; \n        }\n\n        /*\n        public MyGuiControlSimpleTabControl(MyGuiScreenBase parentScreen, Vector2 position, Vector2 size, Vector4 color)\n            : base(position, color, size)\n        {\n            //m_parentScreen = parentScreen;\n        }\n        */        \n\n        /*\n        public override string GetFriendlyName()\n        {\n            return \"TabControl\";\n        }\n        */\n        public override bool HandleInput(MyGuiInput input, bool hasKeyboardActiveControl, bool hasKeyboardActiveControlPrevious, bool receivedFocusInThisUpdate)\n        {\n            \n            bool ret = base.HandleInput(input, hasKeyboardActiveControl, hasKeyboardActiveControlPrevious, receivedFocusInThisUpdate);\n            /*\n            if (ret == false)\n            {\n                if (((IsMouseOver() == true) && input.IsNewLeftMousePressed()) ||\n                    ((hasKeyboardActiveControl == true) && ((input.IsNewKeyPress(Keys.Enter) || (input.IsNewKeyPress(Keys.Space)) || (input.IsNewGameControlPressed(MyGameControlEnums.FIRE_PRIMARY) && !input.IsNewLeftMousePressed())))))\n                {\n                    MyAudio.AddCue2D(MySoundCuesEnum.GuiClick);\n                    //Checked = !Checked;\n                    //ret = true;\n                }\n            }\n            */\n\n            return ret;\n        }\n\n        public override void Draw()\n        {\n            base.Draw();\n        }\n\n    }\n\n    class MyGuiControlTabControl : /*MyGuiControlBase*/MyGuiControlParent\n    {\n        \n        Dictionary<int, MyGuiControlSimpleTabControl> m_tabs = new Dictionary<int, MyGuiControlSimpleTabControl>();\n\n        int m_selectedTab = 0;\n        Vector2 m_headSize;\n        Vector4 m_color;        \n        MyTexture2D m_selectedTexture;\n        MyTexture2D m_unSelectedTexture;\n\n        public MyGuiControlTabControl(IMyGuiControlsParent parent, Vector2 position, Vector2 size, Vector2 headSize, Vector4 color)\n            : base(parent, position, size, color, null, null)\n            //: base(parent, position, size, color, null, null, null, null, true)\n        {\n            m_headSize = headSize;\n            m_color = color;\n        }\n\n        \n        /*\n        public void SelectTab(int key)\n        {\n            if (m_selectedTab != key)\n            {\n                DeactivateControls(m_selectedTab);\n                ActivateControls(key);\n            }\n            m_selectedTab = key;\n        }\n        */\n\n        public MyGuiControlSimpleTabControl GetTabSubControl(int key)\n        {\n            if (!m_tabs.ContainsKey(key))\n            {\n                //m_tabs[key] = new MyGuiControlSimpleTabControl(m_parent, new Vector2(0, m_headSize.Y), new Vector2(1, 1 - m_headSize.Y), m_color);\n                m_tabs[key] = new MyGuiControlSimpleTabControl(this, new Vector2(0, m_headSize.Y), new Vector2(1, 1 - m_headSize.Y), m_color);\n                Controls.Add(m_tabs[key]);\n            }\n            return m_tabs[key];\n        }\n\n\n        public void ActivateTab(int key)\n        {\n            foreach (int i in m_tabs.Keys)\n            {\n                if (i == key)\n                {\n                    m_tabs[i].Visible = true;\n                }\n                else \n                {\n                    m_tabs[i].Visible = false;\n                }\n            }\n            m_selectedTab = key;\n        }\n\n\n\n        /*\n        private void DeactivateControls(int type)\n        {\n            foreach (var item in m_allControls[type])\n            {\n                m_parentScreen.Controls.Remove(item);\n            }\n        }\n\n        private void ActivateControls(int type)\n        {\n            foreach (var item in m_allControls[type])\n            {\n                m_parentScreen.Controls.Add(item);\n            }\n        }\n        */\n\n        /*\n        public void AddControl(int key, MyGuiControlBase screen)\n        {\n            \n            if (!m_allScreens.ContainsKey(key))\n            {\n                //m_allScreens[key] = new MyGuiScreenBase();\n            }\n\n            \n            if (!m_allControls[key].Contains(screen))\n            {\n                //assert\n                return;\n            }\n            \n            //check if we have control screen\n            //\n            m_allScreens[key].Controls.Add(screen);\n        }\n\n        public void RemoveControl(int key, MyGuiControlBase screen)\n        {\n\n            if (!m_allScreens.ContainsKey(key))\n            {\n                //assert\n                return;\n            }\n\n            m_allScreens[key].Controls.Remove(screen);\n        }\n        */\n\n        //returns mouse over tab head otherwise -1\n        private int GetMouseOverTab()\n        {\n            int count = m_tabs.Keys.Count;\n            int pos = 0;\n\n            foreach (int i in m_tabs.Keys)\n            {\n                Vector2 parentPos = m_parent.GetPositionAbsolute();\n                Vector2? parentSize = m_parent.GetSize();\n                parentPos -= parentSize.Value / 2;\n                Vector2 offsetPos = parentPos + pos * new Vector2(m_headSize.X * parentSize.Value.X / count, 0);\n                Vector2 tabHeadSize = new Vector2((m_headSize.X / (count)) * parentSize.Value.X, (m_headSize.Y) * parentSize.Value.Y);\n\n                Vector2 min = offsetPos;\n                Vector2 max = offsetPos + tabHeadSize;\n\n                if(((MyGuiManager.MouseCursorPosition.X >= min.X) && (MyGuiManager.MouseCursorPosition.X <= max.X) && (MyGuiManager.MouseCursorPosition.Y >= min.Y) && (MyGuiManager.MouseCursorPosition.Y <= max.Y)))\n                    return i;\n\n                pos++;\n            }\n\n            return -1;\n        }\n\n        public override bool HandleInput(MyGuiInput input, bool hasKeyboardActiveControl, bool hasKeyboardActiveControlPrevious, bool receivedFocusInThisUpdate)\n        {\n            bool ret = GetTabSubControl(m_selectedTab).HandleInput(input,hasKeyboardActiveControl, hasKeyboardActiveControlPrevious, receivedFocusInThisUpdate);\n            if (ret)\n                return true;\n            ret = base.HandleInput(input, hasKeyboardActiveControl, hasKeyboardActiveControlPrevious, receivedFocusInThisUpdate);\n            if (ret == false)\n            {\n                int tab = GetMouseOverTab();\n                if (tab != -1 && input.IsNewLeftMousePressed())\n                {\n\n                    MyAudio.AddCue2D(MySoundCuesEnum.GuiMouseClick);\n                    ActivateTab(tab);\n                    //m_selectedTab = tab;\n                    ret = true;\n                }\n            }\n\n            return ret;\n        }\n\n        public int GetSelectedTab()\n        {\n            return m_selectedTab;\n        }\n\n        public override void Draw()\n        {\n\n            \n            /*\n            int count = m_allToolTips.Keys.Count;\n            for (int c = 0; c < count; c++)\n            {\n                MyGuiManager.DrawSpriteBatch(m_selectedTexture, m_parentScreen.GetPosition() + m_position, m_size.Value,\n                    GetColorAfterTransitionAlpha(m_backgroundColor.Value), MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER);\n            }\n            */\n            //base.Draw();\n\n            //draw buttons on head with texts\n            int count = m_tabs.Keys.Count;\n            int pos = 0;\n\n            foreach (int i in m_tabs.Keys)\n            {\n                MyTexture2D buttonTexture = MyGuiManager.GetButtonTexture();\n                Vector2 parentPos = m_parent.GetPositionAbsolute();\n                Vector2 ?parentSize = m_parent.GetSize();\n                parentPos -= parentSize.Value/2;\n                Vector2 offsetPos = parentPos + pos * new Vector2(m_headSize.X * parentSize.Value.X / count, 0);\n                Vector2 tabHeadSize = new Vector2((m_headSize.X / (count)) * parentSize.Value.X, (m_headSize.Y) * parentSize.Value.Y);\n\n                bool isHighlight = GetMouseOverTab() == i || GetSelectedTab() == i;\n\n                bool isNotImplementedForbidenOrDisabled = /*!m_implementedFeature || m_accessForbiddenReason != null ||*/ !Enabled;\n                /*\n                bool isHighlighted = IsMouseOverOrKeyboardActive() &&\n                    (m_highlightType == MyGuiControlHighlightType.WHEN_ACTIVE || (m_highlightType == MyGuiControlHighlightType.WHEN_CURSOR_OVER && IsMouseOver()));\n                */\n                Vector4 backgroundColor = isNotImplementedForbidenOrDisabled ? MyGuiConstants.DISABLED_BUTTON_COLOR_VECTOR :\n                                         (isHighlight ? m_backgroundColor.Value * MyGuiConstants.CONTROL_MOUSE_OVER_BACKGROUND_COLOR_MULTIPLIER : m_backgroundColor.Value);\n                backgroundColor.W = 1.0f;\n                // Draw background texture\n                MyGuiManager.DrawSpriteBatch(buttonTexture, offsetPos, tabHeadSize * m_scale,\n                    new Color(backgroundColor), MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP);\n\n                \n\n                Vector4 textColor = isNotImplementedForbidenOrDisabled ? textColor = MyGuiConstants.DISABLED_BUTTON_TEXT_COLOR :\n                                   (( isHighlight ) ? m_color * MyGuiConstants.CONTROL_MOUSE_OVER_BACKGROUND_COLOR_MULTIPLIER : m_color);\n\n                StringBuilder text = new StringBuilder (GetTabSubControl(i).GetCaption());\n                if (text != null)\n                {\n                    Vector2 textPosition;\n                    MyGuiDrawAlignEnum textDrawAlign;\n\n                    textPosition = offsetPos + tabHeadSize/2;\n                    textDrawAlign = MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER;\n\n                    /*\n                    if (m_textAlignment == MyGuiControlButtonTextAlignment.CENTERED)\n                    {\n                        textPosition = m_parentScreen.GetPosition() + m_position;\n                        textDrawAlign = MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER;\n                    }\n                    else if (m_textAlignment == MyGuiControlButtonTextAlignment.LEFT)\n                    {\n                        //  This will move text few pixels from button's left border\n                        textPosition = m_parentScreen.GetPosition() + m_position - new Vector2(m_size.Value.X / 2.0f, 0) + new Vector2(MyGuiConstants.BUTTON_TEXT_OFFSET.X, 0);\n                        textDrawAlign = MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER;\n                    }\n                    else\n                    {\n                        throw new MyMwcExceptionApplicationShouldNotGetHere();\n                    }\n                    */\n\n                    MyGuiManager.DrawString(MyGuiManager.GetFontMinerWarsWhite(), text, textPosition, 1.2f/*m_textScale*/, GetColorAfterTransitionAlpha(textColor), textDrawAlign);\n                }\n                \n                pos++;\n            }\n\n            //base.Draw();\n            GetTabSubControl(m_selectedTab).Draw();\n        }\n\n    }\n}\n\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Core/MyGuiControlTextbox.cs",
    "content": "﻿using System;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWarsMath.Graphics;\nusing MinerWars.AppCode.Toolkit.Input;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Managers;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils.Utils;\nusing System.Collections.Generic;\n\n//  Textbox GUI control. Supports MaxLength. \n//  Supports horisontaly scrollable texts - if text is longer than textbox width, the text will scroll from left to right.\n//  This is accomplished by having sliding window and using stencil buffer to cut out invisible text - although it won't be optimal for extremely long texts.\n//  Vertical scroling is not yet supported. Also password asterisks are supported. Selection, copy-paste is not supported yet.\n\nnamespace MinerWars.AppCode.Game.GUI.Core\n{\n    enum MyGuiControlTextboxType : byte\n    {\n        NORMAL,\n        PASSWORD,\n        DIGITS_ONLY,\n    }\n\n    class MyGuiControlTextbox : MyGuiControlBase\n    {\n        class MyGuiControlTextboxKeyToString\n        {\n            public Keys Key;\n            public string Character;                //  Char/string when shift isn't pressed\n            public string CharacterWhenShift;       //  Char/string when shift IS pressed\n            public int LastKeyPressTime;            //  This is not for converting key to string, but for controling repeated key input with delay\n\n            public MyGuiControlTextboxKeyToString(Keys key, string character, string characterWhenShift)\n            {\n                Key = key;\n                Character = character;\n                CharacterWhenShift = characterWhenShift;\n                LastKeyPressTime = MyConstants.FAREST_TIME_IN_PAST;\n            }\n        }\n\n        static MyGuiControlTextboxKeyToString[] m_keyToString;\n\n        public EventHandler TextChanged;\n\n        Vector4 m_textColor;\n        float m_textScale;\n        string m_text;\n        int m_carriagePositionIndex;\n        int m_carriageBlinkerTimer;\n        int m_maxLength;\n        MyGuiControlTextboxType m_type;\n        Vector2 m_slidingWindowPosition;\n        bool m_formattedAlready;\n        bool m_drawBackground;\n\n        List<Toolkit.Input.Keys> m_pressedKeys = new List<Toolkit.Input.Keys>(10);\n\n        static MyGuiControlTextbox()\n        {\n            m_keyToString = new MyGuiControlTextboxKeyToString[MyMwcUtils.GetMaxValueFromEnum<Keys>() + 1];\n\n            //  First set all items to null so later we can assing individual strings only where we want (when we want to map key to string)\n            for (int i = 0; i < m_keyToString.Length; i++)\n            {\n                m_keyToString[i] = null;\n            }\n\n            //  This are here only for controling the delay in keypress\n            AddKey(Keys.Left, null, null);\n            AddKey(Keys.Right, null, null);\n            AddKey(Keys.Home, null, null);\n            AddKey(Keys.End, null, null);\n            AddKey(Keys.Delete, null, null);\n            AddKey(Keys.Back, null, null);\n\n            //  For converting key to string\n            AddKey(Keys.A, \"a\", \"A\");\n            AddKey(Keys.B, \"b\", \"B\");\n            AddKey(Keys.C, \"c\", \"C\");\n            AddKey(Keys.D, \"d\", \"D\");\n            AddKey(Keys.E, \"e\", \"E\");\n            AddKey(Keys.F, \"f\", \"F\");\n            AddKey(Keys.G, \"g\", \"G\");\n            AddKey(Keys.H, \"h\", \"H\");\n            AddKey(Keys.I, \"i\", \"I\");\n            AddKey(Keys.J, \"j\", \"J\");\n            AddKey(Keys.K, \"k\", \"K\");\n            AddKey(Keys.L, \"l\", \"L\");\n            AddKey(Keys.M, \"m\", \"M\");\n            AddKey(Keys.N, \"n\", \"N\");\n            AddKey(Keys.O, \"o\", \"O\");\n            AddKey(Keys.P, \"p\", \"P\");\n            AddKey(Keys.Q, \"q\", \"Q\");\n            AddKey(Keys.R, \"r\", \"R\");\n            AddKey(Keys.S, \"s\", \"S\");\n            AddKey(Keys.T, \"t\", \"T\");\n            AddKey(Keys.U, \"u\", \"U\");\n            AddKey(Keys.V, \"v\", \"V\");\n            AddKey(Keys.W, \"w\", \"W\");\n            AddKey(Keys.X, \"x\", \"X\");\n            AddKey(Keys.Y, \"y\", \"Y\");\n            AddKey(Keys.Z, \"z\", \"Z\");\n            AddKey(Keys.OemOpenBrackets, \"[\", \"{\");\n            AddKey(Keys.OemCloseBrackets, \"]\", \"}\");            \n            AddKey(Keys.Multiply, \"*\", \"*\");\n            AddKey(Keys.Subtract, \"-\", \"-\");            \n            AddKey(Keys.Add, \"+\", \"+\");\n            AddKey(Keys.Divide, \"/\", \"/\");\n            AddKey(Keys.NumPad0, \"0\", \"0\");\n            AddKey(Keys.NumPad1, \"1\", \"1\");\n            AddKey(Keys.NumPad2, \"2\", \"2\");\n            AddKey(Keys.NumPad3, \"3\", \"3\");\n            AddKey(Keys.NumPad4, \"4\", \"4\");\n            AddKey(Keys.NumPad5, \"5\", \"5\");\n            AddKey(Keys.NumPad6, \"6\", \"6\");\n            AddKey(Keys.NumPad7, \"7\", \"7\");\n            AddKey(Keys.NumPad8, \"8\", \"8\");\n            AddKey(Keys.NumPad9, \"9\", \"9\");\n            AddKey(Keys.Decimal, \".\", \".\");\n            AddKey(Keys.OemBackslash, \"\\\\\", \"|\");\n            AddKey(Keys.OemComma, \",\", \"<\");\n            AddKey(Keys.OemMinus, \"-\", \"_\");\n            AddKey(Keys.OemPeriod, \".\", \">\");\n            AddKey(Keys.OemPipe, \"\\\\\", \"|\");\n            AddKey(Keys.OemPlus, \"=\", \"+\");\n            AddKey(Keys.OemQuestion, \"/\", \"?\");\n            AddKey(Keys.OemQuotes, \"\\'\", \"\\\"\");\n            AddKey(Keys.OemSemicolon, \";\", \":\");\n            AddKey(Keys.OemTilde, \"`\", \"~\");\n            AddKey(Keys.Space, \" \", \" \");\n            AddKey(Keys.D0, \"0\", \")\");\n            AddKey(Keys.D1, \"1\", \"!\");\n            AddKey(Keys.D2, \"2\", \"@\");\n            AddKey(Keys.D3, \"3\", \"#\");\n            AddKey(Keys.D4, \"4\", \"$\");\n            AddKey(Keys.D5, \"5\", \"%\");\n            AddKey(Keys.D6, \"6\", \"^\");\n            AddKey(Keys.D7, \"7\", \"&\");\n            AddKey(Keys.D8, \"8\", \"*\");\n            AddKey(Keys.D9, \"9\", \"(\");            \n        }\n\n        public MyGuiControlTextbox(IMyGuiControlsParent parent, Vector2 position, MyGuiControlPreDefinedSize predefinedSize, string defaultText, int maxLength, Vector4 textColor, float textScale, MyGuiControlTextboxType type)\n            : this(parent, position, predefinedSize, defaultText, maxLength, textColor, textScale, type, true)\n        {\n        }\n\n        public MyGuiControlTextbox(IMyGuiControlsParent parent, Vector2 position, MyGuiControlPreDefinedSize predefinedSize, string defaultText, int maxLength, Vector4 textColor, float textScale, MyGuiControlTextboxType type, bool canHandleKeyboardActiveControl, bool drawBackground = true)\n            : base(parent, position, predefinedSize, drawBackground ? MyGuiConstants.BUTTON_BACKGROUND_COLOR : Color.Transparent.ToVector4(), null, drawBackground ? MyGuiManager.GetTextboxTexture(predefinedSize) : null, null, null, true)\n        {\n            Visible = true;\n            m_type = type;\n            m_size = GetPredefinedControlSize();\n            m_carriagePositionIndex = 0;\n            m_carriageBlinkerTimer = 0;\n            m_canHandleKeyboardActiveControl = canHandleKeyboardActiveControl;\n            m_textColor = MyGuiConstants.DEFAULT_CONTROL_NONACTIVE_COLOR;\n            m_textScale = textScale;\n            m_maxLength = maxLength;\n            m_slidingWindowPosition = GetTextAreaPosition();\n            Text = defaultText;\n        }\n\n        private void OnTextChanged()\n        {\n            if (TextChanged != null)\n            {\n                TextChanged(this, EventArgs.Empty);\n            }\n        }\n\n        static void AddKey(Keys key, string character, string characterWhenShift)\n        {\n            m_keyToString[(int)key] = new MyGuiControlTextboxKeyToString(key, character, characterWhenShift);\n        }\n\n        //  Corrects/fixes string so it will contain only characters that Textbox can display and handle\n        //  This method is slow, but I hope it's OK because it should be called only in textbox constructor and that's rare\n        string CorrectString(string original)\n        {\n            StringBuilder res = new StringBuilder(original.Length);\n\n            for (int i = 0; i < original.Length; i++)\n            {\n                //  Check if actual character is supported by textbox\n                bool found = false;\n                for (int j = 0; j < m_keyToString.Length; j++)\n                {\n                    if ((m_keyToString[j] != null) && (m_keyToString[j].Character != null) && (m_keyToString[j].CharacterWhenShift != null))\n                    {\n                        string orig = original[i].ToString();\n                        if ((orig == m_keyToString[j].Character) || (orig == m_keyToString[j].CharacterWhenShift))\n                        {\n                            found = true;\n                            break;\n                        }\n                    }\n                }\n\n                //  Add actual character to result\n                if (found == true)\n                {\n                    res.Append(original[i]);\n                }\n                else\n                {\n                    //  This is fall-back character in case we have found not supported character\n                    res.Append(MyGuiConstants.TEXTBOX_FALLBACK_CHARACTER);\n                }\n            }\n\n            return res.ToString();\n        }\n\n        bool IsEnoughDelay(Keys key, int forcedDelay)\n        {\n            MyGuiControlTextboxKeyToString keyEx = m_keyToString[(int)key];\n            if (keyEx == null) return true;\n\n            return ((MyMinerGame.TotalTimeInMilliseconds - keyEx.LastKeyPressTime) > forcedDelay);\n        }\n\n        //  Call this after some specified keypress was detected so we will make delay\n        void UpdateLastKeyPressTimes(Keys? key)\n        {\n            //  This will reset the counter so it starts blinking whenever we enter the textbox\n            //  And also when user presses a lot of keys, it won't blink for a while\n            m_carriageBlinkerTimer = 0;\n\n            //  Making delays between one long key press\n            if (key.HasValue)\n            {\n                MyGuiControlTextboxKeyToString keyEx = m_keyToString[(int)key];\n                if (keyEx != null)\n                {\n                    keyEx.LastKeyPressTime = MyMinerGame.TotalTimeInMilliseconds;\n                }\n            }\n        }\n\n        //  Call this every update, it will check if key as UNPRESSED (thus UP), and if yes, we will remove delay, so multiple \n        //  keypresses are possible fast, but not automatic. User must press DOWN/UP.\n        void ResetLastKeyPressTimes(MyGuiInput input)\n        {\n            for (int i = 0; i < m_keyToString.Length; i++)\n            {\n                MyGuiControlTextboxKeyToString keyEx = m_keyToString[i];\n                if (keyEx != null)\n                {\n                    if (input.IsKeyPress(keyEx.Key) == false)\n                    {\n                        keyEx.LastKeyPressTime = MyConstants.FAREST_TIME_IN_PAST;\n                    }\n                }\n            }            \n        }\n\n        public void MoveCartrigeToEnd()\n        {\n            m_carriagePositionIndex = m_text.Length;\n        }\n\n        //  Method returns true if input was captured by control, so no other controls, nor screen can use input in this update\n        public override bool HandleInput(MyGuiInput input, bool hasKeyboardActiveControl, bool hasKeyboardActiveControlPrevious, bool isThisFirstHandleInput)\n        {\n            if (!Visible)\n            {\n                return false;\n            }\n\n            bool ret = base.HandleInput(input, hasKeyboardActiveControl, hasKeyboardActiveControlPrevious, isThisFirstHandleInput);\n            \n            if (ret == false)\n            {\n                if ((IsMouseOver() == true) && (input.IsNewLeftMousePressed() == true))                    \n                {\n                    m_carriagePositionIndex = GetCarriagePositionFromMouseCursor();\n                    ret = true;\n                }\n\n                if ((m_hasKeyboardActiveControl == true) && (hasKeyboardActiveControlPrevious == false))\n                {\n                    UpdateLastKeyPressTimes(null);\n                }\n\n                if (hasKeyboardActiveControl == true)\n                {\n                    bool isShiftPressed = input.IsKeyPress(Keys.LeftShift) || input.IsKeyPress(Keys.RightShift);\n                    bool isCapsLockOn = (ushort)MyGuiInput.GetKeyState(0x14) == 1;\n\n                    //(deltaFromLastKeypress > MyGuiConstants.TEXTBOX_KEYPRESS_DELAY)\n                    //int deltaFromLastKeypress = MyMinerGame.TotalGameTime_Miliseconds - m_lastKeyPressTime;\n\n                    input.GetPressedKeys(m_pressedKeys);\n\n                    for (int i = 0; i < m_pressedKeys.Count; i++)\n                    {\n                        System.Diagnostics.Debug.Assert(input.IsKeyPress((Keys)m_pressedKeys[i]));\n                    }\n\n                    //  Transform pressed letters, characters, numbers, etc to real character/string\n                    for (int i = 0; i < m_pressedKeys.Count; i++)\n                    {\n                        bool tempShift = isShiftPressed;\n                        bool transformText = true;\n                        MyGuiControlTextboxKeyToString pressedKey = m_keyToString[(int)m_pressedKeys[i]];\n\n                        //Allow to enter only digits in case such textbox type is set\n                        if (m_type == MyGuiControlTextboxType.DIGITS_ONLY)\n                        {\n                            if ((pressedKey != null) && !input.IsKeyDigit(pressedKey.Key) && pressedKey.Key != Keys.OemPeriod && pressedKey.Key != Keys.Decimal)\n                            {\n                                transformText = false;\n                            }\n                        }\n\n                        if (transformText)  \n                        {\n                            //  If we have mapping from this key to string (that means it's allowed character)\n                            if (pressedKey != null && m_text.Length < m_maxLength && pressedKey.Character != null && pressedKey.CharacterWhenShift != null)\n                            {\n                                ret = true;\n                                if (IsEnoughDelay((Keys)m_pressedKeys[i], MyGuiConstants.TEXTBOX_CHANGE_DELAY))\n                                {\n                                    if (Char.IsLetter(pressedKey.Character, 0))\n                                    {\n                                        if (isCapsLockOn)\n                                            tempShift = !tempShift;//carefull here variable is not used anymore so we can invert it\n                                        \n                                    }\n                                    m_text = m_text.Insert(m_carriagePositionIndex, (tempShift == true) ? pressedKey.CharacterWhenShift : pressedKey.Character);\n                                \n                                    m_carriagePositionIndex++;\n                                    UpdateLastKeyPressTimes((Keys)m_pressedKeys[i]);\n\n                                    OnTextChanged();\n                                }\n                            }\n                        }\n                    }\n\n                    //  Move left\n                    if ((input.IsKeyPress(Keys.Left)) && (IsEnoughDelay(Keys.Left, MyGuiConstants.TEXTBOX_MOVEMENT_DELAY)))\n                    {\n                        m_carriagePositionIndex--;\n                        if (m_carriagePositionIndex < 0) m_carriagePositionIndex = 0;\n                        UpdateLastKeyPressTimes(Keys.Left);\n                    }\n\n                    //  Move right\n                    if ((input.IsKeyPress(Keys.Right)) && (IsEnoughDelay(Keys.Right, MyGuiConstants.TEXTBOX_MOVEMENT_DELAY)))\n                    {\n                        m_carriagePositionIndex++;\n                        if (m_carriagePositionIndex > m_text.Length) m_carriagePositionIndex = m_text.Length;\n                        UpdateLastKeyPressTimes(Keys.Right);\n                    }\n\n                    //  Move home\n                    if ((input.IsNewKeyPress(Keys.Home)) && (IsEnoughDelay(Keys.Home, MyGuiConstants.TEXTBOX_MOVEMENT_DELAY)))\n                    {\n                        m_carriagePositionIndex = 0;\n                        UpdateLastKeyPressTimes(Keys.Home);\n                    }\n\n                    //  Move end\n                    if ((input.IsNewKeyPress(Keys.End)) && (IsEnoughDelay(Keys.End, MyGuiConstants.TEXTBOX_MOVEMENT_DELAY)))\n                    {\n                        m_carriagePositionIndex = m_text.Length;\n                        UpdateLastKeyPressTimes(Keys.End);\n                    }\n\n                    //  Delete\n                    if ((input.IsKeyPress(Keys.Delete)) && (IsEnoughDelay(Keys.Delete, MyGuiConstants.TEXTBOX_MOVEMENT_DELAY)))\n                    {\n                        if (m_carriagePositionIndex < m_text.Length)\n                        {\n                            m_text = m_text.Remove(m_carriagePositionIndex, 1);\n                            UpdateLastKeyPressTimes(Keys.Delete);\n\n                            OnTextChanged();\n                        }\n                    }\n\n                    //  Backspace\n                    if ((input.IsKeyPress(Keys.Back)) && (IsEnoughDelay(Keys.Back, MyGuiConstants.TEXTBOX_MOVEMENT_DELAY)))\n                    {\n                        if (m_carriagePositionIndex > 0)\n                        {\n                            // Handle text scrolling, basicaly try hold carriage on same position in textBox window (avoid textBox with hidden characters)\n                            var carriagePositionChange = GetCarriagePosition(m_carriagePositionIndex) - GetCarriagePosition(m_carriagePositionIndex-1); ;\n                            var textAreaPosition = GetTextAreaPosition();\n                            if (m_slidingWindowPosition.X - carriagePositionChange.X >= textAreaPosition.X)\n                            {\n                                m_slidingWindowPosition.X -= carriagePositionChange.X;\n                            }\n                            else\n                            {\n                                m_slidingWindowPosition.X = textAreaPosition.X;\n                            }\n\n                            m_text = m_text.Remove(m_carriagePositionIndex - 1, 1);\n                            m_carriagePositionIndex--;\n                            UpdateLastKeyPressTimes(Keys.Back);\n\n                            OnTextChanged();\n                        }\n                    }\n\n                    ResetLastKeyPressTimes(input);\n                    m_formattedAlready = false;\n                }\n                else\n                {\n                    if (m_type == MyGuiControlTextboxType.DIGITS_ONLY && m_formattedAlready == false && !string.IsNullOrEmpty(m_text))\n                    {\n                        var number = MyValueFormatter.GetDecimalFromString(m_text, 1);\n                        int decimalDigits = (number - (int)number > 0) ? 1 : 0;\n                        m_text = MyValueFormatter.GetFormatedFloat((float)number, decimalDigits, \"\");\n                        m_carriagePositionIndex = m_text.Length;\n                        m_formattedAlready = true;\n                    }\n                }\n            }\n\n            return ret;\n        }\n\n        //  After user clicks on textbox, we will try to set carriage position where the cursor is\n        int GetCarriagePositionFromMouseCursor()\n        {\n            UpdateSlidingWindowPosition();\n            Vector2 textAreaPosition = GetTextAreaPosition();\n            float slidingWindowPositionDeltaX = m_slidingWindowPosition.X - textAreaPosition.X;\n\n            int closestIndex = 0;\n            float closestDistance = float.MaxValue;\n\n            for (int i = 0; i <= m_text.Length; i++)\n            {\n                float charPositionX = GetCarriagePosition(i).X - slidingWindowPositionDeltaX;\n                float charDistance = Math.Abs(MyGuiManager.MouseCursorPosition.X - charPositionX);\n                //m_slidingWindowPosition\n                if (charDistance < closestDistance)\n                {\n                    closestDistance = charDistance;\n                    closestIndex = i;\n                }\n            }\n\n            return closestIndex;\n        }\n\n        Vector2 GetTextAreaSize()\n        {\n            float multiplier = (this.m_predefinedSize == MyGuiControlPreDefinedSize.LONGMEDIUM ? 1.3f : 1);\n            return m_size.Value - 2 * MyGuiConstants.TEXTBOX_TEXT_OFFSET * multiplier;\n        }\n\n        Vector2 GetTextAreaPosition()\n        {\n            float multiplier = (this.m_predefinedSize == MyGuiControlPreDefinedSize.LONGMEDIUM ? 1.3f : 1);\n            return m_parent.GetPositionAbsolute() + m_position + new Vector2(-m_size.Value.X / 2.0f, 0) + MyGuiConstants.TEXTBOX_TEXT_OFFSET * multiplier;\n        }\n\n        //  Converts carriage (or just char) position to normalized coordinates\n        Vector2 GetCarriagePosition(int index)\n        {\n            string leftFromCarriageText = GetTextByType().Substring(0, index);\n            Vector2 leftFromCarriageSize = MyGuiManager.GetNormalizedSize(MyGuiManager.GetFontMinerWarsBlue(), new StringBuilder(leftFromCarriageText), m_textScale);\n            return GetTextAreaPosition() + new Vector2(leftFromCarriageSize.X, 0);\n        }\n\n        //  If type of textbox is password, this method returns asterisk. Otherwise original text.\n        string GetTextByType()\n        {\n            if (m_type == MyGuiControlTextboxType.NORMAL || m_type == MyGuiControlTextboxType.DIGITS_ONLY)\n            {\n                return m_text;\n            }\n            else if (m_type == MyGuiControlTextboxType.PASSWORD)\n            {\n                return new String('*', m_text.Length);\n            }\n            else\n            {\n                throw new MyMwcExceptionApplicationShouldNotGetHere();\n            }\n        }\n\n        //  changes type of this textbox (password/text)\n        public void ChangeMyType(MyGuiControlTextboxType type)\n        {\n            m_type = type;\n        }\n\n        //  When setting text to textbox, make sure you won't set it to unsuported charact\n        public string Text\n        {\n            get\n            {\n                return m_text;\n            }\n\n            set\n            {\n                //  Fix text so it will contain only allowed characters and reduce it if it's too long\n                m_text = CorrectString(value.Substring(0, (value.Length > m_maxLength) ? m_maxLength : value.Length));\n                if (m_carriagePositionIndex >= m_text.Length) \n                {\n                    m_carriagePositionIndex = m_text.Length;\n                }\n                \n                OnTextChanged();\n            }\n        }\n\n        //  If carriage is in current sliding window, then we don't change it. If it's over its left or right borders, we move sliding window.\n        //  Of course on on X axis, Y is ignored at all.\n        //  This method could be called from Update() or Draw() - it doesn't matter now\n        void UpdateSlidingWindowPosition()\n        {\n            Vector2 carriagePosition = GetCarriagePosition(m_carriagePositionIndex);\n            Vector2 textAreaPosition = GetTextAreaPosition();\n            Vector2 textAreaSize = GetTextAreaSize();\n\n            float rightBorderX = textAreaPosition.X + textAreaSize.X;\n\n            if (carriagePosition.X < m_slidingWindowPosition.X)\n            {\n                m_slidingWindowPosition.X = carriagePosition.X;\n            }\n            else if (carriagePosition.X > (m_slidingWindowPosition.X + textAreaSize.X))\n            {\n                m_slidingWindowPosition.X = carriagePosition.X - textAreaSize.X;\n            }\n        }\n\n        public override void Draw()\n        {\n            if (!Visible)\n            {\n                return;\n            }\n\n            base.Draw();\n\n            Vector2 textAreaSize = GetTextAreaSize();\n            Vector2 textAreaPosition = GetTextAreaPosition();\n            Vector4 tempTextColor = (IsMouseOverOrKeyboardActive() == false) ? m_textColor : m_textColor * MyGuiConstants.CONTROL_MOUSE_OVER_BACKGROUND_COLOR_MULTIPLIER;\n            Vector2 carriagePosition = GetCarriagePosition(m_carriagePositionIndex);\n\n            //  End our standard sprite batch\n            MyGuiManager.EndSpriteBatch();\n\n            //  Draw the rectangle to stencil buffer, so later when we draw, only pixels with stencil=1 will be rendered\n            //  Textbox interior must be increased by 1 pixel in all four directions (thus adding 2.0 to its height and width - because it's centered).\n            //  Otherwise stencil would cut out something from textbox interior.\n            MyGuiManager.DrawStencilMaskRectangle(new MyRectangle2D(textAreaPosition + new Vector2(textAreaSize.X / 2.0f, 0), \n                textAreaSize + MyGuiManager.GetNormalizedSizeFromScreenSize(new Vector2(2.0f, 2.0f))), MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER);\n\n            //  Set up the stencil operation and parameters\n            MyGuiManager.BeginSpriteBatch_StencilMask();\n\n            UpdateSlidingWindowPosition();\n            float slidingWindowPositionDeltaX = m_slidingWindowPosition.X - textAreaPosition.X;\n\n            //  Show \"sliding window\" rectangle - only for debugging\n            //MyGuiManager.DrawSpriteBatch(MyGuiManager.GetBlankTexture(), m_slidingWindowPosition, textAreaSize, \n            //    GetColorAfterTransitionAlpha(new Vector4(0, 1, 0, 0.3f)), MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER);\n\n            //  Draw text in textbox\n            MyGuiManager.DrawString(MyGuiManager.GetFontMinerWarsBlue(), new StringBuilder(GetTextByType()), new Vector2(textAreaPosition.X - slidingWindowPositionDeltaX, textAreaPosition.Y),\n                m_textScale, GetColorAfterTransitionAlpha(tempTextColor), MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER);\n\n            //  Draw carriage line\n            //  Carriage blinker time is solved here in Draw because I want to be sure it will be drawn even in low FPS\n            if (m_hasKeyboardActiveControl == true)\n            {\n                //  This condition controls \"blinking\", so most often is carrier visible and blinks very fast\n                //  It also depends on FPS, but as we have max FPS set to 60, it won't go faster, nor will it omit a \"blink\".\n                int carriageInterval = m_carriageBlinkerTimer % 20;\n                if ((carriageInterval >= 0) && (carriageInterval <= 15))\n                {\n                    MyGuiManager.DrawSpriteBatch(MyGuiManager.GetBlankTexture(), new Vector2(carriagePosition.X - slidingWindowPositionDeltaX, carriagePosition.Y), 1, m_size.Value.Y * 0.5f,\n                        GetColorAfterTransitionAlpha(tempTextColor), MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER);\n                }\n            }\n            m_carriageBlinkerTimer++;\n\n            //  End stencil-mask batch, and restart the standard sprite batch\n            //MyGuiManager.EndSpriteBatch();\n            MyGuiManager.EndSpriteBatch_StencilMask();\n            //MyGuiManager.BeginSpriteBatch_StencilMask();\n            MyGuiManager.BeginSpriteBatch();\n        }\n\n        protected override Vector2 GetPredefinedControlSize()\n        {\n            Vector2 size = Vector2.Zero;\n            if (m_predefinedSize.HasValue)\n            {\n                if (m_predefinedSize == MyGuiControlPreDefinedSize.LARGE)\n                {\n                    size = MyGuiConstants.TEXTBOX_LARGE_SIZE;\n                }\n                else if (m_predefinedSize == MyGuiControlPreDefinedSize.MEDIUM)\n                {\n                    size = MyGuiConstants.TEXTBOX_MEDIUM_SIZE;\n                }\n                else if (m_predefinedSize == MyGuiControlPreDefinedSize.LONGMEDIUM)\n                {\n                    size = MyGuiConstants.TEXTBOX_MEDIUM_LONG_SIZE;\n                }\n                else\n                {\n                    size = MyGuiConstants.TEXTBOX_SMALL_SIZE;\n                }\n            }\n\n            return size;\n        }        \n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Core/MyGuiControlTreeView.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Toolkit.Input;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWarsMath.Graphics;\nusing System.Diagnostics;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.AppCode.Game.GUI.Core.TreeView;\n\nnamespace MinerWars.AppCode.Game.GUI.Core\n{\n    class MyGuiControlTreeView : MyGuiControlBase, ITreeView\n    {\n        //public bool Visible;\n        public bool WholeRowHighlight;\n\n        private Vector4 m_treeBackgroundColor;\n        private MyTreeView m_treeView;\n\n        public MyGuiControlTreeView(\n            IMyGuiControlsParent parent,\n            Vector2 position,\n            Vector2 size,\n            Vector4 backgroundColor,\n            bool canHandleKeyboardActiveControl)\n            : base(parent, position, size, null, null)\n        {\n            Visible = true;\n\n            m_treeBackgroundColor = backgroundColor;\n            m_canHandleKeyboardActiveControl = canHandleKeyboardActiveControl;\n\n            m_treeView = new MyTreeView(this, m_parent.GetPositionAbsolute() + m_position - m_size.Value / 2, m_size.Value);\n        }\n\n        public MyTreeViewItem AddItem(StringBuilder text, MyTexture2D icon, Vector2 iconSize, MyTexture2D expandIcon, MyTexture2D collapseIcon, Vector2 expandIconSize)\n        {\n            return m_treeView.AddItem(text, icon, iconSize, expandIcon, collapseIcon, expandIconSize);\n        }\n\n        public void DeleteItem(MyTreeViewItem item)\n        {\n            m_treeView.DeleteItem(item);\n        }\n\n        public MyTreeViewItem GetFocusedItem()\n        {\n            return m_treeView.FocusedItem;\n        }\n\n        public void ClearItems()\n        {\n            m_treeView.ClearItems();\n        }\n\n        public override void Draw()\n        {\n            if (Visible)\n            {\n                //MyGUIHelper.FillRectangle(m_parent.GetPositionAbsolute() + m_position - m_size.Value / 2, m_size.Value, GetColorAfterTransitionAlpha(m_treeBackgroundColor));\n\n                m_treeView.Layout();\n                m_treeView.Draw();\n            }\n            else\n            {\n                ShowToolTip(null);\n            }\n\n            base.Draw();\n        }\n\n        public override bool HandleInput(MyGuiInput input, bool hasKeyboardActiveControl, bool hasKeyboardActiveControlPrevious, bool receivedFocusInThisUpdate)\n        {\n            bool captureInput = base.HandleInput(input, hasKeyboardActiveControl, hasKeyboardActiveControlPrevious, receivedFocusInThisUpdate);\n\n            if (!captureInput && Visible)\n            {\n                captureInput = m_treeView.HandleInput(input, hasKeyboardActiveControl, hasKeyboardActiveControlPrevious,\n                                       receivedFocusInThisUpdate);\n\n                m_hasKeyboardActiveControl = captureInput;\n            }\n\n            return captureInput;\n        }\n\n        public void ShowToolTip(MyToolTips tooltip)\n        {\n            m_showToolTip = false;\n            m_toolTip = tooltip;\n            ShowToolTip();\n        }\n\n        public MyTreeViewItem GetItem(int index)\n        {\n            return m_treeView.GetItem(index);\n        }\n\n        public MyTreeViewItem GetItem(StringBuilder name)\n        {\n            return m_treeView.GetItem(name);\n        }\n\n        public int GetItemCount()\n        {\n            return m_treeView.GetItemCount();\n        }\n\n        public override void SetPosition(Vector2 position)\n        {\n            m_position = position;\n            m_treeView.SetPosition(m_parent.GetPositionAbsolute() + m_position - m_size.Value / 2);\n        }\n\n        public void SetSize(Vector2 size)\n        {\n            m_size = size;\n            m_treeView.SetPosition(m_parent.GetPositionAbsolute() + m_position - m_size.Value / 2);\n            m_treeView.SetSize(size);\n        }\n\n        public override bool ContainsMouse()\n        {\n            return Visible && base.ContainsMouse();\n        }\n\n        public void FilterTree(Predicate<MyTreeViewItem> itemFilter)\n        {\n            MyTreeView.FilterTree(this, itemFilter);\n        }\n    }\n\n    interface ITreeView\n    {\n        int GetItemCount();\n        MyTreeViewItem GetItem(int index);\n    }\n\n    class MyGUIHelper\n    {\n        public static bool Contains(Vector2 position, Vector2 size, float x, float y)\n        {\n            return x >= position.X && y >= position.Y &&\n                    x <= position.X + size.X && y <= position.Y + size.Y;\n        }\n\n        public static bool Intersects(Vector2 aPosition, Vector2 aSize, Vector2 bPosition, Vector2 bSize)\n        {\n            return\n                !((aPosition.X > bPosition.X && aPosition.X > bPosition.X + bSize.X) ||\n                  (aPosition.X + aSize.X < bPosition.X && aPosition.X + aSize.X < bPosition.X + bSize.X) ||\n                  (aPosition.Y > bPosition.Y && aPosition.Y > bPosition.Y + bSize.Y) ||\n                  (aPosition.Y + aSize.Y < bPosition.Y && aPosition.Y + aSize.Y < bPosition.Y + bSize.Y));\n        }\n\n        public static void FillRectangle(Vector2 position, Vector2 size, Color color)\n        {\n            Vector2 screenPosition = MyGuiManager.GetScreenCoordinateFromNormalizedCoordinate(position);\n            var a = new Point((int)screenPosition.X, (int)screenPosition.Y);\n\n            // for precission\n            Vector2 screenPositionDownRight = MyGuiManager.GetScreenCoordinateFromNormalizedCoordinate(position + size);\n            var b = new Point((int)screenPositionDownRight.X, (int)screenPositionDownRight.Y);\n\n            MyGuiManager.DrawSpriteBatch(MyGuiManager.GetBlankTexture(), a.X, a.Y, b.X - a.X, b.Y - a.Y, color);\n        }\n\n        private static void OffsetInnerBorder(Vector2 normalizedPosition, Vector2 normalizedSize, int pixelWidth, int offset, Color color,\n            bool top = true, bool bottom = true, bool left = true, bool right = true, Vector2? normalizedOffset = null)\n        {\n            Vector2 screenPosition = MyGuiManager.GetScreenCoordinateFromNormalizedCoordinate(normalizedPosition - (normalizedOffset.HasValue ? normalizedOffset.Value : Vector2.Zero));\n            var a = new Point((int)screenPosition.X - offset, (int)screenPosition.Y - offset);\n\n            // for precission\n            Vector2 screenPositionDownRight = MyGuiManager.GetScreenCoordinateFromNormalizedCoordinate(normalizedPosition + normalizedSize + (normalizedOffset.HasValue ? normalizedOffset.Value : Vector2.Zero));\n            var b = new Point((int)screenPositionDownRight.X + offset, (int)screenPositionDownRight.Y + offset);\n\n            if (top)\n                MyGuiManager.DrawSpriteBatch(MyGuiManager.GetBlankTexture(),\n                    a.X, a.Y, b.X - a.X, pixelWidth, color);                   // Top\n            if (bottom)\n                MyGuiManager.DrawSpriteBatch(MyGuiManager.GetBlankTexture(),\n                    a.X, b.Y - pixelWidth, b.X - a.X, pixelWidth, color);      // Bottom\n            if (left)\n                MyGuiManager.DrawSpriteBatch(MyGuiManager.GetBlankTexture(),\n                    a.X, a.Y + (top ? pixelWidth : 0), pixelWidth, b.Y - a.Y - (bottom ? pixelWidth : 0) - (top ? pixelWidth : 0), color);                 // Left\n            if (right)\n                MyGuiManager.DrawSpriteBatch(MyGuiManager.GetBlankTexture(),\n                    b.X - pixelWidth, a.Y + (top ? pixelWidth : 0), pixelWidth, b.Y - a.Y - (bottom ? pixelWidth : 0) - (top ? pixelWidth : 0), color);     // Right\n        }\n\n        public static void OutsideBorder(Vector2 normalizedPosition, Vector2 normalizedSize, int pixelWidth, Color color,\n            bool top = true, bool bottom = true, bool left = true, bool right = true)\n        {\n            OffsetInnerBorder(normalizedPosition, normalizedSize, pixelWidth, pixelWidth, color, top, bottom, left, right);\n        }\n\n        public static void InsideBorder(Vector2 normalizedPosition, Vector2 normalizedSize, int pixelWidth, Color color,\n            bool top = true, bool bottom = true, bool left = true, bool right = true)\n        {\n            OffsetInnerBorder(normalizedPosition, normalizedSize, pixelWidth, 0, color, top, bottom, left, right);\n        }\n\n        public static void Border(Vector2 normalizedPosition, Vector2 normalizedSize, int pixelWidth, Color color,\n            bool top = true, bool bottom = true, bool left = true, bool right = true, Vector2? normalizedOffset = null)\n        {\n            OffsetInnerBorder(normalizedPosition, normalizedSize, 2 * pixelWidth, pixelWidth, color, top, bottom, left, right, normalizedOffset);\n        }\n\n        public static Vector2 GetOffset(Vector2 basePosition, Vector2 baseSize, Vector2 itemPosition, Vector2 itemSize)\n        {\n            float x = 0;\n            float y = 0;\n\n            if (baseSize.X > itemSize.X)\n            {\n                if (basePosition.X + baseSize.X < itemPosition.X + itemSize.X)\n                {\n                    x = basePosition.X + baseSize.X - (itemPosition.X + itemSize.X);\n                }\n\n                if (basePosition.X > itemPosition.X)\n                {\n                    x = basePosition.X - itemPosition.X;\n                }\n            }\n\n            if (baseSize.Y > itemSize.Y)\n            {\n                if (basePosition.Y + baseSize.Y < itemPosition.Y + itemSize.Y)\n                {\n                    y = basePosition.Y + baseSize.Y - (itemPosition.Y + itemSize.Y);\n                }\n\n                if (basePosition.Y > itemPosition.Y)\n                {\n                    y = basePosition.Y - itemPosition.Y;\n                }\n            }\n\n            return new Vector2(x, y);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Core/MyGuiControlWheelControl.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Toolkit.Input;\nusing MinerWars.AppCode.Game.Managers;\nusing MinerWarsMath.Graphics;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Localization;\n\nnamespace MinerWars.AppCode.Game.GUI.Core\n{\n    class MyGuiControlWheelControl : MyGuiControlBase\n    {\n        //bool m_visible;\n        int m_selected;\n        int m_first;\n        Vector2 m_mousePositionLast;\n        int? m_mouseWheelValueLast = null;\n        const int ITEM_COUNT = 13;\n        const float ITEM_HEIGHT = 0.044f;\n        const float BUTTON_HEIGHT = 0.025f;\n        const float BUTTON_VERTICAL_DIFF = 0.015f;\n        const float SLIDER_WIDTH = 0.0f; // <-make it zero size, else 0.0125f;\n        const float TOTAL_WIDTH = 0.25f;\n        const float FOG_TOTAL_WIDTH = TOTAL_WIDTH * 0.9f;\n        const float TEXT_SCALE = 0.83f;\n        const float BACKGROUND_FOG_HEIGHT_MULTILPIER = 1.66999936f;\n        const float BACKGROUND_FOG_FADE_HEIGHT_MULTILPIER = 3.0f;\n        MyPhysObjectSmallShipConfigItem[] m_displayedItems = new MyPhysObjectSmallShipConfigItem[ITEM_COUNT];\n\n        private static readonly Vector2 itemSize = new Vector2(530 / 1600f, 35 / 1200f);\n\n        int m_itemsCount;\n        bool m_isMouseOnItem;\n        bool m_isMouseOnUpButton;\n        bool m_isMouseOnDownButton;\n        float? m_mouseScrollbarDragStartY = null;\n        \n        //public bool IsVisible { get { return m_visible; } }\n        public bool IsEnable { get; set; }\n\n\n        private MyTexture2D m_backgroundtexture;\n        //private MyTexture2D m_smallBg;\n        private MyTexture2D m_smallBgHover;\n\n\n        public MyGuiControlWheelControl(IMyGuiControlsParent parent)\n            : base(parent, new Vector2(0.5f, 0.5f), new Vector2(1,1), null, null)\n        {\n            Visible = false;\n            m_selected = 0;\n            m_first = 0;\n            m_size = new Vector2(673/1600f, 910/1200f);\n        }\n\n\n        public override bool Visible\n        {\n            get\n            {\n                return base.Visible;\n            }\n            set\n            {\n                base.Visible = value;\n                if (value)\n                {\n                    LoadTextures();\n                }\n                else\n                {\n                    UnloadTextures();\n                }\n            }\n        }\n\n\n        private void LoadTextures()\n        {\n            m_backgroundtexture = MyGuiManager.GetConfigWheelBackground();\n            m_smallBgHover = MyGuiManager.GetConfigWheelHover();\n            //m_smallBg = MyGuiManager.GetConfigWheelBackgroundSmall();\n        }\n\n        private void UnloadTextures()\n        {\n            MyTextureManager.UnloadTexture(m_backgroundtexture);\n            MyTextureManager.UnloadTexture(m_smallBgHover);\n        }\n\n        public override bool HandleInput(MyGuiInput input, bool hasKeyboardActiveControl, bool hasKeyboardActiveControlPrevious, bool receivedFocusInThisUpdate)\n        {\n            //If this control is not enable, do nothing\n            if (!IsEnable) return false;\n\n            if (Visible)\n            {\n                if (((input.IsKeyPress(Keys.LeftShift) || input.IsKeyPress(Keys.RightShift)) && input.IsNewKeyPress(Keys.Tab)) || input.IsNewKeyPress(Keys.Up) || input.IsNewGamepadKeyUpPressed())\n                    SelectPrev();\n                if ((!(input.IsKeyPress(Keys.LeftShift) || input.IsKeyPress(Keys.RightShift)) && input.IsNewKeyPress(Keys.Tab)) || input.IsNewKeyPress(Keys.Down) || input.IsNewGamepadKeyDownPressed())\n                    SelectNext();\n                if (input.IsNewKeyPress(Keys.Escape) || input.IsJoystickButtonNewPressed(MyJoystickButtonsEnum.J02))\n                    HideScreenIfPossible();\n\n                if (m_displayedItems[m_selected] != null)\n                {\n                    if (input.IsNewKeyPress(Keys.Left) || input.IsNewGamepadKeyLeftPressed())\n                        m_displayedItems[m_selected].ChangeValueDown();\n                    if (input.IsNewKeyPress(Keys.Right) || input.IsNewGamepadKeyRightPressed())\n                        m_displayedItems[m_selected].ChangeValueUp();\n                    if (input.IsNewKeyPress(Keys.Enter) || input.IsNewKeyPress(Keys.Space) || input.IsJoystickButtonNewPressed(MyJoystickButtonsEnum.J01))\n                        m_displayedItems[m_selected].ChangeValueUp();\n                }\n                \n                HandleMouse(input);\n            }\n\n            if (input.IsNewGameControlPressed(MyGameControlEnums.WHEEL_CONTROL))\n            {\n                m_first = 0;\n                Visible = !Visible;\n                if (Visible == false)\n                {\n                    MyAudio.AddCue2D(MySoundCuesEnum.GuiWheelControlClose);\n                }\n                else\n                {\n                    MyAudio.AddCue2D(MySoundCuesEnum.GuiWheelControlOpen);\n                }\n            }\n\n            return base.HandleInput(input, hasKeyboardActiveControl, hasKeyboardActiveControlPrevious, receivedFocusInThisUpdate);\n        }\n\n\n        public void HideScreenIfPossible()\n        {\n            m_first = 0;\n            if (Visible)\n                MyAudio.AddCue2D(MySoundCuesEnum.GuiWheelControlClose);\n            Visible = false;\n        }\n\n\n        private void SelectNext()\n        {\n            if (m_selected >= m_displayedItems.Length - 1 && m_first + m_displayedItems.Length >= m_itemsCount) return;\n            if (m_selected >= m_displayedItems.Length - 1)\n                m_first++;\n            else\n                m_selected++;\n\n            if (m_displayedItems[m_selected] == null)\n            {\n                SelectNext();\n            }\n        }\n\n        private void SelectPrev()\n        {\n            if (m_selected <= 0 && m_first <= 0) return;\n            if (m_selected <= 0)\n                m_first--;\n            else\n                m_selected--;\n\n            if (m_displayedItems[m_selected] == null)\n            {\n                SelectPrev();\n            }\n        }\n\n        //private bool MoveNext()\n        //{\n        //    if (m_first + ITEM_COUNT >= m_itemsCount) \n        //        return false;\n        //    m_first++;\n        //    if (m_selected > 0) m_selected--;\n        //    return true;\n        //}\n\n        //private bool MovePrev()\n        //{\n        //    if (m_first <= 0) \n        //        return false;\n        //    m_first--;\n        //    if (m_selected < ITEM_COUNT - 1) m_selected++;\n        //    return true;\n        //}\n\n        public override void \n            Draw()\n        {\n            if (!Visible || MySession.PlayerShip == null) return;\n\n            MySession.PlayerShip.Config.Items(ref m_displayedItems);\n\n            MyGuiManager.BeginSpriteBatch();\n\n            var offset = new Vector2(VideoMode.MyVideoModeManager.IsTripleHead() ? -1 : 0, 0);\n\n            //Draw background\n            MyGuiManager.DrawSpriteBatch(m_backgroundtexture,\n                new Vector2(0.5f,0.5f) + offset,\n                m_size.Value, Color.White,\n                MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER);\n\n            //Draw items\n            for (int i = 0, j = 0; i < m_displayedItems.Length; i++)\n            {\n                if (m_displayedItems[i] == null) continue;\n                if (m_selected == i)\n                {\n                    var pos = new Vector2(0.5f , m_position.Y - (ITEM_HEIGHT * m_displayedItems.Length / 2) + (ITEM_HEIGHT * j) - 0.003f);\n                    MyGuiManager.DrawSpriteBatch(m_smallBgHover, pos + offset, itemSize,\n                            Color.White, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_TOP);\n                }\n\n\n                //Draw item name\n                var nameWithKey = new StringBuilder().Append(m_displayedItems[i].Name);\n                MyGameControlEnums? control = m_displayedItems[i].AssociatedControl;\n                if (control != null)\n                {\n                    string key = MyGuiManager.GetInput().GetGameControlTextEnum(control.Value);\n                    if (key != MyTextsWrapper.Get(MyTextsWrapperEnum.UnknownControl).ToString())\n                    {\n                        nameWithKey.Append(\" (\").Append(key).Append(\")\");\n                    }\n                }\n\n                MyGuiManager.DrawString(MyGuiManager.GetFontMinerWarsBlue(), nameWithKey,\n                    new Vector2(m_position.X - (TOTAL_WIDTH / 2) - 0.02f, m_position.Y - (ITEM_HEIGHT * m_displayedItems.Length / 2) + (ITEM_HEIGHT * j)) + offset,\n                    TEXT_SCALE, Color.White, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP);\n\n\n                //Draw item value bg \n                var smallBgSize = MyGuiManager.GetNormalizedSizeFromScreenSize(MyGuiManager.GetFontMinerWarsGreen().MeasureString(m_displayedItems[i].CurrentValueText, TEXT_SCALE));\n                if (smallBgSize.LengthSquared() > 0.00f)\n                {\n                    var bgPos = new Vector2(m_position.X + (TOTAL_WIDTH / 2) - SLIDER_WIDTH + 0.01f - smallBgSize.X / 2 , m_position.Y - (ITEM_HEIGHT * m_displayedItems.Length / 2) + (ITEM_HEIGHT * j) - 0.003f);\n                    smallBgSize.Y = itemSize.Y;\n                    smallBgSize.X *= 1.6f;\n                    MyGuiManager.DrawSpriteBatch(m_smallBgHover, bgPos + offset, smallBgSize, new Color(255, 255, 255, 200), MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_TOP);\n                }\n\n                //draw item\n                MyGuiManager.DrawString(MyGuiManager.GetFontMinerWarsGreen(), m_displayedItems[i].CurrentValueText,\n                    new Vector2(m_position.X + (TOTAL_WIDTH / 2) - SLIDER_WIDTH + 0.01f, m_position.Y - (ITEM_HEIGHT * m_displayedItems.Length / 2) + (ITEM_HEIGHT * j)) + offset,\n                    TEXT_SCALE, Color.White, MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_TOP);\n\n                j++;\n            }\n\n            /*\n            //Draw top button\n            if (IsUpButtonVisible)\n            {\n                MyGuiManager.DrawSpriteBatch(MyGuiManager.GetConfigWheelArrowTextureUp(),\n                    new Vector2(m_position.X - (TOTAL_WIDTH / 2), m_position.Y - (ITEM_HEIGHT * ITEM_COUNT / 2) - BUTTON_HEIGHT - BUTTON_VERTICAL_DIFF) + offset,\n                    new Vector2(TOTAL_WIDTH, BUTTON_HEIGHT), Color.White, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP);\n            }\n\n             * */\n\n            //Draw bottom button\n            //if (IsDownButtonVisible)\n            //{   \n            //    MyGuiManager.DrawSpriteBatch(MyGuiManager.GetConfigWheelArrowTextureDown(),\n            //        new Vector2(m_position.X - (TOTAL_WIDTH / 2), m_position.Y + (ITEM_HEIGHT * m_displayedItems.Length / 2) + BUTTON_VERTICAL_DIFF) + offset,\n            //        new Vector2(TOTAL_WIDTH, BUTTON_HEIGHT), Color.White, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP);\n            //}\n\n            //Draw scrollbar\n            //if (IsScrollBarVisible)\n            //{\n            //    MyGuiManager.DrawSpriteBatch(MyGuiManager.GetBlankTexture(),\n            //        new Vector2(m_position.X + (TOTAL_WIDTH / 2) - SLIDER_WIDTH, m_position.Y - (ITEM_HEIGHT * m_displayedItems.Length / 2)) + offset,\n            //        new Vector2(SLIDER_WIDTH, m_displayedItems.Length * ITEM_HEIGHT), new Color(Color.RoyalBlue.R, Color.RoyalBlue.G, Color.RoyalBlue.B, (byte)(255 * 0.3f)),\n            //        MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP);\n            //    MyGuiManager.DrawSpriteBatch(MyGuiManager.GetScrollbarSlider(),\n            //        SliderNormalizedCoord, SliderNormalizedSize, Color.White,\n            //        MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP);\n            //}\n\n            MyGuiManager.EndSpriteBatch();\n        }\n\n        private Vector2 SliderNormalizedCoord\n        {\n            get { return new Vector2(m_position.X + (TOTAL_WIDTH / 2) - SLIDER_WIDTH, m_position.Y - (ITEM_HEIGHT * m_displayedItems.Length / 2) + (ITEM_HEIGHT * m_displayedItems.Length / m_itemsCount) * m_first); }\n        }\n        private Vector2 SliderNormalizedSize\n        {\n            get { return new Vector2(SLIDER_WIDTH, m_displayedItems.Length * ITEM_HEIGHT * m_displayedItems.Length / m_itemsCount); }\n        }\n        private bool IsScrollBarVisible\n        {\n            get { return false; } // (m_itemsCount > m_displayedItems.Length);\n        }\n        private bool IsUpButtonVisible\n        {\n            get { return (m_first > 0); }\n        }\n        private bool IsDownButtonVisible\n        {\n            get { return (m_first < m_itemsCount - m_displayedItems.Length); }\n        }\n\n        private void HandleMouse(MyGuiInput input)\n        {\n            //Handle mouse wheel\n            if (m_mouseWheelValueLast == null) m_mouseWheelValueLast = input.MouseScrollWheelValue();\n            if (input.MouseScrollWheelValue() < m_mouseWheelValueLast)\n            {\n                //if (!MoveNext())\n                    SelectNext();\n            }\n            if (input.MouseScrollWheelValue() > m_mouseWheelValueLast)\n            {\n                //if (!MovePrev())\n                    SelectPrev();\n            }\n            m_mouseWheelValueLast = input.MouseScrollWheelValue();\n\n            //Do nothing if mouse don't move.\n            if (!input.IsNewLeftMousePressed() && m_mousePositionLast != null && m_mousePositionLast == MyGuiManager.MouseCursorPosition) return;\n            m_mousePositionLast = MyGuiManager.MouseCursorPosition;\n\n            if (input.IsNewLeftMousePressed() && m_displayedItems[m_selected] != null)\n            {\n                m_displayedItems[m_selected].ChangeValueUp();\n            }\n        }        \n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Core/MyGuiControls.cs",
    "content": "﻿using System;\nusing System.Collections;\nusing System.Collections.Generic;\nusing System.Collections.Specialized;\nusing System.Linq;\nusing System.Text;\nusing KeenSoftwareHouse.Library.Collections;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Toolkit.Input;\nusing MinerWars.AppCode.Game.Utils;\n\nnamespace MinerWars.AppCode.Game.GUI.Core\n{\n    class MyGuiControls\n    {\n        private ObservableCollection<MyGuiControlBase> m_allControls;\n        private List<MyGuiControlBase> m_visibleControls;\n        private bool m_refreshVisibleControls;\n\n        public event EventHandler CollectionChanged;\n\n        public MyGuiControls()\n        {            \n            m_allControls = new ObservableCollection<MyGuiControlBase>();\n            m_visibleControls = new List<MyGuiControlBase>();\n            m_allControls.CollectionChanged += CollectionChangedPrivate;\n            m_refreshVisibleControls = true;\n        }\n\n        private void CollectionChangedPrivate(object sender, NotifyCollectionChangedEventArgs e)\n        {\n            NotifyCollectionChanged();                        \n        }\n\n        private void ChildCollectionChanged(object sender, EventArgs args) \n        {\n            NotifyCollectionChanged();\n        }\n\n        private void NotifyCollectionChanged()\n        {\n            if (CollectionChanged != null)\n            {\n                CollectionChanged(this, EventArgs.Empty);\n            }\n        }\n\n        private void OnVisibilityChanged(MyGuiControlBase control, bool isVisible)\n        {\n            NotifyCollectionChanged();\n            m_refreshVisibleControls = true;\n        }\n\n        private void RefreshVisibleControls()\n        {                   \n            foreach (MyGuiControlBase control in m_allControls)\n            {\n                if (control.Visible && !m_visibleControls.Contains(control))\n                {\n                    m_visibleControls.Add(control);\n                }\n                else if(!control.Visible && m_visibleControls.Contains(control))\n                {\n                    m_visibleControls.Remove(control);\n                }\n            }\n        }\n\n        public List<MyGuiControlBase> GetVisibleControls()\n        {\n            if (m_refreshVisibleControls)\n            {\n                RefreshVisibleControls();\n                m_refreshVisibleControls = false;\n            }\n            return m_visibleControls;\n        }\n\n        \n        public void Add(MyGuiControlBase item)\n        {\n            item.OnVisibilityChanged -= OnVisibilityChanged;\n            item.OnVisibilityChanged += OnVisibilityChanged;\n\n            TrySetCollecionChangeEvent(item, true);\n\n            m_allControls.Add(item);\n\n            if (item.Visible)\n            {\n                m_visibleControls.Add(item);\n            }\n        }\n\n        public void Clear()\n        {\n            foreach (MyGuiControlBase control in m_allControls)\n            {\n                control.OnVisibilityChanged -= OnVisibilityChanged;\n                TrySetCollecionChangeEvent(control, false);                \n            }\n\n            m_allControls.Clear();\n            m_visibleControls.Clear();\n        }\n\n        public bool Contains(MyGuiControlBase item)\n        {\n            return m_allControls.Contains(item);\n        }\n\n        public void CopyTo(MyGuiControlBase[] array, int arrayIndex)\n        {\n            m_allControls.CopyTo(array, arrayIndex);\n        }\n\n        public bool Remove(MyGuiControlBase item)\n        {\n            bool itemRemove = m_allControls.Remove(item);\n\n            if (itemRemove)\n            {\n                m_visibleControls.Remove(item);\n                item.OnVisibilityChanged -= OnVisibilityChanged;\n                TrySetCollecionChangeEvent(item, false);\n            }\n\n            return itemRemove;\n        }\n\n        public int Count { get { return m_allControls.Count; } }\n        public bool IsReadOnly { get { return false; } }\n        public int IndexOf(MyGuiControlBase item)\n        {\n            return m_allControls.IndexOf(item);\n        }\n\n        public void Insert(int index, MyGuiControlBase item)\n        {\n            item.OnVisibilityChanged -= OnVisibilityChanged;\n            item.OnVisibilityChanged += OnVisibilityChanged;\n            TrySetCollecionChangeEvent(item, true);\n            m_allControls.Insert(index, item);\n\n            m_refreshVisibleControls = true;\n        }\n\n        public void RemoveAt(int index)\n        {\n            MyGuiControlBase removedControl = m_allControls[index];\n            removedControl.OnVisibilityChanged -= OnVisibilityChanged;\n            TrySetCollecionChangeEvent(m_allControls[index], false);\n\n            m_allControls.RemoveAt(index);\n            m_visibleControls.Remove(removedControl);\n        }\n\n        public MyGuiControlBase this[int index]\n        {\n            get\n            {\n                return m_allControls[index];\n            }\n            set\n            {\n                MyGuiControlBase oldItem = m_allControls[index];\n                if (oldItem != null)\n                {\n                    oldItem.OnVisibilityChanged -= OnVisibilityChanged;\n                    m_visibleControls.Remove(oldItem);\n                    TrySetCollecionChangeEvent(oldItem, false);\n                }\n\n                if (value != null)\n                {\n                    MyGuiControlBase newItem = value;\n                    newItem.OnVisibilityChanged -= OnVisibilityChanged;\n                    newItem.OnVisibilityChanged += OnVisibilityChanged;\n                    TrySetCollecionChangeEvent(newItem, true);\n                    m_allControls[index] = newItem;\n\n                    m_refreshVisibleControls = true;\n                }\n            }\n        }\n\n        private void TrySetCollecionChangeEvent(MyGuiControlBase control, bool addDelegate) \n        {\n            if (control is IMyGuiControlsParent) \n            {\n                SetParentCollectionChangeEvent(control as IMyGuiControlsParent, addDelegate);\n            }\n        }\n\n        private void SetParentCollectionChangeEvent(IMyGuiControlsParent parentControl, bool addDelegate) \n        {\n            parentControl.Controls.CollectionChanged -= ChildCollectionChanged;\n            if (addDelegate)\n            {\n                parentControl.Controls.CollectionChanged += ChildCollectionChanged;\n            }\n        }\n\n        public IList<MyGuiControlBase> GetList()\n        {\n            return m_allControls;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Core/MyGuiFont.cs",
    "content": "using System;\nusing System.Collections.Generic;\nusing System.Reflection;\nusing System.Text;\nusing System.Xml;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Utils;\nusing SysUtils.Utils;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.Managers;\n\nusing MinerWarsMath;\n/*\nusing MinerWarsMath;\n\nusing MinerWarsMath.Graphics;\n  */\n\nusing SharpDX;\nusing SharpDX.Direct3D9;\nusing SharpDX.Toolkit;\nusing SharpDX.Toolkit.Graphics;\n\n\n//  Bitmap font class for XNA\n\nnamespace MinerWars.AppCode.Game.GUI.Core\n{\n    using Vector2 = MinerWarsMath.Vector2;\n    using Color = MinerWarsMath.Color;\n    using Rectangle = MinerWarsMath.Rectangle;\n\n    public class MyGuiFont\n\t{\n\t\tenum MyGlyphFlags\n\t\t{\n\t\t\tNone = 0,\n\t\t\tForceWhite = 1,\t\t// force the drawing color for this glyph to be white.\n\t\t}\n\n\t\t//  Info for each glyph in the font - where to find the glyph image and other properties\n\t\tstruct MyGlyphInfo\n\t\t{\n\t\t\tpublic ushort nBitmapID;\n            public ushort pxLocX;\n            public ushort pxLocY;\n\t\t\tpublic byte pxWidth;\n\t\t\tpublic byte pxHeight;\n\t\t\tpublic byte pxAdvanceWidth;\n\t\t\tpublic sbyte pxLeftSideBearing;\n\t\t\tpublic MyGlyphFlags nFlags;\n\t\t}\n\n\t\t//  Info for each font bitmap\n\t\tstruct MyBitmapInfo\n\t\t{\n\t\t\tpublic string strFilename;\n\t\t\tpublic int nX, nY;\n\t\t}\n\n        const char NEW_LINE = '\\r';\n\n        //  This is artificial spacing in between two characters (in pixels).\n        //  Using it we can make spaces wider or narrower\n        public int Spacing = 0;\n        \n\t\tstring m_strName;\n\t\tstring m_strPath;\n\t\tDictionary<int, MyBitmapInfo> m_dictBitmapID2BitmapInfo;\n\t\tDictionary<int, MyTexture2D> m_dictBitmapID2Texture;\n\t\tDictionary<char, MyGlyphInfo> m_dictUnicode2GlyphInfo;\n\t\tDictionary<char, Dictionary<char, sbyte>> m_dictKern;\n\t\tint m_nBase = 0;\n\t\tint m_nHeight = 0;\n\t\tfloat m_fpDepth = 0.0f;\n\n\t\t//  Create a new font from the info in the specified font descriptor (XML) file\n        public MyGuiFont(string strFontFilename)\n\t\t{\n            MyMwcLog.WriteLine(\"MyGuiFont.MyGuiFont - START\");\n            MyMwcLog.IncreaseIndent();\n\n            MyMwcLog.WriteLine(\"Font filename: \" + strFontFilename, SysUtils.LoggingOptions.MISC_RENDER_ASSETS);\n            \n            Init(strFontFilename);\n            Reset(MyMinerGame.Static.GraphicsDevice);\n\n            MyMwcLog.WriteLine(\"Name: \" + Name, SysUtils.LoggingOptions.MISC_RENDER_ASSETS);\n            MyMwcLog.WriteLine(\"LineHeight: \" + LineHeight, SysUtils.LoggingOptions.MISC_RENDER_ASSETS);\n            MyMwcLog.WriteLine(\"Baseline: \" + Baseline, SysUtils.LoggingOptions.MISC_RENDER_ASSETS);\n            MyMwcLog.WriteLine(\"KernEnable: \" + KernEnable, SysUtils.LoggingOptions.MISC_RENDER_ASSETS);\n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyGuiFont.MyGuiFont - END\");\n        }\n\n\t\tvoid Init(string strFontFilename)\n\t\t{\n\t\t\tm_dictBitmapID2BitmapInfo = new Dictionary<int, MyBitmapInfo>();\n\t\t\tm_dictBitmapID2Texture = new Dictionary<int, MyTexture2D>();\n\n\t\t\tm_dictUnicode2GlyphInfo = new Dictionary<char, MyGlyphInfo>();\n\t\t\tm_dictKern = new Dictionary<char, Dictionary<char, sbyte>>();\n\n\t\t\tXmlDocument xd = new XmlDocument();\n\t\t\t\n            string fontXmlFilename = MyMinerGame.Static.RootDirectory + \"\\\\\" + strFontFilename;\n\n\t\t\t//  load the XML file from wherever it is - filesystem or embedded\n            if (System.IO.File.Exists(fontXmlFilename))\n            {\n                //  all files mentioned in the font descriptor file are relative to the parent directory of the font file.\n                //  record the path to this directory.\n                m_strPath = System.IO.Path.GetDirectoryName(strFontFilename);\n                if (m_strPath != \"\") m_strPath += @\"/\";\n\n                xd.Load(fontXmlFilename);   \n            }\n            else\n            {\n\t\t        throw new Exception(String.Format(\"Unable to find font named '{0}'.\", strFontFilename));\n\t\t\t}\n\n\t\t\tm_strName = \"\";\n\n\t\t\tLoadFontXML(xd.ChildNodes);\n\n\t\t\t//  if the font doesn't define a name, create one from the filename\n\t\t\tif (m_strName == \"\")\n\t\t\t\tm_strName = System.IO.Path.GetFileNameWithoutExtension(strFontFilename);\n\n\t\t\t//  add this font to the list of active fonts\n\t\t}\n\n\t\tvoid ConvertFilePath2EmbeddedPath(string strFilePath, out string strEmbeddedPath, out string strEmbeddedName)\n\t\t{\n\t\t\tAssembly a = Assembly.GetExecutingAssembly();\n\t\t\t// calc the resource path to this font (strip off <fontname>.xml)\n\t\t\tstrEmbeddedPath = a.GetName().Name + \".\";\n\n\t\t\t// strip directory nams from the filepath and add them to the embedded path\n\t\t\tstring[] aPath = strFilePath.Split(new char[] { '/', '\\\\' });\n\t\t\tfor (int i = 0; i < aPath.Length - 1; i++)\n\t\t\t\tstrEmbeddedPath += aPath[i] + \".\";\n\t\t\tstrEmbeddedName = aPath[aPath.Length-1];\n\t\t}\n\n\t\t//  Reset the font when the device has changed\n\t\tvoid Reset(Device device)\n\t\t{\n\t\t\tforeach (KeyValuePair<int, MyBitmapInfo> kv in m_dictBitmapID2BitmapInfo)\n\t\t\t{\n\t\t\t\tMyTexture2D tex = MyTextureManager.GetTexture<MyTexture2D>(m_strPath + kv.Value.strFilename, null, LoadingMode.Immediate, TextureFlags.IgnoreQuality);\n\n                m_dictBitmapID2Texture[kv.Key] = tex;\n\t\t\t}\n\t\t}\n\n\t\t//  The name of this font\n\t\tpublic string Name\n\t\t{\n\t\t\tget { return m_strName; }\n\t\t}\n\n\t\t//  Should we kern adjacent characters?\n\t\tbool m_fKern = true;\n\n\t\t//  Enable/disable kerning\n\t\tpublic bool KernEnable\n\t\t{\n\t\t\tget { return m_fKern; }\n\t\t\tset { m_fKern = value; }\n\t\t}\n\n\t\t//  Distance from top of font to the baseline\n\t\tpublic int Baseline\n\t\t{\n\t\t\tget { return m_nBase; }\n\t\t}\n\n\t\t//  Distance from top to bottom of the font\n\t\tpublic int LineHeight\n\t\t{\n\t\t\tget { return m_nHeight; }\n\t\t}\n\n\t\t//  The depth at which to draw the font\n\t\tpublic float Depth\n\t\t{\n\t\t\tget { return m_fpDepth; }\n\t\t\tset { m_fpDepth = value; }\n\t\t}\n\n\t\t//  Current pen position\n\t\tVector2 m_vPen = new Vector2(0, 0);\n\n\t\t//  Current pen position\n\t\tpublic Vector2 Pen\n\t\t{\n\t\t\tget { return m_vPen; }\n\t\t\tset { m_vPen = value; }\n\t\t}\n\n\t\t//  Set the current pen position\n\t\tpublic void SetPen(int x, int y)\n\t\t{\n\t\t\tm_vPen = new Vector2(x, y);\n\t\t}\n\n\t\t//  Current color used for drawing text\n\t\tColor m_color = Color.White;\n\n\t\t//  Current color used for drawing text\n\t\tpublic Color TextColor\n\t\t{\n\t\t\tget { return m_color; }\n\t\t\tset { m_color = value; }\n\t\t}\n\n\t\t//  Draw the given string at (x,y).\n\t\t//  The text color is inherited from the last draw command (default=White).\n\t\t//  Returns: Width of string (in pixels)\n        public float DrawString(int x, int y, StringBuilder text, float scale)\n\t\t{\n\t\t\tVector2 v = new Vector2(x, y);\n            return DrawString(v, m_color, text, scale);\n\t\t}\n\n\t\t//  Draw the given string at (x,y) using the specified color\n\t\t//  Returns: Width of string (in pixels)\n        public float DrawString(int x, int y, Color color, StringBuilder text, float scale)\n\t\t{\n\t\t\tVector2 v = new Vector2(x, y);\n\t\t\treturn DrawString(v, color, text, scale);\n\t\t}\n\n\t\t//  Draw the given string using the specified color.\n\t\t//  The text drawing location is immediately after the last drawn text (default=0,0).\n\t\t//  Returns: Width of string (in pixels)\n        public float DrawString(Color color, StringBuilder text, float scale)\n\t\t{\n\t\t\treturn DrawString(m_vPen, color, text, scale);\n\t\t}\n\n\t\t//  Draw the given string at (x,y).\n\t\t//  The text drawing location is immediately after the last drawn text (default=0,0).\n\t\t//  The text color is inherited from the last draw command (default=White).\n\t\t//  Returns: Width of string (in pixels)\n        public float DrawString(StringBuilder text, float scale)\n\t\t{\n\t\t\treturn DrawString(m_vPen, m_color, text, scale);\n\t\t}\n\n\t\t//  Draw the given string at vOrigin using the specified color\n\t\t//  Returns: Width of string (in pixels)\n        public float DrawString(Vector2 vAt, Color cText, StringBuilder text, float scale)\n\t\t{\n\t\t\treturn DrawString_internal(vAt, cText, text, scale);\n\t\t}\n\n\t\t//  Calculate the width of the given string.\n\t\t//  Returns: Width and height (in pixels) of the string\n        public Vector2 MeasureString(StringBuilder text, float scale)\n\t\t{\n            scale *= MyGuiConstants.FONT_SCALE;\n            float pxWidth = 0;\n\t\t\tchar cLast = '\\0';\n\n            float maxPxWidth = 0;\n            int lines = 1;\n            for (int i = 0; i < text.Length; i++)\n\t\t\t{\n                char c = text[i];\n\n                //  New line\n                if (c == NEW_LINE)\n                {\n                    lines++;\n                    pxWidth = 0;\n                    cLast = '\\0';\n                    continue;\n                }\n\n                if (!m_dictUnicode2GlyphInfo.ContainsKey(c))\n\t\t\t\t{\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n                MyGlyphInfo ginfo = m_dictUnicode2GlyphInfo[c];\n\n                // if kerning is enabled, get the kern adjustment for this char pair\n                if (m_fKern)\n                {\n                    pxWidth += CalcKern(cLast, c);\n                    cLast = c;\n                }\n\n                //  update the string width\n                pxWidth += ginfo.pxAdvanceWidth;\n\n                //  Spacing\n                if (i < (text.Length - 1)) pxWidth += Spacing;\n\n                //  Because new line\n                if (pxWidth > maxPxWidth) maxPxWidth = pxWidth;\n\t\t\t}\n\n            return new Vector2(maxPxWidth * scale, lines * LineHeight * scale);\n\t\t}\n\n\t\t//  Private version of DrawString that expects the string to be formatted already\n\t\t//  Returns: Width of string (in pixels)\n        float DrawString_internal(Vector2 vAtOriginal, Color cText, StringBuilder text, float scale)\n\t\t{\n            scale *= MyGuiConstants.FONT_SCALE;\n            Color currentColor = cText;\n            Vector2 vOrigin = new Vector2(0,0);\n\t\t\tfloat pxWidth = 0;\n\t\t\tchar cLast = '\\0';\n\n            Vector2 vAt = vAtOriginal;\n\n            float spacingScaled = Spacing * scale;\n\n            int line = 0;\n\n\t\t\t//  Draw each character in the string\n            for (int i = 0; i < text.Length; i++)\n            {\n                char c = text[i];\n\n                if (c == NEW_LINE)\n                {\n                    vAt.X = vAtOriginal.X;\n                    line++;\n                    continue;\n                }\n\n                if (!m_dictUnicode2GlyphInfo.ContainsKey(c))\n\t\t\t\t{\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n            \n                MyGlyphInfo ginfo = m_dictUnicode2GlyphInfo[c];\n\n                //  If kerning is enabled, get the kern adjustment for this char pair\n                if (m_fKern)\n                {\n                    int pxKern = CalcKern(cLast, c);\n                    vAt.X += pxKern * scale;\n                    pxWidth += pxKern * scale;\n                    cLast = c;\n                }\n\n                //  This will fix vertical coordinate in case we use \"gpad\" - left/top blank space in every character\n                vAt.Y = vAtOriginal.Y + (ginfo.pxLeftSideBearing + MyGuiConstants.FONT_TOP_SIDE_BEARING + line * LineHeight) * scale;\n\n                //  Draw the glyph\n                vAt.X += ginfo.pxLeftSideBearing * scale;\n                if (ginfo.pxWidth != 0 && ginfo.pxHeight != 0)\n                {\n                    Rectangle rSource = new Rectangle(ginfo.pxLocX, ginfo.pxLocY, ginfo.pxWidth, ginfo.pxHeight);\n                    Color color = (((ginfo.nFlags & MyGlyphFlags.ForceWhite) != 0) ? Color.White : currentColor);\n                    MyGuiManager.DrawSpriteBatch(m_dictBitmapID2Texture[ginfo.nBitmapID], vAt, rSource, color, 0.0f, vOrigin, scale, SpriteEffects.None, m_fpDepth);\n                }\n\n                // update the string width and advance the pen to the next drawing position\n                pxWidth += ginfo.pxAdvanceWidth * scale;\n                vAt.X += (ginfo.pxAdvanceWidth - ginfo.pxLeftSideBearing) * scale;\n\n                //  Spacing\n                if (i < (text.Length - 1))\n                {\n                    pxWidth += spacingScaled;\n                    vAt.X += spacingScaled;\n                }\n\t\t\t}\n\n\t\t\t//  Record final pen position and color\n\t\t\tm_vPen = vAt;\n\t\t\tm_color = cText;\n\n\t\t\treturn pxWidth;\n\t\t}\n\n\t\t//  Get the kern value for the given pair of characters\n\t\t//  Returns: Amount to kern (in pixels)\n\t\tint CalcKern(char chLeft, char chRight)\n\t\t{\n\t\t\tif (m_dictKern.ContainsKey(chLeft))\n\t\t\t{\n\t\t\t\tDictionary<char, sbyte> kern2 = m_dictKern[chLeft];\n\t\t\t\tif (kern2.ContainsKey(chRight))\n\t\t\t\t\treturn kern2[chRight];\n\t\t\t}\n\t\t\treturn 0;\n\t\t}        \t\n\n\t\t/// <summary>\n\t\t/// Load the font data from an XML font descriptor file\n\t\t/// </summary>\n\t\t/// <param name=\"xnl\">XML node list containing the entire font descriptor file</param>\n\t\tvoid LoadFontXML(XmlNodeList xnl)\n\t\t{\n\t\t\tforeach (XmlNode xn in xnl)\n\t\t\t{\n\t\t\t\tif (xn.Name == \"font\")\n\t\t\t\t{\n\t\t\t\t\tm_strName = GetXMLAttribute(xn, \"name\");\n\t\t\t\t\tm_nBase = Int32.Parse(GetXMLAttribute(xn, \"base\"));\n\t\t\t\t\tm_nHeight = Int32.Parse(GetXMLAttribute(xn, \"height\"));\n\n\t\t\t\t\tLoadFontXML_font(xn.ChildNodes);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Load the data from the \"font\" node\n\t\t/// </summary>\n\t\t/// <param name=\"xnl\">XML node list containing the \"font\" node's children</param>\n\t\tvoid LoadFontXML_font(XmlNodeList xnl)\n\t\t{\n\t\t\tforeach (XmlNode xn in xnl)\n\t\t\t{\n\t\t\t\tif (xn.Name == \"bitmaps\")\n\t\t\t\t\tLoadFontXML_bitmaps(xn.ChildNodes);\n\t\t\t\tif (xn.Name == \"glyphs\")\n\t\t\t\t\tLoadFontXML_glyphs(xn.ChildNodes);\n\t\t\t\tif (xn.Name == \"kernpairs\")\n\t\t\t\t\tLoadFontXML_kernpairs(xn.ChildNodes);\n\t\t\t}\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Load the data from the \"bitmaps\" node\n\t\t/// </summary>\n\t\t/// <param name=\"xnl\">XML node list containing the \"bitmaps\" node's children</param>\n\t\tvoid LoadFontXML_bitmaps(XmlNodeList xnl)\n\t\t{\n\t\t\tforeach (XmlNode xn in xnl)\n\t\t\t{\n\t\t\t\tif (xn.Name == \"bitmap\")\n\t\t\t\t{\n\t\t\t\t\tstring strID = GetXMLAttribute(xn, \"id\");\n\t\t\t\t\tstring strFilename = GetXMLAttribute(xn, \"name\");\n\t\t\t\t\tstring strSize = GetXMLAttribute(xn, \"size\");\n\t\t\t\t\tstring[] aSize = strSize.Split('x');\n\t\t\t\t\t\n\t\t\t\t\t// if the MyCustomContentManager is being used, then we may need to strip off the .png extension\n\t\t\t\t\t// to generate the correct asset name.\n\t\t\t\t\tif (strFilename.EndsWith(@\".png\"))\n\t\t\t\t\t\tstrFilename = strFilename.Remove(strFilename.Length - 4, 4);\n\n\t\t\t\t\tMyBitmapInfo bminfo;\n\t\t\t\t\tbminfo.strFilename = strFilename;\n\t\t\t\t\tbminfo.nX = Int32.Parse(aSize[0]);\n\t\t\t\t\tbminfo.nY = Int32.Parse(aSize[1]);\n\n\t\t\t\t\tm_dictBitmapID2BitmapInfo[Int32.Parse(strID)] = bminfo;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Load the data from the \"glyphs\" node\n\t\t/// </summary>\n\t\t/// <param name=\"xnl\">XML node list containing the \"glyphs\" node's children</param>\n\t\tvoid LoadFontXML_glyphs(XmlNodeList xnl)\n\t\t{\n\t\t\tforeach (XmlNode xn in xnl)\n\t\t\t{\n\t\t\t\tif (xn.Name == \"glyph\")\n\t\t\t\t{\n\t\t\t\t\tstring strChar = GetXMLAttribute(xn, \"ch\");\n\t\t\t\t\tstring strBitmapID = GetXMLAttribute(xn, \"bm\");\n\t\t\t\t\tstring strLoc = GetXMLAttribute(xn, \"loc\");\n\t\t\t\t\tstring strSize = GetXMLAttribute(xn, \"size\");\n\t\t\t\t\tstring strAW = GetXMLAttribute(xn, \"aw\");\n\t\t\t\t\tstring strLSB = GetXMLAttribute(xn, \"lsb\");\n\t\t\t\t\tstring strForceWhite = GetXMLAttribute(xn, \"forcewhite\");\n\n\t\t\t\t\tif (strLoc == \"\")\n\t\t\t\t\t\tstrLoc = GetXMLAttribute(xn, \"origin\");\t// obsolete - use loc instead\n\n\t\t\t\t\tstring[] aLoc = strLoc.Split(',');\n\t\t\t\t\tstring[] aSize = strSize.Split('x');\n\n\t\t\t\t\tMyGlyphInfo ginfo = new MyGlyphInfo();\n\t\t\t\t\tginfo.nBitmapID = UInt16.Parse(strBitmapID);\n\t\t\t\t\tginfo.pxLocX = ushort.Parse(aLoc[0]);\n                    ginfo.pxLocY = ushort.Parse(aLoc[1]);\n\t\t\t\t\tginfo.pxWidth = Byte.Parse(aSize[0]);\n\t\t\t\t\tginfo.pxHeight = Byte.Parse(aSize[1]);\n\t\t\t\t\tginfo.pxAdvanceWidth = Byte.Parse(strAW);\n\t\t\t\t\tginfo.pxLeftSideBearing = SByte.Parse(strLSB);\n\t\t\t\t\tginfo.nFlags = 0;\n\t\t\t\t\tginfo.nFlags |= (strForceWhite == \"true\" ? MyGlyphFlags.ForceWhite : MyGlyphFlags.None);\n\n\t\t\t\t\tm_dictUnicode2GlyphInfo[strChar[0]] = ginfo;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Load the data from the \"kernpairs\" node\n\t\t/// </summary>\n\t\t/// <param name=\"xnl\">XML node list containing the \"kernpairs\" node's children</param>\n\t\tvoid LoadFontXML_kernpairs(XmlNodeList xnl)\n\t\t{\n\t\t\tforeach (XmlNode xn in xnl)\n\t\t\t{\n\t\t\t\tif (xn.Name == \"kernpair\")\n\t\t\t\t{\n\t\t\t\t\tstring strLeft = GetXMLAttribute(xn, \"left\");\n\t\t\t\t\tstring strRight = GetXMLAttribute(xn, \"right\");\n\t\t\t\t\tstring strAdjust = GetXMLAttribute(xn, \"adjust\");\n\n\t\t\t\t\tchar chLeft = strLeft[0];\n\t\t\t\t\tchar chRight = strRight[0];\n\n\t\t\t\t\t// create a kern dict for the left char if needed\n\t\t\t\t\tif (!m_dictKern.ContainsKey(chLeft))\n\t\t\t\t\t\tm_dictKern[chLeft] = new Dictionary<char,sbyte>();\n\n\t\t\t\t\t// add the right char to the left char's kern dict\n\t\t\t\t\tDictionary<char, sbyte> kern2 = m_dictKern[chLeft];\n\t\t\t\t\tkern2[chRight] = SByte.Parse(strAdjust);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Get the XML attribute value\n\t\t/// </summary>\n\t\t/// <param name=\"n\">XML node</param>\n\t\t/// <param name=\"strAttr\">Attribute name</param>\n\t\t/// <returns>Attribute value, or the empty string if the attribute doesn't exist</returns>\n\t\tstatic string GetXMLAttribute(XmlNode n, string strAttr)\n\t\t{\n\t\t\tXmlAttribute attr = n.Attributes.GetNamedItem(strAttr) as XmlAttribute;\n\t\t\tif (attr != null)\n\t\t\t\treturn attr.Value;\n\t\t\treturn \"\";\n\t\t}\t\t\n\t}\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Core/MyGuiInput.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.VideoMode;\nusing SysUtils.Utils;\nusing System.Text;\nusing SharpDX.DirectInput;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.GUI.Helpers;\nusing System.Runtime.InteropServices;\nusing MinerWars.AppCode.Toolkit.Input;\n\nnamespace MinerWars.AppCode.Game.GUI\n{\n    using System.Reflection;\n    using System.Management;\n    using KeenSoftwareHouse.Library.Trace;\n    using SysUtils;\n    using MinerWars.AppCode.Game.World;\n    using MinerWarsMath;\n\n    delegate void OnControlsSaved(MyGuiInput sender);\n\n    static class JoystickExtensions\n    {\n        public static bool IsPressed(this JoystickState state, int button)\n        {\n            return state.Buttons[button];\n        }\n\n        public static bool IsReleased(this JoystickState state, int button)\n        {\n            return !IsPressed(state, button);\n        }\n    }\n\n    class MyGuiInput:IDisposable\n    {\n        [DllImport(\"user32.dll\")]\n        public static extern IntPtr GetForegroundWindow();\n\n        // An umanaged function that retrieves the states of each key\n        [DllImport(\"user32.dll\", CharSet = CharSet.Auto, ExactSpelling = true, CallingConvention = CallingConvention.Winapi)]\n        public static extern short GetKeyState(int keyCode);\n\n        public bool IsCapsLock = (((ushort)GetKeyState(0x14)) & 0xffff) != 0;\n        public bool IsNumLock = (((ushort)GetKeyState(0x90)) & 0xffff) != 0;\n        public bool IsScrollLock = (((ushort)GetKeyState(0x91)) & 0xffff) != 0;\n \n\n        //  State Variables\n        MyMouseState m_previousMouseState;\n        JoystickState m_previousJoystickState;\n        MyGuiLocalizedKeyboardState m_keyboardState;\n        MyMouseState m_actualMouseState;\n        JoystickState m_actualJoystickState;\n        bool m_joystickXAxisSupported;\n        bool m_joystickYAxisSupported;\n        bool m_joystickZAxisSupported;\n        bool m_joystickRotationXAxisSupported;\n        bool m_joystickRotationYAxisSupported;\n        bool m_joystickRotationZAxisSupported;\n        bool m_joystickSlider1AxisSupported;\n        bool m_joystickSlider2AxisSupported;\n\n        // Double Click Variables\n        readonly int DOUBLE_CLICK_DELAY = 500;\n        readonly int DOUBLE_CLICK_MAXIMUM_DISTANCE_SQUARED = 100;\n        MinerWarsMath.Vector2 m_lastLeftButtonMousePosition;\n        int m_lastLeftButtonClickTime;\n        bool m_leftButtonDoubleClick;\n\n        //  Control properties\n        bool m_mouseXIsInverted;\n        bool m_mouseYIsInverted;\n        float m_mouseSensitivity;\n        private string m_joystickInstanceName;\n        public string JoystickInstanceName\n        {\n            get { return m_joystickInstanceName; }\n            set\n            {\n                if (m_joystickInstanceName != value)\n                {\n                    m_joystickInstanceName = value;\n                    InitializeJoystickIfPossible();\n                }\n            }\n        }\n        float m_joystickSensitivity;\n        float m_joystickDeadzone;\n        float m_joystickExponent;\n        public bool IsMouseXInvertedDefault { get { return false; } }\n        public bool IsMouseYInvertedDefault { get { return false; } }\n        public float MouseSensitivityDefault { get { return 1.0f; } }\n        public string JoystickInstanceNameDefault { get { return null; } }\n        public float JoystickSensitivityDefault { get { return 2.0f; } }\n        public float JoystickExponentDefault { get { return 2.0f; } }\n        public float JoystickDeadzoneDefault { get { return 0.2f; } }\n\n        string m_joystickInstanceNameSnapshot;\n\n        //  Control lists\n        MyControl[] m_defaultGameControlsList = new MyControl[Enum.GetValues(typeof(MyGameControlEnums)).Length];\n        MyControl[] m_defaultEditorControlsList = new MyControl[Enum.GetValues(typeof(MyEditorControlEnums)).Length];\n        MyControl[] m_gameControlsList = new MyControl[Enum.GetValues(typeof(MyGameControlEnums)).Length];\n        MyControl[] m_editorControlsList = new MyControl[Enum.GetValues(typeof(MyEditorControlEnums)).Length];\n        MyControl[] m_controlsSnapshot = new MyControl[Enum.GetValues(typeof(MyGameControlEnums)).Length];\n        MyControl[] m_gameControlsSnapshot = new MyControl[Enum.GetValues(typeof(MyGameControlEnums)).Length];\n        MyControl[] m_editorControlsSnapshot = new MyControl[Enum.GetValues(typeof(MyEditorControlEnums)).Length];\n        \n        //  Lists of valid keys and buttons\n        static List<Keys> m_validKeyboardKeys = new List<Keys>();\n        static List<MyJoystickButtonsEnum> m_validJoystickButtons = new List<MyJoystickButtonsEnum>();\n        static List<MyJoystickAxesEnum> m_validJoystickAxes = new List<MyJoystickAxesEnum>();\n        static List<MyMouseButtonsEnum> m_validMouseButtons = new List<MyMouseButtonsEnum>();\n        static List<MyGameControlEnums> m_deprecatedGameControls = new List<MyGameControlEnums>();\n        //static ManagementEventWatcher m_mewWatcher;\n\n        List<Keys> m_digitKeys = new List<Keys>();\n\n        //  Joystick variables\n        Device m_joystick = null;\n        DeviceType? m_joystickType = null;\n        bool m_joystickConnected = false;\n\n        bool m_previousUpdateWasLostFocus = true;\n\n        //Declare the hook handle as an int.\n        static int m_hHook = 0;\n        static MyWindowsAPIWrapper.HookProc m_hookHandler;\n\n        public MyGuiInput()\n        {\n            MyWindowsMouse.SetWindow(MyMinerGame.Static.Window.NativeWindow.Handle);\n\n            InitDevicePluginHandlerCallBack();\n\n            m_mouseXIsInverted = IsMouseXInvertedDefault;\n            m_mouseYIsInverted = IsMouseYInvertedDefault;\n            m_mouseSensitivity = MouseSensitivityDefault;\n            m_joystickInstanceName = JoystickInstanceNameDefault;\n            m_joystickSensitivity = JoystickSensitivityDefault;\n            m_joystickDeadzone = JoystickDeadzoneDefault;\n            m_joystickExponent = JoystickExponentDefault;\n\n            // Fill list of deprecated controls\n            //m_deprecatedGameControls.Add(MyGameControlEnums.COMM_AVATAR_SELECT);\n\n            #region Digit keys only\n            \n            m_digitKeys.Add(Keys.D0);\n            m_digitKeys.Add(Keys.D1);\n            m_digitKeys.Add(Keys.D2);\n            m_digitKeys.Add(Keys.D3);\n            m_digitKeys.Add(Keys.D4);\n            m_digitKeys.Add(Keys.D5);\n            m_digitKeys.Add(Keys.D6);\n            m_digitKeys.Add(Keys.D7);\n            m_digitKeys.Add(Keys.D8);\n            m_digitKeys.Add(Keys.D9);\n            m_digitKeys.Add(Keys.NumPad0);\n            m_digitKeys.Add(Keys.NumPad1);\n            m_digitKeys.Add(Keys.NumPad2);\n            m_digitKeys.Add(Keys.NumPad3);\n            m_digitKeys.Add(Keys.NumPad4);\n            m_digitKeys.Add(Keys.NumPad5);\n            m_digitKeys.Add(Keys.NumPad6);\n            m_digitKeys.Add(Keys.NumPad7);\n            m_digitKeys.Add(Keys.NumPad8);\n            m_digitKeys.Add(Keys.NumPad9);\n\n            #endregion\n\n            #region Lists of assignable keys and buttons\n\n            //  List of assignable keyboard keys\n            m_validKeyboardKeys.Add(Keys.A);\n            m_validKeyboardKeys.Add(Keys.Add);\n            m_validKeyboardKeys.Add(Keys.B);\n            m_validKeyboardKeys.Add(Keys.Back);\n            m_validKeyboardKeys.Add(Keys.C);\n            m_validKeyboardKeys.Add(Keys.CapsLock);\n            m_validKeyboardKeys.Add(Keys.D);\n            m_validKeyboardKeys.Add(Keys.D0);\n            m_validKeyboardKeys.Add(Keys.D1);\n            m_validKeyboardKeys.Add(Keys.D2);\n            m_validKeyboardKeys.Add(Keys.D3);\n            m_validKeyboardKeys.Add(Keys.D4);\n            m_validKeyboardKeys.Add(Keys.D5);\n            m_validKeyboardKeys.Add(Keys.D6);\n            m_validKeyboardKeys.Add(Keys.D7);\n            m_validKeyboardKeys.Add(Keys.D8);\n            m_validKeyboardKeys.Add(Keys.D9);\n            m_validKeyboardKeys.Add(Keys.Decimal);\n            m_validKeyboardKeys.Add(Keys.Delete);\n            m_validKeyboardKeys.Add(Keys.Divide);\n            m_validKeyboardKeys.Add(Keys.Down);\n            m_validKeyboardKeys.Add(Keys.E);\n            m_validKeyboardKeys.Add(Keys.End);\n            m_validKeyboardKeys.Add(Keys.Enter);\n            m_validKeyboardKeys.Add(Keys.F);\n            m_validKeyboardKeys.Add(Keys.G);\n            m_validKeyboardKeys.Add(Keys.H);\n            m_validKeyboardKeys.Add(Keys.Home);\n            m_validKeyboardKeys.Add(Keys.I);\n            m_validKeyboardKeys.Add(Keys.Insert);\n            m_validKeyboardKeys.Add(Keys.J);\n            m_validKeyboardKeys.Add(Keys.K);\n            m_validKeyboardKeys.Add(Keys.L);\n            m_validKeyboardKeys.Add(Keys.Left);\n            m_validKeyboardKeys.Add(Keys.LeftAlt);\n            m_validKeyboardKeys.Add(Keys.LeftControl);\n            m_validKeyboardKeys.Add(Keys.LeftShift);\n            m_validKeyboardKeys.Add(Keys.M);\n            m_validKeyboardKeys.Add(Keys.Multiply);\n            m_validKeyboardKeys.Add(Keys.N);\n            m_validKeyboardKeys.Add(Keys.None);\n            m_validKeyboardKeys.Add(Keys.NumPad0);\n            m_validKeyboardKeys.Add(Keys.NumPad1);\n            m_validKeyboardKeys.Add(Keys.NumPad2);\n            m_validKeyboardKeys.Add(Keys.NumPad3);\n            m_validKeyboardKeys.Add(Keys.NumPad4);\n            m_validKeyboardKeys.Add(Keys.NumPad5);\n            m_validKeyboardKeys.Add(Keys.NumPad6);\n            m_validKeyboardKeys.Add(Keys.NumPad7);\n            m_validKeyboardKeys.Add(Keys.NumPad8);\n            m_validKeyboardKeys.Add(Keys.NumPad9);\n            m_validKeyboardKeys.Add(Keys.O);\n            m_validKeyboardKeys.Add(Keys.OemCloseBrackets);\n            m_validKeyboardKeys.Add(Keys.OemComma);\n            m_validKeyboardKeys.Add(Keys.OemMinus);\n            m_validKeyboardKeys.Add(Keys.OemOpenBrackets);\n            m_validKeyboardKeys.Add(Keys.OemPeriod);\n            m_validKeyboardKeys.Add(Keys.OemPipe);\n            m_validKeyboardKeys.Add(Keys.OemPlus);\n            m_validKeyboardKeys.Add(Keys.OemQuestion);\n            m_validKeyboardKeys.Add(Keys.OemQuotes);\n            m_validKeyboardKeys.Add(Keys.OemSemicolon);\n            m_validKeyboardKeys.Add(Keys.OemTilde);\n            m_validKeyboardKeys.Add(Keys.OemBackslash);\n            m_validKeyboardKeys.Add(Keys.P);\n            m_validKeyboardKeys.Add(Keys.PageDown);\n            m_validKeyboardKeys.Add(Keys.PageUp);\n            m_validKeyboardKeys.Add(Keys.Pause);\n            m_validKeyboardKeys.Add(Keys.Q);\n            m_validKeyboardKeys.Add(Keys.R);\n            m_validKeyboardKeys.Add(Keys.Right);\n            m_validKeyboardKeys.Add(Keys.RightAlt);\n            m_validKeyboardKeys.Add(Keys.RightControl);\n            m_validKeyboardKeys.Add(Keys.RightShift);\n            m_validKeyboardKeys.Add(Keys.S);\n            m_validKeyboardKeys.Add(Keys.Space);\n            m_validKeyboardKeys.Add(Keys.Subtract);\n            m_validKeyboardKeys.Add(Keys.T);\n            m_validKeyboardKeys.Add(Keys.Tab);\n            m_validKeyboardKeys.Add(Keys.U);\n            m_validKeyboardKeys.Add(Keys.Up);\n            m_validKeyboardKeys.Add(Keys.V);\n            m_validKeyboardKeys.Add(Keys.W);\n            m_validKeyboardKeys.Add(Keys.X);\n            m_validKeyboardKeys.Add(Keys.Y);\n            m_validKeyboardKeys.Add(Keys.Z);\n\n            //  List of assignable mouse buttons\n            m_validMouseButtons.Add(MyMouseButtonsEnum.Left);\n            m_validMouseButtons.Add(MyMouseButtonsEnum.Middle);\n            m_validMouseButtons.Add(MyMouseButtonsEnum.Right);\n            m_validMouseButtons.Add(MyMouseButtonsEnum.XButton1);\n            m_validMouseButtons.Add(MyMouseButtonsEnum.XButton2);\n            m_validMouseButtons.Add(MyMouseButtonsEnum.None);\n\n            //  List of assignable joystick buttons\n            m_validJoystickButtons.Add(MyJoystickButtonsEnum.J01);\n            m_validJoystickButtons.Add(MyJoystickButtonsEnum.J02);\n            m_validJoystickButtons.Add(MyJoystickButtonsEnum.J03);\n            m_validJoystickButtons.Add(MyJoystickButtonsEnum.J04);\n            m_validJoystickButtons.Add(MyJoystickButtonsEnum.J05);\n            m_validJoystickButtons.Add(MyJoystickButtonsEnum.J06);\n            m_validJoystickButtons.Add(MyJoystickButtonsEnum.J07);\n            m_validJoystickButtons.Add(MyJoystickButtonsEnum.J08);\n            m_validJoystickButtons.Add(MyJoystickButtonsEnum.J09);\n            m_validJoystickButtons.Add(MyJoystickButtonsEnum.J10);\n            m_validJoystickButtons.Add(MyJoystickButtonsEnum.J11);\n            m_validJoystickButtons.Add(MyJoystickButtonsEnum.J12);\n            m_validJoystickButtons.Add(MyJoystickButtonsEnum.J13);\n            m_validJoystickButtons.Add(MyJoystickButtonsEnum.J14);\n            m_validJoystickButtons.Add(MyJoystickButtonsEnum.J15);\n            m_validJoystickButtons.Add(MyJoystickButtonsEnum.J16);\n            m_validJoystickButtons.Add(MyJoystickButtonsEnum.JDLeft);\n            m_validJoystickButtons.Add(MyJoystickButtonsEnum.JDRight);\n            m_validJoystickButtons.Add(MyJoystickButtonsEnum.JDUp);\n            m_validJoystickButtons.Add(MyJoystickButtonsEnum.JDDown);\n            m_validJoystickButtons.Add(MyJoystickButtonsEnum.None);\n\n            //  List of assignable joystick axes\n            m_validJoystickAxes.Add(MyJoystickAxesEnum.Xpos);\n            m_validJoystickAxes.Add(MyJoystickAxesEnum.Xneg);\n            m_validJoystickAxes.Add(MyJoystickAxesEnum.Ypos);\n            m_validJoystickAxes.Add(MyJoystickAxesEnum.Yneg);\n            m_validJoystickAxes.Add(MyJoystickAxesEnum.Zpos);\n            m_validJoystickAxes.Add(MyJoystickAxesEnum.Zneg);\n            m_validJoystickAxes.Add(MyJoystickAxesEnum.RotationXpos);\n            m_validJoystickAxes.Add(MyJoystickAxesEnum.RotationXneg);\n            m_validJoystickAxes.Add(MyJoystickAxesEnum.RotationYpos);\n            m_validJoystickAxes.Add(MyJoystickAxesEnum.RotationYneg);\n            m_validJoystickAxes.Add(MyJoystickAxesEnum.RotationZpos);\n            m_validJoystickAxes.Add(MyJoystickAxesEnum.RotationZneg);\n            m_validJoystickAxes.Add(MyJoystickAxesEnum.Slider1pos);\n            m_validJoystickAxes.Add(MyJoystickAxesEnum.Slider1neg);\n            m_validJoystickAxes.Add(MyJoystickAxesEnum.Slider2pos);\n            m_validJoystickAxes.Add(MyJoystickAxesEnum.Slider2neg);\n            m_validJoystickAxes.Add(MyJoystickAxesEnum.None);\n\n            #endregion\n\n            //  IMPORTANT! If you add/remove a control you MUST add/remove default control list! \n            //  Default Controls list\n            m_defaultGameControlsList[(int)MyGameControlEnums.FIRE_PRIMARY] = new MyControl(MyGameControlEnums.FIRE_PRIMARY, MyGuiGameControlsHelpers.GetGameControlHelper(MyGameControlEnums.FIRE_PRIMARY).DescriptionEnum, MyGuiControlTypeEnum.Weapons, MyMouseButtonsEnum.Left, Keys.LeftControl, MyJoystickButtonsEnum.J01, null);\n            m_defaultGameControlsList[(int)MyGameControlEnums.FIRE_SECONDARY] = new MyControl(MyGameControlEnums.FIRE_SECONDARY, MyGuiGameControlsHelpers.GetGameControlHelper(MyGameControlEnums.FIRE_SECONDARY).DescriptionEnum, MyGuiControlTypeEnum.Weapons, MyMouseButtonsEnum.Right, MyFakes.ALT_AS_DEBUG_KEY ? Keys.None : Keys.LeftAlt, MyJoystickButtonsEnum.J02, null);\n            m_defaultGameControlsList[(int)MyGameControlEnums.FIRE_THIRD] = new MyControl(MyGameControlEnums.FIRE_THIRD, MyGuiGameControlsHelpers.GetGameControlHelper(MyGameControlEnums.FIRE_THIRD).DescriptionEnum, MyGuiControlTypeEnum.Weapons, Keys.None);\n            m_defaultGameControlsList[(int)MyGameControlEnums.FIRE_FOURTH] = new MyControl(MyGameControlEnums.FIRE_FOURTH, MyGuiGameControlsHelpers.GetGameControlHelper(MyGameControlEnums.FIRE_FOURTH).DescriptionEnum, MyGuiControlTypeEnum.Weapons, Keys.None);\n            m_defaultGameControlsList[(int)MyGameControlEnums.FIRE_FIFTH] = new MyControl(MyGameControlEnums.FIRE_FIFTH, MyGuiGameControlsHelpers.GetGameControlHelper(MyGameControlEnums.FIRE_FIFTH).DescriptionEnum, MyGuiControlTypeEnum.Weapons, Keys.None);\n            m_defaultGameControlsList[(int)MyGameControlEnums.FORWARD] = new MyControl(MyGameControlEnums.FORWARD, MyGuiGameControlsHelpers.GetGameControlHelper(MyGameControlEnums.FORWARD).DescriptionEnum, MyGuiControlTypeEnum.Navigation, Keys.W);\n            m_defaultGameControlsList[(int)MyGameControlEnums.REVERSE] = new MyControl(MyGameControlEnums.REVERSE, MyGuiGameControlsHelpers.GetGameControlHelper(MyGameControlEnums.REVERSE).DescriptionEnum, MyGuiControlTypeEnum.Navigation, Keys.S);\n            m_defaultGameControlsList[(int)MyGameControlEnums.UP_THRUST] = new MyControl(MyGameControlEnums.UP_THRUST, MyGuiGameControlsHelpers.GetGameControlHelper(MyGameControlEnums.UP_THRUST).DescriptionEnum, MyGuiControlTypeEnum.Navigation, null, Keys.F, MyJoystickButtonsEnum.JDUp, null);\n            m_defaultGameControlsList[(int)MyGameControlEnums.DOWN_THRUST] = new MyControl(MyGameControlEnums.DOWN_THRUST, MyGuiGameControlsHelpers.GetGameControlHelper(MyGameControlEnums.DOWN_THRUST).DescriptionEnum, MyGuiControlTypeEnum.Navigation, null, Keys.C, MyJoystickButtonsEnum.JDDown, null);\n            m_defaultGameControlsList[(int)MyGameControlEnums.STRAFE_LEFT] = new MyControl(MyGameControlEnums.STRAFE_LEFT, MyGuiGameControlsHelpers.GetGameControlHelper(MyGameControlEnums.STRAFE_LEFT).DescriptionEnum, MyGuiControlTypeEnum.Navigation, null, Keys.A, MyJoystickButtonsEnum.JDLeft, null);\n            m_defaultGameControlsList[(int)MyGameControlEnums.STRAFE_RIGHT] = new MyControl(MyGameControlEnums.STRAFE_RIGHT, MyGuiGameControlsHelpers.GetGameControlHelper(MyGameControlEnums.STRAFE_RIGHT).DescriptionEnum, MyGuiControlTypeEnum.Navigation, null, Keys.D, MyJoystickButtonsEnum.JDRight, null);\n            m_defaultGameControlsList[(int)MyGameControlEnums.ROLL_LEFT] = new MyControl(MyGameControlEnums.ROLL_LEFT, MyGuiGameControlsHelpers.GetGameControlHelper(MyGameControlEnums.ROLL_LEFT).DescriptionEnum, MyGuiControlTypeEnum.Navigation, Keys.Q);\n            m_defaultGameControlsList[(int)MyGameControlEnums.ROLL_RIGHT] = new MyControl(MyGameControlEnums.ROLL_RIGHT, MyGuiGameControlsHelpers.GetGameControlHelper(MyGameControlEnums.ROLL_RIGHT).DescriptionEnum, MyGuiControlTypeEnum.Navigation, Keys.E);\n            m_defaultGameControlsList[(int)MyGameControlEnums.ROTATION_LEFT] = new MyControl(MyGameControlEnums.ROTATION_LEFT, MyGuiGameControlsHelpers.GetGameControlHelper(MyGameControlEnums.ROTATION_LEFT).DescriptionEnum, MyGuiControlTypeEnum.Navigation, null, Keys.Left, null, MyJoystickAxesEnum.Xneg);\n            m_defaultGameControlsList[(int)MyGameControlEnums.ROTATION_RIGHT] = new MyControl(MyGameControlEnums.ROTATION_RIGHT, MyGuiGameControlsHelpers.GetGameControlHelper(MyGameControlEnums.ROTATION_RIGHT).DescriptionEnum, MyGuiControlTypeEnum.Navigation, null, Keys.Right, null, MyJoystickAxesEnum.Xpos);\n            m_defaultGameControlsList[(int)MyGameControlEnums.ROTATION_UP] = new MyControl(MyGameControlEnums.ROTATION_UP, MyGuiGameControlsHelpers.GetGameControlHelper(MyGameControlEnums.ROTATION_UP).DescriptionEnum, MyGuiControlTypeEnum.Navigation, null, Keys.Up, null, MyJoystickAxesEnum.Yneg);\n            m_defaultGameControlsList[(int)MyGameControlEnums.ROTATION_DOWN] = new MyControl(MyGameControlEnums.ROTATION_DOWN, MyGuiGameControlsHelpers.GetGameControlHelper(MyGameControlEnums.ROTATION_DOWN).DescriptionEnum, MyGuiControlTypeEnum.Navigation, null, Keys.Down, null, MyJoystickAxesEnum.Ypos);\n            m_defaultGameControlsList[(int)MyGameControlEnums.HEADLIGHTS] = new MyControl(MyGameControlEnums.HEADLIGHTS, MyGuiGameControlsHelpers.GetGameControlHelper(MyGameControlEnums.HEADLIGHTS).DescriptionEnum, MyGuiControlTypeEnum.Systems2, Keys.H);\n            //m_defaultGameControlsList[(int)MyGameControlEnums.ENGINE_SHUTDOWN] = new MyControl(MyGameControlEnums.ENGINE_SHUTDOWN, MyGuiGameControlsHelpers.GetGameControlHelper(MyGameControlEnums.ENGINE_SHUTDOWN).DescriptionEnum, MyGuiControlTypeEnum.Systems1, Keys.T);\n            m_defaultGameControlsList[(int)MyGameControlEnums.HARVEST] = new MyControl(MyGameControlEnums.HARVEST, MyGuiGameControlsHelpers.GetGameControlHelper(MyGameControlEnums.HARVEST).DescriptionEnum, MyGuiControlTypeEnum.Systems2, Keys.B);\n            m_defaultGameControlsList[(int)MyGameControlEnums.ZOOM_IN] = new MyControl(MyGameControlEnums.ZOOM_IN, MyGuiGameControlsHelpers.GetGameControlHelper(MyGameControlEnums.ZOOM_IN).DescriptionEnum, MyGuiControlTypeEnum.Systems1, Keys.R);\n            m_defaultGameControlsList[(int)MyGameControlEnums.ZOOM_OUT] = new MyControl(MyGameControlEnums.ZOOM_OUT, MyGuiGameControlsHelpers.GetGameControlHelper(MyGameControlEnums.ZOOM_OUT).DescriptionEnum, MyGuiControlTypeEnum.Systems1, Keys.V);\n            m_defaultGameControlsList[(int)MyGameControlEnums.QUICK_ZOOM] = new MyControl(MyGameControlEnums.QUICK_ZOOM, MyGuiGameControlsHelpers.GetGameControlHelper(MyGameControlEnums.QUICK_ZOOM).DescriptionEnum, MyGuiControlTypeEnum.Systems1, Keys.G);\n            m_defaultGameControlsList[(int)MyGameControlEnums.TRAVEL] = new MyControl(MyGameControlEnums.TRAVEL, MyGuiGameControlsHelpers.GetGameControlHelper(MyGameControlEnums.TRAVEL).DescriptionEnum, MyGuiControlTypeEnum.Systems1, Keys.Home);\n            m_defaultGameControlsList[(int)MyGameControlEnums.SELECT_AMMO_BULLET] = new MyControl(MyGameControlEnums.SELECT_AMMO_BULLET, MyGuiGameControlsHelpers.GetGameControlHelper(MyGameControlEnums.SELECT_AMMO_BULLET).DescriptionEnum, MyGuiControlTypeEnum.Weapons, Keys.D1);\n            m_defaultGameControlsList[(int)MyGameControlEnums.SELECT_AMMO_MISSILE] = new MyControl(MyGameControlEnums.SELECT_AMMO_MISSILE, MyGuiGameControlsHelpers.GetGameControlHelper(MyGameControlEnums.SELECT_AMMO_MISSILE).DescriptionEnum, MyGuiControlTypeEnum.Weapons, Keys.D2);\n            m_defaultGameControlsList[(int)MyGameControlEnums.SELECT_AMMO_CANNON] = new MyControl(MyGameControlEnums.SELECT_AMMO_CANNON, MyGuiGameControlsHelpers.GetGameControlHelper(MyGameControlEnums.SELECT_AMMO_CANNON).DescriptionEnum, MyGuiControlTypeEnum.Weapons, Keys.D3);\n            m_defaultGameControlsList[(int)MyGameControlEnums.SELECT_AMMO_UNIVERSAL_LAUNCHER_FRONT] = new MyControl(MyGameControlEnums.SELECT_AMMO_UNIVERSAL_LAUNCHER_FRONT, MyGuiGameControlsHelpers.GetGameControlHelper(MyGameControlEnums.SELECT_AMMO_UNIVERSAL_LAUNCHER_FRONT).DescriptionEnum, MyGuiControlTypeEnum.Weapons, Keys.D4);\n            m_defaultGameControlsList[(int)MyGameControlEnums.AUTO_LEVEL] = new MyControl(MyGameControlEnums.AUTO_LEVEL, MyGuiGameControlsHelpers.GetGameControlHelper(MyGameControlEnums.AUTO_LEVEL).DescriptionEnum, MyGuiControlTypeEnum.Systems2, Keys.N);\n            m_defaultGameControlsList[(int)MyGameControlEnums.DRILL] = new MyControl(MyGameControlEnums.DRILL, MyGuiGameControlsHelpers.GetGameControlHelper(MyGameControlEnums.DRILL).DescriptionEnum, MyGuiControlTypeEnum.Systems2, Keys.M);\n            m_defaultGameControlsList[(int)MyGameControlEnums.REAR_CAM] = new MyControl(MyGameControlEnums.REAR_CAM, MyGuiGameControlsHelpers.GetGameControlHelper(MyGameControlEnums.REAR_CAM).DescriptionEnum, MyGuiControlTypeEnum.Systems1, Keys.K);\n            m_defaultGameControlsList[(int)MyGameControlEnums.SELECT_AMMO_UNIVERSAL_LAUNCHER_BACK] = new MyControl(MyGameControlEnums.SELECT_AMMO_UNIVERSAL_LAUNCHER_BACK, MyGuiGameControlsHelpers.GetGameControlHelper(MyGameControlEnums.SELECT_AMMO_UNIVERSAL_LAUNCHER_BACK).DescriptionEnum, MyGuiControlTypeEnum.Weapons, Keys.D5);\n            //m_defaultGameControlsList[(int)MyGameControlEnums.SWITCH_RADAR_MODE] = new MyControl(MyGameControlEnums.SWITCH_RADAR_MODE, MyGuiGameControlsHelpers.GetGameControlHelper(MyGameControlEnums.SWITCH_RADAR_MODE).DescriptionEnum, MyGuiControlTypeEnum.Systems2, Keys.OemTilde);\n            m_defaultGameControlsList[(int)MyGameControlEnums.AFTERBURNER] = new MyControl(MyGameControlEnums.AFTERBURNER, MyGuiGameControlsHelpers.GetGameControlHelper(MyGameControlEnums.AFTERBURNER).DescriptionEnum, MyGuiControlTypeEnum.Navigation, Keys.LeftShift);\n            //m_defaultGameControlsList[(int)MyGameControlEnums.FULLSCREEN_RADAR] = new MyControl(MyGameControlEnums.FULLSCREEN_RADAR, MyGuiGameControlsHelpers.GetGameControlHelper(MyGameControlEnums.FULLSCREEN_RADAR).DescriptionEnum, MyGuiControlTypeEnum.Systems2, Keys.Tab);\n            m_defaultGameControlsList[(int)MyGameControlEnums.CHANGE_DRONE_MODE] = new MyControl(MyGameControlEnums.CHANGE_DRONE_MODE, MyGuiGameControlsHelpers.GetGameControlHelper(MyGameControlEnums.CHANGE_DRONE_MODE).DescriptionEnum, MyGuiControlTypeEnum.Systems2, Keys.End);\n            //m_defaultGameControlsList[(int)MyGameControlEnums.RADAR_ZOOM_IN] = new MyControl(MyGameControlEnums.RADAR_ZOOM_IN, MyGuiGameControlsHelpers.GetGameControlHelper(MyGameControlEnums.RADAR_ZOOM_IN).DescriptionEnum, MyGuiControlTypeEnum.Systems2, Keys.OemPlus, Keys.Add);\n            //m_defaultGameControlsList[(int)MyGameControlEnums.RADAR_ZOOM_OUT] = new MyControl(MyGameControlEnums.RADAR_ZOOM_OUT, MyGuiGameControlsHelpers.GetGameControlHelper(MyGameControlEnums.RADAR_ZOOM_OUT).DescriptionEnum, MyGuiControlTypeEnum.Systems2, Keys.OemMinus, Keys.Subtract);\n            m_defaultGameControlsList[(int)MyGameControlEnums.MOVEMENT_SLOWDOWN] = new MyControl(MyGameControlEnums.MOVEMENT_SLOWDOWN, MyGuiGameControlsHelpers.GetGameControlHelper(MyGameControlEnums.MOVEMENT_SLOWDOWN).DescriptionEnum, MyGuiControlTypeEnum.Systems2, Keys.X);\n            m_defaultGameControlsList[(int)MyGameControlEnums.VIEW_MODE] = new MyControl(MyGameControlEnums.VIEW_MODE, MyGuiGameControlsHelpers.GetGameControlHelper(MyGameControlEnums.VIEW_MODE).DescriptionEnum, MyGuiControlTypeEnum.Systems2, Keys.O);\n            m_defaultGameControlsList[(int)MyGameControlEnums.WEAPON_SPECIAL] = new MyControl(MyGameControlEnums.WEAPON_SPECIAL, MyGuiGameControlsHelpers.GetGameControlHelper(MyGameControlEnums.WEAPON_SPECIAL).DescriptionEnum, MyGuiControlTypeEnum.Weapons, Keys.Z);\n            m_defaultGameControlsList[(int)MyGameControlEnums.WHEEL_CONTROL] = new MyControl(MyGameControlEnums.WHEEL_CONTROL, MyGuiGameControlsHelpers.GetGameControlHelper(MyGameControlEnums.WHEEL_CONTROL).DescriptionEnum, MyGuiControlTypeEnum.Systems2, MyMouseButtonsEnum.Middle, Keys.Back, null, null);\n            m_defaultGameControlsList[(int)MyGameControlEnums.MISSION_DIALOG] = new MyControl(MyGameControlEnums.MISSION_DIALOG, MyGuiGameControlsHelpers.GetGameControlHelper(MyGameControlEnums.MISSION_DIALOG).DescriptionEnum, MyGuiControlTypeEnum.Deleted, Keys.J);\n            m_defaultGameControlsList[(int)MyGameControlEnums.HEADLIGTHS_DISTANCE] = new MyControl(MyGameControlEnums.HEADLIGTHS_DISTANCE, MyGuiGameControlsHelpers.GetGameControlHelper(MyGameControlEnums.HEADLIGTHS_DISTANCE).DescriptionEnum, MyGuiControlTypeEnum.Systems2, Keys.L);\n            m_defaultGameControlsList[(int)MyGameControlEnums.GPS] = new MyControl(MyGameControlEnums.GPS, MyGuiGameControlsHelpers.GetGameControlHelper(MyGameControlEnums.GPS).DescriptionEnum, MyGuiControlTypeEnum.Systems1, Keys.T);\n\n            m_defaultGameControlsList[(int)MyGameControlEnums.NOTIFICATION_CONFIRMATION] = new MyControl(MyGameControlEnums.NOTIFICATION_CONFIRMATION, MyGuiGameControlsHelpers.GetGameControlHelper(MyGameControlEnums.NOTIFICATION_CONFIRMATION).DescriptionEnum, MyGuiControlTypeEnum.Systems1, Keys.Y);\n            m_defaultGameControlsList[(int)MyGameControlEnums.INVENTORY] = new MyControl(MyGameControlEnums.INVENTORY, MyGuiGameControlsHelpers.GetGameControlHelper(MyGameControlEnums.INVENTORY).DescriptionEnum, MyGuiControlTypeEnum.Systems1, Keys.I);\n\n            //m_defaultGameControlsList[(int)MyGameControlEnums.COMM_AVATAR_SELECT] = new MyControl(MyGameControlEnums.COMM_AVATAR_SELECT, MyGuiGameControlsHelpers.GetGameControlHelper(MyGameControlEnums.COMM_AVATAR_SELECT).DescriptionEnum, MyGuiControlTypeEnum.Communications, Keys.None);\n\n            m_defaultGameControlsList[(int)MyGameControlEnums.PREVIOUS_CAMERA] = new MyControl(MyGameControlEnums.PREVIOUS_CAMERA, MyGuiGameControlsHelpers.GetGameControlHelper(MyGameControlEnums.PREVIOUS_CAMERA).DescriptionEnum, MyGuiControlTypeEnum.Systems1, Keys.OemOpenBrackets);\n            m_defaultGameControlsList[(int)MyGameControlEnums.NEXT_CAMERA] = new MyControl(MyGameControlEnums.NEXT_CAMERA, MyGuiGameControlsHelpers.GetGameControlHelper(MyGameControlEnums.NEXT_CAMERA).DescriptionEnum, MyGuiControlTypeEnum.Systems1, Keys.OemCloseBrackets);\n            m_defaultGameControlsList[(int)MyGameControlEnums.USE] = new MyControl(MyGameControlEnums.USE, MyGuiGameControlsHelpers.GetGameControlHelper(MyGameControlEnums.USE).DescriptionEnum, MyGuiControlTypeEnum.Systems1, Keys.Space);\n\n            m_defaultGameControlsList[(int)MyGameControlEnums.FIRE_HOLOGRAM_FRONT   ] = new MyControl(MyGameControlEnums.FIRE_HOLOGRAM_FRONT   , MyGuiGameControlsHelpers.GetGameControlHelper(MyGameControlEnums.FIRE_HOLOGRAM_FRONT   ).DescriptionEnum, MyGuiControlTypeEnum.SpecialWeapons);\n            m_defaultGameControlsList[(int)MyGameControlEnums.FIRE_HOLOGRAM_BACK    ] = new MyControl(MyGameControlEnums.FIRE_HOLOGRAM_BACK    , MyGuiGameControlsHelpers.GetGameControlHelper(MyGameControlEnums.FIRE_HOLOGRAM_BACK    ).DescriptionEnum, MyGuiControlTypeEnum.SpecialWeapons, Keys.NumPad1);\n            m_defaultGameControlsList[(int)MyGameControlEnums.FIRE_BASIC_MINE_FRONT ] = new MyControl(MyGameControlEnums.FIRE_BASIC_MINE_FRONT , MyGuiGameControlsHelpers.GetGameControlHelper(MyGameControlEnums.FIRE_BASIC_MINE_FRONT ).DescriptionEnum, MyGuiControlTypeEnum.SpecialWeapons);\n            m_defaultGameControlsList[(int)MyGameControlEnums.FIRE_BASIC_MINE_BACK  ] = new MyControl(MyGameControlEnums.FIRE_BASIC_MINE_BACK  , MyGuiGameControlsHelpers.GetGameControlHelper(MyGameControlEnums.FIRE_BASIC_MINE_BACK  ).DescriptionEnum, MyGuiControlTypeEnum.SpecialWeapons, Keys.NumPad2);\n            m_defaultGameControlsList[(int)MyGameControlEnums.FIRE_SMART_MINE_FRONT ] = new MyControl(MyGameControlEnums.FIRE_SMART_MINE_FRONT , MyGuiGameControlsHelpers.GetGameControlHelper(MyGameControlEnums.FIRE_SMART_MINE_FRONT ).DescriptionEnum, MyGuiControlTypeEnum.SpecialWeapons);\n            m_defaultGameControlsList[(int)MyGameControlEnums.FIRE_SMART_MINE_BACK  ] = new MyControl(MyGameControlEnums.FIRE_SMART_MINE_BACK  , MyGuiGameControlsHelpers.GetGameControlHelper(MyGameControlEnums.FIRE_SMART_MINE_BACK  ).DescriptionEnum, MyGuiControlTypeEnum.SpecialWeapons, Keys.NumPad3);\n            m_defaultGameControlsList[(int)MyGameControlEnums.FIRE_FLASH_BOMB_FRONT ] = new MyControl(MyGameControlEnums.FIRE_FLASH_BOMB_FRONT , MyGuiGameControlsHelpers.GetGameControlHelper(MyGameControlEnums.FIRE_FLASH_BOMB_FRONT ).DescriptionEnum, MyGuiControlTypeEnum.SpecialWeapons);\n            m_defaultGameControlsList[(int)MyGameControlEnums.FIRE_FLASH_BOMB_BACK  ] = new MyControl(MyGameControlEnums.FIRE_FLASH_BOMB_BACK  , MyGuiGameControlsHelpers.GetGameControlHelper(MyGameControlEnums.FIRE_FLASH_BOMB_BACK  ).DescriptionEnum, MyGuiControlTypeEnum.SpecialWeapons, Keys.NumPad4);\n            m_defaultGameControlsList[(int)MyGameControlEnums.FIRE_DECOY_FLARE_FRONT] = new MyControl(MyGameControlEnums.FIRE_DECOY_FLARE_FRONT, MyGuiGameControlsHelpers.GetGameControlHelper(MyGameControlEnums.FIRE_DECOY_FLARE_FRONT).DescriptionEnum, MyGuiControlTypeEnum.SpecialWeapons);\n            m_defaultGameControlsList[(int)MyGameControlEnums.FIRE_DECOY_FLARE_BACK ] = new MyControl(MyGameControlEnums.FIRE_DECOY_FLARE_BACK , MyGuiGameControlsHelpers.GetGameControlHelper(MyGameControlEnums.FIRE_DECOY_FLARE_BACK ).DescriptionEnum, MyGuiControlTypeEnum.SpecialWeapons, Keys.NumPad5);\n            m_defaultGameControlsList[(int)MyGameControlEnums.FIRE_SMOKE_BOMB_FRONT ] = new MyControl(MyGameControlEnums.FIRE_SMOKE_BOMB_FRONT , MyGuiGameControlsHelpers.GetGameControlHelper(MyGameControlEnums.FIRE_SMOKE_BOMB_FRONT ).DescriptionEnum, MyGuiControlTypeEnum.SpecialWeapons, Keys.NumPad6);\n            m_defaultGameControlsList[(int)MyGameControlEnums.FIRE_SMOKE_BOMB_BACK  ] = new MyControl(MyGameControlEnums.FIRE_SMOKE_BOMB_BACK  , MyGuiGameControlsHelpers.GetGameControlHelper(MyGameControlEnums.FIRE_SMOKE_BOMB_BACK  ).DescriptionEnum, MyGuiControlTypeEnum.SpecialWeapons);\n\n            m_defaultGameControlsList[(int)MyGameControlEnums.DRONE_DEPLOY] = new MyControl(MyGameControlEnums.DRONE_DEPLOY, MyGuiGameControlsHelpers.GetGameControlHelper(MyGameControlEnums.DRONE_DEPLOY).DescriptionEnum, MyGuiControlTypeEnum.Systems2, Keys.Insert);\n            m_defaultGameControlsList[(int)MyGameControlEnums.DRONE_CONTROL] = new MyControl(MyGameControlEnums.DRONE_CONTROL, MyGuiGameControlsHelpers.GetGameControlHelper(MyGameControlEnums.DRONE_CONTROL).DescriptionEnum, MyGuiControlTypeEnum.Systems2, Keys.Delete);\n            m_defaultGameControlsList[(int)MyGameControlEnums.CONTROL_SECONDARY_CAMERA] = new MyControl(MyGameControlEnums.CONTROL_SECONDARY_CAMERA, MyGuiGameControlsHelpers.GetGameControlHelper(MyGameControlEnums.CONTROL_SECONDARY_CAMERA).DescriptionEnum, MyGuiControlTypeEnum.Systems1, Keys.OemTilde);\n\n            m_defaultGameControlsList[(int)MyGameControlEnums.PREV_TARGET] = new MyControl(MyGameControlEnums.PREV_TARGET, MyGuiGameControlsHelpers.GetGameControlHelper(MyGameControlEnums.PREV_TARGET).DescriptionEnum, MyGuiControlTypeEnum.Weapons, Keys.OemComma);\n            m_defaultGameControlsList[(int)MyGameControlEnums.NEXT_TARGET] = new MyControl(MyGameControlEnums.NEXT_TARGET, MyGuiGameControlsHelpers.GetGameControlHelper(MyGameControlEnums.NEXT_TARGET).DescriptionEnum, MyGuiControlTypeEnum.Weapons, Keys.OemPeriod);\n\n            m_defaultGameControlsList[(int)MyGameControlEnums.CHAT] = new MyControl(MyGameControlEnums.CHAT, MyGuiGameControlsHelpers.GetGameControlHelper(MyGameControlEnums.CHAT).DescriptionEnum, MyGuiControlTypeEnum.Systems2, Keys.Enter);\n            m_defaultGameControlsList[(int)MyGameControlEnums.SCORE] = new MyControl(MyGameControlEnums.SCORE, MyGuiGameControlsHelpers.GetGameControlHelper(MyGameControlEnums.SCORE).DescriptionEnum, MyGuiControlTypeEnum.Systems2, Keys.Tab);\n\n            // Editor default controls\n            m_defaultEditorControlsList[(int)MyEditorControlEnums.DECREASE_GRID_SCALE] = new MyControl(MyEditorControlEnums.DECREASE_GRID_SCALE, MyGuiGameControlsHelpers.GetEditorControlHelper(MyEditorControlEnums.DECREASE_GRID_SCALE).DescriptionEnum, MyGuiControlTypeEnum.Editor, Keys.OemMinus);\n            m_defaultEditorControlsList[(int)MyEditorControlEnums.INCREASE_GRID_SCALE] = new MyControl(MyEditorControlEnums.INCREASE_GRID_SCALE, MyGuiGameControlsHelpers.GetEditorControlHelper(MyEditorControlEnums.INCREASE_GRID_SCALE).DescriptionEnum, MyGuiControlTypeEnum.Editor, Keys.OemPlus);\n            m_defaultEditorControlsList[(int)MyEditorControlEnums.PRIMARY_ACTION_KEY] = new MyControl(MyEditorControlEnums.PRIMARY_ACTION_KEY, MyGuiGameControlsHelpers.GetEditorControlHelper(MyEditorControlEnums.PRIMARY_ACTION_KEY).DescriptionEnum, MyGuiControlTypeEnum.Editor, MyMouseButtonsEnum.Left);\n            m_defaultEditorControlsList[(int)MyEditorControlEnums.SECONDARY_ACTION_KEY] = new MyControl(MyEditorControlEnums.SECONDARY_ACTION_KEY, MyGuiGameControlsHelpers.GetEditorControlHelper(MyEditorControlEnums.SECONDARY_ACTION_KEY).DescriptionEnum, MyGuiControlTypeEnum.Editor, MyMouseButtonsEnum.Right);\n            m_defaultEditorControlsList[(int)MyEditorControlEnums.SWITCH_GIZMO_MODE] = new MyControl(MyEditorControlEnums.SWITCH_GIZMO_MODE, MyGuiGameControlsHelpers.GetEditorControlHelper(MyEditorControlEnums.SWITCH_GIZMO_MODE).DescriptionEnum, MyGuiControlTypeEnum.Editor, Keys.T);\n            m_defaultEditorControlsList[(int)MyEditorControlEnums.SWITCH_GIZMO_SPACE] = new MyControl(MyEditorControlEnums.SWITCH_GIZMO_SPACE, MyGuiGameControlsHelpers.GetEditorControlHelper(MyEditorControlEnums.SWITCH_GIZMO_SPACE).DescriptionEnum, MyGuiControlTypeEnum.Editor, Keys.Space);\n            m_defaultEditorControlsList[(int)MyEditorControlEnums.VOXEL_HAND] = new MyControl(MyEditorControlEnums.VOXEL_HAND, MyGuiGameControlsHelpers.GetEditorControlHelper(MyEditorControlEnums.VOXEL_HAND).DescriptionEnum, MyGuiControlTypeEnum.Editor, Keys.V);\n\n            CheckValidControls(m_defaultGameControlsList);\n            CheckValidControls(m_defaultEditorControlsList);\n\n            CloneControls(m_defaultGameControlsList, m_gameControlsList);\n            CloneControls(m_defaultEditorControlsList, m_editorControlsList);\n\n            LoadControls();\n            TakeSnapshot();\n\n            //  Make sure that DirectInput has been initialized\n            InitializeJoystickIfPossible();\n\n            m_keyboardState = new MyGuiLocalizedKeyboardState();\n            m_actualMouseState = MinerWars.AppCode.Toolkit.Input.MyWindowsMouse.GetCurrentState();\n\n            if (MyVideoModeManager.IsHardwareCursorUsed())\n            {\n                /*\n                if (MyMinerGame.Static.Window.Handle == GetForegroundWindow() && MyGuiManager.GetScreenWithFocus() != null && MyGuiManager.GetScreenWithFocus().GetDrawMouseCursor() == false)\n                    SetMouseToScreenCenter();\n                */\n            }else\n                SetMouseToScreenCenter();\n\n            UpdateStates();\n        }\n\n        ~MyGuiInput()\n        {\n            Dispose();\n        }\n\n        void CheckValidControls(MyControl[] controls)\n        {\n            foreach (MyControl control in controls)\n            {                \n                MyCommonDebugUtils.AssertDebug(IsKeyValid(control.GetKeyboardControl()));                \n                MyCommonDebugUtils.AssertDebug(IsMouseButtonValid(control.GetMouseControl()));\n                MyCommonDebugUtils.AssertDebug(IsJoystickButtonValid(control.GetJoystickControl()));                \n            }\n        }\n\n        public List<string> EnumerateJoystickNames()\n        {\n            var results = new List<string>();\n\n            DirectInput dinput = new DirectInput();\n            var devices = dinput.GetDevices(DeviceClass.GameControl, DeviceEnumerationFlags.AttachedOnly);\n            for (int i = 0; i < devices.Count; i++)\n            {\n                var device = devices[i];\n                results.Add(device.InstanceName);\n            }\n            return results;\n        }\n\n        //call this on call back when something is beeing plugged in or unplugged\n        void InitializeJoystickIfPossible()\n        {\n            // try to dispose of the old joystick\n            if (m_joystick != null)\n            {\n                m_joystick.Dispose();\n                m_joystick = null;\n                m_joystickConnected = false;\n                m_joystickType = null;\n            }\n            if (m_joystick == null)\n            {\n                // Joystick disabled?\n                if (m_joystickInstanceName == null) return;\n\n                //  Make sure that DirectInput has been initialized\n                DirectInput dinput = new DirectInput();\n\n                //  Try to grab the joystick with the correct instance name\n                foreach (var device in dinput.GetDevices(DeviceClass.GameControl, DeviceEnumerationFlags.AttachedOnly))\n                {\n                    if (device.InstanceName != m_joystickInstanceName)\n                        continue;\n                    \n                    try\n                    {\n                        //device.Type\n                        m_joystick = new Joystick(dinput, device.InstanceGuid);\n                        m_joystickType = device.Type;\n\n                        MethodInfo setCooperativeLevel = typeof(Device).GetMethod(\"SetCooperativeLevel\",\n                                                                                     new[]\n                                                                                         {\n                                                                                             typeof (IntPtr),\n                                                                                             typeof (CooperativeLevel)\n                                                                                         });\n\n                        // Workaround for not need to reference System.Windows.Forms\n                        setCooperativeLevel.Invoke(m_joystick,\n                                                   new object[]\n                                                       {\n                                                           MyMinerGame.Static.Window.NativeWindow.Handle,\n                                                           CooperativeLevel.Exclusive | CooperativeLevel.Foreground\n                                                       });\n\n                        break;\n                    }\n                    catch (SharpDX.SharpDXException)\n                    {\n                    }\n                }\n                \n                // load and acquire joystick\n                // both joystick and xbox 360 gamepad are treated as joystick device by slimdx\n                if (m_joystick != null)\n                {\n                    int sliderCount = 0;\n                    m_joystickXAxisSupported = m_joystickYAxisSupported = m_joystickZAxisSupported = false;\n                    m_joystickRotationXAxisSupported = m_joystickRotationYAxisSupported = m_joystickRotationZAxisSupported = false;\n                    m_joystickSlider1AxisSupported = m_joystickSlider2AxisSupported = false;\n                    foreach (DeviceObjectInstance doi in m_joystick.GetObjects())\n                    {\n                        if ((doi.ObjectId.Flags & DeviceObjectTypeFlags.Axis) != 0)\n                        {\n                            // set range 0..65535 for each axis\n                            m_joystick.GetObjectPropertiesById(doi.ObjectId).Range = new InputRange(0, 65535);\n\n                            // find out which axes are supported\n                            if (doi.ObjectType == ObjectGuid.XAxis) m_joystickXAxisSupported = true;\n                            else if (doi.ObjectType == ObjectGuid.YAxis) m_joystickYAxisSupported = true;\n                            else if (doi.ObjectType == ObjectGuid.ZAxis) m_joystickZAxisSupported = true;\n                            else if (doi.ObjectType == ObjectGuid.RxAxis) m_joystickRotationXAxisSupported = true;\n                            else if (doi.ObjectType == ObjectGuid.RyAxis) m_joystickRotationYAxisSupported = true;\n                            else if (doi.ObjectType == ObjectGuid.RzAxis) m_joystickRotationZAxisSupported = true;\n                            else if (doi.ObjectType == ObjectGuid.Slider)\n                            {\n                                sliderCount++;\n                                if (sliderCount >= 1) m_joystickSlider1AxisSupported = true;\n                                if (sliderCount >= 2) m_joystickSlider2AxisSupported = true;\n                            }\n                        }\n                    }\n\n                    // acquire the device\n                    m_joystick.Acquire();\n                    m_joystickConnected = true;\n                }\n                dinput.Dispose();\n            }\n        }\n\n        // hook to wnd proc and catch WM_DEVICECHANGE event\n        private unsafe int WndHookProc(int nCode, int wParam, int lParam)\n        {\n            if (nCode >= 0)\n            {\n                if (((MyWindowsAPIWrapper.DeviceChangeHookStruct*)lParam)->message == MyWindowsAPIWrapper.WM_DEVICECHANGE)\n                {\n                    InitializeJoystickIfPossible();\n                }\n            }\n            return MyWindowsAPIWrapper.CallNextHookEx(m_hHook, nCode, wParam, lParam);\n        }\n\n        private void InitDevicePluginHandlerCallBack()\n        {\n            m_hookHandler = new MyWindowsAPIWrapper.HookProc(WndHookProc);\n            m_hHook = MyWindowsAPIWrapper.SetWindowsHookEx(MyWindowsAPIWrapper.HookType.WH_CALLWNDPROC, m_hookHandler, (IntPtr)0, (uint) AppDomain.GetCurrentThreadId());\n        }\n\n        private void UninitDevicePluginHandlerCallBack()\n        {\n            if (m_hHook != 0)\n            {\n                MyWindowsAPIWrapper.UnhookWindowsHookEx(m_hHook);\n                m_hHook = 0;\n            }\n        }\n        \n\n        void UpdateStates()\n        {\n            m_previousMouseState = m_actualMouseState;\n            m_keyboardState.UpdateStates();\n            m_actualMouseState = MinerWars.AppCode.Toolkit.Input.MyWindowsMouse.GetCurrentState();\n            if (IsJoystickConnected())\n            {\n                //  Try/catch block around the joystick .Poll() function to catch an exception thrown when the device is detached DURING gameplay. \n                try\n                {\n                    m_joystick.Acquire();\n                    m_joystick.Poll();\n\n                    m_joystick.Poll();//grab next joystick state\n                    m_previousJoystickState = m_actualJoystickState;\n                    m_actualJoystickState = ((Joystick)m_joystick).GetCurrentState();\n                }\n                catch\n                {\n                    m_joystickConnected = false;\n                }\n            }\n        }\n\n        //  Update keyboard/mouse input and return true if application has focus (is active). Otherwise false.\n        public bool Update()\n        {\n            bool ret;\n            \n            if (MyMinerGame.Static.IsActive == true && \n                ((MinerWars.AppCode.ExternalEditor.MyEditorBase.Static == null && MyMinerGame.Static.Window.NativeWindow.Handle == GetForegroundWindow())\n                ||\n                (MinerWars.AppCode.ExternalEditor.MyEditorBase.Static != null && !MinerWars.AppCode.ExternalEditor.MyEditorBase.IsEditorActive))\n                )\n            {\n                                \n\n                if (m_previousUpdateWasLostFocus == true)\n                {\n                    // we sets game mouse cursor to position, when was windows mouse cursor\n                    MyMouseState windowsMouseState = MinerWars.AppCode.Toolkit.Input.MyWindowsMouse.GetCurrentState();\n                    MyGuiManager.MouseCursorPosition = new MinerWarsMath.Vector2((float)windowsMouseState.X / MyMinerGame.ScreenSize.X, (float)windowsMouseState.Y / MyMinerGame.ScreenSize.Y);                    \n\n                    //  When we return from lost focus, we must set mouse to the middle of the screen, otherwise we will see jump as user moved the mouse while he was out-of-focus\n                    if (MyVideoModeManager.IsHardwareCursorUsed()) {\n                        if(MyGuiManager.GetScreenWithFocus() != null && MyGuiManager.GetScreenWithFocus().GetDrawMouseCursor() == false)    \n                            SetMouseToScreenCenter();                                        \n                    } else\n                        SetMouseToScreenCenter();\n                }\n\n                UpdateStates();\n\n                if (IsNewLeftMouseReleased())\n                {\n                    var screenCoordinate = MyGuiManager.GetScreenCoordinateFromNormalizedCoordinate(MyGuiManager.MouseCursorPosition);\n                    \n                    m_leftButtonDoubleClick = MyMinerGame.TotalTimeInMilliseconds - m_lastLeftButtonClickTime < DOUBLE_CLICK_DELAY &&\n                        (screenCoordinate - m_lastLeftButtonMousePosition).LengthSquared() < DOUBLE_CLICK_MAXIMUM_DISTANCE_SQUARED;\n\n                    m_lastLeftButtonClickTime = m_leftButtonDoubleClick ? 0 : MyMinerGame.TotalTimeInMilliseconds;\n                    m_lastLeftButtonMousePosition = screenCoordinate;\n                }\n                else\n                {\n                    m_leftButtonDoubleClick = false;\n                }\n\n                //  Set mouse position to the middle of the screen. We must do it here, right after we retrieved latest mouse state, because\n                //  if rest of this update method takes lonk time and we set it then, all mouse movement between this place and end of this\n                //  method will be lost and user will feel like we are out of sync\n                if (MyVideoModeManager.IsHardwareCursorUsed())\n                {\n\n                    if (MyGuiManager.GetScreenWithFocus() != null && MyGuiManager.GetScreenWithFocus().GetDrawMouseCursor() == false && !MyGuiManager.InputToNonFocusedScreens)\n                    {\n                        /*\n                        Trace.SendMsgLastCall(MyGuiManager.GetScreenWithFocus().GetFriendlyName());\n                        Trace.SendMsgLastCall(MyGuiManager.GetScreenWithFocus().GetDrawMouseCursor().ToString());\n                        Trace.SendMsgLastCall(\"tu\");\n                        SetMouseToScreenCenter();\n                        */\n                    }\n                }\n                else\n                    SetMouseToScreenCenter();\n\n                ret = true;\n            }\n            else\n            {\n                ret = false;\n            }\n\n            m_previousUpdateWasLostFocus = !MyMinerGame.Static.IsActive;\n\n            return ret;\n        }\n\n        //  Return true if ANY key IS pressed, that means that the key was pressed now. During previous Update it wasn't pressed at all.\n        public bool IsAnyKeyPress()\n        {\n            return (m_keyboardState.IsAnyKeyPressed());\n        }\n\n        //  Return true if ANY NEW key IS pressed, that means that the key was pressed now. During previous Update it wasn't pressed at all.\n        public bool IsAnyNewKeyPress()\n        {\n            return (m_keyboardState.IsAnyKeyPressed() && !m_keyboardState.GetPreviousKeyboardState().IsAnyKeyPressed());\n        }\n\n        //  Return true if ANY mouse key IS pressed.\n        public bool IsAnyMousePress()\n        {\n            return (m_actualMouseState.LeftButton) || (m_actualMouseState.MiddleButton) || (m_actualMouseState.RightButton);\n        }\n\n        //  Check to see if any button is currently pressed on the joystick\n        public bool IsAnyJoystickButtonPressed()\n        {\n            if (m_joystickConnected)\n            {\n                foreach (bool button in m_actualJoystickState.Buttons)\n                {\n                    if (button)\n                    {\n                        return true;\n                    }\n                }\n            }\n            return false;\n        }\n\n        public DeviceType ? GetJoystickType(){\n            return m_joystickType;\n        }\n\n        //True if any SHIFT key is pressed\n        public bool IsAnyShiftKeyPressed()\n        {\n            return IsKeyPress(Keys.LeftShift) || IsKeyPress(Keys.RightShift);\n        }\n\n        //True if any ALT key is pressed\n        public bool IsAnyAltKeyPressed()\n        {\n            return IsKeyPress(Keys.LeftAlt) || IsKeyPress(Keys.RightAlt);\n        }\n\n        //True if any ALT key was pressed\n        public bool WasAnyAltKeyPressed()\n        {\n            return WasKeyPressed(Keys.LeftAlt) || WasKeyPressed(Keys.RightAlt);\n        }\n\n        //True if any CTRL key is pressed\n        public bool IsAnyCtrlKeyPressed()\n        {\n            return IsKeyPress(Keys.LeftControl) || IsKeyPress(Keys.RightControl);\n        }\n\n        //  Gets an array of values that correspond to the keyboard keys that are currently\n        //  being pressed. Reference page contains links to related code samples.\n        public void GetPressedKeys(List<Toolkit.Input.Keys> keys)\n        {\n            m_keyboardState.GetActualPressedKeys(keys);\n        }\n\n        #region Key Button States\n\n        //  Return true if new key pressed right now. Don't care if it was pressed in previous update too.\n        public bool IsKeyPress(Keys key)\n        {\n            return m_keyboardState.IsKeyDown(key);\n        }\n\n        //  Return true if new key was pressed, that means this key was pressed now. During previous Update it wasn't pressed at all.\n        public bool IsNewKeyPress(Keys key)\n        {\n            return (m_keyboardState.IsKeyDown(key) && m_keyboardState.IsPreviousKeyUp(key));\n        }\n\n        //  Return true if key was pressed in previous update and now it is not.\n        public bool IsNewKeyReleased(Keys key)\n        {\n            return (m_keyboardState.IsKeyUp(key) && m_keyboardState.IsPreviousKeyDown(key));\n        }\n\n        public bool WasKeyPressed(Keys key)\n        {\n            return m_keyboardState.IsPreviousKeyDown(key);\n        }\n\n        public bool WasKeyReleased(Keys key)\n        {\n            return m_keyboardState.IsPreviousKeyUp(key);\n        }\n\n        public bool IsAnyControlPress()\n        {\n            return m_keyboardState.IsKeyDown(Keys.LeftControl) || m_keyboardState.IsKeyDown(Keys.RightControl);\n        }\n\n        public bool IsAnyShiftPress()\n        {\n            return m_keyboardState.IsKeyDown(Keys.LeftShift) || m_keyboardState.IsKeyDown(Keys.RightShift);\n        }\n\n        public bool IsAnyAltPress()\n        {\n            return m_keyboardState.IsKeyDown(Keys.LeftAlt) || m_keyboardState.IsKeyDown(Keys.RightAlt);\n        }\n\n        #endregion\n\n        #region Left Mouse Button States\n\n        //  True if LEFT mouse is pressed right now, but previous update wasn't pressed. So this is one-time press.\n        public bool IsNewLeftMousePressed()\n        {\n            return (IsLeftMousePressed() && WasLeftMouseReleased());\n        }\n\n        //  True if LEFT mouse is double clicked. This is once per update uvent.\n        public bool IsNewLeftMouseDoubleClick()\n        {\n            return m_leftButtonDoubleClick;\n        }\n\n        //  True if LEFT mouse is released right now, but previous update wasn't pressed. So this is one-time release.\n        public bool IsNewLeftMouseReleased()\n        {\n            return (IsLeftMouseReleased() && WasLeftMousePressed());\n        }\n\n        //  True if LEFT mouse is pressed right now. Don't care if it was pressed in previous update too.\n        public bool IsLeftMousePressed()\n        {\n            return (m_actualMouseState.LeftButton);\n        }\n\n        //  True if LEFT mouse is released (not pressed) right now. Don't care if it was pressed/released in previous update too.\n        public bool IsLeftMouseReleased()\n        {\n            return (m_actualMouseState.LeftButton == false);\n        }\n\n        public bool WasLeftMouseReleased()\n        {\n            return (m_previousMouseState.LeftButton == false);\n        }\n\n        //  True if LEFT mouse was pressed in previous update.\n        public bool WasLeftMousePressed()\n        {\n            return (m_previousMouseState.LeftButton);\n        }\n\n        #endregion\n\n        #region Right Mouse Button states\n\n        //  True if RIGHT mouse is pressed right now. Don't care if it was pressed in previous update too.\n        public bool IsRightMousePressed()\n        {\n            return (m_actualMouseState.RightButton);\n        }\n\n        //  True if RIGHT mouse is released (not pressed) right now. Don't care if it was pressed/released in previous update too.\n        public bool IsRightMouseReleased()\n        {\n            return (m_actualMouseState.RightButton == false);\n        }\n\n        //  True if RIGHT mouse is pressed right now, but previous update wasn't pressed. So this is one-time press.\n        public bool IsNewRightMousePressed()\n        {\n            return ((m_actualMouseState.RightButton) && (m_previousMouseState.RightButton == false));\n        }\n\n        //  True if RIGHT mouse is released right now, but previous update wasn't pressed. So this is one-time release.\n        public bool IsNewRightMouseReleased()\n        {\n            return ((m_actualMouseState.RightButton == false) && (m_previousMouseState.RightButton));\n        }\n\n        public bool WasRightMousePressed()\n        {\n            return (m_previousMouseState.RightButton);\n        }\n\n        public bool WasRightMouseReleased()\n        {\n            return (m_previousMouseState.RightButton == false);\n        }\n\n        #endregion\n\n        #region Middle Mouse Button States\n\n        //  True if MIDDLE mouse is pressed right now. Don't care if it was pressed in previous update too.\n        public bool IsMiddleMousePressed()\n        {\n            return (m_actualMouseState.MiddleButton);\n        }\n\n        //  True if MIDDLE mouse is released (not pressed) right now. Don't care if it was pressed/released in previous update too.\n        public bool IsMiddleMouseReleased()\n        {\n            return (m_actualMouseState.MiddleButton == false);\n        }\n\n        //  True if MIDDLE mouse is pressed right now, but previous update wasn't pressed. So this is one-time press.\n        public bool IsNewMiddleMousePressed()\n        {\n            return ((m_actualMouseState.MiddleButton) && (m_previousMouseState.MiddleButton == false));\n        }\n\n        //  True if MIDDLE mouse is pressed right now, but previous update wasn't pressed. So this is one-time press.\n        public bool IsNewMiddleMouseReleased()\n        {\n            return ((m_actualMouseState.MiddleButton == false) && (m_previousMouseState.MiddleButton));\n        }\n\n        public bool WasMiddleMousePressed()\n        {\n            return (m_previousMouseState.MiddleButton);\n        }\n\n        public bool WasMiddleMouseReleased()\n        {\n            return (m_previousMouseState.MiddleButton == false);\n        }\n\n        #endregion\n\n        #region XButton1 Mouse Button States\n\n        //  True if XButton1 mouse is pressed right now. Don't care if it was pressed in previous update too.\n        public bool IsXButton1MousePressed()\n        {\n            return (m_actualMouseState.XButton1);\n        }\n\n        //  True if XButton1 mouse is released (not pressed) right now. Don't care if it was pressed/released in previous update too.\n        public bool IsXButton1MouseReleased()\n        {\n            return (m_actualMouseState.XButton1 == false);\n        }\n\n        //  True if XButton1 mouse is pressed right now, but previous update wasn't pressed. So this is one-time press.\n        public bool IsNewXButton1MousePressed()\n        {\n            return ((m_actualMouseState.XButton1) && (m_previousMouseState.XButton1 == false));\n        }\n\n        public bool IsNewXButton1MouseReleased()\n        {\n            return ((m_actualMouseState.XButton1 == false) && (m_previousMouseState.XButton1));\n        }\n\n        public bool WasXButton1MousePressed()\n        {\n            return (m_previousMouseState.XButton1);\n        }\n\n        public bool WasNewXButton1MouseReleased()\n        {\n            return (m_previousMouseState.XButton1 == false);\n        }\n\n        #endregion\n\n        #region XButton2 Mouse Button States\n\n        //  True if XButton2 mouse is pressed right now. Don't care if it was pressed in previous update too.\n        public bool IsXButton2MousePressed()\n        {\n            return (m_actualMouseState.XButton2);\n        }\n\n        //  True if XButton2 mouse is released (not pressed) right now. Don't care if it was pressed/released in previous update too.\n        public bool IsXButton2MouseReleased()\n        {\n            return (m_actualMouseState.XButton2 == false);\n        }\n\n        //  True if XButton2 mouse is pressed right now, but previous update wasn't pressed. So this is one-time press.\n        public bool IsNewXButton2MousePressed()\n        {\n            return ((m_actualMouseState.XButton2) && (m_previousMouseState.XButton2 == false));\n        }\n\n        public bool IsNewXButton2MouseReleased()\n        {\n            return ((m_actualMouseState.XButton2 == false) && (m_previousMouseState.XButton2));\n        }\n\n        public bool WasXButton2MousePressed()\n        {\n            return (m_previousMouseState.XButton2);\n        }\n\n        public bool WasNewXButton2MouseReleased()\n        {\n            return (m_previousMouseState.XButton2 == false);\n        }\n\n        #endregion\n\n        #region Joystick button States\n\n        //  Check to see if a specific button on the joystick is pressed.\n        public bool IsJoystickButtonPressed(MyJoystickButtonsEnum button)\n        {\n            bool isPressed = false;\n            if (m_joystickConnected && button != MyJoystickButtonsEnum.None && m_actualJoystickState != null)\n            {\n                switch (button)\n                {\n                    case MyJoystickButtonsEnum.JDLeft: isPressed = IsGamepadKeyLeftPressed(); break;\n                    case MyJoystickButtonsEnum.JDRight: isPressed = IsGamepadKeyRightPressed(); break;\n                    case MyJoystickButtonsEnum.JDUp: isPressed = IsGamepadKeyUpPressed(); break;\n                    case MyJoystickButtonsEnum.JDDown: isPressed = IsGamepadKeyDownPressed(); break;\n                    default: isPressed = (m_actualJoystickState.Buttons[(int)button - 5]); break;\n                }\n            }\n            if (!isPressed && button == MyJoystickButtonsEnum.None)\n            {\n                return true;\n            }\n            return isPressed;\n        }\n\n        //  Check to see if a specific button on the joystick is currently pressed and was not pressed during the last update. \n        public bool IsJoystickButtonNewPressed(MyJoystickButtonsEnum button)\n        {\n            bool isNewPressed = false;\n            if (m_joystickConnected && button != MyJoystickButtonsEnum.None && m_actualJoystickState != null && m_previousJoystickState != null)\n            {\n                switch (button)\n                {\n                    case MyJoystickButtonsEnum.JDLeft: isNewPressed = IsNewGamepadKeyLeftPressed(); break;\n                    case MyJoystickButtonsEnum.JDRight: isNewPressed = IsNewGamepadKeyRightPressed(); break;\n                    case MyJoystickButtonsEnum.JDUp: isNewPressed = IsNewGamepadKeyUpPressed(); break;\n                    case MyJoystickButtonsEnum.JDDown: isNewPressed = IsNewGamepadKeyDownPressed(); break;\n                    default: isNewPressed = ((m_actualJoystickState.IsPressed((int)button - 5)) && (m_previousJoystickState.IsPressed((int)button - 5) == false)); break;\n                }\n            }\n            if (!isNewPressed && button == MyJoystickButtonsEnum.None)\n            {\n                return true;\n            }\n            return isNewPressed;\n        }\n\n        public bool IsNewJoystickButtonReleased(MyJoystickButtonsEnum button)\n        {\n            bool isReleased = false;\n            if (m_joystickConnected && button != MyJoystickButtonsEnum.None && m_actualJoystickState != null && m_previousJoystickState != null)\n            {\n                switch (button)\n                {\n                    case MyJoystickButtonsEnum.JDLeft: isReleased = IsNewGamepadKeyLeftReleased(); break;\n                    case MyJoystickButtonsEnum.JDRight: isReleased = IsNewGamepadKeyRightReleased(); break;\n                    case MyJoystickButtonsEnum.JDUp: isReleased = IsNewGamepadKeyUpReleased(); break;\n                    case MyJoystickButtonsEnum.JDDown: isReleased = IsNewGamepadKeyDownReleased(); break;\n                    default: isReleased = ((m_actualJoystickState.IsReleased((int)button - 5)) && (m_previousJoystickState.IsPressed((int)button - 5))); break;\n                }\n            }\n            if (!isReleased && button == MyJoystickButtonsEnum.None)\n            {\n                return true;\n            }\n            return isReleased;\n        }\n\n        public bool IsJoystickButtonReleased(MyJoystickButtonsEnum button)\n        {\n            bool isReleased = false;\n            if (m_joystickConnected && button != MyJoystickButtonsEnum.None && m_actualJoystickState != null)\n            {\n                switch (button)\n                {\n                    case MyJoystickButtonsEnum.JDLeft: isReleased = !IsGamepadKeyLeftPressed(); break;\n                    case MyJoystickButtonsEnum.JDRight: isReleased = !IsGamepadKeyRightPressed(); break;\n                    case MyJoystickButtonsEnum.JDUp: isReleased = !IsGamepadKeyUpPressed(); break;\n                    case MyJoystickButtonsEnum.JDDown: isReleased = !IsGamepadKeyDownPressed(); break;\n                    default: isReleased = m_actualJoystickState.IsReleased((int)button - 5); break;\n                }\n            }\n            if (!isReleased && button == MyJoystickButtonsEnum.None)\n            {\n                return true;\n            }\n            return isReleased;\n        }\n\n        //  Check to see if a specific button on the joystick was pressed.\n        public bool WasJoystickButtonPressed(MyJoystickButtonsEnum button)\n        {\n            bool wasPressed = false;\n            if (m_joystickConnected && button != MyJoystickButtonsEnum.None && m_previousJoystickState != null)\n            {\n                switch (button)\n                {\n                    case MyJoystickButtonsEnum.JDLeft: wasPressed = WasGamepadKeyLeftPressed(); break;\n                    case MyJoystickButtonsEnum.JDRight: wasPressed = WasGamepadKeyRightPressed(); break;\n                    case MyJoystickButtonsEnum.JDUp: wasPressed = WasGamepadKeyUpPressed(); break;\n                    case MyJoystickButtonsEnum.JDDown: wasPressed = WasGamepadKeyDownPressed(); break;\n                    default: wasPressed = (m_previousJoystickState.Buttons[(int)button - 5]); break;\n                }\n            }\n            if (!wasPressed && button == MyJoystickButtonsEnum.None)\n            {\n                return true;\n            }\n            return wasPressed;\n        }\n\n        //  Check to see if a specific button on the joystick was released.\n        public bool WasJoystickButtonReleased(MyJoystickButtonsEnum button)\n        {\n            bool wasReleased = false;\n            if (m_joystickConnected && button != MyJoystickButtonsEnum.None && m_previousJoystickState != null)\n            {\n                switch (button)\n                {\n                    case MyJoystickButtonsEnum.JDLeft: wasReleased = !WasGamepadKeyLeftPressed(); break;\n                    case MyJoystickButtonsEnum.JDRight: wasReleased = !WasGamepadKeyRightPressed(); break;\n                    case MyJoystickButtonsEnum.JDUp: wasReleased = !WasGamepadKeyUpPressed(); break;\n                    case MyJoystickButtonsEnum.JDDown: wasReleased = !WasGamepadKeyDownPressed(); break;\n                    default: wasReleased = (m_previousJoystickState.IsReleased((int)button - 5)); break;\n                }\n            }\n            if (!wasReleased && button == MyJoystickButtonsEnum.None)\n            {\n                return true;\n            }\n            return wasReleased;\n        }\n\n        #endregion\n\n        #region Joystick axis States\n\n        //  Find out how much a specific joystick axis is pressed.\n        //  Return a raw number between 0 and 65535. 32768 is the middle value.\n        public float GetJoystickAxisStateRaw(MyJoystickAxesEnum axis)\n        {\n            int value = 32768;\n            if (m_joystickConnected && axis != MyJoystickAxesEnum.None && m_actualJoystickState != null && IsJoystickAxisSupported(axis))\n            {\n                switch (axis)\n                {\n                    case MyJoystickAxesEnum.RotationXpos: case MyJoystickAxesEnum.RotationXneg: value = m_actualJoystickState.RotationX; break;\n                    case MyJoystickAxesEnum.RotationYpos: case MyJoystickAxesEnum.RotationYneg: value = m_actualJoystickState.RotationY; break;\n                    case MyJoystickAxesEnum.RotationZpos: case MyJoystickAxesEnum.RotationZneg: value = m_actualJoystickState.RotationZ; break;\n                    case MyJoystickAxesEnum.Xpos: case MyJoystickAxesEnum.Xneg: value = m_actualJoystickState.X; break;\n                    case MyJoystickAxesEnum.Ypos: case MyJoystickAxesEnum.Yneg: value = m_actualJoystickState.Y; break;\n                    case MyJoystickAxesEnum.Zpos: case MyJoystickAxesEnum.Zneg: value = m_actualJoystickState.Z; break;\n                    case MyJoystickAxesEnum.Slider1pos: case MyJoystickAxesEnum.Slider1neg:\n                        {\n                            var array = m_actualJoystickState.Sliders;\n                            value = (array.Length < 1) ? 32768 : array[0];\n                        }\n                        break;\n                    case MyJoystickAxesEnum.Slider2pos: case MyJoystickAxesEnum.Slider2neg:\n                        {\n                            var array = m_actualJoystickState.Sliders;\n                            value = (array.Length < 2) ? 32768 : array[1];\n                        }\n                        break;\n                }\n            }\n            return value;\n        }\n\n        //  Find out how much a specific joystick axis was pressed.\n        //  Return a raw number between 0 and 65535. 32768 is the middle value.\n        public float GetPreviousJoystickAxisStateRaw(MyJoystickAxesEnum axis)\n        {\n            int value = 32768;\n            if (m_joystickConnected && axis != MyJoystickAxesEnum.None && m_previousJoystickState != null && IsJoystickAxisSupported(axis))\n            {\n                switch (axis)\n                {\n                    case MyJoystickAxesEnum.RotationXpos: case MyJoystickAxesEnum.RotationXneg: value = m_previousJoystickState.RotationX; break;\n                    case MyJoystickAxesEnum.RotationYpos: case MyJoystickAxesEnum.RotationYneg: value = m_previousJoystickState.RotationY; break;\n                    case MyJoystickAxesEnum.RotationZpos: case MyJoystickAxesEnum.RotationZneg: value = m_previousJoystickState.RotationZ; break;\n                    case MyJoystickAxesEnum.Xpos: case MyJoystickAxesEnum.Xneg: value = m_previousJoystickState.X; break;\n                    case MyJoystickAxesEnum.Ypos: case MyJoystickAxesEnum.Yneg: value = m_previousJoystickState.Y; break;\n                    case MyJoystickAxesEnum.Zpos: case MyJoystickAxesEnum.Zneg: value = m_previousJoystickState.Z; break;\n                    case MyJoystickAxesEnum.Slider1pos: case MyJoystickAxesEnum.Slider1neg:\n                        {\n                            var array = m_previousJoystickState.Sliders;\n                            value = (array.Length < 1) ? 32768 : array[0];\n                        }\n                        break;\n                    case MyJoystickAxesEnum.Slider2pos: case MyJoystickAxesEnum.Slider2neg:\n                        {\n                            var array = m_previousJoystickState.Sliders;\n                            value = (array.Length < 2) ? 32768 : array[1];\n                        }\n                        break;\n                }\n            }\n            return value;\n        }\n\n\n        public float GetJoystickX()\n        {\n            return GetJoystickAxisStateRaw(MyJoystickAxesEnum.Xpos);\n        }\n\n        public float GetJoystickY()\n        {\n            return GetJoystickAxisStateRaw(MyJoystickAxesEnum.Ypos);\n        }\n\n\n        //  Find out how much a specific joystick half-axis is pressed.\n        //  Return a number between 0 and 1 (taking deadzone, sensitivity and non-linearity into account).\n        public float GetJoystickAxisStateForGameplay(MyJoystickAxesEnum axis)\n        {\n            if (m_joystickConnected && IsJoystickAxisSupported(axis))\n            {\n                // Input position scaled to (-1..1).\n                float position = ((float)GetJoystickAxisStateRaw(axis) - (float)MyJoystickConstants.CENTER_AXIS) / (float)MyJoystickConstants.CENTER_AXIS;\n\n                switch (axis)\n                {\n                    case MyJoystickAxesEnum.RotationXneg: case MyJoystickAxesEnum.Xneg:\n                    case MyJoystickAxesEnum.RotationYneg: case MyJoystickAxesEnum.Yneg:\n                    case MyJoystickAxesEnum.RotationZneg: case MyJoystickAxesEnum.Zneg:\n                    case MyJoystickAxesEnum.Slider1neg: case MyJoystickAxesEnum.Slider2neg:\n                        if (position >= 0) return 0;\n                        break;\n                    case MyJoystickAxesEnum.RotationXpos: case MyJoystickAxesEnum.Xpos:\n                    case MyJoystickAxesEnum.RotationYpos: case MyJoystickAxesEnum.Ypos:\n                    case MyJoystickAxesEnum.RotationZpos: case MyJoystickAxesEnum.Zpos:\n                    case MyJoystickAxesEnum.Slider1pos: case MyJoystickAxesEnum.Slider2pos:\n                        if (position <= 0) return 0;\n                        break;\n                    default:\n                        MyCommonDebugUtils.AssertDebug(false, \"Unknown joystick axis!\");\n                        break;\n                }\n\n                float distance = Math.Abs(position);\n                if (distance > m_joystickDeadzone)\n                {\n                    distance = (distance - m_joystickDeadzone) / (1 - m_joystickDeadzone);  // Rescale distance to (0..1) outside the deadzone.\n                    return m_joystickSensitivity * (float)Math.Pow(distance, m_joystickExponent);\n                }\n            }\n\n            return 0;\n        }\n\n        //  Find out how much a specific joystick half-axis is pressed.\n        //  Return a number between 0 and 100 (taking deadzone, sensitivity and non-linearity into account).\n        public float GetPreviousJoystickAxisStateForGameplay(MyJoystickAxesEnum axis)\n        {\n            if (m_joystickConnected && IsJoystickAxisSupported(axis))\n            {\n                // Input position scaled to (-1..1).\n                float position = ((float)GetPreviousJoystickAxisStateRaw(axis) - (float)MyJoystickConstants.CENTER_AXIS) / (float)MyJoystickConstants.CENTER_AXIS;\n\n                switch (axis)\n                {\n                    case MyJoystickAxesEnum.RotationXneg: case MyJoystickAxesEnum.Xneg:\n                    case MyJoystickAxesEnum.RotationYneg: case MyJoystickAxesEnum.Yneg:\n                    case MyJoystickAxesEnum.RotationZneg: case MyJoystickAxesEnum.Zneg:\n                    case MyJoystickAxesEnum.Slider1neg: case MyJoystickAxesEnum.Slider2neg:\n                        if (position >= 0) return 0;\n                        break;\n                    case MyJoystickAxesEnum.RotationXpos: case MyJoystickAxesEnum.Xpos:\n                    case MyJoystickAxesEnum.RotationYpos: case MyJoystickAxesEnum.Ypos:\n                    case MyJoystickAxesEnum.RotationZpos: case MyJoystickAxesEnum.Zpos:\n                    case MyJoystickAxesEnum.Slider1pos: case MyJoystickAxesEnum.Slider2pos:\n                        if (position <= 0) return 0;\n                        break;\n                    default:\n                        MyCommonDebugUtils.AssertDebug(false, \"Unknown joystick axis!\");\n                        break;\n                }\n\n                float distance = Math.Abs(position);\n                if (distance > m_joystickDeadzone)\n                {\n                    distance = (distance - m_joystickDeadzone) / (1 - m_joystickDeadzone);  // Rescale distance to (0..1) outside the deadzone.\n                    return 100 * m_joystickSensitivity * (float)Math.Pow(distance, m_joystickExponent);\n                }\n            }\n\n            return 0;\n        }\n\n        #region Joystick analog axes used for digital controls\n\n        public bool IsJoystickAxisPressed(MyJoystickAxesEnum axis)\n        {\n            bool isPressed = false;\n            if (m_joystickConnected && axis != MyJoystickAxesEnum.None && m_actualJoystickState != null)\n            {\n                isPressed = GetJoystickAxisStateForGameplay(axis) > MyJoystickConstants.ANALOG_PRESSED_THRESHOLD;\n            }\n            if (!isPressed && axis == MyJoystickAxesEnum.None)\n            {\n                return true;\n            }\n            if (!IsJoystickAxisSupported(axis)) return false;\n            return isPressed;\n        }\n\n        //  Check to see if a specific button on the joystick is currently pressed and was not pressed during the last update. \n        public bool IsJoystickAxisNewPressed(MyJoystickAxesEnum axis)\n        {\n            bool isNewPressed = false;\n            if (m_joystickConnected && axis != MyJoystickAxesEnum.None && m_actualJoystickState != null && m_previousJoystickState != null)\n            {\n                isNewPressed = GetJoystickAxisStateForGameplay(axis) > MyJoystickConstants.ANALOG_PRESSED_THRESHOLD && GetPreviousJoystickAxisStateForGameplay(axis) <= MyJoystickConstants.ANALOG_PRESSED_THRESHOLD;\n            }\n            if (!isNewPressed && axis == MyJoystickAxesEnum.None)\n            {\n                return true;\n            }\n            if (!IsJoystickAxisSupported(axis)) return false;\n            return isNewPressed;\n        }\n\n        public bool IsNewJoystickAxisReleased(MyJoystickAxesEnum axis)\n        {\n            bool isNewPressed = false;\n            if (m_joystickConnected && axis != MyJoystickAxesEnum.None && m_actualJoystickState != null && m_previousJoystickState != null)\n            {\n                isNewPressed = GetJoystickAxisStateForGameplay(axis) <= MyJoystickConstants.ANALOG_PRESSED_THRESHOLD && GetPreviousJoystickAxisStateForGameplay(axis) > MyJoystickConstants.ANALOG_PRESSED_THRESHOLD;\n            }\n            if (!isNewPressed && axis == MyJoystickAxesEnum.None)\n            {\n                return true;\n            }\n            if (!IsJoystickAxisSupported(axis)) return false;\n            return isNewPressed;\n        }\n\n        public bool IsJoystickAxisReleased(MyJoystickAxesEnum axis)\n        {\n            bool isPressed = false;\n            if (m_joystickConnected && axis != MyJoystickAxesEnum.None && m_actualJoystickState != null)\n            {\n                isPressed = GetJoystickAxisStateForGameplay(axis) <= MyJoystickConstants.ANALOG_PRESSED_THRESHOLD;\n            }\n            if (!isPressed && axis == MyJoystickAxesEnum.None)\n            {\n                return true;\n            }\n            if (!IsJoystickAxisSupported(axis)) return false;\n            return isPressed;\n        }\n\n        //  Check to see if a specific button on the joystick was pressed.\n        public bool WasJoystickAxisPressed(MyJoystickAxesEnum axis)\n        {\n            bool isPressed = false;\n            if (m_joystickConnected && axis != MyJoystickAxesEnum.None && m_previousJoystickState != null)\n            {\n                isPressed = GetPreviousJoystickAxisStateForGameplay(axis) > MyJoystickConstants.ANALOG_PRESSED_THRESHOLD;\n            }\n            if (!isPressed && axis == MyJoystickAxesEnum.None)\n            {\n                return true;\n            }\n            if (!IsJoystickAxisSupported(axis)) return false;\n            return isPressed;\n        }\n\n        //  Check to see if a specific button on the joystick was released.\n        public bool WasJoystickAxisReleased(MyJoystickAxesEnum axis)\n        {\n            bool isPressed = false;\n            if (m_joystickConnected && axis != MyJoystickAxesEnum.None && m_previousJoystickState != null)\n            {\n                isPressed = GetPreviousJoystickAxisStateForGameplay(axis) <= MyJoystickConstants.ANALOG_PRESSED_THRESHOLD;\n            }\n            if (!isPressed && axis == MyJoystickAxesEnum.None)\n            {\n                return true;\n            }\n            if (!IsJoystickAxisSupported(axis)) return false;\n            return isPressed;\n        }\n        \n        #endregion\n\n        #region Joystick settings\n\n        public float GetJoystickSensitivity()\n        {\n            return m_joystickSensitivity;\n        }\n\n        public void SetJoystickSensitivity(float newSensitivity)\n        {\n            m_joystickSensitivity = newSensitivity;\n        }\n\n        public float GetJoystickExponent()\n        {\n            return m_joystickExponent;\n        }\n\n        public void SetJoystickExponent(float newExponent)\n        {\n            m_joystickExponent = newExponent;\n        }\n\n        public float GetJoystickDeadzone()\n        {\n            return m_joystickDeadzone;\n        }\n\n        public void SetJoystickDeadzone(float newDeadzone)\n        {\n            m_joystickDeadzone = newDeadzone;\n        }\n\n        #endregion\n\n        #endregion\n\n        //  Current mouse scrollwheel value.\n        public int MouseScrollWheelValue()\n        {\n            return m_actualMouseState.ScrollWheelValue;\n        }\n\n        //  Previous mouse scrollwheel value.\n        public int PreviousMouseScrollWheelValue()\n        {\n            return m_previousMouseState.ScrollWheelValue;\n        }\n\n        //  Delta mouse scrollwheel value.\n        public int DeltaMouseScrollWheelValue()\n        {\n            return MouseScrollWheelValue() - PreviousMouseScrollWheelValue();\n        }\n\n        //  Return actual mouse X position - for drawing cursor\n        public int GetMouseX()\n        {\n            return m_actualMouseState.X;\n        }\n\n        //  Return actual mouse Y position - for drawing cursor\n        public int GetMouseY()\n        {\n            return m_actualMouseState.Y;\n        }\n\n        public int GetPreviousMouseX()\n        {\n            return m_previousMouseState.X;\n        }\n\n        public int GetPreviousMouseY()\n        {\n            return m_previousMouseState.Y;\n        }\n\n        //  Return actual mouse X position - for gameplay\n        public int GetMouseXForGamePlay()\n        {\n            int inv = m_mouseXIsInverted ? -1 : 1;\n            return (int)(MyMinerGame.ScreenSizeHalf.X + (m_mouseSensitivity * (inv * (m_actualMouseState.X - MyMinerGame.ScreenSizeHalf.X))));\n        }\n\n        //  Return actual mouse Y position - for gameplay\n        public int GetMouseYForGamePlay()\n        {\n            int inv = m_mouseYIsInverted ? -1 : 1;\n            return (int)(MyMinerGame.ScreenSizeHalf.Y + (m_mouseSensitivity * (inv * (m_actualMouseState.Y - MyMinerGame.ScreenSizeHalf.Y))));\n        }\n\n        public bool GetMouseXInversion()\n        {\n            return m_mouseXIsInverted;\n        }\n\n        public bool GetMouseYInversion()\n        {\n            return m_mouseYIsInverted;\n        }\n\n        public void SetMouseXInversion(bool inverted)\n        {\n            m_mouseXIsInverted = inverted;\n        }\n\n        public void SetMouseYInversion(bool inverted)\n        {\n            m_mouseYIsInverted = inverted;\n        }\n\n        public float GetMouseSensitivity()\n        {\n            return m_mouseSensitivity;\n        }\n\n        public void SetMouseSensitivity(float sensitivity)\n        {\n            m_mouseSensitivity = sensitivity;\n        }\n\n        /// <summary>\n        /// Returns immediatelly current cursor position.\n        /// Obtains position on every call, it can get cursor data with higher rate than 60 fps\n        /// </summary>\n        public static Vector2 GetMousePosition()\n        {\n            int x, y;\n            MyWindowsMouse.GetPosition(out x, out y);\n            return new Vector2(x, y);\n        }\n\n        public static void SetMousePosition(int x, int y)\n        {\n            MyWindowsMouse.SetPosition(x, y);\n        }\n\n        //  Re-sets the mouse to the center position\n        public static void SetMouseToScreenCenter()\n        {\n            if (MyVideoModeManager.IsHardwareCursorUsed() && ( MyMinerGame.Static.IsMouseVisible || MyMinerGame.Static.Window.NativeWindow.Handle != GetForegroundWindow() ))\n                return;\n            //KeenSoftwareHouse.Library.Trace.Trace.SendMsgAllCall(\"center\");\n            SetMousePosition(MyMinerGame.ScreenSizeHalf.X, MyMinerGame.ScreenSizeHalf.Y);\n        }\n\n        // Checks to see if the joystick is connected. This is used so we don't try to poll a joystick that doesn't exist.\n        public bool IsJoystickConnected()\n        {\n            return m_joystickConnected;\n        }\n        \n        //  POVDirection()\n        //\n        //  @return int[] of size NumJoystickPOVs(). Will contain the raw int\n        //  representing the directing the POV is currently pointing. Use the public \n        //  consts below to determine direction:\n        //  POV_NEUTRAL \n        //  POV_NORTH \n        //  POV_NORTHEAST\n        //  POV_EAST\n        //  POV_SOUTHEAST\n        //  POV_SOUTH\n        //  POV_SOUTHWEST\n        //  POV_WEST\n        //  POV_NORTHWEST\n        //\n        //  If no joystick is present return null\n        public int[] POVDirection()\n        {\n            if (m_joystickConnected)\n            {\n                return m_actualJoystickState.PointOfViewControllers;\n            }\n            return null;\n        }\n\n        /// <summary>\n        /// Get the actual and previous gamepad key directions (use the first POV controller).\n        /// Returns false if this type of input is not available.\n        /// </summary>\n        public bool GetGamepadKeyDirections(out int actual, out int previous)\n        {\n            if (m_joystickConnected && m_actualJoystickState != null && m_previousJoystickState != null)\n            {\n                int[] actualPOVControllers = m_actualJoystickState.PointOfViewControllers;\n                int[] previousPOVControllers = m_previousJoystickState.PointOfViewControllers;\n                //Trace.SendMsgLastCall(actualPOVControllers[0].ToString() + previousPOVControllers[0].ToString());\n\n                if (actualPOVControllers != null && previousPOVControllers != null)\n                {\n                    actual = actualPOVControllers[0];\n                    previous = previousPOVControllers[0];\n                    return true;\n                }\n\n            }\n            actual = -1;\n            previous = -1;\n            return false;\n        }\n\n        public bool IsGamepadKeyRightPressed()\n        {\n            int actual, previous;\n            if (GetGamepadKeyDirections(out actual, out previous)) return (actual >= 4500 && actual <= 13500);\n            return false;\n        }\n\n        public bool IsGamepadKeyLeftPressed()\n        {\n            int actual, previous;\n            if (GetGamepadKeyDirections(out actual, out previous)) return (actual >= 22500 && actual <= 31500);\n            return false;\n        }\n\n        public bool IsGamepadKeyDownPressed()\n        {\n            int actual, previous;\n            if (GetGamepadKeyDirections(out actual, out previous)) return (actual >= 13500 && actual <= 22500);\n            return false;\n        }\n\n        public bool IsGamepadKeyUpPressed()\n        {\n            int actual, previous;\n            if (GetGamepadKeyDirections(out actual, out previous)) return (actual >= 0 && actual <= 4500) || (actual >= 31500 && actual <= 36000);\n            return false;\n        }\n\n        \n        public bool WasGamepadKeyRightPressed()\n        {\n            int actual, previous;\n            if (GetGamepadKeyDirections(out actual, out previous)) return (previous >= 4500 && previous <= 13500);\n            return false;\n        }\n\n        public bool WasGamepadKeyLeftPressed()\n        {\n            int actual, previous;\n            if (GetGamepadKeyDirections(out actual, out previous)) return (previous >= 22500 && previous <= 31500);\n            return false;\n        }\n\n        public bool WasGamepadKeyDownPressed()\n        {\n            int actual, previous;\n            if (GetGamepadKeyDirections(out actual, out previous)) return (previous >= 13500 && previous <= 22500);\n            return false;\n        }\n\n        public bool WasGamepadKeyUpPressed()\n        {\n            int actual, previous;\n            if (GetGamepadKeyDirections(out actual, out previous)) return (previous >= 0 && previous <= 4500) || (previous >= 31500 && previous <= 36000);\n            return false;\n        }\n\n\n        public bool IsNewGamepadKeyRightPressed() { return !WasGamepadKeyRightPressed() && IsGamepadKeyRightPressed(); }\n        public bool IsNewGamepadKeyLeftPressed()  { return !WasGamepadKeyLeftPressed()  && IsGamepadKeyLeftPressed(); }\n        public bool IsNewGamepadKeyDownPressed()  { return !WasGamepadKeyDownPressed()  && IsGamepadKeyDownPressed(); }\n        public bool IsNewGamepadKeyUpPressed()    { return !WasGamepadKeyUpPressed()    && IsGamepadKeyUpPressed(); }\n\n        public bool IsNewGamepadKeyRightReleased() { return WasGamepadKeyRightPressed() && !IsGamepadKeyRightPressed(); }\n        public bool IsNewGamepadKeyLeftReleased()  { return WasGamepadKeyLeftPressed()  && !IsGamepadKeyLeftPressed(); }\n        public bool IsNewGamepadKeyDownReleased()  { return WasGamepadKeyDownPressed()  && !IsGamepadKeyDownPressed(); }\n        public bool IsNewGamepadKeyUpReleased()    { return WasGamepadKeyUpPressed()    && !IsGamepadKeyUpPressed(); }\n\n        public JoystickState GetActualJoystickState()\n        {\n            return m_actualJoystickState;\n        }\n\n        public JoystickState GetPreviousJoystickState()\n        {\n            return m_previousJoystickState;\n        }\n\n        public bool IsJoystickAxisSupported(MyJoystickAxesEnum axis)\n        {\n            if (!m_joystickConnected) return false;\n            switch (axis)\n            {\n                case MyJoystickAxesEnum.Xpos: case MyJoystickAxesEnum.Xneg: return m_joystickXAxisSupported;\n                case MyJoystickAxesEnum.Ypos: case MyJoystickAxesEnum.Yneg: return m_joystickYAxisSupported;\n                case MyJoystickAxesEnum.Zpos: case MyJoystickAxesEnum.Zneg: return m_joystickZAxisSupported;\n                case MyJoystickAxesEnum.RotationXpos: case MyJoystickAxesEnum.RotationXneg: return m_joystickRotationXAxisSupported;\n                case MyJoystickAxesEnum.RotationYpos: case MyJoystickAxesEnum.RotationYneg: return m_joystickRotationYAxisSupported;\n                case MyJoystickAxesEnum.RotationZpos: case MyJoystickAxesEnum.RotationZneg: return m_joystickRotationZAxisSupported;\n                case MyJoystickAxesEnum.Slider1pos: case MyJoystickAxesEnum.Slider1neg: return m_joystickSlider1AxisSupported;\n                case MyJoystickAxesEnum.Slider2pos: case MyJoystickAxesEnum.Slider2neg: return m_joystickSlider2AxisSupported;\n                default: return false;\n            }\n        }\n\n        //  Check if an assigned control for game is new pressed.\n        public bool IsNewGameControlPressed(MyGameControlEnums control)\n        {\n            //  If you are trying to set a control that does not exist do nothing.\n            if ((int)control > m_gameControlsList.Length)\n            {\n                return false;\n            }\n            if (m_gameControlsList[(int)control] == null)\n            {\n                return false;\n            }\n\n            return m_gameControlsList[(int)control].IsNewPressed();\n        }\n\n\n        //  Check if an assigned control for game is currently pressed.\n        public bool IsGameControlPressed(MyGameControlEnums control)\n        {\n            //  If you are trying to set a control that does not exist do nothing.\n            if ((int)control > m_gameControlsList.Length)\n            {\n                return false;\n            }\n            if (m_gameControlsList[(int)control] == null)\n            {\n                return false;\n            }\n\n            return m_gameControlsList[(int)control].IsPressed();\n        }\n\n        //  Check if an assigned control for editor is currently pressed.\n        public bool IsEditorControlPressed(MyEditorControlEnums control)\n        {\n            //  If you are trying to set a control that does not exist do nothing.\n            if ((int)control > m_editorControlsList.Length)\n            {\n                return false;\n            }\n            if (m_editorControlsList[(int)control] == null)\n            {\n                return false;\n            }\n\n            return m_editorControlsList[(int)control].IsPressed();\n        }\n\n        //  Check if an assigned control for game is currently pressed.\n        public float GetGameControlAnalogState(MyGameControlEnums control)\n        {\n            //  If you are trying to set a control that does not exist do nothing.\n            if ((int)control > m_gameControlsList.Length || m_gameControlsList[(int)control] == null)\n            {\n                return 0;\n            }\n\n            return m_gameControlsList[(int)control].GetAnalogState();\n        }\n\n        //  Check if an assigned control for editor is currently pressed.\n        public float GetEditorControlAnalogState(MyEditorControlEnums control)\n        {\n            //  If you are trying to set a control that does not exist do nothing.\n            if ((int)control > m_editorControlsList.Length || m_editorControlsList[(int)control] == null)\n            {\n                return 0;\n            }\n\n            return m_editorControlsList[(int)control].GetAnalogState();\n        }\n\n\n        //  Check if an assigned control is currently pressed and was not pressed during the last update.\n        /*public bool IsGameControlNewPressed(MyGameControlEnums control)\n        {\n            //  If you are trying to set a control that does not exist do nothing.\n            if ((int)control > m_gameControlsList.Length)\n            {\n                return false;\n            }\n            if (m_gameControlsList[(int)control] == null)\n            {\n                return false;\n            }\n\n            return m_gameControlsList[(int)control].IsNewPressed();\n        }*/\n\n        //  Check if an assigned control is currently pressed and was not pressed during the last update.\n        public bool IsEditorControlNewPressed(MyEditorControlEnums control)\n        {\n            //  If you are trying to set a control that does not exist do nothing.\n            if ((int)control > m_editorControlsList.Length)\n            {\n                return false;\n            }\n            if (m_editorControlsList[(int)control] == null)\n            {\n                return false;\n            }\n\n            return m_editorControlsList[(int)control].IsNewPressed();\n        }\n\n        //  Check is an assigned control was pressed in previous state\n        public bool WasGameControlPressed(MyGameControlEnums control)\n        {\n            //  If you are trying to set a control that does not exist do nothing.\n            if ((int)control > m_gameControlsList.Length)\n            {\n                return false;\n            }\n            if (m_gameControlsList[(int)control] == null)\n            {\n                return false;\n            }\n\n            return m_gameControlsList[(int)control].WasPressed();\n        }\n\n        //  Check is an assigned control was pressed in previous state\n        public bool WasEditorControlPressed(MyEditorControlEnums control)\n        {\n            //  If you are trying to set a control that does not exist do nothing.\n            if ((int)control > m_editorControlsList.Length)\n            {\n                return false;\n            }\n            if (m_editorControlsList[(int)control] == null)\n            {\n                return false;\n            }\n\n            return m_editorControlsList[(int)control].WasPressed();\n        }\n\n        //  Check is an assigned game control is released\n        public bool IsGameControlReleased(MyGameControlEnums control)\n        {\n            //  If you are trying to set a control that does not exist do nothing.\n            if ((int)control > m_gameControlsList.Length)\n            {\n                return false;\n            }\n            if (m_gameControlsList[(int)control] == null)\n            {\n                return false;\n            }\n\n            return m_gameControlsList[(int)control].IsNewReleased();\n        }\n\n        //  Check is an assigned editor control is new released\n        public bool IsEditorControlNewReleased(MyEditorControlEnums control)\n        {\n            //  If you are trying to set a control that does not exist do nothing.\n            if ((int)control > m_editorControlsList.Length)\n            {\n                return false;\n            }\n            if (m_editorControlsList[(int)control] == null)\n            {\n                return false;\n            }\n\n            return m_editorControlsList[(int)control].IsNewReleased();\n        }\n\n        //  Check is an assigned control was released in previous state\n        public bool WasGameControlReleased(MyGameControlEnums control)\n        {\n            //  If you are trying to set a control that does not exist do nothing.\n            if ((int)control > m_gameControlsList.Length)\n            {\n                return false;\n            }\n            if (m_gameControlsList[(int)control] == null)\n            {\n                return false;\n            }\n\n            return m_gameControlsList[(int)control].WasReleased();\n        }\n\n        //  Check is an assigned control was released in previous state\n        public bool WasEditorControlReleased(MyEditorControlEnums control)\n        {\n            //  If you are trying to set a control that does not exist do nothing.\n            if ((int)control > m_editorControlsList.Length)\n            {\n                return false;\n            }\n            if (m_editorControlsList[(int)control] == null)\n            {\n                return false;\n            }\n\n            return m_editorControlsList[(int)control].WasReleased();\n        }\n\n        //  Return true if key is valid for user controls\n        public static bool IsKeyValid(Keys key)\n        {\n            foreach (var item in m_validKeyboardKeys)\n            {\n                if (item == key) return true;\n            }\n\n            return false;\n        }\n\n        public bool IsKeyDigit(Keys key)\n        {\n            return m_digitKeys.Contains(key);\n        }\n\n        //  Return true if mouse button is valid for user controls\n        public static bool IsMouseButtonValid(MyMouseButtonsEnum button)\n        {\n            foreach (var item in m_validMouseButtons)\n            {\n                if (item == button) return true;\n            }\n            return false;\n        }\n\n        //  Return true if joystick button is valid for user controls\n        public static bool IsJoystickButtonValid(MyJoystickButtonsEnum button)\n        {\n            foreach (var item in m_validJoystickButtons)\n            {\n                if (item == button) return true;\n            }\n            return false;\n        }\n\n        //  Return true if joystick axis is valid for user controls\n        public static bool IsJoystickAxisValid(MyJoystickAxesEnum axis)\n        {\n            foreach (var item in m_validJoystickAxes)\n            {\n                if (item == axis) return true;\n            }\n            return false;\n        }\n\n        public MyControl[] GetControlsListByGameControlType(MyGuiGameControlType gameControlType)\n        {\n            MyControl[] controlsList = null;\n            if (gameControlType == MyGuiGameControlType.GAME)\n            {\n                controlsList = m_gameControlsList;\n            }\n            else if (gameControlType == MyGuiGameControlType.EDITOR)\n            {\n                controlsList = m_editorControlsList;\n            }\n\n            return controlsList;\n        }\n\n        //  Return true if key is used by some user control\n        public MyControl GetControl(Keys key, MyGuiGameControlType gameControlType)\n        {\n            MyControl[] controlsList = GetControlsListByGameControlType(gameControlType);\n            foreach (var item in controlsList)\n            {\n                if (item.GetKeyboardControl() == key) return item;\n            }\n            return null;\n        }\n\n        //  Return true if mouse button is used by some user control\n        public MyControl GetControl(MyMouseButtonsEnum button, MyGuiGameControlType gameControlType)\n        {\n            MyControl[] controlsList = GetControlsListByGameControlType(gameControlType);\n            foreach (var item in controlsList)\n            {\n                if (item.GetMouseControl() == button) return item;\n            }\n            return null;\n        }\n\n        //  Return true if joystick button is used by some user control\n        public MyControl GetControl(MyJoystickButtonsEnum button, MyGuiGameControlType gameControlType)\n        {\n            MyControl[] controlsList = GetControlsListByGameControlType(gameControlType);\n            foreach (var item in m_gameControlsList)\n            {\n                if (item.GetJoystickControl() == button) return item;\n            }\n            return null;\n        }\n\n        //  Return true if joystick axis is used by an user control\n        public MyControl GetControl(MyJoystickAxesEnum axis, MyGuiGameControlType gameControlType)\n        {\n            MyControl[] controlsList = GetControlsListByGameControlType(gameControlType);\n            foreach (var item in m_gameControlsList)\n            {\n                if (item.GetJoystickAxisControl() == axis) return item;\n            }\n            return null;\n        }\n\n        public void GetListOfPressedKeys(List<Toolkit.Input.Keys> keys)\n        {\n            GetPressedKeys(keys);\n        }\n\n        public void GetListOfPressedMouseButtons(List<MyMouseButtonsEnum> result)\n        {\n            result.Clear();\n\n            if (IsLeftMousePressed()) result.Add(MyMouseButtonsEnum.Left);\n            if (IsRightMousePressed()) result.Add(MyMouseButtonsEnum.Right);\n            if (IsMiddleMousePressed()) result.Add(MyMouseButtonsEnum.Middle);\n            if (IsXButton1MousePressed()) result.Add(MyMouseButtonsEnum.XButton1);\n            if (IsXButton2MousePressed()) result.Add(MyMouseButtonsEnum.XButton2);\n        }\n\n        public void GetListOfPressedJoystickButtons(List<MyJoystickButtonsEnum> result)\n        {\n            result.Clear();\n\n            foreach (MyJoystickButtonsEnum item in MyControl.MyJoystickButtonsEnumValues)\n            {\n                if (item != MyJoystickButtonsEnum.None && IsJoystickButtonPressed(item)) result.Add(item);\n            }\n        }\n\n        public void GetListOfPressedJoystickAxes(List<MyJoystickAxesEnum> result)\n        {\n            result.Clear();\n\n            foreach (MyJoystickAxesEnum item in MyControl.MyJoystickButtonsEnumValues)\n            {\n                if (item != MyJoystickAxesEnum.None && IsJoystickAxisPressed(item)) result.Add(item);\n            }\n        }\n\n        //  Returns an array MyControl that contains every assigned control for game.\n        public MyControl[] GetGameControlsList()\n        {\n            return m_gameControlsList;\n        }\n\n        //  Returns an array MyControl that contains every assigned control for editor.\n        public MyControl[] GetEditorControlsList()\n        {\n            return m_editorControlsList;\n        }\n\n        //  IMPORTANT! Use this function before attempting to assign new controls so that the controls can be re-set if the user does not like the changes.\n        public void TakeSnapshot()\n        {\n            //m_controlsSnapshot.Clear();\n            m_joystickInstanceNameSnapshot = JoystickInstanceName;\n            m_gameControlsSnapshot = CloneControls(m_gameControlsList, m_gameControlsSnapshot);\n            m_editorControlsSnapshot = CloneControls(m_editorControlsList, m_editorControlsSnapshot);\n        }\n\n        //  IMPORTANT! Only call this method after calling TakeSnapshot() to revert any changes made since TakeSnapshot() was last called. \n        public void RevertChanges()\n        {\n            //m_controlsList.Clear();\n            JoystickInstanceName = m_joystickInstanceNameSnapshot;\n            m_gameControlsList = CloneControls(m_gameControlsSnapshot, m_gameControlsList);\n            m_editorControlsList = CloneControls(m_editorControlsSnapshot, m_editorControlsList);\n        }\n\n        //  Returns a string value of the button or key assigned to a control for game.\n        public String GetGameControlTextEnum(MyGameControlEnums control)\n        {\n            //return m_controlsList[(int)control].GetControlButtonName();\n            return m_gameControlsList[(int)control].GetControlButtonName(MyGuiInputDeviceEnum.Keyboard);\n        }\n\n        public MyControl GetGameControl(MyGameControlEnums control)\n        {\n            return m_gameControlsList[(int)control];\n        }\n\n        //  Returns a string value of the button or key assigned to a control for editor.\n        public String GetEditorControlTextEnum(MyEditorControlEnums control)\n        {\n            //return m_controlsList[(int)control].GetControlButtonName();\n            return m_editorControlsList[(int)control].GetControlButtonName(MyGuiInputDeviceEnum.Keyboard);\n        }\n\n        //  This is used to copy the list of controls into backup lists or for reverting changes to the list\n        private static MyControl[] CloneControls(MyControl[] original, MyControl[] copy)\n        {\n            for (int i = 0; i < original.Length; i++)\n            {   \n                copy[i] = original[i].Clone();\n            }\n            return copy;\n        }\n\n        public void RevertToDefaultControls()\n        {\n            m_mouseXIsInverted = IsMouseXInvertedDefault;\n            m_mouseYIsInverted = IsMouseYInvertedDefault;\n            m_mouseSensitivity = MouseSensitivityDefault;\n            \n            m_joystickSensitivity = JoystickSensitivityDefault;\n            m_joystickDeadzone = JoystickDeadzoneDefault;\n            m_joystickExponent = JoystickExponentDefault;\n            CloneControls(m_defaultGameControlsList, m_gameControlsList);\n            CloneControls(m_defaultEditorControlsList, m_editorControlsList);\n        }\n\n        //  Save all controls to the Config File.\n        public void SaveControls()\n        {\n            StringBuilder controlsGeneral = new StringBuilder();\n            controlsGeneral.Append(m_mouseXIsInverted).Append(\";\");\n            controlsGeneral.Append(m_mouseYIsInverted).Append(\";\");\n            controlsGeneral.Append(m_mouseSensitivity.ToString(System.Globalization.CultureInfo.InvariantCulture)).Append(\";\");\n            controlsGeneral.Append(m_joystickInstanceName == null ? \"\" : MyStringUtils.EscapeSemicolons(m_joystickInstanceName)).Append(\";\");\n            controlsGeneral.Append(m_joystickSensitivity.ToString(System.Globalization.CultureInfo.InvariantCulture)).Append(\";\");\n            controlsGeneral.Append(m_joystickExponent.ToString(System.Globalization.CultureInfo.InvariantCulture)).Append(\";\");\n            controlsGeneral.Append(m_joystickDeadzone.ToString(System.Globalization.CultureInfo.InvariantCulture));\n\n            MyConfig.ControlsGeneral = controlsGeneral.ToString();\n            \n            List<string> controlsButtons = new List<string>();\n            //BEFORE - FIRE_PRIMARY:Mouse:Left;\n            //AFTER - FIRE_PRIMARY:Keyboard:A:Mouse:Left:Joystick:J01:JoystickAxis:JY+\n            foreach (MyControl control in m_gameControlsList)\n            {\n                string retVal = MyEnumsToStrings.GameControlEnums[(int)control.GetGameControlEnum()] + \":\";\n                retVal += MyEnumsToStrings.GuiInputDeviceEnum[(int)MyGuiInputDeviceEnum.Keyboard] + \":\";\n                retVal += control.GetKeyboardControl() + \":\";\n                retVal += MyEnumsToStrings.GuiInputDeviceEnum[(int)MyGuiInputDeviceEnum.Mouse] + \":\";\n                retVal += MyEnumsToStrings.MouseButtonsEnum[(int)control.GetMouseControl()] + \":\";\n                retVal += MyEnumsToStrings.GuiInputDeviceEnum[(int)MyGuiInputDeviceEnum.Joystick] + \":\";\n                retVal += MyEnumsToStrings.JoystickButtonsEnum[(int)control.GetJoystickControl()] + \":\";\n                retVal += MyEnumsToStrings.GuiInputDeviceEnum[(int)MyGuiInputDeviceEnum.JoystickAxis] + \":\";\n                retVal += MyEnumsToStrings.JoystickAxesEnum[(int)control.GetJoystickAxisControl()];\n\n                controlsButtons.Add(retVal);\n            }\n\n            List<string> editorControlsButtons = new List<string>();\n            //BEFORE - FIRE_PRIMARY:Mouse:Left;\n            //AFTER - FIRE_PRIMARY:Keyboard:A:Mouse:Left:Joystick:J01\n            foreach (MyControl control in m_editorControlsList)\n            {\n                string retVal = MyEnumsToStrings.EditorControlEnums[(int)control.GetEditorControlEnum()] + \":\";\n                retVal += MyEnumsToStrings.GuiInputDeviceEnum[(int)MyGuiInputDeviceEnum.Keyboard] + \":\";\n                retVal += control.GetKeyboardControl() + \":\";\n                retVal += MyEnumsToStrings.GuiInputDeviceEnum[(int)MyGuiInputDeviceEnum.Mouse] + \":\";\n                retVal += MyEnumsToStrings.MouseButtonsEnum[(int)control.GetMouseControl()] + \":\";\n                retVal += MyEnumsToStrings.GuiInputDeviceEnum[(int)MyGuiInputDeviceEnum.Joystick] + \":\";\n                retVal += MyEnumsToStrings.JoystickButtonsEnum[(int)control.GetJoystickControl()] + \":\";\n                retVal += MyEnumsToStrings.GuiInputDeviceEnum[(int)MyGuiInputDeviceEnum.JoystickAxis] + \":\";\n                retVal += MyEnumsToStrings.JoystickAxesEnum[(int)control.GetJoystickAxisControl()];\n\n                editorControlsButtons.Add(retVal);\n            }\n\n            MyConfig.ControlsButtons = string.Join(\";\", controlsButtons.ToArray());\n            MyConfig.EditorControlsButtons = string.Join(\";\", editorControlsButtons.ToArray());\n            MyConfig.Save();\n\n            if (ControlsSaved != null) \n            {\n                ControlsSaved(this);\n            }\n        }\n\n        //  Load Controls from the Config file. Function is private to prevent use other than instantiation of the MyGuiInput object\n        private void LoadControls()\n        {\n            MyMwcLog.WriteLine(\"MyGuiInput.LoadControls() - START\");\n\n            //  Load general controls\n            string controlsGeneral = MyConfig.ControlsGeneral;\n\n            if (String.IsNullOrEmpty(controlsGeneral) || !LoadControls(controlsGeneral))\n            {\n                MyMwcLog.WriteLine(\"    Loading default controls\");\n                RevertToDefaultControls();\n            }\n            MyMwcLog.WriteLine(\"MyGuiInput.LoadControls() - END\");\n        }\n\n        private bool LoadControls(string controlsGeneral)\n        {\n            try\n            {\n                string[] controlGeneral = controlsGeneral.Split(';');\n                int index = 0;\n                m_mouseXIsInverted = bool.Parse(controlGeneral[index++]);\n                m_mouseYIsInverted = bool.Parse(controlGeneral[index++]);\n                m_mouseSensitivity = float.Parse(controlGeneral[index++], System.Globalization.CultureInfo.InvariantCulture);\n\n                if (controlGeneral.Length > 6)  // compatibility\n                {\n                    string joystickInstanceName = MyStringUtils.UnescapeSemicolons(controlGeneral[index++]);\n                    JoystickInstanceName = (joystickInstanceName == \"\" ? null : joystickInstanceName);\n                }\n                else\n                {\n                    JoystickInstanceName = null;\n                }\n\n                m_joystickSensitivity = float.Parse(controlGeneral[index++], System.Globalization.CultureInfo.InvariantCulture);\n                m_joystickExponent = float.Parse(controlGeneral[index++], System.Globalization.CultureInfo.InvariantCulture);\n                m_joystickDeadzone = float.Parse(controlGeneral[index++], System.Globalization.CultureInfo.InvariantCulture);\n\n                //  Load buttons and keys\n                LoadGameControls();\n                LoadEditorControls();\n                return true;\n            }\n            catch (Exception e)\n            {\n                MyMwcLog.WriteLine(\"    Error loading controls from config:\");\n                MyMwcLog.WriteLine(e);\n                return false;\n            }\n        }\n\n        private void LoadGameControls()\n        {\n            string controlsButtons = MyConfig.ControlsButtons;\n            if (controlsButtons.Equals(\"\"))\n            {\n                throw new Exception(\"ControlsButtons config parameter is empty.\");\n            }\n\n            //BEFORE - FIRE_PRIMARY:Mouse:Left;\n            //AFTER - FIRE_PRIMARY:Keyboard:A:Mouse:Left:Joystick:None\n            string[] controlButtons = controlsButtons.Split(';');\n            foreach (var item in m_gameControlsList)\n            {\n                item.SetNoControl();\n            }\n            for (int i = 0; i < m_gameControlsList.Length; i++)\n            {\n                string[] control = controlButtons[i].Split(':');\n                bool newVersion = true;\n                if (control.Length != 9)\n                {\n                    //BACKWARDS compatibility with older config version\n                    if (control.Length != 3)\n                    {\n                        throw new Exception(\"Wrong syntax of saved button assignment string.\");\n                    }\n                    else\n                    {\n                        newVersion = false;\n                    }\n                }\n\n                MyGameControlEnums controlType = ParseMyGameControlEnums(control[0]);\n\n                // deprecated controls will remain without any control set to it\n                if (m_deprecatedGameControls.Contains(controlType) == false)\n                {\n                    LoadGameControl(control[2], controlType, ParseMyGuiInputDeviceEnum(control[1]));\n\n                    if (newVersion == true)\n                    {\n                        LoadGameControl(control[4], controlType, ParseMyGuiInputDeviceEnum(control[3]));\n                        LoadGameControl(control[6], controlType, ParseMyGuiInputDeviceEnum(control[5]));\n                        LoadGameControl(control[8], controlType, ParseMyGuiInputDeviceEnum(control[7]));\n                    }\n                }\n            }\n        }\n\n        private void LoadEditorControls()\n        {\n            string editorControlsButtons = MyConfig.EditorControlsButtons;\n\n            string[] controlButtons = editorControlsButtons.Split(';');\n            if (controlButtons.Length != m_editorControlsList.Length)\n            {\n                throw new Exception(\"Size of saved controls buttons list does not match size of default editor controls list.\");\n            }\n            foreach (var item in m_editorControlsList)\n            {\n                item.SetNoControl();\n            }\n            for (int i = 0; i < m_editorControlsList.Length; i++)\n            {\n                string[] control = controlButtons[i].Split(':');\n                bool newVersion = true;\n                if (control.Length != 9)\n                {\n                    //BACKWARDS compatibility with older config version\n                    if (control.Length != 3)\n                    {\n                        throw new Exception(\"Wrong syntax of saved button assignment string.\");\n                    }\n                    else\n                    {\n                        newVersion = false;\n                    }\n                }\n\n                MyEditorControlEnums controlType = ParseMyEditorControlEnums(control[0]);\n                MyGuiInputDeviceEnum device1 = ParseMyGuiInputDeviceEnum(control[1]);\n\n                LoadEditorControl(control, controlType, device1, 2);\n\n                if (newVersion == true)\n                {\n                    MyGuiInputDeviceEnum device2 = ParseMyGuiInputDeviceEnum(control[3]);\n                    LoadEditorControl(control, controlType, device2, 4);\n\n                    MyGuiInputDeviceEnum device3 = ParseMyGuiInputDeviceEnum(control[5]);\n                    LoadEditorControl(control, controlType, device3, 6);\n\n                    MyGuiInputDeviceEnum device4 = ParseMyGuiInputDeviceEnum(control[7]);\n                    LoadEditorControl(control, controlType, device4, 8);\n                }\n            }\n        }\n\n        private void LoadGameControl(string controlName, MyGameControlEnums controlType, MyGuiInputDeviceEnum device)\n        {\n            switch (device)\n            {\n                case MyGuiInputDeviceEnum.Keyboard:\n                    Keys key = (Keys)Enum.Parse(typeof(Keys), controlName);\n                    if (!IsKeyValid(key))\n                    {\n                        throw new Exception(\"Key \\\"\" + key.ToString() + \"\\\" is already assigned or is not valid.\");\n                    }\n                    FindNotAssignedGameControl(controlType, device).SetControl(key);\n                    break;\n                case MyGuiInputDeviceEnum.Mouse:\n                    MyMouseButtonsEnum mouse = ParseMyMouseButtonsEnum(controlName);\n                    if (!IsMouseButtonValid(mouse))\n                    {\n                        throw new Exception(\"Mouse button \\\"\" + mouse.ToString() + \"\\\" is already assigned or is not valid.\");\n                    }\n                    FindNotAssignedGameControl(controlType, device).SetControl(mouse);\n                    break;\n                case MyGuiInputDeviceEnum.Joystick:\n                    MyJoystickButtonsEnum joy = ParseMyJoystickButtonsEnum(controlName);\n                    if (!IsJoystickButtonValid(joy))\n                    {\n                        throw new Exception(\"Joystick button \\\"\" + joy.ToString() + \"\\\" is already assigned or is not valid.\");\n                    }\n                    FindNotAssignedGameControl(controlType, device).SetControl(joy);\n                    break;\n                case MyGuiInputDeviceEnum.JoystickAxis:\n                    MyJoystickAxesEnum joyAxis = ParseMyJoystickAxesEnum(controlName);\n                    if (!IsJoystickAxisValid(joyAxis))\n                    {\n                        throw new Exception(\"Joystick axis \\\"\" + joyAxis.ToString() + \"\\\" is already assigned or is not valid.\");\n                    }\n                    FindNotAssignedGameControl(controlType, device).SetControl(joyAxis);\n                    break;\n                case MyGuiInputDeviceEnum.None:\n                    break;\n                default:\n                    break;\n            }\n        }\n\n        private void LoadEditorControl(string[] control, MyEditorControlEnums controlType, MyGuiInputDeviceEnum device, int controlId)\n        {\n            switch (device)\n            {\n                case MyGuiInputDeviceEnum.Keyboard:\n                    Keys key = (Keys)Enum.Parse(typeof(Keys), control[controlId]);\n                    if (!IsKeyValid(key))\n                    {\n                        throw new Exception(\"Key \\\"\" + key.ToString() + \"\\\" is already assigned or is not valid.\");\n                    }\n                    FindNotAssignedEditorControl(controlType, device).SetControl(key);\n                    break;\n                case MyGuiInputDeviceEnum.Mouse:\n                    MyMouseButtonsEnum mouse = ParseMyMouseButtonsEnum(control[controlId]);\n                    if (!IsMouseButtonValid(mouse))\n                    {\n                        throw new Exception(\"Mouse button \\\"\" + mouse.ToString() + \"\\\" is already assigned or is not valid.\");\n                    }\n                    FindNotAssignedEditorControl(controlType, device).SetControl(mouse);\n                    break;\n                case MyGuiInputDeviceEnum.Joystick:\n                    MyJoystickButtonsEnum joy = ParseMyJoystickButtonsEnum(control[controlId]);\n                    if (!IsJoystickButtonValid(joy))\n                    {\n                        throw new Exception(\"Joystick button \\\"\" + joy.ToString() + \"\\\" is already assigned or is not valid.\");\n                    }\n                    FindNotAssignedEditorControl(controlType, device).SetControl(joy);\n                    break;\n                case MyGuiInputDeviceEnum.JoystickAxis:\n                    MyJoystickAxesEnum joyAxis = ParseMyJoystickAxesEnum(control[controlId]);\n                    if (!IsJoystickAxisValid(joyAxis))\n                    {\n                        throw new Exception(\"Joystick axis \\\"\" + joyAxis.ToString() + \"\\\" is already assigned or is not valid.\");\n                    }\n                    FindNotAssignedEditorControl(controlType, device).SetControl(joyAxis);\n                    break;\n                case MyGuiInputDeviceEnum.None:\n                    break;\n                default:\n                    break;\n            }\n        }\n\n        public static MyGuiInputDeviceEnum ParseMyGuiInputDeviceEnum(string s)\n        {\n            for (int i = 0; i < MyEnumsToStrings.GuiInputDeviceEnum.Length; i++)\n\t\t\t{\n                if (MyEnumsToStrings.GuiInputDeviceEnum[i] == s) return (MyGuiInputDeviceEnum)i;\n\t\t\t}\n            throw new ArgumentException(\"Value \\\"\"+ s +\"\\\" is not from GuiInputDeviceEnum.\", \"s\");\n        }\n\n        public static MyJoystickButtonsEnum ParseMyJoystickButtonsEnum(string s)\n        {\n            for (int i = 0; i < MyEnumsToStrings.JoystickButtonsEnum.Length; i++)\n            {\n                if (MyEnumsToStrings.JoystickButtonsEnum[i] == s) return (MyJoystickButtonsEnum)i;\n            }\n            throw new ArgumentException(\"Value \\\"\" + s + \"\\\" is not from JoystickButtonsEnum.\", \"s\");\n        }\n\n        public static MyJoystickAxesEnum ParseMyJoystickAxesEnum(string s)\n        {\n            for (int i = 0; i < MyEnumsToStrings.JoystickAxesEnum.Length; i++)\n            {\n                if (MyEnumsToStrings.JoystickAxesEnum[i] == s) return (MyJoystickAxesEnum)i;\n            }\n            throw new ArgumentException(\"Value \\\"\" + s + \"\\\" is not from JoystickAxesEnum.\", \"s\");\n        }\n\n        public static MyMouseButtonsEnum ParseMyMouseButtonsEnum(string s)\n        {\n            for (int i = 0; i < MyEnumsToStrings.MouseButtonsEnum.Length; i++)\n            {\n                if (MyEnumsToStrings.MouseButtonsEnum[i] == s) return (MyMouseButtonsEnum)i;\n            }\n            throw new ArgumentException(\"Value \\\"\" + s + \"\\\" is not from MouseButtonsEnum.\", \"s\");\n        }\n\n        public static MyGameControlEnums ParseMyGameControlEnums(string s)\n        {\n            for (int i = 0; i < MyEnumsToStrings.GameControlEnums.Length; i++)\n            {\n                if (MyEnumsToStrings.GameControlEnums[i] == s) return (MyGameControlEnums)i;\n            }\n            throw new ArgumentException(\"Value \\\"\" + s + \"\\\" is not from GameControlEnums.\", \"s\");\n        }\n\n        public static MyEditorControlEnums ParseMyEditorControlEnums(string s)\n        {\n            for (int i = 0; i < MyEnumsToStrings.EditorControlEnums.Length; i++)\n            {\n                if (MyEnumsToStrings.EditorControlEnums[i] == s) return (MyEditorControlEnums)i;\n            }\n            throw new ArgumentException(\"Value \\\"\" + s + \"\\\" is not from EditorControlEnums.\", \"s\");\n        }\n\n        public static MyGuiControlTypeEnum ParseMyGuiControlTypeEnum(string s)\n        {\n            for (int i = 0; i < MyEnumsToStrings.ControlTypeEnum.Length; i++)\n            {\n                if (MyEnumsToStrings.ControlTypeEnum[i] == s) return (MyGuiControlTypeEnum)i;\n            }\n            throw new ArgumentException(\"Value \\\"\" + s + \"\\\" is not from MyGuiInputTypeEnum.\", \"s\");\n        }\n\n        private MyControl FindNotAssignedGameControl(MyGameControlEnums type, MyGuiInputDeviceEnum deviceType)\n        {\n            foreach (var item in m_gameControlsList)\n            {\n                if (item.GetGameControlEnum().Value == type && item.IsControlAssigned(deviceType) == false) return item;\n            }\n            throw new Exception(\"Game control \\\"\" + MyEnumsToStrings.GameControlEnums[(int)type] + \"\\\" not found at control list or control is already assigned.\");\n        }\n\n        private MyControl FindNotAssignedEditorControl(MyEditorControlEnums type, MyGuiInputDeviceEnum deviceType)\n        {\n            foreach (var item in m_editorControlsList)\n            {\n                if (item.GetEditorControlEnum().Value == type && item.IsControlAssigned(deviceType) == false) return item;\n            }\n            throw new Exception(\"Editor control \\\"\" + MyEnumsToStrings.GameControlEnums[(int)type] + \"\\\" not found at control list or control is already assigned.\");\n        }\n\n        public event OnControlsSaved ControlsSaved;\n\n        public void Dispose()\n        {\n            UninitDevicePluginHandlerCallBack();\n            if (ControlsSaved != null) \n            {\n                ControlsSaved = null;\n            }\n        }\n\n        public static bool ENABLE_DEVELOPER_KEYS\n        {\n            get\n            {\n                return MyMwcFinalBuildConstants.IS_DEVELOP || ((MyGuiScreenGamePlay.Static != null && MyGuiScreenGamePlay.Static.CheatsEnabled()) || (MyGuiScreenGamePlay.Static == null && MyClientServer.LoggedPlayer!= null && MyClientServer.LoggedPlayer.GetUseCheats()));\n            }\n        }\n\n        #region Functionality of the old PrimaryController\n\n        public static bool Trichording = false;\n\n        public float GetRoll()\n        {\n            return GetGameControlAnalogState(MyGameControlEnums.ROLL_RIGHT) - GetGameControlAnalogState(MyGameControlEnums.ROLL_LEFT);\n        }\n\n        public Vector3 GetPositionDelta()\n        {\n            Vector3 moveIndicator = Vector3.Zero;\n\n            // get rotation based on primary controller settings\n            moveIndicator.X = GetGameControlAnalogState(MyGameControlEnums.STRAFE_RIGHT) - GetGameControlAnalogState(MyGameControlEnums.STRAFE_LEFT);\n            moveIndicator.Y = GetGameControlAnalogState(MyGameControlEnums.UP_THRUST) - GetGameControlAnalogState(MyGameControlEnums.DOWN_THRUST);\n            moveIndicator.Z = GetGameControlAnalogState(MyGameControlEnums.REVERSE) - GetGameControlAnalogState(MyGameControlEnums.FORWARD);\n\n            // disallow trichording in game\n            if (!MyGuiScreenGamePlay.Static.IsEditorActive())\n            {\n                if (!Trichording && moveIndicator.LengthSquared() > 1)\n                {\n                    moveIndicator.Normalize();\n                }\n            }\n\n            return moveIndicator;\n        }\n\n        public Vector2 GetRotation()\n        {\n            Vector2 rotationIndicator = Vector2.Zero;\n            \n            // shouldn't we rotate secondary camera instead?\n            if (!IsGameControlPressed(MyGameControlEnums.CONTROL_SECONDARY_CAMERA))\n            {\n                // get rotation from mouse\n                rotationIndicator = new Vector2(GetMouseYForGamePlay() - MyMinerGame.ScreenSizeHalf.Y, GetMouseXForGamePlay() - MyMinerGame.ScreenSizeHalf.X) * MyGuiConstants.MOUSE_ROTATION_INDICATOR_MULTIPLIER;\n\n                rotationIndicator.X -= GetGameControlAnalogState(MyGameControlEnums.ROTATION_UP);\n                rotationIndicator.X += GetGameControlAnalogState(MyGameControlEnums.ROTATION_DOWN);\n                rotationIndicator.Y -= GetGameControlAnalogState(MyGameControlEnums.ROTATION_LEFT);\n                rotationIndicator.Y += GetGameControlAnalogState(MyGameControlEnums.ROTATION_RIGHT);\n            }\n\n            // Fix rotation to be independent from physics step.\n            rotationIndicator *= MyConstants.PHYSICS_STEPS_PER_SECOND * MyGuiConstants.ROTATION_INDICATOR_MULTIPLIER;\n\n            return rotationIndicator;\n        }\n\n        public Vector2 GetCursorPosition()\n        {\n            return new Vector2(GetMouseX(), GetMouseY());\n        }\n\n        #endregion\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Core/MyGuiLocalizedKeyboardState.cs",
    "content": "﻿using System;\nusing System.Linq;\nusing System.Runtime.InteropServices;\nusing SysUtils.Utils;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Toolkit.Input;\nusing System.Collections.Generic;\n\nnamespace MinerWars.AppCode.Game.GUI.Core\n{\n    class MyGuiLocalizedKeyboardState\n    {\n        static HashSet<byte> m_localKeys;\n\n        internal enum MAPVK : uint\n        {\n            VK_TO_VSC = 0,\n            VSC_TO_VK = 1,\n            VK_TO_CHAR = 2\n        }\n\n        internal const uint KLF_NOTELLSHELL = 0x00000080;\n\n        public struct KeyboardLayout : IDisposable\n        {\n            public readonly IntPtr Handle;\n\n            public KeyboardLayout(IntPtr handle)\n                : this()\n            {\n                Handle = handle;\n            }\n\n            public KeyboardLayout(string keyboardLayoutID)\n                : this(MyWindowsAPIWrapper.LoadKeyboardLayout(keyboardLayoutID, KLF_NOTELLSHELL))\n            {\n            }\n\n            public bool IsDisposed\n            {\n                get;\n                private set;\n            }\n\n            public void Dispose()\n            {\n                if (IsDisposed)\n                    return;\n\n                MyWindowsAPIWrapper.UnloadKeyboardLayout(Handle);\n                IsDisposed = true;\n            }\n\n            public static KeyboardLayout US_English = new KeyboardLayout(\"00000409\");\n\n            public static KeyboardLayout Active\n            {\n                get\n                {\n                    return new KeyboardLayout(MyWindowsAPIWrapper.GetKeyboardLayout(IntPtr.Zero));\n                }\n            }\n        }\n\n        private MyKeyboardState m_previousKeyboardState;\n        private MyKeyboardState m_actualKeyboardState;\n\n        public MyGuiLocalizedKeyboardState()\n        {\n            m_actualKeyboardState = MyWindowsKeyboard.GetCurrentState();\n\n            if (m_localKeys == null)\n            {\n                m_localKeys = new HashSet<byte>();\n\n                AddLocalKey(Keys.LeftControl);\n                AddLocalKey(Keys.LeftAlt);\n                AddLocalKey(Keys.LeftShift);\n                AddLocalKey(Keys.RightAlt);\n                AddLocalKey(Keys.RightControl);\n                AddLocalKey(Keys.RightShift);\n                AddLocalKey(Keys.Delete);\n                AddLocalKey(Keys.NumPad0);\n                AddLocalKey(Keys.NumPad1);\n                AddLocalKey(Keys.NumPad2);\n                AddLocalKey(Keys.NumPad3);\n                AddLocalKey(Keys.NumPad4);\n                AddLocalKey(Keys.NumPad5);\n                AddLocalKey(Keys.NumPad6);\n                AddLocalKey(Keys.NumPad7);\n                AddLocalKey(Keys.NumPad8);\n                AddLocalKey(Keys.NumPad9);\n                AddLocalKey(Keys.Decimal);\n                AddLocalKey(Keys.LeftWindows);\n                AddLocalKey(Keys.RightWindows);\n                AddLocalKey(Keys.Apps);\n                AddLocalKey(Keys.Pause);\n                AddLocalKey(Keys.Divide);\n            }\n        }\n\n        void AddLocalKey(Keys key)\n        {\n            m_localKeys.Add((byte)key);\n        }\n\n        public void UpdateStates()\n        {\n            m_previousKeyboardState = m_actualKeyboardState;\n            m_actualKeyboardState = MyWindowsKeyboard.GetCurrentState();\n        }\n\n        public MyKeyboardState GetActualKeyboardState()\n        {\n            return m_actualKeyboardState;\n        }\n\n        public MyKeyboardState GetPreviousKeyboardState()\n        {\n            return m_previousKeyboardState;\n        }\n\n        public bool IsPreviousKeyDown(Keys key, bool isLocalKey)\n        {\n            if (!isLocalKey)\n                key = LocalToUSEnglish(key);\n\n            return m_previousKeyboardState.IsKeyDown((Keys)key);\n        }\n\n        public bool IsPreviousKeyDown(Keys key)\n        {\n            return IsPreviousKeyDown(key, IsKeyLocal(key));\n        }\n\n        public bool IsPreviousKeyUp(Keys key, bool isLocalKey)\n        {\n            if (!isLocalKey)\n                key = LocalToUSEnglish(key);\n\n            return m_previousKeyboardState.IsKeyUp((Keys)key);\n        }\n\n        public bool IsPreviousKeyUp(Keys key)\n        {\n            return IsPreviousKeyUp(key, IsKeyLocal(key));\n        }\n\n\n        public bool IsKeyDown(Keys key, bool isLocalKey)\n        {\n            if (!isLocalKey)\n                key = LocalToUSEnglish(key);\n\n            return m_actualKeyboardState.IsKeyDown((Keys)key);\n        }\n\n        public bool IsKeyUp(Keys key, bool isLocalKey)\n        {\n            if (!isLocalKey)\n                key = LocalToUSEnglish(key);\n\n            return m_actualKeyboardState.IsKeyUp((Keys)key);\n        }\n\n        public bool IsKeyDown(Keys key)\n        {\n            return IsKeyDown(key, IsKeyLocal(key));\n        }\n\n        bool IsKeyLocal(Keys key)\n        {\n            return m_localKeys.Contains((byte)key);\n        }\n\n        public bool IsKeyUp(Keys key)\n        {\n            return IsKeyUp(key, IsKeyLocal(key));\n        }\n\n        // Maps a localized character like 'S' to the virtual scan code\n        //  for that key on the user's keyboard ('O' in dvorak, for example)\n        public static Keys USEnglishToLocal(Keys key)\n        {\n            return key;\n\n            //var activeScanCode = MyWindowsAPIWrapper.MapVirtualKeyEx((uint)key, MAPVK.VK_TO_VSC, KeyboardLayout.US_English.Handle);\n            //var nativeVirtualCode = MyWindowsAPIWrapper.MapVirtualKeyEx(activeScanCode, MAPVK.VSC_TO_VK, KeyboardLayout.Active.Handle);\n\n            //return (Keys)nativeVirtualCode;\n        }\n\n        public static Keys LocalToUSEnglish(Keys key)\n        {\n            return key;\n\n            /*\n            var activeScanCode = MyWindowsAPIWrapper.MapVirtualKeyEx((uint)key, MAPVK.VK_TO_VSC, KeyboardLayout.US_English.Handle);\n            var nativeVirtualCode = MyWindowsAPIWrapper.MapVirtualKeyEx(activeScanCode, MAPVK.VSC_TO_VK, KeyboardLayout.Active.Handle);\n              */\n\n            //var activeScanCode = MyWindowsAPIWrapper.MapVirtualKeyEx((uint)key, MAPVK.VK_TO_VSC, KeyboardLayout.Active.Handle);\n            //var nativeVirtualCode = MyWindowsAPIWrapper.MapVirtualKeyEx(activeScanCode, MAPVK.VSC_TO_VK, KeyboardLayout.US_English.Handle);\n\n            //return (Keys)nativeVirtualCode;\n        }\n\n        public bool IsAnyKeyPressed()\n        {\n            return m_actualKeyboardState.IsAnyKeyPressed();\n        }\n\n        public void GetActualPressedKeys(List<Keys> keys)\n        {\n            m_actualKeyboardState.GetPressedKeys(keys);\n            for (int i = 0; i < keys.Count; i++)\n            {\n                if (!IsKeyLocal((Keys)keys[i]))\n                    keys[i] = (Keys)USEnglishToLocal((Keys)keys[i]);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Core/MyGuiManager.cs",
    "content": "﻿#region Using\n\nusing System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropServices;\nusing System.Text;\nusing KeenSoftwareHouse.Library.Extensions;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.AppCode.Game.Effects;\nusing MinerWars.AppCode.Game.GUI.DebugScreens;\nusing MinerWars.AppCode.Game.GUI.Helpers;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Managers;\nusing MinerWars.AppCode.Game.Prefabs;\nusing MinerWars.AppCode.Game.Render;\nusing MinerWars.AppCode.Game.Sessions;\nusing MinerWars.AppCode.Game.Sessions.Multiplayer;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.VideoMode;\nusing MinerWars.AppCode.Game.World;\nusing MinerWars.AppCode.Networking.SectorService;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils;\nusing SysUtils.Utils;\n\n\nusing MinerWarsMath;\n//using MinerWarsMath.Graphics;\n//using MinerWars.AppCode.Toolkit.Input\n\nusing SharpDX;\nusing SharpDX.Direct3D9;\nusing SharpDX.Toolkit;\n\n#endregion\n\n//  This is static manager for all GUI screens. Use it when adding new screens.\n\n//  Normalized coordinates - is in interval <0..1> on horizontal axis, and now I am not 100% but vertical is maybe also <0..1> or <0..something> where\n//  'something' is defined by aspect ratio.\n\n//  Screen coordinates - standard pixel coordinate on interval e.g. <0..1280>\n\n//  IMPORTANT FOR RENDERING:\n//  We call Begin on default sprite batch as first thing in MyGuiManager.Draw method. It's OK for most of the screens and controls, but \n//  we have to call End and then again Begin inside GamePlay screen - because it does a lot of 3D rendering and state changes.\n//  Same applies for controls that do stencil-mask, they need to restart our sprite batch again.\n//  Advantage is that almost all screens and controls are batched and rendered in just one draw call (they are deferred)\n\nnamespace MinerWars.AppCode.Game.GUI.Core\n{\n    using Vector2 = MinerWarsMath.Vector2;\n    using Color = MinerWarsMath.Color;\n    using Rectangle = MinerWarsMath.Rectangle;\n    using Matrix = MinerWarsMath.Matrix;\n    using MinerWars.AppCode.Toolkit.Input;\n    using SharpDX.Toolkit.Graphics;\n    using MinerWars.AppCode.Game.Utils.VertexFormats;\n\n    //  This sort of alignement allows as to set origin at any of 9 points of rectangle (of course, we need to add these points here and customize position calc)\n    enum MyGuiDrawAlignEnum\n    {\n        HORISONTAL_LEFT_AND_VERTICAL_TOP,\n        HORISONTAL_LEFT_AND_VERTICAL_CENTER,\n        HORISONTAL_LEFT_AND_VERTICAL_BOTTOM,\n        HORISONTAL_CENTER_AND_VERTICAL_CENTER,\n        HORISONTAL_CENTER_AND_VERTICAL_TOP,\n        HORISONTAL_CENTER_AND_VERTICAL_BOTTOM,\n        HORISONTAL_RIGHT_AND_VERTICAL_BOTTOM,\n        HORISONTAL_RIGHT_AND_VERTICAL_CENTER,\n        HORISONTAL_RIGHT_AND_VERTICAL_TOP\n    }\n\n    static class MyGuiManager\n    {\n        internal class Friend\n        {\n            public void RemoveScreen(MyGuiScreenBase screen)\n            {\n                MyGuiManager.RemoveScreen(screen);\n            }\n        }\n\n        [DllImport(\"user32.dll\")]\n        public static extern IntPtr GetForegroundWindow();\n\n        public static System.Threading.Thread AllowedThread = null;\n\n        //  Textures for GUI elements such as screen background, etc... for wide or tall screens and backgrounds\n        public class MyGuiTextureScreen\n        {\n            string m_filename;\n            float m_aspectRatio;\n\n            //  We don't allow default constructor for this class\n            private MyGuiTextureScreen() { }\n\n            public MyGuiTextureScreen(string filename, int width, int height)\n            {\n                m_filename = filename;\n                m_aspectRatio = (float)width / (float)height;\n            }\n\n            public string GetFilename()\n            {\n                return m_filename;\n            }\n\n            public float GetAspectRatio()\n            {\n                return m_aspectRatio;\n            }\n        }\n\n        //  Safe coordinates and size of GUI screen. It makes sure we are OK with aspect ratio and\n        //  also it makes sure that if very-wide resolution is used (5000x1000 or so), we draw GUI only in the middle screen.\n        static Rectangle m_safeGuiRectangle;            //  Rectangle for safe GUI, it independent from screen aspect ration so GUI elements look same on any resolution (especially their width)\n        static Rectangle m_safeFullscreenRectangle;     //  Rectangle for safe fullscreen and GUI - use only when you draw fullscreen images and want to stretch it from left to right. \n        static float m_safeScreenScale;             //  Height scale of actual screen if compared to reference 1200p (calculated as real_height / 1200)\n        static Rectangle m_fullscreenRectangle;         //  Real fullscreen\n\n        static Render.MyRender.MyRenderSetup m_renderSetup;\n        static Render.MyRender.MyRenderSetup m_backupRenderSetup = new MyRender.MyRenderSetup();\n\n\n        //  Current debug screens\n        static MyGuiScreenDebugBase m_currentStatisticsScreen;\n        static MyGuiScreenDebugBase m_currentDebugScreen;\n        static bool m_debugScreensEnabled = true;\n\n        public static bool IsDebugScreenEnabled() { return m_debugScreensEnabled; }\n\n        //  Normalized coordinates where width is always 1.0 and height something like 0.8\n        //  Don't confuse with GUI normalized coordinates. They are different.\n        static Vector2 m_hudSize;\n        static Vector2 m_hudSizeHalf;\n\n        //  Min and max mouse coords (in normalized units). Must be calculated from fullscreen, no GUI rectangle.\n        static Vector2 m_minMouseCoord;\n        static Vector2 m_maxMouseCoord;\n        //  Min and max mouse coords for the fullscreen HUD (in normalized units). Must be calculated from fullscreen, no GUI rectangle.\n        static Vector2 m_minMouseCoordFullscreenHud;\n        static Vector2 m_maxMouseCoordFullscreenHud;\n\n        //  Each screen can use this sprite batch and sprite font, so they don't need to allocate their own\n        private static SpriteBatch m_spriteBatch;\n        private static int m_spriteBatchUsageCount = 0;\n\n        //  All fonts used in the game\n        static MyGuiFont m_fontGuiImpactLarge;\n        static MyGuiFont m_fontMinerWarsRed;\n        static MyGuiFont m_fontMinerWarsGreen;\n        static MyGuiFont m_fontMinerWarsBlue;\n\n        static MyGuiFont m_fontMinerWarsWhite;\n\n        static MyFullScreenQuad m_fullscreenQuad;\n        //static MyGuiSpriteBatchOwn m_spriteBatchOwn;\n\n        //  Textures / sprites\n        static MyTexture2D m_blankTexture;\n        //static MyTexture2D m_textboxSmallTexture;\n        static MyTexture2D m_textboxMediumTexture;\n        //static MyTexture2D m_textboxLargeTexture;\n        static MyTexture2D m_buttonTexture;\n        private static MyTexture2D m_buttonTextureBg;\n        static MyTexture2D m_searchButtonTexture;\n        static MyTexture2D m_smallButtonTexture;\n        static MyTexture2D m_travelButtonTexture;\n\n        static MyTexture2D m_comboboxMediumTexture;\n\n\n        static MyTexture2D m_comboboxMediumTopTexture;\n        static MyTexture2D m_comboboxMediumItemTexture;\n        static MyTexture2D m_comboboxMediumSelectedTexture;\n        static MyTexture2D m_comboboxMediumBottomTexture;\n\n        static MyTexture2D m_scrollbarSlider;\n        static MyTexture2D m_horizontalScrollbarSlider;\n        static MyTexture2D m_mouseCursorTexture;\n        static MyTexture2D m_mouseCursorArrowTexture;\n        static System.Drawing.Bitmap m_mouseCursorBitmap;\n        static MyTexture2D m_mouseCursorHandTexture;\n        static MyTexture2D m_lockedButtonTexture;\n        static MyTexture2D m_lockedInventoryItemTexture;\n        static MyTexture2D m_sliderTexture;\n        static MyTexture2D m_sliderControlTexture;\n        //private static MyTexture2D m_configWheelBackground;\n        //private static MyTexture2D m_configWheelHover;\n        private static MyTexture2D m_configWheelBackgroundSmall;\n        static MyTexture2D m_randomTexture;\n        static MyTexture2D m_checkBoxOnTexture;\n        static MyTexture2D m_checkBoxOffTexture;\n        static MyTexture2D m_comboboxSelectedTexture;\n        static MyTexture2D m_ammoToolTipTexture;\n        static MyTexture2D m_ammoSelectLowBackgroundTexture;\n        static MyTexture2D m_ammoSelectKeyConfirmBorderTexture;\n        static MyTexture2D m_fogTexture;\n        static MyTexture2D m_fogSmallTexture;\n        static MyTexture2D m_fogSquareTexture;\n        static MyTexture2D m_textureInterlanced;//texture drawn for sprite video player overlapping entire video\n        static MyTexture2D m_expandTexture;         // Expand for Tree View\n        static MyTexture2D m_collapseTexture;       // Collapse for Tree View\n        static MyTexture2D m_removeItemTexture;\n        static MyTexture2D m_progressBarTexture;\n\n        static Dictionary<string, MyTexture2D> m_remoteViewWeaponsTextures;\n        static Dictionary<string, MyTexture2D> m_remoteViewDroneTextures;\n        static Dictionary<string, MyTexture2D> m_remoteViewCameraTextures;\n\n        //static MyTexture2D m_inventoryScreenBackgroundTexture;\n\n        static MyTexture2D m_dialogueNeutralBackgroundTexture;\n        static MyTexture2D m_dialogueFriendBackgroundTexture;\n        static MyTexture2D m_dialogueEnemyBackgroundTexture;\n        //private static MyTexture2D m_SelectEditorbackground;\n        //private static MyTexture2D m_SandboxBackground;\n        // Editor toolbar button textures\n        static MyTexture2D m_toolbarButton;\n        static MyTexture2D m_toolbarButtonHover;\n\n        // journal textures\n        static MyTexture2D m_journalFilterAll;\n        static MyTexture2D m_journalFilterGlobalEvents;\n        static MyTexture2D m_journalFilterMissions;\n        private static MyTexture2D m_journalFilterStory;\n        private static MyTexture2D m_journalLine;\n        private static MyTexture2D m_journalSelected;\n        private static MyTexture2D m_journalCloseButton;\n\n        // inventory screen\n        static MyTexture2D m_inventoryButton;\n        static MyTexture2D m_inventoryButtonBg;\n        static MyTexture2D m_inventoryListbox;\n        //static MyTexture2D m_inventoryListboxItem;\n        //static MyTexture2D m_inventoryListboxScrollBar;\n        //static MyTexture2D m_inventoryMoneyBox;\n        static MyTexture2D m_inventoryButtonTakeAll;\n        static MyTexture2D m_inventoryButtonTakeAllBg;\n\n        private static MyTexture2D m_inventoryFilterSortAllOn;\n        private static MyTexture2D m_inventoryFilterSortAllOff;\n        private static MyTexture2D m_inventoryFilterSortConsumablesOff;\n        private static MyTexture2D m_inventoryFilterSortConsumablesOn;\n        private static MyTexture2D m_inventoryFilterSortEquipmentOff;\n        private static MyTexture2D m_inventoryFilterSortEquipmentOn;\n        private static MyTexture2D m_inventoryFilterSortGodsOn;\n        private static MyTexture2D m_inventoryFilterSortGodsOff;\n        private static MyTexture2D m_inventoryFilterSortOresOff;\n        private static MyTexture2D m_inventoryFilterSortOresOn;\n        private static MyTexture2D m_inventoryFilterSortWeaponsOff;\n        private static MyTexture2D m_inventoryFilterSortWeaponsOn;\n        private static MyTexture2D m_inventoryPreviousShip;\n        private static MyTexture2D m_inventoryNextShip;\n\n        private static MyTexture2D m_toltipLeft;\n        private static MyTexture2D m_toltipBody;\n        private static MyTexture2D m_toltipRight;\n\n        //Hub control screen         \n        //private static MyTexture2D m_hubBackground;\n        private static MyTexture2D m_hubItemBackground;\n        private static MyTexture2D m_hubButton;\n        private static MyTexture2D m_hubButtonBg;\n        private static MyTexture2D m_MessageButton;\n\n        // Prefab previews (used in Editor - AddObjectTreeView)\n        //private static Dictionary<MyMwcObjectBuilder_Prefab_TypesEnum, MyTexture2D> m_prefabPreviews;\n        private static readonly MyTexture2D[][][] m_prefabPreviews = new MyTexture2D[MyMwcUtils.GetMaxValueFromEnum<MyMwcObjectBuilderTypeEnum>() + 1][][];\n\n        static List<MyGuiTextureScreen> m_backgroundScreenTextures;\n        static MySpriteListVideoPlayer m_backgroundInterferenceSpriteVideoPlayer;\n        static MySpriteListVideoPlayer m_dialoguePortraitNoiseVideoPlayer;\n\n        static MyGuiScreenBase m_lastScreenWithFocus;\n\n        static bool m_fullScreenHudEnabled = false;\n        public static bool FullscreenHudEnabled { get { return m_fullScreenHudEnabled; } set { m_fullScreenHudEnabled = value; } }\n\n        //static MyEffectSpriteBatchOriginal m_spriteEffect;\n\n        static Vector2 m_oldVisPos;\n        static Vector2 m_oldNonVisPos;\n        static bool m_oldMouseVisibilityState;\n        static public void SetMouseCursorVisibility(bool p)\n        {\n            if (m_oldMouseVisibilityState && p != m_oldMouseVisibilityState)\n            {\n                //KeenSoftwareHouse.Library.Trace.Trace.SendMsgLastCall(p.ToString());\n                //KeenSoftwareHouse.Library.Trace.Trace.SendMsgLastCall(m_oldNonVisPos.ToString());\n                //KeenSoftwareHouse.Library.Trace.Trace.SendMsgLastCall(m_oldVisPos.ToString());\n\n                m_oldVisPos = MyGuiInput.GetMousePosition();\n                m_oldMouseVisibilityState = p;\n                MyMinerGame.Static.IsMouseVisible = p;\n                m_oldNonVisPos = new Vector2(MyMinerGame.ScreenSizeHalf.X, MyMinerGame.ScreenSizeHalf.Y);\n                MyGuiInput.SetMousePosition((int)m_oldNonVisPos.X, (int)m_oldNonVisPos.Y);\n                MyGuiInput.SetMouseToScreenCenter();\n                return;\n            }\n\n            if (!m_oldMouseVisibilityState && p != m_oldMouseVisibilityState)\n            {\n                //KeenSoftwareHouse.Library.Trace.Trace.SendMsgLastCall(p.ToString());\n                //KeenSoftwareHouse.Library.Trace.Trace.SendMsgLastCall(m_oldNonVisPos.ToString());\n                //KeenSoftwareHouse.Library.Trace.Trace.SendMsgLastCall(m_oldVisPos.ToString());\n\n                m_oldNonVisPos = MyGuiInput.GetMousePosition();\n                m_oldMouseVisibilityState = p;\n                MyMinerGame.Static.IsMouseVisible = p;\n                MyGuiInput.SetMousePosition((int)m_oldVisPos.X, (int)m_oldVisPos.Y);\n                return;\n            }\n        }\n\n        //  This one cas be public and not-readonly because we may want to change it from other screens or controls\n        private static Vector2 m_mouseCursorPosition;\n        public static Vector2 MouseCursorPosition\n        {\n            get\n            {\n                if (MyVideoModeManager.IsHardwareCursorUsed())\n                {\n                    Vector2 scp = MyGuiInput.GetMousePosition();\n                    m_mouseCursorPosition = GetNormalizedCoordinateFromScreenCoordinate(scp);\n                    return m_mouseCursorPosition;\n                }\n                else\n                    return m_mouseCursorPosition;\n            }\n            set\n            {\n                if (MyVideoModeManager.IsHardwareCursorUsed())\n                {\n                    //MyMinerGame.ScreenSizeHalf.X, MyMinerGame.ScreenSizeHalf.Y\n                    Vector2 z = GetScreenCoordinateFromNormalizedCoordinate(value);\n                    MyGuiInput.SetMousePosition((int)z.X, (int)z.Y);\n                }\n                m_mouseCursorPosition = value;\n            }\n        }\n\n\n\n        //  List of screens - works like stack, on the top is screen that has focus\n        static List<MyGuiScreenBase> m_screens;\n\n        //  Used only when adding / removing screens - because we can't alter m_screens during iterator looping\n        static List<MyGuiScreenBase> m_screensToRemove;\n        static List<MyGuiScreenBase> m_screensToAdd;\n\n        //  Keyboard and mouse input\n        static MyGuiInput m_input;\n\n        static MyScreenshot m_screenshot;\n\n        // If true, all screen without focus handles input\n        static bool m_inputToNonFocusedScreens = false;\n        public static bool InputToNonFocusedScreens\n        {\n            get\n            {\n                return m_inputToNonFocusedScreens;\n            }\n            set\n            {\n                m_inputToNonFocusedScreens = value;\n            }\n        }\n        //static StringBuilder m_inputSharingText = new StringBuilder(\"WARNING: Sharing input enabled (release ALT to disable it)\");\n        static StringBuilder m_inputSharingText;\n        static StringBuilder m_renderOverloadedText = new StringBuilder(\"WARNING: Render is overloaded, optimize your scene!\");\n\n        private static MyGuiPreviewRenderer m_previewRenderer = new MyGuiPreviewRenderer();\n\n        private static MyGuiScreenDemoAccessInfo m_demoScreen;\n\n        /// <summary>\n        /// Initializes a new instance of the <see cref=\"T:System.Object\"/> class.\n        /// </summary>\n        static MyGuiManager()\n        {\n            MyMwcLog.WriteLine(\"MyGuiManager()\");\n\n            if (MyFakes.ALT_AS_DEBUG_KEY)\n            {\n                m_inputSharingText = new StringBuilder(\"WARNING: Sharing input enabled (release ALT to disable it)\");\n            }\n            else\n            {\n                m_inputSharingText = new StringBuilder(\"WARNING: Sharing input enabled (release Scroll Lock to disable it)\");\n            }\n\n            m_screens = new List<MyGuiScreenBase>();\n            m_screensToRemove = new List<MyGuiScreenBase>();\n            m_screensToAdd = new List<MyGuiScreenBase>();\n\n            m_oldVisPos = MyGuiInput.GetMousePosition();\n            m_oldNonVisPos = new Vector2(MyMinerGame.ScreenSizeHalf.X, MyMinerGame.ScreenSizeHalf.Y);\n\n            MyClientServer.OnLoggedPlayerChanged += OnLoggedUserChanged;\n\n            m_renderSetup = new MyRender.MyRenderSetup();\n            m_renderSetup.EnableShadowInterleaving = false;\n            m_renderSetup.CallerID = MyRenderCallerEnum.Main;\n\n            MyGuiManager.AllowedThread = System.Threading.Thread.CurrentThread;\n        }\n\n        public static void SetHWCursorBitmap(System.Drawing.Bitmap b)\n        {\n            System.Windows.Forms.Form f = (System.Windows.Forms.Form)System.Windows.Forms.Form.FromHandle(MyMinerGame.Static.Window.NativeWindow.Handle);\n            f.Cursor = new System.Windows.Forms.Cursor(b.GetHicon());\n        }\n\n        /// <summary>\n        /// Loads the data.\n        /// </summary>\n        public static void LoadData()\n        {\n            m_screens.Clear();\n            m_screensToRemove.Clear();\n            m_screensToAdd.Clear();\n\n            MyTextsWrapper.ActualLanguage = MyConfig.Language;\n            MyDialoguesWrapper.ActualLanguage = MyConfig.Language;\n            MySubtitles.Enabled = MyConfig.Subtitles;\n        }\n\n        public static bool IsSpriteBatchReady\n        {\n            get { return m_spriteBatch != null; }\n        }\n\n        public static void LoadContent()\n        {\n            MyMwcLog.WriteLine(\"MyGuiManager.LoadContent() - START\");\n            MyMwcLog.IncreaseIndent();\n\n            MyVertexFormats.LoadContent(MyMinerGame.Static.GraphicsDevice);\n\n            BlendState.LoadContent(MyMinerGame.Static.GraphicsDevice);\n            RasterizerState.LoadContent(MyMinerGame.Static.GraphicsDevice);\n            SamplerState.LoadContent(MyMinerGame.Static.GraphicsDevice);\n            DepthStencilState.LoadContent(MyMinerGame.Static.GraphicsDevice);\n\n            m_blankTexture = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Blank\", flags: TextureFlags.IgnoreQuality);\n            //m_textboxSmallTexture = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\TextboxSmall\", flags: TextureFlags.IgnoreQuality);\n            m_textboxMediumTexture = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\TextboxMedium\", flags: TextureFlags.IgnoreQuality);\n            //m_textboxLargeTexture = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\TextboxLarge\", flags: TextureFlags.IgnoreQuality);\n            m_buttonTexture = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Button\", flags: TextureFlags.IgnoreQuality);\n            m_buttonTextureBg = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\ButtonBg\", flags: TextureFlags.IgnoreQuality);\n            m_searchButtonTexture = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\SearchButton\", flags: TextureFlags.IgnoreQuality);\n            m_smallButtonTexture = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\SmallButton\", flags: TextureFlags.IgnoreQuality);\n\n            m_travelButtonTexture = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\TravelButton\", flags: TextureFlags.IgnoreQuality);\n\n            m_comboboxMediumTexture = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\ComboboxMedium\", flags: TextureFlags.IgnoreQuality);\n\n            m_comboboxMediumItemTexture = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\ComboboxMediumItemTexture\", flags: TextureFlags.IgnoreQuality);\n            //m_comboboxMediumSelectedTexture = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\ComboboxMediumSelectedTexture\", flags: TextureFlags.IgnoreQuality);\n            m_comboboxMediumTopTexture = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\ComboboxMediumTopTexture\", flags: TextureFlags.IgnoreQuality);\n            m_comboboxMediumBottomTexture = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\ComboboxMediumBottomTexture\", flags: TextureFlags.IgnoreQuality);\n\n            m_scrollbarSlider = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\ScrollbarSlider\", flags: TextureFlags.IgnoreQuality);\n            m_horizontalScrollbarSlider = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\HorizontalScrollbarSlider\", flags: TextureFlags.IgnoreQuality);\n            m_mouseCursorBitmap = System.Drawing.Bitmap.FromFile(Path.Combine(MyMinerGame.Static.RootDirectory, \"Textures\\\\GUI\\\\MouseCursorHW.png\")) as System.Drawing.Bitmap;\n            SetHWCursorBitmap(m_mouseCursorBitmap);\n            m_mouseCursorArrowTexture = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\MouseCursor\", flags: TextureFlags.IgnoreQuality);\n            SetMouseCursorTexture(m_mouseCursorArrowTexture);\n            m_mouseCursorHandTexture = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\MouseCursorHand\", flags: TextureFlags.IgnoreQuality);\n            m_lockedButtonTexture = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\LockedButton\", flags: TextureFlags.IgnoreQuality);\n            m_lockedInventoryItemTexture = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\LockedInventoryButton\", flags: TextureFlags.IgnoreQuality);\n            m_sliderTexture = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Slider\", flags: TextureFlags.IgnoreQuality);\n            m_sliderControlTexture = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\SliderControl\", flags: TextureFlags.IgnoreQuality);\n            //m_configWheelBackground = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\BackgroundScreen\\\\ConfigWheelBackground\", flags: TextureFlags.IgnoreQuality);\n            //m_configWheelHover = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\ConfigWheelHover\", flags: TextureFlags.IgnoreQuality);\n            //m_configWheelBackgroundSmall = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\ConfigWheelSmallBackground\", flags: TextureFlags.IgnoreQuality);\n            m_randomTexture = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\RandomTexture\", flags: TextureFlags.IgnoreQuality);\n            m_checkBoxOnTexture = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\CheckboxOn\", flags: TextureFlags.IgnoreQuality);\n            m_checkBoxOffTexture = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\CheckboxOff\", flags: TextureFlags.IgnoreQuality);\n            m_comboboxSelectedTexture = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\ComboboxSelected\", flags: TextureFlags.IgnoreQuality);\n            m_ammoToolTipTexture = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\AmmoToolTip\", flags: TextureFlags.IgnoreQuality);\n            m_ammoSelectLowBackgroundTexture = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\LowerBackground\", flags: TextureFlags.IgnoreQuality);\n            m_ammoSelectKeyConfirmBorderTexture = MyTextureManager.GetTexture<MyTexture2D>(\"textures\\\\GUI\\\\AmmoSelectionKeyConfirm\", flags: TextureFlags.IgnoreQuality);\n            m_fogTexture = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\fog\", flags: TextureFlags.IgnoreQuality);\n            m_fogSmallTexture = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\FogSmall\", flags: TextureFlags.IgnoreQuality);\n            m_fogSquareTexture = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\fogSquare\", flags: TextureFlags.IgnoreQuality);\n            m_textureInterlanced = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\BackGroundScreen\\\\InterlaceTextureOverlap\", flags: TextureFlags.IgnoreQuality);\n            m_expandTexture = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Expand\", flags: TextureFlags.IgnoreQuality);\n            m_collapseTexture = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Collapse\", flags: TextureFlags.IgnoreQuality);\n            m_toolbarButton = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Toolbar\\\\ToolbarButton\", flags: TextureFlags.IgnoreQuality);\n            m_toolbarButtonHover = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Toolbar\\\\ToolbarButtonHover\", flags: TextureFlags.IgnoreQuality);\n            m_progressBarTexture = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\ProgressBar\", flags: TextureFlags.IgnoreQuality);\n\n\n            m_journalFilterAll = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Journal\\\\JournalFilterAll\", flags: TextureFlags.IgnoreQuality);\n            m_journalFilterGlobalEvents = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Journal\\\\JournalFilterGlobalEvents\", flags: TextureFlags.IgnoreQuality);\n            m_journalFilterMissions = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Journal\\\\JournalFilterMissions\", flags: TextureFlags.IgnoreQuality);\n            m_journalFilterStory = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Journal\\\\JournalFilterStory\", flags: TextureFlags.IgnoreQuality);\n            m_journalLine = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Journal\\\\line\", flags: TextureFlags.IgnoreQuality);\n            m_journalSelected = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Journal\\\\select\", flags: TextureFlags.IgnoreQuality);\n            m_journalCloseButton = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Journal\\\\CloseButton\", flags: TextureFlags.IgnoreQuality);\n\n\n            //m_inventoryScreenBackgroundTexture = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\BackgroundScreen\\\\InventoryScreenBackground\", flags: TextureFlags.IgnoreQuality);\n            m_inventoryButton = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\InventoryScreen\\\\Button\", flags: TextureFlags.IgnoreQuality);\n            m_inventoryButtonBg = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\InventoryScreen\\\\ButtonBg\", flags: TextureFlags.IgnoreQuality);\n            m_inventoryButtonTakeAll = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\InventoryScreen\\\\ButtonTakeAll\", flags: TextureFlags.IgnoreQuality);\n            m_inventoryButtonTakeAllBg = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\InventoryScreen\\\\ButtonTakeAllBg\", flags: TextureFlags.IgnoreQuality);\n\n\n            m_inventoryFilterSortAllOff = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\InventoryScreen\\\\SortAllOff\", flags: TextureFlags.IgnoreQuality);\n            m_inventoryFilterSortAllOn = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\InventoryScreen\\\\SortAllOn\", flags: TextureFlags.IgnoreQuality);\n            m_inventoryFilterSortConsumablesOff = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\InventoryScreen\\\\SortConsumablesOff\", flags: TextureFlags.IgnoreQuality);\n            m_inventoryFilterSortConsumablesOn = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\InventoryScreen\\\\SortConsumablesOn\", flags: TextureFlags.IgnoreQuality);\n            m_inventoryFilterSortEquipmentOff = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\InventoryScreen\\\\SortEquipmentOff\", flags: TextureFlags.IgnoreQuality);\n            m_inventoryFilterSortEquipmentOn = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\InventoryScreen\\\\SortEquipmentOn\", flags: TextureFlags.IgnoreQuality);\n            m_inventoryFilterSortGodsOff = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\InventoryScreen\\\\SortGodsOff\", flags: TextureFlags.IgnoreQuality);\n            m_inventoryFilterSortGodsOn = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\InventoryScreen\\\\SortGodsOn\", flags: TextureFlags.IgnoreQuality);\n            m_inventoryFilterSortOresOff = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\InventoryScreen\\\\SortOresOff\", flags: TextureFlags.IgnoreQuality);\n            m_inventoryFilterSortOresOn = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\InventoryScreen\\\\SortOresOn\", flags: TextureFlags.IgnoreQuality);\n            m_inventoryFilterSortWeaponsOff = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\InventoryScreen\\\\SortWeaponsOff\", flags: TextureFlags.IgnoreQuality);\n            m_inventoryFilterSortWeaponsOn = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\InventoryScreen\\\\SortWeaponsOn\", flags: TextureFlags.IgnoreQuality);\n            m_inventoryPreviousShip = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\InventoryScreen\\\\PreviousShip\", flags: TextureFlags.IgnoreQuality);\n            m_inventoryNextShip = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\InventoryScreen\\\\NextShip\", flags: TextureFlags.IgnoreQuality);\n\n\n            //hub controls\n            //m_hubBackground = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\BackgroundScreen\\\\HubBackground\", flags: TextureFlags.IgnoreQuality);\n            m_hubItemBackground = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\HubItemBackground\", flags: TextureFlags.IgnoreQuality);\n            m_hubButton = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\HubButton\", flags: TextureFlags.IgnoreQuality);\n            m_hubButtonBg = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\HubButtonBg\", flags: TextureFlags.IgnoreQuality);\n            m_MessageButton = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\MessageBoxButton\", flags: TextureFlags.IgnoreQuality);\n\n            //m_backgroundInterferenceSpriteVideoPlayer = new MySpriteListVideoPlayer(\"BackgroundInterferenceVid\", MyMinerGame.GraphicsDeviceManager.GraphicsDevice,\n            //   20, 0, 92);\n            //m_backgroundInterferenceSpriteVideoPlayer.LoadContent();\n            m_toltipLeft = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\TooltipLeft\", flags: TextureFlags.IgnoreQuality);\n            m_toltipBody = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\TooltipBody\", flags: TextureFlags.IgnoreQuality);\n            m_toltipRight = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\TooltipRight\", flags: TextureFlags.IgnoreQuality);\n\n\n            m_dialoguePortraitNoiseVideoPlayer = new MySpriteListVideoPlayer(\"DialoguePortraitNoise\", MyMinerGame.GraphicsDeviceManager.GraphicsDevice, 10, 0, 9);\n            m_dialoguePortraitNoiseVideoPlayer.LoadContent();\n\n            m_backgroundScreenTextures = new List<MyGuiTextureScreen>\n            {\n                new MyGuiTextureScreen(\"Textures\\\\GUI\\\\BackgroundScreen\\\\Screen\", 811, 811), \n                new MyGuiTextureScreen(\"Textures\\\\GUI\\\\BackgroundScreen\\\\ScreenWide\", 811, 410), \n                new MyGuiTextureScreen(\"Textures\\\\GUI\\\\BackgroundScreen\\\\ScreenTall\", 411, 810)\n            };\n            m_dialogueFriendBackgroundTexture = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\DialogueFriend\", flags: TextureFlags.IgnoreQuality, loadingMode: LoadingMode.LazyBackground);\n            m_dialogueEnemyBackgroundTexture = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\DialogueEnemy\", flags: TextureFlags.IgnoreQuality, loadingMode: LoadingMode.LazyBackground);\n            m_dialogueNeutralBackgroundTexture = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\DialogueNeutral\", flags: TextureFlags.IgnoreQuality, loadingMode: LoadingMode.LazyBackground);\n            //m_SelectEditorbackground = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\BackgroundScreen\\\\SelectEditorBakground\", flags: TextureFlags.IgnoreQuality);\n            //m_SandboxBackground = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\BackgroundScreen\\\\SandBoxbackground\", flags: TextureFlags.IgnoreQuality);\n\n            MyTextureManager.OverrideLoadingMode = LoadingMode.LazyBackground;\n            MyGuiObjectBuilderHelpers.LoadContent();\n            MyGuiSmallShipHelpers.LoadContent();\n            MyGuiAsteroidHelpers.LoadContent();\n            MyGuiLargeShipHelpers.LoadContent();\n            MyGuiSmallDebrisHelpers.LoadContent();\n            MyGuiPrefabHelpers.LoadContent();\n            MyGuiContextMenuHelpers.LoadDefaultEditorContent();\n            MyGuiInfluenceSphereHelpers.LoadContent();\n            MyGuiEditorVoxelHandHelpers.LoadContent();\n            MyGuiGameControlsHelpers.LoadContent();\n            MyGuiEventHelpers.LoadContent();\n            MyGuiInventoryTemplateTypeHelpers.LoadContent();\n            MyTextureManager.OverrideLoadingMode = null;\n\n\n            /*switch (MyConfig.Language)\n            {\n                case MyLanguagesEnum.Cesky:\n                    m_fontCaptions = new MyGuiFont((MyCustomContentManager)MyMinerGame.Static.Content, \"Fonts\\\\Captions\\\\Captions-de.xml\");\n                    m_fontGuiImpactLarge = new MyGuiFont((MyCustomContentManager)MyMinerGame.Static.Content, \"Fonts\\\\GuiImpactLarge\\\\GuiImpactLarge-uni.xml\");\n                    break;\n                case MyLanguagesEnum.Deutsch:\n                    m_fontCaptions = new MyGuiFont((MyCustomContentManager)MyMinerGame.Static.Content, \"Fonts\\\\Captions\\\\Captions-de.xml\");\n                    m_fontGuiImpactLarge = new MyGuiFont((MyCustomContentManager)MyMinerGame.Static.Content, \"Fonts\\\\GuiImpactLarge\\\\GuiImpactLarge-uni.xml\");\n                    break;\n                case MyLanguagesEnum.Slovensky:\n                    m_fontCaptions = new MyGuiFont((MyCustomContentManager)MyMinerGame.Static.Content, \"Fonts\\\\Captions\\\\Captions-de.xml\");\n                    m_fontGuiImpactLarge = new MyGuiFont((MyCustomContentManager)MyMinerGame.Static.Content, \"Fonts\\\\GuiImpactLarge\\\\GuiImpactLarge-uni.xml\");\n                    break;\n                case MyLanguagesEnum.Espanol:\n                    m_fontCaptions = new MyGuiFont((MyCustomContentManager)MyMinerGame.Static.Content, \"Fonts\\\\Captions\\\\Captions-de.xml\");\n                    m_fontGuiImpactLarge = new MyGuiFont((MyCustomContentManager)MyMinerGame.Static.Content, \"Fonts\\\\GuiImpactLarge\\\\GuiImpactLarge-uni.xml\");\n                    break;\n                case MyLanguagesEnum.France:\n                    m_fontCaptions = new MyGuiFont((MyCustomContentManager)MyMinerGame.Static.Content, \"Fonts\\\\Captions\\\\Captions-de.xml\");\n                    m_fontGuiImpactLarge = new MyGuiFont((MyCustomContentManager)MyMinerGame.Static.Content, \"Fonts\\\\GuiImpactLarge\\\\GuiImpactLarge-uni.xml\");\n                    break;\n                case MyLanguagesEnum.Italian:\n                    m_fontCaptions = new MyGuiFont((MyCustomContentManager)MyMinerGame.Static.Content, \"Fonts\\\\Captions\\\\Captions-de.xml\");\n                    m_fontGuiImpactLarge = new MyGuiFont((MyCustomContentManager)MyMinerGame.Static.Content, \"Fonts\\\\GuiImpactLarge\\\\GuiImpactLarge-uni.xml\");\n                    break;\n                case MyLanguagesEnum.English:\n                default:\n                    m_fontCaptions = new MyGuiFont((MyCustomContentManager)MyMinerGame.Static.Content, \"Fonts\\\\Captions\\\\Captions.xml\");\n                    m_fontGuiImpactLarge = new MyGuiFont((MyCustomContentManager)MyMinerGame.Static.Content, \"Fonts\\\\GuiImpactLarge\\\\GuiImpactLarge.xml\");\n                    break;\n            }*/\n\n            m_fontMinerWarsRed = new MyGuiFont(\"Fonts\\\\MinerWars-red\\\\MinerWars.xml\");\n            m_fontMinerWarsRed.Spacing = 1;\n            m_fontMinerWarsGreen = new MyGuiFont(\"Fonts\\\\MinerWars-green\\\\MinerWars.xml\");\n            m_fontMinerWarsGreen.Spacing = 1;\n            m_fontMinerWarsBlue = new MyGuiFont(\"Fonts\\\\MinerWars-blue\\\\MinerWars.xml\");\n            m_fontMinerWarsBlue.Spacing = 1;\n            m_fontMinerWarsWhite = new MyGuiFont(\"Fonts\\\\MinerWars-white\\\\MinerWars.xml\");\n            m_fontMinerWarsWhite.Spacing = 1;\n\n            if (m_input != null)\n            {\n                m_input.Dispose();\n                m_input = null;\n\n            }\n            if (m_input == null)\n                m_input = new MyGuiInput();\n\n            MouseCursorPosition = new Vector2(0.5f, 0.5f);// new MyMwcVector2Int(MyMinerGame.ScreenSizeHalf.X, MyMinerGame.ScreenSizeHalf.Y);\n\n            m_fullscreenQuad = new MyFullScreenQuad();\n            //m_spriteBatchOwn = new MyGuiSpriteBatchOwn();\n            m_spriteBatch = new SpriteBatch(MyMinerGame.Static.GraphicsDevice, \"GuiManager\");\n            m_spriteBatchUsageCount = 0;\n\n            //m_spriteEffect = new MyEffectSpriteBatchOriginal();\n\n            //load/reload content of all screens in first call any screens should not exist\n            foreach (MyGuiScreenBase screen in m_screens)\n            {\n                screen.LoadContent();\n            }\n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyGuiManager.LoadContent() - END\");\n        }\n\n\n        private static void UpdateClipForCursor(System.Windows.Forms.Form f)\n        {\n            if (MyMinerGame.Static.Window.NativeWindow.Handle == GetForegroundWindow() && MyGuiManager.GetScreenWithFocus() != null)\n                System.Windows.Forms.Cursor.Clip = f.RectangleToScreen(f.ClientRectangle);\n        }\n\n        private static void EnableSoundsBasedOnWindowFocus()\n        {\n            if (MyMinerGame.Static.Window.NativeWindow.Handle == GetForegroundWindow() && MyGuiManager.GetScreenWithFocus() != null)\n            { // allow\n                // this works bad (\t0007128: BUG B - audio sliders are broken)\n                //MyAudio.SetAllVolume(MyConfig.GameVolume, MyConfig.MusicVolume);         \n                MyAudio.Mute = false;\n            }\n            else // mute\n            {\n                // this works bad (\t0007128: BUG B - audio sliders are broken)\n                //MyAudio.SetAllVolume(0,0);\n                MyAudio.Mute = true;\n            }\n        }\n\n\n        public static void LoadPrefabPreviews()\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyGuiManager.LoadPrefabPreviews\");\n\n            foreach (MyMwcObjectBuilderTypeEnum enumValue in MyGuiPrefabHelpers.MyMwcPrefabTypesEnumValues)\n            {\n                int[] prefabIds = MyMwcObjectBuilder_Base.GetObjectBuilderIDs(enumValue);\n                foreach (int prefabId in prefabIds)\n                {\n                    MyPrefabConfiguration config = MyPrefabConstants.GetPrefabConfiguration(enumValue, prefabId);\n                    string fileName = MyGuiPreviewRenderer.GetPreviewFileName(config, prefabId);\n\n                    foreach (MyMwcObjectBuilder_Prefab_AppearanceEnum appearance in MyGuiPrefabHelpers.MyMwcFactionTextureEnumValues)\n                    {\n                        string path = Path.Combine(\"Textures\\\\GUI\\\\Prefabs\", \"v\" + String.Format(\"{0:00}\", (ushort)appearance + 1), fileName);\n\n                        string filePath = MyMinerGame.Static.RootDirectory + \"\\\\\" + path + \".dds\";\n                        if (File.Exists(filePath))\n                        {\n                            MyTexture2D texture = MyTextureManager.GetTexture<MyTexture2D>(path, flags: TextureFlags.IgnoreQuality, loadingMode: LoadingMode.LazyBackground);\n                            AddPrefabPreview(enumValue, prefabId, appearance, texture);\n                        }\n                    }\n                }\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        public static void AddPrefabPreview(MyMwcObjectBuilderTypeEnum prefabType, int prefabId, MyMwcObjectBuilder_Prefab_AppearanceEnum appearance, MyTexture2D texture)\n        {\n            if (m_prefabPreviews[(int)prefabType] == null)\n            {\n                m_prefabPreviews[(int)prefabType] = new MyTexture2D[MyMwcObjectBuilder_Base.GetObjectBuilderIDs(prefabType).Max() + 1][];\n            }\n            if (m_prefabPreviews[(int)prefabType][prefabId] == null)\n            {\n                m_prefabPreviews[(int)prefabType][prefabId] = new MyTexture2D[MyGuiPrefabHelpers.MyMwcFactionTextureEnumValues.Length];\n            }\n            m_prefabPreviews[(int)prefabType][prefabId][(ushort)appearance] = texture;\n        }\n\n        private static MyTexture2D GetPrefabPreview(MyMwcObjectBuilderTypeEnum prefabType, int prefabId, MyMwcObjectBuilder_Prefab_AppearanceEnum appearance)\n        {\n            MyTexture2D texture = null;\n            // TODO: Wouldn't be better to use compound key? (for example long when int would be too small)\n            if (m_prefabPreviews != null && m_prefabPreviews[(int)prefabType] != null && m_prefabPreviews[(int)prefabType][prefabId] != null)\n            {\n                texture = m_prefabPreviews[(int)prefabType][prefabId][(ushort)appearance];\n            }\n            return texture;\n        }\n\n        public static void UnloadContent()\n        {\n            UnloadContentOnAllScreens();\n\n            if (m_spriteBatch != null)\n            {\n                m_spriteBatch.Dispose();\n                m_spriteBatch = null;\n            }\n\n            if (m_fullscreenQuad != null)\n            {\n                m_fullscreenQuad.Dispose();\n                m_fullscreenQuad = null;\n            }\n\n            MyGuiObjectBuilderHelpers.UnloadContent();\n            MyGuiSmallShipHelpers.UnloadContent();\n            MyGuiAsteroidHelpers.UnloadContent();\n            MyGuiLargeShipHelpers.UnloadContent();\n            MyGuiSmallDebrisHelpers.UnloadContent();\n            MyGuiPrefabHelpers.UnloadContent();\n            MyGuiContextMenuHelpers.UnloadContent();\n            MyGuiInfluenceSphereHelpers.UnloadContent();\n            MyGuiEditorVoxelHandHelpers.UnloadContent();\n            MyGuiGameControlsHelpers.UnloadContent();\n            MyGuiEventHelpers.UnloadContent();\n            MyGuiInventoryTemplateTypeHelpers.UnloadContent();\n\n            //m_backgroundInterferenceSpriteVideoPlayer.UnloadContent();\n            //m_backgroundInterferenceSpriteVideoPlayer = null;\n            if (m_dialoguePortraitNoiseVideoPlayer != null)\n            {\n                m_dialoguePortraitNoiseVideoPlayer.UnloadContent();\n                m_dialoguePortraitNoiseVideoPlayer = null;\n            }\n\n            BlendState.UnloadContent();\n            RasterizerState.UnloadContent();\n            SamplerState.UnloadContent();\n            DepthStencilState.UnloadContent();\n\n            MyVertexFormats.UnloadContent();\n\n            //m_spriteEffect.Dispose();\n            //m_spriteEffect = null;\n        }\n\n        public static void UnloadContentOnAllScreens()\n        {\n            //  First unload threads that may have running background threads (because these threads may be accessing graphic device or some contents...)\n            UnloadContent(true);\n\n            //  Then all other threads\n            UnloadContent(false);\n        }\n\n        static void UnloadContent(bool unloadLoadingScreens)\n        {\n            foreach (MyGuiScreenBase screen in m_screens)\n            {\n                if ((screen is MyGuiScreenLoading) == unloadLoadingScreens)\n                {\n                    screen.UnloadContent();\n                }\n            }\n        }\n\n        public static void UpdateScreenSize()\n        {\n            int safeGuiSizeY = MyMinerGame.ScreenSize.Y;\n            int safeGuiSizeX = (int)(safeGuiSizeY * 1.3333f);     //  This will mantain same aspect ratio for GUI elements\n\n            int safeFullscreenSizeX = MyMinerGame.ScreenSize.X;\n            int safeFullscreenSizeY = MyMinerGame.ScreenSize.Y;\n\n            m_fullscreenRectangle = new Rectangle(0, 0, MyMinerGame.ScreenSize.X, MyMinerGame.ScreenSize.Y);\n\n            //  Triple head is drawn on three monitors, so we will draw GUI only on the middle one\n\n            if (MyVideoModeManager.IsTripleHead() == true)\n            {\n                const int TRIPLE_SUB_SCREENS_COUNT = 3;\n                //safeGuiSizeX = safeGuiSizeX / TRIPLE_SUB_SCREENS_COUNT;\n                safeFullscreenSizeX = safeFullscreenSizeX / TRIPLE_SUB_SCREENS_COUNT;\n            }\n\n\n            m_safeGuiRectangle = new Rectangle(MyMinerGame.ScreenSize.X / 2 - safeGuiSizeX / 2, 0, safeGuiSizeX, safeGuiSizeY);\n\n            //if (MyVideoModeManager.IsTripleHead() == true)\n            //m_safeGuiRectangle.X += MyMinerGame.ScreenSize.X / 3;\n\n            m_safeFullscreenRectangle = new Rectangle(MyMinerGame.ScreenSize.X / 2 - safeFullscreenSizeX / 2, 0, safeFullscreenSizeX, safeFullscreenSizeY);\n\n            //  This will help as maintain scale/ratio of images, texts during in different resolution\n            m_safeScreenScale = (float)safeGuiSizeY / MyGuiConstants.REFERENCE_SCREEN_HEIGHT;\n\n            //  Min and max mouse coords (in normalized units). Must be calculated from fullscreen, no GUI rectangle.\n            m_minMouseCoord = GetNormalizedCoordinateFromScreenCoordinate(new Vector2(m_safeFullscreenRectangle.Left, m_safeFullscreenRectangle.Top));\n            m_maxMouseCoord = GetNormalizedCoordinateFromScreenCoordinate(new Vector2(m_safeFullscreenRectangle.Left + m_safeFullscreenRectangle.Width, m_safeFullscreenRectangle.Top + m_safeFullscreenRectangle.Height));\n            m_minMouseCoordFullscreenHud = GetNormalizedCoordinateFromScreenCoordinate(new Vector2(m_fullscreenRectangle.Left, m_fullscreenRectangle.Top));\n            m_maxMouseCoordFullscreenHud = GetNormalizedCoordinateFromScreenCoordinate(new Vector2(m_fullscreenRectangle.Left + m_fullscreenRectangle.Width, m_fullscreenRectangle.Top + m_fullscreenRectangle.Height));\n\n            //  Normalized coordinates where width is always 1.0 and height something like 0.8\n            //  Don't confuse with GUI normalized coordinates. They are different.\n            //  HUD - get normalized screen size -> width is always 1.0, but height depends on aspect ratio, so usualy it is 0.8 or something.\n            m_hudSize = CalculateHudSize();\n            m_hudSizeHalf = m_hudSize / 2.0f;\n        }\n\n        //  Because only main menu's controla depends on fullscreen pixel coordinates (not normalized), after we change\n        //  screen resolution we need to recreate controls too. Otherwise they will be still on old/bad positions, and\n        //  for example when changing from 1920x1200 to 800x600 they would be out of screen\n        public static void RecreateMainMenuControls()\n        {\n            //  GUI probably not initialized yet\n            if (m_screens == null) return;\n\n            for (int i = 0; i < m_screens.Count; i++)\n            {\n                if (m_screens[i] is MyGuiScreenMainMenu)\n                {\n                    ((MyGuiScreenMainMenu)m_screens[i]).RecreateControls(false);\n                }\n            }\n        }\n\n        public static void RecreateControls()\n        {\n            //  GUI probably not initialized yet\n            if (m_screens == null) return;\n\n            for (int i = 0; i < m_screens.Count; i++)\n            {\n                m_screens[i].RecreateControls(false);\n            }\n        }\n\n        //  Close screen of specified type with fade-out effect (ignores inheritance, base class, derived classes)\n        public static void CloseScreen(Type screenType)\n        {\n            //  GUI probably not initialized yet\n            if (m_screens == null) return;\n\n            for (int i = 0; i < m_screens.Count; i++)\n            {\n                if (m_screens[i].GetType() == screenType)\n                {\n                    m_screens[i].CloseScreen();\n                }\n            }\n        }\n\n        //  Close screen of specified type - instantly, without fade-out effect\n        public static void CloseScreenNow(Type screenType)\n        {\n            //  GUI probably not initialized yet\n            if (m_screens == null) return;\n\n            for (int i = 0; i < m_screens.Count; i++)\n            {\n                if (m_screens[i].GetType() == screenType)\n                {\n                    m_screens[i].CloseScreenNow();\n                }\n            }\n        }\n\n        //  Normalized size of screen for HUD (we are geting it from GUI, because GUI knows safe screen)\n        static Vector2 CalculateHudSize()\n        {\n            return new Vector2(1.0f, (float)m_safeFullscreenRectangle.Height / (float)m_safeFullscreenRectangle.Width);\n        }\n\n        public static float GetSafeScreenScale()\n        {\n            return m_safeScreenScale;\n        }\n\n        public static Rectangle GetSafeGuiRectangle()\n        {\n            return m_safeGuiRectangle;\n        }\n\n        public static Rectangle GetSafeFullscreenRectangle()\n        {\n            return m_safeFullscreenRectangle;\n        }\n\n        public static Rectangle GetFullscreenRectangle()\n        {\n            return m_fullscreenRectangle;\n        }\n\n        public static Viewport GetBackwardViewport()\n        {\n            Viewport ret = MyMinerGame.Static.GraphicsDevice.Viewport;\n            ret.Height = (int)(m_safeFullscreenRectangle.Height * MyHudConstants.BACK_CAMERA_HEIGHT);\n            ret.Y = (int)(m_safeFullscreenRectangle.Height * MyGuiConstants.HUD_FREE_SPACE.Y);\n            ret.Width = (int)(ret.Height * MyHudConstants.BACK_CAMERA_ASPECT_RATIO);\n            ret.X = m_safeFullscreenRectangle.Left + m_safeFullscreenRectangle.Width - ret.Width - (int)(m_safeFullscreenRectangle.Width * MyGuiConstants.HUD_FREE_SPACE.X);\n            return ret;\n        }\n\n        public static Viewport GetHudViewport()\n        {\n            Viewport ret = MyMinerGame.Static.GraphicsDevice.Viewport;\n            ret.X = m_safeFullscreenRectangle.Left;\n            ret.Width = m_safeFullscreenRectangle.Width;\n            return ret;\n        }\n\n        public static Viewport GetFullscreenHudViewport()\n        {\n            // it's the same as Forward viewport\n            Viewport ret = MyMinerGame.Static.GraphicsDevice.Viewport;\n            return ret;\n        }\n\n        public static MyGuiInput GetInput()\n        {\n            return m_input;\n        }\n\n        // Draws string with default label text color\n        public static MyRectangle2D DrawString(MyGuiFont font, StringBuilder sb, Vector2 normalizedCoord, float scale, MyGuiDrawAlignEnum drawAlign, bool fullscreen = false)\n        {\n            return DrawString(font, sb, normalizedCoord, scale, new Color(MyGuiConstants.LABEL_TEXT_COLOR), drawAlign, fullscreen);\n        }\n\n        //  Draws string (string builder) at specified position\n        //  normalizedPosition -> X and Y are within interval <0..1>\n        //  scale -> scale for original texture, it's not in pixel/texels, but multiply of original size. E.g. 1 means unchanged size, 2 means double size. Scale is uniform, preserves aspect ratio.\n        //  RETURN: Method returns rectangle where was string drawn in normalized coordinates\n        public static MyRectangle2D DrawString(MyGuiFont font, StringBuilder sb, Vector2 normalizedCoord, float scale, Color color, MyGuiDrawAlignEnum drawAlign, bool fullscreen = false)\n        {\n            Vector2 screenCoord = GetScreenCoordinateFromNormalizedCoordinate(normalizedCoord, fullscreen);\n\n            //  Fix the scale for screen resolution\n            float fixedScale = scale * m_safeScreenScale;\n\n            //  IMPORTANT: MeasureString is weird method, because for example it returns height 56 pixels, but DrawString actualy draws 33 pixels tall characters\n            //  And SpriteFont.LineSpacing gives me 53 pixels... so am quite sure MeasureString returns height of line and not of characters, but then why is it less than LineSpacing???\n            Vector2 sizeInPixelsScaled = font.MeasureString(sb, fixedScale);\n\n            screenCoord = GetAlignedCoordinate(screenCoord, sizeInPixelsScaled, drawAlign);\n\n            //  IMPORTANT: We don't draw shadows under text here because shadows are already contained in font texture!\n\n            //MinerWars.AppCode.App.MyMinerGame.GraphicsDeviceManager.GraphicsDevice.\n\n            //font.DrawString(screenCoord, /*color*/ Color.White, sb, fixedScale);\n            font.DrawString(screenCoord, color, sb, fixedScale);\n\n            return new MyRectangle2D(GetNormalizedCoordinateFromScreenCoordinate(screenCoord), GetNormalizedSizeFromScreenSize(sizeInPixelsScaled));\n        }\n\n        //  Draws string (string builder) at specified position\n        //  normalizedPosition -> X and Y are within interval <0..1>\n        //  scale -> scale for original texture, it's not in pixel/texels, but multiply of original size. E.g. 1 means unchanged size, 2 means double size. Scale is uniform, preserves aspect ratio.\n        //  RETURN: Method returns rectangle where was string drawn in normalized coordinates\n        public static MyRectangle2D DrawStringCentered(MyGuiFont font, StringBuilder sb, Vector2 normalizedCoord, float scale, Color color, MyGuiDrawAlignEnum drawAlign)\n        {\n            Vector2 screenCoord = GetScreenCoordinateFromNormalizedCoordinate(normalizedCoord);\n\n            //  Fix the scale for screen resolution\n            float fixedScale = scale * m_safeScreenScale;\n\n            //  IMPORTANT: We don't draw shadows under text here because shadows are already contained in font texture!\n\n            int lineCount = 0;\n            foreach (var line in sb.Split('\\n'))\n            {\n                line.TrimTrailingWhitespace();\n                var lineSizeInPixelsScaled = font.MeasureString(line, fixedScale);\n                var lineCoord = GetAlignedCoordinate(screenCoord + new Vector2(0, lineCount * font.LineHeight * fixedScale), lineSizeInPixelsScaled, drawAlign);\n                font.DrawString(lineCoord, color, line, fixedScale);\n                lineCount++;\n            }\n\n            //  IMPORTANT: MeasureString is weird method, because for example it returns height 56 pixels, but DrawString actualy draws 33 pixels tall characters\n            //  And SpriteFont.LineSpacing gives me 53 pixels... so am quite sure MeasureString returns height of line and not of characters, but then why is it less than LineSpacing???\n            Vector2 sizeInPixelsScaled = font.MeasureString(sb, fixedScale);\n            screenCoord = GetAlignedCoordinate(screenCoord, sizeInPixelsScaled, drawAlign);\n            return new MyRectangle2D(GetNormalizedCoordinateFromScreenCoordinate(screenCoord), GetNormalizedSizeFromScreenSize(sizeInPixelsScaled));\n        }\n\n        public static MyRectangle2D MeasureString(MyGuiFont font, StringBuilder sb, Vector2 normalizedCoord, float scale, MyGuiDrawAlignEnum drawAlign)\n        {\n            Vector2 screenCoord = GetScreenCoordinateFromNormalizedCoordinate(normalizedCoord);\n\n            //  Fix the scale for screen resolution\n            float fixedScale = scale * m_safeScreenScale;\n\n            //  IMPORTANT: MeasureString is weird method, because for example it returns height 56 pixels, but DrawString actualy draws 33 pixels tall characters\n            //  And SpriteFont.LineSpacing gives me 53 pixels... so am quite sure MeasureString returns height of line and not of characters, but then why is it less than LineSpacing???\n            Vector2 sizeInPixelsScaled = font.MeasureString(sb, fixedScale);\n            screenCoord = GetAlignedCoordinate(screenCoord, sizeInPixelsScaled, drawAlign);\n\n            return new MyRectangle2D(GetNormalizedCoordinateFromScreenCoordinate(screenCoord), GetNormalizedSizeFromScreenSize(sizeInPixelsScaled));\n        }\n\n        //  Draws \"our own\" sprite at specified SCREEN position (in screen coordinates, not normalized coordinates).\n        //  Doesn't use XNA's sprite batch because that one messes up with render states and we don't want to restore them everytime time.\n        //  Uses our own sprite effect and quad renderer.\n        public static void DrawSpriteFast(Texture texture, int x, int y, int width, int height, Color color)\n        {\n            //m_spriteBatchOwn.Draw(texture, new Rectangle(x, y, width, height), color);\n            m_spriteBatch.Begin(SpriteSortMode.Immediate);\n            m_spriteBatch.Draw(texture, new SharpDX.DrawingRectangle(x, y, width, height), SharpDXHelper.ToSharpDX(color));\n            m_spriteBatch.End();\n        }\n\n        public static void DrawSpriteFast(CubeTexture texture, CubeMapFace face, int x, int y, int width, int height, Color color)\n        {\n            m_spriteBatch.Begin(SpriteSortMode.Immediate);\n            m_spriteBatch.Draw(texture, face, new SharpDX.DrawingRectangle(x, y, width, height), SharpDXHelper.ToSharpDX(color));\n            m_spriteBatch.End();\n        }\n\n        //  Draws sprite batch at specified SCREEN position (in screen coordinates, not normalized coordinates).\n        public static void DrawSpriteBatch(Texture texture, int x, int y, int width, int height, Color color)\n        {\n            System.Diagnostics.Debug.Assert(m_spriteBatchUsageCount > 0);\n            if (texture == null)\n                return;\n\n            m_spriteBatch.Draw(texture, new DrawingRectangle(x, y, width, height), SharpDXHelper.ToSharpDX(color));\n        }\n\n        //  Draws sprite batch at specified SCREEN position (in screen coordinates, not normalized coordinates).\n        public static void DrawSpriteBatch(Texture texture, Rectangle dest, Color color)\n        {\n            System.Diagnostics.Debug.Assert(m_spriteBatchUsageCount > 0);\n            if (texture == null)\n                return;\n\n            m_spriteBatch.Draw(texture, SharpDXHelper.ToSharpDX(dest), SharpDXHelper.ToSharpDX(color));\n        }\n\n        //  Draws sprite batch at specified SCREEN position (in screen coordinates, not normalized coordinates).\n        public static void DrawSpriteBatch(Texture texture, Vector2 pos, Color color)\n        {\n            System.Diagnostics.Debug.Assert(m_spriteBatchUsageCount > 0);\n            if (texture == null)\n                return;\n\n            m_spriteBatch.Draw(texture, SharpDXHelper.ToSharpDX(pos), SharpDXHelper.ToSharpDX(color));\n        }\n\n        //  Draws sprite batch at specified SCREEN position (in screen coordinates, not normalized coordinates).\n        public static void DrawSpriteBatch(Texture texture, Vector2 position, Rectangle? sourceRectangle, Color color, float rotation, Vector2 origin, Vector2 scale, SpriteEffects effects, float layerDepth)\n        {\n            System.Diagnostics.Debug.Assert(m_spriteBatchUsageCount > 0);\n            if (texture == null)\n                return;\n\n            m_spriteBatch.Draw(texture, SharpDXHelper.ToSharpDX(position), SharpDXHelper.ToSharpDX(sourceRectangle), SharpDXHelper.ToSharpDX(color), rotation, SharpDXHelper.ToSharpDX(origin), SharpDXHelper.ToSharpDX(scale), effects, layerDepth);\n        }\n\n        //  Draws sprite batch at specified SCREEN position (in screen coordinates, not normalized coordinates).\n        public static void DrawSpriteBatch(Texture texture, Vector2 position, Rectangle? sourceRectangle, Color color, float rotation, Vector2 origin, float scale, SpriteEffects effects, float layerDepth)\n        {\n            System.Diagnostics.Debug.Assert(m_spriteBatchUsageCount > 0);\n            if (texture == null)\n                return;\n\n            m_spriteBatch.Draw(texture, SharpDXHelper.ToSharpDX(position), SharpDXHelper.ToSharpDX(sourceRectangle), SharpDXHelper.ToSharpDX(color), rotation, SharpDXHelper.ToSharpDX(origin), scale, effects, layerDepth);\n        }\n        /*\n//  Draws sprite batch at specified SCREEN position (in screen coordinates, not normalized coordinates).\npublic static void DrawSpriteBatch(Texture texture, Rectangle dest, Rectangle source, Color color)\n{\nSystem.Diagnostics.Debug.Assert(m_spriteBatchUsageCount > 0);\nif (texture == null)\n  return;\n\nm_spriteBatch.Draw(texture, SharpDXHelper.ToSharpDX(dest), SharpDXHelper.ToSharpDX(source), SharpDXHelper.ToSharpDX(color));\n}\n          */\n        //  Draws sprite batch at specified NORMALIZED position, with SCREEN-PIXEL width, but NORMALIZED height\n        //  Use if you want to draw rectangle where width is in screen coords, but rest is in normalized coord (e.g. textbox carriage blinker)\n        public static void DrawSpriteBatch(Texture texture, Vector2 normalizedCoord, int screenWidth, float normalizedHeight, Color color, MyGuiDrawAlignEnum drawAlign)\n        {\n            System.Diagnostics.Debug.Assert(m_spriteBatchUsageCount > 0);\n            if (texture == null)\n                return;\n\n            Vector2 screenCoord = GetScreenCoordinateFromNormalizedCoordinate(normalizedCoord);\n            Vector2 screenSize = GetScreenSizeFromNormalizedSize(new Vector2(0, normalizedHeight));\n            screenSize.X = screenWidth; //  Replace with desired value\n            screenCoord = GetAlignedCoordinate(screenCoord, screenSize, drawAlign);\n            m_spriteBatch.Draw(texture, new DrawingRectangle((int)screenCoord.X, (int)screenCoord.Y, (int)screenSize.X, (int)screenSize.Y), SharpDXHelper.ToSharpDX(color));\n        }\n\n        //  Draws sprite batch at specified NORMALIZED position, with NORMALIZED width, but SCREEN-PIXEL height.\n        //  Use if you want to draw rectangle where height is in screen coords, but rest is in normalized coord (e.g. slider long line)\n        public static void DrawSpriteBatch(Texture texture, Vector2 normalizedCoord, float normalizedWidth, int screenHeight, Color color, MyGuiDrawAlignEnum drawAlign)\n        {\n            System.Diagnostics.Debug.Assert(m_spriteBatchUsageCount > 0);\n            if (texture == null)\n                return;\n\n            Vector2 screenCoord = GetScreenCoordinateFromNormalizedCoordinate(normalizedCoord);\n            Vector2 screenSize = GetScreenSizeFromNormalizedSize(new Vector2(normalizedWidth, 0));\n            screenSize.Y = screenHeight; //  Replace with desired value\n            screenCoord = GetAlignedCoordinate(screenCoord, screenSize, drawAlign);\n            m_spriteBatch.Draw(texture, new DrawingRectangle((int)screenCoord.X, (int)screenCoord.Y, (int)screenSize.X, (int)screenSize.Y), SharpDXHelper.ToSharpDX(color));\n        }\n\n        //  Draws sprite batch at specified position\n        //  normalizedPosition -> X and Y are within interval <0..1>\n        //  size -> size of destination rectangle (normalized). Don't forget that it may be distorted by aspect ration, so rectangle size [1,1] can make larger wide than height on your screen.\n        //  rotation -> angle in radians. Rotation is always around \"origin\" coordinate\n        //  originNormalized -> the origin of the sprite. Specify (0,0) for the upper-left corner.\n        //  RETURN: Method returns rectangle where was sprite/texture drawn in normalized coordinates\n\n        public static void DrawSpriteBatch(Texture texture, Vector2 normalizedCoord, Vector2 normalizedSize, Color color, MyGuiDrawAlignEnum drawAlign, bool fullscreen = false)\n        {\n            System.Diagnostics.Debug.Assert(m_spriteBatchUsageCount > 0);\n\n            if (texture == null)\n                return;\n\n            Vector2 screenCoord = GetScreenCoordinateFromNormalizedCoordinate(normalizedCoord, fullscreen);\n\n            Vector2 screenSize = fullscreen ? new Vector2((m_safeFullscreenRectangle.Width + 1) * normalizedSize.X, m_safeFullscreenRectangle.Height * normalizedSize.Y) : GetScreenSizeFromNormalizedSize(normalizedSize);\n            //Vector2 screenSize = GetScreenSizeFromNormalizedSize(normalizedSize);\n            screenCoord = GetAlignedCoordinate(screenCoord, screenSize, drawAlign);\n            m_spriteBatch.Draw(texture, new DrawingRectangle((int)screenCoord.X, (int)screenCoord.Y, (int)screenSize.X, (int)screenSize.Y), SharpDXHelper.ToSharpDX(color));\n\n            //return new MyRectangle2D(GetNormalizedCoordinateFromScreenCoordinate(screenCoord), normalizedSize);\n        }\n\n        // different rounding of coords\n        public static void DrawSpriteBatchRoundUp(Texture texture, Vector2 normalizedCoord, Vector2 normalizedSize, Color color, MyGuiDrawAlignEnum drawAlign)\n        {\n            System.Diagnostics.Debug.Assert(m_spriteBatchUsageCount > 0);\n            if (texture == null)\n                return;\n\n            Vector2 screenCoord = GetScreenCoordinateFromNormalizedCoordinate(normalizedCoord);\n            Vector2 screenSize = GetScreenSizeFromNormalizedSize(normalizedSize);\n            screenCoord = GetAlignedCoordinate(screenCoord, screenSize, drawAlign);\n            m_spriteBatch.Draw(texture, new DrawingRectangle((int)Math.Floor(screenCoord.X), (int)Math.Floor(screenCoord.Y), (int)Math.Ceiling(screenSize.X), (int)Math.Ceiling(screenSize.Y)), SharpDXHelper.ToSharpDX(color));\n            //return new MyRectangle2D(GetNormalizedCoordinateFromScreenCoordinate(screenCoord), normalizedSize);\n        }\n\n\n        /// <summary>\n        ///  Draws sprite batch at specified position\n        ///  normalizedPosition -> X and Y are within interval <0..1>\n        ///  size -> size of destination rectangle (normalized). Don't forget that it may be distorted by aspect ration, so rectangle size [1,1] can make larger wide than height on your screen.\n        ///  rotation -> angle in radians. Rotation is always around \"origin\" coordinate\n        ///  originNormalized -> the origin of the sprite. Specify (0,0) for the upper-left corner.\n        ///  RETURN: Method returns rectangle where was sprite/texture drawn in normalized coordinates\n        /// </summary>\n        /// <returns></returns>\n        public static void DrawSpriteBatch(Texture texture, Vector2 normalizedCoord, Vector2 normalizedSize, Color color, MyGuiDrawAlignEnum drawAlign, float rotation)\n        {\n            System.Diagnostics.Debug.Assert(m_spriteBatchUsageCount > 0);\n            if (texture == null)\n                return;\n\n            Vector2 screenCoord = GetScreenCoordinateFromNormalizedCoordinate(normalizedCoord);\n            Vector2 screenSize = GetScreenSizeFromNormalizedSize(normalizedSize);\n            screenCoord = GetAlignedCoordinate(screenCoord, screenSize, drawAlign);\n\n            Vector2 origin;\n            origin.X = texture.GetLevelDescription(0).Width / 2f;\n            origin.Y = texture.GetLevelDescription(0).Height / 2f;\n\n            m_spriteBatch.Draw(texture, new DrawingRectangle((int)screenCoord.X, (int)screenCoord.Y, (int)screenSize.X, (int)screenSize.Y), null, SharpDXHelper.ToSharpDX(color), rotation, SharpDXHelper.ToSharpDX(origin), SpriteEffects.None, 0);\n\n            //return new MyRectangle2D(GetNormalizedCoordinateFromScreenCoordinate(screenCoord), normalizedSize);\n        }\n\n        //  Draws sprite batch at specified position\n        //  normalizedPosition -> X and Y are within interval <0..1>\n        //  scale -> scale for original texture, it's not in pixel/texels, but multiply of original size. E.g. 1 means unchanged size, 2 means double size. Scale is uniform, preserves aspect ratio.\n        //  rotation -> angle in radians. Rotation is always around \"origin\" coordinate\n        //  originNormalized -> the origin of the sprite. Specify (0,0) for the upper-left corner.\n        //  RETURN: Method returns rectangle where was sprite/texture drawn in normalized coordinates\n        public static void DrawSpriteBatch(Texture texture, Vector2 normalizedCoord, float scale, Color color, MyGuiDrawAlignEnum drawAlign, float rotation, Vector2 originNormalized)\n        {\n            System.Diagnostics.Debug.Assert(m_spriteBatchUsageCount > 0);\n            if (texture == null)\n                return;\n\n            Vector2 screenCoord = GetScreenCoordinateFromNormalizedCoordinate(normalizedCoord);\n\n            //  Fix the scale for screen resolution\n            float fixedScale = scale * m_safeScreenScale;\n\n            Vector2 sizeInPixels = new Vector2(texture.GetLevelDescription(0).Width, texture.GetLevelDescription(0).Height);\n            Vector2 sizeInPixelsScaled = sizeInPixels * fixedScale;\n\n            screenCoord = GetAlignedCoordinate(screenCoord, sizeInPixelsScaled, drawAlign);\n\n            m_spriteBatch.Draw(texture, SharpDXHelper.ToSharpDX(screenCoord), null, SharpDXHelper.ToSharpDX(color), rotation, SharpDXHelper.ToSharpDX(originNormalized * sizeInPixels), fixedScale, SpriteEffects.None, 0);\n        }\n\n        //  Find screen texture that best matches aspect ratio of current GUI screen\n        public static string GetBackgroundTextureFilenameByAspectRatio(Vector2 normalizedSize)\n        {\n            Vector2 screenSize = GetScreenSizeFromNormalizedSize(normalizedSize);\n            float screenAspectRatio = screenSize.X / screenSize.Y;\n            float minDelta = float.MaxValue;\n            string ret = null;\n            foreach (MyGuiTextureScreen texture in m_backgroundScreenTextures)\n            {\n                float delta = Math.Abs(screenAspectRatio - texture.GetAspectRatio());\n                if (delta < minDelta)\n                {\n                    minDelta = delta;\n                    ret = texture.GetFilename();\n                }\n            }\n            return ret;\n        }\n\n        //  Get size of sprite/texture in normalized coordinate <0..1>\n        public static Vector2 GetNormalizedSize(MyTexture2D texture, float scale)\n        {\n            Vector2 sizeInPixels = new Vector2(texture.Width, texture.Height);\n            Vector2 sizeScaled = sizeInPixels * scale * m_safeScreenScale;\n            return GetNormalizedSizeFromScreenSize(sizeScaled);\n        }\n\n\n        //  Get size of sprite/texture in normalized coordinate <0..1>\n        public static Vector2 GetNormalizedSize(Vector2 size, float scale)\n        {\n            Vector2 sizeScaled = size * scale * m_safeScreenScale;\n            return GetNormalizedSizeFromScreenSize(sizeScaled);\n        }\n\n\n\n        //  Get size of string in normalized coordinate <0..1>\n        public static Vector2 GetNormalizedSize(MyGuiFont font, StringBuilder sb, float scale)\n        {\n            if (font == null)\n            {\n                return Vector2.Zero;\n            }\n\n            Vector2 sizeInPixelsScaled = font.MeasureString(sb, scale * m_safeScreenScale);\n            return GetNormalizedSizeFromScreenSize(sizeInPixelsScaled);\n        }\n\n        //  Convertes normalized size <0..1> to screen size (pixels)\n        public static Vector2 GetScreenSizeFromNormalizedSize(Vector2 normalizedSize)\n        {\n            return new Vector2((m_safeGuiRectangle.Width + 1) * normalizedSize.X, m_safeGuiRectangle.Height * normalizedSize.Y);\n        }\n\n        //  Convertes normalized coodrinate <0..1> to screen coordinate (pixels)\n        public static Vector2 GetScreenCoordinateFromNormalizedCoordinate(Vector2 normalizedCoord, bool fullscreen = false)\n        {\n            if (fullscreen)\n            {\n                return new Vector2(\n                    m_safeFullscreenRectangle.Left + m_safeFullscreenRectangle.Width * normalizedCoord.X,\n                    m_safeFullscreenRectangle.Top + m_safeFullscreenRectangle.Height * normalizedCoord.Y);\n            }\n            else\n            {\n                return new Vector2(\n                    m_safeGuiRectangle.Left + m_safeGuiRectangle.Width * normalizedCoord.X,\n                    m_safeGuiRectangle.Top + m_safeGuiRectangle.Height * normalizedCoord.Y);\n            }\n        }\n\n        //  Convertes screen coordinate (pixels) to normalized coodrinate <0..1>\n        public static Vector2 GetNormalizedCoordinateFromScreenCoordinate(Vector2 screenCoord)\n        {\n            return new Vector2(\n                (screenCoord.X - (float)m_safeGuiRectangle.Left) / (float)m_safeGuiRectangle.Width,\n                (screenCoord.Y - (float)m_safeGuiRectangle.Top) / (float)m_safeGuiRectangle.Height);\n        }\n\n        //  Convertes fullscreen screen coordinate (pixels) to safe-GUI normalized coodrinate <0..1>\n        public static Vector2 GetNormalizedCoordinateFromScreenCoordinate_FULLSCREEN(Vector2 fullScreenCoord)\n        {\n            return GetNormalizedCoordinateFromScreenCoordinate(\n                new Vector2(m_safeFullscreenRectangle.Left + fullScreenCoord.X, m_safeFullscreenRectangle.Top + fullScreenCoord.Y));\n        }\n\n        //  Convertes screen size (pixels) to normalized size <0..1>\n        public static Vector2 GetNormalizedSizeFromScreenSize(Vector2 screenSize)\n        {\n            return new Vector2(screenSize.X / (float)m_safeGuiRectangle.Width, screenSize.Y / (float)m_safeGuiRectangle.Height);\n        }\n\n        //  This is for HUD, therefore not GUI normalized coordinates\n        public static Vector2 GetHudNormalizedCoordFromPixelCoord(Vector2 pixelCoord)\n        {\n            return new Vector2(\n                (pixelCoord.X - m_safeFullscreenRectangle.Left) / (float)m_safeFullscreenRectangle.Width,\n                ((pixelCoord.Y - m_safeFullscreenRectangle.Top) / (float)m_safeFullscreenRectangle.Height) * m_hudSize.Y);\n        }\n\n        //  This is for HUD, therefore not GUI normalized coordinates\n        public static Vector2 GetHudNormalizedSizeFromPixelSize(Vector2 pixelSize)\n        {\n            return new Vector2(\n                pixelSize.X / (float)m_safeFullscreenRectangle.Width,\n                (pixelSize.Y / (float)m_safeFullscreenRectangle.Height) * m_hudSize.Y);\n        }\n\n        //  This is for HUD, therefore not GUI normalized coordinates\n        public static Vector2 GetHudPixelCoordFromNormalizedCoord(Vector2 normalizedCoord)\n        {\n            return new Vector2(\n                normalizedCoord.X * (float)m_safeFullscreenRectangle.Width,\n                normalizedCoord.Y * (float)m_safeFullscreenRectangle.Height);\n        }\n\n        public static Vector2 GetMinMouseCoord()\n        {\n            return FullscreenHudEnabled ? m_minMouseCoordFullscreenHud : m_minMouseCoord;\n        }\n\n        public static Vector2 GetMaxMouseCoord()\n        {\n            return FullscreenHudEnabled ? m_maxMouseCoordFullscreenHud : m_maxMouseCoord;\n        }\n\n        //  Aligns rectangle, works in screen coordinates / texture / pixel... (not normalized coordinates)\n        public static Vector2 GetAlignedCoordinate(Vector2 screenCoord, Vector2 size, MyGuiDrawAlignEnum drawAlign)\n        {\n            Vector2 alignedScreenCoord = screenCoord;\n\n            if (drawAlign == MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP)\n            {\n                //  Nothing to do as position is already at this point\n            }\n            else if (drawAlign == MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER)\n            {\n                //  Move position to the texture center\n                alignedScreenCoord -= size / 2.0f;\n            }\n            else if (drawAlign == MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_TOP)\n            {\n                alignedScreenCoord.X -= size.X / 2.0f;\n            }\n            else if (drawAlign == MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_BOTTOM)\n            {\n                alignedScreenCoord.X -= size.X / 2.0f;\n                alignedScreenCoord.Y -= size.Y;\n            }\n            else if (drawAlign == MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_BOTTOM)\n            {\n                alignedScreenCoord -= size;\n            }\n            else if (drawAlign == MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER)\n            {\n                alignedScreenCoord.Y -= size.Y / 2.0f;\n            }\n            else if (drawAlign == MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_CENTER)\n            {\n                alignedScreenCoord.X -= size.X;\n                alignedScreenCoord.Y -= size.Y / 2.0f;\n            }\n            else if (drawAlign == MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_BOTTOM)\n            {\n                alignedScreenCoord.Y -= size.Y;// *0.75f;\n            }\n            else if (drawAlign == MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_TOP)\n            {\n                alignedScreenCoord.X -= size.X;\n            }\n            else\n            {\n                throw new MyMwcExceptionApplicationShouldNotGetHere();\n            }\n\n            return alignedScreenCoord;\n        }\n\n        public static void GetSafeHeightFullScreenPictureSize(MyMwcVector2Int originalSize, out Rectangle outRect)\n        {\n            GetSafeHeightPictureSize(originalSize, m_safeFullscreenRectangle, out outRect);\n        }\n\n        public static void GetSafeAspectRatioFullScreenPictureSize(MyMwcVector2Int originalSize, out Rectangle outRect)\n        {\n            GetSafeAspectRatioPictureSize(originalSize, m_safeFullscreenRectangle, out outRect);\n        }\n\n        //  This method scales picture to bounding area according to bounding area's height. We don't care about width, so sometimes if picture has wide\n        //  aspect ratio, borders of image may be outisde of the bounding area. This method is used when we want to have picture covering whole screen\n        //  and don't care if part of picture is invisible. Also, aspect ration is unchanged too.\n        static void GetSafeHeightPictureSize(MyMwcVector2Int originalSize, Rectangle boundingArea, out Rectangle outRect)\n        {\n            outRect.Height = boundingArea.Height;\n            outRect.Width = (int)(((float)outRect.Height / (float)originalSize.Y) * originalSize.X);\n            outRect.X = boundingArea.Left + (boundingArea.Width - outRect.Width) / 2;\n            outRect.Y = boundingArea.Top + (boundingArea.Height - outRect.Height) / 2;\n        }\n\n        //  Return picture size that is safe for displaying in bounding area and doesn't distort the aspect ratio of original picture or bounding area.\n        //  Example: picture of video frame is scaled to size of screen, so it fits it as much as possible, but still maintains aspect ration of\n        //  original video frame or screen. So if screen's heigh is not enouch, video frame is scaled down to fit height, but also width is scaled\n        //  according to original video frame.\n        //  It's used whenever we need to scale picture/texture to some area, usually to screen size.\n        //  Also this method calculated left/top coordinates, so it's always centered.\n        static void GetSafeAspectRatioPictureSize(MyMwcVector2Int originalSize, Rectangle boundingArea, out Rectangle outRect)\n        {\n            outRect.Width = boundingArea.Width;\n            outRect.Height = (int)(((float)outRect.Width / (float)originalSize.X) * originalSize.Y);\n\n            if (outRect.Height > boundingArea.Height)\n            {\n                outRect.Height = boundingArea.Height;\n                outRect.Width = (int)(outRect.Height * ((float)originalSize.X / (float)originalSize.Y));\n            }\n\n            outRect.X = boundingArea.Left + (boundingArea.Width - outRect.Width) / 2;\n            outRect.Y = boundingArea.Top + (boundingArea.Height - outRect.Height) / 2;\n        }\n\n        public static Vector2 GetScreenTextRightTopPosition()\n        {\n            float deltaPixels = 25 * GetSafeScreenScale();\n            return GetNormalizedCoordinateFromScreenCoordinate_FULLSCREEN(new Vector2(GetSafeFullscreenRectangle().Width - deltaPixels, deltaPixels));\n        }\n\n        public static Vector2 GetScreenTextRightBottomPosition()\n        {\n            float deltaPixels = 25 * GetSafeScreenScale();\n            Vector2 rightAlignedOrigin = GetNormalizedCoordinateFromScreenCoordinate_FULLSCREEN(new Vector2(GetSafeFullscreenRectangle().Width - deltaPixels, deltaPixels));\n            return GetNormalizedCoordinateFromScreenCoordinate_FULLSCREEN(new Vector2(GetSafeFullscreenRectangle().Width - deltaPixels, GetSafeFullscreenRectangle().Height - (2 * deltaPixels)));\n        }\n\n        public static Vector2 GetScreenTextLeftBottomPosition()\n        {\n            float deltaPixels = 25 * GetSafeScreenScale();\n            return GetNormalizedCoordinateFromScreenCoordinate_FULLSCREEN(new Vector2(deltaPixels, GetSafeFullscreenRectangle().Height - (2 * deltaPixels)));\n        }\n\n        public static Vector2 GetScreenTextLeftTopPosition()\n        {\n            float deltaPixels = 25 * GetSafeScreenScale();\n            return GetNormalizedCoordinateFromScreenCoordinate_FULLSCREEN(new Vector2(deltaPixels, deltaPixels));\n        }\n\n        public static int GetScreensCount()\n        {\n            return m_screens.Count;\n        }\n\n\n        //  Add screen to top of the screens stack, so it becomes active (will have focus)\n        public static void AddScreen(MyGuiScreenBase screen)\n        {\n            Debug.Assert(screen != null);\n\n            // Hide tooltips\n            var screenWithFocus = GetScreenWithFocus();\n            if (screenWithFocus != null)\n            {\n                screenWithFocus.HideTooltips();\n            }\n\n            //  When adding new screen and previous screen is configured to hide(not close), find it and hide it now\n            MyGuiScreenBase previousCanHideScreen = null;\n            for (int i = GetScreensCount() - 1; i > 0; i--)\n            {\n                MyGuiScreenBase scr = m_screens[i];\n                if (scr.CanHide())\n                {\n                    previousCanHideScreen = scr;\n                    break;\n                }\n            }\n\n            if (previousCanHideScreen != null && previousCanHideScreen.GetState() != MyGuiScreenState.CLOSING && !(screen is MyGuiScreenDebugBase))\n            {\n                previousCanHideScreen.HideScreen();\n            }\n\n            m_screensToAdd.Add(screen);\n        }\n\n        /// <summary>\n        /// Adds the modal screen.\n        /// </summary>\n        /// <param name=\"screen\">The screen.</param>\n        /// <param name=\"modelClosed\">The model closed.</param>\n        public static void AddModalScreen(MyGuiScreenBase screen, MyGuiScreenBase.ScreenHandler modelClosed)\n        {\n            screen.Closed += modelClosed;\n\n            AddScreen(screen);\n        }\n\n        //  Remove screen from the stack\n        public static void RemoveScreen(MyGuiScreenBase screen, bool nullActualScreen = false)\n        {\n            Debug.Assert(screen != null);\n\n            if (IsAnyScreenOpening() == false)\n            {\n                MyGuiScreenBase previousCanHideScreen = GetPreviousScreen(screen, x => x.CanHide());\n                if (previousCanHideScreen != null &&\n                    (previousCanHideScreen.GetState() == MyGuiScreenState.HIDDEN || previousCanHideScreen.GetState() == MyGuiScreenState.HIDING))\n                {\n                    previousCanHideScreen.UnhideScreen();\n                }\n            }\n\n            m_screensToRemove.Add(screen);\n\n            if (nullActualScreen)\n            {\n                m_currentDebugScreen = null;\n            }\n        }\n\n        //  Find screen on top of screens, that has status HIDDEN or HIDING\n        public static MyGuiScreenBase GetTopHiddenScreen()\n        {\n            MyGuiScreenBase hiddenScreen = null;\n            for (int i = GetScreensCount() - 1; i > 0; i--)\n            {\n                MyGuiScreenBase screen = m_screens[i];\n                if (screen.GetState() == MyGuiScreenState.HIDDEN || screen.GetState() == MyGuiScreenState.HIDING)\n                {\n                    hiddenScreen = screen;\n                    break;\n                }\n            }\n            return hiddenScreen;\n        }\n\n        //  Find previous screen to screen in screens stack\n        public static MyGuiScreenBase GetPreviousScreen(MyGuiScreenBase screen, Predicate<MyGuiScreenBase> condition)\n        {\n            MyGuiScreenBase previousScreen = null;\n            int currentScreenIndex = -1;\n            for (int i = GetScreensCount() - 1; i > 0; i--)\n            {\n                MyGuiScreenBase tempScreen = m_screens[i];\n                if (screen == tempScreen)\n                {\n                    currentScreenIndex = i;\n                }\n                if (i < currentScreenIndex)\n                {\n                    if (condition(tempScreen))\n                    {\n                        previousScreen = tempScreen;\n                        break;\n                    }\n                }\n            }\n            return previousScreen;\n        }\n\n        //  Remove all screens except the one!\n        public static void RemoveAllScreensExcept(MyGuiScreenBase dontRemove)\n        {\n            foreach (MyGuiScreenBase screen in m_screens)\n            {\n                if (screen != dontRemove) RemoveScreen(screen);\n            }\n        }\n\n        //  Remove screens that are of type 'screenType', or those derived from 'screenType'\n        //  IMPORTANT: I am not sure how will IsAssignableFrom() behave if you use class inherited from another and then another, so make sure \n        //  you understand it before you start using it and counting on this.\n        public static void RemoveScreenByType(Type screenType)\n        {\n            foreach (MyGuiScreenBase screen in m_screens)\n            {\n                if (screenType.IsAssignableFrom(screen.GetType())) RemoveScreen(screen);\n            }\n        }\n\n        //  Close all screens except the one!\n        //  Difference against RemoveAllScreensExcept is that this one closes using CloseScreen, and RemoveAllScreensExcept just removes from the list\n        public static void CloseAllScreensExcept(MyGuiScreenBase dontRemove)\n        {\n            foreach (MyGuiScreenBase screen in m_screens)\n            {\n                if ((screen != dontRemove) && (screen.CanCloseInCloseAllScreenCalls() == true)) screen.CloseScreen();\n            }\n        }\n\n        //  Close all screens except the one NOW!\n        //  Difference against RemoveAllScreensExcept is that this one closes using CloseScreen, and RemoveAllScreensExcept just removes from the list\n        public static void CloseAllScreensNowExcept(MyGuiScreenBase dontRemove)\n        {\n            foreach (MyGuiScreenBase screen in m_screens)\n            {\n                if ((screen != dontRemove) && (screen.CanCloseInCloseAllScreenCalls() == true)) screen.CloseScreenNow();\n            }\n        }\n\n        //  Close all screens except one specified and all that are marked as \"topmost\"\n        //  Difference against RemoveAllScreensExcept is that this one closes using CloseScreen, and RemoveAllScreensExcept just removes from the list\n        public static void CloseAllScreensExceptThisOneAndAllTopMost(MyGuiScreenBase dontRemove)\n        {\n            foreach (MyGuiScreenBase screen in m_screens)\n            {\n                if ((((screen == dontRemove) || (screen.IsTopMostScreen())) == false) && (screen.CanCloseInCloseAllScreenCalls() == true)) screen.CloseScreen();\n            }\n        }\n\n        public static void SwitchDebugScreensEnabled()\n        {\n            m_debugScreensEnabled = !m_debugScreensEnabled;\n        }\n\n        //  Sends input (keyboard/mouse) to screen which has focus (top-most)\n        public static void HandleInput()\n        {\n            if (m_input == null)\n            {\n                // No input support\n                return;\n            }\n\n            //  Update/gather input\n            bool isGameFocused = m_input.Update();\n\n#if RENDER_PROFILING\n            MyRenderProfiler.HandleInput(m_input);\n#endif\n\n            //  Screenshot(s)\n            if (m_input.IsNewKeyPress(Keys.F4))\n            {\n                TakeScreenshot();\n\n                //MyVoxelMap vm = MyVoxelMaps.GetVoxelMaps()[0];\n                //vm.SaveVoxelContents(\"StaticAsteroid_A_1000m.vox\");\n\n                /*\n              MyVoxelMap voxelMap = new MyVoxelMap();\n              voxelMap.Init(Vector3.Zero, new MyMwcVector3Int(384, 384, 384), MyMwcVoxelMaterialsEnum.Stone_03);\n              MyEntities.Add(voxelMap);\n\n              MyEntity asteroid = MyEntities.GetEntityById(new MyEntityIdentifier(546099));\n              Matrix matrix = asteroid.WorldMatrix;\n              matrix.Translation = new Vector3();\n\n              bool changed = false;\n              MyVoxelImport.Run(voxelMap, MinerWars.AppCode.Game.Models.MyModels.GetModel(Models.MyModelsEnum.StaticAsteroid1000m_A_LOD0), MyvoxelImportAction.AddVoxels, matrix, 1, null, ref changed);\n\n              BoundingBox boundingBox = voxelMap.WorldAABB;\n\n              //  Get min and max cell coordinate where camera bounding box can fit\n              MyMwcVector3Int cellCoordMin = voxelMap.GetVoxelCoordinateFromMeters(boundingBox.Min);\n              MyMwcVector3Int cellCoordMax = voxelMap.GetVoxelCoordinateFromMeters(boundingBox.Max);\n\n              voxelMap.InvalidateCache(cellCoordMin, cellCoordMax);\n              voxelMap.CalcAverageDataCellMaterials();\n\n              voxelMap.SaveVoxelContents(\"VoxelMap_546099.vox\");*/\n            }\n\n\n            // hide demo access info\n            if (m_input.IsAnyAltKeyPressed() && m_input.IsKeyPress(Keys.G) && m_demoScreen != null)\n            {\n                MyGuiManager.RemoveScreen(m_demoScreen);\n            }\n\n            //  Statistics screen\n            if (m_input.IsNewKeyPress(Keys.F11))\n            {\n                if (!m_input.IsAnyShiftKeyPressed() && !m_input.IsAnyCtrlKeyPressed())\n                {\n                    if (m_input.IsAnyAltPress())\n                    {\n                        // ALT + F11 Dump loaded resources.\n                        //MyMinerGame.GraphicsDeviceManager.DbgDumpLoadedResources(true);\n                        MyTextureManager.DbgDumpLoadedTextures(true);\n                    }\n                    else\n                    {\n                        if (m_input.IsAnyCtrlKeyPressed())\n                        {\n                            SwitchInputScreen();\n                        }\n                        else\n                        {\n                            SwitchStatisticsScreen();\n                        }\n                    }\n                }\n                else\n                {\n                    if (m_input.IsAnyShiftKeyPressed())\n                    {\n                        SwitchTimingScreen();\n                    }\n                    else if (m_input.IsAnyCtrlKeyPressed())\n                    {\n                        SwitchInputScreen();\n                    }\n                }\n            }\n\n            if (MyGuiInput.ENABLE_DEVELOPER_KEYS)\n            {\n                // Forge GC to run\n                if (m_input.IsNewKeyPress(Keys.Pause) && m_input.IsAnyShiftKeyPressed())\n                {\n                    //if (m_input.IsAnyAltKeyPressed())\n                    //{\n                    //    for (int i = 0; i < 2048; i++)\n                    //    {\n                    //        byte[] data = new byte[1024]; // Create gargabe to force GC to run\n                    //        data[data.Length - 1] = 123;\n                    //    }\n                    //}\n                    GC.Collect(GC.MaxGeneration);\n                }\n\n\n                if (m_input.IsAnyControlPress())\n                {\n                    //Reload textures\n                    if (m_input.IsNewKeyPress(Keys.F2) && m_input.IsKeyPress(Keys.LeftShift))\n                    {\n                        MyTextureManager.ReloadTextures();\n                    }\n                }\n                else\n                {\n                    //Reload shaders\n                    if (m_input.IsNewKeyPress(Keys.F2) && m_input.IsKeyPress(Keys.LeftShift))\n                    {\n                        MyMinerGame.Static.RootDirectoryEffects = MyMinerGame.Static.RootDirectoryDebug;\n                        MyRender.LoadEffects();\n                        //m_spriteBatchOwn = new MyGuiSpriteBatchOwn(); // Reload shader in sprite batch\n                        //MyTextureManager.ReloadTextures();\n                    }\n                }\n\n                //WS size\n                if (m_input.IsNewKeyPress(Keys.F3) && m_input.IsKeyPress(Keys.LeftShift))\n                {\n                    MyUtils.SetProcessWorkingSetSize(Process.GetCurrentProcess().Handle, -1, -1);\n                }\n\n                // Forced logoff\n                if (m_input.IsAnyCtrlKeyPressed() && m_input.IsNewKeyPress(Keys.Subtract))\n                {\n                    MySectorServiceClient.HardClose();\n                    MyClientServer.Logout();\n                }\n\n                //These keys are to be used just for developers or testing\n                // Only for develop, on test and public, it crashes(obfuscation)\n                //if (MyMwcFinalBuildConstants.IS_DEVELOP)\n                {\n                    //  Game debug screen\n                    if (m_input.IsNewKeyPress(Keys.F9))\n                    {\n                        //                if (m_currentDebugScreen != null)\n                        //                  RemoveScreen(m_currentDebugScreen);\n                        //            AddScreen(m_currentDebugScreen = new MyGuiScreenDebugDeveloper());\n                    }\n\n                    /*\n                    if (!(m_currentStatisticsScreen is MyGuiScreenDebugStatistics))\n                    {\n                        if (m_currentStatisticsScreen != null)\n                            RemoveScreen(m_currentStatisticsScreen);\n                        AddScreen(m_currentStatisticsScreen = new MyGuiScreenDebugStatistics());\n                    } */\n\n\n                    if (m_input.IsNewKeyPress(Keys.F12))\n                    {\n                        if (m_input.IsAnyCtrlKeyPressed() && m_input.IsAnyAltKeyPressed())\n                        {\n                            //  Simulate device lost\n                            MyMinerGame.Static.UnloadContent();\n                            MyMinerGame.Static.LoadContent();\n                            return;\n                        }\n                        else\n                        {\n                            //   if (!MyMwcFinalBuildConstants.IS_PUBLIC)\n                            {\n                                //  Develop screen\n                                if (!(m_currentDebugScreen is MyGuiScreenDebugDeveloper))\n                                {\n                                    if (m_currentDebugScreen != null)\n                                        RemoveScreen(m_currentDebugScreen);\n                                    AddScreen(m_currentDebugScreen = new MyGuiScreenDebugDeveloper());\n                                }\n                                else\n                                {\n                                    RemoveScreen(m_currentDebugScreen);\n                                    m_currentDebugScreen = null;\n                                }\n                            }\n                        }\n                    }\n\n                    if (MyFakes.ALT_AS_DEBUG_KEY)\n                    {\n                        m_inputToNonFocusedScreens = m_input.IsAnyAltKeyPressed() && !m_input.IsKeyPress(Keys.Tab);\n                    }\n                    else\n                    {\n                        m_inputToNonFocusedScreens = m_input.IsKeyPress(Keys.ScrollLock) && !m_input.IsKeyPress(Keys.Tab);\n                    }\n                }\n            }\n\n            //  Forward input to screens only if there are screens and if game has focus (is active)\n            if ((isGameFocused == true) && (m_screens.Count > 0))\n            {\n                //  Get screen from top of the stack - that one has focus\n                MyGuiScreenBase screenWithFocus = GetScreenWithFocus();// m_screens[m_screens.Count - 1];\n\n                if (m_inputToNonFocusedScreens)\n                {\n                    bool inputIsShared = false;\n\n                    for (int i = (m_screens.Count - 1); i >= 0; i--)\n                    {\n                        MyGuiScreenBase screen = m_screens[i];\n                        if (screen.CanShareInput() || m_screens.Count == 1)\n                        {\n                            screen.HandleInput(m_input, m_lastScreenWithFocus != screenWithFocus);\n                            inputIsShared = true;\n                        }\n                    }\n\n                    m_inputToNonFocusedScreens &= inputIsShared;\n\n                    UpdateMouseCursor();\n                }\n                else\n                    if (screenWithFocus != null)\n                    {\n                        if (screenWithFocus.GetDrawMouseCursor() == true)\n                        {\n                            UpdateMouseCursor();\n                        }\n\n                        if (screenWithFocus.CanHandleInputDuringTransition() && IsScreenTransitioning(screenWithFocus))\n                        {\n                            screenWithFocus.HandleInput(m_input, m_lastScreenWithFocus != screenWithFocus);\n                        }\n                        else if ((screenWithFocus.GetState() == MyGuiScreenState.OPENED))\n                        {\n                            //  Disallow to enter input during transition phase of screens\n                            bool handleInput = true;\n                            if (IsAnyScreenInTransition())\n                            {\n                                handleInput = false;\n                            }\n\n                            if (handleInput)\n                            {\n                                //  Send input to screen which has focus - and is fully opened, thus it's not in any sort of transition\n                                screenWithFocus.HandleInput(m_input, m_lastScreenWithFocus != screenWithFocus);\n                            }\n                        }\n                    }\n\n                m_lastScreenWithFocus = screenWithFocus;\n            }\n        }\n\n        private static void SwitchFriendsScreen()\n        {\n            if (!(m_currentStatisticsScreen is MyGuiScreenDebugPlayerFriends))\n            {\n                if (m_currentStatisticsScreen != null)\n                    RemoveScreen(m_currentStatisticsScreen);\n                AddScreen(m_currentStatisticsScreen = new MyGuiScreenDebugPlayerFriends());\n            }\n            else\n            {\n                RemoveScreen(m_currentStatisticsScreen);\n                m_currentStatisticsScreen = null;\n            }\n        }\n\n        private static void SwitchTimingScreen()\n        {\n            if (!(m_currentStatisticsScreen is MyGuiScreenDebugTiming))\n            {\n                if (m_currentStatisticsScreen != null)\n                    RemoveScreen(m_currentStatisticsScreen);\n                AddScreen(m_currentStatisticsScreen = new MyGuiScreenDebugTiming());\n            }\n            else\n            {\n                RemoveScreen(m_currentStatisticsScreen);\n                m_currentStatisticsScreen = null;\n            }\n        }\n\n        private static void SwitchStatisticsScreen()\n        {\n            if (!(m_currentStatisticsScreen is MyGuiScreenDebugStatistics))\n            {\n                if (m_currentStatisticsScreen != null)\n                    RemoveScreen(m_currentStatisticsScreen);\n                AddScreen(m_currentStatisticsScreen = new MyGuiScreenDebugStatistics());\n            }\n            else\n            {\n                RemoveScreen(m_currentStatisticsScreen);\n                m_currentStatisticsScreen = null;\n            }\n        }\n\n        private static void SwitchInputScreen()\n        {\n            if (!(m_currentStatisticsScreen is MyGuiScreenDebugInput))\n            {\n                if (m_currentStatisticsScreen != null)\n                    RemoveScreen(m_currentStatisticsScreen);\n                AddScreen(m_currentStatisticsScreen = new MyGuiScreenDebugInput());\n            }\n            else\n            {\n                RemoveScreen(m_currentStatisticsScreen);\n                m_currentStatisticsScreen = null;\n            }\n        }\n\n        private static void OnLoggedUserChanged(object sender, EventArgs args)\n        {\n            UpdateDemoAccessScreen();\n        }\n\n        public static void UpdateDemoAccessScreen()\n        {\n            if (MyClientServer.LoggedPlayer != null && MyClientServer.LoggedPlayer.IsDemoUser())\n            {\n                if (m_demoScreen == null)\n                {\n                    m_demoScreen = new MyGuiScreenDemoAccessInfo();\n                    m_screensToAdd.Add(m_demoScreen);\n                }\n            }\n            else\n            {\n                if (m_demoScreen != null)\n                {\n                    m_screensToRemove.Add(m_demoScreen);\n                    m_demoScreen = null;\n                }\n            }\n        }\n\n        static bool IsAnyScreenInTransition()\n        {\n            bool isTransitioning = false;\n            if (m_screens.Count > 0)\n            {\n                //  Get screen from top of the stack - that one has focus\n                //  But it can't be closed. If yes, then look for other.\n                for (int i = (m_screens.Count - 1); i >= 0; i--)\n                {\n                    MyGuiScreenBase screen = m_screens[i];\n\n                    isTransitioning = IsScreenTransitioning(screen);\n                    if (isTransitioning) break;\n                }\n            }\n            return isTransitioning;\n        }\n\n        public static bool IsAnyScreenOpening()\n        {\n            bool isOpening = false;\n            if (m_screens.Count > 0)\n            {\n                //  Get screen from top of the stack - that one has focus\n                //  But it can't be closed. If yes, then look for other.\n                for (int i = (m_screens.Count - 1); i >= 0; i--)\n                {\n                    MyGuiScreenBase screen = m_screens[i];\n\n                    isOpening = screen.GetState() == MyGuiScreenState.OPENING;\n                    if (isOpening) break;\n                }\n            }\n            return isOpening;\n        }\n\n        private static bool IsScreenTransitioning(MyGuiScreenBase screen)\n        {\n            return (screen.GetState() == MyGuiScreenState.CLOSING || screen.GetState() == MyGuiScreenState.OPENING) ||\n                (screen.GetState() == MyGuiScreenState.HIDING || screen.GetState() == MyGuiScreenState.UNHIDING);\n        }\n\n        public static bool IsScreenOfTypeOpen(Type screenType)\n        {\n            foreach (MyGuiScreenBase screen in m_screens)\n            {\n                if ((screen.GetType() == screenType) && (screen.GetState() == MyGuiScreenState.OPENED)) return true;\n            }\n            return false;\n        }\n\n        public static MyGuiScreenDebugStatistics GetScreenDebugNormal()\n        {\n            MyGuiScreenDebugStatistics debugScreen = null;\n            foreach (MyGuiScreenBase screen in m_screens)\n            {\n                if (screen is MyGuiScreenDebugStatistics) debugScreen = (MyGuiScreenDebugStatistics)screen;\n            }\n            return debugScreen;\n        }\n\n        public static MyGuiScreenDebugBot GetScreenDebugBot()\n        {\n            MyGuiScreenDebugBot debugScreenBot = null;\n            foreach (MyGuiScreenBase screen in m_screens)\n            {\n                if (screen is MyGuiScreenDebugBot) debugScreenBot = (MyGuiScreenDebugBot)screen;\n            }\n            return debugScreenBot;\n        }\n\n        public static MyGuiScreenDebugDeveloper GetScreenDebugDeveloper()\n        {\n            MyGuiScreenDebugDeveloper debugScreenDeveloper = null;\n            foreach (MyGuiScreenBase screen in m_screens)\n            {\n                if (screen is MyGuiScreenDebugDeveloper) debugScreenDeveloper = (MyGuiScreenDebugDeveloper)screen;\n            }\n            return debugScreenDeveloper;\n        }\n\n        //  Update all screens\n        public static void Update()\n        {\n            //  We remove, add, remove because sometimes in ADD when calling LoadContent some screen can be marked for remove, so we\n            //  need to make sure it's really removed before we enter UPDATE or DRAW loop\n            MyRender.GetRenderProfiler().StartProfilingBlock(\"GuiManager-RemoveScreens\");\n            RemoveScreens();\n            MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            MyRender.GetRenderProfiler().StartProfilingBlock(\"GuiManager-AddScreens\");\n            AddScreens();\n            MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            MyRender.GetRenderProfiler().StartProfilingBlock(\"GuiManager-RemoveScreens2\");\n            RemoveScreens();\n            MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            MyGuiScreenBase screenWithFocus = GetScreenWithFocus();\n\n            try\n            {\n                System.Windows.Forms.Form f = (System.Windows.Forms.Form)System.Windows.Forms.Form.FromHandle(MyMinerGame.Static.Window.NativeWindow.Handle);\n                UpdateClipForCursor(f);\n            }\n            catch\n            {\n                return;\n            }\n            EnableSoundsBasedOnWindowFocus();\n\n            //  Update screens\n            int updateScreensBlock = -1;\n            MyRender.GetRenderProfiler().StartProfilingBlock(\"GuiManager-Update screens\", ref updateScreensBlock);\n\n            for (int i = 0; i < m_screens.Count; i++)\n            {\n                MyGuiScreenBase screen = m_screens[i];\n\n                if (MyMwcFinalBuildConstants.EnableLoggingInDrawAndUpdateAndGuiLoops)\n                {\n                    MyMwcLog.WriteLine(\"Update screen: \" + i.ToString() + \" - \" + screen.ToString());\n                }\n\n                int blockId = -1;\n                MyRender.GetRenderProfiler().StartProfilingBlock(\"Update : \" + screen.GetFriendlyName(), ref blockId);\n                screen.Update(screen == screenWithFocus);\n                MyRender.GetRenderProfiler().EndProfilingBlock(blockId);\n            }\n\n            MyRender.GetRenderProfiler().EndProfilingBlock(updateScreensBlock);\n        }\n\n        static int GetIndexOfLastNonTopMostNonDebugScreen()\n        {\n            int max = 0;\n            for (int i = 0; i < m_screens.Count; i++)\n            {\n                MyGuiScreenBase screen = m_screens[i];\n                if (screen.IsTopMostScreen() == true || screen is MyGuiScreenDebugBase)\n                {\n                    break;\n                }\n                max = i + 1;\n            }\n            return max;\n        }\n\n        //  Add screens - if during update-loop some screen was marked 'for add'\n        static void AddScreens()\n        {\n            // Changed from foreach to for, to allow add screens during enumeration\n            for (int i = 0; i < m_screensToAdd.Count; i++)\n            {\n                MyGuiScreenBase screenToAdd = m_screensToAdd[i];\n\n                if (screenToAdd.IsLoaded == false)\n                {\n                    screenToAdd.SetState(MyGuiScreenState.OPENING);\n                    screenToAdd.LoadContent();\n                }\n\n                m_screens.Insert(GetIndexOfLastNonTopMostNonDebugScreen(), screenToAdd);\n            }\n            m_screensToAdd.Clear();\n        }\n\n        public static bool IsScreenTopMostNonDebug(MyGuiScreenBase screen)\n        {\n            int index = GetIndexOfLastNonTopMostNonDebugScreen() - 1;\n            if (index < 0 || index >= m_screens.Count) return false;\n            if (m_screensToAdd.Count > 0) return false;\n\n            return m_screens[index] == screen;\n        }\n\n        //  Remove screens - if during update-loop some screen was marked 'for remove'\n        static void RemoveScreens()\n        {\n            foreach (MyGuiScreenBase screenToRemove in m_screensToRemove)\n            {\n                if (screenToRemove.IsLoaded == true)\n                {\n                    screenToRemove.UnloadContent();\n                    screenToRemove.UnloadData();\n                }\n                m_screens.Remove(screenToRemove);\n\n                // if we remove screen which is marked as screen to add, then we must remove it from screens to add\n                int screenIndex = m_screensToAdd.Count - 1;\n                while (screenIndex >= 0)\n                {\n                    if (m_screensToAdd[screenIndex] == screenToRemove)\n                    {\n                        m_screensToAdd.RemoveAt(screenIndex);\n                    }\n                    screenIndex--;\n                }\n            }\n            m_screensToRemove.Clear();\n        }\n\n        static void UpdateMouseCursor()\n        {\n            //here remove only hw cursor fakes rest is ok\n            if (MyVideoModeManager.IsHardwareCursorUsed())\n            {\n                Vector2 scp = MyGuiInput.GetMousePosition();\n                MouseCursorPosition = GetNormalizedCoordinateFromScreenCoordinate(scp);\n            }\n            else\n            {\n                //this else has to be called w/o fakes either\n                Vector2 screenDelta = m_input.GetCursorPosition() - MyMinerGame.ScreenSizeHalf;\n\n                MouseCursorPosition += GetNormalizedSizeFromScreenSize(screenDelta * MyGuiConstants.MOUSE_CURSOR_SPEED_MULTIPLIER * m_safeScreenScale);\n\n                //  Min and max mouse position\n                var min = GetMinMouseCoord();\n                var max = GetMaxMouseCoord();\n                if (MouseCursorPosition.X < min.X) m_mouseCursorPosition.X = min.X;\n                if (MouseCursorPosition.X > max.X) m_mouseCursorPosition.X = max.X;\n                if (MouseCursorPosition.Y < min.Y) m_mouseCursorPosition.Y = min.Y;\n                if (MouseCursorPosition.Y > max.Y) m_mouseCursorPosition.Y = max.Y;\n            }\n        }\n\n        static void DrawMouseCursor(MyTexture2D mouseCursorTexture)\n        {\n            if (MyGuiManager.GetScreenshot() != null)\n                return;\n\n            if (mouseCursorTexture == null)\n                return;\n            Vector2 cursorSize = GetNormalizedSize(mouseCursorTexture, MyGuiConstants.MOUSE_CURSOR_SCALE);\n\n            DrawSpriteBatch(mouseCursorTexture, MouseCursorPosition + (cursorSize / 2.0f), MyGuiConstants.MOUSE_CURSOR_SCALE, new Color(MyGuiConstants.MOUSE_CURSOR_COLOR),\n                MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, 0, new Vector2(0.5f, 0.5f));\n        }\n\n        public static MyGuiScreenBase GetScreenWithFocus()\n        {\n            MyGuiScreenBase screenWithFocus = null;\n\n            if (m_screens.Count > 0)\n            {\n                //  Get screen from top of the stack - that one has focus\n                //  But it can't be closed. If yes, then look for other.\n                for (int i = (m_screens.Count - 1); i >= 0; i--)\n                {\n                    MyGuiScreenBase screen = m_screens[i];\n\n                    //  Only opened screens and only if it isn't a debug screen\n                    bool isOpened = (screen.GetState() == MyGuiScreenState.OPENED) || (screen.CanHandleInputDuringTransition() && IsScreenTransitioning(screen));\n                    bool canHaveFocus = screen.CanHaveFocus();\n                    if (isOpened && canHaveFocus)\n                    {\n                        screenWithFocus = screen;\n                        break;\n                    }\n                }\n            }\n\n            return screenWithFocus;\n        }\n\n        //  Draw all screens\n        public static void Draw()\n        {\n            int profID = -1;\n            MyRender.GetRenderProfiler().StartProfilingBlock(\"GuiManager::Draw\", ref profID);\n            /*\n           //  Clear color, depth and stencil because at this moment I am not sure which one will be really required. But\n           //  I think that stencil needs to be cleared because we use it on stencil masks for textbox, combobox, etc\n           try\n           {\n               MyMinerGame.Static.GraphicsDevice.Clear(ClearOptions.Target, Color.Black, 0, 0);\n           }\n           catch (Exception e)\n           {\n               MyMwcLog.WriteLine(\"Unknown clear error: \" + e.ToString());\n           }\n\n              */\n            // PetrM told to comment out\n            //System.Diagnostics.Debug.Assert(m_spriteBatchUsageCount == 0);\n\n            BeginSpriteBatch();\n\n            //  Find screen with focus\n            MyGuiScreenBase screenWithFocus = GetScreenWithFocus();\n\n            //  Find top screen that has background fade\n            MyGuiScreenBase screenFade = null;\n            for (int i = (m_screens.Count - 1); i >= 0; i--)\n            {\n                MyGuiScreenBase screen = m_screens[i];\n                bool screenGetEnableBackgroundFade = screen.GetEnableBackgroundFade();\n                bool isScreenFade = false;\n                if (screenWithFocus == screen || screen.GetDrawScreenEvenWithoutFocus())\n                {\n                    if ((screen.GetState() != MyGuiScreenState.CLOSED) && (screenGetEnableBackgroundFade))\n                    {\n                        isScreenFade = true;\n                    }\n                }\n                else if (IsScreenTransitioning(screen) && screenGetEnableBackgroundFade)\n                {\n                    isScreenFade = true;\n                }\n\n                if (isScreenFade)\n                {\n                    screenFade = screen;\n                    break;\n                }\n            }\n\n\n            if (MyGuiManager.GetScreenshot() != null)\n            {\n                Render.MyRender.CreateRenderTargets();\n                m_renderSetup.ShadowRenderer = MyRender.GetShadowRenderer();\n                //We need depth n stencil because stencil is used for drawing hud\n                var rt = new Texture(MyMinerGame.Static.GraphicsDevice, (int)(MyCamera.ForwardViewport.Width), (int)(MyCamera.ForwardViewport.Height), 0, Usage.RenderTarget, Format.A8R8G8B8, Pool.Default);\n                m_renderSetup.RenderTargets = new Texture[] { rt };\n                // To have render target with large size on device (screen.Draw calls MyCamera.EnableForward, which sets Viewport on device)\n                MyMinerGame.SetRenderTargets(m_renderSetup.RenderTargets, null);\n                Render.MyRender.PushRenderSetupAndApply(m_renderSetup, ref m_backupRenderSetup);\n            }\n\n            //  Draw all screen, from bottom to top\n            for (int i = 0; i < m_screens.Count; i++)\n            {\n                MyGuiScreenBase screen = m_screens[i];\n\n                bool drawScreen = false;\n                if (screenWithFocus == screen || screen.GetDrawScreenEvenWithoutFocus())\n                {\n                    if (MyMwcFinalBuildConstants.EnableLoggingInDrawAndUpdateAndGuiLoops)\n                    {\n                        MyMwcLog.WriteLine(\"Draw screen: \" + i.ToString() + \" - \" + screen.ToString());\n                    }\n\n                    if (screen.GetState() != MyGuiScreenState.CLOSED && screen.GetState() != MyGuiScreenState.HIDDEN)\n                    {\n                        drawScreen = true;\n                    }\n                }\n                else if (IsScreenTransitioning(screen))\n                {\n                    drawScreen = true;\n                }\n\n                if (drawScreen)\n                {\n                    float backgroundFadeAlpha = (screen == screenFade) ? 1 : 0;\n                    screen.Draw(backgroundFadeAlpha);\n                }\n            }\n\n            if (m_inputToNonFocusedScreens)\n            {\n                MyGuiManager.DrawString(MyGuiManager.GetFontMinerWarsWhite(), m_inputSharingText, new Vector2(0, 0), 0.6f,\n                Color.Red, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP);\n            }\n\n            if (Render.MyRender.IsRenderOverloaded)\n            {\n                MyGuiManager.DrawString(MyGuiManager.GetFontMinerWarsWhite(), m_renderOverloadedText, new Vector2(0, 0), 0.6f,\n                Color.Red, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP);\n            }\n\n            /*\n            if (MinerWars.AppCode.Game.Managers.Session.MySession.PlayerShip.RenderObject.CastShadow)\n            {\n                MyGuiManager.DrawString(MyGuiManager.GetFontMinerWarsWhite(), new StringBuilder(\"SUN!!\"), new Vector2(0, 0), 0.6f,\n                Color.Red, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP);\n            } */\n\n\n            if (((screenWithFocus != null) && (screenWithFocus.GetDrawMouseCursor() == true)) || (m_inputToNonFocusedScreens && m_screens.Count > 1))\n            {\n                MyGuiControlBase mouseOverControl = null;\n                if (screenWithFocus != null)\n                {\n                    mouseOverControl = screenWithFocus.GetMouseOverControl();\n                }\n\n\n                if (mouseOverControl != null && mouseOverControl.GetMouseCursorTexture() != null)\n                {\n                    if (MyVideoModeManager.IsHardwareCursorUsed())\n                    {\n                        SetMouseCursorVisibility(true);\n                    }\n                    else\n                    {\n                        SetMouseCursorVisibility(false);\n                        DrawMouseCursor(mouseOverControl.GetMouseCursorTexture());\n                    }\n                }\n                else\n                {\n                    if (MyVideoModeManager.IsHardwareCursorUsed())\n                    {\n                        SetMouseCursorVisibility(true);\n                    }\n                    else\n                    {\n                        SetMouseCursorVisibility(false);\n                        DrawMouseCursor(GetMouseCursorTexture());\n                    }\n                }\n            }\n            else\n            {\n                if (MyVideoModeManager.IsHardwareCursorUsed())\n                {\n                    if (MyGuiManager.GetScreenWithFocus() != null)\n                    {\n                        SetMouseCursorVisibility(MyGuiManager.GetScreenWithFocus().GetDrawMouseCursor());\n                    }\n                }\n            }\n            /* //We dont want cursor in screenshots\n            if (MyGuiManager.GetScreenshot() != null)\n            {\n                DrawMouseCursor(GetMouseCursorTexture());\n            }*/\n            if (MyVideoModeManager.IsThereAnyChangeToApply)\n            {\n                MyTexture2D texture = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\BackgroundScreen\\\\ProgressBackground\", flags: TextureFlags.IgnoreQuality);\n                Vector2 size = new Vector2(598 / 1600f, 368 / 1200f);\n                DrawSpriteBatch(texture, new Vector2(0.5f, 0.5f), size, Color.White, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER);\n                DrawString(GetFontMinerWarsBlue(), MyTextsWrapper.Get(MyTextsWrapperEnum.ApplyingPleaseWait), new Vector2(0.5f, 0.5f), 0.9f, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER);\n            }\n\n            EndSpriteBatch();\n\n            System.Diagnostics.Debug.Assert(m_spriteBatchUsageCount == 0);\n\n            if (MyGuiManager.GetScreenshot() != null)\n            {\n                MyRender.PopRenderSetupAndRevert(m_backupRenderSetup);\n                MyRender.TakeScreenshot(\"FinalScreen\", MyGuiManager.GetScreenshotTexture(), Effects.MyEffectScreenshot.ScreenshotTechniqueEnum.Color);\n\n                MyMinerGame.SetRenderTarget(null, null);\n                MyRender.Blit(MyGuiManager.GetScreenshotTexture(), true, MyEffectScreenshot.ScreenshotTechniqueEnum.Color);\n\n                MyGuiManager.GetScreenshotTexture().Dispose();\n            }\n\n            System.Diagnostics.Debug.Assert(m_spriteBatchUsageCount == 0);\n\n            //  Screenshot object survives only one DRAW after created. We delete it immediatelly. So if 'm_screenshot'\n            //  is not null we know we have to take screenshot and set it to null.\n            //  Take last picture and destroy screenshot object\n            if (m_screenshot != null)\n            {\n                StopTakingScreenshot();\n            }\n\n\n            MyRender.GetRenderProfiler().ProfileCustomValue(\"Drawcalls\", MyPerformanceCounter.PerCameraDraw.TotalDrawCalls);\n\n            MyRender.GetRenderProfiler().EndProfilingBlock(profID);\n\n            if (MyRender.MainRendering)\n            {\n                MyRender.GetRenderProfiler().Draw();\n            }\n\n            System.Diagnostics.Debug.Assert(m_spriteBatchUsageCount == 0);\n        }\n\n        public static bool IsMainMenuScreenOpened()\n        {\n            return m_screens.OfType<MyGuiScreenMainMenu>().Any();\n        }\n\n        public static MyGuiScreenMainMenu GetMainMenuScreen()\n        {\n            return m_screens.OfType<MyGuiScreenMainMenu>().FirstOrDefault();\n        }\n\n        public static bool IsLoginScreenOpened()\n        {\n            return m_screens.OfType<MyGuiScreenLogin>().Any();\n        }\n\n\n        static StringBuilder m_sb = new StringBuilder(512);\n\n        //  Only for displaying list of active GUI screens in debug console\n        public static StringBuilder GetGuiScreensForDebug()\n        {\n            m_sb.Clear();\n            m_sb.ConcatFormat(\"{0}{1}{2}\", \"GUI screens: [\", m_screens.Count, \"]: \");\n            for (int i = 0; i < m_screens.Count; i++)\n            {\n                MyGuiScreenBase screen = m_screens[i];\n                m_sb.Append(screen.GetFriendlyName());\n                //m_sb.Replace(\"MyGuiScreen\", \"\"); //This is doing allocations\n                m_sb.Append(i < (m_screens.Count - 1) ? \", \" : \"\");\n                //                string[] stateString = { \"o\", \"O\", \"c\", \"C\", \"h\", \"u\", \"H\" };  // debug: show opening/closing state of screens\n                //                sb.Append(screen.GetFriendlyName().Replace(\"MyGuiScreen\", \"\") + \"(\" + stateString[(int)(screen.GetState())] + \")\" + (i < (m_screens.Count - 1) ? \", \" : \"\"));\n            }\n            return m_sb;\n        }\n\n        private static void AddIntroScreen()\n        {\n            if (MyFakes.ENABLE_MENU_VIDEO_BACKGROUND)\n            {\n#if !GPU_PROFILING\n                AddScreen(MyGuiScreenIntroVideo.CreateBackgroundScreen());\n#endif\n            }\n        }\n\n        public static void BackToIntroLogos(Action afterLogosAction)\n        {\n            MyGuiManager.CloseAllScreensNowExcept(null);\n\n            string[] logos = new string[]\n            {\n                \"Textures\\\\Logo\\\\keen_swh\",\n                \"Textures\\\\Logo\\\\miner_wars_2081\",\n                \"Textures\\\\Logo\\\\vrage\",\n            };\n\n            MyGuiScreenBase previousScreen = null;\n\n            foreach (var logo in logos)\n            {\n                var logoScreen = new MyGuiScreenLogo(logo);\n                if (previousScreen != null)\n                    AddCloseHandler(previousScreen, logoScreen, afterLogosAction);\n                else\n                    MyGuiManager.AddScreen(logoScreen);\n\n                previousScreen = logoScreen;\n            }\n\n            if (previousScreen != null)\n                previousScreen.Closed += (screen) => afterLogosAction();\n            else\n                afterLogosAction();\n        }\n\n        private static void AddCloseHandler(MyGuiScreenBase previousScreen, MyGuiScreenLogo logoScreen, Action afterLogosAction)\n        {\n            previousScreen.Closed += (screen) =>\n            {\n                if (!screen.Canceled)\n                    MyGuiManager.AddScreen(logoScreen);\n                else\n                    afterLogosAction();\n            };\n        }\n\n        public static void BackToMainMenu()\n        {\n            if (MyMultiplayerGameplay.IsRunning)\n            {\n                MyMultiplayerGameplay.Static.Shutdown();\n            }\n\n            if (MyMultiplayerPeers.Static != null && MyMultiplayerPeers.Static.IsStarted)\n            {\n                MyMultiplayerPeers.Static.Shutdown();\n            }\n\n            if (MyGuiScreenGamePlay.Static != null && MyGuiScreenGamePlay.Static.GetState() != MyGuiScreenState.CLOSING && MyGuiScreenGamePlay.Static.GetState() != MyGuiScreenState.CLOSED)\n            {\n                AddIntroScreen();\n                MyGuiManager.AddScreen(new MyGuiScreenUnloading(MyGuiScreenGamePlay.Static, new MyGuiScreenMainMenu(true)));\n            }\n            else\n            {\n                AddIntroScreen();\n                MyGuiScreenMainMenu.AddMainMenu(true);\n            }\n            UpdateDemoAccessScreen();\n            //AddScreen(new MyGuiScreenLoading(new MyGuiScreenGamePlay(MyGuiScreenGamePlayType.MAIN_MENU, null,\n            //MyTrailerConstants.DEFAULT_SECTOR_IDENTIFIER, null), MyGuiScreenGamePlay.Static));\n        }\n\n        public static MyFullScreenQuad GetFullscreenQuad()\n        {\n            return m_fullscreenQuad;\n        }\n\n        public static MinerWarsMath.Vector3 GetMouseCursorDirection()\n        {\n            Vector2 screenMouseCursorCoord = MyGuiManager.GetScreenCoordinateFromNormalizedCoordinate(MouseCursorPosition);\n            return MyUtils.Unproject2dCoordinateTo3dCoordinate(screenMouseCursorCoord);\n        }\n\n        public static Vector2 GetHudSize()\n        {\n            return m_hudSize;\n        }\n\n        public static Vector2 GetHudSizeHalf()\n        {\n            return m_hudSizeHalf;\n        }\n\n        public static Vector2? GetScreenWithFocusSize()\n        {\n            MyGuiScreenBase screen = GetScreenWithFocus();\n            return screen != null ? screen.GetSize() : null;\n        }\n\n\n        public static MyGuiFont GetFontMinerWarsWhite()\n        {\n            return m_fontMinerWarsWhite;\n        }\n\n\n        public static MyGuiFont GetFontMinerWarsRed()\n        {\n            return m_fontMinerWarsRed;\n        }\n\n        public static MyGuiFont GetFontMinerWarsBlue()\n        {\n            return m_fontMinerWarsBlue;\n        }\n\n        public static MyGuiFont GetFontMinerWarsGreen()\n        {\n            return m_fontMinerWarsGreen;\n        }\n\n\n        public static MyTexture2D GetBlankTexture()\n        {\n            return m_blankTexture;\n        }\n\n        public static MyTexture2D GetButtonTexture()\n        {\n            return m_buttonTexture;\n        }\n\n\n        public static MyTexture2D GetButtonTextureBg(MyTexture2D mainTexture)\n        {\n            if (mainTexture == m_buttonTexture) return m_buttonTextureBg;\n\n            if (mainTexture == m_hubButton) return m_hubButtonBg;\n\n            if (mainTexture == m_inventoryButton) return m_inventoryButtonBg;\n\n            if (mainTexture == m_MessageButton) return m_hubButtonBg;\n\n            if (mainTexture == m_inventoryButtonTakeAll) return m_inventoryButtonTakeAllBg;\n\n            return null;\n        }\n\n        public static MyTexture2D GetTravelButtonTexture()\n        {\n            return m_travelButtonTexture;\n        }\n\n        public static MyTexture2D GetButtonSearchTexture()\n        {\n            return m_searchButtonTexture;\n        }\n\n\n        public static MyTexture2D GetSliderTexture()\n        {\n            return m_sliderTexture;\n        }\n\n        public static MyTexture2D GetSmallButtonTexture()\n        {\n            return m_smallButtonTexture;\n        }\n\n\n        public static MyTexture2D GetLoadingTexture()\n        {\n            return MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Loading\", flags: TextureFlags.IgnoreQuality);\n        }\n\n        public static MyTexture2D GetCheckboxOnTexture()\n        {\n            return m_checkBoxOnTexture;\n        }\n        public static MyTexture2D GetCheckboxOffTexture()\n        {\n            return m_checkBoxOffTexture;\n        }\n\n        public static MyTexture2D GetInterlanceOverlapTexture()\n        {\n            return m_textureInterlanced;\n        }\n\n        public static MyTexture2D GetTextboxTexture(MyGuiControlPreDefinedSize predefinedSize)\n        {\n            /*\n            if (predefinedSize == MyGuiControlPreDefinedSize.SMALL)\n            {\n                return m_textboxSmallTexture;\n            }\n            else if (predefinedSize == MyGuiControlPreDefinedSize.MEDIUM)\n            {\n                return m_textboxMediumTexture;\n            }\n            else\n            {\n                return m_textboxLargeTexture;\n            }\n             * */\n            return m_textboxMediumTexture;\n        }\n\n        public static MyTexture2D GetComboboxTexture(MyGuiControlPreDefinedSize predefinedSize)\n        {\n            switch (predefinedSize)\n            {\n                case MyGuiControlPreDefinedSize.MEDIUM:\n                    return m_comboboxMediumTexture;\n                case MyGuiControlPreDefinedSize.LONGMEDIUM:\n                    return m_comboboxMediumTexture;\n                default:\n                    throw new IndexOutOfRangeException(\"this combobox texture does not exist\");\n            }\n        }\n\n        public static MyTexture2D GetComboboxTextureTop(MyGuiControlPreDefinedSize predefinedSize)\n        {\n            switch (predefinedSize)\n            {\n                case MyGuiControlPreDefinedSize.MEDIUM:\n                    return m_comboboxMediumTopTexture;\n                case MyGuiControlPreDefinedSize.LONGMEDIUM:\n                    return m_comboboxMediumTopTexture;\n                default:\n                    throw new IndexOutOfRangeException(\"this combobox texture does not exist\");\n            }\n        }\n\n        public static MyTexture2D GetComboboxTextureItem(MyGuiControlPreDefinedSize predefinedSize)\n        {\n            switch (predefinedSize)\n            {\n                case MyGuiControlPreDefinedSize.MEDIUM:\n                    return m_comboboxMediumItemTexture;\n                case MyGuiControlPreDefinedSize.LONGMEDIUM:\n                    return m_comboboxMediumItemTexture;\n                default:\n                    throw new IndexOutOfRangeException(\"this combobox texture does not exist\");\n            }\n        }\n\n        public static MyTexture2D GetComboboxTextureBottom(MyGuiControlPreDefinedSize predefinedSize)\n        {\n            switch (predefinedSize)\n            {\n                case MyGuiControlPreDefinedSize.MEDIUM:\n                    return m_comboboxMediumBottomTexture;\n                case MyGuiControlPreDefinedSize.LONGMEDIUM:\n                    return m_comboboxMediumBottomTexture;\n                default:\n                    throw new IndexOutOfRangeException(\"this combobox texture does not exist\");\n            }\n        }\n\n        public static MyTexture2D GetComboboxSelectedTexture()\n        {\n            return m_comboboxSelectedTexture;\n        }\n\n\n        public static MyTexture2D GetAmmoToolTip()\n        {\n            return m_ammoToolTipTexture;\n        }\n\n\n        public static MyTexture2D GetAmmoSelectLowBackground()\n        {\n            return m_ammoSelectLowBackgroundTexture;\n        }\n\n        public static MyTexture2D GetScrollbarSlider()\n        {\n            return m_scrollbarSlider;\n        }\n\n        public static MyTexture2D GetHorizontalScrollbarSlider()\n        {\n            return m_horizontalScrollbarSlider;\n        }\n\n        public static MyTexture2D GetMouseCursorTexture()\n        {\n            return m_mouseCursorTexture;\n        }\n\n        public static void SetMouseCursorTexture(MyTexture2D texture)\n        {\n            m_mouseCursorTexture = texture;\n        }\n\n        public static System.Drawing.Bitmap GetMouseCursorBitmap()\n        {\n            return m_mouseCursorBitmap;\n        }\n\n        public static MyTexture2D GetMouseCursorArrowTexture()\n        {\n            return m_mouseCursorArrowTexture;\n        }\n\n        public static MyTexture2D GetMouseCursorHandTexture()\n        {\n            return m_mouseCursorHandTexture;\n        }\n\n        public static System.Drawing.Bitmap GetMouseCursorHandBitmap()\n        {\n            return null;//todo\n        }\n\n        public static MyTexture2D GetLockedButtonTexture()\n        {\n            return m_lockedButtonTexture;\n        }\n\n        public static MyTexture2D GetLockedInventoryItem()\n        {\n            return m_lockedInventoryItemTexture;\n        }\n\n        public static MyTexture2D GetSliderControlTexture()\n        {\n            return m_sliderControlTexture;\n        }\n\n        public static MyTexture2D GetProgressBarTexture()\n        {\n            return m_progressBarTexture;\n        }\n\n        public static MyTexture2D GetConfigWheelBackground()\n        {\n            //return m_configWheelBackground;\n            return MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\BackgroundScreen\\\\ConfigWheelBackground\", flags: TextureFlags.IgnoreQuality);\n        }\n\n        public static MyTexture2D GetConfigWheelHover()\n        {\n            //return m_configWheelHover;\n            return MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\ConfigWheelHover\", flags: TextureFlags.IgnoreQuality);\n        }\n\n        //public static MyTexture2D GetConfigWheelBackgroundSmall()\n        //{\n        //    //return m_configWheelBackgroundSmall;\n        //    //return MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\ConfigWheelSmallBackground\", flags: TextureFlags.IgnoreQuality);\n        //}\n\n\n        public static MyTexture2D GetRandomTexture()\n        {\n            return m_randomTexture;\n        }\n\n        public static MyTexture2D GetFogTexture()\n        {\n            return m_fogTexture;\n        }\n\n        public static MyTexture2D GetFogSmallTexture()\n        {\n            return m_fogSmallTexture;\n        }\n\n        public static MyTexture2D GetFogSquareTexture()\n        {\n            return m_fogSquareTexture;\n        }\n\n        public static MySpriteListVideoPlayer GetDialoguePortraitNoiseVideoPlayer()\n        {\n            return m_dialoguePortraitNoiseVideoPlayer;\n        }\n\n        public static MyTexture2D GetAmmoSelectKeyConfirmBorderTexture()\n        {\n            return m_ammoSelectKeyConfirmBorderTexture;\n        }\n\n\n        public static MyTexture2D GetExpandTexture()\n        {\n            return m_expandTexture;\n        }\n\n        public static MyTexture2D GetCollapseTexture()\n        {\n            return m_collapseTexture;\n        }\n\n\n        public static MyTexture2D GetToolbarButton()\n        {\n            return m_toolbarButton;\n        }\n        public static MyTexture2D GetToolbarButtonHover()\n        {\n            return m_toolbarButtonHover;\n        }\n\n        public static MyTexture2D GetJournalFilterAllTexture()\n        {\n            return m_journalFilterAll;\n        }\n\n        public static MyTexture2D GetJournalFilterGlobalEventsTexture()\n        {\n            return m_journalFilterGlobalEvents;\n        }\n\n\n\n        public static MyTexture2D GetJournalFilterMissionsTexture()\n        {\n            return m_journalFilterMissions;\n        }\n\n\n\n        public static MyTexture2D GetJournalFilterStorytexture()\n        {\n            return m_journalFilterStory;\n        }\n\n        public static MyTexture2D GetJournalLine()\n        {\n            return m_journalLine;\n        }\n\n        public static MyTexture2D GetJournalSelected()\n        {\n            return m_journalSelected;\n        }\n\n\n        public static MyTexture2D GetJournalCloseTexture()\n        {\n            return m_journalCloseButton;\n        }\n\n        public static MyTexture2D GetInventoryScreenBackgroundTexture()\n        {\n            //return m_inventoryScreenBackgroundTexture;\n            return MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\BackgroundScreen\\\\InventoryScreenBackground\", flags: TextureFlags.IgnoreQuality);\n        }\n\n        public static MyTexture2D GetInventoryScreenButtonTexture()\n        {\n            return m_inventoryButton;\n            //return MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\InventoryScreen\\\\Button\", flags: TextureFlags.IgnoreQuality);\n        }\n\n        public static MyTexture2D GetInventoryFilterSortAllOff()\n        {\n            return m_inventoryFilterSortAllOff;\n        }\n\n        public static MyTexture2D GetInventoryFilterSortAllOn()\n        {\n            return m_inventoryFilterSortAllOn;\n        }\n\n        public static MyTexture2D GetInventoryFilterSortConsumablesOff()\n        {\n            return m_inventoryFilterSortConsumablesOff;\n        }\n\n        public static MyTexture2D GetInventoryFilterSortConsumablesOn()\n        {\n            return m_inventoryFilterSortConsumablesOn;\n        }\n\n        public static MyTexture2D GetInventoryFilterSortEquipmentOff()\n        {\n            return m_inventoryFilterSortEquipmentOff;\n        }\n\n        public static MyTexture2D GetInventoryFilterSortEquipmentOn()\n        {\n            return m_inventoryFilterSortEquipmentOn;\n        }\n\n        public static MyTexture2D GetInventoryFilterSortGodsOff()\n        {\n            return m_inventoryFilterSortGodsOff;\n        }\n\n        public static MyTexture2D GetInventoryFilterSortGodsOn()\n        {\n            return m_inventoryFilterSortGodsOn;\n        }\n\n        public static MyTexture2D GetInventoryFilterSortOresOff()\n        {\n            return m_inventoryFilterSortOresOff;\n        }\n\n        public static MyTexture2D GetInventoryFilterSortOresOn()\n        {\n            return m_inventoryFilterSortOresOn;\n        }\n\n        public static MyTexture2D GetInventoryFilterSortWeaponsOff()\n        {\n            return m_inventoryFilterSortWeaponsOff;\n        }\n\n        public static MyTexture2D GetInventoryFilterSortWeaponsOn()\n        {\n            return m_inventoryFilterSortWeaponsOn;\n        }\n\n        public static MyTexture2D GetInventoryPreviousShip()\n        {\n            return m_inventoryPreviousShip;\n        }\n\n        public static MyTexture2D GetInventoryNextShip()\n        {\n            return m_inventoryNextShip;\n        }\n\n        public static MyTexture2D GetHubBackground()\n        {\n            //return m_hubBackground;\n            return MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\BackgroundScreen\\\\HubBackground\", flags: TextureFlags.IgnoreQuality, loadingMode: LoadingMode.LazyBackground);\n        }\n\n        public static MyTexture2D GetHubItemBackground()\n        {\n            return m_hubItemBackground;\n            //return MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\HubItemBackground\", flags: TextureFlags.IgnoreQuality);\n        }\n\n        public static MyTexture2D GetConfirmButton()\n        {\n            return m_hubButton;\n        }\n\n\n        public static MyTexture2D GetMessageBoxButton()\n        {\n            return m_MessageButton;\n        }\n\n        public static MyTexture2D GetInventoryScreenButtonTextureTakeAll()\n        {\n            return m_inventoryButtonTakeAll;\n            //return MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\InventoryScreen\\\\ButtonTakeAll\", flags: TextureFlags.IgnoreQuality);\n        }\n\n        public static MyTexture2D GetInventoryScreenListboxScrollBarTexture()\n        {\n            //return m_inventoryListboxScrollBar;\n            return MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\InventoryScreen\\\\ListboxScrollBar\", flags: TextureFlags.IgnoreQuality, loadingMode: LoadingMode.LazyBackground);\n        }\n\n        public static MyTexture2D GetDialogueFriendBackgroundTexture()\n        {\n            return m_dialogueFriendBackgroundTexture;\n            //return MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\DialogueFriend\", flags: TextureFlags.IgnoreQuality);\n        }\n\n        public static MyTexture2D GetDialogueEnemyBackgroundTexture()\n        {\n            return m_dialogueEnemyBackgroundTexture;\n            //return MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\DialogueEnemy\", flags: TextureFlags.IgnoreQuality);\n        }\n\n        public static MyTexture2D GetDialogueNeutralBackgroundTexture()\n        {\n            return m_dialogueNeutralBackgroundTexture;\n            //return MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\DialogueNeutral\", flags: TextureFlags.IgnoreQuality);\n        }\n\n        public static MyTexture2D GetSelectEditorBackground()\n        {\n            //return m_SelectEditorbackground;\n            // Changed to same texture as sandbox, because it has same size\n            return MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\BackgroundScreen\\\\SandBoxbackground\", flags: TextureFlags.IgnoreQuality, loadingMode: LoadingMode.LazyBackground);\n        }\n\n        public static MyTexture2D GetSandboxBackgoround()\n        {\n            //return m_SandboxBackground;\n            return MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\BackgroundScreen\\\\SandBoxbackground\", flags: TextureFlags.IgnoreQuality, loadingMode: LoadingMode.LazyBackground);\n        }\n\n        public static MyTexture2D GetMultiplayerBackground()\n        {\n            //return m_SandboxBackground;\n            return MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\BackgroundScreen\\\\MultiplayerBackground\", flags: TextureFlags.IgnoreQuality, loadingMode: LoadingMode.LazyBackground);\n        }\n\n        /// <summary>\n        /// Gets the prefab preview (thumbnail) texture.\n        /// </summary>\n        /// <param name=\"enumValue\">Specifies the prefab type.</param>\n        public static MyTexture2D GetPrefabPreviewTexture(MyMwcObjectBuilderTypeEnum prefabType, int prefabId, MyMwcObjectBuilder_Prefab_AppearanceEnum appearance)\n        {\n            MyTexture2D texture = GetPrefabPreview(prefabType, prefabId, appearance);\n            if (texture == null || texture.LoadState == LoadState.Error)\n            {\n                //TODO\n                /*\n                   MyMwcLog.WriteLine(\"Failed to load prefab preview from disk: \" + prefabType + \" - \" + prefabId + \", faction \" + appearance + \". Rendering it on-the-fly.\");\n\n                   MyPrefabConfiguration config = MyPrefabConstants.GetPrefabConfiguration(prefabType, prefabId);\n                   try\n                   {\n                       Texture preview = m_previewRenderer.RenderPrefabPreview(prefabId, config, appearance,\n                                                                               MyHudConstants.PREFAB_PREVIEW_SIZE,\n                                                                               MyHudConstants.PREFAB_PREVIEW_SIZE);\n                       if (preview != null)\n                       {\n                           texture = preview;\n                           AddPrefabPreview(prefabType, prefabId, appearance, preview);\n                       }\n                   }\n                   catch (Exception e)\n                   {\n                       Debug.Assert(false, \"Render preview failed \" + e.Message);\n                       MyMwcLog.WriteLine(\"Render preview failed\");\n                       MyMwcLog.WriteLine(e.ToString());\n                   }\n                 */\n            }\n            return texture;\n        }\n\n\n        //  This is default sprite batch used by all GUI screens and controls. Only GamePlay is different because renders 3D objects, and\n        //  also some controls (e.g. textbox, combobox) are special cases because they use stencil-mask\n        //  We can use and render more SpriteBatch objects at the same time. XNA should handle it.\n        public static void BeginSpriteBatch()\n        {\n            BeginSpriteBatch(MyStateObjects.GuiDefault_BlendState);\n        }\n\n        public static void BeginSpriteBatch(BlendState blendState)\n        {\n            System.Diagnostics.Debug.Assert(System.Threading.Thread.CurrentThread == AllowedThread);\n\n            if (m_spriteBatchUsageCount == 0)\n            {\n                if (m_stencilLevel > 0)\n                {\n                    StartStencilMask(m_stencilLevel);\n                }\n                else\n                {\n                    //  Deferred means that draw call will be send to GPU not on every Draw(), but only at the End() or if we change\n                    //  a texture between Begin/End. It's faster than Immediate mode.\n                    m_spriteBatch.Begin(SpriteSortMode.Deferred,\n                                        blendState,\n                                        SamplerState.LinearClamp,\n                                        MyStateObjects.GuiDefault_DepthStencilState,\n                                        RasterizerState.CullNone);\n                }\n            }\n            m_spriteBatchUsageCount++;\n        }\n\n        public static void EndSpriteBatch()\n        {\n            System.Diagnostics.Debug.Assert(m_spriteBatchUsageCount > 0);\n            System.Diagnostics.Debug.Assert(System.Threading.Thread.CurrentThread == AllowedThread);\n\n            if (m_spriteBatchUsageCount == 0)\n            {\n                MyMwcLog.WriteLine(\"Sprite batch usage count is 0!\");\n            }\n\n            if (m_spriteBatchUsageCount == 1)\n            {\n                //try\n                {\n                    m_spriteBatch.End();\n                }\n\n                /*\n                catch(Exception e)\n                {\n                    MyMwcLog.WriteLine(e);\n\n                    //This can raise disposed exception on Texture2D during loading. If we dont catch it, m_spriteBatchUsageCount will never gets corrected\n                    UpdateAfterDeviceReset();\n                }*/\n            }\n            m_spriteBatchUsageCount--;\n        }\n\n        private static int m_stencilLevel = 0;\n\n        //  Draw the rectangle to stencil buffer, so later when we draw, only pixels with stencil=1 will be rendered\n        //  IMPORTANT: Be careful about sprite batch, Begin and End\n        public static void DrawStencilMaskRectangle(MyRectangle2D rectangle, MyGuiDrawAlignEnum drawAlignEnum)\n        {\n            //  Call begin with new stencil-mask parameters\n            m_spriteBatch.Begin(SpriteSortMode.Deferred, MyStateObjects.StencilMask_Draw_BlendState, SamplerState.LinearWrap,\n                MyStateObjects.StencilMask_Draw_DepthStencilState, RasterizerState.CullNone);\n\n            //m_spriteBatch.Begin(SpriteSortMode.Deferred);\n\n            m_spriteBatchUsageCount++;\n\n            //  Render rectangle, but it will get written only into stencil buffer and color will remain untouched\n            DrawSpriteBatch(GetBlankTexture(), rectangle.LeftTop, rectangle.Size, new Color(0, 0, 0, 255), drawAlignEnum);\n\n            //  Call end so rectangle is rendered in this moment\n            m_spriteBatch.End();\n            m_spriteBatchUsageCount--;\n        }\n\n        //  Draw the rectangle to stencil buffer, so later when we draw, only pixels with stencil=1 will be rendered\n        //  IMPORTANT: Be careful about sprite batch, Begin and End\n        public static void DrawStencilMaskRectangleRoundUp(MyRectangle2D rectangle, MyGuiDrawAlignEnum drawAlignEnum)\n        {\n            // Clear stencil to avoid overflow\n            //MyMinerGame.Static.GraphicsDevice.Clear(ClearOptions.Stencil, Color.White, 0.0f, 0);\n\n            //  Call begin with new stencil-mask parameters\n            m_spriteBatch.Begin(SpriteSortMode.Deferred, MyStateObjects.StencilMask_Draw_BlendState, SamplerState.LinearWrap,\n                MyStateObjects.StencilMask_Draw_DepthStencilState, RasterizerState.CullNone);\n\n            //m_spriteBatch.Begin(SpriteSortMode.Deferred);\n            m_spriteBatchUsageCount++;\n\n            //  Render rectangle, but it will get written only into stencil buffer and color will remain untouched\n            DrawSpriteBatchRoundUp(GetBlankTexture(), rectangle.LeftTop, rectangle.Size, new Color(0, 0, 0, 255), drawAlignEnum);\n\n            //  Call end so rectangle is rendered in this moment\n            m_spriteBatch.End();\n            m_spriteBatchUsageCount--;\n        }\n\n\n        //  Call this before you start drawing normal objects/scene. It will make sure that nothing will be drawn were stencil values are equal to 1.\n        public static void BeginSpriteBatch_StencilMask()\n        {\n            m_stencilLevel++;\n            StartStencilMask(m_stencilLevel);\n        }\n\n        public static void BeginSpriteBatch_StencilMask(int level)\n        {\n            StartStencilMask(level);\n        }\n\n        private static void StartStencilMask(int stencilLevel)\n        {\n            m_spriteBatch.Begin(SpriteSortMode.Deferred, MyStateObjects.GuiDefault_BlendState, SamplerState.LinearWrap,\n                MyStateObjects.GetStencilMasks_TestBegin_DepthStencilState(stencilLevel), RasterizerState.CullNone);\n\n            m_spriteBatchUsageCount++;\n        }\n\n        public static void EndSpriteBatch_StencilMask()\n        {\n            if (m_stencilLevel > 0)\n            {\n                m_stencilLevel--;\n            }\n            EndSpriteBatch();\n            if (m_stencilLevel == 0)\n            {\n                MyMinerGame.Static.GraphicsDevice.Clear(ClearFlags.Stencil, new ColorBGRA(1.0f), 0.0f, 0);\n            }\n        }\n\n        public static void TakeScreenshot()\n        {\n            //  Screenshot object survives only one DRAW after created. We delete it immediatelly. So if 'm_screenshot'\n            //  is not null we know we have to take screenshot and set it to null.\n            m_screenshot = new MyScreenshot(MyConfig.ScreenshotSizeMultiplier);\n            MyMinerGame.UpdateScreenSize();\n            MyGuiManager.UpdateScreenSize();\n            MyCamera.UpdateScreenSize();\n            MinerWars.AppCode.Game.Render.EnvironmentMap.MyEnvironmentMap.Reset();\n        }\n\n        public static void StopTakingScreenshot()\n        {\n            m_screenshot = null;\n            MyMinerGame.UpdateScreenSize();\n            MyGuiManager.UpdateScreenSize();\n            MyCamera.UpdateScreenSize();\n            Render.MyRender.CreateRenderTargets();\n            MinerWars.AppCode.Game.Render.EnvironmentMap.MyEnvironmentMap.Reset();\n        }\n\n\n        public static Texture GetScreenshotTexture()\n        {\n            return m_renderSetup.RenderTargets[0];\n        }\n\n        public static MyScreenshot GetScreenshot()\n        {\n            return m_screenshot;\n        }\n\n        public static MyGuiPreviewRenderer GetPreviewRenderer()\n        {\n            return m_previewRenderer;\n        }\n\n        public static MyTexture2D GetToolTipBody()\n        {\n            return m_toltipBody;\n        }\n\n        public static MyTexture2D GetToolTipLeft()\n        {\n            return m_toltipLeft;\n        }\n\n        public static MyTexture2D GetToolTipRight()\n        {\n            return m_toltipRight;\n        }\n\n        public static Vector2 GetNormalizedCoordsAndPreserveOriginalSize(int width, int height)\n        {\n            return new Vector2((float)width / (float)MyMinerGame.ScreenSize.X, (float)height / (float)MyMinerGame.ScreenSize.Y);\n        }\n\n        // TEXTURES\n        public static Dictionary<string, MyTexture2D> GetRemoteViewWeaponTextures()\n        {\n            if (m_remoteViewWeaponsTextures == null)\n            {\n                m_remoteViewWeaponsTextures = new Dictionary<string, MyTexture2D>(7);\n                m_remoteViewWeaponsTextures.Add(MyGuiConstants.REMOTE_VIEW_LARGE_WEAPON_AMMO, MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\RemoteView\\\\LargeWeapon\\\\ammo\", flags: TextureFlags.IgnoreQuality));\n                m_remoteViewWeaponsTextures.Add(MyGuiConstants.REMOTE_VIEW_LARGE_WEAPON_BOTTOM, MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\RemoteView\\\\LargeWeapon\\\\bottom\", flags: TextureFlags.IgnoreQuality));\n                m_remoteViewWeaponsTextures.Add(MyGuiConstants.REMOTE_VIEW_LARGE_WEAPON_CROSS, MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\RemoteView\\\\LargeWeapon\\\\cross\", flags: TextureFlags.IgnoreQuality));\n                m_remoteViewWeaponsTextures.Add(MyGuiConstants.REMOTE_VIEW_LARGE_WEAPON_LEFT_SIDE, MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\RemoteView\\\\LargeWeapon\\\\left_side\", flags: TextureFlags.IgnoreQuality));\n                m_remoteViewWeaponsTextures.Add(MyGuiConstants.REMOTE_VIEW_LARGE_WEAPON_PULSE, MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\RemoteView\\\\LargeWeapon\\\\pulse\", flags: TextureFlags.IgnoreQuality));\n                m_remoteViewWeaponsTextures.Add(MyGuiConstants.REMOTE_VIEW_LARGE_WEAPON_RASTR, MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\RemoteView\\\\LargeWeapon\\\\rastr\", flags: TextureFlags.IgnoreQuality));\n                m_remoteViewWeaponsTextures.Add(MyGuiConstants.REMOTE_VIEW_LARGE_WEAPON_RIGHT_SIDE, MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\RemoteView\\\\LargeWeapon\\\\right_side\", flags: TextureFlags.IgnoreQuality));\n            }\n            return m_remoteViewWeaponsTextures;\n        }\n\n        public static void RemoveRemoteViewWeaponTextures()\n        {\n            if (m_remoteViewWeaponsTextures == null) return;\n            lock (m_remoteViewWeaponsTextures)\n            {\n                foreach (KeyValuePair<string, MyTexture2D> tex in m_remoteViewWeaponsTextures)\n                {\n                    if (tex.Value != null && tex.Value.LoadState == LoadState.Loaded)\n                    {\n                        tex.Value.Unload();\n                    }\n                }\n            }\n            m_remoteViewWeaponsTextures.Clear();\n            m_remoteViewWeaponsTextures = null;\n        }\n\n        public static Dictionary<string, MyTexture2D> GetRemoteViewDroneTextures()\n        {\n            if (m_remoteViewDroneTextures == null)\n            {\n                m_remoteViewDroneTextures = new Dictionary<string, MyTexture2D>(5);\n                m_remoteViewDroneTextures.Add(MyGuiConstants.REMOTE_VIEW_DRONE_BOTTOM, MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\RemoteView\\\\Drone\\\\bottom\", flags: TextureFlags.IgnoreQuality));\n                m_remoteViewDroneTextures.Add(MyGuiConstants.REMOTE_VIEW_DRONE_CROSS, MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\RemoteView\\\\Drone\\\\cross\", flags: TextureFlags.IgnoreQuality));\n                m_remoteViewDroneTextures.Add(MyGuiConstants.REMOTE_VIEW_DRONE_LEFT_SIDE, MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\RemoteView\\\\Drone\\\\left_side\", flags: TextureFlags.IgnoreQuality));\n                m_remoteViewDroneTextures.Add(MyGuiConstants.REMOTE_VIEW_DRONE_RASTR, MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\RemoteView\\\\Drone\\\\rastr\", flags: TextureFlags.IgnoreQuality));\n                m_remoteViewDroneTextures.Add(MyGuiConstants.REMOTE_VIEW_DRONE_RIGHT_SIDE, MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\RemoteView\\\\Drone\\\\right_side\", flags: TextureFlags.IgnoreQuality));\n            }\n            return m_remoteViewDroneTextures;\n        }\n\n        public static void RemoveRemoteViewDroneTextures()\n        {\n            if (m_remoteViewDroneTextures == null) return;\n            lock (m_remoteViewDroneTextures)\n            {\n                foreach (KeyValuePair<string, MyTexture2D> tex in m_remoteViewDroneTextures)\n                {\n                    if (tex.Value != null && tex.Value.LoadState == LoadState.Loaded)\n                    {\n                        tex.Value.Unload();\n                    }\n                }\n            }\n            m_remoteViewDroneTextures.Clear();\n            m_remoteViewDroneTextures = null;\n        }\n\n        public static Dictionary<string, MyTexture2D> GetRemoteViewCameraTextures()\n        {\n            if (m_remoteViewCameraTextures == null)\n            {\n                m_remoteViewCameraTextures = new Dictionary<string, MyTexture2D>(6);\n                m_remoteViewCameraTextures.Add(MyGuiConstants.REMOTE_VIEW_CAMERA_BOTTOM, MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\RemoteView\\\\Camera\\\\bottom\", flags: TextureFlags.IgnoreQuality));\n                m_remoteViewCameraTextures.Add(MyGuiConstants.REMOTE_VIEW_CAMERA_FOCUS, MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\RemoteView\\\\Camera\\\\focus\", flags: TextureFlags.IgnoreQuality));\n                m_remoteViewCameraTextures.Add(MyGuiConstants.REMOTE_VIEW_CAMERA_LEFT_SIDE, MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\RemoteView\\\\Camera\\\\left_side\", flags: TextureFlags.IgnoreQuality));\n                m_remoteViewCameraTextures.Add(MyGuiConstants.REMOTE_VIEW_CAMERA_REC, MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\RemoteView\\\\Camera\\\\rec\", flags: TextureFlags.IgnoreQuality));\n                m_remoteViewCameraTextures.Add(MyGuiConstants.REMOTE_VIEW_CAMERA_RIGHT_SIDE, MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\RemoteView\\\\Camera\\\\right_side\", flags: TextureFlags.IgnoreQuality));\n                m_remoteViewCameraTextures.Add(MyGuiConstants.REMOTE_VIEW_CAMERA_RASTR, MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\RemoteView\\\\Camera\\\\rastr\", flags: TextureFlags.IgnoreQuality));\n            }\n            return m_remoteViewCameraTextures;\n        }\n\n        public static void RemoveRemoteViewCameraTextures()\n        {\n            if (m_remoteViewCameraTextures == null) return;\n            lock (m_remoteViewCameraTextures)\n            {\n                foreach (KeyValuePair<string, MyTexture2D> tex in m_remoteViewCameraTextures)\n                {\n                    if (tex.Value != null && tex.Value.LoadState == LoadState.Loaded)\n                    {\n                        tex.Value.Unload();\n                    }\n                }\n            }\n            m_remoteViewCameraTextures.Clear();\n            m_remoteViewCameraTextures = null;\n        }\n\n        // SIZES\n        public static Dictionary<string, Vector2> GetRemoteViewCameraSizes()\n        {\n            Dictionary<string, Vector2> ret = new Dictionary<string, Vector2>(6);\n            ret.Add(MyGuiConstants.REMOTE_VIEW_CAMERA_BOTTOM, new Vector2(744, 59));\n            ret.Add(MyGuiConstants.REMOTE_VIEW_CAMERA_FOCUS, new Vector2(391, 241));\n            ret.Add(MyGuiConstants.REMOTE_VIEW_CAMERA_LEFT_SIDE, new Vector2(53, 971));\n            ret.Add(MyGuiConstants.REMOTE_VIEW_CAMERA_RASTR, new Vector2(1920, 1200));\n            ret.Add(MyGuiConstants.REMOTE_VIEW_CAMERA_REC, new Vector2(154, 47));\n            ret.Add(MyGuiConstants.REMOTE_VIEW_CAMERA_RIGHT_SIDE, new Vector2(50, 971));\n            return ret;\n        }\n\n        public static Dictionary<string, Vector2> GetRemoteViewDroneSizes()\n        {\n            Dictionary<string, Vector2> ret = new Dictionary<string, Vector2>(5);\n            ret.Add(MyGuiConstants.REMOTE_VIEW_DRONE_BOTTOM, new Vector2(1820, 147));\n            ret.Add(MyGuiConstants.REMOTE_VIEW_DRONE_CROSS, new Vector2(897, 487));\n            ret.Add(MyGuiConstants.REMOTE_VIEW_DRONE_LEFT_SIDE, new Vector2(134, 1002));\n            ret.Add(MyGuiConstants.REMOTE_VIEW_DRONE_RASTR, new Vector2(1920, 1200));\n            ret.Add(MyGuiConstants.REMOTE_VIEW_DRONE_RIGHT_SIDE, new Vector2(130, 1002));\n            return ret;\n        }\n\n        public static Dictionary<string, Vector2> GetRemoteViewWeaponSizes()\n        {\n            Dictionary<string, Vector2> ret = new Dictionary<string, Vector2>(7);\n            ret.Add(MyGuiConstants.REMOTE_VIEW_LARGE_WEAPON_AMMO, new Vector2(189, 85));\n            ret.Add(MyGuiConstants.REMOTE_VIEW_LARGE_WEAPON_BOTTOM, new Vector2(760, 75));\n            ret.Add(MyGuiConstants.REMOTE_VIEW_LARGE_WEAPON_CROSS, new Vector2(600, 600));\n            ret.Add(MyGuiConstants.REMOTE_VIEW_LARGE_WEAPON_LEFT_SIDE, new Vector2(100, 988));\n            ret.Add(MyGuiConstants.REMOTE_VIEW_LARGE_WEAPON_PULSE, new Vector2(311, 101));\n            ret.Add(MyGuiConstants.REMOTE_VIEW_LARGE_WEAPON_RASTR, new Vector2(1920, 1200));\n            ret.Add(MyGuiConstants.REMOTE_VIEW_LARGE_WEAPON_RIGHT_SIDE, new Vector2(97, 986));\n            return ret;\n        }\n\n        // POSITIONS\n        public static Dictionary<string, Vector2> GetRemoteViewCameraPositions()\n        {\n            Dictionary<string, Vector2> ret = new Dictionary<string, Vector2>(6);\n            ret.Add(MyGuiConstants.REMOTE_VIEW_CAMERA_BOTTOM, new Vector2(0.5f, 1));\n            ret.Add(MyGuiConstants.REMOTE_VIEW_CAMERA_FOCUS, new Vector2(0.5f, 0.5f));\n            ret.Add(MyGuiConstants.REMOTE_VIEW_CAMERA_LEFT_SIDE, MyVideoModeManager.IsTripleHead() ? new Vector2(0.335f, 0.5f) : new Vector2(0.005f, 0.5f));\n            ret.Add(MyGuiConstants.REMOTE_VIEW_CAMERA_RASTR, new Vector2(0, 0));\n            ret.Add(MyGuiConstants.REMOTE_VIEW_CAMERA_REC, MyVideoModeManager.IsTripleHead() ? new Vector2(0.34f, 1f) : new Vector2(0.01f, 1f));\n            ret.Add(MyGuiConstants.REMOTE_VIEW_CAMERA_RIGHT_SIDE, MyVideoModeManager.IsTripleHead() ? new Vector2(0.66f, 0.5f) : new Vector2(1f, 0.5f));\n            return ret;\n        }\n\n        public static Dictionary<string, Vector2> GetRemoteViewDronePositions()\n        {\n            Dictionary<string, Vector2> ret = new Dictionary<string, Vector2>(5);\n            ret.Add(MyGuiConstants.REMOTE_VIEW_DRONE_BOTTOM, new Vector2(0.5f, 1));\n            ret.Add(MyGuiConstants.REMOTE_VIEW_DRONE_CROSS, new Vector2(0.5f, 0.5f));\n            ret.Add(MyGuiConstants.REMOTE_VIEW_DRONE_LEFT_SIDE, MyVideoModeManager.IsTripleHead() ? new Vector2(0.33f, 0.5f) : new Vector2(0, 0.5f));\n            ret.Add(MyGuiConstants.REMOTE_VIEW_DRONE_RASTR, new Vector2(0, 0));\n            ret.Add(MyGuiConstants.REMOTE_VIEW_DRONE_RIGHT_SIDE, MyVideoModeManager.IsTripleHead() ? new Vector2(0.67f, 0.5f) : new Vector2(1f, 0.5f));\n            return ret;\n        }\n\n        public static Dictionary<string, Vector2> GetRemoteViewWeaponPositions()\n        {\n            Dictionary<string, Vector2> ret = new Dictionary<string, Vector2>(7);\n            ret.Add(MyGuiConstants.REMOTE_VIEW_LARGE_WEAPON_AMMO, MyVideoModeManager.IsTripleHead() ? new Vector2(0.35f, 1f) : new Vector2(0.05f, 1f));\n            ret.Add(MyGuiConstants.REMOTE_VIEW_LARGE_WEAPON_BOTTOM, new Vector2(0.5f, 1));\n            ret.Add(MyGuiConstants.REMOTE_VIEW_LARGE_WEAPON_CROSS, new Vector2(0.5f, 0.5f));\n            ret.Add(MyGuiConstants.REMOTE_VIEW_LARGE_WEAPON_LEFT_SIDE, MyVideoModeManager.IsTripleHead() ? new Vector2(0.35f, 0.5f) : new Vector2(0.05f, 0.5f));\n            ret.Add(MyGuiConstants.REMOTE_VIEW_LARGE_WEAPON_PULSE, MyVideoModeManager.IsTripleHead() ? new Vector2(0.65f, 1f) : new Vector2(0.95f, 1f));\n            ret.Add(MyGuiConstants.REMOTE_VIEW_LARGE_WEAPON_RASTR, new Vector2(0, 0));\n            ret.Add(MyGuiConstants.REMOTE_VIEW_LARGE_WEAPON_RIGHT_SIDE, MyVideoModeManager.IsTripleHead() ? new Vector2(0.65f, 0.5f) : new Vector2(0.95f, 0.5f));\n            return ret;\n        }\n\n        static MyTexture2D m_bloodTexture = null;\n        static MyTexture2D m_lowOxygenTexture = null;\n\n        public static MyTexture2D GetBloodTexture()\n        {\n            if (m_bloodTexture == null)\n            {\n                m_bloodTexture = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\LowHealthBlood\", flags: TextureFlags.IgnoreQuality);\n            }\n            return m_bloodTexture;\n        }\n\n        public static MyTexture2D GetLowOxygenTexture()\n        {\n            if (m_lowOxygenTexture == null)\n            {\n                m_lowOxygenTexture = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\LowOxygen\", flags: TextureFlags.IgnoreQuality);\n            }\n            return m_lowOxygenTexture;\n        }\n\n        public static void RemoveBloodTexture()\n        {\n            if (m_bloodTexture != null)\n            {\n                m_bloodTexture.Unload();\n                m_bloodTexture = null;\n            }\n        }\n\n        public static void RemoveNoOxygenTexture()\n        {\n            if (m_lowOxygenTexture != null)\n            {\n                m_lowOxygenTexture.Unload();\n                m_lowOxygenTexture = null;\n            }\n        }\n\n        public static void CloseIngameScreens()\n        {\n            for (int i = 0; i < m_screens.Count; i++)\n            {\n                if (IsIngameScreen(m_screens[i]))\n                {\n                    m_screens[i].CloseScreen();\n                }\n            }\n        }\n\n        public static bool IsIngameScreen(MyGuiScreenBase screen)\n        {\n            return screen is MyGuiScreenInventory\n                || screen is MyGuiScreenSecurityControlHUB;\n        }\n\n        internal static void UpdateAfterDeviceReset()\n        {\n            //System.Diagnostics.Debug.Assert(MyMinerGame.BatchCanBeCalled);\n\n            // Unload sprite and effect\n            /*\n            if (m_spriteBatch != null)\n            {\n                m_spriteBatch.Dispose();\n                m_spriteBatch = null;\n            }\n              */\n            /*\n            if (m_spriteEffect != null)\n            {\n                m_spriteEffect.Dispose();\n                m_spriteEffect = null;\n            } */\n\n            // Load sprite and effect\n            //m_spriteBatchOwn = new MyGuiSpriteBatchOwn();\n            \n            /*m_spriteBatch = new SpriteBatch(MyMinerGame.Static.GraphicsDevice);\n            m_spriteBatchUsageCount = 0;\n            /*\n        m_spriteEffect = new MyEffectSpriteBatchOriginal();\n        m_spriteEffect.SetTransform(Matrix.Identity);*/\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Core/MyGuiScreenBase.cs",
    "content": "﻿using System.Collections;\nusing System.Text;\nusing System.Collections.Generic;\nusing MinerWarsMath;\nusing MinerWarsMath.Graphics;\nusing MinerWars.AppCode.Toolkit.Input;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils;\nusing SysUtils.Utils;\nusing MinerWars.AppCode.Game.Missions;\nusing MinerWars.AppCode.Game.Textures;\nusing System.Linq;\n\n\nnamespace MinerWars.AppCode.Game.GUI.Core\n{\n    using System;\n    using MinerWars.AppCode.Game.Managers;\n\n    enum MyGuiScreenState\n    {\n        OPENING,\n        OPENED,\n        CLOSING,\n        CLOSED,\n        HIDING,\n        UNHIDING,\n        HIDDEN\n    }\n\n    /// <summary>\n    /// Generic screen results\n    /// </summary>\n    internal enum ScreenResult\n    {\n        /// <summary>\n        /// Ok\n        /// </summary>\n        Ok,\n        /// <summary>\n        /// Cancel\n        /// </summary>\n        Cancel,\n    }\n\n    abstract class MyGuiScreenBase : MyGuiManager.Friend, IMyGuiControlsParent\n    {\n        protected Action OnEnterCallback;\n\n        public delegate void ScreenHandler(MyGuiScreenBase source);\n        public bool SkipTransition { get; set; }\n\n        protected float m_transitionAlpha;\n        protected MyGuiScreenState m_state;\n        //public List<MyGuiControlBase> Controls = new List<MyGuiControlBase>();\n        //public MyGuiControlsCollection Controls = new MyGuiControlsCollection();\n        private MyGuiControls m_controls = new MyGuiControls();\n        protected Vector2 m_position;\n        protected Vector4 m_backgroundFadeColor; \n\n        //  If true then no other screen can be added above this one. They will be always added below.\n        protected bool m_isTopMostScreen = false;\n\n        //  Draw fade rectangle under top-most screen?\n        protected bool m_enableBackgroundFade;\n        \n        //  Background color of this screen. If not specified, background rectangle won't be drawn (this is default option).\n        protected Vector4? m_backgroundColor;\n\n        // Background texture. If not specified, default screen background texture is used\n        protected MyTexture2D m_backgroundTexture;\n        protected static MyTexture2D m_minerWarsLogoTexture;\n        //protected static MyTexture2D m_minerWarsActorsTexture;\n\n        protected bool m_canCloseInCloseAllScreenCalls = true;\n\n        protected bool m_windowIsMovable = false;\n        private bool m_draged = false;\n        private Vector2 m_mouseDragEntryPoint;\n        \n        \n        //  Normalized size of this screen. If you don't need size (this is full-screen screen), set it to null.\n        protected Vector2? m_size;\n\n        //  Automaticaly closes this screen when ESC is pressed (e.g. for game-play screen we don't want this functionality)\n        protected bool m_closeOnEsc = true;\n\n        private bool m_drawMouseCursor = true;    //  Every screen can define if mouse cursor is drawn when this screen has focus. By default true, so who don't want - must set to false.\n        protected bool DrawMouseCursor\n        {\n            set\n            {\n                /*\n                if (value == false && MyGuiManager.GetScreenWithFocus() == this)\n                    MyGuiInput.SetMouseToScreenCenter();//preclear this\n                */\n                m_drawMouseCursor = value;\n            }\n            get\n            {\n                return m_drawMouseCursor;\n            }\n        }\n\n        int m_lastTransitionTime;\n\n        //  Don't change 'm_isLoaded' directly - because it can be used by other threads. Instead use property IsLoaded (it's thread-safe)\n        bool m_isLoaded = false;\n        object m_isLoadedLock = new object();\n\n        //  Server to check if this screen is before or after first update, so we can do some sort of initialization\n        bool m_firstUpdateServed = false;\n\n        protected bool m_drawEvenWithoutFocus = false;  // Some screens must be drawn even if they do not have focus(gameplay screen for example)\n        protected bool m_canHaveFocus = true; //Without focus, this screen will not steal input\n        protected bool m_canShareInput = false; //If input is going to be shared, screen can refuse it\n\n        protected bool m_screenCanHide;\n        protected bool m_allowUnhidePreviousScreen;\n\n        protected MySoundCuesEnum? m_openingCueEnum;\n        protected MySoundCuesEnum? m_closingCueEnum;\n        private MySoundCue? m_openingCue;\n        private MySoundCue? m_closingCue;\n\n        private MyGuiControlBase m_draggingControl;\n        private Vector2 m_draggingControlOffset;\n        private StringBuilder m_drawPositionSb = new StringBuilder();\n\n        private IList<MyGuiControlBase> m_controlsAll = new List<MyGuiControlBase>();       // collection of all controls (recursive)\n        private IList<MyGuiControlBase> m_controlsVisible = new List<MyGuiControlBase>();   // collection of all visible controls (recursive)\n        private Queue<MyGuiControlBase> m_controlsQueue = new Queue<MyGuiControlBase>();    // helper queue for finding controls recursive\n        private int m_keyboardControlIndex = -1;   //  By default is -1, so first call to HandleKeyboardActiveIndex() will move it to first control that can accept it\n        private int m_keyboardControlIndexPrevious = -1;    //  In previous update or handle-input\n        private MyGuiControlListboxDragAndDrop m_listboxDragAndDropHandlingNow;\n        private MyGuiControlCombobox m_comboboxHandlingNow;\n        private MyGuiControlBase m_lastHandlingControl;\n\n        readonly StringBuilder APP_VERSION = new StringBuilder(MyMwcBuildNumbers.ConvertBuildNumberFromIntToString(MyMwcFinalBuildConstants.APP_VERSION).Replace(MyMwcBuildNumbers.SEPARATOR, \".\") + \" DX, \" + MyMwcSecrets.MOD_NAME);\n        readonly StringBuilder UNOFFICIAL_MOD = new StringBuilder(\"Unofficial modification of Miner Wars 2081\");\n\n        /// <summary>\n        /// Occurs when [closed].\n        /// </summary>\n        public event ScreenHandler Closed;\n\n        public bool Canceled { get; private set; }\n\n        //  Prohibited!\n        private MyGuiScreenBase() { }\n\n        protected MyGuiScreenBase(Vector2 position, Vector4? backgroundColor, Vector2? size) : this(position, backgroundColor, size, false, null)\n        {\n        }\n\n        protected MyGuiScreenBase(Vector2 position, Vector4? backgroundColor, Vector2? size, bool isTopMostScreen, MyTexture2D backgroundTexture) \n        {\n            m_backgroundFadeColor = MyGuiConstants.SCREEN_BACKGROUND_FADE_BLANK_DARK;\n            m_position = position;\n            m_backgroundColor = backgroundColor;\n            m_size = size;\n            m_isTopMostScreen = isTopMostScreen;\n            m_enableBackgroundFade = false;\n            m_backgroundTexture = backgroundTexture;\n            m_screenCanHide = true;\n            m_allowUnhidePreviousScreen = true;\n            m_controls.CollectionChanged += Controls_CollectionChanged;\n            m_state = MyGuiScreenState.OPENING;\n            m_lastTransitionTime = MyMinerGame.TotalTimeInMilliseconds;\n        }\n\n        private void Controls_CollectionChanged(object sender, EventArgs e)\n        {\n            FillControlsResurcive();\n        }\n\n        /// <summary>\n        /// For displaying in the list in the debug screen.\n        /// </summary>\n        /// <returns></returns>\n        public abstract string GetFriendlyName();\n\n        //  In all methods overiding this one, call this base LoadContent as last, after child's\n        public virtual void LoadContent()\n        {\n            IsLoaded = true;\n            m_lastTransitionTime = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n        }\n\n        public virtual void LoadData()\n        {\n        }\n\n        public virtual void UnloadContent()\n        {\n            MyMwcLog.WriteLine(\"MyGuiScreenBase.UnloadContent - START\");\n            MyMwcLog.IncreaseIndent();\n\n            IsLoaded = false;\n            if (m_backgroundTexture != null && m_backgroundTexture.LoadState == LoadState.Loaded)\n            {\n                MyTextureManager.UnloadTexture(m_backgroundTexture);\n                //m_backgroundTexture = null;\n            }\n            if (m_minerWarsLogoTexture != null && m_minerWarsLogoTexture.LoadState == Managers.LoadState.Loaded)\n            {\n                MyTextureManager.UnloadTexture(m_minerWarsLogoTexture);\n                //m_minerWarsLogoTexture = null;\n            }\n            /*if (m_minerWarsActorsTexture != null && m_minerWarsActorsTexture.LoadState == Managers.LoadState.Loaded)\n            {\n                MyTextureManager.UnloadTexture(m_minerWarsActorsTexture);\n                //m_minerWarsLogoTexture = null;\n            }*/\n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyGuiScreenBase.UnloadContent - END\");\n        }\n\n        public virtual void UnloadData()\n        {\n        }\n\n        //  This method cab be overrided and used in background thread for loading/unloading the screeen\n        public virtual void RunBackgroundThread()\n        {\n        }\n\n        public MyGuiScreenState GetState()\n        {\n            return m_state;\n        }\n\n        public void SetState(MyGuiScreenState value)\n        {\n            m_state = value;\n        }\n\n        public bool GetDrawMouseCursor()\n        {\n            return m_drawMouseCursor;\n        }\n\n        //  If true then no other screen can be added above this one. They will be always added below.\n        public bool IsTopMostScreen()\n        {\n            return m_isTopMostScreen;\n        }\n\n        public bool GetDrawScreenEvenWithoutFocus()\n        {\n            return m_drawEvenWithoutFocus;\n        }\n\n        public void SetControlIndex(int index)\n        {\n            //Controls.KeyboardControlIndex = index;\n            m_keyboardControlIndex = index;\n        }\n        public void SetPrevControlIndex(int index)\n        {\n            //Controls.KeyboardControlIndexPrevious = index;\n            m_keyboardControlIndexPrevious = index;\n        }\n\n        public virtual bool CanHandleInputDuringTransition()\n        {\n            return false;\n        }\n\n        public virtual void HandleInput(MyGuiInput input, bool receivedFocusInThisUpdate)\n        {\n            //  Here we can make some one-time initialization hidden in update\n            bool isThisFirstHandleInput = !m_firstUpdateServed;\n\n            if (m_firstUpdateServed == false && m_keyboardControlIndex == -1) //m_keyboardControlIndex could be set from constructor\n            {\n                //  Move to first control that can accept it\n                //Controls.HandleKeyboardActiveIndex(true);\n                HandleKeyboardActiveIndex(true);\n\n                //  Never again call this update-initialization\n                m_firstUpdateServed = true;\n            }\n\n            // if we are dragging some control, then we don't pass this focus to controls\n            if(MyFakes.CONTROLS_MOVE_ENABLED && input.IsKeyPress(Keys.M))\n            {\n                if(HandleControlMoving(input))\n                {\n                    return;\n                }\n            }\n\n            if (MyModelsStatisticsConstants.GET_MODEL_STATISTICS_AUTOMATICALLY)\n            {\n                if(MyMinerGame.IsGameReady)\n                    Models.MyModels.LogUsageInformation();\n            }\n\n            if (!HandleControlsInput(input, receivedFocusInThisUpdate))\n            {\n                bool handled = false;\n                //  If input wasn't completely handled or captured by some control, only then we can handle screen's input\n                if ((input.IsKeyPress(Keys.LeftShift) && (input.IsNewKeyPress(Keys.Tab))) || (input.IsNewKeyPress(Keys.Up)) || (input.IsNewGamepadKeyUpPressed()))\n                {\n                    handled = HandleKeyboardActiveIndex(false);\n                }\n                else if ((input.IsNewKeyPress(Keys.Tab)) || (input.IsNewKeyPress(Keys.Down)) || (input.IsNewGamepadKeyDownPressed()))\n                {\n                    handled = HandleKeyboardActiveIndex(true);\n                }\n                else if ((m_closeOnEsc == true) && ((input.IsNewKeyPress(Keys.Escape) || input.IsJoystickButtonNewPressed(MyJoystickButtonsEnum.J02))))\n                {\n                    Canceling();\n                }\n                else if ((OnEnterCallback != null) && (input.IsNewKeyPress(Keys.Enter)))\n                {\n                    OnEnterCallback();\n                }\n\n                // Scrolling down/up between controls using mouse scroll wheel\n                //if (input.PreviousMouseScrollWheelValue() > input.MouseScrollWheelValue())\n                //{\n                //    handled = HandleKeyboardActiveIndex(true);\n                //}\n                //else if (input.PreviousMouseScrollWheelValue() < input.MouseScrollWheelValue())\n                //{\n                //    handled = HandleKeyboardActiveIndex(false);\n                //}\n\n                if (!handled)\n                {\n                    HandleUnhandledInput(input, receivedFocusInThisUpdate);\n                }\n            }\n        }\n\n        private bool HandleControlMoving(MyGuiInput input)\n        {\n            bool dragging = false;\n            \n            if (input.IsLeftMousePressed())\n            {\n                // if we dragging control, then we set it new position by mouse\n                if (m_draggingControl != null)\n                {\n                    m_draggingControl.SetPosition(MyGuiManager.MouseCursorPosition - m_draggingControl.GetParent().GetPositionAbsolute() - m_draggingControlOffset);\n                    dragging = true;\n                }\n                // if we are not dragging control, then we try find it\n                else\n                {\n                    MyGuiControlBase controlToDrag = null;\n                    // first we try find control, which has mouse over\n                    controlToDrag = GetMouseOverControl();                    \n                    // if there is no control which has mouse over, then we try find control, which is under mouse cursor (because some controls has no mouse over all time)\n                    if (controlToDrag == null)\n                    {\n                        controlToDrag = GetControlUnderMouseCursor();\n                    }\n\n                    // if we found any contorl to drag, then we set it to dragging control\n                    if(controlToDrag != null)\n                    {\n                        m_draggingControl = controlToDrag;\n                        m_draggingControlOffset = MyGuiManager.MouseCursorPosition - m_draggingControl.GetParent().GetPositionAbsolute() - controlToDrag.GetPosition();\n                        dragging = true;\n                    }\n                }\n            }\n            else\n            {\n                m_draggingControl = null;\n                if (input.IsNewLeftMouseReleased())\n                {\n                    dragging = true;\n                }\n            }            \n\n            return dragging;\n        }\n\n        private bool IsControlUnderCursor(MyGuiControlBase control)\n        {\n            Vector2? size = control.GetSize();\n            if (size != null)\n            {\n                Vector2 min = control.GetPosition() - size.Value / 2;\n                Vector2 max = control.GetPosition() + size.Value / 2;\n                Vector2 mousePosition = MyGuiManager.MouseCursorPosition - GetPosition();\n\n                return (mousePosition.X >= min.X && mousePosition.X <= max.X &&\n                        mousePosition.Y >= min.Y && mousePosition.Y <= max.Y);\n            }\n            else\n            {\n                return false;\n            }\n        }\n\n        protected bool IsMouseOver()\n        {\n            Vector2 borderOffsetTopLeft = new Vector2(0.07f, 0.05f);\n            Vector2 borderOffsetBottomRight = new Vector2(0.07f, 0.1f);\n            Vector2 min = m_position - m_size.Value / 2 + borderOffsetTopLeft;\n            Vector2 max = m_position + m_size.Value / 2 - borderOffsetBottomRight;\n\n            return (MyGuiManager.MouseCursorPosition.X >= min.X && MyGuiManager.MouseCursorPosition.X <= max.X && \n                MyGuiManager.MouseCursorPosition.Y >= min.Y && MyGuiManager.MouseCursorPosition.Y <= max.Y);\n        }\n\n        public virtual void HandleUnhandledInput(MyGuiInput input, bool receivedFocusInThisUpdate)\n        {\n            // by calling this we are soure that no control handled input already \n            if (m_windowIsMovable)\n            {\n                if (input.IsNewLeftMousePressed() && IsMouseOver())\n                {\n                    m_draged = true;\n                    m_mouseDragEntryPoint = new Vector2(MyGuiManager.MouseCursorPosition.X, MyGuiManager.MouseCursorPosition.Y);\n                    //KeenSoftwareHouse.Library.Trace.Trace.SendMsgLastCall(\"drag\");\n                }\n\n                if (input.IsLeftMousePressed() && m_draged)\n                {\n\n                    Vector2 newMousePoint = new Vector2(MyGuiManager.MouseCursorPosition.X, MyGuiManager.MouseCursorPosition.Y);\n                    Vector2 deltaPos = newMousePoint - m_mouseDragEntryPoint;\n                    //KeenSoftwareHouse.Library.Trace.Trace.SendMsgLastCall( deltaPos.ToString() );\n\n                    m_mouseDragEntryPoint = newMousePoint;\n                    m_position += deltaPos;\n                    \n                }\n\n                if (input.IsNewLeftMouseReleased())\n                {\n                    m_draged = false;\n                    //KeenSoftwareHouse.Library.Trace.Trace.SendMsgLastCall(\"undrag\");\n                }\n            }        \n        }\n\n        /// <summary>\n        /// Called when user presses ESC or clicks on CANCEL - hook to this method so you can do gui-screen-specific event\n        /// </summary>\n        protected virtual void Canceling()\n        {\n            Canceled = true;\n            MySoundCuesEnum cancelEnum = m_closingCueEnum.HasValue ? m_closingCueEnum.Value : MySoundCuesEnum.GuiMouseClick;\n            MyAudio.AddCue2D(cancelEnum);\n            CloseScreen();\n        }\n\n        protected void AddCaption(MyTextsWrapperEnum textEnum, Vector2? captionOffset = null, float captionScale = MyGuiConstants.SCREEN_CAPTION_TEXT_SCALE)\n        {\n            AddCaption(textEnum, MyGuiConstants.SCREEN_CAPTION_TEXT_COLOR, captionOffset, captionScale);\n        }\n\n        protected void AddCaption(MyTextsWrapperEnum textEnum, Vector4 captionTextColor, Vector2? captionOffset = null, float captionScale = MyGuiConstants.SCREEN_CAPTION_TEXT_SCALE)\n        {\n            Controls.Add(new MyGuiControlLabel(this, \n                new Vector2(0, -m_size.Value.Y / 2.0f + MyGuiConstants.SCREEN_CAPTION_DELTA_Y) + (captionOffset != null ? captionOffset.Value : Vector2.Zero),\n                null, textEnum, captionTextColor, captionScale,\n                MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER,MyGuiManager.GetFontMinerWarsBlue()));\n        }\n\n        protected void AddCaption(System.Text.StringBuilder text, Vector4 captionTextColor, Vector2? captionOffset = null, float captionScale = MyGuiConstants.SCREEN_CAPTION_TEXT_SCALE)\n        {\n            Controls.Add(new MyGuiControlLabel(this,\n                new Vector2(0, -m_size.Value.Y / 2.0f + MyGuiConstants.SCREEN_CAPTION_DELTA_Y) + (captionOffset != null ? captionOffset.Value : Vector2.Zero),\n                null, text, captionTextColor, captionScale,\n                MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER));\n        }\n\n        protected void DrawMinerWarsLogo()\n        {\n            if (m_minerWarsLogoTexture != null)\n            {\n                //  Miner Wars logo\n                Color colorForeground = new Color(new Vector4(1, 1, 1, 0.85f * m_transitionAlpha));\n                MyGuiManager.DrawSpriteBatch(m_minerWarsLogoTexture, new Vector2(0.5f, 0.15f),\n                                             new Vector2(1218/1600f, 355/1200f), colorForeground,\n                                             MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER);\n            }\n        }\n\n        /*protected void DrawActorsPhotos()\n        {\n            if (m_minerWarsActorsTexture != null)\n            {\n                //  Miner Wars actors\n                Color colorForeground = new Color(new Vector4(1, 1, 1, 1f * m_transitionAlpha));\n\n                MyGuiManager.DrawSpriteBatch(m_minerWarsActorsTexture, new Vector2(1.1f, -0.01f),\n                                             new Vector2(323.3f / 1600f, 394.4f / 1200f), colorForeground,\n                                             MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_TOP);\n            }\n        }*/\n\n        protected void DrawAppVersion()\n        {\n            Vector2 textRightBottomPosition = MyGuiManager.GetScreenTextRightBottomPosition();\n            textRightBottomPosition.X -= 0.03f;\n            textRightBottomPosition.Y -= 0.06f;\n            MyGuiManager.DrawString(MyGuiManager.GetFontMinerWarsBlue(), APP_VERSION, textRightBottomPosition, MyGuiConstants.APP_VERSION_TEXT_SCALE,\n                new Color(MyGuiConstants.LABEL_TEXT_COLOR * m_transitionAlpha), MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_BOTTOM);\n\n            textRightBottomPosition.Y += 0.03f;\n            MyGuiManager.DrawString(MyGuiManager.GetFontMinerWarsBlue(), UNOFFICIAL_MOD, textRightBottomPosition, MyGuiConstants.APP_VERSION_TEXT_SCALE,\n                new Color(MyGuiConstants.LABEL_TEXT_COLOR * m_transitionAlpha), MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_BOTTOM);\n        }\n\n        protected void DrawGlobalVersionText()\n        {\n            //  Text \"TEST BUILD\"\n            Color colorBuildType = new Color(230, 230, 230, 230) * m_transitionAlpha;\n            Vector2 textRightBottomPosition = MyGuiManager.GetScreenTextRightBottomPosition();\n            textRightBottomPosition.X -= 0.03f;\n            textRightBottomPosition.Y -= 0.01f;\n            Vector2 position = textRightBottomPosition;\n\n            if (MyMwcFinalBuildConstants.IS_PUBLIC)\n            {\n                // There's no text for public\n                //MyGuiManager.DrawString(MyGuiManager.GetFontMinerWarsBlue(), MyTextsWrapper.Get(MyTextsWrapperEnum.xxx),\n                //      position, MyGuiConstants.APP_GLOBAL_TEXT_SCALE, new Color(MyGuiConstants.LABEL_TEXT_COLOR * m_transitionAlpha)/*colorBuildType*/, MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_BOTTOM);\n            }\n            else if (MyMwcFinalBuildConstants.IS_TEST)\n            {\n                MyGuiManager.DrawString(MyGuiManager.GetFontMinerWarsBlue(), MyTextsWrapper.Get(MyTextsWrapperEnum.TestBuild),\n                        position, MyGuiConstants.APP_GLOBAL_TEXT_SCALE, new Color(MyGuiConstants.LABEL_TEXT_COLOR * m_transitionAlpha), MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_BOTTOM);\n            }\n            else if (MyMwcFinalBuildConstants.IS_DEVELOP)\n            {\n                MyGuiManager.DrawString(MyGuiManager.GetFontMinerWarsBlue(), MyTextsWrapper.Get(MyTextsWrapperEnum.DevelopBuild),\n                        position, MyGuiConstants.APP_GLOBAL_TEXT_SCALE, new Color(MyGuiConstants.LABEL_TEXT_COLOR * m_transitionAlpha), MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_BOTTOM);\n            }\n            else\n            {\n                throw new SysUtils.Utils.MyMwcExceptionApplicationShouldNotGetHere();\n            }\n        }\n\n        //  This will tell us if LoadContent was finished so we can start using this screen\n        //  It's used only for screens that have huge LoadContent - e.g. game play screen. Other don't have to use it.\n        public bool IsLoaded\n        {\n            set\n            {\n                lock (m_isLoadedLock)\n                {\n                    m_isLoaded = value;\n                }\n            }\n            \n            get\n            {\n                bool ret;\n                lock (m_isLoadedLock)\n                {\n                    ret = m_isLoaded;\n                }\n                return ret;\n            }\n        }\n\n        public float GetTransitionAlpha()\n        {\n            return m_transitionAlpha;\n        }\n\n        public Vector2 GetPosition()\n        {\n            return m_position;\n        }\n\n        //  Use this for closing/quiting/existing screens\n        //  Returns true or false to let child implementation know if it has to run its own version of close. It's because this method\n        //  should be called only once (when screen starts closing) and then never.\n        //  This will close screen with fade-out effect\n        public virtual bool CloseScreen()\n        {\n            if ((m_state == MyGuiScreenState.CLOSING) || (m_state == MyGuiScreenState.CLOSED))\n            {\n                return false;\n            }\n            else\n            {\n                m_state = MyGuiScreenState.CLOSING;\n                m_lastTransitionTime = MyMinerGame.TotalTimeInMilliseconds;\n                return true;\n            }\n        }\n\n        // Used in case, when screen is not closing, but needs to be transitioned out\n        public virtual bool HideScreen()\n        {\n            if ((m_state == MyGuiScreenState.HIDING) || (m_state == MyGuiScreenState.HIDDEN) || (m_state == MyGuiScreenState.OPENING))\n            {\n                return false;\n            }\n            else\n            {\n                m_state = MyGuiScreenState.HIDING;\n                m_lastTransitionTime = MyMinerGame.TotalTimeInMilliseconds;\n                return true;\n            }\n        }\n\n        // Used in case, when screen is hidden, and needs to be transitioned in\n        public virtual bool UnhideScreen()\n        {\n            if ((m_state == MyGuiScreenState.UNHIDING) || (m_state == MyGuiScreenState.OPENED))\n            {\n                return false;\n            }\n            else\n            {\n                m_state = MyGuiScreenState.UNHIDING;\n                m_lastTransitionTime = MyMinerGame.TotalTimeInMilliseconds;\n                return true;\n            }\n        }\n\n        //  This will close/remove screen instantly, without fade-out effect\n        public virtual void CloseScreenNow()\n        {\n            if (m_state == MyGuiScreenState.CLOSED)\n            {\n                return;\n            }\n            \n            m_state = MyGuiScreenState.CLOSED;\n            \n            //  Notify GUI manager that this screen should be removed from the list\n            RemoveScreen(this);\n\n            OnClosed();\n\n            if (Closed != null)\n            {\n                Closed(this);\n            }\n        }\n\n        //// Used in case, when new screen is added to hide tooltips of other screens\n        //public void HideTooltips()\n        //{\n        //    Controls.HideTooltips();\n        //}\n\n        //  Returns true or false to let child implementation know if it has to run its own version of draw.\n        public virtual bool Update(bool hasFocus)\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"GuiScreenBase\");\n\n            UpdateTransition();\n            //FillControlsResurcive();\n            UpdateControls();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            return true;\n        }\n\n        void UpdateTransition()\n        {\n            if (m_state == MyGuiScreenState.OPENING || m_state == MyGuiScreenState.UNHIDING)\n            {\n                int deltaTime = MyMinerGame.TotalTimeInMilliseconds - m_lastTransitionTime;\n\n                // Play opening sound\n                if (m_state == MyGuiScreenState.OPENING && m_openingCueEnum != null && m_openingCue == null) m_openingCue = MyAudio.AddCue2D(m_openingCueEnum.Value);\n\n                if (deltaTime >= GetTransitionOpeningTime())\n                {\n                    //  Opening phase finished, we are now in active state\n                    m_state = MyGuiScreenState.OPENED;\n                    m_transitionAlpha = MyGuiConstants.TRANSITION_ALPHA_MAX;\n                    m_openingCue = null;\n\n                    OnShow();\n                }\n                else\n                {\n                    m_transitionAlpha = MathHelper.Lerp(MyGuiConstants.TRANSITION_ALPHA_MIN, MyGuiConstants.TRANSITION_ALPHA_MAX, MathHelper.Clamp((float)deltaTime / (float)GetTransitionOpeningTime(), 0, 1));\n                }\n            }\n            else if (m_state == MyGuiScreenState.CLOSING || m_state == MyGuiScreenState.HIDING)\n            {\n                int deltaTime = MyMinerGame.TotalTimeInMilliseconds - m_lastTransitionTime;\n\n                if (deltaTime >= GetTransitionClosingTime())\n                {\n                    m_transitionAlpha = MyGuiConstants.TRANSITION_ALPHA_MIN;\n\n                    //  Closing phase finished, we are now in close state\n                    if (m_state == MyGuiScreenState.CLOSING)\n                    {\n                        CloseScreenNow();\n                    }\n                    else if (m_state == MyGuiScreenState.HIDING)\n                    {\n                        m_state = MyGuiScreenState.HIDDEN;\n\n                        OnHide();\n                    }\n                }\n                else\n                {\n                    //  While closing this screen, check if there is some screen that should unhide now, so that alpha transition goes in parallel with this screen\n                    if (m_state == MyGuiScreenState.CLOSING && MyGuiManager.IsAnyScreenOpening() == false && m_transitionAlpha == 1.0f)\n                    {\n                        MyGuiScreenBase topHiddenScreen = MyGuiManager.GetTopHiddenScreen();\n                        if (topHiddenScreen != null)\n                        {\n                            topHiddenScreen.UnhideScreen();\n                        }\n                    }\n                    m_transitionAlpha = MathHelper.Lerp(MyGuiConstants.TRANSITION_ALPHA_MAX, MyGuiConstants.TRANSITION_ALPHA_MIN, MathHelper.Clamp((float)deltaTime / (float)GetTransitionClosingTime(), 0, 1));\n                }\n            }\n        }\n\n        /// <summary>\n        /// Called when [show].\n        /// </summary>\n        protected virtual void OnShow() {}\n\n        /// <summary>\n        /// Called when [show].\n        /// </summary>\n        protected virtual void OnHide() {}\n\n        /// <summary>\n        /// Called when [show].\n        /// </summary>\n        protected virtual void OnClosed() {}\n\n        //  Changes color according to transition alpha, this when opening the screen - it from 100% transparent to 100% opaque. When closing it's opposite.\n        protected Color GetColorAfterTransitionAlpha(Vector4 color)\n        {\n            Vector4 ret = color;\n            ret.W *= m_transitionAlpha;\n            return new Color(ret);\n        }\n\n        ////  Inverse of GetColorAfterTransitionAlpha\n        //protected Color GetColorAfterTransitionInverseAlpha(Vector4 color)\n        //{\n        //    Vector4 ret = color;\n        //    ret.W *= 1 - m_transitionAlpha;\n        //    return new Color(ret);\n        //}\n\n        public bool GetEnableBackgroundFade()\n        {\n            return m_enableBackgroundFade;\n        }\n\n        //  Returns true or false to let child implementation know if it has to run its own version of draw.\n        public virtual bool Draw(float backgroundFadeAlpha)\n        {\n            //  If this screen has focus and there are other screens too, draw large black-transparent rectangle below it, so all other screens will look darker\n            //  Only one screen can draw this sort of background, and it is always top-most screen!\n            //if ((hasFocus == true) && (MyGuiManager.GetScreensCount() > 1))\n            //if (MyGuiManager.GetScreensCount() > 1)\n            if (backgroundFadeAlpha > 0)\n            {\n                Vector4 fadeColorVec = m_backgroundFadeColor;\n                fadeColorVec.W *= backgroundFadeAlpha;\n                if (m_backgroundColor.HasValue)\n                {\n                    fadeColorVec.X *= m_backgroundColor.Value.X;\n                    fadeColorVec.Y *= m_backgroundColor.Value.Y;\n                    fadeColorVec.Z *= m_backgroundColor.Value.Z;\n                }\n                Color fadeColor = new Color(fadeColorVec);\n\n                //  Blank background fade\n                MyGuiManager.DrawSpriteBatch(MyGuiManager.GetBlankTexture(), new Rectangle(0, 0, MyMinerGame.ScreenSize.X, MyMinerGame.ScreenSize.Y), fadeColor);\n            }\n\n            //  This is just background of the screen rectangle\n            if ((m_backgroundColor.HasValue) && (m_size.HasValue))\n            {\n                //  Background texture\n                if (m_backgroundTexture == null)\n                {\n                    if (m_size.HasValue)\n                    {\n                        //  If this screen doesn't have custom texture, we will use one of the default - but with respect to screen's aspect ratio\n                        m_backgroundTexture = MyTextureManager.GetTexture<MyTexture2D>(MyGuiManager.GetBackgroundTextureFilenameByAspectRatio(m_size.Value), loadingMode: LoadingMode.LazyBackground);\n                    }\n                }\n\n                MyGuiManager.DrawSpriteBatch(m_backgroundTexture, m_position, m_size.Value, GetColorAfterTransitionAlpha(m_backgroundColor.Value), MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER);\n            }\n\n            DrawControls();\n            //DrawControlsFinal();\n\n            return true;\n        }\n\n        public Vector2? GetSize()\n        {\n            return m_size;\n        }\n\n        public bool CanHaveFocus()\n        {\n            return m_canHaveFocus;\n        }\n\n        public bool CanShareInput()\n        {\n            return m_canShareInput;\n        }\n\n        public bool CanHide()\n        {\n            return m_screenCanHide;\n        }\n\n        public bool CanCloseInCloseAllScreenCalls()\n        {\n            return m_canCloseInCloseAllScreenCalls;\n        }\n\n        public virtual void RecreateControls(bool contructor)\n        {\n        }\n\n        public virtual int GetTransitionOpeningTime()\n        {\n            if (SkipTransition) return 0;\n            return MyGuiConstants.TRANSITION_OPENING_TIME;\n        }\n\n        public virtual int GetTransitionClosingTime()\n        {\n            if (SkipTransition) return 0;\n            return MyGuiConstants.TRANSITION_CLOSING_TIME;\n        }        \n\n        public MyGuiControls Controls\n        {\n            get { return m_controls; }\n        }\n\n        public IList<MyGuiControlBase> GetList()\n        {\n            return m_controls.GetList();\n        }\n\n\n        public Vector2 GetPositionAbsolute()\n        {\n            return m_position;\n        }\n\n        private void FillControlsResurcive()\n        {\n            m_controlsQueue.Clear();\n            m_controlsAll.Clear();\n            m_controlsVisible.Clear();\n            foreach (MyGuiControlBase control in Controls.GetList())\n            {\n                m_controlsQueue.Enqueue(control);\n            }\n\n            while(m_controlsQueue.Count > 0)\n            {\n                MyGuiControlBase control = m_controlsQueue.Dequeue();\n                m_controlsAll.Add(control);\n                if(control.Visible)\n                {\n                    m_controlsVisible.Add(control);\n                }\n                if(control is IMyGuiControlsParent)\n                {\n                    foreach (MyGuiControlBase childControl in ((IMyGuiControlsParent)control).Controls.GetList())\n                    {\n                        m_controlsQueue.Enqueue(childControl);\n                    }\n                }\n            }\n        }\n\n        private void UpdateControls()\n        {\n            //  Update screen controls\n            for (int i = 0; i < m_controlsAll.Count; i++)\n            {\n                MyGuiControlBase control = m_controlsAll[i];\n                control.Update();\n            }\n\n            m_comboboxHandlingNow = GetComboboxHandlingInputNow();\n            m_listboxDragAndDropHandlingNow = GetDragAndDropHandlingNow();\n        }        \n\n        private bool HandleControlsInput(MyGuiInput input, bool receivedFocusInThisUpdate)\n        {\n            MyGuiControlBase inputHandledBySomeControl = null;\n\n            if (m_lastHandlingControl != null && m_lastHandlingControl.Visible) \n            {\n                if (m_lastHandlingControl.HandleInput(input, m_controlsAll.IndexOf(m_lastHandlingControl) == m_keyboardControlIndex, m_controlsAll.IndexOf(m_lastHandlingControl) == m_keyboardControlIndexPrevious, receivedFocusInThisUpdate) == true) \n                {\n                    inputHandledBySomeControl = m_lastHandlingControl;\n                }\n            }\n\n            if (inputHandledBySomeControl == null && m_listboxDragAndDropHandlingNow != null)\n            {\n                if (m_listboxDragAndDropHandlingNow.HandleInput(input, m_controlsAll.IndexOf(m_listboxDragAndDropHandlingNow) == m_keyboardControlIndex, m_controlsAll.IndexOf(m_listboxDragAndDropHandlingNow) == m_keyboardControlIndexPrevious, receivedFocusInThisUpdate) == true)\n                {\n                    inputHandledBySomeControl = m_listboxDragAndDropHandlingNow;\n                }\n            }\n\n            if (inputHandledBySomeControl == null && m_comboboxHandlingNow != null)\n            {                \n                if (m_comboboxHandlingNow.HandleInput(input, m_controlsAll.IndexOf(m_comboboxHandlingNow) == m_keyboardControlIndex, m_controlsAll.IndexOf(m_comboboxHandlingNow) == m_keyboardControlIndexPrevious, receivedFocusInThisUpdate) == true)\n                {\n                    inputHandledBySomeControl = m_comboboxHandlingNow;\n                }                \n            }\n\n            //  If opened combobox didn't capture the input, we will try to handle it in remaining controls\n            if (inputHandledBySomeControl == null)\n            {\n                for (int i = 0; i < m_controlsAll.Count; i++)\n                {\n                    MyGuiControlBase control = m_controlsAll[i];\n                    if (control != m_comboboxHandlingNow && control != m_listboxDragAndDropHandlingNow && control.Visible)\n                    {\n                        if (control.HandleInput(input, i == m_keyboardControlIndex, i == m_keyboardControlIndexPrevious, receivedFocusInThisUpdate) == true)\n                        {\n                            inputHandledBySomeControl = control;\n                            break;\n                        }\n                    }\n                }\n            }\n\n            m_keyboardControlIndexPrevious = m_keyboardControlIndex;\n\n            if (inputHandledBySomeControl != null)\n            {\n                m_keyboardControlIndex = m_controlsAll.IndexOf(inputHandledBySomeControl);\n                m_keyboardControlIndexPrevious = m_keyboardControlIndex;    //  We need to reset it, otherwise we will hear two mouseover sounds!!!\n            }\n\n            m_lastHandlingControl = inputHandledBySomeControl;\n\n            return inputHandledBySomeControl != null;\n        }\n\n        //  Moves active keyboard index to the next control, or previous control, or first control on the screen that can accept it\n        //  forwardMovement -> set to TRUE when you want forward movement, set to FALSE when you wasnt backward\n        protected bool HandleKeyboardActiveIndex(bool forwardMovement)\n        {\n            if (m_controlsAll.Count <= 0) return false;\n\n            //  This is for making sure we won't end in infinite loop when screen doesn't contain controls we need\n            int infinityProtectionCounter = 0;\n\n            int sign = (forwardMovement == true) ? +1 : -1;\n            //m_tempControlIndex = m_keyboardControlIndex;\n            int tempControlIndex = m_keyboardControlIndex;\n\n            while (true)\n            {\n                //  Increase or decrease and than check ranges and do sort of overflow\n                tempControlIndex += sign;\n                if (tempControlIndex > (m_controlsAll.Count - 1)) tempControlIndex = 0;\n                if (tempControlIndex < 0) tempControlIndex = m_controlsAll.Count - 1;\n\n                // Skip disabled controls\n                if (m_controlsAll[tempControlIndex].CanHandleKeyboardActiveControl() && m_controlsAll[tempControlIndex].Enabled && m_controlsAll[tempControlIndex].Visible)\n                {\n                    //m_keyboardControlIndex = m_tempControlIndex;\n                    m_keyboardControlIndex = tempControlIndex;\n                    return true;\n                }\n                //  This is for making sure we won't end in infinite loop when screen doesn't contain controls we need\n                infinityProtectionCounter++;\n                if (infinityProtectionCounter > m_controlsAll.Count) return false;\n            }\n        }\n\n        private void DrawControls()\n        {\n            //  Then draw all screen controls, except opened combobox and drag and drop - must be drawn as last\n            // foreach (MyGuiControlBase control in Controls.GetVisibleControls())  //dont use this - allocations\n            List<MyGuiControlBase> visibleControls = Controls.GetVisibleControls();\n            for (int i = 0; i < visibleControls.Count; i++)\n            {\n                MyGuiControlBase control = visibleControls[i];\n                if (control != m_comboboxHandlingNow && control != m_listboxDragAndDropHandlingNow)\n                {\n                    if (MyMinerGame.IsPaused() && !control.DrawWhilePaused) continue;\n                    control.Draw();\n                }\n            }\n\n            //  Finaly draw opened combobox and dragAndDrop, so it will overdraw all other controls\n\n            if (m_comboboxHandlingNow != null)\n            {\n                m_comboboxHandlingNow.Draw();\n            }\n\n            if (m_listboxDragAndDropHandlingNow != null)\n            {\n                m_listboxDragAndDropHandlingNow.Draw();\n            }\n\n            // draw tooltips only when screen has focus\n            if (this == MyGuiManager.GetScreenWithFocus())\n            {\n                //  Draw tooltips\n                for (int i = 0; i < m_controlsVisible.Count; i++)\n                {\n                    MyGuiControlBase control = m_controlsVisible[i];\n                    control.ShowToolTip();\n                    if (MyFakes.CONTROLS_MOVE_ENABLED && MyGuiManager.GetInput().IsKeyPress(Keys.M))\n                    {\n                        DrawControlDebugPosition(control);\n                    }\n                }\n            }\n        }\n\n        // Used in case, when new screen is added to hide tooltips of other screens\n        public void HideTooltips()\n        {\n            foreach (var control in m_controlsAll)\n            {\n                control.HideToolTip();\n            }\n        }\n\n        //  Returns true or false to let child implementation know if it has to run its own version of draw.\n        public bool IsMouseOverAnyControl()\n        {\n            //  Update screen controls\n            for (int i = m_controlsVisible.Count - 1; i >= 0; i--)\n            {\n                if (m_controlsVisible[i].IsMouseOver()) return true;\n            }\n\n            return false;\n        }\n\n        //  Returns true if any control contains mouse\n        public bool AnyControlContainsMouse()\n        {\n            //  Update screen controls\n            for (int i = m_controlsVisible.Count - 1; i >= 0; i--)\n            {\n                if (m_controlsVisible[i].ContainsMouse()) return true;\n            }\n\n            return false;\n        }\n\n        // Returns first control, which has mouse over\n        public MyGuiControlBase GetMouseOverControl()\n        {\n            //  Update screen controls\n            for (int i = m_controlsVisible.Count - 1; i >= 0; i--)\n            {\n                if (m_controlsVisible[i].IsMouseOver()) return m_controlsVisible[i];\n            }\n\n            return null;\n        }\n\n        public MyGuiControlBase GetControlUnderMouseCursor()\n        {\n            //  Update screen controls\n            for (int i = m_controlsVisible.Count - 1; i >= 0; i--)\n            {\n                if (IsControlUnderCursor(m_controlsVisible[i])) return m_controlsVisible[i];\n            }\n\n            return null;\n        }\n\n        //StringBuilder m_drawPositionSb = new StringBuilder();\n        private void DrawControlDebugPosition(MyGuiControlBase control)\n        {\n            m_drawPositionSb.Clear();\n            m_drawPositionSb.Append(\"[\");\n            m_drawPositionSb.Append(control.GetPosition().X.ToString(\"0.0000\"));\n            m_drawPositionSb.Append(\",\");\n            m_drawPositionSb.Append(control.GetPosition().Y.ToString(\"0.0000\"));\n            m_drawPositionSb.Append(\"]\");\n            float scale = 0.7f;\n            Vector2 size = MyGuiManager.GetNormalizedSizeFromScreenSize(MyGuiManager.GetFontMinerWarsBlue().MeasureString(m_drawPositionSb, scale));\n            Vector4 color = new Vector4(0f, 0f, 0f, 0.5f);\n\n            MyGuiManager.DrawSpriteBatch(MyGuiManager.GetBlankTexture(), control.GetPosition() + control.GetParent().GetPositionAbsolute(),\n                                         size, new Color(color),\n                                         MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER);\n\n            MyGuiManager.DrawString(MyGuiManager.GetFontMinerWarsBlue(),\n                                                m_drawPositionSb,\n                                                control.GetPosition() + control.GetParent().GetPositionAbsolute(), scale,\n                                                Color.Green,\n                                                MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER);\n        }\n\n        MyGuiControlListboxDragAndDrop GetDragAndDropHandlingNow()\n        {\n            for (int i = 0; i < m_controlsVisible.Count; i++)\n            {\n                MyGuiControlBase control = m_controlsVisible[i];\n\n                if (control is MyGuiControlListboxDragAndDrop)\n                {\n                    MyGuiControlListboxDragAndDrop tempDragAndDrop = (MyGuiControlListboxDragAndDrop)control;\n                    if (tempDragAndDrop.IsActive())\n                    {\n                        return tempDragAndDrop;\n                    }\n                }\n            }\n\n            //  Not found\n            return null;\n        }\n\n        MyGuiControlCombobox GetComboboxHandlingInputNow()\n        {\n            for (int i = 0; i < m_controlsVisible.Count; i++)\n            {\n                MyGuiControlBase control = m_controlsVisible[i];\n\n                if (control is MyGuiControlCombobox)\n                {\n                    MyGuiControlCombobox tempCombobox = (MyGuiControlCombobox)control;\n                    if (tempCombobox.IsHandlingInputNow() == true)\n                    {\n                        foreach (MyGuiControlBase c in m_controlsAll)\n                        {\n                            if (c is MyGuiControlCombobox && c != control)\n                            {\n                                ((MyGuiControlCombobox)c).SetKeyboardActiveControl(false);\n                            }\n                        }\n                        return tempCombobox;\n                    }\n                }\n            }\n\n            //  Not found\n            return null;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Core/MyGuiScreenLogo.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.Managers;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Toolkit.Input;\n\nnamespace MinerWars.AppCode.Game.GUI.Core\n{\n    class MyGuiScreenLogo: MyGuiScreenBase\n    {\n        private int? m_startTime;\n        private string m_textureName;\n        private MyTexture2D m_texture;\n\n        private int m_fadeIn, m_fadeOut, m_openTime;\n        private float m_scale;\n\n        /// <summary>\n        /// Time in ms\n        /// </summary>\n        public MyGuiScreenLogo(string texture, float scale = 0.66f, int fadeIn = 300, int fadeOut = 300, int openTime = 300)\n            : base(new Vector2(0.5f, 0.5f), MyGuiConstants.SCREEN_BACKGROUND_COLOR, Vector2.One)\n        {\n            this.m_scale = scale;\n            this.m_fadeIn = fadeIn;\n            this.m_fadeOut = fadeOut;\n            this.m_openTime = openTime;\n            DrawMouseCursor = false;\n            m_textureName = texture;\n            m_closeOnEsc = true;\n        }\n\n        public override bool CanHandleInputDuringTransition()\n        {\n            return true;\n        }\n\n        public override void LoadContent()\n        {\n            m_texture = MyTextureManager.GetTexture<MyTexture2D>(m_textureName, flags: TextureFlags.IgnoreQuality);\n            base.LoadContent();\n        }\n\n        public override void UnloadContent()\n        {\n            if (m_texture != null)\n            {\n                MyTextureManager.UnloadTexture(m_texture);\n            }\n            base.UnloadContent();\n        }\n\n        protected override void Canceling()\n        {\n            this.m_fadeOut = 0;\n            base.Canceling();\n        }\n\n        public override void HandleInput(MyGuiInput input, bool receivedFocusInThisUpdate)\n        {\n            base.HandleInput(input, receivedFocusInThisUpdate);\n\n            if (input.IsNewLeftMousePressed() || input.IsNewRightMousePressed() || input.IsNewKeyPress(Keys.Space) || input.IsNewKeyPress(Keys.Enter))\n                Canceling();\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"Logo screen\";\n        }\n\n        public override int GetTransitionOpeningTime()\n        {\n            return m_fadeIn;\n        }\n\n        public override int GetTransitionClosingTime()\n        {\n            return m_fadeOut;\n        }\n\n        public override bool Draw(float backgroundFadeAlpha)\n        {\n            Rectangle backgroundRectangle;\n            MyGuiManager.GetSafeAspectRatioFullScreenPictureSize(MyGuiConstants.LOADING_BACKGROUND_TEXTURE_REAL_SIZE, out backgroundRectangle);\n\n            backgroundRectangle.Inflate(-(int)(backgroundRectangle.Width * (1-m_scale) / 2), -((int)(backgroundRectangle.Height * (1-m_scale) / 2)));\n            MyGuiManager.DrawSpriteBatch(m_texture, backgroundRectangle, new Color(new Vector4(0.95f, 0.95f, 0.95f, m_transitionAlpha)));\n            return true;\n        }\n\n        public override bool Update(bool hasFocus)\n        {\n            if (base.Update(hasFocus) == false) return false;\n\n            if(GetState() == MyGuiScreenState.OPENED && !m_startTime.HasValue)\n                m_startTime = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n\n            if (m_startTime.HasValue && MyMinerGame.TotalGamePlayTimeInMilliseconds > (m_startTime + m_openTime))\n                this.CloseScreen();\n\n            return true;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Core/MyGuiScreenMasterServiceCallProgress.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Networking.MasterService;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.World;\n\nnamespace MinerWars.AppCode.Game.GUI.Core\n{\n    abstract class MyGuiScreenMasterServiceCallProgress : MyGuiScreenProgressBaseAsync<MyMasterServiceClient>\n    {\n        protected MyGuiScreenMasterServiceCallProgress(MyTextsWrapperEnum progressText, bool enableCancel)\n            : base(progressText, enableCancel)\n        {\n        }\n\n        protected abstract void ServiceProgressStart(MyMasterServiceClient client);\n\n        public void SetPublicCredentials()\n        {\n            MyMasterServiceClient.SetCredentials(MyMwcNetworkingConstants.WCF_MS_PUBLIC_USERNAME, MyMwcNetworkingConstants.WCF_MS_PUBLIC_PASSWORD);\n        }\n\n        public void SetUserCredentials()\n        {\n            if (MyClientServer.LoggedPlayer != null)\n            {\n                MyMasterServiceClient.SetCredentials(MyClientServer.LoggedPlayer.UserName.ToString(), MyClientServer.LoggedPlayer.PasswordHash.ToString());\n            }\n        }\n\n        // This method is sealed, never called, childs implements ServiceProgressStart\n        protected sealed override void ProgressStart()\n        {\n            MyMasterServiceClient client = null;\n\n            try\n            {\n                client = MyMasterServiceClient.GetCheckedInstance();\n                ServiceProgressStart(client);\n            }\n            catch (Exception e)\n            {\n                OnError(e, client);\n            }\n        }\n\n        // Default errror handling is changed\n        protected override void OnError(Exception exception, MyMasterServiceClient asyncState)\n        {\n            HandleSectorServiceError(exception, asyncState);\n        }\n\n        protected void HandleSectorServiceError(Exception exception, MyMasterServiceClient client)\n        {\n            // abort connection (reconnect will restore connection after few seconds\n            client.Abort();\n            MyMwcLog.WriteLine(exception); // log exception\n\n            // Show error dialog and go to main menu\n            MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.PleaseTryAgain, MyTextsWrapperEnum.MessageBoxNetworkErrorCaption, MyTextsWrapperEnum.Ok, null));\n            CloseScreen();\n            MyGuiManager.BackToMainMenu();\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Core/MyGuiScreenPerformanceWarning.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.Managers;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Toolkit.Input;\nusing MinerWars.AppCode.Game.Localization;\n\nnamespace MinerWars.AppCode.Game.GUI.Core\n{\n    class MyGuiScreenPerformanceWarning: MyGuiScreenBase\n    {\n        private MyTexture2D m_texture;\n\n        MyGuiScreenLoading m_loading;\n\n        MyGuiControlMultilineText m_warningText1;\n        MyGuiControlMultilineText m_warningText2;\n        MyGuiControlMultilineText m_warningText3;\n        MyGuiControlMultilineText m_warningText4;\n        MyGuiControlMultilineText m_warningText5;\n        MyGuiControlMultilineText m_warningText6;\n\n        MyGuiControlButton m_button;\n\n        float m_scale = 1.0f;\n\n        /// <summary>\n        /// Time in ms\n        /// </summary>\n        public MyGuiScreenPerformanceWarning(MyGuiScreenLoading loading)\n            : base(new Vector2(0.5f, 0.5f), MyGuiConstants.SCREEN_BACKGROUND_COLOR, Vector2.One)\n        {\n            DrawMouseCursor = true;\n            m_closeOnEsc = false;\n            m_loading = loading;\n        }\n\n        public MyGuiScreenLoading LoadingScreen\n        {\n            get { return m_loading; }\n        }\n\n        public override bool CanHandleInputDuringTransition()\n        {\n            return true;\n        }\n\n        public override void LoadContent()\n        {\n            m_texture = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\BackgroundScreen\\\\PerformanceBackground\", flags: TextureFlags.IgnoreQuality);\n\n            float scale = 1.2f;\n\n            m_warningText1 = new MyGuiControlMultilineText(\n            this,\n            new Vector2(0.245f, -0.09f),\n            new Vector2(1.0f, 0.5f),\n            Vector4.Zero,\n            MyGuiManager.GetFontMinerWarsWhite(), scale,\n            MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP,\n            MyTextsWrapper.Get(MyTextsWrapperEnum.PerfWarning1_0), false, true);\n\n\n            m_warningText2 = new MyGuiControlMultilineText(\n            this,\n            new Vector2(0.215f, -0.04f),\n            new Vector2(1.0f, 0.5f),\n            Vector4.Zero,\n            MyGuiManager.GetFontMinerWarsWhite(), scale,\n            MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP,\n            new StringBuilder(), false, true);\n            m_warningText2.AppendText(MyTextsWrapper.Get(MyTextsWrapperEnum.PerfWarning2_0), MyGuiManager.GetFontMinerWarsBlue(), scale, Vector4.One);\n\n\n\n            m_warningText3 = new MyGuiControlMultilineText(\n            this,\n            new Vector2(0.225f, 0.12f),\n            new Vector2(1.0f, 0.5f),\n            Vector4.Zero,\n            MyGuiManager.GetFontMinerWarsWhite(), scale,\n            MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP,\n            MyTextsWrapper.Get(MyTextsWrapperEnum.PerfWarning3_0), false, true);\n\n            m_warningText4 = new MyGuiControlMultilineText(\n            this,\n            new Vector2(0.335f, 0.17f),\n            new Vector2(1.0f, 0.5f),\n            Vector4.Zero,\n            MyGuiManager.GetFontMinerWarsWhite(), scale,\n            MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP,\n            MyTextsWrapper.Get(MyTextsWrapperEnum.PerfWarning4_0).Append(\" \"), false, true);\n            m_warningText4.AppendText(MyTextsWrapper.Get(MyTextsWrapperEnum.PerfWarning4_1).Append(\" \"), MyGuiManager.GetFontMinerWarsBlue(), scale, Vector4.One);\n            m_warningText4.AppendText(MyTextsWrapper.Get(MyTextsWrapperEnum.PerfWarning4_2).Append(\": \"), MyGuiManager.GetFontMinerWarsWhite(), scale, Vector4.One);\n            m_warningText4.AppendText(new StringBuilder(\"VRAGE\"), MyGuiManager.GetFontMinerWarsBlue(), scale, Vector4.One);\n\n\n\n            m_warningText5 = new MyGuiControlMultilineText(\n       this,\n       new Vector2(0.26f, 0.33f),\n       new Vector2(1.0f, 0.5f),\n       Vector4.Zero,\n       MyGuiManager.GetFontMinerWarsWhite(), scale,\n       MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP,\n       MyTextsWrapper.Get(MyTextsWrapperEnum.PerfWarning5_0), false, true);\n\n            m_warningText6 = new MyGuiControlMultilineText(\n          this,\n          new Vector2(0.363f, 0.38f),\n          new Vector2(1.0f, 0.5f),\n          Vector4.Zero,\n          MyGuiManager.GetFontMinerWarsWhite(), scale,\n          MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP,\n          MyTextsWrapper.Get(MyTextsWrapperEnum.PerfWarning6_0), false, true);\n\n\n\n            m_button = new MyGuiControlButton(this,\n                new Vector2(0, 0.3f),\n                new Vector2(0.25f, 0.09f),\n                new Vector4(0.8f, 0.8f, 0.8f, 1),\n                new StringBuilder(\"I UNDERSTAND\"),\n                null,\n                Vector4.One,\n                1,\n                OnButtonClick,\n                MyGuiControlButtonTextAlignment.CENTERED,\n                true,\n                MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_TOP,\n                true);\n\n            Controls.Add(m_button);\n\n            OnEnterCallback += delegate\n            {\n                CloseScreen();\n            };\n\n            base.LoadContent();\n        }\n\n        public override void UnloadContent()\n        {\n            MyTextureManager.UnloadTexture(m_texture);\n            \n            base.UnloadContent();\n        }\n\n        protected override void Canceling()\n        {\n            base.Canceling();\n        }\n\n        public override void HandleInput(MyGuiInput input, bool receivedFocusInThisUpdate)\n        {\n            base.HandleInput(input, receivedFocusInThisUpdate);\n\n           // if (input.IsNewLeftMousePressed() || input.IsNewRightMousePressed() || input.IsNewKeyPress(Keys.Space) || input.IsNewKeyPress(Keys.Enter))\n              //  Canceling();\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"Performance warning screen\";\n        }\n\n        public override bool Draw(float backgroundFadeAlpha)\n        {\n            Rectangle backgroundRectangle;\n            MyGuiManager.GetSafeAspectRatioFullScreenPictureSize(MyGuiConstants.LOADING_BACKGROUND_TEXTURE_REAL_SIZE, out backgroundRectangle);\n\n            backgroundRectangle.Inflate(-(int)(backgroundRectangle.Width * (1-m_scale) / 2), -((int)(backgroundRectangle.Height * (1-m_scale) / 2)));\n            MyGuiManager.DrawSpriteBatch(m_texture, backgroundRectangle, new Color(new Vector4(1, 1, 1, m_transitionAlpha)));\n\n          \n\n            m_warningText1.Draw();\n            m_warningText2.Draw();\n            m_warningText3.Draw();\n            m_warningText4.Draw();\n            m_warningText5.Draw();\n            m_warningText6.Draw();\n\n            m_button.Draw();\n\n            return true;\n        }\n\n        public override bool Update(bool hasFocus)\n        {\n            if (base.Update(hasFocus) == false) return false;\n\n            return true;\n        }\n\n        void OnButtonClick(MyGuiControlButton sender)\n        {\n            CloseScreen();\n        }\n\n        public override bool CloseScreen()\n        {\n            //MyConfig.NeedShowPerfWarning = false;\n            MyConfig.Save();\n\n            return base.CloseScreen();\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Core/MyGuiScreenProgressBase.cs",
    "content": "﻿using MinerWarsMath;\nusing MinerWarsMath.Graphics;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Textures;\n\nnamespace MinerWars.AppCode.Game.GUI.Core\n{\n    using App;\n    using System;\n    using MinerWars.AppCode.Networking.SectorService;\n    using SysUtils.Utils;\n\n    abstract class MyGuiScreenProgressBase : MyGuiScreenBase\n    {\n        bool m_controlsCreated = false;\n        bool m_enableCancel = false;\n        bool m_loaded = false;\n        MyTextsWrapperEnum m_progressText;\n\n        MyTexture2D m_wheelTexture;\n        public MyGuiScreenProgressBase(MyTextsWrapperEnum progressText, bool enableCancel) :\n            base(new Vector2(0.5f, 0.5f), MyGuiConstants.SCREEN_BACKGROUND_COLOR, null)\n        {\n            m_progressText = progressText;\n            m_enableCancel = enableCancel;\n\n            m_enableBackgroundFade = true;\n            DrawMouseCursor = enableCancel;\n            m_closeOnEsc = enableCancel;\n           \n            m_drawEvenWithoutFocus = true;\n            \n            // There is no reason for hiding progress screens!\n            m_screenCanHide = false;\n        }\n\n        protected bool ReturnToMainMenuOnError = false;\n\n        protected virtual void OnCancelClick(MyGuiControlButton sender)\n        {\n            Canceling();\n        }\n\n        void LoadControls()\n        {\n            // Background texture unloaded in base\n            m_backgroundTexture = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\BackgroundScreen\\\\ProgressBackground\", flags: TextureFlags.IgnoreQuality);\n            m_wheelTexture = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Loading\", flags: TextureFlags.IgnoreQuality);\n\n            m_size = new Vector2(598 / 1600f, 368 / 1200f);\n            Controls.Add(new MyGuiControlLabel(this, new Vector2(0.0f, -0.05f), null, m_progressText, MyGuiConstants.LABEL_TEXT_COLOR,\n                MyGuiConstants.LABEL_TEXT_SCALE * 0.86f, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER));\n\n            float deltaX = (m_enableCancel) ? 0.08f : 0.0f;\n            float deltaY = 0.035f;\n\n            Controls.Add(new MyGuiControlRotatingWheel(this, new Vector2(-deltaX, deltaY), MyGuiConstants.ROTATING_WHEEL_COLOR, MyGuiConstants.ROTATING_WHEEL_DEFAULT_SCALE,\n                MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, m_wheelTexture));\n\n            //  Sometimes we don't want to allow user to cancel pending progress screen\n            if (m_enableCancel)\n            {\n                var cancelButton = new MyGuiControlButton(this, new Vector2(deltaX, deltaY), MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE_SMALL,\n                        Vector4.One,\n                        MyGuiManager.GetConfirmButton(), null, null, MyTextsWrapperEnum.Cancel,\n                        MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, MyGuiControlButtonTextAlignment.CENTERED, OnCancelClick,\n                        true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true, true);\n                Controls.Add(cancelButton);\n            }\n            m_controlsCreated = true;\n        }\n\n        #region Overrides of MyGuiScreenBase\n\n        public override bool Draw(float backgroundFadeAlpha)\n        {\n            // Load in draw, because sometimes screen is invisible and saving is on background\n            if (!m_controlsCreated)\n            {\n                LoadControls();\n            }\n\n            return base.Draw(backgroundFadeAlpha);\n        }\n\n        public override void LoadContent()\n        {\n            if (!m_loaded)\n            {\n                m_loaded = true;\n                ProgressStart();\n            }\n        }\n\n        public override void UnloadContent()\n        {\n            m_loaded = false;\n\n            base.UnloadContent();\n            if (m_controlsCreated)\n            {\n                MyTextureManager.UnloadTexture(m_wheelTexture);\n            }\n        }\n\n        protected abstract void ProgressStart();\n\n        #endregion\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Core/MyGuiScreenProgressBaseAsync.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Networking.SectorService;\nusing SysUtils.Utils;\nusing System.Diagnostics;\n\nnamespace MinerWars.AppCode.Game.GUI.Core\n{\n    delegate void ActionDoneHandler<T>(IAsyncResult asyncResult, T asyncState);\n    delegate void ErrorHandler<T>(Exception exception, T asyncState);\n\n    abstract class MyGuiScreenProgressBaseAsync<T> : MyGuiScreenProgressBase\n    {\n        struct ProgressAction\n        {\n            public IAsyncResult AsyncResult;\n            public ActionDoneHandler<T> ActionDoneHandler;\n            public ErrorHandler<T> ErrorHandler;\n        }\n\n        private LinkedList<ProgressAction> m_actions = new LinkedList<ProgressAction>();\n        private string m_constructorStackTrace;\n\n        protected MyGuiScreenProgressBaseAsync(MyTextsWrapperEnum progressText, bool enableCancel)\n            : base(progressText, enableCancel)\n        {\n            if (Debugger.IsAttached)\n            {\n                m_constructorStackTrace = Environment.StackTrace;\n            }\n        }\n\n        // Sets IAsyncResult which is checked for completed on each update\n        protected void AddAction(IAsyncResult asyncResult, ErrorHandler<T> errorHandler = null)\n        {\n            AddAction(asyncResult, OnActionCompleted, errorHandler);\n        }\n\n        protected void AddAction(IAsyncResult asyncResult, ActionDoneHandler<T> doneHandler, ErrorHandler<T> errorHandler = null)\n        {\n            Debug.Assert(asyncResult.AsyncState is T, \"AsyncState must be of type T\");\n            m_actions.AddFirst(new ProgressAction() { AsyncResult = asyncResult, ActionDoneHandler = doneHandler, ErrorHandler = errorHandler ?? OnError });\n        }\n\n        protected void CancelAll()\n        {\n            foreach (var a in m_actions)\n            {\n                // TODO: Don't know if it's ok to do this\n                //a.AsyncResult.AsyncWaitHandle.Dispose();\n            }\n            m_actions.Clear();\n        }\n\n        protected override void OnCancelClick(MyGuiControlButton sender)\n        {\n            CancelAll();\n            base.OnCancelClick(sender);\n        }\n\n        public override bool Update(bool hasFocus)\n        {\n            if (base.Update(hasFocus) == false) return false;\n\n            var current = m_actions.First;\n            while (current != null)\n            {\n                if (current.Value.AsyncResult.IsCompleted)\n                {\n                    // Call handler\n                    try\n                    {\n                        current.Value.ActionDoneHandler(current.Value.AsyncResult, (T)current.Value.AsyncResult.AsyncState);\n                    }\n                    catch (Exception e)\n                    {\n                        current.Value.ErrorHandler(e, (T)current.Value.AsyncResult.AsyncState);\n                    }\n                    var toRemove = current;\n                    current = current.Next;\n                    m_actions.Remove(toRemove);\n                }\n                else\n                {\n                    current = current.Next;\n                }\n            }\n\n            return GetState() == MyGuiScreenState.OPENED;\n        }\n\n        // Called when action completed\n        protected virtual void OnActionCompleted(IAsyncResult asyncResult, T asyncState)\n        {\n            // Do nothing, childs will override\n        }\n\n        protected virtual void OnError(Exception exception, T asyncState)\n        {\n            // When error occured, log and rethrow\n            MyMwcLog.WriteLine(exception);\n            throw exception;\n        }\n        \n        protected void Retry()\n        {\n            m_actions.Clear();\n            ProgressStart();\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Core/MyGuiScreenSectorServiceCallProgress.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Networking.SectorService;\nusing System.Diagnostics;\nusing SysUtils.Utils;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing System.ServiceModel;\n\nnamespace MinerWars.AppCode.Game.GUI.Core\n{\n    abstract class MyGuiScreenSectorServiceCallProgress : MyGuiScreenProgressBaseAsync<MySectorServiceClient>\n    {\n        TimeSpan m_operationTimeout;\n\n        protected MyGuiScreenSectorServiceCallProgress(MyTextsWrapperEnum progressText, bool enableCancel, TimeSpan operationTimeout)\n            : base(progressText, enableCancel)\n        {\n            m_operationTimeout = operationTimeout;\n        }\n\n        protected MyGuiScreenSectorServiceCallProgress(MyTextsWrapperEnum progressText, bool enableCancel)\n            : base(progressText, enableCancel)\n        {\n            m_operationTimeout = MyMwcNetworkingConstants.WCF_TIMEOUT_SEND; // Use default value\n        }\n\n        protected abstract void ServiceProgressStart(MySectorServiceClient client);\n\n        // This method is sealed, never called, childs implements ServiceProgressStart\n        protected sealed override void ProgressStart()\n        {\n            MySectorServiceClient client = null;\n\n            try\n            {\n                client = MySectorServiceClient.GetCheckedInstance();\n                var channelContext = client.GetChannelContext();\n                if(channelContext != null)\n                {\n                    channelContext.OperationTimeout = m_operationTimeout;\n                }\n                ServiceProgressStart(client);\n            }\n            catch (Exception e)\n            {\n                OnError(e, client);\n            }\n        }\n\n        // Default errror handling is changed\n        protected override void OnError(Exception exception, MySectorServiceClient asyncState)\n        {\n            HandleSectorServiceError(exception, asyncState);\n        }\n\n        protected void HandleSectorServiceError(Exception exception, MySectorServiceClient client)\n        {\n            // abort connection (reconnect will restore connection after few seconds\n            // client can be null when cannot be initialized\n            MySectorServiceClient.SafeClose();\n\n            MyMwcLog.WriteLine(exception); // log exception\n\n            // Show error dialog and go to main menu\n            MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.PleaseTryAgain, MyTextsWrapperEnum.MessageBoxNetworkErrorCaption, MyTextsWrapperEnum.Ok, null));\n            CloseScreen();\n            MyGuiManager.BackToMainMenu();\n        }\n\n        protected override void OnClosed()\n        {\n            MySectorServiceClient.SafeClose();\n\n            base.OnClosed();\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Core/MyIconTexts.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\n\nnamespace MinerWars.AppCode.Game.GUI.Core\n{\n    class MyIconTexts : Dictionary<MyGuiDrawAlignEnum, MyColoredText>\n    {\n        public MyIconTexts()\n            : base()\n        {            \n        }\n\n        /// <summary>\n        /// Returns text's position from icon's position and size\n        /// </summary>\n        /// <param name=\"iconPosition\">Icon's top-left position</param>\n        /// <param name=\"iconSize\">Icon's size</param>\n        /// <param name=\"drawAlign\">Text's draw align</param>\n        /// <returns></returns>\n        private Vector2 GetPosition(Vector2 iconPosition, Vector2 iconSize, MyGuiDrawAlignEnum drawAlign)\n        {\n            Vector2 textPosition;\n            switch (drawAlign)\n            {\n                case MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_BOTTOM:\n                    textPosition = iconPosition + new Vector2(iconSize.X / 2f, iconSize.Y);\n                    break;\n                case MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER:\n                    textPosition = iconPosition + new Vector2(iconSize.X / 2f, iconSize.Y / 2f);\n                    break;\n                case MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_TOP:\n                    textPosition = iconPosition + new Vector2(iconSize.X / 2f, 0f);\n                    break;\n                case MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_BOTTOM:\n                    textPosition = iconPosition + new Vector2(0f, iconSize.Y);\n                    break;\n                case MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER:\n                    textPosition = iconPosition + new Vector2(0f, iconSize.Y / 2f);\n                    break;\n                case MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP:\n                    textPosition = iconPosition;\n                    break;\n                case MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_BOTTOM:\n                    textPosition = iconPosition + new Vector2(iconSize.X, iconSize.Y);\n                    break;\n                case MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_CENTER:\n                    textPosition = iconPosition + new Vector2(iconSize.X, iconSize.Y / 2f);\n                    break;\n                case MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_TOP:\n                    textPosition = iconPosition + new Vector2(iconSize.X, 0f);\n                    break;\n                default:\n                    throw new Exception();\n            }\n\n            return textPosition;\n        }\n\n        /// <summary>\n        /// Draws non highlight texts into icon\n        /// </summary>\n        /// <param name=\"iconPosition\">Icon's top-left position</param>\n        /// <param name=\"iconSize\">Icon's size</param>\n        /// <param name=\"backgroundAlphaFade\">Background's alpha fade</param>\n        /// <param name=\"colorMultiplicator\">Color multiplicator</param>\n        public void Draw(Vector2 iconPosition, Vector2 iconSize, float backgroundAlphaFade, float colorMultiplicator = 1f)\n        {\n            Draw(iconPosition, iconSize, backgroundAlphaFade, false, colorMultiplicator);\n        }\n\n        /// <summary>\n        /// Draws texts into icon\n        /// </summary>\n        /// <param name=\"iconPosition\">Icon's top-left position</param>\n        /// <param name=\"iconSize\">Icon's size</param>\n        /// <param name=\"backgroundAlphaFade\">Background's alpha fade</param>\n        /// <param name=\"isHighlight\">Defines if texts will be highlighted</param>\n        /// <param name=\"colorMultiplicator\">Color multiplicator</param> \n        public void Draw(Vector2 iconPosition, Vector2 iconSize, float backgroundAlphaFade, bool isHighlight, float colorMultiplicator = 1f)\n        {\n            foreach (KeyValuePair<MyGuiDrawAlignEnum, MyColoredText> keyValuePair in this)\n            {\n                Vector2 positionedTextPosition = GetPosition(iconPosition, iconSize, keyValuePair.Key);\n                keyValuePair.Value.Draw(positionedTextPosition, keyValuePair.Key, backgroundAlphaFade, isHighlight, colorMultiplicator);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Core/MyToolTips.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.App;\n\nnamespace MinerWars.AppCode.Game.GUI.Core\n{\n    class MyToolTips\n    {\n        private List<MyColoredText> m_toolTips;\n        private Vector2 m_size;\n\n        /// <summary>\n        /// Creates new instance with empty tooltips\n        /// </summary>\n        public MyToolTips()\n        {\n            m_toolTips = new List<MyColoredText>();\n        }\n\n        /// <summary>\n        /// Creates new instance with one default tooltip\n        /// </summary>\n        /// <param name=\"toolTip\">Tooltip's text</param>\n        public MyToolTips(StringBuilder toolTip)\n            : this()\n        {\n            AddToolTip(toolTip);\n        }\n\n        /// <summary>\n        /// Removes all tooltips\n        /// </summary>\n        public void ClearToolTips()\n        {\n            m_toolTips.Clear();\n            RecalculateSize();\n        }\n\n        /// <summary>\n        /// Removes a range of tooltips\n        /// </summary>\n        /// <param name=\"index\">From index</param>\n        /// <param name=\"count\">Count of removing tooltips</param>\n        public void RemoveRange(int index, int count)\n        {\n            m_toolTips.RemoveRange(index, count);\n            RecalculateSize();\n        }\n\n        /// <summary>\n        /// Adds new default tooltip\n        /// </summary>\n        /// <param name=\"toolTip\">Tooltip's text</param>\n        public void AddToolTip(StringBuilder toolTip)\n        {\n            AddToolTip(toolTip, MyGuiConstants.TOOL_TIP_TEXT_COLOR);\n        }\n\n        /// <summary>\n        /// Adds new tooltip with specific color\n        /// </summary>\n        /// <param name=\"toolTip\">Tooltip's text</param>\n        /// <param name=\"color\">Tooltip's color</param>\n        public void AddToolTip(StringBuilder toolTip, Color color)\n        {\n            AddToolTip(toolTip, color, MyGuiConstants.TOOL_TIP_TEXT_SCALE);            \n        }\n\n        /// <summary>\n        /// Adds new tooltip with specific color and scale\n        /// </summary>\n        /// <param name=\"toolTip\">Tooltip's text</param>\n        /// <param name=\"color\">Tooltip's color</param>\n        /// <param name=\"textScale\">Tooltip's scale</param>\n        public void AddToolTip(StringBuilder toolTip, Color color, float textScale)\n        {\n            if (toolTip != null)\n            {\n                m_toolTips.Add(new MyColoredText(toolTip, color, MyGuiManager.GetFontMinerWarsBlue(), textScale));\n                RecalculateSize();\n            }\n        }\n\n        /// <summary>\n        /// Returns all tooltips\n        /// </summary>\n        /// <returns></returns>\n        public List<MyColoredText> GetToolTips()\n        {\n            return m_toolTips;\n        }\n\n        /// <summary>\n        /// Return size of tooltips\n        /// </summary>\n        /// <returns></returns>\n        public Vector2 GetSize()\n        {\n            return m_size;\n        }\n\n        /// <summary>\n        /// Recalculates size of tooltips\n        /// </summary>\n        public void RecalculateSize()\n        {\n            m_size = new Vector2(0f, 0f);\n            bool isEmptyToolTip = true;\n            for (int i = 0; i < m_toolTips.Count; i++)\n            {\n                if (m_toolTips[i].Text.Length > 0) isEmptyToolTip = false;\n                Vector2 actualToolTipSize = MyGuiManager.GetNormalizedSize(MyGuiManager.GetFontMinerWarsBlue(), m_toolTips[i].Text, m_toolTips[i].Scale);\n                m_size.X = Math.Max(m_size.X, actualToolTipSize.X);\n                m_size.Y += actualToolTipSize.Y;\n            }\n            \n            if (isEmptyToolTip)m_size = new Vector2(-1f,-1f);\n        }\n\n        public void Draw(Vector2 normalizedPosition)\n        {\n            if (GetSize().X > -1f)\n            {\n                Vector2 innerBorder = new Vector2(0.005f, 0.002f);\n                Vector2 bgSize = GetSize() + 2 * innerBorder;\n                Vector2 bgPosition = normalizedPosition - new Vector2(innerBorder.X, bgSize.Y / 2);\n\n                var screenRectangle = MyGuiManager.FullscreenHudEnabled ? MyGuiManager.GetFullscreenRectangle() : MyGuiManager.GetSafeFullscreenRectangle();\n                var topleft = MyGuiManager.GetNormalizedCoordinateFromScreenCoordinate(new Vector2(screenRectangle.Left, screenRectangle.Top)) + new Vector2(MyGuiConstants.TOOLTIP_DISTANCE_FROM_BORDER);\n                var rightbottom = MyGuiManager.GetNormalizedCoordinateFromScreenCoordinate(new Vector2(screenRectangle.Right, screenRectangle.Bottom)) - new Vector2(MyGuiConstants.TOOLTIP_DISTANCE_FROM_BORDER);\n\n                if (bgPosition.X + bgSize.X > rightbottom.X) bgPosition.X = rightbottom.X - bgSize.X;\n                if (bgPosition.Y + bgSize.Y > rightbottom.Y) bgPosition.Y = rightbottom.Y - bgSize.Y;\n                if (bgPosition.X < topleft.X) bgPosition.X = topleft.X;\n                if (bgPosition.Y < topleft.Y) bgPosition.Y = topleft.Y;\n\n                MyGUIHelper.FillRectangle(bgPosition, bgSize, MyGuiConstants.TOOL_TIP_BACKGROUND_COLOR);\n                MyGUIHelper.OutsideBorder(bgPosition, bgSize, 1, MyGuiConstants.TOOL_TIP_BORDER_COLOR);\n\n                Vector2 toolTipPosition = bgPosition + new Vector2(innerBorder.X, bgSize.Y / 2 - GetSize().Y / 2f);\n\n                foreach (MyColoredText toolTip in GetToolTips())\n                {\n                    toolTipPosition.Y += toolTip.Draw(toolTipPosition, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP, 1f, false).Size.Y;\n                }\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Core/RichTextLabel/MyRichLabel.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Textures;\n\nnamespace MinerWars.AppCode.Game.GUI.Core\n{\n    class MyRichLabel\n    {\n        private static readonly string[] m_lineSeparators = new[] { \"\\n\", \"\\r\\n\" };\n        private const char m_wordSeparator = ' ';\n\n        private float m_maxLineWidth;\n        private float m_minLineHeight;\n\n        private List<MyRichLabelLine> m_lines;\n\n        private MyRichLabelLine m_currentLine;\n        private float m_currentLineRestFreeSpace;\n        private StringBuilder m_helperSb;\n\n        private MyRichLabelLine m_emptyLine;\n        private int m_linesCount;\n        private int m_linesCountMax;\n\n        private List<MyRichLabelText> m_richTextsPool;\n        private int m_richTextsOffset;\n        private int m_richTextsMax;\n\n\n        public MyRichLabel(float maxLineWidth, float minLineHeight)\n        {\n            m_maxLineWidth = maxLineWidth;\n            m_minLineHeight = minLineHeight;\n            m_helperSb = new StringBuilder(256);\n\n            Init();\n        }\n\n        private void Init()\n        {\n            m_helperSb.Clear();\n\n            m_linesCount = 0;\n            m_linesCountMax = 64;\n            m_richTextsOffset = 0;\n            m_richTextsMax = 64;\n            m_currentLineRestFreeSpace = m_maxLineWidth;\n\n            m_lines = new List<MyRichLabelLine>(m_linesCountMax);\n            for (int i = 0; i < m_linesCountMax; i++)\n            {\n                m_lines.Add(new MyRichLabelLine(m_minLineHeight));\n            }\n\n            m_richTextsPool = new List<MyRichLabelText>(m_richTextsMax);\n            for (int i = 0; i < m_richTextsMax; i++)\n            {\n                m_richTextsPool.Add(new MyRichLabelText());\n            }\n        }\n\n        private void RealocateLines()\n        {\n            if ((m_linesCount + 1) >= m_linesCountMax)\n            {\n                m_linesCountMax *= 2;\n                m_lines.Capacity = m_linesCountMax;\n                for (int i = m_linesCount + 1; i < m_linesCountMax; i++)\n                {\n                    m_lines.Add(new MyRichLabelLine(m_minLineHeight));\n                }\n            }\n        }\n\n        private void RealocateRichTexts()\n        {\n            if ((m_richTextsOffset + 1) >= m_richTextsMax)\n            {\n                m_richTextsMax *= 2;\n                m_richTextsPool.Capacity = m_richTextsMax;\n                for (int i = m_richTextsOffset + 1; i < m_richTextsMax; i++)\n                {\n                    m_richTextsPool.Add(new MyRichLabelText());\n                }\n            }\n        }\n\n        public void Append(StringBuilder text, MyGuiFont font, float scale, Vector4 color)\n        {\n            Append(text.ToString(), font, scale, color);\n        }\n\n        public void Append(string text, MyGuiFont font, float scale, Vector4 color)\n        {\n            string[] paragraphs = text.Split(m_lineSeparators, StringSplitOptions.None);\n\n            for (int i = 0; i < paragraphs.Length; i++)\n            {\n                AppendParagraph(paragraphs[i], font, scale, color);\n                if (i < paragraphs.Length - 1)\n                {\n                    AppendLine();\n                }\n            }\n        }\n\n        public void Append(MyTexture2D texture, Vector2 size, Vector4 color)\n        {\n            MyRichLabelImage image = new MyRichLabelImage(texture, size, color);\n            if (image.GetSize().X > m_currentLineRestFreeSpace)\n            {\n                AppendLine();\n            }\n            AppendPart(new MyRichLabelImage(texture, size, color));\n        }\n\n        public void AppendLine()\n        {\n            RealocateLines();\n            m_currentLine = m_lines[++m_linesCount];\n            m_currentLineRestFreeSpace = m_maxLineWidth;\n            RealocateRichTexts();\n\n        }\n\n        public void AppendLine(StringBuilder text, MyGuiFont font, float scale, Vector4 color)\n        {\n            Append(text, font, scale, color);\n            AppendLine();\n        }\n\n        public void AppendLine(MyTexture2D texture, Vector2 size, Vector4 color)\n        {\n            Append(texture, size, color);\n            AppendLine();\n        }\n\n        private void AppendParagraph(string paragraph, MyGuiFont font, float scale, Vector4 color)\n        {\n            m_helperSb.Clear();\n            m_helperSb.Append(paragraph);\n            float textWidth = MyGuiManager.GetNormalizedSize(font, m_helperSb, scale).X;\n            // first we try append all paragraph to current line\n            if (textWidth < m_currentLineRestFreeSpace)\n            {\n                RealocateRichTexts();\n                m_richTextsPool[++m_richTextsOffset].Init(m_helperSb.ToString(), font, scale, color);\n                AppendPart(m_richTextsPool[m_richTextsOffset]);\n            }\n            // if there is not enough free space in current line for whole paragraph\n            else\n            {\n                RealocateRichTexts();\n                m_richTextsPool[++m_richTextsOffset].Init(\"\", font, scale, color);\n                string[] words = paragraph.Split(m_wordSeparator);\n                int currentWordIndex = 0;\n                while (currentWordIndex < words.Length)\n                {\n                    if (words[currentWordIndex].Trim().Length == 0)\n                    {\n                        currentWordIndex++;\n                        continue;\n                    }\n\n                    m_helperSb.Clear();\n                    if (m_richTextsPool[m_richTextsOffset].Text.Length > 0)\n                    {\n                        m_helperSb.Append(m_wordSeparator);\n                    }\n                    m_helperSb.Append(words[currentWordIndex]);\n\n                    textWidth = MyGuiManager.GetNormalizedSize(font, m_helperSb, scale).X;\n\n                    if (textWidth <= m_currentLineRestFreeSpace - m_richTextsPool[m_richTextsOffset].GetSize().X)\n                    {\n                        m_richTextsPool[m_richTextsOffset].Append(m_helperSb.ToString());\n                        currentWordIndex++;\n                    }\n                    else\n                    {\n                        // if this word is wider than line and it will be only one word at line, then we append it to current line\n                        if ((m_currentLine == null || m_currentLine.IsEmpty()) && m_richTextsPool[m_richTextsOffset].Text.Length == 0)\n                        {\n                            m_richTextsPool[m_richTextsOffset].Append(m_helperSb.ToString());\n                            currentWordIndex++;\n                        }\n\n                        AppendPart(m_richTextsPool[m_richTextsOffset]);\n                        RealocateRichTexts();\n                        m_richTextsPool[++m_richTextsOffset].Init(\"\", font, scale, color);\n                        if (currentWordIndex < words.Length)\n                        {\n                            AppendLine();\n                        }\n                    }\n                }\n\n                if (m_richTextsPool[m_richTextsOffset].Text.Length > 0)\n                {\n                    AppendPart(m_richTextsPool[m_richTextsOffset]);\n                }\n            }\n        }\n\n        private void AppendPart(MyRichLabelPart part)\n        {\n            m_currentLine = m_lines[m_linesCount];\n            m_currentLine.AddPart(part);\n            m_currentLineRestFreeSpace = m_maxLineWidth - m_currentLine.GetSize().X;\n        }\n\n        /// <summary>\n        /// Draws label\n        /// </summary>\n        /// <param name=\"position\">Top-left position</param>\n        /// <param name=\"offset\"></param>\n        /// <param name=\"drawSizeMax\"></param>\n        /// <returns></returns>\n        public bool Draw(Vector2 position, float offset, Vector2 drawSizeMax)\n        {\n            float skippedSizeY = 0f;\n            int currentLineIndex = 0;\n            int linesPrinted = 0;\n\n            while (offset > skippedSizeY)\n            {\n                float lineSizeY = m_lines[currentLineIndex].GetSize().Y;\n                //if(skippedSizeY + lineSizeY > offset)\n                //{\n                //    break;\n                //}\n                skippedSizeY += lineSizeY;\n                currentLineIndex++;\n            }\n\n            ////  End our standard sprite batch\n            //MyGuiManager.EndSpriteBatch();\n            ////  Draw the rectangle(basically the opened area) to stencil buffer to be used for clipping partial item\n            //MyGuiManager.DrawStencilMaskRectangle(new MyRectangle2D(position, drawSizeMax), MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP);\n            ////  Set up the stencil operation and parameters\n            //MyGuiManager.BeginSpriteBatch_StencilMask();\n\n            Vector2 drawPosition = Vector2.Zero;\n            while (currentLineIndex <= m_linesCount)\n            {\n                MyRichLabelLine currentLine = m_lines[currentLineIndex];\n\n                if (drawPosition.Y + currentLine.GetSize().Y > drawSizeMax.Y && linesPrinted >= 1)\n                {\n                    break;\n                }\n\n                currentLine.Draw(position + drawPosition);\n                drawPosition.Y += currentLine.GetSize().Y;\n                currentLineIndex++;\n                linesPrinted++;\n            }\n\n            ////  End stencil-mask batch, and restart the standard sprite batch\n            //MyGuiManager.EndSpriteBatch();\n            //MyGuiManager.BeginSpriteBatch();\n\n            return true;\n        }\n\n        public Vector2 GetSize()\n        {\n            Vector2 size = Vector2.Zero;\n\n            for (int i = 0; i < m_linesCount; i++)\n            {\n                Vector2 lineSize = m_lines[i].GetSize();\n                size.Y += lineSize.Y;\n                if (size.X < lineSize.X)\n                {\n                    size.X = lineSize.X;\n                }\n            }\n\n            return size;\n        }\n\n        public void Clear()\n        {\n            m_lines.Clear();\n            m_currentLine = null;\n            Init();\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Core/RichTextLabel/MyRichLabelImage.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Textures;\n\nnamespace MinerWars.AppCode.Game.GUI.Core\n{\n    class MyRichLabelImage : MyRichLabelPart\n    {\n        private MyTexture2D m_texture;\n        private Vector4 m_color;\n        private Vector2 m_size;\n\n        public MyRichLabelImage(MyTexture2D texture, Vector2 size, Vector4 color)\n        {\n            m_texture = texture;\n            m_size = size;\n            m_color = color;\n        }\n\n        public MyTexture2D Texture\n        {\n            get { return m_texture; }\n            set { m_texture = value; }\n        }\n\n        public Vector4 Color\n        {\n            get { return m_color; }\n            set { m_color = value; }\n        }\n\n        public Vector2 Size\n        {\n            get { return m_size; }\n            set { m_size = value; }\n        }\n\n        public override Vector2 GetSize()\n        {\n            return m_size;\n        }\n\n        /// <summary>\n        /// Draws image\n        /// </summary>\n        /// <param name=\"position\">Top-left position</param>\n        /// <returns></returns>\n        public override bool Draw(Vector2 position)\n        {\n            MyGuiManager.DrawSpriteBatch(m_texture, position, m_size, new Color(m_color), MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP);\n            return true;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Core/RichTextLabel/MyRichLabelLine.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\n\nnamespace MinerWars.AppCode.Game.GUI.Core\n{\n    class MyRichLabelLine\n    {\n        private readonly float m_minLineHeight;\n\n        private List<MyRichLabelPart> m_parts;\n        private Vector2 m_size;\n\n        public MyRichLabelLine(float minLineHeight)\n        {\n            m_minLineHeight = minLineHeight;\n\n            m_parts = new List<MyRichLabelPart>(8);\n            RecalculateSize();\n        }\n\n        public void AddPart(MyRichLabelPart part)\n        {\n            m_parts.Add(part);\n            RecalculateSize();\n        }\n\n        public void ClearParts()\n        {\n            m_parts.Clear();\n            RecalculateSize();\n        }\n\n        public IEnumerable<MyRichLabelPart> GetParts()\n        {\n            return m_parts;\n        }\n\n        private void RecalculateSize()\n        {\n            Vector2 newSize = new Vector2(0f, m_minLineHeight);\n            foreach (MyRichLabelPart part in m_parts)\n            {\n                Vector2 partSize = part.GetSize();\n                newSize.Y = Math.Max(partSize.Y, newSize.Y);\n                newSize.X += partSize.X;\n            }\n            m_size = newSize;\n        }\n\n        /// <summary>\n        /// Draws line\n        /// </summary>\n        /// <param name=\"position\">Top-left position</param>\n        /// <returns></returns>\n        public bool Draw(Vector2 position)\n        {\n            Vector2 actualPosition = position;\n            float centerY = position.Y + m_size.Y / 2f;\n            foreach (MyRichLabelPart part in m_parts)\n            {\n                Vector2 partSize = part.GetSize();\n                actualPosition.Y = centerY - partSize.Y / 2f;\n                if (!part.Draw(actualPosition))\n                {\n                    return false;\n                }\n                actualPosition.X += partSize.X;\n            }\n\n            return true;\n        }\n\n        public Vector2 GetSize()\n        {\n            return m_size;\n        }\n\n        public bool IsEmpty()\n        {\n            return m_parts.Count == 0;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Core/RichTextLabel/MyRichLabelText.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\n\nnamespace MinerWars.AppCode.Game.GUI.Core\n{\n    class MyRichLabelText : MyRichLabelPart\n    {\n        private StringBuilder m_text;\n        private MyGuiFont m_font;\n        private Vector4 m_color;\n        private float m_scale;\n\n        private Vector2 m_size;\n\n        public MyRichLabelText(StringBuilder text, MyGuiFont font, float scale, Vector4 color)\n        {\n            m_text = text;\n            m_font = font;\n            m_scale = scale;\n            m_color = color;\n            RecalculateSize();\n        }\n\n        public MyRichLabelText()\n        {\n            m_text = new StringBuilder(512);\n            m_font = null;\n            m_scale = 0;\n            m_color = Vector4.Zero;\n        }\n\n        public void Init(string text, MyGuiFont font, float scale, Vector4 color)\n        {\n            m_text.Append(text);\n            m_font = font;\n            m_scale = scale;\n            m_color = color;\n            RecalculateSize();\n        }\n\n        public StringBuilder Text\n        {\n            get\n            {\n                return m_text;\n            }\n            set\n            {\n                m_text = value;\n                RecalculateSize();\n            }\n        }\n\n        public void Append(string text)\n        {\n            m_text.Append(text);\n            RecalculateSize();\n        }\n\n        public float Scale\n        {\n            get\n            {\n                return m_scale;\n            }\n            set\n            {\n                m_scale = value;\n                RecalculateSize();\n            }\n        }\n\n        public MyGuiFont Font\n        {\n            get\n            {\n                return m_font;\n            }\n            set\n            {\n                m_font = value;\n                RecalculateSize();\n            }\n        }\n\n        public Vector4 Color\n        {\n            get { return m_color; }\n            set { m_color = value; }\n        }\n\n        private void RecalculateSize()\n        {\n            m_size = MyGuiManager.GetNormalizedSize(m_font, m_text, m_scale);\n        }\n\n        public override Vector2 GetSize()\n        {\n            return m_size;\n        }\n\n        /// <summary>\n        /// Draws text\n        /// </summary>\n        /// <param name=\"position\">Top-left position</param>\n        /// <returns></returns>\n        public override bool Draw(Vector2 position)\n        {\n            MyGuiManager.DrawString(m_font, m_text, position, m_scale, new Color(m_color), MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP);\n            return true;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Core/RichTextLabel/MyRichTextPart.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.Utils;\n\nnamespace MinerWars.AppCode.Game.GUI.Core\n{\n    abstract class MyRichLabelPart\n    {\n        public abstract Vector2 GetSize();        \n\n        public abstract bool Draw(Vector2 position);\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Core/TreeView/MyScrollbar.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Utils;\n\nnamespace MinerWars.AppCode.Game.GUI.Core.TreeView\n{\n    abstract class MyScrollbar\n    {\n        public bool TopBorder = true;\n        public bool BottomBorder = true;\n        public bool LeftBorder = true;\n        public bool RightBorder = true;\n\n        public Vector2? BorderNormalizedOffset = null;\n\n        //protected readonly float MIN_CARRET_SIZE = 0.05f;\n\n        protected enum State\n        {\n            READY,\n            DRAG\n        }\n\n        protected MyGuiControlBase m_control;\n\n        protected Vector2 m_position;\n        protected Vector2 m_size;\n        protected Vector2 m_caretSize;\n\n        protected float m_max;\n        protected float m_page;\n        protected float m_value;\n\n        protected State m_state;\n\n        protected MyScrollbar(MyGuiControlBase control)\n        {\n            m_control = control;\n        }\n\n        public bool Visible;\n\n        public event EventHandler OnScrollValueChanged;\n\n        protected bool CanScroll()\n        {\n            return m_max > 0 && m_max > m_page;\n        }\n\n        public void Init(float max, float page)\n        {\n            m_max = max;\n            m_page = page;\n\n            ChangeValue(0);\n        }\n\n        public float GetValue()\n        {\n            return m_value;\n        }\n\n\n        public void SetValue(float value)\n        {\n            float oldValue = m_value;\n            m_value = value;\n            m_value = MathHelper.Clamp(m_value, 0, m_max - m_page);\n            if(oldValue != m_value && OnScrollValueChanged != null)\n            {\n                OnScrollValueChanged(this, EventArgs.Empty);\n            }\n        }\n\n        public void ChangeValue(float amount)\n        {\n            SetValue(m_value + amount);\n        }\n\n        public void PageDown()\n        {\n            ChangeValue(m_page);\n        }\n\n        public void PageUp()\n        {\n            ChangeValue(-m_page);\n        }\n\n        public abstract void Layout(Vector2 position, Vector2 size, Vector2 scrollSize, bool trim);\n        public abstract void Draw();\n        public abstract bool HandleInput(MyGuiInput input, bool hasKeyboardActiveControl, bool hasKeyboardActiveControlPrevious, bool receivedFocusInThisUpdate);\n    }\n\n    class MyVScrollbar : MyScrollbar\n    {\n        private Vector2 m_dragClick;\n\n        public MyVScrollbar(MyGuiControlBase control)\n            : base(control)\n        {\n\n        }\n\n        private Vector2 GetCarretPosition()\n        {\n            return new Vector2(0, m_value * (m_size.Y - m_caretSize.Y) / (m_max - m_page));\n        }\n\n        public override void Layout(Vector2 position, Vector2 size, Vector2 scrollSize, bool trim)\n        {\n            m_position = position + new Vector2(size.X - scrollSize.X, 0);\n            m_size = new Vector2(scrollSize.X, size.Y - (trim ? scrollSize.Y : 0.0f));\n\n            if (CanScroll())\n            {\n                //m_caretSize = new Vector2(scrollSize.X, Math.Max(m_page / m_max * m_size.Y, MIN_CARRET_SIZE));\n                if (m_caretSize!= Vector2.Zero)\n                {\n                    m_caretSize = MyGuiConstants.COMBOBOX_VSCROLLBAR_SIZE;\n                }\n                else\n                {\n                    m_caretSize = scrollSize;\n                }\n            }\n        }\n\n        public override void Draw()\n        {\n            if (!Visible)\n            {\n                return;\n            }\n\n            if (CanScroll())\n            {\n                Vector2 carretPosition = GetCarretPosition();\n                //GUIHelper.FillRectangle(m_position + carretPosition, m_caretSize, new Color(0.5f, 0.5f, 0, 0.5f));\n                MyGuiManager.DrawSpriteBatch(MyGuiManager.GetScrollbarSlider(), m_position + carretPosition, m_caretSize, Color.White, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP);\n            }\n\n            Color borderColor = m_control.GetColorAfterTransitionAlpha(MyGuiConstants.TREEVIEW_VERTICAL_LINE_COLOR);\n            MyGUIHelper.Border(m_position, m_size, 1, borderColor, TopBorder, BottomBorder, LeftBorder, RightBorder, BorderNormalizedOffset);\n        }\n\n        public override bool HandleInput(MyGuiInput input, bool hasKeyboardActiveControl, bool hasKeyboardActiveControlPrevious, bool receivedFocusInThisUpdate)\n        {\n            bool captured = false;\n            if (!CanScroll())\n            {\n                return false;\n            }\n\n            switch (m_state)\n            {\n                case State.READY:\n                    if (input.IsNewLeftMousePressed() && MyGUIHelper.Contains(m_position + GetCarretPosition(), m_caretSize, MyGuiManager.MouseCursorPosition.X, MyGuiManager.MouseCursorPosition.Y))\n                    {\n                        captured = true;\n                        m_state = State.DRAG;\n                        m_dragClick = MyGuiManager.MouseCursorPosition;\n                    }\n                    break;\n                case State.DRAG:\n                    if (!input.IsLeftMousePressed())\n                    {\n                        m_state = State.READY;\n                    }\n                    else\n                    {\n                        ChangeValue((MyGuiManager.MouseCursorPosition.Y - m_dragClick.Y) * (m_max - m_page) / (m_size.Y - m_caretSize.Y));\n                        m_dragClick = MyGuiManager.MouseCursorPosition;\n                    }\n                    captured = true;\n                    break;\n            }\n\n            return captured;\n        }\n    }\n\n    class MyHScrollbar : MyScrollbar\n    {\n        private Vector2 m_dragClick;\n\n        public MyHScrollbar(MyGuiControlBase control)\n            : base(control)\n        {\n\n        }\n\n        private Vector2 GetCarretPosition()\n        {\n            return new Vector2(m_value * (m_size.X - m_caretSize.X) / (m_max - m_page), 0);\n        }\n\n        public override void Layout(Vector2 position, Vector2 size, Vector2 scrollSize, bool trim)\n        {\n            m_position = position + new Vector2(0, size.Y - scrollSize.Y);\n            m_size = new Vector2(size.X - (trim ? scrollSize.X : 0.0f), scrollSize.Y);\n\n            if (CanScroll())\n            {\n                //m_caretSize = new Vector2(Math.Max(m_page / m_max * m_size.X, MIN_CARRET_SIZE), scrollSize.Y);\n                m_caretSize = MyGuiConstants.COMBOBOX_HSCROLLBAR_SIZE;\n            }\n        }\n\n        public override void Draw()\n        {\n            if (!Visible)\n            {\n                return;\n            }\n\n            if (CanScroll())\n            {\n                Vector2 carretPosition = GetCarretPosition();\n                //GUIHelper.FillRectangle(m_position + carretPosition, m_caretSize, new Color(0.5f, 0.5f, 0, 0.5f));\n                MyGuiManager.DrawSpriteBatch(MyGuiManager.GetHorizontalScrollbarSlider(), m_position + carretPosition, m_caretSize, Color.White, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP);\n            }\n\n            Color borderColor = m_control.GetColorAfterTransitionAlpha(MyGuiConstants.TREEVIEW_VERTICAL_LINE_COLOR);\n            MyGUIHelper.Border(m_position, m_size, 1, borderColor, TopBorder, BottomBorder, LeftBorder, RightBorder);\n        }\n\n        public override bool HandleInput(MyGuiInput input, bool hasKeyboardActiveControl, bool hasKeyboardActiveControlPrevious, bool receivedFocusInThisUpdate)\n        {\n            bool captured = false;\n            if (!CanScroll())\n            {\n                return false;\n            }\n\n            switch (m_state)\n            {\n                case State.READY:\n                    if (input.IsNewLeftMousePressed() && MyGUIHelper.Contains(m_position + GetCarretPosition(), m_caretSize, MyGuiManager.MouseCursorPosition.X, MyGuiManager.MouseCursorPosition.Y))\n                    {\n                        captured = true;\n                        m_state = State.DRAG;\n                        m_dragClick = MyGuiManager.MouseCursorPosition;\n                    }\n                    break;\n                case State.DRAG:\n                    if (!input.IsLeftMousePressed())\n                    {\n                        m_state = State.READY;\n                    }\n                    else\n                    {\n                        ChangeValue((MyGuiManager.MouseCursorPosition.X - m_dragClick.X) * (m_max - m_page) / (m_size.X - m_caretSize.X));\n                        m_dragClick = MyGuiManager.MouseCursorPosition;\n                    }\n                    captured = true;\n                    break;\n            }\n            return captured;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Core/TreeView/MyTreeView.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Toolkit.Input;\n\nnamespace MinerWars.AppCode.Game.GUI.Core.TreeView\n{\n    class MyTreeView\n    {\n        private MyGuiControlTreeView m_control;\n\n        private Vector2 m_position;\n        private Vector2 m_size;\n\n        private MyTreeViewBody m_body;\n        private MyHScrollbar m_hScrollbar;\n        private MyVScrollbar m_vScrollbar;\n        private Vector2 m_scrollbarSize;\n\n        public MyTreeViewItem FocusedItem;\n        public MyTreeViewItem HooveredItem;\n\n        public MyTreeView(MyGuiControlTreeView control, Vector2 position, Vector2 size)\n        {\n            m_control = control;\n\n            m_position = position;\n            m_size = size;\n\n            m_body = new MyTreeViewBody(this, position, size);\n            m_vScrollbar = new MyVScrollbar(control);\n            m_hScrollbar = new MyHScrollbar(control);\n            m_scrollbarSize = new Vector2(MyGuiConstants.TREEVIEW_VSCROLLBAR_SIZE.X, MyGuiConstants.TREEVIEW_HSCROLLBAR_SIZE.Y);\n\n            m_vScrollbar.TopBorder = m_vScrollbar.RightBorder = false;\n            m_hScrollbar.LeftBorder = m_hScrollbar.BottomBorder = false;\n        }\n\n        public void Layout()\n        {\n            m_body.Layout(Vector2.Zero);\n\n            Vector2 realSize = m_body.GetRealSize();\n\n            bool scrollbarsVisible = m_size.Y - m_scrollbarSize.Y < realSize.Y && m_size.X - m_scrollbarSize.X < realSize.X;\n            bool vScrollbarVisible = scrollbarsVisible || m_size.Y < realSize.Y;\n            bool hScrollbarVisible = scrollbarsVisible || m_size.X < realSize.X;\n\n            m_vScrollbar.BottomBorder = scrollbarsVisible;\n            m_hScrollbar.RightBorder = scrollbarsVisible;\n\n            Vector2 bodySize = new Vector2(vScrollbarVisible ? m_size.X - m_scrollbarSize.X : m_size.X, hScrollbarVisible ? m_size.Y - m_scrollbarSize.Y : m_size.Y);\n\n            m_vScrollbar.Visible = vScrollbarVisible;\n            m_vScrollbar.Init(realSize.Y, bodySize.Y);\n            m_vScrollbar.Layout(m_body.GetPosition() + new Vector2(m_scrollbarSize.X / 4f - 0.0024f, 0), m_body.GetSize(), new Vector2(m_scrollbarSize.X / 2f, m_scrollbarSize.Y), hScrollbarVisible);\n            m_vScrollbar.BorderNormalizedOffset = new Vector2(-m_scrollbarSize.X/2 - 0.001f, 0);\n\n            m_hScrollbar.Visible = hScrollbarVisible;\n            m_hScrollbar.Init(realSize.X, bodySize.X);\n            m_hScrollbar.Layout(m_body.GetPosition(), m_body.GetSize(), m_scrollbarSize, vScrollbarVisible);\n\n            m_body.SetSize(bodySize);\n            m_body.Layout(new Vector2(m_hScrollbar.GetValue(), m_vScrollbar.GetValue()));\n        }\n\n        private void TraverseVisible(ITreeView iTreeView, Action<MyTreeViewItem> action)\n        {\n            for (int i = 0; i < iTreeView.GetItemCount(); i++)\n            {\n                var item = iTreeView.GetItem(i);\n\n                if (item.Visible)\n                {\n                    action(item);\n                    if (item.IsExpanded)\n                    {\n                        TraverseVisible(item, action);\n                    }\n                }\n            }\n        }\n\n        private MyTreeViewItem NextVisible(ITreeView iTreeView, MyTreeViewItem focused)\n        {\n            bool found = false;\n            TraverseVisible(m_body, a =>\n            {\n                if (a == focused)\n                {\n                    found = true;\n                }\n                else if (found)\n                {\n                    focused = a;\n                    found = false;\n                }\n            }\n            );\n            return focused;\n        }\n\n        private MyTreeViewItem PrevVisible(ITreeView iTreeView, MyTreeViewItem focused)\n        {\n            MyTreeViewItem pred = focused;\n            TraverseVisible(m_body, a =>\n            {\n                if (a == focused)\n                {\n                    focused = pred;\n                }\n                else\n                {\n                    pred = a;\n                }\n            }\n            );\n            return focused;\n        }\n\n        public bool HandleInput(MyGuiInput input, bool hasKeyboardActiveControl, bool hasKeyboardActiveControlPrevious, bool receivedFocusInThisUpdate)\n        {\n            var oldHooveredItem = HooveredItem;\n            HooveredItem = null;\n\n            bool captured =\n                m_body.HandleInput(input, hasKeyboardActiveControl, hasKeyboardActiveControlPrevious, receivedFocusInThisUpdate) ||\n                m_vScrollbar.HandleInput(input, hasKeyboardActiveControl, hasKeyboardActiveControlPrevious, receivedFocusInThisUpdate) ||\n                m_hScrollbar.HandleInput(input, hasKeyboardActiveControl, hasKeyboardActiveControlPrevious, receivedFocusInThisUpdate);\n\n            if (hasKeyboardActiveControl)\n            {\n                if (FocusedItem == null &&\n                    m_body.GetItemCount() > 0 &&\n                    (input.IsNewKeyPress(Keys.Up) ||\n                     input.IsNewKeyPress(Keys.Down) ||\n                     input.IsNewKeyPress(Keys.Left) ||\n                     input.IsNewKeyPress(Keys.Right) ||\n                     input.DeltaMouseScrollWheelValue() != 0))\n                {\n                    FocusItem(m_body[0]);\n                }\n                else if (FocusedItem != null)\n                {\n                    if (input.IsNewKeyPress(Keys.Down) || (input.DeltaMouseScrollWheelValue() < 0 && Contains(MyGuiManager.MouseCursorPosition.X, MyGuiManager.MouseCursorPosition.Y)))\n                    {\n                        FocusItem(NextVisible(m_body, FocusedItem));\n                    }\n\n                    if (input.IsNewKeyPress(Keys.Up) || (input.DeltaMouseScrollWheelValue() > 0 && Contains(MyGuiManager.MouseCursorPosition.X, MyGuiManager.MouseCursorPosition.Y)))\n                    {\n                        FocusItem(PrevVisible(m_body, FocusedItem));\n                    }\n\n                    if (input.IsNewKeyPress(Keys.Right))\n                    {\n                        if (FocusedItem.GetItemCount() > 0)\n                        {\n                            if (!FocusedItem.IsExpanded)\n                            {\n                                FocusedItem.IsExpanded = true;\n                            }\n                            else\n                            {\n                                var next = NextVisible(FocusedItem, FocusedItem);\n                                FocusItem(next);\n                            }\n                        }\n                    }\n\n                    if (input.IsNewKeyPress(Keys.Left))\n                    {\n                        if (FocusedItem.GetItemCount() > 0 && FocusedItem.IsExpanded)\n                        {\n                            FocusedItem.IsExpanded = false;\n                        }\n                        else if (FocusedItem.Parent is MyTreeViewItem)\n                        {\n                            FocusItem(FocusedItem.Parent as MyTreeViewItem);\n                        }\n                    }\n\n                    if (FocusedItem.GetItemCount() > 0)\n                    {\n                        if (input.IsNewKeyPress(Keys.Add))\n                        {\n                            FocusedItem.IsExpanded = true;\n                        }\n\n                        if (input.IsNewKeyPress(Keys.Subtract))\n                        {\n                            FocusedItem.IsExpanded = false;\n                        }\n                    }\n                }\n\n                if (input.IsNewKeyPress(Keys.PageDown))\n                {\n                    m_vScrollbar.PageDown();\n                }\n\n                if (input.IsNewKeyPress(Keys.PageUp))\n                {\n                    m_vScrollbar.PageUp();\n                }\n\n                captured = captured ||\n                           input.IsNewKeyPress(Keys.PageDown) ||\n                           input.IsNewKeyPress(Keys.PageUp) ||\n                           input.IsNewKeyPress(Keys.Down) ||\n                           input.IsNewKeyPress(Keys.Up) ||\n                           input.IsNewKeyPress(Keys.Left) ||\n                           input.IsNewKeyPress(Keys.Right) ||\n                           input.IsNewKeyPress(Keys.Add) ||\n                           input.IsNewKeyPress(Keys.Subtract) ||\n                           input.DeltaMouseScrollWheelValue() != 0;\n            }\n\n            // Hoovered item changed\n            if (HooveredItem != oldHooveredItem)\n            {\n                m_control.ShowToolTip(HooveredItem == null ? null : HooveredItem.ToolTip);\n                MyAudio.AddCue2D(MySoundCuesEnum.GuiMouseOver);\n            }\n\n            return captured;\n        }\n\n        public MyTreeViewItem AddItem(StringBuilder text, MyTexture2D icon, Vector2 iconSize, MyTexture2D expandIcon, MyTexture2D collapseIcon, Vector2 expandIconSize)\n        {\n            return m_body.AddItem(text, icon, iconSize, expandIcon, collapseIcon, expandIconSize);\n        }\n\n        public void DeleteItem(MyTreeViewItem item)\n        {\n            if (item == FocusedItem)\n            {\n                int index = item.GetIndex();\n                if (index + 1 < GetItemCount())\n                {\n                    FocusedItem = GetItem(index + 1);\n                }\n                else if (index - 1 >= 0)\n                {\n                    FocusedItem = GetItem(index - 1);\n                }\n                else\n                {\n                    FocusedItem = FocusedItem.Parent as MyTreeViewItem;\n                }\n            }\n\n            m_body.DeleteItem(item);\n        }\n\n        public void ClearItems()\n        {\n            m_body.ClearItems();\n        }\n\n        public void Draw()\n        {\n            //  End our standard sprite batch\n            MyGuiManager.EndSpriteBatch();\n\n            //  Draw the rectangle(basically the opened area) to stencil buffer to be used for clipping partial item\n            MyGuiManager.DrawStencilMaskRectangle(new MyRectangle2D(m_body.GetPosition(), m_body.GetSize()), MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP);\n\n            //  Set up the stencil operation and parameters\n            MyGuiManager.BeginSpriteBatch_StencilMask();\n\n            m_body.Draw();\n\n            //  End stencil-mask batch, and restart the standard sprite batch\n            //MyGuiManager.EndSpriteBatch();\n            MyGuiManager.EndSpriteBatch_StencilMask();\n            MyGuiManager.BeginSpriteBatch();\n\n            Color borderColor = m_control.GetColorAfterTransitionAlpha(MyGuiConstants.TREEVIEW_VERTICAL_LINE_COLOR);\n            MyGUIHelper.OutsideBorder(m_position, m_size, 2, borderColor);\n\n            m_vScrollbar.Draw();\n            m_hScrollbar.Draw();\n        }\n\n        public bool Contains(Vector2 position, Vector2 size)\n        {\n            return MyGUIHelper.Intersects(m_body.GetPosition(), m_body.GetSize(), position, size);\n        }\n\n        public bool Contains(float x, float y)\n        {\n            return MyGUIHelper.Contains(m_body.GetPosition(), m_body.GetSize(), x, y);\n        }\n\n        public void FocusItem(MyTreeViewItem item)\n        {\n            if (item != null)\n            {\n                Vector2 offset = MyGUIHelper.GetOffset(m_body.GetPosition(), m_body.GetSize(), item.GetPosition(), item.GetSize());\n\n                m_vScrollbar.ChangeValue(-offset.Y);\n                m_hScrollbar.ChangeValue(-offset.X);\n            }\n\n            FocusedItem = item;\n        }\n\n        public Vector2 GetPosition()\n        {\n            return m_body.GetPosition();\n        }\n\n        public Vector2 GetBodySize()\n        {\n            return m_body.GetSize();\n        }\n\n        public Color GetColor(Vector4 color)\n        {\n            return m_control.GetColorAfterTransitionAlpha(color);\n        }\n\n        public float GetTransitionAlpha()\n        {\n            return m_control.GetParent().GetTransitionAlpha();\n        }\n\n        public bool WholeRowHighlight()\n        {\n            return m_control.WholeRowHighlight;\n        }\n\n        public MyTreeViewItem GetItem(int index)\n        {\n            return m_body[index];\n        }\n\n        public MyTreeViewItem GetItem(StringBuilder name)\n        {\n            return m_body.GetItem(name);\n        }\n\n        public int GetItemCount()\n        {\n            return m_body.GetItemCount();\n        }\n\n        public void SetPosition(Vector2 position)\n        {\n            m_position = position;\n            m_body.SetPosition(position);\n        }\n\n        public void SetSize(Vector2 size)\n        {\n            m_size = size;\n            m_body.SetSize(size);\n        }\n\n        public static bool FilterTree(ITreeView treeView, Predicate<MyTreeViewItem> itemFilter)\n        {\n            int visibleCount = 0;\n            for (int i = 0; i < treeView.GetItemCount(); i++)\n            {\n                var item = treeView.GetItem(i);\n\n                if (FilterTree(item, itemFilter) || (item.GetItemCount() == 0 && itemFilter(item)))\n                {\n                    item.Visible = true;\n                    ++visibleCount;\n                }\n                else\n                {\n                    item.Visible = false;\n                }\n            }\n            return visibleCount > 0;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Core/TreeView/MyTreeViewBase.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Textures;\n\nnamespace MinerWars.AppCode.Game.GUI.Core.TreeView\n{\n    class MyTreeViewBase : ITreeView\n    {\n        private List<MyTreeViewItem> m_items;\n        public MyTreeView TreeView;\n\n        public MyTreeViewItem this[int i]\n        {\n            get\n            {\n                System.Diagnostics.Debug.Assert(i < m_items.Count);\n                return m_items[i];\n            }\n        }\n\n        public MyTreeViewBase()\n        {\n            m_items = new List<MyTreeViewItem>();\n        }\n\n        public MyTreeViewItem AddItem(StringBuilder text, MyTexture2D icon, Vector2 iconSize, MyTexture2D expandIcon, MyTexture2D collapseIcon, Vector2 expandIconSize)\n        {\n            //System.Diagnostics.Trace.Assert(m_items.TrueForAll(a => a.GetIconSize() == iconSize));\n\n            var item = new MyTreeViewItem(text, icon, iconSize, expandIcon, collapseIcon, expandIconSize);\n            item.TreeView = TreeView;\n            m_items.Add(item);\n            item.Parent = this;\n            return item;\n        }\n\n        public void DeleteItem(MyTreeViewItem item)\n        {\n            if (m_items.Remove(item))\n            {\n                item.TreeView = null;\n                item.ClearItems();\n            }\n        }\n\n        public void ClearItems()\n        {\n            foreach (var item in m_items)\n            {\n                item.TreeView = null;\n                item.ClearItems();\n            }\n            m_items.Clear();\n        }\n\n        public Vector2 LayoutItems(Vector2 origin)\n        {\n            float width = 0;\n            float height = 0;\n\n            Vector2 currentOrigin = origin;\n            foreach (var treeViewItem in m_items)\n            {\n                Vector2 itemSize = treeViewItem.LayoutItem(origin + new Vector2(0, height));\n\n                width = Math.Max(width, itemSize.X);\n                height += itemSize.Y;\n            }\n            return new Vector2(width, height);\n        }\n\n        public void DrawItems()\n        {\n            foreach (var treeViewItem in m_items)\n            {\n                treeViewItem.Draw();\n\n                if (treeViewItem.IsExpanded)\n                {\n                    treeViewItem.DrawItems();\n                }\n            }\n        }\n\n        public bool HandleInput(MyGuiInput input, bool hasKeyboardActiveControl, bool hasKeyboardActiveControlPrevious, bool receivedFocusInThisUpdate)\n        {\n            bool captured = false;\n            foreach (var treeViewItem in m_items)\n            {\n                captured = captured || treeViewItem.HandleInputEx(input, hasKeyboardActiveControl, hasKeyboardActiveControlPrevious, receivedFocusInThisUpdate);\n                if (treeViewItem.IsExpanded)\n                {\n                    captured = captured || treeViewItem.HandleInput(input, hasKeyboardActiveControl, hasKeyboardActiveControlPrevious, receivedFocusInThisUpdate);\n                }\n            }\n            return captured;\n        }\n\n        public int GetItemCount()\n        {\n            return m_items.Count;\n        }\n\n        public MyTreeViewItem GetItem(int index)\n        {\n            return m_items[index];\n        }\n\n        public int GetIndex(MyTreeViewItem item)\n        {\n            return m_items.IndexOf(item);\n        }\n\n        public MyTreeViewItem GetItem(StringBuilder name)\n        {\n            return m_items.Find(a => a.Text == name);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Core/TreeView/MyTreeViewBody.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\n\nnamespace MinerWars.AppCode.Game.GUI.Core.TreeView\n{\n    class MyTreeViewBody : MyTreeViewBase\n    {\n        private Vector2 m_position;\n        private Vector2 m_size;\n        private Vector2 m_realSize;\n\n        public MyTreeViewBody(MyTreeView treeView, Vector2 position, Vector2 size)\n        {\n            TreeView = treeView;\n            m_position = position;\n            m_size = size;\n        }\n\n        public void Layout(Vector2 scroll)\n        {\n            m_realSize = LayoutItems(m_position - scroll);\n        }\n\n        public void Draw()\n        {\n            DrawItems();\n        }\n\n        public Vector2 GetPosition()\n        {\n            return m_position;\n        }\n\n        public Vector2 GetSize()\n        {\n            return m_size;\n        }\n\n        public void SetSize(Vector2 size)\n        {\n            m_size = size;\n        }\n\n        public Vector2 GetRealSize()\n        {\n            return m_realSize;\n        }\n\n        public void SetPosition(Vector2 position)\n        {\n            m_position = position;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Core/TreeView/MyTreeViewItem.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWarsMath.Graphics;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Managers;\n\nnamespace MinerWars.AppCode.Game.GUI.Core.TreeView\n{\n    class MyTreeViewItem : MyTreeViewBase\n    {\n        public EventHandler Action;\n        public EventHandler RightClick;\n        public MyTreeViewItemDragAndDrop DragDrop { get; set; }\n\n        public object Tag;\n        public bool Visible;\n        public bool Enabled;\n\n        public bool IsExpanded;\n        public StringBuilder Text;\n        public MyToolTips ToolTip;\n        public MyIconTexts IconTexts;\n\n        public MyTreeViewBase Parent;\n\n        private readonly float padding = 0.002f;\n        private readonly float spacing = 0.01f;\n        private readonly float rightBorder = 0.01f;\n\n        private MyTexture2D m_icon;\n        private MyTexture2D m_expandIcon;\n        private MyTexture2D m_collapseIcon;\n\n        private Vector2 m_iconSize;\n        private Vector2 m_expandIconSize;\n\n        private Vector2 m_currentOrigin;\n        private Vector2 m_currentSize;\n        private Vector2 m_currentTextSize;\n        private float m_loadingIconRotation;\n\n        public MyTreeViewItem(StringBuilder text, MyTexture2D icon, Vector2 iconSize, MyTexture2D expandIcon, MyTexture2D collapseIcon, Vector2 expandIconSize)\n        {\n            Visible = true;\n            Enabled = true;\n            Text = text;\n            m_icon = icon;\n            m_expandIcon = expandIcon;\n            m_collapseIcon = collapseIcon;\n            m_iconSize = iconSize;\n            m_expandIconSize = expandIconSize;\n        }\n\n        private float GetHeight()\n        {\n            return Math.Max(m_currentTextSize.Y, Math.Max(m_iconSize.Y, m_expandIconSize.Y));\n        }\n\n        public Vector2 GetIconSize()\n        {\n            return m_iconSize;\n        }\n\n        private Vector2 GetExpandIconPosition()\n        {\n            return new Vector2(padding, padding + (m_currentSize.Y - m_expandIconSize.Y) / 2);\n        }\n        private Vector2 GetIconPosition()\n        {\n            return new Vector2(padding + m_expandIconSize.X + spacing, padding);\n        }\n        private Vector2 GetTextPosition()\n        {\n            float iconOffset = m_icon != null ? m_iconSize.X + spacing : 0;\n            return new Vector2(padding + m_expandIconSize.X + spacing + iconOffset, (m_currentSize.Y - m_currentTextSize.Y) / 2);\n        }\n\n        public Vector2 GetOffset()\n        {\n            return new Vector2(padding + m_expandIconSize.X / 2, 2.0f * padding + GetHeight());\n        }\n\n        public Vector2 LayoutItem(Vector2 origin)\n        {\n            m_currentOrigin = origin;\n\n            if (!Visible)\n            {\n                m_currentSize = Vector2.Zero;\n                return Vector2.Zero;\n            }\n\n            m_currentTextSize = MyGuiManager.MeasureString(MyGuiManager.GetFontMinerWarsBlue(), Text, m_currentOrigin, 0.8f, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_TOP).Size;\n\n            float iconOffset = m_icon != null ? m_iconSize.X + spacing : 0;\n            float width = padding + m_expandIconSize.X + spacing + iconOffset + m_currentTextSize.X + rightBorder + padding;\n            float height = padding + GetHeight() + padding;\n\n            m_currentSize = new Vector2(width, height);\n\n            if (IsExpanded)\n            {\n                Vector2 offset = GetOffset();\n                Vector2 itemsSize = LayoutItems(origin + GetOffset());\n\n                width = Math.Max(width, offset.X + itemsSize.X);\n                height += itemsSize.Y;\n            }\n\n            return new Vector2(width, height);\n        }\n\n        public void Draw()\n        {\n            if (!Visible || !TreeView.Contains(m_currentOrigin, m_currentSize))\n            {\n                return;\n            }\n\n            bool isHighlighted = TreeView.HooveredItem == this;\n            Vector2 expandIconPosition = GetExpandIconPosition();\n            Vector2 iconPosition = GetIconPosition();\n            Vector2 textPosition = GetTextPosition();\n\n            Vector4 baseColor = Enabled ? Vector4.One : MyGuiConstants.TREEVIEW_DISABLED_ITEM_COLOR;\n\n            if (TreeView.FocusedItem == this)\n            {\n                Color selectedColor = TreeView.GetColor(MyGuiConstants.TREEVIEW_SELECTED_ITEM_COLOR * baseColor);\n                if (TreeView.WholeRowHighlight())\n                {\n                    MyGUIHelper.FillRectangle(new Vector2(TreeView.GetPosition().X, m_currentOrigin.Y), new Vector2(TreeView.GetBodySize().X, m_currentSize.Y), selectedColor);\n                }\n                else\n                {\n                    MyGUIHelper.FillRectangle(m_currentOrigin, m_currentSize, selectedColor);\n                }\n            }\n\n            if (GetItemCount() > 0)\n            {\n                Vector4 expandColor = (isHighlighted) ? baseColor * MyGuiConstants.CONTROL_MOUSE_OVER_BACKGROUND_COLOR_MULTIPLIER : baseColor;\n                MyGuiManager.DrawSpriteBatch(IsExpanded ? m_collapseIcon : m_expandIcon,\n                                             m_currentOrigin + expandIconPosition, m_expandIconSize,\n                                             TreeView.GetColor(expandColor), MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP);\n            }\n\n            if (m_icon != null && m_icon.LoadState != LoadState.Error)\n            {\n                if (m_icon == null)\n                { // texture is still being loaded on other thread\n                    DrawLoadingIcon(baseColor, iconPosition);\n                }\n                else\n                {\n                    MyGuiManager.DrawSpriteBatch(m_icon, m_currentOrigin + iconPosition, m_iconSize,\n                                                 TreeView.GetColor(baseColor),\n                                                 MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP);\n                }\n            }\n\n            Vector4 textColor = (isHighlighted) ? MyGuiConstants.CONTROL_MOUSE_OVER_BACKGROUND_COLOR_MULTIPLIER * baseColor : MyGuiConstants.TREEVIEW_TEXT_COLOR * baseColor;\n\n            MyGuiManager.DrawString(MyGuiManager.GetFontMinerWarsBlue(), Text,\n                                    m_currentOrigin + textPosition,\n                                    0.8f, TreeView.GetColor(textColor), MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP);\n\n            if (IconTexts != null)\n            {\n                IconTexts.Draw(m_currentOrigin + iconPosition, m_iconSize, TreeView.GetTransitionAlpha(), isHighlighted);\n            }\n        }\n\n        private void DrawLoadingIcon(Vector4 baseColor, Vector2 iconPosition)\n        {\n            MyTexture2D texture = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Loading\", flags: TextureFlags.IgnoreQuality);\n            Vector2 normalizedCoord = m_currentOrigin + iconPosition + m_iconSize / 2;\n\n            Vector2 iconSize = 0.5f * m_iconSize;\n            MyGuiManager.DrawSpriteBatch(texture, normalizedCoord, iconSize, TreeView.GetColor(baseColor),\n                                         MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP, m_loadingIconRotation);\n            m_loadingIconRotation += 0.02f;\n            m_loadingIconRotation = m_loadingIconRotation % (MathHelper.Pi * 2);\n        }\n\n        public void DrawDraged(Vector2 position)\n        {\n            if ((m_icon != null && m_icon.LoadState == LoadState.Loaded) || Text != null)\n            {\n                if (m_icon != null)\n                {\n                    MyTexture2D texture = m_icon;\n                    if (texture == null)\n                    { // texture is still being loaded on other thread\n                        DrawLoadingIcon(Vector4.One, GetIconPosition());\n                    }\n                    else\n                    {\n                        MyGUIHelper.OutsideBorder(position + GetIconPosition(), m_iconSize, 2, MyGuiConstants.TOOL_TIP_BORDER_COLOR);\n                        MyGuiManager.DrawSpriteBatch(m_icon,\n                                                     position + GetIconPosition(), m_iconSize,\n                                                     Color.White, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP);\n                    }\n                }\n                else if (Text != null)\n                {\n                    var textRect = MyGuiManager.MeasureString(MyGuiManager.GetFontMinerWarsBlue(), Text, position + GetTextPosition(), 0.8f, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP);\n                    MyGUIHelper.OutsideBorder(textRect.LeftTop, textRect.Size, 2, MyGuiConstants.TOOL_TIP_BORDER_COLOR);\n                    MyGUIHelper.FillRectangle(textRect.LeftTop, textRect.Size, TreeView.GetColor(MyGuiConstants.TREEVIEW_SELECTED_ITEM_COLOR));\n\n                    Color textColor = TreeView.GetColor(MyGuiConstants.CONTROL_MOUSE_OVER_BACKGROUND_COLOR_MULTIPLIER);\n                    MyGuiManager.DrawString(MyGuiManager.GetFontMinerWarsBlue(), Text,\n                                            position + GetTextPosition(),\n                                            0.8f, textColor, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP);\n                }\n            }\n        }\n\n        public bool HandleInputEx(MyGuiInput input, bool hasKeyboardActiveControl, bool hasKeyboardActiveControlPrevious, bool receivedFocusInThisUpdate)\n        {\n            if (!Visible)\n            {\n                return false;\n            }\n\n            bool captured = false;\n\n            // Hoover item if mouse cursor is inside its area\n            if (TreeView.Contains(MyGuiManager.MouseCursorPosition.X, MyGuiManager.MouseCursorPosition.Y) &&\n                MyGUIHelper.Contains(m_currentOrigin, m_currentSize, MyGuiManager.MouseCursorPosition.X, MyGuiManager.MouseCursorPosition.Y))\n            {\n                TreeView.HooveredItem = this;\n            }\n\n            if (Enabled && DragDrop != null)\n            {\n                captured = DragDrop.HandleInput(this, input);\n            }\n\n            // Single click - expand or focus item\n            if (input.IsNewLeftMouseReleased())\n            {\n                if (GetItemCount() > 0 && MyGUIHelper.Contains(m_currentOrigin + GetExpandIconPosition(), m_expandIconSize, MyGuiManager.MouseCursorPosition.X, MyGuiManager.MouseCursorPosition.Y))\n                {\n                    IsExpanded = !IsExpanded;\n                    captured = true;\n                    MyAudio.AddCue2D(MySoundCuesEnum.GuiMouseClick);\n                }\n                else if (TreeView.HooveredItem == this)\n                {\n                    TreeView.FocusItem(this);\n                    captured = true;\n                    MyAudio.AddCue2D(MySoundCuesEnum.GuiMouseClick);\n                }\n            }\n\n            // Double click - launch Action event\n            if (Enabled && /*!captured && */input.IsNewLeftMouseDoubleClick() && TreeView.HooveredItem == this)\n            {\n                if (Action != null)\n                {\n                    DoAction();\n                }\n                else if (GetItemCount() > 0)\n                {\n                    IsExpanded = !IsExpanded;\n                }\n                captured = true;\n            }\n\n            // Right click - launch RightClick event\n            if (/*!captured && */input.IsNewRightMousePressed() && TreeView.HooveredItem == this)\n            {\n                if (RightClick != null)\n                {\n                    RightClick(this, EventArgs.Empty);\n                }\n                captured = true;\n                MyAudio.AddCue2D(MySoundCuesEnum.GuiMouseClick);\n            }\n\n            return captured;\n        }\n\n        public int GetIndex()\n        {\n            return Parent.GetIndex(this);\n        }\n\n        public Vector2 GetPosition()\n        {\n            return m_currentOrigin;\n        }\n\n        public Vector2 GetSize()\n        {\n            return m_currentSize;\n        }\n\n        public void DoAction()\n        {\n            if (Action != null)\n            {\n                Action(this, EventArgs.Empty);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Core/TreeView/MyTreeViewItemDragAndDrop.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing System.Diagnostics;\n\nnamespace MinerWars.AppCode.Game.GUI.Core.TreeView\n{\n    class MyTreeViewItemDragAndDrop : MyGuiControlBase\n    {\n        /// <summary>\n        /// Uggly hack, this control needs contain mouse just one more frame after actual drop\n        /// because otherwise for example editor will consume mouse events and do things like\n        /// unselecting added objects\n        /// </summary>\n        private bool m_frameBackDragging;\n\n        public EventHandler Drop;\n\n        public bool Dragging { get; set; }\n        public Vector2 StartDragPosition { get; set; }\n        public MyTreeViewItem DraggedItem { get; set; }\n\n        public MyTreeViewItemDragAndDrop(IMyGuiControlsParent parent)\n            : base(parent, Vector2.Zero, null, null, null)\n        {\n\n        }\n\n        public void Init(MyTreeViewItem item, Vector2 startDragPosition)\n        {\n            Dragging = false;\n            DraggedItem = item;\n            StartDragPosition = startDragPosition;\n        }\n\n        public bool HandleInput(MyTreeViewItem treeViewItem, MyGuiInput input)\n        {\n            bool captured = false;\n            if (DraggedItem == null)\n            {\n                if (MyGUIHelper.Contains(treeViewItem.GetPosition(), treeViewItem.GetSize(), MyGuiManager.MouseCursorPosition.X, MyGuiManager.MouseCursorPosition.Y) &&\n                    treeViewItem.TreeView.Contains(MyGuiManager.MouseCursorPosition.X, MyGuiManager.MouseCursorPosition.Y))\n                {\n                    if (input.IsNewLeftMousePressed())\n                    {\n                        Dragging = false;\n                        DraggedItem = treeViewItem;\n                        StartDragPosition = MyGuiManager.MouseCursorPosition;\n                        captured = true;\n                    }\n                }\n            }\n            return captured;\n        }\n\n        public override void Draw()\n        {\n            base.Draw();\n            if (Dragging)\n            {\n                Debug.Assert(DraggedItem != null);\n\n                Vector2 offset = StartDragPosition - DraggedItem.GetPosition();\n                DraggedItem.DrawDraged(MyGuiManager.MouseCursorPosition - offset);\n            }\n\n            m_frameBackDragging = Dragging;\n        }\n\n        public override bool HandleInput(MyGuiInput input, bool hasKeyboardActiveControl, bool hasKeyboardActiveControlPrevious, bool receivedFocusInThisUpdate)\n        {\n            if (DraggedItem != null)\n            {\n                if (input.IsLeftMousePressed())\n                {\n                    float dragDistanceSquared = MyGuiManager.GetScreenSizeFromNormalizedSize(StartDragPosition - MyGuiManager.MouseCursorPosition).LengthSquared();\n                    if (dragDistanceSquared > 16)   // Drag Detection Sensitivity - 4 pixels\n                    {\n                        Dragging = m_frameBackDragging = true;\n                    }\n                }\n                else\n                {\n                    if (Drop != null && Dragging)\n                    {\n                        Drop(this, EventArgs.Empty);\n                    }\n\n                    Dragging = false;\n                    DraggedItem = null;\n                }\n            }\n\n            return base.HandleInput(input, hasKeyboardActiveControl, hasKeyboardActiveControlPrevious, receivedFocusInThisUpdate);\n        }\n\n        protected override bool CheckMouseOver()\n        {\n            return m_frameBackDragging;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/DebugScreens/MyGuiScreenDebugBase.cs",
    "content": "﻿#region Using\nusing System;\nusing System.Reflection;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Render;\nusing MinerWars.AppCode.Game.Effects;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils;\nusing System.Collections.Generic;\n#endregion\n\n//  Abstract class (screen) for all debug / developer screens\n\nnamespace MinerWars.AppCode.Game.GUI\n{\n    abstract class MyGuiScreenDebugBase : MyGuiScreenBase\n    {\n        static Vector4 m_defaultColor = new Vector4(1f, 1f, 0f, 1f);\n\n        protected Vector2 m_currentPosition;\n        protected float m_checkBoxOffset = 0.015f;\n        protected float m_scale = 1.0f;\n        protected float m_buttonXOffset = 0;\n\n        float m_maxWidth = 0;\n\n        protected MyGuiScreenDebugBase(Vector4? backgroundColor, bool isTopMostScreen) :\n            this(new Vector2( MyGuiManager.GetMaxMouseCoord().X - 0.16f, 0.5f), new Vector2(0.32f, 1.0f), backgroundColor, isTopMostScreen)\n        {\n        }\n\n        protected MyGuiScreenDebugBase(Vector2 position, Vector2? size, Vector4? backgroundColor, bool isTopMostScreen) :\n            base(position, backgroundColor, size, isTopMostScreen, null)\n        {\n            m_screenCanHide = false;\n            m_canCloseInCloseAllScreenCalls = false;\n            m_canShareInput = true;\n        }\n\n\n        #region CheckBox\n\n        protected MyGuiControlCheckbox addCheckBox(StringBuilder text, bool enabled = true, List<MyGuiControlBase> controlGroup = null, Vector4? color = null)\n        {\n            MyGuiControlLabel label = new MyGuiControlLabel(this, m_currentPosition, null, text, color ?? m_defaultColor, MyGuiConstants.LABEL_TEXT_SCALE * MyGuiConstants.DEBUG_LABEL_TEXT_SCALE * m_scale,\n                                                            MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER);\n\n            float labelWidth = label.GetTextSize().Size.X + 0.02f;\n            m_maxWidth = Math.Max(m_maxWidth, labelWidth);\n            label.Enabled = enabled;\n            Controls.Add(label);\n\n\n            Vector2? m = this.GetSize();\n\n            Vector2 checkBoxSize = MyGuiConstants.CHECKBOX_SIZE * m_scale;\n            MyGuiControlCheckbox checkBox = new MyGuiControlCheckbox(this, m_currentPosition + new Vector2(m.Value.X - 2 * checkBoxSize.X - m_checkBoxOffset, 0),\n                checkBoxSize, false, 0.8f * (color ?? m_defaultColor));\n            checkBox.Enabled = enabled;\n\n            Controls.Add(checkBox);\n\n            m_currentPosition.Y += 0.04f * m_scale;\n\n            if (controlGroup != null)\n            {\n                controlGroup.Add(label);\n                controlGroup.Add(checkBox);\n            }\n\n            return checkBox;\n        }\n\n        protected MyGuiControlCheckbox AddCheckBox(StringBuilder text, MyGuiScreenDebugBase screen, List<MyGuiControlBase> controlGroup = null, Vector4? color = null)\n        {\n            MyGuiControlCheckbox checkBox = addCheckBox(text, true, controlGroup, color);\n\n            checkBox.Checked = screen.GetState() == MyGuiScreenState.OPENED;\n            checkBox.UserData = screen;\n\n            checkBox.OnCheck = delegate(MyGuiControlCheckbox sender)\n            {\n                MyGuiScreenDebugBase screenSender = sender.UserData as MyGuiScreenDebugBase;\n                if (sender.Checked)\n                {\n                    MyGuiManager.AddScreen(screenSender);\n                    screenSender.SetState(MyGuiScreenState.OPENING);\n                    screenSender.LoadContent();\n                    screenSender.RecreateControls(false);\n                }\n                else\n                {\n                    screenSender.CloseScreen();\n                }\n            };\n\n            return checkBox;\n        }\n\n        protected MyGuiControlCheckbox AddCheckBox(MyTextsWrapperEnum textEnum, bool checkedState, MyGuiControlCheckbox.OnCheckBoxCheckCallback checkBoxChange, bool enabled = true, List<MyGuiControlBase> controlGroup = null, Vector4? color = null)\n        {\n            return AddCheckBox(MyTextsWrapper.Get(textEnum), checkedState, checkBoxChange, enabled, controlGroup, color);\n        }\n\n        protected MyGuiControlCheckbox AddCheckBox(StringBuilder text, bool checkedState, MyGuiControlCheckbox.OnCheckBoxCheckCallback checkBoxChange, bool enabled = true, List<MyGuiControlBase> controlGroup = null, Vector4? color = null)\n        {\n            MyGuiControlCheckbox checkBox = addCheckBox(text, enabled, controlGroup, color);\n            checkBox.Checked = checkedState;\n            checkBox.OnCheck = checkBoxChange;\n            return checkBox;\n        }\n\n        protected MyGuiControlCheckbox AddCheckBox(MyTextsWrapperEnum textEnum, object instance, MemberInfo memberInfo, bool enabled = true, List<MyGuiControlBase> controlGroup = null, Vector4? color = null)\n        {\n            return AddCheckBox(MyTextsWrapper.Get(textEnum), instance, memberInfo, enabled, controlGroup, color);\n        }\n\n        protected MyGuiControlCheckbox AddCheckBox(StringBuilder text, object instance, MemberInfo memberInfo, bool enabled = true, List<MyGuiControlBase> controlGroup = null, Vector4? color = null)\n        {\n            MyGuiControlCheckbox checkBox = addCheckBox(text, enabled, controlGroup, color);\n\n            if (memberInfo is PropertyInfo)\n            {\n                PropertyInfo property = (PropertyInfo)memberInfo;\n                checkBox.Checked = (bool)property.GetValue(instance, new object[0]);\n                checkBox.UserData = new Tuple<object, PropertyInfo>(instance, property);\n                checkBox.OnCheck = delegate(MyGuiControlCheckbox sender)\n                {\n                    Tuple<object, PropertyInfo> tuple = sender.UserData as Tuple<object, PropertyInfo>;\n                    tuple.Item2.SetValue(tuple.Item1, sender.Checked, new object[0]);\n                };\n            }\n            else\n                if (memberInfo is FieldInfo)\n                {\n                    FieldInfo field = (FieldInfo)memberInfo;\n                    checkBox.Checked = (bool)field.GetValue(instance);\n                    checkBox.UserData = new Tuple<object, FieldInfo>(instance, field);\n                    checkBox.OnCheck = delegate(MyGuiControlCheckbox sender)\n                    {\n                        Tuple<object, FieldInfo> tuple = sender.UserData as Tuple<object, FieldInfo>;\n                        tuple.Item2.SetValue(tuple.Item1, sender.Checked);\n                    };\n                }\n                else\n                {\n                    System.Diagnostics.Debug.Assert(false, \"Unknown type of memberInfo\");\n                }\n\n            return checkBox;\n        }\n\n        #endregion\n\n        #region Slider\n\n        protected MyGuiControlSlider addSlider(StringBuilder text, float valueMin, float valueMax, Vector4? color = null)\n        {\n            MyGuiControlLabel label = new MyGuiControlLabel(this, m_currentPosition, null, text, color ?? m_defaultColor, MyGuiConstants.LABEL_TEXT_SCALE * 0.8f * m_scale,\n                                                            MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER);\n            float labelWidth = label.GetTextSize().Size.X + 0.02f;\n            m_maxWidth = Math.Max(m_maxWidth, labelWidth);\n            Controls.Add(label);\n\n            m_currentPosition.Y += 0.04f * m_scale;\n\n            MyGuiControlSlider slider = new MyGuiControlSlider(this, m_currentPosition + new Vector2(0.1f, 0) * m_scale, 0.2f, valueMin, valueMax, color ?? m_defaultColor,\n                new System.Text.StringBuilder(\" {0}\"), 0.1f, 3, 0.65f * m_scale, m_scale);\n\n            Controls.Add(slider);\n            m_currentPosition.Y += 0.05f * m_scale;\n\n            return slider;\n        }\n\n        protected void AddSlider(StringBuilder text, float value, float valueMin, float valueMax, MyGuiControlSlider.OnSliderChangeCallback valueChange, Vector4? color = null)\n        {\n            MyGuiControlSlider slider = addSlider(text, valueMin, valueMax, color);\n            slider.SetValue(value);\n            slider.OnChange = valueChange;\n        }\n\n        protected MyGuiControlSlider AddSlider(StringBuilder text, float valueMin, float valueMax, object instance, MemberInfo memberInfo, Vector4? color = null)\n        {\n            MyGuiControlSlider slider = addSlider(text, valueMin, valueMax, color);\n            \n            if (memberInfo is PropertyInfo)\n            {\n                PropertyInfo property = (PropertyInfo)memberInfo;\n\n                slider.SetValue((float)property.GetValue(instance, new object[0]));\n                slider.UserData = new Tuple<object, PropertyInfo>(instance, property);\n                slider.OnChange = delegate(MyGuiControlSlider sender)\n                {\n                    Tuple<object, PropertyInfo> tuple = sender.UserData as Tuple<object, PropertyInfo>;\n                    tuple.Item2.SetValue(tuple.Item1, sender.GetValue(), new object[0]);\n                };\n            }\n            else\n            if (memberInfo is FieldInfo)\n            {\n                FieldInfo field = (FieldInfo)memberInfo;\n\n                slider.SetValue((float)field.GetValue(instance));\n                slider.UserData = new Tuple<object, FieldInfo>(instance, field);\n                slider.OnChange = delegate(MyGuiControlSlider sender)\n                {\n                    Tuple<object, FieldInfo> tuple = sender.UserData as Tuple<object, FieldInfo>;\n                    tuple.Item2.SetValue(tuple.Item1, sender.GetValue());\n                };\n            }\n            else\n            {\n                System.Diagnostics.Debug.Assert(false, \"Unknown type of memberInfo\");\n            }\n\n            return slider;\n        }\n\n\n        #endregion\n\n        #region Label\n\n        protected void AddLabel(StringBuilder text, Vector4 color, float scale, List<MyGuiControlBase> controlGroup = null, MyGuiFont font = null)\n        {\n            MyGuiControlLabel label = new MyGuiControlLabel(this, m_currentPosition, null, text, color, MyGuiConstants.LABEL_TEXT_SCALE * MyGuiConstants.DEBUG_LABEL_TEXT_SCALE * scale * m_scale,\n                                                            MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER, font);\n            float labelWidth = label.GetTextSize().Size.X + 0.02f;\n            m_maxWidth = Math.Max(m_maxWidth, labelWidth);\n            Controls.Add(label);\n\n            m_currentPosition.Y += 0.04f * m_scale;\n\n            if (controlGroup != null)\n                controlGroup.Add(label);\n        }\n\n        #endregion\n\n        #region Color\n\n\n        protected MyGuiControlColor addColor(StringBuilder text)\n        {\n            MyGuiControlColor colorControl = new MyGuiControlColor(this, text,  m_currentPosition, new Vector2(0.3f, 0.1f), 1.0f, Color.White);\n            Controls.Add(colorControl);\n            return colorControl;\n        }\n\n        protected void AddColor(StringBuilder text, object instance, MemberInfo memberInfo)\n        {\n            MyGuiControlColor colorControl = addColor(text);\n\n            if (memberInfo is PropertyInfo)\n            {\n                PropertyInfo property = (PropertyInfo)memberInfo;\n                var val = property.GetValue(instance, new object[0]);\n                if (val is Color)\n                    colorControl.SetColor((Color)val);\n                else\n                    if (val is Vector3)\n                        colorControl.SetColor((Vector3)val);\n                    else\n                        if (val is Vector4)\n                            colorControl.SetColor((Vector4)val);\n\n                colorControl.UserData = new Tuple<object, PropertyInfo>(instance, property);\n                colorControl.OnChange = delegate(MyGuiControlColor sender)\n                {\n                    Tuple<object, PropertyInfo> tuple = sender.UserData as Tuple<object, PropertyInfo>;\n                    if (tuple.Item2.MemberType.GetType() == typeof(Color))\n                    {\n                        tuple.Item2.SetValue(tuple.Item1, sender.GetColor(), new object[0]);\n                    }\n                    else\n                        if (tuple.Item2.MemberType.GetType() == typeof(Vector3))\n                    {\n                        tuple.Item2.SetValue(tuple.Item1, sender.GetColor().ToVector3(), new object[0]);\n                    }\n                    else\n                    if (tuple.Item2.MemberType.GetType() == typeof(Vector4))\n                    {\n                        tuple.Item2.SetValue(tuple.Item1, sender.GetColor().ToVector4(), new object[0]);\n                    }\n                };\n            }\n            else\n                if (memberInfo is FieldInfo)\n                {\n                    FieldInfo field = (FieldInfo)memberInfo;\n                    var val = field.GetValue(instance);\n                    if (val is Color)\n                        colorControl.SetColor((Color)val);\n                    else\n                        if (val is Vector3)\n                            colorControl.SetColor((Vector3)val);\n                        else\n                            if (val is Vector4)\n                                colorControl.SetColor((Vector4)val);\n\n                    colorControl.UserData = new Tuple<object, FieldInfo>(instance, field);\n                    colorControl.OnChange = delegate(MyGuiControlColor sender)\n                    {\n                        Tuple<object, FieldInfo> tuple = sender.UserData as Tuple<object, FieldInfo>;\n                        if (tuple.Item2.FieldType == typeof(Color))\n                        {\n                            tuple.Item2.SetValue(tuple.Item1, sender.GetColor());\n                        }\n                        else\n                            if (tuple.Item2.FieldType == typeof(Vector3))\n                            {\n                                tuple.Item2.SetValue(tuple.Item1, sender.GetColor().ToVector3());\n                            }\n                            else\n                                if (tuple.Item2.FieldType == typeof(Vector4))\n                                {\n                                    tuple.Item2.SetValue(tuple.Item1, sender.GetColor().ToVector4());\n                                }\n                    };\n                }\n                else\n                {\n                    System.Diagnostics.Debug.Assert(false, \"Unknown type of memberInfo\");\n                }\n\n            m_currentPosition.Y += 0.08f * m_scale;\n        }\n\n        #endregion\n\n        #region Button\n\n        protected MyGuiControlButton AddButton(StringBuilder text, MyGuiControlButton.OnButtonClick onClick, List<MyGuiControlBase> controlGroup = null, MyGuiControlButtonTextAlignment textAlign = MyGuiControlButtonTextAlignment.CENTERED, Vector4? textColor = null, Vector2? size = null)\n        {\n            MyGuiControlButton button = new MyGuiControlButton(this, new Vector2(m_buttonXOffset, m_currentPosition.Y), size ?? new Vector2(0.20f, 0.03f), Vector4.One, text, null, textColor ?? m_defaultColor, MyGuiConstants.LABEL_TEXT_SCALE * MyGuiConstants.DEBUG_BUTTON_TEXT_SCALE * m_scale, onClick, textAlign, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true);\n\n            Controls.Add(button);\n\n            m_currentPosition.Y += 0.04f * m_scale;\n\n            if (controlGroup != null)\n                controlGroup.Add(button);\n\n            return button;\n        }\n\n        protected MyGuiControlCombobox AddCombo(List<MyGuiControlBase> controlGroup = null, MyGuiControlButtonTextAlignment textAlign = MyGuiControlButtonTextAlignment.CENTERED, Vector4? textColor = null, Vector2? size = null)\n        {\n            MyGuiControlCombobox combo = new MyGuiControlCombobox(this, new Vector2(m_buttonXOffset, m_currentPosition.Y), MyGuiControlPreDefinedSize.MEDIUM, Vector4.One, 0.7f);\n            Controls.Add(combo);\n\n            m_currentPosition.Y += 0.04f * m_scale;\n\n            if (controlGroup != null)\n                controlGroup.Add(combo);\n\n            return combo;\n        }\n\n        protected MyGuiControlListbox AddListbox(List<MyGuiControlBase> controlGroup = null, Vector2? size = null)\n        {\n            int itemCount = 15;\n            var s = size ?? new Vector2(0.20f, 0.025f);\n            var pos = new Vector2(m_buttonXOffset, m_currentPosition.Y);\n            pos.Y += s.Y * itemCount / 2;\n            MyGuiControlListbox listbox = new MyGuiControlListbox(this, pos, s, Vector4.One, new StringBuilder(), 0.7f, 1, itemCount, 1, false, true, false);\n            Controls.Add(listbox);\n\n            m_currentPosition.Y += 0.04f * m_scale;\n\n            if (controlGroup != null)\n                controlGroup.Add(listbox);\n\n            return listbox;\n        }\n\n        #endregion\n\n\n        public override bool Draw(float backgroundFadeAlpha)\n        {\n            if (MyGuiManager.IsDebugScreenEnabled() == false) return false;\n            if (base.Draw(backgroundFadeAlpha) == false) return false;\n            return true;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/DebugScreens/MyGuiScreenDebugBot.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWarsMath.Graphics;\nusing MinerWars.AppCode.Toolkit.Input;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Managers;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils.Utils;\n\nnamespace MinerWars.AppCode.Game.GUI\n{\n\n    /// <summary>\n    /// This screen gives us info on our bot(s) and let's us edit, at runtime, the parameters to tweak the behavior of the \n    /// bot. For example: how close we must be to anger it, how aggressive it is, how much it fires, adjustment factors to\n    /// it's maximum movement and rotation speeds, etc.\n    /// </summary>\n    class MyGuiScreenDebugBot : MyGuiScreenDebugBase\n    {\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenDebugBot\";\n        }\n\n        /// <summary>\n        /// \n        /// </summary>\n        static StringBuilder m_frameDebugText = new StringBuilder(1000);\n\n        /// <summary>\n        /// \n        /// </summary>\n        //MySmallShipBot m_bot;\n\n        /// <summary>\n        /// Reference to keyboard and mouse input instance.\n        /// </summary>\n        MyGuiInput m_input;\n\n        /// <summary>\n        /// The list of parameter names of bot parameters that are adjustable at runtime.\n        /// </summary>\n        List<BotParam> m_botParams = new List<BotParam>();\n\n        /// <summary>\n        /// The index of the parameter that we are currently tweaking.\n        /// </summary>\n        int m_currentParamIndex;\n\n        /// <summary>\n        /// \n        /// </summary>\n        BotParam m_currentParam;\n\n        /// <summary>\n        /// \n        /// </summary>\n        public MyGuiScreenDebugBot()\n            : base(new Vector2(0.5f, 0.5f), new Vector2(), null, true)\n        {\n\n            // Flag this as top screen.\n            m_isTopMostScreen = true;\n            \n            m_drawEvenWithoutFocus = true;\n            m_canHaveFocus = false;\n\n            // Be careful not to try to list bot details before bot exists.\n            /*\n            if (BotExists())\n            {\n                this.m_bot = MyGuiScreenGamePlay.Static.BotFriend1;\n\n                BotParam rotSpeed = new BotParam();\n                rotSpeed.Name = \"Turning Capability\";\n                rotSpeed.Description = \"Increases bot's ability to turn quickly.\";\n                rotSpeed.IsBoolean = false;\n                rotSpeed.Value = this.m_bot.RotationSpeedTuner;\n                this.m_botParams.Add(rotSpeed);\n\n                BotParam armed = new BotParam();\n                armed.Name = \"Armed\";\n                armed.Description = \"Arms/disarms bot.\";\n                armed.Value = 0f;\n                if (this.m_bot.IsArmed)\n                {\n                    armed.Value = 1.0f;\n                }\n                armed.IsBoolean = true;\n                this.m_botParams.Add(armed);\n\n                BotParam tooClose = new BotParam();\n                tooClose.Name = \"Collision Sensor Sensitivity\";\n                tooClose.Description = \"Increases distance bot tries to maintain between itself and player.\";\n                tooClose.Value = this.m_bot.TooCloseTunerAttack;\n                tooClose.IsBoolean = false;\n                this.m_botParams.Add(tooClose);\n\n                // Select first param in bot param list by default.\n                this.m_currentParamIndex = 0;\n                this.m_currentParam = this.m_botParams[this.m_currentParamIndex];\n\n            }\n             */\n        }\n\n        /// <summary>\n        /// Pass debug screen parameter values into corresponding variables within the currently\n        /// selected bot.\n        /// </summary>\n        /// <param name=\"paramIndex\">Parameter list index.</param>\n        /// <param name=\"paramValue\">Parameter value</param>\n        private void PassValueFromDebugScreenToBot(int paramIndex, float paramValue)\n        {\n\n            // String name of this parameter index.\n            // TODO: shouldn't this be an enum?\n            string paramName = this.m_botParams[paramIndex].Name;\n\n            // Based on specified parameter, set the appropriate bot variable\n            // with the current parameter value.\n            switch (paramName)\n            {\n                case \"Turning Capability\":\n                    //this.m_bot.RotationSpeedTuner = paramValue;\n                    break;\n\n                case \"Armed\":\n                    //this.m_bot.IsArmed = Convert.ToBoolean(paramValue);\n                    break;\n\n                case \"Projectile Burst Frequency\":\n                    //this.m_bot.Behavior.FastBurstFrequencyTuner = paramValue;\n                    break;\n\n                case \"Projectile Burst Duration\":\n                    //this.m_bot.Behavior.FastBurstDurationTuner = paramValue;\n                    break;\n\n                case \"Missile Frequency\":\n                    //this.m_bot.Behavior.MissileFrequencyTuner = paramValue;\n                    break;\n\n                case \"Firing Cone\":\n                    //this.m_bot.Behavior.FastFiringConeTuner = paramValue;\n                    break;\n\n                case \"Collision Sensor Sensitivity\":\n                    //this.m_bot.TooCloseTunerAttack = paramValue;\n                    break;\n\n                default:\n\n                    // Be sure all runtime-settable parameter names are handled within\n                    // this case statement.\n                    throw new MyMwcExceptionApplicationShouldNotGetHere();\n                    break;\n            }\n\n        }\n\n        /// <summary>\n        /// Frame Debug Text - is cleared at the begining of Update and rendered at the end of Draw\n        /// </summary>\n        /// <param name=\"s\"></param>\n        public void AddToFrameDebugText(string s)\n        {\n            m_frameDebugText.AppendLine(s);\n        }\n\n        /// <summary>\n        /// Frame Debug Text - is cleared at the begining of Update and rendered at the end of Draw\n        /// </summary>\n        public void ClearFrameDebugText()\n        {\n            MyMwcUtils.ClearStringBuilder(m_frameDebugText);\n        }\n\n        /// <summary>\n        /// Get left top corner of screen, while factoring in the screen safe area.\n        /// </summary>\n        /// <returns></returns>\n        public Vector2 GetScreenLeftTopPosition()\n        {\n            float deltaPixels = 25 * MyGuiManager.GetSafeScreenScale();\n            Rectangle fullscreenRectangle = MyGuiManager.GetSafeFullscreenRectangle();\n            return MyGuiManager.GetNormalizedCoordinateFromScreenCoordinate_FULLSCREEN(new Vector2(deltaPixels, deltaPixels));\n        }\n\n        public override bool Update(bool hasFocus)\n        {\n            // Update base class.\n            if (base.Update(hasFocus) == false) return false;\n\n            // Don't try to pass values to bot if it doesn't exsit.\n            if (BotExists())\n            {\n                // Handle input for this debug screen: the arrows keys to modify params.\n                this.HandleInput();\n\n                // Update bot with current setting selection.\n                // TODO: do I need to be calling this every frame instead of in an event-based way?\n                this.PassValueFromDebugScreenToBot(this.m_currentParamIndex, this.m_currentParam.Value);\n            }\n\n            return true;\n        }\n\n        /// <summary>\n        /// Watch for arrow keys.\n        /// </summary>\n        private void HandleInput()\n        {\n\n            // Move editing focus to next bot parameter.\n            if (this.m_input.IsNewKeyPress(Keys.Down))\n            {\n\n                // Select next parameter, but don't go out of range.\n                this.m_currentParamIndex += 1;\n                this.m_currentParamIndex = Math.Min(this.m_currentParamIndex, (this.m_botParams.Count - 1));\n\n                // Note newly selected parameter.\n                this.m_currentParam = this.m_botParams[this.m_currentParamIndex];\n\n            }\n\n            // Move editing focus to previous bot parameter.\n            if (this.m_input.IsNewKeyPress(Keys.Up))\n            {\n\n                // Select previous parameter, but don't go out of range.\n                this.m_currentParamIndex -= 1;\n                this.m_currentParamIndex = Math.Max(this.m_currentParamIndex, 0);\n\n                // Note newly selected parameter.\n                this.m_currentParam = this.m_botParams[this.m_currentParamIndex];\n\n            }\n\n            // Increment current parameter value.\n            if (this.m_input.IsNewKeyPress(Keys.Right))\n            {\n                this.m_currentParam.Value += 0.1f;\n                if (this.m_currentParam.IsBoolean == true)\n                {\n                    this.m_currentParam.Value = 1f;\n                }\n            }\n\n            // Decrement current parameter value.\n            if (this.m_input.IsNewKeyPress(Keys.Left))\n            {\n                this.m_currentParam.Value -= 0.1f;\n                this.m_currentParam.Value = Math.Max(this.m_currentParam.Value, 0);\n                if (this.m_currentParam.IsBoolean == true)\n                {\n                    this.m_currentParam.Value = 0f;\n                }\n            }\n        }\n\n        /// <summary>\n        /// \n        /// </summary>\n        /// <param name=\"backgroundFadeAlpha\"></param>\n        public override bool Draw(float backgroundFadeAlpha)\n        {\n            if (base.Draw(backgroundFadeAlpha) == false) return false;\n\n            const float TEXT_DISTANCE_Y = 0.025f;\n            const float TEXT_SCALE = 0.5f;\n\n            List<StringBuilder> texts = new List<StringBuilder>(20);\n            texts.Add(new StringBuilder(\"BOT DEBUG SCREEN\"));\n            texts.Add(new StringBuilder(String.Empty));\n\n            if (BotExists())\n            {\n                // Non-persistence disclaimer.\n                texts.Add(new StringBuilder(\"Use this debug screen to test different bot settings in\"));\n                texts.Add(new StringBuilder(\"order to find those that 'feel' best. Note that these settings\"));\n                texts.Add(new StringBuilder(\"are just for experimentation and don't persist. Final changes\"));\n                texts.Add(new StringBuilder(\"must be made in the code itself.\"));\n                texts.Add(new StringBuilder(String.Empty));\n\n                // Camera.\n                texts.Add(new StringBuilder(\"Camera.CameraAttachedTo = \" + MyGuiScreenGamePlay.Static.CameraAttachedTo.ToString()));\n                texts.Add(new StringBuilder(\"MySpectator.Position = \" + MyUtils.GetFormatedVector3(MySpectator.Position,0)));\n                texts.Add(new StringBuilder(\"Camera.ThirdPersonCamDelta = \" + MyUtils.GetFormatedVector3( MyGuiScreenGamePlay.Static.ThirdPersonCameraDelta, 0 )));\n                texts.Add(new StringBuilder(String.Empty));\n\n                // Bot info.\n                //double angle = this.m_bot.AngleBetweenForwardAndTarget( this.m_pl\n                //texts.Add(new StringBuilder(\"Bot.AngleBetweenForwardAndPlayerPosition = \" + angle.ToString(\"F0\")));\n                //texts.Add(new StringBuilder(String.Empty));\n\n\n                // Bot debug key controls.\n                texts.Add(new StringBuilder(\"Use UP/DOWN arrows keys to select a parameter.\"));\n                texts.Add(new StringBuilder(\"Use RIGHT/LEFT arrows keys to adjust parameter value.\"));\n                texts.Add(new StringBuilder(\"Press Shift-F12 to close this screen.\"));\n                texts.Add(new StringBuilder(String.Empty));\n\n                // List specific bot that we're modifying.\n                StringBuilder botTitle = new StringBuilder();\n                botTitle.Append(\"Selected bot:  \");\n                //botTitle.Append(m_bot.Name);\n                texts.Add(botTitle);\n                texts.Add(new StringBuilder(String.Empty));\n\n                // Walk through all settable parameters and list current names and values.\n                // Add either spacing or tick mark prefix to each parameter listed.\n                // The little tick marks indicates the currently editting parameter.\n                for (int i = 0; i < this.m_botParams.Count; i++)\n                {\n                    StringBuilder sb = new StringBuilder();\n                    BotParam param = this.m_botParams[i];\n                    sb.Append((this.GetPrefix(i) + param.Name + \" = \"));\n                    if (param.IsBoolean == false)\n                    {\n                        sb.Append((param.Value.ToString(\"F1\")));\n                    }\n                    else\n                    {\n                        if (param.Value == 0.0f)\n                        {\n                            sb.Append(\"False\");\n                        }\n                        else\n                        {\n                            sb.Append(\"True\");\n                        }\n                    }\n                    texts.Add(sb);\n                }\n                texts.Add(new StringBuilder(String.Empty));\n\n                // Description what effect changing current parameter will have..\n                texts.Add(new StringBuilder(\"Description:\"));\n                texts.Add(new StringBuilder(this.m_currentParam.Description));\n                texts.Add(new StringBuilder(String.Empty));\n\n            }\n\n            // Where to start drawing text.\n            Vector2 origin = this.GetScreenLeftTopPosition();\n\n            // Draw our text on screen.\n            for (int i = 0; i < texts.Count; i++)\n            {\n                MyGuiManager.DrawString(MyGuiManager.GetFontMinerWarsWhite(), texts[i], origin + new Vector2(0, i * TEXT_DISTANCE_Y), TEXT_SCALE,\n                    Color.Yellow, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP);\n            }\n\n            ClearFrameDebugText();\n\n            return true;\n        }\n\n        /// <summary>\n        /// Show a little mark in front of the parameter we are editing.\n        /// This is so that the developer knows which parameter is being tweaked.\n        /// </summary>\n        /// <param name=\"paramIndex\"></param>\n        /// <returns></returns>\n        private string GetPrefix(int paramIndex)\n        {\n            string prefix = String.Empty;\n            if (paramIndex == this.m_currentParamIndex)\n            {\n                prefix = \"> \";\n            }\n            else\n            {\n                prefix = \"    \";\n            }\n            return (prefix);\n\n        }\n\n        /// <summary>\n        /// Use this to give the bot debug screen a reference to our input manager. Why? So that this screen\n        /// can see the key presses that we're using to tweak the bot parameters.\n        /// </summary>\n        /// <param name=\"m_input\"></param>\n        internal void SetGuiInput(MyGuiInput m_input)\n        {\n            this.m_input = m_input;\n        }\n\n        /// <summary>\n        /// Does bot exist? For example, don't try to display bot info if there's no bot. That'll throw\n        /// exception errors.\n        /// </summary>\n        /// <returns></returns>\n        private static bool BotExists()\n        {\n            bool botExists = false;\n            if (MyGuiScreenGamePlay.Static != null)\n            {        /*\n                if (MyGuiScreenGamePlay.Static.BotFriend1 != null)\n                {\n                    botExists = true;\n                }  */\n                }\n            return botExists;\n        }\n\n    }\n\n    /// <summary>\n    /// This represent a settable bot parameter.\n    /// </summary>\n    class BotParam\n    {\n\n        /// <summary>\n        /// \n        /// </summary>\n        public string Name;\n\n        /// <summary>\n        /// If true: param value toggles between 0f and 1f;\n        /// If false: param value ranges from 0.0f to 1.0f;\n        /// </summary>\n        public bool IsBoolean;\n\n        /// <summary>\n        /// \n        /// </summary>\n        public float Value;\n\n        /// <summary>\n        /// Explanatory text that describes what effect changing this parameter will have/\n        /// </summary>\n        public string Description;\n\n    }\n\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/DebugScreens/MyGuiScreenDebugColors.cs",
    "content": "﻿using System;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Render;\nusing MinerWars.AppCode.Game.Effects;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils;\nusing KeenSoftwareHouse.Library.Extensions;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.World;\n\nnamespace MinerWars.AppCode.Game.GUI\n{\n    class MyGuiScreenDebugColors : MyGuiScreenDebugBase\n    {\n        public static bool EnableRenderLights = true;\n\n        public MyGuiScreenDebugColors()\n            : base(0.35f * Color.Yellow.ToVector4(), false)\n        {\n            m_closeOnEsc = true;\n            m_drawEvenWithoutFocus = true;\n            m_isTopMostScreen = false;\n            m_canHaveFocus = false;\n\n            RecreateControls(true);\n        }\n\n        public override void RecreateControls(bool contructor)\n        {\n            Controls.Clear();\n\n            \n\n            m_scale = 0.62f;\n\n            AddCaption(new System.Text.StringBuilder(\"Colors settings\"), Color.Yellow.ToVector4());\n\n            MyGuiControlLabel label = new MyGuiControlLabel(this, new Vector2(0.01f, -m_size.Value.Y / 2.0f + 0.07f), null, new System.Text.StringBuilder(\"(press ALT to share focus)\"), Color.Yellow.ToVector4(), MyGuiConstants.LABEL_TEXT_SCALE * 0.7f,\n                               MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_TOP);\n            Controls.Add(label);\n\n            m_currentPosition = -m_size.Value / 2.0f + new Vector2(0.02f, 0.10f);\n\n            m_currentPosition.Y += 0.01f;\n            AddLabel(new StringBuilder(\"Sun\"), Color.Yellow.ToVector4(), 1.2f);\n\n            var sunObj = MySector.SunProperties;\n\n            MyEffectShadowMap shadowMapEffect = MyRender.GetEffect(MyEffects.ShadowMap) as MyEffectShadowMap;\n            if (shadowMapEffect != null)\n            {\n                m_currentPosition.Y += 0.01f;\n                AddSlider(new StringBuilder(\"Intensity\"), 0, 10.0f, sunObj, MemberHelper.GetMember(() => MySector.SunProperties.SunIntensity));\n\n                m_currentPosition.Y += 0.01f;\n                AddColor(new StringBuilder(\"Sun color\"), sunObj, MemberHelper.GetMember(() => MySector.SunProperties.SunDiffuse));\n\n                m_currentPosition.Y += 0.02f;\n                AddColor(new StringBuilder(\"Sun specular\"), sunObj, MemberHelper.GetMember(() => MySector.SunProperties.SunSpecular));\n\n                m_currentPosition.Y += 0.02f;\n                AddSlider(new StringBuilder(\"Back sun intensity\"), 0, 5.0f, sunObj, MemberHelper.GetMember(() => MySector.SunProperties.BackSunIntensity));\n\n                m_currentPosition.Y += 0.01f;\n                AddColor(new StringBuilder(\"Back sun color\"), sunObj, MemberHelper.GetMember(() => MySector.SunProperties.BackSunDiffuse));\n\n                m_currentPosition.Y += 0.02f;\n                AddColor(new StringBuilder(\"Ambient color\"), sunObj, MemberHelper.GetMember(() => MySector.SunProperties.AmbientColor));\n\n                m_currentPosition.Y += 0.02f;\n                AddSlider(new StringBuilder(\"Ambient multiplier\"), 0, 5.0f, sunObj, MemberHelper.GetMember(() => MySector.SunProperties.AmbientMultiplier));\n\n                AddSlider(new StringBuilder(\"Env. ambient intensity\"), 0, 5.0f, sunObj, MemberHelper.GetMember(() => MySector.SunProperties.EnvironmentAmbientIntensity));\n            }\n\n            /*\n            //m_currentPosition.Y += 0.01f;\n            AddLabel(new StringBuilder(\"Player ship\"), Color.Yellow.ToVector4(), 1.2f);\n\n            //m_currentPosition.Y += 0.01f;\n            AddSlider(new StringBuilder(\"Light range multiplier\"), 0, 10, null, MemberHelper.GetMember(() => MySmallShip.LightRangeMultiplier));\n            AddSlider(new StringBuilder(\"Light intensity multiplier\"), 0, 10, null, MemberHelper.GetMember(() => MySmallShip.LightIntensityMultiplier));\n            AddSlider(new StringBuilder(\"Reflector intensity multiplier\"), 0, 10, null, MemberHelper.GetMember(() => MySmallShip.ReflectorIntensityMultiplier));\n            */\n            //m_currentPosition.Y += 0.01f;\n            AddLabel(new StringBuilder(\"Post process\"), Color.Yellow.ToVector4(), 1.2f);\n            //m_currentPosition.Y += 0.01f;\n            MyPostProcessContrast contrastPP = MyRender.GetPostProcess(MyPostProcessEnum.Contrast) as MyPostProcessContrast;\n            if (contrastPP != null)\n            {\n                AddSlider(new StringBuilder(\"Contrast\"), -10, 10, contrastPP, MemberHelper.GetMember(() => contrastPP.Contrast));\n                AddSlider(new StringBuilder(\"Hue\"), -10, 10, contrastPP, MemberHelper.GetMember(() => contrastPP.Hue));\n                AddSlider(new StringBuilder(\"Saturation\"), -10, 10, contrastPP, MemberHelper.GetMember(() => contrastPP.Saturation));\n            }\n\n    \n            m_currentPosition.Y += 0.01f;\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenDebugRenderColors\";\n        }\n\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/DebugScreens/MyGuiScreenDebugDebris.cs",
    "content": "﻿#region Using\nusing System;\nusing System.Collections.Generic;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Render;\nusing MinerWars.AppCode.Game.Effects;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils;\nusing KeenSoftwareHouse.Library.Extensions;\nusing MinerWars.AppCode.Game.Models;\nusing MinerWars.AppCode.Game;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Physics;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.AppCode.Game.World;\n#endregion\n\nnamespace MinerWars.AppCode.Game.GUI\n{\n    class MyGuiScreenDebugDebris : MyGuiScreenDebugBase\n    {\n        public MyGuiScreenDebugDebris()\n            : base(0.35f * Color.Yellow.ToVector4(), false)\n        {\n            m_closeOnEsc = true;\n            m_drawEvenWithoutFocus = true;\n            m_isTopMostScreen = false;\n            m_canHaveFocus = false;\n\n            RecreateControls(true);\n        }\n\n        public override void RecreateControls(bool contructor)\n        {\n            Controls.Clear();\n\n            AddCaption(new System.Text.StringBuilder(\"Debris field\"), Color.Yellow.ToVector4());\n\n            MyGuiControlLabel label = new MyGuiControlLabel(this, new Vector2(0.01f, -m_size.Value.Y / 2.0f + 0.07f), null, new System.Text.StringBuilder(\"(press ALT to share focus)\"), Color.Yellow.ToVector4(), MyGuiConstants.LABEL_TEXT_SCALE * 0.7f,\n                               MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_TOP);\n            Controls.Add(label);\n\n            m_scale = 0.7f;\n            m_currentPosition = -m_size.Value / 2.0f + new Vector2(0.02f, 0.10f);\n\n            var debrisObj = MySector.DebrisProperties;\n            AddLabel(new StringBuilder(\"Debris field\"), Vector4.One, 1.0f);\n            AddCheckBox(new StringBuilder(\"Enabled\"), debrisObj, MemberHelper.GetMember(() => MySector.DebrisProperties.Enabled));\n            AddSlider(new StringBuilder(\"Distance between\"), 1, 500, debrisObj, MemberHelper.GetMember(() => MySector.DebrisProperties.DistanceBetween));\n            AddSlider(new StringBuilder(\"Half count in direction\"), 1, 50, debrisObj, MemberHelper.GetMember(() => MySector.DebrisProperties.CountInDirectionHalf));\n            AddSlider(new StringBuilder(\"Max distance\"), 1, 1000, debrisObj, MemberHelper.GetMember(() => MySector.DebrisProperties.MaxDistance));\n            AddSlider(new StringBuilder(\"Full scale distance\"), 1, 1000, debrisObj, MemberHelper.GetMember(() => MySector.DebrisProperties.FullScaleDistance));\n\n            m_currentPosition.Y += 0.01f;\n\n            AddLabel(new StringBuilder(\"Voxel debris\"), Vector4.One, 1.0f);\n            var low = AddSlider(new StringBuilder(\"Lower size\"), 0.0005f, 0.05f, null, MemberHelper.GetMember(() => MyExplosionDebrisVoxel.DebrisScaleLower));\n            var high = AddSlider(new StringBuilder(\"Upper size\"), 0.0005f, 0.05f, null, MemberHelper.GetMember(() => MyExplosionDebrisVoxel.DebrisScaleUpper));\n            AddSlider(new StringBuilder(\"Clamp size\"), 0.1f, 2.0f, null, MemberHelper.GetMember(() => MyExplosionDebrisVoxel.DebrisScaleClamp));\n\n            low.LabelDecimalPlaces = 4;\n            high.LabelDecimalPlaces = 4;\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenDebugDebris\";\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/DebugScreens/MyGuiScreenDebugDeveloper.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Render;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils;\nusing KeenSoftwareHouse.Library.Extensions;\nusing System.Linq;\n\nnamespace MinerWars.AppCode.Game.GUI\n{\n    using System.Diagnostics;\n    using MinerWars.AppCode.Game.GUI.DebugScreens;\n    using MinerWars.AppCode.Game.TransparentGeometry.Particles;\n    using MinerWars.AppCode.Game.Entities;\n    using MinerWars.CommonLIB.AppCode.Networking;\n    using MinerWars.AppCode.Game.World;\n    using MinerWars.CommonLIB.AppCode.ObjectBuilders;\n    using MinerWars.AppCode.Game.SolarSystem;\n    using MinerWars.AppCode.Game.Missions;\n    using MinerWars.AppCode.Game.Managers.Session;\n    using MinerWars.AppCode.App;\n    using MinerWars.AppCode.Game.Journal;\n    using MinerWars.AppCode.Physics;\n    using MinerWars.AppCode.Game.World.Global;\n\n    class MyGuiScreenDebugDeveloper : MyGuiScreenDebugBase\n    {\n        //Render\n        static MyGuiScreenDebugRender s_debugRenderScreen;\n        static MyGuiScreenDebugRenderLights s_debugRenderLightsScreen;\n        static MyGuiScreenDebugRenderOptimizations s_debugRenderOptsScreen;\n        static MyGuiScreenDebugRenderPruning s_debugRenderPruningScreen;\n        static MyGuiScreenDebugRenderModelFX s_debugRenderModelFXScreen;\n        static MyGuiScreenDebugRenderGlobalFX s_debugRenderGlobalFXScreen;\n        static MyGuiScreenDebugRenderSectorFX s_debugRenderSectorFXScreen;\n        static MyGuiScreenDebugRenderHDR s_debugRenderHDRScreen;\n        static MyGuiScreenDebugColors s_debugColorsScreen;\n        static MyGuiScreenDebugVolumetricSSAO s_debugVolumetricSSAOScreen;\n        //static MyGuiScreenRenderModules s_renderModulesScreen = new MyGuiScreenRenderModules();\n        static MyGuiScreenRenderModule s_renderModulePrepareForDraw;\n        static MyGuiScreenRenderModule s_renderModuleBackground;\n        static MyGuiScreenRenderModule s_renderModuleAlphaBlendPreHDR;\n        static MyGuiScreenRenderModule s_renderModuleDebugDraw;\n\n        //Game\n        static MyGuiScreenDebugShip s_debugShipScreen;\n        static MyGuiScreenDebugGame s_debugGameScreen;\n        static MyGuiScreenDebugDebris s_debugDebrisScreen;\n        static MyGuiScreenDebugSystem s_debugSystemScreen;\n        static MyGuiScreenDebugPlayerShake s_debugPlayerShakeScreen;\n        static MyGuiScreenDebugPlayerCameraSpring s_debugPlayerCameraSpringScreen;\n        static MyGuiScreenDebugSmallShipWeaponsOffset s_debugSmallShipWeaponsOffsetScreen;\n        static MyGuiScreenDebugFillSector s_debugFillSectorScreen;\n        static MyGuiScreenDebugBot s_debugBotScreen;\n        static MyGuiScreenDebugGlobalEvents s_debugGameGlobalEvents;\n\n        static List<MyGuiControlCheckbox> s_groupList = new List<MyGuiControlCheckbox>();\n\n        private MyMissionID m_missionIdToStart;\n        private MySolarSystemAreaEnum m_areaToTravel;\n\n\n        class MyDevelopGroup\n        {\n            public MyDevelopGroup(string name)\n            {\n                Name = name;\n                Item2 = new List<MyGuiControlBase>();\n            }\n            public string Name;\n            public MyGuiControlBase Item1;\n            public List<MyGuiControlBase> Item2;\n        };\n\n\n        //Main groups\n        static MyDevelopGroup s_debugDrawGroup = new MyDevelopGroup(\"Debug draw\");\n        static MyDevelopGroup s_performanceGroup = new MyDevelopGroup(\"Performance\");\n        static List<MyDevelopGroup> s_mainGroups = new List<MyDevelopGroup>()\n        {\n            s_debugDrawGroup,\n            s_performanceGroup,\n        };\n        static MyDevelopGroup s_activeMainGroup = s_debugDrawGroup;\n\n\n        //Develop groups\n        static MyDevelopGroup s_renderGroup = new MyDevelopGroup(\"Render\");\n        static MyDevelopGroup s_gameGroup = new MyDevelopGroup(\"Game\");\n        //static MyDevelopGroup s_testsGroup = new MyDevelopGroup(\"Tests\");\n        static MyDevelopGroup s_travelGroup = new MyDevelopGroup(\"Travel\");\n        static MyDevelopGroup s_missionsGroup = new MyDevelopGroup(\"Missions\");\n        static List<MyDevelopGroup> s_developerGroups = new List<MyDevelopGroup>()\n        {\n            s_renderGroup,\n            s_gameGroup,\n            s_travelGroup,\n            s_missionsGroup,\n        };\n        static MyDevelopGroup s_activeGroup = s_missionsGroup;\n\n        static MyGuiScreenDebugDeveloper()\n        {\n            if (!MyFakes.SIMPLE_DEBUG_SCREEN)\n            {\n                s_debugRenderScreen = new MyGuiScreenDebugRender();\n                s_debugRenderLightsScreen = new MyGuiScreenDebugRenderLights();\n                s_debugRenderOptsScreen = new MyGuiScreenDebugRenderOptimizations();\n                s_debugRenderPruningScreen = new MyGuiScreenDebugRenderPruning();\n                s_debugRenderModelFXScreen = new MyGuiScreenDebugRenderModelFX();\n                s_debugRenderGlobalFXScreen = new MyGuiScreenDebugRenderGlobalFX();\n                s_debugRenderSectorFXScreen = new MyGuiScreenDebugRenderSectorFX();\n                s_debugRenderHDRScreen = new MyGuiScreenDebugRenderHDR();\n                s_debugColorsScreen = new MyGuiScreenDebugColors();\n                s_debugVolumetricSSAOScreen = new MyGuiScreenDebugVolumetricSSAO();\n                //static MyGuiScreenRenderModules s_renderModulesScreen = new MyGuiScreenRenderModules();\n                s_renderModulePrepareForDraw = new MyGuiScreenRenderModule(MyRenderStage.PrepareForDraw, \"Prepare for draw\");\n                s_renderModuleBackground = new MyGuiScreenRenderModule(MyRenderStage.Background, \"Background\");\n                s_renderModuleAlphaBlendPreHDR = new MyGuiScreenRenderModule(MyRenderStage.AlphaBlendPreHDR, \"Pre-HDR Aplha blend\");\n                s_renderModuleDebugDraw = new MyGuiScreenRenderModule(MyRenderStage.DebugDraw, \"Debug draw\");\n\n                //Game\n                s_debugShipScreen = new MyGuiScreenDebugShip();\n                s_debugGameScreen = new MyGuiScreenDebugGame();\n                s_debugDebrisScreen = new MyGuiScreenDebugDebris();\n                s_debugSystemScreen = new MyGuiScreenDebugSystem();\n                s_debugPlayerShakeScreen = new MyGuiScreenDebugPlayerShake();\n                s_debugPlayerCameraSpringScreen = new MyGuiScreenDebugPlayerCameraSpring();\n                s_debugSmallShipWeaponsOffsetScreen = new MyGuiScreenDebugSmallShipWeaponsOffset();\n                s_debugFillSectorScreen = new MyGuiScreenDebugFillSector();\n                s_debugBotScreen = new MyGuiScreenDebugBot();\n                s_debugGameGlobalEvents = new MyGuiScreenDebugGlobalEvents();\n            }\n        }\n\n        /// <summary>\n        /// Initializes a new instance of the <see cref=\"MyGuiScreenDebugDeveloper\"/> class.\n        /// </summary>\n        public MyGuiScreenDebugDeveloper()\n            : base(new Vector2(.5f, .5f), new Vector2(0.35f, 0.9f), 0.35f * Color.Yellow.ToVector4(), true)\n        {\n            if (MyFakes.SIMPLE_DEBUG_SCREEN)\n            {\n                m_currentPosition.Y = -0.25f;\n                Controls.Clear();\n                CreateControlsSimple();\n            }\n            else\n            {\n                CreateControls();\n            }\n\n            // This disable drawing of the background image as well:\n            m_backgroundColor = null;\n\n            m_enableBackgroundFade = true;\n            m_backgroundFadeColor = new Vector4(0.0f, 0.0f, 0.0f, 0.5f);\n        }\n\n        private void CreateControlsSimple()\n        {\n            float groupStartPosition = m_currentPosition.Y;\n            //CreateMissionControls(null, 0, 1000);\n\n            m_currentPosition.Y = groupStartPosition;\n            m_buttonXOffset = -0.4f;\n            CreateMissionControls(s_missionsGroup.Item2, 0, 15);\n\n            m_currentPosition.Y = groupStartPosition;\n            m_buttonXOffset = -0.2f;\n            CreateMissionControls(s_missionsGroup.Item2, 15, 30);\n\n            m_currentPosition.Y = groupStartPosition;\n            m_buttonXOffset = 0;\n            CreateMissionControls(s_missionsGroup.Item2, 30, 45);\n\n            m_currentPosition.Y = groupStartPosition;\n            m_buttonXOffset = 0.2f;\n            CreateMissionControls(s_missionsGroup.Item2, 45, 60);\n\n            m_currentPosition.Y = groupStartPosition;\n            m_buttonXOffset = 0.4f;\n            CreateMissionControls(s_missionsGroup.Item2, 60, 75);\n        }\n\n        private void CreateControls()\n        {\n            Controls.Clear();\n            foreach (MyDevelopGroup developerGroup in s_developerGroups)\n            {\n                if (developerGroup.Item2.Count > 0)\n                {\n                    EnableGroup(developerGroup.Item2, false);\n                    developerGroup.Item2.Clear();\n                }\n            }\n            foreach (MyDevelopGroup mainGroup in s_mainGroups)\n            {\n                if (mainGroup.Item2.Count > 0)\n                {\n                    EnableGroup(mainGroup.Item2, false);\n                    mainGroup.Item2.Clear();\n                }\n            }\n\n            AddCaption(MyTextsWrapperEnum.DeveloperCaption, Color.Yellow.ToVector4());\n\n            m_scale = 0.9f;\n            m_closeOnEsc = true;\n            m_checkBoxOffset = 0.015f;\n\n            m_currentPosition = -m_size.Value / 2.0f + new Vector2(0.03f, /*0.15f*//*0.05f*/0.15f);\n\n\n            float buttonOffset = 0;\n            foreach (MyDevelopGroup mainGroup in s_mainGroups)\n            {\n                mainGroup.Item1 = new MyGuiControlButton(this, new Vector2(-0.03f + m_currentPosition.X + buttonOffset, m_currentPosition.Y), new Vector2(0.09f, 0.03f), new Vector4(1, 1, 0.5f, 1), new StringBuilder(mainGroup.Name), null, Color.Yellow.ToVector4(), MyGuiConstants.DEBUG_BUTTON_TEXT_SCALE * MyGuiConstants.DEBUG_LABEL_TEXT_SCALE * m_scale * 1.2f, OnClickMainGroup, MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER, true);\n                buttonOffset += 0.09f;\n                Controls.Add(mainGroup.Item1);\n            }\n\n            m_currentPosition.Y += 0.04f * m_scale;\n\n            float mainStartPosition = m_currentPosition.Y;\n\n            CreateDebugDrawControls();\n\n            m_currentPosition.Y = mainStartPosition;\n            CreatePerformanceControls();\n\n            foreach (MyDevelopGroup mainGroup in s_mainGroups)\n            {\n                EnableGroup(mainGroup.Item2, false);\n            }\n            EnableGroup(s_activeMainGroup.Item2, true);\n\n\n            //Screens\n            AddLabel(new StringBuilder(\"Debug screens\"), Color.Yellow.ToVector4(), 1.2f);\n\n            buttonOffset = 0;\n            foreach (MyDevelopGroup developerGroup in s_developerGroups)\n            {\n                developerGroup.Item1 = new MyGuiControlButton(this, new Vector2(-0.03f + m_currentPosition.X + buttonOffset, m_currentPosition.Y), new Vector2(0.09f, 0.03f), new Vector4(1,1,0.5f,1), new StringBuilder(developerGroup.Name), null, Color.Yellow.ToVector4(), MyGuiConstants.LABEL_TEXT_SCALE * MyGuiConstants.DEBUG_BUTTON_TEXT_SCALE * m_scale * 1.2f, OnClickGroup, MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER, true);\n                buttonOffset += 0.09f;\n                Controls.Add(developerGroup.Item1);\n            }\n\n            m_currentPosition.Y += 0.04f * m_scale;\n\n            float groupStartPosition = m_currentPosition.Y;\n\n            AddGroupBox(new StringBuilder(\"Overall settings\"), s_debugRenderScreen, s_renderGroup.Item2);\n            AddGroupBox(new StringBuilder(\"Lights settings\"), s_debugRenderLightsScreen, s_renderGroup.Item2);\n            AddGroupBox(new StringBuilder(\"Color settings\"), s_debugColorsScreen, s_renderGroup.Item2);\n            AddGroupBox(new StringBuilder(\"Optimizations\"), s_debugRenderOptsScreen, s_renderGroup.Item2);\n            AddGroupBox(new StringBuilder(\"Pruning and culling\"), s_debugRenderPruningScreen, s_renderGroup.Item2);\n            AddGroupBox(new StringBuilder(\"Model FX\"), s_debugRenderModelFXScreen, s_renderGroup.Item2);\n            AddGroupBox(new StringBuilder(\"Global FX\"), s_debugRenderGlobalFXScreen, s_renderGroup.Item2);\n            AddGroupBox(new StringBuilder(\"Sector FX\"), s_debugRenderSectorFXScreen, s_renderGroup.Item2);\n            AddGroupBox(new StringBuilder(\"HDR\"), s_debugRenderHDRScreen, s_renderGroup.Item2);\n            //AddGroupBox(new StringBuilder(\"Render modules\"), s_renderModulesScreen, s_renderGroup.Item2);\n            AddGroupBox(new StringBuilder(\"Render module - Prepare for draw\"), s_renderModulePrepareForDraw, s_renderGroup.Item2);\n            AddGroupBox(new StringBuilder(\"Render module - Background\"), s_renderModuleBackground, s_renderGroup.Item2);\n            AddGroupBox(new StringBuilder(\"Render module - Pre-HDR Alpha blend\"), s_renderModuleAlphaBlendPreHDR, s_renderGroup.Item2);\n            AddGroupBox(new StringBuilder(\"Render module - Debug draw\"), s_renderModuleDebugDraw, s_renderGroup.Item2);\n            MyPostProcessBase volumetricSsao2PP = MyRender.GetPostProcess(MyPostProcessEnum.VolumetricSSAO2);\n            if (volumetricSsao2PP != null)\n                AddGroupBox(new StringBuilder(\"SSAO\"), s_debugVolumetricSSAOScreen, s_renderGroup.Item2);\n\n            m_currentPosition.Y = groupStartPosition;\n\n            AddGroupBox(new StringBuilder(\"Game\"), s_debugGameScreen, s_gameGroup.Item2);\n            AddGroupBox(new StringBuilder(\"System\"), s_debugSystemScreen, s_gameGroup.Item2);\n            AddGroupBox(new StringBuilder(\"Player Ship\"), s_debugShipScreen, s_gameGroup.Item2);\n            AddGroupBox(new StringBuilder(\"Player Shake\"), s_debugPlayerShakeScreen, s_gameGroup.Item2);\n            AddGroupBox(new StringBuilder(\"Player Camera Spring\"), s_debugPlayerCameraSpringScreen, s_gameGroup.Item2);\n            AddGroupBox(new StringBuilder(\"Small Ship Weapons\"), s_debugSmallShipWeaponsOffsetScreen, s_gameGroup.Item2);\n            AddGroupBox(new StringBuilder(\"Debris\"), s_debugDebrisScreen, s_gameGroup.Item2);\n            AddGroupBox(new StringBuilder(\"Filling sector\"), s_debugFillSectorScreen, s_gameGroup.Item2);\n            AddGroupBox(new StringBuilder(\"Bots\"), s_debugBotScreen, s_gameGroup.Item2);\n            AddGroupBox(new StringBuilder(\"Global Events\"), s_debugGameGlobalEvents, s_gameGroup.Item2);\n            AddValidateAllMissionsButton();\n\n            m_currentPosition.Y = groupStartPosition;\n            //AddButton(new StringBuilder(\"Particle stress\"), OnParticleStressTest, s_testsGroup.Item2);\n            m_buttonXOffset = -0.2f;\n            CreateTravelControls(s_travelGroup.Item2, 0, 15);\n\n            m_currentPosition.Y = groupStartPosition;\n            m_buttonXOffset = 0.0f;\n            CreateTravelControls(s_travelGroup.Item2, 15, 30);\n\n            m_currentPosition.Y = groupStartPosition;\n            m_buttonXOffset = 0.2f;\n            CreateTravelControls(s_travelGroup.Item2, 30, 45);\n\n            /*\n            AddButton(new StringBuilder(\"Mercury\"), OnTravelToMercury, s_travelGroup.Item2);\n            AddButton(new StringBuilder(\"Venus\"), OnTravelToVenus, s_travelGroup.Item2);\n            AddButton(new StringBuilder(\"Earth\"), OnTravelToEarth, s_travelGroup.Item2);\n            AddButton(new StringBuilder(\"Mars\"), OnTravelToMars, s_travelGroup.Item2);\n            AddButton(new StringBuilder(\"Jupiter\"), OnTravelToJupiter, s_travelGroup.Item2);\n            AddButton(new StringBuilder(\"Saturn\"), OnTravelToSaturn, s_travelGroup.Item2);\n            AddButton(new StringBuilder(\"Uran\"), OnTravelToUran, s_travelGroup.Item2);\n            AddButton(new StringBuilder(\"Neptun\"), OnTravelToNeptun, s_travelGroup.Item2);\n              */\n            m_currentPosition.Y = groupStartPosition;\n\n            CreateControlsSimple();\n            \n            foreach (MyDevelopGroup developerGroup in s_developerGroups)\n            {\n                EnableGroup(developerGroup.Item2, false);\n            }\n            EnableGroup(s_activeGroup.Item2, true);\n            this.SetControlIndex(Controls.IndexOf(s_activeGroup.Item1));\n        }\n\n        private void AddValidateAllMissionsButton()\n        {\n            AddButton(new StringBuilder(\"Validate all missions\"), new MyGuiControlButton.OnButtonClick((bnt) => ValidateAllMissionsClick()), s_gameGroup.Item2);\n        }\n\n        void CreateMissionControls(List<MyGuiControlBase> group, int minIndex, int maxIndex)\n        {\n            int i = 0;\n            foreach (var mission in MyMissions.Missions.Values.OfType<MyMission>().OrderBy(x => x.DebugName.ToString()))\n            {\n                if ((i >= minIndex) && (i < maxIndex))\n                {\n                    var missionId = mission.ID; // local copy for lambda\n                    MyGuiControlButton.OnButtonClick handler = new MyGuiControlButton.OnButtonClick((bnt) => ButtonClickAction(missionId));\n\n                    AddButton(mission.DebugName, handler, group, MyGuiControlButtonTextAlignment.LEFT);\n                }\n                i++;\n            }\n        }\n\n\n        void CreateTravelControls(List<MyGuiControlBase> group, int minIndex, int maxIndex)\n        {\n            int i = 0;\n\n            foreach (var solarSystemAreaPair in MySolarSystemConstants.Areas.OrderBy(x => x.Value.Name))\n            {\n                if ((i >= minIndex) && (i < maxIndex))\n                {\n                    var sectorID = solarSystemAreaPair.Key;\n                    MyGuiControlButton.OnButtonClick handler = new MyGuiControlButton.OnButtonClick((bnt) => ButtonClickAction(sectorID));\n                    AddButton(new StringBuilder(solarSystemAreaPair.Value.Name), handler, group);\n                }\n                i++;\n            }\n        }\n\n\n        private void ButtonClickAction(MySolarSystemAreaEnum solarSystemArea)\n        {\n            m_areaToTravel= solarSystemArea;\n            if (MyClientServer.LoggedPlayer != null)\n            {\n                StartTravelCallback();\n            }\n            else\n            {\n                MyGuiManager.RemoveScreen(this, true);\n                MyGuiScreenMainMenu.AddLoginScreenDrmFree(new Action(StartTravelCallback));\n            }\n        }\n\n        private void ButtonClickAction(MyMissionID missionId)\n        {\n            if (MinerWars.AppCode.Game.Sessions.MyMultiplayerGameplay.IsRunning)\n                MinerWars.AppCode.Game.Sessions.MyMultiplayerGameplay.Static.Shutdown();\n\n            m_missionIdToStart = missionId;\n            if (MyClientServer.LoggedPlayer != null)\n            {\n                StartMissionCallback();\n            }\n            else\n            {\n                MyGuiManager.RemoveScreen(this, true);                \n                MyGuiScreenMainMenu.AddLoginScreenDrmFree(new Action(StartMissionCallback));\n            }\n        }\n\n        public void StartTravelCallback()\n        {\n            OnTravelToAnywhere(MySolarSystemUtils.KmToSectors(MySolarSystemConstants.Areas[m_areaToTravel].GetCenter()));\n        }\n\n        public void StartMissionCallback()\n        {\n            MinerWars.AppCode.Game.GUI.MyGuiScreenMainMenu.StartMission(m_missionIdToStart);\n            this.CloseScreen();\n        }\n\n        private void ValidateAllMissionsClick()\n        {\n            MyGuiManager.RemoveScreen(this, true);\n            MyGuiScreenMainMenu.AddLoginScreenDrmFree(new Action(ValidateAllMissionsCallback));\n        }\n\n        public void ValidateAllMissionsCallback()\n        {\n            ValidateAllMissionsStartingFrom(0);\n        }\n\n        void ValidateAllMissionsStartingFrom(int index)\n        {\n            var allMissions = MyMissions.Missions.Values.OfType<MyMission>().ToList();\n            if (index >= allMissions.Count) return;\n\n            var mission = allMissions[index];\n            MyMissionID missionId = mission.ID;\n            // each mission is automatically validated after start\n            MyGuiManager.CloseAllScreensExcept(MyGuiScreenGamePlay.Static);\n\n            var startSessionScreen = new MyGuiScreenStartSessionProgress(MyMwcStartSessionRequestTypeEnum.NEW_STORY,\n                MyTextsWrapperEnum.StartGameInProgressPleaseWait, null, MyGameplayDifficultyEnum.EASY, null, null);\n\n            startSessionScreen.OnSuccessEnter = new Action<MyGuiScreenGamePlayType, MyMwcStartSessionRequestTypeEnum, MyMwcObjectBuilder_Checkpoint>((screenType, sessionType, checkpoint) =>\n            {\n                Action<MyMwcObjectBuilder_Sector, Vector3> enterSuccessAction = new Action<MyMwcObjectBuilder_Sector, Vector3>((sector, newPosition) =>\n                {\n                    MyMwcVector3Int sectorPosition;\n                    sectorPosition = sector.Position;\n\n                    MyMwcSectorIdentifier newSectorIdentifier = new MyMwcSectorIdentifier(MyMwcSectorTypeEnum.STORY, MyClientServer.LoggedPlayer.GetUserId(), sectorPosition, null);\n                    var newScreen = new MyGuiScreenGamePlay(MyGuiScreenGamePlayType.GAME_STORY, null, newSectorIdentifier, sector.Version, MyMwcStartSessionRequestTypeEnum.LOAD_CHECKPOINT);\n                    var loadScreen = new MyGuiScreenLoading(newScreen, MyGuiScreenGamePlay.Static);\n                    newScreen.OnGameReady += new ScreenHandler((screen) =>\n                    {\n                        ((MyMission)MyMissions.GetMissionByID(missionId)).Accept();\n                        ValidateAllMissionsStartingFrom(index + 1);  // validate the next mission\n                    });\n\n                    loadScreen.AnnounceLeaveToServer = true;\n                    loadScreen.LeaveSectorReason = MyMwcLeaveSectorReasonEnum.TRAVEL;\n\n                    // Current sector and sector object builder has changed\n                    checkpoint.ActiveMissionID = -1; // Manually deactivate mission\n                    checkpoint.PlayerObjectBuilder.ShipObjectBuilder.PositionAndOrientation.Position = newPosition;\n                    checkpoint.EventLogObjectBuilder.Clear(); // Or just clear mission start/finish\n\n                    // Make prereq missions completed\n                    foreach (var prereq in mission.RequiredMissions)\n                    {\n                        var start = new MyEventLogEntry() { EventType = EventTypeEnum.MissionStarted, EventTypeID = (int)prereq }.GetObjectBuilder();\n                        var end = new MyEventLogEntry() { EventType = EventTypeEnum.MissionFinished, EventTypeID = (int)prereq }.GetObjectBuilder();\n                        checkpoint.EventLogObjectBuilder.Add(start);\n                        checkpoint.EventLogObjectBuilder.Add(end);\n                    }\n\n                    checkpoint.SectorObjectBuilder = sector;\n                    checkpoint.CurrentSector.Position = sector.Position;\n                    loadScreen.AddEnterSectorResponse(checkpoint, missionId);\n\n                    MyGuiManager.AddScreen(loadScreen);\n\n                    if (MyMinerGame.IsPaused())\n                        MyMinerGame.SwitchPause();\n                });\n\n                //  Load neighbouring sector \n                MyGuiManager.AddScreen(new MyGuiScreenEnterSectorProgress(MyMwcTravelTypeEnum.SOLAR, mission.Location.Sector, Vector3.Zero, enterSuccessAction));\n\n                //var newGameplayScreen = new MyGuiScreenGamePlay(screenType, null, checkpoint.CurrentSector, sessionType);\n                //var loadScreen = new MyGuiScreenLoading(newGameplayScreen, MyGuiScreenGamePlay.Static);\n\n                //loadScreen.AddEnterSectorResponse(checkpoint);\n                //MyGuiManager.AddScreen(loadScreen);\n            });\n\n            MyGuiManager.AddScreen(startSessionScreen);\n        }\n\n        //Because of edit and continue\n        void CreateDebugDrawControls()\n        {\n            //Debug draw\n            AddCheckBox(MyTextsWrapperEnum.DrawPhysicsPrimitives, null, MemberHelper.GetMember(() => MyMwcFinalBuildConstants.DrawJLXCollisionPrimitives), true, s_debugDrawGroup.Item2);\n            AddCheckBox(MyTextsWrapperEnum.DrawHelperPrimitives, null, MemberHelper.GetMember(() => MyMwcFinalBuildConstants.DrawHelperPrimitives), true, s_debugDrawGroup.Item2);\n            AddCheckBox(new StringBuilder(\"Wireframe\"), null, MemberHelper.GetMember(() => MyRender.Wireframe), true, s_debugDrawGroup.Item2);\n            AddCheckBox(new StringBuilder(\"Prefab kinematic\"), null, MemberHelper.GetMember(() => MinerWars.AppCode.Game.Entities.SubObjects.MyPrefabKinematic.DRAW_DEBUG_INFORMATION), true, s_debugDrawGroup.Item2);\n            \n            m_currentPosition.Y += 0.01f;\n        }\n\n\n        //Because of edit and continue\n        void CreatePerformanceControls()\n        {\n            AddCheckBox(new StringBuilder(\"Bot Logic\"), null, MemberHelper.GetMember(() => MySmallShipBot.BotLogic), true, s_performanceGroup.Item2);\n            AddCheckBox(new StringBuilder(\"Physics Simulation\"), null, MemberHelper.GetMember(() => MyPhysics.PhysicsSimulation), true, s_performanceGroup.Item2);\n            AddCheckBox(new StringBuilder(\"Particles\"), null, MemberHelper.GetMember(() => MyParticlesManager.Enabled), true, s_performanceGroup.Item2);\n            AddCheckBox(new StringBuilder(\"Large Weapons\"), null, MemberHelper.GetMember(() => MyLargeShipWeaponsConstants.Enabled), true, s_performanceGroup.Item2);\n\n            m_currentPosition.Y += 0.01f;\n        }\n\n        protected void AddGroupBox(StringBuilder text, MyGuiScreenDebugBase screen, List<MyGuiControlBase> controlGroup = null)\n        {\n            MyGuiControlCheckbox checkBox = AddCheckBox(text, screen, controlGroup);\n            s_groupList.Add(checkBox);\n\n            checkBox.OnCheck += delegate(MyGuiControlCheckbox sender)\n            {\n                if (sender.Checked)\n                {\n                    foreach (MyGuiControlCheckbox chb in s_groupList)\n                    {\n                        if (chb != sender)\n                            chb.Checked = false;\n                    }\n                }\n            };\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenDebugDeveloper\";\n        }\n\n\n        void OnClickGroup(MyGuiControlButton sender)\n        {\n            EnableGroup(s_activeGroup.Item2, false);\n\n            foreach (MyDevelopGroup developerGroup in s_developerGroups)\n            {\n                if (developerGroup.Item1 == sender)\n                {\n                    s_activeGroup = developerGroup;\n                    break;\n                }\n            }\n\n            EnableGroup(s_activeGroup.Item2, true);\n        }\n\n\n        void OnClickMainGroup(MyGuiControlButton sender)\n        {\n            EnableGroup(s_activeMainGroup.Item2, false);\n\n            foreach (MyDevelopGroup mainGroup in s_mainGroups)\n            {\n                if (mainGroup.Item1 == sender)\n                {\n                    s_activeMainGroup = mainGroup;\n                    break;\n                }\n            }\n\n            EnableGroup(s_activeMainGroup.Item2, true);\n        }\n\n        void EnableGroup(List<MyGuiControlBase> group, bool enable)\n        {\n            if (!enable)\n            {\n                foreach (MyGuiControlBase control in group)\n                {\n                    Controls.Remove(control);\n                }\n            }\n            else\n            {\n                foreach (MyGuiControlBase control in group)\n                {\n                    Controls.Add(control);\n                }\n            }\n        }\n\n        void OnParticleStressTest(MyGuiControlButton sender)\n        {\n            MyEntities.CloseAll(false);\n\n\n            Vector3 position = MyCamera.Position + MyCamera.ForwardVector * 300;\n\n            int explosionCount = 50;\n            float particlesDistance = 60;\n\n            Vector3 particlePosition = position + MyCamera.LeftVector * particlesDistance * (explosionCount / 2);\n\n            for (int i = 0; i < explosionCount; i++)\n            {\n                MyParticleEffect effect = MyParticlesManager.CreateParticleEffect((int)MyParticleEffectsIDEnum.Explosion_Blaster);\n                effect.WorldMatrix = Matrix.CreateTranslation(particlePosition);\n\n                effect.OnDelete += new EventHandler(effect_OnDelete);\n\n                particlePosition += -MyCamera.LeftVector * particlesDistance;\n            }\n        }\n\n        void OnTravelToAnywhere(MyMwcVector3Int sector)\n        {\n            MyGuiManager.CloseAllScreensExcept(MyGuiScreenGamePlay.Static);\n            m_sectorToTravel = sector;\n            MyGuiScreenMainMenu.AddLoginScreenDrmFree(new Action(TravelToSectorCallback));            \n        }\n\n        private MyMwcVector3Int m_sectorToTravel;\n\n        public void TravelToSectorCallback()\n        {\n            MyGuiManager.AddScreen(new MyGuiScreenStartSessionProgress(\n                                                        MyMwcStartSessionRequestTypeEnum.SANDBOX_OWN,\n                                                        MyTextsWrapperEnum.StartGameInProgressPleaseWait,\n                                                        new MyMwcSectorIdentifier(\n                                                            MyMwcSectorTypeEnum.STORY, MyClientServer.LoggedPlayer.GetUserId(),\n                                                            m_sectorToTravel, null),\n                                                            MyGameplayDifficultyEnum.EASY,\n                                                            null,\n                                                        null));\n        }\n\n                             \n\n        void effect_OnDelete(object sender, EventArgs e)\n        {     /*\n            MyParticleEffect deletedEffect = (MyParticleEffect)sender;\n            MyParticleEffect effect = MyParticlesManager.CreateParticleEffect((int)MyParticleEffectsIDEnum.Explosion_Blaster);\n            effect.WorldMatrix = Matrix.CreateTranslation(deletedEffect.WorldMatrix.Translation);\n            effect.EnableLods = false;\n\n            effect.OnDelete += new EventHandler(effect_OnDelete);\n               * */\n        }\n\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/DebugScreens/MyGuiScreenDebugDialogues.cs",
    "content": "﻿#region Using\n\nusing System;\nusing System.Globalization;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Editor;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.GUI.Helpers;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Entities.InfluenceSpheres;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.InfluenceSpheres;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.AppCode.Game.Audio.Dialogues;\n\n#endregion\n\nnamespace MinerWars.AppCode.Game.GUI.ScreenEditor.Object3D\n{\n    class MyGuiScreenDebugDialogues : MyGuiScreenBase\n    {\n        private MyGuiControlCombobox m_selectDialogueCombobox;\n        float m_controlsAdded;\n\n        public static readonly Vector2 CONTROLS_DELTA = new Vector2(0, 0.0525f);\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenDebugDialogues\";\n        }\n\n        public MyGuiScreenDebugDialogues(Vector2? screenPosition)\n            : base(new Vector2(0.5f, 0.5f), MyGuiConstants.SCREEN_BACKGROUND_COLOR, new Vector2(0.7f, 0.9f))\n        {\n            Init();\n        }\n\n        protected void AddOkAndCancelButtonControls(Vector2 offset)\n        {\n            //  Buttons OK and CANCEL\n            Vector2 buttonDelta = new Vector2(0.1f, m_size.Value.Y / 2.0f - MyGuiConstants.MESSAGE_BOX_BORDER_AREA_Y - MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE.Y / 2.0f - 0.01f) + offset;\n            Controls.Add(new MyGuiControlButton(this, new Vector2(-buttonDelta.X, buttonDelta.Y), MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.PlayDemo, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnPlayClick, MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n            Controls.Add(new MyGuiControlButton(this, new Vector2(+buttonDelta.X, buttonDelta.Y), MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.Cancel, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnCancelClick, MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n        }\n\n\n        public virtual void OnPlayClick(MyGuiControlButton sender)\n        {\n            int key = m_selectDialogueCombobox.GetSelectedKey();\n            MyDialogueEnum dialogue = (MyDialogueEnum)key;\n            MyDialogues.Play(dialogue);\n        }\n\n        public virtual void OnCancelClick(MyGuiControlButton sender)\n        {\n            CloseScreen();\n        }\n\n        protected virtual Vector2 GetControlsOriginLeftFromScreenSize()\n        {\n            return new Vector2(-m_size.Value.X / 2.0f + 0.03f, -m_size.Value.Y / 2.0f + 0.09f);\n        }\n\n        #region Init\n\n        private void Init()\n        {\n            m_size = new Vector2(0.7f, 1);\n\n            m_enableBackgroundFade = true;\n\n            AddCaption(new StringBuilder(\"Debug dialogues\"), Vector4.One, new Vector2(0, 0.01f));\n\n            AddOkAndCancelButtonControls(new Vector2(0.03f, -0.02f));\n\n            var controlsOrigin = GetControlsOriginLeftFromScreenSize() - new Vector2(-0.018f, 0.025f);\n            m_controlsAdded = 1;\n\n            CreateControlsSound(controlsOrigin);\n\n            if (MyGuiScreenGamePlay.Static == null)\n            {\n                MinerWars.AppCode.Game.HUD.MyHud.LoadData();\n                MinerWars.AppCode.Game.HUD.MyHud.LoadContent(MyGuiManager.GetMainMenuScreen());\n            }\n\n            MyGuiScreenDebugDeveloper devscreen = MyGuiManager.GetScreenDebugDeveloper();\n            if (devscreen != null)\n                devscreen.CloseScreen();\n        }\n\n        protected override void OnClosed()\n        {\n            base.OnClosed();\n\n            MyDialogues.Stop();\n        }\n\n        private void CreateControlsSound(Vector2 controlsOrigin)\n        {\n            AddSeparator(controlsOrigin);\n\n            Controls.Add(new MyGuiControlLabel(this, controlsOrigin + m_controlsAdded * CONTROLS_DELTA + new Vector2(0.05f, 0), null, MyTextsWrapperEnum.SoundInfluenceSphereType, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n\n            m_controlsAdded++;\n            \n            m_selectDialogueCombobox = new MyGuiControlCombobox(this,\n                                                             controlsOrigin + m_controlsAdded++ * CONTROLS_DELTA +\n                                                             new Vector2(MyGuiConstants.COMBOBOX_LONGMEDIUM_SIZE.X / 2.0f, 0),\n                                                             MyGuiControlPreDefinedSize.LONGMEDIUM,\n                                                             MyGuiConstants.COMBOBOX_BACKGROUND_COLOR,\n                                                             MyGuiConstants.COMBOBOX_TEXT_SCALE, 6, false, false, false);\n\n            System.Collections.Generic.SortedDictionary<string, int> dialogues = new System.Collections.Generic.SortedDictionary<string, int>();\n\n            foreach (MyDialogueEnum dialogue in Enum.GetValues(typeof(MyDialogueEnum)))\n            {\n                dialogues.Add(dialogue.ToString(), (int)dialogue);\n            }\n\n            foreach (var dialogue in dialogues)\n            {\n                m_selectDialogueCombobox.AddItem(dialogue.Value, null, new StringBuilder(dialogue.Key));\n            }\n\n            m_selectDialogueCombobox.SelectItemByIndex(0);\n\n            Controls.Add(m_selectDialogueCombobox);\n        }\n\n        private void AddSeparator(Vector2 controlsOrigin)\n        {\n            var pos = controlsOrigin + m_controlsAdded * CONTROLS_DELTA + new Vector2(0.3f, -0.01f);\n\n            Controls.Add(new MyGuiControlPanel(this, pos,\n                                               new Vector2(0.6f, 0.005f), Vector4.Zero, 2,\n                                               MyGuiConstants.DEFAULT_CONTROL_NONACTIVE_COLOR));\n\n            m_controlsAdded += 0.5f;\n        }\n\n        #endregion\n\n        public override bool Draw(float backgroundFadeAlpha)\n        {\n            if (base.Draw(backgroundFadeAlpha) == false)\n                return false;\n\n            MinerWars.AppCode.Game.HUD.MyHud.Draw(HUD.MyHudDrawPassEnum.SECOND, MyCameraAttachedToEnum.Camera, false);\n\n            return true;\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/DebugScreens/MyGuiScreenDebugFillSector.cs",
    "content": "﻿#region Using\nusing System;\nusing System.Collections.Generic;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Render;\nusing MinerWars.AppCode.Game.Effects;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils;\nusing KeenSoftwareHouse.Library.Extensions;\nusing MinerWars.AppCode.Game.Models;\nusing MinerWars.AppCode.Game;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Physics;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing SysUtils.Utils;\nusing MinerWars.AppCode.Game.SolarSystem;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.AppCode.Game.BackgroundCube;\n#endregion\n\nnamespace MinerWars.AppCode.Game.GUI\n{\n    class MyGuiScreenDebugFillSector : MyGuiScreenDebugBase\n    {\n        List<MyEntity> m_allEntities = new List<MyEntity>();\n\n        MySectorObjectCounts m_sectorObjectCounts = new MySectorObjectCounts();\n\n        public MyGuiScreenDebugFillSector()\n            : base(0.35f * Color.Yellow.ToVector4(), false)\n        {\n            m_closeOnEsc = true;\n            m_drawEvenWithoutFocus = true;\n            m_isTopMostScreen = false;\n            m_canHaveFocus = false;\n\n            RecreateControls(true);\n        }\n\n        public override void RecreateControls(bool contructor)\n        {\n            Controls.Clear();\n\n            AddCaption(new System.Text.StringBuilder(\"Filling sector\"), Color.Yellow.ToVector4());\n\n            MyGuiControlLabel label = new MyGuiControlLabel(this, new Vector2(0.01f, -m_size.Value.Y / 2.0f + 0.07f), null, new System.Text.StringBuilder(\"(press ALT to share focus)\"), Color.Yellow.ToVector4(), MyGuiConstants.LABEL_TEXT_SCALE * 0.7f,\n                               MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_TOP);\n            Controls.Add(label);\n\n            m_scale = 0.7f;\n            m_currentPosition = -m_size.Value / 2.0f + new Vector2(0.02f, 0.10f);\n            m_currentPosition.Y += 0.01f;\n\n            AddLabel(new StringBuilder(\"Sector world\"), Color.Yellow.ToVector4(), 1.2f);\n            AddButton(new StringBuilder(\"Clear sector\"), delegate { ClearSector(); });\n            AddButton(new StringBuilder(\"Clear generated\"), delegate { ClearGenerated(); });\n\n            AddSlider(new StringBuilder(\"Voxels 64\"), 0.0f, 200.0f, m_sectorObjectCounts, MemberHelper.GetMember(() => m_sectorObjectCounts.Voxels64));\n            AddSlider(new StringBuilder(\"Voxels 128\"), 0.0f, 100.0f, m_sectorObjectCounts, MemberHelper.GetMember(() => m_sectorObjectCounts.Voxels128));\n            AddSlider(new StringBuilder(\"Voxels 256\"), 0.0f, 50.0f, m_sectorObjectCounts, MemberHelper.GetMember(() => m_sectorObjectCounts.Voxels256));\n            AddSlider(new StringBuilder(\"Voxels 512\"), 0.0f, 50.0f, m_sectorObjectCounts, MemberHelper.GetMember(() => m_sectorObjectCounts.Voxels512));\n            AddSlider(new StringBuilder(\"Static asteroids small\"), 0.0f, 50000.0f, m_sectorObjectCounts, MemberHelper.GetMember(() => m_sectorObjectCounts.StaticAsteroidSmall));\n            AddSlider(new StringBuilder(\"Static asteroids medium\"), 0.0f, 50000.0f, m_sectorObjectCounts, MemberHelper.GetMember(() => m_sectorObjectCounts.StaticAsteroidMedium));\n            AddSlider(new StringBuilder(\"Static asteroids large\"), 0.0f, 3000.0f, m_sectorObjectCounts, MemberHelper.GetMember(() => m_sectorObjectCounts.StaticAsteroidLarge));\n            AddSlider(new StringBuilder(\"Motherships\"), 0.0f, 1000.0f, m_sectorObjectCounts, MemberHelper.GetMember(() => m_sectorObjectCounts.Motherships));\n            AddSlider(new StringBuilder(\"Large debris\"), 0.0f, 1000.0f, m_sectorObjectCounts, MemberHelper.GetMember(() => m_sectorObjectCounts.StaticDebrisFields));\n            AddButton(new StringBuilder(\"Create custom world (STONE)\"), delegate { CreateCustomWorldStone(); });\n            AddButton(new StringBuilder(\"Create custom world (ICE)\"), delegate { CreateCustomWorldIce(); });\n            AddButton(new StringBuilder(\"Create generated world\"), delegate { CreateGeneratedWorld(); });\n            AddButton(new StringBuilder(\"Remove generated world\"), delegate { RemoveGeneratedWorld(); });\n            AddButton(new StringBuilder(\"Create solar areas\"), delegate { MySolarSystemConstants.CreateAreas(); });\n\n            m_currentPosition.Y += 0.01f;\n            AddLabel(new StringBuilder(\"Impostors\"), Color.Yellow.ToVector4(), 1.2f);\n            AddButton(new StringBuilder(\"Reload\"), delegate { MyDistantImpostors.ReloadContent(); });\n\n            m_currentPosition.Y += 0.01f;\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenDebugFillSector\";\n        }\n\n        void ClearSector()\n        {\n            MyEntities.CloseAll(false);\n        }\n\n        void ClearGenerated()\n        {\n            List<MyEntity> entitiesToRemove = new List<MyEntity>();\n            foreach (MyEntity entity in MyEntities.GetEntities())\n            {\n                if (entity.IsGenerated)\n                    entitiesToRemove.Add(entity);\n            }\n\n            foreach (MyEntity entity in entitiesToRemove)\n            {\n                entity.MarkForClose();\n            }\n        }\n\n        void CreateCustomWorldStone()\n        {\n            List<BoundingSphere> safeAreas = new List<BoundingSphere>();\n            foreach (MyEntity entity in MyEntities.GetEntities())\n            {\n                MyDummyPoint dummyPoint = entity as MyDummyPoint;\n\n                if (dummyPoint != null && dummyPoint.DummyFlags.HasFlag(MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.MyDummyPointFlags.SAFE_AREA))\n                {\n                    safeAreas.Add(dummyPoint.WorldVolume);\n                }\n            }\n\n            BoundingSphere playerSafeArea = new BoundingSphere(MySession.PlayerShip.GetPosition(), 150); //smallship + mothership\n            safeAreas.Add(playerSafeArea);\n\n            //MyEntities.CloseAll(false);\n            var generator = new MySectorGenerator((int)DateTime.Now.Ticks, safeAreas);\n            var sectorObjects = generator.GenerateObjectBuilders(MyGuiScreenGamePlay.Static.GetSectorIdentifier().Position, m_sectorObjectCounts, false);\n            MyGuiScreenGamePlay.CreateFromSectorObjectBuilder(sectorObjects);\n\n            MyEntities.UpdateAfterSimulation(); //Updates AABBs of objects\n            MinerWars.AppCode.Game.Render.MyRender.RebuildCullingStructure();\n        }\n\n        void CreateCustomWorldIce()\n        {\n            //MyEntities.CloseAll(false);\n            var generator = new MySectorGenerator((int)DateTime.Now.Ticks);\n            var sectorObjects = generator.GenerateObjectBuilders(MyGuiScreenGamePlay.Static.GetSectorIdentifier().Position, m_sectorObjectCounts, false);\n            MyGuiScreenGamePlay.CreateFromSectorObjectBuilder(sectorObjects);\n\n            MyEntities.UpdateAfterSimulation(); //Updates AABBs of objects\n            MinerWars.AppCode.Game.Render.MyRender.RebuildCullingStructure();\n        }\n\n        void CreateGeneratedWorld()\n        {\n          //  MyEntities.CloseAll(false);\n            List<MyMwcObjectBuilder_Base> objectBuilders = new List<MyMwcObjectBuilder_Base>();\n            \n            List<BoundingSphere> safeAreas = new List<BoundingSphere>();\n            foreach (MyEntity existingEntity in MyEntities.GetEntities())\n            {\n                MyDummyPoint dummy = existingEntity as MyDummyPoint;\n                if (dummy != null && dummy.DummyFlags.HasFlag(MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.MyDummyPointFlags.SAFE_AREA))\n                {\n                    safeAreas.Add(existingEntity.WorldVolume);\n                }\n            }\n\n            MyGuiScreenGamePlay.Static.GenerateSector(MyGuiScreenGamePlay.Static.GetSectorIdentifier().Position, objectBuilders, safeAreas, false);\n            MyGuiScreenGamePlay.CreateFromObjectBuilders(objectBuilders);\n\n            MyEntities.UpdateAfterSimulation(); //Updates AABBs of objects\n            MinerWars.AppCode.Game.Render.MyRender.RebuildCullingStructure();\n        }\n\n        void RemoveGeneratedWorld()\n        {\n            List<MyEntity> toDelete = new List<MyEntity>();\n            foreach (MyEntity existingEntity in MyEntities.GetEntities())\n            {\n                if (existingEntity.IsGenerated)\n                    toDelete.Add(existingEntity);\n            }\n\n            foreach (MyEntity entity in toDelete)\n            {\n                entity.MarkForClose();\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/DebugScreens/MyGuiScreenDebugGame.cs",
    "content": "﻿#region Using\nusing System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.GUI.Helpers;\nusing MinerWars.AppCode.Game.HUD;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Entities.Ships.SubObjects;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Render;\nusing MinerWars.AppCode.Game.Effects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils;\nusing KeenSoftwareHouse.Library.Extensions;\nusing MinerWars.AppCode.Game.Models;\nusing MinerWars.AppCode.Game;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Physics;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.AppCode.Game.Entities.Prefabs;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.Game.Prefabs;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Gameplay;\nusing SysUtils.Utils;\n\nusing MinerWars.AppCode.Game.Entities.WayPoints;\nusing MinerWars.AppCode.Game.Audio.Dialogues;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.AppCode.Game.Missions;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.AppCode.Game.GUI.ScreenEditor.Object3D;\nusing MinerWars.CommonLIB.AppCode.Import;\n\n#endregion\n\nnamespace MinerWars.AppCode.Game.GUI\n{\n    class MyGuiScreenDebugGame : MyGuiScreenDebugBase\n    {\n        List<MyEntity> m_debugFloatingObjects = new List<MyEntity>();\n        List<MyEntity> m_debugStaticObjects = new List<MyEntity>();\n        List<MyEntity> m_debugStaticAsteroids = new List<MyEntity>();\n        List<MyEntity> m_debugPrefabModels = new List<MyEntity>();\n        List<MyEntity> m_debugShips = new List<MyEntity>();\n        List<MyEntity> m_debugWeapons = new List<MyEntity>();\n        List<MyEntity> m_debugItems = new List<MyEntity>();\n        List<MyEntity> m_debugPrefabEntities = new List<MyEntity>();\n\n        public MyGuiScreenDebugGame()\n            : base(0.35f * Color.Yellow.ToVector4(), false)\n        {\n            m_closeOnEsc = true;\n            m_drawEvenWithoutFocus = true;\n            m_isTopMostScreen = false;\n            m_canHaveFocus = false;\n\n            RecreateControls(true);\n        }\n\n        public override void RecreateControls(bool contructor)\n        {\n            Controls.Clear();\n\n            m_scale = 0.65f;\n\n            AddCaption(new System.Text.StringBuilder(\"Game debug\"), Color.Yellow.ToVector4());\n\n            \n            MyGuiControlLabel label = new MyGuiControlLabel(this, new Vector2(0.01f, -m_size.Value.Y / 2.0f + 0.07f), null, new System.Text.StringBuilder(\"(press ALT to share focus)\"), Color.Yellow.ToVector4(), MyGuiConstants.LABEL_TEXT_SCALE * 0.7f,\n                               MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_TOP);\n            Controls.Add(label);\n\n\n            m_currentPosition = -m_size.Value / 2.0f + new Vector2(0.02f, 0.10f);\n\n\n            var profile = MyRenderConstants.RenderQualityProfile; // Obfuscated MemberHelper can't access property, so store it to field\n\n            AddLabel(new StringBuilder(\"GDC\"), Color.Yellow.ToVector4(), 1.2f);\n            AddSlider(new StringBuilder(\"Voxel debris count\"), 0.0f, 50.0f, profile, MemberHelper.GetMember(() => profile.ExplosionDebrisCountMultiplier));\n            AddSlider(new StringBuilder(\"Prefab damage multiplier\"), 0.01f, 100.0f, null, MemberHelper.GetMember(() => MyPrefabBase.PrefabDamageMultiplier));\n         \n            m_currentPosition.Y += 0.01f;\n            AddLabel(new StringBuilder(\"Game\"), Color.Yellow.ToVector4(), 1.2f);\n\n            AddCheckBox(new StringBuilder(\"Show ship trusts\"), null, MemberHelper.GetMember(() => MySmallShip.DebugDrawEngineThrusts)); m_currentPosition.Y -= 0.0025f;\n            AddCheckBox(new StringBuilder(\"Show ship weapons\"), null, MemberHelper.GetMember(() => MySmallShip.DebugDrawEngineWeapons)); m_currentPosition.Y -= 0.0025f;\n            AddCheckBox(new StringBuilder(\"Show HUD\"), null, MemberHelper.GetMember(() => MyHud.Visible)); m_currentPosition.Y -= 0.0025f;\n            AddCheckBox(new StringBuilder(\"Show debug HUD\"), null, MemberHelper.GetMember(() => MyHud.ShowDebugHud)); m_currentPosition.Y -= 0.0025f;\n            AddCheckBox(new StringBuilder(\"Player simulation\"), null, MemberHelper.GetMember(() => MySmallShip.PlayerSimulation)); m_currentPosition.Y -= 0.0025f;\n            AddCheckBox(new StringBuilder(\"Trichording\"), null, MemberHelper.GetMember(() => MyGuiInput.Trichording)); m_currentPosition.Y -= 0.0025f;\n            AddCheckBox(new StringBuilder(\"Show waypoints\"), MyHud.ShowDebugWaypoints, ShowWayPoints); m_currentPosition.Y -= 0.0025f;\n            AddCheckBox(new StringBuilder(\"Highlight obstructed waypoint edges\"), null, MemberHelper.GetMember(() => MyHud.ShowDebugWaypointsCollisions)); m_currentPosition.Y -= 0.0025f;\n            AddCheckBox(new StringBuilder(\"Show generated waypoints\"), null, MemberHelper.GetMember(() => MyHud.ShowDebugGeneratedWaypoints)); m_currentPosition.Y -= 0.0025f;\n            AddButton(new StringBuilder(\"Load last checkpoint\"), LoadLastCheckpoint);\n            AddButton(new StringBuilder(\"Debug dialogues\"), OnDebugDialogues);\n\n            m_currentPosition.Y += 0.005f;\n\n            AddButton(new StringBuilder(\"Shorten ship health\"), OnShortenShipHealth);\n            AddButton(new StringBuilder(\"Shorten player health\"), OnShortenPlayerHealth);\n            AddButton(new StringBuilder(\"Shorten armor\"), OnShortenArmor);\n            AddButton(new StringBuilder(\"Shorten fuel\"), OnShortenFuel);\n            AddButton(new StringBuilder(\"Shorten oxygen\"), OnShortenOxygen);\n\n            m_currentPosition.Y += 0.01f;\n            AddLabel(new StringBuilder(\"Models debug\"), Color.Yellow.ToVector4(), 1.2f);\n\n            AddCheckBox(new StringBuilder(\"Show floating objects\"), m_debugFloatingObjects.Count > 0, ShowFloatingObjectsChange); m_currentPosition.Y -= 0.0025f;\n            AddCheckBox(new StringBuilder(\"Show static objects\"), m_debugStaticObjects.Count > 0, ShowStaticObjectsChange); m_currentPosition.Y -= 0.0025f;\n            AddCheckBox(new StringBuilder(\"Show static asteroids\"), m_debugStaticAsteroids.Count > 0, ShowStaticAsteroidsChange); m_currentPosition.Y -= 0.0025f;\n            AddCheckBox(new StringBuilder(\"Show prefab models\"), m_debugPrefabModels.Count > 0, ShowPrefabModelsChange); m_currentPosition.Y -= 0.0025f;\n            AddCheckBox(new StringBuilder(\"Show ships\"), m_debugShips.Count > 0, ShowShipsChange); m_currentPosition.Y -= 0.0025f;\n            AddCheckBox(new StringBuilder(\"Show weapons\"), m_debugWeapons.Count > 0, ShowWeaponsChange); m_currentPosition.Y -= 0.0025f;\n            AddCheckBox(new StringBuilder(\"Show debugs\"), m_debugItems.Count > 0, ShowDebugChange); m_currentPosition.Y -= 0.0025f;\n            AddCheckBox(new StringBuilder(\"Show prefabs as entities\"), m_debugPrefabEntities.Count > 0, ShowPrefabEntitiesChange); m_currentPosition.Y -= 0.0025f;\n\n\n            m_currentPosition.Y += 0.01f;\n            AddLabel(new StringBuilder(\"Output\"), Color.Yellow.ToVector4(), 1.2f);\n\n            AddButton(new StringBuilder(\"Generate list of assets\"), OnGenerateListOfAssets);\n            AddButton(new StringBuilder(\"Generate list of dialogues\"), OnGenerateListOfDialogues);\n            AddButton(new StringBuilder(\"Gen.list of unused dialogues\"), OnGenerateListOfUnusedDialogues);\n            AddButton(new StringBuilder(\"Generate list of missions\"), OnGenerateListOfMissions);\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenDebugGame\";\n        }\n\n        private void SimulateLostMessagesChange(MyGuiControlCheckbox sender)\n        {\n            MyMwcFinalBuildConstants.SIMULATE_LOST_MESSAGES_SENT_OUT = sender.Checked ? (int?)4 : null;\n        }\n\n        public class MyDebugDebris : MySmallDebris\n        {\n            public void Init(StringBuilder hudLabelText, Models.MyModelsEnum? modelLod0Enum, Models.MyModelsEnum? modelLod1Enum, MyMeshDrawTechnique? drawTechnique = null)\n            {\n                base.Init(hudLabelText, modelLod0Enum, null, null, null, null);\n\n                this.Name = hudLabelText != null ? hudLabelText.ToString() : null;\n\n                if (this.Name != null)\n                {\n                    MinerWars.AppCode.Game.HUD.MyHud.ChangeText(this, new StringBuilder(this.Name));\n                }\n              \n                this.WorldMatrix = Matrix.Identity;\n\n                if (drawTechnique != null)\n                    InitDrawTechniques(drawTechnique.Value); \n            }\n\n            public override bool Draw(MyRenderObject renderObject)\n            {\n                return base.Draw(renderObject);\n            }\n        }\n\n        private void ShowFloatingObjectsChange(MyGuiControlCheckbox sender)\n        {\n            ShowModelsChange(sender, m_debugFloatingObjects, \"Models2\\\\ObjectsFloating\");\n        }\n\n        private void ShowStaticObjectsChange(MyGuiControlCheckbox sender)\n        {\n            ShowModelsChange(sender, m_debugStaticObjects, \"Models2\\\\ObjectsStatic\");\n        }\n\n        private void ShowStaticAsteroidsChange(MyGuiControlCheckbox sender)\n        {\n            List<MyMwcObjectBuilder_StaticAsteroid_TypesEnum> statEnumsA = new List<MyMwcObjectBuilder_StaticAsteroid_TypesEnum>()\n            {\n               MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid10000m_A,\n               MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid5000m_A,\n               MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid2000m_A,\n               MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid1000m_A,\n               MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid500m_A,\n               MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid300m_A,\n               MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid100m_A,\n               MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid50m_A,\n               MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid30m_A,\n               MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid20m_A,\n               MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid10m_A,\n            };\n\n            List<MyMwcObjectBuilder_StaticAsteroid_TypesEnum> statEnumsB = new List<MyMwcObjectBuilder_StaticAsteroid_TypesEnum>()\n            {\n               MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid10000m_B,\n               MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid5000m_B,\n               MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid2000m_B,\n               MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid1000m_B,\n               MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid500m_B,\n               MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid300m_B,\n               MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid100m_B,\n               MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid50m_B,\n               MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid30m_B,\n               MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid20m_B,\n               MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid10m_B,\n            };\n\n            ShowModelsChange(sender, m_debugStaticAsteroids, \"Models2\\\\ObjectsStatic\\\\Asteroids\", MyMeshDrawTechnique.VOXELS_STATIC_ASTEROID, true, MyMwcVoxelMaterialsEnum.Ice_01, statEnumsB);\n        }\n\n        private void ShowWayPoints(MyGuiControlCheckbox sender)\n        {\n            MyHud.ShowDebugWaypoints = !MyHud.ShowDebugWaypoints;\n            MyWayPointGraph.SetVisibilityOfAllWaypoints(MyHud.ShowDebugWaypoints);\n        }\n\n        private void ShowPrefabModelsChange(MyGuiControlCheckbox sender)\n        {\n            ShowModelsChange(sender, m_debugPrefabModels, \"Models2\\\\Prefabs\");\n        }\n\n        private void ShowShipsChange(MyGuiControlCheckbox sender)\n        {\n            ShowModelsChange(sender, m_debugShips, \"Models2\\\\Ships\");\n        }\n\n        private void ShowWeaponsChange(MyGuiControlCheckbox sender)\n        {\n            ShowModelsChange(sender, m_debugWeapons, \"Models2\\\\Weapons\");\n        }\n\n        private void ShowDebugChange(MyGuiControlCheckbox sender)\n        {\n            ShowModelsChange(sender, m_debugItems, \"Models2\\\\Debug\");\n        }\n\n        MyEntity addStaticAsteroid(StringBuilder hudLabel, MyMwcObjectBuilder_StaticAsteroid_TypesEnum staticEnum, ref Vector3 currentPosition, Vector3 forward, MyMeshDrawTechnique? drawTechnique = null, MyMwcVoxelMaterialsEnum? material = null)\n        {\n            MyStaticAsteroid staticAsteroid = new MyStaticAsteroid();\n            MyMwcObjectBuilder_StaticAsteroid objectBuilder = new MyMwcObjectBuilder_StaticAsteroid(staticEnum, material);\n            staticAsteroid.Init(hudLabel.ToString(), objectBuilder, Matrix.Identity);\n            return addEntity(staticAsteroid, ref currentPosition, forward);\n        }\n\n        MyEntity addDebris(StringBuilder hudLabel, MyModelsEnum? lod0, MyModelsEnum? lod1, ref Vector3 currentPosition, Vector3 forward, MyMeshDrawTechnique? drawTechnique = null)\n        {\n            MyDebugDebris debugDebris = new MyDebugDebris();\n            debugDebris.Init(hudLabel, lod0, lod1, drawTechnique);\n\n            return addEntity(debugDebris, ref currentPosition, forward);\n        }\n\n        MyEntity addEntity(MyEntity entity, ref Vector3 currentPosition, Vector3 forward)\n        {\n            float offset = (entity.WorldAABB.Max - entity.WorldAABB.Min).Length() / 2.0f + 15;\n            currentPosition += forward * offset;\n\n            Matrix mat = Matrix.CreateTranslation(entity.LocalVolumeOffset) * entity.WorldMatrix;\n            entity.SetPosition(currentPosition - mat.Translation);\n\n            currentPosition += forward * offset;\n\n            return entity;\n        }\n\n\n        private void ShowModelsChange(MyGuiControlCheckbox sender, List<MyEntity> entities, string modelPath, MyMeshDrawTechnique? drawTechnique = null, bool staticAsteroids = false, MyMwcVoxelMaterialsEnum? voxelMaterial = null, List<MyMwcObjectBuilder_StaticAsteroid_TypesEnum> asteroidEnums = null)\n        {\n            if (sender.Checked)\n            {\n                string[] modelNames = Enum.GetNames(typeof(MyModelsEnum));\n                int numModels = modelNames.Length;\n\n                Vector3 forward = MySession.PlayerShip.GetWorldRotation().Forward;\n                Vector3 currentPosition = MySession.PlayerShip.GetPosition() + forward * 20;\n\n                if (!staticAsteroids)\n                {\n                    for (int i = 0; i < numModels; i++)\n                    {\n                        if (!MyModels.GetModelAssetName((MyModelsEnum)i).StartsWith(modelPath))\n                            continue;\n\n                        MyModel model = MyModels.GetModelOnlyData((MyModelsEnum)i);\n\n                        MyEntity debugDebris = addDebris(new StringBuilder(modelNames[i]), (MyModelsEnum)i, null, ref currentPosition, forward, drawTechnique);\n\n                        MyEntities.Add(debugDebris);\n                        entities.Add(debugDebris);\n                    }\n                }\n                else\n                {\n                      //foreach(MyMwcObjectBuilder_StaticAsteroid_TypesEnum statEnum in Enum.GetValues(typeof(MyMwcObjectBuilder_StaticAsteroid_TypesEnum)))\n                      foreach(MyMwcObjectBuilder_StaticAsteroid_TypesEnum statEnum in asteroidEnums)\n                      {\n                          MyEntity debugDebris = addStaticAsteroid(new StringBuilder(statEnum.ToString()), statEnum, ref currentPosition, forward, null, voxelMaterial.Value);\n                          MyEntities.Add(debugDebris);\n                          entities.Add(debugDebris);\n                      }\n                }\n            }\n            else\n            {\n                foreach (MyEntity entity in entities)\n                {\n                    entity.MarkForClose();\n                }\n                entities.Clear();\n            }\n        }\n\n        public override void UnloadContent()\n        {\n            base.UnloadContent();\n\n            m_debugFloatingObjects.Clear();\n            m_debugStaticObjects.Clear();\n            m_debugPrefabModels.Clear();\n            m_debugShips.Clear();\n            m_debugWeapons.Clear();\n            m_debugItems.Clear();\n            m_debugPrefabEntities.Clear();\n        }\n\n        private void ShowPrefabEntitiesChange(MyGuiControlCheckbox sender)\n        {\n            if (sender.Checked)\n            {\n                Vector3 forward = MySession.PlayerShip.GetWorldRotation().Forward;\n                Vector3 currentPosition = MySession.PlayerShip.GetPosition() + forward * 20;                \n\n                foreach (MyMwcObjectBuilderTypeEnum prefabModuleEnum in MyGuiPrefabHelpers.MyMwcPrefabTypesEnumValues)\n                {\n                    foreach (int prefabId in MyMwcObjectBuilder_Base.GetObjectBuilderIDs(prefabModuleEnum))\n                    {                                                \n                        MyPrefabConfiguration config = MyPrefabConstants.GetPrefabConfiguration(prefabModuleEnum, prefabId);\n\n                        MyEntity debugDebris = addDebris(new StringBuilder(prefabModuleEnum + \"_\" + prefabId), config.ModelLod0Enum, config.ModelLod1Enum, ref currentPosition, forward);\n                        m_debugPrefabEntities.Add(debugDebris);\n                    }                    \n                }\n\n                \n            }\n            else\n            {\n                foreach (MyEntity entity in m_debugPrefabEntities)\n                {\n                    entity.MarkForClose();\n                }\n                m_debugPrefabEntities.Clear();\n            }\n            \n        }\n\n        int DialogueSentencesComparer(MyDialogueSentence a, MyDialogueSentence b)\n        {\n            if (a.Cue.HasValue && b.Cue.HasValue)\n            {\n                return Enum.GetName(typeof(MySoundCuesEnum), a.Cue.Value).CompareTo(Enum.GetName(typeof(MySoundCuesEnum), b.Cue.Value));\n            }\n            else if (a.Cue.HasValue) return 1;\n            else if (b.Cue.HasValue) return -1;\n            else return 0;\n        }\n\n        private void OnGenerateListOfMissions(MyGuiControlButton sender)\n        {\n            foreach(MyMissionID missionID in Enum.GetValues(typeof(MyMissionID))){\n                MyMission mission = MyMissions.GetMissionByID(missionID) as MyMission;\n                if (mission != null)\n                {\n                    if (!System.IO.Directory.Exists(MyFileSystemUtils.GetApplicationUserDataFolder() + \"\\\\MissionTexts\"))\n                    {\n                        System.IO.Directory.CreateDirectory(MyFileSystemUtils.GetApplicationUserDataFolder() + \"\\\\MissionTexts\");\n                    }\n                    using (System.IO.StreamWriter output = new System.IO.StreamWriter(System.IO.File.Open(MyFileSystemUtils.GetApplicationUserDataFolder() + \"\\\\MissionTexts\\\\\" + Enum.GetName(typeof(MyMissionID), missionID) + \".txt\", System.IO.FileMode.Create)))\n                    {\n                        output.WriteLine(\"Mission: \" + mission.DebugName);\n                        output.WriteLine();\n                        output.WriteLine(\"MyMissionID.\" + Enum.GetName(typeof(MyMissionID), mission.ID));\n                        output.WriteLine(\"DebugName: \\\"\" + mission.DebugName + \"\\\"\");\n                        output.WriteLine(\"Name: \\\"\" + mission.Name + \"\\\"\");\n                        output.WriteLine(\"Description: \\\"\" + mission.Description + \"\\\"\");\n                        output.WriteLine();\n                        output.WriteLine(\"Objectives:\");\n\n                        foreach(MyObjective objective in mission.Objectives){\n                            output.WriteLine(\"MyMissionID.\" + Enum.GetName(typeof(MyMissionID), objective.ID));\n                            output.WriteLine(\"Name: \\\"\" + objective.Name + \"\\\"\");\n                            output.WriteLine(\"Description: \\\"\" + objective.Description + \"\\\"\");\n                            output.WriteLine();\n                        }\n\n                        output.Flush();\n                        output.Close();\n                    }\n                }\n            }\n        }\n\n        private void OnGenerateListOfDialogues(MyGuiControlButton sender)\n        {\n/*\n            List<string> dialoguesString = new List<string>();\n\n            foreach (MyDialoguesWrapperEnum textEnum in Enum.GetValues(typeof(MyDialoguesWrapperEnum)))\n            {\n                dialoguesString.Add(textEnum.ToString());\n            }\n\n            dialoguesString.Sort();\n\n             var dialoguesPath = Path.Combine(MyFileSystemUtils.GetApplicationUserDataFolder(), \"Dialogues.txt\");\n            using (var output = new StreamWriter(File.Open(dialoguesPath, FileMode.Create)))\n            {\n                StringBuilder line = new StringBuilder();\n                foreach (string str in dialoguesString)\n                {\n                    foreach (MyDialoguesWrapperEnum textEnum in Enum.GetValues(typeof(MyDialoguesWrapperEnum)))\n                    {\n                        if (textEnum.ToString() == str)\n                        {\n                            line.Clear();\n\n                            foreach (MyDialogueEnum dialogueEnum in Enum.GetValues(typeof(MyDialogueEnum)))\n                            {\n                                MyDialogue dialogue = MyDialogueConstants.GetDialogue(dialogueEnum);\n                                foreach (MyDialogueSentence sentence in dialogue.Sentences)\n                                {\n                                    if (sentence.Text == textEnum)\n                                    {\n                                        line.Append(sentence.Actor.ToString() + \" (\" + MyDialoguesWrapper.Get(textEnum).ToString() + \")\");\n                                        break;\n                                    }\n                                }\n                            }\n\n                            output.WriteLine(line);\n                            break;\n                        }\n                    }\n                }\n\n                output.Flush();\n                output.Close();\n            }\n\n           \n*/\n\n            \n            //get\n            List<MyDialogueSentence> sentences = new List<MyDialogueSentence>();\n            foreach (MyDialogueEnum dialogueEnum in Enum.GetValues(typeof(MyDialogueEnum)))\n            {\n                MyDialogue dialogue = MyDialogueConstants.GetDialogue(dialogueEnum);\n                foreach(MyDialogueSentence sentence in dialogue.Sentences){\n                    if(sentence.Text!=MyDialoguesWrapperEnum.Dlg_DialoguePlaceholder)\n                        sentences.Add(sentence);\n                }\n            }\n            //sort\n            sentences.Sort(DialogueSentencesComparer);\n            //print\n            var dialoguesPath = Path.Combine(MyFileSystemUtils.GetApplicationUserDataFolder(), \"Dialogues.txt\");\n            using (var output = new StreamWriter(File.Open(dialoguesPath, FileMode.Create)))\n            {\n                StringBuilder line = new StringBuilder();\n                foreach(MyDialogueSentence sentence in sentences)\n                {\n                    line.Clear();\n                    if (sentence.Cue.HasValue)\n                    {\n                        line.Append(\"MySoundCuesEnum.\" + Enum.GetName(typeof(MySoundCuesEnum), sentence.Cue.Value));\n                    }\n                    else\n                    {\n                        line.Append(\"[NULL]\");\n                    }\n                    line.Append(\" (\");\n                    line.Append(MyTextsWrapper.Get(MyActorConstants.GetActorProperties(sentence.Actor).DisplayName).ToString());\n                    line.Append(\"): \");\n                    line.Append(MyDialoguesWrapper.Get(sentence.Text).ToString());\n                    output.WriteLine(line);\n                }\n                output.Flush();\n                output.Close();\n            }\n        }\n\n\n        private void OnGenerateListOfUnusedDialogues(MyGuiControlButton sender)\n        {\n            //get\n            List<MyDialogueSentence> sentences = new List<MyDialogueSentence>();\n            foreach (MyDialogueEnum dialogueEnum in Enum.GetValues(typeof(MyDialogueEnum)))\n            {\n                MyDialogue dialogue = MyDialogueConstants.GetDialogue(dialogueEnum);\n                foreach (MyDialogueSentence sentence in dialogue.Sentences)\n                {\n                    if (sentence.Text != MyDialoguesWrapperEnum.Dlg_DialoguePlaceholder)\n                        sentences.Add(sentence);\n                }\n            }\n            //sort\n            sentences.Sort(DialogueSentencesComparer);\n\n            HashSet<MySoundCuesEnum> soundCues = new HashSet<MySoundCuesEnum>();\n            foreach (MySoundCuesEnum soundEnum in Enum.GetValues(typeof(MySoundCuesEnum)))\n            {\n                if (Enum.GetName(typeof(MySoundCuesEnum), soundEnum).StartsWith(\"Dlg_\"))\n                    soundCues.Add(soundEnum);\n            }\n\n            HashSet<MyDialoguesWrapperEnum> dialogueTexts = new HashSet<MyDialoguesWrapperEnum>();\n            foreach (MyDialoguesWrapperEnum textEnum in Enum.GetValues(typeof(MyDialoguesWrapperEnum)))\n            {\n                dialogueTexts.Add(textEnum);\n            }\n\n            //Remove used\n            foreach (MyDialogueSentence sentence in sentences)\n            {\n                if (sentence.Cue.HasValue)\n                    soundCues.Remove(sentence.Cue.Value);\n                dialogueTexts.Remove(sentence.Text);\n            }\n\n\n            //print\n            var dialoguesPath = Path.Combine(MyFileSystemUtils.GetApplicationUserDataFolder(), \"UnusedDialogues.txt\");\n            using (var output = new StreamWriter(File.Open(dialoguesPath, FileMode.Create)))\n            {\n                StringBuilder line = new StringBuilder();\n                line.Append(\"Unused cues: \");\n                output.WriteLine(line);\n                foreach (MySoundCuesEnum soundCue in soundCues)\n                {\n                    line.Clear();\n                    line.Append(\"MySoundCuesEnum.\" + Enum.GetName(typeof(MySoundCuesEnum), soundCue));\n                    output.WriteLine(line);\n                }\n\n                line.Clear();\n                line.AppendLine();\n                output.WriteLine(line);\n                line.Clear();\n                line.Append(\"Unused texts: \");\n                output.WriteLine(line);\n                foreach (MyDialoguesWrapperEnum textEnum in dialogueTexts)\n                {\n                    line.Clear();\n                    line.Append(\"MyDialoguesWrapperEnum.\" + Enum.GetName(typeof(MyDialoguesWrapperEnum), textEnum));\n                    line.Append(\":\");\n                    line.Append(MyDialoguesWrapper.Get(textEnum).ToString());\n                    output.WriteLine(line);\n                }\n\n                output.Flush();\n                output.Close();\n            }\n        }\n\n        private void OnGenerateListOfAssets(MyGuiControlButton sender)\n        {\n            string trimPath = @\"Models2\\\";\n            foreach (MyMwcObjectBuilderTypeEnum enumValue in MyGuiPrefabHelpers.MyMwcPrefabTypesEnumValues)\n            {\n                foreach (int prefabId in MyMwcObjectBuilder_Base.GetObjectBuilderIDs(enumValue))\n                {\n                    MyGuiPrefabHelper prefabModuleHelper = MyGuiObjectBuilderHelpers.GetGuiHelper(enumValue, prefabId) as MyGuiPrefabHelper;\n                    MyPrefabConfiguration config = MyPrefabConstants.GetPrefabConfiguration(enumValue, prefabId);\n                    string assetName = MyModels.GetModelAssetName(config.ModelLod0Enum);\n                    int trimIndex = assetName.IndexOf(trimPath);\n                    if (trimIndex >= 0)\n                    {\n                        assetName = assetName.Substring(trimIndex + trimPath.Length);\n                    }\n\n                    MyMwcLog.WriteLine(string.Format(\"{0};{1}\", prefabModuleHelper.Description, assetName));\n                }\n            }\n\n            foreach (MyMwcObjectBuilder_SmallShip_TypesEnum enumValue in MyGuiSmallShipHelpers.MyMwcObjectBuilder_SmallShip_TypesEnumValues)\n            {\n                MyGuiSmallShipHelperSmallShip smallShipHelper = MyGuiObjectBuilderHelpers.GetGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip, (int)enumValue) as MyGuiSmallShipHelperSmallShip;\n                var properties = MyShipTypeConstants.GetShipTypeProperties(enumValue);\n                string assetName = MyModels.GetModelAssetName(properties.Visual.ModelLod0Enum);\n                int trimIndex = assetName.IndexOf(trimPath);\n                if (trimIndex >= 0)\n                {\n                    assetName = assetName.Substring(trimIndex + trimPath.Length);\n                }\n\n                MyMwcLog.WriteLine(string.Format(\"{0};{1}\", smallShipHelper.Description, assetName));\n            }\n        }\n\n        private void OnShortenShipHealth(MyGuiControlButton sender)\n        {\n            if (MySession.PlayerShip != null)\n            {                \n                MySession.PlayerShip.HealthRatio -= 0.1f;\n            }\n        }\n\n        private void OnShortenPlayerHealth(MyGuiControlButton sender)\n        {\n            if (MySession.Static != null && MySession.Static.Player != null)\n            {\n                MySession.Static.Player.AddHealth(-MySession.Static.Player.MaxHealth * 0.1f, null);\n            }\n        }\n\n        private void OnShortenArmor(MyGuiControlButton sender)\n        {\n            if (MySession.PlayerShip != null)\n            {\n                MySession.PlayerShip.ArmorHealth -= MySession.PlayerShip.MaxArmorHealth * 0.1f;\n            }\n        }\n\n        private void OnShortenFuel(MyGuiControlButton sender)\n        {\n            if (MySession.PlayerShip != null)\n            {\n                MySession.PlayerShip.Fuel -= MySession.PlayerShip.MaxFuel * 0.1f;\n            }\n        }\n\n        private void OnShortenOxygen(MyGuiControlButton sender)\n        {\n            if (MySession.PlayerShip != null)\n            {\n                MySession.PlayerShip.Oxygen -= MySession.PlayerShip.MaxOxygen * 0.1f;\n            }\n        }\n\n        private void LoadLastCheckpoint(MyGuiControlButton sender)\n        {\n            if (MyGuiScreenGamePlay.Static != null)\n                MyGuiScreenGamePlay.Static.Restart();\n        }\n\n        private void OnDebugDialogues(MyGuiControlButton sender)\n        {\n            MyGuiManager.AddScreen(new MyGuiScreenDebugDialogues(null));\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/DebugScreens/MyGuiScreenDebugGlobalEvents.cs",
    "content": "﻿#region Using\nusing System;\nusing System.Collections.Generic;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.GUI.Helpers;\nusing MinerWars.AppCode.Game.HUD;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Entities.Ships.SubObjects;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Render;\nusing MinerWars.AppCode.Game.Effects;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils;\nusing KeenSoftwareHouse.Library.Extensions;\nusing MinerWars.AppCode.Game.Models;\nusing MinerWars.AppCode.Game;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Physics;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.AppCode.Game.Entities.Prefabs;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.Game.Prefabs;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Gameplay;\nusing SysUtils.Utils;\n\n\n#endregion\n\nnamespace MinerWars.AppCode.Game.GUI\n{\n    class MyGuiScreenDebugGlobalEvents: MyGuiScreenDebugBase\n    {\n\n        public MyGuiScreenDebugGlobalEvents()\n            : base(0.35f * Color.Yellow.ToVector4(), false)\n        {\n            m_closeOnEsc = true;\n            m_drawEvenWithoutFocus = true;\n            m_isTopMostScreen = false;\n            m_canHaveFocus = false;\n\n            RecreateControls(true);\n        }\n\n        public override void RecreateControls(bool contructor)\n        {\n            Controls.Clear();\n\n            m_scale = 0.7f;\n\n            AddCaption(new System.Text.StringBuilder(\"Global Events Debug\"), Color.Yellow.ToVector4());\n\n\n            MyGuiControlLabel label = new MyGuiControlLabel(this, new Vector2(0.01f, -m_size.Value.Y / 2.0f + 0.07f), null, new System.Text.StringBuilder(\"(press ALT to share focus)\"), Color.Yellow.ToVector4(), MyGuiConstants.LABEL_TEXT_SCALE * 0.7f,\n                               MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_TOP);\n            Controls.Add(label);\n\n\n            m_currentPosition = -m_size.Value / 2.0f + new Vector2(0.12f, 0.15f);\n\n            var globalEventEnumValues = Enum.GetValues(typeof (MyGlobalEventEnum));\n\n            foreach (MyGlobalEventEnum globalEventEnum in globalEventEnumValues)\n            {\n\n                var globalEvent = MyGlobalEvents.GetGlobalEventByType(globalEventEnum);\n                var button = AddButton(MyTextsWrapper.Get(globalEvent.Name), OnGlobalEvent);\n                button.UserData = globalEventEnum;\n\n            }\n\n\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenDebugGlobalEvents\";\n        }\n\n\n        private void OnGlobalEvent(MyGuiControlButton sender)\n        {\n            if (MyGuiScreenGamePlay.Static != null)\n            {\n                var globalEventEnum = (MyGlobalEventEnum)sender.UserData;\n                MyGlobalEvents.StartGlobalEvent(globalEventEnum);\n            }\n        }\n\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/DebugScreens/MyGuiScreenDebugInput.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Managers;\nusing KeenSoftwareHouse.Library.Extensions;\n\nnamespace MinerWars.AppCode.Game.GUI.DebugScreens\n{\n    class MyGuiScreenDebugInput : MyGuiScreenDebugBase\n    {\n        static StringBuilder m_debugText = new StringBuilder(1000);\n\n        public MyGuiScreenDebugInput()\n            : base(new Vector2(0.5f, 0.5f), new Vector2(), null, true)\n        {\n            m_isTopMostScreen = true;\n            m_drawEvenWithoutFocus = true;\n            m_canHaveFocus = false;\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"DebugInputScreen\";\n        }\n\n        public Vector2 GetScreenLeftTopPosition()\n        {\n            float deltaPixels = 25 * MyGuiManager.GetSafeScreenScale();\n            Rectangle fullscreenRectangle = MyGuiManager.GetSafeFullscreenRectangle();\n            return MyGuiManager.GetNormalizedCoordinateFromScreenCoordinate_FULLSCREEN(new Vector2(deltaPixels, deltaPixels));\n        }\n\n        public void SetTexts()\n        {\n            MyMwcUtils.ClearStringBuilder(m_debugText);\n\n            var joy = MyGuiManager.GetInput().GetActualJoystickState();\n            if (joy == null)\n            {\n                m_debugText.Append(\"No joystick detected.\");\n                return;\n            }\n\n            m_debugText.Append(\"Supported axes: \");\n            if (MyGuiManager.GetInput().IsJoystickAxisSupported(MyJoystickAxesEnum.Xpos)) m_debugText.Append(\"X \");\n            if (MyGuiManager.GetInput().IsJoystickAxisSupported(MyJoystickAxesEnum.Ypos)) m_debugText.Append(\"Y \");\n            if (MyGuiManager.GetInput().IsJoystickAxisSupported(MyJoystickAxesEnum.Zpos)) m_debugText.Append(\"Z \");\n            if (MyGuiManager.GetInput().IsJoystickAxisSupported(MyJoystickAxesEnum.RotationXpos)) m_debugText.Append(\"Rx \");\n            if (MyGuiManager.GetInput().IsJoystickAxisSupported(MyJoystickAxesEnum.RotationYpos)) m_debugText.Append(\"Ry \");\n            if (MyGuiManager.GetInput().IsJoystickAxisSupported(MyJoystickAxesEnum.RotationZpos)) m_debugText.Append(\"Rz \");\n            if (MyGuiManager.GetInput().IsJoystickAxisSupported(MyJoystickAxesEnum.Slider1pos)) m_debugText.Append(\"S1 \");\n            if (MyGuiManager.GetInput().IsJoystickAxisSupported(MyJoystickAxesEnum.Slider2pos)) m_debugText.Append(\"S2 \");\n            m_debugText.AppendLine();\n\n            m_debugText.Append(\"accX: \"); m_debugText.AppendInt32(joy.AccelerationX); m_debugText.AppendLine();\n            m_debugText.Append(\"accY: \"); m_debugText.AppendInt32(joy.AccelerationY); m_debugText.AppendLine();\n            m_debugText.Append(\"accZ: \"); m_debugText.AppendInt32(joy.AccelerationZ); m_debugText.AppendLine();\n            m_debugText.Append(\"angAccX: \"); m_debugText.AppendInt32(joy.AngularAccelerationX); m_debugText.AppendLine();\n            m_debugText.Append(\"angAccY: \"); m_debugText.AppendInt32(joy.AngularAccelerationY); m_debugText.AppendLine();\n            m_debugText.Append(\"angAccZ: \"); m_debugText.AppendInt32(joy.AngularAccelerationZ); m_debugText.AppendLine();\n            m_debugText.Append(\"angVelX: \"); m_debugText.AppendInt32(joy.AngularVelocityX); m_debugText.AppendLine();\n            m_debugText.Append(\"angVelY: \"); m_debugText.AppendInt32(joy.AngularVelocityY); m_debugText.AppendLine();\n            m_debugText.Append(\"angVelZ: \"); m_debugText.AppendInt32(joy.AngularVelocityZ); m_debugText.AppendLine();\n            m_debugText.Append(\"forX: \"); m_debugText.AppendInt32(joy.ForceX); m_debugText.AppendLine();\n            m_debugText.Append(\"forY: \"); m_debugText.AppendInt32(joy.ForceY); m_debugText.AppendLine();\n            m_debugText.Append(\"forZ: \"); m_debugText.AppendInt32(joy.ForceZ); m_debugText.AppendLine();\n            m_debugText.Append(\"rotX: \"); m_debugText.AppendInt32(joy.RotationX); m_debugText.AppendLine();\n            m_debugText.Append(\"rotY: \"); m_debugText.AppendInt32(joy.RotationY); m_debugText.AppendLine();\n            m_debugText.Append(\"rotZ: \"); m_debugText.AppendInt32(joy.RotationZ); m_debugText.AppendLine();\n            m_debugText.Append(\"torqX: \"); m_debugText.AppendInt32(joy.TorqueX); m_debugText.AppendLine();\n            m_debugText.Append(\"torqY: \"); m_debugText.AppendInt32(joy.TorqueY); m_debugText.AppendLine();\n            m_debugText.Append(\"torqZ: \"); m_debugText.AppendInt32(joy.TorqueZ); m_debugText.AppendLine();\n            m_debugText.Append(\"velX: \"); m_debugText.AppendInt32(joy.VelocityX); m_debugText.AppendLine();\n            m_debugText.Append(\"velY: \"); m_debugText.AppendInt32(joy.VelocityY); m_debugText.AppendLine();\n            m_debugText.Append(\"velZ: \"); m_debugText.AppendInt32(joy.VelocityZ); m_debugText.AppendLine();\n            m_debugText.Append(\"X: \"); m_debugText.AppendInt32(joy.X); m_debugText.AppendLine();\n            m_debugText.Append(\"Y: \"); m_debugText.AppendInt32(joy.Y); m_debugText.AppendLine();\n            m_debugText.Append(\"Z: \"); m_debugText.AppendInt32(joy.Z); m_debugText.AppendLine();\n            m_debugText.AppendLine();\n            m_debugText.Append(\"AccSliders: \"); foreach (var i in joy.AccelerationSliders) { m_debugText.AppendInt32(i); m_debugText.Append(\" \"); } m_debugText.AppendLine();\n            m_debugText.Append(\"Buttons: \"); foreach (var i in joy.Buttons) { m_debugText.Append(i ? \"#\" : \"_\"); m_debugText.Append(\" \"); } m_debugText.AppendLine();\n            m_debugText.Append(\"ForSliders: \"); foreach (var i in joy.ForceSliders) { m_debugText.AppendInt32(i); m_debugText.Append(\" \"); } m_debugText.AppendLine();\n            m_debugText.Append(\"POVControllers: \"); foreach (var i in joy.PointOfViewControllers) { m_debugText.AppendInt32(i); m_debugText.Append(\" \"); } m_debugText.AppendLine();\n            m_debugText.Append(\"Sliders: \"); foreach (var i in joy.Sliders) { m_debugText.AppendInt32(i); m_debugText.Append(\" \"); } m_debugText.AppendLine();\n            m_debugText.Append(\"VelocitySliders: \"); foreach (var i in joy.VelocitySliders) { m_debugText.AppendInt32(i); m_debugText.Append(\" \"); } m_debugText.AppendLine();\n        }\n\n        public override bool Draw(float backgroundFadeAlpha)\n        {\n            if (base.Draw(backgroundFadeAlpha) == false) return false;\n\n            SetTexts();\n            float textScale = MyGuiConstants.DEBUG_STATISTICS_TEXT_SCALE;\n\n            Vector2 origin = GetScreenLeftTopPosition();\n\n            MyGuiManager.DrawString(MyGuiManager.GetFontMinerWarsWhite(), m_debugText, origin, textScale,\n                    Color.Yellow, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP);\n\n            return true;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/DebugScreens/MyGuiScreenDebugPlayerCameraSpring.cs",
    "content": "﻿using System;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Render;\nusing MinerWars.AppCode.Game.Effects;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils;\nusing KeenSoftwareHouse.Library.Extensions;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Managers.Session;\n\nnamespace MinerWars.AppCode.Game.GUI.DebugScreens\n{\n    class MyGuiScreenDebugPlayerCameraSpring : MyGuiScreenDebugBase\n    {\n        public MyGuiScreenDebugPlayerCameraSpring()\n            : base(0.35f * Color.Yellow.ToVector4(), false)\n        {\n            m_closeOnEsc = true;\n            m_drawEvenWithoutFocus = true;\n            m_isTopMostScreen = false;\n            m_canHaveFocus = false;\n\n            RecreateControls(true);\n        }\n\n        public override void RecreateControls(bool contructor)\n        {\n            Controls.Clear();\n\n            AddCaption(new StringBuilder(\"Player Head Shake\"), Color.Yellow.ToVector4());\n\n            MyGuiControlLabel label = new MyGuiControlLabel(this, new Vector2(0.01f, -m_size.Value.Y / 2.0f + 0.07f), null, new System.Text.StringBuilder(\"(press ALT to share focus)\"), Color.Yellow.ToVector4(), MyGuiConstants.LABEL_TEXT_SCALE * 0.7f,\n                                   MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_TOP);\n            Controls.Add(label);\n\n            m_currentPosition = -m_size.Value / 2.0f + new Vector2(0.02f, 0.10f);\n\n            m_currentPosition.Y += 0.01f;\n\n            MySmallShip ship = MySession.PlayerShip;\n            if (ship != null)\n            {\n                AddSlider(new StringBuilder(\"MaxVelocity\"), 0, 1, ship.GetCameraSpring(), MemberHelper.GetMember(() => ship.GetCameraSpring().m_MaxVelocity));\n                AddSlider(new StringBuilder(\"MaxAccel\"), 0, 80, ship.GetCameraSpring(), MemberHelper.GetMember(() => ship.GetCameraSpring().m_MaxAccel));\n                AddSlider(new StringBuilder(\"MaxDistanceSpeed\"), 0, 500, ship.GetCameraSpring(), MemberHelper.GetMember(() => ship.GetCameraSpring().m_MaxDistanceSpeed));\n                AddSlider(new StringBuilder(\"linearVelocityDumping\"), 0, 1, ship.GetCameraSpring(), MemberHelper.GetMember(() => ship.GetCameraSpring().m_linearVelocityDumping));\n                AddSlider(new StringBuilder(\"localTranslationDumping\"), 0, 1, ship.GetCameraSpring(), MemberHelper.GetMember(() => ship.GetCameraSpring().m_localTranslationDumping));\n            }\n\n            m_currentPosition.Y += 0.01f;\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenDebugPlayerShake\";\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/DebugScreens/MyGuiScreenDebugPlayerFriends.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Managers;\nusing KeenSoftwareHouse.Library.Extensions;\nusing MinerWars.AppCode.Game.Managers.Session;\n\n\nnamespace MinerWars.AppCode.Game.GUI.DebugScreens\n{\n    class MyGuiScreenDebugPlayerFriends: MyGuiScreenDebugBase\n    {\n        static StringBuilder m_debugText = new StringBuilder(5000);\n\n        public MyGuiScreenDebugPlayerFriends()\n            : base(new Vector2(0.5f, 0.5f), new Vector2(), null, true)\n        {\n            m_isTopMostScreen = true;\n            m_drawEvenWithoutFocus = true;\n            m_canHaveFocus = false;\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"DebugScreenPlayerFriends\";\n        }\n\n        public Vector2 GetScreenLeftTopPosition()\n        {\n            float deltaPixels = 25 * MyGuiManager.GetSafeScreenScale();\n            Rectangle fullscreenRectangle = MyGuiManager.GetSafeFullscreenRectangle();\n            return MyGuiManager.GetNormalizedCoordinateFromScreenCoordinate_FULLSCREEN(new Vector2(deltaPixels, deltaPixels));\n        }\n\n        public void SetTexts()\n        {\n            MyMwcUtils.ClearStringBuilder(m_debugText);\n\n            m_debugText.AppendLine(\"Player friends debug info\");\n\n            if (MySession.Static == null || MySession.PlayerFriends == null)\n            {\n                m_debugText.AppendLine(\"Player friends does not exists\");\n                return;\n            }\n\n            foreach (var friend in MySession.PlayerFriends.GetDebug())\n            {\n                m_debugText.Append(friend.DisplayName);\n                m_debugText.Append(\": \");\n                if(friend.EntityId.HasValue)\n                {\n                    m_debugText.AppendInt32((int)friend.EntityId.Value.NumericValue);\n                    m_debugText.Append(\" (\");\n                    m_debugText.AppendInt32(friend.EntityId.Value.PlayerId);\n                    m_debugText.Append(\")\");\n                    m_debugText.AppendLine();\n                    m_debugText.Append(\"    Position: \");\n                    m_debugText.AppendDecimal(friend.GetPosition().X, 1);\n                    m_debugText.Append(\"; \");\n                    m_debugText.AppendDecimal(friend.GetPosition().Y, 1);\n                    m_debugText.Append(\"; \");\n                    m_debugText.AppendDecimal(friend.GetPosition().Z, 1);\n                    m_debugText.AppendLine();\n                }\n            }\n        }\n\n        public override bool Draw(float backgroundFadeAlpha)\n        {\n            if (base.Draw(backgroundFadeAlpha) == false) return false;\n\n            SetTexts();\n            float textScale = MyGuiConstants.DEBUG_STATISTICS_TEXT_SCALE;\n\n            Vector2 origin = GetScreenLeftTopPosition();\n\n            MyGuiManager.DrawString(MyGuiManager.GetFontMinerWarsWhite(), m_debugText, origin, textScale,\n                    Color.Yellow, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP);\n\n            return true;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/DebugScreens/MyGuiScreenDebugPlayerShake.cs",
    "content": "﻿using System;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Render;\nusing MinerWars.AppCode.Game.Effects;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils;\nusing KeenSoftwareHouse.Library.Extensions;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Managers.Session;\n\nnamespace MinerWars.AppCode.Game.GUI.DebugScreens\n{\n    class MyGuiScreenDebugPlayerShake : MyGuiScreenDebugBase\n    {\n        public MyGuiScreenDebugPlayerShake()\n            : base(0.35f * Color.Yellow.ToVector4(), false)\n        {\n            m_closeOnEsc = true;\n            m_drawEvenWithoutFocus = true;\n            m_isTopMostScreen = false;\n            m_canHaveFocus = false;\n\n            RecreateControls(true);\n        }\n\n        public override void RecreateControls(bool contructor)\n        {\n            Controls.Clear();\n\n            AddCaption(new StringBuilder(\"Player Head Shake\"), Color.Yellow.ToVector4());\n\n            MyGuiControlLabel label = new MyGuiControlLabel(this, new Vector2(0.01f, -m_size.Value.Y / 2.0f + 0.07f), null, new System.Text.StringBuilder(\"(press ALT to share focus)\"), Color.Yellow.ToVector4(), MyGuiConstants.LABEL_TEXT_SCALE * 0.7f,\n                                   MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_TOP);\n            Controls.Add(label);\n\n            m_currentPosition = -m_size.Value / 2.0f + new Vector2(0.02f, 0.10f);\n\n            m_currentPosition.Y += 0.01f;\n\n            MySmallShip ship = MySession.PlayerShip;\n\n            if (ship != null)\n            {\n                AddSlider(new StringBuilder(\"MaxShake\"), 0, 30, ship.GetShake(), MemberHelper.GetMember(() => ship.GetShake().m_MaxShake));\n                AddSlider(new StringBuilder(\"MaxShakePos\"), 0, 1, ship.GetShake(), MemberHelper.GetMember(() => ship.GetShake().m_MaxShakePos));\n                AddSlider(new StringBuilder(\"MaxShakeDir\"), 0, 1, ship.GetShake(), MemberHelper.GetMember(() => ship.GetShake().m_MaxShakeDir));\n                AddSlider(new StringBuilder(\"Reduction\"), 0, 1, ship.GetShake(), MemberHelper.GetMember(() => ship.GetShake().m_Reduction));\n                AddSlider(new StringBuilder(\"Damping\"), 0, 1, ship.GetShake(), MemberHelper.GetMember(() => ship.GetShake().m_Damping));\n                AddSlider(new StringBuilder(\"OffConstant\"), 0, 1, ship.GetShake(), MemberHelper.GetMember(() => ship.GetShake().m_OffConstant));\n                AddSlider(new StringBuilder(\"DirReduction\"), 0, 30, ship.GetShake(), MemberHelper.GetMember(() => ship.GetShake().m_DirReduction));\n            }\n\n            m_currentPosition.Y += 0.01f;\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenDebugPlayerShake\";\n        }\n    }\n\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/DebugScreens/MyGuiScreenDebugRender.cs",
    "content": "﻿using System;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Render;\nusing MinerWars.AppCode.Game.Effects;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils;\nusing KeenSoftwareHouse.Library.Extensions;\n\nnamespace MinerWars.AppCode.Game.GUI\n{\n    //Prepared to be render debug screen\n\n    class MyGuiScreenDebugRender : MyGuiScreenDebugBase\n    {\n        public MyGuiScreenDebugRender()\n            : base(0.35f * Color.Yellow.ToVector4(), false)\n        {\n            m_closeOnEsc = true;\n            m_drawEvenWithoutFocus = true;\n            m_isTopMostScreen = false;\n            m_canHaveFocus = false;\n\n            RecreateControls(true);\n        }\n\n        public override void RecreateControls(bool contructor)\n        {\n            Controls.Clear();\n\n            m_scale = 0.7f;\n\n            AddCaption(new System.Text.StringBuilder(\"Render debug\"), Color.Yellow.ToVector4());\n\n            MyGuiControlLabel label = new MyGuiControlLabel(this, new Vector2(0.01f, -m_size.Value.Y / 2.0f + 0.07f), null, new System.Text.StringBuilder(\"(press ALT to share focus)\"), Color.Yellow.ToVector4(), MyGuiConstants.LABEL_TEXT_SCALE * 0.7f,\n                               MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_TOP);\n            Controls.Add(label);\n\n            m_currentPosition = -m_size.Value / 2.0f + new Vector2(0.02f, 0.10f);\n\n            m_currentPosition.Y += 0.01f;\n            AddLabel(new StringBuilder(\"LODs\"), Color.Yellow.ToVector4(), 1.2f);\n\n            var profile = MyRenderConstants.RenderQualityProfile; // Obfuscated MemberHelper can't access property, so store it to field\n\n            //AddCheckBox(new StringBuilder(\"Show LOD screens\"), null, MemberHelper.GetMember(() => MyRender.ShowLODScreens));\n            AddCheckBox(new StringBuilder(\"Show blended screens\"), null, MemberHelper.GetMember(() => MyRender.ShowBlendedScreens));\n            AddCheckBox(new StringBuilder(\"Show LOD1 red overlay\"), null, MemberHelper.GetMember(() => MyRender.ShowLod1WithRedOverlay));\n            AddCheckBox(new StringBuilder(\"Show green background\"), null, MemberHelper.GetMember(() => MyRender.ShowGreenBackground));\n            AddCheckBox(new StringBuilder(\"Show environment screens\"), null, MemberHelper.GetMember(() => MyRender.ShowEnvironmentScreens));\n            AddSlider(new StringBuilder(\"Lod near distance\"), 0.0f, 20000.0f, profile, MemberHelper.GetMember(() => profile.LodTransitionDistanceNear));\n            AddSlider(new StringBuilder(\"Lod far distance\"), 0.0f, 20000.0f, profile, MemberHelper.GetMember(() => profile.LodTransitionDistanceFar));\n            AddSlider(new StringBuilder(\"Lod background start\"), 0.0f, 50000.0f, profile, MemberHelper.GetMember(() => profile.LodTransitionDistanceBackgroundStart));\n            AddSlider(new StringBuilder(\"Lod background end\"), MyCamera.NEAR_PLANE_DISTANCE + 1, 50000.0f, profile, MemberHelper.GetMember(() => profile.LodTransitionDistanceBackgroundEnd));\n\n\n            m_currentPosition.Y += 0.01f;\n            AddLabel(new StringBuilder(\"Textures\"), Color.Yellow.ToVector4(), 1.2f);\n            \n            AddCheckBox(new StringBuilder(\"Check diffuse textures\"), null, MemberHelper.GetMember(() => MyRender.CheckDiffuseTextures));\n            AddCheckBox(new StringBuilder(\"Check normals textures\"), null, MemberHelper.GetMember(() => MyRender.CheckNormalTextures));\n\n            AddCheckBox(new StringBuilder(\"Debug diffuse texture\"), null, MemberHelper.GetMember(() => MyRender.DebugDiffuseTexture));\n            AddCheckBox(new StringBuilder(\"Debug normal texture\"), null, MemberHelper.GetMember(() => MyRender.DebugNormalTexture));\n\n            m_currentPosition.Y += 0.01f;\n            AddLabel(new StringBuilder(\"Clip planes\"), Color.Yellow.ToVector4(), 1.2f);\n            AddSlider(new StringBuilder(\"Near clip\"), 0.05f, 10.0f, null, MemberHelper.GetMember(() => MyCamera.NEAR_PLANE_DISTANCE));\n            AddSlider(new StringBuilder(\"Far clip\"), 10000.0f, 100000.0f, null, MemberHelper.GetMember(() => MyCamera.FAR_PLANE_DISTANCE));\n\n            AddSlider(new StringBuilder(\"FOV\"), MyCamera.FieldOfViewAngle, 1.00f, 90.0f, new MyGuiControlSlider.OnSliderChangeCallback(OnFovSlider));\n        }\n\n        void OnFovSlider(MyGuiControlSlider slider)\n        {\n            MyCamera.FieldOfViewAngle = slider.GetValue();\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenDebugRender\";\n        }\n\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/DebugScreens/MyGuiScreenDebugRenderGlobalFX.cs",
    "content": "﻿using System;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Render;\nusing MinerWars.AppCode.Game.Effects;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils;\nusing KeenSoftwareHouse.Library.Extensions;\nusing MinerWars.AppCode.Game.BackgroundCube;\nusing MinerWars.AppCode.Game.World;\nusing System.Linq;\nusing MinerWars.AppCode.Game.SolarSystem;\nusing MinerWars.AppCode.Game.TransparentGeometry;\n\nnamespace MinerWars.AppCode.Game.GUI\n{\n    //Prepared to be render debug screen\n\n    class MyGuiScreenDebugRenderGlobalFX : MyGuiScreenDebugBase\n    {\n        public MyGuiScreenDebugRenderGlobalFX()\n            : base(0.35f * Color.Yellow.ToVector4(), false)\n        {\n            m_closeOnEsc = true;\n            m_drawEvenWithoutFocus = true;\n            m_isTopMostScreen = false;\n            m_canHaveFocus = false;\n\n            RecreateControls(true);\n        }\n\n        public override void RecreateControls(bool contructor)\n        {\n            Controls.Clear();\n\n            m_scale = .9f;\n\n            AddCaption(new System.Text.StringBuilder(\"Render Global FX\"), Color.Yellow.ToVector4());\n\n            MyGuiControlLabel label = new MyGuiControlLabel(this, new Vector2(0.01f, -m_size.Value.Y / 2.0f + 0.07f), null, new System.Text.StringBuilder(\"(press ALT to share focus)\"), Color.Yellow.ToVector4(), MyGuiConstants.LABEL_TEXT_SCALE * 0.7f,\n                               MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_TOP);\n            Controls.Add(label);\n\n            m_currentPosition = -m_size.Value / 2.0f + new Vector2(0.02f, 0.10f);\n\n            m_currentPosition.Y += 0.01f * m_scale;\n            AddLabel(new StringBuilder(\"FXAA\"), Color.Yellow.ToVector4(), 1.2f);\n\n            AddCheckBox(new StringBuilder(\"Enable FXAA\"), null, MemberHelper.GetMember(() => MyMwcFinalBuildConstants.EnableFxaa));\n\n            m_currentPosition.Y += 0.01f * m_scale;\n            AddLabel(new StringBuilder(\"Fog\"), Color.Yellow.ToVector4(), 1.2f);\n\n            var fogObj = MySector.FogProperties;\n\n            AddCheckBox(new StringBuilder(\"Enable fog\"), null, MemberHelper.GetMember(() => MyRender.EnableFog));\n            AddSlider(new StringBuilder(\"Fog near distance\"), 1.0f, MyCamera.FAR_PLANE_DISTANCE, fogObj, MemberHelper.GetMember(() => MySector.FogProperties.FogNear));\n            AddSlider(new StringBuilder(\"Fog far distance\"), 1.0f, MyCamera.FAR_PLANE_DISTANCE, fogObj, MemberHelper.GetMember(() => MySector.FogProperties.FogFar));\n            AddSlider(new StringBuilder(\"Fog multiplier\"), 0.0f, 1.0f, fogObj, MemberHelper.GetMember(() => MySector.FogProperties.FogMultiplier));\n            AddSlider(new StringBuilder(\"Fog backlight multiplier\"), 0.0f, 5.0f, fogObj, MemberHelper.GetMember(() => MySector.FogProperties.FogBacklightMultiplier));\n            AddColor(new StringBuilder(\"Fog color\"), fogObj, MemberHelper.GetMember(() => MySector.FogProperties.FogColor));\n           \n        }\n\n        private bool nebula_selector(MyImpostorProperties properties)\n        {\n            return properties.ImpostorType == MyVoxelMapImpostors.MyImpostorType.Nebula;\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenDebugRenderGlobalFX\";\n        }\n\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/DebugScreens/MyGuiScreenDebugRenderHDR.cs",
    "content": "﻿using System;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Render;\nusing MinerWars.AppCode.Game.Effects;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils;\nusing KeenSoftwareHouse.Library.Extensions;\n\nnamespace MinerWars.AppCode.Game.GUI\n{\n    //Prepared to be render debug screen\n\n    class MyGuiScreenDebugRenderHDR : MyGuiScreenDebugBase\n    {\n        public MyGuiScreenDebugRenderHDR()\n            : base(0.35f * Color.Yellow.ToVector4(), false)\n        {\n            m_closeOnEsc = true;\n            m_drawEvenWithoutFocus = true;\n            m_isTopMostScreen = false;\n            m_canHaveFocus = false;\n\n            RecreateControls(true);\n        }\n\n        public override void RecreateControls(bool contructor)\n        {\n            Controls.Clear();\n\n            m_scale = 0.7f;\n\n            AddCaption(new System.Text.StringBuilder(\"Render HDR\"), Color.Yellow.ToVector4());\n\n            MyGuiControlLabel label = new MyGuiControlLabel(this, new Vector2(0.01f, -m_size.Value.Y / 2.0f + 0.07f), null, new System.Text.StringBuilder(\"(press ALT to share focus)\"), Color.Yellow.ToVector4(), MyGuiConstants.LABEL_TEXT_SCALE * 0.7f,\n                               MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_TOP);\n            Controls.Add(label);\n\n            m_currentPosition = -m_size.Value / 2.0f + new Vector2(0.02f, 0.10f);\n\n            m_currentPosition.Y += 0.01f * m_scale;\n\n            MyPostProcessHDR hdr = MyRender.GetPostProcess(MyPostProcessEnum.HDR) as MyPostProcessHDR;\n            if (hdr != null)\n            {\n                AddLabel(new StringBuilder(\"HDR\"), Color.Yellow.ToVector4(), 1.2f);\n\n                AddCheckBox(new StringBuilder(\"Enable HDR and bloom\"), null, MemberHelper.GetMember(() => MyPostProcessHDR.DebugHDRChecked));\n\n                m_currentPosition.Y += 0.01f * m_scale;\n\n                AddSlider(new StringBuilder(\"Exposure\"), 0, 6.0f, hdr, MemberHelper.GetMember(() => hdr.Exposure));\n                AddSlider(new StringBuilder(\"Bloom Threshold\"), 0, 4.0f, hdr, MemberHelper.GetMember(() => hdr.Threshold));\n                AddSlider(new StringBuilder(\"Bloom Intensity\"), 0, 4.0f, hdr, MemberHelper.GetMember(() => hdr.BloomIntensity));\n                AddSlider(new StringBuilder(\"Bloom Intensity for Background\"), 0, 1.5f, hdr, MemberHelper.GetMember(() => hdr.BloomIntensityBackground));\n                AddSlider(new StringBuilder(\"Vertical Blur Amount\"), 1.0f, 8.0f, hdr, MemberHelper.GetMember(() => hdr.VerticalBlurAmount));\n                AddSlider(new StringBuilder(\"Horizontal Blur Amount\"), 1.0f, 8.0f, hdr, MemberHelper.GetMember(() => hdr.HorizontalBlurAmount));\n                AddSlider(new StringBuilder(\"Number of blur passes (integer)\"), 1.0f, 8.0f, hdr, MemberHelper.GetMember(() => hdr.NumberOfBlurPasses));\n\n                m_currentPosition.Y += 0.01f * m_scale;\n            }\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenDebugRenderHDR\";\n        }\n\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/DebugScreens/MyGuiScreenDebugRenderLights.cs",
    "content": "﻿using System;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Render;\nusing MinerWars.AppCode.Game.Effects;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils;\nusing KeenSoftwareHouse.Library.Extensions;\nusing MinerWars.AppCode.Game.World;\nusing MinerWars.AppCode.Game.Entities.SubObjects;\n\nnamespace MinerWars.AppCode.Game.GUI\n{\n    class MyGuiScreenDebugRenderLights : MyGuiScreenDebugBase\n    {\n        public static bool EnableRenderLights = true;\n\n        public MyGuiScreenDebugRenderLights()\n            : base(0.35f * Color.Yellow.ToVector4(), false)\n        {\n            m_closeOnEsc = true;\n            m_drawEvenWithoutFocus = true;\n            m_isTopMostScreen = false;\n            m_canHaveFocus = false;\n\n            RecreateControls(true);\n        }\n\n        public override void RecreateControls(bool contructor)\n        {\n            Controls.Clear();\n\n            m_scale = 0.7f;\n\n            AddCaption(new System.Text.StringBuilder(\"Render Lights debug\"), Color.Yellow.ToVector4());\n\n            MyGuiControlLabel label = new MyGuiControlLabel(this, new Vector2(0.01f, -m_size.Value.Y / 2.0f + 0.07f), null, new System.Text.StringBuilder(\"(press ALT to share focus)\"), Color.Yellow.ToVector4(), MyGuiConstants.LABEL_TEXT_SCALE * 0.7f,\n                               MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_TOP);\n            Controls.Add(label);\n\n            m_currentPosition = -m_size.Value / 2.0f + new Vector2(0.02f, 0.10f);\n\n            m_currentPosition.Y += 0.01f;\n            AddLabel(new StringBuilder(\"Lights\"), Color.Yellow.ToVector4(), 1.2f);\n\n            AddCheckBox(new StringBuilder(\"Enable lights\"), null, MemberHelper.GetMember(() => EnableRenderLights));\n            AddCheckBox(new StringBuilder(\"Enable light glares\"), null, MemberHelper.GetMember(() => MyLightGlare.EnableLightGlares));\n            AddCheckBox(new StringBuilder(\"Enable spot shadows\"), null, MemberHelper.GetMember(() => MyRender.EnableSpotShadows));\n            AddCheckBox(new StringBuilder(\"Enable spectator light\"), null, MemberHelper.GetMember(() => MyRender.EnableSpectatorReflector));\n            AddCheckBox(new StringBuilder(\"Only specular intensity\"), null, MemberHelper.GetMember(() => MyRender.ShowSpecularIntensity));\n            AddCheckBox(new StringBuilder(\"Only specular power\"), null, MemberHelper.GetMember(() => MyRender.ShowSpecularPower));\n            AddCheckBox(new StringBuilder(\"Only emissivity\"), null, MemberHelper.GetMember(() => MyRender.ShowEmissivity));\n            AddCheckBox(new StringBuilder(\"Only reflectivity\"), null, MemberHelper.GetMember(() => MyRender.ShowReflectivity));\n\n            MyEffectShadowMap shadowMapEffect = MyRender.GetEffect(MyEffects.ShadowMap) as MyEffectShadowMap;\n\n            if (shadowMapEffect != null)\n            {\n                m_currentPosition.Y += 0.01f;\n                AddLabel(new StringBuilder(\"Sun\"), Color.Yellow.ToVector4(), 1.2f);\n                AddCheckBox(new StringBuilder(\"Enable sun\"), null, MemberHelper.GetMember(() => MyRender.EnableSun));\n                AddCheckBox(new StringBuilder(\"Enable shadows\"), null, MemberHelper.GetMember(() => MyRender.EnableShadows));\n                AddCheckBox(new StringBuilder(\"Enable asteroid shadows\"), null, MemberHelper.GetMember(() => MyRender.EnableAsteroidShadows));\n                AddCheckBox(new StringBuilder(\"Enable ambient map\"), MyRender.EnableEnvironmentMapAmbient, OnAmbientMapChecked);\n                AddCheckBox(new StringBuilder(\"Enable reflection map\"), MyRender.EnableEnvironmentMapReflection, OnReflectionMapChecked);\n                AddCheckBox(new StringBuilder(\"Enable voxel ambient\"), null, MemberHelper.GetMember(() => MyRender.EnablePerVertexVoxelAmbient));\n                AddSlider(new StringBuilder(\"Intensity\"), 0, 10.0f, MySector.SunProperties, MemberHelper.GetMember(() => MySector.SunProperties.SunIntensity));\n                AddCheckBox(new StringBuilder(\"Show cascade splits\"), null, MemberHelper.GetMember(() => MyRender.ShowCascadeSplits));\n                //nefunguje po obfuskaci\n               // AddSlider(new StringBuilder(\"ShadowBias\"), 0, 0.01f, shadowMapEffect, MemberHelper.GetMember(() => shadowMapEffect.ShadowBias));\n\n                AddCheckBox(new StringBuilder(\"Enable shadow interleaving\"), null, MemberHelper.GetMember(() => MyRender.ShadowInterleaving));\n                AddCheckBox(new StringBuilder(\"Freeze cascade 0\"), null, MemberHelper.GetMember(() => MyRender.FreezeCascade0));\n                AddCheckBox(new StringBuilder(\"Freeze cascade 1\"), null, MemberHelper.GetMember(() => MyRender.FreezeCascade1));\n                AddCheckBox(new StringBuilder(\"Freeze cascade 2\"), null, MemberHelper.GetMember(() => MyRender.FreezeCascade2));\n                AddCheckBox(new StringBuilder(\"Freeze cascade 3\"), null, MemberHelper.GetMember(() => MyRender.FreezeCascade3));\n            }               \n        }\n\n        void OnAmbientMapChecked(MyGuiControlCheckbox checkbox)\n        {\n            MyRender.EnableEnvironmentMapAmbient = checkbox.Checked;\n        }\n\n        void OnReflectionMapChecked(MyGuiControlCheckbox checkbox)\n        {\n            MyRender.EnableEnvironmentMapReflection = checkbox.Checked;\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenDebugRenderLights\";\n        }\n\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/DebugScreens/MyGuiScreenDebugRenderModelFX.cs",
    "content": "﻿using System;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Render;\nusing MinerWars.AppCode.Game.Effects;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils;\nusing KeenSoftwareHouse.Library.Extensions;\nusing MinerWars.AppCode.Game.Render.EnvironmentMap;\nusing MinerWars.AppCode.Game.Voxels;\nusing MinerWars.CommonLIB.AppCode.Networking;\n\nnamespace MinerWars.AppCode.Game.GUI\n{\n    //Prepared to be render debug screen\n\n    class MyGuiScreenDebugRenderModelFX : MyGuiScreenDebugBase\n    {\n        public static bool EnableRenderLights = true;\n\n        public MyGuiScreenDebugRenderModelFX()\n            : base(0.35f * Color.Yellow.ToVector4(), false)\n        {\n            m_closeOnEsc = true;\n            m_drawEvenWithoutFocus = true;\n            m_isTopMostScreen = false;\n            m_canHaveFocus = false;\n\n            RecreateControls(true);\n        }\n\n        public override void RecreateControls(bool contructor)\n        {\n            Controls.Clear();\n\n            \n\n            m_scale = 0.7f;\n\n            AddCaption(new System.Text.StringBuilder(\"Render Model FX\"), Color.Yellow.ToVector4());\n\n            MyGuiControlLabel label = new MyGuiControlLabel(this, new Vector2(0.01f, -m_size.Value.Y / 2.0f + 0.07f), null, new System.Text.StringBuilder(\"(press ALT to share focus)\"), Color.Yellow.ToVector4(), MyGuiConstants.LABEL_TEXT_SCALE * 0.7f,\n                               MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_TOP);\n            Controls.Add(label);\n\n            m_currentPosition = -m_size.Value / 2.0f + new Vector2(0.02f, 0.10f);\n\n\n            m_currentPosition.Y += 0.01f;\n            /*\n            AddLabel(new StringBuilder(\"Channels\"), Color.Yellow.ToVector4(), 1.2f);\n            AddSlider(new StringBuilder(\"Channel0\"), 0, 1.0f, null, MemberHelper.GetMember(() => MyRender.Channel0Intensity));\n            AddSlider(new StringBuilder(\"Channel1\"), 0, 1.0f, null, MemberHelper.GetMember(() => MyRender.Channel1Intensity));\n              */\n            AddLabel(new StringBuilder(\"Environmental maps\"), Color.Yellow.ToVector4(), 1.2f);\n            AddSlider(new StringBuilder(\"LOD0 max distance\"), 50.0f, 1000.0f, null, MemberHelper.GetMember(() => MyEnvironmentMap.NearDistance));\n            AddSlider(new StringBuilder(\"LOD1 max distance\"), 50.0f, 1000.0f, null, MemberHelper.GetMember(() => MyEnvironmentMap.FarDistance));\n            AddButton(new StringBuilder(\"Rebuild\"), delegate { MyEnvironmentMap.Reset(); });\n\n            var listbox = AddListbox();\n            listbox.ItemSelect += new OnListboxItemSelect(listbox_ItemSelect);\n            listbox.AddItem(-1, new StringBuilder(\"None\"));\n            for (int i = 0; i < MyVoxelMaterials.GetMaterialsCount(); i++)\n            {\n                MyMwcVoxelMaterialsEnum mat = (MyMwcVoxelMaterialsEnum)i;\n                listbox.AddItem((int)mat, new StringBuilder(mat.ToString()));\n            }\n            listbox.SetSelectedItem(-1);\n        }\n\n        void listbox_ItemSelect(object sender, MyGuiControlListboxItemEventArgs eventArgs)\n        {\n            var key = eventArgs.Key;\n            if (key < 0)\n            {\n                MyRender.OverrideVoxelMaterial = null;\n            }\n            else\n            {\n                MyRender.OverrideVoxelMaterial = (MyMwcVoxelMaterialsEnum)key;\n            }\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenDebugRenderModelFX\";\n        }\n\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/DebugScreens/MyGuiScreenDebugRenderOptimizations.cs",
    "content": "﻿using System;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Render;\nusing MinerWars.AppCode.Game.Effects;\nusing MinerWars.AppCode.Game.Voxels;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils;\nusing KeenSoftwareHouse.Library.Extensions;\nusing MinerWars.AppCode.Game.Managers;\nusing MinerWars.AppCode.Game.Entities;\n\nnamespace MinerWars.AppCode.Game.GUI\n{\n    //Prepared to be render debug screen\n\n    class MyGuiScreenDebugRenderOptimizations : MyGuiScreenDebugBase\n    {\n        public MyGuiScreenDebugRenderOptimizations()\n            : base(0.35f * Color.Yellow.ToVector4(), false)\n        {\n            m_closeOnEsc = true;\n            m_drawEvenWithoutFocus = true;\n            m_isTopMostScreen = false;\n            m_canHaveFocus = false;\n\n            RecreateControls(true);\n        }\n\n        public override void RecreateControls(bool contructor)\n        {\n            Controls.Clear();\n\n            m_scale = 0.7f;\n\n            AddCaption(new System.Text.StringBuilder(\"Render optimizations\"), Color.Yellow.ToVector4());\n\n            MyGuiControlLabel label = new MyGuiControlLabel(this, new Vector2(0.01f, -m_size.Value.Y / 2.0f + 0.07f), null, new System.Text.StringBuilder(\"(press ALT to share focus)\"), Color.Yellow.ToVector4(), MyGuiConstants.LABEL_TEXT_SCALE * 0.7f,\n                               MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_TOP);\n            Controls.Add(label);\n\n            m_currentPosition = -m_size.Value / 2.0f + new Vector2(0.02f, 0.10f);\n\n            m_currentPosition.Y += 0.01f;\n            AddLabel(new StringBuilder(\"Optimizations\"), Color.Yellow.ToVector4(), 1.2f);\n            AddCheckBox(new StringBuilder(\"Show particles overdraw\"), null, MemberHelper.GetMember(() => TransparentGeometry.MyTransparentGeometry.VisualiseOverdraw));\n            AddCheckBox(new StringBuilder(\"Enable stencil optimization\"), null, MemberHelper.GetMember(() => MyRender.EnableStencilOptimization));\n            //AddCheckBox(new StringBuilder(\"Enable LOD blending\"), null, MemberHelper.GetMember(() => MyRender.EnableLODBlending));\n            //AddCheckBox(new StringBuilder(\"Enable stencil optimization LOD1\"), null, MemberHelper.GetMember(() => MyRender.EnableStencilOptimizationLOD1));\n            //AddCheckBox(new StringBuilder(\"Show stencil optimization\"), null, MemberHelper.GetMember(() => MyRender.ShowStencilOptimization));\n            AddCheckBox(new StringBuilder(\"Respect cast shadows flag\"), null, MemberHelper.GetMember(() => MyShadowRenderer.RespectCastShadowsFlags));\n            AddCheckBox(new StringBuilder(\"Multithreaded shadows\"), MyRender.GetShadowRenderer(), MemberHelper.GetMember(() => MyRender.GetShadowRenderer().MultiThreaded));\n            AddCheckBox(new StringBuilder(\"Multithreaded entities prepare\"), null, MemberHelper.GetMember(() => MyRender.EnableEntitiesPrepareInBackground));\n            \n\n            m_currentPosition.Y += 0.01f;\n            AddLabel(new StringBuilder(\"HW Occ queries\"), Color.Yellow.ToVector4(), 1.2f);\n            AddCheckBox(new StringBuilder(\"Enable\"), null, MemberHelper.GetMember(() => MyRender.EnableHWOcclusionQueries));\n            AddCheckBox(new StringBuilder(\"Enable shadow occ.q.\"), null, MemberHelper.GetMember(() => MyRender.EnableHWOcclusionQueriesForShadows));\n            AddCheckBox(new StringBuilder(\"Show occ queries\"), null, MemberHelper.GetMember(() => MyRender.ShowHWOcclusionQueries));\n\n            m_currentPosition.Y += 0.01f;\n            AddLabel(new StringBuilder(\"Rendering\"), Color.Yellow.ToVector4(), 1.2f);\n            AddCheckBox(new StringBuilder(\"Alternative sort\"), null, MemberHelper.GetMember(() => MyRender.AlternativeSort));\n            AddCheckBox(new StringBuilder(\"Skip LOD NEAR\"), null, MemberHelper.GetMember(() => MyRender.SkipLOD_NEAR));\n            AddCheckBox(new StringBuilder(\"Skip LOD0\"), null, MemberHelper.GetMember(() => MyRender.SkipLOD_0));\n            AddCheckBox(new StringBuilder(\"Skip LOD1\"), null, MemberHelper.GetMember(() => MyRender.SkipLOD_1));\n            AddCheckBox(new StringBuilder(\"Skip Voxels\"), null, MemberHelper.GetMember(() => MyRender.SkipVoxels));\n            AddCheckBox(new StringBuilder(\"Show render stats\"), null, MemberHelper.GetMember(() => MyRender.ShowEnhancedRenderStatsEnabled));\n            AddCheckBox(new StringBuilder(\"Show resources stats\"), null, MemberHelper.GetMember(() => MyRender.ShowResourcesStatsEnabled));\n            AddCheckBox(new StringBuilder(\"Show textures stats\"), null, MemberHelper.GetMember(() => MyRender.ShowTexturesStatsEnabled));\n            AddCheckBox(new StringBuilder(\"Show entities stats\"), null, MemberHelper.GetMember(() => MyEntities.ShowDebugDrawStatistics));\n\n            m_currentPosition.Y += 0.01f;\n            AddLabel(new StringBuilder(\"Voxel Mesh reduction\"), Color.Yellow.ToVector4(), 1.2f);\n            var checkBox = AddCheckBox(new StringBuilder(\"Enable decimation\"), null, MemberHelper.GetMember(() => MyFakes.SIMPLIFY_VOXEL_MESH));\n            checkBox.OnCheck += delegate(MyGuiControlCheckbox sender)\n            {\n                // just to trigger recalculation of voxel map\n                MyMeshSimplifier.MinEdgeLength = MyMeshSimplifier.MinEdgeLength;\n                RecreateControls(false);\n            };\n            var slider = AddSlider(new StringBuilder(\"Min Edge Length\"), 0, 30, null, MemberHelper.GetMember(() => MyMeshSimplifier.MinEdgeLength));\n            AddLabel(new StringBuilder(\"Voxel precalc time: \" + MyMeshSimplifier.VoxelRecalcTime + \" ms\"), Color.Red.ToVector4(), 1.15f);\n            slider.OnChange += delegate(MyGuiControlSlider sender)\n            {\n                RecreateControls(false);\n            };\n\n            AddButton(new StringBuilder(\"Textures to Log\"), delegate { MyTextureManager.DbgDumpLoadedTexturesBetter(); });\n            AddButton(new StringBuilder(\"Wrong entities to Log\"), delegate { MyEntities.DumpWrongEntities(); });\n            AddButton(new StringBuilder(\"Dump all entities to Log\"), delegate { MyRender.DumpAllEntities(); });\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenDebugRenderOpts\";\n        }\n\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/DebugScreens/MyGuiScreenDebugRenderPruning.cs",
    "content": "﻿using System;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Render;\nusing MinerWars.AppCode.Game.Effects;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils;\nusing KeenSoftwareHouse.Library.Extensions;\n\nnamespace MinerWars.AppCode.Game.GUI\n{\n    class MyGuiScreenDebugRenderPruning : MyGuiScreenDebugBase\n    {\n        public MyGuiScreenDebugRenderPruning()\n            : base(0.35f * Color.Yellow.ToVector4(), false)\n        {\n            m_closeOnEsc = true;\n            m_drawEvenWithoutFocus = true;\n            m_isTopMostScreen = false;\n            m_canHaveFocus = false;\n\n            RecreateControls(true);\n        }\n\n        public override void RecreateControls(bool contructor)\n        {\n            Controls.Clear();\n\n            m_scale = 0.7f;\n\n            AddCaption(new System.Text.StringBuilder(\"Pruning and culling\"), Color.Yellow.ToVector4());\n\n            MyGuiControlLabel label = new MyGuiControlLabel(this, new Vector2(0.01f, -m_size.Value.Y / 2.0f + 0.07f), null, new System.Text.StringBuilder(\"(press ALT to share focus)\"), Color.Yellow.ToVector4(), MyGuiConstants.LABEL_TEXT_SCALE * 0.7f,\n                               MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_TOP);\n            Controls.Add(label);\n\n            m_currentPosition = -m_size.Value / 2.0f + new Vector2(0.02f, 0.10f);\n\n            MyRender.MyRenderModuleItem renderModule = MyRender.GetRenderModules(MyRenderStage.DebugDraw).Find((x) => x.Name == MyRenderModuleEnum.PrunningStructure);\n            MyRender.MyRenderModuleItem renderModulePhysics = MyRender.GetRenderModules(MyRenderStage.DebugDraw).Find((x) => x.Name == MyRenderModuleEnum.PhysicsPrunningStructure);\n            \n            AddSlider(new StringBuilder(\"Worst allowed balance\"), 0.01f, 0.5f, null, MemberHelper.GetMember(() => MyRender.CullingStructureWorstAllowedBalance));\n            AddSlider(new StringBuilder(\"Box cut penalty\"), 0, 30, null, MemberHelper.GetMember(() => MyRender.CullingStructureCutBadness));\n            AddSlider(new StringBuilder(\"Imbalance penalty\"), 0, 5, null, MemberHelper.GetMember(() => MyRender.CullingStructureImbalanceBadness));\n            AddSlider(new StringBuilder(\"Off-center penalty\"), 0, 5, null, MemberHelper.GetMember(() => MyRender.CullingStructureOffsetBadness));\n\n            m_currentPosition.Y += 0.01f;\n            AddCheckBox(new StringBuilder(\"Show prunning structure\"), renderModule, MemberHelper.GetMember(() => renderModule.Enabled));\n\n            m_currentPosition.Y += 0.01f;\n            AddCheckBox(new StringBuilder(\"Show physics prunning structure\"), renderModulePhysics, MemberHelper.GetMember(() => renderModulePhysics.Enabled));\n\n            m_currentPosition.Y += 0.01f;\n            AddButton(new StringBuilder(\"Rebuild now\"), delegate { MyRender.RebuildCullingStructure(); });\n\n            m_currentPosition.Y += 0.01f;\n            AddButton(new StringBuilder(\"Rebuild to test lowest triangle count\"), delegate { MyRender.RebuildCullingStructureCullEveryPrefab(); });\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenDebugRenderPruning\";\n        }\n\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/DebugScreens/MyGuiScreenDebugRenderSectorFX.cs",
    "content": "﻿using System;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Render;\nusing MinerWars.AppCode.Game.Effects;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils;\nusing KeenSoftwareHouse.Library.Extensions;\nusing MinerWars.AppCode.Game.BackgroundCube;\nusing MinerWars.AppCode.Game.World;\nusing System.Linq;\nusing MinerWars.AppCode.Game.SolarSystem;\nusing MinerWars.AppCode.Game.TransparentGeometry;\n\nnamespace MinerWars.AppCode.Game.GUI\n{\n    //Prepared to be render debug screen\n\n    class MyGuiScreenDebugRenderSectorFX : MyGuiScreenDebugBase\n    {\n        public MyGuiScreenDebugRenderSectorFX()\n            : base(0.35f * Color.Yellow.ToVector4(), false)\n        {\n            m_closeOnEsc = true;\n            m_drawEvenWithoutFocus = true;\n            m_isTopMostScreen = false;\n            m_canHaveFocus = false;\n\n            RecreateControls(true);\n        }\n\n        public override void RecreateControls(bool contructor)\n        {\n            Controls.Clear();\n\n            m_scale = 0.5f;\n\n            AddCaption(new System.Text.StringBuilder(\"Render sector FX\"), Color.Yellow.ToVector4());\n\n            MyGuiControlLabel label = new MyGuiControlLabel(this, new Vector2(0.01f, -m_size.Value.Y / 2.0f + 0.07f), null, new System.Text.StringBuilder(\"(press ALT to share focus)\"), Color.Yellow.ToVector4(), MyGuiConstants.LABEL_TEXT_SCALE * 0.7f,\n                               MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_TOP);\n            Controls.Add(label);\n\n            m_currentPosition = -m_size.Value / 2.0f + new Vector2(0.02f, 0.10f);\n\n            m_currentPosition.Y += 0.01f * m_scale;\n            AddCheckBox(new StringBuilder(\"Enable dust\"), MySector.ParticleDustProperties, MemberHelper.GetMember(() => MySector.ParticleDustProperties.Enabled));\n                                       \n            m_currentPosition.Y += 0.01f * m_scale;\n            AddLabel(new StringBuilder(\"Nebula\"), Color.Yellow.ToVector4(), 1.2f);\n\n            MyImpostorProperties nebulaObj = null;\n            foreach (MyImpostorProperties nebulaObjIt in MySector.ImpostorProperties)\n            {\n                if (nebulaObjIt.ImpostorType == MyVoxelMapImpostors.MyImpostorType.Nebula)\n                {\n                    nebulaObj = nebulaObjIt;\n                    break;\n                }\n            }\n\n            if (nebulaObj != null)\n            {\n                AddCheckBox(new StringBuilder(\"Enable\"), nebulaObj, MemberHelper.GetMember(() => nebulaObj.Enabled));\n                AddColor(new StringBuilder(\"Color\"), nebulaObj, MemberHelper.GetMember(() => nebulaObj.Color));\n                AddSlider(new StringBuilder(\"Contrast\"), 0, 20, nebulaObj, MemberHelper.GetMember(() => nebulaObj.Contrast));\n                AddSlider(new StringBuilder(\"Intensity\"), 0, 20, nebulaObj, MemberHelper.GetMember(() => nebulaObj.Intensity));\n                AddSlider(new StringBuilder(\"Radius\"), 0, 10, nebulaObj, MemberHelper.GetMember(() => nebulaObj.Radius));\n                AddSlider(new StringBuilder(\"Anim1\"), -0.1f, 0.1f, nebulaObj, MemberHelper.GetMember(() => nebulaObj.Anim1));\n                AddSlider(new StringBuilder(\"Anim2\"), -0.1f, 0.1f, nebulaObj, MemberHelper.GetMember(() => nebulaObj.Anim2));\n                AddSlider(new StringBuilder(\"Anim3\"), -0.1f, 0.1f, nebulaObj, MemberHelper.GetMember(() => nebulaObj.Anim3));\n            }\n\n                                     \n            m_currentPosition.Y += 0.01f * m_scale;\n            AddLabel(new StringBuilder(\"God rays\"), Color.Yellow.ToVector4(), 1.2f);\n\n            AddCheckBox(new StringBuilder(\"Enable\"), MySector.GodRaysProperties, MemberHelper.GetMember(() => MySector.GodRaysProperties.Enabled));\n            AddSlider(new StringBuilder(\"Density\"), 0, 2, MySector.GodRaysProperties, MemberHelper.GetMember(() => MySector.GodRaysProperties.Density));\n            AddSlider(new StringBuilder(\"Weight\"), 0, 2, MySector.GodRaysProperties, MemberHelper.GetMember(() => MySector.GodRaysProperties.Weight));\n            AddSlider(new StringBuilder(\"Decay\"), 0, 2, MySector.GodRaysProperties, MemberHelper.GetMember(() => MySector.GodRaysProperties.Decay));\n            AddSlider(new StringBuilder(\"Exposition\"), 0, 2, MySector.GodRaysProperties, MemberHelper.GetMember(() => MySector.GodRaysProperties.Exposition));\n\n            m_currentPosition.Y += 0.01f * m_scale;\n            AddLabel(new StringBuilder(\"Particle dust\"), Color.Yellow.ToVector4(), 1.2f);\n\n            AddSlider(new StringBuilder(\"Dust radius\"), 0.01f, 200, MySector.ParticleDustProperties , MemberHelper.GetMember(() => MySector.ParticleDustProperties.DustBillboardRadius));\n            AddSlider(new StringBuilder(\"Dust count in dir half\"), 0.01f, 20, MySector.ParticleDustProperties , MemberHelper.GetMember(() => MySector.ParticleDustProperties.DustFieldCountInDirectionHalf));\n            AddSlider(new StringBuilder(\"Distance between\"), 1f, 500, MySector.ParticleDustProperties , MemberHelper.GetMember(() => MySector.ParticleDustProperties.DistanceBetween));\n            AddSlider(new StringBuilder(\"Anim speed\"), 0.0f, 0.1f, MySector.ParticleDustProperties, MemberHelper.GetMember(() => MySector.ParticleDustProperties.AnimSpeed));\n            AddColor(new StringBuilder(\"Color\"), MySector.ParticleDustProperties, MemberHelper.GetMember(() => MySector.ParticleDustProperties.Color));\n\n        }\n\n        private bool nebula_selector(MyImpostorProperties properties)\n        {\n            return properties.ImpostorType == MyVoxelMapImpostors.MyImpostorType.Nebula;\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenDebugRenderSectorFX\";\n        }\n\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/DebugScreens/MyGuiScreenDebugShip.cs",
    "content": "﻿#region Using\nusing System;\nusing System.Collections.Generic;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Render;\nusing MinerWars.AppCode.Game.Effects;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils;\nusing KeenSoftwareHouse.Library.Extensions;\nusing MinerWars.AppCode.Game.Models;\nusing MinerWars.AppCode.Game;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Physics;\nusing MinerWars.AppCode.Game.Managers.Session;\n#endregion\n\nnamespace MinerWars.AppCode.Game.GUI\n{\n    class MyGuiScreenDebugShip : MyGuiScreenDebugBase\n    {\n        public MyGuiScreenDebugShip()\n            : base(0.35f * Color.Yellow.ToVector4(), false)\n        {\n            m_closeOnEsc = true;\n            m_drawEvenWithoutFocus = true;\n            m_isTopMostScreen = false;\n            m_canHaveFocus = false;\n\n            RecreateControls(true);\n        }\n\n        public override void RecreateControls(bool contructor)\n        {\n            Controls.Clear();\n\n            AddCaption(new System.Text.StringBuilder(\"Player ship debug\"), Color.Yellow.ToVector4());\n\n            MyGuiControlLabel label = new MyGuiControlLabel(this, new Vector2(0.01f, -m_size.Value.Y / 2.0f + 0.07f), null, new System.Text.StringBuilder(\"(press ALT to share focus)\"), Color.Yellow.ToVector4(), MyGuiConstants.LABEL_TEXT_SCALE * 0.7f,\n                               MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_TOP);\n            Controls.Add(label);\n\n            m_scale = 0.6f;\n            m_currentPosition = -m_size.Value / 2.0f + new Vector2(0.02f, 0.10f);\n\n            if (MyGuiScreenGamePlay.Static != null && MySession.PlayerShip != null)\n            {\n                AddSlider(new StringBuilder(\"Mass\"), 1, 30000, MySession.PlayerShip.Physics, MemberHelper.GetMember(() => MySession.PlayerShip.Physics.Mass));\n                AddSlider(new StringBuilder(\"Max speed\"), 1, 500, MySession.PlayerShip.Physics, MemberHelper.GetMember(() => MySession.PlayerShip.Physics.MaxLinearVelocity));\n                AddSlider(new StringBuilder(\"Max angular velocity\"), 0, 30, MySession.PlayerShip.Physics, MemberHelper.GetMember(() => MySession.PlayerShip.Physics.MaxAngularVelocity));\n                AddSlider(new StringBuilder(\"Multiplier forward & backward\"), 0, 300*7, MySession.PlayerShip.ShipTypeProperties.Physics, MemberHelper.GetMember(() => MySession.PlayerShip.ShipTypeProperties.Physics.MultiplierForwardBackward));\n                AddSlider(new StringBuilder(\"Multiplier strafe\"), 0, 300*7, MySession.PlayerShip.ShipTypeProperties.Physics, MemberHelper.GetMember(() => MySession.PlayerShip.ShipTypeProperties.Physics.MultiplierStrafe));\n                AddSlider(new StringBuilder(\"Multiplier strafe rotation\"), 0, 100, MySession.PlayerShip.ShipTypeProperties.Physics, MemberHelper.GetMember(() => MySession.PlayerShip.ShipTypeProperties.Physics.MultiplierStrafeRotation));\n                AddSlider(new StringBuilder(\"Multiplier up & down\"), 0, 300*7, MySession.PlayerShip.ShipTypeProperties.Physics, MemberHelper.GetMember(() => MySession.PlayerShip.ShipTypeProperties.Physics.MultiplierUpDown));\n                AddSlider(new StringBuilder(\"Multiplier roll\"), 0, 30, MySession.PlayerShip.ShipTypeProperties.Physics, MemberHelper.GetMember(() => MySession.PlayerShip.ShipTypeProperties.Physics.MultiplierRoll));\n                AddSlider(new StringBuilder(\"Multiplier rotation\"), 0, 20, MySession.PlayerShip.ShipTypeProperties.Physics, MemberHelper.GetMember(() => MySession.PlayerShip.ShipTypeProperties.Physics.MultiplierRotation));\n                AddSlider(new StringBuilder(\"Multiplier rotation effect\"), 0, 2f, MySession.PlayerShip.ShipTypeProperties.Physics, MemberHelper.GetMember(() => MySession.PlayerShip.ShipTypeProperties.Physics.MultiplierRotationEffect));\n                AddSlider(new StringBuilder(\"Multiplier rotation decelerate\"), 0, 150, MySession.PlayerShip.ShipTypeProperties.Physics, MemberHelper.GetMember(() => MySession.PlayerShip.ShipTypeProperties.Physics.MultiplierRotationDecelerate));\n                AddSlider(new StringBuilder(\"Multiplier movement\"), 0.2f, 5f, MySession.PlayerShip.ShipTypeProperties.Physics, MemberHelper.GetMember(() => MySession.PlayerShip.ShipTypeProperties.Physics.MultiplierMovement));\n                AddSlider(new StringBuilder(\"Multiplier afterburner\"), 0, 10, MySession.PlayerShip.EnginePropertiesForDebug, MemberHelper.GetMember(() => MySession.PlayerShip.EnginePropertiesForDebug.AfterburnerSpeedMultiplier));\n                AddSlider(new StringBuilder(\"Multiplier horizontal angle stabilization\"), 0, 1000, MySession.PlayerShip.ShipTypeProperties.Physics, MemberHelper.GetMember(() => MySession.PlayerShip.ShipTypeProperties.Physics.MultiplierHorizontalAngleStabilization));\n                AddCheckBox(new StringBuilder(\"Show secondary camera bounding frustum\"), MySession.PlayerShip, MemberHelper<MySmallShip>.GetMember((smallShip) => smallShip.DebugDrawSecondaryCameraBoundingFrustum));\n                AddSlider(new StringBuilder(\"Max zoom sensitivity modifier\"), 0, 1, null, MemberHelper.GetMember(() => MySmallShip.SENSITIVITY_MODIFIER_FOR_MAX_ZOOM));\n                AddSlider(new StringBuilder(\"Rotation sensitivity modifier\"), 0.5f, 1.3f, null, MemberHelper.GetMember(() => MySmallShip.SHIP_ROTATION_SENSITIVITY_MODIFIER));                \n            }\n\n            m_currentPosition.Y += 0.01f;\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenDebugShip\";\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/DebugScreens/MyGuiScreenDebugSmallShipWeaponsOffset.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing KeenSoftwareHouse.Library.Extensions;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Entities.Weapons;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Entities;\n\nnamespace MinerWars.AppCode.Game.GUI.DebugScreens\n{\n    class MyGuiScreenDebugSmallShipWeaponsOffset : MyGuiScreenDebugBase\n    {\n        private const float MIN_OFFSET = -3.0f;\n        private const float MAX_OFFSET = 3.0f;\n\n        public MyGuiScreenDebugSmallShipWeaponsOffset()\n            : base(0.35f * Color.Yellow.ToVector4(), false)\n        {\n            m_closeOnEsc = true;\n            m_drawEvenWithoutFocus = true;\n            m_isTopMostScreen = false;\n            m_canHaveFocus = false;                        \n\n            RecreateControls(true);\n        }\n\n        public override void RecreateControls(bool contructor)\n        {\n            Controls.Clear();\n\n            AddCaption(new StringBuilder(\"Small ship weapons\"), Color.Yellow.ToVector4());\n\n            MyGuiControlLabel label = \n                new MyGuiControlLabel(this, new Vector2(0.01f, -m_size.Value.Y / 2.0f + 0.07f), null, new StringBuilder(\"(press ALT to share focus)\"), \n                                      Color.Yellow.ToVector4(), MyGuiConstants.LABEL_TEXT_SCALE * 0.7f, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_TOP);\n            Controls.Add(label);\n\n            AddSlider(new StringBuilder(\"Drill ejecting speed\"), 0.10f, 0.50f, null,\n                      MemberHelper.GetMember(() => MyDrillDeviceConstants.DRILL_EJECTING_SPEED));\n\n            AddSlider(new StringBuilder(\"LightOffsetX\"), -20, 20, null, MemberHelper.GetMember(() => MySmallShip.LightOffsetX));\n            AddSlider(new StringBuilder(\"LightOffsetY\"), -20, 20, null, MemberHelper.GetMember(() => MySmallShip.LightOffsetY));\n            AddSlider(new StringBuilder(\"LightOffsetZ\"), -20, 20, null, MemberHelper.GetMember(() => MySmallShip.LightOffsetZ));\n\n            m_scale = 0.7f;\n            m_currentPosition = -m_size.Value / 2.0f + new Vector2(0.02f, 0.10f);\n\n            if (MyGuiScreenGamePlay.Static != null && MySession.PlayerShip != null)\n            {\n                List<MySmallShipGunBase> shipGuns = MySession.PlayerShip.Weapons.GetMountedWeaponsWithHarvesterAndDrill();\n                for(int i = 0; i < shipGuns.Count; i++)\n                {\n                    MySmallShipGunBase shipGun = shipGuns[i];\n                    //AddSlider(new StringBuilder(shipGun.WeaponType + \"_\" + i), MIN_OFFSET, MAX_OFFSET, shipGun, MemberHelper.GetMember(() => shipGun.YOffset));\n                    AddSlider(new StringBuilder(shipGun.WeaponType + \"_\" + i), MIN_OFFSET, MAX_OFFSET, shipGun, MemberHelper.GetMember(() => shipGun.ZOffset));\n                }\n            }\n\n            m_currentPosition.Y += 0.01f;\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenDebugSmallShipWeaponsOffset\";\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/DebugScreens/MyGuiScreenDebugStatistics.cs",
    "content": "﻿using System;\nusing System.Text;\nusing System.Collections.Generic;\nusing MinerWarsMath;\nusing MinerWarsMath.Graphics;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Managers;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.World;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils.Utils;\nusing SysUtils;\nusing System.Globalization;\nusing KeenSoftwareHouse.Library.Extensions;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Missions;\nusing MinerWars.AppCode.Toolkit.Input;\n\nnamespace MinerWars.AppCode.Game.GUI\n{\n    class MyGuiScreenDebugStatistics : MyGuiScreenDebugBase\n    {\n        static StringBuilder m_frameDebugText = new StringBuilder(1024);\n        static StringBuilder m_frameDebugTextRA = new StringBuilder(2048);\n        static List<StringBuilder> m_texts = new List<StringBuilder>(32);\n        static List<StringBuilder> m_rightAlignedtexts = new List<StringBuilder>(32);\n\n        List<Toolkit.Input.Keys> m_pressedKeys = new List<Toolkit.Input.Keys>(10);\n\n        public MyGuiScreenDebugStatistics()\n            : base(new Vector2(0.5f, 0.5f), new Vector2(), null, true)\n        {\n            m_isTopMostScreen = true;\n            m_drawEvenWithoutFocus = true;\n            m_canHaveFocus = false;\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenDebugStatistics\";\n        }\n\n        //  Frame Debug Text - is cleared at the begining of Update and rendered at the end of Draw\n        public void AddToFrameDebugText(string s)\n        {\n            m_frameDebugText.AppendLine(s);\n        }\n\n        //  Frame Debug Text - is cleared at the begining of Update and rendered at the end of Draw\n        public void AddToFrameDebugText(StringBuilder s)\n        {\n            m_frameDebugText.GetStrings(s);\n            m_frameDebugText.AppendLine();\n        }\n\n        //  Frame Debug Text Right Aligned - is cleared at the begining of Update and rendered at the end of Draw\n        public void AddDebugTextRA(string s)\n        {\n            m_frameDebugTextRA.Append(s);\n            m_frameDebugTextRA.AppendLine();\n        }\n        //  Frame Debug Text Right Aligned - is cleared at the begining of Update and rendered at the end of Draw\n        public void AddDebugTextRA(StringBuilder s)\n        {\n            m_frameDebugTextRA.GetStrings(s);\n            m_frameDebugTextRA.AppendLine();\n        }\n\n        //  Frame Debug Text - is cleared at the begining of Update and rendered at the end of Draw\n        public void ClearFrameDebugText()\n        {\n            MyMwcUtils.ClearStringBuilder(m_frameDebugText);\n            MyMwcUtils.ClearStringBuilder(m_frameDebugTextRA);\n            //MyAudio.WriteDebugInfo(m_frameDebugTextRA);\n        }\n\n        public Vector2 GetScreenLeftTopPosition()\n        {\n            float deltaPixels = 25 * MyGuiManager.GetSafeScreenScale();\n            Rectangle fullscreenRectangle = MyGuiManager.GetSafeFullscreenRectangle();\n            return MyGuiManager.GetNormalizedCoordinateFromScreenCoordinate_FULLSCREEN(new Vector2(deltaPixels, deltaPixels));\n        }\n\n        public Vector2 GetScreenRightTopPosition()\n        {\n            float deltaPixels = 25 * MyGuiManager.GetSafeScreenScale();\n            Rectangle fullscreenRectangle = MyGuiManager.GetSafeFullscreenRectangle();\n            return MyGuiManager.GetNormalizedCoordinateFromScreenCoordinate_FULLSCREEN(new Vector2(fullscreenRectangle.Width - deltaPixels, deltaPixels));\n        }\n\n        static List<StringBuilder> m_statsStrings = new List<StringBuilder>();\n        static int m_stringIndex = 0;\n\n        public static StringBuilder StringBuilderCache\n        {\n            get\n            {\n                if (m_stringIndex >= m_statsStrings.Count)\n                    m_statsStrings.Add(new StringBuilder(1024));\n\n                StringBuilder sb = m_statsStrings[m_stringIndex++];\n                return sb.Clear();\n            }\n        }\n\n        \n        public override bool Draw(float backgroundFadeAlpha)\n        {\n            if (base.Draw(backgroundFadeAlpha) == false) return false;\n\n            float rowDistance = MyGuiConstants.DEBUG_STATISTICS_ROW_DISTANCE;\n            float textScale = MyGuiConstants.DEBUG_STATISTICS_TEXT_SCALE;\n\n            m_stringIndex = 0;\n            m_texts.Clear();\n            m_rightAlignedtexts.Clear();\n           \n            \n            m_texts.Add(StringBuilderCache.GetFormatedFloat(\"FPS: \", MyFpsManager.GetFps()));\n\n            m_texts.Add(MyGuiManager.GetGuiScreensForDebug());\n            \n            m_texts.Add(StringBuilderCache.GetFormatedBool(\"Paused: \", MyMinerGame.IsPaused()));\n            m_texts.Add(StringBuilderCache.GetFormatedDateTimeOffset(\"System Time: \", TimeUtil.LocalTime));\n            m_texts.Add(StringBuilderCache.GetFormatedTimeSpan(\"Total MISSION Time: \", MyMissions.ActiveMission == null ? TimeSpan.Zero : MyMissions.ActiveMission.MissionTimer.GetElapsedTime()));\n            m_texts.Add(StringBuilderCache.GetFormatedTimeSpan(\"Total GAME-PLAY Time: \", TimeSpan.FromMilliseconds(MyMinerGame.TotalGamePlayTimeInMilliseconds)));\n            m_texts.Add(StringBuilderCache.GetFormatedTimeSpan(\"Total Time: \", TimeSpan.FromMilliseconds(MyMinerGame.TotalTimeInMilliseconds)));\n            \n            m_texts.Add(StringBuilderCache.GetFormatedLong(\"GC.GetTotalMemory: \", GC.GetTotalMemory(false), \" bytes\"));\n\n//#if MEMORY_PROFILING\n            //TODO: I am unable to show this without allocations\n            m_texts.Add(StringBuilderCache.GetFormatedLong(\"Environment.WorkingSet: \", MyWindowsAPIWrapper.WorkingSet, \" bytes\"));\n\n            m_texts.Add(StringBuilderCache.GetFormatedFloat(\"Available videomemory: \", MyMinerGame.Static.GraphicsDevice.AvailableTextureMemory / (1024.0f * 1024.0f), \" MB\"));\n            // TODO: Videomem\n            //m_texts.Add(StringBuilderCache.GetFormatedFloat(\"Allocated videomemory: \", MyProgram.GetResourcesSizeInMB(), \" MB\"));\n//#endif\n\n#if PHYSICS_SENSORS_PROFILING\n            if (MinerWars.AppCode.Physics.MyPhysics.physicsSystem != null)\n            {\n                m_texts.Add(StringBuilderCache.GetFormatedInt(\"Physics sensor - new allocated interactions: \", MinerWars.AppCode.Physics.MyPhysics.physicsSystem.GetSensorInteractionModule().GetNewAllocatedInteractionsCount()));\n                m_texts.Add(StringBuilderCache.GetFormatedInt(\"Physics sensor - interactions in use: \", MinerWars.AppCode.Physics.MyPhysics.physicsSystem.GetSensorInteractionModule().GetInteractionsInUseCount()));\n                m_texts.Add(StringBuilderCache.GetFormatedInt(\"Physics sensor - interactions in use MAX: \", MinerWars.AppCode.Physics.MyPhysics.physicsSystem.GetSensorInteractionModule().GetInteractionsInUseCountMax()));\n                m_texts.Add(StringBuilderCache.GetFormatedInt(\"Physics sensor - all sensors: \", MinerWars.AppCode.Physics.MyPhysics.physicsSystem.GetSensorModule().SensorsCount()));\n                m_texts.Add(StringBuilderCache.GetFormatedInt(\"Physics sensor - active sensors: \", MinerWars.AppCode.Physics.MyPhysics.physicsSystem.GetSensorModule().ActiveSensors.Count));\n            }\n#endif\n                      \n            m_texts.Add(StringBuilderCache.GetFormatedInt(\"Sound Instances Total 2D: \", MyAudio.GetSoundInstancesTotal2D()));\n            m_texts.Add(StringBuilderCache.GetFormatedInt(\"Sound Instances Total 3D: \", MyAudio.GetSoundInstancesTotal3D()));\n            m_texts.Add(MyAudio.GetCurrentTransitionForDebug());\n            if (MyAudio.GetMusicCue() != null)\n            {\n                //m_texts.Add(StringBuilderCache.GetStrings(\"Currently Playing Music Cue: \", MyAudio.GetMusicCue().Value.GetCue().Name));\n            }\n                \n            m_texts.Add(StringBuilderCache.Clear());\n            m_texts.Add(StringBuilderCache.GetFormatedInt(\"Textures 2D Count: \", MyPerformanceCounter.PerAppLifetime.Textures2DCount));\n            m_texts.Add(StringBuilderCache.GetFormatedInt(\"Textures 2D Size In Pixels: \", MyPerformanceCounter.PerAppLifetime.Textures2DSizeInPixels));\n            m_texts.Add(StringBuilderCache.GetFormatedDecimal(\"Textures 2D Size In Mb: \", MyPerformanceCounter.PerAppLifetime.Textures2DSizeInMb, 3));\n            m_texts.Add(StringBuilderCache.GetFormatedInt(\"Dxt Compressed Textures Count: \", MyPerformanceCounter.PerAppLifetime.DxtCompressedTexturesCount));\n            m_texts.Add(StringBuilderCache.GetFormatedInt(\"Non Dxt Compressed Textures Count: \", MyPerformanceCounter.PerAppLifetime.NonDxtCompressedTexturesCount));\n            m_texts.Add(StringBuilderCache.GetFormatedInt(\"Non Mip Mapped Textures Count: \", MyPerformanceCounter.PerAppLifetime.NonMipMappedTexturesCount));\n            m_texts.Add(StringBuilderCache.GetFormatedInt(\"Texture Cubes Count: \", MyPerformanceCounter.PerAppLifetime.TextureCubesCount));\n            m_texts.Add(StringBuilderCache.GetFormatedInt(\"Texture Cubes Size In Pixels: \", MyPerformanceCounter.PerAppLifetime.TextureCubesSizeInPixels));\n            m_texts.Add(StringBuilderCache.GetFormatedDecimal(\"Texture Cubes Size In Mb: \", MyPerformanceCounter.PerAppLifetime.TextureCubesSizeInMb, 3));\n            m_texts.Add(StringBuilderCache.GetFormatedInt(\"Non MyModels Count: \", MyPerformanceCounter.PerAppLifetime.ModelsCount));\n            m_texts.Add(StringBuilderCache.GetFormatedInt(\"MyModels Count: \", MyPerformanceCounter.PerAppLifetime.MyModelsCount));\n            m_texts.Add(StringBuilderCache.GetFormatedInt(\"MyModels Meshes Count: \", MyPerformanceCounter.PerAppLifetime.MyModelsMeshesCount));\n            m_texts.Add(StringBuilderCache.GetFormatedInt(\"MyModels Vertexes Count: \", MyPerformanceCounter.PerAppLifetime.MyModelsVertexesCount));\n            m_texts.Add(StringBuilderCache.GetFormatedInt(\"MyModels Triangles Count: \", MyPerformanceCounter.PerAppLifetime.MyModelsTrianglesCount));\n            m_texts.Add(StringBuilderCache.GetFormatedInt(\"Size of Model Vertex Buffers in Mb: \", MyPerformanceCounter.PerAppLifetime.ModelVertexBuffersSize / 1024 / 1024));\n            m_texts.Add(StringBuilderCache.GetFormatedInt(\"Size of Model Index Buffers in Mb: \", MyPerformanceCounter.PerAppLifetime.ModelIndexBuffersSize / 1024 / 1024));\n            m_texts.Add(StringBuilderCache.GetFormatedInt(\"Size of Voxel Vertex Buffers in Mb: \", MyPerformanceCounter.PerAppLifetime.VoxelVertexBuffersSize / 1024 / 1024));\n            m_texts.Add(StringBuilderCache.GetFormatedInt(\"Size of Voxel Index Buffers in Mb: \", MyPerformanceCounter.PerAppLifetime.VoxelIndexBuffersSize / 1024 / 1024));\n            m_texts.Add(StringBuilderCache.GetFormatedBool(\"Paused: \", MyMinerGame.IsPaused()));\n            MyGuiManager.GetInput().GetPressedKeys(m_pressedKeys);\n            AddPressedKeys(\"Current keys              : \", m_pressedKeys);\n\n            m_texts.Add(StringBuilderCache.Clear());\n            m_texts.Add(m_frameDebugText);\n\n            \n            //This ensures constant max length of right block to avoid flickering when correct max line is changing too often\n            m_frameDebugTextRA.AppendLine();\n            m_frameDebugTextRA.Append(\"                                                                  \");\n            ////\n\n            m_rightAlignedtexts.Add(m_frameDebugTextRA);\n              \n            Vector2 origin = GetScreenLeftTopPosition();\n            Vector2 rightAlignedOrigin = GetScreenRightTopPosition();\n\n            for (int i = 0; i < m_texts.Count; i++)\n            {\n                MyGuiManager.DrawString(MyGuiManager.GetFontMinerWarsWhite(), m_texts[i], origin + new Vector2(0, i * rowDistance), textScale,\n                    Color.Yellow, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP);\n            }\n            for (int i = 0; i < m_rightAlignedtexts.Count; i++)\n            {\n                MyGuiManager.DrawString(MyGuiManager.GetFontMinerWarsWhite(), m_rightAlignedtexts[i], rightAlignedOrigin + new Vector2(0.0f, i * rowDistance), textScale,\n                    Color.Yellow, MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_TOP);\n            }\n\n            ClearFrameDebugText();\n\n            return true;\n        }\n\n        private void AddPressedKeys(string groupName, List<Toolkit.Input.Keys> keys)\n        {\n            var text = StringBuilderCache;\n            text.Append(groupName);\n            for (int i = 0; i < keys.Count; i++)\n            {\n                if (i > 0)\n                {\n                    text.Append(\", \");\n                }\n                text.Append(MyKeysToString.GetKeyName((Keys)keys[i]));\n            }\n            m_texts.Add(text);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/DebugScreens/MyGuiScreenDebugSystem.cs",
    "content": "﻿#region Using\nusing System;\nusing System.Collections.Generic;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.GUI.Helpers;\nusing MinerWars.AppCode.Game.HUD;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Entities.Ships.SubObjects;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Render;\nusing MinerWars.AppCode.Game.Effects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils;\nusing KeenSoftwareHouse.Library.Extensions;\nusing MinerWars.AppCode.Game.Models;\nusing MinerWars.AppCode.Game;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Physics;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.AppCode.Game.Entities.Prefabs;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.Game.Prefabs;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Gameplay;\nusing SysUtils.Utils;\n\n\n#endregion\n\nnamespace MinerWars.AppCode.Game.GUI\n{\n    class MyGuiScreenDebugSystem : MyGuiScreenDebugBase\n    {\n        public MyGuiScreenDebugSystem()\n            : base(0.35f * Color.Yellow.ToVector4(), false)\n        {\n            m_closeOnEsc = true;\n            m_drawEvenWithoutFocus = true;\n            m_isTopMostScreen = false;\n            m_canHaveFocus = false;\n\n            RecreateControls(true);\n        }\n\n        public override void RecreateControls(bool contructor)\n        {\n            Controls.Clear();\n\n            m_scale = 0.7f;\n\n            AddCaption(new System.Text.StringBuilder(\"System debug\"), Color.Yellow.ToVector4());\n\n            \n            MyGuiControlLabel label = new MyGuiControlLabel(this, new Vector2(0.01f, -m_size.Value.Y / 2.0f + 0.07f), null, new System.Text.StringBuilder(\"(press ALT to share focus)\"), Color.Yellow.ToVector4(), MyGuiConstants.LABEL_TEXT_SCALE * 0.7f,\n                               MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_TOP);\n            Controls.Add(label);\n\n\n            m_currentPosition = -m_size.Value / 2.0f + new Vector2(0.02f, 0.10f);\n\n            AddLabel(new StringBuilder(\"System\"), Color.Yellow.ToVector4(), 1.2f);\n\n            //System debugging\n            AddCheckBox(MyTextsWrapperEnum.DrawCollisionSpotsInHud, null, MemberHelper.GetMember(() => MyMwcFinalBuildConstants.DrawCollisionSpotsInHud));\n            AddCheckBox(MyTextsWrapperEnum.DrawVoxelContentAsBillboards, null, MemberHelper.GetMember(() => MyMwcFinalBuildConstants.DrawVoxelContentAsBillboards));\n            AddCheckBox(MyTextsWrapperEnum.ShowVertexNormals, null, MemberHelper.GetMember(() => MyMwcFinalBuildConstants.DrawNormalVectors));\n            AddCheckBox(new StringBuilder(\"Disable bots\"), null, MemberHelper.GetMember(() => MyMwcFinalBuildConstants.DisableEnemyBots));\n            AddCheckBox(new StringBuilder(\"Show waypoints\"), null, MemberHelper.GetMember(() => MyMwcFinalBuildConstants.BOT_DEBUG_MODE));\n            AddCheckBox(MyTextsWrapperEnum.LoggingInDrawUpdate, null, MemberHelper.GetMember(() => MyMwcFinalBuildConstants.EnableLoggingInDrawAndUpdateAndGuiLoops));\n            AddCheckBox(MyTextsWrapperEnum.SimulateSlowUpdate, null, MemberHelper.GetMember(() => MyMwcFinalBuildConstants.SimulateSlowUpdate));\n            AddCheckBox(MyTextsWrapperEnum.SimulateSlowDraw, null, MemberHelper.GetMember(() => MyMwcFinalBuildConstants.SimulateSlowDraw));\n            AddCheckBox(MyTextsWrapperEnum.LogGarbageCollection, null, MemberHelper.GetMember(() => MyMwcFinalBuildConstants.EnableLoggingGarbageCollectionCalls));\n            AddCheckBox(MyTextsWrapperEnum.SimulateLostMessages, MyMwcFinalBuildConstants.SIMULATE_LOST_MESSAGES_SENT_OUT > 0, SimulateLostMessagesChange);\n            AddCheckBox(new StringBuilder(\"Must look at target in interactions\"), null, MemberHelper.GetMember(() => MySmallShipInteraction.MUST_LOOK_AT_TARGET));\n\n            m_currentPosition.Y += 0.01f;\n            \n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenDebugGame\";\n        }\n\n        private void SimulateLostMessagesChange(MyGuiControlCheckbox sender)\n        {\n            MyMwcFinalBuildConstants.SIMULATE_LOST_MESSAGES_SENT_OUT = sender.Checked ? (int?)4 : null;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/DebugScreens/MyGuiScreenDebugTiming.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Managers;\nusing KeenSoftwareHouse.Library.Extensions;\nusing SysUtils;\n\n\nnamespace MinerWars.AppCode.Game.GUI.DebugScreens\n{\n    class MyGuiScreenDebugTiming: MyGuiScreenDebugBase\n    {\n        static StringBuilder m_debugText = new StringBuilder(1000);\n        \n        public MyGuiScreenDebugTiming()\n            : base(new Vector2(0.5f, 0.5f), new Vector2(), null, true)\n        {\n            m_isTopMostScreen = true;\n            m_drawEvenWithoutFocus = true;\n            m_canHaveFocus = false;\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"DebugTimingScreen\";\n        }\n\n        public Vector2 GetScreenLeftTopPosition()\n        {\n            float deltaPixels = 25 * MyGuiManager.GetSafeScreenScale();\n            Rectangle fullscreenRectangle = MyGuiManager.GetSafeFullscreenRectangle();\n            return MyGuiManager.GetNormalizedCoordinateFromScreenCoordinate_FULLSCREEN(new Vector2(deltaPixels, deltaPixels));\n        }\n\n        public void SetTexts()\n        {\n            MyMwcUtils.ClearStringBuilder(m_debugText);\n\n            m_debugText.Append(\"FPS: \");\n            m_debugText.AppendInt32(MyFpsManager.GetFps());\n            m_debugText.AppendLine();\n\n            m_debugText.Append(\"Frame time: \");\n            m_debugText.AppendDecimal(MyFpsManager.FrameTime, 1);\n            m_debugText.Append(\" ms\");\n            m_debugText.AppendLine();\n\n            m_debugText.Append(\"Frame avg time: \");\n            m_debugText.AppendDecimal(MyFpsManager.FrameTimeAvg, 1);\n            m_debugText.Append(\" ms\");\n            m_debugText.AppendLine();\n\n            m_debugText.Append(\"Frame min time: \");\n            m_debugText.AppendDecimal(MyFpsManager.FrameTimeMin, 1);\n            m_debugText.Append(\" ms\");\n            m_debugText.AppendLine();\n\n            m_debugText.Append(\"Frame max time: \");\n            m_debugText.AppendDecimal(MyFpsManager.FrameTimeMax, 1);\n            m_debugText.Append(\" ms\");\n            m_debugText.AppendLine();\n\n            m_debugText.Append(\"Environment map update time: \");\n            m_debugText.AppendDecimal(MinerWars.AppCode.Game.Render.EnvironmentMap.MyEnvironmentMap.LastUpdateTime, 1);\n            m_debugText.Append(\" ms\");\n            m_debugText.AppendLine();\n\n            if (MyMwcFinalBuildConstants.IS_DEVELOP)\n            {\n                m_debugText.AppendLine();\n                MyPerformanceCounter.PerCameraDraw.AppendCustomCounters(m_debugText);\n                m_debugText.AppendLine();\n                MyPerformanceCounter.PerCameraDraw.AppendCustomTimers(m_debugText);\n            }\n        }\n\n        public override bool Draw(float backgroundFadeAlpha)\n        {\n            if (base.Draw(backgroundFadeAlpha) == false) return false;\n\n            SetTexts();\n            float textScale = MyGuiConstants.DEBUG_STATISTICS_TEXT_SCALE;\n\n            Vector2 origin = GetScreenLeftTopPosition();\n\n            MyGuiManager.DrawString(MyGuiManager.GetFontMinerWarsWhite(), m_debugText, origin, textScale,\n                    Color.Yellow, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP);\n\n            return true;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/DebugScreens/MyGuiScreenDebugVolumetricSSAO.cs",
    "content": "﻿using System;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Render;\nusing MinerWars.AppCode.Game.Effects;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils;\nusing KeenSoftwareHouse.Library.Extensions;\n\nnamespace MinerWars.AppCode.Game.GUI\n{\n    class MyGuiScreenDebugVolumetricSSAO : MyGuiScreenDebugBase\n    {\n        public MyGuiScreenDebugVolumetricSSAO()\n            : base(0.35f * Color.Yellow.ToVector4(), false)\n        {\n            m_closeOnEsc = true;\n            m_drawEvenWithoutFocus = true;\n            m_isTopMostScreen = false;\n            m_canHaveFocus = false;\n\n            RecreateControls(true);\n        }\n\n        public override void RecreateControls(bool contructor)\n        {\n            Controls.Clear();\n\n            AddCaption(new StringBuilder(\"Volumetric SSAO Debug\"), Color.Yellow.ToVector4());\n\n            MyGuiControlLabel label = new MyGuiControlLabel(this, new Vector2(0.01f, -m_size.Value.Y / 2.0f + 0.07f), null, new System.Text.StringBuilder(\"(press ALT to share focus)\"), Color.Yellow.ToVector4(), MyGuiConstants.LABEL_TEXT_SCALE * 0.7f,\n                                   MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_TOP);\n            Controls.Add(label);\n\n            m_currentPosition = -m_size.Value / 2.0f + new Vector2(0.02f, 0.10f);\n\n            MyPostProcessVolumetricSSAO2 volumetricSsaoPP = MyRender.GetPostProcess(MyPostProcessEnum.VolumetricSSAO2) as MyPostProcessVolumetricSSAO2;\n            if (volumetricSsaoPP == null)\n            {\n                label = new MyGuiControlLabel(this, new Vector2(0.01f, -m_size.Value.Y / 2.0f + 0.1f), null, new System.Text.StringBuilder(\"Sorry SSAO post process is not available\"), Color.Red.ToVector4(), MyGuiConstants.LABEL_TEXT_SCALE * 0.7f,\n                                       MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_TOP);\n                Controls.Add(label);\n                return;\n            }\n\n\n            MyEffectVolumetricSSAO2 volumetricSsaoEffect = MyRender.GetEffect(MyEffects.VolumetricSSAO) as MyEffectVolumetricSSAO2;\n                                         \n            AddCheckBox(new StringBuilder(\"Use SSAO\"), volumetricSsaoPP, MemberHelper.GetMember(() => volumetricSsaoPP.Enabled));\n            AddCheckBox(new StringBuilder(\"Use blur\"), volumetricSsaoEffect, MemberHelper.GetMember(() => volumetricSsaoEffect.UseBlur));\n            AddCheckBox(new StringBuilder(\"Show only SSAO\"), volumetricSsaoEffect, MemberHelper.GetMember(() => volumetricSsaoEffect.ShowOnlySSAO));\n\n            m_currentPosition.Y += 0.01f;\n\n//            AddSlider(new StringBuilder(\"Offset\"), 0, 10, volumetricSsaoEffect, MemberHelper.GetMember(() => volumetricSsaoEffect.Offset));\n  //          AddSlider(new StringBuilder(\"SiluetteDist\"), 0, 10, volumetricSsaoEffect, MemberHelper.GetMember(() => volumetricSsaoEffect.SiluetteDist));\n    //        AddSlider(new StringBuilder(\"R\"), 0, 10, volumetricSsaoEffect, MemberHelper.GetMember(() => volumetricSsaoEffect.R));\n                                 \n\n            AddSlider(new StringBuilder(\"MinRadius\"), 0, 10, volumetricSsaoPP, MemberHelper.GetMember(() => volumetricSsaoPP.MinRadius));\n            AddSlider(new StringBuilder(\"MaxRadius\"), 0, 1000, volumetricSsaoPP, MemberHelper.GetMember(() => volumetricSsaoPP.MaxRadius));\n            AddSlider(new StringBuilder(\"RadiusGrowZScale\"), 0, 10, volumetricSsaoPP, MemberHelper.GetMember(() => volumetricSsaoPP.RadiusGrowZScale));\n            AddSlider(new StringBuilder(\"CameraZFar\"), 0, 100000, volumetricSsaoPP, MemberHelper.GetMember(() => volumetricSsaoPP.CameraZFar));\n\n            AddSlider(new StringBuilder(\"Bias\"), 0, 10, volumetricSsaoPP, MemberHelper.GetMember(() => volumetricSsaoPP.Bias));\n            AddSlider(new StringBuilder(\"Falloff\"), 0, 10, volumetricSsaoPP, MemberHelper.GetMember(() => volumetricSsaoPP.Falloff));\n            AddSlider(new StringBuilder(\"NormValue\"), 0, 10, volumetricSsaoPP, MemberHelper.GetMember(() => volumetricSsaoPP.NormValue));\n            //AddSlider(new StringBuilder(\"ColorScale\"), 0, 10, volumetricSsaoEffect, MemberHelper.GetMember(() => volumetricSsaoEffect.ColorScale));\n            AddSlider(new StringBuilder(\"Contrast\"), 0, 10, volumetricSsaoPP, MemberHelper.GetMember(() => volumetricSsaoPP.Contrast));\n\n            m_currentPosition.Y += 0.01f;\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenDebugSSAO\";\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/DebugScreens/MyGuiScreenRenderModule.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Render;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Utils;\nusing KeenSoftwareHouse.Library.Extensions;\n\nnamespace MinerWars.AppCode.Game.GUI.DebugScreens\n{\n    class MyGuiScreenRenderModule : MyGuiScreenDebugBase\n    {\n        private string m_name;\n        private MyRenderStage m_renderStage;\n\n        public MyGuiScreenRenderModule(MyRenderStage renderStage, string name)\n            : base(0.35f * Color.Yellow.ToVector4(), false)\n        {\n            m_closeOnEsc = true;\n            m_drawEvenWithoutFocus = true;\n            m_isTopMostScreen = false;\n            m_canHaveFocus = false;\n\n            m_renderStage = renderStage;\n            m_name = name;\n\n            RecreateControls(true);\n        }\n\n        public override void RecreateControls(bool contructor)\n        {\n            Controls.Clear();\n\n            AddCaption(new System.Text.StringBuilder(\"Render module - \" + m_name), Color.Yellow.ToVector4());\n\n            MyGuiControlLabel label = new MyGuiControlLabel(this, new Vector2(0.01f, -m_size.Value.Y / 2.0f + 0.07f), null, new System.Text.StringBuilder(\"(press ALT to share focus)\"), Color.Yellow.ToVector4(), MyGuiConstants.LABEL_TEXT_SCALE * 0.7f,\n                               MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_TOP);\n            Controls.Add(label);\n\n            m_scale = 0.7f;\n\n            m_currentPosition = -m_size.Value / 2.0f + new Vector2(0.02f, 0.10f);\n\n            m_currentPosition.Y += 0.01f;                           \n            \n            foreach (MyRender.MyRenderModuleItem renderModule in MyRender.GetRenderModules(m_renderStage))\n            {\n                AddCheckBox(new StringBuilder(renderModule.DisplayName), renderModule, MemberHelper.GetMember(() => renderModule.Enabled));\n            }\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenRenderModule\";\n        }    \n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/DebugScreens/MyGuiScreenRenderModules.cs",
    "content": "﻿using System;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Render;\nusing MinerWars.AppCode.Game.Effects;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils;\nusing KeenSoftwareHouse.Library.Extensions;\n\nnamespace MinerWars.AppCode.Game.GUI\n{\n    //Prepared to be render debug screen\n\n    class MyGuiScreenRenderModules : MyGuiScreenDebugBase\n    {\n        public MyGuiScreenRenderModules()\n            : base(0.35f * Color.Yellow.ToVector4(), false)\n        {\n            m_closeOnEsc = true;\n            m_drawEvenWithoutFocus = true;\n            m_isTopMostScreen = false;\n            m_canHaveFocus = false;\n\n            RecreateControls(true);\n        }\n\n        public override void RecreateControls(bool contructor)\n        {\n            Controls.Clear();\n\n            AddCaption(new System.Text.StringBuilder(\"Render modules\"), Color.Yellow.ToVector4());\n\n            MyGuiControlLabel label = new MyGuiControlLabel(this, new Vector2(0.01f, -m_size.Value.Y / 2.0f + 0.07f), null, new System.Text.StringBuilder(\"(press ALT to share focus)\"), Color.Yellow.ToVector4(), MyGuiConstants.LABEL_TEXT_SCALE * 0.7f,\n                               MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_TOP);\n            Controls.Add(label);\n\n            m_scale = 0.7f;\n\n            m_currentPosition = -m_size.Value / 2.0f + new Vector2(0.02f, 0.10f);\n\n            m_currentPosition.Y += 0.01f;\n               \n            AddLabel(new StringBuilder(\"Prepare for draw\"), Color.Yellow.ToVector4(), 1.2f);\n            foreach (MyRender.MyRenderModuleItem renderModule in MyRender.GetRenderModules(MyRenderStage.PrepareForDraw))\n            {\n                AddCheckBox(new StringBuilder(renderModule.DisplayName), renderModule, MemberHelper.GetMember(() => renderModule.Enabled));\n            }\n\n            AddLabel(new StringBuilder(\"Background\"), Color.Yellow.ToVector4(), 1.2f);\n            foreach (MyRender.MyRenderModuleItem renderModule in MyRender.GetRenderModules(MyRenderStage.Background))\n            {\n                AddCheckBox(new StringBuilder(renderModule.DisplayName), renderModule, MemberHelper.GetMember(() => renderModule.Enabled));\n            }\n\n            AddLabel(new StringBuilder(\"Pre-HDR Alpha blend\"), Color.Yellow.ToVector4(), 1.2f);\n            foreach (MyRender.MyRenderModuleItem renderModule in MyRender.GetRenderModules(MyRenderStage.AlphaBlendPreHDR))\n            {\n                AddCheckBox(new StringBuilder(renderModule.DisplayName), renderModule, MemberHelper.GetMember(() => renderModule.Enabled));\n            }\n\n            AddLabel(new StringBuilder(\"Alpha blend\"), Color.Yellow.ToVector4(), 1.2f);\n            foreach (MyRender.MyRenderModuleItem renderModule in MyRender.GetRenderModules(MyRenderStage.AlphaBlend))\n            {\n                AddCheckBox(new StringBuilder(renderModule.DisplayName), renderModule, MemberHelper.GetMember(() => renderModule.Enabled));\n            }\n\n            AddLabel(new StringBuilder(\"Debug draw\"), Color.Yellow.ToVector4(), 1.2f);\n            foreach (MyRender.MyRenderModuleItem renderModule in MyRender.GetRenderModules(MyRenderStage.DebugDraw))\n            {\n                AddCheckBox(new StringBuilder(renderModule.DisplayName), renderModule, MemberHelper.GetMember(() => renderModule.Enabled));\n            }\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenRenderModules\";\n        }\n\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Helpers/MyGuiAsteroidHelper.cs",
    "content": "﻿using MinerWarsMath.Graphics;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Textures;\n\nnamespace MinerWars.AppCode.Game.GUI.Helpers\n{\n    class MyGuiAsteroidHelper : MyGuiHelperBase\n    {\n        public MyGuiAsteroidHelper(MyTexture2D icon, MyTextsWrapperEnum description)\n            : base(icon, description)\n        {\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Helpers/MyGuiAsteroidHelpers.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing MinerWarsMath.Graphics;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.Game.Voxels;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.AppCode.Game.Textures;\n\nnamespace MinerWars.AppCode.Game.GUI.Helpers\n{\n    using System.Linq;\n    using SysUtils.Utils;\n\n    public enum MyGuiAsteroidTypesEnum\n    {\n        VOXEL,\n        STATIC\n    }\n\n    static class MyGuiAsteroidHelpers\n    {\n        //Dictionaries for helpers\n        static Dictionary<MyMwcVoxelFilesEnum, MyGuiAsteroidHelper> m_voxelFilesHelpers = new Dictionary<MyMwcVoxelFilesEnum, MyGuiAsteroidHelper>();\n        static Dictionary<MyMwcVoxelMaterialsEnum, MyGuiVoxelMaterialHelper> m_voxelMaterialHelpers = new Dictionary<MyMwcVoxelMaterialsEnum, MyGuiVoxelMaterialHelper>();\n        static Dictionary<MyGuiAsteroidTypesEnum, MyGuiAsteroidHelper> m_guiAsteroidTypeHelpers = new Dictionary<MyGuiAsteroidTypesEnum, MyGuiAsteroidHelper>();\n        static Dictionary<MyMwcObjectBuilder_StaticAsteroid_TypesEnum, MyGuiAsteroidHelper> m_staticAsteroidHelpers = new Dictionary<MyMwcObjectBuilder_StaticAsteroid_TypesEnum, MyGuiAsteroidHelper>();\n\n        //Arrays of enums values\n        public static List<MyMwcVoxelFilesEnum> MyMwcVoxelFilesEnumValues { get; private set; }\n        public static List<MyMwcVoxelMaterialsEnum> MyMwcVoxelMaterialsEnumValues { get; private set; }\n        public static List<MyGuiAsteroidTypesEnum> MyGuiAsteroidTypeEnumValues { get; private set; }\n        public static List<MyMwcObjectBuilder_StaticAsteroid_TypesEnum> MyMwcStaticAsteroidTypesEnumValues { get; private set; }\n        public static List<MyMwcObjectBuilder_Ore_TypesEnum> MyMwcOreTypesEnumValues { get; private set; }\n\n        static MyGuiAsteroidHelpers()\n        {\n            MyMwcLog.WriteLine(\"MyGuiAsteroidHelpers()\");\n\n            MyMwcVoxelFilesEnumValues = Enum.GetValues(typeof(MyMwcVoxelFilesEnum)).Cast<MyMwcVoxelFilesEnum>().ToList();\n            MyMwcVoxelMaterialsEnumValues = Enum.GetValues(typeof(MyMwcVoxelMaterialsEnum)).Cast<MyMwcVoxelMaterialsEnum>().ToList();\n            MyGuiAsteroidTypeEnumValues = Enum.GetValues(typeof(MyGuiAsteroidTypesEnum)).Cast<MyGuiAsteroidTypesEnum>().ToList();\n            MyMwcStaticAsteroidTypesEnumValues = Enum.GetValues(typeof(MyMwcObjectBuilder_StaticAsteroid_TypesEnum)).Cast<MyMwcObjectBuilder_StaticAsteroid_TypesEnum>().ToList();\n            MyMwcOreTypesEnumValues = Enum.GetValues(typeof(MyMwcObjectBuilder_Ore_TypesEnum)).Cast<MyMwcObjectBuilder_Ore_TypesEnum>().ToList();\n        }\n\n        public static MyGuiAsteroidHelper GetMyGuiVoxelFileHelper(MyMwcVoxelFilesEnum voxelFile)\n        {\n            MyGuiAsteroidHelper ret;\n            if (m_voxelFilesHelpers.TryGetValue(voxelFile, out ret))\n                return ret;\n            else\n                return null;\n        }\n\n        public static MyGuiVoxelMaterialHelper GetMyGuiVoxelMaterialHelper(MyMwcVoxelMaterialsEnum voxelMaterial)\n        {\n            MyGuiVoxelMaterialHelper ret;\n            if (m_voxelMaterialHelpers.TryGetValue(voxelMaterial, out ret))\n                return ret;\n            else\n                return null;\n        }\n\n        public static MyGuiAsteroidHelper GetMyGuiAsteroidTypeHelper(MyGuiAsteroidTypesEnum asteroidType)\n        {\n            MyGuiAsteroidHelper ret;\n            if (m_guiAsteroidTypeHelpers.TryGetValue(asteroidType, out ret))\n                return ret;\n            else\n                return null;\n        }\n\n        public static MyGuiAsteroidHelper GetStaticAsteroidTypeHelper(MyMwcObjectBuilder_StaticAsteroid_TypesEnum staticAsteroidType)\n        {\n            MyGuiAsteroidHelper ret;\n            if (m_staticAsteroidHelpers.TryGetValue(staticAsteroidType, out ret))\n                return ret;\n            else\n                return null;\n        }\n\n        public static void UnloadContent()\n        {\n            m_voxelFilesHelpers.Clear();\n            m_voxelMaterialHelpers.Clear();\n            m_guiAsteroidTypeHelpers.Clear();\n            m_staticAsteroidHelpers.Clear();\n        }\n\n        public static void LoadContent()\n        {\n            #region Create voxel asteroid helpers\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.PerfectSphereSplitted_512x512x512,\n                new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(MyVoxelFiles.Get(MyMwcVoxelFilesEnum.PerfectSphereSplitted_512x512x512).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.PerfectSphereSplitted_512x512x512));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.PerfectSphereWithFewTunnels_512x512x512,\n                new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(MyVoxelFiles.Get(MyMwcVoxelFilesEnum.PerfectSphereWithFewTunnels_512x512x512).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.PerfectSphereWithFewTunnels_512x512x512));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.PerfectSphereWithMassiveTunnels_512x512x512,\n                new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(MyVoxelFiles.Get(MyMwcVoxelFilesEnum.PerfectSphereWithMassiveTunnels_512x512x512).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.PerfectSphereWithMassiveTunnels_512x512x512));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.PerfectSphereWithMassiveTunnels2_512x512x512,\n                new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(MyVoxelFiles.Get(MyMwcVoxelFilesEnum.PerfectSphereWithMassiveTunnels2_512x512x512).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.PerfectSphereWithMassiveTunnels2_512x512x512));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.PerfectSphereWithRaceTunnel_512x512x512,\n                new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(MyVoxelFiles.Get(MyMwcVoxelFilesEnum.PerfectSphereWithRaceTunnel_512x512x512).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.PerfectSphereWithRaceTunnel_512x512x512));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.PerfectSphereWithRaceTunnel2_512x512x512,\n                new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(MyVoxelFiles.Get(MyMwcVoxelFilesEnum.PerfectSphereWithRaceTunnel2_512x512x512).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.PerfectSphereWithRaceTunnel2_512x512x512));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.SphereWithLargeCutOut_128x128x128,\n                new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(MyVoxelFiles.Get(MyMwcVoxelFilesEnum.SphereWithLargeCutOut_128x128x128).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.SphereWithLargeCutOut_128x128x128));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.TorusStorySector_256x128x256,\n                new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(MyVoxelFiles.Get(MyMwcVoxelFilesEnum.TorusStorySector_256x128x256).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.TorusStorySector_256x128x256));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.TorusWithManyTunnels_256x128x256,\n                new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(MyVoxelFiles.Get(MyMwcVoxelFilesEnum.TorusWithManyTunnels_256x128x256).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.TorusWithManyTunnels_256x128x256));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.TorusWithSmallTunnel_256x128x256,\n                new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(MyVoxelFiles.Get(MyMwcVoxelFilesEnum.TorusWithSmallTunnel_256x128x256).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.TorusWithSmallTunnel_256x128x256));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.VerticalIsland_128x128x128,\n                new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(MyVoxelFiles.Get(MyMwcVoxelFilesEnum.VerticalIsland_128x128x128).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.VerticalIsland_128x128x128));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.VerticalIsland_128x256x128,\n                new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(MyVoxelFiles.Get(MyMwcVoxelFilesEnum.VerticalIsland_128x256x128).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.VerticalIsland_128x256x128));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.VerticalIslandStorySector_128x256x128,\n                new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(MyVoxelFiles.Get(MyMwcVoxelFilesEnum.VerticalIslandStorySector_128x256x128).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.VerticalIslandStorySector_128x256x128));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.DeformedSphere1_64x64x64,\n                new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(MyVoxelFiles.Get(MyMwcVoxelFilesEnum.DeformedSphere1_64x64x64).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.DeformedSphere1_64x64x64));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.DeformedSphere2_64x64x64,\n                new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(MyVoxelFiles.Get(MyMwcVoxelFilesEnum.DeformedSphere2_64x64x64).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.DeformedSphere2_64x64x64));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.DeformedSphereWithCorridor_128x64x64,\n                new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(MyVoxelFiles.Get(MyMwcVoxelFilesEnum.DeformedSphereWithCorridor_128x64x64).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.DeformedSphereWithCorridor_128x64x64));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.DeformedSphereWithCorridor_256x256x256,\n                new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(MyVoxelFiles.Get(MyMwcVoxelFilesEnum.DeformedSphereWithCorridor_256x256x256).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.DeformedSphereWithCorridor_256x256x256));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.DeformedSphereWithCraters_128x128x128,\n                new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(MyVoxelFiles.Get(MyMwcVoxelFilesEnum.DeformedSphereWithCraters_128x128x128).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.DeformedSphereWithCraters_128x128x128));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.ScratchedBoulder_128x128x128,\n                new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(MyVoxelFiles.Get(MyMwcVoxelFilesEnum.ScratchedBoulder_128x128x128).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.ScratchedBoulder_128x128x128));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.DeformedSphereWithHoles_64x128x64,\n                new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(MyVoxelFiles.Get(MyMwcVoxelFilesEnum.DeformedSphereWithHoles_64x128x64).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.DeformedSphereWithHoles_64x128x64));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.TorusWithManyTunnels_2_256x128x256,\n                new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(MyVoxelFiles.Get(MyMwcVoxelFilesEnum.TorusWithManyTunnels_2_256x128x256).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.TorusWithManyTunnels_2_256x128x256));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.VoxelImporterTest,\n                new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(MyVoxelFiles.Get(MyMwcVoxelFilesEnum.VoxelImporterTest).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.VoxelImportTest));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Fortress,\n                new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Fortress).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.Fortress));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.AsteroidWithSpaceStationStartStorySector, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n                MyVoxelFiles.Get(MyMwcVoxelFilesEnum.AsteroidWithSpaceStationStartStorySector).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n                MyTextsWrapperEnum.AsteroidWithSpaceStationStartStorySector));\n\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.RussianWarehouse,\n                                    new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n                                        MyVoxelFiles.Get(MyMwcVoxelFilesEnum.RussianWarehouse).GetIconFilePath(),\n                                        flags: TextureFlags.IgnoreQuality),\n                                                            MyTextsWrapperEnum.RussianWarehouseAsteroid));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.MothershipFacility,\n                                    new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n                                        MyVoxelFiles.Get(MyMwcVoxelFilesEnum.MothershipFacility).GetIconFilePath(),\n                                        flags: TextureFlags.IgnoreQuality),\n                                                            MyTextsWrapperEnum.mothership_facilityAsteroid));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.SlaverBase,\n                                    new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n                                        MyVoxelFiles.Get(MyMwcVoxelFilesEnum.SlaverBase).GetIconFilePath(),\n                                        flags: TextureFlags.IgnoreQuality),\n                                                            MyTextsWrapperEnum.slaver_baseAsteroid));\n\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.ResearchVessel,\n                                    new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n                                        MyVoxelFiles.Get(MyMwcVoxelFilesEnum.ResearchVessel).GetIconFilePath(),\n                                        flags: TextureFlags.IgnoreQuality),\n                                                            MyTextsWrapperEnum.research_vesselAsteroid));\n\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.BilitaryBase,\n                                    new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n                                        MyVoxelFiles.Get(MyMwcVoxelFilesEnum.BilitaryBase).GetIconFilePath(),\n                                        flags: TextureFlags.IgnoreQuality),\n                                                            MyTextsWrapperEnum.military_baseAsteroid));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.reef_ast,\n                                    new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n                                        MyVoxelFiles.Get(MyMwcVoxelFilesEnum.reef_ast).GetIconFilePath(),\n                                        flags: TextureFlags.IgnoreQuality),\n                                                            MyTextsWrapperEnum.reef_ast));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Flat_256x64x256,\n                                    new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n                                        MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Flat_256x64x256).GetIconFilePath(),\n                                        flags: TextureFlags.IgnoreQuality),\n                                                            MyTextsWrapperEnum.Flat_256x64x256));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Flat_128x64x128,\n                        new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n                            MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Flat_128x64x128).GetIconFilePath(),\n                            flags: TextureFlags.IgnoreQuality),\n                                                MyTextsWrapperEnum.Flat_128x64x128));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Flat_512x64x512,\n                        new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n                            MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Flat_512x64x512).GetIconFilePath(),\n                            flags: TextureFlags.IgnoreQuality),\n                                                MyTextsWrapperEnum.Flat_512x64x512));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.PirateBaseStaticAsteroid_A_1000m,\n                        new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n                            MyVoxelFiles.Get(MyMwcVoxelFilesEnum.PirateBaseStaticAsteroid_A_1000m).GetIconFilePath(),\n                            flags: TextureFlags.IgnoreQuality),\n                                                MyTextsWrapperEnum.PirateBaseStaticAsteroid_A_1000m));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.PirateBaseStaticAsteroid_A_5000m_1,\n                        new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n                            MyVoxelFiles.Get(MyMwcVoxelFilesEnum.PirateBaseStaticAsteroid_A_5000m_1).GetIconFilePath(),\n                            flags: TextureFlags.IgnoreQuality),\n                                                MyTextsWrapperEnum.PirateBaseStaticAsteroid_A_5000m_1));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.PirateBaseStaticAsteroid_A_5000m_2,\n                        new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n                            MyVoxelFiles.Get(MyMwcVoxelFilesEnum.PirateBaseStaticAsteroid_A_5000m_2).GetIconFilePath(),\n                            flags: TextureFlags.IgnoreQuality),\n                                                MyTextsWrapperEnum.PirateBaseStaticAsteroid_A_5000m_2));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.d25asteroid_field,\n                        new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n                            MyVoxelFiles.Get(MyMwcVoxelFilesEnum.d25asteroid_field).GetIconFilePath(),\n                            flags: TextureFlags.IgnoreQuality),\n                                                MyTextsWrapperEnum.d25asteroid_field));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.d25city_fight,\n                        new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n                            MyVoxelFiles.Get(MyMwcVoxelFilesEnum.d25city_fight).GetIconFilePath(),\n                            flags: TextureFlags.IgnoreQuality),\n                                                MyTextsWrapperEnum.d25city_fight));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.d25gates_ofhell,\n                        new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n                            MyVoxelFiles.Get(MyMwcVoxelFilesEnum.d25gates_ofhell).GetIconFilePath(),\n                            flags: TextureFlags.IgnoreQuality),\n                                                MyTextsWrapperEnum.d25gates_ofhell));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.d25junkyard,\n                        new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n                            MyVoxelFiles.Get(MyMwcVoxelFilesEnum.d25junkyard).GetIconFilePath(),\n                            flags: TextureFlags.IgnoreQuality),\n                                                MyTextsWrapperEnum.d25junkyard));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.d25military_area,\n                        new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n                            MyVoxelFiles.Get(MyMwcVoxelFilesEnum.d25military_area).GetIconFilePath(),\n                            flags: TextureFlags.IgnoreQuality),\n                                                MyTextsWrapperEnum.d25military_area));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.d25miner_outpost,\n                        new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n                            MyVoxelFiles.Get(MyMwcVoxelFilesEnum.d25miner_outpost).GetIconFilePath(),\n                            flags: TextureFlags.IgnoreQuality),\n                                                MyTextsWrapperEnum.d25miner_outpost));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.d25plain,\n                        new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n                            MyVoxelFiles.Get(MyMwcVoxelFilesEnum.d25plain).GetIconFilePath(),\n                            flags: TextureFlags.IgnoreQuality),\n                                                MyTextsWrapperEnum.d25plain));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.d25radioactive,\n                        new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n                            MyVoxelFiles.Get(MyMwcVoxelFilesEnum.d25radioactive).GetIconFilePath(),\n                            flags: TextureFlags.IgnoreQuality),\n                                                MyTextsWrapperEnum.d25radioactive));\n            \n\n            // Cubes\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Cube_128x128x128, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Cube_128x128x128).GetIconFilePath(), flags: TextureFlags.IgnoreQuality), MyTextsWrapperEnum.Cube_128x128x128));\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Cube_128x128x256, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Cube_128x128x256).GetIconFilePath(), flags: TextureFlags.IgnoreQuality), MyTextsWrapperEnum.Cube_128x128x256));\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Cube_128x128x64, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Cube_128x128x64).GetIconFilePath(), flags: TextureFlags.IgnoreQuality), MyTextsWrapperEnum.Cube_128x128x64));\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Cube_128x256x128, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Cube_128x256x128).GetIconFilePath(), flags: TextureFlags.IgnoreQuality), MyTextsWrapperEnum.Cube_128x256x128));\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Cube_128x256x256, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Cube_128x256x256).GetIconFilePath(), flags: TextureFlags.IgnoreQuality), MyTextsWrapperEnum.Cube_128x256x256));\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Cube_128x256x64, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Cube_128x256x64).GetIconFilePath(), flags: TextureFlags.IgnoreQuality), MyTextsWrapperEnum.Cube_128x256x64));\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Cube_128x64x128, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Cube_128x64x128).GetIconFilePath(), flags: TextureFlags.IgnoreQuality), MyTextsWrapperEnum.Cube_128x64x128));\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Cube_128x64x256, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Cube_128x64x256).GetIconFilePath(), flags: TextureFlags.IgnoreQuality), MyTextsWrapperEnum.Cube_128x64x256));\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Cube_128x64x64, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Cube_128x64x64).GetIconFilePath(), flags: TextureFlags.IgnoreQuality), MyTextsWrapperEnum.Cube_128x64x64));\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Cube_256x128x128, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Cube_256x128x128).GetIconFilePath(), flags: TextureFlags.IgnoreQuality), MyTextsWrapperEnum.Cube_256x128x128));\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Cube_256x128x256, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Cube_256x128x256).GetIconFilePath(), flags: TextureFlags.IgnoreQuality), MyTextsWrapperEnum.Cube_256x128x256));\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Cube_256x128x512, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Cube_256x128x512).GetIconFilePath(), flags: TextureFlags.IgnoreQuality), MyTextsWrapperEnum.Cube_256x128x512));\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Cube_256x256x128, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Cube_256x256x128).GetIconFilePath(), flags: TextureFlags.IgnoreQuality), MyTextsWrapperEnum.Cube_256x256x128));\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Cube_256x256x256, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Cube_256x256x256).GetIconFilePath(), flags: TextureFlags.IgnoreQuality), MyTextsWrapperEnum.Cube_256x256x256));\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Cube_256x256x512, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Cube_256x256x512).GetIconFilePath(), flags: TextureFlags.IgnoreQuality), MyTextsWrapperEnum.Cube_256x256x512));\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Cube_256x512x128, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Cube_256x512x128).GetIconFilePath(), flags: TextureFlags.IgnoreQuality), MyTextsWrapperEnum.Cube_256x512x128));\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Cube_256x512x256, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Cube_256x512x256).GetIconFilePath(), flags: TextureFlags.IgnoreQuality), MyTextsWrapperEnum.Cube_256x512x256));\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Cube_256x512x512, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Cube_256x512x512).GetIconFilePath(), flags: TextureFlags.IgnoreQuality), MyTextsWrapperEnum.Cube_256x512x512));\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Cube_512x256x256, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Cube_512x256x256).GetIconFilePath(), flags: TextureFlags.IgnoreQuality), MyTextsWrapperEnum.Cube_512x256x256));\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Cube_512x256x512, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Cube_512x256x512).GetIconFilePath(), flags: TextureFlags.IgnoreQuality), MyTextsWrapperEnum.Cube_512x256x512));\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Cube_512x512x256, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Cube_512x512x256).GetIconFilePath(), flags: TextureFlags.IgnoreQuality), MyTextsWrapperEnum.Cube_512x512x256));\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Cube_512x512x512, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Cube_512x512x512).GetIconFilePath(), flags: TextureFlags.IgnoreQuality), MyTextsWrapperEnum.Cube_512x512x512));\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Cube_64x128x128, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Cube_64x128x128).GetIconFilePath(), flags: TextureFlags.IgnoreQuality), MyTextsWrapperEnum.Cube_64x128x128));\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Cube_64x128x64, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Cube_64x128x64).GetIconFilePath(), flags: TextureFlags.IgnoreQuality), MyTextsWrapperEnum.Cube_64x128x64));\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Cube_64x64x128, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Cube_64x64x128).GetIconFilePath(), flags: TextureFlags.IgnoreQuality), MyTextsWrapperEnum.Cube_64x64x128));\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Cube_64x64x64, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Cube_64x64x64).GetIconFilePath(), flags: TextureFlags.IgnoreQuality), MyTextsWrapperEnum.Cube_64x64x64));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Story02, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n                MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Story02).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n                MyTextsWrapperEnum.VoxelStory02));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Mission01_01, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n                MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Mission01_01).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n                MyTextsWrapperEnum.VoxelMission01_01));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Mission01_02, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n                MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Mission01_02).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n                MyTextsWrapperEnum.VoxelMission01_02));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Mission07_01, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n                MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Mission07_01).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n                MyTextsWrapperEnum.VoxelMission07_01));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Mission01_asteroid_big, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n                MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Mission01_asteroid_big).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n                MyTextsWrapperEnum.VoxelMission01_asteroid_big));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Mission01_asteroid_mine, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n                MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Mission01_asteroid_mine).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n                MyTextsWrapperEnum.VoxelMission01_asteroid_mine));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.SphereFull_64, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n                MyVoxelFiles.Get(MyMwcVoxelFilesEnum.SphereFull_64).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n                MyTextsWrapperEnum.SphereFull_64));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.SphereFull_128, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n                MyVoxelFiles.Get(MyMwcVoxelFilesEnum.SphereFull_128).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n                MyTextsWrapperEnum.SphereFull_128));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.SphereFull_256, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n                MyVoxelFiles.Get(MyMwcVoxelFilesEnum.SphereFull_256).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n                MyTextsWrapperEnum.SphereFull_256));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.SphereFull_512, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n                MyVoxelFiles.Get(MyMwcVoxelFilesEnum.SphereFull_512).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n                MyTextsWrapperEnum.SphereFull_512));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.SphereFull_1024, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n                MyVoxelFiles.Get(MyMwcVoxelFilesEnum.SphereFull_512).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n                MyTextsWrapperEnum.SphereFull_1024));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.EacPrisonAsteroid, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n                MyVoxelFiles.Get(MyMwcVoxelFilesEnum.EacPrisonAsteroid).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n                MyTextsWrapperEnum.EacPrisonAsteroid));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.piratebase_export, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n                MyVoxelFiles.Get(MyMwcVoxelFilesEnum.piratebase_export).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n                MyTextsWrapperEnum.piratebase_export));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Chinese_Mines_CenterAsteroid, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n    MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Chinese_Mines_CenterAsteroid).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n    MyTextsWrapperEnum.Chinese_Mines_CenterAsteroid));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Chinese_Mines_FrontAsteroid, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n    MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Chinese_Mines_FrontAsteroid).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n    MyTextsWrapperEnum.Chinese_Mines_FrontAsteroid));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Chinese_Mines_FrontRightAsteroid, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n    MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Chinese_Mines_FrontRightAsteroid).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n    MyTextsWrapperEnum.Chinese_Mines_FrontRightAsteroid));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Chinese_Mines_LeftAsteroid, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n    MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Chinese_Mines_LeftAsteroid).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n    MyTextsWrapperEnum.Chinese_Mines_LeftAsteroid));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Chinese_Mines_MainAsteroid, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n    MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Chinese_Mines_MainAsteroid).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n    MyTextsWrapperEnum.Chinese_Mines_MainAsteroid));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Chinese_Mines_RightAsteroid, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n    MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Chinese_Mines_RightAsteroid).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n    MyTextsWrapperEnum.Chinese_Mines_RightAsteroid));\n\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.TowerWithConcreteBlock1, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n    MyVoxelFiles.Get(MyMwcVoxelFilesEnum.TowerWithConcreteBlock1).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n    MyTextsWrapperEnum.TowerWithConcreteBlock1));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.TowerWithConcreteBlock2, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n    MyVoxelFiles.Get(MyMwcVoxelFilesEnum.TowerWithConcreteBlock2).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n    MyTextsWrapperEnum.TowerWithConcreteBlock2));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Warehouse, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n                MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Warehouse).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n                MyTextsWrapperEnum.Warehouse));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Barths_moon_base, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n           MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Barths_moon_base).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n           MyTextsWrapperEnum.Barths_moon_base));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Barths_moon_satelite, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n          MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Barths_moon_satelite).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n          MyTextsWrapperEnum.Barths_moon_satelite));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Fort_valiant_base, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n          MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Fort_valiant_base).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n          MyTextsWrapperEnum.Fort_valiant_base));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Fort_valiant_dungeon, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n          MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Fort_valiant_dungeon).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n          MyTextsWrapperEnum.Fort_valiant_dungeon));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.JunkYardInhabited_256x128x256, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n      MyVoxelFiles.Get(MyMwcVoxelFilesEnum.JunkYardInhabited_256x128x256).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n      MyTextsWrapperEnum.JunkYardInhabited_256x128x256));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.JunkYardToxic_128x128x128, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n      MyVoxelFiles.Get(MyMwcVoxelFilesEnum.JunkYardToxic_128x128x128).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n      MyTextsWrapperEnum.JunkYardToxic_128x128x128));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Empty_512x512x512, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n      MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Empty_512x512x512).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n      MyTextsWrapperEnum.Empty512x512x512));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.JunkYardForge_256x256x256, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n      MyVoxelFiles.Get(MyMwcVoxelFilesEnum.JunkYardForge_256x256x256).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n      MyTextsWrapperEnum.JunkYardForge_256x256x256));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Barths_moon_camp, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n       MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Barths_moon_camp).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n       MyTextsWrapperEnum.Barths_moon_camp));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.rift_base_bigger, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n       MyVoxelFiles.Get(MyMwcVoxelFilesEnum.rift_base_bigger).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n       MyTextsWrapperEnum.Asteroid_Rift_base_bigger));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.rift_base_smaller, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n       MyVoxelFiles.Get(MyMwcVoxelFilesEnum.rift_base_smaller).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n       MyTextsWrapperEnum.Asteroid_Rift_base_smaller));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.barths_moon_lab1, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n     MyVoxelFiles.Get(MyMwcVoxelFilesEnum.barths_moon_lab1).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n     MyTextsWrapperEnum.barths_moon_lab1));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.barths_moon_lab2, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n     MyVoxelFiles.Get(MyMwcVoxelFilesEnum.barths_moon_lab2).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n     MyTextsWrapperEnum.barths_moon_lab2));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.fort_val_box_128, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n     MyVoxelFiles.Get(MyMwcVoxelFilesEnum.fort_val_box_128).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n     MyTextsWrapperEnum.fort_val_box_128));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.rift, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n       MyVoxelFiles.Get(MyMwcVoxelFilesEnum.rift).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n       MyTextsWrapperEnum.Asteroid_Rift));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.rift_small_1, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n       MyVoxelFiles.Get(MyMwcVoxelFilesEnum.rift_base_smaller).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n       MyTextsWrapperEnum.Asteroid_Rift_small_1));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.rift_small_2, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n       MyVoxelFiles.Get(MyMwcVoxelFilesEnum.rift_base_smaller).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n       MyTextsWrapperEnum.Asteroid_Rift_small_2));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Junkyard_Race_256x256x256, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n     MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Junkyard_Race_256x256x256).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n     MyTextsWrapperEnum.Junkyard_Race_256x256x256));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Junkyard_RaceAsteroid_256x256x256, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n     MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Junkyard_RaceAsteroid_256x256x256).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n     MyTextsWrapperEnum.Junkyard_RaceAsteroid_256x256x256));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.ChineseRefinery_First_128x128x128, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\nMyVoxelFiles.Get(MyMwcVoxelFilesEnum.ChineseRefinery_First_128x128x128).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\nMyTextsWrapperEnum.ChineseRefinery_First_128x128x128));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.ChineseRefinery_Second_128x128x128, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\nMyVoxelFiles.Get(MyMwcVoxelFilesEnum.ChineseRefinery_Second_128x128x128).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\nMyTextsWrapperEnum.ChineseRefinery_Second_128x128x128));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.ChineseRefinery_Third_128x256x128, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\nMyVoxelFiles.Get(MyMwcVoxelFilesEnum.ChineseRefinery_Third_128x256x128).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\nMyTextsWrapperEnum.ChineseRefinery_Third_128x256x128));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Chinese_Corridor_Last_126x126x126, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\nMyVoxelFiles.Get(MyMwcVoxelFilesEnum.Chinese_Corridor_Last_126x126x126).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\nMyTextsWrapperEnum.Chinese_Corridor_Last_126x126x126));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Chinese_Corridor_Tunnel_256x256x256, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\nMyVoxelFiles.Get(MyMwcVoxelFilesEnum.Chinese_Corridor_Tunnel_256x256x256).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\nMyTextsWrapperEnum.Chinese_Corridor_Tunnel_256x256x256));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Bioresearch, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n                MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Bioresearch).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n                MyTextsWrapperEnum.Bioresearch));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.small2_asteroids, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n               MyVoxelFiles.Get(MyMwcVoxelFilesEnum.small2_asteroids).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n               MyTextsWrapperEnum.small2_asteroids));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.small3_asteroids, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n               MyVoxelFiles.Get(MyMwcVoxelFilesEnum.small3_asteroids).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n               MyTextsWrapperEnum.small3_asteroids));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.many_medium_asteroids, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n               MyVoxelFiles.Get(MyMwcVoxelFilesEnum.many_medium_asteroids).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n               MyTextsWrapperEnum.many_medium_asteroids));\n\n             m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.many_small_asteroids, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n               MyVoxelFiles.Get(MyMwcVoxelFilesEnum.many_small_asteroids).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n               MyTextsWrapperEnum.many_small_asteroids));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.many2_small_asteroids, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n               MyVoxelFiles.Get(MyMwcVoxelFilesEnum.many2_small_asteroids).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n               MyTextsWrapperEnum.many2_small_asteroids));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.rus_attack, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n               MyVoxelFiles.Get(MyMwcVoxelFilesEnum.rus_attack).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n               MyTextsWrapperEnum.rus_attack));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.hopebase512, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n               MyVoxelFiles.Get(MyMwcVoxelFilesEnum.hopebase512).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n               MyTextsWrapperEnum.hopebase512));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.hopefood128, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n               MyVoxelFiles.Get(MyMwcVoxelFilesEnum.hopefood128).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n               MyTextsWrapperEnum.hopefood128));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.hopevault128, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n              MyVoxelFiles.Get(MyMwcVoxelFilesEnum.hopevault128).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n              MyTextsWrapperEnum.hopevault128));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.New_Jerusalem_Asteroid, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n                MyVoxelFiles.Get(MyMwcVoxelFilesEnum.New_Jerusalem_Asteroid).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n                MyTextsWrapperEnum.New_Jerusalem_Asteroid));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Chinese_Transmitter_Asteroid, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n                MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Chinese_Transmitter_Asteroid).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n                MyTextsWrapperEnum.Chinese_Transmitter_Asteroid));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Slaver_Base_2_Asteroid, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n                MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Slaver_Base_2_Asteroid).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n                MyTextsWrapperEnum.Slaver_Base_2_Asteroid));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Small_Pirate_Base_2_Asteroid, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n                MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Small_Pirate_Base_2_Asteroid).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n                MyTextsWrapperEnum.Small_Pirate_Base_2_Asteroid));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Small_Pirate_Base_Asteroid, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n                MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Small_Pirate_Base_Asteroid).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n                MyTextsWrapperEnum.Small_Pirate_Base_Asteroid));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Solar_Factory_EAC_Asteroid, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n                MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Solar_Factory_EAC_Asteroid).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n                MyTextsWrapperEnum.Solar_Factory_EAC_Asteroid));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Mines_Asteroid, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n                MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Mines_Asteroid).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n                MyTextsWrapperEnum.Mines_Asteroid));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Small_Pirate_Base_3_1, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n               MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Small_Pirate_Base_3_1).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n               MyTextsWrapperEnum.Small_Pirate_Base_3_1));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Small_Pirate_Base_3_2, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n              MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Small_Pirate_Base_3_2).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n              MyTextsWrapperEnum.Small_Pirate_Base_3_2));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Small_Pirate_Base_3_3, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n              MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Small_Pirate_Base_3_3).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n              MyTextsWrapperEnum.Small_Pirate_Base_3_3));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Voxel_Arena_Tunnels, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n              MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Voxel_Arena_Tunnels).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n              MyTextsWrapperEnum.Voxel_Arena_Tunnels));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Novaja_Zemlja, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n              MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Novaja_Zemlja).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n              MyTextsWrapperEnum.Novaja_Zemlja));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.EACSurvaySmaller_256_256_256, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n              MyVoxelFiles.Get(MyMwcVoxelFilesEnum.EACSurvaySmaller_256_256_256).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n              MyTextsWrapperEnum.EACSurvaySmaller_256_256_256));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.EACSurveyBigger_512_256_256, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n              MyVoxelFiles.Get(MyMwcVoxelFilesEnum.EACSurveyBigger_512_256_256).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n              MyTextsWrapperEnum.EACSurveyBigger_512_256_256));\n\n\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Laika1_128_128_128, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n              MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Laika1_128_128_128).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n              MyTextsWrapperEnum.Laika1_128_128_128));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Laika2_64_64_64, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n              MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Laika2_64_64_64).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n              MyTextsWrapperEnum.Laika2_64_64_64));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Laika3_64_64_64, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n              MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Laika3_64_64_64).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n              MyTextsWrapperEnum.Laika3_64_64_64));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Laika4_256_128_128, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n              MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Laika4_256_128_128).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n              MyTextsWrapperEnum.Laika4_256_128_128));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Laika5_128_128_128, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n              MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Laika5_128_128_128).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n              MyTextsWrapperEnum.Laika5_128_128_128));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Laika6_64_64_64, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n              MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Laika6_64_64_64).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n              MyTextsWrapperEnum.Laika6_64_64_64));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Laika7_64_64_64, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n              MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Laika7_64_64_64).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n              MyTextsWrapperEnum.Laika7_64_64_64));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Laika8_128_128_128, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n              MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Laika8_128_128_128).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n              MyTextsWrapperEnum.Laika8_128_128_128));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Laika9_128_128_128, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n              MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Laika9_128_128_128).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n              MyTextsWrapperEnum.Laika9_128_128_128));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Arabian_Border_1, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n             MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Arabian_Border_1).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n             MyTextsWrapperEnum.Arabian_Border_1));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Arabian_Border_2, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n             MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Arabian_Border_2).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n             MyTextsWrapperEnum.Arabian_Border_2));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Arabian_Border_3, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n             MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Arabian_Border_3).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n             MyTextsWrapperEnum.Arabian_Border_3));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Arabian_Border_4, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n             MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Arabian_Border_4).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n             MyTextsWrapperEnum.Arabian_Border_4));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Arabian_Border_5, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n             MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Arabian_Border_5).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n             MyTextsWrapperEnum.Arabian_Border_5));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Arabian_Border_6, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n             MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Arabian_Border_6).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n             MyTextsWrapperEnum.Arabian_Border_6));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Arabian_Border_7, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n             MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Arabian_Border_7).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n             MyTextsWrapperEnum.Arabian_Border_7));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Arabian_Border_Arabian, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n             MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Arabian_Border_Arabian).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n             MyTextsWrapperEnum.Arabian_Border_Arabian));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Arabian_Border_EAC, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n             MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Arabian_Border_EAC).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n             MyTextsWrapperEnum.Arabian_Border_EAC));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Chinese_Corridor_1, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n             MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Chinese_Corridor_1).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n             MyTextsWrapperEnum.Chinese_Corridor_1));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Grave_Skull, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n             MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Grave_Skull).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n             MyTextsWrapperEnum.Grave_Skull));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Pirate_Base_1, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n             MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Pirate_Base_1).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n             MyTextsWrapperEnum.Pirate_Base_Asteroid_1));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Pirate_Base_2, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n             MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Pirate_Base_2).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n             MyTextsWrapperEnum.Pirate_Base_Asteroid_2));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Pirate_Base_3, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n             MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Pirate_Base_3).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n             MyTextsWrapperEnum.Pirate_Base_Asteroid_3));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Plutonium_Mines, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n             MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Plutonium_Mines).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n             MyTextsWrapperEnum.Plutonium_Mines));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Fragile_Sector, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n             MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Fragile_Sector).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n             MyTextsWrapperEnum.Fragile_Sector));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Chinese_Solar_Array_Bottom, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n             MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Chinese_Solar_Array_Bottom).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n             MyTextsWrapperEnum.Chinese_Solar_Array_Bottom));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Chinese_Solar_Array_Main, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n             MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Chinese_Solar_Array_Main).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n             MyTextsWrapperEnum.Chinese_Solar_Array_Main));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Chinese_Mines_Small, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n             MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Chinese_Mines_Small).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n             MyTextsWrapperEnum.Chinese_Mines_Small));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Chinese_Mines_Side, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n             MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Chinese_Mines_Side).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n             MyTextsWrapperEnum.Chinese_Mines_Side));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Hippie_Outpost_Base, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n             MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Hippie_Outpost_Base).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n             MyTextsWrapperEnum.Hippie_Outpost_Base));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Hippie_Outpost_Tree, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n             MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Hippie_Outpost_Tree).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n             MyTextsWrapperEnum.Hippie_Outpost_Tree));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Laika_1, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n             MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Laika_1).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n             MyTextsWrapperEnum.Laika_1));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Laika_2, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n             MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Laika_2).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n             MyTextsWrapperEnum.Laika_2));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Laika_3, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n             MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Laika_3).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n             MyTextsWrapperEnum.Laika_3));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Fortress_Sanc_1, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n             MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Fortress_Sanc_1).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n             MyTextsWrapperEnum.Fortress_Sanc_1));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Fortress_Sanc_2, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n             MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Fortress_Sanc_2).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n             MyTextsWrapperEnum.Fortress_Sanc_2));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Fortress_Sanc_3, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n             MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Fortress_Sanc_3).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n             MyTextsWrapperEnum.Fortress_Sanc_3));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Fortress_Sanc_4, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n             MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Fortress_Sanc_4).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n             MyTextsWrapperEnum.Fortress_Sanc_4));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Fortress_Sanc_5, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n             MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Fortress_Sanc_5).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n             MyTextsWrapperEnum.Fortress_Sanc_5));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Fortress_Sanc_6, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n             MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Fortress_Sanc_6).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n             MyTextsWrapperEnum.Fortress_Sanc_6));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Fortress_Sanc_7, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n             MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Fortress_Sanc_7).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n             MyTextsWrapperEnum.Fortress_Sanc_7));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Fortress_Sanc_8, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n             MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Fortress_Sanc_8).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n             MyTextsWrapperEnum.Fortress_Sanc_8));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Fortress_Sanc_9, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n             MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Fortress_Sanc_9).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n             MyTextsWrapperEnum.Fortress_Sanc_9));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Fortress_Sanc_10, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n             MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Fortress_Sanc_10).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n             MyTextsWrapperEnum.Fortress_Sanc_10));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Fortress_Sanc_11, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n             MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Fortress_Sanc_11).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n             MyTextsWrapperEnum.Fortress_Sanc_11));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Russian_Transmitter_1, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n             MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Russian_Transmitter_1).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n             MyTextsWrapperEnum.Russian_Transmitter_1));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Russian_Transmitter_2, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n             MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Russian_Transmitter_2).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n             MyTextsWrapperEnum.Russian_Transmitter_2));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Russian_Transmitter_3, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n             MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Russian_Transmitter_3).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n             MyTextsWrapperEnum.Russian_Transmitter_3));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Russian_Transmitter_Main, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n            MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Russian_Transmitter_Main).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n            MyTextsWrapperEnum.Russian_Transmitter_Main));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Russian_Warehouse, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n             MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Russian_Warehouse).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n             MyTextsWrapperEnum.Russian_Warehouse_New));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.ReichStag_1, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n             MyVoxelFiles.Get(MyMwcVoxelFilesEnum.ReichStag_1).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n             MyTextsWrapperEnum.ReichStag_1));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.ReichStag_2, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n             MyVoxelFiles.Get(MyMwcVoxelFilesEnum.ReichStag_2).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n             MyTextsWrapperEnum.ReichStag_2));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.New_Singapore, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n             MyVoxelFiles.Get(MyMwcVoxelFilesEnum.New_Singapore).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n             MyTextsWrapperEnum.New_Singapore));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.HallOfFame, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n             MyVoxelFiles.Get(MyMwcVoxelFilesEnum.HallOfFame).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n             MyTextsWrapperEnum.HallOfFame));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.IceCaveDeathmatch, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n             MyVoxelFiles.Get(MyMwcVoxelFilesEnum.IceCaveDeathmatch).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n             MyTextsWrapperEnum.IceCaveDeathmatch));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.WarehouseDeathmatch, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n             MyVoxelFiles.Get(MyMwcVoxelFilesEnum.WarehouseDeathmatch).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n             MyTextsWrapperEnum.WarehouseDeatmatch));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Nearby_Station_1, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n             MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Nearby_Station_1).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n             MyTextsWrapperEnum.Nearby_Station_1));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Nearby_Station_2, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n             MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Nearby_Station_2).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n             MyTextsWrapperEnum.Nearby_Station_2));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Nearby_Station_3, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n             MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Nearby_Station_3).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n             MyTextsWrapperEnum.Nearby_Station_3));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Nearby_Station_4, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n             MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Nearby_Station_4).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n             MyTextsWrapperEnum.Nearby_Station_4));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Nearby_Station_5, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n             MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Nearby_Station_5).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n             MyTextsWrapperEnum.Nearby_Station_5));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Nearby_Station_6, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n             MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Nearby_Station_6).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n             MyTextsWrapperEnum.Nearby_Station_6));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Nearby_Station_7, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n             MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Nearby_Station_7).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n             MyTextsWrapperEnum.Nearby_Station_7));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Nearby_Station_8, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n             MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Nearby_Station_8).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n             MyTextsWrapperEnum.Nearby_Station_8));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Nearby_Station_9, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n             MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Nearby_Station_9).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n             MyTextsWrapperEnum.Nearby_Station_9));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Nearby_Station_10, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n             MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Nearby_Station_10).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n             MyTextsWrapperEnum.Nearby_Station_10));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Nearby_Station_11, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n             MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Nearby_Station_11).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n             MyTextsWrapperEnum.Nearby_Station_11));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.Nearby_Station_12, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n             MyVoxelFiles.Get(MyMwcVoxelFilesEnum.Nearby_Station_12).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n             MyTextsWrapperEnum.Nearby_Station_12));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.VoxelArenaDeathmatch, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n             MyVoxelFiles.Get(MyMwcVoxelFilesEnum.VoxelArenaDeathmatch).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n             MyTextsWrapperEnum.VoxelArenaDeathmatch));\n\n            m_voxelFilesHelpers.Add(MyMwcVoxelFilesEnum.RiftStationSmaller, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\n             MyVoxelFiles.Get(MyMwcVoxelFilesEnum.RiftStationSmaller).GetIconFilePath(), flags: TextureFlags.IgnoreQuality),\n             MyTextsWrapperEnum.RiftStationSmaller));\n\n            #endregion\n\n\n            #region Create voxel material helpers\n\n            m_voxelMaterialHelpers.Add(MyMwcVoxelMaterialsEnum.Lava_01,\n                new MyGuiVoxelMaterialHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconMaterialLava_01\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.Lava_01));\n\n            m_voxelMaterialHelpers.Add(MyMwcVoxelMaterialsEnum.Cobalt_01,\n                new MyGuiVoxelMaterialHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconMaterialCobalt_01\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.Cobalt_01));\n\n            m_voxelMaterialHelpers.Add(MyMwcVoxelMaterialsEnum.Gold_01,\n                new MyGuiVoxelMaterialHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconMaterialGold_01\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.Gold_01));\n\n            m_voxelMaterialHelpers.Add(MyMwcVoxelMaterialsEnum.Helium3_01,\n                new MyGuiVoxelMaterialHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconMaterialHelium3_01\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.Helium3_01));\n\n            m_voxelMaterialHelpers.Add(MyMwcVoxelMaterialsEnum.Helium4_01,\n                new MyGuiVoxelMaterialHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconMaterialHelium4_01\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.Helium4_01));\n\n            m_voxelMaterialHelpers.Add(MyMwcVoxelMaterialsEnum.Ice_01,\n                new MyGuiVoxelMaterialHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconMaterialIce_01\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.Ice_01));\n\n            m_voxelMaterialHelpers.Add(MyMwcVoxelMaterialsEnum.Indestructible_01,\n                new MyGuiVoxelMaterialHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconMaterialIndestructible_01\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.Indestructible_01));\n\n            m_voxelMaterialHelpers.Add(MyMwcVoxelMaterialsEnum.Indestructible_02,\n                new MyGuiVoxelMaterialHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconMaterialIndestructible_02\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.Indestructible_02));\n\n            m_voxelMaterialHelpers.Add(MyMwcVoxelMaterialsEnum.Iron_01,\n                new MyGuiVoxelMaterialHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconMaterialIron_01\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.Iron_01));\n\n            m_voxelMaterialHelpers.Add(MyMwcVoxelMaterialsEnum.Iron_02,\n                new MyGuiVoxelMaterialHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconMaterialIron_02\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.Iron_02));\n\n            m_voxelMaterialHelpers.Add(MyMwcVoxelMaterialsEnum.Magnesium_01,\n                new MyGuiVoxelMaterialHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconMaterialMagnesium_01\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.Magnesium_01));\n\n            m_voxelMaterialHelpers.Add(MyMwcVoxelMaterialsEnum.Nickel_01,\n                new MyGuiVoxelMaterialHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconMaterialNickel_01\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.Nickel_01));\n\n            m_voxelMaterialHelpers.Add(MyMwcVoxelMaterialsEnum.Organic_01,\n                new MyGuiVoxelMaterialHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconMaterialOrganic_01\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.Organic_01));\n\n            m_voxelMaterialHelpers.Add(MyMwcVoxelMaterialsEnum.Platinum_01,\n                new MyGuiVoxelMaterialHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconMaterialPlatinum_01\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.Platinum_01));\n\n            m_voxelMaterialHelpers.Add(MyMwcVoxelMaterialsEnum.Silicon_01,\n                new MyGuiVoxelMaterialHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconMaterialSillicon_01\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.Silicon_01));\n\n            m_voxelMaterialHelpers.Add(MyMwcVoxelMaterialsEnum.Silver_01,\n                new MyGuiVoxelMaterialHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconMaterialSilver_01\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.Silver_01));\n\n            m_voxelMaterialHelpers.Add(MyMwcVoxelMaterialsEnum.Stone_01,\n                new MyGuiVoxelMaterialHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconMaterialStone_01\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.Stone_01));\n\n            m_voxelMaterialHelpers.Add(MyMwcVoxelMaterialsEnum.Stone_02,\n                new MyGuiVoxelMaterialHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconMaterialStone_02\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.Stone_02));\n\n            m_voxelMaterialHelpers.Add(MyMwcVoxelMaterialsEnum.Stone_03,\n                new MyGuiVoxelMaterialHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconMaterialStone_03\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.Stone_03));\n\n            m_voxelMaterialHelpers.Add(MyMwcVoxelMaterialsEnum.Stone_04,\n                new MyGuiVoxelMaterialHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconMaterialStone_04\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.Stone_04));\n\n            m_voxelMaterialHelpers.Add(MyMwcVoxelMaterialsEnum.Stone_05,\n                new MyGuiVoxelMaterialHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconMaterialStone_05\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.Stone_05));\n\n            m_voxelMaterialHelpers.Add(MyMwcVoxelMaterialsEnum.Stone_06,\n                new MyGuiVoxelMaterialHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconMaterialStone_06\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.Stone_06));\n\n            m_voxelMaterialHelpers.Add(MyMwcVoxelMaterialsEnum.Stone_07,\n                new MyGuiVoxelMaterialHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconMaterialStone_07\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.Stone_07));\n\n            m_voxelMaterialHelpers.Add(MyMwcVoxelMaterialsEnum.Stone_08,\n                new MyGuiVoxelMaterialHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconMaterialStone_08\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.Stone_08));\n\n            m_voxelMaterialHelpers.Add(MyMwcVoxelMaterialsEnum.Indestructible_03,\n                new MyGuiVoxelMaterialHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconMaterialStone_09\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.Indestructible_03));\n\n            m_voxelMaterialHelpers.Add(MyMwcVoxelMaterialsEnum.Stone_10,\n                new MyGuiVoxelMaterialHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconMaterialStone_10\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.Stone_10));\n\n            m_voxelMaterialHelpers.Add(MyMwcVoxelMaterialsEnum.Indestructible_04,\n                new MyGuiVoxelMaterialHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconMaterialStone_11\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.Indestructible_04));\n\n            m_voxelMaterialHelpers.Add(MyMwcVoxelMaterialsEnum.Indestructible_05_Craters_01,\n                new MyGuiVoxelMaterialHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconMaterialStone_12\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.Indestructible_05_Craters_01));\n\n            m_voxelMaterialHelpers.Add(MyMwcVoxelMaterialsEnum.Stone_13_Wall_01,\n                new MyGuiVoxelMaterialHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconMaterialStone_13\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.Stone_13_Wall_01));\n\n            m_voxelMaterialHelpers.Add(MyMwcVoxelMaterialsEnum.Treasure_01,\n                new MyGuiVoxelMaterialHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconMaterialTreasure_01\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.Treasure_01));\n\n            m_voxelMaterialHelpers.Add(MyMwcVoxelMaterialsEnum.Treasure_02,\n                new MyGuiVoxelMaterialHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconMaterialTreasure_02\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.Treasure_02));\n\n            m_voxelMaterialHelpers.Add(MyMwcVoxelMaterialsEnum.Uranite_01,\n                new MyGuiVoxelMaterialHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconMaterialUranite_01\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.Uranite_01));\n\n            m_voxelMaterialHelpers.Add(MyMwcVoxelMaterialsEnum.Snow_01,\n                new MyGuiVoxelMaterialHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconMaterialSnow_01\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.Snow_01));\n\n            m_voxelMaterialHelpers.Add(MyMwcVoxelMaterialsEnum.Concrete_01,\n                new MyGuiVoxelMaterialHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconMaterialConcrete_01\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.Concrete_01));\n\n            m_voxelMaterialHelpers.Add(MyMwcVoxelMaterialsEnum.Concrete_02,\n                new MyGuiVoxelMaterialHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconMaterialConcrete_02\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.Concrete_02));\n\n            m_voxelMaterialHelpers.Add(MyMwcVoxelMaterialsEnum.Sandstone_01,\n                new MyGuiVoxelMaterialHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconMaterialSandstone_01\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.Sandstone_01));\n\n            m_voxelMaterialHelpers.Add(MyMwcVoxelMaterialsEnum.Stone_Red,\n                new MyGuiVoxelMaterialHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconMaterialStone_Red\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.Stone_Red));\n\n\n\n            #endregion\n\n            #region Create asteroid type helpers\n\n            m_guiAsteroidTypeHelpers.Add(MyGuiAsteroidTypesEnum.VOXEL, new MyGuiAsteroidHelper(null, MyTextsWrapperEnum.Voxel));\n            m_guiAsteroidTypeHelpers.Add(MyGuiAsteroidTypesEnum.STATIC, new MyGuiAsteroidHelper(null, MyTextsWrapperEnum.Static));\n\n            #endregion\n\n            #region Create static asteroid type helpers\n\n            /*\n            m_staticAsteroidHelpers.Add(MyMwcObjectBuilder_StaticAsteroid_TypesEnum.JEROMIE,\n                new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Jeromie\", flags: TextureFlags.IgnoreQuality), MyTextsWrapperEnum.JeromieAsteroid));\n            */\n\n            /*\n            m_staticAsteroidHelpers.Add(MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid10000m_A, new MyGuiAsteroidHelper(\n                MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Jeromie\", flags: TextureFlags.IgnoreQuality), MyTextsWrapperEnum.StaticAsteroid01));\n            */\n\n            /*\n            m_staticAsteroidHelpers.Add(MyMwcObjectBuilder_StaticAsteroid_TypesEnum.STATIC_ASTEROID_02, new MyGuiAsteroidHelper(\n                MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\DeformedSphereSmall\"), MyTextsWrapperEnum.StaticAsteroid02));\n            \n            m_staticAsteroidHelpers.Add(MyMwcObjectBuilder_StaticAsteroid_TypesEnum.STATIC_ASTEROID_03, new MyGuiAsteroidHelper(\n                MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelprs\\\\DeformedSphereSmallest\"), MyTextsWrapperEnum.StaticAsteroid03));*/\n\n            // TODO: Update textures and texts\n            var texture = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Jeromie\");\n\n\n            foreach (var enumValue in MyMwcStaticAsteroidTypesEnumValues)\n            {\n                //Removed support\n                if (((int)enumValue >= (int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid10m_C)\n                    &&\n                    ((int)enumValue <= (int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid40000m_A))\n                    continue;\n\n                MyTextsWrapperEnum description;\n                string guiHelperTexture;\n\n                switch (enumValue)\n                {\n                    case MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid10m_A:\n                        description = MyTextsWrapperEnum.StaticAsteroid10m;\n                        guiHelperTexture = \"StaticAsteroid10m_A\";\n                        break;\n                    case MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid20m_A:\n                        description = MyTextsWrapperEnum.StaticAsteroid20m;\n                        guiHelperTexture = \"StaticAsteroid20m_A\";\n                        break;\n                    case MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid30m_A:\n                        description = MyTextsWrapperEnum.StaticAsteroid30m;\n                        guiHelperTexture = \"StaticAsteroid30m_A\";\n                        break;\n                    case MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid50m_A:\n                        description = MyTextsWrapperEnum.StaticAsteroid50m;\n                        guiHelperTexture = \"StaticAsteroid50m_A\";\n                        break;\n                    case MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid100m_A:\n                        description = MyTextsWrapperEnum.StaticAsteroid100m;\n                        guiHelperTexture = \"StaticAsteroid100m_A\";\n                        break;\n                    case MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid300m_A:\n                        description = MyTextsWrapperEnum.StaticAsteroid300m;\n                        guiHelperTexture = \"StaticAsteroid300m_A\";\n                        break;\n                    case MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid500m_A:\n                        description = MyTextsWrapperEnum.StaticAsteroid500m;\n                        guiHelperTexture = \"StaticAsteroid500m_A\";\n                        break;\n                    case MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid1000m_A:\n                        description = MyTextsWrapperEnum.StaticAsteroid1000m;\n                        guiHelperTexture = \"StaticAsteroid1000m_A\";\n                        break;\n                    case MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid2000m_A:\n                        description = MyTextsWrapperEnum.StaticAsteroid2000m;\n                        guiHelperTexture = \"StaticAsteroid2000m_A\";\n                        break;\n                    case MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid5000m_A:\n                        description = MyTextsWrapperEnum.StaticAsteroid5000m;\n                        guiHelperTexture = \"StaticAsteroid5000m_A\";\n                        break;\n                    case MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid10000m_A:\n                        description = MyTextsWrapperEnum.StaticAsteroid10000m;\n                        guiHelperTexture = \"StaticAsteroid10000m_A\";\n                        break;\n                    case MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid40000m_A:\n                        description = MyTextsWrapperEnum.StaticAsteroid40000m;\n                        guiHelperTexture = \"StaticAsteroid10000m_A\";\n                        break;\n                    case MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid10m_B:\n                        description = MyTextsWrapperEnum.StaticAsteroid10m;\n                        guiHelperTexture = \"StaticAsteroid10m_B\";\n                        break;\n                    case MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid20m_B:\n                        description = MyTextsWrapperEnum.StaticAsteroid20m;\n                        guiHelperTexture = \"StaticAsteroid20m_B\";\n                        break;\n                    case MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid30m_B:\n                        description = MyTextsWrapperEnum.StaticAsteroid30m;\n                        guiHelperTexture = \"StaticAsteroid30m_B\";\n                        break;\n                    case MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid50m_B:\n                        description = MyTextsWrapperEnum.StaticAsteroid50m;\n                        guiHelperTexture = \"StaticAsteroid50m_B\";\n                        break;\n                    case MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid100m_B:\n                        description = MyTextsWrapperEnum.StaticAsteroid100m;\n                        guiHelperTexture = \"StaticAsteroid100m_B\";\n                        break;\n                    case MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid300m_B:\n                        description = MyTextsWrapperEnum.StaticAsteroid300m;\n                        guiHelperTexture = \"StaticAsteroid300m_B\";\n                        break;\n                    case MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid500m_B:\n                        description = MyTextsWrapperEnum.StaticAsteroid500m;\n                        guiHelperTexture = \"StaticAsteroid500m_B\";\n                        break;\n                    case MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid1000m_B:\n                        description = MyTextsWrapperEnum.StaticAsteroid1000m;\n                        guiHelperTexture = \"StaticAsteroid1000m_B\";\n                        break;\n                    case MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid2000m_B:\n                        description = MyTextsWrapperEnum.StaticAsteroid2000m;\n                        guiHelperTexture = \"StaticAsteroid2000m_B\";\n                        break;\n                    case MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid5000m_B:\n                        description = MyTextsWrapperEnum.StaticAsteroid5000m;\n                        guiHelperTexture = \"StaticAsteroid5000m_B\";\n                        break;\n                    case MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid10000m_B:\n                        description = MyTextsWrapperEnum.StaticAsteroid10000m;\n                        guiHelperTexture = \"StaticAsteroid10000m_B\";\n                        break;\n                    default:\n                        throw new ArgumentOutOfRangeException();\n                }\n\n                m_staticAsteroidHelpers.Add(enumValue, new MyGuiAsteroidHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\\" + guiHelperTexture, flags: TextureFlags.IgnoreQuality), description));\n            }\n\n            #endregion\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Helpers/MyGuiContextMenuHelper.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Localization;\n\nnamespace MinerWars.AppCode.Game.GUI.Helpers\n{\n    class MyGuiContextMenuHelper : MyGuiHelperBase\n    {\n        public List<MyGuiContextMenuItemHelper> MenuItemHelpers;\n\n        public MyGuiContextMenuHelper(MyTextsWrapperEnum description, List<MyGuiContextMenuItemHelper> menuItemHelpers)\n            : base(description)\n        {\n            MenuItemHelpers = menuItemHelpers;\n        }\n\n        public bool IsActionTypeAvailable(MyGuiContextMenuItemActionType actionType)\n        {\n            return MenuItemHelpers.Exists(a => a.ActionType == actionType);\n        }\n\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Helpers/MyGuiContextMenuHelpers.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Editor;\nusing SysUtils.Utils;\n\nnamespace MinerWars.AppCode.Game.GUI.Helpers\n{\n    // This is enumeration of values, that should be used to decide, what is the action mapped to chosen context menu item\n    public enum MyGuiContextMenuItemActionType\n    {\n        SELECT_ALL_OBJECTS,\n        ADJUST_GRID,\n        EXIT_TO_MAIN_MENU,\n        ADD_OBJECT,\n        CLEAR_WHOLE_SECTOR,\n        SAVE_SECTOR,\n        LOAD_SECTOR,\n        ATTACH_TO_CAMERA,\n        COPY_SELECTED,\n        EDIT_SELECTED,\n        RESET_ROTATION,\n        SWITCH_GIZMO_SPACE,\n        SWITCH_GIZMO_MODE,\n        SAVE_ASTEROID_TO_FILE,\n        RESET_ASTEROID,\n        CLEAR_ASTEROID_MATERIALS,\n        ENTER_PREFAB_CONTAINER,\n        DETACH_FROM_CAMERA,\n        SUN_SETTINGS,\n        FOG_SETTINGS,\n        SAVE_ASTEROIDS,\n        ENTER_VOXEL_HAND,\n        EXIT_VOXEL_HAND,\n        EDIT_VOXEL_HAND,\n        OPTIONS,\n        EXIT_SELECTED,\n        EXIT_EDITING_MODE,\n        TOGGLE_SNAP_POINTS,\n        EDIT_PROPERTIES,\n        CONNECT_WAYPOINTS,\n        DISCONNECT_WAYPOINTS,\n        CORRECT_SNAPPED_PREFABS,\n    }\n\n    static class MyGuiContextMenuHelpers\n    {\n\n        static Dictionary<MyEditorStateEnum, MyGuiContextMenuHelper> m_editorContextMenuHelpers = new Dictionary<MyEditorStateEnum, MyGuiContextMenuHelper>();\n\n        public static MyGuiContextMenuHelper GetEditorContextMenuHelper(MyEditorStateEnum stateEnum)\n        {\n            MyGuiContextMenuHelper ret;\n            if (m_editorContextMenuHelpers.TryGetValue(stateEnum, out ret))\n                return ret;\n            else\n                return null;\n        }\n\n        public static void UnloadContent()\n        {\n            m_editorContextMenuHelpers.Clear();\n        }\n\n        public static void LoadDefaultEditorContent()\n        {\n            MyMwcLog.WriteLine(\"LoadDefaultEditorContent()\");\n\n            m_editorContextMenuHelpers.Clear();\n\n            #region Editor Context Menu Items\n\n\n            // General context menu items\n            List<MyGuiContextMenuItemHelper> generalMenuItems = new List<MyGuiContextMenuItemHelper>();\n            generalMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.AddObject, MyGuiContextMenuItemActionType.ADD_OBJECT, true, MyTextsWrapperEnum.AddObjectTooltip));\n            generalMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.SelectAllObjects, MyGuiContextMenuItemActionType.SELECT_ALL_OBJECTS, true, MyTextsWrapperEnum.SelectAllObjectsTooltip));\n            generalMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.ClearWholeSector, MyGuiContextMenuItemActionType.CLEAR_WHOLE_SECTOR, true, MyTextsWrapperEnum.ClearWholeSectorTooltip));\n            generalMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.SaveSector, MyGuiContextMenuItemActionType.SAVE_SECTOR, true, MyTextsWrapperEnum.SaveSectorTooltip));\n            generalMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.AdjustGrid, MyGuiContextMenuItemActionType.ADJUST_GRID, false, MyTextsWrapperEnum.AdjustGridTooltip));\n            generalMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.LoadSector, MyGuiContextMenuItemActionType.LOAD_SECTOR, false, MyTextsWrapperEnum.LoadSectorTooltip));\n            generalMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.SunSettings, MyGuiContextMenuItemActionType.SUN_SETTINGS, false, MyTextsWrapperEnum.SunSettingsTooltip));\n            generalMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.FogSettings, MyGuiContextMenuItemActionType.FOG_SETTINGS, false, MyTextsWrapperEnum.FogSettingsTooltip));\n            generalMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.SaveAsteroids, MyGuiContextMenuItemActionType.SAVE_ASTEROIDS, false, MyTextsWrapperEnum.SaveAsteroidsTooltip));\n            generalMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.EnterVoxelHand, MyGuiContextMenuItemActionType.ENTER_VOXEL_HAND, true, MyTextsWrapperEnum.EnterVoxelHandTooltip));\n            generalMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.Options, MyGuiContextMenuItemActionType.OPTIONS, true, MyTextsWrapperEnum.Options));\n            generalMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.ExitToMainMenu, MyGuiContextMenuItemActionType.EXIT_TO_MAIN_MENU, true, MyTextsWrapperEnum.ExitToMainMenu));\n\n            // Items that will be included for all types of selected objects\n            List<MyGuiContextMenuItemHelper> allTypesMenuItems = new List<MyGuiContextMenuItemHelper>();\n            allTypesMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.AddObject, MyGuiContextMenuItemActionType.ADD_OBJECT, true, MyTextsWrapperEnum.AddObjectTooltip));\n            allTypesMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.AttachToCamera, MyGuiContextMenuItemActionType.ATTACH_TO_CAMERA, true, MyTextsWrapperEnum.AttachToCameraTooltip));\n            allTypesMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.EditSelected, MyGuiContextMenuItemActionType.EDIT_SELECTED, true, MyTextsWrapperEnum.EditSelectedTooltip));\n            allTypesMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.SwitchGizmoSpace, MyGuiContextMenuItemActionType.SWITCH_GIZMO_SPACE, true, MyTextsWrapperEnum.SwitchGizmoSpaceTooltip));\n            allTypesMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.SwitchGizmoMode, MyGuiContextMenuItemActionType.SWITCH_GIZMO_MODE, true, MyTextsWrapperEnum.SwitchGizmoModeTooltip));\n            allTypesMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.CopySelected, MyGuiContextMenuItemActionType.COPY_SELECTED, false, MyTextsWrapperEnum.CopySelectedTooltip));\n            allTypesMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.ExitSelected, MyGuiContextMenuItemActionType.EXIT_SELECTED, true, null));\n            allTypesMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.EnterVoxelHand, MyGuiContextMenuItemActionType.ENTER_VOXEL_HAND, true, MyTextsWrapperEnum.EnterVoxelHandTooltip));\n            allTypesMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.LoadSector, MyGuiContextMenuItemActionType.LOAD_SECTOR, true, MyTextsWrapperEnum.LoadSectorTooltip));\n            allTypesMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.SaveSector, MyGuiContextMenuItemActionType.SAVE_SECTOR, true, MyTextsWrapperEnum.SaveSectorTooltip));\n            allTypesMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.ConnectWaypoints, MyGuiContextMenuItemActionType.CONNECT_WAYPOINTS, true, MyTextsWrapperEnum.ConnectWaypointsTooltip));\n            allTypesMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.DisconnectWaypoints, MyGuiContextMenuItemActionType.DISCONNECT_WAYPOINTS, true, MyTextsWrapperEnum.DisconnectWaypointsTooltip));\n            allTypesMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.EditProperties, MyGuiContextMenuItemActionType.EDIT_PROPERTIES, true, MyTextsWrapperEnum.EditPropertiesTooltip));\n            allTypesMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.CorrectSnappedPrefabs, MyGuiContextMenuItemActionType.CORRECT_SNAPPED_PREFABS, true, MyTextsWrapperEnum.CorrectSnappedPrefabsTooltip));\n\n            // Asteroid context menu items\n            List<MyGuiContextMenuItemHelper> asteroidMenuItems = new List<MyGuiContextMenuItemHelper>();\n            asteroidMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.SaveAsteroidToFile, MyGuiContextMenuItemActionType.SAVE_ASTEROID_TO_FILE, false, MyTextsWrapperEnum.SaveAsteroidToFileTooltip));\n            asteroidMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.ResetAsteroid, MyGuiContextMenuItemActionType.RESET_ASTEROID, false, MyTextsWrapperEnum.ResetAsteroidTooltip));\n            asteroidMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.ClearAsteroidMaterials, MyGuiContextMenuItemActionType.CLEAR_ASTEROID_MATERIALS, false, MyTextsWrapperEnum.ClearAsteroidMaterialsTooltip));\n            asteroidMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.EditSelected, MyGuiContextMenuItemActionType.EDIT_SELECTED, true, MyTextsWrapperEnum.EditSelectedTooltip));\n            asteroidMenuItems.AddRange(allTypesMenuItems);\n\n            // Voxel hand menu items\n            List<MyGuiContextMenuItemHelper> voxelHandMenuItems = new List<MyGuiContextMenuItemHelper>();\n            voxelHandMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.ExitVoxelHand, MyGuiContextMenuItemActionType.EXIT_VOXEL_HAND, true, MyTextsWrapperEnum.ExitVoxelHandTooltip));\n            voxelHandMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.EditVoxelHand, MyGuiContextMenuItemActionType.EDIT_VOXEL_HAND, true, MyTextsWrapperEnum.EditVoxelHandTooltip));\n            voxelHandMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.LoadSector, MyGuiContextMenuItemActionType.LOAD_SECTOR, true, MyTextsWrapperEnum.LoadSectorTooltip));\n            voxelHandMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.SaveSector, MyGuiContextMenuItemActionType.LOAD_SECTOR, true, MyTextsWrapperEnum.SaveSectorTooltip));\n\n            // Container context menu items\n            List<MyGuiContextMenuItemHelper> containerMenuItems = new List<MyGuiContextMenuItemHelper>();\n            containerMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.EnterPrefabContainer, MyGuiContextMenuItemActionType.ENTER_PREFAB_CONTAINER, true, MyTextsWrapperEnum.EnterPrefabContainerTooltip));\n            containerMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.ResetRotation, MyGuiContextMenuItemActionType.RESET_ROTATION, true, MyTextsWrapperEnum.ResetRotationTooltip));\n            containerMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.EditProperties, MyGuiContextMenuItemActionType.EDIT_PROPERTIES, true, MyTextsWrapperEnum.EditPropertiesTooltip));\n            containerMenuItems.AddRange(allTypesMenuItems);\n\n            List<MyGuiContextMenuItemHelper> activeContainerMenuItems = new List<MyGuiContextMenuItemHelper>();\n            activeContainerMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.AddObject, MyGuiContextMenuItemActionType.ADD_OBJECT, true, MyTextsWrapperEnum.AddObjectTooltip));\n            activeContainerMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.SelectAllObjects, MyGuiContextMenuItemActionType.SELECT_ALL_OBJECTS, true, MyTextsWrapperEnum.SelectAllObjectsTooltip));\n            activeContainerMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.ExitEditingMode, MyGuiContextMenuItemActionType.EXIT_EDITING_MODE, true, MyTextsWrapperEnum.ExitEditingModeTooltip));\n            activeContainerMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.LoadSector, MyGuiContextMenuItemActionType.LOAD_SECTOR, true, MyTextsWrapperEnum.LoadSectorTooltip));\n            activeContainerMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.SaveSector, MyGuiContextMenuItemActionType.SAVE_SECTOR, true, MyTextsWrapperEnum.SaveSectorTooltip));\n            activeContainerMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.ResetRotation, MyGuiContextMenuItemActionType.RESET_ROTATION, true, MyTextsWrapperEnum.ResetRotationTooltip));\n            activeContainerMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.EnterVoxelHand, MyGuiContextMenuItemActionType.ENTER_VOXEL_HAND, true, MyTextsWrapperEnum.EnterVoxelHandTooltip));\n\n            List<MyGuiContextMenuItemHelper> wayPointMenuItems = new List<MyGuiContextMenuItemHelper>();\n            wayPointMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.AddObject, MyGuiContextMenuItemActionType.ADD_OBJECT, true, MyTextsWrapperEnum.AddObjectTooltip));\n            wayPointMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.EditSelected, MyGuiContextMenuItemActionType.EDIT_SELECTED, true, MyTextsWrapperEnum.EditSelectedTooltip));\n            wayPointMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.ConnectWaypoints, MyGuiContextMenuItemActionType.CONNECT_WAYPOINTS, true, MyTextsWrapperEnum.ConnectWaypointsTooltip));\n            wayPointMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.DisconnectWaypoints, MyGuiContextMenuItemActionType.DISCONNECT_WAYPOINTS, true, MyTextsWrapperEnum.DisconnectWaypointsTooltip));\n            wayPointMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.EnterVoxelHand, MyGuiContextMenuItemActionType.ENTER_VOXEL_HAND, true, MyTextsWrapperEnum.EnterVoxelHandTooltip));\n\n            // Prefab context menu items\n            List<MyGuiContextMenuItemHelper> prefabMenuItems = new List<MyGuiContextMenuItemHelper>();\n            prefabMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.ExitEditingMode, MyGuiContextMenuItemActionType.EXIT_EDITING_MODE, true, MyTextsWrapperEnum.ExitEditingModeTooltip));\n            prefabMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.ToggleSnapPoints, MyGuiContextMenuItemActionType.TOGGLE_SNAP_POINTS, true, null));\n            prefabMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.ResetRotation, MyGuiContextMenuItemActionType.RESET_ROTATION, true, MyTextsWrapperEnum.ResetRotationTooltip));\n            prefabMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.EditProperties, MyGuiContextMenuItemActionType.EDIT_PROPERTIES, true, MyTextsWrapperEnum.EditPropertiesTooltip));\n            prefabMenuItems.AddRange(allTypesMenuItems);\n\n            // Prefabs context menu items\n            List<MyGuiContextMenuItemHelper> prefabsMenuItems = new List<MyGuiContextMenuItemHelper>();\n            prefabsMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.ExitEditingMode, MyGuiContextMenuItemActionType.EXIT_EDITING_MODE, true, MyTextsWrapperEnum.ExitEditingModeTooltip));\n            prefabsMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.ToggleSnapPoints, MyGuiContextMenuItemActionType.TOGGLE_SNAP_POINTS, true, null));\n            prefabsMenuItems.AddRange(allTypesMenuItems);\n\n            // Large ship context menu items\n            List<MyGuiContextMenuItemHelper> largeShipMenuItems = new List<MyGuiContextMenuItemHelper>();\n            largeShipMenuItems.AddRange(allTypesMenuItems);\n            largeShipMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.ResetRotation, MyGuiContextMenuItemActionType.RESET_ROTATION, true, MyTextsWrapperEnum.ResetRotationTooltip));\n\n            // Small ship context menu items\n            List<MyGuiContextMenuItemHelper> smallShipMenuItems = new List<MyGuiContextMenuItemHelper>();\n            smallShipMenuItems.AddRange(allTypesMenuItems);\n            smallShipMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.ResetRotation, MyGuiContextMenuItemActionType.RESET_ROTATION, true, MyTextsWrapperEnum.ResetRotationTooltip));\n            smallShipMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.EditProperties, MyGuiContextMenuItemActionType.EDIT_PROPERTIES, true, MyTextsWrapperEnum.EditPropertiesTooltip));\n\n            // Debris context menu items\n            List<MyGuiContextMenuItemHelper> debrisMenuItems = new List<MyGuiContextMenuItemHelper>();\n            debrisMenuItems.AddRange(allTypesMenuItems);\n            debrisMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.ResetRotation, MyGuiContextMenuItemActionType.RESET_ROTATION, true, MyTextsWrapperEnum.ResetRotationTooltip));\n\n            // Influence sphere menu items\n            List<MyGuiContextMenuItemHelper> influenceSphereMenuItems = new List<MyGuiContextMenuItemHelper>();\n            influenceSphereMenuItems.AddRange(allTypesMenuItems);\n            influenceSphereMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.ResetRotation, MyGuiContextMenuItemActionType.RESET_ROTATION, true, MyTextsWrapperEnum.ResetRotationTooltip));\n\n            // Light menu items\n            List<MyGuiContextMenuItemHelper> lightMenuItems = new List<MyGuiContextMenuItemHelper>();\n            lightMenuItems.AddRange(allTypesMenuItems);\n            lightMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.ResetRotation, MyGuiContextMenuItemActionType.RESET_ROTATION, true, MyTextsWrapperEnum.ResetRotationTooltip));\n\n            // SpawnPoint items\n            List<MyGuiContextMenuItemHelper> spawnPointMenuItems = new List<MyGuiContextMenuItemHelper>();\n            spawnPointMenuItems.AddRange(allTypesMenuItems);\n\n            // Static asteroid menu items\n            List<MyGuiContextMenuItemHelper> staticAsteroidMenuItems = new List<MyGuiContextMenuItemHelper>();\n            staticAsteroidMenuItems.AddRange(allTypesMenuItems);\n\n            // Snap Point Selected menu items\n            List<MyGuiContextMenuItemHelper> snapPointSelectedMenuItems = new List<MyGuiContextMenuItemHelper>();\n            snapPointSelectedMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.AddObject, MyGuiContextMenuItemActionType.ADD_OBJECT, true, MyTextsWrapperEnum.AddObjectTooltip));\n            snapPointSelectedMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.ExitSelected, MyGuiContextMenuItemActionType.EXIT_SELECTED, true, null));\n            snapPointSelectedMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.LoadSector, MyGuiContextMenuItemActionType.LOAD_SECTOR, true, MyTextsWrapperEnum.LoadSectorTooltip));\n            snapPointSelectedMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.SaveSector, MyGuiContextMenuItemActionType.SAVE_SECTOR, true, MyTextsWrapperEnum.SaveSectorTooltip));\n            snapPointSelectedMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.ResetRotation, MyGuiContextMenuItemActionType.RESET_ROTATION, true, MyTextsWrapperEnum.ResetRotationTooltip));            \n            snapPointSelectedMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.EnterVoxelHand, MyGuiContextMenuItemActionType.ENTER_VOXEL_HAND, true, MyTextsWrapperEnum.EnterVoxelHandTooltip));\n\n            // Attached context menu items\n            List<MyGuiContextMenuItemHelper> attachedMenuItems = new List<MyGuiContextMenuItemHelper>();\n            attachedMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.ExitSelected, MyGuiContextMenuItemActionType.DETACH_FROM_CAMERA, true, MyTextsWrapperEnum.DetachFromCameraTooltip));\n            attachedMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.LoadSector, MyGuiContextMenuItemActionType.LOAD_SECTOR, true, MyTextsWrapperEnum.LoadSectorTooltip));\n            attachedMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.SaveSector, MyGuiContextMenuItemActionType.SAVE_SECTOR, true, MyTextsWrapperEnum.SaveSectorTooltip));            \n            attachedMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.EnterVoxelHand, MyGuiContextMenuItemActionType.ENTER_VOXEL_HAND, true, MyTextsWrapperEnum.EnterVoxelHandTooltip));\n\n            List<MyGuiContextMenuItemHelper> dummyPointMenuItems = new List<MyGuiContextMenuItemHelper>();\n            dummyPointMenuItems.AddRange(allTypesMenuItems);\n\n            // Security control HUB menu items\n            List<MyGuiContextMenuItemHelper> securityControlHubMenuItems = new List<MyGuiContextMenuItemHelper>();\n            securityControlHubMenuItems.AddRange(prefabMenuItems);\n\n            // Scanner menu items\n            List<MyGuiContextMenuItemHelper> scannerMenuItems = new List<MyGuiContextMenuItemHelper>();\n            scannerMenuItems.AddRange(prefabMenuItems);\n\n            // Cargo box menu items\n            List<MyGuiContextMenuItemHelper> cargoBoxMenuItems = new List<MyGuiContextMenuItemHelper>();\n            cargoBoxMenuItems.AddRange(allTypesMenuItems);\n            cargoBoxMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.EditProperties, MyGuiContextMenuItemActionType.EDIT_PROPERTIES, true, MyTextsWrapperEnum.EditPropertiesTooltip));\n\n            // Create menu helpers\n            MyGuiContextMenuHelper generalContextMenuHelper = new MyGuiContextMenuHelper(MyTextsWrapperEnum.GeneralContextMenuCaption, generalMenuItems);\n            MyGuiContextMenuHelper allTypesMenuHelper = new MyGuiContextMenuHelper(MyTextsWrapperEnum.MixedContextMenuCaption, allTypesMenuItems);\n            MyGuiContextMenuHelper asteroidContextMenuHelper = new MyGuiContextMenuHelper(MyTextsWrapperEnum.AsteroidContextMenuCaption, asteroidMenuItems);\n            MyGuiContextMenuHelper modifyAsteroidContextMenuHelper = new MyGuiContextMenuHelper(MyTextsWrapperEnum.ModifyAsteroidContextMenuCaption, voxelHandMenuItems);\n            MyGuiContextMenuHelper containerContextMenuHelper = new MyGuiContextMenuHelper(MyTextsWrapperEnum.PrefabContainerContextMenuCaption, containerMenuItems);\n            MyGuiContextMenuHelper prefabContextMenuHelper = new MyGuiContextMenuHelper(MyTextsWrapperEnum.PrefabContextMenuCaption, prefabMenuItems);\n            MyGuiContextMenuHelper prefabsContextMenuHelper = new MyGuiContextMenuHelper(MyTextsWrapperEnum.PrefabContextMenuCaption, prefabsMenuItems);\n            MyGuiContextMenuHelper largeShipMenuItemsHelper = new MyGuiContextMenuHelper(MyTextsWrapperEnum.LargeShipContextMenuCaption, largeShipMenuItems);\n            MyGuiContextMenuHelper smallShipMenuItemsHelper = new MyGuiContextMenuHelper(MyTextsWrapperEnum.SmallShipContextMenuCaption, smallShipMenuItems);\n            MyGuiContextMenuHelper debrisMenuItemsHelper = new MyGuiContextMenuHelper(MyTextsWrapperEnum.DebrisContextMenuCaption, debrisMenuItems);\n            MyGuiContextMenuHelper influenceSphereItemsHelper = new MyGuiContextMenuHelper(MyTextsWrapperEnum.InfluenceSphereContextMenuCaption, influenceSphereMenuItems);\n            MyGuiContextMenuHelper lightItemsHelper = new MyGuiContextMenuHelper(MyTextsWrapperEnum.CategoryTypeLights, lightMenuItems);\n            MyGuiContextMenuHelper spawnPointItemsHelper = new MyGuiContextMenuHelper(MyTextsWrapperEnum.CategoryTypeLights, spawnPointMenuItems);\n            MyGuiContextMenuHelper wayPointItemsHelper = new MyGuiContextMenuHelper(MyTextsWrapperEnum.CategoryTypeLights, wayPointMenuItems);\n            MyGuiContextMenuHelper staticAsteroidItemsHelper = new MyGuiContextMenuHelper(MyTextsWrapperEnum.StaticAsteroidContextMenuCaption, staticAsteroidMenuItems);\n            MyGuiContextMenuHelper snapPointSelectedItemsHelper = new MyGuiContextMenuHelper(MyTextsWrapperEnum.StaticAsteroidContextMenuCaption, snapPointSelectedMenuItems);\n            MyGuiContextMenuHelper attachedContextMenuHelper = new MyGuiContextMenuHelper(MyTextsWrapperEnum.AttachedContextMenuCaption, attachedMenuItems);\n            MyGuiContextMenuHelper editingContainerContextMenuHelper = new MyGuiContextMenuHelper(MyTextsWrapperEnum.PrefabContainerContextMenuCaption, activeContainerMenuItems);\n            MyGuiContextMenuHelper dummyPointItemsHelper = new MyGuiContextMenuHelper(MyTextsWrapperEnum.DummyPoint, dummyPointMenuItems);\n            MyGuiContextMenuHelper securityControlHubHelper = new MyGuiContextMenuHelper(MyTextsWrapperEnum.SecurityControlHUB, securityControlHubMenuItems);\n            MyGuiContextMenuHelper scannerHelper = new MyGuiContextMenuHelper(MyTextsWrapperEnum.Scanner, scannerMenuItems);            \n            MyGuiContextMenuHelper cargoBoxHelper = new MyGuiContextMenuHelper(MyTextsWrapperEnum.CargoBox, cargoBoxMenuItems);\n\n            #endregion\n\n            m_editorContextMenuHelpers.Add(MyEditorStateEnum.NOTHING_SELECTED, generalContextMenuHelper);\n            m_editorContextMenuHelpers.Add(MyEditorStateEnum.SELECTED_ASTEROID, asteroidContextMenuHelper);\n            m_editorContextMenuHelpers.Add(MyEditorStateEnum.VOXEL_HAND_ENABLED, modifyAsteroidContextMenuHelper);\n            m_editorContextMenuHelpers.Add(MyEditorStateEnum.SELECTED_PREFAB_CONTAINER, containerContextMenuHelper);\n            m_editorContextMenuHelpers.Add(MyEditorStateEnum.SELECTED_PREFAB, prefabContextMenuHelper);\n            m_editorContextMenuHelpers.Add(MyEditorStateEnum.SELECTED_PREFABS, prefabsContextMenuHelper);\n            //m_editorContextMenuHelpers.Add(MyEditorStateEnum.SELECTED_LARGE_SHIP, largeShipMenuItemsHelper);\n            m_editorContextMenuHelpers.Add(MyEditorStateEnum.SELECTED_SMALL_SHIP, smallShipMenuItemsHelper);\n            m_editorContextMenuHelpers.Add(MyEditorStateEnum.SELECTED_DEBRIS, debrisMenuItemsHelper);\n            m_editorContextMenuHelpers.Add(MyEditorStateEnum.SELECTED_INFLUENCE_SPHERE, influenceSphereItemsHelper);\n            m_editorContextMenuHelpers.Add(MyEditorStateEnum.SELECTED_LIGHT, lightItemsHelper);\n            m_editorContextMenuHelpers.Add(MyEditorStateEnum.SELECTED_WAYPOINT, wayPointItemsHelper);\n            m_editorContextMenuHelpers.Add(MyEditorStateEnum.SELECTED_SPAWNPOINT, spawnPointItemsHelper);\n            m_editorContextMenuHelpers.Add(MyEditorStateEnum.SELECTED_STATIC_ASTEROID, staticAsteroidItemsHelper);\n            m_editorContextMenuHelpers.Add(MyEditorStateEnum.SELECTED_SNAPPOINT, snapPointSelectedItemsHelper);\n            m_editorContextMenuHelpers.Add(MyEditorStateEnum.SELECTED_MIXED, allTypesMenuHelper);\n            m_editorContextMenuHelpers.Add(MyEditorStateEnum.ATTACHED, attachedContextMenuHelper);\n            m_editorContextMenuHelpers.Add(MyEditorStateEnum.EDITING_PREFAB_CONTAINER, editingContainerContextMenuHelper);\n            m_editorContextMenuHelpers.Add(MyEditorStateEnum.SELECTED_DUMMYPOINT, dummyPointItemsHelper);\n            m_editorContextMenuHelpers.Add(MyEditorStateEnum.SELECTED_SECURITY_CONTROL_HUB, securityControlHubHelper);\n            m_editorContextMenuHelpers.Add(MyEditorStateEnum.SELECTED_SCANNER, scannerHelper);\n            m_editorContextMenuHelpers.Add(MyEditorStateEnum.SELECTED_CARGO_BOX, cargoBoxHelper);            \n        }\n\n        public static void LoadInGameEditorContent()\n        {\n            MyMwcLog.WriteLine(\"LoadInGameEditorContent()\");\n\n            m_editorContextMenuHelpers.Clear();\n\n            #region Editor Context Menu Items\n\n            // General context menu items\n            List<MyGuiContextMenuItemHelper> generalMenuItems = new List<MyGuiContextMenuItemHelper>();\n            generalMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.AddObject, MyGuiContextMenuItemActionType.ADD_OBJECT, true, MyTextsWrapperEnum.AddObjectTooltip));\n            generalMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.SelectAllObjects, MyGuiContextMenuItemActionType.SELECT_ALL_OBJECTS, true, MyTextsWrapperEnum.SelectAllObjectsTooltip));\n            //generalMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.RandomSector, MyGuiContextMenuItemActionType.RANDOM_SECTOR, true, MyTextsWrapperEnum.RandomSectorTooltip));\n            //generalMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.ClearWholeSector, MyGuiContextMenuItemActionType.CLEAR_WHOLE_SECTOR, true, MyTextsWrapperEnum.ClearWholeSectorTooltip));\n            //generalMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.SaveSector, MyGuiContextMenuItemActionType.SAVE_SECTOR, true, MyTextsWrapperEnum.SaveSectorTooltip));\n            generalMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.AdjustGrid, MyGuiContextMenuItemActionType.ADJUST_GRID, false, MyTextsWrapperEnum.AdjustGridTooltip));\n            //generalMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.LoadSector, MyGuiContextMenuItemActionType.LOAD_SECTOR, false, MyTextsWrapperEnum.LoadSectorTooltip));\n            //generalMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.SunSettings, MyGuiContextMenuItemActionType.SUN_SETTINGS, false, MyTextsWrapperEnum.SunSettingsTooltip));\n            //generalMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.FogSettings, MyGuiContextMenuItemActionType.FOG_SETTINGS, false, MyTextsWrapperEnum.FogSettingsTooltip));\n            //generalMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.SaveAsteroids, MyGuiContextMenuItemActionType.SAVE_ASTEROIDS, false, MyTextsWrapperEnum.SaveAsteroidsTooltip));\n            //generalMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.EnterVoxelHand, MyGuiContextMenuItemActionType.ENTER_VOXEL_HAND, true, MyTextsWrapperEnum.EnterVoxelHandTooltip));\n            generalMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.Options, MyGuiContextMenuItemActionType.OPTIONS, true, MyTextsWrapperEnum.Options));\n            generalMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.ExitToMainMenu, MyGuiContextMenuItemActionType.EXIT_TO_MAIN_MENU, true, MyTextsWrapperEnum.ExitToMainMenu));\n\n            // Items that will be included for all types of selected objects\n            List<MyGuiContextMenuItemHelper> allTypesMenuItems = new List<MyGuiContextMenuItemHelper>();\n            allTypesMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.AddObject, MyGuiContextMenuItemActionType.ADD_OBJECT, true, MyTextsWrapperEnum.AddObjectTooltip));\n            allTypesMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.AttachToCamera, MyGuiContextMenuItemActionType.ATTACH_TO_CAMERA, true, MyTextsWrapperEnum.AttachToCameraTooltip));\n            allTypesMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.EditSelected, MyGuiContextMenuItemActionType.EDIT_SELECTED, true, MyTextsWrapperEnum.EditSelectedTooltip));\n            allTypesMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.SwitchGizmoSpace, MyGuiContextMenuItemActionType.SWITCH_GIZMO_SPACE, true, MyTextsWrapperEnum.SwitchGizmoSpaceTooltip));\n            allTypesMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.SwitchGizmoMode, MyGuiContextMenuItemActionType.SWITCH_GIZMO_MODE, true, MyTextsWrapperEnum.SwitchGizmoModeTooltip));\n            allTypesMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.CopySelected, MyGuiContextMenuItemActionType.COPY_SELECTED, false, MyTextsWrapperEnum.CopySelectedTooltip));\n            allTypesMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.ExitSelected, MyGuiContextMenuItemActionType.EXIT_SELECTED, true, null));\n\n            /*\n            // Asteroid context menu items\n            List<MyGuiContextMenuItemHelper> asteroidMenuItems = new List<MyGuiContextMenuItemHelper>();\n            asteroidMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.SaveAsteroidToFile, MyGuiContextMenuItemActionType.SAVE_ASTEROID_TO_FILE, false, MyTextsWrapperEnum.SaveAsteroidToFileTooltip));\n            asteroidMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.ResetAsteroid, MyGuiContextMenuItemActionType.RESET_ASTEROID, false, MyTextsWrapperEnum.ResetAsteroidTooltip));\n            asteroidMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.ClearAsteroidMaterials, MyGuiContextMenuItemActionType.CLEAR_ASTEROID_MATERIALS, false, MyTextsWrapperEnum.ClearAsteroidMaterialsTooltip));\n            asteroidMenuItems.AddRange(allTypesMenuItems);\n            */\n            /*\n            // Voxel hand menu items\n            List<MyGuiContextMenuItemHelper> voxelHandMenuItems = new List<MyGuiContextMenuItemHelper>();\n            voxelHandMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.ExitVoxelHand, MyGuiContextMenuItemActionType.EXIT_VOXEL_HAND, true, MyTextsWrapperEnum.ExitVoxelHandTooltip));\n            voxelHandMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.EditVoxelHand, MyGuiContextMenuItemActionType.EDIT_VOXEL_HAND, true, MyTextsWrapperEnum.EditVoxelHandTooltip));\n            */\n            // Container context menu items\n            List<MyGuiContextMenuItemHelper> containerMenuItems = new List<MyGuiContextMenuItemHelper>();\n            containerMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.EnterPrefabContainer, MyGuiContextMenuItemActionType.ENTER_PREFAB_CONTAINER, true, MyTextsWrapperEnum.EnterPrefabContainerTooltip));\n            containerMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.ResetRotation, MyGuiContextMenuItemActionType.RESET_ROTATION, true, MyTextsWrapperEnum.ResetRotationTooltip));\n            containerMenuItems.AddRange(allTypesMenuItems);\n\n            List<MyGuiContextMenuItemHelper> activeContainerMenuItems = new List<MyGuiContextMenuItemHelper>();\n            activeContainerMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.AddObject, MyGuiContextMenuItemActionType.ADD_OBJECT, true, MyTextsWrapperEnum.AddObjectTooltip));\n            activeContainerMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.SelectAllObjects, MyGuiContextMenuItemActionType.SELECT_ALL_OBJECTS, true, MyTextsWrapperEnum.SelectAllObjectsTooltip));\n            activeContainerMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.ResetRotation, MyGuiContextMenuItemActionType.RESET_ROTATION, true, MyTextsWrapperEnum.ResetRotationTooltip));\n\n\n            // Prefab context menu items\n            List<MyGuiContextMenuItemHelper> prefabMenuItems = new List<MyGuiContextMenuItemHelper>();\n            prefabMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.ToggleSnapPoints, MyGuiContextMenuItemActionType.TOGGLE_SNAP_POINTS, true, null));\n            prefabMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.ResetRotation, MyGuiContextMenuItemActionType.RESET_ROTATION, true, MyTextsWrapperEnum.ResetRotationTooltip));\n            prefabMenuItems.AddRange(allTypesMenuItems);\n\n            // Prefabs context menu items\n            List<MyGuiContextMenuItemHelper> prefabsMenuItems = new List<MyGuiContextMenuItemHelper>();\n            prefabsMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.ToggleSnapPoints, MyGuiContextMenuItemActionType.TOGGLE_SNAP_POINTS, true, null));\n            prefabsMenuItems.AddRange(allTypesMenuItems);\n\n            // Large ship context menu items\n            List<MyGuiContextMenuItemHelper> largeShipMenuItems = new List<MyGuiContextMenuItemHelper>();\n            largeShipMenuItems.AddRange(allTypesMenuItems);\n            largeShipMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.ResetRotation, MyGuiContextMenuItemActionType.RESET_ROTATION, true, MyTextsWrapperEnum.ResetRotationTooltip));\n\n            // Small ship context menu items\n            List<MyGuiContextMenuItemHelper> smallShipMenuItems = new List<MyGuiContextMenuItemHelper>();\n            smallShipMenuItems.AddRange(allTypesMenuItems);\n            smallShipMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.ResetRotation, MyGuiContextMenuItemActionType.RESET_ROTATION, true, MyTextsWrapperEnum.ResetRotationTooltip));\n\n            // Debris context menu items\n            List<MyGuiContextMenuItemHelper> debrisMenuItems = new List<MyGuiContextMenuItemHelper>();\n            debrisMenuItems.AddRange(allTypesMenuItems);\n            debrisMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.ResetRotation, MyGuiContextMenuItemActionType.RESET_ROTATION, true, MyTextsWrapperEnum.ResetRotationTooltip));\n\n            // Influence sphere menu items\n            List<MyGuiContextMenuItemHelper> influenceSphereMenuItems = new List<MyGuiContextMenuItemHelper>();\n            influenceSphereMenuItems.AddRange(allTypesMenuItems);\n            influenceSphereMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.ResetRotation, MyGuiContextMenuItemActionType.RESET_ROTATION, true, MyTextsWrapperEnum.ResetRotationTooltip));\n\n            // Light menu items\n            List<MyGuiContextMenuItemHelper> lightMenuItems = new List<MyGuiContextMenuItemHelper>();\n            lightMenuItems.AddRange(allTypesMenuItems);\n            lightMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.ResetRotation, MyGuiContextMenuItemActionType.RESET_ROTATION, true, MyTextsWrapperEnum.ResetRotationTooltip));\n\n            // Static asteroid menu items\n            List<MyGuiContextMenuItemHelper> staticAsteroidMenuItems = new List<MyGuiContextMenuItemHelper>();\n            staticAsteroidMenuItems.AddRange(allTypesMenuItems);\n\n            // Snap Point Selected menu items\n            List<MyGuiContextMenuItemHelper> snapPointSelectedMenuItems = new List<MyGuiContextMenuItemHelper>();\n            snapPointSelectedMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.DeleteSelected, MyGuiContextMenuItemActionType.ADD_OBJECT, true, MyTextsWrapperEnum.DeleteSelectedTooltip));\n            snapPointSelectedMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.ExitSelected, MyGuiContextMenuItemActionType.EXIT_SELECTED, true, null));\n            snapPointSelectedMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.ResetRotation, MyGuiContextMenuItemActionType.RESET_ROTATION, true, MyTextsWrapperEnum.ResetRotationTooltip));\n\n            // Attached context menu items\n            List<MyGuiContextMenuItemHelper> attachedMenuItems = new List<MyGuiContextMenuItemHelper>();\n            attachedMenuItems.Add(new MyGuiContextMenuItemHelper(MyTextsWrapperEnum.ExitSelected, MyGuiContextMenuItemActionType.DETACH_FROM_CAMERA, true, MyTextsWrapperEnum.DetachFromCameraTooltip));\n\n            // Create menu helpers\n            MyGuiContextMenuHelper generalContextMenuHelper = new MyGuiContextMenuHelper(MyTextsWrapperEnum.GeneralContextMenuCaption, generalMenuItems);\n            MyGuiContextMenuHelper allTypesMenuHelper = new MyGuiContextMenuHelper(MyTextsWrapperEnum.MixedContextMenuCaption, allTypesMenuItems);\n            //MyGuiContextMenuHelper asteroidContextMenuHelper = new MyGuiContextMenuHelper(MyTextsWrapperEnum.AsteroidContextMenuCaption, asteroidMenuItems);\n            //MyGuiContextMenuHelper modifyAsteroidContextMenuHelper = new MyGuiContextMenuHelper(MyTextsWrapperEnum.ModifyAsteroidContextMenuCaption, voxelHandMenuItems);\n            MyGuiContextMenuHelper containerContextMenuHelper = new MyGuiContextMenuHelper(MyTextsWrapperEnum.PrefabContainerContextMenuCaption, containerMenuItems);\n            MyGuiContextMenuHelper prefabContextMenuHelper = new MyGuiContextMenuHelper(MyTextsWrapperEnum.PrefabContextMenuCaption, prefabMenuItems);\n            MyGuiContextMenuHelper prefabsContextMenuHelper = new MyGuiContextMenuHelper(MyTextsWrapperEnum.PrefabContextMenuCaption, prefabsMenuItems);\n            MyGuiContextMenuHelper largeShipMenuItemsHelper = new MyGuiContextMenuHelper(MyTextsWrapperEnum.LargeShipContextMenuCaption, largeShipMenuItems);\n            MyGuiContextMenuHelper smallShipMenuItemsHelper = new MyGuiContextMenuHelper(MyTextsWrapperEnum.SmallShipContextMenuCaption, smallShipMenuItems);\n            MyGuiContextMenuHelper debrisMenuItemsHelper = new MyGuiContextMenuHelper(MyTextsWrapperEnum.DebrisContextMenuCaption, debrisMenuItems);\n            MyGuiContextMenuHelper influenceSphereItemsHelper = new MyGuiContextMenuHelper(MyTextsWrapperEnum.InfluenceSphereContextMenuCaption, influenceSphereMenuItems);\n            MyGuiContextMenuHelper lightItemsHelper = new MyGuiContextMenuHelper(MyTextsWrapperEnum.CategoryTypeLights, lightMenuItems);\n            MyGuiContextMenuHelper staticAsteroidItemsHelper = new MyGuiContextMenuHelper(MyTextsWrapperEnum.StaticAsteroidContextMenuCaption, staticAsteroidMenuItems);\n            MyGuiContextMenuHelper snapPointSelectedItemsHelper = new MyGuiContextMenuHelper(MyTextsWrapperEnum.StaticAsteroidContextMenuCaption, snapPointSelectedMenuItems);\n            MyGuiContextMenuHelper attachedContextMenuHelper = new MyGuiContextMenuHelper(MyTextsWrapperEnum.AttachedContextMenuCaption, attachedMenuItems);\n            MyGuiContextMenuHelper editingContainerContextMenuHelper = new MyGuiContextMenuHelper(MyTextsWrapperEnum.PrefabContainerContextMenuCaption, activeContainerMenuItems);\n\n            #endregion\n\n            m_editorContextMenuHelpers.Add(MyEditorStateEnum.NOTHING_SELECTED, generalContextMenuHelper);\n            //m_editorContextMenuHelpers.Add(MyEditorStateEnum.SELECTED_ASTEROID, asteroidContextMenuHelper);\n            //m_editorContextMenuHelpers.Add(MyEditorStateEnum.VOXEL_HAND_ENABLED, modifyAsteroidContextMenuHelper);\n            m_editorContextMenuHelpers.Add(MyEditorStateEnum.SELECTED_PREFAB_CONTAINER, containerContextMenuHelper);\n            m_editorContextMenuHelpers.Add(MyEditorStateEnum.SELECTED_PREFAB, prefabContextMenuHelper);\n            m_editorContextMenuHelpers.Add(MyEditorStateEnum.SELECTED_PREFABS, prefabsContextMenuHelper);\n            //m_editorContextMenuHelpers.Add(MyEditorStateEnum.SELECTED_LARGE_SHIP, largeShipMenuItemsHelper);\n            //m_editorContextMenuHelpers.Add(MyEditorStateEnum.SELECTED_SMALL_SHIP, smallShipMenuItemsHelper);\n            //m_editorContextMenuHelpers.Add(MyEditorStateEnum.SELECTED_DEBRIS, debrisMenuItemsHelper);\n            //m_editorContextMenuHelpers.Add(MyEditorStateEnum.SELECTED_INFLUENCE_SPHERE, influenceSphereItemsHelper);\n            m_editorContextMenuHelpers.Add(MyEditorStateEnum.SELECTED_LIGHT, lightItemsHelper);\n            m_editorContextMenuHelpers.Add(MyEditorStateEnum.SELECTED_STATIC_ASTEROID, staticAsteroidItemsHelper);\n            m_editorContextMenuHelpers.Add(MyEditorStateEnum.SELECTED_SNAPPOINT, snapPointSelectedItemsHelper);\n            m_editorContextMenuHelpers.Add(MyEditorStateEnum.SELECTED_MIXED, allTypesMenuHelper);\n            m_editorContextMenuHelpers.Add(MyEditorStateEnum.ATTACHED, attachedContextMenuHelper);\n            m_editorContextMenuHelpers.Add(MyEditorStateEnum.EDITING_PREFAB_CONTAINER, editingContainerContextMenuHelper);\n        }\n\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Helpers/MyGuiContextMenuItemHelper.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Localization;\n\nnamespace MinerWars.AppCode.Game.GUI.Helpers\n{\n    class MyGuiContextMenuItemHelper : MyGuiHelperBase\n    {\n        public MyGuiContextMenuItemActionType ActionType;\n        MyTextsWrapperEnum? m_toolTip;\n        public bool Enabled;\n        public StringBuilder ToolTip { get { if (m_toolTip.HasValue) { return MyTextsWrapper.Get(m_toolTip.Value); } return null; } }\n\n        public MyGuiContextMenuItemHelper(MyTextsWrapperEnum description, MyGuiContextMenuItemActionType actionType, bool enabled, MyTextsWrapperEnum? toolTip)\n            : base(description)\n        {\n            ActionType = actionType;\n            Enabled = enabled;\n            m_toolTip = toolTip;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Helpers/MyGuiControlEditLights.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Entities.SubObjects;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Lights;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.Prefabs;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Editor;\n\nnamespace MinerWars.AppCode.Game.GUI.Helpers\n{\n    class MyGuiControlEditLights : MyGuiControlBase\n    {\n        class MyLightProperties\n        {\n            public Vector4 Color;\n            public Vector3 SpecularColor;\n            public float FallOff;\n            public float Range;\n            public float Intensity;\n            public float PointLightOffSet;\n            public Vector4 ReflectorColor;\n            public float ReflectorFallOff;\n            public float ReflectorRange;\n            public float ReflectorIntensity;\n            public float ReflectorConeDegrees;\n            public MyLight.LightTypeEnum LightType;\n            public MyPrefabLight PrefabLight;\n            public float FlashOffset;\n\n            public MyLightProperties(Vector4 color, Vector3 specularColor, float fallOff, float range, float intensity, float pointLightOffSet, Vector4 reflectorColor,\n                float reflectorFallOff, float reflectorRange, float reflectorIntensity, float reflectorConeDegrees, MyLight.LightTypeEnum lightType, MyPrefabLight prefabLight, float flashOffset)\n            {\n                Color = color;\n                SpecularColor = specularColor;\n                FallOff = fallOff;\n                Range = range;\n                Intensity = intensity;\n                PointLightOffSet = pointLightOffSet;\n                ReflectorColor = reflectorColor;\n                ReflectorFallOff = reflectorFallOff;\n                ReflectorRange = reflectorRange;\n                ReflectorIntensity = reflectorIntensity;\n                ReflectorConeDegrees = reflectorConeDegrees;\n                LightType = lightType;\n                PrefabLight = prefabLight;\n                FlashOffset = flashOffset;\n            }\n        }\n\n        MyGuiControlTabControl m_tabControl;\n\n        MyGuiControlCheckbox m_pointLightCheckbox;\n        MyGuiControlCheckbox m_hemisphereLightCheckbox;\n        MyGuiControlSlider[] m_pointNormalLightColorSlider;\n        MyGuiControlSlider[] m_specularLightColorSlider;\n        MyGuiControlSlider m_pointFallOffSlider;\n        MyGuiControlSlider m_pointRangeSlider;\n        MyGuiControlSlider m_pointIntensitySlider;\n        MyGuiControlSlider m_pointOffsetSlider;\n        MyGuiControlSlider m_flashOffsetSlider;\n        MyGuiControlLabel m_flashOffsetLabel;\n\n        MyGuiControlCheckbox m_spotLightCheckbox;\n        MyGuiControlSlider[] m_spotNormalLightColorSlider;\n        MyGuiControlSlider m_spotAngleSlider;\n        MyGuiControlSlider m_spotIntensitySlider;\n        MyGuiControlSlider m_spotFallOffSlider;\n        MyGuiControlSlider m_spotRangeSlider;\n        MyGuiControlSlider m_spotLightShadowDistance;\n\n        MyGuiControlCombobox m_effectComboBox;\n\n        List<MyPrefabLight> m_prefabLights;\n        List<MyLightProperties> m_originalValues;\n\n        List<MyGuiControlBase> m_controls;\n\n\n        public MyGuiControlEditLights(IMyGuiControlsParent parent, Vector2 position, Vector2 size, Vector4 bgColor)\n            : base(parent, position, size, bgColor, null)\n        {\n            m_controls = new List<MyGuiControlBase>();\n            m_prefabLights = new List<MyPrefabLight>();\n            m_pointLightControls = new List<MyGuiControlBase>();\n            m_spotLightControls = new List<MyGuiControlBase>();\n\n            Init();\n\n            MyEntities.OnEntityRemove += MyEntities_OnEntityRemove;\n        }\n\n        public void SetLights(List<MyPrefabLight> lights)\n        {\n            m_prefabLights = new List<MyPrefabLight>();\n            \n            if (lights.Count > 0)\n            {\n                MyPrefabLight myLight = lights[0] as MyPrefabLight;\n                InitializeValues(myLight);\n            }\n            \n            m_prefabLights = lights;\n            SaveOriginalValues();\n        }\n\n        private void SaveOriginalValues()\n        {\n            m_originalValues = new List<MyLightProperties>(m_prefabLights.Count);\n            foreach (MyPrefabLight prefabLight in m_prefabLights)\n            {\n                MyLight light = prefabLight.GetLight();\n                m_originalValues.Add(new MyLightProperties(light.Color, light.SpecularColor, light.Falloff, light.Range, light.Intensity, light.PointLightOffset,\n                    light.ReflectorColor, light.ReflectorFalloff, light.ReflectorRange, light.ReflectorIntensity, light.ReflectorConeDegrees, light.LightType, prefabLight, prefabLight.FlashOffset));\n            }\n        }\n\n        public void RestoreOriginalValues()\n        {\n            if (m_originalValues != null)\n            {\n                for (int i = 0; i < m_originalValues.Count; i++)\n                {\n                    MyLightProperties originalValue = m_originalValues[i];\n                    MyLight light = m_prefabLights[i].GetLight();\n                    light.Color = originalValue.Color;\n                    light.SpecularColor = originalValue.SpecularColor;\n                    light.Falloff = originalValue.FallOff;\n                    light.Range = originalValue.Range;\n                    light.Intensity = originalValue.Intensity;\n                    light.PointLightOffset = originalValue.PointLightOffSet;\n                    light.ReflectorColor = originalValue.ReflectorColor;\n                    light.ReflectorFalloff = originalValue.ReflectorFallOff;\n                    light.ReflectorRange = originalValue.ReflectorRange;\n                    light.ReflectorIntensity = originalValue.ReflectorIntensity;\n                    light.ReflectorConeDegrees = originalValue.ReflectorConeDegrees;\n                    light.LightType = originalValue.LightType;\n\n                    m_prefabLights[i].FlashOffset = originalValue.FlashOffset;\n\n                    originalValue.PrefabLight.OnWorldPositionChanged(this);\n                }\n            }\n        }\n\n        private void Init()\n        {\n            Vector2 controlsOriginLeft = m_position - m_size.Value*0.5f + new Vector2(0.03f, 0.1f);\n\n            m_pointNormalLightColorSlider = new MyGuiControlSlider[3];\n            m_specularLightColorSlider = new MyGuiControlSlider[3];\n            m_spotNormalLightColorSlider = new MyGuiControlSlider[3];\n\n            CreateControls(controlsOriginLeft);\n            AssignCallbacks();\n        }\n\n        private void AssignCallbacks()\n        {\n            m_pointLightCheckbox.OnCheck = OnMyCheckEnable;\n            m_hemisphereLightCheckbox.OnCheck = OnMyCheckEnable;\n            for (int i = 0; i < 3; i++)\n            {\n                m_pointNormalLightColorSlider[i].OnChange = OnComponentChange;\n            }\n            for (int i = 0; i < 3; i++)\n            {\n                m_specularLightColorSlider[i].OnChange = OnComponentChange;\n            }\n            m_pointFallOffSlider.OnChange = OnComponentChange;\n            m_pointRangeSlider.OnChange = OnComponentChange;\n            m_pointIntensitySlider.OnChange = OnComponentChange;\n            m_pointOffsetSlider.OnChange = OnComponentChange;\n\n            m_spotLightCheckbox.OnCheck = OnMyCheckEnable;\n            for (int i = 0; i < 3; i++)\n            {\n                m_spotNormalLightColorSlider[i].OnChange = OnComponentChange;\n            }\n            m_spotAngleSlider.OnChange = OnComponentChange;\n            m_spotFallOffSlider.OnChange = OnComponentChange;\n            m_spotRangeSlider.OnChange = OnComponentChange;\n            m_spotIntensitySlider.OnChange = OnComponentChange;\n            m_spotLightShadowDistance.OnChange = OnComponentChange;\n            m_flashOffsetSlider.OnChange = OnComponentChange;\n        }\n\n\n        List<MyGuiControlBase> m_pointLightControls;\n        List<MyGuiControlBase> m_spotLightControls;\n\n        private void AddControl(bool point, MyGuiControlBase control)\n        {\n            if (point)\n\t        {\n                m_pointLightControls.Add(control);\n\t        }\n            else\n\t        {\n                m_spotLightControls.Add(control);\n\t        }\n\n            m_controls.Add(control);\n        }\n\n        void CreateControls(Vector2 controlsOrigin)\n        {\n            var panel = new MyGuiControlPanel(m_parent, m_position, m_size, m_backgroundColor.Value, 2, m_backgroundColor.Value * 2f);\n            m_controls.Add(panel);\n\n            float dPos = -1;\n            float dPosFalloff;\n            MyTextsWrapperEnum[] colorNames = { MyTextsWrapperEnum.Red, MyTextsWrapperEnum.Green, MyTextsWrapperEnum.Blue };\n\n            Vector2 sliderOffset = new Vector2(0.21f, 0f);\n\n            float buttonsY = m_size.Value.Y / 2.0f - MyGuiConstants.MESSAGE_BOX_BORDER_AREA_Y - MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE.Y / 2.0f;\n\n            AddControl(true, new MyGuiControlButton(m_parent, new Vector2(m_position.X, controlsOrigin.Y) + dPos * MyGuiConstants.CONTROLS_DELTA, MyGuiConstants.MAIN_MENU_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.SwitchToSpotLight, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnSpotClick,\n                MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n            ++dPos;\n\n            m_controls.Add(new MyGuiControlLabel(m_parent, controlsOrigin + dPos * MyGuiConstants.CONTROLS_DELTA, null, MyTextsWrapperEnum.EachlightHasInternallyTwoLightsPointAndSpot, MyGuiConstants.LABEL_TEXT_COLOR,\n                MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n\n            /*\n             * \n             * Point light\n             * \n             * \n             */\n            // Checkboxes for Disabled/Point/Hemisphere\n\n            Vector2 checkBoxOffset = new Vector2(0.14f, 0);\n            dPos++;\n            AddControl(true, new MyGuiControlLabel(m_parent, controlsOrigin + dPos * MyGuiConstants.CONTROLS_DELTA, null, new StringBuilder(\"Point enabled\"), MyGuiConstants.LABEL_TEXT_COLOR,\n                MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n            m_pointLightCheckbox = new MyGuiControlCheckbox(m_parent, (checkBoxOffset + controlsOrigin) + dPos * MyGuiConstants.CONTROLS_DELTA, false, MyGuiConstants.CHECKBOX_BACKGROUND_COLOR);\n            AddControl(true, m_pointLightCheckbox);\n\n            //dPos++;\n            AddControl(true, new MyGuiControlLabel(m_parent, controlsOrigin + dPos * MyGuiConstants.CONTROLS_DELTA + new Vector2(0.2f, 0), null, new StringBuilder(\"Hemispheric enabled\"), MyGuiConstants.LABEL_TEXT_COLOR,\n                MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n            m_hemisphereLightCheckbox = new MyGuiControlCheckbox(m_parent, (checkBoxOffset + controlsOrigin) + dPos * MyGuiConstants.CONTROLS_DELTA + new Vector2(0.26f, 0), false, MyGuiConstants.CHECKBOX_BACKGROUND_COLOR);\n            AddControl(true, m_hemisphereLightCheckbox);\n\n            //text\n            dPos += 0.9f;\n            AddControl(true, new MyGuiControlLabel(m_parent, controlsOrigin + dPos * MyGuiConstants.CONTROLS_DELTA, null, MyTextsWrapperEnum.DiffuseColor, MyGuiConstants.LABEL_TEXT_COLOR,\n                MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n\n            Vector2 buttonsColumn = new Vector2(0.165f, 0.0025f);\n            Vector2 copyPasteButtonScale = MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE * new Vector2(0.7f, 0.7f);\n            float copyPasteButtonFontScale = MyGuiConstants.BUTTON_TEXT_SCALE * 0.75f;\n            Vector2 pasteButtonShift = new Vector2(0.115f, 0f);            \n\n            AddControl(true, new MyGuiControlButton(m_parent, controlsOrigin + dPos * MyGuiConstants.CONTROLS_DELTA + buttonsColumn, copyPasteButtonScale, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.Copy, MyGuiConstants.BUTTON_TEXT_COLOR, copyPasteButtonFontScale, OnCopyPointDiffuseColor,\n                MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER, true));\n\n            AddControl(true, new MyGuiControlButton(m_parent, controlsOrigin + dPos * MyGuiConstants.CONTROLS_DELTA + buttonsColumn + pasteButtonShift, copyPasteButtonScale, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.Paste, MyGuiConstants.BUTTON_TEXT_COLOR, copyPasteButtonFontScale, OnPastePointDiffuseColor,\n                MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER, true));\n            dPos += 0.1f;\n\n            //point color sliders\n            for (int i = 0; i < 3; i++)\n            {\n                dPos += 0.75f;\n                AddControl(true, new MyGuiControlLabel(m_parent, controlsOrigin + dPos * MyGuiConstants.CONTROLS_DELTA, null, colorNames[i], MyGuiConstants.LABEL_TEXT_COLOR,\n                    MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n                m_pointNormalLightColorSlider[i] = new MyGuiControlSlider(m_parent, (sliderOffset + controlsOrigin) + dPos * MyGuiConstants.CONTROLS_DELTA, MyGuiConstants.SLIDER_WIDTH,\n                    MyEditorConstants.COLOR_COMPONENT_MIN_VALUE, MyEditorConstants.COLOR_COMPONENT_MAX_VALUE, MyGuiConstants.SLIDER_BACKGROUND_COLOR,\n                    new StringBuilder(), MyGuiConstants.SLIDER_WIDTH_LABEL, 0, MyGuiConstants.LABEL_TEXT_SCALE * 0.85f * 0.75f);\n                AddControl(true, m_pointNormalLightColorSlider[i]);\n            }\n\n            //text\n            dPos += 0.9f;\n            AddControl(true, new MyGuiControlLabel(m_parent, controlsOrigin + dPos * MyGuiConstants.CONTROLS_DELTA, null, MyTextsWrapperEnum.SpecularColor, MyGuiConstants.LABEL_TEXT_COLOR,\n                MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n\n            AddControl(true, new MyGuiControlButton(m_parent, controlsOrigin + dPos * MyGuiConstants.CONTROLS_DELTA + buttonsColumn, copyPasteButtonScale, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.Copy, MyGuiConstants.BUTTON_TEXT_COLOR, copyPasteButtonFontScale, OnCopyPointSpecularColor,\n                MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER, true));\n\n            AddControl(true, new MyGuiControlButton(m_parent, controlsOrigin + dPos * MyGuiConstants.CONTROLS_DELTA + buttonsColumn + pasteButtonShift, copyPasteButtonScale, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.Paste, MyGuiConstants.BUTTON_TEXT_COLOR, copyPasteButtonFontScale, OnPastePointSpecularColor,\n                MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER, true));\n            dPos += 0.1f;\n\n            // specular color sliders\n            for (int i = 0; i < 3; i++)\n            {\n                dPos += 0.75f;\n                AddControl(true, new MyGuiControlLabel(m_parent, controlsOrigin + dPos * MyGuiConstants.CONTROLS_DELTA, null, colorNames[i], MyGuiConstants.LABEL_TEXT_COLOR,\n                    MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n                m_specularLightColorSlider[i] = new MyGuiControlSlider(m_parent, (sliderOffset + controlsOrigin) + dPos * MyGuiConstants.CONTROLS_DELTA, MyGuiConstants.SLIDER_WIDTH,\n                    MyEditorConstants.COLOR_COMPONENT_MIN_VALUE, MyEditorConstants.COLOR_COMPONENT_MAX_VALUE, MyGuiConstants.SLIDER_BACKGROUND_COLOR,\n                    new StringBuilder(), MyGuiConstants.SLIDER_WIDTH_LABEL, 0, MyGuiConstants.LABEL_TEXT_SCALE * 0.85f * 0.75f);\n                AddControl(true, m_specularLightColorSlider[i]);\n            }\n\n            /*\n             * Effect \n             */\n\n            //effect\n            dPos += 1.25f;\n            m_controls.Add( new MyGuiControlLabel(m_parent, controlsOrigin + dPos * MyGuiConstants.CONTROLS_DELTA, null, MyTextsWrapperEnum.Options, MyGuiConstants.LABEL_TEXT_COLOR,\n                MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n            m_effectComboBox = new MyGuiControlCombobox(m_parent, controlsOrigin + dPos * MyGuiConstants.CONTROLS_DELTA + sliderOffset + new Vector2(0.03f, 0f),\n                MyGuiControlPreDefinedSize.MEDIUM, MyGuiConstants.COMBOBOX_BACKGROUND_COLOR, MyGuiConstants.COMBOBOX_TEXT_SCALE);\n\n            foreach (MyLightEffectTypeEnum enumValue in Enum.GetValues(typeof(MyLightEffectTypeEnum)))\n            {\n                m_effectComboBox.AddItem((int)enumValue, MyPrefabLight.GetStringFromMyLightEffectTypeEnum(enumValue));\n            }\n\n            m_effectComboBox.SelectItemByKey(0);\n            m_effectComboBox.OnSelect += OnComboBoxChange;\n            //m_controls.Add(m_effectComboBox);\n            m_controls.Add(m_effectComboBox);\n\n            //falloff slider\n            dPos += 1.25f;\n            dPosFalloff = dPos;\n\n            AddControl(true, new MyGuiControlLabel(m_parent, controlsOrigin + dPos * MyGuiConstants.CONTROLS_DELTA, null, new StringBuilder(\"Falloff\"), MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n            m_pointFallOffSlider = new MyGuiControlSlider(m_parent, (sliderOffset + controlsOrigin) + dPos * MyGuiConstants.CONTROLS_DELTA, MyGuiConstants.SLIDER_WIDTH,\n                0.1f, 5.0f, MyGuiConstants.SLIDER_BACKGROUND_COLOR,\n                new System.Text.StringBuilder(\" {0}\"), MyGuiConstants.SLIDER_WIDTH_LABEL + 0.05f, 3, MyGuiConstants.LABEL_TEXT_SCALE);\n            AddControl(true, m_pointFallOffSlider);\n\n            //range slider\n            dPos++;\n            AddControl(true, new MyGuiControlLabel(m_parent, controlsOrigin + dPos * MyGuiConstants.CONTROLS_DELTA, null, new StringBuilder(\"Range\"), MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n            m_pointRangeSlider = new MyGuiControlSlider(m_parent, (sliderOffset + controlsOrigin) + dPos * MyGuiConstants.CONTROLS_DELTA, MyGuiConstants.SLIDER_WIDTH,\n                0.1f, MyLightsConstants.MAX_POINTLIGHT_RADIUS, MyGuiConstants.SLIDER_BACKGROUND_COLOR,\n                new System.Text.StringBuilder(\" {0}\"), MyGuiConstants.SLIDER_WIDTH_LABEL + 0.05f, 3, MyGuiConstants.LABEL_TEXT_SCALE);\n            AddControl(true, m_pointRangeSlider);\n\n            //intensity slider\n            dPos++;\n            AddControl(true, new MyGuiControlLabel(m_parent, controlsOrigin + dPos * MyGuiConstants.CONTROLS_DELTA, null, new StringBuilder(\"Intensity\"), MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n\n            m_pointIntensitySlider = new MyGuiControlSlider(m_parent, (sliderOffset + controlsOrigin) + dPos * MyGuiConstants.CONTROLS_DELTA, MyGuiConstants.SLIDER_WIDTH,\n                0.1f, 10.0f, MyGuiConstants.SLIDER_BACKGROUND_COLOR,\n                new System.Text.StringBuilder(\" {0}\"), MyGuiConstants.SLIDER_WIDTH_LABEL + 0.05f, 3, MyGuiConstants.LABEL_TEXT_SCALE);\n\n            AddControl(true, m_pointIntensitySlider);\n\n            // Offset slider\n            dPos++;\n            AddControl(true, new MyGuiControlLabel(m_parent, controlsOrigin + dPos * MyGuiConstants.CONTROLS_DELTA, null, new StringBuilder(\"Offset\"), MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n\n            m_pointOffsetSlider = new MyGuiControlSlider(m_parent, (sliderOffset + controlsOrigin) + dPos * MyGuiConstants.CONTROLS_DELTA, MyGuiConstants.SLIDER_WIDTH,\n                -0.5f, 1.5f, MyGuiConstants.SLIDER_BACKGROUND_COLOR,\n                new System.Text.StringBuilder(\" {0}\"), MyGuiConstants.SLIDER_WIDTH_LABEL + 0.05f, 3, MyGuiConstants.LABEL_TEXT_SCALE);\n\n            AddControl(true, m_pointOffsetSlider);\n\n\n            dPos++;\n            AddControl(true, m_flashOffsetLabel = new MyGuiControlLabel(m_parent, controlsOrigin + dPos * MyGuiConstants.CONTROLS_DELTA, null, new StringBuilder(\"Flash Ofst.\"), MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n\n            m_flashOffsetSlider = new MyGuiControlSlider(m_parent, (sliderOffset + controlsOrigin) + dPos * MyGuiConstants.CONTROLS_DELTA, MyGuiConstants.SLIDER_WIDTH,\n                0f, 1f, MyGuiConstants.SLIDER_BACKGROUND_COLOR,\n                new System.Text.StringBuilder(\" {0}\"), MyGuiConstants.SLIDER_WIDTH_LABEL + 0.05f, 3, MyGuiConstants.LABEL_TEXT_SCALE);\n\n            AddControl(true, m_flashOffsetSlider);\n\n            /*\n             * \n             * Reflector spot light\n             * \n             * \n             */\n\n\n\n\n            dPos = -1;\n\n\n\n            AddControl(false, new MyGuiControlButton(m_parent, new Vector2(m_position.X, controlsOrigin.Y) + dPos * MyGuiConstants.CONTROLS_DELTA, MyGuiConstants.MAIN_MENU_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.SwitchToPointLight, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnPointClick,\n                MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n\n\n            dPos = 1;\n\n            AddControl(false, new MyGuiControlLabel(m_parent, controlsOrigin + dPos * MyGuiConstants.CONTROLS_DELTA, null, MyTextsWrapperEnum.Enabled, MyGuiConstants.LABEL_TEXT_COLOR,\n    MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n            m_spotLightCheckbox = new MyGuiControlCheckbox(m_parent, (checkBoxOffset + controlsOrigin) + dPos * MyGuiConstants.CONTROLS_DELTA, false, MyGuiConstants.CHECKBOX_BACKGROUND_COLOR);\n            AddControl(false, m_spotLightCheckbox);\n\n\n\n\n\n            //text\n            dPos += 0.9f;\n            AddControl(false, new MyGuiControlLabel(m_parent, controlsOrigin + dPos * MyGuiConstants.CONTROLS_DELTA, null, MyTextsWrapperEnum.DiffuseColor, MyGuiConstants.LABEL_TEXT_COLOR,\n                MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n\n            AddControl(false, new MyGuiControlButton(m_parent, controlsOrigin + dPos * MyGuiConstants.CONTROLS_DELTA + buttonsColumn, copyPasteButtonScale, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.Copy, MyGuiConstants.BUTTON_TEXT_COLOR, copyPasteButtonFontScale, OnCopySpotDiffuseColor,\n                MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER, true));\n\n            AddControl(false, new MyGuiControlButton(m_parent, controlsOrigin + dPos * MyGuiConstants.CONTROLS_DELTA + buttonsColumn + pasteButtonShift, copyPasteButtonScale, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.Paste, MyGuiConstants.BUTTON_TEXT_COLOR, copyPasteButtonFontScale, OnPasteSpotDiffuseColor,\n                MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER, true));\n            dPos += 0.1f;\n\n            //color sliders\n            for (int i = 0; i < 3; i++)\n            {\n                dPos += 0.75f;\n                AddControl(false, new MyGuiControlLabel(m_parent, controlsOrigin + dPos * MyGuiConstants.CONTROLS_DELTA, null, colorNames[i], MyGuiConstants.LABEL_TEXT_COLOR,\n                    MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n                m_spotNormalLightColorSlider[i] = new MyGuiControlSlider(m_parent, (sliderOffset + controlsOrigin) + dPos * MyGuiConstants.CONTROLS_DELTA, MyGuiConstants.SLIDER_WIDTH,\n                    MyEditorConstants.COLOR_COMPONENT_MIN_VALUE, MyEditorConstants.COLOR_COMPONENT_MAX_VALUE, MyGuiConstants.SLIDER_BACKGROUND_COLOR,\n                    new StringBuilder(), MyGuiConstants.SLIDER_WIDTH_LABEL, 0, MyGuiConstants.LABEL_TEXT_SCALE * 0.85f * 0.75f);\n                AddControl(false, m_spotNormalLightColorSlider[i]);\n            }\n\n\n            dPos++;\n\n\n            AddControl(false, new MyGuiControlLabel(m_parent, controlsOrigin + dPos * MyGuiConstants.CONTROLS_DELTA, null, new StringBuilder(\"Shadows Distance\"), MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n            dPos++;\n            m_spotLightShadowDistance = new MyGuiControlSlider(m_parent, (sliderOffset + controlsOrigin) + dPos * MyGuiConstants.CONTROLS_DELTA, MyGuiConstants.SLIDER_WIDTH,\n                0.0f, MyLightsConstants.MAX_SPOTLIGHT_SHADOW_RANGE, MyGuiConstants.SLIDER_BACKGROUND_COLOR,\n                new System.Text.StringBuilder(\" {0}\"), MyGuiConstants.SLIDER_WIDTH_LABEL + 0.05f, 3, MyGuiConstants.LABEL_TEXT_SCALE);\n            AddControl(false, m_spotLightShadowDistance);\n\n\n            //angle slider\n            dPos = dPosFalloff;\n            AddControl(false, new MyGuiControlLabel(m_parent, controlsOrigin + dPos * MyGuiConstants.CONTROLS_DELTA, null, new StringBuilder(\"Angle\"), MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n            m_spotAngleSlider = new MyGuiControlSlider(m_parent, (sliderOffset + controlsOrigin) + dPos * MyGuiConstants.CONTROLS_DELTA, MyGuiConstants.SLIDER_WIDTH,\n                0.1f, MyLightsConstants.MAX_SPOTLIGHT_ANGLE, MyGuiConstants.SLIDER_BACKGROUND_COLOR,\n                new System.Text.StringBuilder(\" {0}\"), MyGuiConstants.SLIDER_WIDTH_LABEL + 0.05f, 3, MyGuiConstants.LABEL_TEXT_SCALE);\n            AddControl(false, m_spotAngleSlider);\n\n            //falloff slider\n            dPos++;\n            AddControl(false, new MyGuiControlLabel(m_parent, controlsOrigin + dPos * MyGuiConstants.CONTROLS_DELTA, null, new StringBuilder(\"Falloff\"), MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n            m_spotFallOffSlider = new MyGuiControlSlider(m_parent, (sliderOffset + controlsOrigin) + dPos * MyGuiConstants.CONTROLS_DELTA, MyGuiConstants.SLIDER_WIDTH,\n                0.1f, 5.0f, MyGuiConstants.SLIDER_BACKGROUND_COLOR,\n                new System.Text.StringBuilder(\" {0}\"), MyGuiConstants.SLIDER_WIDTH_LABEL + 0.05f, 3, MyGuiConstants.LABEL_TEXT_SCALE);\n            AddControl(false, m_spotFallOffSlider);\n\n            //range slider\n            dPos++;\n            AddControl(false, new MyGuiControlLabel(m_parent, controlsOrigin + dPos * MyGuiConstants.CONTROLS_DELTA, null, new StringBuilder(\"Range\"), MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n            m_spotRangeSlider = new MyGuiControlSlider(m_parent, (sliderOffset + controlsOrigin) + dPos * MyGuiConstants.CONTROLS_DELTA, MyGuiConstants.SLIDER_WIDTH,\n                 0.1f, MyLightsConstants.MAX_SPOTLIGHT_RANGE, MyGuiConstants.SLIDER_BACKGROUND_COLOR,\n                new System.Text.StringBuilder(\" {0}\"), MyGuiConstants.SLIDER_WIDTH_LABEL + 0.05f, 3, MyGuiConstants.LABEL_TEXT_SCALE);\n            AddControl(false, m_spotRangeSlider);\n\n            //intensity slider\n            dPos++;\n            AddControl(false, new MyGuiControlLabel(m_parent, controlsOrigin + dPos * MyGuiConstants.CONTROLS_DELTA, null, new StringBuilder(\"Intensity\"), MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n            m_spotIntensitySlider = new MyGuiControlSlider(m_parent, (sliderOffset + controlsOrigin) + dPos * MyGuiConstants.CONTROLS_DELTA, MyGuiConstants.SLIDER_WIDTH,\n                0.1f, 10.0f, MyGuiConstants.SLIDER_BACKGROUND_COLOR,\n                new System.Text.StringBuilder(\" {0}\"), MyGuiConstants.SLIDER_WIDTH_LABEL + 0.05f, 3, MyGuiConstants.LABEL_TEXT_SCALE);\n            AddControl(false, m_spotIntensitySlider);\n\n            dPos = 15;\n            m_controls.Add(new MyGuiControlButton(m_parent, new Vector2(m_position.X - 0.05f, controlsOrigin.Y) + dPos * MyGuiConstants.CONTROLS_DELTA, MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.Ok, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnOkClick,\n                MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_CENTER, true));\n\n            m_controls.Add(new MyGuiControlButton(m_parent, new Vector2(m_position.X + 0.05f, controlsOrigin.Y) + dPos * MyGuiConstants.CONTROLS_DELTA, MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.Cancel, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnCancelClick,\n                MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER, true));\n\n\n\n            ActivateLightType(true);\n            //m_tabControl.ActivateTab((int)MyGuiLightPrefabTypeEnum.PointLight);\n        }\n\n\n\n        private void OnCopyPointDiffuseColor(MyGuiControlButton sender)\n        {\n            var prefabLight = m_prefabLights.FirstOrDefault();\n            if (prefabLight != null)\n            {\n                MyLight light = prefabLight.GetLight();\n                MyEditor.SetClipboard(light.Color);\n            }\n        }\n\n        private void OnPastePointDiffuseColor(MyGuiControlButton sender)\n        {\n            Color color;\n            if (MyEditor.GetClipboard<Color>(out color))\n            {\n                foreach (var prefabLight in m_prefabLights)\n                {\n                    MyLight light = prefabLight.GetLight();\n                    light.Color = color.ToVector4();\n                    InitializeValues(prefabLight);\n                }\n            }\n        }\n\n        private void OnCopyPointSpecularColor(MyGuiControlButton sender)\n        {\n            var prefabLight = m_prefabLights.FirstOrDefault();\n            if (prefabLight != null)\n            {\n                MyLight light = prefabLight.GetLight();\n                MyEditor.SetClipboard(light.SpecularColor);\n            }\n        }\n\n        private void OnPastePointSpecularColor(MyGuiControlButton sender)\n        {\n            Color color;\n            if (MyEditor.GetClipboard<Color>(out color))\n            {\n                foreach (var prefabLight in m_prefabLights)\n                {\n                    MyLight light = prefabLight.GetLight();\n                    light.SpecularColor = color.ToVector3();\n                    InitializeValues(prefabLight);\n                }\n            }\n        }\n\n        private void OnCopySpotDiffuseColor(MyGuiControlButton sender)\n        {\n            var prefabLight = m_prefabLights.FirstOrDefault();\n            if (prefabLight != null)\n            {\n                MyLight light = prefabLight.GetLight();\n                MyEditor.SetClipboard(light.ReflectorColor);\n            }\n        }\n\n        private void OnPasteSpotDiffuseColor(MyGuiControlButton sender)\n        {\n            Color color;\n            if (MyEditor.GetClipboard<Color>(out color))\n            {\n                foreach (var prefabLight in m_prefabLights)\n                {\n                    MyLight light = prefabLight.GetLight();\n                    light.ReflectorColor = color.ToVector4();\n                    InitializeValues(prefabLight);\n                }\n            }\n        }\n\n        private void InitializeValues(MyPrefabLight prefabLight)\n        {\n            MyLight light = prefabLight.GetLight();\n\n            m_pointNormalLightColorSlider[0].SetNormalizedValue(light.Color.X);\n            m_pointNormalLightColorSlider[1].SetNormalizedValue(light.Color.Y);\n            m_pointNormalLightColorSlider[2].SetNormalizedValue(light.Color.Z);\n            m_specularLightColorSlider[0].SetNormalizedValue(light.SpecularColor.X);\n            m_specularLightColorSlider[1].SetNormalizedValue(light.SpecularColor.Y);\n            m_specularLightColorSlider[2].SetNormalizedValue(light.SpecularColor.Z);\n            m_pointFallOffSlider.SetValue(light.Falloff);\n            m_pointRangeSlider.SetValue(light.Range);\n            m_pointIntensitySlider.SetValue(light.Intensity);\n            m_pointOffsetSlider.SetValue(light.PointLightOffset);\n\n            m_spotNormalLightColorSlider[0].SetNormalizedValue(light.ReflectorColor.X);\n            m_spotNormalLightColorSlider[1].SetNormalizedValue(light.ReflectorColor.Y);\n            m_spotNormalLightColorSlider[2].SetNormalizedValue(light.ReflectorColor.Z);\n            m_spotFallOffSlider.SetValue(light.ReflectorFalloff);\n            m_spotRangeSlider.SetValue(light.ReflectorRange);\n            m_spotIntensitySlider.SetValue(light.ReflectorIntensity);\n            m_spotAngleSlider.SetValue(light.ReflectorConeDegrees);\n\n            m_pointLightCheckbox.Checked = (light.LightType & MyLight.LightTypeEnum.PointLight) != 0;\n            m_hemisphereLightCheckbox.Checked = (light.LightType & MyLight.LightTypeEnum.Hemisphere) != 0;\n            m_spotLightCheckbox.Checked = (light.LightType & MyLight.LightTypeEnum.Spotlight) != 0;\n            m_spotLightShadowDistance.SetValue(light.ShadowDistance); \n\n            m_flashOffsetSlider.SetValue(prefabLight.FlashOffset);\n\n            m_effectComboBox.SelectItemByIndex((int) prefabLight.Effect);\n\n            SetComponentsVisibility();\n        }\n\n\n        public void OnMyCheckEnable(MyGuiControlCheckbox sender)\n        {\n            foreach (MyPrefabLight prefabLight in m_prefabLights)\n            {\n                MyLight myLight = prefabLight.GetLight();\n                float oldIntensity = myLight.Intensity; // Keep old intensity, because Start() will reset it to 1\n\n                MyGuiControlCheckbox other;\n                MyLight.LightTypeEnum lightType;\n                \n                if (sender == m_pointLightCheckbox)\n                {\n                    other = m_hemisphereLightCheckbox;\n                    lightType = MyLight.LightTypeEnum.PointLight;\n                }\n                else if (sender == m_hemisphereLightCheckbox)\n                {\n                    other = m_pointLightCheckbox;\n                    lightType = MyLight.LightTypeEnum.Hemisphere;\n                }\n                else  // (sender == m_spotLightCheckbox)\n                {\n                    other = null;\n                    lightType = MyLight.LightTypeEnum.Spotlight;\n                }\n\n                if (sender.Checked)\n                {\n                    myLight.Start(lightType | myLight.LightType, myLight.Falloff);\n                    myLight.GlareOn = true;\n                    if (other != null) other.Checked = false;  // only one of Point and Hemisphere can be checked\n                }\n                else\n                {\n                    myLight.Start((~lightType & myLight.LightType), myLight.Falloff);\n                    myLight.GlareOn = true;\n                }\n\n\n\n                myLight.Intensity = oldIntensity; // Set previous intensity\n\n                prefabLight.OnWorldPositionChanged(this);\n                prefabLight.UpdateEffect();\n            }\n            OnComponentChange(null);\n        }\n\n        /*\n        public void OnMyShadowCheckEnable(MyGuiControlCheckbox sender)\n        {\n            foreach (MyPrefabLight prefabLight in m_prefabLights)\n            {\n                MyLight myLight = prefabLight.GetLight();\n\n                if (sender == m_spotLightShadowCheckbox)\n                {\n                    myLight.ShadowsEnabled = sender.Checked;\n                }\n\n                prefabLight.OnWorldPositionChanged(this);\n                prefabLight.UpdateEffect();\n            }\n            OnComponentChange(null);\n        }\n        */\n        void OnComponentChange(MyGuiControlSlider sender)\n        {\n            foreach (MyPrefabLight prefabLight in m_prefabLights)\n            {\n                MyLight light = prefabLight.GetLight();\n                Color tmpColor = new Color();\n                tmpColor.R = (byte)m_pointNormalLightColorSlider[0].GetValue();\n                tmpColor.G = (byte)m_pointNormalLightColorSlider[1].GetValue();\n                tmpColor.B = (byte)m_pointNormalLightColorSlider[2].GetValue();\n                light.Color = tmpColor.ToVector4();\n\n                tmpColor.R = (byte)m_specularLightColorSlider[0].GetValue();\n                tmpColor.G = (byte)m_specularLightColorSlider[1].GetValue();\n                tmpColor.B = (byte)m_specularLightColorSlider[2].GetValue();\n                light.SpecularColor = tmpColor.ToVector3();\n                light.Falloff = m_pointFallOffSlider.GetValue(); // allowed values 0.1f-5.0f\n                light.Range = m_pointRangeSlider.GetValue(); // allowed values 0.0f-MyLightsConstants.MAX_POINTLIGHT_RADIUS\n                light.Intensity = prefabLight.m_IntensityMax = m_pointIntensitySlider.GetValue(); // allowed values 0.0f-10.0f\n                light.PointLightOffset = m_pointOffsetSlider.GetValue();\n\n                tmpColor.R = (byte)m_spotNormalLightColorSlider[0].GetValue();\n                tmpColor.G = (byte)m_spotNormalLightColorSlider[1].GetValue();\n                tmpColor.B = (byte)m_spotNormalLightColorSlider[2].GetValue();\n                light.ReflectorColor = tmpColor.ToVector4();\n\n                light.ReflectorFalloff = m_spotFallOffSlider.GetValue(); // allowed values 0.1f-5.0f\n                light.ReflectorRange = m_spotRangeSlider.GetValue(); // allowed values 0.0f-MyLightsConstants.MAX_SPOTLIGHT_RANGE\n                light.ReflectorIntensity = prefabLight.ReflectorIntensityMax = m_spotIntensitySlider.GetValue(); // allowed values 0.0f-10.0f\n\n                light.ReflectorConeDegrees = m_spotAngleSlider.GetValue(); // allowed values 0.0f-MyLightsConstants.MAX_SPOTLIGHT_ANGLE\n                light.ShadowDistance = m_spotLightShadowDistance.GetValue();\n                prefabLight.FlashOffset = m_flashOffsetSlider.GetValue();\n            }\n        }\n\n        void SetComponentsVisibility()\n        {\n            var effect = (MyLightEffectTypeEnum)m_effectComboBox.GetSelectedKey();\n\n            switch (effect)\n            {\n                case MyLightEffectTypeEnum.CONSTANT_FLASHING:\n                case MyLightEffectTypeEnum.DISTANT_GLARE_FLASHING:\n                    m_flashOffsetSlider.Visible = m_flashOffsetLabel.Visible = true;\n                    break;\n                default:\n                    m_flashOffsetSlider.Visible = m_flashOffsetLabel.Visible = false;\n                    break;\n            }\n        }\n\n        void OnComboBoxChange()\n        {\n            foreach (MyPrefabLight prefabLight in m_prefabLights)\n            {\n                prefabLight.Effect = (MyLightEffectTypeEnum)m_effectComboBox.GetSelectedKey();\n            }\n\n            SetComponentsVisibility();\n        }\n\n\n\n\n        public void OnSpotClick(MyGuiControlButton sender)\n        {\n            ActivateLightType(false);\n        }\n\n        public void OnPointClick(MyGuiControlButton sender)\n        {\n            ActivateLightType(true);\n        }\n\n        public void OnOkClick(MyGuiControlButton sender)\n        {\n            Visible = false;\n        }\n\n        public void OnCancelClick(MyGuiControlButton sender)\n        {\n            Visible = false;\n            RestoreOriginalValues();\n        }\n\n        //public override bool Draw(float backgroundFadeAlpha)\n        //{\n        //    if (base.Draw(backgroundFadeAlpha) == false) return false;\n\n        //    MyPrefabLight myLight = m_prefabLights[0] as MyPrefabLight;\n\n        //    MyGuiControlSlider rS = m_spotNormalLightColorSlider[0];\n        //    Color c = new Color(myLight.GetLight().ReflectorColor);\n        //    c.A = 255;\n\n        //    if (m_tabControl.GetSelectedTab() == (int)MyGuiLightPrefabTypeEnum.PointLight)\n        //    {\n        //        rS = m_pointNormalLightColorSlider[0];\n        //        c = new Color(myLight.GetLight().Color);\n        //        c.A = 255;\n        //    }\n\n        //    Vector2 pos = MyGuiManager.GetScreenCoordinateFromNormalizedCoordinate(m_position + rS.GetPosition());\n        //    Vector2 size = MyGuiManager.GetScreenSizeFromNormalizedSize(new Vector2(0.5f * MyGuiConstants.SLIDER_WIDTH, 0.75f * MyGuiConstants.SLIDER_HEIGHT));\n\n        //    // Draw one big final color rectangle to see result of each RGBA component in one\n        //    MyGuiManager.DrawSpriteBatch(MyGuiManager.GetBlankTexture(), (int)pos.X, (int)pos.Y, (int)size.X, (int)size.Y, c);\n\n\n        //    if (m_tabControl.GetSelectedTab() == (int)MyGuiLightPrefabTypeEnum.PointLight)\n        //    {\n        //        Vector2 pos2 = MyGuiManager.GetScreenCoordinateFromNormalizedCoordinate(m_position + m_specularLightColorSlider[0].GetPosition());\n\n        //        Color c2 = new Color(myLight.GetLight().SpecularColor);\n        //        c2.A = 255;\n\n        //        // Draw color rectangles next to each color slider and then draw one big final color rectangle to see result of each RGBA component in one\n        //        MyGuiManager.DrawSpriteBatch(MyGuiManager.GetBlankTexture(), (int)pos2.X, (int)pos2.Y, (int)size.X, (int)size.Y, c2);\n        //    }\n\n        //    return true;\n        //}\n\n        public override void Draw()\n        {\n            if (Visible)\n            {\n                foreach (MyGuiControlBase control in m_controls)\n                {\n                    if (control.Visible && control is MyGuiControlCombobox == false)\n                    {\n                        control.Draw();\n                    }\n                }\n\n                foreach (MyGuiControlBase control in m_controls)\n                {\n                    if (control.Visible && control is MyGuiControlCombobox)\n                    {\n                        control.Draw();\n                    }\n                }\n\n                DrawColors();\n            }\n        }\n\n        private void DrawColors()\n        {\n            if (m_prefabLights.Count > 0)\n            {\n                MyPrefabLight myLight = m_prefabLights[0] as MyPrefabLight;\n\n                MyGuiControlSlider rS = m_spotNormalLightColorSlider[0];\n                Color color = new Color(myLight.GetLight().ReflectorColor);\n                color.A = 255;\n\n                if (m_pointLightCheckbox.Visible)\n                {\n                    rS = m_pointNormalLightColorSlider[0];\n                    color = new Color(myLight.GetLight().Color);\n                    color.A = 255;\n                }\n\n                Vector2 posOffset = new Vector2(-0.08f, -0.005f);\n                Vector2 pos = MyGuiManager.GetScreenCoordinateFromNormalizedCoordinate(rS.GetPosition() - MyGuiConstants.CONTROLS_DELTA + posOffset);\n                Vector2 colorLabelSize = MyGuiManager.GetScreenSizeFromNormalizedSize(new Vector2(0.5f * MyGuiConstants.SLIDER_HEIGHT, 0.5f * MyGuiConstants.SLIDER_HEIGHT));\n\n                // Draw one big final color rectangle to see result of each RGBA component in one\n                MyGuiManager.DrawSpriteBatch(MyGuiManager.GetBlankTexture(), (int)pos.X, (int)pos.Y, (int)colorLabelSize.X, (int)colorLabelSize.Y, color);\n\n                if (m_pointLightCheckbox.Visible)\n                {\n                    Vector2 pos2 = MyGuiManager.GetScreenCoordinateFromNormalizedCoordinate(m_specularLightColorSlider[0].GetPosition() - MyGuiConstants.CONTROLS_DELTA + posOffset);\n\n                    Color color2 = new Color(myLight.GetLight().SpecularColor);\n                    color2.A = 255;\n\n                    // Draw color rectangles next to each color slider and then draw one big final color rectangle to see result of each RGBA component in one\n                    MyGuiManager.DrawSpriteBatch(MyGuiManager.GetBlankTexture(), (int)pos2.X, (int)pos2.Y, (int)colorLabelSize.X, (int)colorLabelSize.Y, color2);\n                }\n            }\n        }\n\n        public bool SelectionChanged()\n        {\n            if (MyEditorGizmo.SelectedEntities.Count == m_prefabLights.Count)\n            {\n                foreach (var item in MyEditorGizmo.SelectedEntities)\n                {\n                    if (!m_prefabLights.Contains(item))\n                    {\n                        return true;\n                    }\n                }\n            }\n            return false;\n        }\n\n        public override void Update()\n        {\n            if (Visible && SelectionChanged())\n            {\n                RestoreOriginalValues();\n                Visible = false;\n            }\n\n            foreach (MyGuiControlBase control in m_controls)\n            {\n                control.Update();\n            }\n        }\n\n        public override bool HandleInput(MyGuiInput input, bool hasKeyboardActiveControl, bool hasKeyboardActiveControlPrevious, bool receivedFocusInThisUpdate)\n        {\n            bool inputCaptured = base.HandleInput(input, hasKeyboardActiveControl, hasKeyboardActiveControlPrevious, receivedFocusInThisUpdate);\n            if (Visible)\n            {\n                foreach (MyGuiControlBase control in m_controls)\n                {\n                    if (control.Visible && control is MyGuiControlCombobox && control.HandleInput(input, false, false, receivedFocusInThisUpdate))\n                    {\n                        return true;\n                    }\n                }\n\n                foreach (MyGuiControlBase control in m_controls)\n                {\n                    if (control.Visible && control is MyGuiControlCombobox == false && control.HandleInput(input, false, false, receivedFocusInThisUpdate))\n                    {\n                        return true;\n                    }\n                }\n            }\n            return false;\n        }\n\n        public override bool ContainsMouse()\n        {\n            foreach (MyGuiControlBase myGuiControlBase in m_controls)\n            {\n                if (myGuiControlBase.ContainsMouse())\n                {\n                    return true;\n                }\n            }\n            return false;\n        }\n\n        protected override bool CheckMouseOver()\n        {\n            foreach (MyGuiControlBase myGuiControlBase in m_controls)\n            {\n                if (myGuiControlBase.IsMouseOver())\n                {\n                    return true;\n                }\n            }\n            return false;\n        }\n        \n        private void ActivateLightType(bool point)\n        {\n            foreach (var item in m_pointLightControls) item.Visible = point;\n            foreach (var item in m_spotLightControls) item.Visible = !point;\n        }\n\n        void MyEntities_OnEntityRemove(MyEntity entity)\n        {\n            MyPrefabLight light = entity as MyPrefabLight;\n            if (light != null)\n            {\n                m_prefabLights.Remove(light);\n                if (m_prefabLights.Count == 0 && Visible)\n                {\n                    Visible = false;\n                }\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Helpers/MyGuiControlEditVoxelHand.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Editor;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Entities.VoxelHandShapes;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.Game.Entities;\n\nnamespace MinerWars.AppCode.Game.GUI.Helpers\n{\n    class MyGuiControlEditVoxelHand : MyGuiControlBase\n    {        \n        private MyGuiControlRadioButtonGroup m_voxelShapeTypeRadioButtonGroup;                \n        private MyGuiControlRadioButtonGroup m_voxelShapeModeRadioButtonGroup;        \n        \n        /*\n        private MyGuiControlSlider m_voxelShapeSizeSlider;\n        private MyGuiControlSlider m_voxelShapeSize2Slider;\n        private MyGuiControlSlider m_voxelShapeSize3Slider;\n          */\n\n        private MyGuiControlSlider m_voxelShapeDistanceSlider;\n        private MyGuiControlCombobox m_voxelShapeMaterialCombobox;\n        private MyGuiControlCheckbox m_isProjectedCheckbox;\n        private MyGuiControlCheckbox m_isProjectedOnWaypointCheckbox;\n        private MyGuiControlLabel m_voxelShapeDistanceLabel;\n        private MyGuiControlLabel m_voxelShapeMaterialLabel;\n        private MyGuiControlCheckbox m_attachDetachVoxelHandCheckbox;\n        private MyGuiControlLabel m_detachLabel;\n        \n        private List<MyGuiControlBase> m_controls;\n        private List<MyGuiControlBase> m_sortedControlsByPriority;\n        private List<MyGuiControlBase> m_dynamicControls = new List<MyGuiControlBase>();\n\n        private bool m_sizeChangedFromEditor = false;\n        private bool m_distanceChangedFromEditor = false;\n        private float m_offsetForSizeProperties = 0;\n        bool m_canSelect = false;\n\n        public MyGuiControlEditVoxelHand(IMyGuiControlsParent parent, Vector2 position, Vector2 size, Vector4 backgroundColor)\n            : base(parent, position, size, backgroundColor, null)\n        {                     \n            LoadControls();\n\n            \n            if (MyEditorVoxelHand.VoxelHandShape.Material != null)\n            {\n                m_voxelShapeMaterialCombobox.SelectItemByKey((int)MyEditorVoxelHand.VoxelHandShape.Material);\n            }\n            else \n            {\n                m_voxelShapeMaterialCombobox.SelectItemByKey(0);\n            }\n\n            m_canSelect = true;\n            //MyEditorVoxelHand.OnVoxelShapeSize += OnVoxelHandSizeChanged;\n            //MyEditorVoxelHand.OnVoxelShapeDistance += OnVoxelHandDistanceChanged;\n        }\n\n        public void LoadControls()\n        {            \n            m_controls = new List<MyGuiControlBase>();\n            Vector2 labelOffset = new Vector2(-0.015f, 0f);\n            Vector2 controlsOriginLeft = m_position + new Vector2(-m_size.Value.X / 2.0f + 0.025f, -m_size.Value.Y / 2.0f + 0.025f);\n            Vector2 controlsOriginRight = m_position + new Vector2(m_size.Value.X / 2.0f - 0.025f, -m_size.Value.Y / 2.0f + 0.025f);\n            Vector2 controlsDelta = MyGuiConstants.CONTROLS_DELTA * 0.6f;            \n\n            // add panel\n            //m_controls.Add(new MyGuiControlPanel(m_parentScreen, m_position, m_size, m_backgroundColor.Value, null, null, null, null, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER));\n            m_controls.Add(new MyGuiControlPanel(m_parent, m_position, m_size, m_backgroundColor.Value, 2, MyGuiConstants.TREEVIEW_VERTICAL_LINE_COLOR));\n\n            #region shape types\n            m_controls.Add(new MyGuiControlLabel(m_parent, controlsOriginLeft + labelOffset, null, MyTextsWrapperEnum.EditVoxelHandShapeType, MyGuiConstants.LABEL_TEXT_COLOR,\n                MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));            \n            m_voxelShapeTypeRadioButtonGroup = new MyGuiControlRadioButtonGroup();\n\n            foreach (MyVoxelHandShapeType voxelShapeType in MyGuiEditorVoxelHandHelpers.MyEditorVoxelHandShapeHelperTypesEnumValues)\n            {\n                controlsOriginLeft += controlsDelta;\n                MyGuiEditorVoxelHandHelper voxelHandHelper = MyGuiEditorVoxelHandHelpers.GetEditorVoxelHandShapeHelper(voxelShapeType);\n\n                MyGuiControlRadioButton voxelShapeTypeRadioButton = new MyGuiControlRadioButton(m_parent, controlsOriginLeft, (int)voxelShapeType,\n                    MyGuiConstants.RADIOBUTTON_BACKGROUND_COLOR);\n                MyGuiControlLabel voxelShapeTypeDescription = new MyGuiControlLabel(m_parent, controlsOriginLeft + new Vector2(voxelShapeTypeRadioButton.GetSize().Value.X, 0.0f), null, voxelHandHelper.Description, MyGuiConstants.LABEL_TEXT_COLOR,\n                    MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER);\n\n                m_controls.Add(voxelShapeTypeRadioButton);\n                m_controls.Add(voxelShapeTypeDescription);\n\n                m_voxelShapeTypeRadioButtonGroup.Add(voxelShapeTypeRadioButton);                \n            }\n            #endregion\n\n            controlsOriginLeft += MyGuiConstants.CONTROLS_DELTA;\n\n            #region voxel mode types\n            m_controls.Add(new MyGuiControlLabel(m_parent, controlsOriginLeft + labelOffset, null, MyTextsWrapperEnum.EditVoxelHandShapeMode, MyGuiConstants.LABEL_TEXT_COLOR,\n                MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));            \n            m_voxelShapeModeRadioButtonGroup = new MyGuiControlRadioButtonGroup();\n            foreach (MyMwcVoxelHandModeTypeEnum voxelModeType in MyGuiEditorVoxelHandHelpers.MyEditorVoxelHandModeHelperTypesEnumValues)\n            {\n                controlsOriginLeft += controlsDelta;\n                MyGuiEditorVoxelHandHelper voxelHandHelper = MyGuiEditorVoxelHandHelpers.GetEditorVoxelHandModeHelper(voxelModeType);\n\n                MyGuiControlRadioButton voxelShapeModeRadioButton = new MyGuiControlRadioButton(m_parent, controlsOriginLeft, (int)voxelModeType,\n                    MyGuiConstants.RADIOBUTTON_BACKGROUND_COLOR);\n                MyGuiControlLabel voxelShapeModeDescription = new MyGuiControlLabel(m_parent, controlsOriginLeft + new Vector2(voxelShapeModeRadioButton.GetSize().Value.X, 0.0f), null, voxelHandHelper.Description, MyGuiConstants.LABEL_TEXT_COLOR,\n                    MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER);\n\n                m_controls.Add(voxelShapeModeRadioButton);\n                m_controls.Add(voxelShapeModeDescription);\n\n                m_voxelShapeModeRadioButtonGroup.Add(voxelShapeModeRadioButton);                \n            }\n            #endregion\n\n            controlsOriginLeft += MyGuiConstants.CONTROLS_DELTA;\n\n            #region is projected\n\n            m_controls.Add(new MyGuiControlLabel(m_parent, controlsOriginLeft + labelOffset, null, MyTextsWrapperEnum.EditVoxelHandIsProjected, MyGuiConstants.LABEL_TEXT_COLOR,\n                MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n            m_controls.Add(m_isProjectedCheckbox = new MyGuiControlCheckbox(m_parent, new Vector2(controlsOriginRight.X - MyGuiConstants.CHECKBOX_SIZE.X, controlsOriginLeft.Y), false, MyGuiConstants.CHECKBOX_BACKGROUND_COLOR));\n\n            m_isProjectedCheckbox.Checked = MyEditorVoxelHand.IsProjected;\n            m_isProjectedCheckbox.OnCheck = OnCheckboxChecked;\n\n            controlsOriginLeft += MyGuiConstants.CONTROLS_DELTA;\n            m_controls.Add(new MyGuiControlLabel(m_parent, controlsOriginLeft + labelOffset, null, MyTextsWrapperEnum.EditVoxelHandIsProjectedToWaypoints, MyGuiConstants.LABEL_TEXT_COLOR,\n                MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n            m_controls.Add(m_isProjectedOnWaypointCheckbox = new MyGuiControlCheckbox(m_parent, new Vector2(controlsOriginRight.X - MyGuiConstants.CHECKBOX_SIZE.X, controlsOriginLeft.Y), false, MyGuiConstants.CHECKBOX_BACKGROUND_COLOR));\n\n            m_isProjectedOnWaypointCheckbox.Checked = MyEditorVoxelHand.IsProjectedToWaypoints;\n            m_isProjectedOnWaypointCheckbox.OnCheck = OnCheckboxChecked;\n\n            #endregion\n\n            controlsOriginLeft += new Vector2(0, MyGuiConstants.SLIDER_HEIGHT);\n            m_offsetForSizeProperties = controlsOriginLeft.Y;\n\n            RecreateDynamicProperties();\n\n            m_voxelShapeTypeRadioButtonGroup.SetSelected((int)MyEditorVoxelHand.VoxelHandShape.GetShapeType());\n            m_voxelShapeTypeRadioButtonGroup.OnSelectedChanged += OnRadioButtonSelectedChange;\n\n            m_voxelShapeModeRadioButtonGroup.SetSelected((int)MyEditorVoxelHand.VoxelHandShape.ModeType);\n            m_voxelShapeModeRadioButtonGroup.OnSelectedChanged += OnRadioButtonSelectedChange;\n        }\n\n        private void RecreateDynamicProperties()\n        {\n            Vector2 controlsOriginLeft = m_position + new Vector2(-m_size.Value.X / 2.0f + 0.025f, -m_size.Value.Y / 2.0f + 0.025f);\n            controlsOriginLeft.Y = m_offsetForSizeProperties;\n            Vector2 labelOffset = new Vector2(-0.015f, 0f);\n            Vector2 controlsDelta = MyGuiConstants.CONTROLS_DELTA * 0.6f;            \n\n            #region shape size slidebar\n\n            foreach (MyGuiControlBase oldControl in m_dynamicControls)\n            {\n                m_controls.Remove(oldControl);\n            }\n            m_dynamicControls.Clear();\n\n\n            float propScale = 0.65f;\n            float sliderWidth = MyGuiConstants.SLIDER_WIDTH * 1.2f;\n            \n            for (int i = 0; i < MyEditorVoxelHand.VoxelHandShape.GetPropertiesCount(); i++)\n            {\n                MyGuiControlLabel label = new MyGuiControlLabel(m_parent, controlsOriginLeft + labelOffset, null, MyEditorVoxelHand.VoxelHandShape.GetPropertyName(i), MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE * propScale, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER);\n                MyGuiControlSlider voxelShapeSizeSlider = new MyGuiControlSlider(m_parent, controlsOriginLeft + new Vector2(0.145f, 0), sliderWidth,\n                    MyVoxelConstants.MIN_VOXEL_HAND_SIZE, MyVoxelConstants.MAX_VOXEL_HAND_SIZE * MyVoxelConstants.VOXEL_SIZE_IN_METRES, MyGuiConstants.SLIDER_BACKGROUND_COLOR,\n                    new StringBuilder(\"{0}\"), 0.05f, 0, MyGuiConstants.LABEL_TEXT_SCALE * 0.85f, propScale);\n                m_dynamicControls.Add(label);\n                m_dynamicControls.Add(voxelShapeSizeSlider);\n                m_controls.Add(label);\n                m_controls.Add(voxelShapeSizeSlider);\n\n                voxelShapeSizeSlider.SetValue(MyEditorVoxelHand.VoxelHandShape.GetPropertyValue(i));\n                voxelShapeSizeSlider.UserData = i;\n                voxelShapeSizeSlider.OnChange += OnSizeSliderChange;\n\n                controlsOriginLeft += new Vector2(0, MyGuiConstants.SLIDER_HEIGHT * propScale * 0.75f);\n            }\n\n            controlsOriginLeft += new Vector2(0, MyGuiConstants.SLIDER_HEIGHT * propScale);\n\n            #endregion\n\n            #region shape distance slidebar\n\n            if (m_voxelShapeDistanceLabel != null)\n            {\n                m_voxelShapeDistanceLabel.SetPosition(controlsOriginLeft + labelOffset);\n                m_voxelShapeDistanceSlider.SetPosition(controlsOriginLeft + new Vector2(0.145f, 0));\n            }\n            else\n            {\n                m_controls.Add(m_voxelShapeDistanceLabel = new MyGuiControlLabel(m_parent, controlsOriginLeft + labelOffset, null, MyTextsWrapperEnum.EditVoxelHandShapeDistance, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE * propScale, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n                m_voxelShapeDistanceSlider = new MyGuiControlSlider(m_parent, controlsOriginLeft + new Vector2(0.145f, 0), sliderWidth,\n                    MyVoxelConstants.MIN_VOXEL_HAND_DISTANCE, MyVoxelConstants.MAX_VOXEL_HAND_DISTANCE, MyGuiConstants.SLIDER_BACKGROUND_COLOR,\n                    new StringBuilder(\"{0:0.00}\"), 0.05f, 2, MyGuiConstants.LABEL_TEXT_SCALE * 0.85f, propScale);\n                m_controls.Add(m_voxelShapeDistanceSlider);\n\n                m_voxelShapeDistanceSlider.SetValue(MyEditorVoxelHand.GetShapeDistance());\n                m_voxelShapeDistanceSlider.OnChange += OnDistanceSliderChange;\n            }\n\n            #endregion\n\n\n            controlsOriginLeft += MyGuiConstants.CONTROLS_DELTA;\n\n            #region shape material\n            Vector2 iconSize = new Vector2(0.095f, 0.095f);\n\n            if (m_voxelShapeMaterialLabel != null)\n            {\n                m_voxelShapeMaterialLabel.SetPosition(controlsOriginLeft + labelOffset);\n                controlsOriginLeft += controlsDelta;\n                m_voxelShapeMaterialCombobox.SetPosition(new Vector2(controlsOriginLeft.X - 0.015f + MyGuiConstants.COMBOBOX_MEDIUM_SIZE.X / 2.0f, controlsOriginLeft.Y));\n            }\n            else\n            {\n                m_controls.Add(m_voxelShapeMaterialLabel = new MyGuiControlLabel(m_parent, controlsOriginLeft + labelOffset, null, MyTextsWrapperEnum.EditVoxelHandShapeMaterial, MyGuiConstants.LABEL_TEXT_COLOR,\n                    MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n                controlsOriginLeft += controlsDelta;\n                m_voxelShapeMaterialCombobox = new MyGuiControlCombobox(m_parent, new Vector2(controlsOriginLeft.X - 0.015f, controlsOriginLeft.Y) + new Vector2(MyGuiConstants.COMBOBOX_MEDIUM_SIZE.X / 2.0f, iconSize.Y / 2.5f), MyGuiControlPreDefinedSize.MEDIUM,\n                    iconSize, new Vector2(0.015f, 0f), MyGuiConstants.COMBOBOX_BACKGROUND_COLOR * 0.7f, MyGuiConstants.COMBOBOX_TEXT_SCALE, 4, true, false, true);\n\n                foreach (MyMwcVoxelMaterialsEnum voxelMaterial in MyGuiAsteroidHelpers.MyMwcVoxelMaterialsEnumValues)\n                {\n                    MyGuiVoxelMaterialHelper voxelMaterialHelper = MyGuiAsteroidHelpers.GetMyGuiVoxelMaterialHelper(voxelMaterial);\n                    m_voxelShapeMaterialCombobox.AddItem((int)voxelMaterial, voxelMaterialHelper.Icon, voxelMaterialHelper.Description);\n                }\n                m_controls.Add(m_voxelShapeMaterialCombobox);\n                m_voxelShapeMaterialCombobox.OnSelect += OnComboboxItemSelect;\n            }\n\n            #endregion\n\n            controlsOriginLeft += 3.4f * MyGuiConstants.CONTROLS_DELTA;\n            if (m_attachDetachVoxelHandCheckbox != null)\n                m_controls.Remove(m_attachDetachVoxelHandCheckbox);\n            if (m_detachLabel != null)\n                m_controls.Remove(m_detachLabel);\n\n            MyTextsWrapperEnum text = MyEditorVoxelHand.DetachedVoxelHand == null ? MyTextsWrapperEnum.DetachVoxelHand : MyTextsWrapperEnum.AttachVoxelHand;\n\n            m_detachLabel = new MyGuiControlLabel(m_parent, controlsOriginLeft + labelOffset, null, text, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE * propScale, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER);\n            m_controls.Add(m_detachLabel);\n\n            m_attachDetachVoxelHandCheckbox = new MyGuiControlCheckbox(m_parent, new Vector2(controlsOriginLeft.X + 5*MyGuiConstants.CHECKBOX_SIZE.X, controlsOriginLeft.Y), false, MyGuiConstants.CHECKBOX_BACKGROUND_COLOR, m_detachLabel);\n            m_attachDetachVoxelHandCheckbox.OnCheck += OnAttachClick;\n\n            m_controls.Add(m_attachDetachVoxelHandCheckbox);\n                 \n\n            LoadSortedControlsByPriority();\n        }\n\n        private void OnAttachClick(MyGuiControlBase button)\n        {\n            if (MyEditorVoxelHand.DetachedVoxelHand == null)\n            {\n                foreach (MyEntity e in MyEntities.GetEntities())\n                {\n                    if (e is MyDummyPoint && ((int)(((MyDummyPoint)e).DummyFlags & CommonLIB.AppCode.ObjectBuilders.SubObjects.MyDummyPointFlags.VOXEL_HAND)) > 0)\n                    {\n                        e.WorldMatrix = MyEditorVoxelHand.UpdateShapePosition();\n                        MyEditorVoxelHand.DetachedVoxelHand = (MyDummyPoint)e;                        \n                    }\n                }\n\n                if (MyEditorVoxelHand.DetachedVoxelHand == null)\n                {\n                    var ob = MinerWars.CommonLIB.AppCode.ObjectBuilders.MyMwcObjectBuilder_Base.CreateNewObject(MinerWars.CommonLIB.AppCode.ObjectBuilders.MyMwcObjectBuilderTypeEnum.DummyPoint, null) as MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.MyMwcObjectBuilder_DummyPoint;\n                    MyDummyPoint voxelHand = new MyDummyPoint();\n                    voxelHand.Init(null, ob, Matrix.Identity);\n                    voxelHand.DummyFlags |= CommonLIB.AppCode.ObjectBuilders.SubObjects.MyDummyPointFlags.VOXEL_HAND;\n                    voxelHand.Size = new Vector3(20, 20, 20);\n                    voxelHand.Save = false;\n                    voxelHand.WorldMatrix = MyEditorVoxelHand.UpdateShapePosition();\n                    MyEntities.Add(voxelHand);\n                    MyEditorVoxelHand.DetachedVoxelHand = voxelHand;\n                }\n\n                \n                MyEditorVoxelHand.DetachedVoxelHand.Enabled = true;\n                MyEditorGizmo.SelectedEntities.Clear();\n                MyEditorGizmo.SelectedEntities.Add(MyEditorVoxelHand.DetachedVoxelHand);\n\n                m_detachLabel.Text = MyTextsWrapperEnum.AttachVoxelHand;\n            }\n            else\n            {\n                if (MyEditorVoxelHand.DetachedVoxelHand != null)\n                    MyEditorVoxelHand.DetachedVoxelHand.MarkForClose();\n                MyEditorVoxelHand.DetachedVoxelHand = null;\n                MyEditorGizmo.SelectedEntities.Clear();\n                m_detachLabel.Text = MyTextsWrapperEnum.DetachVoxelHand;\n            }\n        }\n\n\n        private void LoadSortedControlsByPriority()\n        {\n            m_sortedControlsByPriority  = new List<MyGuiControlBase>();\n            m_sortedControlsByPriority.AddRange(m_controls.Where(x => x is MyGuiControlCombobox));\n            m_sortedControlsByPriority.AddRange(m_controls.Where(x => x is MyGuiControlRadioButton));\n            m_sortedControlsByPriority.AddRange(m_controls.Where(x => x is MyGuiControlSlider));\n            m_sortedControlsByPriority.AddRange(m_controls.Where(x => x is MyGuiControlCheckbox));\n        }\n               /*\n        private void OnVoxelHandSizeChanged(float newSize)\n        {\n            m_sizeChangedFromEditor = true;\n            m_voxelShapeSizeSlider.SetValue(newSize);\n        }        */\n\n        private void OnVoxelHandDistanceChanged(float newDistance)\n        {\n            m_distanceChangedFromEditor = true;\n            m_voxelShapeDistanceSlider.SetValue(newDistance);\n        }\n\n        private void OnSizeSliderChange(MyGuiControlSlider sliderSender) \n        {\n            int index = (int)sliderSender.UserData;\n            MyEditorVoxelHand.VoxelHandShape.SetPropertyValue(index, sliderSender.GetValue());\n\n            if (m_sizeChangedFromEditor)\n                m_sizeChangedFromEditor = false;\n            else\n                UpdateVoxelHandProperties();\n        }\n\n        private void OnDistanceSliderChange(MyGuiControlSlider sliderSender)\n        {\n            if (sliderSender == m_voxelShapeDistanceSlider)\n            {\n                if (m_distanceChangedFromEditor)\n                    m_distanceChangedFromEditor = false;\n                else\n                    UpdateVoxelHandProperties();\n            }\n        }\n\n        private void OnRadioButtonSelectedChange(MyGuiControlRadioButtonGroup sender)\n        {\n            UpdateVoxelHandProperties();\n            RecreateDynamicProperties();\n        }\n\n        private void OnComboboxItemSelect()\n        {\n            if (m_canSelect)\n            {\n                UpdateVoxelHandProperties();\n            }\n        }\n\n        private void OnCheckboxChecked(MyGuiControlCheckbox sender)\n        {\n            if (sender.Checked)\n            {\n                // projected\n                m_voxelShapeDistanceSlider.SetBounds(MyVoxelConstants.MIN_PROJECTED_VOXEL_HAND_OFFSET, MyVoxelConstants.MAX_PROJECTED_VOXEL_HAND_OFFSET);\n                OnVoxelHandDistanceChanged(MyVoxelConstants.DEFAULT_PROJECTED_VOXEL_HAND_OFFSET);\n                m_voxelShapeDistanceLabel.UpdateText(MyTextsWrapper.Get(MyTextsWrapperEnum.EditVoxelHandShapeOffset).ToString());\n            }\n            else\n            {\n                // not projected\n                m_voxelShapeDistanceSlider.SetBounds(MyVoxelConstants.MIN_VOXEL_HAND_DISTANCE, MyVoxelConstants.MAX_VOXEL_HAND_DISTANCE);\n                OnVoxelHandDistanceChanged(MyVoxelConstants.DEFAULT_VOXEL_HAND_DISTANCE);\n                m_voxelShapeDistanceLabel.UpdateText(MyTextsWrapper.Get(MyTextsWrapperEnum.EditVoxelHandShapeDistance).ToString());\n            }\n\n            UpdateVoxelHandProperties();\n        }\n\n        private void UpdateVoxelHandProperties()\n        {\n            MyVoxelHandShapeType voxelHandShapeType = (MyVoxelHandShapeType)m_voxelShapeTypeRadioButtonGroup.GetSelectedKey().Value;\n            MyMwcVoxelHandModeTypeEnum modeType = (MyMwcVoxelHandModeTypeEnum)m_voxelShapeModeRadioButtonGroup.GetSelectedKey().Value;\n            MyMwcVoxelMaterialsEnum? materialEnum = (MyMwcVoxelMaterialsEnum)m_voxelShapeMaterialCombobox.GetSelectedKey();\n            MyEditorVoxelHand.SetVoxelProperties(voxelHandShapeType, m_voxelShapeDistanceSlider.GetValue(), modeType, materialEnum, m_isProjectedCheckbox.Checked, m_isProjectedOnWaypointCheckbox.Checked);\n        }        \n\n        #region Overriden methods\n        public override void Draw()\n        {\n           // LoadControls();\n            if (Visible)\n            {\n                foreach (MyGuiControlBase control in m_controls)\n                {\n                    control.Draw();\n                }\n            }\n        }\n\n        public override void Update()\n        {\n            foreach (MyGuiControlBase control in m_controls)\n            {\n                control.Update();\n            }\n        }\n\n        public override bool HandleInput(MyGuiInput input, bool hasKeyboardActiveControl, bool hasKeyboardActiveControlPrevious, bool receivedFocusInThisUpdate)\n        {\n            bool inputCaptured = base.HandleInput(input, hasKeyboardActiveControl, hasKeyboardActiveControlPrevious, receivedFocusInThisUpdate);\n            if (Visible /*&& !inputCaptured && CheckMouseOver()*/)\n            {                                \n                foreach (MyGuiControlBase control in m_sortedControlsByPriority)\n                {\n                    if (control.HandleInput(input, false, false, receivedFocusInThisUpdate))\n                    {\n                        inputCaptured = true;\n                        break;\n                    }\n                } \n                //Always steal input if clicked on voxel hand control area\n                return IsMouseOver() && input.IsAnyMousePress();\n            }\n            return false;\n        }\n                     /*\n        public override bool ContainsMouse()\n        {\n            foreach (MyGuiControlBase myGuiControlBase in m_sortedControlsByPriority)\n                if(myGuiControlBase.ContainsMouse())\n                    return true;\n            return false;\n        }\n\n        protected override bool CheckMouseOver()\n        {\n            foreach (MyGuiControlBase myGuiControlBase in m_sortedControlsByPriority)\n                if (myGuiControlBase.IsMouseOver())\n                    return true;\n            return false;\n        }              */\n\n        public override void SetPosition(Vector2 position)\n        {\n            Vector2 d = position - m_position;\n            foreach (var control in m_controls)\n                control.SetPosition(control.GetPosition() + d);\n            m_position = position;\n        }\n        #endregion\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Helpers/MyGuiEditorControlsBase.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.AppCode.Game.Editor;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.GUI.Helpers;\nusing MinerWars.AppCode.Game.GUI.ScreenEditor;\nusing MinerWars.AppCode.Game.GUI.ScreenEditor.Object3D;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Entities.Prefabs;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Prefabs;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Voxels;\nusing MinerWars.AppCode.Game.World;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.GUI.Core.TreeView;\nusing MinerWars.AppCode.Game.Entities.SubObjects;\n\nnamespace MinerWars.AppCode.Game.GUI.Helpers\n{\n    abstract class MyGuiEditorControlsBase\n    {\n        private static float BUTTON_SCALE = 0.58f;\n        private static Vector4 BUTTON_TEXT_COLOR = new Vector4(0.9f, 1, 1, 0.9f);\n        private static Vector4 BUTTON_BACKGROUND_COLOR = new Vector4(0.77f, 0.97f, 0.97f, 0.6f);                        \n\n        protected enum EditorToolBarButtonType\n        {\n            AddObjectButton,\n            EditObjectsButton,\n            ResetRotationButton,\n            CopySelectedButton,\n            SwitchGizmoSpaceButton,\n            SwitchGizmoModeButton,\n            LinkSnapPoints,\n            UnlinkSnapPoints,\n            ToggleSnapPoints,\n            SelectAllObjectsButton,\n            ExitSelectedButton,\n            EnterPrefabContainerButton,\n            AttachToCameraButton,\n            EnterVoxelHandButton,\n            ClearWholeSectorButton,\n            LoadSectorButton,\n            SaveSectorButton,\n            AdjustGridButton,\n            SunSettingsButton,\n            GroupsButton,\n            CopyToolButton,\n            OptionsButton,\n            EditProperties,\n            SelectAndHideButton,\n            ListWayPoints,\n            CorrectSnappedPrefabsButton,\n            SmallShipTemplates,\n            SelectDeactivatedEntityButton,\n            FindEntityButton,\n        }\n\n        // Add Object Controls\n        protected MyGuiControlPanel m_controlPanel;\n        protected MyGuiControlTreeView m_addObjectTreeView;\n        protected MyTreeViewItemDragAndDrop m_addObjectTreeViewdragDrop;\n        protected MyGuiControlTextbox m_filterTextbox;\n        protected MyGuiControlCheckbox m_snapPointFilterActive;\n\n        // Toolbar buttons\n        MyGuiControlButton m_addObjectButton;\n        MyGuiControlButton m_editObjectsButton;\n        MyGuiControlButton m_resetRotationButton;\n        MyGuiControlButton m_copySelectedButton;\n        MyGuiControlButton m_switchGizmoSpaceButton;\n        MyGuiControlButton m_switchGizmoModeButton;\n        MyGuiControlButton m_linkSnapPoints;\n        MyGuiControlButton m_toggleSnapPoints;\n        MyGuiControlButton m_selectAllObjectsButton;\n        MyGuiControlButton m_exitSelectedButton;\n        MyGuiControlButton m_enterPrefabContainerButton;\n        MyGuiControlButton m_attachToCameraButton;\n        MyGuiControlButton m_enterVoxelHandButton;\n        MyGuiControlButton m_clearWholeSectorButton;\n        MyGuiControlButton m_loadSectorButton;\n        MyGuiControlButton m_saveSectorButton;\n        //MyGuiControlButton m_adjustGridButton;\n        //MyGuiControlButton m_sunSettingsButton;\n        MyGuiControlButton m_groupsButton;\n        MyGuiControlButton m_copyToolButton;\n        MyGuiControlButton m_optionsButton;\n        MyGuiControlButton m_selectAndHideButton;\n        MyGuiControlButton m_editPropertiesButton;\n        MyGuiControlButton m_selectDeactivatedEntityButton;\n        MyGuiControlButton m_findEntityButton;\n        MyGuiControlButton m_listWayPointsButton;\n        MyGuiControlButton m_correctSnappedPrefabsButton;\n        MyGuiControlButton m_smallShipTemplates;\n\n        protected MyGuiControlButton[] m_toolbarButtons;\n\n        protected MyGuiControlEditVoxelHand m_editVoxelHand;\n\n        protected MyGuiControlEditLights m_editLights;\n\n        protected List<MyGuiControlBase> m_editorControls;\n        protected MyGuiScreenBase m_parentScreen;\n        protected MyPrefabSnapPoint m_activeSnapPointFilter;\n        protected string m_activeTextFilter;\n\n        private bool m_loadInDraw;\n\n        private bool m_isDemoUser;\n        private bool m_canAccessStoryEditor;\n\n        public MyGuiEditorControlsBase(MyGuiScreenBase parentScreen)\n        {\n            m_parentScreen = parentScreen;\n            m_editorControls = new List<MyGuiControlBase>(10);\n            m_toolbarButtons = new MyGuiControlButton[Enum.GetValues(typeof(EditorToolBarButtonType)).Length];\n\n            m_isDemoUser = MyClientServer.LoggedPlayer == null || MyClientServer.LoggedPlayer.IsDemoUser();\n            m_canAccessStoryEditor = MyClientServer.LoggedPlayer != null && MyClientServer.LoggedPlayer.GetCanAccessEditorForStory();\n        }\n\n        private MyGuiControlButton AddToolbarButton(EditorToolBarButtonType buttonType, MyTextsWrapperEnum text, StringBuilder tooltip, MyGuiControlButton.OnButtonClick onButtonClick)\n        {\n            var screenZero = MyGuiManager.GetNormalizedCoordinateFromScreenCoordinate_FULLSCREEN(new Vector2(0, 0));\n            int index = 0;\n            foreach (var item in m_toolbarButtons)\n            {\n                if (item != null)\n                    index++;\n            }\n            \n            Vector2 buttonPosition = screenZero + MyGuiConstants.TOOLBAR_PADDING;\n            Vector2 buttonSize = MyGuiConstants.TOOLBAR_BUTTON_SIZE;\n            Vector2 buttonOffset = new Vector2(buttonSize.X + MyGuiConstants.TOOLBAR_BUTTON_OFFSET, 0);\n\n            var button = new MyGuiControlButton(\n                m_parentScreen,\n                buttonPosition + buttonOffset * index,\n                buttonSize,\n                Vector4.One,\n                MyGuiManager.GetToolbarButton(),\n                MyGuiManager.GetToolbarButtonHover(),\n                MyGuiManager.GetToolbarButtonHover(),\n                text,\n                MyGuiConstants.TOOLBAR_TEXT_COLOR,\n                MyGuiConstants.TOOLBAR_TEXT_SCALE,\n                MyGuiControlButtonTextAlignment.CENTERED,\n                onButtonClick,\n                false,\n                MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP,\n                true,\n                false);\n            button.SetToolTip(tooltip);\n            button.SetHightlightType(MyGuiControlHighlightType.WHEN_CURSOR_OVER);\n            \n            if (GetEnabledButtons().Contains(buttonType) && button != null)\n            {\n                m_editorControls.Add(button);\n                m_toolbarButtons[(int) buttonType] = button;\n            }\n\n            return button;\n        }\n\n        protected abstract EditorToolBarButtonType[] GetEnabledButtons();\n\n        private void CreateButtons()\n        {\n            // Toolbar buttons init\n            m_addObjectButton = AddToolbarButton(EditorToolBarButtonType.AddObjectButton, MyTextsWrapperEnum.ToolbarAddObject, MyTextsWrapper.Get(MyTextsWrapperEnum.AddObject), OnAddObject);\n            m_editObjectsButton = AddToolbarButton(EditorToolBarButtonType.EditObjectsButton, MyTextsWrapperEnum.ToolbarEditObjects, new StringBuilder(MyTextsWrapper.Get(MyTextsWrapperEnum.EditObjects) + \" \\\\ \" + MyTextsWrapper.Get(MyTextsWrapperEnum.EditVoxelHand)), OnEditObjects);\n            m_resetRotationButton = AddToolbarButton(EditorToolBarButtonType.ResetRotationButton, MyTextsWrapperEnum.ToolbarResetRotation, MyTextsWrapper.Get(MyTextsWrapperEnum.ResetRotation), OnResetRotation);\n            m_copySelectedButton = AddToolbarButton(EditorToolBarButtonType.CopySelectedButton, MyTextsWrapperEnum.ToolbarCopySelected, MyTextsWrapper.Get(MyTextsWrapperEnum.CopySelected), OnCopySelected);\n            m_switchGizmoSpaceButton = AddToolbarButton(EditorToolBarButtonType.SwitchGizmoSpaceButton, MyTextsWrapperEnum.ToolbarSwitchGizmoSpace, MyTextsWrapper.Get(MyTextsWrapperEnum.SwitchGizmoSpace), OnSwitchGizmoSpace);\n            m_switchGizmoModeButton = AddToolbarButton(EditorToolBarButtonType.SwitchGizmoModeButton, MyTextsWrapperEnum.ToolbarSwitchGizmoMode, MyTextsWrapper.Get(MyTextsWrapperEnum.SwitchGizmoMode), OnSwitchGizmoMode);\n            m_linkSnapPoints = AddToolbarButton(EditorToolBarButtonType.LinkSnapPoints, MyTextsWrapperEnum.ToolbarLinkSnapPoints, new StringBuilder(MyTextsWrapper.Get(MyTextsWrapperEnum.LinkSnapPoints) + \" \\\\ \" + MyTextsWrapper.Get(MyTextsWrapperEnum.UnlinkSnapPoints)), OnLinkSnapPoints);\n            m_toggleSnapPoints = AddToolbarButton(EditorToolBarButtonType.ToggleSnapPoints, MyTextsWrapperEnum.ToolbarToggleSnapPoints, MyTextsWrapper.Get(MyTextsWrapperEnum.ToggleSnapPoints), OnToggleSnapPoints);\n            m_selectAllObjectsButton = AddToolbarButton(EditorToolBarButtonType.SelectAllObjectsButton, MyTextsWrapperEnum.ToolbarSelectAllObjects, MyTextsWrapper.Get(MyTextsWrapperEnum.SelectAllObjects), OnSelectAllObjects);\n            m_exitSelectedButton = AddToolbarButton(EditorToolBarButtonType.ExitSelectedButton, MyTextsWrapperEnum.ToolbarExitSelected, MyTextsWrapper.Get(MyTextsWrapperEnum.ExitSelected), OnExitSelected);\n            m_enterPrefabContainerButton = AddToolbarButton(EditorToolBarButtonType.EnterPrefabContainerButton, MyTextsWrapperEnum.ToolbarEnterPrefabContainer, new StringBuilder(MyTextsWrapper.Get(MyTextsWrapperEnum.EnterPrefabContainer) + \" \\\\ \" + MyTextsWrapper.Get(MyTextsWrapperEnum.ExitEditingMode)), OnEnterPrefabContainer);\n            m_attachToCameraButton = AddToolbarButton(EditorToolBarButtonType.AttachToCameraButton, MyTextsWrapperEnum.ToolbarAttachToCamera, MyTextsWrapper.Get(MyTextsWrapperEnum.AttachToCamera), OnAttachToCamera);\n            m_enterVoxelHandButton = AddToolbarButton(EditorToolBarButtonType.EnterVoxelHandButton, MyTextsWrapperEnum.ToolbarEnterVoxelHand, new StringBuilder(MyTextsWrapper.Get(MyTextsWrapperEnum.EnterVoxelHand) + \" \\\\ \" + MyTextsWrapper.Get(MyTextsWrapperEnum.ExitVoxelHand)), OnEnterVoxelHand);\n            m_clearWholeSectorButton = AddToolbarButton(EditorToolBarButtonType.ClearWholeSectorButton, MyTextsWrapperEnum.ToolbarClearWholeSector, MyTextsWrapper.Get(MyTextsWrapperEnum.ClearWholeSector), OnClearWholeSector);\n            m_loadSectorButton = AddToolbarButton(EditorToolBarButtonType.LoadSectorButton, MyTextsWrapperEnum.ToolbarLoadSector, MyTextsWrapper.Get(MyTextsWrapperEnum.LoadSector), OnLoadSector);\n            m_saveSectorButton = AddToolbarButton(EditorToolBarButtonType.SaveSectorButton, MyTextsWrapperEnum.ToolbarSaveSector, MyTextsWrapper.Get(MyTextsWrapperEnum.SaveSector), OnSaveSector);\n            //m_adjustGridButton          = AddToolbarButton(EditorToolBarButtonType.AdjustGridButton, MyTextsWrapper.Get(MyTextsWrapperEnum.AdjustGrid), MyGuiManager.GetToolbarAdjustGridTexture(), OnAdjustGrid);\n            //m_sunSettingsButton = AddToolbarButton(EditorToolBarButtonType.SunSettingsButton, MyTextsWrapperEnum.ToolbarSunSettings, MyTextsWrapper.Get(MyTextsWrapperEnum.SunSettings), OnSettings);\n            m_groupsButton = AddToolbarButton(EditorToolBarButtonType.GroupsButton, MyTextsWrapperEnum.ToolbarEditorGroups, MyTextsWrapper.Get(MyTextsWrapperEnum.EditorGroups), OnGroups);\n            m_copyToolButton = AddToolbarButton(EditorToolBarButtonType.CopyToolButton, MyTextsWrapperEnum.ToolbarCopyTool, MyTextsWrapper.Get(MyTextsWrapperEnum.CopyTool), OnCopyTool);\n            m_optionsButton = AddToolbarButton(EditorToolBarButtonType.OptionsButton, MyTextsWrapperEnum.ToolbarEditorOptions, MyTextsWrapper.Get(MyTextsWrapperEnum.EditorOptions), OnOptions);\n            m_selectAndHideButton = AddToolbarButton(EditorToolBarButtonType.SelectAndHideButton, MyTextsWrapperEnum.ToolbarEditorSelectAndHide, MyTextsWrapper.Get(MyTextsWrapperEnum.EditorSelectAndHide), OnSelectAndHide);\n            m_editPropertiesButton = AddToolbarButton(EditorToolBarButtonType.EditProperties, MyTextsWrapperEnum.ToolbarEditProperties, MyTextsWrapper.Get(MyTextsWrapperEnum.EditProperties), OnEditProperties);\n            m_listWayPointsButton = AddToolbarButton(EditorToolBarButtonType.ListWayPoints, MyTextsWrapperEnum.ToolbarWaypoints, MyTextsWrapper.Get(MyTextsWrapperEnum.Waypoints), OnListWaypoints);\n            m_correctSnappedPrefabsButton = AddToolbarButton(EditorToolBarButtonType.CorrectSnappedPrefabsButton, MyTextsWrapperEnum.ToolbarCorrectSnappedPrefabs, MyTextsWrapper.Get(MyTextsWrapperEnum.CorrectSnappedPrefabs), OnCorrectSnappedPrefabs);\n            m_smallShipTemplates = AddToolbarButton(EditorToolBarButtonType.SmallShipTemplates, MyTextsWrapperEnum.ToolbarSmallShipTemplates, MyTextsWrapper.Get(MyTextsWrapperEnum.SmallShipTemplates), OnSmallShipTemplates);\n            m_selectDeactivatedEntityButton = AddToolbarButton(EditorToolBarButtonType.SelectDeactivatedEntityButton, MyTextsWrapperEnum.ToolbarSelectDeactivatedEntity, MyTextsWrapper.Get(MyTextsWrapperEnum.SelectDeactivatedEntity), OnSelectDeactivatedEntity);\n            m_findEntityButton = AddToolbarButton(EditorToolBarButtonType.FindEntityButton, MyTextsWrapperEnum.FindEntityByID, MyTextsWrapper.Get(MyTextsWrapperEnum.FindEntityByID), OnFindEntity);\n\n            foreach (MyGuiControlBase control in m_editorControls)\n            {\n                control.DrawWhilePaused = false;\n            }\n            UpdateToolbarButtonsSizeAndPosition();\n        }\n\n        protected virtual void CreateControls()\n        {            \n            CreateButtons();                     \n            var screenZero = MyGuiManager.GetNormalizedCoordinateFromScreenCoordinate_FULLSCREEN(new Vector2(0, 0));\n            var screenMax = MyGuiManager.GetNormalizedCoordinateFromScreenCoordinate_FULLSCREEN(new Vector2(MyMinerGame.ScreenSize.X, MyMinerGame.ScreenSize.Y));\n\n            var textBoxSize = MyGuiConstants.TEXTBOX_MEDIUM_SIZE + new Vector2(30f / 1600f,0);\n            var treeViewSize = new Vector2(textBoxSize.X, screenMax.Y - (MyGuiConstants.TOOLBAR_PADDING.Y * 6 + textBoxSize.Y + MyGuiConstants.TOOLBAR_BUTTON_SIZE.Y));\n            var panelSize = treeViewSize + new Vector2(MyGuiConstants.TOOLBAR_PADDING.X * 2, MyGuiConstants.TOOLBAR_PADDING.Y * 3) + new Vector2(0, textBoxSize.Y);\n\n            var textBoxPosition = screenZero + new Vector2(MyGuiConstants.TOOLBAR_PADDING.Y * 2, MyGuiConstants.TOOLBAR_PADDING.Y * 3 + MyGuiConstants.TOOLBAR_BUTTON_SIZE.Y);\n            var treeViewPosition = textBoxPosition + new Vector2(0, textBoxSize.Y + MyGuiConstants.TOOLBAR_PADDING.Y);\n            var panelPosition = textBoxPosition - new Vector2(MyGuiConstants.TOOLBAR_PADDING.Y, MyGuiConstants.TOOLBAR_PADDING.Y);\n\n            // Add treeview and add button panel\n            m_controlPanel = new MyGuiControlPanel(m_parentScreen,\n                    panelPosition + panelSize / 2,\n                    panelSize,\n                    MyGuiConstants.TREEVIEW_BACKGROUND_COLOR,\n                    null, null, null, null,\n                    MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER);\n            m_editorControls.Add(m_controlPanel);\n\n            m_addObjectTreeViewdragDrop = new MyTreeViewItemDragAndDrop(m_parentScreen);\n            m_addObjectTreeViewdragDrop.Drop = OnDragDrop;\n\n            // Add object treeView\n            m_addObjectTreeView = new MyGuiControlTreeView(\n                m_parentScreen,\n                treeViewPosition + treeViewSize / 2,\n                treeViewSize,\n                MyGuiConstants.TREEVIEW_BACKGROUND_COLOR, \n                false);\n            m_editorControls.Add(m_addObjectTreeView);\n\n            // Add treeView filter textBox\n            m_filterTextbox = new MyGuiControlTextbox(m_parentScreen,\n                textBoxPosition + textBoxSize / 2,\n                MyGuiControlPreDefinedSize.MEDIUM,\n                string.Empty, 80,\n                MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiControlTextboxType.NORMAL, false);\n            m_editorControls.Add(m_filterTextbox);\n            MyGuiScreenGamePlay.Static.SetControlIndex(1);\n\n            // Dragdrop Control must be last (draw over other controls)\n            m_editorControls.Add(m_addObjectTreeViewdragDrop);\n\n            Vector2 editVoxelHandPanelSize = new Vector2(panelSize.X * 1.4f, panelSize.Y);\n            m_editVoxelHand = new MyGuiControlEditVoxelHand(m_parentScreen, panelPosition + editVoxelHandPanelSize / 2f, editVoxelHandPanelSize, MyGuiConstants.TREEVIEW_BACKGROUND_COLOR);\n            m_editorControls.Add(m_editVoxelHand);\n\n            Vector2 editLightsSize = new Vector2(0.48f, 0.925f);\n            m_editLights = new MyGuiControlEditLights(m_parentScreen, panelPosition + editLightsSize / 2, editLightsSize, MyGuiConstants.TREEVIEW_BACKGROUND_COLOR);\n            m_editorControls.Add(m_editLights);\n            m_editLights.Visible = false;\n            foreach (MyGuiControlBase control in m_editorControls)\n            {\n                control.DrawWhilePaused = false;\n            }\n        }\n\n        private void UpdateToolbarButtonsSizeAndPosition()\n        {\n            int buttonCount = 0;\n            for (int index = 0; index < m_toolbarButtons.Length; index++)\n            {\n                MyGuiControlButton button = m_toolbarButtons[index];\n                if (button != null)\n                {\n                    buttonCount++;\n                }\n            }\n            Vector2 screenCoords = MyGuiManager.GetNormalizedCoordinateFromScreenCoordinate(new Vector2(MyMinerGame.ScreenSize.X, 0f));\n\n            var screenZero = MyGuiManager.GetNormalizedCoordinateFromScreenCoordinate_FULLSCREEN(new Vector2(0, 0));\n            \n            Vector2 buttonPosition = screenZero + MyGuiConstants.TOOLBAR_PADDING;\n            float offset = MyGuiConstants.TOOLBAR_BUTTON_OFFSET;\n            Vector2 buttonSize = MyGuiConstants.TOOLBAR_BUTTON_SIZE;\n            float toolbarLength = buttonPosition.X + buttonCount * (buttonSize.X + offset);\n\n            float scale = 1;\n            if (toolbarLength > 1)\n            {\n                scale = screenCoords.X / toolbarLength;\n            }\n            //offset *= scale;\n            buttonSize *= scale;\n\n            Vector2 buttonOffset = new Vector2(buttonSize.X + offset, 0);\n            int buttonIndexOffset = 0;\n            for (int index = 0; index < m_toolbarButtons.Length; index++)\n            {                 \n                MyGuiControlButton button = m_toolbarButtons[index];\n                if (button != null)\n                {\n                    button.SetPosition(buttonPosition + buttonOffset * buttonIndexOffset + buttonSize / 2);\n                    button.SetSize(buttonSize);\n                    button.SetTextScale(MyGuiConstants.TOOLBAR_TEXT_SCALE * scale);\n                    buttonIndexOffset++;\n                }\n            }\n        }\n\n        protected abstract void FillTreeView();\n\n        #region TreeView helpers methods\n        protected void AddPrefabType(MyTreeViewItem parentItem, MyMwcObjectBuilder_Prefab_AppearanceEnum appearanceTextureEnum, MyTextsWrapperEnum typeText, BuildTypesEnum buildTypesEnum, \n            CategoryTypesEnum[] categories, MyTexture2D icon, Vector2 iconSize, MyTexture2D expand, MyTexture2D collapse, \n            Vector2 expandIconSize)\n        {\n            var prefabTypeItem = parentItem == null ?\n                m_addObjectTreeView.AddItem(MyTextsWrapper.Get(typeText), icon, iconSize, expand, collapse, expandIconSize) :\n                parentItem.AddItem(MyTextsWrapper.Get(typeText), icon, iconSize, expand, collapse, expandIconSize);\n\n            foreach (var categoryTypesEnum in categories)\n            {\n                var categoryItem = prefabTypeItem.AddItem(MyGuiPrefabHelpers.GetMyGuiCategoryTypeHelper(categoryTypesEnum).Description, icon, \n                    iconSize, expand, collapse, expandIconSize);\n                AddPrefabItems(categoryItem, appearanceTextureEnum, buildTypesEnum, categoryTypesEnum);\n            }\n        }\n\n        protected abstract void AddPrefabItems(MyTreeViewItem parentItem, MyMwcObjectBuilder_Prefab_AppearanceEnum appearanceTextureEnum, BuildTypesEnum buildType, CategoryTypesEnum categoryType);                   \n\n        protected void TryExpand(StringBuilder[] nodePath)\n        {\n            MyTreeViewItem item = null;\n            for (int i = 0; i < nodePath.Length; i++)\n            {\n                if (item == null)\n                {\n                    item = m_addObjectTreeView.GetItem(nodePath[i]);\n                }\n                else\n                {\n                    item = item.GetItem(nodePath[i]);\n                }\n\n                if (item != null && item.GetItemCount() > 0)\n                {\n                    item.IsExpanded = true;\n                }\n            }\n        }\n        #endregion\n\n        public void LoadData()\n        {\n        }\n\n        public virtual void LoadContent()\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyGuiEditorControlsBase::LoadContent\");\n\n            CreateControls();\n            SetAddObjectVisibility(true);\n            \n            m_loadInDraw = true;\n\n            if (MyFakes.MWBUILDER)\n            {\n                OnAddObject(m_addObjectButton);\n                OnEnterVoxelHand(m_enterVoxelHandButton);\n\n                foreach (var editorControl in m_editorControls)\n                {\n                    //editorControl.Visible = false;\n                }\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        public virtual void UnloadContent()\n        {\n            for (int i = 0; i < m_toolbarButtons.Length; i++)\n            {\n                m_toolbarButtons[i] = null;\n            }\n            if (m_editorControls != null) m_editorControls.Clear();\n        }\n\n        public virtual void Draw()\n        {\n            if (m_loadInDraw)\n            {\n                FillTreeView();\n                m_loadInDraw = false;\n            }\n        }\n\n        private bool CheckContextAction(MyGuiContextMenuHelper contextHelper, MyGuiContextMenuItemActionType action)\n        {\n            return contextHelper != null && contextHelper.IsActionTypeAvailable(action);\n        }\n\n        private bool CheckContextAction(MyGuiContextMenuItemActionType action)\n        {\n            var editorState = MyEditor.GetCurrentState();\n            var contextHelper = MyGuiContextMenuHelpers.GetEditorContextMenuHelper(editorState);\n            return contextHelper != null && contextHelper.IsActionTypeAvailable(action);\n        }\n\n        public void RefreshTreeView()\n        {\n            FilterAddObjectTree(MyEditorGizmo.SelectedSnapPoint);\n        }\n\n        public virtual void Update()\n        {\n            FilterAddObjectTree(MyEditorGizmo.SelectedSnapPoint);\n\n            // Get editor state and allowed context action\n            var notDragging = !m_addObjectTreeViewdragDrop.Dragging;\n            var editorState = MyEditor.GetCurrentState();\n            var contextHelper = MyGuiContextMenuHelpers.GetEditorContextMenuHelper(editorState);\n\n            // Choose editor state dependent textures\n            var cameraText = editorState == MyEditorStateEnum.ATTACHED ? MyTextsWrapperEnum.ToolbarDetachFromCamera : MyTextsWrapperEnum.ToolbarAttachToCamera;\n            var enterPrefabContainerText = CheckContextAction(contextHelper, MyGuiContextMenuItemActionType.EXIT_EDITING_MODE) ? MyTextsWrapperEnum.ToolbarExitEditingMode : MyTextsWrapperEnum.ToolbarEnterPrefabContainer;\n            var enterVoxelHandText = editorState == MyEditorStateEnum.VOXEL_HAND_ENABLED ? MyTextsWrapperEnum.ToolbarExitVoxelHand : MyTextsWrapperEnum.ToolbarEnterVoxelHand;\n            var showSnapPointsText = MyEditor.Static.ShowSnapPoints ? MyTextsWrapperEnum.ToolbarHideSnapPoints : MyTextsWrapperEnum.ToolbarShowSnapPoints;\n            var linkSnapPointsText = MyEditor.Static.CanUnlinkSnapPoints(MyEditorGizmo.SelectedSnapPoint) ? MyTextsWrapperEnum.ToolbarUnlinkSnapPoints : MyTextsWrapperEnum.ToolbarLinkSnapPoints;\n\n            // Change look of editor state dependent buttons\n            m_attachToCameraButton.SetTextEnum(cameraText);\n            m_enterPrefabContainerButton.SetTextEnum(enterPrefabContainerText);\n            m_enterVoxelHandButton.SetTextEnum(enterVoxelHandText);\n            m_linkSnapPoints.SetTextEnum(linkSnapPointsText);\n\n            // Enable/Disable buttons (context)\n            m_addObjectButton.Enabled = notDragging &&\n               (CheckContextAction(contextHelper, MyGuiContextMenuItemActionType.ADD_OBJECT) ||\n                CheckContextAction(contextHelper, MyGuiContextMenuItemActionType.EXIT_VOXEL_HAND));\n            //m_editObjectsButton.Enabled = notDragging &&\n            //   ((CheckContextAction(contextHelper, MyGuiContextMenuItemActionType.EDIT_SELECTED) && MyEditor.Static.CanEditSelected()) ||\n            //    CheckContextAction(contextHelper, MyGuiContextMenuItemActionType.EDIT_VOXEL_HAND));\n            m_editObjectsButton.Enabled = notDragging &&\n               (CheckContextAction(contextHelper, MyGuiContextMenuItemActionType.EDIT_SELECTED) && MyEditor.Static.CanEditSelected());\n            m_resetRotationButton.Enabled = notDragging && CheckContextAction(contextHelper, MyGuiContextMenuItemActionType.RESET_ROTATION);\n            m_copySelectedButton.Enabled = notDragging && CheckContextAction(contextHelper, MyGuiContextMenuItemActionType.COPY_SELECTED);\n            m_switchGizmoSpaceButton.Enabled = notDragging && CheckContextAction(contextHelper, MyGuiContextMenuItemActionType.SWITCH_GIZMO_SPACE);\n            m_switchGizmoModeButton.Enabled = notDragging && CheckContextAction(contextHelper, MyGuiContextMenuItemActionType.SWITCH_GIZMO_MODE);\n            m_linkSnapPoints.Enabled = notDragging && MyEditorGizmo.SelectedSnapPoint != null;\n            m_toggleSnapPoints.Enabled = notDragging && CheckContextAction(contextHelper, MyGuiContextMenuItemActionType.TOGGLE_SNAP_POINTS);\n            m_selectAllObjectsButton.Enabled = notDragging && CheckContextAction(contextHelper, MyGuiContextMenuItemActionType.SELECT_ALL_OBJECTS);\n            m_exitSelectedButton.Enabled = notDragging && CheckContextAction(contextHelper, MyGuiContextMenuItemActionType.EXIT_SELECTED);\n            m_enterPrefabContainerButton.Enabled = notDragging &&\n               (CheckContextAction(contextHelper, MyGuiContextMenuItemActionType.ENTER_PREFAB_CONTAINER) ||\n                CheckContextAction(contextHelper, MyGuiContextMenuItemActionType.EXIT_EDITING_MODE));\n            m_attachToCameraButton.Enabled = notDragging &&\n               (CheckContextAction(contextHelper, MyGuiContextMenuItemActionType.ATTACH_TO_CAMERA) ||\n                CheckContextAction(contextHelper, MyGuiContextMenuItemActionType.DETACH_FROM_CAMERA));\n            m_enterVoxelHandButton.Enabled = notDragging &&\n               (CheckContextAction(contextHelper, MyGuiContextMenuItemActionType.ENTER_VOXEL_HAND) ||\n                CheckContextAction(contextHelper, MyGuiContextMenuItemActionType.EXIT_VOXEL_HAND));\n            m_clearWholeSectorButton.Enabled = notDragging && CheckContextAction(contextHelper, MyGuiContextMenuItemActionType.CLEAR_WHOLE_SECTOR);\n            m_loadSectorButton.Enabled = notDragging && CheckContextAction(contextHelper, MyGuiContextMenuItemActionType.LOAD_SECTOR) && !m_isDemoUser;\n            m_saveSectorButton.Enabled = notDragging && CheckContextAction(contextHelper, MyGuiContextMenuItemActionType.SAVE_SECTOR) && MySession.CanBeSaved(false, MyGuiScreenGamePlay.Static.GetSectorIdentifier(), true);\n            MyTextsWrapperEnum? isDemoS = null;\n            if (MyClientServer.LoggedPlayer != null && MyClientServer.LoggedPlayer.IsDemoUser()) isDemoS = MyTextsWrapperEnum.NotAvailableInDemoMode;\n            m_saveSectorButton.AccessForbiddenReason = isDemoS;\n            m_loadSectorButton.AccessForbiddenReason = isDemoS;\n            //m_adjustGridButton.Enabled = notDragging && CheckContextAction(contextHelper, MyGuiContextMenuItemActionType.ADJUST_GRID);\n            //m_sunSettingsButton.Enabled = false; // atm. disable, SUN_SETTINGS + FOG_SETTINGS\n            m_groupsButton.Enabled = notDragging;\n            m_copyToolButton.Enabled = notDragging;\n            m_optionsButton.Enabled = notDragging;\n            m_selectAndHideButton.Enabled = notDragging;\n            m_editPropertiesButton.Enabled = notDragging && CheckContextAction(contextHelper, MyGuiContextMenuItemActionType.EDIT_PROPERTIES) && \n                MyGuiScreenEditorEditProperties.CanEditProperties(MyEditorGizmo.SelectedEntities);\n            m_correctSnappedPrefabsButton.Enabled = notDragging && CheckContextAction(contextHelper, MyGuiContextMenuItemActionType.CORRECT_SNAPPED_PREFABS);\n            m_selectDeactivatedEntityButton.Enabled = notDragging;\n            m_findEntityButton.Enabled = notDragging;\n\n            if (!CheckContextAction(contextHelper, MyGuiContextMenuItemActionType.ADD_OBJECT) && m_addObjectTreeView.Visible)\n            {\n                SetAddObjectVisibility(false);\n            }\n            SetEditVoxelHandVisibility(CheckContextAction(contextHelper, MyGuiContextMenuItemActionType.EDIT_VOXEL_HAND));\n            if (m_editVoxelHand.Visible && MyEditorGizmo.IsAnyEntitySelected())\n            {\n                if (!MyFakes.MWBUILDER)\n                {\n                    if (!(MyEditorVoxelHand.SelectedVoxelMap != null && MyEditorGizmo.SelectedEntities.Count == 1 && MyEditorGizmo.SelectedEntities[0] == MyEditorVoxelHand.SelectedVoxelMap))\n                    {\n                        MyEditor.Static.PerformContextMenuAction(MyGuiContextMenuItemActionType.EXIT_SELECTED);\n\n                        if (MyEditorVoxelHand.SelectedVoxelMap != null)\n                        {\n                            MyEditorGizmo.AddEntityToSelection(MyEditorVoxelHand.SelectedVoxelMap);\n                        }\n                    }\n                }\n            }\n        }\n\n        protected virtual void SetAddObjectVisibility(bool visible)\n        {\n            m_addObjectTreeView.Visible = visible;\n            m_controlPanel.Visible = visible;\n            m_filterTextbox.Visible = visible;\n\n            if (visible && m_editLights.Visible)\n            {\n                m_editLights.RestoreOriginalValues();\n                m_editLights.Visible = false;\n            }\n        }\n\n        private void SetEditVoxelHandVisibility(bool visible)\n        {           \n            m_editVoxelHand.Visible = visible;\n        }        \n\n        //public void AddEditorControlsToList(ref List<MyGuiControlBase> addToControlsList)\n        public void AddEditorControlsToList(MyGuiControls addToControlsList)\n        {\n            if (addToControlsList != null)\n            {\n                foreach (MyGuiControlBase control in m_editorControls)\n                {\n                    addToControlsList.Add(control);\n                }\n            }\n        }\n\n        //public void RemoveEditorControlsFromList(ref List<MyGuiControlBase> removeFromControlsList)\n        public void RemoveEditorControlsFromList(MyGuiControls removeFromControlsList)\n        {\n            if (removeFromControlsList != null)\n            {\n                foreach (MyGuiControlBase control in m_editorControls)\n                {\n                    removeFromControlsList.Remove(control);\n                }\n            }\n        }                \n\n        #region Toolbar button Handlers\n        public void OnAddObject(MyGuiControlButton sender)\n        {\n            if (CheckContextAction(MyGuiContextMenuItemActionType.EXIT_VOXEL_HAND))\n            {\n                MyEditor.Static.PerformContextMenuAction(MyGuiContextMenuItemActionType.EXIT_VOXEL_HAND);\n            }\n            SetAddObjectVisibility(!m_addObjectTreeView.Visible);\n        }\n\n        private void OnEditObjects(MyGuiControlButton sender)\n        {            \n            MyEditor.Static.PerformContextMenuAction(MyGuiContextMenuItemActionType.EDIT_SELECTED);\n            //MyEditor.Static.PerformContextMenuAction(CheckContextAction(MyGuiContextMenuItemActionType.EDIT_VOXEL_HAND) ?\n            //    MyGuiContextMenuItemActionType.EDIT_VOXEL_HAND : MyGuiContextMenuItemActionType.EDIT_SELECTED);\n        }\n\n        private void OnResetRotation(MyGuiControlButton sender)\n        {\n            MyEditor.Static.PerformContextMenuAction(MyGuiContextMenuItemActionType.RESET_ROTATION);\n        }\n\n        private void OnCopySelected(MyGuiControlButton sender)\n        {\n            MyEditor.Static.PerformContextMenuAction(MyGuiContextMenuItemActionType.COPY_SELECTED);\n        }\n\n        private void OnSwitchGizmoSpace(MyGuiControlButton sender)\n        {\n            MyEditor.Static.PerformContextMenuAction(MyGuiContextMenuItemActionType.SWITCH_GIZMO_SPACE);\n        }\n\n        private void OnSwitchGizmoMode(MyGuiControlButton sender)\n        {\n            MyEditor.Static.PerformContextMenuAction(MyGuiContextMenuItemActionType.SWITCH_GIZMO_MODE);\n        }\n\n        private void OnShowSnapPoints(MyGuiControlButton sender)\n        {\n            MyEditor.Static.ShowSnapPoints = !MyEditor.Static.ShowSnapPoints;\n        }\n\n        private void OnLinkSnapPoints(MyGuiControlButton sender)\n        {\n            if (MyEditorGizmo.SelectedSnapPoint != null)\n\t        {\n                if (MyEditor.Static.CanUnlinkSnapPoints(MyEditorGizmo.SelectedSnapPoint))\n\t            {\n                    MyEditor.Static.UnlinkSnapPoints();\n\t            }\n                else\n                {\n                    MyEditor.Static.LinkSnapPoints();\n                }\n\t        }\n        }\n\n        private void OnToggleSnapPoints(MyGuiControlButton sender)\n        {\n            MyEditor.Static.PerformContextMenuAction(MyGuiContextMenuItemActionType.TOGGLE_SNAP_POINTS);\n        }\n\n        private void OnSelectAllObjects(MyGuiControlButton sender)\n        {\n            MyEditor.Static.PerformContextMenuAction(MyGuiContextMenuItemActionType.SELECT_ALL_OBJECTS);\n        }\n\n        private void OnExitSelected(MyGuiControlButton sender)\n        {\n            MyEditor.Static.PerformContextMenuAction(MyGuiContextMenuItemActionType.EXIT_SELECTED);\n        }\n\n        private void OnEnterPrefabContainer(MyGuiControlButton sender)\n        {\n            MyEditor.Static.PerformContextMenuAction(CanExitSelectionMode() ?\n                MyGuiContextMenuItemActionType.EXIT_EDITING_MODE : MyGuiContextMenuItemActionType.ENTER_PREFAB_CONTAINER);\n        }\n\n        private void OnAttachToCamera(MyGuiControlButton sender)\n        {\n            MyEditor.Static.PerformContextMenuAction(MyEditor.GetCurrentState() == MyEditorStateEnum.ATTACHED ?\n                MyGuiContextMenuItemActionType.DETACH_FROM_CAMERA : MyGuiContextMenuItemActionType.ATTACH_TO_CAMERA);\n        }\n\n        private void OnEnterVoxelHand(MyGuiControlButton sender)\n        {            \n            MyEditor.Static.PerformContextMenuAction(MyEditor.GetCurrentState() == MyEditorStateEnum.VOXEL_HAND_ENABLED ?\n                MyGuiContextMenuItemActionType.EXIT_VOXEL_HAND : MyGuiContextMenuItemActionType.ENTER_VOXEL_HAND);\n        }\n\n        private void OnClearWholeSector(MyGuiControlButton sender)\n        {\n\n            if (MyEntities.GetEntities().Count > 1)\n            {\n                MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.EditorClearWholeSector, MyTextsWrapperEnum.ClearWholeSector, MyTextsWrapperEnum.Yes, MyTextsWrapperEnum.No,\n                    mbReturn =>\n                    {\n                        if (mbReturn == MyGuiScreenMessageBoxCallbackEnum.YES)\n                        {\n                            MyEditor.Static.PerformContextMenuAction(MyGuiContextMenuItemActionType.CLEAR_WHOLE_SECTOR);\n                        }\n                    }));\n            }\n            else\n                MyEditor.Static.PerformContextMenuAction(MyGuiContextMenuItemActionType.CLEAR_WHOLE_SECTOR);\n        }\n\n        private void OnLoadSector(MyGuiControlButton sender)\n        {\n            MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.EditorLoadSectorMessage, MyTextsWrapperEnum.LoadSector, MyTextsWrapperEnum.Yes, MyTextsWrapperEnum.No,\n                mbReturn =>\n                {\n                    if(mbReturn == MyGuiScreenMessageBoxCallbackEnum.YES)\n                    {\n                        MyEditor.Static.PerformContextMenuAction(MyGuiContextMenuItemActionType.LOAD_SECTOR); \n                    }\n                }));\n        }\n\n        private void OnSaveSector(MyGuiControlButton sender)\n        {\n            MyGuiManager.AddScreen(new MyGuiScreenSaveSector());\n        }\n\n        private void OnAdjustGrid(MyGuiControlButton sender)\n        {\n            MyEditor.Static.PerformContextMenuAction(MyGuiContextMenuItemActionType.ADJUST_GRID);\n        }\n\n        private void OnSettings(MyGuiControlButton sender)\n        {\n            MyEditor.Static.PerformContextMenuAction(MyGuiContextMenuItemActionType.SUN_SETTINGS);\n        }\n\n        private void OnGroups(MyGuiControlButton sender)\n        {\n            MyGuiManager.AddScreen(new MyGuiScreenEditorGroups());\n        }\n\n        private void OnCopyTool(MyGuiControlButton sender)\n        {\n            MyGuiManager.AddScreen(new MyGuiScreenEditorCopyToolSelectSector());\n        }\n\n        private void OnFindEntity(MyGuiControlButton sender)\n        {\n            MyGuiManager.AddScreen(new MyGuiScreenInputString(EntityIDInput, MyTextsWrapperEnum.Find));\n        }\n\n        void EntityIDInput(ScreenResult result, string resultText)\n        {\n            if (result == ScreenResult.Ok)\n            {\n                uint entityID;\n                if (uint.TryParse(resultText, out entityID))\n                {\n                    var entity = MyEntities.GetEntityByIdOrNull(new MyEntityIdentifier(entityID));\n                    if (entity != null)\n                    {\n                        var position = entity.GetPosition() - entity.WorldVolume.Radius * entity.GetForward();\n                        MySpectator.SetViewMatrix(Matrix.CreateLookAt(position, entity.GetPosition(), entity.GetUp()));\n\n                        MyEditorGizmo.AddEntityToSelection(entity);\n                    }\n                    else\n                    {\n                        MyGuiScreenMessageBox.Show(MyTextsWrapperEnum.EntityIsNotExist, type: MyMessageBoxType.ERROR);\n                    }\n                }\n                else\n                {\n                    MyGuiScreenMessageBox.Show(MyTextsWrapperEnum.WrongNumberFormat, type:MyMessageBoxType.ERROR);\n                }\n            }\n        }\n\n        private void OnOptions(MyGuiControlButton sender)\n        {\n            MyGuiManager.AddScreen(new MyGuiScreenEditorOptions());\n        }\n\n        private void OnSelectAndHide(MyGuiControlButton sender)\n        {\n            MyGuiManager.AddScreen(new MyGuiScreenEditorSelectAndHide());\n        }\n\n        private void OnCorrectSnappedPrefabs(MyGuiControlButton sender)\n        {\n            MyEditor.Static.PerformContextMenuAction(MyGuiContextMenuItemActionType.CORRECT_SNAPPED_PREFABS);\n        }\n\n        private void OnSmallShipTemplates(MyGuiControlButton sender)\n        {\n            MyGuiManager.AddScreen(new MyGuiScreenSmallShipTemplates());\n        }\n\n        private void OnEditProperties(MyGuiControlButton sender)\n        {\n            if (MyEditorGizmo.SelectedEntities.Count > 0) \n            {\n                MyGuiManager.AddScreen(new MyGuiScreenEditorEditProperties(MyEditorGizmo.SelectedEntities));\n            }\n            else if (MyEditor.Static.GetEditedPrefabContainer() != null) \n            {\n                MyGuiManager.AddScreen(new MyGuiScreenEditorEditProperties(MyEditor.Static.GetEditedPrefabContainer()));\n            }            \n        }\n\n        private void OnSelectDeactivatedEntity(MyGuiControlButton sender) \n        {\n            MyGuiManager.AddScreen(new MyGuiScreenSelectDeactivatedEntity());\n        }\n\n        private void OnListWaypoints(MyGuiControlButton sender)\n        {\n            MyGuiManager.AddScreen(new MyGuiScreenEditorWayPointList());\n        }\n\n        #endregion\n\n        protected abstract void OnDragDrop(object sender, EventArgs ea);        \n\n        protected abstract void FilterAddObjectTree(MyPrefabSnapPoint myPrefabSnapPoint);\n\n        private bool CanExitSelectionMode()\n        {\n            return CheckContextAction(MyGuiContextMenuHelpers.GetEditorContextMenuHelper(MyEditor.GetCurrentState()), MyGuiContextMenuItemActionType.EXIT_EDITING_MODE);\n        }\n\n        public bool TryExitSelected()\n        {\n            if (m_exitSelectedButton.Enabled)\n            {\n                OnExitSelected(null);\n                return true;\n            }\n            return false;\n        }\n\n        public bool TryExitSelectionMode()\n        {\n            if (CanExitSelectionMode())\n            {\n                OnEnterPrefabContainer(null);\n                return true;\n            }\n            return false;\n        }\n\n        private void MirrorSelectedObjects()\n        {\n            if (MyEditorGizmo.SelectedEntities.Count == 0)\n            {\n                return;\n            }\n\n            Vector3 center = Vector3.Zero;\n            foreach (var entity in MyEditorGizmo.SelectedEntities)\n            {\n                center += entity.GetPosition();\n            }\n            center = center / MyEditorGizmo.SelectedEntities.Count;\n\n            foreach (var entity in MyEditorGizmo.SelectedEntities)\n            {\n                var deltaPosition = entity.GetPosition() - center;\n                entity.WorldMatrix *= Matrix.CreateTranslation(-center) *\n                    Matrix.CreateScale(-1, 1, 1) *\n                    Matrix.CreateTranslation(center);\n            }\n        }\n\n        public virtual void UpdateScreenSize()\n        {\n            var screenZero = MyGuiManager.GetNormalizedCoordinateFromScreenCoordinate_FULLSCREEN(new Vector2(0, 0));\n            var screenMax = MyGuiManager.GetNormalizedCoordinateFromScreenCoordinate_FULLSCREEN(new Vector2(MyMinerGame.ScreenSize.X, MyMinerGame.ScreenSize.Y));\n\n            var textBoxSize = MyGuiConstants.TEXTBOX_MEDIUM_SIZE;\n            var treeViewSize = new Vector2(textBoxSize.X, screenMax.Y - (MyGuiConstants.TOOLBAR_PADDING.Y * 6 + textBoxSize.Y + MyGuiConstants.TOOLBAR_BUTTON_SIZE.Y));\n            var panelSize = treeViewSize + new Vector2(MyGuiConstants.TOOLBAR_PADDING.X * 2, MyGuiConstants.TOOLBAR_PADDING.Y * 3) + new Vector2(0, textBoxSize.Y);\n\n            var textBoxPosition = screenZero + new Vector2(MyGuiConstants.TOOLBAR_PADDING.Y * 2, MyGuiConstants.TOOLBAR_PADDING.Y * 3 + MyGuiConstants.TOOLBAR_BUTTON_SIZE.Y);\n            var treeViewPosition = textBoxPosition + new Vector2(0, textBoxSize.Y + MyGuiConstants.TOOLBAR_PADDING.Y);\n            var panelPosition = textBoxPosition - new Vector2(MyGuiConstants.TOOLBAR_PADDING.Y, MyGuiConstants.TOOLBAR_PADDING.Y);\n\n            if (m_controlPanel == null)\n            {\n                CreateControls();\n            }\n            \n            m_controlPanel.SetPosition(panelPosition + panelSize / 2);\n            m_controlPanel.SetSize(panelSize);\n\n            m_addObjectTreeView.SetPosition(treeViewPosition + treeViewSize / 2);\n            m_addObjectTreeView.SetSize(treeViewSize);\n\n            m_filterTextbox.SetPosition(textBoxPosition + textBoxSize / 2);\n\n            Vector2 editVoxelHandPanelSize = new Vector2(panelSize.X * 1.4f, panelSize.Y);\n            m_editVoxelHand.SetPosition(panelPosition + editVoxelHandPanelSize / 2);\n\n            UpdateToolbarButtonsSizeAndPosition();\n        }\n\n        public void Focused(bool focused)\n        {\n            if (!focused)\n            {\n                var treeViewIndex = m_parentScreen.Controls.IndexOf(m_addObjectTreeView);\n                m_parentScreen.SetControlIndex(treeViewIndex);\n            }\n        }\n\n        public virtual void LoadEditorData()\n        {\n        }\n\n        public virtual void UnloadEditorData()\n        {\n        }\n\n        public void EditLights(List<MyPrefabLight> lights)\n        {\n            SetAddObjectVisibility(false);            \n\n            m_editLights.SetLights(lights);\n            m_editLights.Visible = true;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Helpers/MyGuiEditorVoxelHandHelper.cs",
    "content": "﻿using MinerWarsMath.Graphics;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Textures;\n\nnamespace MinerWars.AppCode.Game.GUI.Helpers\n{\n    class MyGuiEditorVoxelHandHelper : MyGuiHelperBase\n    {\n        public MyGuiEditorVoxelHandHelper(MyTexture2D icon, MyTextsWrapperEnum description)\n            : base(icon, description)\n        {\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Helpers/MyGuiEditorVoxelHandHelpers.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.Game.GUI.ScreenEditor;\nusing MinerWars.AppCode.Game.Entities.VoxelHandShapes;\nusing SysUtils.Utils;\n\nnamespace MinerWars.AppCode.Game.GUI.Helpers\n{\n    static class MyGuiEditorVoxelHandHelpers\n    {\n        static Dictionary<MyVoxelHandShapeType, MyGuiEditorVoxelHandHelper> m_editorVoxelHandShapeHelpers = new Dictionary<MyVoxelHandShapeType, MyGuiEditorVoxelHandHelper>();\n        static Dictionary<MyMwcVoxelHandModeTypeEnum, MyGuiEditorVoxelHandHelper> m_editorVoxelHandModeHelpers = new Dictionary<MyMwcVoxelHandModeTypeEnum, MyGuiEditorVoxelHandHelper>();\n\n        //Arrays of enums values\n        public static Array MyEditorVoxelHandShapeHelperTypesEnumValues { get; private set; }\n        public static Array MyEditorVoxelHandModeHelperTypesEnumValues { get; private set; }\n\n        static MyGuiEditorVoxelHandHelpers()\n        {\n            MyMwcLog.WriteLine(\"MyGuiEditorVoxelHandHelpers()\");\n\n            MyEditorVoxelHandShapeHelperTypesEnumValues = Enum.GetValues(typeof(MyVoxelHandShapeType));\n            MyEditorVoxelHandModeHelperTypesEnumValues = Enum.GetValues(typeof(MyMwcVoxelHandModeTypeEnum));\n        }\n\n        public static MyGuiEditorVoxelHandHelper GetEditorVoxelHandShapeHelper(MyVoxelHandShapeType shapeType)\n        {\n            MyGuiEditorVoxelHandHelper ret;\n            if (m_editorVoxelHandShapeHelpers.TryGetValue(shapeType, out ret))\n                return ret;\n            else\n                return null;\n        }\n\n        public static MyGuiEditorVoxelHandHelper GetEditorVoxelHandModeHelper(MyMwcVoxelHandModeTypeEnum modeType)\n        {\n            MyGuiEditorVoxelHandHelper ret;\n            if (m_editorVoxelHandModeHelpers.TryGetValue(modeType, out ret))\n                return ret;\n            else\n                return null;\n        }\n\n        public static void UnloadContent()\n        {\n\n            m_editorVoxelHandShapeHelpers.Clear();\n            m_editorVoxelHandModeHelpers.Clear();\n\n        }\n\n        public static void LoadContent()\n        {\n\n            #region Editor voxel hand shape helpers\n\n            m_editorVoxelHandShapeHelpers.Add(MyVoxelHandShapeType.Sphere,\n                new MyGuiEditorVoxelHandHelper(null, MyTextsWrapperEnum.EditVoxelHandShapeSphere));\n            m_editorVoxelHandShapeHelpers.Add(MyVoxelHandShapeType.Box,\n                new MyGuiEditorVoxelHandHelper(null, MyTextsWrapperEnum.EditVoxelHandShapeBox));\n            m_editorVoxelHandShapeHelpers.Add(MyVoxelHandShapeType.Cuboid,\n                new MyGuiEditorVoxelHandHelper(null, MyTextsWrapperEnum.EditVoxelHandShapeCuboid));\n            m_editorVoxelHandShapeHelpers.Add(MyVoxelHandShapeType.Cylinder,\n                new MyGuiEditorVoxelHandHelper(null, MyTextsWrapperEnum.EditVoxelHandShapeCylinder));\n\n            #endregion\n\n            #region Editor voxel hand mode helpers\n\n            m_editorVoxelHandModeHelpers.Add(MyMwcVoxelHandModeTypeEnum.ADD,\n                new MyGuiEditorVoxelHandHelper(null, MyTextsWrapperEnum.AddVoxels));\n\n            m_editorVoxelHandModeHelpers.Add(MyMwcVoxelHandModeTypeEnum.SUBTRACT,\n                new MyGuiEditorVoxelHandHelper(null, MyTextsWrapperEnum.RemoveVoxels));\n\n            m_editorVoxelHandModeHelpers.Add(MyMwcVoxelHandModeTypeEnum.SET_MATERIAL,\n                new MyGuiEditorVoxelHandHelper(null, MyTextsWrapperEnum.ChangeVoxelMaterial));\n\n            m_editorVoxelHandModeHelpers.Add(MyMwcVoxelHandModeTypeEnum.SOFTEN,\n                new MyGuiEditorVoxelHandHelper(null, MyTextsWrapperEnum.SoftenVoxels));\n\n            m_editorVoxelHandModeHelpers.Add(MyMwcVoxelHandModeTypeEnum.WRINKLE,\n                new MyGuiEditorVoxelHandHelper(null, MyTextsWrapperEnum.WrinkleVoxels));\n            #endregion\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Helpers/MyGuiEventHelper.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Textures;\n\nnamespace MinerWars.AppCode.Game.GUI.Helpers {\n    class MyGuiEventHelper : MyGuiHelperBase\n    {\n        private Vector4 m_backgroundColor;\n\n\n        public MyGuiEventHelper(MyTexture2D icon, MyTextsWrapperEnum description, Vector4 color)\n            : base(icon, description)\n        {\n            BackgroundColor = color;\n        }\n\n        public Vector4 BackgroundColor\n        {\n            get { return m_backgroundColor; }\n            set { m_backgroundColor = value; }\n        }\n\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Helpers/MyGuiEventHelpers.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Journal;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Textures;\nusing SysUtils.Utils;\n\nnamespace MinerWars.AppCode.Game.GUI.Helpers {\n    static class MyGuiEventHelpers \n    {\n        static Dictionary<EventTypeEnum, MyGuiEventHelper> m_eventHelpers = new Dictionary<EventTypeEnum, MyGuiEventHelper>();        \n        static Dictionary<MyJournalCategory, MyGuiEventHelper> m_journalCategoryHelpers = new Dictionary<MyJournalCategory, MyGuiEventHelper>();\n\n        //Arrays of enums values\n        public static Array MyEventHelperTypesEnumValues { get; private set; }\n        public static Array MyJournalCategoryTypesEnumValues { get; private set; }\n\n        private static readonly Vector4 ITEM_BACKGROUND_COLOR = new Vector4(0.9f,0.9f,0.9f,1);\n\n        static MyGuiEventHelpers()\n        {\n            MyMwcLog.WriteLine(\"MyGuiEventHelpers()\");\n\n            MyEventHelperTypesEnumValues = Enum.GetValues(typeof(EventTypeEnum));\n            MyJournalCategoryTypesEnumValues = Enum.GetValues(typeof (MyJournalCategory));\n        }\n\n        public static MyGuiEventHelper GetEventHelper(EventTypeEnum eventType)\n        {\n            MyGuiEventHelper ret;\n            if(m_eventHelpers.TryGetValue(eventType, out ret))\n                return ret;\n            else\n                return null;\n        }\n\n        public static MyGuiEventHelper GetJournalCategoryHelper(MyJournalCategory journalCategory)\n        {\n            MyGuiEventHelper ret;\n            if (m_journalCategoryHelpers.TryGetValue(journalCategory, out ret))\n                return ret;\n            else\n                return null;\n        }\n\n        public static void UnloadContent()\n        {\n            m_eventHelpers.Clear();            \n            m_journalCategoryHelpers.Clear();\n        }\n        \n        /*\n        public static MyTexture2D GetCurrentMissionTexture()\n        {\n            return MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Journal\\\\EventsMissionCurrent\");\n        }\n        */\n\n\n        public static void LoadContent()\n        {\n            var darkColor = ITEM_BACKGROUND_COLOR*0.6f;\n            darkColor.W = 0.9f;\n            #region Event types\n            m_eventHelpers.Add(EventTypeEnum.GlobalEvent,\n                new MyGuiEventHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Journal\\\\EventsGlobalEvent\"), MyTextsWrapperEnum.GlobalEvents, ITEM_BACKGROUND_COLOR));\n            m_eventHelpers.Add(EventTypeEnum.MissionFinished,\n                new MyGuiEventHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Journal\\\\EventsMissionStarted\"), MyTextsWrapperEnum.FinishedMissions, darkColor));\n            m_eventHelpers.Add(EventTypeEnum.MissionStarted,\n                new MyGuiEventHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Journal\\\\EventsMissionStarted\"), MyTextsWrapperEnum.StartedMissions, ITEM_BACKGROUND_COLOR));\n            m_eventHelpers.Add(EventTypeEnum.SubmissionFinished,\n                new MyGuiEventHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Journal\\\\EventsMissionStarted\"), MyTextsWrapperEnum.FinishedSubmissions, darkColor));\n            m_eventHelpers.Add(EventTypeEnum.SubmissionAvailable,\n                new MyGuiEventHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Journal\\\\EventsMissionStarted\"), MyTextsWrapperEnum.AvailableSubmissions, ITEM_BACKGROUND_COLOR));\n            m_eventHelpers.Add(EventTypeEnum.Story,\n                new MyGuiEventHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Journal\\\\EventsStory\"), MyTextsWrapperEnum.AvailableSubmissions,ITEM_BACKGROUND_COLOR));\n            #endregion            \n\n            #region Journal categories\n            m_journalCategoryHelpers.Add(MyJournalCategory.AllEvents, new MyGuiEventHelper(MyGuiManager.GetJournalFilterAllTexture(), MyTextsWrapperEnum.AllEvents, ITEM_BACKGROUND_COLOR));\n            m_journalCategoryHelpers.Add(MyJournalCategory.GlobalEvents, new MyGuiEventHelper(MyGuiManager.GetJournalFilterGlobalEventsTexture(), MyTextsWrapperEnum.GlobalEvents, ITEM_BACKGROUND_COLOR));\n            //m_journalCategoryHelpers.Add(MyJournalCategory.CurrentMission, new MyGuiEventHelper(MyGuiManager.GetJournalFilterCurrentMissionTexture(), MyTextsWrapperEnum.CurrentMission, ITEM_BACKGROUND_COLOR));\n            m_journalCategoryHelpers.Add(MyJournalCategory.AllMissions, new MyGuiEventHelper(MyGuiManager.GetJournalFilterMissionsTexture(), MyTextsWrapperEnum.AllMissions, ITEM_BACKGROUND_COLOR));\n           // m_journalCategoryHelpers.Add(MyJournalCategory.AccomplishedMissions, new MyGuiEventHelper(MyGuiManager.GetJournalFilterAccomplishedMissionsTexture(), MyTextsWrapperEnum.AccomplishedMissions, ITEM_BACKGROUND_COLOR));\n            m_journalCategoryHelpers.Add(MyJournalCategory.Story, new MyGuiEventHelper(MyGuiManager.GetJournalFilterStorytexture(), MyTextsWrapperEnum.Story, ITEM_BACKGROUND_COLOR));\n            #endregion\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Helpers/MyGuiFoundationFactoryHelper.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Localization;\n\nnamespace MinerWars.AppCode.Game.GUI.Helpers\n{\n    class MyGuiFoundationFactoryHelper : MyGuiHelperBase\n    {\n        public MyGuiFoundationFactoryHelper(MyTextsWrapperEnum description)\n            : base(description)\n        {\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Helpers/MyGuiGameControlsHelpers.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Utils;\nusing SysUtils.Utils;\n\nnamespace MinerWars.AppCode.Game.GUI.Helpers\n{\n    static class MyGuiGameControlsHelpers\n    {\n        static Dictionary<MyGameControlEnums, MyGuiHelperBase> m_gameControlHelpers = new Dictionary<MyGameControlEnums, MyGuiHelperBase>();\n        static Dictionary<MyEditorControlEnums, MyGuiHelperBase> m_editorControlHelpers = new Dictionary<MyEditorControlEnums, MyGuiHelperBase>();\n\n        //Arrays of enums values\n        public static Array MyGameControllerHelperTypesEnumValues { get; private set; }\n        public static Array MyControlHelperTypesEnumValues { get; private set; }\n        public static Array MyEditorControlHelperTypesEnumValues { get; private set; }\n\n        static MyGuiGameControlsHelpers()\n        {\n            MyMwcLog.WriteLine(\"MyGuiGameControlsHelpers()\");\n\n            MyControlHelperTypesEnumValues = Enum.GetValues(typeof(MyGameControlEnums));\n            MyEditorControlHelperTypesEnumValues = Enum.GetValues(typeof(MyEditorControlEnums));\n        }\n\n        public static MyGuiHelperBase GetGameControlHelper(MyGameControlEnums controlHelper)\n        {\n            MyGuiHelperBase ret;\n            if (m_gameControlHelpers.TryGetValue(controlHelper, out ret))\n                return ret;\n            else\n                return null;\n        }\n\n        public static MyGuiHelperBase GetEditorControlHelper(MyEditorControlEnums controlHelper)\n        {\n            MyGuiHelperBase ret;\n            if (m_editorControlHelpers.TryGetValue(controlHelper, out ret))\n                return ret;\n            else\n                return null;\n        }\n\n        public static void UnloadContent()\n        {\n            m_gameControlHelpers.Clear();\n            m_editorControlHelpers.Clear();\n        }\n\n        public static void LoadContent()\n        {\n            #region Game Control helpers\n\n            m_gameControlHelpers.Add(MyGameControlEnums.FIRE_PRIMARY, new MyGuiHelperBase(null, MyTextsWrapperEnum.FirePrimaryWeapon));\n            m_gameControlHelpers.Add(MyGameControlEnums.FIRE_SECONDARY, new MyGuiHelperBase(null, MyTextsWrapperEnum.FireSecondaryWeapon));\n            m_gameControlHelpers.Add(MyGameControlEnums.FIRE_THIRD, new MyGuiHelperBase(null, MyTextsWrapperEnum.FireThirdWeapon));\n            m_gameControlHelpers.Add(MyGameControlEnums.FIRE_FOURTH, new MyGuiHelperBase(null, MyTextsWrapperEnum.FireFourthWeapon));\n            m_gameControlHelpers.Add(MyGameControlEnums.FIRE_FIFTH, new MyGuiHelperBase(null, MyTextsWrapperEnum.FireFifthWeapon));\n            m_gameControlHelpers.Add(MyGameControlEnums.FORWARD, new MyGuiHelperBase(null, MyTextsWrapperEnum.ForwardThrust));\n            //m_gameControlHelpers.Add(MyGameControlEnums.FULLSCREEN_RADAR, new MyGuiHelperBase(null, MyTextsWrapperEnum.FullscreenRadar));\n            m_gameControlHelpers.Add(MyGameControlEnums.HARVEST, new MyGuiHelperBase(null, MyTextsWrapperEnum.Harvest));\n            m_gameControlHelpers.Add(MyGameControlEnums.HEADLIGHTS, new MyGuiHelperBase(null, MyTextsWrapperEnum.ToggleHeadlights));\n            m_gameControlHelpers.Add(MyGameControlEnums.MOVEMENT_SLOWDOWN, new MyGuiHelperBase(null, MyTextsWrapperEnum.MovementSlowdown));\n            m_gameControlHelpers.Add(MyGameControlEnums.QUICK_ZOOM, new MyGuiHelperBase(null, MyTextsWrapperEnum.QuickZoom));\n            //m_gameControlHelpers.Add(MyGameControlEnums.RADAR_ZOOM_IN, new MyGuiHelperBase(null, MyTextsWrapperEnum.RadarZoomIn));\n            //m_gameControlHelpers.Add(MyGameControlEnums.RADAR_ZOOM_OUT, new MyGuiHelperBase(null, MyTextsWrapperEnum.RadarZoomOut));\n            m_gameControlHelpers.Add(MyGameControlEnums.REAR_CAM, new MyGuiHelperBase(null, MyTextsWrapperEnum.RearCam));\n            m_gameControlHelpers.Add(MyGameControlEnums.REVERSE, new MyGuiHelperBase(null, MyTextsWrapperEnum.ReverseThrust));\n            m_gameControlHelpers.Add(MyGameControlEnums.ROLL_LEFT, new MyGuiHelperBase(null, MyTextsWrapperEnum.RollLeft));\n            m_gameControlHelpers.Add(MyGameControlEnums.ROLL_RIGHT, new MyGuiHelperBase(null, MyTextsWrapperEnum.RollRight));\n            m_gameControlHelpers.Add(MyGameControlEnums.SELECT_AMMO_BULLET, new MyGuiHelperBase(null, MyTextsWrapperEnum.SelectBulletAmmo));\n            m_gameControlHelpers.Add(MyGameControlEnums.SELECT_AMMO_MISSILE, new MyGuiHelperBase(null, MyTextsWrapperEnum.SelectMissileAmmo));\n            m_gameControlHelpers.Add(MyGameControlEnums.SELECT_AMMO_CANNON, new MyGuiHelperBase(null, MyTextsWrapperEnum.SelectCannonAmmo));\n            m_gameControlHelpers.Add(MyGameControlEnums.SELECT_AMMO_UNIVERSAL_LAUNCHER_FRONT, new MyGuiHelperBase(null, MyTextsWrapperEnum.SelectFrontLauncherAmmo));\n            m_gameControlHelpers.Add(MyGameControlEnums.SELECT_AMMO_UNIVERSAL_LAUNCHER_BACK, new MyGuiHelperBase(null, MyTextsWrapperEnum.SelectBackLauncherAmmo));            \n            m_gameControlHelpers.Add(MyGameControlEnums.STRAFE_LEFT, new MyGuiHelperBase(null, MyTextsWrapperEnum.StrafeLeft));\n            m_gameControlHelpers.Add(MyGameControlEnums.STRAFE_RIGHT, new MyGuiHelperBase(null, MyTextsWrapperEnum.StrafeRight));\n            //m_gameControlHelpers.Add(MyGameControlEnums.SWITCH_RADAR_MODE, new MyGuiHelperBase(null, MyTextsWrapperEnum.SwitchRadarMode));\n            m_gameControlHelpers.Add(MyGameControlEnums.UP_THRUST, new MyGuiHelperBase(null, MyTextsWrapperEnum.UpThrust));\n            m_gameControlHelpers.Add(MyGameControlEnums.ZOOM_IN, new MyGuiHelperBase(null, MyTextsWrapperEnum.ZoomIn));\n            m_gameControlHelpers.Add(MyGameControlEnums.ZOOM_OUT, new MyGuiHelperBase(null, MyTextsWrapperEnum.ZoomOut));\n            m_gameControlHelpers.Add(MyGameControlEnums.DOWN_THRUST, new MyGuiHelperBase(null, MyTextsWrapperEnum.DownThrust));\n            //m_gameControlHelpers.Add(MyGameControlEnums.ENGINE_SHUTDOWN, new MyGuiHelperBase(null, MyTextsWrapperEnum.EngineShutdown));\n            m_gameControlHelpers.Add(MyGameControlEnums.AUTO_LEVEL, new MyGuiHelperBase(null, MyTextsWrapperEnum.AutoLevel));\n            m_gameControlHelpers.Add(MyGameControlEnums.DRILL, new MyGuiHelperBase(null, MyTextsWrapperEnum.UseDrill));\n            m_gameControlHelpers.Add(MyGameControlEnums.AFTERBURNER, new MyGuiHelperBase(null, MyTextsWrapperEnum.Afterburner));\n            m_gameControlHelpers.Add(MyGameControlEnums.VIEW_MODE, new MyGuiHelperBase(null, MyTextsWrapperEnum.ViewMode));\n            m_gameControlHelpers.Add(MyGameControlEnums.WEAPON_SPECIAL, new MyGuiHelperBase(null, MyTextsWrapperEnum.WeaponSpecial));\n            m_gameControlHelpers.Add(MyGameControlEnums.ROTATION_LEFT, new MyGuiHelperBase(null, MyTextsWrapperEnum.RotationLeft));\n            m_gameControlHelpers.Add(MyGameControlEnums.ROTATION_RIGHT, new MyGuiHelperBase(null, MyTextsWrapperEnum.RotationRight));\n            m_gameControlHelpers.Add(MyGameControlEnums.ROTATION_UP, new MyGuiHelperBase(null, MyTextsWrapperEnum.RotationUp));\n            m_gameControlHelpers.Add(MyGameControlEnums.ROTATION_DOWN, new MyGuiHelperBase(null, MyTextsWrapperEnum.RotationDown));\n            //m_gameControlHelpers.Add(MyGameControlEnums.COMM_AVATAR_SELECT, new MyGuiHelperBase(null, MyTextsWrapperEnum.CommAvatarSelect));\n            m_gameControlHelpers.Add(MyGameControlEnums.NOTIFICATION_CONFIRMATION, new MyGuiHelperBase(null, MyTextsWrapperEnum.NotificationConfirmation));\n            m_gameControlHelpers.Add(MyGameControlEnums.WHEEL_CONTROL, new MyGuiHelperBase(null, MyTextsWrapperEnum.WheelControl));            \n            m_gameControlHelpers.Add(MyGameControlEnums.MISSION_DIALOG, new MyGuiHelperBase(null, MyTextsWrapperEnum.MissionDialog));\n            m_gameControlHelpers.Add(MyGameControlEnums.HEADLIGTHS_DISTANCE, new MyGuiHelperBase(null, MyTextsWrapperEnum.HeadlightsDistance));\n            m_gameControlHelpers.Add(MyGameControlEnums.TRAVEL, new MyGuiHelperBase(null, MyTextsWrapperEnum.Travel));\n            m_gameControlHelpers.Add(MyGameControlEnums.PREVIOUS_CAMERA, new MyGuiHelperBase(null, MyTextsWrapperEnum.PreviousCamera));\n            m_gameControlHelpers.Add(MyGameControlEnums.NEXT_CAMERA, new MyGuiHelperBase(null, MyTextsWrapperEnum.NextCamera));\n            m_gameControlHelpers.Add(MyGameControlEnums.GPS, new MyGuiHelperBase(null, MyTextsWrapperEnum.UseGPS));\n            m_gameControlHelpers.Add(MyGameControlEnums.USE, new MyGuiHelperBase(null, MyTextsWrapperEnum.UseHackTake));\n            m_gameControlHelpers.Add(MyGameControlEnums.CHANGE_DRONE_MODE, new MyGuiHelperBase(null, MyTextsWrapperEnum.ChangeDroneMode));\n            m_gameControlHelpers.Add(MyGameControlEnums.INVENTORY, new MyGuiHelperBase(null, MyTextsWrapperEnum.Inventory));\n            m_gameControlHelpers.Add(MyGameControlEnums.FIRE_HOLOGRAM_FRONT   , new MyGuiHelperBase(null, MyTextsWrapperEnum.FireHologramFront  ));\n            m_gameControlHelpers.Add(MyGameControlEnums.FIRE_HOLOGRAM_BACK    , new MyGuiHelperBase(null, MyTextsWrapperEnum.FireHologramBack   ));\n            m_gameControlHelpers.Add(MyGameControlEnums.FIRE_BASIC_MINE_FRONT , new MyGuiHelperBase(null, MyTextsWrapperEnum.FireBasicMineFront ));\n            m_gameControlHelpers.Add(MyGameControlEnums.FIRE_BASIC_MINE_BACK  , new MyGuiHelperBase(null, MyTextsWrapperEnum.FireBasicMineBack  ));\n            m_gameControlHelpers.Add(MyGameControlEnums.FIRE_SMART_MINE_FRONT , new MyGuiHelperBase(null, MyTextsWrapperEnum.FireSmartMineFront ));\n            m_gameControlHelpers.Add(MyGameControlEnums.FIRE_SMART_MINE_BACK  , new MyGuiHelperBase(null, MyTextsWrapperEnum.FireSmartMineBack  ));\n            m_gameControlHelpers.Add(MyGameControlEnums.FIRE_FLASH_BOMB_FRONT , new MyGuiHelperBase(null, MyTextsWrapperEnum.FireFlashBombFront ));\n            m_gameControlHelpers.Add(MyGameControlEnums.FIRE_FLASH_BOMB_BACK  , new MyGuiHelperBase(null, MyTextsWrapperEnum.FireFlashBombBack  ));\n            m_gameControlHelpers.Add(MyGameControlEnums.FIRE_DECOY_FLARE_FRONT, new MyGuiHelperBase(null, MyTextsWrapperEnum.FireDecoyFlareFront));\n            m_gameControlHelpers.Add(MyGameControlEnums.FIRE_DECOY_FLARE_BACK , new MyGuiHelperBase(null, MyTextsWrapperEnum.FireDecoyFlareBack ));\n            m_gameControlHelpers.Add(MyGameControlEnums.FIRE_SMOKE_BOMB_FRONT , new MyGuiHelperBase(null, MyTextsWrapperEnum.FireSmokeBombFront ));\n            m_gameControlHelpers.Add(MyGameControlEnums.FIRE_SMOKE_BOMB_BACK  , new MyGuiHelperBase(null, MyTextsWrapperEnum.FireSmokeBombBack  ));\n            m_gameControlHelpers.Add(MyGameControlEnums.DRONE_DEPLOY, new MyGuiHelperBase(null, MyTextsWrapperEnum.DroneDeploy));\n            m_gameControlHelpers.Add(MyGameControlEnums.DRONE_CONTROL, new MyGuiHelperBase(null, MyTextsWrapperEnum.DroneControl));\n            m_gameControlHelpers.Add(MyGameControlEnums.CONTROL_SECONDARY_CAMERA, new MyGuiHelperBase(null, MyTextsWrapperEnum.ControlSecondaryCamera));\n            m_gameControlHelpers.Add(MyGameControlEnums.PREV_TARGET, new MyGuiHelperBase(null, MyTextsWrapperEnum.PreviousTarget));\n            m_gameControlHelpers.Add(MyGameControlEnums.NEXT_TARGET, new MyGuiHelperBase(null, MyTextsWrapperEnum.NextTarget));\n            m_gameControlHelpers.Add(MyGameControlEnums.CHAT, new MyGuiHelperBase(null, MyTextsWrapperEnum.OpenChat));\n            m_gameControlHelpers.Add(MyGameControlEnums.SCORE, new MyGuiHelperBase(null, MyTextsWrapperEnum.OpenScore));\n            #endregion\n\n            #region Editor Control helpers\n\n            m_editorControlHelpers.Add(MyEditorControlEnums.PRIMARY_ACTION_KEY, new MyGuiHelperBase(null, MyTextsWrapperEnum.EditorPrimaryActionKey));\n            m_editorControlHelpers.Add(MyEditorControlEnums.SECONDARY_ACTION_KEY, new MyGuiHelperBase(null, MyTextsWrapperEnum.EditorSecondaryActionKey));\n            m_editorControlHelpers.Add(MyEditorControlEnums.DECREASE_GRID_SCALE, new MyGuiHelperBase(null, MyTextsWrapperEnum.EditorDecreaseGridScale));\n            m_editorControlHelpers.Add(MyEditorControlEnums.INCREASE_GRID_SCALE, new MyGuiHelperBase(null, MyTextsWrapperEnum.EditorIncreaseGridScale));\n            m_editorControlHelpers.Add(MyEditorControlEnums.VOXEL_HAND, new MyGuiHelperBase(null, MyTextsWrapperEnum.EditorVoxelHand));\n            m_editorControlHelpers.Add(MyEditorControlEnums.SWITCH_GIZMO_MODE, new MyGuiHelperBase(null, MyTextsWrapperEnum.EditorSwitchGizmoMode));\n            m_editorControlHelpers.Add(MyEditorControlEnums.SWITCH_GIZMO_SPACE, new MyGuiHelperBase(null, MyTextsWrapperEnum.EditorSwitchGizmoSpace));\n            \n            #endregion\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Helpers/MyGuiGodEditorControls.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.AppCode.Game.Editor;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.GUI.ScreenEditor.Object3D;\nusing MinerWars.AppCode.Game.Inventory;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Entities.FoundationFactory;\nusing MinerWars.AppCode.Game.Entities.Prefabs;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Prefabs;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Voxels;\nusing MinerWars.AppCode.Game.World;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.Prefabs;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Entities.WayPoints;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.Game.Gameplay;\nusing MinerWars.AppCode.Game.GUI.Core.TreeView;\nusing SysUtils.Utils;\nusing MinerWars.AppCode.Game.Models;\nusing KeenSoftwareHouse.Library.Extensions;\n\nnamespace MinerWars.AppCode.Game.GUI.Helpers\n{\n    class MyGuiGodEditorControls : MyGuiEditorControlsBase\n    {\n        // Helper class for TreeView GUI, stores data for prefab insertion\n        class PrefabTag\n        {\n            public MyMwcObjectBuilderTypeEnum PrefabModule;\n            public MyMwcObjectBuilder_Prefab_AppearanceEnum FactionAppearance;\n            public CategoryTypesEnum CategoryType;\n            public int PrefabId;\n\n            public PrefabTag(MyMwcObjectBuilderTypeEnum prefabModule, int prefabId, MyMwcObjectBuilder_Prefab_AppearanceEnum factionAppearance, CategoryTypesEnum categoryTypes)\n            {\n                PrefabModule = prefabModule;\n                PrefabId = prefabId;\n                FactionAppearance = factionAppearance;\n                CategoryType = categoryTypes;\n            }\n        }\n\n        enum MyEditorTopTextInfoPropertiesEnum\n        {\n            PLAYER_START_POSITION,\n            SECTOR_IDENTIFIER,\n            WORLD_COLLIDING_OBJECTS,\n            SELECTED_OBJECT_TYPE,\n            SELECTED_OBJECT_HUD_LABEL_TEXT,\n            SELECTED_OBJECT_POSITION,\n            SELECTED_OBJECT_SIZE_IN_METERS,\n            SELECTED_OBJECT_ORIENTATION_FORWARD,\n            SELECTED_OBJECT_ORIENTATION_UP,\n            SELECTED_VOXEL_MAP_REMAINING_EXPLOSIONS_FOR_SAVE,\n            NUMBER_OF_ASTEROIDS_IN_SECTOR,\n            NUMBER_OF_OBJECTS_IN_SECTOR,\n            SESSION_TYPE,\n            OBJECT_AXIS_ROTATION_AMOUNT,\n            SELECTED_OBJECT_COLLISION_OBJECTS,\n            SELECTED_VOXEL_HAND_SHAPES_INFO,\n            SELECTED_CONTAINER_OBJECT_PREFABS_LIMIT,\n            NUMBER_OF_EDITALE_OBJECTS,\n            NUMBER_OF_ALL_VOXEL_SHAPES_IN_SECTOR,\n            VOXEL_POSITION_INT,\n            VOXEL_MATERIAL,\n            VOXEL_FILE,\n            ENTITY_ID,\n            TRANSFORM_LOCKED,\n        }\n\n        enum MyEditorBottomTextInfoPropertiesEnum\n        {\n            SPECTATOR_POSITION,\n            SPECTATOR_SPEED_INDICATOR,\n            GRID_SCALE_INDICATOR,\n            GIZMO_SPACE,\n            GRID_SNAP,\n            ROTATE_SNAP\n        }\n\n        enum MyEditorAddObjectType\n        {\n            ASTEROID,\n            SMALLSHIP,\n            SPAWNPOINT,\n            WAYPOINT,\n            DUMMYPOINT,\n            FOUNDATION_FACTORY,\n            CARGO_BOX,\n            MYSTERIOUS_CUBE,\n            MYSTERIOUS_CUBE2,\n            MYSTERIOUS_CUBE3,\n            INFLUENCE_SPHERE\n        }\n\n        private static readonly EditorToolBarButtonType[] m_enabledButtons =\n            new EditorToolBarButtonType[]\n                {\n                    EditorToolBarButtonType.AddObjectButton,\n                    EditorToolBarButtonType.EditObjectsButton,\n                    EditorToolBarButtonType.ResetRotationButton,\n                    EditorToolBarButtonType.CopySelectedButton,\n                    EditorToolBarButtonType.SwitchGizmoSpaceButton,\n                    EditorToolBarButtonType.SwitchGizmoModeButton,\n                    EditorToolBarButtonType.LinkSnapPoints,\n                    EditorToolBarButtonType.ToggleSnapPoints,\n                    EditorToolBarButtonType.SelectAllObjectsButton,\n                    EditorToolBarButtonType.ExitSelectedButton,\n                    EditorToolBarButtonType.EnterPrefabContainerButton,\n                    EditorToolBarButtonType.AttachToCameraButton,\n                    EditorToolBarButtonType.EnterVoxelHandButton,\n                    EditorToolBarButtonType.ClearWholeSectorButton,\n                    EditorToolBarButtonType.LoadSectorButton,\n                    EditorToolBarButtonType.SaveSectorButton,\n                    EditorToolBarButtonType.SunSettingsButton,\n                    EditorToolBarButtonType.GroupsButton,\n                    EditorToolBarButtonType.CopyToolButton,\n                    EditorToolBarButtonType.OptionsButton,\n                    EditorToolBarButtonType.EditProperties,\n                    EditorToolBarButtonType.SelectAndHideButton,\n                    EditorToolBarButtonType.ListWayPoints,\n                    EditorToolBarButtonType.CorrectSnappedPrefabsButton,\n                    EditorToolBarButtonType.SmallShipTemplates,\n                    EditorToolBarButtonType.SelectDeactivatedEntityButton,\n                    EditorToolBarButtonType.FindEntityButton,\n                };\n\n        private StringBuilder[] m_rightTopCorner_sb; //for writing information text in right top corner\n        private StringBuilder[] m_rightBottomCorner_sb; //for writing information text in right bottom corner\n        private StringBuilder m_prefabContainerEditingActiveText;\n        private StringBuilder m_editingWayPointConnectionsText;\n        private StringBuilder m_editingWayPointConnectionsPathSelectedText;\n        private bool m_savedSnapPointFilter;\n\n        public MyGuiGodEditorControls(MyGuiScreenBase parentScreen) : base(parentScreen)\n        {\n            m_rightTopCorner_sb = new StringBuilder[Enum.GetValues(typeof(MyEditorTopTextInfoPropertiesEnum)).Length];\n            m_rightBottomCorner_sb = new StringBuilder[Enum.GetValues(typeof(MyEditorBottomTextInfoPropertiesEnum)).Length];\n\n            m_rightTopCorner_sb[(int)MyEditorTopTextInfoPropertiesEnum.PLAYER_START_POSITION] = new StringBuilder();\n            m_rightTopCorner_sb[(int)MyEditorTopTextInfoPropertiesEnum.SECTOR_IDENTIFIER] = new StringBuilder();\n            m_rightTopCorner_sb[(int)MyEditorTopTextInfoPropertiesEnum.SELECTED_OBJECT_TYPE] = new StringBuilder();\n            m_rightTopCorner_sb[(int)MyEditorTopTextInfoPropertiesEnum.SELECTED_OBJECT_HUD_LABEL_TEXT] = new StringBuilder();\n            m_rightTopCorner_sb[(int)MyEditorTopTextInfoPropertiesEnum.SELECTED_OBJECT_POSITION] = new StringBuilder();\n            m_rightTopCorner_sb[(int)MyEditorTopTextInfoPropertiesEnum.SELECTED_OBJECT_SIZE_IN_METERS] = new StringBuilder();\n            m_rightTopCorner_sb[(int)MyEditorTopTextInfoPropertiesEnum.SELECTED_OBJECT_ORIENTATION_FORWARD] = new StringBuilder();\n            m_rightTopCorner_sb[(int)MyEditorTopTextInfoPropertiesEnum.SELECTED_OBJECT_ORIENTATION_UP] = new StringBuilder();\n            m_rightTopCorner_sb[(int)MyEditorTopTextInfoPropertiesEnum.SELECTED_VOXEL_MAP_REMAINING_EXPLOSIONS_FOR_SAVE] = new StringBuilder();\n            m_rightTopCorner_sb[(int)MyEditorTopTextInfoPropertiesEnum.NUMBER_OF_ASTEROIDS_IN_SECTOR] = new StringBuilder();\n            m_rightTopCorner_sb[(int)MyEditorTopTextInfoPropertiesEnum.NUMBER_OF_OBJECTS_IN_SECTOR] = new StringBuilder();\n            m_rightTopCorner_sb[(int)MyEditorTopTextInfoPropertiesEnum.SELECTED_CONTAINER_OBJECT_PREFABS_LIMIT] = new StringBuilder();\n            m_rightTopCorner_sb[(int)MyEditorTopTextInfoPropertiesEnum.NUMBER_OF_EDITALE_OBJECTS] = new StringBuilder();\n            m_rightTopCorner_sb[(int)MyEditorTopTextInfoPropertiesEnum.SESSION_TYPE] = new StringBuilder();\n            m_rightTopCorner_sb[(int)MyEditorTopTextInfoPropertiesEnum.OBJECT_AXIS_ROTATION_AMOUNT] = new StringBuilder();\n            m_rightTopCorner_sb[(int)MyEditorTopTextInfoPropertiesEnum.SELECTED_OBJECT_COLLISION_OBJECTS] = new StringBuilder();\n            m_rightTopCorner_sb[(int)MyEditorTopTextInfoPropertiesEnum.SELECTED_VOXEL_HAND_SHAPES_INFO] = new StringBuilder();\n            m_rightTopCorner_sb[(int)MyEditorTopTextInfoPropertiesEnum.WORLD_COLLIDING_OBJECTS] = new StringBuilder();\n            m_rightTopCorner_sb[(int)MyEditorTopTextInfoPropertiesEnum.NUMBER_OF_ALL_VOXEL_SHAPES_IN_SECTOR] = new StringBuilder();\n            m_rightTopCorner_sb[(int)MyEditorTopTextInfoPropertiesEnum.VOXEL_FILE] = new StringBuilder();\n            m_rightTopCorner_sb[(int)MyEditorTopTextInfoPropertiesEnum.VOXEL_MATERIAL] = new StringBuilder();\n            m_rightTopCorner_sb[(int)MyEditorTopTextInfoPropertiesEnum.VOXEL_POSITION_INT] = new StringBuilder();\n            m_rightTopCorner_sb[(int)MyEditorTopTextInfoPropertiesEnum.ENTITY_ID] = new StringBuilder();\n            m_rightTopCorner_sb[(int)MyEditorTopTextInfoPropertiesEnum.TRANSFORM_LOCKED] = new StringBuilder();\n\n            m_rightBottomCorner_sb[(int)MyEditorBottomTextInfoPropertiesEnum.SPECTATOR_POSITION] = new StringBuilder();\n            m_rightBottomCorner_sb[(int)MyEditorBottomTextInfoPropertiesEnum.SPECTATOR_SPEED_INDICATOR] = new StringBuilder();\n            m_rightBottomCorner_sb[(int)MyEditorBottomTextInfoPropertiesEnum.GRID_SCALE_INDICATOR] = new StringBuilder();\n            m_rightBottomCorner_sb[(int)MyEditorBottomTextInfoPropertiesEnum.GIZMO_SPACE] = new StringBuilder();\n            m_rightBottomCorner_sb[(int)MyEditorBottomTextInfoPropertiesEnum.GRID_SNAP] = new StringBuilder();\n            m_rightBottomCorner_sb[(int)MyEditorBottomTextInfoPropertiesEnum.ROTATE_SNAP] = new StringBuilder();\n\n            m_prefabContainerEditingActiveText = MyTextsWrapper.Get(MyTextsWrapperEnum.EditingActiveContainer);\n            m_editingWayPointConnectionsText = MyTextsWrapper.Get(MyTextsWrapperEnum.EditingWayPointConnections);\n            m_editingWayPointConnectionsPathSelectedText = MyTextsWrapper.Get(MyTextsWrapperEnum.EditingWayPointConnectionsPathSelected);\n        }\n\n        protected override EditorToolBarButtonType[] GetEnabledButtons()\n        {\n            return MyGuiGodEditorControls.m_enabledButtons;\n        }\n\n        protected override void FillTreeView()\n        {\n            m_addObjectTreeView.ClearItems();\n\n            MyTexture2D icon = null; // MyGuiManager.GetCheckboxTexture();\n            MyTexture2D expand = MyGuiManager.GetCollapseTexture();\n            MyTexture2D collapse = MyGuiManager.GetExpandTexture();\n\n            Vector2 smallIconSize = Vector2.Zero; // MyGuiConstants.CHECKBOX_SIZE;\n            Vector2 bigIconSize = MyGuiConstants.CHECKBOX_SIZE * 4;\n            Vector2 expandIconSize = MyGuiConstants.CHECKBOX_SIZE;\n\n            CategoryTypesEnum[] largeShipCategories = { CategoryTypesEnum.LARGE_SHIPS };\n            CategoryTypesEnum[] beamsCategories = { CategoryTypesEnum.LARGE, CategoryTypesEnum.MEDIUM, CategoryTypesEnum.SMALL, CategoryTypesEnum.FRAME, CategoryTypesEnum.SHELVES };\n            CategoryTypesEnum[] shellsCategories = { CategoryTypesEnum.PANELS, CategoryTypesEnum.CHAMBERS, CategoryTypesEnum.ARMORS };\n            CategoryTypesEnum[] modulesCategories = { CategoryTypesEnum.FLIGHT, CategoryTypesEnum.SUPPLY, CategoryTypesEnum.LIFE_SUPPORT, CategoryTypesEnum.INDUSTRY, CategoryTypesEnum.WEAPONRY, CategoryTypesEnum.COMMUNICATIONS, /*CategoryTypesEnum.HANGARS,*/ CategoryTypesEnum.MANNED_OBJECTS };\n            //CategoryTypesEnum[] connectionsCategories = { CategoryTypesEnum.TUNNELS, CategoryTypesEnum.PIPES, CategoryTypesEnum.PASSAGES, CategoryTypesEnum.DOORS, CategoryTypesEnum.DOOR_CASES, CategoryTypesEnum.CABLES };\n            CategoryTypesEnum[] connectionsCategories = { CategoryTypesEnum.TUNNELS, CategoryTypesEnum.PIPES, CategoryTypesEnum.PASSAGES, CategoryTypesEnum.DOOR_CASES, CategoryTypesEnum.CABLES };\n            CategoryTypesEnum[] detailsCategories = { CategoryTypesEnum.LIGHTS, CategoryTypesEnum.BILLBOARDS, CategoryTypesEnum.SIGNS, CategoryTypesEnum.TRAFFIC_SIGNS, CategoryTypesEnum.BARRELS, CategoryTypesEnum.SOUNDS, CategoryTypesEnum.OTHER };\n            CategoryTypesEnum[] customCategories = { CategoryTypesEnum.OTHER, CategoryTypesEnum.FOUNDATION_FACTORY, CategoryTypesEnum.SECURITY_CONTROL_HUB, CategoryTypesEnum.BANK_NODE, CategoryTypesEnum.GENERATOR, CategoryTypesEnum.SCANNER, CategoryTypesEnum.ALARM, CategoryTypesEnum.CAMERA, CategoryTypesEnum.FLIGHT };\n            \n            // prefab container\n            var prefabItem = m_addObjectTreeView.AddItem(MyTextsWrapper.Get(MyTextsWrapperEnum.PrefabContainer), icon, smallIconSize, expand, collapse, expandIconSize);\n            prefabItem.ToolTip = new MyToolTips(MyTextsWrapper.Get(MyTextsWrapperEnum.AddPrefabTooltip));\n\n            var gamePlayItem = m_addObjectTreeView.AddItem(MyTextsWrapper.Get(MyTextsWrapperEnum.GamePlay), icon, smallIconSize, expand, collapse, expandIconSize);\n            gamePlayItem.ToolTip = new MyToolTips(MyTextsWrapper.Get(MyTextsWrapperEnum.AddGamePlayTooltip));\n\n            // prefab container -> large ships\n            var largeShipItem = prefabItem.AddItem(MyTextsWrapper.Get(MyTextsWrapperEnum.Largeship), icon, smallIconSize, expand, collapse, expandIconSize);\n            largeShipItem.ToolTip = new MyToolTips(MyTextsWrapper.Get(MyTextsWrapperEnum.Largeship));\n\n            // large ships -> completes\n            var largeShipComlpetes = largeShipItem.AddItem(MyTextsWrapper.Get(MyTextsWrapperEnum.LargeShipComplets), icon, smallIconSize, expand, collapse, expandIconSize);\n            largeShipComlpetes.ToolTip = new MyToolTips(MyTextsWrapper.Get(MyTextsWrapperEnum.LargeShipComplets));\n\n            AddPrefabItems(largeShipComlpetes, MyMwcObjectBuilder_Prefab_AppearanceEnum.None, BuildTypesEnum.LARGE_SHIPS, CategoryTypesEnum.LARGE_SHIPS);\n\n            //Add fourth reich largeships\n            AddPrefabItems(largeShipComlpetes, MyMwcObjectBuilder_Prefab_AppearanceEnum.FourthReich, BuildTypesEnum.LARGE_SHIPS, CategoryTypesEnum.LARGE_SHIPS);\n\n            //Add russian largeships\n            AddPrefabItems(largeShipComlpetes, MyMwcObjectBuilder_Prefab_AppearanceEnum.Russian, BuildTypesEnum.LARGE_SHIPS, CategoryTypesEnum.LARGE_SHIPS);\n\n            // large ships -> eac Mship parts\n            var mShipItem = largeShipItem.AddItem(MyTextsWrapper.Get(MyTextsWrapperEnum.Mship), icon, smallIconSize, expand, collapse, expandIconSize);\n            mShipItem.ToolTip = new MyToolTips(MyTextsWrapper.Get(MyTextsWrapperEnum.Mship));\n            AddPrefabItems(mShipItem, MyMwcObjectBuilder_Prefab_AppearanceEnum.Euroamerican, BuildTypesEnum.LARGE_SHIPS, CategoryTypesEnum.MSHIP);            \n\n            // prefab container -> factions\n            foreach (MyMwcObjectBuilder_Prefab_AppearanceEnum factionTexture in MyGuiPrefabHelpers.MyMwcFactionTextureEnumValues)\n            {\n                var factionName = MyGuiPrefabHelpers.GetFactionName(factionTexture);\n                var factionItem = prefabItem.AddItem(factionName, icon, smallIconSize, expand, collapse, expandIconSize);\n                factionItem.ToolTip = new MyToolTips(factionName);\n\n                // BuildTypesEnum.BEAMS)\n                AddPrefabType(factionItem, factionTexture, MyTextsWrapperEnum.buildTypeBeam, BuildTypesEnum.BEAMS, beamsCategories, icon, smallIconSize, expand, collapse, expandIconSize);\n                // BuildTypesEnum.SHELLS\n                AddPrefabType(factionItem, factionTexture, MyTextsWrapperEnum.buildTypePanel, BuildTypesEnum.SHELLS, shellsCategories, icon, smallIconSize, expand, collapse, expandIconSize);\n                // BuildTypesEnum.MODULES\n                AddPrefabType(factionItem, factionTexture, MyTextsWrapperEnum.buildTypeModule, BuildTypesEnum.MODULES, modulesCategories, icon, smallIconSize, expand, collapse, expandIconSize);\n                //BuildTypesEnum.CONNECTIONS\n                AddPrefabType(factionItem, factionTexture, MyTextsWrapperEnum.buildTypeConnection, BuildTypesEnum.CONNECTIONS, connectionsCategories, icon, smallIconSize, expand, collapse, expandIconSize);\n                //BuildTypesEnum.DETAILS\n                AddPrefabType(factionItem, factionTexture, MyTextsWrapperEnum.buildTypeDetail, BuildTypesEnum.DETAILS, detailsCategories, icon, smallIconSize, expand, collapse, expandIconSize);\n                //BuildTypesEnum.CUSTOM ... Gameplay\n                AddPrefabType(factionItem, factionTexture, MyTextsWrapperEnum.buildTypeCustom, BuildTypesEnum.CUSTOM, customCategories, icon, smallIconSize, expand, collapse, expandIconSize);\n            }            \n\n            MyTreeViewItem asteroidItem = AddBaseDragTreeItem(gamePlayItem, MyTextsWrapperEnum.Asteroid, icon, expand, collapse, smallIconSize, expandIconSize, MyEditorAddObjectType.ASTEROID);\n\n            MyTreeViewItem smallShipItem = AddBaseDragTreeItem(gamePlayItem, MyTextsWrapperEnum.SmallShip, icon, expand, collapse, smallIconSize, expandIconSize, MyEditorAddObjectType.SMALLSHIP);\n\n            MyTreeViewItem spawnPointItem = AddBaseDragTreeItem(gamePlayItem, MyTextsWrapperEnum.SpawnPoint, icon, expand, collapse, smallIconSize, expandIconSize, MyEditorAddObjectType.SPAWNPOINT);\n\n            var influenceSphereItem = AddBaseDragTreeItem(gamePlayItem, MyTextsWrapperEnum.InfluenceSphereContextMenuCaption, icon, expand, collapse, smallIconSize, expandIconSize, MyEditorAddObjectType.INFLUENCE_SPHERE);\n            influenceSphereItem.Action = OnInfluenceSphere;\n\n            MyTreeViewItem wayPointItem = AddBaseDragTreeItem(gamePlayItem, MyTextsWrapperEnum.WayPoint, icon, expand, collapse, smallIconSize, expandIconSize, MyEditorAddObjectType.WAYPOINT);\n            MyTreeViewItem dummyPointItem = AddBaseDragTreeItem(gamePlayItem, MyTextsWrapperEnum.DummyPoint, icon, expand, collapse, smallIconSize, expandIconSize, MyEditorAddObjectType.DUMMYPOINT);\n            MyTreeViewItem cargoBoxItem = AddBaseDragTreeItem(gamePlayItem, MyTextsWrapperEnum.CargoBox, icon, expand, collapse, smallIconSize, expandIconSize, MyEditorAddObjectType.CARGO_BOX);\n            var mysteriousCubesItem = gamePlayItem.AddItem(MyTextsWrapper.Get(MyTextsWrapperEnum.MysteriousCubes), icon, smallIconSize, expand, collapse, expandIconSize);\n            mysteriousCubesItem.ToolTip = new MyToolTips(MyTextsWrapper.Get(MyTextsWrapperEnum.AddMysteriousCubesTooltip));\n            MyTreeViewItem mysteriousBoxItem = AddBaseDragTreeItem(mysteriousCubesItem, MyTextsWrapperEnum.MysteriousCube_01, icon, expand, collapse, smallIconSize, expandIconSize, MyEditorAddObjectType.MYSTERIOUS_CUBE);\n            MyTreeViewItem mysteriousBoxItem2 = AddBaseDragTreeItem(mysteriousCubesItem, MyTextsWrapperEnum.MysteriousCube_02, icon, expand, collapse, smallIconSize, expandIconSize, MyEditorAddObjectType.MYSTERIOUS_CUBE2);\n            MyTreeViewItem mysteriousBoxItem3 = AddBaseDragTreeItem(mysteriousCubesItem, MyTextsWrapperEnum.MysteriousCube_03, icon, expand, collapse, smallIconSize, expandIconSize, MyEditorAddObjectType.MYSTERIOUS_CUBE3);\n            \n\n            //var debrisItem = m_addObjectTreeView.AddItem(MyTextsWrapper.Get(MyTextsWrapperEnum.Debris), icon, smallIconSize, expand, collapse, expandIconSize);\n            //AddDebrisItems(debrisItem);\n\n            asteroidItem.Action = OnAsteorid;\n            smallShipItem.Action = OnSmallShip;\n            spawnPointItem.Action = OnSpawnPoint;\n            wayPointItem.Action = OnWayPoint;\n            dummyPointItem.Action = OnDummyPoint;\n            cargoBoxItem.Action = OnAddCargoBox;\n            mysteriousBoxItem.Action = OnAddMysteriousCube;\n            mysteriousBoxItem2.Action = OnAddMysteriousCube2;\n            mysteriousBoxItem3.Action = OnAddMysteriousCube3;\n            \n            StringBuilder[] nodePath = \n            {\n                MyTextsWrapper.Get(MyTextsWrapperEnum.PrefabContainer), \n                MyTextsWrapper.Get(MyTextsWrapperEnum.buildTypePanel),\n                MyGuiPrefabHelpers.GetMyGuiCategoryTypeHelper(CategoryTypesEnum.CHAMBERS).Description\n            };\n            TryExpand(nodePath);\n        }\n\n        private void AddLargeShipItems(MyTreeViewItem parentItem)\n        {\n            Vector2 itemSize = MyGuiManager.GetNormalizedSizeFromScreenSize(new Vector2(64, 64));\n            foreach (MyMwcObjectBuilder_LargeShip_TypesEnum enumValue in MyGuiLargeShipHelpers.MyMwcLargeShipTypesEnumValues)\n            {\n                if (enumValue != MyMwcObjectBuilder_LargeShip_TypesEnum.JEROMIE_INTERIOR_STATION && enumValue != MyMwcObjectBuilder_LargeShip_TypesEnum.CRUISER_SHIP)\n                {\n                    MyGuiLargeShipHelper largeShipHelper = MyGuiLargeShipHelpers.GetMyGuiLargeShipHelper(enumValue);\n                    var item = parentItem.AddItem(new StringBuilder(), largeShipHelper.Icon, itemSize, MyGuiManager.GetBlankTexture(), MyGuiManager.GetBlankTexture(), MyGuiConstants.CHECKBOX_SIZE);\n                    item.ToolTip = new MyToolTips(largeShipHelper.Description);\n                    item.Tag = enumValue;\n                    item.Action = OnAddLargeShip;\n                    item.DragDrop = m_addObjectTreeViewdragDrop;\n                }\n            }\n        }\n\n        private void AddDebrisItems(MyTreeViewItem parentItem)\n        {\n            Vector2 itemSize = MyGuiManager.GetNormalizedSizeFromScreenSize(new Vector2(64, 64));\n            foreach (MyMwcObjectBuilder_SmallDebris_TypesEnum enumValue in MyGuiSmallDebrisHelpers.MyMwcSmallDebrisEnumValues)\n            {\n                MyGuiSmallDebrisHelper smallDebrisHelper = MyGuiSmallDebrisHelpers.GetMyGuiSmallDebrisHelper(enumValue);\n                var item = parentItem.AddItem(new StringBuilder(), smallDebrisHelper.Icon, itemSize, MyGuiManager.GetBlankTexture(), MyGuiManager.GetBlankTexture(), MyGuiConstants.CHECKBOX_SIZE);\n                item.ToolTip = new MyToolTips(smallDebrisHelper.Description);\n                item.Tag = enumValue;\n                item.Action = OnAddDebris;\n                item.DragDrop = m_addObjectTreeViewdragDrop;\n            }\n        }\n\n        private MyTreeViewItem AddBaseDragTreeItem(MyTextsWrapperEnum text, MyTexture2D icon, MyTexture2D expand, MyTexture2D collapse, Vector2 smallIconSize, Vector2 expandIconSize, object tag)\n        {\n            var item = m_addObjectTreeView.AddItem(MyTextsWrapper.Get(text), icon, smallIconSize, expand, collapse, expandIconSize);\n            item.DragDrop = m_addObjectTreeViewdragDrop;\n            item.Tag = tag;\n            return item;            \n        }\n\n        private MyTreeViewItem AddBaseDragTreeItem(MyTreeViewItem parentItem, MyTextsWrapperEnum text, MyTexture2D icon, MyTexture2D expand, MyTexture2D collapse, Vector2 smallIconSize, Vector2 expandIconSize, object tag) \n        {\n            var item = parentItem.AddItem(MyTextsWrapper.Get(text), icon, smallIconSize, expand, collapse, expandIconSize);\n            item.DragDrop = m_addObjectTreeViewdragDrop;\n            item.Tag = tag;\n            return item;\n        }\n\n        protected override void AddPrefabItems(MyTreeViewItem parentItem, MyMwcObjectBuilder_Prefab_AppearanceEnum appearanceTextureEnum, BuildTypesEnum buildType, CategoryTypesEnum categoryType)\n        {\n            MyMwcLog.WriteLine(\"GOD AddPrefabItems - START\");\n\n            Vector2 itemSize = MyGuiConstants.CHECKBOX_SIZE * 3;\n            foreach (MyMwcObjectBuilderTypeEnum enumValue in MyGuiPrefabHelpers.MyMwcPrefabTypesEnumValues)\n            {\n                foreach (int prefabId in MyMwcObjectBuilder_Base.GetObjectBuilderIDs(enumValue))\n                {\n                    MyPrefabConfiguration config = MyPrefabConstants.GetPrefabConfiguration(enumValue, prefabId);\n                    MyGuiPrefabHelper prefabModuleHelper = MyGuiObjectBuilderHelpers.GetGuiHelper(enumValue, prefabId) as MyGuiPrefabHelper;\n\n                    if (config == null)\n                        continue;\n\n                    if (config.FactionSpecific.HasValue && config.FactionSpecific.Value != appearanceTextureEnum)\n                        continue;\n\n                    if (config.BuildType == buildType && config.CategoryType == categoryType && config.EnabledInEditor)\n                    {\n                        MyTexture2D previewTexture = MyGuiManager.GetPrefabPreviewTexture(enumValue, prefabId, appearanceTextureEnum);\n                        var item = parentItem.AddItem(new StringBuilder(), previewTexture, itemSize,\n                                                      MyGuiManager.GetBlankTexture(), MyGuiManager.GetBlankTexture(),\n                                                      MyGuiConstants.CHECKBOX_SIZE);\n                        item.ToolTip = GetPrefabToolTip(prefabModuleHelper.Description, config);\n                        //item.ToolTip = new MyToolTips(prefabModuleHelper.Description);\n                        item.Tag = new PrefabTag(enumValue, prefabId, appearanceTextureEnum, categoryType);\n                        item.Action = OnAddPrefab;\n                        item.DragDrop = m_addObjectTreeViewdragDrop;\n                    }                    \n                }\n            }            \n            MyMwcLog.WriteLine(\"GOD AddPrefabItems - END\");\n        }\n\n        private MyToolTips GetPrefabToolTip(StringBuilder prefabDescription, MyPrefabConfiguration prefabConfiguration)\n        {\n            StringBuilder retval = new StringBuilder(prefabDescription.ToString() + Environment.NewLine);\n            /*  //this is loading time killer!!\n            MyModel model;\n            string BBsize = \"\";\n            model = MyModels.GetModel(prefabConfiguration.ModelLod0Enum);\n            if (model == null || !model.LoadedData)\n            {\n                model = MyModels.GetModelOnlyModelInfo(prefabConfiguration.ModelLod0Enum);\n            }\n            if (model != null)\n            {\n                retval.AppendLine(\"LOD0 asset: \" + model.AssetName);\n                retval.AppendLine(\"LOD0 number of triangles: \" + model.ModelInfo.TrianglesCount.ToString());\n                retval.AppendLine(\"LOD0 number of vertexes: \" + model.ModelInfo.VerticesCount.ToString());\n                BBsize = \"Bounding box size: (\" + model.ModelInfo.BoundingBoxSize.X + \", \" + model.ModelInfo.BoundingBoxSize.Y + \", \" + model.ModelInfo.BoundingBoxSize.Z + \")\";\n            }\n            if (prefabConfiguration.ModelLod1Enum.HasValue)\n            {\n                model = MyModels.GetModel(prefabConfiguration.ModelLod1Enum.Value);\n                if (model == null || !model.LoadedData)\n                {\n                    model = MyModels.GetModelOnlyModelInfo(prefabConfiguration.ModelLod1Enum.Value);\n                }\n                if (model != null)\n                {\n                    retval.AppendLine(\"LOD1 asset: \" + model.AssetName);\n                    retval.AppendLine(\"LOD1 number of triangles: \" + model.ModelInfo.TrianglesCount.ToString());\n                    retval.AppendLine(\"LOD1 number of vertexes: \" + model.ModelInfo.VerticesCount.ToString());\n                }\n            }\n            if (prefabConfiguration.ModelCollisionEnum.HasValue)\n            {\n                model = MyModels.GetModel(prefabConfiguration.ModelCollisionEnum.Value);\n                if (model == null || !model.LoadedData)\n                {\n                    model = MyModels.GetModelOnlyModelInfo(prefabConfiguration.ModelCollisionEnum.Value);\n                }\n                if (model != null)\n                {\n                    retval.AppendLine(\"COL asset: \" + model.AssetName);\n                    retval.AppendLine(\"COL number of triangles: \" + model.ModelInfo.TrianglesCount.ToString());\n                    retval.AppendLine(\"COL number of vertexes: \" + model.ModelInfo.VerticesCount.ToString());\n                }\n            }\n            retval.Append(BBsize);\n                  */\n\n            return new MyToolTips(retval);\n        }\n\n        protected override void OnDragDrop(object sender, EventArgs ea)\n        {\n            // Return if drop is done on some control\n            foreach (var control in m_editorControls)\n            {\n                if (control == m_addObjectTreeViewdragDrop)\n                    continue;\n                if (control.Visible && control.ContainsMouse())\n                    return;\n            }\n\n            var tag = m_addObjectTreeViewdragDrop.DraggedItem.Tag;\n            if (tag is PrefabTag)\n            {\n                AddPrefab(tag as PrefabTag, MyGuiManager.MouseCursorPosition);\n            }\n            else if (tag is MyMwcObjectBuilder_LargeShip_TypesEnum?)\n            {\n                AddLargeShip(tag as MyMwcObjectBuilder_LargeShip_TypesEnum?, MyGuiManager.MouseCursorPosition);\n            }\n            else if (tag is MyMwcObjectBuilder_SmallDebris_TypesEnum?)\n            {\n                AddDebris(tag as MyMwcObjectBuilder_SmallDebris_TypesEnum?, MyGuiManager.MouseCursorPosition);\n            }\n            else if (tag is MyEditorAddObjectType)\n            {\n                switch ((MyEditorAddObjectType)tag)\n                {\n                    case MyEditorAddObjectType.ASTEROID:\n                        AddAsteroid(MyGuiManager.MouseCursorPosition);\n                        break;\n                    case MyEditorAddObjectType.SMALLSHIP:\n                        AddSmallShip(MyGuiManager.MouseCursorPosition);\n                        break;\n                    case MyEditorAddObjectType.SPAWNPOINT:\n                        AddSpawnPoint(MyGuiManager.MouseCursorPosition);\n                        break;\n                    case MyEditorAddObjectType.INFLUENCE_SPHERE:\n                        AddInfluenceSphere(MyGuiManager.MouseCursorPosition);\n                        break;\n                    case MyEditorAddObjectType.WAYPOINT:\n                        AddWayPoint(MyGuiManager.MouseCursorPosition);\n                        break;\n                    case MyEditorAddObjectType.DUMMYPOINT:\n                        AddDummyPoint(MyGuiManager.MouseCursorPosition);\n                        break;\n                    case MyEditorAddObjectType.CARGO_BOX:\n                        AddCargoBox(MyGuiManager.MouseCursorPosition);\n                        break;\n                    case MyEditorAddObjectType.MYSTERIOUS_CUBE:\n                        AddMysteriousCube(MyGuiManager.MouseCursorPosition);\n                        break;\n                    case MyEditorAddObjectType.MYSTERIOUS_CUBE2:\n                        AddMysteriousCube2(MyGuiManager.MouseCursorPosition);\n                        break;\n                    case MyEditorAddObjectType.MYSTERIOUS_CUBE3:\n                        AddMysteriousCube3(MyGuiManager.MouseCursorPosition);\n                        break;\n\n                    default:\n                        throw new NotImplementedException();\n                }\n            }\n        }\n\n        #region Add Object Handlers\n\n       private void OnAsteorid(object sender, EventArgs ea)\n        {\n            AddAsteroid(null);\n        }\n\n        private void OnSmallShip(object sender, EventArgs ea)\n        {\n            AddSmallShip(null);\n        }\n\n        private void OnWayPoint(object sender, EventArgs ea)\n        {\n            AddWayPoint(null);\n        }\n\n        private void OnSpawnPoint(object sender, EventArgs ea)\n        {\n            AddSpawnPoint(null);\n        }\n\n        private void OnInfluenceSphere(object sender, EventArgs ea)\n        {\n            AddInfluenceSphere(null);\n        }\n\n        private void OnAddPrefab(object sender, EventArgs ea)\n        {\n            AddPrefab((sender as MyTreeViewItem).Tag as PrefabTag);\n        }\n\n        private void OnAddLargeShip(object sender, EventArgs ea)\n        {\n            AddLargeShip((sender as MyTreeViewItem).Tag as MyMwcObjectBuilder_LargeShip_TypesEnum?);\n        }\n\n        private void OnAddDebris(object sender, EventArgs ea)\n        {\n            AddDebris((sender as MyTreeViewItem).Tag as MyMwcObjectBuilder_SmallDebris_TypesEnum?);\n        }\n\n        private void OnDummyPoint(object sender, EventArgs ea)\n        {\n            AddDummyPoint(null);\n        }\n\n        private void OnAddCargoBox(object sender, EventArgs ea) \n        {\n            AddCargoBox(null);\n        }\n\n        private void OnAddMysteriousCube(object sender, EventArgs ea)\n        {\n            AddMysteriousCube(null);\n        }\n\n        private void OnAddMysteriousCube2(object sender, EventArgs ea)\n        {\n            AddMysteriousCube2(null);\n        }\n\n        private void OnAddMysteriousCube3(object sender, EventArgs ea)\n        {\n            AddMysteriousCube3(null);\n        }\n\n        #endregion\n\n        private void AddPrefab(PrefabTag tag, Vector2? screenPosition = null)\n        {\n            if (tag == null)\n            {\n                return;\n            }\n\n            MyMwcObjectBuilder_PrefabBase prefabBuilder = null;\n            MyPrefabContainer container = MyEditor.Static.GetEditedPrefabContainer();\n\n            if (MyFakes.ENABLE_OBJECT_COUNTS_LIMITS)\n\t\t\t{\n            //here test if we can even add entity\n        \t    if (MyEntities.GetObjectsCount() >= MyEditorConstants.MAX_EDITOR_ENTITIES_LIMIT)\n    \t        {\n\t                MyAudio.AddCue2D(MySoundCuesEnum.GuiEditorObjectMoveInvalid);\n                    MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.MaxLargeShipsCountReached, MyTextsWrapperEnum.MessageBoxCaptionError, MyTextsWrapperEnum.Ok, null));\n            \t    return;\n          \t\t}\n            }\n            prefabBuilder = MyPrefabFactory.GetInstance().CreatePrefabObjectBuilder(tag.PrefabModule, tag.PrefabId, tag.FactionAppearance);            \n\n            if(container != null && prefabBuilder is MyMwcObjectBuilder_PrefabFoundationFactory && container.ContainsPrefab(PrefabTypesFlagEnum.FoundationFactory))\n            {\n                // prefab container can contains only one foundation factory\n                MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.PrefabContainerAlreadyContainsFoundationFactory,\n                        MyTextsWrapperEnum.YouCantAddFoundationFactory, MyTextsWrapperEnum.Ok, null));\n                    return;                \n            }\n\n            if (container == null)\n            {\n                List<MyMwcObjectBuilder_PrefabBase> prefabBuilders = new List<MyMwcObjectBuilder_PrefabBase>();\n                prefabBuilders.Add(prefabBuilder);\n                MyMwcObjectBuilder_PrefabContainer prefabContainerBuilder = new MyMwcObjectBuilder_PrefabContainer(\n                    null, MyMwcObjectBuilder_PrefabContainer_TypesEnum.INSTANCE, prefabBuilders, MyClientServer.LoggedPlayer.GetUserId(),\n                    MyMwcObjectBuilder_FactionEnum.Euroamerican, new MyMwcObjectBuilder_Inventory(new List<MyMwcObjectBuilder_InventoryItem>(), 1000));\n                MyEditor.Static.CreateFromObjectBuilder(prefabContainerBuilder, Matrix.Identity, screenPosition);\n            }\n            else\n            {\n                MyEditor.Static.CreateFromObjectBuilder(prefabBuilder, Matrix.Identity, screenPosition);\n            }\n        }\n\n        private void AddLargeShip(MyMwcObjectBuilder_LargeShip_TypesEnum? tag, Vector2? screenPosition = null)\n        {\n            if (!tag.HasValue)\n            {\n                return;\n            }\n\n            MyMwcObjectBuilder_LargeShip largeShipBuilder = new MyMwcObjectBuilder_LargeShip(tag.Value);\n            MyEditor.Static.CreateFromObjectBuilder(largeShipBuilder, Matrix.Identity, screenPosition);\n        }\n\n        private void AddDebris(MyMwcObjectBuilder_SmallDebris_TypesEnum? tag, Vector2? screenPosition = null)\n        {\n            if (!tag.HasValue)\n            {\n                return;\n            }\n\n            MyMwcObjectBuilder_SmallDebris smallDebrisBuilder = new MyMwcObjectBuilder_SmallDebris(tag.Value, false, 10000);\n            MyEditor.Static.CreateFromObjectBuilder(smallDebrisBuilder, Matrix.Identity, screenPosition);\n        }\n\n        private void AddDummyPoint(Vector2? screenPosition)\n        {\n            var dummyPointObjectBuilder = MyMwcObjectBuilder_Base.CreateNewObject(MyMwcObjectBuilderTypeEnum.DummyPoint, null) as MyMwcObjectBuilder_DummyPoint;\n            Debug.Assert(dummyPointObjectBuilder != null);\n\n            // set default size\n            dummyPointObjectBuilder.Size = new Vector3(MyDummyPointConstants.DEFAULT_DUMMYPOINT_SIZE, MyDummyPointConstants.DEFAULT_DUMMYPOINT_SIZE, MyDummyPointConstants.DEFAULT_DUMMYPOINT_SIZE);\n\n            MyEditor.Static.CreateFromObjectBuilder(dummyPointObjectBuilder, Matrix.Identity, screenPosition);\n        }\n\n        private void AddCargoBox(Vector2? screenPosition) \n        {\n            MyMwcObjectBuilder_CargoBox cargoBoxObjectBuilder = MyMwcObjectBuilder_Base.CreateNewObject(MyMwcObjectBuilderTypeEnum.CargoBox, (int)MyMwcObjectBuilder_CargoBox_TypesEnum.Type1) as MyMwcObjectBuilder_CargoBox;\n            MyEditor.Static.CreateFromObjectBuilder(cargoBoxObjectBuilder, Matrix.Identity, screenPosition);\n        }\n\n        private void AddMysteriousCube(Vector2? screenPosition)\n        {\n            MyMwcObjectBuilder_MysteriousCube mysteriousCubeObjectBuilder = MyMwcObjectBuilder_Base.CreateNewObject(MyMwcObjectBuilderTypeEnum.MysteriousCube, (int)MyMwcObjectBuilder_MysteriousCube_TypesEnum.Type1) as MyMwcObjectBuilder_MysteriousCube;\n            MyEditor.Static.CreateFromObjectBuilder(mysteriousCubeObjectBuilder, Matrix.Identity, screenPosition);\n        }\n\n        private void AddMysteriousCube2(Vector2? screenPosition)\n        {\n            MyMwcObjectBuilder_MysteriousCube mysteriousCubeObjectBuilder = MyMwcObjectBuilder_Base.CreateNewObject(MyMwcObjectBuilderTypeEnum.MysteriousCube, (int)MyMwcObjectBuilder_MysteriousCube_TypesEnum.Type2) as MyMwcObjectBuilder_MysteriousCube;\n            MyEditor.Static.CreateFromObjectBuilder(mysteriousCubeObjectBuilder, Matrix.Identity, screenPosition);\n        }\n\n        private void AddMysteriousCube3(Vector2? screenPosition)\n        {\n            MyMwcObjectBuilder_MysteriousCube mysteriousCubeObjectBuilder = MyMwcObjectBuilder_Base.CreateNewObject(MyMwcObjectBuilderTypeEnum.MysteriousCube, (int)MyMwcObjectBuilder_MysteriousCube_TypesEnum.Type3) as MyMwcObjectBuilder_MysteriousCube;\n            MyEditor.Static.CreateFromObjectBuilder(mysteriousCubeObjectBuilder, Matrix.Identity, screenPosition);\n        }\n\n        //private void AddFoundationFactory(Vector2? screenPosition)\n        //{            \n        //    // we adding foundation factory, to existing and editing prefab container\n        //    if (MyEditor.Static.GetEditedPrefabContainer() != null)\n        //    {              \n        //        // prefab container can contains only one foundation factory\n        //        if(MyEditor.Static.GetEditedPrefabContainer().ContainsPrefab(PrefabTypesFlagEnum.FoundationFactory))\n        //        {\n        //            MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyTextsWrapperEnum.PrefabContainerAlreadyContainsFoundationFactory,\n        //                MyTextsWrapperEnum.YouCantAddFoundationFactory, MyTextsWrapperEnum.Ok, null));\n        //            return;\n        //        }\n                \n        //        MyPrefabConfiguration ffConfiguration = MyPrefabConstants.GetPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabFoundationFactory, 0);\n        //        MyMwcObjectBuilder_Base builder = MyPrefabFactory.GetInstance().CreatePrefabObjectBuilder()\n        //        MyPrefabFoundationFactory foundationFactory = MyPrefabFactory.GetInstance().CreatePrefab(null, MyEditor.Static.GetEditedPrefabContainer(), )\n\n        //        foundationFactory.Init(null, foundationFactoryObjectBuilder,);\n        //        MyEntities.Add(foundationFactory);\n        //    }\n        //    // we adding foundation factory as new entity a we want create new prefab container for it\n        //    else\n        //    {\n        //        MyMwcObjectBuilder_PrefabContainer prefabContainerObjectBuilder = \n        //            new MyMwcObjectBuilder_PrefabContainer(null, MyMwcObjectBuilder_PrefabContainer_TypesEnum.INSTANCE, new List<MyMwcObjectBuilder_PrefabBase>(),\n        //                MyClientServer.LoggedPlayer.GetUserId(), MyMwcObjectBuilder_FactionEnum.Euroamerican, \n        //                new MyMwcObjectBuilder_Inventory(new List<MyMwcObjectBuilder_InventoryItem>(), MyInventory.DEFAULT_MAX_ITEMS));\n        //        foundationFactoryObjectBuilder.PrefabContainer = prefabContainerObjectBuilder;\n        //        foundationFactory.Init(null, foundationFactoryObjectBuilder, Matrix.Identity);\n        //        MyEntities.Add(foundationFactory);\n\n        //        float distanceFromCamera = foundationFactory.WorldVolume.Radius * 2;                \n        //        Vector3 newPosition = MySpectator.Position + distanceFromCamera * MySpectator.Orientation;\n        //        foundationFactory.MoveAndRotate(newPosition, foundationFactory.GetWorldRotation());                \n        //    }\n        //}\n\n        private void AddAsteroid(Vector2? screenPosition)\n        {\n            MyGuiManager.AddScreen(new MyGuiScreenEditorAsteroid(screenPosition));\n        }\n\n        private void AddSmallShip(Vector2? screenPosition)\n        {\n            MyGuiManager.AddScreen(new MyGuiScreenEditorSmallShip(screenPosition));\n        }\n\n        private void AddWayPoint(Vector2? screenPosition)\n        {\n            // display waypoints if they were hidden\n            // adding an entity will make its type selectable\n            if (!MyEntities.IsTypeSelectable(typeof(MyWayPoint)))\n            {\n                MyEntities.SetTypeHidden(typeof(MyWayPoint), false);\n                MyEntities.SetTypeSelectable(typeof(MyWayPoint), true);\n            }\n\n            var waypoint = MyWayPointGraph.CreateWaypoint(Vector3.Zero, null);\n            MyEditorGizmo.ClearSelection();\n            MyEditorGizmo.AddEntityToSelection(waypoint);\n            float distanceFromCamera = waypoint.WorldVolume.Radius * 2;\n            waypoint.MoveAndRotate(MySpectator.Position + distanceFromCamera * MySpectator.Orientation, waypoint.GetWorldRotation());\n        }\n\n        private void AddSpawnPoint(Vector2? screenPosition)\n        {\n            MyGuiManager.AddScreen(new MyGuiScreenEditorSpawnPoint());\n        }\n\n        private void AddInfluenceSphere(Vector2? screenPosition)\n        {\n            MyGuiManager.AddScreen(new MyGuiScreenEditorInfluenceSphere(screenPosition));\n        }\n\n\n        protected override void FilterAddObjectTree(MyPrefabSnapPoint myPrefabSnapPoint)\n        {\n            if (myPrefabSnapPoint != m_activeSnapPointFilter || m_filterTextbox.Text != m_activeTextFilter || MyEditor.Static.SnapPointFilter != m_savedSnapPointFilter/* || MyEditor.GetCurrentState() ==  MyEditorStateEnum.SELECTED_WAYPOINT*/)\n            {\n                m_activeSnapPointFilter = myPrefabSnapPoint;\n                m_activeTextFilter = m_filterTextbox.Text;\n                m_savedSnapPointFilter = MyEditor.Static.SnapPointFilter;\n\n                m_addObjectTreeView.FilterTree(item =>\n                {\n                    /*\n                    // filter by waypoint\n                    if(MyEditor.GetCurrentState() ==  MyEditorStateEnum.SELECTED_WAYPOINT){\n                        if( string.Compare(item.Text.ToString(), \"WayPoint\") == 0)\n                            return true;\n                        else\n                            return false;\n                    }\n                    */\n                    // Filter by text\n                    if (!string.IsNullOrEmpty(m_activeTextFilter))\n                    {\n                        if (item.ToolTip == null)\n                        {\n                            return false;\n                        }\n\n                        var toolTips = item.ToolTip.GetToolTips();\n                        if (toolTips.Count == 0 || toolTips[0].Text.ToString().IndexOf(m_activeTextFilter, StringComparison.InvariantCultureIgnoreCase) == -1)\n                        {\n                            return false;\n                        }\n                    }\n\n                    // Filter by snap point\n                    if (!MyEditor.Static.SnapPointFilter || myPrefabSnapPoint == null)\n                    {\n                        // Always pass if snap point filter is disabled or no snap point selected\n                        return true;\n                    }\n\n                    var tag = item.Tag as PrefabTag;\n                    if (tag != null)\n                    {\n                        var snapPoints = MyEditor.GetPrefabSnapPoints(tag.PrefabModule, tag.PrefabId);\n                        return snapPoints.Exists(a => myPrefabSnapPoint.CanAttachTo(a));\n                    }\n\n                    return false;\n                });\n            }\n        }\n\n        public override void Draw()\n        {\n            if (MyEditor.EnableTextsDrawing)\n            {\n                DrawTexts();\n            }\n            base.Draw();\n        }\n\n        private void ClearTexts()\n        {\n            foreach (StringBuilder sb in m_rightTopCorner_sb)\n            {\n                MyMwcUtils.ClearStringBuilder(sb);\n            }\n\n            foreach (StringBuilder sb in m_rightBottomCorner_sb)\n            {\n                MyMwcUtils.ClearStringBuilder(sb);\n            }\n        }\n\n        private void DrawTexts()\n        {\n            ClearTexts();\n\n            #region General info\n\n            //this can help players to always see, if editing story or mmo or sandbox sector\n            // add text here about max entities \n            // add text here about max prefab child count\n            if (MyGuiScreenGamePlay.Static.GetSessionType().HasValue)\n            {\n                m_rightTopCorner_sb[(int)MyEditorTopTextInfoPropertiesEnum.SESSION_TYPE].Append(MyTextsWrapper.Get(MyTextsWrapperEnum.SessionType)).\n                    Append(MyGuiScreenGamePlay.Static.GetSessionTypeFriendlyName());\n            }\n\n            if (MySession.PlayerShip != null)\n            {\n                m_rightTopCorner_sb[(int)MyEditorTopTextInfoPropertiesEnum.PLAYER_START_POSITION].Append(MyTextsWrapper.Get(MyTextsWrapperEnum.PlayerStartPosition)).\n                    Append(MyUtils.GetFormatedVector3(MySession.PlayerShip.WorldMatrix.Translation, 3));\n            }\n\n            m_rightTopCorner_sb[(int)MyEditorTopTextInfoPropertiesEnum.SECTOR_IDENTIFIER].Append(MyTextsWrapper.Get(MyTextsWrapperEnum.SectorIdentifier)).\n                Append(MyGuiScreenGamePlay.Static.GetSectorIdentifier().ToString());\n\n            if (MyVoxelMaps.GetVoxelMapsCount() > 0)\n            {\n                m_rightTopCorner_sb[(int)MyEditorTopTextInfoPropertiesEnum.NUMBER_OF_ASTEROIDS_IN_SECTOR].Append(MyTextsWrapper.Get(MyTextsWrapperEnum.NumberOfAsteroidsInSector));\n                m_rightTopCorner_sb[(int)MyEditorTopTextInfoPropertiesEnum.NUMBER_OF_ASTEROIDS_IN_SECTOR].AppendInt32(MyVoxelMaps.GetVoxelMapsCount());                \n                m_rightTopCorner_sb[(int)MyEditorTopTextInfoPropertiesEnum.NUMBER_OF_ALL_VOXEL_SHAPES_IN_SECTOR].Append(MyTextsWrapper.Get(MyTextsWrapperEnum.NumberOfVoxelShapesInSector));\n                m_rightTopCorner_sb[(int)MyEditorTopTextInfoPropertiesEnum.NUMBER_OF_ALL_VOXEL_SHAPES_IN_SECTOR].Append(\" : \");                \n                m_rightTopCorner_sb[(int)MyEditorTopTextInfoPropertiesEnum.NUMBER_OF_ALL_VOXEL_SHAPES_IN_SECTOR].AppendInt32(MyVoxelMaps.GetVoxelShapesCount());\n                m_rightTopCorner_sb[(int)MyEditorTopTextInfoPropertiesEnum.NUMBER_OF_ALL_VOXEL_SHAPES_IN_SECTOR].Append(\" / \");\n                m_rightTopCorner_sb[(int)MyEditorTopTextInfoPropertiesEnum.NUMBER_OF_ALL_VOXEL_SHAPES_IN_SECTOR].AppendInt32(MyVoxelConstants.MAX_VOXEL_HAND_SHAPES_COUNT);                \n                m_rightTopCorner_sb[(int)MyEditorTopTextInfoPropertiesEnum.SELECTED_VOXEL_MAP_REMAINING_EXPLOSIONS_FOR_SAVE].Append(MyTextsWrapper.Get(MyTextsWrapperEnum.SelectedVoxelMapRemainingSaveExplosions)).\n                                        Append(MyVoxelMaps.GetRemainingVoxelHandShapes());\n                //TODO number of voxel shapes\n            }\n\n            if (MyEntities.GetObjectsCount() > 0)\n            {\n                m_rightTopCorner_sb[(int)MyEditorTopTextInfoPropertiesEnum.NUMBER_OF_OBJECTS_IN_SECTOR].Append(MyTextsWrapper.Get(MyTextsWrapperEnum.NumberOfObjectsInSector));\n                m_rightTopCorner_sb[(int)MyEditorTopTextInfoPropertiesEnum.NUMBER_OF_OBJECTS_IN_SECTOR].AppendInt32(MyEntities.GetEditorObjectsCount());\n                //m_rightTopCorner_sb[(int)MyEditorTopTextInfoPropertiesEnum.NUMBER_OF_OBJECTS_IN_SECTOR].Append(\" : \");\n                //m_rightTopCorner_sb[(int)MyEditorTopTextInfoPropertiesEnum.NUMBER_OF_OBJECTS_IN_SECTOR].Append(MyEntities.GetObjectsCount().ToString());\n                m_rightTopCorner_sb[(int)MyEditorTopTextInfoPropertiesEnum.NUMBER_OF_OBJECTS_IN_SECTOR].Append(\" / \");\n                m_rightTopCorner_sb[(int)MyEditorTopTextInfoPropertiesEnum.NUMBER_OF_OBJECTS_IN_SECTOR].Append(MyEditorConstants.MAX_EDITOR_ENTITIES_LIMIT.ToString());\n            }\n\n\n            //m_rightTopCorner_sb[(int)MyEditorTopTextInfoPropertiesEnum.SELECTED_CONTAINER_OBJECT_PREFABS_LIMIT] = new StringBuilder();\n            MyPrefabContainer container = MyEditor.Static.GetEditedPrefabContainer();\n            if (container != null)\n            {\n                m_rightTopCorner_sb[(int)MyEditorTopTextInfoPropertiesEnum.NUMBER_OF_EDITALE_OBJECTS].Append(MyTextsWrapper.Get(MyTextsWrapperEnum.ObjectsInContainer));\n                m_rightTopCorner_sb[(int)MyEditorTopTextInfoPropertiesEnum.NUMBER_OF_EDITALE_OBJECTS].Append(\" : \");\n                m_rightTopCorner_sb[(int)MyEditorTopTextInfoPropertiesEnum.NUMBER_OF_EDITALE_OBJECTS].Append(container.GetWorkingPrefabsCount().ToString());\n                m_rightTopCorner_sb[(int)MyEditorTopTextInfoPropertiesEnum.NUMBER_OF_EDITALE_OBJECTS].Append(\" / \");\n                m_rightTopCorner_sb[(int)MyEditorTopTextInfoPropertiesEnum.NUMBER_OF_EDITALE_OBJECTS].Append(MyPrefabContainerConstants.MAX_PREFABS_IN_CONTAINER.ToString());\n            }\n\n            if (MyEditor.TransformLocked)\n            {\n                m_rightTopCorner_sb[(int)MyEditorTopTextInfoPropertiesEnum.TRANSFORM_LOCKED].Append(\"Transform locked\");\n            }\n\n            // show significant info at the bottom right corner\n            m_rightBottomCorner_sb[(int)MyEditorBottomTextInfoPropertiesEnum.SPECTATOR_POSITION].Append(MyTextsWrapper.Get(MyTextsWrapperEnum.SpectatorPosition)).\n                Append(MyUtils.GetFormatedVector3(MySpectator.Position, 3));\n\n            m_rightBottomCorner_sb[(int)MyEditorBottomTextInfoPropertiesEnum.SPECTATOR_SPEED_INDICATOR].Append(MyTextsWrapper.Get(MyTextsWrapperEnum.SpectatorSpeedIndicator)).\n                Append(MySpectator.SpeedMode);\n\n            m_rightBottomCorner_sb[(int)MyEditorBottomTextInfoPropertiesEnum.GRID_SCALE_INDICATOR].Append(MyTextsWrapper.Get(MyTextsWrapperEnum.GridScaleIndicator));\n            m_rightBottomCorner_sb[(int)MyEditorBottomTextInfoPropertiesEnum.GRID_SCALE_INDICATOR].Append(MyEditorGrid.GetGridStepInMeters());\n            m_rightBottomCorner_sb[(int)MyEditorBottomTextInfoPropertiesEnum.GRID_SCALE_INDICATOR].Append(MyTextsWrapper.Get(MyTextsWrapperEnum.GridInMeters));\n\n            m_rightBottomCorner_sb[(int)MyEditorBottomTextInfoPropertiesEnum.GIZMO_SPACE].Append(MyTextsWrapper.Get(MyTextsWrapperEnum.GizmoSpaceEditorText)).\n                Append(MyEditorGizmo.ActiveSpace == TransformSpace.WORLD ? MyTextsWrapper.Get(MyTextsWrapperEnum.GizmoSpaceWorld) : MyTextsWrapper.Get(MyTextsWrapperEnum.GizmoSpaceLocal));\n\n            m_rightBottomCorner_sb[(int)MyEditorBottomTextInfoPropertiesEnum.GRID_SNAP].Append(MyTextsWrapper.Get(MyTextsWrapperEnum.GridSnapEditorText)).\n                Append(MyEditorGizmo.SnapEnabled ? MyTextsWrapper.Get(MyTextsWrapperEnum.On) : MyTextsWrapper.Get(MyTextsWrapperEnum.Off));\n\n\n            StringBuilder rotateSnapping = null;\n            switch (MyEditorGizmo.ActiveRotateSnapping)\n            {\n                case RotateSnapping.NONE:\n                    rotateSnapping = MyTextsWrapper.Get(MyTextsWrapperEnum.SnapOff);\n                    break;\n                case RotateSnapping.FIVE_DEGREES:\n                    rotateSnapping = MyTextsWrapper.Get(MyTextsWrapperEnum.Snap5Deg);\n                    break;\n                case RotateSnapping.FIFTEEN_DEGREES:\n                    rotateSnapping = MyTextsWrapper.Get(MyTextsWrapperEnum.Snap15Deg);\n                    break;\n                case RotateSnapping.FORTYFIVE_DEGREES:\n                    rotateSnapping = MyTextsWrapper.Get(MyTextsWrapperEnum.Snap45Degs);\n                    break;\n                case RotateSnapping.NINETY_DEGREES:\n                    rotateSnapping = MyTextsWrapper.Get(MyTextsWrapperEnum.Snap90Deg);\n                    break;\n\n                default:\n                    System.Diagnostics.Debug.Assert(false);\n                    break;\n            }\n\n            m_rightBottomCorner_sb[(int)MyEditorBottomTextInfoPropertiesEnum.ROTATE_SNAP].Append(MyTextsWrapper.Get(MyTextsWrapperEnum.RotateSnapping)).\n                Append(rotateSnapping);\n           \n            if (MyEditor.Static.CollidingElements.Count > 0)\n            {\n\n                m_rightTopCorner_sb[(int)MyEditorTopTextInfoPropertiesEnum.WORLD_COLLIDING_OBJECTS].Append(MyTextsWrapper.Get(MyTextsWrapperEnum.CollidingObjects));\n                m_rightTopCorner_sb[(int)MyEditorTopTextInfoPropertiesEnum.WORLD_COLLIDING_OBJECTS].Append(\" : \");\n                m_rightTopCorner_sb[(int)MyEditorTopTextInfoPropertiesEnum.WORLD_COLLIDING_OBJECTS].Append(MyEditor.Static.CollidingElements.Count.ToString());\n\n            }\n\n\n            #endregion\n\n            // Display for selected object(one)\n            if (MyEditorGizmo.IsOnlyOneEntitySelected())\n            {\n                #region One phys object text info\n                MyEntity entity = MyEditorGizmo.GetFirstSelected();\n\n                m_rightTopCorner_sb[(int)MyEditorTopTextInfoPropertiesEnum.SELECTED_OBJECT_TYPE].Append(MyTextsWrapper.Get(MyTextsWrapperEnum.SelectedObjectType)).\n                    Append(entity.GetFriendlyName());\n\n                if (!string.IsNullOrEmpty(entity.DisplayName))\n                {\n                    m_rightTopCorner_sb[(int)MyEditorTopTextInfoPropertiesEnum.SELECTED_OBJECT_HUD_LABEL_TEXT].Append(MyTextsWrapper.Get(MyTextsWrapperEnum.SelectedObjectHudLabelText)).\n                        Append(entity.DisplayName);\n                }\n\n\n                if (MyEditor.Static.CheckForEntityChildsCollisions(entity))\n                {\n                    m_rightTopCorner_sb[(int)MyEditorTopTextInfoPropertiesEnum.SELECTED_OBJECT_COLLISION_OBJECTS].Append(MyTextsWrapper.Get(MyTextsWrapperEnum.ObjectInCollisionWith));\n                }\n                if (entity is MyVoxelMap)\n                {\n                    var v = entity as MyVoxelMap;\n                    //m_rightTopCorner_sb[(int)MyEditorTopTextInfoPropertiesEnum.VOXEL_FILE].Append(MyTextsWrapper.Get(MyTextsWrapperEnum.Voxel));\n                    //m_rightTopCorner_sb[(int)MyEditorTopTextInfoPropertiesEnum.VOXEL_FILE].Append(\" : \");\n                    //m_rightTopCorner_sb[(int)MyEditorTopTextInfoPropertiesEnum.VOXEL_FILE].Append(MyGuiAsteroidHelpers.GetMyGuiVoxelFileHelper(v.GetVoxelFile()).Description);\n                    //m_rightTopCorner_sb[(int)MyEditorTopTextInfoPropertiesEnum.VOXEL_FILE].Append(\" \");\n                    //m_rightTopCorner_sb[(int)MyEditorTopTextInfoPropertiesEnum.VOXEL_FILE].Append(\"(id: \");\n                    //m_rightTopCorner_sb[(int)MyEditorTopTextInfoPropertiesEnum.VOXEL_FILE].Append((int)v.GetVoxelFile());\n                    //m_rightTopCorner_sb[(int)MyEditorTopTextInfoPropertiesEnum.VOXEL_FILE].Append(\")\");\n                    //m_rightTopCorner_sb[(int)MyEditorTopTextInfoPropertiesEnum.VOXEL_FILE].Replace(Environment.NewLine, \" \");\n\n                    //m_rightTopCorner_sb[(int)MyEditorTopTextInfoPropertiesEnum.VOXEL_MATERIAL].Append(MyTextsWrapper.Get(MyTextsWrapperEnum.AsteroidMaterial));\n                    //m_rightTopCorner_sb[(int)MyEditorTopTextInfoPropertiesEnum.VOXEL_MATERIAL].Append(\" : \");\n                    //m_rightTopCorner_sb[(int)MyEditorTopTextInfoPropertiesEnum.VOXEL_MATERIAL].Append(MyGuiAsteroidHelpers.GetMyGuiVoxelMaterialHelper(v.BaseMaterial).Description);\n                    //m_rightTopCorner_sb[(int)MyEditorTopTextInfoPropertiesEnum.VOXEL_MATERIAL].Append(\" \");\n                    //m_rightTopCorner_sb[(int)MyEditorTopTextInfoPropertiesEnum.VOXEL_MATERIAL].Append(\"(id: \");\n                    //m_rightTopCorner_sb[(int)MyEditorTopTextInfoPropertiesEnum.VOXEL_MATERIAL].Append((int)v.BaseMaterial);\n                    //m_rightTopCorner_sb[(int)MyEditorTopTextInfoPropertiesEnum.VOXEL_MATERIAL].Append(\")\");\n\n                    MyMwcVector3Short intPosition = MyVoxelMaps.GetVoxelCenterCoordinateFromMeters(v.PositionLeftBottomCorner);\n                    m_rightTopCorner_sb[(int)MyEditorTopTextInfoPropertiesEnum.VOXEL_POSITION_INT].Append(MyTextsWrapper.Get(MyTextsWrapperEnum.Voxel));\n                    m_rightTopCorner_sb[(int)MyEditorTopTextInfoPropertiesEnum.VOXEL_POSITION_INT].Append(\" \");\n                    m_rightTopCorner_sb[(int)MyEditorTopTextInfoPropertiesEnum.VOXEL_POSITION_INT].Append(MyTextsWrapper.Get(MyTextsWrapperEnum.Position));\n                    m_rightTopCorner_sb[(int)MyEditorTopTextInfoPropertiesEnum.VOXEL_POSITION_INT].Append(\" : \");\n                    m_rightTopCorner_sb[(int)MyEditorTopTextInfoPropertiesEnum.VOXEL_POSITION_INT].AppendFormat(\"{{X: {0} Y: {1} Z: {2}}}\", intPosition.X, intPosition.Y, intPosition.Z);\n                }\n\n                m_rightTopCorner_sb[(int)MyEditorTopTextInfoPropertiesEnum.SELECTED_OBJECT_POSITION].Append(MyTextsWrapper.Get(MyTextsWrapperEnum.SelectedObjectPosition)).\n                    Append(MyUtils.GetFormatedVector3(entity.GetPosition(), 3));\n\n                m_rightTopCorner_sb[(int)MyEditorTopTextInfoPropertiesEnum.SELECTED_OBJECT_ORIENTATION_FORWARD].Append(MyTextsWrapper.Get(MyTextsWrapperEnum.SelectedObjectOrientationForward)).\n                   Append(MyUtils.GetFormatedVector3(entity.GetWorldRotation().Forward, 3));\n\n                m_rightTopCorner_sb[(int)MyEditorTopTextInfoPropertiesEnum.SELECTED_OBJECT_ORIENTATION_UP].Append(MyTextsWrapper.Get(MyTextsWrapperEnum.SelectedObjectOrientationUp)).\n                   Append(MyUtils.GetFormatedVector3(entity.GetWorldRotation().Up, 3));\n\n                if (entity is MyVoxelMap)\n                {\n                    MyVoxelMap voxelMap = (MyVoxelMap)entity;\n\n                    //size of the voxel map in meters\n                    m_rightTopCorner_sb[(int)MyEditorTopTextInfoPropertiesEnum.SELECTED_OBJECT_SIZE_IN_METERS].Append(MyTextsWrapper.Get(MyTextsWrapperEnum.SelectedObjectSizeInMeters)).\n                        Append(MyUtils.GetFormatedVector3(voxelMap.SizeInMetres, 3));                    \n                }\n                else\n                {\n                    //size of the other objects in meters\n                    m_rightTopCorner_sb[(int)MyEditorTopTextInfoPropertiesEnum.SELECTED_OBJECT_SIZE_IN_METERS].Append(MyTextsWrapper.Get(MyTextsWrapperEnum.SelectedObjectSizeInMeters)).\n                        Append(MyUtils.GetFormatedVector3(entity.LocalAABB.Size(), 3));\n                }\n\n                // entity Id\n                if (entity.EntityId != null) \n                {\n                    m_rightTopCorner_sb[(int)MyEditorTopTextInfoPropertiesEnum.ENTITY_ID].Append(MyTextsWrapper.Get(MyTextsWrapperEnum.EntityId)).\n                        Append(entity.EntityId.Value.NumericValue);\n                }\n                #endregion\n            }\n            else if (MyEditorGizmo.IsMoreThanOneEntitySelected())\n            {\n                // In case of multiple objects selected, display center position of gizmo\n                m_rightTopCorner_sb[(int)MyEditorTopTextInfoPropertiesEnum.SELECTED_OBJECT_POSITION].Append(MyTextsWrapper.Get(MyTextsWrapperEnum.SelectedObjectPosition)).\n                                    Append(MyUtils.GetFormatedVector3(MyEditorGizmo.Position, 3));\n            }\n\n            if (MyEditorGizmo.IsAnyEntitySelected())\n            {\n                if (MyEditorGizmo.TransformationActive && MyEditorGizmo.ActiveMode == GizmoMode.ROTATE)\n                {\n                    m_rightTopCorner_sb[(int)MyEditorTopTextInfoPropertiesEnum.OBJECT_AXIS_ROTATION_AMOUNT].Append(MyTextsWrapper.Get(MyTextsWrapperEnum.EditorObjectAxisRotationAmount)).\n                   Append(MyEditorGizmo.RotationAmountInDegrees);\n                }\n            }\n\n            #region Draw Strings\n\n            float TEXT_OFFSET_Y = 0.018f;\n\n            int topAlignementCounter = 0;\n\n            Vector2 rightTop = MyGuiManager.GetScreenTextRightTopPosition() + new Vector2(0, MyGuiConstants.TOOLBAR_BUTTON_SIZE.Y + MyGuiConstants.TOOLBAR_PADDING.Y);\n\n            for (int i = 0; i < m_rightTopCorner_sb.Length; i++)\n            {\n                if (m_rightTopCorner_sb[i].Length > 0)\n                {\n                    //test for red flashing\n                    if (\n                        i == (int)MyEditorTopTextInfoPropertiesEnum.WORLD_COLLIDING_OBJECTS ||\n                        i == (int)MyEditorTopTextInfoPropertiesEnum.SELECTED_OBJECT_COLLISION_OBJECTS ||                        \n                        (i == (int)MyEditorTopTextInfoPropertiesEnum.SELECTED_VOXEL_HAND_SHAPES_INFO && MyEditorGizmo.GetFirstSelected() != null && MyVoxelMaps.GetRemainingVoxelHandShapes() == 0) ||\n                        (i == (int)MyEditorTopTextInfoPropertiesEnum.NUMBER_OF_OBJECTS_IN_SECTOR && MyEntities.GetEditorObjectsCount() >= MyEditorConstants.MAX_EDITOR_ENTITIES_LIMIT) ||\n                        (i == (int)MyEditorTopTextInfoPropertiesEnum.NUMBER_OF_EDITALE_OBJECTS && container != null && container.GetWorkingPrefabsCount() >= MyPrefabContainerConstants.MAX_PREFABS_IN_CONTAINER)\n                        )\n                    {\n                        if (MyMinerGame.TotalTimeInMilliseconds % 250 > 125)\n                        {\n                            MyGuiManager.DrawString(MyGuiManager.GetFontMinerWarsWhite(), m_rightTopCorner_sb[i],\n                                rightTop + new Vector2(0, topAlignementCounter * TEXT_OFFSET_Y), MyGuiConstants.EDITOR_LABEL_TEXT_SCALE * 0.7f,\n                                Color.Red,\n                                MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_TOP);\n                        }\n                    }\n                    else\n                    {\n                        MyGuiManager.DrawString(MyGuiManager.GetFontMinerWarsWhite(), m_rightTopCorner_sb[i],\n                            rightTop + new Vector2(0, topAlignementCounter * TEXT_OFFSET_Y), MyGuiConstants.EDITOR_LABEL_TEXT_SCALE * 0.7f,\n                            MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_TOP);\n                    }\n                    topAlignementCounter++;\n                }\n            }\n\n            int bottomAlignementCounter = 0;\n            for (int i = 0; i < m_rightBottomCorner_sb.Length; i++)\n            {\n                if (m_rightBottomCorner_sb[i].Length > 0)\n                {\n                    MyGuiManager.DrawString(MyGuiManager.GetFontMinerWarsWhite(), m_rightBottomCorner_sb[i],\n                        MyGuiManager.GetScreenTextRightBottomPosition() + new Vector2(0, -(bottomAlignementCounter * TEXT_OFFSET_Y)), MyGuiConstants.EDITOR_LABEL_TEXT_SCALE * 0.65f,\n                        MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_TOP);\n                    bottomAlignementCounter++;\n                }\n            }\n\n            if (MyEditor.Static.IsEditingPrefabContainer())\n            {\n                Vector4 color = MyGuiConstants.LABEL_TEXT_COLOR;\n                float timeBlic = MyMinerGame.TotalGamePlayTimeInMilliseconds % 480;\n                if (timeBlic > 250) timeBlic = 480 - timeBlic;\n                timeBlic = MathHelper.Clamp(1 - timeBlic / 250, 0, 1);\n                color.W = MathHelper.Lerp(0.3f, 1f, timeBlic);\n\n                MyGuiManager.DrawString(MyGuiManager.GetFontMinerWarsWhite(), m_prefabContainerEditingActiveText,\n                        (MyGuiManager.GetScreenTextLeftBottomPosition() + MyGuiManager.GetScreenTextRightBottomPosition()) / 2, MyGuiConstants.EDITOR_LABEL_TEXT_SCALE, new Color(color), MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_TOP);\n            }\n\n            // waypoint help string\n            if (MyEditorGizmo.SelectedEntities.Find(a => a is MyWayPoint) != null)\n            {\n                StringBuilder waypointHelp = new StringBuilder(\"\");\n                if (MyWayPointGraph.SelectedPath == null)\n                {\n                    waypointHelp.Append(m_editingWayPointConnectionsText);\n                }\n                else\n                {\n                    waypointHelp.AppendFormat(m_editingWayPointConnectionsPathSelectedText.ToString(), MyWayPointGraph.SelectedPath.Name);\n                }\n                    \n                MyGuiManager.DrawString(MyGuiManager.GetFontMinerWarsWhite(), waypointHelp,\n                    ((MyGuiManager.GetScreenTextLeftBottomPosition() + MyGuiManager.GetScreenTextRightBottomPosition()) / 2) - new Vector2(0.0f, 0.075f), MyGuiConstants.EDITOR_LABEL_TEXT_SCALE,\n                    new Color(MyGuiConstants.LABEL_TEXT_COLOR), MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_TOP\n                );\n            }\n\n            #endregion\n        }\n\n        public override void Update()\n        {\n            base.Update();\n        }        \n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Helpers/MyGuiHelperBase.cs",
    "content": "﻿using System.Text;\nusing MinerWarsMath.Graphics;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing System.Diagnostics;\n\nnamespace MinerWars.AppCode.Game.GUI.Helpers\n{\n    enum MyInventoryAmountTextAlign\n    {\n        BottomRight,\n        MiddleRight,\n    }\n\n    class MyGuiHelperBase\n    {\n        private const string LINE_SPLIT_SEPARATOR = \" | \";\n        private static readonly string[] LINE_SEPARATOR = new string[] { System.Environment.NewLine };\n\n        protected MyTexture2D m_icon;\n\n        private MyTextsWrapperEnum m_descriptionEnum;\n        public MyTextsWrapperEnum DescriptionEnum \n        {\n            get { return m_descriptionEnum; }\n            set \n            {\n                if (value != m_descriptionEnum) \n                {\n                    m_descriptionEnum = value;\n                    UpdateMultilineDescription();\n                    m_nameIsDirty = true;\n                }\n            }\n        }\n\n        private bool m_nameIsDirty = false;\n        private StringBuilder m_multiLineDescription = new StringBuilder();\n        public StringBuilder MultiLineDescription\n        {\n            get\n            {\n                if (m_nameIsDirty)\n                {\n                    UpdateMultilineDescription();\n                    UpdateName();\n                    m_nameIsDirty = false;\n                }\n                return m_multiLineDescription;\n            }\n        }\n\n        protected StringBuilder m_name = new StringBuilder();\n        public StringBuilder Name \n        { \n            get \n            {\n                if (m_nameIsDirty) \n                {\n                    UpdateName();\n                    m_nameIsDirty = false;\n                }\n                return m_name; \n            } \n        }\n\n        public bool IsNameDirty\n        {\n            get\n            {\n                return m_nameIsDirty;\n            }\n            set\n            {\n                m_nameIsDirty = value;\n            }\n        }\n\n        public StringBuilder Description\n        {\n            get\n            {\n                if (m_multiLineDescription != null && m_multiLineDescription.Length > 0)\n                    return m_multiLineDescription;\n                return MyTextsWrapper.Get(DescriptionEnum);\n            }\n        }\n        public virtual MyTexture2D Icon { get { return m_icon; } set { m_icon = value; } }\n        public MyInventoryAmountTextAlign InventoryTextAlign { get; set; }\n\n        public MyGuiHelperBase(MyTextsWrapperEnum description)\n        {\n            DescriptionEnum = description;\n        }\n\n        public MyGuiHelperBase(MyTexture2D icon, MyTextsWrapperEnum description)\n        {\n            m_icon = icon;\n            DescriptionEnum = description;\n        }\n\n        public MyGuiHelperBase(MyTexture2D icon, string description)\n        {\n            m_icon = icon;\n            m_multiLineDescription = new StringBuilder(description);\n        }\n\n        public virtual void DrawSpriteBatch(Vector2 normalizedCoord, Vector2 normalizedSize, Color color, MyGuiDrawAlignEnum drawAlign)\n        {\n            if (m_icon != null)\n            {\n                MyGuiManager.DrawSpriteBatch(m_icon, normalizedCoord, normalizedSize, color, drawAlign);\n            }\n        }\n\n        private void UpdateMultilineDescription() \n        {\n            m_multiLineDescription.Clear();\n            MyMwcUtils.SplitStringBuilder(m_multiLineDescription, Description, LINE_SPLIT_SEPARATOR);\n        }\n\n        protected virtual void UpdateName() \n        {\n            m_name.Clear();\n            string firstLine = m_multiLineDescription.ToString().Split(LINE_SEPARATOR, System.StringSplitOptions.RemoveEmptyEntries)[0].ToLower();\n            if (firstLine.Length > 0)\n            {\n                char firstChar = firstLine[0];\n                // try make first char as upper\n                if (firstChar >= 97 && firstChar <= 122) \n                {\n                    firstChar = (char)(firstChar - 32);\n                }\n\n                m_name.Append(firstChar);\n                for (int i = 1; i < firstLine.Length; i++)\n                {\n                    m_name.Append(firstLine[i]);\n                }\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Helpers/MyGuiInfluenceSphereHelper.cs",
    "content": "﻿using MinerWarsMath.Graphics;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Textures;\n\nnamespace MinerWars.AppCode.Game.GUI.Helpers\n{\n    class MyGuiInfluenceSphereHelper : MyGuiHelperBase\n    {\n        public MyGuiInfluenceSphereHelper(MyTexture2D icon, MyTextsWrapperEnum description)\n            : base(icon, description)\n        {\n        }\n\n        public MyGuiInfluenceSphereHelper(MyTexture2D icon, string description)\n            : base(icon, description)\n        {\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Helpers/MyGuiInfluenceSphereHelpers.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.App;\nusing MinerWarsMath.Graphics;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.InfluenceSpheres;\nusing MinerWars.AppCode.Game.Textures;\n\nnamespace MinerWars.AppCode.Game.GUI.Helpers\n{\n    using MinerWars.AppCode.Game.Audio;\n    using System.Diagnostics;\n    using SysUtils.Utils;\n    using MinerWars.AppCode.Game.Utils;\n\n    static class MyGuiInfluenceSphereHelpers\n    {\n        static Dictionary<short, MyGuiInfluenceSphereHelper> m_influenceSphereSoundHelpers = new Dictionary<short, MyGuiInfluenceSphereHelper>();\n\n        //Arrays of enums values\n        public static Array MyInfluenceSphereSoundHelperTypesEnumValues { get; private set; }\n\n        static MyGuiInfluenceSphereHelpers()\n        {\n            MyMwcLog.WriteLine(\"MyGuiInfluenceSphereHelpers()\");\n\n            MyInfluenceSphereSoundHelperTypesEnumValues = Enum.GetValues(typeof(MySoundCuesEnum));\n        }\n\n        public static MyGuiInfluenceSphereHelper GetInfluenceSphereSoundHelper(MySoundCuesEnum soundEnum)\n        {\n            MyGuiInfluenceSphereHelper ret;\n            if (m_influenceSphereSoundHelpers.TryGetValue((short)soundEnum, out ret))\n                return ret;\n            else\n                return null;\n        }\n\n        public static void UnloadContent()\n        {\n            m_influenceSphereSoundHelpers.Clear();\n        }\n\n        public static void LoadContent()\n        {\n\n            #region Sound influence sphere music helpers\n            \n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_RoomLarge01,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_RoomLarge01]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_RoomLarge02,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_RoomLarge02]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_RoomLarge03,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_RoomLarge03]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_RoomLarge04,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_RoomLarge04]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_RoomLarge05,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_RoomLarge05]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_RoomMed01,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_RoomMed01]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_RoomMed02,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_RoomMed02]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_RoomMed03,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_RoomMed03]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_RoomMed04,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_RoomMed04]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_RoomMed05,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_RoomMed05]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_RoomSmall01,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_RoomSmall01]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_RoomSmall02,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_RoomSmall02]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_RoomSmall03,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_RoomSmall03]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_RoomSmall04,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_RoomSmall04]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_StressLoop,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_StressLoop]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_TunnelLarge01,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_TunnelLarge01]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_TunnelMedium01,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_TunnelMedium01]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_TunnelSmall01,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_TunnelSmall01]));\n            /*\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb3D_Electrical01,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb3D_Electrical01]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb3D_Electrical02,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb3D_Electrical02]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb3D_FanLargeDamaged,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb3D_FanLargeDamaged]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb3D_FanLargeDestroyed,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb3D_FanLargeDestroyed]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb3D_FanLargeNormal,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb3D_FanLargeNormal]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb3D_FanMediumDamaged,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb3D_FanMediumDamaged]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb3D_FanMediumDestroyed,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb3D_FanMediumDestroyed]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb3D_FanMediumNormal,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb3D_FanMediumNormal]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb3D_FanSmallDamaged,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb3D_FanSmallDamaged]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb3D_FanSmallDestroyed,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb3D_FanSmallDestroyed]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb3D_FanSmallNormal,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb3D_FanSmallNormal]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb3D_GenLargeDamaged,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb3D_GenLargeDamaged]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb3D_GenLargeDestroyed,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb3D_GenLargeDestroyed]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb3D_GenLargeNormal,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb3D_GenLargeNormal]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb3D_GenMediumDamaged,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb3D_GenMediumDamaged]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb3D_GenMediumDestroyed,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb3D_GenMediumDestroyed]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb3D_GenMediumNormal,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb3D_GenMediumNormal]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb3D_GenSmallDamaged,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb3D_GenSmallDamaged]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb3D_GenSmallDestroyed,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb3D_GenSmallDestroyed]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb3D_GenSmallNormal,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb3D_GenSmallNormal]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb3D_PipeFlow01,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb3D_PipeFlow01]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb3D_RadioChatterAllied01_04,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb3D_RadioChatterAllied01_04]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb3D_RadioChatterAllied05_08,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb3D_RadioChatterAllied05_08]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb3D_RadioChatterAllied09_12,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb3D_RadioChatterAllied09_12]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb3D_RadioChatterAllied13_16,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb3D_RadioChatterAllied13_16]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb3D_RadioChatterChinese01_04,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb3D_RadioChatterChinese01_04]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb3D_RadioChatterChinese05_08,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb3D_RadioChatterChinese05_08]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb3D_RadioChatterChinese09_12,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb3D_RadioChatterChinese09_12]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb3D_RadioChatterChinese13_16,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb3D_RadioChatterChinese13_16]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb3D_RadioChatterRussian01_04,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb3D_RadioChatterRussian01_04]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb3D_RadioChatterRussian05_08,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb3D_RadioChatterRussian05_08]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb3D_RadioChatterRussian09_12,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb3D_RadioChatterRussian09_12]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb3D_RadioChatterRussian13_16,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb3D_RadioChatterRussian13_16]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb3D_Spark01,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb3D_Spark01]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb3D_SteamDischarge01,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb3D_SteamDischarge01]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb3D_SteamDischarge02,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb3D_SteamDischarge02]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb3D_SteamDischarge03,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb3D_SteamDischarge03]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb3D_SteamDischarge04,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb3D_SteamDischarge04]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb3D_SteamLoop01,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb3D_SteamLoop01]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb3D_SteamLoop02,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb3D_SteamLoop02]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb3D_SteamLoop03,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb3D_SteamLoop03]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb3D_SteamLoop04,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb3D_SteamLoop04]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb3D_SteamLoop05,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb3D_SteamLoop05]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb3D_ThunderClapLarge,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb3D_ThunderClapLarge]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb3D_ThunderClapMed,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb3D_ThunderClapMed]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb3D_ThunderClapSmall,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb3D_ThunderClapSmall]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb3D_Welding01,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb3D_Welding01]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb3D_PrefabFire,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb3D_PrefabFire]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb3D_EngineThrust,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb3D_EngineThrust]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.GuiMouseClick,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.GuiClick));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.GuiEditorFlyOutsideBorder,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.GuiEditorFlyOutsideBorder]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.GuiEditorObjectAttach,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.GuiEditorObjectAttach]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.GuiEditorObjectDelete,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.GuiEditorObjectDelete]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.GuiEditorObjectDetach,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.GuiEditorObjectDetach]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.GuiEditorObjectMoveInvalid,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.GuiEditorObjectMoveInvalid));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.GuiEditorObjectMoveStep,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.GuiEditorObjectMoveStep));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.GuiEditorObjectRotateStep,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.GuiEditorObjectRotateStep));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.GuiEditorObjectSelect,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.GuiEditorObjectSelect));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.GuiEditorPrefabCommit,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.GuiEditorPrefabCommit));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.GuiEditorPrefabEnter,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.GuiEditorPrefabEnter));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.GuiEditorPrefabExit,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.GuiEditorPrefabExit));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.GuiEditorVoxelHandAdd,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.GuiEditorVoxelHandAdd));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.GuiEditorVoxelHandMaterial,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.GuiEditorVoxelHandMaterial));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.GuiEditorVoxelHandRemove,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.GuiEditorVoxelHandRemove));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.GuiEditorVoxelHandSoften,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.GuiEditorVoxelHandSoften));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.GuiEditorVoxelHandSwitch,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.GuiEditorVoxelHandSwitch));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.GuiMouseOver,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.GuiMouseOver));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.GuiWheelControlClose,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.GuiWheelControlClose));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.GuiWheelControlOpen,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.GuiWheelControlOpen));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.ImpBulletHitGlass,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.ImpBulletHitGlass));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.ImpBulletHitMetal,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.ImpBulletHitMetal));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.ImpBulletHitRock,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.ImpBulletHitRock));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.ImpBulletHitShip,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.ImpBulletHitShip));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.ImpExpHitGlass,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.ImpExpBulletHitGlass));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.ImpExpHitMetal,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.ImpExpBulletHitMetal));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.ImpExpHitRock,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.ImpExpBulletHitRock));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.ImpExpHitShip,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.ImpExpBulletHitShip));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.ImpPlayerShipCollideMetal,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.ImpPlayerShipCollideMetal));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.ImpPlayerShipCollideRock,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.ImpPlayerShipCollideRock));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.ImpPlayerShipCollideShip,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.ImpPlayerShipCollideShip));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.ImpPlayerShipScrapeShipLoop,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.ImpPlayerShipScrapeShipLoop));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.ImpPlayerShipScrapeShipRelease,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.ImpPlayerShipScrapeShipRelease));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.ImpRockCollideMetal,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.ImpRockCollideMetal));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.ImpRockCollideRock,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.ImpRockCollideRock));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.ImpShipCollideMetal,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.ImpShipCollideMetal));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.ImpShipCollideRock,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.ImpShipCollideRock));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.ImpShipQuake,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.ImpShipQuake));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MenuWelcome,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MenuWelcome));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MovDock1End,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MovDock1End));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MovDock1Loop,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MovDock1Loop));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MovDock1Start,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MovDock1Start));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MovDock2End,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MovDock2End));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MovDock2Loop,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MovDock2Loop));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MovDock2Start,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MovDock2Start));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MovDock3End,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MovDock3End));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MovDock3Loop,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MovDock3Loop));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MovDock3Start,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MovDock3Start));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MovDoor1AClose,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MovDoor1AClose));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MovDoor1AOpen,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MovDoor1AOpen));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MovDoor1BClose,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MovDoor1BClose));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MovDoor1BOpen,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MovDoor1BOpen));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MovDoor2AClose,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MovDoor2AClose));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MovDoor2AOpen,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MovDoor2AOpen));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MovDoor2BClose,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MovDoor2BClose));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MovDoor2BOpen,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MovDoor2BOpen));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MovDoor3AClose,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MovDoor3AClose));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MovDoor3AOpen,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MovDoor3AOpen));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.HudAmmoCriticalWarning,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.SfxAmmoCriticalWarning));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.HudAmmoLowWarning,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.SfxAmmoLowWarning));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.HudArmorCriticalWarning,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.SfxArmorCriticalWarning));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.HudArmorLowWarning,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.SfxArmorLowWarning));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.SfxClaxonAlert,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.SfxClaxonAlert));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.HudDamageAlertWarning,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.SfxDamageAlertWarning));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.HudDamageCriticalWarning,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.SfxDamageCriticalWarning));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.HudDestinationReached,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.SfxDestinationReached));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.HudEnemyAlertWarning,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.SfxEnemyAlertWarning));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.HudFriendlyFireWarning,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.SfxFriendlyFireWarning));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.SfxGeigerCounterHeavyLoop,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.SfxGeigerBeep));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.SfxGps,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.SfxGps));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.SfxGpsFail,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.SfxGpsFail));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.HudHarvestingComplete,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.SfxHarvestingComplete));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.HudHealthCriticalWarning,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.SfxHealthCriticalWarning));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.HudHealthLowWarning,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.SfxHealthLowWarning));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.SfxHudAutolevelingOff,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.SfxHudAutolevelingOff));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.SfxHudAutolevelingOn,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.SfxHudAutolevelingOn));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.SfxHudBackcameraOff,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.SfxHudBackcameraOff));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.SfxHudBackcameraOn,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.SfxHudBackcameraOn));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.SfxHudCockpitOff,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.SfxHudCockpitOff));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.SfxHudCockpitOn,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.SfxHudCockpitOn));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.SfxHudRadarMode,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.SfxHudRadarMode));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.SfxHudReflectorRange,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.SfxHudReflectorRange));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.SfxHudSlowMovementOff,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.SfxHudSlowMovementOff));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.SfxHudSlowMovementOn,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.SfxHudSlowMovementOn));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.SfxHudWeaponScroll,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.SfxHudWeaponScroll));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.SfxHudWeaponSelect,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.SfxHudWeaponSelect));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.HudInventoryComplete,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.SfxInventoryComplete));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.HudInventoryFullWarning,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.SfxInventoryFullWarning));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.HudInventoryTransfer,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.SfxInventoryTransfer));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.HudFuelLowWarning,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.SfxLowFuelWarning));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.HudOxygenLowWarning,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.SfxLowOxygenWarning));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.HudFuelCriticalWarning,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.SfxNoFuelWarning));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.HudOxygenCriticalWarning,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.SfxNoOxygenWarning));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.HudObjectiveComplete,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.SfxObjectiveComplete));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.SfxPlayerBreath,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.SfxPlayerBreath));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.HudRadarJammedWarning,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.SfxRadarJammedWarning));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.HudRadiationWarning,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.SfxRadiationWarning));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.SfxShipSmallExplosion,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.SfxShipSmallExplosion));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.HudSolarFlareWarning,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.SfxSolarFlareWarning));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.SfxSolarWind,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.SfxSolarWind));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.SfxSpark,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.SfxSpark));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.HudTargetDestroyed,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.SfxTargetDestroyed));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehCH1EngineHigh2d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.VehCH1EngineHigh2d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehCH1EngineHigh3d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.VehCH1EngineHigh3d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehCH1EngineIdle2d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.VehCH1EngineIdle2d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehCH1EngineIdle3d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.VehCH1EngineIdle3d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehEL1EngineHigh2d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.VehEL1EngineHigh2d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehEL1EngineHigh3d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.VehEL1EngineHigh3d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehEL1EngineIdle2d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.VehEL1EngineIdle2d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehEL1EngineIdle3d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.VehEL1EngineIdle3d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehEL1EngineOff,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.VehEL1EngineOff));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehEL1EngineOn,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.VehEL1EngineOn));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehHarvesterTubeColliding2d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.VehHarvesterTubeColliding2d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehHarvesterTubeColliding3d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.VehHarvesterTubeColliding3d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehHarvesterTubeCollision2d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.VehHarvesterTubeCollision2d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehHarvesterTubeCollision3d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.VehHarvesterTubeCollision3d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehHarvesterTubeImplode2d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.VehHarvesterTubeImplode2d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehHarvesterTubeImplode3d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.VehHarvesterTubeImplode3d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehHarvesterTubeMovingLoop2d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.VehHarvesterTubeMovingLoop2d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehHarvesterTubeMovingLoop3d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.VehHarvesterTubeMovingLoop3d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehHarvesterTubeRelease2d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.VehHarvesterTubeRelease2d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehHarvesterTubeRelease3d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.VehHarvesterTubeRelease3d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehNU1EngineHigh2d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.VehNU1EngineHigh2d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehNU1EngineHigh3d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.VehNU1EngineHigh3d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehNU1EngineIdle2d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.VehNU1EngineIdle2d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehNU1EngineIdle3d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.VehNU1EngineIdle3d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehShipaEngineHigh2d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.VehShipaEngineHigh2d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehShipaEngineHigh3d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.VehShipaEngineHigh3d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehShipaEngineIdle2d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.VehShipaEngineIdle2d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehShipaEngineIdle3d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.VehShipaEngineIdle3d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehShipaEngineOff,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.VehShipaEngineOff));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehShipaEngineOn,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.VehShipaEngineOn));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehShipaLightsOff,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.VehShipaLightsOff));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehShipaLightsOn,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.VehShipaLightsOn));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehShipaThrust2d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.VehShipaThrust2d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehShipaThrust3d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.VehShipaThrust3d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehToolCrusherDrillColliding2d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.VehToolCrusherDrillColliding2d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehToolCrusherDrillColliding3d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.VehToolCrusherDrillColliding3d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehToolCrusherDrillCollidingRelease2d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.VehToolCrusherDrillCollidingRelease2d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehToolCrusherDrillCollidingRelease3d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.VehToolCrusherDrillCollidingRelease3d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehToolCrusherDrillIdle2d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.VehToolCrusherDrillIdle2d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehToolCrusherDrillIdle3d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.VehToolCrusherDrillIdle3d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehToolCrusherDrillLoop2d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.VehToolCrusherDrillLoop2d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehToolCrusherDrillLoop3d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.VehToolCrusherDrillLoop3d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehToolCrusherDrillRelease2d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.VehToolCrusherDrillRelease2d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehToolCrusherDrillRelease3d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.VehToolCrusherDrillRelease3d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehToolLaserDrillIdle2d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.VehToolLaserDrillIdle2d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehToolLaserDrillIdle3d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.VehToolLaserDrillIdle3d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehToolLaserDrillLoop2d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.VehToolLaserDrillLoop2d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehToolLaserDrillLoop3d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.VehToolLaserDrillLoop3d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehToolLaserDrillRelease2d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.VehToolLaserDrillRelease2d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehToolLaserDrillRelease3d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.VehToolLaserDrillRelease3d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehToolSawCut2d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.VehToolSawCut2d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehToolSawCut3d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.VehToolSawCut3d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehToolSawIdle2d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.VehToolSawIdle2d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehToolSawIdle3d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.VehToolSawIdle3d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehToolSawLoop2d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.VehToolSawLoop2d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehToolSawLoop3d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.VehToolSawLoop3d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehToolSawRelease2d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.VehToolSawRelease2d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehToolSawRelease3d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.VehToolSawRelease3d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehToolThermalDrillIdle2d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.VehToolThermalDrillIdle2d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehToolThermalDrillIdle3d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.VehToolThermalDrillIdle3d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehToolThermalDrillLoop2d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.VehToolThermalDrillLoop2d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehToolThermalDrillLoop3d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.VehToolThermalDrillLoop3d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehToolThermalDrillRelease2d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.VehToolThermalDrillRelease2d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehToolThermalDrillRelease3d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.VehToolThermalDrillRelease3d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.WepArsHighShot2d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.WepArsHighShot2d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.WepArsHighShot3d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.WepArsHighShot3d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.WepArsNormShot2d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.WepArsNormShot2d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.WepArsNormShot3d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.WepArsNormShot3d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.WepAutocanonFire2d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.WepAutocanonFire2d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.WepAutocanonFire3d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.WepAutocanonFire3d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.WepAutocanonRel2d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.WepAutocanonRel2d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.WepAutocanonRel3d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.WepAutocanonRel3d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.WepBombExplosion,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.WepBombExplosion));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.WepBombFlash,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.WepBombFlash));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.WepBombGravSuck,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.WepBombGravSuck));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.WepEpmExplosion,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.WepEMPExplosion));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.WepBombSmartDrone,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.WepBombSmartDrone));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.WepBombSmartPlant,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.WepBombSmartPlant));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.WepBombSmartSmoke,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.WepBombSmartSmoke));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.WepBombSmartTimer,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.WepBombSmartTimer));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.WepLargeShipAutocannonRotate,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.WepLargeShipAutocannonRotate));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.WepLargeShipAutocannonRotateRelease,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.WepLargeShipAutocannonRotateRelease));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.WepMachineGunHighFire2d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.WepMachineGunHighFire2d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.WepMachineGunHighFire3d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.WepMachineGunHighFire3d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.WepMachineGunHighRel2d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.WepMachineGunHighRel2d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.WepMachineGunHighRel3d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.WepMachineGunHighRel3d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.WepMachineGunNormFire2d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.WepMachineGunNormFire2d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.WepMachineGunNormFire3d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.WepMachineGunNormFire3d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.WepMachineGunNormRel2d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.WepMachineGunNormRel2d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.WepMachineGunNormRel3d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.WepMachineGunNormRel3d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.WepMineMoveALoop,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.WepMineMoveALoop));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.WepMissileExplosion,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.WepMissileExplosion));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.WepMissileFly,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.WepMissileFly));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.WepMissileLaunch2d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.WepMissileLaunch2d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.WepMissileLaunch3d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.WepMissileLaunch3d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.WepMissileLock,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.WepMissileLock));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.WepRailHighShot2d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.WepRailHighShot2d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.WepRailHighShot3d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.WepRailHighShot3d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.WepRailNormShot2d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.WepRailNormShot2d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.WepRailNormShot3d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.WepRailNormShot3d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.WepShotgunHighShot2d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.WepShotgunHighShot2d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.WepShotgunHighShot3d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.WepShotgunHighShot3d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.WepShotgunNormShot2d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.WepShotgunNormShot2d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.WepShotgunNormShot3d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.WepShotgunNormShot3d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.WepSniperHighFire2d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.WepSniperHighFire2d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.WepSniperHighFire3d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.WepSniperHighFire3d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.WepSniperNormFire2d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.WepSniperNormFire2d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.WepSniperNormFire3d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.WepSniperNormFire3d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.WepSniperScopeZoomALoop,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.WepSniperScopeZoomALoop));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.WepSniperScopeZoomRel,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.WepSniperScopeZoomRel));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.WepUnivLaunch2d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.WepUnivLaunch2d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.WepUnivLaunch3d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.WepUnivLaunch3d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehToolLaserDrillColliding2d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.VehToolLaserDrillColliding2d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehToolLaserDrillColliding3d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.VehToolLaserDrillColliding3d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehToolLaserDrillCollidingRelease2d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.VehToolLaserDrillCollidingRelease2d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehToolLaserDrillCollidingRelease3d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.VehToolLaserDrillCollidingRelease3d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehToolThermalDrillColliding2d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.VehToolThermalDrillColliding2d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehToolThermalDrillColliding3d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.VehToolThermalDrillColliding3d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehToolThermalDrillCollidingRelease2d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.VehToolThermalDrillCollidingRelease2d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehToolThermalDrillCollidingRelease3d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.VehToolThermalDrillCollidingRelease3d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.SfxProgressHack,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.SfxProgressHack));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.SfxCancelHack,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.SfxCancelHack));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.SfxProgressRepair,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.SfxProgressRepair));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.SfxProgressBuild,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.SfxProgressBuild));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.SfxCancelRepair,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.SfxCancelRepair));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.SfxCancelBuild,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.SfxCancelBuild));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb3D_GenXstart,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb3D_GenXstart]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb3D_GenXloop,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb3D_GenXloop]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.SfxAlertVoc,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.SfxAlertVoc));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb3D_GenXend,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb3D_GenXend]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb3D_Temple1,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb3D_Temple1]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb3D_Temple2,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb3D_Temple2]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb3D_Temple3,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb3D_Temple3]));\n            */\n\n\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_City,\n                         new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                            MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_City]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_ComputerRoom,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                   MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_ComputerRoom]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_Factory,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                   MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_Factory]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_LostPlace,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                   MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_LostPlace]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_RedHeat,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                   MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_RedHeat]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_War,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                   MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_War]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_City2,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                   MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_City2]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_Factory2,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                   MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_Factory2]));        \n    \n            /*\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.SfxShipLargeExplosion,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.SfxShipLargeExplosion));\n\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MusCalmAtmosphere_KA01,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MusCalmAtmosphere_KA01));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MusCalmAtmosphere_KA02,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MusCalmAtmosphere_KA02));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MusCalmAtmosphere_KA03,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MusCalmAtmosphere_KA03));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MusCalmAtmosphere_MM01,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MusCalmAtmosphere_MM01));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MusCalmAtmosphere_MM02,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MusCalmAtmosphere_MM02));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MusDesperateWithStress_KA01,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MusDesperateWithStress_KA01));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MusDesperateWithStress_KA02,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MusDesperateWithStress_KA02));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MusDesperateWithStress_KA03,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MusDesperateWithStress_KA03));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MusDesperateWithStress_KA04,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MusDesperateWithStress_KA04));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MusDesperateWithStress_MM01,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MusDesperateWithStress_MM01));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MusHeavyFight_KA01,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MusHeavyFight_KA01));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MusHeavyFight_KA02,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MusHeavyFight_KA02));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MusHeavyFight_MM01,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MusHeavyFight_MM01));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MusHeavyFight_MM02,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MusHeavyFight_MM02));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MusHorror_KA01,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MusHorror_KA01));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MusHorror_KA02,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MusHorror_KA02));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MusHorror_MM01,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MusHorror_MM01));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MusHorror_MM02,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MusHorror_MM02));            \n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MusLightFight_MM01,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MusLightFight_MM01));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MusLightFight_MM02,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MusLightFight_MM02));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MusMainMenu_KA_MM,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MusMainMenu_KAandMM));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MusMystery_KA01,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MusMystery_KA01));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MusMystery_KA02,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MusMystery_KA02));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MusMystery_MM01,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MusMystery_MM01));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MusMystery_MM02,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MusMystery_MM02));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MusSadnessOrDesperation_KA01,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MusSadnessOrDesperation_KA01));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MusSadnessOrDesperation_KA02,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MusSadnessOrDesperation_KA02));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MusSadnessOrDesperation_MM01,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MusSadnessOrDesperation_MM01));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MusSadnessOrDesperation_MM02,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MusSadnessOrDesperation_MM02));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MusSpecial_MM01,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MusSpecial_MM01));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MusStealthAction_KA01,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MusStealthAction_KA01));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MusStealthAction_MM01,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MusStealthAction_MM01));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MusStealthAction_MM02,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MusStealthAction_MM02));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MusStressOrTimeRush_KA01,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MusStressOrTimeRush_KA01));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MusStressOrTimeRush_KA02,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MusStressOrTimeRush_KA02));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MusStressOrTimeRush_MM01,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MusStressOrTimeRush_MM01));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MusStressOrTimeRush_MM02,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MusStressOrTimeRush_MM02));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MusTensionBeforeAnAction_KA01,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MusTensionBeforeAnAction_KA01));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MusTensionBeforeAnAction_KA02,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MusTensionBeforeAnAction_KA02));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MusTensionBeforeAnAction_MM01,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MusTensionBeforeAnAction_MM01));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MusTensionBeforeAnAction_MM02,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MusTensionBeforeAnAction_MM02));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MusVictory_KA01,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MusVictory_KA01));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MusVictory_KA02,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MusVictory_KA02));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MusVictory_MM01,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MusVictory_MM01));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MusVictory_MM02,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MusVictory_MM02));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MusLightFight_KA03,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MusLightFight_KA03));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MusLightFight_KA04,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MusLightFight_KA04));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MusLightFight_KA05,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MusLightFight_KA05));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MusLightFight_KA07,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MusLightFight_KA07));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MusLightFight_KA08,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MusLightFight_KA08));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MusLightFight_KA10,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MusLightFight_KA10));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MusLightFight_KA11,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MusLightFight_KA11));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MusSpecial_MM02,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MusSpecial_MM02));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MusSpecial_MM03,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MusSpecial_MM03));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MusSpecial_KA01,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MusSpecial_KA01));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MusHeavyFight_KA03,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MusHeavyFight_KA03));\n\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MusLightFight_KA12,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MusLightFight_KA12));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MusHeavyFight_KA05,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MusHeavyFight_KA05));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MusSpecial_KA02,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MusSpecial_KA02));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MusHeavyFight_KA07,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MusHeavyFight_KA07));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MusSpecial_MM04,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MusSpecial_MM04));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MusHeavyFight_KA04,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MusHeavyFight_KA04));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MusSpecial_KA03,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MusSpecial_KA03));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MusLightFight_KA27,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MusLightFight_KA27));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MusSpecial_KA04,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MusSpecial_KA04));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MusSpecial_KA05,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MusSpecial_KA05));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.MusSpecial_MM05,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.MusSpecial_MM05));   \n\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.SfxHudAlarmIncoming,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.SfxHudAlarmIncoming));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.SfxHudAlarmDamageA,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.SfxHudAlarmDamageA));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.SfxHudAlarmDamageB,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.SfxHudAlarmDamageB));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.SfxHudAlarmDamageC,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.SfxHudAlarmDamageC));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.SfxHudAlarmDamageD,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.SfxHudAlarmDamageD));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.SfxHudAlarmDamageE,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.SfxHudAlarmDamageE));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.WepCannon3d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.WepCannon3d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.WepCannon2d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.WepCannon2d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.WepNoAmmo,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.WepNoAmmo));\n\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehCH1EngineOff,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.VehCH1EngineOff));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehCH1EngineOn,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.VehCH1EngineOn));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehNU1EngineOff,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.VehNU1EngineOff));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehNU1EngineOn,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyTextsWrapperEnum.VehNU1EngineOn));\n\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehToolPressureDrillBlast2d, \n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                   MyTextsWrapperEnum.VehToolPressureDrillBlast2d));\n\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehToolPressureDrillIdle2d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                   MyTextsWrapperEnum.VehToolPressureDrillIdle2d));\n\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehToolPressureDrillRecharge2d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                   MyTextsWrapperEnum.VehToolPressureDrillRecharge2d));\n\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehToolPressureDrillBlastRock2d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                   MyTextsWrapperEnum.VehToolPressureDrillBlastRock2d));\n\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.SfxProgressActivation,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                   MyTextsWrapperEnum.SfxProgressActivation));\n\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.SfxCancelActivation,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                   MyTextsWrapperEnum.SfxCancelActivation));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.SfxTakeAllUniversal,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                   MyTextsWrapperEnum.SfxTakeAllUniversal));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.SfxTakeAllAmmo,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                   MyTextsWrapperEnum.SfxTakeAllAmmo));\n\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.SfxTakeAllFuel,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                   MyTextsWrapperEnum.SfxTakeAllFuel));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.SfxTakeAllMedkit,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                   MyTextsWrapperEnum.SfxTakeAllMedkit));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.SfxTakeAllOxygen,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                   MyTextsWrapperEnum.SfxTakeAllOxygen));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.SfxTakeAllRepair,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                   MyTextsWrapperEnum.SfxTakeAllRepair));\n\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.SfxAcquireWeaponOn,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                   MyTextsWrapperEnum.SfxAcquireWeaponOn));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.SfxAcquireWeaponOff,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                   MyTextsWrapperEnum.SfxAcquireWeaponOff));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.SfxAcquireDroneOn,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                   MyTextsWrapperEnum.SfxAcquireDroneOn));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.SfxAcquireDroneOff,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                   MyTextsWrapperEnum.SfxAcquireDroneOff));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.SfxAcquireCameraOn,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                   MyTextsWrapperEnum.SfxAcquireCameraOn));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.SfxAcquireCameraOff,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                   MyTextsWrapperEnum.SfxAcquireCameraOff));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.SfxProgressTake,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                   MyTextsWrapperEnum.SfxProgressTake));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.SfxCancelTake,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                   MyTextsWrapperEnum.SfxCancelTake));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.SfxProgressPut,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                   MyTextsWrapperEnum.SfxProgressPut));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.SfxCancelPut,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                   MyTextsWrapperEnum.SfxCancelPut));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.HudAmmoNoWarning,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                   MyTextsWrapperEnum.SfxAmmoNoWarning));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.HudArmorNoWarning,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                   MyTextsWrapperEnum.SfxArmorNoWarning));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehLoopDrone,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                   MyTextsWrapperEnum.VehLoopDrone));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehLoopCamera,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                   MyTextsWrapperEnum.VehLoopCamera));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.HudOxygenLeakingWarning,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                   MyTextsWrapperEnum.HudOxygenLeakingWarning));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehLoopLargeShip,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                   MyTextsWrapperEnum.VehLoopLargeShip));\n\n\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehToolNuclearDrillLoop2d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                   MyTextsWrapperEnum.VehToolNuclearDrillLoop2d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehToolNuclearDrillLoop3d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                   MyTextsWrapperEnum.VehToolNuclearDrillLoop3d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehToolNuclearDrillRelease2d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                   MyTextsWrapperEnum.VehToolNuclearDrillRelease2d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehToolNuclearDrillRelease3d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                   MyTextsWrapperEnum.VehToolNuclearDrillRelease3d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehToolNuclearDrillColliding2d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                   MyTextsWrapperEnum.VehToolNuclearDrillColliding2d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehToolNuclearDrillColliding3d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                   MyTextsWrapperEnum.VehToolNuclearDrillColliding3d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehToolNuclearDrillCollidingOther2d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                   MyTextsWrapperEnum.VehToolNuclearDrillCollidingOther2d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehToolNuclearDrillCollidingOther3d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                   MyTextsWrapperEnum.VehToolNuclearDrillCollidingOther3d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehToolNuclearDrillCollidingRelease2d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                   MyTextsWrapperEnum.VehToolNuclearDrillCollidingRelease2d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehToolNuclearDrillCollidingRelease3d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                   MyTextsWrapperEnum.VehToolNuclearDrillCollidingRelease3d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehToolNuclearDrillCollidingOtherRelease2d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                   MyTextsWrapperEnum.VehToolNuclearDrillCollidingOtherRelease2d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehToolNuclearDrillCollidingOtherRelease3d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                   MyTextsWrapperEnum.VehToolNuclearDrillCollidingOtherRelease3d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehToolNuclearDrillIdle2d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                   MyTextsWrapperEnum.VehToolNuclearDrillIdle2d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehToolNuclearDrillIdle3d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                   MyTextsWrapperEnum.VehToolNuclearDrillIdle3d));\n\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehToolPressureDrillBlast3d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                   MyTextsWrapperEnum.VehToolPressureDrillBlast3d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehToolPressureDrillBlastRock3d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                   MyTextsWrapperEnum.VehToolPressureDrillBlastRock3d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehToolPressureDrillIdle3d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                   MyTextsWrapperEnum.VehToolPressureDrillIdle3d));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.VehToolPressureDrillRecharge3d,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                   MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.VehToolPressureDrillRecharge3d]));\n                                                                        */\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_RacingFans,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                   MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_RacingFans]));  \n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_RedHeat2,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                   MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_RedHeat2]));\n\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_Electrical01,\n                new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                   MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_Electrical01]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_Electrical02,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_Electrical02]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_EngineThrust,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_EngineThrust]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_FanLargeDamaged,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_FanLargeDamaged]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_FanLargeDestroyed,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_FanLargeDestroyed]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_FanLargeNormal,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_FanLargeNormal]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_FanMediumDamaged,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_FanMediumDamaged]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_FanMediumDestroyed,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_FanMediumDestroyed]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_FanMediumNormal,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_FanMediumNormal]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_FanSmallDamaged,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_FanSmallDamaged]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_FanSmallDestroyed,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_FanSmallDestroyed]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_FanSmallNormal,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_FanSmallNormal]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_GenLargeDamaged,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_GenLargeDamaged]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_GenLargeDestroyed,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_GenLargeDestroyed]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_GenLargeNormal,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_GenLargeNormal]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_GenMediumDamaged,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_GenMediumDamaged]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_GenMediumDestroyed,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_GenMediumDestroyed]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_GenMediumNormal,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_GenMediumNormal]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_GenSmallDamaged,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_GenSmallDamaged]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_GenSmallDestroyed,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_GenSmallDestroyed]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_GenSmallNormal,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_GenSmallNormal]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_GenXend,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_GenXend]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_GenXloop,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_GenXloop]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_GenXstart,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_GenXstart]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_PipeFlow01,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_PipeFlow01]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_PrefabFire01,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_PrefabFire01]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_RadioChatterAL01,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_RadioChatterAL01]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_RadioChatterAL02,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_RadioChatterAL02]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_RadioChatterAL03,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_RadioChatterAL03]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_RadioChatterAL04,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_RadioChatterAL04]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_RadioChatterAL05,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_RadioChatterAL05]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_RadioChatterAL06,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_RadioChatterAL06]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_RadioChatterAL07,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_RadioChatterAL07]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_RadioChatterAL08,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_RadioChatterAL08]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_RadioChatterAL09,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_RadioChatterAL09]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_RadioChatterAL10,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_RadioChatterAL10]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_RadioChatterAL11,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_RadioChatterAL11]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_RadioChatterAL12,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_RadioChatterAL12]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_RadioChatterAL13,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_RadioChatterAL13]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_RadioChatterAL14,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_RadioChatterAL14]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_RadioChatterAL15,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_RadioChatterAL15]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_RadioChatterAL16,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_RadioChatterAL16]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_RadioChatterCH01,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_RadioChatterCH01]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_RadioChatterCH02,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_RadioChatterCH02]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_RadioChatterCH03,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_RadioChatterCH03]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_RadioChatterCH04,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_RadioChatterCH04]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_RadioChatterCH05,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_RadioChatterCH05]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_RadioChatterCH06,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_RadioChatterCH06]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_RadioChatterCH07,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_RadioChatterCH07]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_RadioChatterCH08,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_RadioChatterCH08]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_RadioChatterCH09,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_RadioChatterCH09]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_RadioChatterCH10,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_RadioChatterCH10]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_RadioChatterCH11,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_RadioChatterCH11]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_RadioChatterCH12,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_RadioChatterCH12]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_RadioChatterCH13,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_RadioChatterCH13]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_RadioChatterCH14,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_RadioChatterCH14]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_RadioChatterCH15,                        \n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_RadioChatterCH15]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_RadioChatterCH16,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_RadioChatterCH16]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_RadioChatterRS01,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_RadioChatterRS01]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_RadioChatterRS02,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_RadioChatterRS02]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_RadioChatterRS03,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_RadioChatterRS03]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_RadioChatterRS04,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_RadioChatterRS04]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_RadioChatterRS05,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_RadioChatterRS05]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_RadioChatterRS06,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_RadioChatterRS06]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_RadioChatterRS07,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_RadioChatterRS07]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_RadioChatterRS08,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_RadioChatterRS08]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_RadioChatterRS09,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_RadioChatterRS09]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_RadioChatterRS10,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_RadioChatterRS10]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_RadioChatterRS11,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_RadioChatterRS11]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_RadioChatterRS12,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_RadioChatterRS12]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_RadioChatterRS13,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_RadioChatterRS13]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_RadioChatterRS14,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_RadioChatterRS14]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_RadioChatterRS15,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_RadioChatterRS15]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_RadioChatterRS16,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_RadioChatterRS16]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_Spark01,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_Spark01]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_SteamDischarge01,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_SteamDischarge01]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_SteamDischarge02,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_SteamDischarge02]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_SteamDischarge03,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_SteamDischarge03]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_SteamDischarge04,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_SteamDischarge04]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_SteamLoop01,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_SteamLoop01]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_SteamLoop02,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_SteamLoop02]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_SteamLoop03,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_SteamLoop03]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_SteamLoop04,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_SteamLoop04]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_SteamLoop05,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_SteamLoop05]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_Temple1,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_Temple1]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_Temple2,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_Temple2]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_Temple3,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_Temple3]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_ThunderClapLarge01,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_ThunderClapLarge01]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_ThunderClapMed01,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_ThunderClapMed01]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_ThunderClapMed02,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_ThunderClapMed02]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_ThunderClapMed03,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_ThunderClapMed03]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_ThunderClapMed04,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_ThunderClapMed04]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_ThunderClapSmall01,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_ThunderClapSmall01]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_ThunderClapSmall02,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_ThunderClapSmall02]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_ThunderClapSmall03,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_ThunderClapSmall03]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_ThunderClapSmall04,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_ThunderClapSmall04]));\n            m_influenceSphereSoundHelpers.Add((short)MySoundCuesEnum.Amb2D_Welding01,\n                            new MyGuiInfluenceSphereHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\IconSound\", flags: TextureFlags.IgnoreQuality),\n                                               MyEnumsToStrings.Sounds[(short)MySoundCuesEnum.Amb2D_Welding01])); \n            \n            foreach (MySoundCuesEnum soundCue in Enum.GetValues(typeof(MySoundCuesEnum))) \n            {\n                if(Utils.MyEnumsToStrings.Sounds[(int)soundCue].StartsWith(\"Amb2d\"))\n                    Debug.Assert(m_influenceSphereSoundHelpers.ContainsKey((short)soundCue));\n            }\n            \n            #endregion\n        }\n\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Helpers/MyGuiIngameEditorControls.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Editor;\nusing MinerWars.AppCode.Game.Gameplay;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Inventory;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Entities.FoundationFactory;\nusing MinerWars.AppCode.Game.Entities.Prefabs;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Prefabs;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils.Utils;\nusing MinerWars.AppCode.Game.GUI.Core.TreeView;\n\nnamespace MinerWars.AppCode.Game.GUI.Helpers\n{\n    class MyGuiIngameEditorControls : MyGuiEditorControlsBase\n    {\n        [Flags]\n        private enum MyTreeViewItemUpdateStateFlag\n        {\n            BuildingQueue = 1,\n            BuildCountAndDragAndDrop = 2,\n            CanBuildAndRequirements = 4,\n            BuildingProgress = 8,\n            All = BuildingQueue | BuildCountAndDragAndDrop | CanBuildAndRequirements | BuildingProgress,\n        }\n\n        private static Vector2 ORE_INFORMATION_RIGHT_OFFSET = new Vector2(0.15f, 0f);\n        private const int UPDATE_TREEVIEW_ITEMS_STATE = 200;\n        private static readonly StringBuilder ORE_TEXT_SEPARATOR = new StringBuilder(\": \");\n        private static readonly StringBuilder PERCENTAGE = new StringBuilder(\"%\");\n        private static readonly Vector2 CHECK_BOX_SIZE = new Vector2(0.05f, 0.05f);\n        private int m_lastUpdateTime;        \n        private StringBuilder m_oreCount;\n        private StringBuilder m_oreName;\n        private List<MyInventoryItem> m_helperInventoryItems = new List<MyInventoryItem>();\n\n        private MyGuiControlCheckbox m_checkboxOnlyItemsOnWhichHasBlueprints;\n        private MyGuiControlCheckbox m_checkboxOnlyItemsOnWhichHasOre;\n        private MyGuiControlCheckbox m_checkboxOnlyItemsWhichHasBuild;\n\n        private bool m_activeItemsOnWhichHasBlueprintsFilter;\n        private bool m_activeItemsOnWhichHasOreFilter;\n        private bool m_activeItemsWhichHasBuildFilter;\n\n        private static readonly EditorToolBarButtonType[] m_enabledButtons =\n            new EditorToolBarButtonType[]\n                {\n                    EditorToolBarButtonType.AddObjectButton,\n                    EditorToolBarButtonType.EditObjectsButton,\n                    EditorToolBarButtonType.ResetRotationButton,\n                    EditorToolBarButtonType.CopySelectedButton,\n                    EditorToolBarButtonType.SwitchGizmoSpaceButton,\n                    EditorToolBarButtonType.SwitchGizmoModeButton,\n                    EditorToolBarButtonType.LinkSnapPoints,\n                    EditorToolBarButtonType.ToggleSnapPoints,\n                    EditorToolBarButtonType.SelectAllObjectsButton,\n                    EditorToolBarButtonType.ExitSelectedButton,\n                    EditorToolBarButtonType.EnterPrefabContainerButton,\n                    EditorToolBarButtonType.AttachToCameraButton,\n                    EditorToolBarButtonType.EnterVoxelHandButton,\n                    EditorToolBarButtonType.ClearWholeSectorButton,\n                    EditorToolBarButtonType.SaveSectorButton,\n                    EditorToolBarButtonType.SunSettingsButton,\n                    EditorToolBarButtonType.GroupsButton,\n                    EditorToolBarButtonType.OptionsButton,\n                    EditorToolBarButtonType.SelectDeactivatedEntityButton,\n                    EditorToolBarButtonType.FindEntityButton,\n                };\n\n        public MyGuiIngameEditorControls(MyGuiScreenBase parentScreen) : base(parentScreen)\n        {\n            m_oreName = new StringBuilder();\n            m_oreCount = new StringBuilder();\n\n            m_lastUpdateTime = 0;\n        }        \n\n        protected override EditorToolBarButtonType[] GetEnabledButtons()\n        {\n            return MyGuiIngameEditorControls.m_enabledButtons;\n        }\n\n        protected override void CreateControls()\n        {\n            base.CreateControls();\n\n            // resize and reposition treeview, because there are icons between filter textbox and treeview\n            Vector2 oldTreeViewPosition = m_addObjectTreeView.GetPosition();\n            Vector2 oldTreeViewSize = m_addObjectTreeView.GetSize().Value;\n            \n            Vector2 filterCheckboxPosition = m_filterTextbox.GetPosition() + \n                                             new Vector2(-m_filterTextbox.GetSize().Value.X / 2f, m_filterTextbox.GetSize().Value.Y) +\n                                             new Vector2(CHECK_BOX_SIZE.X / 2f, MyGuiConstants.TOOLBAR_PADDING.Y);\n            Vector4 checkboxColor = new Vector4(0.75f, 0.75f, 0.75f, 0.9f);\n\n            m_addObjectTreeView.SetSize(oldTreeViewSize - new Vector2(0f, CHECK_BOX_SIZE.Y));\n            m_addObjectTreeView.SetPosition(oldTreeViewPosition + new Vector2(0f, CHECK_BOX_SIZE.Y / 2f + MyGuiConstants.TOOLBAR_PADDING.Y));\n\n\n            m_checkboxOnlyItemsOnWhichHasBlueprints = new MyGuiControlCheckbox(m_parentScreen, filterCheckboxPosition, CHECK_BOX_SIZE,\n                MyGuiManager.GetCheckboxOffTexture(), MyGuiManager.GetCheckboxOnTexture(), MyTextsWrapper.Get(MyTextsWrapperEnum.FilterOnlyItemsOnWhichHasBlueprintsToolTip), false, checkboxColor, true);\n            m_editorControls.Add(m_checkboxOnlyItemsOnWhichHasBlueprints);\n\n            m_checkboxOnlyItemsOnWhichHasOre = new MyGuiControlCheckbox(m_parentScreen, filterCheckboxPosition + new Vector2(0.005f + CHECK_BOX_SIZE.X, 0f), CHECK_BOX_SIZE,\n                MyGuiManager.GetCheckboxOffTexture(), MyGuiManager.GetCheckboxOnTexture(), MyTextsWrapper.Get(MyTextsWrapperEnum.FilterOnlyItemsOnWhichHasOreToolTip), false, checkboxColor, true);\n            m_editorControls.Add(m_checkboxOnlyItemsOnWhichHasOre);\n\n            m_checkboxOnlyItemsWhichHasBuild = new MyGuiControlCheckbox(m_parentScreen, filterCheckboxPosition + new Vector2(0.005f + CHECK_BOX_SIZE.X, 0f) * 2, CHECK_BOX_SIZE,\n                MyGuiManager.GetCheckboxOffTexture(), MyGuiManager.GetCheckboxOnTexture(), MyTextsWrapper.Get(MyTextsWrapperEnum.FilterOnlyItemsWhichHasBuildToolTip), false, checkboxColor, true);\n            m_editorControls.Add(m_checkboxOnlyItemsWhichHasBuild);\n\n            foreach (MyGuiControlBase control in m_editorControls)\n            {\n                control.DrawWhilePaused = false;\n            }\n        }\n\n        protected override void SetAddObjectVisibility(bool visible)\n        {\n            base.SetAddObjectVisibility(visible);\n            m_checkboxOnlyItemsOnWhichHasBlueprints.Visible = visible;\n            m_checkboxOnlyItemsOnWhichHasOre.Visible = visible;\n            m_checkboxOnlyItemsWhichHasBuild.Visible = visible;\n        }\n\n        protected override void FillTreeView()\n        {\n            MyTexture2D icon = null;\n            MyTexture2D expand = MyGuiManager.GetCollapseTexture();\n            MyTexture2D collapse = MyGuiManager.GetExpandTexture();\n\n            Vector2 smallIconSize = Vector2.Zero;\n            Vector2 expandIconSize = MyGuiConstants.CHECKBOX_SIZE;\n\n            CategoryTypesEnum[] beamsCategories = { CategoryTypesEnum.LARGE, CategoryTypesEnum.MEDIUM, CategoryTypesEnum.SMALL, CategoryTypesEnum.FRAME, CategoryTypesEnum.SHELVES };\n            CategoryTypesEnum[] shellsCategories = { CategoryTypesEnum.PANELS, CategoryTypesEnum.CHAMBERS, CategoryTypesEnum.ARMORS };\n            CategoryTypesEnum[] modulesCategories = { CategoryTypesEnum.FLIGHT, CategoryTypesEnum.SUPPLY, CategoryTypesEnum.LIFE_SUPPORT, CategoryTypesEnum.INDUSTRY, CategoryTypesEnum.WEAPONRY, CategoryTypesEnum.COMMUNICATIONS, CategoryTypesEnum.MANNED_OBJECTS};\n            CategoryTypesEnum[] connectionsCategories = { CategoryTypesEnum.TUNNELS, CategoryTypesEnum.PIPES, CategoryTypesEnum.PASSAGES, CategoryTypesEnum.CABLES };\n            CategoryTypesEnum[] detailssCategories = { CategoryTypesEnum.LIGHTS, CategoryTypesEnum.BILLBOARDS, CategoryTypesEnum.SIGNS, CategoryTypesEnum.TRAFFIC_SIGNS, CategoryTypesEnum.BARRELS, CategoryTypesEnum.SOUNDS, CategoryTypesEnum.OTHER };\n\n            foreach (MyMwcObjectBuilder_Prefab_AppearanceEnum factionTexture in MyGuiPrefabHelpers.MyMwcFactionTextureEnumValues)\n            {\n                var factionName = MyGuiPrefabHelpers.GetFactionName(factionTexture);\n                var factionItem = m_addObjectTreeView.AddItem(factionName, icon, smallIconSize, expand, collapse, expandIconSize);\n                factionItem.ToolTip = new MyToolTips(factionName);\n\n                // BuildTypesEnum.BEAMS\n                AddPrefabType(factionItem, factionTexture, MyTextsWrapperEnum.buildTypeBeam, BuildTypesEnum.BEAMS, beamsCategories, icon, smallIconSize, expand, collapse, expandIconSize);\n                // BuildTypesEnum.SHELLS\n                AddPrefabType(factionItem, factionTexture, MyTextsWrapperEnum.buildTypePanel, BuildTypesEnum.SHELLS, shellsCategories, icon, smallIconSize, expand, collapse, expandIconSize);\n                // BuildTypesEnum.MODULES\n                AddPrefabType(factionItem, factionTexture, MyTextsWrapperEnum.buildTypeModule, BuildTypesEnum.MODULES, modulesCategories, icon, smallIconSize, expand, collapse, expandIconSize);\n                //BuildTypesEnum.CONNECTIONS\n                AddPrefabType(factionItem, factionTexture, MyTextsWrapperEnum.buildTypeConnection, BuildTypesEnum.CONNECTIONS, connectionsCategories, icon, smallIconSize, expand, collapse, expandIconSize);\n                //BuildTypesEnum.DETAILS\n                AddPrefabType(factionItem, factionTexture, MyTextsWrapperEnum.buildTypeDetail, BuildTypesEnum.DETAILS, detailssCategories, icon, smallIconSize, expand, collapse, expandIconSize);\n            }\n\n            // SmallShipAmmo\n            var smallShipAmmoItem = m_addObjectTreeView.AddItem(MyTextsWrapper.Get(MyTextsWrapperEnum.Ammo), icon, smallIconSize, expand, collapse, expandIconSize);\n            AddSmallShipAmmoItems(smallShipAmmoItem);\n\n            // SmallShipWeapons\n            var smallShipWeaponsItem = m_addObjectTreeView.AddItem(MyTextsWrapper.Get(MyTextsWrapperEnum.Weapons), icon, smallIconSize, expand, collapse, expandIconSize);\n            AddSmallShipWeaponsItems(smallShipWeaponsItem);                                    \n        }\n\n        private void AddSmallShipAmmoItems(MyTreeViewItem parentItem)\n        {\n            Vector2 itemSize = MyGuiManager.GetNormalizedSizeFromScreenSize(new Vector2(64, 64));\n            foreach (MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum enumValue in MyGuiSmallShipHelpers.MyMwcObjectBuilder_SmallShip_Ammo_TypesEnumValues)\n            {\n                MyMwcObjectBuilder_SmallShip_Ammo ammoObjectBuilder = new MyMwcObjectBuilder_SmallShip_Ammo(enumValue);\n                MyBuildingSpecification buildingSpecification = MyBuildingSpecifications.GetBuildingSpecification(ammoObjectBuilder);\n                if (buildingSpecification != null)\n                {                    \n                    MyGuiSmallShipHelperAmmo smallShipAmmoHelper = MyGuiObjectBuilderHelpers.GetGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int) enumValue) as MyGuiSmallShipHelperAmmo;\n                    AddTreeViewItem(parentItem, smallShipAmmoHelper.Description, smallShipAmmoHelper.Icon, itemSize, MyGuiManager.GetBlankTexture(), MyGuiManager.GetBlankTexture(), MyGuiConstants.CHECKBOX_SIZE, ammoObjectBuilder, buildingSpecification);\n                }\n            }\n        }\n\n        private void AddSmallShipWeaponsItems(MyTreeViewItem parentItem)\n        {\n            Vector2 itemSize = MyGuiManager.GetNormalizedSizeFromScreenSize(new Vector2(64, 64));\n            foreach (MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum enumValue in MyGuiSmallShipHelpers.MyMwcObjectBuilder_SmallShip_Weapon_TypesEnumValues)\n            {\n                MyMwcObjectBuilder_SmallShip_Weapon weaponObjectBuilder = new MyMwcObjectBuilder_SmallShip_Weapon(enumValue);\n                MyBuildingSpecification buildingSpecification = MyBuildingSpecifications.GetBuildingSpecification(weaponObjectBuilder);                \n                MyGuiSmallShipHelperWeapon smallShipWeaponHelper = MyGuiObjectBuilderHelpers.GetGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Weapon, (int) enumValue) as MyGuiSmallShipHelperWeapon;\n                AddTreeViewItem(parentItem, smallShipWeaponHelper.Description, smallShipWeaponHelper.Icon, itemSize, MyGuiManager.GetBlankTexture(), MyGuiManager.GetBlankTexture(), MyGuiConstants.CHECKBOX_SIZE, weaponObjectBuilder, buildingSpecification);\n            }\n        }\n\n        private void AddTreeViewItem(MyTreeViewItem parentItem, StringBuilder text, MyTexture2D icon, Vector2 iconSize, MyTexture2D expandIcon, MyTexture2D collapseIcon, Vector2 expandIconSize, MyMwcObjectBuilder_Base objectBuilder, MyBuildingSpecification buildingSpecification)\n        {\n            var item = parentItem.AddItem(new StringBuilder(), icon, iconSize, expandIcon, collapseIcon, expandIconSize);\n            item.Tag = new MyObjectToBuild(objectBuilder, buildingSpecification, MyGameplayConstants.GetGameplayProperties(objectBuilder, MyEditor.Static.FoundationFactory.PrefabContainer.Faction).MaxAmount);\n            item.ToolTip = new MyToolTips();\n            item.ToolTip.AddToolTip(text, Color.White, 0.7f);\n            item.ToolTip.AddToolTip(MyTextsWrapper.Get(MyTextsWrapperEnum.BuildingRequirements));\n            item.ToolTip.AddToolTip(new StringBuilder(), Color.Green);\n            item.ToolTip.AddToolTip(new StringBuilder(), Color.Red);\n            item.IconTexts = new MyIconTexts();\n            item.IconTexts[MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_BOTTOM] = new MyColoredText(new StringBuilder(), MyGuiConstants.COLORED_TEXT_DEFAULT_COLOR, 0.8f);            \n            item.IconTexts[MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_BOTTOM] = new MyColoredText(new StringBuilder());\n            item.IconTexts[MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER] = new MyColoredText(new StringBuilder());\n            item.Action = OnItemAction;\n            item.RightClick = OnItemRighClick;            \n            UpdateTreeViewItemState(item, MyTreeViewItemUpdateStateFlag.All);\n        }\n\n        protected override void AddPrefabItems(MyTreeViewItem parentItem, MyMwcObjectBuilder_Prefab_AppearanceEnum appearanceTextureEnum, BuildTypesEnum buildType, CategoryTypesEnum categoryType)\n        {\n            MyMwcLog.WriteLine(\"GAME AddPrefabItems - START\");\n\n            Vector2 itemSize = MyGuiConstants.CHECKBOX_SIZE * 3;\n            foreach (MyMwcObjectBuilderTypeEnum enumValue in MyGuiPrefabHelpers.MyMwcPrefabTypesEnumValues)\n            {\n                foreach (int prefabId in MyMwcObjectBuilder_Base.GetObjectBuilderIDs(enumValue))\n                {\n                    MyPrefabConfiguration config = MyPrefabConstants.GetPrefabConfiguration(enumValue, prefabId);\n                    MyGuiPrefabHelper prefabModuleHelper = MyGuiObjectBuilderHelpers.GetGuiHelper(enumValue, prefabId) as MyGuiPrefabHelper;\n\n                    if (config == null)\n                        continue;\n\n                    if (config.FactionSpecific.HasValue && config.FactionSpecific.Value != appearanceTextureEnum)\n                        continue;\n\n                    if (config.BuildType == buildType && config.CategoryType == categoryType && config.EnabledInEditor)\n                    {\n                        MyMwcObjectBuilder_PrefabBase prefabObjectBuilder = MyPrefabFactory.GetInstance().CreatePrefabObjectBuilder(enumValue, prefabId, appearanceTextureEnum);                        \n                        MyBuildingSpecification buildingSpecification = MyBuildingSpecifications.GetBuildingSpecification(prefabObjectBuilder);\n                        MyTexture2D previewTexture = MyGuiManager.GetPrefabPreviewTexture(enumValue, prefabId, appearanceTextureEnum);\n                        AddTreeViewItem(parentItem, prefabModuleHelper.Description, previewTexture, itemSize, MyGuiManager.GetBlankTexture(), MyGuiManager.GetBlankTexture(), MyGuiConstants.CHECKBOX_SIZE, prefabObjectBuilder, buildingSpecification);\n                    }\n                }                \n            }\n\n            MyMwcLog.WriteLine(\"GAME AddPrefabItems - END\");\n        }        \n\n        private void UpdateTreeViewItemsState(MyTreeViewItemUpdateStateFlag updateFlags)\n        {            \n            int itemsCount = m_addObjectTreeView.GetItemCount();\n            for (int i = 0; i < itemsCount; i++)\n            {\n                UpdateTreeViewItemsState(m_addObjectTreeView.GetItem(i), updateFlags);\n            }            \n        }\n\n        private void UpdateTreeViewItemsState(MyTreeViewItem treeViewItem, MyTreeViewItemUpdateStateFlag updateFlags)\n        {\n            int itemsCount = treeViewItem.GetItemCount();\n            for (int i = 0; i < itemsCount; i++)\n            {\n                UpdateTreeViewItemsState(treeViewItem.GetItem(i), updateFlags);\n            }\n\n            if (treeViewItem.Tag != null && treeViewItem.Tag is MyObjectToBuild)\n            {\n                UpdateTreeViewItemState(treeViewItem, updateFlags);\n            }\n        }\n        \n        private void UpdateTreeViewItemState(MyTreeViewItem treeViewItem, MyTreeViewItemUpdateStateFlag updateFlags)\n        {            \n            if ((updateFlags & MyTreeViewItemUpdateStateFlag.BuildCountAndDragAndDrop) != 0)\n            {\n                UpdateTreeViewItemStateBuildCount(treeViewItem);\n            }\n            if ((updateFlags & MyTreeViewItemUpdateStateFlag.BuildingQueue) != 0)\n            {\n                UpdateTreeViewItemStateBuildingQueue(treeViewItem);\n            }\n            if ((updateFlags & MyTreeViewItemUpdateStateFlag.BuildingProgress) != 0)\n            {\n                UpdateTreeViewItemStateBuildingProgress(treeViewItem);\n            }\n            if ((updateFlags & MyTreeViewItemUpdateStateFlag.CanBuildAndRequirements) != 0)\n            {\n                UpdateTreeViewItemStateCanBuild(treeViewItem);\n            }                \n        }\n\n        private MyTreeViewItem GetTreeViewItem(MyObjectToBuild objectToBuild)\n        {\n            MyTreeViewItem result = null;\n            int itemsCount = m_addObjectTreeView.GetItemCount();\n            for (int i = 0; i < itemsCount; i++)\n            {\n                result = GetTreeViewItem(m_addObjectTreeView.GetItem(i), objectToBuild);\n                if (result != null)\n                {\n                    break;\n                }\n            }\n            return result;\n        }\n\n        private MyTreeViewItem GetTreeViewItem(MyTreeViewItem treeViewItem, MyObjectToBuild objectToBuild)\n        {\n            MyTreeViewItem result = null;\n\n            if (treeViewItem.Tag is MyObjectToBuild && ((MyObjectToBuild)treeViewItem.Tag).IsSame(objectToBuild))\n            {\n                result = treeViewItem;\n            }\n            else\n            {\n                int itemsCount = treeViewItem.GetItemCount();\n                for (int i = 0; i < itemsCount; i++)\n                {\n                    result = GetTreeViewItem(treeViewItem.GetItem(i), objectToBuild);\n                    if (result != null)\n                    {\n                        break;\n                    }\n                }\n            }\n            return result;\n        }\n\n        /// <summary>\n        /// Updates build count and enable/disable drag and drop on item\n        /// </summary>\n        /// <param name=\"treeViewItem\">Treeview item</param>\n        private void UpdateTreeViewItemStateBuildCount(MyTreeViewItem treeViewItem)\n        {\n            MyObjectToBuild objectToBuild = treeViewItem.Tag as MyObjectToBuild;\n            int buildObjectsCount = GetBuildObjectsCount(objectToBuild);\n            \n            treeViewItem.IconTexts[MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_BOTTOM].Text.Clear();\n            treeViewItem.IconTexts[MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_BOTTOM].Text.Append(buildObjectsCount);\n\n            // we can drag and drop only prefabs\n            if (IsDragAndDropObject(objectToBuild))\n            {\n                if (buildObjectsCount > 0 && treeViewItem.DragDrop == null)\n                {\n                    treeViewItem.DragDrop = m_addObjectTreeViewdragDrop;\n                }\n                else if (buildObjectsCount == 0 && treeViewItem.DragDrop != null)\n                {\n                    treeViewItem.DragDrop = null;\n                }\n            }\n        }\n\n        /// <summary>\n        /// Updates building queue count\n        /// </summary>\n        /// <param name=\"treeViewItem\">Treeview item</param>\n        private void UpdateTreeViewItemStateBuildingQueue(MyTreeViewItem treeViewItem)\n        {\n            MyObjectToBuild objectToBuild = treeViewItem.Tag as MyObjectToBuild;\n\n            int objectsInBuildingQueue = GetBuildingObjectInBuildinQueueCount(objectToBuild);\n            treeViewItem.IconTexts[MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_BOTTOM].Text.Clear();\n            if (objectsInBuildingQueue > 0)\n            {\n                treeViewItem.IconTexts[MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_BOTTOM].Text.Append(objectsInBuildingQueue);\n            }\n        }\n\n        /// <summary>\n        /// Updates can build state and refresh building requirements\n        /// </summary>\n        /// <param name=\"treeViewItem\">Treeview item</param>\n        private void UpdateTreeViewItemStateCanBuild(MyTreeViewItem treeViewItem)\n        {\n            MyObjectToBuild objectToBuild = treeViewItem.Tag as MyObjectToBuild;\n            treeViewItem.Enabled = GetBuildingObjectCanBuildState(objectToBuild);\n\n            //treeViewItem.IconTexts[MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER].Text.Clear();\n            ////if (MyObjectToBuild.HasSameObjectBuilders(MyEditor.Static.FoundationFactory.BuildingObject, objectToBuild))\n            //if (MyEditor.Static.FoundationFactory.BuildingObject.IsSame(objectToBuild))\n            //{\n            //    treeViewItem.IconTexts[MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER].Text.Append(GetBuildingObjectState(objectToBuild));\n            //    treeViewItem.IconTexts[MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER].Text.Append(PERCENTAGE);\n            //}\n\n            if (objectToBuild.BuildingSpecification.BuildingRequirements.Count > 0)\n            {\n                //int toolTipsCount = treeViewItem.ToolTip.GetToolTips().Count;\n                //if (toolTipsCount > 1)\n                //{\n                //    treeViewItem.ToolTip.RemoveRange(1, toolTipsCount - 1);\n                //}\n                GetBuildingRequirementsDescription(treeViewItem.ToolTip, objectToBuild);\n            }            \n        }\n\n        /// <summary>\n        /// Updates building progress\n        /// </summary>\n        /// <param name=\"treeViewItem\">Treeview item</param>\n        private void UpdateTreeViewItemStateBuildingProgress(MyTreeViewItem treeViewItem)\n        {\n            MyObjectToBuild objectToBuild = treeViewItem.Tag as MyObjectToBuild;\n            \n            treeViewItem.IconTexts[MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER].Text.Clear();\n            //if (MyObjectToBuild.HasSameObjectBuilders(MyEditor.Static.FoundationFactory.BuildingObject, objectToBuild))\n            if (MyEditor.Static.FoundationFactory.BuildingObject != null && MyEditor.Static.FoundationFactory.BuildingObject.IsSame(objectToBuild))\n            {\n                treeViewItem.IconTexts[MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER].Text.Append(GetBuildingObjectState(objectToBuild));\n                treeViewItem.IconTexts[MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER].Text.Append(PERCENTAGE);\n            }            \n        }\n\n        private int GetBuildObjectsCount(MyObjectToBuild objectToBuild)\n        {            \n            //return MyEditor.Static.FoundationFactory.PrefabContainer.Inventory.GetInventoryItems(objectToBuild.ObjectBuilder).Count;\n            return GetInventoryItemsCount(objectToBuild.ObjectBuilder);\n        }\n\n        private int GetInventoryItemsCount(MyMwcObjectBuilder_Base objectBuilder)\n        {\n            return GetInventoryItems(objectBuilder).Count;\n        }\n\n        private List<MyInventoryItem> GetInventoryItems(MyMwcObjectBuilder_Base objectBuilder)\n        {\n            m_helperInventoryItems.Clear();\n            if (!(objectBuilder is MyMwcObjectBuilder_PrefabBase))\n            {\n                MyEditor.Static.FoundationFactory.PrefabContainer.Inventory.GetInventoryItems(ref m_helperInventoryItems, objectBuilder);\n                //return MyEditor.Static.FoundationFactory.PrefabContainer.Inventory.GetInventoryItems(objectBuilder);\n                //return m_helperInventoryItems;\n            }\n            else\n            {\n                MyMwcObjectBuilder_PrefabBase prefabBuilder = objectBuilder as MyMwcObjectBuilder_PrefabBase;\n                //List<MyInventoryItem> inventoryItems = new List<MyInventoryItem>();\n                foreach (MyInventoryItem inventoryItem in MyEditor.Static.FoundationFactory.PrefabContainer.Inventory.GetInventoryItems())\n                {\n                    MyMwcObjectBuilder_Base inventoryItemBuilder = inventoryItem.GetInventoryItemObjectBuilder(false);\n                    if (inventoryItemBuilder is MyMwcObjectBuilder_PrefabBase)\n                    {\n                        MyMwcObjectBuilder_PrefabBase inventoryPrefabBuilder = inventoryItemBuilder as MyMwcObjectBuilder_PrefabBase;\n                        if (inventoryPrefabBuilder.GetObjectBuilderType() == prefabBuilder.GetObjectBuilderType() &&\n                           inventoryPrefabBuilder.GetObjectBuilderId() == prefabBuilder.GetObjectBuilderId() &&\n                           inventoryPrefabBuilder.FactionAppearance == prefabBuilder.FactionAppearance)\n                        {\n                            //inventoryItems.Add(inventoryItem);\n                            m_helperInventoryItems.Add(inventoryItem);\n                        }\n                    }\n                }\n                //return inventoryItems;\n            }\n            return m_helperInventoryItems;\n        }\n\n        private int? GetBuildingObjectState(MyObjectToBuild objectToBuild)\n        {\n            if (MyEditor.Static.FoundationFactory.IsBuilding && \n                //MyObjectToBuild.HasSameObjectBuilders(MyEditor.Static.FoundationFactory.BuildingObject, objectToBuild))\n                MyEditor.Static.FoundationFactory.BuildingObject.IsSame(objectToBuild))\n            {\n                return (int?)(MyEditor.Static.FoundationFactory.BuildingPercentageComplete * 100f);\n            }\n            else\n            {\n                return null;\n            }\n        }\n\n        private int GetBuildingObjectInBuildinQueueCount(MyObjectToBuild objectToBuild)\n        {\n            //return MyEditor.Static.FoundationFactory.BuildingQueue.Count(x => MyObjectToBuild.HasSameObjectBuilders(x, objectToBuild));\n            return MyEditor.Static.FoundationFactory.BuildingQueue.Count(x => x.IsSame(objectToBuild));\n        }\n\n        private void GetBuildingRequirementsDescription(MyToolTips requirementsDescription, MyObjectToBuild objectToBuild)\n        {            \n            StringBuilder meetRequirements = requirementsDescription.GetToolTips()[2].Text;\n            StringBuilder notMeetRequirements = requirementsDescription.GetToolTips()[3].Text;\n\n            meetRequirements.Clear();\n            notMeetRequirements.Clear();            \n\n            foreach (IMyBuildingRequirement buildingRequirement in objectToBuild.BuildingSpecification.BuildingRequirements)\n            {\n                if (buildingRequirement.Check(MyEditor.Static.FoundationFactory))\n                {\n                    MyMwcUtils.AppendStringBuilder(meetRequirements, buildingRequirement.GetDescription());\n                    meetRequirements.AppendLine();\n                }\n                else\n                {                    \n                    MyMwcUtils.AppendStringBuilder(notMeetRequirements, buildingRequirement.GetDescription());\n                    notMeetRequirements.AppendLine();\n                }\n            }       \n            \n            requirementsDescription.RecalculateSize();\n        }\n\n        private bool GetBuildingObjectCanBuildState(MyObjectToBuild objectToBuild)\n        {\n            return objectToBuild.BuildingSpecification.CanBuild(MyEditor.Static.FoundationFactory);\n        }\n\n        private void OnItemAction(object sender, EventArgs args)\n        {\n            MyTreeViewItem item = sender as MyTreeViewItem;\n            MyObjectToBuild objectToBuild = item.Tag as MyObjectToBuild;\n            \n            if (objectToBuild != null)\n            {\n                if (MyGuiScreenGamePlay.Static != null && MyGuiScreenGamePlay.Static.IsCheatEnabled(MyGameplayCheatsEnum.INSTANT_BUILDING))\n                {\n                    MyEditor.Static.FoundationFactory.PrefabContainer.Inventory.AddInventoryItem(objectToBuild.ObjectBuilder, objectToBuild.Amount, true);\n                    UpdateTreeViewItemState(item, MyTreeViewItemUpdateStateFlag.BuildCountAndDragAndDrop);\n                }\n                else if (objectToBuild.BuildingSpecification.CanBuild(MyEditor.Static.FoundationFactory))\n                {\n                    MyEditor.Static.FoundationFactory.AddToBuildingQueue(objectToBuild);\n                    OnBuildingQueueChanged(objectToBuild, true);\n                }\n            }\n        }\n\n        private void OnItemRighClick(object sender, EventArgs args)\n        {\n            MyTreeViewItem item = sender as MyTreeViewItem;\n            MyObjectToBuild objectToBuild = item.Tag as MyObjectToBuild;\n\n            if (objectToBuild != null)\n            {\n                //if (MyEditor.Static.FoundationFactory.IsBuilding && MyObjectToBuild.HasSameObjectBuilders(MyEditor.Static.FoundationFactory.BuildingObject, objectToBuild))\n                if (MyEditor.Static.FoundationFactory.IsBuilding && MyEditor.Static.FoundationFactory.BuildingObject.IsSame(objectToBuild))\n                {\n                    MyEditor.Static.FoundationFactory.CancelBuilding();\n                }\n                else\n                {\n                    //MyObjectToBuild objectToRemove = MyEditor.Static.FoundationFactory.BuildingQueue.FindLast(x => MyObjectToBuild.HasSameObjectBuilders(x, objectToBuild));\n                    MyObjectToBuild objectToRemove = MyEditor.Static.FoundationFactory.BuildingQueue.FindLast(x => x.IsSame(objectToBuild));\n                    if (objectToRemove != null)\n                    {\n                        MyEditor.Static.FoundationFactory.RemoveFromBuildingQueue(objectToRemove);\n                    }\n                }                \n                OnBuildingQueueChanged(objectToBuild, false);                \n            }\n        }        \n\n        private void AddInventoryItem(MyMwcObjectBuilder_Base objectBuilder, float amount)\n        {\n            MyEditor.Static.FoundationFactory.Player.Ship.Inventory.AddInventoryItem(objectBuilder, amount, false);\n        }\n\n        private void AddPrefab(MyMwcObjectBuilder_PrefabBase prefabBuilder)\n        {\n            MyEditor.Static.CreateFromObjectBuilder(prefabBuilder, Matrix.Identity, MyGuiManager.MouseCursorPosition);\n        }\n\n        private bool IsDragAndDropObject(MyObjectToBuild objectToBuild)\n        {\n            return objectToBuild.ObjectBuilder.GetObjectBuilderType() == MyMwcObjectBuilderTypeEnum.Prefab ||\n                   objectToBuild.ObjectBuilder.GetObjectBuilderType() == MyMwcObjectBuilderTypeEnum.PrefabLight ||\n                   objectToBuild.ObjectBuilder.GetObjectBuilderType() == MyMwcObjectBuilderTypeEnum.PrefabParticles ||\n                   objectToBuild.ObjectBuilder.GetObjectBuilderType() == MyMwcObjectBuilderTypeEnum.PrefabSound ||\n                   objectToBuild.ObjectBuilder.GetObjectBuilderType() == MyMwcObjectBuilderTypeEnum.PrefabKinematic ||\n                   objectToBuild.ObjectBuilder.GetObjectBuilderType() == MyMwcObjectBuilderTypeEnum.PrefabLargeShip || \n                   objectToBuild.ObjectBuilder.GetObjectBuilderType() == MyMwcObjectBuilderTypeEnum.PrefabLargeWeapon;            \n        }\n\n        protected override void OnDragDrop(object sender, EventArgs ea)\n        {\n            // Return if drop is done on some control\n            foreach (var control in m_editorControls)\n            {\n                if (control == m_addObjectTreeViewdragDrop)\n                    continue;\n                if (control.Visible && control.ContainsMouse())\n                    return;\n            }\n            \n            MyObjectToBuild objectToBuild = m_addObjectTreeViewdragDrop.DraggedItem.Tag as MyObjectToBuild;\n\n            if (objectToBuild != null && IsDragAndDropObject(objectToBuild))\n            {\n                List<MyInventoryItem> prefabInventoryItems = GetInventoryItems(objectToBuild.ObjectBuilder);\n                if(prefabInventoryItems.Count > 0)\n                {\n                    AddPrefab(objectToBuild.ObjectBuilder as MyMwcObjectBuilder_PrefabBase);\n                    MyInventoryItem prefabInventoryItem = prefabInventoryItems[0];\n                    MyEditor.Static.FoundationFactory.PrefabContainer.Inventory.RemoveInventoryItem(prefabInventoryItem, true);                    \n                }\n            }            \n        }\n\n        private bool IsFilterChanged(MyPrefabSnapPoint myPrefabSnapPoint)\n        {\n            return myPrefabSnapPoint != m_activeSnapPointFilter ||\n                   m_filterTextbox.Text != m_activeTextFilter ||\n                   m_checkboxOnlyItemsOnWhichHasBlueprints.Checked != m_activeItemsOnWhichHasBlueprintsFilter ||\n                   m_checkboxOnlyItemsOnWhichHasOre.Checked != m_activeItemsOnWhichHasOreFilter ||\n                   m_checkboxOnlyItemsWhichHasBuild.Checked != m_activeItemsWhichHasBuildFilter;\n        }\n\n        private bool FilterResultByText(MyTreeViewItem item)\n        {\n            // Filter by text\n            if (!string.IsNullOrEmpty(m_activeTextFilter))\n            {\n                if (item.ToolTip == null)\n                {\n                    return false;\n                }\n\n                var toolTips = item.ToolTip.GetToolTips();\n                if (toolTips.Count == 0 || toolTips[0].Text.ToString().IndexOf(m_activeTextFilter, StringComparison.InvariantCultureIgnoreCase) == -1)\n                {\n                    return false;\n                }\n            }\n            return true;\n        }\n\n        private bool FilterResultByItemOnWhichHasBlueprints(MyTreeViewItem item)\n        {\n            MyObjectToBuild objectToBuild = item.Tag as MyObjectToBuild;\n            if (m_activeItemsOnWhichHasBlueprintsFilter)\n            {\n                foreach (IMyBuildingRequirement buildingRequirement in objectToBuild.BuildingSpecification.BuildingRequirements)\n                {\n                    if(buildingRequirement is MyBuildingRequirementBlueprint)\n                    {\n                        MyBuildingRequirementBlueprint blueprintRequirement = buildingRequirement as MyBuildingRequirementBlueprint;\n                        if (!blueprintRequirement.Check(MyEditor.Static.FoundationFactory))\n                        {\n                            return false;\n                        }\n                    }\n                }\n                return true;                \n            }\n            return true;\n        }\n\n        private bool FilterResultByItemOnWhichHasOre(MyTreeViewItem item)\n        {\n            MyObjectToBuild objectToBuild = item.Tag as MyObjectToBuild;\n            if (m_activeItemsOnWhichHasOreFilter)\n            {\n                foreach (IMyBuildingRequirement buildingRequirement in objectToBuild.BuildingSpecification.BuildingRequirements)\n                {\n                    if (buildingRequirement is MyBuildingRequirementInventoryItem)\n                    {\n                        MyBuildingRequirementInventoryItem inventoryItemRequirement = buildingRequirement as MyBuildingRequirementInventoryItem;\n                        if (inventoryItemRequirement.ObjectBuilderType == MyMwcObjectBuilderTypeEnum.Ore &&\n                            !inventoryItemRequirement.Check(MyEditor.Static.FoundationFactory))\n                        {\n                            return false;\n                        }\n                    }\n                }\n                return true;                                \n            }\n            return true;\n        }\n\n        private bool FilterResultByBuildItem(MyTreeViewItem item)\n        {\n            MyObjectToBuild objectToBuild = item.Tag as MyObjectToBuild;\n            if (m_activeItemsWhichHasBuildFilter)\n            {                \n                //if (MyEditor.Static.FoundationFactory.PrefabContainer.Inventory.GetInventoryItems(objectToBuild.ObjectBuilder).Count > 0)\n                if (GetInventoryItemsCount(objectToBuild.ObjectBuilder) > 0)                \n                {\n                    return true;\n                }\n                return false;\n            }\n            return true;\n        }\n\n        private bool FilterResultByItemAndPrefabSnapPoint(MyTreeViewItem item)\n        {\n            if (!MyEditor.Static.SnapPointFilter || m_activeSnapPointFilter == null)\n            {\n                // Always pass if snap point filter is disabled or no snap point selected\n                return true;\n            }\n\n            MyObjectToBuild objectToBuild = item.Tag as MyObjectToBuild;\n            if (objectToBuild.ObjectBuilder is MyMwcObjectBuilder_PrefabBase)\n            {\n                var snapPoints = MyEditor.GetPrefabSnapPoints(objectToBuild.ObjectBuilder.GetObjectBuilderType(), objectToBuild.ObjectBuilder.GetObjectBuilderId().Value);\n                return snapPoints.Exists(a => m_activeSnapPointFilter.CanAttachTo(a));                \n            }\n\n            return false;\n        }\n\n        protected override void FilterAddObjectTree(MyPrefabSnapPoint myPrefabSnapPoint)\n        {                        \n            if (IsFilterChanged(myPrefabSnapPoint))\n            {\n                FilterAddObjectTreePrivate(myPrefabSnapPoint);\n            }\n        }\n\n        private void FilterAddObjectTreePrivate(MyPrefabSnapPoint myPrefabSnapPoint)\n        {\n            m_activeSnapPointFilter = myPrefabSnapPoint;\n            m_activeTextFilter = m_filterTextbox.Text;\n            m_activeItemsOnWhichHasBlueprintsFilter = m_checkboxOnlyItemsOnWhichHasBlueprints.Checked;\n            m_activeItemsOnWhichHasOreFilter = m_checkboxOnlyItemsOnWhichHasOre.Checked;\n            m_activeItemsWhichHasBuildFilter = m_checkboxOnlyItemsWhichHasBuild.Checked;\n\n            m_addObjectTreeView.FilterTree(item =>\n            {\n                return FilterResultByText(item) &&\n                       FilterResultByItemAndPrefabSnapPoint(item) &&\n                       FilterResultByItemOnWhichHasBlueprints(item) &&\n                       FilterResultByItemOnWhichHasOre(item) &&\n                       FilterResultByBuildItem(item);\n            });\n        }\n\n        public override void Update()\n        {\n            base.Update();\n            if (MyEditor.Static.FoundationFactory != null && MyEditor.Static.FoundationFactory.IsBuilding)\n            {\n                m_lastUpdateTime += MyConstants.PHYSICS_STEP_SIZE_IN_MILLISECONDS;\n                if (m_lastUpdateTime >= UPDATE_TREEVIEW_ITEMS_STATE)\n                {\n                    m_lastUpdateTime = 0;                    \n                    MyTreeViewItem treeViewItem = GetTreeViewItem(MyEditor.Static.FoundationFactory.BuildingObject);\n                    UpdateTreeViewItemState(treeViewItem, MyTreeViewItemUpdateStateFlag.BuildingProgress);                    \n                }\n            }\n        }\n\n        public override void Draw()\n        {\n            base.Draw();\n            DrawTexts();\n        }\n\n        private void DrawTexts()\n        {\n            m_oreName.Clear();\n            m_oreCount.Clear();\n            foreach (MyMwcObjectBuilder_Ore_TypesEnum key in Enum.GetValues(typeof(MyMwcObjectBuilder_Ore_TypesEnum)))\n            {\n                int val = (int)MySession.PlayerShip.Inventory.GetTotalAmountOfInventoryItems(MyMwcObjectBuilderTypeEnum.Ore, (int)key);\n                if (val > 0)\n                {\n                    m_oreName.Append(MyGuiObjectBuilderHelpers.GetGuiHelper(MyMwcObjectBuilderTypeEnum.Ore, (int)key).Description);\n                    m_oreName.Append(ORE_TEXT_SEPARATOR);\n                    m_oreName.AppendLine();\n\n                    m_oreCount.Append(val);\n                    m_oreCount.AppendLine();\n                }\n            }\n\n            MyGuiManager.DrawString(MyGuiManager.GetFontMinerWarsWhite(), m_oreName,\n                            MyGuiManager.GetScreenTextRightTopPosition() - ORE_INFORMATION_RIGHT_OFFSET, MyGuiConstants.LABEL_TEXT_SCALE,\n                            MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP);\n\n            MyGuiManager.DrawString(MyGuiManager.GetFontMinerWarsWhite(), m_oreCount,\n                            MyGuiManager.GetScreenTextRightTopPosition(), MyGuiConstants.LABEL_TEXT_SCALE,\n                            MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_TOP);\n        }\n\n        public override void UpdateScreenSize()\n        {\n            base.UpdateScreenSize();\n\n            Vector2 oldTreeViewPosition = m_addObjectTreeView.GetPosition();\n            Vector2 oldTreeViewSize = m_addObjectTreeView.GetSize().Value;\n            \n            Vector2 filterCheckboxPosition = m_filterTextbox.GetPosition() +\n                                             new Vector2(-m_filterTextbox.GetSize().Value.X / 2f, m_filterTextbox.GetSize().Value.Y) +\n                                             new Vector2(CHECK_BOX_SIZE.X / 2f, MyGuiConstants.TOOLBAR_PADDING.Y);\n\n            m_addObjectTreeView.SetSize(oldTreeViewSize - new Vector2(0f, CHECK_BOX_SIZE.Y));\n            m_addObjectTreeView.SetPosition(oldTreeViewPosition + new Vector2(0f, CHECK_BOX_SIZE.Y / 2f + MyGuiConstants.TOOLBAR_PADDING.Y));\n\n            m_checkboxOnlyItemsOnWhichHasBlueprints.SetPosition(filterCheckboxPosition);\n            m_checkboxOnlyItemsOnWhichHasBlueprints.SetSize(CHECK_BOX_SIZE);\n            m_checkboxOnlyItemsOnWhichHasOre.SetPosition(filterCheckboxPosition + new Vector2(0.005f + CHECK_BOX_SIZE.X, 0f));\n            m_checkboxOnlyItemsOnWhichHasOre.SetSize(CHECK_BOX_SIZE);\n            m_checkboxOnlyItemsWhichHasBuild.SetPosition(filterCheckboxPosition + new Vector2(0.005f + CHECK_BOX_SIZE.X, 0f) * 2);\n            m_checkboxOnlyItemsWhichHasBuild.SetSize(CHECK_BOX_SIZE);\n            \n        }\n\n        private void OnBuildingComplete(MyPrefabFoundationFactory sender, MyObjectToBuild buildObject)\n        {\n            MyTreeViewItemUpdateStateFlag updateFlags = MyTreeViewItemUpdateStateFlag.BuildCountAndDragAndDrop | MyTreeViewItemUpdateStateFlag.BuildingProgress;\n\n            MyTreeViewItem treeViewItem = GetTreeViewItem(buildObject);\n            UpdateTreeViewItemState(treeViewItem, updateFlags);\n\n            if(sender.BuildingObject != null)\n            {\n                UpdateTreeViewItemState(GetTreeViewItem(sender.BuildingObject), MyTreeViewItemUpdateStateFlag.BuildingQueue);\n            }\n            FilterAddObjectTreePrivate(MyEditorGizmo.SelectedSnapPoint);\n        }\n\n        private void OnBuildingQueueChanged(MyObjectToBuild objectToBuild, bool added)\n        {            \n            MyTreeViewItemUpdateStateFlag updateFlags = MyTreeViewItemUpdateStateFlag.BuildingQueue;\n            if(!added)\n            {\n                updateFlags = updateFlags | MyTreeViewItemUpdateStateFlag.BuildingProgress;\n            }\n\n            MyTreeViewItem treeViewItem = GetTreeViewItem(objectToBuild);\n            UpdateTreeViewItemState(treeViewItem, updateFlags);\n\n            UpdateTreeViewItemsState(MyTreeViewItemUpdateStateFlag.CanBuildAndRequirements);\n        }\n\n        private void OnFoundationFactoryInventoryContentChanged(MyInventory sender)\n        {\n            MyTreeViewItemUpdateStateFlag updateFlags = MyTreeViewItemUpdateStateFlag.BuildCountAndDragAndDrop | MyTreeViewItemUpdateStateFlag.CanBuildAndRequirements;\n            \n            UpdateTreeViewItemsState(updateFlags);\n            FilterAddObjectTreePrivate(MyEditorGizmo.SelectedSnapPoint);\n        }\n\n        public override void LoadEditorData()\n        {\n            // add basic construction kit to checkpoint's inventory if there is no one\n            if (!MySession.Static.Inventory.Contains(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit))\n            {\n                MySession.Static.Inventory.AddInventoryItem(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit, 1f, true, true);\n            }\n\n            base.LoadEditorData();\n            UpdateTreeViewItemsState(MyTreeViewItemUpdateStateFlag.All);\n            FilterAddObjectTreePrivate(MyEditorGizmo.SelectedSnapPoint);\n            MyEditor.Static.FoundationFactory.BuildingComplete += OnBuildingComplete;            \n            MyEditor.Static.FoundationFactory.PrefabContainer.Inventory.OnInventoryContentChange += OnFoundationFactoryInventoryContentChanged;\n            MySession.Static.Inventory.OnInventoryContentChange += OnFoundationFactoryInventoryContentChanged;\n        }\n\n        public override void UnloadEditorData()\n        {\n            base.UnloadEditorData();\n            MyEditor.Static.FoundationFactory.BuildingComplete -= OnBuildingComplete;            \n            MyEditor.Static.FoundationFactory.PrefabContainer.Inventory.OnInventoryContentChange -= OnFoundationFactoryInventoryContentChanged;\n            MySession.Static.Inventory.OnInventoryContentChange -= OnFoundationFactoryInventoryContentChanged;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Helpers/MyGuiInventoryTemplateTypeHelpers.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.AppCode.Game.Localization;\n\nnamespace MinerWars.AppCode.Game.GUI.Helpers\n{\n    class MyGuiInventoryTemplateTypeHelpers\n    {\n        static Dictionary<int, MyGuiHelperBase> m_inventoryTemplateTypeHelpers = new Dictionary<int, MyGuiHelperBase>();\n\n        //Arrays of enums values\n        public static Array MyInventoryTemplateTypeValues { get; private set; }\n\n        static MyGuiInventoryTemplateTypeHelpers()\n        {\n            MyMwcLog.WriteLine(\"MyGuiInventoryTemplateHelpers()\");\n\n            MyInventoryTemplateTypeValues = Enum.GetValues(typeof(MyMwcInventoryTemplateTypeEnum));\n        }\n\n        public static MyGuiHelperBase GetInventoryTemplateTypeHelper(MyMwcInventoryTemplateTypeEnum templateTypeEnum)\n        {\n            MyGuiHelperBase ret;\n            if (m_inventoryTemplateTypeHelpers.TryGetValue((short)templateTypeEnum, out ret))\n                return ret;\n            else\n                return null;\n        }\n\n        public static void UnloadContent()\n        {\n            m_inventoryTemplateTypeHelpers.Clear();\n        }\n\n        public static void LoadContent()\n        {\n            m_inventoryTemplateTypeHelpers.Add((int)MyMwcInventoryTemplateTypeEnum.MerchantArmy, new MyGuiHelperBase(MyTextsWrapperEnum.MerchantArmy));\n            m_inventoryTemplateTypeHelpers.Add((int)MyMwcInventoryTemplateTypeEnum.MerchantBlueprint, new MyGuiHelperBase(MyTextsWrapperEnum.MerchantBlueprint));\n            m_inventoryTemplateTypeHelpers.Add((int)MyMwcInventoryTemplateTypeEnum.MerchantMedicine, new MyGuiHelperBase(MyTextsWrapperEnum.MerchantMedicine));\n            m_inventoryTemplateTypeHelpers.Add((int)MyMwcInventoryTemplateTypeEnum.MerchantMixed, new MyGuiHelperBase(MyTextsWrapperEnum.MerchantMixed));\n            m_inventoryTemplateTypeHelpers.Add((int)MyMwcInventoryTemplateTypeEnum.MerchantTools, new MyGuiHelperBase(MyTextsWrapperEnum.MerchantTools));\n            m_inventoryTemplateTypeHelpers.Add((int)MyMwcInventoryTemplateTypeEnum.MPMerchantFrontLine, new MyGuiHelperBase(MyTextsWrapperEnum.MPMerchantFrontLine));\n            m_inventoryTemplateTypeHelpers.Add((int)MyMwcInventoryTemplateTypeEnum.MPMerchantSupport, new MyGuiHelperBase(MyTextsWrapperEnum.MPMerchantSupport));\n            m_inventoryTemplateTypeHelpers.Add((int)MyMwcInventoryTemplateTypeEnum.MerchantMixed_Tier_1, new MyGuiHelperBase(MyTextsWrapperEnum.MerchantMixed_Tier_1));\n            m_inventoryTemplateTypeHelpers.Add((int)MyMwcInventoryTemplateTypeEnum.MerchantMixed_Tier_2, new MyGuiHelperBase(MyTextsWrapperEnum.MerchantMixed_Tier_2));\n            m_inventoryTemplateTypeHelpers.Add((int)MyMwcInventoryTemplateTypeEnum.MerchantMixed_Tier_3, new MyGuiHelperBase(MyTextsWrapperEnum.MerchantMixed_Tier_3));\n            m_inventoryTemplateTypeHelpers.Add((int)MyMwcInventoryTemplateTypeEnum.MerchantMixed_Tier_4, new MyGuiHelperBase(MyTextsWrapperEnum.MerchantMixed_Tier_4));\n            m_inventoryTemplateTypeHelpers.Add((int)MyMwcInventoryTemplateTypeEnum.MerchantMixed_Tier_5, new MyGuiHelperBase(MyTextsWrapperEnum.MerchantMixed_Tier_5));\n            m_inventoryTemplateTypeHelpers.Add((int)MyMwcInventoryTemplateTypeEnum.MerchantMixed_Tier_6, new MyGuiHelperBase(MyTextsWrapperEnum.MerchantMixed_Tier_6));\n            m_inventoryTemplateTypeHelpers.Add((int)MyMwcInventoryTemplateTypeEnum.MerchantMixed_Tier_7, new MyGuiHelperBase(MyTextsWrapperEnum.MerchantMixed_Tier_7));\n            m_inventoryTemplateTypeHelpers.Add((int)MyMwcInventoryTemplateTypeEnum.MerchantMixed_Tier_8, new MyGuiHelperBase(MyTextsWrapperEnum.MerchantMixed_Tier_8));\n            m_inventoryTemplateTypeHelpers.Add((int)MyMwcInventoryTemplateTypeEnum.MerchantMixed_Tier_9, new MyGuiHelperBase(MyTextsWrapperEnum.MerchantMixed_Tier_9));\n            m_inventoryTemplateTypeHelpers.Add((int)MyMwcInventoryTemplateTypeEnum.MerchantMixed_Tier_Special, new MyGuiHelperBase(MyTextsWrapperEnum.MerchantMixed_Tier_Special));\n            m_inventoryTemplateTypeHelpers.Add((int)MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_1, new MyGuiHelperBase(MyTextsWrapperEnum.MerchantArmy_Tier_1));\n            m_inventoryTemplateTypeHelpers.Add((int)MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_2, new MyGuiHelperBase(MyTextsWrapperEnum.MerchantArmy_Tier_2));\n            m_inventoryTemplateTypeHelpers.Add((int)MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_3, new MyGuiHelperBase(MyTextsWrapperEnum.MerchantArmy_Tier_3));\n            m_inventoryTemplateTypeHelpers.Add((int)MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_4, new MyGuiHelperBase(MyTextsWrapperEnum.MerchantArmy_Tier_4));\n            m_inventoryTemplateTypeHelpers.Add((int)MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_5, new MyGuiHelperBase(MyTextsWrapperEnum.MerchantArmy_Tier_5));\n            m_inventoryTemplateTypeHelpers.Add((int)MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_6, new MyGuiHelperBase(MyTextsWrapperEnum.MerchantArmy_Tier_6));\n            m_inventoryTemplateTypeHelpers.Add((int)MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_7, new MyGuiHelperBase(MyTextsWrapperEnum.MerchantArmy_Tier_7));\n            m_inventoryTemplateTypeHelpers.Add((int)MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_8, new MyGuiHelperBase(MyTextsWrapperEnum.MerchantArmy_Tier_8));\n            m_inventoryTemplateTypeHelpers.Add((int)MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_9, new MyGuiHelperBase(MyTextsWrapperEnum.MerchantArmy_Tier_9));\n            m_inventoryTemplateTypeHelpers.Add((int)MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_Special, new MyGuiHelperBase(MyTextsWrapperEnum.MerchantArmy_Tier_Special));\n            m_inventoryTemplateTypeHelpers.Add((int)MyMwcInventoryTemplateTypeEnum.MerchantMedicine_Tier_1, new MyGuiHelperBase(MyTextsWrapperEnum.MerchantMedicine_Tier_1));\n            m_inventoryTemplateTypeHelpers.Add((int)MyMwcInventoryTemplateTypeEnum.MerchantMedicine_Tier_2, new MyGuiHelperBase(MyTextsWrapperEnum.MerchantMedicine_Tier_2));\n            m_inventoryTemplateTypeHelpers.Add((int)MyMwcInventoryTemplateTypeEnum.MerchantMedicine_Tier_3, new MyGuiHelperBase(MyTextsWrapperEnum.MerchantMedicine_Tier_3));\n            m_inventoryTemplateTypeHelpers.Add((int)MyMwcInventoryTemplateTypeEnum.MerchantMedicine_Tier_4, new MyGuiHelperBase(MyTextsWrapperEnum.MerchantMedicine_Tier_4));\n            m_inventoryTemplateTypeHelpers.Add((int)MyMwcInventoryTemplateTypeEnum.MerchantMedicine_Tier_5, new MyGuiHelperBase(MyTextsWrapperEnum.MerchantMedicine_Tier_5));\n            m_inventoryTemplateTypeHelpers.Add((int)MyMwcInventoryTemplateTypeEnum.MerchantMedicine_Tier_6, new MyGuiHelperBase(MyTextsWrapperEnum.MerchantMedicine_Tier_6));\n            m_inventoryTemplateTypeHelpers.Add((int)MyMwcInventoryTemplateTypeEnum.MerchantMedicine_Tier_7, new MyGuiHelperBase(MyTextsWrapperEnum.MerchantMedicine_Tier_7));\n            m_inventoryTemplateTypeHelpers.Add((int)MyMwcInventoryTemplateTypeEnum.MerchantMedicine_Tier_8, new MyGuiHelperBase(MyTextsWrapperEnum.MerchantMedicine_Tier_8));\n            m_inventoryTemplateTypeHelpers.Add((int)MyMwcInventoryTemplateTypeEnum.MerchantMedicine_Tier_9, new MyGuiHelperBase(MyTextsWrapperEnum.MerchantMedicine_Tier_9));\n            m_inventoryTemplateTypeHelpers.Add((int)MyMwcInventoryTemplateTypeEnum.MerchantMedicine_Tier_Special, new MyGuiHelperBase(MyTextsWrapperEnum.MerchantMedicine_Tier_Special));\n            m_inventoryTemplateTypeHelpers.Add((int)MyMwcInventoryTemplateTypeEnum.MerchantTools_Tier_1, new MyGuiHelperBase(MyTextsWrapperEnum.MerchantTools_Tier_1));\n            m_inventoryTemplateTypeHelpers.Add((int)MyMwcInventoryTemplateTypeEnum.MerchantTools_Tier_2, new MyGuiHelperBase(MyTextsWrapperEnum.MerchantTools_Tier_2));\n            m_inventoryTemplateTypeHelpers.Add((int)MyMwcInventoryTemplateTypeEnum.MerchantTools_Tier_3, new MyGuiHelperBase(MyTextsWrapperEnum.MerchantTools_Tier_3));\n            m_inventoryTemplateTypeHelpers.Add((int)MyMwcInventoryTemplateTypeEnum.MerchantTools_Tier_4, new MyGuiHelperBase(MyTextsWrapperEnum.MerchantTools_Tier_4));\n            m_inventoryTemplateTypeHelpers.Add((int)MyMwcInventoryTemplateTypeEnum.MerchantTools_Tier_5, new MyGuiHelperBase(MyTextsWrapperEnum.MerchantTools_Tier_5));\n            m_inventoryTemplateTypeHelpers.Add((int)MyMwcInventoryTemplateTypeEnum.MerchantTools_Tier_6, new MyGuiHelperBase(MyTextsWrapperEnum.MerchantTools_Tier_6));\n            m_inventoryTemplateTypeHelpers.Add((int)MyMwcInventoryTemplateTypeEnum.MerchantTools_Tier_7, new MyGuiHelperBase(MyTextsWrapperEnum.MerchantTools_Tier_7));\n            m_inventoryTemplateTypeHelpers.Add((int)MyMwcInventoryTemplateTypeEnum.MerchantTools_Tier_8, new MyGuiHelperBase(MyTextsWrapperEnum.MerchantTools_Tier_8));\n            m_inventoryTemplateTypeHelpers.Add((int)MyMwcInventoryTemplateTypeEnum.MerchantTools_Tier_9, new MyGuiHelperBase(MyTextsWrapperEnum.MerchantTools_Tier_9));\n            m_inventoryTemplateTypeHelpers.Add((int)MyMwcInventoryTemplateTypeEnum.MerchantTools_Tier_Special, new MyGuiHelperBase(MyTextsWrapperEnum.MerchantTools_Tier_Special));\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Helpers/MyGuiLargeShipHelper.cs",
    "content": "﻿using MinerWarsMath.Graphics;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Textures;\n\nnamespace MinerWars.AppCode.Game.GUI.Helpers\n{\n    class MyGuiLargeShipHelper : MyGuiHelperBase\n    {\n        public MyGuiLargeShipHelper(MyTexture2D icon, MyTextsWrapperEnum description)\n            : base(icon, description)\n        {\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Helpers/MyGuiLargeShipHelpers.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing MinerWarsMath.Graphics;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Textures;\n\nnamespace MinerWars.AppCode.Game.GUI.Helpers\n{\n    static class MyGuiLargeShipHelpers\n    {\n\n        //Dictionaries for helpers\n        static Dictionary<MyMwcObjectBuilder_LargeShip_TypesEnum, MyGuiLargeShipHelper> m_largeShipHelpers = new Dictionary<MyMwcObjectBuilder_LargeShip_TypesEnum, MyGuiLargeShipHelper>();\n\n        //Arrays of enums values\n        public static Array MyMwcLargeShipTypesEnumValues { get; private set; }\n\n        static MyGuiLargeShipHelpers()\n        {\n            MyMwcLargeShipTypesEnumValues = Enum.GetValues(typeof(MyMwcObjectBuilder_LargeShip_TypesEnum));\n        }\n\n        public static MyGuiLargeShipHelper GetMyGuiLargeShipHelper(MyMwcObjectBuilder_LargeShip_TypesEnum largeShipEnum)\n        {\n            MyGuiLargeShipHelper ret;\n            if (m_largeShipHelpers.TryGetValue(largeShipEnum, out ret))\n                return ret;\n            else\n                return null;\n        }\n\n        public static void UnloadContent()\n        {\n            m_largeShipHelpers.Clear();\n        }\n\n        public static void LoadContent()\n        {\n\n            #region Create large ship helpers\n\n            m_largeShipHelpers.Add(MyMwcObjectBuilder_LargeShip_TypesEnum.KAI,\n                new MyGuiLargeShipHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\LargeShipKai\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.LargeShipKai));\n\n            m_largeShipHelpers.Add(MyMwcObjectBuilder_LargeShip_TypesEnum.MOTHERSHIP_SAYA,\n               new MyGuiLargeShipHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\LargeShipSaya\", flags: TextureFlags.IgnoreQuality),\n                   MyTextsWrapperEnum.LargeShipSaya));\n\n            m_largeShipHelpers.Add(MyMwcObjectBuilder_LargeShip_TypesEnum.JEROMIE_INTERIOR_STATION,\n                new MyGuiLargeShipHelper(null,\n                    MyTextsWrapperEnum.Largeship));\n\n            m_largeShipHelpers.Add(MyMwcObjectBuilder_LargeShip_TypesEnum.ARDANT,\n                new MyGuiLargeShipHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\LargeShipArdant\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.LargeShipArdant));\n\n            #endregion\n\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Helpers/MyGuiObjectBuilderHelpers.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Prefabs;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.InfluenceSpheres;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.Prefabs;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.LargeShipTools;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils.Utils;\nusing System.Text;\n\nnamespace MinerWars.AppCode.Game.GUI.Helpers\n{\n    static class MyGuiObjectBuilderHelpers\n    {\n        //Dictionary for helpers        \n        static MyGuiHelperBase[][] m_buildTypeHelpers = new MyGuiHelperBase[MyMwcUtils.GetMaxValueFromEnum<MyMwcObjectBuilderTypeEnum>() + 1][];\n\n        static List<Tuple<MyMwcObjectBuilder_Prefab_TypesEnum, MyGuiHelperBase>> m_onTheFlyPrefabHelpers = new List<Tuple<MyMwcObjectBuilder_Prefab_TypesEnum, MyGuiHelperBase>>();\n\n        static MyGuiObjectBuilderHelpers()\n        {\n            //LoadContent();\n        }\n\n        public static MyGuiHelperBase GetGuiHelper(MyMwcObjectBuilderTypeEnum objectBuilderType, int objectBuilderID)\n        {            \n            return m_buildTypeHelpers[(int) objectBuilderType][objectBuilderID];\n        }\n\n        public static MyGuiHelperBase GetGuiHelper(MyMwcObjectBuilder_Base objectBuilder) \n        {\n            MyMwcObjectBuilderTypeEnum objectBuilderType = objectBuilder.GetObjectBuilderType();\n            int objectBuilderId = objectBuilder.GetObjectBuilderId() != null ? objectBuilder.GetObjectBuilderId().Value : 0;\n            return GetGuiHelper(objectBuilderType, objectBuilderId);\n        }\n\n        public static void AddGuiHelper(MyMwcObjectBuilderTypeEnum objectBuilderType, int objectBuilderID, MyGuiHelperBase guiHelper)\n        {            \n            if (m_buildTypeHelpers[(int)objectBuilderType] == null)\n            {\n                m_buildTypeHelpers[(int)objectBuilderType] = new MyGuiHelperBase[MyMwcObjectBuilder_Base.GetObjectBuilderIDs(objectBuilderType).Max() + 1];\n            }\n            m_buildTypeHelpers[(int) objectBuilderType][objectBuilderID] = guiHelper;\n        }\n\n        public static void LoadContent()\n        {            \n            #region Create small debris helpers\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallDebris, (int)MyMwcObjectBuilder_SmallDebris_TypesEnum.Cistern,\n                new MyGuiSmallDebrisHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Cistern\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.Cistern));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallDebris, (int)MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris1,\n                new MyGuiSmallDebrisHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Cistern\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.Cistern));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallDebris, (int)MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris2,\n                new MyGuiSmallDebrisHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Cistern\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.Cistern));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallDebris, (int)MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris3,\n                new MyGuiSmallDebrisHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Cistern\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.Cistern));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallDebris, (int)MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris4,\n                new MyGuiSmallDebrisHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Cistern\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.Cistern));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallDebris, (int)MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris5,\n                new MyGuiSmallDebrisHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Cistern\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.Cistern));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallDebris, (int)MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris6,\n                new MyGuiSmallDebrisHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Cistern\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.Cistern));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallDebris, (int)MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris7,\n                new MyGuiSmallDebrisHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Cistern\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.Cistern));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallDebris, (int)MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris8,\n                new MyGuiSmallDebrisHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Cistern\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.Cistern));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallDebris, (int)MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris9,\n                new MyGuiSmallDebrisHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Cistern\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.Cistern));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallDebris, (int)MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris10,\n                new MyGuiSmallDebrisHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Cistern\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.Cistern));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallDebris, (int)MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris11,\n                new MyGuiSmallDebrisHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Cistern\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.Cistern));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallDebris, (int)MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris12,\n                new MyGuiSmallDebrisHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Cistern\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.Cistern));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallDebris, (int)MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris13,\n                new MyGuiSmallDebrisHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Cistern\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.Cistern));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallDebris, (int)MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris14,\n                new MyGuiSmallDebrisHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Cistern\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.Cistern));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallDebris, (int)MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris15,\n                new MyGuiSmallDebrisHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Cistern\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.Cistern));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallDebris, (int)MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris16,\n                new MyGuiSmallDebrisHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Cistern\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.Cistern));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallDebris, (int)MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris17,\n                new MyGuiSmallDebrisHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Cistern\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.Cistern));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallDebris, (int)MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris18,\n                new MyGuiSmallDebrisHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Cistern\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.Cistern));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallDebris, (int)MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris19,\n                new MyGuiSmallDebrisHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Cistern\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.Cistern));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallDebris, (int)MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris20,\n                new MyGuiSmallDebrisHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Cistern\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.Cistern));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallDebris, (int)MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris21,\n                new MyGuiSmallDebrisHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Cistern\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.Cistern));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallDebris, (int)MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris22,\n                new MyGuiSmallDebrisHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Cistern\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.Cistern));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallDebris, (int)MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris23,\n                new MyGuiSmallDebrisHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Cistern\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.Cistern));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallDebris, (int)MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris24,\n                new MyGuiSmallDebrisHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Cistern\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.Cistern));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallDebris, (int)MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris25,\n                new MyGuiSmallDebrisHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Cistern\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.Cistern));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallDebris, (int)MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris26,\n                new MyGuiSmallDebrisHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Cistern\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.Cistern));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallDebris, (int)MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris27,\n                new MyGuiSmallDebrisHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Cistern\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.Cistern));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallDebris, (int)MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris28,\n                new MyGuiSmallDebrisHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Cistern\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.Cistern));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallDebris, (int)MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris29,\n                new MyGuiSmallDebrisHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Cistern\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.Cistern));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallDebris, (int)MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris30,\n                new MyGuiSmallDebrisHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Cistern\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.Cistern));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallDebris, (int)MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris31,\n                new MyGuiSmallDebrisHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Cistern\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.Cistern));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallDebris, (int)MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris32_pilot,\n                new MyGuiSmallDebrisHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Cistern\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.Cistern));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallDebris, (int)MyMwcObjectBuilder_SmallDebris_TypesEnum.pipe_bundle,\n              new MyGuiSmallDebrisHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\BundleOfPipes\", flags: TextureFlags.IgnoreQuality),\n                  MyTextsWrapperEnum.pipe_bundle));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallDebris, (int)MyMwcObjectBuilder_SmallDebris_TypesEnum.Standard_Container_1,\n              new MyGuiSmallDebrisHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\StandardContainer01\", flags: TextureFlags.IgnoreQuality),\n                  MyTextsWrapperEnum.Standard_Container_1));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallDebris, (int)MyMwcObjectBuilder_SmallDebris_TypesEnum.Standard_Container_2,\n              new MyGuiSmallDebrisHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\StandardContainer02\", flags: TextureFlags.IgnoreQuality),\n                  MyTextsWrapperEnum.Standard_Container_2));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallDebris, (int)MyMwcObjectBuilder_SmallDebris_TypesEnum.Standard_Container_3,\n              new MyGuiSmallDebrisHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\StandardContainer03\", flags: TextureFlags.IgnoreQuality),\n                  MyTextsWrapperEnum.Standard_Container_3));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallDebris, (int)MyMwcObjectBuilder_SmallDebris_TypesEnum.Standard_Container_4,\n              new MyGuiSmallDebrisHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\StandardContainer04\", flags: TextureFlags.IgnoreQuality),\n                  MyTextsWrapperEnum.Standard_Container_4));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallDebris, (int)MyMwcObjectBuilder_SmallDebris_TypesEnum.UtilityVehicle_1,\n              new MyGuiSmallDebrisHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\UtilityVehicle01\", flags: TextureFlags.IgnoreQuality),\n                  MyTextsWrapperEnum.UtilityVehicle_1));\n            #endregion\n\n            #region LargeDebrisField\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.LargeDebrisField, (int)MyMwcObjectBuilder_LargeDebrisField_TypesEnum.Debris84,\n                new MyGuiHelperBase(MyTextsWrapperEnum.EmptyDescription));\n            #endregion\n\n            #region Create large ship helpers\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.LargeShip, (int)MyMwcObjectBuilder_LargeShip_TypesEnum.KAI,\n                new MyGuiLargeShipHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\LargeShipKai\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.LargeShipKai));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.LargeShip, (int)MyMwcObjectBuilder_LargeShip_TypesEnum.MOTHERSHIP_SAYA,\n               new MyGuiLargeShipHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\LargeShipSaya\", flags: TextureFlags.IgnoreQuality),\n                   MyTextsWrapperEnum.LargeShipSaya));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.LargeShip, (int)MyMwcObjectBuilder_LargeShip_TypesEnum.JEROMIE_INTERIOR_STATION,\n                new MyGuiLargeShipHelper(null,\n                    MyTextsWrapperEnum.Largeship));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.LargeShip, (int)MyMwcObjectBuilder_LargeShip_TypesEnum.CRUISER_SHIP,\n                new MyGuiLargeShipHelper(null,\n                    MyTextsWrapperEnum.Largeship));            \n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.LargeShip, (int)MyMwcObjectBuilder_LargeShip_TypesEnum.ARDANT,\n                new MyGuiLargeShipHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\LargeShipArdant\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.LargeShipArdant));\n            #endregion\n\n            #region Create engine helpers\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Engine, (int)MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.Chemical_1,\n                new MyGuiSmallShipHelperEngine(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\EngineChemical1\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.EngineChemical1));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Engine, (int)MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.Chemical_2,\n                new MyGuiSmallShipHelperEngine(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\EngineChemical2\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.EngineChemical2));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Engine, (int)MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.Chemical_3,\n                new MyGuiSmallShipHelperEngine(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\EngineChemical3\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.EngineChemical3));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Engine, (int)MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.Chemical_4,\n                new MyGuiSmallShipHelperEngine(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\EngineChemical4\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.EngineChemical4));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Engine, (int)MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.Chemical_5,\n                new MyGuiSmallShipHelperEngine(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\EngineChemical5\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.EngineChemical5));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Engine, (int)MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.Nuclear_1,\n                new MyGuiSmallShipHelperEngine(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\EngineNuclear1\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.EngineNuclear1));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Engine, (int)MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.Nuclear_2,\n                new MyGuiSmallShipHelperEngine(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\EngineNuclear2\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.EngineNuclear2));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Engine, (int)MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.Nuclear_3,\n                new MyGuiSmallShipHelperEngine(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\EngineNuclear3\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.EngineNuclear3));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Engine, (int)MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.Nuclear_4,\n                new MyGuiSmallShipHelperEngine(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\EngineNuclear4\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.EngineNuclear4));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Engine, (int)MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.Nuclear_5,\n                new MyGuiSmallShipHelperEngine(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\EngineNuclear5\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.EngineNuclear5));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Engine, (int)MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.PowerCells_1,\n                new MyGuiSmallShipHelperEngine(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\EnginePowerCells1\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.EnginePowerCells1));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Engine, (int)MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.PowerCells_2,\n                new MyGuiSmallShipHelperEngine(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\EnginePowerCells2\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.EnginePowerCells2));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Engine, (int)MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.PowerCells_3,\n                new MyGuiSmallShipHelperEngine(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\EnginePowerCells3\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.EnginePowerCells3));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Engine, (int)MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.PowerCells_4,\n                new MyGuiSmallShipHelperEngine(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\EnginePowerCells4\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.EnginePowerCells4));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Engine, (int)MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.PowerCells_5,\n                new MyGuiSmallShipHelperEngine(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\EnginePowerCells5\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.EnginePowerCells5));\n\n            #endregion\n\n            #region Create small ship armor helpers\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Armor, (int)MyMwcObjectBuilder_SmallShip_Armor_TypesEnum.Basic,\n                new MyGuiSmallShipHelperArmor(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\ArmorBasic\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.BasicArmor));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Armor, (int)MyMwcObjectBuilder_SmallShip_Armor_TypesEnum.Advanced,\n                new MyGuiSmallShipHelperArmor(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\ArmorAdvanced\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.AdvancedArmor));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Armor, (int)MyMwcObjectBuilder_SmallShip_Armor_TypesEnum.High_Endurance,\n                new MyGuiSmallShipHelperArmor(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\ArmorHighEndurance\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.HighEnduranceArmor));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Armor, (int)MyMwcObjectBuilder_SmallShip_Armor_TypesEnum.Solar_Wind,\n                new MyGuiSmallShipHelperArmor(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\ArmorSolarWind\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.SolarWindArmor));\n            #endregion\n\n            #region SmallShip_Player\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Player, (int)MyMwcObjectBuilder_SmallShip_TypesEnum.LIBERATOR,\n                new MyGuiSmallShipHelperSmallShip(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\SmallShip_MinerShip01\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Ships\\\\Liberator\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextsWrapperEnum.SmallShipMinerShip01, MyTextsWrapperEnum.SmallShipMinerShip01Name));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Player, (int)MyMwcObjectBuilder_SmallShip_TypesEnum.ENFORCER,\n                new MyGuiSmallShipHelperSmallShip(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\SmallShip_MinerShip02\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Ships\\\\Enforcer\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextsWrapperEnum.SmallShipMinerShip02, MyTextsWrapperEnum.SmallShipMinerShip02Name));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Player, (int)MyMwcObjectBuilder_SmallShip_TypesEnum.KAMMLER,\n                new MyGuiSmallShipHelperSmallShip(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\SmallShip_MinerShip03\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Ships\\\\Kammler\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextsWrapperEnum.SmallShipMinerShip03, MyTextsWrapperEnum.SmallShipMinerShip03Name));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Player, (int)MyMwcObjectBuilder_SmallShip_TypesEnum.GETTYSBURG,\n                new MyGuiSmallShipHelperSmallShip(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\SmallShip_MinerShip04\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Ships\\\\Gettysburg\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextsWrapperEnum.SmallShipMinerShip04, MyTextsWrapperEnum.SmallShipMinerShip04Name));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Player, (int)MyMwcObjectBuilder_SmallShip_TypesEnum.VIRGINIA,\n                new MyGuiSmallShipHelperSmallShip(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\SmallShip_MinerShip05\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Ships\\\\Virginia\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextsWrapperEnum.SmallShipMinerShip05, MyTextsWrapperEnum.SmallShipMinerShip05Name));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Player, (int)MyMwcObjectBuilder_SmallShip_TypesEnum.BAER,\n                new MyGuiSmallShipHelperSmallShip(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\SmallShip_MinerShip06\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Ships\\\\Baer\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextsWrapperEnum.SmallShipMinerShip06, MyTextsWrapperEnum.SmallShipMinerShip06Name));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Player, (int)MyMwcObjectBuilder_SmallShip_TypesEnum.HEWER,\n                new MyGuiSmallShipHelperSmallShip(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\SmallShip_MinerShip07\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Ships\\\\Hewer\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextsWrapperEnum.SmallShipMinerShip07, MyTextsWrapperEnum.SmallShipMinerShip07Name));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Player, (int)MyMwcObjectBuilder_SmallShip_TypesEnum.RAZORCLAW,\n                new MyGuiSmallShipHelperSmallShip(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\SmallShip_MinerShip08\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Ships\\\\Razorclaw\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextsWrapperEnum.SmallShipMinerShip08, MyTextsWrapperEnum.SmallShipMinerShip08Name));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Player, (int)MyMwcObjectBuilder_SmallShip_TypesEnum.GREISER,\n                new MyGuiSmallShipHelperSmallShip(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\SmallShip_MinerShip09\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Ships\\\\Greiser\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextsWrapperEnum.SmallShipMinerShip09, MyTextsWrapperEnum.SmallShipMinerShip09Name));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Player, (int)MyMwcObjectBuilder_SmallShip_TypesEnum.TRACER,\n                new MyGuiSmallShipHelperSmallShip(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\SmallShip_MinerShip10\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Ships\\\\Tracer\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextsWrapperEnum.SmallShipMinerShip10, MyTextsWrapperEnum.SmallShipMinerShip10Name));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Player, (int)MyMwcObjectBuilder_SmallShip_TypesEnum.JACKNIFE,\n                new MyGuiSmallShipHelperSmallShip(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\SmallShip_Jacknife\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Ships\\\\Jacknife\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                     MyTextsWrapperEnum.SmallShipJackKnife, MyTextsWrapperEnum.SmallShipJackKnifeName));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Player, (int)MyMwcObjectBuilder_SmallShip_TypesEnum.DOON,\n                new MyGuiSmallShipHelperSmallShip(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\SmallShip_Doon\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Ships\\\\Doon\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                     MyTextsWrapperEnum.SmallShipDoon, MyTextsWrapperEnum.SmallShipDoonName));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Player, (int)MyMwcObjectBuilder_SmallShip_TypesEnum.HAMMER,\n                new MyGuiSmallShipHelperSmallShip(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\SmallShip_Hammer\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Ships\\\\Hammer\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                     MyTextsWrapperEnum.SmallShipHammer, MyTextsWrapperEnum.SmallShipHammerName));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Player, (int)MyMwcObjectBuilder_SmallShip_TypesEnum.ORG,\n                new MyGuiSmallShipHelperSmallShip(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\SmallShip_ORG\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Ships\\\\ORG\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                     MyTextsWrapperEnum.SmallShipOrg, MyTextsWrapperEnum.SmallShipOrgName));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Player, (int)MyMwcObjectBuilder_SmallShip_TypesEnum.YG,\n                new MyGuiSmallShipHelperSmallShip(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\SmallShip_YG_Closed\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Ships\\\\YG_Closed\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                     MyTextsWrapperEnum.SmallShipYg, MyTextsWrapperEnum.SmallShipYgName));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Player, (int)MyMwcObjectBuilder_SmallShip_TypesEnum.HAWK,\n                new MyGuiSmallShipHelperSmallShip(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\SmallShip_Hawk\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Ships\\\\Hawk\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextsWrapperEnum.SmallShipHawk, MyTextsWrapperEnum.SmallShipHawkName));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Player, (int)MyMwcObjectBuilder_SmallShip_TypesEnum.PHOENIX,\n                new MyGuiSmallShipHelperSmallShip(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\SmallShip_Phoenix\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Ships\\\\Phoenix\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextsWrapperEnum.SmallShipPhoenix, MyTextsWrapperEnum.SmallShipPhoenixName));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Player, (int)MyMwcObjectBuilder_SmallShip_TypesEnum.LEVIATHAN,\n                new MyGuiSmallShipHelperSmallShip(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\SmallShip_Leviathan\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Ships\\\\Leviathan\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextsWrapperEnum.SmallShipLeviathan, MyTextsWrapperEnum.SmallShipLeviathanName));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Player, (int)MyMwcObjectBuilder_SmallShip_TypesEnum.ROCKHEATER,\n                new MyGuiSmallShipHelperSmallShip(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\SmallShip_Rockheater\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Ships\\\\Rockheater\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextsWrapperEnum.SmallShipRockheater, MyTextsWrapperEnum.SmallShipRockheaterName));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Player, (int)MyMwcObjectBuilder_SmallShip_TypesEnum.STEELHEAD,\n                new MyGuiSmallShipHelperSmallShip(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\SmallShip_SteelHead\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Ships\\\\SteelHead\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextsWrapperEnum.SmallShipSteelHead, MyTextsWrapperEnum.SmallShipSteelHeadName));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Player, (int)MyMwcObjectBuilder_SmallShip_TypesEnum.FEDER,\n                new MyGuiSmallShipHelperSmallShip(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\SmallShip_Talon\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Ships\\\\Talon\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextsWrapperEnum.SmallShipTalon, MyTextsWrapperEnum.SmallShipTalonName));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Player, (int)MyMwcObjectBuilder_SmallShip_TypesEnum.STANISLAV,\n                new MyGuiSmallShipHelperSmallShip(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\SmallShip_Stanislav\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Ships\\\\Stanislav\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextsWrapperEnum.SmallShipStanislav, MyTextsWrapperEnum.SmallShipStanislavName));\n            #endregion\n\n            #region SmallShip_Bot\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Bot, (int)MyMwcObjectBuilder_SmallShip_TypesEnum.LIBERATOR,\n                new MyGuiSmallShipHelperSmallShip(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\SmallShip_MinerShip01\", flags: TextureFlags.IgnoreQuality),\n                    MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Ships\\\\Liberator\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextsWrapperEnum.SmallShipMinerShip01, MyTextsWrapperEnum.SmallShipMinerShip01Name));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Bot, (int)MyMwcObjectBuilder_SmallShip_TypesEnum.ENFORCER,\n                new MyGuiSmallShipHelperSmallShip(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\SmallShip_MinerShip02\", flags: TextureFlags.IgnoreQuality),\n                    MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Ships\\\\Enforcer\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextsWrapperEnum.SmallShipMinerShip02, MyTextsWrapperEnum.SmallShipMinerShip02Name));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Bot, (int)MyMwcObjectBuilder_SmallShip_TypesEnum.KAMMLER,\n                new MyGuiSmallShipHelperSmallShip(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\SmallShip_MinerShip03\", flags: TextureFlags.IgnoreQuality),\n                    MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Ships\\\\Kammler\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextsWrapperEnum.SmallShipMinerShip03, MyTextsWrapperEnum.SmallShipMinerShip03Name));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Bot, (int)MyMwcObjectBuilder_SmallShip_TypesEnum.GETTYSBURG,\n                new MyGuiSmallShipHelperSmallShip(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\SmallShip_MinerShip04\", flags: TextureFlags.IgnoreQuality),\n                    MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Ships\\\\Gettysburg\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextsWrapperEnum.SmallShipMinerShip04, MyTextsWrapperEnum.SmallShipMinerShip04Name));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Bot, (int)MyMwcObjectBuilder_SmallShip_TypesEnum.VIRGINIA,\n                new MyGuiSmallShipHelperSmallShip(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\SmallShip_MinerShip05\", flags: TextureFlags.IgnoreQuality),\n                    MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Ships\\\\Virginia\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextsWrapperEnum.SmallShipMinerShip05, MyTextsWrapperEnum.SmallShipMinerShip05Name));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Bot, (int)MyMwcObjectBuilder_SmallShip_TypesEnum.BAER,\n                new MyGuiSmallShipHelperSmallShip(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\SmallShip_MinerShip06\", flags: TextureFlags.IgnoreQuality),\n                    MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Ships\\\\Baer\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextsWrapperEnum.SmallShipMinerShip06, MyTextsWrapperEnum.SmallShipMinerShip06Name));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Bot, (int)MyMwcObjectBuilder_SmallShip_TypesEnum.HEWER,\n                new MyGuiSmallShipHelperSmallShip(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\SmallShip_MinerShip07\", flags: TextureFlags.IgnoreQuality),\n                    MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Ships\\\\Hewer\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextsWrapperEnum.SmallShipMinerShip07, MyTextsWrapperEnum.SmallShipMinerShip07Name));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Bot, (int)MyMwcObjectBuilder_SmallShip_TypesEnum.RAZORCLAW,\n                new MyGuiSmallShipHelperSmallShip(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\SmallShip_MinerShip08\", flags: TextureFlags.IgnoreQuality),\n                    MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Ships\\\\Razorclaw\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextsWrapperEnum.SmallShipMinerShip08, MyTextsWrapperEnum.SmallShipMinerShip08Name));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Bot, (int)MyMwcObjectBuilder_SmallShip_TypesEnum.GREISER,\n                new MyGuiSmallShipHelperSmallShip(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\SmallShip_MinerShip09\", flags: TextureFlags.IgnoreQuality),\n                    MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Ships\\\\Greiser\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextsWrapperEnum.SmallShipMinerShip09, MyTextsWrapperEnum.SmallShipMinerShip09Name));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Bot, (int)MyMwcObjectBuilder_SmallShip_TypesEnum.TRACER,\n                new MyGuiSmallShipHelperSmallShip(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\SmallShip_MinerShip10\", flags: TextureFlags.IgnoreQuality),\n                    MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Ships\\\\Tracer\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextsWrapperEnum.SmallShipMinerShip10, MyTextsWrapperEnum.SmallShipMinerShip10Name));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Bot, (int)MyMwcObjectBuilder_SmallShip_TypesEnum.JACKNIFE,\n                new MyGuiSmallShipHelperSmallShip(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\SmallShip_Jacknife\", flags: TextureFlags.IgnoreQuality),\n                    MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Ships\\\\Jacknife\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                     MyTextsWrapperEnum.SmallShipJackKnife, MyTextsWrapperEnum.SmallShipJackKnifeName));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Bot, (int)MyMwcObjectBuilder_SmallShip_TypesEnum.DOON,\n                new MyGuiSmallShipHelperSmallShip(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\SmallShip_Doon\", flags: TextureFlags.IgnoreQuality),\n                    MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Ships\\\\Doon\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                     MyTextsWrapperEnum.SmallShipDoon, MyTextsWrapperEnum.SmallShipDoonName));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Bot, (int)MyMwcObjectBuilder_SmallShip_TypesEnum.HAMMER,\n                new MyGuiSmallShipHelperSmallShip(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\SmallShip_Hammer\", flags: TextureFlags.IgnoreQuality),\n                    MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Ships\\\\Hammer\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                     MyTextsWrapperEnum.SmallShipHammer, MyTextsWrapperEnum.SmallShipHammerName));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Bot, (int)MyMwcObjectBuilder_SmallShip_TypesEnum.ORG,\n                new MyGuiSmallShipHelperSmallShip(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\SmallShip_ORG\", flags: TextureFlags.IgnoreQuality),\n                    MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Ships\\\\ORG\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                     MyTextsWrapperEnum.SmallShipOrg, MyTextsWrapperEnum.SmallShipOrgName));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Bot, (int)MyMwcObjectBuilder_SmallShip_TypesEnum.YG,\n                new MyGuiSmallShipHelperSmallShip(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\SmallShip_YG_Closed\", flags: TextureFlags.IgnoreQuality),\n                    MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Ships\\\\YG_Closed\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                     MyTextsWrapperEnum.SmallShipYg, MyTextsWrapperEnum.SmallShipYgName));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Bot, (int)MyMwcObjectBuilder_SmallShip_TypesEnum.HAWK,\n                new MyGuiSmallShipHelperSmallShip(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\SmallShip_Hawk\", flags: TextureFlags.IgnoreQuality),\n                    MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Ships\\\\Hawk\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextsWrapperEnum.SmallShipHawk, MyTextsWrapperEnum.SmallShipHawkName));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Bot, (int)MyMwcObjectBuilder_SmallShip_TypesEnum.PHOENIX,\n                new MyGuiSmallShipHelperSmallShip(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\SmallShip_Phoenix\", flags: TextureFlags.IgnoreQuality),\n                    MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Ships\\\\Phoenix\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextsWrapperEnum.SmallShipPhoenix, MyTextsWrapperEnum.SmallShipPhoenixName));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Bot, (int)MyMwcObjectBuilder_SmallShip_TypesEnum.LEVIATHAN,\n                new MyGuiSmallShipHelperSmallShip(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\SmallShip_Leviathan\", flags: TextureFlags.IgnoreQuality),\n                    MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Ships\\\\Leviathan\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextsWrapperEnum.SmallShipLeviathan, MyTextsWrapperEnum.SmallShipLeviathanName));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Bot, (int)MyMwcObjectBuilder_SmallShip_TypesEnum.ROCKHEATER,\n                new MyGuiSmallShipHelperSmallShip(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\SmallShip_Rockheater\", flags: TextureFlags.IgnoreQuality),\n                    MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Ships\\\\Rockheater\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextsWrapperEnum.SmallShipRockheater, MyTextsWrapperEnum.SmallShipRockheaterName));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Bot, (int)MyMwcObjectBuilder_SmallShip_TypesEnum.STEELHEAD,\n                new MyGuiSmallShipHelperSmallShip(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\SmallShip_SteelHead\", flags: TextureFlags.IgnoreQuality),\n                    MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Ships\\\\SteelHead\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextsWrapperEnum.SmallShipSteelHead, MyTextsWrapperEnum.SmallShipSteelHeadName));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Bot, (int)MyMwcObjectBuilder_SmallShip_TypesEnum.FEDER,\n                new MyGuiSmallShipHelperSmallShip(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\SmallShip_Talon\", flags: TextureFlags.IgnoreQuality),\n                    MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Ships\\\\Talon\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextsWrapperEnum.SmallShipTalon, MyTextsWrapperEnum.SmallShipTalonName));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Bot, (int)MyMwcObjectBuilder_SmallShip_TypesEnum.STANISLAV,\n                new MyGuiSmallShipHelperSmallShip(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\SmallShip_Stanislav\", flags: TextureFlags.IgnoreQuality),\n                    MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Ships\\\\Stanislav\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextsWrapperEnum.SmallShipStanislav, MyTextsWrapperEnum.SmallShipStanislavName));\n            #endregion\n\n            #region Sector\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Sector, 0,\n                new MyGuiHelperBase(MyTextsWrapperEnum.EmptyDescription));\n            #endregion\n\n            #region VoxelMap\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.VoxelMap, 0,\n                new MyGuiHelperBase(MyTextsWrapperEnum.EmptyDescription));\n            #endregion\n\n            #region VoxelMap_MergeMaterial\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.VoxelMap_MergeMaterial, 0,\n                new MyGuiHelperBase(MyTextsWrapperEnum.EmptyDescription));\n            #endregion\n\n            #region VoxelMap_MergeContent\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.VoxelMap_MergeContent, 0,\n                new MyGuiHelperBase(MyTextsWrapperEnum.EmptyDescription));\n            #endregion\n\n            #region VoxelMap_Neighbour\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.VoxelMap_Neighbour, 0,\n                new MyGuiHelperBase(MyTextsWrapperEnum.EmptyDescription));\n            #endregion\n\n            #region VoxelHand_Sphere\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.VoxelHand_Sphere, 0,\n                new MyGuiHelperBase(MyTextsWrapperEnum.EmptyDescription));\n            #endregion\n\n            #region VoxelHand_Box\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.VoxelHand_Box, 0,\n                new MyGuiHelperBase(MyTextsWrapperEnum.EmptyDescription));\n            #endregion\n\n            #region VoxelHand_Cuboid\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.VoxelHand_Cuboid, 0,\n                new MyGuiHelperBase(MyTextsWrapperEnum.EmptyDescription));\n            #endregion\n\n            #region VoxelHand_Cylinder\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.VoxelHand_Cylinder, 0,\n                new MyGuiHelperBase(MyTextsWrapperEnum.EmptyDescription));\n            #endregion\n\n            #region Create Small Ship Ammo Helpers\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Ammo,(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Automatic_Rifle_With_Silencer_High_Speed,\n                new MyGuiSmallShipHelperAmmo(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\AmmoAutomaticRifleWithSilencerHighVelocity\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.AmmoAutomaticRifleWithSilencerHighVelocity));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Ammo,(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Automatic_Rifle_With_Silencer_SAPHEI,\n                new MyGuiSmallShipHelperAmmo(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\AmmoAutomaticRifleWithSilencerSAPHEI\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.AmmoAutomaticRifleWithSilencerSAPHEI));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Ammo,(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Automatic_Rifle_With_Silencer_BioChem,\n                new MyGuiSmallShipHelperAmmo(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\AmmoAutomaticRifleWithSilencerBioChem\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.AmmoAutomaticRifleWithSilencerBioChem));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Ammo,(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Sniper_High_Speed,\n                new MyGuiSmallShipHelperAmmo(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\AmmoSniperHighVelocity\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.AmmoSniperHighVelocity));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Ammo,(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Sniper_SAPHEI,\n                new MyGuiSmallShipHelperAmmo(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\AmmoSniperSAPHEI\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.AmmoSniperSAPHEI));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Ammo,(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Sniper_BioChem,\n                new MyGuiSmallShipHelperAmmo(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\AmmoSniperBioChem\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.AmmoSniperBioChem));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Ammo,(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_Basic,\n                new MyGuiSmallShipHelperAmmo(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\AmmoAutocannonBasic\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.AmmoAutocannonBasic));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Ammo,(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_High_Speed,\n                new MyGuiSmallShipHelperAmmo(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\AmmoAutocannonHighVelocity\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.AmmoAutocannonHighVelocity));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Ammo,(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_Armor_Piercing_Incendiary,\n                new MyGuiSmallShipHelperAmmo(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\AmmoAutocannonArmorPiercingIncendiary\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.AmmoAutocannonArmorPiercingIncendiary));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Ammo,(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_SAPHEI,\n                new MyGuiSmallShipHelperAmmo(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\AmmoAutocannonSAPHEI\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.AmmoAutocannonSAPHEI));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Ammo,(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_BioChem,\n                new MyGuiSmallShipHelperAmmo(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\AmmoAutocannonBioChem\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.AmmoAutocannonBioChem));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Ammo,(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Machine_Gun_Basic,\n                new MyGuiSmallShipHelperAmmo(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\AmmoMachineGunBasic\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.AmmoMachineGunBasic));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Ammo,(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Machine_Gun_High_Speed,\n                new MyGuiSmallShipHelperAmmo(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\AmmoMachineGunHighVelocity\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.AmmoMachineGunHighVelocity));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Ammo,(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Machine_Gun_Armor_Piercing_Incendiary,\n                new MyGuiSmallShipHelperAmmo(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\AmmoMachineGunArmorPiercingIncendiary\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.AmmoMachineGunArmorPiercingIncendiary));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Ammo,(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Machine_Gun_SAPHEI,\n                new MyGuiSmallShipHelperAmmo(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\AmmoMachineGunSAPHEI\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.AmmoMachineGunSAPHEI));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Ammo,(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Machine_Gun_BioChem,\n                new MyGuiSmallShipHelperAmmo(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\AmmoMachineGunBioChem\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.AmmoMachineGunBioChem));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Ammo,(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Shotgun_Basic,\n                new MyGuiSmallShipHelperAmmo(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\AmmoShotgunBasic\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.AmmoShotgunBasic));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Ammo,(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Shotgun_High_Speed,\n                new MyGuiSmallShipHelperAmmo(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\AmmoShotgunHighVelocity\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.AmmoShotgunHighVelocity));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Ammo,(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Shotgun_Explosive,\n                new MyGuiSmallShipHelperAmmo(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\AmmoShotgunExplosive\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.AmmoShotgunExplosive));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Ammo,(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Shotgun_Armor_Piercing,\n                new MyGuiSmallShipHelperAmmo(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\AmmoShotgunArmorPiercing\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.AmmoShotgunArmorPiercing));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Ammo,(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_Basic,\n                new MyGuiSmallShipHelperAmmo(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\AmmoCannonBasic\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.AmmoCannonBasic));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Ammo,(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_High_Speed,\n                new MyGuiSmallShipHelperAmmo(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\AmmoCannonHighVelocity\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.AmmoCannonHighVelocity));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Ammo,(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_Armor_Piercing_Incendiary,\n                new MyGuiSmallShipHelperAmmo(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\AmmoCannonArmorPiercingIncendiary\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.AmmoCannonArmorPiercingIncendiary));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Ammo,(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_SAPHEI,\n                new MyGuiSmallShipHelperAmmo(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\AmmoCannonSAPHEI\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.AmmoCannonSAPHEI));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Ammo,(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_Proximity_Explosive,\n                new MyGuiSmallShipHelperAmmo(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\AmmoCannonProximityExplosive\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.AmmoCannonProximityExplosive));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Ammo,(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_Tunnel_Buster,\n                new MyGuiSmallShipHelperAmmo(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\AmmoCannonTunnelBuster\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.AmmoCannonTunnelBuster));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Ammo,(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Asteroid_Killer,\n                new MyGuiSmallShipHelperAmmo(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\AmmoUniversalLauncherAsteroidKiller\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.AmmoUniversalLauncherAsteroidKiller));\n\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Ammo,(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Decoy_Flare,\n                new MyGuiSmallShipHelperAmmo(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\AmmoUniversalLauncherDecoyFlare\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.AmmoUniversalLauncherDecoyFlare));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Ammo,(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Directional_Explosive,\n                new MyGuiSmallShipHelperAmmo(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\AmmoUniversalLauncherDirectionalExplosive\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.AmmoUniversalLauncherDirectionalExplosive));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Ammo,(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Flash_Bomb,\n                new MyGuiSmallShipHelperAmmo(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\AmmoUniversalLauncherFlashBomb\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.AmmoUniversalLauncherFlashBomb));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Ammo,(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Gravity_Bomb,\n                new MyGuiSmallShipHelperAmmo(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\AmmoUniversalLauncherGravityBomb\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.AmmoUniversalLauncherGravitationBomb));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Ammo,(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Hologram,\n                new MyGuiSmallShipHelperAmmo(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\AmmoUniversalLauncherHologram\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.AmmoUniversalLauncherHologram));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Ammo,(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Illuminating_Shell,\n                new MyGuiSmallShipHelperAmmo(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\AmmoUniversalLauncherIlluminatingShell\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.AmmoUniversalLauncherIlluminatingShell));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Ammo,(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Mine_Basic,\n                new MyGuiSmallShipHelperAmmo(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\AmmoUniversalLauncherMineBasic\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.AmmoUniversalLauncherMineBasic, MyInventoryAmountTextAlign.BottomRight));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Ammo,(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Mine_Smart,\n                new MyGuiSmallShipHelperAmmo(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\AmmoUniversalLauncherMineSmart\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.AmmoUniversalLauncherMineSmart, MyInventoryAmountTextAlign.BottomRight));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Ammo,(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Remote_Bomb,\n                new MyGuiSmallShipHelperAmmo(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\AmmoUniversalLauncherRemoteBomb\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.AmmoUniversalLauncherRemoteBomb));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Ammo,(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Remote_Camera,\n                new MyGuiSmallShipHelperAmmo(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\AmmoUniversalLauncherRemoteCamera\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.AmmoUniversalLauncherRemoteCamera));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Ammo,(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Smoke_Bomb,\n                new MyGuiSmallShipHelperAmmo(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\AmmoUniversalLauncherSmokeBomb\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.AmmoUniversalLauncherSmokeBomb));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Ammo,(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Sphere_Explosive,\n                new MyGuiSmallShipHelperAmmo(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\AmmoUniversalLauncherSphereExplosive\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.AmmoUniversalLauncherSphereExplosive));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Ammo,(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Time_Bomb,\n                new MyGuiSmallShipHelperAmmo(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\AmmoUniversalLauncherTimeBomb\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.AmmoUniversalLauncherTimeBomb));\n\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Ammo,(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Guided_Missile_Visual_Detection,\n                new MyGuiSmallShipHelperAmmo(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\AmmoGuidedMissileVisualDetection\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.AmmoGuidedVisualDetection));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Ammo,(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Guided_Missile_Engine_Detection,\n                new MyGuiSmallShipHelperAmmo(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\AmmoGuidedMissileEngineDetection\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.AmmoGuidedEngineDetection));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Ammo,(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Guided_Missile_Radar_Detection,\n                new MyGuiSmallShipHelperAmmo(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\AmmoGuidedMissileRadarDetection\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.AmmoGuidedRadarDetection));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Ammo,(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Missile_Basic,\n               new MyGuiSmallShipHelperAmmo(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\AmmoGuidedMissileBasic\", flags: TextureFlags.IgnoreQuality),\n                   MyTextsWrapperEnum.AmmoMissileBasic));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Mine_BioChem,\n                   new MyGuiSmallShipHelperAmmo(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\AmmoUniversalLauncherMineBioChem\", flags: TextureFlags.IgnoreQuality),\n                       MyTextsWrapperEnum.AmmoUniversalLauncherMineBioChem));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Missile_BioChem,\n                   new MyGuiSmallShipHelperAmmo(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\AmmoGuidedMissileBioChem\", flags: TextureFlags.IgnoreQuality),\n                       MyTextsWrapperEnum.AmmoMissileBioChem));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_BioChem,\n                   new MyGuiSmallShipHelperAmmo(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\AmmoCannonBioChem\", flags: TextureFlags.IgnoreQuality),\n                       MyTextsWrapperEnum.AmmoCannonBiochem));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_EMP,\n               new MyGuiSmallShipHelperAmmo(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\AmmoAutocannonEMP\", flags: TextureFlags.IgnoreQuality),\n                   MyTextsWrapperEnum.AmmoAutocannonEMP));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Sniper_EMP,\n               new MyGuiSmallShipHelperAmmo(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\AmmoSniperEMP\", flags: TextureFlags.IgnoreQuality),\n                   MyTextsWrapperEnum.AmmoSniperEMP));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Machine_Gun_EMP,\n               new MyGuiSmallShipHelperAmmo(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\AmmoMachineGunEMP\", flags: TextureFlags.IgnoreQuality),\n                   MyTextsWrapperEnum.AmmoMachineGunEMP));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Missile_EMP,\n               new MyGuiSmallShipHelperAmmo(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\AmmoGuidedMissileEMP\", flags: TextureFlags.IgnoreQuality),\n                   MyTextsWrapperEnum.AmmoMissileEMP));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_EMP,\n               new MyGuiSmallShipHelperAmmo(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\AmmoCannonEMP\", flags: TextureFlags.IgnoreQuality),\n                   MyTextsWrapperEnum.AmmoCannonEMP));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_EMP_Bomb,\n               new MyGuiSmallShipHelperAmmo(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\AmmoUniversalLauncherEMPBomb\", flags: TextureFlags.IgnoreQuality),\n                   MyTextsWrapperEnum.AmmoUniversalLauncherEMPBomb));\n            #endregion\n\n            #region LargeShip_Weapon\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.LargeShip_Weapon, (int)MyMwcObjectBuilder_LargeShip_Weapon_TypesEnum.CIWS,\n            //    new MyGuiHelperBase(MyTextsWrapperEnum.EmptyDescription));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.LargeShip_Weapon, (int)MyMwcObjectBuilder_LargeShip_Weapon_TypesEnum.MachineGun,\n            //    new MyGuiHelperBase(MyTextsWrapperEnum.EmptyDescription));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.LargeShip_Weapon, (int)MyMwcObjectBuilder_LargeShip_Weapon_TypesEnum.Autocannon,\n            //    new MyGuiHelperBase(MyTextsWrapperEnum.EmptyDescription));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.LargeShip_Weapon, (int)MyMwcObjectBuilder_LargeShip_Weapon_TypesEnum.MissileLauncherType4Basic,\n            //    new MyGuiHelperBase(MyTextsWrapperEnum.EmptyDescription));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.LargeShip_Weapon, (int)MyMwcObjectBuilder_LargeShip_Weapon_TypesEnum.MissileLauncherType6Basic,\n            //    new MyGuiHelperBase(MyTextsWrapperEnum.EmptyDescription));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.LargeShip_Weapon, (int)MyMwcObjectBuilder_LargeShip_Weapon_TypesEnum.MissileLauncherType9Basic,\n            //    new MyGuiHelperBase(MyTextsWrapperEnum.EmptyDescription));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.LargeShip_Weapon, (int)MyMwcObjectBuilder_LargeShip_Weapon_TypesEnum.MissileLauncherType4Guided,\n            //    new MyGuiHelperBase(MyTextsWrapperEnum.EmptyDescription));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.LargeShip_Weapon, (int)MyMwcObjectBuilder_LargeShip_Weapon_TypesEnum.MissileLauncherType6Guided,\n            //    new MyGuiHelperBase(MyTextsWrapperEnum.EmptyDescription));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.LargeShip_Weapon, (int)MyMwcObjectBuilder_LargeShip_Weapon_TypesEnum.MissileLauncherType9Guided,\n            //    new MyGuiHelperBase(MyTextsWrapperEnum.EmptyDescription));\n            #endregion\n\n            #region Create Small Ship Weapon Helpers\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Weapon, (int)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Autocanon,\n                new MyGuiSmallShipHelperWeapon(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\WeaponAutocannon\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.WeaponAutocannon));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Weapon, (int)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Automatic_Rifle_With_Silencer,\n                new MyGuiSmallShipHelperWeapon(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\WeaponAutomaticRifleWithSilencer\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.WeaponAutomaticRifleWithSilencer));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Weapon, (int)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Crusher,\n                new MyGuiSmallShipHelperWeapon(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\WeaponDrillingDeviceCrusher\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.WeaponDrillingDeviceCrusher));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Weapon, (int)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Laser,\n                new MyGuiSmallShipHelperWeapon(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\WeaponDrillingDeviceLaser\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.WeaponDrillingDeviceLaser));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Weapon, (int)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Nuclear,\n                new MyGuiSmallShipHelperWeapon(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\WeaponDrillingDeviceNuclear\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.WeaponDrillingDeviceNuclear));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Weapon, (int)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Saw,\n                new MyGuiSmallShipHelperWeapon(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\WeaponDrillingDeviceSaw\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.WeaponDrillingDeviceSaw));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Weapon, (int)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Thermal,\n                new MyGuiSmallShipHelperWeapon(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\WeaponDrillingDeviceThermal\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.WeaponDrillingDeviceThermal));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Weapon, (int)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Pressure,\n                new MyGuiSmallShipHelperWeapon(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\WeaponDrillingDevicePressure\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.WeaponDrillingDevicePressure));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Weapon, (int)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Missile_Launcher,\n                new MyGuiSmallShipHelperWeapon(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\WeaponGuidedMissileLauncher\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.WeaponGuidedMissileLauncher));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Weapon, (int)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Harvesting_Device,\n                new MyGuiSmallShipHelperWeapon(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\WeaponHarvestingDevice\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.WeaponHarvestingDevice));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Weapon, (int)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Machine_Gun,\n                new MyGuiSmallShipHelperWeapon(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\WeaponMachineGun\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.WeaponMachineGun));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Weapon, (int)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Cannon,\n                new MyGuiSmallShipHelperWeapon(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\WeaponCannon\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.WeaponCannon));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Weapon, (int)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Shotgun,\n                new MyGuiSmallShipHelperWeapon(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\WeaponShotgun\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.WeaponShotgun));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Weapon, (int)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Sniper,\n                new MyGuiSmallShipHelperWeapon(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\WeaponSniper\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.WeaponSniper));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Weapon, (int)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Universal_Launcher_Back,\n                new MyGuiSmallShipHelperWeapon(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\WeaponUniversalLauncherBack\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.WeaponUniversalLauncherBack));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Weapon, (int)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Universal_Launcher_Front,\n                new MyGuiSmallShipHelperWeapon(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\WeaponUniversalLauncherFront\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.WeaponUniversalLauncherFront));\n            #endregion\n\n            #region Create Static Asteroid Helpers\n\n            \n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.StaticAsteroid,(int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid10000m_A, new MyGuiAsteroidHelper(\n                MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Jeromie\", flags: TextureFlags.IgnoreQuality), MyTextsWrapperEnum.StaticAsteroidContextMenuCaption));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.StaticAsteroid, (int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid40000m_A,\n                new MyGuiAsteroidHelper(null, MyTextsWrapperEnum.EmptyDescription));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.StaticAsteroid, (int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid10000m_B, \n                new MyGuiAsteroidHelper(null, MyTextsWrapperEnum.EmptyDescription));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.StaticAsteroid, (int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid10000m_C,\n                new MyGuiAsteroidHelper(null, MyTextsWrapperEnum.EmptyDescription));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.StaticAsteroid, (int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid10000m_D,\n                new MyGuiAsteroidHelper(null, MyTextsWrapperEnum.EmptyDescription));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.StaticAsteroid, (int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid10000m_E,\n                new MyGuiAsteroidHelper(null, MyTextsWrapperEnum.EmptyDescription));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.StaticAsteroid, (int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid1000m_A,\n                new MyGuiAsteroidHelper(null, MyTextsWrapperEnum.EmptyDescription));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.StaticAsteroid, (int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid1000m_B,\n                new MyGuiAsteroidHelper(null, MyTextsWrapperEnum.EmptyDescription));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.StaticAsteroid, (int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid1000m_C,\n                new MyGuiAsteroidHelper(null, MyTextsWrapperEnum.EmptyDescription));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.StaticAsteroid, (int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid1000m_D,\n                new MyGuiAsteroidHelper(null, MyTextsWrapperEnum.EmptyDescription));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.StaticAsteroid, (int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid1000m_E,\n                new MyGuiAsteroidHelper(null, MyTextsWrapperEnum.EmptyDescription));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.StaticAsteroid, (int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid100m_A,\n                new MyGuiAsteroidHelper(null, MyTextsWrapperEnum.EmptyDescription));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.StaticAsteroid, (int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid100m_B,\n                new MyGuiAsteroidHelper(null, MyTextsWrapperEnum.EmptyDescription));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.StaticAsteroid, (int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid100m_C,\n                new MyGuiAsteroidHelper(null, MyTextsWrapperEnum.EmptyDescription));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.StaticAsteroid, (int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid100m_D,\n                new MyGuiAsteroidHelper(null, MyTextsWrapperEnum.EmptyDescription));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.StaticAsteroid, (int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid100m_E,\n                new MyGuiAsteroidHelper(null, MyTextsWrapperEnum.EmptyDescription));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.StaticAsteroid, (int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid10m_A,\n                new MyGuiAsteroidHelper(null, MyTextsWrapperEnum.EmptyDescription));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.StaticAsteroid, (int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid10m_B,\n                new MyGuiAsteroidHelper(null, MyTextsWrapperEnum.EmptyDescription));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.StaticAsteroid, (int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid10m_C,\n                new MyGuiAsteroidHelper(null, MyTextsWrapperEnum.EmptyDescription));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.StaticAsteroid, (int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid10m_D,\n                new MyGuiAsteroidHelper(null, MyTextsWrapperEnum.EmptyDescription));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.StaticAsteroid, (int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid10m_E,\n                new MyGuiAsteroidHelper(null, MyTextsWrapperEnum.EmptyDescription));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.StaticAsteroid, (int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid2000m_A,\n                new MyGuiAsteroidHelper(null, MyTextsWrapperEnum.EmptyDescription));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.StaticAsteroid, (int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid2000m_B,\n                new MyGuiAsteroidHelper(null, MyTextsWrapperEnum.EmptyDescription));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.StaticAsteroid, (int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid2000m_C,\n                new MyGuiAsteroidHelper(null, MyTextsWrapperEnum.EmptyDescription));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.StaticAsteroid, (int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid2000m_D,\n                new MyGuiAsteroidHelper(null, MyTextsWrapperEnum.EmptyDescription));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.StaticAsteroid, (int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid2000m_E,\n                new MyGuiAsteroidHelper(null, MyTextsWrapperEnum.EmptyDescription));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.StaticAsteroid, (int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid20m_A,\n                new MyGuiAsteroidHelper(null, MyTextsWrapperEnum.EmptyDescription));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.StaticAsteroid, (int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid20m_B,\n                new MyGuiAsteroidHelper(null, MyTextsWrapperEnum.EmptyDescription));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.StaticAsteroid, (int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid20m_C,\n                new MyGuiAsteroidHelper(null, MyTextsWrapperEnum.EmptyDescription));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.StaticAsteroid, (int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid20m_D,\n                new MyGuiAsteroidHelper(null, MyTextsWrapperEnum.EmptyDescription));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.StaticAsteroid, (int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid20m_E,\n                new MyGuiAsteroidHelper(null, MyTextsWrapperEnum.EmptyDescription));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.StaticAsteroid, (int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid300m_A,\n                new MyGuiAsteroidHelper(null, MyTextsWrapperEnum.EmptyDescription));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.StaticAsteroid, (int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid300m_B,\n                new MyGuiAsteroidHelper(null, MyTextsWrapperEnum.EmptyDescription));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.StaticAsteroid, (int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid300m_C,\n                new MyGuiAsteroidHelper(null, MyTextsWrapperEnum.EmptyDescription));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.StaticAsteroid, (int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid300m_D,\n                new MyGuiAsteroidHelper(null, MyTextsWrapperEnum.EmptyDescription));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.StaticAsteroid, (int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid300m_E,\n                new MyGuiAsteroidHelper(null, MyTextsWrapperEnum.EmptyDescription));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.StaticAsteroid, (int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid30m_A,\n                new MyGuiAsteroidHelper(null, MyTextsWrapperEnum.EmptyDescription));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.StaticAsteroid, (int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid30m_B,\n                new MyGuiAsteroidHelper(null, MyTextsWrapperEnum.EmptyDescription));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.StaticAsteroid, (int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid30m_C,\n                new MyGuiAsteroidHelper(null, MyTextsWrapperEnum.EmptyDescription));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.StaticAsteroid, (int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid30m_D,\n                new MyGuiAsteroidHelper(null, MyTextsWrapperEnum.EmptyDescription));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.StaticAsteroid, (int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid30m_E,\n                new MyGuiAsteroidHelper(null, MyTextsWrapperEnum.EmptyDescription));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.StaticAsteroid, (int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid5000m_A,\n                new MyGuiAsteroidHelper(null, MyTextsWrapperEnum.EmptyDescription));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.StaticAsteroid, (int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid5000m_B,\n                new MyGuiAsteroidHelper(null, MyTextsWrapperEnum.EmptyDescription));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.StaticAsteroid, (int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid5000m_C,\n                new MyGuiAsteroidHelper(null, MyTextsWrapperEnum.EmptyDescription));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.StaticAsteroid, (int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid5000m_D,\n                new MyGuiAsteroidHelper(null, MyTextsWrapperEnum.EmptyDescription));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.StaticAsteroid, (int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid5000m_E,\n                new MyGuiAsteroidHelper(null, MyTextsWrapperEnum.EmptyDescription));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.StaticAsteroid, (int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid500m_A,\n                new MyGuiAsteroidHelper(null, MyTextsWrapperEnum.EmptyDescription));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.StaticAsteroid, (int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid500m_B,\n                new MyGuiAsteroidHelper(null, MyTextsWrapperEnum.EmptyDescription));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.StaticAsteroid, (int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid500m_C,\n                new MyGuiAsteroidHelper(null, MyTextsWrapperEnum.EmptyDescription));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.StaticAsteroid, (int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid500m_D,\n                new MyGuiAsteroidHelper(null, MyTextsWrapperEnum.EmptyDescription));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.StaticAsteroid, (int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid500m_E,\n                new MyGuiAsteroidHelper(null, MyTextsWrapperEnum.EmptyDescription));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.StaticAsteroid, (int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid50m_A,\n                new MyGuiAsteroidHelper(null, MyTextsWrapperEnum.EmptyDescription));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.StaticAsteroid, (int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid50m_B,\n                new MyGuiAsteroidHelper(null, MyTextsWrapperEnum.EmptyDescription));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.StaticAsteroid, (int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid50m_C,\n                new MyGuiAsteroidHelper(null, MyTextsWrapperEnum.EmptyDescription));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.StaticAsteroid, (int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid50m_D,\n                new MyGuiAsteroidHelper(null, MyTextsWrapperEnum.EmptyDescription));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.StaticAsteroid, (int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid50m_E,\n                new MyGuiAsteroidHelper(null, MyTextsWrapperEnum.EmptyDescription));\n\n            /*\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.StaticAsteroid,(int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.STATIC_ASTEROID_02, new MyGuiAsteroidHelper(\n                MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\DeformedSphereSmall\", flags: TextureFlags.IgnoreQuality), MyTextsWrapperEnum.StaticAsteroid02));\n            \n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.StaticAsteroid,(int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.STATIC_ASTEROID_03, new MyGuiAsteroidHelper(\n                MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\DeformedSphereSmallest\", flags: TextureFlags.IgnoreQuality), MyTextsWrapperEnum.StaticAsteroid03));\n             */\n\n            #endregion\n\n            #region Meteor\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Meteor, (int)MyMwcObjectBuilder_Meteor_TypesEnum.DEFAULT, new MyGuiAsteroidHelper(null, MyTextsWrapperEnum.EmptyDescription));\n            #endregion\n\n            #region Create Small Ship Tool helpers\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Tool, (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.REAR_CAMERA,\n                new MyGuiSmallShipHelperTool(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\ToolRearCamera\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.ToolRearCamera));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Tool, (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.LASER_POINTER,\n                new MyGuiSmallShipHelperTool(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\ToolLaserPointer\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.ToolLaserPointer));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Tool, (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.AUTO_TARGETING,\n                new MyGuiSmallShipHelperTool(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\ToolAutoTargeting\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.ToolAutoTargeting));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Tool, (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.NIGHT_VISION,\n                new MyGuiSmallShipHelperTool(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\ToolNightVision\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.ToolNightVision));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Tool, (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.NANO_REPAIR_TOOL,\n                new MyGuiSmallShipHelperTool(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\ToolNanoRepairTool\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.ToolNanoRepairTool));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Tool, (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.MEDIKIT,\n                new MyGuiSmallShipHelperTool(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\ToolMedikit\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.ToolMedikit));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Tool, (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.XRAY,\n                new MyGuiSmallShipHelperTool(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\ToolXRay\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.ToolXRay));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Tool, (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.ANTIRADIATION_MEDICINE,\n                new MyGuiSmallShipHelperTool(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\ToolAntiradiationMedicine\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.ToolAntiradiationMedicine));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Tool, (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.RADAR_JAMMER,\n                new MyGuiSmallShipHelperTool(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\ToolRadarJammer\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.ToolRadarJammer));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Tool, (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.PERFORMANCE_ENHANCING_MEDICINE,\n                new MyGuiSmallShipHelperTool(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\ToolPerformanceEnhancingMedicine\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.ToolPerformanceEnhancingMedicine));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Tool, (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.HEALTH_ENHANCING_MEDICINE,\n                new MyGuiSmallShipHelperTool(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\ToolHealthEnhancingMedicine\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.ToolHealthEnhancingMedicine));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Tool, (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.EXTRA_FUEL_CONTAINER_DISABLED,\n                new MyGuiSmallShipHelperTool(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\ToolExtraFuelContainer\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.ToolExtraFuelContainer));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Tool, (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.EXTRA_ELECTRICITY_CONTAINER,\n                new MyGuiSmallShipHelperTool(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\ToolExtraFuelContainer\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.ToolExtraElectricityContainer));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Tool, (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.EXTRA_OXYGEN_CONTAINER_DISABLED,\n                new MyGuiSmallShipHelperTool(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\ToolExtraOxygenContainer\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.ToolExtraOxygenContainer));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Tool, (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.OXYGEN_CONVERTER,\n                new MyGuiSmallShipHelperTool(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\ToolOxygenConverter\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.ToolOxygenConverter));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Tool, (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.FUEL_CONVERTER,\n                new MyGuiSmallShipHelperTool(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\ToolFuelConverter\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.ToolFuelConverter));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Tool, (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.SOLAR_PANEL,\n                new MyGuiSmallShipHelperTool(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\ToolSolarPanel\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.ToolSolarPanel));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Tool, (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.BOOBY_TRAP,\n                new MyGuiSmallShipHelperTool(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\ToolBoobyTrap\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.ToolBoobyTrap));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Tool, (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.SENSOR,\n                new MyGuiSmallShipHelperTool(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\ToolSensor\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.ToolSensor));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Tool, (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.REMOTE_CAMERA,\n                new MyGuiSmallShipHelperTool(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\ToolRemoteCamera\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.ToolRemoteCamera));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Tool, (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.REMOTE_CAMERA_ON_DRONE,\n                new MyGuiSmallShipHelperTool(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\ToolRemoteCameraOnDrone\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.ToolRemoteCameraOnDrone));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Tool, (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.ALIEN_OBJECT_DETECTOR,\n                new MyGuiSmallShipHelperTool(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\ToolAlienObjectDetector\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.ToolAlienObjectDetector));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Tool, (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.RADAR_UNUSED, new MyGuiSmallShipHelperTool(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\ToolRadar\", flags: TextureFlags.IgnoreQuality),\n                     MyTextsWrapperEnum.Radar1));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Radar, (int)MyMwcObjectBuilder_SmallShip_Radar_TypesEnum.Radar_1,\n                new MyGuiSmallShipHelperTool(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\ToolRadar\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.Radar1));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Radar, (int)MyMwcObjectBuilder_SmallShip_Radar_TypesEnum.Radar_2,\n                new MyGuiSmallShipHelperTool(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\ToolRadar\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.Radar2));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Radar, (int)MyMwcObjectBuilder_SmallShip_Radar_TypesEnum.Radar_3,\n                new MyGuiSmallShipHelperTool(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\ToolRadar\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.Radar3));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Tool, (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.HEALTH_KIT,\n                new MyGuiSmallShipHelperTool(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\ToolHealthKit\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.HealthKit));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Tool, (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.REPAIR_KIT,\n                new MyGuiSmallShipHelperTool(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\ToolRepairKit\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.RepairKit));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Tool, (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.OXYGEN_KIT,\n                new MyGuiSmallShipHelperTool(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\ToolOxygenKit\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.OxygenKit));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Tool, (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.FUEL_KIT,\n                new MyGuiSmallShipHelperTool(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\ToolFuelKit\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.FuelKit));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Tool, (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.ELECTRICITY_KIT,\n                new MyGuiSmallShipHelperTool(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\ToolFuelKit\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.ElectricityKit));\n\n            #endregion\n\n            #region Create Small Ship Helpers\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip, (int)MyMwcObjectBuilder_SmallShip_TypesEnum.LIBERATOR,\n                new MyGuiSmallShipHelperSmallShip(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\SmallShip_MinerShip01\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Ships\\\\Liberator\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextsWrapperEnum.SmallShipMinerShip01, MyTextsWrapperEnum.SmallShipMinerShip01Name));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip, (int)MyMwcObjectBuilder_SmallShip_TypesEnum.ENFORCER,\n                new MyGuiSmallShipHelperSmallShip(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\SmallShip_MinerShip02\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Ships\\\\Enforcer\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextsWrapperEnum.SmallShipMinerShip02, MyTextsWrapperEnum.SmallShipMinerShip02Name));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip, (int)MyMwcObjectBuilder_SmallShip_TypesEnum.KAMMLER,\n                new MyGuiSmallShipHelperSmallShip(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\SmallShip_MinerShip03\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Ships\\\\Kammler\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextsWrapperEnum.SmallShipMinerShip03, MyTextsWrapperEnum.SmallShipMinerShip03Name));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip, (int)MyMwcObjectBuilder_SmallShip_TypesEnum.GETTYSBURG,\n                new MyGuiSmallShipHelperSmallShip(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\SmallShip_MinerShip04\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Ships\\\\Gettysburg\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextsWrapperEnum.SmallShipMinerShip04, MyTextsWrapperEnum.SmallShipMinerShip04Name));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip, (int)MyMwcObjectBuilder_SmallShip_TypesEnum.VIRGINIA,\n                new MyGuiSmallShipHelperSmallShip(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\SmallShip_MinerShip05\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Ships\\\\Virginia\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextsWrapperEnum.SmallShipMinerShip05, MyTextsWrapperEnum.SmallShipMinerShip05Name));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip, (int)MyMwcObjectBuilder_SmallShip_TypesEnum.BAER,\n                new MyGuiSmallShipHelperSmallShip(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\SmallShip_MinerShip06\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Ships\\\\Baer\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextsWrapperEnum.SmallShipMinerShip06, MyTextsWrapperEnum.SmallShipMinerShip06Name));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip, (int)MyMwcObjectBuilder_SmallShip_TypesEnum.HEWER,\n                new MyGuiSmallShipHelperSmallShip(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\SmallShip_MinerShip07\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Ships\\\\Hewer\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextsWrapperEnum.SmallShipMinerShip07, MyTextsWrapperEnum.SmallShipMinerShip07Name));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip, (int)MyMwcObjectBuilder_SmallShip_TypesEnum.RAZORCLAW,\n                new MyGuiSmallShipHelperSmallShip(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\SmallShip_MinerShip08\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Ships\\\\Razorclaw\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextsWrapperEnum.SmallShipMinerShip08, MyTextsWrapperEnum.SmallShipMinerShip08Name));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip, (int)MyMwcObjectBuilder_SmallShip_TypesEnum.GREISER,\n                new MyGuiSmallShipHelperSmallShip(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\SmallShip_MinerShip09\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Ships\\\\Greiser\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextsWrapperEnum.SmallShipMinerShip09, MyTextsWrapperEnum.SmallShipMinerShip09Name));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip, (int)MyMwcObjectBuilder_SmallShip_TypesEnum.TRACER,\n                new MyGuiSmallShipHelperSmallShip(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\SmallShip_MinerShip10\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Ships\\\\Tracer\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextsWrapperEnum.SmallShipMinerShip10, MyTextsWrapperEnum.SmallShipMinerShip10Name));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip, (int)MyMwcObjectBuilder_SmallShip_TypesEnum.JACKNIFE,\n                new MyGuiSmallShipHelperSmallShip(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\SmallShip_Jacknife\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Ships\\\\Jacknife\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                     MyTextsWrapperEnum.SmallShipJackKnife, MyTextsWrapperEnum.SmallShipJackKnifeName));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip, (int)MyMwcObjectBuilder_SmallShip_TypesEnum.DOON,\n                new MyGuiSmallShipHelperSmallShip(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\SmallShip_Doon\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Ships\\\\Doon\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                     MyTextsWrapperEnum.SmallShipDoon, MyTextsWrapperEnum.SmallShipDoonName));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip, (int)MyMwcObjectBuilder_SmallShip_TypesEnum.HAMMER,\n                new MyGuiSmallShipHelperSmallShip(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\SmallShip_Hammer\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Ships\\\\Hammer\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                     MyTextsWrapperEnum.SmallShipHammer, MyTextsWrapperEnum.SmallShipHammerName));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip, (int)MyMwcObjectBuilder_SmallShip_TypesEnum.ORG,\n                new MyGuiSmallShipHelperSmallShip(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\SmallShip_ORG\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Ships\\\\ORG\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                     MyTextsWrapperEnum.SmallShipOrg, MyTextsWrapperEnum.SmallShipOrgName));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip, (int)MyMwcObjectBuilder_SmallShip_TypesEnum.YG,\n                new MyGuiSmallShipHelperSmallShip(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\SmallShip_YG_Closed\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Ships\\\\YG_Closed\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                     MyTextsWrapperEnum.SmallShipYg, MyTextsWrapperEnum.SmallShipYgName));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip, (int)MyMwcObjectBuilder_SmallShip_TypesEnum.HAWK,\n                new MyGuiSmallShipHelperSmallShip(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\SmallShip_Hawk\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Ships\\\\Hawk\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextsWrapperEnum.SmallShipHawk, MyTextsWrapperEnum.SmallShipHawkName));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip, (int)MyMwcObjectBuilder_SmallShip_TypesEnum.PHOENIX,\n                new MyGuiSmallShipHelperSmallShip(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\SmallShip_Phoenix\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Ships\\\\Phoenix\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextsWrapperEnum.SmallShipPhoenix, MyTextsWrapperEnum.SmallShipPhoenixName));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip, (int)MyMwcObjectBuilder_SmallShip_TypesEnum.LEVIATHAN,\n                new MyGuiSmallShipHelperSmallShip(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\SmallShip_Leviathan\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Ships\\\\Leviathan\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextsWrapperEnum.SmallShipLeviathan, MyTextsWrapperEnum.SmallShipLeviathanName));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip, (int)MyMwcObjectBuilder_SmallShip_TypesEnum.ROCKHEATER,\n                new MyGuiSmallShipHelperSmallShip(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\SmallShip_Rockheater\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Ships\\\\Rockheater\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextsWrapperEnum.SmallShipRockheater, MyTextsWrapperEnum.SmallShipRockheaterName));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip, (int)MyMwcObjectBuilder_SmallShip_TypesEnum.STEELHEAD,\n                new MyGuiSmallShipHelperSmallShip(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\SmallShip_SteelHead\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Ships\\\\SteelHead\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextsWrapperEnum.SmallShipSteelHead, MyTextsWrapperEnum.SmallShipSteelHeadName));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip, (int)MyMwcObjectBuilder_SmallShip_TypesEnum.FEDER,\n                new MyGuiSmallShipHelperSmallShip(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\SmallShip_Talon\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy), \n                    MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Ships\\\\Talon\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextsWrapperEnum.SmallShipTalon, MyTextsWrapperEnum.SmallShipTalonName));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip, (int)MyMwcObjectBuilder_SmallShip_TypesEnum.STANISLAV,\n                new MyGuiSmallShipHelperSmallShip(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\SmallShip_Stanislav\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Ships\\\\Stanislav\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextsWrapperEnum.SmallShipStanislav, MyTextsWrapperEnum.SmallShipStanislavName));\n\n            #endregion\n\n            #region SmallShip_AssignmentOfAmmo\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_AssignmentOfAmmo, 0,\n                new MyGuiHelperBase(MyTextsWrapperEnum.EmptyDescription));\n            #endregion\n\n            #region LargeShip_Ammo\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.LargeShip_Ammo, (int)MyMwcObjectBuilder_LargeShip_Ammo_TypesEnum.CIWS_Armor_Piercing_Incendiary,\n                new MyGuiHelperBase(MyTextsWrapperEnum.EmptyDescription));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.LargeShip_Ammo, (int)MyMwcObjectBuilder_LargeShip_Ammo_TypesEnum.CIWS_High_Explosive_Incendiary,\n                new MyGuiHelperBase(MyTextsWrapperEnum.EmptyDescription));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.LargeShip_Ammo, (int)MyMwcObjectBuilder_LargeShip_Ammo_TypesEnum.CIWS_SAPHEI,\n                new MyGuiHelperBase(MyTextsWrapperEnum.EmptyDescription));            \n            #endregion\n\n            #region Create Prefab Helpers\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P430_A01_PASSAGE_10M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p430_a01_passage_10m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P430_A02_PASSAGE_40M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p430_a02_passage_40m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P424_A01_PIPE_BASE, new MyGuiPrefabHelper(MyTextsWrapperEnum.p424_a01_pipe_base));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P423_A01_PIPE_JUNCTION, new MyGuiPrefabHelper(MyTextsWrapperEnum.p423_a01_pipe_junction));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P422_A01_PIPE_TURN_90, new MyGuiPrefabHelper(MyTextsWrapperEnum.p422_a01_pipe_turn_90));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P421_A01_PIPE_STRAIGHT_80M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p421_a01_pipe_straight_80m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P421_A02_PIPE_STRAIGHT_40M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p421_a02_pipe_straight_40m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P421_A03_PIPE_STRAIGHT_10M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p421_a03_pipe_straight_10m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P413_G01_JUNCTION_6AXES, new MyGuiPrefabHelper(MyTextsWrapperEnum.p413_g01_junction_6axes));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P414_G02_ENTRANCE_60M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p414_g02_entrance_60m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P410_G01_TURN_90_RIGHT_0M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p410_g01_turn_90_right_0m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_G01_STRAIGHT_1, new MyGuiPrefabHelper(MyTextsWrapperEnum.p411_g01_straight_1));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_G02_STRAIGHT_2, new MyGuiPrefabHelper(MyTextsWrapperEnum.p411_g02_straight_2));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_G03_STRAIGHT_3, new MyGuiPrefabHelper(MyTextsWrapperEnum.p411_g03_straight_3));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_G04_STRAIGHT_4, new MyGuiPrefabHelper(MyTextsWrapperEnum.p411_g04_straight_4));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P414_F02_ENTRANCE_60M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p414_f02_entrance_60m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_F21_TURN_S_UP, new MyGuiPrefabHelper(MyTextsWrapperEnum.p412_f21_turn_s_up));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_F22_TURN_S_LEFT, new MyGuiPrefabHelper(MyTextsWrapperEnum.p412_f22_turn_s_left));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_F23_TURN_S_RIGHT, new MyGuiPrefabHelper(MyTextsWrapperEnum.p412_f23_turn_s_right));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_F24_TURN_S_DOWN, new MyGuiPrefabHelper(MyTextsWrapperEnum.p412_f24_turn_s_down));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_F01_TURN_90_UP_230M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p412_f01_turn_90_up_230m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_F02_TURN_90_LEFT_230M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p412_f02_turn_90_left_230m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_F03_TURN_90_RIGHT_230M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p412_f03_turn_90_right_230m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_F04_TURN_90_DOWN_230M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p412_f04_turn_90_down_230m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_F01_STRAIGHT_1, new MyGuiPrefabHelper(MyTextsWrapperEnum.p411_f01_straight_1));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_F02_STRAIGHT_2, new MyGuiPrefabHelper(MyTextsWrapperEnum.p411_f02_straight_2));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_F03_STRAIGHT_3, new MyGuiPrefabHelper(MyTextsWrapperEnum.p411_f03_straight_3));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P414_E01_ENTRANCE_60M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p414_e01_entrance_60m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_E01_STRAIGHT_1, new MyGuiPrefabHelper(MyTextsWrapperEnum.p411_e01_straight_1));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_E02_STRAIGHT_2, new MyGuiPrefabHelper(MyTextsWrapperEnum.p411_e02_straight_2));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_E03_STRAIGHT_3, new MyGuiPrefabHelper(MyTextsWrapperEnum.p411_e03_straight_3));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_E04_STRAIGHT_4, new MyGuiPrefabHelper(MyTextsWrapperEnum.p411_e04_straight_4));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_E05_STRAIGHT_5, new MyGuiPrefabHelper(MyTextsWrapperEnum.p411_e05_straight_5));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P415_D01_DOORCASE, new MyGuiPrefabHelper(MyTextsWrapperEnum.p415_d01_doorcase));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P415_D02_DOOR1, new MyGuiPrefabHelper(MyTextsWrapperEnum.p415_d02_door1));            \n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P415_D03_DOOR2_A, new MyGuiPrefabHelper(MyTextsWrapperEnum.p415_d03_door2_a));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P415_D03_DOOR2_B, new MyGuiPrefabHelper(MyTextsWrapperEnum.p415_d03_door2_b));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P413_D01_JUNCTION_T_HORIZONTAL, new MyGuiPrefabHelper(MyTextsWrapperEnum.p413_d01_junction_t_horizontal));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P413_D03_JUNCTION_X_HORIZONTAL, new MyGuiPrefabHelper(MyTextsWrapperEnum.p413_d03_junction_x_horizontal));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P414_D01_ENTRANCE_60M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p414_d01_entrance_60m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_D01_STRAIGHT_10M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p411_d01_straight_10m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_D02_STRAIGHT_40M_WITH_HOLE, new MyGuiPrefabHelper(MyTextsWrapperEnum.p411_d02_straight_40m_with_hole));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_D03_STRAIGHT_60M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p411_d03_straight_60m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_D04_STRAIGHT_120M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p411_d04_straight_120m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_D05_STRAIGHT_180M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p411_d05_straight_180m));            \n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P413_C01_JUNCTION_T_HORIZONTAL, new MyGuiPrefabHelper(MyTextsWrapperEnum.p413_c01_junction_t_horizontal));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P413_C01_JUNCTION_X_HORIZONTAL, new MyGuiPrefabHelper(MyTextsWrapperEnum.p413_c01_junction_x_horizontal));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P414_C01_ENTRANCE_60M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p414_c01_entrance_60m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_C01_STRAIGHT_10M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p411_c01_straight_10m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_C02_STRAIGHT_40M_WITH_HOLE, new MyGuiPrefabHelper(MyTextsWrapperEnum.p411_c02_straight_40m_with_hole));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_C03_STRAIGHT_60M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p411_c03_straight_60m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_C04_STRAIGHT_120M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p411_c04_straight_120m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_C05_STRAIGHT_180M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p411_c05_straight_180m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P415_B02_DOOR, new MyGuiPrefabHelper(MyTextsWrapperEnum.p415_b02_door));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P413_B01_JUNCTION_T_HORIZONTAL, new MyGuiPrefabHelper(MyTextsWrapperEnum.p413_b01_junction_t_horizontal));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P413_B02_JUNCTION_T_VERTICAL, new MyGuiPrefabHelper(MyTextsWrapperEnum.p413_b02_junction_t_vertical));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P414_B02_ENTRANCE_60M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p414_b02_entrance_60m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_B21_TURN_S_UP, new MyGuiPrefabHelper(MyTextsWrapperEnum.p412_b21_turn_s_up));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_B22_TURN_S_LEFT, new MyGuiPrefabHelper(MyTextsWrapperEnum.p412_b22_turn_s_left));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_B23_TURN_S_RIGHT, new MyGuiPrefabHelper(MyTextsWrapperEnum.p412_b23_turn_s_right));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_B24_TURN_S_DOWN, new MyGuiPrefabHelper(MyTextsWrapperEnum.p412_b24_turn_s_down));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_B11_TURN_90_UP_160M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p412_b11_turn_90_up_160m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_B12_TURN_90_LEFT_160M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p412_b12_turn_90_left_160m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_B13_TURN_90_RIGHT_160M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p412_b13_turn_90_right_160m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_B14_TURN_90_DOWN_160M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p412_b14_turn_90_down_160m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_B01_TURN_90_UP_80M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p412_b01_turn_90_up_80m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_B02_TURN_90_LEFT_80M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p412_b02_turn_90_left_80m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_B03_TURN_90_RIGHT_80M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p412_b03_turn_90_right_80m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_B04_TURN_90_DOWN_80M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p412_b04_turn_90_down_80m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_B01_STRAIGHT_10M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p411_b01_straight_10m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.p411_B02_STRAIGHT_30M_YELLOW, new MyGuiPrefabHelper(MyTextsWrapperEnum.p411_b02_straight_30m_yellow));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.p411_B03_STRAIGHT_320M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p411_b03_straight_320m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.p411_B04_STRAIGHT_80M_WITH_SIDE_GRATES, new MyGuiPrefabHelper(MyTextsWrapperEnum.p411_b04_straight_80m_with_side_grates));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.p411_B05_STRAIGHT_80M_WITH_SIDE_OPEN, new MyGuiPrefabHelper(MyTextsWrapperEnum.p411_b05_straight_80m_with_side_open));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.p411_B06_STRAIGHT_180M_CONCRETE, new MyGuiPrefabHelper(MyTextsWrapperEnum.p411_b06_straight_180m_concrete));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.p411_B06_STRAIGHT_200M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p411_b06_straight_200m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.p411_B07_STRAIGHT_180M_BLUE, new MyGuiPrefabHelper(MyTextsWrapperEnum.p411_b07_straight_180m_blue));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.p411_B09_STRAIGHT_30M_GRAY, new MyGuiPrefabHelper(MyTextsWrapperEnum.p411_b09_straight_30m_gray));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.p411_B11_STRAIGHT_220M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p411_b11_straight_220m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.p411_B12_STRAIGHT_160M_DARK_METAL, new MyGuiPrefabHelper(MyTextsWrapperEnum.p411_b12_straight_160m_dark_metal));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.p411_B13_STRAIGHT_100M_TUBE_INSIDE, new MyGuiPrefabHelper(MyTextsWrapperEnum.p411_b13_straight_100m_tube_inside));            \n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P413_A01_JUNCTION_T_HORIZONTAL, new MyGuiPrefabHelper(MyTextsWrapperEnum.p413_a01_junction_t_horizontal));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P413_A02_JUNCTION_T_VERTICAL, new MyGuiPrefabHelper(MyTextsWrapperEnum.p413_a02_junction_t_vertical));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P414_A01_ENTRANCE_30M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p414_a01_entrance_30m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P414_A02_ENTRANCE_60M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p414_a02_entrance_60m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_A21_TURN_S_UP, new MyGuiPrefabHelper(MyTextsWrapperEnum.p412_a21_turn_s_up));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_A22_TURN_S_LEFT, new MyGuiPrefabHelper(MyTextsWrapperEnum.p412_a22_turn_s_left));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_A23_TURN_S_RIGHT, new MyGuiPrefabHelper(MyTextsWrapperEnum.p412_a23_turn_s_right));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_A24_TURN_S_DOWN, new MyGuiPrefabHelper(MyTextsWrapperEnum.p412_a24_turn_s_down));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_A11_TURN_90_UP_160M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p412_a11_turn_90_up_160m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_A12_TURN_90_LEFT_160M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p412_a12_turn_90_left_160m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_A13_TURN_90_RIGHT_160M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p412_a13_turn_90_right_160m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_A14_TURN_90_DOWN_160M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p412_a14_turn_90_down_160m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_A01_TURN_90_UP_80M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p412_a01_turn_90_up_80m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_A02_TURN_90_LEFT_80M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p412_a02_turn_90_left_80m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_A03_TURN_90_RIGHT_80M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p412_a03_turn_90_right_80m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_A04_TURN_90_DOWN_80M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p412_a04_turn_90_down_80m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_A01_STRAIGHT_10M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p411_a01_straight_10m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_A02_STRAIGHT_60M_WITH_HOLE, new MyGuiPrefabHelper(MyTextsWrapperEnum.p411_a02_straight_60m_with_hole));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_A03_STRAIGHT_120M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p411_a03_straight_120m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_A04_STRAIGHT_80M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p411_a04_straight_80m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_A05_STRAIGHT_80M_WITH_EXTENSION, new MyGuiPrefabHelper(MyTextsWrapperEnum.p411_a05_straight_80m_with_extension));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P382_E01_BRIDGE5, new MyGuiPrefabHelper(MyTextsWrapperEnum.p382_e01_bridge5));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P382_D01_BRIDGE4, new MyGuiPrefabHelper(MyTextsWrapperEnum.p382_d01_bridge4));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P382_C01_BRIDGE3, new MyGuiPrefabHelper(MyTextsWrapperEnum.p382_c01_bridge3));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P382_B01_BRIDGE2, new MyGuiPrefabHelper(MyTextsWrapperEnum.p382_b01_bridge2));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P382_A01_BRIDGE1, new MyGuiPrefabHelper(MyTextsWrapperEnum.p382_a01_bridge1));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P381_C01_BUILDING3, new MyGuiPrefabHelper(MyTextsWrapperEnum.p381_c01_building3));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P381_B01_BUILDING2, new MyGuiPrefabHelper(MyTextsWrapperEnum.p381_b01_building2));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P381_A01_BUILDING1, new MyGuiPrefabHelper(MyTextsWrapperEnum.p381_a01_building1));            \n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P362_A01_SHORT_DISTANCE_ANTENNA, new MyGuiPrefabHelper(MyTextsWrapperEnum.p362_a01_short_distance_antenna));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P361_A01_LONG_DISTANCE_ANTENNA, new MyGuiPrefabHelper(MyTextsWrapperEnum.p361_a01_long_distance_antenna));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P415_B01_DOORCASE, new MyGuiPrefabHelper(MyTextsWrapperEnum.p415_b01_doorcase));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P351_A01_WEAPON_MOUNT, new MyGuiPrefabHelper(MyTextsWrapperEnum.p351_a01_weapon_mount));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P345_A01_REFINERY, new MyGuiPrefabHelper(MyTextsWrapperEnum.p345_a01_refinery));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P344_A01_CONTAINER_ARM_FILLED, new MyGuiPrefabHelper(MyTextsWrapperEnum.p344_a01_container_arm_filled));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P344_A02_CONTAINER_ARM_EMPTY, new MyGuiPrefabHelper(MyTextsWrapperEnum.p344_a02_container_arm_empty));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P343_A01_ORE_STORAGE, new MyGuiPrefabHelper(MyTextsWrapperEnum.p343_a01_ore_storage));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P342_A01_LOADING_BAY, new MyGuiPrefabHelper(MyTextsWrapperEnum.p342_a01_loading_bay));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P341_B01_OPEN_DOCK_VARIATION1, new MyGuiPrefabHelper(MyTextsWrapperEnum.p341_b01_open_dock_variation1));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P341_B02_OPEN_DOCK_VARIATION2, new MyGuiPrefabHelper(MyTextsWrapperEnum.p341_b02_open_dock_variation2));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P341_A02_OPEN_DOCK_VARIATION2, new MyGuiPrefabHelper(MyTextsWrapperEnum.p341_a02_open_dock_variation2));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P333_A01_HYDROPONIC_BUILDING, new MyGuiPrefabHelper(MyTextsWrapperEnum.p333_a01_hydroponic_building));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P332_A01_OXYGEN_STORAGE, new MyGuiPrefabHelper(MyTextsWrapperEnum.p332_a01_oxygen_storage));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P331_A01_OXYGEN_GENERATOR, new MyGuiPrefabHelper(MyTextsWrapperEnum.p331_a01_oxygen_generator));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P324B01_FUEL_STORAGE_B, new MyGuiPrefabHelper(MyTextsWrapperEnum.p324b01_fuel_storage_b));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P324A01_FUEL_STORAGE_A, new MyGuiPrefabHelper(MyTextsWrapperEnum.p324a01_fuel_storage_a));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P323A01_FUEL_GENERATOR, new MyGuiPrefabHelper(MyTextsWrapperEnum.p323a01_fuel_generator));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P322A01_BATTERY, new MyGuiPrefabHelper(MyTextsWrapperEnum.p322a01_battery));            \n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P321B01_NUCLEAR_REACTOR, new MyGuiPrefabHelper(MyTextsWrapperEnum.p321b01_nuclear_reactor));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P321A01_SOLAR_PANEL, new MyGuiPrefabHelper(MyTextsWrapperEnum.p321a01_solar_panel));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P312A01_SHORT_TERM_THRUSTER_LATITUDE, new MyGuiPrefabHelper(MyTextsWrapperEnum.p312a01_short_term_thruster_latitude));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P312A02_SHORT_TERM_THRUSTER_LATERAL, new MyGuiPrefabHelper(MyTextsWrapperEnum.p312a02_short_term_thruster_lateral));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P311A01_LONG_TERM_THRUSTER, new MyGuiPrefabHelper(MyTextsWrapperEnum.p311a01_long_term_thruster));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P231A01_ARMOR, new MyGuiPrefabHelper(MyTextsWrapperEnum.p231a01_armor));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P231A02_ARMOR, new MyGuiPrefabHelper(MyTextsWrapperEnum.p231a02_armor));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P231A03_ARMOR, new MyGuiPrefabHelper(MyTextsWrapperEnum.p231a03_armor));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P231A04_ARMOR, new MyGuiPrefabHelper(MyTextsWrapperEnum.p231a04_armor));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P231A05_ARMOR, new MyGuiPrefabHelper(MyTextsWrapperEnum.p231a05_armor));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P231A06_ARMOR, new MyGuiPrefabHelper(MyTextsWrapperEnum.p231a06_armor));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P231A07_ARMOR, new MyGuiPrefabHelper(MyTextsWrapperEnum.p231a07_armor));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P231A08_ARMOR, new MyGuiPrefabHelper(MyTextsWrapperEnum.p231a08_armor));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P231A09_ARMOR, new MyGuiPrefabHelper(MyTextsWrapperEnum.p231a09_armor));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P231A10_ARMOR, new MyGuiPrefabHelper(MyTextsWrapperEnum.p231a10_armor));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P231A11_ARMOR, new MyGuiPrefabHelper(MyTextsWrapperEnum.p231a11_armor));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P231A12_ARMOR, new MyGuiPrefabHelper(MyTextsWrapperEnum.p231a12_armor));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P231A13_ARMOR, new MyGuiPrefabHelper(MyTextsWrapperEnum.p231a13_armor));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P231A14_ARMOR, new MyGuiPrefabHelper(MyTextsWrapperEnum.p231a14_armor));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P231A15_ARMOR, new MyGuiPrefabHelper(MyTextsWrapperEnum.p231a15_armor));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P231A16_ARMOR, new MyGuiPrefabHelper(MyTextsWrapperEnum.p231a16_armor));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P231A17_ARMOR, new MyGuiPrefabHelper(MyTextsWrapperEnum.p231a17_armor));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P231A18_ARMOR, new MyGuiPrefabHelper(MyTextsWrapperEnum.p231a18_armor));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P221E01_CHAMBER_V1, new MyGuiPrefabHelper(MyTextsWrapperEnum.p221e01_chamber_v1));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P221D01_CHAMBER_V1, new MyGuiPrefabHelper(MyTextsWrapperEnum.p221d01_chamber_v1));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P221C01_CHAMBER_V1, new MyGuiPrefabHelper(MyTextsWrapperEnum.p221c01_chamber_v1));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P221B01_CHAMBER_V1, new MyGuiPrefabHelper(MyTextsWrapperEnum.p221b01_chamber_v1));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P221A01_CHAMBER_V1, new MyGuiPrefabHelper(MyTextsWrapperEnum.p221a01_chamber_v1));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P211G01_PANEL_120MX60M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p211g01_panel_120mx60m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P211H01_PANEL_535MX130M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p211h01_panel_535mx130m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P211G02_PANEL_60MX60M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p211g02_panel_60mx60m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P211G03_PANEL_60MX30M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p211g03_panel_60mx30m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P211F01_PANEL_120MX60M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p211f01_panel_120mx60m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P211F02_PANEL_60MX60M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p211f02_panel_60mx60m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P211F03_PANEL_60MX30M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p211f03_panel_60mx30m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P211E01_PANEL_120MX60M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p211e01_panel_120mx60m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P211E02_PANEL_60MX60M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p211e02_panel_60mx60m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P211E03_PANEL_60MX30M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p211e03_panel_60mx30m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P211D01_PANEL_120MX60M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p211d01_panel_120mx60m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P211D02_PANEL_60MX60M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p211d02_panel_60mx60m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P211D03_PANEL_60MX30M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p211d03_panel_60mx30m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P211C01_PANEL_120MX60M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p211c01_panel_120mx60m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P211C02_PANEL_60MX60M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p211c02_panel_60mx60m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P211C03_PANEL_60MX30M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p211c03_panel_60mx30m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P211B01_PANEL_120MX60M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p211b01_panel_120mx60m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P211B02_PANEL_60MX60M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p211b02_panel_60mx60m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P211B03_PANEL_60MX30M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p211b03_panel_60mx30m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P211A01_PANEL_120MX60M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p211a01_panel_120mx60m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P211A02_PANEL_60MX60M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p211a02_panel_60mx60m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P211A03_PANEL_60MX30M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p211a03_panel_60mx30m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P142B01_CAGE_EMPTY, new MyGuiPrefabHelper(MyTextsWrapperEnum.p142b01_cage_empty));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P142B02_CAGE_HALFCUT, new MyGuiPrefabHelper(MyTextsWrapperEnum.p142b02_cage_halfcut));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P142B03_CAGE_WITH_CORNERS, new MyGuiPrefabHelper(MyTextsWrapperEnum.p142b03_cage_with_corners));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P142B11_CAGE_PILLAR, new MyGuiPrefabHelper(MyTextsWrapperEnum.p142b11_cage_pillar));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P142B12_CAGE_EDGE, new MyGuiPrefabHelper(MyTextsWrapperEnum.p142b12_cage_edge));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P142A01_CAGE_EMPTY, new MyGuiPrefabHelper(MyTextsWrapperEnum.p142a01_cage_empty));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P142A02_CAGE_HALFCUT, new MyGuiPrefabHelper(MyTextsWrapperEnum.p142a02_cage_halfcut));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P142A03_CAGE_WITH_CORNERS, new MyGuiPrefabHelper(MyTextsWrapperEnum.p142a03_cage_with_corners));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P142A11_CAGE_PILLAR, new MyGuiPrefabHelper(MyTextsWrapperEnum.p142a11_cage_pillar));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P142A12_CAGE_EDGE, new MyGuiPrefabHelper(MyTextsWrapperEnum.p142a12_cage_edge));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P141B01_THICK_FRAME_STRAIGHT_10M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p141b01_thick_frame_straight_10m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P141B02_THICK_FRAME_STRAIGHT_60M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p141b02_thick_frame_straight_60m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P141B11_THICK_FRAME_EDGE, new MyGuiPrefabHelper(MyTextsWrapperEnum.p141b11_thick_frame_edge));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P141B12_THICK_FRAME_CORNER, new MyGuiPrefabHelper(MyTextsWrapperEnum.p141b12_thick_frame_corner));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P141B31_THICK_FRAME_JOINT, new MyGuiPrefabHelper(MyTextsWrapperEnum.p141b31_thick_frame_joint));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P141A01_THICK_FRAME_STRAIGHT_10M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p141a01_thick_frame_straight_10m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P141A02_THICK_FRAME_STRAIGHT_60M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p141a02_thick_frame_straight_60m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P141A11_THICK_FRAME_EDGE, new MyGuiPrefabHelper(MyTextsWrapperEnum.p141a11_thick_frame_edge));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P141A12_THICK_FRAME_CORNER, new MyGuiPrefabHelper(MyTextsWrapperEnum.p141a12_thick_frame_corner));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P141A31_THICK_FRAME_JOINT, new MyGuiPrefabHelper(MyTextsWrapperEnum.p141a31_thick_frame_joint));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P120J01_J_STRAIGHT_30M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p120j01_j_straight_30m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P130J02_J_STRAIGHT_10M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p130j02_j_straight_10m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P120I01_I_STRAIGHT_30M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p120i01_i_straight_30m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P130I02_I_STRAIGHT_10M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p130i02_i_straight_10m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P120H01_H_STRAIGHT_30M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p120h01_h_straight_30m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P130H02_H_STRAIGHT_10M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p130h02_h_straight_10m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P120G01_G_STRAIGHT_30M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p120g01_g_straight_30m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P130G02_G_STRAIGHT_10M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p130g02_g_straight_10m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P120F01_F_STRAIGHT_30M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p120f01_f_straight_30m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P130F02_F_STRAIGHT_10M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p130f02_f_straight_10m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P120E01_E_STRAIGHT_30M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p120e01_e_straight_30m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P130E02_E_STRAIGHT_10M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p130e02_e_straight_10m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P120D01_D_STRAIGHT_30M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p120d01_d_straight_30m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P130D02_D_STRAIGHT_10M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p130d02_d_straight_10m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P120C01_C_STRAIGHT_30M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p120c01_c_straight_30m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P130C02_C_STRAIGHT_10M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p130c02_c_straight_10m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P120B01_B_STRAIGHT_30M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p120b01_b_straight_30m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P130B02_B_STRAIGHT_10M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p130b02_b_straight_10m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P120A01_A_STRAIGHT_30M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p120a01_a_straight_30m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P130A02_A_STRAIGHT_10M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p130a02_a_straight_10m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P120D01_D_STRAIGHT_10M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p120d01_d_straight_10m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P120D02_D_STRAIGHT_40M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p120d02_d_straight_40m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P120C01_C_STRAIGHT_10M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p120c01_c_straight_10m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P120C02_C_STRAIGHT_40M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p120c02_c_straight_40m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P120B01_B_STRAIGHT_10M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p120b01_b_straight_10m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P120B02_B_STRAIGHT_40M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p120b02_b_straight_40m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P120A01_STRONG_LATTICE_STRAIGHT_10M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p120a01_strong_lattice_straight_10m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P120A02_STRONG_LATTICE_STRAIGHT_60M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p120a02_strong_lattice_straight_60m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P120A03_STRONG_LATTICE_STRAIGHT_120M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p120a03_strong_lattice_straight_120m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P120A21_STRONG_LATTICE_JUNCTION_T_STRONG, new MyGuiPrefabHelper(MyTextsWrapperEnum.p120a21_strong_lattice_junction_t_strong));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P120A22_STRONG_LATTICE_JUNCTION_T_WEAK, new MyGuiPrefabHelper(MyTextsWrapperEnum.p120a22_strong_lattice_junction_t_weak));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P120A23_STRONG_LATTICE_JUNCTION_T_ROTATED, new MyGuiPrefabHelper(MyTextsWrapperEnum.p120a23_strong_lattice_junction_t_rotated));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P120A51_STRONG_TO_WEAK_LATTICE_2TO1, new MyGuiPrefabHelper(MyTextsWrapperEnum.p120a51_strong_to_weak_lattice_2to1));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P120A52_STRONG_TO_WEAK_LATTICE_1TO2, new MyGuiPrefabHelper(MyTextsWrapperEnum.p120a52_strong_to_weak_lattice_1to2));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P120A61_WEAK_LATTICE_JUNCTION_T_ROTATED, new MyGuiPrefabHelper(MyTextsWrapperEnum.p120a61_weak_lattice_junction_t_rotated));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P110B01_LATTICE_BEAM_STRAIGHT_10M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p110b01_lattice_beam_straight_10m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P110B02_LATTICE_BEAM_STRAIGHT_30M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p110b02_lattice_beam_straight_30m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P110B03_LATTICE_BEAM_STRAIGHT_60M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p110b03_lattice_beam_straight_60m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P110B04_LATTICE_BEAM_STRAIGHT_60M_WITH_PANELS, new MyGuiPrefabHelper(MyTextsWrapperEnum.p110b04_lattice_beam_straight_60m_with_panels));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P110B21_LATTICE_BEAM_JUNCTION_T_STRONG, new MyGuiPrefabHelper(MyTextsWrapperEnum.p110b21_lattice_beam_junction_t_strong));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P110B22_LATTICE_BEAM_JUNCTION_T_WEAK, new MyGuiPrefabHelper(MyTextsWrapperEnum.p110b22_lattice_beam_junction_t_weak));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P110B31_LATTICE_BEAM_JOINT_HORIZONTAL, new MyGuiPrefabHelper(MyTextsWrapperEnum.p110b31_lattice_beam_joint_horizontal));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P110B32_LATTICE_BEAM_JOINT_VERTICAL, new MyGuiPrefabHelper(MyTextsWrapperEnum.p110b32_lattice_beam_joint_vertical));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P110A01_SOLID_BEAM_STRAIGHT_10M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p110a01_solid_beam_straight_10m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P110A02_SOLID_BEAM_STRAIGHT_20M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p110a02_solid_beam_straight_20m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P110A03_SOLID_BEAM_STRAIGHT_40M_WITH_HOLE, new MyGuiPrefabHelper(MyTextsWrapperEnum.p110a03_solid_beam_straight_40m_with_hole));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P110A04_SOLID_BEAM_STRAIGHT_40M_LATTICE, new MyGuiPrefabHelper(MyTextsWrapperEnum.p110a04_solid_beam_straight_40m_lattice));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P110A05_SOLID_BEAM_STRAIGHT_80M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p110a05_solid_beam_straight_80m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P110A11_SOLID_BEAM_JUNCTION_X_STRONG, new MyGuiPrefabHelper(MyTextsWrapperEnum.p110a11_solid_beam_junction_x_strong));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P110A12_SOLID_BEAM_JUNCTION_X_WEAK, new MyGuiPrefabHelper(MyTextsWrapperEnum.p110a12_solid_beam_junction_x_weak));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P110A13_SOLID_BEAM_JUNCTION_X_ROTATED, new MyGuiPrefabHelper(MyTextsWrapperEnum.p110a13_solid_beam_junction_x_rotated));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P110A21_SOLID_BEAM_JUNCTION_T_STRONG, new MyGuiPrefabHelper(MyTextsWrapperEnum.p110a21_solid_beam_junction_t_strong));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P110A22_SOLID_BEAM_JUNCTION_T_WEAK, new MyGuiPrefabHelper(MyTextsWrapperEnum.p110a22_solid_beam_junction_t_weak));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P110A23_SOLID_BEAM_JUNCTION_T_ROTATED, new MyGuiPrefabHelper(MyTextsWrapperEnum.p110a23_solid_beam_junction_t_rotated));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P110A31_SOLID_BEAM_JOINT_HORIZONTAL, new MyGuiPrefabHelper(MyTextsWrapperEnum.p110a31_solid_beam_joint_horizontal));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P110A32_SOLID_BEAM_JOINT_VERTICAL, new MyGuiPrefabHelper(MyTextsWrapperEnum.p110a32_solid_beam_joint_vertical));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P110A33_SOLID_BEAM_JOINT_LONGITUDINAL, new MyGuiPrefabHelper(MyTextsWrapperEnum.p110a33_solid_beam_joint_longitudinal));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P110A41_SOLID_BEAM_SUPERJOINT, new MyGuiPrefabHelper(MyTextsWrapperEnum.p110a41_solid_beam_superjoint));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P511_A01_BILLBOARD, new MyGuiPrefabHelper(MyTextsWrapperEnum.p511_a01_billboard));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P511_A02_BILLBOARD, new MyGuiPrefabHelper(MyTextsWrapperEnum.p511_a02_billboard));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P511_A03_BILLBOARD, new MyGuiPrefabHelper(MyTextsWrapperEnum.p511_a03_billboard));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P511_A04_BILLBOARD, new MyGuiPrefabHelper(MyTextsWrapperEnum.p511_a04_billboard));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P511_A05_BILLBOARD, new MyGuiPrefabHelper(MyTextsWrapperEnum.p511_a05_billboard));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P511_A06_BILLBOARD, new MyGuiPrefabHelper(MyTextsWrapperEnum.p511_a06_billboard));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P511_A07_BILLBOARD, new MyGuiPrefabHelper(MyTextsWrapperEnum.p511_a07_billboard));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P511_A08_BILLBOARD, new MyGuiPrefabHelper(MyTextsWrapperEnum.p511_a08_billboard));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P511_A09_BILLBOARD, new MyGuiPrefabHelper(MyTextsWrapperEnum.p511_a09_billboard));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P511_A10_BILLBOARD, new MyGuiPrefabHelper(MyTextsWrapperEnum.p511_a10_billboard));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P511_A11_BILLBOARD, new MyGuiPrefabHelper(MyTextsWrapperEnum.p511_a11_billboard));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P511_A12_BILLBOARD, new MyGuiPrefabHelper(MyTextsWrapperEnum.p511_a12_billboard));            \n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P511_A14_BILLBOARD, new MyGuiPrefabHelper(MyTextsWrapperEnum.p511_a14_billboard));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P511_A15_BILLBOARD, new MyGuiPrefabHelper(MyTextsWrapperEnum.p511_a15_billboard));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P511_A16_BILLBOARD, new MyGuiPrefabHelper(MyTextsWrapperEnum.p511_a16_billboard));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_A01_SIGN1, new MyGuiPrefabHelper(MyTextsWrapperEnum.p531_a01_sign1));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_A02_SIGN2, new MyGuiPrefabHelper(MyTextsWrapperEnum.p531_a02_sign2));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_A03_SIGN3, new MyGuiPrefabHelper(MyTextsWrapperEnum.p531_a03_sign3));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_A04_SIGN4, new MyGuiPrefabHelper(MyTextsWrapperEnum.p531_a04_sign4));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_A05_SIGN5, new MyGuiPrefabHelper(MyTextsWrapperEnum.p531_a05_sign5));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_A06_SIGN6, new MyGuiPrefabHelper(MyTextsWrapperEnum.p531_a06_sign6));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_A07_SIGN7, new MyGuiPrefabHelper(MyTextsWrapperEnum.p531_a07_sign7));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_A08_SIGN8, new MyGuiPrefabHelper(MyTextsWrapperEnum.p531_a08_sign8));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_A09_SIGN9, new MyGuiPrefabHelper(MyTextsWrapperEnum.p531_a09_sign9));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_A10_SIGN10, new MyGuiPrefabHelper(MyTextsWrapperEnum.p531_a10_sign10));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_A11_SIGN11, new MyGuiPrefabHelper(MyTextsWrapperEnum.p531_a11_sign11));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_A12_SIGN12, new MyGuiPrefabHelper(MyTextsWrapperEnum.p531_a12_sign12));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P221_A02_CHAMBER_V2, new MyGuiPrefabHelper(MyTextsWrapperEnum.p221e02_chamber_v2));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P221_B02_CHAMBER_V2, new MyGuiPrefabHelper(MyTextsWrapperEnum.p221e02_chamber_v2));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P221_C02_CHAMBER_V2, new MyGuiPrefabHelper(MyTextsWrapperEnum.p221e02_chamber_v2));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P221_D02_CHAMBER_V2, new MyGuiPrefabHelper(MyTextsWrapperEnum.p221e02_chamber_v2));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P221_E02_CHAMBER_V2, new MyGuiPrefabHelper(MyTextsWrapperEnum.p221e02_chamber_v2));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P130_A01_STRAIGHT_10M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p130a01_a_straight_10m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P130_A02_STRAIGHT_30M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p130a02_a_straight_30m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P130_B01_STRAIGHT_10M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p130b01_b_straight_10m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P130_B02_STRAIGHT_30M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p130b02_b_straight_30m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P130_C01_STRAIGHT_10M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p130c01_c_straight_10m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P130_C02_STRAIGHT_30M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p130c02_c_straight_30m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P130_D01_STRAIGHT_10M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p130d01_d_straight_10m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P130_D02_STRAIGHT_30M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p130d02_d_straight_30m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P130_E01_STRAIGHT_10M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p130e01_e_straight_10m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P130_E02_STRAIGHT_30M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p130e02_e_straight_30m));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P321_B01_SOLAR_PANEL, new MyGuiPrefabHelper(MyTextsWrapperEnum.p321b01_solar_panel));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P321_C01_SOLAR_PANEL, new MyGuiPrefabHelper(MyTextsWrapperEnum.p321c01_solar_panel));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P413_D02_JUNCTION_T_VERTICAL, new MyGuiPrefabHelper(MyTextsWrapperEnum.p413_d02_junction_t_vertical));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P413_D04_JUNCTION_X_VERTICAL, new MyGuiPrefabHelper(MyTextsWrapperEnum.p413_d04_junction_x_vertical));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_F11_TURN_90_UP_230M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p412_f11_turn_90_up_230m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_F12_TURN_90_LEFT_230M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p412_f12_turn_90_left_230m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_F13_TURN_90_RIGHT_230M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p412_f13_turn_90_right_230m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_F14_TURN_90_DOWN_230M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p412_f14_turn_90_down_230m));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_F04_STRAIGHT_4, new MyGuiPrefabHelper(MyTextsWrapperEnum.p411_f04_straight_4));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_F05_STRAIGHT_5, new MyGuiPrefabHelper(MyTextsWrapperEnum.p411_f05_straight_5));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_G05_STRAIGHT_5, new MyGuiPrefabHelper(MyTextsWrapperEnum.p411_g05_straight_5));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P414_F01_ENTRANCE_60M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p414_f01_entrance_60m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P414_G01_ENTRANCE_60M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p414_g01_entrance_60m));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P571_A01_TRAFFIC_SIGN, new MyGuiPrefabHelper(MyTextsWrapperEnum.p571_a01_traffic_sign));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P571_B01_TRAFFIC_SIGN, new MyGuiPrefabHelper(MyTextsWrapperEnum.p571_b01_traffic_sign));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P571_BOX01_TRAFFIC_SIGN, new MyGuiPrefabHelper(MyTextsWrapperEnum.p571_box01_traffic_sign));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P571_BOX02_TRAFFIC_SIGN, new MyGuiPrefabHelper(MyTextsWrapperEnum.p571_box02_traffic_sign));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P571_C01_TRAFFIC_SIGN, new MyGuiPrefabHelper(MyTextsWrapperEnum.p571_c01_traffic_sign));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P571_D01_TRAFFIC_SIGN, new MyGuiPrefabHelper(MyTextsWrapperEnum.p571_d01_traffic_sign));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P571_E01_TRAFFIC_SIGN, new MyGuiPrefabHelper(MyTextsWrapperEnum.p571_e01_traffic_sign));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P571_F01_TRAFFIC_SIGN, new MyGuiPrefabHelper(MyTextsWrapperEnum.p571_f01_traffic_sign));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P571_G01_TRAFFIC_SIGN, new MyGuiPrefabHelper(MyTextsWrapperEnum.p571_g01_traffic_sign));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P571_H01_TRAFFIC_SIGN, new MyGuiPrefabHelper(MyTextsWrapperEnum.p571_h01_traffic_sign));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P571_I01_TRAFFIC_SIGN, new MyGuiPrefabHelper(MyTextsWrapperEnum.p571_i01_traffic_sign));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P571_J01_TRAFFIC_SIGN, new MyGuiPrefabHelper(MyTextsWrapperEnum.p571_j01_traffic_sign));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P571_K01_TRAFFIC_SIGN, new MyGuiPrefabHelper(MyTextsWrapperEnum.p571_k01_traffic_sign));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P571_L01_TRAFFIC_SIGN, new MyGuiPrefabHelper(MyTextsWrapperEnum.p571_l01_traffic_sign));\n\n            // HACK: No text for simple object!\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.SimpleObject, new MyGuiPrefabHelper(MyTextsWrapperEnum.CustomObject));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.AsteroidPrefabTest, new MyGuiPrefabHelper(MyTextsWrapperEnum.UnknownControl));            \n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P385_A01_TEMPLE_900M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p385_a01_temple_900m));            \n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P383_A01_CHURCH, new MyGuiPrefabHelper(MyTextsWrapperEnum.p383_a01_church));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P334_A01_FOOD_GROW, new MyGuiPrefabHelper(MyTextsWrapperEnum.p334_a01_food_grow));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P345_A01_BIO_EXP, new MyGuiPrefabHelper(MyTextsWrapperEnum.p345_a01_bio_exp));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P345_A01_BIO_MACH_EXP, new MyGuiPrefabHelper(MyTextsWrapperEnum.p345_a01_bio_mach_exp));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P345_A01_RECYCLE, new MyGuiPrefabHelper(MyTextsWrapperEnum.p345_a01_recycle));\n            \n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P541_ESCAPE_POD, new MyGuiPrefabHelper(MyTextsWrapperEnum.p541_escape_pod));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P541_ESCAPE_POD_BASE, new MyGuiPrefabHelper(MyTextsWrapperEnum.p541_escape_pod_base));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P541_VENTILATOR_BODY, new MyGuiPrefabHelper(MyTextsWrapperEnum.p541_ventilator_body));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P541_VENTILATOR_PROPELLER, new MyGuiPrefabHelper(MyTextsWrapperEnum.p541_ventilator_propeller));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P541_VENTILATOR, new MyGuiPrefabHelper(MyTextsWrapperEnum.p541_ventilator));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P349_A_TOWER, new MyGuiPrefabHelper(MyTextsWrapperEnum.p349_a_tower));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P349_B_TOWER, new MyGuiPrefabHelper(MyTextsWrapperEnum.p349_b_tower));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P349_C_TOWER, new MyGuiPrefabHelper(MyTextsWrapperEnum.p349_c_tower));\n            \n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P415_B01_DOORCASE, new MyGuiPrefabHelper(MyTextsWrapperEnum.p415_b01_doorcase));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P415_D01_DOORCASE, new MyGuiPrefabHelper(MyTextsWrapperEnum.p415_d01_doorcase));\n            \n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_B_FACTION, new MyGuiPrefabHelper(MyTextsWrapperEnum.p531_b_faction));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_B_FACTION_HOLO, new MyGuiPrefabHelper(MyTextsWrapperEnum.p531_b_faction_holo));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.ARMOR_HULL, new MyGuiPrefabHelper(MyTextsWrapperEnum.Armor_hull));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P212A01_PANEL_LARGE, new MyGuiPrefabHelper(MyTextsWrapperEnum.p212a01_panel_large));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P212A01_PANEL_MEDIUM, new MyGuiPrefabHelper(MyTextsWrapperEnum.p212a01_panel_medium));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P212A01_PANEL_SMALL, new MyGuiPrefabHelper(MyTextsWrapperEnum.p212a01_panel_small));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P212B02_PANEL_MEDIUM, new MyGuiPrefabHelper(MyTextsWrapperEnum.p212b02_panel_medium));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P212B02_PANEL_SMALL, new MyGuiPrefabHelper(MyTextsWrapperEnum.p212b02_panel_small));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P212C03_PANEL_MEDIUM, new MyGuiPrefabHelper(MyTextsWrapperEnum.p212c03_panel_medium));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P212C03_PANEL_SMALL, new MyGuiPrefabHelper(MyTextsWrapperEnum.p212c03_panel_small));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P212D04_PANEL_MEDIUM, new MyGuiPrefabHelper(MyTextsWrapperEnum.p212d04_panel_medium));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P212D04_PANEL_SMALL, new MyGuiPrefabHelper(MyTextsWrapperEnum.p212d04_panel_small));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P212E05_PANEL_MEDIUM, new MyGuiPrefabHelper(MyTextsWrapperEnum.p212e05_panel_medium));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P212E05_PANEL_SMALL, new MyGuiPrefabHelper(MyTextsWrapperEnum.p212e05_panel_small));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P221F01_CHAMBER_V1, new MyGuiPrefabHelper(MyTextsWrapperEnum.p221f01_chamber_v1));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P341_C01_CLOSED_DOCK_V1, new MyGuiPrefabHelper(MyTextsWrapperEnum.p341_c01_closed_dock_v1));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P221G01_CHAMBER_V1, new MyGuiPrefabHelper(MyTextsWrapperEnum.p221g01_chamber_v1));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P221H01_CHAMBER_V1, new MyGuiPrefabHelper(MyTextsWrapperEnum.p221h01_chamber_v1));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P221J01_CHAMBER_V1, new MyGuiPrefabHelper(MyTextsWrapperEnum.p221j01_chamber_v1));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P221K01_CHAMBER_V1, new MyGuiPrefabHelper(MyTextsWrapperEnum.p221k01_chamber_v1));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P212B02_PANEL_LARGE, new MyGuiPrefabHelper(MyTextsWrapperEnum.p212b02_panel_large));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P212C03_PANEL_LARGE, new MyGuiPrefabHelper(MyTextsWrapperEnum.p212c03_panel_large));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P212D04_PANEL_LARGE, new MyGuiPrefabHelper(MyTextsWrapperEnum.p212d04_panel_large));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P212E05_PANEL_LARGE, new MyGuiPrefabHelper(MyTextsWrapperEnum.p212e05_panel_large));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P212F01_PANEL_LARGE, new MyGuiPrefabHelper(MyTextsWrapperEnum.p212f01_panel_large));\n            \n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P381_D03_HOSPITAL, new MyGuiPrefabHelper(MyTextsWrapperEnum.p381_d03_hospital));            \n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P381_D05_FOOD_GROW, new MyGuiPrefabHelper(MyTextsWrapperEnum.p381_d05_food_grow));                        \n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P381_C01_BUILDING4, new MyGuiPrefabHelper(MyTextsWrapperEnum.p381_c01_building4));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.CABLE_CORNER_25M, new MyGuiPrefabHelper(MyTextsWrapperEnum.Cable_corner_25m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.CABLE_S_45M, new MyGuiPrefabHelper(MyTextsWrapperEnum.Cable_S_45m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.CABLE_STRAIGHT_180, new MyGuiPrefabHelper(MyTextsWrapperEnum.Cable_straight_180));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.CABLE_STRAIGHT_45, new MyGuiPrefabHelper(MyTextsWrapperEnum.Cable_straight_45));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.CABLE_STRAIGHT_90, new MyGuiPrefabHelper(MyTextsWrapperEnum.Cable_straight_90));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.CONNECTION_BOX, new MyGuiPrefabHelper(MyTextsWrapperEnum.Connection_box));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_ADMINISTRATIVE_AREA, new MyGuiPrefabHelper(MyTextsWrapperEnum.p531_c_administrative_area));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_ARMORY, new MyGuiPrefabHelper(MyTextsWrapperEnum.p531_c_armory));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_ARROW_L, new MyGuiPrefabHelper(MyTextsWrapperEnum.p531_c_arrow_l));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_ARROW_R, new MyGuiPrefabHelper(MyTextsWrapperEnum.p531_c_arrow_r));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_ARROW_STR, new MyGuiPrefabHelper(MyTextsWrapperEnum.p531_c_arrow_str));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_CARGO_BAY, new MyGuiPrefabHelper(MyTextsWrapperEnum.p531_c_cargo_bay));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_COMMAND_CENTER, new MyGuiPrefabHelper(MyTextsWrapperEnum.p531_c_command_center));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_COMMERCIAL_AREA, new MyGuiPrefabHelper(MyTextsWrapperEnum.p531_c_commercial_area));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_COMMUNICATIONS, new MyGuiPrefabHelper(MyTextsWrapperEnum.p531_c_communications));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_DEFENSES, new MyGuiPrefabHelper(MyTextsWrapperEnum.p531_c_defenses));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_DOCKS, new MyGuiPrefabHelper(MyTextsWrapperEnum.p531_c_docks));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_EMERGENCY_EXIT, new MyGuiPrefabHelper(MyTextsWrapperEnum.p531_c_emergency_exit));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_ENGINEERING_AREA, new MyGuiPrefabHelper(MyTextsWrapperEnum.p531_c_engineering_area));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_EXIT, new MyGuiPrefabHelper(MyTextsWrapperEnum.p531_c_exit));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_EXPERIMENTAL_LABS, new MyGuiPrefabHelper(MyTextsWrapperEnum.p531_c_experimental_labs));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_FOUNDRY, new MyGuiPrefabHelper(MyTextsWrapperEnum.p531_c_foundry));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_HABITATS, new MyGuiPrefabHelper(MyTextsWrapperEnum.p531_c_habitats));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_HANGARS, new MyGuiPrefabHelper(MyTextsWrapperEnum.p531_c_hangars));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_INDUSTRIAL_AREA, new MyGuiPrefabHelper(MyTextsWrapperEnum.p531_c_industrial_area));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_LANDING_BAY, new MyGuiPrefabHelper(MyTextsWrapperEnum.p531_c_landing_bay));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_MAINTENANCE, new MyGuiPrefabHelper(MyTextsWrapperEnum.p531_c_maintenance));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_MILITARY_AREA, new MyGuiPrefabHelper(MyTextsWrapperEnum.p531_c_military_area));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_MINES, new MyGuiPrefabHelper(MyTextsWrapperEnum.p531_c_mines));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_ORE_PROCESSING, new MyGuiPrefabHelper(MyTextsWrapperEnum.p531_c_ore_processing));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_OUTER_AREA, new MyGuiPrefabHelper(MyTextsWrapperEnum.p531_c_outer_area));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_PRISON, new MyGuiPrefabHelper(MyTextsWrapperEnum.p531_c_prison));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_PUBLIC_AREA, new MyGuiPrefabHelper(MyTextsWrapperEnum.p531_c_public_area));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_REACTOR, new MyGuiPrefabHelper(MyTextsWrapperEnum.p531_c_reactor));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_RESEARCH, new MyGuiPrefabHelper(MyTextsWrapperEnum.p531_c_research));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_RESTRICTED_AREA, new MyGuiPrefabHelper(MyTextsWrapperEnum.p531_c_restricted_area));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_SECURITY, new MyGuiPrefabHelper(MyTextsWrapperEnum.p531_c_security));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_SIGN, new MyGuiPrefabHelper(MyTextsWrapperEnum.p531_c_sign));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_STORAGE, new MyGuiPrefabHelper(MyTextsWrapperEnum.p531_c_storage));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_TECHNICAL_AREA, new MyGuiPrefabHelper(MyTextsWrapperEnum.p531_c_technical_area));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_TRADE_PORT, new MyGuiPrefabHelper(MyTextsWrapperEnum.p531_c_trade_port));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P321_D01_BIG_SOLAR_PANEL, new MyGuiPrefabHelper(MyTextsWrapperEnum.p321_d01_big_solar_panel));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P361_B01_LONG_DISTANCE_ANTENNA_BIG, new MyGuiPrefabHelper(MyTextsWrapperEnum.p361_b01_long_distance_antenna_big));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.FOURTH_REICH_WRECK, new MyGuiPrefabHelper(MyTextsWrapperEnum.Fourth_reich_wreck));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P344_A03_CONTAINER, new MyGuiPrefabHelper(MyTextsWrapperEnum.p344_a03_container));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P231B01_ARMOR, new MyGuiPrefabHelper(MyTextsWrapperEnum.p231b01_armor));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P231B01_ARMOR_CORNER, new MyGuiPrefabHelper(MyTextsWrapperEnum.p231b01_armor_corner));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P231B01_ARMOR_EDGE, new MyGuiPrefabHelper(MyTextsWrapperEnum.p231b01_armor_edge));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P231B01_ARMOR_HOLE, new MyGuiPrefabHelper(MyTextsWrapperEnum.p231b01_armor_hole));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P150A03_SHELF_1, new MyGuiPrefabHelper(MyTextsWrapperEnum.p150a03_shelf_1));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P150A02_SHELF_1X2, new MyGuiPrefabHelper(MyTextsWrapperEnum.p150a02_shelf_1X2));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P150A01_SHELF_1X3, new MyGuiPrefabHelper(MyTextsWrapperEnum.p150a01_shelf_1X3));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P611_ASTEROID_PART_A, new MyGuiPrefabHelper(MyTextsWrapperEnum.p611_asteroid_part_A));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P611_ASTEROID_PART_B, new MyGuiPrefabHelper(MyTextsWrapperEnum.p611_asteroid_part_B));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P363_A01_BIG_ANTENNA_300M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p363_a01_big_antenna_300m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P130D02_D_STRAIGHT_300M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p130d02_d_straight_300m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P130J01_J_STRAIGHT_300M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p130j01_j_straight_300m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P120C02_C_STRAIGHT_400M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p120c02_c_straight_400m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P110B03_LATTICE_BEAM_STRAIGHT_420M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p110b03_lattice_beam_straight_420m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P110B04_LATTICE_BEAM_STRAIGHT_420M_WITH_PANELS, new MyGuiPrefabHelper(MyTextsWrapperEnum.p110b04_lattice_beam_straight_420m_with_panels));\n            \n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P363_A01_BIG_ANTENNA_1500M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p363_a01_big_antenna_1500m));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P4221_A01_COOLING_DEVICE_WALL_340X400, new MyGuiPrefabHelper(MyTextsWrapperEnum.p4221_a01_cooling_device_wall_340x400));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P4222_A01_PIPES_CONNECTOR, new MyGuiPrefabHelper(MyTextsWrapperEnum.p4222_a01_pipes_connector));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P4223_A01_OPEN_PIPE, new MyGuiPrefabHelper(MyTextsWrapperEnum.p4223_a01_open_pipe));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P311B01_LONG_TERM_THRUSTER, new MyGuiPrefabHelper(MyTextsWrapperEnum.p311b01_long_term_thruster));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P221K01_CHAMBER_V2, new MyGuiPrefabHelper(MyTextsWrapperEnum.p221k01_chamber_v2));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P581_A01_BARREL_BIOHAZARD, new MyGuiPrefabHelper(MyTextsWrapperEnum.p581_a01_barrel_biohazard));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P581_A01_BARREL_BIOHAZARD_2, new MyGuiPrefabHelper(MyTextsWrapperEnum.p581_a01_barrel_biohazard_2));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P581_A01_NUKE_BARREL, new MyGuiPrefabHelper(MyTextsWrapperEnum.p581_a01_nuke_barrel));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P581_A01_RED_BARREL, new MyGuiPrefabHelper(MyTextsWrapperEnum.p581_a01_red_barrel));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P581_A01_SIMPLE_BARREL, new MyGuiPrefabHelper(MyTextsWrapperEnum.p581_a01_simple_barrel));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P581_A01_SIMPLE_BARREL_2, new MyGuiPrefabHelper(MyTextsWrapperEnum.p581_a01_simple_barrel_2));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.BARREL_PROP_A, new MyGuiPrefabHelper(MyTextsWrapperEnum.Barrel_prop_A));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.BARREL_PROP_B, new MyGuiPrefabHelper(MyTextsWrapperEnum.Barrel_prop_B));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.BARREL_PROP_C, new MyGuiPrefabHelper(MyTextsWrapperEnum.Barrel_prop_C));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.BARREL_PROP_D, new MyGuiPrefabHelper(MyTextsWrapperEnum.Barrel_prop_D));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.BARREL_PROP_E, new MyGuiPrefabHelper(MyTextsWrapperEnum.Barrel_prop_E));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.CANNONBALL_CAPSULE_1, new MyGuiPrefabHelper(MyTextsWrapperEnum.CannonBall_Capsule_1));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.GATTLING_AMMO_BELT, new MyGuiPrefabHelper(MyTextsWrapperEnum.Gattling_ammo_belt));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.MISSILE_PACK01, new MyGuiPrefabHelper(MyTextsWrapperEnum.Missile_pack01));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.MISSILE_PACK02, new MyGuiPrefabHelper(MyTextsWrapperEnum.Missile_pack02));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.MISSILE_PLAZMA01, new MyGuiPrefabHelper(MyTextsWrapperEnum.Missile_plazma01));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.MISSILE_STACK_BIOCHEM01, new MyGuiPrefabHelper(MyTextsWrapperEnum.Missile_stack_biochem01));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P581_A01_O2_BARREL, new MyGuiPrefabHelper(MyTextsWrapperEnum.p581_a01_o2_barrel));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.NUCLEAR_WARHEAD_CLOSED, new MyGuiPrefabHelper(MyTextsWrapperEnum.Nuclear_Warhead_closed));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.NUCLEAR_WARHEAD_OPEN, new MyGuiPrefabHelper(MyTextsWrapperEnum.Nuclear_Warhead_open));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P581_A01_NUKE_BARREL_1, new MyGuiPrefabHelper(MyTextsWrapperEnum.p581_a01_nuke_barrel_1));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P581_A01_SIMPLE_BARREL_3, new MyGuiPrefabHelper(MyTextsWrapperEnum.p581_a01_simple_barrel_3));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P221L01_CHAMBER_V1, new MyGuiPrefabHelper(MyTextsWrapperEnum.p221L01_chamber_v1));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P221M01_CHAMBER_BOTTOM_V1, new MyGuiPrefabHelper(MyTextsWrapperEnum.p221m01_chamber_bottom_v1));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P221M01_CHAMBER_CENTER_V1, new MyGuiPrefabHelper(MyTextsWrapperEnum.p221m01_chamber_center_v1));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P221M01_CHAMBER_TOP_V1, new MyGuiPrefabHelper(MyTextsWrapperEnum.p221m01_chamber_top_v1));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P321E01_SOLAR_PANEL, new MyGuiPrefabHelper(MyTextsWrapperEnum.p321e01_solar_panel));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P110A06_SOLID_BEAM_STRAIGHT_420M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p110a06_solid_beam_straight_420m));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P311B01_CUT_THRUSTER, new MyGuiPrefabHelper(MyTextsWrapperEnum.p311b01_cut_thruster));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P312B01_CUT_THRUSTER_LATERAL, new MyGuiPrefabHelper(MyTextsWrapperEnum.p312b01_cut_thruster_lateral));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P312B02_CUT_THRUSTER_LATITUDE, new MyGuiPrefabHelper(MyTextsWrapperEnum.p312b02_cut_thruster_latitude));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.ALIEN_DETECTOR_UNIT, new MyGuiPrefabHelper(MyTextsWrapperEnum.alien_detector_unit));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P381_C01_BUILDING5, new MyGuiPrefabHelper(MyTextsWrapperEnum.p381_c01_building5));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P381_C01_BUILDING6, new MyGuiPrefabHelper(MyTextsWrapperEnum.p381_c01_building6));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P381_C01_BUILDING7, new MyGuiPrefabHelper(MyTextsWrapperEnum.p381_c01_building7));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P221N01_CHAMBER_V1, new MyGuiPrefabHelper(MyTextsWrapperEnum.p221n01_chamber_v1));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_D_MEDIC_CROSS, new MyGuiPrefabHelper(MyTextsWrapperEnum.p531_d_medic_cross));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.ALIEN_ARTEFACT, new MyGuiPrefabHelper(MyTextsWrapperEnum.alien_artefact));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.BOMB, new MyGuiPrefabHelper(MyTextsWrapperEnum.Bomb));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.RAIL_GUN, new MyGuiPrefabHelper(MyTextsWrapperEnum.rail_gun));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P345_A01_RECYCLE_SPHERE, new MyGuiPrefabHelper(MyTextsWrapperEnum.p345_a01_recycle_sphere));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.PRISON, new MyGuiPrefabHelper(MyTextsWrapperEnum.prison));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P511_A17_BILLBOARD_PORTRAIT_1, new MyGuiPrefabHelper(MyTextsWrapperEnum.p511_a17_billboard_portrait_1));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P511_A17_BILLBOARD_PORTRAIT_2, new MyGuiPrefabHelper(MyTextsWrapperEnum.p511_a17_billboard_portrait_2));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P511_A18_BILLBOARD, new MyGuiPrefabHelper(MyTextsWrapperEnum.p511_a18_billboard));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P511_A19_BILLBOARD, new MyGuiPrefabHelper(MyTextsWrapperEnum.p511_a19_billboard));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.DEAD_PILOT, new MyGuiPrefabHelper(MyTextsWrapperEnum.DeadPilot));\n\n\n            #endregion\n\n            #region PrefabContainer\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PrefabContainer, (int)MyMwcObjectBuilder_PrefabContainer_TypesEnum.TEMPLATE,\n                new MyGuiHelperBase(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Alarm\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy), MyTextsWrapperEnum.EmptyDescription));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PrefabContainer, (int)MyMwcObjectBuilder_PrefabContainer_TypesEnum.INSTANCE,\n                new MyGuiHelperBase(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Alarm\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy), MyTextsWrapperEnum.EmptyDescription));\n            #endregion\n\n            #region InfluenceSpheres\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.InfluenceSphere, 0,\n                new MyGuiHelperBase(MyTextsWrapperEnum.EmptyDescription));\n\n            #endregion\n\n            #region Create Prefab Light Helpers (also included in Prefab helpers)\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PrefabLight, (int)MyMwcObjectBuilder_PrefabLight_TypesEnum.DEFAULT_LIGHT_0, new MyGuiPrefabHelper(MyTextsWrapperEnum.default_light_0));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PrefabLight, (int)MyMwcObjectBuilder_PrefabLight_TypesEnum.P521_A01_LIGHT1, new MyGuiPrefabHelper(MyTextsWrapperEnum.p521_a01_light1));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PrefabLight, (int)MyMwcObjectBuilder_PrefabLight_TypesEnum.P521_A02_LIGHT2, new MyGuiPrefabHelper(MyTextsWrapperEnum.p521_a02_light2));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PrefabLight, (int)MyMwcObjectBuilder_PrefabLight_TypesEnum.P521_A03_LIGHT3, new MyGuiPrefabHelper(MyTextsWrapperEnum.p521_a03_light3));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PrefabLight, (int)MyMwcObjectBuilder_PrefabLight_TypesEnum.P521_A04_LIGHT4, new MyGuiPrefabHelper(MyTextsWrapperEnum.p521_a04_light4));\n\n            #endregion\n\n            #region Prefab particles\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PrefabParticles, (int)MyMwcObjectBuilder_PrefabParticles_TypesEnum.DEFAULT_PARTICLE_PREFAB_0, new MyGuiPrefabHelper(MyTextsWrapperEnum.default_particles_prefab_0));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PrefabParticles, (int)MyMwcObjectBuilder_PrefabParticles_TypesEnum.P551_A01_PARTICLES, new MyGuiPrefabHelper(MyTextsWrapperEnum.p551_a01_particles));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PrefabParticles, (int)MyMwcObjectBuilder_PrefabParticles_TypesEnum.P551_B01_PARTICLES, new MyGuiPrefabHelper(MyTextsWrapperEnum.p551_b01_particles));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PrefabParticles, (int)MyMwcObjectBuilder_PrefabParticles_TypesEnum.P551_C01_PARTICLES, new MyGuiPrefabHelper(MyTextsWrapperEnum.p551_c01_particles));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PrefabParticles, (int)MyMwcObjectBuilder_PrefabParticles_TypesEnum.P551_D01_PARTICLES, new MyGuiPrefabHelper(MyTextsWrapperEnum.p551_d01_particles));\n            #endregion\n\n            #region Prefab sound\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PrefabSound, (int)MyMwcObjectBuilder_PrefabSound_TypesEnum.DEFAULT_SOUND_PREFAB_0, new MyGuiPrefabHelper(MyTextsWrapperEnum.default_sound_prefab_0));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PrefabSound, (int)MyMwcObjectBuilder_PrefabSound_TypesEnum.P561_A01_SOUND, new MyGuiPrefabHelper(MyTextsWrapperEnum.p561_a01_sound));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PrefabSound, (int)MyMwcObjectBuilder_PrefabSound_TypesEnum.P561_B01_SOUND, new MyGuiPrefabHelper(MyTextsWrapperEnum.p561_b01_sound));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PrefabSound, (int)MyMwcObjectBuilder_PrefabSound_TypesEnum.P561_C01_SOUND, new MyGuiPrefabHelper(MyTextsWrapperEnum.p561_c01_sound));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PrefabSound, (int)MyMwcObjectBuilder_PrefabSound_TypesEnum.P561_D01_SOUND, new MyGuiPrefabHelper(MyTextsWrapperEnum.p561_d01_sound));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PrefabSound, (int)MyMwcObjectBuilder_PrefabSound_TypesEnum.MOTHERSHIP_SOUND, new MyGuiPrefabHelper(MyTextsWrapperEnum.mothership_sound));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PrefabSound, (int)MyMwcObjectBuilder_PrefabSound_TypesEnum.MADELINE_MOTHERSHIP_SOUND, new MyGuiPrefabHelper(MyTextsWrapperEnum.madeline_mothership_sound));\n            #endregion\n\n            #region Prefab kinematic\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PrefabKinematic, (int)MyMwcObjectBuilder_PrefabKinematic_TypesEnum.P415_C01_DOOR1, \n                new MyGuiPrefabHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Doors\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy), MyTextsWrapperEnum.p415_c01_door1));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PrefabKinematic, (int)MyMwcObjectBuilder_PrefabKinematic_TypesEnum.P415_C01_DOOR2, \n                new MyGuiPrefabHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Doors\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy), MyTextsWrapperEnum.p415_c01_door2));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PrefabKinematic, (int)MyMwcObjectBuilder_PrefabKinematic_TypesEnum.P415_C01_DOOR3, \n                new MyGuiPrefabHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Doors\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy), MyTextsWrapperEnum.p415_c01_door3));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PrefabKinematic, (int)MyMwcObjectBuilder_PrefabKinematic_TypesEnum.P415_C01_DOOR4, \n                new MyGuiPrefabHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Doors\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy), MyTextsWrapperEnum.p415_c01_door4));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PrefabKinematic, (int)MyMwcObjectBuilder_PrefabKinematic_TypesEnum.P341_A01_OPEN_DOCK_VARIATION1, \n                new MyGuiPrefabHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Doors\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy), MyTextsWrapperEnum.p341_a01_open_dock_variation1));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PrefabKinematic, (int)MyMwcObjectBuilder_PrefabKinematic_TypesEnum.P415_A01_DOORCASE, \n                new MyGuiPrefabHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Doors\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy), MyTextsWrapperEnum.p415_a01_doorcase));\n            #endregion\n\n            #region Create Ore Helpers\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Ore, (int)MyMwcObjectBuilder_Ore_TypesEnum.COBALT,\n                new MyGuiOreHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\OreCobalt\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.OreCobalt, MyTextsWrapperEnum.OreCobaltName));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Ore, (int)MyMwcObjectBuilder_Ore_TypesEnum.CONCRETE,\n                new MyGuiOreHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\OreConcrete\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.OreConcrete, MyTextsWrapperEnum.OreConcreteName));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Ore, (int)MyMwcObjectBuilder_Ore_TypesEnum.GOLD,\n                new MyGuiOreHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\OreGold\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.OreGold, MyTextsWrapperEnum.OreGoldName));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Ore, (int)MyMwcObjectBuilder_Ore_TypesEnum.HELIUM,\n                new MyGuiOreHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\OreHelium\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.OreHelium, MyTextsWrapperEnum.OreHeliumName));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Ore, (int)MyMwcObjectBuilder_Ore_TypesEnum.ICE,\n                new MyGuiOreHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\OreIce\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.OreIce, MyTextsWrapperEnum.OreIceName));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Ore, (int)MyMwcObjectBuilder_Ore_TypesEnum.INDESTRUCTIBLE,\n            //    new MyGuiSmallShipHelperOre(MyTextsWrapperEnum.OreIndestructible));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Ore, (int)MyMwcObjectBuilder_Ore_TypesEnum.IRON,\n                new MyGuiOreHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\OreIron\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.OreIron, MyTextsWrapperEnum.OreIronName));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Ore, (int)MyMwcObjectBuilder_Ore_TypesEnum.MAGNESIUM,\n                new MyGuiOreHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\OreMagnesium\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.OreMagnesium, MyTextsWrapperEnum.OreMagnesiumName));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Ore, (int)MyMwcObjectBuilder_Ore_TypesEnum.NICKEL,\n                new MyGuiOreHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\OreNickel\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.OreNickel, MyTextsWrapperEnum.OreNickelName));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Ore, (int)MyMwcObjectBuilder_Ore_TypesEnum.ORGANIC,\n                new MyGuiOreHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\OreOrganic\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.OreOrganic, MyTextsWrapperEnum.OreOrganicName));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Ore, (int)MyMwcObjectBuilder_Ore_TypesEnum.PLATINUM,\n                new MyGuiOreHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\OrePlatinum\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.OrePlatinum, MyTextsWrapperEnum.OrePlatinumName));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Ore, (int)MyMwcObjectBuilder_Ore_TypesEnum.SANDSTONE,\n                new MyGuiOreHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\OreSandstone\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.OreSandstone, MyTextsWrapperEnum.OreSandstoneName));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Ore, (int)MyMwcObjectBuilder_Ore_TypesEnum.SILICON,\n                new MyGuiOreHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\OreSilicon\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.OreSilicon, MyTextsWrapperEnum.OreSiliconName));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Ore, (int)MyMwcObjectBuilder_Ore_TypesEnum.SILVER,\n                new MyGuiOreHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\OreSilver\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.OreSilver, MyTextsWrapperEnum.OreSilverName));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Ore, (int)MyMwcObjectBuilder_Ore_TypesEnum.STONE,\n                new MyGuiOreHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\OreStone\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.OreStone, MyTextsWrapperEnum.OreStoneName));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Ore, (int)MyMwcObjectBuilder_Ore_TypesEnum.TREASURE,\n                new MyGuiOreHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\OreTreasure\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.OreTreasure, MyTextsWrapperEnum.OreTreasureName));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Ore, (int)MyMwcObjectBuilder_Ore_TypesEnum.URANITE,\n                new MyGuiOreHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\OreUranite\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.OreUranite, MyTextsWrapperEnum.OreUraniteName));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Ore, (int)MyMwcObjectBuilder_Ore_TypesEnum.XENON,\n                new MyGuiOreHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\OreXenon\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.OreXenon, MyTextsWrapperEnum.None));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Ore, (int)MyMwcObjectBuilder_Ore_TypesEnum.LAVA,\n                new MyGuiOreHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\OreLava\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.OreLava, MyTextsWrapperEnum.OreLavaName));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Ore, (int)MyMwcObjectBuilder_Ore_TypesEnum.SNOW,\n                new MyGuiOreHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\OreSnow\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.OreSnow, MyTextsWrapperEnum.OreSnowName));\n            #endregion\n\n            #region Create Blueprints Helpers\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P430_A01_PASSAGE_10M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p430_a01_passage_10m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P430_A02_PASSAGE_40M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p430_a02_passage_40m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P424_A01_PIPE_BASE, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p424_a01_pipe_base));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P423_A01_PIPE_JUNCTION, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p423_a01_pipe_junction));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P422_A01_PIPE_TURN_90, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p422_a01_pipe_turn_90));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P421_A01_PIPE_STRAIGHT_80M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p421_a01_pipe_straight_80m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P421_A02_PIPE_STRAIGHT_40M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p421_a02_pipe_straight_40m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P421_A03_PIPE_STRAIGHT_10M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p421_a03_pipe_straight_10m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P413_G01_JUNCTION_6AXES, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p413_g01_junction_6axes));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P414_G02_ENTRANCE_60M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p414_g02_entrance_60m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P410_G01_TURN_90_RIGHT_0M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p410_g01_turn_90_right_0m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P411_G01_STRAIGHT_1, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p411_g01_straight_1));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P411_G02_STRAIGHT_2, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p411_g02_straight_2));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P411_G03_STRAIGHT_3, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p411_g03_straight_3));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P411_G04_STRAIGHT_4, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p411_g04_straight_4));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P414_F02_ENTRANCE_60M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p414_f02_entrance_60m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P412_F21_TURN_S_UP, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p412_f21_turn_s_up));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P412_F22_TURN_S_LEFT, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p412_f22_turn_s_left));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P412_F23_TURN_S_RIGHT, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p412_f23_turn_s_right));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P412_F24_TURN_S_DOWN, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p412_f24_turn_s_down));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P412_F01_TURN_90_UP_230M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p412_f01_turn_90_up_230m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P412_F02_TURN_90_LEFT_230M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p412_f02_turn_90_left_230m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P412_F03_TURN_90_RIGHT_230M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p412_f03_turn_90_right_230m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P412_F04_TURN_90_DOWN_230M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p412_f04_turn_90_down_230m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P411_F01_STRAIGHT_1, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p411_f01_straight_1));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P411_F02_STRAIGHT_2, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p411_f02_straight_2));\n\n            /*\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P415_C02_DOOR1_LEFT, new MyGuiPrefabHelper(MyTextsWrapperEnum.No));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P415_C02_DOOR1_RIGHT, new MyGuiPrefabHelper(MyTextsWrapperEnum.No));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P415_C03_DOOR2_A, new MyGuiPrefabHelper(MyTextsWrapperEnum.No));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P415_C03_DOOR2_B, new MyGuiPrefabHelper(MyTextsWrapperEnum.No));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P415_C03_DOOR2_A_LEFT, new MyGuiPrefabHelper(MyTextsWrapperEnum.No));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P415_C03_DOOR2_A_RIGHT, new MyGuiPrefabHelper(MyTextsWrapperEnum.No));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P415_C03_DOOR2_B_LEFT, new MyGuiPrefabHelper(MyTextsWrapperEnum.No));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P415_C03_DOOR2_B_RIGHT, new MyGuiPrefabHelper(MyTextsWrapperEnum.No));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P341_A01_OPEN_DOCK_VARIATION1_DOORLEFT, new MyGuiPrefabHelper(MyTextsWrapperEnum.No));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P341_A01_OPEN_DOCK_VARIATION1_DOORRIGHT, new MyGuiPrefabHelper(MyTextsWrapperEnum.No));\n            */\n            /*\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P411_F02_STRAIGHT_2, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.No));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P411_F02_STRAIGHT_2, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.No));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P411_F02_STRAIGHT_2, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.No));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P411_F02_STRAIGHT_2, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.No));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P411_F02_STRAIGHT_2, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.No));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P411_F02_STRAIGHT_2, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.No));\n            */\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P411_F03_STRAIGHT_3, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p411_f03_straight_3));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P414_E01_ENTRANCE_60M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p414_e01_entrance_60m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P411_E01_STRAIGHT_1, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p411_e01_straight_1));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P411_E02_STRAIGHT_2, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p411_e02_straight_2));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P411_E03_STRAIGHT_3, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p411_e03_straight_3));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P411_E04_STRAIGHT_4, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p411_e04_straight_4));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P411_E05_STRAIGHT_5, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p411_e05_straight_5));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P415_D01_DOORCASE, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p415_d01_doorcase));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P415_D02_DOOR1, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p415_d02_door1));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P415_D03_DOOR2_A, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p415_d03_door2_a));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P415_D03_DOOR2_B, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p415_d03_door2_b));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P413_D01_JUNCTION_T_HORIZONTAL, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p413_d01_junction_t_horizontal));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P413_D03_JUNCTION_X_HORIZONTAL, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p413_d03_junction_x_horizontal));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P414_D01_ENTRANCE_60M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p414_d01_entrance_60m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P411_D01_STRAIGHT_10M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p411_d01_straight_10m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P411_D02_STRAIGHT_40M_WITH_HOLE, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p411_d02_straight_40m_with_hole));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P411_D03_STRAIGHT_60M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p411_d03_straight_60m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P411_D04_STRAIGHT_120M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p411_d04_straight_120m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P411_D05_STRAIGHT_180M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p411_d05_straight_180m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P415_C01_DOOR1, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p415_c01_door1));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P415_C01_DOOR2, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p415_c01_door2));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P415_C01_DOOR3, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p415_c01_door3));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P415_C01_DOOR4, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p415_c01_door4));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P413_C01_JUNCTION_T_HORIZONTAL, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p413_c01_junction_t_horizontal));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P413_C01_JUNCTION_X_HORIZONTAL, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p413_c01_junction_x_horizontal));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P414_C01_ENTRANCE_60M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p414_c01_entrance_60m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P411_C01_STRAIGHT_10M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p411_c01_straight_10m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P411_C02_STRAIGHT_40M_WITH_HOLE, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p411_c02_straight_40m_with_hole));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P411_C03_STRAIGHT_60M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p411_c03_straight_60m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P411_C04_STRAIGHT_120M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p411_c04_straight_120m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P411_C05_STRAIGHT_180M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p411_c05_straight_180m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P415_B01_DOORCASE, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p415_b01_doorcase));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P415_B02_DOOR, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p415_b02_door));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P413_B01_JUNCTION_T_HORIZONTAL, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p413_b01_junction_t_horizontal));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P413_B02_JUNCTION_T_VERTICAL, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p413_b02_junction_t_vertical));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P414_B02_ENTRANCE_60M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p414_b02_entrance_60m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P412_B21_TURN_S_UP, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p412_b21_turn_s_up));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P412_B22_TURN_S_LEFT, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p412_b22_turn_s_left));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P412_B23_TURN_S_RIGHT, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p412_b23_turn_s_right));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P412_B24_TURN_S_DOWN, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p412_b24_turn_s_down));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P412_B11_TURN_90_UP_160M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p412_b11_turn_90_up_160m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P412_B12_TURN_90_LEFT_160M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p412_b12_turn_90_left_160m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P412_B13_TURN_90_RIGHT_160M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p412_b13_turn_90_right_160m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P412_B14_TURN_90_DOWN_160M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p412_b14_turn_90_down_160m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P412_B01_TURN_90_UP_80M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p412_b01_turn_90_up_80m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P412_B02_TURN_90_LEFT_80M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p412_b02_turn_90_left_80m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P412_B03_TURN_90_RIGHT_80M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p412_b03_turn_90_right_80m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P412_B04_TURN_90_DOWN_80M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p412_b04_turn_90_down_80m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P411_B01_STRAIGHT_10M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p411_b01_straight_10m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.p411_B02_STRAIGHT_30M_YELLOW, new MyGuiPrefabHelper(MyTextsWrapperEnum.Blueprint_p411_b02_straight_30m_yellow));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.p411_B03_STRAIGHT_320M, new MyGuiPrefabHelper(MyTextsWrapperEnum.Blueprint_p411_b03_straight_320m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.p411_B04_STRAIGHT_80M_WITH_SIDE_GRATES, new MyGuiPrefabHelper(MyTextsWrapperEnum.Blueprint_p411_b04_straight_80m_with_side_grates));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.p411_B05_STRAIGHT_80M_WITH_SIDE_OPEN, new MyGuiPrefabHelper(MyTextsWrapperEnum.Blueprint_p411_b05_straight_80m_with_side_open));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.p411_B06_STRAIGHT_180M_CONCRETE, new MyGuiPrefabHelper(MyTextsWrapperEnum.Blueprint_p411_b06_straight_180m_concrete));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.p411_B06_STRAIGHT_200M, new MyGuiPrefabHelper(MyTextsWrapperEnum.Blueprint_p411_b06_straight_200m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.p411_B07_STRAIGHT_180M_BLUE, new MyGuiPrefabHelper(MyTextsWrapperEnum.Blueprint_p411_b07_straight_180m_blue));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.p411_B09_STRAIGHT_30M_GRAY, new MyGuiPrefabHelper(MyTextsWrapperEnum.Blueprint_p411_b09_straight_30m_gray));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.p411_B11_STRAIGHT_220M, new MyGuiPrefabHelper(MyTextsWrapperEnum.Blueprint_p411_b11_straight_220m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.p411_B12_STRAIGHT_160M_DARK_METAL, new MyGuiPrefabHelper(MyTextsWrapperEnum.Blueprint_p411_b12_straight_160m_dark_metal));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.p411_B13_STRAIGHT_100M_TUBE_INSIDE, new MyGuiPrefabHelper(MyTextsWrapperEnum.Blueprint_p411_b13_straight_100m_tube_inside));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P415_A01_DOORCASE, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p415_a01_doorcase));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P415_A02_DOOR, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p415_a02_door));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P413_A01_JUNCTION_T_HORIZONTAL, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p413_a01_junction_t_horizontal));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P413_A02_JUNCTION_T_VERTICAL, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p413_a02_junction_t_vertical));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P414_A01_ENTRANCE_30M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p414_a01_entrance_30m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P414_A02_ENTRANCE_60M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p414_a02_entrance_60m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P412_A21_TURN_S_UP, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p412_a21_turn_s_up));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P412_A22_TURN_S_LEFT, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p412_a22_turn_s_left));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P412_A23_TURN_S_RIGHT, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p412_a23_turn_s_right));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P412_A24_TURN_S_DOWN, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p412_a24_turn_s_down));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P412_A11_TURN_90_UP_160M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p412_a11_turn_90_up_160m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P412_A12_TURN_90_LEFT_160M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p412_a12_turn_90_left_160m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P412_A13_TURN_90_RIGHT_160M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p412_a13_turn_90_right_160m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P412_A14_TURN_90_DOWN_160M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p412_a14_turn_90_down_160m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P412_A01_TURN_90_UP_80M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p412_a01_turn_90_up_80m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P412_A02_TURN_90_LEFT_80M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p412_a02_turn_90_left_80m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P412_A03_TURN_90_RIGHT_80M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p412_a03_turn_90_right_80m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P412_A04_TURN_90_DOWN_80M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p412_a04_turn_90_down_80m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P411_A01_STRAIGHT_10M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p411_a01_straight_10m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P411_A02_STRAIGHT_60M_WITH_HOLE, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p411_a02_straight_60m_with_hole));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P411_A03_STRAIGHT_120M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p411_a03_straight_120m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P411_A04_STRAIGHT_80M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p411_a04_straight_80m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P411_A05_STRAIGHT_80M_WITH_EXTENSION, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p411_a05_straight_80m_with_extension));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P382_E01_BRIDGE5, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p382_e01_bridge5));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P382_D01_BRIDGE4, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p382_d01_bridge4));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P382_C01_BRIDGE3, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p382_c01_bridge3));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P382_B01_BRIDGE2, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p382_b01_bridge2));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P382_A01_BRIDGE1, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p382_a01_bridge1));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P381_C01_BUILDING3, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p381_c01_building3));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P381_B01_BUILDING2, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p381_b01_building2));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P381_A01_BUILDING1, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p381_a01_building1));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P361_A01_SMALL_HANGAR, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p361_a01_small_hangar));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P362_A01_SHORT_DISTANCE_ANTENNA, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p362_a01_short_distance_antenna));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P361_A01_LONG_DISTANCE_ANTENNA, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p361_a01_long_distance_antenna));\n\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P351_A01_WEAPON_MOUNT, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p351_a01_weapon_mount));            \n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P352_A01_LARGESHIP_AUTOCANNON, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p352_a01_largeship_autocannon));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P352_A01_LARGESHIP_CIWS, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p352_a01_largeship_ciws));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P352_A01_LARGESHIP_MACHINEGUN, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p352_a01_largeship_machinegun));            \n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P352_A01_LARGESHIP_MISSILE_BASIC4, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p352_a01_largeship_missile_basic4));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P352_A01_LARGESHIP_MISSILE_BASIC6, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p352_a01_largeship_missile_basic6));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P352_A01_LARGESHIP_MISSILE_BASIC9, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p352_a01_largeship_missile_basic9));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P352_A02_LARGESHIP_MISSILE_GUIDED4, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p352_a02_largeship_missile_guided4));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P352_A02_LARGESHIP_MISSILE_GUIDED6, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p352_a02_largeship_missile_guided6));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P352_A02_LARGESHIP_MISSILE_GUIDED9, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p352_a02_largeship_missile_guided9));\n\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P345_A01_REFINERY, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p345_a01_refinery));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P344_A01_CONTAINER_ARM_FILLED, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p344_a01_container_arm_filled));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P344_A02_CONTAINER_ARM_EMPTY, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p344_a02_container_arm_empty));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P343_A01_ORE_STORAGE, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p343_a01_ore_storage));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P342_A01_LOADING_BAY, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p342_a01_loading_bay));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P341_B01_OPEN_DOCK_VARIATION1, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p341_b01_open_dock_variation1));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P341_B02_OPEN_DOCK_VARIATION2, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p341_b02_open_dock_variation2));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P341_A01_OPEN_DOCK_VARIATION1, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p341_a01_open_dock_variation1));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P341_A02_OPEN_DOCK_VARIATION2, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p341_a02_open_dock_variation2));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P333_A01_HYDROPONIC_BUILDING, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p333_a01_hydroponic_building));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P332_A01_OXYGEN_STORAGE, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p332_a01_oxygen_storage));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P331_A01_OXYGEN_GENERATOR, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p331_a01_oxygen_generator));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P324B01_FUEL_STORAGE_B, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p324b01_fuel_storage_b));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P324A01_FUEL_STORAGE_A, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p324a01_fuel_storage_a));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P323A01_FUEL_GENERATOR, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p323a01_fuel_generator));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P322A01_BATTERY, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p322a01_battery));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P321C01_INERTIA_GENERATOR, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p321c01_inertia_generator));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P321B01_NUCLEAR_REACTOR, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p321b01_nuclear_reactor));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P321A01_SOLAR_PANEL, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p321a01_solar_panel));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P312A01_SHORT_TERM_THRUSTER_LATITUDE, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p312a01_short_term_thruster_latitude));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P312A02_SHORT_TERM_THRUSTER_LATERAL, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p312a02_short_term_thruster_lateral));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P311A01_LONG_TERM_THRUSTER, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p311a01_long_term_thruster));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P231A01_ARMOR, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p231a01_armor));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P231A02_ARMOR, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p231a02_armor));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P231A03_ARMOR, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p231a03_armor));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P231A04_ARMOR, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p231a04_armor));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P231A05_ARMOR, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p231a05_armor));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P231A06_ARMOR, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p231a06_armor));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P231A07_ARMOR, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p231a07_armor));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P231A08_ARMOR, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p231a08_armor));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P231A09_ARMOR, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p231a09_armor));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P231A10_ARMOR, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p231a10_armor));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P231A11_ARMOR, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p231a11_armor));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P231A12_ARMOR, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p231a12_armor));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P231A13_ARMOR, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p231a13_armor));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P231A14_ARMOR, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p231a14_armor));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P231A15_ARMOR, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p231a15_armor));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P231A16_ARMOR, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p231a16_armor));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P231A17_ARMOR, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p231a17_armor));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P231A18_ARMOR, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p231a18_armor));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P221E01_CHAMBER_V1, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p221e01_chamber_v1));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P221D01_CHAMBER_V1, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p221d01_chamber_v1));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P221C01_CHAMBER_V1, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p221c01_chamber_v1));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P221B01_CHAMBER_V1, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p221b01_chamber_v1));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P221A01_CHAMBER_V1, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p221a01_chamber_v1));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P211G01_PANEL_120MX60M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p211g01_panel_120mx60m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P211G02_PANEL_60MX60M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p211g02_panel_60mx60m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P211G03_PANEL_60MX30M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p211g03_panel_60mx30m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P211F01_PANEL_120MX60M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p211f01_panel_120mx60m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P211F02_PANEL_60MX60M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p211f02_panel_60mx60m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P211F03_PANEL_60MX30M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p211f03_panel_60mx30m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P211E01_PANEL_120MX60M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p211e01_panel_120mx60m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P211E02_PANEL_60MX60M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p211e02_panel_60mx60m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P211E03_PANEL_60MX30M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p211e03_panel_60mx30m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P211D01_PANEL_120MX60M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p211d01_panel_120mx60m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P211D02_PANEL_60MX60M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p211d02_panel_60mx60m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P211D03_PANEL_60MX30M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p211d03_panel_60mx30m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P211C01_PANEL_120MX60M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p211c01_panel_120mx60m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P211C02_PANEL_60MX60M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p211c02_panel_60mx60m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P211C03_PANEL_60MX30M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p211c03_panel_60mx30m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P211B01_PANEL_120MX60M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p211b01_panel_120mx60m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P211B02_PANEL_60MX60M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p211b02_panel_60mx60m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P211B03_PANEL_60MX30M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p211b03_panel_60mx30m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P211A01_PANEL_120MX60M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p211a01_panel_120mx60m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P211A02_PANEL_60MX60M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p211a02_panel_60mx60m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P211A03_PANEL_60MX30M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p211a03_panel_60mx30m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P142B01_CAGE_EMPTY, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p142b01_cage_empty));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P142B02_CAGE_HALFCUT, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p142b02_cage_halfcut));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P142B03_CAGE_WITH_CORNERS, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p142b03_cage_with_corners));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P142B11_CAGE_PILLAR, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p142b11_cage_pillar));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P142B12_CAGE_EDGE, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p142b12_cage_edge));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P142A01_CAGE_EMPTY, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p142a01_cage_empty));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P142A02_CAGE_HALFCUT, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p142a02_cage_halfcut));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P142A03_CAGE_WITH_CORNERS, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p142a03_cage_with_corners));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P142A11_CAGE_PILLAR, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p142a11_cage_pillar));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P142A12_CAGE_EDGE, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p142a12_cage_edge));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P141B01_THICK_FRAME_STRAIGHT_10M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p141b01_thick_frame_straight_10m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P141B02_THICK_FRAME_STRAIGHT_60M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p141b02_thick_frame_straight_60m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P141B11_THICK_FRAME_EDGE, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p141b11_thick_frame_edge));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P141B12_THICK_FRAME_CORNER, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p141b12_thick_frame_corner));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P141B31_THICK_FRAME_JOINT, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p141b31_thick_frame_joint));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P141A01_THICK_FRAME_STRAIGHT_10M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p141a01_thick_frame_straight_10m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P141A02_THICK_FRAME_STRAIGHT_60M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p141a02_thick_frame_straight_60m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P141A11_THICK_FRAME_EDGE, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p141a11_thick_frame_edge));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P141A12_THICK_FRAME_CORNER, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p141a12_thick_frame_corner));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P141A31_THICK_FRAME_JOINT, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p141a31_thick_frame_joint));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P120J01_J_STRAIGHT_30M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p120j01_j_straight_30m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P130J02_J_STRAIGHT_10M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p130j02_j_straight_10m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P120I01_I_STRAIGHT_30M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p120i01_i_straight_30m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P130I02_I_STRAIGHT_10M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p130i02_i_straight_10m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P120H01_H_STRAIGHT_30M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p120h01_h_straight_30m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P130H02_H_STRAIGHT_10M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p130h02_h_straight_10m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P120G01_G_STRAIGHT_30M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p120g01_g_straight_30m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P130G02_G_STRAIGHT_10M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p130g02_g_straight_10m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P120F01_F_STRAIGHT_30M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p120f01_f_straight_30m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P130F02_F_STRAIGHT_10M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p130f02_f_straight_10m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P120E01_E_STRAIGHT_30M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p120e01_e_straight_30m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P130E02_E_STRAIGHT_10M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p130e02_e_straight_10m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P120D01_D_STRAIGHT_30M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p120d01_d_straight_30m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P130D02_D_STRAIGHT_10M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p130d02_d_straight_10m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P120C01_C_STRAIGHT_30M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p120c01_c_straight_30m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P130C02_C_STRAIGHT_10M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p130c02_c_straight_10m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P120B01_B_STRAIGHT_30M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p120b01_b_straight_30m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P130B02_B_STRAIGHT_10M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p130b02_b_straight_10m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P120A01_A_STRAIGHT_30M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p120a01_a_straight_30m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P130A02_A_STRAIGHT_10M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p130a02_a_straight_10m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P120D01_D_STRAIGHT_10M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p120d01_d_straight_10m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P120D02_D_STRAIGHT_40M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p120d02_d_straight_40m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P120C01_C_STRAIGHT_10M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p120c01_c_straight_10m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P120C02_C_STRAIGHT_40M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p120c02_c_straight_40m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P120B01_B_STRAIGHT_10M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p120b01_b_straight_10m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P120B02_B_STRAIGHT_40M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p120b02_b_straight_40m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P120A01_STRONG_LATTICE_STRAIGHT_10M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p120a01_strong_lattice_straight_10m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P120A02_STRONG_LATTICE_STRAIGHT_60M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p120a02_strong_lattice_straight_60m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P120A03_STRONG_LATTICE_STRAIGHT_120M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p120a03_strong_lattice_straight_120m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P120A21_STRONG_LATTICE_JUNCTION_T_STRONG, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p120a21_strong_lattice_junction_t_strong));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P120A22_STRONG_LATTICE_JUNCTION_T_WEAK, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p120a22_strong_lattice_junction_t_weak));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P120A23_STRONG_LATTICE_JUNCTION_T_ROTATED, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p120a23_strong_lattice_junction_t_rotated));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P120A51_STRONG_TO_WEAK_LATTICE_2TO1, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p120a51_strong_to_weak_lattice_2to1));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P120A52_STRONG_TO_WEAK_LATTICE_1TO2, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p120a52_strong_to_weak_lattice_1to2));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P120A61_WEAK_LATTICE_JUNCTION_T_ROTATED, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p120a61_weak_lattice_junction_t_rotated));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P110B01_LATTICE_BEAM_STRAIGHT_10M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p110b01_lattice_beam_straight_10m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P110B02_LATTICE_BEAM_STRAIGHT_30M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p110b02_lattice_beam_straight_30m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P110B03_LATTICE_BEAM_STRAIGHT_60M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p110b03_lattice_beam_straight_60m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P110B04_LATTICE_BEAM_STRAIGHT_60M_WITH_PANELS, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p110b04_lattice_beam_straight_60m_with_panels));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P110B21_LATTICE_BEAM_JUNCTION_T_STRONG, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p110b21_lattice_beam_junction_t_strong));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P110B22_LATTICE_BEAM_JUNCTION_T_WEAK, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p110b22_lattice_beam_junction_t_weak));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P110B31_LATTICE_BEAM_JOINT_HORIZONTAL, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p110b31_lattice_beam_joint_horizontal));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P110B32_LATTICE_BEAM_JOINT_VERTICAL, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p110b32_lattice_beam_joint_vertical));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P110A01_SOLID_BEAM_STRAIGHT_10M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p110a01_solid_beam_straight_10m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P110A02_SOLID_BEAM_STRAIGHT_20M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p110a02_solid_beam_straight_20m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P110A03_SOLID_BEAM_STRAIGHT_40M_WITH_HOLE, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p110a03_solid_beam_straight_40m_with_hole));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P110A04_SOLID_BEAM_STRAIGHT_40M_LATTICE, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p110a04_solid_beam_straight_40m_lattice));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P110A05_SOLID_BEAM_STRAIGHT_80M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p110a05_solid_beam_straight_80m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P110A11_SOLID_BEAM_JUNCTION_X_STRONG, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p110a11_solid_beam_junction_x_strong));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P110A12_SOLID_BEAM_JUNCTION_X_WEAK, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p110a12_solid_beam_junction_x_weak));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P110A13_SOLID_BEAM_JUNCTION_X_ROTATED, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p110a13_solid_beam_junction_x_rotated));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P110A21_SOLID_BEAM_JUNCTION_T_STRONG, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p110a21_solid_beam_junction_t_strong));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P110A22_SOLID_BEAM_JUNCTION_T_WEAK, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p110a22_solid_beam_junction_t_weak));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P110A23_SOLID_BEAM_JUNCTION_T_ROTATED, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p110a23_solid_beam_junction_t_rotated));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P110A31_SOLID_BEAM_JOINT_HORIZONTAL, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p110a31_solid_beam_joint_horizontal));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P110A32_SOLID_BEAM_JOINT_VERTICAL, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p110a32_solid_beam_joint_vertical));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P110A33_SOLID_BEAM_JOINT_LONGITUDINAL, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p110a33_solid_beam_joint_longitudinal));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P110A41_SOLID_BEAM_SUPERJOINT, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p110a41_solid_beam_superjoint));\n            ////@ Lights\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.DEFAULT_LIGHT_0, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_default_light_0));\n\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P521_A01_LIGHT1, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p521_a01_light1));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P521_A02_LIGHT2, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p521_a02_light2));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P521_A03_LIGHT3, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p521_a03_light3));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P521_A04_LIGHT4, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p521_a04_light4));\n\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.DEFAULT_PARTICLE_PREFAB_0, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_default_particle_prefab_0));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P551_A01_PARTICLES, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p551_a01_particles));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P551_B01_PARTICLES, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p551_b01_particles));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P551_C01_PARTICLES, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p551_c01_particles));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P551_D01_PARTICLES, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p551_d01_particles));\n\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.DEFAULT_SOUND_PREFAB_0, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_default_sound_prefab_0));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P561_A01_SOUND, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p561_a01_sound));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P561_B01_SOUND, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p561_b01_sound));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P561_C01_SOUND, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p561_c01_sound));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P561_D01_SOUND, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p561_d01_sound));\n\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P511_A01_BILLBOARD, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p511_a01_billboard));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P511_A02_BILLBOARD, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p511_a02_billboard));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P511_A03_BILLBOARD, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p511_a03_billboard));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P511_A04_BILLBOARD, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p511_a04_billboard));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P511_A05_BILLBOARD, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p511_a05_billboard));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P511_A06_BILLBOARD, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p511_a06_billboard));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P511_A07_BILLBOARD, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p511_a07_billboard));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P511_A08_BILLBOARD, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p511_a08_billboard));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P511_A09_BILLBOARD, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p511_a09_billboard));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P511_A10_BILLBOARD, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p511_a10_billboard));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P511_A11_BILLBOARD, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p511_a11_billboard));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P511_A12_BILLBOARD, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p511_a12_billboard));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P511_A13_BILLBOARD, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p511_a13_billboard));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P511_A14_BILLBOARD, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p511_a14_billboard));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P511_A15_BILLBOARD, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p511_a15_billboard));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P511_A16_BILLBOARD, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p511_a16_billboard));\n\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P531_A01_SIGN1, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p531_a01_sign1));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P531_A02_SIGN2, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p531_a02_sign2));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P531_A03_SIGN3, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p531_a03_sign3));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P531_A04_SIGN4, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p531_a04_sign4));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P531_A05_SIGN5, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p531_a05_sign5));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P531_A06_SIGN6, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p531_a06_sign6));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P531_A07_SIGN7, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p531_a07_sign7));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P531_A08_SIGN8, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p531_a08_sign8));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P531_A09_SIGN9, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p531_a09_sign9));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P531_A10_SIGN10, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p531_a10_sign10));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P531_A11_SIGN11, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p531_a11_sign11));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P531_A12_SIGN12, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p531_a12_sign12));\n\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P221_A02_CHAMBER_V2, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p221_a02_chamber_v2));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P221_B02_CHAMBER_V2, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p221_b02_chamber_v2));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P221_C02_CHAMBER_V2, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p221_c02_chamber_v2));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P221_D02_CHAMBER_V2, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p221_d02_chamber_v2));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P221_E02_CHAMBER_V2, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p221_e02_chamber_v2));\n\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P130_A01_STRAIGHT_10M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p130_a01_straight_10m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P130_A02_STRAIGHT_30M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p130_a02_straight_30m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P130_B01_STRAIGHT_10M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p130_b01_straight_10m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P130_B02_STRAIGHT_30M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p130_b02_straight_30m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P130_C01_STRAIGHT_10M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p130_c01_straight_10m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P130_C02_STRAIGHT_30M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p130_c02_straight_30m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P130_D01_STRAIGHT_10M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p130_d01_straight_10m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P130_D02_STRAIGHT_30M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p130_d02_straight_30m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P130_E01_STRAIGHT_10M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p130_e01_straight_10m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P130_E02_STRAIGHT_30M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p130_e02_straight_30m));\n\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P321_B01_SOLAR_PANEL, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p321_b01_solar_panel));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P321_C01_SOLAR_PANEL, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p321_c01_solar_panel));\n\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P413_D02_JUNCTION_T_VERTICAL, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p413_d02_junction_t_vertical));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P413_D04_JUNCTION_X_VERTICAL, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p413_d04_junction_x_vertical));\n\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P412_F11_TURN_90_UP_230M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p412_f11_turn_90_up_230m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P412_F12_TURN_90_LEFT_230M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p412_f12_turn_90_left_230m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P412_F13_TURN_90_RIGHT_230M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p412_f13_turn_90_right_230m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P412_F14_TURN_90_DOWN_230M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p412_f14_turn_90_down_230m));\n\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P411_F04_STRAIGHT_4, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p411_f04_straight_4));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P411_F05_STRAIGHT_5, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p411_f05_straight_5));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P411_G05_STRAIGHT_5, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p411_g05_straight_5));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P414_F01_ENTRANCE_60M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p414_f01_entrance_60m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P414_G01_ENTRANCE_60M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p414_g01_entrance_60m));\n\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P571_A01_TRAFFIC_SIGN, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p571_a01_traffic_sign));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P571_B01_TRAFFIC_SIGN, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p571_b01_traffic_sign));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P571_BOX01_TRAFFIC_SIGN, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p571_box01_traffic_sign));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P571_BOX02_TRAFFIC_SIGN, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p571_box02_traffic_sign));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P571_C01_TRAFFIC_SIGN, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p571_c01_traffic_sign));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P571_D01_TRAFFIC_SIGN, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p571_d01_traffic_sign));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P571_E01_TRAFFIC_SIGN, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p571_e01_traffic_sign));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P571_F01_TRAFFIC_SIGN, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p571_f01_traffic_sign));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P571_G01_TRAFFIC_SIGN, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p571_g01_traffic_sign));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P571_H01_TRAFFIC_SIGN, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p571_h01_traffic_sign));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P571_I01_TRAFFIC_SIGN, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p571_i01_traffic_sign));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P571_J01_TRAFFIC_SIGN, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p571_j01_traffic_sign));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P571_K01_TRAFFIC_SIGN, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p571_k01_traffic_sign));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P571_L01_TRAFFIC_SIGN, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p571_l01_traffic_sign));\n\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.SMALL_SHIP_WEAPON_AUTOCANNON, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_SmallShipWeapon_Autocanon));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.SMALL_SHIP_WEAPON_AUTOMATIC_RIFLE_WITH_SILENCER, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_SmallShipWeapon_AutomaticRifleWithSilencer));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.SMALL_SHIP_WEAPON_CANNON, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_SmallShipWeapon_Cannon));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.SMALL_SHIP_WEAPON_DRILLING_DEVICE_CRUSHER, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_SmallShipWeapon_DrillingDeviceCrusher));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.SMALL_SHIP_WEAPON_DRILLING_DEVICE_LASER, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_SmallShipWeapon_DrillingDeviceLaser));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.SMALL_SHIP_WEAPON_DRILLING_DEVICE_NUCLEAR, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_SmallShipWeapon_DrillingDeviceNuclear));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.SMALL_SHIP_WEAPON_DRILLING_DEVICE_SAW, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_SmallShipWeapon_DrillingDeviceSaw));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.SMALL_SHIP_WEAPON_DRILLING_DEVICE_THERMAL, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_SmallShipWeapon_DrillingDeviceThermal));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.SMALL_SHIP_WEAPON_DRILLING_DEVICE_PRESSURE, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_SmallShipWeapon_DrillingDevicePressure));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.SMALL_SHIP_WEAPON_HARVESTING_DEVICE, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_SmallShipWeapon_HarvestingDevice));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.SMALL_SHIP_WEAPON_MACHINE_GUN, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_SmallShipWeapon_MachineGun));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.SMALL_SHIP_WEAPON_MISSILE_LAUNCHER, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_SmallShipWeapon_MissileLauncher));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.SMALL_SHIP_WEAPON_SHOTGUN, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_SmallShipWeapon_Shotgun));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.SMALL_SHIP_WEAPON_SNIPER, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_SmallShipWeapon_Sniper));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.SMALL_SHIP_WEAPON_UNIVERSAL_LAUNCHER_BACK, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_SmallShipWeapon_UniversalLauncherBack));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.SMALL_SHIP_WEAPON_UNIVERSAL_LAUNCHER_FRONT, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_SmallShipWeapon_UniversalLauncherFront));\n\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P385_A01_TEMPLE_900M, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p385_a01_temple_900m));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P384_A01_HOSPITAL, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p384_a01_hospital));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P383_A01_CHURCH, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p383_a01_church));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P334_A01_FOOD_GROW, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p334_a01_food_grow));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P345_A01_BIO_EXP, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p345_a01_bio_exp));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P345_A01_BIO_MACH_EXP, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p345_a01_bio_mach_exp));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P345_A01_RECYCLE, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p345_a01_recycle));\n\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P541_ESCAPE_POD, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p541_escape_pod));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P541_ESCAPE_POD_BASE, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p541_escape_pod_base));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P541_VENTILATOR_BODY, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p541_ventilator_body));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P541_VENTILATOR_PROPELLER, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p541_ventilator_propeller));\n\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P349_A_TOWER, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p349_a_tower));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P349_B_TOWER, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p349_b_tower));\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P349_C_TOWER, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.Blueprint_p349_c_tower));\n\n            //AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.P361_A02_HANGAR_PANEL, new MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum.p361_a02_hangar_panel));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit, \n                new MyGuiSmallShipHelperBlueprint(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\BlueprintAdvancedConstructionKit\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.BlueprintAdvancedConstructionKit));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit,\n                new MyGuiSmallShipHelperBlueprint(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\BlueprintBasicConstructionKit\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.BlueprintBasicConstructionKit));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.FortificationKit,\n                new MyGuiSmallShipHelperBlueprint(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\BlueprintFortificationKit\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.BlueprintFortificationKit));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.HonorableKit,\n                new MyGuiSmallShipHelperBlueprint(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\BlueprintHonorableKit\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.BlueprintHonorableKit));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.SuperiorConstructionKit,\n                new MyGuiSmallShipHelperBlueprint(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\BlueprintSuperiorConstructionKit\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.BlueprintSuperiorConstructionKit));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.UtilitiesKit,\n                new MyGuiSmallShipHelperBlueprint(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\BlueprintUtilitiesKit\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.BlueprintUtilitiesKit));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.WeaponKit,\n                new MyGuiSmallShipHelperBlueprint(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\BlueprintWeaponKit\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.BlueprintWeaponKit));\n            #endregion\n\n            #region Foundation factory\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.FoundationFactory, 0, new MyGuiFoundationFactoryHelper(MyTextsWrapperEnum.FoundationFactory));\n            #endregion\n\n            #region Spawn point\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SpawnPoint, 0,\n                new MyGuiHelperBase(MyTextsWrapperEnum.EmptyDescription));\n            #endregion\n\n            #region Inventory\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Inventory, 0,\n                new MyGuiHelperBase(MyTextsWrapperEnum.EmptyDescription));\n            #endregion\n\n            #region Inventory item\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.InventoryItem, 0,\n                new MyGuiHelperBase(MyTextsWrapperEnum.EmptyDescription));\n            #endregion\n\n            #region Checkpoint\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Checkpoint, 0,\n                new MyGuiHelperBase(MyTextsWrapperEnum.EmptyDescription));\n            #endregion\n\n            #region Player\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Player, 0,\n                new MyGuiHelperBase(MyTextsWrapperEnum.EmptyDescription));\n            #endregion\n\n            #region Player statistics\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PlayerStatistics, 0,\n                new MyGuiHelperBase(MyTextsWrapperEnum.EmptyDescription));\n            #endregion\n\n            #region Session\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Session, 0,\n                new MyGuiHelperBase(MyTextsWrapperEnum.EmptyDescription));\n            #endregion\n\n            #region Event\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Event, 0,\n                new MyGuiHelperBase(MyTextsWrapperEnum.EmptyDescription));\n            #endregion\n\n            #region Object to build\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.ObjectToBuild, 0,\n                new MyGuiHelperBase(MyTextsWrapperEnum.EmptyDescription));\n            #endregion\n\n            #region Object Group\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.ObjectGroup, 0,\n                new MyGuiHelperBase(MyTextsWrapperEnum.EmptyDescription));\n            #endregion\n\n            #region prefab largeship\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PrefabLargeShip, (int)MyMwcObjectBuilder_PrefabLargeShip_TypesEnum.LARGESHIP_ARDANT,\n            new MyGuiPrefabHelper(MyTextsWrapperEnum.LargeShipArdant));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PrefabLargeShip, (int)MyMwcObjectBuilder_PrefabLargeShip_TypesEnum.LARGESHIP_KAI,\n            new MyGuiPrefabHelper(MyTextsWrapperEnum.LargeShipKai));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PrefabLargeShip, (int)MyMwcObjectBuilder_PrefabLargeShip_TypesEnum.LARGESHIP_SAYA,\n            new MyGuiPrefabHelper(MyTextsWrapperEnum.LargeShipSaya));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PrefabLargeShip,\n                         (int)MyMwcObjectBuilder_PrefabLargeShip_TypesEnum.FOURTH_REICH_MOTHERSHIP,\n                         new MyGuiPrefabHelper(MyTextsWrapperEnum.FourthReichMothership));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PrefabLargeShip,\n                         (int)MyMwcObjectBuilder_PrefabLargeShip_TypesEnum.FOURTH_REICH_MOTHERSHIP_B,\n                         new MyGuiPrefabHelper(MyTextsWrapperEnum.FourthReichMothership_B));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PrefabLargeShip,\n                         (int)MyMwcObjectBuilder_PrefabLargeShip_TypesEnum.RUS_MOTHERSHIP,\n                         new MyGuiPrefabHelper(MyTextsWrapperEnum.RusMothership));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PrefabLargeShip,\n                        (int)MyMwcObjectBuilder_PrefabLargeShip_TypesEnum.RUSSIAN_MOTHERSHIP_HUMMER,\n                        new MyGuiPrefabHelper(MyTextsWrapperEnum.RussianMothershipHummer));\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PrefabLargeShip,\n                        (int)MyMwcObjectBuilder_PrefabLargeShip_TypesEnum.MSHIP_BODY,\n                        new MyGuiPrefabHelper(MyTextsWrapperEnum.Mship_body));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PrefabLargeShip,\n                        (int)MyMwcObjectBuilder_PrefabLargeShip_TypesEnum.MSHIP_ENGINE,\n                        new MyGuiPrefabHelper(MyTextsWrapperEnum.Mship_engine));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PrefabLargeShip,\n                        (int)MyMwcObjectBuilder_PrefabLargeShip_TypesEnum.MSHIP_SHIELD_BACK_LARGE_LEFT,\n                        new MyGuiPrefabHelper(MyTextsWrapperEnum.Mship_shield_back_large_left));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PrefabLargeShip,\n                        (int)MyMwcObjectBuilder_PrefabLargeShip_TypesEnum.MSHIP_SHIELD_BACK_LARGE_RIGHT,\n                        new MyGuiPrefabHelper(MyTextsWrapperEnum.Mship_shield_back_large_right));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PrefabLargeShip,\n                        (int)MyMwcObjectBuilder_PrefabLargeShip_TypesEnum.MSHIP_SHIELD_BACK_SMALL_LEFT,\n                        new MyGuiPrefabHelper(MyTextsWrapperEnum.Mship_shield_back_small_left));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PrefabLargeShip,\n                        (int)MyMwcObjectBuilder_PrefabLargeShip_TypesEnum.MSHIP_SHIELD_BACK_SMALL_RIGHT,\n                        new MyGuiPrefabHelper(MyTextsWrapperEnum.Mship_shield_back_small_right));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PrefabLargeShip,\n                        (int)MyMwcObjectBuilder_PrefabLargeShip_TypesEnum.MSHIP_SHIELD_FRONT_LARGE_LEFT,\n                        new MyGuiPrefabHelper(MyTextsWrapperEnum.Mship_shield_front_large_left));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PrefabLargeShip,\n                        (int)MyMwcObjectBuilder_PrefabLargeShip_TypesEnum.MSHIP_SHIELD_FRONT_LARGE_RIGHT,\n                        new MyGuiPrefabHelper(MyTextsWrapperEnum.Mship_shield_front_large_right));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PrefabLargeShip,\n                        (int)MyMwcObjectBuilder_PrefabLargeShip_TypesEnum.MSHIP_SHIELD_FRONT_SMALL_LEFT,\n                        new MyGuiPrefabHelper(MyTextsWrapperEnum.Mship_shield_front_small_left));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PrefabLargeShip,\n                        (int)MyMwcObjectBuilder_PrefabLargeShip_TypesEnum.MSHIP_SHIELD_FRONT_SMALL_RIGHT,\n                        new MyGuiPrefabHelper(MyTextsWrapperEnum.Mship_shield_front_small_right));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PrefabLargeShip,\n                        (int)MyMwcObjectBuilder_PrefabLargeShip_TypesEnum.MSHIP_SHIELD_FRONT_SMALL02_LEFT,\n                        new MyGuiPrefabHelper(MyTextsWrapperEnum.Mship_shield_front_small02_left));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PrefabLargeShip,\n                        (int)MyMwcObjectBuilder_PrefabLargeShip_TypesEnum.MSHIP_SHIELD_FRONT_SMALL02_RIGHT,\n                        new MyGuiPrefabHelper(MyTextsWrapperEnum.Mship_shield_front_small02_right));\n            #endregion\n\n            #region prefab largeship weapons\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PrefabLargeWeapon, (int)MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A01_LARGESHIP_AUTOCANNON,\n                new MyGuiPrefabHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\LargeWeaponAutocannon\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy), \n                    MyTextsWrapperEnum.p351_a01_largeship_autocannon));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PrefabLargeWeapon, (int)MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A01_LARGESHIP_CIWS,\n                new MyGuiPrefabHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\LargeWeaponCIWS\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy), \n                    MyTextsWrapperEnum.p351_a01_largeship_ciws));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PrefabLargeWeapon, (int)MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A01_LARGESHIP_MACHINEGUN,\n                new MyGuiPrefabHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\LargeWeaponMachinegun\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy), \n                    MyTextsWrapperEnum.p351_a01_largeship_machinegun));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PrefabLargeWeapon, (int)MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A01_LARGESHIP_MISSILE_BASIC4,\n                new MyGuiPrefabHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\LargeWeaponMissile4\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy), \n                    MyTextsWrapperEnum.p351_a01_largeship_missile_gun4));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PrefabLargeWeapon, (int)MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A01_LARGESHIP_MISSILE_BASIC6,\n                new MyGuiPrefabHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\LargeWeaponMissile6\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy), \n                    MyTextsWrapperEnum.p351_a01_largeship_missile_gun6));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PrefabLargeWeapon, (int)MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A01_LARGESHIP_MISSILE_BASIC9,\n                new MyGuiPrefabHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\LargeWeaponMissile9\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy), \n                    MyTextsWrapperEnum.p351_a01_largeship_missile_gun9));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PrefabLargeWeapon, (int)MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A02_LARGESHIP_MISSILE_GUIDED4,\n                new MyGuiPrefabHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\LargeWeaponMissile4\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy), \n                    MyTextsWrapperEnum.p351_a02_largeship_missile_gun_guided4));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PrefabLargeWeapon, (int)MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A02_LARGESHIP_MISSILE_GUIDED6,\n                new MyGuiPrefabHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\LargeWeaponMissile6\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy), \n                    MyTextsWrapperEnum.p351_a02_largeship_missile_gun_guided6));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PrefabLargeWeapon, (int)MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A02_LARGESHIP_MISSILE_GUIDED9,\n                new MyGuiPrefabHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\LargeWeaponMissile9\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy),\n                    MyTextsWrapperEnum.p351_a02_largeship_missile_gun_guided9));\n            #endregion\n\n            #region prefab hangars\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PrefabHangar, (int)MyMwcObjectBuilder_PrefabHangar_TypesEnum.VENDOR, new MyGuiPrefabHelper(MyTextsWrapperEnum.vendor));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PrefabHangar, (int)MyMwcObjectBuilder_PrefabHangar_TypesEnum.HANGAR, new MyGuiPrefabHelper(MyTextsWrapperEnum.Hangar));\n            #endregion\n\n            #region prefab kinematic parts\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PrefabKinematicPart, (int)MyMwcObjectBuilder_PrefabKinematicPart_TypesEnum.P415_A02_DOOR_LEFT, new MyGuiPrefabHelper(MyTextsWrapperEnum.p415_a02_door));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PrefabKinematicPart, (int)MyMwcObjectBuilder_PrefabKinematicPart_TypesEnum.P415_A02_DOOR_RIGHT, new MyGuiPrefabHelper(MyTextsWrapperEnum.p415_a02_door));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PrefabKinematicPart, (int)MyMwcObjectBuilder_PrefabKinematicPart_TypesEnum.P415_C02_DOOR1_LEFT, new MyGuiPrefabHelper(MyTextsWrapperEnum.p571_l01_traffic_sign));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PrefabKinematicPart, (int)MyMwcObjectBuilder_PrefabKinematicPart_TypesEnum.P415_C02_DOOR1_RIGHT, new MyGuiPrefabHelper(MyTextsWrapperEnum.p571_l01_traffic_sign));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PrefabKinematicPart, (int)MyMwcObjectBuilder_PrefabKinematicPart_TypesEnum.P415_C03_DOOR2_A, new MyGuiPrefabHelper(MyTextsWrapperEnum.p571_l01_traffic_sign));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PrefabKinematicPart, (int)MyMwcObjectBuilder_PrefabKinematicPart_TypesEnum.P415_C03_DOOR2_B, new MyGuiPrefabHelper(MyTextsWrapperEnum.p571_l01_traffic_sign));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PrefabKinematicPart, (int)MyMwcObjectBuilder_PrefabKinematicPart_TypesEnum.P415_C03_DOOR2_B_LEFT, new MyGuiPrefabHelper(MyTextsWrapperEnum.p571_l01_traffic_sign));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PrefabKinematicPart, (int)MyMwcObjectBuilder_PrefabKinematicPart_TypesEnum.P415_C03_DOOR2_B_RIGHT, new MyGuiPrefabHelper(MyTextsWrapperEnum.p571_l01_traffic_sign));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PrefabKinematicPart, (int)MyMwcObjectBuilder_PrefabKinematicPart_TypesEnum.P415_C03_DOOR2_A_LEFT, new MyGuiPrefabHelper(MyTextsWrapperEnum.p571_l01_traffic_sign));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PrefabKinematicPart, (int)MyMwcObjectBuilder_PrefabKinematicPart_TypesEnum.P415_C03_DOOR2_A_RIGHT, new MyGuiPrefabHelper(MyTextsWrapperEnum.p571_l01_traffic_sign));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PrefabKinematicPart, (int)MyMwcObjectBuilder_PrefabKinematicPart_TypesEnum.P341_A01_OPEN_DOCK_VARIATION1_DOORLEFT, new MyGuiPrefabHelper(MyTextsWrapperEnum.p571_l01_traffic_sign));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PrefabKinematicPart, (int)MyMwcObjectBuilder_PrefabKinematicPart_TypesEnum.P341_A01_OPEN_DOCK_VARIATION1_DOORRIGHT, new MyGuiPrefabHelper(MyTextsWrapperEnum.p571_l01_traffic_sign));            \n            #endregion\n\n            #region dummy point\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.DummyPoint, 0, new MyGuiPrefabHelper(MyTextsWrapperEnum.DummyPoint));\n            #endregion\n\n            #region Snap Point Links\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SnapPointLink, 0, new MyGuiHelperBase(MyTextsWrapperEnum.EmptyDescription));\n            #endregion\n\n            #region entity detector\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.EntityDetector, (int)MyMwcObjectBuilder_EntityDetector_TypesEnum.Sphere, new MyGuiPrefabHelper(MyTextsWrapperEnum.DummyPoint));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.EntityDetector, (int)MyMwcObjectBuilder_EntityDetector_TypesEnum.Box, new MyGuiPrefabHelper(MyTextsWrapperEnum.DummyPoint));\n            #endregion\n\n            #region ship config\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.ShipConfig, 0, new MyGuiPrefabHelper(MyTextsWrapperEnum.EmptyDescription));\n            #endregion\n\n            #region prefab foundation factory\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PrefabFoundationFactory, (int)MyMwcObjectBuilder_PrefabFoundationFactory_TypesEnum.DEFAULT,\n                new MyGuiPrefabHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\FoundationFactory\", flags: TextureFlags.IgnoreQuality), MyTextsWrapperEnum.FoundationFactory));            \n            #endregion\n\n            #region prefab security control HUB\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PrefabSecurityControlHUB, (int)MyMwcObjectBuilder_PrefabSecurityControlHUB_TypesEnum.DEFAULT,\n                new MyGuiPrefabHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\FoundationFactory\", flags: TextureFlags.IgnoreQuality), MyTextsWrapperEnum.SecurityControlHUB));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PrefabSecurityControlHUB, (int)MyMwcObjectBuilder_PrefabSecurityControlHUB_TypesEnum.P541_SCREEN_A,\n                new MyGuiPrefabHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\FoundationFactory\", flags: TextureFlags.IgnoreQuality), MyTextsWrapperEnum.p541_screen_A));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PrefabSecurityControlHUB, (int)MyMwcObjectBuilder_PrefabSecurityControlHUB_TypesEnum.P541_SCREEN_B,\n                new MyGuiPrefabHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\FoundationFactory\", flags: TextureFlags.IgnoreQuality), MyTextsWrapperEnum.p541_screen_B));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PrefabSecurityControlHUB, (int)MyMwcObjectBuilder_PrefabSecurityControlHUB_TypesEnum.P541_TERMINAL_A,\n                new MyGuiPrefabHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\FoundationFactory\", flags: TextureFlags.IgnoreQuality), MyTextsWrapperEnum.p541_terminal_A));            \n            #endregion\n\n            #region Drones\n\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Drone, (int) MyMwcObjectBuilder_Drone_TypesEnum.DroneUS,\n                         new MyGuiSmallShipHelperTool(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\DroneUS\",\n                                                                                               flags: TextureFlags.IgnoreQuality), MyTextsWrapperEnum.DroneUS));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Drone, (int) MyMwcObjectBuilder_Drone_TypesEnum.DroneCN,\n                         new MyGuiSmallShipHelperTool(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\DroneCN\",\n                                                                                               flags: TextureFlags.IgnoreQuality), MyTextsWrapperEnum.DroneCN));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Drone, (int) MyMwcObjectBuilder_Drone_TypesEnum.DroneSS,\n                         new MyGuiSmallShipHelperTool(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\DroneSS\",\n                                                                                               flags: TextureFlags.IgnoreQuality), MyTextsWrapperEnum.DroneSS));\n\n            #endregion\n\n            #region false Id\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.FalseId, MyMwcFactionsByIndex.GetFactionIndex(MyMwcObjectBuilder_FactionEnum.China), new MyGuiHelperBase(MyTextsWrapperEnum.FactionChinese));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.FalseId, MyMwcFactionsByIndex.GetFactionIndex(MyMwcObjectBuilder_FactionEnum.Church), new MyGuiHelperBase(MyTextsWrapperEnum.FactionChurch));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.FalseId, MyMwcFactionsByIndex.GetFactionIndex(MyMwcObjectBuilder_FactionEnum.CSR), new MyGuiHelperBase(MyTextsWrapperEnum.FactionCSR));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.FalseId, MyMwcFactionsByIndex.GetFactionIndex(MyMwcObjectBuilder_FactionEnum.Euroamerican), new MyGuiHelperBase(MyTextsWrapperEnum.FactionEuroamerican));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.FalseId, MyMwcFactionsByIndex.GetFactionIndex(MyMwcObjectBuilder_FactionEnum.FourthReich), new MyGuiHelperBase(MyTextsWrapperEnum.FactionFourthReich));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.FalseId, MyMwcFactionsByIndex.GetFactionIndex(MyMwcObjectBuilder_FactionEnum.FreeAsia), new MyGuiHelperBase(MyTextsWrapperEnum.FactionFreeAsia));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.FalseId, MyMwcFactionsByIndex.GetFactionIndex(MyMwcObjectBuilder_FactionEnum.Freelancers), new MyGuiHelperBase(MyTextsWrapperEnum.FactionFreelancers));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.FalseId, MyMwcFactionsByIndex.GetFactionIndex(MyMwcObjectBuilder_FactionEnum.FSRE), new MyGuiHelperBase(MyTextsWrapperEnum.FactionFSRE));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.FalseId, MyMwcFactionsByIndex.GetFactionIndex(MyMwcObjectBuilder_FactionEnum.India), new MyGuiHelperBase(MyTextsWrapperEnum.FactionIndia));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.FalseId, MyMwcFactionsByIndex.GetFactionIndex(MyMwcObjectBuilder_FactionEnum.Japan), new MyGuiHelperBase(MyTextsWrapperEnum.FactionJapan));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.FalseId, MyMwcFactionsByIndex.GetFactionIndex(MyMwcObjectBuilder_FactionEnum.Miners), new MyGuiHelperBase(MyTextsWrapperEnum.FactionMiners));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.FalseId, MyMwcFactionsByIndex.GetFactionIndex(MyMwcObjectBuilder_FactionEnum.None), new MyGuiHelperBase(MyTextsWrapperEnum.FactionNone));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.FalseId, MyMwcFactionsByIndex.GetFactionIndex(MyMwcObjectBuilder_FactionEnum.Omnicorp), new MyGuiHelperBase(MyTextsWrapperEnum.FactionOmnicorp));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.FalseId, MyMwcFactionsByIndex.GetFactionIndex(MyMwcObjectBuilder_FactionEnum.Pirates), new MyGuiHelperBase(MyTextsWrapperEnum.FactionPirate));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.FalseId, MyMwcFactionsByIndex.GetFactionIndex(MyMwcObjectBuilder_FactionEnum.Rangers), new MyGuiHelperBase(MyTextsWrapperEnum.FactionRangers));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.FalseId, MyMwcFactionsByIndex.GetFactionIndex(MyMwcObjectBuilder_FactionEnum.Ravens), new MyGuiHelperBase(MyTextsWrapperEnum.FactionRavens));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.FalseId, MyMwcFactionsByIndex.GetFactionIndex(MyMwcObjectBuilder_FactionEnum.Russian), new MyGuiHelperBase(MyTextsWrapperEnum.FactionRussian));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.FalseId, MyMwcFactionsByIndex.GetFactionIndex(MyMwcObjectBuilder_FactionEnum.Saudi), new MyGuiHelperBase(MyTextsWrapperEnum.FactionSaudi));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.FalseId, MyMwcFactionsByIndex.GetFactionIndex(MyMwcObjectBuilder_FactionEnum.SMLtd), new MyGuiHelperBase(MyTextsWrapperEnum.FactionSMLtd));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.FalseId, MyMwcFactionsByIndex.GetFactionIndex(MyMwcObjectBuilder_FactionEnum.Syndicate), new MyGuiHelperBase(MyTextsWrapperEnum.FactionSyndicate));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.FalseId, MyMwcFactionsByIndex.GetFactionIndex(MyMwcObjectBuilder_FactionEnum.Templars), new MyGuiHelperBase(MyTextsWrapperEnum.FactionTemplars));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.FalseId, MyMwcFactionsByIndex.GetFactionIndex(MyMwcObjectBuilder_FactionEnum.Traders), new MyGuiHelperBase(MyTextsWrapperEnum.FactionTraders));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.FalseId, MyMwcFactionsByIndex.GetFactionIndex(MyMwcObjectBuilder_FactionEnum.TTLtd), new MyGuiHelperBase(MyTextsWrapperEnum.FactionTTLtd));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.FalseId, MyMwcFactionsByIndex.GetFactionIndex(MyMwcObjectBuilder_FactionEnum.Russian_KGB), new MyGuiHelperBase(MyTextsWrapperEnum.FactionRussianKGB));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.FalseId, MyMwcFactionsByIndex.GetFactionIndex(MyMwcObjectBuilder_FactionEnum.Slavers), new MyGuiHelperBase(MyTextsWrapperEnum.FactionSlavers));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.FalseId, MyMwcFactionsByIndex.GetFactionIndex(MyMwcObjectBuilder_FactionEnum.WhiteWolves), new MyGuiHelperBase(MyTextsWrapperEnum.FactionWhiteWolves));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.FalseId, MyMwcFactionsByIndex.GetFactionIndex(MyMwcObjectBuilder_FactionEnum.Rainiers), new MyGuiHelperBase(MyTextsWrapperEnum.FactionRainiers));            \n            #endregion\n\n            #region hacking tool\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_HackingTool, (int)MyMwcObjectBuilder_SmallShip_HackingTool_TypesEnum.Level_1,\n                new MyGuiHelperBase(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\HackingTool1\", flags: TextureFlags.IgnoreQuality), MyTextsWrapperEnum.HackingTool_Level1));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_HackingTool, (int)MyMwcObjectBuilder_SmallShip_HackingTool_TypesEnum.Level_2,\n                new MyGuiHelperBase(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\HackingTool2\", flags: TextureFlags.IgnoreQuality), MyTextsWrapperEnum.HackingTool_Level2));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_HackingTool, (int)MyMwcObjectBuilder_SmallShip_HackingTool_TypesEnum.Level_3,\n                new MyGuiHelperBase(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\HackingTool3\", flags: TextureFlags.IgnoreQuality), MyTextsWrapperEnum.HackingTool_Level3));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_HackingTool, (int)MyMwcObjectBuilder_SmallShip_HackingTool_TypesEnum.Level_4,\n                new MyGuiHelperBase(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\HackingTool4\", flags: TextureFlags.IgnoreQuality), MyTextsWrapperEnum.HackingTool_Level4));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_HackingTool, (int)MyMwcObjectBuilder_SmallShip_HackingTool_TypesEnum.Level_5,\n                new MyGuiHelperBase(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\HackingTool5\", flags: TextureFlags.IgnoreQuality), MyTextsWrapperEnum.HackingTool_Level5));\n            #endregion\n\n            #region prefab bank node\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PrefabBankNode, (int)MyMwcObjectBuilder_PrefabBankNode_TypesEnum.DEFAULT,\n                new MyGuiPrefabHelper(MyTextsWrapperEnum.BankNode));            \n            #endregion\n\n            #region prefab use properties\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.EntityUseProperties, 0,\n                new MyGuiHelperBase(MyTextsWrapperEnum.EmptyDescription));\n            #endregion\n\n            #region generator\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PrefabGenerator, (int)MyMwcObjectBuilder_PrefabGenerator_TypesEnum.P321C01_INERTIA_GENERATOR, \n                new MyGuiPrefabHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Generator\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy), MyTextsWrapperEnum.Generator));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PrefabGenerator, (int)MyMwcObjectBuilder_PrefabGenerator_TypesEnum.P321C03_CENTRIFUGE, \n                new MyGuiPrefabHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Generator\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy), MyTextsWrapperEnum.p321c03_centrifuge));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PrefabGenerator, (int)MyMwcObjectBuilder_PrefabGenerator_TypesEnum.P321C04_BOX_GENERATOR, \n                new MyGuiPrefabHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Generator\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy), MyTextsWrapperEnum.p321c04_box_generator));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PrefabGenerator, (int)MyMwcObjectBuilder_PrefabGenerator_TypesEnum.P321C05_CENTRIFUGE_BIG, \n                new MyGuiPrefabHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Generator\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy), MyTextsWrapperEnum.p321c05_centrifuge_big));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PrefabGenerator, (int)MyMwcObjectBuilder_PrefabGenerator_TypesEnum.P321C02_GENERATOR_WALL_BIG, \n                new MyGuiPrefabHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Generator\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy), MyTextsWrapperEnum.p321c02_generator_wall_big));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PrefabGenerator, (int)MyMwcObjectBuilder_PrefabGenerator_TypesEnum.P321C06_INERTIA_GENERATOR_B, \n                new MyGuiPrefabHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Generator\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy), MyTextsWrapperEnum.p321c06_inertia_generator_B));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PrefabGenerator, (int)MyMwcObjectBuilder_PrefabGenerator_TypesEnum.P321C07_GENERATOR, \n                new MyGuiPrefabHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Generator\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy), MyTextsWrapperEnum.p321c07_generator));\n            #endregion\n\n            #region cargo box\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.CargoBox, (int)MyMwcObjectBuilder_CargoBox_TypesEnum.Type1,\n                new MyGuiHelperBase(MyTextsWrapperEnum.CargoBoxType1));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.CargoBox, (int)MyMwcObjectBuilder_CargoBox_TypesEnum.Type2,\n                new MyGuiHelperBase(MyTextsWrapperEnum.CargoBoxType2));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.CargoBox, (int)MyMwcObjectBuilder_CargoBox_TypesEnum.Type3,\n                new MyGuiHelperBase(MyTextsWrapperEnum.CargoBoxType3));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.CargoBox, (int)MyMwcObjectBuilder_CargoBox_TypesEnum.Type4,\n                new MyGuiHelperBase(MyTextsWrapperEnum.CargoBoxType4));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.CargoBox, (int)MyMwcObjectBuilder_CargoBox_TypesEnum.Type5,\n                new MyGuiHelperBase(MyTextsWrapperEnum.CargoBoxType5));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.CargoBox, (int)MyMwcObjectBuilder_CargoBox_TypesEnum.Type6,\n                new MyGuiHelperBase(MyTextsWrapperEnum.CargoBoxType6));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.CargoBox, (int)MyMwcObjectBuilder_CargoBox_TypesEnum.Type7,\n                new MyGuiHelperBase(MyTextsWrapperEnum.CargoBoxType7));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.CargoBox, (int)MyMwcObjectBuilder_CargoBox_TypesEnum.Type8,\n                new MyGuiHelperBase(MyTextsWrapperEnum.CargoBoxType8));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.CargoBox, (int)MyMwcObjectBuilder_CargoBox_TypesEnum.Type9,\n                new MyGuiHelperBase(MyTextsWrapperEnum.CargoBoxType9));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.CargoBox, (int)MyMwcObjectBuilder_CargoBox_TypesEnum.Type10,\n                new MyGuiHelperBase(MyTextsWrapperEnum.CargoBoxType10));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.CargoBox, (int)MyMwcObjectBuilder_CargoBox_TypesEnum.Type11,\n                new MyGuiHelperBase(MyTextsWrapperEnum.CargoBoxType11));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.CargoBox, (int)MyMwcObjectBuilder_CargoBox_TypesEnum.Type12,\n                new MyGuiHelperBase(MyTextsWrapperEnum.CargoBoxType12));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.CargoBox, (int)MyMwcObjectBuilder_CargoBox_TypesEnum.TypeProp_A,\n                new MyGuiHelperBase(MyTextsWrapperEnum.CargoBoxTypeProp_A));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.CargoBox, (int)MyMwcObjectBuilder_CargoBox_TypesEnum.TypeProp_B,\n                new MyGuiHelperBase(MyTextsWrapperEnum.CargoBoxTypeProp_B));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.CargoBox, (int)MyMwcObjectBuilder_CargoBox_TypesEnum.TypeProp_C,\n                new MyGuiHelperBase(MyTextsWrapperEnum.CargoBoxTypeProp_C));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.CargoBox, (int)MyMwcObjectBuilder_CargoBox_TypesEnum.TypeProp_D,\n                new MyGuiHelperBase(MyTextsWrapperEnum.CargoBoxTypeProp_D));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.CargoBox, (int)MyMwcObjectBuilder_CargoBox_TypesEnum.DroppedItems,\n                new MyGuiHelperBase(MyTextsWrapperEnum.CargoBoxDroppedItems));            \n            #endregion\n\n            #region Mysterious cube\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.MysteriousCube, (int)MyMwcObjectBuilder_MysteriousCube_TypesEnum.Type1,\n                new MyGuiHelperBase(MyTextsWrapperEnum.MysteriousCube_01));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.MysteriousCube, (int)MyMwcObjectBuilder_MysteriousCube_TypesEnum.Type2,\n                new MyGuiHelperBase(MyTextsWrapperEnum.MysteriousCube_02));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.MysteriousCube, (int)MyMwcObjectBuilder_MysteriousCube_TypesEnum.Type3,\n                new MyGuiHelperBase(MyTextsWrapperEnum.MysteriousCube_03));\n            #endregion\n\n            #region SectorObjectGroups\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SectorObjectGroups, 0,\n                new MyGuiHelperBase(MyTextsWrapperEnum.EmptyDescription));\n            #endregion\n\n            #region WaypointNew\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.WaypointNew, 0,\n                new MyGuiHelperBase(MyTextsWrapperEnum.EmptyDescription));\n            #endregion\n\n            #region prefab Scanner\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PrefabScanner, (int)MyMwcObjectBuilder_PrefabScanner_TypesEnum.Plane,\n                new MyGuiPrefabHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Scanner\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy), MyTextsWrapperEnum.ScannerPlane));\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PrefabScanner, (int)MyMwcObjectBuilder_PrefabScanner_TypesEnum.Rays,\n                new MyGuiPrefabHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Scanner\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy), MyTextsWrapperEnum.ScannerRays));\n            #endregion\n\n            #region prefab Camera\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PrefabCamera, (int)MyMwcObjectBuilder_PrefabCamera_TypesEnum.DEFAULT,\n                new MyGuiPrefabHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Camera\", flags: TextureFlags.IgnoreQuality, loadingMode: Managers.LoadingMode.Lazy), MyTextsWrapperEnum.Camera));\n            #endregion\n\n            #region prefab alarm\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PrefabAlarm, (int)MyMwcObjectBuilder_PrefabAlarm_TypesEnum.DEFAULT,\n                new MyGuiPrefabHelper(MyTextsWrapperEnum.Alarm));            \n            #endregion\n\n            #region alien gate\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P391_ALIEN_GATE,\n                new MyGuiPrefabHelper(MyTextsWrapperEnum.AlienGate));\n            #endregion            \n\n            #region prefab kinematic rotating part\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.PrefabKinematicRotatingPart, (int)MyMwcObjectBuilder_PrefabKinematicRotatingPart_TypesEnum.DEFAULT,\n                new MyGuiPrefabHelper(MyTextsWrapperEnum.EmptyDescription));\n            #endregion\n\n            #region small ship template\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShipTemplate, 0,\n                new MyGuiHelperBase(MyTextsWrapperEnum.EmptyDescription));\n            #endregion\n\n            #region small ship templates\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShipTemplates, 0,\n                new MyGuiHelperBase(MyTextsWrapperEnum.EmptyDescription));\n            #endregion\n\n            #region faction relation changes\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.FactionRelationChange, 0,\n                new MyGuiHelperBase(MyTextsWrapperEnum.EmptyDescription));\n            #endregion\n\n            #region RemotePlayer\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.RemotePlayer, 0, new MyGuiHelperBase(MyTextsWrapperEnum.EmptyDescription));\n            #endregion\n\n            #region GlobalData\n            AddGuiHelper(MyMwcObjectBuilderTypeEnum.GlobalData, 0, new MyGuiHelperBase(MyTextsWrapperEnum.EmptyDescription));\n            #endregion\n\n            foreach (ushort objectBuilderType in Enum.GetValues(typeof(MyMwcObjectBuilderTypeEnum)))\n            {\n                // check if there are valid ObjectBuilderIds for concrete ObjectBuilderType\n                var guiHelpersForType = m_buildTypeHelpers[objectBuilderType];\n                MyCommonDebugUtils.AssertDebug(guiHelpersForType != null, \"Missing GUI helper for: \" + (MyMwcObjectBuilderTypeEnum)objectBuilderType + \", use AddGuiHelper() in this file\");\n                for (int objectBuilderId = 0; objectBuilderId < guiHelpersForType.Length; objectBuilderId++)\n                {\n                    var guiHelper = guiHelpersForType[objectBuilderId];\n                    if (guiHelper != null)\n                    {\n                        MyCommonDebugUtils.AssertDebug(MyMwcObjectBuilder_Base.IsObjectBuilderIdValid((MyMwcObjectBuilderTypeEnum)objectBuilderType, objectBuilderId));\n                    }\n                }\n\n                // check if there are all objectbuilder's types and ids\n                int[] objectBuilderIDs = MyMwcObjectBuilder_Base.GetObjectBuilderIDs((MyMwcObjectBuilderTypeEnum)objectBuilderType);\n                foreach (int objectBuilderId in objectBuilderIDs)\n                {\n                    MyCommonDebugUtils.AssertDebug(guiHelpersForType[objectBuilderId] != null, string.Format(\"Object builder {0} does not have gui helper\", (MyMwcObjectBuilderTypeEnum)objectBuilderId));\n                }                \n            }\n        }\n\n        public static void UnloadContent()\n        {\n            for (int i = 0; i < m_buildTypeHelpers.Length; i++)\n            {\n                m_buildTypeHelpers[i] = null;\n            }\n        }\n\n        public static void ReloadTexts()\n        {\n            for (int i = 0; i < m_buildTypeHelpers.Length; i++)\n            {\n                if (m_buildTypeHelpers[i] != null)\n                {\n                    for (int j = 0; j < m_buildTypeHelpers[i].Length; j++)\n                    {\n                        if (m_buildTypeHelpers[i][j] != null)\n                            m_buildTypeHelpers[i][j].IsNameDirty = true;\n                    }\n                }\n            }\n        }\n         \n        /// <summary>\n        /// Because those icons that are not fetched from content are generated on-the-fly, \n        /// resolving prefab helper icons is done AFTER loading (so that GPU is free on main thread).\n        /// </summary>\n        internal static void UpdatePrefabHelperIcons()\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"UpdatePrefabHelperIcons\");\n            MyMwcLog.WriteLine(\"GUpdatePrefabHelperIcons - START\");\n\n            // this whole thing here will need to be updated to take into account FactionSpecific attribute of a prefab configuration\n\n            foreach (MyMwcObjectBuilderTypeEnum prefabType in MyGuiPrefabHelpers.MyMwcPrefabTypesEnumValues)\n            {\n                // hotfix to stop rendering on-the-fly of fourth reich largeships for neutral faction\n                if (prefabType == MyMwcObjectBuilderTypeEnum.PrefabLargeShip)\n                    continue;\n\n                foreach (int prefabId in MyMwcObjectBuilder_Base.GetObjectBuilderIDs(prefabType))\n                {\n                    if (prefabId == 477)\n                        continue;\n\n                    if (m_buildTypeHelpers[(int)prefabType] != null &&\n                        m_buildTypeHelpers[(int)prefabType][prefabId] != null)\n                    {\n                        //m_buildTypeHelpers[(int)prefabType][prefabId].Icon = \n                        //    MyGuiManager.GetPrefabPreviewTexture(prefabType, prefabId, MyMwcObjectBuilder_Prefab_AppearanceEnum.None);\n                        ((MyGuiPrefabHelper)m_buildTypeHelpers[(int)prefabType][prefabId]).Preview = \n                            MyGuiManager.GetPrefabPreviewTexture(prefabType, prefabId, MyMwcObjectBuilder_Prefab_AppearanceEnum.None);\n                    }\n                }\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n            MyMwcLog.WriteLine(\"GUpdatePrefabHelperIcons - END\");\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Helpers/MyGuiPrefabBuildTypeHelper.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Localization;\n\nnamespace MinerWars.AppCode.Game.GUI.Helpers\n{\n    class MyGuiPrefabBuildTypeHelper : MyGuiHelperBase\n    {\n        public MyGuiPrefabBuildTypeHelper(MyTextsWrapperEnum description)\n            : base(description)\n        {\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Helpers/MyGuiPrefabCategoryTypeHelper.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Localization;\n\nnamespace MinerWars.AppCode.Game.GUI.Helpers\n{\n    class MyGuiPrefabCategoryTypeHelper : MyGuiHelperBase\n    {\n        public MyGuiPrefabCategoryTypeHelper(MyTextsWrapperEnum description)\n            : base(description)\n        {\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Helpers/MyGuiPrefabHelper.cs",
    "content": "﻿\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Textures;\n\nnamespace MinerWars.AppCode.Game.GUI.Helpers\n{\n    class MyGuiPrefabHelper : MyGuiHelperBase\n    {\n        private MyTexture2D m_preview;\n        public MyTexture2D Preview { get { return m_preview; } set { m_preview = value; } }\n\n        public override MyTexture2D Icon\n        {\n            get\n            {\n                // if has no or empty icon and has some preview, then return preview\n                if ((base.Icon == null || base.Icon == MyGuiManager.GetBlankTexture()) && \n                    Preview != null && Preview != MyGuiManager.GetBlankTexture())\n                {\n                    return Preview;\n                }\n                else\n                {\n                    return base.Icon;\n                }\n            }\n            set\n            {\n                base.Icon = value;\n            }\n        }\n\n        public MyGuiPrefabHelper(MyTextsWrapperEnum description)\n            : base(description)\n        {\n            Icon = MyGuiManager.GetBlankTexture();\n        }\n\n        public MyGuiPrefabHelper(MyTexture2D icon, MyTextsWrapperEnum description)\n            : base(icon, description)\n        {\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Helpers/MyGuiPrefabHelpers.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Prefabs;\nusing SysUtils.Utils;\n\nnamespace MinerWars.AppCode.Game.GUI.Helpers\n{\n    static class MyGuiPrefabHelpers\n    {\n        //Dictionaries for helpers\n        static Dictionary<BuildTypesEnum, MyGuiPrefabBuildTypeHelper> m_buildTypeHelpers = new Dictionary<BuildTypesEnum, MyGuiPrefabBuildTypeHelper>();\n        static Dictionary<CategoryTypesEnum, MyGuiPrefabCategoryTypeHelper> m_categoryTypeHelpers = new Dictionary<CategoryTypesEnum, MyGuiPrefabCategoryTypeHelper>();\n        static Dictionary<SubCategoryTypesEnum, MyGuiPrefabSubCategoryTypeHelper> m_subCategoryTypeHelpers = new Dictionary<SubCategoryTypesEnum, MyGuiPrefabSubCategoryTypeHelper>();\n        //static Dictionary<MyMwcObjectBuilder_Prefab_TypesEnum, MyGuiPrefabHelper> m_prefabTypeHelpers = new Dictionary<MyMwcObjectBuilder_Prefab_TypesEnum, MyGuiPrefabHelper>();\n        \n        //Arrays of enums values\n        public static Array MyMwcBuildTypesEnumValues;\n        public static Array MyMwcCategoryTypesEnumValues;\n        public static Array MyMwcSubCategoryTypesEnumValues;\n        public static MyMwcObjectBuilderTypeEnum[] MyMwcPrefabTypesEnumValues;  //Cannot be Array because obfuscator crash (he doesnt like foreach+Array)\n        public static Array MyMwcFactionTextureEnumValues;\n        \n        static MyGuiPrefabHelpers()\n        {\n            MyMwcLog.WriteLine(\"MyGuiPrefabHelpers()\");\n            \n            MyMwcBuildTypesEnumValues = Enum.GetValues(typeof(BuildTypesEnum));\n            MyMwcCategoryTypesEnumValues = Enum.GetValues(typeof(CategoryTypesEnum));\n            MyMwcSubCategoryTypesEnumValues = Enum.GetValues(typeof(SubCategoryTypesEnum));\n            //MyMwcPrefabTypesEnumValues = Enum.GetValues(typeof(MyMwcObjectBuilder_Prefab_TypesEnum));\n            MyMwcPrefabTypesEnumValues = new MyMwcObjectBuilderTypeEnum[]\n                                         {\n                                             MyMwcObjectBuilderTypeEnum.Prefab,\n                                             MyMwcObjectBuilderTypeEnum.PrefabHangar,\n                                             MyMwcObjectBuilderTypeEnum.PrefabKinematic,\n                                             MyMwcObjectBuilderTypeEnum.PrefabLargeWeapon,\n                                             MyMwcObjectBuilderTypeEnum.PrefabLargeShip,\n                                             MyMwcObjectBuilderTypeEnum.PrefabKinematicPart,\n                                             MyMwcObjectBuilderTypeEnum.PrefabLight,\n                                             MyMwcObjectBuilderTypeEnum.PrefabParticles,\n                                             MyMwcObjectBuilderTypeEnum.PrefabSound,\n                                             MyMwcObjectBuilderTypeEnum.PrefabFoundationFactory,\n                                             MyMwcObjectBuilderTypeEnum.PrefabSecurityControlHUB,\n                                             MyMwcObjectBuilderTypeEnum.PrefabBankNode,\n                                             MyMwcObjectBuilderTypeEnum.PrefabGenerator,\n                                             MyMwcObjectBuilderTypeEnum.PrefabScanner,\n                                             MyMwcObjectBuilderTypeEnum.PrefabAlarm,\n                                             MyMwcObjectBuilderTypeEnum.PrefabCamera,\n                                         };\n            MyMwcFactionTextureEnumValues = Enum.GetValues(typeof(MyMwcObjectBuilder_Prefab_AppearanceEnum));\n        }\n\n        public static StringBuilder GetFactionName(MyMwcObjectBuilder_Prefab_AppearanceEnum appearanceTextureEnum)\n        {\n            switch (appearanceTextureEnum)\n            {\n                case MyMwcObjectBuilder_Prefab_AppearanceEnum.None: return MyTextsWrapper.Get(MyTextsWrapperEnum.FactionNeutralShort);\n                case MyMwcObjectBuilder_Prefab_AppearanceEnum.FourthReich: return MyTextsWrapper.Get(MyTextsWrapperEnum.FactionFourthReichShort);\n                case MyMwcObjectBuilder_Prefab_AppearanceEnum.Chinese: return MyTextsWrapper.Get(MyTextsWrapperEnum.FactionChineseShort);\n                case MyMwcObjectBuilder_Prefab_AppearanceEnum.Euroamerican: return MyTextsWrapper.Get(MyTextsWrapperEnum.FactionEuroamericanShort);\n                case MyMwcObjectBuilder_Prefab_AppearanceEnum.Omnicorp: return MyTextsWrapper.Get(MyTextsWrapperEnum.FactionOmnicorpShort);\n                case MyMwcObjectBuilder_Prefab_AppearanceEnum.Russian: return MyTextsWrapper.Get(MyTextsWrapperEnum.FactionRussianShort);\n                case MyMwcObjectBuilder_Prefab_AppearanceEnum.Church: return MyTextsWrapper.Get(MyTextsWrapperEnum.FactionChurchShort);\n                case MyMwcObjectBuilder_Prefab_AppearanceEnum.Saudi: return MyTextsWrapper.Get(MyTextsWrapperEnum.FactionSaudiShort);\n            }\n\n            return null;\n        }\n\n        public static MyGuiPrefabBuildTypeHelper GetMyGuiBuildTypeHelper(BuildTypesEnum buildType)\n        {\n            MyGuiPrefabBuildTypeHelper ret;\n            if (m_buildTypeHelpers.TryGetValue(buildType, out ret))\n                return ret;\n            else\n                return null;\n        }\n\n        public static MyGuiPrefabCategoryTypeHelper GetMyGuiCategoryTypeHelper(CategoryTypesEnum categoryType)\n        {\n            MyGuiPrefabCategoryTypeHelper ret;\n            if (m_categoryTypeHelpers.TryGetValue(categoryType, out ret))\n                return ret;\n            else\n                return null;\n        }\n\n        public static MyGuiPrefabSubCategoryTypeHelper GetMyGuiSubCategoryTypeHelper(SubCategoryTypesEnum subCategoryType)\n        {\n            MyGuiPrefabSubCategoryTypeHelper ret;\n            if (m_subCategoryTypeHelpers.TryGetValue(subCategoryType, out ret))\n                return ret;\n            else\n                return null;\n        }\n\n        //public static MyGuiPrefabHelper GetMyGuiPrefabTypeHelper(MyMwcObjectBuilder_Prefab_TypesEnum prefabTypeEnum)\n        //{\n        //    MyGuiPrefabHelper ret;\n        //    if (m_prefabTypeHelpers.TryGetValue(prefabTypeEnum, out ret))\n        //        return ret;\n        //    else\n        //        return null;\n        //}\n\n        public static void UnloadContent()\n        {\n\n            m_buildTypeHelpers.Clear();\n            m_categoryTypeHelpers.Clear();\n            m_subCategoryTypeHelpers.Clear();\n            //m_prefabTypeHelpers.Clear();\n\n        }\n\n        public static void LoadContent()\n        {\n            #region prefab build type helpers\n\n            m_buildTypeHelpers.Add(BuildTypesEnum.BEAMS,\n                new MyGuiPrefabBuildTypeHelper(MyTextsWrapperEnum.buildTypeBeam));\n\n            m_buildTypeHelpers.Add(BuildTypesEnum.CONNECTIONS,\n                new MyGuiPrefabBuildTypeHelper(MyTextsWrapperEnum.buildTypeConnection));\n\n            m_buildTypeHelpers.Add(BuildTypesEnum.DETAILS,\n                new MyGuiPrefabBuildTypeHelper(MyTextsWrapperEnum.buildTypeDetail));\n\n            m_buildTypeHelpers.Add(BuildTypesEnum.MODULES,\n                new MyGuiPrefabBuildTypeHelper(MyTextsWrapperEnum.buildTypeModule));\n\n            m_buildTypeHelpers.Add(BuildTypesEnum.SHELLS,\n                new MyGuiPrefabBuildTypeHelper(MyTextsWrapperEnum.buildTypePanel));\n\n            m_buildTypeHelpers.Add(BuildTypesEnum.CUSTOM,\n                new MyGuiPrefabBuildTypeHelper(MyTextsWrapperEnum.buildTypeCustom));\n\n            #endregion\n\n            #region prefab category type helpers\n\n            m_categoryTypeHelpers.Add(CategoryTypesEnum.COMMUNICATIONS,\n                new MyGuiPrefabCategoryTypeHelper(MyTextsWrapperEnum.categoryTypeCommunications));\n\n            m_categoryTypeHelpers.Add(CategoryTypesEnum.FLIGHT,\n                new MyGuiPrefabCategoryTypeHelper(MyTextsWrapperEnum.categoryTypeFlight));\n\n            /*m_categoryTypeHelpers.Add(CategoryTypesEnum.FUEL,\n                new MyGuiPrefabCategoryTypeHelper(MyTextsWrapperEnum.categoryTypeFuel));*/\n\n            m_categoryTypeHelpers.Add(CategoryTypesEnum.HANGARS,\n                new MyGuiPrefabCategoryTypeHelper(MyTextsWrapperEnum.categoryTypeHangars));\n\n            m_categoryTypeHelpers.Add(CategoryTypesEnum.INDUSTRY,\n                new MyGuiPrefabCategoryTypeHelper(MyTextsWrapperEnum.categoryTypeIndustry));\n\n            m_categoryTypeHelpers.Add(CategoryTypesEnum.LARGE,\n                new MyGuiPrefabCategoryTypeHelper(MyTextsWrapperEnum.categoryTypeLarge));\n\n            m_categoryTypeHelpers.Add(CategoryTypesEnum.LIFE_SUPPORT,\n                new MyGuiPrefabCategoryTypeHelper(MyTextsWrapperEnum.categoryTypeLifeSupport));\n\n            m_categoryTypeHelpers.Add(CategoryTypesEnum.MANNED_OBJECTS,\n                new MyGuiPrefabCategoryTypeHelper(MyTextsWrapperEnum.categoryTypeMannedObjects));\n\n            m_categoryTypeHelpers.Add(CategoryTypesEnum.MEDIUM,\n                new MyGuiPrefabCategoryTypeHelper(MyTextsWrapperEnum.categoryTypeMedium));\n\n            /*m_categoryTypeHelpers.Add(CategoryTypesEnum.OXYGEN,\n                new MyGuiPrefabCategoryTypeHelper(MyTextsWrapperEnum.categoryTypeOxygen));*/\n\n            m_categoryTypeHelpers.Add(CategoryTypesEnum.PIPES,\n                new MyGuiPrefabCategoryTypeHelper(MyTextsWrapperEnum.categoryTypePipe));\n\n            /*m_categoryTypeHelpers.Add(CategoryTypesEnum.POWER,\n                new MyGuiPrefabCategoryTypeHelper(MyTextsWrapperEnum.categoryTypePower));*/\n\n            m_categoryTypeHelpers.Add(CategoryTypesEnum.SMALL,\n                new MyGuiPrefabCategoryTypeHelper(MyTextsWrapperEnum.categoryTypeSmall));\n\n            m_categoryTypeHelpers.Add(CategoryTypesEnum.SUPPLY,\n                new MyGuiPrefabCategoryTypeHelper(MyTextsWrapperEnum.categoryTypeSupply));\n\n            m_categoryTypeHelpers.Add(CategoryTypesEnum.TUNNELS,\n                new MyGuiPrefabCategoryTypeHelper(MyTextsWrapperEnum.categoryTypeTunnel));\n\n            m_categoryTypeHelpers.Add(CategoryTypesEnum.WEAPONRY,\n                new MyGuiPrefabCategoryTypeHelper(MyTextsWrapperEnum.categoryTypeWeaponry));\n\n            m_categoryTypeHelpers.Add(CategoryTypesEnum.PASSAGES,\n                new MyGuiPrefabCategoryTypeHelper(MyTextsWrapperEnum.CategoryTypePassages));\n\n            m_categoryTypeHelpers.Add(CategoryTypesEnum.ARMORS,\n                new MyGuiPrefabCategoryTypeHelper(MyTextsWrapperEnum.CategoryTypeArmors));\n\n            m_categoryTypeHelpers.Add(CategoryTypesEnum.CHAMBERS,\n                new MyGuiPrefabCategoryTypeHelper(MyTextsWrapperEnum.CategoryTypeChambers));\n\n            m_categoryTypeHelpers.Add(CategoryTypesEnum.PANELS,\n                new MyGuiPrefabCategoryTypeHelper(MyTextsWrapperEnum.CategoryTypePanels));\n\n            m_categoryTypeHelpers.Add(CategoryTypesEnum.FRAME,\n                new MyGuiPrefabCategoryTypeHelper(MyTextsWrapperEnum.CategoryTypeFrame));\n\n            m_categoryTypeHelpers.Add(CategoryTypesEnum.LIGHTS,\n                new MyGuiPrefabCategoryTypeHelper(MyTextsWrapperEnum.CategoryTypeLights));\n\n            m_categoryTypeHelpers.Add(CategoryTypesEnum.PARTICLES,\n                new MyGuiPrefabCategoryTypeHelper(MyTextsWrapperEnum.CategoryTypeParticles));\n\n            m_categoryTypeHelpers.Add(CategoryTypesEnum.SOUNDS,\n                new MyGuiPrefabCategoryTypeHelper(MyTextsWrapperEnum.CategoryTypeSounds));\n\n            m_categoryTypeHelpers.Add(CategoryTypesEnum.BILLBOARDS,\n                new MyGuiPrefabCategoryTypeHelper(MyTextsWrapperEnum.CategoryTypeBillboards));\n\n            m_categoryTypeHelpers.Add(CategoryTypesEnum.SIGNS,\n                new MyGuiPrefabCategoryTypeHelper(MyTextsWrapperEnum.CategoryTypeSigns));\n\n            m_categoryTypeHelpers.Add(CategoryTypesEnum.TRAFFIC_SIGNS,\n                new MyGuiPrefabCategoryTypeHelper(MyTextsWrapperEnum.CategoryTypeTrafficSigns));\n\n            m_categoryTypeHelpers.Add(CategoryTypesEnum.OTHER,\n                new MyGuiPrefabCategoryTypeHelper(MyTextsWrapperEnum.CategoryTypeOther));\n\n            m_categoryTypeHelpers.Add(CategoryTypesEnum.DOORS,\n                new MyGuiPrefabCategoryTypeHelper(MyTextsWrapperEnum.CategoryTypeDoors));\n\n            m_categoryTypeHelpers.Add(CategoryTypesEnum.DOOR_CASES,\n                new MyGuiPrefabCategoryTypeHelper(MyTextsWrapperEnum.CategoryTypeDoorCases));\n\n            m_categoryTypeHelpers.Add(CategoryTypesEnum.LARGE_SHIPS,\n                new MyGuiPrefabCategoryTypeHelper(MyTextsWrapperEnum.CategoryTypeLargeShips));\n\n            m_categoryTypeHelpers.Add(CategoryTypesEnum.FOUNDATION_FACTORY,\n                new MyGuiPrefabCategoryTypeHelper(MyTextsWrapperEnum.FoundationFactory));\n\n            m_categoryTypeHelpers.Add(CategoryTypesEnum.SECURITY_CONTROL_HUB,\n                new MyGuiPrefabCategoryTypeHelper(MyTextsWrapperEnum.SecurityControlHUB));\n\n            m_categoryTypeHelpers.Add(CategoryTypesEnum.BANK_NODE,\n                new MyGuiPrefabCategoryTypeHelper(MyTextsWrapperEnum.BankNode));\n\n            m_categoryTypeHelpers.Add(CategoryTypesEnum.GENERATOR,\n                new MyGuiPrefabCategoryTypeHelper(MyTextsWrapperEnum.Generator));\n\n            m_categoryTypeHelpers.Add(CategoryTypesEnum.SCANNER,\n                new MyGuiPrefabCategoryTypeHelper(MyTextsWrapperEnum.Scanner));\n\n            m_categoryTypeHelpers.Add(CategoryTypesEnum.ALARM,\n                new MyGuiPrefabCategoryTypeHelper(MyTextsWrapperEnum.Alarm));\n\n            m_categoryTypeHelpers.Add(CategoryTypesEnum.MSHIP,\n                new MyGuiPrefabCategoryTypeHelper(MyTextsWrapperEnum.categoryTypeMship));\n\n            m_categoryTypeHelpers.Add(CategoryTypesEnum.CABLES,\n                new MyGuiPrefabCategoryTypeHelper(MyTextsWrapperEnum.categoryTypeCables));\n\n            m_categoryTypeHelpers.Add(CategoryTypesEnum.CAMERA,\n                new MyGuiPrefabCategoryTypeHelper(MyTextsWrapperEnum.Camera));\n\n            m_categoryTypeHelpers.Add(CategoryTypesEnum.SHELVES,\n                new MyGuiPrefabCategoryTypeHelper(MyTextsWrapperEnum.CategoryTypeShelves));\n\n            m_categoryTypeHelpers.Add(CategoryTypesEnum.BARRELS,\n                new MyGuiPrefabCategoryTypeHelper(MyTextsWrapperEnum.CategoryTypeBarrels));            \n\n            foreach (CategoryTypesEnum prefabTypeEnum in Enum.GetValues(typeof(CategoryTypesEnum)))\n            {\n                MyGuiPrefabCategoryTypeHelper prefabGuiHelper = null;\n                m_categoryTypeHelpers.TryGetValue(prefabTypeEnum, out prefabGuiHelper);\n\n                MyCommonDebugUtils.AssertDebug(prefabGuiHelper != null);\n            }\n\n\n            #endregion\n\n            #region prefab subcategory type helpers\n\n            m_subCategoryTypeHelpers.Add(SubCategoryTypesEnum.AMMUNITION_BOX,\n                new MyGuiPrefabSubCategoryTypeHelper(MyTextsWrapperEnum.subCategoryTypeAmmunitionBox));\n\n            m_subCategoryTypeHelpers.Add(SubCategoryTypesEnum.BIODOME,\n                new MyGuiPrefabSubCategoryTypeHelper(MyTextsWrapperEnum.subCategoryTypeBiodome));\n\n            m_subCategoryTypeHelpers.Add(SubCategoryTypesEnum.BRIDGE,\n                new MyGuiPrefabSubCategoryTypeHelper(MyTextsWrapperEnum.subCategoryTypeBridge));\n\n            m_subCategoryTypeHelpers.Add(SubCategoryTypesEnum.DOCKS,\n                new MyGuiPrefabSubCategoryTypeHelper(MyTextsWrapperEnum.subCategoryTypeDocks));\n\n            m_subCategoryTypeHelpers.Add(SubCategoryTypesEnum.ESCAPE_PODS,\n                new MyGuiPrefabSubCategoryTypeHelper(MyTextsWrapperEnum.subCategoryTypeEscapePods));\n\n            m_subCategoryTypeHelpers.Add(SubCategoryTypesEnum.FACTORY,\n                new MyGuiPrefabSubCategoryTypeHelper(MyTextsWrapperEnum.subCategoryTypeFactory));\n\n            m_subCategoryTypeHelpers.Add(SubCategoryTypesEnum.FUEL_GENERATION,\n                new MyGuiPrefabSubCategoryTypeHelper(MyTextsWrapperEnum.subCategoryTypeFuelGeneration));\n\n            m_subCategoryTypeHelpers.Add(SubCategoryTypesEnum.FUEL_STORAGE,\n                new MyGuiPrefabSubCategoryTypeHelper(MyTextsWrapperEnum.subCategoryTypeFuelStorage));\n\n            m_subCategoryTypeHelpers.Add(SubCategoryTypesEnum.GAS_STORAGE,\n                new MyGuiPrefabSubCategoryTypeHelper(MyTextsWrapperEnum.subCategoryTypeGasStorage));\n\n            m_subCategoryTypeHelpers.Add(SubCategoryTypesEnum.JUNCTION,\n                new MyGuiPrefabSubCategoryTypeHelper(MyTextsWrapperEnum.subCategoryTypeJunction));\n\n            m_subCategoryTypeHelpers.Add(SubCategoryTypesEnum.LARGE,\n                new MyGuiPrefabSubCategoryTypeHelper(MyTextsWrapperEnum.subCategoryTypeLarge));\n\n            m_subCategoryTypeHelpers.Add(SubCategoryTypesEnum.LIVING_QUARTERS,\n                new MyGuiPrefabSubCategoryTypeHelper(MyTextsWrapperEnum.subCategoryTypeLivingQuarters));\n\n            m_subCategoryTypeHelpers.Add(SubCategoryTypesEnum.LOADING_UNLOADING,\n                new MyGuiPrefabSubCategoryTypeHelper(MyTextsWrapperEnum.subCategoryTypeLoadingUnloading));\n\n            m_subCategoryTypeHelpers.Add(SubCategoryTypesEnum.LONG_DISTANCE_ANTENNA,\n                new MyGuiPrefabSubCategoryTypeHelper(MyTextsWrapperEnum.subCategoryTypeLongDistanceAntenna));\n\n            m_subCategoryTypeHelpers.Add(SubCategoryTypesEnum.LONG_TERM_THRUSTERS,\n                new MyGuiPrefabSubCategoryTypeHelper(MyTextsWrapperEnum.subCategoryTypeLongTermThrusters));\n\n            m_subCategoryTypeHelpers.Add(SubCategoryTypesEnum.ORE_STORAGE,\n                new MyGuiPrefabSubCategoryTypeHelper(MyTextsWrapperEnum.subCategoryTypeOreStorage));\n\n            m_subCategoryTypeHelpers.Add(SubCategoryTypesEnum.OTHER,\n                new MyGuiPrefabSubCategoryTypeHelper(MyTextsWrapperEnum.subCategoryTypeOther));\n\n            m_subCategoryTypeHelpers.Add(SubCategoryTypesEnum.OXYGEN_GENERATION,\n                new MyGuiPrefabSubCategoryTypeHelper(MyTextsWrapperEnum.subCategoryTypeOxygenGeneration));\n\n            m_subCategoryTypeHelpers.Add(SubCategoryTypesEnum.OXYGEN_STORAGE,\n                new MyGuiPrefabSubCategoryTypeHelper(MyTextsWrapperEnum.subCategoryTypeOxygenStorage));\n\n            m_subCategoryTypeHelpers.Add(SubCategoryTypesEnum.PASSAGE,\n                new MyGuiPrefabSubCategoryTypeHelper(MyTextsWrapperEnum.subCategoryTypePassage));\n\n            m_subCategoryTypeHelpers.Add(SubCategoryTypesEnum.POWER_GENERATION,\n                new MyGuiPrefabSubCategoryTypeHelper(MyTextsWrapperEnum.subCategoryTypePowerGeneration));\n\n            m_subCategoryTypeHelpers.Add(SubCategoryTypesEnum.POWER_STORAGE,\n                new MyGuiPrefabSubCategoryTypeHelper(MyTextsWrapperEnum.subCategoryTypePowerStorage));\n\n            m_subCategoryTypeHelpers.Add(SubCategoryTypesEnum.REFINERY,\n                new MyGuiPrefabSubCategoryTypeHelper(MyTextsWrapperEnum.subCategoryTypeRefinery));\n\n            m_subCategoryTypeHelpers.Add(SubCategoryTypesEnum.SHORT_DISTANCE_ANTENNA,\n                new MyGuiPrefabSubCategoryTypeHelper(MyTextsWrapperEnum.subCategoryTypeShortDistanceAntenna));\n\n            m_subCategoryTypeHelpers.Add(SubCategoryTypesEnum.SHORT_TERM_THRUSTERS,\n                new MyGuiPrefabSubCategoryTypeHelper(MyTextsWrapperEnum.subCategoryTypeShortTermThrusters));\n\n            m_subCategoryTypeHelpers.Add(SubCategoryTypesEnum.SMALL,\n                new MyGuiPrefabSubCategoryTypeHelper(MyTextsWrapperEnum.subCategoryTypeSmall));\n\n            m_subCategoryTypeHelpers.Add(SubCategoryTypesEnum.STRAIGHT,\n                new MyGuiPrefabSubCategoryTypeHelper(MyTextsWrapperEnum.subCategoryTypeStraight));\n\n            m_subCategoryTypeHelpers.Add(SubCategoryTypesEnum.TURN,\n                new MyGuiPrefabSubCategoryTypeHelper(MyTextsWrapperEnum.subCategoryTypeTurn));\n\n            m_subCategoryTypeHelpers.Add(SubCategoryTypesEnum.WEAPON_MOUNT,\n                new MyGuiPrefabSubCategoryTypeHelper(MyTextsWrapperEnum.subCategoryTypeWeaponMount));\n\n            m_subCategoryTypeHelpers.Add(SubCategoryTypesEnum.WIRES,\n                new MyGuiPrefabSubCategoryTypeHelper(MyTextsWrapperEnum.subCategoryTypeWires));\n\n            m_subCategoryTypeHelpers.Add(SubCategoryTypesEnum.CABLE_HOLDERS,\n                new MyGuiPrefabSubCategoryTypeHelper(MyTextsWrapperEnum.subCategoryTypeCableHolders));\n\n            m_subCategoryTypeHelpers.Add(SubCategoryTypesEnum.CONNECTION_BOXES,\n                new MyGuiPrefabSubCategoryTypeHelper(MyTextsWrapperEnum.subCategoryTypeConnectionBoxes));            \n\n\n            foreach (SubCategoryTypesEnum prefabTypeEnum in Enum.GetValues(typeof(SubCategoryTypesEnum)))\n            {\n                MyGuiPrefabSubCategoryTypeHelper prefabGuiHelper = null;\n                m_subCategoryTypeHelpers.TryGetValue(prefabTypeEnum, out prefabGuiHelper);\n\n                MyCommonDebugUtils.AssertDebug(prefabGuiHelper != null);\n            }\n\n\n            #endregion\n\n            #region Create prefab module helpers\n\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P430_A01_PASSAGE_10M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p430_a01_passage_10m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P430_A02_PASSAGE_40M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p430_a02_passage_40m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P424_A01_PIPE_BASE, new MyGuiPrefabHelper(MyTextsWrapperEnum.p424_a01_pipe_base));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P423_A01_PIPE_JUNCTION, new MyGuiPrefabHelper(MyTextsWrapperEnum.p423_a01_pipe_junction));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P422_A01_PIPE_TURN_90, new MyGuiPrefabHelper(MyTextsWrapperEnum.p422_a01_pipe_turn_90));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P421_A01_PIPE_STRAIGHT_80M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p421_a01_pipe_straight_80m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P421_A02_PIPE_STRAIGHT_40M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p421_a02_pipe_straight_40m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P421_A03_PIPE_STRAIGHT_10M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p421_a03_pipe_straight_10m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P413_G01_JUNCTION_6AXES, new MyGuiPrefabHelper(MyTextsWrapperEnum.p413_g01_junction_6axes));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P414_G02_ENTRANCE_60M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p414_g02_entrance_60m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P410_G01_TURN_90_RIGHT_0M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p410_g01_turn_90_right_0m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P411_G01_STRAIGHT_1, new MyGuiPrefabHelper(MyTextsWrapperEnum.p411_g01_straight_1));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P411_G02_STRAIGHT_2, new MyGuiPrefabHelper(MyTextsWrapperEnum.p411_g02_straight_2));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P411_G03_STRAIGHT_3, new MyGuiPrefabHelper(MyTextsWrapperEnum.p411_g03_straight_3));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P411_G04_STRAIGHT_4, new MyGuiPrefabHelper(MyTextsWrapperEnum.p411_g04_straight_4));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P414_F02_ENTRANCE_60M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p414_f02_entrance_60m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P412_F21_TURN_S_UP, new MyGuiPrefabHelper(MyTextsWrapperEnum.p412_f21_turn_s_up));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P412_F22_TURN_S_LEFT, new MyGuiPrefabHelper(MyTextsWrapperEnum.p412_f22_turn_s_left));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P412_F23_TURN_S_RIGHT, new MyGuiPrefabHelper(MyTextsWrapperEnum.p412_f23_turn_s_right));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P412_F24_TURN_S_DOWN, new MyGuiPrefabHelper(MyTextsWrapperEnum.p412_f24_turn_s_down));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P412_F01_TURN_90_UP_230M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p412_f01_turn_90_up_230m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P412_F02_TURN_90_LEFT_230M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p412_f02_turn_90_left_230m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P412_F03_TURN_90_RIGHT_230M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p412_f03_turn_90_right_230m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P412_F04_TURN_90_DOWN_230M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p412_f04_turn_90_down_230m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P411_F01_STRAIGHT_1, new MyGuiPrefabHelper(MyTextsWrapperEnum.p411_f01_straight_1));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P411_F02_STRAIGHT_2, new MyGuiPrefabHelper(MyTextsWrapperEnum.p411_f02_straight_2));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P411_F03_STRAIGHT_3, new MyGuiPrefabHelper(MyTextsWrapperEnum.p411_f03_straight_3));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P414_E01_ENTRANCE_60M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p414_e01_entrance_60m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P411_E01_STRAIGHT_1, new MyGuiPrefabHelper(MyTextsWrapperEnum.p411_e01_straight_1));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P411_E02_STRAIGHT_2, new MyGuiPrefabHelper(MyTextsWrapperEnum.p411_e02_straight_2));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P411_E03_STRAIGHT_3, new MyGuiPrefabHelper(MyTextsWrapperEnum.p411_e03_straight_3));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P411_E04_STRAIGHT_4, new MyGuiPrefabHelper(MyTextsWrapperEnum.p411_e04_straight_4));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P411_E05_STRAIGHT_5, new MyGuiPrefabHelper(MyTextsWrapperEnum.p411_e05_straight_5));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P415_D01_DOORCASE, new MyGuiPrefabHelper(MyTextsWrapperEnum.p415_d01_doorcase));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P415_D02_DOOR1, new MyGuiPrefabHelper(MyTextsWrapperEnum.p415_d02_door1));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P415_D03_DOOR2_A, new MyGuiPrefabHelper(MyTextsWrapperEnum.p415_d03_door2_a));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P415_D03_DOOR2_B, new MyGuiPrefabHelper(MyTextsWrapperEnum.p415_d03_door2_b));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P413_D01_JUNCTION_T_HORIZONTAL, new MyGuiPrefabHelper(MyTextsWrapperEnum.p413_d01_junction_t_horizontal));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P413_D03_JUNCTION_X_HORIZONTAL, new MyGuiPrefabHelper(MyTextsWrapperEnum.p413_d03_junction_x_horizontal));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P414_D01_ENTRANCE_60M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p414_d01_entrance_60m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P411_D01_STRAIGHT_10M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p411_d01_straight_10m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P411_D02_STRAIGHT_40M_WITH_HOLE, new MyGuiPrefabHelper(MyTextsWrapperEnum.p411_d02_straight_40m_with_hole));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P411_D03_STRAIGHT_60M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p411_d03_straight_60m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P411_D04_STRAIGHT_120M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p411_d04_straight_120m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P411_D05_STRAIGHT_180M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p411_d05_straight_180m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P415_C01_DOOR1, new MyGuiPrefabHelper(MyTextsWrapperEnum.p415_c02_door1));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P415_C01_DOOR2, new MyGuiPrefabHelper(MyTextsWrapperEnum.p415_c01_door2));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P415_C01_DOOR3, new MyGuiPrefabHelper(MyTextsWrapperEnum.p415_c01_door3));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P415_C01_DOOR4, new MyGuiPrefabHelper(MyTextsWrapperEnum.p415_c01_door4));            \n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P413_C01_JUNCTION_T_HORIZONTAL, new MyGuiPrefabHelper(MyTextsWrapperEnum.p413_c01_junction_t_horizontal));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P413_C01_JUNCTION_X_HORIZONTAL, new MyGuiPrefabHelper(MyTextsWrapperEnum.p413_c01_junction_x_horizontal));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P414_C01_ENTRANCE_60M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p414_c01_entrance_60m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P411_C01_STRAIGHT_10M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p411_c01_straight_10m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P411_C02_STRAIGHT_40M_WITH_HOLE, new MyGuiPrefabHelper(MyTextsWrapperEnum.p411_c02_straight_40m_with_hole));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P411_C03_STRAIGHT_60M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p411_c03_straight_60m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P411_C04_STRAIGHT_120M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p411_c04_straight_120m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P411_C05_STRAIGHT_180M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p411_c05_straight_180m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P415_B01_DOORCASE, new MyGuiPrefabHelper(MyTextsWrapperEnum.p415_b01_doorcase));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P415_B02_DOOR, new MyGuiPrefabHelper(MyTextsWrapperEnum.p415_b02_door));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P413_B01_JUNCTION_T_HORIZONTAL, new MyGuiPrefabHelper(MyTextsWrapperEnum.p413_b01_junction_t_horizontal));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P413_B02_JUNCTION_T_VERTICAL, new MyGuiPrefabHelper(MyTextsWrapperEnum.p413_b02_junction_t_vertical));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P414_B02_ENTRANCE_60M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p414_b02_entrance_60m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P412_B21_TURN_S_UP, new MyGuiPrefabHelper(MyTextsWrapperEnum.p412_b21_turn_s_up));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P412_B22_TURN_S_LEFT, new MyGuiPrefabHelper(MyTextsWrapperEnum.p412_b22_turn_s_left));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P412_B23_TURN_S_RIGHT, new MyGuiPrefabHelper(MyTextsWrapperEnum.p412_b23_turn_s_right));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P412_B24_TURN_S_DOWN, new MyGuiPrefabHelper(MyTextsWrapperEnum.p412_b24_turn_s_down));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P412_B11_TURN_90_UP_160M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p412_b11_turn_90_up_160m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P412_B12_TURN_90_LEFT_160M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p412_b12_turn_90_left_160m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P412_B13_TURN_90_RIGHT_160M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p412_b13_turn_90_right_160m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P412_B14_TURN_90_DOWN_160M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p412_b14_turn_90_down_160m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P412_B01_TURN_90_UP_80M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p412_b01_turn_90_up_80m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P412_B02_TURN_90_LEFT_80M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p412_b02_turn_90_left_80m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P412_B03_TURN_90_RIGHT_80M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p412_b03_turn_90_right_80m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P412_B04_TURN_90_DOWN_80M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p412_b04_turn_90_down_80m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P411_B01_STRAIGHT_10M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p411_b01_straight_10m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.p411_B02_STRAIGHT_30M_YELLOW, new MyGuiPrefabHelper(MyTextsWrapperEnum.p411_b02_straight_30m_yellow));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.p411_B03_STRAIGHT_320M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p411_b03_straight_320m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.p411_B04_STRAIGHT_80M_WITH_SIDE_GRATES, new MyGuiPrefabHelper(MyTextsWrapperEnum.p411_b04_straight_80m_with_side_grates));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.p411_B05_STRAIGHT_80M_WITH_SIDE_OPEN, new MyGuiPrefabHelper(MyTextsWrapperEnum.p411_b05_straight_80m_with_side_open));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.p411_B06_STRAIGHT_180M_CONCRETE, new MyGuiPrefabHelper(MyTextsWrapperEnum.p411_b06_straight_180m_concrete));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.p411_B06_STRAIGHT_200M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p411_b06_straight_200m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.p411_B07_STRAIGHT_180M_BLUE, new MyGuiPrefabHelper(MyTextsWrapperEnum.p411_b07_straight_180m_blue));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.p411_B09_STRAIGHT_30M_GRAY, new MyGuiPrefabHelper(MyTextsWrapperEnum.p411_b09_straight_30m_gray));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.p411_B11_STRAIGHT_220M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p411_b11_straight_220m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.p411_B12_STRAIGHT_160M_DARK_METAL, new MyGuiPrefabHelper(MyTextsWrapperEnum.p411_b12_straight_160m_dark_metal));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.p411_B13_STRAIGHT_100M_TUBE_INSIDE, new MyGuiPrefabHelper(MyTextsWrapperEnum.p411_b13_straight_100m_tube_inside));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P415_A01_DOORCASE, new MyGuiPrefabHelper(MyTextsWrapperEnum.p415_a01_doorcase));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P415_A02_DOOR_LEFT, new MyGuiPrefabHelper(MyTextsWrapperEnum.p415_a02_door));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P415_A02_DOOR_RIGHT, new MyGuiPrefabHelper(MyTextsWrapperEnum.p415_a02_door));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P413_A01_JUNCTION_T_HORIZONTAL, new MyGuiPrefabHelper(MyTextsWrapperEnum.p413_a01_junction_t_horizontal));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P413_A02_JUNCTION_T_VERTICAL, new MyGuiPrefabHelper(MyTextsWrapperEnum.p413_a02_junction_t_vertical));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P414_A01_ENTRANCE_30M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p414_a01_entrance_30m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P414_A02_ENTRANCE_60M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p414_a02_entrance_60m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P412_A21_TURN_S_UP, new MyGuiPrefabHelper(MyTextsWrapperEnum.p412_a21_turn_s_up));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P412_A22_TURN_S_LEFT, new MyGuiPrefabHelper(MyTextsWrapperEnum.p412_a22_turn_s_left));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P412_A23_TURN_S_RIGHT, new MyGuiPrefabHelper(MyTextsWrapperEnum.p412_a23_turn_s_right));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P412_A24_TURN_S_DOWN, new MyGuiPrefabHelper(MyTextsWrapperEnum.p412_a24_turn_s_down));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P412_A11_TURN_90_UP_160M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p412_a11_turn_90_up_160m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P412_A12_TURN_90_LEFT_160M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p412_a12_turn_90_left_160m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P412_A13_TURN_90_RIGHT_160M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p412_a13_turn_90_right_160m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P412_A14_TURN_90_DOWN_160M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p412_a14_turn_90_down_160m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P412_A01_TURN_90_UP_80M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p412_a01_turn_90_up_80m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P412_A02_TURN_90_LEFT_80M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p412_a02_turn_90_left_80m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P412_A03_TURN_90_RIGHT_80M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p412_a03_turn_90_right_80m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P412_A04_TURN_90_DOWN_80M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p412_a04_turn_90_down_80m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P411_A01_STRAIGHT_10M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p411_a01_straight_10m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P411_A02_STRAIGHT_60M_WITH_HOLE, new MyGuiPrefabHelper(MyTextsWrapperEnum.p411_a02_straight_60m_with_hole));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P411_A03_STRAIGHT_120M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p411_a03_straight_120m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P411_A04_STRAIGHT_80M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p411_a04_straight_80m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P411_A05_STRAIGHT_80M_WITH_EXTENSION, new MyGuiPrefabHelper(MyTextsWrapperEnum.p411_a05_straight_80m_with_extension));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P382_E01_BRIDGE5, new MyGuiPrefabHelper(MyTextsWrapperEnum.p382_e01_bridge5));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P382_D01_BRIDGE4, new MyGuiPrefabHelper(MyTextsWrapperEnum.p382_d01_bridge4));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P382_C01_BRIDGE3, new MyGuiPrefabHelper(MyTextsWrapperEnum.p382_c01_bridge3));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P382_B01_BRIDGE2, new MyGuiPrefabHelper(MyTextsWrapperEnum.p382_b01_bridge2));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P382_A01_BRIDGE1, new MyGuiPrefabHelper(MyTextsWrapperEnum.p382_a01_bridge1));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P381_C01_BUILDING3, new MyGuiPrefabHelper(MyTextsWrapperEnum.p381_c01_building3));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P381_B01_BUILDING2, new MyGuiPrefabHelper(MyTextsWrapperEnum.p381_b01_building2));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P381_A01_BUILDING1, new MyGuiPrefabHelper(MyTextsWrapperEnum.p381_a01_building1));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P361_A01_SMALL_HANGAR, new MyGuiPrefabHelper(MyTextsWrapperEnum.p361_a01_small_hangar));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P362_A01_SHORT_DISTANCE_ANTENNA, new MyGuiPrefabHelper(MyTextsWrapperEnum.p362_a01_short_distance_antenna));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P361_A01_LONG_DISTANCE_ANTENNA, new MyGuiPrefabHelper(MyTextsWrapperEnum.p361_a01_long_distance_antenna));\n\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P351_A01_WEAPON_MOUNT, new MyGuiPrefabHelper(MyTextsWrapperEnum.p351_a01_weapon_mount));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P352_A01_LARGESHIP_AUTOCANNON, new MyGuiPrefabHelper(MyTextsWrapperEnum.p351_a01_largeship_autocannon));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P352_A01_LARGESHIP_CIWS, new MyGuiPrefabHelper(MyTextsWrapperEnum.p351_a01_largeship_ciws));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P352_A01_LARGESHIP_MACHINEGUN, new MyGuiPrefabHelper(MyTextsWrapperEnum.p351_a01_largeship_machinegun));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P352_A01_LARGESHIP_MISSILE_BASIC4, new MyGuiPrefabHelper(MyTextsWrapperEnum.p351_a01_largeship_missile_gun4));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P352_A01_LARGESHIP_MISSILE_BASIC6, new MyGuiPrefabHelper(MyTextsWrapperEnum.p351_a01_largeship_missile_gun6));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P352_A01_LARGESHIP_MISSILE_BASIC9, new MyGuiPrefabHelper(MyTextsWrapperEnum.p351_a01_largeship_missile_gun9));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P352_A02_LARGESHIP_MISSILE_GUIDED4, new MyGuiPrefabHelper(MyTextsWrapperEnum.p351_a02_largeship_missile_gun_guided4));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P352_A02_LARGESHIP_MISSILE_GUIDED6, new MyGuiPrefabHelper(MyTextsWrapperEnum.p351_a02_largeship_missile_gun_guided6));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P352_A02_LARGESHIP_MISSILE_GUIDED9, new MyGuiPrefabHelper(MyTextsWrapperEnum.p351_a02_largeship_missile_gun_guided9));\n\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P345_A01_REFINERY, new MyGuiPrefabHelper(MyTextsWrapperEnum.p345_a01_refinery));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P344_A01_CONTAINER_ARM_FILLED, new MyGuiPrefabHelper(MyTextsWrapperEnum.p344_a01_container_arm_filled));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P344_A02_CONTAINER_ARM_EMPTY, new MyGuiPrefabHelper(MyTextsWrapperEnum.p344_a02_container_arm_empty));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P343_A01_ORE_STORAGE, new MyGuiPrefabHelper(MyTextsWrapperEnum.p343_a01_ore_storage));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P342_A01_LOADING_BAY, new MyGuiPrefabHelper(MyTextsWrapperEnum.p342_a01_loading_bay));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P341_B01_OPEN_DOCK_VARIATION1, new MyGuiPrefabHelper(MyTextsWrapperEnum.p341_b01_open_dock_variation1));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P341_B02_OPEN_DOCK_VARIATION2, new MyGuiPrefabHelper(MyTextsWrapperEnum.p341_b02_open_dock_variation2));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P341_A01_OPEN_DOCK_VARIATION1, new MyGuiPrefabHelper(MyTextsWrapperEnum.p341_a01_open_dock_variation1));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P341_A02_OPEN_DOCK_VARIATION2, new MyGuiPrefabHelper(MyTextsWrapperEnum.p341_a02_open_dock_variation2));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P333_A01_HYDROPONIC_BUILDING, new MyGuiPrefabHelper(MyTextsWrapperEnum.p333_a01_hydroponic_building));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P332_A01_OXYGEN_STORAGE, new MyGuiPrefabHelper(MyTextsWrapperEnum.p332_a01_oxygen_storage));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P331_A01_OXYGEN_GENERATOR, new MyGuiPrefabHelper(MyTextsWrapperEnum.p331_a01_oxygen_generator));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P324B01_FUEL_STORAGE_B, new MyGuiPrefabHelper(MyTextsWrapperEnum.p324b01_fuel_storage_b));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P324A01_FUEL_STORAGE_A, new MyGuiPrefabHelper(MyTextsWrapperEnum.p324a01_fuel_storage_a));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P323A01_FUEL_GENERATOR, new MyGuiPrefabHelper(MyTextsWrapperEnum.p323a01_fuel_generator));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P322A01_BATTERY, new MyGuiPrefabHelper(MyTextsWrapperEnum.p322a01_battery));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P321C01_INERTIA_GENERATOR, new MyGuiPrefabHelper(MyTextsWrapperEnum.p321c01_inertia_generator));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P321B01_NUCLEAR_REACTOR, new MyGuiPrefabHelper(MyTextsWrapperEnum.p321b01_nuclear_reactor));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P321A01_SOLAR_PANEL, new MyGuiPrefabHelper(MyTextsWrapperEnum.p321a01_solar_panel));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P312A01_SHORT_TERM_THRUSTER_LATITUDE, new MyGuiPrefabHelper(MyTextsWrapperEnum.p312a01_short_term_thruster_latitude));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P312A02_SHORT_TERM_THRUSTER_LATERAL, new MyGuiPrefabHelper(MyTextsWrapperEnum.p312a02_short_term_thruster_lateral));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P311A01_LONG_TERM_THRUSTER, new MyGuiPrefabHelper(MyTextsWrapperEnum.p311a01_long_term_thruster));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P231A01_ARMOR, new MyGuiPrefabHelper(MyTextsWrapperEnum.p231a01_armor));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P231A02_ARMOR, new MyGuiPrefabHelper(MyTextsWrapperEnum.p231a02_armor));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P231A03_ARMOR, new MyGuiPrefabHelper(MyTextsWrapperEnum.p231a03_armor));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P231A04_ARMOR, new MyGuiPrefabHelper(MyTextsWrapperEnum.p231a04_armor));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P231A05_ARMOR, new MyGuiPrefabHelper(MyTextsWrapperEnum.p231a05_armor));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P231A06_ARMOR, new MyGuiPrefabHelper(MyTextsWrapperEnum.p231a06_armor));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P231A07_ARMOR, new MyGuiPrefabHelper(MyTextsWrapperEnum.p231a07_armor));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P231A08_ARMOR, new MyGuiPrefabHelper(MyTextsWrapperEnum.p231a08_armor));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P231A09_ARMOR, new MyGuiPrefabHelper(MyTextsWrapperEnum.p231a09_armor));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P231A10_ARMOR, new MyGuiPrefabHelper(MyTextsWrapperEnum.p231a10_armor));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P231A11_ARMOR, new MyGuiPrefabHelper(MyTextsWrapperEnum.p231a11_armor));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P231A12_ARMOR, new MyGuiPrefabHelper(MyTextsWrapperEnum.p231a12_armor));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P231A13_ARMOR, new MyGuiPrefabHelper(MyTextsWrapperEnum.p231a13_armor));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P231A14_ARMOR, new MyGuiPrefabHelper(MyTextsWrapperEnum.p231a14_armor));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P231A15_ARMOR, new MyGuiPrefabHelper(MyTextsWrapperEnum.p231a15_armor));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P231A16_ARMOR, new MyGuiPrefabHelper(MyTextsWrapperEnum.p231a16_armor));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P231A17_ARMOR, new MyGuiPrefabHelper(MyTextsWrapperEnum.p231a17_armor));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P231A18_ARMOR, new MyGuiPrefabHelper(MyTextsWrapperEnum.p231a18_armor));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P221E01_CHAMBER_V1, new MyGuiPrefabHelper(MyTextsWrapperEnum.p221e01_chamber_v1));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P221D01_CHAMBER_V1, new MyGuiPrefabHelper(MyTextsWrapperEnum.p221d01_chamber_v1));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P221C01_CHAMBER_V1, new MyGuiPrefabHelper(MyTextsWrapperEnum.p221c01_chamber_v1));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P221B01_CHAMBER_V1, new MyGuiPrefabHelper(MyTextsWrapperEnum.p221b01_chamber_v1));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P221A01_CHAMBER_V1, new MyGuiPrefabHelper(MyTextsWrapperEnum.p221a01_chamber_v1));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P211G01_PANEL_120MX60M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p211g01_panel_120mx60m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P211G02_PANEL_60MX60M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p211g02_panel_60mx60m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P211G03_PANEL_60MX30M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p211g03_panel_60mx30m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P211F01_PANEL_120MX60M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p211f01_panel_120mx60m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P211F02_PANEL_60MX60M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p211f02_panel_60mx60m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P211F03_PANEL_60MX30M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p211f03_panel_60mx30m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P211E01_PANEL_120MX60M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p211e01_panel_120mx60m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P211E02_PANEL_60MX60M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p211e02_panel_60mx60m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P211E03_PANEL_60MX30M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p211e03_panel_60mx30m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P211D01_PANEL_120MX60M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p211d01_panel_120mx60m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P211D02_PANEL_60MX60M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p211d02_panel_60mx60m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P211D03_PANEL_60MX30M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p211d03_panel_60mx30m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P211C01_PANEL_120MX60M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p211c01_panel_120mx60m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P211C02_PANEL_60MX60M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p211c02_panel_60mx60m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P211C03_PANEL_60MX30M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p211c03_panel_60mx30m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P211B01_PANEL_120MX60M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p211b01_panel_120mx60m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P211B02_PANEL_60MX60M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p211b02_panel_60mx60m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P211B03_PANEL_60MX30M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p211b03_panel_60mx30m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P211A01_PANEL_120MX60M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p211a01_panel_120mx60m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P211A02_PANEL_60MX60M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p211a02_panel_60mx60m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P211A03_PANEL_60MX30M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p211a03_panel_60mx30m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P142B01_CAGE_EMPTY, new MyGuiPrefabHelper(MyTextsWrapperEnum.p142b01_cage_empty));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P142B02_CAGE_HALFCUT, new MyGuiPrefabHelper(MyTextsWrapperEnum.p142b02_cage_halfcut));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P142B03_CAGE_WITH_CORNERS, new MyGuiPrefabHelper(MyTextsWrapperEnum.p142b03_cage_with_corners));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P142B11_CAGE_PILLAR, new MyGuiPrefabHelper(MyTextsWrapperEnum.p142b11_cage_pillar));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P142B12_CAGE_EDGE, new MyGuiPrefabHelper(MyTextsWrapperEnum.p142b12_cage_edge));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P142A01_CAGE_EMPTY, new MyGuiPrefabHelper(MyTextsWrapperEnum.p142a01_cage_empty));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P142A02_CAGE_HALFCUT, new MyGuiPrefabHelper(MyTextsWrapperEnum.p142a02_cage_halfcut));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P142A03_CAGE_WITH_CORNERS, new MyGuiPrefabHelper(MyTextsWrapperEnum.p142a03_cage_with_corners));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P142A11_CAGE_PILLAR, new MyGuiPrefabHelper(MyTextsWrapperEnum.p142a11_cage_pillar));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P142A12_CAGE_EDGE, new MyGuiPrefabHelper(MyTextsWrapperEnum.p142a12_cage_edge));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P141B01_THICK_FRAME_STRAIGHT_10M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p141b01_thick_frame_straight_10m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P141B02_THICK_FRAME_STRAIGHT_60M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p141b02_thick_frame_straight_60m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P141B11_THICK_FRAME_EDGE, new MyGuiPrefabHelper(MyTextsWrapperEnum.p141b11_thick_frame_edge));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P141B12_THICK_FRAME_CORNER, new MyGuiPrefabHelper(MyTextsWrapperEnum.p141b12_thick_frame_corner));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P141B31_THICK_FRAME_JOINT, new MyGuiPrefabHelper(MyTextsWrapperEnum.p141b31_thick_frame_joint));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P141A01_THICK_FRAME_STRAIGHT_10M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p141a01_thick_frame_straight_10m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P141A02_THICK_FRAME_STRAIGHT_60M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p141a02_thick_frame_straight_60m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P141A11_THICK_FRAME_EDGE, new MyGuiPrefabHelper(MyTextsWrapperEnum.p141a11_thick_frame_edge));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P141A12_THICK_FRAME_CORNER, new MyGuiPrefabHelper(MyTextsWrapperEnum.p141a12_thick_frame_corner));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P141A31_THICK_FRAME_JOINT, new MyGuiPrefabHelper(MyTextsWrapperEnum.p141a31_thick_frame_joint));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P120J01_J_STRAIGHT_30M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p120j01_j_straight_30m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P130J02_J_STRAIGHT_10M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p130j02_j_straight_10m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P120I01_I_STRAIGHT_30M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p120i01_i_straight_30m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P130I02_I_STRAIGHT_10M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p130i02_i_straight_10m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P120H01_H_STRAIGHT_30M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p120h01_h_straight_30m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P130H02_H_STRAIGHT_10M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p130h02_h_straight_10m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P120G01_G_STRAIGHT_30M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p120g01_g_straight_30m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P130G02_G_STRAIGHT_10M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p130g02_g_straight_10m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P120F01_F_STRAIGHT_30M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p120f01_f_straight_30m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P130F02_F_STRAIGHT_10M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p130f02_f_straight_10m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P120E01_E_STRAIGHT_30M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p120e01_e_straight_30m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P130E02_E_STRAIGHT_10M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p130e02_e_straight_10m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P120D01_D_STRAIGHT_30M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p120d01_d_straight_30m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P130D02_D_STRAIGHT_10M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p130d02_d_straight_10m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P120C01_C_STRAIGHT_30M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p120c01_c_straight_30m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P130C02_C_STRAIGHT_10M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p130c02_c_straight_10m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P120B01_B_STRAIGHT_30M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p120b01_b_straight_30m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P130B02_B_STRAIGHT_10M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p130b02_b_straight_10m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P120A01_A_STRAIGHT_30M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p120a01_a_straight_30m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P130A02_A_STRAIGHT_10M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p130a02_a_straight_10m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P120D01_D_STRAIGHT_10M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p120d01_d_straight_10m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P120D02_D_STRAIGHT_40M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p120d02_d_straight_40m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P120C01_C_STRAIGHT_10M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p120c01_c_straight_10m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P120C02_C_STRAIGHT_40M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p120c02_c_straight_40m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P120B01_B_STRAIGHT_10M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p120b01_b_straight_10m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P120B02_B_STRAIGHT_40M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p120b02_b_straight_40m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P120A01_STRONG_LATTICE_STRAIGHT_10M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p120a01_strong_lattice_straight_10m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P120A02_STRONG_LATTICE_STRAIGHT_60M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p120a02_strong_lattice_straight_60m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P120A03_STRONG_LATTICE_STRAIGHT_120M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p120a03_strong_lattice_straight_120m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P120A21_STRONG_LATTICE_JUNCTION_T_STRONG, new MyGuiPrefabHelper(MyTextsWrapperEnum.p120a21_strong_lattice_junction_t_strong));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P120A22_STRONG_LATTICE_JUNCTION_T_WEAK, new MyGuiPrefabHelper(MyTextsWrapperEnum.p120a22_strong_lattice_junction_t_weak));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P120A23_STRONG_LATTICE_JUNCTION_T_ROTATED, new MyGuiPrefabHelper(MyTextsWrapperEnum.p120a23_strong_lattice_junction_t_rotated));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P120A51_STRONG_TO_WEAK_LATTICE_2TO1, new MyGuiPrefabHelper(MyTextsWrapperEnum.p120a51_strong_to_weak_lattice_2to1));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P120A52_STRONG_TO_WEAK_LATTICE_1TO2, new MyGuiPrefabHelper(MyTextsWrapperEnum.p120a52_strong_to_weak_lattice_1to2));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P120A61_WEAK_LATTICE_JUNCTION_T_ROTATED, new MyGuiPrefabHelper(MyTextsWrapperEnum.p120a61_weak_lattice_junction_t_rotated));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P110B01_LATTICE_BEAM_STRAIGHT_10M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p110b01_lattice_beam_straight_10m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P110B02_LATTICE_BEAM_STRAIGHT_30M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p110b02_lattice_beam_straight_30m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P110B03_LATTICE_BEAM_STRAIGHT_60M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p110b03_lattice_beam_straight_60m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P110B04_LATTICE_BEAM_STRAIGHT_60M_WITH_PANELS, new MyGuiPrefabHelper(MyTextsWrapperEnum.p110b04_lattice_beam_straight_60m_with_panels));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P110B21_LATTICE_BEAM_JUNCTION_T_STRONG, new MyGuiPrefabHelper(MyTextsWrapperEnum.p110b21_lattice_beam_junction_t_strong));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P110B22_LATTICE_BEAM_JUNCTION_T_WEAK, new MyGuiPrefabHelper(MyTextsWrapperEnum.p110b22_lattice_beam_junction_t_weak));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P110B31_LATTICE_BEAM_JOINT_HORIZONTAL, new MyGuiPrefabHelper(MyTextsWrapperEnum.p110b31_lattice_beam_joint_horizontal));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P110B32_LATTICE_BEAM_JOINT_VERTICAL, new MyGuiPrefabHelper(MyTextsWrapperEnum.p110b32_lattice_beam_joint_vertical));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P110A01_SOLID_BEAM_STRAIGHT_10M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p110a01_solid_beam_straight_10m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P110A02_SOLID_BEAM_STRAIGHT_20M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p110a02_solid_beam_straight_20m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P110A03_SOLID_BEAM_STRAIGHT_40M_WITH_HOLE, new MyGuiPrefabHelper(MyTextsWrapperEnum.p110a03_solid_beam_straight_40m_with_hole));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P110A04_SOLID_BEAM_STRAIGHT_40M_LATTICE, new MyGuiPrefabHelper(MyTextsWrapperEnum.p110a04_solid_beam_straight_40m_lattice));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P110A05_SOLID_BEAM_STRAIGHT_80M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p110a05_solid_beam_straight_80m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P110A11_SOLID_BEAM_JUNCTION_X_STRONG, new MyGuiPrefabHelper(MyTextsWrapperEnum.p110a11_solid_beam_junction_x_strong));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P110A12_SOLID_BEAM_JUNCTION_X_WEAK, new MyGuiPrefabHelper(MyTextsWrapperEnum.p110a12_solid_beam_junction_x_weak));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P110A13_SOLID_BEAM_JUNCTION_X_ROTATED, new MyGuiPrefabHelper(MyTextsWrapperEnum.p110a13_solid_beam_junction_x_rotated));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P110A21_SOLID_BEAM_JUNCTION_T_STRONG, new MyGuiPrefabHelper(MyTextsWrapperEnum.p110a21_solid_beam_junction_t_strong));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P110A22_SOLID_BEAM_JUNCTION_T_WEAK, new MyGuiPrefabHelper(MyTextsWrapperEnum.p110a22_solid_beam_junction_t_weak));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P110A23_SOLID_BEAM_JUNCTION_T_ROTATED, new MyGuiPrefabHelper(MyTextsWrapperEnum.p110a23_solid_beam_junction_t_rotated));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P110A31_SOLID_BEAM_JOINT_HORIZONTAL, new MyGuiPrefabHelper(MyTextsWrapperEnum.p110a31_solid_beam_joint_horizontal));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P110A32_SOLID_BEAM_JOINT_VERTICAL, new MyGuiPrefabHelper(MyTextsWrapperEnum.p110a32_solid_beam_joint_vertical));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P110A33_SOLID_BEAM_JOINT_LONGITUDINAL, new MyGuiPrefabHelper(MyTextsWrapperEnum.p110a33_solid_beam_joint_longitudinal));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P110A41_SOLID_BEAM_SUPERJOINT, new MyGuiPrefabHelper(MyTextsWrapperEnum.p110a41_solid_beam_superjoint));\n            ////@ Lights\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.DEFAULT_LIGHT_0, new MyGuiPrefabHelper(MyTextsWrapperEnum.default_light_0));\n\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P521_A01_LIGHT1, new MyGuiPrefabHelper(MyTextsWrapperEnum.p521_a01_light1));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P521_A02_LIGHT2, new MyGuiPrefabHelper(MyTextsWrapperEnum.p521_a02_light2));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P521_A03_LIGHT3, new MyGuiPrefabHelper(MyTextsWrapperEnum.p521_a03_light3));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P521_A04_LIGHT4, new MyGuiPrefabHelper(MyTextsWrapperEnum.p521_a04_light4));\n\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.DEFAULT_PARTICLE_PREFAB_0, new MyGuiPrefabHelper(MyTextsWrapperEnum.default_particles_prefab_0));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P551_A01_PARTICLES, new MyGuiPrefabHelper(MyTextsWrapperEnum.p551_a01_particles));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P551_B01_PARTICLES, new MyGuiPrefabHelper(MyTextsWrapperEnum.p551_b01_particles));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P551_C01_PARTICLES, new MyGuiPrefabHelper(MyTextsWrapperEnum.p551_c01_particles));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P551_D01_PARTICLES, new MyGuiPrefabHelper(MyTextsWrapperEnum.p551_d01_particles));\n\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.DEFAULT_SOUND_PREFAB_0, new MyGuiPrefabHelper(MyTextsWrapperEnum.default_sound_prefab_0));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P561_A01_SOUND, new MyGuiPrefabHelper(MyTextsWrapperEnum.p561_a01_sound));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P561_B01_SOUND, new MyGuiPrefabHelper(MyTextsWrapperEnum.p561_b01_sound));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P561_C01_SOUND, new MyGuiPrefabHelper(MyTextsWrapperEnum.p561_c01_sound));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P561_D01_SOUND, new MyGuiPrefabHelper(MyTextsWrapperEnum.p561_d01_sound));\n\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P511_A01_BILLBOARD, new MyGuiPrefabHelper(MyTextsWrapperEnum.p511_a01_billboard));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P511_A02_BILLBOARD, new MyGuiPrefabHelper(MyTextsWrapperEnum.p511_a02_billboard));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P511_A03_BILLBOARD, new MyGuiPrefabHelper(MyTextsWrapperEnum.p511_a03_billboard));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P511_A04_BILLBOARD, new MyGuiPrefabHelper(MyTextsWrapperEnum.p511_a04_billboard));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P511_A05_BILLBOARD, new MyGuiPrefabHelper(MyTextsWrapperEnum.p511_a05_billboard));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P511_A06_BILLBOARD, new MyGuiPrefabHelper(MyTextsWrapperEnum.p511_a06_billboard));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P511_A07_BILLBOARD, new MyGuiPrefabHelper(MyTextsWrapperEnum.p511_a07_billboard));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P511_A08_BILLBOARD, new MyGuiPrefabHelper(MyTextsWrapperEnum.p511_a08_billboard));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P511_A09_BILLBOARD, new MyGuiPrefabHelper(MyTextsWrapperEnum.p511_a09_billboard));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P511_A10_BILLBOARD, new MyGuiPrefabHelper(MyTextsWrapperEnum.p511_a10_billboard));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P511_A11_BILLBOARD, new MyGuiPrefabHelper(MyTextsWrapperEnum.p511_a11_billboard));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P511_A12_BILLBOARD, new MyGuiPrefabHelper(MyTextsWrapperEnum.p511_a12_billboard));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P511_A13_BILLBOARD, new MyGuiPrefabHelper(MyTextsWrapperEnum.p511_a13_billboard));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P511_A14_BILLBOARD, new MyGuiPrefabHelper(MyTextsWrapperEnum.p511_a14_billboard));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P511_A15_BILLBOARD, new MyGuiPrefabHelper(MyTextsWrapperEnum.p511_a15_billboard));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P511_A16_BILLBOARD, new MyGuiPrefabHelper(MyTextsWrapperEnum.p511_a16_billboard));\n\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P531_A01_SIGN1, new MyGuiPrefabHelper(MyTextsWrapperEnum.p531_a01_sign1));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P531_A02_SIGN2, new MyGuiPrefabHelper(MyTextsWrapperEnum.p531_a02_sign2));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P531_A03_SIGN3, new MyGuiPrefabHelper(MyTextsWrapperEnum.p531_a03_sign3));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P531_A04_SIGN4, new MyGuiPrefabHelper(MyTextsWrapperEnum.p531_a04_sign4));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P531_A05_SIGN5, new MyGuiPrefabHelper(MyTextsWrapperEnum.p531_a05_sign5));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P531_A06_SIGN6, new MyGuiPrefabHelper(MyTextsWrapperEnum.p531_a06_sign6));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P531_A07_SIGN7, new MyGuiPrefabHelper(MyTextsWrapperEnum.p531_a07_sign7));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P531_A08_SIGN8, new MyGuiPrefabHelper(MyTextsWrapperEnum.p531_a08_sign8));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P531_A09_SIGN9, new MyGuiPrefabHelper(MyTextsWrapperEnum.p531_a09_sign9));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P531_A10_SIGN10, new MyGuiPrefabHelper(MyTextsWrapperEnum.p531_a10_sign10));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P531_A11_SIGN11, new MyGuiPrefabHelper(MyTextsWrapperEnum.p531_a11_sign11));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P531_A12_SIGN12, new MyGuiPrefabHelper(MyTextsWrapperEnum.p531_a12_sign12));\n\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P221_A02_CHAMBER_V2, new MyGuiPrefabHelper(MyTextsWrapperEnum.p221_a02_chamber_v2));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P221_B02_CHAMBER_V2, new MyGuiPrefabHelper(MyTextsWrapperEnum.p221_b02_chamber_v2));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P221_C02_CHAMBER_V2, new MyGuiPrefabHelper(MyTextsWrapperEnum.p221_c02_chamber_v2));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P221_D02_CHAMBER_V2, new MyGuiPrefabHelper(MyTextsWrapperEnum.p221_d02_chamber_v2));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P221_E02_CHAMBER_V2, new MyGuiPrefabHelper(MyTextsWrapperEnum.p221_e02_chamber_v2));\n\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P130_A01_STRAIGHT_10M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p130a01_a_straight_10m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P130_A02_STRAIGHT_30M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p130a02_a_straight_30m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P130_B01_STRAIGHT_10M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p130b01_b_straight_10m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P130_B02_STRAIGHT_30M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p130b02_b_straight_30m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P130_C01_STRAIGHT_10M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p130c01_c_straight_10m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P130_C02_STRAIGHT_30M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p130c02_c_straight_30m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P130_D01_STRAIGHT_10M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p130d01_d_straight_10m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P130_D02_STRAIGHT_30M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p130d02_d_straight_30m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P130_E01_STRAIGHT_10M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p130e01_e_straight_10m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P130_E02_STRAIGHT_30M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p130e02_e_straight_30m));\n\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P321_B01_SOLAR_PANEL, new MyGuiPrefabHelper(MyTextsWrapperEnum.p321b01_solar_panel));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P321_C01_SOLAR_PANEL, new MyGuiPrefabHelper(MyTextsWrapperEnum.p321c01_solar_panel));\n\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P413_D02_JUNCTION_T_VERTICAL, new MyGuiPrefabHelper(MyTextsWrapperEnum.p413_d02_junction_t_vertical));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P413_D04_JUNCTION_X_VERTICAL, new MyGuiPrefabHelper(MyTextsWrapperEnum.p413_d04_junction_x_vertical));\n\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P412_F11_TURN_90_UP_230M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p412_f11_turn_90_up_230m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P412_F12_TURN_90_LEFT_230M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p412_f12_turn_90_left_230m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P412_F13_TURN_90_RIGHT_230M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p412_f13_turn_90_right_230m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P412_F14_TURN_90_DOWN_230M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p412_f14_turn_90_down_230m));\n\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P411_F04_STRAIGHT_4, new MyGuiPrefabHelper(MyTextsWrapperEnum.p411_f04_straight_4));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P411_F05_STRAIGHT_5, new MyGuiPrefabHelper(MyTextsWrapperEnum.p411_f05_straight_5));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P411_G05_STRAIGHT_5, new MyGuiPrefabHelper(MyTextsWrapperEnum.p411_g05_straight_5));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P414_F01_ENTRANCE_60M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p414_f01_entrance_60m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P414_G01_ENTRANCE_60M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p414_g01_entrance_60m));\n\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P571_A01_TRAFFIC_SIGN, new MyGuiPrefabHelper(MyTextsWrapperEnum.p571_a01_traffic_sign));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P571_B01_TRAFFIC_SIGN, new MyGuiPrefabHelper(MyTextsWrapperEnum.p571_b01_traffic_sign));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P571_BOX01_TRAFFIC_SIGN, new MyGuiPrefabHelper(MyTextsWrapperEnum.p571_box01_traffic_sign));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P571_BOX02_TRAFFIC_SIGN, new MyGuiPrefabHelper(MyTextsWrapperEnum.p571_box02_traffic_sign));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P571_C01_TRAFFIC_SIGN, new MyGuiPrefabHelper(MyTextsWrapperEnum.p571_c01_traffic_sign));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P571_D01_TRAFFIC_SIGN, new MyGuiPrefabHelper(MyTextsWrapperEnum.p571_d01_traffic_sign));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P571_E01_TRAFFIC_SIGN, new MyGuiPrefabHelper(MyTextsWrapperEnum.p571_e01_traffic_sign));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P571_F01_TRAFFIC_SIGN, new MyGuiPrefabHelper(MyTextsWrapperEnum.p571_f01_traffic_sign));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P571_G01_TRAFFIC_SIGN, new MyGuiPrefabHelper(MyTextsWrapperEnum.p571_g01_traffic_sign));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P571_H01_TRAFFIC_SIGN, new MyGuiPrefabHelper(MyTextsWrapperEnum.p571_h01_traffic_sign));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P571_I01_TRAFFIC_SIGN, new MyGuiPrefabHelper(MyTextsWrapperEnum.p571_i01_traffic_sign));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P571_J01_TRAFFIC_SIGN, new MyGuiPrefabHelper(MyTextsWrapperEnum.p571_j01_traffic_sign));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P571_K01_TRAFFIC_SIGN, new MyGuiPrefabHelper(MyTextsWrapperEnum.p571_k01_traffic_sign));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P571_L01_TRAFFIC_SIGN, new MyGuiPrefabHelper(MyTextsWrapperEnum.p571_l01_traffic_sign));\n\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P415_C02_DOOR1_RIGHT, new MyGuiPrefabHelper(MyTextsWrapperEnum.p571_l01_traffic_sign));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P415_C02_DOOR1_LEFT, new MyGuiPrefabHelper(MyTextsWrapperEnum.p571_l01_traffic_sign));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P415_C03_DOOR2_A, new MyGuiPrefabHelper(MyTextsWrapperEnum.p571_l01_traffic_sign));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P415_C03_DOOR2_B, new MyGuiPrefabHelper(MyTextsWrapperEnum.p571_l01_traffic_sign));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P415_C03_DOOR2_A_LEFT, new MyGuiPrefabHelper(MyTextsWrapperEnum.p571_l01_traffic_sign));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P415_C03_DOOR2_A_RIGHT, new MyGuiPrefabHelper(MyTextsWrapperEnum.p571_l01_traffic_sign));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P415_C03_DOOR2_B_LEFT, new MyGuiPrefabHelper(MyTextsWrapperEnum.p571_l01_traffic_sign));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P415_C03_DOOR2_B_RIGHT, new MyGuiPrefabHelper(MyTextsWrapperEnum.p571_l01_traffic_sign));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P341_A01_OPEN_DOCK_VARIATION1_DOORLEFT, new MyGuiPrefabHelper(MyTextsWrapperEnum.p571_l01_traffic_sign));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P341_A01_OPEN_DOCK_VARIATION1_DOORRIGHT, new MyGuiPrefabHelper(MyTextsWrapperEnum.p571_l01_traffic_sign));\n\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.SimpleObject, new MyGuiPrefabHelper(MyTextsWrapperEnum.customObject));\n\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P385_A01_TEMPLE_900M, new MyGuiPrefabHelper(MyTextsWrapperEnum.p385_a01_temple_900m));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P384_A01_HOSPITAL, new MyGuiPrefabHelper(MyTextsWrapperEnum.p384_a01_hospital));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P383_A01_CHURCH, new MyGuiPrefabHelper(MyTextsWrapperEnum.p383_a01_church));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P334_A01_FOOD_GROW, new MyGuiPrefabHelper(MyTextsWrapperEnum.p334_a01_food_grow));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P345_A01_BIO_EXP, new MyGuiPrefabHelper(MyTextsWrapperEnum.p345_a01_bio_exp));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P345_A01_BIO_MACH_EXP, new MyGuiPrefabHelper(MyTextsWrapperEnum.p345_a01_bio_mach_exp));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P345_A01_RECYCLE, new MyGuiPrefabHelper(MyTextsWrapperEnum.p345_a01_recycle));\n\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.LARGESHIP_KAI, new MyGuiPrefabHelper(MyTextsWrapperEnum.LargeShipKai));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.LARGESHIP_SAYA, new MyGuiPrefabHelper(MyTextsWrapperEnum.LargeShipSaya));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.LARGESHIP_ARDANT, new MyGuiPrefabHelper(MyTextsWrapperEnum.LargeShipArdant));\n\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P541_ESCAPE_POD, new MyGuiPrefabHelper(MyTextsWrapperEnum.p541_escape_pod));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P541_ESCAPE_POD_BASE, new MyGuiPrefabHelper(MyTextsWrapperEnum.p541_escape_pod_base));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P541_VENTILATOR_BODY, new MyGuiPrefabHelper(MyTextsWrapperEnum.p541_ventilator_body));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P541_VENTILATOR_PROPELLER, new MyGuiPrefabHelper(MyTextsWrapperEnum.p541_ventilator_propeller));\n\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P349_A_TOWER, new MyGuiPrefabHelper(MyTextsWrapperEnum.p349_a_tower));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P349_B_TOWER, new MyGuiPrefabHelper(MyTextsWrapperEnum.p349_b_tower));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P349_C_TOWER, new MyGuiPrefabHelper(MyTextsWrapperEnum.p349_c_tower));\n\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P361_A02_HANGAR_PANEL, new MyGuiPrefabHelper(MyTextsWrapperEnum.p361_a02_hangar_panel));\n\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P531_B_FACTION, new MyGuiPrefabHelper(MyTextsWrapperEnum.p531_b_faction));\n            //m_prefabTypeHelpers.Add(MyMwcObjectBuilder_Prefab_TypesEnum.P531_B_FACTION_HOLO, new MyGuiPrefabHelper(MyTextsWrapperEnum.p531_b_faction_holo));\n\n            //foreach (MyMwcObjectBuilder_Prefab_TypesEnum prefabTypeEnum in Enum.GetValues(typeof(MyMwcObjectBuilder_Prefab_TypesEnum)))\n            //{\n            //    MyGuiPrefabHelper prefabGuiHelper = null;\n            //    m_prefabTypeHelpers.TryGetValue(prefabTypeEnum, out prefabGuiHelper);\n\n            //    MyCommonDebugUtils.AssertDebug(prefabGuiHelper != null);\n            //}\n\n            #endregion\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Helpers/MyGuiPrefabSubCategoryTypeHelper.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Localization;\n\nnamespace MinerWars.AppCode.Game.GUI.Helpers\n{\n    class MyGuiPrefabSubCategoryTypeHelper : MyGuiHelperBase\n    {\n        public MyGuiPrefabSubCategoryTypeHelper(MyTextsWrapperEnum description)\n            : base(description)\n        {\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Helpers/MyGuiScreenInventoryManagerForGame.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Editor;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Inventory;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.AppCode.Game.Entities.Prefabs;\nusing MinerWars.AppCode.Game.Entities.SubObjects;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.World;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.Prefabs;\nusing System.Diagnostics;\nusing MinerWars.AppCode.Game.Sessions;\nusing MinerWars.AppCode.Game.Entities.Ships.AI;\n\nnamespace MinerWars.AppCode.Game.GUI.Helpers\n{\n    static class MyGuiScreenInventoryManagerForGame\n    {\n        public delegate void OpenInventoryHandler(MyEntity entity, MySmallShipInteractionActionEnum interactionAction);\n        public delegate void CloseInventoryHandler(MyGuiScreenBase screen);\n\n        public static event OpenInventoryHandler OpeningInventoryScreen;\n        public static event CloseInventoryHandler InventoryScreenClosed;\n\n        private static MyGuiScreenInventory m_currentInventoryScreen;        \n        private static MyEntity m_detectedEntity;\n        private static MySmallShipInteractionActionEnum? m_detectedAction;\n        private static MyEntityDetector m_entityDetector;               \n        private static MyPlayer m_player;\n        private static IMyInventory m_shipsInventoryOwner;\n        private static IMyInventory m_otherSideInventoryOwner;\n        private static MyGuiScreenInventoryType m_inventoryScreenType;\n        private static bool m_tradeForMoney;\n        private static int m_curentIndex;\n\n        public static MyGuiScreenInventory OpenInventory(MyGuiScreenInventoryType inventoryScreenType, MyEntity otherSide = null, MySmallShipInteractionActionEnum? action = null)\n        {\n            MyMwcLog.WriteLine(\"OpenInventory()\");\n\n\n            // return harvester when opening inventory, harvester can update inventory, which would not propagete to inventory screen and closing inventory would override those changes\n            var harvester = MySession.PlayerShip.Weapons.GetMountedHarvestingDevice();\n            if (harvester != null && harvester.CurrentState != MyHarvestingDeviceEnum.InsideShip)\n                harvester.Shot(null);\n\n            StringBuilder otherSideInventoryName = null;\n            MyInventory otherSideInventory = null;\n            List<MySmallShipBuilderWithName> shipsObjectBuilders = null;\n            bool closeOtherSideInventory = false;\n            \n            m_inventoryScreenType = inventoryScreenType;\n            m_shipsInventoryOwner = MySession.Static;\n            m_player = MySession.Static.Player;\n            m_detectedEntity = otherSide;\n            m_detectedAction = action;\n            shipsObjectBuilders = new List<MySmallShipBuilderWithName>();\n            shipsObjectBuilders.Add(new MySmallShipBuilderWithName(MySession.PlayerShip.GetObjectBuilder(true) as MyMwcObjectBuilder_SmallShip_Player));\n\n            switch(m_inventoryScreenType)\n            {            \n                case MyGuiScreenInventoryType.GodEditor:\n                    LoadGodEditorInventory(ref otherSideInventory, ref otherSideInventoryName, ref shipsObjectBuilders);\n                    closeOtherSideInventory = true;\n                    break;\n                case MyGuiScreenInventoryType.InGameEditor:\n                    LoadIngameEditorInventory(ref otherSideInventory, ref otherSideInventoryName);\n                    break;\n                case MyGuiScreenInventoryType.Game:\n                    LoadGameInventory(ref otherSideInventory, ref otherSideInventoryName, ref shipsObjectBuilders);\n                    break;\n            }\n            \n            var currentShipBuilder = shipsObjectBuilders[0];            \n            shipsObjectBuilders.Sort((x, y) => ((int)x.Builder.ShipType).CompareTo((int)y.Builder.ShipType));\n            m_curentIndex = shipsObjectBuilders.IndexOf(currentShipBuilder);\n            MyMwcObjectBuilder_Inventory otherSideInventoryBuilder = otherSideInventory != null ? otherSideInventory.GetObjectBuilder(true) : null;\n            if (closeOtherSideInventory) \n            {\n                Debug.Assert(otherSideInventory != null);\n                otherSideInventory.Close();\n            }\n            m_currentInventoryScreen = new MyGuiScreenInventory(shipsObjectBuilders, m_curentIndex,\n                                                                      m_player.Money, m_tradeForMoney,\n                                                                      otherSideInventoryBuilder, otherSideInventoryName,\n                                                                      m_inventoryScreenType);\n            m_currentInventoryScreen.OnSave += Save;\n            m_currentInventoryScreen.Closed += OnInventoryScreenClosed;\n            MyGuiScreenGamePlay.Static.HideSelectAmmo();\n            return m_currentInventoryScreen;\n        }\n\n        private static void LoadGodEditorInventory(ref MyInventory otherSideInventory, ref StringBuilder otherSideInventoryName, ref List<MySmallShipBuilderWithName> shipsObjectBuilders) \n        {\n            otherSideInventory = new MyInventory();\n            otherSideInventory.FillInventoryWithAllItems(null, 100, true);\n            otherSideInventoryName = MyTextsWrapper.Get(MyTextsWrapperEnum.AllItemsInventory);\n            foreach (MyMwcObjectBuilder_SmallShip_TypesEnum shipType in Enum.GetValues(typeof(MyMwcObjectBuilder_SmallShip_TypesEnum)))\n            {\n                if (MySession.PlayerShip.ShipType != shipType)\n                {\n                    MyMwcObjectBuilder_SmallShip_Player playerShipBuilder = MyMwcObjectBuilder_SmallShip_Player.CreateObjectBuilderWithAllItems(shipType, MySession.PlayerShip.Faction, MyShipTypeConstants.GetShipTypeProperties(shipType).GamePlay.CargoCapacity);\n                    shipsObjectBuilders.Add(new MySmallShipBuilderWithName(playerShipBuilder));\n                }\n            }\n        }\n\n        private static void LoadIngameEditorInventory(ref MyInventory otherSideInventory, ref StringBuilder otherSideInventoryName) \n        {\n            m_otherSideInventoryOwner = MyEditor.Static.FoundationFactory.PrefabContainer;\n\n            otherSideInventory = m_otherSideInventoryOwner.Inventory;\n            otherSideInventoryName = new StringBuilder();\n            otherSideInventoryName.Append(MyEditor.Static.FoundationFactory.PrefabContainer.DisplayName);\n            //otherSideInventoryName.Append(MyTextsWrapper.Get(MyTextsWrapperEnum.OtherSideInventory)); \n        }\n\n        private static void LoadGameInventory(ref MyInventory otherSideInventory, ref StringBuilder otherSideInventoryName, ref List<MySmallShipBuilderWithName> shipsObjectBuilders) \n        {\n            if (MySession.PlayerShip.TradeDetector != null && m_detectedEntity == null)\n            {\n                m_detectedEntity = MySession.PlayerShip.TradeDetector.GetNearestEntity();\n            }            \n\n            if (m_detectedEntity != null)\n            {\n                if (m_detectedAction == null)\n                {\n                    m_detectedAction = (MySmallShipInteractionActionEnum)MySession.PlayerShip.TradeDetector.GetNearestEntityCriterias();\n                }                \n                m_otherSideInventoryOwner = m_detectedEntity as IMyInventory;\n\n                otherSideInventory = m_otherSideInventoryOwner.Inventory;\n                string entityName;\n                if (m_detectedEntity is MyPrefabHangar)\n                {\n                    entityName = ((m_detectedEntity) as MyPrefabHangar).GetOwner().GetCorrectDisplayName();\n                }\n                else\n                {\n                    entityName = m_detectedEntity.GetCorrectDisplayName();\n                }\n\n                switch (m_detectedAction)\n                {\n                    case MySmallShipInteractionActionEnum.TradeForFree:\n                        if (IsTradingWithMothership())\n                        {\n                            List<MyInventoryItem> inventoryItems = new List<MyInventoryItem>();\n                            foreach (MyInventoryItem inventoryItem in m_shipsInventoryOwner.Inventory.GetInventoryItems())\n                            {\n                                if (inventoryItem.ObjectBuilderType == MyMwcObjectBuilderTypeEnum.SmallShip_Player)\n                                {\n                                    shipsObjectBuilders.Add(new MySmallShipBuilderWithName(inventoryItem.GetInventoryItemObjectBuilder(false) as MyMwcObjectBuilder_SmallShip_Player));\n                                }\n                                else if (inventoryItem.ObjectBuilderType == MyMwcObjectBuilderTypeEnum.SmallShip_HackingTool)\n                                {\n                                    inventoryItem.CanBeMoved = false;\n                                }\n                                else \n                                {\n                                    continue;\n                                }\n                                inventoryItem.IsTemporaryItem = true;\n                                inventoryItems.Add(inventoryItem);\n                            }\n\n                            //m_shipsInventoryOwner.Inventory.RemoveInventoryItems(inventoryItems);\n                            //m_shipsInventoryOwner.Inventory.RemoveInventoryItems(MyMwcObjectBuilderTypeEnum.SmallShip_Player, null);\n                            //m_shipsInventoryOwner.Inventory.ClearInventoryItems(false);\n                            m_shipsInventoryOwner.Inventory.RemoveInventoryItems(inventoryItems, false);\n                            otherSideInventory.AddInventoryItems(inventoryItems);\n                        }\n                        break;\n                    case MySmallShipInteractionActionEnum.TradeForMoney:\n                        m_tradeForMoney = true;\n                        if (m_detectedEntity is MySmallShipBot) \n                        {\n                            otherSideInventory.PriceCoeficient = 3f;\n                        }\n                        break;\n                    case MySmallShipInteractionActionEnum.Blocked:\n                    case MySmallShipInteractionActionEnum.Build:\n                    case MySmallShipInteractionActionEnum.Loot:\n                    case MySmallShipInteractionActionEnum.Examine:\n                    case MySmallShipInteractionActionEnum.ExamineEmpty:\n                        break;\n                    default:\n                        throw new MyMwcExceptionApplicationShouldNotGetHere();\n                }\n\n                otherSideInventoryName = new StringBuilder();\n                if (string.IsNullOrEmpty(entityName))\n                {\n                    otherSideInventoryName.Append(MyTextsWrapper.Get(MyTextsWrapperEnum.OtherSide));\n                }\n                else\n                {\n                    otherSideInventoryName.Append(entityName);\n                    //otherSideInventoryName.Append(MyTextsWrapper.Get(MyTextsWrapperEnum.OtherSideInventory));\n                }\n\n                if (OpeningInventoryScreen != null)\n                {\n                    OpeningInventoryScreen(m_detectedEntity, m_detectedAction.Value);\n                }\n            }\n        }\n\n        static void OnEntityLeave(MyEntityDetector sender, MyEntity entity)\n        {\n            if (entity == m_detectedEntity)\n            {\n                m_currentInventoryScreen.CancelTransfering();\n            }\n        }        \n\n        private static void OnInventoryScreenClosed(MyGuiScreenBase screen)\n        {\n            Clear();\n\n            if (InventoryScreenClosed != null)\n            {\n                InventoryScreenClosed(screen);\n            }\n        }\n\n        private static bool IsTradingWithMothership() \n        {\n            return m_inventoryScreenType == MyGuiScreenInventoryType.Game &&\n                   m_detectedAction != null &&\n                   m_detectedAction.Value == MySmallShipInteractionActionEnum.TradeForFree &&\n                   m_detectedEntity is MyPrefabHangar &&\n                   ((MyPrefabHangar)m_detectedEntity).PrefabHangarType == MyMwcObjectBuilder_PrefabHangar_TypesEnum.HANGAR;\n        }\n\n        private static void Save(MyGuiScreenInventory sender, MyGuiScreenInventorySaveResult saveResult)\n        {\n            // save money\n            if (m_tradeForMoney)\n            {\n                m_player.Money = saveResult.Money;\n            }\n\n            bool isTradingWithMotherShip = IsTradingWithMothership();\n                        \n            List<MyInventoryItem> itemsToMothership = new List<MyInventoryItem>();\n\n            // save ships            \n            for (int i = 0; i < saveResult.SmallShipsObjectBuilders.Count; i++)\n            {\n                MyMwcObjectBuilder_SmallShip shipBuilder = saveResult.SmallShipsObjectBuilders[i].Builder;\n                if (i == saveResult.CurrentIndex)\n                {\n                    if (m_curentIndex == saveResult.CurrentIndex)\n                    {\n                        // we want init weapons only when weapons are not same\n                        if (!WeaponBuildersAreSame(m_player.Ship.Weapons.GetWeaponsObjectBuilders(true), shipBuilder.Weapons))\n                        {\n                            m_player.Ship.Weapons.Init(shipBuilder.Weapons, shipBuilder.AssignmentOfAmmo);\n                        }\n                        m_player.Ship.Inventory.Init(shipBuilder.Inventory);\n                        m_player.Ship.Armor = shipBuilder.Armor;\n                        m_player.Ship.Engine = shipBuilder.Engine;\n                    }\n                    else\n                    {\n                        var oldShip = m_player.Ship;\n                        m_player.Ship.MarkForClose();\n\n                        if (MyMultiplayerGameplay.IsRunning)\n                        {\n                            MyMultiplayerGameplay.Static.Respawn(shipBuilder, m_player.Ship.WorldMatrix);\n                        }\n                        else\n                        {\n                            var ship = MyEntities.CreateFromObjectBuilderAndAdd(null, shipBuilder, m_player.Ship.WorldMatrix);\n                        }\n\n                        // Update bots - bot logic runs on host\n                        MyBotCoordinator.ChangeShip(oldShip, m_player.Ship);\n                    }\n                }\n                else\n                {\n                    if (isTradingWithMotherShip)\n                    {\n                        MyInventoryItem shipInventoryItem = MyInventory.CreateInventoryItemFromObjectBuilder(shipBuilder);\n                        itemsToMothership.Add(shipInventoryItem);\n                        //m_shipsInventoryOwner.Inventory.AddInventoryItem(shipInventoryItem);\n                    }\n                }\n            }            \n\n            // save other side inventory\n            if (m_inventoryScreenType != MyGuiScreenInventoryType.GodEditor)\n            {\n                if (m_otherSideInventoryOwner != null)\n                {                    \n                    if (isTradingWithMotherShip)\n                    {\n                        for (int i = saveResult.OtherSideInventoryObjectBuilder.InventoryItems.Count - 1; i >= 0; i--) \n                        {\n                            MyMwcObjectBuilder_InventoryItem itemBuilder = saveResult.OtherSideInventoryObjectBuilder.InventoryItems[i];\n                            if (itemBuilder.IsTemporaryItem) \n                            {                                \n                                saveResult.OtherSideInventoryObjectBuilder.InventoryItems.RemoveAt(i);\n                                // because smallships was added when ships were saved\n                                if (itemBuilder.ItemObjectBuilder.GetObjectBuilderType() != MyMwcObjectBuilderTypeEnum.SmallShip_Player)\n                                {\n                                    itemsToMothership.Add(MyInventory.CreateInventoryItemFromInventoryItemObjectBuilder(itemBuilder));\n                                }\n                            }\n                        }                        \n                    }\n                    m_otherSideInventoryOwner.Inventory.Init(saveResult.OtherSideInventoryObjectBuilder);\n                }\n            }\n\n            if (isTradingWithMotherShip) \n            {\n                m_shipsInventoryOwner.Inventory.AddInventoryItems(itemsToMothership);\n            }\n        }\n\n        private static bool WeaponBuildersAreSame(List<MyMwcObjectBuilder_SmallShip_Weapon> weapons1, List<MyMwcObjectBuilder_SmallShip_Weapon> weapons2) \n        {\n            if (weapons1.Count != weapons2.Count) \n            {\n                return false;\n            }\n\n            foreach (var weapon1 in weapons1) \n            {\n                if (!weapons2.Contains(weapon1)) \n                {\n                    return false;\n                }\n            }\n\n            foreach (var weapon2 in weapons2) \n            {\n                if (!weapons1.Contains(weapon2)) \n                {\n                    return false;\n                }\n            }\n\n            return true;\n        }\n\n        private static void Clear()\n        {                        \n            m_otherSideInventoryOwner = null;\n            m_player = null;\n            m_shipsInventoryOwner = null;\n            m_tradeForMoney = false;            \n            m_entityDetector = null;\n            m_detectedAction = null;\n            m_currentInventoryScreen.OnSave -= Save;\n            m_currentInventoryScreen.Closed -= OnInventoryScreenClosed;\n            m_currentInventoryScreen = null;\n        }\n\n        public static bool IsInventoryOpen() \n        {\n            return m_currentInventoryScreen != null &&\n                   m_currentInventoryScreen.IsInventoryLocked();\n        }\n\n        public static bool IsOtherSideInventory(MyInventory inventory) \n        {\n            return m_otherSideInventoryOwner != null && m_otherSideInventoryOwner.Inventory == inventory;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Helpers/MyGuiSmallDebrisHelper.cs",
    "content": "﻿using MinerWarsMath.Graphics;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Textures;\n\nnamespace MinerWars.AppCode.Game.GUI.Helpers\n{\n    class MyGuiSmallDebrisHelper : MyGuiHelperBase\n    {\n        public MyGuiSmallDebrisHelper(MyTexture2D icon, MyTextsWrapperEnum description)\n            : base(icon, description)\n        {\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Helpers/MyGuiSmallDebrisHelpers.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWarsMath.Graphics;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Textures;\n\nnamespace MinerWars.AppCode.Game.GUI.Helpers\n{\n    static class MyGuiSmallDebrisHelpers\n    {\n        //Dictionaries for helpers\n        static Dictionary<MyMwcObjectBuilder_SmallDebris_TypesEnum, MyGuiSmallDebrisHelper> m_smallDebrisHelpers = new Dictionary<MyMwcObjectBuilder_SmallDebris_TypesEnum, MyGuiSmallDebrisHelper>();\n\n        //Arrays of enums values\n        public static Array MyMwcSmallDebrisEnumValues { get; private set; }\n\n        static MyGuiSmallDebrisHelpers()\n        {\n            MyMwcSmallDebrisEnumValues = Enum.GetValues(typeof(MyMwcObjectBuilder_SmallDebris_TypesEnum));\n        }\n\n        public static MyGuiSmallDebrisHelper GetMyGuiSmallDebrisHelper(MyMwcObjectBuilder_SmallDebris_TypesEnum smallDebrisEnum)\n        {\n            MyGuiSmallDebrisHelper ret;\n            if (m_smallDebrisHelpers.TryGetValue(smallDebrisEnum, out ret))\n                return ret;\n            else\n                return null;\n        }\n\n        public static void UnloadContent()\n        {\n            m_smallDebrisHelpers.Clear();\n        }\n\n        public static void LoadContent()\n        {        /*\n            #region Create small debris helpers\n\n            m_smallDebrisHelpers.Add(MyMwcObjectBuilder_SmallDebris_TypesEnum.Cistern,\n                new MyGuiSmallDebrisHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Cistern\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.Cistern));\n\n            m_smallDebrisHelpers.Add(MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris1,\n                new MyGuiSmallDebrisHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Cistern\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.Debris1));\n\n            m_smallDebrisHelpers.Add(MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris2,\n                new MyGuiSmallDebrisHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Cistern\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.Debris2));\n\n            m_smallDebrisHelpers.Add(MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris3,\n                new MyGuiSmallDebrisHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Cistern\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.Debris3));\n\n            m_smallDebrisHelpers.Add(MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris4,\n                new MyGuiSmallDebrisHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Cistern\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.Debris4));\n\n            m_smallDebrisHelpers.Add(MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris5,\n                new MyGuiSmallDebrisHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Cistern\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.Debris5));\n\n            m_smallDebrisHelpers.Add(MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris6,\n               new MyGuiSmallDebrisHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Cistern\", flags: TextureFlags.IgnoreQuality),\n                   MyTextsWrapperEnum.Debris6));\n\n            m_smallDebrisHelpers.Add(MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris7,\n               new MyGuiSmallDebrisHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Cistern\", flags: TextureFlags.IgnoreQuality),\n                   MyTextsWrapperEnum.Debris7));\n\n            m_smallDebrisHelpers.Add(MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris8,\n               new MyGuiSmallDebrisHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Cistern\", flags: TextureFlags.IgnoreQuality),\n                   MyTextsWrapperEnum.Debris8));\n\n            m_smallDebrisHelpers.Add(MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris9,\n               new MyGuiSmallDebrisHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Cistern\", flags: TextureFlags.IgnoreQuality),\n                   MyTextsWrapperEnum.Debris9));\n\n            m_smallDebrisHelpers.Add(MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris10,\n               new MyGuiSmallDebrisHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Cistern\", flags: TextureFlags.IgnoreQuality),\n                   MyTextsWrapperEnum.Debris10));\n\n            m_smallDebrisHelpers.Add(MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris11,\n               new MyGuiSmallDebrisHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Cistern\", flags: TextureFlags.IgnoreQuality),\n                   MyTextsWrapperEnum.Debris11));\n\n            m_smallDebrisHelpers.Add(MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris12,\n               new MyGuiSmallDebrisHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Cistern\", flags: TextureFlags.IgnoreQuality),\n                   MyTextsWrapperEnum.Debris12));\n\n            m_smallDebrisHelpers.Add(MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris13,\n               new MyGuiSmallDebrisHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Cistern\", flags: TextureFlags.IgnoreQuality),\n                   MyTextsWrapperEnum.Debris13));\n\n            m_smallDebrisHelpers.Add(MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris14,\n               new MyGuiSmallDebrisHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Cistern\", flags: TextureFlags.IgnoreQuality),\n                   MyTextsWrapperEnum.Debris14));\n\n            m_smallDebrisHelpers.Add(MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris15,\n               new MyGuiSmallDebrisHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Cistern\", flags: TextureFlags.IgnoreQuality),\n                   MyTextsWrapperEnum.Debris15));\n\n            m_smallDebrisHelpers.Add(MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris16,\n               new MyGuiSmallDebrisHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Cistern\", flags: TextureFlags.IgnoreQuality),\n                   MyTextsWrapperEnum.Debris16));\n\n            m_smallDebrisHelpers.Add(MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris17,\n               new MyGuiSmallDebrisHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Cistern\", flags: TextureFlags.IgnoreQuality),\n                   MyTextsWrapperEnum.Debris17));\n\n            m_smallDebrisHelpers.Add(MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris18,\n               new MyGuiSmallDebrisHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Cistern\", flags: TextureFlags.IgnoreQuality),\n                   MyTextsWrapperEnum.Debris18));\n\n            m_smallDebrisHelpers.Add(MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris19,\n               new MyGuiSmallDebrisHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Cistern\", flags: TextureFlags.IgnoreQuality),\n                   MyTextsWrapperEnum.Debris19));\n\n            m_smallDebrisHelpers.Add(MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris20,\n               new MyGuiSmallDebrisHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Cistern\", flags: TextureFlags.IgnoreQuality),\n                   MyTextsWrapperEnum.Debris20));\n\n            m_smallDebrisHelpers.Add(MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris21,\n               new MyGuiSmallDebrisHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Cistern\", flags: TextureFlags.IgnoreQuality),\n                   MyTextsWrapperEnum.Debris21));\n\n            m_smallDebrisHelpers.Add(MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris22,\n               new MyGuiSmallDebrisHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Cistern\", flags: TextureFlags.IgnoreQuality),\n                   MyTextsWrapperEnum.Debris22));\n\n            m_smallDebrisHelpers.Add(MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris23,\n               new MyGuiSmallDebrisHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Cistern\", flags: TextureFlags.IgnoreQuality),\n                   MyTextsWrapperEnum.Debris23));\n\n            m_smallDebrisHelpers.Add(MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris24,\n               new MyGuiSmallDebrisHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Cistern\", flags: TextureFlags.IgnoreQuality),\n                   MyTextsWrapperEnum.Debris24));\n\n            m_smallDebrisHelpers.Add(MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris25,\n               new MyGuiSmallDebrisHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Cistern\", flags: TextureFlags.IgnoreQuality),\n                   MyTextsWrapperEnum.Debris25));\n\n            m_smallDebrisHelpers.Add(MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris26,\n               new MyGuiSmallDebrisHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Cistern\", flags: TextureFlags.IgnoreQuality),\n                   MyTextsWrapperEnum.Debris26));\n\n            m_smallDebrisHelpers.Add(MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris27,\n               new MyGuiSmallDebrisHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Cistern\", flags: TextureFlags.IgnoreQuality),\n                   MyTextsWrapperEnum.Debris27));\n\n            m_smallDebrisHelpers.Add(MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris28,\n               new MyGuiSmallDebrisHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Cistern\", flags: TextureFlags.IgnoreQuality),\n                   MyTextsWrapperEnum.Debris28));\n\n            m_smallDebrisHelpers.Add(MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris29,\n               new MyGuiSmallDebrisHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Cistern\", flags: TextureFlags.IgnoreQuality),\n                   MyTextsWrapperEnum.Debris29));\n\n            m_smallDebrisHelpers.Add(MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris30,\n               new MyGuiSmallDebrisHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Cistern\", flags: TextureFlags.IgnoreQuality),\n                   MyTextsWrapperEnum.Debris30));\n\n            m_smallDebrisHelpers.Add(MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris31,\n               new MyGuiSmallDebrisHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Cistern\", flags: TextureFlags.IgnoreQuality),\n                   MyTextsWrapperEnum.Debris31));\n\n            m_smallDebrisHelpers.Add(MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris32_pilot,\n               new MyGuiSmallDebrisHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\Cistern\", flags: TextureFlags.IgnoreQuality),\n                   MyTextsWrapperEnum.Debris32_pilot));\n\n            m_smallDebrisHelpers.Add(MyMwcObjectBuilder_SmallDebris_TypesEnum.pipe_bundle,\n              new MyGuiSmallDebrisHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\BundleOfPipes\", flags: TextureFlags.IgnoreQuality),\n                  MyTextsWrapperEnum.pipe_bundle));\n\n            m_smallDebrisHelpers.Add(MyMwcObjectBuilder_SmallDebris_TypesEnum.Standard_Container_1,\n              new MyGuiSmallDebrisHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\StandardContainer01\", flags: TextureFlags.IgnoreQuality),\n                  MyTextsWrapperEnum.Standard_Container_1));\n\n            m_smallDebrisHelpers.Add(MyMwcObjectBuilder_SmallDebris_TypesEnum.Standard_Container_2,\n              new MyGuiSmallDebrisHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\StandardContainer02\", flags: TextureFlags.IgnoreQuality),\n                  MyTextsWrapperEnum.Standard_Container_2));\n\n            m_smallDebrisHelpers.Add(MyMwcObjectBuilder_SmallDebris_TypesEnum.Standard_Container_3,\n              new MyGuiSmallDebrisHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\StandardContainer03\", flags: TextureFlags.IgnoreQuality),\n                  MyTextsWrapperEnum.Standard_Container_3));\n\n            m_smallDebrisHelpers.Add(MyMwcObjectBuilder_SmallDebris_TypesEnum.Standard_Container_4,\n              new MyGuiSmallDebrisHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\StandardContainer04\", flags: TextureFlags.IgnoreQuality),\n                  MyTextsWrapperEnum.Standard_Container_4));\n\n            m_smallDebrisHelpers.Add(MyMwcObjectBuilder_SmallDebris_TypesEnum.UtilityVehicle_1,\n              new MyGuiSmallDebrisHelper(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\UtilityVehicle01\", flags: TextureFlags.IgnoreQuality),\n                  MyTextsWrapperEnum.UtilityVehicle_1));\n\n            #endregion\n        */\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Helpers/MyGuiSmallShipHelperAmmo.cs",
    "content": "﻿using MinerWarsMath.Graphics;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWarsMath;\nusing System;\nusing System.Text;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.HUD;\nusing MinerWars.AppCode.App;\nusing KeenSoftwareHouse.Library.Extensions;\nusing MinerWars.AppCode.Toolkit.Input;\nusing MinerWars.AppCode.Game.Textures;\nusing KeenSoftwareHouse.Library.Trace;\nusing MinerWars.AppCode.Game.VideoMode;\n\n\nnamespace MinerWars.AppCode.Game.GUI.Helpers\n{\n    class MyGuiSmallShipHelperAmmo : MyGuiHelperBase\n    {\n        private static Vector2 topLeftPosition;\n\n        private const float m_menuItemWidth = 49 / 1600f;\n        private const float m_itemWidth = MyGuiConstants.AMMO_SELECT_MENU_ITEM_WIDTH * 2.0f * MyGuiConstants.AMMO_SELECT_SCALE;\n\n        private const float m_menuItemDistance = 1/1600f;\n        public static float ItemDistance =  1/1600f;\n\n        private static float m_menuItemHeight;\n        public static float ItemHeight;\n\n        private static  readonly Vector2 m_offset = new Vector2(0.02f,0.02f);\n        private static Vector2 m_backSize = new Vector2(316 / 1600f, 100 / 1200f);\n        private Vector4 m_backgroundActualColor;\n        private Color m_color;\n        private static Vector2 m_diff;\n        private Vector2 m_diffMovedPosition;\n        private static Vector2 m_tipTextPosition;\n        private static Vector2 m_tipFogPosition;\n        private static Vector2 m_tipFadeScale;\n        private static Vector2 screenSizeNormalize;\n        private Vector2 m_lastSpritePosition;\n\n        StringBuilder m_amount = new StringBuilder();\n        static StringBuilder m_description = null;\n\n\n\n        public MyGuiSmallShipHelperAmmo(MyTexture2D icon, MyTextsWrapperEnum description)\n            : this(icon, description, MyInventoryAmountTextAlign.MiddleRight)\n        {            \n        }\n\n        public MyGuiSmallShipHelperAmmo(MyTexture2D icon, MyTextsWrapperEnum description, MyInventoryAmountTextAlign textAlign)\n            : base(icon, description)\n        {\n            InventoryTextAlign = textAlign;\n            Reload();\n\n\n        }\n\n\n        public static void Reload()\n        {\n\n            Rectangle a = MyGuiManager.GetSafeFullscreenRectangle();\n            Rectangle b = MyGuiManager.GetFullscreenRectangle();\n            topLeftPosition = MyGuiManager.GetNormalizedCoordinateFromScreenCoordinate(MyGuiConstants.AMMO_SELECT_LEFT_TOP_POSITION);\n            topLeftPosition += new Vector2((a.X-b.X)/a.Width,0);\n            m_menuItemHeight = m_menuItemWidth * 4f/3f;\n            ItemHeight = m_itemWidth *4f/3f;\n        }\n\n        public static void ResetDescription()\n        {\n            m_description = null;\n        }\n\n        public static void DrawSpriteBatchBackground(Vector4? color)\n        {\n            var offset = new Vector2(VideoMode.MyVideoModeManager.IsTripleHead() ? -1 : 0, 0);\n           \n            MyGuiManager.DrawSpriteBatch(MyGuiManager.GetAmmoSelectLowBackground(),\n                MyGuiManager.GetNormalizedCoordinateFromScreenCoordinate(MyGuiConstants.AMMO_SELECT_LEFT_TOP_POSITION) + offset, m_backSize,\n                new Color(color.Value), MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP);\n             \n        }\n\n\n        public static void DrawSpriteBatchTooltip()\n        {\n            // draw description if any, under background layer:\n            if (m_description != null)\n            {\n                /*\n                var bodyBgSize =\n                    MyGuiManager.GetNormalizedSizeFromScreenSize(\n                        MyGuiManager.GetFontMinerWarsWhite().MeasureString(m_description,\n                                                                              MyGuiConstants.AMMO_SELECTION_TOOL_TIP_TEXT_SCALE)) + new Vector2(-0.005f, -0f);\n                */\n\n\n                var bodyBgSize = MyGuiManager.GetNormalizedSize(MyGuiManager.GetFontMinerWarsWhite(), m_description,\n                                               MyGuiConstants.AMMO_SELECTION_TOOL_TIP_TEXT_SCALE) * 1.05f;\n\n\n                //bodyBgSize.Y = 72/1200f;\n                m_tipTextPosition += new Vector2(0.01f, 0f);\n                m_tipTextPosition.Y -= m_menuItemHeight * 2f;\n                var leftPos = m_tipTextPosition + new Vector2(0.005f, 0f);\n\n                MyGUIHelper.FillRectangle(leftPos, bodyBgSize, MyGuiConstants.TOOL_TIP_BACKGROUND_COLOR);\n                MyGUIHelper.OutsideBorder(leftPos, bodyBgSize, 1, MyGuiConstants.TOOL_TIP_BORDER_COLOR);\n\n                //MyGuiManager.BeginSpriteBatch();\n                //MyGuiManager.DrawSpriteBatchRoundUp(MyGuiManager.GetToolTipLeft(), leftPos, new Vector2(32 / 1600f, 72 / 1200f), new Color(255, 255, 255, 255), MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_CENTER);\n                //MyGuiManager.EndSpriteBatch();\n\n                //MyGuiManager.EndSpriteBatch();\n                //MyGuiManager.EndSpriteBatch();\n\n                //MyGuiManager.DrawStencilMaskRectangleRoundUp(new MyRectangle2D(leftPos, bodyBgSize), MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER);\n\n                //MyGuiManager.BeginSpriteBatch_StencilMask();\n                //MyGuiManager.DrawSpriteBatchRoundUp(MyGuiManager.GetToolTipBody(), leftPos, new Vector2(1024 / 1600f, 72 / 1200f), new Color(255, 255, 255, 255), MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER);\n                //MyGuiManager.EndSpriteBatch_StencilMask();\n\n                //MyGuiManager.BeginSpriteBatch();\n                //MyGuiManager.DrawSpriteBatchRoundUp(MyGuiManager.GetToolTipRight(), leftPos + new Vector2(bodyBgSize.X, 0), new Vector2(32 / 1600f, 72 / 1200f), new Color(255, 255, 255, 255), MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER);\n                //MyGuiManager.EndSpriteBatch();\n\n                //MyGuiManager.BeginSpriteBatch();\n                //MyGuiManager.BeginSpriteBatch();\n\n                MyGuiManager.DrawString(MyGuiManager.GetFontMinerWarsBlue(), m_description, m_tipTextPosition + new Vector2(0.01f, 0f), MyGuiConstants.AMMO_SELECTION_TOOL_TIP_TEXT_SCALE,\n                    Color.White,\n                    MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP);\n\n\n\n            }\n\n        }\n\n\n        public void DrawSpriteBatchMenuHeader(int orderX, bool selected, int selectedIndex, Vector4? backgroundColor)\n        {\n            MyGuiManager.BeginSpriteBatch();\n\n            if (backgroundColor.HasValue)\n            {\n                // selection color:\n                m_backgroundActualColor = backgroundColor.Value;\n                m_color = new Color(m_backgroundActualColor);\n\n                Vector2 deltaVector = new Vector2(orderX * (m_menuItemWidth + m_menuItemDistance), 0);\n                \n\n                Vector2 startPosition =\n                    MyGuiManager.GetNormalizedCoordinateFromScreenCoordinate(\n                        MyGuiConstants.AMMO_SELECT_LEFT_TOP_POSITION) + deltaVector + m_offset; \n\n                // render textures:\n                if (selected)\n                {\n                    m_color = new Color(m_backgroundActualColor * MyGuiConstants.SELECT_AMMO_ACTIVE_COLOR_MULTIPLIER);\n                    if (selectedIndex == 0)\n                    {\n                        m_backgroundActualColor *= MyGuiConstants.SELECT_AMMO_ACTIVE_COLOR_MULTIPLIER;\n                    }\n                    /*\n                    MyGuiManager.DrawSpriteBatch(MyGuiManager.GetAmmoSelectTexture(), startPosition,\n                        new Vector2(m_menuItemWidth, m_menuItemHeight),\n                        new Color(m_backgroundActualColor), MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP);\n                     * */\n                }\n                else\n                {\n                    m_color = new Color(MyGuiConstants.SELECT_AMMO_BACKGROUND_COLOR/*DEFAULT_CONTROL_BACKGROUND_COLOR*/);\n                }\n                \n                base.DrawSpriteBatch(startPosition, new Vector2(m_menuItemWidth, m_menuItemHeight),\n                    m_color, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP);\n                \n            }\n            MyGuiManager.EndSpriteBatch();\n        }\n\n        public bool IsPointInMyArea(Vector2 pos)\n        {\n            if (m_lastSpritePosition.X <= pos.X && pos.X <= m_lastSpritePosition.X + m_itemWidth)\n            {\n                if (m_lastSpritePosition.Y <= pos.Y && pos.Y <= m_lastSpritePosition.Y + ItemHeight)\n                {\n                    return true;\n                }\n            }\n            return false;\n        }\n\n        public void DrawSpriteBatchMenuItem(int orderX, int orderY, bool selected, int amount, Vector4? backgroundColor, int index, int selectedGroup)\n        {   \n            MyMwcUtils.ClearStringBuilder(m_amount);\n            m_amount.AppendInt32(amount);\n\n            orderX += 1;\n            \n            MyGuiManager.BeginSpriteBatch();\n\n            if (backgroundColor.HasValue)\n            {\n                // selection color:\n                m_backgroundActualColor = backgroundColor.Value;\n                if (selected)\n                    m_backgroundActualColor *= MyGuiConstants.SELECT_AMMO_ACTIVE_COLOR_MULTIPLIER;\n                else\n                    m_backgroundActualColor.W *= 1.0f; // move this to constants\n\n                m_color = new Color(m_backgroundActualColor);\n\n                \n\n                //calculate for save of pos\n                m_diff.X = topLeftPosition.X + m_offset.X ;\n                m_diff.Y = topLeftPosition.Y + m_menuItemHeight + m_offset.Y ;\n                m_diffMovedPosition.X = m_diff.X + (orderX * (m_itemWidth + ItemDistance)) + (selectedGroup-1) * (m_menuItemWidth + m_menuItemDistance);\n                m_diffMovedPosition.Y = m_diff.Y + ((orderY + 1) * (ItemHeight + ItemDistance)) +0.005f;\n\n                m_lastSpritePosition = m_diffMovedPosition;//buffer last weapon sprite pos for cursor testing\n                m_diff = MyGuiManager.GetNormalizedCoordinateFromScreenCoordinate(MyGuiConstants.AMMO_SELECT_LEFT_TOP_POSITION) + m_offset;\n                m_diff.Y += m_menuItemHeight;\n                m_diffMovedPosition.X = m_diff.X + (orderX * (m_itemWidth + ItemDistance)) + (selectedGroup - 1) * (m_menuItemWidth + m_menuItemDistance);\n                m_diffMovedPosition.Y = m_diff.Y + ((orderY + 1) * (ItemHeight + ItemDistance)) + 0.005f;\n\n                /*\n                // Select texture based on position:\n                MyGuiManager.DrawSpriteBatch((orderY == -1 && index == 0) ? MyGuiManager.GetAmmoSelectBorderFirst() : MyGuiManager.GetAmmoSelectBorderPiece(),\n                    m_diffMovedPosition, new Vector2(m_itemWidth, ItemHeight),\n                    m_color, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP);\n\n                */\n                base.DrawSpriteBatch(m_diffMovedPosition, new Vector2(m_itemWidth, ItemHeight),\n                    m_color, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP);\n                \n                //m_lastSpritePosition = m_diffMovedPosition;//buffer last weapon sprite pos for cursor testing\n\n                m_diff.X += m_itemWidth * MyGuiConstants.AMMO_SELECT_ITEM_TEXT_RELATIVE_POSITION.X;\n                m_diff.Y += ItemHeight * MyGuiConstants.AMMO_SELECT_ITEM_TEXT_RELATIVE_POSITION.Y;\n                m_diffMovedPosition.X = m_diff.X + (orderX * (m_itemWidth + ItemDistance)) + (selectedGroup - 1) * (m_menuItemWidth + m_menuItemDistance);\n                m_diffMovedPosition.Y = m_diff.Y + ((orderY + 1) * (ItemHeight + ItemDistance));\n\n\n                MyGuiManager.DrawString(MyGuiManager.GetFontMinerWarsBlue(), m_amount,\n                    m_diffMovedPosition, 0.6f, new Color(MyGuiConstants.LABEL_TEXT_COLOR),\n                    MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_BOTTOM);\n\n                // draw hint:\n                if (selected)\n                {\n                    m_description = MultiLineDescription;\n                    m_tipTextPosition = m_diffMovedPosition;\n                }\n            }\n\n            MyGuiManager.EndSpriteBatch();\n        }\n\n        public void HudDrawActualAmmo(Vector2 position, Vector2 scaleToAmmoSelection, int amount, Vector4? backgroundColor, StringBuilder ammoSpecialText)\n        {\n            if (backgroundColor.HasValue)\n            {\n                m_color = new Color(backgroundColor.Value);\n                MyGuiManager.BeginSpriteBatch();\n                base.DrawSpriteBatch(position, new Vector2(m_itemWidth * scaleToAmmoSelection.X, ItemHeight * scaleToAmmoSelection.Y), m_color, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP);\n\n                Vector2 textPosition = position;\n                textPosition.X += m_itemWidth / 2.6f * 2.0f;\n                textPosition.Y += ItemHeight * scaleToAmmoSelection.Y - ItemHeight / 6.0f;\n                m_diff.X += m_itemWidth * scaleToAmmoSelection.X * MyGuiConstants.AMMO_SELECT_ITEM_TEXT_RELATIVE_POSITION.X;\n                m_diff.Y += ItemHeight * scaleToAmmoSelection.Y * MyGuiConstants.AMMO_SELECT_ITEM_TEXT_RELATIVE_POSITION.Y;\n\n                MyMwcUtils.ClearStringBuilder(m_amount);\n                m_amount.AppendInt32(amount);\n\n                var color = new Color(MyGuiConstants.LABEL_TEXT_COLOR);\n                MyGuiManager.DrawString(MyGuiManager.GetFontMinerWarsBlue(), m_amount,\n                    textPosition, 0.7f, color,\n                    MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_BOTTOM);\n\n                if (ammoSpecialText != null && ammoSpecialText.Length > 0)\n                {\n                    textPosition.Y -= ItemHeight / 4.0f;\n                    MyGuiManager.DrawString(MyGuiManager.GetFontMinerWarsBlue(), ammoSpecialText, textPosition, .7f,\n                                            color, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_BOTTOM);\n                }\n\n                MyGuiManager.EndSpriteBatch();\n            }\n        }\n\n        public void HudDrawActualAmmoComment(Vector4? backgroundColor, StringBuilder text)\n        {\n            if (backgroundColor.HasValue)\n            {\n                m_color = new Color(backgroundColor.Value);\n                MyGuiManager.BeginSpriteBatch();\n                MyGuiManager.DrawString(MyGuiManager.GetFontMinerWarsBlue(), text, MyNotificationConstants.DEFAULT_NOTIFICATION_MESSAGE_NORMALIZED_POSITION - new Vector2(0, 0.03f), 1, new Color(MyGuiConstants.LABEL_TEXT_COLOR), MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_BOTTOM);\n                MyGuiManager.EndSpriteBatch();\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Helpers/MyGuiSmallShipHelperArmor.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Textures;\n\nnamespace MinerWars.AppCode.Game.GUI.Helpers\n{\n    class MyGuiSmallShipHelperArmor : MyGuiHelperBase\n    {\n        public MyGuiSmallShipHelperArmor(MyTextsWrapperEnum description)\n            : base(description)\n        {\n        }\n\n        public MyGuiSmallShipHelperArmor(MyTexture2D icon, MyTextsWrapperEnum description) \n            : base (icon, description)\n        {\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Helpers/MyGuiSmallShipHelperBlueprint.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Textures;\n\nnamespace MinerWars.AppCode.Game.GUI.Helpers\n{\n    class MyGuiSmallShipHelperBlueprint : MyGuiHelperBase\n    {\n        public MyGuiSmallShipHelperBlueprint(MyTextsWrapperEnum description)\n            : base(description)\n        {\n        }\n\n        public MyGuiSmallShipHelperBlueprint(MyTexture2D icon, MyTextsWrapperEnum description) \n            : base (icon, description)\n        {\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Helpers/MyGuiSmallShipHelperEngine.cs",
    "content": "﻿using MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Textures;\n\nnamespace MinerWars.AppCode.Game.GUI.Helpers\n{\n    class MyGuiSmallShipHelperEngine : MyGuiHelperBase\n    {\n        public MyGuiSmallShipHelperEngine(MyTexture2D icon, MyTextsWrapperEnum description)\n            :base(icon, description)\n        {\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Helpers/MyGuiSmallShipHelperOre.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Textures;\n\nnamespace MinerWars.AppCode.Game.GUI.Helpers\n{\n    class MyGuiOreHelper : MyGuiHelperBase\n    {\n        private MyTextsWrapperEnum m_nameTextEnum;        \n\n        public MyGuiOreHelper(MyTextsWrapperEnum description, MyTextsWrapperEnum name)\n            : base(description)\n        {\n            m_nameTextEnum = name;\n        }\n\n        public MyGuiOreHelper(MyTexture2D icon, MyTextsWrapperEnum description, MyTextsWrapperEnum name) \n            : base (icon, description)\n        {\n            m_nameTextEnum = name;\n        }\n\n        protected override void UpdateName()\n        {\n            m_name = MyTextsWrapper.Get(m_nameTextEnum);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Helpers/MyGuiSmallShipHelperRadar.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Textures;\n\nnamespace MinerWars.AppCode.Game.GUI.Helpers\n{\n    class MyGuiSmallShipHelperRadar : MyGuiHelperBase\n    {\n        public MyGuiSmallShipHelperRadar(MyTextsWrapperEnum description)\n            : base(description)\n        {\n        }\n\n        public MyGuiSmallShipHelperRadar(MyTexture2D icon, MyTextsWrapperEnum description) \n            : base (icon, description)\n        {\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Helpers/MyGuiSmallShipHelperSmallShip.cs",
    "content": "﻿using MinerWarsMath.Graphics;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Textures;\nusing System.Text;\n\nnamespace MinerWars.AppCode.Game.GUI.Helpers\n{\n    class MyGuiSmallShipHelperSmallShip : MyGuiHelperBase\n    {\n        public MyTexture2D Preview;\n        private MyTextsWrapperEnum m_nameTextEnum;        \n\n        public MyGuiSmallShipHelperSmallShip(MyTexture2D icon, MyTexture2D preview, MyTextsWrapperEnum description, MyTextsWrapperEnum name)\n            : base(icon, description)\n        {\n            Preview = preview;\n            m_nameTextEnum = name;\n        }\n\n        protected override void UpdateName()\n        {\n            m_name = MyTextsWrapper.Get(m_nameTextEnum);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Helpers/MyGuiSmallShipHelperTool.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath.Graphics;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Textures;\n\nnamespace MinerWars.AppCode.Game.GUI.Helpers\n{\n    class MyGuiSmallShipHelperTool : MyGuiHelperBase\n    {\n        public MyGuiSmallShipHelperTool(MyTexture2D icon, MyTextsWrapperEnum description)\n            : base(icon, description)\n        {\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Helpers/MyGuiSmallShipHelperWeapon.cs",
    "content": "﻿using MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Textures;\n\nnamespace MinerWars.AppCode.Game.GUI.Helpers\n{\n    class MyGuiSmallShipHelperWeapon : MyGuiHelperBase\n    {\n        public MyGuiSmallShipHelperWeapon(MyTexture2D icon, MyTextsWrapperEnum description)\n            : base(icon, description)\n        {\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Helpers/MyGuiSmallShipHelpers.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing MinerWarsMath.Graphics;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing SysUtils.Utils;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.AppCode.Game.Textures;\nusing System.Linq;\nusing MinerWars.AppCode.Game.Entities;\n\nnamespace MinerWars.AppCode.Game.GUI.Helpers\n{\n\n    static class MyGuiSmallShipHelpers\n    {\n        //Dictionaries for bindings                                                                                         \n        static Dictionary<int, Dictionary<int, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum>> m_ammoBinding = new Dictionary<int, Dictionary<int, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum>>();\n\n        //Dictionaries for helpers        \n        static Dictionary<int, MyGuiSmallShipHelperAmmo> m_ammoGroups = new Dictionary<int, MyGuiSmallShipHelperAmmo>();        \n        static Dictionary<int, MyGuiHelperBase> m_botPlayerRelationships = new Dictionary<int, MyGuiHelperBase>();\n        static Dictionary<int, MyGuiHelperBase> m_shipFactionNationality = new Dictionary<int, MyGuiHelperBase>();\n        static Dictionary<int, MyGuiHelperBase> m_botBehaviours = new Dictionary<int, MyGuiHelperBase>();\n        static Dictionary<int, MyGuiHelperBase> m_botAITemplates = new Dictionary<int, MyGuiHelperBase>();\n        static Dictionary<int, MyGuiHelperBase> m_patrolMode = new Dictionary<int, MyGuiHelperBase>();\n\n        //Arrays of enums values\n        public static List<MyMwcObjectBuilder_FireKeyEnum> MyMwcObjectBuilder_SmallShip_AssignmentOfAmmo_FireKeyEnumValues { get; private set; }\n        public static Array MyMwcObjectBuilder_SmallShip_ToolEnumValues { get; private set; }\n        public static Array MyMwcObjectBuilder_SmallShip_AssignmentOfAmmo_GroupEnumValues { get; private set; }\n        public static Array MyMwcObjectBuilder_SmallShip_Ammo_TypesEnumValues { get; private set; }\n        public static Array MyMwcObjectBuilder_SmallShip_Engine_TypesEnumValues { get; private set; }\n        public static Array MyMwcObjectBuilder_SmallShip_Weapon_TypesEnumValues { get; private set; }\n        public static Array MyMwcObjectBuilder_SmallShip_TypesEnumValues { get; private set; }\n        public static Array MyMwcObjectBuilder_SmallShip_BotPlayerRelationshipEnumValues { get; private set; }\n        public static Array MyMwcObjectBuilder_SmallShip_ShipFactionNationalityEnumValues { get; private set; }\n        public static Array MyMwcObjectBuilder_SmallShip_BotBehaviourEnumValues { get; private set; }\n        public static Array MyMwcObjectBuilder_SmallShip_BotAITemplateValues { get; private set; }\n        public static Array MyMwcObjectBuilder_SmallShip_PatrolModes { get; private set; }\n\n        /// <summary>\n        /// Initializes the <see cref=\"MyGuiSmallShipHelpers\"/> class.\n        /// </summary>\n        static MyGuiSmallShipHelpers()\n        {\n            MyMwcObjectBuilder_SmallShip_AssignmentOfAmmo_FireKeyEnumValues = Enum.GetValues(typeof(MyMwcObjectBuilder_FireKeyEnum)).Cast<MyMwcObjectBuilder_FireKeyEnum>().ToList();\n            MyMwcObjectBuilder_SmallShip_ToolEnumValues = Enum.GetValues(typeof(MyMwcObjectBuilder_SmallShip_Tool_TypesEnum));\n            MyMwcObjectBuilder_SmallShip_AssignmentOfAmmo_GroupEnumValues = Enum.GetValues(typeof(MyMwcObjectBuilder_AmmoGroupEnum));\n            MyMwcObjectBuilder_SmallShip_Ammo_TypesEnumValues = Enum.GetValues(typeof(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum));\n            MyMwcObjectBuilder_SmallShip_Engine_TypesEnumValues = Enum.GetValues(typeof(MyMwcObjectBuilder_SmallShip_Engine_TypesEnum));\n            MyMwcObjectBuilder_SmallShip_Weapon_TypesEnumValues = Enum.GetValues(typeof(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum));\n            MyMwcObjectBuilder_SmallShip_TypesEnumValues = Enum.GetValues(typeof(MyMwcObjectBuilder_SmallShip_TypesEnum));\n            MyMwcObjectBuilder_SmallShip_ShipFactionNationalityEnumValues = Enum.GetValues(typeof(MyMwcObjectBuilder_FactionEnum));\n            MyMwcObjectBuilder_SmallShip_BotAITemplateValues = Enum.GetValues(typeof(MyAITemplateEnum));\n            MyMwcObjectBuilder_SmallShip_PatrolModes = Enum.GetValues(typeof(MyPatrolMode));\n\n            #region Ammo/Weapon binding\n\n            BindAmmo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Automatic_Rifle_With_Silencer_High_Speed,\n                MyMwcObjectBuilder_AmmoGroupEnum.Bullet, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Automatic_Rifle_With_Silencer);\n            BindAmmo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Automatic_Rifle_With_Silencer_SAPHEI,\n                MyMwcObjectBuilder_AmmoGroupEnum.Bullet, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Automatic_Rifle_With_Silencer);\n            BindAmmo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Automatic_Rifle_With_Silencer_BioChem,\n                MyMwcObjectBuilder_AmmoGroupEnum.Bullet, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Automatic_Rifle_With_Silencer);\n            \n            BindAmmo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Sniper_High_Speed,\n                MyMwcObjectBuilder_AmmoGroupEnum.Bullet, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Sniper);\n            BindAmmo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Sniper_SAPHEI,\n                MyMwcObjectBuilder_AmmoGroupEnum.Bullet, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Sniper);\n            BindAmmo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Sniper_BioChem,\n                MyMwcObjectBuilder_AmmoGroupEnum.Bullet, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Sniper);\n            BindAmmo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Sniper_EMP,\n                MyMwcObjectBuilder_AmmoGroupEnum.Bullet, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Sniper);\n\n            BindAmmo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_Basic,\n                MyMwcObjectBuilder_AmmoGroupEnum.Bullet, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Autocanon);\n            BindAmmo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_High_Speed,\n                MyMwcObjectBuilder_AmmoGroupEnum.Bullet, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Autocanon);\n            BindAmmo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_Armor_Piercing_Incendiary,\n                MyMwcObjectBuilder_AmmoGroupEnum.Bullet, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Autocanon);\n            BindAmmo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_SAPHEI,\n                MyMwcObjectBuilder_AmmoGroupEnum.Bullet, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Autocanon);\n            BindAmmo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_BioChem,\n                MyMwcObjectBuilder_AmmoGroupEnum.Bullet, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Autocanon);\n            BindAmmo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_EMP,\n                MyMwcObjectBuilder_AmmoGroupEnum.Bullet, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Autocanon);\n\n            BindAmmo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Machine_Gun_Basic,\n                MyMwcObjectBuilder_AmmoGroupEnum.Bullet, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Machine_Gun);\n            BindAmmo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Machine_Gun_High_Speed,\n                MyMwcObjectBuilder_AmmoGroupEnum.Bullet, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Machine_Gun);\n            BindAmmo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Machine_Gun_Armor_Piercing_Incendiary,\n                MyMwcObjectBuilder_AmmoGroupEnum.Bullet, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Machine_Gun);\n            BindAmmo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Machine_Gun_SAPHEI,\n                MyMwcObjectBuilder_AmmoGroupEnum.Bullet, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Machine_Gun);\n            BindAmmo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Machine_Gun_BioChem,\n                MyMwcObjectBuilder_AmmoGroupEnum.Bullet, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Machine_Gun);\n            BindAmmo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Machine_Gun_EMP,\n                MyMwcObjectBuilder_AmmoGroupEnum.Bullet, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Machine_Gun);\n\n            BindAmmo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Shotgun_Basic,\n                MyMwcObjectBuilder_AmmoGroupEnum.Bullet, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Shotgun);\n            BindAmmo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Shotgun_High_Speed,\n                MyMwcObjectBuilder_AmmoGroupEnum.Bullet, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Shotgun);\n            BindAmmo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Shotgun_Armor_Piercing,\n                MyMwcObjectBuilder_AmmoGroupEnum.Bullet, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Shotgun);\n            BindAmmo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Shotgun_Explosive,\n                MyMwcObjectBuilder_AmmoGroupEnum.Bullet, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Shotgun);\n\n            BindAmmo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_Basic,\n                MyMwcObjectBuilder_AmmoGroupEnum.Cannon, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Cannon);\n            BindAmmo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_BioChem,\n                MyMwcObjectBuilder_AmmoGroupEnum.Cannon, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Cannon);\n            BindAmmo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_High_Speed,\n                MyMwcObjectBuilder_AmmoGroupEnum.Cannon, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Cannon);\n            BindAmmo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_Armor_Piercing_Incendiary,\n                MyMwcObjectBuilder_AmmoGroupEnum.Cannon, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Cannon);\n            BindAmmo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_SAPHEI,\n                MyMwcObjectBuilder_AmmoGroupEnum.Cannon, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Cannon);\n            BindAmmo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_Proximity_Explosive,\n                MyMwcObjectBuilder_AmmoGroupEnum.Cannon, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Cannon);\n            BindAmmo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_Tunnel_Buster,\n                MyMwcObjectBuilder_AmmoGroupEnum.Cannon, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Cannon);\n            BindAmmo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_EMP,\n                MyMwcObjectBuilder_AmmoGroupEnum.Cannon, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Cannon);\n\n            BindAmmo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Asteroid_Killer,\n                MyMwcObjectBuilder_AmmoGroupEnum.UniversalLauncherBack, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Universal_Launcher_Back);\n            BindAmmo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Decoy_Flare,\n                MyMwcObjectBuilder_AmmoGroupEnum.UniversalLauncherBack, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Universal_Launcher_Back);\n            BindAmmo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Directional_Explosive,\n                MyMwcObjectBuilder_AmmoGroupEnum.UniversalLauncherBack, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Universal_Launcher_Back);\n            BindAmmo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Flash_Bomb,\n                MyMwcObjectBuilder_AmmoGroupEnum.UniversalLauncherBack, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Universal_Launcher_Back);\n            BindAmmo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Gravity_Bomb,\n                MyMwcObjectBuilder_AmmoGroupEnum.UniversalLauncherBack, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Universal_Launcher_Back);\n            BindAmmo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Hologram,\n                MyMwcObjectBuilder_AmmoGroupEnum.UniversalLauncherBack, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Universal_Launcher_Back);\n            BindAmmo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Illuminating_Shell,\n                MyMwcObjectBuilder_AmmoGroupEnum.UniversalLauncherBack, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Universal_Launcher_Back);\n            BindAmmo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Mine_Basic,\n                MyMwcObjectBuilder_AmmoGroupEnum.UniversalLauncherBack, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Universal_Launcher_Back);\n            BindAmmo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Mine_BioChem,\n                MyMwcObjectBuilder_AmmoGroupEnum.UniversalLauncherBack, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Universal_Launcher_Back);\n            BindAmmo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Mine_Smart,\n                MyMwcObjectBuilder_AmmoGroupEnum.UniversalLauncherBack, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Universal_Launcher_Back);\n            BindAmmo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Remote_Bomb,\n                MyMwcObjectBuilder_AmmoGroupEnum.UniversalLauncherBack, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Universal_Launcher_Back);\n            BindAmmo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Remote_Camera,\n                MyMwcObjectBuilder_AmmoGroupEnum.UniversalLauncherBack, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Universal_Launcher_Back);\n            BindAmmo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Smoke_Bomb,\n                MyMwcObjectBuilder_AmmoGroupEnum.UniversalLauncherBack, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Universal_Launcher_Back);\n            BindAmmo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Sphere_Explosive,\n                MyMwcObjectBuilder_AmmoGroupEnum.UniversalLauncherBack, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Universal_Launcher_Back);\n            BindAmmo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Time_Bomb,\n                MyMwcObjectBuilder_AmmoGroupEnum.UniversalLauncherBack, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Universal_Launcher_Back);\n            BindAmmo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_EMP_Bomb,\n                MyMwcObjectBuilder_AmmoGroupEnum.UniversalLauncherBack, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Universal_Launcher_Back);\n\n            BindAmmo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Asteroid_Killer,\n                MyMwcObjectBuilder_AmmoGroupEnum.UniversalLauncherFront, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Universal_Launcher_Front);\n            BindAmmo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Decoy_Flare,\n                MyMwcObjectBuilder_AmmoGroupEnum.UniversalLauncherFront, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Universal_Launcher_Front);\n            BindAmmo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Directional_Explosive,\n                MyMwcObjectBuilder_AmmoGroupEnum.UniversalLauncherFront, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Universal_Launcher_Front);\n            BindAmmo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Flash_Bomb,\n                MyMwcObjectBuilder_AmmoGroupEnum.UniversalLauncherFront, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Universal_Launcher_Front);\n            BindAmmo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Gravity_Bomb,\n                MyMwcObjectBuilder_AmmoGroupEnum.UniversalLauncherFront, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Universal_Launcher_Front);\n            BindAmmo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Hologram,\n                MyMwcObjectBuilder_AmmoGroupEnum.UniversalLauncherFront, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Universal_Launcher_Front);\n            BindAmmo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Illuminating_Shell,\n                MyMwcObjectBuilder_AmmoGroupEnum.UniversalLauncherFront, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Universal_Launcher_Front);\n            BindAmmo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Mine_Basic,\n                MyMwcObjectBuilder_AmmoGroupEnum.UniversalLauncherFront, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Universal_Launcher_Front);\n            BindAmmo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Mine_BioChem,\n                MyMwcObjectBuilder_AmmoGroupEnum.UniversalLauncherFront, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Universal_Launcher_Front);\n            BindAmmo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Mine_Smart,\n                MyMwcObjectBuilder_AmmoGroupEnum.UniversalLauncherFront, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Universal_Launcher_Front);\n            BindAmmo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Remote_Bomb,\n                MyMwcObjectBuilder_AmmoGroupEnum.UniversalLauncherFront, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Universal_Launcher_Front);\n            BindAmmo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Remote_Camera,\n                MyMwcObjectBuilder_AmmoGroupEnum.UniversalLauncherFront, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Universal_Launcher_Front);\n            BindAmmo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Smoke_Bomb,\n                MyMwcObjectBuilder_AmmoGroupEnum.UniversalLauncherFront, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Universal_Launcher_Front);\n            BindAmmo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Sphere_Explosive,\n                MyMwcObjectBuilder_AmmoGroupEnum.UniversalLauncherFront, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Universal_Launcher_Front);\n            BindAmmo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Time_Bomb,\n                MyMwcObjectBuilder_AmmoGroupEnum.UniversalLauncherFront, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Universal_Launcher_Front);\n            BindAmmo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_EMP_Bomb,\n                MyMwcObjectBuilder_AmmoGroupEnum.UniversalLauncherFront, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Universal_Launcher_Front);\n\n            BindAmmo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Missile_Basic,\n                MyMwcObjectBuilder_AmmoGroupEnum.Missile, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Missile_Launcher);\n            BindAmmo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Missile_BioChem,\n                MyMwcObjectBuilder_AmmoGroupEnum.Missile, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Missile_Launcher);\n            BindAmmo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Missile_EMP,\n                MyMwcObjectBuilder_AmmoGroupEnum.Missile, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Missile_Launcher);\n            BindAmmo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Guided_Missile_Radar_Detection,\n                MyMwcObjectBuilder_AmmoGroupEnum.Missile, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Missile_Launcher);\n            BindAmmo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Guided_Missile_Engine_Detection,\n                MyMwcObjectBuilder_AmmoGroupEnum.Missile, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Missile_Launcher);\n            BindAmmo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Guided_Missile_Visual_Detection,\n                MyMwcObjectBuilder_AmmoGroupEnum.Missile, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Missile_Launcher);\n\n            #endregion\n\n            #region Create Bot Player Relationship helpers\n\n            #endregion\n\n            #region Create Ship Faction Nationality helpers\n\n            foreach (int factionEnum in Enum.GetValues(typeof(MyMwcObjectBuilder_FactionEnum)))\n            {\n                m_shipFactionNationality.Add(factionEnum, new MyGuiHelperBase(MyFactionConstants.GetFactionProperties((MyMwcObjectBuilder_FactionEnum)factionEnum).NameEnum));\n            }\n\n            #endregion\n\n            #region Create Bot Behaviour helpers\n\n            #endregion\n\n            #region Create Bot AI Templates helpers\n            m_botAITemplates.Add((int)MyAITemplateEnum.DEFAULT, new MyGuiHelperBase(MyTextsWrapperEnum.Default));\n            m_botAITemplates.Add((int)MyAITemplateEnum.AGGRESIVE, new MyGuiHelperBase(MyTextsWrapperEnum.Aggressive));\n            m_botAITemplates.Add((int)MyAITemplateEnum.DEFENSIVE, new MyGuiHelperBase(MyTextsWrapperEnum.Defensive));\n            m_botAITemplates.Add((int)MyAITemplateEnum.FLEE, new MyGuiHelperBase(MyTextsWrapperEnum.Flee));\n            m_botAITemplates.Add((int)MyAITemplateEnum.CRAZY, new MyGuiHelperBase(MyTextsWrapperEnum.Crazy));\n            m_botAITemplates.Add((int)MyAITemplateEnum.PASSIVE, new MyGuiHelperBase(MyTextsWrapperEnum.Passive));\n            #endregion\n\n            #region Create Patrol Mode helpers\n            m_patrolMode.Add((int)MyPatrolMode.CYCLE, new MyGuiHelperBase(MyTextsWrapperEnum.Cycle));\n            m_patrolMode.Add((int)MyPatrolMode.PING_PONG, new MyGuiHelperBase(MyTextsWrapperEnum.PingPong));\n            m_patrolMode.Add((int)MyPatrolMode.ONE_WAY, new MyGuiHelperBase(MyTextsWrapperEnum.OneWay));\n            #endregion\n        }\n\n        public static MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum? GetWeaponType(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum ammo, MyMwcObjectBuilder_AmmoGroupEnum group)\n        {\n            MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum ret;\n            Dictionary<int, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum> dic;\n            if (m_ammoBinding.TryGetValue((int)ammo, out dic))\n            {\n                if (dic.TryGetValue((int)group, out ret))\n                {\n                    return ret;\n                }\n            }\n            return null;\n        }\n\n        public static MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum? GetFirstWeaponType(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum ammo)\n        {\n            Dictionary<int, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum> dic;\n            if (m_ammoBinding.TryGetValue((int)ammo, out dic))\n            {\n                foreach (var kv in dic)\n                {\n                    return kv.Value;\n                }\n            }\n            return null;\n        }\n\n        public static bool IsAmmoInGroup(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum ammo, MyMwcObjectBuilder_AmmoGroupEnum group)\n        {\n            return (m_ammoBinding.ContainsKey((int)ammo) && m_ammoBinding[(int)ammo].ContainsKey((int)group));\n\n        }\n\n        private static void BindAmmo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum ammo, MyMwcObjectBuilder_AmmoGroupEnum group, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum weapon)\n        {\n            if (!m_ammoBinding.ContainsKey((int)ammo)) \n                m_ammoBinding[(int)ammo] = new Dictionary<int, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum>();\n            m_ammoBinding[(int)ammo][(int)group] = weapon;\n        }        \n\n        public static MyGuiSmallShipHelperAmmo GetMyGuiSmallShipHelperAmmo(MyMwcObjectBuilder_AmmoGroupEnum ammo)\n        {\n            MyGuiSmallShipHelperAmmo ret;\n            if (m_ammoGroups.TryGetValue((int)ammo, out ret))\n                return ret;\n            else\n                return null;\n        }\n\n        public static MyGuiHelperBase GetMyGuiSmallShipFactionNationality(MyMwcObjectBuilder_FactionEnum shipFaction)\n        {\n            MyGuiHelperBase ret;\n            if (m_shipFactionNationality.TryGetValue((int)shipFaction, out ret))\n                return ret;\n            else\n                return null;\n        }\n\n        public static MyGuiHelperBase GetMyGuiSmallShipBotAITemplate(MyAITemplateEnum aiTemplate)\n        {\n            MyGuiHelperBase ret;\n            if (m_botAITemplates.TryGetValue((int)aiTemplate, out ret))\n                return ret;\n            else\n                return null;\n        }\n\n        public static MyGuiHelperBase GetMyGuiSmallShipPatrolMode(MyPatrolMode patrolMode)\n        {\n            MyGuiHelperBase ret;\n            if (m_patrolMode.TryGetValue((int)patrolMode, out ret))\n                return ret;\n            else\n                return null;\n        }\n\n\n        public static void UnloadContent()\n        {            \n            m_ammoGroups.Clear();         \n        }\n\n        public static void LoadContent()\n        {\n            #region Create ammo groups helpers\n\n            m_ammoGroups.Add((int)MyMwcObjectBuilder_AmmoGroupEnum.Bullet,\n                new MyGuiSmallShipHelperAmmo(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\GroupBullet\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.AmmoGroupBullet));\n\n            m_ammoGroups.Add((int)MyMwcObjectBuilder_AmmoGroupEnum.Cannon,\n                new MyGuiSmallShipHelperAmmo(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\GroupCannon\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.AmmoGroupCannon));\n\n            m_ammoGroups.Add((int)MyMwcObjectBuilder_AmmoGroupEnum.Missile,\n                new MyGuiSmallShipHelperAmmo(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\GroupMissile\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.AmmoGroupMissile));\n\n            m_ammoGroups.Add((int)MyMwcObjectBuilder_AmmoGroupEnum.UniversalLauncherBack,\n                new MyGuiSmallShipHelperAmmo(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\GroupUniversalLauncherBack\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.AmmoGroupUniversalLauncherBack));\n\n            m_ammoGroups.Add((int)MyMwcObjectBuilder_AmmoGroupEnum.UniversalLauncherFront,\n                new MyGuiSmallShipHelperAmmo(MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GuiHelpers\\\\GroupUniversalLauncherFront\", flags: TextureFlags.IgnoreQuality),\n                    MyTextsWrapperEnum.AmmoGroupUniversalLauncherFront));\n\n            #endregion            \n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Helpers/MyGuiVoxelMaterialHelper.cs",
    "content": "﻿using MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Textures;\n\nnamespace MinerWars.AppCode.Game.GUI.Helpers\n{\n    class MyGuiVoxelMaterialHelper : MyGuiHelperBase\n    {\n        public MyGuiVoxelMaterialHelper(MyTexture2D icon, MyTextsWrapperEnum description)\n            : base(icon, description)\n        {\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Helpers/MyQuoteOfTheDay.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.CommonLIB.AppCode.Utils;\n\nnamespace MinerWars.AppCode.Game.GUI.Helpers\n{\n    static class MyQuoteOfTheDay\n    {\n        public static MyTextsWrapperEnum GetQuote(int i)\n        {\n            i = i % m_quotes.Length; if (i < 0) i += m_quotes.Length;  // correct modulo\n            return m_quotes[i];\n        }\n\n        public static MyTextsWrapperEnum GetRandomQuote()\n        {\n            return GetQuote(MyMwcUtils.GetRandomInt(m_quotes.Length - 1));\n        }\n\n        static MyTextsWrapperEnum[] m_quotes = new MyTextsWrapperEnum[]\n        {\n            MyTextsWrapperEnum.QuoteOfTheDay00,\n            MyTextsWrapperEnum.QuoteOfTheDay01,\n            MyTextsWrapperEnum.QuoteOfTheDay02,\n            MyTextsWrapperEnum.QuoteOfTheDay03,\n            MyTextsWrapperEnum.QuoteOfTheDay04,\n            MyTextsWrapperEnum.QuoteOfTheDay05,\n            MyTextsWrapperEnum.QuoteOfTheDay06,\n            MyTextsWrapperEnum.QuoteOfTheDay07,\n            MyTextsWrapperEnum.QuoteOfTheDay08,\n            MyTextsWrapperEnum.QuoteOfTheDay09,\n            MyTextsWrapperEnum.QuoteOfTheDay10,\n            MyTextsWrapperEnum.QuoteOfTheDay11,\n            MyTextsWrapperEnum.QuoteOfTheDay12,\n            MyTextsWrapperEnum.QuoteOfTheDay13,\n            MyTextsWrapperEnum.QuoteOfTheDay14,\n            MyTextsWrapperEnum.QuoteOfTheDay15,\n            MyTextsWrapperEnum.QuoteOfTheDay16,\n            MyTextsWrapperEnum.QuoteOfTheDay17,\n            MyTextsWrapperEnum.QuoteOfTheDay18,\n            MyTextsWrapperEnum.QuoteOfTheDay19,\n            MyTextsWrapperEnum.QuoteOfTheDay20,\n            MyTextsWrapperEnum.QuoteOfTheDay21,\n            MyTextsWrapperEnum.QuoteOfTheDay22,\n            MyTextsWrapperEnum.QuoteOfTheDay23,\n            MyTextsWrapperEnum.QuoteOfTheDay24,\n            MyTextsWrapperEnum.QuoteOfTheDay25,\n            MyTextsWrapperEnum.QuoteOfTheDay26,\n            MyTextsWrapperEnum.QuoteOfTheDay27,\n            MyTextsWrapperEnum.QuoteOfTheDay28,\n            MyTextsWrapperEnum.QuoteOfTheDay29,\n            MyTextsWrapperEnum.QuoteOfTheDay30,\n            MyTextsWrapperEnum.QuoteOfTheDay31,\n            MyTextsWrapperEnum.QuoteOfTheDay32,\n            MyTextsWrapperEnum.QuoteOfTheDay33,\n            MyTextsWrapperEnum.QuoteOfTheDay34\n        };\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/MyGuiScreenCheats.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Render;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils;\nusing KeenSoftwareHouse.Library.Extensions;\n\nnamespace MinerWars.AppCode.Game.GUI\n{\n    using System.Diagnostics;\n    using MinerWars.AppCode.Game.GUI.DebugScreens;\n    using MinerWars.AppCode.Game.Gameplay;\n\n    class MyGuiScreenCheats : MyGuiScreenDebugBase\n    {\n        /// <summary>\n        /// Initializes a new instance of the <see cref=\"MyGuiScreenDebugDeveloper\"/> class.\n        /// </summary>\n        public MyGuiScreenCheats()\n            : base(new Vector2(.5f, .5f), new Vector2(0.35f, 0.92f), MyGuiConstants.SCREEN_BACKGROUND_COLOR, true)\n        {\n            AddCaption(MyTextsWrapperEnum.CheatsCaption, new Vector2(0f, 0.04f), captionScale:1.35f);\n\n            m_closeOnEsc = true;\n            m_checkBoxOffset = 0.015f;\n\n            m_currentPosition = -m_size.Value / 2.0f + new Vector2(0.03f, /*0.15f*//*0.05f*/0.15f);\n\n            if (!MyGuiScreenGamePlay.Static.CheatsEnabled())\n            {\n                m_currentPosition.Y -= 0.025f;\n                AddLabel(MyTextsWrapper.Get(MyTextsWrapperEnum.PurchaseCheats), Vector4.One, 0.725f, font:MyGuiManager.GetFontMinerWarsRed());\n                m_currentPosition.Y -= 0.005f;\n            }\n\n            foreach (MyGameplayCheat cheat in MyGameplayCheats.AllCheats)\n            {\n                AddCheat(cheat);\n            }\n\n            m_currentPosition.Y += 0.01f;\n\n            m_enableBackgroundFade = true;\n            m_backgroundFadeColor = new Vector4(0.0f,0.0f,0.0f,0.5f);\n\n            // resize for drawing\n            m_size = new Vector2(0.425f, 0.92f);\n        }\n\n        bool m_lastWasButton;\n\n        void AddCheat(MyGameplayCheat cheat)\n        {\n            bool enabled = MyGuiScreenGamePlay.Static.CheatsEnabled() && cheat.IsImplemented;\n            MyGuiControlBase control;\n            if (cheat.IsButton)\n            {\n                if (!m_lastWasButton) m_currentPosition.Y += 0.005f * m_scale;\n                m_lastWasButton = true;\n                control = AddButton(MyTextsWrapper.Get(cheat.CheatName), onCheatButtonClick, textColor: Vector4.One, size: new Vector2(0.20f, 0.04f));\n            }\n            else\n            {\n                if (m_lastWasButton) m_currentPosition.Y += 0.005f * m_scale;\n                m_lastWasButton = false;\n                control = AddCheckBox(cheat.CheatName, MyGameplayCheats.IsCheatEnabled(cheat.CheatEnum), OnCheatCheckedChanged, enabled, color: Vector4.One);\n            }\n\n            control.UserData = cheat;\n\n            control.Enabled = enabled;\n        }\n\n        void OnCheatCheckedChanged(MyGuiControlCheckbox sender)\n        {\n            MyGameplayCheat cheat = (MyGameplayCheat)sender.UserData;\n            MyGameplayCheats.EnableCheat(cheat.CheatEnum, sender.Checked);\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenCheats\";\n        }\n\n        void onCheatButtonClick(MyGuiControlButton sender)\n        {\n            MyGameplayCheat cheat = (MyGameplayCheat)sender.UserData;\n            MyGameplayCheats.EnableCheat(cheat.CheatEnum, true);\n        }\n  \n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/MyGuiScreenChooseDifficulty.cs",
    "content": "﻿using MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.AppCode.Game.World;\nusing MinerWars.AppCode.Game.Gameplay;\nusing MinerWars.AppCode.Game.Sessions;\nusing SysUtils.Utils;\nusing MinerWars.AppCode.Game.Audio;\n\nnamespace MinerWars.AppCode.Game.GUI\n{\n    class MyGuiScreenChooseDifficulty : MyGuiScreenBase\n    {\n        MyGameplayDifficultyEnum m_difficulty = MyGameplayDifficultyEnum.EASY;\n        string m_checkpointName;\n        MyGuiScreenBase m_closeAfterSuccessfulEnter;\n\n        public MyGuiScreenChooseDifficulty(MyGuiScreenBase closeAfterSuccessfulEnter, string checkpointName)\n            : base(new Vector2(0.5f, 0.5f), MyGuiConstants.SCREEN_BACKGROUND_COLOR,  new Vector2(574f/1600f, 640/1200f), false, MyGuiManager.GetSelectEditorBackground())\n        \n        {\n            m_closeAfterSuccessfulEnter = closeAfterSuccessfulEnter;\n            m_checkpointName = checkpointName;\n\n            m_enableBackgroundFade = true;\n            m_canHaveFocus = true;\n            m_closeOnEsc = true;\n            m_isTopMostScreen = true;\n            m_drawEvenWithoutFocus = true;\n\n            AddCaption(MyTextsWrapperEnum.DifficultyCaption, new Vector2(0, 0.005f));\n        }\n\n        public override void LoadContent()\n        {\n            base.LoadContent();\n\n            Vector2 menuPositionOrigin = new Vector2(0.0f, -m_size.Value.Y / 2.0f + 0.145f);\n            const MyGuiControlButtonTextAlignment menuButtonTextAlignement = MyGuiControlButtonTextAlignment.CENTERED;\n\n\n            Controls.Add(new MyGuiControlButton(this, menuPositionOrigin + 0 * MyGuiConstants.MENU_BUTTONS_POSITION_DELTA, MyGuiConstants.MAIN_MENU_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.DifficultyEasy, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnEasyClick, menuButtonTextAlignement, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n            Controls.Add(new MyGuiControlButton(this, menuPositionOrigin + 1 * MyGuiConstants.MENU_BUTTONS_POSITION_DELTA, MyGuiConstants.MAIN_MENU_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.DifficultyNormal, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnNormalClick, menuButtonTextAlignement, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n            Controls.Add(new MyGuiControlButton(this, menuPositionOrigin + 2 * MyGuiConstants.MENU_BUTTONS_POSITION_DELTA, MyGuiConstants.MAIN_MENU_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.DifficultyHard, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnHardClick, menuButtonTextAlignement, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n\n            var exitButton = new MyGuiControlButton(this, new Vector2(0, 0.1460f), MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE,\n                MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyGuiManager.GetConfirmButton(), null, null, MyTextsWrapperEnum.Back,\n                MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, menuButtonTextAlignement, OnBackClick,\n                true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true, true);\n            Controls.Add(exitButton);\n\n\n            SetControlIndex(2);\n        }\n\n        public override void HandleInput(MyGuiInput input, bool receivedFocusInThisUpdate)\n        {\n            base.HandleInput(input, receivedFocusInThisUpdate);\n\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenChooseDifficulty\";\n        }\n\n        public void OnEasyClick(MyGuiControlButton sender)\n        {\n            m_difficulty = MyGameplayDifficultyEnum.EASY;\n            Run();\n        }\n\n        public void OnNormalClick(MyGuiControlButton sender)\n        {\n            m_difficulty = MyGameplayDifficultyEnum.NORMAL;\n            Run();\n        }\n\n        public void OnHardClick(MyGuiControlButton sender)\n        {\n            m_difficulty = MyGameplayDifficultyEnum.HARD;\n            Run();\n        }\n\n        public void Run()\n        {\n            MyGuiManager.CloseAllScreensExcept(MyGuiScreenGamePlay.Static);\n            try\n            {\n                StartNewGame();\n            }\n            catch (MyDataCorruptedException e)\n            {\n                MyMwcLog.WriteLine(e);\n                MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.LocalDataCorrupted, MyTextsWrapperEnum.Error, OnErrorClose));\n            }\n        }\n\n        void StartNewGame()\n        {\n            MySession.StartNewGame(m_difficulty);\n        }\n\n        static void OnErrorClose(MyGuiScreenMessageBoxCallbackEnum result)\n        {\n            MyGuiManager.BackToMainMenu();\n        }\n\n        public void OnBackClick(MyGuiControlButton sender)\n        {\n            CloseScreen();\n        }        \n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/MyGuiScreenChoosePlay.cs",
    "content": "﻿using System.Text;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Localization;\n\nnamespace MinerWars.AppCode.Game.GUI\n{\n    class MyGuiScreenChoosePlay : MyGuiScreenBase\n    {\n        MyGuiScreenBase m_closeAfterSuccessfulEnter;\n\n        public MyGuiScreenChoosePlay(MyGuiScreenBase closeAfterSuccessfulEnter)\n            : base(new Vector2(0.5f, 0.5f), MyGuiConstants.SCREEN_BACKGROUND_COLOR, new Vector2(0.25f, 0.35f))\n        {\n            m_closeAfterSuccessfulEnter = closeAfterSuccessfulEnter;\n            m_enableBackgroundFade = true;\n            AddCaption(MyTextsWrapperEnum.ChooseGameType, new Vector2(0, 0.005f));\n        }\n\n        public override void LoadContent()\n        {\n            base.LoadContent();\n\n            Vector2 menuPositionOrigin = new Vector2(0.0f, -m_size.Value.Y / 2.0f + 0.125f);\n            Vector2 buttonDelta = new Vector2(0.1f, 0);\n            const MyGuiControlButtonTextAlignment menuButtonTextAlignement = MyGuiControlButtonTextAlignment.CENTERED;\n\n            int index = 0;\n            Controls.Add(new MyGuiControlButton(this, menuPositionOrigin + index++ * MyGuiConstants.MENU_BUTTONS_POSITION_DELTA, MyGuiConstants.MAIN_MENU_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.PlayStory, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnPlayStoryClick, menuButtonTextAlignement, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, MyFakes.PLAY_STORY_BUTTON_IMPLEMENTED));\n            \n            // MMO is now disabled\n            //Controls.Add(new MyGuiControlButton(this, menuPositionOrigin + index++ * MyGuiConstants.MENU_BUTTONS_POSITION_DELTA, MyGuiConstants.MAIN_MENU_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n            //    MyTextsWrapperEnum.PlayMMO, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnPlayMMOClick, menuButtonTextAlignement, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, MyFakes.PLAY_MMO_BUTTON_IMPLEMENTED));\n            Controls.Add(new MyGuiControlButton(this, menuPositionOrigin + index++ * MyGuiConstants.MENU_BUTTONS_POSITION_DELTA, MyGuiConstants.MAIN_MENU_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.PlaySandbox, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnPlaySandboxClick, menuButtonTextAlignement, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, MyFakes.PLAY_SANDBOX_BUTTON_IMPLEMENTED));\n\n            Controls.Add(new MyGuiControlButton(this, new Vector2(0.00f, m_size.Value.Y / 2.0f - MyGuiConstants.MESSAGE_BOX_BORDER_AREA_Y - MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE.Y / 2.0f), MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.Back, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnBackClick, menuButtonTextAlignement, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenChoosePlay\";\n        }\n\n        public void OnPlayStoryClick(MyGuiControlButton sender)\n        {\n            MyGuiManager.AddScreen(new MyGuiScreenSelectStory(m_closeAfterSuccessfulEnter));\n        }\n\n        public void OnPlayMMOClick(MyGuiControlButton sender)\n        {\n            //  TODO: See implementation of OnPlayStoryClick()\n            MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapper.Get(MyTextsWrapperEnum.MessageMmoWillBeAddedLater), new StringBuilder(), MyTextsWrapperEnum.Ok, null));\n        }\n\n        public void OnPlaySandboxClick(MyGuiControlButton sender)\n        {\n            MyGuiManager.AddScreen(new MyGuiScreenMultiplayer(m_closeAfterSuccessfulEnter));\n        }\n\n        public void OnBackClick(MyGuiControlButton sender)\n        {\n            CloseScreen();\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/MyGuiScreenDemoAccessInfo.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.World;\n\nnamespace MinerWars.AppCode.Game.GUI\n{\n    class MyGuiScreenDemoAccessInfo : MyGuiScreenBase\n    {\n        private const int m_blinkingIntervalVisible = 1000;             // in ms\n        private const int m_blinkingIntervalInvisible = 300;             // in ms\n\n        private int m_drawingBlinkingTextLastTime;\n        private bool m_drawingBlinkingTextStatus;\n\n        private Vector2 m_normalizedCoord = new Vector2(0.5f, 0.27f);\n\n        private StringBuilder m_sbInfo;\n        private StringBuilder m_sbPressToHide;\n        private const string m_keysToCloseInfo = \"Alt + G\";\n\n        public MyGuiScreenDemoAccessInfo()\n            : base(new Vector2(1.0f, 0.0f), null, null, true, null)\n        {\n            m_isTopMostScreen = true;\n            m_drawEvenWithoutFocus = true;\n            m_canHaveFocus = false;\n            m_screenCanHide = false;\n            m_canCloseInCloseAllScreenCalls = false;\n\n            m_sbInfo = MyTextsWrapper.Get(MyTextsWrapperEnum.MessageYouHaveDemoAccess);\n            m_sbPressToHide = new StringBuilder();\n            m_sbPressToHide.AppendFormat(MyTextsWrapper.GetFormatString(MyTextsWrapperEnum.MessagePressToHide), m_keysToCloseInfo);\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenDemoAccessInfo\";\n        }\n\n        public override bool Draw(float backgroundFadeAlpha)\n        {\n            int deltaTime = MyMinerGame.TotalTimeInMilliseconds - m_drawingBlinkingTextLastTime;\n\n            if (((m_drawingBlinkingTextStatus == true) && (deltaTime > m_blinkingIntervalVisible)) ||\n                ((m_drawingBlinkingTextStatus == false) && (deltaTime > m_blinkingIntervalInvisible)))\n            {\n                m_drawingBlinkingTextStatus = !m_drawingBlinkingTextStatus;\n                m_drawingBlinkingTextLastTime = MyMinerGame.TotalTimeInMilliseconds;\n            }\n\n            if (m_drawingBlinkingTextStatus)\n            {\n                MyRectangle2D rec = MyGuiManager.DrawString(MyGuiManager.GetFontMinerWarsRed(), m_sbInfo,\n                                                            m_normalizedCoord,\n                                                            1f, Color.White,\n                                                            MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER);\n                MyGuiManager.DrawString(MyGuiManager.GetFontMinerWarsRed(), m_sbPressToHide,\n                                        new Vector2(m_normalizedCoord.X, m_normalizedCoord.Y + rec.Size.Y),\n                                        0.75f, Color.White, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER);\n            }            \n            return true;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/MyGuiScreenEnterFriendSectorMap.cs",
    "content": "﻿using System.Collections.Generic;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.World;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing System;\n\nnamespace MinerWars.AppCode.Game.GUI\n{\n    class MyGuiScreenEnterFriendSectorMap : MyGuiScreenBase\n    {\n        MyGuiControlListbox m_mapsCombobox;\n        MyTextsWrapperEnum m_startSessionProgressText;\n        MyMwcStartSessionRequestTypeEnum m_startSessionType;\n        List<MyMwcSectorIdentifier> m_sectorIdentifiers;\n        List<MyMwcUserDetail> m_userDetails;\n        MyGuiControlTextbox m_findPlayerName;\n        MyGuiScreenBase m_closeAfterSuccessfulEnter;\n\n        public Action<MyMwcSectorIdentifier> CustomLoadAction { get; set; }\n\n        public MyGuiScreenEnterFriendSectorMap(MyMwcStartSessionRequestTypeEnum startSessionType, MyTextsWrapperEnum startSessionProgressText, MyGuiScreenBase closeAfterSuccesfullEnter)\n            : base(new Vector2(0.5f, 0.5f), MyGuiConstants.SCREEN_BACKGROUND_COLOR, new Vector2(700f / 1600f, 700 / 1200f))\n        {\n            m_startSessionType = startSessionType;\n            m_startSessionProgressText = startSessionProgressText;\n            m_enableBackgroundFade = true;\n            m_sectorIdentifiers = null;\n            m_closeAfterSuccessfulEnter = closeAfterSuccesfullEnter;\n            m_backgroundTexture = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\BackgroundScreen\\\\ConfigWheelBackground\", flags: TextureFlags.IgnoreQuality);\n            RecreateControls();\n\n        }\n\n        private void RecreateControls()\n        {\n            m_size = new Vector2(1100f / 1600f, 1200 / 1200f);\n\n            Controls.Clear();\n\n            string prevName = MyConfig.LastFriendName;\n            if (m_findPlayerName != null && m_findPlayerName.Text != null)\n            {\n                prevName = m_findPlayerName.Text;\n            }\n\n            AddCaption(MyTextsWrapperEnum.FriendsSectorMap, new Vector2(0, 0.04f));\n\n            Vector2 controlsOriginLeft = new Vector2(-m_size.Value.X / 2.0f + 0.1f, -m_size.Value.Y / 2.0f + 0.1f);\n            Vector2 controlsDelta = new Vector2(0, 0.0525f);\n\n            // controls for typing friend name to search\n            Controls.Add(new MyGuiControlLabel(this, controlsOriginLeft + 1f * controlsDelta, null, MyTextsWrapperEnum.FriendName, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n            m_findPlayerName = new MyGuiControlTextbox(this, controlsOriginLeft + 1f * controlsDelta + new Vector2(MyGuiConstants.TEXTBOX_MEDIUM_SIZE.X / 2.0f + 0.15f, 0), MyGuiControlPreDefinedSize.MEDIUM, prevName, 20, MyGuiConstants.TEXTBOX_BACKGROUND_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiControlTextboxType.NORMAL);\n            Controls.Add(m_findPlayerName);\n\n            var searchButton = new MyGuiControlButton(this, m_findPlayerName.GetPosition() + new Vector2(MyGuiConstants.TEXTBOX_MEDIUM_SIZE.X / 2.0f - 0.0208f, 0), MyGuiConstants.SEARCH_BUTTON_SIZE,\n                MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyGuiManager.GetButtonSearchTexture(), null, null, MyTextsWrapperEnum.Search,\n                MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE * 0.8f, MyGuiControlButtonTextAlignment.CENTERED, OnSearchClick,\n                true, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER, true, true);\n            Controls.Add(searchButton);\n\n            // friend maps available for selection\n            //Controls.Add(new MyGuiControlLabel(this, controlsOriginLeft + 3* controlsDelta, null, MyTextsWrapperEnum.Map, MyGuiConstants.LABEL_TEXT_COLOR,\n            //    MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n\n            if (m_sectorIdentifiers != null && m_userDetails != null && m_sectorIdentifiers.Count > 0)\n            {\n                m_mapsCombobox = new MyGuiControlListbox(this, new Vector2(0, -0.010f), new Vector2(0.43f, 0.1f), MyGuiConstants.LISTBOX_BACKGROUND_COLOR, null, MyGuiConstants.LABEL_TEXT_SCALE, 1, 6, 1, true, true, false,\n                    null, null, MyGuiManager.GetScrollbarSlider(), MyGuiManager.GetHorizontalScrollbarSlider(), 1, 0, MyGuiConstants.LISTBOX_BACKGROUND_COLOR_BLUE, 0f, 0f, 0f, 0f, 0, 0f, -0.01f, -0.01f, -0.02f, 0.02f);\n\n                for (int i = 0; i < m_sectorIdentifiers.Count; i++)\n                {\n                    MyMwcSectorIdentifier sectorIdentifier = m_sectorIdentifiers[i];\n                    foreach (MyMwcUserDetail userDetail in m_userDetails)\n                    {\n                        if (sectorIdentifier.UserId.HasValue && sectorIdentifier.UserId.Value == userDetail.UserId)\n                        {\n                            if (string.IsNullOrEmpty(sectorIdentifier.SectorName))\n                            {\n                                m_mapsCombobox.AddItem(i, new StringBuilder(string.Format(\"{0} - {1}\", userDetail.DisplayName, sectorIdentifier.Position.ToString())), null);\n                            }\n                            else\n                            {\n                                m_mapsCombobox.AddItem(i, new StringBuilder(string.Format(\"{0} - {1} ({2})\", userDetail.DisplayName, sectorIdentifier.SectorName, sectorIdentifier.Position.ToString())), null);\n                            }\n                        }\n                    }\n                }\n\n                SortSectors();\n                m_mapsCombobox.ItemDoubleClick += OnItemDoubleClick;\n                Controls.Add(m_mapsCombobox);\n            }\n            else\n            {\n                Controls.Add(new MyGuiControlLabel(this, controlsOriginLeft + 3 * controlsDelta + new Vector2(0.21f, 0), null, MyTextsWrapperEnum.NoSectorsAvailable, MyGuiConstants.LABEL_TEXT_COLOR,\n                MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n            }\n\n            //  Buttons OK and CANCEL\n            var m_okButton = new MyGuiControlButton(this, new Vector2(-0.0879f, 0.35f), MyGuiConstants.OK_BUTTON_SIZE * 0.75f,\n                       MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                       MyGuiManager.GetInventoryScreenButtonTexture(), null, null, MyTextsWrapperEnum.Ok,\n                       MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, MyGuiControlButtonTextAlignment.CENTERED, OnOkClick,\n                       true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true, true);\n            Controls.Add(m_okButton);\n\n            var m_cancelButton = new MyGuiControlButton(this, new Vector2(0.0879f, 0.35f), MyGuiConstants.OK_BUTTON_SIZE * 0.75f,\n                       MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                       MyGuiManager.GetInventoryScreenButtonTexture(), null, null, MyTextsWrapperEnum.Cancel,\n                       MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, MyGuiControlButtonTextAlignment.CENTERED, OnCancelClick,\n                       true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true, true);\n            Controls.Add(m_cancelButton);\n\n            m_findPlayerName.MoveCartrigeToEnd();\n            this.SetControlIndex(Controls.IndexOf(m_findPlayerName));\n        }\n\n        private void SortSectors()\n        {\n            // Named sectors first\n            m_mapsCombobox.CustomSortRows((a, b) =>\n            {\n                var sectorA = m_sectorIdentifiers[a.Key];\n                var sectorB = m_sectorIdentifiers[b.Key];\n\n                if (sectorA.UserId != sectorB.UserId)\n                {\n                    return sectorA.UserId.Value.CompareTo(sectorB.UserId.Value);\n                }\n\n                bool aName = string.IsNullOrEmpty(m_sectorIdentifiers[a.Key].SectorName);\n                bool bName = string.IsNullOrEmpty(m_sectorIdentifiers[b.Key].SectorName);\n\n                return aName == bName ?\n                    a.Value.ToString().CompareTo(b.Value.ToString()) :\n                    (aName ? 1 : -1);\n            }, 0);\n        }\n\n        public void AddFriendSectorsResponse(List<MyMwcSectorIdentifier> sectorIdentifiers, List<MyMwcUserDetail> userDetails)\n        {\n            m_sectorIdentifiers = sectorIdentifiers;\n            m_userDetails = userDetails;\n            RecreateControls();\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenEnterFriendSectorMap\";\n        }\n\n        public void OnSearchClick(MyGuiControlButton sender)\n        {\n            if (m_findPlayerName.Text.Length == 1)\n            {\n                MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.EnterAtLeastTwoCharacters, MyTextsWrapperEnum.MessageBoxCaptionError, MyTextsWrapperEnum.Ok, MsgBoxCallback));\n                return;\n            }\n\n            MyConfig.LastFriendName = m_findPlayerName.Text ?? String.Empty;\n            MyConfig.Save();\n\n            var criterium = MyMwcSelectSectorRequestTypeEnum.FIND_BY_PLAYER_NAME_FULLTEXT;\n\n            if (String.IsNullOrEmpty(m_findPlayerName.Text))\n            {\n                criterium = MyMwcSelectSectorRequestTypeEnum.RANDOM_FRIENDS;\n            }\n\n            MyGuiManager.AddScreen(new MyGuiScreenSelectSandboxProgress(criterium, MyTextsWrapperEnum.SelectSandboxInProgressPleaseWait,\n                this, m_findPlayerName.Text, AddFriendSectorsResponse));\n\n            //CloseScreen();\n        }\n\n        void MsgBoxCallback(MyGuiScreenMessageBoxCallbackEnum result)\n        {\n            RecreateControls();\n        }\n\n        public void OnItemDoubleClick(object sender, MyGuiControlListboxItemEventArgs eventArgs)\n        {\n            OnOkClick(null);\n        }\n\n        public void OnOkClick(MyGuiControlButton sender)\n        {\n            if (m_mapsCombobox.GetSelectedItemKey() == null)\n                return;\n\n            //AddFriendSectorsResponse not called?\n            if (m_sectorIdentifiers == null)\n                return;\n\n            MyMwcSectorIdentifier sectorIdentifier = m_sectorIdentifiers[m_mapsCombobox.GetSelectedItemKey().Value];\n            MyConfig.LastFriendName = m_findPlayerName.Text;\n            MyConfig.LastFriendSectorPosition = sectorIdentifier.Position;\n            MyConfig.LastFriendSectorUserId = sectorIdentifier.UserId.Value;\n            MyConfig.Save();\n\n            MyGuiManager.CloseAllScreensNowExcept(MyGuiScreenGamePlay.Static);\n\n            if (CustomLoadAction != null)\n            {\n                CustomLoadAction(sectorIdentifier);\n            }\n            else\n            {\n                MyGuiManager.AddScreen(new MyGuiScreenStartSessionProgress(m_startSessionType, m_startSessionProgressText, sectorIdentifier, MyGameplayDifficultyEnum.EASY, null, m_closeAfterSuccessfulEnter));\n            }\n        }\n\n        public void OnCancelClick(MyGuiControlButton sender)\n        {\n            CloseScreen();\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/MyGuiScreenEnterSectorMap.cs",
    "content": "﻿using System.Collections.Generic;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing System.Linq;\nusing System;\nusing MinerWars.AppCode.Game.World;\nusing ParallelTasks;\n\nnamespace MinerWars.AppCode.Game.GUI\n{\n    class MyGuiScreenEnterSectorMap : MyGuiScreenBase\n    {\n        //MyGuiControlCombobox m_sectorsCombobox;\n        MyGuiControlListbox m_sectorsListbox;\n        MyGuiScreenBase m_closeAfterSuccessfulEnter;\n        List<MyMwcSectorIdentifier> m_sectors;\n        MyTextsWrapperEnum m_startSessionProgressText;\n        MyMwcStartSessionRequestTypeEnum m_startSessionType;\n\n        MyMwcVector3Int? m_lastSandboxSector;\n        Future<List<MyMwcSectorIdentifier>>? m_loadingSectors;\n\n        Dictionary<MyMwcVector3Int, string> m_sectorPositionsToTextures;\n\n        public Action<MyMwcSectorIdentifier> CustomLoadAction { get; set; }\n\n        public MyGuiScreenEnterSectorMap(MyGuiScreenBase closeAfterSuccessfulEnter, MyMwcStartSessionRequestTypeEnum startSessionType, MyTextsWrapperEnum startSessionProgressText)\n            : this(closeAfterSuccessfulEnter, startSessionType, startSessionProgressText, null)\n        {\n        }\n\n        public MyGuiScreenEnterSectorMap(MyGuiScreenBase closeAfterSuccessfulEnter, MyMwcStartSessionRequestTypeEnum startSessionType, MyTextsWrapperEnum startSessionProgressText, MyMwcVector3Int? lastSandboxSector)\n            : base(new Vector2(0.5f, 0.5f), MyGuiConstants.SCREEN_BACKGROUND_COLOR, new Vector2(700f / 1600f, 700 / 1200f))\n        {\n            m_closeAfterSuccessfulEnter = closeAfterSuccessfulEnter;\n            m_startSessionType = startSessionType;\n            m_startSessionProgressText = startSessionProgressText;\n            m_enableBackgroundFade = true;\n            m_sectors = new List<MyMwcSectorIdentifier>();\n            m_backgroundTexture = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\BackgroundScreen\\\\ConfigWheelBackground\", flags: TextureFlags.IgnoreQuality);\n            m_lastSandboxSector = lastSandboxSector;\n\n            RecreateControls();\n\n            CreateSectorPositionsToTexturesTable();\n        }\n\n        private void CreateSectorPositionsToTexturesTable()\n        {\n            m_sectorPositionsToTextures = new Dictionary<MyMwcVector3Int, string>();\n\n            m_sectorPositionsToTextures.Add(new MyMwcVector3Int(93, 0, 73), \"MothershipFacility\");\n            m_sectorPositionsToTextures.Add(new MyMwcVector3Int(88, 0, -58), \"FragileDeathmatch\");\n            m_sectorPositionsToTextures.Add(new MyMwcVector3Int(83, 0, 46), \"Rafinery\");\n            m_sectorPositionsToTextures.Add(new MyMwcVector3Int(76, 0, 29), \"NewNanjing\");\n            m_sectorPositionsToTextures.Add(new MyMwcVector3Int(64, 0, -20), \"UraniteMines\");\n            m_sectorPositionsToTextures.Add(new MyMwcVector3Int(61, 0, -65), \"IceCaveDeathmatch\");\n            m_sectorPositionsToTextures.Add(new MyMwcVector3Int(53, 0, 84), \"HallOfFame\");\n            m_sectorPositionsToTextures.Add(new MyMwcVector3Int(47, 0, -24), \"VoxelArena\");\n            m_sectorPositionsToTextures.Add(new MyMwcVector3Int(19, 0, -92), \"NerbayStations\");\n            m_sectorPositionsToTextures.Add(new MyMwcVector3Int(18, 0, 96), \"ArabianBorder\");\n            m_sectorPositionsToTextures.Add(new MyMwcVector3Int(3, 0, 9), \"HubShowcase\");\n            m_sectorPositionsToTextures.Add(new MyMwcVector3Int(-30, 0, -61), \"Warehouse\");\n            m_sectorPositionsToTextures.Add(new MyMwcVector3Int(-46, 0, 48), \"StBarbara\");\n            m_sectorPositionsToTextures.Add(new MyMwcVector3Int(-66, 0, -44), \"MilitaryOutpostDeathmatch\");\n            m_sectorPositionsToTextures.Add(new MyMwcVector3Int(-100, 0, 20), \"ResearchVessel\");\n\n            m_sectorPositionsToTextures.Add(new MyMwcVector3Int(-78, 0, 35), \"NewNYCDeathmatch\");\n            m_sectorPositionsToTextures.Add(new MyMwcVector3Int(-93, 0, 46), \"RiftDeathmatch\");\n            m_sectorPositionsToTextures.Add(new MyMwcVector3Int(-4, 0, 23), \"IndustrialDeathmatch\");\n\n\n            m_sectorPositionsToTextures.Add(new MyMwcVector3Int(17, 0, 67), \"25DAsteroidField\");\n            m_sectorPositionsToTextures.Add(new MyMwcVector3Int(93, 0, 14), \"25DCityFight\");\n            m_sectorPositionsToTextures.Add(new MyMwcVector3Int(-38, 0, 71), \"GatesOfHell\");\n            m_sectorPositionsToTextures.Add(new MyMwcVector3Int(-15, 0, -42), \"25DJunkyard\");\n            m_sectorPositionsToTextures.Add(new MyMwcVector3Int(-79, 0, 70), \"25DMilitaryArea\");\n            m_sectorPositionsToTextures.Add(new MyMwcVector3Int(-8, 0, -5), \"25DMinerOutpost\");\n            m_sectorPositionsToTextures.Add(new MyMwcVector3Int(-43, 0, 86), \"25DPlain\");\n            m_sectorPositionsToTextures.Add(new MyMwcVector3Int(1, 0, -58), \"25DRadioactive\");\n        }\n\n        private void RecreateControls()\n        {\n            Controls.Clear();\n\n            m_size = new Vector2(1100f / 1600f, 1200 / 1200f);\n\n            Vector2 controlsOriginLeft = new Vector2(-m_size.Value.X / 2.0f + 0.07f, -m_size.Value.Y / 2.0f + 0.2f - 0.0360f);\n            Vector2 controlsOriginRight = new Vector2(-m_size.Value.X / 2.0f + 0.07f + 0.355f, -m_size.Value.Y / 2.0f + 0.2f - 0.0360f);\n\n\n\n            AddCaption(MyTextsWrapperEnum.TemporarySectorMap, new Vector2(0, 0.035f));\n\n            //Controls.Add(new MyGuiControlLabel(this, controlsOriginLeft, null, MyTextsWrapperEnum.Map, MyGuiConstants.LABEL_TEXT_COLOR,\n            //    MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n\n            if (m_sectors != null && m_sectors.Count > 0)\n            {\n                // When editing global story sectors, add some unused sector\n                AddUnusedSector();\n\n                int selectedIndex = 0;\n\n                /*m_sectorsCombobox = new MyGuiControlCombobox(this, new Vector2(0, -0.17f), MyGuiControlPreDefinedSize.LONGMEDIUM, MyGuiConstants.COMBOBOX_BACKGROUND_COLOR, MyGuiConstants.COMBOBOX_TEXT_SCALE, 6, true, false, true);\n                for (int i = 0; i < m_sectors.Count; i++)\n                {\n                    MyMwcSectorIdentifier sectorIdentifier = m_sectors[i];\n\n                    if (m_lastSandboxSector.HasValue && sectorIdentifier.Position.Equals(m_lastSandboxSector.Value))\n                    {\n                        selectedIndex = i;\n                    }\n\n                    if (string.IsNullOrEmpty(sectorIdentifier.SectorName))\n                    {\n                        m_sectorsCombobox.AddItem(i, GetSectorScreenshot(sectorIdentifier), new StringBuilder(string.Format(\"{0}\", sectorIdentifier.Position.ToString())));\n                    }\n                    else\n                    {\n                        m_sectorsCombobox.AddItem(i, GetSectorScreenshot(sectorIdentifier), new StringBuilder(string.Format(\"{0} ({1})\", sectorIdentifier.SectorName, sectorIdentifier.Position.ToString())));\n                    }\n                }\n\n                SortSectors();\n\n                m_sectorsCombobox.SelectItemByKey(selectedIndex);\n                m_sectorsCombobox.OnSelectItemDoubleClick += OnItemDoubleClick;\n                Controls.Add(m_sectorsCombobox);*/\n\n                //Listbox\n\n                m_sectorsListbox = new MyGuiControlListbox(this, new Vector2(0, -0.025f), new Vector2(0.43f, 0.1f), MyGuiConstants.LISTBOX_BACKGROUND_COLOR, null, MyGuiConstants.LABEL_TEXT_SCALE, 1, 6, 1, true, true, false,\n                    null, null, MyGuiManager.GetScrollbarSlider(), MyGuiManager.GetHorizontalScrollbarSlider(), 1, 0, MyGuiConstants.LISTBOX_BACKGROUND_COLOR_BLUE, 0f, 0f, 0f, 0f, 0, 0f, -0.01f, -0.01f, -0.02f, 0.02f) { IconScale = new Vector2(0.97f) };\n                for (int i = 0; i < m_sectors.Count; i++)\n                {\n                    MyMwcSectorIdentifier sectorIdentifier = m_sectors[i];\n\n                    if (m_lastSandboxSector.HasValue && sectorIdentifier.Position.Equals(m_lastSandboxSector.Value))\n                    {\n                        selectedIndex = i;\n                    }\n\n                    if (string.IsNullOrEmpty(sectorIdentifier.SectorName))\n                    {\n                        m_sectorsListbox.AddItem(i, new StringBuilder(string.Format(\"{0}\", sectorIdentifier.Position.ToString())), GetSectorScreenshot(sectorIdentifier));\n                    }\n                    else\n                    {\n                        m_sectorsListbox.AddItem(i, new StringBuilder(string.Format(\"{0} ({1})\", sectorIdentifier.SectorName, sectorIdentifier.Position.ToString())), GetSectorScreenshot(sectorIdentifier));\n                    }\n                }\n\n                SortSectors();\n\n                m_sectorsListbox.SetSelectedItem(selectedIndex);\n                m_sectorsListbox.ItemDoubleClick += OnItemDoubleClick;\n                Controls.Add(m_sectorsListbox);\n            }\n            else\n            {\n                var text = m_loadingSectors.HasValue ? MyTextsWrapperEnum.LoadingPleaseWait : MyTextsWrapperEnum.NoSectorsAvailable;\n\n                Controls.Add(new MyGuiControlLabel(this, new Vector2(0, -0.03f), null, text, MyGuiConstants.LABEL_TEXT_COLOR,\n                MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n            }\n\n\n\n            //  Buttons OK and CANCEL\n            var m_okButton = new MyGuiControlButton(this, new Vector2(-0.0879f, 0.35f), MyGuiConstants.OK_BUTTON_SIZE * 0.75f,\n                       MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                       MyGuiManager.GetInventoryScreenButtonTexture(), null, null, MyTextsWrapperEnum.Ok,\n                       MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, MyGuiControlButtonTextAlignment.CENTERED, OnOkClick,\n                       true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true, true);\n            Controls.Add(m_okButton);\n\n            var m_cancelButton = new MyGuiControlButton(this, new Vector2(0.0879f, 0.35f), MyGuiConstants.OK_BUTTON_SIZE * 0.75f,\n                       MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                       MyGuiManager.GetInventoryScreenButtonTexture(), null, null, MyTextsWrapperEnum.Cancel,\n                       MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, MyGuiControlButtonTextAlignment.CENTERED, OnCancelClick,\n                       true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true, true);\n            Controls.Add(m_cancelButton);\n        }\n\n        private void AddUnusedSector()\n        {\n            if (m_startSessionType == MyMwcStartSessionRequestTypeEnum.EDITOR_SANDBOX && m_sectors[0].UserId == null)\n            {\n                MyMwcVector3Int position;\n                do\n                {\n                    position = new MyMwcVector3Int(MyMwcUtils.GetRandomInt(-100, 100), 0, MyMwcUtils.GetRandomInt(-100, 100));\n                } while (m_sectors.Any(s => s.Position == position));\n                m_sectors.Add(new MyMwcSectorIdentifier(MyMwcSectorTypeEnum.SANDBOX, null, position, \"<unused>\"));\n            }\n        }\n\n        //returns SectorScreenshot texture based on UserId, SectorPosition and Sector Type\n        private MyTexture2D GetSectorScreenshot(MyMwcSectorIdentifier sectorIdentifier)\n        {\n            if (sectorIdentifier.UserId == null && sectorIdentifier.SectorType == MyMwcSectorTypeEnum.SANDBOX)\n            {\n                if (m_sectorPositionsToTextures.ContainsKey(sectorIdentifier.Position))\n                {\n                    return MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\SectorScreens\\\\\" + m_sectorPositionsToTextures[sectorIdentifier.Position], flags: TextureFlags.IgnoreQuality);\n                }\n                else\n                {\n                    return MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\SectorScreens\\\\NoPhoto\", flags: TextureFlags.IgnoreQuality);\n                }\n            }\n            else\n            {\n                return null;\n            }\n        }\n\n        private void SortSectors()\n        {\n            // Named sectors first\n            m_sectorsListbox.CustomSortRows((a, b) =>\n            {\n                bool aName = string.IsNullOrEmpty(m_sectors[a.Key].SectorName);\n                bool bName = string.IsNullOrEmpty(m_sectors[b.Key].SectorName);\n\n                return aName == bName ?\n                    a.Value.ToString().CompareTo(b.Value.ToString()) :\n                    (aName ? 1 : -1);\n            }, 0);\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenEnterSectorMap\";\n        }\n\n        public void OnItemDoubleClick(object sender, MyGuiControlListboxItemEventArgs eventArgs)\n        {\n            OnOkClick(null);\n        }\n\n        public void OnOkClick(MyGuiControlButton sender)\n        {\n            if (m_sectors.Count == 0)\n                return;\n\n            MyMwcSectorIdentifier sectorIdentifier = m_sectors[m_sectorsListbox.GetSelectedItemKey().Value];\n\n            if (m_startSessionType == MyMwcStartSessionRequestTypeEnum.SANDBOX_FRIENDS)\n            {\n                //Remove 25D sectors from 2081 game and non 25D sectors from 25D game.\n                if (sectorIdentifier.SectorName.ToUpper().Contains(\"2.5D\") || sectorIdentifier.SectorName.ToUpper().Contains(\"2,5D\"))\n                {\n                    if (!MyClientServer.MW25DEnabled)\n                    {\n                        MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.MESSAGE, MyTextsWrapperEnum.YouNeed25D, MyTextsWrapperEnum.MessageBoxCaptionFeatureDisabled, MyTextsWrapperEnum.Ok, null));\n                        return;\n                    }\n                }\n                else if (!MyClientServer.HasFullGame)\n                {\n                    MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.MESSAGE, MyTextsWrapperEnum.YouNeedFullGame, MyTextsWrapperEnum.MessageBoxCaptionFeatureDisabled, MyTextsWrapperEnum.Ok, null));\n                    return;\n                }\n            }\n\n\n            MyConfig.LastSandboxSector = sectorIdentifier.Position;\n            MyConfig.Save();\n\n            MyGuiManager.CloseAllScreensNowExcept(MyGuiScreenGamePlay.Static);\n\n            if (CustomLoadAction != null)\n            {\n                CustomLoadAction(sectorIdentifier);\n            }\n            else\n            {\n                MyGuiManager.AddScreen(new MyGuiScreenStartSessionProgress(m_startSessionType, m_startSessionProgressText,\n                    sectorIdentifier,\n                    CommonLIB.AppCode.ObjectBuilders.MyGameplayDifficultyEnum.EASY,\n                    null,\n                    m_closeAfterSuccessfulEnter));\n            }\n        }\n\n        public void OnCancelClick(MyGuiControlButton sender)\n        {\n            CloseScreen();\n        }\n\n        public override bool Update(bool hasFocus)\n        {\n            if (m_loadingSectors.HasValue && m_loadingSectors.Value.IsComplete)\n            {\n                AddLoadSectorIdentifiersResponse(m_loadingSectors.Value.GetResult());\n                m_loadingSectors = null;\n            }\n\n            return base.Update(hasFocus);\n        }\n\n        public void SetSectorSourceAction(Func<List<MyMwcSectorIdentifier>> sectorLoadFunc)\n        {\n            m_loadingSectors = Parallel.Start(sectorLoadFunc);\n            RecreateControls();\n        }\n\n        public void AddLoadSectorIdentifiersResponse(List<MyMwcSectorIdentifier> sectorIdentifiers)\n        {\n            m_sectors.Clear();\n            m_sectors.AddRange(sectorIdentifiers);\n            RecreateControls();\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/MyGuiScreenEnterSectorProgress.cs",
    "content": "﻿using System.Collections.Generic;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.World;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing System.IO;\nusing SysUtils.Utils;\nusing MinerWars.AppCode.Networking.SectorService;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing System;\nusing MinerWarsMath;\nusing KeenSoftwareHouse.Library.Trace;\nusing MinerWars.AppCode.Networking;\nusing System.Diagnostics;\n\n//  IMPORTANT: THIS SCREEN CAN'T BE CANCELED BY ESC OR CANCEL BUTTON BECAUSE THAT WOULD INTERFERE THE PROCESS ON SERVER\n\nnamespace MinerWars.AppCode.Game.GUI\n{\n    class MyGuiScreenEnterSectorProgress : MyGuiScreenSectorServiceCallProgress\n    {\n        System.Action<MyMwcObjectBuilder_Sector, Vector3> m_enterSectorSuccessfulAction;\n\n        MyMwcTravelTypeEnum m_travelType;\n        MyMwcVector3Int m_targetSectorPosition;\n        Vector3 m_currentShipPosition;\n\n        MyMwcObjectBuilder_Sector sector;\n\n        public MyGuiScreenEnterSectorProgress(MyMwcTravelTypeEnum travelType, MyMwcVector3Int targetSectorPosition, Vector3 currentShipPosition, System.Action<MyMwcObjectBuilder_Sector, Vector3> enterSectorSuccessfulAction)\n            : base(MyTextsWrapperEnum.EnterSectorInProgressPleaseWait, false)\n        {\n            m_backgroundFadeColor = MyGuiConstants.SCREEN_BACKGROUND_FADE_BLANK_DARK_PROGRESS_SCREEN;\n            m_travelType = travelType;\n            m_targetSectorPosition = targetSectorPosition;\n            m_currentShipPosition = currentShipPosition;\n            m_enterSectorSuccessfulAction = enterSectorSuccessfulAction;\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenEnterSectorProgress\";\n        }\n\n        protected override void ServiceProgressStart(MySectorServiceClient client)\n        {\n            int version = 0;\n            AddAction(client.BeginTravelToSector(m_travelType, m_targetSectorPosition, m_currentShipPosition, version, null, client));\n        }\n\n        protected override void OnActionCompleted(IAsyncResult asyncResult, MySectorServiceClient client)\n        {\n            Vector3 newShipPosition;\n            byte[] result = client.EndTravelToSector(out newShipPosition, asyncResult);\n\n            var sectorBuilder = MyMwcObjectBuilder_Base.FromBytes<MyMwcObjectBuilder_Sector>(result);\n            m_enterSectorSuccessfulAction(sectorBuilder, newShipPosition);\n\n            CloseScreen();\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/MyGuiScreenFake.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Utils;\n\nnamespace MinerWars.AppCode.Game.GUI\n{\n    class MyGuiScreenFake : MyGuiScreenBase\n    {\n        public MyGuiScreenFake()\n            :base(new Vector2(0.5f, 0.5f), new Vector4(0f, 1f, 0f, 0.5f), new Vector2(1f, 1f))\n        {\n            MyGuiControlList controlList = new MyGuiControlList(this, new Vector2(0f, 0f), new Vector2(0.8f, 0.5f), MyGuiConstants.DEFAULT_CONTROL_BACKGROUND_COLOR, new StringBuilder(\"ToolTip\"), MyGuiManager.GetBlankTexture());\n            Controls.Add(controlList);\n            List<MyGuiControlBase> fakeControls = new List<MyGuiControlBase>();\n            MyGuiControlParent parent1 = new MyGuiControlParent(this, Vector2.Zero, new Vector2(0.4f, 0.2f), new Vector4(1f, 0f, 0f, 1f), new StringBuilder(\"Parent1\"), null);\n            parent1.Controls.Add(new MyGuiControlTextbox(parent1, new Vector2(0f, 0f), MyGuiControlPreDefinedSize.LARGE, \"AAA\", 50, MyGuiConstants.TEXTBOX_BACKGROUND_COLOR, 0.7f, MyGuiControlTextboxType.NORMAL));\n            parent1.Controls.Add(new MyGuiControlCheckbox(parent1, new Vector2(0f, 0.07f), MyGuiConstants.CHECKBOX_SIZE, true, MyGuiConstants.CHECKBOX_BACKGROUND_COLOR));            \n            fakeControls.Add(parent1);\n            MyGuiControlParent parent2 = new MyGuiControlParent(this, Vector2.Zero, new Vector2(0.4f, 0.2f), new Vector4(0f, 1f, 0f, 1f), new StringBuilder(\"Parent2\"), null);\n            parent2.Controls.Add(new MyGuiControlTextbox(parent2, new Vector2(0f, 0f), MyGuiControlPreDefinedSize.LARGE, \"CCC\", 50, MyGuiConstants.TEXTBOX_BACKGROUND_COLOR, 0.7f, MyGuiControlTextboxType.NORMAL));\n            MyGuiControlCombobox combobox1 = new MyGuiControlCombobox(parent2, new Vector2(0f, 0.07f), MyGuiControlPreDefinedSize.MEDIUM, MyGuiConstants.COMBOBOX_BACKGROUND_COLOR, MyGuiConstants.COMBOBOX_TEXT_SCALE, 10, false, true, false);\n            combobox1.AddItem(0, new StringBuilder(\"Item1 Item1 Item1 Item1 Item1 Item1 Item1 \"));\n            combobox1.AddItem(1, new StringBuilder(\"Item2 Item2 Item2 Item2 Item2 Item2 Item2 \"));\n            combobox1.AddItem(2, new StringBuilder(\"Item3 Item3 Item3 Item3 Item3 Item3 Item3 \"));\n            combobox1.AddItem(3, new StringBuilder(\"Item4\"));\n            combobox1.AddItem(4, new StringBuilder(\"Item5\"));\n            combobox1.AddItem(5, new StringBuilder(\"Item6\"));\n            combobox1.AddItem(6, new StringBuilder(\"Item7\"));\n            combobox1.AddItem(7, new StringBuilder(\"Item8\"));\n            combobox1.AddItem(8, new StringBuilder(\"Item9\"));\n            combobox1.AddItem(9, new StringBuilder(\"Item10\"));\n            combobox1.AddItem(10, new StringBuilder(\"Item11\"));\n            combobox1.AddItem(11, new StringBuilder(\"Item12\"));\n            combobox1.AddItem(12, new StringBuilder(\"Item13\"));\n            parent2.Controls.Add(combobox1);\n            fakeControls.Add(parent2);\n            MyGuiControlParent parent3 = new MyGuiControlParent(this, Vector2.Zero, new Vector2(0.4f, 0.2f), new Vector4(0f, 0f, 1f, 1f), new StringBuilder(\"Parent3\"), null);\n            parent3.Controls.Add(new MyGuiControlTextbox(parent3, new Vector2(0f, 0f), MyGuiControlPreDefinedSize.LARGE, \"EEE\", 50, MyGuiConstants.TEXTBOX_BACKGROUND_COLOR, 0.7f, MyGuiControlTextboxType.NORMAL));\n            MyGuiControlCombobox combobox2 = new MyGuiControlCombobox(parent3, new Vector2(0f, 0.07f), MyGuiControlPreDefinedSize.MEDIUM, MyGuiConstants.COMBOBOX_BACKGROUND_COLOR, MyGuiConstants.COMBOBOX_TEXT_SCALE, 10, false, true, false);\n            combobox2.AddItem(0, new StringBuilder(\"Item1 Item1 Item1 Item1 Item1 Item1 Item1 \"));\n            combobox2.AddItem(1, new StringBuilder(\"Item2 Item2 Item2 Item2 Item2 Item2 Item2 \"));\n            combobox2.AddItem(2, new StringBuilder(\"Item3 Item3 Item3 Item3 Item3 Item3 Item3 \"));\n            combobox2.AddItem(3, new StringBuilder(\"Item4\"));\n            combobox2.AddItem(4, new StringBuilder(\"Item5\"));\n            combobox2.AddItem(5, new StringBuilder(\"Item6\"));\n            combobox2.AddItem(6, new StringBuilder(\"Item7\"));\n            combobox2.AddItem(7, new StringBuilder(\"Item8\"));\n            combobox2.AddItem(8, new StringBuilder(\"Item9\"));\n            combobox2.AddItem(9, new StringBuilder(\"Item10\"));\n            combobox2.AddItem(10, new StringBuilder(\"Item11\"));\n            combobox2.AddItem(11, new StringBuilder(\"Item12\"));\n            combobox2.AddItem(12, new StringBuilder(\"Item13\"));\n            parent3.Controls.Add(combobox2);\n            fakeControls.Add(parent3);\n            MyGuiControlParent parent4 = new MyGuiControlParent(this, Vector2.Zero, new Vector2(0.4f, 0.2f), new Vector4(1f, 0f, 1f, 1f), new StringBuilder(\"Parent4\"), null);\n            parent4.Controls.Add(new MyGuiControlTextbox(parent4, new Vector2(0f, 0f), MyGuiControlPreDefinedSize.LARGE, \"GGG\", 50, MyGuiConstants.TEXTBOX_BACKGROUND_COLOR, 0.7f, MyGuiControlTextboxType.NORMAL));\n            parent4.Controls.Add(new MyGuiControlTextbox(parent4, new Vector2(0f, 0.07f), MyGuiControlPreDefinedSize.LARGE, \"HHH\", 50, MyGuiConstants.TEXTBOX_BACKGROUND_COLOR, 0.7f, MyGuiControlTextboxType.NORMAL));\n            fakeControls.Add(parent4);\n            MyGuiControlParent parent5 = new MyGuiControlParent(this, Vector2.Zero, new Vector2(0.4f, 0.2f), new Vector4(1f, 1f, 0f, 1f), new StringBuilder(\"Parent5\"), null);\n            parent5.Controls.Add(new MyGuiControlTextbox(parent5, new Vector2(0f, 0f), MyGuiControlPreDefinedSize.LARGE, \"III\", 50, MyGuiConstants.TEXTBOX_BACKGROUND_COLOR, 0.7f, MyGuiControlTextboxType.NORMAL));\n            parent5.Controls.Add(new MyGuiControlTextbox(parent5, new Vector2(0f, 0.07f), MyGuiControlPreDefinedSize.LARGE, \"JJJ\", 50, MyGuiConstants.TEXTBOX_BACKGROUND_COLOR, 0.7f, MyGuiControlTextboxType.NORMAL));\n            fakeControls.Add(parent5);\n            controlList.InitControls(fakeControls);\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenFake\";\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/MyGuiScreenFlyThrough.cs",
    "content": "﻿/*\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Trailer;\nusing MinerWars.AppCode.Game.Utils;\n\n//  This is screen containing combobox with all trailer animations configured in Trailer.xmlx file\nnamespace MinerWars.AppCode.Game.GUI\n{\n    class MyGuiScreenFlyThrough : MyGuiScreenBase\n    {\n        MyGuiControlCombobox m_flyThroughAnimationCombobox;\n        MyGuiControlCheckbox m_displayCreditsCheckBox;\n        MyGuiControlCheckbox m_displayFPSCheckBox;\n\n        public MyGuiScreenFlyThrough()\n            : base(new Vector2(0.5f, 0.5f), MyGuiConstants.SCREEN_BACKGROUND_COLOR, null)\n        {\n            m_enableBackgroundFade = true;\n\n            m_size = new Vector2(0.57f, 0.4f);\n            Vector2 controlsOriginLeft = new Vector2(-m_size.Value.X / 2.0f + 0.05f, -m_size.Value.Y / 2.0f + 0.145f);\n            Vector2 controlsOriginRight = new Vector2(-m_size.Value.X / 2.0f + 0.25f, -m_size.Value.Y / 2.0f + 0.145f);\n\n            AddCaption(MyTextsWrapperEnum.CreditsCaption);\n\n            // Choose Flythrough animation combobox\n            Controls.Add(new MyGuiControlLabel(this, controlsOriginLeft + 0 * MyGuiConstants.CONTROLS_DELTA, null, MyTextsWrapperEnum.Animation, MyGuiConstants.LABEL_TEXT_COLOR,\n                MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n\n            m_flyThroughAnimationCombobox = new MyGuiControlCombobox(this, controlsOriginRight + 0 * MyGuiConstants.CONTROLS_DELTA + new Vector2(MyGuiConstants.COMBOBOX_MEDIUM_SIZE.X / 2.0f, 0), MyGuiControlPreDefinedSize.MEDIUM, MyGuiConstants.COMBOBOX_BACKGROUND_COLOR, MyGuiConstants.COMBOBOX_TEXT_SCALE);\n            for (int i = 0; i < MyTrailerLoad.Animations.Length; i++)\n            {\n                MyTrailerXmlAnimation animation = MyTrailerLoad.Animations[i];\n                if (animation.BenchmarkAnimation)\n                {\n                    m_flyThroughAnimationCombobox.AddItem(i, new StringBuilder(animation.Name));\n                }\n            }\n            m_flyThroughAnimationCombobox.SelectItemByKey(0);\n            m_flyThroughAnimationCombobox.OnSelect += OnFlyThroughAnimationSelect;\n            Controls.Add(m_flyThroughAnimationCombobox);\n\n            // CheckBox if we have to display credits\n            Controls.Add(new MyGuiControlLabel(this, controlsOriginLeft + 1 * MyGuiConstants.CONTROLS_DELTA, null, MyTextsWrapperEnum.DisplayCredits, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n            m_displayCreditsCheckBox = new MyGuiControlCheckbox(this, controlsOriginRight + 1 * MyGuiConstants.CONTROLS_DELTA + new Vector2(MyGuiConstants.CHECKBOX_SIZE.X / 2.0f, 0), true, MyGuiConstants.CHECKBOX_BACKGROUND_COLOR);\n            Controls.Add(m_displayCreditsCheckBox);\n\n            // CheckBox if we want to display FPS\n            Controls.Add(new MyGuiControlLabel(this, controlsOriginLeft + 2 * MyGuiConstants.CONTROLS_DELTA, null, MyTextsWrapperEnum.DisplayFPS, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n            m_displayFPSCheckBox = new MyGuiControlCheckbox(this, controlsOriginRight + 2 * MyGuiConstants.CONTROLS_DELTA + new Vector2(MyGuiConstants.CHECKBOX_SIZE.X / 2.0f, 0), true, MyGuiConstants.CHECKBOX_BACKGROUND_COLOR);\n            m_displayFPSCheckBox.Checked = false; // False by default\n            Controls.Add(m_displayFPSCheckBox);\n\n            //  Buttons OK and CANCEL\n            Vector2 buttonDelta = new Vector2(0.05f, m_size.Value.Y / 2.0f - MyGuiConstants.MESSAGE_BOX_BORDER_AREA_Y - MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE.Y / 2.0f);\n            Controls.Add(new MyGuiControlButton(this, new Vector2(-buttonDelta.X, buttonDelta.Y), MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.Ok, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnOkClick, MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n            Controls.Add(new MyGuiControlButton(this, new Vector2(+buttonDelta.X, buttonDelta.Y), MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.Cancel, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnCancelClick, MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenFlyThrough\";\n        }\n\n        void SetSelectedAnimation()\n        {\n            MyTrailerLoad.TrailerAnimation = MyTrailerLoad.Animations[m_flyThroughAnimationCombobox.GetSelectedKey()];\n            MyTrailerLoad.AnimationSelectedFromMenu = true;\n        }\n\n        //  This is called always when user selects item in flyThroughAnimation combobox\n        public void OnFlyThroughAnimationSelect()\n        {\n            SetSelectedAnimation();\n        }\n\n        public void OnOkClick(MyGuiControlButton sender)\n        {\n            SetSelectedAnimation();\n\n            //if (m_displayCreditsCheckBox.Checked)\n            //{\n            //    MyGuiManager.AddScreen(new MyGuiScreenLoading(new MyGuiScreenGameCredits(MyTrailerConstants.DEFAULT_SECTOR_IDENTIFIER,\n            //        m_displayFPSCheckBox.Checked), MyGuiScreenGamePlay.Static));\n            //    CloseScreenNow();\n            //    MyGuiManager.CloseScreenNow(typeof(MyGuiScreenMainMenu));\n            //}\n            //else\n            //{\n            //    PlayTrailer();\n            //}\n            MyGuiManager.AddScreen(\n                new MyGuiScreenLoading(\n                    new MyGuiScreenGameCredits(\n                        MyTrailerConstants.DEFAULT_SECTOR_IDENTIFIER,\n                        MyTrailerConstants.DEFAULT_SECTOR_VERSION,\n                        m_displayFPSCheckBox.Checked,\n                        m_displayCreditsCheckBox.Checked),\n                    MyGuiScreenGamePlay.Static));\n            CloseScreenNow();\n            MyGuiManager.CloseScreenNow(typeof(MyGuiScreenMainMenu));\n        }\n\n        public void OnCancelClick(MyGuiControlButton sender)\n        {\n            CloseScreen();\n        }\n\n        void PlayTrailer()\n        {\n            MyGuiManager.AddScreen(new MyGuiScreenLoading(\n                new MyGuiScreenGamePlay(MyGuiScreenGamePlayType.PURE_FLY_THROUGH, null, MyTrailerConstants.DEFAULT_SECTOR_IDENTIFIER, MyTrailerConstants.DEFAULT_SECTOR_VERSION, null),\n                MyGuiScreenGamePlay.Static));\n            CloseScreenNow();\n            MyGuiManager.CloseScreenNow(typeof(MyGuiScreenMainMenu));\n        }\n    }\n}\n*/"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/MyGuiScreenGameChat.cs",
    "content": "﻿using System;\nusing System.Text;\nusing System.Collections.Generic;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.SolarSystem;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.World;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.AppCode.Game.Sessions;\nusing MinerWars.CommonLIB.AppCode.Networking.Multiplayer;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.AppCode.Toolkit.Input;\n\nnamespace MinerWars.AppCode.Game.GUI\n{\n\n    class MyGuiScreenGameChat : MyGuiScreenBase\n    {\n        MyGuiControlTextbox m_textbox;\n        bool m_teamOnly;\n        MyTexture2D m_panelTexture;\n        StringBuilder m_stringBuilderForText;\n        Vector2 m_positionOffset;\n\n        public MyGuiScreenGameChat(bool sendToTeam)\n            : base(Vector2.Zero, null, null)\n        {\n            m_closeOnEsc = true;\n            m_enableBackgroundFade = true;\n            m_teamOnly = sendToTeam;\n\n            m_positionOffset = new Vector2(MyGuiManager.GetNormalizedCoordinateFromScreenCoordinate_FULLSCREEN(new Vector2(0, 0)).X - 920/1920f/2 - 0.04f, -0.2f);\n\n            m_panelTexture = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\BackgroundScreen\\\\ChatBackground\", flags: TextureFlags.IgnoreQuality);\n\n            MyGuiControlPanel panel = new MyGuiControlPanel(this, new Vector2(0.5f, 0.85f) + m_positionOffset, new Vector2(920 / 1920f, 388 / 1200f), MyGuiConstants.SCREEN_BACKGROUND_COLOR, m_panelTexture, null, null, null, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_TOP);\n            Controls.Add(panel);\n\n            Vector2 menuPositionOrigin = new Vector2(0.423f, 0.939f) + m_positionOffset;\n            Vector2 delta = new Vector2(0.17f, 0f);\n            const MyGuiControlButtonTextAlignment menuButtonTextAlignement = MyGuiControlButtonTextAlignment.CENTERED;\n\n            m_textbox = new MyGuiControlTextbox(this, menuPositionOrigin, MyGuiControlPreDefinedSize.MEDIUM, \"\", MyGuiConstants.CHAT_WINDOW_MAX_MESSAGE_LENGTH, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE * 0.75f, MyGuiControlTextboxType.NORMAL, true, false);\n            Controls.Add(m_textbox);\n\n            Controls.Add(new MyGuiControlButton(this, menuPositionOrigin + delta,\n                MyGuiConstants.MAIN_MENU_BUTTON_SIZE * new Vector2(0.41f, 0.78f), MyGuiConstants.BUTTON_BACKGROUND_COLOR, MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\ButtonChatEnter\", flags: TextureFlags.IgnoreQuality), null, null,\n                sendToTeam ? MyTextsWrapperEnum.SendToTeam : MyTextsWrapperEnum.SendToAll, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE * 0.65f,\n                menuButtonTextAlignement, OnSendClick, true, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER,\n                true, true, MyGuiControlHighlightType.WHEN_ACTIVE));\n        }\n\n\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenGameChat\";\n        }\n\n        public void OnSendClick(MyGuiControlButton sender)\n        {\n            if (m_textbox.Text != \"\")\n            {\n                if (MyMultiplayerGameplay.IsRunning)\n                {\n                    if (m_teamOnly)\n                    {\n                        m_textbox.Text = MyTextsWrapper.GetFormatString(MyTextsWrapperEnum.MPChatTeamMessagePrefix) + m_textbox.Text;\n                        MyMultiplayerGameplay.Static.SendChatMessageToTeam(m_textbox.Text, MySession.Static.Player.Faction);\n                    }\n                    else\n                    {\n                        MyMultiplayerGameplay.Static.SendChatMessage(m_textbox.Text);\n                    }\n                }\n\n                MyGuiScreenGamePlay.Static.AddChatMessage(MyClientServer.LoggedPlayer.GetUserId(), m_textbox.Text);\n            }\n            this.CloseScreen();\n        }\n\n        public override void HandleInput(MyGuiInput input, bool receivedFocusInThisUpdate)\n        {\n            base.HandleInput(input, receivedFocusInThisUpdate);\n\n            if (input.IsNewKeyPress(Keys.Enter))\n            {\n                OnSendClick(null);\n            }\n        }\n\n        public override bool Draw(float backgroundFadeAlpha)\n        {\n            bool retval = base.Draw(backgroundFadeAlpha);\n            DrawChetArea();\n            return retval;\n        }\n\n        private void DrawChetArea()\n        {\n            List<MyChatMessage> messages = MyGuiScreenGamePlay.Static.GetChatMessages(8);\n            if (messages == null) return;\n\n            if (m_stringBuilderForText == null)\n            {\n                m_stringBuilderForText = new StringBuilder(MyGuiConstants.CHAT_WINDOW_MAX_MESSAGE_LENGTH);\n            }\n            else { m_stringBuilderForText.Clear(); }\n\n            int visibleCount = messages.Count;\n\n            if (visibleCount == 0) return;\n\n            // row size\n            float rowSize = 0;\n            m_stringBuilderForText.Append(messages[0].SenderName.ToString());\n            m_stringBuilderForText.Append(\": \");\n            m_stringBuilderForText.Append(messages[0].Message);\n            Vector2 textSize = MyGuiManager.GetNormalizedSize(GetSenderFont(messages[0].SenderRelation), m_stringBuilderForText, MyGuiConstants.CHAT_WINDOW_MESSAGE_SCALE);\n            rowSize = textSize.Y;\n            m_stringBuilderForText.Clear();\n\n            MyGuiManager.BeginSpriteBatch();\n            var offset = new Vector2(VideoMode.MyVideoModeManager.IsTripleHead() ? -1 : 0, 0);\n            {\n                // Draw texts\n                Vector2 notificationPosition = new Vector2(0.305f, 0.756f) + m_positionOffset;\n                for (int i = 0; i < visibleCount; i++)\n                {\n                    m_stringBuilderForText.Append(messages[i].SenderName.ToString());\n                    m_stringBuilderForText.Append(\": \");\n                    MyRectangle2D size = MyGuiManager.DrawString(GetSenderFont(messages[i].SenderRelation), m_stringBuilderForText, notificationPosition + offset,\n                        MyGuiConstants.CHAT_WINDOW_MESSAGE_SCALE, MyGuiConstants.CHAT_WINDOW_TEXT_COLOR, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER);\n\n                    notificationPosition.X += size.Size.X;\n                    MyGuiManager.DrawString(GetSenderFont(messages[i].SenderRelation), messages[i].Message, notificationPosition + offset,\n                        MyGuiConstants.CHAT_WINDOW_MESSAGE_SCALE, MyGuiConstants.CHAT_WINDOW_TEXT_COLOR, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER);\n                    notificationPosition.Y += rowSize;\n                    notificationPosition.X -= size.Size.X;\n                    m_stringBuilderForText.Clear();\n                }\n            }\n            MyGuiManager.EndSpriteBatch();\n        }\n\n        private MyGuiFont GetSenderFont(MyFactionRelationEnum senderRelation)\n        {\n            return MyGuiScreenGamePlay.Static.GetSenderFont(senderRelation);\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/MyGuiScreenGameCredits.cs",
    "content": "﻿using System.Collections.Generic;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWarsMath.Graphics;\nusing MinerWars.AppCode.Toolkit.Input;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Managers;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Textures;\n\n//  This class is called from gameplay screen a is only for drawing scrolling credits.\n\n//  IMPORTANT: Don't forget that here we are using texts that didn't go through text resources so if some credits text contains\n//  character that isn't in our font, it will fail. Therefore, if you use something obscure (not in ASCII), add it to font as a special character - AND TEST IT!!!\n\n\nnamespace MinerWars.AppCode.Game.GUI\n{\n    class MyGuiScreenGameCredits : MyGuiScreenBase\n    {\n        class MyCreditsDepartment\n        {\n            public StringBuilder Name;\n            public List<MyCreditsPerson> Persons;\n\n            public MyCreditsDepartment(string name)\n            {\n                Name = new StringBuilder(name);\n                Persons = new List<MyCreditsPerson>(5);\n            }\n        }\n\n        class MyCreditsPerson\n        {\n            public StringBuilder Name;\n\n            public MyCreditsPerson(string name)\n            {\n                Name = new StringBuilder(name);\n            }\n        }\n\n        \n        Color color = new Color(255, 255, 255, 220); //  Red \n        const float NUMBER_OF_SECONDS_TO_SCROLL_THROUGH_WHOLE_SCREEN = 30;\n        List<MyCreditsDepartment> m_departments;\n        float m_scrollingPositionY;\n        MyTexture2D m_keenswhLogoTexture, m_menuOverlay;\n        float m_startTimeInMilliseconds;\n\n        public MyGuiScreenGameCredits()\n            : base(Vector2.Zero, null, null)\n        {\n            m_startTimeInMilliseconds = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenGameCredits\";\n        }\n\n        public override void LoadContent()\n        {\n            DrawMouseCursor = false;\n            m_closeOnEsc = true;\n\n            m_keenswhLogoTexture =\n                MyTextureManager.GetTexture<MyTexture2D>(\n                    \"Textures\\\\GUI\\\\MinerWarsLogoLarge\", flags: TextureFlags.IgnoreQuality);\n\n            m_menuOverlay = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\BackgroundScreen\\\\MainMenuOverlay\", flags: TextureFlags.IgnoreQuality);\n\n            //  We will start scrolling from the bottom\n            ResetScrollingPositionY(-0.2f);\n\n            //  List of departments\n            m_departments = new List<MyCreditsDepartment>();\n\n            //  Director\n            MyCreditsDepartment director = new MyCreditsDepartment(\"Produced and Directed By\");\n            m_departments.Add(director);\n            director.Persons = new List<MyCreditsPerson>();\n            director.Persons.Add(new MyCreditsPerson(\"MAREK ROSA\"));\n\n\n            //  Lead Programmer\n            MyCreditsDepartment leadProgrammer = new MyCreditsDepartment(\"Lead Programmer\");\n            m_departments.Add(leadProgrammer);\n            leadProgrammer.Persons = new List<MyCreditsPerson>();\n            leadProgrammer.Persons.Add(new MyCreditsPerson(\"PETR MINARIK\"));\n\n            //  Programmers\n            MyCreditsDepartment programmers = new MyCreditsDepartment(\"Programmers\");\n            m_departments.Add(programmers);\n            programmers.Persons = new List<MyCreditsPerson>();\n            programmers.Persons.Add(new MyCreditsPerson(\"ONDREJ PETRZILKA\"));\n            programmers.Persons.Add(new MyCreditsPerson(\"PETR KOLDA\"));\n            programmers.Persons.Add(new MyCreditsPerson(\"MARTIN BAUER\"));\n            programmers.Persons.Add(new MyCreditsPerson(\"SIMON SOTAK\"));\n            programmers.Persons.Add(new MyCreditsPerson(\"JAN KADLEC\"));\n            programmers.Persons.Add(new MyCreditsPerson(\"FILIP BUCHTA\"));\n            programmers.Persons.Add(new MyCreditsPerson(\"MARTIN VAVREK\"));\n            programmers.Persons.Add(new MyCreditsPerson(\"JAKUB DRAZKA\"));\n            programmers.Persons.Add(new MyCreditsPerson(\"MICHAL STEFAN\"));\n\n\n            //  Graphic artists 3d\n            MyCreditsDepartment artists3d = new MyCreditsDepartment(\"3D Artists\");\n            m_departments.Add(artists3d);\n            artists3d.Persons = new List<MyCreditsPerson>();\n            artists3d.Persons.Add(new MyCreditsPerson(\"JAN ABSOLIN\"));\n            artists3d.Persons.Add(new MyCreditsPerson(\"FILIP NOVY\"));\n            artists3d.Persons.Add(new MyCreditsPerson(\"IVAN CHEREVKO\"));\n            artists3d.Persons.Add(new MyCreditsPerson(\"JAN KUDRNAC\"));\n            artists3d.Persons.Add(new MyCreditsPerson(\"SLOBODAN STEVIC\"));\n            artists3d.Persons.Add(new MyCreditsPerson(\"RASTKO STANOJEVIC\"));\n            artists3d.Persons.Add(new MyCreditsPerson(\"ADAM M SMITH\"));\n\n\n            //  Graphic artists 2d\n            MyCreditsDepartment artists2d = new MyCreditsDepartment(\"2D Artists\");\n            m_departments.Add(artists2d);\n            artists2d.Persons = new List<MyCreditsPerson>();\n            artists2d.Persons.Add(new MyCreditsPerson(\"JAN CISTIN\"));\n\n\n            //  Writers\n            MyCreditsDepartment writers = new MyCreditsDepartment(\"Writers\");\n            m_departments.Add(writers);\n            writers.Persons = new List<MyCreditsPerson>();\n            writers.Persons.Add(new MyCreditsPerson(\"JAN JIRKOVSKY\"));\n\n\n            //Level designers\n            MyCreditsDepartment levelDesigners = new MyCreditsDepartment(\"Level Designers\");\n            m_departments.Add(levelDesigners);\n            levelDesigners.Persons = new List<MyCreditsPerson>();\n            levelDesigners.Persons.Add(new MyCreditsPerson(\"TOMAS RAMPAS\"));\n            levelDesigners.Persons.Add(new MyCreditsPerson(\"MICHAL ROCH\"));\n            levelDesigners.Persons.Add(new MyCreditsPerson(\"PETER NESPESNY\"));\n            levelDesigners.Persons.Add(new MyCreditsPerson(\"PROKOP SMETANA\"));\n            levelDesigners.Persons.Add(new MyCreditsPerson(\"JAKUB GUMAN\"));\n            levelDesigners.Persons.Add(new MyCreditsPerson(\"ADAM SKVOR\"));\n            levelDesigners.Persons.Add(new MyCreditsPerson(\"MARTIN VANO\"));\n\n\n            //  Sound Designers\n            MyCreditsDepartment soundEffects = new MyCreditsDepartment(\"Sound Designers\");\n            m_departments.Add(soundEffects);\n            soundEffects.Persons = new List<MyCreditsPerson>();\n            soundEffects.Persons.Add(new MyCreditsPerson(\"LUKAS TVRDON\"));\n            soundEffects.Persons.Add(new MyCreditsPerson(\"DAN WENTZ\"));\n\n\n            //  Composers\n            MyCreditsDepartment composers = new MyCreditsDepartment(\"Music Composers\");\n            m_departments.Add(composers);\n            composers.Persons = new List<MyCreditsPerson>();\n            composers.Persons.Add(new MyCreditsPerson(\"KAREL ANTONIN\"));\n            composers.Persons.Add(new MyCreditsPerson(\"MAREK MRKVICKA\"));\n\n\n            //  Community & PR Managers\n            MyCreditsDepartment managers = new MyCreditsDepartment(\"Community & PR Managers\");\n            m_departments.Add(managers);\n            managers.Persons = new List<MyCreditsPerson>();\n            managers.Persons.Add(new MyCreditsPerson(\"JAN JIRKOVSKY\"));\n            managers.Persons.Add(new MyCreditsPerson(\"ANSEL LEOS\"));\n            managers.Persons.Add(new MyCreditsPerson(\"NICK MILLER\"));\n\n\n            //  Testers\n            MyCreditsDepartment testers = new MyCreditsDepartment(\"Testers\");\n            m_departments.Add(testers);\n            testers.Persons = new List<MyCreditsPerson>();\n            testers.Persons.Add(new MyCreditsPerson(\"MICHAL LISKA\"));\n            testers.Persons.Add(new MyCreditsPerson(\"JAN BASTL\"));\n\n\n            //  Voice Talent\n            MyCreditsDepartment voiceTalent = new MyCreditsDepartment(\"Voice Actors\");\n            m_departments.Add(voiceTalent);\n            voiceTalent.Persons = new List<MyCreditsPerson>();\n            voiceTalent.Persons.Add(new MyCreditsPerson(\"JOHN MCCALMONT\"));\n            voiceTalent.Persons.Add(new MyCreditsPerson(\"TORI KAMAL\"));\n            voiceTalent.Persons.Add(new MyCreditsPerson(\"JJ AARONSON\"));\n            voiceTalent.Persons.Add(new MyCreditsPerson(\"ROBIN EGERTON\"));            \n            voiceTalent.Persons.Add(new MyCreditsPerson(\"AMBER BEARD\"));\n            voiceTalent.Persons.Add(new MyCreditsPerson(\"LINDA LAKE\"));\n            voiceTalent.Persons.Add(new MyCreditsPerson(\"PETER BAKER\"));\n            voiceTalent.Persons.Add(new MyCreditsPerson(\"VICTORIA SCOTT\"));\n            voiceTalent.Persons.Add(new MyCreditsPerson(\"MARC CHOLETTE\"));\n            voiceTalent.Persons.Add(new MyCreditsPerson(\"DARRIN REVITY\"));\n            voiceTalent.Persons.Add(new MyCreditsPerson(\"MIKE CLARKE\"));\n            voiceTalent.Persons.Add(new MyCreditsPerson(\"OVAIS MALIK\"));\n            voiceTalent.Persons.Add(new MyCreditsPerson(\"JOHN KUBIN\"));\n            voiceTalent.Persons.Add(new MyCreditsPerson(\"ALEX RAIN\"));\n            voiceTalent.Persons.Add(new MyCreditsPerson(\"GERARD NEIL\"));\n\n            //  Special thanks\n            MyCreditsDepartment specialThanks = new MyCreditsDepartment(\"Special Thanks to\");\n            m_departments.Add(specialThanks);\n            specialThanks.Persons = new List<MyCreditsPerson>();\n            specialThanks.Persons.Add(new MyCreditsPerson(\"Our community for supporting us and making this happen.\"));\n            specialThanks.Persons.Add(new MyCreditsPerson(\"\"));\n            specialThanks.Persons.Add(new MyCreditsPerson(\"Our contributors:\"));\n            specialThanks.Persons.Add(new MyCreditsPerson(\"MrSanta, WolfDK1984, ratsmt, Shadowkeeper, Gundam288, Steve, Focal,\"));\n            specialThanks.Persons.Add(new MyCreditsPerson(\"Scuderia, Kilroy, rawrkitteh, Pyrokinesis1019, TakeiNaodar, Orkpower\"));\n\n\n            //  Final\n            MyCreditsDepartment final = new MyCreditsDepartment(\"For more info see\");\n            m_departments.Add(final);\n            final.Persons = new List<MyCreditsPerson>();\n            final.Persons.Add(new MyCreditsPerson(\"http://www.minerwars.com/Team.aspx\"));\n\n            //  IMPORTANT: Base load content must be called after child's load content\n            base.LoadContent();\n        }\n\n        void ResetScrollingPositionY(float offset = 0f)\n        {\n            //  We will start scrolling from the bottom\n            m_scrollingPositionY = 0.99f + offset;\n        }\n\n\n        public override bool Update(bool hasFocus)\n        {\n            if (base.Update(hasFocus) == false) return false;\n\n            m_scrollingPositionY -= 1.0f / (NUMBER_OF_SECONDS_TO_SCROLL_THROUGH_WHOLE_SCREEN * MyConstants.PHYSICS_STEPS_PER_SECOND);\n\n            return true;\n        }\n\n        Color ChangeTextAlpha(Color origColor, float coordY)\n        {\n            float fadeEnd = 0.25f;\n            float fadeStart = 0.3f;\n            float alpha = MathHelper.Clamp((coordY - fadeEnd) / (fadeStart - fadeEnd), 0, 1);\n\n            Color newColor = origColor;\n            newColor.A = (byte)(origColor.A * alpha);\n\n            return newColor;\n        }\n\n        public Vector2 GetScreenLeftTopPosition()\n        {\n            float deltaPixels = 25 * MyGuiManager.GetSafeScreenScale();\n            Rectangle fullscreenRectangle = MyGuiManager.GetSafeFullscreenRectangle();\n            return MyGuiManager.GetNormalizedCoordinateFromScreenCoordinate_FULLSCREEN(new Vector2(deltaPixels, deltaPixels));\n        }\n        \n        public override bool Draw(float backgroundFadeAlpha)\n        {\n            if (base.Draw(backgroundFadeAlpha) == false) return false;\n\n            ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n            //  Credits\n            ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\n            float movingY = m_scrollingPositionY;\n\n            for (int i = 0; i < m_departments.Count; i++)\n            {\n                MyGuiManager.DrawString(MyGuiManager.GetFontMinerWarsBlue(), m_departments[i].Name,\n                                        new Vector2(0.5f, movingY), 0.78f,\n                                        ChangeTextAlpha(color, movingY),\n                                        MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER);\n                movingY += 0.05f;\n\n                for (int j = 0; j < m_departments[i].Persons.Count; j++)\n                {\n                    MyGuiManager.DrawString(MyGuiManager.GetFontMinerWarsBlue(), m_departments[i].Persons[j].Name,\n                                            new Vector2(0.5f, movingY), 1.04f,\n                                            ChangeTextAlpha(color, movingY),\n                                            MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER);\n                    movingY += 0.05f;\n                }\n\n                movingY += 0.04f;\n            }\n\n            //  This will start scrolling again after last word was scrolled through the top\n            if (movingY <= 0) ResetScrollingPositionY();\n\n\n            MyGuiManager.DrawSpriteBatch(m_menuOverlay, new Rectangle(0, 0, MyMinerGame.ScreenSize.X, MyMinerGame.ScreenSize.Y), Color.White);\n\n            ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n            //  Company Logo - with shadow (thus drawing two times)\n            ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\n            DrawMinerWarsLogo();\n\n            return true;\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/MyGuiScreenGameOver.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.App;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing System.Diagnostics;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.Sessions;\n\nnamespace MinerWars.AppCode.Game.GUI\n{\n    enum MyGameOverTypeEnum\n    {\n        GameOver,\n        MissionFail,        \n    }\n\n    class MyGuiScreenGameOver : MyGuiScreenBase\n    {\n        private float m_fadeTime;\n        private float m_time;\n        private MyTextsWrapperEnum? m_customMessage;\n\n        public MyGuiScreenGameOver(float fadeTime, MyTextsWrapperEnum? customMessage = null)\n            : base(new Vector2(0.5f, 0.5f), MyGuiConstants.SCREEN_BACKGROUND_COLOR, null)\n        {\n            m_fadeTime = fadeTime;\n            m_customMessage = customMessage;\n            m_size = MyGuiManager.GetNormalizedSizeFromScreenSize(new Vector2(MyGuiManager.GetSafeFullscreenRectangle().Width, MyGuiManager.GetSafeFullscreenRectangle().Height));\n            m_backgroundTexture = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\BackgroundScreen\\\\MissionFailed\", flags: TextureFlags.IgnoreQuality);\n\n            if (!MyMultiplayerGameplay.IsRunning || MyMultiplayerGameplay.Static.IsHost)\n            {\n                OnEnterCallback += OnEnter;\n            }\n\n            // we wan't clear all hud cues when is game over\n            MyHudAudio.Reset();\n            // 0004862: game over zvuk - vypnut / zadisablovat\n            //MyAudio.AddCue2D(MySoundCuesEnum.SfxGameOver);\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenGameOver\";\n        }\n\n        public override bool Update(bool hasFocus)\n        {\n            base.Update(hasFocus);\n\n            m_time += MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS;\n            m_backgroundColor = Vector4.One * MathHelper.Clamp(m_time / m_fadeTime, 0, 1);\n\n            return true;\n        }\n\n        public override bool Draw(float backgroundFadeAlpha)\n        {\n            if (base.Draw(backgroundFadeAlpha))\n            {\n                if (m_customMessage.HasValue)\n                {\n                    MyGuiManager.DrawString(MyGuiManager.GetFontMinerWarsRed(),\n                            MyTextsWrapper.Get(m_customMessage.Value),\n                            new Vector2(0.5f, 680 / 1200f), 1f,\n                            MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER);\n                }\n\n                if (MyMultiplayerGameplay.IsRunning && !MyMultiplayerGameplay.Static.IsHost)\n                {\n                    MyGuiManager.DrawString(MyGuiManager.GetFontMinerWarsRed(),\n                        MyTextsWrapper.Get(MyTextsWrapperEnum.GameOverInstructionsPart2MP),\n                        new Vector2(0.5f, 870 / 1200f), 1f,\n                        MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER);\n                }\n                else\n                {\n                    MyGuiManager.DrawString(MyGuiManager.GetFontMinerWarsRed(),\n                        MyTextsWrapper.Get(MyTextsWrapperEnum.GameOverInstructionsPart2),\n                        new Vector2(0.5f, 870 / 1200f), 1f,\n                        MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER);\n                }\n                MyGuiManager.DrawString(MyGuiManager.GetFontMinerWarsRed(),\n                        MyTextsWrapper.Get(MyTextsWrapperEnum.GameOverInstructionsPart1),\n                        new Vector2(0.5f, 930 / 1200f), 1f,\n                        MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER);\n            }\n            return true;\n        }\n\n        protected override void Canceling()\n        {\n            if (MySession.Static != null && MySession.Static.Player != null)\n            {\n                MySession.Static.Player.RestoreHealth();\n            }\n\n            MyGuiScreenMainMenu.UnloadAndExitToMenu();\n        }\n\n        private void OnEnter()\n        {\n            var gameplayType = MyGuiScreenGamePlay.Static.GetGameType();\n            Debug.Assert(gameplayType == MyGuiScreenGamePlayType.GAME_STORY || gameplayType == MyGuiScreenGamePlayType.GAME_SANDBOX);\n            MyGuiScreenGamePlay.Static.Restart();\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/MyGuiScreenGamePlay.cs",
    "content": "﻿//#define HOMEKEY_RESET_ENVMAP\n\n#region Using\n\nusing System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.IO;\nusing System.Linq;\nusing System.Text;\nusing System.Threading;\nusing KeenSoftwareHouse.Library.Extensions;\n\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.ExternalEditor;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.AppCode.Game.Audio.Dialogues;\nusing MinerWars.AppCode.Game.BackgroundCube;\nusing MinerWars.AppCode.Game.Cockpit;\nusing MinerWars.AppCode.Game.Debugging;\nusing MinerWars.AppCode.Game.Decals;\nusing MinerWars.AppCode.Game.Editor;\nusing MinerWars.AppCode.Game.Effects;\nusing MinerWars.AppCode.Game.Explosions;\nusing MinerWars.AppCode.Game.Gameplay;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.GUI.Helpers;\nusing MinerWars.AppCode.Game.HUD;\nusing MinerWars.AppCode.Game.Inventory;\nusing MinerWars.AppCode.Game.Lights;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Managers;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.AppCode.Game.Entities.InfluenceSpheres;\nusing MinerWars.AppCode.Game.Entities.Prefabs;\nusing MinerWars.AppCode.Game.Entities.Ships.AI;\nusing MinerWars.AppCode.Game.Entities.Ships.SubObjects;\nusing MinerWars.AppCode.Game.Entities.SubObjects;\nusing MinerWars.AppCode.Game.Entities.WayPoints;\nusing MinerWars.AppCode.Game.Entities.Weapons;\nusing MinerWars.AppCode.Game.Entities.Weapons.Ammo.UniversalLauncher;\nusing MinerWars.AppCode.Game.Entities.Weapons.UniversalLauncher;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Missions;\nusing MinerWars.AppCode.Game.Models;\nusing MinerWars.AppCode.Game.Prefabs;\nusing MinerWars.AppCode.Game.Radar;\nusing MinerWars.AppCode.Game.Render;\nusing MinerWars.AppCode.Game.Render.EnvironmentMap;\nusing MinerWars.AppCode.Game.Renders;\nusing MinerWars.AppCode.Game.Sessions;\nusing MinerWars.AppCode.Game.Sessions.Multiplayer;\nusing MinerWars.AppCode.Game.SolarSystem;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.Trailer;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.VideoMode;\nusing MinerWars.AppCode.Game.Voxels;\nusing MinerWars.AppCode.Game.World;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.AppCode.Networking;\nusing MinerWars.AppCode.Physics;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.Networking.Multiplayer;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.CommonLIB.AppCode.Utils;\n\nusing ParallelTasks;\nusing SysUtils;\nusing SysUtils.Utils;\nusing MinerWars.AppCode.Game.Entities.CargoBox;\n\nusing MinerWarsMath;\n//using MinerWarsMath.Graphics;\nusing MinerWars.AppCode.Toolkit.Input;\n\n\nusing SharpDX;\nusing SharpDX.Direct3D9;\nusing SharpDX.Toolkit;\nusing SharpDX.Toolkit.Graphics;\n\n\n#endregion\n\nnamespace MinerWars.AppCode.Game.GUI\n{\n    using Vector2 = MinerWarsMath.Vector2;\n    using Vector3 = MinerWarsMath.Vector3;\n    using Vector4 = MinerWarsMath.Vector4;\n    using Rectangle = MinerWarsMath.Rectangle;\n    using Matrix = MinerWarsMath.Matrix;\n    using Color = MinerWarsMath.Color;\n    using BoundingBox = MinerWarsMath.BoundingBox;\n    using BoundingSphere = MinerWarsMath.BoundingSphere;\n    using BoundingFrustum = MinerWarsMath.BoundingFrustum;\n    using MinerWars.CommonLIB.AppCode.Import;\n\n    enum MyCameraAttachedToEnum : byte\n    {\n        PlayerMinerShip,\n        BotMinerShip,\n        PlayerMinerShip_ThirdPersonStatic,\n        PlayerMinerShip_ThirdPersonFollowing,\n        Spectator,\n        PlayerMinerShip_ThirdPersonDynamic,\n        Drone,\n        Camera,\n        LargeWeapon,\n    }\n\n    public enum MyGuiScreenGamePlayType : int\n    {\n        MAIN_MENU = 0,                  //  Main menu with fly through in the background - started at application start or if user \"exits back to main menu\"\n        GAME_STORY,                     //  Playing story\n        GAME_MMO,                       //  Playing MMO\n        PURE_FLY_THROUGH,               //  Only fly through\n        CREDITS,                        //  Fly through with credits on top\n        EDITOR_STORY,                   //  Editor was opened from main menu\n        EDITOR_MMO,                     //  Editor was opened from main menu\n        EDITOR_SANDBOX,                 //  Editor was opened from main menu\n        INGAME_EDITOR,                  //  Editor, that becomes active during game(switching from cockpit to builder mode and back)\n        GAME_SANDBOX,                   //  Playing sandbox\n\n        // number of all sreens - keep it as the last one in this enum:\n        ALL_SCREEN_COUNT\n    }\n\n    delegate void CameraAttachedChangedHandler(MyCameraAttachedToEnum previousAttachedType, MyCameraAttachedToEnum newAttachedType);\n    delegate void ControlledEntityHandler(MyEntity e);\n\n    public struct MyChatMessage\n    {\n        public int SenderId;\n        public StringBuilder SenderName;\n        public MyFactionRelationEnum SenderRelation;\n        public StringBuilder Message;\n        public float TimeStamp;\n    }\n\n\n    partial class MyGuiScreenGamePlay : MyGuiScreenBase\n    {\n        private const int TIME_UNTIL_GPS_REMINDER = 30000; // in ms\n        const int DRONE_CONTROL_INTERVAL = 250; // ms\n        public static int FrameCounter = 0;\n\n        public static MyGuiScreenGamePlay Static;\n        readonly int FIRST_FADE_IN_DELAY = 10;\n        readonly int FIRST_GAME_SAFELY_LOADED_DELAY = 13;\n        readonly int FIRST_TOTAL_DELAY = 50;\n        readonly int FIRST_DELAY_SAFE_IN_GAME = -1000;\n\n        //events for external editors/scripts\n        internal static event EventHandler OnGameLoaded;\n        internal event ScreenHandler OnGameReady;\n        internal event ScreenHandler OnGameSafelyLoaded;\n\n        public event ControlledEntityHandler ReleasedControlOfEntity;\n        public event Action RollLeftPressed;\n        public event Action RollRightPressed;\n\n        private bool m_detachingForbidden;\n\n        private float m_fadeAlpha;\n        private float m_fadeSpeed;\n        public bool m_fadingIn;\n        public bool m_fadingOut;\n\n        public event Action FadedOut;\n        public event Action FadedIn;\n\n        public bool DetachingForbidden\n        {\n            get { return m_detachingForbidden; }\n            set\n            {\n                m_detachingForbidden = value;\n                if (value)\n                {\n                    if (m_detachNotification != null) m_detachNotification.Disappear();\n                }\n                else\n                {\n                    if (m_detachNotification != null)\n                    {\n                        object[] args = { MyGuiManager.GetInput().GetGameControlTextEnum(MyGameControlEnums.USE), \"\" };\n\n                        m_detachNotification = new MyHudNotification.MyNotification(\n                              MyTextsWrapperEnum.NotificationExitControlled,\n                              MyHudNotification.GetCurrentScreen(),\n                              1f,\n                              MyHudConstants.NEUTRAL_FONT,\n                              MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_BOTTOM,\n                              MyHudNotification.DONT_DISAPEAR,\n                              null,\n                              false,\n                              args);\n\n                        if (!DetachingForbidden)\n                        {\n                            MyHudNotification.AddNotification(m_detachNotification);\n                        }\n                    }\n                }\n            }\n        }\n\n        public MySmallShip ShipForSimpleTesting;       //  Reference to ship that is controlled by a player too, for some simple testing\n\n        private MyCameraAttachedToEnum m_cameraAttachedTo;\n\n        private MySoundCue? m_idleVehicleCue = null;\n\n        public MyCameraAttachedToEnum CameraAttachedTo\n        {\n            get\n            {\n                return m_cameraAttachedTo;\n            }\n            set\n            {\n                var old = m_cameraAttachedTo;\n\n                if (old == MyCameraAttachedToEnum.PlayerMinerShip || value == MyCameraAttachedToEnum.PlayerMinerShip) // if player miner ship lost or gained control\n                {\n                    if (MySession.PlayerShip != null)\n                        MySession.PlayerShip.StopSounds(SharpDX.XACT3.StopFlags.Immediate); // we need to stop all sounds, so they will start again as 3d and not 2d\n                }\n                else if (old == MyCameraAttachedToEnum.LargeWeapon)\n                {\n                    if (ControlledLargeWeapon != null)\n                        ControlledLargeWeapon.StopAimingSound();\n                }\n\n                if (old != value)\n                {\n                    m_cameraAttachedTo = value;\n                    if (old == MyCameraAttachedToEnum.LargeWeapon ||\n                        old == MyCameraAttachedToEnum.Camera ||\n                        old == MyCameraAttachedToEnum.Drone)\n                    {\n                        ReturnControlToPlayerShip();\n                    }\n\n                    if (MyCamera.Zoom != null)\n                        MyCamera.Zoom.ResetZoom();\n\n                    var handler = CameraAttachedChanged;\n                    if (handler != null)\n                    {\n                        handler(old, value);\n                    }\n                }\n            }\n        }\n\n        public event CameraAttachedChangedHandler CameraAttachedChanged;\n        public event ControlledEntityHandler CameraContrlolledObjectChanged;\n\n        public bool StartTimeoutClosing = false;\n        //public MySoundCue? MusicCue;\n        public Vector3 ThirdPersonCameraDelta = new Vector3(-10, 10, 10);\n\n        //public MyGuiEditorControls EditorControls;\n        //public MyGuiFoundationFactoryControls FoundationFactoryControls;\n        public MyGuiEditorControlsBase EditorControls;\n\n        MyMwcObjectBuilder_Checkpoint m_checkpoint;\n\n        static MyMwcObjectBuilder_Checkpoint m_lastLoadedCheckpoint;\n\n        public MyMwcObjectBuilder_Checkpoint Checkpoint\n        {\n            get { return m_checkpoint; }\n        }\n\n        protected MyGuiScreenGamePlayType m_type;\n\n        MyGuiScreenGamePlayType? m_previousType = null;\n        protected MyMwcStartSessionRequestTypeEnum? m_sessionType;\n\n        //  If game-screen is displaying fly-through animation\n        //public bool FlyThroughActive;\n        protected bool m_firstUpdateCall;\n        protected int m_firstDrawCall;\n        MyGuiScreenLoading m_loadingScreen;\n        Thread m_drawLoadingThread;\n        volatile bool m_backgroundWorkerRunning;\n        volatile bool m_backgroundWorkerCanRun;\n\n        private bool m_invokeGameEditorSwitch;\n        private bool m_hudSectorBorderInEditor = MyConfig.EditorEnableGrid;\n\n        private MyHudNotification.MyNotification m_detachNotification = null;\n\n        protected int? m_startTimeInMilliseconds;\n\n        private int? m_gpsLocationExistsTime;\n        private float m_updateGPSReminderTimer = 0;\n        private readonly MyHudNotification.MyNotification m_showGPSNotification;\n        private MyHudNotification.MyNotification m_needShowHelpNotification;\n        private MyHudNotification.MyNotification m_oreInRangeNotification;\n        private MyHudNotification.MyNotification m_drillingInRangeNotification;\n        private MyHudNotification.MyNotification m_holdFireToDrillNotification;\n        private MyHudNotification.MyNotification m_pressMToDeactivateDrillNotification;\n\n        //int? m_lastHandleInputInMilliseconds;\n        private bool m_handleInputMouseKeysReleased;\n\n        static int m_multipleLoadsCount = 0;\n        bool m_loadMultiple = MyFakes.TEST_MULTIPLE_LOAD_UNLOAD;\n\n        bool PHYSICS_SIMULATION_SLOWDOWN = false;\n        long deltaphys = 0;\n\n        static int m_missionGameplayKillsRemaining = 0;\n        int m_missionGameplayTestDelay = MyFakes.TEST_MISSION_GAMEPLAY_DURATION;\n        static MyMissionID m_lastMissionID = 0;\n        static MyObjective m_lastObjective = null;\n        struct MyMissionGameplayStats\n        {\n            public int FPS;\n            public float FrameTimeAvg;\n            public int FrameTimeMin;\n            public int FrameTimeMax;\n\n            public long GC;\n            public long WorkingSet;\n\n            public float VideoMemAllocated;\n            public float VideoMemAvailable;\n        }\n        static Dictionary<MyMissionID, Dictionary<MyMissionID, MyMissionGameplayStats>> m_missionGameplayStats = new Dictionary<MyMissionID, Dictionary<MyMissionID, MyMissionGameplayStats>>();\n\n        public MyGuiScreenSecurityControlHUB ActiveSecurityHubScreen;\n\n        protected MyMwcSectorIdentifier m_sectorIdentifier;         //  Current sector identifier\n        protected MyMwcSectorIdentifier m_travelSectorIdentifier;         //  Travel to sector\n        protected MyMwcTravelTypeEnum m_travelReason;\n        protected MyMissionID? m_missionToStart = null; //What mission start after screen load\n\n        private static Vector4 SectorDustColor;                                  //  Dust color of actual sector\n        private List<Vector4> PartialDustColor;\n        private Vector4 ResultDustColor;\n\n        public bool CanTravel\n        {\n            get\n            {\n                return MyMissions.ActiveMission == null && (!MyMultiplayerGameplay.IsRunning || MyMultiplayerGameplay.Static.IsHost);\n            }\n        }\n\n        float m_distanceToSectorBoundaries = float.MaxValue;\n        bool m_transferToNeighbouringSectorStarted = false;\n\n        bool m_assertWasCalledUnloadContentBeforeLoadContent = true;\n        //bool m_controlsChange = false;\n\n        //Background resolve\n        Texture m_textureForSectorLoadingScreen;\n        bool m_isPreparedTextureForSectorLoadingScreen;\n        bool m_prepareTextureForSectorLoadingScreen;\n\n        //  Quick zoom was used.\n        bool m_quickZoomWasUsed = false;\n        bool m_quickZoomOut = false;\n\n        protected MyGuiControlSelectAmmo m_selectAmmoMenu;\n        protected MyGuiControlWheelControl m_wheelControlMenu;\n\n        // Background thread was running last update\n        bool m_backgroudThreadWasWorking = false;\n\n        private int m_firstTimeLoaded = 0;\n\n        private List<MyChatMessage> m_chatMessages = new List<MyChatMessage>(MyGuiConstants.CHAT_WINDOW_MAX_MESSAGES_COUNT);\n\n\n        private StringBuilder m_demoEndText = new StringBuilder();\n        public bool DrawDemoEnd { get; set; }\n\n        public bool DrawCampaignEnd { get; set; }\n\n        private int m_lastTimeSwitchedDroneControl;\n\n        private readonly MyRender.MyRenderSetup m_secondarySetup;\n        MyHudNotification.MyNotification m_notificationYouHaveToBeNearMothership;\n        MyHudNotification.MyNotification m_notificationUnableToLeaveSectorMission;\n\n        private float m_madelynRefillTimer;\n\n        public MyPrefabCamera ControlledCamera\n        {\n            get { return ControlledEntity as MyPrefabCamera; }\n            private set { ControlledEntity = value; }\n        }\n\n        public MySmallShip ControlledShip\n        {\n            get { return ControlledEntity as MySmallShip; }\n            set { ControlledEntity = value; }\n        }\n\n        public MyDrone ControlledDrone\n        {\n            get { return ControlledEntity as MyDrone; }\n            private set { ControlledEntity = value; }\n        }\n\n        public MyPrefabLargeWeapon ControlledLargeWeapon\n        {\n            get { return ControlledEntity as MyPrefabLargeWeapon; }\n            private set { ControlledEntity = value; }\n        }\n\n        private MyEntity m_entity;\n        public MyEntity ControlledEntity\n        {\n            get { return m_entity; }\n            private set\n            {\n                System.Diagnostics.Debug.Assert(value != null);\n\n                if (m_entity != value)\n                {\n                    m_entity = value;\n                    MyEnemyTargeting.SwitchOwner(value);\n                    if (CameraContrlolledObjectChanged != null)\n                    {\n                        CameraContrlolledObjectChanged(value);\n                    }\n\n                }\n            }\n        }\n\n        public bool IsControlledPlayerShip\n        {\n            get { return ControlledEntity == MySession.PlayerShip; }\n        }\n\n        public bool IsControlledDrone\n        {\n            get { return ControlledDrone != null; }\n        }\n\n        public bool FoundationFactoryDropEnabled { get; set; }\n\n        public static bool IsRenderingInsideEntity(MyEntity entity)\n        {\n            if (entity == MySession.PlayerShip)\n            {\n                var isMainRenderInsidePlayerShip = Static.CameraAttachedTo ==\n                                                   MyCameraAttachedToEnum.PlayerMinerShip &&\n                                                   !MySecondaryCamera.Instance.IsCurrentlyRendering;\n\n                var isSecondaryRenderInsidePlayerShip = MySecondaryCamera.Instance.IsInsidePlayerShip &&\n                                                        MySecondaryCamera.Instance.IsCurrentlyRendering;\n\n                return isMainRenderInsidePlayerShip || isSecondaryRenderInsidePlayerShip;\n            }\n\n            var squaredDistanceToCamera = Vector3.DistanceSquared(entity.GetPosition(), MyCamera.Position);\n\n            var closeEnoughToCamera = squaredDistanceToCamera < 0.0001f;\n\n            return closeEnoughToCamera;\n        }\n\n        public MyGuiScreenGamePlay(MyGuiScreenGamePlayType type, MyGuiScreenGamePlayType? previousType, MyMwcSectorIdentifier sectorIdentifier, int sectorVersion, MyMwcStartSessionRequestTypeEnum? sessionType)\n            : base(Vector2.Zero, null, null)\n        {\n            MySystemTimer.SetByType(type);\n\n            m_sessionType = sessionType;\n            m_sectorIdentifier = sectorIdentifier;\n            SectorVersion = sectorVersion;\n            m_directionToSunNormalized = -MyMwcUtils.Normalize(GetPositionInMillionsOfKm());\n            DrawMouseCursor = false;\n            m_closeOnEsc = false;\n            m_type = type;\n            m_previousType = previousType;\n            m_firstUpdateCall = true;\n            m_firstDrawCall = FIRST_TOTAL_DELAY;\n            m_drawEvenWithoutFocus = true;\n            m_enableBackgroundFade = true;\n            m_canShareInput = false;\n            m_screenCanHide = false;\n\n            m_isPreparedTextureForSectorLoadingScreen = false;\n            m_prepareTextureForSectorLoadingScreen = false;\n\n            MinerWars.AppCode.Networking.SectorService.MySectorServerCallback.ClearEvents();\n            MinerWars.AppCode.Networking.SectorService.MySectorServerCallback.ShutdownNotification += new MinerWars.AppCode.Networking.SectorService.MySectorServerCallback.ShutdownHandler(MySectorServerCallback_ShutdownNotification);\n\n            m_secondarySetup = new MyRender.MyRenderSetup();\n            m_secondarySetup.EnabledModules = new HashSet<MyRenderModuleEnum>();\n            m_secondarySetup.EnabledModules.Add(MyRenderModuleEnum.Cockpit);\n            m_secondarySetup.EnabledModules.Add(MyRenderModuleEnum.CockpitGlass);\n            m_secondarySetup.EnabledModules.Add(MyRenderModuleEnum.SunGlareAndLensFlare);\n            m_secondarySetup.EnabledModules.Add(MyRenderModuleEnum.UpdateOcclusions);\n            m_secondarySetup.EnabledModules.Add(MyRenderModuleEnum.AnimatedParticlesPrepare);\n            m_secondarySetup.EnabledModules.Add(MyRenderModuleEnum.TransparentGeometry);\n            m_secondarySetup.EnabledModules.Add(MyRenderModuleEnum.ParticlesDustField);\n            m_secondarySetup.EnabledModules.Add(MyRenderModuleEnum.VoxelHand);\n            m_secondarySetup.EnabledModules.Add(MyRenderModuleEnum.DistantImpostors);\n            m_secondarySetup.EnabledModules.Add(MyRenderModuleEnum.Decals);\n            m_secondarySetup.EnabledModules.Add(MyRenderModuleEnum.CockpitWeapons);\n            m_secondarySetup.EnabledModules.Add(MyRenderModuleEnum.SunGlow);\n            m_secondarySetup.EnabledModules.Add(MyRenderModuleEnum.SectorBorder);\n            m_secondarySetup.EnabledModules.Add(MyRenderModuleEnum.DrawSectorBBox);\n            m_secondarySetup.EnabledModules.Add(MyRenderModuleEnum.DrawCoordSystem);\n            m_secondarySetup.EnabledModules.Add(MyRenderModuleEnum.Explosions);\n            m_secondarySetup.EnabledModules.Add(MyRenderModuleEnum.BackgroundCube);\n            m_secondarySetup.EnabledModules.Add(MyRenderModuleEnum.GPS);\n            m_secondarySetup.EnabledModules.Add(MyRenderModuleEnum.TestField);\n            m_secondarySetup.EnabledModules.Add(MyRenderModuleEnum.AnimatedParticles);\n            m_secondarySetup.EnabledModules.Add(MyRenderModuleEnum.Lights);\n            m_secondarySetup.EnabledModules.Add(MyRenderModuleEnum.TransparentGeometryForward);\n            m_secondarySetup.EnabledModules.Add(MyRenderModuleEnum.Projectiles);\n            m_secondarySetup.EnabledModules.Add(MyRenderModuleEnum.DebrisField);\n            m_secondarySetup.EnabledModules.Add(MyRenderModuleEnum.ThirdPerson);\n            m_secondarySetup.EnabledModules.Add(MyRenderModuleEnum.Editor);\n            m_secondarySetup.EnabledModules.Add(MyRenderModuleEnum.SolarObjects);\n            m_secondarySetup.EnabledModules.Add(MyRenderModuleEnum.SolarMapGrid);\n            m_secondarySetup.EnabledModules.Add(MyRenderModuleEnum.PrunningStructure);\n            m_secondarySetup.EnabledModules.Add(MyRenderModuleEnum.SunWind);\n            m_secondarySetup.EnabledModules.Add(MyRenderModuleEnum.IceStormWind);\n            m_secondarySetup.EnabledModules.Add(MyRenderModuleEnum.PrefabContainerManager);\n            m_secondarySetup.EnabledModules.Add(MyRenderModuleEnum.PhysicsPrunningStructure);\n\n            m_showGPSNotification = new MyHudNotification.MyNotification(MyTextsWrapperEnum.GPSReminder, MyHudConstants.MISSION_FONT, MyHudNotification.DONT_DISAPEAR, null, null);\n            m_showGPSNotification.SetTextFormatArguments(new object[] { MyGuiManager.GetInput().GetGameControlTextEnum(MyGameControlEnums.GPS) });\n        }\n\n        void MyEntities_OnEntityRemove(MyEntity entity)\n        {\n            if (CameraAttachedTo == MyCameraAttachedToEnum.LargeWeapon && ControlledLargeWeapon == entity)\n            {\n                CameraAttachedTo = MyCameraAttachedToEnum.PlayerMinerShip;\n            }\n        }\n\n        void MySectorServerCallback_ShutdownNotification(TimeSpan shutdownOn, TimeSpan shutdownLength, string shutdownMessage)\n        {\n            MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, new StringBuilder(String.Format(MyTextsWrapper.Get(MyTextsWrapperEnum.ServerShutdownNotification).ToString(),\n                shutdownLength.TotalMinutes, shutdownOn.TotalMinutes)), MyTextsWrapper.Get(MyTextsWrapperEnum.ServerShutdownNotificationCaption), MyTextsWrapperEnum.Ok, null));\n        }\n\n        public bool CanTravelThroughSectorBoundaries()\n        {\n            return (m_type != MyGuiScreenGamePlayType.GAME_SANDBOX && CanTravel && (m_type != MyGuiScreenGamePlayType.GAME_STORY || MyClientServer.LoggedPlayer.GetCanSave()))\n                && (!MyMultiplayerGameplay.IsRunning || (MyMultiplayerGameplay.Static.IsHost && m_type == MyGuiScreenGamePlayType.GAME_STORY));\n        }\n\n        public bool IsPureFlyThroughActive()\n        {\n            return (m_type == MyGuiScreenGamePlayType.PURE_FLY_THROUGH);\n        }\n\n        public bool IsCreditsActive()\n        {\n            return (m_type == MyGuiScreenGamePlayType.CREDITS);\n        }\n\n        public bool IsFlyThroughActive()\n        {\n            return (m_type == MyGuiScreenGamePlayType.PURE_FLY_THROUGH) || (m_type == MyGuiScreenGamePlayType.CREDITS);\n        }\n\n        public bool IsGameActive()\n        {\n            return ((m_type == MyGuiScreenGamePlayType.GAME_MMO) || (m_type == MyGuiScreenGamePlayType.GAME_STORY) || (m_type == MyGuiScreenGamePlayType.GAME_SANDBOX));\n        }\n\n        public bool IsMainMenuActive()\n        {\n            return (m_type == MyGuiScreenGamePlayType.MAIN_MENU);\n        }\n\n        public bool IsEditorActive()\n        {\n            return (m_type == MyGuiScreenGamePlayType.EDITOR_STORY) || (m_type == MyGuiScreenGamePlayType.EDITOR_MMO) || (m_type == MyGuiScreenGamePlayType.EDITOR_SANDBOX)\n                || IsIngameEditorActive();\n        }\n\n        public bool IsEditorStoryActive()\n        {\n            return (m_type == MyGuiScreenGamePlayType.EDITOR_STORY);\n        }\n\n        public bool IsGameStoryActive()\n        {\n            return (m_type == MyGuiScreenGamePlayType.GAME_STORY);\n        }\n\n        public bool IsEditorMmoActive()\n        {\n            return (m_type == MyGuiScreenGamePlayType.EDITOR_MMO);\n        }\n\n        public bool IsEditorSandboxActive()\n        {\n            return (m_type == MyGuiScreenGamePlayType.EDITOR_SANDBOX);\n        }\n\n        public bool IsIngameEditorActive()\n        {\n            return m_type == MyGuiScreenGamePlayType.INGAME_EDITOR;\n        }\n\n        public bool CheatsEnabled()\n        {\n            if (MyClientServer.LoggedPlayer == null)\n                return false;\n            return (m_type != MyGuiScreenGamePlayType.GAME_MMO)\n                && MyClientServer.LoggedPlayer.GetUseCheats()\n                && (MyFakes.MULTIPLAYER_CHEATS_ENABLED || (!MyMultiplayerGameplay.IsRunning || m_type != MyGuiScreenGamePlayType.GAME_SANDBOX));\n        }\n\n        public bool IsCheatEnabled(MyGameplayCheatsEnum cheat)\n        {\n            return CheatsEnabled() && MyGameplayCheats.IsCheatEnabled(cheat);\n        }\n\n        public MyGuiScreenGamePlayType GetGameType()\n        {\n            return m_type;\n        }\n\n        public MyGuiScreenGamePlayType? GetPreviousGameType()\n        {\n            return m_previousType;\n        }\n\n        public MyMwcStartSessionRequestTypeEnum? GetSessionType()\n        {\n            return m_sessionType;\n        }\n\n        public string GetSessionTypeFriendlyName()\n        {\n            if (m_sessionType == null)\n            {\n                return string.Empty;\n            }\n            else\n            {\n                return MyEnumsToStrings.SessionType[(int)m_sessionType.Value];\n            }\n        }\n\n        //  Only certain game types are pause-able\n        public bool IsPausable()\n        {\n            return m_type != MyGuiScreenGamePlayType.MAIN_MENU && !MyMultiplayerGameplay.OtherPlayersConnected;\n        }\n\n        public MyMwcSectorIdentifier GetSectorIdentifier()\n        {\n            return m_sectorIdentifier;\n        }\n\n        public void SetSectorName(string name)\n        {\n            m_sectorIdentifier.SectorName = name;\n        }\n\n        public int SectorVersion { get; private set; }\n\n        public bool IsFirstPersonView\n        {\n            get\n            {\n                return CameraAttachedTo == MyCameraAttachedToEnum.PlayerMinerShip ||\n                       CameraAttachedTo == MyCameraAttachedToEnum.BotMinerShip ||\n                       CameraAttachedTo == MyCameraAttachedToEnum.Camera ||\n                       CameraAttachedTo == MyCameraAttachedToEnum.Drone ||\n                       CameraAttachedTo == MyCameraAttachedToEnum.LargeWeapon;\n            }\n        }\n\n        //public void SetControlsChange(bool Value)\n        //{\n        //    m_controlsChange = Value;\n        //}\n\n        //public bool GetControlsChange()\n        //{\n        //    return m_controlsChange;\n        //}\n\n        public void AddEnterSectorResponse(MyMwcObjectBuilder_Checkpoint checkpoint, MyMissionID? missionToStart)\n        {\n            m_checkpoint = checkpoint;\n            if (missionToStart != null)\n            {\n                m_missionToStart = missionToStart;\n            }\n        }\n\n        /// <summary>\n        /// Stores last loaded checkpoint to check missing objects\n        /// </summary>\n        public static void StoreLastLoadedCheckpoint(MyMwcObjectBuilder_Checkpoint checkpoint)\n        {\n            m_lastLoadedCheckpoint = checkpoint;\n        }\n\n        public static List<MyMwcObjectBuilder_Base> FindMissingObjectBuilders(MyMwcObjectBuilder_Checkpoint checkpointToSave)\n        {\n            var result = new List<MyMwcObjectBuilder_Base>();\n            // Fill dictionary with loaded objects\n            var loaded = new Dictionary<uint, MyMwcObjectBuilder_Base>();\n            GetObjects(m_lastLoadedCheckpoint, loaded);\n\n            // Fill dictionary with saved objects\n            var saved = new Dictionary<uint, MyMwcObjectBuilder_Base>();\n            GetObjects(checkpointToSave, saved);\n\n            // Removed saved objects from loaded dict\n            foreach (var savedObject in saved)\n            {\n                loaded.Remove(savedObject.Key);\n            }\n\n            // Loaded now contains objects which were not saved\n            result.AddRange(loaded.Values);\n            return result;\n        }\n\n        static void GetObjects(MyMwcObjectBuilder_Base builder, Dictionary<uint, MyMwcObjectBuilder_Base> addToDictionary)\n        {\n            if (builder == null)\n                return;\n\n            if (builder.EntityId.HasValue)\n            {\n                addToDictionary.Add(builder.EntityId.Value, builder);\n            }\n\n            if (builder is MyMwcObjectBuilder_Checkpoint)\n            {\n                GetObjects(((MyMwcObjectBuilder_Checkpoint)builder).SectorObjectBuilder, addToDictionary);\n            }\n\n            var sectorBuilder = builder as MyMwcObjectBuilder_Sector;\n            if (sectorBuilder != null && sectorBuilder.SectorObjects != null)\n            {\n                foreach (var ob in sectorBuilder.SectorObjects)\n                {\n                    GetObjects(ob, addToDictionary);\n                }\n            }\n\n            var containerBuilder = builder as MyMwcObjectBuilder_PrefabContainer;\n            if (containerBuilder != null && containerBuilder.Prefabs != null)\n            {\n                foreach (var ob in containerBuilder.Prefabs)\n                {\n                    GetObjects(ob, addToDictionary);\n                }\n            }\n        }\n\n        //  IMPORTANT: This method will be called in background thread so don't mess with main thread objects!!!\n        public override void RunBackgroundThread()\n        {\n            int runBackgroundBlock = -1;\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyGuiScreenGameplay.RunBackgroundThread\", ref runBackgroundBlock);\n\n            MyMwcLog.WriteLine(\"MyGuiScreenGamePlay.RunBackgroundThread - START\");\n            MyMwcLog.IncreaseIndent();\n\n            MyPerformanceTimer.GuiScreenGamePlay_RunBackgroundThread.Start();\n\n            int startBlock = -1;\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Start\", ref startBlock);\n\n            base.RunBackgroundThread();\n\n            m_selectAmmoMenu = new MyGuiControlSelectAmmo(this, Vector2.Zero, Vector2.Zero, MyGuiConstants.SELECT_AMMO_BACKGROUND_COLOR);\n            m_wheelControlMenu = new MyGuiControlWheelControl(this);\n\n            //  Reset \"pause\" flag to not-paused\n            if (MyMinerGame.IsPaused())\n                MyMinerGame.SwitchPause();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock(startBlock);\n\n            //if (IsEditorActive() || IsGameActive())\n            //{\n            //    EditorControls = new MyGuiEditorControls(this);\n            //    FoundationFactoryControls = new MyGuiFoundationFactoryControls(this);\n            //}\n\n            if (IsTypeEditorGodMode(m_previousType) || IsTypeEditorGodMode(m_type))\n            {\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyGuiGodEditorControls\");\n                EditorControls = new MyGuiGodEditorControls(this);\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n            }\n            else\n            {\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyGuiIngameEditorControls\");\n                EditorControls = new MyGuiIngameEditorControls(this);\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n            }\n\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyEditor.Static.SetActive\");\n            //@ set proper active state to editor\n            MyEditor.Static.SetActive(IsEditorActive());\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            //  This delay is here because when user starts new game through main menu, we play click sound and this sound must\n            //  be finished before we start with heavy work, even if on separate thread\n            //  I call it after MySounds.UnloadContent(), because then turning-off game current sounds is instant.\n            //  It is also good when turning off the game - so click sound has time to finish.\n            //  Perhaps the delay was made by GC.Collect....\n            //Thread.Sleep(250);    //  Not needed anymore because we load on main thread and ther are no sound interferences\n\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Unload\");\n            if (Static != null)\n            {\n                //  We must unload instance that is currently set to Static, therefore active gameplay\n                //  My first mistake was unloading without specified \"Static\" so we in fact unloaded this new object\n                Static.UnloadContent();\n                Static.UnloadData();\n            }\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            // Fill actual notifications:\n            MyHudNotification.SetCurrentScreen(m_type);\n            MySystemTimer.SetByType(m_type);\n\n            if (MyFakes.UNLOAD_OPTIMIZATION_KEEP_USED_MODELS)\n            {\n                UnloadUnused(); // Unloads unused models, textures and voxel textures\n            }\n            else\n            {\n                MyModels.UnloadContent();\n                MyModels.UnloadData();\n            }\n\n            LoadData();//load initialize all data strucutres etc\n\n            LoadContent();// load all disposable or dynamic graphics content\n\n            // This creates objects from object builders\n            LoadObjects(); // needs graphics and data content together\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Editor.Misc things\");\n\n            if (IsEditorActive() == false)\n            {\n                if (MySession.PlayerShip != null)\n                {\n                    MySpectator.Position = MySession.PlayerShip.GetPosition() + ThirdPersonCameraDelta;\n                    MySpectator.Target = MySession.PlayerShip.GetPosition();\n                }\n                else\n                {\n                    MySpectator.Position = Vector3.Zero;\n                    MySpectator.Target = Vector3.Forward;\n                }\n            }\n            else\n            {\n                if (!MyFakes.MWBUILDER)\n                {\n                    MySpectator.Position = MySession.PlayerShip.GetPosition() + (50 * MySession.PlayerShip.WorldMatrix.Forward);\n                    //MySpectator.Target = MySpectator.Position + (new Vector3(0, 180, 180));\n                    MySpectator.Target = MySession.PlayerShip.GetPosition();\n\n                    if (MyHudSectorBorder.Enabled != MyConfig.EditorEnableGrid) MyHudSectorBorder.SwitchSectorBorderVisibility();\n                }\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Final GC and finalize\");\n            MyPerformanceTimer.GuiScreenGamePlay_RunBackgroundThread.End();\n\n            GC.Collect(2);\n            GC.Collect(1);\n            GC.Collect(0);\n\n            GC.WaitForPendingFinalizers();\n\n            GC.Collect();\n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyGuiScreenGamePlay.RunBackgroundThread - END\");\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock(runBackgroundBlock);\n        }\n\n        private void UnloadUnused()\n        {\n            MyMwcLog.WriteLine(\"MyGuiScreenGamePlay.UnloadUnused - START\");\n\n            if (m_checkpoint == null)\n            {\n                MyMwcLog.WriteLine(\"m_checkpoint == null\");\n\n                MyMwcLog.WriteLine(\"MyGuiScreenGamePlay.UnloadUnused - END\");\n            }\n\n            if (m_checkpoint.SectorObjectBuilder == null)\n            {\n                MyMwcLog.WriteLine(\"m_checkpoint.SectorObjectBuilder == null\");\n\n                MyMwcLog.WriteLine(\"MyGuiScreenGamePlay.UnloadUnused - END\");\n            }\n\n            // Here clear unused models\n            HashSet<int> usedModels = new HashSet<int>();\n\n            if (m_checkpoint.SectorObjectBuilder != null && m_checkpoint.SectorObjectBuilder.SectorObjects != null)\n            {\n                foreach (var container in m_checkpoint.SectorObjectBuilder.SectorObjects.OfType<MyMwcObjectBuilder_PrefabContainer>())\n                {\n                    foreach (var prefab in container.Prefabs)\n                    {\n                        MyPrefabConfiguration config = MyPrefabConstants.GetPrefabConfiguration(prefab.GetObjectBuilderType(), prefab.GetObjectBuilderId().Value);\n                        usedModels.Add((int)config.ModelLod0Enum);\n                        if (config.ModelLod1Enum.HasValue)\n                            usedModels.Add((int)config.ModelLod1Enum.Value);\n                        if (config.ModelCollisionEnum.HasValue)\n                            usedModels.Add((int)config.ModelCollisionEnum.Value);\n\n                        if (config is MyPrefabConfigurationKinematic)\n                        {\n                            var kinematicConfig = (MyPrefabConfigurationKinematic)config;\n                            foreach (var part in kinematicConfig.KinematicParts)\n                            {\n                                usedModels.Add((int)part.ModelLod0Enum);\n\n                                if (part.m_modelMovingEnum.HasValue)\n                                    usedModels.Add((int)part.m_modelMovingEnum.Value);\n                                if (part.ModelCollisionEnum.HasValue)\n                                    usedModels.Add((int)part.ModelCollisionEnum.Value);\n                                if (part.ModelLod1Enum.HasValue)\n                                    usedModels.Add((int)part.ModelLod1Enum.Value);\n                            }\n                        }\n                    }\n                }\n            }\n\n            // TODO: unload optimization of other stuff can be enabled when we're not low on memory\n            //foreach (var spawnPoint in m_checkpoint.SectorObjectBuilder.SectorObjects.OfType<MyMwcObjectBuilder_SpawnPoint>())\n            //{\n            //    foreach (var ship in spawnPoint.ShipTemplates)\n            //    {\n            //        var shipProps = MyShipTypeConstants.GetShipTypeProperties(ship.ShipType);\n            //        usedModels.Add((int)shipProps.Visual.ModelLod0Enum);\n            //        if (shipProps.Visual.ModelLod1Enum.HasValue)\n            //            usedModels.Add((int)shipProps.Visual.ModelLod1Enum.Value);\n            //    }\n            //}\n\n            //// Bots\n            //foreach (var ship in m_checkpoint.SectorObjectBuilder.SectorObjects.OfType<MyMwcObjectBuilder_SmallShip_Bot>())\n            //{\n            //    if (ship.ShipType != 0)\n            //    {\n            //        var shipProps = MyShipTypeConstants.GetShipTypeProperties(ship.ShipType);\n            //        usedModels.Add((int)shipProps.Visual.ModelLod0Enum);\n            //        if (shipProps.Visual.ModelLod1Enum.HasValue)\n            //            usedModels.Add((int)shipProps.Visual.ModelLod1Enum.Value);\n            //    }\n            //}\n\n            //foreach (var cargo in m_checkpoint.SectorObjectBuilder.SectorObjects.OfType<MyMwcObjectBuilder_CargoBox>())\n            //{\n            //    var model = MinerWars.AppCode.Game.Entities.CargoBox.MyCargoBox.GetModelLod0EnumFromType(cargo.CargoBoxType);\n            //    usedModels.Add((int)model);\n            //}\n\n            //// Player ship\n            //if (m_checkpoint.PlayerObjectBuilder != null)\n            //{\n            //    var playShipProps = MyShipTypeConstants.GetShipTypeProperties(m_checkpoint.PlayerObjectBuilder.ShipObjectBuilder.ShipType);\n            //    usedModels.Add((int)playShipProps.Visual.ModelLod0Enum);\n            //    usedModels.Add((int)playShipProps.Visual.CockpitGlassModel);\n            //    usedModels.Add((int)playShipProps.Visual.CockpitInteriorModel);\n            //    if (playShipProps.Visual.ModelLod1Enum.HasValue)\n            //        usedModels.Add((int)playShipProps.Visual.ModelLod1Enum.Value);\n            //}\n\n            MyMwcLog.WriteLine(\"MyGuiScreenGamePlay.UnloadUnused - MIDDLE\");\n\n            MyModels.UnloadExcept(usedModels);\n            MyMwcLog.WriteLine(\"MyGuiScreenGamePlay.UnloadUnused - END\");\n        }\n\n\n        public void UpdateScreenSize()\n        {\n            //  If gameplay screen doesn't run yet\n            if (Static == null) return;\n\n            if (Static.EditorControls != null) EditorControls.UpdateScreenSize();\n        }\n\n        public override void LoadData()\n        {\n            MyMwcLog.WriteLine(\"MyGuiScreenGamePlay.LoadData - START\");\n            MyMwcLog.IncreaseIndent();\n\n            m_multipleLoadsCount++;\n\n            int loadDataBlock = -1;\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyGuiScreenGamePlay.LoadData\", ref loadDataBlock);\n\n            MyPerformanceTimer.GuiScreenGamePlay_LoadData.Start();\n\n            Static = this;\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MySunGlare.UpdateSectorInfo\");\n            MySunGlare.UpdateSectorInfo();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"MyGuiScreenGamePlay.InitSounds\");\n\n            InitSounds();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"MyGuiScreenGamePlay.MyHudSectorBorder block\");\n            MyHudSectorBorder.LoadData();\n            MyDistantImpostors.LoadData();\n            MyLights.LoadData();\n            MyExplosions.LoadData();\n            MyProjectiles.LoadData();\n            MyCockpitGlassDecals.LoadData();\n            MyModels.LoadData();\n\n            if (IsEditorActive())\n            {\n                MyGuiManager.LoadPrefabPreviews();\n            }\n            MyTransparentGeometry.LoadData();\n            MyParticlesDustField.LoadData();\n            MyHud.LoadData();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"MyGuiScreenGamePlay.MyVoxelMaterials block\");\n            MyVoxelMaterials.LoadData();\n\n            MyVoxelGenerator.LoadData();\n            MyDebrisField.LoadData();\n\n            MyVoxelContentCellContents.LoadData();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"MyGuiScreenGamePlay.MyVoxelCacheData block\");\n            MyVoxelCacheData.LoadData();\n            MyVoxelCacheCellRenderHelper.LoadData();\n            MyVoxelCacheRender.LoadData();\n            MyVoxelPrecalc.LoadData();\n            MyVoxelMaps.LoadData();\n\n            MyWayPointGraph.LoadData();\n\n            MyPhysics physics = new MyPhysics();\n            physics.InitializePhysics();\n            MyConstants.InitializeCollisionLayers();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"MyGuiScreenGamePlay.MyAmmoConstants block\");\n            MyAmmoConstants.LoadData();\n\n            MyEntities.LoadData();\n\n            MyMissiles.LoadData();\n            MyHologramShips.LoadData();\n            MyCannonShots.LoadData();\n            MyUniversalLauncherShells.LoadData(true);\n            MyExplosionDebrisVoxel.LoadData();\n            MyExplosionDebrisModel.LoadData();\n\n            MyEditor.Static.LoadData();\n            MyFriendlyFire.Load();\n\n            if (MyFakes.ENABLE_SHOUT)\n            {\n                MyShouts.LoadData();\n            }\n\n            // load editor controls also when game active, because we can enter editor during gameplay\n            if (IsEditorActive() || IsGameActive())\n            {\n                EditorControls.LoadData();\n                //FoundationFactoryControls.LoadData();\n            }\n\n            m_invokeGameEditorSwitch = false;\n            m_lastTimeSwitchedDroneControl = MyConstants.FAREST_TIME_IN_PAST;\n\n            MyPerformanceTimer.GuiScreenGamePlay_LoadData.End();\n\n            PartialDustColor = new List<Vector4>();\n\n            m_notificationYouHaveToBeNearMothership = new MyHudNotification.MyNotification(MyTextsWrapperEnum.NotificationYouHaveToBeNearMothership, MyGuiManager.GetFontMinerWarsRed(), (int)TimeSpan.FromSeconds(5).TotalMilliseconds);\n            m_notificationUnableToLeaveSectorMission = new MyHudNotification.MyNotification(MyTextsWrapperEnum.UnableToLeaveSectorMission, MyGuiManager.GetFontMinerWarsRed(), (int)TimeSpan.FromSeconds(5).TotalMilliseconds);\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock(loadDataBlock);\n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyGuiScreenGamePlay.LoadData - END\");\n        }\n\n\n        //  IMPORTANT: This method will be called in background thread so don't mess with main thread objects!!!\n        public override void LoadContent()\n        {\n            MyMwcLog.WriteLine(\"MyGuiScreenGamePlay.LoadContent - START\");\n            MyMwcLog.IncreaseIndent();\n\n            Static = this;\n            MyMinerGame.IsGameReady = false;\n\n#if DETECT_LEAKS\n            MyRender.LoadContent();              \n#endif\n\n            MySimpleObjectDraw.LoadContent();\n\n            MyEntities.OnEntityRemove += new Action<MyEntity>(MyEntities_OnEntityRemove);\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"LoadContent\");\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Part1\");\n\n            MyCommonDebugUtils.AssertRelease(m_assertWasCalledUnloadContentBeforeLoadContent == true);\n\n            MyPerformanceTimer.GuiScreenGamePlay_LoadContent.Start();\n\n            if (IsEditorActive()) CameraAttachedTo = MyCameraAttachedToEnum.Spectator;\n\n            MyMwcObjectBuilder_InventoryItem.ReloadDisabledItems(MySession.Is25DSector);\n\n            MyHudSectorBorder.LoadContent();\n            MyBackgroundCube.LoadContent(GetSectorIdentifier());\n            MyTransparentGeometry.LoadContent();\n\n            MyHud.LoadContent(this);\n            //MyHudRadar.LoadContent();\n            MyHudGPS.LoadContent();\n            MyDecals.LoadContent();\n            MyCockpitGlassDecals.LoadContent();\n            MyCockpitGlass.LoadContent();\n            MyCockpitWeapons.LoadContent();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Part2\");\n\n            // TODO: petrzilka, refactor\n            List<MyMwcObjectBuilder_Base> objects = null;\n            if (m_checkpoint != null && m_checkpoint.SectorObjectBuilder != null)\n            {\n                objects = m_checkpoint.SectorObjectBuilder.SectorObjects;\n            }\n\n            MyDistantImpostors.LoadContent(objects, false /*IsGameActive() || IsEditorActive()*/);//ok\n\n            MyVoxelCacheData.LoadContent();\n            MyVoxelCacheRender.LoadContent();\n\n            MyExplosions.LoadContent();\n            MyModels.LoadContent();\n            MyModelSubObjects.LoadContent();\n            MySunWind.LoadContent();\n            MyIceStorm.LoadContent();\n            MyHudNotification.LoadContent();\n            MyVoxelMaterials.LoadContent();\n            MyVoxelMaps.LoadContent();\n            MyDebrisField.LoadContent();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Part3\");\n\n            MyEditor.Static.LoadContent();\n            MyCamera.LoadContent();\n\n            // load editor controls also when game active, because we can enter editor during gameplay\n            if (IsEditorActive() || IsGameActive())\n            {\n                EditorControls.LoadContent();\n                if (IsEditorActive())\n                {\n                    EditorControls.AddEditorControlsToList(Controls);\n                }\n                //FoundationFactoryControls.LoadContent();\n            }\n\n            MyEditor.Static.LoadContent();\n            MyCamera.LoadContent();\n            MyPerformanceTimer.GuiScreenGamePlay_LoadContent.End();\n\n            MyEnvironmentMap.Reset();\n\n            m_assertWasCalledUnloadContentBeforeLoadContent = false;\n\n            //  Base load content must be called after child's load content\n            base.LoadContent();\n\n            //  Do GC collect as last step. Reason is that after we loaded new level, a lot of garbage is created and we want to clear it now and not wait until GC decides so.\n            //  Sleep is there because we want GC to finish before this background thread ends. We don't want tearing during main menu or game is displaying.\n            GC.Collect();\n            //Thread.Sleep(100);    //  Not needed anymore because we load on main thread and ther are no sound interferences\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyGuiScreenGamePlay.LoadContent - END\");\n        }\n\n        public override void UnloadData()\n        {\n            MyMwcLog.WriteLine(\"MyGuiScreenGamePlay.UnloadData - START\");\n            MyMwcLog.IncreaseIndent();\n\n            // duplicated call (called in UnloadContent)\n            //if (EditorControls != null)\n            //{\n            //    EditorControls.UnloadContent();\n            //}\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Cleanup missions\");\n            // Session.Init is not called so cleanup on sector enter\n            MyMissions.Unload();\n            //m_missionToStart = null; //we need it to load\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            MyRadar.UnloadData();\n            MyHud.UnloadData();\n            MyEditor.Static.UnloadData();\n\n            MyVoxelMaps.AutoRecalculateVoxelMaps = false;\n\n            MyEntities.UnloadData();\n\n            MyVoxelMaps.AutoRecalculateVoxelMaps = true;\n\n            MyExplosionDebrisVoxel.UnloadData();\n            MyExplosionDebrisModel.UnloadData();\n            MyUniversalLauncherShells.UnloadData();\n            MyCannonShots.UnloadData();\n            MyMissiles.UnloadData();\n            MyHologramShips.UnloadData();\n            MyHudNotification.ClearAllNotifications();\n            MyHudWarnings.UnloadData();\n            MyDebrisField.UnloadData();\n            MyNuclearExplosion.Unload();\n            MyEnemyTargeting.Unload();\n            MyPathfindingHelper.Unload();\n            MySmallShipBot.TotalAliveBots = 0;\n\n            // HOTFIX:\n            MyExplosions.UnloadData();\n            MyProjectiles.UnloadData();\n\n            //Lights needs to be after explosion, because explosion can keep them\n            MyLights.UnloadData();\n\n\n            if ((IsFlyThroughActive() == false) && (MyMwcFinalBuildConstants.ENABLE_TRAILER_SAVE == true))\n            {\n                MyTrailerSave.Save();\n            }\n\n            if (MyPhysics.physicsSystem != null)\n            {\n                MyPhysics.physicsSystem.DestroyPhysics();\n            }\n\n            MyWayPointGraph.UnloadData();\n            MyVoxelMaps.UnloadData();\n            MyVoxelPrecalc.UnloadData();\n            MyVoxelCacheRender.UnloadData();\n            MyVoxelCacheCellRenderHelper.UnloadData();\n            MyVoxelCacheData.UnloadData();\n            MyVoxelContentCellContents.UnloadData();\n            MyVoxelGenerator.UnloadData();\n            //MyVoxelMaterials.UnloadData();\n\n            MyDistantImpostors.UnloadData();\n\n            MyPrefabContainerManager.GetInstance().UnloadData();\n            MyDistantImpostors.UnloadData();\n            //MyModels.UnloadData();\n\n            //MyRender.UnloadData();\n            MyDialogues.UnloadData();\n            MyFriendlyFire.Unload();\n            MyShouts.UnloadData();\n\n            Parallel.Clean();\n\n            Static = null;\n            MyMwcLog.DecreaseIndent();\n            GC.Collect(2);\n            GC.Collect(1);\n            GC.Collect(0);\n\n\n            int modelMeshes2 = MyPerformanceCounter.PerAppLifetime.MyModelsMeshesCount;\n            int modelVertices2 = MyPerformanceCounter.PerAppLifetime.MyModelsVertexesCount;\n            int modelTriangles2 = MyPerformanceCounter.PerAppLifetime.MyModelsTrianglesCount;\n            MyPerformanceCounter.MyPerAppLifetime app = MyPerformanceCounter.PerAppLifetime;\n\n            // After data unload, render structures should be definitelly empty\n            //MyRender.AssertStructuresEmpty();\n\n            m_entity = null;\n            m_checkpoint = null;\n\n            //MySession.PlayerShip = null;\n\n            //var o = SharpDX.Diagnostics.ObjectTracker.FindActiveObjects();\n\n            MyMwcLog.WriteLine(\"MyGuiScreenGamePlay.UnloadData - END\");\n        }\n\n        //  IMPORTANT: This method will be called in background thread so don't mess with main thread objects!!!\n        //  UPDATE: called always when GDevice is disposed\n        public override void UnloadContent()\n        {\n            MyMwcLog.WriteLine(\"MyGuiScreenGamePlay.UnloadContent - START\");\n            MyMwcLog.IncreaseIndent();\n\n            base.UnloadContent();\n\n            m_assertWasCalledUnloadContentBeforeLoadContent = true;\n\n            MyBackgroundCube.UnloadContent();\n            MyHudSectorBorder.UnloadContent();\n            MyVoxelCacheData.UnloadContent();\n            MyVoxelCacheRender.UnloadContent();\n            MyVoxelMaterials.UnloadContent();\n            MyWayPoint.CleanBlockedEdges();\n\n            MyTransparentGeometry.UnloadContent();\n            MyExplosions.UnloadContent();\n            //MyModels.UnloadContent();\n            MyDecals.UnloadContent();\n            MyHud.UnloadContent();\n            MyHudGPS.UnloadContent();\n            MyCockpitGlassDecals.UnloadContent();\n            MyCockpitGlass.UnloadContent();\n            MyCockpitWeapons.UnloadContent();\n            MyModelSubObjects.UnloadContent();\n            MySunWind.UnloadContent();\n            MyMeteorWind.UnloadContent();\n            MyIceStorm.UnloadContent();\n\n            MyPrefabContainerManager.GetInstance().UnloadContent();\n            MyDistantImpostors.UnloadContent();\n\n            MyEditor.Static.UnloadContent();\n\n            if (EditorControls != null)\n            {\n                EditorControls.RemoveEditorControlsFromList(Controls);\n                EditorControls.UnloadContent();\n            }\n\n            MyEntities.OnEntityRemove -= new Action<MyEntity>(MyEntities_OnEntityRemove);\n\n            //MyRender.UnloadContent();\n            MyRender.Clear();\n\n            MySimpleObjectDraw.UnloadContent();\n\n#if DETECT_LEAKS            \n            MyTextureManager.UnloadContent();\n            MyModels.UnloadContent();\n            MyRender.UnloadContent();              \n#endif\n\n            MyAudio.UnloadContent();\n            //if (FoundationFactoryControls != null) FoundationFactoryControls.UnloadContent();\n\n            //  Do GC collect as last step. Reason is that after we loaded new level, a lot of garbage is created and we want to clear it now and not wait until GC decides so.\n            GC.Collect();\n\n            //here, nothing can be allocated in VM except device and core stuff\n#if DETECT_LEAKS   \n            //MyTexture2D tex = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Loading\");\n\n            var o = SharpDX.Diagnostics.ObjectTracker.FindActiveObjects();\n#endif\n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyGuiScreenGamePlay.UnloadContent - END\");\n        }\n\n        private bool IsTypeEditorGodMode(MyGuiScreenGamePlayType? type)\n        {\n            if (type == null)\n                return false;\n            switch (type.Value)\n            {\n                case MyGuiScreenGamePlayType.EDITOR_STORY:\n                case MyGuiScreenGamePlayType.EDITOR_MMO:\n                case MyGuiScreenGamePlayType.EDITOR_SANDBOX:\n                    return true;\n                    break;\n            }\n            return false;\n        }\n\n        public void TrySwitchBetweenGameAndEditor()\n        {\n            //from game -> to god editor\n            if (IsGameActive() && IsTypeEditorGodMode(m_previousType))\n            {\n                MySpectator.Position = MySession.PlayerShip.GetPosition() + (50 * MySession.PlayerShip.WorldMatrix.Up);\n                MySpectator.Target = MySession.PlayerShip.GetPosition();\n                MyDialogues.Stop();\n                MyAudio.Stop();//stop all 3d sounds\n                CameraAttachedTo = MyCameraAttachedToEnum.Spectator;\n                MyCamera.SetViewMatrix(MySpectator.GetViewMatrix());\n                m_type = m_previousType.Value;\n                m_previousType = null;\n                MyEditor.Static.SetActive(true);\n                EditorControls.AddEditorControlsToList(Controls);\n\n                // Reset spawnpoints, delete their bots from scene\n                foreach (var spawnpoint in MyEntities.GetEntities().OfType<MySpawnPoint>().ToArray())\n                {\n                    spawnpoint.Reset();\n                }\n\n                //MyEditor.DisablePhysicsAndResetStatesOnAllObjectsInSector();// also ensure we stop all updates and all objects newly inserted into sector are with phyisics defaultly off\n                if (MyHudSectorBorder.Enabled != m_hudSectorBorderInEditor)\n                    MyHudSectorBorder.SwitchSectorBorderVisibility();\n\n                m_wheelControlMenu.HideScreenIfPossible();\n                MyCamera.Zoom.ResetZoom();\n            }\n            else if (IsTypeEditorGodMode(m_type) && m_previousType == null)\n            {\n                //from god-editor to -> gameplay\n                //we need to enable physics\n                //be sure we dont entry in game with any objects in collision                \n                //because when you have selected entities, then they are not colliding, so we must clear selection and handle colliding entities now\n                List<MyEntity> tempSelectedEntities = MyEditorGizmo.SelectedEntities.ToList();\n                MyEditorGizmo.ClearSelection();\n                if (MyEditor.Static.CollidingElements.Count == 0)\n                {\n                    m_previousType = m_type;\n                    m_type = MyGuiScreenGamePlayType.GAME_SANDBOX;\n                    CameraAttachedTo = MySession.PlayerShip != null ? MySession.PlayerShip.Config.ViewMode.GetCameraMode() : MyCameraAttachedToEnum.PlayerMinerShip;\n                    MyEditor.Static.SetActive(false);\n                    EditorControls.RemoveEditorControlsFromList(Controls);\n\n                    //MyEditor.EnablePhysicsOnAllActiveObjectsInSector();\n                    // sector borders disabled by default in gameplay\n                    m_hudSectorBorderInEditor = MyHudSectorBorder.Enabled;\n                    if (MyHudSectorBorder.Enabled == true)\n                        MyHudSectorBorder.SwitchSectorBorderVisibility();\n\n                    m_wheelControlMenu.HideScreenIfPossible();\n\n                    if (MyVideoModeManager.IsHardwareCursorUsed())\n                        MyGuiInput.SetMouseToScreenCenter();\n\n                    MyCamera.Zoom.ResetZoom();\n\n                    // Reset spawnpoints, delete their bots from scene\n                    foreach (var spawnpoint in MyEntities.GetEntities().OfType<MySpawnPoint>().ToArray())\n                    {\n                        spawnpoint.ResetBotsSpawnTime();\n                    }\n                }\n                else\n                {\n                    MyEditorGizmo.AddEntitiesToSelection(tempSelectedEntities);\n                    MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.FixCollisions, MyTextsWrapperEnum.MessageBoxCaptionError, MyTextsWrapperEnum.Ok, null));\n                }\n            }\n            else if (m_type != MyGuiScreenGamePlayType.INGAME_EDITOR)\n            {\n                // 0006155: Disable builder mode (press 0 when you close to mother ship)\n                if (!MyFakes.ENABLE_BUILDER_MODE)\n                {\n                    return;\n                }\n\n                // from normal game to ingame editor\n                MySmallShip playersSmallShip = MySession.PlayerShip as MySmallShip;\n                if (playersSmallShip == null)\n                {\n                    return;\n                }\n                MyPrefabFoundationFactory foundationFactory = null;\n                MyEntity detectedPrefabContainer = playersSmallShip.BuildDetector.GetNearestEntity();\n                if (detectedPrefabContainer != null)\n                {\n                    MyPrefabContainer prefabContainer = detectedPrefabContainer as MyPrefabContainer;\n                    if (prefabContainer.ContainsPrefab(PrefabTypesFlagEnum.FoundationFactory))\n                    {\n                        foundationFactory = prefabContainer.GetPrefabs(CategoryTypesEnum.FOUNDATION_FACTORY)[0] as MyPrefabFoundationFactory;\n                    }\n                }\n                if (foundationFactory == null)\n                {\n                    if (FoundationFactoryDropEnabled)\n                    {\n                        m_invokeGameEditorSwitch = false;\n                        return;\n                    }\n\n                    bool addFoundationFactoryResult;\n                    foundationFactory = MyPrefabFoundationFactory.TryCreateFoundationFactory(MySession.Static.Player, out addFoundationFactoryResult);\n                    if (!addFoundationFactoryResult)\n                    {\n                        MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.NotificationYouHaveNoFoundationFactory, MyTextsWrapperEnum.TitleYouCantBuild, MyTextsWrapperEnum.Ok, null));\n                        m_invokeGameEditorSwitch = false;\n                        return;\n                    }\n                }\n\n                MySmallShip playerShip = MySession.PlayerShip;\n\n                MySpectator.Position = playerShip.GetPosition() + (50 * playerShip.WorldMatrix.Up);\n                MySpectator.Target = playerShip.GetPosition();\n                CameraAttachedTo = MyCameraAttachedToEnum.Spectator;\n                MyCamera.SetViewMatrix(MySpectator.GetViewMatrix());\n                MyAudio.Stop();//stop all 3d sounds\n                m_previousType = m_type;\n                m_type = MyGuiScreenGamePlayType.INGAME_EDITOR;\n                MyEditor.Static.SetActive(true);\n                //EditorControls.AddEditorControlsToList(ref Controls);\n                //FoundationFactoryControls.AddEditorControlsToList(ref Controls);\n                EditorControls.AddEditorControlsToList(Controls);\n\n                MyEditor.Static.EnterInGameEditMode(foundationFactory);// this will enter my own container and lock it                 \n\n                // sector borders enabled by default in editor\n                if (MyHudSectorBorder.Enabled == false)\n                    MyHudSectorBorder.SwitchSectorBorderVisibility();\n\n                m_wheelControlMenu.HideScreenIfPossible();\n                MyCamera.Zoom.ResetZoom();\n            }\n            else\n            {\n                //from ingame editor back to the game\n                //beause when you have selected entities, then they are not colliding, so we must clear selection and handle colliding entities now\n                List<MyEntity> tempSelectedEntities = MyEditorGizmo.SelectedEntities.ToList();\n                MyEditorGizmo.ClearSelection();\n                if (MyEditor.Static.CollidingElements.Count == 0)\n                {\n\n                    m_type = m_previousType.Value;\n                    m_previousType = null;\n                    CameraAttachedTo = MySession.PlayerShip != null ? MySession.PlayerShip.Config.ViewMode.GetCameraMode() : MyCameraAttachedToEnum.PlayerMinerShip;\n                    MyEditor.Static.SetActive(false);\n                    //EditorControls.RemoveEditorControlsFromList(ref Controls);\n                    //FoundationFactoryControls.RemoveEditorControlsFromList(ref Controls);\n                    EditorControls.RemoveEditorControlsFromList(Controls);\n                    MyEditor.Static.ExitInGameEditMode();\n\n                    // sector borders disabled by default in gameplay\n                    if (MyHudSectorBorder.Enabled == true)\n                        MyHudSectorBorder.SwitchSectorBorderVisibility();\n\n                    m_wheelControlMenu.HideScreenIfPossible();\n                    MyCamera.Zoom.ResetZoom();\n\n                    if (MyVideoModeManager.IsHardwareCursorUsed())\n                        MyGuiInput.SetMouseToScreenCenter();\n                }\n                else\n                {\n                    MyEditorGizmo.AddEntitiesToSelection(tempSelectedEntities);\n                    MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.FixCollisions, MyTextsWrapperEnum.MessageBoxCaptionError, MyTextsWrapperEnum.Ok, null));\n                }\n            }\n\n            m_invokeGameEditorSwitch = false;\n        }\n\n        string nextTrailerName = \"000\";\n\n        Matrix latestTrailerStart;\n\n        private void RestartTrailer(bool saveCurrentRecording, bool resetPos)\n        {\n            string text = saveCurrentRecording ? \"Trailer saved & restarted, recording...\" : \"Trailer restarted, recording...\";\n\n            MyHudNotification.AddNotification(new MyHudNotification.MyNotification(text, 3000));\n            if (saveCurrentRecording)\n            {\n                MyTrailerSave.Save();\n                MyTrailerSave.RemoveTrackedObjects();\n            }\n            string freeTrailerName;\n            Matrix? lastPos;\n            MyTrailerLoad.LoadFromUserFolder(out freeTrailerName, out lastPos);\n            if (resetPos && lastPos.HasValue)\n            {\n                var m = lastPos.Value;\n                m.Translation += m.Backward * 15;\n                MySession.PlayerShip.WorldMatrix = m;\n            }\n            nextTrailerName = freeTrailerName;\n            StartTrailerRecording();\n        }\n\n        private void StartTrailerRecording()\n        {\n            //MyHudNotification.AddNotification(new MyHudNotification.MyNotification(\"Recording started\", 3000));\n            MyTrailerSave.RemoveTrackedObjects();\n            MyTrailerSave.ResetTicks();\n            MyTrailerSave.AttachPhysObject(nextTrailerName, MySession.PlayerShip);\n        }\n\n        public bool DisableBackCamera { get; set; }\n        //  This method is called every update (but only if application has focus)\n        public override void HandleUnhandledInput(MyGuiInput input, bool receivedFocusInThisUpdate)\n        {\n            //  This is protection against situation when user clicks on CONTINUE in menu, but don't release the button quickly, so in gameplay screen\n            //  it continues with shoting. So in this case he must release buttons and then press again if he want to shot.\n            if (m_handleInputMouseKeysReleased == false)\n            {\n                if ((input.IsLeftMouseReleased()) && (input.IsRightMouseReleased()))\n                {\n                    m_handleInputMouseKeysReleased = true;\n                }\n            }\n\n            //Set if ammo select menu or config menu is enable\n            m_selectAmmoMenu.IsEnabled = !m_wheelControlMenu.Visible && IsControlledPlayerShip;\n            m_wheelControlMenu.IsEnable = !m_selectAmmoMenu.Visible && IsControlledPlayerShip;\n\n            if (IsControlledPlayerShip && !m_selectAmmoMenu.IsEnabled && !m_wheelControlMenu.IsEnable)\n            {\n                m_selectAmmoMenu.IsEnabled = true;\n            }\n\n            //  Launch main menu\n            if (!m_wheelControlMenu.Visible && !IsSelectAmmoVisible() && input.IsNewKeyPress(Keys.Escape) && !(IsEditorActive() && (EditorControls.TryExitSelected() || EditorControls.TryExitSelectionMode())))\n            {\n                MyAudio.AddCue2D(MySoundCuesEnum.GuiMouseClick);\n\n                //Allow changing video options from game in DX version\n                MyGuiScreenMainMenu.AddMainMenu(true);\n                //MyGuiScreenMainMenu.AddMainMenu(false);\n\n                DrawHud = false;\n\n                MySystemTimer.SetMinimalResolution();\n            }\n\n\n            MyHudSectorBorder.SwitchToDraw();\n\n            // Switch from player ship to ingame editor and back\n            if (IsGameActive() || IsEditorActive())\n            {\n                if (!input.IsAnyAltPress())\n                {\n                    if ((input.IsNewKeyPress(Keys.NumPad0) || input.IsNewKeyPress(Keys.D0)) && (GetSessionType() == MyMwcStartSessionRequestTypeEnum.EDITOR_STORY || GetSessionType() == MyMwcStartSessionRequestTypeEnum.EDITOR_SANDBOX || GetSessionType() == MyMwcStartSessionRequestTypeEnum.EDITOR_MMO))\n                    {\n                        ReturnControlToPlayerShip();\n                        m_invokeGameEditorSwitch = true;\n                    }\n                }\n            }\n\n            if (CameraAttachedTo == MyCameraAttachedToEnum.PlayerMinerShip_ThirdPersonFollowing)\n            {\n                if (input.PreviousMouseScrollWheelValue() < input.MouseScrollWheelValue())\n                {\n                    ThirdPersonCameraDelta /= 1.1f;\n                }\n                else if (input.PreviousMouseScrollWheelValue() > input.MouseScrollWheelValue())\n                {\n                    ThirdPersonCameraDelta *= 1.1f;\n                }\n            }\n\n            if (CameraAttachedTo == MyCameraAttachedToEnum.Spectator)\n            {\n                if (input.PreviousMouseScrollWheelValue() < input.MouseScrollWheelValue())\n                {\n                    MySpectator.SpeedMode = Math.Min(MySpectator.SpeedMode * 1.5f, MyEditorConstants.MAX_EDITOR_CAMERA_MOVE_MULTIPLIER);\n                }\n                else if (input.PreviousMouseScrollWheelValue() > input.MouseScrollWheelValue())\n                {\n                    MySpectator.SpeedMode = Math.Max(MySpectator.SpeedMode / 1.5f, MyEditorConstants.MIN_EDITOR_CAMERA_MOVE_MULTIPLIER);\n                }\n            }\n\n            if (CameraAttachedTo == MyCameraAttachedToEnum.PlayerMinerShip_ThirdPersonDynamic &&\n                !m_wheelControlMenu.Visible && !IsSelectAmmoVisible())  // don't zoom if wheel or ammo menu is visible\n            {\n                float distance = MyThirdPersonSpectator.LookAt.Length();\n                float currentDistance = (MyThirdPersonSpectator.Target - MyThirdPersonSpectator.DesiredPosition).Length();\n                float newDistance = 0;\n\n                if (input.PreviousMouseScrollWheelValue() < input.MouseScrollWheelValue())\n                {\n                    newDistance = currentDistance / 1.2f;\n                }\n                else if (input.PreviousMouseScrollWheelValue() > input.MouseScrollWheelValue())\n                {\n                    newDistance = distance * 1.2f;\n                }\n\n                if (newDistance > 0)\n                {\n                    // Limit distance from ship\n                    newDistance = MathHelper.Clamp(newDistance, MyThirdPersonSpectator.GetMinDistance(), MyThirdPersonSpectator.MAX_DISTANCE);\n                    MyThirdPersonSpectator.LookAt *= newDistance / distance;\n                }\n\n                //MyThirdPersonSpectator.LookAt = new Vector3(0, 130, 65);\n            }\n\n            #region Universal developer keys\n\n            if (MyGuiInput.ENABLE_DEVELOPER_KEYS)\n            {\n                if (input.IsNewKeyPress(Keys.Multiply))\n                {\n                    //MyHudNotification.AddNotification(new MyHudNotification.MyNotification(\"Searching for most complex region...\" , 3000));\n                    //int[] res = MyEntities.getMostComplexCameraView(128);\n                    //MyHudNotification.AddNotification(new MyHudNotification.MyNotification(\"X \" + res[0] + \" Y\" + res[1] + \" Z\" + res[2], 3000));\n                    //MyEntities.getMostComplexCameraView(128);\n                }\n                //if (MyFakes.ENABLE_MULTIPLAYER && input.IsAnyShiftKeyPressed() && input.IsNewKeyPress(Keys.PageUp))\n                //{\n                //    MyMultiplayer.HostGame(null);\n                //    MyMultiplayer.Static.OnNotification = new Action<MyTextsWrapperEnum, object[]>(Static_OnNotification);\n                //}\n\n                if (MyMwcFinalBuildConstants.IS_DEVELOP && input.IsNewKeyPress(Keys.F5) && input.IsAnyCtrlKeyPressed())\n                {\n                    MySession.Static.SaveLastCheckpoint(false);\n                }\n\n                //  Show sector border\n                if (MyMwcFinalBuildConstants.IS_DEVELOP && input.IsNewKeyPress(Keys.U))\n                {\n                    if (MyFakes.MWBUILDER)\n                    {\n                        if (input.IsAnyShiftKeyPressed())\n                        {\n                            MyEditorGrid.SwitchGridOrientation();\n                        }\n                        else\n                        {\n                            MyEditorGrid.IsGridActive = !MyEditorGrid.IsGridActive;\n                        }\n                    }\n                    else\n                    {\n                        MyHudSectorBorder.SwitchSectorBorderVisibility();\n                    }\n                }\n\n                if (MyMwcFinalBuildConstants.ENABLE_TRAILER_SAVE && (MyGuiScreenGamePlay.Static.IsGameActive() || MyGuiScreenGamePlay.Static.IsEditorActive())) // Trailer controls\n                {\n                    //if (input.IsKeyPress(Keys.NumPad5) && input.IsAnyShiftKeyPressed()) // SHIFT + Num5 - Set trailer start position\n                    //{\n                    //    MyHudNotification.AddNotification(new MyHudNotification.MyNotification(\"Trailer start set\", 5));\n                    //    trailerStartPosition = MySession.PlayerShip.WorldMatrix;\n                    //}\n\n                    if (input.IsNewKeyPress(Keys.NumPad5) && !input.IsAnyShiftKeyPressed()) // Num5 - Restart & record...\n                    {\n                        RestartTrailer(false, false);\n                    }\n\n                    if (input.IsNewKeyPress(Keys.NumPad7) && !input.IsAnyShiftKeyPressed()) // Num7 - Restart & teleport & record...\n                    {\n                        RestartTrailer(false, true);\n                        //var translation = Matrix.CreateTranslation(MySession.PlayerShip.WorldMatrix.Translation + MyMwcUtils.Normalize(MySession.PlayerShip.WorldMatrix.Backward) * 10);\n                        //MySession.PlayerShip.WorldMatrix *= translation;\n                    }\n\n                    if (input.IsNewKeyPress(Keys.NumPad9) && !input.IsAnyShiftKeyPressed()) // Num9 - Restart save & record...\n                    {\n                        RestartTrailer(true, true);\n                    }\n                }\n\n                if (input.IsNewKeyPress(Keys.S) && input.IsAnyAltKeyPressed() && input.IsAnyCtrlKeyPressed())\n                {\n                    MyEditor.SaveSelectedVoxelMap(input.IsAnyShiftKeyPressed());\n                }\n\n                if (input.IsNewKeyPress(Keys.Delete) && input.IsAnyCtrlKeyPressed())\n                {\n                    if (MyMissions.ActiveMission != null)\n                    {\n                        MyObjective.SkipSubmission = true;\n                    }\n                }\n\n                if (input.IsNewKeyPress(Keys.End) && input.IsAnyCtrlKeyPressed())\n                {\n                    if (MyMissions.ActiveMission != null && MyMissions.ActiveMission.ActiveObjectives.Count > 0)\n                    {\n                        var entityId = MyMissions.ActiveMission.ActiveObjectives[0].Location.LocationEntityIdentifier.LocationEntityId;\n                        MyEntity entity;\n                        if (entityId.HasValue && MyEntities.TryGetEntityById(entityId.ToEntityId().Value, out entity))\n                        {\n                            MySession.PlayerShip.SetPosition(entity.GetPosition());\n                        }\n                    }\n                    else\n                    {\n                        MyEntity entity;\n                        //if (MyEntities.TryGetEntityByName(MyMissionBase.MyMissionLocation.MADELYN_HANGAR, out entity))\n                        if (MyEntities.TryGetEntityByName(\"Madelyn\", out entity))\n                        {\n                            MySession.PlayerShip.SetPosition(entity.GetPosition());\n                        }\n                    }\n                }\n\n                if (input.IsNewKeyPress(Keys.OemTilde) && input.IsAnyCtrlKeyPressed())\n                {\n                    var ship = MySession.Static.Player.Ship as MySmallShip;\n                    ship.DoDamage(1000, 1000, 0, MyDamageType.Explosion, MyAmmoType.Unknown, null);\n                    MySession.Static.Player.AddHealth(-MySession.Static.Player.Health, null);\n                }\n\n                if ((input.IsNewKeyPress(Keys.OemBackslash) || input.IsNewKeyPress(Keys.OemPipe)) && input.IsAnyShiftKeyPressed())\n                {\n                    MyLine line = new MyLine(MyCamera.Position, MyCamera.Position + MyCamera.ForwardVector * 25000, false);\n                    var intersection = MyEntities.GetIntersectionWithLine(ref line, MySession.Static.Player.Ship, null, true);\n                    if (intersection.HasValue)\n                    {\n                        var target = intersection.Value.IntersectionPointInWorldSpace;\n                        target -= MyCamera.ForwardVector * MySession.Static.Player.Ship.LocalVolume.Radius * 20;\n                        MySession.Static.Player.Ship.SetPosition(target);\n                    }\n                }\n\n                if (input.IsNewKeyPress(Keys.NumLock))\n                {\n                    var player = MySession.Static.Player;\n\n                    player.RestoreHealth();\n\n                    var ship = MySession.Static.Player.Ship as MySmallShip;\n                    if (ship != null)\n                    {\n                        ship.AddHealth(ship.MaxHealth);\n                        ship.ArmorHealth = ship.MaxArmorHealth;\n\n                        ship.Oxygen = ship.MaxOxygen;\n                        ship.Fuel = ship.MaxFuel;\n                        ship.AfterburnerStatus = 1;\n\n                        foreach (Inventory.MyInventoryItem item in ship.Weapons.AmmoInventoryItems.GetAmmoInventoryItems())\n                        {\n                            item.Amount = item.MaxAmount;\n                        }\n                    }\n                }\n\n                if (input.IsAnyControlPress() && input.IsAnyShiftPress() && input.IsNewKeyPress(Keys.F8))\n                {\n                    MyGuiPreviewRenderer renderer = MyGuiManager.GetPreviewRenderer();\n                    renderer.CreatePreviewsToFiles(@\"C:\\Temp\", MyHudConstants.PREFAB_PREVIEW_SIZE);\n                }\n\n                if (input.IsNewKeyPress(Keys.Space) && input.IsAnyCtrlKeyPressed())\n                {\n                    if (CameraAttachedTo == MyCameraAttachedToEnum.Spectator)\n                    {\n                        // we try to move ship to the spot, then we check if it colides if yes we move it back.\n                        //\n                        Vector3 oldPos = MySession.PlayerShip.GetPosition();\n                        MySession.PlayerShip.SetPosition(MySpectator.Position);\n\n                        //Move player ship to camera position\n                        MyEntities.CollisionsElements.Clear();\n                        MinerWars.AppCode.Game.Physics.MyPhysicsBody rBody = MySession.PlayerShip.Physics;\n                        if (rBody.GetRBElementList().Count > 0)\n                        {\n                            // we expect only one rigid body (box)\n                            MyEntities.GetCollisionListForElement(rBody.GetRBElementList().First());\n                            BoundingSphere bsphere = MySession.PlayerShip.WorldVolume;\n\n                            if (MyEntities.CollisionsElements.Count > 0 || MyVoxelMaps.GetOverlappingWithSphere(ref bsphere) != null)\n                            {\n\n                                MySession.PlayerShip.SetPosition(oldPos);\n                                //maybe warning here or sound is enough? \n                                MyAudio.AddCue2D(MySoundCuesEnum.GuiEditorObjectMoveInvalid);\n                            }\n\n                        }\n                        else\n                            Debug.Assert(false);// no physical box in player ship\n                    }\n                }\n\n                if (input.IsNewKeyPress(Keys.Space) && input.IsAnyShiftKeyPressed())\n                {\n                    if (CameraAttachedTo == MyCameraAttachedToEnum.Spectator)\n                    {\n                        MySmallShip playerShip = MySession.PlayerShip;\n\n                        //Move Spectator to player ship position                        \n                        MySpectator.Position = playerShip.GetPosition() +\n                            ThirdPersonCameraDelta * playerShip.GetWorldRotation().Up +\n                            ThirdPersonCameraDelta * -playerShip.GetWorldRotation().Forward;\n                        MySpectator.Target = playerShip.GetPosition();\n                    }\n                }\n\n                //  Save check point - allowed only for story editors\n                // DISABLED, now done automatically\n                //if (IsGameActive() && input.IsKeyPress(Keys.RightShift) && input.IsNewKeyPress(Keys.F2) &&\n                //    MyClientServer.LoggedPlayer != null && MyClientServer.LoggedPlayer.GetCanAccessEditorForStory())\n                //{\n                //    MyGuiManager.AddScreen(new MyGuiScreenSaveCheckpoint());\n                //}\n\n                if (!MyModelsStatisticsConstants.GET_MODEL_STATISTICS_AUTOMATICALLY && input.IsNewKeyPress(Keys.F10) && input.IsAnyShiftKeyPressed())\n                {\n                    MyModels.LogUsageInformation();\n                }\n                if (!MyModelsStatisticsConstants.GET_MODEL_STATISTICS_AUTOMATICALLY && input.IsNewKeyPress(Keys.F10) && input.IsAnyAltKeyPressed())\n                {\n                    MyModels.CheckAllModels();\n                    //MyModels.MergeLogFiles();\n                }\n\n                /*if (input.IsNewKeyPress(Keys.F10) && input.IsAnyCtrlKeyPressed() && !MyModelsStatisticsConstants.GET_MODEL_STATISTICS_AUTOMATICALLY)\n                {\n                    MyModelsStatisticsConstants.GET_MODEL_STATISTICS_AUTOMATICALLY = true;\n                    if (MyModelsStatisticsConstants.MISSIONS_TO_GET_MODEL_STATISTICS_FROM.Length == 0)\n                    {\n                        int i = 0;\n                        MyModelsStatisticsConstants.MISSIONS_TO_GET_MODEL_STATISTICS_FROM = new Missions.MyMissionID[Missions.MyMissions.Missions.Count];\n                        foreach (var mission in MyMissions.Missions.Values.OfType<MyMission>().OrderBy(x => x.Name.ToString()))\n                        {\n                            if (i >= 12)\n                                MyModelsStatisticsConstants.MISSIONS_TO_GET_MODEL_STATISTICS_FROM[i] = mission.ID;\n                            i++;\n                        }\n                    }\n                    GUI.MyGuiScreenMainMenu.StartMission(MyModelsStatisticsConstants.MISSIONS_TO_GET_MODEL_STATISTICS_FROM[0]);\n                }*/\n\n                // Voxel import\n                if (MyFakes.VOXEL_IMPORT && input.IsNewKeyPress(Keys.PageUp))\n                {\n                    if (!input.IsAnyShiftKeyPressed())\n                    {\n                        MyVoxelMap voxelMap = new MyVoxelMap();\n                        //{\n                        //    // TODO: merge\n                        //    //VoxelMaterial = MyMwcVoxelMaterialsEnum.Stone_01,\n                        //    Size = MyFakes.VOXEL_IMPORT_SIZE\n                        //};\n                        voxelMap.Init(Vector3.Zero, MyFakes.VOXEL_IMPORT_SIZE, MyMwcVoxelMaterialsEnum.Stone_01);\n\n                        MyModel model = new MyModel(MyFakes.VOXEL_IMPORT_MODEL, MyMeshDrawTechnique.MESH, MyModelsEnum.ExplosionDebrisVoxel);\n                        model.LoadData();\n\n                        MyVoxelImport.Run(voxelMap, model, MyVoxelImportOptions.KeepAspectRatio);\n                        voxelMap.SaveVoxelContents(Path.Combine(MyMinerGame.Static.RootDirectory, \"VoxelMaps\", MyVoxelFiles.ExportFile + \".vox\"));\n\n                        // Reload sector\n                        MyGuiScreenGamePlay.Static.Restart();\n                    }\n                    else\n                    {\n                        int[] sizes = new int[] { 64, 128, 256, 512 };\n\n                        List<MyMwcVector3Int> voxelSizes = new List<MyMwcVector3Int>();\n\n                        for (int x = 0; x < sizes.Length; x++)\n                        {\n                            int lo = Math.Max(x - 1, 0);\n                            int hi = Math.Min(x + 2, sizes.Length);\n\n                            for (int y = lo; y < hi; y++)\n                            {\n                                for (int z = lo; z < hi; z++)\n                                {\n                                    voxelSizes.Add(new MyMwcVector3Int(sizes[x], sizes[y], sizes[z]));\n                                }\n                            }\n                        }\n\n                        foreach (var size in voxelSizes)\n                        {\n                            MyVoxelMap voxelMap = new MyVoxelMap();\n                            voxelMap.Init(Vector3.Zero, size, MyMwcVoxelMaterialsEnum.Stone_01);\n\n                            MyVoxelImport.Fill(voxelMap);\n                            voxelMap.SaveVoxelContents(Path.Combine(MyMinerGame.Static.RootDirectory, \"VoxelMaps\", String.Format(\"Cube_{0}x{1}x{2}.vox\", size.X, size.Y, size.Z)));\n                            MyEntities.Remove(voxelMap);\n                            voxelMap.MarkForClose();\n                            GC.Collect();\n                        }\n\n                        // Reload sector\n                        MyGuiScreenGamePlay.Static.Restart();\n                    }\n                }\n\n\n                if (input.IsNewKeyPress(Keys.L) && input.IsAnyCtrlKeyPressed() && input.IsAnyShiftKeyPressed())\n                {\n                    if (MyMissions.ActiveMission != null && MyMissions.ActiveMission.ActiveObjectives.Count > 0 && MyMissions.ActiveMission.ActiveObjectives[0].Location != null && MyMissions.ActiveMission.ActiveObjectives[0].Location.Entity != null)\n                    {\n                        MySpectator.Position = MyMissions.ActiveMission.ActiveObjectives[0].Location.Entity.GetPosition();\n\n                    }\n                }\n\n                //  Start sun wind\n                if (input.IsNewKeyPress(Keys.F3))\n                {\n                    //Multiplayer_EnterGame(new MyEventEnterGame() { PlayerInfo = new MyPlayerInfo() { DisplayName = \"Test\" } });\n                    //MyDialogues.Play(Audio.Dialogues.MyDialogueEnum.TEST);\n                    MyGlobalEvents.StartGlobalEvent(MyGlobalEventEnum.SunWind);\n                    //MyGuiManager.AddScreen(new MyGuiScreenMission(MyMissions.ActiveMission));\n                    //MySession.PlayerShip.DoDamage(0, 1000000, 0, MyDamageType.Unknown, MyAmmoType.Unknown, null);\n                    //MyInventory.GenerateDebugInventoryItemsInfo();\n                    //MyAmmoConstants.GenerateDebugAmmoTypeInfo();\n                    if (MyFakes.ENABLE_DEBUG_INFLUENCE_SPHERES_SOUNDS)\n                    {\n                        if (input.IsKeyPress(Keys.LeftAlt))\n                        {\n                            MyInfluenceSphere.UpdateMaxVolume(false);\n                        }\n                        else if (input.IsKeyPress(Keys.RightAlt))\n                        {\n                            MyInfluenceSphere.UpdateMaxVolume(true);\n                        }\n                        else\n                        {\n                            MyInfluenceSphere.SwitchToNextSound(!input.IsAnyShiftKeyPressed());\n                        }\n                    }\n                }\n\n                //Set camera to player\n                if (input.IsNewKeyPress(Keys.F6))\n                {\n                    TryChangeCameraAttachedTo(MyCameraAttachedToEnum.PlayerMinerShip);\n                }\n\n                //Set camera to following third person\n                if (input.IsNewKeyPress(Keys.F7))\n                {\n                    TryChangeCameraAttachedTo(MyCameraAttachedToEnum.PlayerMinerShip_ThirdPersonFollowing);\n                }\n\n                //Set camera to spectator\n                if (input.IsNewKeyPress(Keys.F8))//&& TryChangeCameraAttachedTo(MyCameraAttachedToEnum.Spectator))\n                {\n                    CameraAttachedTo = MyCameraAttachedToEnum.Spectator;\n                    if (input.IsAnyCtrlKeyPressed())\n                    {\n                        MySpectator.Position = MySession.PlayerShip.GetPosition() + ThirdPersonCameraDelta;\n                        MySpectator.Target = MySession.PlayerShip.GetPosition();\n                    }\n                }\n\n                //Set camera to static third person\n                if (input.IsNewKeyPress(Keys.F9) && TryChangeCameraAttachedTo(MyCameraAttachedToEnum.PlayerMinerShip_ThirdPersonStatic))\n                {\n                    if (input.IsAnyCtrlKeyPressed())\n                    {\n                        MySpectator.Position = MySession.PlayerShip.GetPosition() + ThirdPersonCameraDelta;\n                        MySpectator.Target = MySession.PlayerShip.GetPosition();\n                    }\n                }\n\n                if (input.IsNewKeyPress(Keys.F10) /*&& input.IsAnyCtrlKeyPressed()*/ && TryChangeCameraAttachedTo(MyCameraAttachedToEnum.BotMinerShip))\n                {\n                    //Find nearest bot and attach him\n                    BoundingFrustum boundingFrustum = MyCamera.GetBoundingFrustum();\n                    List<MyEntity> entities = new List<MyEntity>();\n                    MyEntities.GetAllIntersectionWithBoundingFrustum_UNOPTIMIZED(ref boundingFrustum, entities);\n                    MySmallShipBot closestBot = null;\n                    foreach (MyEntity entity in entities)\n                    {\n                        if (entity is MySmallShipBot)\n                        {\n                            if (closestBot == null)\n                            {\n                                closestBot = entity as MySmallShipBot;\n                                continue;\n                            }\n\n                            if (Vector3.Distance(MyCamera.Position, entity.GetPosition()) < Vector3.Distance(MyCamera.Position, closestBot.GetPosition()))\n                            {\n                                closestBot = entity as MySmallShipBot;\n                            }\n                        }\n                    }\n                    MyGuiScreenGamePlay.Static.ShipForSimpleTesting = closestBot;\n                }\n            }\n\n            #endregion\n\n            #region Game/editor keys\n\n            if ((IsGameActive() || IsEditorActive()) && !MyEditorBase.IsEditorActive)\n            {\n                //  Turn reflector on/off\n                if (input.IsNewGameControlPressed(MyGameControlEnums.HEADLIGHTS))\n                {\n                    if (IsControlledPlayerShip)\n                    {\n                        MySession.PlayerShip.Config.ReflectorLight.ChangeValueUp();\n                    }\n\n                    if (IsControlledDrone)\n                    {\n                        ControlledDrone.Config.ReflectorLight.ChangeValueUp();\n                    }\n                }\n\n                //  Move and rotate player or camera\n                MoveAndRotatePlayerOrCamera(input);\n            }\n\n            #endregion\n\n            #region Game keys that work only when player is alive\n\n            if (IsGameActive() && IsFlyThroughActive() == false && MySession.Static != null && MySession.Static.Player != null && !MySession.Static.Player.IsDead())\n            {\n                //  Open inventory\n                if (input.IsNewGameControlPressed(MyGameControlEnums.INVENTORY))\n                {\n                    if (IsControlledPlayerShip && !MySession.PlayerShip.IsDead() && !MySession.PlayerShip.IsPilotDead())\n                    {\n                        MyGuiScreenInventoryType inventoryType;\n                        if (IsTypeEditorGodMode(m_previousType) &&\n                            MySession.PlayerShip.TradeDetector.GetNearestEntity() == null ||\n                            Static.IsCheatEnabled(MyGameplayCheatsEnum.UNLIMITED_TRADING))\n                        {\n                            inventoryType = MyGuiScreenInventoryType.GodEditor;\n                        }\n                        else\n                        {\n                            inventoryType = MyGuiScreenInventoryType.Game;\n                        }\n                        if (!MyMultiplayerGameplay.IsRunning)\n                        {\n                            var inventoryScreen = MyGuiScreenInventoryManagerForGame.OpenInventory(inventoryType);\n                            MyGuiManager.AddScreen(inventoryScreen);\n                        }\n                        else\n                        {\n                            OpenInventoryMultiplayer(inventoryType);\n                        }\n                    }\n                }\n\n                // Target locking\n                if (input.IsNewGameControlPressed(MyGameControlEnums.PREV_TARGET))\n                    MyEnemyTargeting.SwitchNextTarget(false);\n                if (input.IsNewGameControlPressed(MyGameControlEnums.NEXT_TARGET))\n                    MyEnemyTargeting.SwitchNextTarget(true);\n\n                // Bot follow / hold position\n                if (input.IsNewGameControlPressed(MyGameControlEnums.CHANGE_DRONE_MODE))\n                {\n                    if (IsControlledDrone)\n                        ControlledDrone.HoldPosition = !ControlledDrone.HoldPosition;\n                }\n\n                if (input.IsNewGameControlPressed(MyGameControlEnums.QUICK_ZOOM)\n                    && !MyCamera.Zoom.IsZooming()\n                    && MyCamera.Zoom.GetZoomLevel() < 1.0f && !m_wheelControlMenu.Visible)\n                {\n                    m_quickZoomOut = true;\n                    MyCamera.Zoom.SetZoom(MyCameraZoomOperationType.ZoomOut);\n                }\n\n                if (!m_quickZoomOut)\n                {\n                    if (input.IsGameControlPressed(MyGameControlEnums.QUICK_ZOOM))\n                    {\n                        MyCamera.Zoom.SetZoom(MyCameraZoomOperationType.ZoomIn);\n                        m_quickZoomWasUsed = true;\n                    }\n                    else if (m_quickZoomWasUsed)\n                    {\n                        MyCamera.Zoom.SetZoom(MyCameraZoomOperationType.ZoomOut);\n                    }\n                }\n\n                if (input.IsNewGameControlPressed(MyGameControlEnums.ZOOM_IN) ||\n                    input.IsNewGameControlPressed(MyGameControlEnums.ZOOM_OUT))\n                {\n                    m_quickZoomOut = false;\n                }\n\n                if (!input.IsGameControlPressed(MyGameControlEnums.ZOOM_IN))\n                {\n                    if (input.IsGameControlPressed(MyGameControlEnums.ZOOM_OUT))\n                    {\n                        MyCamera.Zoom.SetZoom(MyCameraZoomOperationType.ZoomOut);\n                        m_quickZoomWasUsed = false;\n                    }\n                    else if (!m_quickZoomWasUsed && !m_quickZoomOut)\n                    {\n                        MyCamera.Zoom.SetZoom(MyCameraZoomOperationType.NoZoom);\n                    }\n                }\n                else if (input.IsGameControlPressed(MyGameControlEnums.ZOOM_IN))\n                {\n                    MyCamera.Zoom.SetZoom(MyCameraZoomOperationType.ZoomIn);\n                    m_quickZoomWasUsed = false;\n                }\n\n                // Drone manipulation\n                if (input.IsGameControlPressed(MyGameControlEnums.DRONE_DEPLOY))\n                    DroneDeployKeyPressed();\n                if (input.IsGameControlPressed(MyGameControlEnums.DRONE_CONTROL))\n                    DroneControlKeyPressed();\n\n                // Roll callbacks (movement is handled in MoveAndRotatePlayerOrCamera)\n                if (input.IsNewGameControlPressed(MyGameControlEnums.ROLL_LEFT))\n                {\n                    OnRollLeftPressed();\n                    MyScriptWrapper.RollLeftPressed();\n                }\n                if (input.IsNewGameControlPressed(MyGameControlEnums.ROLL_RIGHT))\n                {\n                    OnRollRightPressed();\n                    MyScriptWrapper.RollRightPressed();\n                }\n\n                // Turn deceleration on/off\n                if (input.IsNewGameControlPressed(MyGameControlEnums.MOVEMENT_SLOWDOWN))\n                {\n                    if (IsControlledPlayerShip && MySession.PlayerShip.Config.Engine.On)\n                        MySession.PlayerShip.Config.MovementSlowdown.ChangeValueUp();\n                }\n\n                // Change headlight distance\n                if (input.IsNewGameControlPressed(MyGameControlEnums.HEADLIGTHS_DISTANCE))\n                {\n                    if (IsControlledPlayerShip)\n                        MySession.PlayerShip.Config.ReflectorLongRange.ChangeValueUp();\n                }\n\n                // Turn auto-leveling on/off\n                if (input.IsNewGameControlPressed(MyGameControlEnums.AUTO_LEVEL))\n                {\n                    if (IsControlledPlayerShip && MySession.PlayerShip.Config.Engine.On)\n                        MySession.PlayerShip.Config.AutoLeveling.ChangeValueUp();\n                }\n\n                // Turn secondary camera on/off\n                if (MyFakes.ENABLE_BACK_CAMERA && !DisableBackCamera)\n                {\n                    if (input.IsNewGameControlPressed(MyGameControlEnums.REAR_CAM))\n                    {\n                        if (IsControlledPlayerShip)\n                            ControlledShip.Config.BackCamera.ChangeValueUp();\n                        if (IsControlledDrone)\n                            ControlledDrone.Config.BackCamera.ChangeValueUp();\n                    }\n                }\n                else\n                {\n                    MySession.PlayerShip.Config.BackCamera.SetOff();\n\n                    if (IsControlledDrone)\n                        ControlledDrone.Config.BackCamera.SetOff();\n                }\n\n                // Switch view - cockpit on/off, third person\n                if (input.IsNewGameControlPressed(MyGameControlEnums.VIEW_MODE))\n                {\n                    if (IsControlledPlayerShip)\n                        MySession.PlayerShip.Config.ViewMode.ChangeValueUp();\n                }\n\n                // Secondary camera and remote camera controls\n                if (input.IsNewGameControlPressed(MyGameControlEnums.PREVIOUS_CAMERA))\n                {\n                    if (IsControlledPlayerShip)\n                        MySession.PlayerShip.SelectPreviousSecondaryCamera();\n                }\n\n                if (input.IsNewGameControlPressed(MyGameControlEnums.NEXT_CAMERA))\n                {\n                    if (IsControlledPlayerShip)\n                        MySession.PlayerShip.SelectNextSecondaryCamera();\n                }\n\n                HandleRemoteCameraInput(input);\n\n                // Show GPS\n                if (input.IsNewGameControlPressed(MyGameControlEnums.GPS) || (MyFakes.GPS_ALWAYS_ON && Math.Abs(MyHud.LastGPS - MyMinerGame.TotalGamePlayTimeInMilliseconds) > 500))\n                {\n                    MyHud.ShowGPSPathToNextObjective(true);\n                    if (!m_showGPSNotification.IsDisappeared())\n                        m_showGPSNotification.Disappear();\n                }\n\n                // Harvesting and drilling\n                if (input.IsNewGameControlPressed(MyGameControlEnums.HARVEST))\n                {\n                    if (IsControlledPlayerShip && MySession.PlayerShip.IsEngineWorking() && MySession.PlayerShip.Fuel > 0)\n                        MySession.PlayerShip.Weapons.FireHarvester();\n                }\n\n                if (input.IsGameControlPressed(MyGameControlEnums.DRILL))\n                {\n                    if (IsControlledPlayerShip && MySession.PlayerShip.IsEngineWorking() && MySession.PlayerShip.Fuel > 0)\n                        MySession.PlayerShip.Weapons.FireDrill();\n                }\n            }\n\n            #endregion\n\n            #region Game keys that work only when player is alive and action menu is closed (e.g. keys that open a new menu)\n\n            if (IsGameActive() && !m_wheelControlMenu.Visible && IsFlyThroughActive() == false && MySession.Static != null && MySession.Static.Player != null && !MySession.Static.Player.IsDead())\n            {\n                // Travel\n                if (input.IsNewGameControlPressed(MyGameControlEnums.TRAVEL))\n                {\n                    bool canTravel = true;\n\n                    if (m_type == MyGuiScreenGamePlayType.GAME_SANDBOX)\n                    {\n                        if (MyGuiScreenGamePlay.Static.GetPreviousGameType() != MyGuiScreenGamePlayType.EDITOR_STORY)\n                            canTravel = false;\n                    }\n                    else if (m_type == MyGuiScreenGamePlayType.GAME_STORY || m_type == MyGuiScreenGamePlayType.GAME_MMO)\n                    {\n                        if (MySession.PlayerShip.GetNearMotherShipContainer() == null)\n                            canTravel = false;\n                        else\n                            canTravel = CanTravel;\n                    }\n\n                    bool canSave = MyClientServer.LoggedPlayer.GetCanSave();\n                    canTravel |= MyFakes.ENABLE_SOLAR_MAP;\n                    canTravel &= canSave;\n\n                    if (canTravel)\n                    {\n                        MyMwcSectorIdentifier sector = m_sectorIdentifier;\n                        this.HideScreen();\n                        MyGuiManager.AddScreen(new MyGuiScreenSolarSystemMap(this, sector));\n                    }\n                    else if (m_type == MyGuiScreenGamePlayType.GAME_STORY || m_type == MyGuiScreenGamePlayType.GAME_MMO)\n                    {\n                        if (!canSave)\n                            MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.DemoUserCannotTravel, MyTextsWrapperEnum.SolarSystemMap, MyTextsWrapperEnum.Ok, null));\n                        else if (CanTravel)\n                            MyHudNotification.AddNotification(m_notificationYouHaveToBeNearMothership);\n                        else\n                            MyHudNotification.AddNotification(m_notificationUnableToLeaveSectorMission);\n                    }\n                }\n\n                // Use / Hack / Take\n                if (input.IsNewGameControlPressed(MyGameControlEnums.USE))\n                {\n                    bool isHandled = false;\n                    // first handled are notifications\n                    if (MyHudNotification.HasNotification(MyHudNotification.GetCurrentScreen()))\n                        isHandled = MyHudNotification.HandleInput(input);\n\n                    // second handled is take all event\n                    if (!isHandled)\n                        isHandled = TakeAllItems();\n\n                    // third handled is hacking etc\n                    if (!isHandled)\n                    {\n                        MySmallShip hacker = ControlledDrone ?? MySession.PlayerShip;\n                        IMyUseableEntity detectedEntityToUse = hacker.UseableEntityDetector.GetNearestEntity() as IMyUseableEntity;\n\n                        if (ControlledLargeWeapon != null && TryChangeCameraAttachedTo(MyCameraAttachedToEnum.PlayerMinerShip))\n                            ReleaseControlOfLargeWeapon();\n\n                        if (ControlledCamera != null)\n                            ReleaseControlOfCamera();\n                        else if (detectedEntityToUse != null)\n                        {\n                            MySmallShipInteractionActionEnum detectedAction = (MySmallShipInteractionActionEnum)hacker.UseableEntityDetector.GetNearestEntityCriterias();\n                            if (detectedAction == MySmallShipInteractionActionEnum.Use)\n                                detectedEntityToUse.Use(hacker);\n                            else if (detectedAction == MySmallShipInteractionActionEnum.Hack)\n                                hacker.HackingTool.Hack(detectedEntityToUse);\n                        }\n                        else\n                            MyScriptWrapper.UseKeyPressed();\n                    }\n                }\n                       /*  Journal removed\n                // Journal\n                if (input.IsNewGameControlPressed(MyGameControlEnums.MISSION_DIALOG) && (GetGameType() == MyGuiScreenGamePlayType.GAME_STORY || GetGameType() == MyGuiScreenGamePlayType.GAME_MMO))\n                {\n                    if (!MyMissions.RequestMissionDialog())\n                        MyGuiManager.AddScreen(new MyGuiScreenJournal(MySession.Static.EventLog));\n                }        */\n\n                // Chat, multiplayer statistics\n                // TODO: prevent dev keys universally, not based on the default mapping\n#if !RENDER_PROFILING\n                if (MyGuiManager.IsScreenTopMostNonDebug(this))\n                {\n                    if (input.IsNewGameControlPressed(MyGameControlEnums.CHAT)/* && MyMultiplayerGameplay.IsRunning && (MyMultiplayerGameplay.IsSandBox() || (MyMultiplayerGameplay.IsStory() && MyMultiplayerGameplay.OtherPlayersConnected))*/) //only in deathmatch (all the time) or coop (at least one other player)\n                    {\n                        MyGuiManager.AddScreen(new MyGuiScreenGameChat(input.IsAnyShiftKeyPressed()));\n                    }\n                    if (input.IsNewGameControlPressed(MyGameControlEnums.SCORE) && MyMultiplayerGameplay.IsRunning && (MyMultiplayerGameplay.IsSandBox() || (MyMultiplayerGameplay.IsStory() && MyMultiplayerGameplay.OtherPlayersConnected))) //only in deathmatch (all the time) or coop (at least one other player)\n                    {\n                        MyGuiManager.AddScreen(new MyGuiScreenGameScore());\n                    }\n                }\n#endif\n                // Shooting\n                // we can be dead in this moment\n\n                if (MyFakes.CUBE_EDITOR && MySession.PlayerShip != null && input.IsNewGameControlPressed(MyGameControlEnums.QUICK_ZOOM))\n                    MySession.PlayerShip.CubeBuilder.BuilderActive = !MySession.PlayerShip.CubeBuilder.BuilderActive;\n\n                if (MySession.PlayerShip != null && MySession.PlayerShip.CubeBuilder.BuilderActive)\n                {\n                    if (input.IsNewGameControlPressed(MyGameControlEnums.FIRE_PRIMARY))\n                        MySession.PlayerShip.CubeBuilder.Add();\n                    if (input.IsNewGameControlPressed(MyGameControlEnums.FIRE_SECONDARY))\n                        MySession.PlayerShip.CubeBuilder.Remove();\n                }\n                else if (m_handleInputMouseKeysReleased &&\n                    (!IsSelectAmmoVisible()) &&\n                    (!m_wheelControlMenu.Visible) &&\n                    MySession.PlayerShip != null &&\n                    !MySession.PlayerShip.IsDead() &&\n                    IsFireKeyEnabled())\n                {\n                    switch (CameraAttachedTo)\n                    {\n                        case MyCameraAttachedToEnum.PlayerMinerShip_ThirdPersonDynamic:\n                        case MyCameraAttachedToEnum.Spectator:\n                        case MyCameraAttachedToEnum.PlayerMinerShip_ThirdPersonStatic:\n                        case MyCameraAttachedToEnum.PlayerMinerShip_ThirdPersonFollowing:\n                        case MyCameraAttachedToEnum.PlayerMinerShip:\n                            if (!input.IsAnyCtrlKeyPressed() || CameraAttachedTo == MyCameraAttachedToEnum.PlayerMinerShip)\n                            {\n                                MySmallShip playerShip = MySession.PlayerShip;\n\n                                if (playerShip.IsEngineWorking())\n                                {\n                                    if (input.IsGameControlPressed(MyGameControlEnums.FIRE_PRIMARY)) playerShip.Weapons.Fire(MyMwcObjectBuilder_FireKeyEnum.Primary);\n                                    if (input.IsGameControlPressed(MyGameControlEnums.FIRE_SECONDARY))\n                                    {\n                                        // TODO: prevent dev keys universally, not based on the default mapping\n#if !GPU_PROFILING\n                                        playerShip.Weapons.Fire(MyMwcObjectBuilder_FireKeyEnum.Secondary);\n#endif\n                                    }\n                                    if (input.IsGameControlPressed(MyGameControlEnums.FIRE_THIRD)) playerShip.Weapons.Fire(MyMwcObjectBuilder_FireKeyEnum.Third);\n                                    if (input.IsGameControlPressed(MyGameControlEnums.FIRE_FOURTH)) playerShip.Weapons.Fire(MyMwcObjectBuilder_FireKeyEnum.Fourth);\n                                    if (input.IsGameControlPressed(MyGameControlEnums.FIRE_FIFTH)) playerShip.Weapons.Fire(MyMwcObjectBuilder_FireKeyEnum.Fifth);\n                                    if (input.IsNewGameControlPressed(MyGameControlEnums.WEAPON_SPECIAL)) playerShip.InvokeAmmoSpecialFunction();\n                                    if (input.IsGameControlPressed(MyGameControlEnums.FIRE_HOLOGRAM_FRONT)) playerShip.Weapons.Fire(MyMwcObjectBuilder_FireKeyEnum.HologramFront);\n                                    if (input.IsGameControlPressed(MyGameControlEnums.FIRE_HOLOGRAM_BACK)) playerShip.Weapons.Fire(MyMwcObjectBuilder_FireKeyEnum.HologramBack);\n                                    if (input.IsGameControlPressed(MyGameControlEnums.FIRE_BASIC_MINE_FRONT)) playerShip.Weapons.Fire(MyMwcObjectBuilder_FireKeyEnum.BasicMineFront);\n                                    if (input.IsGameControlPressed(MyGameControlEnums.FIRE_BASIC_MINE_BACK)) playerShip.Weapons.Fire(MyMwcObjectBuilder_FireKeyEnum.BasicMineBack);\n                                    if (input.IsGameControlPressed(MyGameControlEnums.FIRE_SMART_MINE_FRONT)) playerShip.Weapons.Fire(MyMwcObjectBuilder_FireKeyEnum.SmartMineFront);\n                                    if (input.IsGameControlPressed(MyGameControlEnums.FIRE_SMART_MINE_BACK)) playerShip.Weapons.Fire(MyMwcObjectBuilder_FireKeyEnum.SmartMineBack);\n                                    if (input.IsGameControlPressed(MyGameControlEnums.FIRE_FLASH_BOMB_FRONT)) playerShip.Weapons.Fire(MyMwcObjectBuilder_FireKeyEnum.FlashBombFront);\n                                    if (input.IsGameControlPressed(MyGameControlEnums.FIRE_FLASH_BOMB_BACK)) playerShip.Weapons.Fire(MyMwcObjectBuilder_FireKeyEnum.FlashBombBack);\n                                    if (input.IsGameControlPressed(MyGameControlEnums.FIRE_DECOY_FLARE_FRONT)) playerShip.Weapons.Fire(MyMwcObjectBuilder_FireKeyEnum.DecoyFlareFront);\n                                    if (input.IsGameControlPressed(MyGameControlEnums.FIRE_DECOY_FLARE_BACK)) playerShip.Weapons.Fire(MyMwcObjectBuilder_FireKeyEnum.DecoyFlareBack);\n                                    if (input.IsGameControlPressed(MyGameControlEnums.FIRE_SMOKE_BOMB_FRONT)) playerShip.Weapons.Fire(MyMwcObjectBuilder_FireKeyEnum.SmokeBombFront);\n                                    if (input.IsGameControlPressed(MyGameControlEnums.FIRE_SMOKE_BOMB_BACK)) playerShip.Weapons.Fire(MyMwcObjectBuilder_FireKeyEnum.SmokeBombBack);\n                                }\n                            }\n                            break;\n                        case MyCameraAttachedToEnum.Drone:\n                            if (input.IsGameControlPressed(MyGameControlEnums.FIRE_PRIMARY) ||\n                                input.IsGameControlPressed(MyGameControlEnums.FIRE_SECONDARY) ||\n                                input.IsGameControlPressed(MyGameControlEnums.FIRE_THIRD) ||\n                                input.IsGameControlPressed(MyGameControlEnums.FIRE_FOURTH) ||\n                                input.IsGameControlPressed(MyGameControlEnums.FIRE_FIFTH))\n                            {\n                                ControlledDrone.Fire();\n                                DisableFireKey(new TimeSpan(0, 0, 1));\n                            }\n                            break;\n                        case MyCameraAttachedToEnum.LargeWeapon:\n                            if (input.IsGameControlPressed(MyGameControlEnums.FIRE_PRIMARY) ||\n                                input.IsGameControlPressed(MyGameControlEnums.FIRE_SECONDARY) ||\n                                input.IsGameControlPressed(MyGameControlEnums.FIRE_THIRD) ||\n                                input.IsGameControlPressed(MyGameControlEnums.FIRE_FOURTH) ||\n                                input.IsGameControlPressed(MyGameControlEnums.FIRE_FIFTH))\n                            {\n                                ControlledLargeWeapon.Fire();\n                            }\n                            else\n                            {\n                                ControlledLargeWeapon.StopFire();\n                            }\n                            break;\n                    }\n                }\n            }\n\n            #endregion\n\n            #region Game keys that work all the time (even when player is dead)\n\n            if (IsGameActive())\n            {\n                // Open cheat screen\n                if (input.IsNewKeyPress(Keys.F1) && input.IsAnyCtrlKeyPressed())\n                {\n                    MyGuiManager.AddScreen(new MyGuiScreenCheats());\n                }\n\n                // Open help screen\n                if (input.IsNewKeyPress(Keys.F1) && !input.IsAnyCtrlKeyPressed())\n                {\n                    MyGuiManager.AddScreen(new MyGuiScreenHelp());\n                }\n\n                if (IsControlledPlayerShip)\n                {\n                    m_selectAmmoMenu.HandleInput(input, true, true, receivedFocusInThisUpdate);\n                    m_wheelControlMenu.HandleInput(input, true, true, receivedFocusInThisUpdate);\n                }\n\n                // DrawMouseCursor = m_wheelControlMenu.Visible;\n\n                /*  //duplicated in if IsGameReady\n           if (IsGameActive()) // enable cursor drawing if we have ammo selection opened\n           {\n               DrawMouseCursor = m_selectAmmoMenu.IsEnabled && m_selectAmmoMenu.Visible;\n           } */\n\n                MyDebugConsole.GetInstance().Update(MyDebugSystem.Game, input);\n            }\n\n            #endregion\n\n            #region Editor keys\n\n            if (IsEditorActive())\n            {\n                // Open ship customization screen\n                if (input.IsNewGameControlPressed(MyGameControlEnums.INVENTORY) && !input.IsAnyCtrlKeyPressed())\n                {\n                    if (MyFakes.SHOW_NEW_INVENTORY_SCREEN)\n                    {\n                        MyGuiScreenInventoryType inventoryType = !IsIngameEditorActive() || Static.IsCheatEnabled(MyGameplayCheatsEnum.UNLIMITED_TRADING)\n                                                                        ? MyGuiScreenInventoryType.GodEditor\n                                                                        : MyGuiScreenInventoryType.InGameEditor;\n                        MyGuiManager.AddScreen(MyGuiScreenInventoryManagerForGame.OpenInventory(inventoryType));\n                    }\n                }\n\n                MyEditor.Static.HandleInput(input, !AnyControlContainsMouse());\n                MyDebugConsole.GetInstance().Update(MyDebugSystem.Editor, input);\n            }\n\n            #endregion\n        }\n\n        void OnRollLeftPressed()\n        {\n            var handler = RollLeftPressed;\n            if (handler != null)\n            {\n                handler();\n            }\n        }\n\n        void OnRollRightPressed()\n        {\n            var handler = RollRightPressed;\n            if (handler != null)\n            {\n                handler();\n            }\n        }\n\n        private void OpenInventoryMultiplayer(MyGuiScreenInventoryType inventoryType)\n        {\n            var tradeEntity = MySession.PlayerShip.TradeDetector.GetNearestEntity();\n            if (tradeEntity == null)\n            {\n                var inventoryScreen = MyGuiScreenInventoryManagerForGame.OpenInventory(inventoryType);\n                MyGuiManager.AddScreen(inventoryScreen);\n            }\n            else\n            {\n                var tradeEntityCriterias = (MySmallShipInteractionActionEnum)MySession.PlayerShip.TradeDetector.GetNearestEntityCriterias();\n\n                Debug.Assert(tradeEntity.EntityId != null, \"tradeEntity.EntityId != null\");\n                var entityID = tradeEntity.EntityId.Value;\n\n                MyMultiplayerGameplay.Static.LockReponse = (e, success) =>\n                    {\n                        MyMultiplayerGameplay.Static.LockReponse = null;\n                        if (tradeEntity != e)\n                        {\n                            Debug.Fail(\"Something went wrong, locked different entity\");\n                            MyMultiplayerGameplay.Static.Lock(e, false);\n                            return;\n                        }\n\n                        if (success)\n                        {\n                            var inventoryScreen = MyGuiScreenInventoryManagerForGame.OpenInventory(inventoryType, tradeEntity, tradeEntityCriterias);\n                            //inventoryScreen.ScreenTimeout = TimeSpan.FromSeconds(25);\n                            inventoryScreen.Closed += (s) => MyMultiplayerGameplay.Static.Lock(entityID, false);\n                            MyGuiManager.AddScreen(inventoryScreen);\n                        }\n                    };\n                MyMultiplayerGameplay.Static.Lock(tradeEntity, true);\n            }\n        }\n\n        public void ReturnControlToPlayerShip()\n        {\n            ReleaseControlOfDrone();\n            ReleaseControlOfCamera();\n            ReleaseControlOfLargeWeapon();\n        }\n\n        bool IsFireKeyEnabled()\n        {\n            return m_fireDisableTimeout <= 0;\n        }\n\n        /// <summary>\n        /// Disables the fire keys for the specified duration.\n        /// </summary>\n        void DisableFireKey(TimeSpan duration)\n        {\n            m_fireDisableTimeout = (float)duration.TotalMilliseconds;\n        }\n\n        private void DroneDeployKeyPressed()\n        {\n            var deployed = MySession.PlayerShip.TryDeployDrone();\n            if (deployed && IsControlledPlayerShip)\n            {\n                MySession.PlayerShip.SelectLastDroneCamera();\n                MySession.PlayerShip.Config.BackCamera.SetOn();\n            }\n        }\n\n        private void DroneControlKeyPressed()\n        {\n            if ((MyMinerGame.TotalGamePlayTimeInMilliseconds - m_lastTimeSwitchedDroneControl) > DRONE_CONTROL_INTERVAL)\n            {\n                m_lastTimeSwitchedDroneControl = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n\n                if (IsControlledDrone)\n                {\n                    ReleaseControlOfDrone();\n                }\n                else\n                {\n                    bool tookControlOfDrone = TryTakeControlOfDrone();\n                }\n            }\n        }\n\n        private bool TryTakeControlOfDrone()\n        {\n            var selectedDrone = MySession.PlayerShip.GetSelectedDrone();\n\n            if (selectedDrone != null)\n            {\n                TakeControlOfDrone(selectedDrone);\n                return true;\n            }\n\n            return false;\n        }\n\n        private void TakeControlOfDrone(MyDrone drone)\n        {\n            CameraAttachedTo = MyCameraAttachedToEnum.Drone;\n            drone.OnClosing += OnControlledDroneClose;\n            ControlledDrone = drone;\n            ControlledDrone.ActiveAI = false;\n            ControlledDrone.Config.AutoLeveling.SetOff();\n            MySession.PlayerShip.StopSounds();\n            MySession.PlayerShip.SelectShipCamera();\n            MyGuiManager.GetRemoteViewDroneTextures();\n            MyAudio.AddCue2D(MySoundCuesEnum.SfxAcquireDroneOn);\n            if (m_idleVehicleCue.HasValue && m_idleVehicleCue.Value.IsPlaying)\n            {\n                m_idleVehicleCue.Value.Stop(SharpDX.XACT3.StopFlags.Release);\n            }\n            m_idleVehicleCue = MyAudio.AddCue2D(MySoundCuesEnum.VehLoopDrone);\n        }\n\n        void OnControlledDroneClose(MyEntity drone)\n        {\n            if (drone == ControlledEntity)\n            {\n                drone.OnClosing -= OnControlledDroneClose;\n                ReleaseControlOfDrone();\n            }\n        }\n\n        public void TakeControlOfCamera(MyPrefabCamera camera)\n        {\n            camera.Visible = false;\n            CameraAttachedTo = MyCameraAttachedToEnum.Camera;\n            ControlledCamera = camera;\n            MyGuiManager.GetRemoteViewCameraTextures();\n            MyAudio.AddCue2D(MySoundCuesEnum.SfxAcquireCameraOn);\n            MySession.PlayerShip.StopSounds();\n            if (m_idleVehicleCue.HasValue && m_idleVehicleCue.Value.IsPlaying)\n            {\n                m_idleVehicleCue.Value.Stop(SharpDX.XACT3.StopFlags.Release);\n            }\n            m_idleVehicleCue = MyAudio.AddCue2D(MySoundCuesEnum.VehLoopCamera);\n\n            AddSwitchingNotification();\n\n            AddCameraDetachingNotification();\n        }\n\n        void AddCameraDetachingNotification()\n        {\n            if (m_detachNotification != null &&\n                !m_detachNotification.IsDisappeared())\n            {\n                return;\n            }\n\n            object[] args = { MyGuiManager.GetInput().GetGameControlTextEnum(MyGameControlEnums.USE), \"\" };\n\n            m_detachNotification = new MyHudNotification.MyNotification(\n                MyTextsWrapperEnum.NotificationExitControlled,\n                MyHudNotification.GetCurrentScreen(),\n                1f,\n                MyHudConstants.NEUTRAL_FONT,\n                MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_BOTTOM,\n                MyHudNotification.DONT_DISAPEAR,\n                null,\n                false,\n                args);\n\n            if (!DetachingForbidden)\n            {\n                MyHudNotification.AddNotification(m_detachNotification);\n            }\n        }\n\n        public void SwitchControlOfCamera(MyPrefabCamera prefabCamera)\n        {\n            if (ControlledEntity != null)\n            {\n                ControlledEntity.Visible = true;\n            }\n\n            //if (m_detachNotification != null)\n            //{\n            //    m_detachNotification.Disappear();\n            //}\n\n            TakeControlOfCamera(prefabCamera);\n        }\n\n        public void SwitchControlOfLargeWeapon(MyPrefabLargeWeapon prefabLargeWeapon)\n        {\n            if (ControlledEntity != null)\n            {\n                ControlledEntity.Visible = true;\n                if (ControlledEntity == ControlledLargeWeapon)\n                {\n                    ControlledLargeWeapon.StopAimingSound();\n                }\n            }\n\n            //if (m_detachNotification != null)\n            //{\n            //    m_detachNotification.Disappear();\n            //}\n\n            TakeControlOfLargeWeapon(prefabLargeWeapon);\n        }\n\n        public void ReleaseControlOfCamera()\n        {\n            if (ControlledCamera != null && CameraAttachedTo != MyCameraAttachedToEnum.PlayerMinerShip)\n            {\n                if (m_switchControlNotification != null)\n                {\n                    m_switchControlNotification.Disappear();\n                    m_switchControlNotification = null;\n                }\n\n                m_detachNotification.Disappear();\n                m_detachNotification = null;\n                ControlledCamera.Visible = true;\n\n                OnControlReleased(ControlledCamera);\n\n                CameraAttachedTo = MyCameraAttachedToEnum.PlayerMinerShip;\n                MySecondaryCamera.Instance.SetEntityCamera(ControlledCamera);\n                ControlledShip = MySession.PlayerShip;\n                MyAudio.AddCue2D(MySoundCuesEnum.SfxAcquireCameraOff);\n                MyGuiManager.RemoveRemoteViewCameraTextures();\n                if (m_idleVehicleCue.HasValue && m_idleVehicleCue.Value.IsPlaying)\n                {\n                    m_idleVehicleCue.Value.Stop(SharpDX.XACT3.StopFlags.Release);\n                }\n            }\n        }\n\n        public void ReleaseControlOfDrone()\n        {\n            if (IsControlledDrone && CameraAttachedTo != MyCameraAttachedToEnum.PlayerMinerShip)\n            {\n                CameraAttachedTo = MyCameraAttachedToEnum.PlayerMinerShip;\n                MySecondaryCamera.Instance.SetEntityCamera(ControlledDrone);\n                ControlledDrone.ActiveAI = !ControlledDrone.HoldPosition;\n                ControlledDrone.Config.AutoLeveling.SetOn();\n\n                OnControlReleased(ControlledDrone);\n\n                ControlledShip = MySession.PlayerShip;\n                MySecondaryCamera.Instance.SecondaryCameraAttachedTo = MySecondaryCameraAttachedTo.Drone;\n                MyAudio.AddCue2D(MySoundCuesEnum.SfxAcquireDroneOff);\n                MyGuiManager.RemoveRemoteViewDroneTextures();\n                if (m_idleVehicleCue.HasValue && m_idleVehicleCue.Value.IsPlaying)\n                {\n                    m_idleVehicleCue.Value.Stop(SharpDX.XACT3.StopFlags.Release);\n                }\n            }\n        }\n\n        public void TakeControlOfLargeWeapon(MyPrefabLargeWeapon largeWeapon)\n        {\n            CameraAttachedTo = MyCameraAttachedToEnum.LargeWeapon;\n            ControlledLargeWeapon = largeWeapon;\n            MyGuiManager.GetRemoteViewWeaponTextures();\n            MyAudio.AddCue2D(MySoundCuesEnum.SfxAcquireWeaponOn);\n            MySession.PlayerShip.StopSounds();\n            largeWeapon.StopAimingSound();\n\n            AddSwitchingNotification();\n\n            AddLargeWeaponDetachingNotification();\n        }\n\n        void AddSwitchingNotification()\n        {\n            if (ActiveSecurityHubScreen == null || ActiveSecurityHubScreen.GetNumberOfControllableEntities() < 2)\n            {\n                return;\n            }\n\n            if (m_switchControlNotification != null)\n            {\n                if (m_switchControlNotification.IsDisappeared())\n                {\n                    m_switchControlNotification.Appear();\n                }\n            }\n            else\n            {\n                object[] args = {\n                                    MyGuiManager.GetInput().GetGameControlTextEnum(MyGameControlEnums.ROLL_LEFT),\n                                    MyGuiManager.GetInput().GetGameControlTextEnum(MyGameControlEnums.ROLL_RIGHT)\n                                };\n\n                m_switchControlNotification = new MyHudNotification.MyNotification(\n                    (ControlledEntity == null || ControlledEntity is MyPrefabCamera) ? MyTextsWrapperEnum.SwitchInHUBCameras : MyTextsWrapperEnum.SwitchInHUBTurrets,\n                    MyHudNotification.GetCurrentScreen(),\n                    1f,\n                    MyHudConstants.FRIEND_FONT,\n                    MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_BOTTOM,\n                    MyHudNotification.DONT_DISAPEAR,\n                    null,\n                    false,\n                    args);\n\n                MyHudNotification.AddNotification(m_switchControlNotification);\n            }\n        }\n\n        void AddLargeWeaponDetachingNotification()\n        {\n            if (m_detachNotification != null &&\n                !m_detachNotification.IsDisappeared())\n            {\n                return;\n            }\n\n            object[] args = { MyGuiManager.GetInput().GetGameControlTextEnum(MyGameControlEnums.USE), \"\" };\n\n            m_detachNotification = new MyHudNotification.MyNotification(\n                MyTextsWrapperEnum.NotificationExitControlled,\n                MyHudNotification.GetCurrentScreen(),\n                1f,\n                MyHudConstants.NEUTRAL_FONT,\n                MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_BOTTOM,\n                MyHudNotification.DONT_DISAPEAR,\n                null,\n                false,\n                args);\n\n            if (!DetachingForbidden)\n            {\n                MyHudNotification.AddNotification(m_detachNotification);\n            }\n        }\n\n        /// <summary>\n        /// Called automaticaly from CameraAttachedTo setter\n        /// </summary>\n        public void ReleaseControlOfLargeWeapon()\n        {\n            if (ControlledLargeWeapon != null)\n            {\n                if (MyMultiplayerGameplay.IsRunning)\n                {\n                    MyMultiplayerGameplay.Static.Lock(ControlledLargeWeapon, false);\n                }\n\n                if (m_switchControlNotification != null)\n                {\n                    m_switchControlNotification.Disappear();\n                    m_switchControlNotification = null;\n                }\n\n                if (m_detachNotification != null)\n                {\n                    m_detachNotification.Disappear();\n                    m_detachNotification = null;\n                }\n\n                OnControlReleased(ControlledLargeWeapon);\n\n                CameraAttachedTo = MyCameraAttachedToEnum.PlayerMinerShip;\n                ControlledShip = MySession.PlayerShip;\n                MyAudio.AddCue2D(MySoundCuesEnum.SfxAcquireWeaponOff);\n                MyGuiManager.RemoveRemoteViewWeaponTextures();\n            }\n        }\n\n        void OnControlReleased(MyEntity releasedEntity)\n        {\n            if (MyMultiplayerGameplay.IsRunning)\n            {\n                MyMultiplayerGameplay.Static.Lock(releasedEntity, false);\n            }\n\n            var handler = ReleasedControlOfEntity;\n            if (handler != null)\n            {\n                handler(releasedEntity);\n            }\n        }\n\n        public void DisplaySecurityHubScreen(MyGuiScreenSecurityControlHUB screenSecurityControlHUB)\n        {\n            ActiveSecurityHubScreen = screenSecurityControlHUB;\n            MyGuiManager.AddScreen(screenSecurityControlHUB);\n        }\n\n        private static void HandleRemoteCameraInput(MyGuiInput input)\n        {\n            if (input.IsGameControlPressed(MyGameControlEnums.CONTROL_SECONDARY_CAMERA))\n            {\n                var rotationIndicator = new Vector3(input.GetMouseYForGamePlay() - MyMinerGame.ScreenSizeHalf.Y, input.GetMouseXForGamePlay() - MyMinerGame.ScreenSizeHalf.X, 0) * MyGuiConstants.MOUSE_ROTATION_INDICATOR_MULTIPLIER;\n\n                rotationIndicator.X -= input.GetGameControlAnalogState(MyGameControlEnums.ROTATION_UP) * MyRemoteCameraConstants.ROTATION_SENSITIVITY_NON_MOUSE;\n                rotationIndicator.X += input.GetGameControlAnalogState(MyGameControlEnums.ROTATION_DOWN) * MyRemoteCameraConstants.ROTATION_SENSITIVITY_NON_MOUSE;\n                rotationIndicator.Y -= input.GetGameControlAnalogState(MyGameControlEnums.ROTATION_LEFT) * MyRemoteCameraConstants.ROTATION_SENSITIVITY_NON_MOUSE;\n                rotationIndicator.Y += input.GetGameControlAnalogState(MyGameControlEnums.ROTATION_RIGHT) * MyRemoteCameraConstants.ROTATION_SENSITIVITY_NON_MOUSE;\n\n                rotationIndicator *= MyConstants.PHYSICS_STEPS_PER_SECOND * MyGuiConstants.ROTATION_INDICATOR_MULTIPLIER;\n\n                if (rotationIndicator != Vector3.Zero)\n                {\n                    var remoteCamera = MySession.PlayerShip.GetSelectedRemoteCamera();\n                    if (remoteCamera != null)\n                        remoteCamera.Rotate(-rotationIndicator);\n                }\n            }\n        }\n\n        //Game and editor shares this method\n        public void MoveAndRotatePlayerOrCamera(MyGuiInput input)\n        {\n            // Don't move camera on screenshot\n            if (MyGuiManager.GetScreenshot() != null)\n                return;\n\n            bool afterburner = false;\n\n            float rollIndicator = input.GetRoll();\n            Vector2 rotationIndicator = input.GetRotation();\n            Vector3 moveIndicator = input.GetPositionDelta();\n\n            if (MyVideoModeManager.IsHardwareCursorUsed() && MyMinerGame.Static.IsMouseVisible)\n                rotationIndicator = Vector2.Zero;\n\n\n            if (IsGameActive()) if (input.IsGameControlPressed(MyGameControlEnums.AFTERBURNER)) afterburner = true;\n\n            ////////////////////////////////////////////////////////////////////////////////////////////////////////////\n            //  Decide who is moving\n            ////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\n            if (CameraAttachedTo == MyCameraAttachedToEnum.Spectator)\n            {\n                if (IsEditorActive())\n                {\n                    //DrawMouseCursor = false; \n                    if (MyConfig.EditorUseCameraCrosshair == false)\n                    {\n                        if (input.IsRightMousePressed() == false)\n                        {\n                            rotationIndicator = Vector2.Zero;\n                            //Summary\t0000835: Editor - camera / spectator - different rotation equations -- rotate even when button is not pressed\n                            //rollIndicator = 0f;\n                            DrawMouseCursor = true;\n                        }\n                        else\n                        {\n                            if (input.IsNewRightMousePressed() && MyVideoModeManager.IsHardwareCursorUsed())\n                                rotationIndicator = Vector2.Zero;\n                            DrawMouseCursor = false;\n                            if (MyVideoModeManager.IsHardwareCursorUsed())\n                                MyGuiInput.SetMouseToScreenCenter();\n                        }\n                    }\n                    else\n                    {\n                        if (input.IsNewMiddleMousePressed() && MyVideoModeManager.IsHardwareCursorUsed())\n                            rotationIndicator = Vector2.Zero;\n\n                        if (MyEditorGizmo.IsRotationActive())\n                        {\n                            rotationIndicator = Vector2.Zero;\n                            rollIndicator = 0f;\n                            DrawMouseCursor = true;\n                        }\n                        else\n                        {\n                            DrawMouseCursor = false;\n                            MyGuiInput.SetMouseToScreenCenter();\n                        }\n                    }\n                }\n\n                MySpectator.MoveAndRotate(moveIndicator, rotationIndicator, rollIndicator, (afterburner ? 1.0f : 0.35f) * (input.IsAnyCtrlKeyPressed() ? 0.3f : 1));\n            }\n\n            if (CameraAttachedTo == MyCameraAttachedToEnum.PlayerMinerShip_ThirdPersonDynamic)\n            {\n                MyThirdPersonSpectator.SetState(moveIndicator, rotationIndicator, rollIndicator);\n                MyThirdPersonSpectator.QuickZoom = input.IsAnyAltKeyPressed();\n            }\n\n            // disable mouse rotation if we are in weapon select mode(cursor on)\n            if ((m_selectAmmoMenu.IsEnabled && IsSelectAmmoVisible() || GetDrawMouseCursor()))\n                rotationIndicator = Vector2.Zero;\n\n            if (MySession.Static != null && MySession.Static.Player != null && !MySession.Static.Player.IsDead())\n            {\n                switch (CameraAttachedTo)\n                {\n                    case MyCameraAttachedToEnum.BotMinerShip:\n                        if (ShipForSimpleTesting != null)\n                            ShipForSimpleTesting.MoveAndRotate(moveIndicator, rotationIndicator, 0f, afterburner);\n                        break;\n\n                    case MyCameraAttachedToEnum.Drone:\n                        ControlledDrone.MoveAndRotate(moveIndicator, rotationIndicator, rollIndicator, afterburner);\n                        break;\n                    case MyCameraAttachedToEnum.Camera:\n                        {\n                            ControlledCamera.HandleInput(rotationIndicator);\n                        }\n                        break;\n\n                    case MyCameraAttachedToEnum.LargeWeapon:\n                        {\n                            ControlledLargeWeapon.MoveAndRotate(moveIndicator, rotationIndicator, rollIndicator, afterburner);\n                        }\n                        break;\n\n                    case MyCameraAttachedToEnum.PlayerMinerShip_ThirdPersonDynamic:\n                    case MyCameraAttachedToEnum.PlayerMinerShip_ThirdPersonStatic:\n                    case MyCameraAttachedToEnum.PlayerMinerShip_ThirdPersonFollowing:\n                    case MyCameraAttachedToEnum.PlayerMinerShip:\n                        if (MySession.PlayerShip != null)\n                            MySession.PlayerShip.MoveAndRotate(moveIndicator, rotationIndicator, rollIndicator, afterburner);\n                        break;\n                }\n            }\n            if (MyVideoModeManager.IsHardwareCursorUsed() && GetDrawMouseCursor() == false && !MyMinerGame.Static.IsMouseVisible)\n                MyGuiInput.SetMouseToScreenCenter();\n        }\n\n        static long lastEnvWorkingSet = 0;\n        static long lastGc = 0;\n        static long lastVid = 0;\n        private MySoundCue? m_inventoryPlaySound;\n\n        //  This method is called every update - even if application has not focus\n        //  Update world, do physics integration...\n        public override bool Update(bool hasFocus)\n        {\n            int profBlock = -1;\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"GuiScreenGamePlay::Update\", ref profBlock);\n\n            if (MyMultiplayerGameplay.IsRunning)\n            {\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Multiplayer update\");\n                MyMultiplayerGameplay.Static.Update();\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n            }\n\n            if (MyFakes.GRAVITATION.HasValue)\n                MyPhysics.physicsSystem.Gravitation = MyFakes.GRAVITATION.Value;\n\n            if (MySession.Is25DSector)\n            {\n                MyPhysics.physicsSystem.Gravitation = new Vector3(0, -4000, 0);\n            }\n\n            if (MyFakes.MWBUILDER && !MyEditor.Static.IsActive())\n            {\n                //MyPhysics.physicsSystem.Gravitation = new Vector3(0, -2000, 0);\n                MyPhysics.physicsSystem.Gravitation = new Vector3(0, -0, 0);\n                /*\n    MyVoxelMap voxelMap = MyVoxelMaps.GetVoxelMaps()[0];\n    MyPhysics.physicsSystem.GravitationPoints.Clear();\n    MyPhysics.physicsSystem.GravitationPoints.Add(new Tuple<BoundingSphere, float>(new BoundingSphere(voxelMap.WorldAABB.GetCenter(), voxelMap.WorldAABB.Size().Length()), 2000));\n              */\n\n                MyVoxelMap voxelMap = MyVoxelMaps.GetVoxelMaps()[0];\n                float distance = Vector3.Distance(voxelMap.WorldAABB.GetCenter(), MyCamera.Position);\n                float alpha = MathHelper.Clamp(distance / voxelMap.WorldAABB.Size().Length(), 0, 1);\n\n                MySector.SunProperties.BackgroundColor = Vector3.Lerp(new Vector3(5, 5, 16), Vector3.One, alpha);\n\n            }\n\n            //MyPhysics.physicsSystem.Gravitation = new Vector3(0,0, 0);\n\n            CheckChatboxMessagesTTL();\n\n            if (m_playInventoryTransferSound && MyMinerGame.TotalGamePlayTimeInMilliseconds > m_inventoryTransferSoundPlayTime)\n            {\n                m_playInventoryTransferSound = false;\n                if (m_inventoryPlaySound == null || !m_inventoryPlaySound.Value.IsPlaying)\n                    m_inventoryPlaySound = MyAudio.AddCue2D(MySoundCuesEnum.HudInventoryTransfer);\n                else\n                    m_inventoryPlaySound = null;\n            }\n\n\n            if (m_invokeGameEditorSwitch)\n                TrySwitchBetweenGameAndEditor();\n\n#if RENDER_PROFILING\n            MyRender.RenderObjectUpdatesCounter = 0;\n#endif\n\n            //  We do not want to do any update when switching between sectors\n            if (m_state == MyGuiScreenState.CLOSING)\n            {\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock(profBlock);\n                return false;\n            }\n\n            if (base.Update(hasFocus) == false)\n            {\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock(profBlock);\n                return false;\n            }\n\n            if (m_startTimeInMilliseconds.HasValue == false)\n            {\n                m_startTimeInMilliseconds = MyMinerGame.TotalTimeInMilliseconds;\n                //MyGuiSounds.PlayClick();\n            }\n\n            if (m_updateGPSReminderTimer > 0.5f)\n            {\n                m_updateGPSReminderTimer = 0;\n                UpdateGPSReminder();\n            }\n            else\n            {\n                m_updateGPSReminderTimer += MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS;\n            }\n\n            ShowOrHideNotification(MyConfig.NeedShowHelpScreen, ref m_needShowHelpNotification, MyTextsWrapperEnum.NotificationNeedShowHelpScreen, null);\n            ShowOrHideNotification(!MyEditor.Static.IsActive() && !MyFakes.MWBUILDER && MyHud.GetClosestOreDistanceSquared() < 100 * 100 && (MySession.PlayerShip.Weapons.GetMountedDrill() == null || MySession.PlayerShip.Weapons.GetMountedDrill().CurrentState == MyDrillStateEnum.InsideShip), ref m_oreInRangeNotification, MyTextsWrapperEnum.OreNotification, MyGameControlEnums.HARVEST);\n            ShowOrHideNotification(!MyEditor.Static.IsActive() && !MyFakes.MWBUILDER && MyHud.GetClosestOreDistanceSquared() < 100 * 100 && (MySession.PlayerShip != null && MySession.PlayerShip.Weapons.GetMountedDrill() != null && MySession.PlayerShip.Weapons.GetMountedDrill().CurrentState == MyDrillStateEnum.InsideShip), ref m_drillingInRangeNotification, MyTextsWrapperEnum.DrillNotification, MyGameControlEnums.DRILL);\n            ShowOrHideNotification(!MyEditor.Static.IsActive() && !MyFakes.MWBUILDER && MySession.PlayerShip != null && MySession.PlayerShip.Weapons.GetMountedDrill() != null && MySession.PlayerShip.Weapons.GetMountedDrill().CurrentState != MyDrillStateEnum.InsideShip, ref m_pressMToDeactivateDrillNotification, MyTextsWrapperEnum.PressMToDeactivateDrill, MyGameControlEnums.DRILL);\n            ShowOrHideNotification(!MyEditor.Static.IsActive() && !MyFakes.MWBUILDER && MySession.PlayerShip != null && MySession.PlayerShip.Weapons.GetMountedDrill() != null && MySession.PlayerShip.Weapons.GetMountedDrill().CurrentState == MyDrillStateEnum.Activated, ref m_holdFireToDrillNotification, MyTextsWrapperEnum.HoldFireToDrillNotification, MyGameControlEnums.FIRE_PRIMARY);\n\n\n            if (m_fireDisableTimeout > 0)\n            {\n                m_fireDisableTimeout = m_fireDisableTimeout - MyConstants.PHYSICS_STEP_SIZE_IN_MILLISECONDS;\n            }\n\n            if (hasFocus == false)\n            {\n                //  We must reset this\n                m_handleInputMouseKeysReleased = false;\n            }\n\n            if (m_firstUpdateCall)\n            {\n                if (MyGuiScreenLoading.Static != null)\n                {\n                    MyGuiScreenLoading.Static.UnloadContent();\n                }\n\n                m_loadingScreen = new MyGuiScreenLoading(null, null, MyGuiScreenLoading.LastBackgroundTexture);\n                m_loadingScreen.LoadContent();\n                m_firstUpdateCall = false;\n                m_firstTimeLoaded = MyMinerGame.TotalTimeInMilliseconds;\n\n                if (IsMainMenuActive())\n                {\n                    //Allow changing video options from game in DX version\n                    MyGuiScreenMainMenu.AddMainMenu(true);\n                    //MyGuiScreenMainMenu.AddMainMenu(false);\n                }\n\n                switch (m_type)\n                {\n                    case MyGuiScreenGamePlayType.GAME_STORY:\n                        break;\n                    case MyGuiScreenGamePlayType.EDITOR_SANDBOX:\n                    case MyGuiScreenGamePlayType.EDITOR_MMO:\n                    case MyGuiScreenGamePlayType.EDITOR_STORY:\n                    case MyGuiScreenGamePlayType.INGAME_EDITOR:\n                        FillEditorNotifications();\n                        break;\n                    default:\n                        break;\n                }\n\n\n                if (OnGameLoaded != null)\n                    OnGameLoaded(this, null);\n\n                //  we may create GPS waypoints only after the first simulation pass\n                if (MyFakes.ENABLE_GENERATED_WAYPOINTS_IN_EDITOR)\n                {\n                    MyWayPointGraph.CreateWaypointsAroundLargeStaticObjects();\n                }\n                else\n                {\n                    switch (m_type)\n                    {\n                        case MyGuiScreenGamePlayType.EDITOR_STORY:  // don't create them in the editor (use Shift+M)\n                        case MyGuiScreenGamePlayType.EDITOR_MMO:\n                        case MyGuiScreenGamePlayType.EDITOR_SANDBOX:\n                            MyWayPointGraph.RemoveWaypointsAroundLargeStaticObjects();\n                            MyWayPointGraph.SetVisibilityOfAllWaypoints(true);\n                            break;\n                        default:\n                            MyWayPointGraph.CreateWaypointsAroundLargeStaticObjects();\n                            MyWayPointGraph.SetVisibilityOfAllWaypoints(MyHud.ShowDebugWaypoints);\n                            break;\n                    }\n                }\n            }\n\n\n            if (MyMinerGame.IsGameReady)\n            {\n                if (MyLoadingPerformance.Instance.IsTiming)\n                {\n                    MyLoadingPerformance.Instance.LoadingName = MyMissions.ActiveMission == null ? \"No mission\" : MyMissions.ActiveMission.Name.ToString();\n                    MyLoadingPerformance.Instance.FinishTiming();\n                }\n\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Audio\");\n\n                if (MyAudio.GetMusicState() == MyMusicState.Stopped &&\n                    MyAudio.GetMusicCue() == null &&\n                    !MyAudio.HasAnyTransition() &&\n                    MyMinerGame.TotalTimeInMilliseconds - m_firstTimeLoaded >= 1000)\n                {\n                    if (IsMainMenuActive())\n                    {\n                        MyAudio.ApplyTransition(MyMusicTransitionEnum.MainMenu);\n                        MyAudio.AddCue2D(MySoundCuesEnum.MenuWelcome);\n                    }\n                    else if (IsCreditsActive())\n                    {\n                        MyAudio.ApplyTransition(MyMusicTransitionEnum.MainMenu);\n                    }\n                    else if (IsGameActive() || IsPureFlyThroughActive())\n                    {\n                        MyAudio.ApplyTransition(MyMusicTransitionEnum.CalmAtmosphere);\n                    }\n                }\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Editor\");\n\n                if (IsEditorActive() || IsIngameEditorActive())\n                {\n                    MyEditor.Static.Update();\n                    EditorControls.Update();\n                }\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n                MyRadar.Update();\n                MyFriendlyFire.Update();\n\n                if (m_fadingOut)\n                {\n                    m_fadeAlpha += m_fadeSpeed;\n                    if (m_fadeAlpha >= 1.0f)\n                    {\n                        m_fadeAlpha = 1.0f;\n                        if (FadedOut != null)\n                            FadedOut();\n                        m_fadingOut = false;\n                    }\n                }\n                else if (m_fadingIn)\n                {\n                    m_fadeAlpha -= m_fadeSpeed;\n                    if (m_fadeAlpha <= 0.0f)\n                    {\n                        m_fadeAlpha = 0.0f;\n                        if (FadedIn != null)\n                            FadedIn();\n                        m_fadingIn = false;\n                    }\n                }\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"NonBackgroundThread\");\n            if (!MyEditor.Static.IsBackgroundWorkThreadAlive())\n            {\n                if (m_backgroudThreadWasWorking)\n                {\n                    MyRender.Enabled = true;\n                }\n                m_backgroudThreadWasWorking = false;\n\n                if (MySession.PlayerShip != null)\n                {\n                    ProcessSectorBoundaries();\n                }\n\n                //  If we detect logged off player during active game (story or MMO, but not main-menu-fly-through), we close actual game and practicaly restart it all\n                if (StartTimeoutClosing)\n                {\n                    //  We must shut-down any game that may be played right now - becase loggouted player is a weird state and we need to reset it all\n                    MyGuiManager.BackToMainMenu();\n                    MyGuiManager.CloseAllScreensExceptThisOneAndAllTopMost(this);\n                    StartTimeoutClosing = false;\n                }\n\n                if (MyMinerGame.IsPaused())\n                {\n                    MyCamera.Zoom.PauseZoomCue();\n                }\n                else\n                {\n\n                    if (MyMinerGame.IsGameReady)\n                    {\n                        if (IsGameActive())\n                        {\n                            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Global events\");\n                            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MySunWind\");\n                            MySunWind.IsVisible = MyGuiScreenSolarSystemMap.Static == null;\n                            MySunWind.Update();\n                            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n                            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyMeteorWind\");\n                            MyMeteorWind.Update();\n                            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n                            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyIceStorm\");\n                            MyIceStorm.Update();\n                            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n                            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n                            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyAttackFormations\");\n                            MyAttackFormations.Instance.Update();\n                            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n                            //TODO\n                            /*\n                           if (MyFakes.ENABLE_SHOUT)\n                           {\n                               MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyShouts\");\n                               MyShouts.Update();\n                               MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n                           }  */\n                        }\n\n                        MyRoutefindingHelper.AdvanceRoutefinding();\n\n                        MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyEntityDetectorsManager.Update\");\n                        MyEntityDetectorsManager.Update();\n                        MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n                        MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyEntities.UpdateBeforeIntegration\");\n                        UpdateBeforeSimulation();\n                        MyEntities.UpdateBeforeSimulation();\n                        MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n\n                        MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Dust+MyExplosions+MyDistantImpostors\");\n                        MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"UpdateAndCalculateDustColors\");\n                        UpdateAndCalculateDustColors();\n                        MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n                        MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Explosions update\");\n                        MyExplosions.Update();\n                        MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n                        MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Impostors update\");\n                        MyDistantImpostors.Update();\n                        MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n                        MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n\n                        if (MyFakes.MWBUILDER)\n                        {                          /*\n                        MyVoxelMap voxelMap = MyVoxelMaps.GetVoxelMaps()[0];\n\n                        voxelMap.InvalidateCache(new MyMwcVector3Int(0, 0, 0), new MyMwcVector3Int(1024, 1024, 1024));\n                        MyVoxelMaps.RecalcVoxelMaps();     */\n                        }\n\n\n\n                        MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyPhysics-Simulate\");\n                        if (deltaphys <= 0)\n                        {\n                            if (PHYSICS_SIMULATION_SLOWDOWN)\n                                deltaphys = 30;\n                            else\n                                deltaphys = 0;\n                            //  Physics integration\n                            // dont allow physics for editor - god mode \n                            switch (m_type)\n                            {\n                                case MyGuiScreenGamePlayType.EDITOR_STORY:\n                                case MyGuiScreenGamePlayType.EDITOR_MMO:\n                                case MyGuiScreenGamePlayType.EDITOR_SANDBOX:\n                                    //MyPhysics.physicsSystem.Simulate(MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS);\n                                    MyPhysics.physicsSystem.Simulate(0.0f);\n                                    break;\n                                default:\n                                    MyPhysics.physicsSystem.Simulate(MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS);\n                                    break;\n                            }\n                        }\n                        else\n                            deltaphys--;\n                        MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n                        MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyTrailerLoad, MyEntities-UAI, MySunWind, WpGen, MySession\");\n                        //  If this is trailer in load phase, we update attached object's positions to values from files\n                        //  We must do it before 'after integration', otherwise velocity/speed won't be calculated with correct positions\n                        MyTrailerLoad.Update();\n\n                        if (IsGameActive() || IsIngameEditorActive())\n                        {\n                            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MySession.Update\");\n                            System.Diagnostics.Debug.Assert(MySession.Static != null, \"Session cannot be null in the game\");\n                            MySession.Static.Update();\n                            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n                        }\n\n                        MyEnemyTargeting.Update();\n\n                        //Do it after MySession.Static.Update(); because they move objects there, and we shoot here\n                        MyEntities.UpdateAfterSimulation();\n\n                        MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyProjectiles\");\n                        //Be careful, projectiles must be updated AFTER physics to get correct velocity results!\n                        //Also must be after UpdateAfterIntegration to have fired bullets\n                        MyProjectiles.Update();\n                        MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n\n                        //Update sun\n                        MyRender.Sun.Direction = -MyGuiScreenGamePlay.Static.GetDirectionToSunNormalized();\n                        MyRender.Sun.Color = MySunWind.IsActive ? MySunWind.GetSunColor() : new Vector4(MySector.SunProperties.SunDiffuse, 1.0f);\n                        MyRender.Sun.BackColor = MySector.SunProperties.BackSunDiffuse;\n                        MyRender.Sun.BackIntensity = MySector.SunProperties.BackSunIntensity;\n                        MyRender.Sun.SpecularColor = MySector.SunProperties.SunSpecular;\n                        MyRender.Sun.Intensity = MySector.SunProperties.SunIntensity * (MySession.Is25DSector ? 2.5f : 1);\n                        MyRender.AmbientColor = MySector.SunProperties.AmbientColor;\n                        MyRender.AmbientMultiplier = MySector.SunProperties.AmbientMultiplier;\n                        MyRender.EnvAmbientIntensity = MySector.SunProperties.EnvironmentAmbientIntensity;\n\n\n                        MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n                    }\n                }\n                ////////////////////////////////////////////////////////////////////////////////////////////////////////////\n                //  From where will be camera looking? (needs to be called after physics integration - because for view matrix we need to know current position of player's ship)\n                ////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Camera\");\n                MyCamera.Update();\n\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Update spectator\");\n\n                if ((CameraAttachedTo == MyCameraAttachedToEnum.PlayerMinerShip) && (MySession.PlayerShip == null))\n                {\n                    CameraAttachedTo = MyCameraAttachedToEnum.Spectator;\n                }\n\n                switch (CameraAttachedTo)\n                {\n                    case MyCameraAttachedToEnum.Spectator:\n                        MyCamera.SetViewMatrix(MySpectator.GetViewMatrix());\n                        break;\n\n                    case MyCameraAttachedToEnum.PlayerMinerShip:\n                        MyCamera.SetViewMatrix(MySession.PlayerShip.GetViewMatrix());\n                        break;\n\n                    case MyCameraAttachedToEnum.BotMinerShip:\n                        if (Static.ShipForSimpleTesting != null)\n                        {\n                            MyCamera.SetViewMatrix(MyGuiScreenGamePlay.Static.ShipForSimpleTesting.GetViewMatrix());\n                        }\n                        break;\n\n                    case MyCameraAttachedToEnum.PlayerMinerShip_ThirdPersonFollowing:\n                        MySpectator.Position = MySession.PlayerShip.GetPosition() + ThirdPersonCameraDelta;\n                        MySpectator.Target = MySession.PlayerShip.GetPosition();\n                        MyCamera.SetViewMatrix(MySpectator.GetViewMatrix());\n                        break;\n\n                    case MyCameraAttachedToEnum.PlayerMinerShip_ThirdPersonDynamic:\n                        {\n                            MySmallShip playerShip = MySession.PlayerShip;\n\n                            if (MySession.Is25DSector)\n                            {\n\n                                Vector3 forward = playerShip.GetWorldRotation().Forward;\n                                forward.Y = 0;\n                                forward.Normalize();\n                                //Vector3 right = Vector3.Normalize(playerShip.GetWorldRotation().Right.Project(Vector3.Right));\n                                Vector3 right = Vector3.Right;\n                                Vector3 up = Vector3.Up;\n                                right = Vector3.Cross(up, forward);\n\n                                MyThirdPersonSpectator.TargetOrientation = Matrix.CreateWorld(Vector3.Zero, forward, up);\n\n                                //MyThirdPersonSpectator.TargetOrientation = Matrix.Identity;\n                            }\n                            else\n                                MyThirdPersonSpectator.TargetOrientation = playerShip.GetWorldRotation();\n\n                            MyThirdPersonSpectator.Target = playerShip.GetPosition();\n\n                            MyThirdPersonSpectator.Update();\n                            if (!MySession.Is25DSector)\n                            {\n                                MyThirdPersonSpectator.HandleIntersection(\n                                    playerShip, true, playerShip.GetHeadPosition(), playerShip.GetHeadDirection());\n                            }\n\n                            MyCamera.SetViewMatrix(MyThirdPersonSpectator.GetViewMatrix(\n                                MyCamera.FieldOfView,\n                                MyCamera.Zoom.GetZoomLevel(),\n                                true, playerShip.GetHeadPosition(), playerShip.GetHeadDirection())\n                                );\n                        }\n                        break;\n\n                    case MyCameraAttachedToEnum.PlayerMinerShip_ThirdPersonStatic:\n                        MyCamera.SetViewMatrix(MySpectator.GetViewMatrix());\n                        break;\n\n                    case MyCameraAttachedToEnum.Drone:\n                        Debug.Assert(IsControlledDrone);\n                        MyCamera.SetViewMatrix(ControlledDrone.GetViewMatrix());\n                        break;\n                    case MyCameraAttachedToEnum.Camera:\n                        Debug.Assert(ControlledCamera != null);\n                        MyCamera.SetViewMatrix(ControlledCamera.GetViewMatrix());\n                        //MyCamera.ProjectionMatrix = (ControlledCamera.GetProjectionMatrix());\n                        break;\n\n                    case MyCameraAttachedToEnum.LargeWeapon:\n                        Debug.Assert(ControlledLargeWeapon != null);\n                        MyCamera.SetViewMatrix(ControlledLargeWeapon.GetViewMatrix());\n                        break;\n                }\n\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n                MyRender.PrepareEntitiesForDrawStart();\n\n                if (MyMinerGame.IsGameReady)\n                {\n                    MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Update playership\");\n\n                    // Update spectator reflector properties\n                    if (MySession.PlayerShip != null)\n                    {\n                        MyRender.DrawSpectatorReflector = CameraAttachedTo == MyCameraAttachedToEnum.Spectator;\n\n                        // Update player light properties\n                        MyRender.PlayerLight = MySession.PlayerShip.Light;\n                        MyRender.SpectatorReflector = MySession.PlayerShip.Light;\n                        MyRender.DrawPlayerLightShadow = CameraAttachedTo != MyCameraAttachedToEnum.PlayerMinerShip;\n\n\n#if !RENDER_PROFILING\n                        //We dont want to be bothered by gameplay stuff in editor or profiling\n                        if ((m_sessionType == MyMwcStartSessionRequestTypeEnum.EDITOR_STORY) ||\n                            (m_sessionType == MyMwcStartSessionRequestTypeEnum.EDITOR_SANDBOX) ||\n                            (m_sessionType == MyMwcStartSessionRequestTypeEnum.EDITOR_MMO))\n#endif\n                        {\n                            MySession.PlayerShip.Fuel = MySession.PlayerShip.MaxFuel;\n                            MySession.PlayerShip.Oxygen = MySession.PlayerShip.MaxOxygen;\n                            MySession.PlayerShip.AddHealth(MySession.PlayerShip.MaxHealth);\n                            MySession.PlayerShip.ArmorHealth = MySession.PlayerShip.MaxArmorHealth;\n                            MySession.PlayerShip.Weight = MySession.PlayerShip.ShipTypeProperties.Physics.Mass;\n                            MySession.Static.Player.RestoreHealth();\n\n                            foreach (Inventory.MyInventoryItem item in MySession.PlayerShip.Weapons.AmmoInventoryItems.GetAmmoInventoryItems())\n                            {\n                                item.Amount = item.MaxAmount;\n                            }\n                        }\n\n                        if (IsCheatEnabled(MyGameplayCheatsEnum.INFINITE_AMMO))\n                        {\n                            foreach (Inventory.MyInventoryItem item in MySession.PlayerShip.Weapons.AmmoInventoryItems.GetAmmoInventoryItems())\n                            {\n                                item.Amount = item.MaxAmount;\n                            }\n                        }\n                        if (IsCheatEnabled(MyGameplayCheatsEnum.INFINITE_FUEL))\n                        {\n                            MySession.PlayerShip.Fuel = MySession.PlayerShip.MaxFuel;\n                        }\n                        if (IsCheatEnabled(MyGameplayCheatsEnum.INFINITE_OXYGEN))\n                        {\n                            MySession.PlayerShip.Oxygen = MySession.PlayerShip.MaxOxygen;\n                        }\n\n                        if ((m_quickZoomOut || m_quickZoomWasUsed) && MyCamera.Zoom.GetZoomLevel() == 1.0f)\n                        {\n                            m_quickZoomOut = false;\n                            m_quickZoomWasUsed = false;\n                        }\n                    }\n                    MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n                }\n\n                //ProcessSectorBoundaries();\n\n                ////////////////////////////////////////////////////////////////////////////////////////////////////////////\n                //  Update camera forward and sound after view matrix is updated, because you need actual forward and up vectors\n                ////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\n                MyCamera.EnableForward();\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyAudio.ReverbControl\");\n\n                //  Update reverb coeficient and whole sound engine. This needs to be called!!!\n                //MyFpsManager.AddToFrameDebugText(\"MySounds.ReverbControl: \" + MyUtils.GetFormatedFloat(MySounds.ReverbControl, 5));\n                MyAudio.ReverbControl = MyVoxelMaps.GetReverb(MyCamera.Position);\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyLights.Update\");\n                MyLights.Update();\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n                MyDebrisField.Update();\n\n            }\n            else\n            {\n                m_backgroudThreadWasWorking = true;\n            }\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n\n            if (MyMinerGame.IsGameReady)\n            {\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Trailer+UpdateMenu+Hud\");\n\n                if (MyMwcFinalBuildConstants.ENABLE_TRAILER_SAVE == true/* && GetGameType() != MyGuiScreenGamePlayType.GAME_SANDBOX*/)\n                {\n                    MyTrailerSave.UpdatePositionsAndOrientations();\n                    MyTrailerSave.IncreaseActiveTick();\n                }\n\n                if (IsGameActive())\n                {\n                    m_selectAmmoMenu.Update();\n                    m_wheelControlMenu.Update();\n                }\n\n                MyHudNotification.Update();\n\n                if (IsGameActive()) // enable cursor drawing if we have ammo selection opened\n                {\n                    DrawMouseCursor = (m_selectAmmoMenu.IsEnabled && IsSelectAmmoVisible());\n                }\n\n\n                if (MyFakes.TEST_MULTIPLE_LOAD_UNLOAD && m_loadMultiple)\n                {\n                    m_loadMultiple = false;\n                    int count = m_multipleLoadsCount;\n\n                    /*\n                    string username = MyConfig.Username;\n                    string password = MyConfig.Password;\n\n                    int modelMeshes = MyPerformanceCounter.PerAppLifetime.MyModelsMeshesCount;\n                    int modelVertices = MyPerformanceCounter.PerAppLifetime.MyModelsVertexesCount;\n                    int modelTriangles = MyPerformanceCounter.PerAppLifetime.MyModelsTrianglesCount;\n\n                    MyGuiManager.AddScreen(new MyGuiScreenLoginProgress(username, password,\n                                                                  new MyGuiScreenStartQuickLaunch(\n                                                                      MyMwcQuickLaunchType.NEW_STORY, MyTextsWrapperEnum.StartGameInProgressPleaseWait), null));\n                    */\n\n                    MyScriptWrapper.TravelToMission(MyFakes.TEST_MULTIPLE_LOAD_UNLOAD_MISSION);\n\n\n                    return false;\n                }\n\n\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n            }\n\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock(profBlock);\n\n\n\n\n            if (MyFakes.TEST_MISSION_GAMEPLAY && MyMinerGame.IsGameReady)\n            {\n                m_missionGameplayTestDelay -= MyConstants.PHYSICS_STEP_SIZE_IN_MILLISECONDS;\n                if (m_missionGameplayTestDelay <= 0)\n                {\n                    m_missionGameplayTestDelay = MyFakes.TEST_MISSION_GAMEPLAY_DURATION;\n\n                    if (m_missionGameplayKillsRemaining > 0)\n                    {\n                        m_missionGameplayKillsRemaining--;\n                        MySession.PlayerShip.DoDamage(0, 10000, 0, MyDamageType.Explosion, MyAmmoType.Explosive, null);\n                        MyGuiScreenGamePlay.Static.Restart();\n                        return false;\n                    }\n\n                    if (MyMissions.ActiveMission == null)\n                    {\n                        MyMissions.RefreshAvailableMissions();\n                        var availableMissions = MyMissions.GetAvailableMissions();\n                        if (availableMissions.Count > 0)\n                        {\n                            MyMission mission = null;\n                            foreach (MyMission m in availableMissions)\n                            {\n                                if (m.RequiredMissions.Contains(m_lastMissionID))\n                                {\n                                    mission = m;\n                                    break;\n                                }\n                            }\n\n                            if (mission != null)\n                            {\n                                MyScriptWrapper.TravelToMission(mission.ID);\n                            }\n                        }\n                        else\n                        { //no next missions => we have reached the end of singleplayer game\n                        }\n                    }\n                    else\n                    {\n                        m_lastMissionID = MyMissions.ActiveMission.ID;\n                        MyObjective activeObjective = MyMissions.ActiveMission.ActiveObjectives[0];\n                        m_lastObjective = activeObjective;\n\n                        if (m_missionGameplayKillsRemaining == 0 && (m_lastObjective == null || m_lastObjective.SaveOnSuccess))\n                        {\n                            m_missionGameplayKillsRemaining = MyFakes.TEST_MISSION_GAMEPLAY_AUTO_KILLS;\n                        }\n\n                        MyMissionGameplayStats statistics = new MyMissionGameplayStats\n                        {\n                            FPS = MyFpsManager.GetFps(),\n                            FrameTimeAvg = (float)MyFpsManager.FrameTimeAvg,\n                            FrameTimeMax = (int)MyFpsManager.FrameTimeMax,\n                            FrameTimeMin = (int)MyFpsManager.FrameTimeMin,\n\n                            GC = GC.GetTotalMemory(false),\n                            WorkingSet = Environment.WorkingSet,\n\n                            // TODO: Videomem\n                            VideoMemAllocated = 1.0f, //MyProgram.GetResourcesSizeInMB(),\n                            VideoMemAvailable = MyMinerGame.Static.GraphicsDevice.AvailableTextureMemory / (1024.0f * 1024.0f)\n                        };\n\n                        Dictionary<MyMissionID, MyMissionGameplayStats> missionStats;\n                        m_missionGameplayStats.TryGetValue(MyMissions.ActiveMission.ID, out missionStats);\n                        if (missionStats == null)\n                        {\n                            missionStats = new Dictionary<MyMissionID, MyMissionGameplayStats>();\n                            m_missionGameplayStats.Add(MyMissions.ActiveMission.ID, missionStats);\n                        }\n\n                        if (missionStats.ContainsKey(activeObjective.ID))\n                        {\n                            missionStats.Remove(activeObjective.ID);\n                        }\n\n                        missionStats.Add(activeObjective.ID, statistics);\n\n\n                        //Store them each time because of possible crash\n                        StoreMissionStats();\n\n                        if (activeObjective.Location != null && activeObjective.Location.Entity != null)\n                        {\n                            Vector3 objectivePosition = activeObjective.Location.Entity.GetPosition();\n                            MySession.PlayerShip.SetPosition(objectivePosition + -20 * Vector3.Forward);\n                        }\n                        else\n                        {\n                            if (activeObjective.MissionEntityIDs.Count > 0)\n                            {\n                                MyEntity ent = MyEntities.GetEntityByIdOrNull(new MyEntityIdentifier(activeObjective.MissionEntityIDs[0]));\n                                if (ent != null)\n                                {\n                                    Vector3 objectivePosition = ent.GetPosition();\n                                    MySession.PlayerShip.SetPosition(objectivePosition + -20 * Vector3.Forward);\n                                }\n                            }\n                        }\n\n                        MyObjective.SkipSubmission = true;\n                    }\n                }\n                return false;\n            }\n\n            // detect if controlled large weapon or camera are in working state (Enabled and IsElectrified)\n            if (ControlledLargeWeapon != null && !ControlledLargeWeapon.IsWorking() && !DetachingForbidden)\n            {\n                CameraAttachedTo = MyCameraAttachedToEnum.PlayerMinerShip;\n                ReleaseControlOfLargeWeapon();\n            }\n            if (ControlledCamera != null && !ControlledCamera.IsWorking())\n            {\n                ReleaseControlOfCamera();\n            }\n\n            /*\n            m_backgroundWorkerCanRun = false;\n            while (m_backgroundWorkerRunning)\n            {\n            }\n              */\n            return true;\n        }\n\n        private void StoreMissionStats()\n        {\n            var filePath = Path.Combine(MyFileSystemUtils.GetApplicationUserDataFolder(), \"_MissionStatistics.txt\");\n            using (var output = new StreamWriter(File.Open(filePath, FileMode.Create)))\n            {\n                StringBuilder line = new StringBuilder();\n\n                line.Clear();\n                line.Append(\"Mission,Objective,FPS,FrameTimeAvg,FrameTimeMin,FrameTimeMax,GC,WorkingSet,VMAllocated,VMAvailable\");\n                output.WriteLine(line);\n\n                foreach (var missionStats in m_missionGameplayStats)\n                {\n                    foreach (var stats in missionStats.Value)\n                    {\n                        line.Clear();\n                        line.Append(MyTextsWrapper.Get(MyMissions.GetMissionByID(missionStats.Key).Name).ToString() + \",\");\n                        line.Append(MyMissions.GetMissionByID(stats.Key).NameTemp.ToString() + \",\");\n                        line.Append(stats.Value.FPS.ToString(System.Globalization.CultureInfo.InvariantCulture) + \",\");\n                        line.Append(stats.Value.FrameTimeAvg.ToString(System.Globalization.CultureInfo.InvariantCulture) + \",\");\n                        line.Append(stats.Value.FrameTimeMin.ToString(System.Globalization.CultureInfo.InvariantCulture) + \",\");\n                        line.Append(stats.Value.FrameTimeMax.ToString(System.Globalization.CultureInfo.InvariantCulture) + \",\");\n                        line.Append(stats.Value.GC.ToString(System.Globalization.CultureInfo.InvariantCulture) + \",\");\n                        line.Append(stats.Value.WorkingSet.ToString(System.Globalization.CultureInfo.InvariantCulture) + \",\");\n                        line.Append(stats.Value.VideoMemAllocated.ToString(System.Globalization.CultureInfo.InvariantCulture) + \",\");\n                        line.Append(stats.Value.VideoMemAvailable.ToString(System.Globalization.CultureInfo.InvariantCulture) + \",\");\n                        output.WriteLine(line);\n                    }\n                }\n\n                output.Flush();\n                output.Close();\n            }\n        }\n\n        private void ShowOrHideNotification(bool show, ref MyHudNotification.MyNotification notification, MyTextsWrapperEnum text, MyGameControlEnums? gameControl)\n        {\n            if (show)\n            {\n                if (notification == null)\n                {\n                    notification = new MyHudNotification.MyNotification(text, MyHudConstants.MISSION_FONT, MyHudNotification.DONT_DISAPEAR, null, null);\n                    if (gameControl.HasValue)\n                    {\n                        notification.SetTextFormatArguments(new object[] { MyGuiManager.GetInput().GetGameControlTextEnum(gameControl.Value) });\n                    }\n                    notification.Disappear();\n                }\n\n                if (notification.IsDisappeared())\n                {\n                    notification.Appear();\n                    MyHudNotification.AddNotification(notification);\n                }\n            }\n            else\n            {\n                if (notification != null && !notification.IsDisappeared())\n                    notification.Disappear();\n            }\n        }\n\n        private void UpdateGPSReminder()\n        {\n            var gpsTarget = /*MyMissions.ActiveMission == null ? null : */MyHud.GetGPSGoalEntity(MySession.PlayerShip.GetPosition());\n\n            if (m_gpsLocationExistsTime.HasValue)\n            {\n                var x = MyMinerGame.TotalGamePlayTimeInMilliseconds - MathHelper.Max(m_gpsLocationExistsTime.Value, MyHud.LastGPS);\n                bool timeCheck = MyMinerGame.TotalGamePlayTimeInMilliseconds - MathHelper.Max(m_gpsLocationExistsTime.Value, MyHud.LastGPS) > TIME_UNTIL_GPS_REMINDER;\n\n                if (timeCheck)\n                {\n                    if (!MyHud.IsGPSWorking() && m_showGPSNotification.IsDisappeared() && gpsTarget != null && MySession.PlayerShip == ControlledEntity)\n                    {\n                        m_showGPSNotification.SetTextFormatArguments(new object[] { MyGuiManager.GetInput().GetGameControlTextEnum(MyGameControlEnums.GPS) });\n                        m_showGPSNotification.Appear();\n                        MyHudNotification.AddNotification(m_showGPSNotification);\n                    }\n                }\n                else\n                {\n                    // Hide notification when ie. mission initiated new GPS call\n                    m_showGPSNotification.Disappear();\n                }\n\n                if (gpsTarget == null)\n                {\n                    m_showGPSNotification.Disappear();\n                    m_gpsLocationExistsTime = null;\n                }\n            }\n            else\n            {\n                if (gpsTarget != null)\n                {\n                    m_gpsLocationExistsTime = MyMinerGame.TotalTimeInMilliseconds;\n                }\n            }\n        }\n\n        void BackgroundWorkerThread()\n        {\n            while (m_backgroundWorkerCanRun)\n            {\n                //GameTime gameTime = GetGameTime(ref lastTime);\n\n                DrawLoadAnimation();\n\n                //UpdateNetworkSession();\n            }\n\n            m_backgroundWorkerRunning = false;\n        }\n\n        public void DrawLoading()\n        {\n            if (m_loadingScreen != null)\n            {\n                MyGuiManager.BeginSpriteBatch();\n\n                m_loadingScreen.DrawLoading(0.0f);\n\n                MyGuiManager.EndSpriteBatch();\n            }\n        }\n\n        public void DrawLoadAnimation()\n        {\n            if ((MyMinerGame.Static.GraphicsDevice == null) || MyMinerGame.Static.GraphicsDevice.IsDisposed)\n                return;\n\n            try\n            {\n                DrawLoading();\n\n                //   MyMinerGameDX.Static.GraphicsDevice.Present();\n\n                //  Thread.Sleep(MyGuiConstants.LOADING_THREAD_DRAW_SLEEP_IN_MILISECONDS);\n            }\n            catch\n            {\n                // If anything went wrong (for instance the graphics device was lost\n                // or reset) we don't have any good way to recover while running on a\n                // background thread. Setting the device to null will stop us from\n                // rendering, so the main game can deal with the problem later on.\n                //MyMinerGameDX.Static.GraphicsDevice = null;\n            }\n        }\n\n        private void UpdateBeforeSimulation()\n        {\n            //MySession.PlayerShip.Faction = MyMwcObjectBuilder_FactionEnum.China;\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyGuiScreenGameplay.UpdateBeforeIntegration\");\n\n            m_madelynRefillTimer += MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS;\n            if (m_madelynRefillTimer > MyMissionConstants.MADELYN_REFILL_TIME)\n            {\n                RefillMadelyn();\n                m_madelynRefillTimer -= MyMissionConstants.MADELYN_REFILL_TIME;\n            }\n\n            MyBotCoordinator.Update();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        private void UpdateAndCalculateDustColors()\n        {\n            ResultDustColor = Vector4.Zero; //not sure where to zeroize this\n            // Calculate weight for each color and then calculate result color using weights\n            Vector4 sectorDustColor = MyGuiScreenGamePlay.SectorDustColor;\n            Vector4 colorSum = Vector4.Zero;\n            PartialDustColor.Add(sectorDustColor);\n            foreach (Vector4 color in PartialDustColor)\n            {\n                colorSum += color;\n            }\n\n            Vector4 resultColor = Vector4.Zero;\n            foreach (Vector4 color in PartialDustColor)\n            {\n                Vector4 weight = color / colorSum;\n                resultColor += color * weight;\n            }\n\n            if (resultColor == sectorDustColor)\n                resultColor = Vector4.Zero;\n            ResultDustColor = resultColor;\n            PartialDustColor.Clear();\n        }\n\n        public static void FillEditorNotifications()\n        {\n            if (MyFakes.EDITOR_ENABLE_HOWTO_NOTIFICATION)\n            {\n                // Notification about association of the selection & rotation controls:\n                object[] args = new object[2];\n                args[0] = MyGuiManager.GetInput().GetControl(MyMouseButtonsEnum.Left, MyGuiGameControlType.EDITOR).GetControlButtonName(MyGuiInputDeviceEnum.Mouse);\n                args[1] = MyGuiManager.GetInput().GetControl(MyMouseButtonsEnum.Right, MyGuiGameControlType.EDITOR).GetControlButtonName(MyGuiInputDeviceEnum.Mouse);\n                MyHudNotification.AddNotification(new MyHudNotification.MyNotification(MyTextsWrapperEnum.NotificationEditorSelectAndRotate, null, true, args));\n            }\n        }\n\n        void InitSounds()\n        {\n            if (m_type == MyGuiScreenGamePlayType.CREDITS || m_type == MyGuiScreenGamePlayType.MAIN_MENU)\n            {\n                MyAudio.GameSoundsOn = false;\n            }\n            else\n            {\n                MyAudio.GameSoundsOn = true;\n            }\n\n            MyAudio.MusicOn = true;\n\n            if (m_type == MyGuiScreenGamePlayType.PURE_FLY_THROUGH)\n            {\n                MyAudio.GameSoundsOn = true;\n                MyAudio.MusicOn = true;\n            }\n        }\n\n        public static MyGuiScreenLoading ReloadGameplayScreen(MyMwcObjectBuilder_Checkpoint checkpoint, MyMwcStartSessionRequestTypeEnum? sessionType = null, MyGuiScreenGamePlayType? gameplayType = null, MyMissionID? startMission = null, MyMwcTravelTypeEnum? travelType = null)\n        {\n            if (MyMultiplayerGameplay.IsRunning)\n                MyMultiplayerGameplay.Static.Suspend();\n\n            if (checkpoint.SectorObjectBuilder != null)\n            {\n                MySession.Static.Is2DSector = MyMwcSectorIdentifier.Is25DSector(checkpoint.SectorObjectBuilder.Name);\n            }\n\n            Debug.Assert((gameplayType != null && sessionType != null) || MyGuiScreenGamePlay.Static != null, \"Set gameplay type and session type, there's no previous gameplay screen\");\n            MyGuiScreenGamePlayType newGameplayType = gameplayType.HasValue ? gameplayType.Value : MyGuiScreenGamePlay.Static.GetGameType();\n            MyMwcStartSessionRequestTypeEnum? newSessionType = sessionType.HasValue ? sessionType.Value : MyGuiScreenGamePlay.Static.GetSessionType();\n            MyGuiScreenGamePlayType? previousGameplaytype = MyGuiScreenGamePlay.Static != null ? MyGuiScreenGamePlay.Static.GetPreviousGameType() : (MyGuiScreenGamePlayType?)null;\n            MyMissionID? previousMissionToStart = MyGuiScreenGamePlay.Static != null ? MyGuiScreenGamePlay.Static.m_missionToStart : (MyMissionID?)null;\n\n            var newGameplayScreen = new MyGuiScreenGamePlay(newGameplayType, previousGameplaytype, checkpoint.CurrentSector, checkpoint.SectorObjectBuilder.Version, newSessionType);\n            newGameplayScreen.m_missionToStart = previousMissionToStart;\n            if (travelType.HasValue)\n                newGameplayScreen.m_travelReason = travelType.Value;\n\n\n            var loadScreen = new MyGuiScreenLoading(newGameplayScreen, MyGuiScreenGamePlay.Static);\n            loadScreen.AddEnterSectorResponse(checkpoint, startMission);\n\n            /*\n            if (MyConfig.NeedShowPerfWarning)\n            {\n                MyGuiScreenPerformanceWarning perfWarningScreen = new MyGuiScreenPerformanceWarning(loadScreen);\n\n                perfWarningScreen.Closed += delegate\n                {\n                    MyGuiManager.AddScreen(loadScreen);\n                };\n\n                MyGuiManager.AddScreen(perfWarningScreen);\n            }\n            else*/\n            {\n                MyGuiManager.AddScreen(loadScreen);\n            }\n\n            return loadScreen;\n        }\n\n        public void TravelToSector(MyMwcSectorIdentifier sectorIdentifier, MyMwcTravelTypeEnum travelType, Vector3 currentShipPosition, MyMissionID? missionToStart = null)\n        {\n            if (MySession.Static != null)\n            {\n                if (m_type == MyGuiScreenGamePlayType.GAME_STORY && !MyClientServer.LoggedPlayer.GetCanSave()) // Game travel is not allowed when user cannot save\n                {\n                    return;\n                }\n                if (!CanTravel && !MyFakes.ENABLE_SOLAR_MAP && !MyFakes.TEST_MULTIPLE_LOAD_UNLOAD)\n                {\n                    return;\n                }\n\n                m_transferToNeighbouringSectorStarted = true;\n\n                m_travelSectorIdentifier = sectorIdentifier;\n                m_travelReason = travelType;\n                m_missionToStart = missionToStart;\n\n                if (m_type != MyGuiScreenGamePlayType.EDITOR_STORY && m_previousType != MyGuiScreenGamePlayType.EDITOR_STORY && !MyFakes.DISABLE_AUTO_SAVE)\n                {\n                    MySession.Static.Player.TravelLeave(m_travelReason);\n\n                    if (!MyMinerGame.IsPaused())\n                        MyMinerGame.SwitchPause();\n\n                    MyServerAction serverAction = MySession.Static.SaveLastCheckpoint(); // Saving before travel, save sector\n                    travelSaveSuccess();\n                }\n                else\n                {\n                    travelSaveSuccess();\n                }\n            }\n        }\n\n        void travelSaveFailed()\n        {\n            ClampPlayerToBorderSafeArea();\n\n            m_transferToNeighbouringSectorStarted = false;\n\n            // Unpack\n            MySession.Static.Player.TravelEnter();\n\n            if (MyMinerGame.IsPaused())\n                MyMinerGame.SwitchPause();\n        }\n\n        void travelSaveSuccess()\n        {\n            Debug.Assert(m_travelSectorIdentifier.SectorType == MyMwcSectorTypeEnum.STORY, \"Travel is only possible in story game and story editor\");\n            MySession.Static.Travel(m_travelReason, m_travelSectorIdentifier);\n        }\n\n        public void ClampPlayerToBorderSafeArea()\n        {\n            // Move player out of travel zone\n            float safeDistance = 50;\n            float maxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF - safeDistance;\n            Vector3 border = new Vector3(maxDistance, maxDistance, maxDistance);\n            MySession.PlayerShip.SetPosition(Vector3.Clamp(MySession.PlayerShip.GetPosition(), -border, border));\n        }\n\n        //  Check if we are still in sector and if not load neighbouring sector. Also display info to user that we are approaching the border.\n        void ProcessSectorBoundaries()\n        {\n            if ((IsGameActive() == false) || (m_transferToNeighbouringSectorStarted)) return;\n\n            Debug.Assert(MySession.PlayerShip != null);\n\n            m_distanceToSectorBoundaries = MyUtils.GetClosestDistanceFromPointToAxisAlignedBoundingBox(\n                MySession.PlayerShip.GetPosition(), MyMwcSectorConstants.SAFE_SECTOR_SIZE_BOUNDING_BOX);\n\n            if (!CanTravelThroughSectorBoundaries())\n            {\n                Vector3 playerPosition = MySession.PlayerShip.GetPosition();\n\n                Vector3 newPlayerPosition = Vector3.Clamp(playerPosition, new Vector3(-MyMwcSectorConstants.SECTOR_SIZE_HALF), new Vector3(MyMwcSectorConstants.SECTOR_SIZE_HALF));\n\n                if (!MyMwcUtils.IsZero(newPlayerPosition - playerPosition))\n                {\n                    MySession.PlayerShip.SetPosition(newPlayerPosition);\n                }\n\n                return;\n            }\n\n            if (MyMwcSectorConstants.SAFE_SECTOR_SIZE_BOUNDING_BOX.Contains(MySession.PlayerShip.GetPosition()) == MinerWarsMath.ContainmentType.Disjoint)\n            {\n                //  Choose neighbouring sector in the correct direction\n                MyMwcVector3Int neighSectorRelCoord = GetSectorIdentifierCoordinatesFromRealCoordinates(MySession.PlayerShip.GetPosition());\n                MyMwcSectorIdentifier sectorIdentifier = new MyMwcSectorIdentifier(m_sectorIdentifier.SectorType, m_sectorIdentifier.UserId, new MyMwcVector3Int(\n                    m_sectorIdentifier.Position.X + neighSectorRelCoord.X,\n                    m_sectorIdentifier.Position.Y + neighSectorRelCoord.Y,\n                    m_sectorIdentifier.Position.Z + neighSectorRelCoord.Z),\n                    null);\n\n                if (CanTravelToSector(sectorIdentifier.Position))\n                {\n                    m_prepareTextureForSectorLoadingScreen = true;\n                    if (m_isPreparedTextureForSectorLoadingScreen)\n                    {\n                        TravelToSector(sectorIdentifier, MyMwcTravelTypeEnum.NEIGHBOUR, MySession.PlayerShip.GetPosition());\n                    }\n                }\n                else\n                {\n                    MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.ForbiddenSolarMapAreaWarning, MyTextsWrapperEnum.Warning, MyTextsWrapperEnum.Ok, null));\n\n                    Vector3 playerPosition = MySession.PlayerShip.GetPosition();\n                    playerPosition = Vector3.Clamp(playerPosition, new Vector3(-MyMwcSectorConstants.SECTOR_SIZE_HALF), new Vector3(MyMwcSectorConstants.SECTOR_SIZE_HALF));\n                    MySession.PlayerShip.SetPosition(playerPosition);\n                }\n            }\n        }\n\n\n        //  Returns sector coordinates e.g. [0, -1, 0] for specified \"point\"\n        // This method was modified to allow travel only to 6 neighbour sectors (up, down, left, right, front, back), no diagonals!\n        public static MyMwcVector3Int GetSectorIdentifierCoordinatesFromRealCoordinates(Vector3 point)\n        {\n            MyMwcVector3Int offset = new MyMwcVector3Int(\n                (int)(point.X / MyMwcSectorConstants.SECTOR_SIZE_HALF),\n                (int)(point.Y / MyMwcSectorConstants.SECTOR_SIZE_HALF),\n                (int)(point.Z / MyMwcSectorConstants.SECTOR_SIZE_HALF));\n\n            if (Math.Abs(point.X) < Math.Max(Math.Abs(point.Y), Math.Abs(point.Z)))\n            {\n                offset.X = 0;\n            }\n            if (Math.Abs(point.Y) < Math.Max(Math.Abs(point.X), Math.Abs(point.Z)))\n            {\n                offset.Y = 0;\n            }\n            if (Math.Abs(point.Z) < Math.Max(Math.Abs(point.X), Math.Abs(point.Y)))\n            {\n                offset.Z = 0;\n            }\n            return offset;\n        }\n\n        public float GetDistanceToSectorBoundaries()\n        {\n            return m_distanceToSectorBoundaries;\n        }\n\n        //  Fading in/out at the beginning and at the end of trailer.\n        //  Or fading-in at the beginning of normal game.\n        void DrawBackgroundFade(float alpha)\n        {\n            if (alpha <= 0) return;\n\n            MyGuiManager.BeginSpriteBatch();\n            MyGuiManager.DrawSpriteBatch(MyGuiManager.GetBlankTexture(), new Rectangle(0, 0, MyMinerGame.ScreenSize.X, MyMinerGame.ScreenSize.Y), new Color(new Vector4(0, 0, 0, alpha)));\n            MyGuiManager.EndSpriteBatch();\n        }\n\n        private Vector2 NormalizedSize()\n        {\n            return new Vector2((float)MyMinerGame.ScreenSize.X / 1920f, (float)MyMinerGame.ScreenSize.Y / 1200f);\n        }\n\n\n        private Vector2 NormalizedSize(MyTexture2D tex)\n        {\n            return new Vector2(tex.Width / 1920f * ((float)MyMinerGame.ScreenSize.Y * 1920f) / ((float)MyMinerGame.ScreenSize.X * 1200f), (tex.Height / 1200f));\n        }\n\n        private Rectangle PosToRect(Vector2 pos, Vector2 tex, MyGuiDrawAlignEnum align)\n        {\n            int Xoff = 0, Yoff = 0;\n            switch (align)\n            {\n                case MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_BOTTOM:\n                    Xoff = -(int)((float)MyMinerGame.ScreenSize.Y / 1200 * tex.X / 2);\n                    Yoff = -(int)((float)MyMinerGame.ScreenSize.Y / 1200 * tex.Y);\n                    break;\n                case MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER:\n                    Xoff = -(int)((float)MyMinerGame.ScreenSize.Y / 1200 * tex.X / 2);\n                    Yoff = -(int)((float)MyMinerGame.ScreenSize.Y / 1200 * tex.Y / 2);\n                    break;\n                case MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_TOP:\n                    Xoff = -(int)((float)MyMinerGame.ScreenSize.Y / 1200 * tex.X / 2);\n                    Yoff = 0;\n                    break;\n                case MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_BOTTOM:\n                    Xoff = 0;\n                    Yoff = -(int)((float)MyMinerGame.ScreenSize.Y / 1200 * tex.Y);\n                    break;\n                case MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER:\n                    Xoff = 0;\n                    Yoff = -(int)((float)MyMinerGame.ScreenSize.Y / 1200 * tex.Y / 2);\n                    break;\n                case MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP:\n                    Xoff = 0;\n                    Yoff = 0;\n                    break;\n                case MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_BOTTOM:\n                    Xoff = -(int)((float)MyMinerGame.ScreenSize.Y / 1200 * tex.X);\n                    Yoff = -(int)((float)MyMinerGame.ScreenSize.Y / 1200 * tex.Y);\n                    break;\n                case MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_CENTER:\n                    Xoff = -(int)((float)MyMinerGame.ScreenSize.Y / 1200 * tex.X);\n                    Yoff = -(int)((float)MyMinerGame.ScreenSize.Y / 1200 * tex.Y / 2);\n                    break;\n                case MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_TOP:\n                    Xoff = -(int)((float)MyMinerGame.ScreenSize.Y / 1200 * tex.X);\n                    Yoff = 0;\n                    break;\n            }\n            return new Rectangle((int)(Xoff + pos.X * (float)MyMinerGame.ScreenSize.X), (int)(Yoff + pos.Y * (float)MyMinerGame.ScreenSize.Y), (int)((float)MyMinerGame.ScreenSize.Y / 1200 * tex.X), (int)((float)MyMinerGame.ScreenSize.Y / 1200 * tex.Y));\n        }\n\n        private void DrawBloodAndOxygen()\n        {\n            if (MySession.PlayerShip != null && MySession.PlayerShip.PlayerBloodTextureOpacity > 0)\n            {\n                MyTexture2D bloodTexture = MyGuiManager.GetBloodTexture();\n                if (bloodTexture != null)\n                {\n                    MyGuiManager.BeginSpriteBatch();\n                    MyGuiManager.DrawSpriteBatch(bloodTexture, new Rectangle(0, 0, MyMinerGame.ScreenSize.X, MyMinerGame.ScreenSize.Y), new Color(1, 1, 1, MySession.PlayerShip.PlayerBloodTextureOpacity));\n                    MyGuiManager.EndSpriteBatch();\n                }\n            }\n            else\n            {\n                MyGuiManager.RemoveBloodTexture();\n            }\n\n            if (MySession.PlayerShip != null && MySession.PlayerShip.Oxygen <= 0)\n            {\n                MyTexture2D oxygenTexture = MyGuiManager.GetLowOxygenTexture();\n                if (oxygenTexture != null)\n                {\n                    MyGuiManager.BeginSpriteBatch();\n                    float opacity = MySession.PlayerShip.NoOxygenTextureOpacity;\n                    MyGuiManager.DrawSpriteBatch(oxygenTexture, new Rectangle(0, 0, MyMinerGame.ScreenSize.X, MyMinerGame.ScreenSize.Y), new Color(opacity, opacity, opacity, opacity));\n                    MyGuiManager.EndSpriteBatch();\n                }\n            }\n            else\n            {\n                MyGuiManager.RemoveNoOxygenTexture();\n            }\n        }\n\n        private float lastBeepTime = 0;\n        private bool beepStatus = true;\n\n        private void DrawRemoteControlScreen()\n        {\n            if (CameraAttachedTo == MyCameraAttachedToEnum.Camera)\n            {\n                MyGuiManager.BeginSpriteBatch();\n                {\n                    Dictionary<string, MyTexture2D> textures = MyGuiManager.GetRemoteViewCameraTextures();\n                    Dictionary<string, Vector2> sizes = MyGuiManager.GetRemoteViewCameraSizes();\n                    Dictionary<string, Vector2> positions = MyGuiManager.GetRemoteViewCameraPositions();\n                    MyGuiManager.DrawSpriteBatch(textures[MyGuiConstants.REMOTE_VIEW_CAMERA_RASTR], new Rectangle(0, 0, MyMinerGame.ScreenSize.X, MyMinerGame.ScreenSize.Y), Color.White);\n                    MyGuiManager.DrawSpriteBatch(textures[MyGuiConstants.REMOTE_VIEW_CAMERA_BOTTOM], PosToRect(positions[MyGuiConstants.REMOTE_VIEW_CAMERA_BOTTOM], sizes[MyGuiConstants.REMOTE_VIEW_CAMERA_BOTTOM], MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_BOTTOM), Color.White);\n                    MyGuiManager.DrawSpriteBatch(textures[MyGuiConstants.REMOTE_VIEW_CAMERA_LEFT_SIDE], PosToRect(positions[MyGuiConstants.REMOTE_VIEW_CAMERA_LEFT_SIDE], sizes[MyGuiConstants.REMOTE_VIEW_CAMERA_LEFT_SIDE], MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER), Color.White);\n                    if (lastBeepTime + 1000 < MyMinerGame.TotalGamePlayTimeInMilliseconds)\n                    {\n                        beepStatus = !beepStatus;\n                        lastBeepTime = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n                    }\n                    if (beepStatus)\n                    {\n                        MyGuiManager.DrawSpriteBatch(textures[MyGuiConstants.REMOTE_VIEW_CAMERA_REC], PosToRect(positions[MyGuiConstants.REMOTE_VIEW_CAMERA_REC], sizes[MyGuiConstants.REMOTE_VIEW_CAMERA_REC], MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_BOTTOM), Color.White);\n                    }\n                    MyGuiManager.DrawSpriteBatch(textures[MyGuiConstants.REMOTE_VIEW_CAMERA_FOCUS], PosToRect(positions[MyGuiConstants.REMOTE_VIEW_CAMERA_FOCUS], sizes[MyGuiConstants.REMOTE_VIEW_CAMERA_FOCUS], MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER), Color.White);\n                    MyGuiManager.DrawSpriteBatch(textures[MyGuiConstants.REMOTE_VIEW_CAMERA_RIGHT_SIDE], PosToRect(positions[MyGuiConstants.REMOTE_VIEW_CAMERA_RIGHT_SIDE], sizes[MyGuiConstants.REMOTE_VIEW_CAMERA_RIGHT_SIDE], MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_CENTER), Color.White);\n                }\n                MyGuiManager.EndSpriteBatch();\n            }\n            else if (CameraAttachedTo == MyCameraAttachedToEnum.Drone)\n            {\n                MyGuiManager.BeginSpriteBatch();\n                {\n                    Dictionary<string, MyTexture2D> textures = MyGuiManager.GetRemoteViewDroneTextures();\n                    Dictionary<string, Vector2> sizes = MyGuiManager.GetRemoteViewDroneSizes();\n                    Dictionary<string, Vector2> positions = MyGuiManager.GetRemoteViewDronePositions();\n                    MyGuiManager.DrawSpriteBatch(textures[MyGuiConstants.REMOTE_VIEW_DRONE_RASTR], new Rectangle(0, 0, MyMinerGame.ScreenSize.X, MyMinerGame.ScreenSize.Y), Color.White);\n                    MyGuiManager.DrawSpriteBatch(textures[MyGuiConstants.REMOTE_VIEW_DRONE_BOTTOM], PosToRect(positions[MyGuiConstants.REMOTE_VIEW_DRONE_BOTTOM], sizes[MyGuiConstants.REMOTE_VIEW_DRONE_BOTTOM], MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_BOTTOM), Color.White);\n                    MyGuiManager.DrawSpriteBatch(textures[MyGuiConstants.REMOTE_VIEW_DRONE_LEFT_SIDE], PosToRect(positions[MyGuiConstants.REMOTE_VIEW_DRONE_LEFT_SIDE], sizes[MyGuiConstants.REMOTE_VIEW_DRONE_LEFT_SIDE], MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER), Color.White);\n                    MyGuiManager.DrawSpriteBatch(textures[MyGuiConstants.REMOTE_VIEW_DRONE_CROSS], PosToRect(positions[MyGuiConstants.REMOTE_VIEW_DRONE_CROSS], sizes[MyGuiConstants.REMOTE_VIEW_DRONE_CROSS], MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER), Color.White);\n                    MyGuiManager.DrawSpriteBatch(textures[MyGuiConstants.REMOTE_VIEW_DRONE_RIGHT_SIDE], PosToRect(positions[MyGuiConstants.REMOTE_VIEW_DRONE_RIGHT_SIDE], sizes[MyGuiConstants.REMOTE_VIEW_DRONE_RIGHT_SIDE], MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_CENTER), Color.White);\n                }\n                MyGuiManager.EndSpriteBatch();\n            }\n            else if (CameraAttachedTo == MyCameraAttachedToEnum.LargeWeapon)\n            {\n                MyGuiManager.BeginSpriteBatch();\n                {\n                    Dictionary<string, MyTexture2D> textures = MyGuiManager.GetRemoteViewWeaponTextures();\n                    Dictionary<string, Vector2> sizes = MyGuiManager.GetRemoteViewWeaponSizes();\n                    Dictionary<string, Vector2> positions = MyGuiManager.GetRemoteViewWeaponPositions();\n                    MyGuiManager.DrawSpriteBatch(textures[MyGuiConstants.REMOTE_VIEW_LARGE_WEAPON_RASTR], new Rectangle(0, 0, MyMinerGame.ScreenSize.X, MyMinerGame.ScreenSize.Y), Color.White);\n                    MyGuiManager.DrawSpriteBatch(textures[MyGuiConstants.REMOTE_VIEW_LARGE_WEAPON_AMMO], PosToRect(positions[MyGuiConstants.REMOTE_VIEW_LARGE_WEAPON_AMMO], sizes[MyGuiConstants.REMOTE_VIEW_LARGE_WEAPON_AMMO], MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_BOTTOM), Color.White);\n                    MyGuiManager.DrawSpriteBatch(textures[MyGuiConstants.REMOTE_VIEW_LARGE_WEAPON_BOTTOM], PosToRect(positions[MyGuiConstants.REMOTE_VIEW_LARGE_WEAPON_BOTTOM], sizes[MyGuiConstants.REMOTE_VIEW_LARGE_WEAPON_BOTTOM], MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_BOTTOM), Color.White);\n                    MyGuiManager.DrawSpriteBatch(textures[MyGuiConstants.REMOTE_VIEW_LARGE_WEAPON_CROSS], PosToRect(positions[MyGuiConstants.REMOTE_VIEW_LARGE_WEAPON_CROSS], sizes[MyGuiConstants.REMOTE_VIEW_LARGE_WEAPON_CROSS], MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER), Color.White);\n                    MyGuiManager.DrawSpriteBatch(textures[MyGuiConstants.REMOTE_VIEW_LARGE_WEAPON_LEFT_SIDE], PosToRect(positions[MyGuiConstants.REMOTE_VIEW_LARGE_WEAPON_LEFT_SIDE], sizes[MyGuiConstants.REMOTE_VIEW_LARGE_WEAPON_LEFT_SIDE], MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER), Color.White);\n                    MyGuiManager.DrawSpriteBatch(textures[MyGuiConstants.REMOTE_VIEW_LARGE_WEAPON_PULSE], PosToRect(positions[MyGuiConstants.REMOTE_VIEW_LARGE_WEAPON_PULSE], sizes[MyGuiConstants.REMOTE_VIEW_LARGE_WEAPON_PULSE], MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_BOTTOM), Color.White);\n                    MyGuiManager.DrawSpriteBatch(textures[MyGuiConstants.REMOTE_VIEW_LARGE_WEAPON_RIGHT_SIDE], PosToRect(positions[MyGuiConstants.REMOTE_VIEW_LARGE_WEAPON_RIGHT_SIDE], sizes[MyGuiConstants.REMOTE_VIEW_LARGE_WEAPON_RIGHT_SIDE], MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_CENTER), Color.White);\n                }\n                MyGuiManager.EndSpriteBatch();\n            }\n        }\n\n        float GetBackgroundFadeAlpha()\n        {\n            int delta = MyMinerGame.TotalTimeInMilliseconds - m_startTimeInMilliseconds.Value;\n            if (delta > MyGuiConstants.GAME_PLAY_SCREEN_FADEIN_IN_MILLISECONDS) return 0;\n            return 1 - ((float)delta / (float)MyGuiConstants.GAME_PLAY_SCREEN_FADEIN_IN_MILLISECONDS);\n        }\n\n        [Conditional(\"AUTOBUILD\")]\n        public static void AutobuildTest()\n        {\n            if (FrameCounter <= 10)\n            {\n                FrameCounter++;\n            }\n            else\n            {\n                Environment.Exit(0);\n            }\n        }\n\n        public bool DrawHud = true;\n\n        public override bool Draw(float backgroundFadeAlpha)\n        {\n\n\n            int drawBlock = -1;\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyGuiScreenGamePlay::Draw\", ref drawBlock);\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Autobuild test\");\n\n            AutobuildTest();\n\n\n            //  We start/restart all batched objects in our sprite batch because in game-play screen we do a lot of stuff that's not compatible with it\n            MyGuiManager.EndSpriteBatch();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"Editor load\");\n\n            ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n            //  Draw Editor model\n            ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n            if (IsEditorActive())\n            {\n                MyEditor.Static.LoadInDraw();\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"Camera reset\");\n\n            ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n            //  Draw forward\n            ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n            MyPerformanceCounter.PerCameraDraw.Reset();\n\n#if HOMEKEY_RESET_ENVMAP\n            // Home key to manually refresh environment map\n            if (Keyboard.GetState().IsKeyDown(Keys.Home))\n            {\n                MyEnvironmentMap.Reset();\n            }\n#endif\n\n            //While getting cell, there must not be any other thread running because this voxel can be loading at same time\n            System.Diagnostics.Debug.Assert(!(MyEditor.Static != null && MyEditor.Static.IsBackgroundWorkThreadAlive() && MyRender.Enabled));\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"m_firstDrawCall == FIRST_TOTAL_DELAY\");\n\n            if (m_firstDrawCall == FIRST_TOTAL_DELAY)\n            {\n                MyMwcLog.WriteLine(\"First draw call - before render\");\n\n                MyRender.GetRenderProfiler().StartProfilingBlock(\"Load meteor wind\");\n                MyMeteorWind.LoadInDraw();\n                MyRender.GetRenderProfiler().EndProfilingBlock();\n\n                MyRender.GetRenderProfiler().StartProfilingBlock(\"Preload entities\");\n                //                MyTextureManager.DbgUpdateStats();\n                MyTextureManager.OverrideLoadingMode = LoadingMode.Immediate;\n                MyRender.PreloadEntitiesInRadius(MyRenderConstants.RenderQualityProfile.LodTransitionDistanceFar, MyGuiScreenGamePlay.Static.DrawLoadAnimation);\n                MyRender.GetRenderProfiler().EndProfilingBlock();\n\n                MyRender.GetRenderProfiler().StartProfilingBlock(\"Preload ship\");\n                MySession.PlayerShip.GetShipCockpit(); //Reload\n                MySession.PlayerShip.GetShipCockpitGlass(); //Reload\n                MyRender.GetRenderProfiler().EndProfilingBlock();\n\n                if (IsEditorActive())\n                {\n                    MyRender.GetRenderProfiler().StartProfilingBlock(\"Prefab helper icons\");\n                    MyGuiObjectBuilderHelpers.UpdatePrefabHelperIcons();\n                    MyRender.GetRenderProfiler().EndProfilingBlock();\n                }\n\n                bool foundCache = false;\n                MyRender.GetRenderProfiler().StartProfilingBlock(\"MyLocalVoxelTrianglesCache.LoadAllVoxels\");\n                if (MyFakes.ENABLE_VOXEL_TRIANGLE_CACHING)\n                {\n                    foundCache = MyLocalVoxelTrianglesCache.LoadAllVoxels();\n                }\n                else\n                {\n                    foundCache = true;\n                }\n                MyRender.GetRenderProfiler().EndProfilingBlock();\n\n                MyRender.GetRenderProfiler().StartProfilingBlock(\"MyVoxelMaps.RecalcVoxelMaps\");\n                MyVoxelMaps.RecalcVoxelMaps();\n                MyRender.GetRenderProfiler().EndProfilingBlock();\n\n                if (MyFakes.ENABLE_VOXEL_TRIANGLE_CACHING)\n                {\n                    if (!foundCache)\n                    {\n                        MyRender.GetRenderProfiler().StartProfilingBlock(\"MyLocalVoxelTrianglesCache.SaveAllVoxels\");\n                        MyLocalVoxelTrianglesCache.SaveAllVoxels();\n                        MyRender.GetRenderProfiler().EndProfilingBlock();\n                    }\n                }\n\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyRender.PreloadTextures\");\n                MyVoxelMaterials.MarkAllAsUnused(); // Mark all as unused\n                MyRender.PreloadTexturesInRadius(MyMwcSectorConstants.SECTOR_SIZE); // Used voxel textures will be marked as used\n                MyVoxelMaterials.UnloadUnused(); // Unload all unused (static asteroid voxel textures won't be unused, because they are referenced)\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"MyEnvironmentMap\");\n\n            if (!MyRenderConstants.RenderQualityProfile.ForwardRender)\n            {\n                MyRender.GetRenderProfiler().StartProfilingBlock(\"MyEnvironmentMap.Update\");\n                MyEnvironmentMap.Update();\n                MyRender.GetRenderProfiler().EndProfilingBlock();\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"secondary camera\");\n\n            bool drawSecondaryCameraIndicators =\n                MySession.PlayerShip != null &&\n                IsGameActive() &&\n                DrawHud &&\n                !MyRenderConstants.RenderQualityProfile.ForwardRender &&\n                (IsControlledPlayerShip || IsControlledDrone);\n\n            bool shipSecondaryCamera = IsControlledPlayerShip && ControlledShip.Config.BackCamera.On;\n            bool droneSecondaryCamera = IsControlledDrone && ControlledDrone.Config.BackCamera.On;\n\n            bool drawSecondaryCamera =\n                drawSecondaryCameraIndicators &&\n                (shipSecondaryCamera || droneSecondaryCamera);\n\n            if (drawSecondaryCamera)\n            {\n                MyRender.GetRenderProfiler().StartProfilingBlock(\"MySecondaryCamera.Render\");\n                MySecondaryCamera.Instance.Render();\n                MyRender.GetRenderProfiler().EndProfilingBlock();\n            }\n\n\n            MyCamera.EnableForward();\n\n            MyRender.EnableLightsRuntime = ((IsEditorActive() && MyEditor.EnableLightsInEditor) || !IsEditorActive()) && MyGuiScreenDebugRenderLights.EnableRenderLights;\n\n            // for drone, use smaller near plane distance\n            var useSecondaryRenderSetup = IsControlledDrone;\n            if (useSecondaryRenderSetup)\n            {\n                m_secondarySetup.CallerID = MyRenderCallerEnum.Main;\n                m_secondarySetup.Fov = MyCamera.FovWithZoom;\n                m_secondarySetup.AspectRatio = MyCamera.AspectRatio;\n                m_secondarySetup.ProjectionMatrix = Matrix.CreatePerspectiveFieldOfView(\n                    m_secondarySetup.Fov.Value,\n                    m_secondarySetup.AspectRatio.Value,\n                    MyDroneConstants.NEAR_PLANE_DISTANCE,\n                    MyCamera.FAR_PLANE_DISTANCE);\n                MyRender.PushRenderSetup(m_secondarySetup);\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"Main render\");\n\n            MyRender.Draw();\n\n            if (useSecondaryRenderSetup)\n            {\n                MyRender.PopRenderSetup();\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"FillDebugScreen\");\n\n            FillDebugScreen();\n\n            DrawLoadsCount();\n\n\n            ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n            //  Draw secondary camera and its gui texts\n            ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"DrawSecondaryCamera\");\n            if (drawSecondaryCamera)\n            {\n                DrawSecondaryCamera();\n            }\n\n            if (drawSecondaryCameraIndicators)\n            {\n                DrawSecondaryCameraDescriptions(drawSecondaryCamera);\n            }\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"Bloody remote\");\n\n            DrawBloodAndOxygen();\n\n            DrawRemoteControlScreen();\n\n            MyRender.GetRenderProfiler().StartProfilingBlock(\"DrawHUDAndEditor\");\n            DrawHUDAndEditor(DrawHud, drawSecondaryCamera);\n            MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n            //  Please consider that drawing sprites changed render state, so it must be restored after all 2D rendering is done\n            ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"Hud\");\n\n\n            if (IsGameActive())\n            {\n                //  Enable forward look again (for drawing GUI, texts...)\n                MyCamera.EnableForward();\n            }\n\n            if (IsEditorActive())\n            {\n                if (MyConfig.EditorUseCameraCrosshair && MyEditorGizmo.IsRotationActive() == false)\n                {\n                    MyHud.DrawCameraCrosshair();\n                }\n            }\n            //  Draw fade-in or fade-out (alpha 1 means that black rectangle will be totaly opaque and we won't see nothing from the game)\n            float backgroundFadeAlphaFlyThrough = (!MyGuiScreenGamePlay.Static.IsGameActive() && !IsEditorActive() && MyTrailerLoad.IsEnabled()) ? MyTrailerLoad.GetBackgroundFadeAlpha() : GetBackgroundFadeAlpha();\n            DrawBackgroundFade(backgroundFadeAlphaFlyThrough);\n\n            //  We start/restart all batched objects in our sprite batch because in game-play screen we do a lot of stuff that's not compatible with it\n            MyGuiManager.BeginSpriteBatch();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"EditorControls\");\n\n            if ((IsEditorActive() || IsIngameEditorActive()) && !MyMinerGame.IsPaused())\n            {\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"EditorControls.Draw\");\n                EditorControls.Draw();\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n            }\n            MyGuiManager.EndSpriteBatch();\n\n            if (m_prepareTextureForSectorLoadingScreen && !m_isPreparedTextureForSectorLoadingScreen)\n            {\n                m_textureForSectorLoadingScreen = MyRender.GetBackBufferAsTexture();\n                m_isPreparedTextureForSectorLoadingScreen = true;\n\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyGuiManager.DrawSpriteBatch\");\n                //  ResolveBackBuffer will remove what we rendered from backbuffer so we need to render it again otherwise there will be blink on screen\n                MyGuiManager.BeginSpriteBatch();\n                MyGuiManager.DrawSpriteBatch(m_textureForSectorLoadingScreen, Vector2.Zero, Color.White);\n                MyGuiManager.EndSpriteBatch();\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyCamera.EnableForward\");\n            MyCamera.EnableForward();\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n\n            MyGuiManager.BeginSpriteBatch();\n\n            if (MyMinerGame.IsGameReady && m_loadingScreen != null)\n            {\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"m_loadingScreen.UnloadContent\");\n                m_loadingScreen.UnloadContent();\n                m_loadingScreen = null;\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"--m_firstDrawCall == FIRST_FADE_IN_DELAY\");\n\n            if (--m_firstDrawCall == FIRST_FADE_IN_DELAY)\n            {\n                MyMwcLog.WriteLine(\"First draw call - after render\");\n                MyTextureManager.DbgUpdateStats();\n                MyTextureManager.OverrideLoadingMode = null;\n                GC.Collect();\n                MyMinerGame.IsGameReady = true;\n\n                m_backgroundFadeColor = new Vector4(0, 0, 0, 1.0f);\n                m_fadeAlpha = 1.0f;\n                FadeIn(1 / ((float)FIRST_FADE_IN_DELAY * MyConstants.PHYSICS_STEPS_PER_SECOND));\n                GameReady();\n            }\n\n            if (m_firstDrawCall == FIRST_GAME_SAFELY_LOADED_DELAY)\n            {\n                MyMwcLog.WriteLine(\"Draw call - game safely loaded\");\n\n                GameSafelyLoaded();\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"m_firstDrawCall > FIRST_FADE_IN_DELAY\");\n\n            if (m_firstDrawCall > FIRST_GAME_SAFELY_LOADED_DELAY)\n            {\n                DrawLoading();\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n                return true;\n            }\n            else\n                if (m_firstDrawCall > FIRST_FADE_IN_DELAY)\n                {\n                    MyMinerGame.Static.GraphicsDevice.Clear(ClearFlags.All, new ColorBGRA(0), 1, 0);\n                }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"m_firstDrawCall == FIRST_DELAY_SAFE_IN_GAME\");\n\n            if (m_firstDrawCall == FIRST_DELAY_SAFE_IN_GAME)\n            {\n                if (MyFakes.TEST_MULTIPLE_SAVE_LOAD && this.GetGameType() == MyGuiScreenGamePlayType.EDITOR_STORY)\n                {\n                    MultipleSaveLoadTest();\n                }\n            }\n\n            //MyMinerGameDX.GraphicsDeviceManager.DbgDumpLoadedResources(true);\n            //MyTextureManager.DbgDumpLoadedTexturesBetter(true);\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"MyFlashes.Draw\");\n\n\n            MyFlashes.Draw();\n\n\n            if (m_firstDrawCall <= 0)\n            {\n                MyMinerGame.IsGameReady = true;\n            }\n            if (base.Draw(m_fadeAlpha) == false)\n            {\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n                return false;\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"MyFlashes.Draw\");\n\n            MyDebugDraw.Draw();\n            MyEntities.DebugDrawStatistics();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"Demo texts\");\n\n\n            if (DrawDemoEnd && IsGameActive() && MyGuiManager.GetScreensCount() == 1)\n            {\n                m_demoEndText.Clear();\n                m_demoEndText.AppendLine(\"Mission Succesful!\");\n                m_demoEndText.AppendLine(\"Official Demo ends here.\");\n                MyGuiManager.DrawString(MyGuiManager.GetFontMinerWarsBlue(), m_demoEndText, new Vector2(0.5f, 0.5f), 3f, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER);\n            }\n\n            if (DrawCampaignEnd && IsGameActive() && MyGuiManager.GetScreensCount() == 1)\n            {\n                MyGuiManager.DrawString(MyGuiManager.GetFontMinerWarsGreen(), MyTextsWrapper.Get(MyTextsWrapperEnum.CampaignIsCompleted), new Vector2(0.5f, 0.5f), 3f, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER);\n            }\n\n            // Clear stencil to avoid overflow of following GUI controls\n            MyMinerGame.Static.GraphicsDevice.Clear(ClearFlags.Stencil, new ColorBGRA(0), 1, 0);\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock(drawBlock);\n\n            return true;\n        }\n\n        private static HashSet<uint> m_multipleReloadEntityIds;\n\n        private void MultipleSaveLoadTest()\n        {\n            Debug.Assert(this == MyGuiScreenGamePlay.Static, \"Something went terribly wrong\");\n\n            if (m_multipleReloadEntityIds != null)\n            {\n                HashSet<uint> m_currentEntities = new HashSet<uint>();\n                GetAllEntityIds(MyEntities.GetEntities(), m_currentEntities);\n                bool isOk = true;\n\n                foreach (var id in m_multipleReloadEntityIds)\n                {\n                    if (!m_currentEntities.Remove(id))\n                    {\n                        // Current entities did not contain required entity id!\n                        //Debug.Fail(\"Missing entity ID: \" + id.ToEntityId());\n                        isOk = false;\n                        MyMwcLog.WriteLine(\"SAVE/LOAD TEST, missing entity id \" + id.ToEntityId());\n                    }\n                }\n\n                if (isOk)\n                {\n                    MyMwcLog.WriteLine(\"SAVE/LOAD TEST reload OK, num reloads: \" + m_multipleLoadsCount);\n                }\n                saveSector(null);\n            }\n            else\n            {\n                MyMwcLog.WriteLine(\"Starting SAVE/LOAD TEST sector name: \" + m_sectorIdentifier.SectorName + \", sector Id: \" + m_sectorIdentifier);\n\n                m_multipleReloadEntityIds = new HashSet<uint>();\n                GetAllEntityIds(MyEntities.GetEntities(), m_multipleReloadEntityIds);\n\n                // Little hack to save it to another sector (not to overwrite default)\n                var userId = MyClientServer.LoggedPlayer.GetUserId();\n                m_sectorIdentifier = new MyMwcSectorIdentifier(MyMwcSectorTypeEnum.STORY, null, new MyMwcVector3Int(245450000 + userId, 0, -345457126), \"ReloadTest_\" + userId.ToString());\n\n                // Lets tell server we are editing another sector (and drop his response)\n                var switchSectorScreen = new MyGuiScreenLoadCheckpointProgress(m_sectorIdentifier.SectorType, MyMwcSessionStateEnum.EDITOR, m_sectorIdentifier.UserId, m_sectorIdentifier.Position, null, DummyEnterAction);\n                MyGuiManager.AddScreen(switchSectorScreen);\n                switchSectorScreen.Closed += new ScreenHandler(saveSector);\n            }\n        }\n\n        void saveSector(MyGuiScreenBase source)\n        {\n            var progressScreen = MyEditor.Static.SaveSector();\n            progressScreen.Closed += new ScreenHandler(progressScreen_Closed);\n        }\n\n        void DummyEnterAction(MyMwcObjectBuilder_Checkpoint checkpoint)\n        {\n        }\n\n        void GetAllEntityIds(IEnumerable<MyEntity> entities, HashSet<uint> addToList)\n        {\n            foreach (var e in entities)\n            {\n                if (e == MySession.PlayerShip)\n                    continue;\n\n                if (e is MySmallDebris)\n                    continue;\n\n                if (e.EntityId.HasValue)\n                {\n                    addToList.Add(e.EntityId.Value.NumericValue);\n                }\n                GetAllEntityIds(e.Children, addToList);\n            }\n        }\n\n        void progressScreen_Closed(MyGuiScreenBase source)\n        {\n            MyGuiManager.CloseAllScreensNowExcept(MyGuiScreenGamePlay.Static);\n\n            MyEntityIdentifier.Reset();\n\n            MyGuiManager.AddScreen(new MyGuiScreenStartSessionProgress(MyMwcStartSessionRequestTypeEnum.EDITOR_STORY, MyTextsWrapperEnum.LoadingPleaseWait,\n                    m_sectorIdentifier,\n                    CommonLIB.AppCode.ObjectBuilders.MyGameplayDifficultyEnum.EASY,\n                    null,\n                    null));\n        }\n\n        private void InitSecretRooms()\n        {\n            if (MySteam.IsActive && GetGameType() == MyGuiScreenGamePlayType.GAME_STORY)\n            {\n                foreach (var dummy in MyEntities.GetEntities().OfType<MyDummyPoint>())\n                {\n                    if (dummy.SecretRoomName != null)\n                    {\n                        var detector = dummy.GetDetector();\n                        detector.OnEntityEnter += new OnEntityEnter(MyGuiScreenGamePlay_OnEntityEnter);\n                        detector.On();\n                    }\n                }\n            }\n        }\n\n        void MyGuiScreenGamePlay_OnEntityEnter(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (entity == MySession.PlayerShip)\n            {\n                var dummy = (MyDummyPoint)sender.Parent;\n                MySteamStats.SetStat(dummy.SecretRoomName, 1);\n\n                int secretsFound = 0;\n\n                foreach (var room in MySecretRooms.SecretRooms)\n                {\n                    if (MySteamStats.GetStatInt(room.Value) > 0)\n                        secretsFound++;\n                }\n\n                var oldVal = MySteamStats.GetStatInt(MySteamStatNames.FoundSecrets);\n                if (oldVal != secretsFound)\n                {\n                    MySteamStats.SetStat(MySteamStatNames.FoundSecrets, secretsFound);\n                    MySteamStats.IndicateAchievementProgress(MySteamAchievementNames.SecretRooms, (uint)secretsFound, (uint)MySecretRooms.SecretRooms.Count);\n                    MySteamStats.StoreState();\n                }\n            }\n        }\n\n        private void GameReady()\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"GameReady()\");\n\n            InitSecretRooms();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"RebuildCullingStructure\");\n\n            // Rebuild culling structure in first frame\n            MinerWars.AppCode.Game.Render.MyRender.RebuildCullingStructure();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"OnGameReady\");\n\n            if (OnGameReady != null)\n            {\n                OnGameReady(this);\n                OnGameReady = null;\n            }\n\n            if (MyMultiplayerGameplay.IsEditor())\n            {\n                MyEntityIdentifier.CurrentPlayerId = 0;\n            }\n\n            if (IsControlledPlayerShip && MySession.Is25DSector)\n                MySession.PlayerShip.Config.ViewMode.SetValue(MyViewModeTypesEnum.ThirdPerson);\n\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"MyMultiplayerGameplay\");\n\n            // No multiplayer in editor\n            if (GetGameType() != MyGuiScreenGamePlayType.EDITOR_SANDBOX\n                    && GetGameType() != MyGuiScreenGamePlayType.EDITOR_MMO\n                    && GetGameType() != MyGuiScreenGamePlayType.EDITOR_STORY)\n            {\n                // Multiplayre was not started yet\n                if (!MyMultiplayerGameplay.IsRunning)\n                {\n                    if (MyMultiplayerGameplay.Static.IsHost) // If i am host i will inform the server that i try to host and after that start multiplayer\n                    {\n                        m_hostTryCount = 0;\n                        HostGame();\n                    }\n                    else // If I'm not host that means I'm joining something thus start the multiplayer\n                    {\n                        MyMultiplayerGameplay.Static.OnShutdown = new Action(Multiplayer_Shutdown);\n                        MyMultiplayerGameplay.Static.Start();\n                    }\n                }\n                else // Multiplayer is running already, traveling / reload\n                {\n                    MyMultiplayerGameplay.Static.OnShutdown = new Action(Multiplayer_Shutdown);\n                    MyMultiplayerGameplay.Static.Resume(); // I will resume recieving packets\n\n                    if (MyMultiplayerGameplay.Static.IsHost) // If i am host i will also send new checkpoint to everyone\n                    {\n                        MyMultiplayerGameplay.Static.ReloadCheckpoint();\n                    }\n                }\n\n                if (MyMultiplayerGameplay.IsRunning)\n                {\n                    MyMultiplayerGameplay.Static.OnNotification = new Action<MyNotificationType, MyTextsWrapperEnum, object[]>(Multiplayer_OnNotification);\n                }\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        private void GameSafelyLoaded()\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"GameLoaded()\");\n\n            if (OnGameSafelyLoaded != null)\n            {\n                OnGameSafelyLoaded(this);\n                OnGameSafelyLoaded = null;\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n\n        void Multiplayer_Shutdown()\n        {\n            MyGuiManager.CloseAllScreensExcept(MyGuiScreenGamePlay.Static);\n            MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.MP_HostDisconnected, MyTextsWrapperEnum.MP_HostDisconnectedCaption, MyTextsWrapperEnum.Ok, Multiplayer_ShutdownOk));\n        }\n\n        void Multiplayer_ShutdownOk(MyGuiScreenMessageBoxCallbackEnum callbackReturn)\n        {\n            MyGuiManager.BackToMainMenu();\n        }\n\n        private List<MyJoinGameRequest> m_joinRequests = new List<MyJoinGameRequest>();\n\n        public struct MyJoinGameRequest\n        {\n            public MyEventEnterGame Message;\n            public MyHudNotification.MyNotification Notification;\n        }\n\n        private void joinGameNotificationConfirmed(MyJoinGameRequest request)\n        {\n            m_joinRequests.Remove(request);\n            MyGuiManager.AddModalScreen(new MyGuiScreenMultiplayerEnterGameRequest(request), null);\n        }\n\n        public string GetGameName(MyGameTypes gameType, MyGameplayDifficultyEnum difficulty)\n        {\n            if (gameType == MyGameTypes.Story)\n            {\n                if (MyMissions.ActiveMission != null)\n                {\n                    return MyTextsWrapper.Get(MyMissions.ActiveMission.Name).ToString();\n                }\n                else\n                {\n                    return MyTextsWrapper.Get(MyTextsWrapperEnum.FreeRoaming).ToString();\n                }\n            }\n            else\n            {\n                return String.IsNullOrWhiteSpace(m_sectorIdentifier.SectorName) ? Checkpoint.SectorObjectBuilder.Name : m_sectorIdentifier.SectorName;\n            }\n        }\n\n        void HostGame()\n        {\n            if (MyClientServer.LoggedPlayer != null && MyClientServer.LoggedPlayer.IsDemoUser()) return;\n\n            MyGameTypes gameType = MyMultiplayerGameplay.GameType;\n\n            MyJoinMode joinMode;\n            if (gameType == MyGameTypes.Story)\n                joinMode = MyJoinMode.Closed;\n            else\n                joinMode = MyJoinMode.Open;\n\n            MyGameplayDifficultyEnum difficulty;\n            if (gameType == MyGameTypes.Deathmatch)\n                difficulty = MyGameplayDifficultyEnum.NORMAL;\n            else\n                difficulty = MyGameplayConstants.GetGameplayDifficulty();\n\n            string gameName = GetGameName(gameType, difficulty);\n\n            try\n            {\n                MyMultiplayerLobby.Static.HostGame(gameName ?? \"Empty sector\", String.Empty, gameType, (r) => HostGameResponse(r), joinMode, difficulty);\n            }\n            catch (Exception)\n            {\n                MyHudNotification.AddNotification(new MyHudNotification.MyNotification(MyTextsWrapperEnum.MP_CannotHost, MyGuiManager.GetFontMinerWarsRed(), 10000));\n            }\n        }\n\n        private int m_hostTryCount = 0;\n\n        void HostGameResponse(MyResultCodeEnum resultCode)\n        {\n            if (resultCode == MyResultCodeEnum.OK) // Hosting game was succesful\n            {\n                MyMultiplayerGameplay.Static.Start(); // We can start multiplayer on host now\n                MyMultiplayerGameplay.Static.OnShutdown = new Action(Multiplayer_Shutdown);\n                MyMultiplayerGameplay.Static.OnNotification = new Action<MyNotificationType, MyTextsWrapperEnum, object[]>(Multiplayer_OnNotification);\n            }\n            else\n            {\n                if (m_hostTryCount >= 1)\n                {\n                    Multiplayer_OnNotification(MyNotificationType.Text, MyTextsWrapperEnum.MP_GameHostFailed_X, new object[] { });\n                }\n                else\n                {\n                    m_hostTryCount++;\n                    HostGame();\n                }\n            }\n        }\n\n        static void Multiplayer_OnNotification(MyNotificationType notificationType, MyTextsWrapperEnum arg1, object[] arg2)\n        {\n            if (notificationType == MyNotificationType.Text)\n            {\n                MyHudNotification.MyNotification notification = new MyHudNotification.MyNotification(arg1, 3000, null, arg2);\n                MyHudNotification.AddNotification(notification);\n            }\n            else if (notificationType == MyNotificationType.WaitStart)\n            {\n                MyGuiManager.CloseIngameScreens();\n\n                MyGuiManager.AddModalScreen(new MyGuiScreenWaitingOnHost(arg1), null);\n                MyMultiplayerGameplay.IsWaiting = true;\n                if (!MyMinerGame.IsPaused())\n                    MyMinerGame.SwitchPause();\n            }\n            else if (notificationType == MyNotificationType.WaitEnd)\n            {\n                MyMultiplayerGameplay.IsWaiting = false;\n                if (!MyMinerGame.IsPaused())\n                    MyMinerGame.SwitchPause();\n                CloseWaitingScreen();\n            }\n        }\n\n        static void CloseWaitingScreen()\n        {\n            var dlg = MyGuiManager.GetScreenWithFocus() as MyGuiScreenWaiting;\n            if (dlg != null)\n            {\n                dlg.CloseScreen();\n            }\n        }\n\n        private static void DrawSecondaryCamera()\n        {\n            MyGuiManager.BeginSpriteBatch();\n            DrawCameraScreen();\n            MyGuiManager.EndSpriteBatch();\n\n            MyRender.TakeScreenshot(\"BackCamera\", MyRender.GetRenderTarget(MyRenderTargets.SecondaryCamera), MyEffectScreenshot.ScreenshotTechniqueEnum.Color);\n        }\n\n        static void DrawSecondaryCameraDescriptions(bool drawSecondaryCamera)\n        {\n            MyGuiManager.BeginSpriteBatch();\n\n            var positionScreenSpace =\n                MyGuiManager.GetNormalizedCoordinateFromScreenCoordinate(\n                    new Vector2(MyCamera.BackwardViewport.X, 0));\n\n            //var heightWithPadding = MyHudConstants.BACK_CAMERA_HEIGHT * 1.222f;\n\n            // adjustments for spacing\n            positionScreenSpace.X += 0.0037f;\n            positionScreenSpace.Y += 0.011f;\n\n            if (drawSecondaryCamera)\n            {\n                MyGuiManager.DrawString(\n                    MyGuiManager.GetFontMinerWarsBlue(),\n                    MySession.PlayerShip.GetCameraDescription(),\n                    positionScreenSpace,\n                    MySecondaryCameraConstants.SECONDARY_CAMERA_DESCRIPTION_SCALE,\n                    MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP);\n            }\n\n            positionScreenSpace.Y += 0.011f;\n\n            if (drawSecondaryCamera)\n            {\n                positionScreenSpace.Y += MyHudConstants.BACK_CAMERA_HEIGHT;\n                positionScreenSpace.Y += 0.010f;\n            }\n\n            if (drawSecondaryCamera || MySession.PlayerShip.Drones.Count > 0)\n            {\n                FormatCameraHelp();\n\n                MyGuiManager.DrawString(\n                MyGuiManager.GetFontMinerWarsBlue(),\n                m_cameraHelpBuilder,\n                positionScreenSpace,\n                MySecondaryCameraConstants.SECONDARY_CAMERA_DESCRIPTION_SCALE,\n                MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_BOTTOM);\n            }\n\n            MyGuiManager.EndSpriteBatch();\n        }\n\n        private void DrawHUDAndEditor(bool mainDrawHud, bool backCamera)\n        {\n            MyGuiManager.BeginSpriteBatch();\n\n            bool drawHud = (IsGameActive() && mainDrawHud && MySession.PlayerShip != null && MyHud.Visible) || MyHud.ShowDebugHud || MyFakes.MWBUILDER;\n            if (drawHud)\n            {\n                MyRender.GetRenderProfiler().StartProfilingBlock(\"MyHudDrawPassEnum.FIRST\");\n                MyHud.Draw(MyHudDrawPassEnum.FIRST, CameraAttachedTo, backCamera);\n                MyRender.GetRenderProfiler().EndProfilingBlock();\n                if (MyMultiplayerGameplay.IsRunning)\n                {\n                    MyRender.GetRenderProfiler().StartProfilingBlock(\"DrawChatScreen\");\n                    DrawChatScreen();\n                    MyRender.GetRenderProfiler().EndProfilingBlock();\n                }\n            }\n\n            //  Enable forward look again (for drawing GUI, texts...)\n            MyCamera.EnableForward();\n\n            MyRender.GetRenderProfiler().StartProfilingBlock(\"MyEditor.Static.Draw\");\n            MyEditor.Static.Draw(IsIngameEditorActive() || IsEditorActive());\n            MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            if (drawHud)\n            {\n                MyRender.GetRenderProfiler().StartProfilingBlock(\"MyHudNotification.Draw\");\n                if (MyHudNotification.HasNotification(MyHudNotification.GetCurrentScreen()))\n                {\n                    MyHudNotification.Draw();\n                }\n                MyRender.GetRenderProfiler().EndProfilingBlock();\n\n                MyRender.GetRenderProfiler().StartProfilingBlock(\"MyHudDrawPassEnum.SECOND\");\n                MyHud.Draw(MyHudDrawPassEnum.SECOND, CameraAttachedTo, backCamera);\n                MyRender.GetRenderProfiler().EndProfilingBlock();\n\n                MyRender.GetRenderProfiler().StartProfilingBlock(\"DrawChatScreen2\");\n                if (MyMultiplayerGameplay.IsRunning)\n                {\n                    DrawChatScreen();\n                }\n                MyRender.GetRenderProfiler().EndProfilingBlock();\n\n                MyRender.GetRenderProfiler().StartProfilingBlock(\"m_selectAmmoMenu.Draw\");\n                if (MyHud.CanDrawElement(CameraAttachedTo, MyHudDrawElementEnum.AMMO))\n                {\n                    m_selectAmmoMenu.Draw();\n                }\n                MyRender.GetRenderProfiler().EndProfilingBlock();\n\n                MyRender.GetRenderProfiler().StartProfilingBlock(\"m_wheelControlMenu.Draw\");\n                if (MyHud.CanDrawElement(CameraAttachedTo, MyHudDrawElementEnum.WHEEL_CONTROL))\n                {\n                    m_wheelControlMenu.Draw();\n                }\n                MyRender.GetRenderProfiler().EndProfilingBlock();\n            }\n            else if ((IsGameActive() || IsIngameEditorActive()) && mainDrawHud)\n            {\n                MyRender.GetRenderProfiler().StartProfilingBlock(\"DrawOnlyMissionObjectives\");\n                MyHud.DrawOnlyMissionObjectives();\n                MyRender.GetRenderProfiler().EndProfilingBlock();\n\n                MyRender.GetRenderProfiler().StartProfilingBlock(\"DrawChatScreen3\");\n                if (MyMultiplayerGameplay.IsRunning)\n                {\n                    DrawChatScreen();\n                }\n                MyRender.GetRenderProfiler().EndProfilingBlock();\n            }\n\n            if ((CameraAttachedTo == MyCameraAttachedToEnum.Drone || CameraAttachedTo == MyCameraAttachedToEnum.LargeWeapon) && backCamera)\n            {\n                MyRender.GetRenderProfiler().StartProfilingBlock(\"MyHud.DrawOnlyBackCameraBorders\");\n                MyHud.DrawOnlyBackCameraBorders();\n                MyRender.GetRenderProfiler().EndProfilingBlock();\n            }\n            if (CameraAttachedTo == MyCameraAttachedToEnum.Camera)\n            {\n                MyRender.GetRenderProfiler().StartProfilingBlock(\"MyHud.DrawAsControlledEntity\");\n                MyHud.DrawAsControlledEntity();\n                MyRender.GetRenderProfiler().EndProfilingBlock();\n            }\n            if (IsEditorStoryActive() && !m_sectorIdentifier.CanBeSaved())\n            {\n                MyRender.GetRenderProfiler().StartProfilingBlock(\"Cant be saved\");\n                var pos = (MyGuiManager.GetScreenTextLeftBottomPosition() + MyGuiManager.GetScreenTextRightBottomPosition()) / 2;\n                var scale = MyGuiConstants.LABEL_TEXT_SCALE * 1.5f;\n                pos.Y -= 0.05f;\n                MyGuiManager.DrawString(MyGuiManager.GetFontMinerWarsWhite(), MyTextsWrapper.Get(MyTextsWrapperEnum.StorySectorPositionYMustBeZero),\n                       pos, scale, Color.Red, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_TOP);\n                MyRender.GetRenderProfiler().EndProfilingBlock();\n            }\n\n            MyGuiManager.EndSpriteBatch();\n        }\n\n        private StringBuilder m_stringBuilderForText;\n\n        internal List<MyChatMessage> GetChatMessages(int max)\n        {\n            if (m_chatMessages == null)\n            {\n                return null;\n            }\n            if (max < m_chatMessages.Count)\n            {\n                List<MyChatMessage> retval = new List<MyChatMessage>(max);\n                for (int i = m_chatMessages.Count - max; i < m_chatMessages.Count; i++)\n                {\n                    retval.Add(m_chatMessages[i]);\n                }\n                return retval;\n            }\n            else\n            {\n                return m_chatMessages;\n            }\n        }\n\n        internal List<MyChatMessage> GetChatMessages()\n        {\n            return GetChatMessages(MyGuiConstants.CHAT_WINDOW_MAX_MESSAGES_COUNT);\n        }\n\n        internal void DrawChatScreen()\n        {\n            if (m_stringBuilderForText == null)\n            {\n                m_stringBuilderForText = new StringBuilder(MyGuiConstants.CHAT_WINDOW_MAX_MESSAGE_LENGTH);\n            }\n            else { m_stringBuilderForText.Clear(); }\n\n            int visibleCount = m_chatMessages.Count;\n\n            if (visibleCount == 0) return;\n\n            Vector2 positionOffset = new Vector2(MyGuiManager.GetNormalizedCoordinateFromScreenCoordinate_FULLSCREEN(new Vector2(0, 0)).X - 920 / 1920f / 2 - 0.24f, -0.2f);\n\n            Vector2 backgroundSize = Vector2.Zero;\n\n            float rowSize = 0;\n\n            for (int i = 0; i < visibleCount; i++)\n            {\n                // background size\n                m_stringBuilderForText.Append(m_chatMessages[i].SenderName.ToString());\n                m_stringBuilderForText.Append(\": \");\n                m_stringBuilderForText.Append(m_chatMessages[i].Message);\n                Vector2 textSize = MyGuiManager.GetNormalizedSize(GetSenderFont(m_chatMessages[i].SenderRelation), m_stringBuilderForText, MyGuiConstants.CHAT_WINDOW_MESSAGE_SCALE);\n\n                if (backgroundSize.X < textSize.X)\n                {\n                    backgroundSize.X = textSize.X;\n                }\n                backgroundSize.Y += textSize.Y;\n                rowSize = textSize.Y;\n                m_stringBuilderForText.Clear();\n            }\n\n            MyGuiManager.BeginSpriteBatch();\n            var offset = new Vector2(VideoMode.MyVideoModeManager.IsTripleHead() ? -1 : 0, 0);\n\n            // Draw background\n            Vector2 notificationPosition = MyGuiConstants.CHAT_WINDOW_POSITION + positionOffset;\n            MyGuiManager.DrawSpriteBatch(MyGuiManager.GetBlankTexture(), notificationPosition + offset,\n                backgroundSize + new Vector2(rowSize, rowSize),\n                MyGuiConstants.CHAT_WINDOW_BACKGROUND_COLOR, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_BOTTOM);\n\n            // Draw texts\n            notificationPosition.Y -= backgroundSize.Y;\n            notificationPosition.X += rowSize / 2f;\n            for (int i = 0; i < visibleCount; i++)\n            {\n                m_stringBuilderForText.Append(m_chatMessages[i].SenderName.ToString());\n                m_stringBuilderForText.Append(\": \");\n                MyRectangle2D size = MyGuiManager.DrawString(GetSenderFont(m_chatMessages[i].SenderRelation), m_stringBuilderForText, notificationPosition + offset,\n                    MyGuiConstants.CHAT_WINDOW_MESSAGE_SCALE, MyGuiConstants.CHAT_WINDOW_TEXT_COLOR, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER);\n\n                notificationPosition.X += size.Size.X;\n                MyGuiManager.DrawString(GetSenderFont(m_chatMessages[i].SenderRelation), m_chatMessages[i].Message, notificationPosition + offset,\n                    MyGuiConstants.CHAT_WINDOW_MESSAGE_SCALE, MyGuiConstants.CHAT_WINDOW_TEXT_COLOR, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER);\n                notificationPosition.Y += rowSize;\n                notificationPosition.X -= size.Size.X;\n                m_stringBuilderForText.Clear();\n            }\n            MyGuiManager.EndSpriteBatch();\n        }\n\n        private StringBuilder GetSenderName(int senderId)\n        {\n            if (senderId == MyClientServer.LoggedPlayer.GetUserId())\n            {\n                return new StringBuilder(MyClientServer.LoggedPlayer.GetDisplayName().ToString());\n            }\n            else if (MyMultiplayerGameplay.IsRunning)\n            {\n                MyPlayerRemote player;\n                if (MyMultiplayerPeers.Static.TryGetPlayer(senderId, out player))\n                {\n                    return new StringBuilder(player.GetDisplayName().ToString());\n                }\n            }\n            return new StringBuilder(\"UNKNOWN\");\n        }\n\n        internal MyGuiFont GetSenderFont(MyFactionRelationEnum senderRelation)\n        {\n            switch (senderRelation)\n            {\n                case MyFactionRelationEnum.Enemy:\n                    return MyGuiManager.GetFontMinerWarsRed();\n                case MyFactionRelationEnum.Friend:\n                    return MyGuiManager.GetFontMinerWarsGreen();\n                case MyFactionRelationEnum.Neutral:\n                    return MyGuiManager.GetFontMinerWarsWhite();\n                default:\n                    return MyGuiManager.GetFontMinerWarsBlue();\n            }\n        }\n\n        private MyFactionRelationEnum GetSenderRelation(int senderId)\n        {\n            if (senderId == MyClientServer.LoggedPlayer.GetUserId())\n            {\n                return MyFactionRelationEnum.Friend;\n            }\n            else if (MyMultiplayerGameplay.IsRunning)\n            {\n                MyPlayerRemote player;\n                if (MyMultiplayerPeers.Static.TryGetPlayer(senderId, out player))\n                {\n                    return MyFactions.GetFactionsRelation(player.Faction, MySession.Static.Player.Faction);\n                }\n                Debug.Assert(false, \"Game shouldn't get here!\");\n                return MyFactionRelationEnum.Neutral;\n            }\n            else\n            {\n                Debug.Assert(false, \"Game shouldn't get here!\");\n                return MyFactionRelationEnum.Neutral;\n            }\n        }\n\n        public bool AddChatMessage(int userId, string message)\n        {\n            if (m_chatMessages == null) return false;\n\n            if (m_chatMessages.Count == MyGuiConstants.CHAT_WINDOW_MAX_MESSAGES_COUNT)\n            {\n                m_chatMessages.RemoveAt(0);\n            }\n            m_chatMessages.Add(new MyChatMessage()\n            {\n                Message = new StringBuilder(message),\n                SenderId = userId,\n                TimeStamp = MyMinerGame.TotalTimeInMilliseconds,\n                SenderName = GetSenderName(userId),\n                SenderRelation = GetSenderRelation(userId)\n            });\n\n            return true;\n        }\n\n        public void CheckChatboxMessagesTTL()\n        {\n            while (m_chatMessages.Count > 0 && m_chatMessages[0].TimeStamp + MyGuiConstants.CHAT_WINDOW_MESSAGE_TTL < MyMinerGame.TotalTimeInMilliseconds)\n            {\n                m_chatMessages.RemoveAt(0);\n            }\n        }\n\n        private void FillDebugScreen()\n        {\n            //  We fill debug screen here only in test build, never in production!\n            MyGuiScreenDebugStatistics debugScreen = MyGuiManager.GetScreenDebugNormal();\n\n            if (debugScreen != null)\n            {\n                if (MyMwcFinalBuildConstants.IS_PUBLIC)\n                {\n                    debugScreen.AddToFrameDebugText(MyGuiScreenDebugStatistics.StringBuilderCache.GetFormatedVector3(\n                       \"Camera Position: \", MyCamera.Position));\n                }\n                else\n                {\n                    //debugScreen.AddToFrameDebugText(MyGuiScreenDebugStatistics.StringBuilderCache.GetFormatedFloat(\"Reverb: \", MyAudio.ReverbControl));\n                    debugScreen.AddToFrameDebugText(MyGuiScreenDebugStatistics.StringBuilderCache.GetStrings(\"Camera Attached To: \",\n                                                    MyEnumsToStrings.CameraAttachedTo[(int)Static.CameraAttachedTo]));\n\n                    StringBuilder renderCellsSB = MyGuiScreenDebugStatistics.StringBuilderCache;\n                    renderCellsSB.Append(\"Render Cells In Cache: \");\n                    renderCellsSB.Concat(MyVoxelCacheRender.GetCachedCellsCount());\n                    renderCellsSB.Append(\" of \");\n                    renderCellsSB.Concat(MyVoxelCacheRender.GetCapacity());\n                    debugScreen.AddToFrameDebugText(renderCellsSB);\n\n                    StringBuilder dataCellsSB = MyGuiScreenDebugStatistics.StringBuilderCache;\n                    dataCellsSB.Append(\"Data Cells in Cache: \");\n                    dataCellsSB.Concat(MyVoxelCacheData.GetCachedCellsCount());\n                    dataCellsSB.Append(\" of \");\n                    dataCellsSB.Concat(MyVoxelCacheData.GetCapacity());\n                    debugScreen.AddToFrameDebugText(dataCellsSB);\n\n                    StringBuilder cellContentsSB = MyGuiScreenDebugStatistics.StringBuilderCache;\n                    cellContentsSB.Append(\"Cell Contents: \");\n                    cellContentsSB.Concat(MyVoxelContentCellContents.GetCount());\n                    cellContentsSB.Append(\" of \");\n                    cellContentsSB.Concat(MyVoxelContentCellContents.GetCapacity());\n                    debugScreen.AddToFrameDebugText(cellContentsSB);\n\n                    if (MySession.PlayerShip != null)\n                    {\n                        debugScreen.AddToFrameDebugText(MyGuiScreenDebugStatistics.StringBuilderCache.GetFormatedFloat(\n                            \"Player Speed: \", MySession.PlayerShip.Physics.Speed, \" m/s\"));\n                        /*\n                        debugScreen.AddToFrameDebugText(MyGuiScreenDebugStatistics.StringBuilderCache.GetFormatedVector3(\n                        \"Player Ship Orientation Forward: \", MySession.PlayerShip.WorldMatrix.Forward));\n                        debugScreen.AddToFrameDebugText(MyGuiScreenDebugStatistics.StringBuilderCache.GetFormatedVector3(\n                            \"Player Ship Orientation Up: \", MySession.PlayerShip.WorldMatrix.Up));*/\n                    }\n\n                    //This does allocations\n                    //debugScreen.AddToFrameDebugText(MyGuiScreenDebugStatistics.StringBuilderCache.GetStrings(\"Sector Identifier: \", m_sectorIdentifier.ToString()));\n                    debugScreen.AddToFrameDebugText(MyGuiScreenDebugStatistics.StringBuilderCache.GetFormatedInt(\"Lights: \", MyLights.GetActiveLights()));\n                    debugScreen.AddToFrameDebugText(MyGuiScreenDebugStatistics.StringBuilderCache.GetFormatedInt(\"Active rigids: \", MyPhysics.physicsSystem.GetRigidBodyModule().GetActiveRigids().Count));\n\n                    debugScreen.AddToFrameDebugText(MyGuiScreenDebugStatistics.StringBuilderCache.GetFormatedInt(\"Missiles + Cannonshots Active: \", MyMissiles.GetActiveCount() + MyCannonShots.GetActiveCount()));\n                    debugScreen.AddToFrameDebugText(MyGuiScreenDebugStatistics.StringBuilderCache.GetFormatedInt(\"Hologram Ships Active: \", MyHologramShips.GetActiveCount()));\n                    debugScreen.AddToFrameDebugText(MyGuiScreenDebugStatistics.StringBuilderCache.GetFormatedInt(\"ProjectilesActive: \", MyProjectiles.GetActiveCount()));\n                    debugScreen.AddToFrameDebugText(MyGuiScreenDebugStatistics.StringBuilderCache.GetFormatedInt(\"Bots active: \", MySmallShipBot.TotalAliveBots));\n                    debugScreen.AddToFrameDebugText(MyGuiScreenDebugStatistics.StringBuilderCache.GetFormatedInt(\"Attacking bots: \", MyBotCoordinator.CurrentBotsAttackingPlayer.Count));\n\n                    debugScreen.AddToFrameDebugText(MyGuiScreenDebugStatistics.StringBuilderCache.GetFormatedInt(\"Render cells (vertexes count): \", MyVoxelCacheRender.GetVertexesCount()));\n                    debugScreen.AddToFrameDebugText(MyGuiScreenDebugStatistics.StringBuilderCache.GetFormatedInt(\"Render cells (indices count): \", MyVoxelCacheRender.GetIndicesCount()));\n                    if (MyVoxelContentCellContents.IsAlmostFull() == true)\n                    {\n                        debugScreen.AddToFrameDebugText(\n                            \"Voxel cell contents buffer is almost full. Game needs to be restarted or buffer will overflow!\" + MyStringUtils.C_CRLF);\n                    }\n                    debugScreen.AddToFrameDebugText(\"\");\n\n                    MyPerformanceCounter.PerCameraDraw.AddToFrameDebugText(debugScreen);\n                }\n            }\n        }\n\n        private static void DrawCameraScreen()\n        {\n            var renderedTexture = MySecondaryCamera.Instance.GetRenderedTexture();\n\n            // draw flipped texture (mirror image) if it's rear mirror\n            var spriteEffect = MySecondaryCamera.Instance.MirrorImage\n                                   ? SpriteEffects.FlipHorizontally\n                                   : SpriteEffects.None;\n\n            var position = new Vector2(MyCamera.BackwardViewport.X, MyCamera.BackwardViewport.Y);\n            MyGuiManager.DrawSpriteBatch(renderedTexture, position, null, Color.White, 0, Vector2.Zero, 1, spriteEffect, 0);\n\n            MyRender.TakeScreenshot(\"BackCamera\", renderedTexture, MyEffectScreenshot.ScreenshotTechniqueEnum.Color);\n        }\n\n        private static readonly object[] m_cameraHelpArgs = new object[3];\n        private static readonly StringBuilder m_cameraHelpBuilder = new StringBuilder();\n\n        private static void FormatCameraHelp()\n        {\n            string cameraHelp;\n\n            var controlledDrone = Static.ControlledDrone;\n            if (controlledDrone != null)\n            {\n                m_cameraHelpArgs[0] = MyGuiManager.GetInput().GetGameControlTextEnum(MyGameControlEnums.CHANGE_DRONE_MODE);\n                MyTextsWrapperEnum droneText = controlledDrone.HoldPosition ? MyTextsWrapperEnum.DroneHoldPosition : MyTextsWrapperEnum.DroneFollowPlayer;\n                cameraHelp = MyTextsWrapper.GetFormatString(droneText, m_cameraHelpArgs);\n            }\n            else\n            {\n                m_cameraHelpArgs[0] = MyGuiManager.GetInput().GetGameControlTextEnum(MyGameControlEnums.REAR_CAM);\n                m_cameraHelpArgs[1] = MyGuiManager.GetInput().GetGameControlTextEnum(MyGameControlEnums.PREVIOUS_CAMERA);\n                m_cameraHelpArgs[2] = MyGuiManager.GetInput().GetGameControlTextEnum(MyGameControlEnums.NEXT_CAMERA);\n                cameraHelp = MyTextsWrapper.GetFormatString(MyTextsWrapperEnum.TurnOffCamera, m_cameraHelpArgs);\n            }\n\n            m_cameraHelpBuilder.Clear();\n            m_cameraHelpBuilder.Append(cameraHelp);\n        }\n\n        public static void DrawLoadsCount()\n        {\n            if (MyFakes.TEST_MULTIPLE_LOAD_UNLOAD || MyFakes.TEST_MULTIPLE_SAVE_LOAD)\n            {\n                MyDebugDraw.DrawText(new Vector2(MyGuiManager.GetSafeFullscreenRectangle().Width / 2, MyGuiManager.GetSafeFullscreenRectangle().Height / 2),\n                    new StringBuilder(m_multipleLoadsCount.ToString()), Color.Red, 10.0f);\n            }\n\n            if (MyFakes.TEST_MISSION_GAMEPLAY)\n            {\n                string missionName = MyMissions.ActiveMission == null ? \"\" : MyTextsWrapper.Get(MyMissions.ActiveMission.Name).ToString();\n                string objectiveName = MyMissions.ActiveMission != null && MyMissions.ActiveMission.ActiveObjectives.Count > 0 ? MyMissions.ActiveMission.ActiveObjectives[0].NameTemp.ToString() : \"\";\n                MyDebugDraw.DrawText(new Vector2(100, MyGuiManager.GetSafeFullscreenRectangle().Height / 2),\n                    new StringBuilder(\"Test whole gameplay: \" + missionName + \" - \" + objectiveName + \"(Killed \" + (MyFakes.TEST_MISSION_GAMEPLAY_AUTO_KILLS - m_missionGameplayKillsRemaining).ToString() + \"/\" + MyFakes.TEST_MISSION_GAMEPLAY_AUTO_KILLS + \")\"), Color.Red, 1.0f);\n\n                if (Static != null)\n                {\n                    MyDebugDraw.DrawText(new Vector2(100, MyGuiManager.GetSafeFullscreenRectangle().Height / 2 + 20),\n                        new StringBuilder(\"Time: \" + (Static.m_missionGameplayTestDelay / 1000.0f).ToString(\"#,###0.000\") + \" s\"), Color.Red, 1.0f);\n                }\n            }\n        }\n\n        public override bool CloseScreen()\n        {\n            if (MyEditor.Static.GetEditedPrefabContainer() != null)\n                MyEditor.Static.ExitActivePrefabContainer();\n\n            return base.CloseScreen();\n        }\n\n        public override void CloseScreenNow()\n        {\n            if (MyEditor.Static.GetEditedPrefabContainer() != null)\n                MyEditor.Static.ExitActivePrefabContainer();\n\n            base.CloseScreenNow();\n        }\n\n        // Restarts gameplay (loads last checkpoint or reloads sandbox)\n        // Be careful, this is used for Gameover screen too!\n        public void Restart()\n        {\n            MyGuiManager.CloseAllScreensExcept(MyGuiScreenGamePlay.Static);\n\n            if (MyGuiScreenGamePlay.Static.GetGameType() == MyGuiScreenGamePlayType.GAME_STORY)\n            {\n                MySession.StartLastCheckpoint();\n            }\n            else if (MyGuiScreenGamePlay.Static.GetGameType() == MyGuiScreenGamePlayType.GAME_SANDBOX)\n            {\n                var sectorIdentifier = MyGuiScreenGamePlay.Static.GetSectorIdentifier();\n                MySession.StartSandbox(sectorIdentifier.Position, sectorIdentifier.UserId);\n            }\n            else if (MyGuiScreenGamePlay.Static.IsEditorActive())\n            {\n                // The \"old way\" in future should be on MySession\n                CloseScreenNow();\n\n                Action<MyMwcObjectBuilder_Checkpoint> enterSuccessAction = new Action<MyMwcObjectBuilder_Checkpoint>((checkpoint) =>\n                {\n                    var loadScreen = new MyGuiScreenLoading(new MyGuiScreenGamePlay(m_type, m_previousType, checkpoint.CurrentSector, checkpoint.SectorObjectBuilder.Version, m_sessionType.Value), MyGuiScreenGamePlay.Static);\n                    loadScreen.AnnounceLeaveToServer = true;\n                    loadScreen.LeaveSectorReason = MyMwcLeaveSectorReasonEnum.RELOAD;\n\n                    loadScreen.AddEnterSectorResponse(checkpoint, null);\n                    MyGuiManager.AddScreen(loadScreen);\n                });\n                MyMissions.Unload();\n                MyGuiManager.AddScreen(new MyGuiScreenLoadCheckpointProgress(m_sectorIdentifier.SectorType, MyMwcSessionStateEnum.EDITOR, m_sectorIdentifier.UserId, m_sectorIdentifier.Position, null, enterSuccessAction));\n            }\n        }\n\n        //public void StopMusic()\n        //{\n        //    if (MusicCue.HasValue) MyAudio.ApplyTransition(MusicCue.Value, MyMusicTransitionEnum.STOP_IMMEDIATE);\n        //}\n\n        public bool IsSelectAmmoVisible()\n        {\n            return m_selectAmmoMenu.Visible/* && !MyFakes.MW25D*/;\n        }\n\n        public void HideSelectAmmo()\n        {\n            m_selectAmmoMenu.Visible = false;\n        }\n\n        Vector3 m_directionToSunNormalized;\n\n        public Vector3 GetDirectionToSunNormalized()\n        {\n            //return -MyMwcUtils.Normalize(GetPositionInMillionsOfKm());\n            if (MySession.Is25DSector)\n            {\n                return new Vector3(0.05f, 0.8f, 0.15f);\n            }\n            if (MyFakes.MWBUILDER)\n            {\n                return new Vector3(0.05f, 0.5f, 0.65f);\n            }\n            return m_directionToSunNormalized;\n        }\n\n        public Vector3 GetPositionInMillionsOfKm()\n        {\n            Vector3 pos = new Vector3(m_sectorIdentifier.Position.X, m_sectorIdentifier.Position.Y, m_sectorIdentifier.Position.Z);\n            if (pos.Length() < 3)\n                return Vector3.Forward * 10; //We are in the sun\n\n            return pos;\n        }\n\n        public bool IsCurrentSector(MyMwcVector3Int sectorPosition)\n        {\n            return m_sectorIdentifier.Position.Equals(sectorPosition);\n        }\n\n\n        public static bool IsMissionSector(MyMwcVector3Int sector)\n        {\n            bool missionHere = false;\n            foreach (var mission in MyMissions.Missions.Values)\n            {\n                if (mission.Location != null)\n                {\n                    if (sector == mission.Location.Sector)\n                    {\n                        missionHere = true;\n                        break;\n                    }\n                }\n            }\n            return missionHere;\n        }\n\n        public static bool CanTravelToSector(MyMwcVector3Int sector)\n        {\n            bool missionHere = IsMissionSector(sector);\n            bool anyMissionAvaliable = false;\n\n            if (missionHere)\n            {\n                foreach (var mission in MyMissions.Missions.Values)\n                {\n                    if (mission.IsAvailable() || mission.IsCompleted())\n                    {\n                        if (mission.Location != null)\n                        {\n                            if (sector == mission.Location.Sector)\n                            {\n                                anyMissionAvaliable = true;\n                                break;\n                            }\n                        }\n                    }\n                }\n            }\n\n            return (Static != null) && (Static.IsGameActive()) && (!missionHere || anyMissionAvaliable)\n                && (!MySectorGenerator.IsSectorInForbiddenArea(sector) || (Static.GetGameType() == MyGuiScreenGamePlayType.EDITOR_STORY) || (Static.GetPreviousGameType() == MyGuiScreenGamePlayType.EDITOR_STORY));\n        }\n\n        public void AddAllBlueprints()\n        {\n            if (MySession.Static != null && MySession.Static.Inventory != null)\n            {\n                var inventory = MySession.Static.Inventory;\n                var bluePrintIds = MyMwcObjectBuilder_Base.GetObjectBuilderIDs(MyMwcObjectBuilderTypeEnum.Blueprint);\n                foreach (var bluePrintId in bluePrintIds)\n                {\n                    if (!inventory.Contains(MyMwcObjectBuilderTypeEnum.Blueprint, bluePrintId))\n                    {\n                        inventory.AddInventoryItem(MyMwcObjectBuilderTypeEnum.Blueprint, bluePrintId, 1.0f, true, true);\n                    }\n                }\n            }\n        }\n\n        public void RemoveAllBlueprints()\n        {\n            if (MySession.Static != null && MySession.Static.Inventory != null)\n            {\n                var inventory = MySession.Static.Inventory;\n                inventory.RemoveInventoryItems(MyMwcObjectBuilderTypeEnum.Blueprint, null, true);\n            }\n        }\n\n        public bool IsControlledByPlayer(MyPrefabLargeWeapon largeWeapon)\n        {\n            return MyGuiScreenGamePlay.Static.CameraAttachedTo == MyCameraAttachedToEnum.LargeWeapon && ControlledLargeWeapon == largeWeapon;\n        }\n\n        public bool TryChangeCameraAttachedTo(MyCameraAttachedToEnum cameraAttachedTo)\n        {\n            if (DetachingForbidden)\n            {\n                return false;\n            }\n\n            CameraAttachedTo = cameraAttachedTo;\n            return true;\n        }\n\n        private bool m_playInventoryTransferSound = false;\n        private float m_inventoryTransferSoundPlayTime = 0;\n\n        /// <summary>\n        /// In milliseconds.\n        /// </summary>\n        float m_fireDisableTimeout;\n\n        MyHudNotification.MyNotification m_switchControlNotification;\n\n        private bool TakeAllItems()\n        {\n            bool looted = false;\n\n            MyEntity detectedEntity = null;\n            var m_entityDetector = MySession.PlayerShip.TradeDetector;\n\n            if (m_entityDetector != null)\n            {\n                detectedEntity = m_entityDetector.GetNearestEntity();\n            }\n\n            MySmallShipInteractionActionEnum? detectedAction = (MySmallShipInteractionActionEnum?)m_entityDetector.GetNearestEntityCriterias();\n            if (detectedEntity != null && detectedAction == MySmallShipInteractionActionEnum.Examine)\n            {\n                if (!MyMultiplayerGameplay.IsRunning)\n                {\n                    looted = Loot(detectedEntity);\n                }\n                else\n                {\n                    LootMultiplayer(detectedEntity);\n                }\n            }\n\n            return looted;\n        }\n\n        private void LootMultiplayer(MyEntity entity)\n        {\n            MyMultiplayerGameplay.Static.LockReponse = (e, success) =>\n            {\n                if (e != entity)\n                {\n                    Debug.Fail(\"Something went wrong, locked different entity\");\n                    MyMultiplayerGameplay.Static.Lock(e, false);\n                    return;\n                }\n\n                if (success)\n                {\n                    Loot(e);\n                    MyMultiplayerGameplay.Static.Lock(e, false);\n                }\n            };\n\n            MyMultiplayerGameplay.Static.Lock(entity, true);\n        }\n\n        private bool Loot(MyEntity entity)\n        {\n            IMyInventory m_detectedEntity = entity as IMyInventory;\n            if (m_detectedEntity == null) return false;\n\n            bool allItemsLooted = true;\n            if (m_detectedEntity.Inventory.GetInventoryItems().Count > 0)\n            {\n                MySoundCuesEnum cueToPlay;\n                if (m_detectedEntity is MyCargoBox)\n                {\n                    Entities.CargoBox.MyCargoBox cargo = m_detectedEntity as MyCargoBox;\n                    cueToPlay = cargo.GetTakeAllSound();\n                }\n                else\n                {\n                    cueToPlay = MySoundCuesEnum.SfxTakeAllUniversal;\n                }\n\n                MyAudio.AddCue2D(cueToPlay);\n                m_playInventoryTransferSound = true;\n\n                m_inventoryTransferSoundPlayTime = MyMinerGame.TotalGamePlayTimeInMilliseconds + 250;\n            }\n            for (int i = m_detectedEntity.Inventory.GetInventoryItems().Count - 1; i >= 0; i--)\n            {\n                if (MySession.PlayerShip.Inventory.GetInventoryItems().Count < MySession.PlayerShip.Inventory.MaxItems)\n                {\n                    var inventoryItem = m_detectedEntity.Inventory.GetInventoryItems()[i];\n                    m_detectedEntity.Inventory.RemoveInventoryItem(inventoryItem);\n                    MySession.PlayerShip.Inventory.AddInventoryItem(inventoryItem);\n                }\n                else\n                {\n                    allItemsLooted = false;\n                    break;\n                }\n            }\n            return allItemsLooted;\n        }\n\n        public void FadeOut(float speed)\n        {\n            m_fadeSpeed = speed;\n            m_fadingOut = true;\n        }\n\n        public void FadeIn(float speed)\n        {\n            m_fadeSpeed = speed;\n            m_fadingIn = true;\n        }\n\n        /// <summary>\n        /// Returns the squared distance of the given position from nearest player's point of interest.\n        /// This may include player's currently controlled entities (drone, camera, large weapon)\n        /// or a remote camera he is looking through, but not directly controlling.\n        /// </summary>\n        public float GetDistanceSquaredFromNearestPointOfInterest(Vector3 position)\n        {\n            float distanceFromPlayerShip = float.MaxValue;\n            float distanceFromRemoteCamera = float.MaxValue;\n\n            if (MyMultiplayerGameplay.IsRunning)\n            {\n                foreach (var player in MyMultiplayerGameplay.Peers.Players)\n                {\n                    if (player.Ship != null)\n                    {\n                        distanceFromPlayerShip = Math.Min(Vector3.DistanceSquared(player.Ship.GetPosition(), position), distanceFromPlayerShip);\n                    }\n                }\n            }\n            if (MySession.PlayerShip != null)\n            {\n                distanceFromPlayerShip = Math.Min(Vector3.DistanceSquared(MySession.PlayerShip.GetPosition(), position), distanceFromPlayerShip);\n\n                var selectedRemoteCamera = MySession.PlayerShip.GetSelectedRemoteCamera();\n                if (selectedRemoteCamera != null)\n                {\n                    distanceFromRemoteCamera = Vector3.DistanceSquared(selectedRemoteCamera.GetPosition(), position);\n                }\n            }\n\n            float distanceFromControlledEntity = float.MaxValue;\n\n            if (ControlledEntity != null)\n            {\n                distanceFromControlledEntity = Vector3.DistanceSquared(ControlledEntity.GetPosition(), position);\n            }\n\n            // return the minimum of the three\n            return Math.Min(distanceFromRemoteCamera, MathHelper.Min(distanceFromControlledEntity, distanceFromPlayerShip));\n        }\n\n        public void RefillMadelyn()\n        {\n            List<int> madelynKits = new List<int>()\n            {\n                (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.HEALTH_KIT,\n                (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.REPAIR_KIT,\n                (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.OXYGEN_KIT,\n                (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.FUEL_KIT,\n                //(int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.ELECTRICITY_KIT,\n            };\n\n            List<int> ammoItems = new List<int>()\n            {\n                (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_Basic,\n                (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Missile_Basic,\n            };\n\n            MyEntity madelyn = null;\n            if (MyEntities.TryGetEntityByName(\"Madelyn\", out madelyn))\n            {\n                var madelynContainer = madelyn as MyPrefabContainer;\n                if (madelynContainer != null)\n                {\n                    foreach (var item in madelynContainer.Inventory.GetInventoryItems())\n                    {\n                        if (item.ObjectBuilderType == MyMwcObjectBuilderTypeEnum.SmallShip_Tool && item.ObjectBuilderId.HasValue)\n                        {\n                            madelynKits.Remove(item.ObjectBuilderId.Value);\n                        }\n\n                        if (item.ObjectBuilderType == MyMwcObjectBuilderTypeEnum.SmallShip_Ammo && item.ObjectBuilderId.HasValue)\n                        {\n                            ammoItems.Remove(item.ObjectBuilderId.Value);\n                        }\n                    }\n\n                    foreach (var item in madelynKits)\n                    {\n                        madelynContainer.Inventory.AddInventoryItem(MyMwcObjectBuilderTypeEnum.SmallShip_Tool, item, 1, true, true);\n                    }\n\n                    foreach (var item in ammoItems)\n                    {\n                        var inventoryItem = MyInventory.CreateInventoryItemFromObjectBuilder(new MyMwcObjectBuilder_SmallShip_Ammo((MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum)item));\n                        inventoryItem.Amount = inventoryItem.MaxAmount;\n                        madelynContainer.Inventory.AddInventoryItem(inventoryItem);\n                    }\n                }\n            }\n        }\n\n        public override void RecreateControls(bool contructor)\n        {\n            m_selectAmmoMenu.ReloadControlText();\n            base.RecreateControls(contructor);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/MyGuiScreenGamePlay_World.cs",
    "content": "﻿#region Using\n\nusing System;\nusing System.Collections.Generic;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.GUI.Helpers;\nusing MinerWars.AppCode.Game.Entities.Prefabs;\nusing MinerWars.AppCode.Game.Missions;\nusing MinerWars.AppCode.Game.Models;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Trailer;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Voxels;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Voxels;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.AppCode.Game.Editor;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.InfluenceSpheres;\nusing SysUtils;\nusing System.Linq;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Managers;\nusing MinerWars.AppCode.Game.Entities.InfluenceSpheres;\nusing MinerWars.AppCode.Game.World;\nusing MinerWars.AppCode.Game.SolarSystem;\n\nusing System.IO;\nusing MinerWars.AppCode.Game.Inventory;\nusing MinerWars.CommonLIB.AppCode.Generics;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Gameplay;\nusing MinerWars.AppCode.Game.Entities.WayPoints;\nusing MinerWars.AppCode.Networking.SectorService;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Localization;\nusing System.Diagnostics;\nusing MinerWars.AppCode.Game.BackgroundCube;\nusing MinerWars.AppCode.Game.Missions.SideMissions;\nusing MinerWars.AppCode.Game.Entities.Ships.AI;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.AppCode.Game.Sessions;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.Prefabs;\nusing MinerWars.AppCode.Physics;\n\n#endregion\n\nnamespace MinerWars.AppCode.Game.GUI\n{\n    partial class MyGuiScreenGamePlay\n    {\n        public const int UniverseGeneratorSeed = 0;\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenGameBase\";\n        }\n\n        //  Load ships, large-ships, enemies, etc\n        void LoadObjects()\n        {\n            MyMwcLog.WriteLine(\"MyGuiScreenGameBase.LoadObjects() - START\");\n            MyMwcLog.IncreaseIndent();\n            int blockId = -1;\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"LoadObjects\", ref blockId);\n\n            if (MyMwcFinalBuildConstants.ENABLE_TRAILER_SAVE)\n            {\n                MyTrailerSave.LoadContent();\n            }\n\n            if ((GetGameType() == MyGuiScreenGamePlayType.PURE_FLY_THROUGH ||\n                 GetGameType() == MyGuiScreenGamePlayType.MAIN_MENU ||\n                 GetGameType() == MyGuiScreenGamePlayType.CREDITS))\n            {\n                if (MyTrailerLoad.TrailerAnimation != null)\n                {\n                    MyMwcLog.WriteLine(\"Loading world for trailer animation: \" + MyTrailerLoad.TrailerAnimation.Name);\n                    CreateTrailerWorld();\n                }\n            }\n            else\n            {\n                MyMwcLog.WriteLine(\"Loading world from data received from server\");\n                CreateWorldFromDataReceivedFromServer();\n\n                // we need to save it because of player position uptodate\n                // Don't save on NEW_STORY, it's saved by mission.accept\n                if (!MyFakes.DISABLE_AUTO_SAVE && (m_sessionType.Value == MyMwcStartSessionRequestTypeEnum.LOAD_CHECKPOINT))\n                {\n                    // When loading checkpoint or template, make full save\n                    bool fullSave = m_sessionType.Value == MyMwcStartSessionRequestTypeEnum.LOAD_CHECKPOINT || m_checkpoint.CheckpointName != null;\n\n                    MyMwcLog.WriteLine(\"Saving world\");\n                    MySession.Static.SaveLastCheckpoint(); // When new game or travel, don't save checkpoint\n                    m_sessionType = MyMwcStartSessionRequestTypeEnum.LOAD_CHECKPOINT;\n                }\n                if (MyMwcFinalBuildConstants.ENABLE_TRAILER_SAVE)\n                {\n                    MyTrailerSave.AttachPhysObject(\"PlayerShip\", MySession.PlayerShip);\n                }\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock(blockId);\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyGuiScreenGameBase.LoadObjects() - END\");\n        }\n\n        private void CreateTrailerWorld()\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"CreateTrailerWorld\");\n\n            MyTrailerXmlAnimation animation = MyTrailerLoad.TrailerAnimation;\n            if (animation.Name == MyTrailerConstants.FIGHT_ANIMATION)\n            {\n                CreateFakeWorld1();\n            }\n            else if (animation.Name == MyTrailerConstants.SHIP_ATTACK_ANIMATION)\n            {\n                CreateFakeWorld5();\n            }\n            else if (animation.Name == MyTrailerConstants.ICEFIGHT_ANIMATION)\n            {\n                CreateFakeWorld2();\n            }\n            else if (animation.Name == MyTrailerConstants.RACE_ANIMATION)\n            {\n                CreateFakeWorld3();\n            }\n            else if (animation.Name == MyTrailerConstants.MENU_ANIMATION)\n            {\n                CreateFakeWorld4();\n            }\n            else\n            {\n                //there is animation, that does not have its world, create default one\n                CreateFakeWorld1();\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        private MyMwcObjectBuilder_SmallShip_Player CreatePlayerShip()\n        {\n            List<MyMwcObjectBuilder_SmallShip_Weapon> weapons = new List<MyMwcObjectBuilder_SmallShip_Weapon>();\n            List<MyMwcObjectBuilder_SmallShip_Ammo> ammo = new List<MyMwcObjectBuilder_SmallShip_Ammo>();\n            List<MyMwcObjectBuilder_AssignmentOfAmmo> assignments = new List<MyMwcObjectBuilder_AssignmentOfAmmo>();\n\n            weapons.Add(new MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Autocanon));\n            weapons.Add(new MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Autocanon));\n            weapons.Add(new MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Missile_Launcher));\n            weapons.Add(new MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Cannon));\n            weapons.Add(new MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Shotgun));\n            weapons.Add(new MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Crusher));\n            weapons.Add(new MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Universal_Launcher_Front));\n            weapons.Add(new MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Harvesting_Device));\n            ammo.Add(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_Basic));\n            ammo.Add(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_BioChem));\n            ammo.Add(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Automatic_Rifle_With_Silencer_High_Speed));\n            ammo.Add(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_High_Speed));\n            ammo.Add(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_Basic));\n            ammo.Add(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_Tunnel_Buster));\n            ammo.Add(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Missile_Basic));\n            ammo.Add(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Guided_Missile_Engine_Detection));\n            ammo.Add(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Guided_Missile_Visual_Detection));\n            ammo.Add(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Shotgun_Basic));\n            ammo.Add(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Hologram));\n            ammo.Add(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Mine_Basic));\n            ammo.Add(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Mine_Smart));\n            assignments.Add(new MyMwcObjectBuilder_AssignmentOfAmmo(MyMwcObjectBuilder_FireKeyEnum.Primary, MyMwcObjectBuilder_AmmoGroupEnum.Bullet, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_Basic));\n            assignments.Add(new MyMwcObjectBuilder_AssignmentOfAmmo(MyMwcObjectBuilder_FireKeyEnum.Secondary, MyMwcObjectBuilder_AmmoGroupEnum.Missile, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Missile_Basic));\n            assignments.Add(new MyMwcObjectBuilder_AssignmentOfAmmo(MyMwcObjectBuilder_FireKeyEnum.Third, MyMwcObjectBuilder_AmmoGroupEnum.UniversalLauncherFront, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Mine_Basic));\n            assignments.Add(new MyMwcObjectBuilder_AssignmentOfAmmo(MyMwcObjectBuilder_FireKeyEnum.Fourth, MyMwcObjectBuilder_AmmoGroupEnum.UniversalLauncherBack, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Mine_Smart));\n            assignments.Add(new MyMwcObjectBuilder_AssignmentOfAmmo(MyMwcObjectBuilder_FireKeyEnum.Fifth, MyMwcObjectBuilder_AmmoGroupEnum.Bullet, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_Basic));\n\n            MyMwcObjectBuilder_Inventory inventory = new MyMwcObjectBuilder_Inventory(new List<MyMwcObjectBuilder_InventoryItem>(), 1000);\n            foreach (MyMwcObjectBuilder_SmallShip_Ammo ammoItem in ammo)\n            {\n                inventory.InventoryItems.Add(new MyMwcObjectBuilder_InventoryItem(ammoItem, 1000));\n            }\n            //inventory.InventoryItems.Add(new MyMwcObjectBuilder_InventoryItem(new MyMwcObjectBuilder_FoundationFactory(), 1));            \n            inventory.InventoryItems.Add(new MyMwcObjectBuilder_InventoryItem(new MyMwcObjectBuilder_SmallShip_Radar(MyMwcObjectBuilder_SmallShip_Radar_TypesEnum.Radar_1), 1));\n\n            //inventory.InventoryItems.Add(new MyMwcObjectBuilder_InventoryItem(new MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Harvesting_Device), 1));\n\n            //return new MyMwcObjectBuilder_SmallShip_Player(\n            //    MyMwcObjectBuilder_SmallShip_TypesEnum.GETTYSBURG, \n            //    weapons,\n            //    new MyMwcObjectBuilder_SmallShip_Engine(MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.Chemical_1), \n            //    ammo, \n            //    null,\n            //    assignments);\n            return new MyMwcObjectBuilder_SmallShip_Player(\n                MyMwcObjectBuilder_SmallShip_TypesEnum.GETTYSBURG,\n                inventory,\n                weapons,\n                new MyMwcObjectBuilder_SmallShip_Engine(MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.PowerCells_1),\n                assignments,\n                null,\n                new MyMwcObjectBuilder_SmallShip_Radar(MyMwcObjectBuilder_SmallShip_Radar_TypesEnum.Radar_1),\n                null,\n                MyGameplayConstants.HEALTH_RATIO_MAX,\n                100f,\n                float.MaxValue,\n                float.MaxValue,\n                float.MaxValue,\n                true, false, MyLightsConstants.MAX_SPOTLIGHT_SHADOW_RANGE, 0);\n        }\n\n        /// <summary>\n        /// Creates default sector with those 3 voxel asteroid, KAI, few prefabs inside asteroid\n        /// </summary>\n        /// <param name=\"objectBuilders\"></param>\n        static void CreateDefaultSector(List<MyMwcObjectBuilder_Base> objectBuilders)\n        {\n            objectBuilders.Add(new MyMwcObjectBuilder_Sector() { AreaTemplate = MySolarSystemAreaEnum.Earth });\n            objectBuilders.Add(new MyMwcObjectBuilder_VoxelMap(new Vector3(-67, -33, 0) * MyVoxelConstants.VOXEL_SIZE_IN_METRES, MyMwcVoxelFilesEnum.TorusStorySector_256x128x256, MyMwcVoxelMaterialsEnum.Stone_10));\n            objectBuilders.Add(new MyMwcObjectBuilder_VoxelMap(new Vector3(-133, 64, -316) * MyVoxelConstants.VOXEL_SIZE_IN_METRES, MyMwcVoxelFilesEnum.VerticalIsland_128x128x128, MyMwcVoxelMaterialsEnum.Stone_05));\n            objectBuilders.Add(new MyMwcObjectBuilder_VoxelMap(new Vector3(-20, -452, 15) * MyVoxelConstants.VOXEL_SIZE_IN_METRES, MyMwcVoxelFilesEnum.VerticalIslandStorySector_128x256x128, MyMwcVoxelMaterialsEnum.Indestructible_05_Craters_01));\n\n            /*\n            List<MyMwcObjectBuilder_Prefab> prefabsA = new List<MyMwcObjectBuilder_Prefab>();\n            prefabsA.Add(new MyMwcObjectBuilder_Prefab(MyMwcObjectBuilder_Prefab_TypesEnum.P381_B01_BUILDING2, new MyMwcVector3Short(1126, -225, 1021), new Vector3(-1.658715f, -0.1217058f, 0.01070096f)));\n            prefabsA.Add(new MyMwcObjectBuilder_Prefab(MyMwcObjectBuilder_Prefab_TypesEnum.P381_B01_BUILDING2, new MyMwcVector3Short(1424, -260, 1045), new Vector3(-1.658715f, -0.1217058f, 0.01070098f)));\n            prefabsA.Add(new MyMwcObjectBuilder_Prefab(MyMwcObjectBuilder_Prefab_TypesEnum.P381_B01_BUILDING2, new MyMwcVector3Short(1719, -295, 1069), new Vector3(-1.658715f, -0.1217058f, 0.01070098f)));\n            prefabsA.Add(new MyMwcObjectBuilder_Prefab(MyMwcObjectBuilder_Prefab_TypesEnum.P381_B01_BUILDING2, new MyMwcVector3Short(2017, -331, 1094), new Vector3(-1.658715f, -0.1217058f, 0.01070098f)));\n            prefabsA.Add(new MyMwcObjectBuilder_Prefab(MyMwcObjectBuilder_Prefab_TypesEnum.P381_B01_BUILDING2, new MyMwcVector3Short(2315, -371, 1126), new Vector3(-1.658715f, -0.1217058f, 0.01070098f)));\n            prefabsA.Add(new MyMwcObjectBuilder_Prefab(MyMwcObjectBuilder_Prefab_TypesEnum.P381_B01_BUILDING2, new MyMwcVector3Short(2613, -407, 1151), new Vector3(-1.658715f, -0.1217058f, 0.01070098f)));\n            prefabsA.Add(new MyMwcObjectBuilder_Prefab(MyMwcObjectBuilder_Prefab_TypesEnum.P381_B01_BUILDING2, new MyMwcVector3Short(2908, -442, 1175), new Vector3(-1.658715f, -0.1217058f, 0.01070098f)));\n            prefabsA.Add(new MyMwcObjectBuilder_Prefab(MyMwcObjectBuilder_Prefab_TypesEnum.P381_B01_BUILDING2, new MyMwcVector3Short(3206, -477, 1199), new Vector3(-1.658715f, -0.1217058f, 0.01070098f)));\n            prefabsA.Add(new MyMwcObjectBuilder_Prefab(MyMwcObjectBuilder_Prefab_TypesEnum.P211B02_PANEL_60MX60M, new MyMwcVector3Short(5885, -1124, 3545), new Vector3(0, 1.57079637f, -1.57079637f)));\n            prefabsA.Add(new MyMwcObjectBuilder_Prefab(MyMwcObjectBuilder_Prefab_TypesEnum.P211B02_PANEL_60MX60M, new MyMwcVector3Short(5885, -1124, 4145), new Vector3(0, 1.57079637f, -1.57079637f)));\n            prefabsA.Add(new MyMwcObjectBuilder_Prefab(MyMwcObjectBuilder_Prefab_TypesEnum.P211B02_PANEL_60MX60M, new MyMwcVector3Short(5885, -1744, 2945), new Vector3(-1.57079637f, 0, 1.57079637f)));\n            prefabsA.Add(new MyMwcObjectBuilder_Prefab(MyMwcObjectBuilder_Prefab_TypesEnum.P211B02_PANEL_60MX60M, new MyMwcVector3Short(4685, -1124, 4145), new Vector3(0, 1.57079637f, -1.57079637f)));\n            prefabsA.Add(new MyMwcObjectBuilder_Prefab(MyMwcObjectBuilder_Prefab_TypesEnum.P211B02_PANEL_60MX60M, new MyMwcVector3Short(4685, -1124, 3545), new Vector3(0, 1.57079637f, -1.57079637f)));\n            MyMwcObjectBuilder_PrefabContainer prefabContainerA = new MyMwcObjectBuilder_PrefabContainer(null, MyMwcObjectBuilder_PrefabContainer_TypesEnum.INSTANCE, prefabsA, 0);\n            prefabContainerA.PositionAndOrientation.Position = new Vector3(-268.4516f, 122.3787f, 2375.529f);\n            prefabContainerA.PositionAndOrientation.Forward = new Vector3(0, 0, -1);\n            prefabContainerA.PositionAndOrientation.Up = new Vector3(0, 1, 0);\n            objectBuilders.Add(prefabContainerA);\n\n            List<MyMwcObjectBuilder_Prefab> prefabsB = new List<MyMwcObjectBuilder_Prefab>();\n            prefabsB.Add(new MyMwcObjectBuilder_Prefab(MyMwcObjectBuilder_Prefab_TypesEnum.P211G03_PANEL_60MX30M, new MyMwcVector3Short(0, 1800, 0), new Vector3(0, 0, 0)));\n            MyMwcObjectBuilder_PrefabContainer prefabContainerB = new MyMwcObjectBuilder_PrefabContainer(null, MyMwcObjectBuilder_PrefabContainer_TypesEnum.INSTANCE, prefabsB, 0);\n            prefabContainerB.PositionAndOrientation.Position = new Vector3(-1296.336f, 2857.169f, -3711.143f);\n            prefabContainerB.PositionAndOrientation.Forward = new Vector3(0, 0, -1);\n            prefabContainerB.PositionAndOrientation.Up = new Vector3(0, 1, 0);\n            objectBuilders.Add(prefabContainerB);\n\n            var largeShip = new MyMwcObjectBuilder_LargeShip(MyMwcObjectBuilder_LargeShip_TypesEnum.KAI);\n            largeShip.PositionAndOrientation.Position = new Vector3(200, 0, 0);\n            largeShip.PositionAndOrientation.Forward = Vector3.Forward;\n            largeShip.PositionAndOrientation.Up = Vector3.Up;\n            objectBuilders.Add(largeShip);\n\n            List<MyMwcObjectBuilder_SmallDebris> debrisList = new List<MyMwcObjectBuilder_SmallDebris>();\n            AddDebrisToList(debrisList, MyMwcObjectBuilder_SmallDebris_TypesEnum.Standard_Container_2, new Vector3(200, 0, 20));\n            AddDebrisToList(debrisList, MyMwcObjectBuilder_SmallDebris_TypesEnum.Standard_Container_2, new Vector3(200, 130, 0));\n            AddDebrisToList(debrisList, MyMwcObjectBuilder_SmallDebris_TypesEnum.Standard_Container_2, new Vector3(200, 160, 0));\n            objectBuilders.AddRange(debrisList);\n                  */\n            //CreateFakeSmallDebris(null, MyMwcObjectBuilder_SmallDebris_TypesEnum.sat_01, new Vector3(500, 0, 0), false);\n            //CreateFakeSmallDebris(null, MyMwcObjectBuilder_SmallDebris_TypesEnum.sat_01, new Vector3(-500, 0, 0), false);\n\n            //CreateFakeSmallDebris(null, MyMwcObjectBuilder_SmallDebris_TypesEnum.Standard_Container_2, new Vector3(200, 0, 20), false);\n            //CreateFakeSmallDebris(null, MyMwcObjectBuilder_SmallDebris_TypesEnum.Standard_Container_2, new Vector3(200, 130, 0), false);\n            //CreateFakeSmallDebris(null, MyMwcObjectBuilder_SmallDebris_TypesEnum.Standard_Container_2, new Vector3(200, 160, 0), false);\n        }\n\n        private static void AddDebrisToList(List<MyMwcObjectBuilder_SmallDebris> list, MyMwcObjectBuilder_SmallDebris_TypesEnum debrisType, Vector3 position)\n        {\n            var debris = new MyMwcObjectBuilder_SmallDebris(debrisType, false, 10000);\n            debris.PositionAndOrientation.Forward = Vector3.Forward;\n            debris.PositionAndOrientation.Up = Vector3.Up;\n            debris.PositionAndOrientation.Position = position;\n            list.Add(debris);\n        }\n\n        private void CreateWorldFromDataReceivedFromServer_LoadCheckpoint()\n        {\n            MyMwcLog.WriteLine(\"CreateWorldFromDataReceivedFromServer_LoadCheckpoint - START\");\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"CreateWorldFromDataReceivedFromServer_LoadCheckpoint\");\n\n            MyEditor.Static.Init(m_checkpoint);\n\n            MySession.Static.GameDateTime = m_checkpoint.GameTime;\n\n            MyMwcLog.WriteLine(\"MySession.Static.EventLog.Init\");\n            MySession.Static.EventLog.Init(m_checkpoint);\n\n            if (m_checkpoint.InventoryObjectBuilder == null)\n            {\n                m_checkpoint.InventoryObjectBuilder = new MyMwcObjectBuilder_Inventory(new List<MyMwcObjectBuilder_InventoryItem>(), 200);                \n            }\n            m_checkpoint.InventoryObjectBuilder.UnlimitedCapacity = true;\n\n            // Add razer claw for people with contributions > 30 USD\n            if (GetSessionType().HasValue && GetSessionType().Value == MyMwcStartSessionRequestTypeEnum.NEW_STORY &&  MyClientServer.LoggedPlayer.AdditionalInfo.Contributions >= 30)\n            {\n                m_checkpoint.InventoryObjectBuilder.InsertBonusShipRazerClaw();\n            }\n\n            MyMwcLog.WriteLine(\"MySession.Static.Inventory\");\n            if (MySession.Static.CanSaveAndLoadSessionInventory)\n            {\n                MySession.Static.Inventory.Init(m_checkpoint.InventoryObjectBuilder);\n            }\n            else \n            {\n                MySession.Static.Inventory.ClearInventoryItems(true);\n            }\n\n            if (m_checkpoint.PlayerObjectBuilder == null)\n            {\n                m_checkpoint.PlayerObjectBuilder = new MyMwcObjectBuilder_Player(100f, 10000f, 0f, null, null, null);\n            }\n\n            if (m_checkpoint.PlayerObjectBuilder.ShipObjectBuilder == null)\n            {\n                MyMwcObjectBuilder_SmallShip_Player playerShipObjectBuilder = CreatePlayerShip();\n                playerShipObjectBuilder.PositionAndOrientation.Position = Vector3.Zero;\n                playerShipObjectBuilder.PositionAndOrientation.Up = Vector3.Up;\n                playerShipObjectBuilder.PositionAndOrientation.Forward = Vector3.Forward;\n                m_checkpoint.PlayerObjectBuilder.ShipObjectBuilder = playerShipObjectBuilder;\n            }\n\n            // Invalid faction, for compatibility reason\n            if (m_checkpoint.PlayerObjectBuilder.ShipObjectBuilder.Faction == MyMwcObjectBuilder_FactionEnum.None || m_checkpoint.PlayerObjectBuilder.ShipObjectBuilder.Faction == 0)\n            {\n                m_checkpoint.PlayerObjectBuilder.ShipObjectBuilder.Faction = MyMwcObjectBuilder_FactionEnum.Euroamerican;\n            }\n\n            MyMwcLog.WriteLine(\"MySession.Static.Player.Init\");\n            MySession.Static.Player.Init(m_checkpoint.PlayerObjectBuilder);\n\n            if (MyFakes.ADD_DRONES_TO_INVENTORY)\n            {\n                var droneObjectBuilder = (MyMwcObjectBuilder_Drone)MyMwcObjectBuilder_Base.CreateNewObject(MyMwcObjectBuilderTypeEnum.Drone, (int)MyMwcObjectBuilder_Drone_TypesEnum.DroneUS);\n                droneObjectBuilder.Faction = MyMwcObjectBuilder_FactionEnum.None;\n\n                MySession.PlayerShip.Inventory.AddInventoryItem(droneObjectBuilder, 1, true);\n\n                droneObjectBuilder = (MyMwcObjectBuilder_Drone)MyMwcObjectBuilder_Base.CreateNewObject(MyMwcObjectBuilderTypeEnum.Drone, (int)MyMwcObjectBuilder_Drone_TypesEnum.DroneCN);\n                droneObjectBuilder.Faction = MyMwcObjectBuilder_FactionEnum.None;\n\n                MySession.PlayerShip.Inventory.AddInventoryItem(droneObjectBuilder, 1, true);\n\n                droneObjectBuilder = (MyMwcObjectBuilder_Drone)MyMwcObjectBuilder_Base.CreateNewObject(MyMwcObjectBuilderTypeEnum.Drone, (int)MyMwcObjectBuilder_Drone_TypesEnum.DroneSS);\n                droneObjectBuilder.Faction = MyMwcObjectBuilder_FactionEnum.None;\n\n                MySession.PlayerShip.Inventory.AddInventoryItem(droneObjectBuilder, 1, true);\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            MyMwcLog.WriteLine(\"CreateWorldFromDataReceivedFromServer_LoadCheckpoint - END\");\n        }\n\n        //  Create world using data received from server\n        public void CreateWorldFromDataReceivedFromServer()\n        {\n            MyMwcLog.WriteLine(\"CreateWorldFromDataReceivedFromServer - START\");\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"CreateWorldFromDataReceivedFromServer\");\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MySession.BeforeLoad\");\n            MySession.Static.BeforeLoad(m_checkpoint);\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            CreateWorldFromDataReceivedFromServer_LoadCheckpoint();\n            \n            bool canUseGenerator = m_sessionType.Value != MyMwcStartSessionRequestTypeEnum.EDITOR_SANDBOX && m_sessionType.Value != MyMwcStartSessionRequestTypeEnum.SANDBOX_OWN && MyFakes.ENABLE_GENERATED_ASTEROIDS;\n            if (m_checkpoint.SectorObjectBuilder.FromGenerator && canUseGenerator) // When no sector on server, use procedural generator\n            {\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"ProceduralGenerator.Player\");\n                if (m_checkpoint.PlayerObjectBuilder == null)\n                {\n                    MyMwcObjectBuilder_SmallShip_Player playerShipObjectBuilder = CreatePlayerShip();\n                    playerShipObjectBuilder.PositionAndOrientation.Position = Vector3.Zero;\n                    playerShipObjectBuilder.PositionAndOrientation.Up = Vector3.Up;\n                    playerShipObjectBuilder.PositionAndOrientation.Forward = Vector3.Forward;\n                    m_checkpoint.PlayerObjectBuilder = new MyMwcObjectBuilder_Player(100f, 10000f, 0f, null, playerShipObjectBuilder, null);\n                }\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n            }\n\n            UpdateSmallshipsOfferedByVendors(m_checkpoint);\n\n            if (((m_checkpoint.SectorObjectBuilder.FromGenerator && MyFakes.ENABLE_GENERATED_ASTEROIDS) || canUseGenerator)) // When no sector on server, use procedural generator\n            {\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Generating sector\");\n\n                //Use objects from server and generate new items into them\n                //m_checkpoint.SectorObjectBuilder.SectorObjects = new List<MyMwcObjectBuilder_Base>();\n\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Safe areas\");\n\n                if (m_checkpoint.SectorObjectBuilder.SectorObjects == null)\n                {\n                    m_checkpoint.SectorObjectBuilder.SectorObjects = new List<MyMwcObjectBuilder_Base>();\n                }\n\n                MyMwcLog.WriteLine(\"Adding safe areas\");\n\n                List<BoundingSphere> safeAreas = new List<BoundingSphere>();\n                foreach (MyMwcObjectBuilder_Base objectBuilder in m_checkpoint.SectorObjectBuilder.SectorObjects)\n                {\n                    MyMwcObjectBuilder_DummyPoint dummyObjectBuilder = objectBuilder as MyMwcObjectBuilder_DummyPoint;\n                    if (dummyObjectBuilder != null && dummyObjectBuilder.DummyFlags.HasFlag(MyDummyPointFlags.SAFE_AREA))\n                    {\n                        safeAreas.Add(new BoundingSphere(dummyObjectBuilder.PositionAndOrientation.Position, dummyObjectBuilder.Size.Length() / 2.0f));\n                    }\n\n                    MyMwcObjectBuilder_VoxelMap voxelObjectBuilder = objectBuilder as MyMwcObjectBuilder_VoxelMap;\n                    if (voxelObjectBuilder != null)\n                    {\n                        MyMwcVector3Int sizeInVoxels = MyVoxelFiles.Get(voxelObjectBuilder.VoxelFile).SizeInVoxels;\n                        Vector3 sizeInMeters = new Vector3(MyVoxelConstants.VOXEL_SIZE_IN_METRES * sizeInVoxels.X, MyVoxelConstants.VOXEL_SIZE_IN_METRES * sizeInVoxels.Y, MyVoxelConstants.VOXEL_SIZE_IN_METRES * sizeInVoxels.Z);\n                        safeAreas.Add(new BoundingSphere(voxelObjectBuilder.PositionAndOrientation.Position, sizeInMeters.Length() / 2.0f));\n                    }\n                }\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n                MyMwcLog.WriteLine(\"GenerateSector\");\n                MySolarSystemMapSectorData sectorData = GenerateSector(m_sectorIdentifier.Position, m_checkpoint.SectorObjectBuilder.SectorObjects, safeAreas, m_checkpoint.SectorObjectBuilder.SectorObjects.Count > 0);\n\n                //MySolarSystemMapSectorData sectorData = GenerateSectorData();\n                m_checkpoint.SectorObjectBuilder.AreaTemplate = sectorData.Area;\n                m_checkpoint.SectorObjectBuilder.AreaMultiplier = sectorData.AreaInfluenceMultiplier;\n\n                MySector.UseGenerator = true;\n\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n            }\n            else if (!m_checkpoint.SectorObjectBuilder.AreaTemplate.HasValue)\n            {\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Generating sector area data\");\n                MySolarSystemMapSectorData sectorData = GenerateSectorData();\n                m_checkpoint.SectorObjectBuilder.AreaTemplate = sectorData.Area;\n                m_checkpoint.SectorObjectBuilder.AreaMultiplier = sectorData.AreaInfluenceMultiplier;\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n            }\n\n            MyMwcLog.WriteLine(\"CreateFromSectorObjectBuilder\");\n            CreateFromSectorObjectBuilder(m_checkpoint.SectorObjectBuilder);\n\n\n            MyTrailerLoad.TrailerAnimation = null;\n\n            //  If null, then loop above didn't contain player's ship\n            MyCommonDebugUtils.AssertRelease(MySession.PlayerShip != null);\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Preload cockpit models\");\n\n            MySmallShip playerShip = MySession.PlayerShip;\n            //  Pre-load player's cockpit interior models\n            //  IMPORTANT: Only data and no vertex buffers, because this method is called from Update and not from Draw\n            MyModels.GetModelOnlyData(MySession.PlayerShip.CockpitInteriorModelEnum);\n            MyModels.GetModelOnlyData(MySession.PlayerShip.CockpitGlassModelEnum);\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            //0002325: AI - Add friend bot to story and sandbox, he will be there by default.\n            if (!IsEditorActive() && MyFakes.SPAWN_FRIENDS == true)\n            {\n                MySession.PlayerFriends.Clear();// when saving bots will be enabled please remove this\n                if (MySession.PlayerFriends.Count == 0)\n                {\n                    MySmallShipBot bot = CreateFakeBot(\"Friend\", MyMwcObjectBuilder_SmallShip_TypesEnum.GREISER, MySession.PlayerShip.WorldMatrix.Translation + new Vector3(0, 30, 30), 1f, MyMwcObjectBuilder_FactionEnum.Euroamerican);\n                    MySession.PlayerFriends.Add(bot);\n                    bot.Follow(MySession.PlayerShip);\n                    bot.Save = false;\n\n                    bot = CreateFakeBot(\"Friend\", MyMwcObjectBuilder_SmallShip_TypesEnum.GREISER, MySession.PlayerShip.WorldMatrix.Translation + new Vector3(0, -30, 30), 1f, MyMwcObjectBuilder_FactionEnum.Euroamerican);\n                    MySession.PlayerFriends.Add(bot);\n                    bot.Follow(MySession.PlayerShip);\n                    bot.Save = false;\n                }\n            }\n\n            MyMwcLog.WriteLine(\"MySession.Static.AfterLoad\");\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"AfterLoad\");\n            MySession.Static.AfterLoad(m_checkpoint);\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Side missions\");\n            // Side missions\n            foreach (var dummy in MyEntities.GetEntities().OfType<MyDummyPoint>())\n            {\n                if ((dummy.DummyFlags & MyDummyPointFlags.SIDE_MISSION) != 0)\n                {\n                    MyMwcLog.WriteLine(\"Side missions\");\n                    // TODO: Choose random submission\n                    var sideMission = new MySideMissionAssassination(new MyMissionBase.MyMissionLocation(m_checkpoint.CurrentSector.Position, dummy.EntityId.Value.NumericValue));\n                    if (MyMissions.GetMissionByID(sideMission.ID) == null)\n                    {\n                        MyMissions.AddMission(sideMission);\n                    }\n                }\n            }\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            MyMwcLog.WriteLine(\"MySession.Static.Player.TravelEnter\");\n            //Unpacks player friends needed for mission script\n            MySession.Static.Player.TravelEnter();\n\n            if (MySession.Is25DSector)\n                MyGlobalEvents.DisableAllGlobalEvents();\n            else\n                MyGlobalEvents.EnableAllGlobalEvents();\n\n            // Init active mission\n            System.Diagnostics.Debug.Assert(MyMissions.ActiveMission == null);\n\n            MyMwcLog.WriteLine(\"Active mission load - START\");\n            if (GetGameType() == MyGuiScreenGamePlayType.GAME_STORY && (MyMultiplayerGameplay.Static == null || MyMultiplayerGameplay.Static.IsHost))\n            {\n                MyMwcLog.WriteLine(\"Starting story mission\");\n\n                if (m_checkpoint.ActiveMissionID != -1)\n                {\n                    MyMwcLog.WriteLine(\"ActiveMissionID: \" + m_checkpoint.ActiveMissionID);\n\n                    MyMission mission = MyMissions.GetMissionByID((MyMissionID)m_checkpoint.ActiveMissionID) as MyMission;\n                    MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Load active mission\");\n                    if (mission.IsMainSector)\n                    {\n                        mission.InsertRequiredActors();\n                    }\n                    mission.Load();\n                    MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n                }\n                else\n                {\n                    MyMwcLog.WriteLine(\"ActiveMissionID: none\");\n\n                    if (m_missionToStart.HasValue)\n                    {\n                        MyMission mission = MyMissions.GetMissionByID(m_missionToStart.Value) as MyMission;\n                        MyScriptWrapper.DebugSetFactions(mission);\n                        mission.Accept();\n\n                        m_missionToStart = null;\n                    }\n                }\n                MyMissions.RefreshAvailableMissions();\n\n                if (m_travelReason == MyMwcTravelTypeEnum.SOLAR)\n                {\n                    if (MyMissions.ActiveMission == null || MyMissions.ActiveMission.MovePlayerToMadelynHangar)\n                    {\n                        if (MyMissionBase.IsPlayerShipNearMadelyn())\n                        {\n                            if (MyMissions.ActiveMission != null)\n                                MyMissionBase.MovePlayerAndFriendsToHangar(MyMissions.ActiveMission.RequiredActors);\n                            else\n                                MyMissionBase.MovePlayerAndFriendsToHangar(new MyActorEnum[] { MyActorEnum.MARCUS, MyActorEnum.TARJA, MyActorEnum.VALENTIN });\n                        }\n                    }\n                }\n\n\n            }\n            else if (GetGameType() == MyGuiScreenGamePlayType.GAME_SANDBOX)\n            {\n                MyMwcLog.WriteLine(\"Starting sandbox mission\");\n                MyMissions.StartSandboxMission(m_checkpoint.CurrentSector.Position);\n            }\n            MyMwcLog.WriteLine(\"Active mission load - END\");\n\n            MyEntities.UpdateAfterSimulation(); //Updates AABBs of objects\n\n            if (MyMultiplayerGameplay.IsStory())\n            {\n                MyMultiplayerGameplay.MakeInventoryItemsTradeable(MySession.PlayerShip);\n            }\n\n\n            if (MyFakes.MWBUILDER)\n            {\n                MyVoxelMap voxelMap = null;\n\n                if (MyVoxelMaps.GetVoxelMapsCount() == 0)\n                {\n                   // MyMwcObjectBuilder_VoxelMap voxelMapOb = new MyMwcObjectBuilder_VoxelMap(Vector3.Zero, MyMwcVoxelFilesEnum.Cube_512x512x512, MyMwcVoxelMaterialsEnum.Stone_01);\n                   // voxelMap = (MyVoxelMap)MyEntities.CreateFromObjectBuilderAndAdd(null, voxelMapOb, Matrix.Identity);\n                    voxelMap = new MyVoxelMap();\n                    voxelMap.Init(Vector3.Zero, new MyMwcVector3Int(1024, 1024, 1024), MyMwcVoxelMaterialsEnum.Stone_01);\n\n                    //MyVoxelImport.Fill(voxelMap);\n                    MyVoxelImport.FillEmpty(voxelMap);\n\n                    MyEntities.Add(voxelMap);\n\n                    voxelMap.SetPosition(Vector3.Zero);\n                 \n\n                    MyVoxelGenerator.CreateSphere(voxelMap, new BoundingSphere(Vector3.Zero, 1024));\n                    voxelMap.InvalidateCache(new MyMwcVector3Int(0, 0, 0), new MyMwcVector3Int(1024, 1024, 1024));\n                    \n\n                    MyVoxelMaps.RecalcVoxelMaps();\n\n                    voxelMap.UpdateAABBHr();\n\n\n                    voxelMap.SaveVoxelContents(Path.Combine(MyMinerGame.Static.RootDirectory, \"VoxelMaps\", MyVoxelFiles.ExportFile + \".vox\"));\n\n                    //MyVoxelGenerator.CutOutBoxRelative(voxelMap, new Vector3(0, 0.5f, 0), new Vector3(1, 1, 1));\n                    /*\n  MyVoxelGenerator.ChangeMaterialInBoxRelative(voxelMap, new Vector3(0, 0.49f, 0), new Vector3(1, 0.5f, 1), MyMwcVoxelMaterialsEnum.Uranite_01);\n  MyVoxelGenerator.ChangeMaterialInBoxRelative(voxelMap, new Vector3(0, 0.2f, 0), new Vector3(1, 0.49f, 1), MyMwcVoxelMaterialsEnum.Nickel_01);\n  MyVoxelGenerator.ChangeMaterialInBoxRelative(voxelMap, new Vector3(0, 0.0f, 0), new Vector3(1, 0.1f, 1), MyMwcVoxelMaterialsEnum.Lava_01);\n                     */\n                }\n                else\n                {\n                    voxelMap = MyVoxelMaps.GetVoxelMaps()[0];\n\n                    MyPhysics.physicsSystem.GravitationPoints.Clear();\n                    MyPhysics.physicsSystem.GravitationPoints.Add(new Tuple<BoundingSphere,float>(new BoundingSphere(voxelMap.WorldAABB.GetCenter(), voxelMap.WorldAABB.Size().Length()), 2000));\n\n                    \n              //      voxelMap.Init(Vector3.Zero, new MyMwcVector3Int(1024, 1024, 1024), MyMwcVoxelMaterialsEnum.Stone_01);\n              //      MyVoxelImport.Fill(voxelMap);\n              //      MyVoxelGenerator.CutOutBoxRelative(voxelMap, new Vector3(0, 0.3f, 0), new Vector3(1, 1, 1));\n\n              //      string name = Path.Combine(MyFileSystemUtils.GetApplicationUserDataFolder(), \"VoxelMap_0_mikrogen.vox\");\n              //      voxelMap.SaveVoxelContents(name);\n                      \n              //      voxelMap.SetName(\"VoxelMap_0_mikrogen.vox\");\n              //      voxelMap.Init(null, Vector3.Zero, null);\n                }\n                    \n                MySpectator.Position = voxelMap.WorldAABB.GetCenter();\n\n                MyCamera.SetViewMatrix(MySpectator.GetViewMatrix());\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            MyMwcLog.WriteLine(\"CreateWorldFromDataReceivedFromServer - END\");\n        }\n\n        /// <summary>\n        /// Generates area data, sun color, dust color, etc.\n        /// </summary>\n        /// <returns></returns>\n        private MySolarSystemMapSectorData GenerateSectorData()\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"GenerateSectorData\");\n\n            MySolarSystemGenerator solarSystemGenerator = new MySolarSystemGenerator(MyGuiScreenSolarSystemMap.UNIVERSE_SEED);\n            solarSystemGenerator.Generate(1);\n\n            MySectorGenerator sectorGenerator = new MySectorGenerator(MyGuiScreenSolarSystemMap.UNIVERSE_SEED);\n\n            MyMwcVector3Int sectorToGenerate = m_sectorIdentifier.Position;\n            MySolarSystemMapSectorData sectorData = sectorGenerator.GenerateSectorEntities(solarSystemGenerator.SolarSystemData, sectorToGenerate, 0, int.MaxValue, true);\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n            return sectorData;\n        }\n\n        public MySolarSystemMapSectorData GenerateSector(MyMwcVector3Int sectorToGenerate, List<MyMwcObjectBuilder_Base> objectBuilders, List<BoundingSphere> safeAreas, bool onlyStaticAsteroids)\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Solar generator\");\n\n            MySolarSystemGenerator solarSystemGenerator = new MySolarSystemGenerator(MyGuiScreenSolarSystemMap.UNIVERSE_SEED);\n            solarSystemGenerator.Generate(1024);\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            BoundingSphere playerSafeArea = new BoundingSphere(MySession.PlayerShip.GetPosition(), 150); //smallship + mothership\n            safeAreas.Add(playerSafeArea);\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Sector generator\");\n            MySectorGenerator sectorGenerator = new MySectorGenerator(MyGuiScreenSolarSystemMap.UNIVERSE_SEED ^ sectorToGenerate.GetHashCode(), safeAreas);\n            MySolarSystemMapSectorData sectorData = sectorGenerator.GenerateSectorObjectBuilders(sectorToGenerate, solarSystemGenerator.SolarSystemData, objectBuilders, onlyStaticAsteroids);\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            MySector.UseGenerator = true;\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Sector data\");\n            MySolarSectorData defaultSectorData = MySolarSystemConstants.GetDefaultArea().SectorData;\n            MySolarSectorData currentSectorData = defaultSectorData;\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            if (sectorData.Area.HasValue)\n            {\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Sector data interpolation\");\n                var sectorData2 = MySolarSystemConstants.Areas[sectorData.Area.Value].SectorData;\n                currentSectorData = sectorData2.InterpolateWith(defaultSectorData, 1 - sectorData.AreaInfluenceMultiplier);\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyMwcObjectBuilder_Sector\");\n\n            SetSectorProperties(currentSectorData);\n\n            MyBackgroundCube.ReloadContent();\n            MyDistantImpostors.ReloadContent();\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            return sectorData;\n        }\n\n        private static void UpdateBuildersForVoxelImport(MyMwcObjectBuilder_Sector sectorBuilder)\n        {\n            sectorBuilder.SectorObjects.RemoveAll(x => x.GetObjectBuilderType() != MyMwcObjectBuilderTypeEnum.SmallShip_Player && x.GetObjectBuilderType() != MyMwcObjectBuilderTypeEnum.Sector);\n            sectorBuilder.SectorObjects.Add(new MyMwcObjectBuilder_VoxelMap(new Vector3(-160, -100, 3000),\n                MyMwcVoxelFilesEnum.VoxelImporterTest, MyMwcVoxelMaterialsEnum.Cobalt_01));\n        }\n\n\n        //this method creates world objects from object builders received from server\n        public static void CreateFromObjectBuilders(List<MyMwcObjectBuilder_Base> objectBuilders)\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"CreateFromObjectBuilders\");\n\n            MyVoxelMaps.AutoRecalculateVoxelMaps = false;\n\n            //  Objects received from server\n            foreach (MyMwcObjectBuilder_Base objectBuilder in objectBuilders)\n            {\n\n                if (objectBuilder.GetObjectBuilderType() == MyMwcObjectBuilderTypeEnum.VoxelMap)\n                {\n                    MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"CreateFromObjectBuilderAndAdd Voxel\");\n                    MyMwcObjectBuilder_VoxelMap voxelMapObjectBuilder = objectBuilder as MyMwcObjectBuilder_VoxelMap;\n                    MyEntities.CreateFromObjectBuilderAndAdd(null, voxelMapObjectBuilder, Matrix.Identity);\n                    MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n                }\n                else if (objectBuilder.GetObjectBuilderType() == MyMwcObjectBuilderTypeEnum.VoxelMap_Neighbour)\n                {\n                    //  Voxel map neighbours are handled in its static classe, so ignore it here\n                }\n                else\n                {\n                    if (objectBuilder is MyMwcObjectBuilder_Object3dBase || objectBuilder is MyMwcObjectBuilder_InfluenceSphere)\n                    {\n                        MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"CreateFromObjectBuilderAndAdd 3D object\");\n\n                        MyEntity temporaryEntity = null;\n                        Matrix matrix = Matrix.Identity;\n\n                        if (objectBuilder is MyMwcObjectBuilder_Object3dBase)\n                        {\n                            var object3d = objectBuilder as MyMwcObjectBuilder_Object3dBase;\n\n                            matrix = Matrix.CreateWorld(object3d.PositionAndOrientation.Position, object3d.PositionAndOrientation.Forward, object3d.PositionAndOrientation.Up);\n                            MyUtils.AssertIsValid(matrix);\n                        }\n\n                        temporaryEntity = MyEntities.CreateFromObjectBuilderAndAdd(null, objectBuilder, matrix);\n\n                        MyEntities.TestEntityAfterInsertionForCollision(temporaryEntity);\n\n                        MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n                    }\n                }\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        //this method creates world objects from object builders received from server\n        public static void CreateFromSectorObjectBuilder(MyMwcObjectBuilder_Sector sectorBuilder)\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"CreateFromSectorObjectBuilder\");\n\n            if (MyFakes.VOXEL_IMPORT)\n            {\n                UpdateBuildersForVoxelImport(sectorBuilder);\n            }\n\n            CreateFromObjectBuilders(sectorBuilder.SectorObjects);\n\n            MySolarSectorData defaultSectorData = MySolarSystemConstants.GetDefaultArea().SectorData;\n            MySolarSectorData currentSectorData = defaultSectorData;\n\n            if (sectorBuilder.AreaTemplate.HasValue)\n            {\n                var sectorData = MySolarSystemConstants.Areas[sectorBuilder.AreaTemplate.Value].SectorData;\n                currentSectorData = sectorData.InterpolateWith(defaultSectorData, 1 - sectorBuilder.AreaMultiplier);\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyMwcObjectBuilder_Sector\");\n\n            SetSectorProperties(currentSectorData);\n\n            MyBackgroundCube.ReloadContent();\n            MyDistantImpostors.ReloadContent();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            MyVoxelMaps.AutoRecalculateVoxelMaps = true;\n\n#if PROFILING\n            Console.WriteLine(\"Total voxel load: {0}\", MyPerformanceTimer.VoxelLoad.GetTotalTimeSpent());\n            Console.WriteLine(\"Total voxel content merge: {0}\", MyPerformanceTimer.VoxelContentMerge.GetTotalTimeSpent());\n            Console.WriteLine(\"Total voxel material merge: {0}\", MyPerformanceTimer.VoxelMaterialMerge.GetTotalTimeSpent());\n            Console.WriteLine(\"Total voxel hand: {0}\", MyPerformanceTimer.VoxelHandLoad.GetTotalTimeSpent());\n#endif //PROFILING\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        static void SetSectorProperties(MySolarSectorData currentSectorData)\n        {\n            MySector.DebrisProperties = currentSectorData.DebrisProperties;\n            MySector.FogProperties = currentSectorData.FogProperties;\n            MySector.ImpostorProperties = currentSectorData.ImpostorProperties;\n            MySector.SunProperties = currentSectorData.SunProperties;\n            MySector.ParticleDustProperties = currentSectorData.ParticleDustProperties;\n            MySector.GodRaysProperties = currentSectorData.GodRaysProperties;\n            MySector.BackgroundTexture = currentSectorData.BackgroundTexture;\n            MySector.PrimaryMaterials = currentSectorData.PrimaryAsteroidMaterials.Keys.Select(e=>(int)e).ToList();\n            MySector.SecondaryMaterials = currentSectorData.SecondaryAsteroidMaterials.Keys.Select(e => (int)e).ToList();\n            MySector.AllowedMaterials = currentSectorData.AllowedAsteroidMaterials.Select(e => (int)e).ToList();\n        }\n\n    \n        //  Trailer animation fake world - world for fight animation\n        void CreateFakeWorld1()\n        {\n            Vector3 miningShipsOrigin = new Vector3(0, 500, 500);\n            MySession.PlayerShip = CreateFakeMinerShip(null, MyMwcObjectBuilder_SmallShip_TypesEnum.GETTYSBURG, miningShipsOrigin, true, 1.0f);\n\n            MyEntities.CreateFromObjectBuilderAndAdd(\"Kai\", new MyMwcObjectBuilder_LargeShip(MyMwcObjectBuilder_LargeShip_TypesEnum.KAI), Matrix.CreateWorld(new Vector3(-1000, -500, -500), Vector3.Forward, Vector3.Up));\n\n            SectorDustColor = new Vector4(1, 1, 1, 0.5f);\n            MySector.SunProperties.SunDiffuse = new Vector3(1, 1, 1);\n\n            LoadTrailerContent();\n\n            MyMwcObjectBuilder_VoxelMap objectBuilder = MyMwcObjectBuilder_Base.CreateNewObject(MyMwcObjectBuilderTypeEnum.VoxelMap, (int?)null) as MyMwcObjectBuilder_VoxelMap;\n            objectBuilder.VoxelFile = MyMwcVoxelFilesEnum.PerfectSphereWithMassiveTunnels_512x512x512;\n            objectBuilder.VoxelMaterial = MyMwcVoxelMaterialsEnum.Stone_06;\n            //MyVoxelMap newVoxelMap0 = (MyVoxelMap)MyEntities.CreateFromObjectBuilderAndAdd(null, objectBuilder, Matrix.CreateTranslation(3900, 960, 1920));\n            objectBuilder.PositionAndOrientation.Position = new Vector3(2000, 0, 0);\n            MyVoxelMap newVoxelMap0 = (MyVoxelMap)MyEntities.CreateFromObjectBuilderAndAdd(null, objectBuilder, Matrix.Identity);\n\n            //newVoxelMap0.MergeVoxelContents(MyMwcVoxelFilesEnum.SphereWithLargeCutOut_128x128x128, new MyMwcVector3Short(0, 0, 0), MyMwcVoxelMapMergeTypeEnum.INVERSE_AND_SUBTRACT);\n            //newVoxelMap0.MergeVoxelMaterials(MyMwcVoxelFilesEnum.SphereWithLargeCutOut_128x128x128, new MyMwcVector3Short(128, 64, 0), MyMwcVoxelMaterialsEnum.Gold_01);\n            //newVoxelMap0.MergeVoxelMaterials(MyMwcVoxelFilesEnum.PerfectSphereWithMassiveTunnels_512x512x512, new MyMwcVector3Short(-64, 0, 0), MyMwcVoxelMaterialsEnum.Stone_01);\n            newVoxelMap0.WriteDebugInfo();\n\n            objectBuilder.VoxelFile = MyMwcVoxelFilesEnum.TorusWithSmallTunnel_256x128x256;\n            objectBuilder.VoxelMaterial = MyMwcVoxelMaterialsEnum.Cobalt_01;\n            //MyVoxelMap newVoxelMap1 = (MyVoxelMap)MyEntities.CreateFromObjectBuilderAndAdd(null, objectBuilder, Matrix.CreateTranslation(-1000, -100, -8000));\n            objectBuilder.PositionAndOrientation.Position = new Vector3(-1000, -100, -8000);\n            MyVoxelMap newVoxelMap1 = (MyVoxelMap)MyEntities.CreateFromObjectBuilderAndAdd(null, objectBuilder, Matrix.Identity);\n\n            //newVoxelMap1.MergeVoxelMaterials(MyMwcVoxelFilesEnum.SphereWithLargeCutOut_128x128x128, new MyMwcVector3Short(64, 0, 0), MyMwcVoxelMaterialsEnum.Platinum_01);\n            //newVoxelMap1.MergeVoxelMaterials(MyMwcVoxelFilesEnum.SphereWithLargeCutOut_128x128x128, new MyMwcVector3Short(64, 64, 64), MyMwcVoxelMaterialsEnum.Silicon_01);\n            newVoxelMap1.WriteDebugInfo();\n\n            objectBuilder.VoxelFile = MyMwcVoxelFilesEnum.VerticalIsland_128x256x128;\n            objectBuilder.VoxelMaterial = MyMwcVoxelMaterialsEnum.Iron_02;\n            //MyVoxelMap newVoxelMap2 = (MyVoxelMap)MyEntities.CreateFromObjectBuilderAndAdd(null, objectBuilder, Matrix.CreateTranslation(-5000, -500, 0));\n            objectBuilder.PositionAndOrientation.Position = new Vector3(-5000, -500, 0);\n            MyVoxelMap newVoxelMap2 = (MyVoxelMap)MyEntities.CreateFromObjectBuilderAndAdd(null, objectBuilder, Matrix.Identity);\n            newVoxelMap2.WriteDebugInfo();\n        }\n\n        //  Trailer animation fake world - world for ice fight animation\n        void CreateFakeWorld2()\n        {\n            Vector3 miningShipsOrigin = new Vector3(0, 500, 500);\n\n            MySession.PlayerShip = CreateFakeMinerShip(null, MyMwcObjectBuilder_SmallShip_TypesEnum.GETTYSBURG, miningShipsOrigin + new Vector3(7175, 486, 5540), true, 1.0f);\n\n            miningShipsOrigin.X -= 1000;\n\n            SectorDustColor = new Vector4(1, 1, 1, 0.5f);\n            MySector.SunProperties.SunDiffuse = new Vector3(1, 1, 1);\n\n            LoadTrailerContent();\n\n            MyMwcObjectBuilder_VoxelMap objectBuilder = MyMwcObjectBuilder_Base.CreateNewObject(MyMwcObjectBuilderTypeEnum.VoxelMap, (int?)null) as MyMwcObjectBuilder_VoxelMap;\n            objectBuilder.VoxelFile = MyMwcVoxelFilesEnum.PerfectSphereWithMassiveTunnels2_512x512x512;\n            objectBuilder.VoxelMaterial = MyMwcVoxelMaterialsEnum.Organic_01;\n            //MyVoxelMap newVoxelMap0 = (MyVoxelMap)MyEntities.CreateFromObjectBuilderAndAdd(null, objectBuilder, Matrix.CreateTranslation(3900, 960, 1920));\n            objectBuilder.PositionAndOrientation.Position = new Vector3(2000, 0, 0);\n            MyVoxelMap newVoxelMap0 = (MyVoxelMap)MyEntities.CreateFromObjectBuilderAndAdd(null, objectBuilder, Matrix.Identity);\n\n            //newVoxelMap0.MergeVoxelMaterials(MyMwcVoxelFilesEnum.PerfectSphereWithMassiveTunnels2_512x512x512, new MyMwcVector3Short(128, 128, 128), MyMwcVoxelMaterialsEnum.Helium3_01);\n            //newVoxelMap0.MergeVoxelMaterials(MyMwcVoxelFilesEnum.PerfectSphereWithMassiveTunnels2_512x512x512, new MyMwcVector3Short(64, 64, 64), MyMwcVoxelMaterialsEnum.Ice_01);\n            newVoxelMap0.WriteDebugInfo();\n        }\n\n        //  Trailer animation fake world - world for race in the tunnels animation\n        void CreateFakeWorld3()\n        {\n            Vector3 miningShipsOrigin = new Vector3(0, 500, 500);\n\n            MySession.PlayerShip = CreateFakeMinerShip(null, MyMwcObjectBuilder_SmallShip_TypesEnum.GETTYSBURG, miningShipsOrigin + new Vector3(3057, 629, 4537), true, 1.0f);\n\n            miningShipsOrigin.X -= 1000;\n\n            CreateFakeMinerShip(null, MyMwcObjectBuilder_SmallShip_TypesEnum.GETTYSBURG, miningShipsOrigin + new Vector3(3000, 629, 4537), false, 1.0f);\n\n            MyEntities.CreateFromObjectBuilderAndAdd(\"Kai\", new MyMwcObjectBuilder_LargeShip(MyMwcObjectBuilder_LargeShip_TypesEnum.KAI), Matrix.CreateWorld(new Vector3(3000, 500, 5000), Vector3.Forward, Vector3.Up));\n\n            MyEntities.CreateFromObjectBuilderAndAdd(\"Kai\", new MyMwcObjectBuilder_LargeShip(MyMwcObjectBuilder_LargeShip_TypesEnum.KAI), Matrix.CreateWorld(new Vector3(9800, 5393, 3922), Vector3.Forward, Vector3.Up));\n\n            SectorDustColor = new Vector4(1, 1, 1, 0.5f);\n            MySector.SunProperties.SunDiffuse = new Vector3(1, 1, 1);\n\n            LoadTrailerContent();\n\n            MyMwcObjectBuilder_VoxelMap objectBuilder = MyMwcObjectBuilder_Base.CreateNewObject(MyMwcObjectBuilderTypeEnum.VoxelMap, (int?)null) as MyMwcObjectBuilder_VoxelMap;\n            objectBuilder.VoxelFile = MyMwcVoxelFilesEnum.PerfectSphereWithRaceTunnel2_512x512x512;\n            objectBuilder.VoxelMaterial = MyMwcVoxelMaterialsEnum.Stone_01;\n            //MyVoxelMap newVoxelMap0 = (MyVoxelMap)MyEntities.CreateFromObjectBuilderAndAdd(null, objectBuilder, Matrix.CreateTranslation(3900, 960, 1920));\n            objectBuilder.PositionAndOrientation.Position = new Vector3(2000, 0, 0);\n            MyVoxelMap newVoxelMap0 = (MyVoxelMap)MyEntities.CreateFromObjectBuilderAndAdd(null, objectBuilder, Matrix.Identity);\n            //newVoxelMap0.MergeVoxelMaterials(MyMwcVoxelFilesEnum.PerfectSphereWithRaceTunnel2_512x512x512, new MyMwcVector3Short(64, 64, 64), MyMwcVoxelMaterialsEnum.Gold_01);\n            //newVoxelMap0.MergeVoxelMaterials(MyMwcVoxelFilesEnum.PerfectSphereWithRaceTunnel2_512x512x512, new MyMwcVector3Short(0, 128, 64), MyMwcVoxelMaterialsEnum.Stone_12_Craters_01);\n            newVoxelMap0.WriteDebugInfo();\n        }\n\n        //  Trailer animation fake world - world for main menu animation\n        void CreateFakeWorld4()\n        {\n            // Player ship. \n            Vector3 miningShipsOrigin = new Vector3(0, 500, 500);\n            MySession.PlayerShip = CreateFakeMinerShip(null, MyMwcObjectBuilder_SmallShip_TypesEnum.GETTYSBURG, miningShipsOrigin + new Vector3(3769, 1859, 2930), true, 1.0f);\n\n            SectorDustColor = new Vector4(1, 1, 1, 0.5f);\n            MySector.SunProperties.SunDiffuse = new Vector3(1, 1, 1);\n\n            LoadTrailerContent();\n\n            MyMwcObjectBuilder_VoxelMap objectBuilder = MyMwcObjectBuilder_Base.CreateNewObject(MyMwcObjectBuilderTypeEnum.VoxelMap, null) as MyMwcObjectBuilder_VoxelMap;\n            objectBuilder.VoxelFile = MyMwcVoxelFilesEnum.TorusWithManyTunnels_256x128x256;\n            objectBuilder.VoxelMaterial = MyMwcVoxelMaterialsEnum.Ice_01;\n\n            objectBuilder.PositionAndOrientation.Position = new Vector3(2000, 0, 0);\n            MyVoxelMap newVoxelMap0 = (MyVoxelMap)MyEntities.CreateFromObjectBuilderAndAdd(null, objectBuilder, Matrix.Identity);\n            //MyVoxelMap newVoxelMap0 = (MyVoxelMap)MyEntities.CreateFromObjectBuilderAndAdd(null, objectBuilder, Matrix.CreateTranslation(3900, 960, 1920));\n            newVoxelMap0.WriteDebugInfo();\n        }\n\n        //  Trailer animation fake world - world for ship attack animation\n        void CreateFakeWorld5()\n        {\n            Vector3 miningShipsOrigin = new Vector3(0, 500, 500);\n            MySession.PlayerShip = CreateFakeMinerShip(null, MyMwcObjectBuilder_SmallShip_TypesEnum.GETTYSBURG, miningShipsOrigin + new Vector3(-2300, 486, 5515), true, 1.0f);\n\n            miningShipsOrigin.X -= 1000;\n\n            MyEntities.CreateFromObjectBuilderAndAdd(\"Kai\", new MyMwcObjectBuilder_LargeShip(\n                MyMwcObjectBuilder_LargeShip_TypesEnum.KAI/*, null, null*/), Matrix.CreateWorld(new Vector3(-300, 550, 0), Vector3.Forward, Vector3.Up));\n\n            SectorDustColor = new Vector4(1, 1, 1, 0.5f);\n            MySector.SunProperties.SunDiffuse = new Vector3(1, 1, 1);\n\n            LoadTrailerContent();\n        }\n\n        static MyMwcVoxelFilesEnum GetRandomVoxelFileNameForSandboxRandom()\n        {\n            switch (MyMwcUtils.GetRandomInt(0, 13))\n            {\n                case 0:\n                    return MyMwcVoxelFilesEnum.SphereWithLargeCutOut_128x128x128;\n                case 1:\n                    return MyMwcVoxelFilesEnum.TorusWithManyTunnels_256x128x256;\n                case 2:\n                    return MyMwcVoxelFilesEnum.TorusWithSmallTunnel_256x128x256;\n                case 3:\n                    return MyMwcVoxelFilesEnum.VerticalIsland_128x128x128;\n                case 4:\n                    return MyMwcVoxelFilesEnum.VerticalIsland_128x256x128;\n                case 5:\n                    return MyMwcVoxelFilesEnum.VerticalIslandStorySector_128x256x128;\n                case 6:\n                    return MyMwcVoxelFilesEnum.DeformedSphere1_64x64x64;\n                case 7:\n                    return MyMwcVoxelFilesEnum.DeformedSphere2_64x64x64;\n                case 8:\n                    return MyMwcVoxelFilesEnum.DeformedSphereWithCorridor_128x64x64;\n                case 9:\n                    return MyMwcVoxelFilesEnum.DeformedSphereWithCorridor_256x256x256;\n                case 10:\n                    return MyMwcVoxelFilesEnum.DeformedSphereWithCraters_128x128x128;\n                case 11:\n                    return MyMwcVoxelFilesEnum.ScratchedBoulder_128x128x128;\n                case 12:\n                    return MyMwcVoxelFilesEnum.DeformedSphereWithHoles_64x128x64;\n                default:\n                    return MyMwcVoxelFilesEnum.TorusStorySector_256x128x256;\n            }\n        }\n\n        static MyMwcVoxelFilesEnum GetRandomSmallVoxelFileNameForSandboxRandom()\n        {\n            switch (MyMwcUtils.GetRandomInt(0, 6))\n            {\n                case 0:\n                    return MyMwcVoxelFilesEnum.DeformedSphere1_64x64x64;\n                case 1:\n                    return MyMwcVoxelFilesEnum.DeformedSphere2_64x64x64;\n                case 2:\n                    return MyMwcVoxelFilesEnum.DeformedSphereWithCorridor_128x64x64;\n                case 3:\n                    return MyMwcVoxelFilesEnum.ScratchedBoulder_128x128x128;\n                case 4:\n                    return MyMwcVoxelFilesEnum.DeformedSphereWithCraters_128x128x128;\n                case 5:\n                    return MyMwcVoxelFilesEnum.DeformedSphereWithHoles_64x128x64;\n                default:\n                    return MyMwcVoxelFilesEnum.DeformedSphere1_64x64x64;\n            }\n        }\n\n        static MyMwcObjectBuilder_LargeShip_TypesEnum GetRandomLargeShipType()\n        {\n            switch (MyMwcUtils.GetRandomInt(0, 4))\n            {\n                case 0:\n                    return MyMwcObjectBuilder_LargeShip_TypesEnum.KAI;\n                case 1:\n                    return MyMwcObjectBuilder_LargeShip_TypesEnum.KAI;\n                case 2:\n                    return MyMwcObjectBuilder_LargeShip_TypesEnum.MOTHERSHIP_SAYA;\n                case 3:\n                    return MyMwcObjectBuilder_LargeShip_TypesEnum.MOTHERSHIP_SAYA;\n                default:\n                    return MyMwcObjectBuilder_LargeShip_TypesEnum.MOTHERSHIP_SAYA;\n            }\n        }\n\n        void LoadTrailerContent()\n        {\n            //if (MyMwcFinalBuildConstants.ENABLE_TRAILER_SAVE)\n            //{\n            //    MyTrailerSave.LoadContent();\n            //    MyTrailerSave.AttachPhysObject(\"PlayerShip\", MySession.PlayerShip);\n            //}\n\n            MySector.SunProperties.SunIntensity = MySolarSystemConstants.SunIntensityFromPosition(MyBgrCubeConsts.EARTH_POSITION);\n            MyTrailerLoad.LoadContent();\n        }\n\n        //  Creates debris field\n        public MyLargeDebrisField CreateFakeLargeDebrisField(string hudLabelText, MyMwcObjectBuilder_LargeDebrisField_TypesEnum debrisType,\n            Vector3 position)\n        {\n            MyLargeDebrisField debris = (MyLargeDebrisField)MyEntities.CreateFromObjectBuilderAndAdd(hudLabelText,\n                new MyMwcObjectBuilder_LargeDebrisField(debrisType), Matrix.CreateWorld(position, Vector3.Forward, Vector3.Up));\n            MyEntities.TestEntityAfterInsertionForCollision(debris);\n            return debris;\n        }\n\n        //  Use only for quick test or trailer animations\n        public MySmallDebris CreateFakeSmallDebris(string hudLabelText, MyMwcObjectBuilder_SmallDebris_TypesEnum debrisType,\n            Vector3 position, bool immovable)\n        {\n            MySmallDebris debris = (MySmallDebris)MyEntities.CreateFromObjectBuilderAndAdd(hudLabelText,\n                    new MyMwcObjectBuilder_SmallDebris(debrisType, immovable, 10000), Matrix.CreateWorld(position, Vector3.Forward, Vector3.Up));\n            MyEntities.TestEntityAfterInsertionForCollision(debris);\n            return debris;\n        }\n\n        public MyPrefabContainer CreateFakePrefabContainer(string hudLabelText, Vector3 position)\n        {\n\n            List<MyMwcObjectBuilder_PrefabBase> prefabBuilders = new List<MyMwcObjectBuilder_PrefabBase>();\n            int i = 0;\n            int x = 0;\n            foreach (MyMwcObjectBuilderTypeEnum prefabType in MyGuiPrefabHelpers.MyMwcPrefabTypesEnumValues)\n            {\n                foreach (int prefabId in MyMwcObjectBuilder_Base.GetObjectBuilderIDs(prefabType))\n                {\n                    MyMwcObjectBuilder_PrefabBase prefabBuilder = MyPrefabFactory.GetInstance().CreatePrefabObjectBuilder(prefabType, prefabId, MyMwcObjectBuilder_Prefab_AppearanceEnum.None);\n\n                    prefabBuilders.Add(prefabBuilder);\n                    i = i + 1000;\n                    x = x + 500;\n                }\n            }\n\n            MyMwcObjectBuilder_PrefabContainer prefabContainerBuilder = new MyMwcObjectBuilder_PrefabContainer(\n                null, MyMwcObjectBuilder_PrefabContainer_TypesEnum.INSTANCE, prefabBuilders, MyClientServer.LoggedPlayer.GetUserId(),\n                MyMwcObjectBuilder_FactionEnum.Euroamerican, new MyMwcObjectBuilder_Inventory(new List<MyMwcObjectBuilder_InventoryItem>(), MyInventory.DEFAULT_MAX_ITEMS));\n            MyPrefabContainer container = (MyPrefabContainer)MyEntities.CreateFromObjectBuilderAndAdd(hudLabelText, prefabContainerBuilder, Matrix.CreateWorld(position, Vector3.Forward, Vector3.Up));\n            MyEntities.TestEntityAfterInsertionForCollision(container);\n            return container;\n        }\n\n        //  Use only for quick test, random sandbox or trailer animations\n        //  Never initialize as player ship! We can have only 1 player ship in the game\n        public MySmallShip CreateFakeMinerShip(string hudLabelText, MyMwcObjectBuilder_SmallShip_TypesEnum shipType, Vector3 position, bool isPlayerShip, float health)\n        {\n            List<MyMwcObjectBuilder_SmallShip_Weapon> weapons = new List<MyMwcObjectBuilder_SmallShip_Weapon>();\n            weapons.Add(new MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Autocanon));\n            weapons.Add(new MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Autocanon));\n            weapons.Add(new MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Missile_Launcher));\n            //weapons.Add(new MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Missile_Launcher));\n            weapons.Add(new MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Harvesting_Device));\n            weapons.Add(new MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Crusher));\n            weapons.Add(new MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Universal_Launcher_Front));\n\n            List<MyMwcObjectBuilder_AssignmentOfAmmo> assignmentOfAmmo = new List<MyMwcObjectBuilder_AssignmentOfAmmo>();\n            assignmentOfAmmo.Add(new MyMwcObjectBuilder_AssignmentOfAmmo(MyMwcObjectBuilder_FireKeyEnum.Primary, MyMwcObjectBuilder_AmmoGroupEnum.Bullet, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_Basic));\n            assignmentOfAmmo.Add(new MyMwcObjectBuilder_AssignmentOfAmmo(MyMwcObjectBuilder_FireKeyEnum.Secondary, MyMwcObjectBuilder_AmmoGroupEnum.Missile, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Missile_Basic));\n\n            var inventory = new MyMwcObjectBuilder_Inventory(new List<MyMwcObjectBuilder_InventoryItem>()\n            {\n                new MyMwcObjectBuilder_InventoryItem(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_Basic), 10000),\n                new MyMwcObjectBuilder_InventoryItem(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Missile_Basic), 10000),\n            }, 1000);\n\n            MySmallShip smallShipEntity;\n            if (!isPlayerShip)\n            {\n                var shipBuilder = new MyMwcObjectBuilder_SmallShip(shipType,\n                        inventory,\n                        weapons,\n                        new MyMwcObjectBuilder_SmallShip_Engine(MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.PowerCells_1),\n                        assignmentOfAmmo,\n                        new MyMwcObjectBuilder_SmallShip_Armor(MyMwcObjectBuilder_SmallShip_Armor_TypesEnum.Basic),\n                        null,\n                        MyGameplayConstants.MAXHEALTH_SMALLSHIP,\n                        1f,\n                        100f,\n                        float.MaxValue,\n                        float.MaxValue,\n                        true,\n                        false,\n                        MyLightsConstants.MAX_SPOTLIGHT_SHADOW_RANGE, 0);\n\n                shipBuilder.Faction = MyMwcObjectBuilder_FactionEnum.Euroamerican;\n\n                smallShipEntity = (MySmallShip)MyEntities.CreateFromObjectBuilderAndAdd(hudLabelText,\n                    //new MyMwcObjectBuilder_SmallShip(shipType, \n                    //    weapons,\n                    //    new MyMwcObjectBuilder_SmallShip_Engine(MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.Chemical_1), \n                    //    ammo, \n                    //    assignmentOfAmmo,\n                    //    null),\n                    shipBuilder,\n                    Matrix.CreateWorld(position, Vector3.Forward, Vector3.Up));\n            }\n            else\n            {\n                Vector3 forward = new Vector3(-0.664f, 0.556f, -0.499f);\n                Vector3 up = new Vector3(0.437f, 0.856f, 0.340f);\n\n                smallShipEntity = (MySmallShip)MyEntities.CreateFromObjectBuilderAndAdd(hudLabelText,\n                    //new MyMwcObjectBuilder_SmallShip_Player(\n                    //    shipType, \n                    //    weapons,\n                    //    new MyMwcObjectBuilder_SmallShip_Engine(MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.Chemical_1), \n                    //    ammo, \n                    //    null, \n                    //    assignmentOfAmmo),\n                    new MyMwcObjectBuilder_SmallShip_Player(\n                        shipType,\n                        null,\n                        weapons,\n                        new MyMwcObjectBuilder_SmallShip_Engine(MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.Chemical_1),\n                        assignmentOfAmmo,\n                        null,\n                        null,\n                        null,\n                        MyGameplayConstants.HEALTH_RATIO_MAX,\n                        100f,\n                        float.MaxValue,\n                        float.MaxValue,\n                        float.MaxValue,\n                        true, false, MyLightsConstants.MAX_SPOTLIGHT_SHADOW_RANGE, 0),\n                    Matrix.CreateWorld(position, forward, up));\n            }\n\n            smallShipEntity.Inventory.AddInventoryItem(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Automatic_Rifle_With_Silencer_High_Speed), 10, true);\n            smallShipEntity.Inventory.AddInventoryItem(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_Basic), 10000, true);\n            smallShipEntity.Inventory.AddInventoryItem(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_Armor_Piercing_Incendiary), 10000, true);\n            smallShipEntity.Inventory.AddInventoryItem(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Missile_Basic), 500, true);\n            smallShipEntity.Inventory.AddInventoryItem(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_Basic), 500, true);\n            smallShipEntity.Inventory.AddInventoryItem(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_Tunnel_Buster), 1000, true);\n            smallShipEntity.Inventory.AddInventoryItem(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Guided_Missile_Engine_Detection), 5, true);\n            smallShipEntity.Inventory.AddInventoryItem(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Guided_Missile_Visual_Detection), 5, true);\n            smallShipEntity.Inventory.AddInventoryItem(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Remote_Camera), 5, true);\n            smallShipEntity.Inventory.AddInventoryItem(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Hologram), 5, true);\n            smallShipEntity.Inventory.AddInventoryItem(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Mine_Basic), 15, true);\n            smallShipEntity.Inventory.AddInventoryItem(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Mine_Smart), 15, true);\n\n            return smallShipEntity;\n        }\n\n        public MySmallShipBot CreateFakeBot(string hudLabelText, MyMwcObjectBuilder_SmallShip_TypesEnum shipType, Vector3 position, float health, MyMwcObjectBuilder_FactionEnum faction)\n        {\n            MySmallShipBot bot = CreateFakeBot(hudLabelText, shipType, position, health, null, faction);\n            MyEntities.TestEntityAfterInsertionForCollision(bot);\n            return bot;\n        }\n\n        //  Create a bot ship, which is a special computer-controlled type of miner ship.\n        public MySmallShipBot CreateFakeBot(string hudLabelText, MyMwcObjectBuilder_SmallShip_TypesEnum shipType, Vector3 position, float health, Vector3? diffuseColor, MyMwcObjectBuilder_FactionEnum faction)\n        {\n            List<MyMwcObjectBuilder_SmallShip_Weapon> weapons = new List<MyMwcObjectBuilder_SmallShip_Weapon>();\n            List<MyMwcObjectBuilder_AssignmentOfAmmo> assignments = new List<MyMwcObjectBuilder_AssignmentOfAmmo>();\n\n            weapons.Add(new MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Autocanon));\n            weapons.Add(new MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Autocanon));\n            weapons.Add(new MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Cannon));\n            weapons.Add(new MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Cannon));\n            weapons.Add(new MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Shotgun));\n            weapons.Add(new MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Crusher));\n            weapons.Add(new MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Universal_Launcher_Front));\n            //ammo.Add(new MyMwcObjectBuilder_SmallShip_Ammo(10000, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_Basic));\n            //ammo.Add(new MyMwcObjectBuilder_SmallShip_Ammo(500, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_BioChem));\n            //ammo.Add(new MyMwcObjectBuilder_SmallShip_Ammo(1000, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_Tunnel_Buster));\n            //ammo.Add(new MyMwcObjectBuilder_SmallShip_Ammo(10, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Automatic_Rifle_With_Silencer_High_Velocity));\n            //ammo.Add(new MyMwcObjectBuilder_SmallShip_Ammo(10000, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_High_Velocity));\n            //ammo.Add(new MyMwcObjectBuilder_SmallShip_Ammo(500000, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_Basic));\n            //ammo.Add(new MyMwcObjectBuilder_SmallShip_Ammo(100000, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_Tunnel_Buster));\n            //ammo.Add(new MyMwcObjectBuilder_SmallShip_Ammo(5, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Guided_Missile_Engine_Detection));\n            //ammo.Add(new MyMwcObjectBuilder_SmallShip_Ammo(5, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Guided_Missile_Visual_Detection));\n            //ammo.Add(new MyMwcObjectBuilder_SmallShip_Ammo(50, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Shotgun_Basic));\n            //ammo.Add(new MyMwcObjectBuilder_SmallShip_Ammo(5, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Hologram));\n            //ammo.Add(new MyMwcObjectBuilder_SmallShip_Ammo(15, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Mine_Basic));\n            //ammo.Add(new MyMwcObjectBuilder_SmallShip_Ammo(15, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Mine_Smart));\n            assignments.Add(new MyMwcObjectBuilder_AssignmentOfAmmo(MyMwcObjectBuilder_FireKeyEnum.Primary, MyMwcObjectBuilder_AmmoGroupEnum.Cannon, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_Basic));\n            assignments.Add(new MyMwcObjectBuilder_AssignmentOfAmmo(MyMwcObjectBuilder_FireKeyEnum.Secondary, MyMwcObjectBuilder_AmmoGroupEnum.Cannon, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_Basic));\n            assignments.Add(new MyMwcObjectBuilder_AssignmentOfAmmo(MyMwcObjectBuilder_FireKeyEnum.Third, MyMwcObjectBuilder_AmmoGroupEnum.Bullet, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_Basic));\n            assignments.Add(new MyMwcObjectBuilder_AssignmentOfAmmo(MyMwcObjectBuilder_FireKeyEnum.Fourth, MyMwcObjectBuilder_AmmoGroupEnum.Bullet, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Automatic_Rifle_With_Silencer_BioChem));\n            assignments.Add(new MyMwcObjectBuilder_AssignmentOfAmmo(MyMwcObjectBuilder_FireKeyEnum.Fifth, MyMwcObjectBuilder_AmmoGroupEnum.Bullet, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_Basic));\n\n            List<MyMwcObjectBuilder_InventoryItem> inventoryItems = new List<MyMwcObjectBuilder_InventoryItem>();\n            MyMwcObjectBuilder_Inventory inventory = new MyMwcObjectBuilder_Inventory(inventoryItems, 1024);\n\n            inventory.InventoryItems.Add(new MyMwcObjectBuilder_InventoryItem(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Automatic_Rifle_With_Silencer_High_Speed), 1000));\n            inventory.InventoryItems.Add(new MyMwcObjectBuilder_InventoryItem(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_Basic), 1000));\n            inventory.InventoryItems.Add(new MyMwcObjectBuilder_InventoryItem(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_Basic), 30));\n            inventory.InventoryItems.Add(new MyMwcObjectBuilder_InventoryItem(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_Tunnel_Buster), 10));\n            inventory.InventoryItems.Add(new MyMwcObjectBuilder_InventoryItem(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Guided_Missile_Engine_Detection), 10));\n            inventory.InventoryItems.Add(new MyMwcObjectBuilder_InventoryItem(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Guided_Missile_Visual_Detection), 10));\n\n\n            MySmallShipBot bot = (MySmallShipBot)MyEntities.CreateFromObjectBuilderAndAdd(hudLabelText,\n                //new MyMwcObjectBuilder_SmallShip_Bot(shipType, \n                //    weapons,\n                //    new MyMwcObjectBuilder_SmallShip_Engine(MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.Chemical_1), \n                //    ammo, \n                //    assignments,\n                //    null,\n                //    faction\n                //    ),\n                new MyMwcObjectBuilder_SmallShip_Bot(shipType,\n                    inventory,\n                    weapons,\n                    new MyMwcObjectBuilder_SmallShip_Engine(MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.Chemical_1),\n                    assignments,\n                    null,\n                    null,\n                    null,\n                    health,\n                    1000f,\n                    float.MaxValue,\n                    float.MaxValue,\n                    true,\n                    false,\n                    faction,\n                    MyAITemplateEnum.AGGRESIVE,\n                    0,\n                    1000,\n                    1000,\n                    MyPatrolMode.CYCLE,\n                    null,\n                    BotBehaviorType.IDLE,\n                    MyLightsConstants.MAX_SPOTLIGHT_SHADOW_RANGE,\n                    0, false, true),\n                    Matrix.CreateWorld(position, Vector3.Backward, Vector3.Up)\n               );\n\n            /*\n            bot.Inventory.AddInventoryItem(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Remote_Camera), 50, true);\n            bot.Inventory.AddInventoryItem(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Hologram), 50, true);\n            bot.Inventory.AddInventoryItem(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Mine_Basic), 1500, true);\n            bot.Inventory.AddInventoryItem(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Mine_Smart), 1500, true);\n                */\n            //MyEntities.TestEntityAfterInsertionForCollision(bot);\n\n            //System.Diagnostics.Debug.Assert(bot.MaxHealth > health);\n            //bot.DoDamage(0, bot.MaxHealth - health, 0, MyDamageType.Unknown, MyAmmoType.Unknown, null);\n            bot.Faction = faction;\n\n            return bot;\n        }\n\n        public MySmallShipBot CreateFriend(string name, float? maxHealth = null, float healthPercentage = 1.0f, MyMwcObjectBuilder_SmallShip_TypesEnum shipType = MyMwcObjectBuilder_SmallShip_TypesEnum.GETTYSBURG)\n        {\n            var bot = MyGuiScreenGamePlay.Static.CreateFakeBot(\n               name,\n               shipType,\n               MySession.PlayerShip.GetFormationPosition(MySession.PlayerShip.Followers.Count),\n               1f,\n               MySession.PlayerShip.Faction);\n\n            bot.MaxHealth = maxHealth.HasValue ? maxHealth.Value : bot.GetDefaultMaxHealth();\n            bot.Health = bot.MaxHealth * healthPercentage;\n\n            bot.Follow(MySession.PlayerShip);\n\n            return bot;\n        }\n\n        void UpdateSmallshipsOfferedByVendors(MyMwcObjectBuilder_Checkpoint checkpoint)\n        {\n            if (m_checkpoint.SectorObjectBuilder.SectorObjects == null)\n                return;\n\n            MyMwcLog.WriteLine(\"UpdateSmallshipsOfferedByVendors - START\");\n\n            foreach (var ob in m_checkpoint.SectorObjectBuilder.SectorObjects)\n            {\n                MyMwcObjectBuilder_PrefabContainer prefabContainer = ob as MyMwcObjectBuilder_PrefabContainer;\n                if (prefabContainer != null)\n                {\n                    foreach (var prefab in prefabContainer.Prefabs)\n                    {\n                        MyMwcObjectBuilder_PrefabHangar hangar = prefab as MyMwcObjectBuilder_PrefabHangar;\n                        if (hangar != null)\n                        { //check smallships contained in this vendor\n                            if (prefabContainer.Inventory != null)\n                            {\n                                foreach (var inventoryItem in prefabContainer.Inventory.InventoryItems)\n                                {\n                                    MyMwcObjectBuilder_SmallShip_Player playerShip = inventoryItem.ItemObjectBuilder as MyMwcObjectBuilder_SmallShip_Player;\n\n                                    if (playerShip != null)\n                                    {\n                                        var shipType = playerShip.ShipType;\n                                        inventoryItem.ItemObjectBuilder = MyMwcObjectBuilder_SmallShip_Player.CreateDefaultShip(shipType, playerShip.Faction, MyShipTypeConstants.GetShipTypeProperties(shipType).GamePlay.CargoCapacity);\n                                    }\n                                }\n                            }\n                        }\n                    }\n                }\n            }\n\n            MyMwcLog.WriteLine(\"UpdateSmallshipsOfferedByVendors - END\");\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/MyGuiScreenGameScore.cs",
    "content": "﻿using System;\nusing System.Text;\nusing System.Collections.Generic;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.SolarSystem;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.World;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.AppCode.Game.Sessions;\nusing MinerWars.CommonLIB.AppCode.Networking.Multiplayer;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.AppCode.Game.Sessions.Multiplayer;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Toolkit.Input;\n\nnamespace MinerWars.AppCode.Game.GUI\n{\n    struct MyFactionStats\n    {\n        public int Kills;\n        public int Deaths;\n        public MyMwcObjectBuilder_FactionEnum Faction;\n\n        public MyFactionStats(MyMwcObjectBuilder_FactionEnum faction)\n        {\n            Faction = faction;\n            Kills = 0;\n            Deaths = 0;\n        }\n\n        public MyFactionStats(MyMwcObjectBuilder_FactionEnum faction, int kills, int deaths)\n        {\n            Faction = faction;\n            Kills = kills;\n            Deaths = deaths;\n        }\n    }\n\n    struct MyStatsRow\n    {\n        public StringBuilder Name;\n        public MyMwcObjectBuilder_FactionEnum Faction;\n        public int? Ping;\n        public int Kills;\n        public int Deaths;\n        public int Id;\n        public bool IsFaction;\n    }\n    class MyGuiScreenGameScore : MyGuiScreenBase\n    {\n        const int LONG_SB_LENGTH = 10;\n        const int SHORT_SB_LENGTH = 2;\n        const int POOL_INCREMENT = 10;\n\n        Dictionary<MyMwcObjectBuilder_FactionEnum, MyFactionStats> m_statsTableFactions; //all factions stats\n        List<MyStatsRow> m_stats;\n        StringBuilder m_stringBuilderForText = new StringBuilder();\n        MyMwcObjectBuilder_FactionEnum m_playerFaction;\n        private MyGuiControlListbox m_statsListbox;\n        byte m_playerId;\n        private Dictionary<MyMwcObjectBuilder_FactionEnum, Color> m_usedFactions;\n        List<StringBuilder> m_sbLongPool;\n        List<StringBuilder> m_sbShortPool;\n        int m_sbLongPoolIndex;\n        int m_sbShortPoolIndex;\n\n        public MyGuiScreenGameScore()\n            : base(Vector2.Zero, null, null)\n        {\n            m_closeOnEsc = true;\n            m_enableBackgroundFade = true;\n\n            m_sbLongPool = new List<StringBuilder>();\n            m_sbShortPool = new List<StringBuilder>();\n            NullPoolIndexes();\n\n            m_statsListbox = new MyGuiControlListbox(this, new Vector2(0.5f, 0.5f), new Vector2(0.35f, 0.04f), new Vector4(0,0,0,0.5f), null, 0.65f, 4, 20, 4, true, false, false, null, null,\n                MyGuiManager.GetScrollbarSlider(), MyGuiManager.GetHorizontalScrollbarSlider(), 0, 0, Color.Transparent.ToVector4(), 0f, 0f, 0f, 0f, 0, 0, -0.01f, -0.01f, -0.02f, 0.02f);\n            m_statsListbox.DisplayHighlight = false;\n            m_statsListbox.HideToolTip();\n            m_statsListbox.SetCustomCollumnsWidths(new List<float>()\n            {\n                0, 0.1f, 0.1f, 0.1f\n            });\n            m_statsListbox.ShowScrollBarOnlyWhenNeeded = true;\n            Controls.Add(m_statsListbox);\n\n            GetStats();\n\n            MyGuiScreenGamePlay.Static.DrawHud = false;\n        }\n\n        #region SbPool stuff\n\n        private void NullPoolIndexes()\n        {\n            m_sbLongPoolIndex = m_sbShortPoolIndex = 0;\n        }\n\n        private void InitPool()\n        {\n            NullPoolIndexes();\n            List<MyMwcObjectBuilder_FactionEnum> usedFactions = new List<MyMwcObjectBuilder_FactionEnum>(2);\n            usedFactions.Add(MySession.Static.Player.Faction);\n            foreach (MyPlayerRemote player in MyMultiplayerPeers.Static.Players)\n            {\n                if (!usedFactions.Contains(player.Faction))\n                {\n                    usedFactions.Add(player.Faction);\n                }\n            }\n\n            int assumedShortSbCount = (usedFactions.Count + MyMultiplayerPeers.Static.Players.Count + 1) * 2;\n            int assumedLongSbCount = usedFactions.Count + MyMultiplayerPeers.Static.Players.Count + 1;\n            usedFactions.Clear();\n\n            RealocatePool(assumedShortSbCount, assumedLongSbCount);\n        }\n\n        private void RealocatePoolShort(int increment)\n        {\n            RealocatePool(m_sbShortPool.Capacity + increment, 0);\n        }\n\n        private void RealocatePoolLong(int increment)\n        {\n            RealocatePool(0, m_sbLongPool.Capacity + increment);\n        }\n\n        private void RealocatePool(int shortCount, int longCount)\n        {\n            int oldLong = m_sbLongPool.Capacity;\n            if (longCount > oldLong)\n            {\n                m_sbLongPool.Capacity = longCount;\n                for (int i = oldLong; i < longCount; i++)\n                {\n                    m_sbLongPool.Add(new StringBuilder(LONG_SB_LENGTH));\n                }\n            }\n\n            int oldShort = m_sbShortPool.Capacity;\n            if (shortCount > oldShort)\n            {\n                m_sbShortPool.Capacity = shortCount;\n                for (int i = oldShort; i < shortCount; i++)\n                {\n                    m_sbShortPool.Add(new StringBuilder(SHORT_SB_LENGTH));\n                }\n            }\n        }\n\n        private void CheckSbLongPoolCapacity()\n        {\n            while (m_sbLongPoolIndex >= m_sbLongPool.Capacity)\n            {\n                RealocatePoolLong(POOL_INCREMENT);\n            }\n        }\n\n        private void CheckSbShortPoolCapacity()\n        {\n            while (m_sbShortPoolIndex >= m_sbShortPool.Capacity)\n            {\n                RealocatePoolShort(POOL_INCREMENT);\n            }\n        }\n\n        private StringBuilder GetStringBuilderLong()\n        {\n            CheckSbLongPoolCapacity();\n            StringBuilder ret = m_sbLongPool[m_sbLongPoolIndex++];\n            ret.Clear();\n            return ret;\n        }\n\n        private StringBuilder GetStringBuilderShort()\n        {\n            CheckSbShortPoolCapacity();\n            StringBuilder ret = m_sbShortPool[m_sbShortPoolIndex++];\n            ret.Clear();\n            return ret;\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenGameScore\";\n        }\n\n        #endregion\n\n        public override void HandleInput(MyGuiInput input, bool receivedFocusInThisUpdate)\n        {\n            base.HandleInput(input, receivedFocusInThisUpdate);\n\n            if (!input.IsKeyPress(Keys.Tab))\n            {\n                CloseScreen();\n            }\n        }\n\n        protected override void OnClosed()\n        {\n            MyGuiScreenGamePlay.Static.DrawHud = true;\n            base.OnClosed();\n        }\n\n        private bool GetStats()\n        {\n            if (m_stats == null)\n            {\n                m_stats = new List<MyStatsRow>();\n            }\n            m_stats.Clear();\n\n            if (m_statsTableFactions == null)\n            {\n                m_statsTableFactions = new Dictionary<MyMwcObjectBuilder_FactionEnum, MyFactionStats>();\n            }\n            m_statsTableFactions.Clear();\n\n\n            m_statsListbox.RemoveAllRows();\n\n            //add player first\n            m_playerFaction = MySession.Static.Player.Faction;\n            m_playerId = MyEntityIdentifier.CurrentPlayerId;\n            AddPlayer(MyClientServer.LoggedPlayer.GetDisplayName(), 0, MyClientServer.LoggedPlayer.Statistics.Deaths, MyClientServer.LoggedPlayer.Statistics.PlayersKilled, m_playerId, m_playerFaction);\n\n            //add other players\n            foreach (MyPlayerRemote player in MyMultiplayerPeers.Static.Players)\n            {\n                AddPlayer(player);\n            }\n\n            //Debug add random stuff\n            //foreach (MinerWars.AppCode.Game.Entities.MyEntity entity in MinerWars.AppCode.Game.Entities.MyEntities.GetEntities())\n            //{\n            //    //var bot = entity as MinerWars.AppCode.Game.Entities.MySmallShipBot;\n            //    //if (bot != null)\n            //    //{\n            //        //AddPlayer(new StringBuilder(\"Bot\"), null, 0, 0, 0, bot.Faction);\n            //    //}\n            //    AddPlayer(new StringBuilder(entity.GetType().Name), null, 0, 0, 0, entity.Faction);\n            //}\n\n            //add faction titles\n            if (m_statsTableFactions.Count > 1) // No reason to display just one faction (ie Rainers or Freelancers)\n            {\n                foreach (KeyValuePair<MyMwcObjectBuilder_FactionEnum, MyFactionStats> faction in m_statsTableFactions)\n                {\n                    AddPlayer(MyFactionConstants.GetFactionProperties(faction.Value.Faction).Name, null, faction.Value.Deaths, faction.Value.Kills, (byte)faction.Value.Faction, faction.Value.Faction, true);\n                }\n            }\n\n            \n            // order\n            m_stats.Sort(StatsRowComparer);\n            AddHeaders();\n            foreach (MyStatsRow row in m_stats)\n            {\n                if (row.IsFaction)\n                    m_statsListbox.AddRow();\n                AddStatRowToListbox(row);\n            }\n\n            return true;\n        }\n\n        private void AddStatRowToListbox(MyStatsRow statsRow)\n        {\n            StringBuilder pingText = GetStringBuilderLong();\n            StringBuilder killsText = GetStringBuilderShort();\n            StringBuilder deathsText = GetStringBuilderShort();\n\n            pingText.Append(statsRow.Ping.HasValue ? statsRow.Ping.Value.ToString() + \"ms\" : \"\");\n            killsText.Append(statsRow.Kills.ToString());\n            deathsText.Append(statsRow.Deaths.ToString());\n\n            Vector4? rowColor = null;\n\n            if (statsRow.IsFaction)\n            {\n                if (MySession.Static.Player.Faction == statsRow.Faction)\n                    rowColor = new Vector4(0, 1f, 0, 0.07f);\n                else\n                    rowColor = new Vector4(1f, 0, 0, 0.07f);\n            }\n            else if (statsRow.Id == (byte)MyClientServer.LoggedPlayer.GetUserId())\n                rowColor = new Vector4(1f, 1f, 1f, 0.02f);\n\n            int rowIndex = m_statsListbox.AddRow(rowColor);\n\n            var textColor = Color.White;\n\n\n            MyGuiFont textFont;\n            if (MyFactions.GetFactionsRelation(MySession.Static.Player.Faction, statsRow.Faction) == MyFactionRelationEnum.Friend || statsRow.Id == m_playerId)\n                textFont = MyGuiManager.GetFontMinerWarsGreen();\n            else\n                textFont = MyGuiManager.GetFontMinerWarsRed();\n\n            m_statsListbox.AddItem(new MyGuiControlListboxItem(rowIndex * 4 + 0,\n                new MyColoredText(statsRow.Name, textColor, textFont, GetRowScale(statsRow)),\n                null, new MyToolTips(statsRow.Name)), rowIndex, 0);\n\n            m_statsListbox.AddItem(new MyGuiControlListboxItem(rowIndex * 4 + 1,\n                new MyColoredText(killsText, textColor, textFont, GetRowScale(statsRow)),\n                null, new MyToolTips(killsText)), rowIndex, 1);\n\n            m_statsListbox.AddItem(new MyGuiControlListboxItem(rowIndex * 4 + 2,\n                new MyColoredText(deathsText, textColor, textFont, GetRowScale(statsRow)),\n                null, new MyToolTips(deathsText)), rowIndex, 2);\n\n            m_statsListbox.AddItem(new MyGuiControlListboxItem(rowIndex * 4 + 3,\n                new MyColoredText(pingText, textColor, textFont, GetRowScale(statsRow)), \n                null, new MyToolTips(pingText)), rowIndex, 3);\n        }\n\n        int StatsRowComparer(MyStatsRow x, MyStatsRow y)\n        {\n            if (x.Faction != y.Faction) // First order by factions\n            {\n                if (x.Faction == m_playerFaction) return -1;\n                else if (y.Faction == m_playerFaction) return 1;\n                else return ((int)x.Faction).CompareTo(((int)y.Faction));\n            }\n            else if (x.IsFaction != y.IsFaction) // First are factions then players\n            {\n                return -x.IsFaction.CompareTo(y.IsFaction);\n            }\n            else if (x.Kills != y.Kills) // Then order by kills\n            {\n                return -x.Kills.CompareTo(y.Kills);\n            }\n            else if (x.Deaths != y.Deaths) // Then by deaths\n            {\n                return x.Deaths.CompareTo(y.Deaths);\n            }\n            else // Then by name\n            {\n                return x.Name.ToString().CompareTo(y.Name.ToString());\n            }\n        }\n        \n        private void AddPlayer(MyPlayerRemote player, bool isFaction = false)\n        {\n            AddPlayer(player.GetDisplayName(), (int)(player.Connection.AverageRoundtripTime * 1000), player.Statistics.Deaths, player.Statistics.PlayersKilled, (byte)player.PlayerId, player.Faction, isFaction);\n        }\n\n        private void AddPlayer(StringBuilder name, int? ping, int deaths, int kills, byte id, MyMwcObjectBuilder_FactionEnum faction, bool isFaction = false){\n            if (faction == MyMwcObjectBuilder_FactionEnum.None) // Dont add players without factions\n                return;\n\n            if (!m_statsTableFactions.ContainsKey(faction))\n            {\n                m_statsTableFactions.Add(faction, new MyFactionStats(faction));\n            }\n            if (!isFaction)\n            {\n                m_statsTableFactions[faction] = new MyFactionStats(faction, m_statsTableFactions[faction].Kills+kills, m_statsTableFactions[faction].Deaths+deaths);\n            }\n            m_stats.Add(new MyStatsRow()\n            {\n                Name = isFaction? name : new StringBuilder(\"    \").Append(name),\n                Ping = ping,\n                Deaths = deaths,\n                Kills = kills,\n                Id = id,\n                Faction = faction,\n                IsFaction = isFaction\n            });\n        }\n\n        private float GetRowScale(MyStatsRow row)\n        {\n            //if(row.Id == m_playerId){\n            //    return 0.7f;\n            //}\n            //else \n            if (row.IsFaction)\n            {\n                return 0.9f;\n            }\n            else\n            {\n                return 0.7f;\n            }\n        }\n\n\n\n        private void AddHeaders()\n        {\n            int rowIndex = m_statsListbox.AddRow();\n            var textColor = new Color(0.9f, 0.9f, 0.9f, 1f);\n            float textScale = 0.9f;\n            m_statsListbox.AddItem(new MyGuiControlListboxItem(rowIndex * 4 + 0,\n                new MyColoredText(MyTextsWrapper.Get(MyTextsWrapperEnum.ScoreName), textColor, MyGuiManager.GetFontMinerWarsWhite(), textScale),\n                null, new MyToolTips(MyTextsWrapper.Get(MyTextsWrapperEnum.ScoreName))), rowIndex, 0);\n            m_statsListbox.AddItem(new MyGuiControlListboxItem(rowIndex * 4 + 1,\n                new MyColoredText(MyTextsWrapper.Get(MyTextsWrapperEnum.ScoreKills), textColor, MyGuiManager.GetFontMinerWarsWhite(), textScale),\n                null, new MyToolTips(MyTextsWrapper.Get(MyTextsWrapperEnum.ScoreKills))) { BackgroundColor = Color.Red.ToVector4() }, rowIndex, 1);\n            m_statsListbox.AddItem(new MyGuiControlListboxItem(rowIndex * 4 + 2,\n                new MyColoredText(MyTextsWrapper.Get(MyTextsWrapperEnum.ScoreDeaths), textColor, MyGuiManager.GetFontMinerWarsWhite(), textScale),\n                null, new MyToolTips(MyTextsWrapper.Get(MyTextsWrapperEnum.ScoreDeaths))) { BackgroundColor = Color.Red.ToVector4() }, rowIndex, 2);\n            m_statsListbox.AddItem(new MyGuiControlListboxItem(rowIndex * 4 + 3,\n                new MyColoredText(MyTextsWrapper.Get(MyTextsWrapperEnum.ScorePing), textColor, MyGuiManager.GetFontMinerWarsWhite(), textScale),\n                null, new MyToolTips(MyTextsWrapper.Get(MyTextsWrapperEnum.ScorePing))) { BackgroundColor = Color.Red.ToVector4() }, rowIndex, 3);\n\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/MyGuiScreenHelp.cs",
    "content": "﻿using System.Collections.Generic;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWarsMath.Graphics;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils.Utils;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.Sessions.Multiplayer;\nusing MinerWars.AppCode.Toolkit.Input;\n\nnamespace MinerWars.AppCode.Game.GUI\n{\n    class MyGuiScreenHelp : MyGuiScreenBase\n    {\n        struct ControlWithDescription\n        {\n            public StringBuilder Control;\n            public StringBuilder Description;\n\n            public ControlWithDescription(StringBuilder control, StringBuilder description)\n            {\n                Control = control;\n                Description = description;\n            }\n            public ControlWithDescription(string control, string description) : this(new StringBuilder(control), new StringBuilder(description)) { }\n            public ControlWithDescription(StringBuilder controlString, MyGameControlEnums control) : this(controlString, MyTextsWrapper.Get(MyGuiManager.GetInput().GetGameControl(control).GetControlName())) { }\n            public ControlWithDescription(MyGameControlEnums control, StringBuilder descriptionString) : this(new StringBuilder(MyGuiManager.GetInput().GetGameControlTextEnum(control)), descriptionString) { }\n            public ControlWithDescription(MyGameControlEnums control)\n            {\n                MyControl c = MyGuiManager.GetInput().GetGameControl(control);\n                Control = c.GetControlButtonStringBuilder(MyGuiInputDeviceEnum.Keyboard);\n                Description = MyTextsWrapper.Get(c.GetControlName());\n            }\n            public ControlWithDescription(MyGameControlEnums control1, MyGameControlEnums control2)\n            {\n                MyControl c1 = MyGuiManager.GetInput().GetGameControl(control1);\n                MyControl c2 = MyGuiManager.GetInput().GetGameControl(control2);\n                Control = new StringBuilder().Append(c1.GetControlButtonStringBuilder(MyGuiInputDeviceEnum.Keyboard)).Append(\", \").Append(c2.GetControlButtonStringBuilder(MyGuiInputDeviceEnum.Keyboard));\n                Description = new StringBuilder().Append(MyTextsWrapper.Get(c1.GetControlName())).Append(\" / \").Append(MyTextsWrapper.Get(c2.GetControlName()));\n            }\n        }\n        \n        static MyGameControlEnums[] specFront = new MyGameControlEnums[]\n        {\n            MyGameControlEnums.FIRE_HOLOGRAM_FRONT,\n            MyGameControlEnums.FIRE_BASIC_MINE_FRONT,\n            MyGameControlEnums.FIRE_SMART_MINE_FRONT,\n            MyGameControlEnums.FIRE_FLASH_BOMB_FRONT,\n            MyGameControlEnums.FIRE_DECOY_FLARE_FRONT,\n            MyGameControlEnums.FIRE_SMOKE_BOMB_FRONT\n        };\n        static MyGameControlEnums[] specBack = new MyGameControlEnums[]\n        {\n            MyGameControlEnums.FIRE_HOLOGRAM_BACK,\n            MyGameControlEnums.FIRE_BASIC_MINE_BACK,\n            MyGameControlEnums.FIRE_SMART_MINE_BACK,\n            MyGameControlEnums.FIRE_FLASH_BOMB_BACK,\n            MyGameControlEnums.FIRE_DECOY_FLARE_BACK,\n            MyGameControlEnums.FIRE_SMOKE_BOMB_BACK\n        };\n        static MyTextsWrapperEnum[] specTexts = new MyTextsWrapperEnum[]\n        {\n            MyTextsWrapperEnum.FireHologram,\n            MyTextsWrapperEnum.FireBasicMine,\n            MyTextsWrapperEnum.FireSmartMine,\n            MyTextsWrapperEnum.FireFlashBomb,\n            MyTextsWrapperEnum.FireDecoyFlare,\n            MyTextsWrapperEnum.FireSmokeBomb\n        };\n\n        bool m_wasPause = false;\n\n        public MyGuiScreenHelp()\n            : base(new Vector2(0.5f, 0.5f), MyGuiConstants.SCREEN_BACKGROUND_COLOR, new Vector2(1f, 0.98f))\n        {\n            m_enableBackgroundFade = true;\n\n            AddCaption(MyTextsWrapperEnum.HelpCaption, captionScale:1.35f);\n\n            if (MyGuiScreenGamePlay.Static != null)\n                MyGuiScreenGamePlay.Static.DrawHud = false;\n\n            List<ControlWithDescription> left = new List<ControlWithDescription>();\n            List<ControlWithDescription> right = new List<ControlWithDescription>();\n\n//            left.Add(new ControlWithDescription(MyGameControlEnums.FORWARD, MyGameControlEnums.REVERSE));\n//            left.Add(new ControlWithDescription(MyGameControlEnums.STRAFE_LEFT, MyGameControlEnums.STRAFE_RIGHT));\n//            left.Add(new ControlWithDescription(MyGameControlEnums.UP_THRUST, MyGameControlEnums.DOWN_THRUST));\n//            left.Add(new ControlWithDescription(MyGameControlEnums.ROLL_LEFT, MyGameControlEnums.ROLL_RIGHT));\n            left.Add(new ControlWithDescription(MyGameControlEnums.FORWARD));\n            left.Add(new ControlWithDescription(MyGameControlEnums.REVERSE));\n            left.Add(new ControlWithDescription(MyGameControlEnums.STRAFE_LEFT));\n            left.Add(new ControlWithDescription(MyGameControlEnums.STRAFE_RIGHT));\n            left.Add(new ControlWithDescription(MyGameControlEnums.UP_THRUST));\n            left.Add(new ControlWithDescription(MyGameControlEnums.DOWN_THRUST));\n            left.Add(new ControlWithDescription(MyGameControlEnums.ROLL_LEFT));\n            left.Add(new ControlWithDescription(MyGameControlEnums.ROLL_RIGHT));\n            left.Add(new ControlWithDescription(MyGameControlEnums.AFTERBURNER));\n            left.Add(new ControlWithDescription(MyGameControlEnums.MOVEMENT_SLOWDOWN));\n            left.Add(new ControlWithDescription(MyGameControlEnums.AUTO_LEVEL));\n            \n            left.Add(new ControlWithDescription(\"\",\"\"));\n            \n            left.Add(new ControlWithDescription(\n                new StringBuilder().\n                    Append(MyGuiManager.GetInput().GetGameControlTextEnum(MyGameControlEnums.FIRE_PRIMARY)).\n                    Append(\", \").\n                    Append(MyGuiManager.GetInput().GetGameControl(MyGameControlEnums.FIRE_PRIMARY).GetControlButtonName(MyGuiInputDeviceEnum.Mouse)),\n                MyGameControlEnums.FIRE_PRIMARY\n            ));\n            left.Add(new ControlWithDescription(\n                new StringBuilder().\n                    Append(MyGuiManager.GetInput().GetGameControlTextEnum(MyGameControlEnums.FIRE_SECONDARY)).\n                    Append(\", \").\n                    Append(MyGuiManager.GetInput().GetGameControl(MyGameControlEnums.FIRE_SECONDARY).GetControlButtonName(MyGuiInputDeviceEnum.Mouse)),\n                MyGameControlEnums.FIRE_SECONDARY\n            ));\n            left.Add(new ControlWithDescription(\n                new StringBuilder().\n                    Append(MyGuiManager.GetInput().GetGameControlTextEnum(MyGameControlEnums.SELECT_AMMO_BULLET)).\n                    Append(\",\").\n                    Append(MyGuiManager.GetInput().GetGameControlTextEnum(MyGameControlEnums.SELECT_AMMO_MISSILE)).\n                    Append(\",\").\n                    Append(MyGuiManager.GetInput().GetGameControlTextEnum(MyGameControlEnums.SELECT_AMMO_CANNON)).\n                    Append(\",\").\n                    Append(MyGuiManager.GetInput().GetGameControlTextEnum(MyGameControlEnums.SELECT_AMMO_UNIVERSAL_LAUNCHER_FRONT)).\n                    Append(\",\").\n                    Append(MyGuiManager.GetInput().GetGameControlTextEnum(MyGameControlEnums.SELECT_AMMO_UNIVERSAL_LAUNCHER_BACK)),\n                MyTextsWrapper.Get(MyTextsWrapperEnum.SelectAmmo)\n            ));\n            left.Add(new ControlWithDescription(MyGameControlEnums.WEAPON_SPECIAL));\n            left.Add(new ControlWithDescription(MyGameControlEnums.PREV_TARGET));\n            left.Add(new ControlWithDescription(MyGameControlEnums.NEXT_TARGET));\n            \n            for (int i = 0; i < specTexts.Length; i++)\n            {\n                StringBuilder specControl = new StringBuilder();\n                if (MyGuiManager.GetInput().GetGameControl(specFront[i]).IsControlAssigned(MyGuiInputDeviceEnum.Keyboard))\n                {\n                    specControl.Append(MyGuiManager.GetInput().GetGameControlTextEnum(specFront[i]));\n                }\n                if (MyGuiManager.GetInput().GetGameControl(specBack[i]).IsControlAssigned(MyGuiInputDeviceEnum.Keyboard))\n                {\n                    if (specControl.Length != 0) specControl.Append(\", \");\n                    specControl.Append(MyGuiManager.GetInput().GetGameControlTextEnum(specBack[i]));\n                }\n                left.Add(new ControlWithDescription(specControl, MyTextsWrapper.Get(specTexts[i])));\n            }\n\n            left.Add(new ControlWithDescription(\"\", \"\"));\n\n            left.Add(new ControlWithDescription(MyGameControlEnums.USE));\n            left.Add(new ControlWithDescription(MyGameControlEnums.GPS));\n            //Journal removed\n            //left.Add(new ControlWithDescription(MyGameControlEnums.MISSION_DIALOG));\n            left.Add(new ControlWithDescription(MyGameControlEnums.INVENTORY));\n            left.Add(new ControlWithDescription(MyGameControlEnums.TRAVEL));\n\n            right.Add(new ControlWithDescription(MyGameControlEnums.DRILL));\n            right.Add(new ControlWithDescription(MyGameControlEnums.HARVEST));\n            right.Add(new ControlWithDescription(MyGameControlEnums.DRONE_DEPLOY));\n            right.Add(new ControlWithDescription(MyGameControlEnums.DRONE_CONTROL));\n            right.Add(new ControlWithDescription(MyGameControlEnums.CHANGE_DRONE_MODE));\n            right.Add(new ControlWithDescription(MyTextsWrapper.Get(MyTextsWrapperEnum.LeftMouseButton), MyTextsWrapper.Get(MyTextsWrapperEnum.DetonateDrone)));\n            right.Add(new ControlWithDescription(\n                new StringBuilder().\n                    Append(MyGuiManager.GetInput().GetGameControlTextEnum(MyGameControlEnums.PREVIOUS_CAMERA)).\n                    Append(\", \").\n                    Append(MyGuiManager.GetInput().GetGameControlTextEnum(MyGameControlEnums.NEXT_CAMERA)),\n                MyTextsWrapper.Get(MyTextsWrapperEnum.CycleSecondaryCamera)\n            ));\n            right.Add(new ControlWithDescription(MyGameControlEnums.CONTROL_SECONDARY_CAMERA));\n            \n            right.Add(new ControlWithDescription(\"\", \"\"));\n            \n            right.Add(new ControlWithDescription(MyGameControlEnums.QUICK_ZOOM));\n            right.Add(new ControlWithDescription(MyGameControlEnums.ZOOM_IN, MyGameControlEnums.ZOOM_OUT));\n            right.Add(new ControlWithDescription(MyGameControlEnums.REAR_CAM));\n            right.Add(new ControlWithDescription(MyGameControlEnums.HEADLIGHTS));\n            right.Add(new ControlWithDescription(MyGameControlEnums.HEADLIGTHS_DISTANCE));\n            right.Add(new ControlWithDescription(MyGameControlEnums.VIEW_MODE));\n            right.Add(new ControlWithDescription(MyGameControlEnums.WHEEL_CONTROL));\n            right.Add(new ControlWithDescription(MyGameControlEnums.CHAT));\n            right.Add(new ControlWithDescription(MyGameControlEnums.SCORE));\n\n            right.Add(new ControlWithDescription(\"\", \"\"));\n\n            right.Add(new ControlWithDescription(new StringBuilder(\"F1\"), MyTextsWrapper.Get(MyTextsWrapperEnum.OpenHelpScreen)));\n            right.Add(new ControlWithDescription(\n                new StringBuilder().\n                    Append(MyTextsWrapper.Get(MyTextsWrapperEnum.Ctrl)).\n                    Append(\"+F1\"),\n                MyTextsWrapper.Get(MyTextsWrapperEnum.OpenCheats)\n            ));\n            right.Add(new ControlWithDescription(new StringBuilder(\"F4\"), MyTextsWrapper.Get(MyTextsWrapperEnum.SaveScreenshotToUserFolder)));\n            \n            //These keys are to be used just for developers or testing\n            if (!SysUtils.MyMwcFinalBuildConstants.IS_PUBLIC)\n            {\n                right.Add(new ControlWithDescription(\"\", \"\"));\n                //Programmers\n                right.Add(new ControlWithDescription(\"F6\", \"Switch to player\"));\n                right.Add(new ControlWithDescription(\"F7\", \"Switch to following 3rd person\"));\n                right.Add(new ControlWithDescription(\"F9\", \"Switch to static 3rd person\"));\n                right.Add(new ControlWithDescription(\"F8, Ctrl+F8\", \"Switch to / reset spectator\"));\n                right.Add(new ControlWithDescription(\"Ctrl+Space\", \"Move ship to spectator\"));\n                right.Add(new ControlWithDescription(\"F11, Shift+F11\", \"Game statistics / FPS\"));\n                right.Add(new ControlWithDescription(\"F12\", \"Debug screen (jump to mission)\"));\n                right.Add(new ControlWithDescription(\"Ctrl+Del\", \"Skip current objective\"));\n                right.Add(new ControlWithDescription(\"Shift+\\\\\", \"Teleport to next obstacle\"));\n            }\n\n            /*\n            right.Add(new ControlWithDescription(\"F5\",\"Ship customization screen\"));\n            right.Add(new ControlWithDescription(\"F9\",\"restart current game and reload sounds\"));\n            right.Add(new ControlWithDescription(\"F3\",\"start sun wind\"));\n            right.Add(new ControlWithDescription(\"F8\",\"save all voxel maps into USER FOLDER - only for programmers\"));\n            right.Add(new ControlWithDescription(\"F10\",\"switch camera - only for programmers\"));\n            right.Add(new ControlWithDescription(\"F11\",\"save screenshot(s) into USER FOLDER\"));\n            right.Add(new ControlWithDescription(\"F12\",\"cycle through debug screens - only for programmers\"));\n            */\n\n#if RENDER_PROFILING\n            right.Add(new ControlWithDescription(\"Alt + Num0\", \"Enable/Disable render profiler or leave current child node.\"));\n            right.Add(new ControlWithDescription(\"Alt + Num1-Num9\", \"Enter child node in render profiler\"));\n            right.Add(new ControlWithDescription(\"Alt + Enter\", \"Pause/Unpause profiler\"));\n#endif //RENDER_PROFILER\n\n            Vector2 controlPosition = -m_size.Value / 2.0f + new Vector2(0.06f, 0.125f);\n            Vector2 descriptionPosition = -m_size.Value / 2.0f + new Vector2(0.18f, 0.125f);\n            foreach (var line in left)\n            {\n                Controls.Add(new MyGuiControlLabel(this, controlPosition, null, line.Control, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER, MyGuiManager.GetFontMinerWarsRed()));\n                Controls.Add(new MyGuiControlLabel(this, descriptionPosition, null, line.Description, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n                controlPosition.Y += 0.023f;\n                descriptionPosition.Y += 0.023f;\n            }\n\n            controlPosition = new Vector2(0.03f, 0.125f - m_size.Value.Y / 2.0f);\n            descriptionPosition = new Vector2(0.15f, 0.125f - m_size.Value.Y / 2.0f);\n\n            foreach (var line in right)\n            {\n                Controls.Add(new MyGuiControlLabel(this, controlPosition, null, line.Control, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER, MyGuiManager.GetFontMinerWarsRed()));\n                Controls.Add(new MyGuiControlLabel(this, descriptionPosition, null, line.Description, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n                controlPosition.Y += 0.023f;\n                descriptionPosition.Y += 0.023f;\n            }\n\n            Controls.Add(new MyGuiControlLabel(this, new Vector2(0.06f - m_size.Value.X / 2.0f, -0.085f + m_size.Value.Y / 2.0f), null, new StringBuilder().Append(MyTextsWrapper.Get(MyTextsWrapperEnum.UserFolder)).Append(\": \").Append(MyFileSystemUtils.GetApplicationUserDataFolder()), MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n\n            Controls.Add(new MyGuiControlButton(this, 0.5f * m_size.Value + new Vector2(-0.14f, -0.085f), MyGuiConstants.BACK_BUTTON_SIZE, \n                MyGuiConstants.BACK_BUTTON_BACKGROUND_COLOR, MyTextsWrapperEnum.Back, MyGuiConstants.BACK_BUTTON_TEXT_COLOR, \n                MyGuiConstants.BACK_BUTTON_TEXT_SCALE, OnBackClick, MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n\n            if (MyMultiplayerPeers.Static.Players.Count == 0)\n            {\n                m_wasPause = MyMinerGame.IsPaused();\n                MyMinerGame.SetPause(true);\n            }\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenHelp\";\n        }\n\n        public override void LoadContent()\n        {\n            base.LoadContent();\n\n            m_backgroundColor = Vector4.Zero;\n\n            MyConfig.NeedShowHelpScreen = false;\n            MyConfig.Save();\n        }\n\n        //  Just close the screen\n        public void OnBackClick(MyGuiControlButton sender)\n        {\n            CloseScreen();\n        }\n\n        protected override void OnClosed()\n        {\n            if (MyGuiScreenGamePlay.Static != null)\n                MyGuiScreenGamePlay.Static.DrawHud = true;\n\n            MyMinerGame.SetPause(m_wasPause);\n\n            base.OnClosed();\n        }\n\n        public override void HandleInput(MyGuiInput input, bool receivedFocusInThisUpdate)\n        {\n            base.HandleInput(input, receivedFocusInThisUpdate);\n\n            if (input.IsNewKeyPress(Keys.F1))\n            {\n                OnBackClick(null);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/MyGuiScreenHostGame.cs",
    "content": "﻿using System.Diagnostics;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.World;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.Game.Sessions;\nusing System;\nusing MinerWars.AppCode.Game.HUD;\nusing MinerWars.AppCode.Networking;\nusing SysUtils;\n\nnamespace MinerWars.AppCode.Game.GUI\n{\n    class MyGuiScreenHostGame : MyGuiScreenBase\n    {\n        readonly MyGuiScreenBase m_closeAfterSuccessfulEnter;\n\n        public MyGuiScreenHostGame(MyGuiScreenBase closeAfterSuccessfulEnter)\n            : base(new Vector2(0.5f, 0.5f), MyGuiConstants.SCREEN_BACKGROUND_COLOR, new Vector2(574f / 1600f, 695 / 1200f), false, MyGuiManager.GetSandboxBackgoround())\n        {\n            m_closeAfterSuccessfulEnter = closeAfterSuccessfulEnter;\n            m_enableBackgroundFade = true;\n            AddCaption(MyTextsWrapperEnum.HostGame, new Vector2(0, 0.005f));\n\n            Debug.Assert(m_size != null, \"m_size != null\");\n            Vector2 menuPositionOrigin = new Vector2(0.0f, -m_size.Value.Y / 2.0f + 0.146f);\n            const MyGuiControlButtonTextAlignment menuButtonTextAlignement = MyGuiControlButtonTextAlignment.CENTERED;\n\n            MyTextsWrapperEnum? officialSectorsForbidden = null;\n            MyTextsWrapperEnum? buttonsForbidden = null;\n            MyTextsWrapperEnum? friendsSectorsForbidden = null;\n            if (MyClientServer.LoggedPlayer != null)\n            {\n                if ((MyClientServer.LoggedPlayer.GetCanAccessDemo() == false) && (MyClientServer.LoggedPlayer.GetCanSave() == false))\n                {\n                    officialSectorsForbidden = MyTextsWrapperEnum.NotAccessRightsToTestBuild;\n                    buttonsForbidden = MyTextsWrapperEnum.NotAccessRightsToTestBuild;\n                    friendsSectorsForbidden = MyTextsWrapperEnum.NotAccessRightsToTestBuild;\n                }\n                else if (MyClientServer.LoggedPlayer.IsDemoUser())\n                {\n                    friendsSectorsForbidden = MyTextsWrapperEnum.NotAvailableInDemoMode;\n                }\n            }\n\n            Controls.Add(new MyGuiControlButton(this, menuPositionOrigin + 0 * MyGuiConstants.MENU_BUTTONS_POSITION_DELTA,\n                MyGuiConstants.MAIN_MENU_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.SandboxSectors, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE,\n                OnSandboxSectorsClick, menuButtonTextAlignement, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER,\n                true, officialSectorsForbidden));\n\n            Controls.Add(new MyGuiControlButton(this, menuPositionOrigin + 1 * MyGuiConstants.MENU_BUTTONS_POSITION_DELTA,\n                MyGuiConstants.MAIN_MENU_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.YourSectors, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE,\n                OnMySectorsClick, menuButtonTextAlignement, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER,\n                true, buttonsForbidden));\n\n            Controls.Add(new MyGuiControlButton(this, menuPositionOrigin + 2 * MyGuiConstants.MENU_BUTTONS_POSITION_DELTA,\n                MyGuiConstants.MAIN_MENU_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.FriendsSectors, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE,\n                OnFriendsSectorsClick, menuButtonTextAlignement, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER,\n                true, friendsSectorsForbidden));\n\n            var backButton = new MyGuiControlButton(this, new Vector2(0, 0.178f), MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE,\n                MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyGuiManager.GetConfirmButton(), null, null, MyTextsWrapperEnum.Back,\n                MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, menuButtonTextAlignement, OnBackClick,\n                true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true, true);\n            Controls.Add(backButton);\n\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenHostGame\";\n        }\n\n        void ChooseSandbox(MyMwcStartSessionRequestTypeEnum sessionRequestType, bool global)\n        {\n            MyMwcSectorTypeEnum sectorType = MyMwcClientServer.GetSectorTypeFromSessionType(sessionRequestType);\n\n            var selectSectorScreen = new MyGuiScreenEnterSectorMap(m_closeAfterSuccessfulEnter, sessionRequestType, MyTextsWrapperEnum.StartGameInProgressPleaseWait, MyConfig.LastSandboxSector);\n            selectSectorScreen.CustomLoadAction = StartSandbox;\n\n            bool isOfficialSandbox = sessionRequestType == MyMwcStartSessionRequestTypeEnum.SANDBOX_FRIENDS && global;\n\n            if (isOfficialSandbox)\n            {\n                selectSectorScreen.SetSectorSourceAction(MyLocalCache.GetOfficialMultiplayerSectorIdentifiers);\n                MyGuiManager.AddScreen(selectSectorScreen);\n            }\n            else\n            {\n                MyGuiScreenMainMenu.AddLoginScreen(new MyGuiScreenLoadSectorIdentifiersProgress(sectorType, global, selectSectorScreen));\n            }\n        }\n\n        void StartSandbox(MyMwcSectorIdentifier sector)\n        {\n            MySession.StartSandbox(sector.Position, sector.UserId);\n        }\n\n        void OnSandboxSectorsClick(MyGuiControlButton sender)\n        {\n            ChooseSandbox(MyMwcStartSessionRequestTypeEnum.SANDBOX_FRIENDS, true);\n        }\n\n        void OnMySectorsClick(MyGuiControlButton sender)\n        {\n            ChooseSandbox(MyMwcStartSessionRequestTypeEnum.SANDBOX_OWN, false);\n        }\n\n        void OnFriendsSectorsClick(MyGuiControlButton sender)\n        {\n            var enterFriendSectorMapScreen = new MyGuiScreenEnterFriendSectorMap(MyMwcStartSessionRequestTypeEnum.SANDBOX_FRIENDS, MyTextsWrapperEnum.StartGameInProgressPleaseWait, m_closeAfterSuccessfulEnter);\n            enterFriendSectorMapScreen.CustomLoadAction = sector => StartSandbox(sector);\n\n            string lastname = MyConfig.LastFriendName;\n            MyMwcSelectSectorRequestTypeEnum startRequest = String.IsNullOrEmpty(lastname) ? MyMwcSelectSectorRequestTypeEnum.RANDOM_FRIENDS : MyMwcSelectSectorRequestTypeEnum.FIND_BY_PLAYER_NAME_FULLTEXT;\n\n            MyGuiScreenMainMenu.AddLoginScreen(new MyGuiScreenSelectSandboxProgress(startRequest, MyTextsWrapperEnum.SelectSandboxInProgressPleaseWait,\n                enterFriendSectorMapScreen, lastname, enterFriendSectorMapScreen.AddFriendSectorsResponse));\n        }\n\n        void OnBackClick(MyGuiControlButton sender)\n        {\n            CloseScreen();\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/MyGuiScreenInputString.cs",
    "content": "﻿using System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.GUI.ScreenEditor;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Utils;\n\nnamespace MinerWars.AppCode.Game.GUI\n{\n    delegate void InputResultHandler(ScreenResult result, string resultText);\n\n    class MyGuiScreenInputString : MyGuiScreenEditorDialogBase\n    {\n        readonly MyGuiControlTextbox m_nameTextbox;\n\n        readonly InputResultHandler m_resultHandler;\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenInputString\";\n        }\n\n        public MyGuiScreenInputString(InputResultHandler resultHandler, MyTextsWrapperEnum caption, StringBuilder defaultValue = null, int maxLength = 128)\n            : base(new Vector2(0.5f, 0.5f), new Vector2(0.33f, 0.85f))\n        {\n            m_resultHandler = resultHandler;\n            m_size = MyGuiConstants.TEXTBOX_MEDIUM_SIZE +\n                     new Vector2(MyGuiConstants.MESSAGE_BOX_BORDER_AREA_X * 2,\n                                 0.1f + MyGuiConstants.MESSAGE_BOX_BORDER_AREA_Y * 2 +\n                                 MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE.Y);\n\n            AddCaption(caption, MyGuiConstants.LABEL_TEXT_COLOR);\n\n            m_nameTextbox = new MyGuiControlTextbox(this,\n                new Vector2(0, 0.1f + MyGuiConstants.TEXTBOX_MEDIUM_SIZE.Y / 2 - m_size.Value.Y / 2),\n                MyGuiControlPreDefinedSize.MEDIUM,\n                defaultValue != null ? defaultValue.ToString() : \"\",\n                maxLength,\n                MyGuiConstants.LABEL_TEXT_COLOR,\n                MyGuiConstants.LABEL_TEXT_SCALE,\n                MyGuiControlTextboxType.NORMAL);\n\n            Controls.Add(m_nameTextbox);\n            AddOkAndCancelButtonControls();\n        }\n\n        protected override void OnOkClick(MyGuiControlButton sender)\n        {\n            base.OnOkClick(sender);\n            m_resultHandler(ScreenResult.Ok, m_nameTextbox.Text);\n        }\n\n        protected override void OnCancelClick(MyGuiControlButton sender)\n        {\n            base.OnCancelClick(sender);\n            m_resultHandler(ScreenResult.Cancel, m_nameTextbox.Text);\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/MyGuiScreenIntroVideo.cs",
    "content": "﻿using System;\n  /*\nusing MinerWarsMath;\n\nusing MinerWarsMath.Graphics;\nusing MinerWars.AppCode.Toolkit.Input\nusing MinerWarsMath.Media;\n*/\n\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Managers;\nusing MinerWars.AppCode.Game.Utils;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.AppCode.Game.VideoMode;\nusing System.Text;\nusing System.Collections.Generic;\nusing MinerWars.AppCode.Game.Localization;\n\nusing DShowNET;\nusing SharpDX.Direct3D9;\n\n//  IMPORTANT: It seems that even if my computer (Marek's) can handle 1280x720 in high bit-rate, a lot\n//  of people has problem with it, even if they have high-end computer. Looks to be XNA/DirectX/Windows\n//  problem. But by testing I have found that \n\nnamespace MinerWars.AppCode.Game.GUI\n{\n    using Vector2 = MinerWarsMath.Vector2;\n    using Vector3 = MinerWarsMath.Vector3;\n    using Vector4 = MinerWarsMath.Vector4;\n    using Rectangle = MinerWarsMath.Rectangle;\n    using Matrix = MinerWarsMath.Matrix;\n    using Color = MinerWarsMath.Color;\n    using BoundingBox = MinerWarsMath.BoundingBox;\n    using BoundingSphere = MinerWarsMath.BoundingSphere;\n    using BoundingFrustum = MinerWarsMath.BoundingFrustum;\n\n    class MyGuiScreenIntroVideo : MyGuiScreenBase\n    {\n        struct Subtitle\n        {\n            public Subtitle(int startMs, int lengthMs, MyTextsWrapperEnum textEnum)\n            {\n                this.StartTime = TimeSpan.FromMilliseconds(startMs);\n                this.Length = TimeSpan.FromMilliseconds(lengthMs);\n                this.Text = MyTextsWrapper.Get(textEnum);\n            }\n\n            public TimeSpan StartTime;\n            public TimeSpan Length;\n            public StringBuilder Text;\n        }\n\n//        Video m_video;\n        VideoPlayer m_videoPlayer;\n        bool m_playbackStarted;\n\n        string[] m_videos;\n        string m_currentVideo;\n        List<Subtitle> m_subtitles = new List<Subtitle>();\n        int m_currentSubtitleIndex = 0;\n\n        Vector4 m_colorMultiplier = Vector4.One;\n\n        private float m_volume;\n\n        private bool m_loop = true;\n\n        private StringBuilder m_subtitleToDraw;\n\n        public MyGuiScreenIntroVideo(string[] videos)\n            : base(Vector2.Zero, null, null)\n        {\n            DrawMouseCursor = false;\n            m_closeOnEsc = false;\n            m_drawEvenWithoutFocus = true;\n            m_videos = videos;\n        }\n\n        public static MyGuiScreenIntroVideo CreateBackgroundScreen()\n        {\n            var result = new MyGuiScreenIntroVideo(new string[] { \"Videos\\\\Background01_720p.wmv\", \"Videos\\\\Background02_720p.wmv\", \"Videos\\\\MinerWarsIntro_720p.wmv\", \"Videos\\\\MinerWarsLaunchTrailer.wmv\" });\n            result.m_volume = 0;\n            result.m_colorMultiplier = new Vector4(0.5f, 0.5f, 0.5f, 1);\n            return result;\n        }\n\n        public static MyGuiScreenIntroVideo CreateIntroScreen(Action onVideoFinished)\n        {\n            var result = new MyGuiScreenIntroVideo(new string[] { \"Videos\\\\MinerWarsIntro_720p.wmv\" });\n            result.m_volume = MyConfig.MusicVolume;\n            result.m_loop = false;\n            AddCloseEvent(onVideoFinished, result);\n            result.m_subtitles.Add(new Subtitle(11000, 4000, MyTextsWrapperEnum.Intro01)); // In 2070, Project Genesis was launched.\n            result.m_subtitles.Add(new Subtitle(15500, 4500, MyTextsWrapperEnum.Intro02)); // An experimental project aiming to harness the energy of the sun.\n            result.m_subtitles.Add(new Subtitle(30500, 4000, MyTextsWrapperEnum.Intro03)); // However, the experiment resulted in a temporary quantum change\n            result.m_subtitles.Add(new Subtitle(34500, 5400, MyTextsWrapperEnum.Intro04)); // within gravitational laws and subatomic particle rotations.\n            result.m_subtitles.Add(new Subtitle(41800, 6000, MyTextsWrapperEnum.Intro05)); // The gravitational quantum collapse tore all the larger objects + 1\n            result.m_subtitles.Add(new Subtitle(48600, 6700, MyTextsWrapperEnum.Intro06)); // Planets, moons and even larger asteroids and comets + 1\n            result.m_subtitles.Add(new Subtitle(52000, 8000, MyTextsWrapperEnum.Intro07)); // Creating new asteroid belts, marking their former planet's orbits.\n            result.m_subtitles.Add(new Subtitle(60750, 4000, MyTextsWrapperEnum.Intro08)); // Together with the rest of the planets and moons,\n            result.m_subtitles.Add(new Subtitle(65600, 4000, MyTextsWrapperEnum.Intro09)); // Billions of people died together along with our planet Earth.\n            result.m_subtitles.Add(new Subtitle(69800, 5500, MyTextsWrapperEnum.Intro10)); // Concurrent massive solar storms killed additional + 1\n            result.m_subtitles.Add(new Subtitle(76400, 5500, MyTextsWrapperEnum.Intro11)); // The Euro-American Confederation is held responsible for the celestial accident, \n            result.m_subtitles.Add(new Subtitle(81400, 3500, MyTextsWrapperEnum.Intro12)); // especially by its major opposition China.\n            result.m_subtitles.Add(new Subtitle(86800, 3500, MyTextsWrapperEnum.Intro13)); // 2081 – eleven years after the Solar Event\n            result.m_subtitles.Add(new Subtitle(91300, 5800, MyTextsWrapperEnum.Intro14)); // Here we are. According to the triangulation, + 1\n            result.m_subtitles.Add(new Subtitle(103500, 7700, MyTextsWrapperEnum.Intro15)); // So this is the source of the signal. I must admit I wasn’t + 1\n            result.m_subtitles.Add(new Subtitle(111500, 1800, MyTextsWrapperEnum.Intro16)); // Oh my God!\n            result.m_subtitles.Add(new Subtitle(114000, 4800, MyTextsWrapperEnum.Intro17)); // This is the moment I’ve waited for my entire life.\n            result.m_subtitles.Add(new Subtitle(119000, 2500, MyTextsWrapperEnum.Intro18)); // Any idea what it is?\n            result.m_subtitles.Add(new Subtitle(125000, 3000, MyTextsWrapperEnum.Intro19)); // Three weeks earlier...\n            return result;\n        }\n\n        private static void AddCloseEvent(Action onVideoFinished, MyGuiScreenIntroVideo result)\n        {\n            result.Closed += (screen) => onVideoFinished();\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenIntroVideo\";\n        }\n\n        private void LoadRandomVideo()\n        {\n            int index = MyMwcUtils.GetRandomInt(0, m_videos.Length);\n            m_currentVideo = m_videos[index];\n        }\n\n        public override void LoadContent()\n        {\n            m_playbackStarted = false;\n\n            LoadRandomVideo();\n\n            //  Base load content must be called after child's load content\n            base.LoadContent();\n        }\n\n        public override void UnloadContent()\n        {\n            //  Stop playback\n            if (m_videoPlayer != null)\n            {\n                m_videoPlayer.Stop();\n                m_videoPlayer.Dispose();\n                m_videoPlayer = null;\n            }\n\n            m_currentVideo = \"\";\n\n            base.UnloadContent();\n\n            //This one causes leaks in D3D\n            //GC.Collect();\n        }\n\n        public override void HandleInput(MyGuiInput input, bool receivedFocusInThisUpdate)\n        {\n            base.HandleInput(input, receivedFocusInThisUpdate);\n\n            if ((input.IsAnyKeyPress() == true) || (input.IsAnyMousePress() == true))\n            {\n                CloseScreen();\n            }\n        }\n\n        void Loop()\n        {\n            // loop video\n            m_currentSubtitleIndex = 0;\n            LoadRandomVideo();\n            TryPlayVideo();\n        }\n\n        public override bool Update(bool hasFocus)\n        {\n            if (base.Update(hasFocus) == false) return false;\n\n            if (m_playbackStarted == false)\n            {\n                TryPlayVideo();\n\n                m_playbackStarted = true;\n            }\n            else\n            {\n                if ((m_videoPlayer != null) && (m_videoPlayer.CurrentState != VideoState.Playing))\n                {\n                    if (m_loop)\n                    {\n                        Loop();\n                    }\n                    else\n                    {\n                        CloseScreen();\n                    }\n                }\n                  \n                // when playback started and player is null, video can't be played, so close screen\n                if (m_playbackStarted && m_videoPlayer == null)\n                {\n                    CloseScreen();\n                }\n\n                if (m_state == MyGuiScreenState.CLOSING)\n                {\n                    //  Update volume, so during exiting it's fading out as alpha\n                    if (m_videoPlayer != null)\n                    {\n                        m_videoPlayer.Volume = m_transitionAlpha;\n                    }\n                } \n            }\n\n            if (MyConfig.Subtitles)\n            {\n                UpdateSubtitles();\n            }\n            else\n            {\n                m_subtitleToDraw = null;\n            }\n\n            return true;\n        }\n\n        void UpdateSubtitles()\n        {\n            if(m_subtitles == null || m_subtitles.Count == 0 || m_videoPlayer == null)\n                return;\n\n            if(m_currentSubtitleIndex >= m_subtitles.Count)\n                return;\n\n            var subtitle = m_subtitles[m_currentSubtitleIndex];\n\n            \n            while((subtitle.StartTime + subtitle.Length).TotalSeconds < m_videoPlayer.CurrentPosition)\n            {\n                m_currentSubtitleIndex++;\n                if(m_currentSubtitleIndex == m_subtitles.Count)\n                {\n                    return;\n                }\n                subtitle = m_subtitles[m_currentSubtitleIndex];\n            }\n\n            if (subtitle.StartTime.TotalSeconds < m_videoPlayer.CurrentPosition)\n            {\n                m_subtitleToDraw = subtitle.Text;\n            }\n            else\n            {\n                m_subtitleToDraw = null;\n            }    \n        }\n\n        void LoadSubtitle()\n        {\n        }\n\n        void TryPlayVideo()\n        {\n            //  On some computers video playback can fail. In the moment we call m_videoPlayer.Play\n            //  So I try/catched it. Better no video than crashing game.\n            try\n            {\n                if (m_videoPlayer != null)\n                    m_videoPlayer.Dispose();\n\n                //  Start playback\n                m_videoPlayer = new VideoPlayer(MyMinerGame.Static.RootDirectory + \"\\\\\" + m_currentVideo, MyMinerGame.Static.GraphicsDevice);\n                m_videoPlayer.Play();\n                m_videoPlayer.Volume = m_volume * 2;\n            }\n            catch (Exception ex)\n            {\n                //  Log this exception but then ignore it\n                MyMwcLog.WriteLine(ex);\n\n                //  Because of this exception, video player must be invalidated. We don't know what it contains.\n                //  This will close this screen\n                m_videoPlayer = null;\n            }\n        }\n\n        public override bool CloseScreen()\n        {\n            bool ret = base.CloseScreen();\n\n            if (ret)\n            {\n                if (m_videoPlayer != null)\n                {\n                    m_videoPlayer.Stop();\n                    m_videoPlayer.Dispose();\n                    m_videoPlayer = null;\n                }\n            }\n\n            return ret;\n        }\n\n        public override bool Draw(float backgroundFadeAlpha)\n        {\n            if(base.Draw(backgroundFadeAlpha) == false) return false;\n\n            if (m_videoPlayer != null)\n            {\n                m_videoPlayer.Update();\n\n                Texture texture = m_videoPlayer.OutputFrame;\n\n                Vector4 color = m_colorMultiplier * m_transitionAlpha;\n\n                Rectangle videoRect;\n                MyGuiManager.GetSafeAspectRatioFullScreenPictureSize(new MyMwcVector2Int(texture.GetLevelDescription(0).Width, texture.GetLevelDescription(0).Height), out videoRect);\n\n                MyGuiManager.DrawSpriteBatch(texture, videoRect, new Color(color));\n\n                if (m_subtitleToDraw != null)\n                {\n                    MyGuiManager.DrawStringCentered(MyGuiManager.GetFontMinerWarsWhite(), m_subtitleToDraw,\n                            new Vector2(0.5f, 0.85f), 1.6f, Color.White, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_BOTTOM);\n                }\n            }\n\n            return true;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/MyGuiScreenInventory.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Globalization;\nusing System.Linq;\nusing System.Text;\nusing System.Threading;\nusing MinerWars.AppCode.Game.Editor;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Gameplay;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.AppCode.Game.GUI.Helpers;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing SysUtils.Utils;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.AppCode.Game.Inventory;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.AppCode.Game.World;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Entities.Weapons;\nusing MinerWars.AppCode.Game.Models;\nusing KeenSoftwareHouse.Library.Extensions;\nusing MinerWars.AppCode.Game.Sessions;\n\nnamespace MinerWars.AppCode.Game.GUI\n{\n    enum MyGuiScreenInventoryType\n    {\n        Game,                   // in game, when any enitity to trade or loot, then show other side inventory\n        InGameEditor,           // trading for free with foundation factory                \n        GodEditor,              // in god editor, in other side inventory show all items in game\n    }\n\n    class MyGuiScreenInventorySaveResult\n    {\n        public List<MySmallShipBuilderWithName> SmallShipsObjectBuilders { get; set; }\n        public int CurrentIndex { get; set; }\n        public MyMwcObjectBuilder_Inventory OtherSideInventoryObjectBuilder { get; set; }\n        public float Money { get; set; }\n        public bool WasAnythingTransfered { get; set; }\n\n        public MyGuiScreenInventorySaveResult(List<MySmallShipBuilderWithName> shipsBuilders, int currentIndex, MyMwcObjectBuilder_Inventory otherSideInventoryBuilder, float money, bool wasAnythingTransfered)\n        {\n            SmallShipsObjectBuilders = shipsBuilders;\n            CurrentIndex = currentIndex;\n            OtherSideInventoryObjectBuilder = otherSideInventoryBuilder;\n            Money = money;\n            WasAnythingTransfered = wasAnythingTransfered;\n        }\n    }\n\n    class MySmallShipBuilderWithName\n    {\n        public StringBuilder Name { get; set; }\n        public MyMwcObjectBuilder_SmallShip Builder { get; set; }\n        public object UserData { get; set; }\n\n        public MySmallShipBuilderWithName(StringBuilder name, MyMwcObjectBuilder_SmallShip builder)\n            : this(name, builder, null)\n        {\n        }\n\n        public MySmallShipBuilderWithName(StringBuilder name, MyMwcObjectBuilder_SmallShip builder, object userData)\n        {\n            Name = name;\n            Builder = builder;\n            UserData = userData;\n        }\n\n        public MySmallShipBuilderWithName(MyMwcObjectBuilder_SmallShip builder)\n            : this(builder, null)\n        {\n        }\n\n        public MySmallShipBuilderWithName(MyMwcObjectBuilder_SmallShip builder, object userData)\n            : this(((MyGuiSmallShipHelperSmallShip)MyGuiObjectBuilderHelpers.GetGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip, (int)builder.ShipType)).Name, builder, userData)\n        {\n        }\n    }\n\n    delegate void OnGuiScreenInventorySave(MyGuiScreenInventory sender, MyGuiScreenInventorySaveResult saveResult);\n\n    class MyGuiScreenInventory : MyGuiScreenBase\n    {\n        private class MySmallShipInventoryItemIDs\n        {\n            public List<int> Inventory { get; set; }\n            public List<int> LeftWeapons { get; set; }\n            public List<int> RightWeapons { get; set; }\n            public int? Radar { get; set; }\n            public int? Engine { get; set; }\n            public int? Armor { get; set; }\n            public int? Harvester { get; set; }\n            public int? Drill { get; set; }\n            public int? FrontLauncher { get; set; }\n            public int? BackLauncher { get; set; }\n\n            public MySmallShipInventoryItemIDs()\n            {\n                Inventory = new List<int>();\n                LeftWeapons = new List<int>();\n                RightWeapons = new List<int>();\n            }\n        }\n\n        private MyGuiControlListbox m_shipInventoryListBox;\n        private MyGuiControlListbox m_otherSideInventoryListBox;        \n        private List<MyGuiControlListbox> m_leftWeaponListboxes;        \n        private List<MyGuiControlListbox> m_rightWeaponListboxes;\n        //private MyGuiControlListbox m_radarInventoryListBox;\n        private MyGuiControlListbox m_armorInventoryListBox;\n        private MyGuiControlListbox m_engineInventoryListBox;\n        private MyGuiControlListbox m_frontUniversalLauncherInventoryListBox;\n        private MyGuiControlListbox m_backUniversalLauncherInventoryListBox;\n        private MyGuiControlListbox m_drillInventoryListBox;\n        private MyGuiControlListbox m_harvestingToolInventoryListBox;\n        private MyGuiControlListboxDragAndDrop m_dragAndDrop;        \n        private MyGuiControlLabel m_playersMoneyLabel;\n        private MyGuiControlCombobox m_shipsCombobox;        \n        private MyGuiControlButton m_okButton;\n        private MyGuiControlButton m_cancelButton;\n        private MyGuiControlButton m_ButtonTakeAll;\n        private MyGuiControlButton m_removeAll;\n        private MyGuiControlRotatingWheel m_transferingProgress;\n        private MyGuiControlButton m_nextShipButton;\n        private MyGuiControlButton m_previousShipButton;\n        private MyGuiControlLabel m_shipInventoryCapacityLabel;\n        private MyGuiControlLabel m_otherSideInventoryCapacityLabel;\n        private MyGuiControlLabel m_shipNameLabel;\n\n\n        //filter buttons\n        //all items\n        private MyGuiControlCheckbox m_sortAll;\n        private MyGuiControlCheckbox m_sortConsumables;\n        private MyGuiControlCheckbox m_sortEquipment;\n        private MyGuiControlCheckbox m_sortGods;\n        private MyGuiControlCheckbox m_sortOres;\n        private MyGuiControlCheckbox m_sortWeapons;\n\n        //my inventory\n        private MyGuiControlCheckbox m_sortAllMy;\n        private MyGuiControlCheckbox m_sortConsumablesMy;\n        private MyGuiControlCheckbox m_sortEquipmentMy;\n        private MyGuiControlCheckbox m_sortGodsMy;\n        private MyGuiControlCheckbox m_sortOresMy;\n        private MyGuiControlCheckbox m_sortWeaponsMy;\n\n        private MyGuiControlPanel m_shipPanel;\n\n        private MySoundCue? m_transferingProgressCue;\n        private bool m_isTransferingInProgress;\n        private int m_timeFromStartTransfering;\n        private bool m_wasAnythingTrasfered;\n        private bool m_resetWasAnythingTrasferedAfterComboboxChanged;\n        private Dictionary<MyGuiControlListbox, Predicate<MyInventoryItem>> m_listboxDropConditions;\n        private MyInventoryItemsRepository m_itemsRepository;\n\n        private List<MySmallShipBuilderWithName> m_smallShipsBuilders;\n        private int m_currentShipBuilderIndex;\n        private MyMwcObjectBuilder_Inventory m_otherSideInventoryBuilder;\n        private List<int> m_removedInventoryItemIDs;\n        private float m_money;        \n        private bool m_tradeForMoney;\n        private MyGuiScreenInventoryType m_inventoryScreenType;\n        private bool m_isInventoryLocked;\n\n        private List<MySmallShipInventoryItemIDs> m_smallShipsInventoryItemIDs;\n        private List<int> m_otherSideInventoryItemIDs;\n        private List<int> m_shipInventoryHideList;\n        private List<int> m_otherSideInventoryHideList;\n\n        private const int INVENTORY_COLUMNS = 3;\n        private const int INVENTORY_DISPLAY_ROWS = 4;\n        private const int INVENTORY_WEAPONS_COLUMNS = 5;\n        private const int INVENTORY_EMPTY_ROWS = 10;\n        private const int COMPLETE_TRANSFER_TIME = 5000;    // in miliseconds\n\n        private MyTexture2D m_inventoryItemTexture;\n        private MyTexture2D m_inventoryScrollBarTexture;        \n\n        List<ItemCategory> m_tempFilteredCategoriesMyInventory = new List<ItemCategory>(Enum.GetValues(typeof(ItemCategory)).Length);\n        List<ItemCategory> m_tempFilteredCategoriesTheirsInventory = new List<ItemCategory>(Enum.GetValues(typeof(ItemCategory)).Length);\n\n        public TimeSpan ScreenTimeout { get; set; }\n\n        private MyTexture2D m_shipTexture;\n        /// <summary>\n        /// This constructor use only for bot's spawnpoints\n        /// </summary>\n        /// <param name=\"smallShipBuilder\">Small ship's builder</param>\n        /// <param name=\"otherSidesInventoryBuilder\">Other side's inventory builder</param>\n        /// <param name=\"otherSideInventoryName\">Other side's inventory name</param>y\n        public MyGuiScreenInventory(List<MySmallShipBuilderWithName> smallShipBuilders, int currentShipBuilderIndex, MyMwcObjectBuilder_Inventory otherSidesInventoryBuilder, StringBuilder otherSideInventoryName, bool resetWasAnythingTrasferedAfterComboboxChanged = false)\n            : this(smallShipBuilders, currentShipBuilderIndex, 0f, false, otherSidesInventoryBuilder, otherSideInventoryName, MyGuiScreenInventoryType.GodEditor, resetWasAnythingTrasferedAfterComboboxChanged)\n        {\n\n        }\n\n        public MyGuiScreenInventory(List<MySmallShipBuilderWithName> smallShipsBuilders, int currentShipBuilderIndex, float money, bool tradeForMoney,\n            MyMwcObjectBuilder_Inventory otherSidesInventoryBuilder, StringBuilder otherSideInventoryName, MyGuiScreenInventoryType inventoryScreenType, bool resetWasAnythingTrasferedAfterComboboxChanged = false)\n            : base(new Vector2(0.5f, 0.5f), MyGuiConstants.SCREEN_BACKGROUND_COLOR, new Vector2(1.0f, 1.0f), true, MyGuiManager.GetInventoryScreenBackgroundTexture())\n        {\n            ScreenTimeout = TimeSpan.MaxValue;\n            m_isInventoryLocked = true;\n            m_resetWasAnythingTrasferedAfterComboboxChanged = resetWasAnythingTrasferedAfterComboboxChanged;\n            m_isTransferingInProgress = false;\n            m_wasAnythingTrasfered = false;\n\n            m_smallShipsBuilders = smallShipsBuilders;\n            m_smallShipsInventoryItemIDs = new List<MySmallShipInventoryItemIDs>(smallShipsBuilders.Count);\n            m_currentShipBuilderIndex = currentShipBuilderIndex;\n            m_otherSideInventoryBuilder = otherSidesInventoryBuilder;\n            if (m_otherSideInventoryBuilder != null)\n            {\n                m_otherSideInventoryItemIDs = new List<int>();\n            }\n            m_shipInventoryHideList = new List<int>();\n            m_otherSideInventoryHideList = new List<int>();\n            m_tradeForMoney = tradeForMoney;\n            m_inventoryScreenType = inventoryScreenType;\n\n            m_itemsRepository = new MyInventoryItemsRepository();\n            m_removedInventoryItemIDs = new List<int>();\n\n            LoadInventoryItemsFromObjectBuilders();\n\n            if (m_inventoryScreenType == MyGuiScreenInventoryType.GodEditor)\n            {\n                AddCaption(MyTextsWrapperEnum.ShipCustomizationCaption, new Vector2(0, 0.005f));\n            }\n            else\n            {\n                AddCaption(MyTextsWrapperEnum.ShipInventoryCaption, new Vector2(0, 0.005f));\n            }\n            m_enableBackgroundFade = false;\n            m_backgroundFadeColor = Vector4.Zero;\n\n            OnEnterCallback += OnOkClickDelegate;\n\n            m_shipTexture = GetShipTexture();\n            m_shipPanel = new MyGuiControlPanel(this, new Vector2(0.005f, -0.2347f), new Vector2(480 / 1600f, 367 / 1200f), MyGuiConstants.SCREEN_BACKGROUND_COLOR,\n                    m_shipTexture, null, null, null,\n                    MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER);\n            Controls.Add(m_shipPanel);\n\n            InitControls(otherSideInventoryName);\n\n            FillOtherSideInventoryListbox();\n            FillShipCustomizationListboxes(m_currentShipBuilderIndex);\n            FillShipsCombobox();\n            SwitchToShip(m_currentShipBuilderIndex);\n\n            SetMoney(money);\n            if (m_tradeForMoney) \n            {\n                UpdateOtherSideInventoryListboxForTrading();\n            }\n            MyAudio.AddCue2D(MySoundCuesEnum.GuiWheelControlOpen);\n        }\n\n        public event OnGuiScreenInventorySave OnSave;\n\n        private void InitControls(StringBuilder otherSideInventoryName)\n        {\n            Vector2 topLeft = new Vector2(-m_size.Value.X / 2.0f + 0.05f, -m_size.Value.Y / 2.0f + 0.1f);\n            Vector2 topRight = new Vector2(m_size.Value.X / 2.0f - 0.05f, -m_size.Value.Y / 2.0f + 0.1f);\n\n            List<MyGuiControlListbox> listboxToDrop = new List<MyGuiControlListbox>();\n            m_listboxDropConditions = new Dictionary<MyGuiControlListbox, Predicate<MyInventoryItem>>();\n\n            m_inventoryItemTexture = null;\n            m_inventoryScrollBarTexture = MyGuiManager.GetInventoryScreenListboxScrollBarTexture();\n\n            #region my ship's inventory and customization\n\n            // Ship's inventory label\n            Controls.Add(new MyGuiControlLabel(this,\n                                               new Vector2(0.1959f, -0.357f), null,\n                                               MyTextsWrapperEnum.ShipInventory, MyGuiConstants.LABEL_TEXT_COLOR,\n                                               MyGuiConstants.INVENTORY_LABEL_TEXT_SCALE,\n                                               MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER,\n                                               MyGuiManager.GetFontMinerWarsBlue()));\n\n            // Ship's inventory capacity label\n            m_shipInventoryCapacityLabel = new MyGuiControlLabel(this,\n                                                                 new Vector2(0.4f, -0.357f), null, MyTextsWrapperEnum.InventoryCapacityLabel,\n                                                                 MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.INVENTORY_LABEL_TEXT_SCALE,\n                                                                 MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_CENTER);\n            Controls.Add(m_shipInventoryCapacityLabel);\n\n            // Ship inventory listbox\n            m_shipInventoryListBox = new MyGuiControlListbox(this,\n                                                             new Vector2(0.3211f, -0.1425f),\n                                                             MyGuiConstants.LISTBOX_SMALL_SIZE + new Vector2(0,0.003f),\n                                                             new Vector4(0f, 0f, 0f, 0f),\n                                                             null,\n                                                             MyGuiConstants.INVENTORY_LABEL_TEXT_SCALE,\n                                                             INVENTORY_COLUMNS, INVENTORY_DISPLAY_ROWS,\n                                                             INVENTORY_COLUMNS, true, true, false,\n                                                             null,\n                                                             null,\n                                                             m_inventoryScrollBarTexture,\n                                                             null, 0, 0, new Vector4(1f, 1f, 1f, 0f), 0.03f, 0, 0, 0, -0.005f, -0.01f, -0.016f, -0.017f);\n            InitializeListboxDragAndAddToControls(m_shipInventoryListBox);\n            listboxToDrop.Add(m_shipInventoryListBox);\n            m_listboxDropConditions.Add(m_shipInventoryListBox, ii => true);\n\n            // Left weapons inventory label\n            Controls.Add(new MyGuiControlLabel(this, new Vector2(-0.2637f, 0.2903f),\n                                               null, MyTextsWrapperEnum.LeftWeapons, MyGuiConstants.LABEL_TEXT_COLOR,\n                                               MyGuiConstants.INVENTORY_LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER, MyGuiManager.GetFontMinerWarsBlue()));\n            \n            m_leftWeaponListboxes = new List<MyGuiControlListbox>();\n            var leftWeapon1InventoryListBox = new MyGuiControlListbox(this,\n                                                        new Vector2(-0.3075f, 0.2203f),\n                                                        MyGuiConstants.LISTBOX_SMALL_SIZE,\n                                                        new Vector4(1f, 1f, 1f, 0f),\n                                                        MyTextsWrapper.Get(MyTextsWrapperEnum.LeftWeapons),\n                                                        MyGuiConstants.INVENTORY_LABEL_TEXT_SCALE,\n                                                        1, 1,\n                                                        1, true, false, false,\n                                                        null, null,\n                                                        null, null, 0, 0, new Vector4(1f, 1f, 1f, 0f), 0.02f, 0f, 0f, 0f, 0, 0, 0);\n\n\n            leftWeapon1InventoryListBox.DisplayHighlight = false;\n            m_leftWeaponListboxes.Add(leftWeapon1InventoryListBox);\n            leftWeapon1InventoryListBox.AddRow();\n            InitializeListboxDragAndAddToControls(leftWeapon1InventoryListBox);\n            listboxToDrop.Add(leftWeapon1InventoryListBox);\n            m_listboxDropConditions.Add(leftWeapon1InventoryListBox,\n                                        ii =>\n                                        ii.ObjectBuilderType == MyMwcObjectBuilderTypeEnum.SmallShip_Weapon &&\n                                        new int[] { 9, 10, 11, 12, 13, 14, 15, 16, 18 }.Contains(ii.ObjectBuilderId.Value) ==\n                                        false);\n\n            var leftWeapon2InventoryListBox = new MyGuiControlListbox(this,\n                                                        new Vector2(-0.2363f, 0.2303f),\n                                                        MyGuiConstants.LISTBOX_SMALL_SIZE,\n                                                        new Vector4(1f, 1f, 1f, 0f),\n                                                        MyTextsWrapper.Get(MyTextsWrapperEnum.LeftWeapons),\n                                                        MyGuiConstants.INVENTORY_LABEL_TEXT_SCALE,\n                                                        1, 1,\n                                                        1, true, false, false,\n                                                        null, null,\n                                                        null, null, 0, 0, new Vector4(1f, 1f, 1f, 0f), 0f, 0f, 0f, 0f, 0, 0, 0);\n            leftWeapon2InventoryListBox.DisplayHighlight = false;\n            m_leftWeaponListboxes.Add(leftWeapon2InventoryListBox);\n            leftWeapon2InventoryListBox.AddRow();\n            InitializeListboxDragAndAddToControls(leftWeapon2InventoryListBox);\n            listboxToDrop.Add(leftWeapon2InventoryListBox);\n            m_listboxDropConditions.Add(leftWeapon2InventoryListBox,\n                                        ii =>\n                                        ii.ObjectBuilderType == MyMwcObjectBuilderTypeEnum.SmallShip_Weapon &&\n                                        new int[] { 9, 10, 11, 12, 13, 14, 15, 16, 18 }.Contains(ii.ObjectBuilderId.Value) ==\n                                        false);\n\n            var leftWeapon3InventoryListBox = new MyGuiControlListbox(this,\n                                                        new Vector2(-0.1668f, 0.2303f),\n                                                        MyGuiConstants.LISTBOX_SMALL_SIZE,\n                                                        new Vector4(1f, 1f, 1f, 0f),\n                                                        MyTextsWrapper.Get(MyTextsWrapperEnum.LeftWeapons),\n                                                        MyGuiConstants.INVENTORY_LABEL_TEXT_SCALE,\n                                                        1, 1,\n                                                        1, true, false, false,\n                                                        null, null,\n                                                        null, null, 0, 0, new Vector4(1f, 1f, 1f, 0f), 0f, 0f, 0f, 0f, 0, 0, 0);\n            leftWeapon3InventoryListBox.DisplayHighlight = false;\n            m_leftWeaponListboxes.Add(leftWeapon3InventoryListBox);\n            leftWeapon3InventoryListBox.AddRow();\n            InitializeListboxDragAndAddToControls(leftWeapon3InventoryListBox);\n            listboxToDrop.Add(leftWeapon3InventoryListBox);\n            m_listboxDropConditions.Add(leftWeapon3InventoryListBox,\n                                        ii =>\n                                        ii.ObjectBuilderType == MyMwcObjectBuilderTypeEnum.SmallShip_Weapon &&\n                                        new int[] { 9, 10, 11, 12, 13, 14, 15, 16, 18 }.Contains(ii.ObjectBuilderId.Value) ==\n                                        false);\n\n            var leftWeapon4InventoryListBox = new MyGuiControlListbox(this,\n                                                        new Vector2(-0.1659f, 0.1374f),\n                                                        MyGuiConstants.LISTBOX_SMALL_SIZE,\n                                                        new Vector4(1f, 1f, 1f, 0f),\n                                                        MyTextsWrapper.Get(MyTextsWrapperEnum.LeftWeapons),\n                                                        MyGuiConstants.INVENTORY_LABEL_TEXT_SCALE,\n                                                        1, 1,\n                                                        1, true, false, false,\n                                                        null, null,\n                                                        null, null, 0, 0, new Vector4(1f, 1f, 1f, 0f), 0f, 0f, 0f, 0f, 0, 0, 0);\n            leftWeapon4InventoryListBox.DisplayHighlight = false;\n            m_leftWeaponListboxes.Add(leftWeapon4InventoryListBox);\n            leftWeapon4InventoryListBox.AddRow();\n            InitializeListboxDragAndAddToControls(leftWeapon4InventoryListBox);\n            listboxToDrop.Add(leftWeapon4InventoryListBox);\n            m_listboxDropConditions.Add(leftWeapon4InventoryListBox,\n                                        ii =>\n                                        ii.ObjectBuilderType == MyMwcObjectBuilderTypeEnum.SmallShip_Weapon &&\n                                        new int[] { 9, 10, 11, 12, 13, 14, 15, 16, 18 }.Contains(ii.ObjectBuilderId.Value) ==\n                                        false);\n\n            var leftWeapon5InventoryListBox = new MyGuiControlListbox(this,\n                                                        new Vector2(-0.0946f, 0.1374f),\n                                                        MyGuiConstants.LISTBOX_SMALL_SIZE,\n                                                        new Vector4(1f, 1f, 1f, 0f),\n                                                        MyTextsWrapper.Get(MyTextsWrapperEnum.LeftWeapons),\n                                                        MyGuiConstants.INVENTORY_LABEL_TEXT_SCALE,\n                                                        1, 1,\n                                                        1, true, false, false,\n                                                        null, null,\n                                                        null, null, 0, 0, new Vector4(1f, 1f, 1f, 0f), 0f, 0f, 0f, 0f, 0, 0, 0);\n            leftWeapon5InventoryListBox.DisplayHighlight = false;\n            m_leftWeaponListboxes.Add(leftWeapon5InventoryListBox);\n            leftWeapon5InventoryListBox.AddRow();\n            InitializeListboxDragAndAddToControls(leftWeapon5InventoryListBox);\n            listboxToDrop.Add(leftWeapon5InventoryListBox);\n            m_listboxDropConditions.Add(leftWeapon5InventoryListBox,\n                                        ii =>\n                                        ii.ObjectBuilderType == MyMwcObjectBuilderTypeEnum.SmallShip_Weapon &&\n                                        new int[] { 9, 10, 11, 12, 13, 14, 15, 16, 18 }.Contains(ii.ObjectBuilderId.Value) ==\n                                        false);\n\n            // Right weapons inventory label\n            Controls.Add(new MyGuiControlLabel(this, new Vector2(0.2021f, 0.2909f),\n                                               null, MyTextsWrapperEnum.RighWeapons, MyGuiConstants.LABEL_TEXT_COLOR,\n                                               MyGuiConstants.INVENTORY_LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER, MyGuiManager.GetFontMinerWarsBlue()));\n            \n            m_rightWeaponListboxes = new List<MyGuiControlListbox>();\n            var rightWeapon1InventoryListBox = new MyGuiControlListbox(this,\n                                                                     new Vector2(0.0877f, 0.1362f),\n                                                                     MyGuiConstants.LISTBOX_SMALL_SIZE,\n                                                                     new Vector4(1f, 1f, 1f, 0f),\n                                                                     MyTextsWrapper.Get(MyTextsWrapperEnum.RighWeapons),\n                                                                     MyGuiConstants.INVENTORY_LABEL_TEXT_SCALE,\n                                                                     1, 1,\n                                                                     1, true, false, false,\n                                                                     null, m_inventoryItemTexture,\n                                                                     null, null, 0, 0, new Vector4(1f, 1f, 1f, 0f), 0f, 0f, 0f, 0f, 0, 0, 0);\n            rightWeapon1InventoryListBox.DisplayHighlight = false;\n            m_rightWeaponListboxes.Insert(0, rightWeapon1InventoryListBox);\n            rightWeapon1InventoryListBox.AddRow();\n            InitializeListboxDragAndAddToControls(rightWeapon1InventoryListBox);\n            listboxToDrop.Add(rightWeapon1InventoryListBox);\n            m_listboxDropConditions.Add(rightWeapon1InventoryListBox,\n                                        ii =>\n                                        ii.ObjectBuilderType == MyMwcObjectBuilderTypeEnum.SmallShip_Weapon &&\n                                        new int[] { 9, 10, 11, 12, 13, 14, 15, 16, 18 }.Contains(ii.ObjectBuilderId.Value) == false);\n\n            var rightWeapon2InventoryListBox = new MyGuiControlListbox(this,\n                                                                     new Vector2(0.1599f, 0.1362f),\n                                                                     MyGuiConstants.LISTBOX_SMALL_SIZE,\n                                                                     new Vector4(1f, 1f, 1f, 0f),\n                                                                     MyTextsWrapper.Get(MyTextsWrapperEnum.RighWeapons),\n                                                                     MyGuiConstants.INVENTORY_LABEL_TEXT_SCALE,\n                                                                     1, 1,\n                                                                     1, true, false, false,\n                                                                     null, m_inventoryItemTexture,\n                                                                     null, null, 0, 0, new Vector4(1f, 1f, 1f, 0f), 0f, 0f, 0f, 0f, 0, 0, 0);\n            rightWeapon2InventoryListBox.DisplayHighlight = false;\n            m_rightWeaponListboxes.Insert(0, rightWeapon2InventoryListBox);\n            rightWeapon2InventoryListBox.AddRow();\n            InitializeListboxDragAndAddToControls(rightWeapon2InventoryListBox);\n            listboxToDrop.Add(rightWeapon2InventoryListBox);\n            m_listboxDropConditions.Add(rightWeapon2InventoryListBox,\n                                        ii =>\n                                        ii.ObjectBuilderType == MyMwcObjectBuilderTypeEnum.SmallShip_Weapon &&\n                                        new int[] { 9, 10, 11, 12, 13, 14, 15, 16, 18 }.Contains(ii.ObjectBuilderId.Value) == false);\n\n            var rightWeapon3InventoryListBox = new MyGuiControlListbox(this,\n                                                                     new Vector2(0.1581f, 0.2303f),\n                                                                     MyGuiConstants.LISTBOX_SMALL_SIZE,\n                                                                     new Vector4(1f, 1f, 1f, 0f),\n                                                                     MyTextsWrapper.Get(MyTextsWrapperEnum.RighWeapons),\n                                                                     MyGuiConstants.INVENTORY_LABEL_TEXT_SCALE,\n                                                                     1, 1,\n                                                                     1, true, false, false,\n                                                                     null, m_inventoryItemTexture,\n                                                                     null, null, 0, 0, new Vector4(1f, 1f, 1f, 0f), 0f, 0f, 0f, 0f, 0, 0, 0);\n            rightWeapon3InventoryListBox.DisplayHighlight = false;\n            m_rightWeaponListboxes.Insert(0, rightWeapon3InventoryListBox);\n            rightWeapon3InventoryListBox.AddRow();\n            InitializeListboxDragAndAddToControls(rightWeapon3InventoryListBox);\n            listboxToDrop.Add(rightWeapon3InventoryListBox);\n            m_listboxDropConditions.Add(rightWeapon3InventoryListBox,\n                                        ii =>\n                                        ii.ObjectBuilderType == MyMwcObjectBuilderTypeEnum.SmallShip_Weapon &&\n                                        new int[] { 9, 10, 11, 12, 13, 14, 15, 16, 18 }.Contains(ii.ObjectBuilderId.Value) == false);\n\n            var rightWeapon4InventoryListBox = new MyGuiControlListbox(this,\n                                                                     new Vector2(0.2293f, 0.2303f),\n                                                                     MyGuiConstants.LISTBOX_SMALL_SIZE,\n                                                                     new Vector4(1f, 1f, 1f, 0f),\n                                                                     MyTextsWrapper.Get(MyTextsWrapperEnum.RighWeapons),\n                                                                     MyGuiConstants.INVENTORY_LABEL_TEXT_SCALE,\n                                                                     1, 1,\n                                                                     1, true, false, false,\n                                                                     null, m_inventoryItemTexture,\n                                                                     null, null, 0, 0, new Vector4(1f, 1f, 1f, 0f), 0f, 0f, 0f, 0f, 0, 0, 0);\n            rightWeapon4InventoryListBox.DisplayHighlight = false;\n            m_rightWeaponListboxes.Insert(0, rightWeapon4InventoryListBox);\n            rightWeapon4InventoryListBox.AddRow();\n            InitializeListboxDragAndAddToControls(rightWeapon4InventoryListBox);\n            listboxToDrop.Add(rightWeapon4InventoryListBox);\n            m_listboxDropConditions.Add(rightWeapon4InventoryListBox,\n                                        ii =>\n                                        ii.ObjectBuilderType == MyMwcObjectBuilderTypeEnum.SmallShip_Weapon &&\n                                        new int[] { 9, 10, 11, 12, 13, 14, 15, 16, 18 }.Contains(ii.ObjectBuilderId.Value) == false);\n\n            var rightWeapon5InventoryListBox = new MyGuiControlListbox(this,\n                                                                     new Vector2(0.2997f, 0.2303f),\n                                                                     MyGuiConstants.LISTBOX_SMALL_SIZE,\n                                                                     new Vector4(1f, 1f, 1f, 0f),\n                                                                     MyTextsWrapper.Get(MyTextsWrapperEnum.RighWeapons),\n                                                                     MyGuiConstants.INVENTORY_LABEL_TEXT_SCALE,\n                                                                     1, 1,\n                                                                     1, true, false, false,\n                                                                     null, m_inventoryItemTexture,\n                                                                     null, null, 0, 0, new Vector4(1f, 1f, 1f, 0f), 0f, 0f, 0f, 0f, 0, 0, 0);\n            rightWeapon5InventoryListBox.DisplayHighlight = false;\n            m_rightWeaponListboxes.Insert(0, rightWeapon5InventoryListBox);\n            rightWeapon5InventoryListBox.AddRow();\n            InitializeListboxDragAndAddToControls(rightWeapon5InventoryListBox);\n            listboxToDrop.Add(rightWeapon5InventoryListBox);\n            m_listboxDropConditions.Add(rightWeapon5InventoryListBox,\n                                        ii =>\n                                        ii.ObjectBuilderType == MyMwcObjectBuilderTypeEnum.SmallShip_Weapon &&\n                                        new int[] { 9, 10, 11, 12, 13, 14, 15, 16, 18 }.Contains(ii.ObjectBuilderId.Value) == false);\n\n            // Engine inventory label\n            Controls.Add(new MyGuiControlLabel(this, new Vector2(0f, 0.1846f),\n                                               null, MyTextsWrapperEnum.Engine, MyGuiConstants.LABEL_TEXT_COLOR,\n                                               MyGuiConstants.INVENTORY_LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, MyGuiManager.GetFontMinerWarsBlue()));\n            // Engine inventory listbox\n            m_engineInventoryListBox = new MyGuiControlListbox(this,\n                                                               new Vector2(-0.0042f, 0.1256f),\n                                                               MyGuiConstants.LISTBOX_SMALL_SIZE, new Vector4(1f, 1f, 1f, 0f),\n                                                               MyTextsWrapper.Get(MyTextsWrapperEnum.Engine),\n                                                               MyGuiConstants.INVENTORY_LABEL_TEXT_SCALE,\n                                                               1, 1, 1, true, false, false,\n                                                               null, m_inventoryItemTexture,\n                                                               null, null, 0, 0, new Vector4(1f, 1f, 1f, 0f), 0f, 0f, 0f, 0f, 0, 0, 0);\n            m_engineInventoryListBox.DisplayHighlight = false;\n            m_engineInventoryListBox.AddRow();\n            InitializeListboxDragAndAddToControls(m_engineInventoryListBox);\n            listboxToDrop.Add(m_engineInventoryListBox);\n            m_listboxDropConditions.Add(m_engineInventoryListBox,\n                                        ii => ii.ObjectBuilderType == MyMwcObjectBuilderTypeEnum.SmallShip_Engine);\n\n            // Back universal launcher inventory label\n            Controls.Add(new MyGuiControlLabel(this, new Vector2(-0.0626f, 0.3374f),\n                                               null, MyTextsWrapperEnum.WeaponUniversalLauncherBackTitle, MyGuiConstants.LABEL_TEXT_COLOR,\n                                               MyGuiConstants.INVENTORY_LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, MyGuiManager.GetFontMinerWarsBlue()));\n\n            // Back universal launcher inventory label\n            Controls.Add(new MyGuiControlLabel(this, new Vector2(-0.0626f, 0.3531f),\n                                               null, MyTextsWrapperEnum.WeaponUniversalLauncher, MyGuiConstants.LABEL_TEXT_COLOR,\n                                               MyGuiConstants.INVENTORY_LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, MyGuiManager.GetFontMinerWarsBlue()));\n\n\n            // Back universal launcher inventory listbox\n            m_backUniversalLauncherInventoryListBox = new MyGuiControlListbox(this,\n                                                                              new Vector2(-0.0605f, 0.2755f),\n                                                                              MyGuiConstants.LISTBOX_SMALL_SIZE,\n                                                                              new Vector4(1f, 1f, 1f, 0f),\n                                                                              MyTextsWrapper.Get(MyTextsWrapperEnum.WeaponUniversalLauncherBack),\n                                                                              MyGuiConstants.INVENTORY_LABEL_TEXT_SCALE,\n                                                                              1, 1, 1, true, false, false,\n                                                                              null, m_inventoryItemTexture,\n                                                                              null, null, 0, 0, new Vector4(1f, 1f, 1f, 0f), 0f, 0f, 0f, 0f, 0, 0, 0);\n            m_backUniversalLauncherInventoryListBox.DisplayHighlight = false;\n            m_backUniversalLauncherInventoryListBox.AddRow();\n            InitializeListboxDragAndAddToControls(m_backUniversalLauncherInventoryListBox);\n            listboxToDrop.Add(m_backUniversalLauncherInventoryListBox);\n            m_listboxDropConditions.Add(m_backUniversalLauncherInventoryListBox,\n                                        ii =>\n                                        ii.ObjectBuilderType == MyMwcObjectBuilderTypeEnum.SmallShip_Weapon &&\n                                        ii.ObjectBuilderId.Value == 9);\n\n            // Armor inventory label\n            Controls.Add(new MyGuiControlLabel(this, new Vector2(0.0573f, 0.3374f),\n                                               null, MyTextsWrapperEnum.Armor, MyGuiConstants.LABEL_TEXT_COLOR,\n                                               MyGuiConstants.INVENTORY_LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, MyGuiManager.GetFontMinerWarsBlue()));\n            // Armor inventory listbox\n            m_armorInventoryListBox = new MyGuiControlListbox(this,\n                                                              new Vector2(0.0555f, 0.2755f),\n                                                              MyGuiConstants.LISTBOX_SMALL_SIZE, new Vector4(1f, 1f, 1f, 0f),\n                                                              MyTextsWrapper.Get(MyTextsWrapperEnum.Armor),\n                                                              MyGuiConstants.INVENTORY_LABEL_TEXT_SCALE,\n                                                              1, 1, 1, true, false, false,\n                                                              null, m_inventoryItemTexture,\n                                                              null, null, 0, 0, new Vector4(1f, 1f, 1f, 0f), 0f, 0f, 0f, 0f, 0, 0, 0);\n            m_armorInventoryListBox.DisplayHighlight = false;\n            m_armorInventoryListBox.AddRow();\n            InitializeListboxDragAndAddToControls(m_armorInventoryListBox);\n            listboxToDrop.Add(m_armorInventoryListBox);\n            m_listboxDropConditions.Add(m_armorInventoryListBox,\n                                        ii => ii.ObjectBuilderType == MyMwcObjectBuilderTypeEnum.SmallShip_Armor);\n\n            // Front universal launcher inventory label\n            Controls.Add(new MyGuiControlLabel(this, new Vector2(0f, 0.0323f),\n                                               null, MyTextsWrapperEnum.WeaponUniversalLauncherFrontTitle, MyGuiConstants.LABEL_TEXT_COLOR,\n                                               MyGuiConstants.INVENTORY_LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, MyGuiManager.GetFontMinerWarsBlue()));\n\n            // Front universal launcher inventory label\n            Controls.Add(new MyGuiControlLabel(this, new Vector2(0f, 0.0462f),\n                                               null, MyTextsWrapperEnum.WeaponUniversalLauncher, MyGuiConstants.LABEL_TEXT_COLOR,\n                                               MyGuiConstants.INVENTORY_LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, MyGuiManager.GetFontMinerWarsBlue()));\n\n            // Front universal launcher inventory listbox\n            m_frontUniversalLauncherInventoryListBox = new MyGuiControlListbox(this,\n                                                                               new Vector2(-0.0039f, -0.0287f),\n                                                                               MyGuiConstants.LISTBOX_SMALL_SIZE, new Vector4(1f, 1f, 1f, 0f),\n                                                                               MyTextsWrapper.Get(MyTextsWrapperEnum.WeaponUniversalLauncherFront),\n                                                                               MyGuiConstants.INVENTORY_LABEL_TEXT_SCALE,\n                                                                               1, 1, 1, true, false, false,\n                                                                               null, m_inventoryItemTexture,\n                                                                               null, null, 0, 0, new Vector4(1f, 1f, 1f, 0f), 0f, 0f, 0f, 0f, 0, 0, 0);\n            m_frontUniversalLauncherInventoryListBox.DisplayHighlight = false;\n            m_frontUniversalLauncherInventoryListBox.AddRow();\n            InitializeListboxDragAndAddToControls(m_frontUniversalLauncherInventoryListBox);\n            listboxToDrop.Add(m_frontUniversalLauncherInventoryListBox);\n            m_listboxDropConditions.Add(m_frontUniversalLauncherInventoryListBox,\n                                        ii =>\n                                        ii.ObjectBuilderType == MyMwcObjectBuilderTypeEnum.SmallShip_Weapon &&\n                                        ii.ObjectBuilderId.Value == 10);\n\n            // Drill inventory label\n            Controls.Add(new MyGuiControlLabel(this, new Vector2(-0.0920f, 0.0547f),\n                                               null, MyTextsWrapperEnum.Drill, MyGuiConstants.LABEL_TEXT_COLOR,\n                                               MyGuiConstants.INVENTORY_LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, MyGuiManager.GetFontMinerWarsBlue()));\n\n            Controls.Add(new MyGuiControlLabel(this, new Vector2(-0.0920f, 0.0715f),\n                                   null, MyTextsWrapperEnum.device, MyGuiConstants.LABEL_TEXT_COLOR,\n                                   MyGuiConstants.INVENTORY_LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, MyGuiManager.GetFontMinerWarsBlue()));\n            // Drill inventory listbox\n            m_drillInventoryListBox = new MyGuiControlListbox(this,\n                                                              new Vector2(-0.0944f, -0.0044f),\n                                                              MyGuiConstants.LISTBOX_SMALL_SIZE, new Vector4(1f, 1f, 1f, 0f),\n                                                              MyTextsWrapper.Get(MyTextsWrapperEnum.Drill),\n                                                              MyGuiConstants.INVENTORY_LABEL_TEXT_SCALE,\n                                                              1, 1, 1, true, false, false,\n                                                              null, m_inventoryItemTexture,\n                                                              null, null, 0, 0, new Vector4(1f, 1f, 1f, 0f), 0f, 0f, 0f, 0f, 0, 0, 0);\n            m_drillInventoryListBox.DisplayHighlight = false;\n            m_drillInventoryListBox.AddRow();\n            InitializeListboxDragAndAddToControls(m_drillInventoryListBox);\n            listboxToDrop.Add(m_drillInventoryListBox);\n            m_listboxDropConditions.Add(m_drillInventoryListBox,\n                                        ii =>\n                                        ii.ObjectBuilderType == MyMwcObjectBuilderTypeEnum.SmallShip_Weapon &&\n                                        new int[] { 12, 13, 14, 15, 16, 18 }.Contains(ii.ObjectBuilderId.Value));\n\n            // Harvesting tool inventory label\n            Controls.Add(new MyGuiControlLabel(this, new Vector2(0.0861f, 0.0559f),\n                                               null, MyTextsWrapperEnum.Harvester, MyGuiConstants.LABEL_TEXT_COLOR,\n                                               MyGuiConstants.INVENTORY_LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, MyGuiManager.GetFontMinerWarsBlue()));\n            // Harvesting tool inventory label\n            Controls.Add(new MyGuiControlLabel(this, new Vector2(0.0861f, 0.0703f),\n                                               null, MyTextsWrapperEnum.device, MyGuiConstants.LABEL_TEXT_COLOR,\n                                               MyGuiConstants.INVENTORY_LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, MyGuiManager.GetFontMinerWarsBlue()));\n            // Harvesting tool inventory listbox\n            m_harvestingToolInventoryListBox = new MyGuiControlListbox(this,\n                                                                       new Vector2(0.0843f, -0.0044f),\n                                                                       MyGuiConstants.LISTBOX_SMALL_SIZE, new Vector4(1f, 1f, 1f, 0f),\n                                                                       MyTextsWrapper.Get(MyTextsWrapperEnum.WeaponHarvestingDevice),\n                                                                       MyGuiConstants.INVENTORY_LABEL_TEXT_SCALE,\n                                                                       1, 1, 1, true, false, false,\n                                                                       null, m_inventoryItemTexture,\n                                                                       null, null, 0, 0, new Vector4(1f, 1f, 1f, 0f), 0f, 0f, 0f, 0f, 0, 0, 0);\n            m_harvestingToolInventoryListBox.DisplayHighlight = false;\n            m_harvestingToolInventoryListBox.AddRow();\n            InitializeListboxDragAndAddToControls(m_harvestingToolInventoryListBox);\n            listboxToDrop.Add(m_harvestingToolInventoryListBox);\n            m_listboxDropConditions.Add(m_harvestingToolInventoryListBox,\n                                        ii =>\n                                        ii.ObjectBuilderType == MyMwcObjectBuilderTypeEnum.SmallShip_Weapon &&\n                                        ii.ObjectBuilderId.Value == 11);\n\n            #endregion\n\n            // money information\n            m_playersMoneyLabel = new MyGuiControlLabel(this, new Vector2(0.355f, 0.1450f), null,\n                                                        MyTextsWrapper.Get(MyTextsWrapperEnum.Cash),\n                                                        MyGuiConstants.LABEL_TEXT_COLOR,\n                                                        MyGuiConstants.INVENTORY_LABEL_TEXT_SCALE * 1.2f,\n                                                        MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_CENTER,\n                                                        MyGuiManager.GetFontMinerWarsBlue());\n            Controls.Add(m_playersMoneyLabel);            \n\n\n            m_okButton = new MyGuiControlButton(this, new Vector2(0f, 0.4086f), MyGuiConstants.OK_BUTTON_SIZE,\n                                   MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                                   MyGuiManager.GetInventoryScreenButtonTexture(), null, null, MyTextsWrapperEnum.Close,\n                                   MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, MyGuiControlButtonTextAlignment.CENTERED, OnOkClick,\n                                   true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true, true);\n            Controls.Add(m_okButton);\n\n\n\n\n            if (!m_tradeForMoney)\n            {\n                //Take all button\n                m_ButtonTakeAll = new MyGuiControlButton(this, new Vector2(-0.3095f, 0.1455f), new Vector2(0.1532f, 0.063f),\n                           MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                           MyGuiManager.GetInventoryScreenButtonTextureTakeAll(), null, null, MyTextsWrapperEnum.TakeAll,\n                           MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE_SMALLER, MyGuiControlButtonTextAlignment.CENTERED, OnTakeAllClick,\n                           true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true, true);\n                Controls.Add(m_ButtonTakeAll);\n            }\n\n            if (m_inventoryScreenType == MyGuiScreenInventoryType.GodEditor) \n            {\n                m_removeAll = new MyGuiControlButton(this, new Vector2(0.29f, -0.4f), new Vector2(0.1532f, 0.063f),\n                       MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                       MyGuiManager.GetInventoryScreenButtonTextureTakeAll(), null, null, MyTextsWrapperEnum.RemoveAll,\n                       MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE_SMALLER, MyGuiControlButtonTextAlignment.CENTERED, OnRemoveAllClick,\n                       true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true, true);\n                Controls.Add(m_removeAll);\n            }\n\n            #region other side's inventory\n\n            if (m_otherSideInventoryBuilder != null)\n            {\n                // Other side's inventory label\n                Controls.Add(new MyGuiControlLabel(this,\n                                                   new Vector2(-0.4126f, -0.357f), null,\n                                                   otherSideInventoryName, MyGuiConstants.LABEL_TEXT_COLOR,\n                                                   MyGuiConstants.INVENTORY_LABEL_TEXT_SCALE,\n                                                   MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER,\n                                                   MyGuiManager.GetFontMinerWarsBlue()));\n\n                // Ship's inventory capacity label\n                m_otherSideInventoryCapacityLabel = new MyGuiControlLabel(this,\n                                                                     new Vector2(-0.215f, -0.357f), null, MyTextsWrapperEnum.InventoryCapacityLabel,\n                                                                     MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.INVENTORY_LABEL_TEXT_SCALE,\n                                                                     MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_CENTER);\n                Controls.Add(m_otherSideInventoryCapacityLabel);\n                \n                // Other side inventory listbox\n                m_otherSideInventoryListBox = new MyGuiControlListbox(this,\n                                                                      new Vector2(-0.2925f, -0.1425f),\n                                                                      MyGuiConstants.LISTBOX_SMALL_SIZE + new Vector2(0, 0.003f),\n                                                                      new Vector4(1f, 1f, 1f, 0f),\n                                                                      null,\n                                                                      MyGuiConstants.INVENTORY_LABEL_TEXT_SCALE,\n                                                                      INVENTORY_COLUMNS, INVENTORY_DISPLAY_ROWS,\n                                                                      INVENTORY_COLUMNS, true, true, false,\n                                                                      null,\n                                                                      null,\n                                                                      m_inventoryScrollBarTexture,\n                                                                      null, 0, 0, new Vector4(1f, 1f, 1f, 0.0f), 0.03f, 0, 0, 0, -0.005f, -0.01f, -0.0155f, -0.017f);\n                InitializeListboxDragAndAddToControls(m_otherSideInventoryListBox);\n                listboxToDrop.Add(m_otherSideInventoryListBox);\n                m_listboxDropConditions.Add(m_otherSideInventoryListBox, ii => true);                \n\n                m_shipInventoryListBox.ItemDoubleClick += OnShipItemDoubleClick;\n                m_otherSideInventoryListBox.ItemDoubleClick += OnOtherSideItemDoubleClick;\n            }\n            else\n            {\n                m_otherSideInventoryListBox = new MyGuiControlListbox(this,\n                                                                      new Vector2(-0.2925f, -0.1425f),\n                                                                      MyGuiConstants.LISTBOX_SMALL_SIZE + new Vector2(0, 0.003f),\n                                                                      new Vector4(1f, 1f, 1f, 0f),\n                                                                      otherSideInventoryName,\n                                                                      MyGuiConstants.INVENTORY_LABEL_TEXT_SCALE,\n                                                                      INVENTORY_COLUMNS, INVENTORY_DISPLAY_ROWS,\n                                                                      INVENTORY_COLUMNS, true, true, false,\n                                                                      null,\n                                                                      null,\n                                                                      m_inventoryScrollBarTexture,\n                                                                      null, 0, 0, new Vector4(1f, 1f, 1f, 0.0f), 0.03f, 0, 0, 0, -0.005f, -0.01f, -0.0155f, -0.017f);\n            }\n\n            //Filters All Items\n\n            const float delta = 0.028f;\n            var position = new Vector2(-0.2402f, 0.0684f);\n            m_sortAll = new MyGuiControlCheckbox(this, position, MyGuiConstants.INVENTORY_FILTER_BUTTON_SIZE,\n                                             MyGuiManager.GetInventoryFilterSortAllOff(),\n                                             MyGuiManager.GetInventoryFilterSortAllOn(),\n                                             MyTextsWrapper.Get(MyTextsWrapperEnum.InventoryShowAll), true, MyGuiConstants.BACK_BUTTON_TEXT_COLOR, true, null, MyGuiConstants.INVENTORY_FILTER_BUTTON_INNER_SIZE);            \n            Controls.Add(m_sortAll);\n            position.X -= delta;\n\n            m_sortGods = new MyGuiControlCheckbox(this, position, MyGuiConstants.INVENTORY_FILTER_BUTTON_SIZE,\n                                             MyGuiManager.GetInventoryFilterSortGodsOff(),\n                                             MyGuiManager.GetInventoryFilterSortGodsOn(),\n                                             MyTextsWrapper.Get(MyTextsWrapperEnum.InventoryShowGods), false, MyGuiConstants.BACK_BUTTON_TEXT_COLOR, true, null, MyGuiConstants.INVENTORY_FILTER_BUTTON_INNER_SIZE);            \n            Controls.Add(m_sortGods);\n            position.X -= delta;\n\n            m_sortOres = new MyGuiControlCheckbox(this, position, MyGuiConstants.INVENTORY_FILTER_BUTTON_SIZE,\n                                             MyGuiManager.GetInventoryFilterSortOresOff(),\n                                             MyGuiManager.GetInventoryFilterSortOresOn(),\n                                             MyTextsWrapper.Get(MyTextsWrapperEnum.InventoryShowOres), false, MyGuiConstants.BACK_BUTTON_TEXT_COLOR, true, null, MyGuiConstants.INVENTORY_FILTER_BUTTON_INNER_SIZE);            \n            Controls.Add(m_sortOres);\n            position.X -= delta;\n\n            m_sortConsumables = new MyGuiControlCheckbox(this, position, MyGuiConstants.INVENTORY_FILTER_BUTTON_SIZE,\n                                             MyGuiManager.GetInventoryFilterSortConsumablesOff(),\n                                             MyGuiManager.GetInventoryFilterSortConsumablesOn(),\n                                             MyTextsWrapper.Get(MyTextsWrapperEnum.InventoryShowConsumables), false, MyGuiConstants.BACK_BUTTON_TEXT_COLOR, true, null, MyGuiConstants.INVENTORY_FILTER_BUTTON_INNER_SIZE);\n            Controls.Add(m_sortConsumables);            \n            position.X -= delta;\n\n            m_sortEquipment = new MyGuiControlCheckbox(this, position, MyGuiConstants.INVENTORY_FILTER_BUTTON_SIZE,\n                                             MyGuiManager.GetInventoryFilterSortEquipmentOff(),\n                                             MyGuiManager.GetInventoryFilterSortEquipmentOn(),\n                                             MyTextsWrapper.Get(MyTextsWrapperEnum.InventoryShowEquipment), false, MyGuiConstants.BACK_BUTTON_TEXT_COLOR, true, null, MyGuiConstants.INVENTORY_FILTER_BUTTON_INNER_SIZE);\n            Controls.Add(m_sortEquipment);            \n            position.X -= delta;\n\n            m_sortWeapons = new MyGuiControlCheckbox(this, position, MyGuiConstants.INVENTORY_FILTER_BUTTON_SIZE,\n                                             MyGuiManager.GetInventoryFilterSortWeaponsOff(),\n                                             MyGuiManager.GetInventoryFilterSortWeaponsOn(),\n                                             MyTextsWrapper.Get(MyTextsWrapperEnum.InventoryShowWeapons), false, MyGuiConstants.BACK_BUTTON_TEXT_COLOR, true, null, MyGuiConstants.INVENTORY_FILTER_BUTTON_INNER_SIZE);            \n            Controls.Add(m_sortWeapons);\n\n            if (m_otherSideInventoryBuilder != null)\n            {\n                m_sortAll.OnCheck += OnFilterInventorySortClick;\n                m_sortGods.OnCheck += OnFilterInventorySortClick;\n                m_sortOres.OnCheck += OnFilterInventorySortClick;\n                m_sortConsumables.OnCheck += OnFilterInventorySortClick;\n                m_sortEquipment.OnCheck += OnFilterInventorySortClick;\n                m_sortWeapons.OnCheck += OnFilterInventorySortClick;\n            }\n            else \n            {\n                m_sortAll.Checked = false;\n                m_sortAll.Enabled = false;\n                m_sortGods.Enabled = false;\n                m_sortOres.Enabled = false;\n                m_sortConsumables.Enabled = false;\n                m_sortEquipment.Enabled = false;\n                m_sortWeapons.Enabled = false;\n            }\n\n            //Filters My Inventory\n            position = new Vector2(0.373f, 0.0684f);\n\n            m_sortAllMy = new MyGuiControlCheckbox(this, position, MyGuiConstants.INVENTORY_FILTER_BUTTON_SIZE,\n                                             MyGuiManager.GetInventoryFilterSortAllOff(),\n                                             MyGuiManager.GetInventoryFilterSortAllOn(),\n                                             MyTextsWrapper.Get(MyTextsWrapperEnum.InventoryShowAll), true, MyGuiConstants.BACK_BUTTON_TEXT_COLOR, true, null, MyGuiConstants.INVENTORY_FILTER_BUTTON_INNER_SIZE);\n            Controls.Add(m_sortAllMy);\n            m_sortAllMy.OnCheck += OnFilterInventoryMySortClick;\n            position.X -= delta;\n\n            m_sortGodsMy = new MyGuiControlCheckbox(this, position, MyGuiConstants.INVENTORY_FILTER_BUTTON_SIZE,\n                                             MyGuiManager.GetInventoryFilterSortGodsOff(),\n                                             MyGuiManager.GetInventoryFilterSortGodsOn(),\n                                             MyTextsWrapper.Get(MyTextsWrapperEnum.InventoryShowGods), false, MyGuiConstants.BACK_BUTTON_TEXT_COLOR, true, null, MyGuiConstants.INVENTORY_FILTER_BUTTON_INNER_SIZE);\n            m_sortGodsMy.OnCheck += OnFilterInventoryMySortClick;\n            Controls.Add(m_sortGodsMy);\n            position.X -= delta;\n\n            m_sortOresMy = new MyGuiControlCheckbox(this, position, MyGuiConstants.INVENTORY_FILTER_BUTTON_SIZE,\n                                             MyGuiManager.GetInventoryFilterSortOresOff(),\n                                             MyGuiManager.GetInventoryFilterSortOresOn(),\n                                             MyTextsWrapper.Get(MyTextsWrapperEnum.InventoryShowOres), false, MyGuiConstants.BACK_BUTTON_TEXT_COLOR, true, null, MyGuiConstants.INVENTORY_FILTER_BUTTON_INNER_SIZE);\n            Controls.Add(m_sortOresMy);\n            m_sortOresMy.OnCheck += OnFilterInventoryMySortClick;\n            position.X -= delta;\n\n            m_sortConsumablesMy = new MyGuiControlCheckbox(this, position, MyGuiConstants.INVENTORY_FILTER_BUTTON_SIZE,\n                                             MyGuiManager.GetInventoryFilterSortConsumablesOff(),\n                                             MyGuiManager.GetInventoryFilterSortConsumablesOn(),\n                                             MyTextsWrapper.Get(MyTextsWrapperEnum.InventoryShowConsumables), false, MyGuiConstants.BACK_BUTTON_TEXT_COLOR, true, null, MyGuiConstants.INVENTORY_FILTER_BUTTON_INNER_SIZE);\n            m_sortConsumablesMy.OnCheck += OnFilterInventoryMySortClick;\n            Controls.Add(m_sortConsumablesMy);\n            position.X -= delta;\n\n            m_sortEquipmentMy = new MyGuiControlCheckbox(this, position, MyGuiConstants.INVENTORY_FILTER_BUTTON_SIZE,\n                                             MyGuiManager.GetInventoryFilterSortEquipmentOff(),\n                                             MyGuiManager.GetInventoryFilterSortEquipmentOn(),\n                                             MyTextsWrapper.Get(MyTextsWrapperEnum.InventoryShowEquipment), false, MyGuiConstants.BACK_BUTTON_TEXT_COLOR, true, null, MyGuiConstants.INVENTORY_FILTER_BUTTON_INNER_SIZE);\n            m_sortEquipmentMy.OnCheck += OnFilterInventoryMySortClick;\n            Controls.Add(m_sortEquipmentMy);\n            position.X -= delta;\n\n            m_sortWeaponsMy = new MyGuiControlCheckbox(this, position, MyGuiConstants.INVENTORY_FILTER_BUTTON_SIZE,\n                                             MyGuiManager.GetInventoryFilterSortWeaponsOff(),\n                                             MyGuiManager.GetInventoryFilterSortWeaponsOn(),\n                                             MyTextsWrapper.Get(MyTextsWrapperEnum.InventoryShowWeapons), false, MyGuiConstants.BACK_BUTTON_TEXT_COLOR, true, null, MyGuiConstants.INVENTORY_FILTER_BUTTON_INNER_SIZE);\n            m_sortWeaponsMy.OnCheck += OnFilterInventoryMySortClick;\n            Controls.Add(m_sortWeaponsMy);\n\n\n\n            #endregion\n\n            #region combobox for select ship to customization\n            if (m_smallShipsBuilders.Count > 1 && m_inventoryScreenType != MyGuiScreenInventoryType.Game)\n            {\n                m_shipsCombobox = new MyGuiControlCombobox(this, new Vector2(0f, topLeft.Y), MyGuiControlPreDefinedSize.MEDIUM, MyGuiConstants.COMBOBOX_BACKGROUND_COLOR,\n                        MyGuiConstants.COMBOBOX_TEXT_SCALE);\n                m_shipsCombobox.OnSelect += OnComboboxSelectedItemChanged;\n                Controls.Add(m_shipsCombobox);                \n            }\n\n            Vector2 shipButtonSize = new Vector2(128 / 1600f, 512 / 1200f) * 0.5f;\n            m_previousShipButton = new MyGuiControlButton(this, new Vector2(-0.144f, -0.256f), shipButtonSize, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                               MyGuiManager.GetInventoryPreviousShip(), null, null, MyTextsWrapperEnum.EmptyDescription,\n                               Vector4.Zero, 0f, MyGuiControlButtonTextAlignment.CENTERED, OnPreviousShipButtonClick,\n                               false, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true, true);\n            Controls.Add(m_previousShipButton);\n\n            m_nextShipButton = new MyGuiControlButton(this, new Vector2(0.144f, -0.256f), shipButtonSize, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                               MyGuiManager.GetInventoryNextShip(), null, null, MyTextsWrapperEnum.EmptyDescription,\n                               Vector4.Zero, 0f, MyGuiControlButtonTextAlignment.CENTERED, OnNextShipButtonClick,\n                               false, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true, true);\n            Controls.Add(m_nextShipButton);\n            #endregion\n\n            // ship's name\n            m_shipNameLabel = new MyGuiControlLabel(this, \n                                                    new Vector2(0f, -0.1156f), null, new StringBuilder(), MyGuiConstants.LABEL_TEXT_COLOR, \n                                                    MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER);\n            Controls.Add(m_shipNameLabel);\n\n            // initialize drag and drop\n            m_dragAndDrop = new MyGuiControlListboxDragAndDrop(this, listboxToDrop, MyGuiControlPreDefinedSize.SMALL,\n                                                               MyGuiConstants.DRAG_AND_DROP_BACKGROUND_COLOR,\n                                                               MyGuiConstants.DRAG_AND_DROP_TEXT_COLOR,\n                                                               MyGuiConstants.INVENTORY_LABEL_TEXT_SCALE,\n                                                               MyGuiConstants.DRAG_AND_DROP_TEXT_OFFSET, true);\n            m_dragAndDrop.ListboxItemDropped += OnDrop;\n            m_dragAndDrop.DrawBackgroundTexture = false;\n            Controls.Add(m_dragAndDrop);\n        }\n\n        private void OnComboboxSelectedItemChanged()\n        {            \n            SwitchToShip(m_shipsCombobox.GetSelectedIndex());\n        }\n\n        private void OnPreviousShipButtonClick(MyGuiControlButton sender) \n        {\n            int index = m_currentShipBuilderIndex - 1;\n            if (index < 0) \n            {\n                index = m_smallShipsBuilders.Count - 1;\n            }\n            SwitchToShip(index);\n        }\n\n        private void OnNextShipButtonClick(MyGuiControlButton sender)\n        {\n            int index = m_currentShipBuilderIndex + 1;\n            if (index > m_smallShipsBuilders.Count - 1)\n            {\n                index = 0;\n            }\n            SwitchToShip(index);\n        }\n\n        private void SwitchToShip(int index) \n        {\n            if (!m_isTransferingInProgress)\n            {\n                // save changes to current ship's ids from listboxes\n                SaveIDsFromShipCustomizationListboxes(m_currentShipBuilderIndex);\n                LoadShipInventory(index);\n            }\n        }\n\n        private void LoadShipInventory(int index) \n        {\n            m_currentShipBuilderIndex = index;\n\n            if (m_shipsCombobox != null)\n            {\n                m_shipsCombobox.SelectItemByIndex(m_currentShipBuilderIndex);\n            }\n\n            // load listboxes for new selected ship's ids\n            FillShipCustomizationListboxes(m_currentShipBuilderIndex);\n\n            if (m_resetWasAnythingTrasferedAfterComboboxChanged)\n            {\n                m_wasAnythingTrasfered = false;\n            }\n\n            m_shipTexture = GetShipTexture();\n            m_shipPanel.SetBackgroundTexture(m_shipTexture);\n            m_shipNameLabel.UpdateText(m_smallShipsBuilders[m_currentShipBuilderIndex].Name.ToString());\n        }\n\n        private MyTexture2D GetShipTexture() \n        {\n            MyGuiSmallShipHelperSmallShip smallShipHelper = MyGuiObjectBuilderHelpers.GetGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip, (int)m_smallShipsBuilders[m_currentShipBuilderIndex].Builder.ShipType) as MyGuiSmallShipHelperSmallShip;\n            return smallShipHelper.Preview;\n        }\n\n        protected override void Canceling()\n        {\n            //base.Canceling();\n\n            OnOkClick(null);\n        }\n\n        private int CreateInventoryItemAddToRepository(MyMwcObjectBuilder_InventoryItem inventoryItem, MyMwcObjectBuilder_Inventory owner) \n        {\n            MyInventoryItem item = MyInventory.CreateInventoryItemFromInventoryItemObjectBuilder(inventoryItem);\n            item.Owner = owner;\n            return m_itemsRepository.AddItem(item);\n        }\n\n        private int CreateInventoryItemAddToRepository(MyMwcObjectBuilder_Base builder, float amount, MyMwcObjectBuilder_Inventory owner)\n        {\n            MyInventoryItem item = MyInventory.CreateInventoryItemFromObjectBuilder(builder, amount);\n            item.Owner = owner;\n            return m_itemsRepository.AddItem(item);\n        }\n\n        private int CreateInventoryItemAddToRepository(MyMwcObjectBuilder_Base builder, MyMwcObjectBuilder_Inventory owner)\n        {\n            return CreateInventoryItemAddToRepository(builder, 1f, owner);\n        }\n\n        private MyMwcObjectBuilder_InventoryItem GetInventoryItemObjectBuilderFromRepository(int key)\n        {\n            MyInventoryItem inventoryItem = m_itemsRepository.GetItem(key);\n            return inventoryItem.GetObjectBuilder();\n        }\n\n        private MyMwcObjectBuilder_Base GetObjectBuilderFromRepository(int key)\n        {\n            return m_itemsRepository.GetItem(key).GetInventoryItemObjectBuilder(false);\n        }\n\n        private MySmallShipInventoryItemIDs GetInventoryItemIDsFromObjectBuilder(MyMwcObjectBuilder_SmallShip smallShipBuilder) \n        {\n            MySmallShipInventoryItemIDs shipInventoryItemsIDs = new MySmallShipInventoryItemIDs();\n\n            // inventory items\n            if (smallShipBuilder.Inventory != null && smallShipBuilder.Inventory.InventoryItems != null)\n            {\n                foreach (MyMwcObjectBuilder_InventoryItem inventoryItem in smallShipBuilder.Inventory.InventoryItems)\n                {\n                    shipInventoryItemsIDs.Inventory.Add(CreateInventoryItemAddToRepository(inventoryItem, smallShipBuilder.Inventory));\n                }\n            }\n\n            Debug.Assert(smallShipBuilder.Inventory != null, \"smallShipBuilder.Inventory != null\");\n\n            // weapons\n            if (smallShipBuilder.Weapons != null)\n            {\n                foreach (MyMwcObjectBuilder_SmallShip_Weapon weapon in smallShipBuilder.Weapons)\n                {\n                    if (weapon.WeaponType == MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Crusher ||\n                        weapon.WeaponType == MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Laser ||\n                        weapon.WeaponType == MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Nuclear ||\n                        weapon.WeaponType == MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Pressure ||\n                        weapon.WeaponType == MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Saw ||\n                        weapon.WeaponType == MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Thermal)\n                    {\n                        shipInventoryItemsIDs.Drill = CreateInventoryItemAddToRepository(weapon, smallShipBuilder.Inventory);\n                    }\n                    else if (weapon.WeaponType == MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Harvesting_Device)\n                    {\n                        shipInventoryItemsIDs.Harvester = CreateInventoryItemAddToRepository(weapon, smallShipBuilder.Inventory);\n                    }\n                    else if (weapon.WeaponType == MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Universal_Launcher_Front)\n                    {\n                        shipInventoryItemsIDs.FrontLauncher = CreateInventoryItemAddToRepository(weapon, smallShipBuilder.Inventory);\n                    }\n                    else if (weapon.WeaponType == MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Universal_Launcher_Back)\n                    {\n                        shipInventoryItemsIDs.BackLauncher = CreateInventoryItemAddToRepository(weapon, smallShipBuilder.Inventory);\n                    }\n                    else\n                    {\n                        int maxLeftWeapons = MyShipTypeConstants.GetShipTypeProperties(smallShipBuilder.ShipType).GamePlay.MaxLeftWeapons;\n                        int maxRightWeapons = MyShipTypeConstants.GetShipTypeProperties(smallShipBuilder.ShipType).GamePlay.MaxRightWeapons;\n\n                        // first, try to fit left-mounted weapon in left slots\n                        if (weapon.AutoMountLeft && shipInventoryItemsIDs.LeftWeapons.Count < maxLeftWeapons)\n                        {\n                            shipInventoryItemsIDs.LeftWeapons.Add(CreateInventoryItemAddToRepository(weapon, smallShipBuilder.Inventory));\n                            continue;\n                        }\n\n                        // or right-mounted weapon in right\n                        if (weapon.AutoMountRight && shipInventoryItemsIDs.RightWeapons.Count < maxRightWeapons)\n                        {\n                            shipInventoryItemsIDs.RightWeapons.Add(CreateInventoryItemAddToRepository(weapon, smallShipBuilder.Inventory));\n                            continue;\n                        }\n\n                        // then, auto-mounted weapon in left slots\n                        if (weapon.AutoMount && shipInventoryItemsIDs.LeftWeapons.Count < maxLeftWeapons)\n                        {\n                            shipInventoryItemsIDs.LeftWeapons.Add(CreateInventoryItemAddToRepository(weapon, smallShipBuilder.Inventory));\n                            continue;\n                        }\n\n                        // then, auto-mounted weapon in right slots\n                        if (weapon.AutoMount && shipInventoryItemsIDs.RightWeapons.Count < maxRightWeapons)\n                        {\n                            shipInventoryItemsIDs.RightWeapons.Add(CreateInventoryItemAddToRepository(weapon, smallShipBuilder.Inventory));\n                            continue;\n                        }\n\n                        // put it in inventory if it doesn't fit anywhere else\n                        if (shipInventoryItemsIDs.Inventory.Count < smallShipBuilder.Inventory.MaxItems)\n                        {\n                            shipInventoryItemsIDs.Inventory.Add(CreateInventoryItemAddToRepository(weapon, smallShipBuilder.Inventory));\n                            continue;\n                        }\n                    }\n                }\n            }\n\n            // armor\n            if (smallShipBuilder.Armor != null)\n            {\n                shipInventoryItemsIDs.Armor = CreateInventoryItemAddToRepository(smallShipBuilder.Armor, smallShipBuilder.Inventory);\n            }\n\n            // engine\n            if (smallShipBuilder.Engine != null)\n            {\n                shipInventoryItemsIDs.Engine = CreateInventoryItemAddToRepository(smallShipBuilder.Engine, smallShipBuilder.Inventory);\n            }\n\n            // radar\n            if (smallShipBuilder.Radar != null)\n            {\n                shipInventoryItemsIDs.Radar = CreateInventoryItemAddToRepository(smallShipBuilder.Radar, smallShipBuilder.Inventory);\n            }\n\n            return shipInventoryItemsIDs;\n        }\n\n        private void LoadInventoryItemsFromObjectBuilders()\n        {\n            // load all ship's inventory items from objectbuilders\n            for (int i = 0; i < m_smallShipsBuilders.Count; i++)\n            {\n                MyMwcObjectBuilder_SmallShip smallShipBuilder = m_smallShipsBuilders[i].Builder;\n\n                m_smallShipsInventoryItemIDs.Add(GetInventoryItemIDsFromObjectBuilder(smallShipBuilder));\n            }\n\n            // load other side inventory items from objectbuilders\n            if (m_otherSideInventoryItemIDs != null)\n            {\n                foreach (MyMwcObjectBuilder_InventoryItem inventoryItem in m_otherSideInventoryBuilder.InventoryItems)\n                {\n                    m_otherSideInventoryItemIDs.Add(CreateInventoryItemAddToRepository(inventoryItem, m_otherSideInventoryBuilder));\n                }\n            }\n        }\n\n        private void SaveIntentoryItemsToObjectBuilder(int index) \n        {\n            MySmallShipInventoryItemIDs shipItemIDs = m_smallShipsInventoryItemIDs[index];\n            MyMwcObjectBuilder_SmallShip shipBuilder = m_smallShipsBuilders[index].Builder.Clone() as MyMwcObjectBuilder_SmallShip;\n\n            // inventory\n            if (shipBuilder.Inventory == null)\n            {\n                shipBuilder.Inventory = new MyMwcObjectBuilder_Inventory(new List<MyMwcObjectBuilder_InventoryItem>(), Math.Max(MyInventory.DEFAULT_MAX_ITEMS, shipItemIDs.Inventory.Count));\n            }\n            if (shipBuilder.Inventory.InventoryItems == null)\n            {\n                shipBuilder.Inventory.InventoryItems = new List<MyMwcObjectBuilder_InventoryItem>();\n            }\n            else if (shipBuilder.Inventory.InventoryItems.Count > 0)\n            {\n                shipBuilder.Inventory.InventoryItems.Clear();\n            }\n            foreach (int id in shipItemIDs.Inventory)\n            {\n                shipBuilder.Inventory.InventoryItems.Add(GetInventoryItemObjectBuilderFromRepository(id));\n            }\n\n            // weapons\n            if (shipBuilder.Weapons == null)\n            {\n                shipBuilder.Weapons = new List<MyMwcObjectBuilder_SmallShip_Weapon>();\n            }\n            else if (shipBuilder.Weapons.Count > 0)\n            {\n                shipBuilder.Weapons.Clear();\n            }\n            foreach (int id in shipItemIDs.LeftWeapons)\n            {\n                var weaponBuilder = (MyMwcObjectBuilder_SmallShip_Weapon)GetObjectBuilderFromRepository(id);\n                weaponBuilder.SetAutoMountLeft();\n                shipBuilder.Weapons.Add(weaponBuilder);\n            }\n            foreach (int id in shipItemIDs.RightWeapons)\n            {\n                var weaponBuilder = (MyMwcObjectBuilder_SmallShip_Weapon)GetObjectBuilderFromRepository(id);\n                weaponBuilder.SetAutoMountRight();\n                shipBuilder.Weapons.Add(weaponBuilder);\n            }\n            if (shipItemIDs.Drill != null)\n            {\n                var drillBuilder = (MyMwcObjectBuilder_SmallShip_Weapon)GetObjectBuilderFromRepository(shipItemIDs.Drill.Value);\n                drillBuilder.SetAutoMount();\n                shipBuilder.Weapons.Add(drillBuilder);\n            }\n            if (shipItemIDs.Harvester != null)\n            {\n                var harvesterBuilder = (MyMwcObjectBuilder_SmallShip_Weapon)GetObjectBuilderFromRepository(shipItemIDs.Harvester.Value);\n                harvesterBuilder.SetAutoMount();\n                shipBuilder.Weapons.Add(harvesterBuilder);\n            }\n            if (shipItemIDs.BackLauncher != null)\n            {\n                var backLauncherBuilder = (MyMwcObjectBuilder_SmallShip_Weapon)GetObjectBuilderFromRepository(shipItemIDs.BackLauncher.Value);\n                backLauncherBuilder.SetAutoMount();\n                shipBuilder.Weapons.Add(backLauncherBuilder);\n            }\n            if (shipItemIDs.FrontLauncher != null)\n            {\n                var frontLauncherBuilder = (MyMwcObjectBuilder_SmallShip_Weapon)GetObjectBuilderFromRepository(shipItemIDs.FrontLauncher.Value);\n                frontLauncherBuilder.SetAutoMount();\n                shipBuilder.Weapons.Add(frontLauncherBuilder);\n            }\n\n            // armor\n            if (shipItemIDs.Armor != null)\n            {\n                shipBuilder.Armor = (MyMwcObjectBuilder_SmallShip_Armor)GetObjectBuilderFromRepository(shipItemIDs.Armor.Value);\n                shipBuilder.Armor.SetAutoMount();\n            }\n            else\n            {\n                shipBuilder.Armor = null;\n            }\n\n            // engine\n            if (shipItemIDs.Engine != null)\n            {\n                shipBuilder.Engine = (MyMwcObjectBuilder_SmallShip_Engine)GetObjectBuilderFromRepository(shipItemIDs.Engine.Value);\n                shipBuilder.Engine.SetAutoMount();\n            }\n            else\n            {\n                shipBuilder.Engine = null;\n            }\n\n            // radar\n            if (shipItemIDs.Radar != null)\n            {\n                shipBuilder.Radar = (MyMwcObjectBuilder_SmallShip_Radar)GetObjectBuilderFromRepository(shipItemIDs.Radar.Value);\n                shipBuilder.Radar.SetAutoMount();\n            }\n            else\n            {\n                shipBuilder.Radar = null;\n            }\n            m_smallShipsBuilders[index].Builder = shipBuilder;\n        }\n\n        private void SaveInventoryItemsToObjectBuilders(ref List<MySmallShipBuilderWithName> shipBuilders, ref MyMwcObjectBuilder_Inventory otherSideInventoryBuilder)\n        {\n            for (int i = 0; i < m_smallShipsBuilders.Count; i++)\n            {\n                SaveIntentoryItemsToObjectBuilder(i);\n                //shipBuilders.Add(shipBuilder);\n            }\n\n            if (otherSideInventoryBuilder != null)\n            {\n                otherSideInventoryBuilder.InventoryItems.Clear();\n                foreach (int id in m_otherSideInventoryItemIDs)\n                {\n                    otherSideInventoryBuilder.InventoryItems.Add(GetInventoryItemObjectBuilderFromRepository(id));\n                }\n            }\n        }\n\n        private void FillListBoxFromIDs(MyGuiControlListbox listbox, List<int> ids, List<ItemCategory> categories, ref List<int> hideList)\n        {\n            hideList.Clear();\n            foreach (int id in ids)\n            {\n                MyInventoryItem inventoryItem = m_itemsRepository.GetItem(id);\n                /*\n                Debug.WriteLine(inventoryItem.Description);\n                Debug.WriteLine(inventoryItem.ItemCategory);\n                Debug.WriteLine(inventoryItem.GetObjectBuilder(true).GetObjectBuilderType());\n                Debug.WriteLine(\"==================================================\");\n                 * */\n                if (categories.Count == 0 || categories.Contains(inventoryItem.ItemProperties.ItemCategory))\n                {\n                    FillListBoxFromID(listbox, id);\n                }\n                else \n                {\n                    hideList.Add(id);\n                }\n            }\n        }\n\n        private void FillListBoxFromIDs(MyGuiControlListbox listbox, List<int> ids)\n        {\n            foreach (int id in ids)\n            {\n                FillListBoxFromID(listbox, id);\n            }\n        }\n\n        private MyToolTips GetListboxItemTooltip(MyGuiControlListbox listbox, int id)\n        {\n            MyInventoryItem item = m_itemsRepository.GetItem(id);\n            MyToolTips toolTips = new MyToolTips();\n            toolTips.AddToolTip(item.MultiLineDescription, Color.White, 0.7f);\n            // add price to tooltip\n            if (m_tradeForMoney)\n            {\n                if (item.CanBeTraded)\n                {\n                    StringBuilder sb = new StringBuilder();\n                    if (listbox == m_shipInventoryListBox)\n                    {\n                        sb.Append(MyTextsWrapper.Get(MyTextsWrapperEnum.SellFor));\n                    }\n                    else if (listbox == m_otherSideInventoryListBox)\n                    {\n                        sb.Append(MyTextsWrapper.Get(MyTextsWrapperEnum.BuyFor));\n                    }\n                    sb.Append(GetPriceSB((decimal)GetTradeItemPrice(item)));\n                    toolTips.AddToolTip(sb, Color.Gold);\n                }\n                else\n                {\n                    toolTips.AddToolTip(MyTextsWrapper.Get(MyTextsWrapperEnum.NotificationNonTradeableItem), Color.Red);\n                }\n            }\n            return toolTips;\n        }\n\n        private void FillListBoxFromID(MyGuiControlListbox listbox, int id, bool canBeMoved = true)\n        {\n            MyInventoryItem inventoryItem = m_itemsRepository.GetItem(id);\n            StringBuilder description = null;\n            if (inventoryItem.Icon == null)\n            {\n                description = inventoryItem.MultiLineDescription;\n            }\n\n            MyGuiControlListboxItem listboxItem = new MyGuiControlListboxItem(id, description, inventoryItem.Icon, GetListboxItemTooltip(listbox, id), MyGuiConstants.LABEL_TEXT_SCALE);\n            listboxItem.IconTexts = new MyIconTexts();\n\n            // add amount icon's text\n            if (inventoryItem.Amount != 0f || inventoryItem.Amount != inventoryItem.MaxAmount)            \n            {\n                StringBuilder amount = new StringBuilder();\n                if (inventoryItem.Amount > (int)inventoryItem.Amount)\n                {\n                    float fixedAmount = Math.Max(0.01f, inventoryItem.Amount);  // prevent items with zero amount, for visualization 0.01 is the minimum value\n                    amount.AppendDecimal(fixedAmount, 2);\n                }\n                else \n                {\n                    amount.AppendInt32((int)inventoryItem.Amount);                    \n                }\n                //amount.Append(inventoryItem.Amount.ToString());\n                MyGuiDrawAlignEnum align;\n                Vector2 offset;\n\n                //All amounts alignet to right bottom position from now\n                /*\n                if (inventoryItem.AmountTextAlign == MyInventoryAmountTextAlign.MiddleRight)\n                {\n                    align = MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_CENTER;\n                    offset = new Vector2(-0.004f, 0.0038f);\n                }\n                 \n                else if (inventoryItem.AmountTextAlign == MyInventoryAmountTextAlign.BottomRight)\n                {\n                 * */\n                align = MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_BOTTOM;\n                offset = new Vector2(-0.013f, -0.01f);\n\n                /*}\n                    else\n                    {\n                        throw new MyMwcExceptionApplicationShouldNotGetHere();\n                    }\n                 * */\n\n                listboxItem.IconTexts[align] = new MyColoredText(amount, Color.White, Color.White, MyGuiManager.GetFontMinerWarsBlue(), 0.6f, offset);\n            }\n            bool enabled = inventoryItem.CanBeMoved && canBeMoved;\n            if (m_tradeForMoney)\n            {\n                enabled &= inventoryItem.CanBeTraded;                \n            }\n            listboxItem.Enabled = enabled;\n            //if (!inventoryItem.CanBeMoved) \n            //{\n            //    listboxItem.Enabled = false;\n            //}\n            listbox.AddItem(listboxItem);\n        }\n\n        private StringBuilder GetPriceSB(decimal price)\n        {\n            StringBuilder priceSB = new StringBuilder();\n            priceSB.Append(MyMwcUtils.GetFormatedPriceForGame(price));\n            return priceSB;\n        }\n\n        private void InitializeListboxDragAndAddToControls(MyGuiControlListbox listbox)\n        {\n            Controls.Add(listbox);\n            listbox.ItemDrag += OnDrag;\n            //listbox.ItemSelect += OnItemClick;\n            //listbox.ItemDoubleClick += OnItemDoubleClick;\n        }\n\n        private void FillShipsCombobox()\n        {\n            if (m_shipsCombobox != null)\n            {\n                for (int i = 0; i < m_smallShipsBuilders.Count; i++)\n                {\n                    m_shipsCombobox.AddItem(i, m_smallShipsBuilders[i].Name);\n                }\n                m_shipsCombobox.SelectItemByIndex(m_currentShipBuilderIndex);\n            }\n        }\n\n        private void AddFreeRowsIfCan(MyGuiControlListbox listbox, int rowCount)\n        {\n            int maxRows = (int)Math.Ceiling((double)GetMaxListboxItems(listbox) / INVENTORY_COLUMNS);\n            if (listbox.GetRowsCount() + rowCount <= maxRows)\n            {\n                listbox.AddRows(rowCount);\n            }\n        }\n\n        private int GetMaxListboxItems(MyGuiControlListbox listbox)\n        {\n            if (listbox == m_shipInventoryListBox)\n            {\n                return GetMaxInventoryItems(m_smallShipsBuilders[m_currentShipBuilderIndex].Builder.Inventory);\n            }\n            else if (listbox == m_otherSideInventoryListBox)\n            {\n                return GetMaxInventoryItems(m_otherSideInventoryBuilder);\n            }\n            else\n            {\n                return listbox.GetRowsCount() * listbox.GetColumsCount();\n            }\n        }\n\n        private int GetListboxItemsCount(MyGuiControlListbox listbox) \n        {\n            if (listbox == m_shipInventoryListBox) \n            {\n                return m_shipInventoryListBox.GetItemsCount() + m_shipInventoryHideList.Count;\n            }\n            else if (listbox == m_otherSideInventoryListBox)\n            {\n                return m_otherSideInventoryListBox.GetItemsCount() + m_otherSideInventoryHideList.Count;\n            }\n            else \n            {\n                return listbox.GetItemsCount();\n            }\n        }\n\n        private int GetMaxInventoryItems(MyMwcObjectBuilder_Inventory inventoryBuilder)\n        {\n            int maxItems;\n            if (inventoryBuilder != null)\n            {\n                maxItems = inventoryBuilder.MaxItems;\n            }\n            else\n            {\n                maxItems = MyInventory.DEFAULT_MAX_ITEMS;\n            }\n            return maxItems;\n        }\n\n        private void UpdateOtherSideInventoryListboxForTrading() \n        {\n            foreach (var listboxItem in m_otherSideInventoryListBox.GetItems()) \n            {\n                MyInventoryItem inventoryItem = m_itemsRepository.GetItem(listboxItem.Key);\n                float price = GetTradeItemPrice(inventoryItem);\n                inventoryItem.NotEnoughMoney = price > m_money;                \n                if (inventoryItem.CanBeTraded)\n                {\n                    Color color = inventoryItem.NotEnoughMoney ? Color.Red : Color.Gold;\n                    listboxItem.ToolTip.GetToolTips()[1].NormalColor = color;\n                    listboxItem.Enabled = !inventoryItem.NotEnoughMoney;\n                }                \n            }\n        }\n\n        private void FillOtherSideInventoryListbox()\n        {\n            if (m_otherSideInventoryBuilder != null)\n            {\n                //m_otherSideInventoryHideList.Clear();\n                //m_otherSideInventoryListBox.RemoveAllItems(false);\n                //FillListBoxFromIDs(m_otherSideInventoryListBox, m_otherSideInventoryItemIDs);\n                //AddFreeRowsIfCan(m_otherSideInventoryListBox, 1);\n                FilterInventory(m_otherSideInventoryListBox, m_otherSideInventoryItemIDs, m_tempFilteredCategoriesTheirsInventory, m_otherSideInventoryHideList,\n                m_sortAll, m_sortWeapons, m_sortOres, m_sortConsumables, m_sortEquipment, m_sortGods);\n            }\n        }\n\n        private void FillWeapons(List<MyGuiControlListbox> weaponListboxes, List<int> weaponKeys)\n        {\n            foreach (MyGuiControlListbox weaponListbox in weaponListboxes)\n            {\n                weaponListbox.RemoveAllItems(false);\n            }\n            for (int i = 0; i < weaponKeys.Count; i++)\n            {\n                FillListBoxFromID(weaponListboxes[i], weaponKeys[i]);\n            }\n        }\n\n        private void FillShipCustomizationListboxes(int shipIndex)\n        {\n            //m_shipInventoryHideList.Clear();\n            MySmallShipInventoryItemIDs currenShipItemIDs = m_smallShipsInventoryItemIDs[shipIndex];\n\n            // inventory\n            //m_shipInventoryListBox.RemoveAllItems();\n            //FillListBoxFromIDs(m_shipInventoryListBox, currenShipItemIDs.Inventory);\n            //AddFreeRowsIfCan(m_shipInventoryListBox, 1);\n            FilterInventory(m_shipInventoryListBox, currenShipItemIDs.Inventory, m_tempFilteredCategoriesMyInventory, m_shipInventoryHideList,\n                m_sortAllMy, m_sortWeaponsMy, m_sortOresMy, m_sortConsumablesMy, m_sortEquipmentMy, m_sortGodsMy);\n\n            // left weapons\n            //m_leftWeaponsInventoryListBox.RemoveAllItems();\n            //FillListBoxFromIDs(m_leftWeaponsInventoryListBox, currenShipItemIDs.LeftWeapons);\n            FillWeapons(m_leftWeaponListboxes, currenShipItemIDs.LeftWeapons);\n\n            // right weapons\n            //m_rightWeaponsInventoryListBox.RemoveAllItems();\n            //FillListBoxFromIDs(m_rightWeaponsInventoryListBox, currenShipItemIDs.RightWeapons);\n            FillWeapons(m_rightWeaponListboxes, currenShipItemIDs.RightWeapons);\n\n            // drill\n            m_drillInventoryListBox.RemoveAllItems(false);\n            if (currenShipItemIDs.Drill != null)\n            {\n                FillListBoxFromID(m_drillInventoryListBox, currenShipItemIDs.Drill.Value, m_inventoryScreenType != MyGuiScreenInventoryType.Game);\n            }\n\n            // harvester\n            m_harvestingToolInventoryListBox.RemoveAllItems(false);\n            if (currenShipItemIDs.Harvester != null)\n            {\n                FillListBoxFromID(m_harvestingToolInventoryListBox, currenShipItemIDs.Harvester.Value, m_inventoryScreenType != MyGuiScreenInventoryType.Game);\n            }\n\n            // front launcher\n            m_frontUniversalLauncherInventoryListBox.RemoveAllItems(false);\n            if (currenShipItemIDs.FrontLauncher != null)\n            {\n                FillListBoxFromID(m_frontUniversalLauncherInventoryListBox, currenShipItemIDs.FrontLauncher.Value);\n            }\n\n            // back launcher\n            m_backUniversalLauncherInventoryListBox.RemoveAllItems(false);\n            if (currenShipItemIDs.BackLauncher != null)\n            {\n                FillListBoxFromID(m_backUniversalLauncherInventoryListBox, currenShipItemIDs.BackLauncher.Value);\n            }\n\n            // armor\n            m_armorInventoryListBox.RemoveAllItems(false);\n            if (currenShipItemIDs.Armor != null)\n            {\n                FillListBoxFromID(m_armorInventoryListBox, currenShipItemIDs.Armor.Value);\n            }\n\n            //// radar\n            //m_radarInventoryListBox.RemoveAllItems(false);\n            //if (currenShipItemIDs.Radar != null)\n            //{\n            //    FillListBoxFromID(m_radarInventoryListBox, currenShipItemIDs.Radar.Value);\n            //}\n\n            // engine\n            m_engineInventoryListBox.RemoveAllItems(false);\n            if (currenShipItemIDs.Engine != null)\n            {\n                FillListBoxFromID(m_engineInventoryListBox, currenShipItemIDs.Engine.Value);\n            }\n\n            UpdateEnabledStateOfWeaponsListboxes();\n            \n        }\n\n        private int? GetKeyFromOneItemListbox(MyGuiControlListbox listbox)\n        {\n            List<int> keys = listbox.GetItemsKeys();\n            if (keys.Count == 0)\n            {\n                return null;\n            }\n            else\n            {\n                return keys[0];\n            }\n        }\n\n        private void SaveWeapons(List<MyGuiControlListbox> weaponListboxes, List<int> weaponKeys)\n        {\n            weaponKeys.Clear();\n            int? weaponKey;\n            foreach (MyGuiControlListbox weaponListbox in weaponListboxes)\n            {\n                weaponKey = GetKeyFromOneItemListbox(weaponListbox);\n                if (weaponKey != null)\n                {\n                    weaponKeys.Add(weaponKey.Value);\n                }\n            }\n        }\n\n        private void SaveIDsFromShipCustomizationListboxes(int shipIndex)\n        {\n            MySmallShipInventoryItemIDs currenShipItemIDs = m_smallShipsInventoryItemIDs[shipIndex];\n\n            // inventory\n            currenShipItemIDs.Inventory.Clear();\n            currenShipItemIDs.Inventory.AddRange(m_shipInventoryListBox.GetItemsKeys());\n            currenShipItemIDs.Inventory.AddRange(m_shipInventoryHideList);\n\n            // left weapons\n            //currenShipItemIDs.LeftWeapons.Clear();\n            //currenShipItemIDs.LeftWeapons.AddRange(m_leftWeaponsInventoryListBox.GetItemsKeys());\n            SaveWeapons(m_leftWeaponListboxes, currenShipItemIDs.LeftWeapons);\n\n            // right weapons\n            //currenShipItemIDs.RightWeapons.Clear();\n            //currenShipItemIDs.RightWeapons.AddRange(m_rightWeaponsInventoryListBox.GetItemsKeys());\n            SaveWeapons(m_rightWeaponListboxes, currenShipItemIDs.RightWeapons);\n\n            // drill\n            currenShipItemIDs.Drill = GetKeyFromOneItemListbox(m_drillInventoryListBox);\n\n            // harvester\n            currenShipItemIDs.Harvester = GetKeyFromOneItemListbox(m_harvestingToolInventoryListBox);\n\n            // front launcher\n            currenShipItemIDs.FrontLauncher = GetKeyFromOneItemListbox(m_frontUniversalLauncherInventoryListBox);\n\n            // back launcher\n            currenShipItemIDs.BackLauncher = GetKeyFromOneItemListbox(m_backUniversalLauncherInventoryListBox);\n\n            // armor\n            currenShipItemIDs.Armor = GetKeyFromOneItemListbox(m_armorInventoryListBox);\n\n            // engine\n            currenShipItemIDs.Engine = GetKeyFromOneItemListbox(m_engineInventoryListBox);\n\n            //// radar\n            //currenShipItemIDs.Radar = GetKeyFromOneItemListbox(m_radarInventoryListBox);\n        }\n\n        private void SaveIDsFromOtherSideInventoryListbox()\n        {\n            if (m_otherSideInventoryBuilder != null)\n            {\n                m_otherSideInventoryItemIDs.Clear();\n                m_otherSideInventoryItemIDs.AddRange(m_otherSideInventoryListBox.GetItemsKeys());\n                m_otherSideInventoryItemIDs.AddRange(m_otherSideInventoryHideList);\n            }\n        }\n\n        private void OnMoveFromLeftToRightInventoryClick(MyGuiControlButton sender)\n        {\n            MoveItemBetweenListboxes(m_otherSideInventoryListBox, m_shipInventoryListBox, m_inventoryScreenType == MyGuiScreenInventoryType.GodEditor, false);\n        }\n\n        private void OnMoveFromRightToLeftInventoryClick(MyGuiControlButton sender)\n        {\n            MoveItemBetweenListboxes(m_shipInventoryListBox, m_otherSideInventoryListBox, false, m_inventoryScreenType == MyGuiScreenInventoryType.GodEditor);\n        }\n\n        private float GetTradeItemPrice(MyInventoryItem inventoryItem) \n        {\n            Debug.Assert(m_otherSideInventoryBuilder.PriceCoeficient != null);\n            Debug.Assert(m_smallShipsBuilders[m_currentShipBuilderIndex].Builder.Inventory.PriceCoeficient != null);\n            float otherSidePriceCoeficient = m_otherSideInventoryBuilder.PriceCoeficient.Value;\n            float shipPriceCoeficient = m_smallShipsBuilders[m_currentShipBuilderIndex].Builder.Inventory.PriceCoeficient.Value;\n\n            float priceCoeficient = 1f;\n\n            if (inventoryItem.Owner == m_otherSideInventoryBuilder)\n            {\n                priceCoeficient = otherSidePriceCoeficient / shipPriceCoeficient;\n            }\n            else\n            {\n                priceCoeficient = shipPriceCoeficient / otherSidePriceCoeficient;\n            }\n\n            return inventoryItem.Price * priceCoeficient;\n        }\n        \n        private bool HandleTradeForMoney(MyGuiControlListbox listboxFrom, MyGuiControlListbox listboxTo, MyInventoryItem inventoryItem)\n        {            \n            float moneyToAdd = 0f;\n            float itemPrice = GetTradeItemPrice(inventoryItem);\n            \n            // item move from other side to player's ship)\n            if (listboxFrom == m_otherSideInventoryListBox && listboxTo != m_otherSideInventoryListBox)\n            {\n                moneyToAdd = -itemPrice;\n            }\n            // item move from player's ship to other side\n            else if (listboxFrom != m_otherSideInventoryListBox && listboxTo == m_otherSideInventoryListBox)\n            {\n                moneyToAdd = itemPrice;\n            }            \n\n            if (m_money + moneyToAdd < 0f) \n            {\n                // this can't happen\n                throw new MyMwcExceptionApplicationShouldNotGetHere();\n                //MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR,\n                //                                                     MyTextsWrapperEnum.NotificationYouDontHaveEnoughMoney,\n                //                                                     MyTextsWrapperEnum.TradeResultTitle,\n                //                                                     MyTextsWrapperEnum.Ok, YouDontHaveEnoughMoneyMessageBoxCallBack));\n                return false;\n            }\n            SetMoney(m_money + moneyToAdd);\n            return true;\n        }\n\n        private void SetMoney(float money) \n        {\n            m_money = money;\n            decimal moneyD = Math.Round((decimal)m_money, 0);\n            m_playersMoneyLabel.UpdateParams(GetPriceSB(moneyD));\n            float textScaleMultiplicator = 1f;\n            if (m_money >= 1000000000)\n            {\n                textScaleMultiplicator = 0.8f;\n            }\n            else \n            {\n                textScaleMultiplicator = 1f;\n            }\n            m_playersMoneyLabel.SetTextScale(MyGuiConstants.INVENTORY_LABEL_TEXT_SCALE * textScaleMultiplicator);\n        }\n\n        private void MoveItemBetweenListboxes(MyGuiControlListbox listboxFrom, MyGuiControlListbox listboxTo, bool copyItem, bool deleteItem)\n        {\n            bool moved = false;\n            MyGuiControlListboxItem selectedItem = listboxFrom.GetSelectedItem();\n            if (selectedItem != null)\n            {\n                System.Diagnostics.Debug.Assert(m_itemsRepository.Contains(selectedItem.Key));\n\n                if (!IsListboxFull(listboxTo) && m_itemsRepository.Contains(selectedItem.Key))\n                {\n                    MyInventoryItem item = m_itemsRepository.GetItem(selectedItem.Key);\n                    if (!CanDropItem(item, listboxFrom, listboxTo)) \n                    {\n                        return;\n                    }\n                    \n                    if (m_tradeForMoney)\n                    {\n                        selectedItem.ToolTip = GetListboxItemTooltip(listboxTo, selectedItem.Key);\n                        bool tradeForMoneyResult = HandleTradeForMoney(listboxFrom, listboxTo, item);\n                        if (!tradeForMoneyResult) \n                        {\n                            return;\n                        }\n                    }\n\n                    if (NeedHandleSmallShipDrop(item))\n                    {\n                        HandleSmallShipDrop(listboxFrom, listboxTo, item);                        \n                    }\n\n                    // we make copy of moved item\n                    if (copyItem)\n                    {\n                        listboxTo.AddItem(CreateCopyOfListboxItem(selectedItem));\n                    }\n                    else\n                    {\n                        listboxFrom.RemoveItem(selectedItem.Key, false);\n                        // if we don't want delete moved item\n                        if (!deleteItem)\n                        {\n                            listboxTo.AddItem(selectedItem);\n                        }\n                    }\n                    moved = true;\n                    m_wasAnythingTrasfered = true;\n\n                    if (m_tradeForMoney) \n                    {\n                        UpdateOtherSideInventoryListboxForTrading();\n                    }\n                }\n                else\n                {\n                    MyAudio.AddCue2D(MySoundCuesEnum.HudInventoryFullWarning);\n                }\n            }\n\n            if (moved && listboxTo.GetEmptyRowsCount() == 0)\n            {\n                AddFreeRowsIfCan(listboxTo, 1);                \n            }\n        }\n\n        private void UpdateInventoryCapacityLabels() \n        {\n            UpdateInventoryCapacityLabel(m_shipInventoryCapacityLabel, m_shipInventoryListBox);\n            if (m_otherSideInventoryBuilder != null) \n            {\n                UpdateInventoryCapacityLabel(m_otherSideInventoryCapacityLabel, m_otherSideInventoryListBox);\n            }\n        }\n\n        private void UpdateNextAndPreviousShipButtonsVisibility() \n        {\n            m_previousShipButton.Visible = m_smallShipsBuilders.Count > 1;\n            m_nextShipButton.Visible = m_smallShipsBuilders.Count > 1;\n        }\n\n        private void UpdateInventoryCapacityLabel(MyGuiControlLabel label, MyGuiControlListbox listbox) \n        {\n            int currentItems = GetListboxItemsCount(listbox);\n            int maxItems = GetMaxListboxItems(listbox);\n            maxItems = Math.Max(currentItems, maxItems);\n            label.UpdateParams(new object[] { currentItems, maxItems });\n            if (!IsListboxFull(listbox))\n            {\n                label.Font = MyGuiManager.GetFontMinerWarsBlue();\n            }\n            else \n            {\n                label.Font = MyGuiManager.GetFontMinerWarsRed();\n            }\n        }\n\n        private void OnCancelClick(MyGuiControlButton sender)\n        {\n            CloseScreen();\n            MyAudio.AddCue2D(MySoundCuesEnum.GuiWheelControlClose);\n        }\n\n        private void OnOkClickDelegate()\n        {\n            OnOkClick(null);\n        }\n\n        private void YouDontHaveEnoughMoneyMessageBoxCallBack(MyGuiScreenMessageBoxCallbackEnum callbackReturn) \n        {\n            this.UnhideScreen();\n        }\n\n        // save changes\n        private void OnOkClick(MyGuiControlButton sender)\n        {\n            //if (m_inventoryScreenType != MyGuiScreenInventoryType.GodEditor) \n            //{\n            //    if (m_tradeForMoney && m_money + m_moneyTradeBalance < 0f)\n            //    {\n            //        MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR,\n            //                                                         MyTextsWrapperEnum.NotificationYouDontHaveEnoughMoney,\n            //                                                         MyTextsWrapperEnum.TradeResultTitle,\n            //                                                         MyTextsWrapperEnum.Ok, YouDontHaveEnoughMoneyMessageBoxCallBack));\n            //        return;\n            //    }                \n            //}\n\n            if (MyFakes.ENABLE_LOADING_AFTER_TRADING && m_wasAnythingTrasfered && m_inventoryScreenType != MyGuiScreenInventoryType.GodEditor)\n            {\n                StartTransfering();                                \n            }\n            else\n            {                \n                Save();\n                CloseScreen();\n            }\n            MyAudio.AddCue2D(MySoundCuesEnum.GuiWheelControlClose);\n        }\n\n        private bool IsListboxFull(MyGuiControlListbox listbox) \n        {\n            bool isFull = GetListboxItemsCount(listbox) >= GetMaxListboxItems(listbox);\n            //if (listbox == m_shipInventoryListBox) \n            //{\n            //    isFull = isFull && !MyGameplayCheats.IsCheatEnabled(MyGameplayCheatsEnum.UNLIMITED_CARGO_CAPACITY);\n            //}\n            return isFull;\n        }\n\n        // save changes\n        private void OnTakeAllClick(MyGuiControlButton sender)\n        {\n            foreach (var otherKey in m_otherSideInventoryListBox.GetItemsKeys())\n            {\n                if (!IsListboxFull(m_shipInventoryListBox))\n                {\n                    MyInventoryItem inventoryItem = m_itemsRepository.GetItem(otherKey);\n                    if (inventoryItem.CanBeMoved && CanDropItem(inventoryItem, m_otherSideInventoryListBox, m_shipInventoryListBox))\n                    {\n                        if (NeedHandleSmallShipDrop(inventoryItem))\n                        {\n                            HandleSmallShipDrop(m_otherSideInventoryListBox, m_shipInventoryListBox, inventoryItem);\n                        }\n\n                        MyGuiControlListboxItem item = m_otherSideInventoryListBox.GetItem(otherKey);\n                        item.ToolTip = GetListboxItemTooltip(m_shipInventoryListBox, otherKey);\n                        m_shipInventoryListBox.AddItem(item);\n                        m_otherSideInventoryListBox.RemoveItem(otherKey);                        \n                    }\n                }\n                else\n                {\n                    break;\n                }\n            }\n            m_otherSideInventoryListBox.RemoveEmptyItems();\n            // if there are no empty row, we try add new row\n            if (m_shipInventoryListBox.GetEmptyRowsCount() == 0)\n            {\n                AddFreeRowsIfCan(m_shipInventoryListBox, 1);\n            }\n        }\n\n        private void RemoveItemsFromListbox(MyGuiControlListbox listbox, bool removeItems = false) \n        {\n            foreach (int key in listbox.GetItemsKeys())\n            {\n                m_removedInventoryItemIDs.Add(key);\n            }\n            listbox.RemoveAllItems(removeItems);\n            if (removeItems)\n            {                \n                AddFreeRowsIfCan(listbox, 1);\n            }            \n        }\n\n        private void OnRemoveAllClick(MyGuiControlButton sender)\n        {\n            foreach (int key in m_shipInventoryHideList)\n            {\n                m_removedInventoryItemIDs.Add(key);\n            }\n            m_shipInventoryHideList.Clear();\n            RemoveItemsFromListbox(m_shipInventoryListBox, true);            \n            RemoveItemsFromListbox(m_harvestingToolInventoryListBox);            \n            RemoveItemsFromListbox(m_drillInventoryListBox);            \n            RemoveItemsFromListbox(m_armorInventoryListBox);            \n            RemoveItemsFromListbox(m_engineInventoryListBox);            \n            RemoveItemsFromListbox(m_frontUniversalLauncherInventoryListBox);            \n            RemoveItemsFromListbox(m_backUniversalLauncherInventoryListBox);           \n            //RemoveItemsFromListbox(m_radarInventoryListBox);            \n                                    \n            foreach (var leftWeaponListbox in m_leftWeaponListboxes) \n            {\n                RemoveItemsFromListbox(leftWeaponListbox);                \n            }\n            foreach (var rightWeaponListbox in m_rightWeaponListboxes)\n            {\n                RemoveItemsFromListbox(rightWeaponListbox);                \n            }\n        }\n\n        private void UncheckAllInventoryCheckboxes()\n        {\n            m_sortWeapons.UnCheck();\n            m_sortGods.UnCheck();\n            m_sortOres.UnCheck();\n            m_sortConsumables.UnCheck();\n            m_sortEquipment.UnCheck();\n        }\n\n\n        // save changes\n        private void OnFilterInventorySortClick(MyGuiControlCheckbox sender)\n        {\n            SaveIDsFromOtherSideInventoryListbox();\n            SaveIDsFromShipCustomizationListboxes(m_currentShipBuilderIndex);\n            if (sender.Checked)\n            {\n                if (sender == m_sortAll)\n                {\n                    UncheckAllInventoryCheckboxes();\n                }\n                else\n                {\n                    m_sortAll.UnCheck();\n                }\n            }\n            else if (sender == m_sortAll)\n            {\n                m_sortAll.Check();\n            }\n\n            FilterInventory(m_otherSideInventoryListBox, m_otherSideInventoryItemIDs, m_tempFilteredCategoriesTheirsInventory, m_otherSideInventoryHideList,\n                m_sortAll, m_sortWeapons, m_sortOres, m_sortConsumables, m_sortEquipment, m_sortGods);\n            if (m_tradeForMoney)\n            {\n                UpdateOtherSideInventoryListboxForTrading();\n            }\n        }\n\n        private void UncheckAllMyInventoryCheckboxes()\n        {\n            m_sortWeaponsMy.UnCheck();\n            m_sortGodsMy.UnCheck();\n            m_sortOresMy.UnCheck();\n            m_sortConsumablesMy.UnCheck();\n            m_sortEquipmentMy.UnCheck();\n        }\n\n        private void FilterInventory(MyGuiControlListbox listbox, List<int> itemsIDs, List<ItemCategory> filter, List<int> hideList,\n            MyGuiControlCheckbox checkboxAll, MyGuiControlCheckbox checkboxWeapons, MyGuiControlCheckbox checkboxOres,\n            MyGuiControlCheckbox checkboxConsumables, MyGuiControlCheckbox checkboxEquipment, MyGuiControlCheckbox checkboxGods)\n        {\n            if (listbox != null)\n            {                \n                listbox.RemoveAllItems();\n                listbox.ResetScrollbarPosition();\n                filter.Clear();\n                if (!checkboxAll.Checked) \n                {\n                    if (checkboxWeapons.Checked) filter.AddRange(MyItemFilterConstants.CategoryAmmo);\n                    if (checkboxOres.Checked) filter.AddRange(MyItemFilterConstants.Ores);\n                    if (checkboxConsumables.Checked) filter.AddRange(MyItemFilterConstants.ConsumAndMedical);\n                    if (checkboxEquipment.Checked) filter.AddRange(MyItemFilterConstants.Devices);\n                    if (checkboxGods.Checked) filter.AddRange(MyItemFilterConstants.GoodsAndIllegal);\n                }\n                FillListBoxFromIDs(listbox, itemsIDs, filter, ref hideList);\n                AddFreeRowsIfCan(listbox, 1);\n            }\n        }\n\n        // save changes\n        private void OnFilterInventoryMySortClick(MyGuiControlCheckbox sender)\n        {\n            SaveIDsFromOtherSideInventoryListbox();\n            SaveIDsFromShipCustomizationListboxes(m_currentShipBuilderIndex);\n            if (sender.Checked) \n            {\n                if (sender == m_sortAllMy)\n                {\n                    UncheckAllMyInventoryCheckboxes();\n                }\n                else \n                {\n                    m_sortAllMy.UnCheck();\n                }\n            }\n            else if (sender == m_sortAllMy)\n            {\n                m_sortAllMy.Check();\n            }\n\n            FilterInventory(m_shipInventoryListBox, m_smallShipsInventoryItemIDs[m_currentShipBuilderIndex].Inventory, m_tempFilteredCategoriesMyInventory, m_shipInventoryHideList,\n                m_sortAllMy, m_sortWeaponsMy, m_sortOresMy, m_sortConsumablesMy, m_sortEquipmentMy, m_sortGodsMy);            \n        }\n\n\n\n        #region Drag and drop handling\n        private MyGuiControlListboxItem CreateCopyOfListboxItem(MyGuiControlListboxItem templateItem)\n        {\n            MyInventoryItem templateInventoryItem = m_itemsRepository.GetItem(templateItem.Key);\n            int newItemKey = CreateInventoryItemAddToRepository(templateInventoryItem.GetInventoryItemObjectBuilder(true), templateInventoryItem.Amount, (MyMwcObjectBuilder_Inventory)templateInventoryItem.Owner);\n            MyGuiControlListboxItem itemsCopy = new MyGuiControlListboxItem(newItemKey, templateItem.ColoredText, templateItem.Icon, templateItem.ToolTip);\n            itemsCopy.IconTexts = templateItem.IconTexts;\n            return itemsCopy;\n        }\n\n        private void StartDragging(MyDropHandleType dropHandlingType, MyGuiControlListbox listbox, int rowIndex, int itemIndex)\n        {\n            MyDragAndDropInfo dragAndDropInfo = new MyDragAndDropInfo();\n            dragAndDropInfo.Listbox = listbox;\n            dragAndDropInfo.RowIndex = rowIndex;\n            dragAndDropInfo.ItemIndex = itemIndex;\n\n            MyGuiControlListboxItem draggingItem = dragAndDropInfo.Listbox.GetItem(dragAndDropInfo.RowIndex, dragAndDropInfo.ItemIndex);            \n\n            // if inventory screen is in god editor mode, then we want use other side inventory items as templates\n            if (m_inventoryScreenType == MyGuiScreenInventoryType.GodEditor && listbox == m_otherSideInventoryListBox)\n            {\n                draggingItem = CreateCopyOfListboxItem(draggingItem);\n            }\n            else\n            {\n                dragAndDropInfo.Listbox.RemoveItem(dragAndDropInfo.RowIndex, dragAndDropInfo.ItemIndex, false);\n            }\n\n            m_dragAndDrop.StartDragging(dropHandlingType, draggingItem, dragAndDropInfo);\n            listbox.HideToolTip();\n            DisabledInvalidListboxesForDrop(m_itemsRepository.GetItem(draggingItem.Key));\n\n            if (listbox != m_shipInventoryListBox && IsListboxFull(m_shipInventoryListBox)) \n            {\n                m_shipInventoryListBox.Enabled = false;\n            }\n            else if (listbox != m_otherSideInventoryListBox && IsListboxFull(m_otherSideInventoryListBox)) \n            {\n                m_otherSideInventoryListBox.Enabled = false;\n            }\n        }\n\n        private void StopDragging()\n        {\n            m_dragAndDrop.Stop();\n            EnableAllListboxes();\n        }\n\n        private void DisabledInvalidListboxesForDrop(MyInventoryItem draggedInventoryItem)\n        {\n            foreach (KeyValuePair<MyGuiControlListbox, Predicate<MyInventoryItem>> keyValuePair in m_listboxDropConditions)\n            {\n                if (!keyValuePair.Value(draggedInventoryItem))\n                {\n                    keyValuePair.Key.Enabled = false;\n                }\n            }            \n        }        \n\n        private void EnableAllListboxes()\n        {\n            foreach (KeyValuePair<MyGuiControlListbox, Predicate<MyInventoryItem>> keyValuePair in m_listboxDropConditions)\n            {\n                keyValuePair.Key.Enabled = true;\n            }\n            UpdateEnabledStateOfWeaponsListboxes();\n        }\n\n        private void UpdateEnabledStateOfWeaponsListboxes()\n        {\n            var shipTypeGameplayProperties = MyShipTypeConstants.GetShipTypeProperties(m_smallShipsBuilders[m_currentShipBuilderIndex].Builder.ShipType).GamePlay;\n            int rightWeaponsSlots = shipTypeGameplayProperties.MaxRightWeapons;\n            int leftWeaponsSlots = shipTypeGameplayProperties.MaxLeftWeapons;\n\n            for (int i = 0; i < INVENTORY_WEAPONS_COLUMNS; i++)\n            {\n                m_leftWeaponListboxes[i].Enabled = i < leftWeaponsSlots;\n                m_rightWeaponListboxes[i].Enabled = i < rightWeaponsSlots;\n            }\n        }\n\n        private void OnItemClick(object sender, MyGuiControlListboxItemEventArgs eventArgs)\n        {\n            //StartDraging(MyDragAndDropType.LeftMouseClick, sender, eventArgs);\n        }\n\n        private void OnOtherSideItemDoubleClick(object sender, MyGuiControlListboxItemEventArgs eventArgs)\n        {\n            MoveItemBetweenListboxes(m_otherSideInventoryListBox, m_shipInventoryListBox, m_inventoryScreenType == MyGuiScreenInventoryType.GodEditor, false);\n        }\n\n        private void OnShipItemDoubleClick(object sender, MyGuiControlListboxItemEventArgs eventArgs)\n        {\n            MoveItemBetweenListboxes(m_shipInventoryListBox, m_otherSideInventoryListBox, false, m_inventoryScreenType == MyGuiScreenInventoryType.GodEditor);\n        }\n\n        private void OnItemDoubleClick(object sender, MyGuiControlListboxItemEventArgs eventArgs)\n        {\n            if (!m_isTransferingInProgress)\n            {\n                //StartDragging(MyDropHandleType.LeftMouseClick, (MyGuiControlListbox)sender, eventArgs.RowIndex, eventArgs.ItemIndex);\n            }\n        }\n\n        private void OnDrag(object sender, MyGuiControlListboxItemEventArgs eventArgs)\n        {\n            if (!m_isTransferingInProgress)\n            {\n                StartDragging(MyDropHandleType.LeftMousePressed, (MyGuiControlListbox)sender, eventArgs.RowIndex, eventArgs.ItemIndex);\n            }\n        }\n\n        private void OnDrop(object sender, MyDragAndDropEventArgs eventArgs)\n        {\n            if (eventArgs.DropTo != null)\n            {\n                MyInventoryItem inventoryItem = m_itemsRepository.GetItem(eventArgs.ListboxItem.Key);\n                MyGuiControlListboxItem itemAtDroppingPosition = eventArgs.DropTo.Listbox.GetItem(eventArgs.DropTo.RowIndex, eventArgs.DropTo.ItemIndex);\n\n                // test drop condition\n                Predicate<MyInventoryItem> dropCondition = m_listboxDropConditions[eventArgs.DropTo.Listbox];\n                // drop condition false (check if we able to drop this item to this listbox)\n                if (!dropCondition(inventoryItem) || !CanDropItem(inventoryItem, eventArgs.DragFrom.Listbox, eventArgs.DropTo.Listbox))\n                {\n                    DropBack(eventArgs);\n                }\n                // check if listbox is full and we try drop item, if true drop item back\n                else if (IsListboxFull(eventArgs.DropTo.Listbox))\n                {\n                    // if we try drop item at ship or other side inventory, then play warning\n                    if (eventArgs.DropTo.Listbox == m_shipInventoryListBox || eventArgs.DropTo.Listbox == m_otherSideInventoryListBox)\n                    {\n                        MyAudio.AddCue2D(MySoundCuesEnum.HudInventoryFullWarning);\n                    }\n                    DropBack(eventArgs);\n                }\n                // drop condition true\n                else\n                {\n                    if (m_tradeForMoney)\n                    {\n                        bool tradeForMoneyResult = HandleTradeForMoney(eventArgs.DragFrom.Listbox, eventArgs.DropTo.Listbox, inventoryItem);\n                        if (!tradeForMoneyResult) \n                        {\n                            DropBack(eventArgs);\n                            return;\n                        }\n                        eventArgs.ListboxItem.ToolTip = GetListboxItemTooltip(eventArgs.DropTo.Listbox, eventArgs.ListboxItem.Key);\n                    }\n\n                    if (NeedHandleSmallShipDrop(inventoryItem))\n                    {\n                        HandleSmallShipDrop(eventArgs.DragFrom.Listbox, eventArgs.DropTo.Listbox, inventoryItem);\n                    }\n                    DropItem(eventArgs.DropTo.Listbox, eventArgs.ListboxItem, eventArgs.DropTo.RowIndex, eventArgs.DropTo.ItemIndex);\n                    m_wasAnythingTrasfered = true;\n\n                    if (m_tradeForMoney) \n                    {\n                        UpdateOtherSideInventoryListboxForTrading();\n                    }\n                    //StopDragging();                    \n                }\n            }\n            else\n            {\n                // if item was dropped over inventory screen, then put them to original slot\n                if (IsMouseOver() || eventArgs.DragFrom.Listbox == m_otherSideInventoryListBox)\n                {\n                    DropBack(eventArgs);\n                }\n                // if item was dropped out of inventory screen, then remove from game\n                else\n                {\n                    m_removedInventoryItemIDs.Add(eventArgs.ListboxItem.Key);\n                    m_wasAnythingTrasfered = true;\n                    StopDragging();\n                }                \n            }\n        }\n\n        private bool NeedHandleSmallShipDrop(MyInventoryItem item) \n        {\n            return item.ObjectBuilderType == MyMwcObjectBuilderTypeEnum.SmallShip_Player &&\n                m_inventoryScreenType == MyGuiScreenInventoryType.Game && !m_tradeForMoney;\n        }\n\n        private bool CanDropItem(MyInventoryItem item, MyGuiControlListbox dropFrom, MyGuiControlListbox dropTo) \n        {\n            if (dropTo != dropFrom && NeedHandleSmallShipDrop(item) && dropTo == m_shipInventoryListBox)\n            {\n                MySmallShipBuilderWithName builderWithName = m_smallShipsBuilders.Find(x => x.Builder == item.GetInventoryItemObjectBuilder(false));\n                Debug.Assert(builderWithName != null);\n                int index = m_smallShipsBuilders.IndexOf(builderWithName);\n                Debug.Assert(index > -1);\n                // we can't drop same ship to current ship's inventory\n                return index != m_currentShipBuilderIndex;\n            }\n            else \n            {\n                return true;\n            }\n        }\n\n        private void HandleSmallShipDrop(MyGuiControlListbox listboxFrom, MyGuiControlListbox listboxTo, MyInventoryItem item) \n        {\n            if (listboxFrom != listboxTo) \n            {\n                if (listboxTo == m_otherSideInventoryListBox)\n                {\n                    MySmallShipBuilderWithName builderWithName = new MySmallShipBuilderWithName(item.GetInventoryItemObjectBuilder(false) as MyMwcObjectBuilder_SmallShip_Player);\n                    m_smallShipsBuilders.Add(builderWithName);\n                    m_smallShipsInventoryItemIDs.Add(GetInventoryItemIDsFromObjectBuilder(builderWithName.Builder));\n                    if (m_shipsCombobox != null)\n                    {\n                        m_shipsCombobox.AddItem(m_shipsCombobox.GetItemsCount(), builderWithName.Name);\n                    }\n                    item.IsTemporaryItem = true;\n                }\n                else if (listboxTo == m_shipInventoryListBox)\n                {\n                    MySmallShipBuilderWithName builderWithName = m_smallShipsBuilders.Find(x => x.Builder == item.GetInventoryItemObjectBuilder(false));\n                    Debug.Assert(builderWithName != null);\n                    int index = m_smallShipsBuilders.IndexOf(builderWithName);\n                    Debug.Assert(index > -1);                                        \n                    SaveIntentoryItemsToObjectBuilder(index);                    \n                    item.ObjectBuilder = m_smallShipsBuilders[index].Builder;\n                    DealocateInventoryItemsFromInventoryIDs(index);\n                    m_smallShipsInventoryItemIDs.RemoveAt(index);\n                    m_smallShipsBuilders.RemoveAt(index);\n                    if (m_shipsCombobox != null)\n                    {\n                        m_shipsCombobox.RemoveItemByIndex(index);\n                    }\n                    if (m_currentShipBuilderIndex > index) \n                    {\n                        m_currentShipBuilderIndex--;\n                    }\n                    Debug.Assert(m_currentShipBuilderIndex >= 0 && m_currentShipBuilderIndex <= m_smallShipsBuilders.Count - 1);\n                    item.IsTemporaryItem = false;\n                    //bool reloadShipInventory = m_currentShipBuilderIndex > index;\n                    //m_currentShipBuilderIndex = Math.Min(m_currentShipBuilderIndex, m_smallShipsBuilders.Count - 1);\n                    //if (reloadShipInventory)\n                    //{\n                    //    LoadShipInventory(m_currentShipBuilderIndex);\n                    //}\n                }\n                else \n                {\n                    throw new MyMwcExceptionApplicationShouldNotGetHere();\n                }\n            }            \n        }\n\n        private void DealocateInventoryItemsFromInventoryIDs(int index) \n        {\n            MySmallShipInventoryItemIDs inventoryIDs = m_smallShipsInventoryItemIDs[index];\n            DealocateInventoryItems(inventoryIDs.Inventory);\n            DealocateInventoryItems(inventoryIDs.LeftWeapons);\n            DealocateInventoryItems(inventoryIDs.RightWeapons);\n            DealocateInventoryItem(inventoryIDs.Armor);\n            DealocateInventoryItem(inventoryIDs.BackLauncher);\n            DealocateInventoryItem(inventoryIDs.Drill);\n            DealocateInventoryItem(inventoryIDs.Engine);\n            DealocateInventoryItem(inventoryIDs.FrontLauncher);\n            DealocateInventoryItem(inventoryIDs.Harvester);\n            DealocateInventoryItem(inventoryIDs.Radar);            \n        }\n\n        private void DealocateInventoryItems(List<int> ids) \n        {\n            foreach (int id in ids)\n            {\n                DealocateInventoryItem(id);\n            }\n        }\n\n        private void DealocateInventoryItem(int? id) \n        {\n            if (id != null) \n            {\n                m_itemsRepository.RemoveItem(id.Value, true);\n            }\n        }\n\n        private void DropBack(MyDragAndDropEventArgs eventArgs) \n        {\n            DropItem(eventArgs.DragFrom.Listbox, eventArgs.ListboxItem, eventArgs.DragFrom.RowIndex, eventArgs.DragFrom.ItemIndex);\n            //StopDragging();\n        }\n\n        private void DropItem(MyGuiControlListbox listbox, MyGuiControlListboxItem item, int rowIndex, int itemIndex)\n        {\n            // in god editor and other side listbox, we don't want put this item to this listbox, so we remove it\n            if (m_inventoryScreenType == MyGuiScreenInventoryType.GodEditor && listbox == m_otherSideInventoryListBox)\n            {\n                m_itemsRepository.RemoveItem(item.Key);\n            }\n            else\n            {\n                if (listbox.GetItem(rowIndex, itemIndex) != null || listbox.GetRowsCount() <= rowIndex)\n                {\n                    listbox.AddItem(item);\n                }\n                else\n                {\n                    listbox.AddItem(item, rowIndex, itemIndex);\n                }\n\n                // if there are no empty row, we try add new row\n                if (listbox.GetEmptyRowsCount() == 0)\n                {\n                    AddFreeRowsIfCan(listbox, 1);\n                }                \n            }\n            StopDragging();\n        }\n        #endregion\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenInventory\";\n        }\n\n        public override void UnloadContent()\n        {\n            m_itemsRepository.Close();\n            if (m_inventoryItemTexture != null)\n            {\n                MyTextureManager.UnloadTexture(m_inventoryItemTexture);\n                m_inventoryItemTexture = null;\n            }\n            if (m_inventoryScrollBarTexture != null && m_inventoryScrollBarTexture.LoadState == Managers.LoadState.Loaded)\n            {\n                MyTextureManager.UnloadTexture(m_inventoryScrollBarTexture);\n                m_inventoryScrollBarTexture = null;\n            }\n            base.UnloadContent();\n        }\n\n        public override void UnloadData()\n        {\n            base.UnloadData();\n        }\n\n        public override bool CloseScreen()\n        {\n            return base.CloseScreen();\n        }\n\n        public override void CloseScreenNow()\n        {\n            base.CloseScreenNow();\n        }\n\n        public void CancelTransfering()\n        //public void CancelTransfering(MyDetectedEntity sender)\n        {\n            MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.TradeWasCanceled, MyTextsWrapperEnum.TradeResultTitle, MyTextsWrapperEnum.Ok, null));\n            CloseScreen();\n        }\n\n        public override void HandleInput(MyGuiInput input, bool receivedFocusInThisUpdate)\n        {\n \t         base.HandleInput(input, receivedFocusInThisUpdate);\n             if (input.IsNewGameControlPressed(MyGameControlEnums.INVENTORY))\n             {\n                 Canceling();\n             }\n        }\n\n        private void StartTransfering()\n        {\n            m_isTransferingInProgress = true;\n            m_okButton.Enabled = false;\n            m_okButton.Visible = false;\n            //m_cancelButton.Enabled = false;\n            //m_cancelButton.Visible = false;            \n\n            m_timeFromStartTransfering = 0;\n            m_transferingProgress = new MyGuiControlRotatingWheel(this, new Vector2(0f, 0f), MyGuiConstants.DEFAULT_CONTROL_FOREGROUND_COLOR.ToVector4(), 0.5f, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, MyGuiManager.GetLoadingTexture());\n            OnEnterCallback -= OnOkClickDelegate;\n            DrawMouseCursor = false;\n            m_transferingProgressCue = MyAudio.AddCue2D(MySoundCuesEnum.HudInventoryTransfer);\n        }\n\n        private void CompleteTransfering()\n        {\n            m_isTransferingInProgress = false;\n            Save();\n            MyAudio.AddCue2D(MySoundCuesEnum.HudInventoryComplete);\n            CloseScreenNow();\n        }\n\n        private void Save()\n        {\n            m_dragAndDrop.Drop();\n\n            //if (m_wasAnythingTrasfered)\n            //{\n            //    SaveIDsFromShipCustomizationListboxes(m_currentShipBuilderIndex);\n            //    SaveIDsFromOtherSideInventoryListbox();\n\n            //    SaveInventoryItemsToObjectBuilders();\n            //    if (m_tradeForMoney)\n            //    {\n            //        m_money += m_moneyTradeBalance;\n            //    }\n            //}\n\n            SaveIDsFromShipCustomizationListboxes(m_currentShipBuilderIndex);\n            SaveIDsFromOtherSideInventoryListbox();\n\n            //List<MyMwcObjectBuilder_SmallShip> shipBuilders = new List<MyMwcObjectBuilder_SmallShip>();\n            SaveInventoryItemsToObjectBuilders(ref m_smallShipsBuilders, ref m_otherSideInventoryBuilder);            \n\n            if (m_inventoryScreenType == MyGuiScreenInventoryType.Game && m_removedInventoryItemIDs.Count > 0)\n            {\n                CreateCargoBoxWithDroppedItems(m_removedInventoryItemIDs, MySession.PlayerShip);\n                m_removedInventoryItemIDs.Clear();\n            }\n            m_isInventoryLocked = false;\n\n            if (OnSave != null)\n            {\n                MyGuiScreenInventorySaveResult saveResult = new MyGuiScreenInventorySaveResult(m_smallShipsBuilders, m_currentShipBuilderIndex, m_otherSideInventoryBuilder, m_money, m_wasAnythingTrasfered);\n                OnSave(this, saveResult);\n            }\n        }\n\n        public bool IsInventoryLocked() \n        {\n            return m_isInventoryLocked;\n        }\n\n        void CreateCargoBoxWithDroppedItems(IEnumerable<int> droppedItemIDs, MySmallShip dropper)\n        {\n            var worldMatrix = Matrix.CreateWorld(\n                dropper.WorldVolume.Center, \n                dropper.GetForward(), \n                dropper.GetUp());\n\n            var items = new List<MyMwcObjectBuilder_InventoryItem>();\n            foreach (var droppedItemID in droppedItemIDs)\n            {\n                var inventoryItem = m_itemsRepository.GetItem(droppedItemID);\n                items.Add(new MyMwcObjectBuilder_InventoryItem(inventoryItem.GetInventoryItemObjectBuilder(false), inventoryItem.Amount));\n            }\n            var inventory = new MyMwcObjectBuilder_Inventory(items, MyInventory.DEFAULT_MAX_ITEMS);\n\n            var cargoBoxBuilder = new MyMwcObjectBuilder_CargoBox(inventory)\n                {\n                    CargoBoxType = MyMwcObjectBuilder_CargoBox_TypesEnum.DroppedItems\n                };\n            cargoBoxBuilder.PersistentFlags |= MyPersistentEntityFlags.ActivatedOnAllDifficulties;\n\n            var cargoBox = MyEntities.CreateFromObjectBuilderAndAdd(null, cargoBoxBuilder, worldMatrix);\n\n            var matrix = cargoBox.WorldMatrix;\n            matrix.Translation += 0.8f * dropper.WorldVolume.Radius * dropper.GetForward();\n            matrix.Translation -= 0.5f * dropper.WorldVolume.Radius * dropper.GetUp();\n            cargoBox.WorldMatrix = matrix;\n\n            cargoBoxBuilder.EntityId = cargoBox.EntityId.ToNullableUInt();\n            if (MyMultiplayerGameplay.IsRunning)\n            {\n                MyMultiplayerGameplay.Static.NewEntity(cargoBoxBuilder, cargoBox.WorldMatrix);\n                MyMultiplayerGameplay.Static.HookEntity(cargoBox);\n            }\n        }\n\n        public override bool Update(bool hasFocus)\n        {\n            if (base.Update(hasFocus) == false)\n            {\n                return false;\n            }\n\n            ScreenTimeout -= TimeSpan.FromMilliseconds(MyConstants.PHYSICS_STEP_SIZE_IN_MILLISECONDS);\n\n            if (m_isTransferingInProgress)\n            {\n                m_transferingProgress.Update();\n                if (m_transferingProgressCue == null || !m_transferingProgressCue.Value.IsPlaying)\n                {\n                    m_timeFromStartTransfering += MyConstants.PHYSICS_STEP_SIZE_IN_MILLISECONDS;\n                    if (m_timeFromStartTransfering >= COMPLETE_TRANSFER_TIME)\n                    {\n                        CompleteTransfering();\n                    }\n                }\n                HideTooltips();\n            }\n            else if (ScreenTimeout <= TimeSpan.Zero)\n            {\n                CloseScreen();\n            }\n\n            UpdateInventoryCapacityLabels();\n            UpdateNextAndPreviousShipButtonsVisibility();\n\n            return true;\n        }\n\n        private bool IsDraggingOut()\n        {\n            return m_dragAndDrop.IsActive() && !IsMouseOver();\n        }\n\n        public override bool Draw(float backgroundFadeAlpha)\n        {\n            if (m_isTransferingInProgress)\n            {\n                m_transferingProgress.Draw();\n            }\n            else\n            {\n                if (!base.Draw(backgroundFadeAlpha))\n                    return false;\n                if (IsDraggingOut())\n                {\n                    MyGuiManager.DrawSpriteBatch(MyGuiManager.GetLockedInventoryItem(), MyGuiManager.MouseCursorPosition,\n                                                 m_dragAndDrop.GetSize().Value, new Color(new Vector4(1f, 0f, 0f, 0.5f)),\n                                                 MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER);\n                }\n            }            \n\n            //if (m_isTransferingInProgress)\n            //{\n            //    float tempTransitionAlhpa = m_transitionAlpha;\n            //    m_transitionAlpha = 0.3f;\n            //    if (!base.Draw(backgroundFadeAlpha)) return false;\n            //    m_transitionAlpha = tempTransitionAlhpa;                \n\n            //    m_transferingProgress.Draw();\n            //}\n            //else\n            //{\n            //    if (!base.Draw(backgroundFadeAlpha)) return false;\n\n            //    if (IsDraggingOut())\n            //    {\n            //        MyGuiManager.DrawSpriteBatch(MyGuiManager.GetLockedButtonTexture(), MyGuiManager.MouseCursorPosition,\n            //                                     m_dragAndDrop.GetSize().Value, new Color(new Vector4(1f, 0f, 0f, 0.5f)),\n            //                                     MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER);\n            //    }\n            //}\n\n            return true;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/MyGuiScreenJoinGame.cs",
    "content": "﻿using System;\nusing System.Diagnostics;\nusing System.Text;\nusing System.Collections.Generic;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Sessions;\nusing MinerWars.CommonLIB.AppCode.Networking.Multiplayer;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.AppCode.Game.HUD;\nusing MinerWars.AppCode.Game.Sessions.Multiplayer;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.Game.Gameplay;\nusing MinerWars.AppCode.Game.World;\nusing MinerWars.AppCode.Networking;\n\nnamespace MinerWars.AppCode.Game.GUI\n{\n    class MyGuiScreenJoinGame : MyGuiScreenBase\n    {\n        enum MyGameTableHeaderEnum\n        {\n            //Ping,\n            HostName,\n            SectorName,\n            GameType,\n            PlayerCount,\n            //JoinMode,\n        }\n\n        static readonly MyGameTableHeaderEnum[] m_gameTableHeaders = (MyGameTableHeaderEnum[])Enum.GetValues(typeof(MyGameTableHeaderEnum));\n\n        static int HeaderCount\n        {\n            get { return m_gameTableHeaders.Length; }\n        }\n\n        enum MySectorType\n        {\n            Official,\n            Players,\n            Friends,\n        }\n\n\n\n        struct MyGameExtendedInfo\n        {\n            public readonly MyGameInfo GameInfo;\n            public int Ping;\n            public MySectorType SectorType;\n            public MyGameTypes GameType;\n\n            public MyGameExtendedInfo(MyGameInfo gameInfo)\n            {\n                GameInfo = gameInfo;\n                Ping = MyMwcUtils.GetRandomInt(10, 20);\n                SectorType = MySectorType.Official;\n                GameType = gameInfo.GameType;\n            }\n        }\n\n        MyGuiScreenBase m_closeAfterSuccessfulEnter;\n\n        readonly MyGuiControlListbox m_gameList;\n        readonly MyGuiControlTextbox m_searchTextbox;\n        readonly List<MyGameExtendedInfo> m_games;\n        readonly MyGuiControlCheckbox m_deathCheck;\n        readonly MyGuiControlCheckbox m_storyCheck;\n\n\n        int? m_selectRow = null;\n        int? m_selectColumn = null;\n\n        MyGameTableHeaderEnum m_orderByHeader = MyGameTableHeaderEnum.PlayerCount;\n        bool m_orderAsc = false;\n\n        int m_selectedGameIndex;\n\n        /// <summary>\n        /// Locker used for populating the listbox with games.\n        /// </summary>\n        private readonly object m_repopulateLocker = new object();\n\n        MyGuiScreenWaiting m_waitingScreen;\n\n        private MyGameTypes m_gameTypeFilter;\n\n        private ConnectionHandler m_serverDisconnectedHandler;\n        private MyGuiScreenWaiting m_waitDialog;\n\n        public MyGuiScreenJoinGame(MyGuiScreenBase closeAfterSuccessfulEnter, MyGameTypes gameTypeFilter)\n            : base(new Vector2(0.5f, 0.5f), MyGuiConstants.SCREEN_BACKGROUND_COLOR, new Vector2(0.95f, 0.8f))\n        {\n            m_size = new Vector2(0.95f, 0.85f);\n            m_serverDisconnectedHandler = new ConnectionHandler(Static_ServerDisconnected);\n\n            m_gameTypeFilter = gameTypeFilter;\n            m_backgroundTexture = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\BackgroundScreen\\\\VideoBackground\", flags: TextureFlags.IgnoreQuality);\n\n            m_closeAfterSuccessfulEnter = closeAfterSuccessfulEnter;\n            m_enableBackgroundFade = true;\n            m_games = new List<MyGameExtendedInfo>();\n            AddCaption(MyTextsWrapperEnum.JoinGame, new Vector2(0, 0.0075f));\n\n            Vector2 menuPositionOrigin = new Vector2(-0.31f, -m_size.Value.Y / 2.0f + 0.15f);\n            Vector2 buttonDelta = new Vector2(0.22f, 0);\n            const MyGuiControlButtonTextAlignment menuButtonTextAlignement = MyGuiControlButtonTextAlignment.CENTERED;\n\n            Controls.Add(new MyGuiControlLabel(this, menuPositionOrigin, null, MyTextsWrapperEnum.SearchGameToJoin, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER));\n\n            m_searchTextbox = new MyGuiControlTextbox(this, menuPositionOrigin + buttonDelta, MyGuiControlPreDefinedSize.LARGE, \"\", 40, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, MyGuiControlTextboxType.NORMAL);\n            m_searchTextbox.TextChanged += OnSearchTextChanged;\n            Controls.Add(m_searchTextbox);\n\n            menuPositionOrigin += new Vector2(0.395f, 0);\n\n            var refreshButton = new MyGuiControlButton(\n                this,\n                menuPositionOrigin + buttonDelta,\n                MyGuiConstants.BACK_BUTTON_SIZE,\n                MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.Refresh,\n                MyGuiConstants.BUTTON_TEXT_COLOR,\n                MyGuiConstants.BUTTON_TEXT_SCALE,\n                OnRefreshButtonClick,\n                menuButtonTextAlignement,\n                true,\n                MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER,\n                true);\n            Controls.Add(refreshButton);\n\n            menuPositionOrigin.Y += 0.052f;\n            menuPositionOrigin.X = -0.33f;\n\n            var storyLabel = new MyGuiControlLabel(this, menuPositionOrigin, null, MyTextsWrapperEnum.Story, Vector4.One, 1.0f, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER);\n            Controls.Add(storyLabel);\n\n            menuPositionOrigin.X = -0.35f;\n            m_storyCheck = new MyGuiControlCheckbox(this, menuPositionOrigin, true, Vector4.One, null);\n            m_storyCheck.OnCheck = CheckChanged;\n            Controls.Add(m_storyCheck);\n\n            menuPositionOrigin.X = -0.2f;\n            var deathLabel = new MyGuiControlLabel(this, menuPositionOrigin, null, MyTextsWrapperEnum.Deathmatch, Vector4.One, 1.0f, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER);\n            Controls.Add(deathLabel);\n\n            menuPositionOrigin.X = -0.22f;\n            m_deathCheck = new MyGuiControlCheckbox(this, menuPositionOrigin, true, Vector4.One, null);\n            m_deathCheck.OnCheck = CheckChanged;\n            Controls.Add(m_deathCheck);\n\n            //var storyButton = new MyGuiControlButton(this, menuPositionOrigin, null, Vector4.One, MyTextsWrapperEnum.Story, Vector4.One, 1.0f, \n\n            menuPositionOrigin.Y += 0.25f;\n            menuPositionOrigin.X = 0;\n            m_gameList = new MyGuiControlListbox(this,\n                menuPositionOrigin,\n                new Vector2(0.22f, 0.04f),\n                MyGuiConstants.LISTBOX_BACKGROUND_COLOR,\n                MyTextsWrapper.Get(MyTextsWrapperEnum.JoinGame),\n                MyGuiConstants.LABEL_TEXT_SCALE,\n                HeaderCount, 10, HeaderCount,\n                true, true, false,\n                null, null, MyGuiManager.GetScrollbarSlider(), MyGuiManager.GetHorizontalScrollbarSlider(), 2, 1, MyGuiConstants.LISTBOX_BACKGROUND_COLOR_BLUE, 0f, 0f, 0f, 0f, 0, 0, -0.01f, -0.01f, -0.02f, 0.02f);\n            m_gameList.ItemSelect += OnGamesItemSelect;\n            m_gameList.DisplayHighlight = true;\n            m_gameList.MultipleSelection = true;\n            m_gameList.ItemDoubleClick += GameListOnItemDoubleClick;\n            m_gameList.HighlightHeadline = true;\n            m_gameList.EnableAllRowHighlightWhileMouseOver(true, true);\n            m_gameList.SetCustomCollumnsWidths(new List<float>()\n            {\n                0.15f, 0.30f, 0.15f, 0.10f\n            });\n            Controls.Add(m_gameList);\n\n            buttonDelta = new Vector2(0.1f, m_size.Value.Y / 2.0f - MyGuiConstants.MESSAGE_BOX_BORDER_AREA_Y - MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE.Y / 2.0f - 0.06f);\n            Controls.Add(new MyGuiControlButton(this, new Vector2(-buttonDelta.X, buttonDelta.Y), MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE,\n                MyGuiConstants.BUTTON_BACKGROUND_COLOR, MyTextsWrapperEnum.Ok, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE,\n                OnOkClick, MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n            Controls.Add(new MyGuiControlButton(this, new Vector2(+buttonDelta.X, buttonDelta.Y), MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE,\n                MyGuiConstants.BUTTON_BACKGROUND_COLOR, MyTextsWrapperEnum.Cancel, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE,\n                OnCancelClick, MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n\n            AddHeaders();\n        }\n\n        public void CheckChanged(MyGuiControlCheckbox sender)\n        {\n            m_gameTypeFilter &= ~MyGameTypes.Deathmatch;\n            m_gameTypeFilter &= ~MyGameTypes.Story;\n\n            if (m_deathCheck.Checked)\n                m_gameTypeFilter |= MyGameTypes.Deathmatch;\n\n            if (m_storyCheck.Checked)\n                m_gameTypeFilter |= MyGameTypes.Story;\n\n            GetDataFromServer(true);\n        }\n\n        public override void LoadContent()\n        {\n            base.LoadContent();\n\n            GetDataFromServer(true);\n        }\n\n        void OnRefreshButtonClick(MyGuiControlButton sender)\n        {\n            GetDataFromServer(true);\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenJoinGame\";\n        }\n\n        void OnOkClick(MyGuiControlButton sender)\n        {\n            TryJoinGame();\n        }\n\n        void GameListOnItemDoubleClick(object sender, MyGuiControlListboxItemEventArgs eventArgs)\n        {\n            if (eventArgs.RowIndex > 0)\n            {\n                TryJoinGame();\n            }\n        }\n\n        void TryJoinGame()\n        {\n            if (m_selectedGameIndex < m_games.Count)\n            {\n                var gameInfo = m_games[m_selectedGameIndex].GameInfo;\n\n                if (!MinerWars.AppCode.Game.World.MyClientServer.MW25DEnabled && (gameInfo.Name.ToUpper().Contains(\"2,5D\") || gameInfo.Name.ToUpper().Contains(\"2.5D\")))\n                {\n                    MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.MESSAGE, MyTextsWrapperEnum.YouNeed25D, MyTextsWrapperEnum.MessageBoxCaptionFeatureDisabled, MyTextsWrapperEnum.Ok, null));\n                    return;\n                }\n\n                MyMultiplayerLobby.Static.JoinGame(gameInfo, String.Empty, OnGameJoined, OnGameEnterDisallowed, OnDownloadingSector);\n                // Longer join timeout...to be able to join after loading\n                m_waitingScreen = new MyGuiScreenWaiting(MyTextsWrapperEnum.JoiningGame, OnJoiningCancelOrTimeout, TimeSpan.FromSeconds(120));\n                MyGuiManager.AddScreen(m_waitingScreen);\n            }\n        }\n\n        void OnDownloadingSector()\n        {\n            if (m_waitingScreen != null)\n            {\n                m_waitingScreen.CloseScreenNow();\n                m_waitingScreen = new MyGuiScreenWaiting(MyTextsWrapperEnum.DownloadingData, OnJoiningCancelOrTimeout);\n                MyGuiManager.AddModalScreen(m_waitingScreen, null);\n            }\n        }\n\n        void OnJoiningCancelOrTimeout(object sender, WaitingCanceledArgs waitingCanceledArgs)\n        {\n            MyMultiplayerPeers.Static.Shutdown();\n\n            switch (waitingCanceledArgs.CancelReason)\n            {\n                case CancelReasonEnum.UserCancel:\n                    // do nothing\n                    break;\n                case CancelReasonEnum.Timeout:\n                    MyGuiScreenMessageBox.Show(MyTextsWrapperEnum.JoinGameTimeout, MyTextsWrapperEnum.JoinGame, MyMessageBoxType.ERROR);\n                    break;\n                default:\n                    throw new ArgumentOutOfRangeException();\n            }\n\n            GetDataFromServer(true);\n        }\n\n        void OnGameEnterDisallowed()\n        {\n            Debug.Assert(m_waitingScreen != null);\n            m_waitingScreen.CloseScreen();\n\n            MyGuiManager.AddModalScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.DenyEnter, MyTextsWrapperEnum.MessageBoxCaptionError, MyTextsWrapperEnum.Ok, null), null);\n        }\n\n        void OnGameJoined(MyGameInfo game, MyResultCodeEnum resultCode, MyMwcObjectBuilder_Checkpoint checkpointBuilder)\n        {\n            Debug.Assert(m_waitingScreen != null);\n            m_waitingScreen.CloseScreen();\n\n            if (resultCode == MyResultCodeEnum.OK)\n            {\n                var loadingScreen = MySession.StartJoinMultiplayerSession(game.GameType, game.Difficulty, checkpointBuilder);\n                loadingScreen.Closed += new MyGuiScreenBase.ScreenHandler(OnLoadFinished);\n            }\n            else if (resultCode == MyResultCodeEnum.GAME_NOT_EXISTS)\n            {\n                MyGuiManager.AddModalScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.MP_GameHasEnded, MyTextsWrapperEnum.MessageBoxCaptionError, MyTextsWrapperEnum.Ok, null), null);\n                GetDataFromServer(true);\n            }\n            else\n            {\n                MyGuiManager.AddModalScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.ErrorCreatingNetworkConnection, MyTextsWrapperEnum.MessageBoxCaptionError, MyTextsWrapperEnum.Ok, null), null);\n                GetDataFromServer(true);\n            }\n        }\n\n        void OnLoadFinished(MyGuiScreenBase screen)\n        {\n\n        }\n\n\n        void OnCancelClick(MyGuiControlButton sender)\n        {\n            CloseScreen();\n        }\n\n        private void GetDataFromServer(bool withWaitDialog)\n        {\n            m_games.Clear();\n\n            if (MySteam.IsActive && !MySteam.IsOnline)\n            {\n                MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.SteamInvalidTicketText, MyTextsWrapperEnum.SteamInvalidTicketCaption, MyTextsWrapperEnum.Ok, null));\n                return;\n            }\n\n            try\n            {\n                if (m_gameTypeFilter != MyGameTypes.None)\n                {\n                    MyMultiplayerPeers.Static.ServerDisconnected -= m_serverDisconnectedHandler;\n                    MyMultiplayerLobby.Static.GetGames(OnGetGames, m_searchTextbox.Text, m_gameTypeFilter);\n                    if (withWaitDialog)\n                    {\n                        MyMultiplayerPeers.Static.ServerDisconnected += m_serverDisconnectedHandler;\n                        m_waitDialog = new MyGuiScreenWaiting(MyTextsWrapperEnum.LoadFromServer, new EventHandler<WaitingCanceledArgs>(WaitCanceled), TimeSpan.FromSeconds(30));\n                        MyGuiManager.AddModalScreen(m_waitDialog, null);\n                    }\n                }\n                else\n                {\n                    OnGetGames(new List<MyGameInfo>());\n                }\n            }\n            catch (Exception exception)\n            {\n                HandleError(new StringBuilder(\"Cannot connect to server\"));\n                MyMwcLog.WriteLine(\"Cannot connect to server:\");\n                MyMwcLog.WriteLine(exception);\n                MyMultiplayerPeers.Static.Shutdown();\n            }\n        }\n\n        void WaitCanceled(object sender, WaitingCanceledArgs args)\n        {\n            MyMultiplayerPeers.Static.ServerDisconnected -= m_serverDisconnectedHandler;\n            MyMultiplayerLobby.Static.CancelGetGames();\n\n            if (args.CancelReason == CancelReasonEnum.Timeout)\n            {\n                ShowNetworkError();\n            }\n        }\n\n        void Static_ServerDisconnected(Lidgren.Network.NetConnection connection)\n        {\n            MySteam.RefreshSessionTicket();\n\n            if (m_waitDialog != null)\n            {\n                m_waitDialog.CloseScreen();\n                m_waitDialog = null;\n            }\n            MyMultiplayerPeers.Static.ServerDisconnected -= m_serverDisconnectedHandler;\n            ShowNetworkError();\n        }\n\n        private static void ShowNetworkError()\n        {\n            var caption = MyTextsWrapper.Get(MyTextsWrapperEnum.MessageBoxNetworkErrorCaption);\n            var msg = new StringBuilder(MyTextsWrapper.GetFormatString(MyTextsWrapperEnum.MP_CannotConnectServerJoin, MinerWars.CommonLIB.AppCode.Utils.MyMwcNetworkingConstants.NETWORKING_PORT_MASTER_SERVER));\n            MyGuiManager.AddModalScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, msg, caption, MyTextsWrapperEnum.Ok, null), null);\n        }\n\n        void OnGetGames(List<MyGameInfo> gamesList)\n        {\n            MyMultiplayerPeers.Static.ServerDisconnected -= m_serverDisconnectedHandler;\n            if (m_waitDialog != null)\n            {\n                m_waitDialog.CloseScreen();\n                m_waitDialog = null;\n            }\n\n            lock (m_repopulateLocker)\n            {\n                if (!FillGamesFromLobbiesInfo(gamesList))\n                    return;\n\n                OrderGames();\n                RefreshGameList();\n            }\n        }\n\n        void HandleError(StringBuilder text)\n        {\n            MyGuiManager.AddModalScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.ErrorCreatingNetworkConnection, MyTextsWrapperEnum.MessageBoxCaptionError, MyTextsWrapperEnum.Ok, null), null);\n        }\n\n        private bool RefreshGameList()\n        {\n            m_gameList.RemoveAllRows();\n            AddHeaders();\n\n            foreach (MyGameExtendedInfo gameInfo in m_games)\n            {\n                AddGame(gameInfo);\n            }\n\n            return true;\n        }\n\n        private void OrderGames()\n        {\n            if (m_games == null) return;\n\n            m_games.Sort(CompareByHeaderType);\n        }\n\n        int CompareByHeaderType(MyGameExtendedInfo x, MyGameExtendedInfo y)\n        {\n            int resultForAscending;\n\n            switch (m_orderByHeader)\n            {\n                //case MyGameTableHeaderEnum.Ping:\n                //    resultForAscending = x.Ping.CompareTo(y.Ping);\n                //    break;\n                case MyGameTableHeaderEnum.HostName:\n                    resultForAscending = String.CompareOrdinal(x.GameInfo.HostDisplayName, y.GameInfo.HostDisplayName);\n                    break;\n                case MyGameTableHeaderEnum.SectorName:\n                    resultForAscending = String.CompareOrdinal(x.GameInfo.Name, y.GameInfo.Name);\n                    break;\n                case MyGameTableHeaderEnum.GameType:\n                    resultForAscending = ((int)x.GameType).CompareTo(((int)y.GameType));\n                    break;\n                case MyGameTableHeaderEnum.PlayerCount:\n                    resultForAscending = x.GameInfo.PlayerCount.CompareTo(y.GameInfo.PlayerCount);\n                    break;\n                    //case MyGameTableHeaderEnum.JoinMode:\n                    //    resultForAscending = x.GameInfo.JoinMode.CompareTo(y.GameInfo.JoinMode);\n                    break;\n                default:\n                    throw new IndexOutOfRangeException(\"m_orderByHeader\");\n            }\n\n            if (m_orderAsc)\n            {\n                return resultForAscending;\n            }\n            else\n            {\n                return -resultForAscending;\n            }\n        }\n\n        private bool FillGamesFromLobbiesInfo(List<MyGameInfo> games)\n        {\n            if (games == null || m_games == null) return false;\n\n            m_games.Clear();\n\n            foreach (MyGameInfo game in games)\n            {\n                if (game.Name.StartsWith(\"**\"))\n                    continue;\n\n                if (MyMwcSectorIdentifier.Is25DSector(game.Name))\n                {\n                    if (MyClientServer.MW25DEnabled)\n                    {\n                        m_games.Add(new MyGameExtendedInfo(game));\n                    }\n                }\n                else\n                {\n                    if (MyClientServer.HasFullGame)\n                    {\n                        m_games.Add(new MyGameExtendedInfo(game));\n                    }\n                }\n            }\n\n            return true;\n        }\n\n        private void AddHeaders()\n        {\n            int rowIndex = m_gameList.AddRow();\n\n            for (int currentHeader = 0; currentHeader < HeaderCount; currentHeader++)\n            {\n                AddHeader(rowIndex, currentHeader);\n            }\n        }\n\n        void AddHeader(int rowIndex, int currentColumn)\n        {\n            m_gameList.AddItem(\n                GetHeaderKey(currentColumn, rowIndex),\n                GetHeaderText(m_gameTableHeaders[currentColumn]),\n                null,\n                rowIndex,\n                currentColumn);\n        }\n\n        static StringBuilder GetHeaderText(MyGameTableHeaderEnum headerType)\n        {\n            switch (headerType)\n            {\n                //case MyGameTableHeaderEnum.Ping:\n                //    return MyTextsWrapper.Get(MyTextsWrapperEnum.HeaderPing);\n                case MyGameTableHeaderEnum.HostName:\n                    return MyTextsWrapper.Get(MyTextsWrapperEnum.HeaderHostName);\n                case MyGameTableHeaderEnum.SectorName:\n                    return MyTextsWrapper.Get(MyTextsWrapperEnum.HeaderSectorName);\n                case MyGameTableHeaderEnum.GameType:\n                    return MyTextsWrapper.Get(MyTextsWrapperEnum.HeaderType);\n                case MyGameTableHeaderEnum.PlayerCount:\n                    return MyTextsWrapper.Get(MyTextsWrapperEnum.HeaderPlayerCount);\n                //case MyGameTableHeaderEnum.JoinMode:\n                //    return new StringBuilder(\"JoinMode\");\n                default:\n                    throw new ArgumentOutOfRangeException(\"headerType\");\n            }\n        }\n\n        static int GetHeaderKey(int currentColumn, int rowIndex)\n        {\n            return rowIndex * HeaderCount + currentColumn;\n        }\n\n        private bool AddGame(MyGameExtendedInfo gameInfo)\n        {\n            if (m_gameList == null) return false;\n\n            StringBuilder pingText = new StringBuilder(6);\n            pingText.Append(\"? \"); // TODO: measure ping\n            pingText.Append(\"ms\");\n            int rowIndex = m_gameList.AddRow();\n            //m_gameList.AddItem(rowIndex * (HeaderCount) + 0, pingText, null, rowIndex, 0);\n            m_gameList.AddItem(rowIndex * (HeaderCount) + 0, new StringBuilder(gameInfo.GameInfo.HostDisplayName), null, rowIndex, 0);\n            m_gameList.AddItem(rowIndex * (HeaderCount) + 1, new StringBuilder(gameInfo.GameInfo.Name), GetSectorIcon(gameInfo.GameInfo), rowIndex, 1);\n            m_gameList.AddItem(rowIndex * (HeaderCount) + 2, GetGameType(gameInfo.GameInfo), null, rowIndex, 2);\n            m_gameList.AddItem(rowIndex * (HeaderCount) + 3, new StringBuilder(gameInfo.GameInfo.PlayerCount + \"/\" + gameInfo.GameInfo.MaxPlayerCount), null, rowIndex, 3);\n            //m_gameList.AddItem(rowIndex * (HeaderCount-1) + 5, new StringBuilder(gameInfo.GameInfo.JoinMode.ToString()), null, rowIndex, 5);\n\n            return true;\n        }\n\n        private MyTexture2D GetSectorIcon(MyGameInfo gameInfo)\n        {\n            switch (0)\n            {\n                default:\n                    return null;\n            }\n        }\n\n        private StringBuilder GetGameType(MyGameInfo gameInfo)\n        {\n            switch (gameInfo.GameType)\n            {\n                case MyGameTypes.Story:\n                    return new StringBuilder(MyTextsWrapper.Get(MyTextsWrapperEnum.Story) + \" (\" + MyTextsWrapper.Get(MyGameplayConstants.GetGameplayDifficultyProfile(gameInfo.Difficulty).DifficultyName) + \")\");\n                    break;\n                case MyGameTypes.Deathmatch:\n                    return MyTextsWrapper.Get(MyTextsWrapperEnum.Deathmatch);\n                    break;\n                default:\n                    return MyTextsWrapper.Get(MyTextsWrapperEnum.UNKNOWN);\n                    break;\n            }\n        }\n\n        void OnSearchTextChanged(object sender, EventArgs e)\n        {\n            if (sender == m_searchTextbox)\n            {\n                GetDataFromServer(false);\n            }\n        }\n\n        void OnGamesItemSelect(object sender, MyGuiControlListboxItemEventArgs eventArgs)\n        {\n            if (eventArgs.RowIndex == 0)\n            {\n                //m_selectColumn = eventArgs.ItemIndex;\n\n                //order items\n                if (m_gameTableHeaders[eventArgs.ItemIndex] == m_orderByHeader)\n                {\n                    m_orderAsc = !m_orderAsc;\n                }\n                else\n                {\n                    m_orderAsc = true;\n                    m_orderByHeader = m_gameTableHeaders[eventArgs.ItemIndex];\n                }\n                OrderGames();\n                RefreshGameList();\n            }\n            else\n            {\n                m_selectedGameIndex = eventArgs.RowIndex - 1;\n                m_selectRow = eventArgs.RowIndex;\n            }\n\n        }\n\n        public override bool Update(bool hasFocus)\n        {\n            if (m_selectColumn.HasValue)\n            {\n                m_gameList.SelectColumn(m_selectColumn.Value);\n                m_selectColumn = null;\n            }\n            if (m_selectRow.HasValue)\n            {\n                m_gameList.SelectRow(m_selectRow.Value);\n                m_selectRow = null;\n            }\n            return base.Update(hasFocus);\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/MyGuiScreenJournal.cs",
    "content": "﻿using System;\nusing System.Diagnostics;\nusing System.Text;\nusing KeenSoftwareHouse.Library.Extensions;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.GUI.Helpers;\nusing MinerWars.AppCode.Game.Inventory;\nusing MinerWars.AppCode.Game.Journal;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Missions;\nusing System.Collections.Generic;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.Utils;\n\nnamespace MinerWars.AppCode.Game.GUI\n{        \n    enum MyJournalCategory\n    {                \n        GlobalEvents = 1,\n        CurrentMission = 2,\n        AccomplishedMissions = 3,\n        AllMissions = 4,\n        Story = 5,\n        AllEvents = 6,\n    }    \n\n    //Journal removed\n    /*\n    /// <summary>\n    /// TODO filter\n    /// Will be finished when we have new GUI elements\n    /// </summary>\n    class MyGuiScreenJournal : MyGuiScreenBase\n    {        \n        private readonly MyGuiControlLabel m_gameTimeLabel;\n        private MyGuiControlMultilineText m_descriptionText;\n\n        private MyGuiControlListbox m_journalListbox;\n        private int? m_selectedEventKey;\n\n        private MyGuiControlCheckbox m_globalEventsCheckbox;\n        //private MyGuiControlCheckbox m_currentMissionCheckbox;\n        private MyGuiControlCheckbox m_missionsCheckbox;\n        //private MyGuiControlCheckbox m_accomplishedCheckbox;\n        private MyGuiControlCheckbox m_storyCheckbox;\n        private MyGuiControlCheckbox m_allEventsCheckbox;\n\n        private MyEventLog m_eventLog;        \n\n        private const string EVENT_TIME_FORMAT = \"[{0}] \";\n        private const string SUBMISSION_SEPARATOR = \"- \";\n        private static readonly Vector2 CHECK_BOX_SIZE = new Vector2(68/1600f,68/1200f);\n        private static readonly Vector2 CHECK_BOX_INNER_SIZE = new Vector2(60 / 1600f, 60 / 1200f);\n        private static readonly Vector4 CHECK_BOX_COLOR = new Vector4(0.75f, 0.75f, 0.75f, 0.9f);\n        private static readonly Vector4 BLUEPRINT_COLOR = new Vector4(1f, 1f, 1f, 0.9f);\n        private static readonly Vector4 BLUEPRINT_BORDER_COLOR = new Vector4(0.75f, 0.75f, 0.75f, 0.9f);\n        private static Predicate<MyEventLogEntry>[] m_filterConditions;        \n\n        static MyGuiScreenJournal()\n        {\n            m_filterConditions = new Predicate<MyEventLogEntry>[MyMwcUtils.GetMaxValueFromEnum<MyJournalCategory>()+1];            \n            // show all\n            m_filterConditions[(int) MyJournalCategory.AllEvents] = \n                eventLog => \n                    true;\n            // show only global events\n            m_filterConditions[(int)MyJournalCategory.GlobalEvents] = \n                eventLog => \n                    eventLog.EventType == EventTypeEnum.GlobalEvent;\n            // show only current mission and submissions\n            m_filterConditions[(int) MyJournalCategory.CurrentMission] =\n                eventLog =>\n                    MyMissions.ActiveMission != null &&\n                    ((int)MyMissions.ActiveMission.ID == eventLog.EventTypeID ||\n                    MyMissions.ActiveMission.Objectives.Exists(subM => (int)subM.ID == eventLog.EventTypeID));\n            // show all missions (started, finished)\n            m_filterConditions[(int)MyJournalCategory.AllMissions] = \n                eventLog => \n                    eventLog.EventType == EventTypeEnum.MissionStarted || \n                    eventLog.EventType == EventTypeEnum.MissionFinished || \n                    eventLog.EventType == EventTypeEnum.SubmissionAvailable || \n                    eventLog.EventType == EventTypeEnum.SubmissionFinished||\n                    eventLog.EventType == EventTypeEnum.Story;\n            // show finished missions\n            m_filterConditions[(int)MyJournalCategory.AccomplishedMissions] =\n                eventLog =>                  \n                    eventLog.EventType == EventTypeEnum.MissionFinished ||                    \n                    eventLog.EventType == EventTypeEnum.SubmissionFinished;\n\n            // show finished missions\n            m_filterConditions[(int) MyJournalCategory.Story] =\n                eventLog =>\n                eventLog.EventType == EventTypeEnum.Story;\n        }\n\n        public MyGuiScreenJournal(MyEventLog eventLog)\n            : base(new Vector2(0.5f, 0.5f), MyGuiConstants.SCREEN_BACKGROUND_COLOR, new Vector2(1f, 1f))\n        {\n            Debug.Assert(eventLog != null);\n\n            m_eventLog = eventLog;\n\n            if (eventLog.Events.Count>0)\n            {\n                m_selectedEventKey = eventLog.Events.Count-1;\n            }\n\n            m_backgroundTexture = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\Journal\\\\JournalBackground\", flags: TextureFlags.IgnoreQuality);\n            m_size = new Vector2(987/1600f,845/1200f);\n            // Title\n            AddCaption(MyTextsWrapperEnum.JournalDialogTitle, new Vector2(0, 0.005f));\n\n\n\n            var m_cancelButton = new MyGuiControlButton(this, new Vector2(0.2491f, -0.3064f), new Vector2(131/1600f,86/1200f), \n           MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n           MyGuiManager.GetJournalCloseTexture(), null, null, MyTextsWrapperEnum.EmptyDescription,\n           MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, MyGuiControlButtonTextAlignment.CENTERED, OnClose_Click,\n           true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true, true);\n            m_cancelButton.Text = null;\n            Controls.Add(m_cancelButton);\n\n            // Current date & time (clock)\n            m_gameTimeLabel = new MyGuiControlLabel(\n                this, new Vector2(-0.2229f,-0.2431f), null, \n                new StringBuilder(MySession.Static.GameDateTime.ToString()), \n                MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, \n                MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER);\n\n            Controls.Add(m_gameTimeLabel);\n\n\n\n            var checkBoxDeltaX = 55/1600f;\n\n            // filtering checkboxes\n            Vector2 filterCheckboxesPosition = new Vector2(-0.1922f,0.2438f);\n            MyGuiEventHelper allEventsHelper = MyGuiEventHelpers.GetJournalCategoryHelper(MyJournalCategory.AllEvents);            \n            m_allEventsCheckbox = new MyGuiControlCheckbox(this, filterCheckboxesPosition, CHECK_BOX_SIZE,\n                                                           allEventsHelper.Icon, allEventsHelper.Icon,\n                                                           allEventsHelper.Description, true, CHECK_BOX_COLOR, true,false,CHECK_BOX_INNER_SIZE);\n            m_allEventsCheckbox.OnCheck += OnFilterChanged;\n            filterCheckboxesPosition.X += checkBoxDeltaX;\n            Controls.Add(m_allEventsCheckbox);\n\n            MyGuiEventHelper globalEventsHelper = MyGuiEventHelpers.GetJournalCategoryHelper(MyJournalCategory.GlobalEvents);            \n            m_globalEventsCheckbox = new MyGuiControlCheckbox(this, filterCheckboxesPosition, CHECK_BOX_SIZE,\n                                                              globalEventsHelper.Icon, globalEventsHelper.Icon,\n                                                              globalEventsHelper.Description, false, CHECK_BOX_COLOR, true, false, CHECK_BOX_INNER_SIZE);\n            m_globalEventsCheckbox.OnCheck += OnFilterChanged;\n            filterCheckboxesPosition.X += checkBoxDeltaX;\n            Controls.Add(m_globalEventsCheckbox);\n\n\n            MyGuiEventHelper allMissionsHelper = MyGuiEventHelpers.GetJournalCategoryHelper(MyJournalCategory.AllMissions);            \n            m_missionsCheckbox = new MyGuiControlCheckbox(this, filterCheckboxesPosition, CHECK_BOX_SIZE,\n                                                              allMissionsHelper.Icon, allMissionsHelper.Icon,\n                                                              allMissionsHelper.Description, false, CHECK_BOX_COLOR, true,false, CHECK_BOX_INNER_SIZE);\n            m_missionsCheckbox.OnCheck += OnFilterChanged;\n            filterCheckboxesPosition.X += checkBoxDeltaX;\n            Controls.Add(m_missionsCheckbox);\n\n\n            MyGuiEventHelper storyHelper = MyGuiEventHelpers.GetJournalCategoryHelper(MyJournalCategory.Story);\n            m_storyCheckbox = new MyGuiControlCheckbox(this, filterCheckboxesPosition, CHECK_BOX_SIZE,\n                                                              storyHelper.Icon, storyHelper.Icon,\n                                                              storyHelper.Description, false, CHECK_BOX_COLOR, true, false, CHECK_BOX_INNER_SIZE);\n\n            m_storyCheckbox.OnCheck += OnFilterChanged;\n            filterCheckboxesPosition.X += checkBoxDeltaX;\n            Controls.Add(m_storyCheckbox);\n\n\n\n\n            // ----- description -----\n            m_descriptionText = new MyGuiControlMultilineText(\n                this,\n                new Vector2(0.1162f - 7/1600f, -0.0025f),\n                new Vector2(375/1600f, 506/1200f),\n                //new Vector2(0.27f, 0.3f),\n                Vector4.Zero,\n                MyGuiManager.GetFontMinerWarsBlue(), 0.66f,\n                MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP,\n                MyTextsWrapper.Get(MyTextsWrapperEnum.Blank),false,true);\n            Controls.Add(m_descriptionText);\n            m_descriptionText.ScrollbarOffset = 0.0292f +21/1600f;\n\n\n            m_journalListbox = new MyGuiControlListbox(this,\n                                                  new Vector2(-0.1287f, -0.01f),\n                                                  new Vector2(359/1600f, 69/1200f),\n                                                  Vector4.Zero,\n                                                  null,\n                                                  0.2f,\n                                                  1, 7, 1, true, true, false,\n                                                  null, null, MyGuiManager.GetScrollbarSlider(), null,\n                                                  0, 0, Vector4.Zero, 0, 0, 0, 0, 0, 0, -0.007f);\n\n\n            m_journalListbox.UseFullItemSizeIcon = true;\n            m_journalListbox.TextOffset = new Vector2(0.005f, 0);\n            m_journalListbox.InnerItemSize = new Vector2(325/1600f, 69/1200f);\n            m_journalListbox.ItemMouseOverTexture = MyGuiManager.GetJournalSelected();\n\n            LoadJournalListbox();\n\n            m_journalListbox.ItemSelect += EventSelected;\n            Controls.Add(m_journalListbox);                       \n\n            LoadDescription();\n        }                \n\n        private void LoadJournalListbox()\n        {\n            m_journalListbox.RemoveAllRows();\n\n            List<MyJournalCategory> categoryFilter = GetSelectedCategoryFilter();\n            bool sameKey = false;\n            for (int index = m_eventLog.Events.Count - 1; index >= 0; index--)\n            {\n                var logEntry = m_eventLog.Events[index];\n                if (CanBeDisplayed(logEntry, categoryFilter))\n                {\n                    if (index == m_selectedEventKey)\n                    {\n                        sameKey = true;\n                    }\n                    StringBuilder name = logEntry.GetName();\n                    if (name != null && name.Length != 0)\n                    {\n                        StringBuilder logEntryName = new StringBuilder();\n                        logEntryName.Append(name);\n                        const int maxEntryLength = 25;\n                        if (logEntryName.Length > maxEntryLength)\n                        {\n                            logEntryName.Remove(maxEntryLength, logEntryName.Length - maxEntryLength);\n                            logEntryName.Append(\"...\");\n                        }\n                        //MyColoredText coloredText = new MyColoredText(logEntryName);\n                        MyGuiControlListboxItem listboxItem = new MyGuiControlListboxItem(index, logEntryName, GetEventIcon(logEntry), 0.65f);\n                        listboxItem.BackgroundColor = GetEventBackgroundColor(logEntry);\n\n                        m_journalListbox.AddItem(listboxItem);\n                        SetJournalItemColor(ref listboxItem, logEntry.Status);\n                    }\n                }\n            }                        \n\n            if(!sameKey)\n            {\n                m_selectedEventKey = null;\n                LoadDescription();\n            }\n            else if(m_selectedEventKey != null)\n            {\n                m_journalListbox.SetSelectedItem(m_selectedEventKey.Value);\n            }\n        }\n\n        private MyTexture2D GetEventIcon(MyEventLogEntry eventLogEntry)\n        {\n\n            return MyGuiEventHelpers.GetEventHelper(eventLogEntry.EventType).Icon;\n        }\n\n        private Vector4 GetEventBackgroundColor(MyEventLogEntry eventLogEntry)\n        {\n\n            return MyGuiEventHelpers.GetEventHelper(eventLogEntry.EventType).BackgroundColor;\n        }\n\n\n        private void SetJournalItemColor(ref MyGuiControlListboxItem listboxItem, StatusEnum logEntryStatus)\n        {\n            Color textColor = logEntryStatus == StatusEnum.Read ? new Color(MyGuiConstants.LISTBOX_TEXT_COLOR) : Color.LightYellow;\n            Color highlightColor = new Color(textColor.ToVector4()*MyGuiConstants.CONTROL_MOUSE_OVER_BACKGROUND_COLOR_MULTIPLIER);\n\n            listboxItem.ColoredText.NormalColor = textColor;\n            listboxItem.ColoredText.HighlightColor = highlightColor;\n        }\n\n        private List<MyJournalCategory> GetSelectedCategoryFilter()\n        {\n            List<MyJournalCategory> categoryFilter = new List<MyJournalCategory>();\n            if (m_allEventsCheckbox.Checked)\n            {\n                categoryFilter.Add(MyJournalCategory.AllEvents);\n            }\n            if(m_globalEventsCheckbox.Checked)\n            {\n                categoryFilter.Add(MyJournalCategory.GlobalEvents);\n            }\n            //if(m_currentMissionCheckbox.Checked)\n            //{\n            //    categoryFilter.Add(MyJournalCategory.CurrentMission);                \n            //}\n            if(m_missionsCheckbox.Checked)\n            {\n                categoryFilter.Add(MyJournalCategory.AllMissions);\n            }\n            //if(m_accomplishedCheckbox.Checked)\n            //{\n            //    categoryFilter.Add(MyJournalCategory.AccomplishedMissions);                \n            //}\n\n            return categoryFilter;\n        }\n\n        private bool CanBeDisplayed(MyEventLogEntry eventLogEntry, List<MyJournalCategory> categoryFilter)\n        {\n            foreach (MyJournalCategory filter in categoryFilter)\n            {\n                Predicate<MyEventLogEntry> filterPredicate = m_filterConditions[(int) filter];\n                if(filterPredicate(eventLogEntry))\n                {\n                    return true;\n                }\n            }\n            return false;\n        }\n\n        private void OnFilterChanged(MyGuiControlCheckbox sender)\n        {\n            if (sender == m_allEventsCheckbox && m_allEventsCheckbox.Checked)\n            {\n                m_globalEventsCheckbox.UnCheck();\n                m_storyCheckbox.UnCheck();\n                m_missionsCheckbox.UnCheck();\n            }\n\n            if (sender != m_allEventsCheckbox && sender.Checked)\n            {\n                m_allEventsCheckbox.UnCheck();\n            }\n            LoadJournalListbox();\n        }\n\n        private void LoadDescription()\n        {\n            if(m_selectedEventKey != null)\n            { \n                m_descriptionText.Clear();\n                MyEventLogEntry eventLogEntry = m_eventLog.Events[m_selectedEventKey.Value];\n                //var name = logEntry.GetName();\n\n                var name = eventLogEntry.GetName();\n\n\n                StringBuilder logEntryName = new StringBuilder();\n                //logEntryName.AppendFormat(\"{0}\\n\", eventLogEntry.Time);\n                logEntryName.Clear();\n                logEntryName.Append(name);\n                logEntryName.AppendLine();\n\n                m_descriptionText.AppendText(logEntryName, MyGuiManager.GetFontMinerWarsBlue(), 0.80f, Vector4.One);\n                m_descriptionText.AppendImage(MyGuiManager.GetJournalLine(), new Vector2(370 / 1600f, 13 / 1200f), Vector4.One);\n\n                StringBuilder description = new StringBuilder();\n                StringBuilder desc = eventLogEntry.GetDescription();\n                description.Append(desc != null ? desc.ToString() : \"\");\n                description.AppendLine();\n\n                if (MyMissions.ActiveMission != null && (int)MyMissions.ActiveMission.ID == eventLogEntry.EventTypeID)\n                {\n                    description.AppendLine();\n                    foreach (MyObjective activeSubmission in MyMissions.ActiveMission.ActiveObjectives)\n                    {\n                        if (activeSubmission.NameTemp != null && activeSubmission.NameTemp.Length != 0)\n                        {\n                            description.Append(SUBMISSION_SEPARATOR);\n                            description.AppendLine(activeSubmission.Name.ToString());\n                        }\n                    }\n                }\n\n                m_descriptionText.AppendText(description);\n            }\n            else\n            {\n                if(m_journalListbox.GetItemsCount() == 0)\n                {\n                    m_descriptionText.SetText(MyTextsWrapper.Get(MyTextsWrapperEnum.NoRecords));                    \n                }\n                else\n                {\n                    m_descriptionText.SetText(new StringBuilder());\n                }                \n            }\n        }\n\n        private void EventSelected(object sender, MyGuiControlListboxItemEventArgs eventArgs)\n        {\n            m_selectedEventKey = eventArgs.Key;\n\n            // change color from unread to read\n            MyEventLogEntry eventLogEntry = m_eventLog.Events[m_selectedEventKey.Value];            \n            if (eventLogEntry.Status == StatusEnum.Unread)\n            {\n                eventLogEntry.Status = StatusEnum.Read;\n                MyGuiControlListboxItem eventLbi = m_journalListbox.GetItem(m_selectedEventKey.Value);\n                SetJournalItemColor(ref eventLbi, StatusEnum.Read);\n            }    \n\n            LoadDescription();\n        }\n\n        static List<StringBuilder> m_statsStrings = new List<StringBuilder>();\n        static int m_stringIndex = 0;\n\n        public static StringBuilder StringBuilderCache\n        {\n            get\n            {\n                if (m_stringIndex >= m_statsStrings.Count)\n                    m_statsStrings.Add(new StringBuilder(1024));\n\n                StringBuilder sb = m_statsStrings[m_stringIndex++];\n                return sb.Clear();\n            }\n        }\n\n        private static StringBuilder time = new StringBuilder(1024);\n\n        public override bool Update(bool hasFocus)\n        {\n            time.GetFormatedDateTime(MySession.Static.GameDateTime);\n            m_gameTimeLabel.UpdateText(time);\n\n            //String.Format(\"{0:M/d/yyyy h:mm:ss}\", MySession.Static.GameDateTime)\n            return base.Update(hasFocus);\n        }\n\n        public void OnClose_Click(MyGuiControlButton sender)\n        {            \n            CloseScreen();\n        }\n\n\n\n        public override void HandleInput(MyGuiInput input, bool receivedFocusInThisUpdate)\n        {\n            base.HandleInput(input, receivedFocusInThisUpdate);\n            if (input.IsNewGameControlPressed(MyGameControlEnums.MISSION_DIALOG))\n            {\n                base.Canceling();\n            }\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenJournal\";\n        }\n    }*/\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/MyGuiScreenLoadChapter.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.App;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing System.Diagnostics;\nusing MinerWars.AppCode.Networking.SectorService;\nusing System.ServiceModel;\nusing MinerWars.CommonLIB.AppCode.Networking.Services;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Missions;\nusing MinerWars.AppCode.Game.Journal;\nusing MinerWars.AppCode.Game.Gameplay;\n\nnamespace MinerWars.AppCode.Game.GUI\n{\n    class MyGuiScreenLoadChapter : MyGuiScreenBase\n    {\n        private MyGuiControlListbox m_listbox;\n\n        public MyGuiScreenLoadChapter()\n            : base(new Vector2(0.5f, 0.5f), MyGuiConstants.SCREEN_BACKGROUND_COLOR, new Vector2(0.95f, 0.8f))\n        {\n            m_enableBackgroundFade = true;\n\n            m_backgroundTexture = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\BackgroundScreen\\\\VideoBackground\", flags: TextureFlags.IgnoreQuality);\n            AddCaption(MyTextsWrapperEnum.LoadChapter, new Vector2(0, 0.0075f));\n\n            Vector2 controlsOriginLeft = new Vector2(-m_size.Value.X / 2.0f + 0.05f, -m_size.Value.Y / 2.0f + 0.145f);\n            Vector2 controlsOriginRight = new Vector2(-m_size.Value.X / 2.0f + 0.185f, -m_size.Value.Y / 2.0f + 0.145f);\n            controlsOriginRight.X += 0.04f;\n\n            /*\n            // Checkpoint list\n            m_listbox = new MyGuiControlListbox(this, new Vector2(-MyGuiConstants.LISTBOX_SCROLLBAR_WIDTH/2, -0.015f),\n                MyGuiConstants.LISTBOX_LONGMEDIUM_SIZE, Vector4.Zero, null, 0.5f, 1, 18, 1, false, true, false);\n            */\n\n            m_listbox = new MyGuiControlListbox(this,\n                                      new Vector2(0, -0.0125f),\n                                      new Vector2(0.76f, 0.04f),\n                                      MyGuiConstants.LISTBOX_BACKGROUND_COLOR,\n                                      MyTextsWrapper.Get(MyTextsWrapperEnum.LoadChapter),\n                                      MyGuiConstants.LABEL_TEXT_SCALE,\n                                      1, 13, 1,\n                                      false, true, false,\n                                      null, null, MyGuiManager.GetScrollbarSlider(), null,\n                                      1, 1, MyGuiConstants.LISTBOX_BACKGROUND_COLOR_BLUE, 0f, 0f, 0f, 0f, 0, 0, -0.01f, -0.01f, -0.02f, 0.02f);\n\n            m_listbox.ItemDoubleClick += OnListboxItemDoubleClick;\n            Controls.Add(m_listbox);\n\n\n            Vector2 buttonSize = 0.75f * MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE;\n            // Buttons (Load, Rename, Delete, Back)\n            Vector2 buttonOrigin = new Vector2(-buttonSize.X * 1.5f - 0.001f, m_size.Value.Y / 2.0f - MyGuiConstants.MESSAGE_BOX_BORDER_AREA_Y - buttonSize.Y / 2.0f - 0.033f);\n            Vector2 buttonDelta = new Vector2(buttonSize.X + 0.001f, 0);\n            Controls.Add(new MyGuiControlButton(this, buttonOrigin + buttonDelta * 0, buttonSize, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.Load, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE * 0.8f, OnLoadClick, MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n            Controls.Add(new MyGuiControlButton(this, buttonOrigin + buttonDelta * 3, buttonSize, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.Back, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE * 0.8f, OnBackClick, MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n\n            FillList();\n        }\n\n        private List<Tuple<string, DateTime, MyMwcObjectBuilder_Checkpoint>> m_chapters = new List<Tuple<string, DateTime, MyMwcObjectBuilder_Checkpoint>>();\n\n        void FillList()\n        {\n            m_chapters = MinerWars.AppCode.Networking.MyLocalCache.LoadChapters().OrderByDescending(c => c.Item2).ToList();\n\n            m_listbox.DeselectAll();\n            m_listbox.RemoveAllRows();\n            m_listbox.RemoveAllItems();\n            int index = 0;\n            for (int ind = 0; ind < m_chapters.Count; ind++)\n            {\n                var chapter = m_chapters[ind].Item3;\n\n                string time = MyUtils.GetDatetimeAsSpentTime(m_chapters[ind].Item2);\n\n                var name = new StringBuilder(time);\n                name.Append(\" - \");\n                if (chapter.ActiveMissionID != -1)\n                {\n                    if (MyMissions.GetMissionByID((MyMissionID)chapter.ActiveMissionID) != null)\n                    {\n                        name.Append(MyTextsWrapper.Get(MyMissions.GetMissionByID((MyMissionID)chapter.ActiveMissionID).Name));\n                    }\n                    else\n                        name.Append(\"<mission deleted>\");\n                }\n                else\n                {\n                    name.Append(MyTextsWrapper.Get(MyTextsWrapperEnum.FreeRoaming));\n                }\n\n                var lastEvent = GetLastEvent(chapter);\n                if (lastEvent != null)\n                {\n                    name.Append(\" - \");\n                    if (MyMissions.GetMissionByID((MyMissionID)lastEvent.EventTypeID) != null)\n                    {\n                        name.Append(MyMissions.GetMissionByID((MyMissionID)lastEvent.EventTypeID).NameTemp);\n                    }\n                }\n\n                var difficultyName = MyGameplayConstants.GetGameplayDifficultyProfile(chapter.SessionObjectBuilder.Difficulty).DifficultyName;\n\n                name.Append(\" - \");\n                name.Append(MyTextsWrapper.Get(difficultyName));\n\n                m_listbox.AddItem(index, name);\n                index++;\n\n            }\n        }\n\n        private static CommonLIB.AppCode.ObjectBuilders.SubObjects.MyMwcObjectBuilder_Event GetLastEvent(MyMwcObjectBuilder_Checkpoint chapter)\n        {\n            var lastEvent = chapter.EventLogObjectBuilder.Where(e => e.EventType == (int)EventTypeEnum.SubmissionFinished).OrderByDescending(e => e.Time).FirstOrDefault();\n            return lastEvent;\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenLoadCheckpoint\";\n        }\n\n        public void OnLoadClick(MyGuiControlButton sender)\n        {\n            LoadCheckpoint();\n        }\n\n        public void OnBackClick(MyGuiControlButton sender)\n        {\n            CloseScreen();\n        }\n\n        void OnListboxItemDoubleClick(object sender, MyGuiControlListboxItemEventArgs eventArgs)\n        {\n            LoadCheckpoint();\n        }\n\n        string GetCheckpointNameFromItem(MyGuiControlListboxItem item)\n        {\n            return item.Value.ToString();\n        }\n\n        private void LoadCheckpoint()\n        {\n            var item = m_listbox.GetSelectedItem();\n            if (item != null && m_chapters.Count >= item.Key)\n            {\n                MyGuiManager.CloseAllScreensExcept(MyGuiScreenGamePlay.Static);\n\n                string chapterName = m_chapters[item.Key].Item1; // TODO: dont construct the name, just take it from some array\n                MinerWars.AppCode.Networking.MyLocalCache.ReplaceCurrentChapter(chapterName);\n                MySession.StartLastCheckpoint();\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/MyGuiScreenLoadCheckpoint.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Utils;\nusing Microsoft.Xna.Framework;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Managers.Graphics.Textures;\nusing MinerWars.AppCode.App;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing System.Diagnostics;\nusing MinerWars.AppCode.Networking.SectorService;\nusing System.ServiceModel;\nusing MinerWars.CommonLIB.AppCode.Networking.Services;\nusing MinerWars.AppCode.Game.Managers.Session;\n\nnamespace MinerWars.AppCode.Game.GUI\n{\n    class MyGuiScreenLoadCheckpoint : MyGuiScreenBase\n    {\n        private MyGuiControlListbox m_listbox;\n\n        public MyGuiScreenLoadCheckpoint()\n            : base(new Vector2(0.5f, 0.5f), MyGuiConstants.SCREEN_BACKGROUND_COLOR, null)\n        {\n            m_enableBackgroundFade = true;\n            m_size = new Vector2(0.59f, 0.68544f);\n\n            m_backgroundTexture = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\BackgroundScreen\\\\VideoBackground\", flags: TextureFlags.IgnoreQuality);\n            AddCaption(MyTextsWrapperEnum.LoadCheckpoint);\n\n            Vector2 controlsOriginLeft = new Vector2(-m_size.Value.X / 2.0f + 0.05f, -m_size.Value.Y / 2.0f + 0.145f);\n            Vector2 controlsOriginRight = new Vector2(-m_size.Value.X / 2.0f + 0.185f, -m_size.Value.Y / 2.0f + 0.145f);\n            controlsOriginRight.X += 0.04f;\n\n            /*\n            // Checkpoint list\n            m_listbox = new MyGuiControlListbox(this, new Vector2(-MyGuiConstants.LISTBOX_SCROLLBAR_WIDTH/2, -0.015f),\n                MyGuiConstants.LISTBOX_LONGMEDIUM_SIZE, Vector4.Zero, null, 0.5f, 1, 18, 1, false, true, false);\n            */\n\n            m_listbox = new MyGuiControlListbox(this,\n                                      new Vector2(0.0055f, -0.0322f),\n                                      new Vector2(0.45f, 50 / 1200f),\n                                      Vector4.One*0.5f,\n                                      null,\n                                      0.8f,\n                                      1, 10, 1, false, true, false,\n                                      null, null, MyGuiManager.GetScrollbarSlider(), null,\n                                      1, 1, Vector4.One*0.1f, 0, 0, 0, 0, 0, 0, -0.007f);\n\n\n\n            m_listbox.ItemDoubleClick += OnListboxItemDoubleClick;\n            Controls.Add(m_listbox);\n\n\n            Vector2 buttonSize = 0.75f*MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE;\n            // Buttons (Load, Rename, Delete, Back)\n            Vector2 buttonOrigin = new Vector2(-buttonSize.X * 1.5f - 0.001f, m_size.Value.Y / 2.0f - MyGuiConstants.MESSAGE_BOX_BORDER_AREA_Y - buttonSize.Y / 2.0f - 0.025f);\n            Vector2 buttonDelta = new Vector2(buttonSize.X + 0.001f, 0);\n            Controls.Add(new MyGuiControlButton(this, buttonOrigin + buttonDelta * 0,buttonSize, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.Load, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE*0.8f, OnLoadClick, MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n            Controls.Add(new MyGuiControlButton(this, buttonOrigin + buttonDelta * 1, buttonSize, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.Rename, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE * 0.8f, OnRenameClick, MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n            Controls.Add(new MyGuiControlButton(this, buttonOrigin + buttonDelta * 2, buttonSize, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.Delete, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE * 0.8f, OnDeleteClick, MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n            Controls.Add(new MyGuiControlButton(this, buttonOrigin + buttonDelta * 3, buttonSize, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.Back, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE * 0.8f, OnBackClick, MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n\n            FillList();\n        }\n\n        void FillList()\n        {\n            Func<IAsyncResult> begin = () =>\n            {\n                var client = MySectorServiceClient.GetCheckedInstance();\n                return client.BeginLoadTemplateCheckpointNames(null, client);\n            };\n\n            Action<IAsyncResult, MyGuiScreenProgressAsync> end = (result, screen) =>\n            {\n                try\n                {\n                    var client = (MySectorServiceClient)result.AsyncState;\n                    var info = client.EndLoadTemplateCheckpointNames(result);\n                    InsertItems(info);\n                }\n                catch (Exception)\n                {\n                    MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.PleaseTryAgain, MyTextsWrapperEnum.MessageBoxNetworkErrorCaption, MyTextsWrapperEnum.Ok, null));\n                }\n                screen.CloseScreenNow();\n            };\n\n            var progress = new MyGuiScreenProgressAsync(MyTextsWrapperEnum.LoadSectorIdentifiersPleaseWait, false, begin, end);\n            MyGuiManager.AddScreen(progress);\n        }\n\n        private void InsertItems(List<MyCheckpointInfo> info)\n        {\n            m_listbox.DeselectAll();\n            m_listbox.RemoveAllRows();\n            m_listbox.RemoveAllItems();\n            int index = 0;\n            for (int ind = 0; ind < info.Count; ind++)\n            {\n                var i = info[ind];\n                if (i.CheckpointName != null)\n                {\n                    m_listbox.AddItem(index, new StringBuilder(i.CheckpointName));\n                    index++;\n                }\n            }\n        }\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenLoadCheckpoint\";\n        }\n\n        public void OnLoadClick(MyGuiControlButton sender)\n        {\n            LoadCheckpoint();\n        }\n\n        public void OnRenameClick(MyGuiControlButton sender)\n        {\n            var item = m_listbox.GetSelectedItem();\n            if (item != null)\n            {\n                MyGuiManager.AddScreen(new MyGuiScreenRenameCheckpoint(GetCheckpointNameFromItem(item), RenameTemplate));\n            }\n        }\n\n        void RenameTemplate(string oldName, string newName, MyGuiScreenBase renameScreen)\n        {\n            renameScreen.CloseScreenNow();\n\n            Func<IAsyncResult> begin = () =>\n            {\n                var client = MySectorServiceClient.GetCheckedInstance();\n                return client.BeginRenameTemplateCheckpoint(oldName, newName, null, client);\n            };\n\n            Action<IAsyncResult, MyGuiScreenProgressAsync> end = (result, screen) =>\n            {\n                try\n                {\n                    var client = (MySectorServiceClient)result.AsyncState;\n                    client.EndRenameTemplateCheckpoint(result);\n                }\n                catch (FaultException<MyCheckpointRenameFault> e)\n                {\n                    switch (e.Detail.Reason)\n                    {\n                        case MyCheckpointRenameFaultReason.CheckpointNotFound:\n                            MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.SectorNotFound, MyTextsWrapperEnum.MessageBoxTimeoutCaption, MyTextsWrapperEnum.Ok, null));\n                            break;\n\n                        case MyCheckpointRenameFaultReason.NameAlreadyExists:\n                            MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.CantSaveSectorNameExists, MyTextsWrapperEnum.MessageBoxTimeoutCaption, MyTextsWrapperEnum.Ok, null));\n                            break;\n                    }\n                }\n                catch (Exception)\n                {\n                    MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.PleaseTryAgain, MyTextsWrapperEnum.MessageBoxNetworkErrorCaption, MyTextsWrapperEnum.Ok, null));\n                }\n                screen.CloseScreenNow();\n                FillList();\n            };\n\n            var progress = new MyGuiScreenProgressAsync(MyTextsWrapperEnum.LoadSectorIdentifiersPleaseWait, false, begin, end);\n            MyGuiManager.AddScreen(progress);            \n        }\n\n        public void OnDeleteClick(MyGuiControlButton sender)\n        {\n            var item = m_listbox.GetSelectedItem();\n            if (item != null)\n            {\n                string name = GetCheckpointNameFromItem(item);\n                DeleteTemplate(name);\n            }\n        }\n\n        private void DeleteTemplate(string name)\n        {\n            Func<IAsyncResult> begin = () =>\n            {\n                var client = MySectorServiceClient.GetCheckedInstance();\n                return client.BeginDeleteTemplateCheckpoint(name, null, client);\n            };\n\n            Action<IAsyncResult, MyGuiScreenProgressAsync> end = (result, screen) =>\n            {\n                try\n                {\n                    var client = (MySectorServiceClient)result.AsyncState;\n                    client.EndDeleteTemplateCheckpoint(result);\n                }\n                catch (Exception)\n                {\n                    MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.PleaseTryAgain, MyTextsWrapperEnum.MessageBoxNetworkErrorCaption, MyTextsWrapperEnum.Ok, null));\n                }\n                screen.CloseScreenNow();\n                FillList();\n            };\n\n            var progress = new MyGuiScreenProgressAsync(MyTextsWrapperEnum.LoadSectorIdentifiersPleaseWait, false, begin, end);\n            MyGuiManager.AddScreen(progress);\n        }\n\n        public void OnBackClick(MyGuiControlButton sender)\n        {\n            CloseScreen();\n        }\n\n        void OnListboxItemDoubleClick(object sender, MyGuiControlListboxItemEventArgs eventArgs)\n        {\n            LoadCheckpoint();\n        }\n\n        string GetCheckpointNameFromItem(MyGuiControlListboxItem item)\n        {\n            return item.Value.ToString();\n        }\n\n        private void LoadCheckpoint()\n        {\n            var item = m_listbox.GetSelectedItem();\n            if (item != null)\n            {\n                MyGuiManager.CloseAllScreensExcept(MyGuiScreenGamePlay.Static);\n\n                MySession.StartTemplateCheckpoint(GetCheckpointNameFromItem(item));\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/MyGuiScreenLoadCheckpointProgress.cs",
    "content": "﻿using System.Collections.Generic;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.World;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing System.IO;\nusing SysUtils.Utils;\nusing MinerWars.AppCode.Networking.SectorService;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing System;\nusing System.ServiceModel;\nusing MinerWars.CommonLIB.AppCode.Networking.Services;\nusing KeenSoftwareHouse.Library.Trace;\nusing MinerWarsMath;\n\n//  IMPORTANT: THIS SCREEN CAN'T BE CANCELED BY ESC OR CANCEL BUTTON BECAUSE THAT WOULD INTERFERE THE PROCESS ON SERVER\n\nnamespace MinerWars.AppCode.Game.GUI\n{\n    class MyGuiScreenLoadCheckpointProgress : MyGuiScreenSectorServiceCallProgress\n    {\n        System.Action<MyMwcObjectBuilder_Checkpoint> m_loadCheckpointSuccessfulAction;\n\n        MyMwcSectorTypeEnum m_sessionType;\n        MyMwcSessionStateEnum m_sessionStartType;\n        int? m_userId;\n        MyMwcVector3Int? m_sectorPosition;\n        string m_checkpointName;\n\n        MyMwcObjectBuilder_Checkpoint m_checkpoint;\n\n        public MyGuiScreenLoadCheckpointProgress(MyMwcSectorTypeEnum sessionType, MyMwcSessionStateEnum sessionStartType, int? userId, MyMwcVector3Int? position, string checkpointName, System.Action<MyMwcObjectBuilder_Checkpoint> enterSectorSuccessfulAction)\n            : base(MyTextsWrapperEnum.EnterSectorInProgressPleaseWait, false, TimeSpan.FromSeconds(360)) // Some missions loads very long (Roch's junkyard)\n        {\n            m_backgroundFadeColor = MyGuiConstants.SCREEN_BACKGROUND_FADE_BLANK_DARK_PROGRESS_SCREEN;\n            m_sessionType = sessionType;\n            m_sessionStartType = sessionStartType;\n            m_userId = userId;\n            m_sectorPosition = position;\n            m_checkpointName = checkpointName;\n            m_loadCheckpointSuccessfulAction = enterSectorSuccessfulAction;\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenEnterSectorProgress\";\n        }\n\n        protected override void ServiceProgressStart(MySectorServiceClient client)\n        {\n            AddAction(client.BeginLoadCheckpoint(m_sessionType, m_sessionStartType, m_userId, m_sectorPosition, m_checkpointName, null, client));\n        }\n\n        protected override void OnActionCompleted(IAsyncResult asyncResult, MySectorServiceClient client)\n        {\n            try\n            {\n                byte[] result = client.EndLoadCheckpoint(asyncResult);\n                m_checkpoint = MyMwcObjectBuilder_Base.FromBytes<MyMwcObjectBuilder_Checkpoint>(result);\n                //if (m_checkpoint.SectorObjectBuilder == null) // Server told us to use cache\n                //{\n                //    LoadSector();\n                //    return;\n                //}\n\n                MyGuiScreenGamePlay.StoreLastLoadedCheckpoint(m_checkpoint);\n\n                m_loadCheckpointSuccessfulAction(m_checkpoint);\n                CloseScreen();\n            }\n            catch (FaultException<MyCustomFault> faultException)\n            {\n                if (faultException.Detail.ErrorCode == MyCustomFaultCode.CheckpointTemplateNotExists)\n                {\n                    HandleNonexistentCheckpoint();\n                }\n                else\n                {\n                    // Handled by base class\n                    throw faultException;\n                }\n            }\n        }\n\n        //private void LoadSector()\n        //{\n        //    // Handles also cache\n        //    var travelScreen = new MyGuiScreenEnterSectorProgress(MyMwcTravelTypeEnum.SOLAR, m_checkpoint.CurrentSector.Position, new MinerWarsMath.Vector3(), OnTravelSuccess, m_checkpoint.CurrentSector);\n        //    MyGuiManager.AddScreen(travelScreen);\n        //}\n\n        private void OnTravelSuccess(MyMwcObjectBuilder_Sector sector, Vector3 newPosition)\n        {\n            m_checkpoint.SectorObjectBuilder = sector;\n            m_loadCheckpointSuccessfulAction(m_checkpoint);\n            CloseScreen();\n        }\n\n        private void HandleNonexistentCheckpoint()\n        {\n            MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.TemplateCheckpointDeleted, MyTextsWrapperEnum.MessageBoxCaptionError, MyTextsWrapperEnum.Ok, null));\n            CloseScreen();\n            MyGuiManager.BackToMainMenu();\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/MyGuiScreenLoadSectorIdentifiersProgress.cs",
    "content": "﻿using System.Collections.Generic;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.World;\nusing MinerWars.AppCode.Networking.SectorService;\nusing System;\n\nnamespace MinerWars.AppCode.Game.GUI\n{\n    class MyGuiScreenLoadSectorIdentifiersProgress : MyGuiScreenSectorServiceCallProgress\n    {\n        MyMwcSectorTypeEnum m_sectorType;\n        Action<List<MyMwcSectorIdentifier>> m_successAction;\n        bool m_loadGlobal;\n\n        public MyGuiScreenLoadSectorIdentifiersProgress(MyMwcSectorTypeEnum sectorType, bool global, Action<List<MyMwcSectorIdentifier>> successAction)\n            : base(MyTextsWrapperEnum.LoadSectorIdentifiersPleaseWait, false)\n        {\n            m_backgroundFadeColor = MyGuiConstants.SCREEN_BACKGROUND_FADE_BLANK_DARK_PROGRESS_SCREEN;\n            m_successAction = successAction;\n            m_sectorType = sectorType;\n            m_loadGlobal = global;\n        }\n\n        public MyGuiScreenLoadSectorIdentifiersProgress(MyMwcSectorTypeEnum sectorType, bool global, MyGuiScreenEnterSectorMap openAfterSuccessfulEnter)\n            :this(sectorType, global, new Action<List<MyMwcSectorIdentifier>>((sectors) => OpenScreen(openAfterSuccessfulEnter, sectors)))\n        {\n        }\n\n        private static void OpenScreen(MyGuiScreenEnterSectorMap openAfterSuccessfulEnter, List<MyMwcSectorIdentifier> sectors)\n        {\n            if (openAfterSuccessfulEnter != null)\n            {\n                openAfterSuccessfulEnter.AddLoadSectorIdentifiersResponse(sectors);\n                MyGuiManager.AddScreen(openAfterSuccessfulEnter);\n            }\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenLoadSectorIdentifiersProgress\";\n        }\n\n        protected override void ServiceProgressStart(MySectorServiceClient client)\n        {\n            if (m_loadGlobal)\n            {\n                AddAction(client.BeginLoadSectorIdentifiers(m_sectorType, null, client));\n            }\n            else\n            {\n                AddAction(client.BeginLoadUserSectorIdentifiers(null, client));\n            }\n        }\n\n        protected override void OnActionCompleted(IAsyncResult asyncResult, MySectorServiceClient client)\n        {\n            if (m_loadGlobal)\n            {\n                m_successAction(client.EndLoadSectorIdentifiers(asyncResult));\n            }\n            else\n            {\n                m_successAction(client.EndLoadUserSectorIdentifiers(asyncResult));\n            }\n            this.CloseScreen();\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/MyGuiScreenLoading.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Threading;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.GUI.Helpers;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.Networking.SectorService;\nusing MinerWars.AppCode.Game.Managers;\nusing SysUtils;\nusing MinerWars.AppCode.Game.Missions;\nusing MinerWars.AppCode.Game.World.Global;\nusing System.Diagnostics;\nusing System.Text;\n\nusing SharpDX.Direct3D9;\n\n//  This screen is special because it is drawn during we load some other screen - LoadContent - in another thread.\n//  Player sees this \"...Loading...\" screen.\n\nnamespace MinerWars.AppCode.Game.GUI\n{\n    using Vector2 = MinerWarsMath.Vector2;\n    using Vector3 = MinerWarsMath.Vector3;\n    using Vector4 = MinerWarsMath.Vector4;\n    using Rectangle = MinerWarsMath.Rectangle;\n    using Matrix = MinerWarsMath.Matrix;\n    using Color = MinerWarsMath.Color;\n    using BoundingBox = MinerWarsMath.BoundingBox;\n    using BoundingSphere = MinerWarsMath.BoundingSphere;\n    using BoundingFrustum = MinerWarsMath.BoundingFrustum;\n\n    class MyGuiScreenLoading : MyGuiScreenBase\n    {\n        //We have to ensure there is always only one loading screen instance\n        public static MyGuiScreenLoading Static;\n\n\n        MyGuiScreenGamePlay m_screenToLoad;\n        readonly MyGuiScreenGamePlay m_screenToUnload;\n        \n        Thread m_drawLoadingThread;\n        \n        MyTexture2D m_backgroundScreenTexture;\n        MyTexture2D m_backgroundTextureFromConstructor;\n        MyTexture2D m_rotatingWheelTexture;\n\n\n        public static MyTexture2D LastBackgroundTexture;\n        \n        volatile bool m_loadInDrawFinished;\n        EventWaitHandle m_backgroundThreadExit;\n\n        bool m_loadFinished;\n        MyTextsWrapperEnum m_currentQuoteOfTheDay;\n        \n        public MyGuiScreenLoading(MyGuiScreenGamePlay screenToLoad, MyGuiScreenGamePlay screenToUnload, MyTexture2D textureFromConstructor)\n            : base(Vector2.Zero, null, null)\n        {\n            MyLoadingPerformance.Instance.StartTiming();\n\n            System.Diagnostics.Debug.Assert(Static == null);\n            Static = this;\n\n            m_screenToLoad = screenToLoad;\n            m_screenToUnload = screenToUnload;\n            m_closeOnEsc = false;\n            DrawMouseCursor = false;\n            m_loadInDrawFinished = false;\n            m_drawEvenWithoutFocus = true;\n            m_currentQuoteOfTheDay = MyQuoteOfTheDay.GetRandomQuote();\n            \n            Vector2 loadingTextSize = MyGuiManager.GetNormalizedSize(MyGuiManager.GetFontMinerWarsBlue(),\n                MyTextsWrapper.Get(MyTextsWrapperEnum.LoadingPleaseWait), MyGuiConstants.LOADING_PLEASE_WAIT_SCALE);\n            m_rotatingWheelTexture = MyGuiManager.GetLoadingTexture();\n            Controls.Add(new MyGuiControlRotatingWheel(this, MyGuiConstants.LOADING_PLEASE_WAIT_POSITION - new Vector2(0, 0.075f + loadingTextSize.Y),\n                MyGuiConstants.ROTATING_WHEEL_COLOR, MyGuiConstants.ROTATING_WHEEL_DEFAULT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, m_rotatingWheelTexture));\n            m_backgroundTextureFromConstructor = textureFromConstructor;\n\n            m_loadFinished = false;\n            \n            if (m_screenToLoad != null)\n            {\n                MyMinerGame.IsGameReady = false;\n            }\n        }\n\n        public MyGuiScreenLoading(MyGuiScreenGamePlay screenToLoad, MyGuiScreenGamePlay screenToUnload)\n            : this(screenToLoad, screenToUnload, null)\n        {\n        }\n        \n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenLoading\";\n        }\n\n        /// <summary>\n        /// Sends server a message that player has left a sector\n        /// </summary>\n        public bool AnnounceLeaveToServer { get; set; }\n        public MyMwcLeaveSectorReasonEnum LeaveSectorReason { get; set; }\n\n        public override void LoadContent()\n        {\n            MyMwcLog.WriteLine(\"MyGuiScreenLoading.LoadContent - START\");\n            MyMwcLog.IncreaseIndent();\n            AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyGuiScreenLoading::LoadContent\");\n\n            //  We must stop XACT sounds here, not in the background thread, because on Windows XP is safer if only\n            //  main thread uses XACT. If we do it from background thread, we won't probably hear no sound.\n            if (MyAudio.GetMusicState() != MyMusicState.Stopped) \n            {\n                MyAudio.Stop();\n            }\n\n\n            m_backgroundScreenTexture = m_backgroundTextureFromConstructor ?? MyTextureManager.GetTexture<MyTexture2D>(GetRandomBackgroundTexture(), flags: TextureFlags.IgnoreQuality);\n            m_minerWarsLogoTexture = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\MinerWarsLogoLarge\", null, LoadingMode.Immediate, flags: TextureFlags.IgnoreQuality);\n            //m_minerWarsActorsTexture = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\MinerWarsActors\", flags: TextureFlags.IgnoreQuality);\n\n            if (m_screenToUnload != null)\n            {\n                //  If there is existing screen we are trying to replace (e.g. gameplay screen), we will mark this one as unloaded, so\n                //  then remove screen method won't try to unload it and we can do it in our thread. This is also the reason why we do it\n                //  here, becasue changing IsLoaded in paralel thread can't tell us when it happens - and this must be serial.\n                m_screenToUnload.IsLoaded = false;\n                m_screenToUnload.CloseScreenNow();\n            }\n\n            m_currentQuoteOfTheDay = MyQuoteOfTheDay.GetRandomQuote();\n\n            //  Base load content must be called after child's load content\n            base.LoadContent();\n\n\n            if (m_screenToLoad != null && !m_loadInDrawFinished && m_loadFinished)\n            {\n                m_screenToLoad.SetState(MyGuiScreenState.OPENING);\n                m_screenToLoad.LoadContent();\n            }\n            else\n                m_loadFinished = false;\n\n            AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyGuiScreenLoading.LoadContent - END\");\n        }\n\n        static string GetRandomBackgroundTexture()\n        {\n            int randomNumber = MyMwcUtils.GetRandomInt(MyGuiConstants.LOADING_RANDOM_SCREEN_INDEX_MIN, MyGuiConstants.LOADING_RANDOM_SCREEN_INDEX_MAX + 1);\n            string paddedNumber = randomNumber.ToString().PadLeft(3, '0');\n            return \"Textures\\\\GUI\\\\LoadingScreen\\\\Background\" + paddedNumber;\n        }\n\n        public override void UnloadContent()\n        {\n            AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyGuiScreenLoading::UnloadContent\");\n            //  This is just for case that whole application is quiting after Alt+F4 or something\n            //  Don't try to unload content in that thread or something - we don't know in what state it is. Just abort it.\n\n            if (m_drawLoadingThread != null && m_drawLoadingThread.IsAlive == true)\n            {\n                m_backgroundThreadExit.Set();\n                m_drawLoadingThread.Join();\n            }\n\n            if (m_backgroundScreenTexture != null) MyTextureManager.UnloadTexture(m_backgroundScreenTexture);\n            if (m_backgroundTextureFromConstructor!=null) MyTextureManager.UnloadTexture(m_backgroundTextureFromConstructor);\n            if (m_backgroundScreenTexture!=null) MyTextureManager.UnloadTexture(m_rotatingWheelTexture);\n            if (m_currentSectorDescription != null && m_currentSectorDescription.Item2 != null && m_currentSectorDescription.Item2.Item3 != null) MyTextureManager.UnloadTexture(m_currentSectorDescription.Item2.Item3);\n\n\n            if (m_screenToLoad != null && !m_loadFinished && m_loadInDrawFinished)\n            {\n                //  Call unload because there might be running precalc threads and we need to stop them\n                //m_screenToLoad.UnloadObjects();\n                m_screenToLoad.UnloadContent();\n                m_screenToLoad.UnloadData();\n               \n                //m_screenToLoad.UnloadData();\n                m_screenToLoad = null;\n            }\n\n            \n            if (m_screenToLoad != null && !m_loadInDrawFinished)\n            {\n                m_screenToLoad.UnloadContent();\n            }\n            \n\n            base.UnloadContent();\n\n            System.Diagnostics.Debug.Assert(Static == this);\n            Static = null;\n\n            AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        public void AddEnterSectorResponse(MyMwcObjectBuilder_Checkpoint checkpoint, MyMissionID? missionID)\n        {\n            m_screenToLoad.AddEnterSectorResponse(checkpoint, missionID);\n        }\n\n        public override bool Update(bool hasFocus)\n        {\n            if (base.Update(hasFocus) == false) return false;\n\n            int blockUpdate = -1;\n            AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyGuiScreenLoading::Update()\", ref blockUpdate);\n\n            if (this.GetState() == MyGuiScreenState.OPENED)\n            {\n                if (!m_loadFinished)\n                {\n                    int blockLoad = -1;\n                    AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"LoadInBackgroundThread\", ref blockLoad);\n\n                    m_backgroundThreadExit = new ManualResetEvent(false);\n\n                    m_drawLoadingThread = new Thread(BackgroundWorkerThread);\n                    m_drawLoadingThread.Name = \"LoadInBackground\";\n                    m_drawLoadingThread.IsBackground = true; \n                    m_drawLoadingThread.Start();\n\n                    MyGuiManager.AllowedThread = m_drawLoadingThread;\n\n                    if (m_screenToLoad != null)\n                    {\n                        MyMwcLog.WriteLine(\"RunBackgroundThread - START\");\n                        m_screenToLoad.RunBackgroundThread();\n                        MyMwcLog.WriteLine(\"RunBackgroundThread - END\");                        \n                    }\n\n                    m_backgroundThreadExit.Set();\n                    m_drawLoadingThread.Join();\n\n                    MyGuiManager.AllowedThread = Thread.CurrentThread;\n\n                    m_loadFinished = true;\n\n                    AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock(blockLoad);\n                }\n            }\n\n            if (m_loadFinished)\n            {\n                CloseScreen();\n            }\n\n            AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock(blockUpdate);\n\n            return true;\n        }\n\n        public override bool CloseScreen()\n        {\n            bool ret = base.CloseScreen();\n\n            if (ret == true && m_screenToLoad != null)\n            {\n                //  Screen is loaded so now we can add it to other thread\n                MyGuiManager.AddScreen(m_screenToLoad);\n                m_screenToLoad = null;\n            }\n\n            return ret;\n        }\n\n        static long lastEnvWorkingSet = 0;\n        static long lastGc = 0;\n        static long lastVid = 0;\n        \n        void BackgroundWorkerThread()\n        {\n            long lastTime = MyMinerGame.TotalTimeInMilliseconds;\n\n            // EventWaitHandle.WaitOne will return true if the exit signal has\n            // been triggered, or false if the timeout has expired. We use the\n            // timeout to update at regular intervals, then break out of the\n            // loop when we are signalled to exit.\n\n            while (!m_backgroundThreadExit.WaitOne(1000 / 30))\n            {\n                //GameTime gameTime = GetGameTime(ref lastTime);\n\n                DrawLoadAnimation();\n            }\n        }\n\n        void DrawLoadAnimation(/*GameTime gameTime*/)\n        {\n            if ((MyMinerGame.Static.GraphicsDevice == null) || MyMinerGame.Static.GraphicsDevice.IsDisposed)\n                return;\n\n            try\n            {\n                try\n                {\n                    MyMinerGame.Static.GraphicsDevice.BeginScene();\n\n                    MyGuiManager.BeginSpriteBatch();\n                    DrawLoading(0.0f);\n                    MyGuiScreenGamePlay.DrawLoadsCount();\n                }\n                catch (Exception)\n                {\n                    // PetrM told to comment out\n                    //Debug.Fail(\"Loading screen draw crashed: \");\n\n                    // If anything went wrong (for instance the graphics device was lost\n                    // or reset) we don't have any good way to recover while running on a\n                    // background thread. Setting the device to null will stop us from\n                    // rendering, so the main game can deal with the problem later on.\n                    //MyMinerGameDX.Static.GraphicsDevice = null;\n                }\n                finally\n                {\n                    MyGuiManager.EndSpriteBatch();\n                    MyMinerGame.Static.GraphicsDevice.EndScene();\n                }\n\n                //  Slow down drawing of \"loading...\" screens, so background thread who is actualy loading content will have more time (CPU resources) to do his job.\n                //  Plus these two threads won't fight for graphic device. It's not big difference, just 10% or so.\n                Thread.Sleep(MyGuiConstants.LOADING_THREAD_DRAW_SLEEP_IN_MILISECONDS);\n\n                var res =MyMinerGame.Static.GraphicsDevice.TestCooperativeLevel();\n                if (res.Code == ResultCode.Success.Result.Code)\n                {\n                    MyMinerGame.Static.GraphicsDevice.Present();\n                }\n            }\n            catch (Exception)\n            {\n                Debug.Fail(\"Loading screen draw crashed: \");\n            }            \n        }\n\n        public bool DrawLoading(float backgroundFadeAlpha)\n        {\n            //MyAudio.Update(true);\n            m_transitionAlpha = 1.0f;\n\n            MyMinerGame.Static.GraphicsDevice.Clear(ClearFlags.Target, new SharpDX.ColorBGRA(0) , 0, 0);\n\n            Color colorQuote = new Color(255, 255, 255, 250);     //  White\n            colorQuote.A = (byte)(colorQuote.A * m_transitionAlpha);\n            //if (m_backgroundTextureFromConstructor == null)\n            {\n                //////////////////////////////////////////////////////////////////////\n                //  Normal loading screen\n                //////////////////////////////////////////////////////////////////////\n\n                MyTextsWrapperEnum sectorName = MyTextsWrapperEnum.Null;\n                MyTextsWrapperEnum sectorDescription = MyTextsWrapperEnum.Null;\n                MyTexture2D sectorTexture = null;\n\n                bool descriptionAvailable = false;\n                if (m_screenToLoad != null)\n                {\n                    var position = m_screenToLoad.GetSectorIdentifier().Position;\n                    descriptionAvailable = GetSectorDescription(position, out sectorName, out sectorDescription, out sectorTexture);\n                }\n                else if (MyGuiScreenGamePlay.Static != null)\n                {\n                    var position = MyGuiScreenGamePlay.Static.GetSectorIdentifier().Position;\n                    descriptionAvailable = GetSectorDescription(position, out sectorName, out sectorDescription, out sectorTexture);\n                }\n                else\n                {\n                    descriptionAvailable = false;\n                }\n                    \n                \n\n                //  Random background texture\n                Rectangle backgroundRectangle;\n                MyGuiManager.GetSafeHeightFullScreenPictureSize(MyGuiConstants.LOADING_BACKGROUND_TEXTURE_REAL_SIZE, out backgroundRectangle);\n                MyGuiManager.DrawSpriteBatch(descriptionAvailable ? sectorTexture : m_backgroundScreenTexture, backgroundRectangle, new Color(new Vector4(0.95f, 0.95f, 0.95f, m_transitionAlpha)));\n\n                //  Miner Wars logo\n                DrawMinerWarsLogo();\n\n                //  Current version:\n                //DrawAppVersion();\n                //DrawGlobalVersionText();\n\n                if (descriptionAvailable)\n                {\n                    MyGuiManager.DrawStringCentered(MyGuiManager.GetFontMinerWarsBlue(), MyTextsWrapper.Get(sectorName),\n                        new Vector2(0.5f, 0.4f), 1.6f, colorQuote, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER);\n                    MyGuiManager.DrawStringCentered(MyGuiManager.GetFontMinerWarsBlue(), MyTextsWrapper.Get(sectorDescription),\n                        new Vector2(0.5f, 0.5f), 1, colorQuote, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER);\n                }\n                else\n                {\n                    //  Quote of the day\n                    MyGuiManager.DrawStringCentered(MyGuiManager.GetFontMinerWarsBlue(), (new StringBuilder()).Append(MyTextsWrapper.Get(MyTextsWrapperEnum.Tip)).Append(\" \").Append(MyTextsWrapper.Get(m_currentQuoteOfTheDay)),\n                        new Vector2(0.5f, 0.5f), 1.15f, colorQuote, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER);\n                }\n            }\n           /* else\n            {\n                //////////////////////////////////////////////////////////////////////\n                //  Loading screen when there is specified background texture is little customized\n                //////////////////////////////////////////////////////////////////////\n\n                MyGuiManager.DrawSpriteBatch(m_backgroundScreenTexture, Vector2.Zero, new Color(new Vector4(0.95f, 0.95f, 0.95f, m_transitionAlpha)));\n            }*/\n\n            LastBackgroundTexture = m_backgroundScreenTexture;\n\n            //  Loading Please Wait\n            MyGuiManager.DrawString(MyGuiManager.GetFontMinerWarsBlue(), MyTextsWrapper.Get(MyTextsWrapperEnum.LoadingPleaseWait),\n                MyGuiConstants.LOADING_PLEASE_WAIT_POSITION, MyGuiConstants.LOADING_PLEASE_WAIT_SCALE, new Color(MyGuiConstants.LOADING_PLEASE_WAIT_COLOR * GetTransitionAlpha()), \n                MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_BOTTOM);\n\n            MyGuiManager.DrawString(MyGuiManager.GetFontMinerWarsBlue(), MyTextsWrapper.Get(MyTextsWrapperEnum.LongerLoadingTimes),\n                MyGuiConstants.LOADING_PLEASE_WAIT_POSITION + new Vector2(0, 0.025f), MyGuiConstants.LOADING_PLEASE_WAIT_SCALE * 0.8f, new Color(MyGuiConstants.LOADING_PLEASE_WAIT_COLOR * GetTransitionAlpha()),\n                MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_BOTTOM);\n\n\n            if (base.Draw(backgroundFadeAlpha) == false)\n                return false;\n\n           \n            return true;\n        }\n\n        private static Dictionary<MyMwcVector3Int, Tuple<MyTextsWrapperEnum, MyTextsWrapperEnum, string>> m_sectorDescriptions = new Dictionary<MyMwcVector3Int, Tuple<MyTextsWrapperEnum, MyTextsWrapperEnum, string>>()\n            {\n                { new MyMwcVector3Int(-913818, 0, -790076), Tuple.Create(MyTextsWrapperEnum.EAC_SURVEY_SITE, MyTextsWrapperEnum.EAC_SURVEY_SITE_SectorDescription, \"1EACSurveySite\") },\n                { new MyMwcVector3Int(-3851812, 0, -2054500), Tuple.Create(MyTextsWrapperEnum.LAIKA, MyTextsWrapperEnum.LAIKA_SectorDescription, \"2Laika\") },\n                { new MyMwcVector3Int(3360719, 0, -27890037), Tuple.Create(MyTextsWrapperEnum.BARTHS_MOON_CONVINCE, MyTextsWrapperEnum.BARTHS_MOON_SectorDescription, \"3BarthsMoon\") },\n                { new MyMwcVector3Int(190921, 0, 2152692), Tuple.Create(MyTextsWrapperEnum.PIRATE_BASE, MyTextsWrapperEnum.PIRATE_BASE_SectorDescription, \"4PiratePase\") },\n                { new MyMwcVector3Int(-7420630, 0, 388170), Tuple.Create(MyTextsWrapperEnum.RUSSIAN_WAREHOUSE, MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_SectorDescription, \"5RussianWarehouse\") },\n                { new MyMwcVector3Int(-190694, 0,-18204363), Tuple.Create(MyTextsWrapperEnum.LAST_HOPE, MyTextsWrapperEnum.LAST_HOPE_SectorDescription, \"6LastHope\") },\n                { new MyMwcVector3Int(2567538, 0,-172727), Tuple.Create(MyTextsWrapperEnum.JUNKYARD_RETURN, MyTextsWrapperEnum.JUNKYARD_SectorDescription, \"7Junkyard\") },\n                { new MyMwcVector3Int(-4274372, 0, 4874227), Tuple.Create(MyTextsWrapperEnum.CHINESE_TRANSPORT, MyTextsWrapperEnum.CHINESE_MINES_SectorDescription, \"8ChineseTransport\") },\n                { new MyMwcVector3Int(-2716080, 0, 4951053), Tuple.Create(MyTextsWrapperEnum.CHINESE_REFINERY, MyTextsWrapperEnum.CHINESE_REFINERY_SectorDescription, \"9ChineseRefinery\") },\n                { new MyMwcVector3Int(-1919599,0, 5268734), Tuple.Create(MyTextsWrapperEnum.CHINESE_ESCAPE, MyTextsWrapperEnum.CHINESE_ESCAPE_SectorDescription, \"10ChineseEscape\") },\n                { new MyMwcVector3Int(-588410, 0, -3425542), Tuple.Create(MyTextsWrapperEnum.FORT_VALIANT_SectorName, MyTextsWrapperEnum.FORT_VALIANT_SectorDescription, \"11FortValiant\") },\n                { new MyMwcVector3Int(4169480, 0, -8216683), Tuple.Create(MyTextsWrapperEnum.SLAVER_BASE_DELTA_EARNINGS, MyTextsWrapperEnum.SLAVER_BASE_1_SectorDescription, \"12SlaverBaseWipeout\") },\n                { new MyMwcVector3Int(2052452, 0, -10533886), Tuple.Create(MyTextsWrapperEnum.SLAVER_BASE_DELTA_EARNINGS, MyTextsWrapperEnum.SLAVER_BASE_2_SectorDescription, \"13SlaverBase\") },\n                { new MyMwcVector3Int(-1922856, 0, -2867519), Tuple.Create(MyTextsWrapperEnum.RIME_CONVINCE, MyTextsWrapperEnum.RIME_SectorDescription, \"14Rim\") },\n                { new MyMwcVector3Int(4189723, 0, -2201402), Tuple.Create(MyTextsWrapperEnum.RESEARCH_VESSEL, MyTextsWrapperEnum.RESEARCH_VESSEL_SectorDescription, \"15ResearchVessel\") },\n                { new MyMwcVector3Int(-56700, 0, 4276), Tuple.Create(MyTextsWrapperEnum.RIFT, MyTextsWrapperEnum.RIFT_SectorDescription, \"16Rift\") },\n                { new MyMwcVector3Int(2329559, 0, 4612446), Tuple.Create(MyTextsWrapperEnum.CHINESE_TRANSMITTER, MyTextsWrapperEnum.CHINESE_TRANSMITTER_SectorDescription, \"17ChineseTransmitter\") },\n                { new MyMwcVector3Int(-4988032, 0, -865747), Tuple.Create(MyTextsWrapperEnum.RUSSIAN_TRANSMITTER, MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_SectorDescritpion, \"18RussianTransmitter\") },\n                { new MyMwcVector3Int(-2325831, 0, -7186381), Tuple.Create(MyTextsWrapperEnum.REICHSTAG, MyTextsWrapperEnum.REICHSTAG_SectorDescription, \"19Reichstag\") },\n                { new MyMwcVector3Int(-4081250, 0, -6815625), Tuple.Create(MyTextsWrapperEnum.WHITE_WOLVES, MyTextsWrapperEnum.WHITE_WOLVES_RESEARCH_LAB_SectorDescription, \"20BioResearch\") },\n                { new MyMwcVector3Int(-2809328, 0, -4609055), Tuple.Create(MyTextsWrapperEnum.TWIN_TOWERS, MyTextsWrapperEnum.DOPPELBURG_SectorDescription, \"21TwinTowers\") },\n                { new MyMwcVector3Int(5480055, 0, -5077310), Tuple.Create(MyTextsWrapperEnum.EAC_PRISON, MyTextsWrapperEnum.EAC_PRISON_SectorDescription, \"22EACPrison\") },\n                { new MyMwcVector3Int(3818505, 0, -4273800), Tuple.Create(MyTextsWrapperEnum.EAC_TRANSMITTER, MyTextsWrapperEnum.EAC_TRANSMITTER_SectorDescription, \"23EACTransmitter\") },\n                { new MyMwcVector3Int(-1202900, 0, -112652), Tuple.Create(MyTextsWrapperEnum.ALIEN_GATE, MyTextsWrapperEnum.ALIEN_GATE_SectorDescription, \"24AlienGate\") },\n            };\n        private Tuple<MyMwcVector3Int, Tuple<MyTextsWrapperEnum, MyTextsWrapperEnum, MyTexture2D>> m_currentSectorDescription = new Tuple<MyMwcVector3Int, Tuple<MyTextsWrapperEnum, MyTextsWrapperEnum, MyTexture2D>>(default(MyMwcVector3Int), null);\n\n        private bool GetSectorDescription(MyMwcVector3Int sectorPosition, out MyTextsWrapperEnum sectorName, out MyTextsWrapperEnum sectorDescription, out MyTexture2D sectorTexture)\n        {\n            if (m_currentSectorDescription.Item1 != sectorPosition)\n            {\n                Tuple<MyTextsWrapperEnum, MyTextsWrapperEnum, MyTexture2D> description = null;\n\n                Tuple<MyTextsWrapperEnum, MyTextsWrapperEnum, string> result;\n                if (m_sectorDescriptions.TryGetValue(sectorPosition, out result))\n                {\n                    string textureName = \"Textures\\\\GUI\\\\LoadingScreen\\\\\" + result.Item3;\n                    var texture = MyTextureManager.GetTexture<MyTexture2D>(textureName, flags: TextureFlags.IgnoreQuality);\n                    description = Tuple.Create(result.Item1, result.Item2, texture);\n                }\n\n                m_currentSectorDescription = Tuple.Create(sectorPosition, description);\n            }\n\n            if (m_currentSectorDescription.Item2 != null)\n            {\n                sectorName = m_currentSectorDescription.Item2.Item1;\n                sectorDescription = m_currentSectorDescription.Item2.Item2;\n                sectorTexture = m_currentSectorDescription.Item2.Item3;\n                return true;\n            }\n            else\n            {\n                sectorName = MyTextsWrapperEnum.Null;\n                sectorDescription = MyTextsWrapperEnum.Null;\n                sectorTexture = null;\n                return false;\n            }\n        }                \n\n        public override bool Draw(float backgroundFadeAlpha)\n        {\n            return DrawLoading(backgroundFadeAlpha);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/MyGuiScreenLogin.cs",
    "content": "﻿using MinerWarsMath;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing System;\n\nnamespace MinerWars.AppCode.Game.GUI\n{\n    class MyGuiScreenLogin : MyGuiScreenBase\n    {\n        MyGuiControlTextbox m_usernameTextbox;\n        MyGuiControlTextbox m_passwordTextbox;\n        MyGuiControlCheckbox m_rememberCheckbox;\n        MyGuiControlCheckbox m_autologinCheckbox;\n        MyGuiControlCheckbox m_hidePasswordCheckbox;\n        MyGuiScreenBase m_openAfterSuccessfulLogin;\n        Action m_callAfterSuccessfulLogin = null;\n\n        bool m_simple;\n\n        public bool CanBeCanceled = true;\n\n        public MyGuiScreenLogin(string username, string password, Action callAfterSuccessfulLogin, bool simple = false)\n            : this(username, password, (MyGuiScreenBase)null, simple)\n        {\n            m_callAfterSuccessfulLogin = callAfterSuccessfulLogin;\n        }\n\n        public MyGuiScreenLogin(string username, string password, MyGuiScreenBase openAfterSuccessfulLogin, bool simple = false)\n            : base(new Vector2(0.5f, 0.5f), MyGuiConstants.SCREEN_BACKGROUND_COLOR, null)\n        {\n            m_simple = simple;\n            m_enableBackgroundFade = true;\n            m_openAfterSuccessfulLogin = openAfterSuccessfulLogin;\n            m_size = new Vector2(1030f / 1600f, 674 / 1200f);\n            m_backgroundTexture = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\BackgroundScreen\\\\LoginBackground\", flags: TextureFlags.IgnoreQuality);\n            //  If user presses enter in any control, we call this method. It's default ENTER.\n            this.OnEnterCallback = delegate { OnOkClick(null); };\n\n            Vector2 controlsOriginLeft = new Vector2(-m_size.Value.X / 2.0f + 0.07f, -m_size.Value.Y / 2.0f + 0.149f);\n            Vector2 controlsOriginRight = new Vector2(-m_size.Value.X / 2.0f + 0.25f, -m_size.Value.Y / 2.0f + 0.149f);\n\n            AddCaption(MyTextsWrapperEnum.Login);\n\n            //  Player name\n            Controls.Add(new MyGuiControlLabel(this, controlsOriginLeft + 0 * MyGuiConstants.CONTROLS_DELTA, null, MyTextsWrapperEnum.PlayerName, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n            m_usernameTextbox = new MyGuiControlTextbox(this, controlsOriginRight + 0 * MyGuiConstants.CONTROLS_DELTA + new Vector2(MyGuiConstants.TEXTBOX_MEDIUM_SIZE.X / 2.0f, 0), MyGuiControlPreDefinedSize.MEDIUM, username, MyMwcValidationConstants.USERNAME_LENGTH_MAX, MyGuiConstants.DEFAULT_CONTROL_NONACTIVE_COLOR/*TEXTBOX_BACKGROUND_COLOR*/, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiControlTextboxType.NORMAL);\n            Controls.Add(m_usernameTextbox);\n\n            //  Password\n            Controls.Add(new MyGuiControlLabel(this, controlsOriginLeft + 1 * MyGuiConstants.CONTROLS_DELTA, null, MyTextsWrapperEnum.Password, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n            //m_passwordTextbox = new MyGuiControlTextbox(this, controlsOriginRight + 1 * MyGuiConstants.CONTROLS_DELTA + new Vector2(MyGuiConstants.TEXTBOX_WIDTH / 2.0f, 0), true, MyGuiConstants.LABEL_TEXT_COLOR);\n            m_passwordTextbox = new MyGuiControlTextbox(this, controlsOriginRight + 1 * MyGuiConstants.CONTROLS_DELTA + new Vector2(MyGuiConstants.TEXTBOX_MEDIUM_SIZE.X / 2.0f, 0), MyGuiControlPreDefinedSize.MEDIUM, password, MyMwcValidationConstants.PASSWORD_LENGTH_MAX, MyGuiConstants.DEFAULT_CONTROL_NONACTIVE_COLOR/*TEXTBOX_BACKGROUND_COLOR*/, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiControlTextboxType.NORMAL);\n            Controls.Add(m_passwordTextbox);\n\n            bool remember = MyConfig.RememberUsernameAndPassword;\n            bool autologin = MyConfig.Autologin;\n\n\n            m_hidePasswordCheckbox = new MyGuiControlCheckbox(this,\n                  new Vector2(0.1950f,-0.0793f), \n                  MyGuiConstants.CHECKBOX_WITH_GLOW_SIZE,\n                 MyGuiManager.GetCheckboxOffTexture(), MyGuiManager.GetCheckboxOnTexture(), null,\n                 true, MyGuiConstants.CHECKBOX_BACKGROUND_COLOR, true, null);\n            //m_hidePasswordCheckbox = new MyGuiControlCheckbox(this, controlsOriginRight - 0.025f * Vector2.UnitX + MyGuiConstants.CONTROLS_DELTA + new Vector2(MyGuiConstants.CHECKBOX_SIZE.X / 2.0f, 0), true, MyGuiConstants.CHECKBOX_BACKGROUND_COLOR);\n            Controls.Add(m_hidePasswordCheckbox);\n            m_hidePasswordCheckbox.OnCheck = OnChangePasswordType;\n            OnChangePasswordType(m_hidePasswordCheckbox);\n\n\n\n            //  Remember\n            m_rememberCheckbox = new MyGuiControlCheckbox(this,\n                     controlsOriginRight + 2.25f * MyGuiConstants.CONTROLS_DELTA + new Vector2(MyGuiConstants.CHECKBOX_WITH_GLOW_SIZE.X / 2.0f, 0),\n                     MyGuiConstants.CHECKBOX_WITH_GLOW_SIZE,\n                     MyGuiManager.GetCheckboxOffTexture(), MyGuiManager.GetCheckboxOnTexture(), null,\n                     remember, MyGuiConstants.CHECKBOX_BACKGROUND_COLOR, true, null);\n\n            if (!m_simple)\n            {\n                Controls.Add(new MyGuiControlLabel(this, controlsOriginLeft + 2.25f * MyGuiConstants.CONTROLS_DELTA, null, MyTextsWrapperEnum.RememberMe, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n                Controls.Add(m_rememberCheckbox);\n            }\n\n            //  Auto-login\n            m_autologinCheckbox = new MyGuiControlCheckbox(this,\n                     controlsOriginRight + 3.25f * MyGuiConstants.CONTROLS_DELTA + new Vector2(MyGuiConstants.CHECKBOX_WITH_GLOW_SIZE.X / 2.0f, 0),\n                     MyGuiConstants.CHECKBOX_WITH_GLOW_SIZE,\n                     MyGuiManager.GetCheckboxOffTexture(), MyGuiManager.GetCheckboxOnTexture(), null,\n                     autologin, MyGuiConstants.CHECKBOX_BACKGROUND_COLOR, true, null);\n            \n            if (!m_simple)\n            {\n                Controls.Add(new MyGuiControlLabel(this, controlsOriginLeft + 3.25f * MyGuiConstants.CONTROLS_DELTA, null, MyTextsWrapperEnum.Autologin, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n                Controls.Add(m_autologinCheckbox);\n            }\n\n\n            //  Buttons APPLY and BACK\n            Vector2 buttonDelta = new Vector2(0.1f, m_size.Value.Y / 2.0f - MyGuiConstants.MESSAGE_BOX_BORDER_AREA_Y - MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE.Y / 2.0f);\n\n\n            var okButton = new MyGuiControlButton(this, new Vector2(-0.1861f, 0.1611f), MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE_SMALL,\n                Vector4.One,\n                MyGuiManager.GetConfirmButton(), null, null, MyTextsWrapperEnum.Ok,\n                MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, MyGuiControlButtonTextAlignment.CENTERED, OnOkClick,\n                true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true, true);\n            var cancelButton = new MyGuiControlButton(this, new Vector2(-0.0461f, 0.1611f), MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE_SMALL,\n                Vector4.One,\n                MyGuiManager.GetConfirmButton(), null, null, MyTextsWrapperEnum.Cancel,\n                MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, MyGuiControlButtonTextAlignment.CENTERED, OnCancelClick,\n                true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true, true);\n\n            var registerButton = new MyGuiControlButton(this, new Vector2(0.1924f, 0.1611f), MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE_SMALL,\n                Vector4.One,\n                MyGuiManager.GetConfirmButton(), null, null, MyTextsWrapperEnum.Register,\n                MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, MyGuiControlButtonTextAlignment.CENTERED, OnRegisterClick,\n                true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true, true);\n            Controls.Add(okButton);\n            Controls.Add(cancelButton);\n\n            if (!m_simple)\n            {\n                Controls.Add(registerButton);\n            }\n\n            //  Hide password\n            Controls.Add(new MyGuiControlLabel(this, new Vector2(0.2164f,-0.0793f),  null, MyTextsWrapperEnum.HidePassword, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n\n\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenLogin\";\n        }\n\n        public void OnOkClick(MyGuiControlButton sender)\n        {\n            //  Trim username and password because some users mistakenly write a space at the start/end\n            //  and then wonder why they can't log in\n            m_usernameTextbox.Text = m_usernameTextbox.Text.Trim();\n            m_passwordTextbox.Text = m_passwordTextbox.Text.Trim();\n\n            SaveToConfig();\n            MyGuiScreenLoginProgress loginProgressScreen;\n            if (m_openAfterSuccessfulLogin == null && m_callAfterSuccessfulLogin != null)\n            {\n                loginProgressScreen = new MyGuiScreenLoginProgress(m_usernameTextbox.Text, m_passwordTextbox.Text, m_callAfterSuccessfulLogin, this);\n            }\n            else\n            {\n                loginProgressScreen = new MyGuiScreenLoginProgress(m_usernameTextbox.Text, m_passwordTextbox.Text, m_openAfterSuccessfulLogin, this);\n            }\n            MyGuiManager.AddScreen(loginProgressScreen);\n\n            //CloseScreen();\n        }\n\n        public void SetUsernameAndPassword(string username, string password)\n        {\n            m_usernameTextbox.Text = username;\n            m_passwordTextbox.Text = password;\n        }\n\n        //  change is password is normal text or asterixs\n        public void OnChangePasswordType(MyGuiControlCheckbox sender)\n        {\n            if (m_hidePasswordCheckbox.Checked)\n                m_passwordTextbox.ChangeMyType(MyGuiControlTextboxType.PASSWORD);\n            else m_passwordTextbox.ChangeMyType(MyGuiControlTextboxType.NORMAL);\n        }\n\n        void SaveToConfig()\n        {\n            MyConfig.RememberUsernameAndPassword = m_rememberCheckbox.Checked;\n            MyConfig.Autologin = m_autologinCheckbox.Checked;\n\n            string username = \"\";\n            string password = \"\";\n            if (m_rememberCheckbox.Checked)\n            {\n                username = m_usernameTextbox.Text;\n                password = m_passwordTextbox.Text;\n            }\n            MyConfig.Username = username;\n            MyConfig.Password = password;\n            MyConfig.Save();\n        }\n\n        public override void HandleInput(MyGuiInput input, bool receivedFocusInThisUpdate)\n        {\n            base.HandleInput(input, receivedFocusInThisUpdate);\n\n            //  If autologin is true then we always must remember the login and password, otherwise autologin won't work\n            if (m_autologinCheckbox.Checked) m_rememberCheckbox.Checked = true;\n        }\n\n        public void OnCancelClick(MyGuiControlButton sender)\n        {\n            if (!MyGuiManager.IsMainMenuScreenOpened())\n            {\n                MyGuiScreenMainMenu.SkipAutologin();\n                MyGuiManager.BackToMainMenu();\n            }\n\n            MyGuiManager.UpdateDemoAccessScreen();\n\n            //  Just close the screen, ignore any change\n            CloseScreen();\n        }\n\n        public void OnRegisterClick(MyGuiControlButton sender)\n        {\n            MyGuiManager.AddScreen(new MyGuiScreenRegister(this, m_usernameTextbox.Text, m_passwordTextbox.Text));\n        }\n\n        protected override void Canceling()\n        {\n            MyGuiManager.UpdateDemoAccessScreen();\n\n            if(CanBeCanceled)\n                base.Canceling();\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/MyGuiScreenLoginProgress.cs",
    "content": "﻿using System.Net;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.World;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils;\nusing System;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing System.Text;\nusing System.ServiceModel.Security;\nusing System.ServiceModel;\nusing MinerWars.AppCode.Networking.MasterService;\nusing MinerWars.AppCode.Networking.SectorService;\nusing MinerWars.CommonLIB.AppCode.Networking.Services;\nusing MinerWars.AppCode.Networking;\n\n//  This screen is displayed during we wait for login response. It runs in main thread (no background thread needed in this case).\n\nnamespace MinerWars.AppCode.Game.GUI\n{\n    class MyGuiScreenLoginProgress : MyGuiScreenProgressBaseAsync<object>\n    {\n        string m_playerName;\n        string m_password;\n        MyGuiScreenBase m_openAfterSuccessfulLogin;\n        MyGuiScreenBase m_closeAfterSuccesfulLogin;\n        Action m_callAfterSuccessfulLogin = null;\n\n        public bool CloseScreenBeforeCallingHandler { get; set; }\n\n        //  Using this static public property client-server tells us about login response\n        public static MyGuiScreenLoginProgress CurrentScreen = null;    //  This is always filled with reference to actual instance of this scree. If there isn't, it's null.\n        public MyMwcLoginResponseResultEnum? LoginResponse;\n\n        IAsyncResult m_loginResult;\n\n        public MyGuiScreenLoginProgress(string playerName, string password, Action callAfterSuccessfulLogin, MyGuiScreenBase closeAfterSuccesfulLogin)\n            : this(playerName, password, (MyGuiScreenBase)null, closeAfterSuccesfulLogin)\n        {\n            m_callAfterSuccessfulLogin = callAfterSuccessfulLogin;\n        }\n\n        public MyGuiScreenLoginProgress(string playerName, string password, MyGuiScreenBase openAfterSuccessfulLogin, MyGuiScreenBase closeAfterSuccesfulLogin)\n            : base(MyTextsWrapperEnum.LoginInProgressPleaseWait, true)\n        {\n            m_openAfterSuccessfulLogin = openAfterSuccessfulLogin;\n            m_closeAfterSuccesfulLogin = closeAfterSuccesfulLogin;\n\n            CurrentScreen = this;\n\n            //  Reset everytime\n            LoginResponse = null;\n\n            m_playerName = playerName;\n            m_password = password;\n            PasswordHash = MyMwcUtils.GetHashedPassword(m_password);\n        }\n\n        public string PlayerName\n        {\n            get\n            {\n                return m_playerName;\n            }\n        }\n\n        public string PasswordHash\n        {\n            get;\n            set;\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenLoginProgress\";\n        }\n\n        protected override void ProgressStart()\n        {\n            if (String.IsNullOrEmpty(m_playerName) || String.IsNullOrEmpty(m_password))\n            {\n                LoginResponse = MyMwcLoginResponseResultEnum.USERNAME_OR_PASSWORD_EMPTY;\n            }\n            else\n            {\n                MyMasterServiceClient.SetCredentials(m_playerName, PasswordHash);\n                MySectorServiceClient.SetCredentials(m_playerName, PasswordHash);\n\n                MyMwcLog.WriteLine(\"Login request: \" + m_playerName);\n\n                var client = MyMasterServiceClient.GetCheckedInstance();\n                AddAction(client.BeginCheckVersion(MyMwcFinalBuildConstants.SERVER_PROTOCOL_VERSION, null, client), OnCheckVersion);\n            }\n        }\n\n        void OnCheckVersion(IAsyncResult result, object asyncState)\n        {\n            try\n            {\n                var client = (MyMasterServiceClient)result.AsyncState;\n                client.EndCheckVersion(result);\n\n                AddAction(client.BeginGetSectorServer(null, client), OnGetSectorServer);\n            }\n            catch (Exception e)\n            {\n                HandleLoginError(e);\n            }\n        }\n\n        void OnGetSectorServer(IAsyncResult result, object asyncState)\n        {\n            try\n            {\n                var client = (MyMasterServiceClient)result.AsyncState;\n                string sectorServerUrl = client.EndGetSectorServer(result);\n                client.Close();\n                MySectorServiceClient.SetUrl(sectorServerUrl);\n\n                AddAction(MySectorServiceClient.BeginLoginStatic(), OnLoginCompleted);\n            }\n            catch (Exception e)\n            {\n                HandleLoginError(e);\n            }\n        }\n\n        void OnLoginCompleted(IAsyncResult result, object asyncState)\n        {\n            try\n            {\n                MyUserInfo userInfo = MySectorServiceClient.EndLoginStatic(result);\n\n                MyMwcLog.WriteLine(\"Login successful, userId: \" + userInfo.UserId);\n\n                // 2.5D and cheats for everyone\n                var player = new MyPlayerLocal(new StringBuilder(userInfo.DisplayName), userInfo.UserId, userInfo.CanAccessDemo, userInfo.CanSave,\n                    userInfo.CanAccessEditorForStory, userInfo.CanAccessEditorForMMO, userInfo.HasAnyCheckpoints, true, userInfo.CanAccessMMO,\n                        new StringBuilder(m_playerName), new StringBuilder(PasswordHash), true);\n\n                player.AdditionalInfo = userInfo.AdditionalInfo;\n\n                MyClientServer.LoggedPlayer = player;\n                LoginResponse = MyMwcLoginResponseResultEnum.OK;\n            }\n            catch (Exception e)\n            {\n                HandleLoginError(e);\n            }\n        }\n\n        void HandleLoginError(Exception exception)\n        {\n            MyMwcLog.WriteLine(\"Login failed:\" + exception);\n\n            if (exception is MessageSecurityException)\n            {\n                var inner = exception.InnerException as FaultException;\n\n                if (inner != null)\n                {\n                    MyMwcLog.WriteLine(\"Login fail details: \" + inner.Code.Name);\n\n                    switch (inner.Code.Name)\n                    {\n                        case MyServiceConstants.FAULT_RESTRICTED:\n                            LoginResponse = MyMwcLoginResponseResultEnum.ACCESS_RESTRICTED;\n                            break;\n\n                        case MyServiceConstants.FAULT_CREDENTIALS:\n                            LoginResponse = MyMwcLoginResponseResultEnum.WRONG_USERNAME_OR_PASSWORD;\n                            break;\n\n                        default:\n                            LoginResponse = MyMwcLoginResponseResultEnum.GENERAL_FAILURE;\n                            break;\n                    }\n                }\n\n                if (exception.Message.StartsWith(\"The security timestamp\")) // There's no other way to check for invalid timestamp\n                {\n                    LoginResponse = MyMwcLoginResponseResultEnum.INVALID_TIME;\n                }\n            }\n            else if (exception is FaultException<MyVersionFault>)\n            {\n                LoginResponse = MyMwcLoginResponseResultEnum.WRONG_CLIENT_VERSION;\n            }\n            else if (exception is FaultException<MyAlreadyLoggedInFault>)\n            {\n                LoginResponse = MyMwcLoginResponseResultEnum.USER_ALREADY_LOGGED_IN;\n            }\n            else if (exception.Message.StartsWith(\"The request for security token has invalid or malformed elements\"))\n            {\n                // This is also caused by invalid time\n                LoginResponse = MyMwcLoginResponseResultEnum.INVALID_TIME;\n            }\n            else\n            {\n                LoginResponse = MyMwcLoginResponseResultEnum.GENERAL_FAILURE;\n            }\n        }\n\n        public override bool Update(bool hasFocus)\n        {\n            if (base.Update(hasFocus) == false) return false;\n\n            //  Only continue if this screen is really open (not closing or closed)\n            if (GetState() != MyGuiScreenState.OPENED) return false;\n\n            if (LoginResponse.HasValue)\n            {\n                MyMwcLog.WriteLine(\"Login Response: \" + LoginResponse.Value.ToString());\n\n                if (LoginResponse.Value == MyMwcLoginResponseResultEnum.OK)\n                {\n                    //  Login successful!\n                    MyConfig.LastLoginWasSuccessful = true;\n                    MyConfig.Save();\n\n                    if (m_closeAfterSuccesfulLogin != null)\n                    {\n                        m_closeAfterSuccesfulLogin.CloseScreen();\n                    }\n\n                    if (CloseScreenBeforeCallingHandler)\n                    {\n                        CloseScreenNow();\n                    }\n\n                    if (m_openAfterSuccessfulLogin != null)\n                    {\n                        MyGuiManager.AddScreen(m_openAfterSuccessfulLogin);\n                    }\n                    else if (m_callAfterSuccessfulLogin != null)\n                    {\n                        m_callAfterSuccessfulLogin();\n                    }\n\n                    if (!CloseScreenBeforeCallingHandler)\n                    {\n                        CloseScreen();\n                    }\n                }\n                else\n                {\n                    if (LoginResponse.Value == MyMwcLoginResponseResultEnum.USER_ALREADY_LOGGED_IN)\n                    {\n                        MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.CantLoginPlayerAlreadyLoggedIn, MyTextsWrapperEnum.MessageBoxCaptionError, MyTextsWrapperEnum.Ok, null));\n                    }\n                    else if (LoginResponse.Value == MyMwcLoginResponseResultEnum.WRONG_USERNAME_OR_PASSWORD)\n                    {\n                        MyTextsWrapperEnum wrongMessage = MyTextsWrapperEnum.CantLoginWrongPlayerNameOrPassword;\n                        if (MyMwcFinalBuildConstants.IS_PUBLIC) wrongMessage = MyTextsWrapperEnum.CantLoginWrongPlayerNameOrPasswordPublic;\n                        MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, wrongMessage, MyTextsWrapperEnum.MessageBoxCaptionError, MyTextsWrapperEnum.Ok, null));\n                    }\n                    else if (LoginResponse.Value == MyMwcLoginResponseResultEnum.USERNAME_OR_PASSWORD_EMPTY)\n                    {\n                        MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.CantLoginEmptyUsernameOrPassword, MyTextsWrapperEnum.MessageBoxCaptionError, MyTextsWrapperEnum.Ok, null));\n                    }\n                    else if (LoginResponse.Value == MyMwcLoginResponseResultEnum.ACCESS_RESTRICTED && !MyMwcFinalBuildConstants.IS_PUBLIC)\n                    {\n                        MyTextsWrapperEnum restrictedMessage = MyTextsWrapperEnum.CantLoginAccessRestrictedDevelop;\n                        if (MyMwcFinalBuildConstants.IS_TEST) restrictedMessage = MyTextsWrapperEnum.CantLoginAccessRestrictedTest;\n                        MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, restrictedMessage, MyTextsWrapperEnum.MessageBoxCaptionError, MyTextsWrapperEnum.Ok, null));\n                    }\n                    else if (LoginResponse.Value == MyMwcLoginResponseResultEnum.WRONG_CLIENT_VERSION)\n                    {\n                        MyTextsWrapperEnum message = MyTextsWrapperEnum.CantLoginClientVersionIsWrong;\n                        MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, message, MyTextsWrapperEnum.MessageBoxCaptionError, MyTextsWrapperEnum.Ok, null));\n                    }\n                    else if (LoginResponse.Value == MyMwcLoginResponseResultEnum.INVALID_TIME)\n                    {\n                        MyTextsWrapperEnum message = MyTextsWrapperEnum.InvalidTime;\n                        MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, message, MyTextsWrapperEnum.MessageBoxCaptionError, MyTextsWrapperEnum.Ok, null));\n                    }\n                    else\n                    {\n                        MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.PleaseTryAgain, MyTextsWrapperEnum.MessageBoxNetworkErrorCaption, MyTextsWrapperEnum.Ok, null));\n                    }\n\n                    // This is used for quick launch - login progress screen is not created from login screen\n                    if (LoginResponse.Value != MyMwcLoginResponseResultEnum.OK && !MyGuiManager.IsLoginScreenOpened())\n                    {\n                        AddLoginScreen();\n                    }\n\n                    CloseScreen();\n                }\n\n                MySectorServiceClient.SafeClose();\n                return false;\n            }\n\n            return true;\n        }\n\n        void AddLoginScreen()\n        {\n            if (MySteam.IsActive)\n            {\n                //MyGuiManager.BackToMainMenu();\n            }\n            else\n            {\n                MyGuiManager.AddScreen(new MyGuiScreenLogin(m_playerName, m_password, m_openAfterSuccessfulLogin));\n            }\n        }\n\n        protected override void Canceling()\n        {\n            base.Canceling();\n            if (!MyGuiManager.IsLoginScreenOpened())\n            {\n                AddLoginScreen();\n            }\n        }\n\n        public override bool CloseScreen()\n        {\n            bool ret = base.CloseScreen();\n\n            if (ret == true)\n            {\n                CurrentScreen = null;\n            }\n\n            return ret;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/MyGuiScreenLogoutProgress.cs",
    "content": "﻿using MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.World;\nusing SysUtils.Utils;\nusing MinerWars.AppCode.Networking.SectorService;\nusing System;\nusing MinerWars.AppCode.Game.Utils;\n\nnamespace MinerWars.AppCode.Game.GUI\n{\n    class MyGuiScreenLogoutProgress : MyGuiScreenSectorServiceCallProgress\n    {\n        public delegate void OnLogoutProgressClosedCallback();\n        OnLogoutProgressClosedCallback m_onLogoutProgressClosed;\n\n        //  Using this static public property client-server tells us about logout response\n        public static MyGuiScreenLogoutProgress CurrentScreen = null;    //  This is always filled with reference to actual instance of this scree. If there isn't, it's null.\n\n        public MyGuiScreenLogoutProgress(OnLogoutProgressClosedCallback onLogoutProgressClosed)\n            : base(MyTextsWrapperEnum.LogoutInProgressPleaseWait, true)\n        {\n            CurrentScreen = this;\n            m_onLogoutProgressClosed = onLogoutProgressClosed;\n            m_screenCanHide = true;\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenLogoutProgress\";\n        }\n\n        public override void LoadContent()\n        {\n            if (MySectorServiceClient.IsInstanceValid)\n            {\n                base.LoadContent();\n            }\n            else\n            {\n                HandleLogout();\n            }\n        }\n\n        protected override void OnError(Exception exception, MySectorServiceClient asyncState)\n        {\n            // It's same like when logout succeded\n            HandleLogout();\n        }\n\n        protected override void ServiceProgressStart(MySectorServiceClient client)\n        {\n            if (MySectorServiceClient.HasCredentials && MySectorServiceClient.HasUrl)\n            {\n                AddAction(client.BeginLogout(null, client), OnLogoutCompleted);\n            }\n            else\n            {\n                CloseScreen();\n            }\n        }\n\n        void OnLogoutCompleted(IAsyncResult result, MySectorServiceClient client)\n        {\n            try\n            {\n                client.EndLogout(result);\n            }\n            catch (Exception e) // We don't care about exceptions here, just log exception\n            {\n                MyMwcLog.WriteLine(e);\n            }\n\n            HandleLogout();\n        }\n\n        private void HandleLogout()\n        {\n            MyClientServer.Logout();\n            MySectorServiceClient.ClearAndClose();\n            m_onLogoutProgressClosed();\n            CloseScreen();\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/MyGuiScreenMainMenu.cs",
    "content": "﻿using MinerWarsMath;\nusing MinerWars.AppCode.Toolkit.Input;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.World;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing SysUtils.Utils;\nusing MinerWars.AppCode.Game.Textures;\nusing KeenSoftwareHouse.Library.Extensions;\n\n//  This main menu server for different scenarios. Right after the game is started it displays default main menu.\n//  During game or fly-through it displays different buttons and may behave differently.\n\nnamespace MinerWars.AppCode.Game.GUI\n{\n    using System;\n    using System.Text;\n    using Networking.SectorService;\n    using Missions;\n    using Managers.Session;\n    using Sessions;\n    using CommonLIB.AppCode.Networking.Multiplayer;\n    using SysUtils;\n    using MinerWars.AppCode.Networking;\n    using MinerWars.AppCode.Networking.MasterService;\n    using System.ServiceModel;\n    using System.Threading;\n    using System.Diagnostics;\n    using System.Runtime.InteropServices;\n    using MinerWars.CommonLIB.AppCode.ObjectBuilders;\n\n    class MyGuiScreenMainMenu : MyGuiScreenBase\n    {\n        static int m_autologinAttempts = 0;\n        //MyLowFPSDetection m_lowFpsDetection;\n        //static MyTexture2D m_MainMenuPanelBackground;\n        private static MyTexture2D m_MainmenuOverlay;\n        private Vector2 m_mainMenuPanelSize;\n        private Vector2 m_mainMenuPanelPosition;\n        private bool m_musicPlayed = false;\n        private int m_timeFromMenuLoadedMS = 0;\n        private const int PLAY_MUSIC_AFTER_MENU_LOADED_MS = 1000;\n\n        private static bool m_loginInProgress = false;\n\n        MyGuiControlButton m_btnJoinMode;\n\n        private StringBuilder m_playerNameString = new StringBuilder(40);\n        private bool m_showVideoOptions = true;\n\n        delegate void OnLoginVerified();\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenMainMenu\";\n        }\n\n        public static void SkipAutologin()\n        {\n            m_autologinAttempts = 1;\n        }\n\n        //  This is for adding main menu the easy way\n        public static void AddMainMenu(bool showVideoOptions)\n        {\n            MyGuiManager.AddScreen(new MyGuiScreenMainMenu(showVideoOptions));\n        }\n\n        //  This is when we need to open screen that needs logged in user. So first we display login screen, make sure user is logged in,\n        //  and then continue do desired screen\n        //  It is for adding login screen the easy way\n        public static void AddLoginScreen(MyGuiScreenBase openAfterSuccessfulLogin)\n        {\n            AddLoginScreen(GetAction(openAfterSuccessfulLogin));\n        }\n\n        public static void AddLoginScreen(Action callAfterSuccessfulLogin)\n        {\n            if (!MyClientServer.IsMwAccount)\n            {\n                if (!HandleSteamLogin(callAfterSuccessfulLogin))\n                {\n                    MyGuiManager.AddScreen(new MyGuiScreenLogin(MyConfig.Username, MyConfig.Password, callAfterSuccessfulLogin));\n                }\n            }\n            else\n            {\n                callAfterSuccessfulLogin();\n            }\n        }\n\n        public static void AddLoginScreenDrmFree(MyGuiScreenBase openAfterSuccessfulLogin)\n        {\n            AddLoginScreenDrmFree(GetAction(openAfterSuccessfulLogin));\n        }\n\n        // For DRM free version, it logins user without connecting to server\n        public static void AddLoginScreenDrmFree(Action callAfterSuccessfulLogin)\n        {\n            if (MyClientServer.LoggedPlayer == null)\n            {\n                if (MySteam.IsActive)\n                {\n                    // Allow cheats and 2.5D to all Steam users\n                    MyClientServer.LoggedPlayer = new MyPlayerLocal(new StringBuilder(MySteam.UserName), MyPlayerLocal.OFFLINE_MODE_USERID, true, true, false, false, false,\n                        true, false, new StringBuilder(MySteam.UserName), new StringBuilder(String.Empty), true)\n                    {\n                        AdditionalInfo = new MyAdditionalUserInfo()\n                    };\n\n                    callAfterSuccessfulLogin();\n                }\n                else\n                {\n                    AddLoginScreen(callAfterSuccessfulLogin);\n                }\n            }\n            else\n            {\n                //  If we are already logged in, we can start desired screen\n                callAfterSuccessfulLogin();\n            }\n        }\n\n        private static Action GetAction(MyGuiScreenBase openAfterSuccessfulLogin)\n        {\n            var action = new Action(delegate() { if (openAfterSuccessfulLogin != null) MyGuiManager.AddScreen(openAfterSuccessfulLogin); });\n            return action;\n        }\n\n        private static bool HandleSteamLogin(Action loginSuccessAction)\n        {\n            if (MySteam.IsActive)\n            {\n                if (m_loginInProgress)\n                {\n                    Debug.Fail(\"Login is already in progress!\");\n                    MyMwcLog.WriteLine(\"Login called twice, second call stack trace:\");\n                    MyMwcLog.WriteLine(Environment.StackTrace);\n\n                    // Just do nothing, another login is already in progress\n                    return true;\n                }\n\n                m_loginInProgress = true;\n\n                MyMasterServerAction steamLogin = new MyMasterServerAction(MyTextsWrapperEnum.LoginInProgressPleaseWait);\n                steamLogin.SetPublicCredentials();\n                if (MyMwcFinalBuildConstants.STEAM_DEMO)\n                {\n                    steamLogin.BeginAction = (c) => c.BeginSteamDemoLogin(MySteam.UserId, MySteam.SessionTicket, null, c);\n                }\n                else\n                {\n                    steamLogin.BeginAction = (c) => c.BeginSteamLogin(MySteam.UserId, MySteam.SessionTicket, null, c);\n                }\n                steamLogin.EndAction = (c, r) => OnSteamLoginEnd(c, r, loginSuccessAction);\n                steamLogin.Start();\n                return true;\n            }\n            return false;\n        }\n\n        private static void OnSteamLoginEnd(MyMasterServiceClient client, IAsyncResult result, Action loginSuccessAction)\n        {\n            try\n            {\n                string username, token;\n                if (MyMwcFinalBuildConstants.STEAM_DEMO)\n                {\n                    username = client.EndSteamDemoLogin(out token, result);\n                }\n                else\n                {\n                    username = client.EndSteamLogin(out token, result);\n                }\n                var screen = new MyGuiScreenLoginProgress(username, token, () =>\n                    {\n                        MyClientServer.LoggedPlayer.LoggedUsingSteam = true;\n                        MyClientServer.LoggedPlayer.SetDisplayName(new StringBuilder(MySteam.UserName));\n                        loginSuccessAction();\n                    }, null);\n                screen.CloseScreenBeforeCallingHandler = true;\n                screen.PasswordHash = token;\n                MyGuiManager.AddScreen(screen);\n\n                m_loginInProgress = false;\n            }\n            catch (FaultException<MySteamFault> e)\n            {\n                if (e.Detail.SteamFaultCode == SteamFaultCode.NotRegistered)\n                {\n                    MyMasterServerAction registerAction = new MyMasterServerAction(MyTextsWrapperEnum.LoginInProgressPleaseWait);\n                    registerAction.SetPublicCredentials();\n                    if (String.IsNullOrEmpty(MySteam.SerialKey))\n                    {\n                        m_loginInProgress = false;\n                        OnSteamRegisterError(new InvalidOperationException(\"Cannot obtain CD key from Steam\"));\n                    }\n                    else\n                    {\n                        registerAction.BeginAction = (c) => c.BeginSteamRegister(MySteam.UserId, MySteam.SessionTicket, MySteam.SerialKey, MySteam.UserName, null, c);\n                        registerAction.EndAction = (c, r) => c.EndSteamRegister(r);\n                        registerAction.ActionSuccess += () => OnSteamRegister(loginSuccessAction);\n                        registerAction.ActionFailed += OnSteamRegisterError;\n                        registerAction.ShowErrorMessage = false;\n                        registerAction.Start();\n                    }\n                }\n                else if (e.Detail.SteamFaultCode == SteamFaultCode.NoMW1ProductsOwned)\n                {\n                    m_loginInProgress = false;\n                    MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.SteamNoProductsText, MyTextsWrapperEnum.SteamNoProductsCaption, MyTextsWrapperEnum.Ok, null));\n                }\n                else if (e.Detail.SteamFaultCode == SteamFaultCode.InvalidTicket)\n                {\n                    m_loginInProgress = false;\n                    MySteam.RefreshSessionTicket();\n                    MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.SteamInvalidTicketText, MyTextsWrapperEnum.SteamInvalidTicketCaption, MyTextsWrapperEnum.Ok, null));\n                }\n                else\n                {\n                    m_loginInProgress = false;\n                    throw;\n                }\n            }\n            finally\n            {\n                m_loginInProgress = false;\n            }\n        }\n\n        private static void OnSteamRegister(Action loginSuccessAction)\n        {\n            m_loginInProgress = false;\n            HandleSteamLogin(loginSuccessAction);\n        }\n\n        private static void OnSteamRegisterError(Exception e)\n        {\n            m_loginInProgress = false;\n            string errorMessage = e.Message;\n            if (e is FaultException<MySteamFault>)\n            {\n                var code = ((FaultException<MySteamFault>)e).Detail.SteamFaultCode;\n                errorMessage = \"Known code \" + (int)code + \", \" + code.ToString();\n            }\n\n            var text = MyTextsWrapper.GetFormatString(MyTextsWrapperEnum.SteamRegisterErrorText, new object[] { MySteam.UserId, errorMessage, MySteam.SerialKey ?? String.Empty });\n            var caption = MyTextsWrapper.Get(MyTextsWrapperEnum.SteamRegisterErrorCaption);\n\n            var thread = new Thread(() => System.Windows.Forms.Clipboard.SetText(text));\n            thread.Name = \"SteamRegisterError\";\n            thread.SetApartmentState(ApartmentState.STA);\n            thread.Start();\n\n            MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, new StringBuilder(text), caption, MyTextsWrapperEnum.Ok, null));\n        }\n\n        //  This is for adding auto-login screen the easy way\n        public static void AddAutologinScreen()\n        {\n            if (!MyClientServer.IsMwAccount)\n            {\n                if (MyMwcFinalBuildConstants.IS_CLOUD_GAMING)\n                {\n                    // Allow cheats and 2.5D to all Steam users\n                    MyClientServer.LoggedPlayer = new MyPlayerLocal(new StringBuilder(\"Player\"), MyPlayerLocal.OFFLINE_MODE_USERID, true, true, false, false, false,\n                        true, false, new StringBuilder(\"Player\"), new StringBuilder(String.Empty), true)\n                    {\n                        AdditionalInfo = new MyAdditionalUserInfo()\n                    };\n                }\n                else if ((MyConfig.Autologin == true) && (MyConfig.LastLoginWasSuccessful == true))\n                {\n                    //  We will try autologin only one time - at the beginning of application life. Not later when user gets disconnected during gameplay.\n                    if (m_autologinAttempts == 0)\n                    {\n                        m_autologinAttempts++;\n\n                        string username = MyConfig.Username;\n                        string password = MyConfig.Password;\n                        MyGuiManager.AddScreen(new MyGuiScreenLoginProgress(username, password, (MyGuiScreenBase)null, null));\n                    }\n                }\n            }\n        }\n\n        public MyGuiScreenMainMenu(bool showVideoOptions)\n            : base(Vector2.Zero, null, null)\n        {\n            m_showVideoOptions = showVideoOptions;\n\n            if (MyGuiScreenGamePlay.Static == null)\n            {\n                m_closeOnEsc = false;\n            }\n            else if (MyGuiScreenGamePlay.Static.IsPausable())\n            {\n                MyMinerGame.SwitchPause();\n            }\n\n            //if (MyGuiScreenGamePlay.Static.GetGameType() == MyGuiScreenGamePlayType.MAIN_MENU) m_closeOnEsc = false;\n            //if (MyGuiScreenGamePlay.Static.IsPausable()) MyMinerGame.SwitchPause();\n\n            //Because then it is visible under credits, help, etc..\n            m_drawEvenWithoutFocus = false;\n\n            MyClientServer.OnLoggedPlayerChanged += new EventHandler(MyClientServer_OnLoggedPlayerChanged);\n        }\n\n        void MyClientServer_OnLoggedPlayerChanged(object sender, EventArgs e)\n        {\n            RecreateControls(false);\n        }\n\n        //  Because only main menu's controla depends on fullscreen pixel coordinates (not normalized), after we change\n        //  screen resolution we need to recreate controls too. Otherwise they will be still on old/bad positions, and\n        //  for example when changing from 1920x1200 to 800x600 they would be out of screen\n        public override void RecreateControls(bool constructor)\n        {\n            Controls.Clear();\n\n            MyGuiControlButtonTextAlignment menuButtonTextAlignment = MyGuiControlButtonTextAlignment.CENTERED;\n\n            Vector2 leftMenuPositionOrigin = GetMenuLeftBottomPosition() + new Vector2(MyGuiConstants.MAIN_MENU_BUTTON_SIZE.X / 2f, -MyGuiConstants.MAIN_MENU_BUTTON_SIZE.Y / 2f);\n\n            if (MyGuiScreenGamePlay.Static == null || MyGuiScreenGamePlay.Static.IsMainMenuActive())\n            {\n                // Left main menu part\n\n                MyTexture2D buttonTexture = MyGuiManager.GetButtonTexture();\n\n                //buttons background\n                m_mainMenuPanelPosition = leftMenuPositionOrigin - 4.1f * MyGuiConstants.MENU_BUTTONS_POSITION_DELTA;\n\n\n                m_mainMenuPanelSize = new Vector2(574f / 1600f, 901.0f / 1200f);\n\n                var a = MyGuiManager.GetSafeFullscreenRectangle();\n                var fullScreenSize = new Vector2(a.Width / (a.Height * (4 / 3f)), 1f);\n\n                MyTextsWrapperEnum? isDemo = null;\n                if (MyClientServer.LoggedPlayer != null && MyClientServer.LoggedPlayer.IsDemoUser()) isDemo = MyTextsWrapperEnum.NotAvailableInDemoMode;\n\n\n                Controls.Add(new MyGuiControlPanel(this, new Vector2(0.5f, 0.5f), fullScreenSize, MyGuiConstants.SCREEN_BACKGROUND_COLOR,\n                        m_MainmenuOverlay, null, null, null,\n                        MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER));\n\n                //leftMenuPositionOrigin -= new Vector2(-0.0012f, 0.072f) - 0.87f * MyGuiConstants.MENU_BUTTONS_POSITION_DELTA - new Vector2(0, 0.035f);\n\n                // if (!MyClientServer.MW25DEnabled)\n                {\n                    // Story\n                    Controls.Add(new MyGuiControlButton(this, leftMenuPositionOrigin - 6f * MyGuiConstants.MENU_BUTTONS_POSITION_DELTA, MyGuiConstants.MAIN_MENU_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                        buttonTexture, null, null,\n                        MyTextsWrapperEnum.PlayStory, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, menuButtonTextAlignment, OnPlayStoryClick, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, MyFakes.PLAY_STORY_BUTTON_IMPLEMENTED, true, false));\n                }\n\n                bool multiplayerEnabled = true;\n                // if (MyClientServer.MW25DEnabled && ((MyClientServer.LoggedPlayer != null) && (MyClientServer.LoggedPlayer.GetCanSave() == false)))\n                //   multiplayerEnabled = false;\n\n                // Sandbox\n                MyGuiControlButton btn2 = new MyGuiControlButton(this, leftMenuPositionOrigin - 5f * MyGuiConstants.MENU_BUTTONS_POSITION_DELTA, MyGuiConstants.MAIN_MENU_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                    buttonTexture, null, null,\n                    MyTextsWrapperEnum.PlaySandbox, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, menuButtonTextAlignment, OnMultiplayerClick, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, multiplayerEnabled, true, false);\n                Controls.Add(btn2);\n                if (!MyClientServer.HasFullGame)\n                {\n                    btn2.AccessForbiddenReason = isDemo;\n                }\n                btn2.DrawRedTextureWhenDisabled = false;\n\n                // Editor\n                Controls.Add(new MyGuiControlButton(this, leftMenuPositionOrigin - 4f * MyGuiConstants.MENU_BUTTONS_POSITION_DELTA, MyGuiConstants.MAIN_MENU_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                    buttonTexture, null, null,\n                    MyTextsWrapperEnum.Editor, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, menuButtonTextAlignment, OnEditorClick, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, MyFakes.EDITOR_BUTTON_IMPLEMENTED, true, false));\n\n                // Options\n                Controls.Add(new MyGuiControlButton(this, leftMenuPositionOrigin - 3f * MyGuiConstants.MENU_BUTTONS_POSITION_DELTA, MyGuiConstants.MAIN_MENU_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                    buttonTexture, null, null,\n                    MyTextsWrapperEnum.Options, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, menuButtonTextAlignment, OnOptionsClick, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true, true, false));\n\n                // Help\n                Controls.Add(new MyGuiControlButton(this, leftMenuPositionOrigin - 2f * MyGuiConstants.MENU_BUTTONS_POSITION_DELTA, MyGuiConstants.MAIN_MENU_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                    buttonTexture, null, null,\n                    MyTextsWrapperEnum.Help, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, menuButtonTextAlignment, OnHelpClick, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true, true, false));\n\n                // Credits\n                Controls.Add(new MyGuiControlButton(this, leftMenuPositionOrigin - 1f * MyGuiConstants.MENU_BUTTONS_POSITION_DELTA, MyGuiConstants.MAIN_MENU_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                    buttonTexture, null, null,\n                    MyTextsWrapperEnum.Credits, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, menuButtonTextAlignment, OnFlyThroughAnimationClick, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, MyFakes.CREDITS_BUTTON_IMPLEMENTED, true, false));\n\n                // Exit to windows\n                Controls.Add(new MyGuiControlButton(this, leftMenuPositionOrigin - 0f * MyGuiConstants.MENU_BUTTONS_POSITION_DELTA, MyGuiConstants.MAIN_MENU_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                    buttonTexture, null, null,\n                    MyTextsWrapperEnum.ExitToWindows, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, menuButtonTextAlignment, OnExitToWindowsClick, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true, true, false));\n\n\n                Vector2 textRightTopPosition = MyGuiManager.GetScreenTextRightTopPosition();\n                Vector2 position = textRightTopPosition + 8f * MyGuiConstants.CONTROLS_DELTA + new Vector2(-.1f, .06f);\n\n                // Profile\n                AddProfileButton(menuButtonTextAlignment, position);\n\n                if (MyFakes.FAKE_SCREEN_ENABLED)\n                {\n                    Controls.Add(new MyGuiControlButton(this, leftMenuPositionOrigin - 7f * MyGuiConstants.MENU_BUTTONS_POSITION_DELTA, MyGuiConstants.MAIN_MENU_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                    buttonTexture, null, null,\n                    MyTextsWrapperEnum.FakeScreen, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, menuButtonTextAlignment, OnFakeScreenClick, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true, true, false));\n                }\n\n                //  Set mouse cursor near first button so it will loke nicer and won't be in the middle of screen\n                SetMouseCursorPosition(constructor, leftMenuPositionOrigin - 6.7f * MyGuiConstants.MENU_BUTTONS_POSITION_DELTA + new Vector2(MyGuiConstants.MAIN_MENU_BUTTON_SIZE.X * 0.3f, 0));\n            }\n            else if (MyGuiScreenGamePlay.Static.GetGameType() != MyGuiScreenGamePlayType.GAME_STORY)\n            {\n                //buttons background\n                m_mainMenuPanelPosition = leftMenuPositionOrigin - 0.5f * 4 * MyGuiConstants.MENU_BUTTONS_POSITION_DELTA;\n\n\n                var a = MyGuiManager.GetSafeFullscreenRectangle();\n                var fullScreenSize = new Vector2(a.Width / (a.Height * (4 / 3f)), 1f);\n                Controls.Add(new MyGuiControlPanel(this, new Vector2(0.5f, 0.5f), fullScreenSize, MyGuiConstants.SCREEN_BACKGROUND_COLOR,\n                    m_MainmenuOverlay, null, null, null,\n                    MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER));\n\n                Controls.Add(new MyGuiControlButton(this, leftMenuPositionOrigin - 3 * MyGuiConstants.MENU_BUTTONS_POSITION_DELTA, MyGuiConstants.MAIN_MENU_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                    MyTextsWrapperEnum.ContinueUppercase, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnContinueClick, MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n\n                Vector2 textRightTopPosition = MyGuiManager.GetScreenTextRightTopPosition();\n                Vector2 position = textRightTopPosition + 8f * MyGuiConstants.CONTROLS_DELTA + new Vector2(-.1f, .06f);\n\n                Controls.Add(new MyGuiControlButton(this, leftMenuPositionOrigin - 2 * MyGuiConstants.MENU_BUTTONS_POSITION_DELTA, MyGuiConstants.MAIN_MENU_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                    MyTextsWrapperEnum.Options, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnOptionsClick, menuButtonTextAlignment, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n                Controls.Add(new MyGuiControlButton(this, leftMenuPositionOrigin - 1 * MyGuiConstants.MENU_BUTTONS_POSITION_DELTA, MyGuiConstants.MAIN_MENU_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                    MyTextsWrapperEnum.Help, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnHelpClick, menuButtonTextAlignment, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n                Controls.Add(new MyGuiControlButton(this, leftMenuPositionOrigin - 0 * MyGuiConstants.MENU_BUTTONS_POSITION_DELTA, MyGuiConstants.MAIN_MENU_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                    MyTextsWrapperEnum.ExitToMainMenu, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnExitToMainMenuClick, menuButtonTextAlignment, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n\n                AddProfileButton(menuButtonTextAlignment, position);\n\n                //  Set mouse cursor near first button so it will loke nicer and won't be in the middle of screen\n                SetMouseCursorPosition(constructor, leftMenuPositionOrigin - 4f * MyGuiConstants.MENU_BUTTONS_POSITION_DELTA + new Vector2(MyGuiConstants.MAIN_MENU_BUTTON_SIZE.X * 0.3f, 0));\n            }\n            else if (MyGuiScreenGamePlay.Static.IsGameActive())\n            {\n                bool canEditStory = MyClientServer.LoggedPlayer != null && MyClientServer.LoggedPlayer.GetCanAccessEditorForStory();\n                int buttonCount = canEditStory ? 6 : 5;\n\n\n                bool isDemo = MyClientServer.LoggedPlayer != null && MyClientServer.LoggedPlayer.IsDemoUser();\n                if (isDemo)\n                {\n                    buttonCount--;\n                }\n\n                bool canLoad = (!MyMultiplayerGameplay.IsRunning || MyMultiplayerGameplay.Static.IsHost);\n\n                //buttons background\n                m_mainMenuPanelPosition = leftMenuPositionOrigin - 0.5f * buttonCount * MyGuiConstants.MENU_BUTTONS_POSITION_DELTA;\n\n                var a = MyGuiManager.GetSafeFullscreenRectangle();\n                var fullScreenSize = new Vector2(a.Width / (a.Height * (4 / 3f)), 1f);\n                Controls.Add(new MyGuiControlPanel(this, new Vector2(0.5f, 0.5f), fullScreenSize, MyGuiConstants.SCREEN_BACKGROUND_COLOR,\n                    m_MainmenuOverlay, null, null, null,\n                    MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER));\n\n                //leftMenuPositionOrigin.Y += 0.04f;\n                int buttonIndex = buttonCount;\n                Controls.Add(new MyGuiControlButton(this, leftMenuPositionOrigin - ((float)(--buttonIndex)) * MyGuiConstants.MENU_BUTTONS_POSITION_DELTA, MyGuiConstants.MAIN_MENU_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                    MyTextsWrapperEnum.ContinueUppercase, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnContinueClick, MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n                if (!isDemo && canLoad)\n                {\n                    Controls.Add(new MyGuiControlButton(this, leftMenuPositionOrigin - ((float)(--buttonIndex)) * MyGuiConstants.MENU_BUTTONS_POSITION_DELTA, MyGuiConstants.MAIN_MENU_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                        MyTextsWrapperEnum.LoadCheckpoint, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnRestartClick, MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n                }\n\n                Vector2 textRightTopPosition = MyGuiManager.GetScreenTextRightTopPosition();\n                Vector2 position = textRightTopPosition + 8f * MyGuiConstants.CONTROLS_DELTA + new Vector2(-.1f, .06f);\n\n\n                Controls.Add(new MyGuiControlButton(this, leftMenuPositionOrigin - ((float)(--buttonIndex)) * MyGuiConstants.MENU_BUTTONS_POSITION_DELTA, MyGuiConstants.MAIN_MENU_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                    MyTextsWrapperEnum.Options, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnOptionsClick, menuButtonTextAlignment, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n                Controls.Add(new MyGuiControlButton(this, leftMenuPositionOrigin - ((float)(--buttonIndex)) * MyGuiConstants.MENU_BUTTONS_POSITION_DELTA, MyGuiConstants.MAIN_MENU_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                    MyTextsWrapperEnum.Help, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnHelpClick, menuButtonTextAlignment, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n                Controls.Add(new MyGuiControlButton(this, leftMenuPositionOrigin - ((float)(--buttonIndex)) * MyGuiConstants.MENU_BUTTONS_POSITION_DELTA, MyGuiConstants.MAIN_MENU_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                    MyTextsWrapperEnum.ExitToMainMenu, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnExitToMainMenuClick, menuButtonTextAlignment, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n\n                AddProfileButton(menuButtonTextAlignment, position);\n\n                if (MyMultiplayerGameplay.IsRunning && MyMultiplayerGameplay.Static.IsHost) //TODO: this will be removed later\n                {\n                    position = textRightTopPosition + 10f * MyGuiConstants.CONTROLS_DELTA + new Vector2(-.025f, .06f);\n                    if (MyMultiplayerGameplay.Static.JoinMode == MyJoinMode.Closed)\n                    {\n                        Controls.Add(new MyGuiControlLabel(this, position, null, MyTextsWrapperEnum.JoinModeStateClosed, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_CENTER));\n\n                        position = textRightTopPosition + 11f * MyGuiConstants.CONTROLS_DELTA + new Vector2(-.10f, .06f);\n                        m_btnJoinMode = new MyGuiControlButton(this, position, MyGuiConstants.BACK_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR, MyTextsWrapper.Get(MyTextsWrapperEnum.EnableCoop), new StringBuilder(\"\"), MyGuiConstants.BACK_BUTTON_TEXT_COLOR, MyGuiConstants.BACK_BUTTON_TEXT_SCALE, cbJoinMode_OnSelect, MyGuiControlButtonTextAlignment.CENTERED, false, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true);\n                        Controls.Add(m_btnJoinMode);\n\n                    }\n                    else if (MyMultiplayerGameplay.Static.JoinMode == MyJoinMode.Open)\n                    {\n\n                        Controls.Add(new MyGuiControlLabel(this, position, null, MyTextsWrapperEnum.JoinModeStateOpen, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_CENTER));\n\n                        position = textRightTopPosition + 11f * MyGuiConstants.CONTROLS_DELTA + new Vector2(-.1f, .06f);\n                        m_btnJoinMode = new MyGuiControlButton(this, position, MyGuiConstants.BACK_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR, MyTextsWrapper.Get(MyTextsWrapperEnum.DisableCoop), new StringBuilder(\"\"), MyGuiConstants.BACK_BUTTON_TEXT_COLOR, MyGuiConstants.BACK_BUTTON_TEXT_SCALE, cbJoinMode_OnSelect, MyGuiControlButtonTextAlignment.CENTERED, false, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true);\n                        Controls.Add(m_btnJoinMode);\n\n                    }\n                }\n\n                //  Set mouse cursor near first button so it will loke nicer and won't be in the middle of screen\n                SetMouseCursorPosition(constructor, leftMenuPositionOrigin - 4f * MyGuiConstants.MENU_BUTTONS_POSITION_DELTA + new Vector2(MyGuiConstants.MAIN_MENU_BUTTON_SIZE.X * 0.3f, 0));\n            }\n            else if (MyGuiScreenGamePlay.Static.IsFlyThroughActive())\n            {\n                //buttons background\n                m_mainMenuPanelPosition = leftMenuPositionOrigin - 1.5f * MyGuiConstants.MENU_BUTTONS_POSITION_DELTA;\n\n\n                Controls.Add(new MyGuiControlButton(this, leftMenuPositionOrigin - 3 * MyGuiConstants.MENU_BUTTONS_POSITION_DELTA, MyGuiConstants.MAIN_MENU_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                    MyTextsWrapperEnum.ContinueUppercase, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnContinueClick, MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n                Controls.Add(new MyGuiControlButton(this, leftMenuPositionOrigin - 2 * MyGuiConstants.MENU_BUTTONS_POSITION_DELTA, MyGuiConstants.MAIN_MENU_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                    MyTextsWrapperEnum.Options, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnOptionsClick, menuButtonTextAlignment, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n                Controls.Add(new MyGuiControlButton(this, leftMenuPositionOrigin - 1 * MyGuiConstants.MENU_BUTTONS_POSITION_DELTA, MyGuiConstants.MAIN_MENU_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                    MyTextsWrapperEnum.Help, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnHelpClick, menuButtonTextAlignment, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n                Controls.Add(new MyGuiControlButton(this, leftMenuPositionOrigin - 0 * MyGuiConstants.MENU_BUTTONS_POSITION_DELTA, MyGuiConstants.MAIN_MENU_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                    MyTextsWrapperEnum.ExitToMainMenu, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnExitToMainMenuClick, menuButtonTextAlignment, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n\n                //  Set mouse cursor near first button so it will loke nicer and won't be in the middle of screen\n                SetMouseCursorPosition(constructor, leftMenuPositionOrigin - 3f * MyGuiConstants.MENU_BUTTONS_POSITION_DELTA + new Vector2(MyGuiConstants.MAIN_MENU_BUTTON_SIZE.X * 0.3f, 0));\n            }\n            else if (MyGuiScreenGamePlay.Static.IsEditorActive())\n            {\n                //buttons background\n                var a = MyGuiManager.GetSafeFullscreenRectangle();\n                var fullScreenSize = new Vector2(a.Width / (a.Height * (4 / 3f)), 1f);\n                Controls.Add(new MyGuiControlPanel(this, new Vector2(0.5f, 0.5f), fullScreenSize, MyGuiConstants.SCREEN_BACKGROUND_COLOR,\n                    m_MainmenuOverlay, null, null, null,\n                    MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER));\n\n                //leftMenuPositionOrigin.Y -= 0.0114f;\n                Controls.Add(new MyGuiControlButton(this, leftMenuPositionOrigin - 3 * MyGuiConstants.MENU_BUTTONS_POSITION_DELTA, MyGuiConstants.MAIN_MENU_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                    MyTextsWrapperEnum.ContinueUppercase, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnContinueClick, MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n                Controls.Add(new MyGuiControlButton(this, leftMenuPositionOrigin - 2 * MyGuiConstants.MENU_BUTTONS_POSITION_DELTA, MyGuiConstants.MAIN_MENU_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                    MyTextsWrapperEnum.Options, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnOptionsClick, menuButtonTextAlignment, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n                Controls.Add(new MyGuiControlButton(this, leftMenuPositionOrigin - 1 * MyGuiConstants.MENU_BUTTONS_POSITION_DELTA, MyGuiConstants.MAIN_MENU_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                    MyTextsWrapperEnum.Help, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnHelpClick, menuButtonTextAlignment, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n                Controls.Add(new MyGuiControlButton(this, leftMenuPositionOrigin - 0 * MyGuiConstants.MENU_BUTTONS_POSITION_DELTA, MyGuiConstants.MAIN_MENU_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                    MyTextsWrapperEnum.ExitToMainMenu, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnExitToMainMenuClick, menuButtonTextAlignment, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n\n\n                Vector2 textRightTopPosition = MyGuiManager.GetScreenTextRightTopPosition();\n                Vector2 position = textRightTopPosition + 8f * MyGuiConstants.CONTROLS_DELTA + new Vector2(-.1f, .06f);\n\n                AddProfileButton(menuButtonTextAlignment, position);\n\n                //  Set mouse cursor near first button so it will loke nicer and won't be in the middle of screen\n                SetMouseCursorPosition(constructor, leftMenuPositionOrigin - 3f * MyGuiConstants.MENU_BUTTONS_POSITION_DELTA + new Vector2(MyGuiConstants.MAIN_MENU_BUTTON_SIZE.X * 0.3f, 0));\n            }\n            else\n            {\n                throw new MyMwcExceptionApplicationShouldNotGetHere();\n            }\n        }\n\n        void cbJoinMode_OnSelect(MyGuiControlButton sender)\n        {\n            //var joinMode = (MyJoinMode)m_btnJoinMode.GetSelectedKey();\n\n            var joinMode = MyMultiplayerGameplay.Static.JoinMode == MyJoinMode.Closed ? MyJoinMode.Open : MyJoinMode.Closed;\n            MyMultiplayerGameplay.Static.JoinMode = joinMode;\n            MyMultiplayerGameplay.Static.UpdateGameInfo();\n            Canceling();\n        }\n\n        void AddProfileButton(MyGuiControlButtonTextAlignment menuButtonTextAlignment, Vector2 position)\n        {\n            //if (MySectorServiceClient.IsConnected && !(MyClientServer.LoggedPlayer != null && MyClientServer.LoggedPlayer.LoggedUsingSteam))\n            //position += new Vector2(0, -0.02f);\n\n            MyTextsWrapperEnum text = MyTextsWrapperEnum.Profile;\n            if (!MySteam.IsActive && !MyClientServer.IsMwAccount)\n            {\n                // When demo and in-game, don't show profile/login button\n                if (!(MyGuiScreenGamePlay.Static == null || MyGuiScreenGamePlay.Static.IsMainMenuActive()))\n                {\n                    return;\n                }\n\n                text = MyTextsWrapperEnum.Login;\n            }\n\n            Controls.Add(\n                new MyGuiControlButton(\n                    this,\n                    position,\n                    MyGuiConstants.BACK_BUTTON_SIZE,\n                    MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                    text,\n                    MyGuiConstants.BUTTON_TEXT_COLOR,\n                    MyGuiConstants.BUTTON_TEXT_SCALE,\n                    OnProfileClick,\n                    menuButtonTextAlignment,\n                    true,\n                    MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER,\n                    MyFakes.PROFILE_BUTTON_IMPLEMENTED));\n        }\n\n        public void SetMouseCursorPosition(bool constructor, Vector2 position)\n        {\n            //  Set mouse cursor near first button so it will loke nicer and won't be in the middle of screen\n            if (constructor == true)\n            {\n                MyGuiManager.MouseCursorPosition = position;\n            }\n        }\n\n        //  When dual-head - this will draw the menu to the left side of left monitor. That's OK.\n        //  Only in triple-head it's moved to the center monitor.\n        public static Vector2 GetMenuLeftBottomPosition()\n        {\n            float deltaPixels = 70 * MyGuiManager.GetSafeScreenScale();\n            Rectangle fullscreenRectangle = MyGuiManager.GetSafeFullscreenRectangle();\n            return MyGuiManager.GetNormalizedCoordinateFromScreenCoordinate_FULLSCREEN(new Vector2(deltaPixels, fullscreenRectangle.Height - deltaPixels));\n        }\n\n        public Vector2 GetMenuRightBottomPosition()\n        {\n            float deltaPixels = 100 * MyGuiManager.GetSafeScreenScale();\n            Rectangle fullscreenRectangle = MyGuiManager.GetSafeFullscreenRectangle();\n            return GetMenuLeftBottomPosition() + MyGuiManager.GetNormalizedCoordinateFromScreenCoordinate_FULLSCREEN(new Vector2(fullscreenRectangle.Width - deltaPixels * 2, 0));\n        }\n\n        /*public void OnPlayMissionPlaygroundClick(MyGuiControlButton sender)\n        {\n            AddLoginScreen(StartPlayground);\n        }\n\n        public static void StartPlayground()\n        {\n            AddLoginScreen(StartPlaygroundAfterLogin);\n        }\n\n        static void StartPlaygroundAfterLogin()\n        {\n            MyGuiManager.CloseAllScreensExcept(MyGuiScreenGamePlay.Static);\n            MySession.StartSandbox(MyHubShowcaseMission.BaseSector, null);\n        }*/\n\n        public void OnPlayStoryClick(MyGuiControlButton sender)\n        {\n            AddLoginScreenDrmFree(new MyGuiScreenSelectStory(this));\n        }\n\n        public void OnMultiplayerClick(MyGuiControlButton sender)\n        {\n            AddLoginScreenDrmFree(new MyGuiScreenMultiplayer(this));\n        }\n\n        public void OnEditorClick(MyGuiControlButton sender)\n        {\n            if (MyClientServer.LoggedPlayer == null || MyClientServer.LoggedPlayer.GetCanAccessEditorForStory() || MyClientServer.LoggedPlayer.GetCanAccessEditorForMMO())\n            {\n                AddLoginScreen(new MyGuiScreenSelectEditor(this));\n            }\n            else if (!MySteam.IsActive && !MyClientServer.IsMwAccount) // Demo user...generate sector 0, 0, 0. User cant save.\n            {\n                MyGuiManager.CloseAllScreensNowExcept(MyGuiScreenGamePlay.Static);\n\n                MySession.Static = new MySandboxSession();\n                MySession.Static.Init();\n\n                var sector = new MyMwcSectorIdentifier(MyMwcSectorTypeEnum.SANDBOX, MyPlayerLocal.OFFLINE_MODE_USERID, new CommonLIB.AppCode.Utils.MyMwcVector3Int(0, 0, 0), String.Empty);\n                var newGameplayScreen = new MyGuiScreenGamePlay(MyGuiScreenGamePlayType.EDITOR_SANDBOX, null, sector, 0, MyMwcStartSessionRequestTypeEnum.EDITOR_SANDBOX);\n                var loadScreen = new MyGuiScreenLoading(newGameplayScreen, MyGuiScreenGamePlay.Static);\n\n                var checkpoint = new MyMwcObjectBuilder_Checkpoint();\n                checkpoint.CurrentSector = sector;\n                checkpoint.SectorObjectBuilder = new MyMwcObjectBuilder_Sector();\n                checkpoint.SectorObjectBuilder.FromGenerator = true;\n                checkpoint.SectorObjectBuilder.Position = sector.Position;\n                checkpoint.SessionObjectBuilder = new MyMwcObjectBuilder_Session(MyGameplayDifficultyEnum.EASY);\n\n                loadScreen.AddEnterSectorResponse(checkpoint, null);\n\n                MyGuiManager.AddScreen(loadScreen);\n            }\n            else\n            {\n                MyMwcSectorTypeEnum sectorType = MyMwcClientServer.GetSectorTypeFromSessionType(MyMwcStartSessionRequestTypeEnum.EDITOR_SANDBOX);\n                AddLoginScreen(\n                    new MyGuiScreenLoadSectorIdentifiersProgress(sectorType, false, new MyGuiScreenEnterSectorMap(this, MyMwcStartSessionRequestTypeEnum.EDITOR_SANDBOX, MyTextsWrapperEnum.StartEditorInProgressPleaseWait, MyConfig.LastSandboxSector)));\n            }\n        }\n\n        public void OnRestartClick(MyGuiControlButton sender)\n        {\n            MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.MessageAreYouSureYouWantLoadCheckpoint, MyTextsWrapperEnum.LoadCheckpoint, MyTextsWrapperEnum.Ok, MyTextsWrapperEnum.No, Restart));\n        }\n\n        private void Restart(MyGuiScreenMessageBoxCallbackEnum callbackReturn)\n        {\n            if (callbackReturn == MyGuiScreenMessageBoxCallbackEnum.YES)\n            {\n                MyGuiManager.CloseAllScreensExcept(MyGuiScreenGamePlay.Static);\n                MySession.StartLastCheckpoint();\n            }\n        }\n\n        public void OnContinueClick(MyGuiControlButton sender)\n        {\n            MyGuiScreenGamePlay.Static.DrawHud = true;\n            CloseScreen();\n        }\n\n        public static void OnExitToMainMenuClick(MyGuiControlButton sender)\n        {\n            MyGuiManager.GetMainMenuScreen().m_screenCanHide = false;\n            var messageBox = new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.AreYouSureYouWantToExit, MyTextsWrapperEnum.MessageBoxExitQuestion, MyTextsWrapperEnum.Yes, MyTextsWrapperEnum.No, OnExitToMainMenuMessageBoxCallback);\n            messageBox.SkipTransition = true;\n            messageBox.InstantClose = false;\n            MyGuiManager.AddScreen(messageBox);\n        }\n\n        public static void OnExitToMainMenuMessageBoxCallback(MyGuiScreenMessageBoxCallbackEnum callbackReturn)\n        {\n            if (callbackReturn == MyGuiScreenMessageBoxCallbackEnum.YES)\n            {\n                // No mission active...ask whether save or not\n                if (MySession.Static != null && MyMissions.ActiveMission == null && MyGuiScreenGamePlay.Static.IsGameStoryActive() && MyClientServer.LoggedPlayer.GetCanSave())\n                {\n                    var messageBox = new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.SaveCurrentProgress, MyTextsWrapperEnum.SaveCurrentProgressCaption, MyTextsWrapperEnum.Yes, MyTextsWrapperEnum.No, OnSaveGameResponse);\n                    messageBox.SkipTransition = true;\n                    messageBox.InstantClose = false;\n                    MyGuiManager.AddScreen(messageBox);\n                }\n                else\n                {\n                    UnloadAndExitToMenu();\n                }\n            }\n            else\n            {\n                MyGuiManager.GetMainMenuScreen().m_screenCanHide = true;\n            }\n        }\n\n        private static void OnSaveGameResponse(MyGuiScreenMessageBoxCallbackEnum result)\n        {\n            if (result == MyGuiScreenMessageBoxCallbackEnum.YES)\n            {\n                MySession.Static.SaveLastCheckpoint();\n            }\n            UnloadAndExitToMenu();\n        }\n\n        public static void UnloadAndExitToMenu()\n        {\n            //  Leave current sector\n            if (MyGuiScreenGamePlay.Static.IsGameActive())\n            {\n                //MyClientServer.SendMessageLeaveSectorRequest(MyMwcLeaveSectorReasonEnum.EXIT_TO_MAIN_MENU, null);\n                //TODO - until I find how to make interactive music to stop in game when exit smoothly, I put this here\n                //MyGuiScreenGamePlay.Static.StopMusic();\n                MyMissions.Unload();\n                //MyAudio.StopMusic();\n                MyAudio.Stop();\n            }\n\n            //  If credits screen is open we must close it immediately so it won't make mess on screen during loading - the transition will look better\n            if (MyGuiScreenGamePlay.Static.GetGameType() == MyGuiScreenGamePlayType.CREDITS) MyGuiManager.CloseScreenNow(typeof(MyGuiScreenGameCredits));\n\n            //  This will quit actual game-play screen and move us to fly-through with main menu on top\n            MyGuiManager.BackToMainMenu();\n\n            //  We must close this screen immediately so it won't make mess on screen during loading - the transition will look better\n            MyGuiManager.CloseScreen(typeof(MyGuiScreenMainMenu));\n        }\n\n        public void OnFlyThroughAnimationClick(MyGuiControlButton sender)\n        {\n            //opens dialog screen with list of trailers, where could be selected animation to play\n            //MyGuiManager.AddScreen(new MyGuiScreenFlyThrough());\n            MyGuiManager.AddScreen(new MyGuiScreenGameCredits());\n        }\n\n        public void OnProfileClick(MyGuiControlButton sender)\n        {\n            if (!MySteam.IsActive && !MyClientServer.IsMwAccount)\n            {\n                AddLoginScreen(new MyGuiScreenProfile());\n            }\n            else\n            {\n                AddLoginScreenDrmFree(new MyGuiScreenProfile());\n            }\n        }\n\n        public void OnOptionsClick(MyGuiControlButton sender)\n        {\n            MyGuiManager.AddScreen(new MyGuiScreenOptions(m_showVideoOptions));\n        }\n\n        public void OnHelpClick(MyGuiControlButton sender)\n        {\n            MyGuiManager.AddScreen(new MyGuiScreenHelp());\n        }\n\n        public void OnCreditsClick(MyGuiControlButton sender)\n        {\n            MyGuiManager.AddScreen(new MyGuiScreenLoading(new MyGuiScreenGamePlay(MyGuiScreenGamePlayType.CREDITS, null,\n                MyTrailerConstants.DEFAULT_SECTOR_IDENTIFIER, MyTrailerConstants.DEFAULT_SECTOR_VERSION, null), MyGuiScreenGamePlay.Static));\n\n            //  We must close this screen immediately so it won't make fun on monitor during loading - the transition will look better\n            CloseScreenNow();\n        }\n\n        public void OnFakeScreenClick(MyGuiControlButton sender)\n        {\n            MyGuiManager.AddScreen(new MyGuiScreenFake());\n        }\n\n        public void OnExitToWindowsClick(MyGuiControlButton sender)\n        {\n            MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.AreYouSureYouWantToExit, MyTextsWrapperEnum.MessageBoxExitQuestion, MyTextsWrapperEnum.Yes, MyTextsWrapperEnum.No, OnExitToWindowsMessageBoxCallback));\n        }\n\n        public void OnExitToWindowsMessageBoxCallback(MyGuiScreenMessageBoxCallbackEnum callbackReturn)\n        {\n            if (callbackReturn == MyGuiScreenMessageBoxCallbackEnum.YES)\n            {\n                MyGuiManager.AddScreen(new MyGuiScreenLogoutProgress(OnLogoutProgressClosed));\n            }\n        }\n\n        public void OnLogoutProgressClosed()\n        {\n            MyMwcLog.WriteLine(\"Application closed by user\");\n            //  Exit application\n            MyMinerGame.Static.Invoke(() => { MyMinerGame.Static.Exit(); }, false);\n        }\n\n        public override void LoadContent()\n        {\n            m_timeFromMenuLoadedMS = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n            base.LoadContent();\n\n            if (MyGuiScreenGamePlay.Static == null)\n            {\n                m_MainmenuOverlay = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\BackgroundScreen\\\\MainMenuOverlay\", flags: TextureFlags.IgnoreQuality);\n            }\n            else if (MyGuiScreenGamePlay.Static.IsMainMenuActive())\n            {\n            }\n            else if (MyGuiScreenGamePlay.Static.IsGameActive())\n            {\n                m_MainmenuOverlay = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\BackgroundScreen\\\\MainMenuOverlay\", flags: TextureFlags.IgnoreQuality);\n            }\n            else if (MyGuiScreenGamePlay.Static.IsFlyThroughActive())\n            {\n\n            }\n            else if (MyGuiScreenGamePlay.Static.IsEditorActive())\n            {\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"load MainMenuOverlay\");\n                m_MainmenuOverlay = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\BackgroundScreen\\\\MainMenuOverlay\", flags: TextureFlags.IgnoreQuality);\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"load logo and banners\");\n            m_minerWarsLogoTexture = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\MinerWarsLogoLarge\", loadingMode: Managers.LoadingMode.Immediate, flags: TextureFlags.IgnoreQuality);\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            RecreateControls(true);\n        }\n\n        private void PlayMusic()\n        {\n            if (MyAudio.GetMusicState() == MyMusicState.Stopped &&\n                    MyAudio.GetMusicCue() == null &&\n                    !MyAudio.HasAnyTransition())\n            {\n                MyAudio.ApplyTransition(MyMusicTransitionEnum.MainMenu);\n                //MyAudio.AddCue2D(MySoundCuesEnum.MenuWelcome);\n            }\n        }\n\n        public override void UnloadContent()\n        {\n            MyClientServer.OnLoggedPlayerChanged -= MyClientServer_OnLoggedPlayerChanged;\n\n            base.UnloadContent();\n            if (m_MainmenuOverlay != null && m_MainmenuOverlay.LoadState == Managers.LoadState.Loaded)\n            {\n                MyTextureManager.UnloadTexture(m_MainmenuOverlay);\n                m_MainmenuOverlay = null;\n            }\n        }\n\n        private void OpenInternetBrowser(string url, MyTextsWrapperEnum messageFailed)\n        {\n            try\n            {\n                try\n                {\n                    System.Diagnostics.Process.Start(url);\n                }\n                // System.ComponentModel.Win32Exception is a known exception that occurs when Firefox is default browser.  \n                // It actually opens the browser but STILL throws this exception so we can just ignore it.  If not this exception,\n                // then attempt to open the URL in IE instead.\n                catch (System.ComponentModel.Win32Exception)\n                {\n                    // sometimes throws exception so we have to just ignore\n                    // this is a common .NET bug that no one online really has a great reason for so now we just need to try to open\n                    // the URL using IE if we can.\n                    System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo(MyMainMenuConstants.IE_PROCESS, MyMainMenuConstants.BUY_NOW_URL);\n                    System.Diagnostics.Process.Start(startInfo);\n                    startInfo = null;\n                }\n            }\n            catch (Exception)\n            {\n                // oper browser failed\n                StringBuilder sbMessage = new StringBuilder();\n                sbMessage.AppendFormat(MyTextsWrapper.GetFormatString(messageFailed), url);\n                StringBuilder sbTitle = MyTextsWrapper.Get(MyTextsWrapperEnum.TitleFailedToStartInternetBrowser);\n                MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, sbMessage, sbTitle, MyTextsWrapperEnum.Ok, null));\n            }\n        }\n\n        protected override void Canceling()\n        {\n            if (MyGuiScreenGamePlay.Static != null && (MyGuiScreenGamePlay.Static.IsGameActive() || MyGuiScreenGamePlay.Static.IsEditorActive()))\n            {\n                MyGuiScreenGamePlay.Static.DrawHud = true;\n                base.Canceling();\n            }\n        }\n\n        public override void HandleInput(MyGuiInput input, bool receivedFocusInThisUpdate)\n        {\n            base.HandleInput(input, receivedFocusInThisUpdate);\n\n            if (MyGuiScreenGamePlay.Static == null || MyGuiScreenGamePlay.Static.GetGameType() == MyGuiScreenGamePlayType.MAIN_MENU)\n            {\n                if (input.IsNewKeyPress(Keys.Escape))\n                {\n                    MyAudio.AddCue2D(MySoundCuesEnum.GuiMouseClick);\n                    OnExitToWindowsClick(null);\n                }\n            }\n\n            //if (input.IsNewKeyPress(Keys.Enter))\n            //{\n            //    MyGuiManager.AddScreen(new MyGuiScreenLoading(Vector2.Zero, null, null, null, new MyGuiScreenGamePlay(Vector2.Zero, null, null, null, false), MyGuiScreenGamePlay.Static));\n            //    CloseScreen();\n            //}\n\n            //if (input.IsNewKeyPress(Keys.Escape))\n            //{\n            //    CloseScreen();\n            //}\n\n            //if (input.IsNewKeyPress(MinerWarsMath.Input.Keys.P))\n            //{\n            //    MyMinerGame.Static.UnloadContent();\n            //}\n        }\n\n        void DrawLoggedPlayerName()\n        {\n            Vector2 textRightTopPosition = MyGuiManager.GetScreenTextRightTopPosition();\n            Vector2 position = textRightTopPosition + 8f * MyGuiConstants.CONTROLS_DELTA;\n            position.X -= 0.03f;\n\n            if (MyClientServer.LoggedPlayer == null)\n            {\n                //  Draw \"You are not logged in.\"\n                MyGuiManager.DrawString(MyGuiManager.GetFontMinerWarsBlue(), MyTextsWrapper.Get(MyTextsWrapperEnum.NotLoggedIn), position, MyGuiConstants.LOGED_PLAYER_NAME_TEXT_SCALE,\n                    new Color(MyGuiConstants.LABEL_TEXT_COLOR * m_transitionAlpha), MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_BOTTOM);\n            }\n            else\n            {\n                //  Draw player's name - from right side\n                MyRectangle2D rect = MyGuiManager.DrawString(MyGuiManager.GetFontMinerWarsBlue(), MyClientServer.LoggedPlayer.GetDisplayName(), position, MyGuiConstants.LOGED_PLAYER_NAME_TEXT_SCALE,\n                    Color.White * m_transitionAlpha, MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_BOTTOM);\n\n                m_playerNameString.Clear();\n\n                if (!MySectorServiceClient.IsInstanceValid)\n                {\n                    m_playerNameString.Append(\"[\");\n                    m_playerNameString.AppendStringBuilder(MyTextsWrapper.Get(MyTextsWrapperEnum.Disconnected));\n                    m_playerNameString.Append(\"]\");\n                }\n                if (MyClientServer.LoggedPlayer != null && MyClientServer.LoggedPlayer.LoggedUsingSteam)\n                {\n                    m_playerNameString.Append(\"[Steam]\");\n                }\n\n                if (m_playerNameString.Length > 0)\n                {\n                    MyGuiManager.DrawString(MyGuiManager.GetFontMinerWarsBlue(), m_playerNameString, position, MyGuiConstants.LOGED_PLAYER_NAME_TEXT_SCALE,\n                    Color.White * m_transitionAlpha, MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_TOP);\n                }\n\n                //  Draw constant string \"Logged Player\"\n                MyGuiManager.DrawString(MyGuiManager.GetFontMinerWarsBlue(), MyTextsWrapper.Get(MyTextsWrapperEnum.LoggedPlayer), rect.LeftTop + new Vector2(-0.0075f, rect.Size.Y - 0.001f), MyGuiConstants.LOGED_PLAYER_NAME_TEXT_SCALE /** 0.8f*/,\n                    new Color(MyGuiConstants.LABEL_TEXT_COLOR * m_transitionAlpha), MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_BOTTOM);\n            }\n        }\n\n        public override bool CloseScreen()\n        {\n            bool ret = base.CloseScreen();\n\n            if (ret == true)\n            {\n                if (MyGuiScreenGamePlay.Static != null && MyGuiScreenGamePlay.Static.IsPausable() && MyMinerGame.IsPaused())\n                    MyMinerGame.SwitchPause();\n            }\n            return ret;\n        }\n\n        public override bool Draw(float backgroundFadeAlpha)\n        {\n            if (MyMinerGame.IsPaused() && m_closeOnEsc)\n            {\n                DrawBlackSemiTransparentBackground();\n            }\n            if (base.Draw(backgroundFadeAlpha) == false) return false;\n\n            DrawMinerWarsLogo();\n            //DrawActorsPhotos();\n            DrawLoggedPlayerName();\n            DrawAppVersion();\n            DrawGlobalVersionText();\n\n            MyGuiScreenBase screenWithFocus = MyGuiManager.GetScreenWithFocus();\n\n            return true;\n        }\n\n        private void DrawBlackSemiTransparentBackground()\n        {\n            MyGuiManager.DrawSpriteBatch(MyGuiManager.GetBlankTexture(), new Rectangle(0, 0, MyMinerGame.ScreenSize.X, MyMinerGame.ScreenSize.Y), new Color(0, 0, 0, 120));\n        }\n\n        bool IsPurchaseBannerEnabled()\n        {\n            MyGuiScreenBase screenWithFocus = MyGuiManager.GetScreenWithFocus();\n            return MyClientServer.LoggedPlayer == null || MyClientServer.LoggedPlayer.GetCanSave() == false && MyGuiManager.IsScreenOfTypeOpen(typeof(MyGuiScreenProgressBase)) == false;\n\n        }\n\n        public override bool Update(bool hasFocus)\n        {\n            if (base.Update(hasFocus) == false) return false;\n\n            //MyMinerGame.GraphicsDeviceManager.DbgDumpLoadedResources(true);\n            //MyTextureManager.DbgDumpLoadedTextures(true);\n\n            if (!m_musicPlayed && MyMinerGame.TotalGamePlayTimeInMilliseconds - m_timeFromMenuLoadedMS >= PLAY_MUSIC_AFTER_MENU_LOADED_MS)\n            {\n                if (MyGuiScreenGamePlay.Static == null || MyGuiScreenGamePlay.Static.IsMainMenuActive())\n                {\n                    PlayMusic();\n                }\n                m_musicPlayed = true;\n            }\n\n            return true;\n        }\n\n        public static void StartMission(MyMissionID missionId)\n        {\n            MyGuiManager.CloseAllScreensExcept(MyGuiScreenGamePlay.Static);\n\n            var mission = MyMissions.GetMissionByID(missionId);\n\n            Action loadedHandler = () =>\n            {\n                MyMissions.ActiveMission = null;\n                MySession.Static.EventLog.Events.Clear();\n\n                // Make prereq missions completed\n                foreach (var prereq in mission.RequiredMissions)\n                {\n                    MySession.Static.EventLog.AddMissionStarted(prereq);\n                    MySession.Static.EventLog.MissionFinished(prereq);\n                }\n            };\n\n            var action = MySession.StartNewGame(MyFakes.DIFFICULTY_FOR_F12_MISSIONS, missionId);\n            if (action != null)\n            {\n                action.ActionSuccess += loadedHandler;\n            }\n            else\n            {\n                loadedHandler();\n            }\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/MyGuiScreenMessageBox.cs",
    "content": "﻿using System;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWarsMath.Graphics;\nusing SysUtils.Utils;\nusing MinerWars.AppCode.Game.Textures;\n\nnamespace MinerWars.AppCode.Game.GUI\n{\n    enum MyGuiScreenMessageBoxCallbackEnum\n    {\n        YES,        //  YES or OK\n        NO          //  NO or CANCEL or ESC\n    }\n\n    enum MyMessageBoxType \n    {\n        MESSAGE,        \n        ERROR,\n        NULL\n    }\n\n    //  Type of message box, that means what buttons do we display (only OK, YES and NO, or something else)\n    enum MyMessageBoxButtonsType\n    {\n        NONE,                   //  No buttons\n        OK,                     //  Just OK button\n        YES_NO,                 //  YES and NO buttons\n        YES_NO_TIMEOUT,         //  YES and NO buttons; And Timeout so if no pressed YES in selected time, message box ends as if NO was pressed        \n    }\n\n    class MyGuiScreenMessageBox : MyGuiScreenBase\n    {\n        class MyMessageBoxConfiguration \n        {\n            public MyTexture2D Texture { get; set; }\n            public Vector4 TextColor { get; set; }\n            public Vector4 BackgroundColor { get; set; }\n            public Vector4 ButtonColor { get; set; }\n            public Vector4 RotatingWheelColor { get; set; }\n            public Vector4 InterferenceVideoColor { get; set; }\n            public MyGuiFont Font { get; set; }\n            public MyTexture2D ButtonTexture { get; set; }\n\n            public MyMessageBoxConfiguration(MyTexture2D texture, Vector4 textColor, Vector4 backgroundColor, Vector4 buttonColor, Vector4 rotatingWheelColor, Vector4 interferenceVideoColor, MyGuiFont font, MyTexture2D buttonTexture ) \n            {\n                Texture = texture;\n                TextColor = textColor;\n                BackgroundColor = backgroundColor;\n                ButtonColor = buttonColor;\n                RotatingWheelColor = rotatingWheelColor;\n                InterferenceVideoColor = interferenceVideoColor;\n                Font = font;\n                ButtonTexture = buttonTexture;\n            }\n        }\n\n        static readonly MyMessageBoxConfiguration[] m_typesConfiguration;\n\n        static MyGuiScreenMessageBox() \n        {\n            m_typesConfiguration = new MyMessageBoxConfiguration[MyMwcUtils.GetMaxValueFromEnum<MyMessageBoxType>() + 1];\n            m_typesConfiguration[(int)MyMessageBoxType.MESSAGE] = new MyMessageBoxConfiguration(\n                MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\MessageBackground_blue\", flags: TextureFlags.IgnoreQuality),\n                MyGuiConstants.MESSAGE_BOX_MESSAGE_TEXT_COLOR,\n                MyGuiConstants.MESSAGE_BOX_MESSAGE_BACKGROUND_COLOR,\n                MyGuiConstants.MESSAGE_BOX_MESSAGE_BUTTON_BACKGROUND_COLOR,\n                MyGuiConstants.MESSAGE_BOX_MESSAGE_ROTATING_WHEEL_COLOR,\n                MyGuiConstants.MESSAGE_BOX_MESSAGE_BACKGROUND_INTERFERENCE_VIDEO_COLOR,\n                MyGuiManager.GetFontMinerWarsBlue(),\n                MyGuiManager.GetConfirmButton());\n            m_typesConfiguration[(int)MyMessageBoxType.ERROR] = new MyMessageBoxConfiguration(\n                MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\MessageBackground_red\", flags: TextureFlags.IgnoreQuality),\n                MyGuiConstants.MESSAGE_BOX_ERROR_TEXT_COLOR,\n                MyGuiConstants.MESSAGE_BOX_ERROR_BACKGROUND_COLOR,\n                MyGuiConstants.MESSAGE_BOX_ERROR_BUTTON_BACKGROUND_COLOR,\n                MyGuiConstants.MESSAGE_BOX_ERROR_ROTATING_WHEEL_COLOR,\n                MyGuiConstants.MESSAGE_BOX_ERROR_BACKGROUND_INTERFERENCE_VIDEO_COLOR,\n                MyGuiManager.GetFontMinerWarsWhite(),\n                MyGuiManager.GetMessageBoxButton());\n            m_typesConfiguration[(int)MyMessageBoxType.NULL] = new MyMessageBoxConfiguration(\n                MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\MessageBackground_blue\", flags: TextureFlags.IgnoreQuality),\n                MyGuiConstants.MESSAGE_BOX_NULL_TEXT_COLOR,\n                MyGuiConstants.MESSAGE_BOX_NULL_BACKGROUND_COLOR,\n                MyGuiConstants.MESSAGE_BOX_NULL_BUTTON_BACKGROUND_COLOR,\n                MyGuiConstants.MESSAGE_BOX_NULL_ROTATING_WHEEL_COLOR,\n                MyGuiConstants.MESSAGE_BOX_NULL_BACKGROUND_INTERFERENCE_VIDEO_COLOR,\n                MyGuiManager.GetFontMinerWarsBlue(),\n                MyGuiManager.GetConfirmButton());\n\n        }\n\n        public delegate void MessageBoxCallback(MyGuiScreenMessageBoxCallbackEnum callbackReturn);\n        public bool CloseBeforeCallback { get; set; }\n        public bool InstantClose { get; set; }\n\n        MyTextsWrapperEnum? m_yesButtonText;\n        MyTextsWrapperEnum? m_noButtonText;\n        MyTextsWrapperEnum? m_okButtonText;\n        MessageBoxCallback m_callback;\n        MyMessageBoxButtonsType m_buttonType;\n        MyMessageBoxType m_type;\n        int m_timeoutInMiliseconds;\n        int m_timeoutStartedTimeInMiliseconds;\n        MyGuiControlLabel m_messageBoxText;\n        MyGuiControlCheckbox m_showAgainCheckBox;\n\n        Vector2 m_buttonSize;\n        Vector4 m_textColor;\n        protected Vector4 m_interferenceVideoColor;\n\n        //  Constructor for no buttons message boxes\n        public MyGuiScreenMessageBox(MyMessageBoxType type, MyTextsWrapperEnum messageText, MyTextsWrapperEnum messageCaption, MessageBoxCallback callback) :\n            this(type, MyMessageBoxButtonsType.NONE, MyTextsWrapper.Get(messageText), MyTextsWrapper.Get(messageCaption), null, null, null, callback, false, MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE)\n        {\n        }\n\n        //  Constructor for OK message boxes\n        public MyGuiScreenMessageBox(MyMessageBoxType type, MyTextsWrapperEnum messageText, MyTextsWrapperEnum messageCaption, MyTextsWrapperEnum? okButtonText, MessageBoxCallback callback) :\n            this(type, MyMessageBoxButtonsType.OK, MyTextsWrapper.Get(messageText), MyTextsWrapper.Get(messageCaption), okButtonText, null, null, callback, false)\n        {\n        }\n\n        //  Constructor for OK message boxes - and text and caption defined by StringBuilder instead of enum\n        public MyGuiScreenMessageBox(MyMessageBoxType type, StringBuilder messageText, StringBuilder messageCaption, MyTextsWrapperEnum? okButtonText, MessageBoxCallback callback) :\n            this(type, MyMessageBoxButtonsType.OK, messageText, messageCaption, okButtonText, null, null, callback, false)\n        {\n        }\n\n        //  Constructor for YES/NO message boxes\n        public MyGuiScreenMessageBox(MyMessageBoxType type, MyTextsWrapperEnum messageText, MyTextsWrapperEnum messageCaption, MyTextsWrapperEnum? yesButtonText, MyTextsWrapperEnum? noButtonText, MessageBoxCallback callback) :\n            this(type, MyMessageBoxButtonsType.YES_NO, MyTextsWrapper.Get(messageText), MyTextsWrapper.Get(messageCaption), null, yesButtonText, noButtonText, callback, false)\n        {\n        }\n\n        //  Constructor for YES/NO message boxes - and text and caption defined by StringBuilder instead of enum\n        public MyGuiScreenMessageBox(MyMessageBoxType type, StringBuilder messageText, StringBuilder messageCaption, MyTextsWrapperEnum? yesButtonText, MyTextsWrapperEnum? noButtonText, MessageBoxCallback callback) :\n            this(type, MyMessageBoxButtonsType.YES_NO, messageText, messageCaption, null, yesButtonText, noButtonText, callback, false)\n        {\n        }\n\n        //  Constructor for YES/NO message boxes and checkBox\n        public MyGuiScreenMessageBox(MyMessageBoxType type, MyTextsWrapperEnum messageText, MyTextsWrapperEnum messageCaption, MyTextsWrapperEnum checkBoxMessage, MyTextsWrapperEnum? okButtonText, MyTextsWrapperEnum? yesButtonText, MyTextsWrapperEnum? noButtonText, MessageBoxCallback callback, out MyGuiControlCheckbox showAgainCheckBox) :\n            this(type, MyMessageBoxButtonsType.YES_NO, MyTextsWrapper.Get(messageText), MyTextsWrapper.Get(messageCaption), null, yesButtonText, noButtonText, callback, true)\n        {\n            showAgainCheckBox = m_showAgainCheckBox;\n        }\n\n        //  Constructor for YES/NO message boxes and TIMEOUT\n        public MyGuiScreenMessageBox(MyMessageBoxType type, MyTextsWrapperEnum messageText, MyTextsWrapperEnum messageCaption, MyTextsWrapperEnum? yesButtonText, MyTextsWrapperEnum? noButtonText, MessageBoxCallback callback, int timeoutInMiliseconds) :\n            this(type, MyMessageBoxButtonsType.YES_NO_TIMEOUT, MyTextsWrapper.Get(messageText), MyTextsWrapper.Get(messageCaption), null, yesButtonText, noButtonText, callback, false)\n        {\n            m_timeoutStartedTimeInMiliseconds = MyMinerGame.TotalTimeInMilliseconds;\n            m_timeoutInMiliseconds = timeoutInMiliseconds;\n        }\n\n        private MyGuiScreenMessageBox(MyMessageBoxType type, MyMessageBoxButtonsType buttonType, StringBuilder messageText, StringBuilder messageCaption, MyTextsWrapperEnum? okButtonText, MyTextsWrapperEnum? yesButtonText, MyTextsWrapperEnum? noButtonText, MessageBoxCallback callback, bool enableCheckBox)\n            : this(type, buttonType, messageText, messageCaption, okButtonText, yesButtonText, noButtonText, callback, enableCheckBox, MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE)\n        {\n        }\n\n        public MyGuiScreenMessageBox(MyMessageBoxType type, MyMessageBoxButtonsType buttonType, StringBuilder messageText, StringBuilder messageCaption, MyTextsWrapperEnum? okButtonText, MyTextsWrapperEnum? yesButtonText, MyTextsWrapperEnum? noButtonText, MessageBoxCallback callback, bool enableCheckBox, Vector2 buttonSize)            \n            : base(new Vector2(0.5f, 0.5f), null, null, true, null)\n        {\n            InstantClose = true;\n\n            MyMessageBoxConfiguration config = m_typesConfiguration[(int)type];\n            m_backgroundColor = config.BackgroundColor;\n            m_backgroundTexture = config.Texture;\n            m_textColor = config.TextColor;\n            m_interferenceVideoColor = config.InterferenceVideoColor;\n\n            m_enableBackgroundFade = true;\n\n            m_buttonType = buttonType;\n            m_okButtonText = okButtonText;\n            m_yesButtonText = yesButtonText;\n            m_noButtonText = noButtonText;\n            m_callback = callback;            \n            m_drawEvenWithoutFocus = true;\n            m_screenCanHide = false;\n            m_buttonSize = buttonSize;                    \n\n            //  Recalculate heigh of message box screen, so it will auto-adapt to message size and maybe make split it on more lines\n            Vector2 textSize = MyGuiManager.GetNormalizedSize(config.Font, messageText, MyGuiConstants.MESSAGE_BOX_TEXT_SCALE);\n            Vector2 captionSize = MyGuiManager.GetNormalizedSize(config.Font, messageCaption, MyGuiConstants.MESSAGE_BOX_TEXT_SCALE);\n            m_size = new Vector2(Math.Max(2f * m_buttonSize.X + 0.1f, textSize.X) + MyGuiConstants.MESSAGE_BOX_BORDER_AREA_X, \n                                3 * MyGuiConstants.MESSAGE_BOX_BORDER_AREA_Y + captionSize.Y + textSize.Y + MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE.Y)+ new Vector2();\n\n            //if (type == MyMessageBoxType.MESSAGE) m_size = m_size + new Vector2(0.1f, 0.1f);\n            //m_size. =m_size.Value.Y * 1.1f;\n            if (enableCheckBox)\n            {\n                m_size = new Vector2(m_size.Value.X, m_size.Value.Y + 0.05f);\n            }\n\n            //  Message box caption\n            MyGuiControlLabel captionLabel = new MyGuiControlLabel(this, new Vector2(0, -m_size.Value.Y / 2.0f + captionSize.Y / 2.0f + MyGuiConstants.MESSAGE_BOX_BORDER_AREA_Y),\n                null, messageCaption, m_textColor, MyGuiConstants.MESSAGE_BOX_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER,config.Font);\n            Controls.Add(captionLabel);\n\n            //  Message box text\n            m_messageBoxText = new MyGuiControlLabel(this, new Vector2(0f, captionLabel.GetPosition().Y + textSize.Y / 2.0f + 1.0f * MyGuiConstants.MESSAGE_BOX_BORDER_AREA_Y), null, messageText,\n                m_textColor, MyGuiConstants.MESSAGE_BOX_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, config.Font);\n            Controls.Add(m_messageBoxText);\n\n            float deltaY = 0;\n\n            if (enableCheckBox)\n            {\n                const float CHECKBOX_DELTA_Y = 0.01f;\n\n                // CheckBox to not show again this message box\n                m_showAgainCheckBox = new MyGuiControlCheckbox(this, new Vector2(-0.02f,\n                    m_messageBoxText.GetPosition().Y + CHECKBOX_DELTA_Y + textSize.Y / 2.0f + 2 * MyGuiConstants.MESSAGE_BOX_BORDER_AREA_Y),\n                    true, config.ButtonColor);\n                Controls.Add(m_showAgainCheckBox);\n                Controls.Add(new MyGuiControlLabel(this, new Vector2(0f, m_messageBoxText.GetPosition().Y + CHECKBOX_DELTA_Y + textSize.Y / 2.0f +\n                    2 * MyGuiConstants.MESSAGE_BOX_BORDER_AREA_Y) + 0 * MyGuiConstants.CONTROLS_DELTA, null,\n                    MyTextsWrapper.Get(MyTextsWrapperEnum.DecreaseVideoSettingsCheckBox), m_textColor,\n                    MyGuiConstants.LABEL_TEXT_SCALE * 0.75f, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER, config.Font));\n            }\n\n            //  Buttons\n            Vector2 buttonDelta = new Vector2(0.05f, m_size.Value.Y / 2.0f - MyGuiConstants.MESSAGE_BOX_BORDER_AREA_Y - m_buttonSize.Y / 2.0f);\n            if (m_buttonType == MyMessageBoxButtonsType.OK)\n            {\n\n                    //Controls.Add(new MyGuiControlButton(this, new Vector2(0, deltaY + buttonDelta.Y), m_buttonSize, config.ButtonColor,\n                    //null,null,null,\n                    //m_okButtonText.Value, m_textColor, MyGuiConstants.BUTTON_TEXT_SCALE, MyGuiControlButtonTextAlignment.CENTERED, OnYesClick,\n                    //true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true, true));\n\n                var okButton = new MyGuiControlButton(this, new Vector2(0, deltaY + buttonDelta.Y), MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE_SMALL,\n                    config.ButtonColor,\n                    config.ButtonTexture, null, null, m_okButtonText.Value,\n                    m_textColor, MyGuiConstants.BUTTON_TEXT_SCALE, MyGuiControlButtonTextAlignment.CENTERED, OnYesClick,\n                    true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true, true);\n                Controls.Add(okButton);\n\n\n            }\n            else if ((m_buttonType == MyMessageBoxButtonsType.YES_NO) || (m_buttonType == MyMessageBoxButtonsType.YES_NO_TIMEOUT))\n            {\n\n                var okButton = new MyGuiControlButton(this, new Vector2(-(buttonDelta.X + m_buttonSize.X / 2f), deltaY + buttonDelta.Y), MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE_SMALL,\n                        config.ButtonColor,\n                        config.ButtonTexture, null, null, m_yesButtonText.Value,\n                        m_textColor, MyGuiConstants.BUTTON_TEXT_SCALE, MyGuiControlButtonTextAlignment.CENTERED, OnYesClick,\n                        true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true, true);\n                Controls.Add(okButton);\n\n                var noButton = new MyGuiControlButton(this, new Vector2(+buttonDelta.X + m_buttonSize.X / 2f, deltaY + buttonDelta.Y), MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE_SMALL,\n                    config.ButtonColor,\n                    config.ButtonTexture, null, null, m_noButtonText.Value,\n                    m_textColor, MyGuiConstants.BUTTON_TEXT_SCALE, MyGuiControlButtonTextAlignment.CENTERED, OnNoClick,\n                    true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true, true);\n                Controls.Add(noButton);\n\n\n                //Controls.Add(new MyGuiControlButton(this, new Vector2(-(buttonDelta.X + m_buttonSize.X / 2f), deltaY + buttonDelta.Y), m_buttonSize, config.ButtonColor,\n                //    null,null,null,\n                //    m_yesButtonText.Value, m_textColor, MyGuiConstants.BUTTON_TEXT_SCALE, MyGuiControlButtonTextAlignment.CENTERED, OnYesClick, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true, true));\n\n                //Controls.Add(new MyGuiControlButton(this, new Vector2(+buttonDelta.X + m_buttonSize.X / 2f, deltaY + buttonDelta.Y), m_buttonSize, config.ButtonColor,\n                //    null,null,null,\n                //    m_noButtonText.Value, m_textColor, MyGuiConstants.BUTTON_TEXT_SCALE, MyGuiControlButtonTextAlignment.CENTERED, OnNoClick, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true, true));\n            }\n            else if (m_buttonType == MyMessageBoxButtonsType.NONE)\n            {\n            }\n            else\n            {\n                throw new MyMwcExceptionApplicationShouldNotGetHere();\n            }\n        }                \n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenMessageBox\";\n        }\n\n        public void OnYesClick(MyGuiControlButton sender)\n        {\n            OnClick(MyGuiScreenMessageBoxCallbackEnum.YES);\n        }\n        \n        public void OnNoClick(MyGuiControlButton sender)\n        {\n            OnClick(MyGuiScreenMessageBoxCallbackEnum.NO);\n        }\n\n        private void OnClick(MyGuiScreenMessageBoxCallbackEnum result)\n        {\n            if (CloseBeforeCallback)\n            {\n                CloseInternal();\n                Callback(result);\n            }\n            else\n            {\n                Callback(result);\n                CloseInternal();\n            }\n        }\n\n        private void CloseInternal()\n        {\n            if (InstantClose)\n                CloseScreenNow();\n            else\n                CloseScreen();\n        }\n\n        private void CallbackYes()\n        {\n            if (m_callback != null) m_callback(MyGuiScreenMessageBoxCallbackEnum.YES);\n        }\n\n        void Callback(MyGuiScreenMessageBoxCallbackEnum val)\n        {\n            if (m_callback != null) m_callback(val);\n        }\n\n        public override bool Update(bool hasFocus)\n        {\n            if (base.Update(hasFocus) == false) return false;\n\n            if (m_buttonType == MyMessageBoxButtonsType.YES_NO_TIMEOUT)\n            {\n                //  If timeout passed out, we need to call NO callback\n                int deltaTime = MyMinerGame.TotalTimeInMilliseconds - m_timeoutStartedTimeInMiliseconds;\n                if (deltaTime >= m_timeoutInMiliseconds)\n                {\n                    OnNoClick(null);\n                }\n\n                //  Update timeout number in message box label\n                int timer = (int)MathHelper.Clamp((m_timeoutInMiliseconds - deltaTime) / 1000, 0, m_timeoutInMiliseconds / 1000);\n                m_messageBoxText.UpdateParams(new string[] { timer.ToString() });\n            }\n\n            return true;\n        }\n\n        public override bool CloseScreen()\n        {\n            bool ret = base.CloseScreen();\n            return ret;\n        }\n\n        protected override void Canceling()\n        {\n            base.Canceling();\n            Callback(MyGuiScreenMessageBoxCallbackEnum.NO);\n        }\n\n        public static void Show(\n            MyTextsWrapperEnum text,\n            MyTextsWrapperEnum caption = MyTextsWrapperEnum.Blank,\n            MyMessageBoxType type = MyMessageBoxType.MESSAGE)\n        {\n            MyGuiManager.AddScreen(\n                new MyGuiScreenMessageBox(\n                    type,\n                    text,\n                    caption,\n                    MyTextsWrapperEnum.Ok,\n                    null));\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/MyGuiScreenMission.cs",
    "content": "﻿using System.Diagnostics;\nusing System.Text;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Missions;\nusing MinerWars.AppCode.Game.Localization;\n\nnamespace MinerWars.AppCode.Game.GUI\n{\n    class MyGuiScreenMission : MyGuiScreenBase\n    {\n        private MyMission m_mission;\n\n        public MyGuiScreenMission(MyMission missionBase, bool canDecline = true)\n            : base(new Vector2(0.5f, 0.5f), MyGuiConstants.SCREEN_BACKGROUND_COLOR, new Vector2(0.75f, 0.75f))\n        {\n            Debug.Assert(missionBase != null);\n            m_mission = missionBase;\n            m_backgroundTexture = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\BackgroundScreen\\\\MissionAcceptBackground\", flags: TextureFlags.IgnoreQuality);\n            m_size = new Vector2(1010/1600f,855/1200f);\n\n            // Title\n            var titleLabel = new MyGuiControlLabel(\n                            this,\n                            new Vector2(0, -0.3052f),\n                            null,\n                            MyTextsWrapperEnum.Mission,\n                            MyGuiConstants.LABEL_TEXT_COLOR,\n                            MyGuiConstants.SCREEN_CAPTION_TEXT_SCALE,\n                            MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER);\n            // append mission name to the title of the screen\n            titleLabel.UpdateParams(new[] { missionBase.Name });\n            Controls.Add(titleLabel);\n\n            // mission description on the left\n            Controls.Add(new MyGuiControlLabel(\n                                this, \n                                new Vector2(-m_size.Value.X / 4.5f, -0.2501f),\n                                null, MyTextsWrapperEnum.Description,\n                                MyGuiConstants.LABEL_TEXT_COLOR, .8f,\n                                MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER));\n\n\n\n            var multiLineText = new MyGuiControlMultilineText(\n                this,\n                new Vector2(-m_size.Value.X/4.5f - 28/1600f, -0.0167f),\n                new Vector2(370/1600f, 489/1200f),\n                null,\n                MyGuiManager.GetFontMinerWarsBlue(), .66f,\n                MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP,\n                m_mission.DescriptionTemp, false, true);\n\n\n            Controls.Add(multiLineText);\n            multiLineText.ScrollbarOffset = 71/1600f;\n\n  \n            // mission objectives (submissions) on the right\n            Controls.Add(new MyGuiControlLabel(\n                                this,\n                                new Vector2(m_size.Value.X / 4.5f, -0.2501f),\n                                null, MyTextsWrapperEnum.Objectives,\n                                MyGuiConstants.LABEL_TEXT_COLOR, .8f,\n                                MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER));\n\n            var objectives = new StringBuilder();\n            foreach (MyObjective t in m_mission.Objectives)\n            {\n\n                    objectives.Append(\"- \");\n                    objectives.Append(t.DescriptionTemp.ToString());\n                    objectives.AppendLine(\"\\n\");\n                    //objectives.AppendLine();\n            }\n\n            var textControl = new MyGuiControlMultilineText(\n                this,\n                new Vector2(m_size.Value.X/4.5f - 28/1600f, -0.0167f),\n                new Vector2(370/1600f, 489/1200f),\n                null,\n                MyGuiManager.GetFontMinerWarsBlue(), .66f,\n                MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP,\n                objectives, false, true) {ScrollbarOffset = 64/1600f};\n\n\n            Controls.Add(textControl);\n\n            textControl.Clear();\n            textControl.AppendText(objectives);\n\n\n            var okButton = new MyGuiControlButton(this, new Vector2(-0.1379f, 0.2489f), MyGuiConstants.OK_BUTTON_SIZE,\n               MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n               MyGuiManager.GetInventoryScreenButtonTexture(), null, null, MyTextsWrapperEnum.Accept,\n               MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, MyGuiControlButtonTextAlignment.CENTERED, OnAccept_Click,\n               true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true, true);\n            Controls.Add(okButton);\n\n\n\n\n            // decline button\n            if (canDecline)\n            {\n                var declineButton = new MyGuiControlButton(this, new Vector2(0.1379f, 0.2489f), MyGuiConstants.OK_BUTTON_SIZE,\n                   MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                   MyGuiManager.GetInventoryScreenButtonTexture(), null, null, MyTextsWrapperEnum.Decline,\n                   MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, MyGuiControlButtonTextAlignment.CENTERED, OnDecline_Click,\n                   true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true, true);\n                Controls.Add(declineButton);\n\n\n            }\n            else\n            {\n                m_closeOnEsc = canDecline;\n            }\n        }\n\n        public void OnAccept_Click(MyGuiControlButton sender)\n        {\n            m_mission.Accept();\n\n            CloseScreen();\n\n            var session = MySession.Static;\n            if (session != null && !MyFakes.DISABLE_AUTO_SAVE)\n                session.SaveLastCheckpoint();\n        }\n\n        public void OnDecline_Click(MyGuiControlButton sender)\n        {\n            CloseScreen();\n        }\n\n        public override bool CloseScreen()\n        {\n            bool result = base.CloseScreen();\n            MyMissions.HandleCloseMissionScreen();\n            return result;\n        }\n\n        public override void HandleInput(MyGuiInput input, bool receivedFocusInThisUpdate)\n        {\n            base.HandleInput(input, receivedFocusInThisUpdate);\n\n            //Journal removed\n            /*if (input.IsNewGameControlPressed(MyGameControlEnums.MISSION_DIALOG))\n            {\n                CloseScreen();\n            } */\n        }\n\n        public override void CloseScreenNow()\n        {\n            base.CloseScreenNow();\n            MyMissions.HandleCloseMissionScreen();\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenMission\";\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/MyGuiScreenMultiplayer.cs",
    "content": "﻿using System.Diagnostics;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.World;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.CommonLIB.AppCode.Networking.Multiplayer;\n\nnamespace MinerWars.AppCode.Game.GUI\n{\n    class MyGuiScreenMultiplayer : MyGuiScreenBase\n    {\n        readonly MyGuiScreenBase m_closeAfterSuccessfulEnter;\n\n        public MyGuiScreenMultiplayer(MyGuiScreenBase closeAfterSuccessfulEnter)\n            : base(new Vector2(0.5f, 0.5f), MyGuiConstants.SCREEN_BACKGROUND_COLOR, new Vector2(574f / 1600f, 480 / 1200f), false, MyGuiManager.GetMultiplayerBackground())\n        {\n            m_closeAfterSuccessfulEnter = closeAfterSuccessfulEnter;\n            m_enableBackgroundFade = true;\n            AddCaption(MyTextsWrapperEnum.PlaySandbox, new Vector2(0, 0.005f));\n\n            Debug.Assert(m_size != null, \"m_size != null\");\n            Vector2 menuPositionOrigin = new Vector2(0.0f, -m_size.Value.Y / 2.0f + 0.135f);\n            const MyGuiControlButtonTextAlignment menuButtonTextAlignement = MyGuiControlButtonTextAlignment.CENTERED;\n\n            MyTextsWrapperEnum? buttonsForbidden = null;\n            if (MyClientServer.LoggedPlayer != null)\n            {\n                if ((MyClientServer.LoggedPlayer.GetCanAccessDemo() == false) && (MyClientServer.LoggedPlayer.GetCanSave() == false))\n                {\n                    buttonsForbidden = MyTextsWrapperEnum.NotAccessRightsToTestBuild;\n                }\n            }\n\n            Controls.Add(new MyGuiControlButton(this, menuPositionOrigin + 0 * MyGuiConstants.MENU_BUTTONS_POSITION_DELTA,\n                MyGuiConstants.MAIN_MENU_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.HostGame, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE,\n                OnHostGameClick, menuButtonTextAlignement, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER,\n                true, buttonsForbidden));\n\n            Controls.Add(new MyGuiControlButton(this, menuPositionOrigin + 1 * MyGuiConstants.MENU_BUTTONS_POSITION_DELTA,\n                MyGuiConstants.MAIN_MENU_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.JoinGame, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE,\n                OnJoinGameClick, menuButtonTextAlignement, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER,\n                true, buttonsForbidden));\n\n            var backButton = new MyGuiControlButton(this, new Vector2(0, 0.095f), MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE,\n                MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyGuiManager.GetConfirmButton(), null, null, MyTextsWrapperEnum.Back,\n                MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, menuButtonTextAlignement, OnBackClick,\n                true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true, true);\n            Controls.Add(backButton);\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenMultiplayer\";\n        }\n\n        void OnHostGameClick(MyGuiControlButton sender)\n        {\n            MyGuiManager.AddScreen(new MyGuiScreenHostGame(m_closeAfterSuccessfulEnter));\n        }\n\n        void OnJoinGameClick(MyGuiControlButton sender)\n        {\n            MyGuiManager.AddScreen(new MyGuiScreenJoinGame(m_closeAfterSuccessfulEnter, MyGameTypes.Deathmatch | MyGameTypes.Story));\n        }\n\n        void OnBackClick(MyGuiControlButton sender)\n        {\n            CloseScreen();\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/MyGuiScreenMultiplayerEnterGameRequest.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Sessions;\nusing MinerWars.CommonLIB.AppCode.Networking.Multiplayer;\n\nnamespace MinerWars.AppCode.Game.GUI\n{\n    class MyGuiScreenMultiplayerEnterGameRequest : MyGuiScreenBase\n    {\n        private MyGuiScreenGamePlay.MyJoinGameRequest m_request;\n        private MyGuiControlCheckbox m_chkRememberSetting;\n\n        public MyGuiScreenMultiplayerEnterGameRequest(MyGuiScreenGamePlay.MyJoinGameRequest request)\n            : base(new Vector2(0.5f, 0.5f), MyGuiConstants.SCREEN_BACKGROUND_COLOR, new Vector2(574f / 1600f, 600 / 1200f), false, MyGuiManager.GetSandboxBackgoround())\n        {\n            m_enableBackgroundFade = true;\n            m_backgroundFadeColor = new Vector4(0.0f, 0.0f, 0.0f, 0.5f);\n\n            m_request = request;\n            AddCaption(MyTextsWrapperEnum.JoinRequestTitle);\n\n            Vector2 menuPositionOrigin = new Vector2(0.0f, -m_size.Value.Y / 2.0f + 0.146f);\n            MyGuiControlButtonTextAlignment menuButtonTextAlignement = MyGuiControlButtonTextAlignment.CENTERED;\n\n            Controls.Add(new MyGuiControlLabel(this, menuPositionOrigin + 0 * MyGuiConstants.MENU_BUTTONS_POSITION_DELTA, null, new StringBuilder(MyTextsWrapper.GetFormatString(MyTextsWrapperEnum.JoinRequest, request.Message.PlayerInfo.DisplayName)), MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, MyGuiConstants.DEFAULT_CONTROL_FONT));\n\n            Controls.Add(new MyGuiControlButton(this, menuPositionOrigin + 1 * MyGuiConstants.MENU_BUTTONS_POSITION_DELTA, MyGuiConstants.MAIN_MENU_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.AllowEnter, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnAllowEnter, menuButtonTextAlignement, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n\n            Controls.Add(new MyGuiControlButton(this, menuPositionOrigin + 2 * MyGuiConstants.MENU_BUTTONS_POSITION_DELTA, MyGuiConstants.MAIN_MENU_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.DenyEnter, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnDenyEnter, menuButtonTextAlignement, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n\n            MyGuiControlLabel lblRememberSetting = new MyGuiControlLabel(this, menuPositionOrigin + 3 * MyGuiConstants.MENU_BUTTONS_POSITION_DELTA - new Vector2(0.03f, 0), null, MyTextsWrapperEnum.Remember, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER);\n            Controls.Add(lblRememberSetting);\n\n            m_chkRememberSetting = new MyGuiControlCheckbox(this, menuPositionOrigin + 3 * MyGuiConstants.MENU_BUTTONS_POSITION_DELTA + new Vector2(0.05f, 0), false, MyGuiConstants.CHECKBOX_BACKGROUND_COLOR, lblRememberSetting);\n            Controls.Add(m_chkRememberSetting);\n        }\n\n        public void OnAllowEnter(MyGuiControlButton sender)\n        {\n            MyMultiplayerGameplay.Static.AllowEnter(ref m_request.Message);\n            if (m_chkRememberSetting.Checked)\n            {\n                MyMultiplayerGameplay.Static.JoinMode = MyJoinMode.Open;\n                MyMultiplayerGameplay.Static.UpdateGameInfo();\n            }\n            CloseScreen();\n        }\n\n        public void OnDenyEnter(MyGuiControlButton sender)\n        {\n            MyMultiplayerGameplay.Static.DenyEnter(ref m_request.Message);\n            if (m_chkRememberSetting.Checked)\n            {\n                MyMultiplayerGameplay.Static.JoinMode = MyJoinMode.Closed;\n                MyMultiplayerGameplay.Static.UpdateGameInfo();\n            }\n\n            CloseScreen();\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenMultiplayerEnterGameRequest\";\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/MyGuiScreenNewInventory.cs",
    "content": "﻿//using System;\n//using System.Collections.Generic;\n//using System.Linq;\n//using System.Text;\n//using MinerWars.AppCode.Game.Editor;\n//using MinerWars.AppCode.Game.GUI.Core;\n//using Microsoft.Xna.Framework;\n//using MinerWars.AppCode.Game.Utils;\n//using MinerWars.AppCode.Game.Localization;\n//using MinerWars.AppCode.Game.Managers.Graphics.Textures;\n//using MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\n//using MinerWars.AppCode.Game.GUI.Helpers;\n//using MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\n//using MinerWars.CommonLIB.AppCode.Utils;\n//using MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\n//using SysUtils.Utils;\n//using MinerWars.AppCode.Game.Managers.EntityManager.Entities;\n//using MinerWars.CommonLIB.AppCode.ObjectBuilders;\n//using MinerWars.AppCode.Game.Inventory;\n//using MinerWars.AppCode.Game.World.Global;\n//using MinerWars.AppCode.Game.World;\n//using MinerWars.AppCode.Game.Managers.Session;\n\n//namespace MinerWars.AppCode.Game.GUI\n//{\n//    internal enum MyInventoryScreenType\n//    {\n//        CustomizationEditor,\n//        Customization,\n//        TradeForFree,\n//        TradeForMoney,\n//        Steal\n//    }\n\n//    internal static class MyGuiScreenInventoryFactory\n//    {\n//        public static MyGuiScreenInventory CreateInstance(bool isEditor)\n//        {\n//            MyInventory otherSideInventory = null;\n//            StringBuilder otherSideInventoryName = null;\n//            MyInventoryScreenType inventoryScreenType;\n//            MyDetectedEntity detectedEntity = null;\n//            if (isEditor)\n//            {\n//                if (MyGuiScreenGamePlay.Static.IsIngameEditorActive())\n//                {\n//                    otherSideInventory = MyEditor.Static.FoundationFactory.Inventory;\n//                    otherSideInventoryName = new StringBuilder();\n//                    otherSideInventoryName.Append(MyEditor.Static.FoundationFactory.Name);\n//                    otherSideInventoryName.Append(MyTextsWrapper.Get(MyTextsWrapperEnum.OtherSideInventory));\n//                    inventoryScreenType = MyInventoryScreenType.TradeForFree;\n//                }\n//                else\n//                {\n//                    otherSideInventory = new MyInventory();\n//                    otherSideInventory.MaxItems = 1000;\n//                    otherSideInventory.FillInventoryWithAllItems();\n//                    otherSideInventoryName = MyTextsWrapper.Get(MyTextsWrapperEnum.AllItemsInventory);\n//                    inventoryScreenType = MyInventoryScreenType.CustomizationEditor;\n//                }\n//            }\n//            else\n//            {\n//                MyShipDetector detector = MySession.PlayerShip.ShipDetector;\n//                if (detector != null)\n//                {\n//                    detectedEntity = detector.GetNearestDetectedEntity();\n//                }\n\n//                if (detectedEntity != null)\n//                {\n//                    IMyInventory detectedEntityInventory = detectedEntity.Entity as IMyInventory;\n\n//                    otherSideInventoryName = new StringBuilder();\n//                    otherSideInventoryName.Append(detectedEntity.Entity.Name);\n//                    otherSideInventoryName.Append(MyTextsWrapper.Get(MyTextsWrapperEnum.OtherSideInventory));\n\n//                    if (detectedEntity.DetectedAction == MyDetectedEntityAction.TradeForFree)\n//                    {\n//                        inventoryScreenType = MyInventoryScreenType.TradeForFree;\n//                    }\n//                    else if (detectedEntity.DetectedAction == MyDetectedEntityAction.Steal)\n//                    {\n//                        inventoryScreenType = MyInventoryScreenType.Steal;\n//                    }\n//                    else if (detectedEntity.DetectedAction == MyDetectedEntityAction.TradeForMoney)\n//                    {\n//                        inventoryScreenType = MyInventoryScreenType.TradeForMoney;\n//                    }\n//                    else if (detectedEntity.DetectedAction == MyDetectedEntityAction.Build)\n//                    {\n//                        inventoryScreenType = MyInventoryScreenType.TradeForFree;\n//                    }\n//                    else\n//                    {\n//                        throw new MyMwcExceptionApplicationShouldNotGetHere();\n//                    }\n//                    otherSideInventory = detectedEntityInventory.Inventory;\n//                }\n//                else\n//                {\n//                    inventoryScreenType = MyInventoryScreenType.Customization;\n//                }\n//            }\n//            MyGuiScreenInventory inventory = new MyGuiScreenInventory(MySession.Static.Player, otherSideInventory, otherSideInventoryName, inventoryScreenType);\n//            if (detectedEntity != null)\n//            {\n//                detectedEntity.OnLost += inventory.CancelTransfer;\n//            }\n//            return inventory;\n//        }\n//    }\n\n//    internal class MyGuiScreenInventory : MyGuiScreenBase\n//    {\n//        private class MyItemsRepository\n//        {\n//            private Dictionary<int, MyInventoryItem> m_itemsWithKeys;\n\n//            public MyItemsRepository()\n//            {\n//                m_itemsWithKeys = new Dictionary<int, MyInventoryItem>();\n//            }\n\n//            public int AddItem(MyInventoryItem item)\n//            {\n//                int newKey = m_itemsWithKeys.Count + 1;\n//                m_itemsWithKeys.Add(newKey, item);\n//                return newKey;\n//            }\n\n//            public MyInventoryItem GetItem(int key)\n//            {\n//                return m_itemsWithKeys[key];\n//            }\n//        }\n\n//        private class MySmallShipInventoryItems\n//        {\n//            public List<MyInventoryItem> Inventory { get; set; }\n//            public List<MyInventoryItem> LeftWeapons { get; set; }\n//            public List<MyInventoryItem> RightWeapons { get; set; }\n//            public MyInventoryItem Radar { get; set; }\n//            public MyInventoryItem Engine { get; set; }\n//            public MyInventoryItem Armor { get; set; }\n//            public MyInventoryItem Harvester { get; set; }\n//            public MyInventoryItem Drill { get; set; }\n//            public MyInventoryItem FrontLauncher { get; set; }\n//            public MyInventoryItem BackLauncher { get; set; }\n\n//            public MySmallShipInventoryItems()\n//            {\n//                Inventory = new List<MyInventoryItem>();\n//                LeftWeapons = new List<MyInventoryItem>();\n//                RightWeapons = new List<MyInventoryItem>();                \n//            }\n\n//            public void SaveToSmallShipObjectBuilder(MyMwcObjectBuilder_SmallShip smallShipObjectBuilder)\n//            {\n//                // inventory and inventory items\n//                if (smallShipObjectBuilder.Inventory == null)\n//                {\n//                    smallShipObjectBuilder.Inventory = new MyMwcObjectBuilder_Inventory();\n//                    smallShipObjectBuilder.Inventory.MaxItems = 1000;\n//                }\n//                else\n//                {\n//                    if (smallShipObjectBuilder.Inventory.InventoryItems == null)\n//                    {\n//                        smallShipObjectBuilder.Inventory.InventoryItems = new List<MyMwcObjectBuilder_InventoryItem>();\n//                    }\n//                    else\n//                    {\n//                        smallShipObjectBuilder.Inventory.InventoryItems.Clear();\n//                    }\n//                }\n//                foreach (MyInventoryItem inventoryItem in Inventory)\n//                {\n//                    smallShipObjectBuilder.Inventory.InventoryItems.Add(new MyMwcObjectBuilder_InventoryItem(inventoryItem.GetObjectBuilder(true), inventoryItem.Amount));\n//                }\n\n//                // weapons\n//                if (smallShipObjectBuilder.Weapons == null)\n//                {\n//                    smallShipObjectBuilder.Weapons = new List<MyMwcObjectBuilder_SmallShip_Weapon>();\n//                }\n//                foreach (MyInventoryItem weapon in LeftWeapons)\n//                {\n//                    smallShipObjectBuilder.Weapons.Add(weapon.GetObjectBuilder(true) as MyMwcObjectBuilder_SmallShip_Weapon);\n//                }\n//                foreach (MyInventoryItem weapon in RightWeapons)\n//                {\n//                    smallShipObjectBuilder.Weapons.Add(weapon.GetObjectBuilder(true) as MyMwcObjectBuilder_SmallShip_Weapon);\n//                }\n//                if (Harvester != null)\n//                {\n//                    smallShipObjectBuilder.Weapons.Add(Harvester.GetObjectBuilder(true) as MyMwcObjectBuilder_SmallShip_Weapon);\n//                }\n//                if (Drill != null)\n//                {\n//                    smallShipObjectBuilder.Weapons.Add(Drill.GetObjectBuilder(true) as MyMwcObjectBuilder_SmallShip_Weapon);\n//                }\n//                if (FrontLauncher != null)\n//                {\n//                    smallShipObjectBuilder.Weapons.Add(FrontLauncher.GetObjectBuilder(true) as MyMwcObjectBuilder_SmallShip_Weapon);\n//                }\n//                if (BackLauncher != null)\n//                {\n//                    smallShipObjectBuilder.Weapons.Add(BackLauncher.GetObjectBuilder(true) as MyMwcObjectBuilder_SmallShip_Weapon);\n//                }\n\n//                // armor\n//                if (Armor != null)\n//                {\n//                    smallShipObjectBuilder.Armor = Armor.GetObjectBuilder(true) as MyMwcObjectBuilder_SmallShip_Armor;\n//                }\n\n//                // radar\n//                if (Radar != null)\n//                {\n//                    smallShipObjectBuilder.Radar = Radar.GetObjectBuilder(true) as MyMwcObjectBuilder_SmallShip_Tool;\n//                }\n\n//                // engine\n//                if (Engine != null)\n//                {\n//                    smallShipObjectBuilder.Engine = Engine.GetObjectBuilder(true) as MyMwcObjectBuilder_SmallShip_Engine;\n//                }\n//            }\n\n//            public void LoadFromSmallShipObjectBuilder(MyMwcObjectBuilder_SmallShip smallShipObjectBuilder)\n//            {\n//                // inventory\n//                if (smallShipObjectBuilder.Inventory != null)\n//                {\n//                    foreach (MyMwcObjectBuilder_InventoryItem inventoryItem in smallShipObjectBuilder.Inventory.InventoryItems)\n//                    {\n//                        Inventory.Add(MyInventory.CreateInventoryItemFromInventoryItemObjectBuilder(inventoryItem));\n//                    }\n//                }\n\n//                // weapons\n//                if (smallShipObjectBuilder.Weapons != null)\n//                {\n//                    foreach (MyMwcObjectBuilder_SmallShip_Weapon weapon in smallShipObjectBuilder.Weapons)\n//                    {\n//                        if (weapon.WeaponType == MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Crusher ||\n//                            weapon.WeaponType == MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Laser ||\n//                            weapon.WeaponType == MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Nuclear ||\n//                            weapon.WeaponType == MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Pressure ||\n//                            weapon.WeaponType == MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Saw ||\n//                            weapon.WeaponType == MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Thermal)\n//                        {\n//                            Drill = MyInventory.CreateInventoryItemFromObjectBuilder(weapon);\n//                        }\n//                        else if (weapon.WeaponType == MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Harvesting_Device)\n//                        {\n//                            Harvester = MyInventory.CreateInventoryItemFromObjectBuilder(weapon);\n//                        }\n//                        else if (weapon.WeaponType == MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Universal_Launcher_Front)\n//                        {\n//                            FrontLauncher = MyInventory.CreateInventoryItemFromObjectBuilder(weapon);\n//                        }\n//                        else if (weapon.WeaponType == MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Universal_Launcher_Back)\n//                        {\n//                            BackLauncher = MyInventory.CreateInventoryItemFromObjectBuilder(weapon);\n//                        }\n//                        else\n//                        {\n//                            if (LeftWeapons.Count < INVENTORY_WEAPONS_COLUMNS)\n//                            {\n//                                LeftWeapons.Add(MyInventory.CreateInventoryItemFromObjectBuilder(weapon));\n//                            }\n//                            else if (RightWeapons.Count < INVENTORY_WEAPONS_COLUMNS)\n//                            {\n//                                RightWeapons.Add(MyInventory.CreateInventoryItemFromObjectBuilder(weapon));\n//                            }\n//                            else\n//                            {\n//                                Inventory.Add(MyInventory.CreateInventoryItemFromObjectBuilder(weapon));\n//                            }\n//                        }\n//                    }\n//                }\n\n//                // radar\n//                if (smallShipObjectBuilder.Radar != null)\n//                {\n//                    Radar = MyInventory.CreateInventoryItemFromObjectBuilder(smallShipObjectBuilder.Radar);\n//                }\n\n//                // armor\n//                if (smallShipObjectBuilder.Armor != null)\n//                {\n//                    Armor = MyInventory.CreateInventoryItemFromObjectBuilder(smallShipObjectBuilder.Armor);\n//                }\n\n//                // engine\n//                if (smallShipObjectBuilder.Engine != null)\n//                {\n//                    Engine = MyInventory.CreateInventoryItemFromObjectBuilder(smallShipObjectBuilder.Engine);\n//                }\n//            }\n\n//            public void CloseInventoryItems()\n//            {\n//                foreach (MyInventoryItem inventoryItem in Inventory)\n//                {\n//                    MyInventory.CloseInventoryItem(inventoryItem);\n//                }\n//                foreach (MyInventoryItem leftWeapon in LeftWeapons)\n//                {\n                    \n//                }\n//            }\n//        }\n\n//        private MyGuiControlListbox m_shipInventoryListBox;\n//        private MyGuiControlListbox m_otherSideInventoryListBox;\n//        private MyGuiControlListbox m_leftWeaponsInventoryListBox;\n//        private MyGuiControlListbox m_rightWeaponsInventoryListBox;\n//        private MyGuiControlListbox m_radarInventoryListBox;\n//        private MyGuiControlListbox m_armorInventoryListBox;\n//        private MyGuiControlListbox m_engineInventoryListBox;\n//        private MyGuiControlListbox m_frontUniversalLauncherInventoryListBox;\n//        private MyGuiControlListbox m_backUniversalLauncherInventoryListBox;\n//        private MyGuiControlListbox m_drillInventoryListBox;\n//        private MyGuiControlListbox m_harvestingToolInventoryListBox;\n//        private MyGuiControlListboxDragAndDrop m_dragAndDrop;\n//        private MyGuiControlLabel m_moneyTradeBalanceLabel;\n//        private MyGuiControlLabel m_playersMoneyLabel;\n\n//        private Dictionary<MyGuiControlListbox, Predicate<MyInventoryItem>> m_listboxDropConditions;\n//        private MyItemsRepository m_itemsRepository;\n//        private MyInventory m_otherSideInventory;\n//        private MyInventory m_shipInventory;\n//        private List<MyInventoryItem> m_removedInventoryItems;\n//        private float m_moneyTradeBalance;\n//        private MyPlayer m_player;\n//        private MySmallShip m_playerShip;\n//        private MyInventoryScreenType m_inventoryScreenType;\n\n\n//        private const int INVENTORY_COLUMNS = 2;\n//        private const int INVENTORY_DISPLAY_ROWS = 6;\n//        private const int INVENTORY_WEAPONS_COLUMNS = 5;\n\n//        public MyGuiScreenInventory(MyPlayer player, MyInventory otherSideInventory,\n//                                    StringBuilder otherSideInventoryName, MyInventoryScreenType inventoryScreenType)\n//            : base(new Vector2(0.5f, 0.5f), MyGuiConstants.SCREEN_BACKGROUND_COLOR, new Vector2(1.0f, 1.0f))\n//        {\n//            m_player = player;\n//            m_playerShip = m_player.Ship as MySmallShip;\n//            if (m_playerShip == null)\n//            {\n//                throw new Exception(\"Player's ship is not a MySmallShip\");\n//            }\n//            m_shipInventory = m_playerShip.Inventory;\n//            m_otherSideInventory = otherSideInventory;\n//            m_removedInventoryItems = new List<MyInventoryItem>();\n//            m_inventoryScreenType = inventoryScreenType;\n//            m_moneyTradeBalance = 0f;\n\n//            m_itemsRepository = new MyItemsRepository();\n\n//            InitControls(otherSideInventoryName);\n//            LoadInventoryContent();\n//        }\n\n//        private void InitControls(StringBuilder otherSideInventoryName)\n//        {\n//            if (m_inventoryScreenType == MyInventoryScreenType.CustomizationEditor)\n//            {\n//                AddCaption(MyTextsWrapperEnum.ShipCustomizationCaption);\n//            }\n//            else\n//            {\n//                AddCaption(MyTextsWrapperEnum.ShipInventoryCaption);\n//            }\n//            m_enableBackgroundFade = true;\n//            m_drawBackgroundInterference = true;\n\n//            Vector2 topLeft = new Vector2(-m_size.Value.X / 2.0f + 0.05f, -m_size.Value.Y / 2.0f + 0.1f);\n//            Vector2 topRight = new Vector2(m_size.Value.X / 2.0f - 0.05f, -m_size.Value.Y / 2.0f + 0.1f);\n\n//            List<MyGuiControlListbox> listboxToDrop = new List<MyGuiControlListbox>();\n//            m_listboxDropConditions = new Dictionary<MyGuiControlListbox, Predicate<MyInventoryItem>>();\n\n//            #region my ship's inventory and customization\n\n//            // Ship's inventory label\n//            Controls.Add(new MyGuiControlLabel(this,\n//                                               topRight + 0 * MyGuiConstants.CONTROLS_DELTA -\n//                                               new Vector2(\n//                                                   MyGuiConstants.LISTBOX_SMALL_SIZE.X * (float)INVENTORY_COLUMNS +\n//                                                   MyGuiConstants.LISTBOX_SCROLLBAR_WIDTH, 0), null,\n//                                               MyTextsWrapperEnum.ShipInventory, MyGuiConstants.LABEL_TEXT_COLOR,\n//                                               MyGuiConstants.LABEL_TEXT_SCALE,\n//                                               MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n\n//            // Ship inventory listbox\n//            m_shipInventoryListBox = new MyGuiControlListbox(this,\n//                                                             topRight + 1 * MyGuiConstants.CONTROLS_DELTA -\n//                                                             new Vector2(\n//                                                                 MyGuiConstants.LISTBOX_SMALL_SIZE.X *\n//                                                                 (float)INVENTORY_COLUMNS +\n//                                                                 MyGuiConstants.LISTBOX_SCROLLBAR_WIDTH, 0),\n//                                                             MyGuiControlPreDefinedSize.SMALL,\n//                                                             MyGuiConstants.LISTBOX_BACKGROUND_COLOR,\n//                                                             MyTextsWrapper.Get(MyTextsWrapperEnum.ShipInventory),\n//                                                             MyGuiConstants.LABEL_TEXT_SCALE,\n//                                                             INVENTORY_COLUMNS, INVENTORY_DISPLAY_ROWS,\n//                                                             INVENTORY_COLUMNS, true, true, false);\n//            InitializeListboxDragAndAddToControls(m_shipInventoryListBox);\n//            listboxToDrop.Add(m_shipInventoryListBox);\n//            m_listboxDropConditions.Add(m_shipInventoryListBox, ii => true);\n\n//            // Left weapons inventory listbox\n//            m_leftWeaponsInventoryListBox = new MyGuiControlListbox(this,\n//                                                                    new Vector2(\n//                                                                        topLeft.X +\n//                                                                        MyGuiConstants.LISTBOX_SMALL_SIZE.X / 2.0f, 0.2f),\n//                                                                    MyGuiControlPreDefinedSize.SMALL,\n//                                                                    MyGuiConstants.LISTBOX_BACKGROUND_COLOR,\n//                                                                    MyTextsWrapper.Get(MyTextsWrapperEnum.LeftWeapons),\n//                                                                    MyGuiConstants.LABEL_TEXT_SCALE,\n//                                                                    INVENTORY_WEAPONS_COLUMNS, 1,\n//                                                                    INVENTORY_WEAPONS_COLUMNS, true, false, false);\n//            InitializeListboxDragAndAddToControls(m_leftWeaponsInventoryListBox);\n//            listboxToDrop.Add(m_leftWeaponsInventoryListBox);\n//            m_listboxDropConditions.Add(m_leftWeaponsInventoryListBox,\n//                                        ii =>\n//                                        ii.ObjectBuilderType == MyMwcObjectBuilderTypeEnum.SmallShip_Weapon &&\n//                                        new int[] { 9, 10, 11, 12, 13, 14, 15, 16, 18 }.Contains(ii.ObjectBuilderId.Value) ==\n//                                        false);\n\n//            // Right weapons inventory listbox\n//            m_rightWeaponsInventoryListBox = new MyGuiControlListbox(this,\n//                                                                     new Vector2(\n//                                                                         topRight.X -\n//                                                                         ((float)INVENTORY_WEAPONS_COLUMNS - 0.5f) *\n//                                                                         MyGuiConstants.LISTBOX_SMALL_SIZE.X, 0.2f),\n//                                                                     MyGuiControlPreDefinedSize.SMALL,\n//                                                                     MyGuiConstants.LISTBOX_BACKGROUND_COLOR,\n//                                                                     MyTextsWrapper.Get(MyTextsWrapperEnum.RightWeapons),\n//                                                                     MyGuiConstants.LABEL_TEXT_SCALE,\n//                                                                     INVENTORY_WEAPONS_COLUMNS, 1,\n//                                                                     INVENTORY_WEAPONS_COLUMNS, true, false, false);\n//            InitializeListboxDragAndAddToControls(m_rightWeaponsInventoryListBox);\n//            listboxToDrop.Add(m_rightWeaponsInventoryListBox);\n//            m_listboxDropConditions.Add(m_rightWeaponsInventoryListBox,\n//                                        ii =>\n//                                        ii.ObjectBuilderType == MyMwcObjectBuilderTypeEnum.SmallShip_Weapon &&\n//                                        new int[] { 9, 10, 11, 12, 13, 14, 15, 16, 18 }.Contains(ii.ObjectBuilderId.Value) ==\n//                                        false);\n\n//            // Engine inventory listbox\n//            m_engineInventoryListBox = new MyGuiControlListbox(this,\n//                                                               new Vector2(\n//                                                                   -0.025f - MyGuiConstants.LISTBOX_SMALL_SIZE.X / 2.0f,\n//                                                                   0.3f), MyGuiControlPreDefinedSize.SMALL,\n//                                                               MyGuiConstants.LISTBOX_BACKGROUND_COLOR,\n//                                                               MyTextsWrapper.Get(MyTextsWrapperEnum.Engine),\n//                                                               MyGuiConstants.LABEL_TEXT_SCALE,\n//                                                               1, 1, 1, true, false, false);\n//            InitializeListboxDragAndAddToControls(m_engineInventoryListBox);\n//            listboxToDrop.Add(m_engineInventoryListBox);\n//            m_listboxDropConditions.Add(m_engineInventoryListBox,\n//                                        ii => ii.ObjectBuilderType == MyMwcObjectBuilderTypeEnum.SmallShip_Engine);\n\n//            // Back universal launcher inventory listbox\n//            m_backUniversalLauncherInventoryListBox = new MyGuiControlListbox(this,\n//                                                                              new Vector2(\n//                                                                                  0.025f +\n//                                                                                  MyGuiConstants.LISTBOX_SMALL_SIZE.X /\n//                                                                                  2.0f, 0.3f),\n//                                                                              MyGuiControlPreDefinedSize.SMALL,\n//                                                                              MyGuiConstants.LISTBOX_BACKGROUND_COLOR,\n//                                                                              MyTextsWrapper.Get(\n//                                                                                  MyTextsWrapperEnum.\n//                                                                                      WeaponUniversalLauncherBack),\n//                                                                              MyGuiConstants.LABEL_TEXT_SCALE,\n//                                                                              1, 1, 1, true, false, false);\n//            InitializeListboxDragAndAddToControls(m_backUniversalLauncherInventoryListBox);\n//            listboxToDrop.Add(m_backUniversalLauncherInventoryListBox);\n//            m_listboxDropConditions.Add(m_backUniversalLauncherInventoryListBox,\n//                                        ii =>\n//                                        ii.ObjectBuilderType == MyMwcObjectBuilderTypeEnum.SmallShip_Weapon &&\n//                                        ii.ObjectBuilderId.Value == 9);\n\n//            // Radar inventory listbox\n//            m_radarInventoryListBox = new MyGuiControlListbox(this, new Vector2(0.0f, 0.2f),\n//                                                              MyGuiControlPreDefinedSize.SMALL,\n//                                                              MyGuiConstants.LISTBOX_BACKGROUND_COLOR,\n//                                                              MyTextsWrapper.Get(MyTextsWrapperEnum.Radar),\n//                                                              MyGuiConstants.LABEL_TEXT_SCALE,\n//                                                              1, 1, 1, true, false, false);\n//            InitializeListboxDragAndAddToControls(m_radarInventoryListBox);\n//            listboxToDrop.Add(m_radarInventoryListBox);\n//            m_listboxDropConditions.Add(m_radarInventoryListBox,\n//                                        ii =>\n//                                        ii.ObjectBuilderType == MyMwcObjectBuilderTypeEnum.SmallShip_Tool &&\n//                                        ii.ObjectBuilderId == 23);\n\n//            // Armor inventory listbox\n//            m_armorInventoryListBox = new MyGuiControlListbox(this,\n//                                                              new Vector2(\n//                                                                  -0.025f - MyGuiConstants.LISTBOX_SMALL_SIZE.X / 2.0f,\n//                                                                  0.1f), MyGuiControlPreDefinedSize.SMALL,\n//                                                              MyGuiConstants.LISTBOX_BACKGROUND_COLOR,\n//                                                              MyTextsWrapper.Get(MyTextsWrapperEnum.Armor),\n//                                                              MyGuiConstants.LABEL_TEXT_SCALE,\n//                                                              1, 1, 1, true, false, false);\n//            InitializeListboxDragAndAddToControls(m_armorInventoryListBox);\n//            listboxToDrop.Add(m_armorInventoryListBox);\n//            m_listboxDropConditions.Add(m_armorInventoryListBox,\n//                                        ii => ii.ObjectBuilderType == MyMwcObjectBuilderTypeEnum.SmallShip_Armor);\n\n//            // Front universal launcher inventory listbox\n//            m_frontUniversalLauncherInventoryListBox = new MyGuiControlListbox(this,\n//                                                                               new Vector2(\n//                                                                                   0.025f +\n//                                                                                   MyGuiConstants.LISTBOX_SMALL_SIZE.X /\n//                                                                                   2.0f, 0.1f),\n//                                                                               MyGuiControlPreDefinedSize.SMALL,\n//                                                                               MyGuiConstants.LISTBOX_BACKGROUND_COLOR,\n//                                                                               MyTextsWrapper.Get(\n//                                                                                   MyTextsWrapperEnum.\n//                                                                                       WeaponUniversalLauncherFront),\n//                                                                               MyGuiConstants.LABEL_TEXT_SCALE,\n//                                                                               1, 1, 1, true, false, false);\n//            InitializeListboxDragAndAddToControls(m_frontUniversalLauncherInventoryListBox);\n//            listboxToDrop.Add(m_frontUniversalLauncherInventoryListBox);\n//            m_listboxDropConditions.Add(m_frontUniversalLauncherInventoryListBox,\n//                                        ii =>\n//                                        ii.ObjectBuilderType == MyMwcObjectBuilderTypeEnum.SmallShip_Weapon &&\n//                                        ii.ObjectBuilderId.Value == 10);\n\n//            // Drill inventory listbox\n//            m_drillInventoryListBox = new MyGuiControlListbox(this,\n//                                                              new Vector2(\n//                                                                  -0.025f - MyGuiConstants.LISTBOX_SMALL_SIZE.X / 2.0f,\n//                                                                  0.0f), MyGuiControlPreDefinedSize.SMALL,\n//                                                              MyGuiConstants.LISTBOX_BACKGROUND_COLOR,\n//                                                              MyTextsWrapper.Get(MyTextsWrapperEnum.Drill),\n//                                                              MyGuiConstants.LABEL_TEXT_SCALE,\n//                                                              1, 1, 1, true, false, false);\n//            InitializeListboxDragAndAddToControls(m_drillInventoryListBox);\n//            listboxToDrop.Add(m_drillInventoryListBox);\n//            m_listboxDropConditions.Add(m_drillInventoryListBox,\n//                                        ii =>\n//                                        ii.ObjectBuilderType == MyMwcObjectBuilderTypeEnum.SmallShip_Weapon &&\n//                                        new int[] { 12, 13, 14, 15, 16, 18 }.Contains(ii.ObjectBuilderId.Value));\n\n//            // Harvesting tool inventory listbox\n//            m_harvestingToolInventoryListBox = new MyGuiControlListbox(this,\n//                                                                       new Vector2(\n//                                                                           0.025f +\n//                                                                           MyGuiConstants.LISTBOX_SMALL_SIZE.X / 2.0f,\n//                                                                           0.0f), MyGuiControlPreDefinedSize.SMALL,\n//                                                                       MyGuiConstants.LISTBOX_BACKGROUND_COLOR,\n//                                                                       MyTextsWrapper.Get(\n//                                                                           MyTextsWrapperEnum.WeaponHarvestingDevice),\n//                                                                       MyGuiConstants.LABEL_TEXT_SCALE,\n//                                                                       1, 1, 1, true, false, false);\n//            InitializeListboxDragAndAddToControls(m_harvestingToolInventoryListBox);\n//            listboxToDrop.Add(m_harvestingToolInventoryListBox);\n//            m_listboxDropConditions.Add(m_harvestingToolInventoryListBox,\n//                                        ii =>\n//                                        ii.ObjectBuilderType == MyMwcObjectBuilderTypeEnum.SmallShip_Weapon &&\n//                                        ii.ObjectBuilderId.Value == 11);\n\n//            #endregion\n\n//            // money information\n//            m_playersMoneyLabel = new MyGuiControlLabel(this, new Vector2(0.2f, 0.3f), null,\n//                                                        MyTextsWrapper.Get(MyTextsWrapperEnum.Cash),\n//                                                        MyGuiConstants.LABEL_TEXT_COLOR,\n//                                                        MyGuiConstants.LABEL_TEXT_SCALE,\n//                                                        MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER);\n//            m_playersMoneyLabel.UpdateParams(MySession.Static.Player.Money);\n//            Controls.Add(m_playersMoneyLabel);\n//            if (m_inventoryScreenType == MyInventoryScreenType.TradeForMoney)\n//            {\n//                m_moneyTradeBalanceLabel = new MyGuiControlLabel(this, new Vector2(-0.3f, 0.3f), null,\n//                                                                 MyTextsWrapper.Get(MyTextsWrapperEnum.TradeBalance),\n//                                                                 MyGuiConstants.LABEL_TEXT_COLOR,\n//                                                                 MyGuiConstants.LABEL_TEXT_SCALE,\n//                                                                 MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER);\n//                m_moneyTradeBalanceLabel.UpdateParams(m_moneyTradeBalance);\n//                Controls.Add(m_moneyTradeBalanceLabel);\n//            }\n\n//            //  Buttons OK and BACK\n//            Vector2 buttonDelta = new Vector2(0.05f,\n//                                              m_size.Value.Y / 2.0f - MyGuiConstants.MESSAGE_BOX_BORDER_AREA_Y -\n//                                              MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE.Y / 2.0f);\n//            Controls.Add(new MyGuiControlButton(this, new Vector2(-buttonDelta.X, buttonDelta.Y),\n//                                                MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE,\n//                                                MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n//                                                MyTextsWrapperEnum.Ok, MyGuiConstants.BUTTON_TEXT_COLOR,\n//                                                MyGuiConstants.BUTTON_TEXT_SCALE, OnOkClick,\n//                                                MyGuiControlButtonTextAlignment.CENTERED, true,\n//                                                MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n//            Controls.Add(new MyGuiControlButton(this, new Vector2(+buttonDelta.X, buttonDelta.Y),\n//                                                MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE,\n//                                                MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n//                                                MyTextsWrapperEnum.Back, MyGuiConstants.BUTTON_TEXT_COLOR,\n//                                                MyGuiConstants.BUTTON_TEXT_SCALE, OnCancelClick,\n//                                                MyGuiControlButtonTextAlignment.CENTERED, true,\n//                                                MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n\n//            #region other side's inventory\n\n//            if (m_otherSideInventory != null)\n//            {\n//                // Other side's inventory label\n//                Controls.Add(new MyGuiControlLabel(this,\n//                                                   topLeft + 0 * MyGuiConstants.CONTROLS_DELTA +\n//                                                   new Vector2(MyGuiConstants.LISTBOX_SMALL_SIZE.X / 2.0f, 0), null,\n//                                                   otherSideInventoryName, MyGuiConstants.LABEL_TEXT_COLOR,\n//                                                   MyGuiConstants.LABEL_TEXT_SCALE,\n//                                                   MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n\n//                // Other side inventory listbox\n//                m_otherSideInventoryListBox = new MyGuiControlListbox(this,\n//                                                                      topLeft + 1 * MyGuiConstants.CONTROLS_DELTA +\n//                                                                      new Vector2(\n//                                                                          MyGuiConstants.LISTBOX_SMALL_SIZE.X / 2.0f, 0),\n//                                                                      MyGuiControlPreDefinedSize.SMALL,\n//                                                                      MyGuiConstants.LISTBOX_BACKGROUND_COLOR,\n//                                                                      otherSideInventoryName,\n//                                                                      MyGuiConstants.LABEL_TEXT_SCALE,\n//                                                                      INVENTORY_COLUMNS, INVENTORY_DISPLAY_ROWS,\n//                                                                      INVENTORY_COLUMNS, true, true, false);\n//                InitializeListboxDragAndAddToControls(m_otherSideInventoryListBox);\n//                listboxToDrop.Add(m_otherSideInventoryListBox);\n//                m_listboxDropConditions.Add(m_otherSideInventoryListBox, ii => true);\n//            }\n\n//            #endregion\n\n//            // initialize drag and drop\n//            m_dragAndDrop = new MyGuiControlListboxDragAndDrop(this, listboxToDrop, MyGuiControlPreDefinedSize.SMALL,\n//                                                               MyGuiConstants.DRAG_AND_DROP_BACKGROUND_COLOR,\n//                                                               MyGuiConstants.DRAG_AND_DROP_TEXT_COLOR,\n//                                                               MyGuiConstants.LABEL_TEXT_SCALE,\n//                                                               MyGuiConstants.DRAG_AND_DROP_TEXT_OFFSET, true);\n//            m_dragAndDrop.ListboxItemDropped += OnDrop;\n//            Controls.Add(m_dragAndDrop);\n\n//            OnEnterCallback += OnOkClick;\n//        }\n\n//        private void FillListBoxWithInventoryContent(MyGuiControlListbox listbox, List<MyInventoryItem> inventoryItems)\n//        {\n//            foreach (MyInventoryItem item in inventoryItems)\n//            {\n//                AddInventoryItemToListBox(listbox, item);\n//            }\n//        }\n\n//        private void AddInventoryItemToListBox(MyGuiControlListbox listbox, MyInventoryItem item)\n//        {\n//            int itemKey = m_itemsRepository.AddItem(item);\n//            MyGuiControlListboxItem listboxItem = listbox.AddItem(itemKey, item.Description, item.Icon);\n//            listboxItem.IconTexts = new MyIconTexts();\n\n//            // add amount icon's text\n//            if (item.Amount != 1f || item.Amount != item.MaxAmount)\n//            {\n//                StringBuilder amount = new StringBuilder();\n//                amount.Append(item.Amount.ToString());\n//                listboxItem.IconTexts[MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_BOTTOM] = new MyColoredText(amount);\n//            }\n//            // add price icon's text\n//            if (m_inventoryScreenType == MyInventoryScreenType.TradeForMoney)\n//            {\n//                StringBuilder price = new StringBuilder();\n//                // if price of item not integer value, then we must show decimal places\n//                if (item.Price - (int)item.Price > 0f)\n//                {\n//                    price.Append(item.Price.ToString(\"C\"));\n//                }\n//                else\n//                {\n//                    price.Append(item.Price.ToString(\"C0\"));\n//                }\n//                listboxItem.IconTexts[MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP] = new MyColoredText(price);\n//            }\n//        }\n\n//        private List<MyInventoryItem> GetInventoryItemsFromListbox(MyGuiControlListbox listbox)\n//        {\n//            List<MyInventoryItem> inventoryItems = new List<MyInventoryItem>();\n//            foreach (int itemKey in listbox.GetItemsKeys())\n//            {\n//                inventoryItems.Add(m_itemsRepository.GetItem(itemKey));\n//            }\n//            return inventoryItems;\n//        }\n\n//        private void InitializeListboxDragAndAddToControls(MyGuiControlListbox listbox)\n//        {\n//            Controls.Add(listbox);\n//            listbox.ItemDrag += OnDrag;\n//            listbox.ItemSelect += OnItemClick;\n//            listbox.ItemDoubleClick += OnItemDoubleClick;\n//        }\n\n//        private void CreateInventoryItemAddToRepositoryAddToListbox(MyMwcObjectBuilder_Base objectBuilder, MyGuiControlListbox listbox)\n//        {\n//            MyInventoryItem item = MyInventory.CreateInventoryItemFromObjectBuilder(objectBuilder);\n//            AddInventoryItemToListBox(listbox, item);\n//        }\n\n//        private void LoadInventoryContent()\n//        {\n//            // add player's ship's inventory to inventory screen\n//            m_shipInventoryListBox.AddRows(m_shipInventory.MaxItems / INVENTORY_COLUMNS);\n//            FillListBoxWithInventoryContent(m_shipInventoryListBox, m_shipInventory.GetInventoryItems());\n\n//            m_leftWeaponsInventoryListBox.AddRow();\n//            m_rightWeaponsInventoryListBox.AddRow();\n//            m_drillInventoryListBox.AddRow();\n//            m_harvestingToolInventoryListBox.AddRow();\n//            m_frontUniversalLauncherInventoryListBox.AddRow();\n//            m_backUniversalLauncherInventoryListBox.AddRow();\n//            m_radarInventoryListBox.AddRow();\n//            m_armorInventoryListBox.AddRow();\n//            m_engineInventoryListBox.AddRow();\n\n//            MyMwcObjectBuilder_SmallShip smallShipObjectBuilder =\n//                (MyMwcObjectBuilder_SmallShip)m_playerShip.GetObjectBuilder(false);\n\n//            // add weapons to inventory screen\n//            foreach (MyMwcObjectBuilder_SmallShip_Weapon weapon in m_playerShip.Weapons.GetWeaponsObjectBuilders(true))\n//            {\n//                if (weapon.WeaponType == MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Crusher ||\n//                    weapon.WeaponType == MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Laser ||\n//                    weapon.WeaponType == MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Nuclear ||\n//                    weapon.WeaponType == MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Pressure ||\n//                    weapon.WeaponType == MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Saw ||\n//                    weapon.WeaponType == MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Thermal)\n//                {\n//                    CreateInventoryItemAddToRepositoryAddToListbox(weapon, m_drillInventoryListBox);\n//                }\n//                else if (weapon.WeaponType == MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Harvesting_Device)\n//                {\n//                    CreateInventoryItemAddToRepositoryAddToListbox(weapon, m_harvestingToolInventoryListBox);\n//                }\n//                else if (weapon.WeaponType == MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Universal_Launcher_Front)\n//                {\n//                    CreateInventoryItemAddToRepositoryAddToListbox(weapon, m_frontUniversalLauncherInventoryListBox);\n//                }\n//                else if (weapon.WeaponType == MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Universal_Launcher_Back)\n//                {\n//                    CreateInventoryItemAddToRepositoryAddToListbox(weapon, m_backUniversalLauncherInventoryListBox);\n//                }\n//                else\n//                {\n//                    if (m_leftWeaponsInventoryListBox.GetItemsCount() < INVENTORY_WEAPONS_COLUMNS)\n//                    {\n//                        CreateInventoryItemAddToRepositoryAddToListbox(weapon, m_leftWeaponsInventoryListBox);\n//                    }\n//                    else if (m_rightWeaponsInventoryListBox.GetItemsCount() < INVENTORY_WEAPONS_COLUMNS)\n//                    {\n//                        CreateInventoryItemAddToRepositoryAddToListbox(weapon, m_rightWeaponsInventoryListBox);\n//                    }\n//                    else\n//                    {\n//                        CreateInventoryItemAddToRepositoryAddToListbox(weapon, m_shipInventoryListBox);\n//                    }\n//                }\n//            }\n\n//            // add engine to inventory screen\n//            if (MySession.PlayerShip.Engine != null)\n//            {\n//                CreateInventoryItemAddToRepositoryAddToListbox(m_playerShip.Engine, m_engineInventoryListBox);\n//            }\n\n//            // add armor to inventory screen\n//            if (MySession.PlayerShip.Armor != null)\n//            {\n//                AddInventoryItemToListBox(m_armorInventoryListBox,\n//                                          MyInventory.CreateInventoryItemFromObjectBuilder(m_playerShip.Armor));\n//            }\n\n//            // add radar to inventory screen\n//            if (MySession.PlayerShip.Radar != null)\n//            {\n//                AddInventoryItemToListBox(m_radarInventoryListBox,\n//                                          MyInventory.CreateInventoryItemFromObjectBuilder(m_playerShip.Radar));\n//            }\n\n//            // add other's side inventory to inventory screen\n//            if (m_otherSideInventory != null)\n//            {\n//                m_otherSideInventoryListBox.AddRows(m_otherSideInventory.MaxItems / INVENTORY_COLUMNS);\n//                FillListBoxWithInventoryContent(m_otherSideInventoryListBox, m_otherSideInventory.GetInventoryItems());\n//            }\n//        }\n\n//        private void OnCancelClick()\n//        {\n//            CloseScreen();\n//        }\n\n//        private void FillInventoryContentFromListbox(MyInventory inventory, MyGuiControlListbox listBox)\n//        {\n//            inventory.ClearInventoryItems();\n//            List<MyInventoryItem> inventoryItemsToAdd = new List<MyInventoryItem>();\n//            foreach (MyInventoryItem item in GetInventoryItemsFromListbox(listBox))\n//            {\n//                inventoryItemsToAdd.Add(item);\n//            }\n//            inventory.AddInventoryItems(inventoryItemsToAdd);\n//        }\n\n//        private void SaveChangesFromInventoryScreenToPlayer()\n//        {\n//            // save inventory            \n//            FillInventoryContentFromListbox(m_shipInventory, m_shipInventoryListBox);\n\n//            // save engine\n//            List<int> engineKeys = m_engineInventoryListBox.GetItemsKeys();\n//            if (engineKeys.Count == 1)\n//            {\n//                m_playerShip.Engine = (MyMwcObjectBuilder_SmallShip_Engine)m_itemsRepository.GetItem(engineKeys[0]).GetObjectBuilder(true);\n//            }\n//            else\n//            {\n//                m_playerShip.Engine = null;\n//            }\n\n//            // save weapons\n//            m_playerShip.Weapons.RemoveAllWeapons();\n//            List<int> weaponsKeys = new List<int>();\n//            weaponsKeys.AddRange(m_leftWeaponsInventoryListBox.GetItemsKeys());\n//            weaponsKeys.AddRange(m_rightWeaponsInventoryListBox.GetItemsKeys());\n//            weaponsKeys.AddRange(m_drillInventoryListBox.GetItemsKeys());\n//            weaponsKeys.AddRange(m_harvestingToolInventoryListBox.GetItemsKeys());\n//            weaponsKeys.AddRange(m_frontUniversalLauncherInventoryListBox.GetItemsKeys());\n//            weaponsKeys.AddRange(m_backUniversalLauncherInventoryListBox.GetItemsKeys());\n//            foreach (int weaponKey in weaponsKeys)\n//            {\n//                m_playerShip.Weapons.AddWeapon((MyMwcObjectBuilder_SmallShip_Weapon)m_itemsRepository.GetItem(weaponKey).GetObjectBuilder(true));\n//            }\n\n//            // save armor\n//            List<int> armorKeys = m_armorInventoryListBox.GetItemsKeys();\n//            if (armorKeys.Count == 1)\n//            {\n//                m_playerShip.Armor = m_itemsRepository.GetItem(armorKeys[0]).GetObjectBuilder(true) as MyMwcObjectBuilder_SmallShip_Armor;\n//            }\n//            else\n//            {\n//                m_playerShip.Armor = null;\n//            }\n\n//            // save radar\n//            List<int> radarKeys = m_radarInventoryListBox.GetItemsKeys();\n//            if (radarKeys.Count == 1)\n//            {\n//                m_playerShip.Radar = m_itemsRepository.GetItem(radarKeys[0]).GetObjectBuilder(true) as MyMwcObjectBuilder_SmallShip_Tool;\n//            }\n//            else\n//            {\n//                m_playerShip.Radar = null;\n//            }\n\n//            // save money\n//            m_player.Money += m_moneyTradeBalance;\n//        }\n\n//        // save changes\n//        private void OnOkClick()\n//        {\n//            if (m_player.Money + m_moneyTradeBalance >= 0f)\n//            {\n//                SaveChangesFromInventoryScreenToPlayer();\n\n//                if (m_otherSideInventory != null && m_inventoryScreenType != MyInventoryScreenType.CustomizationEditor)\n//                {\n//                    FillInventoryContentFromListbox(m_otherSideInventory, m_otherSideInventoryListBox);\n//                }\n//                foreach (MyInventoryItem removedInventoryItem in m_removedInventoryItems)\n//                {\n//                    MyInventory.CloseInventoryItem(removedInventoryItem);\n//                }\n//                CloseScreen();\n//            }\n//            else\n//            {\n//                MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyTextsWrapperEnum.NotificationYouDontHaveEnoughMoney,\n//                                                                 MyTextsWrapperEnum.TradeResultTitle,\n//                                                                 MyTextsWrapperEnum.Ok, null));\n//            }\n//        }\n\n//        private void StartDragging(MyDropHandleType dropHandlingType, MyGuiControlListbox listbox, int rowIndex, int itemIndex)\n//        {\n//            MyDragAndDropInfo dragAndDropInfo = new MyDragAndDropInfo();\n//            dragAndDropInfo.Listbox = listbox;\n//            dragAndDropInfo.RowIndex = rowIndex;\n//            dragAndDropInfo.ItemIndex = itemIndex;\n//            MyGuiControlListboxItem draggingItem = dragAndDropInfo.Listbox.GetItem(dragAndDropInfo.RowIndex,\n//                                                                                   dragAndDropInfo.ItemIndex);\n//            dragAndDropInfo.Listbox.RemoveItem(dragAndDropInfo.RowIndex, dragAndDropInfo.ItemIndex);\n\n//            m_dragAndDrop.StartDragging(dropHandlingType, draggingItem, dragAndDropInfo);\n//        }\n\n//        private void OnItemClick(object sender, MyGuiControlListboxItemEventArgs eventArgs)\n//        {\n//            //StartDraging(MyDragAndDropType.LeftMouseClick, sender, eventArgs);\n//        }\n\n//        private void OnItemDoubleClick(object sender, MyGuiControlListboxItemEventArgs eventArgs)\n//        {\n//            StartDragging(MyDropHandleType.LeftMouseClick, (MyGuiControlListbox)sender, eventArgs.RowIndex,\n//                               eventArgs.ItemIndex);\n//        }\n\n//        private void OnDrag(object sender, MyGuiControlListboxItemEventArgs eventArgs)\n//        {\n//            StartDragging(MyDropHandleType.LeftMousePressed, (MyGuiControlListbox)sender, eventArgs.RowIndex,\n//                               eventArgs.ItemIndex);\n//        }\n\n//        private void OnDrop(object sender, MyDragAndDropEventArgs eventArgs)\n//        {\n//            if (eventArgs.DropTo != null)\n//            {\n//                MyInventoryItem inventoryItem = m_itemsRepository.GetItem(eventArgs.ListboxItem.Key);\n\n//                // test drop condition\n//                Predicate<MyInventoryItem> dropCondition = m_listboxDropConditions[eventArgs.DropTo.Listbox];\n//                // drop condition false (check if we able to drop this item to this listbox)\n//                if (!dropCondition(inventoryItem))\n//                {\n//                    DropItem(eventArgs.DragFrom.Listbox, eventArgs.ListboxItem, eventArgs.DragFrom.RowIndex,\n//                             eventArgs.DragFrom.ItemIndex);\n//                    m_dragAndDrop.Stop();\n//                }\n//                // drop condition true\n//                else\n//                {\n//                    if (m_inventoryScreenType == MyInventoryScreenType.TradeForMoney)\n//                    {\n//                        // item move from other side to player's ship\n//                        if (eventArgs.DragFrom.Listbox == m_otherSideInventoryListBox &&\n//                            eventArgs.DropTo.Listbox != m_otherSideInventoryListBox)\n//                        {\n//                            m_moneyTradeBalance -= inventoryItem.Price;\n//                        }\n//                        // item move from player's ship to other side\n//                        else if (eventArgs.DragFrom.Listbox != m_otherSideInventoryListBox &&\n//                                 eventArgs.DropTo.Listbox == m_otherSideInventoryListBox)\n//                        {\n//                            m_moneyTradeBalance += inventoryItem.Price;\n//                        }\n//                        m_moneyTradeBalanceLabel.UpdateParams(m_moneyTradeBalance);\n//                    }\n\n//                    MyGuiControlListboxItem itemAtDroppingPosition =\n//                        eventArgs.DropTo.Listbox.GetItem(eventArgs.DropTo.RowIndex, eventArgs.DropTo.ItemIndex);\n//                    // if there is any item at dropping position, then start draging this item\n//                    if (itemAtDroppingPosition != null)\n//                    {\n//                        StartDragging(MyDropHandleType.LeftMouseClick, eventArgs.DropTo.Listbox,\n//                                           eventArgs.DropTo.RowIndex, eventArgs.DropTo.ItemIndex);\n//                    }\n//                    else\n//                    {\n//                        m_dragAndDrop.Stop();\n//                    }\n\n//                    DropItem(eventArgs.DropTo.Listbox, eventArgs.ListboxItem, eventArgs.DropTo.RowIndex,\n//                                  eventArgs.DropTo.ItemIndex);\n//                }\n//            }\n//            else\n//            {\n//                // if item was dropped over inventory screen, then put them to original slot\n//                if (IsMouseOver())\n//                {\n//                    DropItem(eventArgs.DragFrom.Listbox, eventArgs.ListboxItem, eventArgs.DragFrom.RowIndex,\n//                             eventArgs.DragFrom.ItemIndex);\n//                }\n//                // if item was dropped out of inventory screen, then remove from game\n//                else\n//                {\n//                    m_removedInventoryItems.Add(m_itemsRepository.GetItem(eventArgs.ListboxItem.Key));\n//                }\n//                m_dragAndDrop.Stop();\n//            }\n//        }\n\n//        private void DropItem(MyGuiControlListbox listbox, MyGuiControlListboxItem item, int rowIndex, int itemIndex)\n//        {\n//            int key = item.Key;\n//            StringBuilder value = item.Value;\n//            MyTexture2D icon = item.Icon;\n//            if (listbox.GetItem(rowIndex, itemIndex) != null)\n//            {\n//                listbox.AddItem(key, value, icon);\n//            }\n//            else\n//            {\n//                listbox.AddItem(key, value, icon, rowIndex, itemIndex);\n//            }\n//        }\n\n//        public override void LoadContent()\n//        {\n//            base.LoadContent();\n//        }\n\n//        public override string GetFriendlyName()\n//        {\n//            return \"MyGuiScreenInventory\";\n//        }\n\n//        public override void UnloadContent()\n//        {\n//            base.UnloadContent();\n//        }\n\n//        public void CancelTransfer(MyDetectedEntity anotherSideEntity)\n//        {\n//            MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyTextsWrapperEnum.TradeWasCanceled,\n//                                                             MyTextsWrapperEnum.TradeResultTitle, MyTextsWrapperEnum.Ok,\n//                                                             OnTransferCanceled));\n//        }\n\n//        public override bool Update(bool hasFocus)\n//        {\n//            if (base.Update(hasFocus) == false)\n//            {\n//                return false;\n//            }\n\n//            return true;\n//        }\n\n//        private void OnTransferCanceled(MyGuiScreenMessageBoxCallbackEnum callbackReturn)\n//        {\n//            CloseScreen();\n//        }\n\n//        private bool IsMouseOver()\n//        {\n//            Vector2 topLeft = m_position - (m_size.Value / 2.0f);\n//            Vector2 bottomRight = m_position + (m_size.Value / 2.0f);\n//            bool isMouseOver = MyGuiManager.MouseCursorPosition.X >= topLeft.X &&\n//                               MyGuiManager.MouseCursorPosition.Y >= topLeft.Y &&\n//                               MyGuiManager.MouseCursorPosition.X <= bottomRight.X &&\n//                               MyGuiManager.MouseCursorPosition.Y <= bottomRight.Y;\n\n//            return isMouseOver;\n//        }\n\n//        private bool IsDraggingOut()\n//        {\n//            return m_dragAndDrop.IsActive() && !IsMouseOver();\n//        }\n\n//        public override bool Draw(float backgroundFadeAlpha)\n//        {\n//            if (!base.Draw(backgroundFadeAlpha)) return false;\n\n//            if (IsDraggingOut())\n//            {\n//                MyGuiManager.DrawSpriteBatch(MyGuiManager.GetLockedButtonTexture(), MyGuiManager.MouseCursorPosition,\n//                                             m_dragAndDrop.GetSize().Value, new Color(new Vector4(1f, 0f, 0f, 0.5f)),\n//                                             MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER);\n//            }\n\n//            return true;\n//        }\n//    }\n//}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/MyGuiScreenOptions.cs",
    "content": "﻿using MinerWarsMath;\nusing MinerWarsMath.Graphics;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.GUI.ScreenEditor;\nusing SysUtils;\nusing SysUtils.Utils;\nusing MinerWars.AppCode.Game.Textures;\n\nnamespace MinerWars.AppCode.Game.GUI\n{\n    class MyGuiScreenOptions : MyGuiScreenBase\n    {\n        bool m_showVideoOption;\n\n        public MyGuiScreenOptions(bool showVideoOption)\n            : base(new Vector2(0.5f, 0.5f), MyGuiConstants.SCREEN_BACKGROUND_COLOR, new Vector2(574f / 1600f, 695 / 1200f), false, MyGuiManager.GetSandboxBackgoround())\n        {\n            m_enableBackgroundFade = true;\n            m_showVideoOption = showVideoOption;\n\n            RecreateControls(true);\n        }\n\n        public override void RecreateControls(bool contructor)\n        {\n            Controls.Clear();\n\n            AddCaption(MyTextsWrapperEnum.Options, new Vector2(0, 0.005f));\n\n            Vector2 menuPositionOrigin = new Vector2(0.0f, -m_size.Value.Y / 2.0f + 0.146f);\n            MyGuiControlButtonTextAlignment menuButtonTextAlignement = MyGuiControlButtonTextAlignment.CENTERED;\n\n            int index = 0;\n\n            Controls.Add(new MyGuiControlButton(this, menuPositionOrigin + index++ * MyGuiConstants.MENU_BUTTONS_POSITION_DELTA, MyGuiConstants.MAIN_MENU_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.Game, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnGameClick, menuButtonTextAlignement, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n\n            Controls.Add(new MyGuiControlButton(this, menuPositionOrigin + index++ * MyGuiConstants.MENU_BUTTONS_POSITION_DELTA, MyGuiConstants.MAIN_MENU_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.Video, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnVideoClick, menuButtonTextAlignement, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true, m_showVideoOption ? (MyTextsWrapperEnum?)null : MyTextsWrapperEnum.FeatureAccessibleOnlyFromMainMenu));\n\n            Controls.Add(new MyGuiControlButton(this, menuPositionOrigin + index++ * MyGuiConstants.MENU_BUTTONS_POSITION_DELTA, MyGuiConstants.MAIN_MENU_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.Audio, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnAudioClick, menuButtonTextAlignement, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n            Controls.Add(new MyGuiControlButton(this, menuPositionOrigin + index++ * MyGuiConstants.MENU_BUTTONS_POSITION_DELTA, MyGuiConstants.MAIN_MENU_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.Controls, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnControlsClick, menuButtonTextAlignement, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n\n            var backButton = new MyGuiControlButton(this, new Vector2(0, 0.178f), MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE,\n                MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyGuiManager.GetConfirmButton(), null, null, MyTextsWrapperEnum.Back,\n                MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, menuButtonTextAlignement, OnBackClick,\n                true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true, true);\n            Controls.Add(backButton);\n\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenOptions\";\n        }\n\n        public void OnGameClick(MyGuiControlButton sender)\n        {\n            MyGuiManager.AddScreen(new MyGuiScreenOptionsGame());\n        }\n\n        public void OnVideoClick(MyGuiControlButton sender)\n        {\n            MyMwcLog.WriteLine(\"MyGuiScreenOptions.OnVideoClick START\");\n\n            MyGuiManager.AddScreen(new MyGuiScreenOptionsVideo());\n\n            MyMwcLog.WriteLine(\"MyGuiScreenOptions.OnVideoClick END\");\n        }\n\n        public void OnAudioClick(MyGuiControlButton sender)\n        {\n            MyGuiManager.AddScreen(new MyGuiScreenOptionsAudio());\n        }\n\n        public void OnControlsClick(MyGuiControlButton sender)\n        {\n            MyGuiManager.AddScreen(new MyGuiScreenOptionsControls());\n        }\n\n        public void OnBackClick(MyGuiControlButton sender)\n        {\n            //  Just close the screen\n            CloseScreen();\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/MyGuiScreenOptionsAudio.cs",
    "content": "﻿using System.Text;\nusing MinerWarsMath;\nusing MinerWarsMath.Graphics;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Textures;\n\nnamespace MinerWars.AppCode.Game.GUI\n{\n    class MyGuiScreenOptionsAudio : MyGuiScreenBase\n    {\n        class MyGuiScreenOptionsAudioSettings\n        {\n            public float GameVolume;\n            public float MusicVolume;\n        }\n\n        MyGuiControlSlider m_gameVolumeSlider;\n        MyGuiControlSlider m_musicVolumeSlider;\n        MyGuiScreenOptionsAudioSettings m_settingsOld = new MyGuiScreenOptionsAudioSettings();\n        MyGuiScreenOptionsAudioSettings m_settingsNew = new MyGuiScreenOptionsAudioSettings();\n\n        \n        public MyGuiScreenOptionsAudio()\n            : base(new Vector2(0.5f, 0.5f), MyGuiConstants.SCREEN_BACKGROUND_COLOR, null)\n        {\n            m_enableBackgroundFade = true;\n            m_size = new Vector2(1030f / 1600f, 572f / 1200f);\n\n            m_backgroundTexture = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\BackgroundScreen\\\\AudioBackground\", flags: TextureFlags.IgnoreQuality);\n\n            AddCaption(MyTextsWrapperEnum.AudioOptions, new Vector2(0, 0.005f));\n\n            Vector2 controlsOriginLeft = new Vector2(-m_size.Value.X / 2.0f + 0.07f, -m_size.Value.Y / 2.0f + 0.149f);\n            Vector2 controlsOriginRight = new Vector2(-m_size.Value.X / 2.0f + 0.325f, -m_size.Value.Y / 2.0f + 0.149f);\n            Vector2 controlsDelta = new Vector2(0, 0.0525f);\n\n            //  Game Volume\n            Controls.Add(new MyGuiControlLabel(this, controlsOriginLeft + 0 * controlsDelta, null, MyTextsWrapperEnum.GameVolume, MyGuiConstants.LABEL_TEXT_COLOR, \n                MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n            m_gameVolumeSlider = new MyGuiControlSlider(this, controlsOriginRight + 0 * controlsDelta + new Vector2(MyGuiConstants.SLIDER_WIDTH / 2.0f, 0), MyGuiConstants.SLIDER_WIDTH,\n                MyAudioConstants.GAME_MASTER_VOLUME_MIN, MyAudioConstants.GAME_MASTER_VOLUME_MAX, MyGuiConstants.SLIDER_BACKGROUND_COLOR,\n                new StringBuilder(), MyGuiConstants.SLIDER_WIDTH_LABEL, 0, MyGuiConstants.LABEL_TEXT_SCALE * 0.85f);\n            m_gameVolumeSlider.OnChange = OnGameVolumeChange;\n            Controls.Add(m_gameVolumeSlider);\n\n            //  Music Volume\n            Controls.Add(new MyGuiControlLabel(this, controlsOriginLeft + 1 * controlsDelta, null, MyTextsWrapperEnum.MusicVolume, MyGuiConstants.LABEL_TEXT_COLOR, \n                MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n            m_musicVolumeSlider = new MyGuiControlSlider(this, controlsOriginRight + 1 * controlsDelta + new Vector2(MyGuiConstants.SLIDER_WIDTH / 2.0f, 0), MyGuiConstants.SLIDER_WIDTH,\n                MyAudioConstants.MUSIC_MASTER_VOLUME_MIN, MyAudioConstants.MUSIC_MASTER_VOLUME_MAX, MyGuiConstants.SLIDER_BACKGROUND_COLOR,\n                new StringBuilder(), MyGuiConstants.SLIDER_WIDTH_LABEL, 0, MyGuiConstants.LABEL_TEXT_SCALE * 0.85f);\n            m_musicVolumeSlider.OnChange = OnMusicVolumeChange;\n            Controls.Add(m_musicVolumeSlider);\n\n            /*\n            //  Buttons OK and CANCEL\n            Vector2 buttonDelta = new Vector2(0.05f, m_size.Value.Y / 2.0f - MyGuiConstants.MESSAGE_BOX_BORDER_AREA_Y - MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE.Y / 2.0f);\n            Controls.Add(new MyGuiControlButton(this, new Vector2(-buttonDelta.X, buttonDelta.Y), MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.Ok, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnOkClick, MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n            Controls.Add(new MyGuiControlButton(this, new Vector2(+buttonDelta.X, buttonDelta.Y), MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.Cancel, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnCancelClick, MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n\n            */\n\n            var m_okButton = new MyGuiControlButton(this, new Vector2(-0.1379f, 0.1041f), MyGuiConstants.OK_BUTTON_SIZE,\n                                   MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                                   MyGuiManager.GetInventoryScreenButtonTexture(), null, null, MyTextsWrapperEnum.Ok,\n                                   MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, MyGuiControlButtonTextAlignment.CENTERED, OnOkClick,\n                                   true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true, true);\n            Controls.Add(m_okButton);\n\n            var m_cancelButton = new MyGuiControlButton(this, new Vector2(0.141f, 0.1041f), MyGuiConstants.OK_BUTTON_SIZE,\n                       MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                       MyGuiManager.GetInventoryScreenButtonTexture(), null, null, MyTextsWrapperEnum.Cancel,\n                       MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, MyGuiControlButtonTextAlignment.CENTERED, OnCancelClick,\n                       true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true, true);\n            Controls.Add(m_cancelButton);\n\n\n            //  Update controls with values from config file\n            UpdateFromConfig(m_settingsOld);\n            UpdateFromConfig(m_settingsNew);\n            UpdateControls(m_settingsOld);\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenOptionsAudio\";\n        }\n\n        void UpdateFromConfig(MyGuiScreenOptionsAudioSettings settings)\n        {\n            m_settingsOld.GameVolume = MyConfig.GameVolume;\n            m_settingsOld.MusicVolume = MyConfig.MusicVolume;\n        }\n\n        //void UpdateSettings(MyGuiScreenOptionsVideoSettings settings)\n        //{\n        //    settings.AspectRatio = (MyAspectRatioEnum)m_aspectRationCombobox.GetSelectedKey();\n        //}\n\n        void UpdateControls(MyGuiScreenOptionsAudioSettings settings)\n        {\n            m_gameVolumeSlider.SetValue(settings.GameVolume);\n            m_musicVolumeSlider.SetValue(settings.MusicVolume);\n        }\n\n        void Save()\n        {\n            MyConfig.GameVolume = m_gameVolumeSlider.GetValue();\n            MyConfig.MusicVolume = m_musicVolumeSlider.GetValue();\n            MyConfig.Save();\n        }\n\n        static void UpdateValues(MyGuiScreenOptionsAudioSettings settings)\n        {\n            MyAudio.VolumeMusic = settings.MusicVolume;\n            MyAudio.VolumeGame = settings.GameVolume;\n            MyAudio.VolumeGui = settings.GameVolume;\n        }\n\n        public void OnOkClick(MyGuiControlButton sender)\n        {\n            //  Save values\n            Save();\n\n            CloseScreen();\n        }\n\n        public void OnCancelClick(MyGuiControlButton sender)\n        {\n            //  Revert to OLD values\n            UpdateValues(m_settingsOld);\n            \n            CloseScreen();\n        }\n\n        void OnGameVolumeChange(MyGuiControlSlider sender)\n        {\n            m_settingsNew.GameVolume = m_gameVolumeSlider.GetValue();\n            UpdateValues(m_settingsNew);\n        }\n\n        void OnMusicVolumeChange(MyGuiControlSlider sender)\n        {\n            m_settingsNew.MusicVolume = m_musicVolumeSlider.GetValue();\n            UpdateValues(m_settingsNew);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/MyGuiScreenOptionsControls.cs",
    "content": "﻿using System.Collections.Generic;\nusing System.Text;\nusing System.Threading;\nusing MinerWarsMath;\nusing MinerWarsMath.Graphics;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Utils;\nusing System;\nusing MinerWars.AppCode.Toolkit.Input;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.AppCode.Game.GUI.Helpers;\nusing MinerWars.AppCode.Game.Textures;\n\nnamespace MinerWars.AppCode.Game.GUI\n{\n    class MyGuiScreenOptionsControls : MyGuiScreenBase\n    {\n        MyGuiControlTypeEnum m_currentControlType;\n        MyGuiControlCombobox m_controlTypeList;\n\n        readonly Vector2 CONTROL_BUTTON_SIZE = new Vector2(163 / 1600f, 66 / 1200f);\n\n        //  All controls in this screen\n        Dictionary<MyGuiControlTypeEnum, List<MyGuiControlBase>> m_allControls = new Dictionary<MyGuiControlTypeEnum, List<MyGuiControlBase>>();\n\n        //  Dictionary for getting button by control\n        Dictionary<MyControl, MyGuiControlButton> m_keyButtonsDictionary;\n        Dictionary<MyControl, MyGuiControlButton> m_mouseButtonsDictionary;\n        Dictionary<MyControl, MyGuiControlButton> m_joystickButtonsDictionary;\n        Dictionary<MyControl, MyGuiControlButton> m_joystickAxesDictionary;\n\n        //  List for getting button by input type\n        List<MyGuiControlButton> m_keyButtons;\n        List<MyGuiControlButton> m_mouseButtons;\n        List<MyGuiControlButton> m_joystickButtons;\n        List<MyGuiControlButton> m_joystickAxes;\n\n        //  I need these checkboxes here so I can check their value if the user clicks 'OK'\n        MyGuiControlCheckbox m_invertMouseXCheckbox;\n        MyGuiControlCheckbox m_invertMouseYCheckbox;\n        MyGuiControlSlider m_mouseSensitivitySlider;\n        MyGuiControlSlider m_joystickSensitivitySlider;\n        MyGuiControlSlider m_joystickDeadzoneSlider;\n        MyGuiControlSlider m_joystickExponentSlider;\n        MyGuiControlCombobox m_joystickCombobox;\n\n        Vector2 m_controlsOriginLeft;\n        Vector2 m_controlsOriginRight;\n\n        public MyGuiScreenOptionsControls()\n            : base(new Vector2(0.5f, 0.5f), MyGuiConstants.SCREEN_BACKGROUND_COLOR, null)\n        {\n            m_size = new Vector2(1110f / 1600f, 1127f / 1200f);\n            m_backgroundTexture = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\BackgroundScreen\\\\ControlsBackground\", flags: TextureFlags.IgnoreQuality);\n\n            m_enableBackgroundFade = true;\n            AddCaption(MyTextsWrapperEnum.Controls, new Vector2(0, 0.005f));\n\n            MyGuiManager.GetInput().TakeSnapshot();\n\n            m_controlsOriginLeft = new Vector2(-m_size.Value.X / 2.0f + 0.06f, -m_size.Value.Y / 2.0f + 0.102f);\n            m_controlsOriginRight = new Vector2(-m_size.Value.X / 2.0f + 0.333f, -m_size.Value.Y / 2.0f + 0.102f);\n\n            #region Add Revert, OK, Cancel and selection combobox\n            /*\n            //  Buttons Revert, OK and CANCEL\n            float buttonsY = m_size.Value.Y / 2.0f - MyGuiConstants.MESSAGE_BOX_BORDER_AREA_Y - MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE.Y / 2.0f;\n            Controls.Add(new MyGuiControlButton(this,\n                new Vector2((MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE.X + 0.015f) * -1, buttonsY),\n                MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n\n                MyTextsWrapperEnum.Ok, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnOkClick,\n                MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n            Controls.Add(new MyGuiControlButton(this,\n                new Vector2(0, buttonsY),\n                MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.Cancel, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnCancelClick,\n                MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n            Controls.Add(new MyGuiControlButton(this,\n                new Vector2(m_controlsOriginRight.X + MyGuiConstants.TEXTBOX_MEDIUM_SIZE.X, buttonsY),\n                new Vector2(MyGuiConstants.BUTTON_DEFAULTS_WIDTH, MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE.Y), MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.Revert, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnResetDefaultsClick,\n                MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n            */\n\n\n            var okButton = new MyGuiControlButton(this, new Vector2(-0.1942f, 0.3435f), MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE_SMALL,\n                MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyGuiManager.GetConfirmButton(), null, null, MyTextsWrapperEnum.Ok,\n                MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, MyGuiControlButtonTextAlignment.CENTERED, OnOkClick,\n                true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true, true);\n            var cancelButton = new MyGuiControlButton(this, new Vector2(-0.0597f, 0.3435f), MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE_SMALL,\n                MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyGuiManager.GetConfirmButton(), null, null, MyTextsWrapperEnum.Cancel,\n                MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, MyGuiControlButtonTextAlignment.CENTERED, OnCancelClick,\n                true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true, true);\n            var resetButton = new MyGuiControlButton(this, new Vector2(0.1942f, 0.3435f), MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE_SMALL,\n                MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyGuiManager.GetConfirmButton(), null, null, MyTextsWrapperEnum.Revert,\n                MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, MyGuiControlButtonTextAlignment.CENTERED, OnResetDefaultsClick,\n                true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true, true);\n            Controls.Add(okButton);\n            Controls.Add(cancelButton);\n            Controls.Add(resetButton);\n\n\n\n\n            //  Page selection combobox\n            m_currentControlType = MyGuiControlTypeEnum.General;\n            var cBoxPosition = m_controlsOriginRight + 0.5f * MyGuiConstants.CONTROLS_DELTA +\n                               new Vector2(MyGuiConstants.COMBOBOX_MEDIUM_SIZE.X / 2.0f, 0) - new Vector2(0.065f, 0);\n            m_controlTypeList = new MyGuiControlCombobox(this, cBoxPosition, MyGuiControlPreDefinedSize.MEDIUM, MyGuiConstants.COMBOBOX_BACKGROUND_COLOR, MyGuiConstants.COMBOBOX_TEXT_SCALE);\n            m_controlTypeList.AddItem((int)MyGuiControlTypeEnum.General, MyTextsWrapperEnum.General);\n            m_controlTypeList.AddItem((int)MyGuiControlTypeEnum.Navigation, MyTextsWrapperEnum.Navigation);\n            // There are no controls for this category now, so hide it completely and uncomment, when we have new comms controls\n            //m_controlTypeList.AddItem((int)MyGuiInputTypeEnum.Communications, MyTextsWrapperEnum.Comms);\n            m_controlTypeList.AddItem((int)MyGuiControlTypeEnum.Weapons, MyTextsWrapperEnum.Weapons);\n            m_controlTypeList.AddItem((int)MyGuiControlTypeEnum.SpecialWeapons, MyTextsWrapperEnum.SpecialWeapons);\n            m_controlTypeList.AddItem((int)MyGuiControlTypeEnum.Systems1, MyTextsWrapperEnum.Systems1);\n            m_controlTypeList.AddItem((int)MyGuiControlTypeEnum.Systems2, MyTextsWrapperEnum.Systems2);\n            m_controlTypeList.AddItem((int)MyGuiControlTypeEnum.Editor, MyTextsWrapperEnum.Editor);\n            m_controlTypeList.SelectItemByKey((int)m_currentControlType);\n            Controls.Add(m_controlTypeList);\n\n            #endregion\n\n            AddControls();\n\n            ActivateControls(m_currentControlType);\n        }\n\n        private void AddControls()\n        {\n            m_keyButtonsDictionary = new Dictionary<MyControl, MyGuiControlButton>();\n            m_mouseButtonsDictionary = new Dictionary<MyControl, MyGuiControlButton>();\n            m_joystickButtonsDictionary = new Dictionary<MyControl, MyGuiControlButton>();\n            m_joystickAxesDictionary = new Dictionary<MyControl, MyGuiControlButton>();\n            m_keyButtons = new List<MyGuiControlButton>();\n            m_mouseButtons = new List<MyGuiControlButton>();\n            m_joystickButtons = new List<MyGuiControlButton>();\n            m_joystickAxes = new List<MyGuiControlButton>();\n\n            //  \"General\" page is little bit too complex, so I need to create it separately.\n            #region AddControlsByType(MyGuiInputTypeEnum.GENERAL_CONTROL);\n\n            m_allControls[MyGuiControlTypeEnum.General] = new List<MyGuiControlBase>();\n\n            m_allControls[MyGuiControlTypeEnum.General].Add(new MyGuiControlLabel(this, m_controlsOriginLeft + 2 * MyGuiConstants.CONTROLS_DELTA, null, MyTextsWrapperEnum.InvertMouseX, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n            //m_invertMouseXCheckbox = new MyGuiControlCheckbox(this, m_controlsOriginRight + 2 * MyGuiConstants.CONTROLS_DELTA + new Vector2(MyGuiConstants.CHECKBOX_SIZE.X / 2.0f, 0), MyGuiManager.GetInput().GetMouseXInversion(), MyGuiConstants.CHECKBOX_BACKGROUND_COLOR);\n            m_invertMouseXCheckbox = new MyGuiControlCheckbox(this,\n                     m_controlsOriginRight + 2 * MyGuiConstants.CONTROLS_DELTA + new Vector2(MyGuiConstants.CHECKBOX_WITH_GLOW_SIZE.X / 2.0f, 0),\n                     MyGuiConstants.CHECKBOX_WITH_GLOW_SIZE,\n                     MyGuiManager.GetCheckboxOffTexture(), MyGuiManager.GetCheckboxOnTexture(), null,\n                     MyGuiManager.GetInput().GetMouseXInversion(), MyGuiConstants.CHECKBOX_BACKGROUND_COLOR, true, null);\n\n            m_allControls[MyGuiControlTypeEnum.General].Add(m_invertMouseXCheckbox);\n\n            m_allControls[MyGuiControlTypeEnum.General].Add(new MyGuiControlLabel(this, m_controlsOriginLeft + 3 * MyGuiConstants.CONTROLS_DELTA, null, MyTextsWrapperEnum.InvertMouseY, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n            //m_invertMouseYCheckbox = new MyGuiControlCheckbox(this, m_controlsOriginRight + 3 * MyGuiConstants.CONTROLS_DELTA + new Vector2(MyGuiConstants.CHECKBOX_SIZE.X / 2.0f, 0), MyGuiManager.GetInput().GetMouseYInversion(), MyGuiConstants.CHECKBOX_BACKGROUND_COLOR);\n            m_invertMouseYCheckbox = new MyGuiControlCheckbox(this,\n                 m_controlsOriginRight + 3 * MyGuiConstants.CONTROLS_DELTA + new Vector2(MyGuiConstants.CHECKBOX_WITH_GLOW_SIZE.X / 2.0f, 0),\n                 MyGuiConstants.CHECKBOX_WITH_GLOW_SIZE,\n                 MyGuiManager.GetCheckboxOffTexture(), MyGuiManager.GetCheckboxOnTexture(), null,\n                 MyGuiManager.GetInput().GetMouseYInversion(), MyGuiConstants.CHECKBOX_BACKGROUND_COLOR, true, null);\n\n            m_allControls[MyGuiControlTypeEnum.General].Add(m_invertMouseYCheckbox);\n\n            m_allControls[MyGuiControlTypeEnum.General].Add(new MyGuiControlLabel(this, m_controlsOriginLeft + 4 * MyGuiConstants.CONTROLS_DELTA, null, MyTextsWrapperEnum.MouseSensitivity, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n            m_mouseSensitivitySlider = new MyGuiControlSlider(this, m_controlsOriginRight + 4 * MyGuiConstants.CONTROLS_DELTA + new Vector2(MyGuiConstants.COMBOBOX_MEDIUM_SIZE.X / 2.0f, 0), MyGuiConstants.COMBOBOX_MEDIUM_SIZE.X, 0.0f, 3.0f, MyGuiConstants.SLIDER_BACKGROUND_COLOR, new StringBuilder(), MyGuiConstants.TEXTBOX_MEDIUM_SIZE.X, 0, MyGuiConstants.LABEL_TEXT_SCALE);\n            m_mouseSensitivitySlider.SetValue(MyGuiManager.GetInput().GetMouseSensitivity());\n            m_allControls[MyGuiControlTypeEnum.General].Add(m_mouseSensitivitySlider);\n\n            m_allControls[MyGuiControlTypeEnum.General].Add(new MyGuiControlLabel(this, m_controlsOriginLeft + 8.5f * MyGuiConstants.CONTROLS_DELTA, null, MyTextsWrapperEnum.Joystick, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n            m_joystickCombobox = new MyGuiControlCombobox(this, m_controlsOriginRight + 8.5f * MyGuiConstants.CONTROLS_DELTA + new Vector2(MyGuiConstants.COMBOBOX_MEDIUM_SIZE.X / 2.0f, 0), MyGuiControlPreDefinedSize.MEDIUM, MyGuiConstants.COMBOBOX_BACKGROUND_COLOR, MyGuiConstants.COMBOBOX_TEXT_SCALE);\n            m_joystickCombobox.OnSelect += OnSelectJoystick;\n            AddJoysticksToComboBox();\n            m_allControls[MyGuiControlTypeEnum.General].Add(m_joystickCombobox);\n\n            m_allControls[MyGuiControlTypeEnum.General].Add(new MyGuiControlLabel(this, m_controlsOriginLeft + 10 * MyGuiConstants.CONTROLS_DELTA, null, MyTextsWrapperEnum.JoystickSensitivity, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n            m_joystickSensitivitySlider = new MyGuiControlSlider(this, m_controlsOriginRight + 10 * MyGuiConstants.CONTROLS_DELTA + new Vector2(MyGuiConstants.COMBOBOX_MEDIUM_SIZE.X / 2.0f, 0), MyGuiConstants.COMBOBOX_MEDIUM_SIZE.X, 0.1f, 6.0f, MyGuiConstants.SLIDER_BACKGROUND_COLOR, new StringBuilder(), MyGuiConstants.TEXTBOX_MEDIUM_SIZE.X, 0, MyGuiConstants.LABEL_TEXT_SCALE);\n            m_joystickSensitivitySlider.SetValue(MyGuiManager.GetInput().GetJoystickSensitivity());\n            m_allControls[MyGuiControlTypeEnum.General].Add(m_joystickSensitivitySlider);\n\n            m_allControls[MyGuiControlTypeEnum.General].Add(new MyGuiControlLabel(this, m_controlsOriginLeft + 11 * MyGuiConstants.CONTROLS_DELTA, null, MyTextsWrapperEnum.JoystickExponent, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n            m_joystickExponentSlider = new MyGuiControlSlider(this, m_controlsOriginRight + 11 * MyGuiConstants.CONTROLS_DELTA + new Vector2(MyGuiConstants.COMBOBOX_MEDIUM_SIZE.X / 2.0f, 0), MyGuiConstants.COMBOBOX_MEDIUM_SIZE.X, 1.0f, 8.0f, MyGuiConstants.SLIDER_BACKGROUND_COLOR, new StringBuilder(), MyGuiConstants.TEXTBOX_MEDIUM_SIZE.X, 0, MyGuiConstants.LABEL_TEXT_SCALE);\n            m_joystickExponentSlider.SetValue(MyGuiManager.GetInput().GetJoystickExponent());\n            m_allControls[MyGuiControlTypeEnum.General].Add(m_joystickExponentSlider);\n\n            m_allControls[MyGuiControlTypeEnum.General].Add(new MyGuiControlLabel(this, m_controlsOriginLeft + 12 * MyGuiConstants.CONTROLS_DELTA, null, MyTextsWrapperEnum.JoystickDeadzone, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n            m_joystickDeadzoneSlider = new MyGuiControlSlider(this, m_controlsOriginRight + 12 * MyGuiConstants.CONTROLS_DELTA + new Vector2(MyGuiConstants.COMBOBOX_MEDIUM_SIZE.X / 2.0f, 0), MyGuiConstants.COMBOBOX_MEDIUM_SIZE.X, 0.0f, 0.5f, MyGuiConstants.SLIDER_BACKGROUND_COLOR, new StringBuilder(), MyGuiConstants.TEXTBOX_MEDIUM_SIZE.X, 0, MyGuiConstants.LABEL_TEXT_SCALE);\n            m_joystickDeadzoneSlider.SetValue(MyGuiManager.GetInput().GetJoystickDeadzone());\n            m_allControls[MyGuiControlTypeEnum.General].Add(m_joystickDeadzoneSlider);\n\n\n\n\n            #endregion\n            AddControlsByType(MyGuiControlTypeEnum.Navigation);\n            AddControlsByType(MyGuiControlTypeEnum.Systems1);\n            AddControlsByType(MyGuiControlTypeEnum.Systems2);\n            AddControlsByType(MyGuiControlTypeEnum.Weapons);\n            AddControlsByType(MyGuiControlTypeEnum.SpecialWeapons);\n            AddControlsByType(MyGuiControlTypeEnum.Editor);\n\n            //There are no controls for this category now, so hide it completely and uncomment, when we have new comms controls\n            //AddControlsByType(MyGuiInputTypeEnum.Communications);\n            RefreshJoystickControlEnabling();\n        }\n\n        private void AddControlsByType(MyGuiControlTypeEnum type)\n        {\n            Vector2 controlsOriginRight = m_controlsOriginRight;\n            controlsOriginRight.X -= 0.047f;\n            m_allControls[type] = new List<MyGuiControlBase>();\n            float i = 2;\n            float buttonScale = 0.85f;\n\n            MyControl[] controls = MyGuiManager.GetInput().GetGameControlsList();\n            if (type == MyGuiControlTypeEnum.Editor) controls = MyGuiManager.GetInput().GetEditorControlsList();\n\n            m_allControls[type].Add(new MyGuiControlLabel(this, controlsOriginRight + (i - 1) * MyGuiConstants.CONTROLS_DELTA + 0.0f * buttonScale * new Vector2(MyGuiConstants.TEXTBOX_MEDIUM_SIZE.X - CONTROL_BUTTON_SIZE.X / 2.0f, 0) + new Vector2(CONTROL_BUTTON_SIZE.X / 2.0f, 0) * buttonScale, null, MyTextsWrapperEnum.Keyboard, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_TOP));\n            m_allControls[type].Add(new MyGuiControlLabel(this, controlsOriginRight + (i - 1) * MyGuiConstants.CONTROLS_DELTA + 0.5f * buttonScale * new Vector2(MyGuiConstants.TEXTBOX_MEDIUM_SIZE.X - CONTROL_BUTTON_SIZE.X / 2.0f, 0) + new Vector2(CONTROL_BUTTON_SIZE.X / 2.0f, 0) * buttonScale, null, MyTextsWrapperEnum.Mouse, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_TOP));\n            m_allControls[type].Add(new MyGuiControlLabel(this, controlsOriginRight + (i - 1) * MyGuiConstants.CONTROLS_DELTA + 1.0f * buttonScale * new Vector2(MyGuiConstants.TEXTBOX_MEDIUM_SIZE.X - CONTROL_BUTTON_SIZE.X / 2.0f, 0) + new Vector2(CONTROL_BUTTON_SIZE.X / 2.0f, 0) * buttonScale, null, MyTextsWrapperEnum.Gamepad, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_TOP));\n            m_allControls[type].Add(new MyGuiControlLabel(this, controlsOriginRight + (i - 1) * MyGuiConstants.CONTROLS_DELTA + 1.5f * buttonScale * new Vector2(MyGuiConstants.TEXTBOX_MEDIUM_SIZE.X - CONTROL_BUTTON_SIZE.X / 2.0f, 0) + new Vector2(CONTROL_BUTTON_SIZE.X / 2.0f, 0) * buttonScale, null, MyTextsWrapperEnum.AnalogAxes, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_TOP));\n\n            controlsOriginRight.X += 0.047f;\n            foreach (MyControl control in controls)\n            {\n                if (control.GetControlTypeEnum() == type)\n                {\n\n                    m_allControls[type].Add(new MyGuiControlLabel(this, m_controlsOriginLeft + i * MyGuiConstants.CONTROLS_DELTA, null, control.GetControlName(), MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n\n                    // This is column for keyboard\n                    MyGuiControlButtonParameters param = new MyGuiControlButtonParameters();\n                    MyGuiControlButton keyButton = new MyGuiControlButton(this, controlsOriginRight + i * MyGuiConstants.CONTROLS_DELTA + 0 * new Vector2(MyGuiConstants.TEXTBOX_MEDIUM_SIZE.X - CONTROL_BUTTON_SIZE.X / 2.0f, 0) * buttonScale,\n                        CONTROL_BUTTON_SIZE * buttonScale, MyGuiConstants.BUTTON_BACKGROUND_COLOR, new StringBuilder(control.GetControlButtonName(MyGuiInputDeviceEnum.Keyboard)), null, MyGuiConstants.BUTTON_TEXT_COLOR,\n                        MyGuiConstants.BUTTON_TEXT_SCALE, delegate(MyGuiControlButton sender) { OnControlClick(param, m_keyButtonsDictionary, MyGuiInputDeviceEnum.Keyboard); }, MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true);\n                    param.Control = control;\n                    m_allControls[type].Add(keyButton);\n                    m_keyButtons.Add(keyButton);\n\n                    // This is column for mouse\n                    MyGuiControlButton mouseButton = new MyGuiControlButton(this, controlsOriginRight + i * MyGuiConstants.CONTROLS_DELTA + 0.5f * new Vector2(MyGuiConstants.TEXTBOX_MEDIUM_SIZE.X - CONTROL_BUTTON_SIZE.X / 2.0f, 0) * buttonScale,\n                        CONTROL_BUTTON_SIZE * buttonScale, MyGuiConstants.BUTTON_BACKGROUND_COLOR, new StringBuilder(control.GetControlButtonName(MyGuiInputDeviceEnum.Mouse)), null, MyGuiConstants.BUTTON_TEXT_COLOR,\n                        MyGuiConstants.BUTTON_TEXT_SCALE, delegate(MyGuiControlButton sender) { OnControlClick(param, m_mouseButtonsDictionary, MyGuiInputDeviceEnum.Mouse); }, MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true);\n                    param.Control = control;\n                    m_allControls[type].Add(mouseButton);\n                    m_mouseButtons.Add(mouseButton);\n\n                    // This is column for joystick\n                    MyGuiControlButton joyButton = new MyGuiControlButton(this, controlsOriginRight + i * MyGuiConstants.CONTROLS_DELTA + 1 * new Vector2(MyGuiConstants.TEXTBOX_MEDIUM_SIZE.X - CONTROL_BUTTON_SIZE.X / 2.0f, 0) * buttonScale,\n                        CONTROL_BUTTON_SIZE * buttonScale, MyGuiConstants.BUTTON_BACKGROUND_COLOR, new StringBuilder(control.GetControlButtonName(MyGuiInputDeviceEnum.Joystick)), null, MyGuiConstants.BUTTON_TEXT_COLOR,\n                        MyGuiConstants.BUTTON_TEXT_SCALE, delegate(MyGuiControlButton sender) { OnControlClick(param, m_joystickButtonsDictionary, MyGuiInputDeviceEnum.Joystick); }, MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true);\n                    param.Control = control;\n                    m_allControls[type].Add(joyButton);\n                    m_joystickButtons.Add(joyButton);\n\n                    // This is column for joystick axes\n                    MyGuiControlButton joyAxis = new MyGuiControlButton(this, controlsOriginRight + i * MyGuiConstants.CONTROLS_DELTA + 1.5f * new Vector2(MyGuiConstants.TEXTBOX_MEDIUM_SIZE.X - CONTROL_BUTTON_SIZE.X / 2.0f, 0) * buttonScale,\n                        CONTROL_BUTTON_SIZE * buttonScale, MyGuiConstants.BUTTON_BACKGROUND_COLOR, new StringBuilder(control.GetControlButtonName(MyGuiInputDeviceEnum.JoystickAxis)), null, MyGuiConstants.BUTTON_TEXT_COLOR,\n                        MyGuiConstants.BUTTON_TEXT_SCALE, delegate(MyGuiControlButton sender) { OnControlClick(param, m_joystickAxesDictionary, MyGuiInputDeviceEnum.JoystickAxis); }, MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true);\n                    param.Control = control;\n                    m_allControls[type].Add(joyAxis);\n                    m_joystickAxes.Add(joyAxis);\n\n                    m_keyButtonsDictionary[control] = keyButton;\n                    m_mouseButtonsDictionary[control] = mouseButton;\n                    m_joystickButtonsDictionary[control] = joyButton;\n                    m_joystickAxesDictionary[control] = joyAxis;\n\n                    i += buttonScale;\n                }\n            }\n        }\n\n        private void DeactivateControls(MyGuiControlTypeEnum type)\n        {\n            foreach (var item in m_allControls[type])\n            {\n                Controls.Remove(item);\n            }\n        }\n\n        private void ActivateControls(MyGuiControlTypeEnum type)\n        {\n            foreach (var item in m_allControls[type])\n            {\n                Controls.Add(item);\n            }\n        }\n\n        private void AddJoysticksToComboBox()\n        {\n            int counter = 0;\n            m_joystickCombobox.AddItem(counter++, MyTextsWrapper.Get(MyTextsWrapperEnum.Disabled));\n            m_joystickCombobox.SelectItemByIndex(0);\n\n            foreach (string joystickName in MyGuiManager.GetInput().EnumerateJoystickNames())\n            {\n                m_joystickCombobox.AddItem(counter, new StringBuilder(joystickName));\n                if (MyGuiManager.GetInput().JoystickInstanceName == joystickName)\n                {\n                    m_joystickCombobox.SelectItemByIndex(counter);\n                }\n                counter++;\n            }\n        }\n\n        private void OnSelectJoystick()\n        {\n            MyGuiManager.GetInput().JoystickInstanceName = m_joystickCombobox.GetSelectedIndex() == 0 ? null : m_joystickCombobox.GetSelectedValue().ToString();\n            RefreshJoystickControlEnabling();\n        }\n\n        private void RefreshJoystickControlEnabling()\n        {\n            foreach (var button in m_joystickButtons)\n                button.Enabled = (m_joystickCombobox.GetSelectedIndex() != 0);\n            foreach (var axis in m_joystickAxes)\n                axis.Enabled = (m_joystickCombobox.GetSelectedIndex() != 0);\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenOptionsControls\";\n        }\n\n        public override bool Update(bool hasFocus)\n        {\n            if (m_controlTypeList.GetSelectedKey() != (int)m_currentControlType)\n            {\n                DeactivateControls(m_currentControlType);\n                m_currentControlType = (MyGuiControlTypeEnum)m_controlTypeList.GetSelectedKey();\n                ActivateControls(m_currentControlType);\n            }\n\n            if (base.Update(hasFocus) == false) return false;\n            return true;\n        }\n\n        private void OnControlClick(MyGuiControlButtonParameters param, Dictionary<MyControl, MyGuiControlButton> buttonsDictionary, MyGuiInputDeviceEnum deviceType)\n        {\n            MyTextsWrapperEnum messageText = MyTextsWrapperEnum.AssignControlKeyboard;\n            if (deviceType == MyGuiInputDeviceEnum.Mouse)\n            {\n                messageText = MyTextsWrapperEnum.AssignControlMouse;\n            }\n            else if (deviceType == MyGuiInputDeviceEnum.Joystick)\n            {\n                messageText = MyTextsWrapperEnum.AssignControlJoystick;\n            }\n            else if (deviceType == MyGuiInputDeviceEnum.JoystickAxis)\n            {\n                messageText = MyTextsWrapperEnum.AssignControlJoystickAxis;\n            }\n\n            MyGuiManager.AddScreen(new MyGuiControlAssignKeyMessageBox(buttonsDictionary, deviceType, param.Control, messageText));\n        }\n\n        private void OnResetDefaultsClick(MyGuiControlButton sender)\n        {\n            //  revert to controls when the screen was first opened and then close.\n            MyGuiManager.GetInput().RevertToDefaultControls();\n            //  I need refresh text on buttons. Create them again is the easiest way.\n            DeactivateControls(m_currentControlType);\n            AddControls();\n            ActivateControls(m_currentControlType);\n        }\n\n        private void OnCancelClick(MyGuiControlButton sender)\n        {\n            //  revert to controls when the screen was first opened and then close.\n            MyGuiManager.GetInput().RevertChanges();\n            CloseScreen();\n        }\n\n        private void OnOkClick(MyGuiControlButton sender)\n        {\n            CloseScreenAndSave();\n        }\n\n        private void CloseScreenAndSave()\n        {\n            MyGuiManager.GetInput().JoystickInstanceName = m_joystickCombobox.GetSelectedIndex() == 0 ? null : m_joystickCombobox.GetSelectedValue().ToString();\n            MyGuiManager.GetInput().SetMouseXInversion(m_invertMouseXCheckbox.Checked);\n            MyGuiManager.GetInput().SetMouseYInversion(m_invertMouseYCheckbox.Checked);\n            MyGuiManager.GetInput().SetMouseSensitivity(m_mouseSensitivitySlider.GetValue());\n            MyGuiManager.GetInput().SetJoystickSensitivity(m_joystickSensitivitySlider.GetValue());\n            MyGuiManager.GetInput().SetJoystickExponent(m_joystickExponentSlider.GetValue());\n            MyGuiManager.GetInput().SetJoystickDeadzone(m_joystickDeadzoneSlider.GetValue());\n            MyGuiManager.GetInput().SaveControls();\n\n            //MyGuiScreenGamePlay.Static.SetControlsChange(true);\n\n            CloseScreen();\n        }\n\n        private class MyGuiControlAssignKeyMessageBox : MyGuiScreenMessageBox\n        {\n            MyControl m_control;\n            Dictionary<MyControl, MyGuiControlButton> m_buttonsDictionary;\n            List<Toolkit.Input.Keys> m_oldPressedKeys = new List<Keys>();\n            List<MyMouseButtonsEnum> m_oldPressedMouseButtons = new List<MyMouseButtonsEnum>();\n            List<MyJoystickButtonsEnum> m_oldPressedJoystickButtons = new List<MyJoystickButtonsEnum>();\n            List<MyJoystickAxesEnum> m_oldPressedJoystickAxes = new List<MyJoystickAxesEnum>();\n            MyGuiInputDeviceEnum m_deviceType;\n\n            public MyGuiControlAssignKeyMessageBox(Dictionary<MyControl, MyGuiControlButton> buttonsDictionary, MyGuiInputDeviceEnum deviceType, MyControl control, MyTextsWrapperEnum messageText)\n                : base(MyMessageBoxType.NULL, messageText, MyTextsWrapperEnum.SelectControl, null)\n            {\n                DrawMouseCursor = false;\n                m_isTopMostScreen = false;\n                m_backgroundTexture = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\BackgroundScreen\\\\ProgressBackground\", flags: TextureFlags.IgnoreQuality);\n                m_size = new Vector2(598 / 1600f, 368 / 1200f);\n                m_control = control;\n                m_buttonsDictionary = buttonsDictionary;\n                m_deviceType = deviceType;\n\n                MyGuiManager.GetInput().GetListOfPressedKeys(m_oldPressedKeys);\n                MyGuiManager.GetInput().GetListOfPressedMouseButtons(m_oldPressedMouseButtons);\n                MyGuiManager.GetInput().GetListOfPressedJoystickButtons(m_oldPressedJoystickButtons);\n                MyGuiManager.GetInput().GetListOfPressedJoystickAxes(m_oldPressedJoystickAxes);\n                m_interferenceVideoColor = Vector4.One;\n                m_closeOnEsc = false;\n                m_screenCanHide = true;\n                //Controls.Add(new MyGuiControlRotatingWheel(this, new Vector2(0, 0.05f), Vector4.One, MyGuiConstants.ROTATING_WHEEL_DEFAULT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER));\n            }\n\n            public override void HandleInput(MyGuiInput input, bool receivedFocusInThisUpdate)\n            {\n                base.HandleInput(input, receivedFocusInThisUpdate);\n                if (input.IsNewKeyPress(Keys.Escape))\n                {\n                    Canceling();\n                }\n\n                //  Do nothing if base.HandleInput closing this screen right now\n                if (m_state == MyGuiScreenState.CLOSING || m_state == MyGuiScreenState.HIDING) return;\n\n                if (m_deviceType == MyGuiInputDeviceEnum.Keyboard)\n                {\n                    List<Toolkit.Input.Keys> pressedKeys = new List<Toolkit.Input.Keys>();\n                    input.GetListOfPressedKeys(pressedKeys);\n\n                    //  don't assign keys that were pressed when we arrived in the menu\n                    foreach (var key in pressedKeys)\n                    {\n                        if (!m_oldPressedKeys.Contains(key))\n                        {\n                            if (key == Keys.Control) continue; //there is always LeftControl or RightControl pressed with this\n                            if (key == Keys.Shift) continue; //there is always LeftShift or RightShift pressed with this\n\n                            MyAudio.AddCue2D(MySoundCuesEnum.GuiMouseClick);\n\n                            if (!MyGuiInput.IsKeyValid((Keys)key))\n                            {\n                                ShowControlIsNotValidMessageBox(); break;\n                            }\n\n                            MyControl ctrl = input.GetControl((Keys)key, m_control.GetGameControlTypeEnum());\n                            if (ctrl != null)\n                            {\n                                if (ctrl.Equals(m_control)) { CloseScreen(); return; }\n                                ShowControlIsAlreadyAssigned(ctrl); break;\n                            }\n                            m_control.SetControl((Keys)key);\n                            m_buttonsDictionary[m_control].SetText(new StringBuilder(m_control.GetControlButtonName(MyGuiInputDeviceEnum.Keyboard)));\n                            CloseScreen(); return;\n                        }\n                    }\n                    m_oldPressedKeys = pressedKeys;\n                }\n                else if (m_deviceType == MyGuiInputDeviceEnum.Mouse)\n                {\n                    var pressedMouseButtons = new List<MyMouseButtonsEnum>();\n                    input.GetListOfPressedMouseButtons(pressedMouseButtons);\n\n                    //  don't assign buttons that were pressed when we arrived in the menu\n                    foreach (var button in pressedMouseButtons)\n                    {\n                        if (!m_oldPressedMouseButtons.Contains(button))\n                        {\n                            MyAudio.AddCue2D(MySoundCuesEnum.GuiMouseClick);\n                            if (!MyGuiInput.IsMouseButtonValid(button)) { ShowControlIsNotValidMessageBox(); break; }\n\n                            MyControl ctrl = input.GetControl(button, m_control.GetGameControlTypeEnum());\n                            if (ctrl != null)\n                            {\n                                if (ctrl.Equals(m_control)) { CloseScreen(); return; }\n                                ShowControlIsAlreadyAssigned(ctrl); break;\n                            }\n                            m_control.SetControl(button);\n                            m_buttonsDictionary[m_control].SetText(new StringBuilder(m_control.GetControlButtonName(MyGuiInputDeviceEnum.Mouse)));\n                            CloseScreen(); return;\n                        }\n                    }\n                    m_oldPressedMouseButtons = pressedMouseButtons;\n                }\n                else if (m_deviceType == MyGuiInputDeviceEnum.Joystick)\n                {\n                    var pressedJoystickButtons = new List<MyJoystickButtonsEnum>();\n                    input.GetListOfPressedJoystickButtons(pressedJoystickButtons);\n\n                    //  don't assign buttons that were pressed when we arrived in the menu\n                    foreach (var button in pressedJoystickButtons)\n                    {\n                        if (!m_oldPressedJoystickButtons.Contains(button))\n                        {\n                            MyAudio.AddCue2D(MySoundCuesEnum.GuiMouseClick);\n                            if (!MyGuiInput.IsJoystickButtonValid(button)) { ShowControlIsNotValidMessageBox(); break; }\n\n                            MyControl ctrl = input.GetControl(button, m_control.GetGameControlTypeEnum());\n                            if (ctrl != null)\n                            {\n                                if (ctrl.Equals(m_control)) { CloseScreen(); return; }\n                                ShowControlIsAlreadyAssigned(ctrl); break;\n                            }\n                            m_control.SetControl(button);\n                            m_buttonsDictionary[m_control].SetText(new StringBuilder(m_control.GetControlButtonName(MyGuiInputDeviceEnum.Joystick)));\n                            CloseScreen(); return;\n                        }\n                    }\n                    m_oldPressedJoystickButtons = pressedJoystickButtons;\n                }\n                else if (m_deviceType == MyGuiInputDeviceEnum.JoystickAxis)\n                {\n                    var pressedJoystickAxes = new List<MyJoystickAxesEnum>();\n                    input.GetListOfPressedJoystickAxes(pressedJoystickAxes);\n\n                    //  don't assign axes that were pressed when we arrived in the menu\n                    foreach (var axis in pressedJoystickAxes)\n                    {\n                        if (!m_oldPressedJoystickAxes.Contains(axis))\n                        {\n                            MyAudio.AddCue2D(MySoundCuesEnum.GuiMouseClick);\n                            if (!MyGuiInput.IsJoystickAxisValid(axis)) { ShowControlIsNotValidMessageBox(); break; }\n\n                            MyControl ctrl = input.GetControl(axis, m_control.GetGameControlTypeEnum());\n                            if (ctrl != null)\n                            {\n                                if (ctrl.Equals(m_control)) { CloseScreen(); return; }\n                                ShowControlIsAlreadyAssigned(ctrl); break;\n                            }\n                            m_control.SetControl(axis);\n                            m_buttonsDictionary[m_control].SetText(new StringBuilder(m_control.GetControlButtonName(MyGuiInputDeviceEnum.JoystickAxis)));\n                            CloseScreen(); return;\n                        }\n                    }\n                    m_oldPressedJoystickAxes = pressedJoystickAxes;\n                }\n            }\n\n            private void ShowControlIsNotValidMessageBox()\n            {\n                MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.ControlIsNotValid, MyTextsWrapperEnum.CanNotAssignControl, MyTextsWrapperEnum.Ok, null));\n            }\n\n            private void ShowControlIsAlreadyAssigned(MyControl control)\n            {\n                MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR,\n                    new StringBuilder(string.Format(MyTextsWrapper.Get(MyTextsWrapperEnum.ControlAlreadyAssigned).ToString(), control.GetControlButtonName(m_deviceType), MyTextsWrapper.Get(control.GetControlName()).ToString())),\n                    MyTextsWrapper.Get(MyTextsWrapperEnum.CanNotAssignControl), MyTextsWrapperEnum.Yes, MyTextsWrapperEnum.No,\n                    delegate(MyGuiScreenMessageBoxCallbackEnum r)\n                    {\n                        AssignAlreadyAssignedCommand(r, control);\n                    }));\n            }\n\n            private void AssignAlreadyAssignedCommand(MyGuiScreenMessageBoxCallbackEnum r, MyControl control)\n            {\n                if (r == MyGuiScreenMessageBoxCallbackEnum.YES)\n                {\n                    switch (m_deviceType)\n                    {\n                        case MyGuiInputDeviceEnum.Keyboard:\n                            m_control.SetControl(control.GetKeyboardControl());\n                            control.SetControl(Keys.None);\n                            break;\n                        case MyGuiInputDeviceEnum.Mouse:\n                            m_control.SetControl(control.GetMouseControl());\n                            control.SetControl(MyMouseButtonsEnum.None);\n                            break;\n                        case MyGuiInputDeviceEnum.Joystick:\n                            m_control.SetControl(control.GetJoystickControl());\n                            control.SetControl(MyJoystickButtonsEnum.None);\n                            break;\n                        case MyGuiInputDeviceEnum.JoystickAxis:\n                            m_control.SetControl(control.GetJoystickAxisControl());\n                            control.SetControl(MyJoystickAxesEnum.None);\n                            break;\n                    }\n                    m_buttonsDictionary[m_control].SetText(new StringBuilder(m_control.GetControlButtonName(m_deviceType)));\n                    if (m_buttonsDictionary.ContainsKey(control))\n                    {\n                        m_buttonsDictionary[control].SetText(new StringBuilder(control.GetControlButtonName(m_deviceType)));\n                    }\n                    CloseScreen();\n                }\n                else\n                {\n                    MyGuiManager.GetInput().GetListOfPressedKeys(m_oldPressedKeys);\n                    MyGuiManager.GetInput().GetListOfPressedMouseButtons(m_oldPressedMouseButtons);\n                    MyGuiManager.GetInput().GetListOfPressedJoystickButtons(m_oldPressedJoystickButtons);\n                    MyGuiManager.GetInput().GetListOfPressedJoystickAxes(m_oldPressedJoystickAxes);\n                }\n            }\n\n            public override bool CloseScreen()\n            {\n                DrawMouseCursor = true;\n                return base.CloseScreen();\n            }\n        }\n\n        private class MyGuiControlButtonParameters\n        {\n            public MyControl Control { get; set; }\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/MyGuiScreenOptionsGame.cs",
    "content": "﻿using MinerWarsMath;\nusing MinerWarsMath.Graphics;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.HUD;\nusing MinerWars.AppCode.Game.Missions;\nusing MinerWars.AppCode.Game.GUI.Helpers;\n\nnamespace MinerWars.AppCode.Game.GUI\n{\n    class MyGuiScreenOptionsGame : MyGuiScreenBase\n    {\n        MyGuiControlCombobox m_languageCombobox;\n        MyGuiControlCheckbox m_subtitlesCheckbox;\n        MyGuiControlCheckbox m_notificationsCheckbox;\n        MyGuiControlCheckbox m_disableQuickZoomCheckbox;\n        MyGuiControlCheckbox m_disableZoomCheckbox;\n\n        public MyGuiScreenOptionsGame()\n            : base(new Vector2(0.5f, 0.5f), MyGuiConstants.SCREEN_BACKGROUND_COLOR, null)\n        {\n            m_enableBackgroundFade = true;\n            m_size = new Vector2(0.51f, 0.525f);\n            //m_backgroundTexture = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\GameOptionsBackground\", flags: TextureFlags.IgnoreQuality);\n\n            AddCaption(MyTextsWrapperEnum.GameOptions, new Vector2(0, 0.005f));\n\n            Vector2 controlsOriginLeft = new Vector2(-m_size.Value.X / 2.0f + 0.05f, -m_size.Value.Y / 2.0f + 0.125f);\n            Vector2 controlsOriginRight = new Vector2(-m_size.Value.X / 2.0f + 0.175f, -m_size.Value.Y / 2.0f + 0.125f);\n            Vector2 controlsDelta = new Vector2(0, 0.0525f);\n\n            //  Language\n            Controls.Add(new MyGuiControlLabel(this, controlsOriginLeft + 0 * controlsDelta, null, MyTextsWrapperEnum.Language, MyGuiConstants.LABEL_TEXT_COLOR, \n                MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n            m_languageCombobox = new MyGuiControlCombobox(this, controlsOriginRight + 0 * controlsDelta + new Vector2(MyGuiConstants.COMBOBOX_MEDIUM_SIZE.Y / 2.0f + 0.1f, 0), MyGuiControlPreDefinedSize.MEDIUM, MyGuiConstants.COMBOBOX_BACKGROUND_COLOR, MyGuiConstants.COMBOBOX_TEXT_SCALE);\n            m_languageCombobox.AddItem((int)MyLanguagesEnum.English, MyTextsWrapperEnum.LanguageEnglish);\n            m_languageCombobox.AddItem((int)MyLanguagesEnum.Cesky, MyTextsWrapperEnum.LanguageCesky);\n            Controls.Add(m_languageCombobox);\n\n            //  Subtitles\n            Controls.Add(new MyGuiControlLabel(this, controlsOriginLeft + 1 * controlsDelta, null, MyTextsWrapperEnum.Subtitles, MyGuiConstants.LABEL_TEXT_COLOR, \n                MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n            m_subtitlesCheckbox = new MyGuiControlCheckbox(this, controlsOriginRight + 1 * controlsDelta + new Vector2(MyGuiConstants.CHECKBOX_SIZE.X / 2.0f + 0.1f, 0), true, MyGuiConstants.CHECKBOX_BACKGROUND_COLOR);\n            Controls.Add(m_subtitlesCheckbox);\n\n            //  Notifications\n            Controls.Add(new MyGuiControlLabel(this, controlsOriginLeft + 2 * controlsDelta, null, MyTextsWrapperEnum.Notifications, MyGuiConstants.LABEL_TEXT_COLOR,\n                MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n            m_notificationsCheckbox = new MyGuiControlCheckbox(this, controlsOriginRight + 2 * controlsDelta + new Vector2(MyGuiConstants.CHECKBOX_SIZE.X / 2.0f + 0.1f, 0), true, MyGuiConstants.CHECKBOX_BACKGROUND_COLOR);\n            Controls.Add(m_notificationsCheckbox);\n            \n            //  Buttons OK and CANCEL\n            Vector2 buttonDelta = new Vector2(0.1f, m_size.Value.Y / 2.0f - MyGuiConstants.MESSAGE_BOX_BORDER_AREA_Y - MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE.Y / 2.0f - 0.03f);\n            Controls.Add(new MyGuiControlButton(this, new Vector2(-buttonDelta.X, buttonDelta.Y), MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.Ok, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnOkClick, MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n            Controls.Add(new MyGuiControlButton(this, new Vector2(+buttonDelta.X, buttonDelta.Y), MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.Cancel, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnCancelClick, MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n\n\n            //  Update controls with values from config file\n            UpdateControls();\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenOptionsGame\";\n        }\n\n        void UpdateControls()\n        {\n            m_languageCombobox.SelectItemByKey((int)MyConfig.Language);\n            m_subtitlesCheckbox.Checked = MyConfig.Subtitles;\n            m_notificationsCheckbox.Checked = MyConfig.Notifications;\n        }\n\n        void DoChanges()\n        {\n            MyTextsWrapper.ActualLanguage = (MyLanguagesEnum)m_languageCombobox.GetSelectedKey();\n            MyDialoguesWrapper.ActualLanguage = (MyLanguagesEnum)m_languageCombobox.GetSelectedKey();\n            MyMissions.ReloadTexts();\n            MyGuiObjectBuilderHelpers.ReloadTexts();\n            MyGuiManager.RecreateControls();\n            MyHudNotification.ReloadTexts();\n            foreach (var entity in MinerWars.AppCode.Game.Entities.MyEntities.GetEntities())\n            {\n                entity.UpdateHudMarker(true);\n                var cont = entity as MinerWars.AppCode.Game.Entities.MyPrefabContainer;\n                if (cont != null)\n                {\n                    foreach (var prefab in cont.GetPrefabs())\n                    {\n                        prefab.UpdateHudMarker(true);\n                    }\n                }\n            }\n\n            MySubtitles.Enabled = m_subtitlesCheckbox.Checked;\n            MyConfig.Notifications = m_notificationsCheckbox.Checked;\n            MyConfig.Save();\n        }\n\n        public void OnCancelClick(MyGuiControlButton sender)\n        {\n            //  Just close the screen, ignore any change\n            CloseScreen();\n        }\n\n        public void OnOkClick(MyGuiControlButton sender)\n        {\n            //  Save/update and then close screen\n            DoChanges();\n            CloseScreen();\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/MyGuiScreenOptionsVideo.cs",
    "content": "﻿using System.Text;\nusing MinerWarsMath;\nusing MinerWarsMath.Graphics;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.VideoMode;\nusing MinerWars.AppCode.Game.Voxels;\nusing MinerWars.AppCode.Game.Render;\nusing SysUtils.Utils;\nusing MinerWars.AppCode.Game.Textures;\n//  Controls dependency:\n//      - anti-aliasing combobox depends on full-screen checkbox\n\nnamespace MinerWars.AppCode.Game.GUI\n{\n    using System;\n    using App;\n    using SharpDX.Toolkit.Graphics;\n\n    class MyGuiScreenOptionsVideo : MyGuiScreenBase\n    {\n        internal class MyGuiScreenOptionsVideoSettings\n        {\n            public int VideoAdapter;\n            public bool FullScreen;\n            public bool VerticalSync;\n            public bool HardwareCursor;\n            public MyRenderQualityEnum RenderQuality;\n            public MyVideoModeEx VideoMode;\n            public float FieldOfView;\n        }\n\n        readonly MyGuiControlCombobox m_videoAdapterCombobox;\n        readonly MyGuiControlCombobox m_videoModeCombobox;\n        readonly MyGuiControlCheckbox m_verticalSyncCheckbox;\n        readonly MyGuiControlCheckbox m_fullscreenCheckbox;\n        readonly MyGuiControlCheckbox m_hardwareCursorCheckbox;\n        readonly MyGuiControlCombobox m_renderQualityCombobox;\n        readonly MyGuiControlLabel m_recommendAspectRatioLabel;\n        readonly MyGuiControlSlider m_fieldOfViewSlider;\n        readonly MyGuiControlLabel m_fieldOfViewLabel;\n        readonly MyGuiControlLabel m_fieldOfViewDefaultLabel;\n\n        readonly MyGuiScreenOptionsVideoSettings m_settingsOld = new MyGuiScreenOptionsVideoSettings();\n        readonly MyGuiScreenOptionsVideoSettings m_settingsNew = new MyGuiScreenOptionsVideoSettings();\n\n        bool m_waitingForConfirmation = false;\n\n        bool m_doRevert = false;\n\n\n        public MyGuiScreenOptionsVideo()\n            : base(new Vector2(0.5f, 0.5f), MyGuiConstants.SCREEN_BACKGROUND_COLOR, null)\n        {\n            MyMwcLog.WriteLine(\"MyGuiScreenOptionsVideo.ctor START\");\n\n            m_enableBackgroundFade = true;\n            m_size = new Vector2(0.59f, 0.68544f);\n            m_size *= 1.1f;\n\n            m_backgroundTexture = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\BackgroundScreen\\\\VideoBackground\", flags: TextureFlags.IgnoreQuality);\n            \n            AddCaption(MyTextsWrapperEnum.VideoOptions, new Vector2(0, 0.005f));\n            //Controls.Add(new MyGuiControlLabel(this, -m_size.Value / 2.0f + MyGuiConstants.SCREEN_CAPTION_DELTA_Y, null, MyTextsWrapperEnum.VideoOptions, MyGuiConstants.SCREEN_CAPTION_TEXT_COLOR, MyGuiConstants.SCREEN_CAPTION_TEXT_SCALE));\n\n            Vector2 controlsOriginLeft = new Vector2(-m_size.Value.X / 2.0f + 0.05f, -m_size.Value.Y / 2.0f + 0.145f) + new Vector2(0.02f,0f);\n            Vector2 controlsOriginRight = new Vector2(-m_size.Value.X / 2.0f + 0.185f, -m_size.Value.Y / 2.0f + 0.145f) + new Vector2(0.043f,0f);\n            controlsOriginRight.X += 0.04f;\n\n\n            int controlIndex = 0;\n\n            // Adapter\n\n            Controls.Add(new MyGuiControlLabel(this, controlsOriginLeft + controlIndex * MyGuiConstants.CONTROLS_DELTA, null, MyTextsWrapperEnum.VideoAdapter, MyGuiConstants.LABEL_TEXT_COLOR,\n             MyGuiConstants.LABEL_TEXT_SCALE_OPTIONS, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER, MyGuiManager.GetFontMinerWarsBlue()));\n\n            m_videoAdapterCombobox = new MyGuiControlCombobox(this, controlsOriginRight + controlIndex++ * MyGuiConstants.CONTROLS_DELTA + new Vector2(MyGuiConstants.COMBOBOX_MEDIUM_SIZE.X / 2.0f, 0),\n                MyGuiControlPreDefinedSize.MEDIUM, MyGuiConstants.COMBOBOX_BACKGROUND_COLOR, MyGuiConstants.COMBOBOX_TEXT_SCALE);\n            m_videoAdapterCombobox.OnSelect += OnVideoAdapterSelected;\n            AddAdaptersToComboBox();\n            Controls.Add(m_videoAdapterCombobox);\n\n            //  Video Mode\n            Controls.Add(new MyGuiControlLabel(this, controlsOriginLeft + controlIndex * MyGuiConstants.CONTROLS_DELTA, null, MyTextsWrapperEnum.VideoMode, MyGuiConstants.LABEL_TEXT_COLOR,\n                MyGuiConstants.LABEL_TEXT_SCALE_OPTIONS, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER, MyGuiManager.GetFontMinerWarsBlue()));\n\n            m_videoModeCombobox = new MyGuiControlCombobox(this, controlsOriginRight + controlIndex++ * MyGuiConstants.CONTROLS_DELTA + new Vector2(MyGuiConstants.COMBOBOX_MEDIUM_SIZE.X / 2.0f, 0),\n                MyGuiControlPreDefinedSize.MEDIUM, MyGuiConstants.COMBOBOX_BACKGROUND_COLOR, MyGuiConstants.COMBOBOX_TEXT_SCALE);\n            //  Populating Video Mode with supported DisplayMode reported by XNA framework\n            m_videoModeCombobox.OnSelect += OnVideoModeSelected;\n            //Added on UpdateSettings\n            //AddDisplayModesToComboBox(MyMinerGame.GraphicsDeviceManager.GraphicsAdapter.AdapterOrdinal);\n            Controls.Add(m_videoModeCombobox);\n\n            //  Recommended aspect ratio\n            m_recommendAspectRatioLabel = new MyGuiControlLabel(this, new Vector2(controlsOriginRight.X + MyGuiConstants.COMBOBOX_TEXT_OFFSET.X, controlsOriginRight.Y + controlIndex++ * MyGuiConstants.CONTROLS_DELTA.Y - 0.015f), null,\n                    new StringBuilder(), MyGuiConstants.LABEL_TEXT_COLOR * 0.9f, MyGuiConstants.LABEL_TEXT_SCALE_OPTIONS * 0.85f, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER, MyGuiManager.GetFontMinerWarsBlue());\n            //Added on UpdateSettings\n            //UpdateRecommendecAspectRatioLabel(MyMinerGame.GraphicsDeviceManager.GraphicsAdapter.AdapterOrdinal);\n            Controls.Add(m_recommendAspectRatioLabel);\n\n            //  reduce the spacing between \"Recommended aspect ratio\" and items below it\n            Vector2 offSet = new Vector2(0, MyGuiConstants.CONTROLS_DELTA.Y / 2);\n            controlsOriginLeft -= offSet;\n            controlsOriginRight -= offSet;\n\n            //  Fullscreen\n            Controls.Add(new MyGuiControlLabel(this, controlsOriginLeft + controlIndex * MyGuiConstants.CONTROLS_DELTA, null, MyTextsWrapperEnum.Fullscreen, MyGuiConstants.LABEL_TEXT_COLOR,\n                MyGuiConstants.LABEL_TEXT_SCALE_OPTIONS, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER, MyGuiManager.GetFontMinerWarsBlue()));\n\n            m_fullscreenCheckbox = new MyGuiControlCheckbox(this,\n                                 controlsOriginRight + controlIndex++ * MyGuiConstants.CONTROLS_DELTA +\n                                 new Vector2(MyGuiConstants.CHECKBOX_WITH_GLOW_SIZE.X / 2.0f, 0), MyGuiConstants.CHECKBOX_WITH_GLOW_SIZE,\n                                 MyGuiManager.GetCheckboxOffTexture(), MyGuiManager.GetCheckboxOnTexture(), null,\n                                 true, MyGuiConstants.CHECKBOX_BACKGROUND_COLOR, true, null);\n            //m_fullscreenCheckbox.OnCheck = OnFullScreenCheck;\n            Controls.Add(m_fullscreenCheckbox);\n\n            //  Vertical Sync\n            Controls.Add(new MyGuiControlLabel(this, controlsOriginLeft + controlIndex * MyGuiConstants.CONTROLS_DELTA, null, MyTextsWrapperEnum.VerticalSync, MyGuiConstants.LABEL_TEXT_COLOR,\n                MyGuiConstants.LABEL_TEXT_SCALE_OPTIONS, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER, MyGuiManager.GetFontMinerWarsBlue()));\n            //m_verticalSyncCheckbox = new MyGuiControlCheckbox(this, controlsOriginRight + 3 * MyGuiConstants.CONTROLS_DELTA + new Vector2(MyGuiConstants.CHECKBOX_SIZE.X / 2.0f, 0), true, MyGuiConstants.CHECKBOX_BACKGROUND_COLOR);\n            \n\n            m_verticalSyncCheckbox = new MyGuiControlCheckbox(this,\n                                 controlsOriginRight + controlIndex++ * MyGuiConstants.CONTROLS_DELTA +\n                                 new Vector2(MyGuiConstants.CHECKBOX_WITH_GLOW_SIZE.X / 2.0f, 0), MyGuiConstants.CHECKBOX_WITH_GLOW_SIZE,\n                                 MyGuiManager.GetCheckboxOffTexture(), MyGuiManager.GetCheckboxOnTexture(), null,\n                                 false, MyGuiConstants.CHECKBOX_BACKGROUND_COLOR, true, null);\n            Controls.Add(m_verticalSyncCheckbox);\n\n\n            //  Hardware Cursor\n            Controls.Add(new MyGuiControlLabel(this, controlsOriginLeft + controlIndex * MyGuiConstants.CONTROLS_DELTA, null, MyTextsWrapperEnum.HardwareCursor, MyGuiConstants.LABEL_TEXT_COLOR,\n                MyGuiConstants.LABEL_TEXT_SCALE_OPTIONS, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER, MyGuiManager.GetFontMinerWarsBlue()));\n\n            m_hardwareCursorCheckbox = new MyGuiControlCheckbox(this,\n                                 controlsOriginRight + controlIndex++ * MyGuiConstants.CONTROLS_DELTA +\n                                 new Vector2(MyGuiConstants.CHECKBOX_WITH_GLOW_SIZE.X / 2.0f, 0), MyGuiConstants.CHECKBOX_WITH_GLOW_SIZE,\n                                 MyGuiManager.GetCheckboxOffTexture(), MyGuiManager.GetCheckboxOnTexture(), null,\n                                 false, MyGuiConstants.CHECKBOX_BACKGROUND_COLOR, true, null);\n            Controls.Add(m_hardwareCursorCheckbox);\n\n            //  Render Quality            \n            Controls.Add(new MyGuiControlLabel(this, controlsOriginLeft + controlIndex * MyGuiConstants.CONTROLS_DELTA, null, MyTextsWrapperEnum.RenderQuality, MyGuiConstants.LABEL_TEXT_COLOR,\n                MyGuiConstants.LABEL_TEXT_SCALE_OPTIONS, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER, MyGuiManager.GetFontMinerWarsBlue()));\n            m_renderQualityCombobox = new MyGuiControlCombobox(this, controlsOriginRight + controlIndex++ * MyGuiConstants.CONTROLS_DELTA + new Vector2(MyGuiConstants.COMBOBOX_MEDIUM_SIZE.X / 2.0f, 0),\n                MyGuiControlPreDefinedSize.MEDIUM, MyGuiConstants.COMBOBOX_BACKGROUND_COLOR, MyGuiConstants.COMBOBOX_TEXT_SCALE);\n            m_renderQualityCombobox.AddItem((int)MyRenderQualityEnum.LOW, MyTextsWrapperEnum.RenderQualityLow);\n            m_renderQualityCombobox.AddItem((int)MyRenderQualityEnum.NORMAL, MyTextsWrapperEnum.RenderQualityNormal);\n            m_renderQualityCombobox.AddItem((int)MyRenderQualityEnum.HIGH, MyTextsWrapperEnum.RenderQualityHigh);\n            m_renderQualityCombobox.AddItem((int)MyRenderQualityEnum.EXTREME, MyTextsWrapperEnum.RenderQualityExtreme);\n            Controls.Add(m_renderQualityCombobox);\n\n            // Field of View\n            Controls.Add(new MyGuiControlLabel(this, controlsOriginLeft + controlIndex * MyGuiConstants.CONTROLS_DELTA, null, MyTextsWrapperEnum.FieldOfView, MyGuiConstants.LABEL_TEXT_COLOR,\n                MyGuiConstants.LABEL_TEXT_SCALE_OPTIONS, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER, MyGuiManager.GetFontMinerWarsBlue()));\n\n            const float fovSliderSize = MyGuiConstants.SLIDER_WIDTH * 1.1f;\n            m_fieldOfViewSlider = new MyGuiControlSlider(this, controlsOriginRight + controlIndex * MyGuiConstants.CONTROLS_DELTA + new Vector2(fovSliderSize / 2.0f, 0),\n                fovSliderSize, MyConstants.FIELD_OF_VIEW_CONFIG_MIN, MyConstants.FIELD_OF_VIEW_CONFIG_MAX, MyGuiConstants.SLIDER_BACKGROUND_COLOR,\n                new StringBuilder(), MyGuiConstants.SLIDER_WIDTH_LABEL, 0, MyGuiConstants.LABEL_TEXT_SCALE_OPTIONS * 0.85f);\n            m_fieldOfViewSlider.OnChange = OnFovChanged;\n            Controls.Add(m_fieldOfViewSlider);\n\n            m_fieldOfViewLabel = new MyGuiControlLabel(this, controlsOriginRight + controlIndex++ * MyGuiConstants.CONTROLS_DELTA + new Vector2(fovSliderSize * 1.1f, 0),\n                null, new StringBuilder(\"{0:F1}\"), MyGuiConstants.LABEL_TEXT_COLOR,\n                MyGuiConstants.LABEL_TEXT_SCALE_OPTIONS, MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_CENTER, MyGuiManager.GetFontMinerWarsBlue());\n            Controls.Add(m_fieldOfViewLabel);\n\n            m_fieldOfViewDefaultLabel = new MyGuiControlLabel(this, controlsOriginRight + controlIndex++ * MyGuiConstants.CONTROLS_DELTA + new Vector2(0.009f, 0),\n                null, MyTextsWrapper.Get(MyTextsWrapperEnum.DefaultFOV), MyGuiConstants.LABEL_TEXT_COLOR,\n                MyGuiConstants.LABEL_TEXT_SCALE_OPTIONS, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_BOTTOM, MyGuiManager.GetFontMinerWarsBlue());\n            m_fieldOfViewDefaultLabel.UpdateParams(MathHelper.ToDegrees(MyConstants.FIELD_OF_VIEW_CONFIG_DEFAULT));\n            Controls.Add(m_fieldOfViewDefaultLabel);\n\n            //MyGuiManager.GetFontMinerWarsBlue()\n            //  Brightness\n            //Controls.Add(new MyGuiControlLabel(this, controlsOriginLeft + 8 * MyGuiConstants.CONTROLS_DELTA, null, MyTextsWrapperEnum.Brightness, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE_OPTIONS, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n\n            //  Contrast\n            //Controls.Add(new MyGuiControlLabel(this, controlsOriginLeft + 9 * MyGuiConstants.CONTROLS_DELTA, null, MyTextsWrapperEnum.Contrast, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE_OPTIONS, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n            //m_contrastTextbox = new MyGuiControlTextbox(this, controlsOriginRight + 9 * MyGuiConstants.CONTROLS_DELTA + new Vector2(MyGuiConstants.TEXTBOX_WIDTH / 2.0f, 0), MyGuiConstants.TEXTBOX_WIDTH, \"Opicka©123456\", 20, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE_OPTIONS, MyGuiControlTextboxType.NORMAL);\n            //Controls.Add(m_contrastTextbox);\n\n            //  Buttons APPLY and BACK\n\n\n            var m_okButton = new MyGuiControlButton(this, new Vector2(-0.1379f, 0.2269f), MyGuiConstants.OK_BUTTON_SIZE,\n                                   MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                                   MyGuiManager.GetInventoryScreenButtonTexture(), null, null, MyTextsWrapperEnum.Ok,\n                                   MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, MyGuiControlButtonTextAlignment.CENTERED, OnApplyClick,\n                                   true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true, true);\n            Controls.Add(m_okButton);\n            //Controls.Add(new MyGuiControlButton(this, new Vector2(-buttonDelta.X, buttonDelta.Y), MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n             //   MyTextsWrapperEnum.Apply, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnApplyClick, MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n            //Controls.Add(new MyGuiControlButton(this, new Vector2(+buttonDelta.X, buttonDelta.Y), MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n             //   MyTextsWrapperEnum.Back, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnBackClick, MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n\n            var m_cancelButton = new MyGuiControlButton(this, new Vector2(0.1428f, 0.2269f), MyGuiConstants.OK_BUTTON_SIZE,\n                       MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                       MyGuiManager.GetInventoryScreenButtonTexture(), null, null, MyTextsWrapperEnum.Back,\n                       MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, MyGuiControlButtonTextAlignment.CENTERED, OnBackClick,\n                       true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true, true);\n            Controls.Add(m_cancelButton);\n\n            //  Update controls with values from config file\n            UpdateFromConfig();\n            UpdateControls(m_settingsOld);\n\n            //  Update OLD settings\n            UpdateSettings(m_settingsOld);\n            UpdateSettings(m_settingsNew);\n\n            MyMwcLog.WriteLine(\"MyGuiScreenOptionsVideo.ctor END\");\n        }\n\n        private void UpdateRecommendecAspectRatioLabel(int adapterIndex)\n        {\n            m_recommendAspectRatioLabel.UpdateText(GetRecommendedAspectRatio(adapterIndex) + \" ***\");\n        }\n\n        void OnVideoAdapterSelected()\n        {\n            int adapterIndex = m_videoAdapterCombobox.GetSelectedKey();\n            AddDisplayModesToComboBox(adapterIndex);\n            UpdateRecommendecAspectRatioLabel(adapterIndex);\n\n            m_videoModeCombobox.SelectItemByKey(MyVideoModeManager.GetVideoModeIndexByWidthAndHeight(adapterIndex, m_settingsOld.VideoMode.Width, m_settingsOld.VideoMode.Height));\n        }\n\n        void OnVideoModeSelected()\n        {\n            MyVideoModeEx mode = MyVideoModeManager.GetVideoModeByIndex(m_videoAdapterCombobox.GetSelectedKey(), m_videoModeCombobox.GetSelectedKey());\n            m_fieldOfViewSlider.SetValue(MyConstants.FIELD_OF_VIEW_CONFIG_DEFAULT);\n            if (mode.AspectRatio >= (12.0 / 3.0))\n            {\n                m_fieldOfViewSlider.SetBounds(MyConstants.FIELD_OF_VIEW_CONFIG_MIN, MyConstants.FIELD_OF_VIEW_CONFIG_MAX_TRIPLE_HEAD);\n            }\n            else if (mode.AspectRatio >= (8.0 / 3.0))\n            {\n                m_fieldOfViewSlider.SetBounds(MyConstants.FIELD_OF_VIEW_CONFIG_MIN, MyConstants.FIELD_OF_VIEW_CONFIG_MAX_DUAL_HEAD);\n            }\n            else\n            {\n                m_fieldOfViewSlider.SetBounds(MyConstants.FIELD_OF_VIEW_CONFIG_MIN, MyConstants.FIELD_OF_VIEW_CONFIG_MAX);\n            }\n        }\n\n        void OnFovChanged(MyGuiControlSlider sender)\n        {\n            m_fieldOfViewLabel.UpdateParams(MathHelper.ToDegrees(m_fieldOfViewSlider.GetValue()));\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenOptionsVideo\";\n        }\n\n        void UpdateFromConfig()\n        {\n            MyMwcLog.WriteLine(\"MyGuiScreenOptionsVideo.UpdateFromConfig START\");\n\n            m_settingsOld.VideoAdapter = MyConfig.VideoAdapter;\n            m_settingsOld.VideoMode = MyConfig.VideoMode;\n            m_settingsOld.FullScreen = MyConfig.FullScreen;\n            m_settingsOld.VerticalSync = MyConfig.VerticalSync;\n            m_settingsOld.HardwareCursor = MyConfig.HardwareCursor;\n            m_settingsOld.RenderQuality = MyConfig.RenderQuality;\n            m_settingsOld.FieldOfView = MyConfig.FieldOfView;\n\n            MyMwcLog.WriteLine(\"MyGuiScreenOptionsVideo.UpdateFromConfig END\");\n        }\n\n        bool UpdateSettings(MyGuiScreenOptionsVideoSettings settings)\n        {\n            bool retval = settings.VideoMode != MyVideoModeManager.GetVideoModeByIndex(m_videoAdapterCombobox.GetSelectedKey(), m_videoModeCombobox.GetSelectedKey()) ||\n                settings.VideoAdapter != m_videoAdapterCombobox.GetSelectedKey() ||\n                settings.FullScreen != m_fullscreenCheckbox.Checked ||\n                settings.VerticalSync != m_verticalSyncCheckbox.Checked ||\n                settings.HardwareCursor != m_hardwareCursorCheckbox.Checked ||\n                settings.RenderQuality != (MyRenderQualityEnum)m_renderQualityCombobox.GetSelectedKey() ||\n                settings.FieldOfView != m_fieldOfViewSlider.GetValue();\n            \n            settings.VideoAdapter = m_videoAdapterCombobox.GetSelectedKey();\n            settings.VideoMode = MyVideoModeManager.GetVideoModeByIndex(settings.VideoAdapter, m_videoModeCombobox.GetSelectedKey());\n            settings.FullScreen = m_fullscreenCheckbox.Checked;\n            settings.VerticalSync = m_verticalSyncCheckbox.Checked;\n            settings.HardwareCursor = m_hardwareCursorCheckbox.Checked;\n            settings.RenderQuality = (MyRenderQualityEnum)m_renderQualityCombobox.GetSelectedKey();\n            settings.FieldOfView = m_fieldOfViewSlider.GetValue();\n\n            return retval;\n        }\n\n        void UpdateControls(MyGuiScreenOptionsVideoSettings settings)\n        {\n            m_videoAdapterCombobox.SelectItemByKey(settings.VideoAdapter);\n            m_videoModeCombobox.SelectItemByKey(MyVideoModeManager.GetVideoModeIndexByWidthAndHeight(settings.VideoAdapter, settings.VideoMode.Width, settings.VideoMode.Height));\n            m_fullscreenCheckbox.Checked = settings.FullScreen;\n            m_verticalSyncCheckbox.Checked = settings.VerticalSync;\n            m_hardwareCursorCheckbox.Checked = settings.HardwareCursor;\n            m_renderQualityCombobox.SelectItemByKey((int)settings.RenderQuality);\n            m_fieldOfViewSlider.SetValue(settings.FieldOfView);\n            OnFovChanged(m_fieldOfViewSlider);\n        }\n\n        void SaveSettings()\n        {\n            MyConfig.VideoAdapter = m_settingsNew.VideoAdapter;\n            MyConfig.VideoMode = m_settingsNew.VideoMode;\n            MyConfig.FullScreen = m_settingsNew.FullScreen;\n            MyConfig.VerticalSync = m_settingsNew.VerticalSync;\n            MyConfig.HardwareCursor = m_settingsNew.HardwareCursor;\n            MyConfig.RenderQuality = m_settingsNew.RenderQuality;\n            MyConfig.FieldOfView = m_settingsNew.FieldOfView;\n        }\n\n        public void OnBackClick(MyGuiControlButton sender)\n        {\n            //  Just close the screen, ignore any change\n            CloseScreen();\n        }\n\n        public void OnApplyClick(MyGuiControlButton sender)\n        {\n            //  Update NEW settings\n            bool somethingChanged = UpdateSettings(m_settingsNew);\n\n            //  Change video mode to new one\n            if (somethingChanged)\n            {\n                MyVideoModeManager.BeginChangeVideoMode(true, m_settingsNew.VideoAdapter, m_settingsNew.VideoMode, m_settingsNew.FullScreen, m_settingsNew.VerticalSync, m_settingsNew.HardwareCursor, m_settingsNew.RenderQuality, m_settingsNew.FieldOfView, false, OnVideoModeChangedAndComfirm);\n            }\n            else\n            {\n                CloseScreen();\n            }\n        }\n\n        private void OnVideoModeChangedAndComfirm(MinerWars.AppCode.Game.VideoMode.MyVideoModeManager.MyVideoModeChangeOperation result)\n        {\n            bool changed = MyVideoModeManager.EndChangeVideoMode(result);\n\n            if (changed)\n            {\n                if (MyVideoModeManager.HasAnythingChanged(result))\n                {\n                    //udpate screen here\n                    m_waitingForConfirmation = true;\n                    MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.MESSAGE, MyTextsWrapperEnum.DoYouWantToKeepTheseSettingsXSecondsRemaining,\n                        MyTextsWrapperEnum.MessageBoxCaptionPleaseConfirm, MyTextsWrapperEnum.Yes, MyTextsWrapperEnum.No,\n                        OnMessageBoxCallback, MyGuiConstants.VIDEO_OPTIONS_CONFIRMATION_TIMEOUT_IN_MILISECONDS));\n                }\n            }\n            else\n            {\n                MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.SorryButSelectedSettingsAreNotSupportedByYourHardware,\n                    MyTextsWrapperEnum.MessageBoxCaptionError, MyTextsWrapperEnum.Ok, null));\n\n                m_doRevert = true;\n            }\n        }\n\n        private void OnVideoModeChanged(MinerWars.AppCode.Game.VideoMode.MyVideoModeManager.MyVideoModeChangeOperation result)\n        {\n            UpdateControls(m_settingsOld);\n            UpdateSettings(m_settingsNew);\n        }\n\n        public void OnMessageBoxCallback(MyGuiScreenMessageBoxCallbackEnum callbackReturn)\n        {\n            if (callbackReturn == MyGuiScreenMessageBoxCallbackEnum.YES)\n            {\n                //  Save current video mode settings\n                SaveSettings();\n                MyConfig.Save();\n\n                //  These are now OLD settings\n                UpdateSettings(m_settingsOld);\n\n                this.CloseScreenNow();\n            }\n            else\n            {\n                m_doRevert = true;\n                //RevertChanges();\n            }\n\n            m_waitingForConfirmation = false;\n        }\n\n        //  Revert changes - setting new video resolution must be done from Draw call, because when called\n        //  from Update while game isn't active (alt-tabed or minimized) it will fail on weird XNA exceptions\n        void RevertChanges()\n        {\n            //  Revert and change video mode to OLD settings\n            MyVideoModeManager.BeginChangeVideoMode(true,\n                m_settingsOld.VideoAdapter,\n                m_settingsOld.VideoMode,\n                m_settingsOld.FullScreen, m_settingsOld.VerticalSync, m_settingsOld.HardwareCursor, m_settingsOld.RenderQuality, m_settingsOld.FieldOfView, false, OnVideoModeChanged);\n        }\n\n        public override bool CloseScreen()\n        {\n            bool ret = base.CloseScreen();\n\n            //  If the screen was closed for whatever reason during we waited for 15secs acknowledgement of changes, we need to revert them (because YES wasn't pressed)\n            if ((ret == true) && (m_waitingForConfirmation == true))\n            {\n                //RevertChanges();\n            }\n\n            return ret;\n        }\n\n        void AddAdaptersToComboBox()\n        {\n            int counter = 0;\n            foreach (GraphicsAdapter adapter in GraphicsAdapter.Adapters)\n            {\n                m_videoAdapterCombobox.AddItem(counter++, new StringBuilder(adapter.Name));\n            }\n        }\n\n        void AddDisplayModesToComboBox(int adapterIndex)\n        {\n            m_videoModeCombobox.ClearItems();\n\n            int counter = 0;\n            foreach (MyVideoModeEx videoMode in MyVideoModeManager.GetAllSupportedVideoModes(adapterIndex))\n            {\n                m_videoModeCombobox.AddItem(counter++, new StringBuilder(\n                    videoMode.Width + \" × \" + videoMode.Height + string.Format(videoMode.IsRecommended ? \" – {0} ***\" : \" – {0}\", MyTextsWrapper.Get(MyAspectRatioExList.Get(videoMode.AspectRatioEnum).TextShort))\n                ));\n            }\n        }\n\n        StringBuilder GetRecommendedAspectRatio(int adapterIndex)\n        {\n            MyAspectRatioEx recommendedAspectRatio = MyAspectRatioExList.Get(MyAspectRatioExList.GetWindowsDesktopClosestAspectRatio(adapterIndex));\n\n            StringBuilder sb = new StringBuilder();\n            sb.AppendFormat(MyTextsWrapper.Get(MyTextsWrapperEnum.RecommendedAspectRatio).ToString(), MyTextsWrapper.Get(recommendedAspectRatio.TextShort));\n            return sb;\n        }\n\n        public override bool Draw(float backgroundFadeAlpha)\n        {\n            if (base.Draw(backgroundFadeAlpha) == false) return false;\n\n            if (m_doRevert)\n            {\n                //  Revert changes - setting new video resolution must be done from Draw call, because when called\n                //  from Update while game isn't active (alt-tabed or minimized) it will fail on weird XNA exceptions\n                RevertChanges();\n                m_doRevert = false;\n            }\n\n            return true;\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/MyGuiScreenProfile.cs",
    "content": "﻿using MinerWarsMath;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Networking;\nusing MinerWars.AppCode.Game.World;\n\nnamespace MinerWars.AppCode.Game.GUI\n{\n    class MyGuiScreenProfile : MyGuiScreenBase\n    {\n        public MyGuiScreenProfile()\n            : base(new Vector2(0.5f, 0.5f), MyGuiConstants.SCREEN_BACKGROUND_COLOR, new Vector2(574f / 1600f, 850 / 1200f))\n        {\n            m_enableBackgroundFade = true;\n            bool displayLogoutButton = !(MyGuiScreenGamePlay.Static != null && (MyGuiScreenGamePlay.Static.IsGameActive() || MyGuiScreenGamePlay.Static.IsEditorActive()));\n            displayLogoutButton = displayLogoutButton && !MySteam.IsActive && (MyClientServer.LoggedPlayer != null && MyClientServer.LoggedPlayer.GetUserId() != MyPlayerLocal.OFFLINE_MODE_USERID);\n\n            m_backgroundTexture = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\BackgroundScreen\\\\ProfileBackground\", flags: TextureFlags.IgnoreQuality);\n\n            if (displayLogoutButton)\n            {\n                m_size += new Vector2(0, MyGuiConstants.BACK_BUTTON_SIZE.Y);\n            }\n\n            AddCaption(MyTextsWrapperEnum.Profile, new Vector2(0, 0.005f));\n\n            Vector2 menuPositionOrigin = new Vector2(0.0f, -m_size.Value.Y / 2.0f + 0.145f);\n            MyGuiControlButtonTextAlignment menuButtonTextAlignement = MyGuiControlButtonTextAlignment.CENTERED;\n\n            float positionMultiplierY = 0;\n\n            Controls.Add(new MyGuiControlButton(this, menuPositionOrigin + positionMultiplierY * MyGuiConstants.MENU_BUTTONS_POSITION_DELTA, MyGuiConstants.MAIN_MENU_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.UserInfo, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnInfoClick, menuButtonTextAlignement, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n            positionMultiplierY++;\n\n            if (displayLogoutButton)\n            {\n                //  Don't display LOGOUT button while player is in active game - because I don't know what to do after logout in this case and it's not needed there\n                Controls.Add(new MyGuiControlButton(this, menuPositionOrigin + positionMultiplierY * MyGuiConstants.MENU_BUTTONS_POSITION_DELTA, MyGuiConstants.MAIN_MENU_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                    MyTextsWrapperEnum.Logout, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnLogoutClick, menuButtonTextAlignement, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n                positionMultiplierY++;\n            }\n            \n            var backButton = new MyGuiControlButton(this, new Vector2(0, 0.2695f), MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE,\n                MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyGuiManager.GetConfirmButton(), null, null, MyTextsWrapperEnum.Back,\n                MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, menuButtonTextAlignement, OnBackClick,\n                true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true, true);\n            Controls.Add(backButton);\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenProfile\";\n        }\n\n        public void OnInfoClick(MyGuiControlButton sender)\n        {\n            MyGuiManager.AddScreen(new MyGuiScreenUserInfo());\n        }\n\n        public void OnLogoutClick(MyGuiControlButton sender)\n        {\n            MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.AreYouSureYouWantToLogout, MyTextsWrapperEnum.MessageBoxLogoutQuestion, MyTextsWrapperEnum.Yes, MyTextsWrapperEnum.No, OnLogoutMessageBoxCallback));\n        }\n\n        public void OnLogoutMessageBoxCallback(MyGuiScreenMessageBoxCallbackEnum callbackReturn)\n        {\n            if (callbackReturn == MyGuiScreenMessageBoxCallbackEnum.YES)\n            {\n                MyConfig.Username = \"\";\n                MyConfig.Password = \"\";\n                MyConfig.LastLoginWasSuccessful = false;\n                MyConfig.Save();\n                MyGuiManager.AddScreen(new MyGuiScreenLogoutProgress(OnLogoutProgressClosed));\n            }\n        }\n\n        public void OnLogoutProgressClosed()\n        {\n            //  User can't be in profile after logout so we close it\n            CloseScreen();\n        }\n\n        public void OnBackClick(MyGuiControlButton sender)\n        {\n            //  Just close the screen\n            CloseScreen();\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/MyGuiScreenProgressAsync.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Localization;\n\nnamespace MinerWars.AppCode.Game.GUI\n{\n    class MyGuiScreenProgressAsync: MyGuiScreenProgressBase\n    {\n        public string FriendlyName { get; set; }\n\n        private Func<IAsyncResult> m_beginAction;\n        private Action<IAsyncResult, MyGuiScreenProgressAsync> m_endAction;\n        private IAsyncResult m_asyncResult;\n\n        public MyGuiScreenProgressAsync(MyTextsWrapperEnum text, bool enableCancel, Func<IAsyncResult> beginAction, Action<IAsyncResult, MyGuiScreenProgressAsync> endAction)\n            : base(text, enableCancel)\n        {\n            FriendlyName = \"MyGuiScreenProgressAsync\";\n            m_beginAction = beginAction;\n            m_endAction = endAction;\n        }\n\n        protected override void ProgressStart()\n        {\n            m_asyncResult = m_beginAction();\n        }\n\n        public override string GetFriendlyName()\n        {\n            return FriendlyName;\n        }\n\n        public override bool Update(bool hasFocus)\n        {\n            if (base.Update(hasFocus) == false) return false;\n\n            //  Only continue if this screen is really open (not closing or closed)\n            if (GetState() != MyGuiScreenState.OPENED) return false;\n\n            if (m_asyncResult.IsCompleted)\n            {\n                m_endAction(m_asyncResult, this);\n            }\n\n            return true;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/MyGuiScreenRegister.cs",
    "content": "﻿using MinerWarsMath;\nusing MinerWarsMath.Graphics;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Managers;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.Utils;\n\nnamespace MinerWars.AppCode.Game.GUI\n{\n    class MyGuiScreenRegister : MyGuiScreenBase\n    {\n        MyGuiControlTextbox m_usernameTextbox;\n        MyGuiControlTextbox m_passwordTextbox;\n        MyGuiControlTextbox m_retypePasswordTextbox;\n        MyGuiControlTextbox m_emailTextbox;        \n        MyGuiControlCheckbox m_sendNewslettersCheckbox;\n        MyGuiControlCheckbox m_rememberCheckbox;\n        MyGuiScreenBase m_openAfterSuccesfullRegistration;\n\n\n        public MyGuiScreenRegister(MyGuiScreenBase openAfterSuccesfullRegistration, string login, string password)\n            : base(new Vector2(0.5f, 0.5f), MyGuiConstants.SCREEN_BACKGROUND_COLOR, null)\n        {\n            m_enableBackgroundFade = true;\n            m_backgroundTexture = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\BackgroundScreen\\\\VideoBackground\", flags: TextureFlags.IgnoreQuality);\n\n            m_size = new Vector2(1030f / 1600f, 897f / 1200f);\n\n            m_openAfterSuccesfullRegistration = openAfterSuccesfullRegistration;\n            //  If user presses enter in any control, we call this method. It's default ENTER.\n            this.OnEnterCallback = delegate { OnOkClick(null); };\n\n            Vector2 controlsOriginLeft = new Vector2(-m_size.Value.X / 2.0f + 0.07f, -m_size.Value.Y / 2.0f + 0.125f + 0.018f);\n            Vector2 controlsOriginRight = new Vector2(-m_size.Value.X / 2.0f + 0.32f, -m_size.Value.Y / 2.0f + 0.125f + 0.018f );\n            Vector2 checkboxControlsOriginRight = new Vector2(-m_size.Value.X / 2.0f + 0.35f, -m_size.Value.Y / 2.0f + 0.125f);\n\n            AddCaption(MyTextsWrapperEnum.Registration, new Vector2(0, 0.005f));\n\n            // Choose a username\n            Controls.Add(new MyGuiControlLabel(this, controlsOriginLeft + 0.5f * MyGuiConstants.CONTROLS_DELTA, null, MyTextsWrapperEnum.ChooseUsername, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n            m_usernameTextbox = new MyGuiControlTextbox(this, controlsOriginRight + 0.5f * MyGuiConstants.CONTROLS_DELTA + new Vector2(MyGuiConstants.TEXTBOX_MEDIUM_SIZE.X / 2.0f, 0), MyGuiControlPreDefinedSize.MEDIUM, \"\", MyMwcValidationConstants.USERNAME_LENGTH_MAX, MyGuiConstants.TEXTBOX_BACKGROUND_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiControlTextboxType.NORMAL);\n            Controls.Add(m_usernameTextbox);            \n\n            // Choose a password\n            Controls.Add(new MyGuiControlLabel(this, controlsOriginLeft + 1.5f * MyGuiConstants.CONTROLS_DELTA, null, MyTextsWrapperEnum.ChoosePassword, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n            m_passwordTextbox = new MyGuiControlTextbox(this, controlsOriginRight + 1.5f * MyGuiConstants.CONTROLS_DELTA + new Vector2(MyGuiConstants.TEXTBOX_MEDIUM_SIZE.X / 2.0f, 0), MyGuiControlPreDefinedSize.MEDIUM, \"\", MyMwcValidationConstants.PASSWORD_LENGTH_MAX, MyGuiConstants.TEXTBOX_BACKGROUND_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiControlTextboxType.PASSWORD);\n            Controls.Add(m_passwordTextbox);\n\n            // Retype password\n            Controls.Add(new MyGuiControlLabel(this, controlsOriginLeft + 2.5f * MyGuiConstants.CONTROLS_DELTA, null, MyTextsWrapperEnum.RetypePassword, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n            m_retypePasswordTextbox = new MyGuiControlTextbox(this, controlsOriginRight + 2.5f * MyGuiConstants.CONTROLS_DELTA + new Vector2(MyGuiConstants.TEXTBOX_MEDIUM_SIZE.X / 2.0f, 0), MyGuiControlPreDefinedSize.MEDIUM, \"\", MyMwcValidationConstants.PASSWORD_LENGTH_MAX, MyGuiConstants.TEXTBOX_BACKGROUND_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiControlTextboxType.PASSWORD);\n            Controls.Add(m_retypePasswordTextbox);\n\n            // Email address\n            Controls.Add(new MyGuiControlLabel(this, controlsOriginLeft + 3.5f * MyGuiConstants.CONTROLS_DELTA, null, MyTextsWrapperEnum.EmailAddress, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n            m_emailTextbox = new MyGuiControlTextbox(this, controlsOriginRight + 3.5f * MyGuiConstants.CONTROLS_DELTA + new Vector2(MyGuiConstants.TEXTBOX_MEDIUM_SIZE.X / 2.0f, 0), MyGuiControlPreDefinedSize.MEDIUM, \"\", MyMwcValidationConstants.EMAIL_LENGTH_MAX, MyGuiConstants.TEXTBOX_BACKGROUND_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiControlTextboxType.NORMAL);\n            Controls.Add(m_emailTextbox);            \n\n            // Send me newsletters\n            Controls.Add(new MyGuiControlLabel(this, (new Vector2(0.05f,0) + controlsOriginLeft) + 5.5f * MyGuiConstants.CONTROLS_DELTA, null, MyTextsWrapperEnum.SendNewsletters, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n            m_sendNewslettersCheckbox = new MyGuiControlCheckbox(this,\n             controlsOriginLeft + 5.5f * MyGuiConstants.CONTROLS_DELTA + new Vector2(MyGuiConstants.CHECKBOX_WITH_GLOW_SIZE.X / 2.0f, 0),\n             MyGuiConstants.CHECKBOX_WITH_GLOW_SIZE,\n             MyGuiManager.GetCheckboxOffTexture(), MyGuiManager.GetCheckboxOnTexture(), null,\n             true, MyGuiConstants.CHECKBOX_BACKGROUND_COLOR, true, null);\n\n\n            //m_sendNewslettersCheckbox = new MyGuiControlCheckbox(this, controlsOriginLeft + 6f * MyGuiConstants.CONTROLS_DELTA + new Vector2(MyGuiConstants.CHECKBOX_SIZE.X / 2.0f, 0), true, MyGuiConstants.CHECKBOX_BACKGROUND_COLOR);\n            Controls.Add(m_sendNewslettersCheckbox);\n\n            bool remember = MyConfig.RememberUsernameAndPassword;\n\n            // Remember me\n            Controls.Add(new MyGuiControlLabel(this, (new Vector2(0.05f, 0) + controlsOriginLeft) + 6.5f * MyGuiConstants.CONTROLS_DELTA, null, MyTextsWrapperEnum.RememberMe, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n            m_rememberCheckbox = new MyGuiControlCheckbox(this,\n                 controlsOriginLeft + 6.5f * MyGuiConstants.CONTROLS_DELTA + new Vector2(MyGuiConstants.CHECKBOX_WITH_GLOW_SIZE.X / 2.0f, 0),\n                 MyGuiConstants.CHECKBOX_WITH_GLOW_SIZE,\n                 MyGuiManager.GetCheckboxOffTexture(), MyGuiManager.GetCheckboxOnTexture(), null,\n                 remember, MyGuiConstants.CHECKBOX_BACKGROUND_COLOR, true, null);\n            Controls.Add(m_rememberCheckbox);\n            /*\n            // Buttons APPLY and BACK\n            Vector2 buttonDelta = new Vector2(0.05f, m_size.Value.Y / 2.0f - MyGuiConstants.MESSAGE_BOX_BORDER_AREA_Y - MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE.Y / 2.0f);\n            Controls.Add(new MyGuiControlButton(this, new Vector2(-buttonDelta.X, buttonDelta.Y), MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.Ok, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnOkClick, MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n            Controls.Add(new MyGuiControlButton(this, new Vector2(+buttonDelta.X, buttonDelta.Y), MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.Cancel, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnCancelClick, MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n            */\n\n            var okButton = new MyGuiControlButton(this, new Vector2(-0.1379f, 0.2558f), MyGuiConstants.OK_BUTTON_SIZE,\n                       MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                       MyGuiManager.GetInventoryScreenButtonTexture(), null, null, MyTextsWrapperEnum.Ok,\n                       MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, MyGuiControlButtonTextAlignment.CENTERED, OnOkClick,\n                       true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true, true);\n\n            Controls.Add(okButton);\n\n            var cancelButton = new MyGuiControlButton(this, new Vector2(0.1418f, 0.2558f), MyGuiConstants.OK_BUTTON_SIZE,\n           MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n           MyGuiManager.GetInventoryScreenButtonTexture(), null, null, MyTextsWrapperEnum.Cancel,\n           MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, MyGuiControlButtonTextAlignment.CENTERED, OnCancelClick,\n           true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true, true);\n\n            Controls.Add(cancelButton);\n\n\n            if (login != null) \n            {\n                m_usernameTextbox.Text = login;\n            }\n            if (password != null) \n            {\n                m_passwordTextbox.Text = password;\n                m_retypePasswordTextbox.Text = password;\n            }\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenRegister\";\n        }\n\n        public void OnOkClick(MyGuiControlButton sender)\n        {\n            MyTextsWrapperEnum? errorMessage = ValidateInput();\n            if (errorMessage.HasValue)\n            {\n                MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, errorMessage.Value,\n                    MyTextsWrapperEnum.MessageBoxCaptionError, MyTextsWrapperEnum.Ok, null));\n            }\n            else\n            {\n                MyGuiScreenRegisterProgress registerProgressScreen = new MyGuiScreenRegisterProgress(m_usernameTextbox.Text, m_passwordTextbox.Text, m_emailTextbox.Text, m_sendNewslettersCheckbox.Checked, m_openAfterSuccesfullRegistration, this);\n                MyGuiManager.AddScreen(registerProgressScreen);\n            }\n        }\n\n        public void OnCancelClick(MyGuiControlButton sender)\n        {\n            //  Just close the screen, ignore any change\n            CloseScreen();\n        }\n\n        private MyTextsWrapperEnum? ValidateInput()\n        {\n            MyTextsWrapperEnum? errorMessage = null;\n\n            if (MyMwcUtils.IsValidUsernameFormat(m_usernameTextbox.Text) == false)\n            {\n                errorMessage = MyTextsWrapperEnum.ValidationUsername;\n            }\n            else if (MyMwcUtils.IsValidPasswordFormat(m_passwordTextbox.Text) == false)\n            {\n                errorMessage = MyTextsWrapperEnum.ValidationPasswordWrong;\n            }\n            else if (MyMwcUtils.IsValidEmailAddress(m_emailTextbox.Text) == false)\n            {\n                errorMessage = MyTextsWrapperEnum.ValidationEmailWrong;\n            }\n            else if (m_passwordTextbox.Text != m_retypePasswordTextbox.Text)\n            {\n                errorMessage = MyTextsWrapperEnum.ValidationPasswordsDoNotMatch;\n            }            \n            return errorMessage;\n        }\n\n        public override bool Draw(float backgroundFadeAlpha)\n        {\n            if (base.Draw(backgroundFadeAlpha) == false) return false;\n\n            Color textColor = new Color(MyGuiConstants.LABEL_TEXT_COLOR);\n            MyGuiManager.DrawString(MyGuiManager.GetFontMinerWarsBlue(), MyTextsWrapper.Get(MyTextsWrapperEnum.RegistrationInfo), new Vector2(0.50f, 0.25f), 0.75f * 0.8f,\n                textColor, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_BOTTOM);\n            MyGuiManager.DrawString(MyGuiManager.GetFontMinerWarsBlue(), MyTextsWrapper.Get(MyTextsWrapperEnum.FormAgreement1), new Vector2(0.50f, 0.67f), 0.75f * 0.8f,\n                textColor, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_BOTTOM);\n            MyGuiManager.DrawString(MyGuiManager.GetFontMinerWarsBlue(), MyTextsWrapper.Get(MyTextsWrapperEnum.FormAgreement2), new Vector2(0.50f, 0.69f), 0.75f * 0.8f,\n                textColor, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_BOTTOM);\n            \n            return true;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/MyGuiScreenRegisterProgress.cs",
    "content": "﻿using MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.World;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.App;\nusing System.Diagnostics;\nusing MinerWars.AppCode.Networking.MasterService;\nusing System;\nusing System.ServiceModel;\n\n//  This screen is displayed during we wait for register response. It runs in main thread (no background thread needed in this case).\n\nnamespace MinerWars.AppCode.Game.GUI\n{\n    enum MyGuiScreenRegisterProgressPhases\n    {\n        NOTHING,\n        WAITING_FOR_REGISTER_RESPONSE,\n    }\n\n    class MyGuiScreenRegisterProgress : MyGuiScreenMasterServiceCallProgress\n    {\n        MyGuiScreenRegisterProgressPhases m_phase;\n        int m_lastTimeMessage;\n\n        public static MyGuiScreenRegisterProgress CurrentScreen = null;    //  This is always filled with reference to actual instance of this screen. If there isn't, it's null.\n        MyGuiScreenBase m_openAfterSuccesfullRegistration;\n        MyGuiScreenBase m_parentScreen;\n        string m_playerName;\n        string m_password;\n        string m_email;\n        bool m_sendMeNewsletters;\n\n        public MyGuiScreenRegisterProgress(string playerName, string password, string email, bool sendMeNewsletters, MyGuiScreenBase openAfterSuccesfullRegistration, MyGuiScreenBase parentScreen)\n            : base(MyTextsWrapperEnum.RegistrationInProgressPleaseWait, true)\n        {\n            CurrentScreen = this;\n            m_playerName = playerName;\n            m_password = password;\n            m_email = email;\n            m_sendMeNewsletters = sendMeNewsletters;\n            m_openAfterSuccesfullRegistration = openAfterSuccesfullRegistration;\n            m_parentScreen = parentScreen;\n\n            m_phase = MyGuiScreenRegisterProgressPhases.NOTHING;\n            m_lastTimeMessage = MyMinerGame.TotalTimeInMilliseconds;\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenRegisterProgress\";\n        }\n\n        public override void LoadContent()\n        {\n            m_phase = MyGuiScreenRegisterProgressPhases.WAITING_FOR_REGISTER_RESPONSE;\n            MyMasterServiceClient.SetCredentials(MyMwcNetworkingConstants.WCF_MS_PUBLIC_USERNAME, MyMwcNetworkingConstants.WCF_MS_PUBLIC_PASSWORD);\n\n            // This must be last, call progress start\n            base.LoadContent();\n        }\n\n        protected override void ServiceProgressStart(MyMasterServiceClient client)\n        {\n            AddAction(client.BeginRegister(m_playerName, MyMwcUtils.GetHashedPassword(m_password), m_email, m_sendMeNewsletters, null, client), OnRegister);\n        }\n        \n        void OnRegister(IAsyncResult result, MyMasterServiceClient client)\n        {\n            try\n            {\n                client.EndRegister(result);\n                client.Close();\n                HandleRegister();\n            }\n            catch (FaultException<MyRegistrationFault> fault)\n            {\n                HandleRegisterError(fault.Detail.ErrorCode);\n            }\n            catch (Exception exception)\n            {\n                client.Abort();\n                MyMwcLog.WriteLine(exception);\n                HandleRegisterError(MyMwcRegisterResponseResultEnum.UNKNOWN_ERROR);\n            }\n            CloseScreen();\n        }\n\n        void HandleRegister()\n        {\n            if (m_parentScreen != null)\n            {\n                m_parentScreen.CloseScreen();\n            }\n\n            if (m_openAfterSuccesfullRegistration != null)\n            {\n                if (m_openAfterSuccesfullRegistration is MyGuiScreenLogin)\n                {\n                    MyGuiScreenLogin loginScreen = (MyGuiScreenLogin)m_openAfterSuccesfullRegistration;\n                    loginScreen.SetUsernameAndPassword(m_playerName, m_password);\n                    loginScreen.OnOkClick(null);\n                }\n            }\n        }\n\n        void HandleRegisterError(MyMwcRegisterResponseResultEnum faultCode)\n        {\n            MyMwcLog.WriteLine(\"Error registering. Fault code: \" + (int)faultCode + \", Fault code as string: \" + faultCode.ToString());\n            MyTextsWrapperEnum? errorMessage = null;\n            if (faultCode == MyMwcRegisterResponseResultEnum.USERNAME_FORMAT_INVALID)\n            {\n                errorMessage = MyTextsWrapperEnum.ValidationUsername;\n            }\n            else if (faultCode == MyMwcRegisterResponseResultEnum.PASSWORD_FORMAT_INVALID)\n            {\n                errorMessage = MyTextsWrapperEnum.ValidationPasswordWrong;\n            }\n            else if (faultCode == MyMwcRegisterResponseResultEnum.EMAIL_FORMAT_INVALID)\n            {\n                errorMessage = MyTextsWrapperEnum.ValidationEmailWrong;\n            }\n            else if (faultCode == MyMwcRegisterResponseResultEnum.USERNAME_ALREADY_USED)\n            {\n                errorMessage = MyTextsWrapperEnum.ValidationUsernameAlreadyUsed;\n            }\n            else if (faultCode == MyMwcRegisterResponseResultEnum.WRONG_CLIENT_VERSION)\n            {\n                errorMessage = MyTextsWrapperEnum.CantLoginClientVersionIsWrong;\n            }\n            else // MyMwcRegisterResponseResultEnum.UNKNOWN_ERROR or anything else\n            {\n                errorMessage = MyTextsWrapperEnum.CantRegisterServerIsUnavailable;\n            }\n\n            if (errorMessage.HasValue)\n            {\n                MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, errorMessage.Value,\n                    MyTextsWrapperEnum.MessageBoxCaptionError, MyTextsWrapperEnum.Ok, null));\n            }\n        }\n\n        public override bool CloseScreen()\n        {\n            bool ret = base.CloseScreen();\n\n            if (ret == true)\n            {\n                CurrentScreen = null;\n            }\n\n            return ret;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/MyGuiScreenRenameCheckpoint.cs",
    "content": "﻿using MinerWarsMath;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.GUI.ScreenEditor;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Utils;\nusing System;\n\nnamespace MinerWars.AppCode.Game.GUI\n{\n    delegate void RenameHandler(string oldText, string newText, MyGuiScreenBase renameScreen);\n\n    class MyGuiScreenRenameCheckpoint : MyGuiScreenEditorDialogBase\n    {\n        private static readonly int MAXIMUM_CHECKPOINT_NAME_LENGTH = 128;\n\n        MyGuiControlTextbox m_nameTextbox;\n        string m_oldName;\n\n        RenameHandler m_renameHandler;\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenRenameCheckpoint\";\n        }\n\n        public MyGuiScreenRenameCheckpoint(string changeThis, RenameHandler renameHandler)\n            : base(new Vector2(0.5f, 0.5f), new Vector2(0.33f, 0.85f))\n        {\n            m_oldName = changeThis;\n            m_renameHandler = renameHandler;\n            m_size = MyGuiConstants.TEXTBOX_MEDIUM_SIZE +\n                           new Vector2(MyGuiConstants.MESSAGE_BOX_BORDER_AREA_X * 2,\n                                       0.1f + MyGuiConstants.MESSAGE_BOX_BORDER_AREA_Y * 2 +\n                                       MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE.Y);\n\n            AddCaption(MyTextsWrapperEnum.RenameCheckpoint, MyGuiConstants.LABEL_TEXT_COLOR);\n\n            m_nameTextbox = new MyGuiControlTextbox(this,\n                new Vector2(0, 0.1f + MyGuiConstants.TEXTBOX_MEDIUM_SIZE.Y / 2 - m_size.Value.Y / 2),\n                MyGuiControlPreDefinedSize.MEDIUM,\n                changeThis, MAXIMUM_CHECKPOINT_NAME_LENGTH,\n                MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiControlTextboxType.NORMAL);\n\n            Controls.Add(m_nameTextbox);\n            AddOkAndCancelButtonControls();\n        }\n\n        public override void HandleInput(MyGuiInput input, bool receivedFocusInThisUpdate)\n        {\n            base.HandleInput(input, receivedFocusInThisUpdate);\n        }\n\n        protected override void OnOkClick(MyGuiControlButton sender)\n        {\n            if (!string.IsNullOrEmpty(m_nameTextbox.Text) /* all OK */)\n            {\n                m_renameHandler(m_oldName, m_nameTextbox.Text, this);\n                base.OnOkClick(sender);\n            }\n            else\n            {\n                // TODO: change texts\n                MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.MessageBoxCaptionError, MyTextsWrapperEnum.MessageBoxCaptionError, MyTextsWrapperEnum.Ok, null));\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/MyGuiScreenSaveCheckpoint.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.GUI.ScreenEditor;\nusing MinerWars.AppCode.Game.Managers.Session;\n\nnamespace MinerWars.AppCode.Game.GUI\n{\n    class MyGuiScreenSaveCheckpoint : MyGuiScreenEditorDialogBase\n    {\n        private static readonly int MAXIMUM_CHECKPOINT_NAME_LENGTH = 32;\n        private MyGuiControlTextbox m_nameTextbox;\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenSaveCheckpoint\";\n        }\n\n        public MyGuiScreenSaveCheckpoint()\n            : base(new Vector2(0.5f, 0.5f), new Vector2(0.33f, 0.85f))\n        {\n            m_size = MyGuiConstants.TEXTBOX_MEDIUM_SIZE +\n                           new Vector2(MyGuiConstants.MESSAGE_BOX_BORDER_AREA_X * 2,\n                                       0.1f + MyGuiConstants.MESSAGE_BOX_BORDER_AREA_Y * 2 +\n                                       MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE.Y);\n\n            AddCaption(MyTextsWrapperEnum.SaveCheckpoint, MyGuiConstants.LABEL_TEXT_COLOR);\n\n            m_nameTextbox = new MyGuiControlTextbox(this,\n                new Vector2(0, 0.1f + MyGuiConstants.TEXTBOX_MEDIUM_SIZE.Y / 2 - m_size.Value.Y / 2),\n                MyGuiControlPreDefinedSize.MEDIUM,\n                string.Empty, MAXIMUM_CHECKPOINT_NAME_LENGTH,\n                MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiControlTextboxType.NORMAL);\n\n            Controls.Add(m_nameTextbox);\n            AddOkAndCancelButtonControls();\n        }\n\n        public override void HandleInput(MyGuiInput input, bool receivedFocusInThisUpdate)\n        {\n            base.HandleInput(input, receivedFocusInThisUpdate);\n        }\n\n        protected override void OnOkClick(MyGuiControlButton sender)\n        {\n            base.OnOkClick(sender);\n\n            MySession.Static.SaveCheckpointTemplate(m_nameTextbox.Text);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/MyGuiScreenSectorLocation.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing Microsoft.Xna.Framework;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.GUI.Core;\n\nnamespace MinerWars.AppCode.Game.GUI\n{\n    class MyGuiScreenSectorLocation : MyGuiScreenBase\n    {\n        public override string GetFriendlyName()\n        {\n            return \"Map\";\n        }\n\n        public MyGuiScreenSectorLocation()\n            : base(new Vector2(.5f, .5f), MyGuiConstants.SCREEN_BACKGROUND_COLOR, new Vector2(0.35f, 0.5f))\n        {\n            AddCaption(MyTextsWrapperEnum.SectorName, Color.Yellow.ToVector4());\n\n            m_backgroundColor = MyGuiConstants.SCREEN_BACKGROUND_COLOR;\n            m_enableBackgroundFade = true;\n            m_canHaveFocus = true;\n            m_closeOnEsc = true;\n            m_isTopMostScreen = true;\n            m_drawEvenWithoutFocus = true;\n\n\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/MyGuiScreenSecurityControlHUB.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Entities.SubObjects;\nusing MinerWars.AppCode.Game.Missions;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Prefabs;\nusing MinerWars.AppCode.Game.GUI.Prefabs;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Localization;\nusing System.Diagnostics;\nusing MinerWars.AppCode.Game.Entities.Prefabs;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Sessions;\n\nnamespace MinerWars.AppCode.Game.GUI\n{\n    class MyGuiScreenSecurityControlHUB : MyGuiSceenEntityUseBase\n    {\n        private MyPrefabSecurityControlHUB m_prefabSecurityControlHUB;\n        private MySmallShip m_useBy;\n\n        private MyGuiControlList m_entitiesGuiList;\n        List<MyGuiControlEntityUse> m_entitiesGui;\n\n        public MyGuiScreenSecurityControlHUB(MySmallShip useBy, MyPrefabSecurityControlHUB prefabSecurityControlHUB)\n            : base(new Vector2(0.505f, 0.5f), MyGuiConstants.SCREEN_BACKGROUND_COLOR, new Vector2(0.57f, 0.96f), true, MyGuiManager.GetHubBackground())\n        {\n            AddCaption(MyTextsWrapperEnum.SecurityControlHUB, new Vector2(0, 0.005f));\n\n            m_prefabSecurityControlHUB = prefabSecurityControlHUB;\n            m_useBy = useBy;\n            m_entitiesGui = new List<MyGuiControlEntityUse>();\n            RecreateControls(true);\n\n            /*\n            Controls.Add(new MyGuiControlButton(this, new Vector2(0f, 0.45f), MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.Exit, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnExitClick,\n                MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n             * */\n\n            MyGuiScreenGamePlay.Static.ReleasedControlOfEntity += OnGameReleasedControlOfEntity;\n            MyGuiScreenGamePlay.Static.RollLeftPressed += OnSwitchPrevious;\n            MyGuiScreenGamePlay.Static.RollRightPressed += OnSwitchNext;\n            MySession.PlayerShip.OnDie += OnPlayerShipDie;\n            MySession.Static.Player.AliveChanged += Player_AliveChanged;\n            m_prefabSecurityControlHUB.OnEntityDisconnected += m_prefabSecurityControlHUB_OnEntityDisconnected;\n        }\n\n        void Player_AliveChanged(World.MyPlayer player)\n        {\n            if (player.IsDead())\n            {\n                CloseScreenNow();\n            }\n        }\n\n        void m_prefabSecurityControlHUB_OnEntityDisconnected(IMyUseableEntity obj)\n        {\n            RecreateControls(false);\n        }\n\n        public int GetNumberOfControllableEntities()\n        {\n            int count = 0;\n\n            foreach (var entityUse in m_entitiesGui)\n            {\n                var currentEntityControl = entityUse;\n                if ((currentEntityControl is MyGuiControlPrefabCameraUse ||\n                     currentEntityControl is MyGuiControlPrefabLargeWeaponUse) &&\n                    currentEntityControl.Entity.Enabled &&\n                    !currentEntityControl.Entity.Closed)\n                {\n                    count++;\n                }\n            }\n\n            return count;\n        }\n\n        bool IsControlledEntity(MyGuiControlEntityUse entityControl)\n        {\n            return MyGuiScreenGamePlay.Static.ControlledEntity == entityControl.Entity;\n        }\n\n        void OnSwitchPrevious()\n        {\n            var controlledIndex = m_entitiesGui.FindIndex(IsControlledEntity);\n\n            if (controlledIndex != -1)\n            {\n                MyEntity oldControlledEntity = m_entitiesGui[controlledIndex].Entity;\n\n                var index = controlledIndex;\n                MyGuiControlEntityUse currentEntityControl = null;\n\n                bool foundCandidate;\n\n                do\n                {\n                    index--;\n                    if (index < 0)\n                    {\n                        index = m_entitiesGui.Count - 1;\n                    }\n                    if (index == controlledIndex)\n                    {\n                        break;\n                    }\n                    currentEntityControl = m_entitiesGui[index];\n\n                    foundCandidate =\n                        (currentEntityControl is MyGuiControlPrefabCameraUse && oldControlledEntity is MyPrefabCamera ||\n                         currentEntityControl is MyGuiControlPrefabLargeWeaponUse && oldControlledEntity is MyPrefabLargeWeapon\n                        ) &&\n                        currentEntityControl.Entity.Enabled &&\n                        !currentEntityControl.Entity.Closed &&\n                        !currentEntityControl.IsControlledByOtherPlayer();\n\n                } while (!foundCandidate);\n\n                if (index != controlledIndex && currentEntityControl != null)\n                {\n                    SwitchControlToEntity(oldControlledEntity, currentEntityControl.Entity);\n                }\n            }\n        }\n\n        void OnSwitchNext()\n        {\n            var controlledIndex = m_entitiesGui.FindIndex(IsControlledEntity);\n\n            if (controlledIndex != -1)\n            {\n                MyEntity oldControlledEntity = m_entitiesGui[controlledIndex].Entity;\n\n                var index = controlledIndex;\n                MyGuiControlEntityUse currentEntityControl = null;\n\n                bool foundCandidate;\n\n                do\n                {\n                    index++;\n                    if (index >= m_entitiesGui.Count)\n                    {\n                        index = 0;\n                    }\n                    if (index == controlledIndex)\n                    {\n                        break;\n                    }\n\n                    currentEntityControl = m_entitiesGui[index];\n\n                    foundCandidate =\n                        (currentEntityControl is MyGuiControlPrefabCameraUse && oldControlledEntity is MyPrefabCamera ||\n                         currentEntityControl is MyGuiControlPrefabLargeWeaponUse && oldControlledEntity is MyPrefabLargeWeapon\n                        ) &&\n                        currentEntityControl.Entity.Enabled &&\n                        !currentEntityControl.Entity.Closed &&\n                        !currentEntityControl.IsControlledByOtherPlayer();\n\n                } while (!foundCandidate);\n\n                if (index != controlledIndex && currentEntityControl != null)\n                {\n                    SwitchControlToEntity(oldControlledEntity, currentEntityControl.Entity);\n                }\n            }\n        }\n\n        void SwitchControlToEntity(MyEntity oldControlledEntity, MyEntity entity)\n        {\n            Debug.Assert(entity.EntityId.HasValue, \"EntityID cannot be null\");\n\n            if (MyMultiplayerGameplay.IsRunning)\n            {\n                MyMultiplayerGameplay.Static.LockReponse = (e, success) =>\n                {\n                    MyMultiplayerGameplay.Static.LockReponse = null;\n                    if (entity != e)\n                    {\n                        Debug.Fail(\"Something went wrong, locked different entity\");\n                        MyMultiplayerGameplay.Static.Lock(e, false);\n                        return;\n                    }\n\n                    if (success)\n                    {\n                        MyMultiplayerGameplay.Static.Lock(MyGuiScreenGamePlay.Static.ControlledEntity, false);\n                        MyMultiplayerGameplay.Static.Lock(oldControlledEntity, false);\n                        Closed += (s) =>\n                        {\n                            if (!entity.Closed)\n                            {\n                                MyMultiplayerGameplay.Static.Lock(entity, false);\n                            }\n                        };\n\n                        SwitchControlToEntityInternal(entity);\n                    }\n                };\n                MyMultiplayerGameplay.Static.Lock(entity, true);\n            }\n            else\n            {\n                SwitchControlToEntityInternal(entity);\n            }\n        }\n\n        static void SwitchControlToEntityInternal(MyEntity entity)\n        {\n            var prefabCamera = entity as MyPrefabCamera;\n            if (prefabCamera != null)\n            {\n                MyGuiScreenGamePlay.Static.SwitchControlOfCamera(prefabCamera);\n            }\n\n            var prefabLargeWeapon = entity as MyPrefabLargeWeapon;\n            if (prefabLargeWeapon != null)\n            {\n                MyGuiScreenGamePlay.Static.SwitchControlOfLargeWeapon(prefabLargeWeapon);\n            }\n        }\n\n        public override void RecreateControls(bool contructor)\n        {\n            base.RecreateControls(contructor);\n\n            Controls.Clear();\n\n            m_entitiesGuiList = new MyGuiControlList(\n                this,\n                new Vector2(0.0034f, -0.030f),\n                new Vector2(0.489f, 0.65f),\n                Vector4.Zero,\n                null,//MyTextsWrapper.Get(MyTextsWrapperEnum.SecurityControlHUB),\n                MyGuiManager.GetBlankTexture(),\n                new Vector2(0.01f, 0.0f));\n\n            if (!contructor) \n            {\n                foreach (var entityGui in m_entitiesGui) \n                {\n                    entityGui.ClearAfterRemove();\n                }\n            }\n            m_entitiesGui.Clear();\n            foreach (IMyUseableEntity connectedEntity in m_prefabSecurityControlHUB.ConnectedEntities)\n            {\n                MyEntity entity = connectedEntity as MyEntity;\n\n                if (!entity.Visible)\n                    continue;\n                Debug.Assert((connectedEntity.UseProperties.UseType & MyUseType.FromHUB) != 0);\n                IMyHasGuiControl entityWithGuiControl = connectedEntity as IMyHasGuiControl;\n                Debug.Assert(entityWithGuiControl != null);\n                // if entity is not hacked and could be hacked from HUB, then try hack it\n                if (!connectedEntity.UseProperties.IsHacked &&\n                    (connectedEntity.UseProperties.HackType & MyUseType.FromHUB) != 0)\n                {\n                    if (m_useBy.HackingTool != null &&\n                        m_useBy.HackingTool.HackingLevel >= connectedEntity.UseProperties.HackingLevel)\n                    {\n                        connectedEntity.UseProperties.IsHacked = true;\n                    }\n                }\n                MyGuiControlEntityUse entityGui = entityWithGuiControl.GetGuiControl(m_entitiesGuiList);\n                entityGui.ParentScreen = this;\n                m_entitiesGui.Add(entityGui);\n            }\n            m_entitiesGuiList.InitControls(m_entitiesGui);\n            Controls.Add(m_entitiesGuiList);\n\n            var exitButton = new MyGuiControlButton(\n                this,\n                new Vector2(0f, 0.3740f),\n                new Vector2(0.161f, 0.0637f),\n                Vector4.One,\n                MyGuiManager.GetConfirmButton(),\n                null,\n                null,\n                MyTextsWrapperEnum.Exit,\n                MyGuiConstants.BUTTON_TEXT_COLOR,\n                MyGuiConstants.BUTTON_TEXT_SCALE,\n                MyGuiControlButtonTextAlignment.CENTERED,\n                OnExitClick,\n                true,\n                MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER,\n                true,\n                true);\n            Controls.Add(exitButton);\n        }\n\n        void OnGameReleasedControlOfEntity(MyEntity entity)\n        {\n            bool isMyEntity = false;\n            foreach (var entityUse in m_entitiesGui)\n            {\n                if (entityUse.Entity == entity)\n                {\n                    isMyEntity = true;\n                }\n            }\n\n            if (isMyEntity)\n            {\n                // Can be closed (or closing) when player is dead\n                Debug.Assert(m_state == MyGuiScreenState.HIDDEN || m_state == MyGuiScreenState.HIDING || m_state == MyGuiScreenState.CLOSED || m_state == MyGuiScreenState.CLOSING);\n\n                RecreateControls(false);\n                CanBeUnhidden = true;\n                this.UnhideScreen();\n            }\n        }\n\n        protected override void OnClosed()\n        {\n            if (MyGuiScreenGamePlay.Static != null)\n            {\n                MyGuiScreenGamePlay.Static.ReleasedControlOfEntity -= OnGameReleasedControlOfEntity;\n                MyGuiScreenGamePlay.Static.RollLeftPressed -= OnSwitchPrevious;\n                MyGuiScreenGamePlay.Static.RollRightPressed -= OnSwitchNext;\n            }\n            if (MySession.PlayerShip != null)\n            {\n                MySession.PlayerShip.OnDie -= OnPlayerShipDie;\n            }\n            if (MySession.Static.Player != null)\n            {\n                MySession.Static.Player.AliveChanged -= Player_AliveChanged;\n            }\n            m_prefabSecurityControlHUB.OnEntityDisconnected -= m_prefabSecurityControlHUB_OnEntityDisconnected;\n\n            if (MyGuiScreenGamePlay.Static != null && MyGuiScreenGamePlay.Static.ActiveSecurityHubScreen == this)\n            {\n                MyGuiScreenGamePlay.Static.ActiveSecurityHubScreen = null;\n            }\n\n            base.OnClosed();\n        }\n\n        private void OnExitClick(MyGuiControlButton sender)\n        {\n            CloseScreen();\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenSecurityControlHUB\";\n        }\n\n        void OnPlayerShipDie(MyEntity entity, MyEntity killer)\n        {\n            CloseScreenNow();\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/MyGuiScreenSelectEditor.cs",
    "content": "﻿using MinerWarsMath;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.World;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing SysUtils.Utils;\n\nnamespace MinerWars.AppCode.Game.GUI\n{\n    using System;\n    using System.Collections.Generic;\n    using System.Diagnostics;\n    using System.Linq;\n    using System.ServiceModel;\n    using App;\n    using CommonLIB.AppCode.Utils;\n    using MinerWars.AppCode.Game.Managers.Session;\n\n    /// <summary>\n    /// \n    /// </summary>\n    class MyGuiScreenSelectEditor : MyGuiScreenBase \n    {\n        MyGuiScreenBase m_closeAfterSuccessfulEnter;\n\n        /// <summary>\n        /// Tmp old\n        /// </summary>\n        private MyGuiScreenGamePlay gamePlayScreen;\n\n        /// <summary>\n        /// Selected session\n        /// </summary>\n        private MySession session;\n\n        public MyGuiScreenSelectEditor(MyGuiScreenBase closeAfterSuccessfulEnter)\n            : base(new Vector2(0.5f, 0.5f), MyGuiConstants.SCREEN_BACKGROUND_COLOR, new Vector2(574f/1600f, 695/1200f), false, MyGuiManager.GetSelectEditorBackground())\n        {\n            m_enableBackgroundFade = true;\n            m_closeAfterSuccessfulEnter = closeAfterSuccessfulEnter;\n\n            AddCaption(MyTextsWrapperEnum.Editor, new Vector2(0, 0.005f));\n        }\n\n        //  Buttons must be created here because in this screen's constructor we might have not been logged in\n        public override void LoadContent()\n        {\n            base.LoadContent();\n\n            Vector2 menuPositionOrigin = new Vector2(0.0f, -m_size.Value.Y / 2.0f + 0.145f);\n            const MyGuiControlButtonTextAlignment menuButtonTextAlignement = MyGuiControlButtonTextAlignment.CENTERED;\n\n            MyTextsWrapperEnum? yourSectorsButtonForbidden = null;\n            MyTextsWrapperEnum? storySectorsButtonsForbidden = null;\n            MyTextsWrapperEnum? mmoSectorsButtonsForbidden = null;\n            if (MyClientServer.LoggedPlayer != null)\n            {\n                //if (true/*(MyClientServer.LoggedPlayer.GetCanAccessDemo() == false) && (MyClientServer.LoggedPlayer.GetCanAccessStory() == false)*/)\n                //{\n                //    yourSectorsButtonForbidden = MyTextsWrapperEnum.NotAccessRightsToTestBuild;\n                //}\n\n                if (!MyClientServer.LoggedPlayer.GetCanAccessEditorForStory())\n                {\n                    storySectorsButtonsForbidden = MyTextsWrapperEnum.AvailableOnlyForAdministrators;\n                }\n\n                if (true /*MyClientServer.LoggedPlayer.GetCanAccessEditorForMMO() == false*/)\n                {\n                    mmoSectorsButtonsForbidden = MyTextsWrapperEnum.AvailableOnlyForAdministrators;\n                }\n            }\n\n            //  Buttons My Sectors and Friends Sectors\n            Controls.Add(new MyGuiControlButton(this, menuPositionOrigin + 0 * MyGuiConstants.MENU_BUTTONS_POSITION_DELTA,\n                MyGuiConstants.MAIN_MENU_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.SandboxSectors, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE,\n                OnSandboxSectorsClick, menuButtonTextAlignement, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER,\n                true, storySectorsButtonsForbidden));\n\n            Controls.Add(new MyGuiControlButton(this, menuPositionOrigin + 1 * MyGuiConstants.MENU_BUTTONS_POSITION_DELTA,\n                MyGuiConstants.MAIN_MENU_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.YourSectors, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE,\n                OnYourSectorsClick, menuButtonTextAlignement, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER,\n                true, yourSectorsButtonForbidden));\n\n            Controls.Add(new MyGuiControlButton(this, menuPositionOrigin + 2 * MyGuiConstants.MENU_BUTTONS_POSITION_DELTA,\n                MyGuiConstants.MAIN_MENU_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.StorySectors, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE,\n                OnStorySectorsClick, menuButtonTextAlignement, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER,\n                true, storySectorsButtonsForbidden));\n\n            Controls.Add(new MyGuiControlButton(this, menuPositionOrigin + 3 * MyGuiConstants.MENU_BUTTONS_POSITION_DELTA,\n                MyGuiConstants.MAIN_MENU_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.MmoSectors, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE,\n                OnMmoSectorsClick, menuButtonTextAlignement, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER,\n                true, mmoSectorsButtonsForbidden));\n            var exitButton = new MyGuiControlButton(this, new Vector2(0,0.1460f), MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE,\n                MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyGuiManager.GetConfirmButton(), null, null, MyTextsWrapperEnum.Back,\n                MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, menuButtonTextAlignement, OnBackClick,\n                true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true, true);\n            Controls.Add(exitButton);\n\n\n            /*\n\n            Controls.Add(new MyGuiControlButton(this, menuPositionOrigin + 3.5f * MyGuiConstants.MENU_BUTTONS_POSITION_DELTA, MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.Back, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnBackClick, menuButtonTextAlignement, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n             * */\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenSelectEditor\";\n        }\n\n        public void OnYourSectorsClick(MyGuiControlButton sender)\n        {\n            MyMwcLog.WriteLine(\"OnYourSectorsClick - Start\"); \n            Run(MyMwcStartSessionRequestTypeEnum.EDITOR_SANDBOX, false);\n            MyMwcLog.WriteLine(\"OnYourSectorsClick - End\"); \n        }\n\n        public void OnStorySectorsClick(MyGuiControlButton sender)\n        {\n            MyMwcLog.WriteLine(\"OnStorySectorsClick - Start\"); \n            Run(MyMwcStartSessionRequestTypeEnum.EDITOR_STORY, true);\n            MyMwcLog.WriteLine(\"OnStorySectorsClick - End\"); \n        }\n\n        public void OnSandboxSectorsClick(MyGuiControlButton sender)\n        {\n            MyMwcLog.WriteLine(\"OnSandboxSectorsClick - Start\");\n            Run(MyMwcStartSessionRequestTypeEnum.EDITOR_SANDBOX, true);\n            MyMwcLog.WriteLine(\"OnSectorsClick - End\"); \n        }\n\n        public void OnMmoSectorsClick(MyGuiControlButton sender)\n        {\n            MyMwcLog.WriteLine(\"OnMmoSectorsClick - Start\"); \n            Run(MyMwcStartSessionRequestTypeEnum.EDITOR_MMO, true);\n            MyMwcLog.WriteLine(\"OnMmoSectorsClick - End\"); \n        }\n\n        //  TODO: This is just temporary method that launches editor. Later must be differentiate according to what user picked\n        void Run(MyMwcStartSessionRequestTypeEnum sessionRequestType, bool global)\n        {\n            MyMwcSectorTypeEnum sectorType = MyMwcClientServer.GetSectorTypeFromSessionType(sessionRequestType);\n            MyGuiManager.AddScreen(new MyGuiScreenLoadSectorIdentifiersProgress(sectorType, global, new MyGuiScreenEnterSectorMap(m_closeAfterSuccessfulEnter,\n                sessionRequestType, MyTextsWrapperEnum.StartEditorInProgressPleaseWait, MyConfig.LastSandboxSector)));\n        }\n\n        public void OnBackClick(MyGuiControlButton sender)\n        {\n            CloseScreen();\n        }\n     }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/MyGuiScreenSelectSandboxProgress.cs",
    "content": "﻿using System;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.GUI.ScreenEditor;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.World;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing System.Collections.Generic;\nusing MinerWars.AppCode.Networking.SectorService;\n\n//  IMPORTANT: THIS SCREEN CAN'T BE CANCELED BY ESC OR CANCEL BUTTON BECAUSE THAT WOULD INTERFERE THE PROCESS ON SERVER\n\nnamespace MinerWars.AppCode.Game.GUI\n{\n    class MyGuiScreenSelectSandboxProgress : MyGuiScreenSectorServiceCallProgress\n    {\n        public delegate void AddResponseDelegate(List<MyMwcSectorIdentifier> sectorIdentifiers, List<MyMwcUserDetail> userDetails);\n\n        MyMwcSelectSectorRequestTypeEnum m_selectSandboxType;\n        MyGuiScreenBase m_openAfterSuccessfulEnter;\n        AddResponseDelegate m_responseHandler;\n\n        string m_findPlayerName;\n        \n        //  Using this static public property client-server tells us about login response\n        public static MyGuiScreenSelectSandboxProgress CurrentScreen = null;    //  This is always filled with reference to actual instance of this scree. If there isn't, it's null.\n\n\n        public MyGuiScreenSelectSandboxProgress(MyMwcSelectSectorRequestTypeEnum selectSandboxType, MyTextsWrapperEnum progressText, MyGuiScreenBase openAfterSuccessfulEnter, string findPlayerName, AddResponseDelegate responseHandler) : \n            base(progressText, false)\n        {\n            m_selectSandboxType = selectSandboxType;\n            m_backgroundFadeColor = MyGuiConstants.SCREEN_BACKGROUND_FADE_BLANK_DARK_PROGRESS_SCREEN;\n            m_openAfterSuccessfulEnter = openAfterSuccessfulEnter;\n            m_findPlayerName = findPlayerName;\n            CurrentScreen = this;\n            m_responseHandler = responseHandler;\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenSelectSandboxProgress\";\n        }\n\n        protected override void ServiceProgressStart(MySectorServiceClient client)\n        {\n            AddAction(client.BeginSelectSandbox(m_selectSandboxType, m_findPlayerName, null, client));\n        }\n\n        protected override void OnActionCompleted(IAsyncResult asyncResult, MySectorServiceClient client)\n        {\n            List<MyMwcUserDetail> users;\n            var sectorIdentifiers = client.EndSelectSandbox(out users, asyncResult);\n\n            m_responseHandler(sectorIdentifiers, users);\n            if (m_openAfterSuccessfulEnter.GetState() != MyGuiScreenState.HIDDEN && m_openAfterSuccessfulEnter.GetState() != MyGuiScreenState.HIDING)\n            {\n                if (m_openAfterSuccessfulEnter.GetState() != MyGuiScreenState.OPENED)\n                {\n                    MyGuiManager.AddScreen(m_openAfterSuccessfulEnter);\n                }\n            }\n            else\n            {\n                //this screen should be unhide automaticaly\n                //m_openAfterSuccessfulEnter.UnhideScreen();\n            }\n\n            CloseScreen();\n        }\n\n        public override bool CloseScreen()\n        {\n            bool ret = base.CloseScreen();\n\n            if (ret == true)\n            {\n                CurrentScreen = null;\n            }\n\n            return ret;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/MyGuiScreenSelectStory.cs",
    "content": "﻿using MinerWarsMath;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.World;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing System.Diagnostics;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing SysUtils.Utils;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Sessions;\nusing System.Net;\nusing System.Linq;\nusing MinerWars.CommonLIB.AppCode.Networking.Multiplayer;\nusing MinerWars.AppCode.Networking;\nusing MinerWars.AppCode.App;\nusing System.Threading;\n\nnamespace MinerWars.AppCode.Game.GUI\n{\n    class MyGuiScreenSelectStory : MyGuiScreenBase\n    {\n        MyGuiControlButton m_continueLastGame;\n        MyGuiControlButton m_loadChapter;\n\n        MyGuiScreenBase m_closeAfterSuccessfulEnter;\n        bool loaded = false;\n\n        bool m_hasCheckpoint = false;\n        bool m_hasChapters = false;\n\n        public MyGuiScreenSelectStory(MyGuiScreenBase closeAfterSuccessfulEnter)\n            : base(new Vector2(0.5f, 0.5f), MyGuiConstants.SCREEN_BACKGROUND_COLOR, new Vector2(574f / 1600f, 695 / 1200f), false, MyGuiManager.GetSandboxBackgoround())\n        {\n            m_closeAfterSuccessfulEnter = closeAfterSuccessfulEnter;\n            m_enableBackgroundFade = true;\n\n            AddControls();\n        }\n\n        protected override void OnShow()\n        {\n            if (!loaded)\n            {\n                AddControls();\n                loaded = true;\n            }\n            base.OnShow();\n        }\n\n        private void AddControls()\n        {\n            Controls.Clear();\n\n            AddCaption(MyTextsWrapperEnum.PlayStory, new Vector2(0, 0.005f));\n\n            Vector2 menuPositionOrigin = new Vector2(0.0f, -m_size.Value.Y / 2.0f + 0.147f);\n            Vector2 buttonDelta = new Vector2(0.15f, 0);\n            const MyGuiControlButtonTextAlignment menuButtonTextAlignement = MyGuiControlButtonTextAlignment.CENTERED;\n\n            MyTextsWrapperEnum? otherButtonsForbidden = null;\n            MyTextsWrapperEnum? newGameForbidden = null;\n            //MyTextsWrapperEnum newGameText = MyTextsWrapperEnum.StartDemo;\n            int buttonPositionCounter = 0;\n\n            if (MyClientServer.LoggedPlayer != null)\n            {\n                if ((MyClientServer.LoggedPlayer.GetCanAccessDemo() == false) && (MyClientServer.LoggedPlayer.GetCanSave() == false))\n                {\n                    //Uncomment when other buttons functionality implemented\n                    newGameForbidden = MyTextsWrapperEnum.NotAvailableInDemoMode;\n                    //otherButtonsForbidden = newGameForbidden = MyTextsWrapperEnum.NotAccessRightsToTestBuild;\n                }\n                else if (MyClientServer.LoggedPlayer.IsDemoUser())\n                {\n                    //Uncomment when other buttons functionality implemented\n                    newGameForbidden = null;\n                    otherButtonsForbidden = MyTextsWrapperEnum.NotAvailableInDemoMode;\n                }\n                else if (MyClientServer.LoggedPlayer.GetCanSave() == true)\n                {\n                    //newGameText = MyTextsWrapperEnum.NewGame;\n                    newGameForbidden = null;\n                }\n\n                ParallelTasks.Parallel.Start(CheckCheckpointAndChapter);\n            }\n\n            //  New Game / Start Demo\n            var newGameButton = new MyGuiControlButton(this, menuPositionOrigin + buttonPositionCounter++ * MyGuiConstants.MENU_BUTTONS_POSITION_DELTA,\n                MyGuiConstants.MAIN_MENU_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.NewGame, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE,\n                OnNewGameClick, menuButtonTextAlignement, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true, newGameForbidden);\n\n            //  Continue last game\n            m_continueLastGame = new MyGuiControlButton(this, menuPositionOrigin + buttonPositionCounter++ * MyGuiConstants.MENU_BUTTONS_POSITION_DELTA,\n                MyGuiConstants.MAIN_MENU_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.ContinueLastGame, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE,\n                OnLoadLastCheckpointClick, menuButtonTextAlignement, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER,\n                MyFakes.LOAD_LAST_CHECKPOINT_ENABLED, otherButtonsForbidden);\n            m_continueLastGame.DrawRedTextureWhenDisabled = false;\n\n            // Show load checkpoint first (it's unknown whether checkpoint exists\n            var tmp = newGameButton.GetPosition();\n            newGameButton.SetPosition(m_continueLastGame.GetPosition());\n            m_continueLastGame.SetPosition(tmp);\n\n            Controls.Add(m_continueLastGame);\n            Controls.Add(newGameButton);\n\n            m_continueLastGame.Enabled = false;\n\n            //  Load Chapter\n            m_loadChapter = new MyGuiControlButton(this, menuPositionOrigin + buttonPositionCounter++ * MyGuiConstants.MENU_BUTTONS_POSITION_DELTA,\n                MyGuiConstants.MAIN_MENU_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.LoadChapter, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE,\n                OnLoadChapterClick, menuButtonTextAlignement, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER,\n                //MyClientServer.LoggedPlayer != null && MyClientServer.LoggedPlayer.GetCanAccessEditorForStory()\n                true\n                /* && !otherButtonsForbidden.HasValue*/, otherButtonsForbidden);\n            m_loadChapter.DrawRedTextureWhenDisabled = false;\n            Controls.Add(m_loadChapter);\n\n            m_loadChapter.Enabled = false;\n\n            //  Load Checkpoint\n            //var loadCheckpoint = new MyGuiControlButton(this, menuPositionOrigin + buttonPositionCounter++ * MyGuiConstants.MENU_BUTTONS_POSITION_DELTA,\n            //    MyGuiConstants.MAIN_MENU_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n            //    MyTextsWrapperEnum.LoadCheckpoint, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE,\n            //    OnLoadCheckpointClick, menuButtonTextAlignement, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER,\n            //    MyClientServer.LoggedPlayer != null && MyClientServer.LoggedPlayer.GetCanAccessEditorForStory()/* && !otherButtonsForbidden.HasValue*/, otherButtonsForbidden);\n            //loadCheckpoint.DrawRedTextureWhenDisabled = false;\n            //Controls.Add(loadCheckpoint);\n\n            //  Join friend’s game - Coop mode\n            var join = new MyGuiControlButton(this, menuPositionOrigin + buttonPositionCounter++ * MyGuiConstants.MENU_BUTTONS_POSITION_DELTA,\n                MyGuiConstants.MAIN_MENU_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.JoinFriendGame, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE,\n                OnJoinFriendGameClick, menuButtonTextAlignement, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER,\n                true, otherButtonsForbidden);\n            join.DrawRedTextureWhenDisabled = false;\n            Controls.Add(join);\n\n            var backButton = new MyGuiControlButton(this, new Vector2(0, 0.178f), MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE,\n                MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyGuiManager.GetConfirmButton(), null, null, MyTextsWrapperEnum.Back,\n                MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, menuButtonTextAlignement, OnBackClick,\n                true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true, true);\n            Controls.Add(backButton);\n        }\n\n        void CheckCheckpointAndChapter()\n        {\n            var startTime = MyMinerGame.TotalTimeInMilliseconds;\n            bool checkpoint = MinerWars.AppCode.Networking.MyLocalCache.HasCurrentSave();\n            bool chapter = MyLocalCache.HasChapters();\n            var endTime = MyMinerGame.TotalTimeInMilliseconds;\n            var length = endTime - startTime;\n            var minLength = 250;\n            if (length < minLength)\n            {\n                // To prevent blink\n                Thread.Sleep(minLength - length);\n            }\n            m_hasCheckpoint = checkpoint;\n            m_hasChapters = chapter;\n        }\n\n        public override bool Update(bool hasFocus)\n        {\n            m_continueLastGame.Enabled = m_hasCheckpoint;\n            m_loadChapter.Enabled = m_hasChapters;\n\n            return base.Update(hasFocus);\n        }\n\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenSelectStory\";\n        }\n\n        public void OnNewGameClick(MyGuiControlButton sender)\n        {\n            if (MyClientServer.LoggedPlayer.HasAnyCheckpoints)\n            {\n                MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.MessageAreYouSureYouWantStartNewStory,\n                    MyTextsWrapperEnum.TitleStartNewStory, MyTextsWrapperEnum.Ok, MyTextsWrapperEnum.Cancel, StartNewStoryMessageBoxCallback));\n            }\n            else\n            {\n                StartNewStory();\n            }\n        }\n\n        private void StartNewStoryMessageBoxCallback(MyGuiScreenMessageBoxCallbackEnum callbackReturn)\n        {\n            if (callbackReturn == MyGuiScreenMessageBoxCallbackEnum.YES)\n            {\n                StartNewStory();\n            }\n        }\n\n        private void StartNewStory()\n        {\n            MyMwcLog.WriteLine(\"OnNewGameClick - Start\");\n            MyGuiManager.AddScreen(new MyGuiScreenChooseDifficulty(m_closeAfterSuccessfulEnter, null));\n            //Run(MyMwcStartSessionRequestTypeEnum.NEW_STORY);\n            MyMwcLog.WriteLine(\"OnNewGameClick - End\");\n        }\n\n        public void OnLoadLastCheckpointClick(MyGuiControlButton sender)\n        {\n            MyMwcLog.WriteLine(\"OnLoadLastCheckpointClick - Start\");\n            MyGuiManager.CloseAllScreensExcept(MyGuiScreenGamePlay.Static);\n            MySession.StartLastCheckpoint();\n            MyMwcLog.WriteLine(\"OnLoadLastCheckpointClick - End\");\n        }\n\n        public void OnLoadChapterClick(MyGuiControlButton sender)\n        {\n            MyGuiManager.AddScreen(new MyGuiScreenLoadChapter());\n        }\n\n\n        public void OnJoinFriendGameClick(MyGuiControlButton sender)\n        {\n            MyGuiManager.AddScreen(new MyGuiScreenJoinGame(m_closeAfterSuccessfulEnter, MyGameTypes.Story));\n        }\n\n        public void OnBackClick(MyGuiControlButton sender)\n        {\n            CloseScreen();\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/MyGuiScreenShipCustomization.cs",
    "content": "﻿////#define AdvancedControls\n\n//using System;\n//using System.Collections.Generic;\n//using System.Text;\n//using MinerWarsMath;\n//using MinerWars.AppCode.Game.GUI.Core;\n//using MinerWars.AppCode.Game.GUI.Helpers;\n//using MinerWars.AppCode.Game.Localization;\n//using MinerWars.AppCode.Game.Entities;\n//using MinerWars.AppCode.Game.Utils;\n//using MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\n//using MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\n//using MinerWars.CommonLIB.AppCode.Utils;\n//using MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\n//using SysUtils.Utils;\n//using MinerWars.CommonLIB.AppCode.ObjectBuilders;\n//using MinerWars.AppCode.Game.Managers.Session;\n//using MinerWars.AppCode.Game.Gameplay;\n\n//namespace MinerWars.AppCode.Game.GUI\n//{\n//    class MyGuiScreenShipCustomization : MyGuiScreenBase\n//    {\n//        private class MyInventory\n//        {\n//            public List<MyMwcObjectBuilder_SmallShip_TypesEnum> SmallShips { get; set; }\n//            public List<MyMwcObjectBuilder_SmallShip_Ammo> Ammo { get; set; }\n//            public List<MyMwcObjectBuilder_SmallShip_Engine> Engines { get; set; }\n//            public List<MyMwcObjectBuilder_SmallShip_Weapon> Weapons { get; set; }\n//            public List<MyMwcObjectBuilder_SmallShip_Tool> Tools { get; set; }\n\n//            public MyInventory()\n//            {\n//                SmallShips = new List<MyMwcObjectBuilder_SmallShip_TypesEnum>();\n//                Ammo = new List<MyMwcObjectBuilder_SmallShip_Ammo>();\n//                Engines = new List<MyMwcObjectBuilder_SmallShip_Engine>();\n//                Weapons = new List<MyMwcObjectBuilder_SmallShip_Weapon>();\n//                Tools = new List<MyMwcObjectBuilder_SmallShip_Tool>();\n//            }\n\n//            //This temporary method fill inventory with everything. Inventory will be load from somewhere later.\n//            public void FillInventory()\n//            {\n//                foreach (MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum item in MyGuiSmallShipHelpers.MyMwcObjectBuilder_SmallShip_Ammo_TypesEnumValues)\n//                {\n//                    //Ammo.Add(new MyMwcObjectBuilder_SmallShip_Ammo(1000, item));\n//                    Ammo.Add(new MyMwcObjectBuilder_SmallShip_Ammo(item));\n//                }\n//                foreach (MyMwcObjectBuilder_SmallShip_Engine_TypesEnum item in MyGuiSmallShipHelpers.MyMwcObjectBuilder_SmallShip_Engine_TypesEnumValues)\n//                {\n//                    Engines.Add(new MyMwcObjectBuilder_SmallShip_Engine(item));\n//                }\n//                foreach (MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum item in MyGuiSmallShipHelpers.MyMwcObjectBuilder_SmallShip_Weapon_TypesEnumValues)\n//                {\n//                    Weapons.Add(new MyMwcObjectBuilder_SmallShip_Weapon(item));\n//                }\n//                foreach (MyMwcObjectBuilder_SmallShip_TypesEnum item in MyGuiSmallShipHelpers.MyMwcObjectBuilder_SmallShip_TypesEnumValues)\n//                {\n//                    SmallShips.Add(item);\n//                }\n//                foreach (MyMwcObjectBuilder_SmallShip_Tool_TypesEnum toolEnum in MyGuiSmallShipHelpers.MyMwcObjectBuilder_SmallShip_ToolEnumValues)\n//                {\n//                    Tools.Add(new MyMwcObjectBuilder_SmallShip_Tool(toolEnum));\n//                }\n//            }\n//        }\n\n//        private enum MyInventoryItemTypesEnum\n//        {\n//            Ammo = 1,\n//            Engine = 2,\n//            Weapons = 3,\n//            Ships = 4,\n//            Tools = 5\n//        }\n\n//        //MyGuiControlShipPreview m_shipPreview;\n//        MyMwcObjectBuilder_SmallShip m_smallShipObjectBuilder;\n\n//        public delegate void ShipCustomizationBoxCallback(MyMwcObjectBuilder_SmallShip callbackReturn);\n//        ShipCustomizationBoxCallback m_callback=null;\n\n//        MyInventory m_inventory;\n\n//        MyGuiControlCombobox m_comboTypes;\n//        MyGuiControlCombobox m_comboItems;\n\n\n//#if AdvancedControls\n//        MyGuiControlButton m_buttonShip;\n//        MyGuiControlButton m_buttonEngine;\n//        MyGuiControlCombobox m_comboAddedTools;\n//        MyGuiControlCombobox m_comboAddedAmmo;\n//#else\n//        MyGuiControlCombobox m_comboAdded;\n//        Dictionary<int,Object> m_comboAddedObjects;\n//#endif\n\n//        private bool IsComboItemsVisible\n//        {\n//            get\n//            {\n//                return Controls.Contains(m_comboItems);\n//            }\n//            set\n//            {\n//                if (Controls.Contains(m_comboItems))\n//                {\n//                    if (value == false) Controls.Remove(m_comboItems);\n//                }\n//                else\n//                {\n//                    if (value == true) Controls.Add(m_comboItems);\n//                }\n//            }\n//        }\n\n//        //  Temorary combobox clearing. (Becouse it cannot be empty.)\n//        private void ClearCombobox(MyGuiControlCombobox combobox)\n//        {\n//            combobox.ClearItems();\n//            combobox.AddItem(0, new StringBuilder(\"Empty\"));\n//            combobox.SelectItemByIndex(0);\n//        }\n\n//        public MyGuiScreenShipCustomization(MyMwcObjectBuilder_SmallShip obj, ShipCustomizationBoxCallback callback = null, bool allowNewObjectBuilder = false)\n//            : base(new Vector2(0.5f, 0.5f), MyGuiConstants.SCREEN_BACKGROUND_COLOR, new Vector2(0.7f, 0.9f))\n//        {\n\n//            AddCaption(MyTextsWrapperEnum.ShipCustomizationCaption);\n//            m_enableBackgroundFade = true;\n//            m_drawBackgroundInterference = false;\n\n//            //  Copy current small ship object builder (with copied lists) for new customized ship\n//            m_smallShipObjectBuilder = /*(MyMwcObjectBuilder_SmallShip)MySession.PlayerShip.GetObjectBuilder()*/ obj;\n//            if (m_smallShipObjectBuilder == null && !allowNewObjectBuilder)\n//            {\n//                return;\n//            }\n\n//            m_callback = callback;\n//            //m_smallShipObjectBuilder = new MyMwcObjectBuilder_SmallShip(\n//            //    m_smallShipObjectBuilder.ShipType,\n//            //    m_smallShipObjectBuilder.Weapons == null ? null : new List<MyMwcObjectBuilder_SmallShip_Weapon>(m_smallShipObjectBuilder.Weapons),\n//            //    m_smallShipObjectBuilder.Engine,\n//            //    m_smallShipObjectBuilder.Ammo == null ? null : new List<MyMwcObjectBuilder_SmallShip_Ammo>(m_smallShipObjectBuilder.Ammo),\n//            //    m_smallShipObjectBuilder.AssignmentOfAmmo == null ? null : new List<MyMwcObjectBuilder_AssignmentOfAmmo>(m_smallShipObjectBuilder.AssignmentOfAmmo),\n//            //    m_smallShipObjectBuilder.Tools == null ? null : new List<MyMwcObjectBuilder_SmallShip_Tool>(m_smallShipObjectBuilder.Tools)\n//            //    );\n//            m_smallShipObjectBuilder = new MyMwcObjectBuilder_SmallShip(\n//                m_smallShipObjectBuilder.ShipType,\n//                m_smallShipObjectBuilder.Inventory,\n//                m_smallShipObjectBuilder.Weapons == null ? null : new List<MyMwcObjectBuilder_SmallShip_Weapon>(m_smallShipObjectBuilder.Weapons),\n//                m_smallShipObjectBuilder.Engine,                \n//                m_smallShipObjectBuilder.AssignmentOfAmmo == null ? null : new List<MyMwcObjectBuilder_AssignmentOfAmmo>(m_smallShipObjectBuilder.AssignmentOfAmmo),\n//                m_smallShipObjectBuilder.Armor,\n//                m_smallShipObjectBuilder.Radar,\n//                m_smallShipObjectBuilder.ShipHealth,\n//                m_smallShipObjectBuilder.ArmorHealth,\n//                m_smallShipObjectBuilder.Electricity,\n//                m_smallShipObjectBuilder.Oxygen,\n//                m_smallShipObjectBuilder.Fuel\n//                );\n\n//            if (m_smallShipObjectBuilder != null)\n//            {\n//                m_smallShipObjectBuilder = new MyMwcObjectBuilder_SmallShip(\n//                    m_smallShipObjectBuilder.ShipType,\n//                    m_smallShipObjectBuilder.Inventory,\n//                    m_smallShipObjectBuilder.Weapons == null ? null : new List<MyMwcObjectBuilder_SmallShip_Weapon>(m_smallShipObjectBuilder.Weapons),\n//                    m_smallShipObjectBuilder.Engine,\n//                    m_smallShipObjectBuilder.AssignmentOfAmmo == null ? null : new List<MyMwcObjectBuilder_AssignmentOfAmmo>(m_smallShipObjectBuilder.AssignmentOfAmmo),\n//                    m_smallShipObjectBuilder.Armor,\n//                    m_smallShipObjectBuilder.Radar,\n//                    m_smallShipObjectBuilder.ShipHealth,\n//                    m_smallShipObjectBuilder.ArmorHealth,\n//                    m_smallShipObjectBuilder.Electricity,\n//                    m_smallShipObjectBuilder.Oxygen,\n//                    m_smallShipObjectBuilder.Fuel\n//                    );\n//            }\n//            else\n//            {\n//                m_smallShipObjectBuilder = new MyMwcObjectBuilder_SmallShip();\n//            }\n\n//            m_inventory = new MyInventory();\n//            m_inventory.FillInventory();\n\n//            Vector2 controlsOriginLeft = new Vector2(-m_size.Value.X / 2.0f + 0.025f, -m_size.Value.Y / 2.0f + 0.145f);\n//            Vector2 controlsOriginRight = new Vector2(0.05f, -m_size.Value.Y / 2.0f + 0.145f);\n\n//            #region Inventory controls\n\n//            //  Type label\n//            Controls.Add(new MyGuiControlLabel(this, controlsOriginLeft + 0 * MyGuiConstants.CONTROLS_DELTA, null, MyTextsWrapperEnum.ShipCustomizationTypeLabel, MyGuiConstants.LABEL_TEXT_COLOR,\n//                MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n\n//            //  Type combobox\n//            m_comboTypes = new MyGuiControlCombobox(this, controlsOriginLeft + 1 * MyGuiConstants.CONTROLS_DELTA + new Vector2(MyGuiConstants.COMBOBOX_MEDIUM_SIZE.X / 2.0f, 0), MyGuiControlPreDefinedSize.MEDIUM, MyGuiConstants.COMBOBOX_BACKGROUND_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, 6);\n\n//            m_comboTypes.AddItem((int)MyInventoryItemTypesEnum.Ships, MyTextsWrapperEnum.Ship);\n//            m_comboTypes.AddItem((int)MyInventoryItemTypesEnum.Engine, MyTextsWrapperEnum.Engine);\n//            m_comboTypes.AddItem((int)MyInventoryItemTypesEnum.Weapons, MyTextsWrapperEnum.Weapon);\n//            m_comboTypes.AddItem((int)MyInventoryItemTypesEnum.Ammo, MyTextsWrapperEnum.Ammo);\n//            m_comboTypes.AddItem((int)MyInventoryItemTypesEnum.Tools, MyTextsWrapperEnum.Tool);\n//            m_comboTypes.SelectItemByIndex(0);\n//            Controls.Add(m_comboTypes);\n//            m_comboTypes.OnSelect = OnTypeComboboxSelect;\n\n//            //  Subtype label\n//            Controls.Add(new MyGuiControlLabel(this, controlsOriginRight + 0 * MyGuiConstants.CONTROLS_DELTA, null, MyTextsWrapperEnum.ShipCustomizationSubtypeLabel, MyGuiConstants.LABEL_TEXT_COLOR, \n//                MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n\n//            //  Subtype combobox\n//            //m_comboItems = new MyGuiControlCombobox(this, position + new Vector2(0.125f, 0f), 0.5f, MyGuiConstants.LABEL_TEXT_COLOR,\n//            //    MyGuiConstants.LABEL_TEXT_SCALE);\n//            m_comboItems = new MyGuiControlCombobox(this, controlsOriginRight + 1 * MyGuiConstants.CONTROLS_DELTA + new Vector2(MyGuiConstants.COMBOBOX_MEDIUM_SIZE.X / 2.0f, 0), MyGuiControlPreDefinedSize.MEDIUM, MyGuiConstants.COMBOBOX_BACKGROUND_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, 6);\n//            Controls.Add(m_comboItems);\n\n//            //  Add button\n//            Controls.Add(new MyGuiControlButton(this, new Vector2(0.0f, controlsOriginLeft.Y + 3 * MyGuiConstants.CONTROLS_DELTA.Y), MyGuiConstants.BACK_BUTTON_SIZE,\n//                MyGuiConstants.BACK_BUTTON_BACKGROUND_COLOR, MyTextsWrapperEnum.Add, MyGuiConstants.BACK_BUTTON_TEXT_COLOR,\n//                MyGuiConstants.BACK_BUTTON_TEXT_SCALE, OnAddNewItem, MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n\n//            #endregion\n\n//            #region Current ship controls\n\n//#if AdvancedControls\n//            m_buttonShip = new MyGuiControlButton(this, new Vector2(-0.27f, 0f), new Vector2(0.1f, 0.1f), MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n//                null, null, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true);\n//            Controls.Add(m_buttonShip);\n\n//            m_comboAddedTools = new MyGuiControlCombobox(this, new Vector2(0.05f, 0f), 0.53f, MyGuiConstants.COMBOBOX_HEIGHT,\n//                MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, 3, false, false, true);\n//            Controls.Add(m_comboAddedTools);\n//            m_comboAddedTools.OnSelect = OnRemoveToolFromShip;\n\n//            m_buttonsWeapon.Add(MyWeaponPossiblePositionsOnSmallShip.MoreLeft, new MyGuiControlButton(this, new Vector2(-0.27f, 0.14f),\n//                new Vector2(0.1f, 0.1f), MyGuiConstants.BUTTON_BACKGROUND_COLOR, null,\n//                delegate() { OnRemoveWeaponFromShip(MyWeaponPossiblePositionsOnSmallShip.MoreLeft); },\n//                true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n//            m_buttonsWeapon.Add(MyWeaponPossiblePositionsOnSmallShip.Left, new MyGuiControlButton(this, new Vector2(-0.16f, 0.14f),\n//                new Vector2(0.1f, 0.1f), MyGuiConstants.BUTTON_BACKGROUND_COLOR, null,\n//                delegate() { OnRemoveWeaponFromShip(MyWeaponPossiblePositionsOnSmallShip.Left); },\n//                true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n//            m_buttonsWeapon.Add(MyWeaponPossiblePositionsOnSmallShip.Middle, new MyGuiControlButton(this, new Vector2(-0.05f, 0.14f),\n//                new Vector2(0.1f, 0.1f), MyGuiConstants.BUTTON_BACKGROUND_COLOR, null,\n//                delegate() { OnRemoveWeaponFromShip(MyWeaponPossiblePositionsOnSmallShip.Middle); },\n//                true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n//            m_buttonsWeapon.Add(MyWeaponPossiblePositionsOnSmallShip.Right, new MyGuiControlButton(this, new Vector2(0.06f, 0.14f),\n//                new Vector2(0.1f, 0.1f), MyGuiConstants.BUTTON_BACKGROUND_COLOR, null,\n//                delegate() { OnRemoveWeaponFromShip(MyWeaponPossiblePositionsOnSmallShip.Right); },\n//                true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n//            m_buttonsWeapon.Add(MyWeaponPossiblePositionsOnSmallShip.MoreRight, new MyGuiControlButton(this, new Vector2(0.17f, 0.14f),\n//                new Vector2(0.1f, 0.1f), MyGuiConstants.BUTTON_BACKGROUND_COLOR, null,\n//                delegate() { OnRemoveWeaponFromShip(MyWeaponPossiblePositionsOnSmallShip.MoreRight); },\n//                true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n//            foreach (var item in m_buttonsWeapon) Controls.Add(item.Value);\n\n//            m_buttonEngine = new MyGuiControlButton(this, new Vector2(-0.27f, 0.28f), new Vector2(0.1f, 0.1f), MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n//                null, OnRemoveEngineFromShip, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true);\n//            Controls.Add(m_buttonEngine);\n\n//            m_comboAddedAmmo = new MyGuiControlCombobox(this, new Vector2(0.05f, 0.28f), 0.53f, MyGuiConstants.COMBOBOX_HEIGHT,\n//                MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, 3, false, false, true);\n//            Controls.Add(m_comboAddedAmmo);\n//            m_comboAddedAmmo.OnSelect = OnRemoveAmmoFromShip;\n//#else\n//            // Your ship configuration label\n//            Controls.Add(new MyGuiControlLabel(this, new Vector2(0.0f, controlsOriginRight.Y + 5 * MyGuiConstants.CONTROLS_DELTA.Y), null, new StringBuilder(\"Your ship configuration\"), MyGuiConstants.LABEL_TEXT_COLOR,\n//                MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER));\n\n//            m_comboAdded = new MyGuiControlCombobox(this, controlsOriginLeft + 6 * MyGuiConstants.CONTROLS_DELTA + new Vector2(MyGuiConstants.COMBOBOX_LARGE_SIZE.X / 2.0f, 0), MyGuiControlPreDefinedSize.LARGE,\n//                MyGuiConstants.COMBOBOX_BACKGROUND_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, 8, false, false, true);\n\n//            Controls.Add(m_comboAdded);\n//            m_comboAdded.OnSelect = OnRemoveFromShip;\n//            m_comboAddedObjects = new Dictionary<int, object>();\n\n//            //  Temporary label!\n//            Controls.Add(new MyGuiControlLabel(this, new Vector2(0.0f, 0.34f), null, new StringBuilder(\"Click on an item to remove it from your ship\"),\n//                MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER));\n//#endif\n\n//            #endregion\n\n//            UpdateControls();\n\n//            //  Buttons OK and BACK\n//            Vector2 buttonDelta = new Vector2(0.05f, m_size.Value.Y / 2.0f - MyGuiConstants.MESSAGE_BOX_BORDER_AREA_Y - MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE.Y / 2.0f);\n//            Controls.Add(new MyGuiControlButton(this, new Vector2(-buttonDelta.X, buttonDelta.Y), MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n//                MyTextsWrapperEnum.Ok, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnOkClick, MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n//            Controls.Add(new MyGuiControlButton(this, new Vector2(+buttonDelta.X, buttonDelta.Y), MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n//                MyTextsWrapperEnum.Back, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnCancelClick, MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n//        }\n\n//        void UpdateControls()\n//        {\n//#if AdvancedControls\n//            foreach (var item in m_buttonsWeapon)\n//            {\n//                MyMwcObjectBuilder_SmallShip_Weapon weapon = MyGuiSmallShipHelpers.GetWeaponOnPosition(m_smallShipObjectBuilder.Weapons, item.Key);\n//                item.Value.SetImage(weapon == null ? null : MyGuiSmallShipHelpers.GetMyGuiSmallShipHelperWeapon(weapon.WeaponType).Icon);\n//            }\n\n//            m_buttonShip.SetImage(MyGuiSmallShipHelpers.GetMyGuiSmallShipHelperSmallShip(m_smallShipObjectBuilder.ShipType).Icon);\n\n//            m_buttonEngine.SetImage(m_smallShipObjectBuilder.Engine == null ? null : MyGuiSmallShipHelpers.GetMyGuiSmallShipHelperEngine(m_smallShipObjectBuilder.Engine.EngineType).Icon);\n\n//            bool noTools = true;\n//            m_comboAddedTools.ClearItems();\n//            if (m_smallShipObjectBuilder.Tools != null)\n//            {\n//                for (int i = 0; i < m_smallShipObjectBuilder.Tools.Count; i++)\n//                {\n//                    m_comboAddedTools.AddItem(i, MyGuiSmallShipHelpers.GetMyGuiSmallShipHelperTool(m_smallShipObjectBuilder.Tools[i].GetObjectBuilderType()).Description);\n//                    noTools = false;\n//                }\n//            }\n//            if (noTools) ClearCombobox(m_comboAddedTools);\n//            m_comboAddedTools.SelectItemByIndex(0);\n\n//            bool noAmmo = true;\n//            m_comboAddedAmmo.ClearItems();\n//            if (m_smallShipObjectBuilder.Ammo != null)\n//            {\n//                for (int i = 0; i < m_smallShipObjectBuilder.Ammo.Count; i++)\n//                {\n//                    m_comboAddedAmmo.AddItem(i, MyGuiSmallShipHelpers.GetMyGuiSmallShipHelperAmmo(m_smallShipObjectBuilder.Ammo[i].AmmoType).Description);\n//                    noAmmo = false;\n//                }\n//            }\n//            if (noAmmo) ClearCombobox(m_comboAddedAmmo);\n//            m_comboAddedAmmo.SelectItemByIndex(0);\n//#else\n//            int i = 0;\n//            m_comboAddedObjects.Clear();\n//            m_comboAdded.ClearItems();\n//            //  Ship type\n//            i++;\n//            m_comboAddedObjects.Add(i, m_smallShipObjectBuilder.ShipType);\n//            if (m_smallShipObjectBuilder.ShipType != 0)\n//                //m_comboAdded.AddItem(i, MyGuiSmallShipHelpers.GetMyGuiSmallShipHelperSmallShip(m_smallShipObjectBuilder.ShipType).Description);\n//                m_comboAdded.AddItem(i, MyGuiObjectBuilderHelpers.GetGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip, (int)m_smallShipObjectBuilder.ShipType).Description);\n//            //  Engine type\n//            if (m_smallShipObjectBuilder.Engine != null)\n//            {\n//                i++;\n//                m_comboAddedObjects.Add(i, m_smallShipObjectBuilder.Engine);\n//                //m_comboAdded.AddItem(i, MyGuiSmallShipHelpers.GetMyGuiSmallShipHelperEngine(m_smallShipObjectBuilder.Engine.EngineType).Description);\n//                m_comboAdded.AddItem(i, MyGuiObjectBuilderHelpers.GetGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Engine, (int)m_smallShipObjectBuilder.Engine.EngineType).Description);\n                \n//            }\n//            //  Weapons\n//            if (m_smallShipObjectBuilder.Weapons != null)\n//            {\n//                foreach (var item in m_smallShipObjectBuilder.Weapons)\n//                {\n//                    i++;\n//                    m_comboAddedObjects.Add(i, item);\n//                    //m_comboAdded.AddItem(i, MyGuiSmallShipHelpers.GetMyGuiSmallShipHelperWeapon(item.WeaponType).Description);\n//                    m_comboAdded.AddItem(i, MyGuiObjectBuilderHelpers.GetGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Weapon, (int)item.WeaponType).Description);\n//                }\n\n//            }\n//            //  Ammo\n//            if (m_smallShipObjectBuilder.Ammo != null)\n//            {\n//                foreach (var item in m_smallShipObjectBuilder.Ammo)\n//                {\n//                    i++;\n//                    m_comboAddedObjects.Add(i, item);\n//                    //StringBuilder description = new StringBuilder(MyGuiSmallShipHelpers.GetMyGuiSmallShipHelperAmmo(item.AmmoType).Description.ToString());\n//                    StringBuilder description = new StringBuilder(MyGuiObjectBuilderHelpers.GetGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)item.AmmoType).Description.ToString());\n//                    //description.Append(\" (\");\n//                    //MyMwcUtils.AppendInt32ToStringBuilder(description, item.Amount);\n//                    //description.Append(\")\");\n//                    m_comboAdded.AddItem(i, description);\n//                }\n\n//            }\n//            //  Tools\n//            if (m_smallShipObjectBuilder.Tools != null)\n//            {\n//                foreach (var item in m_smallShipObjectBuilder.Tools)\n//                {\n//                    i++;\n//                    m_comboAddedObjects.Add(i, item);\n//                    //m_comboAdded.AddItem(i, MyGuiSmallShipHelpers.GetMyGuiSmallShipHelperTool(\n//                    //    (MyMwcObjectBuilder_SmallShip_Tool_TypesEnum)item.GetObjectBuilderId()).Description);\n//                    m_comboAdded.AddItem(i, MyGuiObjectBuilderHelpers.GetGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Tool, item.GetObjectBuilderId().Value).Description);\n//                }\n\n//            }\n//            if (m_comboAdded.GetItemsCount() > 0)\n//            {\n//                m_comboAdded.SelectItemByIndex(0);\n//            }\n//#endif\n\n//            OnTypeComboboxSelect();\n//        }\n\n//        void OnTypeComboboxSelect()\n//        {\n//            m_comboItems.ClearItems();\n//            switch ((MyInventoryItemTypesEnum)m_comboTypes.GetSelectedKey())\n//            {\n//                case MyInventoryItemTypesEnum.Ammo:\n//                    IsComboItemsVisible = (m_inventory.Ammo.Count > 0);\n//                    for (int i = 0; i < m_inventory.Ammo.Count; i++)\n//                    {\n//                        //MyGuiSmallShipHelperAmmo helper = MyGuiSmallShipHelpers.GetMyGuiSmallShipHelperAmmo(m_inventory.Ammo[i].AmmoType);\n//                        //if (helper != null)\n//                        //{\n//                        //    m_comboItems.AddItem(i, MyGuiSmallShipHelpers.GetMyGuiSmallShipHelperAmmo(m_inventory.Ammo[i].AmmoType).Description);\n//                        //}\n//                        MyGuiHelperBase helper = MyGuiObjectBuilderHelpers.GetGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)m_inventory.Ammo[i].AmmoType);\n//                        if (helper != null)\n//                        {\n//                            m_comboItems.AddItem(i, helper.Description);\n//                        }\n//                    }\n//                    break;\n//                case MyInventoryItemTypesEnum.Engine:\n//                    IsComboItemsVisible = (m_inventory.Engines.Count > 0);\n//                    for (int i = 0; i < m_inventory.Engines.Count; i++)\n//                    {\n//                        //m_comboItems.AddItem(i, MyGuiSmallShipHelpers.GetMyGuiSmallShipHelperEngine(m_inventory.Engines[i].EngineType).Description);\n//                        m_comboItems.AddItem(i, MyGuiObjectBuilderHelpers.GetGuiHelper(\n//                            MyMwcObjectBuilderTypeEnum.SmallShip_Engine, (int)m_inventory.Engines[i].EngineType).Description);\n//                    }\n//                    break;\n//                case MyInventoryItemTypesEnum.Weapons:\n//                    IsComboItemsVisible = (m_inventory.Weapons.Count > 0);\n//                    for (int i = 0; i < m_inventory.Weapons.Count; i++)\n//                    {\n//                        //m_comboItems.AddItem(i, MyGuiSmallShipHelpers.GetMyGuiSmallShipHelperWeapon(m_inventory.Weapons[i].WeaponType).Description);\n//                        m_comboItems.AddItem(i, MyGuiObjectBuilderHelpers.GetGuiHelper(\n//                            MyMwcObjectBuilderTypeEnum.SmallShip_Weapon, (int)m_inventory.Weapons[i].WeaponType).Description);\n//                    }\n//                    break;\n//                case MyInventoryItemTypesEnum.Ships:\n//                    IsComboItemsVisible = (m_inventory.SmallShips.Count > 0);\n//                    for (int i = 0; i < m_inventory.SmallShips.Count; i++)\n//                    {\n//                        //m_comboItems.AddItem(i, MyGuiSmallShipHelpers.GetMyGuiSmallShipHelperSmallShip(m_inventory.SmallShips[i]).Description);\n//                        m_comboItems.AddItem(i, MyGuiObjectBuilderHelpers.GetGuiHelper(\n//                            MyMwcObjectBuilderTypeEnum.SmallShip, (int)m_inventory.SmallShips[i]).Description);\n//                    }\n//                    break;\n//                case MyInventoryItemTypesEnum.Tools:\n//                    IsComboItemsVisible = (m_inventory.Tools.Count > 0);\n//                    for (int i = 0; i < m_inventory.Tools.Count; i++)\n//                    {\n//                        //m_comboItems.AddItem(i, MyGuiSmallShipHelpers.GetMyGuiSmallShipHelperTool(\n//                        //    (MyMwcObjectBuilder_SmallShip_Tool_TypesEnum)m_inventory.Tools[i].GetObjectBuilderId()).Description);\n//                        m_comboItems.AddItem(i, MyGuiObjectBuilderHelpers.GetGuiHelper(\n//                            MyMwcObjectBuilderTypeEnum.SmallShip_Tool, m_inventory.Tools[i].GetObjectBuilderId().Value).Description);\n//                    }\n//                    break;\n//                default:\n//                    throw new MyMwcExceptionApplicationShouldNotGetHere();\n//                    break;\n//            }\n//            if (IsComboItemsVisible && m_comboItems.GetItemsCount() > 0) m_comboItems.SelectItemByIndex(0);\n//        }\n\n//#if AdvancedControls \n//        void OnRemoveWeaponFromShip(MyWeaponPossiblePositionsOnSmallShip position)\n//        {\n//            MyMwcObjectBuilder_SmallShip_Weapon weapon = MyGuiSmallShipHelpers.GetWeaponOnPosition(m_smallShipObjectBuilder.Weapons, position);\n//            if (weapon == null) return;\n//            m_smallShipObjectBuilder.Weapons.Remove(weapon);\n//            m_inventory.Weapons.Add(weapon);\n//            UpdateControls();\n//        }\n\n//        void OnRemoveEngineFromShip()\n//        {\n//            MyMwcObjectBuilder_SmallShip_Engine engine = m_smallShipObjectBuilder.Engine;\n//            if (engine == null) return;\n//            m_smallShipObjectBuilder.Engine = null;\n//            m_inventory.Engines.Add(engine);\n//            UpdateControls();\n//        }\n\n//        void OnRemoveToolFromShip()\n//        {\n//            if (m_smallShipObjectBuilder.Tools == null || m_smallShipObjectBuilder.Tools.Count == 0) return;\n//            MyMwcObjectBuilder_SmallShip_ToolBase tool = m_smallShipObjectBuilder.Tools[m_comboAddedTools.GetSelectedKey()];\n//            if (tool == null) return;\n//            m_smallShipObjectBuilder.Tools.Remove(tool);\n//            m_inventory.Tools.Add(tool);\n//            UpdateControls();\n//        }\n\n//        void OnRemoveAmmoFromShip()\n//        {\n//            if (m_smallShipObjectBuilder.Ammo == null || m_smallShipObjectBuilder.Ammo.Count == 0) return;\n//            MyMwcObjectBuilder_SmallShip_Ammo ammo = m_smallShipObjectBuilder.Ammo[m_comboAddedAmmo.GetSelectedKey()];\n//            if (ammo == null) return;\n//            m_smallShipObjectBuilder.Ammo.Remove(ammo);\n//            m_inventory.Ammo.Add(ammo);\n//            UpdateControls();\n//        }\n//#else\n//        void OnRemoveFromShip()\n//        {\n//            Object selected = m_comboAddedObjects[m_comboAdded.GetSelectedKey()];\n\n//            //  Ship\n//            if (selected is MyMwcObjectBuilder_SmallShip_TypesEnum)\n//            {\n//                //This is temporary message box! TODO: Create localizable text!\n//                MyGuiManager.AddScreen(new MyGuiScreenMessageBox(new StringBuilder(\"Just add new ship from combobox above.\"), new StringBuilder(\"CANNOT REMOVE SHIP\"), MyTextsWrapperEnum.Ok, null));\n//                return;\n//            }\n//            //  Engine\n//            MyMwcObjectBuilder_SmallShip_Engine engine = selected as MyMwcObjectBuilder_SmallShip_Engine;\n//            if (engine != null)\n//            {\n//                m_smallShipObjectBuilder.Engine = null;\n//                m_inventory.Engines.Add(engine);\n//                UpdateControls();\n//                return;\n//            }\n//            //  Weapon\n//            MyMwcObjectBuilder_SmallShip_Weapon weapon = selected as MyMwcObjectBuilder_SmallShip_Weapon;\n//            if (weapon != null)\n//            {\n//                m_smallShipObjectBuilder.Weapons.Remove(weapon);\n//                m_inventory.Weapons.Add(weapon);\n//                UpdateControls();\n//                return;\n//            }\n//            //  Ammo\n//            MyMwcObjectBuilder_SmallShip_Ammo ammo = selected as MyMwcObjectBuilder_SmallShip_Ammo;\n//            if (ammo != null)\n//            {\n//                m_smallShipObjectBuilder.Ammo.Remove(ammo);\n//                m_inventory.Ammo.Add(ammo);\n//                UpdateControls();\n//                return;\n//            }\n//            //  Tool\n//            MyMwcObjectBuilder_SmallShip_Tool tool = selected as MyMwcObjectBuilder_SmallShip_Tool;\n//            if (tool != null)\n//            {\n//                m_smallShipObjectBuilder.Tools.Remove(tool);\n//                m_inventory.Tools.Add(tool);\n//                UpdateControls();\n//                return;\n//            }\n//        }\n//#endif\n\n//        void OnAddNewItem()\n//        {\n//            if (!IsComboItemsVisible) return;\n\n//            switch ((MyInventoryItemTypesEnum)m_comboTypes.GetSelectedKey())\n//            {\n//                case MyInventoryItemTypesEnum.Engine:\n//                    if (m_smallShipObjectBuilder.Engine != null) m_inventory.Engines.Add(m_smallShipObjectBuilder.Engine);\n//                    MyMwcObjectBuilder_SmallShip_Engine engine = m_inventory.Engines[m_comboItems.GetSelectedKey()];\n//                    m_smallShipObjectBuilder.Engine = engine;\n//                    m_inventory.Engines.Remove(engine);\n//                    break;\n//                case MyInventoryItemTypesEnum.Weapons:\n//                    MyMwcObjectBuilder_SmallShip_Weapon weapon = m_inventory.Weapons[m_comboItems.GetSelectedKey()];\n//                    bool isFreePosition = false;\n//                    /* TODO: To be rewritten in new ship customization dialog\n//                    foreach (var position in MyGuiSmallShipHelpers.GetPosiblePositions(weapon.WeaponType))\n//                    {\n//                        if (MyGuiSmallShipHelpers.IsWeaponPositionFree(m_smallShipObjectBuilder.Weapons, position))\n//                        {\n//                            weapon.PositionOnShip = MyGuiSmallShipHelpers.GetWeaponVector(position);\n//                            if (m_smallShipObjectBuilder.Weapons == null) m_smallShipObjectBuilder.Weapons = new List<MyMwcObjectBuilder_SmallShip_Weapon>();\n//                            m_smallShipObjectBuilder.Weapons.Add(weapon);\n//                            m_inventory.Weapons.Remove(weapon);\n//                            isFreePosition = true;\n//                            break;\n//                        }\n//                    } */\n//                    if (m_smallShipObjectBuilder.Weapons == null) \n//                        m_smallShipObjectBuilder.Weapons = new List<MyMwcObjectBuilder_SmallShip_Weapon>();\n//                    m_smallShipObjectBuilder.Weapons.Add(weapon);\n//                    m_inventory.Weapons.Remove(weapon);\n//                    isFreePosition = true;\n\n\n//                    //This is temporary messagebox!\n//                    if (!isFreePosition) MyGuiManager.AddScreen(new MyGuiScreenMessageBox(new StringBuilder(\"No free position on the ship for this weapon.\"), new StringBuilder(\"NO FREE POSITION\"), MyTextsWrapperEnum.Ok, null));\n//                    break;\n//                case MyInventoryItemTypesEnum.Ships:\n//                    if (m_smallShipObjectBuilder.Engine != null) m_inventory.Engines.Add(m_smallShipObjectBuilder.Engine);\n//                    if (m_smallShipObjectBuilder.Ammo != null)\n//                    {\n//                        foreach (var item in m_smallShipObjectBuilder.Ammo)\n//                        {\n//                            m_inventory.Ammo.Add(item);\n//                        }\n//                    }\n//                    if (m_smallShipObjectBuilder.Weapons != null)\n//                    {\n//                        foreach (var item in m_smallShipObjectBuilder.Weapons)\n//                        {\n//                            m_inventory.Weapons.Add(item);\n//                        }\n//                    }\n//                    if (m_smallShipObjectBuilder.Tools != null)\n//                    {\n//                        foreach (var item in m_smallShipObjectBuilder.Tools)\n//                        {\n//                            m_inventory.Tools.Add(item);\n//                        }\n//                    }\n//                    m_inventory.SmallShips.Add(m_smallShipObjectBuilder.ShipType);\n//                    MyMwcObjectBuilder_SmallShip_TypesEnum smallShip = m_inventory.SmallShips[m_comboItems.GetSelectedKey()];\n//                    //m_smallShipObjectBuilder = new MyMwcObjectBuilder_SmallShip(\n//                    //    smallShip, \n//                    //    new List<MyMwcObjectBuilder_SmallShip_Weapon>(), \n//                    //    null, \n//                    //    new List<MyMwcObjectBuilder_SmallShip_Ammo>(), \n//                    //    new List<MyMwcObjectBuilder_AssignmentOfAmmo>(), \n//                    //    new List<MyMwcObjectBuilder_SmallShip_Tool>());\n//                    m_smallShipObjectBuilder = new MyMwcObjectBuilder_SmallShip(\n//                        smallShip,\n//                        null,\n//                        new List<MyMwcObjectBuilder_SmallShip_Weapon>(),\n//                        null,\n//                        new List<MyMwcObjectBuilder_AssignmentOfAmmo>(),\n//                        null,\n//                        null,\n//                        MyGameplayConstants.MAXHEALTH_SMALLSHIP,\n//                        100f,\n//                        float.MaxValue,\n//                        float.MaxValue,\n//                        float.MaxValue);\n//                    m_inventory.SmallShips.Remove(smallShip);\n//                    break;\n//                case MyInventoryItemTypesEnum.Ammo:\n//                    MyMwcObjectBuilder_SmallShip_Ammo ammo = m_inventory.Ammo[m_comboItems.GetSelectedKey()];\n//                    if (m_smallShipObjectBuilder.Ammo == null) m_smallShipObjectBuilder.Ammo = new List<MyMwcObjectBuilder_SmallShip_Ammo>();\n//                    m_smallShipObjectBuilder.Ammo.Add(ammo);\n//                    m_inventory.Ammo.Remove(ammo);\n//                    break;\n//                case MyInventoryItemTypesEnum.Tools:\n//                    MyMwcObjectBuilder_SmallShip_Tool tool = m_inventory.Tools[m_comboItems.GetSelectedKey()];\n//                    if (m_smallShipObjectBuilder.Tools == null) m_smallShipObjectBuilder.Tools = new List<MyMwcObjectBuilder_SmallShip_Tool>();\n//                    m_smallShipObjectBuilder.Tools.Add(tool);\n//                    m_inventory.Tools.Remove(tool);\n//                    break;\n//                default:\n//                    break;\n//            }\n//            OnTypeComboboxSelect();\n//            UpdateControls();\n//        }\n\n//        void OnCancelClick()\n//        {\n//            CloseScreen();\n//        }\n\n//        void OnOkClick()\n//        {\n//            if (m_callback!=null)\n//            {\n//                m_callback(new MyMwcObjectBuilder_SmallShip_Player(\n//                        m_smallShipObjectBuilder.ShipType,\n//                        m_smallShipObjectBuilder.Inventory,\n//                        m_smallShipObjectBuilder.Weapons,\n//                        m_smallShipObjectBuilder.Engine,\n//                        m_smallShipObjectBuilder.AssignmentOfAmmo,\n//                        m_smallShipObjectBuilder.Armor,\n//                        m_smallShipObjectBuilder.Radar,\n//                        m_smallShipObjectBuilder.ShipHealth,\n//                        m_smallShipObjectBuilder.ArmorHealth,\n//                        m_smallShipObjectBuilder.Electricity, \n//                        m_smallShipObjectBuilder.Oxygen,\n//                        m_smallShipObjectBuilder.Fuel\n//                    ));\n//            }\n//            else\n//            {\n//                var matrix = MySession.PlayerShip.WorldMatrix;\n//                MySession.PlayerShip.Close();\n//                //Copy small ship object builder for new player ship\n//                MyEntities.CreateFromObjectBuilderAndAdd(null, \n//                    new MyMwcObjectBuilder_SmallShip_Player(\n//                        m_smallShipObjectBuilder.ShipType,\n//                        m_smallShipObjectBuilder.Inventory,\n//                        m_smallShipObjectBuilder.Weapons,\n//                        m_smallShipObjectBuilder.Engine,\n//                        m_smallShipObjectBuilder.AssignmentOfAmmo,\n//                        m_smallShipObjectBuilder.Armor,\n//                        m_smallShipObjectBuilder.Radar,\n//                        m_smallShipObjectBuilder.ShipHealth,\n//                        m_smallShipObjectBuilder.ArmorHealth,\n//                        m_smallShipObjectBuilder.Electricity, \n//                        m_smallShipObjectBuilder.Oxygen,\n//                        m_smallShipObjectBuilder.Fuel),\n//                    matrix);\n//            }\n//            CloseScreen();\n//        }\n\n//        public override void LoadContent()\n//        {\n//            base.LoadContent();\n//            //m_shipPreview = new MyGuiControlShipPreview(this, m_smallShipObjectBuilder);\n//            //Controls.Add(m_shipPreview);\n//        }\n\n//        public override string GetFriendlyName()\n//        {\n//            return \"MyGuiScreenShipCustomization\";\n//        }\n\n//        public override void UnloadContent()\n//        {\n//            base.UnloadContent();\n//            //if (m_shipPreview != null)\n//            //{\n//            //    Controls.Remove(m_shipPreview);\n//            //    m_shipPreview.UnloadContent();\n//            //    m_shipPreview = null;\n//            //}\n//        }\n//    }\n//}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/MyGuiScreenSimpleProgress.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Audio;\n\nnamespace MinerWars.AppCode.Game.GUI\n{\n    class MyGuiScreenSimpleProgress : MyGuiScreenBase\n    {\n        private StringBuilder m_text;\n        private MyGuiControlRotatingWheel m_progressWheel;\n        private MyGuiControlLabel m_progressText;        \n\n        public MyGuiScreenSimpleProgress(MyTextsWrapperEnum caption, MyTextsWrapperEnum text)\n            : this(caption, MyTextsWrapper.Get(text))\n        {\n        }\n\n        public MyGuiScreenSimpleProgress(MyTextsWrapperEnum caption, StringBuilder text) \n            : base(new Vector2(0.5f, 0.5f), MyGuiConstants.SCREEN_BACKGROUND_COLOR, new Vector2(0.4f, 0.4f))\n        {\n            m_text = text;\n            m_closeOnEsc = false;\n            m_isTopMostScreen = true;\n\n            AddCaption(caption, new Vector2(0f, 0.021f));\n\n            m_progressWheel = new MyGuiControlRotatingWheel(this, Vector2.Zero, MyGuiConstants.DEFAULT_CONTROL_FOREGROUND_COLOR.ToVector4(), 0.5f, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, MyGuiManager.GetLoadingTexture());\n            Controls.Add(m_progressWheel);\n\n            m_progressText = new MyGuiControlLabel(this, new Vector2(0f, 0.12f), null, m_text, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER);\n            Controls.Add(m_progressText);\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenSimpleProgress\";\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/MyGuiScreenSimpleProgressBar.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Audio;\n\nnamespace MinerWars.AppCode.Game.GUI\n{\n    class MyGuiScreenSimpleProgressBar : MyGuiScreenBase\n    {\n        protected const float SUCCESS_VALUE = 1f;\n        protected const float START_VALUE = 0f;\n\n        private StringBuilder m_text;\n        protected MyGuiControlProgressBar m_progressBar;\n        private MyGuiControlLabel m_progressText;\n\n        private MySoundCuesEnum? m_progressCueEnum;\n        private MySoundCuesEnum? m_cancelCueEnum;\n        private MySoundCuesEnum? m_successCueEnum;\n\n        private MySoundCue? m_progressCue;\n        private MySoundCue? m_cancelCue;\n        private MySoundCue? m_successCue;\n\n        private int m_decimals;\n\n        public MyGuiScreenSimpleProgressBar(MyTextsWrapperEnum caption, MyTextsWrapperEnum text, float value, MySoundCuesEnum? progressCueEnum, MySoundCuesEnum? cancelCueEnum, int decimals, MySoundCuesEnum? successCueEnum = null)\n            : this(caption, MyTextsWrapper.Get(text), value, progressCueEnum, cancelCueEnum, decimals, successCueEnum)\n        {\n        }\n\n        public MyGuiScreenSimpleProgressBar(MyTextsWrapperEnum caption, StringBuilder text, float value, MySoundCuesEnum? progressCueEnum, MySoundCuesEnum? cancelCueEnum, int decimals, MySoundCuesEnum? successCueEnum = null) \n            : base(new Vector2(0.5f, 0.5f), MyGuiConstants.SCREEN_BACKGROUND_COLOR, new Vector2(0.4f, 0.4f))\n        {\n            m_decimals = decimals;\n            m_text = text;\n            m_closeOnEsc = false;\n            m_isTopMostScreen = true;            \n            m_backgroundTexture = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\BackgroundScreen\\\\ProgressBarBackground\", flags: TextureFlags.IgnoreQuality);\n            m_size = new Vector2(673/1600f, 363/1200f);// MyGuiManager.GetNormalizedCoordsAndPreserveOriginalSize(673, 363);\n\n            m_progressCueEnum = progressCueEnum;\n            m_cancelCueEnum = cancelCueEnum;\n            m_successCueEnum = successCueEnum;\n\n            AddCaption(caption, new Vector2(0f, 0.015f));\n            Vector2 progressBarSize = new Vector2(559 / 1600f, 112 / 1200f);// MyGuiManager.GetNormalizedCoordsAndPreserveOriginalSize(559, 112);            \n            m_progressBar = new MyGuiControlProgressBar(this, Vector2.Zero, progressBarSize, Vector4.Zero, new Vector4(1f, 1f, 1f, 1f), Color.White.ToVector4(), MyGuiConstants.LABEL_TEXT_SCALE, value, m_decimals);\n            Controls.Add(m_progressBar);\n\n            m_progressText = new MyGuiControlLabel(this, new Vector2(0f, 0.05f), null, m_text, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER);\n            Controls.Add(m_progressText);\n        }\n\n        public void UpdateValue(float value) \n        {\n            m_progressBar.Value = MathHelper.Clamp(value, START_VALUE, SUCCESS_VALUE);\n        }\n\n        public float GetValue() \n        {\n            return m_progressBar.Value;\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenSimpleProgressBar\";\n        }\n\n        public override void CloseScreenNow()\n        {\n            if (m_progressCue != null && m_progressCue.Value.IsPlaying)\n            {\n                m_progressCue.Value.Stop(SharpDX.XACT3.StopFlags.Immediate);\n            }\n            if (GetValue() < SUCCESS_VALUE)\n            {\n                if (m_cancelCueEnum != null && (m_cancelCue == null || !m_cancelCue.Value.IsPlaying))\n                {\n                    m_cancelCue = MyAudio.AddCue2D(m_cancelCueEnum.Value);\n                }\n            }\n            else\n            {\n                if (m_successCueEnum != null && (m_successCue == null || !m_successCue.Value.IsPlaying))\n                {\n                    m_successCue = MyAudio.AddCue2D(m_successCueEnum.Value);\n                }\n            }\n            base.CloseScreenNow();            \n        }\n\n        public override bool Update(bool hasFocus)\n        {\n            if (m_progressCueEnum != null && (m_progressCue == null || !m_progressCue.Value.IsPlaying) && m_state == MyGuiScreenState.OPENED)\n            {\n                m_progressCue = MyAudio.AddCue2D(m_progressCueEnum.Value);\n            }\n            return base.Update(hasFocus);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/MyGuiScreenSolarSystemMap.cs",
    "content": "﻿#region Using\nusing System;\nusing System.Collections.Generic;\nusing System.Text;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.AppCode.Game.VideoMode;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.AppCode.Game.World;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.SolarSystem;\nusing MinerWars.AppCode.Toolkit.Input;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Missions;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing System.Diagnostics;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.HUD;\nusing System.Threading;\n#endregion\n\nnamespace MinerWars.AppCode.Game.GUI\n{\n    class MyGuiScreenSolarSystemMap : MyGuiScreenBase\n    {\n        MySolarSystemMapCamera m_camera;\n        MySolarSystemMapData m_data;\n        MySolarMapRenderer m_solarMapRender;\n        MyGuiScreenBase m_parent;\n\n        Vector2 m_oldRotationIndicator;\n        bool m_particlesEnabled;\n\n        MyMwcSectorIdentifier m_currentSector;\n\n        public static int UNIVERSE_SEED = 0;\n\n        public static MyGuiScreenSolarSystemMap Static = null;\n\n        public static List<MyMwcSectorIdentifier> SectorCache = null;\n        private MyGuiControlButton m_travelButton;\n        private MyMwcVector3Int? m_selectedSector;\n\n        public MyGuiScreenSolarSystemMap(MyGuiScreenBase parent, MyMwcSectorIdentifier currentSector)\n            : base(new Vector2(0.5f, 0.5f), null, Vector2.One)\n        {\n            m_parent = parent;\n            m_enableBackgroundFade = false;\n            DrawMouseCursor = true;\n            m_currentSector = currentSector;\n            m_closeOnEsc = true;\n\n            Static = this;\n\n            MySolarSystemGenerator generator = new MySolarSystemGenerator(UNIVERSE_SEED);\n            generator.Generate(1024);\n\n            m_data = generator.SolarSystemData;\n            m_solarMapRender = new MySolarMapRenderer();\n            m_solarMapRender.PlayerSector = currentSector.Position;\n\n            //MyMinerGame.SwitchPause();\n            m_particlesEnabled = TransparentGeometry.Particles.MyParticlesManager.Enabled;\n            TransparentGeometry.Particles.MyParticlesManager.Enabled = false;\n\n            //AddCaption(MyTextsWrapperEnum.SolarSystemMap);\n\n            MySolarSystemMapNavigationMark playerNavigationMark =\n                new MySolarSystemMapNavigationMark(\n                    currentSector.Position,\n                    \"\",\n                    null,\n                    MyHudConstants.SOLAR_MAP_PLAYER_MARKER_COLOR,\n                    MyTransparentMaterialEnum.SolarMapPlayer)\n                    {\n                        VerticalLineColor = MyHudConstants.SOLAR_MAP_PLAYER_MARKER_COLOR.ToVector4(),\n                        DirectionalTexture = MyHudTexturesEnum.DirectionIndicator_green,\n                        Offset = new Vector3(0, 0.0f, 0),\n                        Text = MyClientServer.LoggedPlayer.GetDisplayName().ToString(),\n                        Importance = 50\n                    };\n            m_data.NavigationMarks.Add(playerNavigationMark);\n\n            if (MyGuiScreenGamePlay.Static.IsEditorStoryActive() || MyGuiScreenGamePlay.Static.GetPreviousGameType() == MyGuiScreenGamePlayType.EDITOR_STORY)\n            {\n                // Loads all marks, we want it for editor\n                LoadMarks(false);\n            }\n            else\n            {\n                // Load only active marks\n                MyMissions.AddSolarMapMarks(m_data);\n            }\n\n            if (MyMissions.ActiveMission != null)\n            {\n                MyMissions.ActiveMission.AddSolarMapMarks(m_data);\n            }\n\n            m_travelButton = new MyGuiControlButton(this, new Vector2(0.0f, 0.40f),\n                new Vector2(650f / 1600f, 120f / 1200f),\n                MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyGuiManager.GetTravelButtonTexture(),\n                MyGuiManager.GetTravelButtonTexture(),\n                MyGuiManager.GetTravelButtonTexture(),\n                MyTextsWrapperEnum.Travel,\n                MyGuiConstants.BACK_BUTTON_TEXT_COLOR,\n                MyGuiConstants.BACK_BUTTON_TEXT_SCALE,\n                MyGuiControlButtonTextAlignment.CENTERED,\n                OnTravelClick,\n                false,\n                MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER,\n                true,\n                false);\n            m_travelButton.TextOffset = new Vector2(0, -0.0030f);\n            m_travelButton.Visible = false;\n            Controls.Add(m_travelButton);\n\n            // target sector 0, 0, 0\n            // distance is 1.7 sectors from camera\n            Vector3 sector;\n\n            var mostImportantMark = m_data.NavigationMarks.GetMostImportant();\n            if (mostImportantMark != null) {\n                sector = new Vector3(mostImportantMark.Sector.X, mostImportantMark.Sector.Y, mostImportantMark.Sector.Z);\n            } else {\n                sector = new Vector3(currentSector.Position.X, currentSector.Position.Y, currentSector.Position.Z);\n            }\n\n            sector.Y = 0;\n\n            m_camera = new MySolarSystemMapCamera(sector * MySolarSystemMapCamera.SECTOR_SIZE_GAMEUNITS, 10000000.0f * MySolarSystemMapCamera.SECTOR_SIZE_GAMEUNITS);\n            m_camera.MinDistanceToTarget = 1.7f * MySolarSystemMapCamera.SECTOR_SIZE_GAMEUNITS;\n            m_camera.MaxDistanceToTarget = 1.2f * MySolarSystemUtils.MillionKmToSectors(MyBgrCubeConsts.NEPTUNE_POSITION.Length()) * MySolarSystemMapCamera.SECTOR_SIZE_GAMEUNITS;\n            m_camera.MaxSector = MySolarSystemUtils.MillionKmToSectors(MyBgrCubeConsts.NEPTUNE_POSITION.Length());\n\n            MyGuiManager.FullscreenHudEnabled = true;\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenSolarMap\";\n        }\n\n        public override void LoadContent()\n        {\n            base.LoadContent();\n\n            m_solarMapRender.LoadContent();\n        }\n\n        private void LoadMarks(bool forceReload)\n        {\n            if (SectorCache == null || forceReload) // Load sectors, after successful load, add marks\n            {\n                SectorCache = new List<MyMwcSectorIdentifier>();\n                var progressScreen = new MyGuiScreenLoadSectorIdentifiersProgress(MyMwcSectorTypeEnum.STORY, true, SectorIdentifiersLoaded);\n                MyGuiManager.AddScreen(progressScreen);\n            }\n            else\n            {\n                AddMarks(); // Add marks now\n            }\n        }\n\n        private void SectorIdentifiersLoaded(List<MyMwcSectorIdentifier> sectors)\n        {\n            SectorCache = sectors;\n            AddMarks();\n        }\n\n        private void AddMarks()\n        {\n            foreach (var sector in SectorCache)\n            {\n                const int centerDist = 1;\n                if (MyFakes.HIDE_CENTER_SECTOR_MARKS && Math.Abs(sector.Position.X) <= centerDist && Math.Abs(sector.Position.Y) <= centerDist && Math.Abs(sector.Position.Z) <= centerDist)\n                {\n                    continue;\n                }\n\n                var mark = new MySolarSystemMapNavigationMark(sector.Position, sector.SectorName,\n                            null,\n                            MyHudConstants.SOLAR_MAP_SIDE_MISSION_MARKER_COLOR,\n                            TransparentGeometry.MyTransparentMaterialEnum.SolarMapSideMission)\n                            {\n                                DirectionalTexture = MyHudTexturesEnum.DirectionIndicator_white,\n                            };\n\n\n                m_data.NavigationMarks.Add(mark);\n            }\n        }\n\n        public override void UnloadContent()\n        {\n            base.UnloadContent();\n            m_solarMapRender.UnloadContent();\n        }\n\n        public override bool UnhideScreen()\n        {\n            m_parent.HideScreen();\n            MyGuiManager.FullscreenHudEnabled = true;\n            return base.UnhideScreen();\n        }\n\n        public override bool HideScreen()\n        {\n            MyGuiManager.SetMouseCursorTexture(MyGuiManager.GetMouseCursorArrowTexture());\n            m_parent.UnhideScreen();\n            MyGuiManager.FullscreenHudEnabled = false;\n            return base.HideScreen();\n        }\n\n        public override bool CloseScreen()\n        {\n            MyGuiManager.SetMouseCursorTexture(MyGuiManager.GetMouseCursorArrowTexture());\n            m_parent.UnhideScreen();\n            MyGuiManager.FullscreenHudEnabled = false;\n            return base.CloseScreen();\n        }\n\n        public override void CloseScreenNow()\n        {\n            MyGuiManager.SetMouseCursorTexture(MyGuiManager.GetMouseCursorArrowTexture());\n            TransparentGeometry.Particles.MyParticlesManager.Enabled = m_particlesEnabled;\n            //MyMinerGame.SwitchPause();\n            Static = null;\n            MyGuiManager.FullscreenHudEnabled = false;\n            base.CloseScreenNow();\n        }\n\n        //  Just close the screen\n        public void OnBackClick()\n        {\n            CloseScreen();\n        }\n\n        public override bool Update(bool hasFocus)\n        {\n            if (!base.Update(hasFocus))\n            {\n                return false;\n            }\n\n            return true;\n        }\n\n        public override int GetTransitionOpeningTime()\n        {\n            return 0;\n        }\n\n        public override int GetTransitionClosingTime()\n        {\n            return 0;\n        }\n\n        private MySolarSystemMapNavigationMark GetNavigationMarkUnderCamera()\n        {\n            foreach (var sectorNavigationMarksKvp in m_data.NavigationMarks)\n            {\n                foreach (var navigationMark in sectorNavigationMarksKvp.Value)\n                {\n                    if (navigationMark.Sector == m_camera.TargetSector)\n                    {\n                        return navigationMark;\n                    }\n                }\n            }\n            return null;\n        }\n\n        private MySolarSystemMapNavigationMark GetNearestNavigationMarkUnderMouseCursor()\n        {\n            MySolarSystemMapNavigationMark nearestNavigationMarkUnderMouse = null;\n            float nearestDistanceFromCamera = float.MaxValue;\n\n            foreach (var sectorNavigationMarksKvp in m_data.NavigationMarks)\n            {\n                foreach (var navigationMark in sectorNavigationMarksKvp.Value)\n                {\n                    if (navigationMark.IsMouseOver())\n                    {\n                        float distanceFromCamera = navigationMark.WorldPosition.Length();\n                        if (distanceFromCamera < nearestDistanceFromCamera)\n                        {\n                            nearestDistanceFromCamera = distanceFromCamera;\n                            nearestNavigationMarkUnderMouse = navigationMark;\n                        }\n                    }\n                }\n            }\n\n            return nearestNavigationMarkUnderMouse;\n        }\n\n        private void OnTravelClick(MyGuiControlButton sender)\n        {\n            TravelToSector(m_selectedNavigationMark.Sector, m_selectedNavigationMark.MissionID);\n        }\n\n        [Conditional(\"DEBUG\")]\n        private void CopySector()\n        {\n            string pos = String.Format(\"{0}, {1}, {2}\", m_camera.TargetSector.X, m_camera.TargetSector.Y, m_camera.TargetSector.Z);\n            var thread = new Thread(() => System.Windows.Forms.Clipboard.SetText(pos));\n            thread.Name = \"CopySector\";\n            thread.SetApartmentState(ApartmentState.STA);\n            thread.Start();\n        }\n\n        [Conditional(\"DEBUG\")]\n        private void PasteSector()\n        {\n            var thread = new Thread(() =>\n            {\n                var text = System.Windows.Forms.Clipboard.GetText();\n                var parts = text.Split(new char[] { ' ', ',' }, StringSplitOptions.RemoveEmptyEntries);\n                int x, y, z;\n                if (parts.Length == 3 && int.TryParse(parts[0], out x) && int.TryParse(parts[1], out y) && int.TryParse(parts[2], out z))\n                {\n                    m_camera.MoveToSector(new MyMwcVector3Int(x, y, z));\n                }\n            });\n            thread.Name = \"PasteSector\";\n            thread.SetApartmentState(ApartmentState.STA);\n            thread.Start();\n        }\n\n        public override void HandleInput(MyGuiInput input, bool receivedFocusInThisUpdate)\n        {\n            base.HandleInput(input, receivedFocusInThisUpdate);\n\n            if (MyGuiInput.ENABLE_DEVELOPER_KEYS)\n            {\n                if (input.IsNewKeyPress(Keys.C) && input.IsAnyCtrlKeyPressed())\n                {\n                    CopySector();\n                }\n                if (input.IsNewKeyPress(Keys.V) && input.IsAnyCtrlKeyPressed())\n                {\n                    PasteSector();\n                }\n            }\n\n\n            if (MyFakes.DRAW_FACTION_AREAS_IN_SOLAR_MAP)\n            {\n                MySolarMapAreaInput.HandleInput(m_solarMapRender, input, receivedFocusInThisUpdate);\n            }\n\n            float rollIndicator = input.GetRoll();\n            Vector2 rotationIndicator = Vector2.Zero;\n            if (input.IsNewRightMousePressed() && MyVideoModeManager.IsHardwareCursorUsed())\n            {\n                m_oldRotationIndicator = input.GetRotation();\n            }\n\n            if (input.IsRightMousePressed())\n            {\n\n                if (MyVideoModeManager.IsHardwareCursorUsed())\n                {\n                    rotationIndicator = m_oldRotationIndicator - input.GetRotation();\n                    m_oldRotationIndicator = input.GetRotation();\n                }\n                else\n                    rotationIndicator = input.GetRotation();\n            }\n            Vector3 moveIndicator = input.GetPositionDelta();\n            if (input.IsKeyPress(Keys.Left))\n                moveIndicator.X = -1;\n            if (input.IsKeyPress(Keys.Right))\n                moveIndicator.X = 1;\n            if (input.IsKeyPress(Keys.Up))\n                moveIndicator.Z = -1;\n            if (input.IsKeyPress(Keys.Down))\n                moveIndicator.Z = 1;\n\n            m_camera.Zoom(input.DeltaMouseScrollWheelValue());\n\n            m_camera.MoveAndRotate(moveIndicator, rotationIndicator, rollIndicator, 1);\n\n\n            bool sectorChanged = false;\n            if (m_lastSector != m_camera.TargetSector)\n            {\n                sectorChanged = true;\n                m_lastSector = m_camera.TargetSector;\n            }\n\n\n\n            MySolarSystemMapNavigationMark navigationMarkUnderMouse = GetNearestNavigationMarkUnderMouseCursor();\n\n            const float maxHeightForEnter = MySolarSystemMapCamera.SECTOR_SIZE_GAMEUNITS * 16;\n\n            if (sectorChanged) // we have moved camera so deselect sector\n            {\n                m_selectedSector = null;\n            }\n\n\n            // tool tips\n            if (m_lastNavigationMarkUnderMouse != navigationMarkUnderMouse)\n            {\n                m_toolTip.ClearToolTips();\n                if (navigationMarkUnderMouse != null)\n                {\n                    m_toolTip.AddToolTip(new StringBuilder(GetSectorName(navigationMarkUnderMouse)));\n                    if (!String.IsNullOrEmpty(navigationMarkUnderMouse.Description))\n                    {\n                        m_toolTip.AddToolTip(new StringBuilder(navigationMarkUnderMouse.Description), Color.LightGray);\n                    }\n                    m_toolTip.AddToolTip(new StringBuilder(navigationMarkUnderMouse.Sector.ToString()), Color.LightGray);\n                }\n                m_lastNavigationMarkUnderMouse = navigationMarkUnderMouse;\n            }\n\n\n\n            if (navigationMarkUnderMouse != null)\n            {\n                MyGuiManager.SetMouseCursorTexture(MyGuiManager.GetMouseCursorHandTexture());\n\n                if (input.IsNewLeftMousePressed() && !m_travelButton.IsMouseOver())\n                {\n                    MyAudio.AddCue2D(MySoundCuesEnum.GuiMouseClick);\n                    if (m_selectedNavigationMark != null)\n                        m_selectedNavigationMark.Highlight = false;\n\n                    m_selectedNavigationMark = navigationMarkUnderMouse;\n                    m_selectedNavigationMark.Highlight = true;\n                    sectorChanged = true;\n                    m_slectionLocked = true;\n                    m_travelButton.Visible = false;\n                }\n                if (input.IsNewLeftMouseDoubleClick())\n                {\n                    TravelToSector(navigationMarkUnderMouse.Sector, navigationMarkUnderMouse.MissionID);\n                }\n            }\n            else if (m_camera.CameraDistance < maxHeightForEnter && !m_slectionLocked)\n            {\n                if (MyGuiScreenGamePlay.CanTravelToSector(m_camera.TargetSector))\n                {\n                    //MyGuiManager.SetMouseCursorTexture(MyGuiManager.GetMouseCursorHandTexture());\n                    if (m_selectedNavigationMark != null)\n                        m_selectedNavigationMark.Highlight = false;\n\n                    var navigationMarkUnderCamera = GetNavigationMarkUnderCamera();\n                    if (navigationMarkUnderCamera != null && navigationMarkUnderCamera.Sector == m_camera.TargetSector)\n                    {\n                        m_selectedNavigationMark = navigationMarkUnderCamera;\n                    }\n                    else\n                    {\n                        m_selectedNavigationMark = new MySolarSystemMapNavigationMark(m_camera.TargetSector, \"\");\n                        m_travelButton.Visible = false;\n                    }\n                }\n                else\n                {\n                    m_selectedNavigationMark = null;\n                }\n            }\n            else if (input.IsNewLeftMousePressed())\n            {\n                if (m_selectedNavigationMark != null)\n                    m_selectedNavigationMark.Highlight = false;\n                if (!m_travelButton.IsMouseOver())\n                {\n                    m_selectedNavigationMark = null;\n                }\n                m_slectionLocked = false;\n            }\n            else if (sectorChanged && m_camera.CameraDistance > maxHeightForEnter && !m_slectionLocked)\n            {\n                m_selectedNavigationMark = null;\n            }\n            else\n            {\n                MyGuiManager.SetMouseCursorTexture(MyGuiManager.GetMouseCursorArrowTexture());\n            }\n\n\n\n            if (m_selectedNavigationMark != null)\n            {\n                if (!m_travelButton.Visible)\n                {\n                    m_travelButton.Text.Clear();\n                    string text = GetSectorName(m_selectedNavigationMark);\n                    if (text.Length > 21)\n                    {\n                        text = text.Substring(0, 20);\n                        text += \"…\";\n                    }\n                    m_travelButton.Text.Append(MyTextsWrapper.GetFormatString(MyTextsWrapperEnum.TravelTo, text));\n                    //                    float width = MyGuiManager.GetNormalizedSize( MyGuiManager.GetFontMinerWarsBlue(), m_travelButton.Text, 1).X + 0.05f;\n                    //  m_travelButton.SetSize(new Vector2(width, MyGuiConstants.BACK_BUTTON_SIZE.Y));\n                    m_travelButton.Visible = true;\n                }\n            }\n            else\n            {\n                m_travelButton.Visible = false;\n            }\n\n        }\n\n        private bool m_slectionLocked;\n        private MyMwcVector3Int m_lastSector;\n        private MySolarSystemMapNavigationMark m_lastNavigationMarkUnderMouse = null;\n        private MySolarSystemMapNavigationMark m_selectedNavigationMark = null;\n\n        private void TravelToSector(MyMwcVector3Int sector, MyMissionID? missionID = null)\n        {\n            if (MyGuiScreenGamePlay.Static.IsCurrentSector(sector))\n            {\n                CloseScreen();\n                return;\n            }\n\n            if (!MyGuiScreenGamePlay.CanTravelToSector(sector))\n            {\n                MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.ForbiddenSolarMapAreaWarning, MyTextsWrapperEnum.Warning, MyTextsWrapperEnum.Ok, null));\n                return;\n            }\n\n            MyMwcVector3Int targetSector = sector;\n            m_currentSector.Position = targetSector;\n            m_currentSector.UserId = MyClientServer.LoggedPlayer.GetUserId();\n            this.CloseScreenNow();\n            MyGuiScreenGamePlay.Static.TravelToSector(m_currentSector, MyMwcTravelTypeEnum.SOLAR, MySession.PlayerShip.GetPosition(), missionID);\n        }\n\n        private string GetSectorName(MySolarSystemMapNavigationMark navigationMark)\n        {\n            string sectorName = navigationMark.Name;\n\n            if (String.IsNullOrWhiteSpace(sectorName))\n                sectorName = navigationMark.Text;\n\n            if (String.IsNullOrWhiteSpace(sectorName))\n                sectorName = navigationMark.Sector.ToString();\n\n            return sectorName;\n        }\n        public override bool Draw(float backgroundFadeAlpha)\n        {\n            foreach (var sectorNavigationMarksKvp in m_data.NavigationMarks)\n            {\n                foreach (var navigationMark in sectorNavigationMarksKvp.Value)\n                {\n                    navigationMark.Update(m_camera);\n                }\n            }\n\n            m_solarMapRender.Draw(m_camera, m_data);\n\n            MyHud.DrawOnlyMissionObjectives();\n\n            MySolarSystemMapNavigationMark navigationMarkUnderMouse = GetNearestNavigationMarkUnderMouseCursor();\n\n            if (navigationMarkUnderMouse != null)\n            {\n                var toolTipPosition = MyGuiManager.MouseCursorPosition + MyGuiConstants.TOOL_TIP_RELATIVE_DEFAULT_POSITION;\n                m_toolTip.Draw(toolTipPosition);\n            }\n\n            base.Draw(backgroundFadeAlpha);\n\n            return true;\n        }\n\n        MyToolTips m_toolTip = new MyToolTips();\n    }\n}\n\n\ninternal static class MySolarMapAreaInput\n{\n    internal static MyMwcVector3Int center;\n    internal static MyMwcVector3Int point;\n\n    internal static void HandleInput(MySolarMapRenderer renderer, MyGuiInput input, bool receivedFocusInThisUpdate)\n    {\n        if (input.IsNewKeyPress(Keys.NumPad7))\n        {\n            center = renderer.GetTargetSector();\n        }\n\n        if (input.IsNewKeyPress(Keys.NumPad9))\n        {\n            point = renderer.GetTargetSector();\n        }\n\n        if (input.IsNewKeyPress(Keys.NumPad8))\n        {\n            System.Diagnostics.Debug.WriteLine(string.Format(\"MyFactions.AddFactionArea(MyMwcObjectBuilder_FactionEnum.China, new MyMwcVector3Int({0}), new MyMwcVector3Int({1}));\", center, point));\n            MyFactions.AddFactionArea(MyMwcObjectBuilder_FactionEnum.China, center, point);\n        }\n\n        if (input.IsNewKeyPress(Keys.NumPad4))\n        {\n            Debug.WriteLine(MyFactions.GetFactionBySector(renderer.GetTargetSector()));\n        }\n    }\n\n\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/MyGuiScreenStartQuickLaunch.cs",
    "content": "﻿using System;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.GUI.ScreenEditor;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.World;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing KeenSoftwareHouse.Library.Trace;\nusing SysUtils;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing System.Diagnostics;\nusing MinerWarsMath;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.AppCode.Game.Managers.Session;\n\nnamespace MinerWars.AppCode.Game.GUI\n{\n    //this screen is invoked after succesfull login to server during quicklaunch\n    //\n    //\n\n    class MyGuiScreenStartQuickLaunch : MyGuiScreenBase\n    {\n        MyMwcQuickLaunchType m_quickLaunchType;\n        bool m_childScreenLaunched = false;\n        \n        //  Using this static public property client-server tells us about login response\n        public static MyGuiScreenStartQuickLaunch CurrentScreen = null;    //  This is always filled with reference to actual instance of this scree. If there isn't, it's null.\n\n\n        public MyGuiScreenStartQuickLaunch(MyMwcQuickLaunchType quickLaunchType, MyTextsWrapperEnum progressText) :\n            base(new Vector2(0.5f, 0.5f), MyGuiConstants.SCREEN_BACKGROUND_COLOR, null)\n        {\n            m_quickLaunchType = quickLaunchType;\n            m_backgroundFadeColor = MyGuiConstants.SCREEN_BACKGROUND_FADE_BLANK_DARK_PROGRESS_SCREEN;\n            CurrentScreen = this;\n        }\n\n        public override void LoadContent()\n        {\n            base.LoadContent();\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenStartQuickLaunch\";\n        }\n\n        public override bool Update(bool hasFocus)\n        {\n            if (!hasFocus)\n                return base.Update(hasFocus);\n\n            if (m_childScreenLaunched && hasFocus)\n                CloseScreenNow();\n\n            if (m_childScreenLaunched)\n                return base.Update(hasFocus);\n\n            switch (m_quickLaunchType)\n            {\n                case MyMwcQuickLaunchType.EDITOR_SANDBOX:\n                    {\n                        //normally when entering editor, you can choose which sector you would like, this is for programming purposes, choose whatever you want directly\n                        //MyMwcSectorIdentifier quickSectorIdentifier = new MyMwcSectorIdentifier(MyMwcSectorGroupEnum.MIDDLE_WEST, MyMwcSectorTypeEnum.SANDBOX, null, new MyMwcVector3Int(0, 0, 0));\n\n                        MyMwcSectorIdentifier quickSectorIdentifier;\n\n                        if (MyFakes.MWBUILDER)\n                        {\n                            quickSectorIdentifier = new MyMwcSectorIdentifier(MyMwcSectorTypeEnum.STORY, MyClientServer.LoggedPlayer.GetUserId(),\n                                                                                MyFakes.MWBUILDER_SECTOR, null);\n                        }\n                        else\n                        {\n                            quickSectorIdentifier = new MyMwcSectorIdentifier(MyMwcSectorTypeEnum.SANDBOX, MyClientServer.LoggedPlayer.GetUserId(),\n                                                                                MyConfig.LastSandboxSector, null);\n                        }\n\n                        bool bAssert = (quickSectorIdentifier.SectorType == MyMwcSectorTypeEnum.SANDBOX &&\n                                        quickSectorIdentifier.UserId == null);\n                        Debug.Assert(!bAssert);\n\n                        if (MyFakes.MWBUILDER)\n                        {\n                            quickSectorIdentifier.UserId = null;\n                            MyGuiManager.AddScreen(new MyGuiScreenStartSessionProgress(\n                                                        MyMwcStartSessionRequestTypeEnum.EDITOR_SANDBOX,\n                                                        MyTextsWrapperEnum.StartEditorInProgressPleaseWait,\n                                                         quickSectorIdentifier,\n                                                         MyGameplayDifficultyEnum.EASY, null, null));\n                        }\n                        else\n                        {\n                            MyGuiManager.AddScreen(new MyGuiScreenStartSessionProgress(\n                                                        MyMwcStartSessionRequestTypeEnum.EDITOR_SANDBOX,\n                                                        MyTextsWrapperEnum.StartEditorInProgressPleaseWait,\n                                                         quickSectorIdentifier,\n                                                         MyGameplayDifficultyEnum.EASY, null, null));\n                        }\n                        m_childScreenLaunched = true;\n                    }\n                    break;\n                case MyMwcQuickLaunchType.LAST_SANDBOX:\n                    {\n                        //normally when entering editor, you can choose which sector you would like, this is for programming purposes, choose whatever you want directly\n                        //MyMwcSectorIdentifier quickSectorIdentifier = new MyMwcSectorIdentifier(MyMwcSectorGroupEnum.MIDDLE_WEST, MyMwcSectorTypeEnum.SANDBOX, null, new MyMwcVector3Int(0, 0, 0));\n\n                        MyMwcSectorIdentifier quickSectorIdentifier;\n\n                        int userId = MyClientServer.LoggedPlayer.GetUserId();\n                        MyMwcVector3Int sector = MyConfig.LastSandboxSector;\n\n                        if (MyConfig.LastFriendSectorUserId.HasValue)\n                        {\n                            userId = MyConfig.LastFriendSectorUserId.Value;\n                            sector = MyConfig.LastFriendSectorPosition;\n                        }\n\n                        quickSectorIdentifier = new MyMwcSectorIdentifier(MyMwcSectorTypeEnum.SANDBOX, userId,\n                                                                           sector, null);\n\n                        bool bAssert = (quickSectorIdentifier.SectorType == MyMwcSectorTypeEnum.SANDBOX &&\n                                        quickSectorIdentifier.UserId == null);\n                        Debug.Assert(!bAssert);\n\n                        MyGuiManager.AddScreen(new MyGuiScreenStartSessionProgress(\n                                                    MyMwcStartSessionRequestTypeEnum.SANDBOX_FRIENDS,\n                                                    MyTextsWrapperEnum.StartGameInProgressPleaseWait,\n                                                     quickSectorIdentifier,\n                                                     MyGameplayDifficultyEnum.EASY, null, null));\n                        m_childScreenLaunched = true;\n                    }\n                    break;\n                case MyMwcQuickLaunchType.NEW_STORY:\n                    {\n                        MySession.StartNewGame(MyGameplayDifficultyEnum.EASY);\n                        m_childScreenLaunched = true;\n                    }\n                    break;\n                case MyMwcQuickLaunchType.LOAD_CHECKPOINT:\n                    {\n                        MySession.StartLastCheckpoint();\n                        m_childScreenLaunched = true;\n                    }\n                    break;\n                case MyMwcQuickLaunchType.SANDBOX_RANDOM:\n                    {\n                        MyGuiManager.AddScreen(new MyGuiScreenStartSessionProgress(\n                                                        MyMwcStartSessionRequestTypeEnum.SANDBOX_RANDOM,\n                                                        MyTextsWrapperEnum.StartGameInProgressPleaseWait,\n                                                        new MyMwcSectorIdentifier(\n                                                            MyMwcSectorTypeEnum.SANDBOX, MyClientServer.LoggedPlayer.GetUserId(),\n                                                            new MyMwcVector3Int(0, 0, 0), null),\n                                                            MyGameplayDifficultyEnum.EASY,\n                                                            null,\n                                                        null));\n                        m_childScreenLaunched = true;\n                    }\n                    break;\n                default:\n                    {\n                        throw new MyMwcExceptionApplicationShouldNotGetHere();\n                    }\n            }\n           \n            return base.Update(hasFocus);\n        }\n\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/MyGuiScreenStartSessionProgress.cs",
    "content": "﻿using System;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.GUI.ScreenEditor;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.World;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing KeenSoftwareHouse.Library.Trace;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Gameplay;\nusing System.Diagnostics;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Missions;\nusing MinerWars.AppCode.Game.World.Global;\n\n//  IMPORTANT: THIS SCREEN CAN'T BE CANCELED BY ESC OR CANCEL BUTTON BECAUSE THAT WOULD INTERFERE THE PROCESS ON SERVER\n\nnamespace MinerWars.AppCode.Game.GUI\n{\n    class MyGuiScreenStartSessionProgress : MyGuiScreenProgressBase\n    {\n        MyMwcSectorIdentifier? m_sectorIdentifier;\n        MyMwcStartSessionRequestTypeEnum m_sessionType;\n        MyGuiScreenBase m_closeAfter;\n        MyGameplayDifficultyEnum m_difficulty;\n        string m_checkpointName;\n\n        public Action<MyGuiScreenGamePlayType, MyMwcStartSessionRequestTypeEnum, MyMwcObjectBuilder_Checkpoint> OnSuccessEnter { get; set; }\n        \n        //  Using this static public property client-server tells us about login response\n        public static MyGuiScreenStartSessionProgress CurrentScreen = null;    //  This is always filled with reference to actual instance of this scree. If there isn't, it's null.\n\n\n        public MyGuiScreenStartSessionProgress(MyMwcStartSessionRequestTypeEnum sessionType,  MyTextsWrapperEnum progressText, MyMwcSectorIdentifier? sectorIdentifier, MyGameplayDifficultyEnum difficulty, string checkpointName, MyGuiScreenBase closeAfter) : \n            base(progressText, false)\n        {\n            // TODO: Not ready yet\n            //Debug.Assert(sessionType != MyMwcStartSessionRequestTypeEnum.NEW_STORY && sessionType != MyMwcStartSessionRequestTypeEnum.LOAD_CHECKPOINT, \"Invalid operation, call OndrejP\");\n\n            m_sectorIdentifier = sectorIdentifier;\n            m_sessionType = sessionType;\n            m_backgroundFadeColor = MyGuiConstants.SCREEN_BACKGROUND_FADE_BLANK_DARK_PROGRESS_SCREEN;\n            m_closeAfter = closeAfter;\n            m_difficulty = difficulty;\n            m_checkpointName = checkpointName;\n            CurrentScreen = this;\n\n            OnSuccessEnter = new Action<MyGuiScreenGamePlayType, MyMwcStartSessionRequestTypeEnum, MyMwcObjectBuilder_Checkpoint>((screenType, sessType, checkpoint) =>\n            {\n                var newGameplayScreen = new MyGuiScreenGamePlay(screenType, null, checkpoint.CurrentSector, checkpoint.SectorObjectBuilder.Version, sessType);\n                var loadScreen = new MyGuiScreenLoading(newGameplayScreen, MyGuiScreenGamePlay.Static);\n\n                if (sessType == MyMwcStartSessionRequestTypeEnum.NEW_STORY)\n                    loadScreen.AddEnterSectorResponse(checkpoint, MyMissionID.EAC_SURVEY_SITE);\n                else\n                    loadScreen.AddEnterSectorResponse(checkpoint, null);\n\n                MyGuiManager.AddScreen(loadScreen);\n            });\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenStartSessionProgress\";\n        }\n\n        protected override void ProgressStart()\n        {\n            //MyClientServer.SendMessageStartSessionRequest(m_sessionType, m_sectorIdentifier, m_difficulty);\n\n            MyGameplayConstants.SetGameplayDifficulty(m_difficulty);\n        }\n\n        public void AddResponse(MyMwcStartSessionResponseTypeEnum startSessionResponse, MyMwcSectorIdentifier? sectorIdentifier, MyGameplayDifficultyEnum difficulty)\n        {\n            MyGuiScreenGamePlayType screenType;\n\n            if (startSessionResponse == MyMwcStartSessionResponseTypeEnum.OK)\n            {\n                MyMwcSectorTypeEnum sessionType;\n                MyMwcSessionStateEnum sessionStartType;\n                int? userId = null;\n                MyMwcVector3Int? position = null;\n\n                if ((m_sessionType == MyMwcStartSessionRequestTypeEnum.NEW_STORY) || (m_sessionType == MyMwcStartSessionRequestTypeEnum.LOAD_CHECKPOINT))\n                {\n                    MySession.Static = new MySinglePlayerSession(difficulty);\n                    MySession.Static.Init();\n\n                    screenType = MyGuiScreenGamePlayType.GAME_STORY;\n\n                    sessionType = MyMwcSectorTypeEnum.STORY;\n                    sessionStartType = m_sessionType == MyMwcStartSessionRequestTypeEnum.NEW_STORY ? MyMwcSessionStateEnum.NEW_GAME : MyMwcSessionStateEnum.LOAD_CHECKPOINT;\n                    userId = MyClientServer.LoggedPlayer.GetUserId();\n                }\n                else if (m_sessionType == MyMwcStartSessionRequestTypeEnum.EDITOR_SANDBOX)\n                {\n                    MySession.Static = new MySandboxSession();\n                    MySession.Static.Init();\n\n                    screenType = MyGuiScreenGamePlayType.EDITOR_SANDBOX;\n\n                    Debug.Assert(m_sectorIdentifier.HasValue, \"Sector identifier must be set for editor\");\n                    Debug.Assert(m_sectorIdentifier.Value.UserId == null || m_sectorIdentifier.Value.UserId == MyClientServer.LoggedPlayer.GetUserId(), \"Sandbox sector user identifier must be null or same as current user\");\n                    sessionType = MyMwcSectorTypeEnum.SANDBOX;\n                    sessionStartType = MyMwcSessionStateEnum.EDITOR;\n                    userId = m_sectorIdentifier.Value.UserId;\n                    position = m_sectorIdentifier.Value.Position;\n                }\n                else if (m_sessionType == MyMwcStartSessionRequestTypeEnum.EDITOR_STORY)\n                {\n                    MySession.Static = new MySinglePlayerSession(difficulty);\n                    MySession.Static.Init();\n\n                    screenType = MyGuiScreenGamePlayType.EDITOR_STORY;\n\n                    Debug.Assert(m_sectorIdentifier.HasValue, \"Sector identifier must be set for editor\");\n                    sessionType = MyMwcSectorTypeEnum.STORY;\n                    sessionStartType = MyMwcSessionStateEnum.EDITOR;\n                    userId = null;\n                    position = m_sectorIdentifier.Value.Position;\n                }\n                else if (m_sessionType == MyMwcStartSessionRequestTypeEnum.EDITOR_MMO)\n                {\n                    MySession.Static = new MySinglePlayerSession(difficulty);\n                    MySession.Static.Init();\n\n                    screenType = MyGuiScreenGamePlayType.EDITOR_MMO;\n\n                    Debug.Assert(m_sectorIdentifier.HasValue, \"Sector identifier must be set for editor\");\n                    sessionType = MyMwcSectorTypeEnum.MMO;\n                    sessionStartType = MyMwcSessionStateEnum.EDITOR;\n                    userId = null;\n                    position = m_sectorIdentifier.Value.Position;\n                }\n                else if (\n                    (m_sessionType == MyMwcStartSessionRequestTypeEnum.SANDBOX_OWN) || \n                    (m_sessionType == MyMwcStartSessionRequestTypeEnum.SANDBOX_FRIENDS) ||\n                    (m_sessionType == MyMwcStartSessionRequestTypeEnum.SANDBOX_RANDOM))\n                {\n                    MySession.Static = new MySandboxSession();\n                    MySession.Static.Init();\n\n                    screenType = MyGuiScreenGamePlayType.GAME_SANDBOX;\n\n                    Debug.Assert(m_sectorIdentifier.HasValue, \"Sector identifier must be set for sandbox\");\n                    sessionType = MyMwcSectorTypeEnum.SANDBOX;\n                    sessionStartType = MyMwcSessionStateEnum.LOAD_CHECKPOINT;\n                    userId = m_sectorIdentifier.Value.UserId;\n                    position = m_sectorIdentifier.Value.Position;\n                    //if (m_sessionType != MyMwcStartSessionRequestTypeEnum.SANDBOX_RANDOM)\n                    //{\n                    //    position = m_sectorIdentifier.Value.Position;\n                    //}\n                }\n                else\n                {\n                    throw new NotImplementedException();\n                }\n                \n                Action<MyMwcObjectBuilder_Checkpoint> enterSuccessAction = new Action<MyMwcObjectBuilder_Checkpoint>((checkpoint) =>\n                {\n                    OnSuccessEnter(screenType, m_sessionType, checkpoint);\n                });\n\n                MyGuiManager.AddScreen(new MyGuiScreenLoadCheckpointProgress(sessionType, sessionStartType, userId, position, m_checkpointName, enterSuccessAction));\n\n                if (m_closeAfter != null) m_closeAfter.CloseScreenNow();\n            }\n            else\n            {\n                MyMwcLog.WriteLine(\"Error starting the session: \" + startSessionResponse.ToString());\n                MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.StartGameFailed,\n                    MyTextsWrapperEnum.MessageBoxCaptionError, MyTextsWrapperEnum.Ok, null));\n            }\n\n            CloseScreen();\n        }\n\n        public override bool Update(bool hasFocus)\n        {\n            if (base.Update(hasFocus) == false) return false;\n\n            //  Only continue if this screen is really open (not closing or closed)\n            if (GetState() != MyGuiScreenState.OPENED) return false;\n\n            AddResponse(MyMwcStartSessionResponseTypeEnum.OK, m_sectorIdentifier, m_difficulty);\n\n            return true;\n        }\n\n        public override bool CloseScreen()\n        {\n            bool ret = base.CloseScreen();\n\n            if (ret == true)\n            {\n                CurrentScreen = null;\n            }\n\n            return ret;\n        }\n\n        public override int GetTransitionOpeningTime()\n        {\n            return 0;\n        }\n\n        public override int GetTransitionClosingTime()\n        {\n            return 0;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/MyGuiScreenUnloading.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Threading;\nusing MinerWarsMath;\nusing MinerWarsMath.Graphics;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.GUI.Helpers;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.Networking.SectorService;\nusing MinerWars.AppCode.Game.Managers;\nusing SysUtils;\nusing MinerWars.AppCode.Game.Missions;\nusing MinerWars.AppCode.Game.World.Global;\nusing System.Diagnostics;\nusing SharpDX.Direct3D9;\n\n//  This screen is special because it is drawn during we load some other screen - LoadContent - in another thread.\n//  Player sees this \"...Loading...\" screen.\n\nnamespace MinerWars.AppCode.Game.GUI\n{\n    class MyGuiScreenUnloading : MyGuiScreenBase\n    {\n        MyGuiScreenGamePlay m_screenToUnload;\n        MyGuiScreenBase m_screenToShowAfter;\n        \n        //Thread m_loadingThread;\n        Thread m_drawLoadingThread;\n\n        Thread m_loadInDrawThread;\n        \n        MyTexture2D m_backgroundScreenTexture;\n        MyTexture2D m_rotatingWheelTexture;\n\n\n        public static MyTexture2D LastBackgroundTexture;\n\n        volatile bool m_loadInDrawFinished;\n        EventWaitHandle m_backgroundThreadExit;\n\n        bool m_loadFinished;\n        MyTextsWrapperEnum m_currentQuoteOfTheDay;\n\n        public MyGuiScreenUnloading(MyGuiScreenGamePlay screenToUnload, MyGuiScreenBase screenToShowAfter)\n            : base(Vector2.Zero, null, null)\n        {\n            m_screenToUnload = screenToUnload;\n            m_closeOnEsc = false;\n            DrawMouseCursor = false;\n            m_loadInDrawFinished = false;\n            m_drawEvenWithoutFocus = true;\n            m_currentQuoteOfTheDay = MyQuoteOfTheDay.GetRandomQuote();\n            \n            Vector2 loadingTextSize = MyGuiManager.GetNormalizedSize(MyGuiManager.GetFontMinerWarsBlue(),\n                MyTextsWrapper.Get(MyTextsWrapperEnum.LoadingPleaseWait), MyGuiConstants.LOADING_PLEASE_WAIT_SCALE);\n            m_rotatingWheelTexture = MyGuiManager.GetLoadingTexture();\n            Controls.Add(new MyGuiControlRotatingWheel(this, MyGuiConstants.LOADING_PLEASE_WAIT_POSITION - new Vector2(0, 0.075f + loadingTextSize.Y),\n                MyGuiConstants.ROTATING_WHEEL_COLOR, MyGuiConstants.ROTATING_WHEEL_DEFAULT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, m_rotatingWheelTexture));\n\n            m_loadFinished = false;\n\n            MyMinerGame.IsGameReady = false;\n            m_screenToShowAfter = screenToShowAfter;\n        }\n        \n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenUnloading\";\n        }\n\n        /// <summary>\n        /// Sends server a message that player has left a sector\n        /// </summary>\n        public bool AnnounceLeaveToServer { get; set; }\n        public MyMwcLeaveSectorReasonEnum LeaveSectorReason { get; set; }\n\n        public override void LoadContent()\n        {\n            MyMwcLog.WriteLine(\"MyGuiScreenUnloading.LoadContent - START\");\n            MyMwcLog.IncreaseIndent();\n            AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyGuiScreenUnloading::LoadContent\");\n\n            //  We must stop XACT sounds here, not in the background thread, because on Windows XP is safer if only\n            //  main thread uses XACT. If we do it from background thread, we won't probably hear no sound.\n            MyAudio.Stop();           \n\n            m_backgroundScreenTexture = null ?? MyTextureManager.GetTexture<MyTexture2D>(GetRandomBackgroundTexture(), flags: TextureFlags.IgnoreQuality);\n            m_minerWarsLogoTexture = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\MinerWarsLogoLarge\", null, LoadingMode.Immediate, flags: TextureFlags.IgnoreQuality);\n            //m_minerWarsActorsTexture = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\MinerWarsActors\", flags: TextureFlags.IgnoreQuality);\n\n            if (m_screenToUnload != null)\n            {\n                //  If there is existing screen we are trying to replace (e.g. gameplay screen), we will mark this one as unloaded, so\n                //  then remove screen method won't try to unload it and we can do it in our thread. This is also the reason why we do it\n                //  here, becasue changing IsLoaded in paralel thread can't tell us when it happens - and this must be serial.\n                m_screenToUnload.IsLoaded = false;\n                m_screenToUnload.CloseScreenNow();\n            }\n\n            m_currentQuoteOfTheDay = MyQuoteOfTheDay.GetRandomQuote();\n\n            //  Base load content must be called after child's load content\n            base.LoadContent();\n\n\n            m_loadFinished = false;\n\n            AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyGuiScreenUnloading.LoadContent - END\");\n        }\n\n        static string GetRandomBackgroundTexture()\n        {\n            int randomNumber = MyMwcUtils.GetRandomInt(MyGuiConstants.LOADING_RANDOM_SCREEN_INDEX_MIN, MyGuiConstants.LOADING_RANDOM_SCREEN_INDEX_MAX + 1);\n            string paddedNumber = randomNumber.ToString().PadLeft(3, '0');\n            return \"Textures\\\\GUI\\\\LoadingScreen\\\\Background\" + paddedNumber;\n        }\n\n        public override void UnloadContent()\n        {\n            AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyGuiScreenUnloading::UnloadContent\");\n            //  This is just for case that whole application is quiting after Alt+F4 or something\n            //  Don't try to unload content in that thread or something - we don't know in what state it is. Just abort it.\n\n            //if (m_loadingThread != null && m_loadingThread.IsAlive == true)\n            {\n                //  Abort won't stop the thread immediately (it just throws exception inside it), so we use Join to wait until that thread is really finished                \n              //  m_loadingThread.Abort();\n               // m_loadingThread.Join();\n            }\n\n            if (m_backgroundScreenTexture != null) MyTextureManager.UnloadTexture(m_backgroundScreenTexture);\n            if (m_backgroundScreenTexture!=null) MyTextureManager.UnloadTexture(m_rotatingWheelTexture);\n            \n\n            base.UnloadContent();\n\n            AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        public override bool Update(bool hasFocus)\n        {\n            if (base.Update(hasFocus) == false) return false;\n\n            int blockUpdate = -1;\n            AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyGuiScreenUnloading::Update()\", ref blockUpdate);\n\n            if (this.GetState() == MyGuiScreenState.OPENED)\n            {\n                if (!m_loadFinished)\n                {\n                    int blockLoad = -1;\n                    AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"LoadInBackgroundThread\", ref blockLoad);\n\n                    m_backgroundThreadExit = new ManualResetEvent(false);\n\n                    m_drawLoadingThread = new Thread(BackgroundWorkerThread);\n                    m_drawLoadingThread.Name = \"Unloading thread\";\n                    m_drawLoadingThread.IsBackground = true;\n                    MyGuiManager.AllowedThread = m_drawLoadingThread;\n                    m_drawLoadingThread.Start();\n\n                    if (m_screenToUnload != null)\n                    {\n                        MyMwcLog.WriteLine(\"RunBackgroundThread - START\");\n                        m_screenToUnload.UnloadContent();\n                        m_screenToUnload.UnloadData();\n                        m_screenToUnload.CloseScreenNow();\n                        m_screenToUnload = null;\n                        MyMwcLog.WriteLine(\"RunBackgroundThread - END\");                        \n                    }\n\n                    m_backgroundThreadExit.Set();\n                    m_drawLoadingThread.Join();\n\n                    m_loadFinished = true;\n                    MyGuiManager.AllowedThread = Thread.CurrentThread;\n\n                    AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock(blockLoad);\n                }\n            }\n            if(m_loadFinished){\n                MyMinerGame.IsGameReady = true;\n                CloseScreen();\n            }\n\n            AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock(blockUpdate);\n\n            return true;\n        }\n\n        void OnLoadingDone()\n        {\n            \n        }\n\n        public override bool CloseScreen()\n        {\n            bool ret = base.CloseScreen();\n\n            if (ret == true && m_screenToShowAfter != null)\n            {\n                //  Screen is loaded so now we can add it to other thread\n                MyGuiManager.AddScreen(m_screenToShowAfter);\n                m_screenToShowAfter = null;\n            }\n\n            return ret;\n        }\n\n        static long lastEnvWorkingSet = 0;\n        static long lastGc = 0;\n        static long lastVid = 0;\n        \n        void BackgroundWorkerThread()\n        {\n            long lastTime = MyMinerGame.TotalTimeInMilliseconds;\n\n            // EventWaitHandle.WaitOne will return true if the exit signal has\n            // been triggered, or false if the timeout has expired. We use the\n            // timeout to update at regular intervals, then break out of the\n            // loop when we are signalled to exit.\n\n            while (!m_backgroundThreadExit.WaitOne(1000 / 30))\n            {\n                //GameTime gameTime = GetGameTime(ref lastTime);\n\n                DrawLoadAnimation();\n            }\n        }\n\n        void DrawLoadAnimation(/*GameTime gameTime*/)\n        {\n            if ((MyMinerGame.Static.GraphicsDevice == null) || MyMinerGame.Static.GraphicsDevice.IsDisposed)\n                return;\n\n            try\n            {\n                try\n                {\n                    MyGuiManager.BeginSpriteBatch();\n                    DrawLoading(0.0f);\n                }\n                catch (Exception)\n                {\n                    Debug.Fail(\"Loading screen draw crashed: \");\n                    // If anything went wrong (for instance the graphics device was lost\n                    // or reset) we don't have any good way to recover while running on a\n                    // background thread. Setting the device to null will stop us from\n                    // rendering, so the main game can deal with the problem later on.\n                    //MyMinerGame.Static.GraphicsDevice = null;\n                }\n                finally\n                {\n                    MyGuiManager.EndSpriteBatch();\n                }\n\n\n                //  Slow down drawing of \"loading...\" screens, so background thread who is actualy loading content will have more time (CPU resources) to do his job.\n                //  Plus these two threads won't fight for graphic device. It's not big difference, just 10% or so.\n                Thread.Sleep(MyGuiConstants.LOADING_THREAD_DRAW_SLEEP_IN_MILISECONDS);\n\n                MyGuiScreenGamePlay.DrawLoadsCount();\n\n                MyMinerGame.Static.GraphicsDevice.Present();\n            }\n            catch (Exception)\n            {\n                Debug.Fail(\"Loading screen draw crashed: \");\n            }            \n        }\n\n        public bool DrawLoading(float backgroundFadeAlpha)\n        {\n            m_transitionAlpha = 1.0f;\n\n            MyMinerGame.Static.GraphicsDevice.Clear(ClearFlags.Target, new SharpDX.ColorBGRA(0) , 0, 0);\n\n            Color colorQuote = new Color(255, 255, 255, 250);     //  White\n            colorQuote.A = (byte)(colorQuote.A * m_transitionAlpha);\n            //if (m_backgroundTextureFromConstructor == null)\n            {\n                //////////////////////////////////////////////////////////////////////\n                //  Normal loading screen\n                //////////////////////////////////////////////////////////////////////\n\n                //  Random background texture\n                Rectangle backgroundRectangle;\n                MyGuiManager.GetSafeHeightFullScreenPictureSize(MyGuiConstants.LOADING_BACKGROUND_TEXTURE_REAL_SIZE, out backgroundRectangle);\n                MyGuiManager.DrawSpriteBatch(m_backgroundScreenTexture, backgroundRectangle, new Color(new Vector4(0.95f, 0.95f, 0.95f, m_transitionAlpha)));\n\n                //  Miner Wars logo\n                DrawMinerWarsLogo();\n\n                //  Current version:\n                //DrawAppVersion();\n                //DrawGlobalVersionText();\n\n                //  Quote of the day or something\n                MyGuiManager.DrawStringCentered(MyGuiManager.GetFontMinerWarsBlue(), (new System.Text.StringBuilder()).Append(MyTextsWrapper.Get(MyTextsWrapperEnum.Tip)).Append(\" \").Append(MyTextsWrapper.Get(m_currentQuoteOfTheDay)),\n                    new Vector2(0.5f, 0.55f), 1.15f, colorQuote, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER);\n            }\n\n            LastBackgroundTexture = m_backgroundScreenTexture;\n\n            //  Loading Please Wait\n            MyGuiManager.DrawString(MyGuiManager.GetFontMinerWarsBlue(), MyTextsWrapper.Get(MyTextsWrapperEnum.LoadingPleaseWait),\n                MyGuiConstants.LOADING_PLEASE_WAIT_POSITION, MyGuiConstants.LOADING_PLEASE_WAIT_SCALE, new Color(MyGuiConstants.LOADING_PLEASE_WAIT_COLOR * GetTransitionAlpha()), \n                MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_BOTTOM);\n\n            if (base.Draw(backgroundFadeAlpha) == false)\n                return false;\n\n           \n            return true;\n        }       \n\n        public override bool Draw(float backgroundFadeAlpha)\n        {\n            //  This must be in Draw method, because I have found that writing data to GPU doesn't work when game is not active for a while.\n            //  For example when user pressed alt-tab during loading screen, some models were not loaded, but game didn't crash. Probably XNA error.\n            //  What we do is: in background we process only data, don't touch the GPU. Then here when all data is loaded or processed,\n            //  here in Draw we write everything to GPU, even though it stops main thread for a while. Reason is that Draw checks if\n            //  graphics device isn't lost and doesn't call Draw if it is lost.\n\n            return DrawLoading(backgroundFadeAlpha);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/MyGuiScreenUseProgressBar.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.GUI.Core;\n\nnamespace MinerWars.AppCode.Game.GUI\n{\n    class MyGuiScreenUseProgressBar : MyGuiScreenSimpleProgressBar\n    {\n        private MyGameControlEnums m_gameControl;  // practically always MyGameControlEnums.USE\n        private int m_closeTime;\n        //private int m_startedTime;\n        private int m_successTime;\n        private int m_time;        \n\n        public event EventHandler OnCanceled;\n        public event EventHandler OnSuccess;\n\n        public MyGuiScreenUseProgressBar(MyTextsWrapperEnum caption, StringBuilder text, float value, MySoundCuesEnum? progressCueEnum, MySoundCuesEnum? cancelCueEnum, MyGameControlEnums gameControl, int closeTime, int successTime, int decimals, MySoundCuesEnum? successCueEnum = null)\n            : base(caption, text, value, progressCueEnum, cancelCueEnum, decimals, successCueEnum)\n        {\n            DrawMouseCursor = false;\n\n            m_gameControl = gameControl;\n            m_closeTime = closeTime;\n            m_successTime = successTime;            \n            //m_startedTime = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n        }        \n\n        public void Reset() \n        {\n            m_time = 0;\n            m_progressBar.Value =0;\n        }\n\n        public MyGuiScreenUseProgressBar(MyTextsWrapperEnum caption, MyTextsWrapperEnum text, float value, MySoundCuesEnum? progressCueEnum, MySoundCuesEnum? cancelCueEnum, MyGameControlEnums gameControl, int closeTime, int successTime, int decimals, MySoundCuesEnum? successCueEnum = null)\n            : this(caption, MyTextsWrapper.Get(text), value, progressCueEnum, cancelCueEnum, gameControl, closeTime, successTime, decimals, successCueEnum) \n        {            \n        }        \n\n        public override void HandleInput(MyGuiInput input, bool receivedFocusInThisUpdate)\n        {\n            base.HandleInput(input, receivedFocusInThisUpdate);\n            if (!input.IsGameControlPressed(m_gameControl) && m_time >= m_closeTime)\n            {\n                if (OnCanceled != null)\n                {\n                    OnCanceled(this, EventArgs.Empty);\n                }\n                CloseScreenNow();\n            }            \n        }\n\n        public override bool Update(bool hasFocus)\n        {\n            if (!base.Update(hasFocus)) return false;\n\n            m_time += MyConstants.PHYSICS_STEP_SIZE_IN_MILLISECONDS;\n\n            if (GetValue() >= SUCCESS_VALUE)\n            {\n                if (OnSuccess != null) \n                {\n                    OnSuccess(this, EventArgs.Empty);\n                }\n                CloseScreenNow();\n            }\n            else \n            {\n                float newValue = (float)Math.Round((double)m_time / (double)m_successTime, 2);\n                UpdateValue(newValue);\n            }\n\n            return true;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/MyGuiScreenUserInfo.cs",
    "content": "using System.Diagnostics;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.World;\nusing MinerWars.AppCode.Networking;\nusing System;\n\nnamespace MinerWars.AppCode.Game.GUI\n{\n    class MyGuiScreenUserInfo : MyGuiScreenBase\n    {\n        private StringBuilder m_dash = new StringBuilder(\"-\");\n        public MyGuiScreenUserInfo()\n            : base(new Vector2(.5f, .5f), MyGuiConstants.SCREEN_BACKGROUND_COLOR, new Vector2(0.6f, 0.8f))\n        {\n            m_enableBackgroundFade = true;\n            m_backgroundTexture = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\BackgroundScreen\\\\ProfileBackground\", flags: TextureFlags.IgnoreQuality);\n\n            // User name\n            AddCaption(MyClientServer.LoggedPlayer.UserName, MyGuiConstants.SCREEN_CAPTION_TEXT_COLOR, new Vector2(0, 0.01f));\n            AddBackButton();\n\n            // some info in:\n            //MyClientServer.LoggedPlayer\n            //all other in MyClientServer.LoggedPlayer.AdditionalInfo\n\n            Debug.Assert(m_size != null, \"m_size != null\");\n            var currentLabelPosition = new Vector2(0.0f, -0.35f * m_size.Value.Y);\n            var padding = new Vector2(0.005f, 0);\n\n            // Display name\n            Controls.Add(new MyGuiControlLabel(this, currentLabelPosition - padding, null, MyTextsWrapperEnum.InfoDisplayName, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_CENTER));\n            Controls.Add(new MyGuiControlLabel(this, currentLabelPosition + padding, null, MyClientServer.LoggedPlayer.GetDisplayName(), MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n            \n            //currentLabelPosition.Y += 0.03f;\n\n            // E-mail\n            //Controls.Add(new MyGuiControlLabel(this, currentLabelPosition - padding, null, MyTextsWrapperEnum.InfoEmail, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_CENTER));\n            //Controls.Add(new MyGuiControlLabel(this, currentLabelPosition + padding, null, MyTextsWrapperEnum.FeatureNotYetImplemented, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n\n            currentLabelPosition.Y += 0.03f;\n\n            // Age\n            Controls.Add(new MyGuiControlLabel(this, currentLabelPosition - padding, null, MyTextsWrapperEnum.InfoAge, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_CENTER));\n            Controls.Add(new MyGuiControlLabel(this, currentLabelPosition + padding, null, WriteInfo(MyClientServer.LoggedPlayer.AdditionalInfo.Age), MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n\n            currentLabelPosition.Y += 0.03f;\n\n            // Gender\n            Controls.Add(new MyGuiControlLabel(this, currentLabelPosition - padding, null, MyTextsWrapperEnum.InfoGender, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_CENTER));\n            Controls.Add(new MyGuiControlLabel(this, currentLabelPosition + padding, null, WriteGender(MyClientServer.LoggedPlayer.AdditionalInfo.Gender), MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n\n            currentLabelPosition.Y += 0.03f;\n\n            // Registered (register date)\n            Controls.Add(new MyGuiControlLabel(this, currentLabelPosition - padding, null, MyTextsWrapperEnum.InfoRegistered, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_CENTER));\n            Controls.Add(new MyGuiControlLabel(this, currentLabelPosition + padding, null, WriteInfo(MyClientServer.LoggedPlayer.AdditionalInfo.Registered), MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n\n            currentLabelPosition.Y += 0.03f;\n\n            // Lastweblogin\n            Controls.Add(new MyGuiControlLabel(this, currentLabelPosition - padding, null, MyTextsWrapperEnum.InfoWebLogin, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_CENTER));\n            Controls.Add(new MyGuiControlLabel(this, currentLabelPosition + padding, null, WriteInfo(MyClientServer.LoggedPlayer.AdditionalInfo.LastWebsiteLogin), MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n\n            currentLabelPosition.Y += 0.03f;\n\n            // Lastgamelogin (previous)\n            Controls.Add(new MyGuiControlLabel(this, currentLabelPosition - padding, null, MyTextsWrapperEnum.InfoGameLogin, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_CENTER));\n            Controls.Add(new MyGuiControlLabel(this, currentLabelPosition + padding, null, WriteInfo(MyClientServer.LoggedPlayer.AdditionalInfo.LastGameLogin), MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n\n            currentLabelPosition.Y += 0.03f;\n\n            // Forum posts\n            Controls.Add(new MyGuiControlLabel(this, currentLabelPosition - padding, null, MyTextsWrapperEnum.InfoForumPosts, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_CENTER));\n            Controls.Add(new MyGuiControlLabel(this, currentLabelPosition + padding, null, WriteInfo(MyClientServer.LoggedPlayer.AdditionalInfo.ForumPosts), MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n\n            currentLabelPosition.Y += 0.03f;\n\n            // Affiliate URL Registrations\n            Controls.Add(new MyGuiControlLabel(this, currentLabelPosition - padding, null, MyTextsWrapperEnum.InfoAffReg, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_CENTER));\n            Controls.Add(new MyGuiControlLabel(this, currentLabelPosition + padding, null, WriteInfo(MyClientServer.LoggedPlayer.AdditionalInfo.AffiliateUrlRegistrations), MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n\n            currentLabelPosition.Y += 0.03f;\n\n            // Affiliate URL Unique Clicks\n            Controls.Add(new MyGuiControlLabel(this, currentLabelPosition - padding, null, MyTextsWrapperEnum.InfoAffClick, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_CENTER));\n            Controls.Add(new MyGuiControlLabel(this, currentLabelPosition + padding, null, WriteInfo(MyClientServer.LoggedPlayer.AdditionalInfo.AffiliateUniqueClicks), MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n\n            currentLabelPosition.Y += 0.03f;\n\n            // Contributions\n            Controls.Add(new MyGuiControlLabel(this, currentLabelPosition - padding, null, MyTextsWrapperEnum.InfoContributions, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_CENTER));\n            Controls.Add(new MyGuiControlLabel(this, currentLabelPosition + padding, null, WriteInfo(MyClientServer.LoggedPlayer.AdditionalInfo.Contributions, \"$\"), MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n\n            currentLabelPosition.Y += 0.03f;\n\n            // Qualification Points\n            Controls.Add(new MyGuiControlLabel(this, currentLabelPosition - padding, null, MyTextsWrapperEnum.InfoQualificationPoints, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_CENTER));\n            Controls.Add(new MyGuiControlLabel(this, currentLabelPosition + padding, null, WriteInfo(MyClientServer.LoggedPlayer.AdditionalInfo.QualificationPoinsts), MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n\n            currentLabelPosition.Y += 0.03f;\n\n            // Description\n            Controls.Add(new MyGuiControlLabel(this, currentLabelPosition - padding, null, MyTextsWrapperEnum.InfoDescription, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_CENTER));\n            Controls.Add(new MyGuiControlLabel(this, currentLabelPosition + padding, null, WriteInfoTrim(MyClientServer.LoggedPlayer.AdditionalInfo.Description), MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n\n            currentLabelPosition.Y += 0.03f;\n\n            // Secrets found\n            Controls.Add(new MyGuiControlLabel(this, currentLabelPosition - padding, null, MyTextsWrapperEnum.SecretRoomsFound, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_CENTER));\n            Controls.Add(new MyGuiControlLabel(this, currentLabelPosition + padding, null, WriteInfo(MySteamStats.GetStatInt(MySteamStatNames.FoundSecrets)), MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n        }\n\n        private StringBuilder WriteInfoTrim<T>(T info, string pre = \"\", string post = \"\")\n        {\n            if (info == null)\n            {\n                return m_dash;\n            }\n\n            string text = info.ToString();\n            var splits = text.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);\n            if (splits.Length > 0)\n            {\n                text = splits[0];\n            }\n            if (text.Length > 30)\n            {\n                text = text.Substring(0, 30);\n            }\n\n            return new StringBuilder(pre + text + post);\n        }\n\n        private StringBuilder WriteInfo<T>(T info, string pre = \"\", string post = \"\")\n        {\n            return info == null ? m_dash : new StringBuilder(pre + info.ToString() + post);\n        }\n\n        private StringBuilder WriteGender(int? gender)\n        {\n            if (gender.HasValue)\n            {\n                if (gender.Value == 1)\n                {\n                    return MyTextsWrapper.Get(MyTextsWrapperEnum.Male);\n                }\n                else if (gender.Value == 2)\n                {\n                    return MyTextsWrapper.Get(MyTextsWrapperEnum.Female);\n                }\n            }\n            return m_dash;\n        }\n\n        void AddBackButton()\n        {\n            var position = new Vector2(\n                0.0f,\n                m_size.Value.Y / 2.0f - MyGuiConstants.MESSAGE_BOX_BORDER_AREA_Y -\n                MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE.Y / 2.0f - 0.025f);\n\n            Controls.Add(\n                new MyGuiControlButton(\n                    this,\n                    position,\n                    MyGuiConstants.BACK_BUTTON_SIZE,\n                    MyGuiConstants.BACK_BUTTON_BACKGROUND_COLOR,\n                    MyTextsWrapperEnum.Back,\n                    MyGuiConstants.BACK_BUTTON_TEXT_COLOR,\n                    MyGuiConstants.BACK_BUTTON_TEXT_SCALE,\n                    OnBackClick,\n                    MyGuiControlButtonTextAlignment.CENTERED,\n                    true,\n                    MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER,\n                    true));\n        }\n\n        void OnBackClick(MyGuiControlButton sender)\n        {\n            this.CloseScreen();\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenUserInfo\";\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/MyGuiScreenWaiting.cs",
    "content": "﻿using System;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Localization;\n\nnamespace MinerWars.AppCode.Game.GUI\n{\n    enum CancelReasonEnum\n    {\n        UserCancel,\n        Timeout,\n    }\n\n    class WaitingCanceledArgs : EventArgs\n    {\n        public CancelReasonEnum CancelReason { get; private set; }\n\n        public WaitingCanceledArgs(CancelReasonEnum cancelReason)\n        {\n            CancelReason = cancelReason;\n        }\n    }\n\n    class MyGuiScreenWaiting : MyGuiScreenProgressBaseAsync<object>\n    {\n        readonly EventHandler<WaitingCanceledArgs> m_cancelOrTimeoutHandler;\n\n        readonly TimeSpan? m_timeout;\n        TimeSpan m_timeoutStartedTimeInMiliseconds;\n\n        public MyGuiScreenWaiting(MyTextsWrapperEnum caption, EventHandler<WaitingCanceledArgs> cancelOrTimeoutHandler, TimeSpan? timeout = null)\n            : base(caption, true)\n        {\n            m_cancelOrTimeoutHandler = cancelOrTimeoutHandler;\n            m_timeout = timeout;\n            m_timeoutStartedTimeInMiliseconds = TimeSpan.FromMilliseconds(MyMinerGame.TotalTimeInMilliseconds);\n            m_closeOnEsc = false;\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenWaiting\";\n        }\n\n        public override bool Update(bool hasFocus)\n        {\n            if (base.Update(hasFocus) == false) return false;\n\n            //  Only continue if this screen is really open (not closing or closed)\n            if (GetState() != MyGuiScreenState.OPENED) return false;\n\n            if (m_timeout.HasValue)\n            {\n                var deltaTime = TimeSpan.FromMilliseconds(MyMinerGame.TotalTimeInMilliseconds) - m_timeoutStartedTimeInMiliseconds;\n                if (deltaTime >= m_timeout)\n                {\n                    OnTimeout();\n                }\n            }\n\n            return true;\n        }\n\n        protected virtual void OnTimeout()\n        {\n            CancelAll();\n            CloseScreen();\n\n            var handler = m_cancelOrTimeoutHandler;\n            if (handler != null)\n            {\n                handler(this, new WaitingCanceledArgs(CancelReasonEnum.Timeout));\n            }\n        }\n\n        protected override void OnCancelClick(MyGuiControlButton sender)\n        {\n            base.OnCancelClick(sender);\n\n            var handler = m_cancelOrTimeoutHandler;\n            if (handler != null)\n            {\n                handler(this, new WaitingCanceledArgs(CancelReasonEnum.UserCancel));\n            }\n        }\n\n        protected override void ProgressStart()\n        {\n            \n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/MyGuiScreenWaitingOnHost.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.GUI.Core;\n\nnamespace MinerWars.AppCode.Game.GUI\n{\n    class MyGuiScreenWaitingOnHost: MyGuiScreenWaiting\n    {\n        bool canceled = false;\n\n        public MyGuiScreenWaitingOnHost(MyTextsWrapperEnum caption)\n            :base(caption, null, null)\n        {\n        }\n        \n        protected override void Canceling()\n        {\n            if (!canceled)\n            {\n                canceled = true;\n                MyGuiManager.AddModalScreen(new MyGuiScreenMessageBox(MyMessageBoxType.MESSAGE, MyTextsWrapperEnum.DoYouWantToDisconnect, MyTextsWrapperEnum.DisconnectQuestion, MyTextsWrapperEnum.Yes, MyTextsWrapperEnum.No, new MyGuiScreenMessageBox.MessageBoxCallback(DisconnectQuestion)), null);\n            }\n        }\n\n        void DisconnectQuestion(MyGuiScreenMessageBoxCallbackEnum resultEnum)\n        {\n            if (resultEnum == MyGuiScreenMessageBoxCallbackEnum.YES)\n            {\n                OnCancelClick(null);\n                MyGuiManager.BackToMainMenu();\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Prefabs/MyGuiControlEntityUse.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.Prefabs;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Entities.Weapons;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Entities.SubObjects;\nusing MinerWars.AppCode.Game.GUI.Helpers;\nusing MinerWars.AppCode.Game.Sessions;\n\nnamespace MinerWars.AppCode.Game.GUI.Prefabs\n{\n    abstract class MyGuiControlEntityUse : MyGuiControlParent\n    {\n        public MyGuiSceenEntityUseBase ParentScreen { get; set; }\n        \n        protected Vector2 m_topLeftPosition;\n        protected MyEntity m_entity;\n        protected MyTexture2D m_texture;\n        protected Color m_textureColor = Color.White;\n\n        //protected MyGuiControlEntityUse(IMyGuiControlsParent parent, Vector2 size, MyEntity entity)\n        //    : base(parent, Vector2.Zero, size, Vector4.One, new StringBuilder(entity.DisplayName), MyGuiManager.GetHubItemBackground()) \n        //{\n        //    m_entity = entity;\n        //    m_topLeftPosition = -m_size.Value / 2f + new Vector2(0.025f, 0.025f);\n        //    Controls.Add(new MyGuiControlLabel(this, m_topLeftPosition + new Vector2(0.063f, 0.0f), null, GetEntityName(entity), MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER, MyGuiManager.GetFontMinerWarsBlue()));\n        //    LoadControls();\n        //}\n\n        //protected MyGuiControlEntityUse(IMyGuiControlsParent parent, Vector2 size, MyEntity entity, MyTexture2D texture):this(parent,size,entity)\n        //{\n        //    m_texture = texture;\n        //}\n\n        protected MyGuiControlEntityUse(IMyGuiControlsParent parent, Vector2 size, MyEntity entity)\n            : this(parent, size, entity, MyGuiObjectBuilderHelpers.GetGuiHelper(entity.GetObjectBuilder(true)).Icon)\n        {            \n        }\n\n        protected MyGuiControlEntityUse(IMyGuiControlsParent parent, Vector2 size, MyEntity entity, MyTexture2D texture)\n            : base(parent, Vector2.Zero, size, Vector4.One, new StringBuilder(entity.DisplayName), MyGuiManager.GetHubItemBackground())            \n        {\n            m_entity = entity;\n            m_topLeftPosition = -m_size.Value / 2f + new Vector2(0.025f, 0.025f);\n            Controls.Add(new MyGuiControlLabel(this, m_topLeftPosition + new Vector2(0.063f, 0.0f), null, GetEntityName(entity), MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER, MyGuiManager.GetFontMinerWarsBlue()));\n            LoadControls();\n            m_texture = texture;\n        }\n\n        protected Vector2 GetNextControlPosition() \n        {\n            float maxY = m_topLeftPosition.Y;\n            foreach (MyGuiControlBase control in Controls.GetList())\n            {\n                Vector2 position = control.GetPosition();\n                maxY = Math.Max(maxY, position.Y);\n                //Vector2? size = control.GetSize();\n                //if (size != null) \n                //{\n                //    float maxPositionY = position.Y + size.Value.Y / 2f;\n                //    maxY = Math.Max(maxY, maxPositionY);\n                //}\n            }\n            return new Vector2(m_topLeftPosition.X, maxY) + MyGuiConstants.CONTROLS_DELTA;            \n        }\n\n        public bool IsControlledByOtherPlayer()\n        {\n            return MyMultiplayerGameplay.IsRunning && MyMultiplayerGameplay.Static.IsLockedByOtherPlayer(m_entity);\n        }\n\n        protected abstract void LoadControls();\n\n\n        protected void CloseHUBScreen()\n        {\n            ParentScreen.CloseScreen();\n        }\n\n        public virtual void ClearAfterRemove() \n        {\n\n        }\n\n        protected void HideHUBScreen()\n        {\n            ParentScreen.HideScreen();\n            ParentScreen.CanBeUnhidden = false;\n        }\n\n        public override void Draw()\n        {\n            base.Draw();\n\n            if (m_texture != null)\n            {\n                var position = m_parent.GetPositionAbsolute() + m_position - new Vector2(m_size.Value.X / 2 - 0.01f, 0);\n                MyGuiManager.DrawSpriteBatch(m_texture, position, MyGuiConstants.LISTBOX_SMALL_SIZE, m_textureColor, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER);\n            }\n        }\n\n        protected StringBuilder GetEntityName(MyEntity entity)\n        {\n            if (!string.IsNullOrEmpty(entity.DisplayName))\n            {\n                return new StringBuilder(entity.GetCorrectDisplayName());\n            }\n            else\n            {\n                if(entity is MyPrefabLargeWeapon && (entity as MyPrefabLargeWeapon).GetGun() != null){\n                    MyLargeShipGunBase gun = (entity as MyPrefabLargeWeapon).GetGun();\n                    if (gun is MyLargeShipAutocannon)\n                    {\n                        return MyTextsWrapper.Get(MyTextsWrapperEnum.Autocannon);\n                    }\n                    else if (gun is MyLargeShipCIWS)\n                    {\n                        return MyTextsWrapper.Get(MyTextsWrapperEnum.CIWS);\n                    }\n                    else if (gun is MyLargeShipMachineGun)\n                    {\n                        return MyTextsWrapper.Get(MyTextsWrapperEnum.MachineGun);\n                    }\n                    else if(gun is MyLargeShipMissileLauncherGun)\n                    {\n                        return MyTextsWrapper.Get(MyTextsWrapperEnum.MissileLauncher);\n                    }\n                }\n                else if(entity is MyPrefabCamera){\n                    return MyTextsWrapper.Get(MyTextsWrapperEnum.Camera);\n                }\n                else if(entity is MyPrefabAlarm){\n                    return MyTextsWrapper.Get(MyTextsWrapperEnum.Alarm);\n                }\n                else if(entity is MyPrefabBankNode){\n                    return MyTextsWrapper.Get(MyTextsWrapperEnum.BankNode);\n                }\n                else if(entity is MyPrefabGenerator){\n                    return MyTextsWrapper.Get(MyTextsWrapperEnum.Generator);\n                }\n                else if (entity is MyPrefabScanner)\n                {\n                    return MyTextsWrapper.Get(MyTextsWrapperEnum.Scanner);\n                }\n                else if (entity is MyPrefabContainer)\n                {\n                    return MyTextsWrapper.Get(MyTextsWrapperEnum.Alarm);\n                }\n                else if (entity is MyPrefabKinematic)\n                {\n                    MyPrefabKinematic pk = (MyPrefabKinematic)entity;\n                    return MyTextsWrapper.Get(MyTextsWrapperEnum.Door);\n                }\n                return new StringBuilder();\n            }\n        }\n\n        public MyEntity Entity\n        {\n            get { return m_entity; }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Prefabs/MyGuiControlPrefabAlarmUse.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.Prefabs;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Entities;\n\nnamespace MinerWars.AppCode.Game.GUI.Prefabs\n{\n    class MyGuiControlPrefabContainerUse : MyGuiControlEntityUse\n    {\n        protected MyGuiControlButton m_onButon;\n        protected MyGuiControlButton m_offButon;\n\n        public MyGuiControlPrefabContainerUse(IMyGuiControlsParent parent, MyPrefabContainer prefabContainer)\n            : base(parent, new Vector2(0.452f, 0.127f), prefabContainer) \n        {            \n        }\n\n        public MyGuiControlPrefabContainerUse(IMyGuiControlsParent parent, MyPrefabContainer prefabContainer, MyTexture2D texture)\n            : base(parent, new Vector2(0.452f, 0.127f), prefabContainer, texture)\n        {\n        }\n\n\n        public MyPrefabContainer PrefabContainer\n        {\n            get { return (MyPrefabContainer)m_entity; }\n        }\n\n        protected override void LoadControls()\n        {\n            Vector2 position = GetNextControlPosition() + new Vector2(0.38f, 0);\n\n            m_onButon = new MyGuiControlButton(this, position, new Vector2(0.051f, 0.061f), Vector4.One, MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\ButtonOnOff\", flags: TextureFlags.IgnoreQuality), null, null, \n                MyTextsWrapperEnum.On, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE_SMALLER,\n                MyGuiControlButtonTextAlignment.CENTERED, OnOnOffClick, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true, true, MyGuiControlHighlightType.WHEN_ACTIVE);\n            Controls.Add(m_onButon);\n            m_onButon.DrawRedTextureWhenDisabled = false;\n            m_onButon.UseSwitchMode = true;\n\n            position.X -= 0.04f;\n\n            m_offButon = new MyGuiControlButton(this, position, new Vector2(0.051f, 0.061f), Vector4.One, MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\ButtonOnOff\", flags: TextureFlags.IgnoreQuality), null, null, \n                MyTextsWrapperEnum.Off, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE_SMALLER,\n                MyGuiControlButtonTextAlignment.CENTERED, OnOnOffClick, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true, true, MyGuiControlHighlightType.WHEN_ACTIVE);\n            Controls.Add(m_offButon);\n            m_offButon.DrawRedTextureWhenDisabled = false;\n            m_offButon.UseSwitchMode = true;\n\n            UpdateEnabledState();\n        }\n\n        private void UpdateEnabledState()\n        {\n            if (PrefabContainer.AlarmOn)\n            {\n                m_onButon.Enabled = false;\n                m_offButon.Enabled = true;\n            }\n            else\n            {\n                m_onButon.Enabled = true;\n                m_offButon.Enabled = false;\n            }\n        }\n\n        protected virtual void OnOnOffClick(MyGuiControlButton sender)\n        {\n            PrefabContainer.AlarmOn = !PrefabContainer.AlarmOn;\n            UpdateEnabledState();\n        }\n\n        protected virtual void OnCheckBoxCheckCallback(MyGuiControlCheckbox sender) \n        {\n            PrefabContainer.AlarmOn = sender.Checked;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Prefabs/MyGuiControlPrefabCameraUse.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.Prefabs;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Sessions;\nusing System.Diagnostics;\n\nnamespace MinerWars.AppCode.Game.GUI.Prefabs\n{\n    class MyGuiControlPrefabCameraUse : MyGuiControlPrefabUse\n    {\n        MyGuiControlButton m_takeControl;\n\n        public MyPrefabCamera PrefabCamera\n        {\n            get { return (MyPrefabCamera)m_entity; }\n        }\n\n        public MyGuiControlPrefabCameraUse(IMyGuiControlsParent parent, MyPrefabCamera prefabCamera)\n            : base(parent, prefabCamera) \n        {\n            \n        }\n\n        public MyGuiControlPrefabCameraUse(IMyGuiControlsParent parent, MyPrefabCamera prefabCamera, MyTexture2D texture)\n            : base(parent, prefabCamera, texture)\n        {\n\n        }\n\n\n        protected override void LoadControls()\n        {\n            base.LoadControls();\n            var pos = GetNextControlPosition() - MyGuiConstants.CONTROLS_DELTA + new Vector2(0.07f, -0.02f);\n\n\n           m_takeControl = new MyGuiControlButton(this, pos, new Vector2(0.14f, 0.051f),\n           Vector4.One,\n           MyGuiManager.GetConfirmButton(), null, null, MyTextsWrapperEnum.AcquireControl,\n           MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE_SMALLER, MyGuiControlButtonTextAlignment.CENTERED, OnControlClick,\n           true, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP, true, true, true, drawCrossTextureWhenDisabled : false);\n           Controls.Add(m_takeControl);\n           m_takeControl.DrawRedTextureWhenDisabled = false;\n\n           UpdateTakeControlState();\n        }\n\n        private void UpdateTakeControlState() \n        {\n            bool canBeControlled = PrefabCamera.IsWorking() && !IsControlledByOtherPlayer();\n\n            m_takeControl.Enabled = m_takeControl.Visible = canBeControlled;\n        }\n\n        protected override void OnOnOffClick(MyGuiControlButton sender)\n        {\n            base.OnOnOffClick(sender);\n            UpdateTakeControlState();\n        }\n\n        void OnControlClick(MyGuiControlButton sender)\n        {\n            Debug.Assert(PrefabCamera.EntityId.HasValue, \"EntityID cannot be null\");\n\n            if (MyMultiplayerGameplay.IsRunning)\n            {\n                MyMultiplayerGameplay.Static.LockReponse = (e, success) =>\n                {\n                    MyMultiplayerGameplay.Static.LockReponse = null;\n                    if (PrefabCamera != e)\n                    {\n                        Debug.Fail(\"Something went wrong, locked different entity\");\n                        MyMultiplayerGameplay.Static.Lock(e, false);\n                        return;\n                    }\n\n                    if (success)\n                    {\n                        ParentScreen.Closed += ParentScreenClosed;\n\n                        MyGuiScreenGamePlay.Static.TakeControlOfCamera(PrefabCamera);\n                        HideHUBScreen();\n                    }\n                };\n                MyMultiplayerGameplay.Static.Lock(PrefabCamera, true);\n            }\n            else\n            {\n                MyGuiScreenGamePlay.Static.TakeControlOfCamera(PrefabCamera);\n                HideHUBScreen();\n            }\n        }\n\n        public override void Draw()\n        {\n            UpdateTakeControlState();\n            base.Draw();\n        }\n\n        private void ParentScreenClosed(MyGuiScreenBase screen) \n        {\n            MyMultiplayerGameplay.Static.Lock(PrefabCamera, false);\n        }\n\n        public override void ClearAfterRemove()\n        {\n            ParentScreen.Closed -= ParentScreenClosed;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Prefabs/MyGuiControlPrefabLargeWeaponUse.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Entities.SubObjects;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Sessions;\nusing System.Diagnostics;\n\nnamespace MinerWars.AppCode.Game.GUI.Prefabs\n{\n    class MyGuiControlPrefabLargeWeaponUse : MyGuiControlPrefabUse\n    {\n        MyGuiControlButton m_acquireControl;\n\n        public MyPrefabLargeWeapon PrefabLargeWeapon\n        {\n            get { return (MyPrefabLargeWeapon)m_entity; }\n        }\n\n        public MyGuiControlPrefabLargeWeaponUse(IMyGuiControlsParent parent, MyPrefabLargeWeapon prefab)\n            : base(parent, prefab) \n        {\n            \n        }\n\n        public MyGuiControlPrefabLargeWeaponUse(IMyGuiControlsParent parent, MyPrefabLargeWeapon prefab, MyTexture2D texture)\n            : base(parent, prefab,texture)\n        {\n\n        }\n\n\n        protected override void LoadControls()\n        {\n            base.LoadControls();\n\n            var pos = GetNextControlPosition() - MyGuiConstants.CONTROLS_DELTA + new Vector2(0.07f,-0.02f);\n\n            /*\n            Controls.Add(m_acquireControl = new MyGuiControlButton(this, pos , new Vector2(MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE.X * 2f, MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE.Y), MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.AcquireControl, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnAcquireControlClick, MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP, true));\n            */\n\n            m_acquireControl = new MyGuiControlButton(this, pos, new Vector2(0.14f, 0.051f),\n                       MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                       MyGuiManager.GetConfirmButton(), null, null, MyTextsWrapperEnum.AcquireControl,\n                       MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE_SMALLER, MyGuiControlButtonTextAlignment.CENTERED, OnAcquireControlClick,\n                       true, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP, true, true);\n            m_acquireControl.Enabled = m_entity.Enabled;\n            Controls.Add(m_acquireControl);\n            m_acquireControl.DrawRedTextureWhenDisabled = false;\n\n            UpdateAcquireState();\n        }\n\n        public override void Draw()\n        {\n            UpdateAcquireState();\n            base.Draw();\n        }\n\n        private void UpdateAcquireState() \n        {\n            bool canBeControlled = PrefabLargeWeapon.IsWorking() && !IsControlledByOtherPlayer();\n\n            m_acquireControl.Visible = m_acquireControl.Enabled = canBeControlled;\n        }\n\n        protected override void OnOnOffClick(MyGuiControlButton sender)\n        {\n            base.OnOnOffClick(sender);\n            UpdateAcquireState();\n        }\n\n        void OnAcquireControlClick(MyGuiControlButton sender)\n        {\n            Debug.Assert(PrefabLargeWeapon.EntityId.HasValue, \"EntityID cannot be null\");\n\n            if (MyMultiplayerGameplay.IsRunning)\n            {\n                MyMultiplayerGameplay.Static.LockReponse = (e, success) =>\n                {\n                    MyMultiplayerGameplay.Static.LockReponse = null;\n                    if (PrefabLargeWeapon != e)\n                    {\n                        Debug.Fail(\"Something went wrong, locked different entity\");\n                        MyMultiplayerGameplay.Static.Lock(e, false);\n                        return;\n                    }\n\n                    if (success)\n                    {\n                        ParentScreen.Closed += ParentScreenClosed;\n\n                        MyGuiScreenGamePlay.Static.TakeControlOfLargeWeapon(PrefabLargeWeapon);\n                        HideHUBScreen();\n                    }\n                };\n                MyMultiplayerGameplay.Static.Lock(PrefabLargeWeapon, true);\n            }\n            else\n            {\n                MyGuiScreenGamePlay.Static.TakeControlOfLargeWeapon(PrefabLargeWeapon);\n                HideHUBScreen();\n            }\n        }\n\n        void ParentScreenClosed(MyGuiScreenBase screen) \n        {\n            MyMultiplayerGameplay.Static.Lock(PrefabLargeWeapon, false);\n        }\n\n        public override void ClearAfterRemove()\n        {\n            base.ClearAfterRemove();\n            ParentScreen.Closed -= ParentScreenClosed;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Prefabs/MyGuiControlPrefabUse.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.Prefabs;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Sessions;\nusing MinerWars.CommonLIB.AppCode.Networking.Multiplayer;\n\nnamespace MinerWars.AppCode.Game.GUI.Prefabs\n{\n    class MyGuiControlPrefabUse : MyGuiControlEntityUse\n    {\n        protected MyGuiControlLabel m_unpoweredLabel;\n        protected MyGuiControlLabel m_remoteControlledLabel;\n        protected MyGuiControlButton m_onButton;\n        protected MyGuiControlButton m_offButon;\n        private bool m_isPrefabElectrified;\n\n\n        public MyGuiControlPrefabUse(IMyGuiControlsParent parent, MyPrefabBase prefab, MyTexture2D texture)\n            : base(parent, new Vector2(0.452f, 0.127f), prefab, texture)\n        {\n\n        }\n\n\n        public MyGuiControlPrefabUse(IMyGuiControlsParent parent, MyPrefabBase prefab)\n            : base(parent, new Vector2(0.452f, 0.127f), prefab)\n        {\n        }\n\n        public MyPrefabBase Prefab\n        {\n            get { return (MyPrefabBase)m_entity; }\n        }\n\n\n        public override void Draw()\n        {\n            UpdateVisibility();\n            UpdateEnabledState(); // Because of MP\n            base.Draw();\n        }\n\n        protected override void LoadControls()\n        {\n            Vector2 position = GetNextControlPosition() + new Vector2(0.38f, 0);\n\n            m_onButton = new MyGuiControlButton(this, position, new Vector2(0.051f, 0.061f), Vector4.One, MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\ButtonOnOff\", flags: TextureFlags.IgnoreQuality), null, null,\n                MyTextsWrapperEnum.On, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE_SMALLER,\n                MyGuiControlButtonTextAlignment.CENTERED, OnOnOffClick, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true, true, MyGuiControlHighlightType.WHEN_ACTIVE);\n            Controls.Add(m_onButton);\n            m_onButton.DrawRedTextureWhenDisabled = false;\n            m_onButton.UseSwitchMode = true;\n\n            position.X -= 0.04f;\n\n            m_offButon = new MyGuiControlButton(this, position, new Vector2(0.051f, 0.061f), Vector4.One, MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\GUI\\\\ButtonOnOff\", flags: TextureFlags.IgnoreQuality), null, null,\n                MyTextsWrapperEnum.Off, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE_SMALLER,\n                MyGuiControlButtonTextAlignment.CENTERED, OnOnOffClick, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true, true, MyGuiControlHighlightType.WHEN_ACTIVE);\n            Controls.Add(m_offButon);\n            m_offButon.DrawRedTextureWhenDisabled = false;\n            m_offButon.UseSwitchMode = true;\n\n            position.X -= 0.11f;\n\n            m_unpoweredLabel = new MyGuiControlLabel(this, position, null, MyTextsWrapperEnum.Unpowered, MyGuiConstants.LABEL_TEXT_COLOR, 1.5f, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, MyGuiManager.GetFontMinerWarsBlue());\n            m_remoteControlledLabel = new MyGuiControlLabel(this, position, null, MyTextsWrapperEnum.MP_RemoteControlled, MyGuiConstants.LABEL_TEXT_COLOR, 1.5f, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, MyGuiManager.GetFontMinerWarsBlue());\n            Controls.Add(m_unpoweredLabel);\n            Controls.Add(m_remoteControlledLabel);\n\n            m_isPrefabElectrified = !Prefab.IsElectrified();\n            UpdateVisibility();\n            UpdateEnabledState();\n        }\n\n        private void UpdateVisibility()\n        {\n            m_isPrefabElectrified = Prefab.IsElectrified();\n\n            if (IsControlledByOtherPlayer())\n            {\n                m_remoteControlledLabel.Visible = true;\n                m_unpoweredLabel.Visible = false;\n                m_onButton.Visible = false;\n                m_offButon.Visible = false;\n            }\n            else if (m_isPrefabElectrified)\n            {\n                m_remoteControlledLabel.Visible = false;\n                m_unpoweredLabel.Visible = false;\n                m_onButton.Visible = true;\n                m_offButon.Visible = true;\n            }\n            else\n            {\n                m_remoteControlledLabel.Visible = false;\n                m_unpoweredLabel.Visible = true;\n                m_onButton.Visible = false;\n                m_offButon.Visible = false;\n            }\n        }\n\n        private void UpdateEnabledState()\n        {\n            if (Prefab.Enabled)\n            {\n                m_onButton.Enabled = false;\n                m_offButon.Enabled = true;\n            }\n            else\n            {\n                m_onButton.Enabled = true;\n                m_offButon.Enabled = false;\n            }\n        }\n\n        protected virtual void OnOnOffClick(MyGuiControlButton sender)\n        {\n            Prefab.Enabled = !Prefab.Enabled;\n            UpdateEnabledState();\n\n            if (MyMultiplayerGameplay.IsRunning)\n            {\n                MyMultiplayerGameplay.Static.UpdateFlags(Prefab, Prefab.Enabled ? MyFlagsEnum.ENABLE : MyFlagsEnum.DISABLE);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Prefabs/MyGuiSceenEntityUseBase.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.Utils;\n\nnamespace MinerWars.AppCode.Game.GUI.Prefabs\n{\n    abstract class MyGuiSceenEntityUseBase : MyGuiScreenBase\n    {\n        protected MyGuiSceenEntityUseBase(Vector2 position, Vector4? backgroundColor, Vector2? size) \n            : base(position, backgroundColor, size)\n        {\n            CanBeUnhidden = true;\n        }\n\n        protected MyGuiSceenEntityUseBase(Vector2 position, Vector4? backgroundColor, Vector2? size, bool isTopMostScreen, MyTexture2D backgroundTexture) \n            : base(position, backgroundColor, size, isTopMostScreen, backgroundTexture)\n        {\n            CanBeUnhidden = true;\n        }\n\n        public bool CanBeUnhidden { get; set; }\n\n        public override bool UnhideScreen()\n        {\n            if ((m_state == MyGuiScreenState.UNHIDING) || (m_state == MyGuiScreenState.OPENED) || !CanBeUnhidden)\n            {\n                return false;\n            }\n            else\n            {\n                m_state = MyGuiScreenState.OPENED;\n                m_transitionAlpha = MyGuiConstants.TRANSITION_ALPHA_MAX;\n                OnShow();\n                return true;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/Prefabs/MyGuiScreenEntityUseSolo.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Prefabs;\nusing MinerWars.AppCode.Game.Entities;\nusing System.Diagnostics;\nusing MinerWars.AppCode.Game.Entities.Prefabs;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Managers.Session;\n\nnamespace MinerWars.AppCode.Game.GUI.Prefabs\n{\n    class MyGuiScreenEntityUseSolo : MyGuiSceenEntityUseBase\n    {\n        private MyGuiControlEntityUse m_entityUseControl;\n        private IMyHasGuiControl m_entity;\n\n        public MyGuiScreenEntityUseSolo(IMyHasGuiControl entity)\n            : base(new Vector2(0.505f, 0.5f), MyGuiConstants.SCREEN_BACKGROUND_COLOR, new Vector2(0.57f, 0.91f), true, MyGuiManager.GetHubBackground()) \n        {\n            m_entity = entity;            \n            RecreateControls(true);\n            MyGuiScreenGamePlay.Static.ReleasedControlOfEntity += OnGameReleasedControlOfEntity;\n            MySession.PlayerShip.OnDie += OnPlayerShipDie;\n            entity.GetEntity().OnMarkForClose += OnEntityMarkForClose;\n        }\n\n        void OnEntityMarkForClose(MyEntity obj)\n        {\n            CloseScreenNow();\n        }        \n\n        public override void RecreateControls(bool contructor)\n        {\n            base.RecreateControls(contructor);\n            Controls.Clear();\n\n            if (!contructor) \n            {\n                m_entityUseControl.ClearAfterRemove();\n            }\n            m_entityUseControl = m_entity.GetGuiControl(this);\n            m_entityUseControl.SetPosition(new Vector2(-0.013f, -0.27f));\n            m_entityUseControl.ParentScreen = this;\n\n            Controls.Add(m_entityUseControl);\n\n            var exitButton = new MyGuiControlButton(this, new Vector2(0f, 0.3490f), new Vector2(0.161f, 0.0637f),\n                                                    Vector4.One,\n                                                    MyGuiManager.GetConfirmButton(), null, null, MyTextsWrapperEnum.Exit,\n                                                    MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, MyGuiControlButtonTextAlignment.CENTERED, OnExitClick,\n                                                    true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true, true);\n            Controls.Add(exitButton);            \n        }\n\n        void OnGameReleasedControlOfEntity(MyEntity entity)\n        {\n            if (m_entityUseControl.Entity == entity) \n            {\n                Debug.Assert(m_state == MyGuiScreenState.HIDDEN || m_state == MyGuiScreenState.HIDING);\n\n                RecreateControls(false);\n                CanBeUnhidden = true;\n\n                this.UnhideScreen();\n            }            \n        }\n\n        private void OnExitClick(MyGuiControlButton sender)\n        {\n            CloseScreen();\n        }\n\n        protected override void OnClosed()\n        {\n            if (MyGuiScreenGamePlay.Static != null)\n            {\n                MyGuiScreenGamePlay.Static.ReleasedControlOfEntity -= OnGameReleasedControlOfEntity;\n            }\n            if (MySession.PlayerShip != null)\n            {\n                MySession.PlayerShip.OnDie -= OnPlayerShipDie;\n            }\n\n            base.OnClosed();\n        }\n\n        void OnPlayerShipDie(MyEntity entity, MyEntity killer)\n        {\n            CloseScreenNow();\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenPrefabUseSolo\";\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/PreviewRenderer/MyGuiPreviewRenderer.cs",
    "content": "﻿using System;\n//using MinerWarsMath.Graphics;\nusing MinerWars.AppCode.Game.HUD;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Prefabs;\nusing MinerWars.AppCode.Game.Voxels;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.AppCode.App;\n//using MinerWarsMath;\nusing MinerWars.AppCode.Game.Entities.Weapons;\nusing MinerWars.AppCode.Game.Effects;\nusing MinerWars.AppCode.Game.Models;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.GUI;\nusing System.Collections.Generic;\nusing MinerWars.AppCode.Game.Lights;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.Prefabs;\n\nusing MinerWars.AppCode.Game.GUI.Core;\nusing System.IO;\nusing MinerWars.AppCode.Game.GUI.Helpers;\nusing System.Diagnostics;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Render;\n\nusing SharpDX;\nusing SharpDX.Direct3D9;\nusing SharpDX.Toolkit;\n\nnamespace MinerWars.AppCode.Game.GUI\n{\n    using Vector2 = MinerWarsMath.Vector2;\n    using Vector3 = MinerWarsMath.Vector3;\n    using Vector4 = MinerWarsMath.Vector4;\n    using Color = MinerWarsMath.Color;\n    using Rectangle = MinerWarsMath.Rectangle;\n    using Matrix = MinerWarsMath.Matrix;\n    using MathHelper = MinerWarsMath.MathHelper;\n    using MinerWars.CommonLIB.AppCode.Import;\n\n    /// <summary>\n    /// Used for rendering models for GUI previews. \n    /// Uses three lights to light prefabs:\n    /// 1. Key light - directional (sun)\n    /// 2. Fill light - point\n    /// 3. Back light - point\n    /// </summary>\n    class MyGuiPreviewRenderer\n    {\n        private static MyEntity m_fakeEntity;\n        private static MyEntity FakeEntity\n        {\n            get\n            {\n                if (m_fakeEntity == null)\n                {\n                    m_fakeEntity = new MyStaticAsteroid();\n                }\n                return m_fakeEntity; \n            }\n        }\n\n        private MyRender.MyRenderSetup m_setup;\n        Texture m_fullSizeRT;\n\n        public MyGuiPreviewRenderer()\n        {\n           // SetRenderSetup();\n        }\n\n        private void SetRenderSetup()\n        {\n            return;\n            m_setup = new MyRender.MyRenderSetup();\n\n            //m_setup.Fov = MathHelper.ToRadians(75);\n\n            m_setup.CallerID = MyRenderCallerEnum.GUIPreview;\n                                    \n            m_setup.RenderTargets = new Texture[1];\n\n\n            m_setup.EnabledModules = new HashSet<MyRenderModuleEnum>();\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.VoxelHand);\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.Decals);\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.CockpitWeapons);\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.SectorBorder);\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.DrawSectorBBox);\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.DrawCoordSystem);\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.Explosions);\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.BackgroundCube);\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.GPS);\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.TestField);\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.AnimatedParticles);\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.Lights);\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.TransparentGeometryForward);\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.Projectiles);\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.DebrisField);\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.ThirdPerson);\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.Editor);\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.SolarObjects);\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.SolarMapGrid);\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.PrunningStructure);\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.SunWind);\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.IceStormWind);\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.PrefabContainerManager);\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.PhysicsPrunningStructure);\n\n            m_setup.EnabledRenderStages = new HashSet<MyRenderStage>();\n            m_setup.EnabledRenderStages.Add(MyRenderStage.PrepareForDraw);\n            m_setup.EnabledRenderStages.Add(MyRenderStage.Background);\n            m_setup.EnabledRenderStages.Add(MyRenderStage.LODDrawStart);\n            m_setup.EnabledRenderStages.Add(MyRenderStage.LODDrawEnd);\n            m_setup.EnabledRenderStages.Add(MyRenderStage.AlphaBlendPreHDR);\n            m_setup.EnabledRenderStages.Add(MyRenderStage.AlphaBlend);\n\n \n\n            m_setup.EnabledPostprocesses = new HashSet<MyPostProcessEnum>();\n            m_setup.EnabledPostprocesses.Add(MyPostProcessEnum.VolumetricSSAO2);\n            m_setup.EnabledPostprocesses.Add(MyPostProcessEnum.HDR);\n            \n\n            //m_setup.BackgroundColor = new Color(0.17f, 0.18f, .25f, 0.0f);\n            m_setup.BackgroundColor = new Color(Vector4.Zero);\n\n            m_setup.EnableHDR = false;\n            m_setup.EnableSun = true;\n            m_setup.ShadowRenderer = MyRender.GetShadowRenderer(); // Default shadow render\n            m_setup.EnableSmallLights = true;\n            m_setup.EnableDebugHelpers = false;\n            m_setup.EnableEnvironmentMapping = false;\n            m_setup.EnableOcclusionQueries = false;\n\n            m_setup.LodTransitionNear = 20000;\n            m_setup.LodTransitionFar = 21000;\n            m_setup.LodTransitionBackgroundStart = 50000;\n            m_setup.LodTransitionBackgroundStart = 51000;\n\n            m_setup.RenderElementsToDraw = new List<MyRender.MyRenderElement>();\n            m_setup.TransparentRenderElementsToDraw = new List<MyRender.MyRenderElement>();\n            m_setup.LightsToUse = new List<MyLight>();\n            var fillLight = new MyLight();\n            fillLight.Start(MyLight.LightTypeEnum.PointLight, .5f * new Vector4(1, 0.95f, 0.8f, 1), 1, 119); // fill light\n            m_setup.LightsToUse.Add(fillLight);\n            var backLight = new MyLight();\n            backLight.Start(MyLight.LightTypeEnum.PointLight, .5f * new Vector4(1, 0.9f, 0.9f, 1), 1, 119); // back light\n            m_setup.LightsToUse.Add(backLight);  \n        }\n\n        /// <summary>\n        /// IMPORTANT: using Lod1Normals here, since this is done in a separate time to normal rendering\n        /// </summary>\n        public Texture RenderPrefabPreview(int prefabId, MyPrefabConfiguration config, MyMwcObjectBuilder_Prefab_AppearanceEnum appearance, int width, int height, float lightsIntensity = 2.5f)\n        {             \n            m_fullSizeRT = MyRender.GetRenderTarget(MyRenderTargets.SSAO);\n\n            if (m_fullSizeRT == null || MyGuiScreenGamePlay.Static == null)\n            {\n                return null;\n            }\n\n            MyFakes.RENDER_PREVIEWS_WITH_CORRECT_ALPHA = true;\n\n            Texture renderTarget = new Texture(MyMinerGame.Static.GraphicsDevice, width, height, 0, Usage.RenderTarget, Format.A8R8G8B8, Pool.Default);\n\n            PrepareRender(width, height);\n            MyRender.Sun.Intensity = lightsIntensity;\n            foreach (var light in m_setup.LightsToUse)\n            {\n                light.Intensity = lightsIntensity;\n            }\n\n            if (MySession.PlayerShip != null)\n            {\n                MySession.PlayerShip.Visible = false;\n            }\n\n            bool weapon = false;\n\n            if (config.BuildType == BuildTypesEnum.MODULES && config.CategoryType == CategoryTypesEnum.WEAPONRY)\n            {\n                MyModel baseModel = null;\n                MyModel barrelModel = null;\n                Matrix baseMatrix = Matrix.Identity;\n                Matrix barrelMatrix = Matrix.Identity;\n\n                weapon = MyLargeShipGunBase.GetVisualPreviewData((MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum)prefabId, ref baseModel, ref barrelModel, ref baseMatrix, ref barrelMatrix);\n\n                if (weapon)\n                {\n                    m_setup.ViewMatrix = Matrix.Identity;\n\n                    SetupRenderElements(baseModel, baseMatrix, (int) appearance);\n                    SetupRenderElements(barrelModel, barrelMatrix, (int)appearance);\n\n                    SetupLights(baseModel);\n\n                    MyRender.PushRenderSetup(m_setup);\n                    MyRender.Draw();\n                    MyRender.PopRenderSetup();\n\n                    BlitToThumbnail(MyMinerGame.Static.GraphicsDevice, renderTarget);\n                }\n            }\n            \n            if (!weapon)\n            {\n                //load new model from prefab config\n                MyModel model = MyModels.GetModelForDraw(config.ModelLod0Enum);\n\n                float distanceMultiplier = 2f;\n\n                Matrix viewMatrix = Matrix.Identity;\n                m_setup.ViewMatrix = viewMatrix;\n\n                //generate world matrix\n                Matrix worldMatrix = Matrix.Identity;\n                worldMatrix.Translation = -model.BoundingSphere.Center;\n                \n                worldMatrix *= config.PreviewPointOfView.Transform;\n\n                worldMatrix *= Matrix.CreateRotationY(-.85f * MathHelper.PiOver4);\n                worldMatrix *= Matrix.CreateRotationX(.35f * MathHelper.PiOver4);\n                worldMatrix.Translation += new Vector3(0, 0, -model.BoundingSphere.Radius * distanceMultiplier);\n\n                SetupRenderElements(model, worldMatrix, (int)appearance);\n\n                SetupLights(model);\n\n                //MyGuiManager.TakeScreenshot();\n                MyRender.PushRenderSetup(m_setup);\n                MyRender.EnableShadows = false;\n                MyRender.Draw();\n                MyRender.EnableShadows = true;\n                MyRender.PopRenderSetup();\n                //MyGuiManager.StopTakingScreenshot();\n\n                BlitToThumbnail(MyMinerGame.Static.GraphicsDevice, renderTarget);\n            }\n\n            if (MySession.PlayerShip != null)\n            {\n                MySession.PlayerShip.Visible = true;\n            }\n            \n            MyFakes.RENDER_PREVIEWS_WITH_CORRECT_ALPHA = false;\n                               \n            return renderTarget;\n        }\n\n        /// <summary>\n        /// IMPORTANT: using Lod1Normals here, since this is done in a separate time to normal rendering\n        /// </summary>\n        public Texture RenderModelPreview(MyModel model, int width, int height, float lightsIntensity = 2f)\n        {             \n            m_fullSizeRT = MyRender.GetRenderTarget(MyRenderTargets.Auxiliary0);\n\n            if (m_fullSizeRT == null || MyGuiScreenGamePlay.Static == null)\n                return null;\n\n            Device device = MyMinerGame.Static.GraphicsDevice;\n\n            Texture renderTarget = new Texture(device, width, height, 0, Usage.RenderTarget, Format.A8R8G8B8, Pool.Default);\n\n            PrepareRender(width, height);\n            MyRender.Sun.Intensity = lightsIntensity;\n            foreach (var light in m_setup.LightsToUse)\n            {\n                light.Intensity = lightsIntensity;\n            }\n\n            if (MySession.PlayerShip != null)\n            {\n                MySession.PlayerShip.Visible = false;\n            }\n\n            float distance = 2.1f;\n\n            Matrix viewMatrix = Matrix.Identity;\n            m_setup.ViewMatrix = viewMatrix;\n\n            m_setup.EnableNear = false;\n\n            //generate world matrix\n            Matrix worldMatrix = Matrix.Identity;\n            \n            worldMatrix.Translation = -model.BoundingSphere.Center;\n            worldMatrix *= Matrix.CreateRotationY(-3.0f * MathHelper.PiOver4);\n            worldMatrix *= Matrix.CreateRotationX(0.7f * MathHelper.PiOver4);\n            worldMatrix.Translation += new Vector3(0, 0, -model.BoundingSphere.Radius * distance);\n           \n            SetupRenderElements(model, worldMatrix);\n\n            SetupLights(model);\n\n            MyRender.PushRenderSetup(m_setup);\n            MyRender.Draw();\n            MyRender.PopRenderSetup();\n\n            BlitToThumbnail(device, renderTarget);\n\n            if (MySession.PlayerShip != null)\n            {\n                MySession.PlayerShip.Visible = true;\n            }\n\n            return renderTarget;   \n\n            return null;\n        }\n\n        public Texture RenderAsteroidMaterialPreview(MyMwcVoxelMaterialsEnum material, int width, int height, float lightsIntensity = 2f)\n        {               \n            m_fullSizeRT = MyRender.GetRenderTarget(MyRenderTargets.Auxiliary0);\n\n            if (m_fullSizeRT == null || MyGuiScreenGamePlay.Static == null)\n                return null;\n\n            Device device = MyMinerGame.Static.GraphicsDevice;\n\n            Texture renderTarget = new Texture(device, width, height, 0, Usage.RenderTarget, Format.A8R8G8B8, Pool.Default);\n\n            PrepareRender(width, height);\n\n            MyRender.Sun.Direction = new Vector3(1.5f, -1.5f, -1);\n            MyRender.Sun.Direction.Normalize();\n\n            MyRender.Sun.Intensity = lightsIntensity;\n            foreach (var light in m_setup.LightsToUse)\n            {\n                light.Intensity = 3 * lightsIntensity;\n            }\n\n            if (MySession.PlayerShip != null)\n            {\n                MySession.PlayerShip.Visible = false;\n            }\n\n            float distance = 2.1f;\n\n            Matrix viewMatrix = Matrix.Identity;\n            m_setup.ViewMatrix = viewMatrix;\n\n            m_setup.EnableNear = false;\n\n\n            //var modelEnum = MyStaticAsteroid.GetModelsFromType(MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid20m_A).LOD0;\n            var modelEnum = MyModelsEnum.sphere_smooth;\n            var model = MyModels.GetModelOnlyData(modelEnum);\n            var test = model.BoundingSphere.Radius;\n            model.SetDrawTechnique(MyMeshDrawTechnique.VOXELS_STATIC_ASTEROID);\n\n            \n            FakeEntity.VoxelMaterial = material;\n            FakeEntity.InitDrawTechniques();\n\n\n            //generate world matrix\n            Matrix worldMatrix = Matrix.Identity;\n\n            worldMatrix.Translation = -model.BoundingSphere.Center;\n            //worldMatrix *= Matrix.CreateRotationY(-3.0f * MathHelper.PiOver4);\n            //worldMatrix *= Matrix.CreateRotationX(0.7f * MathHelper.PiOver4);\n            worldMatrix.Translation += new Vector3(0, 0, -model.BoundingSphere.Radius * distance);\n\n            SetupRenderElements(model, worldMatrix, staticAsteroid: true);\n\n            SetupLights(model);\n\n            MyRender.PushRenderSetup(m_setup);\n            MyRender.Draw();\n            MyRender.PopRenderSetup();\n\n            BlitToThumbnail(device, renderTarget);\n\n            if (MySession.PlayerShip != null)\n            {\n                MySession.PlayerShip.Visible = true;\n            }\n\n            return renderTarget; \n\n            return null;\n        }\n\n        private void PrepareRender(int width, int height)\n        {                    \n            m_setup.RenderTargets[0] = m_fullSizeRT;\n\n            m_setup.RenderElementsToDraw.Clear();\n            m_setup.TransparentRenderElementsToDraw.Clear();\n\n            // make actual viewport one pixel larger in order to remove the deformed border caused by antialiasing\n            m_setup.Viewport = new Viewport(0, 0, 2 * width, 2 * height);\n            m_setup.AspectRatio = 1;\n            m_setup.EnableOcclusionQueries = false;\n            m_setup.EnableNear = false;\n\n            MyRender.Sun.Direction = new Vector3(.5f, -.3f, -1);\n            MyRender.Sun.Direction.Normalize();\n            MyRender.Sun.Color = Vector4.One;\n            MyRender.EnableSun = true;   \n        }\n\n        private void SetupLights(MyModel baseModel)\n        {\n            m_setup.LightsToUse[0].SetPosition(baseModel.BoundingSphere.Center + new Vector3(baseModel.BoundingSphere.Radius, -0.4f * baseModel.BoundingSphere.Radius, baseModel.BoundingSphere.Radius));\n            m_setup.LightsToUse[1].SetPosition(baseModel.BoundingSphere.Center + new Vector3(0.9f * baseModel.BoundingSphere.Radius, -0.5f * baseModel.BoundingSphere.Radius, -1.0f * baseModel.BoundingSphere.Radius));\n        }\n\n        private void BlitToThumbnail(Device device, Texture renderTarget)\n        {       \n            MyMinerGame.SetRenderTarget(renderTarget, null);\n            var screenEffect = MyRender.GetEffect(MyEffects.Scale) as MyEffectScale;\n            Debug.Assert(screenEffect != null);\n            screenEffect.SetTechnique(MyEffectScale.Technique.HWScalePrefabPreviews);\n            screenEffect.SetSourceTextureMod(m_fullSizeRT);\n            //screenEffect.SetScale(2f * new Vector2(renderTarget.Width / (float)m_fullSizeRT.Width, renderTarget.Height / (float)m_fullSizeRT.Height));\n            screenEffect.SetScale(2f * new Vector2((renderTarget.GetLevelDescription(0).Width - 1) / (float)m_fullSizeRT.GetLevelDescription(0).Width, (renderTarget.GetLevelDescription(0).Height - 1) / (float)m_fullSizeRT.GetLevelDescription(0).Height));\n            MyGuiManager.GetFullscreenQuad().Draw(screenEffect);\n            MyMinerGame.SetRenderTarget(null, null);  \n        }\n\n        private void SetupRenderElements(MyModel model, Matrix worldMatrix, int materialIndex = 0, bool staticAsteroid = false)\n        {              \n            model.LoadInDraw();\n\n            var meshList = model.GetMeshList();\n            foreach (MyMesh mesh in meshList)\n            {\n                if (materialIndex > mesh.Materials.Length - 1)\n                    materialIndex = 0;\n\n                var material = staticAsteroid ? MyVoxelMaterials.GetMaterialForMesh(FakeEntity.VoxelMaterial) : mesh.Materials[materialIndex];\n\n                material.PreloadTexture(Managers.LoadingMode.Immediate);\n\n                if (material.DrawTechnique == MyMeshDrawTechnique.DECAL)\n                    continue;\n\n                if (staticAsteroid && material.DrawTechnique == MyMeshDrawTechnique.MESH)\n                {\n                    material.DrawTechnique = MyMeshDrawTechnique.VOXELS_STATIC_ASTEROID;\n                }\n\n                //Do not use render alocator, it will reuse elements\n                MyRender.MyRenderElement renderElement = new MyRender.MyRenderElement();\n                //MyRender.AllocateRenderElement(out renderElement);\n\n                renderElement.Entity = FakeEntity;\n\n                renderElement.VertexBuffer = model.VertexBuffer;\n                renderElement.IndexBuffer = model.IndexBuffer;\n                renderElement.IndexStart = mesh.IndexStart;\n                renderElement.TriCount = mesh.TriCount;\n\n                //renderElement.UseChannels = false;\n\n                renderElement.WorldMatrixForDraw = worldMatrix;\n                renderElement.WorldMatrix = worldMatrix;\n\n                renderElement.Material = material;\n                renderElement.DrawTechnique = material.DrawTechnique;\n                renderElement.VoxelBatch = null;\n\n                if (material.DrawTechnique == MyMeshDrawTechnique.HOLO)\n                    m_setup.TransparentRenderElementsToDraw.Add(renderElement);\n                else\n                    m_setup.RenderElementsToDraw.Add(renderElement);\n            }      \n        }\n\n        /// <summary>\n        /// Create all prefab previews as dds files\n        /// Filename is derived from MyMwcObjectBuilder_Prefab_TypesEnum\n        /// </summary>\n        public void CreatePreviewsToFiles(string path, int sizeInPixels)\n        {\n            MyFakes.RENDER_PREVIEWS_WITH_CORRECT_ALPHA = true;\n\n            if (MyHudSectorBorder.Enabled)\n                MyHudSectorBorder.SwitchSectorBorderVisibility();\n\n            var directoryInfo = Directory.CreateDirectory(path);\n\n            CreateAndCompressPrefabPreviews(sizeInPixels, directoryInfo);\n\n            //CreateAndCompressGUIHelpers(sizeInPixels, directoryInfo);\n\n            MyFakes.RENDER_PREVIEWS_WITH_CORRECT_ALPHA = false;\n        }\n\n        private void CreateAndCompressPrefabPreviews(int sizeInPixels, DirectoryInfo directoryInfo)\n        {\n            GeneratePrefabPreviews(sizeInPixels, directoryInfo);\n\n            // compress using nvDXT.exe to DXT3:\n            var prefabsDirectory = directoryInfo.GetDirectories(\"Prefabs\")[0];\n            foreach (var dir in prefabsDirectory.EnumerateDirectories())\n            {\n                CompressDDSFiles(dir);\n            }\n        }\n\n        private void CreateAndCompressGUIHelpers(int sizeInPixels, DirectoryInfo directoryInfo)\n        {\n            GenerateStaticAsteroidPreviews(sizeInPixels, directoryInfo);\n\n            GenerateAsteroidMaterialPreviews(sizeInPixels, directoryInfo);\n\n            var guiHelpersDirectory = directoryInfo.GetDirectories(\"GuiHelpers\")[0];\n            CompressDDSFiles(guiHelpersDirectory);\n        }\n\n        public static string GetPreviewFileName(MyPrefabConfiguration config, int prefabId)\n        {\n            if (config.BuildType == BuildTypesEnum.MODULES && config.CategoryType == CategoryTypesEnum.WEAPONRY)\n            {\n                MyModelsEnum baseModelEnum, barelModelEnum;\n                if (MyLargeShipGunBase.GetModelEnums((MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum)prefabId, out baseModelEnum, out barelModelEnum))\n                {\n                    return Path.GetFileName(MyModels.GetModelAssetName(baseModelEnum));\n                }\n            }            \n\n            return Path.GetFileName(MyModels.GetModelAssetName(config.ModelLod0Enum));\n        }\n\n        private void GenerateSmallShipPreviews(int sizeInPixels, DirectoryInfo directoryInfo)\n        {\n            var directoryGuiHelpers = Directory.CreateDirectory(Path.Combine(directoryInfo.FullName, \"GuiHelpers\"));\n            int index = 1;\n            foreach (MyMwcObjectBuilder_SmallShip_TypesEnum enumValue in MyGuiSmallShipHelpers.MyMwcObjectBuilder_SmallShip_TypesEnumValues)\n            {\n                Debug.WriteLine(string.Format(\"Exporting SmallShip Preview {0}/{1} ..\", index++,\n                                              MyGuiSmallShipHelpers.MyMwcObjectBuilder_SmallShip_TypesEnumValues.Length));\n\n                var modelEnum = MyShipTypeConstants.GetShipTypeProperties(enumValue).Visual.ModelLod0Enum;\n                var model = MyModels.GetModelForDraw(modelEnum);\n\n                string assetName = Path.GetFileName(MyModels.GetModelAssetName(modelEnum));\n\n                var result = RenderModelPreview(model, sizeInPixels, sizeInPixels);\n                string fileName = Path.Combine(directoryGuiHelpers.FullName, string.Format(\"{0}.dds\", assetName));\n                if (File.Exists(fileName))\n                {\n                    File.Delete(fileName);\n                }\n\n                //TODO\n                //MyDDSFile.DDSToFile(fileName, true, result, false);\n            }\n        }\n\n        void GenerateAsteroidMaterialPreviews(int sizeInPixels, DirectoryInfo directoryInfo)\n        {\n            var directoryGuiHelpers = Directory.CreateDirectory(Path.Combine(directoryInfo.FullName, \"GuiHelpers\"));\n            int index = 1;\n            foreach (MyMwcVoxelMaterialsEnum enumValue in MyGuiAsteroidHelpers.MyMwcVoxelMaterialsEnumValues)\n            {\n                Debug.WriteLine(string.Format(\"Exporting voxel Material Preview {0}/{1} ..\", index++,\n                                              MyGuiAsteroidHelpers.MyMwcVoxelMaterialsEnumValues.Count));\n\n                var result = RenderAsteroidMaterialPreview(enumValue, sizeInPixels, sizeInPixels, 1);\n\n                var materialHelper = MyGuiAsteroidHelpers.GetMyGuiVoxelMaterialHelper(enumValue);\n                string fileName = Path.Combine(directoryGuiHelpers.FullName, string.Format(\"{0}.dds\", Path.GetFileName(materialHelper.Icon.Name)));\n                if (File.Exists(fileName))\n                {\n                    File.Delete(fileName);\n                }\n\n                //TODO\n                //MyDDSFile.DDSToFile(fileName, true, result, false);\n            }\n        }\n\n        private void GenerateStaticAsteroidPreviews(int sizeInPixels, DirectoryInfo directoryInfo)\n        {\n            var directoryGuiHelpers = Directory.CreateDirectory(Path.Combine(directoryInfo.FullName, \"GuiHelpers\"));\n            int index = 1;\n            foreach (MyMwcObjectBuilder_StaticAsteroid_TypesEnum enumValue in MyGuiAsteroidHelpers.MyMwcStaticAsteroidTypesEnumValues)\n            {\n                Debug.WriteLine(string.Format(\"Exporting Static Asteroid Preview {0}/{1} ..\", index++,\n                                              MyGuiAsteroidHelpers.MyMwcStaticAsteroidTypesEnumValues.Count));\n\n                var modelEnum = MyStaticAsteroid.GetModelsFromType(enumValue).LOD0;\n                var model = MyModels.GetModelOnlyData(modelEnum);\n                model.SetDrawTechnique(MyMeshDrawTechnique.MESH);\n\n                string assetName = Path.GetFileName(MyModels.GetModelAssetName(modelEnum));\n                assetName = assetName.Substring(assetName.Length - 5, 5) == \"_LOD0\"\n                                ? assetName.Substring(0, assetName.Length - 5)\n                                : assetName;\n\n                var result = RenderModelPreview(model, sizeInPixels, sizeInPixels);\n                string fileName = Path.Combine(directoryGuiHelpers.FullName, string.Format(\"{0}.dds\", assetName));\n                if (File.Exists(fileName))\n                {\n                    File.Delete(fileName);\n                }\n\n                //TODO\n                //MyDDSFile.DDSToFile(fileName, true, result, false);\n            }\n        }\n\n        private void GeneratePrefabPreviews(int sizeInPixels, DirectoryInfo directoryInfo)\n        {\n            var directoryPrefabs = Directory.CreateDirectory(Path.Combine(directoryInfo.FullName, \"Prefabs\"));\n\n            //foreach (MyMwcObjectBuilderTypeEnum enumValue in MyGuiPrefabHelpers.MyMwcPrefabTypesEnumValues)\n            var enumValue = MyMwcObjectBuilderTypeEnum.Prefab;\n            {\n                int index = 0;\n                //var prefabIds = MyMwcObjectBuilder_Base.GetObjectBuilderIDs(enumValue);\n                var prefabIds = new[] { 534 };\n\n                //if (enumValue == MyMwcObjectBuilderTypeEnum.PrefabFoundationFactory) continue;\n                // scanners has own preview texture\n                //if (enumValue == MyMwcObjectBuilderTypeEnum.PrefabScanner) continue;\n\n                foreach (int prefabId in prefabIds)\n                {\n                    if (prefabId == (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.SimpleObject)\n                        continue;\n\n                    MyPrefabConfiguration config = MyPrefabConstants.GetPrefabConfiguration(enumValue, prefabId);\n\n                    if (config == null)\n                        continue;\n\n                    string assetName = GetPreviewFileName(config, prefabId);\n\n                    foreach (var faction in MyGuiPrefabHelpers.MyMwcFactionTextureEnumValues)\n                    //var faction = MyMwcObjectBuilder_Prefab_AppearanceEnum.None;\n                    {\n                        var appearance = (MyMwcObjectBuilder_Prefab_AppearanceEnum)faction;\n\n                        if (config.FactionSpecific.HasValue && config.FactionSpecific.Value != appearance)\n                            continue;\n\n                        var prefabTypeName = MyGuiObjectBuilderHelpers.GetGuiHelper(enumValue, prefabId).Description;\n                        Debug.WriteLine(string.Format(\"Exporting prefab preview for {0}: {1}/{2} ..\", prefabTypeName,\n                                                      1 + (ushort) faction + 8 * index, 8 * prefabIds.Length));\n\n                        var result = RenderPrefabPreview(prefabId, config, appearance,\n                                                         sizeInPixels, sizeInPixels, 1.5f);\n\n                        string fileName = Path.Combine(directoryPrefabs.FullName,\n                                                       \"v\" + String.Format(\"{0:00}\", (ushort) faction + 1),\n                                                       string.Format(\"{0}.dds\", assetName));\n\n                        if (File.Exists(fileName))\n                        {\n                            File.Delete(fileName);\n                        }\n\n                        //TODO\n                        //MyDDSFile.DDSToFile(fileName, true, result, false);\n                    }\n\n                    index++;\n                }\n            }\n        }\n\n        private static void CompressDDSFiles(DirectoryInfo directoryInfo)\n        {\n            Process nvDXT = new Process();\n            try\n            {\n                nvDXT.StartInfo.FileName = Path.Combine(@\"C:\\KeenSWH\\MinerWars\\MediaDevelopment\\Tools\\\", \"nvdxt.exe\");\n                nvDXT.StartInfo.Arguments = @\"-all -dxt3\";\n                nvDXT.StartInfo.WorkingDirectory = directoryInfo.FullName;\n                nvDXT.StartInfo.CreateNoWindow = true;\n                Debug.WriteLine(\"Now compressing DDS files to DXT3.\");\n                nvDXT.Start();\n                nvDXT.WaitForExit();\n\n                // now trim the trailing underscore that nvDXT generates and move back to parent dir\n                String[] oldFileNames = Directory.GetFiles(directoryInfo.FullName, \"*_.dds\");\n                foreach (var oldName in oldFileNames)\n                {\n                    var fileNameWithoutExtension = Path.GetFileNameWithoutExtension(oldName);\n                    var trimmedWithExtension = fileNameWithoutExtension.TrimEnd('_') + \".dds\";\n                    var newName = Path.Combine(directoryInfo.FullName, trimmedWithExtension);\n\n                    if (File.Exists(newName))\n                        File.Delete(newName);\n                    File.Move(oldName, newName);\n                }\n            }\n            catch (IOException)\n            {\n                Debug.WriteLine(\"Did not succeed in writing DXT1-compressed files. IO error.\");\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/RichControls/MyGuiControlSize.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Localization;\nusing SysUtils.Utils;\n\nnamespace MinerWars.AppCode.Game.GUI.RichControls\n{\n    [Flags]\n    enum MyGuiSizeEnumFlags \n    {\n        Description = 1 << 0,\n        Slider = 1 << 1,\n        TextBox = 1 << 2,\n        \n        All = Description | Slider | TextBox,\n    }\n\n    delegate void OnValueChange(MyGuiControlBase sender);\n\n    class MyGuiControlSize : MyGuiControlParent\n    {\n        private MyGuiControlLabel m_descriptionLabel;\n        private MyGuiControlLabel m_valueLabel;\n        private MyGuiControlSlider m_valueSlider;\n        private MyGuiControlTextbox m_valueTextBox;\n\n        private float m_value;\n        private float m_minValue;\n        private float m_maxValue;\n        private MyGuiSizeEnumFlags m_flags;\n        private StringBuilder m_description;\n        private float m_offset;\n\n        public MyGuiControlSize(IMyGuiControlsParent parent, Vector2 position, Vector2 size, Vector4 backgroundColor, StringBuilder toolTip, float value, float minValue, float maxValue, StringBuilder description, MyGuiSizeEnumFlags flags, float offset)\n            : base(parent, position, size, backgroundColor, toolTip, null) \n        {\n            m_minValue = minValue;\n            m_maxValue = maxValue;\n            m_flags = flags;\n            m_description = description;\n            m_offset = offset;\n            InitControls();\n            SetValue(value);\n        }\n\n        public event OnValueChange OnValueChange;\n\n        private void InitControls() \n        {\n            Vector2 position = new Vector2(-m_size.Value.X / 2f, 0f);\n            Vector2 controlsDelta = new Vector2(m_offset, 0f);\n\n            // create description label\n            if ((m_flags & MyGuiSizeEnumFlags.Description) > 0) \n            {\n                m_descriptionLabel = new MyGuiControlLabel(this, position, null, m_description, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER);\n                Controls.Add(m_descriptionLabel);\n                position += controlsDelta;\n            }\n\n            // create value slider\n            if ((m_flags & MyGuiSizeEnumFlags.Slider) > 0)\n            {\n                // slider\n                m_valueSlider = new MyGuiControlSlider(this, position, MyGuiConstants.SLIDER_WIDTH, m_minValue, m_maxValue, MyGuiConstants.SLIDER_BACKGROUND_COLOR,\n                    new StringBuilder(), MyGuiConstants.SLIDER_WIDTH_LABEL, 0, MyGuiConstants.LABEL_TEXT_SCALE * 0.85f);\n                m_valueSlider.OnChange = OnSliderChange;\n                Controls.Add(m_valueSlider);\n                position += controlsDelta;                                \n            }\n\n            // create value textbox\n            if ((m_flags & MyGuiSizeEnumFlags.TextBox) > 0)\n            {\n                m_valueTextBox = new MyGuiControlTextbox(this, position, MyGuiControlPreDefinedSize.MEDIUM, string.Empty, 9, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiControlTextboxType.DIGITS_ONLY);\n                m_valueTextBox.TextChanged = OnTextBoxChange;\n                Controls.Add(m_valueTextBox);\n            }\n            else if((m_flags & MyGuiSizeEnumFlags.Slider) > 0)\n            {\n                // slider value label\n                m_valueLabel = new MyGuiControlLabel(this, position, null, MyTextsWrapperEnum.None, MyGuiConstants.LABEL_TEXT_COLOR,\n                    MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER);\n                Controls.Add(m_valueLabel);\n            }\n        }\n\n        private void OnSliderChange(MyGuiControlSlider sender) \n        {\n            SetValue(sender, sender.GetValue());\n        }        \n\n        private void SetValue(object sender, float newValue) \n        {\n            m_value = newValue;\n            //string valueString = m_value.ToString(\"#,###0.000\", System.Globalization.CultureInfo.InvariantCulture);\n            //string valueString = MyValueFormatter.GetFormatedDecimal(Convert.ToDecimal(m_value), 1);\n            string valueString = MyValueFormatter.GetFormatedFloat(m_value, 1, \"\");\n            if (m_valueSlider != null && m_valueSlider != sender) \n            {\n                m_valueSlider.OnChange = null;\n                m_valueSlider.SetValue(m_value);\n                m_valueSlider.OnChange = OnSliderChange;                \n            }            \n            if (m_valueTextBox != null && m_valueTextBox != sender) \n            {\n                m_valueTextBox.TextChanged = null;\n                m_valueTextBox.Text = valueString;\n                m_valueTextBox.TextChanged = OnTextBoxChange;\n            }\n            if (m_valueLabel != null) \n            {\n                m_valueLabel.UpdateText(valueString);\n            }\n            if (OnValueChange != null) \n            {\n                OnValueChange(this);\n            }\n        }\n\n        public void SetValue(float value) \n        {\n            SetValue(null, value);\n        }\n\n        public float GetValue() \n        {\n            return m_value;\n        }\n\n        public void UpdateDescription(string newText) \n        {\n            m_descriptionLabel.UpdateText(newText);\n        }\n\n        private void OnTextBoxChange(object sender, EventArgs args) \n        {\n            string textValue = m_valueTextBox.Text;\n            if (!string.IsNullOrEmpty(textValue))\n            {\n                float newValue = (float)(MyValueFormatter.GetDecimalFromString(textValue, 1));\n                if (newValue >= m_minValue && newValue <= m_maxValue)\n                {\n                    SetValue(m_valueTextBox, newValue);\n                }\n                else \n                {\n                    SetValue(m_valueSlider, m_value);\n                }\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/ScreenEditor/MyGuiControlUseProperties.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Entities.Prefabs;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Localization;\n\nnamespace MinerWars.AppCode.Game.GUI.ScreenEditor\n{\n    class MyGuiControlUseProperties : MyGuiControlParent\n    {\n        private MyGuiControlCheckbox m_useSoloCheckbox;\n        private MyGuiControlCheckbox m_useHUBCheckbox;\n        private MyGuiControlCheckbox m_hackSoloCheckbox;\n        private MyGuiControlCheckbox m_hackHUBCheckbox;\n        private MyGuiControlCheckbox m_isHackedCheckbox;\n        private MyGuiControlTextbox m_hackingTimeTextbox;\n        private MyGuiControlCombobox m_hackingLevelCombobox;\n        private Vector4 m_labelColor;\n\n        private MyUseProperties m_useProperties;\n\n        public MyGuiControlUseProperties(IMyGuiControlsParent parent, Vector2 position, MyUseProperties useProperties, Vector4 labelColor)\n            : base(parent, position, new Vector2(0.7f, 0.35f), Vector4.Zero, null, MyGuiManager.GetBlankTexture()) \n        {\n            m_labelColor = labelColor;\n            m_useProperties = useProperties;            \n            InitControls();\n        }\n\n        private void InitControls() \n        {\n            Vector2 controlsLeftPosition = -m_size.Value / 2f;\n            Vector2 controlsRightPosition = controlsLeftPosition + new Vector2(m_size.Value.X / 2f, 0f);\n            Vector2 labelOffset = new Vector2(0.25f, 0f);\n\n            // use solo\n            Controls.Add(new MyGuiControlLabel(this, controlsLeftPosition, null, MyTextsWrapperEnum.UseSolo, m_labelColor, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n            m_useSoloCheckbox = new MyGuiControlCheckbox(this, controlsLeftPosition + labelOffset, MyGuiConstants.CHECKBOX_SIZE, (m_useProperties.UseType & MyUseType.Solo) != 0, MyGuiConstants.CHECKBOX_BACKGROUND_COLOR);\n            Controls.Add(m_useSoloCheckbox);                        \n            controlsLeftPosition += MyGuiConstants.CONTROLS_DELTA/* + new Vector2(m_useSoloCheckbox.GetSize().Value.Y)*/;\n            if ((m_useProperties.UseMask & MyUseType.Solo) == 0) \n            {\n                m_useSoloCheckbox.Enabled = false;\n                m_useSoloCheckbox.Checked = false;\n            }\n\n            // hack solo\n            Controls.Add(new MyGuiControlLabel(this, controlsRightPosition, null, MyTextsWrapperEnum.HackSolo, m_labelColor, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n            m_hackSoloCheckbox = new MyGuiControlCheckbox(this, controlsRightPosition + labelOffset, MyGuiConstants.CHECKBOX_SIZE, (m_useProperties.HackType & MyUseType.Solo) != 0, MyGuiConstants.CHECKBOX_BACKGROUND_COLOR);\n            Controls.Add(m_hackSoloCheckbox);                        \n            controlsRightPosition += MyGuiConstants.CONTROLS_DELTA/* + new Vector2(m_hackSoloCheckbox.GetSize().Value.Y)*/;\n            if ((m_useProperties.HackMask & MyUseType.Solo) == 0)\n            {\n                m_hackSoloCheckbox.Enabled = false;\n                m_hackSoloCheckbox.Checked = false;\n            }\n            \n            // use from HUB\n            Controls.Add(new MyGuiControlLabel(this, controlsLeftPosition, null, MyTextsWrapperEnum.UseFromHUB, m_labelColor, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n            m_useHUBCheckbox = new MyGuiControlCheckbox(this, controlsLeftPosition + labelOffset, MyGuiConstants.CHECKBOX_SIZE, (m_useProperties.UseType & MyUseType.FromHUB) != 0, MyGuiConstants.CHECKBOX_BACKGROUND_COLOR);\n            Controls.Add(m_useHUBCheckbox);                                \n            controlsLeftPosition += MyGuiConstants.CONTROLS_DELTA;\n            if ((m_useProperties.UseMask & MyUseType.FromHUB) == 0)\n            {\n                m_useHUBCheckbox.Enabled = false;\n                m_useHUBCheckbox.Checked = false;\n            }\n\n            // hack from HUB\n            Controls.Add(new MyGuiControlLabel(this, controlsRightPosition, null, MyTextsWrapperEnum.HackFromHUB, m_labelColor, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n            m_hackHUBCheckbox = new MyGuiControlCheckbox(this, controlsRightPosition + labelOffset, MyGuiConstants.CHECKBOX_SIZE, (m_useProperties.HackType & MyUseType.FromHUB) != 0, MyGuiConstants.CHECKBOX_BACKGROUND_COLOR);\n            Controls.Add(m_hackHUBCheckbox);                                \n            controlsRightPosition += MyGuiConstants.CONTROLS_DELTA;\n            if ((m_useProperties.HackMask & MyUseType.FromHUB) == 0)\n            {\n                m_hackHUBCheckbox.Enabled = false;\n                m_hackHUBCheckbox.Checked = false;\n            }\n\n            // is hacked\n            Controls.Add(new MyGuiControlLabel(this, controlsLeftPosition, null, MyTextsWrapperEnum.IsHacked, m_labelColor, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n            m_isHackedCheckbox = new MyGuiControlCheckbox(this, controlsLeftPosition + labelOffset, MyGuiConstants.CHECKBOX_SIZE, m_useProperties.IsHacked, MyGuiConstants.CHECKBOX_BACKGROUND_COLOR);\n            Controls.Add(m_isHackedCheckbox);                        \n            controlsLeftPosition += MyGuiConstants.CONTROLS_DELTA;\n\n            // move the two last controls to the right a bit.\n            labelOffset.X = labelOffset.X + 0.075f;\n\n            // hacking time\n            Controls.Add(new MyGuiControlLabel(this, controlsLeftPosition, null, MyTextsWrapperEnum.HackingTime, m_labelColor, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n            m_hackingTimeTextbox = new MyGuiControlTextbox(this, controlsLeftPosition + labelOffset, MyGuiControlPreDefinedSize.MEDIUM, m_useProperties.HackingTime.ToString(), 6, MyGuiConstants.DEFAULT_CONTROL_NONACTIVE_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiControlTextboxType.DIGITS_ONLY);\n            Controls.Add(m_hackingTimeTextbox);            \n            controlsLeftPosition += MyGuiConstants.CONTROLS_DELTA;\n\n            // hacking level\n            Controls.Add(new MyGuiControlLabel(this, controlsLeftPosition, null, MyTextsWrapperEnum.HackingLevel, m_labelColor, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n            m_hackingLevelCombobox = new MyGuiControlCombobox(this, controlsLeftPosition + labelOffset, MyGuiControlPreDefinedSize.MEDIUM, MyGuiConstants.COMBOBOX_BACKGROUND_COLOR, MyGuiConstants.COMBOBOX_TEXT_SCALE);\n            Controls.Add(m_hackingLevelCombobox);\n            for (int i = 1; i <= 5; i++) \n            {\n                m_hackingLevelCombobox.AddItem(i, new StringBuilder(i.ToString()));\n            }\n            m_hackingLevelCombobox.SelectItemByKey(m_useProperties.HackingLevel);\n        }\n\n        public bool Validate(ref List<StringBuilder> errorMessages) \n        {\n            bool result = true;\n            if (string.IsNullOrEmpty(m_hackingTimeTextbox.Text)) \n            {\n                errorMessages.Add(MyTextsWrapper.Get(MyTextsWrapperEnum.MessageYouMustSetHackingTime));\n                result = false;\n            }\n\n            return result;\n        }\n\n        public void SaveTo(MyUseProperties useProperties) \n        {\n            useProperties.UseType = MyUseType.None;\n            if (m_useSoloCheckbox.Checked) \n            {\n                useProperties.UseType |= MyUseType.Solo;\n            }\n            if (m_useHUBCheckbox != null && m_useHUBCheckbox.Checked)\n            {\n                useProperties.UseType |= MyUseType.FromHUB;\n            }\n\n            useProperties.HackType = MyUseType.None;\n            if (m_hackSoloCheckbox.Checked)\n            {\n                useProperties.HackType |= MyUseType.Solo;\n            }\n            if (m_hackHUBCheckbox != null && m_hackHUBCheckbox.Checked)\n            {\n                useProperties.HackType |= MyUseType.FromHUB;\n            }\n\n            useProperties.HackingTime = (int)double.Parse(m_hackingTimeTextbox.Text.Trim());\n            useProperties.HackingLevel = m_hackingLevelCombobox.GetSelectedKey();\n            useProperties.IsHacked = m_isHackedCheckbox.Checked;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/ScreenEditor/MyGuiScreenEditorCopyTool.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Voxels;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.InfluenceSpheres;\nusing MinerWars.AppCode.Game.Entities.WayPoints;\nusing MinerWars.AppCode.Game.Editor;\nusing MinerWars.AppCode.Game.Prefabs;\n\nnamespace MinerWars.AppCode.Game.GUI.ScreenEditor\n{\n    class MyGuiScreenEditorCopyTool : MyGuiScreenEditorDialogBase\n    {\n        private MyGuiControlListbox m_objectList;\n        private MyMwcObjectBuilder_Sector m_sectorBuilder;\n\n        public MyGuiScreenEditorCopyTool(MyMwcObjectBuilder_Sector sectorBuilder)\n            : base(new Vector2(0.5f, 0.5f), new Vector2(0.8f, 0.88f))\n        {\n            m_size = new Vector2(0.815f, 0.95f);\n            m_sectorBuilder = sectorBuilder;\n\n            //Vector2 controlsDelta = new Vector2(0, 0.0525f);\n            //Vector2 controlsColumn1Origin = new Vector2(-m_size.Value.X / 2.0f + 0.03f, -m_size.Value.Y / 2.0f + 0.08f);\n\n            AddCaption(MyTextsWrapperEnum.CopyTool, MyGuiConstants.LABEL_TEXT_COLOR, new Vector2(0, 0.01f));\n\n            m_objectList = new MyGuiControlListbox(this, \n                new Vector2(0f, -0.02f),\n                MyGuiConstants.LISTBOX_LONGMEDIUM_SIZE, \n                MyGuiConstants.DEFAULT_CONTROL_BACKGROUND_COLOR, \n                null, .6f, 1, 17, 1, false, true, false,\n                null, null, MyGuiManager.GetScrollbarSlider(), MyGuiManager.GetHorizontalScrollbarSlider(), 2, 1, MyGuiConstants.LISTBOX_BACKGROUND_COLOR_BLUE, 0f, 0f, 0f, 0f, 0, 0, -0.01f, -0.01f, -0.02f, 0.02f);\n\n            m_objectList.MultipleSelection = true;\n\n            Controls.Add(m_objectList);\n\n            //AddOkAndCancelButtonControls();\n            Vector2 buttonPosition = new Vector2(0, m_size.Value.Y / 2.0f - MyGuiConstants.MESSAGE_BOX_BORDER_AREA_Y - MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE.Y - 0.02f);\n            Vector2 buttonSize = new Vector2(0.25f, MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE.Y);\n            \n            Controls.Add(new MyGuiControlButton(this,\n                new Vector2(MyGuiConstants.MESSAGE_BOX_BORDER_AREA_X - 0.05f - m_size.Value.X / 2, 0) + buttonPosition + buttonSize / 2, \n                buttonSize, \n                MyGuiConstants.BUTTON_BACKGROUND_COLOR, MyTextsWrapperEnum.SelectAllNone, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnSelectAllNone, MyGuiControlButtonTextAlignment.CENTERED, true, \n                MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n\n            Controls.Add(new MyGuiControlButton(this,\n                new Vector2(m_size.Value.X / 2 - MyGuiConstants.MESSAGE_BOX_BORDER_AREA_X - MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE.X - buttonSize.X + 0.01f, 0) + buttonPosition + buttonSize / 2,\n                buttonSize,\n                MyGuiConstants.BUTTON_BACKGROUND_COLOR, MyTextsWrapperEnum.AddSelectedToSector, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnAddSelected, MyGuiControlButtonTextAlignment.CENTERED, true,\n                MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n\n            Controls.Add(new MyGuiControlButton(this,\n                new Vector2(m_size.Value.X / 2 - MyGuiConstants.MESSAGE_BOX_BORDER_AREA_X - MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE.X +0.05f, 0) + buttonPosition + MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE / 2,\n                MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE,\n                MyGuiConstants.BUTTON_BACKGROUND_COLOR, MyTextsWrapperEnum.Cancel, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnCancel, MyGuiControlButtonTextAlignment.CENTERED, true,\n                MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n\n            FillControls();\n        }\n\n        void OnSelectAllNone(MyGuiControlButton sender)\n        {\n            if (m_objectList.GetSelectedItems().Count > 0)\n            {\n                m_objectList.DeselectAll();\n            }\n            else\n            {\n                m_objectList.SelectAll();\n            }\n        }\n\n        void OnAddSelected(MyGuiControlButton sender)\n        {\n            CloseScreen();\n\n            // Holds ids for remap\n            IMyEntityIdRemapContext remapContext = new MyEntityIdRemapContext();\n\n            var newEntities = new List<MyEntity>();\n\n            foreach (var item in m_objectList.GetSelectedItems())\n            {\n                var builder = m_sectorBuilder.SectorObjects[item.Key];\n                builder.RemapEntityIds(remapContext);\n\n                //builder.EntityId = null;                                        // reset entityId because it's new object\n                //builder.Name = null;\n                \n                //var container = builder as MyMwcObjectBuilder_PrefabContainer;  // reset entityIds also on prefabs in container\n                //if (container != null)\n                //{\n                //    foreach (var prefabBuilder in container.Prefabs)\n                //    {\n                //        prefabBuilder.EntityId = null;\n                //        prefabBuilder.Name = null;\n                //    }\n                //}\n\n                var entity = CreateFromObjectBuilder(builder);\n                if (entity != null)\n                {\n                    newEntities.Add(entity);\n                }\n            }\n\n            foreach (var e in newEntities)\n            {\n                e.Link();\n            }\n\n            // recreate snap point links\n            var snapPointLinks = m_sectorBuilder.SnapPointLinks;\n            foreach (var item in snapPointLinks)\n            {\n                List<MySnapPointLink> group = new List<MySnapPointLink>();\n\n                foreach (var link in item.Links)\n                {\n                    MyEntity entity;\n                    if (!MyEntities.TryGetEntityById(new MyEntityIdentifier(remapContext.RemapEntityId(link.EntityId).Value), out entity))\n                        continue;\n                    var prefab = entity as MyPrefabBase;\n                    if (prefab == null)\n                        continue;\n\n                    if (string.IsNullOrEmpty(link.SnapPointName))\n                    {\n                        if (prefab != null && link.Index < prefab.SnapPoints.Count)\n                            group.Add(new MySnapPointLink(prefab.SnapPoints[link.Index]));\n                    }\n                    else\n                    {\n                        foreach (var snapPoint in prefab.SnapPoints)\n                            if (snapPoint.Name == link.SnapPointName)\n                                group.Add(new MySnapPointLink(snapPoint));\n                    }\n                }\n\n                if (group.Count >= 2)\n                    MyEditor.Static.AddLinkedSnapPoints(group);\n            }\n\n            MyWayPointGraph.DeleteNullVerticesFromPaths();\n        }\n\n        private MyEntity CreateFromObjectBuilder(MyMwcObjectBuilder_Base objectBuilder)\n        {\n            if (objectBuilder.GetObjectBuilderType() == MyMwcObjectBuilderTypeEnum.VoxelMap)\n            {\n                MyMwcObjectBuilder_VoxelMap voxelMapObjectBuilder = objectBuilder as MyMwcObjectBuilder_VoxelMap;\n                return MyEntities.CreateFromObjectBuilderAndAdd(null, voxelMapObjectBuilder, Matrix.Identity);\n            }\n            else if (objectBuilder.GetObjectBuilderType() == MyMwcObjectBuilderTypeEnum.VoxelMap_Neighbour)\n            {\n                //  Voxel map neighbours are handled in its static classe, so ignore it here\n            }\n            else\n            {\n                if (objectBuilder is MyMwcObjectBuilder_Object3dBase || objectBuilder is MyMwcObjectBuilder_InfluenceSphere)\n                {\n                    MyEntity temporaryEntity = null;\n                    Matrix matrix = Matrix.Identity;\n\n                    if (objectBuilder is MyMwcObjectBuilder_Object3dBase)\n                    {\n                        var object3d = objectBuilder as MyMwcObjectBuilder_Object3dBase;\n\n                        matrix = Matrix.CreateWorld(object3d.PositionAndOrientation.Position, object3d.PositionAndOrientation.Forward, object3d.PositionAndOrientation.Up);\n                        MyUtils.AssertIsValid(matrix);\n                    }\n\n                    temporaryEntity = MyEntities.CreateFromObjectBuilderAndAdd(null, objectBuilder, matrix);\n\n                    MyEntities.TestEntityAfterInsertionForCollision(temporaryEntity);\n                    return temporaryEntity;\n                }\n            }\n            return null;\n        }\n\n        void OnCancel(MyGuiControlButton sender)\n        {\n            CloseScreen();\n        }\n\n        private void FillControls()\n        {\n            string commonPrefix = \"MyMwcObjectBuilder_\";\n            m_objectList.RemoveAllItems();\n            if (m_sectorBuilder != null)\n            {\n                int index = 0;\n                foreach (var objectBuilder in m_sectorBuilder.SectorObjects)\n                {\n                    string builderTypeName = objectBuilder.GetType().Name.ToString();\n                    string text = string.Format(\"{0}, {1}, {2}\",\n                        string.IsNullOrEmpty(objectBuilder.Name) ? \"no name\" : objectBuilder.Name,\n                        objectBuilder.EntityId,\n                        builderTypeName.StartsWith(commonPrefix) ? builderTypeName.Substring(commonPrefix.Length) : builderTypeName);\n\n                    m_objectList.AddItem(index++, new StringBuilder(text));\n                }\n            }\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenEditorCopyTool\";\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/ScreenEditor/MyGuiScreenEditorCopyToolSelectSector.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.Utils;\n\nnamespace MinerWars.AppCode.Game.GUI.ScreenEditor\n{\n    class MyGuiScreenEditorCopyToolSelectSector : MyGuiScreenEditorDialogBase\n    {\n        MyGuiControlTextbox m_playerName;\n        MyGuiControlTextbox m_sector_name;\n        MyGuiControlTextbox m_sectorIdentifierX;\n        MyGuiControlTextbox m_sectorIdentifierY;\n        MyGuiControlTextbox m_sectorIdentifierZ;\n\n        public MyGuiScreenEditorCopyToolSelectSector()\n            : base(new Vector2(0.5f, 0.5f), new Vector2(0.03f + MyGuiConstants.TEXTBOX_MEDIUM_SIZE.X + 0.04f + MyGuiConstants.TEXTBOX_MEDIUM_SIZE.X + 0.03f, 0.55f))\n        {\n            m_size = new Vector2(0.65f, 0.55f);\n            Vector2 controlsDelta = new Vector2(0, 0.0525f);\n            Vector2 controlsColumn1Origin = new Vector2(-m_size.Value.X / 2.0f + 0.04f, -m_size.Value.Y / 2.0f + 0.06f);\n            Vector2 controlsColumn2Origin = new Vector2(controlsColumn1Origin.X + MyGuiConstants.TEXTBOX_MEDIUM_SIZE.X + 0.05f, controlsColumn1Origin.Y - 0.02f);\n            Vector2 controlsColumn2OriginLabel = new Vector2(controlsColumn1Origin.X + MyGuiConstants.TEXTBOX_MEDIUM_SIZE.X + 0.03f, controlsColumn1Origin.Y - 0.02f);\n            //Vector2 controls\n\n            AddCaption(MyTextsWrapperEnum.SelectSector, MyGuiConstants.LABEL_TEXT_COLOR, new Vector2(0, 0.007f));\n\n            // controls for typing player name\n            Controls.Add(new MyGuiControlLabel(this, controlsColumn1Origin + 1 * controlsDelta, null, MyTextsWrapperEnum.PlayerName, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n            m_playerName = new MyGuiControlTextbox(this, controlsColumn1Origin + 2 * controlsDelta + new Vector2(MyGuiConstants.TEXTBOX_MEDIUM_SIZE.X / 2.0f, 0), MyGuiControlPreDefinedSize.MEDIUM, \"\", 20, MyGuiConstants.TEXTBOX_BACKGROUND_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiControlTextboxType.NORMAL);\n            Controls.Add(m_playerName);\n\n            // controls for typing sector name\n            Controls.Add(new MyGuiControlLabel(this, controlsColumn1Origin + 3 * controlsDelta, null, MyTextsWrapperEnum.SectorName, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n            m_sector_name = new MyGuiControlTextbox(this, controlsColumn1Origin + 4 * controlsDelta + new Vector2(MyGuiConstants.TEXTBOX_MEDIUM_SIZE.X / 2.0f, 0), MyGuiControlPreDefinedSize.MEDIUM, \"\", 20, MyGuiConstants.TEXTBOX_BACKGROUND_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiControlTextboxType.NORMAL);\n            Controls.Add(m_sector_name);\n\n            // controls for typing sector id.\n            Controls.Add(new MyGuiControlLabel(this, controlsColumn2Origin + 3 * controlsDelta, null, MyTextsWrapperEnum.SectorIdentifier, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n            m_sectorIdentifierX = new MyGuiControlTextbox(this, controlsColumn2Origin + 4 * controlsDelta + new Vector2(MyGuiConstants.TEXTBOX_MEDIUM_SIZE.X / 2.0f, 0), MyGuiControlPreDefinedSize.MEDIUM, \"\", 20, MyGuiConstants.TEXTBOX_BACKGROUND_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiControlTextboxType.NORMAL);\n            m_sectorIdentifierY = new MyGuiControlTextbox(this, controlsColumn2Origin + 5 * controlsDelta + new Vector2(MyGuiConstants.TEXTBOX_MEDIUM_SIZE.X / 2.0f, 0), MyGuiControlPreDefinedSize.MEDIUM, \"\", 20, MyGuiConstants.TEXTBOX_BACKGROUND_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiControlTextboxType.NORMAL);\n            m_sectorIdentifierZ = new MyGuiControlTextbox(this, controlsColumn2Origin + 6 * controlsDelta + new Vector2(MyGuiConstants.TEXTBOX_MEDIUM_SIZE.X / 2.0f, 0), MyGuiControlPreDefinedSize.MEDIUM, \"\", 20, MyGuiConstants.TEXTBOX_BACKGROUND_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiControlTextboxType.NORMAL);\n\n            Controls.Add(new MyGuiControlLabel(this, controlsColumn2OriginLabel + 4 * controlsDelta, null, MyTextsWrapperEnum.X, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n            Controls.Add(new MyGuiControlLabel(this, controlsColumn2OriginLabel + 5 * controlsDelta, null, MyTextsWrapperEnum.Y, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n            Controls.Add(new MyGuiControlLabel(this, controlsColumn2OriginLabel + 6 * controlsDelta, null, MyTextsWrapperEnum.Z, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n\n            Controls.Add(m_sectorIdentifierX);\n            Controls.Add(m_sectorIdentifierY);\n            Controls.Add(m_sectorIdentifierZ);\n\n            AddOkAndCancelButtonControls(new Vector2(0, -0.02f));\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenEditorCopyToolSelectSector\";\n        }\n\n        public override bool Update(bool hasFocus)\n        {\n            if (hasFocus)\n            {\n                bool namedSector = !string.IsNullOrEmpty(m_sector_name.Text);\n\n                m_sectorIdentifierX.Enabled = !namedSector;\n                m_sectorIdentifierY.Enabled = !namedSector;\n                m_sectorIdentifierZ.Enabled = !namedSector;\n            }\n            return base.Update(hasFocus);\n        }\n\n        protected override void OnOkClick(MyGuiControlButton sender)\n        {\n            MyMwcSectorTypeEnum sectorType = string.IsNullOrEmpty(m_playerName.Text) ? MyMwcSectorTypeEnum.STORY : MyMwcSectorTypeEnum.SANDBOX;\n            bool namedSector = !string.IsNullOrEmpty(m_sector_name.Text);\n            MyMwcSectorIdentifier sectorIdentifier;\n            if (namedSector)\n            {\n                sectorIdentifier = new MyMwcSectorIdentifier(sectorType, null, new MyMwcVector3Int(0, 0, 0), m_sector_name.Text);\n            }\n            else\n            {\n                int x, y, z;\n                if (!int.TryParse(m_sectorIdentifierX.Text, out x) ||\n                    !int.TryParse(m_sectorIdentifierY.Text, out y) ||\n                    !int.TryParse(m_sectorIdentifierZ.Text, out z))\n                {\n                    MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, \n                        MyTextsWrapperEnum.BadSectorIdentifierInput, MyTextsWrapperEnum.MessageBoxCaptionError,\n                        MyTextsWrapperEnum.Ok, null));\n                    return;\n                }\n\n                sectorIdentifier = new MyMwcSectorIdentifier(sectorType, null, new MyMwcVector3Int(x, y, z), null);\n            }\n\n            // This screen will be closed on successfull load from progress screen\n            MyGuiManager.AddScreen(new MyGuiScreenEditorLoadSectorObjectsProgress(\n                this, MyTextsWrapperEnum.LoadingPleaseWait, m_playerName.Text, sectorIdentifier));\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/ScreenEditor/MyGuiScreenEditorDialogBase.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Localization;\n\nnamespace MinerWars.AppCode.Game.GUI.ScreenEditor\n{\n    // Helper class with base dialog fuctions\n    abstract class MyGuiScreenEditorDialogBase : MyGuiScreenBase\n    {\n        protected static readonly float CAPTION_OFFSET_Y = 0.1f;\n\n        public MyGuiScreenEditorDialogBase(Vector2 position, Vector2 size)\n            : base(position, MyGuiConstants.SCREEN_BACKGROUND_COLOR, size)\n        {\n            this.OnEnterCallback = OnEnter;\n        }\n\n        protected void AddOkAndCancelButtonControls()\n        {\n            AddOkAndCancelButtonControls(Vector2.Zero);\n        }\n\n        protected void AddOkAndCancelButtonControls(Vector2 offset)\n        {\n            //  Buttons OK and CANCEL\n            Vector2 buttonDelta = new Vector2(0.1f, m_size.Value.Y / 2.0f - MyGuiConstants.MESSAGE_BOX_BORDER_AREA_Y - MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE.Y / 2.0f - 0.01f) + offset;\n            Controls.Add(new MyGuiControlButton(this, new Vector2(-buttonDelta.X, buttonDelta.Y), MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.Ok, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnOkClick, MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n            Controls.Add(new MyGuiControlButton(this, new Vector2(+buttonDelta.X, buttonDelta.Y), MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.Cancel, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnCancelClick, MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n        }\n\n        protected void AddBackButtonControl()\n        {\n            AddBackButtonControl(Vector2.Zero);\n        }\n\n        protected void AddBackButtonControl(Vector2 offset)\n        {\n            Vector2 buttonDelta = new Vector2(0.05f, m_size.Value.Y / 2.0f - MyGuiConstants.MESSAGE_BOX_BORDER_AREA_Y - MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE.Y / 2.0f - 0.01f) + offset;\n            Controls.Add(new MyGuiControlButton(this, new Vector2(0.0f, m_size.Value.Y / 2.0f - MyGuiConstants.MESSAGE_BOX_BORDER_AREA_Y - MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE.Y / 2.0f) + offset, MyGuiConstants.BACK_BUTTON_SIZE, MyGuiConstants.BACK_BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.Back, MyGuiConstants.BACK_BUTTON_TEXT_COLOR, MyGuiConstants.BACK_BUTTON_TEXT_SCALE, OnBackClick, MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n        }\n\n        protected virtual void OnOkClick(MyGuiControlButton sender)\n        {\n            CloseScreen();\n        }\n\n        protected virtual void OnCancelClick(MyGuiControlButton sender)\n        {\n            CloseScreen();\n        }\n\n        protected virtual void OnBackClick(MyGuiControlButton sender)\n        {\n            CloseScreen();\n        }\n\n        protected virtual void OnEnter()\n        {\n            OnOkClick(null);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/ScreenEditor/MyGuiScreenEditorEditProperties.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.GUI.Helpers;\nusing MinerWars.AppCode.Game.Gameplay;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Entities.Prefabs;\nusing MinerWars.AppCode.Game.Prefabs;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils.Utils;\nusing MinerWars.AppCode.Game.Entities.CargoBox;\nusing MinerWars.AppCode.Game.Entities.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.Prefabs;\n\nnamespace MinerWars.AppCode.Game.GUI.ScreenEditor\n{\n    class MyGuiScreenEditorEditProperties : MyGuiScreenEditorDialogBase\n    {\n        [Flags]\n        private enum MyEditPropertyEnum\n        {                \n            None = 0,\n            Name = 1 << 0,\n            DisplayName = 1 << 1,\n            Faction = 1 << 2,\n            HealthRatio = 1 << 3,\n            MaxHealth = 1 << 4,\n            Indestructible = 1 << 5,\n            FactionAppearance = 1 << 6,\n            UseProperties = 1 << 7,\n            Activated = 1 << 8,\n            RequiresEnergy = 1 << 9,\n            KinematicPartsHealthAndMaxHealth = 1 << 10,\n            DisplayHud = 1 << 11,\n            Difficulty = 1 << 12,\n            //All = Name | DisplayName | Faction | Health | MaxHealth | Indestructible | FactionAppearance | UseProperties,\n        }\n\n        public class MyHealthAndMaxHealth \n        {\n            public float Health;\n            public float MaxHealth;\n\n            public MyHealthAndMaxHealth(float health, float maxHealth) \n            {\n                Health = health;\n                MaxHealth = maxHealth;\n            }\n        }\n\n        class MyEditProperties\n        {\n            public string Name;\n            public string DisplayName;\n            public MyMwcObjectBuilder_FactionEnum Faction;\n            public float? HealthRatio;\n            public float? MaxHealth;\n            public bool IsIndestructible;\n            public MyUseProperties UseProperties;\n            public bool IsActivated;\n            public bool? RequiresEnergy;\n            public MyHealthAndMaxHealth[] KinematicPartsHealthAndMaxHealth;\n            public bool DisplayHud;\n            public MyGameplayDifficultyEnum Difficulty;\n        }\n\n        private static readonly Dictionary<Type, MyEditPropertyEnum> m_editPropertiesPerEntityType;\n        private static readonly List<MyEditPropertyEnum> m_editPropertiesForMultiEdit = new List<MyEditPropertyEnum>()\n        {\n            MyEditPropertyEnum.DisplayName,\n            MyEditPropertyEnum.Faction,\n            MyEditPropertyEnum.FactionAppearance,\n            MyEditPropertyEnum.HealthRatio,\n            MyEditPropertyEnum.Indestructible,\n            MyEditPropertyEnum.MaxHealth,\n            MyEditPropertyEnum.UseProperties,\n            MyEditPropertyEnum.RequiresEnergy,\n            MyEditPropertyEnum.Activated,\n            MyEditPropertyEnum.DisplayHud,\n            MyEditPropertyEnum.Difficulty,\n        };\n\n        static MyGuiScreenEditorEditProperties()\n        {\n            m_editPropertiesPerEntityType = new Dictionary<Type, MyEditPropertyEnum>();\n            m_editPropertiesPerEntityType.Add(typeof(MyPrefabContainer), \n                MyEditPropertyEnum.Name | MyEditPropertyEnum.DisplayName | MyEditPropertyEnum.Faction | MyEditPropertyEnum.FactionAppearance | MyEditPropertyEnum.Activated | MyEditPropertyEnum.Difficulty);\n            m_editPropertiesPerEntityType.Add(typeof(MyPrefabBase),\n                MyEditPropertyEnum.Name | MyEditPropertyEnum.DisplayName | MyEditPropertyEnum.HealthRatio | MyEditPropertyEnum.MaxHealth | MyEditPropertyEnum.Indestructible | MyEditPropertyEnum.Activated | MyEditPropertyEnum.RequiresEnergy | MyEditPropertyEnum.DisplayHud | MyEditPropertyEnum.Difficulty);\n            m_editPropertiesPerEntityType.Add(typeof(MySmallShip),\n                MyEditPropertyEnum.Name | MyEditPropertyEnum.DisplayName | MyEditPropertyEnum.HealthRatio | MyEditPropertyEnum.MaxHealth | MyEditPropertyEnum.Indestructible | MyEditPropertyEnum.Faction | MyEditPropertyEnum.Activated | MyEditPropertyEnum.DisplayHud | MyEditPropertyEnum.Difficulty);\n            m_editPropertiesPerEntityType.Add(typeof(IMyUseableEntity),\n                MyEditPropertyEnum.UseProperties | MyEditPropertyEnum.Activated);\n            m_editPropertiesPerEntityType.Add(typeof(MyCargoBox),\n                MyEditPropertyEnum.Name | MyEditPropertyEnum.DisplayName | MyEditPropertyEnum.HealthRatio | MyEditPropertyEnum.MaxHealth | MyEditPropertyEnum.Indestructible | MyEditPropertyEnum.Activated | MyEditPropertyEnum.DisplayHud | MyEditPropertyEnum.Difficulty);\n            m_editPropertiesPerEntityType.Add(typeof(MyPrefabKinematic),\n                MyEditPropertyEnum.KinematicPartsHealthAndMaxHealth);\n\n            //m_editPropertiesForMultiEdit = new List<MyEditPropertyEnum>();\n            //m_editPropertiesForMultiEdit.Add(MyEditPropertyEnum.DisplayName);\n            //m_editPropertiesForMultiEdit.Add(MyEditPropertyEnum.Faction);\n            //m_editPropertiesForMultiEdit.Add(MyEditPropertyEnum.FactionAppearance);\n            //m_editPropertiesForMultiEdit.Add(MyEditPropertyEnum.HealthRatio);\n            //m_editPropertiesForMultiEdit.Add(MyEditPropertyEnum.Indestructible);\n            //m_editPropertiesForMultiEdit.Add(MyEditPropertyEnum.MaxHealth);\n            //m_editPropertiesForMultiEdit.Add(MyEditPropertyEnum.UseProperties);\n            //m_editPropertiesForMultiEdit.Add(MyEditPropertyEnum.RequiresEnergy);\n            //m_editPropertiesForMultiEdit.Add(MyEditPropertyEnum.Activated);\n            //m_editPropertiesForMultiEdit.Add(MyEditPropertyEnum.DisplayHud);\n            //m_editPropertiesForMultiEdit.Add(MyEditPropertyEnum.Difficulty);\n        }        \n\n        private static MyEditPropertyEnum GetEditProperties(MyEntity entity)\n        {\n            MyEditPropertyEnum result = MyEditPropertyEnum.None;\n            foreach (KeyValuePair<Type, MyEditPropertyEnum> keyValuePair in m_editPropertiesPerEntityType)\n            {\n                if(keyValuePair.Key.IsInstanceOfType(entity))\n                {\n                    result |= keyValuePair.Value;\n                }\n            }\n            return result;\n        }\n\n        public static bool CanEditProperties(MyEntity entity)\n        {\n            foreach (KeyValuePair<Type, MyEditPropertyEnum> keyValuePair in m_editPropertiesPerEntityType)\n            {\n                if (keyValuePair.Key.IsInstanceOfType(entity))\n                {\n                    return true;\n                }\n            }\n            return false;\n        }\n\n        public static bool CanEditProperties(List<MyEntity> entities) \n        {\n            if (entities.Count == 0) \n            {\n                return false;\n            }\n            foreach (MyEntity entity in entities) \n            {\n                if (!CanEditProperties(entity)) \n                {\n                    return false;\n                }\n            }\n            return true;\n        }\n\n        private static MyEditPropertyEnum GetEditProperties(List<MyEntity> entities) \n        {            \n            Array allEditProperties = Enum.GetValues(typeof(MyEditPropertyEnum));\n            int[] editPropertiesCount = new int[MyMwcUtils.GetMaxValueFromEnum<MyEditPropertyEnum>() + 1];            \n            foreach (MyEntity entity in entities) \n            {\n                MyEditPropertyEnum editPropertyForEntity = GetEditProperties(entity);\n                foreach (MyEditPropertyEnum editProperty in allEditProperties)\n                {                    \n                    if ((entities.Count == 1 || m_editPropertiesForMultiEdit.Contains(editProperty)) && \n                        (editPropertyForEntity & editProperty) != 0)\n                    {\n                        editPropertiesCount[(int)editProperty]++;\n                    }                    \n                }\n            }\n\n            MyEditPropertyEnum result = MyEditPropertyEnum.None;\n            foreach (MyEditPropertyEnum editProperty in allEditProperties)\n            {\n                if (editPropertiesCount[(int)editProperty] == entities.Count)\n                {\n                    result |= editProperty;\n                }\n            }\n\n            return result;\n        }\n\n        private const int TEXTBOX_MAX_LENGTH = 64;\n        private const int TEXTBOX_NUMBERS_MAX_LENGTH = 6;\n\n        //private MyEntity m_entity;\n        private List<MyEntity> m_entities;\n\n        private MyGuiControlTextbox m_name;\n        private MyGuiControlTextbox m_displayName;\n        private MyGuiControlTextbox m_health;\n        private MyGuiControlTextbox m_healthPercentage;\n        private MyGuiControlTextbox m_maxHealth;\n        private MyGuiControlCombobox m_faction;\n        private MyGuiControlCheckbox m_indestructible;\n        private MyGuiControlCheckbox m_activated;\n        private MyGuiControlCombobox m_appearance;\n        private MyGuiControlUseProperties m_useProperties;\n        private MyGuiControlCheckbox m_requiresEnergyCheckbox;\n        private MyGuiControlButton m_kinematicPartsHealthAndMaxHealth;\n        private MyGuiControlCheckbox m_displayHud;\n        private MyGuiControlCombobox m_difficulty;\n\n        private MyEditProperties m_editProperties;\n\n        private List<StringBuilder> m_errorMessages;\n        private StringBuilder m_errorMessage;\n\n        private bool[] m_editPropertiesNotSame;\n        private MyEditPropertyEnum m_editPropertiesFlags;\n\n        public MyGuiScreenEditorEditProperties(MyEntity entity)\n            : this(new List<MyEntity>{entity})\n        {                                                \n        }\n\n        public MyGuiScreenEditorEditProperties(List<MyEntity> entities)\n            : base(new Vector2(0.5f, 0.5f), new Vector2(0.75f, 1f))\n        {\n            Debug.Assert(entities.Count > 0);\n            Debug.Assert(CanEditProperties(entities));            \n\n            AddCaption(new StringBuilder(\"Edit properties\"), MyGuiConstants.LABEL_TEXT_COLOR);\n            \n            m_entities = entities;            \n            m_editProperties = new MyEditProperties();\n            m_editProperties.Name = m_entities[0].Name;\n            m_editProperties.DisplayName = m_entities[0].DisplayName;\n            m_editProperties.Faction = m_entities[0].Faction;\n            m_editProperties.HealthRatio = m_entities[0].HealthRatio;\n            m_editProperties.MaxHealth = m_entities[0].MaxHealth;\n            m_editProperties.IsIndestructible = !m_entities[0].IsDestructible;\n            m_editProperties.RequiresEnergy = m_entities[0] is MyPrefabBase ? ((MyPrefabBase)m_entities[0]).RequiresEnergy : null;\n            m_editProperties.UseProperties = m_entities[0] is IMyUseableEntity ? ((IMyUseableEntity)m_entities[0]).UseProperties : null;\n            m_editProperties.IsActivated = m_entities[0].Activated;\n            m_editProperties.DisplayHud = m_entities[0].DisplayOnHud;\n            m_editProperties.Difficulty = m_entities[0].MaxDifficultyToActivated;\n            if (m_entities[0] is MyPrefabKinematic)\n            {\n                MyPrefabKinematic prefabKinematic = m_entities[0] as MyPrefabKinematic;\n                MyPrefabConfigurationKinematic prefabKinematicConfig = prefabKinematic.GetConfiguration() as MyPrefabConfigurationKinematic;\n                m_editProperties.KinematicPartsHealthAndMaxHealth = new MyHealthAndMaxHealth[prefabKinematicConfig.KinematicParts.Count];\n                for (int i = 0; i < m_editProperties.KinematicPartsHealthAndMaxHealth.Length; i++) \n                {\n                    MyPrefabKinematicPart kinematicPart = prefabKinematic.Parts[i];                    \n                    if (kinematicPart != null)\n                    {\n                        float health = kinematicPart.Health;\n                        float maxHealth = kinematicPart.MaxHealth;\n                        m_editProperties.KinematicPartsHealthAndMaxHealth[i] = new MyHealthAndMaxHealth(health, maxHealth);\n                    }                    \n                }\n            }\n\n            m_editPropertiesFlags = GetEditProperties(m_entities);\n\n            DetectNotSameProperties();\n            InitControls();\n\n            m_errorMessages = new List<StringBuilder>();\n            m_errorMessage = new StringBuilder();\n        }\n\n        private void DetectNotSameProperties() \n        {\n            m_editPropertiesNotSame = new bool[MyMwcUtils.GetMaxValueFromEnum<MyEditPropertyEnum>() + 1];\n            foreach (MyEntity entity in m_entities)\n            {\n                if ((m_editPropertiesFlags & MyEditPropertyEnum.Name) > 0 && \n                    entity.Name != m_editProperties.Name)\n                {\n                    m_editPropertiesNotSame[(int)MyEditPropertyEnum.Name] = true;\n                }\n                if ((m_editPropertiesFlags & MyEditPropertyEnum.DisplayName) > 0 && \n                    entity.DisplayName != m_editProperties.DisplayName)\n                {\n                    m_editPropertiesNotSame[(int)MyEditPropertyEnum.DisplayName] = true;\n                }\n                if ((m_editPropertiesFlags & MyEditPropertyEnum.Faction) > 0 && \n                    entity.Faction != m_editProperties.Faction)\n                {\n                    m_editPropertiesNotSame[(int)MyEditPropertyEnum.Faction] = true;\n                }\n                if ((m_editPropertiesFlags & MyEditPropertyEnum.HealthRatio) > 0 && \n                    entity.HealthRatio != m_editProperties.HealthRatio)\n                {\n                    m_editPropertiesNotSame[(int)MyEditPropertyEnum.HealthRatio] = true;\n                }\n                if ((m_editPropertiesFlags & MyEditPropertyEnum.MaxHealth) > 0 && \n                    entity.MaxHealth != m_editProperties.MaxHealth)\n                {\n                    m_editPropertiesNotSame[(int)MyEditPropertyEnum.MaxHealth] = true;\n                }\n                if ((m_editPropertiesFlags & MyEditPropertyEnum.Indestructible) > 0 && \n                    !entity.IsDestructible != m_editProperties.IsIndestructible)\n                {\n                    m_editPropertiesNotSame[(int)MyEditPropertyEnum.Indestructible] = true;\n                }\n                if ((m_editPropertiesFlags & MyEditPropertyEnum.UseProperties) > 0 && \n                    entity is IMyUseableEntity && ((IMyUseableEntity)entity).UseProperties != m_editProperties.UseProperties)\n                {\n                    m_editPropertiesNotSame[(int)MyEditPropertyEnum.UseProperties] = true;\n                }\n                if ((m_editPropertiesFlags & MyEditPropertyEnum.RequiresEnergy) > 0 &&\n                    entity is MyPrefabBase && ((MyPrefabBase)entity).RequiresEnergy != m_editProperties.RequiresEnergy)\n                {\n                    m_editPropertiesNotSame[(int)MyEditPropertyEnum.RequiresEnergy] = true;\n                }   \n                if ((m_editPropertiesFlags & MyEditPropertyEnum.Activated) > 0 && \n                    entity.Activated != m_editProperties.IsActivated)\n                {\n                    m_editPropertiesNotSame[(int)MyEditPropertyEnum.Activated] = true;\n                }\n                if ((m_editPropertiesFlags & MyEditPropertyEnum.DisplayHud) > 0 &&\n                    entity.DisplayOnHud != m_editProperties.DisplayHud)\n                {\n                    m_editPropertiesNotSame[(int)MyEditPropertyEnum.DisplayHud] = true;\n                }\n                if ((m_editPropertiesFlags & MyEditPropertyEnum.Difficulty) > 0 &&\n                    entity.MaxDifficultyToActivated != m_editProperties.Difficulty) \n                {\n                    m_editPropertiesNotSame[(int)MyEditPropertyEnum.Difficulty] = true;\n                }\n                if ((m_editPropertiesFlags & MyEditPropertyEnum.KinematicPartsHealthAndMaxHealth) > 0 &&\n                    entity is MyPrefabKinematic) \n                {\n                    MyPrefabKinematic prefabKinematic = entity as MyPrefabKinematic;\n                    MyPrefabConfigurationKinematic prefabKinematicConfig = prefabKinematic.GetConfiguration() as MyPrefabConfigurationKinematic;\n                    for (int i = 0; i < prefabKinematicConfig.KinematicParts.Count; i++) \n                    {\n                        MyPrefabKinematicPart prefabKinematicPart = prefabKinematic.Parts[i];\n                        if (m_editProperties.KinematicPartsHealthAndMaxHealth == null &&\n                            (prefabKinematicConfig.KinematicParts.Count != m_editProperties.KinematicPartsHealthAndMaxHealth.Length ||                            \n                            m_editProperties.KinematicPartsHealthAndMaxHealth[i] == null && prefabKinematicPart != null ||\n                            m_editProperties.KinematicPartsHealthAndMaxHealth[i] != null && prefabKinematicPart == null ||\n                            m_editProperties.KinematicPartsHealthAndMaxHealth[i].Health != prefabKinematicPart.Health ||\n                            m_editProperties.KinematicPartsHealthAndMaxHealth[i].MaxHealth != prefabKinematicPart.MaxHealth)) \n                        {\n                            m_editPropertiesNotSame[(int)MyEditPropertyEnum.KinematicPartsHealthAndMaxHealth] = true;\n                        }\n                    }\n                }\n            }\n        }\n\n        private void InitControls()\n        {\n            Controls.Clear();            \n\n            string entityName;\n            if (m_entities.Count == 1)\n            {\n                entityName = \"(\" + m_entities[0].GetFriendlyName() + \")\";\n            }\n            else \n            {\n                entityName = \"(Mutliedit)\";\n            }\n\n            Controls.Add(new MyGuiControlLabel(this, new Vector2(0f, -m_size.Value.Y / 2f + 0.063f), null, new StringBuilder(entityName),\n                MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER));\n\n            Vector2 controlsStartPosition = new Vector2(-m_size.Value.X / 2f + 0.05f, -m_size.Value.Y / 2f + 0.12f);\n            Vector2 labelPosition = controlsStartPosition;\n            Vector2 controlPosition = controlsStartPosition + new Vector2(0.4f, 0f);\n            Vector4 notSameColor = Color.Red.ToVector4();\n\n            // name\n            if ((m_editPropertiesFlags & MyEditPropertyEnum.Name) != 0)\n            {\n                AddLabel(labelPosition, MyTextsWrapperEnum.Name, m_editPropertiesNotSame[(int)MyEditPropertyEnum.Name]);                \n                m_name = new MyGuiControlTextbox(this, controlPosition, MyGuiControlPreDefinedSize.MEDIUM,\n                                                 m_editProperties.Name != null ? m_editProperties.Name : string.Empty, TEXTBOX_MAX_LENGTH,\n                                                 MyGuiConstants.TEXTBOX_BACKGROUND_COLOR, MyGuiConstants.LABEL_TEXT_SCALE,\n                                                 MyGuiControlTextboxType.NORMAL);\n                Controls.Add(m_name);\n\n                labelPosition += MyGuiConstants.CONTROLS_DELTA;\n                controlPosition += MyGuiConstants.CONTROLS_DELTA;\n            }\n\n            // display name\n            if ((m_editPropertiesFlags & MyEditPropertyEnum.DisplayName) != 0)\n            {\n                AddLabel(labelPosition, MyTextsWrapperEnum.DisplayName, m_editPropertiesNotSame[(int)MyEditPropertyEnum.DisplayName]);                \n                m_displayName = new MyGuiControlTextbox(this, controlPosition, MyGuiControlPreDefinedSize.MEDIUM,\n                                                 m_editProperties.DisplayName != null ? m_editProperties.DisplayName : string.Empty, TEXTBOX_MAX_LENGTH,\n                                                 MyGuiConstants.TEXTBOX_BACKGROUND_COLOR, MyGuiConstants.LABEL_TEXT_SCALE,\n                                                 MyGuiControlTextboxType.NORMAL);\n                Controls.Add(m_displayName);\n\n                labelPosition += MyGuiConstants.CONTROLS_DELTA;\n                controlPosition += MyGuiConstants.CONTROLS_DELTA;\n            }\n\n            // display hud\n            if ((m_editPropertiesFlags & MyEditPropertyEnum.DisplayHud) != 0)\n            {                \n                AddLabel(labelPosition, MyTextsWrapperEnum.DisplayHud, m_editPropertiesNotSame[(int)MyEditPropertyEnum.DisplayHud]);\n                m_displayHud = new MyGuiControlCheckbox(this, controlPosition, m_editProperties.DisplayHud, MyGuiConstants.CHECKBOX_BACKGROUND_COLOR);\n\n                Controls.Add(m_displayHud);\n\n                labelPosition += MyGuiConstants.CONTROLS_DELTA;\n                controlPosition += MyGuiConstants.CONTROLS_DELTA;\n\n            }\n\n            // difficulty\n            if ((m_editPropertiesFlags ^ MyEditPropertyEnum.Difficulty) != 0) \n            {\n                AddLabel(labelPosition, MyTextsWrapperEnum.ActivatedUpToDifficulty, m_editPropertiesNotSame[(int)MyEditPropertyEnum.Difficulty]);\n                m_difficulty = new MyGuiControlCombobox(this, controlPosition, MyGuiControlPreDefinedSize.MEDIUM, MyGuiConstants.COMBOBOX_BACKGROUND_COLOR, MyGuiConstants.COMBOBOX_TEXT_SCALE);\n                m_difficulty.AddItem((int)MyGameplayDifficultyEnum.EASY, MyTextsWrapperEnum.DifficultyEasy);\n                m_difficulty.AddItem((int)MyGameplayDifficultyEnum.NORMAL, MyTextsWrapperEnum.DifficultyNormal);\n                m_difficulty.AddItem((int)MyGameplayDifficultyEnum.HARD, MyTextsWrapperEnum.DifficultyHard);\n                m_difficulty.SelectItemByKey((int)m_editProperties.Difficulty);\n\n                Controls.Add(m_difficulty);\n\n                labelPosition += MyGuiConstants.CONTROLS_DELTA;\n                controlPosition += MyGuiConstants.CONTROLS_DELTA;\n            }\n\n            // faction\n            if ((m_editPropertiesFlags & MyEditPropertyEnum.Faction) != 0)\n            {\n                AddLabel(labelPosition, MyTextsWrapperEnum.Faction, m_editPropertiesNotSame[(int)MyEditPropertyEnum.Faction]);\n                m_faction = new MyGuiControlCombobox(this, controlPosition, MyGuiControlPreDefinedSize.MEDIUM, MyGuiConstants.COMBOBOX_BACKGROUND_COLOR, MyGuiConstants.COMBOBOX_TEXT_SCALE);\n                foreach (MyMwcObjectBuilder_FactionEnum faction in Enum.GetValues(typeof(MyMwcObjectBuilder_FactionEnum)))\n                {\n                    MyGuiHelperBase factionHelper = MyGuiSmallShipHelpers.GetMyGuiSmallShipFactionNationality(faction);\n                    m_faction.AddItem((int)faction, factionHelper.Description);\n                }\n                m_faction.SelectItemByKey((int)m_editProperties.Faction);\n\n                Controls.Add(m_faction);\n\n                labelPosition += MyGuiConstants.CONTROLS_DELTA;\n                controlPosition += MyGuiConstants.CONTROLS_DELTA;\n            }            \n\n            // health\n            if ((m_editPropertiesFlags & MyEditPropertyEnum.HealthRatio) != 0)\n            {\n                AddLabel(labelPosition, MyTextsWrapperEnum.HealthPercentage, m_editPropertiesNotSame[(int)MyEditPropertyEnum.HealthRatio]);\n                m_healthPercentage = new MyGuiControlTextbox(this, controlPosition, MyGuiControlPreDefinedSize.MEDIUM,\n                                                   m_editProperties.HealthRatio != null ?\n                                                   GetFormatedFloat(\n                                                       m_editProperties.HealthRatio.Value * 100f) : string.Empty,\n                                                       TEXTBOX_NUMBERS_MAX_LENGTH,\n                                                   MyGuiConstants.TEXTBOX_BACKGROUND_COLOR,\n                                                   MyGuiConstants.LABEL_TEXT_SCALE,\n                                                   MyGuiControlTextboxType.DIGITS_ONLY);\n                Controls.Add(m_healthPercentage);\n\n                labelPosition += MyGuiConstants.CONTROLS_DELTA;\n                controlPosition += MyGuiConstants.CONTROLS_DELTA;\n\n                AddLabel(labelPosition, MyTextsWrapperEnum.Health, m_editPropertiesNotSame[(int)MyEditPropertyEnum.HealthRatio]);\n                m_health = new MyGuiControlTextbox(this, controlPosition, MyGuiControlPreDefinedSize.MEDIUM,\n                                                   m_editProperties.HealthRatio != null && m_editProperties.MaxHealth != null ?\n                                                   GetFormatedFloat(\n                                                       m_editProperties.HealthRatio.Value * m_editProperties.MaxHealth.Value) : string.Empty,\n                                                       TEXTBOX_NUMBERS_MAX_LENGTH,\n                                                   MyGuiConstants.TEXTBOX_BACKGROUND_COLOR,\n                                                   MyGuiConstants.LABEL_TEXT_SCALE,\n                                                   MyGuiControlTextboxType.DIGITS_ONLY);\n                Controls.Add(m_health);\n\n                labelPosition += MyGuiConstants.CONTROLS_DELTA;\n                controlPosition += MyGuiConstants.CONTROLS_DELTA;\n\n                m_healthPercentage.TextChanged -= HealthChanged;\n                m_healthPercentage.TextChanged += HealthChanged;\n                m_health.TextChanged -= HealthChanged;\n                m_health.TextChanged += HealthChanged;\n            }\n\n            // maxhealth\n            if ((m_editPropertiesFlags & MyEditPropertyEnum.MaxHealth) != 0)\n            {\n                AddLabel(labelPosition, MyTextsWrapperEnum.MaxHealth, m_editPropertiesNotSame[(int)MyEditPropertyEnum.MaxHealth]);\n                m_maxHealth = new MyGuiControlTextbox(this, controlPosition, MyGuiControlPreDefinedSize.MEDIUM,\n                                                      m_editProperties.MaxHealth != null ?\n                                                      GetFormatedFloat(\n                                                          m_editProperties.MaxHealth.Value) : string.Empty,\n                                                          TEXTBOX_NUMBERS_MAX_LENGTH,\n                                                      MyGuiConstants.TEXTBOX_BACKGROUND_COLOR,\n                                                      MyGuiConstants.LABEL_TEXT_SCALE,\n                                                      MyGuiControlTextboxType.DIGITS_ONLY);\n                Controls.Add(m_maxHealth);\n\n                labelPosition += MyGuiConstants.CONTROLS_DELTA;\n                controlPosition += MyGuiConstants.CONTROLS_DELTA;\n                m_maxHealth.TextChanged -= HealthChanged;\n                m_maxHealth.TextChanged += HealthChanged;\n            }\n\n            // prefab kinematic parts health and max health\n            if ((m_editPropertiesFlags & MyEditPropertyEnum.KinematicPartsHealthAndMaxHealth) != 0) \n            {\n                AddLabel(labelPosition, MyTextsWrapperEnum.EditPrefabKinematicPartsHealthAndMaxHealth, m_editPropertiesNotSame[(int)MyEditPropertyEnum.KinematicPartsHealthAndMaxHealth]);\n                m_kinematicPartsHealthAndMaxHealth = new MyGuiControlButton(this, controlPosition + new Vector2(0.1f, 0f), MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.Edit, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE,\n                    OnEditPrefabKinematicPartsHealthAndMaxHealthClick, MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true);\n                Controls.Add(m_kinematicPartsHealthAndMaxHealth);\n                labelPosition += MyGuiConstants.CONTROLS_DELTA;\n                controlPosition += MyGuiConstants.CONTROLS_DELTA;\n            }\n\n            // indestructible\n            if ((m_editPropertiesFlags & MyEditPropertyEnum.Indestructible) != 0)\n            {\n                AddLabel(labelPosition, MyTextsWrapperEnum.Indestructible, m_editPropertiesNotSame[(int)MyEditPropertyEnum.Indestructible]);\n                m_indestructible = new MyGuiControlCheckbox(this, controlPosition, m_editProperties.IsIndestructible, MyGuiConstants.CHECKBOX_BACKGROUND_COLOR);\n                m_indestructible.OnCheck -= OnIndestructibleChecked;\n                m_indestructible.OnCheck += OnIndestructibleChecked;\n\n                Controls.Add(m_indestructible);\n\n                labelPosition += MyGuiConstants.CONTROLS_DELTA;\n                controlPosition += MyGuiConstants.CONTROLS_DELTA;\n            }\n\n            // change faction appearance\n            if ((m_editPropertiesFlags & MyEditPropertyEnum.FactionAppearance) != 0)\n            {\n                AddLabel(labelPosition, MyTextsWrapperEnum.PrefabMaterials, false);\n\n                m_appearance = new MyGuiControlCombobox(this, controlPosition, MyGuiControlPreDefinedSize.MEDIUM, MyGuiConstants.COMBOBOX_BACKGROUND_COLOR, MyGuiConstants.COMBOBOX_TEXT_SCALE);\n                foreach (MyMwcObjectBuilder_Prefab_AppearanceEnum factionAppearance in MyGuiPrefabHelpers.MyMwcFactionTextureEnumValues)\n                {\n                    m_appearance.AddItem((int)factionAppearance, MyGuiPrefabHelpers.GetFactionName(factionAppearance));\n                }\n                Controls.Add(m_appearance);\n\n                Controls.Add(new MyGuiControlButton(\n                    this,\n                    controlPosition + new Vector2(.2f, 0),\n                    MyGuiConstants.BACK_BUTTON_SIZE,\n                    MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                    MyTextsWrapperEnum.Ok,\n                    MyGuiConstants.BUTTON_TEXT_COLOR,\n                    MyGuiConstants.BUTTON_TEXT_SCALE,\n                    OnChangeAppearanceClick,\n                    MyGuiControlButtonTextAlignment.CENTERED,\n                    true,\n                    MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER,\n                    true));\n\n                labelPosition += MyGuiConstants.CONTROLS_DELTA;\n                controlPosition += MyGuiConstants.CONTROLS_DELTA;\n            }\n\n            // Requires energy\n            if ((m_editPropertiesFlags & MyEditPropertyEnum.RequiresEnergy) != 0)\n            {                \n                AddLabel(labelPosition, MyTextsWrapperEnum.RequiresEnergy, m_editPropertiesNotSame[(int)MyEditPropertyEnum.RequiresEnergy]);\n                m_requiresEnergyCheckbox = new MyGuiControlCheckbox(this, controlPosition, m_editProperties.RequiresEnergy.Value, MyGuiConstants.CHECKBOX_BACKGROUND_COLOR);\n                //m_requiresEnergyCheckbox.OnCheck -= OnRequiresEnergyChecked;\n                //m_requiresEnergyCheckbox.OnCheck += OnRequiresEnergyChecked;\n\n                Controls.Add(m_requiresEnergyCheckbox);\n\n                labelPosition += MyGuiConstants.CONTROLS_DELTA;\n                controlPosition += MyGuiConstants.CONTROLS_DELTA;\n\n            }\n\n            // use properties\n            if ((m_editPropertiesFlags & MyEditPropertyEnum.UseProperties) != 0) \n            {\n                m_useProperties = new MyGuiControlUseProperties(this, controlPosition, m_editProperties.UseProperties, m_editPropertiesNotSame[(int)MyEditPropertyEnum.UseProperties] ? new Vector4(1f, 0f, 0f, 1f) : MyGuiConstants.LABEL_TEXT_COLOR);\n                Vector2 usePropertiesSize = m_useProperties.GetSize().Value;\n                m_useProperties.SetPosition(labelPosition + usePropertiesSize / 2f);\n                Controls.Add(m_useProperties);\n                labelPosition += new Vector2(0f, usePropertiesSize.Y) + MyGuiConstants.CONTROLS_DELTA;\n                controlPosition += new Vector2(0f, usePropertiesSize.Y) + MyGuiConstants.CONTROLS_DELTA;\n            }\n\n\n            // Activated\n            /*  //Temporary disabled because there is no way how to select invisible object\n            if ((m_editPropertiesFlags & MyEditPropertyEnum.Activated) != 0)\n            {\n                AddLabel(labelPosition, MyTextsWrapperEnum.Active, m_editPropertiesNotSame[(int)MyEditPropertyEnum.Activated]);\n                m_activated = new MyGuiControlCheckbox(this, controlPosition, m_editProperties.IsActivated, MyGuiConstants.CHECKBOX_BACKGROUND_COLOR);\n                m_activated.OnCheck -= OnActivatedChecked;\n                m_activated.OnCheck += OnActivatedChecked;\n\n                Controls.Add(m_activated);\n\n                labelPosition += MyGuiConstants.CONTROLS_DELTA;\n                controlPosition += MyGuiConstants.CONTROLS_DELTA;\n            } */\n\n            foreach (var notSameFlag in m_editPropertiesNotSame)\n            {\n                if (notSameFlag)\n                {\n                    Controls.Add(new MyGuiControlLabel(this, new Vector2(-m_size.Value.X / 2f + 0.05f, m_size.Value.Y / 2.0f - MyGuiConstants.MESSAGE_BOX_BORDER_AREA_Y - MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE.Y / 2.0f + 0.03f), null, MyTextsWrapperEnum.RedColoredPropertiesAreNotSame, new Vector4(1f, 0f, 0f, 1f), MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n                    break;\n                }\n            }\n\n            AddOkAndCancelButtonControls(new Vector2(0, 0.0f));\n        }\n\n\n\n        void OnEditPrefabKinematicPartsHealthAndMaxHealthClick(MyGuiControlButton sender) \n        {\n            MyGuiManager.AddScreen(new MyGuiScreenEditorPrefabKinematicParts(m_editProperties.KinematicPartsHealthAndMaxHealth));\n        }\n\n        void HealthChanged(object sender, EventArgs e)\n        {\n            Debug.Assert(m_health != null && m_healthPercentage != null && m_maxHealth != null);\n            m_healthPercentage.TextChanged -= HealthChanged;\n            m_health.TextChanged -= HealthChanged;\n            float? maxHealth = !String.IsNullOrEmpty(m_maxHealth.Text) ? GetFloatFromString(m_maxHealth.Text) : (float?)null;\n            if (maxHealth != null)\n            {\n                if (sender == m_health)\n                {\n                    float? health = !String.IsNullOrEmpty(m_health.Text) ? GetFloatFromString(m_health.Text) : (float?)null;\n                    if (health != null)\n                    {\n                        m_healthPercentage.Text = GetFormatedFloat(health.Value / maxHealth.Value * 100f);\n                    }\n                    else\n                    {\n                        m_healthPercentage.Text = string.Empty;\n                    }\n                }\n                else if (sender == m_healthPercentage || sender == m_maxHealth)\n                {\n                    float? healthPercentage = !String.IsNullOrEmpty(m_healthPercentage.Text) ? GetFloatFromString(m_healthPercentage.Text) : (float?)null;\n                    if (healthPercentage != null)\n                    {\n                        m_health.Text = GetFormatedFloat(healthPercentage.Value * maxHealth.Value / 100f);\n                    }\n                    else\n                    {\n                        m_health.Text = string.Empty;\n                    }\n                }                \n            }            \n            m_healthPercentage.TextChanged += HealthChanged;\n            m_health.TextChanged += HealthChanged;\n        }\n\n        private void AddLabel(Vector2 labelPosition, MyTextsWrapperEnum text, bool isNotSame) \n        {\n            Vector4 color = isNotSame ? new Vector4(1f, 0f, 0f, 1f) : MyGuiConstants.LABEL_TEXT_COLOR;\n            Controls.Add(new MyGuiControlLabel(this, labelPosition, null, text, color, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n        }\n\n        public void OnChangeAppearanceClick(MyGuiControlButton sender)\n        {\n            foreach (MyEntity entity in m_entities) \n            {\n                var prefabContainer = entity as MyPrefabContainer;\n                if (prefabContainer == null)\n                    return;\n\n                foreach (MyPrefabBase prefab in prefabContainer.Children)\n                {\n                    int material = m_appearance.GetSelectedKey();\n                    if (material != -1)\n                    {\n                        if (prefab.HasAvailableFactionMaterial((MyMwcObjectBuilder_Prefab_AppearanceEnum)material))\n                        {\n                            prefab.MaterialIndex = (ushort)material;\n                        }\n                    }\n                }\n            }            \n        }\n\n        //private void OnRequiresEnergyChecked(MyGuiControlCheckbox sender)\n        //{\n        //    SaveTempEditProperties();\n\n        //    InitControls();\n        //}\n\n        private void OnIndestructibleChecked(MyGuiControlCheckbox sender)\n        {\n            SaveTempEditProperties();\n\n            InitControls();\n        }\n\n        private void OnActivatedChecked(MyGuiControlCheckbox sender)\n        {\n            SaveTempEditProperties();\n\n            InitControls();\n        }\n\n        private void SaveTempEditProperties()\n        {\n            if (m_name != null)\n            {\n                m_editProperties.Name = m_name.Text;\n            }\n\n            if (m_displayName != null)\n            {\n                m_editProperties.DisplayName = m_displayName.Text;\n            }\n\n            if (m_faction != null)\n            {\n                m_editProperties.Faction = (MyMwcObjectBuilder_FactionEnum)m_faction.GetSelectedKey();\n            }\n\n            if (m_maxHealth != null)\n            {\n                if (string.IsNullOrEmpty(m_maxHealth.Text))\n                {\n                    m_editProperties.MaxHealth = null;\n                }\n                else\n                {\n                    m_editProperties.MaxHealth = GetFloatFromString(m_maxHealth.Text);\n                }\n            }\n\n            //if (m_health != null)\n            //{\n            //    if (string.IsNullOrEmpty(m_health.Text))\n            //    {\n            //        m_editProperties.HealthRatio = null;\n            //    }\n            //    else\n            //    {\n            //        m_editProperties.HealthRatio = float.Parse(m_health.Text);\n            //    }\n            //}\n\n            if (m_healthPercentage != null)\n            {\n                if (string.IsNullOrEmpty(m_healthPercentage.Text))\n                {\n                    m_editProperties.HealthRatio = null;\n                }\n                else\n                {\n                    float? healthPercentage = GetFloatFromString(m_healthPercentage.Text);\n                    m_editProperties.HealthRatio = healthPercentage != null ? (healthPercentage.Value / 100f) : (float?)null;\n                }\n            }\n\n            if (m_indestructible != null)\n            {\n                m_editProperties.IsIndestructible = m_indestructible.Checked;\n                //if (m_editProperties.HealthRatio == -1f)\n                //{\n                //    m_editProperties.HealthRatio = m_entities[0].GetDefaultMaxHealth();\n                //}\n                //if (m_editProperties.MaxHealth == -1f)\n                //{\n                //    m_editProperties.MaxHealth = m_entities[0].GetDefaultMaxHealth();\n                //}\n            }\n            if (m_requiresEnergyCheckbox != null)\n            {\n                m_editProperties.RequiresEnergy = m_requiresEnergyCheckbox.Checked;\n            }\n            if (m_activated != null)\n            {\n                m_editProperties.IsActivated = m_activated.Checked;\n            }\n            if (m_displayHud != null) \n            {\n                m_editProperties.DisplayHud = m_displayHud.Checked;\n            }\n            if (m_difficulty != null) \n            {\n                m_editProperties.Difficulty = (MyGameplayDifficultyEnum)m_difficulty.GetSelectedKey();\n            }\n        }\n\n        private bool Validate(ref List<StringBuilder> errorMessages) \n        {\n            // check healt and max health            \n            if (m_editProperties.HealthRatio == null)\n            {                \n                errorMessages.Add(MyTextsWrapper.Get(MyTextsWrapperEnum.MessageYouMustSetHealth));\n            }\n            if (m_editProperties.MaxHealth == null)\n            {\n                errorMessages.Add(MyTextsWrapper.Get(MyTextsWrapperEnum.MessageYouMustSetMaxHealth));\n            }\n            if (m_editProperties.HealthRatio != null && m_editProperties.HealthRatio <= 0f)\n            {\n                errorMessages.Add(MyTextsWrapper.Get(MyTextsWrapperEnum.MessageHealthCantBeLessOrEqualZero));\n            }\n            if (m_editProperties.MaxHealth != null && m_editProperties.MaxHealth <= 0f)\n            {\n                errorMessages.Add(MyTextsWrapper.Get(MyTextsWrapperEnum.MessageMaxHealthCantBeLessOrEqualZero));\n            }\n            if (m_editProperties.HealthRatio != null && m_editProperties.HealthRatio > 1f)\n            {\n                errorMessages.Add(MyTextsWrapper.Get(MyTextsWrapperEnum.MessageHealthPercentageCantBeGreaterThen100));\n            }\n            // check entity name\n            if (MyEntities.IsNameExists(m_entities[0], m_editProperties.Name))\n            {\n                errorMessages.Add(MyTextsWrapper.Get(MyTextsWrapperEnum.MessageEntityNameIsAlreadyExists));\n            }\n            if (m_useProperties != null) \n            {\n                m_useProperties.Validate(ref errorMessages);\n            }\n            return errorMessages.Count == 0;\n        }\n\n        protected override void OnOkClick(MyGuiControlButton sender)\n        {                        \n            SaveTempEditProperties();\n\n            m_errorMessages.Clear();\n            m_errorMessage.Clear();\n            if (!Validate(ref m_errorMessages)) \n            {\n                foreach(StringBuilder errorMessage in m_errorMessages)\n                {\n                    MyMwcUtils.AppendStringBuilder(m_errorMessage, errorMessage);\n                    m_errorMessage.AppendLine();\n                }\n                StringBuilder caption = MyTextsWrapper.Get(m_errorMessages.Count > 1 ? MyTextsWrapperEnum.CaptionPropertiesAreNotValid : MyTextsWrapperEnum.CaptionPropertyIsNotValid);\n                MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, m_errorMessage, caption, MyTextsWrapperEnum.Ok, null));\n                return;\n            }\n\n            Save();\n\n            base.OnOkClick(sender);\n        }\n\n        private void Save() \n        {\n            foreach (MyEntity entity in m_entities)\n            {\n                if (m_name != null)\n                {\n                    entity.SetName(m_editProperties.Name);\n                }\n\n                if (m_displayName != null)\n                {\n                    entity.DisplayName = m_editProperties.DisplayName;\n                }\n\n                if (m_faction != null)\n                {\n                    entity.Faction = m_editProperties.Faction;\n                }\n\n                if (m_requiresEnergyCheckbox != null)\n                {\n                    ((MyPrefabBase)entity).RequiresEnergy = m_requiresEnergyCheckbox.Checked;\n                }\n                if (m_maxHealth != null)\n                {\n                    entity.MaxHealth = m_editProperties.MaxHealth.Value;\n                }\n\n                if (m_healthPercentage != null)\n                {\n                    entity.HealthRatio = m_editProperties.HealthRatio.Value;\n                }\n\n                if (m_indestructible != null)\n                {\n                    entity.IsDestructible = !m_indestructible.Checked;\n                }\n\n                if (m_useProperties != null)\n                {\n                    m_useProperties.SaveTo(((IMyUseableEntity)entity).UseProperties);\n                }\n\n                if (m_activated != null)\n                {\n                    entity.Activate(m_editProperties.IsActivated, false);\n                }\n\n                if (m_displayHud != null)\n                {\n                    entity.DisplayOnHud = m_editProperties.DisplayHud;\n                }\n\n                if (m_difficulty != null)\n                {\n                    entity.MaxDifficultyToActivated = m_editProperties.Difficulty;\n                }\n\n                if (m_editProperties.KinematicPartsHealthAndMaxHealth != null && entity is MyPrefabKinematic)\n                {\n                    MyPrefabKinematic prefabKinematic = entity as MyPrefabKinematic;\n                    for (int i = 0; i < m_editProperties.KinematicPartsHealthAndMaxHealth.Length; i++)\n                    {\n                        MyHealthAndMaxHealth healthAndMaxHealth = m_editProperties.KinematicPartsHealthAndMaxHealth[i];\n                        MyPrefabKinematicPart prefabKinematicPart = prefabKinematic.Parts[i];\n                        if (healthAndMaxHealth != null && prefabKinematicPart != null)\n                        {\n                            prefabKinematicPart.MaxHealth = healthAndMaxHealth.MaxHealth;\n                            prefabKinematicPart.Health = healthAndMaxHealth.Health;\n                        }\n                    }\n                }\n            }\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"Edit properties\";\n        }\n\n        private static string GetFormatedFloat(float number) \n        {\n            return MyValueFormatter.GetFormatedFloat(number, 2, string.Empty);\n        }\n\n        private static float? GetFloatFromString(string number) \n        {\n            return MyValueFormatter.GetFloatFromString(number, 2, string.Empty);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/ScreenEditor/MyGuiScreenEditorGroups.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Prefabs;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.AppCode.Game.Editor;\nusing MinerWars.AppCode.Game.Entities.SubObjects;\nusing System.Text.RegularExpressions;\nusing System.Diagnostics;\nusing MinerWars.AppCode.Game.GUI.Helpers;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Entities.Prefabs;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.AppCode.Game.GUI.Core.TreeView;\n\nnamespace MinerWars.AppCode.Game.GUI.ScreenEditor\n{\n    /// <summary>\n    /// Edit screen for named prefab groups \n    /// Notes:\n    /// - move MyObjectGroup to separate file\n    /// </summary>\n    class MyGuiScreenEditorGroups : MyGuiScreenEditorDialogBase\n    {\n        private static readonly Vector2 BUTTON_SIZE = MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE + new Vector2(0.04f,0);\n        private static readonly Vector2 BUTTON_OFFSET = new Vector2(0, BUTTON_SIZE.Y);\n        private static readonly Vector2 EXTRA_BUTTON_OFFSET = new Vector2(0, 0.025f);\n\n        // Control for list of current available groups\n        MyGuiControlTreeView m_groupList;\n        \n        // Buttons\n        MyGuiControlButton m_addObjectsButton;\n        MyGuiControlButton m_removeObjectsButton;\n\n        MyGuiControlButton m_selectGroupButton;\n        MyGuiControlButton m_unselectGroupButton;\n\n        MyGuiControlButton m_createGroupButton;\n        MyGuiControlButton m_renameGroupButton;\n        MyGuiControlButton m_deleteGroupButton;\n\n        MyGuiControlButton m_loadGroupButton;\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenEditorGroups\";\n        }\n\n        public MyGuiScreenEditorGroups()\n            : base(new Vector2(0.5f, 0.5f), new Vector2(0.6f, 0.9f))\n        {\n            AddCaption(MyTextsWrapperEnum.EditorGroups, MyGuiConstants.LABEL_TEXT_COLOR, new Vector2(0,0.007f));\n\n            Vector2 groupListTopLeft = new Vector2(MyGuiConstants.MESSAGE_BOX_BORDER_AREA_X*0.7f, CAPTION_OFFSET_Y) - m_size.Value / 2;\n            Vector2 groupListSize = m_size.Value - new Vector2(\n                MyGuiConstants.MESSAGE_BOX_BORDER_AREA_X * 3 + BUTTON_SIZE.X*0.5f,\n                CAPTION_OFFSET_Y + MyGuiConstants.MESSAGE_BOX_BORDER_AREA_Y * 2 + MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE.Y);\n\n            m_groupList = new MyGuiControlTreeView(this, groupListTopLeft + groupListSize / 2, groupListSize, MyGuiConstants.TREEVIEW_BACKGROUND_COLOR, true);\n            m_groupList.WholeRowHighlight = true;\n\n            Controls.Add(m_groupList);\n\n            int index = 0;\n            m_addObjectsButton = AddButton(index++, 0, MyTextsWrapperEnum.EditorGroupsAddObjects, OnAddObjects);\n            m_removeObjectsButton = AddButton(index++, 0, MyTextsWrapperEnum.EditorGroupsRemoveObjects, OnRemoveObjects);\n\n            m_selectGroupButton = AddButton(index++, 1, MyTextsWrapperEnum.EditorGroupsSelectGroup, OnSelectGroup);\n            m_unselectGroupButton = AddButton(index++, 1, MyTextsWrapperEnum.EditorGroupsUnselectGroup, OnUnselectGroup);\n\n            m_createGroupButton = AddButton(index++, 2, MyTextsWrapperEnum.EditorGroupsCreateGroup, OnCreateGroup);\n            m_renameGroupButton = AddButton(index++, 2, MyTextsWrapperEnum.EditorGroupsRenameGroup, OnRenameGroup);\n            m_deleteGroupButton = AddButton(index++, 2, MyTextsWrapperEnum.EditorGroupsDeleteGroup, OnDeleteGroup);\n\n            m_loadGroupButton = AddButton(index, 3, MyTextsWrapperEnum.EditorGroupsLoadGroup, OnLoadGroup, true);\n            \n            AddBackButtonControl(new Vector2(0,-0.03f));\n\n            foreach (var group in MyEditor.Static.ObjectGroups)\n            {\n                AddGroup(group);\n            }\n        }\n\n        private MyGuiControlButton AddButton(int index, int extraOffset, MyTextsWrapperEnum text, MyGuiControlButton.OnButtonClick onButtonClick, bool implemented = true)\n        {\n            Vector2 origin = new Vector2(m_size.Value.X / 2 - MyGuiConstants.MESSAGE_BOX_BORDER_AREA_X - BUTTON_SIZE.X*0.8f, CAPTION_OFFSET_Y - m_size.Value.Y / 2);\n            Vector2 buttonPosition = origin + BUTTON_SIZE / 2 + BUTTON_OFFSET * index + EXTRA_BUTTON_OFFSET * extraOffset;\n\n            var button = new MyGuiControlButton(this, buttonPosition, BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                text, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, onButtonClick, MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, implemented);\n\n            Controls.Add(button);\n\n            return button;\n        }\n\n        private MyObjectGroup GetFocusedGroup()\n        {\n            var focusedItem = m_groupList.GetFocusedItem();\n            return focusedItem != null ? focusedItem.Tag as MyObjectGroup : null;\n        }\n\n        /// <summary>\n        /// Generates new unique group name i.e. \"Group 03\"\n        /// </summary>\n        private string GenerateName(string baseName)\n        {\n            int topNameIndex = -1;\n            for (int i = 0; i < m_groupList.GetItemCount(); i++)\n            {\n                var item = m_groupList.GetItem(i);\n\n                string itemName = item.Text.ToString();\n                if (itemName.StartsWith(baseName))\n                {\n                    int nameIndex;\n                    if (int.TryParse(itemName.Substring(baseName.Length), out nameIndex))\n                    {\n                        topNameIndex = Math.Max(topNameIndex, nameIndex);\n                    }\n                }\n            }\n\n            ++topNameIndex;\n\n            return string.Format(\"{0} {1:00}\", baseName, topNameIndex);\n        }\n\n        private MyTreeViewItem AddGroup(MyObjectGroup group)\n        {\n            var item = m_groupList.AddItem(group.Name, null, Vector2.Zero, null, null, Vector2.Zero);\n            item.Tag = group;\n            return item;\n        }\n\n        /// <summary>\n        /// Try change group name, returns false on error\n        /// </summary>\n        public bool ChangeGroupName(MyObjectGroup group, string newName)\n        {\n            MyTreeViewItem groupItem = null;\n            for (int i = 0; i < m_groupList.GetItemCount(); i++)\n            {\n                var item = m_groupList.GetItem(i);\n                \n                // Find group list item\n                if (item.Tag == group)\n                {\n                    groupItem = item;\n                }\n                else\n                {\n                    if (item.Text.ToString() == newName)\n                    {\n                        return false;\n                    }\n                }\n            }\n\n            if (groupItem != null)\n            {\n                group.Name = new StringBuilder(newName);\n                groupItem.Text = group.Name;\n                return true;\n            }\n\n            return false;\n        }\n\n        public override bool Update(bool hasFocus)\n        {\n            bool result = base.Update(hasFocus);\n            if (result)\n            {\n                bool groupSelected = m_groupList.GetFocusedItem() != null;\n\n                m_addObjectsButton.Enabled = groupSelected;\n                m_removeObjectsButton.Enabled = groupSelected;\n                m_selectGroupButton.Enabled = groupSelected;\n                m_unselectGroupButton.Enabled = groupSelected;\n                m_renameGroupButton.Enabled = groupSelected;\n                m_deleteGroupButton.Enabled = groupSelected;\n            }\n            return result;\n        }\n\n        #region Button Handlers\n        private void OnAddObjects(MyGuiControlButton sender)\n        {\n            var group = GetFocusedGroup();\n            if(group != null)\n            {\n                if (!group.AddObjects(MyEditorGizmo.SelectedEntities))\n                {\n                    MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, new StringBuilder(\"Can't add objects. Objects must be in same container.\"), new StringBuilder(\"Add Objects Error\"), MyTextsWrapperEnum.Ok, null));\n                }\n            }\n        }\n\n        private void OnRemoveObjects(MyGuiControlButton sender)\n        {\n            var group = GetFocusedGroup();\n            if (group != null)\n            {\n                group.RemoveObjects(MyEditorGizmo.SelectedEntities);\n            }\n        }\n\n        private void OnSelectGroup(MyGuiControlButton sender)\n        {\n            var group = GetFocusedGroup();\n            if (group != null && group.GetCount() > 0)\n            {\n                var container = group.GetContainer();\n                if (MyEditor.Static.IsEditingPrefabContainer() && MyEditor.Static.GetEditedPrefabContainer() == container)\n                {\n                    MyEditorGizmo.AddEntitiesToSelection(group.GetEntities());\n                }\n                else\n                {\n                    var editorState = MyEditor.GetCurrentState();\n                    var contextHelper = MyGuiContextMenuHelpers.GetEditorContextMenuHelper(editorState);\n\n                    // If exit/enter to prefab container available\n                    if (container != null &&\n                        (editorState == MyEditorStateEnum.NOTHING_SELECTED ||\n                        contextHelper.IsActionTypeAvailable(MyGuiContextMenuItemActionType.ENTER_PREFAB_CONTAINER) ||\n                        contextHelper.IsActionTypeAvailable(MyGuiContextMenuItemActionType.EXIT_EDITING_MODE)))\n                    {\n                        // Switch to group container\n                        if (MyEditor.Static.IsEditingPrefabContainer())\n                        {\n                            MyEditor.Static.ExitActivePrefabContainer();\n                        }\n                        MyEditor.Static.EditPrefabContainer(container);\n\n                        if (MyEditor.Static.IsEditingPrefabContainer() && MyEditor.Static.GetEditedPrefabContainer() == container)\n                        {\n                            MyEditorGizmo.AddEntitiesToSelection(group.GetEntities());\n                        }\n                    }\n                    else if (container == null)\n                    {\n                        if (MyEditor.Static.IsEditingPrefabContainer())\n                        {\n                            MyEditor.Static.ExitActivePrefabContainer();\n                        }\n                        MyEditorGizmo.ClearSelection();\n                        MyEditorGizmo.AddEntitiesToSelection(group.GetEntities());\n                    }\n                    else\n                    {\n                        MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, new StringBuilder(\"Can't select group.\"), new StringBuilder(\"Select Group Error\"), MyTextsWrapperEnum.Ok, null));\n                    }\n                }\n            }\n        }\n\n        private void OnUnselectGroup(MyGuiControlButton sender)\n        {\n            var group = GetFocusedGroup();\n            if (group != null && group.GetCount() > 0)\n            {\n                var container = group.GetContainer();\n                if (MyEditor.Static.IsEditingPrefabContainer() && MyEditor.Static.GetEditedPrefabContainer() == container)\n                {\n                    MyEditorGizmo.RemoveEntitiesFromSelection(group.GetEntities());\n                }\n            }\n        }\n\n        private void OnCreateGroup(MyGuiControlButton sender)\n        {\n            var generatedName = new StringBuilder(GenerateName(\"Group\"));\n            var group = new MyObjectGroup(generatedName);\n            if (group.AddObjects(MyEditorGizmo.SelectedEntities))\n            {\n                AddGroup(group);\n                MyEditor.Static.ObjectGroups.Add(group);\n            }\n            else\n            {\n                MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.EditorGroupsCantCreateGroupText, MyTextsWrapperEnum.EditorGroupsCantCreateGroupCaption, MyTextsWrapperEnum.Ok, null));\n            }\n        }\n\n        private void OnRenameGroup(MyGuiControlButton sender)\n        {\n            var group = GetFocusedGroup();\n            if (group != null)\n            {\n                MyGuiManager.AddScreen(new MyGuiScreenEditorRenameGroup(this, group));\n            }\n        }\n\n        private void OnDeleteGroup(MyGuiControlButton sender)\n        {\n            var item = m_groupList.GetFocusedItem();\n            var group = GetFocusedGroup();\n            if (group != null)\n            {\n                m_groupList.DeleteItem(item);\n                MyEditor.Static.ObjectGroups.Remove(group);\n            }\n        }\n\n        private void OnLoadGroup(MyGuiControlButton sender)\n        {\n            CloseScreen();\n            MyGuiManager.AddScreen(new MyGuiScreenEditorSelectSector());\n        }\n        #endregion\n    }\n\n    class MyObjectGroup\n    {\n        /// <summary>\n        /// Group name\n        /// </summary>\n        public StringBuilder Name;\n\n        /// <summary>\n        /// List of objects in this group\n        /// </summary>\n        private List<MyEntity> m_objectList = new List<MyEntity>();\n\n        /// <summary>\n        /// Object builder from which this group should be created\n        /// </summary>\n        private MyMwcObjectBuilder_ObjectGroup m_objectBuilder;\n\n        /// <summary>\n        /// Constructor\n        /// </summary>\n        public MyObjectGroup(StringBuilder name)\n        {\n            Name = name;\n            m_objectList = new List<MyEntity>();\n        }\n\n        /// <summary>\n        /// Constructor\n        /// </summary>\n        public MyObjectGroup(MyMwcObjectBuilder_ObjectGroup objectBuilder)\n        {\n            Name = new StringBuilder(objectBuilder.Name);\n            m_objectList = new List<MyEntity>();\n            m_objectBuilder = objectBuilder;\n        }\n\n        /// <summary>\n        /// Get count of objects in this group\n        /// </summary>\n        public int GetCount()\n        {\n            return m_objectList.Count;\n        }\n\n        /// <summary>\n        /// Return container of this group, null if unassigned\n        /// </summary>\n        public MyPrefabContainer GetContainer()\n        {\n            if (m_objectList.Count > 0)\n            {\n                //Debug.Assert(m_objectList[0].Parent is MyPrefabContainer);\n                return m_objectList[0].Parent as MyPrefabContainer;\n            }\n            return null;\n        }\n\n        /// <summary>\n        /// Add objects to group\n        /// </summary>\n        public bool AddObjects(List<MyEntity> entities)\n        {\n            //var container = GetContainer();\n\n            // Only Prefabs\n            // Only Same Container\n            // We dont care anymore\n            //if (!entities.TrueForAll(entity => entity is MyPrefabBase &&\n            //        (container == null || entity.Parent == container)))\n            //{\n            //    return false;\n            //}\n\n            foreach (var entity in entities)\n            {\n                if (!m_objectList.Contains(entity))\n                {\n                    m_objectList.Add(entity);\n                }\n            }\n\n            return true;\n        }\n\n        /// <summary>\n        /// Remove objects from group\n        /// </summary>\n        public void RemoveObjects(List<MyEntity> entities)\n        {\n            foreach (var entity in entities)\n            {\n                RemoveObject(entity);\n            }\n        }\n\n        /// <summary>\n        /// Remove object from group\n        /// </summary>\n        public void RemoveObject(MyEntity entity)\n        {\n            m_objectList.Remove(entity);\n        }\n\n        /// <summary>\n        /// Return entity list (for selection in editor)\n        /// </summary>\n        public List<MyEntity> GetEntities()\n        {\n            return m_objectList;\n        }\n\n        internal MyMwcObjectBuilder_ObjectGroup GetObjectBuilder()\n        {\n            var result = new MyMwcObjectBuilder_ObjectGroup(new List<uint>(), Name.ToString());            \n            foreach (var entity in m_objectList)\n            {\n                Debug.Assert(entity.EntityId.HasValue);\n                var x = MyEntities.GetEntityById(new MyEntityIdentifier(entity.EntityId.Value.NumericValue));\n                var y = entity == x;\n                if (entity.EntityId.HasValue)\n                {\n                    result.ObjectList.Add(entity.EntityId.Value.NumericValue);\n                }\n            }\n\n            return result;\n        }\n\n        internal void LinkEntities()\n        {\n            Debug.Assert(m_objectList != null);\n            Debug.Assert(m_objectList.Count == 0);\n            Debug.Assert(m_objectBuilder != null);\n\n            foreach (var entityId in m_objectBuilder.ObjectList)\n            {\n                MyEntity entity;\n                if (MyEntities.TryGetEntityById(new MyEntityIdentifier(entityId), out entity))\n                {\n                    m_objectList.Add(entity);\n                }\n            }\n            m_objectBuilder = null;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/ScreenEditor/MyGuiScreenEditorHelp.cs",
    "content": "﻿using System.Collections.Generic;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Toolkit.Input;\n\nnamespace MinerWars.AppCode.Game.GUI\n{\n    class MyGuiScreenEditorHelp : MyGuiScreenBase\n    {\n        public MyGuiScreenEditorHelp()\n            : base(new Vector2(0.5f, 0.5f), MyGuiConstants.SCREEN_BACKGROUND_COLOR, new Vector2(0.75f, 0.9f))\n        {\n            m_enableBackgroundFade = true;\n\n            m_size = new Vector2(0.85f, 1f);\n\n            AddCaption(MyTextsWrapperEnum.EditorHelpCaption, new Vector2(0, 0.013f));\n\n            List<string> texts = new List<string>();\n            texts.Add(\"Prefab - Add multiple prefabs to create complex structures. Prefabs must be in a prefab container.\");\n            texts.Add(\"Prefab Container (green box). Contains prefabs. You can edit only prefabs in selected container.\");\n            texts.Add(\"In editor options, you may enable/disable locked prefabs rotation by 90 degrees or by 1 degree.\");\n            texts.Add(\"\");\n\n            texts.Add(\"W,S,A,D,E,C,F or RMB - camera movement\");\n            texts.Add(\"V - Toggle Voxel Hand (add/delete/shape asteroids)\");\n\n            texts.Add(\"Insert - add new object\");\n            texts.Add(\"Hold Ctrl - slow down camera movement\");\n            texts.Add(\"MouseWheel - changes camera movement speed\");\n            texts.Add(\"+/- - increase/decrease grid step size\");\n\n            texts.Add(\"Shift + RMB - creates object copy and immediately attaches copy to camera\");\n            texts.Add(\"Ctrl + RMB - attach selection to camera\");\n            texts.Add(\"Alt + RMB - move camera to selection\");\n            texts.Add(\"Ctrl + A/D - select/unselect all objects\");\n\n            texts.Add(\"O - Repair Object\");\n            texts.Add(\"Ctrl + M - cut voxels to make space for selected prefabs\");\n            texts.Add(\"Delete - removes all selected entities\");\n            texts.Add(\"Ctrl + 1-9 - store selection/camera position ; 1-9 - restore selection/camera position\");\n            texts.Add(\"LMB on prefab - enter into prefab container edit mode immediately and select prefab\");\n            texts.Add(\"LMB on green box - select whole container\");\n\n            texts.Add(\"=== while in \\\"voxel hand\\\" mode ===\");\n            texts.Add(\"Shift + MouseWheel - change voxel hand size\");\n            texts.Add(\"Ctrl + MouseWheel - change voxel hand distance\");\n\n            texts.Add(\"=== while in prefab container edit mode ===\");\n            texts.Add(\"P - show/hide snap points\");\n            texts.Add(\"Ctrl + RMB - exit prefab container edit mode\");\n            texts.Add(\"Enter - commits current container changes (optimizes it) (happens automatically every 50 seconds)\");\n            texts.Add(\"LMB on center box - exit edit mode and select whole container\");\n\n            texts.Add(\"=== while object is attached to camera ===\");\n            texts.Add(\"LMB - detach from camera and place object at its current position\");\n            texts.Add(\"Ctrl + MouseWheel - change distance of attached objects or Voxel Hand from camera\");\n\n            texts.Add(\"=== gizmo editor ===\");\n            texts.Add(\"Shift + L - toggle transformation lock\");\n            texts.Add(\"G - toggle grid snapping\");\n            texts.Add(\"Ctrl + T - toggle rotation snapping\");\n            texts.Add(\"Shift + Hold LMB - creates copy of object, drag to move new copy in selected gizmo's axis direction\");\n            texts.Add(\"Hold LMB on gizmo axis or Numpad1-9 - move/rotate\");\n            texts.Add(\"T - switch gizmo mode (Translation, Rotation)\");\n            texts.Add(\"Space - switch gizmo space (World, Local)\");\n\n            texts.Add(\"=== editor options ===\");\n            texts.Add(\"MiddleMouseButton - switches camera mode (RMB controlled rotation / FPS crosshair mode)\");\n            texts.Add(\"Ctrl + Y - enable/disable light in editor\");\n            texts.Add(\"Shift + R - switch free and locked prefab rotations\");\n            texts.Add(\"Shift + C - enable/disable prefab container maximum area displaying\");\n            texts.Add(\"Ctrl + Space - attach the player ship to the spectrator position\");\n            texts.Add(\"Shift + Space - move spectrator camera to the near position of the player ship\");\n\n            \n\n            //texts.Add(\"Home - undo action\");\n            //texts.Add(\"End - redo action\");\n            //texts.Add(\"F10 - switch camera - only for programmers\");\n            //texts.Add(\"F11 - save all voxel maps into user folder - only for programmers\");\n            //texts.Add(\"F12 - debug screen - only for programmers\");\n            //texts.Add(\"Shift-F12 - bot debug screen - only for programmers\");\n\n            Vector2 position = -m_size.Value / 2.0f + new Vector2(0.055f, 0.095f);\n\n            foreach (string s in texts)\n            {\n                Controls.Add(new MyGuiControlLabel(this, position, null, new StringBuilder(s),\n                    MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE * 0.7f, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n                position.Y += 0.01725f;\n            }\n\n            Controls.Add(new MyGuiControlButton(this, -m_size.Value / 2.0f + m_size.Value - MyGuiConstants.BACK_BUTTON_SIZE / 2.0f - new Vector2(0.055f, 0.085f), MyGuiConstants.BACK_BUTTON_SIZE,\n                MyGuiConstants.BACK_BUTTON_BACKGROUND_COLOR, MyTextsWrapperEnum.Back, MyGuiConstants.BACK_BUTTON_TEXT_COLOR,\n                MyGuiConstants.BACK_BUTTON_TEXT_SCALE, OnBackClick, MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenEditorHelp\";\n        }\n\n        //  Just close the screen\n        public void OnBackClick(MyGuiControlButton sender)\n        {\n            CloseScreen();\n        }\n\n        public override void HandleInput(MyGuiInput input, bool receivedFocusInThisUpdate)\n        {\n            base.HandleInput(input, receivedFocusInThisUpdate);\n\n            if (input.IsNewKeyPress(Keys.F1))\n            {\n                OnBackClick(null);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/ScreenEditor/MyGuiScreenEditorLoadGroup.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Inventory;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing System.Diagnostics;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.AppCode.Game.Editor;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.AppCode.Game.World;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Voxels;\n\nnamespace MinerWars.AppCode.Game.GUI.ScreenEditor\n{\n    class MyGuiScreenEditorLoadGroup : MyGuiScreenEditorDialogBase\n    {\n        MyGuiControlTreeView m_groupList;\n\n        List<MyMwcObjectBuilder_ObjectGroup> m_groups;\n        List<MyMwcObjectBuilder_Base> m_entities;\n\n        public MyGuiScreenEditorLoadGroup(List<MyMwcObjectBuilder_ObjectGroup> groups, List<MyMwcObjectBuilder_Base> entities)\n            : base(new Vector2(0.5f, 0.5f), new Vector2(0.33f, 0.85f))\n        {\n            m_groups = groups;\n            m_entities = entities;\n            m_size = new Vector2(0.48f, 0.85f);\n\n            AddCaption(new StringBuilder(\"Load Group\"), MyGuiConstants.LABEL_TEXT_COLOR, new Vector2(0, 0.005f));\n\n            Vector2 groupListTopLeft = new Vector2(MyGuiConstants.MESSAGE_BOX_BORDER_AREA_X - 0.025f, 0.1f) - m_size.Value / 2;\n            Vector2 groupListSize = m_size.Value - new Vector2(\n                MyGuiConstants.MESSAGE_BOX_BORDER_AREA_X * 2 - 0.05f,\n                0.1f + MyGuiConstants.MESSAGE_BOX_BORDER_AREA_Y * 2 + MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE.Y);\n\n            m_groupList = new MyGuiControlTreeView(this, groupListTopLeft + groupListSize / 2, groupListSize, MyGuiConstants.TREEVIEW_BACKGROUND_COLOR, true);\n            m_groupList.WholeRowHighlight = true;\n\n            Controls.Add(m_groupList);\n\n            AddOkAndCancelButtonControls(new Vector2(0, -0.01f));\n\n            foreach (var group in groups)\n            {\n                var listItem = m_groupList.AddItem(new StringBuilder(group.Name), null, Vector2.Zero, null, null, Vector2.Zero);\n                listItem.Tag = group;\n            }\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenEditorLoadGroup\";\n        }\n\n        public MyGuiScreenEditorLoadGroup()\n            : base(new Vector2(0.5f, 0.5f), new Vector2(0.33f, 0.85f))\n        {\n        }\n\n        protected override void OnOkClick(MyGuiControlButton sender)\n        {\n            CloseScreen();\n            var focused = m_groupList.GetFocusedItem();\n\n            if (focused != null)\n            {\n                var group = focused.Tag as MyMwcObjectBuilder_ObjectGroup;\n\n                IEnumerable<MyMwcObjectBuilder_PrefabBase> prefabs = group.GetPrefabBuilders(m_entities);\n                IEnumerable<MyMwcObjectBuilder_Base> rootObjects = group.GetRootBuilders(m_entities);\n                var objects3d = rootObjects.OfType<MyMwcObjectBuilder_Object3dBase>();\n\n                if (objects3d.Any())\n                {\n                    MyEditorGizmo.ClearSelection();\n\n                    var basePos = MyCamera.Position + Matrix.Invert(MyCamera.ViewMatrix).Forward * 100;\n                    var firstPos = objects3d.First().PositionAndOrientation.Position;\n                    var offset = basePos - firstPos;\n\n                    foreach (var b in objects3d)\n                    {\n                        b.PositionAndOrientation.Position += offset;\n                        b.ClearEntityId();\n                        MyEntity entity = MyEntities.CreateFromObjectBuilderAndAdd(null, b, b.PositionAndOrientation.GetMatrix());\n                        MyEditorGizmo.AddEntityToSelection(entity);\n                    }\n                }\n\n                // Prefabs\n                var editedContainer = MyEditor.Static.GetEditedPrefabContainer();\n                if (editedContainer == null)\n                {\n                    MyMwcObjectBuilder_PrefabContainer prefabContainerBuilder = new MyMwcObjectBuilder_PrefabContainer(\n                        null, MyMwcObjectBuilder_PrefabContainer_TypesEnum.INSTANCE, new List<MyMwcObjectBuilder_PrefabBase>(), MyClientServer.LoggedPlayer.GetUserId(),\n                        MyMwcObjectBuilder_FactionEnum.Euroamerican, new MyMwcObjectBuilder_Inventory(new List<MyMwcObjectBuilder_InventoryItem>(), MyInventory.DEFAULT_MAX_ITEMS));\n\n                    editedContainer = MyEntities.CreateFromObjectBuilderAndAdd(\n                        null, prefabContainerBuilder,\n                        Matrix.CreateTranslation(MyCamera.Position + Matrix.Invert(MyCamera.ViewMatrix).Forward * 100)) as MyPrefabContainer;\n\n                    MyEditor.Static.EditPrefabContainer(editedContainer);\n                }\n\n                if (editedContainer != null)\n                {\n                    MyEditorGizmo.ClearSelection();\n                    List<MyEntity> addedEntities = new List<MyEntity>();\n\n                    foreach (var prefabBuilder in prefabs)\n                    {\n                        prefabBuilder.EntityId = null;\n                        var entity = editedContainer.CreateAndAddPrefab(null, prefabBuilder);\n                        addedEntities.Add(entity);\n                    }\n\n                    // Select newly added objects\n                    foreach (var entity in addedEntities)\n                    {\n                        MyEditorGizmo.AddEntityToSelection(entity);\n                    }\n                }\n            }\n        }\n\n        protected override void OnCancelClick(MyGuiControlButton sender)\n        {\n            base.OnCancelClick(sender);\n            MyGuiManager.AddScreen(new MyGuiScreenEditorGroups());\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/ScreenEditor/MyGuiScreenEditorLoadSectorObjectsProgress.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Networking.SectorService;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing System.ServiceModel;\nusing MinerWars.CommonLIB.AppCode.Networking.Services;\n\nnamespace MinerWars.AppCode.Game.GUI.ScreenEditor\n{\n    class MyGuiScreenEditorLoadSectorObjectsProgress : MyGuiScreenSectorServiceCallProgress\n    {\n        string m_playerName;\n        MyMwcSectorIdentifier m_sectorIdentifier;\n\n        //  Using this static public property client-server tells us about login response\n        public static MyGuiScreenBase CurrentScreen = null;    //  This is always filled with reference to actual instance of this scree. If there isn't, it's null.\n        public MyGuiScreenBase m_parentScreen;\n\n        public MyGuiScreenEditorLoadSectorObjectsProgress(MyGuiScreenBase parentScreen, MyTextsWrapperEnum loadingText, string playerName, MyMwcSectorIdentifier sectorIdentifier)\n            : base(loadingText, false)\n        {\n            CurrentScreen = this;\n            m_parentScreen = parentScreen;\n            m_playerName = playerName;\n            m_sectorIdentifier = sectorIdentifier;\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenEditorLoadSectorObjectsProgress\";\n        }\n\n        protected override void ServiceProgressStart(MySectorServiceClient client)\n        {\n            //  Send save request and wait for callback\n            AddAction(client.BeginLoadSectorObjects(m_playerName, m_sectorIdentifier.SectorName, m_sectorIdentifier.Position, null, client));\n        }\n\n        protected override void OnActionCompleted(IAsyncResult asyncResult, MySectorServiceClient client)\n        {\n            try\n            {\n                byte[] result = client.EndLoadSectorObjects(asyncResult);\n                var sectorBuilder = MyMwcObjectBuilder_Base.FromBytes<MyMwcObjectBuilder_Sector>(result);\n\n                m_parentScreen.CloseScreen();\n                MyGuiManager.AddScreen(new MyGuiScreenEditorCopyTool(sectorBuilder));\n            }\n            catch (FaultException<MyCustomFault> faultException)\n            {\n                if (faultException.Detail.ErrorCode == MyCustomFaultCode.UserNotFound)\n                {\n                    MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.PlayerNotFound, MyTextsWrapperEnum.MessageBoxCaptionError, MyTextsWrapperEnum.Ok, null));\n                }\n                else if (faultException.Detail.ErrorCode == MyCustomFaultCode.SectorNotFound)\n                {\n                    MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.SectorNotFound, MyTextsWrapperEnum.MessageBoxCaptionError, MyTextsWrapperEnum.Ok, null));\n                }\n                else\n                {\n                    throw faultException;\n                }\n            }\n\n            CloseScreen();\n        }\n\n        public override bool CloseScreen()\n        {\n            bool ret = base.CloseScreen();\n\n            if (ret == true)\n            {\n                CurrentScreen = null;\n            }\n\n            return ret;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/ScreenEditor/MyGuiScreenEditorOptions.cs",
    "content": "﻿\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Editor;\nusing MinerWarsMath;\nusing System.Text;\nusing MinerWars.AppCode.Game.Entities.WayPoints;\n\nnamespace MinerWars.AppCode.Game.GUI.ScreenEditor\n{\n    class MyGuiScreenEditorOptions : MyGuiScreenBase\n    {\n        class MyGuiScreenOptionsEditorSettings\n        {\n            public bool DisplayUnselectedBounding;\n            public bool DisplayPrefabContainerBounding;\n            public bool DisplayPrefabContainerAxis;\n            public bool UseCameraCrosshair;\n            public bool LockedPrefab90DegreesRotation;\n            public bool EnableLightsInEditor;\n            public bool EnableSnapPointFilter;\n            public bool FixedSizeSnapPoints;\n            public bool SavePlayerShip;\n            public bool EnableObjectPivot;\n            public bool DisplayVoxelBounding;\n            public bool EnableTextsDrawing;\n        }\n\n        readonly MyGuiScreenOptionsEditorSettings m_settingsOld = new MyGuiScreenOptionsEditorSettings();\n        readonly MyGuiScreenOptionsEditorSettings m_settingsNew = new MyGuiScreenOptionsEditorSettings();\n\n        //MyGuiControlCheckbox m_displayUnselectedCheckbox;\n        MyGuiControlCheckbox m_displayPrefabContainerBounding;\n        MyGuiControlCheckbox m_displayPrefabContainerAxis;\n        MyGuiControlCheckbox m_useCameraCrosshairCheckbox;\n        MyGuiControlCheckbox m_enableLightsInEditorCheckbox;\n        MyGuiControlCheckbox m_enableSnapPointFilter;\n        MyGuiControlCheckbox m_fixedSnapPointSize;\n        MyGuiControlCheckbox m_savePlayerShip;\n        MyGuiControlCheckbox m_enableObjectPivot;\n        MyGuiControlCheckbox m_displayVoxelBounding;\n        MyGuiControlCheckbox m_enableTextsDrawing;        \n        \n\n        bool m_displaySavePlayerShipOption;\n\n        public MyGuiScreenEditorOptions()\n            : base(new Vector2(0.5f, 0.5f), MyGuiConstants.SCREEN_BACKGROUND_COLOR, null)\n        {\n            m_enableBackgroundFade = true;\n            m_size = new Vector2(0.49f, 0.75f);\n            m_displaySavePlayerShipOption = MyGuiScreenGamePlay.Static.GetGameType() == MyGuiScreenGamePlayType.EDITOR_STORY;\n\n            AddCaption(MyTextsWrapperEnum.EditorOptions, new Vector2(0, 0.02f));\n\n            Vector2 controlsOriginLeft = new Vector2(-m_size.Value.X / 2.0f + 0.05f, -m_size.Value.Y / 2.0f + 0.125f);\n            Vector2 controlsOriginRight = new Vector2(-m_size.Value.X / 2.0f + 0.181f, -m_size.Value.Y / 2.0f + 0.125f);\n            Vector2 controlsDelta = new Vector2(0, 0.0525f);\n\n            int dPos = 0;\n\n            //  enable/disable all bounding boxes displaying\n\n            MyGuiControlLabel label1 = new MyGuiControlLabel(this, controlsOriginLeft + dPos * controlsDelta, null, MyTextsWrapperEnum.DisplayUnselectedBounding, MyGuiConstants.LABEL_TEXT_COLOR,\n                MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER);\n            //Controls.Add(label1);\n\n            float labelWidth = label1.GetTextSize().Size.X + 0.05f;\n\n            //m_displayUnselectedCheckbox = new MyGuiControlCheckbox(this, controlsOriginLeft + dPos * controlsDelta + new Vector2(labelWidth, 0), false, MyGuiConstants.CHECKBOX_BACKGROUND_COLOR);\n            //Controls.Add(m_displayUnselectedCheckbox);\n\n            // display prefab container bounding\n            MyGuiControlLabel label2 = new MyGuiControlLabel(this, controlsOriginLeft + dPos * controlsDelta, null, MyTextsWrapperEnum.DisplayPrefabContainerBounding, MyGuiConstants.LABEL_TEXT_COLOR,\n                MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER);\n            Controls.Add(label2);\n\n            m_displayPrefabContainerBounding = new MyGuiControlCheckbox(this, controlsOriginLeft + dPos * controlsDelta + new Vector2(labelWidth, 0), false, MyGuiConstants.CHECKBOX_BACKGROUND_COLOR);\n            Controls.Add(m_displayPrefabContainerBounding);\n            dPos++;\n\n            // display prefab container axis\n            MyGuiControlLabel labelPrefabContainerAxis = new MyGuiControlLabel(this, controlsOriginLeft + dPos * controlsDelta, null, MyTextsWrapperEnum.DisplayPrefabContainerAxis, MyGuiConstants.LABEL_TEXT_COLOR,\n                MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER);\n            Controls.Add(labelPrefabContainerAxis);\n\n            m_displayPrefabContainerAxis = new MyGuiControlCheckbox(this, controlsOriginLeft + dPos * controlsDelta + new Vector2(labelWidth, 0), false, MyGuiConstants.CHECKBOX_BACKGROUND_COLOR);\n            Controls.Add(m_displayPrefabContainerAxis);\n            dPos++;\n            \n\n            // display voxel bounding\n            MyGuiControlLabel lblVoxelBounding = new MyGuiControlLabel(this, controlsOriginLeft + dPos * controlsDelta, null, MyTextsWrapperEnum.DisplayVoxelBounding, MyGuiConstants.LABEL_TEXT_COLOR,\n            MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER);\n            Controls.Add(lblVoxelBounding);\n\n            m_displayVoxelBounding = new MyGuiControlCheckbox(this, controlsOriginLeft + dPos * controlsDelta + new Vector2(labelWidth, 0), false, MyGuiConstants.CHECKBOX_BACKGROUND_COLOR);\n            Controls.Add(m_displayVoxelBounding);\n\n            dPos++;\n\n            // use camera crosshair option\n            MyGuiControlLabel label3 = new MyGuiControlLabel(this, controlsOriginLeft + dPos * controlsDelta, null, MyTextsWrapperEnum.UseCameraCrosshair, MyGuiConstants.LABEL_TEXT_COLOR,\n                MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER);\n            Controls.Add(label3);\n\n            m_useCameraCrosshairCheckbox = new MyGuiControlCheckbox(this, controlsOriginLeft + dPos * controlsDelta + new Vector2(labelWidth, 0), false, MyGuiConstants.CHECKBOX_BACKGROUND_COLOR);\n            Controls.Add(m_useCameraCrosshairCheckbox);\n\n            dPos++;\n\n\n            // enable lightw in editor:\n            MyGuiControlLabel label5 = new MyGuiControlLabel(this, controlsOriginLeft + dPos * controlsDelta, null, MyTextsWrapperEnum.EnableLightsInEditor, MyGuiConstants.LABEL_TEXT_COLOR,\n                MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER);\n            Controls.Add(label5);\n\n            m_enableLightsInEditorCheckbox = new MyGuiControlCheckbox(this, controlsOriginLeft + dPos * controlsDelta + new Vector2(labelWidth, 0), true, MyGuiConstants.CHECKBOX_BACKGROUND_COLOR);\n            Controls.Add(m_enableLightsInEditorCheckbox);\n\n            dPos++;\n\n            // enable snap point filter\n            MyGuiControlLabel label7 = new MyGuiControlLabel(this, controlsOriginLeft + dPos * controlsDelta, null, MyTextsWrapperEnum.EnableSnapPointFilter, MyGuiConstants.LABEL_TEXT_COLOR,\n                MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER);\n            Controls.Add(label7);\n\n            m_enableSnapPointFilter = new MyGuiControlCheckbox(this, controlsOriginLeft + dPos * controlsDelta + new Vector2(labelWidth, 0), true, MyGuiConstants.CHECKBOX_BACKGROUND_COLOR);\n            Controls.Add(m_enableSnapPointFilter);\n\n            dPos++;\n\n            // fixed snap point size\n            MyGuiControlLabel label8 = new MyGuiControlLabel(this, controlsOriginLeft + dPos * controlsDelta, null, MyTextsWrapperEnum.FixedSnapPointSize, MyGuiConstants.LABEL_TEXT_COLOR,\n                MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER);\n            Controls.Add(label8);\n\n            m_fixedSnapPointSize = new MyGuiControlCheckbox(this, controlsOriginLeft + dPos * controlsDelta + new Vector2(labelWidth, 0), true, MyGuiConstants.CHECKBOX_BACKGROUND_COLOR);\n            Controls.Add(m_fixedSnapPointSize);\n\n            dPos++;\n\n            // enable object pivot\n            MyGuiControlLabel label10 = new MyGuiControlLabel(this, controlsOriginLeft + dPos * controlsDelta, null, MyTextsWrapperEnum.LabelEnableObjectPivot, MyGuiConstants.LABEL_TEXT_COLOR,\n                MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER);\n            Controls.Add(label10);\n\n            m_enableObjectPivot = new MyGuiControlCheckbox(this, controlsOriginLeft + dPos * controlsDelta + new Vector2(labelWidth, 0), true, MyGuiConstants.CHECKBOX_BACKGROUND_COLOR, label10);\n            Controls.Add(m_enableObjectPivot);\n\n            dPos++;\n\n            // enable textsDrawing\n            MyGuiControlLabel label11 = new MyGuiControlLabel(this, controlsOriginLeft + dPos * controlsDelta, null, MyTextsWrapperEnum.LabelEnableTextsDrawing, MyGuiConstants.LABEL_TEXT_COLOR,\n                MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER);\n            Controls.Add(label11);\n\n            m_enableTextsDrawing = new MyGuiControlCheckbox(this, controlsOriginLeft + dPos * controlsDelta + new Vector2(labelWidth, 0), true, MyGuiConstants.CHECKBOX_BACKGROUND_COLOR, label10);\n            Controls.Add(m_enableTextsDrawing);\n\n            dPos++;\n\n            // save player ship\n            MyGuiControlLabel label9 = new MyGuiControlLabel(this, controlsOriginLeft + dPos * controlsDelta, null, MyTextsWrapperEnum.LabelSavePlayerShip, MyGuiConstants.LABEL_TEXT_COLOR,\n                MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER);\n            Controls.Add(label9);\n\n            m_savePlayerShip = new MyGuiControlCheckbox(this, controlsOriginLeft + dPos * controlsDelta + new Vector2(labelWidth, 0), true, MyGuiConstants.CHECKBOX_BACKGROUND_COLOR);\n            Controls.Add(m_savePlayerShip);\n\n\n\n            //label9.Visible = m_displaySavePlayerShipOption;\n            //m_savePlayerShip.Visible = m_displaySavePlayerShipOption;\n\n            //  Buttons OK and CANCEL\n            Vector2 buttonDelta = new Vector2(0.1f, m_size.Value.Y / 2.0f - MyGuiConstants.MESSAGE_BOX_BORDER_AREA_Y - MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE.Y / 2.0f - 0.01f);\n            Controls.Add(new MyGuiControlButton(this, new Vector2(-buttonDelta.X, buttonDelta.Y), MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.Ok, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnOkClick, MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n            Controls.Add(new MyGuiControlButton(this, new Vector2(+buttonDelta.X, buttonDelta.Y), MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.Cancel, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnCancelClick, MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n\n\n            //  Update controls with values from config file\n            UpdateFromConfig();\n            UpdateControls(m_settingsOld);\n            UpdateSettings(m_settingsNew);\n        }        \n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenEditorOptions\";\n        }\n\n\n        void UpdateFromConfig()\n        {\n            m_settingsOld.DisplayUnselectedBounding = MyConfig.EditorDisplayUnselectedBounding;\n            m_settingsOld.UseCameraCrosshair = MyConfig.EditorUseCameraCrosshair;\n            m_settingsOld.LockedPrefab90DegreesRotation = MyConfig.EditorLockedPrefab90DegreesRotation;\n            m_settingsOld.EnableLightsInEditor = MyEditor.EnableLightsInEditor = MyConfig.EditorEnableLightsInEditor;\n            m_settingsOld.DisplayPrefabContainerBounding = MyEditor.DisplayPrefabContainerBounding = MyConfig.EditorDisplayPrefabContainerBounding;\n            m_settingsOld.DisplayPrefabContainerAxis = MyEditor.DisplayPrefabContainerAxis = MyConfig.EditorDisplayPrefabContainerAxis;\n            m_settingsOld.EnableSnapPointFilter = MyEditor.Static.SnapPointFilter = MyConfig.EditorSnapPointFilter;\n            m_settingsOld.FixedSizeSnapPoints = MyEditor.Static.FixedSizeSnapPoints = MyConfig.EditorFixedSizeSnapPoints;\n            m_settingsOld.SavePlayerShip = MyEditor.SavePlayerShip;\n            m_settingsOld.EnableObjectPivot = MyEditor.EnableObjectPivot = MyConfig.EditorEnableObjectPivot;\n            m_settingsOld.EnableTextsDrawing = MyEditor.EnableTextsDrawing = MyConfig.EditorEnableTextsDrawing;            \n        }\n\n        void UpdateControls(MyGuiScreenOptionsEditorSettings settings)\n        {\n            //m_displayUnselectedCheckbox.Checked = settings.DisplayUnselectedBounding;\n            m_useCameraCrosshairCheckbox.Checked = settings.UseCameraCrosshair;\n            //m_lockedPrefab90DegreesRotationCheckbox.Checked = settings.LockedPrefab90DegreesRotation;\n            m_enableLightsInEditorCheckbox.Checked = settings.EnableLightsInEditor;\n\n            m_displayVoxelBounding.Checked = MyEditor.DisplayVoxelBounding;\n            m_displayPrefabContainerBounding.Checked = MyEditor.DisplayPrefabContainerBounding;\n            m_displayPrefabContainerAxis.Checked = MyEditor.DisplayPrefabContainerAxis;\n            m_enableSnapPointFilter.Checked = MyEditor.Static.SnapPointFilter;\n            m_fixedSnapPointSize.Checked = MyEditor.Static.FixedSizeSnapPoints;\n            m_savePlayerShip.Checked = MyEditor.SavePlayerShip;\n\n            m_enableObjectPivot.Checked = MyEditor.EnableObjectPivot;\n            m_enableTextsDrawing.Checked = MyEditor.EnableTextsDrawing;\n        }\n\n        void UpdateSettings(MyGuiScreenOptionsEditorSettings settings)\n        {\n            //settings.DisplayUnselectedBounding = m_displayUnselectedCheckbox.Checked;\n            settings.UseCameraCrosshair = m_useCameraCrosshairCheckbox.Checked;\n            settings.LockedPrefab90DegreesRotation = false;\n            settings.EnableLightsInEditor = m_enableLightsInEditorCheckbox.Checked;\n\n            settings.DisplayVoxelBounding = m_displayVoxelBounding.Checked;\n            settings.DisplayPrefabContainerBounding = m_displayPrefabContainerBounding.Checked;\n            settings.DisplayPrefabContainerAxis = m_displayPrefabContainerAxis.Checked;\n            settings.EnableSnapPointFilter = m_enableSnapPointFilter.Checked;\n            settings.FixedSizeSnapPoints = m_fixedSnapPointSize.Checked;\n            settings.SavePlayerShip = m_savePlayerShip.Checked;\n\n            settings.EnableObjectPivot = m_enableObjectPivot.Checked;\n            settings.EnableTextsDrawing = m_enableTextsDrawing.Checked;\n        }\n\n        void Save()\n        {\n            UpdateSettings(m_settingsNew);\n            MyConfig.EditorDisplayUnselectedBounding = m_settingsNew.DisplayUnselectedBounding;\n            MyConfig.EditorUseCameraCrosshair = m_settingsNew.UseCameraCrosshair;\n            MyConfig.EditorLockedPrefab90DegreesRotation = m_settingsNew.LockedPrefab90DegreesRotation;\n            MyConfig.EditorEnableLightsInEditor = MyEditor.EnableLightsInEditor = m_settingsNew.EnableLightsInEditor;\n            MyConfig.EditorDisplayVoxelBounding = MyEditor.DisplayVoxelBounding = m_displayVoxelBounding.Checked;\n            MyConfig.EditorDisplayPrefabContainerBounding = MyEditor.DisplayPrefabContainerBounding = m_displayPrefabContainerBounding.Checked;\n            MyConfig.EditorDisplayPrefabContainerAxis = MyEditor.DisplayPrefabContainerAxis = m_displayPrefabContainerAxis.Checked;\n            MyConfig.EditorSnapPointFilter = MyEditor.Static.SnapPointFilter = m_enableSnapPointFilter.Checked;\n            MyConfig.EditorFixedSizeSnapPoints = MyEditor.Static.FixedSizeSnapPoints = m_fixedSnapPointSize.Checked;\n            MyEditor.SavePlayerShip = m_savePlayerShip.Checked;\n            MyConfig.EditorEnableObjectPivot = MyEditor.EnableObjectPivot = m_enableObjectPivot.Checked;\n            MyConfig.EditorEnableTextsDrawing = MyEditor.EnableTextsDrawing = m_enableTextsDrawing.Checked;\n            MyConfig.Save();\n        }\n\n        public void OnOkClick(MyGuiControlButton sender)\n        {\n            //  Save values\n            Save();\n            CloseScreen();\n        }\n\n        public void OnCancelClick(MyGuiControlButton sender)\n        {\n            //  Revert to OLD values\n            MyConfig.EditorDisplayUnselectedBounding = m_settingsOld.DisplayUnselectedBounding;\n            MyConfig.EditorUseCameraCrosshair = m_settingsOld.UseCameraCrosshair;\n            MyConfig.EditorLockedPrefab90DegreesRotation = m_settingsOld.LockedPrefab90DegreesRotation;\n            MyEditor.EnableLightsInEditor = m_settingsOld.EnableLightsInEditor;\n            MyEditor.DisplayPrefabContainerAxis = m_settingsOld.DisplayPrefabContainerAxis;\n            MyEditor.DisplayVoxelBounding = m_settingsOld.DisplayVoxelBounding;\n            MyEditor.DisplayPrefabContainerBounding = m_settingsOld.DisplayPrefabContainerBounding;\n            MyEditor.Static.SnapPointFilter = m_settingsOld.EnableSnapPointFilter;\n            MyEditor.Static.FixedSizeSnapPoints = m_settingsOld.FixedSizeSnapPoints;\n            MyEditor.SavePlayerShip = m_settingsOld.SavePlayerShip;\n            MyEditor.EnableObjectPivot = m_settingsOld.EnableObjectPivot;\n            MyEditor.EnableTextsDrawing = m_settingsOld.EnableTextsDrawing;\n            CloseScreen();\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/ScreenEditor/MyGuiScreenEditorPrefabKinematicParts.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Localization;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.Utils;\n\nnamespace MinerWars.AppCode.Game.GUI.ScreenEditor\n{\n    class MyGuiScreenEditorPrefabKinematicParts : MyGuiScreenEditorDialogBase\n    {\n        private MyGuiControlTextbox[] m_healthTextboxes;\n        private MyGuiControlTextbox[] m_maxHealthTextboxes;\n        private MyGuiScreenEditorEditProperties.MyHealthAndMaxHealth[] m_healthsAndMaxhealths;\n\n        private List<StringBuilder> m_errorMessages;\n        private StringBuilder m_errorMessage;\n\n        public MyGuiScreenEditorPrefabKinematicParts(MyGuiScreenEditorEditProperties.MyHealthAndMaxHealth[] healthsAndMaxhealths)\n            : base(new Vector2(0.5f, 0.5f), new Vector2(0.8f, 0.5f)) \n        {            \n            AddCaption(MyTextsWrapperEnum.EditPrefabKinematicPartsHealthAndMaxHealth, MyGuiConstants.LABEL_TEXT_COLOR);\n            m_healthsAndMaxhealths = healthsAndMaxhealths;\n            m_healthTextboxes = new MyGuiControlTextbox[m_healthsAndMaxhealths.Length];\n            m_maxHealthTextboxes = new MyGuiControlTextbox[m_healthsAndMaxhealths.Length];\n\n            Init();\n\n            m_errorMessages = new List<StringBuilder>();\n            m_errorMessage = new StringBuilder();\n        }\n\n        private void Init() \n        {\n            Vector2 topLeftPosition = new Vector2(-m_size.Value.X / 2f + 0.05f, -m_size.Value.Y / 2f + 0.15f);\n            Vector2 labelHealthPosition = topLeftPosition;\n            Vector2 textboxHealthPosition = labelHealthPosition + new Vector2(0.2f, 0f);\n            Vector2 labelMaxHealthPosition = textboxHealthPosition + new Vector2(0.13f, 0f);\n            Vector2 textboxMaxHealthPosition = labelMaxHealthPosition + new Vector2(0.22f, 0f);\n            for (int i = 0; i < m_healthsAndMaxhealths.Length; i++)\n            {\n                if (m_healthsAndMaxhealths[i] != null)\n                {\n                    MyGuiControlLabel labelHealth = new MyGuiControlLabel(this, labelHealthPosition, null, MyTextsWrapperEnum.Health, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER);\n                    Controls.Add(labelHealth);\n\n                    m_healthTextboxes[i] = new MyGuiControlTextbox(this, textboxHealthPosition, MyGuiControlPreDefinedSize.MEDIUM, MyValueFormatter.GetFormatedFloat(m_healthsAndMaxhealths[i].Health, 0, string.Empty), 6, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiControlTextboxType.DIGITS_ONLY);\n                    Controls.Add(m_healthTextboxes[i]);\n\n                    MyGuiControlLabel labelMaxHealth = new MyGuiControlLabel(this, labelMaxHealthPosition, null, MyTextsWrapperEnum.MaxHealth, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER);\n                    Controls.Add(labelMaxHealth);\n\n                    m_maxHealthTextboxes[i] = new MyGuiControlTextbox(this, textboxMaxHealthPosition, MyGuiControlPreDefinedSize.MEDIUM, MyValueFormatter.GetFormatedFloat(m_healthsAndMaxhealths[i].MaxHealth, 0, string.Empty), 6, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiControlTextboxType.DIGITS_ONLY);\n                    Controls.Add(m_maxHealthTextboxes[i]);\n                }\n                else \n                {\n                    MyGuiControlLabel labelDestroyed = new MyGuiControlLabel(this, labelHealthPosition, null, MyTextsWrapperEnum.Destroyed, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER);\n                    Controls.Add(labelDestroyed);\n                }\n                labelHealthPosition += MyGuiConstants.CONTROLS_DELTA;\n                textboxHealthPosition += MyGuiConstants.CONTROLS_DELTA;\n                labelMaxHealthPosition += MyGuiConstants.CONTROLS_DELTA;\n                textboxMaxHealthPosition += MyGuiConstants.CONTROLS_DELTA;\n            }\n\n            AddOkAndCancelButtonControls();\n        }\n\n        private bool Validate(ref List<StringBuilder> errorMessages)\n        {\n            // check healt and max health            \n            for (int i = 0; i < m_healthsAndMaxhealths.Length; i++) \n            {\n                if (m_healthTextboxes[i] != null && m_maxHealthTextboxes[i] != null) \n                {\n                    float? health = !String.IsNullOrEmpty(m_healthTextboxes[i].Text) ? float.Parse(m_healthTextboxes[i].Text) : (float?)null;\n                    float? maxHealth = !String.IsNullOrEmpty(m_maxHealthTextboxes[i].Text) ? float.Parse(m_maxHealthTextboxes[i].Text) : (float?)null;\n\n                    if (health == null)\n                    {\n                        errorMessages.Add(MyTextsWrapper.Get(MyTextsWrapperEnum.MessageYouMustSetHealth));\n                    }\n                    if (maxHealth == null)\n                    {\n                        errorMessages.Add(MyTextsWrapper.Get(MyTextsWrapperEnum.MessageYouMustSetMaxHealth));\n                    }\n                    if (health != null && health <= 0f)\n                    {\n                        errorMessages.Add(MyTextsWrapper.Get(MyTextsWrapperEnum.MessageHealthCantBeLessOrEqualZero));\n                    }\n                    if (maxHealth != null && maxHealth <= 0f)\n                    {\n                        errorMessages.Add(MyTextsWrapper.Get(MyTextsWrapperEnum.MessageMaxHealthCantBeLessOrEqualZero));\n                    }\n                    if (health != null && maxHealth != null && health > maxHealth)\n                    {\n                        errorMessages.Add(MyTextsWrapper.Get(MyTextsWrapperEnum.MessageHealthMustBeLesserOrEqualMaxHealth));\n                    }\n                }\n            }            \n            return errorMessages.Count == 0;\n        }\n\n        protected override void OnOkClick(MyGuiControlButton sender)\n        {\n            m_errorMessages.Clear();\n            m_errorMessage.Clear();\n            if (!Validate(ref m_errorMessages))\n            {\n                DisplayErrorMessage();\n                return;\n            }\n\n            Save();\n            \n            base.OnOkClick(sender);\n        }\n\n        private void DisplayErrorMessage() \n        {\n            foreach (StringBuilder errorMessage in m_errorMessages)\n            {\n                MyMwcUtils.AppendStringBuilder(m_errorMessage, errorMessage);\n                m_errorMessage.AppendLine();\n            }\n            StringBuilder caption = MyTextsWrapper.Get(m_errorMessages.Count > 1 ? MyTextsWrapperEnum.CaptionPropertiesAreNotValid : MyTextsWrapperEnum.CaptionPropertyIsNotValid);\n            MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, m_errorMessage, caption, MyTextsWrapperEnum.Ok, null));\n        }\n\n        private void Save() \n        {\n            for (int i = 0; i < m_healthsAndMaxhealths.Length; i++)\n            {\n                if (m_healthsAndMaxhealths != null)\n                {\n                    m_healthsAndMaxhealths[i].Health = float.Parse(m_healthTextboxes[i].Text);\n                    m_healthsAndMaxhealths[i].MaxHealth = float.Parse(m_maxHealthTextboxes[i].Text);\n                }\n            }\n        }\n\n        protected override void OnCancelClick(MyGuiControlButton sender)\n        {\n            base.OnCancelClick(sender);\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenEditorPrefabKinematicParts\";\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/ScreenEditor/MyGuiScreenEditorProgress.cs",
    "content": "﻿using MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Localization;\n\nnamespace MinerWars.AppCode.Game.GUI\n{\n    // This screen displays when we are loading something in editor\n    class MyGuiScreenEditorProgress : MyGuiScreenProgressBase\n    {\n        public static MyGuiScreenEditorProgress CurrentScreen = null;    //  This is always filled with reference to actual instance of this scree. If there isn't, it's null.\n\n        public MyGuiScreenEditorProgress(MyTextsWrapperEnum progressText, bool enableCancel) :\n            base(progressText, enableCancel)\n        {\n            CurrentScreen = this;\n        }\n\n        protected override void ProgressStart()\n        {\n            // Nothing to do\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenEditorProgress\";\n        }\n\n        public override bool CloseScreen()\n        {\n            bool ret = base.CloseScreen();\n\n            if (ret == true)\n            {\n                CurrentScreen = null;\n            }\n\n            return ret;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/ScreenEditor/MyGuiScreenEditorRenameGroup.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.CommonLIB.AppCode.Utils;\n\nnamespace MinerWars.AppCode.Game.GUI.ScreenEditor\n{\n    class MyGuiScreenEditorRenameGroup : MyGuiScreenEditorDialogBase\n    {\n        private static readonly int MAXIMUM_GROUP_NAME_LENGTH = 128;\n\n        MyGuiScreenEditorGroups m_myGuiScreenEditorGroups;\n        MyObjectGroup m_group;\n        MyGuiControlTextbox m_nameTextbox;\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenEditorRenameGroup\";\n        }\n\n        public MyGuiScreenEditorRenameGroup(MyGuiScreenEditorGroups myGuiScreenEditorGroups, MyObjectGroup group)\n            : base(new Vector2(0.5f, 0.5f), new Vector2(0.33f, 0.85f))\n        {\n            m_myGuiScreenEditorGroups = myGuiScreenEditorGroups; \n            m_group = group;\n            m_size = MyGuiConstants.TEXTBOX_MEDIUM_SIZE +\n                           new Vector2(MyGuiConstants.MESSAGE_BOX_BORDER_AREA_X*2,\n                                       0.1f + MyGuiConstants.MESSAGE_BOX_BORDER_AREA_Y*2 +\n                                       MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE.Y);\n\n            AddCaption(MyTextsWrapperEnum.EditorGroupsRenameGroup, MyGuiConstants.LABEL_TEXT_COLOR);\n            \n            m_nameTextbox = new MyGuiControlTextbox(this,\n                new Vector2(0, 0.1f + MyGuiConstants.TEXTBOX_MEDIUM_SIZE.Y / 2 - m_size.Value.Y / 2), \n                MyGuiControlPreDefinedSize.MEDIUM,\n                group.Name.ToString(), MAXIMUM_GROUP_NAME_LENGTH, \n                MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiControlTextboxType.NORMAL);\n\n            Controls.Add(m_nameTextbox);\n            AddOkAndCancelButtonControls();\n        }\n\n        public override void HandleInput(MyGuiInput input, bool receivedFocusInThisUpdate)\n        {\n            base.HandleInput(input, receivedFocusInThisUpdate);\n        }\n\n        protected override void OnOkClick(MyGuiControlButton sender)\n        {\n            if (!string.IsNullOrEmpty(m_nameTextbox.Text) && m_myGuiScreenEditorGroups.ChangeGroupName(m_group, m_nameTextbox.Text))\n            {\n                base.OnOkClick(sender);\n            }\n            else\n            {\n                MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.EditorGroupsNameUsedText, MyTextsWrapperEnum.EditorGroupsNameUsedCaption, MyTextsWrapperEnum.Ok, null));\n            }\n        }\n\n        \n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/ScreenEditor/MyGuiScreenEditorSaveProgress.cs",
    "content": "﻿using System.Collections.Generic;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Editor;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.World;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing System.IO;\nusing SysUtils.Utils;\nusing MinerWars.AppCode.Networking.SectorService;\nusing System;\nusing System.ServiceModel;\nusing System.Text;\nusing SysUtils;\nusing MinerWars.CommonLIB.AppCode.Networking.Services;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing KeenSoftwareHouse.Library.Trace;\nusing System.Linq;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.AppCode.Networking;\n\n//  IMPORTANT: THIS SCREEN CAN'T BE CANCELED BY ESC OR CANCEL BUTTON BECAUSE THAT WOULD INTERFERE THE PROCESS ON SERVER\n\nnamespace MinerWars.AppCode.Game.GUI\n{\n    class MyGuiScreenEditorSaveProgress : MyGuiScreenSectorServiceCallProgress\n    {\n        MyMwcSectorIdentifier m_sectorIdentifier;\n        MyMwcObjectBuilder_Checkpoint m_checkpoint;\n        bool m_savePlayer;\n        bool m_forceHide;\n        bool m_pause;\n\n        public MyGuiScreenEditorSaveProgress(MyMwcSectorIdentifier sectorIdentifier, MyMwcObjectBuilder_Checkpoint checkpoint, bool savePlayer, bool visibleSave = true, bool pause = false)\n            : base(MyTextsWrapperEnum.SaveSectorInProgressPleaseWait, false, TimeSpan.FromSeconds(120)) // Enought time to save sector - full of asteroids, etc\n        {\n            m_checkpoint = checkpoint;\n            m_sectorIdentifier = sectorIdentifier;\n            m_savePlayer = savePlayer;\n            m_forceHide = !visibleSave;\n            m_pause = pause;\n        }\n\n        public event ScreenHandler Saved;\n        public event ScreenHandler SaveFailed;\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenEditorSaveProgress\";\n        }\n\n        protected override void ServiceProgressStart(MySectorServiceClient client)\n        {\n            if (!MySession.PlayerShip.IsDead())\n            {\n                SaveSector(client);\n            }\n            else\n            {\n                this.CloseScreen();\n            }\n        }\n\n        private void SaveSector(MySectorServiceClient client)\n        {\n            if (m_pause)\n            {\n                if (!MinerWars.AppCode.App.MyMinerGame.IsPaused())\n                {\n                    MinerWars.AppCode.App.MyMinerGame.SwitchPause();\n                }\n            }\n\n            m_checkpoint.CurrentSector = m_sectorIdentifier;\n\n            //if (MyLocalCache.CanBeSaved(m_checkpoint))\n            //{\n            //    MyLocalCache.Save(m_checkpoint);\n            //    m_checkpoint.SectorObjectBuilder = null;\n            //}\n\n            AddAction(client.BeginSaveCheckpoint(m_checkpoint.ToBytes(), m_savePlayer, null, client));\n        }\n\n        protected override void OnActionCompleted(IAsyncResult asyncResult, MySectorServiceClient client)\n        {\n            try\n            {                \n                client.EndSaveCheckpoint(asyncResult);\n                MyEditorActions.ResetActionHistory();\n\n                var handler = Saved;\n                if (handler != null)\n                {\n                    handler(this);\n                }\n            }\n            catch (FaultException<MyCustomFault> faultException)\n            {\n                if (faultException.Detail.ErrorCode == MyCustomFaultCode.SectorNameExists)\n                {\n                    MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.CantSaveSectorNameExists, MyTextsWrapperEnum.MessageBoxCaptionError, MyTextsWrapperEnum.Ok, null));\n                }\n                else\n                {\n                    throw faultException; // Causes parent to call OnError\n                }\n            }\n\n            CloseScreen();\n        }\n\n        // Override default behaviour - default behaviour logs exception, aborts client and closes screen\n        protected override void OnError(Exception exception, MySectorServiceClient client)\n        {\n            MySectorServiceClient.SafeClose();\n            MyMwcLog.WriteLine(exception); // log exception\n\n            ShowRetryDialog();\n            CloseScreen();\n        }\n\n        private void ShowRetryDialog(string message = null, string caption = null)\n        {\n            var messageBoxMessage = MyTextsWrapper.Get(MyTextsWrapperEnum.CantSaveSectorFailed);\n            var messageBoxCaption = MyTextsWrapper.Get(MyTextsWrapperEnum.MessageBoxCaptionError);\n\n            if (m_pause)\n            {\n                if (!MinerWars.AppCode.App.MyMinerGame.IsPaused())\n                {\n                    MinerWars.AppCode.App.MyMinerGame.SwitchPause();\n                }\n            }\n\n            Vector2 buttonSize = new Vector2(MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE.X * 2.4f, MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE.Y);\n            var messageBoxScreen = new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyMessageBoxButtonsType.YES_NO, messageBoxMessage, messageBoxCaption, null, MyTextsWrapperEnum.ButtonRetry,\n                    MyTextsWrapperEnum.ButtonContinueWithoutSaving, MessageBoxCallback, false, buttonSize);\n            \n            MyGuiManager.AddScreen(messageBoxScreen);\n        }\n\n        private void MessageBoxCallback(MyGuiScreenMessageBoxCallbackEnum callbackReturn)\n        {\n            // retry\n            if (callbackReturn == MyGuiScreenMessageBoxCallbackEnum.YES)\n            {\n                var newSaveScreen = new MyGuiScreenEditorSaveProgress(m_sectorIdentifier, m_checkpoint, m_savePlayer, true, true);\n                newSaveScreen.Saved = this.Saved;\n                newSaveScreen.SaveFailed = this.SaveFailed;\n                MyGuiManager.AddScreen(newSaveScreen);\n            }\n            // continue without saving\n            else if (callbackReturn == MyGuiScreenMessageBoxCallbackEnum.NO)\n            {\n                var handler = SaveFailed;\n                if (handler != null)\n                {\n                    handler(this);\n                }\n            }\n        }\n\n        public override bool Update(bool hasFocus)\n        {\n            if (base.Update(hasFocus) == false) return false;\n\n            if (m_forceHide && m_state != MyGuiScreenState.HIDING && m_state != MyGuiScreenState.HIDDEN)\n            {\n                HideScreen();\n            }\n\n            return GetState() == MyGuiScreenState.OPENED;\n        }\n\n        public override bool CloseScreen()\n        {\n            if (m_pause)\n            {\n                if (MinerWars.AppCode.App.MyMinerGame.IsPaused())\n                {\n                    MinerWars.AppCode.App.MyMinerGame.SwitchPause();\n                }\n            }\n            return base.CloseScreen();\n        }\n\n        public override int GetTransitionOpeningTime()\n        {\n            return 0;\n        }\n\n        public override int GetTransitionClosingTime()\n        {\n            return 0;\n        }\n\n        public override bool HideScreen()\n        {\n            var hidden = base.HideScreen();\n            m_forceHide = true;\n            return hidden;\n        }\n\n        public override bool Draw(float backgroundFadeAlpha)\n        {\n            if (m_forceHide)\n                return true;\n\n            return base.Draw(backgroundFadeAlpha);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/ScreenEditor/MyGuiScreenEditorSelectAndHide.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Editor;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Entities.WayPoints;\nusing MinerWars.AppCode.Game.Prefabs;\nusing MinerWars.AppCode.Game.Entities.InfluenceSpheres;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\n\nnamespace MinerWars.AppCode.Game.GUI.ScreenEditor\n{\n    class MyGuiScreenEditorSelectAndHide : MyGuiScreenBase\n    {\n        // if you add a type here, add it to MyEditorActionWithObjectBuildersBase.AddToScene()!\n        const int TYPE_COUNT = 6;\n        MyTextsWrapperEnum[] rowLabels = { MyTextsWrapperEnum.Waypoints, MyTextsWrapperEnum.Voxels, MyTextsWrapperEnum.Prefabs, MyTextsWrapperEnum.SpawnPoints, MyTextsWrapperEnum.InfluenceSpheres, MyTextsWrapperEnum.Dummies };\n        Type[] types = { typeof(MyWayPoint), typeof(MyVoxelMap), typeof(MyPrefabBase), typeof(MySpawnPoint), typeof(MyInfluenceSphere), typeof(MyDummyPoint) };\n\n        MyGuiControlCheckbox[] m_checkboxVisible = new MyGuiControlCheckbox[TYPE_COUNT];\n        MyGuiControlCheckbox[] m_checkboxSelectable = new MyGuiControlCheckbox[TYPE_COUNT];\n        MyGuiControlCheckbox m_checkboxSnapPointsVisible;\n        MyGuiControlCheckbox m_checkboxWaypointIgnoreDepth;\n        MyGuiControlCheckbox m_checkboxGeneratorsRangeVisible;\n        MyGuiControlCheckbox m_checkboxLargeWeaponsRangeVisible;\n        MyGuiControlCheckbox m_checkboxSafeAreasVisible;\n        MyGuiControlCheckbox m_checkboxSafeAreasSelectable;\n        MyGuiControlCheckbox m_checkboxDetectorsVisible;\n        MyGuiControlCheckbox m_checkboxDetectorsSelectable;\n        MyGuiControlCheckbox m_checkboxParticleEffectsVisible;\n        MyGuiControlCheckbox m_checkboxParticleEffectsSelectable;\n        MyGuiControlCheckbox m_checkboxDisplayDeactivatedEntities;\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenEditorSelectAndHide\";\n        }\n\n        public MyGuiScreenEditorSelectAndHide()\n            : base(new Vector2(0.5f, 0.5f), MyGuiConstants.SCREEN_BACKGROUND_COLOR, null)\n        {\n            m_enableBackgroundFade = true;\n            m_size = new Vector2(0.5f, 0.4025f + (TYPE_COUNT + 4) * MyGuiConstants.CONTROLS_DELTA.Y + 1.3f * MyGuiConstants.CONTROLS_DELTA.Y);\n\n            AddCaption(MyTextsWrapperEnum.EditorSelectAndHide, new Vector2(0, 0.01f));\n\n            Vector2 controlsOriginLeft = new Vector2(-m_size.Value.X / 2.0f + 0.08f, -m_size.Value.Y / 2.0f + 0.1f);\n            Vector2 controlsOriginRight = new Vector2(-m_size.Value.X / 2.0f + 0.181f, -m_size.Value.Y / 2.0f + 0.1f);\n\n            Vector2 pos = controlsOriginLeft;\n            Vector2 tab1 = new Vector2(0.19f, 0);\n            Vector2 tab2 = new Vector2(0.29f, 0);\n\n            Controls.Add(new MyGuiControlLabel(this, pos + tab1, null, MyTextsWrapperEnum.Selectable, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER));\n            Controls.Add(new MyGuiControlLabel(this, pos + tab2, null, MyTextsWrapperEnum.Visible, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER));\n\n            for (int i = 0; i < m_checkboxVisible.Length; i++)\n            {\n                pos += MyGuiConstants.CONTROLS_DELTA - new Vector2(0,0.0025f);\n                Controls.Add(new MyGuiControlLabel(this, pos, null, rowLabels[i], MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n                Controls.Add(m_checkboxSelectable[i] = new MyGuiControlCheckbox(this, pos + tab1, false, MyGuiConstants.CHECKBOX_BACKGROUND_COLOR));\n                Controls.Add(m_checkboxVisible[i] = new MyGuiControlCheckbox(this, pos + tab2, false, MyGuiConstants.CHECKBOX_BACKGROUND_COLOR));\n\n                // uncheck Visible: uncheck its Selectable\n                m_checkboxVisible[i].OnCheck = delegate(MyGuiControlCheckbox sender)\n                {\n                    if (!sender.Checked)\n                        for (int j = 0; j < m_checkboxVisible.Length; j++)\n                            if (m_checkboxVisible[j] == sender)\n                                m_checkboxSelectable[j].Checked = false;\n                };\n                // check Selectable: check its Visible\n                m_checkboxSelectable[i].OnCheck = delegate(MyGuiControlCheckbox sender)\n                {\n                    if (sender.Checked)\n                        for (int j = 0; j < m_checkboxSelectable.Length; j++)\n                            if (m_checkboxSelectable[j] == sender)\n                                m_checkboxVisible[j].Checked = true;\n                };\n            }\n\n            //safe areas\n            pos += MyGuiConstants.CONTROLS_DELTA;\n            Controls.Add(new MyGuiControlLabel(this, pos, null, MyTextsWrapperEnum.SafeAreaDummies, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n            Controls.Add(m_checkboxSafeAreasSelectable = new MyGuiControlCheckbox(this, pos + tab1, false, MyGuiConstants.CHECKBOX_BACKGROUND_COLOR));\n            Controls.Add(m_checkboxSafeAreasVisible = new MyGuiControlCheckbox(this, pos + tab2, false, MyGuiConstants.CHECKBOX_BACKGROUND_COLOR));\n\n            //detectors\n            pos += MyGuiConstants.CONTROLS_DELTA;\n            Controls.Add(new MyGuiControlLabel(this, pos, null, MyTextsWrapperEnum.DetectorDummies, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n            Controls.Add(m_checkboxDetectorsSelectable = new MyGuiControlCheckbox(this, pos + tab1, false, MyGuiConstants.CHECKBOX_BACKGROUND_COLOR));\n            Controls.Add(m_checkboxDetectorsVisible = new MyGuiControlCheckbox(this, pos + tab2, false, MyGuiConstants.CHECKBOX_BACKGROUND_COLOR));\n\n            //particle effects\n            pos += MyGuiConstants.CONTROLS_DELTA;\n            Controls.Add(new MyGuiControlLabel(this, pos, null, MyTextsWrapperEnum.ParticleDummies, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n            Controls.Add(m_checkboxParticleEffectsSelectable = new MyGuiControlCheckbox(this, pos + tab1, false, MyGuiConstants.CHECKBOX_BACKGROUND_COLOR));\n            Controls.Add(m_checkboxParticleEffectsVisible = new MyGuiControlCheckbox(this, pos + tab2, false, MyGuiConstants.CHECKBOX_BACKGROUND_COLOR));\n            \n            // uncheck Visible: uncheck its Selectable\n            m_checkboxSafeAreasVisible.OnCheck = delegate(MyGuiControlCheckbox sender) { if (!sender.Checked) m_checkboxSafeAreasSelectable.Checked = false; };\n            m_checkboxDetectorsVisible.OnCheck = delegate(MyGuiControlCheckbox sender) { if (!sender.Checked) m_checkboxDetectorsSelectable.Checked = false; };\n            m_checkboxParticleEffectsVisible.OnCheck = delegate(MyGuiControlCheckbox sender) { if (!sender.Checked) m_checkboxParticleEffectsSelectable.Checked = false; };\n            \n            // check Selectable: check its Visible\n            m_checkboxSafeAreasSelectable.OnCheck = delegate(MyGuiControlCheckbox sender) { if (sender.Checked) m_checkboxSafeAreasVisible.Checked = true; };\n            m_checkboxDetectorsSelectable.OnCheck = delegate(MyGuiControlCheckbox sender) { if (sender.Checked) m_checkboxDetectorsVisible.Checked = true; };\n            m_checkboxParticleEffectsSelectable.OnCheck = delegate(MyGuiControlCheckbox sender) { if (sender.Checked) m_checkboxParticleEffectsVisible.Checked = true; };\n\n            //  Are snap points hidden?\n            pos += MyGuiConstants.CONTROLS_DELTA;\n            Controls.Add(new MyGuiControlLabel(this, pos, null, MyTextsWrapperEnum.SnapPoints, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n            Controls.Add(m_checkboxSnapPointsVisible = new MyGuiControlCheckbox(this, pos + tab2, false, MyGuiConstants.CHECKBOX_BACKGROUND_COLOR));\n\n            //  Do waypoints ignore depth?\n            pos += MyGuiConstants.CONTROLS_DELTA * 1.2f;\n            Controls.Add(new MyGuiControlLabel(this, pos, null, MyTextsWrapperEnum.WaypointsIgnoreDepth, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n            Controls.Add(m_checkboxWaypointIgnoreDepth = new MyGuiControlCheckbox(this, pos + tab2, false, MyGuiConstants.CHECKBOX_BACKGROUND_COLOR));\n\n            //  Generators range visible\n            pos += MyGuiConstants.CONTROLS_DELTA;\n            Controls.Add(new MyGuiControlLabel(this, pos, null, MyTextsWrapperEnum.GeneratorsRange, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n            Controls.Add(m_checkboxGeneratorsRangeVisible = new MyGuiControlCheckbox(this, pos + tab2, false, MyGuiConstants.CHECKBOX_BACKGROUND_COLOR));\n\n            //  Large weapons range visible\n            pos += MyGuiConstants.CONTROLS_DELTA;\n            Controls.Add(new MyGuiControlLabel(this, pos, null, MyTextsWrapperEnum.LargeWeaponsRange, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n            Controls.Add(m_checkboxLargeWeaponsRangeVisible = new MyGuiControlCheckbox(this, pos + tab2, false, MyGuiConstants.CHECKBOX_BACKGROUND_COLOR));\n\n            //  Display deactivated entities\n            pos += MyGuiConstants.CONTROLS_DELTA;\n            Controls.Add(new MyGuiControlLabel(this, pos, null, MyTextsWrapperEnum.DisplayDeactivatedEntities, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n            Controls.Add(m_checkboxDisplayDeactivatedEntities = new MyGuiControlCheckbox(this, pos + tab2, false, MyGuiConstants.CHECKBOX_BACKGROUND_COLOR));            \n\n            //  Buttons OK and CANCEL\n            Vector2 buttonDelta = new Vector2(0.09f, m_size.Value.Y / 2.0f - MyGuiConstants.MESSAGE_BOX_BORDER_AREA_Y - MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE.Y / 2.0f - 0.025f);\n            Controls.Add(new MyGuiControlButton(this, new Vector2(-buttonDelta.X, buttonDelta.Y), MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.Ok, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnOkClick, MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n            Controls.Add(new MyGuiControlButton(this, new Vector2(+buttonDelta.X, buttonDelta.Y), MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.Cancel, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnCancelClick, MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n\n            InitControls();\n        }\n\n        void InitControls()\n        {\n            for (int i = 0; i < TYPE_COUNT; i++)\n            {\n                m_checkboxVisible[i].Checked = !MyEntities.IsTypeHidden(types[i]);\n                m_checkboxSelectable[i].Checked = MyEntities.IsTypeSelectable(types[i]);\n            }\n            m_checkboxSnapPointsVisible.Checked = MyEditor.Static.ShowSnapPoints;\n            m_checkboxWaypointIgnoreDepth.Checked = MyWayPointGraph.WaypointsIgnoreDepth;\n            m_checkboxGeneratorsRangeVisible.Checked = MyEditor.Static.ShowGeneratorsRange;\n            m_checkboxLargeWeaponsRangeVisible.Checked = MyEditor.Static.ShowLargeWeaponsRange;\n            m_checkboxSafeAreasVisible.Checked = !MyEntities.SafeAreasHidden;\n            m_checkboxDetectorsVisible.Checked = !MyEntities.DetectorsHidden;\n            m_checkboxParticleEffectsVisible.Checked = !MyEntities.ParticleEffectsHidden;\n            m_checkboxSafeAreasSelectable.Checked = MyEntities.SafeAreasSelectable;\n            m_checkboxDetectorsSelectable.Checked = MyEntities.DetectorsSelectable;\n            m_checkboxParticleEffectsSelectable.Checked = MyEntities.ParticleEffectsSelectable;\n            m_checkboxDisplayDeactivatedEntities.Checked = MyEditor.Static.ShowDeactivatedEntities;\n        }\n\n\n        void SaveSettings()\n        {\n            MyConfig.EditorHiddenWayPoint = MyEntities.IsTypeHidden(typeof(MyWayPoint));\n            MyConfig.EditorSelectableWayPoint = MyEntities.IsTypeSelectable(typeof(MyWayPoint));\n\n            MyConfig.EditorHiddenVoxelMap = MyEntities.IsTypeHidden(typeof(MyVoxelMap));\n            MyConfig.EditorSelectableVoxelMap = MyEntities.IsTypeSelectable(typeof(MyVoxelMap));\n\n            MyConfig.EditorHiddenDummyPoint = MyEntities.IsTypeHidden(typeof(MyDummyPoint));\n            MyConfig.EditorSelectableDummyPoint = MyEntities.IsTypeSelectable(typeof(MyDummyPoint));\n\n            MyConfig.EditorHiddenPrefabBase = MyEntities.IsTypeHidden(typeof(MyPrefabBase));\n            MyConfig.EditorSelectablePrefabBase = MyEntities.IsTypeSelectable(typeof(MyPrefabBase));\n\n            MyConfig.EditorHiddenSpawnPoint = MyEntities.IsTypeHidden(typeof(MySpawnPoint));\n            MyConfig.EditorSelectableSpawnPoint = MyEntities.IsTypeSelectable(typeof(MySpawnPoint));\n\n            MyConfig.EditorHiddenInfluenceSphere = MyEntities.IsTypeHidden(typeof(MyInfluenceSphere));\n            MyConfig.EditorSelectableInfluenceSphere = MyEntities.IsTypeSelectable(typeof(MyInfluenceSphere));\n\n            MyConfig.EditorShowSnapPoints = MyEditor.Static.ShowSnapPoints;\n            MyConfig.EditorShowSafeAreas = !MyEntities.SafeAreasHidden;\n            MyConfig.EditorShowDetectors = !MyEntities.DetectorsHidden;\n            MyConfig.EditorShowParticleEffects = !MyEntities.ParticleEffectsHidden;\n\n            MyConfig.EditorSelectableSafeAreas = MyEntities.SafeAreasSelectable;\n            MyConfig.EditorSelectableDetectors = MyEntities.DetectorsSelectable;\n            MyConfig.EditorSelectableParticleEffects = MyEntities.ParticleEffectsSelectable;\n\n            MyConfig.EditorWaypointsIgnoreDepth = MyWayPointGraph.WaypointsIgnoreDepth;\n\n            MyConfig.EditorShowGeneratorsRange = MyEditor.Static.ShowGeneratorsRange;\n            MyConfig.EditorShowLargeWeaponsRange = MyEditor.Static.ShowLargeWeaponsRange;\n            MyConfig.EditorShowDeactivatedEntities = MyEditor.Static.ShowDeactivatedEntities;\n\n            MyConfig.Save();\n        }\n\n\n\n        public void OnOkClick(MyGuiControlButton sender)\n        {\n            // set hidden/selectable flags\n            for (int i = 0; i < TYPE_COUNT; i++)\n            {\n                MyEntities.SetTypeHidden(types[i], !m_checkboxVisible[i].Checked);\n                MyEntities.SetTypeSelectable(types[i], m_checkboxSelectable[i].Checked);\n            }\n\n            MyEntities.SafeAreasHidden = !m_checkboxSafeAreasVisible.Checked;\n            MyEntities.DetectorsHidden = !m_checkboxDetectorsVisible.Checked;\n            MyEntities.ParticleEffectsHidden = !m_checkboxParticleEffectsVisible.Checked;\n\n            MyEntities.SafeAreasSelectable = m_checkboxSafeAreasSelectable.Checked;\n            MyEntities.DetectorsSelectable = m_checkboxDetectorsSelectable.Checked;\n            MyEntities.ParticleEffectsSelectable = m_checkboxParticleEffectsSelectable.Checked;\n\n            MyEditor.Static.ShowSnapPoints = m_checkboxSnapPointsVisible.Checked;\n            MyEditor.Static.ShowGeneratorsRange = m_checkboxGeneratorsRangeVisible.Checked;\n            MyEditor.Static.ShowLargeWeaponsRange = m_checkboxLargeWeaponsRangeVisible.Checked;\n            MyEditor.Static.ShowDeactivatedEntities = m_checkboxDisplayDeactivatedEntities.Checked;\n\n            // if a selected object became unselectable, remove it from selection\n            var toRemove = new List<MyEntity>();\n            foreach (var selected in MyEditorGizmo.SelectedEntities)\n            {\n                for (int i = 0; i < TYPE_COUNT; i++)\n                    if (!MyEntities.IsTypeSelectable(types[i]) && types[i].IsInstanceOfType(selected))\n                        toRemove.Add(selected);\n                var dummy = selected as MyDummyPoint;\n                if (dummy != null) switch (dummy.DummyFlags)\n                {\n                    case MyDummyPointFlags.SAFE_AREA: if (!MyEntities.SafeAreasSelectable) toRemove.Add(selected); break;\n                    case MyDummyPointFlags.DETECTOR: if (!MyEntities.DetectorsSelectable) toRemove.Add(selected); break;\n                    case MyDummyPointFlags.PARTICLE: if (!MyEntities.ParticleEffectsSelectable) toRemove.Add(selected); break;\n                    default: break;\n                }\n            }\n\n            MyEditorGizmo.RemoveEntitiesFromSelection(toRemove);\n\n            MyEditor.Static.RefreshSelectionSettings();\n\n            // waypoints ignore depth?\n            MyWayPointGraph.WaypointsIgnoreDepth = m_checkboxWaypointIgnoreDepth.Checked;\n\n            SaveSettings();\n\n            CloseScreen();\n        }\n\n        public void OnCancelClick(MyGuiControlButton sender)\n        {\n            CloseScreen();\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/ScreenEditor/MyGuiScreenEditorSelectSector.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.World;\nusing SysUtils.Utils;\n//using MinerWars.CommonLIB.MasterServerService;\nusing System.IO;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing System.Diagnostics;\nusing MinerWars.AppCode.Networking.SectorService;\nusing System.ServiceModel;\n\nnamespace MinerWars.AppCode.Game.GUI.ScreenEditor\n{\n    class MyGuiScreenEditorSelectSector : MyGuiScreenBase\n    {\n        MyGuiControlCombobox m_mapsCombobox;\n        List<MyMwcSectorIdentifier> m_sectorIdentifiers;\n        List<MyMwcUserDetail> m_userDetails;\n        MyGuiControlTextbox m_findPlayerName;\n\n        public MyGuiScreenEditorSelectSector()\n            : base(new Vector2(0.5f, 0.5f), MyGuiConstants.SCREEN_BACKGROUND_COLOR, new Vector2(0.5f, 0.5f))\n        {\n            m_enableBackgroundFade = true;\n            m_sectorIdentifiers = null;\n            RecreateControls();\n        }\n\n        private void AddSectorToCombo(MyMwcSectorIdentifier sectorIdentifier, int index, string username)\n        {\n            if (string.IsNullOrEmpty(sectorIdentifier.SectorName))\n            {\n                m_mapsCombobox.AddItem(index, new StringBuilder(string.Format(\"{0} ({1})\",\n                    username, sectorIdentifier.Position.ToString())));\n            }\n            else\n            {\n                m_mapsCombobox.AddItem(index, new StringBuilder(string.Format(\"{0} {1} ({2})\",\n                    username, sectorIdentifier.SectorName, sectorIdentifier.Position.ToString())));\n            }\n        }\n\n        private void RecreateControls()\n        {\n            Controls.Clear();\n\n            AddCaption(new StringBuilder(\"Select Sector\"), MyGuiConstants.SCREEN_CAPTION_TEXT_COLOR);\n\n            Vector2 controlsOriginLeft = new Vector2(-m_size.Value.X / 2.0f + 0.04f, -m_size.Value.Y / 2.0f + 0.08f);\n            Vector2 controlsDelta = new Vector2(0, 0.0525f);\n\n            // controls for typing friend name to search\n            Controls.Add(new MyGuiControlLabel(this, controlsOriginLeft + 1 * controlsDelta, null, MyTextsWrapperEnum.FriendName, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n            m_findPlayerName = new MyGuiControlTextbox(this, controlsOriginLeft + 2 * controlsDelta + new Vector2(MyGuiConstants.TEXTBOX_MEDIUM_SIZE.X / 2.0f, 0), MyGuiControlPreDefinedSize.MEDIUM, \"\", 20, MyGuiConstants.TEXTBOX_BACKGROUND_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiControlTextboxType.NORMAL);\n            Controls.Add(m_findPlayerName);\n\n            // search button\n            Controls.Add(new MyGuiControlButton(this, m_findPlayerName.GetPosition() + new Vector2(0.2f, 0), MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.Search, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnSearchClick, MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n\n            // friend maps available for selection\n            Controls.Add(new MyGuiControlLabel(this, controlsOriginLeft + 4 * controlsDelta, null, MyTextsWrapperEnum.Map, MyGuiConstants.LABEL_TEXT_COLOR,\n                MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n\n            if (m_sectorIdentifiers != null && m_userDetails != null)\n            {\n                m_mapsCombobox = new MyGuiControlCombobox(this, controlsOriginLeft + 5 * controlsDelta + new Vector2(MyGuiConstants.COMBOBOX_LONGMEDIUM_SIZE.X / 2.0f, 0), MyGuiControlPreDefinedSize.LONGMEDIUM, MyGuiConstants.COMBOBOX_BACKGROUND_COLOR, MyGuiConstants.COMBOBOX_TEXT_SCALE);\n                for (int i = 0; i < m_sectorIdentifiers.Count; i++)\n                {\n                    MyMwcSectorIdentifier sectorIdentifier = m_sectorIdentifiers[i];\n                    if (!sectorIdentifier.UserId.HasValue)\n                    {\n                        AddSectorToCombo(sectorIdentifier, i, \"STORY\");\n                    }\n                    else\n                    {\n                        foreach (MyMwcUserDetail userDetail in m_userDetails)\n                        {\n                            if (sectorIdentifier.UserId.HasValue && sectorIdentifier.UserId.Value == userDetail.UserId)\n                            {\n                                AddSectorToCombo(sectorIdentifier, i, userDetail.DisplayName);\n                            }\n                        }\n                    }\n                }\n\n                SortSectors();\n\n                m_mapsCombobox.SelectItemByIndex(0);\n                Controls.Add(m_mapsCombobox);\n            }\n            else\n            {\n                Controls.Add(new MyGuiControlLabel(this, controlsOriginLeft + 5 * controlsDelta, null, MyTextsWrapperEnum.NoSectorsAvailable, MyGuiConstants.LABEL_TEXT_COLOR,\n                MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n            }\n\n            //  Buttons OK and CANCEL\n            Vector2 buttonDelta = new Vector2(0.1f, m_size.Value.Y / 2.0f - MyGuiConstants.MESSAGE_BOX_BORDER_AREA_Y - MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE.Y / 2.0f);\n            if (m_mapsCombobox != null)\n            {\n                Controls.Add(new MyGuiControlButton(this, new Vector2(-buttonDelta.X, buttonDelta.Y), MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                    MyTextsWrapperEnum.Ok, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnOkClick, MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n                Controls.Add(new MyGuiControlButton(this, new Vector2(+buttonDelta.X, buttonDelta.Y), MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                    MyTextsWrapperEnum.Cancel, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnCancelClick, MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n            }\n            else\n            {\n                Controls.Add(new MyGuiControlButton(this, new Vector2(0, m_size.Value.Y / 2.0f - MyGuiConstants.MESSAGE_BOX_BORDER_AREA_Y - MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE.Y / 2.0f), MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                    MyTextsWrapperEnum.Cancel, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnCancelClick, MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n            }\n        }\n\n        private void SortSectors()\n        {\n            // Named sectors first\n            m_mapsCombobox.CustomSortItems((a, b) =>\n            {\n                bool aName = string.IsNullOrEmpty(m_sectorIdentifiers[a.Key].SectorName);\n                bool bName = string.IsNullOrEmpty(m_sectorIdentifiers[b.Key].SectorName);\n\n                return aName == bName ?\n                    a.Value.ToString().CompareTo(b.Value.ToString()) :\n                    (aName ? 1 : -1);\n            });\n        }\n\n        public void AddSectorsResponse(List<MyMwcSectorIdentifier> sectorIdentifiers, List<MyMwcUserDetail> userDetails)\n        {\n            if (sectorIdentifiers != null && sectorIdentifiers.Count > 0)\n            {\n                m_sectorIdentifiers = sectorIdentifiers;\n                m_userDetails = userDetails;\n                RecreateControls();\n            }\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenEditorSelectSector\";\n        }\n\n        public void OnSearchClick(MyGuiControlButton sender)\n        {\n            if (m_findPlayerName != null && m_findPlayerName.Text != null && m_findPlayerName.Text.Length > 0)\n            {\n                MyGuiManager.AddScreen(new MyGuiScreenSelectSandboxProgress(MyMwcSelectSectorRequestTypeEnum.FIND_BY_PLAYER_NAME, MyTextsWrapperEnum.LoadingPleaseWait,\n                    this, m_findPlayerName.Text, AddSectorsResponse));\n            }\n            else\n            {\n                MyGuiManager.AddScreen(new MyGuiScreenSelectSandboxProgress(MyMwcSelectSectorRequestTypeEnum.STORY, MyTextsWrapperEnum.LoadingPleaseWait,\n                    this, null, AddSectorsResponse));\n            }\n        }\n\n        public void OnOkClick(MyGuiControlButton sender)\n        {\n            CloseScreen();\n            MyMwcSectorIdentifier sectorIdentifier = m_sectorIdentifiers[m_mapsCombobox.GetSelectedKey()];\n            MyGuiManager.AddScreen(new MyGuiScreenEditorLoadObjectGroupsProgress(MyTextsWrapperEnum.LoadingPleaseWait, sectorIdentifier));\n        }\n\n        public void OnCancelClick(MyGuiControlButton sender)\n        {\n            CloseScreen();\n            MyGuiManager.AddScreen(new MyGuiScreenEditorGroups());\n        }\n    }\n\n    class MyGuiScreenEditorLoadObjectGroupsProgress : MyGuiScreenSectorServiceCallProgress\n    {\n        MyMwcSectorIdentifier m_sectorIdentifier;\n\n        //MyMasterServerServiceClient client = MyMasterServerServiceClient.CreateInstance();\n        //System.IAsyncResult saveResult;\n\n        //  Using this static public property client-server tells us about login response\n        public static MyGuiScreenEditorLoadObjectGroupsProgress CurrentScreen = null;    //  This is always filled with reference to actual instance of this scree. If there isn't, it's null.\n\n        public MyGuiScreenEditorLoadObjectGroupsProgress(MyTextsWrapperEnum loadingText, MyMwcSectorIdentifier sectorIdentifier)\n            : base(loadingText, false, TimeSpan.FromSeconds(360))\n        {\n            CurrentScreen = this;\n            m_sectorIdentifier = sectorIdentifier;\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenEditorLoadObjectGroupsProgress\";\n        }\n\n        protected override void ServiceProgressStart(MySectorServiceClient client)\n        {\n            //  Send save request and wait for callback\n            AddAction(client.BeginLoadObjectGroups(m_sectorIdentifier.SectorType, m_sectorIdentifier.UserId, m_sectorIdentifier.Position, null, client));\n        }\n\n        protected override void OnActionCompleted(IAsyncResult asyncResult, MySectorServiceClient client)\n        {\n            try\n            {\n                var response = client.EndLoadObjectGroups(asyncResult);\n\n                List<MyMwcObjectBuilder_ObjectGroup> groups = new List<MyMwcObjectBuilder_ObjectGroup>();\n                List<MyMwcObjectBuilder_Base> entities = new List<MyMwcObjectBuilder_Base>();\n\n                var fakeEndpoint = new System.Net.IPEndPoint(0, MyClientServer.LoggedPlayer.GetUserId());\n\n                var sectorGroupBuilder = MyMwcObjectBuilder_Base.FromBytes<MyMwcObjectBuilder_SectorObjectGroups>(response);\n                if (sectorGroupBuilder == null)\n                {\n                    throw new InvalidOperationException(\"Cannot deserialize SectorObjectGroups object builder\");\n                }\n                MyGuiManager.AddScreen(new MyGuiScreenEditorLoadGroup(sectorGroupBuilder.Groups, sectorGroupBuilder.Entities));\n            }\n            catch (Exception)\n            {\n                MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.PleaseTryAgain, MyTextsWrapperEnum.MessageBoxNetworkErrorCaption, MyTextsWrapperEnum.Ok, null));\n            }\n            CloseScreen();\n        }\n\n        public override bool Update(bool hasFocus)\n        {\n            if (base.Update(hasFocus) == false) return false;\n\n            //  Only continue if this screen is really open (not closing or closed)\n            if (GetState() != MyGuiScreenState.OPENED) return false;\n\n            return true;\n        }\n\n        public override bool CloseScreen()\n        {\n            bool ret = base.CloseScreen();\n\n            if (ret == true)\n            {\n                CurrentScreen = null;\n            }\n\n            return ret;\n        }\n    }\n}\n\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/ScreenEditor/MyGuiScreenEditorSettingsFog.cs",
    "content": "﻿using MinerWarsMath;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Utils;\nusing System;\n\nnamespace MinerWars.AppCode.Game.GUI.ScreenEditor\n{\n    [Obsolete(\"Isn't used anymore\")]\n    class MyGuiScreenEditorSettingsSun : MyGuiScreenBase\n    {\n        public MyGuiScreenEditorSettingsSun()\n            : base(new Vector2(0.5f, 0.5f), MyGuiConstants.SCREEN_BACKGROUND_COLOR, null)\n        {\n            m_enableBackgroundFade = true;\n\n            m_size = new Vector2(0.45f, 0.4f);\n\n            //TODO\n            //AddCaption(MyTextsWrapperEnum.AudioOptions);\n\n            Vector2 controlsOriginLeft = new Vector2(-m_size.Value.X / 2.0f + 0.03f, -m_size.Value.Y / 2.0f + 0.125f);\n            Vector2 controlsOriginRight = new Vector2(-m_size.Value.X / 2.0f + 0.175f, -m_size.Value.Y / 2.0f + 0.125f);\n            Vector2 controlsDelta = new Vector2(0, 0.0525f);\n\n            \n            //  Buttons OK and CANCEL\n            Vector2 buttonDelta = new Vector2(0.05f, m_size.Value.Y / 2.0f - MyGuiConstants.MESSAGE_BOX_BORDER_AREA_Y - MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE.Y / 2.0f);\n            Controls.Add(new MyGuiControlButton(this, new Vector2(-buttonDelta.X, buttonDelta.Y), MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.Ok, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnOkClick, MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n            Controls.Add(new MyGuiControlButton(this, new Vector2(+buttonDelta.X, buttonDelta.Y), MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.Cancel, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnCancelClick, MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenEditorSettingsSun\";\n        }\n\n        private void Save()\n        {\n            //TODO\n        }\n\n        public void OnOkClick(MyGuiControlButton sender)\n        {\n            //  Save values\n            Save();\n            CloseScreen();\n        }\n\n        public void OnCancelClick(MyGuiControlButton sender)\n        {           \n            CloseScreen();\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/ScreenEditor/MyGuiScreenEditorSettingsSun.cs",
    "content": "﻿using MinerWarsMath;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Utils;\nusing System;\n\nnamespace MinerWars.AppCode.Game.GUI.ScreenEditor\n{\n    [Obsolete(\"Isn't used anymore\")]\n    class MyGuiScreenEditorSettingsFog : MyGuiScreenBase\n    {\n        public MyGuiScreenEditorSettingsFog()\n            : base(new Vector2(0.5f, 0.5f), MyGuiConstants.SCREEN_BACKGROUND_COLOR, null)\n        {\n            m_enableBackgroundFade = true;\n\n            m_size = new Vector2(0.45f, 0.4f);\n\n            //TODO\n            //AddCaption(MyTextsWrapperEnum.AudioOptions);\n\n            Vector2 controlsOriginLeft = new Vector2(-m_size.Value.X / 2.0f + 0.03f, -m_size.Value.Y / 2.0f + 0.125f);\n            Vector2 controlsOriginRight = new Vector2(-m_size.Value.X / 2.0f + 0.175f, -m_size.Value.Y / 2.0f + 0.125f);\n            Vector2 controlsDelta = new Vector2(0, 0.0525f);\n\n            \n            //  Buttons OK and CANCEL\n            Vector2 buttonDelta = new Vector2(0.05f, m_size.Value.Y / 2.0f - MyGuiConstants.MESSAGE_BOX_BORDER_AREA_Y - MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE.Y / 2.0f);\n            Controls.Add(new MyGuiControlButton(this, new Vector2(-buttonDelta.X, buttonDelta.Y), MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.Ok, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnOkClick, MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n            Controls.Add(new MyGuiControlButton(this, new Vector2(+buttonDelta.X, buttonDelta.Y), MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.Cancel, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnCancelClick, MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenEditorSettingsFog\";\n        }\n\n        private void Save()\n        {\n            //TODO\n        }\n\n        public void OnOkClick(MyGuiControlButton sender)\n        {\n            //  Save values\n            Save();\n            CloseScreen();\n        }\n\n        public void OnCancelClick(MyGuiControlButton sender)\n        {           \n            CloseScreen();\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/ScreenEditor/MyGuiScreenEditorWayPointList.cs",
    "content": "﻿\nusing System;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Editor;\nusing MinerWarsMath;\nusing System.Text;\nusing MinerWars.AppCode.Game.Entities.WayPoints;\n\nnamespace MinerWars.AppCode.Game.GUI.ScreenEditor\n{\n    class MyGuiScreenEditorWayPointList : MyGuiScreenBase\n    {\n        public MyGuiScreenEditorWayPointList()\n            : base(new Vector2(0.5f, 0.5f), MyGuiConstants.SCREEN_BACKGROUND_COLOR, null)\n        {\n            m_enableBackgroundFade = true;\n            m_size = new Vector2(0.7f, 0.75f);\n\n            AddCaption(MyTextsWrapperEnum.Waypoints, new Vector2(0,0.015f));\n\n            var wayPointsListBox = new MyGuiControlListbox(this, new Vector2(0, -0.01f), new Vector2(0.55f, 0.1f), MyGuiConstants.LISTBOX_BACKGROUND_COLOR,\n                MyTextsWrapper.Get(MyTextsWrapperEnum.Waypoints), MyGuiConstants.LABEL_TEXT_SCALE, 1, 5, 1, false, true, false,\n                null, null, MyGuiManager.GetScrollbarSlider(), MyGuiManager.GetHorizontalScrollbarSlider(), 2, 1, MyGuiConstants.LISTBOX_BACKGROUND_COLOR_BLUE, 0f, 0f, 0f, 0f, 0, 0, -0.01f, -0.01f, -0.02f, 0.02f);\n\n            wayPointsListBox.ItemSelect += new OnListboxItemSelect(wayPointsListBox_ItemSelect);\n\n\n            MyWayPointGraph.StoredPaths.Sort(Waypoint_Sort);\n            \n            for (int i = 0; i < MyWayPointGraph.StoredPaths.Count; i++)\n\t\t\t{\n                wayPointsListBox.AddItem(i, new StringBuilder(MyWayPointGraph.StoredPaths[i].Name));\n            }\n\n            Controls.Add(wayPointsListBox);\n\n\n            Controls.Add(new MyGuiControlButton(this, new Vector2(0.2080f, 0.28f), MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.Ok, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnOkClick, MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n        }\n\n        private int Waypoint_Sort(MyWayPointPath myWayPointPath, MyWayPointPath wayPointPath)\n        {\n            return myWayPointPath.Name.CompareTo(wayPointPath.Name);\n        }\n\n        public void OnOkClick(MyGuiControlButton sender)\n        {\n            CloseScreen();\n        }\n\n        void wayPointsListBox_ItemSelect(object sender, MyGuiControlListboxItemEventArgs eventArgs)\n        {\n            var selectedPath = MyWayPointGraph.StoredPaths[eventArgs.Key];\n\n            MyEditorGizmo.ClearSelection();\n\n            MyWayPointGraph.SelectedPath = selectedPath;\n            MyEditorGizmo.AddEntitiesToSelection(MyWayPointGraph.SelectedPath.WayPoints);\n        }        \n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenEditorWayPointList\";\n        }\n\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/ScreenEditor/MyGuiScreenEditorWayPointPath.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Entities.WayPoints;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWarsMath;\n\nnamespace MinerWars.AppCode.Game.GUI.ScreenEditor\n{\n    class MyGuiScreenEditorWayPointPath : MyGuiScreenEditorDialogBase\n    {\n        MyWayPointPath m_waypointPath;\n        MyGuiControlTextbox m_groupNameTextbox;\n        bool m_newlyAdded;\n\n        Vector2? m_screenPosition;\n\n        public MyGuiScreenEditorWayPointPath(MyWayPointPath path, bool newlyAdded)\n            : base(new Vector2(0.5f, 0.5f), newlyAdded ? new Vector2(0.4f, 0.25f) : new Vector2(0.32f, 0.25f))\n        {\n            m_waypointPath = path;\n            m_newlyAdded = newlyAdded;\n            Init();\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenEditorWayPointPath\";\n        }\n\n        void Init()\n        {\n            string name = m_waypointPath != null ? m_waypointPath.Name : string.Empty;\n\n            m_size = m_newlyAdded ? new Vector2(0.42f, 0.35f) : new Vector2(0.42f, 0.35f);\n\n            Vector2 controlsOriginLeft = GetControlsOriginLeftFromScreenSize();\n\n            // Add screen title\n            AddCaption(m_newlyAdded ? MyTextsWrapperEnum.WaypointPathNameCreateCaption : MyTextsWrapperEnum.WaypointPathNameCaption);\n\n            Controls.Add(new MyGuiControlLabel(this, controlsOriginLeft + 0 * MyGuiConstants.CONTROLS_DELTA, null, MyTextsWrapperEnum.WaypointPathName, MyGuiConstants.LABEL_TEXT_COLOR,\n                MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n            m_groupNameTextbox = new MyGuiControlTextbox(this,\n                controlsOriginLeft + 0.75f * MyGuiConstants.CONTROLS_DELTA + new Vector2(MyGuiConstants.TEXTBOX_MEDIUM_SIZE.X / 2, 0),\n                MyGuiControlPreDefinedSize.MEDIUM,\n                  name, MyWaypointConstants.MAXIMUM_WAYPOINT_PATH_NAME_LENGTH,\n                MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiControlTextboxType.NORMAL);\n            Controls.Add(m_groupNameTextbox);\n\n            AddOkAndCancelButtonControls();\n        }\n\n        protected override void OnOkClick(MyGuiControlButton sender)\n        {\n            if (m_waypointPath != null)\n            {\n                string name = m_groupNameTextbox.Text;\n\n                // empty or duplicate\n                if (m_waypointPath.ChangeName(name) == false)\n                {\n                    MyGuiManager.AddScreen(new MyGuiScreenMessageBox(\n                        MyMessageBoxType.ERROR,\n                        name == null || name.Length == 0 ? new StringBuilder(\"The name can't be empty.\") : new StringBuilder().AppendFormat(\"The name {0} is already used.\", name),\n                        new StringBuilder(\"Error\"),\n                        MyTextsWrapperEnum.Ok,\n                        r => { }\n                    ));\n                    return;\n                }\n            }\n            CloseScreen();\n        }\n\n        protected override void OnCancelClick(MyGuiControlButton sender)\n        {\n            if (m_waypointPath != null)\n                if (m_newlyAdded)\n                    MyWayPointGraph.RemovePath(MyWayPointGraph.SelectedPath);\n            CloseScreen();\n        }\n\n        private Vector2 GetControlsOriginLeftFromScreenSize()\n        {\n            return new Vector2(-m_size.Value.X / 2.0f + 0.03f, -m_size.Value.Y / 2.0f + 0.09f);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/ScreenEditor/MyGuiScreenSaveSector.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Editor;\nusing MinerWars.AppCode.Game.GUI.Helpers;\n\nnamespace MinerWars.AppCode.Game.GUI.ScreenEditor\n{\n    class MyGuiScreenSaveSector : MyGuiScreenEditorDialogBase\n    {\n        private static readonly int MAXIMUM_SECTOR_NAME_LENGTH = 32;\n        private MyGuiControlTextbox m_nameTextbox;\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenEditorSaveSector\";\n        }\n\n        public MyGuiScreenSaveSector()\n            : base(new Vector2(0.5f, 0.5f), new Vector2(0.33f, 0.85f))\n        {\n            m_size = MyGuiConstants.TEXTBOX_MEDIUM_SIZE +\n                           new Vector2(MyGuiConstants.MESSAGE_BOX_BORDER_AREA_X * 2,\n                                       0.1f + MyGuiConstants.MESSAGE_BOX_BORDER_AREA_Y * 2 +\n                                       MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE.Y);\n\n            AddCaption(MyTextsWrapperEnum.SaveSector, MyGuiConstants.LABEL_TEXT_COLOR);\n\n            string sectorName = MyGuiScreenGamePlay.Static.GetSectorIdentifier().SectorName;\n            sectorName = sectorName == null ? string.Empty : sectorName;\n\n            m_nameTextbox = new MyGuiControlTextbox(this,\n                new Vector2(0, 0.1f + MyGuiConstants.TEXTBOX_MEDIUM_SIZE.Y / 2 - m_size.Value.Y / 2),\n                MyGuiControlPreDefinedSize.MEDIUM,\n                sectorName, MAXIMUM_SECTOR_NAME_LENGTH,\n                MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiControlTextboxType.NORMAL);\n\n            Controls.Add(m_nameTextbox);\n            AddOkAndCancelButtonControls();\n        }\n\n        public override void HandleInput(MyGuiInput input, bool receivedFocusInThisUpdate)\n        {\n            base.HandleInput(input, receivedFocusInThisUpdate);\n        }\n\n        protected override void OnOkClick(MyGuiControlButton sender)\n        {\n            base.OnOkClick(sender);\n            \n            MyGuiScreenGamePlay.Static.SetSectorName(m_nameTextbox.Text);\n            MyEditor.Static.PerformContextMenuAction(MyGuiContextMenuItemActionType.SAVE_SECTOR);            \n        }\n\n\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/ScreenEditor/MyGuiScreenSelectDeactivatedEntity.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Editor;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Prefabs;\nusing MinerWars.AppCode.Game.Utils;\n\nnamespace MinerWars.AppCode.Game.GUI.ScreenEditor\n{\n    class MyGuiScreenSelectDeactivatedEntity : MyGuiScreenEditorDialogBase\n    {\n        private MyGuiControlListbox m_listbox;\n\n        public MyGuiScreenSelectDeactivatedEntity()\n            : base(new Vector2(0.5f), new Vector2(0.9f, 0.85f))\n        {\n            m_enableBackgroundFade = true;\n            m_size = new Vector2(0.8f, 0.9f);\n\n            AddCaption(MyTextsWrapperEnum.SelectDeactivatedEntity, new Vector2(0,0.035f));\n            \n            AddBackButtonControl(new Vector2(0, -0.02f));\n\n            Init();\n        }\n\n        private void Init() \n        {\n            m_listbox = new MyGuiControlListbox(this,\n                new Vector2(0f, -0.02f),\n                MyGuiConstants.LISTBOX_LONGMEDIUM_SIZE,\n                MyGuiConstants.DEFAULT_CONTROL_BACKGROUND_COLOR,\n                null, .6f, 1, 16, 1, false, true, false,\n                null, null, MyGuiManager.GetScrollbarSlider(), MyGuiManager.GetHorizontalScrollbarSlider(), 2, 1, MyGuiConstants.LISTBOX_BACKGROUND_COLOR_BLUE, 0f, 0f, 0f, 0f, 0, 0, -0.01f, -0.01f, -0.02f, 0.02f);\n            Controls.Add(m_listbox);\n\n            m_listbox.ItemDoubleClick += new OnListboxItemDoubleClick(m_listbox_ItemDoubleClick);\n            FillListbox();\n        }\n\n        private void FillListbox() \n        {\n            List<MyEntity> deactivatedEntities = new List<MyEntity>();\n            foreach (MyEntity entity in MyEntities.GetEntities()) \n            {\n                if (!entity.Activated) \n                {\n                    deactivatedEntities.Add(entity);                    \n                }\n                else if (entity is MyPrefabContainer) \n                {\n                    foreach (MyPrefabBase deactivatedPrefab in ((MyPrefabContainer)entity).GetDeactivatedPrefabs()) \n                    {\n                        deactivatedEntities.Add(deactivatedPrefab);\n                    }\n                }\n            }\n\n            foreach (MyEntity deactivatedEntity in deactivatedEntities) \n            {\n                if (deactivatedEntity.EntityId.HasValue) \n                {                    \n                    string displayInfo = string.Format(\"[{0}] ({1}) {2} : {3}\", \n                        deactivatedEntity.EntityId.Value.NumericValue, \n                        deactivatedEntity.GetFriendlyName(),\n                        string.IsNullOrEmpty(deactivatedEntity.Name) ? \"NONE\" : deactivatedEntity.Name,\n                        string.IsNullOrEmpty(deactivatedEntity.DisplayName) ? \"NONE\" : deactivatedEntity.DisplayName);\n                    m_listbox.AddItem((int)deactivatedEntity.EntityId.Value.NumericValue, new StringBuilder(displayInfo));\n                }\n            }\n        }\n\n        private void m_listbox_ItemDoubleClick(object sender, MyGuiControlListboxItemEventArgs eventArgs)\n        {\n            MyEditorGizmo.ClearSelection();\n            MyEntity entityToSelect = MyEntities.GetEntityById(new MyEntityIdentifier((uint)eventArgs.Key));\n            MyEditorGizmo.AddEntityToSelection(entityToSelect);\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenSelectDeactivatedEntity\";\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/ScreenEditor/MyGuiScreenSmallShipTemplates.cs",
    "content": "﻿using System.Diagnostics;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.GUI.Helpers;\nusing MinerWars.AppCode.Game.Inventory;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Managers.Others;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing System.Collections.Generic;\n\nnamespace MinerWars.AppCode.Game.GUI.ScreenEditor\n{\n    delegate void SelectTemplateCallback(ScreenResult result, MySmallShipTemplate selectedTemplate);\n\n    class MyGuiScreenSmallShipTemplates : MyGuiScreenEditorDialogBase\n    {\n        private MyGuiControlCombobox m_shipTypeCombobox;\n        private MyGuiControlListbox m_templatesListbox;\n        private string m_newName;\n        private MySmallShipTemplate m_selectedTemplate;\n        private readonly SelectTemplateCallback m_selectCallback;\n\n        /// <summary>\n        /// Screen for editing or selecting small ship templates.\n        /// </summary>\n        /// <param name=\"selectCallback\">If not null, creates a template selection screen.\n        /// If null, creates a template editing screen.</param>\n        public MyGuiScreenSmallShipTemplates(SelectTemplateCallback selectCallback = null)\n            : base(new Vector2(0.5f), new Vector2(0.7f, 0.85f))\n        {\n            m_enableBackgroundFade = true;\n\n            AddCaption(MyTextsWrapperEnum.SmallShipTemplates, new Vector2(0,0.005f));\n\n            InitCombobox();\n\n            InitListBox();\n\n            if (selectCallback != null)\n            {\n                m_selectCallback = selectCallback;\n                AddOkAndCancelButtonControls(new Vector2(0,-0.015f));\n            }\n            else\n            {\n                InitButtons();\n                AddBackButtonControl(new Vector2(0, -0.015f));\n            }\n\n            UpdateControls();\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"SmallShipTemplates\";\n        }\n\n        #region Init\n\n        private void InitCombobox()\n        {\n            m_shipTypeCombobox = new MyGuiControlCombobox(\n                this,\n                new Vector2(0, -0.3f),\n                MyGuiControlPreDefinedSize.MEDIUM,\n                MyGuiConstants.COMBOBOX_BACKGROUND_COLOR,\n                MyGuiConstants.COMBOBOX_TEXT_SCALE);\n\n            foreach (MyMwcObjectBuilder_SmallShip_TypesEnum shipType in MyGuiSmallShipHelpers.MyMwcObjectBuilder_SmallShip_TypesEnumValues)\n            {\n                int shipTypeNumber = (int) shipType;\n                var helper = MyGuiObjectBuilderHelpers.GetGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip, shipTypeNumber);\n                m_shipTypeCombobox.AddItem(shipTypeNumber, helper.Name);\n            }\n\n            m_shipTypeCombobox.SelectItemByIndex(0);\n\n            m_shipTypeCombobox.OnSelect += Combobox_OnSelect;\n\n            Controls.Add(m_shipTypeCombobox);\n        }\n\n        private void InitListBox()\n        {\n            m_templatesListbox = new MyGuiControlListbox(\n                this, \n                new Vector2(0, 0.0f),\n                new Vector2(0.25f, 0.075f),\n                MyGuiConstants.LISTBOX_BACKGROUND_COLOR,\n                MyTextsWrapper.Get(MyTextsWrapperEnum.SmallShipTemplates),\n                MyGuiConstants.LABEL_TEXT_SCALE,\n                1, 6, 1, false, true, false,\n                null, null, MyGuiManager.GetScrollbarSlider(), MyGuiManager.GetHorizontalScrollbarSlider(), 2, 1, MyGuiConstants.LISTBOX_BACKGROUND_COLOR_BLUE, 0f, 0f, 0f, 0f, 0, 0, -0.01f, -0.01f, -0.02f, 0.02f);\n\n            Controls.Add(m_templatesListbox);\n        }\n\n        private void InitButtons()\n        {\n            var newButton = new MyGuiControlButton(\n                this, new Vector2(0.23f, -0.2f),\n                new Vector2(0.1f, 0.0475f),\n                MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.Add,\n                MyGuiConstants.BUTTON_TEXT_COLOR,\n                MyGuiConstants.BUTTON_TEXT_SCALE,\n                OnAddButtonClick,\n                MyGuiControlButtonTextAlignment.CENTERED,\n                true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER,\n                true);\n\n            Controls.Add(newButton);\n\n            var renameButton = new MyGuiControlButton(\n                this, new Vector2(0.23f, -0.15f),\n                new Vector2(0.1f, 0.0475f),\n                MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.Rename,\n                MyGuiConstants.BUTTON_TEXT_COLOR,\n                MyGuiConstants.BUTTON_TEXT_SCALE,\n                OnRenameButtonClick,\n                MyGuiControlButtonTextAlignment.CENTERED,\n                true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER,\n                true);\n\n            Controls.Add(renameButton);\n\n            var editButton = new MyGuiControlButton(\n                this, new Vector2(0.23f, -0.1f),\n                new Vector2(0.1f, 0.0475f),\n                MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.Edit,\n                MyGuiConstants.BUTTON_TEXT_COLOR,\n                MyGuiConstants.BUTTON_TEXT_SCALE,\n                OnEditButtonClick,\n                MyGuiControlButtonTextAlignment.CENTERED,\n                true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER,\n                true);\n\n            Controls.Add(editButton);\n\n            var deleteButton = new MyGuiControlButton(\n                this, new Vector2(0.23f, -0.05f),\n                new Vector2(0.1f, 0.0475f),\n                MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.Delete,\n                MyGuiConstants.BUTTON_TEXT_COLOR,\n                MyGuiConstants.BUTTON_TEXT_SCALE,\n                OnDeleteButtonClick,\n                MyGuiControlButtonTextAlignment.CENTERED,\n                true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER,\n                true);\n\n            Controls.Add(deleteButton);\n\n            var saveToServerButton = new MyGuiControlButton(\n                this, new Vector2(0.23f, 0.2f),\n                new Vector2(0.15f, 0.0475f),\n                Color.Green.ToVector4(),\n                MyTextsWrapperEnum.SaveToServer,\n                MyGuiConstants.BUTTON_TEXT_COLOR,\n                MyGuiConstants.BUTTON_TEXT_SCALE,\n                OnSaveToServerButton,\n                MyGuiControlButtonTextAlignment.CENTERED,\n                true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER,\n                true);\n\n            Controls.Add(saveToServerButton);\n\n            var reloadFromServerButton = new MyGuiControlButton(\n                this, new Vector2(0.23f, 0.27f),\n                new Vector2(0.15f, 0.0475f),\n                Color.Green.ToVector4(),\n                MyTextsWrapperEnum.LoadFromServer,\n                MyGuiConstants.BUTTON_TEXT_COLOR,\n                MyGuiConstants.BUTTON_TEXT_SCALE,\n                OnReloadFromServerButton,\n                MyGuiControlButtonTextAlignment.CENTERED,\n                true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER,\n                true);\n\n            Controls.Add(reloadFromServerButton);\n        }\n\n        #endregion\n\n        #region Updating controls' layout\n\n        private void Combobox_OnSelect()\n        {\n            UpdateControls();\n        }\n\n        private void UpdateControls()\n        {\n            var selectedType = (MyMwcObjectBuilder_SmallShip_TypesEnum) m_shipTypeCombobox.GetSelectedKey();\n            FillListBox(selectedType);\n        }\n\n        private void FillListBox(MyMwcObjectBuilder_SmallShip_TypesEnum selectedType)\n        {\n            m_templatesListbox.RemoveAllItems();\n            var templates = MySmallShipTemplates.GetTemplatesForType(selectedType);\n            for (int i = 0; i < templates.Count; i++)\n            {\n                var template = templates[i];\n                m_templatesListbox.AddItem(i, template.Name);\n            }\n        }\n\n        #endregion\n\n        private static void WarnNotSelected()\n        {\n            //MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR,\n            //                                                 MyTextsWrapperEnum.YouHaveToSelect,\n            //                                                 MyTextsWrapperEnum.Failure,\n            //                                                 MyTextsWrapperEnum.Ok, null));\n        }\n\n        protected override void OnOkClick(MyGuiControlButton sender)\n        {\n            var selectedItem = m_templatesListbox.GetSelectedItem();\n            if (selectedItem != null)\n            {\n                var selectedType = (MyMwcObjectBuilder_SmallShip_TypesEnum) m_shipTypeCombobox.GetSelectedKey();\n                var selectedTemplate = MySmallShipTemplates.GetTemplate(selectedType, selectedItem.Value);\n                \n                base.OnOkClick(sender);\n                \n                Debug.Assert(m_selectCallback != null);\n                m_selectCallback(ScreenResult.Ok, selectedTemplate);\n            }\n            else\n            {\n                WarnNotSelected();\n            }\n        }\n\n        protected override void OnCancelClick(MyGuiControlButton sender)\n        {\n            base.OnCancelClick(sender);\n\n            Debug.Assert(m_selectCallback != null);\n            m_selectCallback(ScreenResult.Cancel, null);\n        }\n\n        #region Add\n\n        private void OnAddButtonClick(MyGuiControlButton sender)\n        {\n            MyGuiManager.AddScreen(new MyGuiScreenInputString(NewNameChosen, MyTextsWrapperEnum.NewTemplateName));\n        }\n\n        private void NewNameChosen(ScreenResult result, string resultText)\n        {\n            if (result == ScreenResult.Ok)\n            {\n                m_newName = resultText;\n\n                var selectedType = (MyMwcObjectBuilder_SmallShip_TypesEnum) m_shipTypeCombobox.GetSelectedKey();\n\n                var builders = new List<MySmallShipBuilderWithName>\n                {\n                    new MySmallShipBuilderWithName(MyMwcObjectBuilder_SmallShip_Bot.CreateObjectBuilderWithAllItems(selectedType, MyShipTypeConstants.GetShipTypeProperties(selectedType).GamePlay.CargoCapacity))\n                };\n\n                var inventory = new MyInventory();                \n                inventory.FillInventoryWithAllItems(null, 100);\n                var gui = new MyGuiScreenInventory(\n                    builders,\n                    0,\n                    inventory.GetObjectBuilder(false),\n                    MyTextsWrapper.Get(MyTextsWrapperEnum.AllItemsInventory));\n\n                gui.OnSave += AddTemplate;\n                MyGuiManager.AddScreen(gui);\n            }\n        }\n\n        private void AddTemplate(MyGuiScreenInventory sender, MyGuiScreenInventorySaveResult saveresult)\n        {\n            var newID = MySmallShipTemplates.GenerateNewID();\n            MySmallShipTemplates.AddTemplate(new MySmallShipTemplate(\n                newID, \n                new StringBuilder(m_newName), \n                saveresult.SmallShipsObjectBuilders[saveresult.CurrentIndex].Builder, \n                false));\n\n            UpdateControls();\n            sender.OnSave -= AddTemplate;\n        }\n\n        #endregion\n\n        #region Edit\n\n        private void OnEditButtonClick(MyGuiControlButton sender)\n        {\n            var selectedItem = m_templatesListbox.GetSelectedItem();\n            if (selectedItem != null)\n            {\n                var selectedType = (MyMwcObjectBuilder_SmallShip_TypesEnum) m_shipTypeCombobox.GetSelectedKey();\n                m_selectedTemplate = MySmallShipTemplates.GetTemplate(selectedType, selectedItem.Value);\n\n                var builders = new List<MySmallShipBuilderWithName> { new MySmallShipBuilderWithName(m_selectedTemplate.Builder) };\n\n                var inventory = new MyInventory();\n                inventory.FillInventoryWithAllItems(null, 100);\n                var gui = new MyGuiScreenInventory(\n                    builders,\n                    0,\n                    inventory.GetObjectBuilder(false),\n                    MyTextsWrapper.Get(MyTextsWrapperEnum.AllItemsInventory));\n\n                gui.OnSave += UpdateTemplate;\n                MyGuiManager.AddScreen(gui);\n            }\n            else\n            {\n                WarnNotSelected();\n            }\n        }\n\n        private void UpdateTemplate(MyGuiScreenInventory sender, MyGuiScreenInventorySaveResult saveresult)\n        {\n            Debug.Assert(m_selectedTemplate != null);\n\n            m_selectedTemplate.Builder = saveresult.SmallShipsObjectBuilders[saveresult.CurrentIndex].Builder;\n            sender.OnSave -= UpdateTemplate;\n        }\n\n        #endregion\n\n        #region Rename\n\n        private void OnRenameButtonClick(MyGuiControlButton sender)\n        {\n            var selectedItem = m_templatesListbox.GetSelectedItem();\n            if (selectedItem != null)\n            {\n                var selectedType = (MyMwcObjectBuilder_SmallShip_TypesEnum)m_shipTypeCombobox.GetSelectedKey();\n                m_selectedTemplate = MySmallShipTemplates.GetTemplate(selectedType, selectedItem.Value);\n\n                MyGuiManager.AddScreen(new MyGuiScreenInputString(NameForRenameChosen, MyTextsWrapperEnum.NewTemplateName, m_selectedTemplate.Name));\n            }\n        }\n\n        private void NameForRenameChosen(ScreenResult result, string resultText)\n        {\n            if (result == ScreenResult.Ok)\n            {\n                if (!string.IsNullOrEmpty(resultText))\n                {\n                    m_selectedTemplate.Name = new StringBuilder(resultText);\n                    UpdateControls();\n                }\n                else\n                {\n                    MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR,\n                                                                     MyTextsWrapperEnum.EmptyDescription,\n                                                                     MyTextsWrapperEnum.Failure,\n                                                                     MyTextsWrapperEnum.Ok, null));\n                }\n            }\n        }\n\n        #endregion\n\n        #region Delete\n\n        private void OnDeleteButtonClick(MyGuiControlButton sender)\n        {\n            var selectedItem = m_templatesListbox.GetSelectedItem();\n            if (selectedItem != null)\n            {\n                Debug.Assert(selectedItem != null);\n\n                var selectedType = (MyMwcObjectBuilder_SmallShip_TypesEnum) m_shipTypeCombobox.GetSelectedKey();\n                var selectedTemplate = MySmallShipTemplates.GetTemplate(selectedType, selectedItem.Value);\n\n                if (selectedTemplate.SavedToServer)\n                {\n                    MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR,\n                                                                     MyTextsWrapperEnum.CannotDeleteSavedTemplate,\n                                                                     MyTextsWrapperEnum.Failure, \n                                                                     MyTextsWrapperEnum.Ok, null));\n                }\n                else\n                {\n                    MySmallShipTemplates.DeleteTemplate(selectedTemplate);\n                    UpdateControls();\n                }\n            }\n            else\n            {\n                WarnNotSelected();\n            }\n        }\n\n        #endregion\n\n        #region Save to server\n\n        private void OnSaveToServerButton(MyGuiControlButton sender)\n        {\n            MySmallShipTemplates.SaveToServer(true);\n        }\n\n        private void OnReloadFromServerButton(MyGuiControlButton sender) \n        {\n            MySmallShipTemplates.Load(true);\n        }\n\n        #endregion\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/ScreenEditor/Object3D/MyGuiScreenEditorAsteroid.cs",
    "content": "﻿using System;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.GUI.Helpers;\nusing MinerWars.AppCode.Game.Editor;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Voxels;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing System.Collections.Generic;\nusing System.Text;\nusing System.Diagnostics;\n\nnamespace MinerWars.AppCode.Game.GUI.ScreenEditor.Object3D\n{\n    class MyGuiScreenEditorAsteroid : MyGuiScreenEditorObject3DBase\n    {\n        MyGuiControlLabel m_selectAsteroidLabel;\n        MyGuiControlLabel m_selectMaterialLabel;\n        MyGuiControlCombobox m_selectAsteroidTypeCombobox;\n        MyGuiControlCombobox m_selectVoxelMapCombobox;\n        MyGuiControlCombobox m_selectVoxelMapMaterialCombobox;\n        MyGuiControlTextbox m_positionX;\n        MyGuiControlTextbox m_positionY;\n        MyGuiControlTextbox m_positionZ;\n        MyGuiControlCheckbox m_changeMaterial;\n\n        public MyGuiScreenEditorAsteroid(Vector2? screenPosition)\n            : base(new Vector2(0.5f, 0.5f), MyGuiConstants.SCREEN_BACKGROUND_COLOR, null, MyTextsWrapperEnum.CreateAsteroid, screenPosition)\n        {\n            Init();\n        }\n\n        /// <summary>\n        /// asteroid has to be either MyVoxelMap or MyStaticAsteroid.\n        /// </summary>\n        /// <param name=\"asteroid\">Has to be either MyVoxelMap or MyStaticAsteroid!</param>\n        public MyGuiScreenEditorAsteroid(MyEntity asteroid)\n            : base(asteroid, new Vector2(0.5f, 0.5f), MyGuiConstants.SCREEN_BACKGROUND_COLOR, null, MyTextsWrapperEnum.EditAsteroid)\n        {\n            Init();\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenEditorAsteroid\";\n        }\n\n        void Init()\n        {\n            m_enableBackgroundFade = true;\n            m_size = new Vector2(0.92f, 0.95f);\n\n            // Add screen title\n            AddCaption();\n\n            Vector2 originDelta = new Vector2(0.02f, 0);\n            Vector2 controlsOriginLeft = GetControlsOriginLeftFromScreenSize() + originDelta;\n            Vector2 controlsOriginRight = GetControlsOriginRightFromScreenSize() + originDelta;\n\n            // Decide if screen is for editing existing phys object or adding new\n            if (HasEntity())\n            {\n                //controlsOriginLeft.X += 0.5f * MyGuiConstants.COMBOBOX_LONGMEDIUM_SIZE.X;\n                controlsOriginLeft.Y += 0.075f;\n\n                //AddEditPositionControls();                \n                AddVoxelMaterialCombobox(\n                    controlsOriginLeft + new Vector2(0.1f,-0.02f),\n                    controlsOriginLeft + new Vector2(MyGuiConstants.COMBOBOX_LONGMEDIUM_SIZE.X / 2.0f, 0) + 2 * CONTROLS_DELTA + new Vector2(0.1f,-0.065f),\n                    m_entity.VoxelMaterial);\n\n                if (this.m_entity is MyVoxelMap)\n                {\n                    Vector2 buttonDelta = new Vector2(-0.15f, m_size.Value.Y / 2.0f - MyGuiConstants.MESSAGE_BOX_BORDER_AREA_Y - MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE.Y / 2.0f - 0.085f);\n                    Controls.Add(new MyGuiControlButton(this, new Vector2(buttonDelta.X, buttonDelta.Y), new Vector2(0.25f, 0.0475f), MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                        MyTextsWrapperEnum.RemoveVoxels, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnClearClick, MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n\n                    buttonDelta.X = -buttonDelta.X;\n                    Controls.Add(new MyGuiControlButton(this, new Vector2(buttonDelta.X, buttonDelta.Y), new Vector2(0.25f, 0.0475f), MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                        MyTextsWrapperEnum.RemoveAllVoxelHands, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnClearVoxelHands, MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n                }\n\n                Vector2 controlsColumn2OriginLabel = new Vector2(controlsOriginLeft.X + MyGuiConstants.COMBOBOX_LONGMEDIUM_SIZE.X / 2 + MyGuiConstants.TEXTBOX_MEDIUM_SIZE.X + 0.03f, -m_size.Value.Y / 2.0f + 0.04f);\n                Vector2 controlsColumn2Origin = new Vector2(controlsColumn2OriginLabel.X + 0.02f, -m_size.Value.Y / 2.0f + 0.04f);\n\n                m_positionX = new MyGuiControlTextbox(this, controlsColumn2Origin + 3 * CONTROLS_DELTA + new Vector2(MyGuiConstants.TEXTBOX_MEDIUM_SIZE.X / 2.0f, 0), MyGuiControlPreDefinedSize.MEDIUM, \"\", 20, MyGuiConstants.TEXTBOX_BACKGROUND_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiControlTextboxType.NORMAL);\n                m_positionY = new MyGuiControlTextbox(this, controlsColumn2Origin + 4 * CONTROLS_DELTA + new Vector2(MyGuiConstants.TEXTBOX_MEDIUM_SIZE.X / 2.0f, 0), MyGuiControlPreDefinedSize.MEDIUM, \"\", 20, MyGuiConstants.TEXTBOX_BACKGROUND_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiControlTextboxType.NORMAL);\n                m_positionZ = new MyGuiControlTextbox(this, controlsColumn2Origin + 5 * CONTROLS_DELTA + new Vector2(MyGuiConstants.TEXTBOX_MEDIUM_SIZE.X / 2.0f, 0), MyGuiControlPreDefinedSize.MEDIUM, \"\", 20, MyGuiConstants.TEXTBOX_BACKGROUND_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiControlTextboxType.NORMAL);\n\n                Controls.Add(new MyGuiControlLabel(this, controlsColumn2OriginLabel + 3 * CONTROLS_DELTA, null, MyTextsWrapperEnum.X, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n                Controls.Add(new MyGuiControlLabel(this, controlsColumn2OriginLabel + 4 * CONTROLS_DELTA, null, MyTextsWrapperEnum.Y, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n                Controls.Add(new MyGuiControlLabel(this, controlsColumn2OriginLabel + 5 * CONTROLS_DELTA, null, MyTextsWrapperEnum.Z, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n\n                Controls.Add(m_positionX);\n                Controls.Add(m_positionY);\n                Controls.Add(m_positionZ);\n\n                m_positionX.Text = m_entity.WorldMatrix.Translation.X.ToString();\n                m_positionY.Text = m_entity.WorldMatrix.Translation.Y.ToString();\n                m_positionZ.Text = m_entity.WorldMatrix.Translation.Z.ToString();\n\n                m_changeMaterial = new MyGuiControlCheckbox(this, controlsColumn2OriginLabel + 6 * CONTROLS_DELTA + new Vector2(0.16f, 0), true, MyGuiConstants.CHECKBOX_BACKGROUND_COLOR);\n                Controls.Add(new MyGuiControlLabel(this, controlsColumn2OriginLabel + 6 * CONTROLS_DELTA, null, MyTextsWrapperEnum.ChangeMaterial, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n                Controls.Add(m_changeMaterial);\n\n                AddOkAndCancelButtonControls();\n            }\n            else\n            {\n                #region Asteroid Type\n                //choose asteroid type label\n                //Controls.Add(new MyGuiControlLabel(this, controlsOriginLeft + 1 * CONTROLS_DELTA + new Vector2(0, -0.0f), null, MyTextsWrapperEnum.AsteroidType, MyGuiConstants.LABEL_TEXT_COLOR,\n                //    MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n\n                //COMBOBOX - asteroid type\n                m_selectAsteroidTypeCombobox = new MyGuiControlCombobox(this, controlsOriginRight + 1 * CONTROLS_DELTA + new Vector2(- controlsOriginRight.X, -0.045f),\n                    MyGuiControlPreDefinedSize.MEDIUM, MyGuiConstants.COMBOBOX_BACKGROUND_COLOR, MyGuiConstants.COMBOBOX_TEXT_SCALE, 2);\n\n                foreach (MyGuiAsteroidTypesEnum enumValue in MyGuiAsteroidHelpers.MyGuiAsteroidTypeEnumValues)\n                {\n                    MyGuiAsteroidHelper asteroidTypeHelper = MyGuiAsteroidHelpers.GetMyGuiAsteroidTypeHelper(enumValue);\n                    m_selectAsteroidTypeCombobox.AddItem((int)enumValue, null, asteroidTypeHelper.Description);\n                }\n\n                m_selectAsteroidTypeCombobox.SelectItemByKey(0);\n                Controls.Add(m_selectAsteroidTypeCombobox);\n                m_selectAsteroidTypeCombobox.OnSelect += OnComboboxAsteroidTypeSelect;\n                #endregion\n\n                ReloadControls();\n\n                AddOkAndCancelButtonControls();\n            }\n        }\n\n        private void OnClearVoxelHands(MyGuiControlButton btn)\n        {\n            MyGuiManager.AddScreen(\n                new MyGuiScreenMessageBox(\n                    MyMessageBoxType.MESSAGE,\n                    MyTextsWrapperEnum.ClearVoxelHandsWarning,\n                    MyTextsWrapperEnum.Warning,\n                    MyTextsWrapperEnum.Ok,\n                    MyTextsWrapperEnum.Cancel,\n                    ClearVoxelHands));\n        }\n\n        private void OnClearClick(MyGuiControlButton btn)\n        {\n            MyGuiManager.AddScreen(\n                new MyGuiScreenMessageBox(\n                    MyMessageBoxType.MESSAGE,\n                    MyTextsWrapperEnum.ClearAsteroidWarning,\n                    MyTextsWrapperEnum.Warning,\n                    MyTextsWrapperEnum.Ok,\n                    MyTextsWrapperEnum.Cancel,\n                    ClearAsteroid));\n        }\n\n        private void ClearVoxelHands(MyGuiScreenMessageBoxCallbackEnum callbackReturn)\n        {\n            if (callbackReturn == MyGuiScreenMessageBoxCallbackEnum.YES)\n            {\n                var voxelMap = m_entity as MyVoxelMap;\n                voxelMap.ClearVoxelHands();\n                OnOkClick(null);\n            }\n        }\n\n        private void ClearAsteroid(MyGuiScreenMessageBoxCallbackEnum callbackReturn)\n        {\n            if (callbackReturn == MyGuiScreenMessageBoxCallbackEnum.YES)\n            {\n                var voxelMap = m_entity as MyVoxelMap;\n                MyMwcVector3Int voxelCoordMin = new MyMwcVector3Int(0, 0, 0);\n                MyMwcVector3Int voxelCoordMax = voxelMap.Size;\n\n                //  Fix min and max cell coordinates so they don't overlap the voxelmap\n                voxelMap.FixVoxelCoord(ref voxelCoordMin);\n                voxelMap.FixVoxelCoord(ref voxelCoordMax);\n\n                MyMwcVector3Int voxelCoord;\n                for (voxelCoord.X = voxelCoordMin.X; voxelCoord.X <= voxelCoordMax.X; voxelCoord.X++)\n                {\n                    for (voxelCoord.Y = voxelCoordMin.Y; voxelCoord.Y <= voxelCoordMax.Y; voxelCoord.Y++)\n                    {\n                        for (voxelCoord.Z = voxelCoordMin.Z; voxelCoord.Z <= voxelCoordMax.Z; voxelCoord.Z++)\n                        {\n                            voxelMap.SetVoxelContent(0, ref voxelCoord);\n                        }\n                    }\n                }\n                voxelMap.InvalidateCache(voxelCoordMin, voxelCoordMax);\n                OnOkClick(null);\n            }\n        }\n\n        private void OnDoubleClick()\n        {\n            OnOkClick(null);\n        }\n\n        public void ReloadControls()\n        {\n            Vector2 originDelta = new Vector2(0.02f, 0);\n            Vector2 controlsOriginLeft = GetControlsOriginLeftFromScreenSize() + originDelta;\n\n            if (GetAsteroidType() == MyGuiAsteroidTypesEnum.VOXEL)\n            {\n                #region Voxel File\n                //choose asteroid label\n                m_selectAsteroidLabel = new MyGuiControlLabel(this, controlsOriginLeft + 2.5f * CONTROLS_DELTA + new Vector2(0.02f, -0.02f), null, MyTextsWrapperEnum.AsteroidName, MyGuiConstants.LABEL_TEXT_COLOR,\n                    MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER);\n                Controls.Add(m_selectAsteroidLabel);\n\n                //COMBOBOX - voxel files\n                m_selectVoxelMapCombobox = new MyGuiControlCombobox(this, controlsOriginLeft + 4.5f * CONTROLS_DELTA + new Vector2(MyGuiConstants.COMBOBOX_LONGMEDIUM_SIZE.X / 2.0f + 0.02f, -0.065f), MyGuiControlPreDefinedSize.LONGMEDIUM,\n                    MyGuiConstants.COMBOBOX_BACKGROUND_COLOR, MyGuiConstants.COMBOBOX_TEXT_SCALE, 11, true, false, true);\n\n                foreach (MyMwcVoxelFilesEnum enumValue in MyGuiAsteroidHelpers.MyMwcVoxelFilesEnumValues)\n                {\n                    MyGuiAsteroidHelper voxelFileHelper = MyGuiAsteroidHelpers.GetMyGuiVoxelFileHelper(enumValue);\n                    Debug.Assert(voxelFileHelper.Description != null);\n                    m_selectVoxelMapCombobox.AddItem((int)enumValue, voxelFileHelper.Icon, voxelFileHelper.Description);\n                }\n\n                m_selectVoxelMapCombobox.SortItemsByValueText();\n                m_selectVoxelMapCombobox.SelectItemByKey(1);\n                m_selectVoxelMapCombobox.OnSelectItemDoubleClick += OnDoubleClick;\n                Controls.Add(m_selectVoxelMapCombobox);\n                #endregion\n\n                #region Voxel Material\n                Vector2 delta = new Vector2(m_selectVoxelMapCombobox.GetSize().Value.X + 0.02f, 0);\n                AddVoxelMaterialCombobox(\n                    controlsOriginLeft + 2.5f * CONTROLS_DELTA + delta + new Vector2(0.14f, -0.02f),\n                    controlsOriginLeft + 4.5f * CONTROLS_DELTA + new Vector2(MyGuiConstants.COMBOBOX_LONGMEDIUM_SIZE.X / 2.0f, 0) + delta + new Vector2(0.14f, -0.065f),\n                    null);\n                #endregion\n            }\n            else if (GetAsteroidType() == MyGuiAsteroidTypesEnum.STATIC)\n            {\n\n                #region Static Asteroid\n                m_selectAsteroidLabel = new MyGuiControlLabel(this, controlsOriginLeft + 2.5f * CONTROLS_DELTA + new Vector2(0.02f,-0.02f), null, MyTextsWrapperEnum.AsteroidName, MyGuiConstants.LABEL_TEXT_COLOR,\n                    MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER);\n                Controls.Add(m_selectAsteroidLabel);\n\n                //COMBOBOX - static asteroids\n                m_selectVoxelMapCombobox = new MyGuiControlCombobox(this, controlsOriginLeft + 4.5f * CONTROLS_DELTA + new Vector2(MyGuiConstants.COMBOBOX_LONGMEDIUM_SIZE.X / 2.0f + 0.02f, -0.065f), MyGuiControlPreDefinedSize.LONGMEDIUM,\n                    MyGuiConstants.COMBOBOX_BACKGROUND_COLOR, MyGuiConstants.COMBOBOX_TEXT_SCALE, 11, true, false, true);\n\n                m_selectVoxelMapCombobox.OnSelectItemDoubleClick += OnDoubleClick;\n\n                foreach (MyMwcObjectBuilder_StaticAsteroid_TypesEnum enumValue in MyGuiAsteroidHelpers.MyMwcStaticAsteroidTypesEnumValues)\n                {\n                    MyGuiAsteroidHelper staticAsteroidHelper = MyGuiAsteroidHelpers.GetStaticAsteroidTypeHelper(enumValue);\n\n                    if (staticAsteroidHelper != null)\n                    {\n                        m_selectVoxelMapCombobox.AddItem((int)enumValue, staticAsteroidHelper.Icon, staticAsteroidHelper.Description);\n                    }\n                }\n\n                m_selectVoxelMapCombobox.SelectItemByIndex(0);\n                Controls.Add(m_selectVoxelMapCombobox);\n\n                Vector2 delta = new Vector2(m_selectVoxelMapCombobox.GetSize().Value.X + 0.02f, 0);\n                AddVoxelMaterialCombobox(\n                    controlsOriginLeft + 2.5f * CONTROLS_DELTA + delta + new Vector2(0.14f, -0.02f),\n                    controlsOriginLeft + 4.5f * CONTROLS_DELTA + new Vector2(MyGuiConstants.COMBOBOX_LONGMEDIUM_SIZE.X / 2.0f, 0) + delta + new Vector2(0.14f,-0.065f),\n                    null);\n\n                m_selectVoxelMapMaterialCombobox.SelectItemByKey(0); // Select default material\n\n                #endregion\n            }\n        }\n\n        void AddVoxelMaterialCombobox(Vector2 labelPosition, Vector2 comboboxPosition, MyMwcVoxelMaterialsEnum? selectedMaterial)\n        {\n            //choose material label            \n            m_selectMaterialLabel = new MyGuiControlLabel(this, labelPosition, null, MyTextsWrapperEnum.AsteroidMaterial, MyGuiConstants.LABEL_TEXT_COLOR,\n                MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER);\n            Controls.Add(m_selectMaterialLabel);\n\n            //COMBOBOX - voxel materials enum\n            m_selectVoxelMapMaterialCombobox = new MyGuiControlCombobox(this, comboboxPosition, MyGuiControlPreDefinedSize.LONGMEDIUM,\n                MyGuiConstants.COMBOBOX_BACKGROUND_COLOR, MyGuiConstants.COMBOBOX_TEXT_SCALE, 11, true, false, true);\n\n            foreach (MyMwcVoxelMaterialsEnum enumValue in MyGuiAsteroidHelpers.MyMwcVoxelMaterialsEnumValues)\n            {\n                MyGuiVoxelMaterialHelper voxelMaterialHelper = MyGuiAsteroidHelpers.GetMyGuiVoxelMaterialHelper(enumValue);\n\n                if (voxelMaterialHelper != null)\n                    m_selectVoxelMapMaterialCombobox.AddItem((int)enumValue, voxelMaterialHelper.Icon, voxelMaterialHelper.Description);\n            }\n            int selectedIndex;\n            if (selectedMaterial == null)\n            {\n                selectedIndex = 0;\n            }\n            else\n            {\n                selectedIndex = (int)selectedMaterial.Value;\n            }\n            m_selectVoxelMapMaterialCombobox.SelectItemByKey(selectedIndex);\n            m_selectVoxelMapMaterialCombobox.OnSelectItemDoubleClick += OnDoubleClick;\n            Controls.Add(m_selectVoxelMapMaterialCombobox);\n        }\n\n        void OnComboboxAsteroidTypeSelect()\n        {\n            Controls.Remove(m_selectAsteroidLabel);\n            Controls.Remove(m_selectMaterialLabel);\n            Controls.Remove(m_selectVoxelMapCombobox);\n            Controls.Remove(m_selectVoxelMapMaterialCombobox);\n            ReloadControls();\n        }\n\n        MyGuiAsteroidTypesEnum GetAsteroidType()\n        {\n            return (MyGuiAsteroidTypesEnum)Enum.ToObject(typeof(MyGuiAsteroidTypesEnum), m_selectAsteroidTypeCombobox.GetSelectedKey());\n        }\n\n        public override void OnOkClick(MyGuiControlButton sender)\n        {\n            base.OnOkClick(sender);\n\n            if (HasEntity())\n            {\n                if (m_changeMaterial.Checked)\n                {\n                    m_entity.VoxelMaterial = ((MyMwcVoxelMaterialsEnum)m_selectVoxelMapMaterialCombobox.GetSelectedKey());\n                }\n                \n                float x,y,z;\n                if (float.TryParse(m_positionX.Text, out x) && float.TryParse(m_positionY.Text, out y) && float.TryParse(m_positionZ.Text, out z))\n\t            {\n                    m_entity.SetPosition(new Vector3(x, y, z));\n\t            }\n            }\n            else\n            {\n                if (GetAsteroidType() == MyGuiAsteroidTypesEnum.VOXEL)\n                {\n                    MyMwcObjectBuilder_SmallShip_TypesEnum shipType = (MyMwcObjectBuilder_SmallShip_TypesEnum)\n                        Enum.ToObject(typeof(MyMwcObjectBuilder_SmallShip_TypesEnum), m_selectVoxelMapCombobox.GetSelectedKey());\n                    MyMwcVoxelFilesEnum voxelFileEnum = (MyMwcVoxelFilesEnum)\n                        Enum.ToObject(typeof(MyMwcVoxelFilesEnum), m_selectVoxelMapCombobox.GetSelectedKey());\n                    MyMwcVoxelMaterialsEnum materialEnum = (MyMwcVoxelMaterialsEnum)\n                        Enum.ToObject(typeof(MyMwcVoxelMaterialsEnum), m_selectVoxelMapMaterialCombobox.GetSelectedKey());\n\n                    MyMwcObjectBuilder_VoxelMap voxelMapBuilder = MyMwcObjectBuilder_Base.CreateNewObject(MyMwcObjectBuilderTypeEnum.VoxelMap, null) as MyMwcObjectBuilder_VoxelMap;\n                    voxelMapBuilder.VoxelMaterial = materialEnum;\n                    voxelMapBuilder.VoxelFile = voxelFileEnum;\n                    MyEditor.Static.CreateFromObjectBuilder(voxelMapBuilder, Matrix.CreateWorld(m_newObjectPosition, Vector3.Forward, Vector3.Up), m_screenPosition);\n                }\n                else if (GetAsteroidType() == MyGuiAsteroidTypesEnum.STATIC)\n                {\n                    MyMwcObjectBuilder_StaticAsteroid_TypesEnum staticAsteroidType = (MyMwcObjectBuilder_StaticAsteroid_TypesEnum)\n                        Enum.ToObject(typeof(MyMwcObjectBuilder_StaticAsteroid_TypesEnum), m_selectVoxelMapCombobox.GetSelectedKey());\n\n                    MyMwcVoxelMaterialsEnum? materialEnum = null;\n                    int materialKey = m_selectVoxelMapMaterialCombobox.GetSelectedKey();\n                    if (materialKey != -1)\n                    {\n                        materialEnum = (MyMwcVoxelMaterialsEnum)Enum.ToObject(typeof(MyMwcVoxelMaterialsEnum), materialKey);\n                    }\n\n                    MyMwcObjectBuilder_StaticAsteroid staticAsteroidBuilder = new MyMwcObjectBuilder_StaticAsteroid(staticAsteroidType, materialEnum);\n                    MyEditor.Static.CreateFromObjectBuilder(staticAsteroidBuilder, Matrix.CreateWorld(m_newObjectPosition, Vector3.Forward, Vector3.Up), m_screenPosition);\n                }\n            }\n\n            MyGuiManager.CloseAllScreensExcept(MyGuiScreenGamePlay.Static);\n\n        }\n\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/ScreenEditor/Object3D/MyGuiScreenEditorCargoBox.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Entities.CargoBox;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Inventory;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.AppCode.Game.GUI.Helpers;\nusing SysUtils.Utils;\n\nnamespace MinerWars.AppCode.Game.GUI.ScreenEditor.Object3D\n{\n    class MyGuiScreenEditorCargoBox : MyGuiScreenEditorObject3DBase\n    {        \n        MyGuiControlCombobox m_cargoBoxTypeCombobox;        \n\n        private MyCargoBox CargoBox { get { return (MyCargoBox)m_entity; } }\n\n        public MyGuiScreenEditorCargoBox(MyCargoBox cargoBox)\n            : base(cargoBox, new Vector2(0.5f, 0.5f), MyGuiConstants.SCREEN_BACKGROUND_COLOR, null, MyTextsWrapperEnum.EditCargoBox)\n        {\n            Init();\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenEditorCargoBox\";\n        }\n\n        void Init()\n        {\n            m_enableBackgroundFade = true;\n            m_size = new Vector2(0.5f, 0.6f);\n\n            // Add screen title\n            AddCaption();                        \n\n            InitControls();\n            AddOkAndCancelButtonControls();\n        }\n\n        public void InitControls()\n        {\n            AddActivatedCheckbox(new Vector2(-0.07f,-0.1f), CargoBox.Activated);\n\n            AddIdTextBox(new Vector2(-0.16f, -0.15f), CargoBox.EntityId.Value.NumericValue);\n\n            m_cargoBoxTypeCombobox = new MyGuiControlCombobox(\n                this,\n                new Vector2(0, -0.2f),\n                MyGuiControlPreDefinedSize.LONGMEDIUM,\n                MyGuiConstants.COMBOBOX_BACKGROUND_COLOR,\n                MyGuiConstants.COMBOBOX_TEXT_SCALE,\n                6,\n                false,\n                false,\n                false);\n\n            foreach (MyMwcObjectBuilder_CargoBox_TypesEnum cargoBoxType in Enum.GetValues(typeof(MyMwcObjectBuilder_CargoBox_TypesEnum)))\n            {\n                var cargoBoxHelper = MyGuiObjectBuilderHelpers.GetGuiHelper(\n                    MyMwcObjectBuilderTypeEnum.CargoBox, (int) cargoBoxType);\n                m_cargoBoxTypeCombobox.AddItem((int)cargoBoxType, MyGuiManager.GetBlankTexture(), cargoBoxHelper.Description);\n            }\n            m_cargoBoxTypeCombobox.SortItemsByValueText();\n\n            m_cargoBoxTypeCombobox.SelectItemByKey((int) CargoBox.CargoBoxType);\n\n            Controls.Add(m_cargoBoxTypeCombobox);            \n        }        \n\n        public override void OnOkClick(MyGuiControlButton sender)\n        {\n            base.OnOkClick(sender);         \n\n            CargoBox.CargoBoxType = (MyMwcObjectBuilder_CargoBox_TypesEnum) m_cargoBoxTypeCombobox.GetSelectedKey();\n            CargoBox.Activate(m_activatedCheckbox.Checked, false);\n\n            this.CloseScreen();\n        }        \n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/ScreenEditor/Object3D/MyGuiScreenEditorDoors.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Managers.EntityManager.Entities.SubObjects;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing Microsoft.Xna.Framework;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Utils;\n\nnamespace MinerWars.AppCode.Game.GUI.ScreenEditor.Object3D\n{\n    class MyGuiScreenEditorDoors : MyGuiScreenEditorObject3DBase\n    {\n        MyGuiControlLabel m_label;\n        MyGuiControlCheckbox m_on;\n        Vector2? m_screenPosition;                \n\n        /// <summary>\n        /// Edit kinematic prefab\n        /// </summary>\n        /// <param name=\"prefabKinematic\">Kinematic prefab</param>\n        public MyGuiScreenEditorDoors(MyPrefabKinematic prefabKinematic)\n            : base(prefabKinematic, new Vector2(0.5f, 0.5f), MyGuiConstants.SCREEN_BACKGROUND_COLOR, null, MyTextsWrapperEnum.EditPrefabKinematic)\n        {\n            Init();\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenEditorDoors\";\n        }\n\n        private MyPrefabKinematic PrefabKinematic\n        {\n            get \n            {\n                return (MyPrefabKinematic)m_entity;\n            }\n        }\n\n        void Init()\n        {\n            m_enableBackgroundFade = true;\n            m_size = new Vector2(0.92f, 0.95f);\n\n            // Add screen title\n            AddCaption();\n\n            Vector2 originDelta = new Vector2(0.02f, 0);\n            Vector2 controlsOriginLeft = GetControlsOriginLeftFromScreenSize() + originDelta;\n            Vector2 controlsOriginRight = GetControlsOriginRightFromScreenSize() + originDelta;\n\n            m_label = new MyGuiControlLabel(this, controlsOriginLeft, null, MyTextsWrapperEnum.On, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER);\n            Controls.Add(m_label);\n            m_on = new MyGuiControlCheckbox(this, controlsOriginLeft + new Vector2(0.1f, 0f), PrefabKinematic.CanOpen, MyGuiConstants.CHECKBOX_BACKGROUND_COLOR);\n            Controls.Add(m_on);\n\n            AddOkAndCancelButtonControls();            \n        }                \n\n        public override void OnOkClick(MyGuiControlButton sender)\n        {\n            base.OnOkClick(sender);\n\n            if (PrefabKinematic.CanOpen != m_on.Checked)\n            {\n                PrefabKinematic.CanOpen = m_on.Checked;\n            }\n\n            MyGuiManager.CloseAllScreensExcept(MyGuiScreenGamePlay.Static);\n\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/ScreenEditor/Object3D/MyGuiScreenEditorDummyPoint.cs",
    "content": "﻿using System;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Editor;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Entities.InfluenceSpheres;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.InfluenceSpheres;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing System.Text;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.AppCode.Game.TransparentGeometry.Particles;\nusing MinerWars.AppCode.Game.GUI.RichControls;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.AppCode.Game.GUI.Helpers;\nusing MinerWars.AppCode.Game.World.Global;\n\nnamespace MinerWars.AppCode.Game.GUI.ScreenEditor.Object3D\n{\n    // This screen is used for adding new DUST influence sphere into world - you choose color and opacity and how big it should be. It consists of 2 spheres - INNER, where the color\n    // remains same as selected on this screen and - OUTER, where color is lowering based on the distance from INNER sphere using interpolation.\n    // Dust spheres are interpolating their colors between themselves\n    class MyGuiScreenEditorDummyPoint : MyGuiScreenEditorObject3DBase\n    {\n        MyGuiControlSize m_widthSize;\n        MyGuiControlSize m_heightSize;\n        MyGuiControlSize m_depthSize;\n\n        MyGuiControlCombobox m_typeComboBox;\n\n        MyGuiControlCheckbox m_colorArea;\n        MyGuiControlCheckbox m_playerStart;\n        MyGuiControlCheckbox m_mothershipStart;\n        MyGuiControlCheckbox m_detector;\n        MyGuiControlCheckbox m_sideMission;\n        MyGuiControlCheckbox m_safeArea;\n        MyGuiControlCheckbox m_particleEffect;\n        MyGuiControlCheckbox m_survivePrefabDestruction;\n        MyGuiControlCheckbox m_respawnPoint;\n        MyGuiControlCheckbox m_enabled;\n        MyGuiControlCheckbox m_textureQuad;\n        MyGuiControlCheckbox m_note;\n\n        MyGuiControlLabel m_colorAreaLabel;\n        MyGuiControlLabel m_playerStartLabel;\n        MyGuiControlLabel m_mothershipStartLabel;\n        MyGuiControlLabel m_detectorLabel;\n        MyGuiControlLabel m_sideMissionLabel;\n        MyGuiControlLabel m_safeAreaLabel;\n        MyGuiControlLabel m_particleEffectLabel;\n        MyGuiControlLabel m_survivePrefabDestructionLabel;\n        MyGuiControlLabel m_respawnPointLabel;\n        MyGuiControlLabel m_enabledLabel;\n        MyGuiControlLabel m_textureQuadLabel;\n        MyGuiControlLabel m_noteLabel;\n\n        MyGuiControlSlider m_redSlider;\n        MyGuiControlSlider m_blueSlider;\n        MyGuiControlSlider m_greenSlider;\n        MyGuiControlSlider m_alphaSlider;\n\n        MyGuiControlLabel m_redSliderLabel;\n        MyGuiControlLabel m_blueSliderLabel;\n        MyGuiControlLabel m_greenSliderLabel;\n        MyGuiControlLabel m_alphaSliderLabel;\n        MyGuiControlLabel m_alphaSliderValueLabel;\n\n        MyGuiControlLabel m_userScaleSliderLabel;\n        MyGuiControlSlider m_userScaleSlider;\n        MyGuiControlLabel m_userScaleLabel;\n\n        MyGuiControlCombobox m_particleCombo;\n        MyGuiControlCombobox m_respawnPointCombo;\n        MyGuiControlCombobox m_secretCombo;\n\n        MyGuiControlLabel m_nameLabel;\n        MyGuiControlTextbox m_nameTextBox;\n\n        MyDummyPoint DummyPoint { get { return (MyDummyPoint)m_entity; } }\n\n        bool m_canUpdateValues = true;\n\n        public MyGuiScreenEditorDummyPoint(Vector2? screenPosition)\n            : base(new Vector2(0.5f, 0.5f), MyGuiConstants.SCREEN_BACKGROUND_COLOR, null, MyTextsWrapperEnum.DustInfluenceSphereType, screenPosition)\n        {\n            Init();\n        }\n\n        public MyGuiScreenEditorDummyPoint(MyDummyPoint dummyPoint)\n            : base(dummyPoint, new Vector2(0.5f, 0.5f), MyGuiConstants.SCREEN_BACKGROUND_COLOR, null, MyTextsWrapperEnum.DummyPoint)\n        {\n            Init();\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenEditorDummyPoint\";\n        }\n\n        void Init()\n        {\n            m_enableBackgroundFade = true;\n            m_size = new Vector2(0.8f, 0.2f + (12 * MyGuiConstants.MENU_BUTTONS_POSITION_DELTA.Y));\n            Vector2 controlsOriginLeft = GetControlsOriginLeftFromScreenSize() + new Vector2(0.05f, 2 * CONTROLS_DELTA.Y + 0.03f);\n            Vector2 sliderOffset = new Vector2(0.25f, 0f);\n\n            // First create controls\n            CreateControls(controlsOriginLeft, sliderOffset);\n\n            //m_size = new Vector2(0.7f, 0.15f + (11 * MyGuiConstants.MENU_BUTTONS_POSITION_DELTA.Y));\n\n            // Add screen title\n            AddCaption(new Vector2(0, 0.007f));\n            AddOkButtonControl(new Vector2(0, -0.02f));\n        }\n\n        void CreateControls(Vector2 controlsOrigin, Vector2 sliderOffset)\n        {            \n            m_nameLabel = new MyGuiControlLabel(this, controlsOrigin - new Vector2(0, 2 * CONTROLS_DELTA.Y), null, MyTextsWrapperEnum.Name, \n                MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER);\n\n            m_nameTextBox = new MyGuiControlTextbox(this, controlsOrigin - new Vector2(-0.2f, 2 * CONTROLS_DELTA.Y), MyGuiControlPreDefinedSize.MEDIUM,\n                DummyPoint.Name ?? String.Empty, 512, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiControlTextboxType.NORMAL);\n            m_nameTextBox.TextChanged = OnTextChange;\n\n            Controls.Add(m_nameLabel);\n            Controls.Add(m_nameTextBox);\n\n            m_typeComboBox = new MyGuiControlCombobox(this, controlsOrigin - new Vector2(-0.25f, CONTROLS_DELTA.Y), MyGuiControlPreDefinedSize.MEDIUM, MyGuiConstants.COMBOBOX_BACKGROUND_COLOR, MyGuiConstants.COMBOBOX_TEXT_SCALE);\n            m_typeComboBox.AddItem(0, new StringBuilder(\"Box\"));\n            m_typeComboBox.AddItem(1, new StringBuilder(\"Sphere\"));\n            m_typeComboBox.OnSelect += new MyGuiControlCombobox.OnComboBoxSelectCallback(m_typeComboBox_OnSelect);\n            Controls.Add(m_typeComboBox);\n            MyGuiControlLabel typeLabel = new MyGuiControlLabel(this, controlsOrigin - new Vector2(-0.0f, CONTROLS_DELTA.Y), null, MyTextsWrapperEnum.Width, MyGuiConstants.LABEL_TEXT_COLOR,\n                MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER);\n            typeLabel.UpdateText(\"Type\");\n            Controls.Add(typeLabel);\n\n            float checkBoxOffset = 0.507f;\n            //Enabled\n            Controls.Add(new MyGuiControlLabel(this, controlsOrigin - new Vector2(-checkBoxOffset, 2 * CONTROLS_DELTA.Y), null, MyTextsWrapperEnum.Enabled, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n            m_enabled = new MyGuiControlCheckbox(this, controlsOrigin - new Vector2(-checkBoxOffset, 2 * CONTROLS_DELTA.Y) + new Vector2(0.1f, 0f), false, MyGuiConstants.CHECKBOX_BACKGROUND_COLOR);\n            m_enabled.OnCheck += OnEnabledChange;\n            Controls.Add(m_enabled);\n\n            // Active\n            AddActivatedCheckbox(controlsOrigin - new Vector2(-checkBoxOffset, CONTROLS_DELTA.Y), DummyPoint.Activated);\n\n            float sliderMax = 50000;\n\n            //Width slider            \n            m_widthSize = new MyGuiControlSize(this, controlsOrigin + new Vector2(0.35f, 0f), new Vector2(0.7f, MyGuiConstants.SLIDER_HEIGHT), Vector4.Zero, null, 0f, 0.1f, sliderMax, MyTextsWrapper.Get(MyTextsWrapperEnum.Width), MyGuiSizeEnumFlags.All, sliderOffset.X);\n            m_widthSize.OnValueChange += OnWidthChange;\n            Controls.Add(m_widthSize);\n\n            //Height slider            \n            m_heightSize = new MyGuiControlSize(this, controlsOrigin + new Vector2(0.35f, 0f) + 1 * CONTROLS_DELTA, new Vector2(0.7f, MyGuiConstants.SLIDER_HEIGHT), Vector4.Zero, null, 0f, 0.1f, sliderMax, MyTextsWrapper.Get(MyTextsWrapperEnum.Height), MyGuiSizeEnumFlags.All, sliderOffset.X);\n            m_heightSize.OnValueChange += OnHeightChange;\n            Controls.Add(m_heightSize);\n\n            //Depth slider            \n            m_depthSize = new MyGuiControlSize(this, controlsOrigin + new Vector2(0.35f, 0f) + 2 * CONTROLS_DELTA, new Vector2(0.7f, MyGuiConstants.SLIDER_HEIGHT), Vector4.Zero, null, 0f, 0.1f, sliderMax, MyTextsWrapper.Get(MyTextsWrapperEnum.Depth), MyGuiSizeEnumFlags.All, sliderOffset.X);\n            m_depthSize.OnValueChange += OnDepthChange;\n            Controls.Add(m_depthSize);\n\n            MyGuiControlLabel idLabel = new MyGuiControlLabel(this, controlsOrigin + 3 * CONTROLS_DELTA, null, MyTextsWrapperEnum.Depth, MyGuiConstants.LABEL_TEXT_COLOR,\n                    MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER);\n            Controls.Add(idLabel);\n            idLabel.UpdateText(\"ID: \" + m_entity.EntityId.ToString());\n\n            int controlsDelta = 4;\n\n            // Flags\n            m_colorArea = new MyGuiControlCheckbox(this, controlsOrigin + controlsDelta++ * CONTROLS_DELTA, false, MyGuiConstants.RADIOBUTTON_BACKGROUND_COLOR);\n            m_colorArea.OnCheck += OnFlagChange;\n            m_colorAreaLabel = new MyGuiControlLabel(this, controlsOrigin + new Vector2(MyGuiConstants.RADIOBUTTON_SIZE.X, 0.0f) + 4 * CONTROLS_DELTA, null, MyTextsWrapperEnum.ColorArea,\n                MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER);\n            Controls.Add(m_colorArea);\n            Controls.Add(m_colorAreaLabel);\n\n            m_playerStart = new MyGuiControlCheckbox(this, controlsOrigin + controlsDelta * CONTROLS_DELTA, false, MyGuiConstants.RADIOBUTTON_BACKGROUND_COLOR);\n            m_playerStart.OnCheck += OnPlayerStartFlagChange;\n            m_playerStartLabel = new MyGuiControlLabel(this, controlsOrigin + new Vector2(MyGuiConstants.RADIOBUTTON_SIZE.X, 0.0f) + controlsDelta++ * CONTROLS_DELTA, null, MyTextsWrapperEnum.PlayerStart,\n                MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER);\n            Controls.Add(m_playerStart);\n            Controls.Add(m_playerStartLabel);\n\n            m_mothershipStart = new MyGuiControlCheckbox(this, controlsOrigin + controlsDelta * CONTROLS_DELTA, false, MyGuiConstants.RADIOBUTTON_BACKGROUND_COLOR);\n            m_mothershipStart.OnCheck += OnMothershipStartFlagChange;\n            m_mothershipStartLabel = new MyGuiControlLabel(this, controlsOrigin + new Vector2(MyGuiConstants.RADIOBUTTON_SIZE.X, 0.0f) + controlsDelta++ * CONTROLS_DELTA, null, MyTextsWrapperEnum.MothershipStart,\n                MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER);\n            Controls.Add(m_mothershipStart);\n            Controls.Add(m_mothershipStartLabel);\n\n            m_detector = new MyGuiControlCheckbox(this, controlsOrigin + controlsDelta * CONTROLS_DELTA, false, MyGuiConstants.RADIOBUTTON_BACKGROUND_COLOR);\n            m_detector.OnCheck += OnFlagChange;\n            m_detectorLabel = new MyGuiControlLabel(this, controlsOrigin + new Vector2(MyGuiConstants.RADIOBUTTON_SIZE.X, 0.0f) + controlsDelta++ * CONTROLS_DELTA, null, MyTextsWrapperEnum.Detector,\n                MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER);\n            Controls.Add(m_detector);\n            Controls.Add(m_detectorLabel);\n\n            m_sideMission = new MyGuiControlCheckbox(this, controlsOrigin + controlsDelta * CONTROLS_DELTA, false, MyGuiConstants.RADIOBUTTON_BACKGROUND_COLOR);\n            m_sideMission.OnCheck += OnFlagChange;\n            m_sideMissionLabel = new MyGuiControlLabel(this, controlsOrigin + new Vector2(MyGuiConstants.RADIOBUTTON_SIZE.X, 0.0f) + controlsDelta++ * CONTROLS_DELTA, null, MyTextsWrapperEnum.SideMission,\n                MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER);\n            Controls.Add(m_sideMission);\n            Controls.Add(m_sideMissionLabel);\n\n            m_particleEffect = new MyGuiControlCheckbox(this, controlsOrigin + controlsDelta * CONTROLS_DELTA, false, MyGuiConstants.RADIOBUTTON_BACKGROUND_COLOR);\n            m_particleEffect.OnCheck += OnFlagChange;\n            m_particleEffectLabel = new MyGuiControlLabel(this, controlsOrigin + new Vector2(MyGuiConstants.RADIOBUTTON_SIZE.X, 0.0f) + controlsDelta++ * CONTROLS_DELTA, null, MyTextsWrapperEnum.ParticleEffect,\n                MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER);\n            Controls.Add(m_particleEffectLabel);\n            Controls.Add(m_particleEffect);\n\n            m_respawnPoint = new MyGuiControlCheckbox(this, controlsOrigin + controlsDelta * CONTROLS_DELTA, false, MyGuiConstants.RADIOBUTTON_BACKGROUND_COLOR);\n            m_respawnPoint.OnCheck += OnFlagChange;\n            m_respawnPointLabel = new MyGuiControlLabel(this, controlsOrigin + new Vector2(MyGuiConstants.RADIOBUTTON_SIZE.X, 0.0f) + controlsDelta++ * CONTROLS_DELTA, null, MyTextsWrapperEnum.RespawnPoint,\n                MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER);\n            Controls.Add(m_respawnPointLabel);\n            Controls.Add(m_respawnPoint);\n\n            m_safeArea = new MyGuiControlCheckbox(this, controlsOrigin + controlsDelta * CONTROLS_DELTA, false, MyGuiConstants.RADIOBUTTON_BACKGROUND_COLOR);\n            m_safeArea.OnCheck += OnFlagChange;\n            m_safeAreaLabel = new MyGuiControlLabel(this, controlsOrigin + new Vector2(MyGuiConstants.RADIOBUTTON_SIZE.X, 0.0f) + controlsDelta++ * CONTROLS_DELTA, null, MyTextsWrapperEnum.SafeArea,\n                MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER);\n            Controls.Add(m_safeArea);\n            Controls.Add(m_safeAreaLabel);\n\n            m_survivePrefabDestruction = new MyGuiControlCheckbox(this, controlsOrigin + controlsDelta * CONTROLS_DELTA, false, MyGuiConstants.RADIOBUTTON_BACKGROUND_COLOR);\n            m_survivePrefabDestruction.OnCheck += OnFlagChange;\n            m_survivePrefabDestructionLabel = new MyGuiControlLabel(this, controlsOrigin + new Vector2(MyGuiConstants.RADIOBUTTON_SIZE.X, 0.0f) + controlsDelta++ * CONTROLS_DELTA, null, MyTextsWrapperEnum.SurvivePrefabDestruction,\n                MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER);\n            Controls.Add(m_survivePrefabDestructionLabel);\n            Controls.Add(m_survivePrefabDestruction);\n\n            m_textureQuad = new MyGuiControlCheckbox(this, controlsOrigin + controlsDelta * CONTROLS_DELTA, false, MyGuiConstants.RADIOBUTTON_BACKGROUND_COLOR);\n            m_textureQuad.OnCheck += OnFlagChange;\n            m_textureQuadLabel = new MyGuiControlLabel(this, controlsOrigin + new Vector2(MyGuiConstants.RADIOBUTTON_SIZE.X, 0.0f) + controlsDelta++ * CONTROLS_DELTA, null, MyTextsWrapperEnum.TextureQuad,\n                MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER);\n            Controls.Add(m_textureQuad);\n            Controls.Add(m_textureQuadLabel);\n\n            m_note = new MyGuiControlCheckbox(this, controlsOrigin + controlsDelta * CONTROLS_DELTA, false, MyGuiConstants.RADIOBUTTON_BACKGROUND_COLOR);\n            m_note.OnCheck += OnFlagChange;\n            m_noteLabel = new MyGuiControlLabel(this, controlsOrigin + new Vector2(MyGuiConstants.RADIOBUTTON_SIZE.X, 0.0f) + controlsDelta++ * CONTROLS_DELTA, null, MyTextsWrapperEnum.Note,\n                MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER);\n            Controls.Add(m_note);\n            Controls.Add(m_noteLabel);\n\n            Vector2 columnOffset = new Vector2(0.15f, 0);\n            Vector2 labelColumnOffset = new Vector2(0.18f, 0);\n            // Red slider\n            m_redSliderLabel = new MyGuiControlLabel(this, labelColumnOffset + controlsOrigin + 4 * CONTROLS_DELTA, null, MyTextsWrapperEnum.Red, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER);\n            m_redSlider = new MyGuiControlSlider(this, columnOffset + controlsOrigin + sliderOffset + 4 * CONTROLS_DELTA, MyGuiConstants.SLIDER_WIDTH,\n               MyEditorConstants.COLOR_COMPONENT_MIN_VALUE, MyEditorConstants.COLOR_COMPONENT_MAX_VALUE, MyGuiConstants.SLIDER_BACKGROUND_COLOR,\n                new StringBuilder(), MyGuiConstants.SLIDER_WIDTH_LABEL, 0, MyGuiConstants.LABEL_TEXT_SCALE * 0.85f);\n            m_redSlider.OnChange = OnComponentChange;\n            Controls.Add(m_redSliderLabel);\n            Controls.Add(m_redSlider);\n\n            // Green slider\n            m_greenSliderLabel = new MyGuiControlLabel(this, labelColumnOffset + controlsOrigin + 5 * CONTROLS_DELTA, null, MyTextsWrapperEnum.Green, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER);\n            m_greenSlider = new MyGuiControlSlider(this, columnOffset + controlsOrigin + sliderOffset + 5 * CONTROLS_DELTA, MyGuiConstants.SLIDER_WIDTH,\n               MyEditorConstants.COLOR_COMPONENT_MIN_VALUE, MyEditorConstants.COLOR_COMPONENT_MAX_VALUE, MyGuiConstants.SLIDER_BACKGROUND_COLOR,\n                new StringBuilder(), MyGuiConstants.SLIDER_WIDTH_LABEL, 0, MyGuiConstants.LABEL_TEXT_SCALE * 0.85f);\n            m_greenSlider.OnChange = OnComponentChange;\n            Controls.Add(m_greenSliderLabel);\n            Controls.Add(m_greenSlider);\n\n            // Blue slider\n            m_blueSliderLabel = new MyGuiControlLabel(this, labelColumnOffset + controlsOrigin + 6 * CONTROLS_DELTA, null, MyTextsWrapperEnum.Blue, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER);\n            m_blueSlider = new MyGuiControlSlider(this, columnOffset + controlsOrigin + sliderOffset + 6 * CONTROLS_DELTA, MyGuiConstants.SLIDER_WIDTH,\n               MyEditorConstants.COLOR_COMPONENT_MIN_VALUE, MyEditorConstants.COLOR_COMPONENT_MAX_VALUE, MyGuiConstants.SLIDER_BACKGROUND_COLOR,\n                new StringBuilder(), MyGuiConstants.SLIDER_WIDTH_LABEL, 0, MyGuiConstants.LABEL_TEXT_SCALE * 0.85f);\n            m_blueSlider.OnChange = OnComponentChange;\n            Controls.Add(m_blueSliderLabel);\n            Controls.Add(m_blueSlider);\n\n            // Alpha slider\n            m_alphaSliderLabel = new MyGuiControlLabel(this, labelColumnOffset + controlsOrigin + 7 * CONTROLS_DELTA, null, MyTextsWrapperEnum.Alpha, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER);\n            m_alphaSlider = new MyGuiControlSlider(this, columnOffset + controlsOrigin + sliderOffset + 7 * CONTROLS_DELTA, MyGuiConstants.SLIDER_WIDTH,\n               MyEditorConstants.COLOR_COMPONENT_MIN_VALUE, MyEditorConstants.COLOR_COMPONENT_MAX_VALUE, MyGuiConstants.SLIDER_BACKGROUND_COLOR,\n                new StringBuilder(), MyGuiConstants.SLIDER_WIDTH_LABEL, 0, MyGuiConstants.LABEL_TEXT_SCALE * 0.85f);\n            m_alphaSlider.OnChange = OnComponentChange;\n            m_alphaSliderValueLabel = new MyGuiControlLabel(this, columnOffset + controlsOrigin + 7 * CONTROLS_DELTA + new Vector2(0.4f, 0), null, new StringBuilder(\"0\"), MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER);\n\n            // scale slider\n            m_userScaleSliderLabel = new MyGuiControlLabel(this, labelColumnOffset + controlsOrigin + 8 * CONTROLS_DELTA, null, MyTextsWrapperEnum.UserScale, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER);\n            m_userScaleSlider = new MyGuiControlSlider(this, columnOffset + controlsOrigin + sliderOffset + 8 * CONTROLS_DELTA, MyGuiConstants.SLIDER_WIDTH,\n               0.01f, 3.9f, MyGuiConstants.SLIDER_BACKGROUND_COLOR,\n                new StringBuilder(), MyGuiConstants.SLIDER_WIDTH_LABEL, 0, MyGuiConstants.LABEL_TEXT_SCALE * 0.85f);\n            m_userScaleSlider.OnChange = OnComponentChange;\n            m_userScaleLabel = new MyGuiControlLabel(this, columnOffset + controlsOrigin + 8 * CONTROLS_DELTA + new Vector2(0.4f, 0), null, new StringBuilder(\"0\"), MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER);\n\n            Controls.Add(m_alphaSliderLabel);\n            Controls.Add(m_alphaSliderValueLabel);\n            Controls.Add(m_alphaSlider);\n\n            Controls.Add(m_userScaleSliderLabel);\n            Controls.Add(m_userScaleSlider);\n            Controls.Add(m_userScaleLabel);\n\n            // Particle effect\n            //m_particleNameLabel = new MyGuiControlLabel(this, columnOffset + controlsOrigin + 4 * CONTROLS_DELTA, null, MyTextsWrapperEnum.ParticleEffect, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER);\n            m_particleCombo = new MyGuiControlCombobox(this, columnOffset + controlsOrigin + 9 * CONTROLS_DELTA + sliderOffset, MyGuiControlPreDefinedSize.MEDIUM,\n                MyGuiConstants.COMBOBOX_BACKGROUND_COLOR, MyGuiConstants.COMBOBOX_TEXT_SCALE, 5, false, false, false);\n            foreach (var p in MyParticlesLibrary.GetParticleEffects())\n            {\n                m_particleCombo.AddItem(p.GetID(), new StringBuilder(p.Name));\n                m_particleCombo.SortItemsByValueText();\n            }\n            m_particleCombo.OnSelect += new MyGuiControlCombobox.OnComboBoxSelectCallback(m_particleCombo_OnSelect);\n            //Controls.Add(m_particleNameLabel);\n            Controls.Add(m_particleCombo);\n\n            m_respawnPointCombo = new MyGuiControlCombobox(this, columnOffset + controlsOrigin + 10 * CONTROLS_DELTA + sliderOffset,\n                MyGuiControlPreDefinedSize.MEDIUM, MyGuiConstants.COMBOBOX_BACKGROUND_COLOR, MyGuiConstants.COMBOBOX_TEXT_SCALE, 4);\n            foreach (MyMwcObjectBuilder_FactionEnum enumValue in MyGuiSmallShipHelpers.MyMwcObjectBuilder_SmallShip_ShipFactionNationalityEnumValues)\n            {\n                MyGuiHelperBase factionNationalityHelper = MyGuiSmallShipHelpers.GetMyGuiSmallShipFactionNationality(enumValue);\n                m_respawnPointCombo.AddItem((int)enumValue, null, factionNationalityHelper.Description);\n            }\n            m_respawnPointCombo.OnSelect += new MyGuiControlCombobox.OnComboBoxSelectCallback(m_repawnPointCombo_OnSelect);\n            Controls.Add(m_respawnPointCombo);\n\n            m_secretCombo = new MyGuiControlCombobox(this, columnOffset + controlsOrigin + 7 * CONTROLS_DELTA + sliderOffset,\n                MyGuiControlPreDefinedSize.MEDIUM, MyGuiConstants.COMBOBOX_BACKGROUND_COLOR, MyGuiConstants.COMBOBOX_TEXT_SCALE, 4);\n\n            m_secretCombo.AddItem(0, null, new StringBuilder(\"No secret\"));\n            foreach (var room in MySecretRooms.SecretRooms)\n            {\n                m_secretCombo.AddItem(room.Key, null, new StringBuilder(room.Value));\n            }\n            m_secretCombo.OnSelect += new MyGuiControlCombobox.OnComboBoxSelectCallback(m_secretCombo_OnSelect);\n            Controls.Add(m_secretCombo);\n\n            UpdateValues();\n        }\n\n        void m_secretCombo_OnSelect()\n        {\n            if (DummyPoint.DummyFlags == MyDummyPointFlags.DETECTOR)\n            {\n                DummyPoint.Argument = m_secretCombo.GetSelectedKey();\n            }\n        }\n\n        void m_particleCombo_OnSelect()\n        {\n            DummyPoint.ParticleID = m_particleCombo.GetSelectedKey();\n            UpdateValues();\n        }\n\n        void m_repawnPointCombo_OnSelect()\n        {\n            DummyPoint.RespawnPointFaction = (MyMwcObjectBuilder_FactionEnum)m_respawnPointCombo.GetSelectedKey();\n        }\n\n        void OnTextChange(object sender, EventArgs args)\n        {\n            DummyPoint.SetName(m_nameTextBox.Text);\n            UpdateValues();\n        }\n\n        void OnEnabledChange(MyGuiControlCheckbox sender)\n        {\n            DummyPoint.Enabled = sender.Checked;\n        }\n\n        void OnFlagChange(MyGuiControlCheckbox sender)\n        {\n            if (!m_canUpdateValues)\n                return;\n\n            if (m_colorArea.Checked) DummyPoint.DummyFlags |= MyDummyPointFlags.COLOR_AREA;\n            else DummyPoint.DummyFlags &= ~MyDummyPointFlags.COLOR_AREA;\n\n            if (m_detector.Checked) DummyPoint.DummyFlags |= MyDummyPointFlags.DETECTOR;\n            else DummyPoint.DummyFlags &= ~MyDummyPointFlags.DETECTOR;\n\n            if (m_playerStart.Checked) DummyPoint.DummyFlags |= MyDummyPointFlags.PLAYER_START;\n            else DummyPoint.DummyFlags &= ~MyDummyPointFlags.PLAYER_START;\n\n            if (m_mothershipStart.Checked) DummyPoint.DummyFlags |= MyDummyPointFlags.MOTHERSHIP_START;\n            else DummyPoint.DummyFlags &= ~MyDummyPointFlags.MOTHERSHIP_START;\n\n            if (m_sideMission.Checked) DummyPoint.DummyFlags |= MyDummyPointFlags.SIDE_MISSION;\n            else DummyPoint.DummyFlags &= ~MyDummyPointFlags.SIDE_MISSION;\n\n            if (m_safeArea.Checked)\n            {\n                DummyPoint.DummyFlags |= MyDummyPointFlags.SAFE_AREA;\n            }\n            else DummyPoint.DummyFlags &= ~MyDummyPointFlags.SAFE_AREA;\n\n            if (m_particleEffect.Checked)\n            {\n                DummyPoint.DummyFlags |= MyDummyPointFlags.PARTICLE;\n            }\n            else\n            {\n                DummyPoint.DisableParticleEffect();\n            }\n\n            if (m_survivePrefabDestruction.Checked) DummyPoint.DummyFlags |= MyDummyPointFlags.SURIVE_PREFAB_DESTRUCTION;\n            else DummyPoint.DummyFlags &= ~MyDummyPointFlags.SURIVE_PREFAB_DESTRUCTION;\n\n            if (m_respawnPoint.Checked) DummyPoint.DummyFlags |= MyDummyPointFlags.RESPAWN_POINT;\n            else DummyPoint.DummyFlags &= ~MyDummyPointFlags.RESPAWN_POINT;\n\n            if (m_textureQuad.Checked) DummyPoint.DummyFlags |= MyDummyPointFlags.TEXTURE_QUAD;\n            else DummyPoint.DummyFlags &= ~MyDummyPointFlags.TEXTURE_QUAD;\n\n            if (m_note.Checked) DummyPoint.DummyFlags |= MyDummyPointFlags.NOTE;\n            else DummyPoint.DummyFlags &= ~MyDummyPointFlags.NOTE;\n\n            if (DummyPoint.DummyFlags == MyDummyPointFlags.DETECTOR)\n            {\n                DummyPoint.Argument = m_secretCombo.GetSelectedKey();\n            }\n\n            UpdateValues();\n\n            if (m_safeArea.Checked)\n            {\n                m_typeComboBox.SelectItemByKey(1);//select Sphere\n            }\n        }\n\n        void OnPlayerStartFlagChange(MyGuiControlCheckbox sender)\n        {\n            if (!m_canUpdateValues)\n                return;\n\n            // Make sure there's only one start location per sector\n            if (m_playerStart.Checked && (DummyPoint.DummyFlags & MyDummyPointFlags.PLAYER_START) == 0)\n            {\n                foreach (var entity in MyEntities.GetEntities())\n                {\n                    var dummyPoint = entity as MyDummyPoint;\n                    if (dummyPoint != null && (dummyPoint.DummyFlags & MyDummyPointFlags.PLAYER_START) > 0)\n                    {\n                        MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.EntryPointAlreadyDefined, MyTextsWrapperEnum.MessageBoxCaptionError,\n                            MyTextsWrapperEnum.Yes, MyTextsWrapperEnum.Cancel, mbReturn =>\n                            {\n                                if (mbReturn == MyGuiScreenMessageBoxCallbackEnum.YES)\n                                {\n                                    MyEditorGizmo.ClearSelection();\n                                    MyEditorGizmo.AddEntityToSelection(dummyPoint);\n                                    CloseScreen();\n                                    return;\n                                }\n                                else\n                                {\n                                    // We want to enable multiple start dummies\n                                    //m_playerStart.Checked = false;\n                                }\n                            }));\n                    }\n                }\n            }\n\n            if (m_playerStart.Checked)\n            {\n                DummyPoint.DummyFlags |= MyDummyPointFlags.PLAYER_START;\n            }\n            else\n            {\n                DummyPoint.DummyFlags &= ~MyDummyPointFlags.PLAYER_START;\n            }\n\n            if (m_playerStart.Checked)\n            {\n                DummyPoint.DummyFlags |= MyDummyPointFlags.PLAYER_START;\n            }\n            else\n            {\n                DummyPoint.DummyFlags &= ~MyDummyPointFlags.PLAYER_START;\n            }\n\n            UpdateValues();\n        }\n\n\n        void OnMothershipStartFlagChange(MyGuiControlCheckbox sender)\n        {\n            if (!m_canUpdateValues)\n                return;\n\n            // Make sure there's only one start location per sector\n            if (m_mothershipStart.Checked && (DummyPoint.DummyFlags & MyDummyPointFlags.MOTHERSHIP_START) == 0)\n            {\n                foreach (var entity in MyEntities.GetEntities())\n                {\n                    var dummyPoint = entity as MyDummyPoint;\n                    if (dummyPoint != null && (dummyPoint.DummyFlags & MyDummyPointFlags.MOTHERSHIP_START) > 0)\n                    {\n                        MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.EntryPointAlreadyDefined, MyTextsWrapperEnum.MessageBoxCaptionError,\n                            MyTextsWrapperEnum.Yes, MyTextsWrapperEnum.Cancel, mbReturn =>\n                            {\n                                if (mbReturn == MyGuiScreenMessageBoxCallbackEnum.YES)\n                                {\n                                    MyEditorGizmo.ClearSelection();\n                                    MyEditorGizmo.AddEntityToSelection(dummyPoint);\n                                    CloseScreen();\n                                }\n                                else\n                                {\n                                    m_mothershipStart.Checked = false;\n                                }\n                            }));\n                        return;\n                    }\n                }\n            }\n\n            if (m_mothershipStart.Checked)\n            {\n                DummyPoint.DummyFlags |= MyDummyPointFlags.MOTHERSHIP_START;\n            }\n            else\n            {\n                DummyPoint.DummyFlags &= ~MyDummyPointFlags.MOTHERSHIP_START;\n            }\n\n            UpdateValues();\n        }\n\n        void OnComponentChange(MyGuiControlSlider sender)\n        {\n            if (!m_canUpdateValues)\n                return;\n\n            DummyPoint.Color = new Vector4(\n                m_redSlider.GetValue() / MyEditorConstants.COLOR_COMPONENT_MAX_VALUE,\n                m_greenSlider.GetValue() / MyEditorConstants.COLOR_COMPONENT_MAX_VALUE,\n                m_blueSlider.GetValue() / MyEditorConstants.COLOR_COMPONENT_MAX_VALUE,\n                m_alphaSlider.GetValue() / MyEditorConstants.COLOR_COMPONENT_MAX_VALUE);\n\n            DummyPoint.UserScale = m_userScaleSlider.GetValue();\n\n            UpdateValues();\n        }\n\n        void m_typeComboBox_OnSelect()\n        {\n            if (!m_canUpdateValues)\n                return;\n\n            if (m_typeComboBox.GetSelectedKey() == 0)\n            {\n                DummyPoint.Type = MyDummyPointType.Box;\n                DummyPoint.DummyFlags &= ~MyDummyPointFlags.SAFE_AREA;\n            }\n            else\n                DummyPoint.Type = MyDummyPointType.Sphere;\n\n            UpdateValues();\n        }\n\n        void OnWidthChange(MyGuiControlBase sender)\n        {\n            float width = ((MyGuiControlSize)sender).GetValue();\n            if (DummyPoint.Type == MyDummyPointType.Box)\n            {\n                Vector3 size = DummyPoint.Size;\n                DummyPoint.Size = new Vector3(width, size.Y, size.Z);\n            }\n            else\n            {\n                DummyPoint.Radius = width / 2.0f;\n            }\n        }\n\n        void OnHeightChange(MyGuiControlBase sender)\n        {\n            float height = ((MyGuiControlSize)sender).GetValue();\n            Vector3 size = DummyPoint.Size;\n            DummyPoint.Size = new Vector3(size.X, height, size.Z);\n        }\n\n        void OnDepthChange(MyGuiControlBase sender)\n        {\n            float depth = ((MyGuiControlSize)sender).GetValue();\n            Vector3 size = DummyPoint.Size;\n            DummyPoint.Size = new Vector3(size.X, size.Y, depth);\n        }        \n\n        void UpdateValues()\n        {\n            if (!m_canUpdateValues)\n                return;\n\n            m_canUpdateValues = false;\n\n            m_nameTextBox.Text = DummyPoint.Name ?? String.Empty;\n\n            if (DummyPoint.Type == MyDummyPointType.Box)\n            {\n                m_heightSize.Visible = true;\n                m_depthSize.Visible = true;                \n\n                m_widthSize.SetValue(DummyPoint.Size.X);\n                m_heightSize.SetValue(DummyPoint.Size.Y);\n                m_depthSize.SetValue(DummyPoint.Size.Z);\n\n                m_widthSize.UpdateDescription(\"Width\");                \n            }\n            else\n            {\n                m_heightSize.Visible = false;\n                m_depthSize.Visible = false;\n\n                m_widthSize.UpdateDescription(\"Diameter\");\n\n                m_widthSize.SetValue(DummyPoint.Radius * 2);\n            }\n\n            if (DummyPoint.Type == MyDummyPointType.Box)\n                m_typeComboBox.SelectItemByIndex(0);\n            else\n                m_typeComboBox.SelectItemByIndex(1);\n\n            m_colorArea.Checked = (DummyPoint.DummyFlags & MyDummyPointFlags.COLOR_AREA) > 0;\n            m_playerStart.Checked = (DummyPoint.DummyFlags & MyDummyPointFlags.PLAYER_START) > 0;\n            m_mothershipStart.Checked = (DummyPoint.DummyFlags & MyDummyPointFlags.MOTHERSHIP_START) > 0;\n            m_detector.Checked = (DummyPoint.DummyFlags & MyDummyPointFlags.DETECTOR) > 0;\n            m_sideMission.Checked = (DummyPoint.DummyFlags & MyDummyPointFlags.SIDE_MISSION) > 0;\n            m_safeArea.Checked = (DummyPoint.DummyFlags & MyDummyPointFlags.SAFE_AREA) > 0;\n            m_particleEffect.Checked = (DummyPoint.DummyFlags & MyDummyPointFlags.PARTICLE) > 0;\n            m_survivePrefabDestruction.Checked = (DummyPoint.DummyFlags & MyDummyPointFlags.SURIVE_PREFAB_DESTRUCTION) > 0;\n            m_respawnPoint.Checked = (DummyPoint.DummyFlags & MyDummyPointFlags.RESPAWN_POINT) > 0;\n            m_enabled.Checked = (DummyPoint.PersistentFlags & CommonLIB.AppCode.ObjectBuilders.MyPersistentEntityFlags.Enabled) > 0;\n            m_textureQuad.Checked = (DummyPoint.DummyFlags & MyDummyPointFlags.TEXTURE_QUAD) > 0;\n            m_note.Checked = (DummyPoint.DummyFlags & MyDummyPointFlags.NOTE) > 0;\n\n            m_redSlider.Visible = m_colorArea.Checked || m_particleEffect.Checked;\n            m_redSliderLabel.Visible = m_colorArea.Checked || m_particleEffect.Checked;\n            m_greenSlider.Visible = m_colorArea.Checked || m_particleEffect.Checked;\n            m_greenSliderLabel.Visible = m_colorArea.Checked || m_particleEffect.Checked;\n            m_blueSlider.Visible = m_colorArea.Checked || m_particleEffect.Checked;\n            m_blueSliderLabel.Visible = m_colorArea.Checked || m_particleEffect.Checked;\n            m_alphaSlider.Visible = m_colorArea.Checked || m_particleEffect.Checked;\n            m_alphaSliderLabel.Visible = m_colorArea.Checked || m_particleEffect.Checked;\n            m_alphaSliderValueLabel.Visible = m_colorArea.Checked || m_particleEffect.Checked;\n            m_userScaleSliderLabel.Visible = m_particleEffect.Checked;\n            m_userScaleSlider.Visible = m_particleEffect.Checked;\n            m_userScaleLabel.Visible = m_particleEffect.Checked;\n\n            m_redSlider.SetValue(DummyPoint.Color.X * MyEditorConstants.COLOR_COMPONENT_MAX_VALUE);\n            m_greenSlider.SetValue(DummyPoint.Color.Y * MyEditorConstants.COLOR_COMPONENT_MAX_VALUE);\n            m_blueSlider.SetValue(DummyPoint.Color.Z * MyEditorConstants.COLOR_COMPONENT_MAX_VALUE);\n            m_alphaSlider.SetValue(DummyPoint.Color.W * MyEditorConstants.COLOR_COMPONENT_MAX_VALUE);\n            m_alphaSliderValueLabel.UpdateText(new Color(DummyPoint.Color).ToVector4().W.ToString(\"#,###0.000\", System.Globalization.CultureInfo.InvariantCulture));\n            m_userScaleSlider.SetValue(DummyPoint.UserScale);\n            m_userScaleLabel.UpdateText(DummyPoint.UserScale.ToString(\"#,###0.000\", System.Globalization.CultureInfo.InvariantCulture));\n\n            //m_particleCombo.Visible = m_particleEffect.Checked;\n            // m_particleNameLabel.Visible = m_particleEffect.Checked;\n            m_particleCombo.SelectItemByKey((int)DummyPoint.ParticleID);\n            m_respawnPointCombo.SelectItemByKey((int)DummyPoint.RespawnPointFaction);//hopefuly china\n\n            if (DummyPoint.DummyFlags == MyDummyPointFlags.DETECTOR)\n            {\n                m_secretCombo.Visible = true;\n                m_secretCombo.SelectItemByKey((int)DummyPoint.Argument);\n            }\n            else\n            {\n                m_secretCombo.Visible = false;\n            }\n\n            m_canUpdateValues = true;\n        }\n\n\n        public override void OnOkClick(MyGuiControlButton sender)\n        {\n            if (m_respawnPoint.Checked &&  m_respawnPointCombo.GetSelectedKey() == (int)MyMwcObjectBuilder_FactionEnum.None)\n            {\n                MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.PleaseSelectValidFaction, MyTextsWrapperEnum.InvalidFaction, MyTextsWrapperEnum.Ok, null));\n                return;\n            }\n\n            base.OnOkClick(sender);\n            DummyPoint.Activate(m_activatedCheckbox.Checked, false);\n            // close all opened screens except gameplay\n            MyGuiManager.CloseAllScreensExcept(MyGuiScreenGamePlay.Static);\n        }\n\n        public override bool Draw(float backgroundFadeAlpha)\n        {\n            if (base.Draw(backgroundFadeAlpha) == false) return false;\n\n            if (m_colorArea.Checked || m_particleEffect.Checked)\n            {\n                MyGuiManager.DrawSpriteBatch(MyGuiManager.GetBlankTexture(), GetPosition() + new Vector2(MyGuiConstants.SLIDER_WIDTH / 2 + 0.02f, 0) + m_redSlider.GetPosition(), MyGuiConstants.CHECKBOX_SIZE,\n                    new Color(m_redSlider.GetValue() / MyEditorConstants.COLOR_COMPONENT_MAX_VALUE, 0, 0), MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER);\n                MyGuiManager.DrawSpriteBatch(MyGuiManager.GetBlankTexture(), GetPosition() + new Vector2(MyGuiConstants.SLIDER_WIDTH / 2 + 0.02f, 0) + m_greenSlider.GetPosition(), MyGuiConstants.CHECKBOX_SIZE,\n                    new Color(0, m_greenSlider.GetValue() / MyEditorConstants.COLOR_COMPONENT_MAX_VALUE, 0), MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER);\n                MyGuiManager.DrawSpriteBatch(MyGuiManager.GetBlankTexture(), GetPosition() + new Vector2(MyGuiConstants.SLIDER_WIDTH / 2 + 0.02f, 0) + m_blueSlider.GetPosition(), MyGuiConstants.CHECKBOX_SIZE,\n                    new Color(0, 0, m_blueSlider.GetValue() / MyEditorConstants.COLOR_COMPONENT_MAX_VALUE), MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER);\n\n                float height = MyGuiConstants.CHECKBOX_SIZE.Y + CONTROLS_DELTA.Y * 2;\n                float width = MyGuiConstants.CHECKBOX_SIZE.X / MyGuiConstants.CHECKBOX_SIZE.Y * height;\n\n                MyGuiManager.DrawSpriteBatch(MyGuiManager.GetBlankTexture(),\n                    GetPosition() + new Vector2(MyGuiConstants.SLIDER_WIDTH / 2 + 0.04f + width / 2, 0) + m_greenSlider.GetPosition(),\n                    new Vector2(width, height),\n                    new Color(m_redSlider.GetValue() / 255, m_greenSlider.GetValue() / 255, m_blueSlider.GetValue() / 255),\n                    MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER);\n            }\n\n            return true;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/ScreenEditor/Object3D/MyGuiScreenEditorInfluenceSphere.cs",
    "content": "﻿using System;\nusing System.Globalization;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Editor;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.GUI.Helpers;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Entities.InfluenceSpheres;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.InfluenceSpheres;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Audio;\n\nnamespace MinerWars.AppCode.Game.GUI.ScreenEditor.Object3D\n{\n    class MyGuiScreenEditorInfluenceSphere : MyGuiScreenEditorObject3DBase\n    {\n        private const float MAX_RADIOACTIVITY_MAGNITUDE = 50;\n        private float m_controlsAdded;\n        private MyGuiControlCheckbox m_enabledCheckBox;\n        private MyGuiControlTextbox m_radiusMinTextBox;\n        private MyGuiControlTextbox m_radiusMaxTextBox;\n        private Color m_sphereDustColor;\n        private MyGuiControlSlider m_redColorSlider;\n        private MyGuiControlSlider m_greenColorSlider;\n        private MyGuiControlSlider m_blueColorSlider;\n        private MyGuiControlSlider m_opacitySlider;\n        private StringBuilder m_opacityValueText;\n        private MyGuiControlSlider m_strengthSlider;\n        private MyGuiControlCombobox m_selectSoundCombobox;\n        private MyGuiControlCheckbox m_dustCheckbox;\n        private MyGuiControlCheckbox m_radioactivityCheckbox;\n        private MyGuiControlCheckbox m_soundCheckbox;\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenEditorInfluenceSphere\";\n        }\n\n        public MyGuiScreenEditorInfluenceSphere(Vector2? screenPosition)\n            : base(new Vector2(0.5f, 0.5f), MyGuiConstants.SCREEN_BACKGROUND_COLOR, new Vector2(0.7f, 0.9f), MyTextsWrapperEnum.InfluenceSphereContextMenuCaption, screenPosition)\n        {\n            Init();\n        }\n\n        public MyGuiScreenEditorInfluenceSphere(MyInfluenceSphere influenceSphere)\n            : base(influenceSphere, new Vector2(0.5f, 0.5f), MyGuiConstants.SCREEN_BACKGROUND_COLOR, new Vector2(0.7f, 0.9f), MyTextsWrapperEnum.InfluenceSphereContextMenuCaption)\n        {\n            Init();\n        }\n\n        #region Init\n\n        private void Init()\n        {\n            m_size = new Vector2(0.7f, 1);\n\n            m_enableBackgroundFade = true;\n\n            AddCaption(new Vector2(0, 0.003f));\n            AddOkAndCancelButtonControls(new Vector2(0.03f, -0.02f));\n\n            var controlsOrigin = GetControlsOriginLeftFromScreenSize() - new Vector2(-0.018f, 0.025f);            \n            m_controlsAdded = 1;\n\n            CreateControlsBase(controlsOrigin);\n\n            m_activatedCheckbox.OnCheck += OnActivatedCheckedChanged;\n\n            CreateControlsDust(controlsOrigin);\n\n            CreateControlsSound(controlsOrigin);\n\n            CreateControlsRadioactivity(controlsOrigin);\n\n            if (HasEntity())\n            {\n                var influenceSphere = (MyInfluenceSphere) m_entity;\n                m_radiusMinTextBox.Text = influenceSphere.RadiusMin.ToString(CultureInfo.InvariantCulture);\n                m_radiusMaxTextBox.Text = influenceSphere.RadiusMax.ToString(CultureInfo.InvariantCulture);\n\n                m_enabledCheckBox.Checked = influenceSphere.Enabled;\n                m_activatedCheckbox.Checked = influenceSphere.Activated;\n\n                m_redColorSlider.SetValue(influenceSphere.DustColor.R);\n                m_greenColorSlider.SetValue(influenceSphere.DustColor.G);\n                m_blueColorSlider.SetValue(influenceSphere.DustColor.B);\n                m_opacitySlider.SetValue(influenceSphere.DustColor.A);\n\n                m_strengthSlider.SetValue(influenceSphere.Magnitude);\n\n                var objectBuilder = (MyMwcObjectBuilder_InfluenceSphere) influenceSphere.GetObjectBuilder(false);\n                m_selectSoundCombobox.SelectItemByKey(objectBuilder.SoundCueId);\n\n                m_dustCheckbox.Checked = influenceSphere.IsDust;\n                m_radioactivityCheckbox.Checked = influenceSphere.IsRadioactivity;\n                m_soundCheckbox.Checked = influenceSphere.IsSound;\n            }\n            else\n            {\n                m_opacitySlider.SetValue(255);\n            }\n        }\n\n        void OnActivatedCheckedChanged(MyGuiControlCheckbox sender)\n        {\n            if (m_activatedCheckbox.Checked)\n            {\n                m_enabledCheckBox.Enabled = true;\n            }\n            else\n            {\n                m_enabledCheckBox.Checked = false;\n                m_enabledCheckBox.Enabled = false;\n            }\n        }\n\n        private void CreateControlsBase(Vector2 controlsOrigin)\n        {\n            AddActivatedCheckbox(controlsOrigin + m_controlsAdded * CONTROLS_DELTA + new Vector2(0.0f, 0), true);\n\n            Controls.Add(\n                new MyGuiControlLabel(\n                    this,\n                    controlsOrigin + m_controlsAdded * CONTROLS_DELTA + new Vector2(0.2f, 0),\n                    null,\n                    MyTextsWrapperEnum.Enabled,\n                    MyGuiConstants.LABEL_TEXT_COLOR,\n                    MyGuiConstants.LABEL_TEXT_SCALE,\n                    MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n\n            m_enabledCheckBox = new MyGuiControlCheckbox(\n                this,\n                controlsOrigin + m_controlsAdded++ * CONTROLS_DELTA + new Vector2(0.3f, 0),\n                false,\n                MyGuiConstants.CHECKBOX_BACKGROUND_COLOR);\n\n            Controls.Add(m_enabledCheckBox);            \n\n            // Set Radius Min\n            Controls.Add(new MyGuiControlLabel(this, controlsOrigin + m_controlsAdded * CONTROLS_DELTA, null,\n                                               MyTextsWrapperEnum.RadiusMin,\n                                               MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE,\n                                               MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n            m_radiusMinTextBox = new MyGuiControlTextbox(this,\n                                                         (new Vector2(0.17f, 0) + controlsOrigin) +\n                                                         m_controlsAdded++ * CONTROLS_DELTA +\n                                                         new Vector2(0.093f, 0), MyGuiControlPreDefinedSize.MEDIUM, \"50\",\n                                                         MyMwcValidationConstants.POSITION_X_MAX,\n                                                         MyGuiConstants.TEXTBOX_BACKGROUND_COLOR,\n                                                         MyGuiConstants.LABEL_TEXT_SCALE,\n                                                         MyGuiControlTextboxType.DIGITS_ONLY);\n            Controls.Add(m_radiusMinTextBox);\n\n            // Set Radius Max\n            Controls.Add(new MyGuiControlLabel(this, controlsOrigin + m_controlsAdded * CONTROLS_DELTA, null,\n                                               MyTextsWrapperEnum.RadiusMax,\n                                               MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE,\n                                               MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n            m_radiusMaxTextBox = new MyGuiControlTextbox(this,\n                                                         (new Vector2(0.17f, 0) + controlsOrigin) +\n                                                         m_controlsAdded++ * CONTROLS_DELTA +\n                                                         new Vector2(0.093f, 0), MyGuiControlPreDefinedSize.MEDIUM,\n                                                         \"100\",\n                                                         MyMwcValidationConstants.POSITION_X_MAX,\n                                                         MyGuiConstants.TEXTBOX_BACKGROUND_COLOR,\n                                                         MyGuiConstants.LABEL_TEXT_SCALE,\n                                                         MyGuiControlTextboxType.DIGITS_ONLY);\n            Controls.Add(m_radiusMaxTextBox);\n        }\n\n        private void CreateControlsDust(Vector2 controlsOrigin)\n        {\n            AddSeparator(controlsOrigin);\n\n            Controls.Add(new MyGuiControlLabel(this, controlsOrigin + m_controlsAdded * CONTROLS_DELTA + new Vector2(0.05f, 0), null, MyTextsWrapperEnum.DustInfluenceSphereType, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n            m_dustCheckbox = new MyGuiControlCheckbox(this, controlsOrigin + m_controlsAdded++ * CONTROLS_DELTA + new Vector2(0.02f, 0), false, MyGuiConstants.CHECKBOX_BACKGROUND_COLOR);\n            Controls.Add(m_dustCheckbox);\n\n            //Red slider\n            Controls.Add(new MyGuiControlLabel(this, controlsOrigin + m_controlsAdded * CONTROLS_DELTA, null,\n                                               MyTextsWrapperEnum.Red, MyGuiConstants.LABEL_TEXT_COLOR,\n                                               MyGuiConstants.LABEL_TEXT_SCALE,\n                                               MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n            m_redColorSlider = new MyGuiControlSlider(this,\n                                                      (new Vector2(0.22f, 0) + controlsOrigin) +\n                                                      m_controlsAdded++ * CONTROLS_DELTA, MyGuiConstants.SLIDER_WIDTH,\n                                                      MyEditorConstants.COLOR_COMPONENT_MIN_VALUE,\n                                                      MyEditorConstants.COLOR_COMPONENT_MAX_VALUE,\n                                                      MyGuiConstants.SLIDER_BACKGROUND_COLOR,\n                                                      new StringBuilder(), MyGuiConstants.SLIDER_WIDTH_LABEL, 0,\n                                                      MyGuiConstants.LABEL_TEXT_SCALE * 0.85f);\n            m_redColorSlider.OnChange = OnRedColorChange;\n            Controls.Add(m_redColorSlider);\n\n            //Green slider\n            Controls.Add(new MyGuiControlLabel(this, controlsOrigin + m_controlsAdded * CONTROLS_DELTA, null,\n                                               MyTextsWrapperEnum.Green, MyGuiConstants.LABEL_TEXT_COLOR,\n                                               MyGuiConstants.LABEL_TEXT_SCALE,\n                                               MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n            m_greenColorSlider = new MyGuiControlSlider(this,\n                                                        (new Vector2(0.22f, 0) + controlsOrigin) +\n                                                        m_controlsAdded++ * CONTROLS_DELTA, MyGuiConstants.SLIDER_WIDTH,\n                                                        MyEditorConstants.COLOR_COMPONENT_MIN_VALUE,\n                                                        MyEditorConstants.COLOR_COMPONENT_MAX_VALUE,\n                                                        MyGuiConstants.SLIDER_BACKGROUND_COLOR,\n                                                        new StringBuilder(), MyGuiConstants.SLIDER_WIDTH_LABEL, 0,\n                                                        MyGuiConstants.LABEL_TEXT_SCALE * 0.85f);\n            m_greenColorSlider.OnChange = OnGreenColorChange;\n            Controls.Add(m_greenColorSlider);\n            // Final color display\n\n            //Blue slider\n            Controls.Add(new MyGuiControlLabel(this, controlsOrigin + m_controlsAdded * CONTROLS_DELTA, null,\n                                               MyTextsWrapperEnum.Blue, MyGuiConstants.LABEL_TEXT_COLOR,\n                                               MyGuiConstants.LABEL_TEXT_SCALE,\n                                               MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n            m_blueColorSlider = new MyGuiControlSlider(this,\n                                                       (new Vector2(0.22f, 0) + controlsOrigin) +\n                                                       m_controlsAdded++ * CONTROLS_DELTA, MyGuiConstants.SLIDER_WIDTH,\n                                                       MyEditorConstants.COLOR_COMPONENT_MIN_VALUE,\n                                                       MyEditorConstants.COLOR_COMPONENT_MAX_VALUE,\n                                                       MyGuiConstants.SLIDER_BACKGROUND_COLOR,\n                                                       new StringBuilder(), MyGuiConstants.SLIDER_WIDTH_LABEL, 0,\n                                                       MyGuiConstants.LABEL_TEXT_SCALE * 0.85f);\n            m_blueColorSlider.OnChange = OnBlueColorChange;\n            Controls.Add(m_blueColorSlider);\n\n            //Opacity slider\n            Controls.Add(new MyGuiControlLabel(this, controlsOrigin + m_controlsAdded * CONTROLS_DELTA, null,\n                                               MyTextsWrapperEnum.Opacity, MyGuiConstants.LABEL_TEXT_COLOR,\n                                               MyGuiConstants.LABEL_TEXT_SCALE,\n                                               MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n            m_opacitySlider = new MyGuiControlSlider(this,\n                                                     (new Vector2(0.22f, 0) + controlsOrigin) +\n                                                     m_controlsAdded++ * CONTROLS_DELTA, MyGuiConstants.SLIDER_WIDTH,\n                                                     MyEditorConstants.COLOR_COMPONENT_MIN_VALUE,\n                                                     MyEditorConstants.COLOR_COMPONENT_MAX_VALUE,\n                                                     MyGuiConstants.SLIDER_BACKGROUND_COLOR,\n                                                     new StringBuilder(), MyGuiConstants.SLIDER_WIDTH_LABEL, 0,\n                                                     MyGuiConstants.LABEL_TEXT_SCALE * 0.85f);\n            m_opacitySlider.OnChange = OnOpacityChange;\n            Controls.Add(m_opacitySlider);\n            m_opacityValueText = new StringBuilder();\n        }\n\n        private void CreateControlsRadioactivity(Vector2 controlsOrigin)\n        {\n            AddSeparator(controlsOrigin);\n\n            Controls.Add(new MyGuiControlLabel(this, controlsOrigin + m_controlsAdded * CONTROLS_DELTA + new Vector2(0.05f, 0), null, MyTextsWrapperEnum.RadioactivityInfluenceSphereType, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n            m_radioactivityCheckbox = new MyGuiControlCheckbox(this, controlsOrigin + m_controlsAdded++ * CONTROLS_DELTA + new Vector2(0.02f, 0), false, MyGuiConstants.CHECKBOX_BACKGROUND_COLOR);\n            Controls.Add(m_radioactivityCheckbox);\n\n            //choose influence sphere sound\n            Controls.Add(new MyGuiControlLabel(this, controlsOrigin + m_controlsAdded * CONTROLS_DELTA, null,\n                                               MyTextsWrapperEnum.Magnitude, MyGuiConstants.LABEL_TEXT_COLOR,\n                                               MyGuiConstants.LABEL_TEXT_SCALE,\n                                               MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n\n            // slider - magnitude\n            m_strengthSlider = new MyGuiControlSlider(this,\n                                                      controlsOrigin + m_controlsAdded++ * CONTROLS_DELTA +\n                                                      new Vector2(0.25f, 0), MyGuiConstants.SLIDER_WIDTH,\n                                                      0, MAX_RADIOACTIVITY_MAGNITUDE,\n                                                      MyGuiConstants.SLIDER_BACKGROUND_COLOR, new StringBuilder(\"{0}\"),\n                                                      0.03f, 1, MyGuiConstants.LABEL_TEXT_SCALE * 0.85f);\n\n            m_strengthSlider.SetValue(1);\n\n            Controls.Add(m_strengthSlider);\n        }\n\n        private void CreateControlsSound(Vector2 controlsOrigin)\n        {\n            AddSeparator(controlsOrigin);\n\n            Controls.Add(new MyGuiControlLabel(this, controlsOrigin + m_controlsAdded * CONTROLS_DELTA + new Vector2(0.05f, 0), null, MyTextsWrapperEnum.SoundInfluenceSphereType, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n            m_soundCheckbox = new MyGuiControlCheckbox(this, controlsOrigin + m_controlsAdded++ * CONTROLS_DELTA + new Vector2(0.02f, 0), false, MyGuiConstants.CHECKBOX_BACKGROUND_COLOR);\n            Controls.Add(m_soundCheckbox);\n\n            //m_controlsAdded++;\n\n            //COMBOBOX - sounds\n            //m_selectSoundCombobox = new MyGuiControlCombobox(this,\n            //                                                 controlsOrigin + m_controlsAdded++ * CONTROLS_DELTA +\n            //                                                 new Vector2(MyGuiConstants.COMBOBOX_LARGE_SIZE.X / 2.0f, 0),\n            //                                                 MyGuiControlPreDefinedSize.LARGE,\n            //                                                 MyGuiConstants.COMBOBOX_BACKGROUND_COLOR,\n            //                                                 MyGuiConstants.COMBOBOX_TEXT_SCALE, 3, true, false, true);\n            m_selectSoundCombobox = new MyGuiControlCombobox(this,\n                                                             controlsOrigin + m_controlsAdded++ * CONTROLS_DELTA +\n                                                             new Vector2(MyGuiConstants.COMBOBOX_LONGMEDIUM_SIZE.X / 2.0f, 0),\n                                                             MyGuiControlPreDefinedSize.MEDIUM,\n                                                             MyGuiConstants.COMBOBOX_BACKGROUND_COLOR,\n                                                             MyGuiConstants.COMBOBOX_TEXT_SCALE, 6, false, false, false);\n\n            foreach (MySoundCuesEnum enumValue in MyGuiInfluenceSphereHelpers.MyInfluenceSphereSoundHelperTypesEnumValues)\n            {\n                MyGuiInfluenceSphereHelper musicHelper = MyGuiInfluenceSphereHelpers.GetInfluenceSphereSoundHelper(enumValue);\n                if (musicHelper != null && musicHelper.MultiLineDescription.ToString().ToLower().StartsWith(\"amb2d_\"))\n                {\n                    m_selectSoundCombobox.AddItem((int)enumValue, musicHelper.Icon, musicHelper.MultiLineDescription);\n                }\n            }\n\n            m_selectSoundCombobox.SelectItemByKey(0);\n            //m_selectSoundCombobox.OnSelectItemDoubleClick = OnOkClick;\n            Controls.Add(m_selectSoundCombobox);\n        }\n\n        private void AddSeparator(Vector2 controlsOrigin)\n        {\n            var pos = controlsOrigin + m_controlsAdded * CONTROLS_DELTA + new Vector2(0.3f, -0.01f);\n\n            Controls.Add(new MyGuiControlPanel(this, pos,\n                                               new Vector2(0.6f, 0.005f), Vector4.Zero, 2,\n                                               MyGuiConstants.DEFAULT_CONTROL_NONACTIVE_COLOR));\n\n            m_controlsAdded += 0.5f;\n        }\n\n        #endregion\n\n        public override void OnOkClick(MyGuiControlButton sender)\n        {\n            float radiusMin;\n            float radiusMax;\n\n            if (!float.TryParse(m_radiusMinTextBox.Text, out radiusMin))\n            {\n                MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.YouHaveToSelect, MyTextsWrapperEnum.MessageBoxCaptionError, MyTextsWrapperEnum.Ok, null));\n                return;\n            }\n            \n            if (!float.TryParse(m_radiusMaxTextBox.Text, out radiusMax))\n            {\n                MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.YouHaveToSelect, MyTextsWrapperEnum.MessageBoxCaptionError, MyTextsWrapperEnum.Ok, null));\n                return;\n            }\n\n            // Disallow to enter lower MAX radius than MIN radius\n            if (radiusMax < radiusMin)\n            {\n                MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.RadiusMaxLowerThanRadiusMin, MyTextsWrapperEnum.MessageBoxCaptionError, MyTextsWrapperEnum.Ok, null));\n                return;\n            }\n            \n            if (!m_dustCheckbox.Checked && !m_radioactivityCheckbox.Checked && !m_soundCheckbox.Checked)\n            {\n                MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.YouHaveToSelect, MyTextsWrapperEnum.MessageBoxCaptionError, MyTextsWrapperEnum.Ok, null));\n                return;\n            }\n            \n            if (m_soundCheckbox.Checked && m_selectSoundCombobox.GetSelectedKey() == -1)\n            {\n                MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.YouHaveToSelect, MyTextsWrapperEnum.MessageBoxCaptionError, MyTextsWrapperEnum.Ok, null));\n                return;\n            }\n            \n            {\n                base.OnOkClick(sender);\n\n                float magnitude = m_strengthSlider.GetValue();\n\n                var soundType = (MySoundCuesEnum)m_selectSoundCombobox.GetSelectedKey();\n\n                if (HasEntity())\n                {\n                    // Update currently selected influence sphere properties\n                    var influenceSphere = (MyInfluenceSphere)m_entity;\n\n                    influenceSphere.Enabled = m_enabledCheckBox.Checked;\n\n                    if (radiusMin > influenceSphere.RadiusMax)\n                    {\n                        influenceSphere.RadiusMax = radiusMax;\n                        influenceSphere.RadiusMin = radiusMin;\n                    }\n                    else\n                    {\n                        influenceSphere.RadiusMin = radiusMin;\n                        influenceSphere.RadiusMax = radiusMax;\n                    }\n\n                    var r = (byte)m_redColorSlider.GetValue();\n                    var g = (byte)m_greenColorSlider.GetValue();\n                    var b = (byte)m_blueColorSlider.GetValue();\n                    var a = (byte)m_opacitySlider.GetValue();\n                    influenceSphere.DustColor = new Color(r, g, b, a);\n\n                    influenceSphere.Magnitude = magnitude;\n\n                    influenceSphere.ChangeCueEnum(soundType);\n\n                    influenceSphere.IsDust = m_dustCheckbox.Checked;\n                    influenceSphere.IsRadioactivity = m_radioactivityCheckbox.Checked;\n                    influenceSphere.IsSound = m_soundCheckbox.Checked;\n                    influenceSphere.Activate(m_activatedCheckbox.Checked, false);\n                }\n                else\n                {\n                    // Create new influence sphere dust\n                    var builder = new MyMwcObjectBuilder_InfluenceSphere();\n                    builder.InfluenceFlags |= MyInfluenceFlags.Dust;\n                    builder.RadiusMin = radiusMin;\n                    builder.RadiusMax = radiusMax;\n                    builder.Enabled = m_enabledCheckBox.Checked;\n\n                    var r = (byte)m_redColorSlider.GetValue();\n                    var g = (byte)m_greenColorSlider.GetValue();\n                    var b = (byte)m_blueColorSlider.GetValue();\n                    var a = (byte)m_opacitySlider.GetValue();\n                    builder.DustColor = new Color(r, g, b, a);\n\n                    builder.Magnitude = magnitude;\n\n                    builder.SoundCueId = (short)soundType;\n\n                    builder.IsDust = m_dustCheckbox.Checked;\n                    builder.IsRadioactivity = m_radioactivityCheckbox.Checked;\n                    builder.IsSound = m_soundCheckbox.Checked;\n                    if(!m_activatedCheckbox.Checked)\n                    {\n                        builder.PersistentFlags |= CommonLIB.AppCode.ObjectBuilders.MyPersistentEntityFlags.Deactivated;\n                    }\n                    MyEditor.Static.CreateFromObjectBuilder(builder, Matrix.Identity, m_screenPosition);\n                }\n\n                this.CloseScreen();\n            }\n        }\n\n        #region Controls' events\n\n        private void OnRedColorChange(MyGuiControlSlider sender)\n        {\n            m_sphereDustColor.R = (byte) m_redColorSlider.GetValue();\n        }\n\n        private void OnGreenColorChange(MyGuiControlSlider sender)\n        {\n            m_sphereDustColor.G = (byte) m_greenColorSlider.GetValue();\n        }\n\n        private void OnBlueColorChange(MyGuiControlSlider sender)\n        {\n            m_sphereDustColor.B = (byte) m_blueColorSlider.GetValue();\n        }\n\n        private void OnOpacityChange(MyGuiControlSlider sender)\n        {\n            m_sphereDustColor.A = (byte) m_opacitySlider.GetValue();\n            m_opacityValueText.Clear();\n            m_opacityValueText.Append(m_sphereDustColor.A);\n        }\n\n        #endregion\n\n        public override bool Draw(float backgroundFadeAlpha)\n        {\n            if (base.Draw(backgroundFadeAlpha) == false)\n                return false;\n\n            Vector2 opacityPosition = m_position + m_opacitySlider.GetPosition() +\n                                      new Vector2(0.13f, 0);\n\n            Vector2 finalColorPosition = m_position + m_redColorSlider.GetPosition() +\n                                         new Vector2(0.18f, -MyGuiConstants.SLIDER_HEIGHT / 2);\n            Vector2 finalColorScreenCoord = MyGuiManager.GetScreenCoordinateFromNormalizedCoordinate(finalColorPosition);\n\n            Vector2 finalColorSize = MyGuiManager.GetScreenSizeFromNormalizedSize(new Vector2(3 * MyGuiConstants.SLIDER_HEIGHT, 3 * MyGuiConstants.SLIDER_HEIGHT) + new Vector2(0, 0.024f));\n\n            // Draws one big final color rectangle to see result of each RGBA component in one\n            MyGuiManager.DrawString(MyGuiManager.GetFontMinerWarsWhite(), m_opacityValueText, opacityPosition, MyGuiConstants.LABEL_TEXT_SCALE, new Color(MyGuiConstants.LABEL_TEXT_COLOR), MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER);\n            MyGuiManager.DrawSpriteBatch(MyGuiManager.GetBlankTexture(), (int)finalColorScreenCoord.X, (int)finalColorScreenCoord.Y, (int)finalColorSize.X, (int)finalColorSize.Y, m_sphereDustColor);\n\n            return true;\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/ScreenEditor/Object3D/MyGuiScreenEditorLargeShip.cs",
    "content": "﻿/*\nusing System;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.GUI.Helpers;\nusing MinerWars.AppCode.Game.Editor;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.Game.Entities;\n\nnamespace MinerWars.AppCode.Game.GUI.ScreenEditor.Object3D\n{\n    class MyGuiScreenEditorLargeShip : MyGuiScreenEditorObject3DBase\n    {\n        MyGuiControlCombobox m_selectLargeShipCombobox;\n\n        public MyGuiScreenEditorLargeShip()\n            : base(new Vector2(0.5f, 0.5f), MyGuiConstants.SCREEN_BACKGROUND_COLOR, null, MyTextsWrapperEnum.CreateLargeShip)\n        {\n            Init();\n        }\n\n        public MyGuiScreenEditorLargeShip(MyLargeShip largeShip)\n            : base(largeShip, new Vector2(0.5f, 0.5f), MyGuiConstants.SCREEN_BACKGROUND_COLOR, null, MyTextsWrapperEnum.EditLargeShip)\n        {\n            Init();\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenEditorLargeShip\";\n        }\n\n        void Init()\n        {\n            m_enableBackgroundFade = true;\n            m_size = new Vector2(0.73f, 0.95f);\n            Vector2 controlsOriginLeft = GetControlsOriginLeftFromScreenSize();\n\n            // Add screen title\n            AddCaption();\n\n            // Decide if screen is for editing existing phys object or adding new\n            if (IsPhysObject())\n            {\n                AddEditPositionControls();   \n            }\n            else\n            {\n                #region Large Ship Selection\n                //choose large ship\n                Controls.Add(new MyGuiControlLabel(this, controlsOriginLeft + 0 * CONTROLS_DELTA, null, MyTextsWrapperEnum.ChooseModel, MyGuiConstants.LABEL_TEXT_COLOR,\n                    MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n\n                //COMBOBOX - large ship\n                m_selectLargeShipCombobox = new MyGuiControlCombobox(this, controlsOriginLeft + 2 * CONTROLS_DELTA + new Vector2(MyGuiConstants.COMBOBOX_LARGE_SIZE.X / 2.0f, 0), MyGuiControlPreDefinedSize.LARGE,\n                    MyGuiConstants.COMBOBOX_BACKGROUND_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, 4, true, false, true);\n\n                foreach (MyMwcObjectBuilder_LargeShip_TypesEnum enumValue in MyGuiLargeShipHelpers.MyMwcLargeShipTypesEnumValues)\n                {\n                    if (enumValue != MyMwcObjectBuilder_LargeShip_TypesEnum.JEROMIE_INTERIOR_STATION && enumValue != MyMwcObjectBuilder_LargeShip_TypesEnum.CRUISER_SHIP)\n                    {\n                        MyGuiLargeShipHelper largeShipHelper = MyGuiLargeShipHelpers.GetMyGuiLargeShipHelper(enumValue);\n                        m_selectLargeShipCombobox.AddItem((int)enumValue, largeShipHelper.Icon, largeShipHelper.Description);\n                    }\n                }\n\n                m_selectLargeShipCombobox.SelectItemByKey(1);\n                m_selectLargeShipCombobox.OnSelectItemDoubleClick = OnOkClick;\n                Controls.Add(m_selectLargeShipCombobox);\n                #endregion\n            }\n\n            AddOkAndCancelButtonControls();\n        }\n\n        public override void OnOkClick()\n        {\n            base.OnOkClick();\n\n            MyMwcObjectBuilder_LargeShip_TypesEnum shipType = (MyMwcObjectBuilder_LargeShip_TypesEnum)\n                Enum.ToObject(typeof(MyMwcObjectBuilder_LargeShip_TypesEnum), m_selectLargeShipCombobox.GetSelectedKey());\n            MyMwcObjectBuilder_LargeShip largeShipBuilder = new MyMwcObjectBuilder_LargeShip(shipType);\n            MyEditor.Static.CreateFromObjectBuilder(largeShipBuilder, Matrix.CreateWorld(m_newObjectPosition, Vector3.Forward, Vector3.Up));\n\n            MyGuiManager.CloseAllScreensExcept(MyGuiScreenGamePlay.Static);\n        }\n\n        protected override Vector2 GetControlsOriginLeftFromScreenSize()\n        {\n            return base.GetControlsOriginLeftFromScreenSize() + new Vector2(0.002f, 0);\n        }\n    }\n}\n    */"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/ScreenEditor/Object3D/MyGuiScreenEditorLargeWeapon.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Entities.SubObjects;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.GUI.RichControls;\nusing System.Diagnostics;\n\nnamespace MinerWars.AppCode.Game.GUI.ScreenEditor.Object3D\n{\n    class MyGuiScreenEditorLargeWeapon : MyGuiScreenEditorObject3DBase\n    {\n        private MyGuiControlSize m_searchingDistance;\n        private MyGuiControlLabel m_label;\n        private MyGuiControlCheckbox m_on;\n\n        private float m_originalSearchingDistance;\n\n        private List<MyPrefabLargeWeapon> m_prefabLargeWeapons;        \n\n        public MyGuiScreenEditorLargeWeapon(List<MyPrefabLargeWeapon> prefabLargeWeapons)\n            : base(null, new Vector2(0.5f, 0.5f), MyGuiConstants.SCREEN_BACKGROUND_COLOR, null, MyTextsWrapperEnum.EditPrefabLargeWeapon)\n        {\n            Debug.Assert(prefabLargeWeapons != null);\n            Debug.Assert(prefabLargeWeapons.Count > 0);\n            m_prefabLargeWeapons = prefabLargeWeapons;\n            m_originalSearchingDistance = prefabLargeWeapons[0].SearchingDistance;\n            Init();\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenEditorLargeWeapon\";\n        }        \n\n        void Init()\n        {\n            m_enableBackgroundFade = true;\n            m_size = new Vector2(0.92f, 0.45f);\n            Vector2 size = new Vector2(0.8f, MyGuiConstants.SLIDER_HEIGHT);\n\n            // Add screen title\n            AddCaption(new Vector2(0,0.015f));\n\n            Vector2 originDelta = new Vector2(0.45f, 0.00f);\n            Vector2 controlsOriginLeft = GetControlsOriginLeftFromScreenSize() + originDelta;            \n\n            m_searchingDistance = new MyGuiControlSize(\n                this,\n                controlsOriginLeft + 1 * MyGuiConstants.CONTROLS_DELTA,\n                size,\n                Vector4.Zero,\n                MyTextsWrapper.Get(MyTextsWrapperEnum.SearchingDistance),\n                m_prefabLargeWeapons[0].SearchingDistance,\n                MyLargeShipWeaponsConstants.MIN_SEARCHING_DISTANCE,\n                MyLargeShipWeaponsConstants.MAX_SEARCHING_DISTANCE,\n                MyTextsWrapper.Get(MyTextsWrapperEnum.SearchingDistance),\n                MyGuiSizeEnumFlags.All,\n                0.3f);\n            Controls.Add(m_searchingDistance);\n\n            m_label = new MyGuiControlLabel(this, GetControlsOriginLeftFromScreenSize() + new Vector2(0.25f,0) + 3 * MyGuiConstants.CONTROLS_DELTA, null, MyTextsWrapperEnum.On, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER);\n            Controls.Add(m_label);\n            m_on = new MyGuiControlCheckbox(this, GetControlsOriginLeftFromScreenSize() + new Vector2(0.25f, 0) + 3 * MyGuiConstants.CONTROLS_DELTA + new Vector2(0.07f, 0f), m_prefabLargeWeapons[0].Enabled, MyGuiConstants.CHECKBOX_BACKGROUND_COLOR);\n            Controls.Add(m_on);\n\n            AddActivatedCheckbox(GetControlsOriginLeftFromScreenSize() + 3 * MyGuiConstants.CONTROLS_DELTA + new Vector2(0.5f, 0f), m_prefabLargeWeapons[0].Activated);\n            //m_searchingDistance.OnValueChange += OnSearchingDistanceChanged;\n\n            AddOkAndCancelButtonControls(new Vector2(0, -0.02f));            \n        }\n\n        private void OnSearchingDistanceChanged(MyGuiControlBase sender)\n        {\n            foreach (MyPrefabLargeWeapon prefabLargeWeapon in m_prefabLargeWeapons)\n            {\n                prefabLargeWeapon.SearchingDistance = m_searchingDistance.GetValue();\n            }\n        }\n\n        public override void OnOkClick(MyGuiControlButton sender)\n        {\n            base.OnOkClick(sender);\n            foreach (MyPrefabLargeWeapon prefabLargeWeapon in m_prefabLargeWeapons)\n            {\n                prefabLargeWeapon.SearchingDistance = m_searchingDistance.GetValue();\n                if (prefabLargeWeapon.Enabled != m_on.Checked)                 \n                {\n                    prefabLargeWeapon.Enabled = m_on.Checked;\n                }\n                prefabLargeWeapon.Activate(m_activatedCheckbox.Checked, false);\n            }\n            MyGuiManager.CloseAllScreensExcept(MyGuiScreenGamePlay.Static);\n        }\n\n        public override void OnCancelClick(MyGuiControlButton sender)\n        {\n            base.OnCancelClick(sender);\n            //foreach (MyPrefabLargeWeapon prefabLargeWeapon in m_prefabLargeWeapons) \n            //{\n            //    prefabLargeWeapon.AimingDistance = m_originalAimingDistance;\n            //    prefabLargeWeapon.SearchingDistance = m_originalSearchingDistance;\n            //}\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/ScreenEditor/Object3D/MyGuiScreenEditorObject3DBase.cs",
    "content": "﻿using MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.AppCode.Toolkit.Input;\nusing MinerWars.AppCode.Game.Editor;\nusing System;\n\nnamespace MinerWars.AppCode.Game.GUI.ScreenEditor.Object3D\n{\n    abstract class MyGuiScreenEditorObject3DBase : MyGuiScreenBase\n    {\n        public static readonly Vector2 CONTROLS_DELTA = new Vector2(0, 0.0525f);\n        protected Vector3 m_newObjectPosition;\n        protected MyEntity m_entity;\n        protected MyTextsWrapperEnum m_caption;\n        protected MyGuiControlTextbox m_positionXTextBox;\n        protected MyGuiControlTextbox m_positionYTextBox;\n        protected MyGuiControlTextbox m_positionZTextBox;\n        protected MyGuiControlCheckbox m_activatedCheckbox;\n        protected MyGuiControlTextbox m_idTextbox;\n        \n        protected Vector2? m_screenPosition;\n\n        // Basic constructor\n        public MyGuiScreenEditorObject3DBase(MyTextsWrapperEnum caption)\n            : this(null, new Vector2(0.5f, 0.5f), MyGuiConstants.SCREEN_BACKGROUND_COLOR, null, caption)\n        { }\n\n        public MyGuiScreenEditorObject3DBase(Vector2 position, Vector4 backgroundColor, Vector2? size, MyTextsWrapperEnum caption, Vector2? screnPosition = null)\n            : this(null, position, backgroundColor, size, caption, screnPosition)\n        { }\n\n        public MyGuiScreenEditorObject3DBase(MyEntity entity, MyTextsWrapperEnum caption)\n            : this(caption)\n        {\n            m_entity = entity;\n        }\n\n        public MyGuiScreenEditorObject3DBase(MyEntity physObject, Vector2 position, Vector4 backgroundColor, Vector2? size, MyTextsWrapperEnum caption, Vector2? screenPosition = null)\n            : base(position, backgroundColor, size)\n        {\n            m_caption = caption;\n            m_newObjectPosition = MySpectator.Target + 2000 * MySpectator.Orientation;\n            m_entity = physObject;\n            m_backgroundFadeColor = MyGuiConstants.SCREEN_BACKGROUND_FADE_BLANK_DARK;\n            m_backgroundFadeColor.W = 0.75f;\n            m_screenPosition = screenPosition;\n            this.OnEnterCallback = OnEnterClick;\n        }\n\n        protected virtual Vector2 GetControlsOriginLeftFromScreenSize()\n        {\n            return new Vector2(-m_size.Value.X / 2.0f + 0.03f, -m_size.Value.Y / 2.0f + 0.09f);\n        }\n\n        protected virtual Vector2 GetControlsOriginRightFromScreenSize()\n        {\n            return new Vector2(-m_size.Value.X / 2.0f + 0.25f, -m_size.Value.Y / 2.0f + 0.09f);\n        }\n\n        protected bool HasEntity()\n        {\n            return m_entity != null;\n        }\n\n        protected void AddCaption(Vector2 offset)\n        {\n            AddCaption(m_caption, new Vector2(0, 0.01f) + offset);\n        }\n\n        protected void AddCaption()\n        {\n            AddCaption(Vector2.Zero);\n        }\n\n        protected void AddEditPositionControls()\n        {\n            if (HasEntity())\n            {\n                Controls.Add(new MyGuiControlLabel(this, GetControlsOriginLeftFromScreenSize() + 0 * CONTROLS_DELTA, null, MyTextsWrapperEnum.Position, MyGuiConstants.LABEL_TEXT_COLOR,\n                    MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n\n                //TODO add support for textbox with numbers with floating point\n                Controls.Add(new MyGuiControlLabel(this, GetControlsOriginLeftFromScreenSize() + 1 * CONTROLS_DELTA, null, MyTextsWrapperEnum.X, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n                m_positionXTextBox = new MyGuiControlTextbox(this, (new Vector2(0.05f, 0) + GetControlsOriginLeftFromScreenSize()) + 1 * CONTROLS_DELTA + new Vector2(MyGuiConstants.TEXTBOX_MEDIUM_SIZE.X / 2.0f, 0), MyGuiControlPreDefinedSize.MEDIUM, \"0\", MyMwcValidationConstants.POSITION_X_MAX, MyGuiConstants.TEXTBOX_BACKGROUND_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiControlTextboxType.DIGITS_ONLY);\n                Controls.Add(m_positionXTextBox);\n                m_positionXTextBox.Text = Convert.ToInt32(m_entity.GetPosition().X).ToString();\n\n                Controls.Add(new MyGuiControlLabel(this, GetControlsOriginLeftFromScreenSize() + 2 * CONTROLS_DELTA, null, MyTextsWrapperEnum.Y, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n                m_positionYTextBox = new MyGuiControlTextbox(this, (new Vector2(0.05f, 0) + GetControlsOriginLeftFromScreenSize()) + 2 * CONTROLS_DELTA + new Vector2(MyGuiConstants.TEXTBOX_MEDIUM_SIZE.X / 2.0f, 0), MyGuiControlPreDefinedSize.MEDIUM, \"0\", MyMwcValidationConstants.POSITION_X_MAX, MyGuiConstants.TEXTBOX_BACKGROUND_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiControlTextboxType.DIGITS_ONLY);\n                Controls.Add(m_positionYTextBox);\n                m_positionYTextBox.Text = Convert.ToInt32(m_entity.GetPosition().Y).ToString();\n\n                Controls.Add(new MyGuiControlLabel(this, GetControlsOriginLeftFromScreenSize() + 3 * CONTROLS_DELTA, null, MyTextsWrapperEnum.Z, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n                m_positionZTextBox = new MyGuiControlTextbox(this, (new Vector2(0.05f, 0) + GetControlsOriginLeftFromScreenSize()) + 3 * CONTROLS_DELTA + new Vector2(MyGuiConstants.TEXTBOX_MEDIUM_SIZE.X / 2.0f, 0), MyGuiControlPreDefinedSize.MEDIUM, \"0\", MyMwcValidationConstants.POSITION_X_MAX, MyGuiConstants.TEXTBOX_BACKGROUND_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiControlTextboxType.DIGITS_ONLY);\n                Controls.Add(m_positionZTextBox);\n                m_positionZTextBox.Text = Convert.ToInt32(m_entity.GetPosition().Z).ToString();\n            }\n        }\n\n        protected void AddActivatedCheckbox(Vector2 position, bool value) \n        {\n            Controls.Add(new MyGuiControlLabel(this, position, null, MyTextsWrapperEnum.Active, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n            m_activatedCheckbox = new MyGuiControlCheckbox(this, position + new Vector2(0.1f, 0f), value, MyGuiConstants.CHECKBOX_BACKGROUND_COLOR);\n            Controls.Add(m_activatedCheckbox);\n        }\n\n        protected void AddIdTextBox(Vector2 position, uint value)\n        {\n            if (HasEntity() && MyFakes.ENABLE_ENTITY_ID_CHANGE)\n            {\n                Controls.Add(new MyGuiControlLabel(this, position, null, MyTextsWrapperEnum.EntityId, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n                m_idTextbox = new MyGuiControlTextbox(this, position + new Vector2(0.2f, 0f), MyGuiControlPreDefinedSize.MEDIUM, Convert.ToString(value), 10, MyGuiConstants.TEXTBOX_BACKGROUND_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiControlTextboxType.DIGITS_ONLY);\n                Controls.Add(m_idTextbox);\n            }\n        }\n\n        protected void AddOkButtonControl()\n        {\n            AddOkButtonControl(Vector2.Zero);\n        }\n\n        protected void AddOkButtonControl(Vector2 offset)\n        {\n            //  Buttons OK\n            Vector2 buttonDelta = new Vector2(0.05f, m_size.Value.Y / 2.0f - MyGuiConstants.MESSAGE_BOX_BORDER_AREA_Y - MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE.Y / 2.0f - 0.01f) + offset;\n            Controls.Add(new MyGuiControlButton(this, new Vector2(0, buttonDelta.Y), MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.Ok, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnOkClick, MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n        }\n\n        protected void AddOkAndCancelButtonControls()\n        {\n            AddOkAndCancelButtonControls(Vector2.Zero);\n        }\n\n        protected void AddOkAndCancelButtonControls(Vector2 offset)\n        {\n            //  Buttons OK and CANCEL\n            Vector2 buttonDelta = new Vector2(0.1f, m_size.Value.Y / 2.0f - MyGuiConstants.MESSAGE_BOX_BORDER_AREA_Y - MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE.Y / 2.0f - 0.01f) + offset;\n            Controls.Add(new MyGuiControlButton(this, new Vector2(-buttonDelta.X, buttonDelta.Y), MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.Ok, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnOkClick, MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n            Controls.Add(new MyGuiControlButton(this, new Vector2(+buttonDelta.X, buttonDelta.Y), MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.Cancel, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnCancelClick, MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n        }\n\n        void OnEnterClick()\n        {\n            HandleKeyboardActiveIndex(true);\n        }\n\n        public virtual void OnOkClick(MyGuiControlButton sender)\n        {\n            if (HasEntity())\n            {\n                if (m_idTextbox != null)\n                {\n                    if (m_entity.EntityId != null)\n                    {\n                        var newId = new MyEntityIdentifier(Convert.ToUInt32(m_idTextbox.Text));\n\n                        if (newId.NumericValue != m_entity.EntityId.Value.NumericValue && !MyEntityIdentifier.ExistsById(newId))\n                        {\n                            MyEntityIdentifier.RemoveEntity(m_entity.EntityId.Value);\n                            m_entity.EntityId = newId;\n                            MyEntityIdentifier.AddEntityWithId(m_entity);\n                        }\n                    }\n                }\n\n                if (IsPositionInput())\n                {\n                    Vector3 position = GetNewPosition();\n                    if (IsValidPositionInput(position))\n                    {\n                        MyEditorGizmo.MoveAndRotateObject(position, m_entity.GetWorldRotation(), m_entity);\n                    }\n                }\n            }            \n        }        \n\n        public virtual void OnCancelClick(MyGuiControlButton sender)\n        {\n            CloseScreen();\n        }\n\n        // Create Vector3 for position from GUI input for x,y,z coordinates\n        public Vector3 GetNewPosition()\n        {\n            int x = Convert.ToInt32(m_positionXTextBox.Text);\n            int y = Convert.ToInt32(m_positionYTextBox.Text);\n            int z = Convert.ToInt32(m_positionZTextBox.Text);\n\n            return new Vector3(x, y, z);\n        }\n\n        bool IsPositionInput()\n        {\n            return (m_positionXTextBox != null) && (m_positionYTextBox != null) && (m_positionZTextBox != null);\n        }\n\n        // \n        public bool IsValidPositionInput(Vector3 position)\n        {\n            if (position != MyEditorGizmo.GetSelectedObjectsCenter())\n            {\n                return true;\n            }\n            else\n            {\n                MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.InvalidPositionCoordinates, MyTextsWrapperEnum.MessageBoxCaptionError, MyTextsWrapperEnum.Ok, null));\n                return false;\n            }\n        }\n\n        public override void HandleInput(MyGuiInput input, bool receivedFocusInThisUpdate)\n        {\n            base.HandleInput(input, receivedFocusInThisUpdate);\n\n            if (input.IsNewKeyPress(Keys.Escape))\n            {\n                //CloseScreen();\n                OnCancelClick(null);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/ScreenEditor/Object3D/MyGuiScreenEditorPrefab.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Prefabs;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Localization;\n\nnamespace MinerWars.AppCode.Game.GUI.ScreenEditor.Object3D\n{\n    class MyGuiScreenEditorPrefab : MyGuiScreenEditorObject3DBase\n    {\n        MyGuiControlLabel m_onLabel;\n        MyGuiControlCheckbox m_on;\n\n        MyGuiControlLabel m_alarmLabel;\n        MyGuiControlCombobox m_alarmComboBox;\n\n        /// <summary>\n        /// Edit prefab\n        /// </summary>\n        /// <param name=\"prefab\">Prefab</param>\n        public MyGuiScreenEditorPrefab(MyPrefabBase prefab)\n            : base(prefab, new Vector2(0.5f, 0.5f), MyGuiConstants.SCREEN_BACKGROUND_COLOR, null, MyTextsWrapperEnum.EditPrefab)\n        {\n            Init();\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenEditorPrefab\";\n        }\n\n        private MyPrefabBase Prefab\n        {\n            get \n            {\n                return (MyPrefabBase)m_entity;\n            }\n        }\n\n        void Init()\n        {\n            m_enableBackgroundFade = true;\n            m_size = new Vector2(0.8f, 0.4f);\n\n            // Add screen title\n            AddCaption();\n\n            Vector2 originDelta = new Vector2(0.05f, 0.02f);\n            Vector2 controlsOriginLeft = GetControlsOriginLeftFromScreenSize() + originDelta;\n\n            AddActivatedCheckbox(controlsOriginLeft, Prefab.Activated);\n\n            m_onLabel = new MyGuiControlLabel(this, controlsOriginLeft + 1 * MyGuiConstants.CONTROLS_DELTA, null, MyTextsWrapperEnum.On, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER);\n            Controls.Add(m_onLabel);\n            m_on = new MyGuiControlCheckbox(this, controlsOriginLeft + 1 * MyGuiConstants.CONTROLS_DELTA + new Vector2(0.1f, 0f), Prefab.Enabled, MyGuiConstants.CHECKBOX_BACKGROUND_COLOR);\n            Controls.Add(m_on);\n\n            m_alarmLabel = new MyGuiControlLabel(this, controlsOriginLeft + 2 * MyGuiConstants.CONTROLS_DELTA, null, MyTextsWrapperEnum.Alarm, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER);\n            Controls.Add(m_alarmLabel);\n\n            var alarmComboboxPredefinedSize = MyGuiControlPreDefinedSize.MEDIUM;\n            var alarmComboboxSize = MyGuiControlCombobox.GetPredefinedControlSize(alarmComboboxPredefinedSize);\n\n            m_alarmComboBox = new MyGuiControlCombobox(\n                this,\n                controlsOriginLeft + 2 * MyGuiConstants.CONTROLS_DELTA +\n                new Vector2(0.075f + alarmComboboxSize.X / 2, 0f),\n                alarmComboboxPredefinedSize,\n                MyGuiConstants.COMBOBOX_BACKGROUND_COLOR,\n                MyGuiConstants.COMBOBOX_TEXT_SCALE);\n\n            m_alarmComboBox.AddItem(0, MyTextsWrapperEnum.Default);\n            m_alarmComboBox.AddItem(1, MyTextsWrapperEnum.On);\n            m_alarmComboBox.AddItem(2, MyTextsWrapperEnum.Off);\n            if (Prefab.DefaultCausesAlarm())\n            {\n                m_alarmComboBox.SelectItemByKey(0);\n            }\n            else\n            {\n                m_alarmComboBox.SelectItemByKey(Prefab.CausesAlarm ? 1 : 2);\n            }\n            Controls.Add(m_alarmComboBox);\n\n            AddOkAndCancelButtonControls();       \n        }                \n\n        public override void OnOkClick(MyGuiControlButton sender)\n        {\n            base.OnOkClick(sender);\n\n            Prefab.Enabled = m_on.Checked;            \n\n            int alarmKey = m_alarmComboBox.GetSelectedKey();\n            bool? causesAlarm = null;\n            if (alarmKey == 1)\n            {\n                causesAlarm = true;\n            }\n            else if (alarmKey == 2)\n            {\n                causesAlarm = false;\n            }\n            Prefab.SetCausesAlarm(causesAlarm);\n\n            Prefab.Activate(m_activatedCheckbox.Checked, false);\n\n            MyGuiManager.CloseAllScreensExcept(MyGuiScreenGamePlay.Static);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/ScreenEditor/Object3D/MyGuiScreenEditorPrefabContainer.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.GUI.Core;\n\nnamespace MinerWars.AppCode.Game.GUI.ScreenEditor.Object3D\n{\n    class MyGuiScreenEditorPrefabContainer : MyGuiScreenEditorObject3DBase\n    {\n        MyGuiControlLabel m_label;\n        MyGuiControlCheckbox m_alarmOn;\n\n        /// <summary>\n        /// asteroid has to be either MyVoxelMap or MyStaticAsteroid.\n        /// </summary>\n        /// <param name=\"asteroid\">Has to be either MyVoxelMap or MyStaticAsteroid!</param>\n        public MyGuiScreenEditorPrefabContainer(MyPrefabContainer prefabContainer)\n            : base(prefabContainer, new Vector2(0.5f, 0.5f), MyGuiConstants.SCREEN_BACKGROUND_COLOR, null, MyTextsWrapperEnum.EditPrefabContainer)\n        {\n            Init();\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenEditorPrefabContainer\";\n        }\n\n        private MyPrefabContainer PrefabContainer \n        {\n            get \n            {\n                return (MyPrefabContainer)m_entity;\n            }\n        }\n\n        void Init()\n        {\n            m_enableBackgroundFade = true;\n            m_size = new Vector2(0.8f, 0.4f);\n\n            // Add screen title\n            AddCaption();\n\n            Vector2 originDelta = new Vector2(0.05f, 0.02f);\n            Vector2 controlsOriginLeft = GetControlsOriginLeftFromScreenSize() + originDelta;\n            Vector2 controlsOriginRight = GetControlsOriginRightFromScreenSize() + originDelta;\n\n            AddActivatedCheckbox(controlsOriginLeft, PrefabContainer.Activated);\n\n            m_label = new MyGuiControlLabel(this, controlsOriginLeft + 1 * CONTROLS_DELTA, null, MyTextsWrapperEnum.Alarm, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER);\n            Controls.Add(m_label);\n            m_alarmOn = new MyGuiControlCheckbox(this, controlsOriginLeft + 1 * CONTROLS_DELTA + new Vector2(0.1f, 0f), PrefabContainer.AlarmOn, MyGuiConstants.CHECKBOX_BACKGROUND_COLOR);\n            Controls.Add(m_alarmOn);\n\n            AddOkAndCancelButtonControls();            \n        }                \n\n        public override void OnOkClick(MyGuiControlButton sender)\n        {\n            base.OnOkClick(sender);\n\n            PrefabContainer.AlarmOn = m_alarmOn.Checked;\n            PrefabContainer.Activate(m_activatedCheckbox.Checked, false);\n\n            MyGuiManager.CloseAllScreensExcept(MyGuiScreenGamePlay.Static);\n\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/ScreenEditor/Object3D/MyGuiScreenEditorScanner.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Prefabs;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.Prefabs;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.GUI.RichControls;\n\nnamespace MinerWars.AppCode.Game.GUI.ScreenEditor.Object3D\n{\n    class MyGuiScreenEditorScanner : MyGuiScreenEditorObject3DBase\n    {\n        MyGuiControlSize m_widthSize;\n        MyGuiControlSize m_heightSize;\n        MyGuiControlSize m_depthSize;\n        MyGuiControlSize m_scanningSpeedSize;        \n        MyGuiControlCheckbox m_onCheckbox;                \n\n        MyGuiControlSlider[] m_colorSlider;\n        Vector2 m_colorDrawPosition;        \n\n        // original values\n        Vector3 m_originalSize;\n        float m_originalScanningSpeed;\n        Color m_originalColor;\n        bool m_originalOn;\n\n        private MyPrefabScanner Scanner { get { return (MyPrefabScanner)m_entity; } }\n\n        public MyGuiScreenEditorScanner(MyPrefabScanner scanner)\n            : base(scanner, new Vector2(0.5f, 0.5f), MyGuiConstants.SCREEN_BACKGROUND_COLOR, null, MyTextsWrapperEnum.EditScanner)\n        {\n            m_originalSize = Scanner.Size;\n            m_originalColor = Scanner.Color;\n            m_originalOn = Scanner.Enabled;\n            m_originalScanningSpeed = Scanner.ScanningSpeed;\n            Init();\n            Scanner.Enabled = false;\n        }        \n\n        private void Init()\n        {\n            m_enableBackgroundFade = true;\n            m_size = new Vector2(0.9f, 0.85f);\n\n            Vector2 controlsOriginLeft = GetControlsOriginLeftFromScreenSize() + new Vector2(0.06f, 0.06f);\n            Vector2 sliderOffset = new Vector2(0.3f, 0f);\n\n            // First create controls\n            CreateControls(controlsOriginLeft, sliderOffset);\n\n            // Add screen title\n            AddCaption(new Vector2(0, 0.025f));\n            AddOkAndCancelButtonControls(new Vector2(0.01f, -0.02f));            \n\n            m_colorSlider[0].SetValue(Scanner.Color.R);\n            m_colorSlider[1].SetValue(Scanner.Color.G);\n            m_colorSlider[2].SetValue(Scanner.Color.B);            \n            m_widthSize.SetValue(Scanner.Size.X);\n            m_heightSize.SetValue(Scanner.Size.Y);\n            m_depthSize.SetValue(Scanner.Size.Z);\n            m_scanningSpeedSize.SetValue(Scanner.ScanningSpeed);\n            m_onCheckbox.Checked = Scanner.Enabled;\n\n            m_colorSlider[0].OnChange = OnColorChange;\n            m_colorSlider[1].OnChange = OnColorChange;\n            m_colorSlider[2].OnChange = OnColorChange;            \n            m_widthSize.OnValueChange += OnWidthChange;\n            m_heightSize.OnValueChange += OnHeightChange;\n            m_depthSize.OnValueChange += OnDepthChange;\n            m_scanningSpeedSize.OnValueChange += OnScanningSpeedChange;                        \n        }\n\n        public void CreateControls(Vector2 controlsOrigin, Vector2 sliderOffset)\n        {                        \n            float sliderMax = 1000f;\n\n            AddActivatedCheckbox(controlsOrigin, Scanner.Activated);\n\n            AddIdTextBox(new Vector2(-0.17f, controlsOrigin.Y), Scanner.EntityId.Value.NumericValue);\n\n            //Width slider            \n            m_widthSize = new MyGuiControlSize(this, controlsOrigin + new Vector2(0.4f, 0f) + 1 * CONTROLS_DELTA, new Vector2(0.8f, MyGuiConstants.SLIDER_HEIGHT), Vector4.Zero, null, 0f, 0.1f, sliderMax, MyTextsWrapper.Get(MyTextsWrapperEnum.Width), MyGuiSizeEnumFlags.All, sliderOffset.X);            \n            Controls.Add(m_widthSize);\n\n            //Height slider            \n            m_heightSize = new MyGuiControlSize(this, controlsOrigin + new Vector2(0.4f, 0f) + 2 * CONTROLS_DELTA, new Vector2(0.8f, MyGuiConstants.SLIDER_HEIGHT), Vector4.Zero, null, 0f, 0.1f, sliderMax, MyTextsWrapper.Get(MyTextsWrapperEnum.Height), MyGuiSizeEnumFlags.All, sliderOffset.X);\n            Controls.Add(m_heightSize);\n\n            //Depth slider            \n            m_depthSize = new MyGuiControlSize(this, controlsOrigin + new Vector2(0.4f, 0f) + 3 * CONTROLS_DELTA, new Vector2(0.8f, MyGuiConstants.SLIDER_HEIGHT), Vector4.Zero, null, 0f, 0.1f, sliderMax, MyTextsWrapper.Get(MyTextsWrapperEnum.Depth), MyGuiSizeEnumFlags.All, sliderOffset.X);\n            Controls.Add(m_depthSize);\n\n            //Scanning speed slider            \n            m_scanningSpeedSize = new MyGuiControlSize(this, controlsOrigin + new Vector2(0.4f, 0f) + 4 * CONTROLS_DELTA, new Vector2(0.8f, MyGuiConstants.SLIDER_HEIGHT), Vector4.Zero, null, 0f, 0.1f, sliderMax, MyTextsWrapper.Get(MyTextsWrapperEnum.ScanningSpeed), MyGuiSizeEnumFlags.All, 0.3f);\n            Controls.Add(m_scanningSpeedSize);\n\n            // Color\n            Vector2 colorPosition = controlsOrigin + 5 * CONTROLS_DELTA;\n            m_colorDrawPosition = colorPosition + sliderOffset;\n            Controls.Add(new MyGuiControlLabel(this, colorPosition, null, MyTextsWrapperEnum.Color, MyGuiConstants.LABEL_TEXT_COLOR,\n                MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n\n            MyTextsWrapperEnum[] colorNames = { MyTextsWrapperEnum.Red, MyTextsWrapperEnum.Green, MyTextsWrapperEnum.Blue };\n            m_colorSlider = new MyGuiControlSlider[3];\n            //color sliders\n            for (int i = 0; i < 3; i++)\n            {\n                Controls.Add(new MyGuiControlLabel(this, controlsOrigin + (6 + i) * CONTROLS_DELTA, null, colorNames[i], MyGuiConstants.LABEL_TEXT_COLOR,\n                    MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n                m_colorSlider[i] = new MyGuiControlSlider(this, (sliderOffset + controlsOrigin) + (6 + i) * CONTROLS_DELTA, MyGuiConstants.SLIDER_WIDTH,\n                    MyEditorConstants.COLOR_COMPONENT_MIN_VALUE, MyEditorConstants.COLOR_COMPONENT_MAX_VALUE, MyGuiConstants.SLIDER_BACKGROUND_COLOR,\n                    new StringBuilder(), MyGuiConstants.SLIDER_WIDTH_LABEL, 0, MyGuiConstants.LABEL_TEXT_SCALE * 0.85f * 0.75f);                \n                Controls.Add(m_colorSlider[i]);\n            }\n\n            Controls.Add(new MyGuiControlLabel(this, controlsOrigin + 9 * CONTROLS_DELTA, null, MyTextsWrapperEnum.On, MyGuiConstants.LABEL_TEXT_COLOR,\n                    MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n            m_onCheckbox = new MyGuiControlCheckbox(this, controlsOrigin + sliderOffset + 9 * CONTROLS_DELTA, Scanner.Enabled, MyGuiConstants.CHECKBOX_BACKGROUND_COLOR); \n            Controls.Add(m_onCheckbox);                                \n        }        \n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenEditorScanner\";\n        }\n\n        void OnWidthChange(MyGuiControlBase sender)\n        {\n            float width = ((MyGuiControlSize)sender).GetValue();\n            Vector3 size = Scanner.Size;\n            Scanner.Size = new Vector3(width, size.Y, size.Z);            \n        }\n\n        void OnHeightChange(MyGuiControlBase sender)\n        {\n            float height = ((MyGuiControlSize)sender).GetValue();\n            Vector3 size = Scanner.Size;\n            Scanner.Size = new Vector3(size.X, height, size.Z);\n        }\n\n        void OnDepthChange(MyGuiControlBase sender)\n        {\n            float depth = ((MyGuiControlSize)sender).GetValue();\n            Vector3 size = Scanner.Size;\n            Scanner.Size = new Vector3(size.X, size.Y, depth);\n        }\n\n        void OnScanningSpeedChange(MyGuiControlBase sender) \n        {\n            float scanningSpeed = ((MyGuiControlSize)sender).GetValue();\n            Scanner.ScanningSpeed = scanningSpeed;            \n        }\n\n        void OnColorChange(MyGuiControlSlider sender) \n        {\n            Color color = new Color();\n            color.R = (byte)m_colorSlider[0].GetValue();\n            color.G = (byte)m_colorSlider[1].GetValue();\n            color.B = (byte)m_colorSlider[2].GetValue();\n            color.A = 255;\n            Scanner.Color = color;\n        }        \n\n        public override bool Draw(float backgroundFadeAlpha)\n        {\n            if (!base.Draw(backgroundFadeAlpha))\n                return false;\n                        \n            MyGuiManager.DrawSpriteBatch(MyGuiManager.GetBlankTexture(), this.GetPositionAbsolute() + m_colorDrawPosition, new Vector2(0.04f, 0.04f), Scanner.Color, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER);\n\n            return true;\n        }\n\n        public override void OnOkClick(MyGuiControlButton sender)\n        {\n            base.OnOkClick(sender);\n            \n            Scanner.ReinitScanningPart();\n            Scanner.Enabled = m_onCheckbox.Checked;\n            Scanner.Activate(m_activatedCheckbox.Checked, false);\n\n            // close all opened screens except gameplay\n            MyGuiManager.CloseAllScreensExcept(MyGuiScreenGamePlay.Static);\n        }\n\n        public override void OnCancelClick(MyGuiControlButton sender)\n        {\n            base.OnCancelClick(sender);\n\n            Scanner.Size = m_originalSize;\n            Scanner.Color = m_originalColor;\n            Scanner.Enabled = m_originalOn;\n            Scanner.ScanningSpeed = m_originalScanningSpeed;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/ScreenEditor/Object3D/MyGuiScreenEditorSecurityControlHUB.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Prefabs;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing SysUtils.Utils;\nusing MinerWars.AppCode.Game.Entities.Prefabs;\nusing MinerWars.AppCode.Game.Entities;\nusing System.Diagnostics;\n\nnamespace MinerWars.AppCode.Game.GUI.ScreenEditor.Object3D\n{\n    class MyGuiScreenEditorSecurityControlHUB : MyGuiScreenEditorObject3DBase\n    {\n        private MyGuiControlListbox m_connectedPrefabIdsListbox;\n\n        public MyGuiScreenEditorSecurityControlHUB(MyPrefabSecurityControlHUB prefabSecurityControlHUB)\n            : base(prefabSecurityControlHUB, new Vector2(0.5f, 0.5f), MyGuiConstants.SCREEN_BACKGROUND_COLOR, null, MyTextsWrapperEnum.SecurityControlHUB)\n        {\n            Init();\n        }\n\n        private MyPrefabSecurityControlHUB PrefabSecurityControlHUB \n        {\n            get { return (MyPrefabSecurityControlHUB)m_entity; }\n            set { m_entity = value; }\n        }\n\n        private void Init() \n        {\n            m_windowIsMovable = false;\n            m_enableBackgroundFade = true;\n            m_size = new Vector2(0.45f, 0.875f);\n            AddCaption(new Vector2(0, -0.005f));\n\n            AddActivatedCheckbox(GetControlsOriginLeftFromScreenSize() + new Vector2(0.05f, 0.01f), PrefabSecurityControlHUB.Activated);\n            m_activatedCheckbox.OnCheck = OnActivateClick;\n\n            m_connectedPrefabIdsListbox = new MyGuiControlListbox(this, new Vector2(0, -0.02f), new Vector2(0.2f, 0.07f), MyGuiConstants.LISTBOX_BACKGROUND_COLOR,\n                MyTextsWrapper.Get(MyTextsWrapperEnum.ConnectedPrefabIds), MyGuiConstants.LABEL_TEXT_SCALE, 1, 7, 1, false, true, false);\n            foreach (IMyUseableEntity connectedEntity in PrefabSecurityControlHUB.ConnectedEntities) \n            {\n                MyEntity entity = connectedEntity as MyEntity;\n                Debug.Assert(entity.EntityId != null);\n                uint entityId = entity.EntityId.Value.NumericValue;\n                m_connectedPrefabIdsListbox.AddItem((int)entityId, new StringBuilder(entityId.ToString()));\n            }\n\n            Controls.Add(m_connectedPrefabIdsListbox);\n\n            Vector2 buttonPosition = m_connectedPrefabIdsListbox.GetPosition() + \n                new Vector2(-m_connectedPrefabIdsListbox.GetSize().Value.X / 2f, m_connectedPrefabIdsListbox.GetSize().Value.Y / 2f) + \n                new Vector2(-0.05f, 0.09f);\n            Controls.Add(new MyGuiControlButton(this, buttonPosition, MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.Add, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnAddClick,\n                MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER, true));\n            buttonPosition += new Vector2(0.18f, 0f);\n            Controls.Add(new MyGuiControlButton(this, buttonPosition, MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.Delete, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnDeleteClick,\n                MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER, true));            \n        }\n\n        private void OnActivateClick(MyGuiControlCheckbox sender) \n        {\n            PrefabSecurityControlHUB.Activate(sender.Checked, false);\n        }\n\n        private void OnDeleteClick(MyGuiControlButton sender) \n        {\n            int? selectedPrefabId = m_connectedPrefabIdsListbox.GetSelectedItemKey();\n            if (selectedPrefabId != null) \n            {\n                PrefabSecurityControlHUB.DisconnetEntity((uint)selectedPrefabId.Value);\n                m_connectedPrefabIdsListbox.RemoveItem(selectedPrefabId.Value);\n            }\n        }\n\n        private void OnAddClick(MyGuiControlButton sender) \n        {\n            MyGuiScreenEditorConnectPrefab connectPrefabScreen = new MyGuiScreenEditorConnectPrefab();\n            connectPrefabScreen.OnSubmit += ConnectPrefabScreen_OnSubmit;\n            MyGuiManager.AddScreen(connectPrefabScreen);\n        }\n\n        private void ConnectPrefabScreen_OnSubmit(object sender, EventArgs e)\n        {\n            MyGuiScreenEditorConnectPrefab connectPrefabScreen = (MyGuiScreenEditorConnectPrefab)sender;\n\n            uint prefabId = connectPrefabScreen.PrefabId;\n            MyConnectEntityOperation result = PrefabSecurityControlHUB.ConnectEntity(prefabId);\n            switch (result)\n            {\n                case MyConnectEntityOperation.AlreadyConnected:\n                    DisplayErrorMessage(MyTextsWrapperEnum.EntityIsAlreadyConnected);\n                    break;\n                case MyConnectEntityOperation.NotExists:\n                    DisplayErrorMessage(MyTextsWrapperEnum.EntityIsNotExist);\n                    break;\n                case MyConnectEntityOperation.NotSupported:\n                    DisplayErrorMessage(MyTextsWrapperEnum.EntityIsNotSupported);\n                    break;\n                case MyConnectEntityOperation.Success:\n                    m_connectedPrefabIdsListbox.AddItem((int)prefabId, new StringBuilder(prefabId.ToString()));\n                    connectPrefabScreen.CloseScreen();\n                    break;\n                default:\n                    throw new MyMwcExceptionApplicationShouldNotGetHere();\n            }\n        }        \n\n        private void DisplayErrorMessage(MyTextsWrapperEnum errorText) \n        {\n            MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, errorText, MyTextsWrapperEnum.EmptyDescription, MyTextsWrapperEnum.Ok, null));\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenEditorSecurityControlHUB\";\n        }\n    }\n    \n    class MyGuiScreenEditorConnectPrefab : MyGuiScreenBase \n    {\n        private MyGuiControlTextbox m_prefabIdTextbox;\n\n        public MyGuiScreenEditorConnectPrefab()\n            : base(new Vector2(0.5f, 0.5f), MyGuiConstants.SCREEN_BACKGROUND_COLOR, new Vector2(0.3f, 0.2f)) \n        {\n            Vector2 leftTop = -m_size.Value / 2f + new Vector2(0.025f, 0.025f);\n\n            m_size = new Vector2(0.3f, 0.25f);\n\n            MyGuiControlLabel label = new MyGuiControlLabel(this, leftTop, null, MyTextsWrapperEnum.ConnectEntityWithId, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP);\n            Controls.Add(label);\n            leftTop.Y += label.GetSize().Value.Y + 0.025f;\n\n            m_prefabIdTextbox = new MyGuiControlTextbox(this, leftTop + MyGuiConstants.TEXTBOX_SMALL_SIZE / 2f, MyGuiControlPreDefinedSize.SMALL, string.Empty, 10, MyGuiConstants.LABEL_TEXT_COLOR,\n                MyGuiConstants.LABEL_TEXT_SCALE * 0.75f, MyGuiControlTextboxType.DIGITS_ONLY);\n            Controls.Add(m_prefabIdTextbox);\n\n            Controls.Add(new MyGuiControlButton(this, new Vector2(0f, 0.05f), MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.Ok, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnOkClick,\n                MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n\n            OnEnterCallback += OnOkClickDelegate;\n        }\n\n        public event EventHandler OnSubmit;\n\n        private void OnOkClickDelegate()\n        {\n            OnOkClick(null);\n        }\n\n        private void OnOkClick(MyGuiControlButton sender) \n        {\n            if (string.IsNullOrEmpty(m_prefabIdTextbox.Text)) \n            {\n                CloseScreenNow();\n                return;\n            }\n\n            if (OnSubmit != null) \n            {\n                OnSubmit(this, EventArgs.Empty);\n            }\n        }\n\n        public uint PrefabId \n        {\n            get \n            {\n                return uint.Parse(m_prefabIdTextbox.Text);\n            }\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenEditorConnectPrefab\";\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/ScreenEditor/Object3D/MyGuiScreenEditorSmallShip.cs",
    "content": "﻿using System;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.GUI.Helpers;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Editor;\nusing MinerWars.AppCode.Game.Inventory;\nusing System.Text;\nusing System.Collections.Generic;\nusing MinerWars.AppCode.Game.Managers.Others;\n\nnamespace MinerWars.AppCode.Game.GUI.ScreenEditor.Object3D\n{\n    class MyGuiScreenEditorSmallShip : MyGuiScreenEditorObject3DBase\n    {\n        public Action OnOk = null;\n\n        MyGuiControlCombobox m_selectSmallShipCombobox;\n        MyGuiControlCombobox m_selectShipFactionCombobox;\n        \n        MyGuiControlCombobox m_selectAITemplateCombobox;\n\n        MyGuiControlSlider m_aggresivitySlider;\n        MyGuiControlLabel m_aggresivityLabel;\n\n        MyGuiControlSlider m_seeDistanceSlider;\n        MyGuiControlLabel m_seeDistanceLabel;\n\n        MyMwcObjectBuilder_SmallShip_Bot m_botBuilder;\n        MySmallShipBot m_bot;\n        List<MySmallShipBuilderWithName> m_templatesBuilders;\n        MyInventory m_inventory;\n\n        MyMwcObjectBuilder_SmallShip_Bot m_newBotBuilderToInit;\n        Matrix m_newBotWorldMatrixToInit;\n        \n        public MyGuiScreenEditorSmallShip(Vector2? screenPosition)\n            : base(new Vector2(0.5f, 0.5f), MyGuiConstants.SCREEN_BACKGROUND_COLOR, null, MyTextsWrapperEnum.CreateSmallShip, screenPosition)\n        {\n            Init();\n        }\n\n        public MyGuiScreenEditorSmallShip(MySmallShip smallShip)\n            : base(smallShip, new Vector2(0.5f, 0.5f), MyGuiConstants.SCREEN_BACKGROUND_COLOR, null, MyTextsWrapperEnum.EditSmallShip)\n        {\n            m_bot = smallShip as MySmallShipBot;\n\n            Init();\n\n            m_selectShipFactionCombobox.SelectItemByKey((int)m_bot.Faction);\n            m_selectAITemplateCombobox.SelectItemByKey((int)m_bot.AITemplate.TemplateId);\n            m_aggresivitySlider.SetValue(m_bot.Aggressivity);\n            m_seeDistanceSlider.SetValue(m_bot.SeeDistance);\n            m_selectSmallShipCombobox.SelectItemByKey((int)m_bot.ShipType);\n        }\n\n        public MyGuiScreenEditorSmallShip(MyMwcObjectBuilder_SmallShip_Bot botBuilder, List<MySmallShipBuilderWithName> templateBuilders, int selectedIndex)\n            : base(null, new Vector2(0.5f, 0.5f), MyGuiConstants.SCREEN_BACKGROUND_COLOR, null, MyTextsWrapperEnum.EditSmallShip)\n        {\n            m_botBuilder = botBuilder;\n            m_templatesBuilders = templateBuilders;\n\n            Init();\n\n            m_selectShipFactionCombobox.SelectItemByKey((int)m_botBuilder.Faction);\n            m_selectAITemplateCombobox.SelectItemByKey((int)m_botBuilder.AITemplate);\n            m_aggresivitySlider.SetValue(m_botBuilder.Aggressivity);\n            m_seeDistanceSlider.SetValue(m_botBuilder.SeeDistance);\n            m_selectSmallShipCombobox.SelectItemByIndex(selectedIndex);\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenEditorSmallShip\";\n        }\n\n        void Init()\n        {\n            m_enableBackgroundFade = true;\n            m_size = new Vector2(0.73f, 0.93f);\n            Vector2 controlsOriginLeft = GetControlsOriginLeftFromScreenSize() + new Vector2(0.02f, 0.01f);\n            Vector2 controlsOriginRight = GetControlsOriginRightFromScreenSize();\n\n            // Add screen title\n            AddCaption();            \n\n            #region Faction nationality\n\n            Controls.Add(new MyGuiControlLabel(this, controlsOriginLeft + 1 * CONTROLS_DELTA, null, MyTextsWrapperEnum.SetShipFaction, MyGuiConstants.LABEL_TEXT_COLOR,\n                MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n\n            m_selectShipFactionCombobox = new MyGuiControlCombobox(this, controlsOriginRight + 1 * CONTROLS_DELTA + new Vector2(MyGuiConstants.COMBOBOX_MEDIUM_SIZE.X / 2.0f, 0),\n                MyGuiControlPreDefinedSize.MEDIUM, MyGuiConstants.COMBOBOX_BACKGROUND_COLOR, MyGuiConstants.COMBOBOX_TEXT_SCALE, 5);\n\n            foreach (MyMwcObjectBuilder_FactionEnum enumValue in MyGuiSmallShipHelpers.MyMwcObjectBuilder_SmallShip_ShipFactionNationalityEnumValues)\n            {\n                MyGuiHelperBase factionNationalityHelper = MyGuiSmallShipHelpers.GetMyGuiSmallShipFactionNationality(enumValue);\n                m_selectShipFactionCombobox.AddItem((int)enumValue, null, factionNationalityHelper.Description);\n            }\n\n            m_selectShipFactionCombobox.SelectItemByKey(1);\n            Controls.Add(m_selectShipFactionCombobox);\n\n            #endregion\n\n            // AI Template\n            Controls.Add(new MyGuiControlLabel(this, controlsOriginLeft + 2 * CONTROLS_DELTA, null, MyTextsWrapperEnum.AITemplate, MyGuiConstants.LABEL_TEXT_COLOR,\n                MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n\n            m_selectAITemplateCombobox = new MyGuiControlCombobox(this, controlsOriginRight + 2 * CONTROLS_DELTA + new Vector2(MyGuiConstants.COMBOBOX_MEDIUM_SIZE.X / 2.0f, 0),\n                MyGuiControlPreDefinedSize.MEDIUM, MyGuiConstants.COMBOBOX_BACKGROUND_COLOR, MyGuiConstants.COMBOBOX_TEXT_SCALE, 5);\n\n            foreach (MyAITemplateEnum enumValue in MyGuiSmallShipHelpers.MyMwcObjectBuilder_SmallShip_BotAITemplateValues)\n            {\n                MyGuiHelperBase aiTemplateHelper = MyGuiSmallShipHelpers.GetMyGuiSmallShipBotAITemplate(enumValue);\n                if (aiTemplateHelper != null)\n                    m_selectAITemplateCombobox.AddItem((int)enumValue, null, aiTemplateHelper.Description);\n            }\n\n            m_selectAITemplateCombobox.SelectItemByKey(0);\n            Controls.Add(m_selectAITemplateCombobox);\n\n            // Aggresivity\n            Controls.Add(new MyGuiControlLabel(this, controlsOriginLeft + 3 * CONTROLS_DELTA, null, MyTextsWrapperEnum.Aggressivity, MyGuiConstants.LABEL_TEXT_COLOR,\n                MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n\n            m_aggresivitySlider = new MyGuiControlSlider(this, controlsOriginRight + 3 * CONTROLS_DELTA + new Vector2(MyGuiConstants.SLIDER_WIDTH / 2, 0), MyGuiConstants.SLIDER_WIDTH,\n                                        0, 1, MyGuiConstants.SLIDER_BACKGROUND_COLOR,\n                                        new StringBuilder(), MyGuiConstants.SLIDER_WIDTH_LABEL, 0, MyGuiConstants.LABEL_TEXT_SCALE * 0.85f);\n\n            m_aggresivityLabel = new MyGuiControlLabel(this, controlsOriginRight + 3 * CONTROLS_DELTA + new Vector2(MyGuiConstants.SLIDER_WIDTH, 0), null, MyTextsWrapperEnum.SetShipFaction, MyGuiConstants.LABEL_TEXT_COLOR,\n                MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER);\n\n            Controls.Add(m_aggresivitySlider);\n            Controls.Add(m_aggresivityLabel);\n\n            m_aggresivitySlider.OnChange += OnAggresivityChanged;\n            OnAggresivityChanged(m_aggresivitySlider);\n\n            // See distance\n            Controls.Add(new MyGuiControlLabel(this, controlsOriginLeft + 4 * CONTROLS_DELTA, null, MyTextsWrapperEnum.SeeDistance, MyGuiConstants.LABEL_TEXT_COLOR,\n                MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n\n            m_seeDistanceSlider = new MyGuiControlSlider(this, controlsOriginRight + 4 * CONTROLS_DELTA + new Vector2(MyGuiConstants.SLIDER_WIDTH / 2, 0), MyGuiConstants.SLIDER_WIDTH,\n                                        0, 1000, MyGuiConstants.SLIDER_BACKGROUND_COLOR,\n                                        new StringBuilder(), MyGuiConstants.SLIDER_WIDTH_LABEL, 0, MyGuiConstants.LABEL_TEXT_SCALE * 0.85f);\n\n            m_seeDistanceLabel = new MyGuiControlLabel(this, controlsOriginRight + 4 * CONTROLS_DELTA + new Vector2(MyGuiConstants.SLIDER_WIDTH, 0), null, MyTextsWrapperEnum.SetShipFaction, MyGuiConstants.LABEL_TEXT_COLOR,\n                MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER);\n\n            Controls.Add(m_seeDistanceSlider);\n            Controls.Add(m_seeDistanceLabel);\n\n            m_seeDistanceSlider.OnChange += OnSeeDistanceChanged;\n            OnSeeDistanceChanged(m_seeDistanceSlider);\n\n            #region Smallship Model\n\n            MyGuiControlLabel smallShipLabel = new MyGuiControlLabel(this, controlsOriginLeft + 5 * CONTROLS_DELTA, null, MyTextsWrapperEnum.ChooseModel, MyGuiConstants.LABEL_TEXT_COLOR,\n                MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER);\n            Controls.Add(smallShipLabel);\n\n            //COMBOBOX - small ship\n            var comboboxPredefinedSize = MyGuiControlPreDefinedSize.LONGMEDIUM;\n            var comboboxSize = MyGuiControlCombobox.GetPredefinedControlSize(comboboxPredefinedSize);\n            m_selectSmallShipCombobox = new MyGuiControlCombobox(\n                this,\n                controlsOriginLeft + 5 * CONTROLS_DELTA + 0.5f * new Vector2(comboboxSize.X, 0) + new Vector2(0.19f, 0.01f),\n                comboboxPredefinedSize,\n                MyGuiConstants.COMBOBOX_BACKGROUND_COLOR,\n                MyGuiConstants.COMBOBOX_TEXT_SCALE,\n                6,\n                true,\n                false,\n                true);\n\n            if (m_templatesBuilders == null)\n            {\n                foreach (MyMwcObjectBuilder_SmallShip_TypesEnum enumValue in MyGuiSmallShipHelpers.MyMwcObjectBuilder_SmallShip_TypesEnumValues)\n                {\n                    //MyGuiSmallShipHelperSmallShip smallShipHelper = MyGuiSmallShipHelpers.GetMyGuiSmallShipHelperSmallShip(enumValue);\n                    MyGuiSmallShipHelperSmallShip smallShipHelper = MyGuiObjectBuilderHelpers.GetGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip, (int)enumValue) as MyGuiSmallShipHelperSmallShip;\n                    m_selectSmallShipCombobox.AddItem((int)enumValue, smallShipHelper.Icon, smallShipHelper.Name);\n                }\n                m_selectSmallShipCombobox.SelectItemByKey(1);\n            }\n            else \n            {\n                for(int i = 0; i < m_templatesBuilders.Count; i++)\n                {\n                    var templateBuilder = m_templatesBuilders[i];\n                    m_selectSmallShipCombobox.AddItem(i, templateBuilder.Name);\n                }                \n            }\n            \n            m_selectSmallShipCombobox.OnSelectItemDoubleClick += OnOkClick;\n            Controls.Add(m_selectSmallShipCombobox);\n            #endregion\n\n            if (m_bot != null)\n            {\n                Controls.Add(new MyGuiControlButton(this, controlsOriginLeft + 10 * CONTROLS_DELTA + new Vector2(0.07f, 0.02f), MyGuiConstants.PROGRESS_CANCEL_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                    MyTextsWrapperEnum.Inventory, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnInventoryClick, MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n\n                AddActivatedCheckbox(controlsOriginLeft, m_bot.Activated);\n            }\n\n            AddOkAndCancelButtonControls(new Vector2(0, -0.02f));\n        }\n\n        private void OnInventoryClick(MyGuiControlButton sender)\n        {\n            MyInventory inventory = new MyInventory();\n            inventory.FillInventoryWithAllItems(null, 100);\n\n            List<MySmallShipBuilderWithName> tempList = new List<MySmallShipBuilderWithName>();\n            tempList.Add(new MySmallShipBuilderWithName(m_bot.GetObjectBuilder(true) as MyMwcObjectBuilder_SmallShip_Bot));\n\n            MyGuiScreenInventory inventoryScreen = new MyGuiScreenInventory(tempList, 0, inventory.GetObjectBuilder(false), null, true);\n            inventoryScreen.OnSave += OnEditBotFromScreen;\n            MyGuiManager.AddScreen(inventoryScreen);\n        }\n\n        private void OnEditBotFromScreen(MyGuiScreenInventory sender, MyGuiScreenInventorySaveResult saveResult)\n        {\n            MySmallShipBuilderWithName resultBuilder = saveResult.SmallShipsObjectBuilders[saveResult.CurrentIndex];\n            m_inventoryBuilder = resultBuilder.Builder;\n        }\n\n        private void OnAggresivityChanged(MyGuiControlSlider sender)\n        {\n            m_aggresivityLabel.UpdateText(string.Format(\" {0:0.00}\", m_aggresivitySlider.GetValue()));\n        }\n\n        private void OnSeeDistanceChanged(MyGuiControlSlider sender)\n        {\n            m_seeDistanceLabel.UpdateText(string.Format(\" {0:#,###0} \" + MyTextsWrapper.Get(MyTextsWrapperEnum.MetersLong).ToString(), m_seeDistanceSlider.GetValue()));\n        }\n\n        private void OnOkClick()\n        {\n            OnOkClick(null);\n        }\n\n        private MyMwcObjectBuilder_SmallShip m_inventoryBuilder;\n\n        public override void OnOkClick(MyGuiControlButton sender)\n        {\n            base.OnOkClick(sender);\n\n            if (m_botBuilder != null)\n            {\n                m_botBuilder.Faction = (MyMwcObjectBuilder_FactionEnum)m_selectShipFactionCombobox.GetSelectedKey();\n                m_botBuilder.AITemplate = (MyAITemplateEnum)m_selectAITemplateCombobox.GetSelectedKey();\n                m_botBuilder.Aggressivity = m_aggresivitySlider.GetValue();\n                m_botBuilder.SeeDistance = m_seeDistanceSlider.GetValue();\n                var templateBuilder = m_templatesBuilders[m_selectSmallShipCombobox.GetSelectedKey()];\n                bool isTemplate = templateBuilder.UserData != null;\n                if (isTemplate)\n                {\n                    var template = templateBuilder.UserData as MySmallShipTemplate;                    \n                    if (m_botBuilder.ShipTemplateID == null)\n                    {\n                        if (m_inventoryBuilder == null)\n                        {\n                            m_botBuilder.Inventory = null;\n                            m_botBuilder.Weapons = null;\n                            m_botBuilder.Engine = null;\n                            m_botBuilder.Armor = null;\n                            m_botBuilder.Radar = null;\n                        }\n                        else\n                        {\n                            m_botBuilder.Inventory = m_inventoryBuilder.Inventory;\n                            m_botBuilder.Weapons = m_inventoryBuilder.Weapons;\n                            m_botBuilder.Engine = m_inventoryBuilder.Engine;\n                            m_botBuilder.Armor = m_inventoryBuilder.Armor;\n                            m_botBuilder.Radar = m_inventoryBuilder.Radar;\n                        }\n                    }                    \n                    m_botBuilder.ShipTemplateID = template.ID;\n                }\n                else\n                {\n                    var builderWithAllItems = MyMwcObjectBuilder_SmallShip_Bot.CreateObjectBuilderWithAllItems(templateBuilder.Builder.ShipType, MyShipTypeConstants.GetShipTypeProperties(templateBuilder.Builder.ShipType).GamePlay.CargoCapacity);\n                    if (m_botBuilder.ShipTemplateID != null) \n                    {\n                        m_botBuilder.Inventory = builderWithAllItems.Inventory;\n                        m_botBuilder.Weapons = builderWithAllItems.Weapons;\n                        m_botBuilder.Engine = builderWithAllItems.Engine;\n                        m_botBuilder.Armor = builderWithAllItems.Armor;\n                        m_botBuilder.Radar = builderWithAllItems.Radar;\n                    }\n                    m_botBuilder.ShipTemplateID = null;\n                }\n                m_botBuilder.ShipType = templateBuilder.Builder.ShipType;\n                CloseAndCallOnOk();\n            }\n            else if (m_bot != null) // edit SmallShip\n            {\n                Matrix matrix = m_bot.WorldMatrix;\n                MyMwcObjectBuilder_SmallShip_Bot botBuilder = m_bot.GetObjectBuilder(true) as MyMwcObjectBuilder_SmallShip_Bot;\n                System.Diagnostics.Debug.Assert(botBuilder != null);\n\n                botBuilder.Faction = (MyMwcObjectBuilder_FactionEnum)m_selectShipFactionCombobox.GetSelectedKey();\n                botBuilder.AITemplate = (MyAITemplateEnum)m_selectAITemplateCombobox.GetSelectedKey();\n                botBuilder.Aggressivity = m_aggresivitySlider.GetValue();\n                botBuilder.SeeDistance = m_seeDistanceSlider.GetValue();\n                botBuilder.ShipType = (MyMwcObjectBuilder_SmallShip_TypesEnum)m_selectSmallShipCombobox.GetSelectedKey();\n\n                if (m_inventoryBuilder != null)\n                {\n                    botBuilder.Inventory = m_inventoryBuilder.Inventory;\n                    botBuilder.Weapons = m_inventoryBuilder.Weapons;\n                    botBuilder.Engine = m_inventoryBuilder.Engine;\n                    botBuilder.Armor = m_inventoryBuilder.Armor;\n                    botBuilder.Radar = m_inventoryBuilder.Radar;\n                }\n\n                MyEditorGizmo.ClearSelection();\n                m_newBotBuilderToInit = botBuilder;\n                m_newBotWorldMatrixToInit = matrix;\n                m_bot.MarkForClose();\n                m_bot.OnClose += OnOldBodClose;\n            }\n            else // create SmallShip\n            {\n                MyMwcObjectBuilder_SmallShip_TypesEnum shipType = (MyMwcObjectBuilder_SmallShip_TypesEnum)\n                    Enum.ToObject(typeof(MyMwcObjectBuilder_SmallShip_TypesEnum), m_selectSmallShipCombobox.GetSelectedKey());\n\n                MyMwcObjectBuilder_FactionEnum shipFaction = (MyMwcObjectBuilder_FactionEnum)\n                    Enum.ToObject(typeof(MyMwcObjectBuilder_FactionEnum), m_selectShipFactionCombobox.GetSelectedKey());\n\n                MyMwcPositionAndOrientation positionAndOrientation = new MyMwcPositionAndOrientation(m_newObjectPosition, Vector3.Forward, Vector3.Up);\n                MyMwcObjectBuilder_SmallShip_Bot botBuilder = MyEditor.CreateDefaultBotObjectBuilder(positionAndOrientation.Position, positionAndOrientation.Forward,\n                    positionAndOrientation.Up, shipType, shipFaction);\n\n                botBuilder.AITemplate = (MyAITemplateEnum)m_selectAITemplateCombobox.GetSelectedKey();\n                botBuilder.Aggressivity = m_aggresivitySlider.GetValue();\n                botBuilder.SeeDistance = m_seeDistanceSlider.GetValue();\n\n                MyEditor.Static.CreateFromObjectBuilder(botBuilder, Matrix.CreateWorld(m_newObjectPosition, Vector3.Forward, Vector3.Up), m_screenPosition);\n                CloseAndCallOnOk();\n            }            \n        }\n\n        private void OnOldBodClose(MyEntity entity) \n        {\n            var newBot = MyEntities.CreateFromObjectBuilderAndAdd(null, m_newBotBuilderToInit, m_newBotWorldMatrixToInit);\n            newBot.Activate(m_activatedCheckbox.Checked, false);\n            MyEditorGizmo.AddEntityToSelection(newBot);\n            CloseAndCallOnOk();\n        }\n\n        private void CloseAndCallOnOk() \n        {\n            CloseScreen();\n\n            if (OnOk != null)\n            {\n                OnOk();\n            }\n        }\n\n        protected override Vector2 GetControlsOriginLeftFromScreenSize()\n        {\n            return base.GetControlsOriginLeftFromScreenSize() + new Vector2(0.01f, 0);\n        }\n\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/ScreenEditor/Object3D/MyGuiScreenEditorSpawnPoint.cs",
    "content": "﻿using System;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.GUI.Helpers;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing System.Text;\nusing System.Collections.Generic;\nusing MinerWars.AppCode.Game.Entities.WayPoints;\nusing MinerWars.AppCode.Game.Inventory;\nusing MinerWars.AppCode.Game.Gameplay;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Managers.Others;\nusing System.Diagnostics;\n\nnamespace MinerWars.AppCode.Game.GUI.ScreenEditor.Object3D\n{\n\n    // gui screen\n    class MyGuiScreenEditorSpawnPoint : MyGuiScreenEditorObject3DBase\n    {\n        private const int TEXTBOX_NUMBERS_MAX_LENGTH = 6;\n        public const int TEMPLATE_INDEX_OFFSET = 10000;\n\n        MySpawnPoint m_spawnPoint;\n\n        MyGuiControlCombobox m_selectShipFactionCombobox;\n        MyGuiControlCombobox m_waypointPathCombobox;\n        MyGuiControlCombobox m_patrolModeCombobox;\n\n        MyGuiControlSlider m_radiusSlider;\n        MyGuiControlSlider m_firstSpawnTimeSlider;\n        MyGuiControlSlider m_respawnTimeSlider;\n        MyGuiControlListbox m_selectShipsListbox;\n\n        MyGuiControlLabel m_radiusLabel;\n        MyGuiControlLabel m_firstSpawnLabel;\n        MyGuiControlLabel m_respawnLabel;\n\n        MyGuiControlCheckbox m_spawnInGroupsCheckbox;\n        MyGuiControlCheckbox m_activeCheckbox;\n        MyGuiControlTextbox m_spawnedBotsTextbox;\n\n        Dictionary<int, BotTemplate> m_bots;\n\n        public MyGuiScreenEditorSpawnPoint()\n            : base(new Vector2(0.5f, 0.5f), MyGuiConstants.SCREEN_BACKGROUND_COLOR, null, MyTextsWrapperEnum.SpawnPoint)\n        {\n            Init();\n        }\n\n        public MyGuiScreenEditorSpawnPoint(MySpawnPoint spawnPoint)\n            : base(spawnPoint, new Vector2(0.5f, 0.5f), MyGuiConstants.SCREEN_BACKGROUND_COLOR, null, MyTextsWrapperEnum.SpawnPoint)\n        {\n            m_spawnPoint = spawnPoint;\n            Init();\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenEditorSpawnPoint\";\n        }\n\n        void Init()\n        {\n            m_enableBackgroundFade = true;\n            m_size = new Vector2(0.97f, 0.85f);\n            Vector2 controlsOriginLeft = GetControlsOriginLeftFromScreenSize() + new Vector2(0.04f, 0);\n\n            m_bots = new Dictionary<int, BotTemplate>();\n\n            // Add screen title\n            AddCaption(new Vector2(0, 0.028f));\n\n            //Faction\n            Controls.Add(new MyGuiControlLabel(this, controlsOriginLeft + 1 * CONTROLS_DELTA, null, MyTextsWrapperEnum.SetShipFaction, MyGuiConstants.LABEL_TEXT_COLOR,\n                MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n\n            m_selectShipFactionCombobox = new MyGuiControlCombobox(this, (new Vector2(0.31f, 0)) + controlsOriginLeft + 1 * CONTROLS_DELTA,\n                MyGuiControlPreDefinedSize.MEDIUM, MyGuiConstants.COMBOBOX_BACKGROUND_COLOR, MyGuiConstants.COMBOBOX_TEXT_SCALE, 8);\n\n            foreach (MyMwcObjectBuilder_FactionEnum enumValue in MyGuiSmallShipHelpers.MyMwcObjectBuilder_SmallShip_ShipFactionNationalityEnumValues)\n            {\n                MyGuiHelperBase factionNationalityHelper = MyGuiSmallShipHelpers.GetMyGuiSmallShipFactionNationality(enumValue);\n                m_selectShipFactionCombobox.AddItem((int)enumValue, null, factionNationalityHelper.Description);\n            }\n\n            m_selectShipFactionCombobox.SelectItemByKey((int)MyMwcObjectBuilder_FactionEnum.China);//hopefuly china\n            Controls.Add(m_selectShipFactionCombobox);\n\n            //radius slider\n            Controls.Add(new MyGuiControlLabel(this, controlsOriginLeft + 2 * CONTROLS_DELTA, null, MyTextsWrapperEnum.Radius, MyGuiConstants.LABEL_TEXT_COLOR,\n                MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n            m_radiusSlider = new MyGuiControlSlider(this, (new Vector2(0.25f, 0) + controlsOriginLeft) + 2 * CONTROLS_DELTA, MyGuiConstants.SLIDER_WIDTH,\n                15, 200, MyGuiConstants.SLIDER_BACKGROUND_COLOR,\n                new StringBuilder(), MyGuiConstants.SLIDER_WIDTH_LABEL, 0, MyGuiConstants.LABEL_TEXT_SCALE * 0.85f);\n            m_radiusSlider.SetNormalizedValue(0.2f);\n            m_radiusSlider.OnChange = OnComponentChange;\n            Controls.Add(m_radiusSlider);\n            Controls.Add(m_radiusLabel = new MyGuiControlLabel(this, new Vector2(m_radiusSlider.GetPosition().X + m_radiusSlider.GetSize().Value.X / 2 + 0.01f, controlsOriginLeft.Y) + 2 * CONTROLS_DELTA, null, MyTextsWrapperEnum.Radius, MyGuiConstants.LABEL_TEXT_COLOR,\n                MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n\n            //first spawn timer\n            Controls.Add(new MyGuiControlLabel(this, \n                controlsOriginLeft + 3 * CONTROLS_DELTA, null, MyTextsWrapperEnum.FirstSpawn, MyGuiConstants.LABEL_TEXT_COLOR,\n                MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n            m_firstSpawnTimeSlider = new MyGuiControlSlider(this, \n                (new Vector2(0.25f, 0) + controlsOriginLeft) + 3 * CONTROLS_DELTA, MyGuiConstants.SLIDER_WIDTH,\n                0, 10 * 60 * 1000, MyGuiConstants.SLIDER_BACKGROUND_COLOR,\n                new StringBuilder(), MyGuiConstants.SLIDER_WIDTH_LABEL, 0, MyGuiConstants.LABEL_TEXT_SCALE * 0.85f);\n            m_firstSpawnTimeSlider.OnChange = OnComponentChange;\n            m_firstSpawnTimeSlider.SetNormalizedValue(0.0f);\n            Controls.Add(m_firstSpawnTimeSlider);\n            Controls.Add(m_firstSpawnLabel = new MyGuiControlLabel(this,\n                new Vector2(m_firstSpawnTimeSlider.GetPosition().X + m_firstSpawnTimeSlider.GetSize().Value.X / 2 + 0.01f, controlsOriginLeft.Y) + 3 * CONTROLS_DELTA, null, MyTextsWrapperEnum.Respawn, MyGuiConstants.LABEL_TEXT_COLOR,\n                MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n\n            //respawn timer\n            Controls.Add(new MyGuiControlLabel(this, controlsOriginLeft + 4 * CONTROLS_DELTA, null, MyTextsWrapperEnum.Respawn, MyGuiConstants.LABEL_TEXT_COLOR,\n                MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n            m_respawnTimeSlider = new MyGuiControlSlider(this, controlsOriginLeft + new Vector2(0.25f, 0) + 4 * CONTROLS_DELTA, MyGuiConstants.SLIDER_WIDTH,\n                0, 10 * 60 * 1000, MyGuiConstants.SLIDER_BACKGROUND_COLOR,\n                new StringBuilder(), MyGuiConstants.SLIDER_WIDTH_LABEL, 0, MyGuiConstants.LABEL_TEXT_SCALE * 0.85f);\n            m_respawnTimeSlider.OnChange = OnComponentChange;\n            m_respawnTimeSlider.SetNormalizedValue(0.0f);\n            Controls.Add(m_respawnTimeSlider);\n            Controls.Add(m_respawnLabel = new MyGuiControlLabel(this, new Vector2(m_respawnTimeSlider.GetPosition().X + m_respawnTimeSlider.GetSize().Value.X / 2 + 0.01f, controlsOriginLeft.Y) + 4 * CONTROLS_DELTA, null, MyTextsWrapperEnum.Respawn, MyGuiConstants.LABEL_TEXT_COLOR,\n                MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n\n            //waypoints\n            Controls.Add(new MyGuiControlLabel(this, controlsOriginLeft + 5 * CONTROLS_DELTA, null, MyTextsWrapperEnum.WayPointPath, MyGuiConstants.LABEL_TEXT_COLOR,\n                MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n\n            m_waypointPathCombobox = new MyGuiControlCombobox(this, new Vector2(0.31f, 0) + controlsOriginLeft + 5 * CONTROLS_DELTA,\n                MyGuiControlPreDefinedSize.MEDIUM, MyGuiConstants.COMBOBOX_BACKGROUND_COLOR, MyGuiConstants.COMBOBOX_TEXT_SCALE, 8);\n\n            int k = 0;\n            int selected = 0;\n            m_waypointPathCombobox.AddItem(k++, null, MyTextsWrapper.Get(MyTextsWrapperEnum.None));\n            foreach (var path in MyWayPointGraph.StoredPaths)\n            {\n                if (HasEntity() && String.Compare(path.Name, m_spawnPoint.GetWaypointPath()) == 0)\n                {\n                    selected = k;\n                }\n                m_waypointPathCombobox.AddItem(k++, null, new StringBuilder(path.Name));\n            }\n\n            m_waypointPathCombobox.SelectItemByKey(selected);// \n            Controls.Add(m_waypointPathCombobox);\n\n            // patrol mode\n            Controls.Add(new MyGuiControlLabel(this, controlsOriginLeft + 6 * CONTROLS_DELTA, null, MyTextsWrapperEnum.PatrolMode, MyGuiConstants.LABEL_TEXT_COLOR,\n                MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n\n            m_patrolModeCombobox = new MyGuiControlCombobox(this, new Vector2(0.31f, 0) + controlsOriginLeft + 6 * CONTROLS_DELTA,\n                MyGuiControlPreDefinedSize.MEDIUM, MyGuiConstants.COMBOBOX_BACKGROUND_COLOR, MyGuiConstants.COMBOBOX_TEXT_SCALE, 8);\n\n            foreach (MyPatrolMode enumValue in MyGuiSmallShipHelpers.MyMwcObjectBuilder_SmallShip_PatrolModes)\n            {\n                MyGuiHelperBase patrolModeHelper = MyGuiSmallShipHelpers.GetMyGuiSmallShipPatrolMode(enumValue);\n                m_patrolModeCombobox.AddItem((int)enumValue, null, patrolModeHelper.Description);\n            } \n            \n            m_patrolModeCombobox.SelectItemByKey(HasEntity() ? (int)m_spawnPoint.PatrolMode : 0);\n            Controls.Add(m_patrolModeCombobox);\n\n            #region Smallship Bots To Spawn\n            //MyGuiControlLabel smallShipLabel = new MyGuiControlLabel(this, controlsOriginLeft + 6 * CONTROLS_DELTA, null, MyTextsWrapperEnum.ChooseModel, MyGuiConstants.LABEL_TEXT_COLOR,\n            //    MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER);\n            //Controls.Add(smallShipLabel);\n\n            m_selectShipsListbox = new MyGuiControlListbox(this, controlsOriginLeft + 7 * CONTROLS_DELTA + new Vector2(MyGuiConstants.COMBOBOX_LARGE_SIZE.X / 2.0f + MyGuiConstants.LISTBOX_SCROLLBAR_WIDTH / 2.0f, MyGuiConstants.COMBOBOX_LARGE_SIZE.Y * 2.5f), MyGuiConstants.LISTBOX_LONGMEDIUM_SIZE,\n                MyGuiConstants.COMBOBOX_BACKGROUND_COLOR, null, MyGuiConstants.LABEL_TEXT_SCALE, 1, 6, 1, false, true, false);\n                \n\n            //m_selectShipsListbox.ItemSelect = OnItemSelect;\n            m_selectShipsListbox.ItemDoubleClick += OnDoubleClick;\n\n            Controls.Add(m_selectShipsListbox);\n\n\n            Vector2 columnOriginLeft = new Vector2(0.178f, controlsOriginLeft.Y);\n            Vector2 controlsOriginRight = new Vector2(m_size.Value.X / 2.0f - 0.05f, controlsOriginLeft.Y);\n\n            //  Activated\n            Controls.Add(new MyGuiControlLabel(this, columnOriginLeft + MyGuiConstants.CONTROLS_DELTA, null, MyTextsWrapperEnum.Active, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n            m_activeCheckbox = new MyGuiControlCheckbox(this, controlsOriginRight + MyGuiConstants.CONTROLS_DELTA - new Vector2(MyGuiConstants.CHECKBOX_SIZE.X / 2.0f + 0.02f, 0), true, MyGuiConstants.CHECKBOX_BACKGROUND_COLOR);\n            Controls.Add(m_activeCheckbox);\n\n            //  Spawn in groups\n            Controls.Add(new MyGuiControlLabel(this, columnOriginLeft + 2 * MyGuiConstants.CONTROLS_DELTA, null, MyTextsWrapperEnum.SpawnInGroups, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n            m_spawnInGroupsCheckbox = new MyGuiControlCheckbox(this, controlsOriginRight + 2 * MyGuiConstants.CONTROLS_DELTA - new Vector2(MyGuiConstants.CHECKBOX_SIZE.X / 2.0f + 0.02f, 0), true, MyGuiConstants.CHECKBOX_BACKGROUND_COLOR);\n            Controls.Add(m_spawnInGroupsCheckbox);\n\n            Controls.Add(new MyGuiControlLabel(this, columnOriginLeft + 3 * MyGuiConstants.CONTROLS_DELTA, null, MyTextsWrapperEnum.SpawnedBots,\n                                               MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE,\n                                               MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n            m_spawnedBotsTextbox = new MyGuiControlTextbox(this, columnOriginLeft + 4 * MyGuiConstants.CONTROLS_DELTA + new Vector2(MyGuiConstants.TEXTBOX_MEDIUM_SIZE.X / 2 - 0.01f, 0), MyGuiControlPreDefinedSize.MEDIUM,\n                                               string.Empty, \n                                               TEXTBOX_NUMBERS_MAX_LENGTH,\n                                               MyGuiConstants.TEXTBOX_BACKGROUND_COLOR,\n                                               MyGuiConstants.LABEL_TEXT_SCALE,\n                                               MyGuiControlTextboxType.DIGITS_ONLY);\n            Controls.Add(m_spawnedBotsTextbox);\n\n            #endregion\n\n            #region Bots Listbox Buttons\n            Controls.Add(new MyGuiControlButton(this, controlsOriginLeft + 7 * CONTROLS_DELTA + new Vector2(0.77f, -0.005f), MyGuiConstants.PROGRESS_CANCEL_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.Add, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnAddClick, MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n            Controls.Add(new MyGuiControlButton(this, controlsOriginLeft + 8 * CONTROLS_DELTA + new Vector2(0.77f, -0.005f), MyGuiConstants.PROGRESS_CANCEL_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.Edit, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnEditClick, MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n            Controls.Add(new MyGuiControlButton(this, controlsOriginLeft + 9 * CONTROLS_DELTA + new Vector2(0.77f, -0.005f), MyGuiConstants.PROGRESS_CANCEL_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.Inventory, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnInventoryClick, MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n            Controls.Add(new MyGuiControlButton(this, controlsOriginLeft + 10 * CONTROLS_DELTA + new Vector2(0.77f, -0.005f), MyGuiConstants.PROGRESS_CANCEL_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.Copy, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnDuplicateClick, MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n            Controls.Add(new MyGuiControlButton(this, controlsOriginLeft + 11 * CONTROLS_DELTA + new Vector2(0.77f, -0.005f), MyGuiConstants.PROGRESS_CANCEL_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR,\n                MyTextsWrapperEnum.Delete, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnDeleteClick, MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true));\n            #endregion\n\n            AddOkAndCancelButtonControls(new Vector2(0, -0.038f));\n\n            if (HasEntity())\n            {\n                m_radiusSlider.SetValue( m_spawnPoint.BoundingSphereRadius );\n                m_spawnInGroupsCheckbox.Checked = m_spawnPoint.SpawnInGroups;\n                m_spawnedBotsTextbox.Text = m_spawnPoint.LeftToSpawn >= 0 ? m_spawnPoint.LeftToSpawn.ToString() : string.Empty;\n                m_firstSpawnTimeSlider.SetValue(m_spawnPoint.FirstSpawnTimer);\n                m_respawnTimeSlider.SetValue(m_spawnPoint.RespawnTimer);\n\n                m_selectShipFactionCombobox.SelectItemByKey((int)m_spawnPoint.Faction);\n                m_bots.Clear();\n\n                foreach (BotTemplate bt in m_spawnPoint.GetBotTemplates())\n                {\n                    if (bt.m_builder.ShipTemplateID != null)                     \n                    {\n                        AddBot(bt.m_builder, MySmallShipTemplates.GetTemplate(bt.m_builder.ShipTemplateID.Value));\n                    }\n                    else\n                    {\n                        AddBot(bt.m_builder);\n                    }\n                }\n\n                m_activeCheckbox.Checked = m_spawnPoint.IsActive();\n            }\n\n            // Just UI update\n            OnComponentChange(null);\n        }\n\n        private String GenerateNameFromBotTemplate(BotTemplate btmp)\n        {\n            return btmp.m_name + \" \"/* + btmp.m_minCount.ToString() + \" - \" + btmp.m_maxCount.ToString()*/;\n        }\n\n        private void AddBot(int key, BotTemplate btmp)\n        {\n            String bld = GenerateNameFromBotTemplate(btmp);\n            m_bots[key] = btmp;\n            m_selectShipsListbox.AddItem(key, new StringBuilder(bld), null);\n        }\n\n        private void AddBot(MyMwcObjectBuilder_SmallShip bldr)\n        {\n            BotTemplate newTemplate = new BotTemplate();\n            MyMwcObjectBuilder_SmallShip_Bot botBuilder = bldr as MyMwcObjectBuilder_SmallShip_Bot;\n            System.Diagnostics.Debug.Assert(botBuilder != null);\n\n            newTemplate.m_builder = new MyMwcObjectBuilder_SmallShip_Bot(\n                bldr.ShipType,\n                bldr.Inventory,\n                bldr.Weapons,\n                bldr.Engine,\n                bldr.AssignmentOfAmmo,\n                bldr.Armor,\n                bldr.Radar,\n                bldr.ShipMaxHealth,\n                bldr.ShipHealthRatio,\n                bldr.ArmorHealth,\n                bldr.Oxygen,\n                bldr.Fuel,\n                bldr.ReflectorLight,\n                bldr.ReflectorLongRange,\n                bldr.Faction,\n                botBuilder != null ? botBuilder.AITemplate : MyAITemplateEnum.DEFAULT,\n                botBuilder != null ? botBuilder.Aggressivity : 0,\n                botBuilder != null ? botBuilder.SeeDistance : 1000,\n                botBuilder != null ? botBuilder.SleepDistance : 1000,\n                MyPatrolMode.CYCLE,\n                null,\n                BotBehaviorType.IDLE,\n                MyLightsConstants.MAX_SPOTLIGHT_SHADOW_RANGE, 0, false, true); // faction will be assigned after spawnpoint genertation\n            MyGuiObjectBuilderHelpers.GetGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip, (int)bldr.ShipType);\n            //m_comboItems.AddItem(i, MyGuiObjectBuilderHelpers.GetGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip, bldr.ShipType);\n\n            //  MyMwcObjectBuilderTypeEnum.SmallShip, (int)m_inventory.SmallShips[i]).Description);\n\n            newTemplate.m_name = ((MyGuiSmallShipHelperSmallShip)MyGuiObjectBuilderHelpers.GetGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip, (int)bldr.ShipType)).Name.ToString();//bldr.ShipType.ToString();\n\n            // find nearest new non template index\n            int index = -1;\n            foreach (int key in m_bots.Keys)\n            {\n                if (index < key && key < TEMPLATE_INDEX_OFFSET)\n                {\n                    index = key;\n                }\n            }\n            index++;\n\n            AddBot(index, newTemplate);\n\n        }\n\n        private void AddBot(MyMwcObjectBuilder_SmallShip bldr, MySmallShipTemplate smallShipTemplate)\n        {\n            BotTemplate newTemplate = new BotTemplate();\n            MyMwcObjectBuilder_SmallShip_Bot botBuilder = bldr as MyMwcObjectBuilder_SmallShip_Bot;            \n\n            newTemplate.m_builder = new MyMwcObjectBuilder_SmallShip_Bot(\n                smallShipTemplate.Builder.ShipType,\n                null,\n                null,\n                null,\n                smallShipTemplate.Builder.AssignmentOfAmmo,\n                null,\n                null,\n                smallShipTemplate.Builder.ShipMaxHealth,\n                smallShipTemplate.Builder.ShipHealthRatio,\n                smallShipTemplate.Builder.ArmorHealth,\n                smallShipTemplate.Builder.Oxygen,\n                smallShipTemplate.Builder.Fuel,\n                smallShipTemplate.Builder.ReflectorLight,\n                smallShipTemplate.Builder.ReflectorLongRange,\n                smallShipTemplate.Builder.Faction,\n                botBuilder != null ? botBuilder.AITemplate : MyAITemplateEnum.DEFAULT,\n                botBuilder != null ? botBuilder.Aggressivity : 0,\n                botBuilder != null ? botBuilder.SeeDistance : 1000,\n                botBuilder != null ? botBuilder.SleepDistance : 1000,\n                MyPatrolMode.CYCLE,\n                null,\n                BotBehaviorType.IDLE,\n                MyLightsConstants.MAX_SPOTLIGHT_SHADOW_RANGE, 0, false, true); // faction will be assigned after spawnpoint genertation\n            newTemplate.m_builder.ShipTemplateID = smallShipTemplate.ID;            \n            \n            newTemplate.m_name = smallShipTemplate.Name.ToString();\n\n            // find nearest new non template index\n            int index = -1;\n            foreach (int key in m_bots.Keys)\n            {\n                if (index < key && key < TEMPLATE_INDEX_OFFSET)\n                {\n                    index = key;\n                }\n            }\n            index++;\n\n            AddBot(index, newTemplate);\n\n        }\n\n        private int GetSpawnCount()\n        {\n            int spawnCount;\n            return (!string.IsNullOrEmpty(m_spawnedBotsTextbox.Text) && int.TryParse(m_spawnedBotsTextbox.Text, out spawnCount)) ? spawnCount : -1;\n        }\n\n        private void OnEditBotFromScreen(MyGuiScreenInventory sender, MyGuiScreenInventorySaveResult saveResult)\n        {\n            bool isTemplate = !saveResult.WasAnythingTransfered && saveResult.SmallShipsObjectBuilders[saveResult.CurrentIndex].UserData != null;\n            MySmallShipBuilderWithName resultBuilder = saveResult.SmallShipsObjectBuilders[saveResult.CurrentIndex];\n            if (isTemplate)\n            {\n                OnEditBot(resultBuilder.Builder, (MySmallShipTemplate)resultBuilder.UserData);\n            }\n            else\n            {\n                OnEditBot(resultBuilder.Builder);\n            }\n        }\n\n        private void OnAddBotFromScreen(MyGuiScreenInventory sender, MyGuiScreenInventorySaveResult saveResult)\n        {\n            bool isTemplate = !saveResult.WasAnythingTransfered && saveResult.SmallShipsObjectBuilders[saveResult.CurrentIndex].UserData != null;\n            MySmallShipBuilderWithName resultBuilder = saveResult.SmallShipsObjectBuilders[saveResult.CurrentIndex];\n            if (isTemplate)\n            {\n                AddBot(resultBuilder.Builder, (MySmallShipTemplate)resultBuilder.UserData);\n            }\n            else\n            {\n                AddBot(resultBuilder.Builder);\n            }\n        }        \n\n        private void OnEditBot(MyMwcObjectBuilder_SmallShip bldr)\n        {\n            BotTemplate newTemplate = new BotTemplate();\n            MyMwcObjectBuilder_SmallShip_Bot botBuilder = bldr as MyMwcObjectBuilder_SmallShip_Bot;\n            System.Diagnostics.Debug.Assert(botBuilder != null);\n\n            newTemplate.m_builder = new MyMwcObjectBuilder_SmallShip_Bot(\n                bldr.ShipType,\n                bldr.Inventory,\n                bldr.Weapons,\n                bldr.Engine,\n                bldr.AssignmentOfAmmo,\n                bldr.Armor,\n                bldr.Radar,\n                bldr.ShipMaxHealth,\n                bldr.ShipHealthRatio,\n                bldr.ArmorHealth,\n                bldr.Oxygen,\n                bldr.Fuel,\n                bldr.ReflectorLight,\n                bldr.ReflectorLongRange,\n                bldr.Faction,\n                botBuilder != null ? botBuilder.AITemplate : MyAITemplateEnum.DEFAULT,\n                botBuilder != null ? botBuilder.Aggressivity : 0,\n                botBuilder != null ? botBuilder.SeeDistance : 1000,\n                botBuilder != null ? botBuilder.SleepDistance : 1000,\n                MyPatrolMode.CYCLE,\n                null,\n                BotBehaviorType.IDLE,\n                MyLightsConstants.MAX_SPOTLIGHT_SHADOW_RANGE, bldr.AIPriority, false, true); // faction will be assigned after spawnpoint genertation\n            newTemplate.m_name = bldr.ShipType.ToString();\n            int key = m_selectShipsListbox.GetSelectedItem().Key;\n            m_selectShipsListbox.RemoveItem(key);\n\n            var itemName = MyGuiObjectBuilderHelpers.GetGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip, (int)newTemplate.m_builder.ShipType).Description;\n            m_selectShipsListbox.AddItem(key, itemName);\n\n            m_bots[key] = newTemplate;\n        }\n\n        private void OnEditBot(MyMwcObjectBuilder_SmallShip bldr, MySmallShipTemplate smallShipTemplate)\n        {\n            BotTemplate newTemplate = new BotTemplate();\n            MyMwcObjectBuilder_SmallShip_Bot botBuilder = bldr as MyMwcObjectBuilder_SmallShip_Bot;\n\n            newTemplate.m_builder = new MyMwcObjectBuilder_SmallShip_Bot(\n                smallShipTemplate.Builder.ShipType,\n                null,\n                null,\n                null,\n                smallShipTemplate.Builder.AssignmentOfAmmo,\n                null,\n                null,\n                smallShipTemplate.Builder.ShipMaxHealth,\n                smallShipTemplate.Builder.ShipHealthRatio,\n                smallShipTemplate.Builder.ArmorHealth,\n                smallShipTemplate.Builder.Oxygen,\n                smallShipTemplate.Builder.Fuel,\n                smallShipTemplate.Builder.ReflectorLight,\n                smallShipTemplate.Builder.ReflectorLongRange,\n                smallShipTemplate.Builder.Faction,\n                botBuilder != null ? botBuilder.AITemplate : MyAITemplateEnum.DEFAULT,\n                botBuilder != null ? botBuilder.Aggressivity : 0,\n                botBuilder != null ? botBuilder.SeeDistance : 1000,\n                botBuilder != null ? botBuilder.SleepDistance : 1000,\n                MyPatrolMode.CYCLE,\n                null,\n                BotBehaviorType.IDLE,\n                MyLightsConstants.MAX_SPOTLIGHT_SHADOW_RANGE, bldr.AIPriority, false, true); // faction will be assigned after spawnpoint genertation\n            newTemplate.m_builder.ShipTemplateID = smallShipTemplate.ID;\n            newTemplate.m_name = smallShipTemplate.Name.ToString();\n            int key = m_selectShipsListbox.GetSelectedItem().Key;\n            m_selectShipsListbox.RemoveItem(key);\n            \n            m_selectShipsListbox.AddItem(key, smallShipTemplate.Name);\n\n            m_bots[key] = newTemplate;\n        }\n\n        private void OnDoubleClick(object sender, MyGuiControlListboxItemEventArgs eventArgs)\n        {\n            OnInventoryClick(null);\n        }\n\n        private void OnDuplicateClick(MyGuiControlButton sender)\n        {\n\n            if (m_selectShipsListbox.GetSelectedItem() == null)\n                return;\n            BotTemplate btmp;\n            m_bots.TryGetValue(m_selectShipsListbox.GetSelectedItem().Key, out btmp);\n            if (btmp.m_builder.ShipTemplateID != null)\n            {\n                AddBot(btmp.m_builder, MySmallShipTemplates.GetTemplate(btmp.m_builder.ShipTemplateID.Value));\n            }\n            else\n            {\n                AddBot(btmp.m_builder);\n            }\n\n        }\n\n        private void OnDeleteClick(MyGuiControlButton sender)\n        {\n            if (m_selectShipsListbox.GetSelectedItem() == null)\n                return;\n            BotTemplate btmp;\n            m_bots.TryGetValue(m_selectShipsListbox.GetSelectedItem().Key, out btmp);\n            int indextodelete = m_selectShipsListbox.GetSelectedItem().Key;\n            m_selectShipsListbox.RemoveItem(indextodelete);\n            //m_selectShipsListbox.RemoveEmptyRows();\n            m_bots.Remove(indextodelete);\n        }\n\n        private void OnEditClick(MyGuiControlButton sender)\n        {\n            var selected = m_selectShipsListbox.GetSelectedItem();\n            if (selected != null)\n            {\n                BotTemplate template = m_bots[selected.Key];\n                int? selectedIndex = null;\n                var builders = GetTemplatesForCombobox(template.m_builder, out selectedIndex);\n                Debug.Assert(selectedIndex != null, \"This shouldn't happen!\");\n                if (selectedIndex == null) \n                {\n                    selectedIndex = 0;\n                }\n                MyGuiScreenEditorSmallShip screen = new MyGuiScreenEditorSmallShip(template.m_builder, builders, selectedIndex.Value);\n                screen.OnOk += delegate \n                {\n                    if (template.m_builder.ShipTemplateID != null)\n                    {\n                        OnEditBot(template.m_builder, MySmallShipTemplates.GetTemplate(template.m_builder.ShipTemplateID.Value));\n                    }\n                    else\n                    {\n                        OnEditBot(template.m_builder);\n                    }\n                };\n\n                MyGuiManager.AddScreen(screen);\n            }\n        }\n\n        private List<MySmallShipBuilderWithName> GetTemplatesForCombobox() \n        {\n            int? selectedIndex = null;\n            return GetTemplatesForCombobox(null, out selectedIndex);\n        }\n\n        private List<MySmallShipBuilderWithName> GetTemplatesForCombobox(MyMwcObjectBuilder_SmallShip_Bot selectedBuilder, out int? selectedIndex) \n        {            \n            int? foundedIndex = null;\n            int currentIndex = 0;\n            List<MySmallShipBuilderWithName> templatesForCombobox = new List<MySmallShipBuilderWithName>();            \n            for (int i = 0; i < MyGuiSmallShipHelpers.MyMwcObjectBuilder_SmallShip_TypesEnumValues.Length; i++)\n            {\n                MyMwcObjectBuilder_SmallShip_TypesEnum shipType = (MyMwcObjectBuilder_SmallShip_TypesEnum)MyGuiSmallShipHelpers.MyMwcObjectBuilder_SmallShip_TypesEnumValues.GetValue(i);                \n                StringBuilder templateName;\n                // insert no teplate       \n                templateName = GetTemplatePrefix(shipType);                \n                templateName.Append(\"NO TEMPLATE\");\n                MyMwcObjectBuilder_SmallShip_Bot builderToAdd = null;\n                if (selectedBuilder != null && selectedBuilder.ShipTemplateID == null && selectedBuilder.ShipType == shipType) \n                {\n                    builderToAdd = selectedBuilder;\n                    foundedIndex = currentIndex;\n                }\n                else\n                {\n                    builderToAdd = MyMwcObjectBuilder_SmallShip_Bot.CreateObjectBuilderWithAllItems(shipType, MyShipTypeConstants.GetShipTypeProperties(shipType).GamePlay.CargoCapacity);\n                    if (selectedBuilder != null) \n                    {\n                        builderToAdd.CopyBotParameters(selectedBuilder);\n                    }\n                }\n                templatesForCombobox.Add(new MySmallShipBuilderWithName(templateName, builderToAdd));\n                currentIndex++;\n\n                // real templates\n                foreach (MySmallShipTemplate template in MySmallShipTemplates.GetTemplatesForType(shipType)) \n                {\n                    if (selectedBuilder != null && selectedBuilder.ShipTemplateID != null && selectedBuilder.ShipTemplateID.Value == template.ID) \n                    {\n                        foundedIndex = currentIndex;\n                    }\n                    builderToAdd = new MyMwcObjectBuilder_SmallShip_Bot(template.Builder);\n                    if (selectedBuilder != null)\n                    {\n                        builderToAdd.CopyBotParameters(selectedBuilder);\n                    }\n                    templateName = GetTemplatePrefix(shipType);\n                    MyMwcUtils.AppendStringBuilder(templateName, template.Name);\n                    templatesForCombobox.Add(new MySmallShipBuilderWithName(templateName, builderToAdd, template));\n                    currentIndex++;\n                }\n            }\n            selectedIndex = foundedIndex;\n            return templatesForCombobox;\n        }\n\n        private StringBuilder GetTemplatePrefix(MyMwcObjectBuilder_SmallShip_TypesEnum shipType) \n        {\n            StringBuilder prefix = new StringBuilder();\n            MyMwcUtils.AppendStringBuilder(prefix, ((MyGuiSmallShipHelperSmallShip)MyGuiObjectBuilderHelpers.GetGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip, (int)shipType)).Name);\n            prefix.Append(\" - \");\n            return prefix;\n        }\n\n        private void OnInventoryClick(MyGuiControlButton sender)\n        {\n            var selected = m_selectShipsListbox.GetSelectedItem();\n            if (selected != null)\n            {\n                BotTemplate template = m_bots[selected.Key];\n                int? selectedIndex = null;\n                var builders = GetTemplatesForCombobox(template.m_builder, out selectedIndex);\n                Debug.Assert(selectedIndex != null, \"This shouldn't happen!\");\n                if (selectedIndex == null) \n                {\n                    selectedIndex = 0;\n                }\n\n                MyInventory inventory = new MyInventory();\n                inventory.FillInventoryWithAllItems(null, 100);\n\n                MyGuiScreenInventory inventoryScreen = new MyGuiScreenInventory(builders, selectedIndex.Value, inventory.GetObjectBuilder(false), null, true);\n                inventoryScreen.OnSave += OnEditBotFromScreen;                \n                MyGuiManager.AddScreen(inventoryScreen);\n            }\n        }        \n\n        private void OnAddClick(MyGuiControlButton sender)\n        {\n            //List<MySmallShipBuilderWithName> builders = new List<MySmallShipBuilderWithName>();            \n            //for (int i = 0; i < MyGuiSmallShipHelpers.MyMwcObjectBuilder_SmallShip_TypesEnumValues.Length; i++)\n            //{\n            //    builders.Add(new MySmallShipBuilderWithName(MyMwcObjectBuilder_SmallShip_Bot.CreateObjectBuilderWithAllItems(\n            //        (MyMwcObjectBuilder_SmallShip_TypesEnum)MyGuiSmallShipHelpers.MyMwcObjectBuilder_SmallShip_TypesEnumValues.GetValue(i))));\n            //}            \n            List<MySmallShipBuilderWithName> builders = GetTemplatesForCombobox();\n            MyInventory inventory = new MyInventory();\n            inventory.FillInventoryWithAllItems(null, 100);\n            MyGuiScreenInventory inventoryScreen = new MyGuiScreenInventory(builders, 0, inventory.GetObjectBuilder(false), MyTextsWrapper.Get(MyTextsWrapperEnum.AllItemsInventory), true);\n            inventoryScreen.OnSave += OnAddBotFromScreen;            \n            MyGuiManager.AddScreen(inventoryScreen);\n        }\n        \n        void OnComponentChange(MyGuiControlSlider sender)\n        {\n            m_radiusLabel.UpdateText(string.Format(\"{0:#,###0} \" + MyTextsWrapper.Get(MyTextsWrapperEnum.MetersLong).ToString(), m_radiusSlider.GetValue()));\n            m_firstSpawnLabel.UpdateText(string.Format(\"{0:#,###0} \" + MyTextsWrapper.Get(MyTextsWrapperEnum.SecondsLong).ToString(), m_firstSpawnTimeSlider.GetValue() / 1000));\n            m_respawnLabel.UpdateText(string.Format(\"{0:#,###0} \" + MyTextsWrapper.Get(MyTextsWrapperEnum.SecondsLong).ToString(), m_respawnTimeSlider.GetValue() / 1000));   \n        }\n\n        public override void OnOkClick(MyGuiControlButton sender)\n        {\n            base.OnOkClick(sender);\n\n            Debug.Assert(m_radiusSlider.GetValue() > 30 || m_bots.Count <= 1, \"Spawnpoint radius is too small, you will probably get failed spawn attempts!\");\n            \n            if (!HasEntity())\n            {\n                MyMwcObjectBuilder_SpawnPoint builder = MyMwcObjectBuilder_Base.CreateNewObject(MyMwcObjectBuilderTypeEnum.SpawnPoint, null) as MyMwcObjectBuilder_SpawnPoint;\n                builder.BoundingRadius = m_radiusSlider.GetValue();\n\n                float cameraDistance = builder.BoundingRadius / (float)Math.Sin(MathHelper.ToRadians(MyCamera.FieldOfViewAngle / 2)) * 1.2f;\n\n                m_spawnPoint = MyEntities.CreateFromObjectBuilderAndAdd(null, builder, Matrix.CreateWorld(MyCamera.Position + cameraDistance * MyCamera.ForwardVector, Vector3.Forward, Vector3.Up)) as MySpawnPoint;\n            }\n\n            MyMwcObjectBuilder_FactionEnum shipFaction = (MyMwcObjectBuilder_FactionEnum)\n                Enum.ToObject(typeof(MyMwcObjectBuilder_FactionEnum), m_selectShipFactionCombobox.GetSelectedKey()); \n\n            List<BotTemplate> templates = new List<BotTemplate>();\n            foreach (int key in m_bots.Keys)\n            {\n                BotTemplate btmp;\n                m_bots.TryGetValue(key, out btmp);\n                btmp.m_builder.Faction = shipFaction;\n                templates.Add(btmp);\n            }\n\n            m_spawnPoint.SpawnInGroups = m_spawnInGroupsCheckbox.Checked;\n            m_spawnPoint.LeftToSpawn = GetSpawnCount();\n            m_spawnPoint.MaxSpawnCount = m_spawnPoint.LeftToSpawn;\n            m_spawnPoint.FirstSpawnTimer = m_firstSpawnTimeSlider.GetValue();\n            m_spawnPoint.RespawnTimer = m_respawnTimeSlider.GetValue();\n\n            m_spawnPoint.Faction = shipFaction;\n            m_spawnPoint.SetWayPointPath(m_waypointPathCombobox.GetSelectedValue().ToString());\n            m_spawnPoint.PatrolMode = (MyPatrolMode)m_patrolModeCombobox.GetSelectedKey();\n            m_spawnPoint.ApplyBotTemplates(templates);\n\n            m_spawnPoint.BoundingSphereRadius = m_radiusSlider.GetValue();\n            if (m_activeCheckbox.Checked && !m_spawnPoint.IsActive())\n            {\n                m_spawnPoint.Activate();\n            }\n            else if (!m_activeCheckbox.Checked && m_spawnPoint.IsActive())\n            {\n                m_spawnPoint.Deactivate();\n            }\n            \n            MyGuiManager.CloseAllScreensExcept(MyGuiScreenGamePlay.Static);\n        }\n\n        protected override Vector2 GetControlsOriginLeftFromScreenSize()\n        {\n            return base.GetControlsOriginLeftFromScreenSize() + new Vector2(0.002f, 0);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/ScreenEditor/Object3D/MyGuiScreenEditorWaypoint.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Entities.WayPoints;\n\nnamespace MinerWars.AppCode.Game.GUI.ScreenEditor.Object3D\n{\n    class MyGuiScreenEditorWaypoint : MyGuiScreenEditorObject3DBase\n    {\n        MyGuiControlCheckbox m_secretCheckbox;\n        List<MyWayPoint> m_waypoints;\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenEditorWayPoint\";\n        }\n\n        public MyGuiScreenEditorWaypoint(MyWayPoint waypoint)\n            : base(null, new Vector2(0.5f, 0.5f), MyGuiConstants.SCREEN_BACKGROUND_COLOR, null, MyTextsWrapperEnum.WayPoint)\n        {\n            m_waypoints = new List<MyWayPoint>();\n            m_waypoints.Add(waypoint);\n            Init();\n        }\n\n        public MyGuiScreenEditorWaypoint(List<MyWayPoint> waypoints)\n            : base(null, new Vector2(0.5f, 0.5f), MyGuiConstants.SCREEN_BACKGROUND_COLOR, null, MyTextsWrapperEnum.WayPoint)\n        {\n            System.Diagnostics.Debug.Assert(waypoints.Count >= 1);\n            m_waypoints = waypoints;\n            Init();\n        }\n\n        void Init()\n        {\n            m_enableBackgroundFade = true;\n            m_size = new Vector2(0.5f, 0.3f);\n            AddCaption();\n\n            Vector2 left = new Vector2(-m_size.Value.X / 2.0f + 0.07f, -m_size.Value.Y / 2.0f + 0.11f);\n            Vector2 right = new Vector2(m_size.Value.X / 2.0f - 0.07f, -m_size.Value.Y / 2.0f + 0.11f);\n\n            bool anySecret = false;\n            foreach (var v in m_waypoints) if (v.IsSecret)\n            {\n                anySecret = true;\n                break;\n            }\n\n            Controls.Add(new MyGuiControlLabel(this, left, null, MyTextsWrapperEnum.Secret, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n            Controls.Add(m_secretCheckbox = new MyGuiControlCheckbox(this, right - new Vector2(MyGuiConstants.CHECKBOX_SIZE.X, 0), anySecret, MyGuiConstants.CHECKBOX_BACKGROUND_COLOR));\n\n            AddOkAndCancelButtonControls();\n        }\n\n        public override void OnOkClick(MyGuiControlButton sender)\n        {\n            base.OnOkClick(sender);\n            foreach (var v in m_waypoints)\n                v.IsSecret = m_secretCheckbox.Checked;\n            MyGuiManager.CloseAllScreensExcept(MyGuiScreenGamePlay.Static);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/GUI/ScreenEditor/Object3D/MyGuiScreenEntityWithInventory.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Inventory;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Entities;\nusing System.Diagnostics;\nusing MinerWars.AppCode.Game.GUI.Helpers;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.AppCode.Game.Entities.Prefabs;\n\nnamespace MinerWars.AppCode.Game.GUI.ScreenEditor.Object3D\n{\n    class MyGuiScreenEntityWithInventory : MyGuiScreenEditorObject3DBase\n    {\n        MyGuiControlListbox m_allItemsInventoryListbox;\n        MyGuiControlListbox m_entityInventoryListbox;\n        MyGuiControlListboxDragAndDrop m_dragAndDrop;        \n\n        MyInventoryItemsRepository m_inventoryItemsRepository;\n        MyInventory m_allItemsInventory;\n\n        MyGuiControlCombobox m_inventoryTemplatesCombobox;\n        MyGuiControlTextbox m_priceCoeficientTextbox;\n        MyGuiControlTextbox m_refillTimeTextbox;\n\n        private const int ROWS = 5;\n        private const int COLUMNS = 5;\n\n        private IMyInventory EntityWithInventory { get; set; }\n        private MyPrefabContainer PrefabContainer { get; set; }\n        private bool m_isPrefabContainer;\n        private List<MyInventoryItem> m_itemsAdded;\n        private List<MyInventoryItem> m_itemsRemoved;\n\n        public MyGuiScreenEntityWithInventory(MyEntity entityWithInventory)\n            : base(entityWithInventory, new Vector2(0.5f, 0.5f), MyGuiConstants.SCREEN_BACKGROUND_COLOR, null, MyTextsWrapperEnum.EditInventory)\n        {\n            Debug.Assert(entityWithInventory is IMyInventory);\n            EntityWithInventory = entityWithInventory as IMyInventory;\n            if (entityWithInventory is MyPrefabHangar)\n            {\n                PrefabContainer = ((MyPrefabHangar)entityWithInventory).GetOwner();\n            }\n            else \n            {\n                PrefabContainer = entityWithInventory as MyPrefabContainer;\n            }\n            m_itemsAdded = new List<MyInventoryItem>();\n            m_itemsRemoved = new List<MyInventoryItem>();\n            Init();\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyGuiScreenEntityWithInventory\";\n        }\n\n        void Init()\n        {\n            m_enableBackgroundFade = true;\n            m_size = new Vector2(0.99f, 0.95f);\n\n            // Add screen title\n            AddCaption();\n            \n            m_inventoryItemsRepository = new MyInventoryItemsRepository();\n            m_allItemsInventory = new MyInventory();\n            m_allItemsInventory.FillInventoryWithAllItems(null, 100, true);\n\n            InitControls();\n            AddOkAndCancelButtonControls();\n        }\n\n        public void InitControls()\n        {           \n            StringBuilder otherSideInventoryName = new StringBuilder();\n            otherSideInventoryName.Append(string.IsNullOrEmpty(m_entity.DisplayName) ? m_entity.GetFriendlyName() : m_entity.DisplayName);\n            otherSideInventoryName.Append(MyTextsWrapper.Get(MyTextsWrapperEnum.OtherSideInventory));\n\n            Vector2 controlsOriginLeft = new Vector2(-m_size.Value.X / 4f + 0.03f, 0.1f);\n            Vector2 controlsOriginRight = new Vector2(+m_size.Value.X / 4f - 0.03f, 0.1f);\n            List<MyGuiControlListbox> listboxesToDragAndDrop = new List<MyGuiControlListbox>();\n\n            m_allItemsInventoryListbox = new MyGuiControlListbox(this, controlsOriginLeft, MyGuiConstants.LISTBOX_SMALL_SIZE, MyGuiConstants.LISTBOX_BACKGROUND_COLOR,\n                null, MyGuiConstants.LABEL_TEXT_SCALE, COLUMNS, ROWS, COLUMNS, true, true, false, null, null, MyGuiManager.GetScrollbarSlider(), MyGuiManager.GetHorizontalScrollbarSlider(), 4, 2, MyGuiConstants.LISTBOX_ITEM_COLOR, 0f, 0f, 0f, 0f, 0, 0, -0.01f, -0.01f, -0.02f, 0.02f);\n            AddInventoryListbox(m_allItemsInventoryListbox, m_allItemsInventory, ref listboxesToDragAndDrop);\n\n            m_entityInventoryListbox = new MyGuiControlListbox(this, controlsOriginRight, MyGuiConstants.LISTBOX_SMALL_SIZE, MyGuiConstants.LISTBOX_BACKGROUND_COLOR,\n                null, MyGuiConstants.LABEL_TEXT_SCALE, COLUMNS, ROWS, COLUMNS, true, true, false, null, null, MyGuiManager.GetScrollbarSlider(), MyGuiManager.GetHorizontalScrollbarSlider(), 4, 2, MyGuiConstants.LISTBOX_ITEM_COLOR, 0f, 0f, 0f, 0f, 0, 0, -0.01f, -0.01f, -0.02f, 0.02f);\n            AddInventoryListbox(m_entityInventoryListbox, EntityWithInventory.Inventory, ref listboxesToDragAndDrop);\n\n            m_dragAndDrop = new MyGuiControlListboxDragAndDrop(this, listboxesToDragAndDrop, MyGuiControlPreDefinedSize.SMALL, MyGuiConstants.LISTBOX_BACKGROUND_COLOR,\n                MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, Vector2.Zero, true);\n            m_dragAndDrop.ListboxItemDropped += DragAndDropListboxItemDropped;\n            Controls.Add(m_dragAndDrop);\n\n            Vector2 labelOffset = new Vector2(0.05f, -0.05f);            \n\n            Controls.Add(new MyGuiControlLabel(this, m_allItemsInventoryListbox.GetPosition() - m_allItemsInventoryListbox.GetSize().Value / 2f + labelOffset,\n                null, MyTextsWrapperEnum.AllItemsInventory, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n            Controls.Add(new MyGuiControlLabel(this, m_entityInventoryListbox.GetPosition() - m_entityInventoryListbox.GetSize().Value / 2f + labelOffset,\n                null, otherSideInventoryName, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n\n\n            Vector2 otherSettingsPosition = new Vector2(-m_size.Value.X / 2f + 0.1f, -0.35f);\n                                        \n            Controls.Add(new MyGuiControlLabel(this, otherSettingsPosition,\n                null, MyTextsWrapperEnum.PriceCoeficient, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n            m_priceCoeficientTextbox = new MyGuiControlTextbox(this, otherSettingsPosition + new Vector2(0.5f, 0f), MyGuiControlPreDefinedSize.MEDIUM, string.Empty, 3, MyGuiConstants.TEXTBOX_BACKGROUND_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiControlTextboxType.DIGITS_ONLY);\n            m_priceCoeficientTextbox.Text = MyValueFormatter.GetFormatedFloat(EntityWithInventory.Inventory.PriceCoeficient, 2, string.Empty);\n            Controls.Add(m_priceCoeficientTextbox);\n\n            if (PrefabContainer != null) \n            {\n                otherSettingsPosition += MyGuiConstants.CONTROLS_DELTA;\n\n                Controls.Add(new MyGuiControlLabel(this, otherSettingsPosition,\n                    null, MyTextsWrapperEnum.InventoryTemplates, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n                m_inventoryTemplatesCombobox = new MyGuiControlCombobox(this, otherSettingsPosition + new Vector2(0.5f, 0f), MyGuiControlPreDefinedSize.MEDIUM, MyGuiConstants.COMBOBOX_BACKGROUND_COLOR, MyGuiConstants.COMBOBOX_TEXT_SCALE);\n                m_inventoryTemplatesCombobox.OnSelect += new MyGuiControlCombobox.OnComboBoxSelectCallback(m_inventoryTemplatesCombobox_OnSelect);\n                m_inventoryTemplatesCombobox.AddItem(0, MyTextsWrapperEnum.None);\n                foreach (MyMwcInventoryTemplateTypeEnum inventoryTemplateType in MyGuiInventoryTemplateTypeHelpers.MyInventoryTemplateTypeValues)\n                {\n                    if (MyInventoryTemplates.ContainsAnyItems(inventoryTemplateType))\n                    {\n                        m_inventoryTemplatesCombobox.AddItem((int)inventoryTemplateType, MyGuiInventoryTemplateTypeHelpers.GetInventoryTemplateTypeHelper(inventoryTemplateType).Description);\n                    }\n                }\n                Controls.Add(m_inventoryTemplatesCombobox);\n\n                otherSettingsPosition += MyGuiConstants.CONTROLS_DELTA;\n\n                Controls.Add(new MyGuiControlLabel(this, otherSettingsPosition,\n                null, MyTextsWrapperEnum.RefillTime, MyGuiConstants.LABEL_TEXT_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER));\n                m_refillTimeTextbox = new MyGuiControlTextbox(this, otherSettingsPosition + new Vector2(0.5f, 0f), MyGuiControlPreDefinedSize.MEDIUM, string.Empty, 9, MyGuiConstants.TEXTBOX_BACKGROUND_COLOR, MyGuiConstants.LABEL_TEXT_SCALE, MyGuiControlTextboxType.DIGITS_ONLY);                \n                Controls.Add(m_refillTimeTextbox);\n\n                RefillTime = PrefabContainer.RefillTime;\n                SelectedTemplateType = EntityWithInventory.Inventory.TemplateType;\n            }            \n        }\n\n        void m_inventoryTemplatesCombobox_OnSelect()\n        {\n            if(PrefabContainer != null)\n            {\n                if (SelectedTemplateType == null)\n                {\n                    RefillTime = null;                    \n                }\n                else \n                {\n                    if (RefillTime == null) \n                    {\n                        RefillTime = MyPrefabContainer.DEFAULT_REFILL_TIME_IN_SEC;\n                    }\n                }\n                m_refillTimeTextbox.Enabled = RefillTime != null;\n            }\n        }\n\n        private int? RefillTime\n        {\n            get\n            {\n                int? refillTime = PrefabContainer != null && !string.IsNullOrEmpty(m_refillTimeTextbox.Text) ? int.Parse(m_refillTimeTextbox.Text) : (int?)null;\n                return refillTime;\n            }\n            set \n            {\n                Debug.Assert(PrefabContainer != null);\n                if (value == null)\n                {\n                    m_refillTimeTextbox.Text = string.Empty;\n                }\n                else \n                {\n                    m_refillTimeTextbox.Text = value.Value.ToString();\n                }\n            }\n        }\n\n        private MyMwcInventoryTemplateTypeEnum? SelectedTemplateType \n        {\n            get\n            {\n                MyMwcInventoryTemplateTypeEnum? templateType = null;\n                if (m_inventoryTemplatesCombobox != null) \n                {\n                    int selectedTemplateTypeKey = m_inventoryTemplatesCombobox.GetSelectedKey();\n                    templateType = selectedTemplateTypeKey == 0 ? (MyMwcInventoryTemplateTypeEnum?)null : (MyMwcInventoryTemplateTypeEnum)selectedTemplateTypeKey;\n                }\n                                \n                return templateType;\n            }\n            set \n            {\n                if (value == null)\n                {\n                    m_inventoryTemplatesCombobox.SelectItemByKey(0);\n                }\n                else \n                {\n                    m_inventoryTemplatesCombobox.SelectItemByKey((int)value.Value);\n                }\n            }\n        }\n\n        private void AddInventoryListbox(MyGuiControlListbox listbox, MyInventory inventory, ref List<MyGuiControlListbox> listboxesToDragAndDrop) \n        {\n            Controls.Add(listbox);\n            listboxesToDragAndDrop.Add(listbox);\n            listbox.ItemDrag += ListboxItemDrag;\n            listbox.ItemDoubleClick += ListboxItemDoubleClick;\n\n            foreach (MyInventoryItem inventoryItem in inventory.GetInventoryItems()) \n            {\n                listbox.AddItem(CreateListboxItemAndAddToRepository(inventoryItem));\n            }\n        }\n\n        private MyGuiControlListboxItem CreateListboxItemAndAddToRepository(MyInventoryItem inventoryItem) \n        {\n            int inventoryItemKey = m_inventoryItemsRepository.AddItem(inventoryItem);            \n\n            StringBuilder description = null;\n            if (inventoryItem.Icon == null)\n            {\n                description = inventoryItem.MultiLineDescription;\n            }\n\n            MyToolTips toolTips = new MyToolTips();\n            toolTips.AddToolTip(inventoryItem.MultiLineDescription, Color.White, 0.7f);            \n\n            MyGuiControlListboxItem listboxItem = new MyGuiControlListboxItem(inventoryItemKey, description, inventoryItem.Icon, toolTips, MyGuiConstants.LABEL_TEXT_SCALE);\n            listboxItem.IconTexts = new MyIconTexts();\n\n            // add amount icon's text\n            if (inventoryItem.Amount != 1f || inventoryItem.Amount != inventoryItem.MaxAmount)\n            {\n                StringBuilder amount = new StringBuilder();\n                amount.Append(inventoryItem.Amount.ToString());\n                MyGuiDrawAlignEnum align;\n                Vector2 offset;\n                if (inventoryItem.AmountTextAlign == MyInventoryAmountTextAlign.MiddleRight)\n                {\n                    align = MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_CENTER;\n                    offset = new Vector2(-0.004f, 0.0038f);\n                }\n                else if (inventoryItem.AmountTextAlign == MyInventoryAmountTextAlign.BottomRight)\n                {\n                    align = MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_BOTTOM;\n                    offset = new Vector2(-0.004f, -0.0025f);\n                }\n                else\n                {\n                    throw new MyMwcExceptionApplicationShouldNotGetHere();\n                }\n                listboxItem.IconTexts[align] = new MyColoredText(amount, Color.White, Color.White, MyGuiManager.GetFontMinerWarsWhite(), 0.5f, offset);\n            }\n\n            return listboxItem;\n        }\n\n        private void ListboxItemDoubleClick(object sender, MyGuiControlListboxItemEventArgs eventArgs)\n        {\n            MyGuiControlListbox senderListbox = (MyGuiControlListbox)sender;\n            if (senderListbox == m_allItemsInventoryListbox)\n            {\n                MyGuiControlListboxItem listBoxItem = CreateCopy(m_allItemsInventoryListbox.GetItem(eventArgs.Key));\n                MoveItemToListbox(m_entityInventoryListbox, listBoxItem);                \n            }\n            else \n            {\n                m_entityInventoryListbox.RemoveItem(eventArgs.Key, false);\n                RemoveCopy(eventArgs.Key);\n            }\n        }\n\n        private void RemoveCopy(int itemKey) \n        {\n            MyInventoryItem itemToRemove = m_inventoryItemsRepository.GetItem(itemKey);\n            if (itemToRemove.Owner != EntityWithInventory.Inventory)\n            {                \n                bool wasInAdded = m_itemsAdded.Remove(itemToRemove);\n                m_inventoryItemsRepository.RemoveItem(itemKey, true);\n                Debug.Assert(wasInAdded);\n            }\n            else \n            {\n                m_itemsRemoved.Add(itemToRemove);\n            }\n        }\n\n        private MyGuiControlListboxItem CreateCopy(MyGuiControlListboxItem original) \n        {\n            MyInventoryItem templateInventoryItem = m_inventoryItemsRepository.GetItem(original.Key);\n            MyInventoryItem newInventoryItem = MyInventory.CreateInventoryItemFromObjectBuilder(templateInventoryItem.GetInventoryItemObjectBuilder(true));\n            newInventoryItem.Amount = templateInventoryItem.Amount;\n            MyGuiControlListboxItem newItem =  CreateListboxItemAndAddToRepository(newInventoryItem);\n            newItem.IconTexts = original.IconTexts;\n            m_itemsAdded.Add(newInventoryItem);\n            return newItem;\n        }\n\n        private void ListboxItemDrag(object sender, MyGuiControlListboxItemEventArgs eventArgs)\n        {\n            MyGuiControlListbox senderListbox = (MyGuiControlListbox)sender;            \n\n            MyDragAndDropInfo dragAndDropInfo = new MyDragAndDropInfo();\n            dragAndDropInfo.ItemIndex = eventArgs.ItemIndex;\n            dragAndDropInfo.RowIndex = eventArgs.RowIndex;\n            dragAndDropInfo.Listbox = senderListbox;\n\n            MyGuiControlListboxItem listBoxItem;\n            if (senderListbox == m_allItemsInventoryListbox)\n            {\n                listBoxItem = CreateCopy(senderListbox.GetItem(eventArgs.Key));\n            }\n            else \n            {\n                listBoxItem = senderListbox.GetItem(eventArgs.Key);\n                senderListbox.RemoveItem(eventArgs.Key, false);\n            }\n\n            m_dragAndDrop.StartDragging(MyDropHandleType.LeftMousePressed, listBoxItem, dragAndDropInfo);            \n        }\n\n        private void MoveItemToListbox(MyGuiControlListbox moveTo, MyGuiControlListboxItem item, int? rowIndex = null, int? itemIndex = null) \n        {\n            if (moveTo == m_allItemsInventoryListbox)\n            {\n                RemoveCopy(item.Key);                \n            }\n            else \n            {\n                if (rowIndex != null && itemIndex != null)\n                {\n                    moveTo.AddItem(item, rowIndex.Value, itemIndex.Value);\n                }\n                else\n                {\n                    moveTo.AddItem(item);\n                }\n            }\n        }\n\n        private void DragAndDropListboxItemDropped(object sender, MyDragAndDropEventArgs eventArgs)\n        {\n            if (eventArgs.DropTo == null)\n            {\n                MoveItemToListbox(eventArgs.DragFrom.Listbox, eventArgs.ListboxItem, eventArgs.DragFrom.RowIndex, eventArgs.DragFrom.ItemIndex);\n            }\n            else \n            {\n                MoveItemToListbox(eventArgs.DropTo.Listbox, eventArgs.ListboxItem);\n            }\n            m_dragAndDrop.Stop();\n        }\n\n        private bool SaveChangesToInventory() \n        {\n            float? priceCoeficient = MyValueFormatter.GetFloatFromString(m_priceCoeficientTextbox.Text, 2, string.Empty);\n            if (priceCoeficient == null) \n            {\n                MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.MessageYouMustSetPriceCoeficient, MyTextsWrapperEnum.Error, MyTextsWrapperEnum.Ok, null));\n                return false;\n            }\n            if (priceCoeficient < 1f) \n            {\n                MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.MessagePriceCoeficientMustBeGreaterThanOrEqualToOne, MyTextsWrapperEnum.Error, MyTextsWrapperEnum.Ok, null));\n                return false;\n            }\n\n            MyMwcInventoryTemplateTypeEnum? templateType = SelectedTemplateType;\n\n            int? refillTime = RefillTime;\n\n            if (refillTime != null && templateType == null || refillTime == null && templateType != null) \n            {\n                MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.MessageYouMustSetTemplateIfYouWantRefillInventory, MyTextsWrapperEnum.Error, MyTextsWrapperEnum.Ok, null));\n                return false;\n            }\n\n            EntityWithInventory.Inventory.PriceCoeficient = priceCoeficient.Value;\n            EntityWithInventory.Inventory.ClearInventoryItems(false);\n            foreach (int itemKey in m_entityInventoryListbox.GetItemsKeys()) \n            {\n                EntityWithInventory.Inventory.AddInventoryItem(m_inventoryItemsRepository.GetItem(itemKey));\n                //m_inventoryItemsRepository.RemoveItem(itemKey, false);\n            }            \n            EntityWithInventory.Inventory.TemplateType = templateType;\n            if (PrefabContainer != null) \n            {\n                PrefabContainer.RefillTime = refillTime;\n            }\n            return true;\n        }\n\n        private void CloseItems(ref List<MyInventoryItem> itemsToClose) \n        {\n            foreach (MyInventoryItem itemToClose in itemsToClose) \n            {\n                MyInventory.CloseInventoryItem(itemToClose);\n            }\n            itemsToClose.Clear();\n        }\n\n        public override void OnOkClick(MyGuiControlButton sender)\n        {\n            bool isSaveSuccess = SaveChangesToInventory();\n            if (!isSaveSuccess) \n            {\n                return;\n            }\n\n            base.OnOkClick(sender);            \n            //m_inventoryItemsRepository.Close();            \n            m_allItemsInventory.Close();\n            CloseItems(ref m_itemsRemoved);\n            m_itemsAdded.Clear();\n\n            this.CloseScreen();\n        }\n\n        public override void OnCancelClick(MyGuiControlButton sender)\n        {\n            base.OnCancelClick(sender);\n            m_allItemsInventory.Close();\n            CloseItems(ref m_itemsAdded);\n            m_itemsRemoved.Clear();\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/HUD/MyComputeGPSJob.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing ParallelTasks;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Entities.WayPoints;\nusing KeenSoftwareHouse.Library.Parallelization.Threading;\nusing MinerWars.Resources;\nusing MinerWars.AppCode.Game.Localization;\n\nnamespace MinerWars.AppCode.Game.HUD\n{\n    class MyComputeGPSJob : IWork\n    {\n        private Vector3 m_startPos;\n        private Vector3 m_goalPos;\n        private MyEntity m_goalEntity;\n\n        public List<Vector3> Path;\n        public StringBuilder Message;\n\n        public void Start(Vector3 startPos, Vector3 goalPos, MyEntity goalEntity)\n        {\n            m_startPos = startPos;\n            m_goalPos = goalPos;\n            m_goalEntity = goalEntity;\n            Path = new List<Vector3>();\n            Message = MyTextsWrapper.Get(MyTextsWrapperEnum.GPSNoPath);\n\n            goalEntity.OnClose += goalEntity_OnClose;\n        }\n\n        void goalEntity_OnClose(MyEntity obj)\n        {\n            m_goalEntity = null;\n        }\n\n        public void DoWork()\n        {\n            try \n            {\n                MyEntities.EntityCloseLock.AcquireShared();\n\n                if (m_goalEntity == null)\n                    return;\n                // try the direct path\n                {\n                    var directLine = new MyLine(m_startPos, m_goalPos, true);\n                    if (MyEntities.GetAnyIntersectionWithLine(ref directLine, m_goalEntity, null, true, true, true, false) == null)\n                    {\n                        Path.Add(m_startPos);\n                        Path.Add(m_goalPos);\n                        Message = new StringBuilder().AppendFormat(MyTextsWrapper.Get(MyTextsWrapperEnum.GPSDistance).ToString(), Vector3.Distance(m_startPos, m_goalPos));\n                        return;\n                    }\n                }\n\n                // get the closest waypoint to the goal (ignore visibility)\n                MyWayPoint goal = MyWayPointGraph.GetClosestNonGeneratedWaypoint(m_goalPos);\n                if (goal == null) return;\n\n                // remember which waypoints were visible/invisible from startPos\n                // remember blocked/unblocked edges\n                var visibleFromStartPosCache = new Dictionary<MyWayPoint, bool>();\n                //var blockedEdges = new HashSet<Tuple<MyWayPoint, MyWayPoint>>();\n                HashSet<Tuple<MyWayPoint, MyWayPoint>> blockedEdges = null;\n                \n                using (MyWayPoint.BlockedEdgesLock.AcquireSharedUsing())\n                {\n                    blockedEdges = new HashSet<Tuple<MyWayPoint,MyWayPoint>>(MyWayPoint.BlockedEdgesForPlayer);\n                }\n\n                var unblockedEdges = new HashSet<Tuple<MyWayPoint, MyWayPoint>>();\n\n                // get 7 closest visible waypoints to startPos and compute shortest paths from them\n                \n                // first try 7 closest\n                var closestVisibleWaypoints = MyWayPointGraph.GetClosestVisibleWaypoints(m_startPos, m_goalEntity, 7, 7, visibleFromStartPosCache);\n\n                if (closestVisibleWaypoints.Count == 0 || !FindPathBetweenWaypoints(closestVisibleWaypoints, goal, visibleFromStartPosCache, blockedEdges, unblockedEdges))\n                {\n                    // failure: try 50 closest\n                    closestVisibleWaypoints = MyWayPointGraph.GetClosestVisibleWaypoints(m_startPos, m_goalEntity, 12, 50, visibleFromStartPosCache);\n\n                    if (closestVisibleWaypoints.Count == 0 || !FindPathBetweenWaypoints(closestVisibleWaypoints, goal, visibleFromStartPosCache, blockedEdges, unblockedEdges))\n                    {\n                        return;  // no use\n                    }\n                }\n            }\n            finally\n            {\n                if (m_goalEntity != null)\n                {\n                    m_goalEntity.OnClose -= goalEntity_OnClose;\n                }\n\n                MyEntities.EntityCloseLock.ReleaseShared();\n            }\n        }\n\n        private bool FindPathBetweenWaypoints(\n            List<MyWayPoint> closestVisibleWaypoints,\n            MyWayPoint goal,\n            Dictionary<MyWayPoint, bool> visibleFromStartPosCache,\n            HashSet<Tuple<MyWayPoint, MyWayPoint>> blockedEdges,\n            HashSet<Tuple<MyWayPoint, MyWayPoint>> unblockedEdges\n        )\n        {\n            // find the best path candidate\n            float shortestPathLength = float.MaxValue;\n            int retryCount = 0;\n\n            for (int j = 0; j < closestVisibleWaypoints.Count && retryCount < 30; j++)  // max retry count is 30\n            {\n                var path = closestVisibleWaypoints[j].GetShortestPathTo(goal, blockedEdges, true, false);\n                if (path.Count == 0) continue;\n\n                // optimize the path: try to delete waypoints from the start of the path (if the next waypoints are visible)\n                int farthestVisibleWaypointInPath = 0;\n\n                for (int i = Math.Min(path.Count - 1, 20); i > 0; i--)  // path optimization: max 20 raycasts per path candidate, reuse previous results\n                    if (path[i].IsVisibleFrom(m_startPos, m_goalEntity, visibleFromStartPosCache))\n                    {\n                        farthestVisibleWaypointInPath = i;\n                        break;\n                    }\n\n                // compute the length of the path candidate\n                float length = Vector3.Distance(m_startPos, path[farthestVisibleWaypointInPath].WorldMatrix.Translation) + Vector3.Distance(path[path.Count - 1].WorldMatrix.Translation, m_goalPos);\n                for (int i = farthestVisibleWaypointInPath; i < path.Count - 1; i++)\n                    length += Vector3.Distance(path[i].WorldMatrix.Translation, path[i + 1].WorldMatrix.Translation);\n\n                // if it's the shortest path candidate yet, make it the new GPS path\n                if (length < shortestPathLength)\n                {\n                    // but first check that the edges are free of any obstructions (and remember it)\n                    bool pathBlocked = false;\n                    for (int i = farthestVisibleWaypointInPath; i < path.Count - 2; i++)\n                    {\n                        // assume that edges between non-generated waypoints are always ok\n                        if (path[i].Save && path[i + 1].Save)\n                            continue;\n\n                        var tuple = Tuple.Create(path[i], path[i + 1]);\n                        if (unblockedEdges.Contains(tuple))  // already tested and it was ok\n                        {\n                        }\n                        else if (path[i + 1].IsVisibleFrom(path[i].Position, m_goalEntity))\n                        {\n                            unblockedEdges.Add(tuple);\n                            unblockedEdges.Add(Tuple.Create(path[i + 1], path[i]));\n                        }\n                        else\n                        {\n                            blockedEdges.Add(tuple);\n                            blockedEdges.Add(Tuple.Create(path[i + 1], path[i]));\n                            pathBlocked = true;\n                            break;\n                        }\n                    }\n                    if (pathBlocked)\n                    {\n                        j--;  // retry current waypoint with updated cache of blocked edges\n                        retryCount++;\n                        continue;\n                    }\n\n                    // seems legit\n                    shortestPathLength = length;\n                    Path = new List<Vector3>();\n                    Path.Add(m_startPos);\n                    for (int i = farthestVisibleWaypointInPath; i < path.Count; i++) Path.Add(path[i].WorldMatrix.Translation);\n                    Path.Add(m_goalPos);\n                }\n            }\n\n            if (Path.Count != 0)\n            {\n                Message = new StringBuilder().AppendFormat(MyTextsWrapper.Get(MyTextsWrapperEnum.GPSDistance).ToString(), shortestPathLength);\n                return true;\n            }\n            else\n            {\n                return false;\n            }\n        }\n\n        public WorkOptions Options\n        {\n            get { return new WorkOptions() { MaximumThreads = 1 }; }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/HUD/MyEffectHudSectorBorder.cs",
    "content": "﻿using MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Voxels;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Effects;\n\nusing SharpDX.Direct3D9;\n\nnamespace MinerWars.AppCode.Game.Effects\n{\n    /*\n    using Vector2 = MinerWarsMath.Vector2;\n    using Vector3 = MinerWarsMath.Vector3;\n    using Matrix = MinerWarsMath.Matrix;\n\n    class MyEffectHudSectorBorder : MyEffectBase\n    {\n        public EffectHandle GridTexture;\n        public EffectHandle SectorBorderWarningDistance;\n        public EffectHandle SectorBorderAditionalColor;\n        public EffectHandle SectorBorderTabPressed;\n        public EffectHandle EyePosition;\n        public EffectHandle ViewProjectionMatrix;\n        public EffectHandle WorldMatrix;\n\n        public MyEffectHudSectorBorder()\n            : base(\"Effects2\\\\BackgroundCube\\\\MyHudSectorBorder\")\n        {\n            GridTexture = m_D3DEffect.GetParameter(null, \"GridTexture\"];\n            SectorBorderWarningDistance = m_D3DEffect.GetParameter(null, \"SectorBorderWarningDistance\"];\n            SectorBorderAditionalColor = m_D3DEffect.GetParameter(null, \"SectorBorderAditionalColor\"];\n            SectorBorderTabPressed = m_D3DEffect.GetParameter(null, \"SectorBorderTabPressed\"];\n            EyePosition = m_D3DEffect.GetParameter(null, \"EyePosition\"];\n            ViewProjectionMatrix = m_D3DEffect.GetParameter(null, \"ViewProjectionMatrix\"];\n            WorldMatrix = m_D3DEffect.GetParameter(null, \"WorldMatrix\"];\n        }\n    }  */\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/HUD/MyHud.cs",
    "content": "﻿using System;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Entities.Prefabs;\nusing MinerWars.AppCode.Game.Entities.WayPoints;\nusing MinerWars.AppCode.Game.Prefabs;\nusing MinerWars.AppCode.Game.Radar;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.VideoMode;\nusing MinerWars.CommonLIB.AppCode.Generics;\nusing SysUtils.Utils;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.AppCode.Game.GUI.Helpers;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.World.Global;\nusing System.Collections;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing KeenSoftwareHouse.Library.Extensions;\nusing MinerWars.AppCode.Game.Textures;\nusing SysUtils;\nusing MinerWars.AppCode.Game.World;\nusing MinerWars.AppCode.Game.Missions;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.AppCode.Game.Inventory;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Render;\nusing MinerWars.AppCode.Game.Effects;\nusing MinerWars.AppCode.Game.Entities.Weapons;\nusing MinerWars.AppCode.Game.Audio;\nusing ParallelTasks;\nusing MinerWars.AppCode.Game.Entities.Tools;\nusing MinerWars.AppCode.Game.Audio.Dialogues;\nusing MinerWars.AppCode.Game.Renders;\n\nusing MinerWars.AppCode.Game.Sessions;\nusing MinerWars.AppCode.Game.Voxels;\nusing MinerWars.AppCode.Game.Utils.VertexFormats;\n\n//using MinerWarsMath;\n//using MinerWarsMath.Graphics;\n\nusing SharpDX;\nusing SharpDX.Direct3D9;\nusing SharpDX.Toolkit;\nusing SharpDX.Toolkit.Graphics;\n\n\n//  This class draws crosshair, angles and all HUD stuff. \n//\n//  Coordinates are ALMOST in <0..1> range, but think about this:\n//  Screen size -> width is always 1.0, but height depends on aspect ratio, so usualy it is 0.8 or something.\n//\n//  Every line is composed of three rectangles. Middle rectangle is for the main line and two other represents circles at the end.\n//  IMPORTANT: Above line apply only if DRAW_LINE_ENDS enables it. Reason why I don't use it is because I had problems making that \n//  end texture correct and without ends it's even faster (less rectangles to draw)\n\nnamespace MinerWars.AppCode.Game.HUD\n{\n    using Vector2 = MinerWarsMath.Vector2;\n    using Vector3 = MinerWarsMath.Vector3;\n    using Vector4 = MinerWarsMath.Vector4;\n    using Rectangle = MinerWarsMath.Rectangle;\n    using Matrix = MinerWarsMath.Matrix;\n    using Color = MinerWarsMath.Color;\n    using BoundingBox = MinerWarsMath.BoundingBox;\n    using BoundingSphere = MinerWarsMath.BoundingSphere;\n    using BoundingFrustum = MinerWarsMath.BoundingFrustum;\n    using MathHelper = MinerWarsMath.MathHelper;\n    \n\n\n    enum MyHudDrawPassEnum\n    {\n        FIRST,\n        SECOND\n    }\n\n\n    enum MyGuitargetMode\n    {\n        Neutral,\n        Enemy,\n        Friend,\n        Objective,\n        ObjectiveOptional,\n        CargoBox,\n    }\n\n    [Flags]\n    enum MyHudDrawElementEnum \n    {\n        NONE = 0,\n        DIRECTION_INDICATORS = 1 << 0,\n        CROSSHAIR = 1 << 1,        \n        DAMAGE_INDICATORS = 1 << 2,\n        AMMO = 1 << 3,\n        HARVEST_MATERIAL = 1 << 4,\n        BARGRAPHS_PLAYER_SHIP = 1 << 6,\n        BARGRAPHS_LARGE_WEAPON = 1 << 7,\n        DIALOGUES = 1 << 8,\n        MISSION_OBJECTIVES = 1 << 9,\n        BACK_CAMERA = 1 << 10,\n        WHEEL_CONTROL = 1 << 11,\n        CROSSHAIR_DYNAMIC = 1 << 12,\n    }\n\n    [Flags]\n    enum MyHudIndicatorFlagsEnum\n    {\n        NONE = 0,\n        SHOW_TEXT = 1 << 0,\n        SHOW_BORDER_INDICATORS = 1 << 1,\n        SHOW_HEALTH_BARS = 1 << 2,\n        SHOW_ONLY_IF_DETECTED_BY_RADAR = 1 << 3,\n        SHOW_DISTANCE = 1 << 4,\n        ALPHA_CORRECTION_BY_DISTANCE = 1 << 5,\n        SHOW_MISSION_MARKER = 1 << 6,\n        SHOW_FACTION_RELATION_MARKER = 1 << 7,\n        SHOW_LOCKED_TARGET = 1 << 8,\n        SHOW_LOCKED_SIDE_TARGET = 1 << 9,\n        SHOW_ICON = 1 << 10,\n\n        SHOW_ALL = SHOW_TEXT | SHOW_BORDER_INDICATORS | SHOW_HEALTH_BARS | SHOW_ONLY_IF_DETECTED_BY_RADAR | SHOW_DISTANCE | \n                   ALPHA_CORRECTION_BY_DISTANCE | SHOW_MISSION_MARKER | SHOW_FACTION_RELATION_MARKER,\n        \n    }\n\n    struct MyHudDisplayFactionRelation \n    {\n        public bool Friend;\n        public bool Neutral;\n        public bool Enemy;\n\n        public static MyHudDisplayFactionRelation Default \n        {\n            get \n            {\n                return new MyHudDisplayFactionRelation(true, true, true);\n            }\n        }        \n\n        public MyHudDisplayFactionRelation(bool friend, bool neutral, bool enemy) \n        {\n            Friend = friend;\n            Neutral = neutral;\n            Enemy = enemy;\n        }\n\n        public bool CanBeDisplayed(MyFactionRelationEnum factionRelation) \n        {\n            switch(factionRelation)\n            {\n                case MyFactionRelationEnum.Friend:\n                    return Friend;\n                case MyFactionRelationEnum.Neutral:\n                    return Neutral;\n                case MyFactionRelationEnum.Enemy:\n                    return Enemy;\n            }\n            throw new MyMwcExceptionApplicationShouldNotGetHere();\n        }\n    }\n\n    enum MyHudMaxDistanceMultiplerTypes\n    {\n        CargoBoxAmmo,\n        CargoBoxMedkit,\n        CargoBoxOxygen,\n        CargoBoxEnergy,\n        CargoBoxFuel,\n        CargoBoxRepair,\n    }\n\n    struct MyHudEntityParams\n    {\n        public StringBuilder Text { get; set; }\n        public MyHudTexturesEnum? Icon { get; set; }\n        public Vector2 IconOffset { get; set; }\n        public Vector2 IconSize { get; set; }\n        public Color? IconColor { get; set; }\n        public MyHudIndicatorFlagsEnum FlagsEnum { get; set; }\n        public MyGuitargetMode? TargetMode { get; set; }\n        public float MaxDistance { get; set; }\n        public MyHudDisplayFactionRelation DisplayFactionRelation { get; set; }\n        public MyHudMaxDistanceMultiplerTypes? MaxDistanceMultiplerType;\n\n        public MyHudEntityParams(StringBuilder text, MyGuitargetMode? targetMode, float maxDistance, MyHudIndicatorFlagsEnum flagsEnum, MyHudDisplayFactionRelation? displayFactionRelation = null, MyHudMaxDistanceMultiplerTypes? maxDistanceMultiplerType = null)\n            : this()\n        {\n            this.Text = text;\n            this.FlagsEnum = flagsEnum;\n            this.MaxDistance = maxDistance;\n            this.TargetMode = targetMode;\n            this.MaxDistanceMultiplerType = maxDistanceMultiplerType;\n\n            if (displayFactionRelation.HasValue)\n            {\n                DisplayFactionRelation = displayFactionRelation.Value;\n            }\n            else \n            {\n                DisplayFactionRelation = MyHudDisplayFactionRelation.Default;\n            }\n        }\n    }\n\n    //  This enums must have same name as source texture files used to create texture atlas\n    //  And only \".tga\" files are supported.\n    //  IMPORTANT: If you change order or names in this enum, update it also in MyEnumsToStrings\n    enum MyHudTexturesEnum : byte\n    {\n        Line,\n        DirectionIndicator_blue,\n        DirectionIndicator_green,\n        DirectionIndicator_red,\n        DirectionIndicator_white,\n        Target,\n        Crosshair_locked,\n        Crosshair_side_locked,\n        Crosshair01,\n        HorizontalLineLeft,\n        HorizontalLineRight,\n        damage_direction,\n        BackCameraOverlay,\n        //RadarOverlay,\n        Rectangle,\n\n        hudStatusArmor_blue,\n        hudStatusArmor_red,\n        hudStatusFuel_blue,\n        hudStatusFuel_red,\n        hudStatusOxygen_blue,\n        hudStatusOxygen_red,\n        hudStatusPlayerHealth_blue,\n        hudStatusPlayerHealth_red,\n        hudStatusShipDamage_blue,\n        hudStatusShipDamage_red,\n        hudStatusSpeed,\n        hudStatusBar_blue,\n        hudStatusBar_red,\n        hudUnderbarSmall,\n        hudUnderbarBig,\n        TargetBlue,\n        TargetGreen,\n        TargetRed,\n        CargoBoxIndicator,\n        Unpowered_blue,\n        Unpowered_green,\n        Unpowered_red,\n        Unpowered_white,\n        HudOre,\n        crosshair_nazzi,\n        crosshair_omnicorp,\n        crosshair_russian,\n        crosshair_templary,\n        Sun,\n        crosshair_nazzi_red,\n        crosshair_omnicorp_red,\n        crosshair_russian_red,\n        crosshair_templary_red,\n        Crosshair01_red,\n    }\n\n    static class MyHud\n    {\n\n        class MyHudSetting\n        {\n            public MyGuiFont Font { get; set; }\n            public MyHudTexturesEnum TextureDirectionIndicator { get; set; }\n            public MyHudTexturesEnum TextureTarget { get; set; }\n            public Color Color { get; set; }\n            public float TextureTargetRotationSpeed { get; set; }\n            public float TextureTargetScale { get; set; }\n            public MyHudTexturesEnum TextureUnpowered { get; set; }\n\n            public MyHudSetting(MyGuiFont font, MyHudTexturesEnum textureDirectionIndicator, MyHudTexturesEnum textureTarget, MyHudTexturesEnum textureUnpowered, Color color, float textureTargetRotationSpeed = 0f, float textureTargetScale = 1f) \n            {\n                Font = font;\n                TextureDirectionIndicator = textureDirectionIndicator;\n                TextureTarget = textureTarget;\n                this.Color = color;\n                TextureTargetRotationSpeed = textureTargetRotationSpeed;\n                TextureTargetScale = textureTargetScale;\n                TextureUnpowered = textureUnpowered;\n            }\n\n        }\n\n        class MyHudAlphaCorrection\n        {\n            public float MinDistance { get; set; }\n            public float MaxDistance { get; set; }\n            public float MinDistanceAlpha { get; set; }\n            public float MaxDistanceAlpha { get; set; }\n\n            public MyHudAlphaCorrection(float minDistance, float maxDistance, float minDistanceAlpha, float maxDistanceAlpha)\n            {\n                MinDistance = minDistance;\n                MaxDistance = maxDistance;\n                MinDistanceAlpha = minDistanceAlpha;\n                MaxDistanceAlpha = maxDistanceAlpha;\n            }\n\n            public byte GetAlphaByDistance(float distance)\n            {\n                float fixedDistance = Math.Min(Math.Max(MinDistance, distance), MaxDistance);\n                float colorAlpha = MathHelper.Lerp(MinDistanceAlpha, MaxDistanceAlpha, (fixedDistance - MinDistance) / (MaxDistance - MinDistance));\n                byte colorAlhpaInByte = (byte)MathHelper.Lerp(byte.MinValue, byte.MaxValue, colorAlpha);\n                return colorAlhpaInByte;\n            }\n        }        \n\n        public const MyHudIndicatorFlagsEnum DEFAULT_FLAGS = MyHudIndicatorFlagsEnum.SHOW_TEXT | MyHudIndicatorFlagsEnum.SHOW_BORDER_INDICATORS | MyHudIndicatorFlagsEnum.SHOW_DISTANCE | MyHudIndicatorFlagsEnum.ALPHA_CORRECTION_BY_DISTANCE | MyHudIndicatorFlagsEnum.SHOW_MISSION_MARKER | MyHudIndicatorFlagsEnum.SHOW_FACTION_RELATION_MARKER;\n\n        static MyTexture2D m_texture;\n        static MyAtlasTextureCoordinate[] m_textureCoords;\n        static MyVertexFormatPositionTextureColor[] m_vertices;\n        static Matrix m_orthographicProjectionMatrix;\n        static int m_quadsCount;\n        static MyObjectsPoolSimple<MyHudText> m_texts;\n\n        public static MyTexture2D Texture\n        {\n            get { return m_texture; }\n        }\n\n        private static float m_missionHighlight;\n        private static bool m_missionHighlightIncreasing;\n\n        /// <summary>\n        /// List of entitis for which we show some custom hud text.\n        /// </summary>\n        private static List<Tuple<WeakReference, MyHudEntityParams>> HudEntities;\n\n        // THIS IS USED ONLY FOR DEBUG HUD\n        private static List<Tuple<Vector3, MyHudEntityParams>> HudDebugPoints;\n\n        //  String Builder helpers for creating and filling texts - do not reuse them for different texts, because string builders\n        //  work by reference so then you could overwrite your previous text. Instead, make new sb-helper for each drawn text\n        static readonly StringBuilder m_sbHelperAmountOfAmmoTextSeparator = new StringBuilder(\": \");\n        static readonly StringBuilder m_sbHelperRadarZoomEndX = new StringBuilder(\" x\");\n        static readonly StringBuilder m_sbSpaceSeparator = new StringBuilder(\" \");\n        static readonly StringBuilder m_sbSpeed = new StringBuilder(\"m/s\");\n        static readonly StringBuilder m_sbPercentage = new StringBuilder(\"%\");\n\n        static readonly StringBuilder m_sbControlling = MyTextsWrapper.Get(MyTextsWrapperEnum.Controlling);\n\n        static StringBuilder m_missionDescriptions;\n        static MyGuiControlMultilineText m_dialogueTextAreaControl;\n        static MyGuiControlMultilineText m_dialogueActorNameControl;\n        static MyDialogueSentence m_lastDialogueSentence = null;\n\n        // debug hud\n        public static bool Visible = true;\n        public static bool ShowDebugHud = false;\n        public static bool ShowDebugWaypoints = false;\n        public static bool ShowDebugWaypointsCollisions = false;\n        public static bool ShowDebugGeneratedWaypoints = false;\n        private static StringBuilder m_hudDebugText = new StringBuilder();\n        private static StringBuilder m_textIndestructible = new StringBuilder(\"Indestructible\");\n        private const char m_hudHealthSeparator = '/';\n        private static StringBuilder m_hudHealthAndArmorSeparator = new StringBuilder(\" : \");\n\n        // enemies in HUD\n        private static MyHudEnemies m_hudEnemies;\n\n        private static MyHudDrawElementEnum[] m_drawForCameraAttachedTo;\n\n        private static MyHudEntityParams m_sunHudParams;\n        private static MyHudEntityParams m_madelynHudParams;\n        private static float m_sunHudIconColorAlpha = 0f;\n        private static bool m_sunHudIconColorAlphaIncreasing = true;\n        private const float SUN_BLINK_ALPHA_INCREMENT = 0.1f;\n\n        private static MyHudAlphaCorrection[] m_hudAlphaCorrection;\n        private static MyHudSetting[] m_hudSettings;\n\n        //private static List<IMyObjectToDetect> m_detectedObjects = new List<IMyObjectToDetect>();\n\n        private static bool m_wasMothershipHudDisplayed = false;\n\n        /// <summary>\n        /// Initializes the <see cref=\"MyHud\"/> class.\n        /// </summary>\n        static MyHud()\n        {\n            HudEntities = new List<Tuple<WeakReference, MyHudEntityParams>>();\n            m_hudEnemies = new MyHudEnemies();\n\n            HudMaxDistanceMultiplers = new float[MyMwcUtils.GetMaxValueFromEnum<MyHudMaxDistanceMultiplerTypes>() + 1];\n            for (int i = 0; i < HudMaxDistanceMultiplers.Length; i++)\n            {\n                HudMaxDistanceMultiplers[i] = 1.0f;\n            }\n\n#if DEBUG\n            HudDebugPoints = new List<Tuple<Vector3, MyHudEntityParams>>();\n#endif\n            m_drawForCameraAttachedTo = new MyHudDrawElementEnum[MyMwcUtils.GetMaxValueFromEnum<MyCameraAttachedToEnum>() + 1];\n            m_hudAlphaCorrection = new MyHudAlphaCorrection[MyMwcUtils.GetMaxValueFromEnum<MyGuitargetMode>() + 1];\n            m_hudSettings = new MyHudSetting[MyMwcUtils.GetMaxValueFromEnum<MyGuitargetMode>() + 1];\n            LoadDrawForCameraAttachedTo();\n\n            DamageIndicators = new DamageIndicator[MAX_DAMAGE_INDICATORS];\n            for (int i = 0; i < DamageIndicators.Length; i++)\n            {\n                DamageIndicators[i] = new DamageIndicator();\n            }\n        }\n\n        static void LoadDrawForCameraAttachedTo()\n        {\n            MyHudDrawElementEnum drawForPlayerShip\n                = MyHudDrawElementEnum.AMMO | MyHudDrawElementEnum.BARGRAPHS_PLAYER_SHIP |\n                  MyHudDrawElementEnum.DIALOGUES | MyHudDrawElementEnum.DIRECTION_INDICATORS |\n                  MyHudDrawElementEnum.DAMAGE_INDICATORS |\n                  MyHudDrawElementEnum.MISSION_OBJECTIVES |\n                  MyHudDrawElementEnum.BACK_CAMERA | MyHudDrawElementEnum.WHEEL_CONTROL;\n\n            m_drawForCameraAttachedTo[(int)MyCameraAttachedToEnum.BotMinerShip] = MyHudDrawElementEnum.NONE;\n            m_drawForCameraAttachedTo[(int)MyCameraAttachedToEnum.Camera] = MyHudDrawElementEnum.MISSION_OBJECTIVES | MyHudDrawElementEnum.DIALOGUES;\n            m_drawForCameraAttachedTo[(int)MyCameraAttachedToEnum.Drone] = MyHudDrawElementEnum.DIRECTION_INDICATORS | MyHudDrawElementEnum.MISSION_OBJECTIVES | MyHudDrawElementEnum.DIALOGUES;\n            m_drawForCameraAttachedTo[(int)MyCameraAttachedToEnum.LargeWeapon] = MyHudDrawElementEnum.BARGRAPHS_LARGE_WEAPON | MyHudDrawElementEnum.DIALOGUES | MyHudDrawElementEnum.MISSION_OBJECTIVES | MyHudDrawElementEnum.DIRECTION_INDICATORS | MyHudDrawElementEnum.DAMAGE_INDICATORS;\n            m_drawForCameraAttachedTo[(int)MyCameraAttachedToEnum.PlayerMinerShip] = drawForPlayerShip | MyHudDrawElementEnum.CROSSHAIR;\n            m_drawForCameraAttachedTo[(int)MyCameraAttachedToEnum.PlayerMinerShip_ThirdPersonDynamic] = drawForPlayerShip | MyHudDrawElementEnum.CROSSHAIR_DYNAMIC;\n            m_drawForCameraAttachedTo[(int)MyCameraAttachedToEnum.PlayerMinerShip_ThirdPersonFollowing] = MyHudDrawElementEnum.NONE;\n            m_drawForCameraAttachedTo[(int)MyCameraAttachedToEnum.PlayerMinerShip_ThirdPersonStatic] = MyHudDrawElementEnum.NONE;\n            m_drawForCameraAttachedTo[(int)MyCameraAttachedToEnum.Spectator] = MyHudDrawElementEnum.DIRECTION_INDICATORS;\n        }\n\n        public static void LoadData()\n        {\n            m_sunHudParams = new MyHudEntityParams(MyTextsWrapper.Get(MyTextsWrapperEnum.Sun), null, 0f, MyHudIndicatorFlagsEnum.SHOW_TEXT | MyHudIndicatorFlagsEnum.SHOW_BORDER_INDICATORS | MyHudIndicatorFlagsEnum.SHOW_ICON);\n            m_sunHudParams.Icon = MyHudTexturesEnum.Sun;\n            m_sunHudParams.IconColor = Color.White;\n            m_sunHudParams.IconOffset = new Vector2(-0.02f, 0f);\n            m_sunHudParams.IconSize = new Vector2(MyHudConstants.HUD_DIRECTION_INDICATOR_SIZE * 6f, MyHudConstants.HUD_DIRECTION_INDICATOR_SIZE * 6f);\n\n            if (MySession.Static != null)\n            {\n                m_madelynHudParams = new MyHudEntityParams(MySession.Static.MotherShipPosition.Name, MyGuitargetMode.Friend, 0,\n                    MyHudIndicatorFlagsEnum.SHOW_TEXT | MyHudIndicatorFlagsEnum.SHOW_BORDER_INDICATORS | MyHudIndicatorFlagsEnum.SHOW_HEALTH_BARS | MyHudIndicatorFlagsEnum.SHOW_DISTANCE | MyHudIndicatorFlagsEnum.SHOW_MISSION_MARKER);\n            }\n\n            m_oreHudParams = new MyHudEntityParams(null, MyGuitargetMode.Neutral, 2000f, MyHudIndicatorFlagsEnum.SHOW_DISTANCE | MyHudIndicatorFlagsEnum.SHOW_BORDER_INDICATORS | MyHudIndicatorFlagsEnum.SHOW_TEXT);\n\n            m_hudAlphaCorrection[(int)MyGuitargetMode.Friend] = new MyHudAlphaCorrection(MyHudConstants.HUD_MIN_DISTANCE_TO_ALPHA_CORRECT, MyHudConstants.HUD_MAX_DISTANCE_TO_ALPHA_CORRECT_NORMAL, MyHudConstants.HUD_MIN_DISTANCE_ALPHA, MyHudConstants.HUD_MAX_DISTANCE_ALPHA);\n            m_hudAlphaCorrection[(int)MyGuitargetMode.Neutral] = new MyHudAlphaCorrection(MyHudConstants.HUD_MIN_DISTANCE_TO_ALPHA_CORRECT, MyHudConstants.HUD_MAX_DISTANCE_TO_ALPHA_CORRECT_NORMAL, MyHudConstants.HUD_MIN_DISTANCE_ALPHA, MyHudConstants.HUD_MAX_DISTANCE_ALPHA);\n            m_hudAlphaCorrection[(int)MyGuitargetMode.Enemy] = new MyHudAlphaCorrection(MyHudConstants.HUD_MIN_DISTANCE_TO_ALPHA_CORRECT, MyHudConstants.HUD_MAX_DISTANCE_TO_ALPHA_CORRECT_ENEMIES, MyHudConstants.HUD_MIN_DISTANCE_ALPHA, MyHudConstants.HUD_MAX_DISTANCE_ALPHA);\n            m_hudAlphaCorrection[(int)MyGuitargetMode.Objective] = null;\n            m_hudAlphaCorrection[(int)MyGuitargetMode.ObjectiveOptional] = null;\n            m_hudAlphaCorrection[(int)MyGuitargetMode.CargoBox] = null;\n\n            m_oreHudSetting = new MyHudSetting(MyGuiManager.GetFontMinerWarsWhite(), MyHudTexturesEnum.DirectionIndicator_white, MyHudTexturesEnum.HudOre, MyHudTexturesEnum.Unpowered_white, Color.White);\n            m_hudSettings[(int)MyGuitargetMode.Friend] = new MyHudSetting(MyHudConstants.FRIEND_FONT, MyHudTexturesEnum.DirectionIndicator_green, MyHudTexturesEnum.TargetGreen, MyHudTexturesEnum.Unpowered_green, MyHudConstants.FRIEND_MARKER_COLOR);\n            m_hudSettings[(int)MyGuitargetMode.Neutral] = new MyHudSetting(MyHudConstants.NEUTRAL_FONT, MyHudTexturesEnum.DirectionIndicator_white, MyHudTexturesEnum.Target, MyHudTexturesEnum.Unpowered_white, MyHudConstants.NEUTRAL_MARKER_COLOR);\n            m_hudSettings[(int)MyGuitargetMode.Enemy] = new MyHudSetting(MyHudConstants.ENEMY_FONT, MyHudTexturesEnum.DirectionIndicator_red, MyHudTexturesEnum.TargetRed, MyHudTexturesEnum.Unpowered_red, MyHudConstants.BOT_MARKER_COLOR);\n            m_hudSettings[(int)MyGuitargetMode.Objective] = new MyHudSetting(MyHudConstants.MISSION_FONT, MyHudTexturesEnum.DirectionIndicator_blue, MyHudTexturesEnum.TargetBlue, MyHudTexturesEnum.Unpowered_blue, MyHudConstants.MISSION_MARKER_COLOR_BLUE);\n            m_hudSettings[(int)MyGuitargetMode.ObjectiveOptional] = new MyHudSetting(MyHudConstants.MISSION_FONT, MyHudTexturesEnum.DirectionIndicator_blue, MyHudTexturesEnum.TargetBlue, MyHudTexturesEnum.Unpowered_blue, MyHudConstants.MISSION_MARKER_COLOR_BLUE);\n            m_hudSettings[(int)MyGuitargetMode.CargoBox] = new MyHudSetting(MyHudConstants.NEUTRAL_FONT, MyHudTexturesEnum.DirectionIndicator_white, MyHudTexturesEnum.CargoBoxIndicator, MyHudTexturesEnum.Unpowered_white, MyHudConstants.NEUTRAL_MARKER_COLOR, 0.75f, 1.5f);\n        }\n\n        public static void LoadContent(MyGuiScreenBase parent)\n        {     \n            MyMwcLog.WriteLine(\"MyHud.LoadContent() - START\");\n            MyMwcLog.IncreaseIndent();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyHud::LoadContent\");\n\n            MyUtils.LoadTextureAtlas(MyEnumsToStrings.HudTextures, \"Textures\\\\HUD\\\\\", MyMinerGame.Static.RootDirectory + \"\\\\Textures\\\\HUD\\\\HudAtlas.tai\", out m_texture, out m_textureCoords);\n            Debug.Assert(m_texture.LevelCount > 1, \"HudAtlas does not have mip maps geneated\");\n\n            m_texts = new MyObjectsPoolSimple<MyHudText>(MyHudConstants.MAX_HUD_TEXTS_COUNT);\n            m_vertices = new MyVertexFormatPositionTextureColor[MyHudConstants.MAX_HUD_QUADS_COUNT * MyHudConstants.VERTEXES_PER_HUD_QUAD];\n\n            Vector2 size = new Vector2(0.4f, 0.25f);\n            Vector2 origin = MyGuiManager.GetNormalizedCoordinateFromScreenCoordinate(new Vector2(MyMinerGame.ScreenSize.X, 0f))\n                + new Vector2(-size.X / 2f, size.Y / 2f);\n            m_missionDescriptions = new StringBuilder();\n            new MyGuiControlMultilineText(parent, origin, size, MyGuiConstants.MULTILINE_LABEL_BACKGROUND_COLOR,\n                                          MyGuiManager.GetFontMinerWarsWhite(), 0.6f, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP, m_missionDescriptions);\n\n            m_dialogueTextAreaControl = new MyGuiControlMultilineText(parent, MyHudConstants.DIALOGUE_TEXTAREA_POSITION, MyHudConstants.DIALOGUE_TEXTAREA_SIZE,\n                Vector4.Zero, MyGuiManager.GetFontMinerWarsBlue(), MyHudConstants.DIALOGUE_TEXTAREA_FONT_SIZE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP, new StringBuilder(), false, false);\n\n            m_dialogueActorNameControl = new MyGuiControlMultilineText(parent, MyHudConstants.DIALOGUE_ACTORNAME_POSITION, MyHudConstants.DIALOGUE_ACTORNAME_SIZE,\n                Vector4.Zero, MyGuiManager.GetFontMinerWarsBlue(), MyHudConstants.DIALOGUE_ACTORNAME_FONT_SIZE, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP, new StringBuilder(), false, false);\n\n\n            for (int i = 0; i < DamageIndicators.Length; i++)\n            {\n                DamageIndicators[i].Used = false;\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyHud.LoadContent() - END\");       \n        }\n\n        public static void UpdateScreenSize()\n        {\n            m_orthographicProjectionMatrix = Matrix.CreateOrthographicOffCenter(0.0f, MyGuiManager.GetHudSize().X, MyGuiManager.GetHudSize().Y, 0.0f, 0.0f, 1000);//-1.0f);\n        }\n\n        public static void UnloadData()\n        {\n            HudEntities.Clear();\n        }\n\n        public static void UnloadContent()\n        {\n            MyMwcLog.WriteLine(\"MyHud.UnloadContent - START\");\n            MyMwcLog.IncreaseIndent();\n\n            if (m_missionDescriptions != null)\n            {\n                m_missionDescriptions.Clear();\n                m_missionDescriptions = null;\n            }\n\n            m_dialogueTextAreaControl = null;\n            m_lastDialogueSentence = null;\n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyHud.UnloadContent - END\");\n        }        \n\n        //  Draw class is in two passes, because first pass is drawn before we draw back camera. So it's about having sorting.\n        public static void Draw(MyHudDrawPassEnum pass, MyCameraAttachedToEnum cameraAttachedTo, bool backCamera)\n        {\n            MyRender.GetRenderProfiler().StartProfilingBlock(\"Clear\");\n            MyCamera.EnableHud();\n\n            ClearQuads();\n            ClearTexts();\n\n            MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            MyHudDrawElementEnum drawForCameraAttachedTo = m_drawForCameraAttachedTo[(int)cameraAttachedTo];\n\n            if (pass == MyHudDrawPassEnum.FIRST)\n            {\n                if ((drawForCameraAttachedTo & MyHudDrawElementEnum.DIRECTION_INDICATORS) != 0)\n                {\n                    MyRender.GetRenderProfiler().StartProfilingBlock(\"AddDirectionIndicators\");\n                    AddDirectionIndicators();\n                    MyRender.GetRenderProfiler().EndProfilingBlock();\n\n                    MyRender.GetRenderProfiler().StartProfilingBlock(\"AddOreMarkers\");\n                    if (MyFakes.ENABLE_DISPLAYING_ORE_ON_HUD)\n                    {\n                        AddOreMarkers();\n                    }\n                    MyRender.GetRenderProfiler().EndProfilingBlock();\n                }\n                if ((drawForCameraAttachedTo & MyHudDrawElementEnum.DAMAGE_INDICATORS) != 0)\n                {\n                    MyRender.GetRenderProfiler().StartProfilingBlock(\"AddDamageIndicators\");\n                    AddDamageIndicators();\n                    MyRender.GetRenderProfiler().EndProfilingBlock();\n                }\n            }\n            else if (pass == MyHudDrawPassEnum.SECOND)\n            {\n\n                if ((drawForCameraAttachedTo & MyHudDrawElementEnum.CROSSHAIR) != 0 || MyFakes.CUBE_EDITOR)\n                {\n                    if (!MySession.Is25DSector)\n                    {\n                        MyRender.GetRenderProfiler().StartProfilingBlock(\"AddHorisontalAngleLine\");\n                        AddHorisontalAngleLine();\n                        MyRender.GetRenderProfiler().EndProfilingBlock();\n\n                        MyRender.GetRenderProfiler().StartProfilingBlock(\"AddCrosshair\");\n                        if (CanDrawCrossHair())\n                        {\n                            AddCrosshair();\n                        }\n                        MyRender.GetRenderProfiler().EndProfilingBlock();\n                    }\n                }\n                if ((drawForCameraAttachedTo & MyHudDrawElementEnum.CROSSHAIR_DYNAMIC) != 0)\n                {\n                    MyRender.GetRenderProfiler().StartProfilingBlock(\"AddCrosshairDynamic\");\n                    if (CanDrawCrossHair())\n                    {\n                        AddCrosshairDynamic();\n                    }\n                    MyRender.GetRenderProfiler().EndProfilingBlock();\n                }\n                if (backCamera && (drawForCameraAttachedTo & MyHudDrawElementEnum.BACK_CAMERA) != 0)\n                {\n                    MyRender.GetRenderProfiler().StartProfilingBlock(\"AddBackCameraBorders\");\n                    AddBackCameraBorders();\n                    MyRender.GetRenderProfiler().EndProfilingBlock();\n                }\n                if ((drawForCameraAttachedTo & MyHudDrawElementEnum.AMMO) != 0)\n                {\n                    MyRender.GetRenderProfiler().StartProfilingBlock(\"AddAmountOfAmmo\");\n                    AddAmountOfAmmo();\n                    MyRender.GetRenderProfiler().EndProfilingBlock();\n                }\n                if ((drawForCameraAttachedTo & MyHudDrawElementEnum.HARVEST_MATERIAL) != 0)\n                {\n                    MyRender.GetRenderProfiler().StartProfilingBlock(\"AddHarvestedMaterial\");\n                    AddHarvestedMaterial();\n                    MyRender.GetRenderProfiler().EndProfilingBlock();\n                }\n\n                bool drawBargraphsForPlayerShip = (drawForCameraAttachedTo & MyHudDrawElementEnum.BARGRAPHS_PLAYER_SHIP) != 0;\n                bool drawBargraphsForLargeWeapon = (drawForCameraAttachedTo & MyHudDrawElementEnum.BARGRAPHS_LARGE_WEAPON) != 0;\n                if (drawBargraphsForPlayerShip || drawBargraphsForLargeWeapon) \n                {\n                    MyRender.GetRenderProfiler().StartProfilingBlock(\"AddBargraphsHUD\");\n                    AddBargraphsHUD(drawBargraphsForPlayerShip, drawBargraphsForLargeWeapon);\n                    MyRender.GetRenderProfiler().EndProfilingBlock();\n                }\n\n                if ((drawForCameraAttachedTo & MyHudDrawElementEnum.DIALOGUES) != 0 && MySubtitles.Enabled) \n                {\n                    MyRender.GetRenderProfiler().StartProfilingBlock(\"AddDialogues\");\n                    AddDialogues();\n                    MyRender.GetRenderProfiler().EndProfilingBlock();\n                }\n\n                if ((drawForCameraAttachedTo & MyHudDrawElementEnum.MISSION_OBJECTIVES) != 0) \n                {\n                    MyRender.GetRenderProfiler().StartProfilingBlock(\"AddMissionObjectives\");\n                    AddMissionObjectives();\n                    MyRender.GetRenderProfiler().EndProfilingBlock();\n                }\n\n                MyRender.GetRenderProfiler().StartProfilingBlock(\"MyHudWarnings.Update\");\n                MyHudWarnings.Update();\n                MyRender.GetRenderProfiler().EndProfilingBlock();\n\n                MyRender.GetRenderProfiler().StartProfilingBlock(\"MyHudWarnings.Draw\");\n                MyHudWarnings.Draw();\n                MyRender.GetRenderProfiler().EndProfilingBlock();\n            }\n            else\n            {\n                throw new MyMwcExceptionApplicationShouldNotGetHere();\n            }\n\n            MyRender.GetRenderProfiler().StartProfilingBlock(\"DrawVertices\");\n            DrawVertices();\n            MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            MyRender.GetRenderProfiler().StartProfilingBlock(\"DrawTexts\");\n            DrawTexts();\n            MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        public static bool CanDrawCrossHair()\n        {\n            bool isPlayerShipDrillActive = \n                MyGuiScreenGamePlay.Static.ControlledEntity == MySession.PlayerShip &&\n                (MySession.PlayerShip.Weapons.GetMountedDrill() != null &&\n                MySession.PlayerShip.Weapons.GetMountedDrill().CurrentState != MyDrillStateEnum.InsideShip)\n                ||\n                (MySession.PlayerShip.Weapons.GetMountedHarvestingDevice() != null\n                && MySession.PlayerShip.Weapons.GetMountedHarvestingDevice().IsHarvesterActive);\n\n            bool isAlive = MySession.PlayerShip != null && !MySession.PlayerShip.IsDead() && !MySession.PlayerShip.IsPilotDead();\n\n            return !isPlayerShipDrillActive && isAlive && !MySession.Static.Is2DSector;\n        }\n\n        public static void DrawOnlyMissionObjectives()\n        {\n            if (!MyHud.Visible)\n            {\n                return;\n            }\n\n            MyCamera.EnableHud();\n\n            ClearQuads();\n            ClearTexts();\n\n            AddMissionObjectives();\n\n            DrawVertices();\n            DrawTexts();\n        }\n\n        public static void DrawAsControlledEntity()\n        {\n            MyCamera.EnableHud();\n\n            ClearQuads();\n            ClearTexts();\n\n            if (MyGuiScreenGamePlay.Static.ControlledCamera != null)\n            {\n                MyHudText text = m_texts.Allocate();\n                text.Start(MyHudConstants.NEUTRAL_FONT, new Vector2(MyGuiManager.GetHudSizeHalf().X, 0.99f), Color.White, 1.0f, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_BOTTOM);\n                text.Append(m_sbControlling);\n                text.Append(MyGuiScreenGamePlay.Static.ControlledCamera.DisplayName);\n            }\n\n            MyHudNotification.Draw();\n            \n\n            DrawVertices();\n            DrawTexts();\n        }\n\n        public static void DrawOnlyBackCameraBorders()\n        {\n            MyCamera.EnableHud();\n\n            ClearQuads();\n            ClearTexts();\n\n            AddBackCameraBorders();\n\n            DrawVertices();\n            DrawTexts();\n        }\n\n        public static bool EnableDrawingMissionObjectives = true;\n\n        private static int m_missionLastBlinkTime = 0;\n        private static bool m_missionBlinkOn = true;\n        private static void AddMissionObjectives()\n        {\n            if (MySession.Static == null || !EnableDrawingMissionObjectives)\n            {\n                return;\n            }\n\n            int deltaTime = MyMinerGame.TotalGamePlayTimeInMilliseconds - m_missionLastBlinkTime;\n            if (deltaTime >= MyMissionsConstants.NEW_OBJECTIVE_BLINK_ON_TIME && m_missionBlinkOn ||\n               deltaTime >= MyMissionsConstants.NEW_OBJECTIVE_BLINK_OFF_TIME && !m_missionBlinkOn) \n            {\n                m_missionBlinkOn = !m_missionBlinkOn;\n                m_missionLastBlinkTime = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n            }\n\n            bool newMissionFound = false;\n            if (MyMissions.ActiveMission == null)\n            {\n                newMissionFound = MyMissions.GetAvailableStoryMissions().Count > 0;\n                \n                if (!newMissionFound)\n                {\n                    return;\n                }\n            }\n            \n            //if (m_missionHighlightIncreasing)\n            //    m_missionHighlight += 0.05f;\n            //else\n            //    m_missionHighlight -= 0.05f;\n\n            //if (m_missionHighlight > 1)\n            //    m_missionHighlightIncreasing = false;\n            //else if (m_missionHighlight < 0.4f)\n            //    m_missionHighlightIncreasing = true;\n            if (m_missionBlinkOn)\n            {\n                m_missionHighlight = MyMissionsConstants.NEW_OBJECTIVE_BLINK_ON_HIGHLIGHT;\n            }\n            else \n            {\n                m_missionHighlight = MyMissionsConstants.NEW_OBJECTIVE_BLINK_OFF_HIGHLIGHT;\n            }\n            \n            float aspectRatio = MyGuiManager.GetHudSize().Y * 2.0f;\n            //Vector2 origin = new Vector2(-0.5f, 0.01f) * aspectRatio + new Vector2(MyGuiManager.GetHudSize().X, 0);\n            Vector2 origin = new Vector2(0.5f, 0.01f);\n\n            MyHudText text = m_texts.Allocate();\n            if (text != null)\n            {\n                //origin.X += 0.02f;\n                Color missionMarkerColor = Color.White;// MyHudConstants.MISSION_MARKER_COLOR;\n                if (MyMissions.IsNewMissionOrObjectiveAvailable())\n                {\n                    missionMarkerColor *= m_missionHighlight;\n                }\n                text.Start(MyHudConstants.MISSION_FONT, origin, missionMarkerColor, 1.1f, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_TOP);\n\n                if (newMissionFound)\n                {\n                    text.Append(MyTextsWrapper.Get(MyTextsWrapperEnum.HudNewMissionAvailable));\n                }\n                else\n                {\n                    text.Append(MyMissions.ActiveMission.NameTemp);\n                    foreach (var submission in MyMissions.ActiveMission.ActiveObjectives)\n                    {\n                        if (submission.NameTemp != null && submission.NameTemp.Length != 0 && !MySession.Static.EventLog.IsMissionFinished(submission.ID))\n                        {\n                            text.AppendLine();\n                            text.Append(\"- \");\n                            text.Append(submission.NameTemp);\n                            if (submission.AdditionalHudInformation != null && submission.AdditionalHudInformation.Length > 0)\n                            {\n                                text.Append(\" \");\n                                text.Append(submission.AdditionalHudInformation);\n                            }\n                        }\n                    }\n                }\n            }\n\n        }\n\n        enum MyHudStatusEnum : int\n        {\n            MyHudStatusShipDamage = 0,\n            MyHudStatusPlayerHealth,\n            MyHudStatusArmor,\n            MyHudStatusFuel,\n            MyHudStatusElektricity,\n            MyHudStatusOxygen,\n            MyHudStatusSpeed\n        };        \n\n        private static void AddBargraphsHUD(bool addPlayerShip, bool addLargeWeapon)\n        {\n            Color hudDefaultColor = MyHudConstants.HUD_STATUS_DEFAULT_COLOR;\n            Vector2 hudStatusIconSize = MyHudConstants.HUD_STATUS_ICON_SIZE;\n            Vector2 hudStatusBarSize = MyHudConstants.HUD_STATUS_BAR_SIZE;\n            float hudStatusIconDistance = MyHudConstants.HUD_STATUS_ICON_DISTANCE;\n            float hudStatusBarDistance = MyHudConstants.HUD_STATUS_BAR_DISTANCE;\n            Vector2 hudStatusSpeedSize = MyHudConstants.HUD_STATUS_SPEED_ICON_SIZE;\n            MyHudTexturesEnum hudStatusIcon;\n\n            //get aspect ratio from GUIHudSize \n            float aspectRatio = MyGuiManager.GetHudSize().Y * 2.0f;\n\n            hudStatusIconSize *= aspectRatio;\n            hudStatusBarSize *= aspectRatio;\n            hudStatusIconDistance *= aspectRatio;\n            hudStatusBarDistance *= aspectRatio;\n            hudStatusSpeedSize *= aspectRatio;\n\n            Vector2 origin = MyHudConstants.HUD_STATUS_POSITION * aspectRatio + new Vector2(0.0f, MyGuiManager.GetHudSize().Y);\n            Vector2 position = origin;\n\n            //// Draw backgrounds:\n            //Vector2 backposition = origin;\n            //Vector2 backSize = new Vector2(hudStatusIconSize.X * 6 + hudStatusIconDistance * 5, hudStatusBarSize.Y * 0.8f);\n\n            //AddTexturedQuad(MyHudTexturesEnum.hudUnderbarSmall, backposition, MyHudConstants.HUD_VECTOR_UP, MyHudConstants.HUD_STATUS_BACKGROUND_COLOR, backSize.X, hudStatusIconSize.Y);\n\n            //backposition.Y -= hudStatusIconSize.Y / 2.0f + hudStatusIconDistance + hudStatusBarDistance + hudStatusBarSize.Y / 2.0f;\n            //for (int i = 0; i < 7; ++i)\n            //{\n            //    AddTexturedQuad(MyHudTexturesEnum.hudUnderbarSmall, backposition, MyHudConstants.HUD_VECTOR_UP, MyHudConstants.HUD_STATUS_BACKGROUND_COLOR, backSize.X, backSize.Y);\n            //    backposition.Y -= hudStatusBarSize.Y + hudStatusBarDistance;\n            //}\n\n            // Don't draw bars if anything is null, see bug #1756\n            if (MyGuiScreenGamePlay.Static == null || MySession.PlayerShip == null || MyClientServer.LoggedPlayer == null)\n            {\n                return;\n            }\n\n            // Compute bar values (percents 0-100)\n            var playerShip = MySession.PlayerShip;\n\n            var player = MySession.Static.Player;\n\n            float shipHealth = (1 - playerShip.GetDamageRatio()) * 100.0f;\n            float playerHealth = MathHelper.Clamp(player.Health / player.MaxHealth * 100f, 0f, 100f);\n            float armor = MathHelper.Clamp(playerShip.ArmorHealth / playerShip.MaxArmorHealth * 100f, 0f, 100f);\n            float fuel = MathHelper.Clamp(playerShip.Fuel / playerShip.MaxFuel * 100f, 0f, 100f);\n            float oxygen = MathHelper.Clamp(playerShip.Oxygen / playerShip.MaxOxygen * 100f, 0f, 100f);\n\n            bool hasLowHealth = playerShip.IsDamagedForWarnignAlert();\n            bool hasLowPlayerHealth = playerShip.HasLowHealthLevel();\n            bool hasLowArmor = playerShip.HasLowArmorLevel();\n            bool hasLowFuel = playerShip.HasLowFuelLevel();\n            bool hasLowOxygen = playerShip.HasLowOxygenLevel();\n\n            if (addPlayerShip)\n            {   \n\n                 //  Ship speed\n                origin = position;\n                origin.X -= 0.011f;\n                origin.X *= aspectRatio;\n                origin.Y -= hudStatusIconSize.Y / 2.0f + hudStatusIconDistance + hudStatusBarDistance + hudStatusBarSize.Y / 2.0f + (MyHudConstants.HUD_STATUS_BAR_MAX_PIECES_COUNT + 1) * (hudStatusBarSize.Y + hudStatusBarDistance);\n                DrawSpeedText(origin, new Color(1.0f, 1.0f, 1.0f, 1.0f));\n\n                //  Ship Afterburner Status\n                origin.X += 0.082f * aspectRatio;\n                DrawAfterburnerPercentage(origin, new Color(1.0f, 1.0f, 1.0f, 1.0f));\n\n                origin = position;\n                origin.X += 0.005f;\n                origin.X *= aspectRatio;\n                origin.Y -= hudStatusIconSize.Y / 2.0f + hudStatusIconDistance + hudStatusBarDistance + hudStatusBarSize.Y / 2.0f + (MyHudConstants.HUD_STATUS_BAR_MAX_PIECES_COUNT + 3) * (hudStatusBarSize.Y + hudStatusBarDistance);\n                hudDefaultColor = MyHudConstants.HUD_STATUS_DEFAULT_COLOR;\n                //AddTexturedQuad(MyHudTexturesEnum.hudStatusSpeed, origin, MyHudConstants.HUD_VECTOR_UP,\n                //    hudDefaultColor, hudStatusSpeedSize.X, hudStatusSpeedSize.Y);\n\n\n                origin = position;\n                // Draw status HUD textures:\n                hudStatusIcon = !hasLowHealth ? MyHudTexturesEnum.hudStatusShipDamage_blue : MyHudTexturesEnum.hudStatusShipDamage_red;\n                AddTexturedQuad(hudStatusIcon, origin, MyHudConstants.HUD_VECTOR_UP,\n                        Color.White, hudStatusIconSize.X, hudStatusIconSize.Y);\n                origin.X += hudStatusIconDistance + hudStatusIconSize.X;\n\n                hudStatusIcon = !hasLowPlayerHealth ? MyHudTexturesEnum.hudStatusPlayerHealth_blue : MyHudTexturesEnum.hudStatusPlayerHealth_red;\n                AddTexturedQuad(hudStatusIcon, origin, MyHudConstants.HUD_VECTOR_UP,\n                        Color.White, hudStatusIconSize.X, hudStatusIconSize.Y);\n                origin.X += hudStatusIconDistance + hudStatusIconSize.X;\n                \n                hudStatusIcon = !hasLowArmor ? MyHudTexturesEnum.hudStatusArmor_blue : MyHudTexturesEnum.hudStatusArmor_red;\n                AddTexturedQuad(hudStatusIcon, origin, MyHudConstants.HUD_VECTOR_UP,\n                        Color.White, hudStatusIconSize.X, hudStatusIconSize.Y);\n                origin.X += hudStatusIconDistance + hudStatusIconSize.X;\n                \n                hudStatusIcon = !hasLowFuel ? MyHudTexturesEnum.hudStatusFuel_blue : MyHudTexturesEnum.hudStatusFuel_red;\n                AddTexturedQuad(hudStatusIcon, origin, MyHudConstants.HUD_VECTOR_UP,\n                        Color.White, hudStatusIconSize.X, hudStatusIconSize.Y);\n                origin.X += hudStatusIconDistance + hudStatusIconSize.X;\n                \n                hudStatusIcon = !hasLowOxygen ? MyHudTexturesEnum.hudStatusOxygen_blue : MyHudTexturesEnum.hudStatusOxygen_red;\n                AddTexturedQuad(hudStatusIcon, origin, MyHudConstants.HUD_VECTOR_UP,\n                        Color.White, hudStatusIconSize.X, hudStatusIconSize.Y);\n                origin.X += 4f * hudStatusIconDistance + hudStatusIconSize.X;\n\n\n\n                origin = position;\n                position.X += hudStatusIconSize.X + hudStatusIconDistance;\n                origin.Y -= hudStatusIconSize.Y / 2.0f + hudStatusIconDistance + hudStatusBarDistance + hudStatusBarSize.Y / 2.0f;\n                DrawBars(origin, hudStatusBarSize, MyHudConstants.HUD_STATUS_BAR_MAX_PIECES_COUNT,\n                    shipHealth, hasLowHealth, hudStatusBarDistance);\n\n                origin = position;\n                position.X += hudStatusIconSize.X + hudStatusIconDistance;\n                origin.Y -= hudStatusIconSize.Y / 2.0f + hudStatusIconDistance + hudStatusBarDistance + hudStatusBarSize.Y / 2.0f;\n                DrawBars(origin, hudStatusBarSize, MyHudConstants.HUD_STATUS_BAR_MAX_PIECES_COUNT,\n                    playerHealth, hasLowPlayerHealth, hudStatusBarDistance);\n\n                origin = position;\n                position.X += hudStatusIconSize.X + hudStatusIconDistance;\n                origin.Y -= hudStatusIconSize.Y / 2.0f + hudStatusIconDistance + hudStatusBarDistance + hudStatusBarSize.Y / 2.0f;\n                DrawBars(origin, hudStatusBarSize, MyHudConstants.HUD_STATUS_BAR_MAX_PIECES_COUNT,\n                    armor, hasLowArmor, hudStatusBarDistance);\n\n                origin = position;\n                position.X += hudStatusIconSize.X + hudStatusIconDistance;\n                origin.Y -= hudStatusIconSize.Y / 2.0f + hudStatusIconDistance + hudStatusBarDistance + hudStatusBarSize.Y / 2.0f;\n                DrawBars(origin, hudStatusBarSize, MyHudConstants.HUD_STATUS_BAR_MAX_PIECES_COUNT,\n                    fuel, hasLowFuel, hudStatusBarDistance);\n\n                origin = position;\n                position.X += 3.0f * hudStatusIconSize.X + hudStatusIconDistance;\n                origin.Y -= hudStatusIconSize.Y / 2.0f + hudStatusIconDistance + hudStatusBarDistance + hudStatusBarSize.Y / 2.0f;\n                DrawBars(origin, hudStatusBarSize, MyHudConstants.HUD_STATUS_BAR_MAX_PIECES_COUNT,\n                    oxygen, hasLowOxygen, hudStatusBarDistance);\n\n\n\n                //  Medicine\n                origin = position;\n                origin.X -= 0.0225f;\n                origin.Y -= hudStatusIconSize.Y * 2.5f + hudStatusIconDistance + hudStatusBarDistance + hudStatusBarSize.Y / 2.0f;\n                foreach (var medicine in MySession.Static.Player.Medicines)\n                {\n                    if (medicine.IsActive())\n                    {\n                        DrawMedicineTypeAndDuration(medicine, origin, new Color(1.0f, 1.0f, 1.0f, 1.0f));\n                        origin.Y -= 0.01f;\n                    }\n                }\n            }\n            \n            if (addLargeWeapon)\n            {\n                Vector2 barPosition = new Vector2(MyGuiManager.GetHudSize().X / 2, MyGuiManager.GetHudSize().Y - 0.02f * aspectRatio);\n                var largeWeapon = MyGuiScreenGamePlay.Static.ControlledLargeWeapon;\n                float largeWeaponHealth = MathHelper.Clamp(largeWeapon.HealthRatio * 100, 0, 100);\n                bool largeWeaponLowHealth = largeWeapon.IsDamagedForWarnignAlert();\n                if (m_customEntityForHealth!=null)\n                {\n                    largeWeaponHealth = MathHelper.Clamp(m_customEntityForHealth.HealthRatio * 100, 0, 100);\n                    largeWeaponLowHealth = false;\n                }\n\n                //origin = barPosition;\n                origin = position;\n                hudStatusIcon = !largeWeaponLowHealth ? MyHudTexturesEnum.hudStatusShipDamage_blue : MyHudTexturesEnum.hudStatusShipDamage_red;\n                AddTexturedQuad(hudStatusIcon, origin, MyHudConstants.HUD_VECTOR_UP,\n                        Color.White, hudStatusIconSize.X, hudStatusIconSize.Y);\n\n                //origin = barPosition;\n                origin = position;\n                origin.Y -= hudStatusIconSize.Y / 2.0f + hudStatusIconDistance + hudStatusBarDistance + hudStatusBarSize.Y / 2.0f;\n                DrawBars(origin, hudStatusBarSize, MyHudConstants.HUD_STATUS_BAR_MAX_PIECES_COUNT,\n                    largeWeaponHealth, largeWeaponLowHealth, hudStatusBarDistance);\n            }\n        }\n\n        private static MyEntity m_customEntityForHealth; \n        public static void DrawHealthOfCustomPrefabInLargeWeapon(MyEntity e)\n        {\n            m_customEntityForHealth = e;\n        }\n\n        public static void DetachHealthOfCustomPrefab()\n        {\n            m_customEntityForHealth = null;\n        }\n\n\n        private static void DrawBars(Vector2 position, Vector2 HudSize, int maxBarRows, float percent, bool isLow, float emptySpace = 0.01f)\n        {\n            int bars = (int)Math.Ceiling(maxBarRows / 100.0f * percent);\n            MyHudTexturesEnum statusBarTexture = !isLow ? MyHudTexturesEnum.hudStatusBar_blue : MyHudTexturesEnum.hudStatusBar_red;\n\n            for (int i = 0; i < maxBarRows; ++i)\n            {\n                Color color = Color.White;\n                if (i >= bars) \n                {\n                    color.A = 51;\n                }\n                AddTexturedQuad(statusBarTexture, position, MyHudConstants.HUD_VECTOR_UP, color, HudSize.X, HudSize.Y);\n                position.Y -= HudSize.Y + emptySpace;\n            }\n        }\n\n        private static Color GetBarIconColorByPercent(int maxbarRows, float Percent, ref int barsCorrect)\n        {\n            Color color = MyHudConstants.HUD_STATUS_BAR_COLOR_GREEN_STATUS;\n            int bars = (int)Math.Ceiling(maxbarRows / 100.0f * Percent);\n\n            if (bars <= 1)\n            {\n                color = MyHudConstants.HUD_STATUS_BAR_COLOR_RED_STATUS;\n            }\n            else if (bars > 1 && bars <= 2)\n            {\n                color = MyHudConstants.HUD_STATUS_BAR_COLOR_ORANGE_STATUS;\n            }\n            else if (bars > 2 && bars <= 3)\n            {\n                color = MyHudConstants.HUD_STATUS_BAR_COLOR_YELLOW_STATUS;\n            }\n\n            barsCorrect = bars;\n            return color;\n        }\n\n        private static bool IsBarIconBlueByPercent(int maxbarRows, float Percent, ref int barsCorrect)\n        {            \n            int bars = (int)Math.Ceiling(maxbarRows / 100.0f * Percent);\n            barsCorrect = bars;\n\n            if (bars <= 3)\n            {\n                return false;\n            }\n\n            return true;\n        }\n\n        private static void DrawSpeedText(Vector2 position, Color color)\n        {\n            MyHudText hudText = m_texts.Allocate();\n            if (hudText != null)\n            {\n                hudText.Start(MyGuiManager.GetFontMinerWarsBlue(), position, color, 0.7f, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER);\n                hudText.AppendInt32((int)MySession.PlayerShip.Physics.Speed);\n                hudText.Append(m_sbSpeed);\n            }\n        }\n\n        private static void DrawAfterburnerPercentage(Vector2 position, Color color)\n        {\n            MyHudText hudText = m_texts.Allocate();\n            if (hudText != null)\n            {\n                hudText.Start(MyGuiManager.GetFontMinerWarsBlue(), position, color, 0.7f, MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_CENTER);\n                hudText.AppendInt32((int)(MySession.PlayerShip.AfterburnerStatus * 100));\n                hudText.Append(m_sbPercentage);\n            }\n        }\n\n\n        private static void DrawMedicineTypeAndDuration(MyMedicine medicine, Vector2 position, Color color)\n        {\n            StringBuilder name;\n            bool percent;\n            float count = 0;\n            switch (medicine.Type())\n            {\n                case MyMedicineType.MEDIKIT:\n                    name = MyTextsWrapper.Get(MyTextsWrapperEnum.MedikitActive);\n                    percent = false;\n                    count = MySession.Static.Player.Ship.Inventory.GetTotalAmountOfInventoryItems(MyMwcObjectBuilderTypeEnum.SmallShip_Tool, (int?)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.MEDIKIT);\n                    break;\n                case MyMedicineType.ANTIRADIATION_MEDICINE:\n                    name = MyTextsWrapper.Get(MyTextsWrapperEnum.AntiradiationMedicineActive);\n                    percent = true;\n                    //count = MySession.Static.Player.Ship.Inventory.GetTotalAmountOfInventoryItems(MyMwcObjectBuilderTypeEnum.SmallShip_Tool, (int?)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.ANTIRADIATION_MEDICINE);\n                    break;\n                case MyMedicineType.HEALTH_ENHANCING_MEDICINE:\n                    name = MyTextsWrapper.Get(MyTextsWrapperEnum.HealthEnhancingMedicineActive);\n                    percent = true;\n                    break;\n                case MyMedicineType.PERFORMANCE_ENHANCING_MEDICINE:\n                    name = MyTextsWrapper.Get(MyTextsWrapperEnum.PerformanceEnhancingMedicineActive);\n                    percent = true;\n                    break;\n                default:\n                    return;\n            }\n            \n            MyHudText hudText = m_texts.Allocate();\n            if (hudText != null)\n            {\n                hudText.Start(MyGuiManager.GetFontMinerWarsBlue(), position, color, 0.7f, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER);\n                hudText.Append(name);\n                if (percent)\n                {\n                    // display percent count\n                    hudText.Append(\": \");\n                    hudText.AppendInt32(100 - (int)(medicine.TimeSinceActivation() / medicine.Duration() * 100));\n                    hudText.Append(m_sbPercentage);\n                }\n                else\n                {\n                    // display count of doses left\n                    hudText.Append(\": \");\n                    hudText.AppendInt32((int)count);\n                    hudText.Append(\" doses left\");\n                }\n            }\n        }\n\n        private static StringBuilder m_dialogIdSB = new StringBuilder();\n        private static void AddDialogues()\n        {\n          //  if (MyGuiScreenGamePlay.Static == null || MyDialogues.CurrentSentence == null)\n            //    return;\n\n             if (MyDialogues.CurrentSentence == null)\n                return;\n\n            if (MyDialogues.IsCurrentCuePausedAndHidden())\n                return;\n\n            MyGuiManager.BeginSpriteBatch();\n            var offset = new Vector2(VideoMode.MyVideoModeManager.IsTripleHead() ? -1 : 0, 0);\n\n            //need to be -1 on triple mon (big resolution)\n            var offsetTextArea = new Vector2(VideoMode.MyVideoModeManager.IsTripleHead() ? -1 : 0, 0);\n\n            if (m_lastDialogueSentence != MyDialogues.CurrentSentence)\n            {\n                m_lastDialogueSentence = MyDialogues.CurrentSentence;\n\n                m_dialogueActorNameControl.Clear();\n                if (MyFakes.ENABLE_DEBUG_DIALOGS)\n                {\n                    m_dialogIdSB.Clear();\n                    m_dialogIdSB.Append(MyDialogues.CurrentSentence.Text.ToString());\n                    m_dialogueActorNameControl.AppendText(m_dialogIdSB,\n                        MyDialogues.CurrentSentence.Font, MyHudConstants.DIALOGUE_ACTORNAME_FONT_SIZE, Vector4.One);\n                }\n                else \n                {\n                    m_dialogueActorNameControl.AppendText(MyTextsWrapper.Get(MyActorConstants.GetActorProperties(MyDialogues.CurrentSentence.Actor).DisplayName),\n                        MyDialogues.CurrentSentence.Font, MyHudConstants.DIALOGUE_ACTORNAME_FONT_SIZE, Vector4.One);\n                }\n                m_dialogueTextAreaControl.Clear();                                \n                m_dialogueTextAreaControl.AppendText(MyDialoguesWrapper.Get(MyDialogues.CurrentSentence.Text),\n                    MyDialogues.CurrentSentence.Font, MyHudConstants.DIALOGUE_ACTORNAME_FONT_SIZE, Vector4.One);\n            }\n\n            float noise = MyDialogues.CurrentSentence.Noise;\n\n            // draw actor texture\n            if (MyActorConstants.GetActorProperties(MyDialogues.CurrentSentence.Actor).AvatarImage != null)\n            {\n                MyGuiManager.DrawSpriteBatch(MyActorConstants.GetActorProperties(MyDialogues.CurrentSentence.Actor).AvatarImage, MyHudConstants.DIALOGUE_ACTORTEXTURE_POSITION + offset,\n                    MyHudConstants.DIALOGUE_ACTORTEXTURE_SIZE, Color.White, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, MyVideoModeManager.IsTripleHead());\n            }\n            else\n            {\n                noise = 1;\n            }\n\n            // draw noise\n            MyGuiManager.DrawSpriteBatch(MyGuiManager.GetDialoguePortraitNoiseVideoPlayer().GetCurrentFrame(), MyHudConstants.DIALOGUE_ACTORTEXTURE_POSITION + offset,\n                MyHudConstants.DIALOGUE_ACTORTEXTURE_SIZE, new Color(noise * Vector4.One), MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, MyVideoModeManager.IsTripleHead());\n            // draw background\n            MyGuiManager.DrawSpriteBatch(MyDialogues.CurrentSentence.BackgroundTexture, MyHudConstants.DIALOGUE_BACKGROUND_POSITION + offset,\n                MyHudConstants.DIALOGUE_BACKGROUND_SIZE, Color.White, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, MyVideoModeManager.IsTripleHead());\n\n            // draw text area\n            m_dialogueTextAreaControl.SetPosition(MyHudConstants.DIALOGUE_TEXTAREA_POSITION + offsetTextArea);\n            m_dialogueTextAreaControl.Draw();\n\n            // draw actor name\n            m_dialogueActorNameControl.SetPosition(MyHudConstants.DIALOGUE_ACTORNAME_POSITION + offsetTextArea);\n            m_dialogueActorNameControl.Draw();\n\n            MyGuiManager.EndSpriteBatch();\n        }\n\n        static MyHudSetting m_oreHudSetting;\n        static MyHudEntityParams m_oreHudParams;\n        static MyVoxelMapOreDepositCell[] m_nearestOreDeposits = new MyVoxelMapOreDepositCell[MyMwcUtils.GetMaxValueFromEnum<MyMwcVoxelMaterialsEnum>() + 1];\n        static float[] m_nearestDistanceSquared = new float[MyMwcUtils.GetMaxValueFromEnum<MyMwcVoxelMaterialsEnum>() + 1];        \n\n        private static void AddOreMarkers() \n        {\n            for (int i = 0; i < m_nearestOreDeposits.Length; i++) \n            {\n                m_nearestOreDeposits[i] = null;\n                m_nearestDistanceSquared[i] = float.MaxValue;\n            }\n\n            //MyRadar.GetDetectedObjects(ref m_detectedObjects);            \n\n            using (var detectedObjects = MyRadar.DetectedObjects)\n            {\n                foreach (IMyObjectToDetect detectedObject in detectedObjects.Collection)\n                {\n                    if (detectedObject is MyVoxelMapOreDepositCell)\n                    {\n                        MyVoxelMapOreDepositCell oreDeposit = detectedObject as MyVoxelMapOreDepositCell;\n                        Debug.Assert(oreDeposit.GetTotalRareOreContent() > 0);\n                        // we must check content, because Radar is running in background thread and content change in main thread\n                        //oreDeposit.SortByContent();\n                        foreach (MyMwcVoxelMaterialsEnum oreMaterial in oreDeposit.GetOreWithContent())\n                        {\n                            var orePosition = oreDeposit.GetPosition(oreMaterial);\n                            if (orePosition == null) continue;\n                            float distanceSquared = Vector3.DistanceSquared(orePosition.Value, MyGuiScreenGamePlay.Static.ControlledEntity.WorldMatrix.Translation);\n                            float nearestDistanceSquared = m_nearestDistanceSquared[(int)oreMaterial];\n                            if (distanceSquared < nearestDistanceSquared)\n                            {\n                                m_nearestOreDeposits[(int)oreMaterial] = oreDeposit;\n                                m_nearestDistanceSquared[(int)oreMaterial] = distanceSquared;\n                            }\n                        }\n                    }\n                }\n            }\n\n            for (int i = 0; i < m_nearestOreDeposits.Length; i++) \n            {\n                MyVoxelMapOreDepositCell nearestOreDeposit = m_nearestOreDeposits[i];\n                if (nearestOreDeposit != null) \n                {\n                    MyMwcObjectBuilder_Ore_TypesEnum oreType = MyVoxelMapOreMaterials.GetOreFromVoxelMaterial((MyMwcVoxelMaterialsEnum)i)[0].OreType;\n                    MyGuiOreHelper oreHelper = MyGuiObjectBuilderHelpers.GetGuiHelper(MyMwcObjectBuilderTypeEnum.Ore, (int)oreType) as MyGuiOreHelper;                    \n                    m_oreHudParams.Text = oreHelper.Name;\n                    AddDirectionIndicator(m_oreHudSetting, nearestOreDeposit.GetPosition((MyMwcVoxelMaterialsEnum)i).Value, m_oreHudParams, 0f, 0f, Color.White);\n                }\n            }\n        }\n\n        /// <summary>\n        /// Adds the direction indicators.\n        /// </summary>\n        private static void AddDirectionIndicators()\n        {\n            m_wasMothershipHudDisplayed = false;\n            m_hudEnemies.Clear();\n            if (ShowDebugHud)\n            {\n                float maxDistance = 299;\n                int? showOnlyThisID = null;// 107955;\n\t\t\t\tHashSet<Type> showOnlyThisTypes = null;\n                //HashSet<Type> showOnlyThisTypes = new HashSet<Type>();\n                //showOnlyThisTypes.Add(typeof(MinerWars.AppCode.Game.Entities.CargoBox.MyCargoBox));                \n\n                HashSet<MyEntity> entities = MyEntities.GetEntities();\n                foreach (MyEntity entity in entities)\n                {     /*\n                    foreach (MyEntity ch in entity.Children)\n                    {\n                        if ((showOnlyThisType == null || (showOnlyThisType != null && showOnlyThisType == ch.GetType()))\n                            &&\n                            (showOnlyThisID == null || (showOnlyThisID != null && (showOnlyThisID == (ch.EntityId.HasValue ? ch.EntityId.Value.NumericValue : 0))))\n                            )\n                            ShowEntityInDebugHud(ch);\n                    }   */\n\n                    if(entity is MyStaticAsteroid || entity is MyWayPoint)\n                    {\n                        continue;\n                    }\n                    else if(entity is MyPrefabContainer)\n                    {\n                        if ((showOnlyThisTypes == null || (showOnlyThisTypes != null && showOnlyThisTypes.Contains(entity.GetType())) )\n                            &&\n                            (showOnlyThisID == null || (showOnlyThisID != null && (showOnlyThisID == (entity.EntityId.HasValue ? entity.EntityId.Value.NumericValue : 0))))\n                            )\n                            ShowEntityInDebugHud(entity);\n\n                        foreach (var prefab in ((MyPrefabContainer)entity).GetPrefabs())\n                        {\n                            if (Vector3.Distance(MyCamera.Position, prefab.GetPosition()) < maxDistance)\n                            {\n                                if ((showOnlyThisTypes == null || (showOnlyThisTypes != null && showOnlyThisTypes.Contains(prefab.GetType())))\n                                                                &&\n                            (showOnlyThisID == null || (showOnlyThisID != null && (showOnlyThisID == (prefab.EntityId.HasValue ? prefab.EntityId.Value.NumericValue : 0)))))\n\n                                    ShowEntityInDebugHud(prefab);\n                            }\n                        }\n                    }\n                    else\n                    {\n                        if (Vector3.Distance(MyCamera.Position, entity.GetPosition()) < maxDistance)\n                        {\n                            if ((showOnlyThisTypes == null || (showOnlyThisTypes != null && showOnlyThisTypes.Contains(entity.GetType())))\n                                                            &&\n                            (showOnlyThisID == null || (showOnlyThisID != null && (showOnlyThisID == (entity.EntityId.HasValue ? entity.EntityId.Value.NumericValue : 0)))))\n\n                                ShowEntityInDebugHud(entity);\n                        }\n                    }\n                }\n            }\n\n            if (MyGuiManager.GetScreenDebugBot() != null)\n            {\n                HashSet<MyEntity> entities = MyEntities.GetEntities();\n                foreach (MyEntity entity in entities)\n                {\n                    if (entity is MySmallShipBot && MyGuiManager.GetScreenDebugBot() != null)\n                    {\n                        ShowBotInDebug(entity as MySmallShipBot);\n                    }\n                }                \n            }\n\n            MyRender.GetRenderProfiler().StartProfilingBlock(\"foreach HudEntities\");\n\n            using (var detectedObjects = MyRadar.DetectedObjects)\n            {\n                foreach (var hudEntity in HudEntities)\n                {\n                    var entity = hudEntity.Item1.Target;\n                    MyHudEntityParams hudParams = hudEntity.Item2;\n\n                    if (entity == null || entity == MyGuiScreenGamePlay.Static.ControlledLargeWeapon || entity is MyVoxelMapOreDepositCell)\n                    {\n                        continue;\n                    }\n\n                    if (entity is MyEntity && !ShowDebugHud && MyGuiManager.GetScreenDebugBot() == null)\n                    {\n                        MyEntity entityObject = entity as MyEntity;\n                        if (entityObject.Name == MyMotherShipPosition.MADELYN_NAME)\n                        {\n                            m_wasMothershipHudDisplayed = true;\n                        }\n\n                        if (!((MyEntity)entity).IsVisible())\n                        {\n                            continue;\n                        }\n\n                        /*\n                        // we don't want display empty hud description\n                        if(hudParams.Text == null || hudParams.Text.Length == 0)\n                        {\n                            continue;\n                        } */\n\n                       // MyRender.GetRenderProfiler().StartProfilingBlock(\"displayEntity\");\n\n                        bool displayEntity = false;\n                        if ((hudParams.FlagsEnum & MyHudIndicatorFlagsEnum.SHOW_ONLY_IF_DETECTED_BY_RADAR) != 0)\n                        {\n                            //MyRadar.GetDetectedObjects(ref m_detectedObjects);\n                            /*\n                            foreach (IMyObjectToDetect detectedObject in detectedObjects.Collection)\n                            {\n                                if (detectedObject == entity)\n                                {\n                                    displayEntity = true;\n                                    break;\n                                }\n                            } */\n\n                            if (detectedObjects.Collection.Contains((IMyObjectToDetect)entity))\n                            {\n                                displayEntity = true;\n                            }\n                        }\n                        else\n                        {\n                            displayEntity = true;\n                        }\n\n                        //MyRender.GetRenderProfiler().EndProfilingBlock();\n                        //MyRender.GetRenderProfiler().StartProfilingBlock(\"AddDirectionIndicator\");\n\n                        if (displayEntity)\n                        {\n                            AddDirectionIndicator((MyEntity)entity, hudParams);\n                        }\n\n                        //MyRender.GetRenderProfiler().EndProfilingBlock();\n                    }\n                }\n            }\n            MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            if (!m_wasMothershipHudDisplayed) \n            {\n                AddMadelyn();\n            }\n\n            // Add Sun HUD            \n            if (MySunWind.IsActiveForHudWarning())\n            {\n                AddSun();\n            }\n\n#if DEBUG\n            if (MyMwcFinalBuildConstants.DrawCollisionSpotsInHud)\n            {\n                foreach (var hudDebugPoint in HudDebugPoints)\n                {\n                    var debugPoint = hudDebugPoint.Item1;\n                    var debugHudParams = hudDebugPoint.Item2;\n\n                    if (debugPoint == null)\n                    {\n                        continue;\n                    }\n\n                    AddDirectionIndicator(m_hudSettings[(int)MyGuitargetMode.Neutral], (Vector3)debugPoint, (MyHudEntityParams)debugHudParams, -1, -1, Color.White);\n                }\n            }\n            else\n            {\n                if (HudDebugPoints.Count > 0)\n                {\n                    HudDebugPoints.Clear();\n                }\n            }\n#endif\n        }\n\n        private static void AddSun() \n        {\n            if (m_sunHudIconColorAlphaIncreasing)\n            {\n                m_sunHudIconColorAlpha += SUN_BLINK_ALPHA_INCREMENT;\n                if (m_sunHudIconColorAlpha >= 1f)\n                {\n                    m_sunHudIconColorAlpha = 1f;\n                    m_sunHudIconColorAlphaIncreasing = false;\n                }\n            }\n            else\n            {\n                m_sunHudIconColorAlpha -= SUN_BLINK_ALPHA_INCREMENT;\n                if (m_sunHudIconColorAlpha <= 0f)\n                {\n                    m_sunHudIconColorAlpha = 0f;\n                    m_sunHudIconColorAlphaIncreasing = true;\n                }\n            }\n\n            Vector3 sunPos = MyGuiScreenGamePlay.Static.GetDirectionToSunNormalized() * MyMwcSectorConstants.SECTOR_SIZE * 99;\n            AddDirectionIndicator(m_hudSettings[(int)MyGuitargetMode.Neutral], sunPos, m_sunHudParams, 0f, 0f, Color.Yellow, showNameInWithoutOffset: true, drawFocusMark: false, alphaMultiplifier: m_sunHudIconColorAlpha);\n        }\n\n        private static void AddMadelyn() \n        {\n            if (MySession.Static.MotherShipPosition.Exist && MySession.Static.MotherShipPosition.IsNotInSameSector())\n            {                \n                AddDirectionIndicator(m_hudSettings[(int)MyGuitargetMode.Objective], MySession.Static.MotherShipPosition.HudPosition, m_madelynHudParams, 0f, 0f, Color.White);\n            }\n        }\n\n        private static void ShowBotInDebug(MySmallShipBot bot)\n        {\n            MyHudEntityParams hudParams = new MyHudEntityParams();\n            hudParams.DisplayFactionRelation = new MyHudDisplayFactionRelation(true, true, true);\n\n            MyMwcUtils.ClearStringBuilder(m_hudDebugText);\n            if (!string.IsNullOrEmpty(bot.DisplayName))\n            {\n                m_hudDebugText.AppendLine(bot.DisplayName);\n            }\n\n            if (MyGuiManager.GetScreenDebugBot() != null)\n            {\n                MyMwcUtils.AppendStringBuilder(m_hudDebugText, bot.GetDebugHudString());\n            }\n\n            hudParams.Text = m_hudDebugText;\n            hudParams.MaxDistance = 0f;\n            hudParams.FlagsEnum = MyHudIndicatorFlagsEnum.SHOW_TEXT | MyHudIndicatorFlagsEnum.SHOW_HEALTH_BARS | MyHudIndicatorFlagsEnum.SHOW_DISTANCE | MyHudIndicatorFlagsEnum.SHOW_MISSION_MARKER | MyHudIndicatorFlagsEnum.SHOW_FACTION_RELATION_MARKER;\n\n            AddDirectionIndicator(bot, hudParams);\n            \n        }\n\n        private static void ShowEntityInDebugHud(MyEntity entity)\n        {\n            MyHudEntityParams hudParams = new MyHudEntityParams();\n            hudParams.DisplayFactionRelation = new MyHudDisplayFactionRelation(true, true, true);\n\n            MyMwcUtils.ClearStringBuilder(m_hudDebugText);\n            if (!string.IsNullOrEmpty(entity.DisplayName))\n            {\n                m_hudDebugText.AppendLine(entity.DisplayName);\n            }\n            if (entity.EntityId.HasValue)\n            {\n                m_hudDebugText.Append(\"ID: \" + entity.EntityId.Value.NumericValue.ToString() + \", \");\n            }\n            if (entity.IsDestructible)\n            {\n                m_hudDebugText.AppendDecimal(entity.Health, 0);\n                m_hudDebugText.Append(m_hudHealthSeparator);\n                m_hudDebugText.AppendDecimal(entity.MaxHealth, 0);\n                if(entity is MySmallShip)\n                {\n                    MySmallShip smallShip = entity as MySmallShip;\n                    MyMwcUtils.AppendStringBuilder(m_hudDebugText, m_hudHealthAndArmorSeparator);\n                    m_hudDebugText.AppendDecimal(smallShip.ArmorHealth, 0);\n                    m_hudDebugText.Append(m_hudHealthSeparator);\n                    m_hudDebugText.AppendDecimal(smallShip.MaxArmorHealth, 0);\n                    MyMwcUtils.AppendStringBuilder(m_hudDebugText, new StringBuilder(smallShip.Faction.ToString()));\n                }\n            }\n            else\n            {\n                MyMwcUtils.AppendStringBuilder(m_hudDebugText, m_textIndestructible);\n            }\n            m_hudDebugText.AppendLine();\n            switch(entity.MaxDifficultyToActivated)\n            {\n                case MyGameplayDifficultyEnum.EASY:\n                    MyMwcUtils.AppendStringBuilder(m_hudDebugText, MyTextsWrapper.Get(MyTextsWrapperEnum.DifficultyEasy));\n                    break;\n                case MyGameplayDifficultyEnum.NORMAL:\n                    MyMwcUtils.AppendStringBuilder(m_hudDebugText, MyTextsWrapper.Get(MyTextsWrapperEnum.DifficultyNormal));\n                    break;\n                case MyGameplayDifficultyEnum.HARD:\n                    MyMwcUtils.AppendStringBuilder(m_hudDebugText, MyTextsWrapper.Get(MyTextsWrapperEnum.DifficultyHard));\n                    break;\n            }\n\n            m_hudDebugText.AppendLine();\n\n            if (!entity.Enabled)\n            {\n                 m_hudDebugText.AppendLine(\" Disabled\");\n            }\n\n            if (entity is MyPrefabBase)\n            {\n                MyPrefabBase prefab = entity as MyPrefabBase;\n                m_hudDebugText.AppendLine(\"Electricity \" + prefab.ElectricCapacity.ToString(\"#,###0.000\") + \" (\" + prefab.GetConfiguration().MinElectricCapacity.ToString(\"#,###0.000\") + \"/\" + prefab.GetConfiguration().MaxElectricCapacity.ToString(\"#,###0.000\"));\n                m_hudDebugText.AppendLine(\"Faction \" + prefab.Faction.ToString());\n            }\n                \n\n\n            hudParams.Text = m_hudDebugText;\n            hudParams.MaxDistance = 0f;\n            hudParams.FlagsEnum = MyHudIndicatorFlagsEnum.SHOW_TEXT | MyHudIndicatorFlagsEnum.SHOW_HEALTH_BARS | MyHudIndicatorFlagsEnum.SHOW_DISTANCE | MyHudIndicatorFlagsEnum.SHOW_MISSION_MARKER | MyHudIndicatorFlagsEnum.SHOW_FACTION_RELATION_MARKER;\n\n            AddDirectionIndicator(entity, hudParams);            \n        }\n\n        public static void ShowIndestructableAsteroidNotification()\n        {\n            if (MyMinerGame.TotalGamePlayTimeInMilliseconds > m_lastIdestructibleAsteroidWarningShowTime + 2050)\n            {\n                m_lastIdestructibleAsteroidWarningShowTime = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n                MyHudNotification.AddNotification(new MyHudNotification.MyNotification(Localization.MyTextsWrapperEnum.IndestructibleAsteroidNotification, 2000));\n            }\n        }\n\n        private static float m_lastIdestructibleAsteroidWarningShowTime = 0;\n\n        public static void DrawCameraCrosshair()\n        {\n            MyCamera.EnableHud();\n            ClearQuads();\n            AddCrosshair();\n            DrawVertices();\n        }\n\n        public static bool ContainsEntity(MyEntity entity)\n        {\n            foreach (Tuple<WeakReference, MyHudEntityParams> tuple in HudEntities)\n            {\n                if (tuple.Item1.Target == entity) return true;\n            }\n            return false;\n        }\n\n        /// <summary>\n        /// Adds the text that is displayed per entity.\n        /// </summary>\n        /// <param name=\"entity\">The entity.</param>\n        /// <param name=\"text\">The text to display</param>\n        public static void AddText(MyEntity entity, StringBuilder text, MyGuitargetMode? targetMode = null, float maxDistance = 0, MyHudIndicatorFlagsEnum flagsEnum = MyHudIndicatorFlagsEnum.SHOW_TEXT | MyHudIndicatorFlagsEnum.SHOW_BORDER_INDICATORS | MyHudIndicatorFlagsEnum.SHOW_DISTANCE | MyHudIndicatorFlagsEnum.ALPHA_CORRECTION_BY_DISTANCE | MyHudIndicatorFlagsEnum.SHOW_MISSION_MARKER | MyHudIndicatorFlagsEnum.SHOW_FACTION_RELATION_MARKER, MyHudDisplayFactionRelation? displayFactinRelation = null, MyHudMaxDistanceMultiplerTypes? maxDistanceMultiplerType = null)\n        {\n            //Why assert?\n            //Debug.Assert(text.Length != 0);\n            HudEntities.Add(new Tuple<WeakReference, MyHudEntityParams>(new WeakReference(entity), new MyHudEntityParams(text, targetMode, maxDistance, flagsEnum, displayFactinRelation, maxDistanceMultiplerType)));\n        }\n\n        [Conditional(\"DEBUG\")]\n        public static void DebugClearAndAddText(Vector3 point, StringBuilder text, float maxDistance = 0, MyHudIndicatorFlagsEnum flagsEnum = MyHudIndicatorFlagsEnum.SHOW_TEXT | MyHudIndicatorFlagsEnum.SHOW_BORDER_INDICATORS | MyHudIndicatorFlagsEnum.SHOW_DISTANCE | MyHudIndicatorFlagsEnum.SHOW_MISSION_MARKER | MyHudIndicatorFlagsEnum.SHOW_FACTION_RELATION_MARKER, MyHudDisplayFactionRelation? displayFactinRelation = null)\n        {\n            Debug.Assert(text.Length != 0);\n            HudDebugPoints.Clear();\n            HudDebugPoints.Add(new Tuple<Vector3, MyHudEntityParams>(point, new MyHudEntityParams(text, MyGuitargetMode.Enemy, maxDistance, flagsEnum, displayFactinRelation)));\n        }\n\n        /// <summary>\n        /// Removes all text that is displayed per specified entity.\n        /// </summary>\n        /// <param name=\"entity\">The entity.</param>\n        public static void RemoveText(MyEntity entity)\n        {\n            int index = -1;\n\n            for (int i = 0; i < HudEntities.Count; i++)\n            {\n                var pair = HudEntities[i];\n                if (pair.Item1.Target == entity)\n                {\n                    index = i;\n                    break;\n                }\n            }\n\n            if (index != -1)\n            {\n                HudEntities.RemoveAtFast(index);\n            }\n        }\n\n        //  Change the text that is displayed per entity - if entity is not included in HudEntities list, add it.\n        public static void ChangeText(MyEntity entity, StringBuilder text)\n        {\n            ChangeText(entity, text, null);\n        }\n\n        public static void ChangeText(MyEntity entity, StringBuilder text, MyGuitargetMode? targetMode, float maxDistance = 0, MyHudIndicatorFlagsEnum flagsEnum = DEFAULT_FLAGS, MyHudDisplayFactionRelation? displayFactinRelation = null, MyHudMaxDistanceMultiplerTypes? maxDistanceMultiplerType = null)\n        {\n            RemoveText(entity);\n\n            AddText(entity, text, targetMode, maxDistance, flagsEnum, displayFactinRelation, maxDistanceMultiplerType);\n        }\n\n        public static void RenameHudEntity(MyEntity entity, StringBuilder newText)\n        {\n            int index = HudEntities.FindIndex(t => t.Item1.Target == entity);\n\n            Debug.Assert(index != -1);\n            \n            MyHudEntityParams hudParams = HudEntities[index].Item2;\n            RemoveText(entity);\n            AddText(entity, newText, hudParams.TargetMode, hudParams.MaxDistance, hudParams.FlagsEnum, hudParams.DisplayFactionRelation, hudParams.MaxDistanceMultiplerType);\n        }\n\n        public static MyHudEntityParams? GetHudParams(MyEntity entity) \n        {\n            MyHudEntityParams? hudParams = null;\n            int index = HudEntities.FindIndex(t => t.Item1.Target == entity);\n\n            // not found\n            if (index != -1)\n            {\n                hudParams = HudEntities[index].Item2;\n            }\n            return hudParams;\n        }\n\n        //  Draw HUD texts. This list is deleted at the beginning of every MyHud.Draw() call\n        static void DrawTexts()\n        {\n            if (m_texts.GetAllocatedCount() <= 0) return;\n\n            //  MyHud.Draw is always called from within game-play-screen Draw, so that's while the main sprite batch is not active (not in draw/end) state,\n            //  so we have to restart here for a while\n            MyGuiManager.BeginSpriteBatch();\n\n            for (int i = 0; i < m_texts.GetAllocatedCount(); i++)\n            {\n                MyHudText text = m_texts.GetAllocatedItem(i);\n\n                //  Fix the scale for screen resolution\n                float fixedScale = text.Scale * MyGuiManager.GetSafeScreenScale();\n                Vector2 sizeInPixelsScaled = text.Font.MeasureString(text.GetStringBuilder(), fixedScale);\n\n                Vector2 screenCoord = MyGuiManager.GetHudPixelCoordFromNormalizedCoord(text.Position / MyGuiManager.GetHudSize());\n                screenCoord = MyGuiManager.GetAlignedCoordinate(screenCoord, sizeInPixelsScaled, text.Alignement);\n\n                text.Font.DrawString(screenCoord, text.Color, text.GetStringBuilder(), fixedScale/*, text.Rotation*/);\n            }\n\n            MyGuiManager.EndSpriteBatch();\n        }\n\n        private static bool CanDisplayLockedTarget() \n        {\n            return MyGuiScreenGamePlay.Static.ControlledShip != null ||\n                   MyGuiScreenGamePlay.Static.ControlledLargeWeapon != null && MyGuiScreenGamePlay.Static.ControlledLargeWeapon.IsGuided();\n        }\n\n        //  Adds direction indicators (arrows) and their corresponding text with distance to object\n        //  Right now it displays only 1 object - because it's only for testing purpose\n        private static void AddDirectionIndicator(MyEntity target, MyHudEntityParams hudParams)\n        {\n            if ((target == null) || target == MySession.PlayerShip)\n                return;\n\n            //MyRender.GetRenderProfiler().StartProfilingBlock(\"CanDisplayLockedTarget\");\n\n            MyEntity targetEntity = MySession.PlayerShip.TargetEntity;\n            bool isLockedSideTarget = false;\n            bool isLockedTarget = false;\n            if (CanDisplayLockedTarget())\n            {\n                isLockedSideTarget = MySession.PlayerShip.SideTargets.Contains(target);\n                isLockedTarget = targetEntity == target;\n            }\n\n           // MyRender.GetRenderProfiler().StartNextBlock(\"GetGuiTargetMode\");\n\n            hudParams.FlagsEnum &= ~MyHudIndicatorFlagsEnum.SHOW_LOCKED_TARGET;\n            hudParams.FlagsEnum &= ~MyHudIndicatorFlagsEnum.SHOW_LOCKED_SIDE_TARGET;\n            if (isLockedTarget)\n            {\n                hudParams.FlagsEnum |= MyHudIndicatorFlagsEnum.SHOW_LOCKED_TARGET;\n            }\n            else\n                if (isLockedSideTarget)\n                {\n                    hudParams.FlagsEnum |= MyHudIndicatorFlagsEnum.SHOW_LOCKED_SIDE_TARGET;\n                }\n\n            float targetDamageRatio = -1.0f;\n            float targetArmorRatio = -1.0f;\n            bool addToHudEnemies = false;\n            float alphaMultiplifier = 1f;\n            MyHudSetting hudSettings = null;\n            MyHudAlphaCorrection hudAlphaCorrection = null;\n\n            MyGuitargetMode hudSettingsTargetMode;\n            MyGuitargetMode alphaCorrectionTargetMode;\n            GetGuiTargetMode(target, hudParams, out hudSettingsTargetMode, out alphaCorrectionTargetMode);\n            MyFactionRelationEnum status = MyFactions.GetFactionsRelation(target, MySession.PlayerShip);\n\n            //MyRender.GetRenderProfiler().StartNextBlock(\"IsMissionEntity\");\n\n            if (MyMissions.IsMissionEntity(target))\n            {\n                if (MyMissions.IsNewMissionOrObjectiveAvailable())\n                {\n                    alphaMultiplifier *= m_missionHighlight;\n                }\n            }\n            else\n            {\n                // some entities can have displaying dependents on faction relation\n                if (!hudParams.DisplayFactionRelation.CanBeDisplayed(status))\n                {\n                    //MyRender.GetRenderProfiler().EndProfilingBlock();\n                    return;\n                }                               \n            }\n\n           // MyRender.GetRenderProfiler().StartNextBlock(\"GetHUDDamageRatio\");\n\n            hudSettings = m_hudSettings[(int)hudSettingsTargetMode];\n            hudAlphaCorrection = m_hudAlphaCorrection[(int)alphaCorrectionTargetMode];\n\n            if (status == MyFactionRelationEnum.Enemy)\n            {\n                addToHudEnemies = MyMissile.CanBeTargeted(target);\n                if (target is MySmallShip) \n                {\n                    hudSettings = m_hudSettings[(int)MyGuitargetMode.Enemy];\n                }\n            }\n            \n            targetDamageRatio = target.GetHUDDamageRatio();\n            MySmallShip targetShip = target as MySmallShip;\n            if (targetShip != null)\n            {\n                if (targetShip.Armor != null)\n                {\n                    targetArmorRatio = MathHelper.Clamp(targetShip.ArmorHealth / targetShip.MaxArmorHealth, 0, 1);\n                }\n            }\n\n            //// when target is hangar, we want display healthbar of large ship from his prefab container\n            //MyPrefabHangar targetHangar = target as MyPrefabHangar;\n            //if(targetHangar != null)\n            //{\n            //    List<MyPrefabBase> largeShips = targetHangar.GetOwner().GetPrefabs(CategoryTypesEnum.LARGE_SHIPS);\n            //    if(largeShips.Count > 0)\n            //    {\n            //        targetDamageRatio = largeShips[0].GetDamageRatio();\n            //    }\n            //}\n\n            //MyRender.GetRenderProfiler().StartNextBlock(\"IsElectrified\");\n\n            bool displayUnpowered = false;\n            MyPrefabBase targetPrefab = target as MyPrefabBase;\n            if (targetPrefab != null) \n            {\n                displayUnpowered = !targetPrefab.IsElectrified();\n            }\n            \n            if (isLockedTarget)\n            {\n                hudSettings = m_hudSettings[(int)MyGuitargetMode.Enemy];                \n            }\n\n            //MyRender.GetRenderProfiler().StartNextBlock(\"GetHUDMarkerPosition\");\n\n            // Show in center of objects (pivots are not centered atm.)\n            Vector3 position = target.GetHUDMarkerPosition();\n\n            //MyRender.GetRenderProfiler().StartNextBlock(\"AddDirectionIndicator\");\n\n            float? distanceFromScreenCenter = AddDirectionIndicator(hudSettings, position, hudParams, targetDamageRatio, targetArmorRatio, Color.White, hudAlphaCorrection, displayUnpowered, alphaMultiplifier);\n\n            if (addToHudEnemies && distanceFromScreenCenter != null) \n            {\n                m_hudEnemies.Add(target, distanceFromScreenCenter.Value);\n            }\n\n           // MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        private static void GetGuiTargetMode(MyEntity target, MyHudEntityParams hudParams, out MyGuitargetMode hudSettingsTargetMode, out MyGuitargetMode alphaCorrectionTargetMode) \n        {\n            hudSettingsTargetMode = hudParams.TargetMode != null ? hudParams.TargetMode.Value : MyGuitargetMode.Neutral;\n            alphaCorrectionTargetMode = MyGuitargetMode.Neutral;\n\n            MyFactionRelationEnum status = MyFactions.GetFactionsRelation(target, MySession.PlayerShip);\n            if (MyMissions.IsMissionEntity(target))\n            {                \n                var mission = MyMissions.GetSubmissionByEntity(target);\n                if (mission != null && mission.ShowAsOptional)\n                {\n                    if ((hudParams.FlagsEnum & MyHudIndicatorFlagsEnum.SHOW_MISSION_MARKER) != 0)\n                    {\n                        hudSettingsTargetMode = MyGuitargetMode.ObjectiveOptional;\n                    }\n                    alphaCorrectionTargetMode = MyGuitargetMode.ObjectiveOptional;\n                }\n                else\n                {\n                    if ((hudParams.FlagsEnum & MyHudIndicatorFlagsEnum.SHOW_MISSION_MARKER) != 0)\n                    {\n                        hudSettingsTargetMode = MyGuitargetMode.Objective;\n                    }\n                    alphaCorrectionTargetMode = MyGuitargetMode.Objective;\n                }                \n            }\n            else\n            {                \n                switch (status)\n                {\n                    case MyFactionRelationEnum.Neutral:\n                        if ((hudParams.FlagsEnum & MyHudIndicatorFlagsEnum.SHOW_FACTION_RELATION_MARKER) != 0)\n                        {\n                            hudSettingsTargetMode = MyGuitargetMode.Neutral;\n                        }\n                        alphaCorrectionTargetMode = MyGuitargetMode.Neutral;\n                        break;\n                    case MyFactionRelationEnum.Friend:\n                        if ((hudParams.FlagsEnum & MyHudIndicatorFlagsEnum.SHOW_FACTION_RELATION_MARKER) != 0)\n                        {\n                            hudSettingsTargetMode = MyGuitargetMode.Friend;\n                        }\n                        alphaCorrectionTargetMode = MyGuitargetMode.Friend;\n                        break;\n                    case MyFactionRelationEnum.Enemy:\n                        if ((hudParams.FlagsEnum & MyHudIndicatorFlagsEnum.SHOW_FACTION_RELATION_MARKER) != 0)\n                        {\n                            hudSettingsTargetMode = MyGuitargetMode.Enemy;\n                        }\n                        alphaCorrectionTargetMode = MyGuitargetMode.Enemy;\n                        break;\n                }\n            }\n        }\n\n        public static float[] HudMaxDistanceMultiplers;\n        public const int MAX_DAMAGE_INDICATORS = 5;\n        public const int DAMAGE_INDICATOR_TIMEOUT = 1 * 1000;\n        public static DamageIndicator[] DamageIndicators;\n\n        public class DamageIndicator\n        {\n            public bool Used;\n\n            public MyEntity Entity;\n            public Vector3 Position;\n            public float Damage;\n            public int Time;\n        }\n\n        public static void SetDamageIndicator(MyEntity source, Vector3 position, float damage)\n        {\n            int index = 0;\n            float time = float.MaxValue;\n            for (int i = 0; i < DamageIndicators.Length; i++)\n            {\n                if (!DamageIndicators[i].Used)\n                {\n                    index = i;\n                    break;\n                }\n                else if (DamageIndicators[i].Entity == source)\n                {\n                    index = i;\n                    break;\n                }\n                else\n                {\n                    if (DamageIndicators[i].Time < time)\n                    {\n                        time = DamageIndicators[i].Time;\n                        index = i;\n                    }\n                }\n            }\n\n            DamageIndicators[index].Used = true;\n            DamageIndicators[index].Entity = source;\n            DamageIndicators[index].Position = position;\n            DamageIndicators[index].Damage = damage;\n            DamageIndicators[index].Time = DAMAGE_INDICATOR_TIMEOUT;\n        }\n\n        private static void AddDamageIndicators()\n        {\n            for (int i = 0; i < DamageIndicators.Length; i++)\n            {\n                DamageIndicators[i].Time -= (int)(MyConstants.PHYSICS_STEP_SIZE_IN_MILLISECONDS / (DamageIndicators[i].Time / (float)(DAMAGE_INDICATOR_TIMEOUT)));\n                if (DamageIndicators[i].Time < 0)\n                {\n                    DamageIndicators[i].Used = false;\n                }\n            }\n\n            for (int i = 0; i < DamageIndicators.Length; i++)\n            {\n                if (DamageIndicators[i].Used)\n                {\n                    AddDamageIndicator(DamageIndicators[i].Position, DamageIndicators[i].Time / (float)(DAMAGE_INDICATOR_TIMEOUT));\n                }\n            }\n        }\n\n        private static void AddDamageIndicator(Vector3 position, float alpha)\n        {\n            Vector3 transformedPoint = Vector3.Transform(position, MyCamera.ViewMatrix);\n            Vector4 projectedPoint = Vector4.Transform(transformedPoint, MyCamera.ProjectionMatrix);\n\n            if (transformedPoint.Z > 0)\n            {\n                projectedPoint.X *= -1;\n                projectedPoint.Y *= -1;\n            }\n\n            Vector2 projectedPoint2D = new Vector2(projectedPoint.X / projectedPoint.W / 2.0f + 0.5f, -projectedPoint.Y / projectedPoint.W / 2.0f + 0.5f);\n            if (MyVideoModeManager.IsTripleHead())\n            {\n                projectedPoint2D.X = (projectedPoint2D.X - (1.0f / 3.0f)) / (1.0f / 3.0f);\n            }\n\n            Vector2 direction = projectedPoint2D - MyHudConstants.DIRECTION_INDICATOR_SCREEN_CENTER;\n            \n            if (direction.LengthSquared() > MyMwcMathConstants.EPSILON_SQUARED)\n                direction = MyMwcUtils.Normalize(direction);\n            else\n                direction = new Vector2(1f, 0f);\n\n            projectedPoint2D = MyHudConstants.DIRECTION_INDICATOR_SCREEN_CENTER + direction * 0.03f;\n            projectedPoint2D.Y *= MyGuiManager.GetHudSize().Y;\n\n            AddTexturedQuad(MyHudTexturesEnum.damage_direction, projectedPoint2D + direction * MyHudConstants.HUD_DIRECTION_INDICATOR_SIZE * 2.5f, direction,\n                    new Color(1, 1, 1, alpha), 0.006667f * 3.6f, 0.006667f * 1.6f);\n        }\n\n        /// <summary>\n        /// Adds direction indicator and returns distance from screen center\n        /// </summary>        \n        /// <returns></returns>\n        private static float? AddDirectionIndicator(MyHudSetting hudSetting, Vector3 position, MyHudEntityParams hudParams, float targetDamageRatio, float targetArmorRatio, Color hudColor, MyHudAlphaCorrection alphaCorrection = null, bool displayUnpowered = false, float alphaMultiplifier = 1f, bool showNameInWithoutOffset = false, bool drawFocusMark = true)\n        {\n            float? distanceFromScreenCenter = null;\n            float distance = Vector3.Distance(position, MyGuiScreenGamePlay.Static.ControlledEntity.WorldMatrix.Translation);\n            if (showNameInWithoutOffset && distance > 100 * MyMwcSectorConstants.SECTOR_SIZE)\n                return null;\n            bool isAlphaCorrectionEnabled = alphaCorrection != null && (hudParams.FlagsEnum & MyHudIndicatorFlagsEnum.ALPHA_CORRECTION_BY_DISTANCE) != 0;\n\n            float maxDistance = hudParams.MaxDistance;\n            if (hudParams.MaxDistanceMultiplerType != null)\n            {\n                maxDistance *= HudMaxDistanceMultiplers[(int)hudParams.MaxDistanceMultiplerType];\n            }\n            if (isAlphaCorrectionEnabled && distance >= alphaCorrection.MaxDistance || (maxDistance > 0) && (distance > maxDistance) || distance < 1f || Vector3.DistanceSquared(position, MyCamera.Position) <= 1)\n                return distanceFromScreenCenter;\n            \n            byte colorAlphaInByte;\n            if (isAlphaCorrectionEnabled)\n            {\n                colorAlphaInByte = alphaCorrection.GetAlphaByDistance(distance);\n            }\n            else\n            {\n                colorAlphaInByte = 255;// hudParams.Color.A;\n            }\n            \n            hudColor.A = (byte)(colorAlphaInByte * alphaMultiplifier);\n\n            //  Transform point to camera space, so Z = -1 is always forward and then do projective transformation\n            Vector3 transformedPoint = Vector3.Transform(position, MyCamera.ViewMatrix);\n            Vector4 projectedPoint = Vector4.Transform(transformedPoint, MyCamera.ProjectionMatrix);\n\n            //  If point is behind camera we swap X and Y (this is mirror-like transformation)\n            if (transformedPoint.Z > 0)\n            {\n                projectedPoint.X *= -1;\n                projectedPoint.Y *= -1;\n            }\n\n            if (projectedPoint.W == 0)\n            {\n                return null;\n            }\n\n            //  Calculate centered coordinates in range <0..1>\n            Vector2 projectedPoint2D = new Vector2(projectedPoint.X / projectedPoint.W / 2.0f + 0.5f, -projectedPoint.Y / projectedPoint.W / 2.0f + 0.5f);\n            if (MyVideoModeManager.IsTripleHead())\n            {\n                projectedPoint2D.X = (projectedPoint2D.X - (1.0f / 3.0f)) / (1.0f / 3.0f);\n            }\n\n            float objectNameYOffset = 0.0f; //offset to direction indicator\n\n            //  This will bound the rectangle in circle, although it isn't real circle because we work in [1,1] dimensions, \n            //  but number of horizontal pixels is bigger, so at the end it's more elypse\n            //  It must be done when point is out of circle or behind the camera\n            Vector2 direction = projectedPoint2D - MyHudConstants.DIRECTION_INDICATOR_SCREEN_CENTER;            \n            if ((direction.Length() > MyHudConstants.DIRECTION_INDICATOR_MAX_SCREEN_DISTANCE) || (transformedPoint.Z > 0))\n            {\n                distanceFromScreenCenter = direction.LengthSquared() + MyHudConstants.DIRECTION_INDICATOR_MAX_SCREEN_DISTANCE;\n                if ((hudParams.FlagsEnum & MyHudIndicatorFlagsEnum.SHOW_BORDER_INDICATORS) == 0)    // this code doesn't allocate anything\n                {\n                    return distanceFromScreenCenter;\n                }\n\n                if (direction.LengthSquared() > MyMwcMathConstants.EPSILON_SQUARED)\n                {\n                    direction = MyMwcUtils.Normalize(direction);\n                }\n                else \n                {\n                    direction = new Vector2(1f, 0f);\n                }\n                projectedPoint2D = MyHudConstants.DIRECTION_INDICATOR_SCREEN_CENTER + direction * MyHudConstants.DIRECTION_INDICATOR_MAX_SCREEN_DISTANCE;\n\n                //  Fix vertical scale\n                projectedPoint2D.Y *= MyGuiManager.GetHudSize().Y;\n\n                AddTexturedQuad(hudSetting.TextureDirectionIndicator, projectedPoint2D + direction * MyHudConstants.HUD_DIRECTION_INDICATOR_SIZE * 2.5f, direction,\n                       hudColor, MyHudConstants.HUD_DIRECTION_INDICATOR_SIZE * 1.2f, MyHudConstants.HUD_DIRECTION_INDICATOR_SIZE * 0.8f);\n\n                if ((hudParams.FlagsEnum & MyHudIndicatorFlagsEnum.SHOW_LOCKED_TARGET) > 0)\n                {\n                    AddTexturedQuad(hudSetting.TextureDirectionIndicator, projectedPoint2D + direction * MyHudConstants.HUD_DIRECTION_INDICATOR_SIZE * 2.0f, direction,\n                           hudColor, MyHudConstants.HUD_DIRECTION_INDICATOR_SIZE * 1.2f, MyHudConstants.HUD_DIRECTION_INDICATOR_SIZE * 0.8f);\n                    AddTexturedQuad(hudSetting.TextureDirectionIndicator, projectedPoint2D + direction * MyHudConstants.HUD_DIRECTION_INDICATOR_SIZE * 1.5f, direction,\n                           hudColor, MyHudConstants.HUD_DIRECTION_INDICATOR_SIZE * 1.2f, MyHudConstants.HUD_DIRECTION_INDICATOR_SIZE * 0.8f);\n                }\n                else\n                    if ((hudParams.FlagsEnum & MyHudIndicatorFlagsEnum.SHOW_LOCKED_SIDE_TARGET) > 0)\n                {\n                    AddTexturedQuad(hudSetting.TextureDirectionIndicator, projectedPoint2D + direction * MyHudConstants.HUD_DIRECTION_INDICATOR_SIZE * 2.0f, direction,\n                           hudColor, MyHudConstants.HUD_DIRECTION_INDICATOR_SIZE * 1.2f, MyHudConstants.HUD_DIRECTION_INDICATOR_SIZE * 0.8f);\n                    AddTexturedQuad(hudSetting.TextureDirectionIndicator, projectedPoint2D + direction * MyHudConstants.HUD_DIRECTION_INDICATOR_SIZE * 1.5f, direction,\n                           hudColor, MyHudConstants.HUD_DIRECTION_INDICATOR_SIZE * 1.2f, MyHudConstants.HUD_DIRECTION_INDICATOR_SIZE * 0.8f);\n                }\n\n            }\n            else\n            {\n                //  Fix vertical scale\n                projectedPoint2D.Y *= MyGuiManager.GetHudSize().Y;\n\n                distanceFromScreenCenter = direction.LengthSquared();\n\n\n\n                Color rectangleColor = Color.White;// hudParams.Color;\n                rectangleColor.A = colorAlphaInByte;\n\n                if ((hudParams.FlagsEnum & MyHudIndicatorFlagsEnum.SHOW_LOCKED_TARGET) > 0)\n                {\n                    if (displayUnpowered)\n                    {\n                        //if (hudParams.DisplayFactionRelation.Enemy)\n                        //    AddTexturedQuad(MyHudTexturesEnum.Unpowered_red, projectedPoint2D, new Vector2(0, -1), Color.White, MyHudConstants.HUD_DIRECTION_INDICATOR_SIZE * 1.5f, MyHudConstants.HUD_DIRECTION_INDICATOR_SIZE * 1.5f);\n                        //else if (hudParams.DisplayFactionRelation.Friend)\n                        //    AddTexturedQuad(MyHudTexturesEnum.Unpowered_green, projectedPoint2D, new Vector2(0, -1), Color.White, MyHudConstants.HUD_DIRECTION_INDICATOR_SIZE * 1.5f, MyHudConstants.HUD_DIRECTION_INDICATOR_SIZE * 1.5f);\n                        //else if (hudParams.DisplayFactionRelation.Neutral)\n                        //    AddTexturedQuad(MyHudTexturesEnum.Unpowered_white, projectedPoint2D, new Vector2(0, -1), Color.White, MyHudConstants.HUD_DIRECTION_INDICATOR_SIZE * 1.5f, MyHudConstants.HUD_DIRECTION_INDICATOR_SIZE * 1.5f);\n                        //else\n                        //    AddTexturedQuad(MyHudTexturesEnum.Unpowered_blue, projectedPoint2D, new Vector2(0, -1), Color.White, MyHudConstants.HUD_DIRECTION_INDICATOR_SIZE * 1.5f, MyHudConstants.HUD_DIRECTION_INDICATOR_SIZE * 1.5f);\n                        AddTexturedQuad(hudSetting.TextureUnpowered, projectedPoint2D, new Vector2(0, -1), Color.White, MyHudConstants.HUD_DIRECTION_INDICATOR_SIZE * 1.5f, MyHudConstants.HUD_DIRECTION_INDICATOR_SIZE * 1.5f);\n                    }\n                    else\n                    {\n                        AddTexturedQuad(MyHudTexturesEnum.Crosshair_locked, projectedPoint2D, new Vector2(0, -1), Color.White, MyHudConstants.HUD_DIRECTION_INDICATOR_SIZE, MyHudConstants.HUD_DIRECTION_INDICATOR_SIZE);\n                    }\n                }\n                else\n                    if ((hudParams.FlagsEnum & MyHudIndicatorFlagsEnum.SHOW_LOCKED_SIDE_TARGET) > 0)\n                    {\n                        if (displayUnpowered)\n                        {\n                            //if (hudParams.DisplayFactionRelation.Enemy)\n                            //    AddTexturedQuad(MyHudTexturesEnum.Unpowered_red, projectedPoint2D, new Vector2(0, -1), Color.White, MyHudConstants.HUD_DIRECTION_INDICATOR_SIZE * 1.5f, MyHudConstants.HUD_DIRECTION_INDICATOR_SIZE * 1.5f);\n                            //else if (hudParams.DisplayFactionRelation.Friend)\n                            //    AddTexturedQuad(MyHudTexturesEnum.Unpowered_green, projectedPoint2D, new Vector2(0, -1), Color.White, MyHudConstants.HUD_DIRECTION_INDICATOR_SIZE * 1.5f, MyHudConstants.HUD_DIRECTION_INDICATOR_SIZE * 1.5f);\n                            //else if (hudParams.DisplayFactionRelation.Neutral)\n                            //    AddTexturedQuad(MyHudTexturesEnum.Unpowered_white, projectedPoint2D, new Vector2(0, -1), Color.White, MyHudConstants.HUD_DIRECTION_INDICATOR_SIZE * 1.5f, MyHudConstants.HUD_DIRECTION_INDICATOR_SIZE * 1.5f);\n                            //else\n                            //    AddTexturedQuad(MyHudTexturesEnum.Unpowered_blue, projectedPoint2D, new Vector2(0, -1), Color.White, MyHudConstants.HUD_DIRECTION_INDICATOR_SIZE * 1.5f, MyHudConstants.HUD_DIRECTION_INDICATOR_SIZE * 1.5f);\n                            AddTexturedQuad(hudSetting.TextureUnpowered, projectedPoint2D, new Vector2(0, -1), Color.White, MyHudConstants.HUD_DIRECTION_INDICATOR_SIZE * 1.5f, MyHudConstants.HUD_DIRECTION_INDICATOR_SIZE * 1.5f);\n                        }\n                        else\n                        {\n                            AddTexturedQuad(MyHudTexturesEnum.Crosshair_side_locked, projectedPoint2D, new Vector2(0, -1), Color.White, MyHudConstants.HUD_DIRECTION_INDICATOR_SIZE, MyHudConstants.HUD_DIRECTION_INDICATOR_SIZE);\n                        }                        \n                    }\n                    else\n                    {\n                        if (drawFocusMark)\n                        {\n                            //X = value.X * (int)Math.Cos(this.Rotation);\n                            //Y = value.Y * (int)Math.Cos(this.Rotation);\n                            Vector2 upVector = new Vector2(0, -1);\n                            if (hudSetting.TextureTargetRotationSpeed != 0)\n                            {\n                                upVector = new Vector2((float)Math.Cos(MyMinerGame.TotalGamePlayTimeInMilliseconds / 1000f * hudSetting.TextureTargetRotationSpeed * MathHelper.Pi),\n                                                       (float)Math.Sin(MyMinerGame.TotalGamePlayTimeInMilliseconds / 1000f * hudSetting.TextureTargetRotationSpeed * MathHelper.Pi));\n                            }\n\n                            if (displayUnpowered)\n                            {\n                                AddTexturedQuad(hudSetting.TextureUnpowered, projectedPoint2D, new Vector2(0, -1), Color.White, MyHudConstants.HUD_DIRECTION_INDICATOR_SIZE * 1.5f, MyHudConstants.HUD_DIRECTION_INDICATOR_SIZE * 1.5f);\n                            }\n                            else\n                            {\n                                AddTexturedQuad(hudSetting.TextureTarget, projectedPoint2D, upVector, hudColor, MyHudConstants.HUD_DIRECTION_INDICATOR_SIZE * hudSetting.TextureTargetScale, MyHudConstants.HUD_DIRECTION_INDICATOR_SIZE * hudSetting.TextureTargetScale);\n                            }\n                        }\n                    }\n\n                //if (hudParams.FlagsEnum.IsFlagSet(MyHudIndicatorFlagsEnum.SHOW_HEALTH_BARS))\n                if ((hudParams.FlagsEnum & MyHudIndicatorFlagsEnum.SHOW_HEALTH_BARS) != 0)\n                {   \n                    if (targetDamageRatio > -1.0f && targetDamageRatio < 0.99f)\n                    {\n                        //color of halth bar is same as color of target icon !\n                        AddLine2D(projectedPoint2D - new Vector2(MyHudConstants.HUD_TEXTS_OFFSET, MyHudConstants.HUD_TEXTS_OFFSET), projectedPoint2D + new Vector2(2.0f * (1.0f - targetDamageRatio) * MyHudConstants.HUD_TEXTS_OFFSET - MyHudConstants.HUD_TEXTS_OFFSET, -MyHudConstants.HUD_TEXTS_OFFSET), hudSetting.Color, hudSetting.Color, 0.006f);\n                    }\n                }\n\n                objectNameYOffset = -MyHudConstants.HUD_TEXTS_OFFSET * 1.75f;\n            }\n\n            if (displayUnpowered) \n            {\n                objectNameYOffset -= MyHudConstants.HUD_UNPOWERED_OFFSET;\n            }\n            \n            //if (hudParams.Text != null && hudParams.Text.Length > 0 && (hudParams.FlagsEnum.IsFlagSet(MyHudIndicatorFlagsEnum.SHOW_TEXT)))\n            if (hudParams.Text != null && hudParams.Text.Length > 0 && (hudParams.FlagsEnum & MyHudIndicatorFlagsEnum.SHOW_TEXT) != 0 && MyFakes.SHOW_HUD_NAMES)\n            {\n                //  Add object's name\n                MyHudText objectName = m_texts.Allocate();\n                if (objectName != null)\n                {\n\n                    objectName.Start(hudSetting.Font, projectedPoint2D + new Vector2(0, showNameInWithoutOffset ? 0 : objectNameYOffset),\n                        hudColor, 0.8f, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER);\n                    objectName.Append(hudParams.Text);\n\n                    //if (target is MyPhysObjectBot)\n                    //{\n                    //    MyPhysObjectBot bot = (MyPhysObjectBot)target;\n                    //    objectName.Append(bot.HudLabelText);\n                    //}\n                    //else\n                    //{\n                    //    objectName.Append(MyTextsWrapper.Get(MyTextsWrapperEnum.Object));\n                    //}\n                }\n            }\n\n            // display hud icon\n            if (hudParams.Icon != null && (hudParams.FlagsEnum & MyHudIndicatorFlagsEnum.SHOW_ICON) != 0) \n            {\n                Color iconColor = hudParams.IconColor.Value;\n                iconColor.A = (byte)(colorAlphaInByte * alphaMultiplifier);\n\n                AddTexturedQuad(hudParams.Icon.Value, projectedPoint2D + hudParams.IconOffset, new Vector2(0, -1), iconColor, hudParams.IconSize.X / 2f, hudParams.IconSize.Y / 2f);\n            }\n\n            if (displayUnpowered) \n            {\n                //  Add object's name\n                MyHudText objectName = m_texts.Allocate();\n                if (objectName != null)\n                {\n\n                    objectName.Start(hudSetting.Font, projectedPoint2D + new Vector2(0, objectNameYOffset + MyHudConstants.HUD_UNPOWERED_OFFSET),\n                        hudColor, 0.8f, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER);\n                    //objectName.Append(MyTextsWrapper.Get(MyTextsWrapperEnum.HudUnpowered));                    \n                }\n            }\n\n            if (MyFakes.SHOW_HUD_DISTANCES && (hudParams.FlagsEnum & MyHudIndicatorFlagsEnum.SHOW_DISTANCE) != 0)\n            {\n                //  Add distance to object\n                MyHudText objectDistance = m_texts.Allocate();\n                if (objectDistance != null)\n                {\n                    objectDistance.Start(hudSetting.Font, projectedPoint2D + new Vector2(0, MyHudConstants.HUD_TEXTS_OFFSET * 1.75f),\n                        hudColor, 0.8f, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER);\n\n                    //  Create string builder with distance in metres, e.g. \"123m\"                    \n                    objectDistance.AppendInt32((int)Math.Round(distance));\n                    objectDistance.Append(MyTextsWrapper.Get(MyTextsWrapperEnum.MetersShort));\n                }\n            }\n\n            return distanceFromScreenCenter;\n        }\n\n\n        public static int LastGPS = Int32.MinValue;\n        static bool m_GPSPathDirty = true;\n        private static List<Vector3> m_GPSPath;\n        private static StringBuilder m_GPSMessage;\n        private static MySoundCue? m_GPSCue;\n\n        private static MyComputeGPSJob m_computeGPSJob = new MyComputeGPSJob();\n        private static Task m_computeGPSTask;\n        private static bool m_computingGPS = false;\n        \n        private static int m_gpsStarted_ms;  // for debugging\n\n        public static void MakeGPSPathDirty()\n        {\n            m_GPSPathDirty = true;\n        }\n\n        private static void ComputeGPSPath()\n        {\n            if (!m_computingGPS)\n            {\n                m_gpsStarted_ms = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n                m_GPSPathDirty = false;\n                m_GPSPath = new List<Vector3>();\n\n                // move startPos a little bit below and to the front so that it's visible from the cockpit\n                var startEntity = MyGuiScreenGamePlay.Static.ControlledEntity;\n                Vector3 playerPos = startEntity.GetPosition();\n                Vector3 startPos = playerPos + MyHudConstants.GPS_START_POSITION_FRONT * startEntity.GetWorldRotation().Forward + MyHudConstants.GPS_START_POSITION_UP * startEntity.GetWorldRotation().Up;\n\n                // if startPos is blocked by some object, move it into a visible position\n                var line = new MyLine(playerPos, playerPos + 2 * (startPos - playerPos), true);\n                var intersection = MyEntities.GetIntersectionWithLine(ref line, startEntity, MySession.PlayerShip, true, true);\n                if (intersection != null)\n                    startPos = (playerPos + intersection.Value.IntersectionPointInWorldSpace) * 0.5f;  // halfway between the player and the intersection\n\n                // find the goal position\n                var goalEntity = GetGPSGoalEntity(startPos);\n\n                Vector3? goalPos = goalEntity != null ? goalEntity.WorldAABB.GetCenter() : (Vector3?)null;\n\n                if (goalPos == null)\n                {\n                    m_GPSMessage = MyTextsWrapper.Get(MyTextsWrapperEnum.GPSNoObjectives);\n                    return;  // nothing found\n                }\n                \n                m_computeGPSJob.Start(startPos, goalPos.Value, goalEntity);\n                m_computeGPSTask = Parallel.Start(m_computeGPSJob);\n                m_computingGPS = true;\n            }\n            else if (m_computeGPSTask.IsComplete)\n            {\n                m_computingGPS = false;\n                LastGPS = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n\n                m_GPSPath = m_computeGPSJob.Path;\n                m_GPSMessage = m_computeGPSJob.Message;\n            }\n            else\n            {\n                // commented because it was evil\n                /*\n                if (MyMinerGame.TotalGamePlayTimeInMilliseconds - m_gpsStarted_ms > 1000)\n                {\n                    // one sec was enough, do it NOW\n                    m_computeGPSJob.DoWork();\n                    m_computingGPS = false;\n                    LastGPS = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n                    m_GPSPath = m_computeGPSJob.Path;\n                    m_GPSMessage = m_computeGPSJob.Message;\n                }\n                */\n            }\n        }\n\n        public static MyEntity GetGPSGoalEntity(Vector3 startPos)\n        {\n            // try a submission location dummy\n            MyEntity goalEntity = GetNextObjectiveDummy();\n\n            // try the closest mission entity that's not optional\n            if (goalEntity == null)\n            {\n                goalEntity = GetClosestMissionEntity(startPos);\n            }\n\n            return goalEntity;\n        }\n\n        private static MyEntity GetClosestMissionEntity(Vector3 position)\n        {\n            MyEntity goalEntity = null;\n\n            //Vector3? closestActualEntityPos = null;\n\n            foreach (var hudEntity in HudEntities)\n            {\n                var target = hudEntity.Item1.Target;\n\n                if (target != null)\n                {\n                    var entity = target as MyEntity;\n\n                    if (entity != null && MyMissions.IsMissionEntity(entity) &&\n                        (MyMissions.GetSubmissionByEntity(entity) == null ||\n                         !MyMissions.GetSubmissionByEntity(entity).ShowAsOptional))\n                    {\n                        return entity;\n                        /*\n                        var entityPosition = (entity).WorldAABB.GetCenter();\n                        if (closestActualEntityPos == null ||\n                            Vector3.Distance(position, entityPosition) <\n                            Vector3.Distance(position, closestActualEntityPos.Value))\n                        {\n                            closestActualEntityPos = entityPosition;\n                            goalEntity = entity;\n                        }\n                        */\n                    }\n                }\n            }\n\n            return goalEntity;\n        }\n\n        private static MyEntity GetNextObjectiveDummy()\n        {\n            if (MyMissions.ActiveMission != null && MyMissions.ActiveMission.ActiveObjectives != null)\n                foreach (var submission in MyMissions.ActiveMission.ActiveObjectives)\n                    if (submission.HasLocationEntity() && !submission.ShowAsOptional)\n                    {\n                        return submission.Location.Entity;\n                    }\n\n            return null;\n        }\n\n        private static MyHudNotification.MyNotification m_GPSNotification = null;\n\n        public static void DrawGPS()\n        {\n            float timeSinceLastGPS = (float)MyMinerGame.TotalGamePlayTimeInMilliseconds - LastGPS;\n            if (!m_computingGPS && timeSinceLastGPS > MyHudConstants.GPS_DURATION)\n            {\n                m_GPSPathDirty = true;\n                return;\n            }\n\n            if ((m_GPSPathDirty || m_computingGPS) && MyMinerGame.IsGameReady)\n            {\n                ComputeGPSPath();\n                if (m_computingGPS == true) return;  // still computing\n\n                if (m_GPSNotification == null)\n                    m_GPSNotification = new MyHudNotification.MyNotification(\"GPS{0}\", MyHudConstants.MISSION_FONT, MyHudConstants.GPS_DURATION, null);\n                m_GPSNotification.SetTextFormatArguments(new object[] { m_GPSMessage.ToString() });\n                //m_GPSNotification.SetTextFormatArguments(new object[] { m_GPSMessage.ToString() + \" (took \" + (LastGPS - m_gpsStarted_ms) + \"ms)\" });\n\n                MyHudNotification.AddNotification(m_GPSNotification);\n                if (m_GPSCue != null && m_GPSCue.Value.IsPlaying)\n                {\n                    m_GPSCue.Value.Stop(SharpDX.XACT3.StopFlags.Immediate);\n                }\n                if (m_GPSPath == null || m_GPSPath.Count == 0)\n                {\n                    m_GPSCue = MyAudio.AddCue2D(MySoundCuesEnum.SfxGpsFail);\n                }\n                else\n                {\n                    m_GPSCue = MyAudio.AddCue2D(MySoundCuesEnum.SfxGps);\n                }\n            }\n\n            // draw all waypoints close to the player (for testing)\n            /*\n            foreach (var v in MyWayPointGraph.GetAllWaypointsInSphere(MySession.PlayerShip.GetPosition(), 1000))\n            {\n                MyTransparentGeometry.AddPointBillboard(MyTransparentMaterialEnum.GPSBack, v.Save ? new Vector4(0.00f, 0.05f, 0.01f, 0.05f) : new Vector4(0.05f, 0.005f, 0.01f, 0.05f), v.Position, 20, 0);\n                // draw edges\n                foreach (var n in v.Neighbors)\n                    for (float i = 0.0625f; i < 1; i += 0.0625f)\n                        MyTransparentGeometry.AddPointBillboard(MyTransparentMaterialEnum.GPSBack, new Vector4(0.001f, 0.001f, 0.02f, 0.05f), i * v.Position + (1 - i) * n.Position, 5, 0) ;\n            }\n            */\n\n            if (m_GPSPath == null)\n                return;\n\n            if (m_GPSPath.Count < 2)\n                return;\n\n            float timeFadeOut = Math.Min(1, 1 - ((timeSinceLastGPS - (MyHudConstants.GPS_DURATION - MyHudConstants.GPS_FADE_OUT_DURATION)) / MyHudConstants.GPS_FADE_OUT_DURATION));\n            float fadeInDistMax = timeSinceLastGPS * MyHudConstants.GPS_FADE_IN_SPEED * 1e-3f;\n            float fadeInDistMin = fadeInDistMax - MyHudConstants.GPS_FADE_IN_TAIL_LENGTH;\n\n            var pointPoses = new List<Vector3>();\n            var pointDirs = new List<Vector3>();\n            var pointFades = new List<float>();\n            var pointWidthMultipliers = new List<float>();\n\n            // draw arrows\n            {\n                float distToDo = MyHudConstants.GPS_FADE_OUT_DISTANCE_END;\n                float totalDist = MyHudConstants.GPS_START_POSITION_FRONT;\n\n                Vector4 color = new Vector4(0.3f, 0.3f, 0.3f, 0.1f);\n                for (int i = 1; i < m_GPSPath.Count; i++)\n                {\n                    Vector3 dir = m_GPSPath[i] - m_GPSPath[i - 1];\n                    float edgeLength = dir.Length();\n                    dir.Normalize();\n\n                    int arrowsInSegment = (int)Math.Round(edgeLength / MyHudConstants.GPS_SEGMENT_ADVANCE);\n                    if (arrowsInSegment == 0)\n                    {\n                        continue;\n                    }\n\n                    float segmentAdvance = edgeLength / arrowsInSegment;\n                    float segmentLength = segmentAdvance * MyHudConstants.GPS_SEGMENT_LENGTH / MyHudConstants.GPS_SEGMENT_ADVANCE;\n\n                    for (int j = 0; j < arrowsInSegment; j++)\n                    {\n                        Vector3 pos = m_GPSPath[i - 1] + (j + 1) * dir * segmentAdvance;\n\n                        if (totalDist >= MyHudConstants.GPS_FADE_OUT_DISTANCE_END) break;\n\n                        float distFadeOut = Math.Min(1, 1 - (totalDist - MyHudConstants.GPS_FADE_OUT_DISTANCE_START) / (MyHudConstants.GPS_FADE_OUT_DISTANCE_END - MyHudConstants.GPS_FADE_OUT_DISTANCE_START));\n                        float timeFadeIn = Math.Max(0, Math.Min(1, 1 - (MyHudConstants.GPS_FADE_OUT_DISTANCE_END - distToDo - fadeInDistMin) / (fadeInDistMax - fadeInDistMin)));\n\n                        float pulseT = (float)Math.IEEERemainder(totalDist * MyHudConstants.GPS_PULSE_LENGTH_FREQ - timeSinceLastGPS * MyHudConstants.GPS_PULSE_TIME_FREQ + MyHudConstants.GPS_PULSE_TIME_PHASE, 2 * Math.PI);  // -pi..pi\n                        pulseT = (float)Math.Sqrt((pulseT / (2 * Math.PI)) + 0.5f) * (float)(2 * Math.PI);\n                        float pulsePhase = (float)Math.Cos(pulseT);\n                        float pulseFadeOut = MyHudConstants.GPS_FADE_PULSE_DC + MyHudConstants.GPS_FADE_PULSE_AMPLITUDE * pulsePhase;\n                        pulseFadeOut *= pulseFadeOut;\n                        float widthMultiplier = MyHudConstants.GPS_WIDTH_PULSE_DC + MyHudConstants.GPS_WIDTH_PULSE_AMPLITUDE * pulsePhase;\n\n                        Matrix mat = MyMath.MatrixFromDir(dir);\n\n                        var camToPos = Vector3.Normalize(pos - MyCamera.Position);\n                        var left = Math.Abs(Vector3.Dot(camToPos, mat.Left));\n                        var up = Math.Abs(Vector3.Dot(camToPos, mat.Up));\n                        var forward = Math.Abs(Vector3.Dot(camToPos, mat.Forward));\n\n                        float fadeout = timeFadeIn * timeFadeOut * distFadeOut * pulseFadeOut;\n\n                        // static X+O, fades when parallel to view direction\n                        if (left * timeFadeIn * timeFadeOut * distFadeOut > 0)\n                            MyTransparentGeometry.AddBillboardOriented(MyTransparentMaterialEnum.GPS, color * left * fadeout, pos - 0.5f * dir * segmentLength, mat.Up, mat.Forward, MyHudConstants.GPS_SEGMENT_WIDTH * widthMultiplier, 0.5f * segmentLength);\n                        if (up * timeFadeIn * timeFadeOut * distFadeOut > 0)\n                            MyTransparentGeometry.AddBillboardOriented(MyTransparentMaterialEnum.GPS, color * up * fadeout, pos - 0.5f * dir * segmentLength, mat.Left, mat.Forward, MyHudConstants.GPS_SEGMENT_WIDTH * widthMultiplier, 0.5f * segmentLength);\n                        \n                        // draw the Os later to save draw calls\n                        if (forward * fadeout > 0)\n                        {\n                            pointFades.Add(forward * fadeout);\n                            pointDirs.Add(dir);\n                            pointPoses.Add(pos + MyHudConstants.GPS_DOT_OFFSET * dir * segmentLength);\n                            pointWidthMultipliers.Add(widthMultiplier);\n                        }\n\n                        totalDist += segmentAdvance;\n                    }\n                }\n            }\n\n            // draw the Os here\n            for (int i = 0; i < pointPoses.Count; i++)\n            {\n                Vector4 color = MyHudConstants.MISSION_MARKER_COLOR.ToVector4() * new Vector4(0.15f, 0.15f, 0.15f, 0.05f);\n                Matrix mat = MyMath.MatrixFromDir(pointDirs[i]);\n                MyTransparentGeometry.AddBillboardOriented(MyTransparentMaterialEnum.GPSBack, color * pointFades[i], pointPoses[i], mat.Left, mat.Up, MyHudConstants.GPS_DOT_WIDTH * pointWidthMultipliers[i], MyHudConstants.GPS_DOT_WIDTH * pointWidthMultipliers[i]);\n            }\n        }\n\n        \n        static byte GetHudColorAlphaByDistance(float distance)\n        {            \n            float fixedDistance = Math.Min(Math.Max(MyHudConstants.HUD_MIN_DISTANCE_TO_ALPHA_CORRECT, distance), MyHudConstants.HUD_MAX_DISTANCE_TO_ALPHA_CORRECT_NORMAL);\n\n            float colorAlpha = MathHelper.Lerp(MyHudConstants.HUD_MIN_DISTANCE_ALPHA, MyHudConstants.HUD_MAX_DISTANCE_ALPHA,\n                                                (fixedDistance - MyHudConstants.HUD_MIN_DISTANCE_TO_ALPHA_CORRECT) / \n                                                (MyHudConstants.HUD_MAX_DISTANCE_TO_ALPHA_CORRECT_NORMAL - MyHudConstants.HUD_MIN_DISTANCE_TO_ALPHA_CORRECT));\n            byte colorAlhpaInByte = (byte)MathHelper.Lerp(byte.MinValue, byte.MaxValue, colorAlpha);\n\n            return colorAlhpaInByte;\n        }\n\n\n        static MyHudTexturesEnum GetCrosshairTexture()\n        {\n            MyHudTexturesEnum crosshairTexture;\n            if (MySession.PlayerShip != null && MySession.PlayerShip.GetShipCockpit() != null)\n            {\n                crosshairTexture = MySession.PlayerShip.GetShipCockpit().Crosshair;\n            }\n            else\n            {\n                crosshairTexture = MyHudTexturesEnum.Crosshair01;\n            }\n            return crosshairTexture;\n        }\n\n        static float GetCrosshairSize()\n        {\n            MyHudTexturesEnum crosshairTexture = GetCrosshairTexture();\n\n            if (crosshairTexture == MyHudTexturesEnum.Crosshair01)\n            {\n                return MyHudConstants.DEFAULT_CROSSHAIR_SIZE;\n            }\n            else if (crosshairTexture == MyHudTexturesEnum.crosshair_omnicorp)\n            {\n                return MyHudConstants.OMNICORP_CROSSHAIR_SIZE;\n            }\n            else\n            {\n                return MyHudConstants.SPECIAL_CROSSHAIR_SIZE;\n            }\n        }\n\n        static void AddCrosshairDynamic()\n        {\n            var crosshairPosition = MyThirdPersonSpectator.GetCrosshair();\n           \n            Vector3 transformedPoint = Vector3.Transform(crosshairPosition, MyCamera.ViewMatrix);\n            Vector4 projectedPoint = Vector4.Transform(transformedPoint, MyCamera.ProjectionMatrix);\n\n            if (transformedPoint.Z > 0)\n            {\n                projectedPoint.X *= -1;\n                projectedPoint.Y *= -1;\n            }\n            if (projectedPoint.W == 0) return;\n\n            Vector2 projectedPoint2D = new Vector2(projectedPoint.X / projectedPoint.W / 2.0f + 0.5f, -projectedPoint.Y / projectedPoint.W / 2.0f + 0.5f);\n            if (MyVideoModeManager.IsTripleHead())\n            {\n                projectedPoint2D.X = (projectedPoint2D.X - (1.0f / 3.0f)) / (1.0f / 3.0f);\n            }\n            \n            projectedPoint2D.Y *= MyGuiManager.GetHudSize().Y;\n\n            AddTexturedQuad(GetCrosshairTexture(), projectedPoint2D, MyHudConstants.HUD_VECTOR_UP,\n                MyHudConstants.HUD_COLOR_LIGHT, GetCrosshairSize(), GetCrosshairSize());\n        }\n\n        static void AddCrosshair()\n        {\n            AddTexturedQuad(GetCrosshairTexture(), MyGuiManager.GetHudSizeHalf(), MyHudConstants.HUD_VECTOR_UP,\n                MyHudConstants.HUD_COLOR_LIGHT, GetCrosshairSize(), GetCrosshairSize());\n        }\n\n        static void AddHorisontalAngleLine()\n        {\n            if (!MyFakes.DRAW_CROSSHAIR_HORIZONTAL_LINE) return;\n            Vector3 cameraRight = -MyCamera.LeftVector;\n            Vector3 horizontal = Vector3.Up;\n\n            float angle = MyUtils.GetAngleBetweenVectors(cameraRight, horizontal);\n            angle -= MathHelper.PiOver2;\n            angle *= -1;\n\n            float deltaX = (float)Math.Cos(angle) * MyHudConstants.HORISONTAL_ANGLE_LINE_POSITON_DELTA;\n            float deltaY = (float)Math.Sin(angle) * MyHudConstants.HORISONTAL_ANGLE_LINE_POSITON_DELTA;\n\n            Vector2 positionLeft = new Vector2(MyGuiManager.GetHudSizeHalf().X - deltaX, MyGuiManager.GetHudSizeHalf().Y - deltaY);\n            Vector2 positionRight = new Vector2(MyGuiManager.GetHudSizeHalf().X + deltaX, MyGuiManager.GetHudSizeHalf().Y + deltaY);\n\n            Vector2 upVector = MyMwcUtils.Normalize(new Vector2(deltaY, -deltaX));\n\n            //  Left line\n            AddTexturedQuad(MyHudTexturesEnum.HorizontalLineLeft, positionLeft, upVector, MyHudConstants.HUD_COLOR_LIGHT, 0.75f * 128.0f / 2000.0f, 0.75f * 16.0f / 2000.0f);\n\n            //  Right line\n            AddTexturedQuad(MyHudTexturesEnum.HorizontalLineRight, positionRight, upVector, MyHudConstants.HUD_COLOR_LIGHT, 0.75f * 128.0f / 2000.0f, 0.75f * 16.0f / 2000.0f);\n        }\n\n        static void AddBackCameraBorders()\n        {\n            Vector2 origin = MyGuiManager.GetHudNormalizedCoordFromPixelCoord(new Vector2(MyCamera.BackwardViewport.X - 5, MyCamera.BackwardViewport.Y - 6));\n            Vector2 size = MyGuiManager.GetHudNormalizedSizeFromPixelSize(new Vector2(MyCamera.BackwardViewport.Width + 10, MyCamera.BackwardViewport.Height + 14));\n\n            AddTexturedQuad(MyHudTexturesEnum.BackCameraOverlay, origin + size / 2.0f, MyHudConstants.HUD_VECTOR_UP,\n                MyHudConstants.HUD_COLOR_DARKER,\n                size.X / 2.0f + .0045f, size.Y / 2.0f + .003f);\n        }\n\n        /*static void AddRadarBorders()\n        {\n            Vector2 origin = MyGuiManager.GetHudNormalizedCoordFromPixelCoord(new Vector2(MyCamera.HudRadarViewport.X, MyCamera.HudRadarViewport.Y));\n            Vector2 size = MyGuiManager.GetHudNormalizedSizeFromPixelSize(new Vector2(MyCamera.HudRadarViewport.Width, MyCamera.HudRadarViewport.Height));\n\n            AddTexturedQuad(MyHudTexturesEnum.RadarOverlay, origin + size / 2.0f, MyHudConstants.HUD_VECTOR_UP, MyHudConstants.HUD_COLOR_DARKER, size.X / 2.0f, size.Y / 2.0f);\n        }*/\n\n        static void AddHarvestedMaterial()\n        {\n            if (MySession.PlayerShip != null && MySession.PlayerShip.Inventory != null)\n            {\n                MyHudText hudText = m_texts.Allocate();\n                if (hudText != null)\n                {\n                    hudText.Start(MyGuiManager.GetFontMinerWarsBlue(),\n                                  MyGuiManager.GetHudSize()*new Vector2(0.01f, 0.8f),\n                                  Color.White, 1f, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_BOTTOM);\n\n                    foreach (MyMwcObjectBuilder_Ore_TypesEnum key in MyGuiAsteroidHelpers.MyMwcOreTypesEnumValues)\n                    {\n                        int val = (int)MySession.PlayerShip.Inventory.GetTotalAmountOfInventoryItems(MyMwcObjectBuilderTypeEnum.Ore, (int) key);\n                        \n                        if (val > 0)\n                        {\n                            hudText.Append(\n                                MyGuiObjectBuilderHelpers.GetGuiHelper(\n                                    CommonLIB.AppCode.ObjectBuilders.MyMwcObjectBuilderTypeEnum.Ore, (int) key).\n                                    Description);\n                            hudText.Append(m_sbHelperAmountOfAmmoTextSeparator);\n                            hudText.AppendInt32(val);\n                            hudText.AppendLine();\n                        }\n                    }\n                }\n            }\n        }\n\n        static void AddAmountOfAmmo()\n        {\n            if (!MyGuiScreenGamePlay.Static.IsSelectAmmoVisible() && MySession.PlayerShip != null && MySession.PlayerShip.Weapons != null)\n            {\n                // Get selected weapons & ammo:\n                MyGuiSmallShipHelperAmmo.Reload();\n                Vector2 iconPosition = new Vector2(0.0f, 0.0f);\n                /*\n                if (MyFakes.MW25D)\n                {\n                    iconPosition.Y += MyGuiConstants.AMMO_SELECTION_DEFAULT_AFTERSELECT_ICON_SCALE.Y * (MyGuiSmallShipHelperAmmo.ItemHeight + MyGuiSmallShipHelperAmmo.ItemDistance);\n                } */\n                \n                foreach (MyMwcObjectBuilder_FireKeyEnum key in MyGuiSmallShipHelpers.MyMwcObjectBuilder_SmallShip_AssignmentOfAmmo_FireKeyEnumValues)\n                {\n                    // we want display icon's only for primary and secondary key\n                    if (key != MyMwcObjectBuilder_FireKeyEnum.Primary && key != MyMwcObjectBuilder_FireKeyEnum.Secondary) \n                    {\n                        continue;\n                    }\n\n                    if (MySession.Is25DSector && key != MyMwcObjectBuilder_FireKeyEnum.Primary)\n                    {\n                        continue;\n                    }\n                \n\n                    //MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum ammoType = MySession.PlayerShip.Weapons.AmmoAssignments.GetAmmoType(key);\n                    var ammoAssignment = MySession.PlayerShip.Weapons.AmmoAssignments.GetAmmoAssignment(key);\n                    \n                    MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum? weaponType = MyGuiSmallShipHelpers.GetWeaponType(ammoAssignment.AmmoType, ammoAssignment.AmmoGroup);\n                    if (weaponType == null && MySession.Is25DSector)\n                        continue;\n\n                    Debug.Assert(weaponType != null);\n\n                    // we must check if assignet weapon type is mounted\n                    if (MySession.PlayerShip.Weapons.IsMounted(weaponType.Value)) \n                    {                        \n                        //MyGuiSmallShipHelperAmmo ammoHelper = MyGuiSmallShipHelpers.GetMyGuiSmallShipHelperAmmo(ammoType);\n                        MyGuiSmallShipHelperAmmo ammoHelper = MyGuiObjectBuilderHelpers.GetGuiHelper(\n                            MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)ammoAssignment.AmmoType) as MyGuiSmallShipHelperAmmo;\n\n                        if (ammoHelper != null)\n                        {\n                            int amount = MySession.PlayerShip.Weapons.GetAmountOfAmmo(key);\n                            Vector2 guiOffset = MyGuiManager.GetNormalizedCoordinateFromScreenCoordinate(MyGuiConstants.AMMO_SELECT_LEFT_TOP_POSITION);\n                            var ammoSpecialText = MySession.PlayerShip.Weapons.AmmoAssignments.GetAmmoSpecialText(key);\n                            ammoHelper.HudDrawActualAmmo(iconPosition + guiOffset,\n                                                         MyGuiConstants.AMMO_SELECTION_DEFAULT_AFTERSELECT_ICON_SCALE,\n                                                         amount,\n                                                         MyGuiConstants.SELECT_AMMO_BACKGROUND_COLOR *\n                                                         MyGuiConstants.SELECT_AMMO_ACTIVE_COLOR_MULTIPLIER, null);\n                            if (ammoSpecialText != null)\n                            {\n                                ammoHelper.HudDrawActualAmmoComment(MyGuiConstants.SELECT_AMMO_BACKGROUND_COLOR * MyGuiConstants.SELECT_AMMO_ACTIVE_COLOR_MULTIPLIER, ammoSpecialText);\n                            }\n                        }\n                    }\n                    \n                    //next icon & text line:\n                    iconPosition.Y += MyGuiConstants.AMMO_SELECTION_DEFAULT_AFTERSELECT_ICON_SCALE.Y * (MyGuiSmallShipHelperAmmo.ItemHeight + MyGuiSmallShipHelperAmmo.ItemDistance);\n                }\n            }\n        }\n\n        static void ClearQuads()\n        {\n            m_quadsCount = 0;\n        }\n\n        static void ClearTexts()\n        {\n            m_texts.ClearAllAllocated();\n        }\n\n        public static MyAtlasTextureCoordinate GetTextureCoord(MyHudTexturesEnum texture)\n        {\n            return m_textureCoords[(int)texture];\n        }\n\n        //  Add 2D line into the lines list. Before that, we convert line to quad.\n        static void AddLine2D(Vector2 vertex0, Vector2 vertex1, Color color0, Color color1, float lineThicknessHalf)\n        {\n            if (m_quadsCount >= MyHudConstants.MAX_HUD_QUADS_COUNT)\n                return;\n\n            //  Up vector is 2D cross product\n            Vector2 direction = MyMwcUtils.Normalize(vertex1 - vertex0);\n            Vector2 upVector = new Vector2(direction.Y, -direction.X);\n\n            //  Rectangle representing the middle of the line\n            int vertexIndexMiddle = m_quadsCount * MyHudConstants.VERTEXES_PER_HUD_QUAD;\n            m_vertices[vertexIndexMiddle + 0].Position = new Vector3(vertex0 + upVector * lineThicknessHalf, 0);\n            m_vertices[vertexIndexMiddle + 1].Position = new Vector3(vertex1 + upVector * lineThicknessHalf, 0);\n            m_vertices[vertexIndexMiddle + 2].Position = new Vector3(vertex0 - upVector * lineThicknessHalf, 0);\n            m_vertices[vertexIndexMiddle + 3].Position = new Vector3(vertex1 + upVector * lineThicknessHalf, 0);\n            m_vertices[vertexIndexMiddle + 4].Position = new Vector3(vertex1 - upVector * lineThicknessHalf, 0);\n            m_vertices[vertexIndexMiddle + 5].Position = new Vector3(vertex0 - upVector * lineThicknessHalf, 0);\n\n            //  Calculating texture coordinates for 2D line is little hack. Because we use texture atlas, we must have some border\n            //  arround line texture. Another hack is that horizontal texture coordinate is always 0.5 (in texture) as we\n            //  don't want to interpolate between dark border and real line texture.\n            MyAtlasTextureCoordinate textureCoord = GetTextureCoord(MyHudTexturesEnum.Line);\n            m_vertices[vertexIndexMiddle + 0].TexCoord = textureCoord.Offset + new Vector2(textureCoord.Size.X * 0.5f, textureCoord.Size.Y * 0.25f);\n            m_vertices[vertexIndexMiddle + 1].TexCoord = new Vector2(textureCoord.Offset.X + textureCoord.Size.X * 0.5f, textureCoord.Offset.Y + textureCoord.Size.Y * 0.25f);\n            m_vertices[vertexIndexMiddle + 2].TexCoord = new Vector2(textureCoord.Offset.X + textureCoord.Size.X * 0.5f, textureCoord.Offset.Y + textureCoord.Size.Y * 0.75f);\n            m_vertices[vertexIndexMiddle + 3].TexCoord = m_vertices[vertexIndexMiddle + 1].TexCoord;\n            m_vertices[vertexIndexMiddle + 4].TexCoord = new Vector2(textureCoord.Offset.X + textureCoord.Size.X * 0.5f, textureCoord.Offset.Y + textureCoord.Size.Y * 0.75f);\n            m_vertices[vertexIndexMiddle + 5].TexCoord = m_vertices[vertexIndexMiddle + 2].TexCoord;\n\n            m_vertices[vertexIndexMiddle + 0].Color = color0.ToVector4();\n            m_vertices[vertexIndexMiddle + 1].Color = color1.ToVector4();\n            m_vertices[vertexIndexMiddle + 2].Color = color0.ToVector4();\n            m_vertices[vertexIndexMiddle + 3].Color = color1.ToVector4();\n            m_vertices[vertexIndexMiddle + 4].Color = color1.ToVector4();\n            m_vertices[vertexIndexMiddle + 5].Color = color0.ToVector4();\n\n            m_quadsCount++;\n        }\n\n        //  Add textured quad with specified UP direction and width/height\n        public static void AddTexturedQuad(MyHudTexturesEnum texture, Vector2 position, Vector2 upVector, Color color, float halfWidth, float halfHeight)\n        {\n            //  Left vector is 2D cross product\n            Vector2 leftVector = new Vector2(upVector.Y, -upVector.X);\n\n            if (m_quadsCount >= MyHudConstants.MAX_HUD_QUADS_COUNT)\n                return;\n\n            //  Rectangle representing the middle of the line\n            int vertexIndexMiddle = m_quadsCount * MyHudConstants.VERTEXES_PER_HUD_QUAD;\n            m_vertices[vertexIndexMiddle + 0].Position = new Vector3(position + leftVector * halfWidth + upVector * halfHeight, 0);\n            m_vertices[vertexIndexMiddle + 1].Position = new Vector3(position - leftVector * halfWidth + upVector * halfHeight, 0);\n            m_vertices[vertexIndexMiddle + 2].Position = new Vector3(position + leftVector * halfWidth - upVector * halfHeight, 0);\n            m_vertices[vertexIndexMiddle + 3].Position = m_vertices[vertexIndexMiddle + 1].Position;\n            m_vertices[vertexIndexMiddle + 4].Position = new Vector3(position - leftVector * halfWidth - upVector * halfHeight, 0);\n            m_vertices[vertexIndexMiddle + 5].Position = m_vertices[vertexIndexMiddle + 2].Position;\n\n            MyAtlasTextureCoordinate textureCoord = GetTextureCoord(texture);\n            m_vertices[vertexIndexMiddle + 0].TexCoord = textureCoord.Offset;\n            m_vertices[vertexIndexMiddle + 1].TexCoord = new Vector2(textureCoord.Offset.X + textureCoord.Size.X, textureCoord.Offset.Y);\n            m_vertices[vertexIndexMiddle + 2].TexCoord = new Vector2(textureCoord.Offset.X, textureCoord.Offset.Y + textureCoord.Size.Y);\n            m_vertices[vertexIndexMiddle + 3].TexCoord = m_vertices[vertexIndexMiddle + 1].TexCoord;\n            m_vertices[vertexIndexMiddle + 4].TexCoord = new Vector2(textureCoord.Offset.X + textureCoord.Size.X, textureCoord.Offset.Y + textureCoord.Size.Y);\n            m_vertices[vertexIndexMiddle + 5].TexCoord = m_vertices[vertexIndexMiddle + 2].TexCoord;\n\n            m_vertices[vertexIndexMiddle + 0].Color = color.ToVector4();\n            m_vertices[vertexIndexMiddle + 1].Color = color.ToVector4();\n            m_vertices[vertexIndexMiddle + 2].Color = color.ToVector4();\n            m_vertices[vertexIndexMiddle + 3].Color = color.ToVector4();\n            m_vertices[vertexIndexMiddle + 4].Color = color.ToVector4();\n            m_vertices[vertexIndexMiddle + 5].Color = color.ToVector4();\n\n            m_quadsCount++;\n        }\n\n        //  Add textured quad with specified UP direction\n        static void AddTexturedQuad(MyHudTexturesEnum texture, Vector2 position, Vector2 upVector, Color color, float scale)\n        {\n            //  Left vector is 2D cross product\n            Vector2 leftVector = new Vector2(upVector.Y, -upVector.X);\n            MyAtlasTextureCoordinate textureCoord = GetTextureCoord(texture);\n            float halfWidth = textureCoord.Size.X / 2f * scale;\n            float halfHeight = textureCoord.Size.Y / 2f * scale * (3f/4f);\n\n            //  Rectangle representing the middle of the line\n            int vertexIndexMiddle = m_quadsCount * MyHudConstants.VERTEXES_PER_HUD_QUAD;\n            m_vertices[vertexIndexMiddle + 0].Position = new Vector3(position + leftVector * halfWidth + upVector * halfHeight, 0);\n            m_vertices[vertexIndexMiddle + 1].Position = new Vector3(position - leftVector * halfWidth + upVector * halfHeight, 0);\n            m_vertices[vertexIndexMiddle + 2].Position = new Vector3(position + leftVector * halfWidth - upVector * halfHeight, 0);\n            m_vertices[vertexIndexMiddle + 3].Position = m_vertices[vertexIndexMiddle + 1].Position;\n            m_vertices[vertexIndexMiddle + 4].Position = new Vector3(position - leftVector * halfWidth - upVector * halfHeight, 0);\n            m_vertices[vertexIndexMiddle + 5].Position = m_vertices[vertexIndexMiddle + 2].Position;\n\n            m_vertices[vertexIndexMiddle + 0].TexCoord = textureCoord.Offset;\n            m_vertices[vertexIndexMiddle + 1].TexCoord = new Vector2(textureCoord.Offset.X + textureCoord.Size.X, textureCoord.Offset.Y);\n            m_vertices[vertexIndexMiddle + 2].TexCoord = new Vector2(textureCoord.Offset.X, textureCoord.Offset.Y + textureCoord.Size.Y);\n            m_vertices[vertexIndexMiddle + 3].TexCoord = m_vertices[vertexIndexMiddle + 1].TexCoord;\n            m_vertices[vertexIndexMiddle + 4].TexCoord = new Vector2(textureCoord.Offset.X + textureCoord.Size.X, textureCoord.Offset.Y + textureCoord.Size.Y);\n            m_vertices[vertexIndexMiddle + 5].TexCoord = m_vertices[vertexIndexMiddle + 2].TexCoord;\n\n            m_vertices[vertexIndexMiddle + 0].Color = color.ToVector4();\n            m_vertices[vertexIndexMiddle + 1].Color = color.ToVector4();\n            m_vertices[vertexIndexMiddle + 2].Color = color.ToVector4();\n            m_vertices[vertexIndexMiddle + 3].Color = color.ToVector4();\n            m_vertices[vertexIndexMiddle + 4].Color = color.ToVector4();\n            m_vertices[vertexIndexMiddle + 5].Color = color.ToVector4();\n\n            m_quadsCount++;\n        }\n\n        //  Finally draw all lines\n        static void DrawVertices()\n        {          \n            if (m_quadsCount <= 0) return;\n\n            RasterizerState.CullNone.Apply();\n            BlendState.NonPremultiplied.Apply();\n            DepthStencilState.None.Apply();\n            //SamplerState.LinearWrap;\n\n            Device device = MyMinerGame.Static.GraphicsDevice;\n            device.VertexDeclaration = MyVertexFormatPositionTextureColor.VertexDeclaration;\n\n            MyEffectHud effect = (MyEffectHud)MyRender.GetEffect(MyEffects.Hud);\n            effect.SetProjectionMatrix(m_orthographicProjectionMatrix);\n            effect.SetBillboardTexture(m_texture);\n            \n            effect.Begin();\n            device.DrawUserPrimitives(PrimitiveType.TriangleList, 0, m_quadsCount * MyHudConstants.TRIANGLES_PER_HUD_QUAD, m_vertices);\n            effect.End();\n        }\n\n        public static IList<MyEntity> GetHudEnemiesOnScreen() \n        {\n            return m_hudEnemies.GetEnemiesOnScreen();\n        }        \n\n        public static int GetHudEnemiesCount(float maxDistanceSqr) \n        {\n            int count = 0;\n            foreach (MyEntity enemy in m_hudEnemies.GetEnemiesAll())\n            {\n                float distanceSqr = Vector3.DistanceSquared(MyGuiScreenGamePlay.Static.ControlledEntity.WorldMatrix.Translation, enemy.GetPosition());\n                if (distanceSqr <= maxDistanceSqr)\n                {\n                    count++;\n                }\n            }\n            return count;\n        }\n\n        public static IList<MyEntity> GetHudEnemies() \n        {\n            return m_hudEnemies.GetEnemiesAll();\n        }\n\n        public static void ShowGPSPathToNextObjective(bool showMessageIfNotAvailable)\n        {\n            var entity = MyGuiScreenGamePlay.Static.ControlledEntity;\n            if (!showMessageIfNotAvailable &&\n                GetGPSGoalEntity(entity.GetPosition()) == null)\n            {\n                return;\n            }\n\n            MakeGPSPathDirty();\n            LastGPS = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n        }\n\n        public static bool IsGPSWorking()\n        {\n            return m_computingGPS;\n        }\n\n        public static bool CanDrawElement(MyCameraAttachedToEnum cameraAttachedTo, MyHudDrawElementEnum element)\n        {\n            return (m_drawForCameraAttachedTo[(int)cameraAttachedTo] & element) != 0;\n        }\n\n        public static float GetClosestOreDistanceSquared()\n        {\n            float closestDistanceSquared = float.MaxValue;\n            foreach(var ds in  m_nearestDistanceSquared)\n            {\n                if (ds < closestDistanceSquared)\n                    closestDistanceSquared = ds;\n            }\n            return closestDistanceSquared;\n        }\n\n    }\n\n    class MyHudEnemies \n    {\n        private List<float> m_distances;\n        private List<MyEntity> m_enemiesOnScreen;\n        private List<MyEntity> m_enemiesAll;\n\n        public MyHudEnemies() \n        {\n            m_distances = new List<float>();\n            m_enemiesOnScreen = new List<MyEntity>();\n            m_enemiesAll = new List<MyEntity>();\n        }\n\n        public void Add(MyEntity enemy, float distance) \n        {\n            if (distance <= MyHudConstants.DIRECTION_INDICATOR_MAX_SCREEN_TARGETING_DISTANCE)\n            {\n                AddEnemyOnScreen(enemy, distance);                \n            }\n            m_enemiesAll.Add(enemy);\n        }\n\n        private void AddEnemyOnScreen(MyEntity enemy, float distance) \n        {\n            int count = m_enemiesOnScreen.Count;\n            int index = 0;\n            int left = 0;\n            int right = count - 1;\n            int diff = right - left;\n\n            if(count > 0)\n            {                \n                while (diff > 1) \n                {\n                    index = GetHalfIndex(left, right);\n                    if (distance <= m_distances[index])\n                    {\n                        right = index;\n                    }\n                    else\n                    {\n                        left = index;\n                    }\n                    diff = right - left;\n                }\n                for (index = left; index <= right; index++) \n                {\n                    if (distance <= m_distances[index]) \n                    {\n                        break;\n                    }\n                }\n            }\n            AddEnemyOnScreen(enemy, distance, index);\n        }\n\n        private bool IsRightIndex(int index, float distance) \n        {\n            bool testLeft = index == 0 || m_distances[index - 1] < distance;\n            bool testRight = index == m_enemiesOnScreen.Count - 1 || m_distances[index] >= distance;\n            return testLeft && testRight;\n        }\n\n        private int GetHalfIndex(int from, int to) \n        {\n            int diff = to - from;\n            if (diff == 1) \n            {\n\n            }\n            float half = (float)(to - from) / 2f;\n            int index = from + (int)half;\n            return index;\n        }\n\n        private void AddEnemyOnScreen(MyEntity enemy, float distance, int index) \n        {\n            m_distances.Insert(index, distance);\n            m_enemiesOnScreen.Insert(index, enemy);\n        }\n\n        public void Clear() \n        {\n            m_distances.Clear();\n            m_enemiesOnScreen.Clear();\n            m_enemiesAll.Clear();\n        }\n\n        public List<MyEntity> GetEnemiesOnScreen() \n        {\n            return m_enemiesOnScreen;\n        }\n\n        public List<MyEntity> GetEnemiesAll() \n        {\n            return m_enemiesAll;\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/HUD/MyHudGPS.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWarsMath.Graphics;\nusing MinerWars.AppCode.Game.Render;\nusing MinerWars.AppCode.Game.Utils;\nusing SysUtils.Utils;\n\n//  Draws the GPS.\nnamespace MinerWars.AppCode.Game.HUD\n{\n    static class MyHudGPS\n    {\n        static MyHudGPS()\n        {\n            MyRender.RegisterRenderModule(MyRenderModuleEnum.GPS, \"GPS\", Draw, MyRenderStage.LODDrawStart, true);\n        }\n\n        public static void LoadContent()\n        {\n            MyMwcLog.WriteLine(\"MyHudGPS.LoadContent() - START\");\n            MyMwcLog.IncreaseIndent();\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyHudGPS::LoadContent\");\n\n            //MyModel model = MyModels.GetModelForDraw(MyModelsEnum.);\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();    \n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyHudGPS.LoadContent() - END\");\n        }\n\n        public static void UnloadContent()\n        {\n            MyMwcLog.WriteLine(\"MyHudGPS.UnloadContent - START\");\n            MyMwcLog.IncreaseIndent();\n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyHudGPS.UnloadContent - END\");\n        }\n\n        public static void Draw()\n        {\n            if (MyRender.GetCurrentLodDrawPass() == MyLodTypeEnum.LOD0)\n                MyHud.DrawGPS();\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/HUD/MyHudNotification.cs",
    "content": "using System;\nusing System.Text;\nusing System.Collections.Generic;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.App;\nusing KeenSoftwareHouse.Library.Extensions;\nusing System.Diagnostics;\nusing MinerWars.CommonLIB.AppCode.Generics;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.VideoMode;\n\nnamespace MinerWars.AppCode.Game.HUD\n{\n    internal static class MyHudNotification\n    {\n        // notification structure:\n        public class MyNotification\n        {\n            private MyNotification(int notificationTextId, string notificationString, MyGuiScreenGamePlayType LifeArea, float scale,\n                                  MyGuiFont font,\n                                  MyGuiDrawAlignEnum textAlign, int disapearTimeMs, MyEntity owner, bool showConfirmMessage = false,\n                                  object[] textFormatArguments = null)\n            {\n                Owner = owner;\n                m_originalText = notificationString;\n                m_notificationText = notificationString;\n                m_notificationTextID = (int)notificationTextId;\n                m_isTextDirty = false;\n\n                // always false:\n                m_isDisappeared = false;\n\n                m_actualScale = scale;                \n                m_actualFont = font;\n                m_actualTextAlign = textAlign;\n\n                m_textFormatArguments = textFormatArguments;\n\n                // timing:\n                m_disappearTimeMs = disapearTimeMs;\n                m_aliveTime = 0;\n\n                // life space;\n                m_lifeSpace = LifeArea;\n\n                // show standart message?\n                m_showConfirmMessage = showConfirmMessage;\n            }\n\n            // construction from: precopyed MyTextWrapperEnum in normalized position with scale and textColor, with textAlign\n            // and asociated user function or delegate returns approvement of the event with added textFormatArguments for MyTextWrapperEnum\n            // and also settings for the time disapeartin of the notification\n            public MyNotification(MyTextsWrapperEnum notificationText, MyGuiScreenGamePlayType LifeArea, float scale,\n                                  MyGuiFont font,\n                                  MyGuiDrawAlignEnum textAlign, int disapearTimeMs, MyEntity owner = null, bool showConfirmMessage = false,\n                                  object[] textFormatArguments = null)\n                : this((int)notificationText, null, LifeArea, scale, font, textAlign, disapearTimeMs, owner, showConfirmMessage, textFormatArguments)\n            {                \n            }\n\n            public MyNotification(String notificationText, MyGuiScreenGamePlayType LifeArea, float scale,\n                                  MyGuiFont font,\n                                  MyGuiDrawAlignEnum textAlign, int disapearTimeMs, MyEntity owner = null, bool showConfirmMessage = false,\n                                  object[] textFormatArguments = null)\n                : this(0, notificationText, LifeArea, scale, font, textAlign, disapearTimeMs, owner, showConfirmMessage, textFormatArguments)\n            {\n            }\n\n            public MyNotification(string notificationText, int disapearTimeMs, MyEntity owner = null,\n                                  object[] textFormatArguments = null)\n                : this(notificationText, GetCurrentScreen(), 1.0f, MyGuiConstants.DEFAULT_CONTROL_FONT,\n                       MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, disapearTimeMs, owner, false,\n                       textFormatArguments)\n            {\n                \n            }\n\n            public MyNotification(MyTextsWrapperEnum notificationText, int disapearTimeMs, MyEntity owner = null,\n                                  object[] textFormatArguments = null)\n                : this(notificationText, GetCurrentScreen(), 1.0f, MyGuiConstants.DEFAULT_CONTROL_FONT,\n                       MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, disapearTimeMs, owner, false,\n                       textFormatArguments)\n            {\n            }\n\n            public MyNotification(MyTextsWrapperEnum notificationText, MyEntity owner = null, bool showConfirmMessage = false,\n                                  object[] textFormatArguments = null)\n                : this(notificationText, DONT_DISAPEAR, owner, textFormatArguments)\n            {\n                m_showConfirmMessage = showConfirmMessage;\n            }\n\n            public MyNotification(MyTextsWrapperEnum notificationText, MyGuiFont font, MyEntity owner = null)\n                : this(notificationText, GetCurrentScreen(), 1.0f, font, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, DONT_DISAPEAR, owner)\n            {\n            }\n\n            public MyNotification(MyTextsWrapperEnum notificationText, MyGuiFont font, int disapearTimeMs, MyEntity owner = null, object[] textFormatArguments = null)\n                : this(notificationText, GetCurrentScreen(), 1.0f, font, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, disapearTimeMs, owner, false, textFormatArguments)\n            {\n            }\n\n            public MyNotification(string notificationText, MyGuiFont font, MyEntity owner = null, bool showConfirmMessage = false)\n                : this(notificationText, GetCurrentScreen(), 1.0f, font, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, DONT_DISAPEAR, owner)\n            {\n                m_showConfirmMessage = showConfirmMessage;\n            }\n\n            public MyNotification(string notificationText, MyGuiFont font, int disapearTimeMs, MyEntity owner = null, object[] textFormatArguments = null)\n                : this(notificationText, GetCurrentScreen(), 1.0f, font, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, disapearTimeMs, owner, false, textFormatArguments)\n            {\n            }\n\n            // Wait with notification until notification is proved:\n            public bool m_isDisappeared;\n            // Actual settings:\n            private int m_notificationTextID;\n            private object[] m_textFormatArguments;\n            private float m_actualScale;\n            private MyGuiFont m_actualFont;\n            private MyGuiDrawAlignEnum m_actualTextAlign;\n            private int m_aliveTime;\n            private int m_disappearTimeMs;\n            private MyGuiScreenGamePlayType m_lifeSpace;\n            private bool m_showConfirmMessage;\n            private string m_notificationText;\n            private string m_originalText;\n            private bool m_isTextDirty;\n\n            public event Action Confirmed;\n            public MyEntity Owner { get; private set; }\n\n            /// <summary>\n            /// Important notifications are added to hud even when it's full (other notifications are removed)\n            /// </summary>\n            public bool IsImportant { get; set; }\n\n            // Test if event delegate is present, if is present than call it,\n            // and also test if this notification doesnt have to disapear after the setting of the disapearing time\n            public bool IsDisappeared()\n            {\n                if (m_isDisappeared)\n                    return true;\n\n                bool isDisappeared = false;\n                if (m_showConfirmMessage)\n                {\n                    isDisappeared = CheckStandardDisapearKey();\n                    if (isDisappeared)\n                        if (Confirmed != null)\n                            Confirmed();\n                }\n                else\n                {\n                    isDisappeared = CheckTimeDisapear();\n                }\n\n                return isDisappeared;\n            }\n\n            // Test current time with disapear time:\n            public bool CheckTimeDisapear()\n            {\n                return m_disappearTimeMs == DONT_DISAPEAR ? false : (m_aliveTime >= m_disappearTimeMs);\n            }\n\n            public bool CheckStandardDisapearKey()\n            {\n                if (MyGuiManager.GetInput().IsGameControlPressed(MyGameControlEnums.NOTIFICATION_CONFIRMATION))\n                {\n                    return true;\n                }\n                return false;\n            }\n\n            public void SetTextDirty()\n            {\n                m_isTextDirty = true;\n            }\n\n            public MyGuiFont GetFont() \n            {\n                return m_actualFont;\n            }\n\n            public MyTextsWrapperEnum GetTextEnum()\n            {\n                return (MyTextsWrapperEnum) m_notificationTextID;\n            }\n\n            public string GetText() \n            {\n                if (string.IsNullOrEmpty(m_notificationText) || m_isTextDirty) \n                {\n                    if (m_textFormatArguments != null && m_textFormatArguments.Length > 0)\n                    {\n                        if (m_notificationTextID == 0)\n                            m_notificationText = String.Format(m_originalText, m_textFormatArguments);\n                        else\n                            m_notificationText = MyTextsWrapper.GetFormatString(GetTextEnum(), m_textFormatArguments);\n                    }\n                    else\n                    {\n                        if (m_notificationTextID == 0)\n                            m_notificationText = m_originalText;\n                        else\n                            m_notificationText = MyTextsWrapper.GetFormatString(GetTextEnum());\n                    }\n\n                    m_isTextDirty = false;\n                }\n                return m_notificationText;\n            }\n\n            public float GetScale()\n            {\n                return m_actualScale;\n            }\n\n            public object[] GetTextFormatArguments()\n            {\n                return m_textFormatArguments;\n            }\n\n            public void SetTextFormatArguments(object[] arguments)\n            {\n                m_textFormatArguments = arguments;\n                m_notificationText = null;\n                GetText();\n            }\n\n            public void AddAliveTime(int timeStep)\n            {\n                m_aliveTime += timeStep;\n            }\n\n            public void ResetAliveTime()\n            {\n                m_aliveTime = 0;\n                m_isDisappeared = false;\n            }\n\n            public MyGuiScreenGamePlayType GetNotificationScreenSpace()\n            {\n                return m_lifeSpace;\n            }\n\n            public bool HasDefaultDisappearMessage()\n            {\n                return m_showConfirmMessage;\n            }\n\n            public event Action Disappeared;\n            public void Disappear()\n            {\n                m_isDisappeared = true;\n                if (Disappeared != null)\n                    Disappeared();\n            }\n\n            public void Appear()\n            {\n                m_isDisappeared = false;\n            }\n        }\n\n\n        // Constants for notification disapear:\n        public const int DONT_DISAPEAR = 0;\n\n        private static string m_defaultNotificationDisapearMessage = MyTextsWrapper.GetFormatString(MyTextsWrapperEnum.DefaultNotificationDisapearMessage);\n        private static MyObjectsPool<StringBuilder> m_textsPool = new MyObjectsPool<StringBuilder>(MyNotificationConstants.MAX_DISPLAYED_NOTIFICATIONS_COUNT);\n        private static MyScreenNotifications[] m_screenNotifications;\n        private static MyGuiFont m_usedFont;\n        private static MyGuiScreenGamePlayType m_currentScreen;\n\n        private static Color m_fogColor;\n\n        // Set current space - screen:\n        public static void SetCurrentScreen(MyGuiScreenGamePlayType currentScreen = MyGuiScreenGamePlayType.GAME_STORY)\n        {\n            m_currentScreen = currentScreen;\n        }\n\n        public static MyGuiScreenGamePlayType GetCurrentScreen()\n        {\n            return m_currentScreen;\n        }\n\n        // initialize:\n        public static void LoadContent()\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyHudNotification::LoadContent\");\n\n            m_usedFont = MyGuiManager.GetFontMinerWarsWhite();\n            if (m_screenNotifications == null)\n            {\n                int allScreensCount = (int) MyGuiScreenGamePlayType.ALL_SCREEN_COUNT;\n                m_screenNotifications = new MyScreenNotifications[allScreensCount];\n                for (int i = 0; i < allScreensCount; ++i)\n                {\n                    m_screenNotifications[i] = new MyScreenNotifications();\n                }\n            }\n            m_fogColor = MyGuiConstants.SELECT_AMMO_TIP_BACKGROUND_FADE_COLOR;\n            m_fogColor.A = (byte) (m_fogColor.A * 0.85f);\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        // Add notification to the end of the list:\n        public static int AddNotification(MyNotification notification)\n        {\n            return AddNotification(notification, GetCurrentScreen());\n        }\n\n        // Add notification to the end of the list:\n        public static int AddNotification(MyNotification notification, MyGuiScreenGamePlayType currentScreen)\n        {\n            int currentScreenInt = (int)currentScreen;\n            notification.ResetAliveTime();\n            m_screenNotifications[currentScreenInt].Add(notification);\n            return m_screenNotifications[currentScreenInt].Count();\n        }\n\n        // Has any notifications on the current screen?\n        public static bool HasNotification()\n        {\n            return (m_screenNotifications[(int) GetCurrentScreen()].Count()) != 0;\n        }\n\n        // has notifications for the current screen:\n        public static bool HasNotification(MyGuiScreenGamePlayType forScreen)\n        {\n            return m_screenNotifications[(int) forScreen].Count() > 0;\n        }\n\n        // Flush all notifications for the game play type screen:\n        public static void ClearNotifications(MyGuiScreenGamePlayType forScreen)\n        {\n            m_screenNotifications[(int) forScreen].Clear();\n        }\n\n        // Removes all notification for owner\n        public static void ClearOwnerNotifications(MyEntity owner)\n        {\n            foreach (var notification in m_screenNotifications)\n            {\n                notification.RemoveByOwner(owner);\n            }\n        }\n\n        public static void ReloadTexts()\n        {\n            if (m_screenNotifications != null)\n            {\n                foreach (var notification in m_screenNotifications)\n                {\n                    notification.SetTextDirty();\n                }\n            }\n        }\n\n\n        // Flush all notifications:\n        public static void ClearAllNotifications()\n        {\n            if (m_screenNotifications != null)\n            {\n                foreach (MyScreenNotifications notifications in m_screenNotifications)\n                {\n                    notifications.Clear();\n                }\n            }\n        }\n\n        // Draw current notification - based on current screen:\n        public static void Draw()\n        {\n            m_screenNotifications[(int) GetCurrentScreen()].Draw();\n        }\n\n        // Update the current notification test - based on current screen:\n        public static void Update()\n        {\n            m_screenNotifications[(int) GetCurrentScreen()].Update();\n        }\n\n        public static bool HandleInput(MyGuiInput input) \n        {\n            return m_screenNotifications[(int)GetCurrentScreen()].HandleInput(input);\n        }\n\n        public static void SetNotificationsPosition(MyGuiScreenGamePlayType screen, Vector2 position)\n        {\n            m_screenNotifications[(int) screen].Position = position;\n        }\n\n        private class MyScreenNotifications\n        {\n            private List<MyNotification> m_notifications;                        \n\n            public Vector2 Position { get; set; }\n\n            public MyScreenNotifications()\n            {\n                m_notifications = new List<MyNotification>();\n                Position = MyNotificationConstants.DEFAULT_NOTIFICATION_MESSAGE_NORMALIZED_POSITION;\n            }\n\n            List<Vector2> m_textSizes = new List<Vector2>(MyNotificationConstants.MAX_DISPLAYED_NOTIFICATIONS_COUNT);\n            List<StringBuilder> m_texts = new List<StringBuilder>(MyNotificationConstants.MAX_DISPLAYED_NOTIFICATIONS_COUNT);\n\n            private void ClearTexts() \n            {\n                m_textSizes.Clear();\n                foreach (StringBuilder text in m_texts)\n                {\n                    text.Clear();                                        \n                }\n                m_textsPool.DeallocateAll();\n                m_texts.Clear();\n            }\n\n            public void Draw()\n            {\n                ClearTexts();\n                int visibleCount = Math.Min(m_notifications.Count, MyNotificationConstants.MAX_DISPLAYED_NOTIFICATIONS_COUNT);\n\n                for (int i = 0; i < visibleCount; i++)\n                {\n                    MyNotification actualNotification = m_notifications[i];                    \n                    StringBuilder messageStringBuilder = m_textsPool.Allocate();\n                    Debug.Assert(actualNotification != null);\n                    Debug.Assert(messageStringBuilder != null);\n\n                    bool hasConfirmation = actualNotification.HasDefaultDisappearMessage();\n                    \n                    messageStringBuilder.Append(actualNotification.GetText());                    \n                    \n                    if (hasConfirmation)\n                    {                        \n                        messageStringBuilder.AppendLine();\n                        messageStringBuilder.ConcatFormat(m_defaultNotificationDisapearMessage, MyGuiManager.GetInput().GetGameControlTextEnum(MyGameControlEnums.NOTIFICATION_CONFIRMATION));                            \n                    }\n\n                    // draw background:\n                    Vector2 textSize = MyGuiManager.GetNormalizedSize(m_usedFont, messageStringBuilder, actualNotification.GetScale());\n                    \n                    m_textSizes.Add(textSize);\n                    m_texts.Add(messageStringBuilder);\n                }\n\n                MyGuiManager.BeginSpriteBatch();\n                var offset = new Vector2(VideoMode.MyVideoModeManager.IsTripleHead() ? -1 : 0, 0);\n\n                \n                // Draw fog\n                Vector2 notificationPosition = Position;\n\n                for (int i = 0; i < visibleCount; i++)\n                {\n                    Vector2 fogFadeSize = m_textSizes[i] * new Vector2(1.6f, 8.0f);\n\n                        MyGuiManager.DrawSpriteBatch(MyGuiManager.GetFogSmallTexture(), notificationPosition + offset, fogFadeSize,\n                                m_fogColor,\n                                MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, MyVideoModeManager.IsTripleHead());\n                    \n                    notificationPosition.Y += m_textSizes[i].Y;\n                }\n\n                // Draw texts\n                notificationPosition = Position;\n                for (int i = 0; i < visibleCount; i++)\n                {\n                    MyNotification actualNotification = m_notifications[i];\n\n                    MyGuiManager.DrawString(actualNotification.GetFont(), m_texts[i], notificationPosition + offset,\n                                            actualNotification.GetScale(), Color.White,\n                                            MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, MyVideoModeManager.IsTripleHead());\n                    notificationPosition.Y += m_textSizes[i].Y;\n                }\n                MyGuiManager.EndSpriteBatch();\n            }\n\n            public void Update()\n            {\n                for (int i = 0; i < Math.Min(m_notifications.Count, MyNotificationConstants.MAX_DISPLAYED_NOTIFICATIONS_COUNT); i++)\n                {\n                    m_notifications[i].AddAliveTime(MyConstants.PHYSICS_STEP_SIZE_IN_MILLISECONDS);\n                }\n\n                for (int i = m_notifications.Count-1; i >= 0; i--)\n                {\n                    var notification = m_notifications[i];\n                    if (notification.IsDisappeared())\n                    {\n                        m_notifications.Remove(notification);\n                    }\n                }\n            }\n\n            public bool HandleInput(MyGuiInput input) \n            {\n                bool result = false;\n                foreach (MyHudNotification.MyNotification notification in m_notifications) \n                {\n                    if(notification.HasDefaultDisappearMessage() && input.IsGameControlPressed(MyGameControlEnums.USE))\n                    {\n                        notification.Disappear();\n                        result = true;\n                    }\n                }\n                return result;\n            }\n\n            public void Add(MyNotification notification)\n            {\n                Debug.Assert(notification != null, \"you cannot add null notification\");\n                if (!m_notifications.Contains(notification))\n                {\n                    if (m_notifications.Count >= MyNotificationConstants.MAX_DISPLAYED_NOTIFICATIONS_COUNT)\n                    {\n                        if (!notification.IsImportant)\n                            return;\n\n                        int index = m_notifications.FindIndex(IsNotImportant);\n                        if (index != -1)\n                        {\n                            m_notifications.RemoveAt(index);\n                        }\n                    }\n\n                    m_notifications.Add(notification);\n                }\n            }\n\n            bool IsNotImportant(MyNotification notification)\n            {\n                return !notification.IsImportant;\n            }\n\n            public void Remove(MyNotification notification)\n            {\n                m_notifications.Remove(notification);\n            }\n\n            public void RemoveByOwner(MyEntity owner)\n            {\n                for (int i = 0; i < m_notifications.Count; )\n                {\n                    if (m_notifications[i].Owner == owner)\n                    {\n                        m_notifications.RemoveAt(i);\n                    }\n                    else\n                    {\n                        i++;\n                    }\n                }\n            }\n\n            public void Clear()\n            {\n                m_notifications.Clear();\n            }\n\n            public void SetTextDirty()\n            {\n                foreach (var notification in m_notifications)\n                {\n                    notification.SetTextDirty();\n                }\n            }\n\n            public int Count()\n            {\n                return m_notifications.Count;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/HUD/MyHudRadar.cs",
    "content": "﻿//using System;\n//using System.Collections.Generic;\n//using MinerWarsMath;\n//using MinerWarsMath.Graphics;\n//using MinerWars.AppCode.App;\n//using MinerWars.AppCode.Game.GUI;\n//using MinerWars.AppCode.Game.GUI.Core;\n//using MinerWars.AppCode.Game.Entities;\n//using MinerWars.AppCode.Game.Prefabs;\n//using MinerWars.AppCode.Game.Radar;\n//using MinerWars.AppCode.Game.Utils;\n//using MinerWars.AppCode.Game.Voxels;\n//using MinerWars.AppCode.Physics;\n//using MinerWars.CommonLIB.AppCode.Generics;\n//using SysUtils.Utils;\n//using MinerWars.CommonLIB.AppCode.Utils;\n//using MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\n//using MinerWars.AppCode.Game.World.Global;\n\n////  This class draws 3D spherical radar with highlighted solar plane, distance to sun, phys objects as points, asteroids, etc\n////  For drawing we use effect, vertex buffer, etc from MyHud; But here we use perspective projection.\n\n//namespace MinerWars.AppCode.Game.HUD\n//{\n//    using Managers.Graphics.Textures;\n//    using Managers.PhysicsManager.Physics;\n//    using MinerWars.AppCode.Game.Missions;\n//    using MinerWars.AppCode.Game.Managers.Session;\n//    using MinerWars.AppCode.Game.Renders;\n//    using MinerWars.CommonLIB.AppCode.Networking;\n//    using MinerWars.AppCode.Game.Entities.Prefabs;\n//    using MinerWars.AppCode.Game.Effects;\n//    using MinerWars.AppCode.Game.Render;\n//    using System.Diagnostics;\n\n//    //  We use this class for depth sorting\n//    public class MyPolygon : IComparable\n//    {\n//        public List<VertexPositionColorTexture> Points;\n//        public int NumPoints;\n//        float? m_averageZ;\n//        float? m_averageY;\n\n//        public MyPolygon()\n//        {\n//            Points = new List<VertexPositionColorTexture>(MyHudConstants.TRIANGLES_PER_HUD_QUAD * 3);\n//        }\n\n//        //  IMPORTANT: Must be called before we start adding points!\n//        public void Start()\n//        {\n//            Points.Clear();\n//            NumPoints = 0;\n//            m_averageY = null;\n//            m_averageZ = null;\n//        }\n\n//        //  IMPORTANT: Must be called after all points are added!\n//        public void Finish()\n//        {\n//            NumPoints = Points.Count;\n\n//            //  Calc average Y and Z of this poly\n//            m_averageY = 0;\n//            m_averageZ = 0;\n//            foreach (VertexPositionColorTexture vert in Points)\n//            {\n//                m_averageY += vert.Position.Y;\n//                m_averageZ += vert.Position.Z;\n//            }\n//            m_averageY /= NumPoints;\n//            m_averageZ /= NumPoints;\n//        }\n\n//        public float GetAverageY()\n//        {\n//            return m_averageY.Value;\n//        }\n\n//        //  Used to sort methods base on Z-values\n//        public int CompareTo(object obj)\n//        {\n//            //  m_averageZ could be null, but we don't check it here. If it null, than that \n//            //  means Finish() wasn't called so poly doesn't know its distance\n//            return m_averageZ.Value.CompareTo(((MyPolygon)obj).m_averageZ.Value);\n//        }\n//    }    \n\n//    static class MyHudRadar\n//    {\n//        //  This enums must have same name as source texture files used to create texture atlas\n//        //  And only \".tga\" files are supported.\n//        //  IMPORTANT: If you change order or names in this enum, update it also in MyEnumsToStrings\n//        public enum MyHudRadarTexturesEnum : byte\n//        {\n//            Arrow,\n//            ImportantObject,\n//            LargeShip,\n//            Line,\n//            RadarBackground,\n//            RadarPlane,\n//            SectorBorder,\n//            SmallShip,\n//            Sphere,\n//            SphereGrid,\n//            Sun,\n//            OreDeposit_Treasure,\n//            OreDeposit_Helium,\n//            OreDeposit_Ice,\n//            OreDeposit_Iron,\n//            OreDeposit_Lava,\n//            OreDeposit_Gold,\n//            OreDeposit_Platinum,\n//            OreDeposit_Silver,\n//            OreDeposit_Silicon,\n//            OreDeposit_Organic,\n//            OreDeposit_Nickel,\n//            OreDeposit_Magnesium,\n//            OreDeposit_Uranite,\n//            OreDeposit_Cobalt,\n//            OreDeposit_Snow\n//        }\n\n//        class MyTypeAndColor\n//        {\n//            public MyHudRadarTexturesEnum Type { get; set; }\n//            public Color Color { get; set; }\n\n//            public MyTypeAndColor(MyHudRadarTexturesEnum type, Color color) \n//            {\n//                Type = type;\n//                Color = color;\n//            }\n//        }\n\n//        static readonly MyTypeAndColor[] m_oreTypesAndColors;\n\n//        static Matrix m_perspectiveProjectionMatrix;\n//        static Matrix m_projectionMatrix2D;\n\n//        static Texture2D m_texture;\n//        static MyAtlasTextureCoordinate[] m_textureCoords;\n//        static VertexPositionColorTexture[] m_vertices;\n//        static MyStencilMask m_stencilOpaque;\n\n//        //  Parameters updates/recalculated every update\n//        static Vector3 m_actualCameraPosition;                                         //  Camera rotated every update, used only for polyline calculations\n//        static MyPlane m_actualCameraPlane;\n//        static List<MyPolygon> m_polygons;\n//        static MyObjectsPoolSimple<MyPolygon> m_preAllocPolys;\n//        static int m_quadsCount;\n//        static float m_zoom;\n//        static VertexPositionColorTexture[] outPoints;\n//        static VertexPositionColorTexture[] inPoints;\n//        static Vector3 m_radarCenter;\n\n//        static Vector3[] m_sectorCornersTemp = new Vector3[MyMwcSectorConstants.SAFE_SECTOR_SIZE_BOUNDING_BOX_CORNERS.Length];\n\n//        // orientation matrix which we use to rotate objects on radar according to player rotation\n//        static Matrix m_orientationMatrix;\n\n//        private static bool m_blinkingCurrentDisplayed = false;\n//        private static int m_blinkingLastTime = 0;\n//        private static int m_blinkingInterval = 0;\n\n//        private static List<MyDetectedObject> m_detectedObjects = new List<MyDetectedObject>();\n\n//        static MyHudRadar() \n//        {\n//            m_oreTypesAndColors = new MyTypeAndColor[Enum.GetValues(typeof(MyMwcVoxelMaterialsEnum)).Length];\n//            m_oreTypesAndColors[(int)MyMwcVoxelMaterialsEnum.Cobalt_01] = new MyTypeAndColor(MyHudRadarTexturesEnum.OreDeposit_Cobalt, Color.Brown);\n//            m_oreTypesAndColors[(int)MyMwcVoxelMaterialsEnum.Gold_01] = new MyTypeAndColor(MyHudRadarTexturesEnum.OreDeposit_Gold, Color.Gold);\n//            m_oreTypesAndColors[(int)MyMwcVoxelMaterialsEnum.Helium3_01] = new MyTypeAndColor(MyHudRadarTexturesEnum.OreDeposit_Helium, Color.Blue);\n//            m_oreTypesAndColors[(int)MyMwcVoxelMaterialsEnum.Helium4_01] = new MyTypeAndColor(MyHudRadarTexturesEnum.OreDeposit_Helium, Color.Blue);\n//            m_oreTypesAndColors[(int)MyMwcVoxelMaterialsEnum.Ice_01] = new MyTypeAndColor(MyHudRadarTexturesEnum.OreDeposit_Ice, Color.Aquamarine);\n//            m_oreTypesAndColors[(int)MyMwcVoxelMaterialsEnum.Iron_01] = new MyTypeAndColor(MyHudRadarTexturesEnum.OreDeposit_Iron, Color.Red);\n//            m_oreTypesAndColors[(int)MyMwcVoxelMaterialsEnum.Iron_02] = new MyTypeAndColor(MyHudRadarTexturesEnum.OreDeposit_Iron, Color.Red);\n//            m_oreTypesAndColors[(int)MyMwcVoxelMaterialsEnum.Lava_01] = new MyTypeAndColor(MyHudRadarTexturesEnum.OreDeposit_Lava, Color.Red);\n//            m_oreTypesAndColors[(int)MyMwcVoxelMaterialsEnum.Magnesium_01] = new MyTypeAndColor(MyHudRadarTexturesEnum.OreDeposit_Magnesium, Color.OrangeRed);\n//            m_oreTypesAndColors[(int)MyMwcVoxelMaterialsEnum.Nickel_01] = new MyTypeAndColor(MyHudRadarTexturesEnum.OreDeposit_Nickel, Color.SaddleBrown);\n//            m_oreTypesAndColors[(int)MyMwcVoxelMaterialsEnum.Organic_01] = new MyTypeAndColor(MyHudRadarTexturesEnum.OreDeposit_Organic, Color.GreenYellow);\n//            m_oreTypesAndColors[(int)MyMwcVoxelMaterialsEnum.Platinum_01] = new MyTypeAndColor(MyHudRadarTexturesEnum.OreDeposit_Platinum, Color.LightGray);\n//            m_oreTypesAndColors[(int)MyMwcVoxelMaterialsEnum.Silicon_01] = new MyTypeAndColor(MyHudRadarTexturesEnum.OreDeposit_Silicon, Color.Silver);\n//            m_oreTypesAndColors[(int)MyMwcVoxelMaterialsEnum.Silver_01] = new MyTypeAndColor(MyHudRadarTexturesEnum.OreDeposit_Silver, Color.Silver);\n//            m_oreTypesAndColors[(int)MyMwcVoxelMaterialsEnum.Snow_01] = new MyTypeAndColor(MyHudRadarTexturesEnum.OreDeposit_Snow, Color.Snow);\n//            m_oreTypesAndColors[(int)MyMwcVoxelMaterialsEnum.Treasure_01] = new MyTypeAndColor(MyHudRadarTexturesEnum.OreDeposit_Treasure, Color.YellowGreen);\n//            m_oreTypesAndColors[(int)MyMwcVoxelMaterialsEnum.Treasure_02] = new MyTypeAndColor(MyHudRadarTexturesEnum.OreDeposit_Treasure, Color.YellowGreen);\n//            m_oreTypesAndColors[(int)MyMwcVoxelMaterialsEnum.Uranite_01] = new MyTypeAndColor(MyHudRadarTexturesEnum.OreDeposit_Uranite, Color.LightGreen);            \n//        }\n\n//        public static void LoadContent()\n//        {\n//            MyMwcLog.WriteLine(\"MyHudRadar.LoadContent() - START\");\n//            MyMwcLog.IncreaseIndent();\n//            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyHudRadar::LoadContent\");\n\n//            m_stencilOpaque = new MyStencilMask(0.5f, \"RadarStencil\");\n//            m_stencilOpaque.LoadContent();\n\n//            UpdateScreenSize();\n\n//            ////  Initial zoom level is in the middle of min and max zoom lovels\n//            //m_zoom = (MyHudConstants.RADAR_ZOOM_MIN + MyHudConstants.RADAR_ZOOM_MAX) / 2.0f;\n\n//            //  Initial zoom level is in 90% of min and max zoom lovels\n//            m_zoom = (MyHudConstants.RADAR_ZOOM_MAX - MyHudConstants.RADAR_ZOOM_MIN) * 0.1f + MyHudConstants.RADAR_ZOOM_MIN;\n\n//            m_vertices = new VertexPositionColorTexture[MyHudConstants.MAX_HUD_RADAR_QUADS_COUNT * MyHudConstants.VERTEXES_PER_HUD_QUAD];\n\n//            m_perspectiveProjectionMatrix = Matrix.CreatePerspectiveFieldOfView(MyHudConstants.RADAR_FIELD_OF_VIEW, MyCamera.HudRadarViewport.Width / (float)MyCamera.HudRadarViewport.Height /*MyHudConstants.RADAR_ASPECT_RATIO*/, 0.1f, 10000);\n//            m_projectionMatrix2D = Matrix.CreateOrthographicOffCenter(0.0f, MyCamera.HudRadarViewport.Width, MyCamera.HudRadarViewport.Height, 0.0f, 0.0f, 1000);\n//            m_polygons = new List<MyPolygon>(MyHudConstants.MAX_HUD_QUADS_COUNT);\n\n//            m_preAllocPolys = new MyObjectsPoolSimple<MyPolygon>(MyHudConstants.MAX_HUD_QUADS_COUNT);\n\n//            outPoints = new VertexPositionColorTexture[12];\n//            inPoints = new VertexPositionColorTexture[12];\n\n//            MyUtils.LoadTextureAtlas((MyCustomContentManager)MyMinerGame.Static.Content, MyEnumsToStrings.HudRadarTextures, \"Textures\\\\HUD\\\\HudRadarAtlas\", out m_texture, out m_textureCoords);\n\n//            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n//            MyMwcLog.DecreaseIndent();\n//            MyMwcLog.WriteLine(\"MyHudRadar.LoadContent() - END\");\n//        }\n\n//        public static void UnloadContent()\n//        {\n//            if (m_stencilOpaque != null) m_stencilOpaque.UnloadContent();\n//        }\n\n//        public static void UpdateScreenSize()\n//        {\n//            if (m_stencilOpaque != null) m_stencilOpaque.UpdateScreenSize(MyCamera.HudRadarViewport);\n//            m_radarCenter = new Vector3(MyCamera.HudRadarViewport.Width / 2f, 0, MyCamera.HudRadarViewport.Height / 2f);\n//        }\n\n//        //  Zooms in or out by specified delta. If zoomIn = true, then we are zooming in. If it's false, we are zooming out.\n//        public static void Zoom(bool zoomIn)\n//        {\n//            if (zoomIn == true)\n//            {\n//                m_zoom -= MyHudConstants.RADAR_ZOOM_STEP;\n//            }\n//            else\n//            {\n//                m_zoom += MyHudConstants.RADAR_ZOOM_STEP;\n//            }\n\n//            m_zoom = MathHelper.Clamp(m_zoom, MyHudConstants.RADAR_ZOOM_MIN, MyHudConstants.RADAR_ZOOM_MAX);\n//        }\n\n//        public static float GetRadarZoomLevelInversed()\n//        {\n//            return MyHudConstants.RADAR_ZOOM_MAX - m_zoom + 1;\n//        }\n\n//        static void UpdateRadarCamera()\n//        {\n//            m_actualCameraPosition = MyHudConstants.ORIGINAL_CAMERA_POSITON;\n//            m_actualCameraPlane = new MyPlane(Vector3.Zero, Vector3.Up);\n//        }\n\n//        public static void Draw()\n//        {\n//            MyCamera.EnableHudRadar();\n\n//            m_orientationMatrix = Matrix.Invert(MySession.PlayerShip.WorldMatrix); // RBEl0 have identity matrix should be same.\n//            m_orientationMatrix.Translation = Vector3.Zero;\n\n//            //MyMinerGame.Static.GraphicsDevice.Clear(ClearOptions.Stencil, Color.White, 0.0f, 0);\n//            m_stencilOpaque.DrawStencilMask();\n\n//            ClearQuads();\n//            UpdateRadarCamera();\n\n//            bool displayDetectedObjects = true;\n//            if (MySession.PlayerShip.ShipRadar != null && MySession.PlayerShip.ShipRadar.IsNearRadarJammerOrSunWind())\n//            {\n//                if (MyMinerGame.TotalGamePlayTimeInMilliseconds - m_blinkingLastTime >= m_blinkingInterval)\n//                {\n//                    m_blinkingCurrentDisplayed = !m_blinkingCurrentDisplayed;\n//                    m_blinkingLastTime = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n//                    m_blinkingInterval = MyMwcUtils.GetRandomInt(50, 150);\n//                }                \n//                displayDetectedObjects = m_blinkingCurrentDisplayed;\n//            }\n\n//            if (displayDetectedObjects)\n//            {\n//                AddFromShipRadar();\n//            }\n\n//            AddSunSphere();\n//            AddSectorBorderLines();\n//            AddPlayer();\n//            AddMissions();\n\n//            DrawBackground();\n//            DrawVertices();\n//        }                \n\n//        private static void AddFromShipRadar()\n//        {\n//            if (MySession.PlayerShip.ShipRadar != null)\n//            {\n//                MySession.PlayerShip.ShipRadar.GetDetectedObjects(ref m_detectedObjects);\n//                foreach (MyDetectedObject myDetectedObject in m_detectedObjects)\n//                {\n//                    Color color = MyHudConstants.LARGESHIP_MARKER_COLOR;\n//                    MyHudRadarTexturesEnum type = MyHudRadarTexturesEnum.Sphere;\n//                    Vector3 forward = Vector3.Forward;\n//                    float sizeAsAtDistance = 600f;\n\n//                    if (myDetectedObject.Object is MyEntity)\n//                    {\n//                        MyEntity entity = myDetectedObject.Object as MyEntity;\n//                        if (MyMissions.IsMissionEntity(entity))\n//                        {\n//                            color = MyHudConstants.MISSION_MARKER_COLOR;\n//                        }\n//                        else\n//                        {\n//                            MyFactionRelationEnum status = MyFactions.GetFactionsRelation(entity, MySession.PlayerShip);\n//                            switch (status)\n//                            {\n//                                case MyFactionRelationEnum.Friend:\n//                                    color = MyHudConstants.FRIEND_MARKER_COLOR;\n//                                    break;\n\n//                                case MyFactionRelationEnum.Enemy:\n//                                    color = MyHudConstants.BOT_MARKER_COLOR;\n//                                    break;\n//                            }\n//                        }\n//                        forward = entity.WorldMatrix.Forward;\n\n//                        // ship\n//                        if (myDetectedObject.Object is MyShip ||\n//                            ((myDetectedObject.Object is MyPrefabBase) && (myDetectedObject.Object as MyPrefabBase).PrefabCategory == Prefabs.CategoryTypesEnum.LARGE_SHIPS) ||\n//                            myDetectedObject.Object is MyPrefabContainer)\n//                        {\n//                            type = MyHudRadarTexturesEnum.LargeShip;\n//                        }\n//                        else\n//                        {\n//                            sizeAsAtDistance = 700f;\n//                        }\n//                        AddIconWithAxisLines(myDetectedObject.Position, color, type, sizeAsAtDistance, forward);\n//                    }\n//                    // ore deposit\n//                    else if (myDetectedObject.Object is MyVoxelMapOreDepositCell)\n//                    {\n//                        MyVoxelMapOreDepositCell oreDeposit = (MyVoxelMapOreDepositCell)myDetectedObject.Object;\n//                        bool detectedAll = false;\n//                        foreach (MyDetectorBase detectorBase in myDetectedObject.DetectedBy)\n//                        {\n//                            if (detectorBase is MyAllKnowingRadar || detectorBase is MyPulseDetector)\n//                            {\n//                                detectedAll = true;\n//                                break;\n//                            }\n//                        }\n//                        if (detectedAll)\n//                        {\n//                            foreach (MyMwcVoxelMaterialsEnum voxelMaterial in oreDeposit.GetOreWithContent())\n//                            {\n//                                AddOreDeposit(myDetectedObject.Position, voxelMaterial, forward);\n//                            }\n//                        }\n//                        else\n//                        {\n//                            foreach (MyDetectorBase detectorBase in myDetectedObject.DetectedBy)\n//                            {\n//                                if (detectorBase is MyOreDetector)\n//                                {\n//                                    MyOreDetector oreDetector = detectorBase as MyOreDetector;\n//                                    AddOreDeposit(myDetectedObject.Position, oreDetector.OreMaterial, forward);\n//                                }\n//                            }\n//                        }\n//                    }\n//                    else\n//                    {\n//                        throw new MyMwcExceptionApplicationShouldNotGetHere();\n//                    }\n//                }                \n//            }\n//        }\n\n//        private static void AddOreDeposit(Vector3 position, MyMwcVoxelMaterialsEnum voxelMaterial, Vector3 forward)\n//        {\n//            MyTypeAndColor oreTypeAndColor = m_oreTypesAndColors[(int)voxelMaterial];            \n//            AddIconWithAxisLines(position, oreTypeAndColor.Color, oreTypeAndColor.Type, 300f, forward);\n//        }\n\n//        private static void AddMissions()\n//        {\n//            var list = MyMissions.GetAvailableMissions();\n//            foreach (var mission in list)\n//            {\n//                //MyGuiScreenGamePlay.Static.GetSectorGroup()\n//                if (mission.HasLocationEntity())\n//                    AddIconWithAxisLines(mission.Location.Entity.GetPosition(), MyHudConstants.MISSION_MARKER_COLOR, MyHudRadarTexturesEnum.ImportantObject, 600f);\n//            }\n\n//            if (MyMissions.ActiveMission != null)\n//            {\n//                foreach (var activeSubMission in MyMissions.ActiveMission.ActiveObjectives)\n//                {\n//                    if (activeSubMission.HasLocationEntity())\n//                    {\n//                        AddIconWithAxisLines(activeSubMission.Location.Entity.GetPosition(), MyHudConstants.MISSION_MARKER_COLOR, MyHudRadarTexturesEnum.ImportantObject, 600f);\n//                    }\n//                }\n//            }\n//        }\n\n//        private static void AddIconWithAxisLines(Vector3 position, Color color, MyHudRadarTexturesEnum type, float sizeAsAtDistance, Vector3? forwardVector = null)\n//        {\n//            Vector3 dir = new Vector3();\n//            Vector3 point = new Vector3();\n//            Vector3 projectedPoint = new Vector3();\n//            float alpha = 1;\n\n//            //bool physObjectIsInUpperPartOfPlane = true;\n\n//            if (MySession.PlayerShip.Config.RadarType.Current == MyHudRadarTypesEnum.Solar2D)\n//            {\n//                //  In solar radar - we find direction from player to phys object then rotate it to according to vertical player rotation, then project it on solar plane and then draw\n//                dir = position - MySession.PlayerShip.GetPosition();\n//                //if (Vector3.Distance(position, Vector3.Down) < Vector3.Distance(position, Vector3.Up))\n//                //    physObjectIsInUpperPartOfPlane = false;\n//                float length = dir.Length();\n//                dir = Vector3.Transform(dir, m_orientationMatrix);\n//                MyUtils.ProjectPointOnPlane(ref dir, ref MyConstants.VECTOR3_UP, out dir);\n//                dir = MyMwcUtils.Normalize(dir) * length;\n//                dir = Rescale(dir);\n//                point = m_radarCenter + dir;\n//                projectedPoint = point;\n//            }\n//            else if (MySession.PlayerShip.Config.RadarType.Current == MyHudRadarTypesEnum.Player2D)\n//            {\n//                //  In players radar we find direction from player to phys object, then rotate it around players up vector and then project it on players plane\n//                dir = position - MySession.PlayerShip.GetPosition();\n//                //if (Vector3.Distance(position, MySession.PlayerShip.GetPosition() + MySession.PlayerShip.WorldMatrix.Down) < Vector3.Distance(position, MySession.PlayerShip.GetPosition() + MySession.PlayerShip.WorldMatrix.Up))\n//                //    physObjectIsInUpperPartOfPlane = false;\n//                float length = dir.Length();\n//                //rotation = CalculateFullAngle(Vector3.Forward, new Vector3(MyGuiScreenGameBase.Static.PlayerShip.WorldMatrix.Forward.X, 0, MyGuiScreenGameBase.Static.PlayerShip.WorldMatrix.Forward.Z), Vector3.Up);\n//                dir = Vector3.Transform(dir, m_orientationMatrix); //Vector3.Transform(dir, Matrix.CreateFromAxisAngle(MyGuiScreenGameBase.Static.PlayerShip.WorldMatrix.Up, rotation));\n//                MyUtils.ProjectPointOnPlane(ref dir, MySession.PlayerShip.WorldMatrix.Up, out dir);\n//                dir = MyMwcUtils.Normalize(dir) * length;\n//                dir = Rescale(dir);\n//                projectedPoint = m_radarCenter + dir;\n//            }\n//            else\n//            {\n\n//                point = Vector3.Transform(position - MyCamera.Position, MyCamera.ViewMatrixAtZero);\n\n//                //if (Vector3.Distance(position, MySession.PlayerShip.GetPosition() + MySession.PlayerShip.WorldMatrix.Down) <\n//                //    Vector3.Distance(position, MySession.PlayerShip.GetPosition() + MySession.PlayerShip.WorldMatrix.Up))\n//                //    physObjectIsInUpperPartOfPlane = false;\n\n//                projectedPoint = new Vector3(point.X, 0, point.Z);\n\n//                //  Calculate fade with distance, anything past half range should begin to fade\n//                alpha = 1;\n//            }\n\n//            if (alpha > 0)\n//            {\n//                if (MySession.PlayerShip.Config.RadarType.Current == MyHudRadarTypesEnum.Player2D ||\n//                    MySession.PlayerShip.Config.RadarType.Current == MyHudRadarTypesEnum.Solar2D)\n//                {\n//                    //  rotation around billboad center so billboard points to correct direction\n//                    float rot;\n//                    if (forwardVector.HasValue)\n//                        rot = -CalculateFullAngle(forwardVector.Value, new Vector3(MySession.PlayerShip.WorldMatrix.Forward.X, 0, MySession.PlayerShip.WorldMatrix.Forward.Z), Vector3.Up);\n//                    else\n//                        rot = 0;\n//                    Add2DBillboard(type, new Vector3(projectedPoint.X, projectedPoint.Z, -1), MyHudConstants.RADAR_PHYS_OBJECT_SIZE, rot, color * alpha);\n\n//                    //float arrowRotation = (physObjectIsInUpperPartOfPlane) ? 0 : MathHelper.Pi;\n//                    //Add2DBillboard(MyHudRadarTexturesEnum.Arrow, new Vector3(projectedPoint.X + 10, projectedPoint.Z, -1), MyHudConstants.RADAR_PHYS_OBJECT_SIZE, arrowRotation, color * alpha);\n//                }\n//                else\n//                {\n//                    Color lineVerticalColor;\n//                    Color pointColor;\n//                    if (point.Y < 0)\n//                    {\n//                        lineVerticalColor = Color.DarkGray * ((180.0f / 255.0f) * alpha);\n//                        pointColor = Color.Red * alpha;\n//                    }\n//                    else\n//                    {\n//                        lineVerticalColor = MyHudConstants.HUD_COLOR * alpha;\n//                        pointColor = Color.Red * alpha;\n//                    }\n\n//                    Vector3 rescaledPoint = Rescale(point);\n//                    Vector3 rescaledProjectedPoint = Rescale(projectedPoint);                    \n\n//                    if ((rescaledPoint - rescaledProjectedPoint).Length() > MyMwcMathConstants.EPSILON)\n//                    {\n//                        // we calculate object size scale from distance from camere, because we want same object icon size on screen all time                                                                                                \n//                        AddLine3D(rescaledPoint, rescaledProjectedPoint, lineVerticalColor, lineVerticalColor, MyHudConstants.DIRECTION_TO_SUN_LINE_THICKNESS);\n\n//                        //AddBillboard(type, rescaledPoint + MyHudConstants.HUD_RADAR_PHYS_OBJECT_POINT_DELTA,\n//                        //    Rescale(MyHudConstants.RADAR_PHYS_OBJECT_SIZE) * 3, 0, color);\n//                        float noScaleSize = GetNoscaleSizeFromPerspectiveDistance(rescaledPoint, MyHudConstants.RADAR_PHYS_OBJECT_SIZE, sizeAsAtDistance);\n//                        AddBillboard(type, rescaledPoint + MyHudConstants.HUD_RADAR_PHYS_OBJECT_POINT_DELTA, noScaleSize, 0, color);\n\n//                        //  Draw line from player to where object intersect horizontal plane\n//                        Color lineHorizontalColor = Color.DimGray * alpha;\n//                        AddLine3D(Vector3.Zero, rescaledProjectedPoint, lineHorizontalColor, lineHorizontalColor, MyHudConstants.DIRECTION_TO_SUN_LINE_THICKNESS);\n\n//                        //float arrowRotation = (physObjectIsInUpperPartOfPlane) ? 0 : MathHelper.Pi;\n//                        ////AddBillboard(MyHudRadarTexturesEnum.Arrow, Rescale(point + (Vector3.Right * 50)) + MyHudConstants.HUD_RADAR_PHYS_OBJECT_POINT_DELTA,\n//                        ////    Rescale(MyHudConstants.RADAR_PHYS_OBJECT_SIZE) * 3, arrowRotation, color);\n//                        //AddBillboard(MyHudRadarTexturesEnum.Arrow, rescaledPoint + (Vector3.Right * noScaleSize * 1.2f) + MyHudConstants.HUD_RADAR_PHYS_OBJECT_POINT_DELTA,\n//                        //    noScaleSize, arrowRotation, color);\n//                    }\n//                }\n//            }\n//        }\n\n//        static float GetNoscaleSizeFromPerspectiveDistance(Vector3 objectPosition, float objectSize, float sizeAsAtDistance)\n//        {\n//            float rescaledObjectSize = objectSize * (m_actualCameraPosition - objectPosition + MyHudConstants.HUD_RADAR_PHYS_OBJECT_POINT_DELTA).Length() / sizeAsAtDistance;\n//            return rescaledObjectSize;\n//        }\n\n//        static void DrawBackground()\n//        {\n//            //MyGuiManager.BeginSpriteBatch_StencilMask();\n//            MyGuiManager.BeginSpriteBatch_StencilMask(MyStateObjects.STENCIL_MASK_REFERENCE_STENCIL);\n\n//            //  In 2d radars we draw green bacground texture\n//            if (MySession.PlayerShip.Config.RadarType.Current == MyHudRadarTypesEnum.Player2D ||\n//                MySession.PlayerShip.Config.RadarType.Current == MyHudRadarTypesEnum.Solar2D)\n//            {\n//                MyAtlasTextureCoordinate textureCoord = GetTextureCoord(MyHudRadarTexturesEnum.RadarBackground);\n//                Rectangle source = new Rectangle((int)(textureCoord.Offset.X * m_texture.Width), (int)(textureCoord.Offset.Y * m_texture.Height), (int)(textureCoord.Size.X * m_texture.Width), (int)(textureCoord.Size.Y * m_texture.Height));\n\n//                MyGuiManager.DrawSpriteBatch(m_texture, new Rectangle(0, 0, MyCamera.HudRadarViewport.Width, MyCamera.HudRadarViewport.Height),\n//                    source, MyHudConstants.HUD_RADAR_BACKGROUND_COLOR2D);\n//            }\n//            //  For 3D radars there is only blank texture\n//            else\n//            {\n//                MyGuiManager.DrawSpriteBatch(MyGuiManager.GetBlankTexture(), new Rectangle(0, 0, MyCamera.HudRadarViewport.Width, MyCamera.HudRadarViewport.Height),\n//                    MyHudConstants.HUD_RADAR_BACKGROUND_COLOR);\n//            }\n\n//            MyGuiManager.EndSpriteBatch();\n//            //MyGuiManager.EndSpriteBatch_StencilMask();\n//        }\n\n//        static void ClearQuads()\n//        {\n//            m_polygons.Clear();\n//            m_quadsCount = 0;\n//            m_preAllocPolys.ClearAllAllocated();\n//        }\n\n//        static void AddPlayer()\n//        {\n//            if (MySession.PlayerShip.Config.RadarType.Current == MyHudRadarTypesEnum.Player2D ||\n//                MySession.PlayerShip.Config.RadarType.Current == MyHudRadarTypesEnum.Solar2D)\n//            {\n//                Add2DBillboard(MyHudRadarTexturesEnum.SmallShip, new Vector3(m_radarCenter.X, m_radarCenter.Z, 0), MyHudConstants.RADAR_PHYS_OBJECT_SIZE, 0, Color.Blue);\n//            }\n//            else\n//            {\n//                //  in 3d mode we add radar plane when filling vertex buffer - like radar plane\n//                //AddBillboard(MyHudRadarTexturesEnum.SmallShip, Vector3.Zero, MyHudConstants.RADAR_PHYS_OBJECT_SIZE / 2f, 2f * ((float)Math.PI), Color.Blue);\n//            }\n//        }\n\n//        //static void AddPhysObjects()\n//        //{\n//        //    BoundingBox radarBoundingBox = BoundingBoxHelper.InitialBox;\n//        //    BoundingBoxHelper.AddPoint(MyCamera.Position + new Vector3(-MyHudConstants.RADAR_BOUNDING_BOX_SIZE_HALF, -MyHudConstants.RADAR_BOUNDING_BOX_SIZE_HALF, -MyHudConstants.RADAR_BOUNDING_BOX_SIZE_HALF), ref radarBoundingBox);\n//        //    BoundingBoxHelper.AddPoint(MyCamera.Position + new Vector3(+MyHudConstants.RADAR_BOUNDING_BOX_SIZE_HALF, +MyHudConstants.RADAR_BOUNDING_BOX_SIZE_HALF, +MyHudConstants.RADAR_BOUNDING_BOX_SIZE_HALF), ref radarBoundingBox);\n//        //    var skins = MyEntities.GetCollisionSkinsInIntersectingBoundingBox(ref radarBoundingBox);\n\n//        //    foreach (MyRBElement skin in skins)\n//        //    {\n//        //        MyEntity physObject = ((MyGameRigidBody)skin.GetRigidBody().m_UserData).Entity;\n//        //        //  we don't want to show all objects on radar like voxel maps or debris\n//        //        if (!(physObject is MySmallShip || physObject is MyPrefabLargeShip)) continue;\n//        //        Color col = MyHudConstants.LARGESHIP_MARKER_COLOR;\n//        //        MyHudRadarTexturesEnum type = MyHudRadarTexturesEnum.SmallShip;\n//        //        //mark friend here different color\n//        //        MyFactionRelationEnum status = MyFactionRelationEnum.Neutral;\n\n//        //        if (physObject is MyShip)\n//        //            status = MyFactions.GetFactionsRelation(((MyShip)physObject).Faction, MySession.PlayerShip.Faction);\n\n//        //        switch (status)\n//        //        {\n//        //            case MyFactionRelationEnum.Friend:\n//        //                col = MyHudConstants.FRIEND_MARKER_COLOR;\n//        //                break;\n\n//        //            case MyFactionRelationEnum.Enemy:\n//        //                col = MyHudConstants.BOT_MARKER_COLOR;\n//        //                break;\n//        //        }\n\n//        //        if (physObject is MyPrefabLargeShip)\n//        //            type = MyHudRadarTexturesEnum.LargeShip;\n\n//        //        //  Skip voxel maps and player's ship and anything without a model\n//        //        if ((physObject is MyVoxelMap) ||\n//        //            (physObject is MyExplosionDebrisBase) ||\n//        //            (physObject == MySession.PlayerShip) ||\n//        //            (physObject.ModelLod0 == null)) continue;\n\n//        //        AddIconWithAxisLines(physObject.GetPosition(), col, type, physObject.WorldMatrix.Forward);\n//        //    }\n//        //}\n\n//        //  Calculates angle between players forward vector and vector3.forward in interval <0..2Pi> radians\n//        static float CalculateFullAngle(Vector3 baseVector, Vector3 vector2, Vector3 upVector)\n//        {\n//            Vector3 forward = MyMwcUtils.Normalize(vector2);\n//            float angle = MyUtils.GetAngleBetweenVectors(forward, baseVector);\n\n//            Vector3 leftVector = Vector3.Transform(baseVector, Matrix.CreateFromAxisAngle(upVector, MathHelper.PiOver2));\n//            float angleLeft = MyUtils.GetAngleBetweenVectors(leftVector, forward);\n\n//            Vector3 northEastVector = Vector3.Transform(baseVector, Matrix.CreateFromAxisAngle(upVector, -MathHelper.PiOver4));\n//            float angleNorthEast = MyUtils.GetAngleBetweenVectors(MyMwcUtils.Normalize(northEastVector), forward);\n\n//            if (angleLeft < MathHelper.PiOver2 || (float.IsNaN(angleLeft) && angleNorthEast > MathHelper.PiOver2))\n//            {\n//                angle = MathHelper.Pi + (MathHelper.Pi - angle);\n//            }\n//            return angle;\n//        }\n\n//        //  Rescales coordinate according to actual zoom level\n//        static Vector3 Rescale(Vector3 point)\n//        {\n//            return point / m_zoom;\n//        }\n\n//        //  Rescales size/length according to actual zoom level\n//        static float Rescale(float val)\n//        {\n//            return val / m_zoom;\n//        }\n\n//        //  Add horizontal radar plane\n//        static void AddRadarPlane(ref int index)\n//        {\n//            //  Rectangle representing the middle of the line\n//            m_vertices[index + 0].Position = new Vector3(-1, 0, -1) * MyHudConstants.RADAR_PLANE_RADIUS;\n//            m_vertices[index + 1].Position = new Vector3(+1, 0, -1) * MyHudConstants.RADAR_PLANE_RADIUS;\n//            m_vertices[index + 2].Position = new Vector3(-1, 0, +1) * MyHudConstants.RADAR_PLANE_RADIUS;\n//            m_vertices[index + 3].Position = new Vector3(+1, 0, -1) * MyHudConstants.RADAR_PLANE_RADIUS;\n//            m_vertices[index + 4].Position = new Vector3(+1, 0, +1) * MyHudConstants.RADAR_PLANE_RADIUS;\n//            m_vertices[index + 5].Position = new Vector3(-1, 0, +1) * MyHudConstants.RADAR_PLANE_RADIUS;\n\n//            MyAtlasTextureCoordinate textureCoord = GetTextureCoord(MyHudRadarTexturesEnum.RadarPlane);\n//            m_vertices[index + 0].TextureCoordinate = textureCoord.Offset;\n//            m_vertices[index + 1].TextureCoordinate = new Vector2(textureCoord.Offset.X + textureCoord.Size.X, textureCoord.Offset.Y);\n//            m_vertices[index + 2].TextureCoordinate = new Vector2(textureCoord.Offset.X, textureCoord.Offset.Y + textureCoord.Size.Y);\n//            m_vertices[index + 3].TextureCoordinate = m_vertices[index + 1].TextureCoordinate;\n//            m_vertices[index + 4].TextureCoordinate = new Vector2(textureCoord.Offset.X + textureCoord.Size.X, textureCoord.Offset.Y + textureCoord.Size.Y);\n//            m_vertices[index + 5].TextureCoordinate = m_vertices[index + 2].TextureCoordinate;\n\n//            Color color = Color.Gray * (180.0f / 255.0f);\n//            m_vertices[index + 0].Color = color;\n//            m_vertices[index + 1].Color = color;\n//            m_vertices[index + 2].Color = color;\n//            m_vertices[index + 3].Color = color;\n//            m_vertices[index + 4].Color = color;\n//            m_vertices[index + 5].Color = color;\n\n//            index += 6;\n//            m_quadsCount++;\n//        }\n\n//        //  Add player marked in 3d mode pointing forward\n//        static void AddPlayerMarker3D(ref int index)\n//        {\n//            //  Rectangle representing the middle of the line\n//            m_vertices[index + 0].Position = new Vector3(-1, 0, -1) * MyHudConstants.RADAR_PLANE_RADIUS * MyHudConstants.PLAYER_MARKER_MULTIPLIER;\n//            m_vertices[index + 1].Position = new Vector3(+1, 0, -1) * MyHudConstants.RADAR_PLANE_RADIUS * MyHudConstants.PLAYER_MARKER_MULTIPLIER;\n//            m_vertices[index + 2].Position = new Vector3(-1, 0, +1) * MyHudConstants.RADAR_PLANE_RADIUS * MyHudConstants.PLAYER_MARKER_MULTIPLIER;\n//            m_vertices[index + 3].Position = new Vector3(+1, 0, -1) * MyHudConstants.RADAR_PLANE_RADIUS * MyHudConstants.PLAYER_MARKER_MULTIPLIER;\n//            m_vertices[index + 4].Position = new Vector3(+1, 0, +1) * MyHudConstants.RADAR_PLANE_RADIUS * MyHudConstants.PLAYER_MARKER_MULTIPLIER;\n//            m_vertices[index + 5].Position = new Vector3(-1, 0, +1) * MyHudConstants.RADAR_PLANE_RADIUS * MyHudConstants.PLAYER_MARKER_MULTIPLIER;\n\n//            MyAtlasTextureCoordinate textureCoord = GetTextureCoord(MyHudRadarTexturesEnum.SmallShip);\n//            m_vertices[index + 0].TextureCoordinate = textureCoord.Offset;\n//            m_vertices[index + 1].TextureCoordinate = new Vector2(textureCoord.Offset.X + textureCoord.Size.X, textureCoord.Offset.Y);\n//            m_vertices[index + 2].TextureCoordinate = new Vector2(textureCoord.Offset.X, textureCoord.Offset.Y + textureCoord.Size.Y);\n//            m_vertices[index + 3].TextureCoordinate = m_vertices[index + 1].TextureCoordinate;\n//            m_vertices[index + 4].TextureCoordinate = new Vector2(textureCoord.Offset.X + textureCoord.Size.X, textureCoord.Offset.Y + textureCoord.Size.Y);\n//            m_vertices[index + 5].TextureCoordinate = m_vertices[index + 2].TextureCoordinate;\n\n//            m_vertices[index + 0].Color = MyHudConstants.PLAYER_MARKER_COLOR;\n//            m_vertices[index + 1].Color = MyHudConstants.PLAYER_MARKER_COLOR;\n//            m_vertices[index + 2].Color = MyHudConstants.PLAYER_MARKER_COLOR;\n//            m_vertices[index + 3].Color = MyHudConstants.PLAYER_MARKER_COLOR;\n//            m_vertices[index + 4].Color = MyHudConstants.PLAYER_MARKER_COLOR;\n//            m_vertices[index + 5].Color = MyHudConstants.PLAYER_MARKER_COLOR;\n\n//            index += 6;\n//            m_quadsCount++;\n//        }\n\n//        //  Add a marker to where the from an object intersects the horizontal plane\n//        static void AddPlaneMarker(Vector3 centerPoint)\n//        {\n//            //  Rectangle representing the middle of the line\n//            MyAtlasTextureCoordinate textureCoord = GetTextureCoord(MyHudRadarTexturesEnum.Sphere);\n\n//            MyPolygon poly = m_preAllocPolys.Allocate();\n//            if (poly != null)\n//            {\n//                poly.Start();\n//                poly.Points.Add(new VertexPositionColorTexture(new Vector3(centerPoint.X - .05f, 0, centerPoint.Z - .05f) * 100, Color.White, textureCoord.Offset));\n//                poly.Points.Add(new VertexPositionColorTexture(new Vector3(centerPoint.X + .05f, 0, centerPoint.Z - .05f) * 100, Color.White, new Vector2(textureCoord.Offset.X + textureCoord.Size.X, textureCoord.Offset.Y)));\n//                poly.Points.Add(new VertexPositionColorTexture(new Vector3(centerPoint.X - .05f, 0, centerPoint.Z + .05f) * 100, Color.White, new Vector2(textureCoord.Offset.X, textureCoord.Offset.Y + textureCoord.Size.Y)));\n//                poly.Points.Add(new VertexPositionColorTexture(new Vector3(centerPoint.X + .05f, 0, centerPoint.Z - .05f) * 100, Color.White, new Vector2(textureCoord.Offset.X + textureCoord.Size.X, textureCoord.Offset.Y)));\n//                poly.Points.Add(new VertexPositionColorTexture(new Vector3(centerPoint.X + .05f, 0, centerPoint.Z + .05f) * 100, Color.White, new Vector2(textureCoord.Offset.X + textureCoord.Size.X, textureCoord.Offset.Y + textureCoord.Size.Y)));\n//                poly.Points.Add(new VertexPositionColorTexture(new Vector3(centerPoint.X - .05f, 0, centerPoint.Z + .05f * 100), Color.White, new Vector2(textureCoord.Offset.X, textureCoord.Offset.Y + textureCoord.Size.Y)));\n//                poly.Finish();\n\n//                m_polygons.Add(poly);\n//                m_quadsCount++;\n//            }\n//        }\n\n//        //  Add 3D line into the lines list. Before that, we convert line to quad.\n//        static void AddLine3D(Vector3 vertex0, Vector3 vertex1, Color color0, Color color1, float lineThicknessHalf)\n//        {\n//            Vector3 directionVector = vertex0 - vertex1;\n//            if (directionVector.LengthSquared() <= MyMwcMathConstants.EPSILON_SQUARED) \n//            {\n//                return;\n//            }\n//            Vector3 directionNormalized = MyMwcUtils.Normalize(directionVector);\n\n//            MyPolyLine polyLine;\n//            polyLine.LineDirectionNormalized = directionNormalized;\n//            polyLine.Point0 = vertex0;\n//            polyLine.Point1 = vertex1;\n//            polyLine.Thickness = lineThicknessHalf;\n\n//            MyQuad quad;\n//            MyUtils.GetPolyLineQuad(out quad, ref polyLine, m_actualCameraPosition);\n\n//            //  Rectangle representing the middle of the line\n\n//            //  Calculating texture coordinates for 2D line is little hack. Because we use texture atlas, we must have some border\n//            //  arround line texture. Another hack is that horizontal texture coordinate is always 0.5 (in texture) as we\n//            //  don't want to interpolate between dark border and real line texture.\n//            MyAtlasTextureCoordinate textureCoord = GetTextureCoord(MyHudRadarTexturesEnum.Line);\n\n//            MyPolygon poly = m_preAllocPolys.Allocate();\n//            if (poly != null)\n//            {\n//                poly.Start();\n//                poly.Points.Add(new VertexPositionColorTexture(quad.Point0, color0, textureCoord.Offset + new Vector2(textureCoord.Size.X * 0.5f, textureCoord.Size.Y * 0.25f)));\n//                poly.Points.Add(new VertexPositionColorTexture(quad.Point1, color1, new Vector2(textureCoord.Offset.X + textureCoord.Size.X * 0.5f, textureCoord.Offset.Y + textureCoord.Size.Y * 0.25f)));\n//                poly.Points.Add(new VertexPositionColorTexture(quad.Point3, color0, new Vector2(textureCoord.Offset.X + textureCoord.Size.X * 0.5f, textureCoord.Offset.Y + textureCoord.Size.Y * 0.75f)));\n//                poly.Points.Add(new VertexPositionColorTexture(quad.Point1, color1, new Vector2(textureCoord.Offset.X + textureCoord.Size.X * 0.5f, textureCoord.Offset.Y + textureCoord.Size.Y * 0.25f)));\n//                poly.Points.Add(new VertexPositionColorTexture(quad.Point2, color1, new Vector2(textureCoord.Offset.X + textureCoord.Size.X * 0.5f, textureCoord.Offset.Y + textureCoord.Size.Y * 0.75f)));\n//                poly.Points.Add(new VertexPositionColorTexture(quad.Point3, color1, new Vector2(textureCoord.Offset.X + textureCoord.Size.X * 0.5f, textureCoord.Offset.Y + textureCoord.Size.Y * 0.75f)));\n//                poly.Finish();\n\n//                m_polygons.Add(poly);\n//                m_quadsCount++;\n//            }\n//        }\n\n//        //  Add textured billboard quad always pointing to camera\n//        static void AddBillboard(MyHudRadarTexturesEnum texture, Vector3 origin, float radius, float angle, Color color)\n//        {\n//            MyQuad quad;\n//            /*if (texture == MyHudRadarTexturesEnum.Arrow ||\n//                texture == MyHudRadarTexturesEnum.ImportantObject ||\n//                texture == MyHudRadarTexturesEnum.LargeShip ||\n//                texture == MyHudRadarTexturesEnum.SmallShip)\n//            {\n//                int ewwer = 234;\n//            }*/\n\n//            if (MyUtils.GetBillboardQuadAdvancedRotated(out quad, origin, radius, angle, m_actualCameraPosition) != false)\n//            {\n//                MyAtlasTextureCoordinate textureCoord = GetTextureCoord(texture);\n\n//                MyPolygon poly = m_preAllocPolys.Allocate();\n//                if (poly != null)\n//                {\n//                    poly.Start();\n//                    poly.Points.Add(new VertexPositionColorTexture(quad.Point0, color, textureCoord.Offset));\n//                    poly.Points.Add(new VertexPositionColorTexture(quad.Point1, color, new Vector2(textureCoord.Offset.X + textureCoord.Size.X, textureCoord.Offset.Y)));\n//                    poly.Points.Add(new VertexPositionColorTexture(quad.Point3, color, new Vector2(textureCoord.Offset.X, textureCoord.Offset.Y + textureCoord.Size.Y)));\n//                    poly.Points.Add(new VertexPositionColorTexture(quad.Point1, color, new Vector2(textureCoord.Offset.X + textureCoord.Size.X, textureCoord.Offset.Y)));\n//                    poly.Points.Add(new VertexPositionColorTexture(quad.Point2, color, new Vector2(textureCoord.Offset.X + textureCoord.Size.X, textureCoord.Offset.Y + textureCoord.Size.Y)));\n//                    poly.Points.Add(new VertexPositionColorTexture(quad.Point3, color, new Vector2(textureCoord.Offset.X, textureCoord.Offset.Y + textureCoord.Size.Y)));\n//                    poly.Finish();\n\n//                    m_polygons.Add(poly);\n//                    m_quadsCount++;\n//                }\n//            }\n//        }\n\n//        //  Add textured billboard always pointing to camera which can be used for ortographic view - it doesn't take in account view matrix when rendered\n//        static void Add2DBillboard(MyHudRadarTexturesEnum texture, Vector3 origin, float radius, float angle, Color color)\n//        {\n//            Add2DBillboard(texture, origin, origin, radius, angle, color);\n//        }\n\n//        //  Add textured billboard always pointing to camera which can be used for ortographic view - it doesn't take in account view matrix when rendered\n//        static void Add2DBillboard(MyHudRadarTexturesEnum texture, Vector3 origin, Vector3 rotationCenter, float radius, float angle, Color color)\n//        {\n//            Vector3 dir = Vector3.Zero;\n//            Vector3 topLeft = new Vector3(origin.X - radius / 2f, origin.Y - radius / 2f, origin.Z);\n//            dir = topLeft - rotationCenter;\n//            dir = Vector3.Transform(dir, Matrix.CreateRotationZ(angle));\n//            topLeft = rotationCenter + dir;\n\n//            Vector3 topRight = new Vector3(origin.X + radius / 2f, origin.Y - radius / 2f, origin.Z);\n//            dir = topRight - rotationCenter;\n//            dir = Vector3.Transform(dir, Matrix.CreateRotationZ(angle));\n//            topRight = rotationCenter + dir;\n\n//            Vector3 bottomLeft = new Vector3(origin.X - radius / 2f, origin.Y + radius / 2f, origin.Z);\n//            dir = bottomLeft - rotationCenter;\n//            dir = Vector3.Transform(dir, Matrix.CreateRotationZ(angle));\n//            bottomLeft = rotationCenter + dir;\n\n//            Vector3 bottomRight = new Vector3(origin.X + radius / 2f, origin.Y + radius / 2f, origin.Z);\n//            dir = bottomRight - rotationCenter;\n//            dir = Vector3.Transform(dir, Matrix.CreateRotationZ(angle));\n//            bottomRight = rotationCenter + dir;\n\n//            MyAtlasTextureCoordinate textureCoord = GetTextureCoord(texture);\n\n//            MyPolygon poly = m_preAllocPolys.Allocate();\n//            if (poly != null)\n//            {\n//                poly.Start();\n//                poly.Points.Add(new VertexPositionColorTexture(topLeft, color, textureCoord.Offset));\n//                poly.Points.Add(new VertexPositionColorTexture(topRight, color, new Vector2(textureCoord.Offset.X + textureCoord.Size.X, textureCoord.Offset.Y)));\n//                poly.Points.Add(new VertexPositionColorTexture(bottomLeft, color, new Vector2(textureCoord.Offset.X, textureCoord.Offset.Y + textureCoord.Size.Y)));\n//                poly.Points.Add(new VertexPositionColorTexture(topRight, color, new Vector2(textureCoord.Offset.X + textureCoord.Size.X, textureCoord.Offset.Y)));\n//                poly.Points.Add(new VertexPositionColorTexture(bottomRight, color, new Vector2(textureCoord.Offset.X + textureCoord.Size.X, textureCoord.Offset.Y + textureCoord.Size.Y)));\n//                poly.Points.Add(new VertexPositionColorTexture(bottomLeft, color, new Vector2(textureCoord.Offset.X, textureCoord.Offset.Y + textureCoord.Size.Y)));\n//                poly.Finish();\n\n//                m_polygons.Add(poly);\n//                m_quadsCount++;\n//            }\n//        }\n\n//        //  Adds the radar sphere and sun indicator\n//        private static void AddSunSphere()\n//        {\n//            if (MySession.PlayerShip.Config.RadarType.Current == MyHudRadarTypesEnum.Solar2D)\n//            {\n//                Vector3 fwd = MyGuiScreenGamePlay.Static.GetDirectionToSunNormalized();\n//                fwd = Vector3.Transform(fwd, m_orientationMatrix);\n//                MyUtils.ProjectPointOnPlane(ref fwd, ref MyConstants.VECTOR3_UP, out fwd);\n//                fwd = MyMwcUtils.Normalize(fwd);\n//                Vector3 pos = m_radarCenter + (fwd * MyHudConstants.RADAR_PLANE_RADIUS) * 1.1f;\n//                //  Rotation around sun billboard center. So every time sun billboard is always facing to radar center\n//                float rot = -CalculateFullAngle(Vector3.Forward, new Vector3(MySession.PlayerShip.WorldMatrix.Forward.X, 0, MySession.PlayerShip.WorldMatrix.Forward.Z), Vector3.Up);\n//                Add2DBillboard(MyHudRadarTexturesEnum.Sun, new Vector3(pos.X, pos.Z, -1), MyHudConstants.RADAR_SUN_BILLBOARD_SIZE, rot, Color.White);\n//            }\n//            else if (MySession.PlayerShip.Config.RadarType.Current == MyHudRadarTypesEnum.Player2D)\n//            {\n//                Vector3 dirToSun = MyGuiScreenGamePlay.Static.GetDirectionToSunNormalized();\n//                Vector3 fwd = Vector3.Transform(dirToSun, m_orientationMatrix);\n//                fwd = MyMwcUtils.Normalize(fwd);\n//                Vector3 pos = (fwd * MyHudConstants.RADAR_PLANE_RADIUS) * 1.1f;\n//                MyUtils.ProjectPointOnPlane(ref pos, MySession.PlayerShip.WorldMatrix.Up, out pos);\n//                pos += m_radarCenter;\n//                //  Rotation around sun billboard center. So every time sun billboard is always facing to radar center\n//                float rot = -CalculateFullAngle(Vector3.Forward, new Vector3(MySession.PlayerShip.WorldMatrix.Forward.X, 0, MySession.PlayerShip.WorldMatrix.Forward.Z), Vector3.Up);\n//                Add2DBillboard(MyHudRadarTexturesEnum.Sun, new Vector3(pos.X, pos.Z, -1), MyHudConstants.RADAR_SUN_BILLBOARD_SIZE, rot, Color.White);\n//            }\n//            else\n//            {\n//                Matrix viewMatrix = MyCamera.ViewMatrixAtZero;\n//                Vector3 sunPosition = Vector3.Transform(MyGuiScreenGamePlay.Static.GetDirectionToSunNormalized() * (MyHudConstants.RADAR_SPHERE_RADIUS + 1), viewMatrix);//GetSunPositionOnRadar();\n//                Vector3 projectedPoint = new Vector3(sunPosition.X, 0, sunPosition.Z);\n//                if ((sunPosition - projectedPoint).Length() > MyMwcMathConstants.EPSILON)\n//                    AddLine3D(sunPosition, projectedPoint, Color.Orange, Color.Orange, MyHudConstants.DIRECTION_TO_SUN_LINE_THICKNESS);\n\n//                AddLine3D(Vector3.Zero, projectedPoint, Color.Orange, Color.Orange, MyHudConstants.DIRECTION_TO_SUN_LINE_THICKNESS);\n//                //AddBillboard(MyHudRadarTexturesEnum.Sun, sunPosition, MyHudConstants.RADAR_PHYS_OBJECT_SIZE, 0, Color.White);\n//                AddBillboard(MyHudRadarTexturesEnum.Sun, sunPosition, GetNoscaleSizeFromPerspectiveDistance(sunPosition, MyHudConstants.RADAR_PHYS_OBJECT_SIZE, 200f), 0, Color.White);                \n//                AddSphere();\n//            }\n//        }\n\n//        private static void AddSectorBorderLines()\n//        {\n//            if (MySession.PlayerShip.Config.RadarType.Current == MyHudRadarTypesEnum.Player2D ||\n//                MySession.PlayerShip.Config.RadarType.Current == MyHudRadarTypesEnum.Solar2D)\n//            {\n//                Vector3[] corners = MyMwcSectorConstants.SAFE_SECTOR_SIZE_BOUNDING_BOX_CORNERS;\n\n//                //  We calculate how far we are to front and side sector border in percentages(-1..1). and according to this we draw sector border billboard rotated around player position on radar \n//                float percentageFront = (corners[4].Z - MySession.PlayerShip.GetPosition().Z) / MyMwcSectorConstants.SECTOR_SIZE_HALF;\n//                percentageFront += 1;\n//                //  We lineary decrease percentage because otherwise if player is near sector border this billboard would overlap player marker in radar\n//                percentageFront *= MyHudConstants.RADAR_SECTOR_BORDER_REPOSITION;\n\n//                float percentageSide = (corners[0].X - MySession.PlayerShip.GetPosition().X) / MyMwcSectorConstants.SECTOR_SIZE_HALF;\n//                percentageSide += 1;\n//                //  We lineary decrease percentage because otherwise if player is near sector border this billboard would overlap player marker in radar\n//                percentageSide *= MyHudConstants.RADAR_SECTOR_BORDER_REPOSITION;\n\n//                float rotation = -CalculateFullAngle(Vector3.Forward, new Vector3(MySession.PlayerShip.WorldMatrix.Forward.X, 0, MySession.PlayerShip.WorldMatrix.Forward.Z), Vector3.Up);\n//                Add2DBillboard(MyHudRadarTexturesEnum.SectorBorder, new Vector3(m_radarCenter.X + (percentageSide * MyHudConstants.RADAR_PLANE_RADIUS), m_radarCenter.Z + (percentageFront * MyHudConstants.RADAR_PLANE_RADIUS), -1), new Vector3(m_radarCenter.X, m_radarCenter.Z, 1), MyHudConstants.RADAR_SECTOR_BORDER_BILLBOARD_SIZE, rotation, Color.White);\n//            }\n//            else\n//            {\n//                Matrix viewMatrix = MyCamera.ViewMatrixAtZero;\n//                Vector3 playerPos = MySession.PlayerShip.GetPosition();\n\n//                float multiplier = 1;\n//                for (int i = 0; i < MyMwcSectorConstants.SAFE_SECTOR_SIZE_BOUNDING_BOX_CORNERS.Length; i++)\n//                {\n//                    m_sectorCornersTemp[i] = Vector3.Transform(MyMwcSectorConstants.SAFE_SECTOR_SIZE_BOUNDING_BOX_CORNERS[i] - MyCamera.Position, viewMatrix);\n//                    if (Vector3.Distance(playerPos, m_sectorCornersTemp[i]) > MyHudConstants.RADAR_PLANE_RADIUS * 1f)\n//                    {\n//                        float newMult = Vector3.Multiply(MyMwcUtils.Normalize(m_sectorCornersTemp[i]), MyHudConstants.RADAR_PLANE_RADIUS).Length() / m_sectorCornersTemp[i].Length();\n//                        if (newMult < multiplier)\n//                        {\n//                            multiplier = newMult;\n//                        }\n//                    }\n//                }\n\n//                for (int i = 0; i < m_sectorCornersTemp.Length; i++)\n//                {\n//                    m_sectorCornersTemp[i] *= multiplier;\n//                }\n\n//                AddLine3D(m_sectorCornersTemp[0], m_sectorCornersTemp[1], MyHudConstants.RADAR_SECTOR_BORDER_COLOR, MyHudConstants.RADAR_SECTOR_BORDER_COLOR, MyHudConstants.DIRECTION_TO_SUN_LINE_THICKNESS);\n//                AddLine3D(m_sectorCornersTemp[1], m_sectorCornersTemp[5], MyHudConstants.RADAR_SECTOR_BORDER_COLOR, MyHudConstants.RADAR_SECTOR_BORDER_COLOR, MyHudConstants.DIRECTION_TO_SUN_LINE_THICKNESS);\n//                AddLine3D(m_sectorCornersTemp[5], m_sectorCornersTemp[4], MyHudConstants.RADAR_SECTOR_BORDER_COLOR, MyHudConstants.RADAR_SECTOR_BORDER_COLOR, MyHudConstants.DIRECTION_TO_SUN_LINE_THICKNESS);\n//                AddLine3D(m_sectorCornersTemp[4], m_sectorCornersTemp[0], MyHudConstants.RADAR_SECTOR_BORDER_COLOR, MyHudConstants.RADAR_SECTOR_BORDER_COLOR, MyHudConstants.DIRECTION_TO_SUN_LINE_THICKNESS);\n\n//                AddLine3D(m_sectorCornersTemp[3], m_sectorCornersTemp[2], MyHudConstants.RADAR_SECTOR_BORDER_COLOR, MyHudConstants.RADAR_SECTOR_BORDER_COLOR, MyHudConstants.DIRECTION_TO_SUN_LINE_THICKNESS);\n//                AddLine3D(m_sectorCornersTemp[2], m_sectorCornersTemp[6], MyHudConstants.RADAR_SECTOR_BORDER_COLOR, MyHudConstants.RADAR_SECTOR_BORDER_COLOR, MyHudConstants.DIRECTION_TO_SUN_LINE_THICKNESS);\n//                AddLine3D(m_sectorCornersTemp[6], m_sectorCornersTemp[7], MyHudConstants.RADAR_SECTOR_BORDER_COLOR, MyHudConstants.RADAR_SECTOR_BORDER_COLOR, MyHudConstants.DIRECTION_TO_SUN_LINE_THICKNESS);\n//                AddLine3D(m_sectorCornersTemp[7], m_sectorCornersTemp[3], MyHudConstants.RADAR_SECTOR_BORDER_COLOR, MyHudConstants.RADAR_SECTOR_BORDER_COLOR, MyHudConstants.DIRECTION_TO_SUN_LINE_THICKNESS);\n\n//                AddLine3D(m_sectorCornersTemp[0], m_sectorCornersTemp[3], MyHudConstants.RADAR_SECTOR_BORDER_COLOR, MyHudConstants.RADAR_SECTOR_BORDER_COLOR, MyHudConstants.DIRECTION_TO_SUN_LINE_THICKNESS);\n//                AddLine3D(m_sectorCornersTemp[1], m_sectorCornersTemp[2], MyHudConstants.RADAR_SECTOR_BORDER_COLOR, MyHudConstants.RADAR_SECTOR_BORDER_COLOR, MyHudConstants.DIRECTION_TO_SUN_LINE_THICKNESS);\n//                AddLine3D(m_sectorCornersTemp[5], m_sectorCornersTemp[6], MyHudConstants.RADAR_SECTOR_BORDER_COLOR, MyHudConstants.RADAR_SECTOR_BORDER_COLOR, MyHudConstants.DIRECTION_TO_SUN_LINE_THICKNESS);\n//                AddLine3D(m_sectorCornersTemp[4], m_sectorCornersTemp[7], MyHudConstants.RADAR_SECTOR_BORDER_COLOR, MyHudConstants.RADAR_SECTOR_BORDER_COLOR, MyHudConstants.DIRECTION_TO_SUN_LINE_THICKNESS);\n//            }\n//        }\n\n//        //  Draws a sphere                                                  \n//        static void AddSphere()\n//        {\n//            //    Vector3 center = Vector3.Zero;\n//            //    float radius = MyHudConstants.RADAR_SPHERE_RADIUS;\n//            //    int tessellation = 10;\n//            //    int verticalSegments = tessellation;\n//            //    int horizontalSegments = tessellation * 2;\n//            //    Color sphereColor = Color.White * (90.0f / 255.0f);\n//            //    int vertexIndexMiddle = m_quadsCount * MyHudConstants.VERTEXES_PER_HUD_QUAD;\n//            //    int vertexCount = 0;\n\n//            //    //  Draw fan at bottom of sphere\n//            //    float latitude = (MathHelper.Pi / verticalSegments) - MathHelper.PiOver2;\n//            //    float dy = (float)Math.Sin(latitude);\n//            //    float dxz = (float)Math.Cos(latitude);\n//            //    MyAtlasTextureCoordinate textureCoord = GetTextureCoord(MyHudRadarTexturesEnum.SphereGrid);\n\n//            //    for (int i = 0; i < horizontalSegments; i++)\n//            //    {\n//            //        float longitude = i * MathHelper.TwoPi / horizontalSegments;\n//            //        float dx = (float)Math.Cos(longitude) * dxz;\n//            //        float dz = (float)Math.Sin(longitude) * dxz;\n\n//            //        float longitude2 = (i + 1) * MathHelper.TwoPi / horizontalSegments;\n//            //        float dx2 = (float)Math.Cos(longitude2) * dxz;\n//            //        float dz2 = (float)Math.Sin(longitude2) * dxz;\n\n//            //        Vector3 normal = new Vector3(dx, dy, dz);\n//            //        Vector3 normal2 = new Vector3(dx2, dy, dz2);\n\n//            //        MyPolygon poly = m_preAllocPolys.Allocate();\n//            //        if (poly != null)\n//            //        {\n//            //            poly.Start();\n//            //            poly.Points.Add(new VertexPositionColorTexture(Vector3.Transform(normal2 * radius, MyCamera.ViewMatrixAtZero), sphereColor, textureCoord.Offset));\n//            //            poly.Points.Add(new VertexPositionColorTexture(Vector3.Transform(normal * radius, MyCamera.ViewMatrixAtZero), sphereColor, new Vector2(textureCoord.Offset.X + textureCoord.Size.X, textureCoord.Offset.Y)));\n//            //            poly.Points.Add(new VertexPositionColorTexture(Vector3.Transform(Vector3.Down * radius, MyCamera.ViewMatrixAtZero), sphereColor, new Vector2(textureCoord.Offset.X, textureCoord.Offset.Y + textureCoord.Size.Y)));\n//            //            poly.Finish();\n\n//            //            m_polygons.Add(poly);\n//            //            vertexCount += 3;\n//            //        }\n//            //    }\n\n//            //    //  Create rings of vertices at progressively higher latitudes.\n//            //    for (int i = 0; i < verticalSegments - 1; i++)\n//            //    {\n//            //        latitude = ((i + 1) * MathHelper.Pi / verticalSegments) - MathHelper.PiOver2;\n\n//            //        dy = (float)Math.Sin(latitude);\n//            //        dxz = (float)Math.Cos(latitude);\n//            //        float latitude2 = ((i + 2) * MathHelper.Pi / verticalSegments) - MathHelper.PiOver2;\n\n//            //        float dy2 = (float)Math.Sin(latitude2);\n//            //        float dxz2 = (float)Math.Cos(latitude2);\n\n//            //        //  Create a single ring of vertices at this latitude.\n//            //        for (int j = 0; j < horizontalSegments; j++)\n//            //        {\n//            //            float longitude = j * MathHelper.TwoPi / horizontalSegments;\n\n//            //            float dx = (float)Math.Cos(longitude) * dxz;\n//            //            float dz = (float)Math.Sin(longitude) * dxz;\n\n//            //            float longitude2 = (j + 1) * MathHelper.TwoPi / horizontalSegments;\n//            //            float dx2 = (float)Math.Cos(longitude2) * dxz;\n//            //            float dz2 = (float)Math.Sin(longitude2) * dxz;\n\n//            //            float dx3 = (float)Math.Cos(longitude) * dxz2;\n//            //            float dz3 = (float)Math.Sin(longitude) * dxz2;\n\n//            //            float dx4 = (float)Math.Cos(longitude2) * dxz2;\n//            //            float dz4 = (float)Math.Sin(longitude2) * dxz2;\n\n//            //            Vector3 normal = new Vector3(dx, dy, dz);\n//            //            Vector3 normal2 = new Vector3(dx2, dy, dz2);\n//            //            Vector3 normal3 = new Vector3(dx3, dy2, dz3);\n//            //            Vector3 normal4 = new Vector3(dx4, dy2, dz4);\n\n//            //            MyPolygon poly = m_preAllocPolys.Allocate();\n//            //            if (poly != null)\n//            //            {\n//            //                Vector3 point0 = MyUtils.GetTransform(normal * radius, ref MyCamera.ViewMatrixAtZero);\n//            //                Vector3 point1 = MyUtils.GetTransform(normal2 * radius, ref MyCamera.ViewMatrixAtZero);\n//            //                Vector3 point2 = MyUtils.GetTransform(normal3 * radius, ref MyCamera.ViewMatrixAtZero);\n//            //                Vector3 point3 = MyUtils.GetTransform(normal2 * radius, ref MyCamera.ViewMatrixAtZero);\n//            //                Vector3 point4 = MyUtils.GetTransform(normal4 * radius, ref MyCamera.ViewMatrixAtZero);\n//            //                Vector3 point5 = MyUtils.GetTransform(normal3 * radius, ref MyCamera.ViewMatrixAtZero);\n\n//            //                Color a = sphereColor;\n//            //                if (point0.Z >= 0) a.A = 30;\n\n//            //                poly.Start();\n//            //                poly.Points.Add(new VertexPositionColorTexture(point0, a, textureCoord.Offset));\n//            //                poly.Points.Add(new VertexPositionColorTexture(point1, a, new Vector2(textureCoord.Offset.X + textureCoord.Size.X, textureCoord.Offset.Y)));\n//            //                poly.Points.Add(new VertexPositionColorTexture(point2, a, new Vector2(textureCoord.Offset.X, textureCoord.Offset.Y + textureCoord.Size.Y)));\n//            //                poly.Points.Add(new VertexPositionColorTexture(point3, a, new Vector2(textureCoord.Offset.X + textureCoord.Size.X, textureCoord.Offset.Y)));\n//            //                poly.Points.Add(new VertexPositionColorTexture(point4, a, new Vector2(textureCoord.Offset.X + textureCoord.Size.X, textureCoord.Offset.Y + textureCoord.Size.Y)));\n//            //                poly.Points.Add(new VertexPositionColorTexture(point5, a, new Vector2(textureCoord.Offset.X, textureCoord.Offset.Y + textureCoord.Size.Y)));\n//            //                poly.Finish();\n\n//            //                m_polygons.Add(poly);\n//            //                vertexCount += 6;\n//            //            }\n//            //        }\n//            //    }\n\n//            //    latitude = ((verticalSegments) * MathHelper.Pi / verticalSegments) - MathHelper.PiOver2;\n\n//            //    dy = (float)Math.Sin(latitude);\n//            //    dxz = (float)Math.Cos(latitude);\n\n//            //    //  Create vertex fan at top of sphere\n//            //    for (int i = 1; i < horizontalSegments + 1; i++)\n//            //    {\n//            //        float longitude = i * MathHelper.TwoPi / horizontalSegments;\n//            //        float dx = (float)Math.Cos(longitude) * dxz;\n//            //        float dz = (float)Math.Sin(longitude) * dxz;\n\n//            //        float longitude2 = (i - 1) * MathHelper.TwoPi / horizontalSegments;\n//            //        float dx2 = (float)Math.Cos(longitude2) * dxz;\n//            //        float dz2 = (float)Math.Sin(longitude2) * dxz;\n\n//            //        Vector3 normal = new Vector3(dx, dy, dz);\n//            //        Vector3 normal2 = new Vector3(dx2, dy, dz2);\n\n//            //        MyPolygon poly = m_preAllocPolys.Allocate();\n//            //        if (poly != null)\n//            //        {\n//            //            poly.Start();\n//            //            poly.Points.Add(new VertexPositionColorTexture(Vector3.Transform(Vector3.Up * radius, MyCamera.ViewMatrixAtZero), sphereColor, textureCoord.Offset));\n//            //            poly.Points.Add(new VertexPositionColorTexture(Vector3.Transform(normal * radius, MyCamera.ViewMatrixAtZero), sphereColor, new Vector2(textureCoord.Offset.X + textureCoord.Size.X, textureCoord.Offset.Y)));\n//            //            poly.Points.Add(new VertexPositionColorTexture(Vector3.Transform(normal2 * radius, MyCamera.ViewMatrixAtZero), sphereColor, new Vector2(textureCoord.Offset.X, textureCoord.Offset.Y + textureCoord.Size.Y)));\n//            //            poly.Finish();\n\n//            //            m_polygons.Add(poly);\n//            //            vertexCount += 3;\n//            //        }\n//            //    }\n//            //    m_quadsCount += vertexCount / MyHudConstants.VERTEXES_PER_HUD_QUAD;\n//        }\n\n//        static MyAtlasTextureCoordinate GetTextureCoord(MyHudRadarTexturesEnum texture)\n//        {\n//            return m_textureCoords[(int)texture];\n//        }\n\n//        //  Fill vertex buffer with polygons sorted by depth\n//        //  This imitates a z-buffer\n//        static void CopyQuadsToVertices()\n//        {\n//            int x = 0;\n//            m_polygons.Sort();\n\n//            //  First add polygons below the plane\n//            foreach (MyPolygon poly in m_polygons)\n//            {\n//                if (poly.GetAverageY() < 0)\n//                {\n//                    foreach (VertexPositionColorTexture vert in poly.Points)\n//                    {\n//                        m_vertices[x++] = vert;\n//                    }\n//                }\n//            }\n\n//            //  Then add the plane if we are in 3D mode\n//            if (MySession.PlayerShip.Config.RadarType.Current == MyHudRadarTypesEnum.Normal3D)\n//            {\n//                AddRadarPlane(ref x);\n//                AddPlayerMarker3D(ref x);\n//            }\n\n//            //  Then add polygons above the plane\n//            foreach (MyPolygon poly in m_polygons)\n//            {\n//                if (poly.GetAverageY() >= 0)\n//                {\n//                    foreach (VertexPositionColorTexture vert in poly.Points)\n//                    {\n//                        m_vertices[x++] = vert;\n//                    }\n//                }\n//            }\n//        }\n\n//        //  Finally draw all lines\n//        static void DrawVertices()\n//        {\n//            if (m_quadsCount <= 0) return;\n\n//            CopyQuadsToVertices();\n\n//            GraphicsDevice device = MyMinerGame.Static.GraphicsDevice;\n\n//            device.DepthStencilState = MyStateObjects.StencilMask_TestHudBegin_DepthStencilState;\n//            device.BlendState = BlendState.NonPremultiplied;\n//            device.RasterizerState = RasterizerState.CullNone;\n\n//            MyEffectHudRadar effect = (MyEffectHudRadar)MyRender.GetEffect(MyEffects.HudRadar);\n\n//            if (MySession.PlayerShip.Config.RadarType.Current == MyHudRadarTypesEnum.Normal3D)\n//            {\n//                //  normal 3D drawing\n//                m_perspectiveProjectionMatrix = Matrix.CreatePerspectiveFieldOfView(MyHudConstants.RADAR_FIELD_OF_VIEW, MyCamera.HudRadarViewport.Width / (float)MyCamera.HudRadarViewport.Height /*MyHudConstants.RADAR_ASPECT_RATIO*/, 0.1f, 1000);\n//                Vector3 cameraPos = MyHudConstants.ORIGINAL_CAMERA_POSITON;\n//                Matrix viewMatrix = Matrix.CreateLookAt(cameraPos, Vector3.Zero, Vector3.Up);\n//                effect.SetViewProjectionMatrix(viewMatrix * m_perspectiveProjectionMatrix);\n//            }\n//            else\n//            {\n//                //  2d drawing\n//                effect.SetViewProjectionMatrix(m_projectionMatrix2D);\n//            }\n\n//            effect.SetBillboardTexture(m_texture);\n//            effect.Apply();\n\n//            device.DrawUserPrimitives(PrimitiveType.TriangleList, m_vertices, 0, m_quadsCount * MyHudConstants.TRIANGLES_PER_HUD_QUAD);\n//        }\n//    }\n//}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/HUD/MyHudSectorBorder.cs",
    "content": "﻿using System.IO;\nusing System.Linq;\nusing MinerWarsMath;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Managers;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Utils.VertexFormats;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.Render;\n\nusing SharpDX.Direct3D9;\n\nnamespace MinerWars.AppCode.Game.HUD\n{\n    \n    static class MyHudSectorBorder\n    {\n        static MyTexture2D m_texture;\n        static VertexBuffer m_boxVertexBuffer;\n        static bool m_loaded = false;\n        static Matrix m_ProjectionMatrix;\n        const int BOX_TRIANGLES_COUNT = 12;\n        \n        public static string SectorBorderRenderingModuleName = \"Draw sector bbox\";\n\n        static bool m_canDraw;\n\n        static Vector4 m_sectorBorderAditionalColor;\n        static bool m_enabled;\n        public static bool Enabled { get { return m_enabled; } }\n\n        static MyHudSectorBorder()\n        {\n            Render.MyRender.RegisterRenderModule(MyRenderModuleEnum.SectorBorder, \"Sector border\", Draw, Render.MyRenderStage.AlphaBlend);\n            Render.MyRender.RegisterRenderModule(MyRenderModuleEnum.DrawSectorBBox, \"Draw sector bbox\", MyUtils.DrawSectorBoundingBox, Render.MyRenderStage.DebugDraw, false);\n        }\n\n        public static void LoadData()\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyHudSectorBorder.LoadData\");\n            m_enabled = false;\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        public static void LoadContent()\n        {\n            MyMwcLog.WriteLine(\"MyHudSectorBorder.LoadContent() - START\");\n            MyMwcLog.IncreaseIndent();\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyHudSectorBorder.LoadContent()\");\n\n            m_loaded = false;\n\n            m_texture = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\HUD\\\\SectorBorder\", flags: TextureFlags.IgnoreQuality);\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyHudSectorBorder.LoadContent() - END\");\n        }\n\n        public static void SwitchToDraw()\n        {\n            float dist = MyGuiScreenGamePlay.Static.GetDistanceToSectorBoundaries();\n            if (dist <= MyHudConstants.DISTANCE_FOR_SECTOR_BORDER_DRAW || m_enabled)\n            {\n                m_canDraw = true;\n            }\n            else\n            {\n                m_canDraw = false;\n            }\n\n            m_sectorBorderAditionalColor = new Vector4(1, 1, 1, m_enabled ? 0.2f : 0);\n\n            if (dist <= MyHudConstants.DISTANCE_FOR_SECTOR_BORDER_DRAW && !m_enabled)\n            {\n                m_sectorBorderAditionalColor = new Vector4(0.7f, 0.078f, 0.157f, 0.5f);\n            }\n        }\n\n        public static void SwitchSectorBorderVisibility()\n        {\n            m_enabled = !m_enabled;\n            MyConfig.EditorEnableGrid = m_enabled;\n            MyConfig.Save();\n        }\n\n        public static void UnloadContent()\n        {\n            MyMwcLog.WriteLine(\"MyHudSectorBorder.UnloadContent - START\");\n            MyMwcLog.IncreaseIndent();\n\n            if (m_boxVertexBuffer != null)\n            {\n                m_boxVertexBuffer.Dispose();\n                m_boxVertexBuffer = null;\n            }\n\n            m_loaded = false;\n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyHudSectorBorder.UnloadContent - END\");\n        }\n\n        //\tSpecial method that loads data into GPU, and can be called only from Draw method, never from LoadContent or from background thread.\n        //\tBecause that would lead to empty vertex/index buffers if they are filled/created while game is minimized (remember the issue - alt-tab during loading screen)\n        static void LoadInDraw()\n        {\n            if (m_loaded) return;\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyHudSectorBorder::LoadInDraw\");\n\n            //TODO\n                             /*\n            VertexPositionColorTexture[] shapeVertices = new VertexPositionColorTexture[36];\n\n            Vector3[] corners = MyMwcSectorConstants.SAFE_SECTOR_SIZE_BOUNDING_BOX_CORNERS;\n            Vector3 topLeftFront = corners[4];\n            Vector3 bottomLeftFront = corners[7];\n            Vector3 topRightFront = corners[5];\n            Vector3 bottomRightFront = corners[6];\n            Vector3 topLeftBack = corners[0];\n            Vector3 topRightBack = corners[1];\n            Vector3 bottomLeftBack = corners[3];\n            Vector3 bottomRightBack = corners[2];\n            Vector2 textureTopLeft = new Vector2(1f, 0.0f);\n            Vector2 textureTopRight = new Vector2(0.0f, 0.0f);\n            Vector2 textureBottomLeft = new Vector2(1f, 1f);\n            Vector2 textureBottomRight = new Vector2(0.0f, 1f);\n\n            Color white = new Color(255, 255, 255, 25);\n            Color green = new Color(200, 255, 200, 25);\n\n            //  Front face\n            shapeVertices[0] = new VertexPositionColorTexture(\n                topLeftFront, white, textureTopLeft);\n            shapeVertices[1] = new VertexPositionColorTexture(\n                bottomLeftFront, white, textureBottomLeft);\n            shapeVertices[2] = new VertexPositionColorTexture(\n                topRightFront, white, textureTopRight);\n            shapeVertices[3] = new VertexPositionColorTexture(\n                bottomLeftFront, white, textureBottomLeft);\n            shapeVertices[4] = new VertexPositionColorTexture(\n                bottomRightFront, white, textureBottomRight);\n            shapeVertices[5] = new VertexPositionColorTexture(\n                topRightFront, white, textureTopRight);\n\n            \n            // Back face.\n            shapeVertices[6] = new VertexPositionColorTexture(\n                topLeftBack, white, textureTopRight);\n            shapeVertices[7] = new VertexPositionColorTexture(\n                topRightBack, white, textureTopLeft);\n            shapeVertices[8] = new VertexPositionColorTexture(\n                bottomLeftBack, white, textureBottomRight);\n            shapeVertices[9] = new VertexPositionColorTexture(\n                bottomLeftBack, white, textureBottomRight);\n            shapeVertices[10] = new VertexPositionColorTexture(\n                topRightBack, white, textureTopLeft);\n            shapeVertices[11] = new VertexPositionColorTexture(\n                bottomRightBack, white, textureBottomLeft);\n\n            // Top face.\n            shapeVertices[12] = new VertexPositionColorTexture(\n                topLeftFront, green, textureBottomLeft);\n            shapeVertices[13] = new VertexPositionColorTexture(\n                topRightBack, green, textureTopRight);\n            shapeVertices[14] = new VertexPositionColorTexture(\n                topLeftBack, green, textureTopLeft);\n            shapeVertices[15] = new VertexPositionColorTexture(\n                topLeftFront, green, textureBottomLeft);\n            shapeVertices[16] = new VertexPositionColorTexture(\n                topRightFront, green, textureBottomRight);\n            shapeVertices[17] = new VertexPositionColorTexture(\n                topRightBack, green, textureTopRight);\n\n            // Bottom face. \n            shapeVertices[18] = new VertexPositionColorTexture(\n                bottomLeftFront, green, textureTopLeft);\n            shapeVertices[19] = new VertexPositionColorTexture(\n                bottomLeftBack, green, textureBottomLeft);\n            shapeVertices[20] = new VertexPositionColorTexture(\n                bottomRightBack, green, textureBottomRight);\n            shapeVertices[21] = new VertexPositionColorTexture(\n                bottomLeftFront, green, textureTopLeft);\n            shapeVertices[22] = new VertexPositionColorTexture(\n                bottomRightBack, green, textureBottomRight);\n            shapeVertices[23] = new VertexPositionColorTexture(\n                bottomRightFront, green, textureTopRight);\n\n            // Left face.\n            shapeVertices[24] = new VertexPositionColorTexture(\n                topLeftFront, white, textureTopRight);\n            shapeVertices[25] = new VertexPositionColorTexture(\n                bottomLeftBack, white, textureBottomLeft);\n            shapeVertices[26] = new VertexPositionColorTexture(\n                bottomLeftFront, white, textureBottomRight);\n            shapeVertices[27] = new VertexPositionColorTexture(\n                topLeftBack, white, textureTopLeft);\n            shapeVertices[28] = new VertexPositionColorTexture(\n                bottomLeftBack, white, textureBottomLeft);\n            shapeVertices[29] = new VertexPositionColorTexture(\n                topLeftFront, white, textureTopRight);\n\n            // Right face. \n            shapeVertices[30] = new VertexPositionColorTexture(\n                topRightFront, white, textureTopLeft);\n            shapeVertices[31] = new VertexPositionColorTexture(\n                bottomRightFront, white, textureBottomLeft);\n            shapeVertices[32] = new VertexPositionColorTexture(\n                bottomRightBack, white, textureBottomRight);\n            shapeVertices[33] = new VertexPositionColorTexture(\n                topRightBack, white, textureTopRight);\n            shapeVertices[34] = new VertexPositionColorTexture(\n                topRightFront, white, textureTopLeft);\n            shapeVertices[35] = new VertexPositionColorTexture(\n                bottomRightBack, white, textureBottomRight);\n\n            m_boxVertexBuffer = new VertexBuffer(MyMinerGame.Static.GraphicsDevice, VertexPositionColorTexture.VertexDeclaration, shapeVertices.Length, BufferUsage.None);\n            m_boxVertexBuffer.SetData(shapeVertices);\n\n            m_loaded = true;   */\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        public static void DrawInForeground()\n        {\n        }\n\n        public static void Draw()\n        {\n            //  We can fill vertex buffer only when in Draw\n            //LoadInDraw();\n\n            if (!m_canDraw) \n                return;\n                 /*\n            GraphicsDevice device = MyMinerGame.Static.GraphicsDevice;\n            device.DepthStencilState = DepthStencilState.None;\n            device.RasterizerState = RasterizerState.CullNone;\n            device.BlendState = BlendState.NonPremultiplied;\n\n            MyEffectHudSectorBorder effect = MyRender.GetEffect(MyEffects.HudSectorBorder) as MyEffectHudSectorBorder;\n\n            effect.WorldMatrix.SetValue(Matrix.CreateTranslation(-MyCamera.Position));\n\n            effect.SectorBorderWarningDistance.SetValue(MyHudConstants.DISTANCE_FOR_SECTOR_BORDER_DRAW);\n            effect.EyePosition.SetValue(Vector3.Zero);\n            effect.SectorBorderAditionalColor.SetValue(m_sectorBorderAditionalColor);\n            effect.SectorBorderTabPressed.SetValue(m_enabled);\n\n            m_ProjectionMatrix = Matrix.CreatePerspectiveFieldOfView(MyCamera.FovWithZoom, MyCamera.ForwardAspectRatio,\n               1,\n               MyMwcSectorConstants.SAFE_SECTOR_SIZE_HALF * 4);\n\n            effect.ViewProjectionMatrix.SetValue(MyCamera.ViewMatrixAtZero * m_ProjectionMatrix);\n\n            effect.GridTexture.SetValue(m_texture);\n\n            device.SetVertexBuffer(m_boxVertexBuffer);\n\n            effect.Apply();\n\n            device.DrawPrimitives(PrimitiveType.TriangleList, 0, BOX_TRIANGLES_COUNT);\n            MyPerformanceCounter.PerCameraDraw.TotalDrawCalls++;         */\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/HUD/MyHudText.cs",
    "content": "﻿using System.Text;\nusing MinerWarsMath;\nusing MinerWarsMath.Graphics;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing KeenSoftwareHouse.Library.Extensions;\n\nnamespace MinerWars.AppCode.Game.HUD\n{\n    class MyHudText\n    {\n        public MyGuiFont Font;\n        public Vector2 Position;                                //  Normalized position in HUD fullscreen (height isn't 1.0)\n        public Color Color;\n        public float Scale;\n        public MyGuiDrawAlignEnum Alignement;\n        readonly StringBuilder m_text;\n\n\n        //  IMPORTANT: This class isn't initialized by constructor, but by Start() because it's supposed to be used in memory pool\n        public MyHudText()\n        {\n            //  Must be preallocated because during game-play we will just use this string object for storing hud texts\n            m_text = new StringBuilder(256);\n        }\n\n        //  IMPORTANT: This class isn't initialized by constructor, but by Start() because it's supposed to be used in memory pool\n        public void Start(MyGuiFont font, Vector2 position, Color color, float scale, MyGuiDrawAlignEnum alignement)\n        {\n            Font = font;\n            Position = position;            \n            Color = color;\n            Scale = scale;\n            Alignement = alignement;\n\n            //  Clear current text\n            MyMwcUtils.ClearStringBuilder(m_text);\n        }\n\n        public void Append(StringBuilder sb)\n        {\n            MyMwcUtils.AppendStringBuilder(m_text, sb);\n        }\n\n        public void Append(string text)\n        {\n            m_text.Append(text);\n        }\n\n        public void AppendInt32(int number)\n        {\n            m_text.AppendInt32(number);\n        }\n\n        public void AppendLine()\n        {\n            m_text.AppendLine();\n        }\n\n        public StringBuilder GetStringBuilder()\n        {\n            return m_text;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/HUD/MyHudWarning.cs",
    "content": "﻿using System;\nusing System.Collections;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Audio.Dialogues;\n\nnamespace MinerWars.AppCode.Game.HUD {\n    /// <summary>\n    /// This class represents sound warning in HUD\n    /// </summary>\n    class MyHudSoundWarning\n    {\n        /// <summary>\n        /// Sound to play\n        /// </summary>\n        public MySoundCuesEnum Sound { get; set; }\n\n        /// <summary>\n        /// Interval (in ms) when sound will be repeated (0... no repeat)\n        /// </summary>\n        public int RepeatInterval { get; set; }\n\n        private int m_msSinceLastStateChange;\n        private int m_initialDelay;\n        private enum WarningState { NOT_STARTED, STARTED, PLAYED };\n        private WarningState m_warningState;\n        private bool m_updatedForCurrentWarning;\n        private MySoundCue? m_soundCue;\n        private bool m_playOverDialogues;\n\n        /// <summary>\n        /// Creates new instance of MyHudSoundWarning, without repeating\n        /// </summary>\n        /// <param name=\"sound\">Sound to play</param>\n        public MyHudSoundWarning(MySoundCuesEnum sound)\n            : this(sound, 0)\n        {                        \n        }\n\n        /// <summary>\n        /// Creates new instance of MyHudSoundWaring, with repeating\n        /// </summary>\n        /// <param name=\"sound\">Sound to play</param>\n        /// <param name=\"repeatInverval\">Repeat sound in interval (in ms) ... for non repeat set to 0</param>\n        /// <param name=\"initialDelay\">Waiting time (in ms) before the sound plays when the condition is encountered</param>\n        public MyHudSoundWarning(MySoundCuesEnum sound, int repeatInverval, int initialDelay = 0, bool playOverDialogues = true)\n        {\n            Sound = sound;\n            RepeatInterval = repeatInverval;\n            m_msSinceLastStateChange = 0;\n            m_warningState = WarningState.NOT_STARTED;\n            m_initialDelay = initialDelay;\n            m_playOverDialogues = playOverDialogues;\n        }\n\n        private void PlaySound()\n        {\n            if (m_playOverDialogues || !MyDialogues.IsPlaying())\n                if (m_soundCue == null || !m_soundCue.Value.IsPlaying)\n                    m_soundCue = MyAudio.AddCue2D(Sound);\n        }\n\n        /// <summary>\n        /// Call it in each update.\n        /// </summary>\n        /// <param name=\"isWarningDetected\">Indicates if warning is detected</param>\n        public void Update(bool isWarningDetected)\n        {\n            if (isWarningDetected)\n            {\n                switch (m_warningState)\n                {\n                    case WarningState.NOT_STARTED:\n                        m_msSinceLastStateChange = 0;\n                        m_warningState = WarningState.STARTED;\n                        break;\n                    case WarningState.STARTED:\n                        m_msSinceLastStateChange += MyConstants.PHYSICS_STEP_SIZE_IN_MILLISECONDS;\n                        if (m_msSinceLastStateChange >= m_initialDelay)\n                        {\n                            PlaySound();\n                            m_warningState = WarningState.PLAYED;\n                            m_msSinceLastStateChange -= m_initialDelay;\n                        }\n                        break;\n                    case WarningState.PLAYED:\n                        if (RepeatInterval > 0)\n                        {\n                            m_msSinceLastStateChange += MyConstants.PHYSICS_STEP_SIZE_IN_MILLISECONDS;\n                            if (m_msSinceLastStateChange >= RepeatInterval)\n                            {\n                                PlaySound();\n                                m_msSinceLastStateChange -= RepeatInterval;\n                            }\n                        }\n                        break;\n                }\n            }\n            else\n            {\n                if (m_soundCue != null && m_soundCue.Value.IsPlaying)\n                {\n                    m_soundCue.Value.Stop(SharpDX.XACT3.StopFlags.Release);\n                }\n                m_warningState = WarningState.NOT_STARTED;\n            }\n        }\n    }\n\n    /// <summary>\n    /// This class represents text warning in HUD\n    /// </summary>\n    class MyHudTextWarning\n    {\n        /// <summary>\n        /// Text which will be displayed when warning detected\n        /// </summary>\n        public StringBuilder Text { get; set; }\n\n        /// <summary>\n        /// Text's font\n        /// </summary>\n        public MyGuiFont TextFont { get; set; }\n\n        /// <summary>\n        /// Creates new instance with default text's color (RED)\n        /// </summary>\n        /// <param name=\"text\">Warning text</param>\n        public MyHudTextWarning(MyTextsWrapperEnum text)\n            : this(text, MyHudConstants.ENEMY_FONT)\n        {\n        }\n\n        /// <summary>\n        /// Creates new instance with default text's color (RED)\n        /// </summary>\n        /// <param name=\"text\">Warning text</param>\n        public MyHudTextWarning(StringBuilder text)\n            : this(text, MyHudConstants.ENEMY_FONT)\n        {\n        }\n\n        /// <summary>\n        /// Creates new instance with text's font\n        /// </summary>\n        /// <param name=\"text\">Warning text</param>\n        /// <param name=\"textFont\">Text's font</param>\n        public MyHudTextWarning(MyTextsWrapperEnum text, MyGuiFont textFont)\n            : this(MyTextsWrapper.Get(text), textFont)\n        {            \n        }\n\n        public MyHudTextWarning(MyTextsWrapperEnum text, params object[] args)\n            : this(new StringBuilder(MyTextsWrapper.GetFormatString(text, args)))\n        {\n        }\n\n        /// <summary>\n        /// Creates new instance with text's color\n        /// </summary>\n        /// <param name=\"text\">Warning text</param>\n        /// <param name=\"textFont\">Text's font</param>\n        public MyHudTextWarning(StringBuilder text, MyGuiFont textFont)\n        {\n            Text = text;\n            TextFont = textFont;\n        }\n\n        /// <summary>\n        /// Draws warning text\n        /// </summary>\n        /// <param name=\"position\">Position to draw</param>\n        /// <param name=\"highlight\">Highlight multiplicator of text's color</param>\n        /// <returns>Drawed rectangle</returns>\n        public MyRectangle2D Draw(Vector2 position, float highlight)\n        {\n            return MyGuiManager.DrawString(TextFont, Text, position, 1f,\n                                    Color.White * highlight, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER);\n        }\n    }\n\n    /// <summary>\n    /// Delegate of warning detection method\n    /// </summary>\n    /// <returns></returns>\n    delegate bool MyWarningDetectionMethod();\n\n    /// <summary>\n    /// This class represents HUD warning\n    /// </summary>\n    class MyHudWarning\n    {\n        /// <summary>\n        /// Warning's priority\n        /// </summary>\n        public int Priority { get; private set; }\n\n        private MyWarningDetectionMethod m_warningDetectionMethod;\n        private MyHudSoundWarning m_soundWarning;\n        private MyHudTextWarning m_textWarning;\n\n        private bool m_warningDetected;\n\n        /// <summary>\n        /// Creates new instance of HUD warning\n        /// </summary>\n        /// <param name=\"detectionMethod\">Warning's detection method</param>\n        /// <param name=\"soundWarning\">Sound warning</param>\n        /// <param name=\"textWarning\">Text warning</param>\n        /// <param name=\"priority\">Warning's priority</param>\n        public MyHudWarning(MyWarningDetectionMethod detectionMethod, MyHudSoundWarning soundWarning, MyHudTextWarning textWarning, int priority)\n        {            \n            m_warningDetectionMethod = detectionMethod;\n            m_soundWarning = soundWarning;\n            m_textWarning = textWarning;\n            Priority = priority;\n            m_warningDetected = false;            \n        }\n\n        /// <summary>\n        /// Call it in each update\n        /// </summary>\n        /// <param name=\"isWarnedHigherPriority\">Indicated if warning with greater priority was signalized</param>\n        /// <returns>Returns true if warning detected. Else returns false</returns>\n        public bool Update(bool isWarnedHigherPriority)\n        {            \n            m_warningDetected = false;\n            if (!isWarnedHigherPriority)\n            {\n                m_warningDetected = m_warningDetectionMethod();\n            }\n\n            if (m_soundWarning != null)\n            {\n                m_soundWarning.Update(m_warningDetected);\n            }\n            \n            return m_warningDetected;\n        }\n\n        /// <summary>\n        /// Draws warning's text if any warning detected\n        /// </summary>\n        /// <param name=\"position\">Position to draw</param>\n        /// <param name=\"highlight\">Highlight multiplicator of text's color</param>\n        /// <param name=\"drawedRectangle\">Drawed rectangle</param>\n        /// <returns>Returns true if warning's text drawed. Else returns false</returns>\n        public bool Draw(Vector2 position, float highlight, out MyRectangle2D? drawedRectangle)\n        {\n            drawedRectangle = null;\n            if (m_warningDetected && m_textWarning != null)\n            {\n                drawedRectangle = m_textWarning.Draw(position, highlight);\n            }\n            return drawedRectangle != null;\n        }\n    }    \n\n    /// <summary>\n    /// This class represents HUD warning group. Only 1 warning can be signalized, from this group.\n    /// </summary>\n    class MyHudWarningGroup \n    {\n        private List<MyHudWarning> m_hudWarnings;\n        private bool m_canBeTurnedOff;\n\n        /// <summary>\n        /// Creates new instance of HUD warning group\n        /// </summary>\n        /// <param name=\"hudWarnings\"></param>\n        public MyHudWarningGroup(List<MyHudWarning> hudWarnings, bool canBeTurnedOff)\n        {            \n            m_hudWarnings = new List<MyHudWarning>(hudWarnings);\n            SortByPriority();\n            m_canBeTurnedOff = canBeTurnedOff;\n        }\n\n        /// <summary>\n        /// Call it in each update.\n        /// </summary>\n        public void Update()\n        {\n            if (m_canBeTurnedOff && MyConfig.Notifications == false)\n                return;\n            \n            bool isWarnedHigherPriority = false;\n            foreach (MyHudWarning hudWarning in m_hudWarnings)\n            {\n                if (hudWarning.Update(isWarnedHigherPriority))\n                {\n                    isWarnedHigherPriority = true;\n                }\n            }\n        }\n\n        /// <summary>\n        /// Draws warning's text if any warning detected\n        /// </summary>\n        /// <param name=\"position\">Position to draw</param>\n        /// <param name=\"highlight\">Highlight multiplicator of text's color</param>\n        /// <param name=\"drawedRectangle\">Drawed rectangle</param>\n        /// <returns>Returns true if warning's text drawed. Else returns false</returns>/// <returns></returns>\n        public bool Draw(Vector2 position, float highlight, out MyRectangle2D? drawedRectangle)\n        {\n            drawedRectangle = null;\n\n            if (m_canBeTurnedOff && MyConfig.Notifications == false)\n                return false;\n\n            foreach (MyHudWarning hudWarning in m_hudWarnings)\n            {\n                if (hudWarning.Draw(position, highlight, out drawedRectangle))\n                {\n                    return true;\n                }\n            }\n            return false;\n        }\n\n        /// <summary>\n        /// Adds new HUD warning to this group\n        /// </summary>\n        /// <param name=\"hudWarning\">HUD warning to add</param>\n        public void Add(MyHudWarning hudWarning)\n        {\n            m_hudWarnings.Add(hudWarning);\n            SortByPriority();\n        }\n\n        /// <summary>\n        /// Removes HUD warning from this group\n        /// </summary>\n        /// <param name=\"hudWarning\">HUD warning to remove</param>\n        public void Remove(MyHudWarning hudWarning)\n        {\n            m_hudWarnings.Remove(hudWarning);            \n        }\n\n        /// <summary>\n        /// Removes all HUD warnings from this group\n        /// </summary>        \n        public void Clear()\n        {\n            m_hudWarnings.Clear();\n        }\n\n        private void SortByPriority()\n        {\n            m_hudWarnings.Sort((x, y) => x.Priority.CompareTo(y.Priority));\n        }\n    }    \n\n    /// <summary>\n    /// This class represents HUD warnings for entities\n    /// </summary>\n    static class MyHudWarnings \n    {\n        private const float m_highlightMin = 0.6f;\n        private const float m_highlightMax = 1.0f;\n        private const float m_highlightStep = 0.02f;\n        private static readonly Vector2 m_drawPosition = new Vector2(0.5f, 0.35f);\n\n        private static Dictionary<WeakReference, List<MyHudWarningGroup>> m_hudWarnings = new Dictionary<WeakReference, List<MyHudWarningGroup>>();        \n        private static bool m_highlightIncreasing = false;\n        private static float m_actualHighlight = m_highlightMax;\n\n        /// <summary>\n        /// Register new HUD warning group for entity\n        /// </summary>\n        /// <param name=\"entity\">Entity</param>\n        /// <param name=\"hudWarningGroup\">HUD warning group</param>\n        public static void Add(object entity, MyHudWarningGroup hudWarningGroup)\n        {\n            foreach (KeyValuePair<WeakReference, List<MyHudWarningGroup>> keyValuePair in m_hudWarnings)\n            {\n                if (keyValuePair.Key.Target == entity)\n                {\n                    keyValuePair.Value.Add(hudWarningGroup);\n                    return;\n                }\n            }\n            WeakReference weakReference = new WeakReference(entity);\n            m_hudWarnings[weakReference] = new List<MyHudWarningGroup>();\n            m_hudWarnings[weakReference].Add(hudWarningGroup);            \n        }\n\n        /// <summary>\n        /// Unregister HUD warning group for entity\n        /// </summary>\n        /// <param name=\"entity\">Entity</param>\n        /// <param name=\"hudWarningGroup\">HUD warning group</param>\n        public static void Remove(object entity, MyHudWarningGroup hudWarningGroup)\n        {\n            foreach (KeyValuePair<WeakReference, List<MyHudWarningGroup>> keyValuePair in m_hudWarnings)\n            {\n                if (keyValuePair.Key.Target == entity)\n                {\n                    keyValuePair.Value.Remove(hudWarningGroup);\n                }\n            }\n        }\n\n        /// <summary>\n        /// Unregister all HUD warning groups for entity\n        /// </summary>\n        /// <param name=\"entity\">Entity</param>\n        public static void Remove(object entity)\n        {\n            WeakReference weakReferenceToRemove = null;\n            foreach (KeyValuePair<WeakReference, List<MyHudWarningGroup>> keyValuePair in m_hudWarnings)\n            {\n                if (keyValuePair.Key.Target == entity)\n                {\n                    weakReferenceToRemove = keyValuePair.Key;\n                    break;\n                }\n            }\n            if (weakReferenceToRemove != null)\n            {\n                m_hudWarnings.Remove(weakReferenceToRemove);\n            }\n        }\n\n        /// <summary>\n        /// Unregister all HUD warning groups for all entities\n        /// </summary>\n        public static void UnloadData()\n        {\n            m_hudWarnings.Clear();\n        }\n\n        /// <summary>\n        /// Call it in each update\n        /// </summary>\n        public static void Update()\n        {            \n            UpdateHighlight();\n\n            foreach (KeyValuePair<WeakReference, List<MyHudWarningGroup>> keyValuePair in m_hudWarnings)\n            {\n                MyEntity entity = keyValuePair.Key.Target as MyEntity;\n                if (entity != null && entity.Activated)\n                {\n                    foreach (MyHudWarningGroup hudWarningGroup in keyValuePair.Value)\n                    {\n                        hudWarningGroup.Update();\n                    }\n                }\n            }\n        }\n\n        private static void UpdateHighlight()\n        {\n            if (m_highlightIncreasing)\n            {\n                m_actualHighlight += m_highlightStep;\n            }\n            else\n            {\n                m_actualHighlight -= m_highlightStep;\n            }\n\n            if (m_actualHighlight > m_highlightMax)\n            {\n                m_highlightIncreasing = false;\n            }\n            else if (m_actualHighlight < m_highlightMin)\n            {\n                m_highlightIncreasing = true;\n            }\n        }\n\n        /// <summary>\n        /// Draws HUD warning's texts\n        /// </summary>\n        public static void Draw()\n        {\n            Vector2 drawPosition = m_drawPosition;\n            MyRectangle2D? drawedRectangle = null;\n            foreach (KeyValuePair<WeakReference, List<MyHudWarningGroup>> keyValuePair in m_hudWarnings)\n            {\n                MyEntity entity = keyValuePair.Key.Target as MyEntity;\n                if (entity != null && entity.Activated)\n                {\n                    foreach (MyHudWarningGroup hudWarningGroup in keyValuePair.Value)\n                    {\n                        if (hudWarningGroup.Draw(drawPosition, m_actualHighlight, out drawedRectangle))\n                        {\n                            drawPosition.Y += drawedRectangle.Value.Size.Y;\n                        }\n                    }\n                }\n            }            \n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Inventory/MyInventory.cs",
    "content": "﻿#region Using\n\nusing System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Text;\nusing MinerWarsMath.Graphics;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.Gameplay;\nusing MinerWars.AppCode.Game.GUI.Helpers;\nusing MinerWars.CommonLIB.AppCode.Generics;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.Prefabs;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing System.Reflection;\nusing KeenSoftwareHouse.Library.Extensions;\nusing System.Runtime.Serialization;\nusing SysUtils.Utils;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Audio;\nusing System.IO;\n\n#endregion\n\nnamespace MinerWars.AppCode.Game.Inventory\n{\n    /// <summary>\n    /// Defines inventory-able object.\n    /// </summary>\n    interface IMyInventory\n    {\n        /// <summary>\n        /// Gets the inventory.\n        /// </summary>\n        MyInventory Inventory { get; }\n    }\n\n    delegate void OnInventoryContentChange(MyInventory sender);\n    delegate void OnInventoryItemAmountChange(MyInventory sender, MyInventoryItem inventoryItem, float amountChanged);\n\n    class MyInventory\n    {\n        #region Contants\n        public const int DEFAULT_MAX_ITEMS = 200;\n        public const float DEFAULT_PRICE_COEFICIENT = 1f;\n        #endregion\n\n        #region Fields\n        private List<MyInventoryItem> m_inventoryItems = new List<MyInventoryItem>();\n        private List<MyInventoryItem> m_helperInventoryItems = new List<MyInventoryItem>();\n        private List<MyInventoryItem> m_helperInventoryItemsForAddAndRemove = new List<MyInventoryItem>();        \n\n        private int m_maxItems;\n        private OnAmountChange m_onItemAmountChangeHandler;\n        private float m_priceCoeficient;\n        private bool m_unlimitedCapacity;\n\n        public bool IsDummy = false;\n        #endregion\n\n        #region Properties\n        /// <summary>\n        /// Maximum items in inventory\n        /// </summary>\n        public int MaxItems\n        {\n            get\n            {\n                return m_maxItems;\n            }\n            set\n            {\n                m_maxItems = value;\n                FixItemsOverMaxLimit();\n            }\n        }\n\n        /// <summary>\n        /// Sets or gets unlimited inventory capacity indicator\n        /// </summary>\n        public bool UnlimitedCapacity \n        {\n            get \n            {\n                return m_unlimitedCapacity;\n            }\n            set \n            {\n                m_unlimitedCapacity = value;\n                if (!m_unlimitedCapacity) \n                {\n                    FixItemsOverMaxLimit();\n                }\n            }\n        }\n\n        /// <summary>\n        /// Indicates if inventory is full or not\n        /// </summary>\n        public bool IsFull \n        {\n            get \n            {\n                return m_inventoryItems.Count >= MaxItems && !UnlimitedCapacity;\n            }\n        }\n\n        /// <summary>\n        /// Intentory template to refill\n        /// </summary>\n        public MyMwcInventoryTemplateTypeEnum? TemplateType { get; set; }\n\n        /// <summary>\n        /// Price coeficient for trading\n        /// </summary>\n        public float PriceCoeficient \n        {\n            get \n            {                \n                return m_priceCoeficient;\n            }\n            set \n            {\n                Debug.Assert(value >= 1f);\n                m_priceCoeficient = value;\n            }\n        }\n\n        /// <summary>\n        /// Inventory synchronizer\n        /// </summary>\n        public MyInventorySynchronizer InventorySynchronizer { get; set; }        \n        #endregion\n\n        #region Static\n        static MyObjectsPool<MyInventoryItem> InventoryItemsPool = new MyObjectsPool<MyInventoryItem>(MyConstants.INVENTORY_ITEM_POOL);\n\n        public static MyInventoryItem CreateInventoryItemFromObjectBuilder(MyMwcObjectBuilder_Base objectBuilder)\n        {\n            return MyInventory.CreateInventoryItemFromObjectBuilder(objectBuilder, 1f);\n        }\n\n        public static MyInventoryItem CreateInventoryItemFromObjectBuilder(MyMwcObjectBuilder_Base objectBuilder, float amount)\n        {\n            float maxAmount = MyGameplayConstants.GetGameplayProperties(objectBuilder, MyMwcObjectBuilder_FactionEnum.Euroamerican).MaxAmount;\n            float amountToAdd = Math.Min(maxAmount, amount);\n\n            int objectBuilderId = objectBuilder.GetObjectBuilderId().HasValue ? objectBuilder.GetObjectBuilderId().Value : 0;\n\n            MyGuiHelperBase guiHelper = MyGuiObjectBuilderHelpers.GetGuiHelper(objectBuilder.GetObjectBuilderType(), objectBuilderId);\n            MyCommonDebugUtils.AssertDebug(guiHelper != null);\n\n            //warning: use default faction for get gameplay properties for inventory item\n            MyGameplayProperties inventoryItemProperties = MyGameplayConstants.GetGameplayProperties(objectBuilder.GetObjectBuilderType(), objectBuilderId, MyMwcObjectBuilder_FactionEnum.Euroamerican);\n            MyCommonDebugUtils.AssertDebug(inventoryItemProperties != null);\n\n            \n           \n            MyInventoryItem item = MyInventory.InventoryItemsPool.Allocate();\n            item.Start(guiHelper, inventoryItemProperties, objectBuilder, amountToAdd);\n            return item;\n        }        \n\n        public static MyInventoryItem CreateInventoryItemFromInventoryItemObjectBuilder(MyMwcObjectBuilder_InventoryItem inventoryItemBuilder)\n        {\n            MyInventoryItem item = CreateInventoryItemFromObjectBuilder(inventoryItemBuilder.ItemObjectBuilder, inventoryItemBuilder.Amount);\n            item.TemporaryFlags = inventoryItemBuilder.TemporaryFlags;\n            return item;\n        }\n\n        public static void CloseInventoryItem(MyInventoryItem item)\n        {\n            item.Owner = null;\n            MyInventory.InventoryItemsPool.Deallocate(item);\n        }\n        \n        #endregion\n\n        #region Ctors\n\n        public MyInventory()\n            : this(DEFAULT_MAX_ITEMS)\n        {            \n        }\n\n        public MyInventory(int maxItems)\n        {            \n            MaxItems = maxItems;\n            PriceCoeficient = DEFAULT_PRICE_COEFICIENT;\n            m_onItemAmountChangeHandler = new OnAmountChange(OnAmountChange);\n        }\n\n        #endregion\n\n        #region Events\n        /// <summary>\n        /// Called when content changed\n        /// </summary>\n        public event OnInventoryContentChange OnInventoryContentChange;\n\n        /// <summary>\n        /// Called when amount of any item in inventory changed\n        /// </summary>\n        public event OnInventoryItemAmountChange OnInventoryItemAmountChange;\n        #endregion\n\n        #region Methods\n        /// <summary>\n        /// Initialize inventory from objectbuilder\n        /// </summary>\n        /// <param name=\"inventoryObjectBuilder\">Inventory objectbuilder</param>        \n        public void Init(MyMwcObjectBuilder_Inventory inventoryObjectBuilder, float defaultPriceCoeficient = DEFAULT_PRICE_COEFICIENT)\n        {\n            Debug.Assert(inventoryObjectBuilder != null);\n\n            if (inventoryObjectBuilder.MaxItems == 0)\n            {\n                MaxItems = MyInventory.DEFAULT_MAX_ITEMS;\n            }\n            else\n            {\n                MaxItems = inventoryObjectBuilder.MaxItems;\n            }\n            \n            PriceCoeficient = inventoryObjectBuilder.PriceCoeficient != null ? inventoryObjectBuilder.PriceCoeficient.Value : defaultPriceCoeficient;\n            TemplateType = inventoryObjectBuilder.TemplateType;\n            UnlimitedCapacity = inventoryObjectBuilder.UnlimitedCapacity;\n\n            if (inventoryObjectBuilder.InventoryItems != null && inventoryObjectBuilder.InventoryItems.Count > 0)\n            {\n                RemoveAllInventoryItemsPrivate(true);\n                List<MyInventoryItem> inventoryItemsToAdd = new List<MyInventoryItem>();\n                foreach (MyMwcObjectBuilder_InventoryItem inventoryItemObjectBuilder in inventoryObjectBuilder.InventoryItems)\n                {\n                    if (inventoryItemsToAdd.Count >= MaxItems && !UnlimitedCapacity) \n                    {\n                        break;\n                    }\n                    // if old foundation factory is in inventory, we replace it with new prefab foundation factory\n                    if (inventoryItemObjectBuilder.ItemObjectBuilder is MyMwcObjectBuilder_FoundationFactory)\n                    {\n                        inventoryItemObjectBuilder.ItemObjectBuilder = MyMwcObjectBuilder_Base.CreateNewObject(MyMwcObjectBuilderTypeEnum.PrefabFoundationFactory, (int)MyMwcObjectBuilder_PrefabFoundationFactory_TypesEnum.DEFAULT);\n                    }\n\n                    // hack: we need set default prefab health and max health to prefab object builder\n                    if (inventoryItemObjectBuilder.ItemObjectBuilder is MyMwcObjectBuilder_PrefabBase)\n                    {\n                        MyMwcObjectBuilder_PrefabBase prefabBuilder = inventoryItemObjectBuilder.ItemObjectBuilder as MyMwcObjectBuilder_PrefabBase;\n                        if (prefabBuilder.PrefabHealthRatio == 0f)\n                        {\n                            prefabBuilder.PrefabHealthRatio = MyGameplayConstants.HEALTH_RATIO_MAX;\n                        }\n                        if (prefabBuilder.PrefabMaxHealth == 0f)\n                        {\n                            prefabBuilder.PrefabMaxHealth = MyGameplayConstants.MAXHEALTH_PREFAB;\n                        }\n                    }\n\n                    MyInventoryItem inventoryItem = CreateInventoryItemFromObjectBuilder(inventoryItemObjectBuilder.ItemObjectBuilder, inventoryItemObjectBuilder.Amount);\n                    inventoryItem.TemporaryFlags = inventoryItemObjectBuilder.TemporaryFlags;\n                    inventoryItemsToAdd.Add(inventoryItem);\n                }                \n                AddInventoryItems(inventoryItemsToAdd);\n            }\n            else \n            {\n                ClearInventoryItems(true);\n            }\n        }\n\n        /// <summary>\n        /// Returns objectbuilder of inventory\n        /// </summary>\n        /// <returns></returns>\n        public MyMwcObjectBuilder_Inventory GetObjectBuilder(bool getExactCopy)\n        {\n            List<MyMwcObjectBuilder_InventoryItem> inventoryItemsObjectBuilders = new List<MyMwcObjectBuilder_InventoryItem>();\n            foreach (MyInventoryItem item in m_inventoryItems)\n            {\n                //MyMwcObjectBuilder_InventoryItem inventoryItemBuilder = new MyMwcObjectBuilder_InventoryItem(item.GetInventoryItemObjectBuilder(getExactCopy), item.Amount);\n                MyMwcObjectBuilder_InventoryItem inventoryItemBuilder = item.GetObjectBuilder();\n                if(inventoryItemBuilder.ItemObjectBuilder is MyMwcObjectBuilder_PrefabBase)\n                {\n                    MyMwcObjectBuilder_PrefabBase prefabBuilder = inventoryItemBuilder.ItemObjectBuilder as MyMwcObjectBuilder_PrefabBase;\n                    if (prefabBuilder.PrefabHealthRatio == 0f)\n                    {\n                        prefabBuilder.PrefabHealthRatio = MyGameplayConstants.HEALTH_RATIO_MAX;\n                    }\n                    if (prefabBuilder.PrefabMaxHealth == 0f)\n                    {\n                        prefabBuilder.PrefabMaxHealth = MyGameplayConstants.MAXHEALTH_PREFAB;\n                    }\n                }\n                inventoryItemsObjectBuilders.Add(inventoryItemBuilder);\n            }\n            MyMwcObjectBuilder_Inventory inventoryBuilder = new MyMwcObjectBuilder_Inventory(inventoryItemsObjectBuilders, MaxItems, TemplateType, PriceCoeficient);\n            inventoryBuilder.UnlimitedCapacity = UnlimitedCapacity;\n            return inventoryBuilder;\n        }\n\n        /// <summary>\n        /// Deallocate inventory items\n        /// </summary>\n        public void Close()\n        {\n            CloseInventoryItemsPrivate();\n            m_inventoryItems.Clear();\n            OnInventoryContentChange = null;\n            OnInventoryItemAmountChange = null;\n            if (InventorySynchronizer != null) \n            {\n                InventorySynchronizer.Close();\n                InventorySynchronizer = null;\n            }\n            //m_inventoryItems = null;            \n        }\n\n        /// <summary>\n        /// Returns all inventory items\n        /// </summary>\n        /// <returns></returns>\n        public List<MyInventoryItem> GetInventoryItems()\n        {\n            return m_inventoryItems;\n        }\n\n        /// <summary>\n        /// Called when content of inventory changed\n        /// </summary>\n        private void CallContentChange()\n        {\n            if (OnInventoryContentChange != null)\n                OnInventoryContentChange(this);\n\n        }\n\n        /// <summary>\n        /// Called where amount of inventory item changed\n        /// </summary>\n        /// <param name=\"sender\"></param>\n        /// <param name=\"amountChanged\"></param>\n        private void OnAmountChange(MyInventoryItem sender, float amountChanged)\n        {\n            if (OnInventoryItemAmountChange != null)\n            {\n                OnInventoryItemAmountChange(this, sender, amountChanged);\n            }\n        }\n\n        /// <summary>\n        /// Adds inventory item to inventory\n        /// </summary>\n        /// <param name=\"item\">Inventory item</param>\n        public void AddInventoryItem(MyInventoryItem item)\n        {\n            AddItemToInventoryPrivate(item);\n            CallContentChange();\n        }\n\n        /// <summary>\n        /// Adds inventory items to inventory\n        /// </summary>\n        /// <param name=\"items\">Inventory items</param>\n        public void AddInventoryItems(IEnumerable<MyInventoryItem> items)\n        {\n            bool added = false;\n            foreach (MyInventoryItem item in items)\n            {\n                AddItemToInventoryPrivate(item);\n                added = true;\n            }\n            if (added)\n            {\n                CallContentChange();\n            }\n        }\n\n        /// <summary>\n        /// Removes inventory item from inventory\n        /// </summary>\n        /// <param name=\"item\">Inventory item</param>\n        /// <param name=\"closeInventoryItem\">If true, then close inventory item's instance in pool</param>\n        public void RemoveInventoryItem(MyInventoryItem item, bool closeInventoryItem = false)\n        {\n            if (RemoveItemFromInventoryPrivate(item, closeInventoryItem))\n            {\n                CallContentChange();\n            }\n        }\n\n        /// <summary>\n        /// Removes inventory items from inventory\n        /// </summary>\n        /// <param name=\"items\">Inventory items</param>\n        /// <param name=\"closeInventoryItems\">If true, then close inventory item's instance in pool</param>\n        public void RemoveInventoryItems(IEnumerable<MyInventoryItem> items, bool closeInventoryItems = false) \n        {\n            bool removed = false;\n            foreach (MyInventoryItem item in items)\n            {\n                if (RemoveItemFromInventoryPrivate(item, closeInventoryItems)) \n                {\n                    removed = true;\n                }\n            }\n\n            if (removed)\n            {\n                CallContentChange();\n            }\n        }\n\n        //public void RemoveInventoryItemsByType(MyMwcObjectBuilderTypeEnum objectBuilderType, int? objectBuilderId = null)\n        //{\n        //    for (int i = 0; i < m_inventoryItems.Count; i++)\n        //    {\n        //        MyInventoryItem inventoryItem = m_inventoryItems[i];\n\n        //        if (inventoryItem.ObjectBuilderType == objectBuilderType && (objectBuilderId == null || inventoryItem.ObjectBuilderId == objectBuilderId))\n        //        {\n        //            RemoveInventoryItem(inventoryItem);\n        //        }\n        //    }\n        //}\n\n\n        /// <summary>\n        /// Removes inventory items from inventory\n        /// </summary>\n        /// <param name=\"objectBuilder\">Inventory item's object builder</param>\n        /// <param name=\"closeInventoryItems\">If true, then close inventory item's instance in pool</param>\n        public void RemoveInventoryItems(MyMwcObjectBuilder_Base objectBuilder, bool closeInventoryItems = false)\n        {\n            RemoveInventoryItems(objectBuilder.GetObjectBuilderType(), objectBuilder.GetObjectBuilderId(), closeInventoryItems);\n        }\n\n        /// <summary>\n        /// Removes inventory items from inventory\n        /// </summary>\n        /// <param name=\"objectBuilderType\">Inventory item's object builder type</param>\n        /// <param name=\"objectBuilderId\">Inventory item's object builder id</param>\n        /// <param name=\"closeInventoryItems\">If true, then close inventory item's instance in pool</param>\n        public void RemoveInventoryItems(MyMwcObjectBuilderTypeEnum objectBuilderType, int? objectBuilderId, bool closeInventoryItems = false)\n        {\n            m_helperInventoryItems.Clear();\n            GetInventoryItems(ref m_helperInventoryItems, objectBuilderType, objectBuilderId);\n            RemoveInventoryItems(m_helperInventoryItems, closeInventoryItems);\n        }\n\n        /// <summary>\n        /// Clears inventory\n        /// </summary>\n        /// <param name=\"closeInventoryItem\">If true, then close inventory item's instance in pool</param>\n        public void ClearInventoryItems(bool closeInventoryItem = false) \n        {\n            MyMwcLog.WriteLine(\"MyInventory::ClearInventoryItems - START\");\n            MyMwcLog.IncreaseIndent();\n\n            bool removed = RemoveAllInventoryItemsPrivate(closeInventoryItem);            \n            \n            if (removed)\n            {\n                CallContentChange();\n            }\n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyInventory::ClearInventoryItems - END\");\n        }\n\n        /// <summary>\n        /// Fills inventory with all items\n        /// </summary>        \n        /// <param name=\"maxItems\">Max items limit</param>\n        public void FillInventoryWithAllItems(int? maxItems = null, int? increaseMaxItemsAbout = null, bool loadSmallShips = false)\n        {\n            if (maxItems != null) \n            {\n                MaxItems = maxItems.Value;\n            }\n            MyInventoryItem inventoryItem;\n            List<MyInventoryItem> inventoryItemsToAdd = new List<MyInventoryItem>();\n            // ammo\n            foreach (MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum item in MyGuiSmallShipHelpers.MyMwcObjectBuilder_SmallShip_Ammo_TypesEnumValues)\n            {\n                inventoryItem = MyInventory.CreateInventoryItemFromObjectBuilder(new MyMwcObjectBuilder_SmallShip_Ammo(item));\n                inventoryItem.Amount = inventoryItem.MaxAmount;\n                inventoryItemsToAdd.Add(inventoryItem);\n            }\n            // engines\n            foreach (MyMwcObjectBuilder_SmallShip_Engine_TypesEnum item in MyGuiSmallShipHelpers.MyMwcObjectBuilder_SmallShip_Engine_TypesEnumValues)\n            {\n                inventoryItem = MyInventory.CreateInventoryItemFromObjectBuilder(new MyMwcObjectBuilder_SmallShip_Engine(item));\n                inventoryItemsToAdd.Add(inventoryItem);\n            }\n            // weapons\n            foreach (MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum item in MyGuiSmallShipHelpers.MyMwcObjectBuilder_SmallShip_Weapon_TypesEnumValues)\n            {\n                inventoryItem = MyInventory.CreateInventoryItemFromObjectBuilder(new MyMwcObjectBuilder_SmallShip_Weapon(item));\n                inventoryItemsToAdd.Add(inventoryItem);\n            }\n            // tools\n            foreach (MyMwcObjectBuilder_SmallShip_Tool_TypesEnum item in MyGuiSmallShipHelpers.MyMwcObjectBuilder_SmallShip_ToolEnumValues)\n            {\n                inventoryItem = MyInventory.CreateInventoryItemFromObjectBuilder(new MyMwcObjectBuilder_SmallShip_Tool(item));\n                inventoryItem.Amount = inventoryItem.MaxAmount;\n                inventoryItemsToAdd.Add(inventoryItem);\n            }\n            // armors\n            foreach (MyMwcObjectBuilder_SmallShip_Armor_TypesEnum item in Enum.GetValues(typeof(MyMwcObjectBuilder_SmallShip_Armor_TypesEnum)))\n            {\n                inventoryItem = MyInventory.CreateInventoryItemFromObjectBuilder(new MyMwcObjectBuilder_SmallShip_Armor(item));\n                inventoryItemsToAdd.Add(inventoryItem);\n            }\n            // radars\n            foreach (MyMwcObjectBuilder_SmallShip_Radar_TypesEnum item in Enum.GetValues(typeof(MyMwcObjectBuilder_SmallShip_Radar_TypesEnum)))\n            {\n                inventoryItem = MyInventory.CreateInventoryItemFromObjectBuilder(new MyMwcObjectBuilder_SmallShip_Radar(item));\n                inventoryItemsToAdd.Add(inventoryItem);\n            }\n            // blueprints\n            foreach (MyMwcObjectBuilder_Blueprint_TypesEnum item in Enum.GetValues(typeof(MyMwcObjectBuilder_Blueprint_TypesEnum)))\n            {\n                inventoryItem = MyInventory.CreateInventoryItemFromObjectBuilder(new MyMwcObjectBuilder_Blueprint(item));\n                inventoryItemsToAdd.Add(inventoryItem);\n            }\n            //ore             \n            foreach (MyMwcObjectBuilder_Ore_TypesEnum item in Enum.GetValues(typeof(MyMwcObjectBuilder_Ore_TypesEnum)))\n            {\n                inventoryItem = MyInventory.CreateInventoryItemFromObjectBuilder(new MyMwcObjectBuilder_Ore(item));\n                inventoryItem.Amount = 1;\n                inventoryItemsToAdd.Add(inventoryItem);\n            }\n            // fakeId\n            foreach (MyMwcObjectBuilder_FactionEnum item in Enum.GetValues(typeof(MyMwcObjectBuilder_FactionEnum)))\n            {\n                inventoryItem = MyInventory.CreateInventoryItemFromObjectBuilder(new MyMwcObjectBuilder_FalseId(item));\n                inventoryItemsToAdd.Add(inventoryItem);\n            }\n            // hacking tool\n            foreach (MyMwcObjectBuilder_SmallShip_HackingTool_TypesEnum item in Enum.GetValues(typeof(MyMwcObjectBuilder_SmallShip_HackingTool_TypesEnum)))\n            {\n                inventoryItem = MyInventory.CreateInventoryItemFromObjectBuilder(new MyMwcObjectBuilder_SmallShip_HackingTool(item));\n                inventoryItemsToAdd.Add(inventoryItem);\n            }\n            // drone\n            foreach (MyMwcObjectBuilder_Drone_TypesEnum droneType in Enum.GetValues(typeof(MyMwcObjectBuilder_Drone_TypesEnum)))\n            {\n                var droneBuilder = new MyMwcObjectBuilder_Drone(droneType);\n                inventoryItem = CreateInventoryItemFromObjectBuilder(droneBuilder);\n                inventoryItem.Amount = inventoryItem.MaxAmount;\n                inventoryItemsToAdd.Add(inventoryItem);\n            }\n            // playerships\n            if (loadSmallShips)\n            {\n                foreach (MyMwcObjectBuilder_SmallShip_TypesEnum shipType in Enum.GetValues(typeof(MyMwcObjectBuilder_SmallShip_TypesEnum)))\n                {\n                    inventoryItem = MyInventory.CreateInventoryItemFromObjectBuilder(MyMwcObjectBuilder_SmallShip_Player.CreateDefaultShip(shipType, MySession.PlayerShip.Faction, MyShipTypeConstants.GetShipTypeProperties(shipType).GamePlay.CargoCapacity));\n                    inventoryItemsToAdd.Add(inventoryItem);\n                }\n            }\n\n            //// prefabs\n            //foreach(MyMwcObjectBuilder_Prefab_TypesEnum item in Enum.GetValues(typeof(MyMwcObjectBuilder_Prefab_TypesEnum))) {\n            //    inventoryItem = MyInventory.CreateInventoryItemFromObjectBuilder(new MyMwcObjectBuilder_Prefab(item, new MyMwcVector3Short(0, 0, 0), new Vector3(0, 0, 0), MyGameplayConstants.MAXHEALTH_PREFAB));\n            //    inventoryItemsToAdd.Add(inventoryItem);\n            //}\n            //// small debris\n            //foreach (MyMwcObjectBuilder_SmallDebris_TypesEnum item in Enum.GetValues(typeof(MyMwcObjectBuilder_SmallDebris_TypesEnum)))\n            //{\n            //    inventoryItem = MyInventory.CreateInventoryItemFromObjectBuilder(new MyMwcObjectBuilder_SmallDebris(item, true));\n            //    inventoryItemsToAdd.Add(inventoryItem);\n            //}\n            // foundation factory\n            inventoryItem = MyInventory.CreateInventoryItemFromObjectBuilder(MyMwcObjectBuilder_Base.CreateNewObject(MyMwcObjectBuilderTypeEnum.PrefabFoundationFactory, (int)MyMwcObjectBuilder_PrefabFoundationFactory_TypesEnum.DEFAULT));\n            inventoryItemsToAdd.Add(inventoryItem);\n\n            if (maxItems != null && !UnlimitedCapacity)\n            {\n                while (inventoryItemsToAdd.Count > maxItems.Value) \n                {\n                    int lastIndex = inventoryItemsToAdd.Count - 1;\n                    inventoryItem = inventoryItemsToAdd[lastIndex];\n                    inventoryItemsToAdd.RemoveAt(lastIndex);      \n                    MyInventory.CloseInventoryItem(inventoryItem);                                  \n                }                \n            }\n            else \n            {\n                if (inventoryItemsToAdd.Count > MaxItems) \n                {\n                    MaxItems = inventoryItemsToAdd.Count;\n                }\n            }\n            if (increaseMaxItemsAbout != null) \n            {\n                MaxItems += increaseMaxItemsAbout.Value;\n            }\n            AddInventoryItems(inventoryItemsToAdd);\n        }\n\n        /// <summary>\n        /// Find inventory items in inventory\n        /// </summary>\n        /// <param name=\"inventoryItems\">Collection to fill founded inventory items</param>\n        /// <param name=\"objectBuilderType\">Item's object builder type</param>\n        /// <param name=\"objectBuilderId\">Item's object builder Id</param>\n        /// <returns></returns>\n        public void GetInventoryItems(ref List<MyInventoryItem> inventoryItems, MyMwcObjectBuilderTypeEnum objectBuilderType, int? objectBuilderId)\n        {            \n            foreach (MyInventoryItem inventoryItem in m_inventoryItems)\n            {\n                if (inventoryItem.ObjectBuilderType == objectBuilderType && (objectBuilderId == null || inventoryItem.ObjectBuilderId == objectBuilderId))\n                {\n                    inventoryItems.Add(inventoryItem);\n                }\n            }\n        }\n\n        /// <summary>\n        /// Find inventory items from inventory\n        /// </summary>\n        /// <param name=\"inventoryItems\">Collection to fill founded inventory items</param>\n        /// <param name=\"objectBuilder\">Item's object builder</param>\n        /// <returns></returns>\n        public void GetInventoryItems(ref List<MyInventoryItem> inventoryItems, MyMwcObjectBuilder_Base objectBuilder)\n        {\n            GetInventoryItems(ref inventoryItems, objectBuilder.GetObjectBuilderType(), objectBuilder.GetObjectBuilderId());\n        }\n\n        /// <summary>\n        /// Returns first inventory item from inventory\n        /// </summary>\n        /// <param name=\"objectBuilder\">Item's object builder</param>\n        /// <returns></returns>\n        public MyInventoryItem GetInventoryItem(MyMwcObjectBuilder_Base objectBuilder) \n        {\n            return GetInventoryItem(objectBuilder.GetObjectBuilderType(), objectBuilder.GetObjectBuilderId());\n        }\n\n        /// <summary>\n        /// Returns first inventory item from inventory\n        /// </summary>\n        /// <param name=\"objectBuilderType\">Item's object builder type</param>\n        /// <param name=\"objectBuilderId\">Item's object builder id</param>\n        /// <returns></returns>\n        public MyInventoryItem GetInventoryItem(MyMwcObjectBuilderTypeEnum objectBuilderType, int? objectBuilderId) \n        {\n            m_helperInventoryItems.Clear();\n            GetInventoryItems(ref m_helperInventoryItems, objectBuilderType, objectBuilderId);\n            if (m_helperInventoryItems.Count > 0)\n            {\n                return m_helperInventoryItems[0];\n            }\n            else \n            {\n                return null;\n            }\n        }\n\n        /// <summary>\n        /// Removes amout of inventory items from inventory.\n        /// </summary>\n        /// <param name=\"inventoryItem\">Inventory item</param>\n        /// <param name=\"amount\">Amount to remove</param>\n        public void RemoveInventoryItemAmount(ref MyInventoryItem inventoryItem, float amount)\n        {\n            //inventoryItem.Amount -= amount;\n            //if (inventoryItem.Amount <= 0f)\n            //{\n            //    RemoveInventoryItem(inventoryItem, true);                \n            //}\n            if (RemoveInventoryItemAmountPrivate(inventoryItem, amount))             \n            {\n                CallContentChange();\n            }\n        }\n\n        /// <summary>\n        /// Removes amout of inventory items from inventory.\n        /// </summary>\n        /// <param name=\"objectBuilder\">Item's object builder</param>\n        /// <param name=\"amount\">Amount to remove</param>\n        public void RemoveInventoryItemAmount(MyMwcObjectBuilder_Base objectBuilder, float amount)\n        {\n            RemoveInventoryItemAmount(objectBuilder.GetObjectBuilderType(), objectBuilder.GetObjectBuilderId(), amount);\n        }\n\n        /// <summary>\n        /// Returns inventory items from inventory \n        /// </summary>\n        /// <param name=\"objectBuilderType\">Item's object builder type</param>\n        /// <param name=\"objectBuilderId\">Item's object builder id</param>\n        /// <param name=\"amount\">Amount to remove</param>\n        public bool RemoveInventoryItemAmount(MyMwcObjectBuilderTypeEnum objectBuilderType, int? objectBuilderId, float amount)\n        {\n            bool removed = false;\n            float inventoryItemsAmount = GetTotalAmountOfInventoryItems(objectBuilderType, objectBuilderId);\n\n            if (inventoryItemsAmount < amount)\n            {\n                return false;\n            }\n\n            float amountToRemoveLeft = amount;\n            m_helperInventoryItemsForAddAndRemove.Clear();\n            GetInventoryItems(ref m_helperInventoryItemsForAddAndRemove, objectBuilderType, objectBuilderId);\n            m_helperInventoryItemsForAddAndRemove.Sort((x, y) => x.Amount.CompareTo(y.Amount));\n            foreach (MyInventoryItem inventoryItem in m_helperInventoryItemsForAddAndRemove)\n            {\n                float amountToRemove = Math.Min(inventoryItem.Amount, amountToRemoveLeft);\n\n                MyInventoryItem inventoryItemToRemoveAmount = inventoryItem;\n                if (RemoveInventoryItemAmountPrivate(inventoryItemToRemoveAmount, amountToRemove)) \n                {\n                    removed = true;\n                }\n\n                amountToRemoveLeft -= amountToRemove;\n\n                if (amountToRemoveLeft <= 0f)\n                {\n                    break;\n                }\n            }\n\n            if (removed) \n            {\n                CallContentChange();\n            }\n\n            return true;\n        }\n\n        /// <summary>\n        /// Adds new inventory item from object builder type and id\n        /// </summary>\n        /// <param name=\"objectBuilderType\">Objectbuilder type</param>\n        /// <param name=\"objectBuilderId\">Objectbuilder id</param>\n        /// <param name=\"amount\">Amount of inventory item</param>\n        /// <param name=\"allAmmountAddAsNewInventoryItems\">If true, then all amount adds as new inventory items, if false, then try find old inventory items of same type, and add amount to them as first</param>        \n        public float AddInventoryItem(MyMwcObjectBuilderTypeEnum objectBuilderType, int? objectBuilderId, float amount, bool allAmmountAddAsNewInventoryItems, bool increaseCapacityIfIsFull = false)\n        {\n            MyMwcObjectBuilder_Base objectBuilder = MyMwcObjectBuilder_Base.CreateNewObject(objectBuilderType, objectBuilderId);\n            return AddInventoryItem(objectBuilder, amount, allAmmountAddAsNewInventoryItems, increaseCapacityIfIsFull);\n        }\n\n        /// <summary>\n        /// Adds new inventory item from object builder\n        /// </summary>\n        /// <param name=\"objectBuilder\">Item object builder</param>\n        /// <param name=\"amount\">Amount of inventory item</param>\n        /// <param name=\"allAmountAddAsNewInventoryItems\">If true, then all amount adds as new inventory items, if false, then try find old inventory items of same type, and add amount to them as first</param>        \n        public float AddInventoryItem(MyMwcObjectBuilder_Base objectBuilder, float amount, bool allAmountAddAsNewInventoryItems, bool increaseCapacityIfIsFull = false)\n        {\n            bool added = false;\n            MyMwcObjectBuilderTypeEnum objectBuilderType = objectBuilder.GetObjectBuilderType();\n            int? objectBuilderId = objectBuilder.GetObjectBuilderId();\n            m_helperInventoryItemsForAddAndRemove.Clear();\n            GetInventoryItems(ref m_helperInventoryItemsForAddAndRemove, objectBuilderType, objectBuilderId);\n\n            float amountToAddLeft = amount;\n            if (!allAmountAddAsNewInventoryItems)\n            {\n                foreach (MyInventoryItem inventoryItem in m_helperInventoryItemsForAddAndRemove)\n                {\n                    if (amountToAddLeft <= 0f)\n                        break;\n                    float amountToAdd = Math.Min(inventoryItem.MaxAmount - inventoryItem.Amount, amountToAddLeft);\n                    if (InventorySynchronizer != null && InventorySynchronizer.MustBeSynchronized())\n                    {\n                        InventorySynchronizer.AddInventoryItemAmountChangeForSynchronization(objectBuilderType, objectBuilderId, inventoryItem.Amount, amountToAdd);\n                    }\n                    else\n                    {\n                        inventoryItem.Amount += amountToAdd;\n                    }\n                    amountToAddLeft -= amountToAdd;\n                }\n            }\n\n            while (amountToAddLeft > 0f)\n            {\n                if (IsFull)\n                {\n                    if (increaseCapacityIfIsFull)\n                    {\n                        MaxItems++;\n                    }\n                    else \n                    {\n                        break;\n                    }\n                }\n                MyInventoryItem newInventoryItem = MyInventory.CreateInventoryItemFromObjectBuilder(objectBuilder);\n                float amountToAdd = Math.Min(newInventoryItem.MaxAmount, amountToAddLeft);\n                //AddInventoryItem(newInventoryItem);\n                AddItemToInventoryPrivate(newInventoryItem);\n                newInventoryItem.Amount = amountToAdd; //After AddInventoryItem otherwise Amount event is not called\n                amountToAddLeft -= amountToAdd;\n                added = true;\n            }\n\n            if (added)\n            {\n                CallContentChange();\n            }            \n\n            return amountToAddLeft;\n        }                        \n\n        /// <summary>\n        /// Returns total amount of inventory items in inventory\n        /// </summary>\n        /// <param name=\"objectBuilder\">Item's object builder</param>\n        /// <returns></returns>\n        public float GetTotalAmountOfInventoryItems(MyMwcObjectBuilder_Base objectBuilder)\n        {\n            return GetTotalAmountOfInventoryItems(objectBuilder.GetObjectBuilderType(), objectBuilder.GetObjectBuilderId());\n        }\n\n        /// <summary>\n        /// Returns total amount of inventory items in inventory\n        /// </summary>\n        /// <param name=\"objectBuilderType\">Item's object builder type</param>\n        /// <param name=\"objectBuilderId\">Item's object builder id</param>\n        /// <returns></returns>\n        public float GetTotalAmountOfInventoryItems(MyMwcObjectBuilderTypeEnum objectBuilderType, int? objectBuilderId)\n        {\n            m_helperInventoryItems.Clear();\n            GetInventoryItems(ref m_helperInventoryItems, objectBuilderType, objectBuilderId);\n\n            float inventoryItemsAmount = 0;\n            foreach (MyInventoryItem inventoryItem in m_helperInventoryItems)\n            {\n                inventoryItemsAmount += inventoryItem.Amount;\n            }\n\n            return inventoryItemsAmount;\n        }\n\n        /// <summary>\n        /// Returns inventory item's count\n        /// </summary>\n        /// <param name=\"objectBuilder\">Item's object builder</param>\n        /// <returns></returns>\n        public int GetInventoryItemsCount(MyMwcObjectBuilder_Base objectBuilder) \n        {\n            return GetInventoryItemsCount(objectBuilder.GetObjectBuilderType(), objectBuilder.GetObjectBuilderId());\n        }\n\n        /// <summary>\n        /// Returns inventory item's count\n        /// </summary>\n        /// <param name=\"objectBuilderType\">Item's object builder type</param>\n        /// <param name=\"objectBuilderId\">Item's object builde id</param>\n        /// <returns></returns>\n        public int GetInventoryItemsCount(MyMwcObjectBuilderTypeEnum objectBuilderType, int? objectBuilderId)\n        {\n            m_helperInventoryItems.Clear();\n            GetInventoryItems(ref m_helperInventoryItems, objectBuilderType, objectBuilderId);            \n            return m_helperInventoryItems.Count;\n        }\n\n        /// <summary>\n        /// Returns true if inventory contains item\n        /// </summary>\n        /// <param name=\"objectBuilder\">Item's objectbuilder</param>\n        /// <returns></returns>\n        public bool Contains(MyMwcObjectBuilder_Base objectBuilder)\n        {\n            return Contains(objectBuilder.GetObjectBuilderType(), objectBuilder.GetObjectBuilderId());\n        }\n\n        /// <summary>\n        /// Returns true if inventory contains item\n        /// </summary>\n        /// <param name=\"objectBuilderType\">Item's object builder type</param>\n        /// <param name=\"objectBuilderId\">Item's object builder id</param>\n        /// <returns></returns>\n        public bool Contains(MyMwcObjectBuilderTypeEnum objectBuilderType, int? objectBuilderId)\n        {\n            m_helperInventoryItems.Clear();\n            GetInventoryItems(ref m_helperInventoryItems, objectBuilderType, objectBuilderId);\n            return m_helperInventoryItems.Count > 0;\n        }        \n\n        private void AddItemToInventoryPrivate(MyInventoryItem item)\n        {\n            if (IsDisabled(item))\n            {\n                MyInventory.CloseInventoryItem(item);\n            }\n            else\n            {\n                if (InventorySynchronizer != null && InventorySynchronizer.MustBeSynchronized())\n                {\n                    InventorySynchronizer.AddInventoryItemForSynchronization(item);\n                }\n                else\n                {\n                    if (!UnlimitedCapacity)\n                    {\n                        if (m_inventoryItems.Count >= m_maxItems)\n                            throw new Exception(\"Inventory has full capacity\");\n                    }\n\n                    item.OnAmountChange += m_onItemAmountChangeHandler;\n                    item.Owner = this;\n                    m_inventoryItems.Add(item);\n                    OnAmountChange(item, item.Amount);\n\n                    if (UnlimitedCapacity)\n                    {\n                        MaxItems = Math.Max(m_inventoryItems.Count, MaxItems);\n                    }\n                }\n            }\n        }        \n\n        public bool IsInventoryEmpty()\n        {\n            return m_inventoryItems.Count == 0;\n        }\n\n        public int GetFreeSlotsCount() \n        {\n            return MaxItems - m_inventoryItems.Count;\n        }\n\n        public static void GenerateDebugInventoryItemsInfo() \n        {\n            string format = \"{0}\\t{1}\\t{2}\\t{3}\\t{4}\\t{5}\";\n            StringBuilder sb = new StringBuilder();\n            sb.AppendLine(string.Format(format, \"Type\", \"ID\", \"Max amount\", \"Price per unit\", \"Description\", \"Name\"));\n            MyInventory degubInventory = new MyInventory(1500);\n            degubInventory.FillInventoryWithAllItems(null, null, true);\n            foreach (var item in degubInventory.GetInventoryItems()) \n            {\n                sb.AppendLine(string.Format(format, item.ObjectBuilderType, item.ObjectBuilderId, item.MaxAmount, item.PricePerUnit, item.Description, item.GuiHelper.DescriptionEnum.ToString()));\n            }\n            string directory = @\"C:\\Temp\";\n            string fileName = directory + @\"\\InventoryItemsInfo.txt\";\n\n            if (File.Exists(fileName)) \n            {\n                File.Delete(fileName);\n            }\n            if (!Directory.Exists(directory))\n            {\n                Directory.CreateDirectory(directory);\n            }\n            using (var sw = File.CreateText(fileName)) \n            {\n                sw.Write(sb.ToString());\n                sw.Close();\n            }\n        }\n\n        private static bool IsDisabled(MyInventoryItem item) \n        {\n            return MyMwcObjectBuilder_InventoryItem.IsDisabled(item.ObjectBuilderType, item.ObjectBuilderId);\n        }\n\n        private bool RemoveItemFromInventoryPrivate(MyInventoryItem item, bool closeInventoryItem) \n        {            \n            bool result = m_inventoryItems.Remove(item);\n            item.OnAmountChange -= m_onItemAmountChangeHandler;\n            if (item.Amount > 0f) \n            {\n                OnAmountChange(item, -item.Amount);\n            }\n            if (closeInventoryItem)\n            {\n                MyInventory.CloseInventoryItem(item);\n            }\n            else \n            {\n                item.Owner = null;\n            }\n            return result;\n        }\n\n        private void CloseInventoryItemsPrivate()\n        {\n            foreach (MyInventoryItem item in m_inventoryItems)\n            {\n                item.OnAmountChange -= m_onItemAmountChangeHandler;\n                MyInventory.CloseInventoryItem(item);\n            }\n        }\n\n        private bool RemoveAllInventoryItemsPrivate(bool closeInventoryItem) \n        {\n            bool removed = false;\n            for (int i = m_inventoryItems.Count - 1; i >= 0; i--)\n            {\n                if (RemoveItemFromInventoryPrivate(m_inventoryItems[i], closeInventoryItem))\n                {\n                    removed = true;\n                }\n            }\n            return removed;\n        }\n\n        private bool RemoveInventoryItemAmountPrivate(MyInventoryItem inventoryItem, float amount) \n        {\n            bool removed = false;\n            inventoryItem.Amount -= amount;\n            if (inventoryItem.Amount <= 0f)\n            {\n                removed = RemoveItemFromInventoryPrivate(inventoryItem, true);\n            }\n            return removed;\n        }\n\n        private void FixItemsOverMaxLimit() \n        {\n            bool removed = false;\n            while (m_inventoryItems.Count > MaxItems)\n            {\n                MyInventoryItem itemToRemove = m_inventoryItems[m_inventoryItems.Count - 1];\n                RemoveInventoryItem(itemToRemove, true);\n                removed = true;\n            }\n            if (removed)\n            {\n                CallContentChange();\n            }\n        }\n\n        #endregion\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Inventory/MyInventoryItem.cs",
    "content": "﻿using System;\nusing System.Text;\nusing MinerWars.AppCode.Game.GUI.Helpers;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.Gameplay;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.Utils;\n\nnamespace MinerWars.AppCode.Game.Inventory\n{\n    delegate void OnAmountChange(MyInventoryItem sender, float amountChanged);\n\n    class MyInventoryItem\n    {\n        #region Fields\n        float m_amount;\n        StringBuilder m_multiLineDescription;\n        #endregion\n\n        #region Ctors\n        public MyInventoryItem()\n        {\n            m_multiLineDescription = new StringBuilder();\n        }\n        #endregion\n\n        #region Methods\n        public void Start(MyGuiHelperBase guiHelper, MyGameplayProperties itemProperties, MyMwcObjectBuilder_Base objectBuilder)\n        {\n            Start(guiHelper, itemProperties, objectBuilder, 1f);\n        }\n\n        public void Start(MyGuiHelperBase guiHelper, MyGameplayProperties itemProperties, MyMwcObjectBuilder_Base objectBuilder, float amount) \n        {\n            GuiHelper = guiHelper;\n            ItemProperties = itemProperties;\n            ObjectBuilder = objectBuilder;\n\n            Amount = Math.Min(amount, MaxAmount);\n            TemporaryFlags = MyInventoryItemTemporaryFlags.NONE;                        \n        }        \n\n        public override string ToString()\n        {\n            return GuiHelper.Description + \" Amount:\" + Amount.ToString() + \" Price:\" + Price.ToString() + \" Weight:\" + Weight.ToString();\n        }\n\n        #endregion\n\n        #region Events\n        public OnAmountChange OnAmountChange;\n\n        #endregion\n\n        #region Properties\n        public MyInventoryItemTemporaryFlags TemporaryFlags { get; set; }\n\n        public object Owner { get; set; }\n\n        public MyMwcObjectBuilder_Base ObjectBuilder { get; set; }        \n\n        public float Amount \n        {\n            get \n            { \n                return m_amount; \n            }\n            set \n            {\n                if (value <= ItemProperties.MaxAmount)\n                {\n                    float amountChanged = value - m_amount;\n                    m_amount = value;\n\n                    if (amountChanged != 0 && OnAmountChange != null) \n                    {\n                        OnAmountChange(this, amountChanged);\n                    }\n                }\n                else \n                {\n                    throw new Exception(\"Value is greater then max amount of item\");\n                }\n            }\n        }        \n\n        public MyGuiHelperBase GuiHelper { get; set; }\n\n        public MyGameplayProperties ItemProperties { get; set; }\n\n        public float MaxAmount \n        {\n            get { return ItemProperties.MaxAmount; }\n        }\n\n        public float Price\n        {\n            get { return Amount * ItemProperties.PricePerUnit; }\n        }\n\n        public float PricePerUnit\n        {\n            get { return ItemProperties.PricePerUnit; }\n        }\n\n        public float Weight\n        {\n            get { return Amount * ItemProperties.WeightPerUnit; }\n        }\n\n        public float WeightPerUnit\n        {\n            get { return ItemProperties.WeightPerUnit; }\n        }\n\n        public StringBuilder Description\n        {\n            get { return GuiHelper.Description; }\n        }\n\n        public StringBuilder MultiLineDescription \n        {\n            get { return GuiHelper.MultiLineDescription; }\n        }\n\n        public MyTexture2D Icon\n        {\n            get { return GuiHelper.Icon; }\n        }\n\n        public MyMwcObjectBuilder_InventoryItem GetObjectBuilder() \n        {\n            MyMwcObjectBuilder_InventoryItem builder = new MyMwcObjectBuilder_InventoryItem(ObjectBuilder, Amount);\n            builder.TemporaryFlags = TemporaryFlags;\n            return builder;\n        }\n\n        public MyMwcObjectBuilder_Base GetInventoryItemObjectBuilder(bool getExactCopy) \n        {\n            if (getExactCopy)\n            {\n                return ObjectBuilder.Clone();\n            }\n            else\n            {\n                return ObjectBuilder;\n            }\n        }\n\n        public MyMwcObjectBuilderTypeEnum ObjectBuilderType \n        {\n            get { return ObjectBuilder.GetObjectBuilderType(); }\n        }\n\n        public int? ObjectBuilderId \n        {\n            get { return ObjectBuilder.GetObjectBuilderId(); }\n        }\n\n        public MyInventoryAmountTextAlign AmountTextAlign\n        {\n            get { return GuiHelper.InventoryTextAlign; }\n        }\n\n        public bool CanBeTraded\n        {\n            get { return (ObjectBuilder.PersistentFlags & MyPersistentEntityFlags.NotTradeable) == 0; }\n        }\n\n        public bool CanBeMoved \n        {\n            get { return (TemporaryFlags & MyInventoryItemTemporaryFlags.CANT_BE_MOVED) == 0; }\n            set\n            {\n                if (value)\n                {\n                    TemporaryFlags &= ~MyInventoryItemTemporaryFlags.CANT_BE_MOVED;\n                }\n                else \n                {\n                    TemporaryFlags |= MyInventoryItemTemporaryFlags.CANT_BE_MOVED;\n                }\n            }\n        }\n\n        public bool IsTemporaryItem\n        {\n            get { return (TemporaryFlags & MyInventoryItemTemporaryFlags.TEMPORARY_ITEM) != 0; }\n            set\n            {\n                if (value)\n                {\n                    TemporaryFlags |= MyInventoryItemTemporaryFlags.TEMPORARY_ITEM;\n                }\n                else\n                {\n                    TemporaryFlags &= ~MyInventoryItemTemporaryFlags.TEMPORARY_ITEM;\n                }\n            }\n        }\n\n        public bool NotEnoughMoney\n        {\n            get { return (TemporaryFlags & MyInventoryItemTemporaryFlags.NOT_ENOUGH_MONEY) != 0; }\n            set\n            {\n                if (value)\n                {\n                    TemporaryFlags |= MyInventoryItemTemporaryFlags.NOT_ENOUGH_MONEY;\n                }\n                else\n                {\n                    TemporaryFlags &= ~MyInventoryItemTemporaryFlags.NOT_ENOUGH_MONEY;\n                }\n            }\n        }\n\n        #endregion        \n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Inventory/MyInventoryItemsRepository.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace MinerWars.AppCode.Game.Inventory\n{\n    class MyInventoryItemsRepository\n    {\n        private Dictionary<int, MyInventoryItem> m_itemsWithKeys;\n        private int m_lastUsedKey;\n\n        public MyInventoryItemsRepository()\n        {\n            m_itemsWithKeys = new Dictionary<int, MyInventoryItem>();\n            m_lastUsedKey = 0;\n        }\n\n        public int AddItem(MyInventoryItem item)\n        {\n            int newKey = m_lastUsedKey++;\n            m_itemsWithKeys.Add(newKey, item);\n            return newKey;\n        }\n\n        public MyInventoryItem GetItem(int key)\n        {\n            return m_itemsWithKeys[key];\n        }\n\n        public bool Contains(int key)\n        {\n            return m_itemsWithKeys.ContainsKey(key);\n        }\n\n        public void RemoveItem(int key, bool closeItem = true)\n        {\n            if (closeItem)\n            {\n                MyInventory.CloseInventoryItem(GetItem(key));\n            }\n            m_itemsWithKeys.Remove(key);\n        }\n\n        public void Clear() \n        {\n            m_itemsWithKeys.Clear();\n        }\n\n        public void Close()\n        {\n            foreach (KeyValuePair<int, MyInventoryItem> inventoryItemKVP in m_itemsWithKeys)\n            {\n                MyInventory.CloseInventoryItem(inventoryItemKVP.Value);\n            }\n            m_itemsWithKeys.Clear();\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Inventory/MyInventorySynchronizer.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.GUI.Helpers;\nusing System.Diagnostics;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\n\nusing SharpDX.Toolkit;\n\nnamespace MinerWars.AppCode.Game.Inventory\n{\n    delegate bool MyMustBeInventorySynchronizedDelegate(MyInventory inventory);\n\n    static class MyPlayerShipInventorySynchronizerHelper\n    {\n        public static bool MustBePlayerShipInventorySynchronized(MyInventory inventory) \n        {\n            return MySession.PlayerShip != null &&\n                   MySession.PlayerShip.Inventory == inventory &&\n                   MyGuiScreenInventoryManagerForGame.IsInventoryOpen();\n        }\n    }\n\n    struct MyInventoryItemAmountDefinition\n    {\n        public MyMwcObjectBuilderTypeEnum ObjectBuilderType;\n        public int? ObjectBuilderId;\n        public float OriginalAmount;\n        public float AmountChange;\n        \n        public MyInventoryItemAmountDefinition(MyMwcObjectBuilderTypeEnum objectBuilderType, int? objectBuilderId, float originalAmount, float amountChange)\n        {\n            ObjectBuilderType = objectBuilderType;\n            ObjectBuilderId = objectBuilderId;\n            OriginalAmount = originalAmount;\n            AmountChange = amountChange;\n        }\n    }\n\n    class MyInventorySynchronizer\n    {\n        private List<MyInventoryItem> m_inventoryItemsHelper;\n        private List<MyInventoryItem> m_inventoryItemsToAdd;\n        private List<MyInventoryItemAmountDefinition> m_inventoryItemsAmountChanges;\n        private MyMustBeInventorySynchronizedDelegate m_mustBeInventorySynchronizedDelegate;\n        private MyInventory m_inventory;\n\n        public MyInventorySynchronizer(MyInventory inventory, MyMustBeInventorySynchronizedDelegate mustBeInventorySynchronizedDelegate) \n        {\n            m_inventoryItemsHelper = new List<MyInventoryItem>();\n            m_inventoryItemsToAdd = new List<MyInventoryItem>();\n            m_inventoryItemsAmountChanges = new List<MyInventoryItemAmountDefinition>();\n            m_mustBeInventorySynchronizedDelegate = mustBeInventorySynchronizedDelegate;\n            m_inventory = inventory;\n\n            //MyMinerGame.OnGameUpdate += MyMinerGame_OnGameUpdate;\n        }\n\n        public void Close() \n        {\n            foreach (var item in m_inventoryItemsToAdd) \n            {\n                MyInventory.CloseInventoryItem(item);\n            }\n            m_inventoryItemsToAdd.Clear();\n            m_inventoryItemsToAdd = null;\n\n            m_inventoryItemsAmountChanges.Clear();\n            m_inventoryItemsAmountChanges = null;\n\n            m_inventoryItemsHelper.Clear();\n            m_inventoryItemsHelper = null;\n\n            m_mustBeInventorySynchronizedDelegate = null;\n\n            m_inventory = null;\n\n            //MyMinerGame.OnGameUpdate -= MyMinerGame_OnGameUpdate;\n        }\n\n        public bool MustBeSynchronized() \n        {\n            return m_mustBeInventorySynchronizedDelegate(m_inventory);\n        }\n\n        public void AddInventoryItemForSynchronization(MyInventoryItem item) \n        {\n            m_inventoryItemsToAdd.Add(item);\n        }\n\n        public void AddInventoryItemAmountChangeForSynchronization(MyMwcObjectBuilderTypeEnum objectBuilderType, int? objectBuilderId, float originalAmount, float amountChange)\n        {\n            m_inventoryItemsAmountChanges.Add(new MyInventoryItemAmountDefinition(objectBuilderType, objectBuilderId, originalAmount, amountChange));\n        }\n\n        void MyMinerGame_OnGameUpdate(GameTime gt)\n        {\n            if (!MustBeSynchronized()) \n            {\n                if (m_inventoryItemsToAdd.Count > 0) \n                {\n                    if (!m_inventory.UnlimitedCapacity)\n                    {\n                        m_inventoryItemsToAdd = m_inventoryItemsToAdd.GetRange(0, Math.Min(m_inventory.GetFreeSlotsCount(), m_inventoryItemsToAdd.Count));\n                    }\n                    m_inventory.AddInventoryItems(m_inventoryItemsToAdd);\n                    m_inventoryItemsToAdd.Clear();\n                }                \n\n                if(m_inventoryItemsAmountChanges.Count > 0)\n                {\n                    foreach(MyInventoryItemAmountDefinition itemAmountDef in m_inventoryItemsAmountChanges)\n                    {\n                        m_inventoryItemsHelper.Clear();\n                        m_inventory.GetInventoryItems(ref m_inventoryItemsHelper, itemAmountDef.ObjectBuilderType, itemAmountDef.ObjectBuilderId);\n                        foreach(MyInventoryItem item in m_inventoryItemsHelper)\n                        {\n                            if(item.Amount == itemAmountDef.OriginalAmount)\n                            {\n                                Debug.Assert(item.Amount + itemAmountDef.AmountChange <= item.MaxAmount);\n                                item.Amount += itemAmountDef.AmountChange;\n                                break;\n                            }\n                        }\n                    }\n                    m_inventoryItemsAmountChanges.Clear();\n                }\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Inventory/MyInventoryTemplate.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing System.Diagnostics;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\n\nnamespace MinerWars.AppCode.Game.Inventory\n{    \n    static class MyInventoryTemplates \n    {\n        private static Dictionary<int, MyInventoryTemplate> m_templates;\n\n        static MyInventoryTemplates() \n        {\n            m_templates = new Dictionary<int, MyInventoryTemplate>();\n            List<MyInventoryTemplateItem> helperTemplateItems = new List<MyInventoryTemplateItem>();\n\n            #region Basic merchant templates\n            // Army merchant template            \n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Asteroid_Killer, 1, 3, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Mine_Basic, 1, 3, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Mine_BioChem, 1, 3, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Decoy_Flare, 1, 3, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Directional_Explosive, 1, 3, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_EMP_Bomb, 1, 3, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Flash_Bomb, 1, 3, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Hologram, 1, 3, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Illuminating_Shell, 1, 3, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Remote_Bomb, 1, 3, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Remote_Camera, 1, 3, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Mine_Smart, 1, 3, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Smoke_Bomb, 1, 3, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Sphere_Explosive, 1, 3, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Time_Bomb, 1, 3, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_Basic, 2, 5, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_BioChem, 1, 5, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_EMP, 1, 5, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_Proximity_Explosive, 1, 5, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_SAPHEI, 1, 5, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_Tunnel_Buster, 1, 5, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_High_Speed, 1, 5, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_Basic, 3, 8, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_BioChem, 1, 5, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_EMP, 1, 5, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_SAPHEI, 1, 5, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_High_Speed, 1, 5, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Machine_Gun_Basic, 1, 5, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Machine_Gun_BioChem, 1, 5, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Machine_Gun_EMP, 1, 5, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Machine_Gun_SAPHEI, 1, 5, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Machine_Gun_High_Speed, 1, 5, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Missile_Basic, 2, 5, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Missile_BioChem, 1, 5, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Missile_EMP, 1, 5, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Guided_Missile_Engine_Detection, 1, 5, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Guided_Missile_Radar_Detection, 1, 5, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Guided_Missile_Visual_Detection, 1, 5, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Automatic_Rifle_With_Silencer_BioChem, 1, 5, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Automatic_Rifle_With_Silencer_SAPHEI, 1, 5, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Automatic_Rifle_With_Silencer_High_Speed, 1, 5, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Shotgun_Basic, 2, 5, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Shotgun_Explosive, 1, 5, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Shotgun_Armor_Piercing, 1, 5, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Shotgun_High_Speed, 1, 5, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Sniper_BioChem, 1, 5, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Sniper_EMP, 1, 5, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Sniper_SAPHEI, 1, 5, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Sniper_High_Speed, 1, 5, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy, MyMwcObjectBuilderTypeEnum.SmallShip_Weapon, (int)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Universal_Launcher_Back, 1, 2, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy, MyMwcObjectBuilderTypeEnum.SmallShip_Weapon, (int)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Cannon, 1, 2, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy, MyMwcObjectBuilderTypeEnum.SmallShip_Weapon, (int)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Universal_Launcher_Front, 1, 2, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy, MyMwcObjectBuilderTypeEnum.SmallShip_Weapon, (int)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Autocanon, 1, 2, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy, MyMwcObjectBuilderTypeEnum.SmallShip_Weapon, (int)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Machine_Gun, 1, 2, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy, MyMwcObjectBuilderTypeEnum.SmallShip_Weapon, (int)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Missile_Launcher, 1, 2, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy, MyMwcObjectBuilderTypeEnum.SmallShip_Weapon, (int)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Automatic_Rifle_With_Silencer, 1, 2, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy, MyMwcObjectBuilderTypeEnum.SmallShip_Weapon, (int)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Sniper, 1, 2, 1f);\n\n\n\n            // Medicine merchant template\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantMedicine, MyMwcObjectBuilderTypeEnum.SmallShip_Tool, (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.HEALTH_KIT, 1, 3, 0.5f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantMedicine, MyMwcObjectBuilderTypeEnum.SmallShip_Tool, (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.REPAIR_KIT, 1, 8, 0.5f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantMedicine, MyMwcObjectBuilderTypeEnum.SmallShip_Tool, (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.ANTIRADIATION_MEDICINE, 1, 5, 0.5f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantMedicine, MyMwcObjectBuilderTypeEnum.SmallShip_Tool, (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.HEALTH_ENHANCING_MEDICINE, 1, 3, 0.5f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantMedicine, MyMwcObjectBuilderTypeEnum.SmallShip_Tool, (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.MEDIKIT, 1, 4, 1f);\n\n            // Blueprint merchant template\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantBlueprint, MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit, 1, 1, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantBlueprint, MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit, 1, 1, 0.66f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantBlueprint, MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.FortificationKit, 1, 1, 0.33f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantBlueprint, MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.HonorableKit, 1, 1, 0.1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantBlueprint, MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.SuperiorConstructionKit, 1, 1, 0.01f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantBlueprint, MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.UtilitiesKit, 1, 1, 0.33f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantBlueprint, MyMwcObjectBuilderTypeEnum.Blueprint, (int)MyMwcObjectBuilder_Blueprint_TypesEnum.WeaponKit, 1, 1, 0.33f);\n\n            // Tools merchant template\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantTools, MyMwcObjectBuilderTypeEnum.SmallShip_Tool, (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.RADAR_JAMMER, 1, 1, 0.2f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantTools, MyMwcObjectBuilderTypeEnum.SmallShip_Tool, (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.OXYGEN_KIT, 2, 10, 0.5f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantTools, MyMwcObjectBuilderTypeEnum.SmallShip_Tool, (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.FUEL_KIT, 2, 10, 0.5f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantTools, MyMwcObjectBuilderTypeEnum.SmallShip_Tool, (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.NANO_REPAIR_TOOL, 1, 3, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantTools, MyMwcObjectBuilderTypeEnum.SmallShip_Tool, (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.RADAR_JAMMER, 1, 1, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantTools, MyMwcObjectBuilderTypeEnum.SmallShip_Engine, (int)MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.Nuclear_5, 1, 1, 0.1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantTools, MyMwcObjectBuilderTypeEnum.SmallShip_Engine, (int)MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.Chemical_5, 1, 1, 0.1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantTools, MyMwcObjectBuilderTypeEnum.SmallShip_Armor, (int)MyMwcObjectBuilder_SmallShip_Armor_TypesEnum.Advanced, 1, 1, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantTools, MyMwcObjectBuilderTypeEnum.SmallShip_Armor, (int)MyMwcObjectBuilder_SmallShip_Armor_TypesEnum.Basic, 1, 1, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantTools, MyMwcObjectBuilderTypeEnum.SmallShip_Armor, (int)MyMwcObjectBuilder_SmallShip_Armor_TypesEnum.High_Endurance, 1, 1, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantTools, MyMwcObjectBuilderTypeEnum.SmallShip_Armor, (int)MyMwcObjectBuilder_SmallShip_Armor_TypesEnum.Solar_Wind, 1, 1, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantTools, MyMwcObjectBuilderTypeEnum.SmallShip_Engine, (int)MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.Chemical_1, 1, 1, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantTools, MyMwcObjectBuilderTypeEnum.SmallShip_Engine, (int)MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.Chemical_2, 1, 1, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantTools, MyMwcObjectBuilderTypeEnum.SmallShip_Engine, (int)MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.Chemical_3, 1, 1, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantTools, MyMwcObjectBuilderTypeEnum.SmallShip_Engine, (int)MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.Chemical_4, 1, 1, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantTools, MyMwcObjectBuilderTypeEnum.SmallShip_Engine, (int)MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.Chemical_5, 1, 1, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantTools, MyMwcObjectBuilderTypeEnum.SmallShip_Engine, (int)MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.Nuclear_1, 1, 1, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantTools, MyMwcObjectBuilderTypeEnum.SmallShip_Engine, (int)MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.Nuclear_2, 1, 1, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantTools, MyMwcObjectBuilderTypeEnum.SmallShip_Engine, (int)MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.Nuclear_3, 1, 1, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantTools, MyMwcObjectBuilderTypeEnum.SmallShip_Engine, (int)MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.Nuclear_4, 1, 1, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantTools, MyMwcObjectBuilderTypeEnum.SmallShip_Engine, (int)MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.Nuclear_5, 1, 1, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantTools, MyMwcObjectBuilderTypeEnum.SmallShip_Engine, (int)MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.PowerCells_1, 1, 1, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantTools, MyMwcObjectBuilderTypeEnum.SmallShip_Engine, (int)MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.PowerCells_2, 1, 1, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantTools, MyMwcObjectBuilderTypeEnum.SmallShip_Engine, (int)MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.PowerCells_3, 1, 1, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantTools, MyMwcObjectBuilderTypeEnum.SmallShip_Engine, (int)MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.PowerCells_4, 1, 1, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantTools, MyMwcObjectBuilderTypeEnum.SmallShip_Engine, (int)MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.PowerCells_5, 1, 1, 1f);\n\n\n\n            // Mixed merchant template - create from all others templates but with 20% chance to refill\n            helperTemplateItems.Clear();\n            GetInventoryTemplateItems(ref helperTemplateItems, MyMwcInventoryTemplateTypeEnum.MerchantArmy, MyMwcInventoryTemplateTypeEnum.MerchantMedicine, MyMwcInventoryTemplateTypeEnum.MerchantBlueprint, MyMwcInventoryTemplateTypeEnum.MerchantTools);\n            foreach (MyInventoryTemplateItem templateItem in helperTemplateItems)\n            {\n                AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantMixed, templateItem.ObjectBuilderType, templateItem.ObjectBuilderId, templateItem.CountToRefillMin, templateItem.CountToRefillMax, templateItem.AmountRatioMin, templateItem.AmountRatioMax, templateItem.ChanceToRefill * 0.2f);\n            }\n\n            NormalizeDistribution(MyMwcInventoryTemplateTypeEnum.MerchantTools, 5);\n            NormalizeDistribution(MyMwcInventoryTemplateTypeEnum.MerchantArmy, 5);\n            NormalizeDistribution(MyMwcInventoryTemplateTypeEnum.MerchantMixed, 5);\n\n            #endregion\n\n            #region MP merchant templates\n            // MPMerchantFrontLine\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MPMerchantFrontLine, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_Basic, 2, 8, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MPMerchantFrontLine, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_BioChem, 1, 8, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MPMerchantFrontLine, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_EMP, 1, 8, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MPMerchantFrontLine, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_Proximity_Explosive, 1, 8, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MPMerchantFrontLine, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_SAPHEI, 1, 8, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MPMerchantFrontLine, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_Tunnel_Buster, 1, 8, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MPMerchantFrontLine, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_High_Speed, 1, 8, 1f);\n\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MPMerchantFrontLine, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_Basic, 2, 8, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MPMerchantFrontLine, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_BioChem, 1, 8, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MPMerchantFrontLine, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_EMP, 1, 8, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MPMerchantFrontLine, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_SAPHEI, 1, 8, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MPMerchantFrontLine, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_High_Speed, 1, 8, 1f);\n\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MPMerchantFrontLine, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Machine_Gun_Basic, 1, 8, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MPMerchantFrontLine, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Machine_Gun_BioChem, 1, 8, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MPMerchantFrontLine, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Machine_Gun_EMP, 1, 8, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MPMerchantFrontLine, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Machine_Gun_SAPHEI, 1, 8, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MPMerchantFrontLine, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Machine_Gun_High_Speed, 1, 8, 1f);\n\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MPMerchantFrontLine, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Missile_Basic, 2, 8, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MPMerchantFrontLine, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Missile_BioChem, 1, 8, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MPMerchantFrontLine, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Missile_EMP, 1, 8, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MPMerchantFrontLine, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Guided_Missile_Engine_Detection, 1, 8, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MPMerchantFrontLine, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Guided_Missile_Radar_Detection, 1, 8, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MPMerchantFrontLine, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Guided_Missile_Visual_Detection, 1, 8, 1f);\n\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MPMerchantFrontLine, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Automatic_Rifle_With_Silencer_BioChem, 1, 8, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MPMerchantFrontLine, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Automatic_Rifle_With_Silencer_SAPHEI, 1, 8, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MPMerchantFrontLine, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Automatic_Rifle_With_Silencer_High_Speed, 1, 8, 1f);\n\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MPMerchantFrontLine, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Shotgun_Basic, 1, 8, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MPMerchantFrontLine, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Shotgun_Explosive, 1, 8, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MPMerchantFrontLine, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Shotgun_Armor_Piercing, 1, 8, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MPMerchantFrontLine, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Shotgun_High_Speed, 1, 8, 1f);\n\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MPMerchantFrontLine, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Sniper_BioChem, 1, 8, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MPMerchantFrontLine, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Sniper_EMP, 1, 8, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MPMerchantFrontLine, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Sniper_SAPHEI, 1, 8, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MPMerchantFrontLine, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Sniper_High_Speed, 1, 8, 1f);\n\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MPMerchantFrontLine, MyMwcObjectBuilderTypeEnum.SmallShip_Tool, (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.ANTIRADIATION_MEDICINE, 1, 5, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MPMerchantFrontLine, MyMwcObjectBuilderTypeEnum.SmallShip_Tool, (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.HEALTH_ENHANCING_MEDICINE, 1, 5, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MPMerchantFrontLine, MyMwcObjectBuilderTypeEnum.SmallShip_Tool, (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.PERFORMANCE_ENHANCING_MEDICINE, 1, 5, 1f);\n\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MPMerchantFrontLine, MyMwcObjectBuilderTypeEnum.SmallShip_Tool, (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.FUEL_KIT, 5, 10, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MPMerchantFrontLine, MyMwcObjectBuilderTypeEnum.SmallShip_Tool, (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.HEALTH_KIT, 1, 5, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MPMerchantFrontLine, MyMwcObjectBuilderTypeEnum.SmallShip_Tool, (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.OXYGEN_KIT, 5, 10, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MPMerchantFrontLine, MyMwcObjectBuilderTypeEnum.SmallShip_Tool, (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.REPAIR_KIT, 2, 5, 1f);\n\n\n            // MPMerchantSupport\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MPMerchantSupport, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Asteroid_Killer, 1, 8, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MPMerchantSupport, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Mine_Basic, 1, 8, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MPMerchantSupport, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Mine_BioChem, 1, 8, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MPMerchantSupport, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Decoy_Flare, 1, 8, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MPMerchantSupport, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Directional_Explosive, 1, 8, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MPMerchantSupport, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_EMP_Bomb, 1, 8, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MPMerchantSupport, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Flash_Bomb, 1, 8, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MPMerchantSupport, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Hologram, 1, 8, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MPMerchantSupport, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Illuminating_Shell, 1, 8, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MPMerchantSupport, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Remote_Bomb, 1, 8, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MPMerchantSupport, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Remote_Camera, 1, 8, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MPMerchantSupport, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Mine_Smart, 1, 8, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MPMerchantSupport, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Smoke_Bomb, 1, 8, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MPMerchantSupport, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Sphere_Explosive, 1, 8, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MPMerchantSupport, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Time_Bomb, 1, 8, 1f);\n\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MPMerchantSupport, MyMwcObjectBuilderTypeEnum.SmallShip_Armor, (int)MyMwcObjectBuilder_SmallShip_Armor_TypesEnum.Advanced, 1, 3, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MPMerchantSupport, MyMwcObjectBuilderTypeEnum.SmallShip_Armor, (int)MyMwcObjectBuilder_SmallShip_Armor_TypesEnum.Basic, 1, 3, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MPMerchantSupport, MyMwcObjectBuilderTypeEnum.SmallShip_Armor, (int)MyMwcObjectBuilder_SmallShip_Armor_TypesEnum.High_Endurance, 1, 3, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MPMerchantSupport, MyMwcObjectBuilderTypeEnum.SmallShip_Armor, (int)MyMwcObjectBuilder_SmallShip_Armor_TypesEnum.Solar_Wind, 1, 3, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MPMerchantSupport, MyMwcObjectBuilderTypeEnum.SmallShip_Tool, (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.NANO_REPAIR_TOOL, 1, 3, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MPMerchantSupport, MyMwcObjectBuilderTypeEnum.SmallShip_Tool, (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.RADAR_JAMMER, 1, 3, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MPMerchantSupport, MyMwcObjectBuilderTypeEnum.SmallShip_Tool, (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.MEDIKIT, 1, 3, 1f);\n\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MPMerchantSupport, MyMwcObjectBuilderTypeEnum.SmallShip_Weapon, (int)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Universal_Launcher_Back, 1, 3, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MPMerchantSupport, MyMwcObjectBuilderTypeEnum.SmallShip_Weapon, (int)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Cannon, 1, 3, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MPMerchantSupport, MyMwcObjectBuilderTypeEnum.SmallShip_Weapon, (int)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Universal_Launcher_Front, 1, 3, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MPMerchantSupport, MyMwcObjectBuilderTypeEnum.SmallShip_Weapon, (int)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Autocanon, 1, 3, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MPMerchantSupport, MyMwcObjectBuilderTypeEnum.SmallShip_Weapon, (int)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Machine_Gun, 1, 3, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MPMerchantSupport, MyMwcObjectBuilderTypeEnum.SmallShip_Weapon, (int)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Missile_Launcher, 1, 3, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MPMerchantSupport, MyMwcObjectBuilderTypeEnum.SmallShip_Weapon, (int)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Automatic_Rifle_With_Silencer, 1, 3, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MPMerchantSupport, MyMwcObjectBuilderTypeEnum.SmallShip_Weapon, (int)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Sniper, 1, 3, 1f);\n\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MPMerchantSupport, MyMwcObjectBuilderTypeEnum.Drone, (int)MyMwcObjectBuilder_Drone_TypesEnum.DroneCN, 1, 1, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MPMerchantSupport, MyMwcObjectBuilderTypeEnum.Drone, (int)MyMwcObjectBuilder_Drone_TypesEnum.DroneSS, 1, 1, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MPMerchantSupport, MyMwcObjectBuilderTypeEnum.Drone, (int)MyMwcObjectBuilder_Drone_TypesEnum.DroneUS, 1, 1, 1f);\n            #endregion\n\n            #region Army merchant tier templates\n            // Army merchant template Tier 1\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_1, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_Basic, 3, 8, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_1, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Guided_Missile_Visual_Detection, 2, 5, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_1, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Missile_Basic, 2, 5, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_1, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Shotgun_Basic, 2, 5, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_1, MyMwcObjectBuilderTypeEnum.SmallShip_Armor, (int)MyMwcObjectBuilder_SmallShip_Armor_TypesEnum.Advanced, 1, 1, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_1, MyMwcObjectBuilderTypeEnum.SmallShip_Armor, (int)MyMwcObjectBuilder_SmallShip_Armor_TypesEnum.Basic, 1, 1, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_1, MyMwcObjectBuilderTypeEnum.SmallShip_Weapon, (int)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Autocanon, 1, 2, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_1, MyMwcObjectBuilderTypeEnum.SmallShip_Weapon, (int)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Missile_Launcher, 1, 2, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_1, MyMwcObjectBuilderTypeEnum.SmallShip_Weapon, (int)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Shotgun, 1, 2, 1f);\n\n            // Army merchant template Tier 2                                                                                                                                            \n            AddTemplateItems(MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_2, GetInventoryTemplate(MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_1).TemplateItems);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_2, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_Basic, 2, 5, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_2, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_SAPHEI, 1, 5, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_2, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Guided_Missile_Engine_Detection, 1, 5, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_2, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Guided_Missile_Radar_Detection, 1, 5, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_2, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Shotgun_High_Speed, 1, 5, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_2, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Mine_Basic, 1, 3, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_2, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Flash_Bomb, 1, 3, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_2, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Remote_Camera, 1, 2, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_2, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Smoke_Bomb, 1, 3, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_2, MyMwcObjectBuilderTypeEnum.SmallShip_Weapon, (int)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Cannon, 1, 2, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_2, MyMwcObjectBuilderTypeEnum.SmallShip_Weapon, (int)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Universal_Launcher_Front, 1, 1, 1f);\n\n            // Army merchant template Tier 3\n            AddTemplateItems(MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_3, GetInventoryTemplate(MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_2).TemplateItems);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_3, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_High_Speed, 1, 5, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_3, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Shotgun_Explosive, 1, 5, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_3, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Decoy_Flare, 1, 3, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_3, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Directional_Explosive, 1, 3, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_3, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Hologram, 1, 3, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_3, MyMwcObjectBuilderTypeEnum.SmallShip_Armor, (int)MyMwcObjectBuilder_SmallShip_Armor_TypesEnum.High_Endurance, 1, 1, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_3, MyMwcObjectBuilderTypeEnum.SmallShip_Weapon, (int)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Universal_Launcher_Back, 1, 1, 1f);\n\n            // Army merchant template Tier 4\n            AddTemplateItems(MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_4, GetInventoryTemplate(MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_3).TemplateItems);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_4, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_SAPHEI, 1, 5, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_4, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Machine_Gun_Basic, 1, 5, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_4, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Automatic_Rifle_With_Silencer_High_Speed, 1, 5, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_4, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Shotgun_Armor_Piercing, 1, 5, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_4, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Sniper_High_Speed, 1, 5, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_4, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Mine_Smart, 1, 3, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_4, MyMwcObjectBuilderTypeEnum.SmallShip_Weapon, (int)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Machine_Gun, 1, 2, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_4, MyMwcObjectBuilderTypeEnum.SmallShip_Weapon, (int)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Sniper, 1, 2, 1f);\n\n            // Army merchant template Tier 5\n            AddTemplateItems(MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_5, GetInventoryTemplate(MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_4).TemplateItems);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_5, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_Tunnel_Buster, 1, 3, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_5, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_EMP, 1, 3, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_5, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Machine_Gun_High_Speed, 1, 5, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_5, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Missile_EMP, 1, 5, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_5, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Automatic_Rifle_With_Silencer_SAPHEI, 1, 5, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_5, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Sniper_EMP, 1, 3, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_5, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Sniper_SAPHEI, 1, 3, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_5, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Illuminating_Shell, 1, 5, 1f);\n\n            // Army merchant template Tier 6\n            AddTemplateItems(MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_6, GetInventoryTemplate(MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_5).TemplateItems);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_6, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_BioChem, 1, 5, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_6, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Machine_Gun_SAPHEI, 1, 5, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_6, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Missile_BioChem, 1, 5, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_6, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Automatic_Rifle_With_Silencer_BioChem, 1, 5, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_6, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Sniper_BioChem, 1, 5, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_6, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Asteroid_Killer, 1, 3, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_6, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_EMP_Bomb, 1, 3, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_6, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Remote_Bomb, 1, 3, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_6, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Sphere_Explosive, 1, 3, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_6, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Time_Bomb, 1, 3, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_6, MyMwcObjectBuilderTypeEnum.SmallShip_Weapon, (int)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Automatic_Rifle_With_Silencer, 1, 2, 1f);\n\n            // Army merchant template Tier 7\n            AddTemplateItems(MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_7, GetInventoryTemplate(MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_6).TemplateItems);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_7, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_Proximity_Explosive, 1, 3, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_7, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Machine_Gun_BioChem, 1, 5, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_7, MyMwcObjectBuilderTypeEnum.SmallShip_Armor, (int)MyMwcObjectBuilder_SmallShip_Armor_TypesEnum.Solar_Wind, 1, 1, 1f);\n\n            // Army merchant template Tier 8\n            AddTemplateItems(MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_8, GetInventoryTemplate(MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_7).TemplateItems);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_8, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_BioChem, 1, 5, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_8, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_EMP, 1, 3, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_8, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Machine_Gun_EMP, 1, 5, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_8, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Mine_BioChem, 1, 3, 1f);\n\n            // Army merchant template Tier 9\n            // Empty now\n\n            // Army merchant template Tier Special\n            // Empty now\n            #endregion\n\n            #region Medicine merchant tier templates\n            // Medicine merchant template Tier 1\n            // Empty now\n\n            // Medicine merchant template Tier 2                                                                                                                                            \n            // Empty now\n\n            // Medicine merchant template Tier 3\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantMedicine_Tier_3, MyMwcObjectBuilderTypeEnum.SmallShip_Tool, (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.PERFORMANCE_ENHANCING_MEDICINE, 1, 3, 1f);\n\n            // Medicine merchant template Tier 4\n            AddTemplateItems(MyMwcInventoryTemplateTypeEnum.MerchantMedicine_Tier_4, GetInventoryTemplate(MyMwcInventoryTemplateTypeEnum.MerchantMedicine_Tier_3).TemplateItems);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantMedicine_Tier_4, MyMwcObjectBuilderTypeEnum.SmallShip_Tool, (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.ANTIRADIATION_MEDICINE, 1, 3, 1f);\n\n            // Medicine merchant template Tier 5\n            // Empty now\n\n            // Medicine merchant template Tier 6\n            AddTemplateItems(MyMwcInventoryTemplateTypeEnum.MerchantMedicine_Tier_6, GetInventoryTemplate(MyMwcInventoryTemplateTypeEnum.MerchantMedicine_Tier_4).TemplateItems);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantMedicine_Tier_6, MyMwcObjectBuilderTypeEnum.SmallShip_Tool, (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.HEALTH_ENHANCING_MEDICINE, 1, 3, 1f);\n\n            // Medicine merchant template Tier 7\n            // Empty now\n\n            // Medicine merchant template Tier 8\n            // Empty now\n\n            // Medicine merchant template Tier 9\n            // Empty now\n\n            // Medicine merchant template Tier Special\n            // Empty now\n            #endregion\n\n            #region Tools merchant tier templates\n            // Tools merchant template Tier 1\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantTools_Tier_1, MyMwcObjectBuilderTypeEnum.SmallShip_Weapon, (int)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Crusher, 1, 1, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantTools_Tier_1, MyMwcObjectBuilderTypeEnum.Drone, (int)MyMwcObjectBuilder_Drone_TypesEnum.DroneUS, 1, 1, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantTools_Tier_1, MyMwcObjectBuilderTypeEnum.SmallShip_Engine, (int)MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.Chemical_1, 1, 1, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantTools_Tier_1, MyMwcObjectBuilderTypeEnum.SmallShip_Engine, (int)MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.PowerCells_1, 1, 1, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantTools_Tier_1, MyMwcObjectBuilderTypeEnum.SmallShip_Engine, (int)MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.PowerCells_2, 1, 1, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantTools_Tier_1, MyMwcObjectBuilderTypeEnum.SmallShip_HackingTool, (int)MyMwcObjectBuilder_SmallShip_HackingTool_TypesEnum.Level_1, 1, 1, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantTools_Tier_1, MyMwcObjectBuilderTypeEnum.SmallShip_Tool, (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.FUEL_KIT, 2, 6, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantTools_Tier_1, MyMwcObjectBuilderTypeEnum.SmallShip_Tool, (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.HEALTH_KIT, 1, 3, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantTools_Tier_1, MyMwcObjectBuilderTypeEnum.SmallShip_Tool, (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.OXYGEN_KIT, 2, 6, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantTools_Tier_1, MyMwcObjectBuilderTypeEnum.SmallShip_Tool, (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.REPAIR_KIT, 2, 10, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantTools_Tier_1, MyMwcObjectBuilderTypeEnum.SmallShip_Weapon, (int)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Harvesting_Device, 1, 1, 1f);            \n\n            // Tools merchant template Tier 2\n            AddTemplateItems(MyMwcInventoryTemplateTypeEnum.MerchantTools_Tier_2, GetInventoryTemplate(MyMwcInventoryTemplateTypeEnum.MerchantTools_Tier_1).TemplateItems);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantTools_Tier_2, MyMwcObjectBuilderTypeEnum.SmallShip_Engine, (int)MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.Chemical_2, 1, 1, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantTools_Tier_2, MyMwcObjectBuilderTypeEnum.SmallShip_Engine, (int)MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.Nuclear_1, 1, 1, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantTools_Tier_2, MyMwcObjectBuilderTypeEnum.SmallShip_Engine, (int)MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.Nuclear_2, 1, 1, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantTools_Tier_2, MyMwcObjectBuilderTypeEnum.SmallShip_HackingTool, (int)MyMwcObjectBuilder_SmallShip_HackingTool_TypesEnum.Level_2, 1, 1, 1f);\n\n            // Tools merchant template Tier 3\n            AddTemplateItems(MyMwcInventoryTemplateTypeEnum.MerchantTools_Tier_3, GetInventoryTemplate(MyMwcInventoryTemplateTypeEnum.MerchantTools_Tier_2).TemplateItems);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantTools_Tier_3, MyMwcObjectBuilderTypeEnum.SmallShip_Weapon, (int)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Thermal, 1, 1, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantTools_Tier_3, MyMwcObjectBuilderTypeEnum.SmallShip_Engine, (int)MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.PowerCells_3, 1, 1, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantTools_Tier_3, MyMwcObjectBuilderTypeEnum.SmallShip_Tool, (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.RADAR_JAMMER, 1, 1, 1f);\n\n            // Tools merchant template Tier 4\n            AddTemplateItems(MyMwcInventoryTemplateTypeEnum.MerchantTools_Tier_4, GetInventoryTemplate(MyMwcInventoryTemplateTypeEnum.MerchantTools_Tier_3).TemplateItems);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantTools_Tier_4, MyMwcObjectBuilderTypeEnum.SmallShip_Weapon, (int)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Saw, 1, 1, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantTools_Tier_4, MyMwcObjectBuilderTypeEnum.Drone, (int)MyMwcObjectBuilder_Drone_TypesEnum.DroneCN, 1, 1, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantTools_Tier_4, MyMwcObjectBuilderTypeEnum.SmallShip_Engine, (int)MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.Chemical_3, 1, 1, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantTools_Tier_4, MyMwcObjectBuilderTypeEnum.SmallShip_Engine, (int)MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.Nuclear_3, 1, 1, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantTools_Tier_4, MyMwcObjectBuilderTypeEnum.SmallShip_HackingTool, (int)MyMwcObjectBuilder_SmallShip_HackingTool_TypesEnum.Level_3, 1, 1, 1f);\n\n            // Tools merchant template Tier 5\n            AddTemplateItems(MyMwcInventoryTemplateTypeEnum.MerchantTools_Tier_5, GetInventoryTemplate(MyMwcInventoryTemplateTypeEnum.MerchantTools_Tier_4).TemplateItems);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantTools_Tier_5, MyMwcObjectBuilderTypeEnum.SmallShip_Weapon, (int)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Nuclear, 1, 1, 1f);\n\n            // Tools merchant template Tier 6\n            AddTemplateItems(MyMwcInventoryTemplateTypeEnum.MerchantTools_Tier_6, GetInventoryTemplate(MyMwcInventoryTemplateTypeEnum.MerchantTools_Tier_5).TemplateItems);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantTools_Tier_6, MyMwcObjectBuilderTypeEnum.SmallShip_Engine, (int)MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.Nuclear_4, 1, 1, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantTools_Tier_6, MyMwcObjectBuilderTypeEnum.SmallShip_Engine, (int)MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.PowerCells_4, 1, 1, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantTools_Tier_6, MyMwcObjectBuilderTypeEnum.SmallShip_Tool, (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.NANO_REPAIR_TOOL, 1, 3, 1f);\n\n            // Tools merchant template Tier 7\n            AddTemplateItems(MyMwcInventoryTemplateTypeEnum.MerchantTools_Tier_7, GetInventoryTemplate(MyMwcInventoryTemplateTypeEnum.MerchantTools_Tier_6).TemplateItems);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantTools_Tier_7, MyMwcObjectBuilderTypeEnum.SmallShip_Weapon, (int)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Laser, 1, 1, 1f);            \n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantTools_Tier_7, MyMwcObjectBuilderTypeEnum.SmallShip_Engine, (int)MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.Chemical_4, 1, 1, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantTools_Tier_7, MyMwcObjectBuilderTypeEnum.SmallShip_HackingTool, (int)MyMwcObjectBuilder_SmallShip_HackingTool_TypesEnum.Level_4, 1, 1, 1f);\n\n            // Tools merchant template Tier 8\n            AddTemplateItems(MyMwcInventoryTemplateTypeEnum.MerchantTools_Tier_8, GetInventoryTemplate(MyMwcInventoryTemplateTypeEnum.MerchantTools_Tier_7).TemplateItems);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantTools_Tier_8, MyMwcObjectBuilderTypeEnum.SmallShip_Weapon, (int)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Pressure, 1, 1, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantTools_Tier_8, MyMwcObjectBuilderTypeEnum.Drone, (int)MyMwcObjectBuilder_Drone_TypesEnum.DroneSS, 1, 1, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantTools_Tier_8, MyMwcObjectBuilderTypeEnum.SmallShip_Engine, (int)MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.Nuclear_5, 1, 1, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantTools_Tier_8, MyMwcObjectBuilderTypeEnum.SmallShip_Engine, (int)MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.PowerCells_5, 1, 1, 1f);            \n\n            // Tools merchant template Tier 9\n            AddTemplateItems(MyMwcInventoryTemplateTypeEnum.MerchantTools_Tier_9, GetInventoryTemplate(MyMwcInventoryTemplateTypeEnum.MerchantTools_Tier_8).TemplateItems);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantTools_Tier_9, MyMwcObjectBuilderTypeEnum.SmallShip_Engine, (int)MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.Chemical_5, 1, 1, 1f);\n            AddTemplateItem(MyMwcInventoryTemplateTypeEnum.MerchantTools_Tier_9, MyMwcObjectBuilderTypeEnum.SmallShip_HackingTool, (int)MyMwcObjectBuilder_SmallShip_HackingTool_TypesEnum.Level_5, 1, 1, 1f);\n\n            // Tools merchant template Tier Special\n            // Empty now\n            #endregion\n\n            #region Mixed merchant tier templates\n            // Mixed merchant Tier 1\n            helperTemplateItems.Clear();\n            GetInventoryTemplateItems(ref helperTemplateItems, MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_1, MyMwcInventoryTemplateTypeEnum.MerchantMedicine_Tier_1, MyMwcInventoryTemplateTypeEnum.MerchantTools_Tier_1);\n            AddTemplateItems(MyMwcInventoryTemplateTypeEnum.MerchantMixed_Tier_1, helperTemplateItems);\n\n            // Mixed merchant Tier 2\n            helperTemplateItems.Clear();\n            GetInventoryTemplateItems(ref helperTemplateItems, MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_2, MyMwcInventoryTemplateTypeEnum.MerchantMedicine_Tier_2, MyMwcInventoryTemplateTypeEnum.MerchantTools_Tier_2);\n            AddTemplateItems(MyMwcInventoryTemplateTypeEnum.MerchantMixed_Tier_2, helperTemplateItems);\n\n            // Mixed merchant Tier 3\n            helperTemplateItems.Clear();\n            GetInventoryTemplateItems(ref helperTemplateItems, MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_3, MyMwcInventoryTemplateTypeEnum.MerchantMedicine_Tier_3, MyMwcInventoryTemplateTypeEnum.MerchantTools_Tier_3);\n            AddTemplateItems(MyMwcInventoryTemplateTypeEnum.MerchantMixed_Tier_3, helperTemplateItems);\n\n            // Mixed merchant Tier 4\n            helperTemplateItems.Clear();\n            GetInventoryTemplateItems(ref helperTemplateItems, MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_4, MyMwcInventoryTemplateTypeEnum.MerchantMedicine_Tier_4, MyMwcInventoryTemplateTypeEnum.MerchantTools_Tier_4);\n            AddTemplateItems(MyMwcInventoryTemplateTypeEnum.MerchantMixed_Tier_4, helperTemplateItems);\n\n            // Mixed merchant Tier 5\n            helperTemplateItems.Clear();\n            GetInventoryTemplateItems(ref helperTemplateItems, MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_5, MyMwcInventoryTemplateTypeEnum.MerchantMedicine_Tier_5, MyMwcInventoryTemplateTypeEnum.MerchantTools_Tier_5);\n            AddTemplateItems(MyMwcInventoryTemplateTypeEnum.MerchantMixed_Tier_5, helperTemplateItems);\n\n            // Mixed merchant Tier 6\n            helperTemplateItems.Clear();\n            GetInventoryTemplateItems(ref helperTemplateItems, MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_6, MyMwcInventoryTemplateTypeEnum.MerchantMedicine_Tier_6, MyMwcInventoryTemplateTypeEnum.MerchantTools_Tier_6);\n            AddTemplateItems(MyMwcInventoryTemplateTypeEnum.MerchantMixed_Tier_6, helperTemplateItems);\n\n            // Mixed merchant Tier 7\n            helperTemplateItems.Clear();\n            GetInventoryTemplateItems(ref helperTemplateItems, MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_7, MyMwcInventoryTemplateTypeEnum.MerchantMedicine_Tier_7, MyMwcInventoryTemplateTypeEnum.MerchantTools_Tier_7);\n            AddTemplateItems(MyMwcInventoryTemplateTypeEnum.MerchantMixed_Tier_7, helperTemplateItems);\n\n            // Mixed merchant Tier 8\n            helperTemplateItems.Clear();\n            GetInventoryTemplateItems(ref helperTemplateItems, MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_8, MyMwcInventoryTemplateTypeEnum.MerchantMedicine_Tier_8, MyMwcInventoryTemplateTypeEnum.MerchantTools_Tier_8);\n            AddTemplateItems(MyMwcInventoryTemplateTypeEnum.MerchantMixed_Tier_8, helperTemplateItems);\n\n            // Mixed merchant Tier 9\n            helperTemplateItems.Clear();\n            GetInventoryTemplateItems(ref helperTemplateItems, MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_9, MyMwcInventoryTemplateTypeEnum.MerchantMedicine_Tier_9, MyMwcInventoryTemplateTypeEnum.MerchantTools_Tier_9);\n            AddTemplateItems(MyMwcInventoryTemplateTypeEnum.MerchantMixed_Tier_9, helperTemplateItems);\n\n            // Mixed merchant Tier Special\n            helperTemplateItems.Clear();\n            GetInventoryTemplateItems(ref helperTemplateItems, MyMwcInventoryTemplateTypeEnum.MerchantArmy_Tier_Special, MyMwcInventoryTemplateTypeEnum.MerchantMedicine_Tier_Special, MyMwcInventoryTemplateTypeEnum.MerchantTools_Tier_Special);\n            AddTemplateItems(MyMwcInventoryTemplateTypeEnum.MerchantMixed_Tier_Special, helperTemplateItems);\n            #endregion\n        }\n\n        private static void NormalizeDistribution(MyMwcInventoryTemplateTypeEnum templateId, int amount)\n        {\n            var templates = m_templates[(int)templateId].TemplateItems;\n            foreach (var template in templates)\n            {\n                template.ChanceToRefill = amount / (float)templates.Count;\n            }\n        }\n\n        private static void AddTemplateItem(MyMwcInventoryTemplateTypeEnum templateType, MyMwcObjectBuilderTypeEnum objectBuilderType, int objectBuilderId, int countToRefillMin, int countToRefillMax, float amountRatioMin, float amountRatioMax, float chanceToRefill) \n        {\n            AddTemplateItem(templateType, new MyInventoryTemplateItem(objectBuilderType, objectBuilderId, amountRatioMin, amountRatioMax, countToRefillMin, countToRefillMax, chanceToRefill));\n        }\n\n        private static void AddTemplateItem(MyMwcInventoryTemplateTypeEnum templateType, MyMwcObjectBuilderTypeEnum objectBuilderType, int objectBuilderId, int countToRefillMin, int countToRefillMax, float chanceToRefill)\n        {\n            AddTemplateItem(templateType, objectBuilderType, objectBuilderId, countToRefillMin, countToRefillMax, 1f, 1f, chanceToRefill);\n        }\n\n        private static void AddTemplateItem(MyMwcInventoryTemplateTypeEnum templateType, MyInventoryTemplateItem templateItem) \n        {\n            if (!m_templates.ContainsKey((int)templateType)) \n            {\n                m_templates.Add((int)templateType, new MyInventoryTemplate(templateType));\n            }\n\n            m_templates[(int)templateType].AddTemplateItem(templateItem);\n        }\n\n        private static void AddTemplateItems(MyMwcInventoryTemplateTypeEnum templateType, IEnumerable<MyInventoryTemplateItem> templateItems) \n        {\n            foreach (MyInventoryTemplateItem templateItem in templateItems)\n            {\n                AddTemplateItem(templateType, templateItem);\n            }\n        }\n\n        private static MyInventoryTemplate GetInventoryTemplate(MyMwcInventoryTemplateTypeEnum templateType) \n        {\n            MyInventoryTemplate template = null;\n            m_templates.TryGetValue((int)templateType, out template);\n            Debug.Assert(template != null);\n            return template;\n        }\n\n        private static void GetInventoryTemplateItems(ref List<MyInventoryTemplateItem> collectionToFill, params MyMwcInventoryTemplateTypeEnum[] templateTypes) \n        {\n            if (templateTypes != null) \n            {\n                foreach (MyMwcInventoryTemplateTypeEnum templateType in templateTypes)\n                {\n                    if (ContainsAnyItems(templateType)) \n                    {\n                        collectionToFill.AddRange(GetInventoryTemplate(templateType).TemplateItems);\n                    }\n                }\n            }\n        }\n\n        public static void RefillInventory(MyInventory inventory) \n        {\n            Debug.Assert(inventory.TemplateType != null);\n            MyInventoryTemplate template = GetInventoryTemplate(inventory.TemplateType.Value);\n            template.RefillInventory(inventory);\n        }\n\n        public static bool ContainsAnyItems(MyMwcInventoryTemplateTypeEnum templateType) \n        {\n            MyInventoryTemplate template = null;\n            m_templates.TryGetValue((int)templateType, out template);\n            return template != null && template.TemplateItems != null && template.TemplateItems.Count > 0;\n        }\n    }\n\n    class MyInventoryTemplateItem \n    {\n        public MyMwcObjectBuilderTypeEnum ObjectBuilderType { get; private set; }\n        public int ObjectBuilderId { get; private set; }\n        public float AmountRatioMin { get; private set; }\n        public float AmountRatioMax { get; private set; }\n        public int CountToRefillMin { get; private set; }\n        public int CountToRefillMax { get; private set; }\n        public float ChanceToRefill { get; set; }\n\n        public MyInventoryTemplateItem(MyMwcObjectBuilderTypeEnum objectBuilderType, int objectBuilderId, float amountRatioMin, float amountRatioMax,\n            int countToRefillMin, int countToRefillMax, float chanceToRefill) \n        {\n            if (!MyMwcObjectBuilder_Base.IsObjectBuilderIdValid(objectBuilderType, objectBuilderId)) \n            {\n                throw new ArgumentException(\"Invalid objectbuilderId!\");\n            }\n            if (amountRatioMin < 0f) \n            {\n                throw new ArgumentOutOfRangeException(\"amountRatioMin\");\n            }\n            if (amountRatioMax < 0f)\n            {\n                throw new ArgumentOutOfRangeException(\"amountRatioMax\");\n            }\n            if (amountRatioMax < amountRatioMin) \n            {\n                throw new ArgumentException(\"Amount ratio max can't be lesser than amount ratio min!\");\n            }\n            if (countToRefillMin < 0)\n            {\n                throw new ArgumentOutOfRangeException(\"countToRefillMin\");\n            }\n            if (countToRefillMax < 0)\n            {\n                throw new ArgumentOutOfRangeException(\"countToRefillMax\");\n            }\n            if (countToRefillMax < countToRefillMin)\n            {\n                throw new ArgumentException(\"Count to refill max can't be lesser than count to refill min!\");\n            }\n            if (chanceToRefill < 0f || chanceToRefill > 1f) \n            {\n                throw new ArgumentOutOfRangeException(\"chanceToRefill\");\n            }\n\n            ObjectBuilderType = objectBuilderType;\n            ObjectBuilderId = objectBuilderId;\n            AmountRatioMin = amountRatioMin;\n            AmountRatioMax = amountRatioMax;\n            CountToRefillMin = countToRefillMin;\n            CountToRefillMax = countToRefillMax;\n            ChanceToRefill = chanceToRefill;\n        }\n    }\n\n    class MyInventoryTemplate\n    {\n        public MyMwcInventoryTemplateTypeEnum TemplateType { get; private set; }\n        public List<MyInventoryTemplateItem> TemplateItems { get; private set; }\n\n        public MyInventoryTemplate(MyMwcInventoryTemplateTypeEnum templateType)\n            : this(templateType, new List<MyInventoryTemplateItem>()) \n        {\n        }\n\n        public MyInventoryTemplate(MyMwcInventoryTemplateTypeEnum templateType, List<MyInventoryTemplateItem> templateItems) \n        {\n            TemplateType = templateType;\n            TemplateItems = templateItems;\n        }\n\n        public void AddTemplateItem(MyInventoryTemplateItem templateItem) \n        {\n            TemplateItems.Add(templateItem);\n        }\n\n        public void RefillInventory(MyInventory inventory) \n        {\n            foreach (MyInventoryTemplateItem templateItem in TemplateItems) \n            {\n                // test chance to refill\n                if (MyMwcUtils.GetRandomFloat(0.0001f, 1f) > templateItem.ChanceToRefill) \n                {\n                    continue;\n                }\n\n                // get count to refill\n                int existingCount = inventory.GetInventoryItemsCount(templateItem.ObjectBuilderType, templateItem.ObjectBuilderId);\n                int countToRefill = MyMwcUtils.GetRandomInt(templateItem.CountToRefillMin, templateItem.CountToRefillMax) - existingCount;\n                for (int i = 0; i < countToRefill; i++) \n                {\n                    if (inventory.IsFull) \n                    {\n                        return;\n                    }\n\n                    // get amount ratio to refill\n                    float amountRatio = MyMwcUtils.GetRandomFloat(templateItem.AmountRatioMin, templateItem.AmountRatioMax);\n                    if(amountRatio > 0f)\n                    {\n                        MyMwcObjectBuilder_Base objectBuilder = MyMwcObjectBuilder_Base.CreateNewObject(templateItem.ObjectBuilderType, templateItem.ObjectBuilderId);\n                        MyInventoryItem inventoryItem = MyInventory.CreateInventoryItemFromObjectBuilder(objectBuilder);\n                        inventoryItem.Amount = (float)(int)(amountRatio * inventoryItem.MaxAmount);\n                        inventory.AddInventoryItem(inventoryItem);\n                    }\n                }\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Journal/MyEventLog.cs",
    "content": "﻿using System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Linq;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Missions;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\n\nnamespace MinerWars.AppCode.Game.Journal\n{\n    /// <summary>\n    /// Event log stores info about missions and about global game events, \n    /// such as faction changes, or important player achievements / impacts on the game.\n    /// </summary>\n    class MyEventLog\n    {\n        public List<MyEventLogEntry> Events { get; set; }        \n\n        public MyEventLog()\n        {\n            Events = new List<MyEventLogEntry>();\n        }\n\n        private void AddEvent(int eventID, EventTypeEnum eventTypeEnum)\n        {\n            Events.Add(new MyEventLogEntry(MySession.Static.GameDateTime)\n            {\n                EventType = eventTypeEnum,\n                EventTypeID = eventID,\n            });\n        }\n\n        public void AddMissionStarted(MyMissionID missionID)\n        {\n\n            bool contains = false;\n            foreach (MyEventLogEntry myEventLogEntry in Events)\n            {\n                if (myEventLogEntry.EventType == EventTypeEnum.MissionStarted && myEventLogEntry.EventTypeID == (int)missionID)\n                {\n                    contains = true; // sometimes there was duplicates of entries\n                    break;\n                }\n            }\n\n            if (!contains) AddEvent((int)missionID, EventTypeEnum.MissionStarted);\n        }\n\n        public void MissionFinished(MyMissionID missionID)\n        {\n            //AddEvent((int)missionID, EventTypeEnum.MissionFinished);\n            foreach (MyEventLogEntry myEventLogEntry in Events)\n            {\n                if(myEventLogEntry.EventType ==EventTypeEnum.MissionStarted && myEventLogEntry.EventTypeID ==(int)missionID)\n                {\n                    myEventLogEntry.EventType = EventTypeEnum.MissionFinished;\n                }\n            }\n        }\n\n        public void AddSubmissionAvailable(MyMissionID missionID)\n        {\n            bool contains = false;\n            foreach (MyEventLogEntry myEventLogEntry in Events)\n            {\n                if (myEventLogEntry.EventType == EventTypeEnum.SubmissionAvailable && myEventLogEntry.EventTypeID == (int)missionID)\n                {\n                    contains = true; // sometimes there was duplicates of entries\n                    break;\n                }\n            }\n\n            if (!contains) AddEvent((int)missionID, EventTypeEnum.SubmissionAvailable);\n\n        }\n\n        public void SubmissionFinished(MyMissionID missionID)\n        {\n            //AddEvent((int)missionID, EventTypeEnum.SubmissionFinished);\n            foreach (MyEventLogEntry myEventLogEntry in Events)\n            {\n                if (myEventLogEntry.EventType == EventTypeEnum.SubmissionAvailable && myEventLogEntry.EventTypeID == (int)missionID)\n                {\n                    myEventLogEntry.EventType = EventTypeEnum.SubmissionFinished;\n                }\n            }\n\n        }\n\n        public void AddGlobalEvent(MyGlobalEventEnum eventID)\n        {\n            AddEvent((int)eventID, EventTypeEnum.GlobalEvent);\n        }\n\n\n        public void AddStoryEvent()\n        {\n            //AddEvent((int)eventID, EventTypeEnum.GlobalEvent);\n        }\n\n\n        public bool IsMissionFinished(MyMissionID missionID)\n        {\n            foreach (var logEntry in Events)\n            {\n                if ((logEntry.EventType == EventTypeEnum.MissionFinished ||\n                     logEntry.EventType == EventTypeEnum.SubmissionFinished) &&\n                     logEntry.EventTypeID == (int) missionID)\n                {\n                    return true;\n                }\n            }\n            return false;\n        }\n\n        public bool AreMissionsFinished(MyMissionID[] missions)\n        {\n            foreach (MyMissionID missionID in missions)\n            {\n                if (!IsMissionFinished(missionID))\n                {\n                    return false;\n                }\n            }\n            return true;\n        }\n\n        public int GetFinishedMissionCount(IEnumerable<MyMissionID> missions)\n        {\n            int count = 0;\n            foreach (MyMissionID missionID in missions)\n            {\n                if (IsMissionFinished(missionID))\n                {\n                    ++count;\n                }\n            }\n            return count;\n        }\n\n        internal void Init(MyMwcObjectBuilder_Checkpoint checkpointObjectBuilder)\n        {\n            Debug.Assert(checkpointObjectBuilder != null);\n\n            if (checkpointObjectBuilder.EventLogObjectBuilder == null) return;\n\n            Events.Clear();\n            foreach (MyMwcObjectBuilder_Event eventLogEntryObjectBuilder in checkpointObjectBuilder.EventLogObjectBuilder)\n            {\n                var eventLogEntry = new MyEventLogEntry();\n                eventLogEntry.Init(eventLogEntryObjectBuilder);\n                Events.Add(eventLogEntry);\n            }\n        }\n\n        internal List<MyMwcObjectBuilder_Event> GetObjectBuilder()\n        {\n            return Events.Select(item => item.GetObjectBuilder()).ToList();\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Journal/MyEventLogEntry.cs",
    "content": "﻿using System;\nusing System.Text;\nusing MinerWars.AppCode.Game.Missions;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.AppCode.Game.Localization;\n\nnamespace MinerWars.AppCode.Game.Journal\n{\n    public enum StatusEnum\n    {\n        Unread = 1,\n        Read = 2,\n    }\n\n    public enum EventTypeEnum\n    {\n        GlobalEvent = 1,\n        MissionStarted = 2,\n        MissionFinished = 3,\n        SubmissionFinished = 4,\n        SubmissionAvailable = 5,\n        Story = 6,\n    }\n\n    class MyEventLogEntry\n    {\n        public StatusEnum Status { get; set; }\n\n        public EventTypeEnum EventType { get; set; }\n\n        public DateTime Time { get; set; }\n\n        public int EventTypeID { get; set; }\n\n        public MyEventLogEntry() { Time = new DateTime(2081, 1, 1); }\n\n        public MyEventLogEntry(DateTime time)\n        {\n            Time = time;\n            Status = StatusEnum.Unread;\n        }\n\n        public void Init(MyMwcObjectBuilder_Event objectBuilder)\n        {\n            Status = (StatusEnum)objectBuilder.Status;\n            EventType = (EventTypeEnum)objectBuilder.EventType;\n            Time = objectBuilder.Time;\n            EventTypeID = objectBuilder.EventTypeID;\n        }\n\n        internal MyMwcObjectBuilder_Event GetObjectBuilder()\n        {\n            MyMwcObjectBuilder_Event builder = MyMwcObjectBuilder_Base.CreateNewObject(MyMwcObjectBuilderTypeEnum.Event, null) as MyMwcObjectBuilder_Event;\n            builder.Status = (byte) Status;\n            builder.EventType = (byte) EventType;\n            builder.Time = Time;\n            builder.EventTypeID = EventTypeID;\n            return builder;\n        }\n\n        public StringBuilder GetName()\n        {\n            switch (EventType)\n            {\n                case EventTypeEnum.GlobalEvent:\n                    var globalEvent = MyGlobalEvents.GetGlobalEventByType((MyGlobalEventEnum)EventTypeID);\n                    if (globalEvent != null)\n                    {\n                        return MyTextsWrapper.Get(globalEvent.Name);\n                    }\n                    break;\n                case EventTypeEnum.MissionStarted:\n                case EventTypeEnum.MissionFinished:\n                case EventTypeEnum.SubmissionAvailable:\n                case EventTypeEnum.SubmissionFinished:\n                    //case EventTypeEnum.Story:\n                    var mission = MyMissions.GetMissionByID((MyMissionID)EventTypeID);\n                    if (mission != null)\n                    {\n                        return mission.NameTemp;\n                    }\n                    break;\n            }\n            return null;\n            //return MyTextsWrapperEnum.Null;\n        }\n\n        public StringBuilder GetDescription() //TODO: change this to MyTextsWrapperEnum\n        {\n            switch (EventType)\n            {\n                case EventTypeEnum.GlobalEvent:\n                    var globalEvent = MyGlobalEvents.GetGlobalEventByType((MyGlobalEventEnum)EventTypeID);\n                    return MyTextsWrapper.Get(globalEvent.Description);\n                case EventTypeEnum.MissionStarted:\n                case EventTypeEnum.MissionFinished:\n                case EventTypeEnum.SubmissionAvailable:\n                case EventTypeEnum.SubmissionFinished:\n                //case EventTypeEnum.Story:\n                    var mission = MyMissions.GetMissionByID((MyMissionID)EventTypeID);\n                    return mission.DescriptionTemp;\n            }\n\n            return null;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Lights/MyDirectionalLight.cs",
    "content": "﻿using MinerWarsMath;\n\nnamespace MinerWars.AppCode.Game.Lights\n{\n    class MyDirectionalLight\n    {\n        //  IMPORTANT: This class isn't realy inicialized by constructor, but by Start()\n        //  So don't initialize members here, do it in Start()\n\n        public Vector3 Direction;\n        public Vector4 Color;\n        public Vector3 BackColor;\n        public Vector3 SpecularColor = Vector3.One;\n        public float Intensity;\n        public float BackIntensity;\n        public bool LightOn;        //  If true, we use the light in lighting calculation. Otherwise it's like turned off, but still in the buffer.\n\n        //  IMPORTANT: This class isn't realy inicialized by constructor, but by Start()\n        //  So don't initialize members here, do it in Start()\n        public MyDirectionalLight()\n        {\n        }\n\n        //  IMPORTANT: This class isn't realy inicialized by constructor, but by Start()\n        public void Start()\n        {\n            LightOn = true;\n            Intensity = 1.0f;\n            BackIntensity = 0.1f;\n        }\n\n        //  IMPORTANT: This class isn't realy inicialized by constructor, but by Start()\n        public void Start(Vector3 direction, Vector4 color, Vector3 backColor)\n        {\n            Start();\n\n            Direction = direction;\n            Color = color;\n            BackColor = backColor;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Lights/MyLight.cs",
    "content": "﻿using MinerWarsMath;\nusing System;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.AppCode.Game.Render;\nusing MinerWars.AppCode.Physics;\n\nnamespace MinerWars.AppCode.Game.Lights\n{\n\n    class MyLight\n    {\n        //  IMPORTANT: This class isn't realy inicialized by constructor, but by Start()\n        //  So don't initialize members here, do it in Start()\n\n        /// <summary>\n        /// Light type, flags, could be combined\n        /// </summary>\n        [Flags]\n        public enum LightTypeEnum\n        {\n            None,\n            PointLight = 1 << 0,\n            Spotlight = 1 << 1,\n            Hemisphere = 1 << 2,\n        }\n\n        public enum LightOwnerEnum\n        {\n            None,\n            SmallShip,\n            LargeShip,\n            Missile\n        }\n\n        public int ProxyId = MyDynamicAABBTree.NullNode;\n\n        readonly MyLightGlare m_glare;\n        public bool GlareOn;\n\n        public Vector3 Position;\n        public Vector3 PositionWithOffset;\n\n        Vector4 m_color;\n        Vector3 m_specularColor = Vector3.One;\n        float m_falloff;\n        float m_range;\n        float m_intensity;\n        bool m_lightOn;        //  If true, we use the light in lighting calculation. Otherwise it's like turned off, but still in the buffer.\n        public bool UseInForwardRender = false;\n\n        LightTypeEnum m_lightType = LightTypeEnum.PointLight; // Type of the light\n        LightOwnerEnum m_lightOwner = LightOwnerEnum.None;\n\n        // Reflector parameters are also parameters for spot light\n        float m_reflectorIntensity;\n        bool m_reflectorOn = false;\n        Vector3 m_reflectorDirection;\n        Vector3 m_reflectorUp;\n        float m_reflectorConeMaxAngleCos;\n        Vector4 m_reflectorColor;\n        float m_reflectorRange;\n        float m_reflectorFalloff;\n        MyTexture2D m_reflectorTexture;\n        float m_pointLightOffset;\n\n        // Value from 0 to 1 indication light offset in direction of reflector\n        // 0 means zero offset, 1 means radius offset\n        public float PointLightOffset \n        {\n            get \n            { \n                return m_pointLightOffset; \n            }\n            set \n            {\n                m_pointLightOffset = value;\n                UpdatePositionWithOffset();\n                m_pointBoundingSphere.Center = PositionWithOffset;\n            }\n        }\n\n        private bool m_spotParamsDirty = true;\n        private BoundingBox m_spotBoundingBox;\n        private Matrix m_spotWorld;\n\n        private BoundingSphere m_pointBoundingSphere;\n\n        public float ShadowDistanceSquared = MyLightsConstants.MAX_SPOTLIGHT_SHADOW_RANGE_SQUARED;\n\n        public float SapSortValue;\n\n        private float m_shadowDistance;\n        // Should be updated only from inside\n        public BoundingSphere PointBoundingSphere { get { return m_pointBoundingSphere; } }\n\n        public BoundingBox SpotBoundingBox\n        {\n            get\n            {\n                if (m_spotParamsDirty)\n                {\n                    UpdateSpotParams();\n                }\n                return m_spotBoundingBox;\n            }\n        }\n\n        public Matrix SpotWorld\n        {\n            get\n            {\n                if (m_spotParamsDirty)\n                {\n                    UpdateSpotParams();\n                }\n                return m_spotWorld;\n            }\n        }\n\n        public static float ConeRadiansToConeMaxAngleCos(float value)\n        {\n            return 1 - (float)Math.Cos(value / 2);\n        }\n\n        public static float ConeDegreesToConeMaxAngleCos(float value)\n        {\n            return ConeRadiansToConeMaxAngleCos(MathHelper.ToRadians(value));\n        }\n\n        public static float ConeMaxAngleCosToRadians(float reflectorConeMaxAngleCos)\n        {\n            return (float)Math.Acos(1 - reflectorConeMaxAngleCos) * 2;\n        }\n\n        public static float ConeMaxAngleCosToDegrees(float reflectorConeMaxAngleCos)\n        {\n            return MathHelper.ToDegrees(ConeMaxAngleCosToRadians(reflectorConeMaxAngleCos));\n        }\n\n\n        void UpdatePositionWithOffset()\n        {\n            PositionWithOffset = Position + ReflectorDirection * m_range * PointLightOffset;\n        }\n\n\n        /// <summary>\n        /// Sets reflector cone angle in degrees, minimum is 0, teoretical maximum is PI\n        /// </summary>\n        public float ReflectorConeRadians\n        {\n            get\n            {\n                return ConeMaxAngleCosToRadians(ReflectorConeMaxAngleCos);\n            }\n            set\n            {\n                ReflectorConeMaxAngleCos = ConeRadiansToConeMaxAngleCos(value);\n            }\n        }\n\n        /// <summary>\n        /// Sets reflector cone angle in degrees, minimum is 0, teoretical maximum is 180\n        /// </summary>\n        public float ReflectorConeDegrees\n        {\n            get\n            {\n                return ConeMaxAngleCosToDegrees(ReflectorConeMaxAngleCos);\n            }\n            set\n            {\n                ReflectorConeMaxAngleCos = ConeDegreesToConeMaxAngleCos(value);\n            }\n        }\n\n        //  IMPORTANT: This class isn't realy inicialized by constructor, but by Start()\n        //  So don't initialize members here, do it in Start()\n        public MyLight()\n        {\n            m_glare = new MyLightGlare(this);\n        }\n\n        //  IMPORTANT: This class isn't realy inicialized by constructor, but by Start()\n        //  Copies values from 'sourceLight' into this instance\n        public void Start(MyLight sourceLight)\n        {\n            //SysUtils.Utils.MyCommonDebugUtils.AssertDebug((sourceLight.LightType & LightTypeEnum.PointLight) != 0 && ReflectorTexture == null, \"ReflectorTexture is null!\");\n            Start(sourceLight.LightType, sourceLight.Position, sourceLight.Color, sourceLight.Falloff, sourceLight.Range);\n        }\n\n        //  IMPORTANT: This class isn't realy inicialized by constructor, but by Start()\n        private void Start()\n        {\n            m_glare.Start();\n            m_reflectorRange = 1;\n            m_reflectorUp = Vector3.Up;\n            m_reflectorDirection = Vector3.Forward;\n            LightOn = true;\n            Intensity = 1.0f;\n            UseInForwardRender = false;\n            m_spotParamsDirty = true;\n            GlareOn = false;\n            PointLightOffset = 0;\n          \n            m_shadowDistance = MyLightsConstants.MAX_SPOTLIGHT_SHADOW_RANGE;\n\n            UpdateLight();\n        }\n\n        private void UpdateLight()\n        {\n            MyLights.UpdateLightProxy(this);\n        }\n\n        public void Start(LightTypeEnum lightType, float falloff)\n        {\n            Start();\n            LightType = lightType;\n\n            if ((lightType & MyLight.LightTypeEnum.PointLight) != 0)\n            {\n                Falloff = falloff;\n                PointOn = true;\n            }\n\n            if ((lightType & MyLight.LightTypeEnum.Hemisphere) != 0)\n            {\n                Falloff = falloff;\n                PointOn = true;\n            }\n\n            if ((lightType & MyLight.LightTypeEnum.Spotlight) != 0)\n            {\n                ReflectorFalloff = falloff;\n                ReflectorOn = true;\n            }\n\n            LightOwner = LightOwnerEnum.None;\n        }\n\n        // Can be called only from MyLights.RemoveLight\n        public void Clear()\n        {\n            m_glare.Clear();\n            ProxyId = MyDynamicAABBTree.NullNode;\n        }\n\n        public bool IsPointLightInFrustum()\n        {\n            return MyCamera.IsInFrustum(ref m_pointBoundingSphere);\n        }\n\n        public bool IsSpotLightInFrustum()\n        {\n            if (m_spotParamsDirty)\n            {\n                UpdateSpotParams();\n            }\n            return MyCamera.IsInFrustum(ref m_spotBoundingBox);\n        }\n\n        public void Start(LightTypeEnum lightType, Vector4 color, float falloff, float range)\n        {\n            Start(lightType, falloff);\n            Color = color;\n            Range = range;\n        }\n\n        //  IMPORTANT: This class isn't realy inicialized by constructor, but by Start()\n        public void Start(LightTypeEnum lightType, Vector3 position, Vector4 color, float falloff, float range)\n        {\n            Start(lightType, color, falloff, range);\n            SetPosition(position);\n        }\n\n        /// <summary>\n        /// When setting Reflector properties, use this function to test whether properties are in bounds and light AABB is not too large.\n        /// Properties which affects calculations are ReflectorRange and ReflectorConeMaxAngleCos (ReflectorConeDegrees, ReflectorConeRadians)\n        /// </summary>\n        /// <returns></returns>\n        public bool SpotlightNotTooLarge(float reflectorConeMaxAngleCos, float reflectorRange)\n        {\n            return reflectorConeMaxAngleCos <= MyLightsConstants.MAX_SPOTLIGHT_ANGLE_COS && reflectorRange <= MyLightsConstants.MAX_SPOTLIGHT_RANGE;\n\n            //BoundingBox bbox = new BoundingBox();\n            //float scaleXY, scaleZ;\n\n            //// Up and direction are both used worst possible\n            //Vector3 direction = MyMwcUtils.Normalize(new Vector3(1, 1, 1));\n            //Vector3 help = new Vector3(1, 0, 0);\n            //Vector3 up = MyMwcUtils.Normalize(Vector3.Cross(direction, help));\n\n            //CalculateAABB(ref bbox, out scaleXY, out scaleZ, direction, up, reflectorConeMaxAngleCos, reflectorRange);\n            //return TestAABB(ref bbox);\n        }\n\n        //private bool TestAABB(ref BoundingBox bbox)\n        //{\n        //    return (bbox.Max - bbox.Min).Length() < MyLightsConstants.MAX_SPOTLIGHT_AABB_DIAGONAL;\n        //}\n\n        private static void CalculateAABB(ref BoundingBox bbox, out float scaleZ, out float scaleXY, ref Vector3 position, ref Vector3 direction, ref Vector3 up, float reflectorConeMaxAngleCos, float reflectorRange)\n        {\n            float cosAngle = 1 - reflectorConeMaxAngleCos;\n            scaleZ = reflectorRange;\n            // Calculate cone side (hypotenuse of triangle)\n            float side = reflectorRange / cosAngle;\n            // Calculate cone bottom scale (Pythagoras theorem)\n            scaleXY = (float)System.Math.Sqrt(side * side - reflectorRange * reflectorRange) * 2;\n\n            up = MyMwcUtils.Normalize(up);\n            Vector3 coneSideDirection = Vector3.Cross(up, direction);\n            coneSideDirection = MyMwcUtils.Normalize(coneSideDirection);\n            Vector3 coneCenter = position + direction * scaleZ;\n            Vector3 pt1 = coneCenter + coneSideDirection * scaleXY / 2 + up * scaleXY / 2;\n            Vector3 pt2 = coneCenter - coneSideDirection * scaleXY / 2 + up * scaleXY / 2;\n            Vector3 pt3 = coneCenter + coneSideDirection * scaleXY / 2 - up * scaleXY / 2;\n            Vector3 pt4 = coneCenter - coneSideDirection * scaleXY / 2 - up * scaleXY / 2;\n\n            bbox = bbox.CreateInvalid();\n            bbox = bbox.Include(ref position);\n            //bbox = bbox.Include(ref coneCenter);\n            bbox = bbox.Include(ref pt1);\n            bbox = bbox.Include(ref pt2);\n            bbox = bbox.Include(ref pt3);\n            bbox = bbox.Include(ref pt4);\n        }\n\n        private void UpdateSpotParams()\n        {\n            float scaleZ, scaleXY;\n            CalculateAABB(ref m_spotBoundingBox, out scaleZ, out scaleXY, ref Position, ref m_reflectorDirection, ref m_reflectorUp, ReflectorConeMaxAngleCos, ReflectorRange);\n            m_spotWorld = Matrix.CreateScale(scaleXY, scaleXY, scaleZ) * Matrix.CreateWorld(Position, ReflectorDirection, ReflectorUp);\n            m_spotParamsDirty = false;\n        }\n\n        /// <summary>\n        /// Use when setting both values and previous state of both value is undefined\n        /// </summary>\n        /// <param name=\"reflectorConeMaxAngleCos\"></param>\n        /// <param name=\"range\"></param>\n        public void UpdateReflectorRangeAndAngle(float reflectorConeMaxAngleCos, float reflectorRange)\n        {\n            SpotlightNotTooLarge(reflectorConeMaxAngleCos, reflectorRange);\n            m_reflectorRange = reflectorRange;\n            m_reflectorConeMaxAngleCos = reflectorConeMaxAngleCos;\n        }\n\n        /// <summary>\n        /// Draws things associated with this light, for example glare.\n        /// </summary>\n        public void Draw()\n        {\n            if (GlareOn)\n            {\n                Glare.Draw();\n            }\n        }\n\n        #region Properties\n\n        public bool IsTypePoint\n        {\n            get\n            {\n                return (LightType & MyLight.LightTypeEnum.PointLight) != 0 && !IsTypeHemisphere;\n            }\n        }\n\n        public bool IsTypeHemisphere\n        {\n            get\n            {\n                return (LightType & MyLight.LightTypeEnum.Hemisphere) != 0;\n            }\n        }\n\n        public bool IsTypeSpot\n        {\n            get\n            {\n                return (LightType & MyLight.LightTypeEnum.Spotlight) != 0;\n            }\n        }\n\n        /*\n        public Vector3 Position\n        {\n            get\n            {\n                return Position;\n            }\n            \n            set\n            {\n                if (Position != value)\n                {\n                    MinerWars.AppCode.Game.Utils.MyUtils.AssertIsValid(value);\n                    Position = value;\n                    m_spotParamsDirty = true;\n                    m_pointBoundingSphere.Center = PositionWithOffset;\n                    SapSortValue = value.X - m_range;\n\n                    UpdateLight();\n                }\n            } \n        }\n              */\n        public void SetPosition(Vector3 position)\n        {\n            if (Vector3.DistanceSquared(Position, position) > 0.0001f)\n            {\n                MinerWars.AppCode.Game.Utils.MyUtils.AssertIsValid(position);\n                Position = position;\n                m_spotParamsDirty = true;\n                UpdatePositionWithOffset();\n                m_pointBoundingSphere.Center = PositionWithOffset;\n                SapSortValue = position.X - m_range;\n\n                UpdateLight();\n            }\n        }\n\n        public Vector4 Color\n        {\n            get { return m_color; }\n            set { m_color = value; }\n        }\n\n        public Vector3 SpecularColor\n        {\n            get { return m_specularColor; }\n            set { m_specularColor = value; }\n        }\n\n        /// <summary>\n        /// Exponential falloff (1 = linear, 2 = quadratic, etc)\n        /// </summary>\n        public float Falloff\n        {\n            get { return m_falloff; }\n            set { m_falloff = value; }\n        }\n\n        public float Range\n        {\n            get\n            {\n                System.Diagnostics.Debug.Assert(m_range > 0, \"Point light range not set\");\n                return m_range;\n            }\n            set\n            {\n                if (m_range != value)\n                {\n                    System.Diagnostics.Debug.Assert(value > 0, \"Cannot set zero point light range\");\n                    System.Diagnostics.Debug.Assert(value <= MyLightsConstants.MAX_POINTLIGHT_RADIUS, \"Cannot set point light range bigger than MyLightsConstants.MAX_POINTLIGHT_RADIUS\");\n                    m_range = value;\n                    m_pointBoundingSphere.Radius = value;\n                    SapSortValue = Position.X - value;\n\n                    UpdateLight();\n                }\n            }\n        }\n\n        public float Intensity\n        {\n            get { return m_intensity; }\n            set { m_intensity = value; }\n        }\n\n        public bool LightOn        //  If true, we use the light in lighting calculation. Otherwise it's like turned off, but still in the buffer.\n        {\n            get { return m_lightOn; }\n            set { if (m_lightOn != value) { m_lightOn = value; UpdateLight(); } }\n        }\n\n        public bool PointOn { get; set; }\n\n        public LightTypeEnum LightType\n        {\n            get { return m_lightType; }\n            set { m_lightType = value; }\n        }\n\n        public LightOwnerEnum LightOwner\n        {\n            get { return m_lightOwner; }\n            set { m_lightOwner = value; }\n        }\n\n        // Reflector parameters are also parameters for spot light\n        public float ReflectorIntensity\n        {\n            get { return m_reflectorIntensity; }\n            set { m_reflectorIntensity = value; }\n        }\n\n        public bool ReflectorOn\n        {\n            get { return m_reflectorOn; }\n            set { m_reflectorOn = value; }\n        }\n\n        public Vector3 ReflectorDirection\n        {\n            get { return m_reflectorDirection; }\n            set {\n                if (Vector3.DistanceSquared(m_reflectorDirection, value) > 0.00001f)\n                {\n                    m_reflectorDirection = value;\n                    m_spotParamsDirty = true;\n                }\n            }\n        }\n\n        public Vector3 ReflectorUp\n        {\n            get { return m_reflectorUp; }\n            set\n            {\n                if (Vector3.DistanceSquared(m_reflectorUp, value) > 0.00001f)\n                {\n                    m_reflectorUp = value; \n                    m_spotParamsDirty = true;\n                }\n            }\n        }\n\n        public float ReflectorConeMaxAngleCos\n        {\n            get { return m_reflectorConeMaxAngleCos; }\n            set\n            {\n                System.Diagnostics.Debug.Assert(SpotlightNotTooLarge(value, m_reflectorRange), \"Spot light is too large, reduce range or cone angle, AABB diagonal size must be smaller than 2500m\");\n                m_reflectorConeMaxAngleCos = value;\n                m_spotParamsDirty = true;\n            }\n        }\n\n        public Vector4 ReflectorColor\n        {\n            get { return m_reflectorColor; }\n            set { m_reflectorColor = value; }\n        }\n\n        public float ReflectorRange\n        {\n            get\n            {\n                System.Diagnostics.Debug.Assert(m_reflectorRange > 0, \"Spot light range not set\");\n                return m_reflectorRange;\n            }\n            set\n            {\n                System.Diagnostics.Debug.Assert(value > 0, \"Cannot set spot light range to zero\");\n                System.Diagnostics.Debug.Assert(SpotlightNotTooLarge(m_reflectorConeMaxAngleCos, value), \"Spot light is too large, reduce range or cone angle, AABB diagonal size must be smaller than 2500m\");\n                m_reflectorRange = value;\n                m_spotParamsDirty = true;\n\n                UpdateLight();\n            }\n        }\n\n        public float ReflectorFalloff\n        {\n            get\n            {\n                return m_reflectorFalloff;\n            }\n            set\n            {\n                m_reflectorFalloff = value;\n            }\n        }\n\n        public MyTexture2D ReflectorTexture\n        {\n            get { return m_reflectorTexture; }\n            set { m_reflectorTexture = value; }\n        }\n\n        public MyLightGlare Glare { get { return m_glare; } }\n\n\n        public float ShadowDistance\n        {\n            get { return m_shadowDistance; }\n            set{ m_shadowDistance = value; }\n        }\n\n        #endregion\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Lights/MyLights.cs",
    "content": "﻿using System.Collections.Generic;\nusing MinerWars.AppCode.Game.Effects;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Render;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.World;\nusing MinerWars.AppCode.Physics;\nusing MinerWars.CommonLIB.AppCode.Generics;\nusing SysUtils.Utils;\n\nusing MinerWarsMath;\n\n\n//  This class is responsible for holding list of dynamic lights, adding, removing and finally drawing on voxels or other models.\n\nnamespace MinerWars.AppCode.Game.Lights\n{\n    static class MyLights\n    {\n        public static MyDynamicAABBTree m_tree = new MyDynamicAABBTree(MyRender.PrunningExtension);\n\n        static MyObjectsPool<MyLight> m_preallocatedLights = null;\n        static List<MyLight> m_sortedLights;\n        static MySortLightsByDistanceComparer m_sortLightsComparer = new MySortLightsByDistanceComparer();\n\n        static int m_lightsCount;\n        static BoundingSphere m_lastBoundingSphere;\n\n        //  Used to sort lights by their distance to influence bounding sphere\n        class MySortLightsByDistanceComparer : IComparer<MyLight>\n        {\n            public BoundingSphere BoundingSphere;\n\n            public int Compare(MyLight x, MyLight y)\n            {\n                float xDist, yDist;\n                Vector3 xPos = x.Position;\n                Vector3 yPos = y.Position;\n                Vector3.Distance(ref BoundingSphere.Center, ref xPos, out xDist);\n                Vector3.Distance(ref BoundingSphere.Center, ref yPos, out yDist);\n                return xDist.CompareTo(yDist);\n            }\n        }\n\n        //  For SAP comparisions\n        class MySortLightsSapComparer : IComparer<MyLight>\n        {\n            public int Compare(MyLight x, MyLight y)\n            {\n                return ((int)(x.SapSortValue - y.SapSortValue));\n            }\n        }\n\n        static MyLights()\n        {\n            MyRender.RegisterRenderModule(MyRenderModuleEnum.Lights, \"Lights\", DebugDraw, MyRenderStage.DebugDraw, false);\n        }\n\n        public static void LoadData()\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyLights.LoadData\");\n            MyMwcLog.WriteLine(\"MyLights.LoadData() - START\");\n            MyMwcLog.IncreaseIndent();\n\n            if (m_preallocatedLights == null)\n            {\n                m_preallocatedLights = new MyObjectsPool<MyLight>(MyLightsConstants.MAX_LIGHTS_COUNT);\n            }\n            m_sortedLights = new List<MyLight>(MyLightsConstants.MAX_LIGHTS_COUNT_WHEN_DRAWING);\n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyLights.LoadData() - END\");\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        public static void UnloadData()\n        {\n            // all lights should be deallocated at this point\n            MyCommonDebugUtils.AssertDebug(m_preallocatedLights.GetActiveCount() == 0, \"MyLights.UnloadData: preallocated lights not emptied!\");\n            m_preallocatedLights.DeallocateAll();\n            if (m_sortedLights != null)\n            {\n                m_sortedLights.Clear();\n                m_sortedLights = null;\n            }\n\n            m_tree.Clear();\n        }\n\n        //  Add new light to the list, but caller needs to start it using Start() method\n        public static MyLight AddLight()\n        {\n            var result = m_preallocatedLights.Allocate();\n            result.ProxyId = MyDynamicAABBTree.NullNode;\n            return result;\n        }\n\n        public static void RemoveLight(MyLight light)\n        {\n            if (light.ProxyId != MyDynamicAABBTree.NullNode) // Has been added\n            {\n                m_tree.RemoveProxy(light.ProxyId);\n            }\n            light.Clear();\n            m_preallocatedLights.Deallocate(light);\n        }\n\n        public static void UpdateLightProxy(MyLight light)\n        {\n            if ((!light.LightOn || light.LightType == MyLight.LightTypeEnum.None) && light.ProxyId != MyDynamicAABBTree.NullNode)\n            {\n                m_tree.RemoveProxy(light.ProxyId);\n                light.ProxyId = MyDynamicAABBTree.NullNode;\n            }\n\n            BoundingBox bbox = BoundingBoxHelper.InitialBox;\n\n            if (light.IsTypePoint || light.IsTypeHemisphere)\n            {\n                bbox = BoundingBox.CreateFromSphere(light.PointBoundingSphere);\n            }\n            if (light.IsTypeSpot)\n            {\n                var box = light.SpotBoundingBox;\n                BoundingBoxHelper.AddBBox(box, ref bbox);\n            }\n\n            if (light.ProxyId == MyDynamicAABBTree.NullNode)\n            {\n                light.ProxyId = m_tree.AddProxy(ref bbox, light, 0);\n            }\n            else\n            {\n                m_tree.MoveProxy(light.ProxyId, ref bbox, Vector3.Zero);\n            }\n        }\n\n        public static void FrustumQuery(ref BoundingFrustum frustum, List<MyLight> lights)\n        {\n            m_tree.OverlapAllFrustumAny<MyLight>(ref frustum, lights, false);\n        }\n\n        public static void GetLights(IList<MyLight> list)\n        {\n            foreach (LinkedListNode<MyLight> light in m_preallocatedLights)\n            {\n                list.Add(light.Value);\n            }\n        }\n\n        public static List<MyLight> GetSortedLights()\n        {\n            return m_sortedLights;\n        }\n\n        public static int GetActiveLights()\n        {\n            return m_preallocatedLights.GetActiveCount();\n        }\n\n        //  This method must be called on every update. It will sort lights using SAP, so drawing will be faster.\n        public static void Update()\n        {\n            // Tree is updated on change\n        }\n\n        public static void UpdateSortedLights(ref BoundingFrustum boundingFrustum)\n        {\n            m_sortedLights.Clear();\n            FrustumQuery(ref boundingFrustum, m_sortedLights);\n        }\n\n        public static void UpdateSortedLights(ref BoundingSphere boundingSphere, bool useMaxCount)\n        {\n            m_tree.OverlapAllBoundingSphere(ref boundingSphere, m_sortedLights, true);\n        }\n\n        //  This method adds lights information into specified effect.\n        //  Method gets lights that could have influence on bounding sphere (it is assumed this will be bounding sphere of a phys object or voxel render cell).\n        //  Lights that are far from bounding sphere are ignored. But near lights are taken to second step, where we sort them by distance and priority\n        //  and set them to the effect.\n        //  We assume RemoveKilled() was called before this method, so here we don't check if light isn't killed.\n        public static void UpdateEffect(MyEffectDynamicLightingBase effect, ref BoundingSphere boundingSphere, bool subtractCameraPosition)\n        {\n            MyUtils.AssertIsValid(boundingSphere.Center);\n            MyUtils.AssertIsValid(boundingSphere.Radius);\n\n            // Reason to remove this condition: when updating effect with same bounding sphere, it could return different result when some light died (effect ended) before second request\n            //if (m_lastBoundingSphere != boundingSphere)\n            {\n                UpdateSortedLights(ref boundingSphere, true);\n                m_lastBoundingSphere = boundingSphere;\n\n                ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n                //  Now in 'm_sortedLights' we have only lights that intersects bounding sphere in SAP list\n                ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\n                m_lightsCount = m_sortedLights.Count;\n                int maxLightsForEffect = MyLightsConstants.MAX_LIGHTS_FOR_EFFECT;\n\n                //  If number of lights with influence is more than max number of lights allowed in the effect, we sort them by distance (or we can do it by some priority)\n                if (m_sortedLights.Count > maxLightsForEffect)\n                {\n                    m_sortLightsComparer.BoundingSphere = boundingSphere;\n                    m_sortedLights.Sort(m_sortLightsComparer);\n                    m_lightsCount = maxLightsForEffect;\n                }\n            }\n\n            //  Set lights to effect, but not more than effect can handle\n            for (int i = 0; i < m_lightsCount; i++)\n            {\n                SetLightToEffect(effect, i, m_sortedLights[i], subtractCameraPosition);\n            }\n\n            effect.SetDynamicLightsCount(m_lightsCount);\n\n\n            Vector4 sunColor = MySunWind.GetSunColor();\n            effect.SetSunColor(new Vector3(sunColor.X, sunColor.Y, sunColor.Z));\n            effect.SetDirectionToSun(MyGuiScreenGamePlay.Static.GetDirectionToSunNormalized());\n            effect.SetSunIntensity(MySector.SunProperties.SunIntensity);\n\n            Vector3 ambientColor = MyRender.AmbientColor * MyRender.AmbientMultiplier;\n            effect.SetAmbientColor(ambientColor * (MyRenderConstants.RenderQualityProfile.ForwardRender ? 6.5f : 1.0f));\n\n        }\n\n        static void SetLightToEffect(MyEffectDynamicLightingBase effect, int index, MyLight light, bool subtractCameraPosition)\n        {\n            if (subtractCameraPosition == true)\n            {\n                effect.SetDynamicLightsPosition(index, light.Position - MyCamera.Position);\n            }\n            else\n            {\n                effect.SetDynamicLightsPosition(index, light.Position);\n            }\n\n            effect.SetDynamicLightsColor(index, light.Color * light.Intensity);\n            effect.SetDynamicLightsFalloff(index, light.Falloff);\n            effect.SetDynamicLightsRange(index, light.Range);\n        }\n\n        public static void UpdateEffectReflector(MyEffectReflectorBase effect, bool subtractCameraPosition)\n        {\n            Lights.MyLight light = null;\n            if (MySession.PlayerShip != null)\n                light = MySession.PlayerShip.Light;\n\n            if (light != null && light.ReflectorOn)\n            {\n                effect.SetReflectorDirection(light.ReflectorDirection);\n                effect.SetReflectorConeMaxAngleCos(light.ReflectorConeMaxAngleCos);\n                effect.SetReflectorColor(light.ReflectorColor);\n                effect.SetReflectorRange(light.ReflectorRange);\n            }\n            else\n            {\n                effect.SetReflectorRange(0);\n            }\n\n            if (subtractCameraPosition)\n                effect.SetCameraPosition(Vector3.Zero);\n            else\n                effect.SetCameraPosition(MyCamera.Position);\n        }\n\n        public static void DebugDraw()\n        {\n            MyLights.UpdateSortedLights(ref MyCamera.BoundingSphere, false);\n\n            foreach (MyLight light in m_sortedLights)\n            {\n                //if (light.LightOn && light.Glare.Type == TransparentGeometry.MyLightGlare.GlareTypeEnum.Distant)\n                {\n                    if ((light.LightType & MyLight.LightTypeEnum.PointLight) != 0)\n                    {\n                        MyDebugDraw.DrawSphereWireframe(Matrix.CreateScale(light.Range) * Matrix.CreateTranslation(light.PositionWithOffset), new Vector3(1, 0, 0), 1);\n                    }\n                    if ((light.LightType & MyLight.LightTypeEnum.Hemisphere) != 0)\n                    {\n                        Matrix rotationHotfix = Matrix.CreateFromAxisAngle(Vector3.UnitX, MathHelper.PiOver2);\n                        Matrix world = Matrix.CreateScale(light.Range) * rotationHotfix * Matrix.CreateWorld(light.Position, light.ReflectorDirection, light.ReflectorUp);\n                        MyDebugDraw.DrawHemisphereWireframe(world, new Vector3(1, 0, 0), 1);\n                    }\n                    if ((light.LightType & MyLight.LightTypeEnum.Spotlight) != 0/* && light.ReflectorOn*/)\n                    {\n                        Vector4 color = Color.Aqua.ToVector4();\n                        // MyDebugDraw.DrawAABB(ref bb, ref color, 1.0f);\n\n                        MyDebugDraw.DrawAxis(Matrix.CreateWorld(light.Position, Vector3.Up, Vector3.Forward), 2, 1);\n                        MyDebugDraw.DrawSphereWireframe(Matrix.CreateScale(light.Range) * Matrix.CreateTranslation(light.PositionWithOffset), new Vector3(1, 0, 0), 1);\n\n                        // Uncomment to show sphere for spot light\n                        //MyDebugDraw.DrawSphereWireframe(Matrix.CreateScale(light.ReflectorRange) * Matrix.CreateTranslation(light.Position), new Vector3(color.X, color.Y, color.Z), 0.25f);\n                        //MySimpleObjectDraw.DrawConeForLight();\n                        MyStateObjects.WireframeRasterizerState.Apply();\n                        SharpDX.Toolkit.Graphics.DepthStencilState.None.Apply();\n                        \n                        MyDebugDraw.DrawModel(MySimpleObjectDraw.ModelCone, light.SpotWorld, Vector3.One, 1);\n                    }\n                }\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Localization/MyDialoguesWrapper.cs",
    "content": "﻿using System;\nusing System.Globalization;\nusing System.Text;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.Resources;\nusing SysUtils.Utils;\n\n//  This is wrapper for MyTexts. Reasons I made him are these:\n//      - MyTexts returns string, but I need to work with string builders\n//      - I can't make own text resources, because I need that functionality that is in MyLocalizationPipelnie (importing only characters that are found in RES files)\n\n//  IMPORTANT: Add all new texts here. Never use directly MyTexts in the code. Always use this wrapper!!!\n\n\nnamespace MinerWars.AppCode.Game.Localization\n{\n    static partial class MyDialoguesWrapper\n    {\n        static StringBuilder[] m_sb;\n        static MyLanguagesEnum m_actualLanguage;\n        static StringBuilder m_helperSb;\n\n        public static void Init()\n        {\n            m_sb = new StringBuilder[Enum.GetValues(typeof(MyDialoguesWrapperEnum)).Length];\n            m_helperSb = new StringBuilder();\n            Reload();\n        }\n\n        static string ConvertAsciiToUnicode(string theAsciiString)\n        {\n            // Create two different encodings. \n            Encoding aAsciiEncoding = Encoding.ASCII;\n            Encoding aUnicodeEncoding = Encoding.UTF8;\n            // Convert the string into a byte[]. \n            byte[] aAsciiBytes = aAsciiEncoding.GetBytes(theAsciiString);\n            // Perform the conversion from one encoding to the other. \n            byte[] aUnicodeBytes = Encoding.Convert(aAsciiEncoding, aUnicodeEncoding,\n            aAsciiBytes);\n            // Convert the new byte[] into a char[] and then into a string. \n            char[] aUnicodeChars = new char[aUnicodeEncoding.GetCharCount(aUnicodeBytes, 0, aUnicodeBytes.Length)];\n            aUnicodeEncoding.GetChars(aUnicodeBytes, 0, aUnicodeBytes.Length, aUnicodeChars, 0);\n            string aUnicodeString = new string(aUnicodeChars);\n            return aUnicodeString;\n        }\n\n        static string ConvertUnicodeToAscii(string theUnicodeString)\n        {\n            // Create two different encodings. \n            Encoding aAsciiEncoding = Encoding.ASCII;\n            Encoding aUnicodeEncoding = Encoding.UTF7;\n            // convert the string into byte[]\n            byte[] aUnicodeBytes = aUnicodeEncoding.GetBytes(theUnicodeString);\n            byte[] aAsciiBytes = Encoding.Convert(aUnicodeEncoding, aAsciiEncoding, aUnicodeBytes);\n            char[] aAsciiChars = new char[aAsciiEncoding.GetCharCount(aAsciiBytes, 0, aAsciiBytes.Length) * 2];\n            aAsciiEncoding.GetChars(aAsciiBytes, 0, aAsciiBytes.Length, aAsciiChars, 0);\n            string aAsciiString = new string(aAsciiChars);\n            return aAsciiString;\n        }\n\n        public static StringBuilder Get(MyDialoguesWrapperEnum dlgEnum)\n        {\n            return m_sb[(int)dlgEnum];\n        }\n\n\n        public static String GetFormatString(MyDialoguesWrapperEnum dlgEnum)\n        {\n            return m_sb[(int)dlgEnum].ToString();\n        }\n\n        public static String GetFormatString(MyDialoguesWrapperEnum dlgEnum, object[] formatArgs)\n        {\n            m_helperSb.Clear();\n            m_helperSb.AppendFormat(GetFormatString(dlgEnum), formatArgs);\n            return m_helperSb.ToString();\n        }\n       \n        public static string LanguageToString(MyLanguagesEnum lang)\n        {\n            return MyEnumsToStrings.LanguageEnums[(int)lang];\n        }\n\n\n        public static string GetActualLanguageString()\n        {\n            return LanguageToString(ActualLanguage);\n        }\n\n        public static MyLanguagesEnum ActualLanguage\n        {\n            set\n            {\n                //  Change current culture so this will switch text resources to new language\n                MyDialogues.Culture = new CultureInfo(LanguageToString(value), true);\n\n                Reload();\n\n                //  Save into config\n                m_actualLanguage = value;\n                MyConfig.Language = m_actualLanguage;\n                MyConfig.Save();\n            }\n\n            get\n            {\n                return m_actualLanguage;\n            }\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Localization/MyDialoguesWrapperGenerated.cs",
    "content": "﻿\n\nnamespace MinerWars.AppCode.Game.Localization\n{\n\tusing System.Text;\n\tusing MinerWars.Resources;\n\n\t[System.CodeDom.Compiler.GeneratedCode(\"MinerWars Localization Generator Template\", \"1.0.0.0\")]\n    enum MyDialoguesWrapperEnum\n\t{\n\t\t///<summary>\n\t\t///This is a test. Chunky bacon!\n\t\t///</summary>\n\t\tDlg_Test01,\n\t\t///<summary>\n\t\t///Yes! Chunky bacon for everyone!\n\t\t///</summary>\n\t\tDlg_Test02,\n\t\t///<summary>\n\t\t///This is a very long text. You know, just to test loading times of long sounds. It goes on and on, it just won’t stop! I can’t take it anymore!\n\t\t///</summary>\n\t\tDlg_Test03,\n\t\t///<summary>\n\t\t///Military alert. Unreported Russian mother ships approaching.\n\t\t///</summary>\n\t\tDlg_EACSurveySite_0200,\n\t\t///<summary>\n\t\t///What the hell?\n\t\t///</summary>\n\t\tDlg_EACSurveySite_0201,\n\t\t///<summary>\n\t\t///Emergency. Evacuate the mines.\n\t\t///</summary>\n\t\tDlg_EACSurveySite_0202,\n\t\t///<summary>\n\t\t///We are under heavy attack. Enemies in superior numbers.\n\t\t///</summary>\n\t\tDlg_EACSurveySite_0203,\n\t\t///<summary>\n\t\t///Two mother ships with cruiser missiles stationed on periphery.\n\t\t///</summary>\n\t\tDlg_EACSurveySite_0204,\n\t\t///<summary>\n\t\t///Forty-six fighters inside the station.\n\t\t///</summary>\n\t\tDlg_EACSurveySite_0205,\n\t\t///<summary>\n\t\t///Still feeling bored, little brother?\n\t\t///</summary>\n\t\tDlg_EACSurveySite_0206,\n\t\t///<summary>\n\t\t///Time to give that military education of mine a workout! Let’s kick some zhopa!\n\t\t///</summary>\n\t\tDlg_EACSurveySite_0207,\n\t\t///<summary>\n\t\t///Calm down. First we need to get outside and get the situation report.\n\t\t///</summary>\n\t\tDlg_EACSurveySite_0208,\n\t\t///<summary>\n\t\t///Heavy civilian casualties. Evacuate station. Use the nearest exit or escape pod.\n\t\t///</summary>\n\t\tDlg_EACSurveySite_0209,\n\t\t///<summary>\n\t\t///Military, follow Protocol 1-1-9. Take whatever actions necessary to protect civilians.\n\t\t///</summary>\n\t\tDlg_EACSurveySite_0210,\n\t\t///<summary>\n\t\t///Captain, we are ready to help secure the situation.\n\t\t///</summary>\n\t\tDlg_EACSurveySite_0211,\n\t\t///<summary>\n\t\t///Two Arion MK7 Fighters, both pilots with advanced Greenbelt training.\n\t\t///</summary>\n\t\tDlg_EACSurveySite_0212,\n\t\t///<summary>\n\t\t///Marcus Rainier, do not engage enemy directly.\n\t\t///</summary>\n\t\tDlg_EACSurveySite_0213,\n\t\t///<summary>\n\t\t///Make your way out alive. We will oppose the Russian forces only if…\n\t\t///</summary>\n\t\tDlg_EACSurveySite_0214,\n\t\t///<summary>\n\t\t///God, what’s going on?!\n\t\t///</summary>\n\t\tDlg_EACSurveySite_0215,\n\t\t///<summary>\n\t\t///We need to get to the command center.\n\t\t///</summary>\n\t\tDlg_EACSurveySite_0216,\n\t\t///<summary>\n\t\t///Check out the situation and send a distress signal.\n\t\t///</summary>\n\t\tDlg_EACSurveySite_0217,\n\t\t///<summary>\n\t\t///They just destroyed two civilian ships!\n\t\t///</summary>\n\t\tDlg_EACSurveySite_0301,\n\t\t///<summary>\n\t\t///Just keep moving.\n\t\t///</summary>\n\t\tDlg_EACSurveySite_0302,\n\t\t///<summary>\n\t\t///Cave-in. Help me blast it apart with missiles!\n\t\t///</summary>\n\t\tDlg_EACSurveySite_0401,\n\t\t///<summary>\n\t\t///We need to follow this airway…\n\t\t///</summary>\n\t\tDlg_EACSurveySite_0501,\n\t\t///<summary>\n\t\t///My God! Those ships are gargantuan!\n\t\t///</summary>\n\t\tDlg_EACSurveySite_0602,\n\t\t///<summary>\n\t\t///Looks like they’re about to turn this station into gravel.\n\t\t///</summary>\n\t\tDlg_EACSurveySite_0603,\n\t\t///<summary>\n\t\t///Why…? This is a civilian operation! What are they thinking?!\n\t\t///</summary>\n\t\tDlg_EACSurveySite_0604,\n\t\t///<summary>\n\t\t///Madelyn, do you copy?\n\t\t///</summary>\n\t\tDlg_EACSurveySite_0701,\n\t\t///<summary>\n\t\t///Marcus! What’s going on over there?\n\t\t///</summary>\n\t\tDlg_EACSurveySite_0702,\n\t\t///<summary>\n\t\t///This is serious. Our survey site is under attack. Heavy casualties. Enemy unknown.\n\t\t///</summary>\n\t\tDlg_EACSurveySite_0703,\n\t\t///<summary>\n\t\t///Madelyn, we need you to get us out of here.\n\t\t///</summary>\n\t\tDlg_EACSurveySite_0704,\n\t\t///<summary>\n\t\t///Go to the hangar 1 and wait there.\n\t\t///</summary>\n\t\tDlg_EACSurveySite_0705,\n\t\t///<summary>\n\t\t///Madelyn, we’ll be at the meeting point on time. Just… try to hurry.\n\t\t///</summary>\n\t\tDlg_EACSurveySite_0709,\n\t\t///<summary>\n\t\t///I just received a distress call.\n\t\t///</summary>\n\t\tDlg_EACSurveySite_0710,\n\t\t///<summary>\n\t\t///Get ready for pickup!\n\t\t///</summary>\n\t\tDlg_EACSurveySite_0801,\n\t\t///<summary>\n\t\t///Ready for a ride, Apollo?\n\t\t///</summary>\n\t\tDlg_EACSurveySite_0802,\n\t\t///<summary>\n\t\t///Yes, let’s get out of here!\n\t\t///</summary>\n\t\tDlg_EACSurveySite_0803,\n\t\t///<summary>\n\t\t///Damn, the whole command center is offline.\n\t\t///</summary>\n\t\tDlg_EACSurveySite_0901,\n\t\t///<summary>\n\t\t///The generators are fried. I can’t believe this is happening!\n\t\t///</summary>\n\t\tDlg_EACSurveySite_0902,\n\t\t///<summary>\n\t\t///Let’s head to the basement and try to fire up the emergency power unit.\n\t\t///</summary>\n\t\tDlg_EACSurveySite_0903,\n\t\t///<summary>\n\t\t///Affirmative.\n\t\t///</summary>\n\t\tDlg_EACSurveySite_0904,\n\t\t///<summary>\n\t\t///It should work now. Fingers crossed.\n\t\t///</summary>\n\t\tDlg_EACSurveySite_1001,\n\t\t///<summary>\n\t\t///Looks like it worked – the automated vendor next door is online again.\n\t\t///</summary>\n\t\tDlg_EACSurveySite_1002,\n\t\t///<summary>\n\t\t///Well, we could use some more supplies.\n\t\t///</summary>\n\t\tDlg_EACSurveySite_1003,\n\t\t///<summary>\n\t\t///Roger. Confirmed.\n\t\t///</summary>\n\t\tDlg_EACSurveySite_0218,\n\t\t///<summary>\n\t\t///…to the other side of the base to get to the command center.\n\t\t///</summary>\n\t\tDlg_EACSurveySite_0502,\n\t\t///<summary>\n\t\t///I hope this is the right decision!\n\t\t///</summary>\n\t\tDlg_EACSurveySite_0503,\n\t\t///<summary>\n\t\t///Outside! Look!\n\t\t///</summary>\n\t\tDlg_EACSurveySite_0601,\n\t\t///<summary>\n\t\t///What now? We can’t hide here forever.\n\t\t///</summary>\n\t\tDlg_EACSurveySite_1201,\n\t\t///<summary>\n\t\t///Trust me. There are soldiers protecting us.\n\t\t///</summary>\n\t\tDlg_EACSurveySite_1202,\n\t\t///<summary>\n\t\t///They should be here soon.\n\t\t///</summary>\n\t\tDlg_EACSurveySite_1203,\n\t\t///<summary>\n\t\t///There seem to be some friends alive.\n\t\t///</summary>\n\t\tDlg_EACSurveySite_1204,\n\t\t///<summary>\n\t\t///The place is ready to blow.\n\t\t///</summary>\n\t\tDlg_EACSurveySite_1305,\n\t\t///<summary>\n\t\t///–fluid than that.\n\t\t///</summary>\n\t\tDlg_EACSurveySite_1306,\n\t\t///<summary>\n\t\t///Wha-what? We are dead!\n\t\t///</summary>\n\t\tDlg_EACSurveySite_1307,\n\t\t///<summary>\n\t\t///I knew you hadn’t abandoned us!\n\t\t///</summary>\n\t\tDlg_EACSurveySite_1301,\n\t\t///<summary>\n\t\t///Are the enemies eliminated? Is the area secure now?\n\t\t///</summary>\n\t\tDlg_EACSurveySite_1302,\n\t\t///<summary>\n\t\t///Secure? Negative. The situation is a bit more–\n\t\t///</summary>\n\t\tDlg_EACSurveySite_1303,\n\t\t///<summary>\n\t\t///We’ve had massive casualties. The enemy crushed our defenses.\n\t\t///</summary>\n\t\tDlg_EACSurveySite_1304,\n\t\t///<summary>\n\t\t///…secure the data from all research facilities…\n\t\t///</summary>\n\t\tDlg_EACSurveySite_1401,\n\t\t///<summary>\n\t\t///…prepare missile barrage…\n\t\t///</summary>\n\t\tDlg_EACSurveySite_1501,\n\t\t///<summary>\n\t\t///…Remember to keep no one alive. This mission is classified…\n\t\t///</summary>\n\t\tDlg_EACSurveySite_1601,\n\t\t///<summary>\n\t\t///General, we have secured 17 hostages in upper satellite wing. Orders?\n\t\t///</summary>\n\t\tDlg_EACSurveySite_1701,\n\t\t///<summary>\n\t\t///…Kill them. Leave no witnesses…\n\t\t///</summary>\n\t\tDlg_EACSurveySite_1702,\n\t\t///<summary>\n\t\t///…send encoded transmission to L-K. We found…\n\t\t///</summary>\n\t\tDlg_EACSurveySite_1801,\n\t\t///<summary>\n\t\t///Hurry up, we need to get to the other side! Pronto!\n\t\t///</summary>\n\t\tDlg_EACSurveySite_0605,\n\t\t///<summary>\n\t\t///Take it easy. Just follow us, we’ll make it through.\n\t\t///</summary>\n\t\tDlg_EACSurveySite_1308,\n\t\t///<summary>\n\t\t///At your back, sir. Lead the way!\n\t\t///</summary>\n\t\tDlg_EACSurveySite_1309,\n\t\t///<summary>\n\t\t///Madelyn better be here!\n\t\t///</summary>\n\t\tDlg_EACSurveySite_2101,\n\t\t///<summary>\n\t\t///You can never find a cab when you need one!\n\t\t///</summary>\n\t\tDlg_EACSurveySite_2102,\n\t\t///<summary>\n\t\t///General, we found no indications of the presence of the artifact…\n\t\t///</summary>\n\t\tDlg_EACSurveySite_2201,\n\t\t///<summary>\n\t\t///…the artifact is not… ?\n\t\t///</summary>\n\t\tDlg_EACSurveySite_2301,\n\t\t///<summary>\n\t\t///…two miners escaped?…\n\t\t///</summary>\n\t\tDlg_EACSurveySite_2401,\n\t\t///<summary>\n\t\t///You have received two new missions available from solar map.\n\t\t///</summary>\n\t\tDlg_FortValiant_SlaveMission_01_TemplarGuard,\n\t\t///<summary>\n\t\t///We have to find out exactly where the signal came from and gather all the data we can.\n\t\t///</summary>\n\t\tDlg_Laika_0100,\n\t\t///<summary>\n\t\t///I’ve sent you coordinates of the two satellites.\n\t\t///</summary>\n\t\tDlg_Laika_0504,\n\t\t///<summary>\n\t\t///I suggest checking the computers and communication arrays.\n\t\t///</summary>\n\t\tDlg_Laika_0102,\n\t\t///<summary>\n\t\t///Apollo, I installed a hacking tool on your ship.\n\t\t///</summary>\n\t\tDlg_Laika_0103,\n\t\t///<summary>\n\t\t///Use it to extract the data from the digital devices.\n\t\t///</summary>\n\t\tDlg_Laika_0104,\n\t\t///<summary>\n\t\t///Hmm, why so many military ships just for a customs check?\n\t\t///</summary>\n\t\tDlg_Laika_0200,\n\t\t///<summary>\n\t\t///That does seems odd. Be ready for anything.\n\t\t///</summary>\n\t\tDlg_Laika_0201,\n\t\t///<summary>\n\t\t///Keep moving.\n\t\t///</summary>\n\t\tDlg_Laika_0202,\n\t\t///<summary>\n\t\t///I’ll be around in case you need a quick withdrawal.\n\t\t///</summary>\n\t\tDlg_Laika_0303,\n\t\t///<summary>\n\t\t///This wasn’t so hard.\n\t\t///</summary>\n\t\tDlg_Laika_0300,\n\t\t///<summary>\n\t\t///Nothing.\n\t\t///</summary>\n\t\tDlg_Laika_0500,\n\t\t///<summary>\n\t\t///No record of communication with the assault squad on Landswick.\n\t\t///</summary>\n\t\tDlg_Laika_0501,\n\t\t///<summary>\n\t\t///What now?\n\t\t///</summary>\n\t\tDlg_Laika_0502,\n\t\t///<summary>\n\t\t///I scanned all the communication arrays and computers on Laika.\n\t\t///</summary>\n\t\tDlg_Laika_0503,\n\t\t///<summary>\n\t\t///Let’s start with the one toward the west.\n\t\t///</summary>\n\t\tDlg_Laika_0600,\n\t\t///<summary>\n\t\t///It should be easier to get to from here.\n\t\t///</summary>\n\t\tDlg_Laika_0601,\n\t\t///<summary>\n\t\t///Confirmed.\n\t\t///</summary>\n\t\tDlg_Laika_0602,\n\t\t///<summary>\n\t\t///Good news, bad news.\n\t\t///</summary>\n\t\tDlg_Laika_0700,\n\t\t///<summary>\n\t\t///Good news, I’ve retrieved something.\n\t\t///</summary>\n\t\tDlg_Laika_0701,\n\t\t///<summary>\n\t\t///Bad news, it seems that all outgoing messages are split between the two satellites.\n\t\t///</summary>\n\t\tDlg_Laika_0702,\n\t\t///<summary>\n\t\t///Success!\n\t\t///</summary>\n\t\tDlg_Laika_0800,\n\t\t///<summary>\n\t\t///I have the rest of the recordings and some other data on the operation at New Landswick.\n\t\t///</summary>\n\t\tDlg_Laika_0801,\n\t\t///<summary>\n\t\t///Great. Let’s get back to Madelyn\n\t\t///</summary>\n\t\tDlg_Laika_0802,\n\t\t///<summary>\n\t\t///Roger that.\n\t\t///</summary>\n\t\tDlg_Laika_0803,\n\t\t///<summary>\n\t\t///I have some bad news for you, guys.\n\t\t///</summary>\n\t\tDlg_Laika_0804,\n\t\t///<summary>\n\t\t///The cavalry has arrived.\n\t\t///</summary>\n\t\tDlg_Laika_0806,\n\t\t///<summary>\n\t\t///Looks like they have some pretty nasty nuclear warheads stored here.\n\t\t///</summary>\n\t\tDlg_Laika_0900,\n\t\t///<summary>\n\t\t///Rogger that.\n\t\t///</summary>\n\t\tDlg_Laika_0105,\n\t\t///<summary>\n\t\t///Try not to attract much attention. The longer they stay uninterested in us, the better.\n\t\t///</summary>\n\t\tDlg_Laika_0106,\n\t\t///<summary>\n\t\t///As long as there are no enemy mother ships…\n\t\t///</summary>\n\t\tDlg_Laika_0304,\n\t\t///<summary>\n\t\t///Okay, good. But first we need to get what we came for.\n\t\t///</summary>\n\t\tDlg_Laika_0305,\n\t\t///<summary>\n\t\t///Though it might bring us more trouble than we bargained for.\n\t\t///</summary>\n\t\tDlg_Laika_0307,\n\t\t///<summary>\n\t\t///The command center is marked on your GPS.\n\t\t///</summary>\n\t\tDlg_Laika_0308,\n\t\t///<summary>\n\t\t///Go there and check for any datalogs of outgoing and incoming transmissions.\n\t\t///</summary>\n\t\tDlg_Laika_0309,\n\t\t///<summary>\n\t\t///Did you notice that strange equipment those fighters were using?\n\t\t///</summary>\n\t\tDlg_Laika_0310,\n\t\t///<summary>\n\t\t///I don’t believe this is Russian military we’re facing.\n\t\t///</summary>\n\t\tDlg_Laika_0311,\n\t\t///<summary>\n\t\t///Neither do I.\n\t\t///</summary>\n\t\tDlg_Laika_0312,\n\t\t///<summary>\n\t\t///I made some preliminary scans of the ships.\n\t\t///</summary>\n\t\tDlg_Laika_0313,\n\t\t///<summary>\n\t\t///According to the database, some of their equipment and ship models…\n\t\t///</summary>\n\t\tDlg_Laika_0314,\n\t\t///<summary>\n\t\t///Check them out, up close, maybe they store the data directly there.\n\t\t///</summary>\n\t\tDlg_Laika_0505,\n\t\t///<summary>\n\t\t///Some kind of security hash.\n\t\t///</summary>\n\t\tDlg_Laika_0703,\n\t\t///<summary>\n\t\t///But you wouldn’t believe what I’ve got so far, guys.\n\t\t///</summary>\n\t\tDlg_Laika_0704,\n\t\t///<summary>\n\t\t///Off to the second satellite now.\n\t\t///</summary>\n\t\tDlg_Laika_0705,\n\t\t///<summary>\n\t\t///…So don’t keep me in suspense. What did you find out so far?\n\t\t///</summary>\n\t\tDlg_Laika_0706,\n\t\t///<summary>\n\t\t///I was planning to save story-time for later, but here, listen to this.\n\t\t///</summary>\n\t\tDlg_Laika_0707,\n\t\t///<summary>\n\t\t///…We found no information about the alien artifacts in Landswick.\n\t\t///</summary>\n\t\tDlg_Laika_0708,\n\t\t///<summary>\n\t\t///Mr. Vasilyev will not be pleased as to the other findings.\n\t\t///</summary>\n\t\tDlg_Laika_0709,\n\t\t///<summary>\n\t\t///Also, two miners escaped.\n\t\t///</summary>\n\t\tDlg_Laika_0710,\n\t\t///<summary>\n\t\t///However, they pose no real threat. And they do not know what is going on.\n\t\t///</summary>\n\t\tDlg_Laika_0711,\n\t\t///<summary>\n\t\t///We will make sure the politburo sends…\n\t\t///</summary>\n\t\tDlg_Laika_0712,\n\t\t///<summary>\n\t\t///Our contacts at EAC will see to it that those two miners are persecuted and distrusted.\n\t\t///</summary>\n\t\tDlg_Laika_0713,\n\t\t///<summary>\n\t\t///Finish your work and get back to L-K for de-briefing.\n\t\t///</summary>\n\t\tDlg_Laika_0714,\n\t\t///<summary>\n\t\t///That’s all.\n\t\t///</summary>\n\t\tDlg_Laika_0715,\n\t\t///<summary>\n\t\t///I have more data, but it’s impossible to decode without the second transmitter.\n\t\t///</summary>\n\t\tDlg_Laika_0716,\n\t\t///<summary>\n\t\t///Holy crap, guys. What’s going on?\n\t\t///</summary>\n\t\tDlg_Laika_0717,\n\t\t///<summary>\n\t\t///Alien artifacts? Either it’s code for something or…\n\t\t///</summary>\n\t\tDlg_Laika_0718,\n\t\t///<summary>\n\t\t///…or those Russians believe humankind is not alone in this universe.\n\t\t///</summary>\n\t\tDlg_Laika_0719,\n\t\t///<summary>\n\t\t///Whether they’re right or not…\n\t\t///</summary>\n\t\tDlg_Laika_0720,\n\t\t///<summary>\n\t\t///According to that transmission, we’re in big trouble.\n\t\t///</summary>\n\t\tDlg_Laika_0721,\n\t\t///<summary>\n\t\t///Save the chit-chat for later, girls.\n\t\t///</summary>\n\t\tDlg_Laika_0722,\n\t\t///<summary>\n\t\t///My scans show incoming Russian mother ships; same ones we met before.\n\t\t///</summary>\n\t\tDlg_Laika_0723,\n\t\t///<summary>\n\t\t///Hurry up, in just a few minutes we’ll be outmuscled, big-time.\n\t\t///</summary>\n\t\tDlg_Laika_0724,\n\t\t///<summary>\n\t\t///Right over the corner – two Russian mother ships from Landswick.\n\t\t///</summary>\n\t\tDlg_Laika_0807,\n\t\t///<summary>\n\t\t///I suggest we do-si-do.\n\t\t///</summary>\n\t\tDlg_Laika_0808,\n\t\t///<summary>\n\t\t///What about those nuclear warheads we saw? What if we…\n\t\t///</summary>\n\t\tDlg_Laika_0809,\n\t\t///<summary>\n\t\t///Two Arion MK7 Fighters to Laika. Request permission for landing.\n\t\t///</summary>\n\t\tDlg_Laika_1501,\n\t\t///<summary>\n\t\t///Please proceed to landing bay 1 for customs and cargo scan.\n\t\t///</summary>\n\t\tDlg_Laika_1502,\n\t\t///<summary>\n\t\t///Copy. Proceeding to your coordinates.\n\t\t///</summary>\n\t\tDlg_Laika_1503,\n\t\t///<summary>\n\t\t///Just… be careful. You never know.\n\t\t///</summary>\n\t\tDlg_Laika_1504,\n\t\t///<summary>\n\t\t///We are always careful. Right, Apollo?\n\t\t///</summary>\n\t\tDlg_Laika_1505,\n\t\t///<summary>\n\t\t///Um, sure.\n\t\t///</summary>\n\t\tDlg_Laika_1506,\n\t\t///<summary>\n\t\t///Red guards – you have your orders. Fire!\n\t\t///</summary>\n\t\tDlg_Laika_1601,\n\t\t///<summary>\n\t\t///Damn it!\n\t\t///</summary>\n\t\tDlg_Laika_1602,\n\t\t///<summary>\n\t\t///Let’s give our comrades a little taste of EAC bullets!\n\t\t///</summary>\n\t\tDlg_Laika_1603,\n\t\t///<summary>\n\t\t///Use that hacking tool from Madelyn on those computers over there.\n\t\t///</summary>\n\t\tDlg_Laika_1701,\n\t\t///<summary>\n\t\t///Hmm, what the hell’s going on?\n\t\t///</summary>\n\t\tDlg_Laika_0316,\n\t\t///<summary>\n\t\t///This is just a placeholder which will be replaced later\n\t\t///</summary>\n\t\tDlg_DialoguePlaceholder,\n\t\t///<summary>\n\t\t///Ok, guys, go to your positions. Spread out and try to look… inconspicuous.\n\t\t///</summary>\n\t\tDlg_Rime_0501,\n\t\t///<summary>\n\t\t///Damn, those whores should have been paying us. There are much better places on Rime.\n\t\t///</summary>\n\t\tDlg_Rime_0601,\n\t\t///<summary>\n\t\t///Get out, and don’t come back! This club is for gentlemen.\n\t\t///</summary>\n\t\tDlg_Rime_0701,\n\t\t///<summary>\n\t\t///…Matt missed the delivery yesterday. Got drunk and had to sleep it off in a holding cell.\n\t\t///</summary>\n\t\tDlg_Rime_0801,\n\t\t///<summary>\n\t\t///Don’t get too close. Hang back at 300 to 650 meters, that should do the job.\n\t\t///</summary>\n\t\tDlg_Rime_0901,\n\t\t///<summary>\n\t\t///Mitchell, you happen to notice that you were followed?\n\t\t///</summary>\n\t\tDlg_Rime_1001,\n\t\t///<summary>\n\t\t///Ok, that’s all the guards. Grab the undeclared cargo boxes.\n\t\t///</summary>\n\t\tDlg_Rime_1101,\n\t\t///<summary>\n\t\t///That should do. I think we’ve got enough.\n\t\t///</summary>\n\t\tDlg_Rime_1201,\n\t\t///<summary>\n\t\t///So this is the Rift-Sion lab complex.\n\t\t///</summary>\n\t\tDlg_Rift_0102,\n\t\t///<summary>\n\t\t///Right. You might want to go there first.\n\t\t///</summary>\n\t\tDlg_Rift_0103,\n\t\t///<summary>\n\t\t///The researchers in here might have some useful tips how to survive in the Rift.\n\t\t///</summary>\n\t\tDlg_Rift_0105,\n\t\t///<summary>\n\t\t///I am staying in here with Tarja. Our ships can’t handle the radiation and sun storms.\n\t\t///</summary>\n\t\tDlg_Rift_0106,\n\t\t///<summary>\n\t\t///Apollo Rainier to Rift-Sion laboratories, request for landing.\n\t\t///</summary>\n\t\tDlg_Rift_0201,\n\t\t///<summary>\n\t\t///Approved. Welcome to our station and enjoy the sightseeing.\n\t\t///</summary>\n\t\tDlg_Rift_0202,\n\t\t///<summary>\n\t\t///Ehm, thanks.\n\t\t///</summary>\n\t\tDlg_Rift_0203,\n\t\t///<summary>\n\t\t///I am on an expedition to the Rift itself.\n\t\t///</summary>\n\t\tDlg_Rift_0204,\n\t\t///<summary>\n\t\t///Can anyone give me tips for the trip?\n\t\t///</summary>\n\t\tDlg_Rift_0205,\n\t\t///<summary>\n\t\t///Just a moment. I will connect you to Tourist Information office.\n\t\t///</summary>\n\t\tDlg_Rift_0206,\n\t\t///<summary>\n\t\t///Rift-Sion Tourist Information Office. Jennifer Smith speaking. How may I help?\n\t\t///</summary>\n\t\tDlg_Rift_0301,\n\t\t///<summary>\n\t\t///Um… I’m on an expedition to the Rift. Any useful tips you can provide?\n\t\t///</summary>\n\t\tDlg_Rift_0302,\n\t\t///<summary>\n\t\t///I will upload you the Rift Survival Brochure. Have a pleasant stay.\n\t\t///</summary>\n\t\tDlg_Rift_0303,\n\t\t///<summary>\n\t\t///…hm… always wear sunglases… use sun wind armor at all time…\n\t\t///</summary>\n\t\tDlg_Rift_0305,\n\t\t///<summary>\n\t\t///…avoid hi-speed objects such as meteor storms…\n\t\t///</summary>\n\t\tDlg_Rift_0306,\n\t\t///<summary>\n\t\t///…high solar wind areas… heavy radiation…\n\t\t///</summary>\n\t\tDlg_Rift_0307,\n\t\t///<summary>\n\t\t///Anything interesting?\n\t\t///</summary>\n\t\tDlg_Rift_0308,\n\t\t///<summary>\n\t\t///Some nice pictures.\n\t\t///</summary>\n\t\tDlg_Rift_0309,\n\t\t///<summary>\n\t\t///Oh well, guess I’ll be on my way.\n\t\t///</summary>\n\t\tDlg_Rift_0310,\n\t\t///<summary>\n\t\t///Check out the shop at Rift-Sion. They might have some useful equipment there.\n\t\t///</summary>\n\t\tDlg_Rift_0311,\n\t\t///<summary>\n\t\t///Make sure to buy anti-radiation meds and some medical and repair supplies.\n\t\t///</summary>\n\t\tDlg_Rift_0312,\n\t\t///<summary>\n\t\t///And definitely lots of fuel, it is a long way to the Rift.\n\t\t///</summary>\n\t\tDlg_Rift_0313,\n\t\t///<summary>\n\t\t///Guess I’m ready as I’ll ever be.\n\t\t///</summary>\n\t\tDlg_Rift_0401,\n\t\t///<summary>\n\t\t///Double check your seat belts. And – good luck! We’ll be waiting here.\n\t\t///</summary>\n\t\tDlg_Rift_0402,\n\t\t///<summary>\n\t\t///Apollo, I am losing your signal. Is everything ok?\n\t\t///</summary>\n\t\tDlg_Rift_0501,\n\t\t///<summary>\n\t\t///Affirmative. Just a lot of radiation and shit.\n\t\t///</summary>\n\t\tDlg_Rift_0502,\n\t\t///<summary>\n\t\t///Probably disturbing my signal. You copy?\n\t\t///</summary>\n\t\tDlg_Rift_0503,\n\t\t///<summary>\n\t\t///Gotcha. Do this fast.\n\t\t///</summary>\n\t\tDlg_Rift_0504,\n\t\t///<summary>\n\t\t///Out of signal range, swimming in radiation, and a boring mining operation ahead. Yee-haw.\n\t\t///</summary>\n\t\tDlg_Rift_0601,\n\t\t///<summary>\n\t\t///This plutonium deposit has a really extravagant color. Hmm.\n\t\t///</summary>\n\t\tDlg_Rift_0701,\n\t\t///<summary>\n\t\t///Mm, such yummy, gummy loop-tonium. Pluteenium. Go-homium.\n\t\t///</summary>\n\t\tDlg_Rift_0801,\n\t\t///<summary>\n\t\t///Man, this radiation is affecting my dental health. Mental wealth. And such.\n\t\t///</summary>\n\t\tDlg_Rift_0901,\n\t\t///<summary>\n\t\t///This should be enough. Now, back to the station.\n\t\t///</summary>\n\t\tDlg_Rift_1001,\n\t\t///<summary>\n\t\t///This is Apollo, reporting in. I have the rare plutonium.\n\t\t///</summary>\n\t\tDlg_Rift_1101,\n\t\t///<summary>\n\t\t///Loads of it. And maybe even some to spare.\n\t\t///</summary>\n\t\tDlg_Rift_1102,\n\t\t///<summary>\n\t\t///Oh… I… I’m glad to hear you again. Are you all right?\n\t\t///</summary>\n\t\tDlg_Rift_1103,\n\t\t///<summary>\n\t\t///Yeah, getting poached in raw radiation was a nice break from being shot at.\n\t\t///</summary>\n\t\tDlg_Rift_1104,\n\t\t///<summary>\n\t\t///Welcome back! Once you dock in, we can depart to Thomas.\n\t\t///</summary>\n\t\tDlg_Rift_1106,\n\t\t///<summary>\n\t\t///Affirmina-tative.\n\t\t///</summary>\n\t\tDlg_Rift_1107,\n\t\t///<summary>\n\t\t///Apollo?\n\t\t///</summary>\n\t\tDlg_Rift_1108,\n\t\t///<summary>\n\t\t///May I ask you a personal question?\n\t\t///</summary>\n\t\tDlg_Rift_1110,\n\t\t///<summary>\n\t\t///Ah… …no.\n\t\t///</summary>\n\t\tDlg_Rift_1111,\n\t\t///<summary>\n\t\t///Let’s give the man some space.\n\t\t///</summary>\n\t\tDlg_Rift_1112,\n\t\t///<summary>\n\t\t///Come on in. Course set to Barth’s Moon!\n\t\t///</summary>\n\t\tDlg_Rift_1113,\n\t\t///<summary>\n\t\t///Tourist Information office? Here? Not too much stress on that job.\n\t\t///</summary>\n\t\tDlg_Rift_0208,\n\t\t///<summary>\n\t\t///Ok, thanks for the tips.\n\t\t///</summary>\n\t\tDlg_Rift_0314,\n\t\t///<summary>\n\t\t///Yeah, the radiation here’ll turn me into a gummy bear in nothing flat.\n\t\t///</summary>\n\t\tDlg_Rift_0505,\n\t\t///<summary>\n\t\t///We are overwhelmed at a rate of 1:7.\n\t\t///</summary>\n\t\tDlg_EACSurveySite_0213b,\n\t\t///<summary>\n\t\t///Too bad we can’t help ourselves, even in an emergency.\n\t\t///</summary>\n\t\tDlg_EACSurveySite_1003b,\n\t\t///<summary>\n\t\t///That’s the Trader’s Guild for you. No free goods. No exceptions.\n\t\t///</summary>\n\t\tDlg_EACSurveySite_1004,\n\t\t///<summary>\n\t\t///We’re back!\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_0101,\n\t\t///<summary>\n\t\t///You know, this place is starting to feel like home!\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_0102,\n\t\t///<summary>\n\t\t///Check it if you want but we should get to the command center ASAP.\n\t\t///</summary>\n\t\tDlg_EACSurveySite_1005,\n\t\t///<summary>\n\t\t///Welcome to the Chinese radar array at Yunzun.\n\t\t///</summary>\n\t\tDlg_ChineseTransmitter_01_01,\n\t\t///<summary>\n\t\t///We know you have a choice in interstellar carriers…\n\t\t///</summary>\n\t\tDlg_ChineseTransmitter_01_02,\n\t\t///<summary>\n\t\t///…so we thank you for choosing Madelyn space airways.\n\t\t///</summary>\n\t\tDlg_ChineseTransmitter_01_03,\n\t\t///<summary>\n\t\t///Remember, guys, we’re in a prohibited area. They will shoot first, ask questions later.\n\t\t///</summary>\n\t\tDlg_ChineseTransmitter_01_04,\n\t\t///<summary>\n\t\t///Roger that, let’s go then. And don’t forget, act like raiders.\n\t\t///</summary>\n\t\tDlg_ChineseTransmitter_01_05,\n\t\t///<summary>\n\t\t///Sure thing, we just knock on their doors with sabres in our hands…\n\t\t///</summary>\n\t\tDlg_ChineseTransmitter_01_06,\n\t\t///<summary>\n\t\t///…and they’ll all jump overboard.\n\t\t///</summary>\n\t\tDlg_ChineseTransmitter_01_07,\n\t\t///<summary>\n\t\t///You know what I mean.\n\t\t///</summary>\n\t\tDlg_ChineseTransmitter_01_08,\n\t\t///<summary>\n\t\t///Arrr! We’ll keelhaul ’em and feed them to the fishies.\n\t\t///</summary>\n\t\tDlg_ChineseTransmitter_01_09,\n\t\t///<summary>\n\t\t///Why am I losing confidence by the moment?\n\t\t///</summary>\n\t\tDlg_ChineseTransmitter_01_10,\n\t\t///<summary>\n\t\t///I just finished my scan. There’s a side entrance through the cargo bay.\n\t\t///</summary>\n\t\tDlg_ChineseTransmitter_01_11,\n\t\t///<summary>\n\t\t///Music to my ears.\n\t\t///</summary>\n\t\tDlg_ChineseTransmitter_01_12,\n\t\t///<summary>\n\t\t///Uh-oh, just received a Chinese signal. Translating to English:\n\t\t///</summary>\n\t\tDlg_ChineseTransmitter_01_13,\n\t\t///<summary>\n\t\t///Addressing unknown vehicle: this is a prohibited area.\n\t\t///</summary>\n\t\tDlg_ChineseTransmitter_01_14,\n\t\t///<summary>\n\t\t///Explain your purposes and leave immediately or we will fire.\n\t\t///</summary>\n\t\tDlg_ChineseTransmitter_01_15,\n\t\t///<summary>\n\t\t///Repeat: leave or we will fire.\n\t\t///</summary>\n\t\tDlg_ChineseTransmitter_01_16,\n\t\t///<summary>\n\t\t///Better be quick.\n\t\t///</summary>\n\t\tDlg_ChineseTransmitter_01_17,\n\t\t///<summary>\n\t\t///Cannons at the ready, cap’n.\n\t\t///</summary>\n\t\tDlg_ChineseTransmitter_01_18,\n\t\t///<summary>\n\t\t///Ok, what’s the plan?\n\t\t///</summary>\n\t\tDlg_ChineseTransmitter_01_19,\n\t\t///<summary>\n\t\t///We enter by the cargo bay.\n\t\t///</summary>\n\t\tDlg_ChineseTransmitter_01_20,\n\t\t///<summary>\n\t\t///We loot the cargo, so it will look like a normal pillage and plunder operation.\n\t\t///</summary>\n\t\tDlg_ChineseTransmitter_01_21,\n\t\t///<summary>\n\t\t///Right. A normal, everyday pillage and plunder, nothing unusual.\n\t\t///</summary>\n\t\tDlg_ChineseTransmitter_01_22,\n\t\t///<summary>\n\t\t///Let the raid begin.\n\t\t///</summary>\n\t\tDlg_ChineseTransmitter_01_23,\n\t\t///<summary>\n\t\t///Ok, you two stay here, go after that cargo and attract some attention, …\n\t\t///</summary>\n\t\tDlg_ChineseTransmitter_02_01,\n\t\t///<summary>\n\t\t///…I’ll go place that detector.\n\t\t///</summary>\n\t\tDlg_ChineseTransmitter_02_02,\n\t\t///<summary>\n\t\t///They sent some ships, but no big deal.\n\t\t///</summary>\n\t\tDlg_ChineseTransmitter_02_04,\n\t\t///<summary>\n\t\t///Good, can you navigate me through the station?\n\t\t///</summary>\n\t\tDlg_ChineseTransmitter_02_05,\n\t\t///<summary>\n\t\t///Sure, just give me a sec for scanning.\n\t\t///</summary>\n\t\tDlg_ChineseTransmitter_02_06,\n\t\t///<summary>\n\t\t///Ok, I’ll head inside, let me know when you have something for me.\n\t\t///</summary>\n\t\tDlg_ChineseTransmitter_02_07,\n\t\t///<summary>\n\t\t///Come on, Valentin, let’s look around, see what booty we can find.\n\t\t///</summary>\n\t\tDlg_ChineseTransmitter_02_08,\n\t\t///<summary>\n\t\t///I see lots of cameras. You’ll have to turn them off.\n\t\t///</summary>\n\t\tDlg_ChineseTransmitter_03_01,\n\t\t///<summary>\n\t\t///The security center should be in the upper level.\n\t\t///</summary>\n\t\tDlg_ChineseTransmitter_03_02,\n\t\t///<summary>\n\t\t///Copy.\n\t\t///</summary>\n\t\tDlg_ChineseTransmitter_03_03,\n\t\t///<summary>\n\t\t///Can you hack those computers?\n\t\t///</summary>\n\t\tDlg_ChineseTransmitter_04_01,\n\t\t///<summary>\n\t\t///Negative, too many of them. It would take ages.\n\t\t///</summary>\n\t\tDlg_ChineseTransmitter_04_02,\n\t\t///<summary>\n\t\t///Then you’ll have to destroy the generator that powers this room.\n\t\t///</summary>\n\t\tDlg_ChineseTransmitter_04_03,\n\t\t///<summary>\n\t\t///Destroying generators is my new hobby.\n\t\t///</summary>\n\t\tDlg_ChineseTransmitter_04_04,\n\t\t///<summary>\n\t\t///Power is off, can you navigate me to the command center?\n\t\t///</summary>\n\t\tDlg_ChineseTransmitter_05_01,\n\t\t///<summary>\n\t\t///Yes, it’s in the center of the asteroid.\n\t\t///</summary>\n\t\tDlg_ChineseTransmitter_05_02,\n\t\t///<summary>\n\t\t///Great. Tarja, what’s your status?\n\t\t///</summary>\n\t\tDlg_ChineseTransmitter_05_03,\n\t\t///<summary>\n\t\t///A few guards, no big deal. And we’ve got some sweet boo-tay.\n\t\t///</summary>\n\t\tDlg_ChineseTransmitter_05_04,\n\t\t///<summary>\n\t\t///Er… No comment.\n\t\t///</summary>\n\t\tDlg_ChineseTransmitter_05_05,\n\t\t///<summary>\n\t\t///WAIT! I just made deep scan of the command center. It is heavily guarded.\n\t\t///</summary>\n\t\tDlg_ChineseTransmitter_06_01,\n\t\t///<summary>\n\t\t///Give me a minute and I’ll find where you can disable it.\n\t\t///</summary>\n\t\tDlg_ChineseTransmitter_06_02,\n\t\t///<summary>\n\t\t///Apollo, hurry up, reinforcements just arrived!\n\t\t///</summary>\n\t\tDlg_ChineseTransmitter_06_03,\n\t\t///<summary>\n\t\t///I found it. Coordinates sent.\n\t\t///</summary>\n\t\tDlg_ChineseTransmitter_06_04,\n\t\t///<summary>\n\t\t///Hold on Tarja, I’m almost in the command center.\n\t\t///</summary>\n\t\tDlg_ChineseTransmitter_06_05,\n\t\t///<summary>\n\t\t///Apollo, where are you? It’s getting pretty hot in here.\n\t\t///</summary>\n\t\tDlg_ChineseTransmitter_07_01,\n\t\t///<summary>\n\t\t///Go back to Madelyn, I can find my way out on my own.\n\t\t///</summary>\n\t\tDlg_ChineseTransmitter_07_02,\n\t\t///<summary>\n\t\t///Negative, they cut us off.\n\t\t///</summary>\n\t\tDlg_ChineseTransmitter_07_03,\n\t\t///<summary>\n\t\t///I’ll be there as fast as I can. Madelyn, is the command center safe now?\n\t\t///</summary>\n\t\tDlg_ChineseTransmitter_07_04,\n\t\t///<summary>\n\t\t///If you turned off those turrets…\n\t\t///</summary>\n\t\tDlg_ChineseTransmitter_07_05,\n\t\t///<summary>\n\t\t///Detector placed, I just hope they don’t spot it. Tarja, hold on, I’m on my way.\n\t\t///</summary>\n\t\tDlg_ChineseTransmitter_08_01,\n\t\t///<summary>\n\t\t///Tarja, I’m glad you two are still alive!\n\t\t///</summary>\n\t\tDlg_ChineseTransmitter_09_01,\n\t\t///<summary>\n\t\t///We won’t be much longer if we stand here and chat.\n\t\t///</summary>\n\t\tDlg_ChineseTransmitter_09_02,\n\t\t///<summary>\n\t\t///So let’s go. Madelyn, what’s your status?\n\t\t///</summary>\n\t\tDlg_ChineseTransmitter_09_03,\n\t\t///<summary>\n\t\t///Ready when you are.\n\t\t///</summary>\n\t\tDlg_ChineseTransmitter_09_04,\n\t\t///<summary>\n\t\t///Great, we’re on our way. Well, I think it was a success. \n\t\t///</summary>\n\t\tDlg_ChineseTransmitter_09_05,\n\t\t///<summary>\n\t\t///Just an everyday pillage and plunder.\n\t\t///</summary>\n\t\tDlg_ChineseTransmitter_09_06,\n\t\t///<summary>\n\t\t///Arrrr! Them scurvy-ridden harbor hogs didn’t stand a chance.\n\t\t///</summary>\n\t\tDlg_ChineseTransmitter_09_07,\n\t\t///<summary>\n\t\t///I think we’re all set, so you can belay the Jack Tar routine.\n\t\t///</summary>\n\t\tDlg_ChineseTransmitter_09_08,\n\t\t///<summary>\n\t\t///Aye aye, cap’n.\n\t\t///</summary>\n\t\tDlg_ChineseTransmitter_09_09,\n\t\t///<summary>\n\t\t///No, really, please stop. Thank you.\n\t\t///</summary>\n\t\tDlg_ChineseTransmitter_09_10,\n\t\t///<summary>\n\t\t///Mission complete. Madelyn, can you get us out of here?\n\t\t///</summary>\n\t\tDlg_ChineseTransmitter_10_01,\n\t\t///<summary>\n\t\t///If you give me a little push in the right direction…\n\t\t///</summary>\n\t\tDlg_ChineseTransmitter_10_02,\n\t\t///<summary>\n\t\t///Russia. The radar array of Tver. \n\t\t///</summary>\n\t\tDlg_ChineseTransmitter_10_03,\n\t\t///<summary>\n\t\t///You want to save the EAC radar array for last, right?\n\t\t///</summary>\n\t\tDlg_ChineseTransmitter_10_04,\n\t\t///<summary>\n\t\t///I do.\n\t\t///</summary>\n\t\tDlg_ChineseTransmitter_10_05,\n\t\t///<summary>\n\t\t///Course set. Dock in!\n\t\t///</summary>\n\t\tDlg_ChineseTransmitter_10_06,\n\t\t///<summary>\n\t\t///Let’s say hello to Thomas. I think he’ll be happy to see us again!\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_0108,\n\t\t///<summary>\n\t\t///Thomas, do you copy?\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_0109,\n\t\t///<summary>\n\t\t///I am here, my friends, and eager to hear of your exploits!\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_0110,\n\t\t///<summary>\n\t\t///Mission accomplished!\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_0111,\n\t\t///<summary>\n\t\t///Raiders successfully terminated and communication components secured.\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_0112,\n\t\t///<summary>\n\t\t///I am pleased to hear such good news!  I have something for you as well… \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_0114,\n\t\t///<summary>\n\t\t///Read it on your way here. \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_0116,\n\t\t///<summary>\n\t\t///I’m going through the data Thomas just sent. The whole situation is… unbelievable!\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_0201,\n\t\t///<summary>\n\t\t///What exactly do you mean?\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_0202,\n\t\t///<summary>\n\t\t///…now I completely understand why Thomas was so excited when we first arrived…\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_0203,\n\t\t///<summary>\n\t\t///…and told him about the artifacts.\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_0204,\n\t\t///<summary>\n\t\t///I’ll let Thomas do the explaining. Meanwhile, I’ll go through the rest of the data…\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_0206,\n\t\t///<summary>\n\t\t///So what do you think?\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_0301,\n\t\t///<summary>\n\t\t///You’d better explain all this in your own words. The data you sent is… complex.\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_0302,\n\t\t///<summary>\n\t\t///As I said earlier, there are reasons to believe that…\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_0304,\n\t\t///<summary>\n\t\t///…there was an ancient alien impact on the evolution of humankind.\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_0305,\n\t\t///<summary>\n\t\t///Dismiss it as nonsense if you wish, but those Russians believe it.\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_0306,\n\t\t///<summary>\n\t\t///And back in the Deimos labs, we believed too. For good reason.\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_0307,\n\t\t///<summary>\n\t\t///Anyway, if it was true, then there has to be some remains of the aliens…\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_0308,\n\t\t///<summary>\n\t\t///…or their technology, in our Solar System.\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_0309,\n\t\t///<summary>\n\t\t///Technology we might possibly employ…\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_0310,\n\t\t///<summary>\n\t\t///Biological samples we might…\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_0311,\n\t\t///<summary>\n\t\t///…utilize to enhance our own genome.\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_0312,\n\t\t///<summary>\n\t\t///That’s what the Reichists were after! A shortening of the way!  \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_0313,\n\t\t///<summary>\n\t\t///Precisely! Think of the way we put human diseases into bacteria, make them resistant…\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_0314,\n\t\t///<summary>\n\t\t///…and then implant the resulting inhibitors into humans… \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_0315,\n\t\t///<summary>\n\t\t///Imagine if we implanted the effective parts of alien DNA…\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_0316,\n\t\t///<summary>\n\t\t///…which is several evolutionary steps above ours, into humans.\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_0317,\n\t\t///<summary>\n\t\t///You think this is what those Russians are after?\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_0318,\n\t\t///<summary>\n\t\t///Perhaps. But I’d guess they are more interested in the technology.\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_0319,\n\t\t///<summary>\n\t\t///Analyzing those alien materials and…\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_0320,\n\t\t///<summary>\n\t\t///…devices could help them create futuristic weapons.\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_0321,\n\t\t///<summary>\n\t\t///Now, before we talk further, I want you to check these coordinates.  \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_0324,\n\t\t///<summary>\n\t\t///Proceed to this location. It will take a few minutes to get there. \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_0401,\n\t\t///<summary>\n\t\t///I will explain everything on the way.\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_0402,\n\t\t///<summary>\n\t\t///Ok. You can start anytime…\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_0403,\n\t\t///<summary>\n\t\t///The place you are going to is the remains of the old Deimos laboratory complex.\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_0404,\n\t\t///<summary>\n\t\t///This can’t be! Deimos’ moon must have been crushed during… \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_0405,\n\t\t///<summary>\n\t\t///…the Solar Event like all the other solar bodies!\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_0406,\n\t\t///<summary>\n\t\t///I did not say it was the whole moon. It is just a… shard. But it contains… \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_0407,\n\t\t///<summary>\n\t\t///…laboratories… with technologies useful to our current situation. \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_0408,\n\t\t///<summary>\n\t\t///Why haven’t you gone there yourself?\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_0409,\n\t\t///<summary>\n\t\t///I have. Several times. Hit-and-run. \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_0410,\n\t\t///<summary>\n\t\t///Many of my devices are from the Broken Moon, as I call it.\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_0411,\n\t\t///<summary>\n\t\t///Why hit-and-run?\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_0412,\n\t\t///<summary>\n\t\t///Right – there can’t be anyone living there, except maybe… space nazi zombies. \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_0413,\n\t\t///<summary>\n\t\t///Come on, no one could survive in there!\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_0414,\n\t\t///<summary>\n\t\t///No humans. But… machines, computers. Artificial intelligence. \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_0415,\n\t\t///<summary>\n\t\t///We had a technology for AI fighter pilots long before the solar event. \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_0416,\n\t\t///<summary>\n\t\t///I wonder what else YOU know that we don’t.\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_0417,\n\t\t///<summary>\n\t\t///Not much, but I’ll tell you a few more stories later.\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_0418,\n\t\t///<summary>\n\t\t///What’s the plan?\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_0419,\n\t\t///<summary>\n\t\t///Get inside, turn up the emergency power unit, kick off the AI weapons. \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_0420,\n\t\t///<summary>\n\t\t///And get me a few components.\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_0421,\n\t\t///<summary>\n\t\t///Roger that.\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_0422,\n\t\t///<summary>\n\t\t///Might need to dig or blast our way through this pile of dirt.\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_0501,\n\t\t///<summary>\n\t\t///Here we go. I’m detecting radiation around here. \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_0601,\n\t\t///<summary>\n\t\t///And the deeper we go, the stronger it gets. \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_0602,\n\t\t///<summary>\n\t\t///You must turn on the backup energy supply first. \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_0603,\n\t\t///<summary>\n\t\t///Do not waste time or the radiation will consume you alive! \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_0604,\n\t\t///<summary>\n\t\t///Good. Now, you need to turn on the main energy generators.\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_0701,\n\t\t///<summary>\n\t\t///There should be drones! Emergency maintenance drones. \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_0703,\n\t\t///<summary>\n\t\t///Find them and if they are still operational, they can do the job. \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_0704,\n\t\t///<summary>\n\t\t///I saw a small maintenance room on the way here. Let’s check it out.  \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_0705,\n\t\t///<summary>\n\t\t///Nice! The drones survived. I mean, they’re still operational. \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_0801,\n\t\t///<summary>\n\t\t///Great! Use them to do the dirty work\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_0802,\n\t\t///<summary>\n\t\t///First “park” your ship in the area without radiation. \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_0803,\n\t\t///<summary>\n\t\t///The drones are immune to it, but you’re not.  \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_0804,\n\t\t///<summary>\n\t\t///Apollo, you handle the drone. Find a way to lead it to the generators.\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_0901,\n\t\t///<summary>\n\t\t///Here we go. About to fire this one up.\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_1001,\n\t\t///<summary>\n\t\t///Up and running!\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_1101,\n\t\t///<summary>\n\t\t///Crap, it’s overheating and –\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_1102,\n\t\t///<summary>\n\t\t///Bad luck. Try the other generator with the other drone. \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_1201,\n\t\t///<summary>\n\t\t///Workin’ on it. \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_1202,\n\t\t///<summary>\n\t\t///I’m here. Let’s spin the wheel of fortune again. \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_1301,\n\t\t///<summary>\n\t\t///Yeah! Roll, baby!\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_1401,\n\t\t///<summary>\n\t\t///Wait a few seconds. \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_1402,\n\t\t///<summary>\n\t\t///Ok, it seems this one is stable. \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_1403,\n\t\t///<summary>\n\t\t///Good, I see you have lights on! Head to the main control room.  \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_1404,\n\t\t///<summary>\n\t\t///I see some nice stuff around there. Would you mind getting the data from each of hubs?\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_1501,\n\t\t///<summary>\n\t\t///There should be four of them.\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_1502,\n\t\t///<summary>\n\t\t///Do we have to hit all four of them?\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_1503,\n\t\t///<summary>\n\t\t///Yes, the data is hashed. Get it from only one computer and it’s of no use to me.\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_1504,\n\t\t///<summary>\n\t\t///What exactly are we after?\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_1505,\n\t\t///<summary>\n\t\t///Results of genetic research. Classified materials. \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_1506,\n\t\t///<summary>\n\t\t///Even I did not have access to them before. \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_1507,\n\t\t///<summary>\n\t\t///Once you’re done, I need you to pick up a few special devices\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_1508,\n\t\t///<summary>\n\t\t///I will tell you when you come across one.  \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_1509,\n\t\t///<summary>\n\t\t///We’ve got company.\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_1601,\n\t\t///<summary>\n\t\t///Damn, and we forgot to buy wine. Security bots! \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_1602,\n\t\t///<summary>\n\t\t///This place is radiated. Apollo, work fast. \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_1701,\n\t\t///<summary>\n\t\t///Roger that.  \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_1702,\n\t\t///<summary>\n\t\t///Done. Movin’ on.  \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_1801,\n\t\t///<summary>\n\t\t///Damn, this is bad. Critical radiation level in this one. \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_1901,\n\t\t///<summary>\n\t\t///I suggest using drones again. Same procedure as before. \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_1902,\n\t\t///<summary>\n\t\t///Stop your ship in a safe area and let the drone get its hands dirty. \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_1903,\n\t\t///<summary>\n\t\t///I’d just eat Marcus’s cooking.   \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_1905,\n\t\t///<summary>\n\t\t///All set here.\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_2001,\n\t\t///<summary>\n\t\t///One more computer to go.  \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_2002,\n\t\t///<summary>\n\t\t///Good job, Apollo!\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_2101,\n\t\t///<summary>\n\t\t///Now, according to the scans, the components I need are in the main lab. \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_2102,\n\t\t///<summary>\n\t\t///Just… be careful there. I don’t know whether Blondi is still alive…\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_2103,\n\t\t///<summary>\n\t\t///Blondi?\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_2104,\n\t\t///<summary>\n\t\t///Better not to ask. Just… always look around corners. \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_2105,\n\t\t///<summary>\n\t\t///Great! Blondi? What the hell is that?\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_2106,\n\t\t///<summary>\n\t\t///Guess we’ll find out soon enough. Head to the main lab.  \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_2107,\n\t\t///<summary>\n\t\t///Jeez… is this –\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_2201,\n\t\t///<summary>\n\t\t///Emergency security measures! Overriding human safety protocol. Mainframe CORE endangered!\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_2202,\n\t\t///<summary>\n\t\t///Blondi?\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_2203,\n\t\t///<summary>\n\t\t///We’re locked in. She… I mean, IT sealed all the doors.\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_2204,\n\t\t///<summary>\n\t\t///Blondi! She is alive!\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_2205,\n\t\t///<summary>\n\t\t///“She” has just targeted all of her defense systems on us. \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_2206,\n\t\t///<summary>\n\t\t///Is she always this polite to guests?\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_2207,\n\t\t///<summary>\n\t\t///Try not to damage her! She’s – a masterpiece!\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_2208,\n\t\t///<summary>\n\t\t///You prefer us to be damaged instead? \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_2209,\n\t\t///<summary>\n\t\t///Apollo, concentrate all your firepower on our… lady friend. \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_2210,\n\t\t///<summary>\n\t\t///Thomas, what’s this all about?\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_2211,\n\t\t///<summary>\n\t\t///An experiment! A successful one! She survived all these years!\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_2212,\n\t\t///<summary>\n\t\t///Too bad we have to spoil your perfect record. \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_2213,\n\t\t///<summary>\n\t\t///No!\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_2214,\n\t\t///<summary>\n\t\t///You understand we have no other choice? That thing is firing on us repeatedly – \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_2215,\n\t\t///<summary>\n\t\t///Am I… hurt? \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_2216,\n\t\t///<summary>\n\t\t///You are… \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_2217,\n\t\t///<summary>\n\t\t///Killing my children… \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_2218,\n\t\t///<summary>\n\t\t///And now… \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_2219,\n\t\t///<summary>\n\t\t///You come to kill… \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_2220,\n\t\t///<summary>\n\t\t///Me?\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_2221,\n\t\t///<summary>\n\t\t///You must save her! For the sake of science and humanity, you must –\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_2222,\n\t\t///<summary>\n\t\t///If you tell me “she” feels pain, I will consider killing you as well, Dr. Frankenstein.\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_2223,\n\t\t///<summary>\n\t\t///She does not, although she simulates emotions. \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_2224,\n\t\t///<summary>\n\t\t///She is one of the greatest achievements of science.\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_2225,\n\t\t///<summary>\n\t\t///Destroying her would throw us back years in biogenetic research.\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_2226,\n\t\t///<summary>\n\t\t///Did you say biogenetic? \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_2227,\n\t\t///<summary>\n\t\t///Ehm, yes, biogenetic. \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_2228,\n\t\t///<summary>\n\t\t///I mean – she is not “electronic” in the true sense of the world. \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_2229,\n\t\t///<summary>\n\t\t///Holy crap! Are you telling me this computer is alive?\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_2230,\n\t\t///<summary>\n\t\t///“She”’s nearly down!\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_2301,\n\t\t///<summary>\n\t\t///Save her! I beg you! Don’t destroy her, just… disable her! \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_2302,\n\t\t///<summary>\n\t\t///Farewell to humankind! Blondi out\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_2401,\n\t\t///<summary>\n\t\t///Nooooo! Years of work turned to ashes!\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_2501,\n\t\t///<summary>\n\t\t///Target dispatched. Well done, Apollo!\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_2502,\n\t\t///<summary>\n\t\t///What next? Thomas?\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_2503,\n\t\t///<summary>\n\t\t///You… How could you?… How could you? \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_2504,\n\t\t///<summary>\n\t\t///Guys, I got the data from Thomas earlier. \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_2505,\n\t\t///<summary>\n\t\t///According to his list, he needs some devices from around this room. \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_2506,\n\t\t///<summary>\n\t\t///I’ll mark them on your HUD. Grab ’em and go. \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_2507,\n\t\t///<summary>\n\t\t///Are we about to disassemble the satellite dish?\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_2508,\n\t\t///<summary>\n\t\t///Seems so. Some of the items on the list look like additional components…\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_2509,\n\t\t///<summary>\n\t\t///…for the long-range transmitter we’re supposed to build. \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_2510,\n\t\t///<summary>\n\t\t///Some of the other stuff is… well, biological.\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_2511,\n\t\t///<summary>\n\t\t///I am not bringing Dr. Frankenstein any more body parts.\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_2512,\n\t\t///<summary>\n\t\t///The components should be sufficient. Trust me. I will transfer you the list.\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_2513,\n\t\t///<summary>\n\t\t///Whatever. Apollo, gather the components. I’ll wait for you at the lab entrance.  \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_2514,\n\t\t///<summary>\n\t\t///I guess we’re all set.\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_2601,\n\t\t///<summary>\n\t\t///Confirmed. Come on back home, guys! \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_2602,\n\t\t///<summary>\n\t\t///Wow, selling stuff from this place could make us millions!\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_2701,\n\t\t///<summary>\n\t\t///Wait, what are those two ships? \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_2702,\n\t\t///<summary>\n\t\t///We’ve got competition! Shoot them!\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_2703,\n\t\t///<summary>\n\t\t///Seems some looters found their way in, too.  \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_2704,\n\t\t///<summary>\n\t\t///That should be it. The path to the exit is clear.\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_2801,\n\t\t///<summary>\n\t\t///Be careful. I’m willing to bet those raiders have some friends. \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_2802,\n\t\t///<summary>\n\t\t///Damn. You were right. How do we get past them? \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_2901,\n\t\t///<summary>\n\t\t///Sorry to being this up, but remember… Thomas’s base is just a few kilometers away. \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_2902,\n\t\t///<summary>\n\t\t///We can’t leave those raiders alive.\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_2903,\n\t\t///<summary>\n\t\t///Madelyn, is that really you?\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_2904,\n\t\t///<summary>\n\t\t///Saying we have to kill someone instead of sparing his life?\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_2905,\n\t\t///<summary>\n\t\t///Circumstances. \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_2906,\n\t\t///<summary>\n\t\t///Agreed. We need to crush those ships, otherwise they might endanger Thomas.  \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_2907,\n\t\t///<summary>\n\t\t///Area clear. \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_3001,\n\t\t///<summary>\n\t\t///Nice job, guys! \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_3002,\n\t\t///<summary>\n\t\t///Thomas, we’re on the way back. \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_3101,\n\t\t///<summary>\n\t\t///And we have the components you requested.\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_3102,\n\t\t///<summary>\n\t\t///Ok, ok. Bring them here.\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_3103,\n\t\t///<summary>\n\t\t///I’m sending you the data we downloaded from the computers. \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_3104,\n\t\t///<summary>\n\t\t///What next?\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_3105,\n\t\t///<summary>\n\t\t///Give me some time to analyze the data. \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_3106,\n\t\t///<summary>\n\t\t///For now, would you mind helping me build that communication array?\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_3107,\n\t\t///<summary>\n\t\t///A job that won’t get us killed? That’ll be a refreshing change.  \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_3108,\n\t\t///<summary>\n\t\t///The array should work now!\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_3201,\n\t\t///<summary>\n\t\t///It… works… Just…\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_3202,\n\t\t///<summary>\n\t\t///What? Problems?\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_3203,\n\t\t///<summary>\n\t\t///No, but I’m already picking up a signal.\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_3204,\n\t\t///<summary>\n\t\t///That might be our signal. I have several relays and communication channels open.\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_3205,\n\t\t///<summary>\n\t\t///No, that’s – not – it. \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_3206,\n\t\t///<summary>\n\t\t///It appears to be a distress signal. Sent earlier today. \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_3208,\n\t\t///<summary>\n\t\t///Periodically repeating. See for yourself.\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_3209,\n\t\t///<summary>\n\t\t///…This is… Christian community Last Hope. \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_3210,\n\t\t///<summary>\n\t\t///We are under attack. Slavers…\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_3211,\n\t\t///<summary>\n\t\t///…we are requesting help! If anyone hears this, …\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_3212,\n\t\t///<summary>\n\t\t///…please come to our assistance. Our coordinates are…\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_3213,\n\t\t///<summary>\n\t\t///I’ve located the source of the signal.\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_3214,\n\t\t///<summary>\n\t\t///I suppose you want us to help them?\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_3215,\n\t\t///<summary>\n\t\t///That’s your decision. \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_3216,\n\t\t///<summary>\n\t\t///The signal was sent several hours ago, so there’s probably no one alive anymore.\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_3217,\n\t\t///<summary>\n\t\t///Or they may have gotten help from someone else. \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_3218,\n\t\t///<summary>\n\t\t///Doubtful. Their base is so far from any civilized settlement…\n\t\t///</summary>\n\t\tDlg_BarthsMoon2_3219,\n\t\t///<summary>\n\t\t///…it would be impossible for the signal to reach. \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_3220,\n\t\t///<summary>\n\t\t///It’s just a fluke that we received it. \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_3221,\n\t\t///<summary>\n\t\t///It’s worth a try. We might be able to save some lives.  \n\t\t///</summary>\n\t\tDlg_BarthsMoon2_3222,\n\t\t///<summary>\n\t\t///Here we go!\n\t\t///</summary>\n\t\tDlg_WhitewolvesResearch_1000,\n\t\t///<summary>\n\t\t///This structure looks like one of those concentration camps…\n\t\t///</summary>\n\t\tDlg_WhitewolvesResearch_1001,\n\t\t///<summary>\n\t\t///…the Nazis made during World War 2.\n\t\t///</summary>\n\t\tDlg_WhitewolvesResearch_1002,\n\t\t///<summary>\n\t\t///It’s very close. I have seen many photos of those camps before.\n\t\t///</summary>\n\t\tDlg_WhitewolvesResearch_1003,\n\t\t///<summary>\n\t\t///We need to get waste samples from outside.\n\t\t///</summary>\n\t\tDlg_WhitewolvesResearch_1004,\n\t\t///<summary>\n\t\t///Valentin, Tarja – cover me!\n\t\t///</summary>\n\t\tDlg_WhitewolvesResearch_1005,\n\t\t///<summary>\n\t\t///All looks well. It seems the area is clear. \n\t\t///</summary>\n\t\tDlg_WhitewolvesResearch_1006,\n\t\t///<summary>\n\t\t///Head to the station and look for the inner part of the biomachine.\n\t\t///</summary>\n\t\tDlg_WhitewolvesResearch_1007,\n\t\t///<summary>\n\t\t///And take samples of the materials they’re using.\n\t\t///</summary>\n\t\tDlg_WhitewolvesResearch_1008,\n\t\t///<summary>\n\t\t///I’ll do my best, just I’m staying away from that slimy green shit.\n\t\t///</summary>\n\t\tDlg_WhitewolvesResearch_1009,\n\t\t///<summary>\n\t\t///It wasn’t that bad.\n\t\t///</summary>\n\t\tDlg_WhitewolvesResearch_1010,\n\t\t///<summary>\n\t\t///The hardest part is still ahead of you.\n\t\t///</summary>\n\t\tDlg_WhitewolvesResearch_1011,\n\t\t///<summary>\n\t\t///This place sickens me. Just like the Reichists!\n\t\t///</summary>\n\t\tDlg_WhitewolvesResearch_1012,\n\t\t///<summary>\n\t\t///I thought it was overtaken by separatists.\n\t\t///</summary>\n\t\tDlg_WhitewolvesResearch_1013,\n\t\t///<summary>\n\t\t///Right, but do you think they started this all stuff?\n\t\t///</summary>\n\t\tDlg_WhitewolvesResearch_1014,\n\t\t///<summary>\n\t\t///Whoever did it is pretty fucked up. \n\t\t///</summary>\n\t\tDlg_WhitewolvesResearch_1015,\n\t\t///<summary>\n\t\t///Do we even have any clue who these separatists are?\n\t\t///</summary>\n\t\tDlg_WhitewolvesResearch_1016,\n\t\t///<summary>\n\t\t///No idea. I’ll ask von Stauffenberg the next time we meet.\n\t\t///</summary>\n\t\tDlg_WhitewolvesResearch_1017,\n\t\t///<summary>\n\t\t///They look like Reichists, quack like Reichists. \n\t\t///</summary>\n\t\tDlg_WhitewolvesResearch_1018,\n\t\t///<summary>\n\t\t///Hard to tell the difference.\n\t\t///</summary>\n\t\tDlg_WhitewolvesResearch_1019,\n\t\t///<summary>\n\t\t///This should be pretty straightforward. Just download the blueprint data.\n\t\t///</summary>\n\t\tDlg_WhitewolvesResearch_1020,\n\t\t///<summary>\n\t\t///Is that all? Download the blueprints and… burn this place?\n\t\t///</summary>\n\t\tDlg_WhitewolvesResearch_1021,\n\t\t///<summary>\n\t\t///We need several more components. At least according to the list from Stauffenberg.\n\t\t///</summary>\n\t\tDlg_WhitewolvesResearch_1022,\n\t\t///<summary>\n\t\t///Fine. Let’s do those tasks ASAP, so we can get out of here.\n\t\t///</summary>\n\t\tDlg_WhitewolvesResearch_1023,\n\t\t///<summary>\n\t\t///Now for the highlight of this evening’s entertainment.\n\t\t///</summary>\n\t\tDlg_WhitewolvesResearch_1024,\n\t\t///<summary>\n\t\t///The fireworks display.\n\t\t///</summary>\n\t\tDlg_WhitewolvesResearch_1025,\n\t\t///<summary>\n\t\t///I don’t understand why the Reich wants us to destroy this place.\n\t\t///</summary>\n\t\tDlg_WhitewolvesResearch_1026,\n\t\t///<summary>\n\t\t///Can’t they use it themselves?\n\t\t///</summary>\n\t\tDlg_WhitewolvesResearch_1027,\n\t\t///<summary>\n\t\t///They’re all about teaching lessons.\n\t\t///</summary>\n\t\tDlg_WhitewolvesResearch_1028,\n\t\t///<summary>\n\t\t///Whatever.\n\t\t///</summary>\n\t\tDlg_WhitewolvesResearch_1029,\n\t\t///<summary>\n\t\t///Be careful and aim at the lower exterior part of the biomachine.\n\t\t///</summary>\n\t\tDlg_WhitewolvesResearch_1030,\n\t\t///<summary>\n\t\t///Do it from a safe distance – near the fence will be ok.\n\t\t///</summary>\n\t\tDlg_WhitewolvesResearch_1031,\n\t\t///<summary>\n\t\t///Otherwise you’ll blow along with it.\n\t\t///</summary>\n\t\tDlg_WhitewolvesResearch_1032,\n\t\t///<summary>\n\t\t///No cracks about blowing things, Tarja.\n\t\t///</summary>\n\t\tDlg_WhitewolvesResearch_1033,\n\t\t///<summary>\n\t\t///You read my mind.\n\t\t///</summary>\n\t\tDlg_WhitewolvesResearch_1034,\n\t\t///<summary>\n\t\t///It’s an easy read.\n\t\t///</summary>\n\t\tDlg_WhitewolvesResearch_1035,\n\t\t///<summary>\n\t\t///Wow, that was more than I bargained for.\n\t\t///</summary>\n\t\tDlg_WhitewolvesResearch_1036,\n\t\t///<summary>\n\t\t///Let’s blow something else up. You know, just for fun.\n\t\t///</summary>\n\t\tDlg_WhitewolvesResearch_1037,\n\t\t///<summary>\n\t\t///Calm down, Tarja, one’s enough.\n\t\t///</summary>\n\t\tDlg_WhitewolvesResearch_1038,\n\t\t///<summary>\n\t\t///Madelyn, don’t tell me the party’s over?\n\t\t///</summary>\n\t\tDlg_WhitewolvesResearch_1039,\n\t\t///<summary>\n\t\t///Come on guys, come back to Sapho. A warm hangar and some cookies await.\n\t\t///</summary>\n\t\tDlg_WhitewolvesResearch_1041,\n\t\t///<summary>\n\t\t///Hm. Cookies?\n\t\t///</summary>\n\t\tDlg_WhitewolvesResearch_1042,\n\t\t///<summary>\n\t\t///You know. The synthetic stuff.\n\t\t///</summary>\n\t\tDlg_WhitewolvesResearch_1043,\n\t\t///<summary>\n\t\t///Right now, everything sounds better than… biological stuff.\n\t\t///</summary>\n\t\tDlg_WhitewolvesResearch_1044,\n\t\t///<summary>\n\t\t///Do not underestimate these red lads.\n\t\t///</summary>\n\t\tDlg_Laika_0302,\n\t\t///<summary>\n\t\t///Enjoy your last moments of life, pigs!\n\t\t///</summary>\n\t\tDlg_Laika_1605,\n\t\t///<summary>\n\t\t///Dance, zalupa!\n\t\t///</summary>\n\t\tDlg_Laika_1606,\n\t\t///<summary>\n\t\t///Damn, turrets are firing on us from all around!\n\t\t///</summary>\n\t\tDlg_Laika_1607,\n\t\t///<summary>\n\t\t///We need to take out the generator. That’ll cut their power.\n\t\t///</summary>\n\t\tDlg_Laika_1608,\n\t\t///<summary>\n\t\t///I’ll pretend you didn’t say that.\n\t\t///</summary>\n\t\tDlg_Laika_0303a,\n\t\t///<summary>\n\t\t///And I’ll pretend you didn’t say that.\n\t\t///</summary>\n\t\tDlg_Laika_0303b,\n\t\t///<summary>\n\t\t///I should be fine here.\n\t\t///</summary>\n\t\tDlg_Laika_0303c,\n\t\t///<summary>\n\t\t///…those fighters and turrets can barely scratch my paint.\n\t\t///</summary>\n\t\tDlg_Laika_0304a,\n\t\t///<summary>\n\t\t///…are definitely not standard issue for the Russian army.\n\t\t///</summary>\n\t\tDlg_Laika_0314a,\n\t\t///<summary>\n\t\t///Quite the well-stocked marketplace!\n\t\t///</summary>\n\t\tDlg_Laika_0400,\n\t\t///<summary>\n\t\t///Too bad they won’t sell us a thing now.\n\t\t///</summary>\n\t\tDlg_Laika_0401,\n\t\t///<summary>\n\t\t///…a maintenance fleet to cover all traces of your presence.\n\t\t///</summary>\n\t\tDlg_Laika_0712a,\n\t\t///<summary>\n\t\t///Use them for “persuasive purposes”?\n\t\t///</summary>\n\t\tDlg_Laika_0810,\n\t\t///<summary>\n\t\t///Why not? It might work, it might not. Anyway, it won’t take long to try.\n\t\t///</summary>\n\t\tDlg_Laika_0811,\n\t\t///<summary>\n\t\t///Agreed.\n\t\t///</summary>\n\t\tDlg_Laika_0812,\n\t\t///<summary>\n\t\t///This thing could vaporize whole place in a nanosecond.\n\t\t///</summary>\n\t\tDlg_Laika_0901,\n\t\t///<summary>\n\t\t///I guess it’s not surprising. After all, this is not a civilian trade station.\n\t\t///</summary>\n\t\tDlg_Laika_0902,\n\t\t///<summary>\n\t\t///Right. Let’s move on to the second satellite.\n\t\t///</summary>\n\t\tDlg_Laika_0903,\n\t\t///<summary>\n\t\t///Apollo, you need to use your hacking device to arm it.\n\t\t///</summary>\n\t\tDlg_Laika_0950,\n\t\t///<summary>\n\t\t///Done.\n\t\t///</summary>\n\t\tDlg_Laika_1800,\n\t\t///<summary>\n\t\t///Back to Sapho now.\n\t\t///</summary>\n\t\tDlg_Laika_1801,\n\t\t///<summary>\n\t\t///Things are getting a little hairy here. Status?\n\t\t///</summary>\n\t\tDlg_Laika_1802,\n\t\t///<summary>\n\t\t///We are going to try to, ehm, negotiate.\n\t\t///</summary>\n\t\tDlg_Laika_1803,\n\t\t///<summary>\n\t\t///Attention, commander:\n\t\t///</summary>\n\t\tDlg_Laika_1804,\n\t\t///<summary>\n\t\t///We found your surprise package – the nuclear one.\n\t\t///</summary>\n\t\tDlg_Laika_1805,\n\t\t///<summary>\n\t\t///It’s armed and my finger is on the trigger.\n\t\t///</summary>\n\t\tDlg_Laika_1805a,\n\t\t///<summary>\n\t\t///If you pursue us – do svidaniya.\n\t\t///</summary>\n\t\tDlg_Laika_1806,\n\t\t///<summary>\n\t\t///Cease your fire and we will disarm the warhead when leaving the sector.\n\t\t///</summary>\n\t\tDlg_Laika_1807,\n\t\t///<summary>\n\t\t///Will it work?\n\t\t///</summary>\n\t\tDlg_Laika_1808,\n\t\t///<summary>\n\t\t///Who knows?\n\t\t///</summary>\n\t\tDlg_Laika_1809,\n\t\t///<summary>\n\t\t///Marcus, Apollo, look behind you!\n\t\t///</summary>\n\t\tDlg_Laika_1900,\n\t\t///<summary>\n\t\t///Ahm, so I’m guessing negotiations failed.\n\t\t///</summary>\n\t\tDlg_Laika_1901,\n\t\t///<summary>\n\t\t///They let their own Trade station explode?\n\t\t///</summary>\n\t\tDlg_Laika_1902,\n\t\t///<summary>\n\t\t///Why didn’t they send some engineers to disarm it?\n\t\t///</summary>\n\t\tDlg_Laika_1903,\n\t\t///<summary>\n\t\t///I’m guessing catching us is more important. The question is why?\n\t\t///</summary>\n\t\tDlg_Laika_1904,\n\t\t///<summary>\n\t\t///Apollo. The data you got. Does it lead anywhere?\n\t\t///</summary>\n\t\tDlg_Laika_1905,\n\t\t///<summary>\n\t\t///I seem to have two clues.\n\t\t///</summary>\n\t\tDlg_Laika_1906,\n\t\t///<summary>\n\t\t///A name of some scientist, Thomas Barth…\n\t\t///</summary>\n\t\tDlg_Laika_1907,\n\t\t///<summary>\n\t\t///And coordinates of a base located within Damien Dust Field.\n\t\t///</summary>\n\t\tDlg_Laika_1908,\n\t\t///<summary>\n\t\t///Thomas Barth?\n\t\t///</summary>\n\t\tDlg_Laika_1909,\n\t\t///<summary>\n\t\t///You know him? This Barth guy?\n\t\t///</summary>\n\t\tDlg_Laika_1910,\n\t\t///<summary>\n\t\t///Sure! I’m setting the course right now.\n\t\t///</summary>\n\t\tDlg_Laika_1911,\n\t\t///<summary>\n\t\t///I hope you like him. I’ll tell you more on the way.\n\t\t///</summary>\n\t\tDlg_Laika_1912,\n\t\t///<summary>\n\t\t///I still can’t believe he’s gone.\n\t\t///</summary>\n\t\tDlg_Rift_2000,\n\t\t///<summary>\n\t\t///I know. But the best thing we can do is to finish what we started… Together.\n\t\t///</summary>\n\t\tDlg_Rift_2001,\n\t\t///<summary>\n\t\t///Continue with this insane adventure? Lose more people?\n\t\t///</summary>\n\t\tDlg_Rift_2002,\n\t\t///<summary>\n\t\t///So next time it’s you, or Tarja, or Valentin, or me?\n\t\t///</summary>\n\t\tDlg_Rift_2003,\n\t\t///<summary>\n\t\t///Madelyn, calm down. We all chose this path voluntarily.\n\t\t///</summary>\n\t\tDlg_Rift_2004,\n\t\t///<summary>\n\t\t///Marcus knew about the risks, just like we did.\n\t\t///</summary>\n\t\tDlg_Rift_2005,\n\t\t///<summary>\n\t\t///I… I know, just… ok, let’s go on.\n\t\t///</summary>\n\t\tDlg_Rift_2007,\n\t\t///<summary>\n\t\t///Apollo, head to the coordinates I just sent you.\n\t\t///</summary>\n\t\tDlg_Rift_2008,\n\t\t///<summary>\n\t\t///On my way. And… Madelyn? Thanks.\n\t\t///</summary>\n\t\tDlg_Rift_2009,\n\t\t///<summary>\n\t\t///Rime! The heart of the OmniCorp! \n\t\t///</summary>\n\t\tDlg_Rime_0101,\n\t\t///<summary>\n\t\t///This guy we’re after, this Francis Reef…\n\t\t///</summary>\n\t\tDlg_Rime_0102,\n\t\t///<summary>\n\t\t///Yeah?\n\t\t///</summary>\n\t\tDlg_Rime_0103,\n\t\t///<summary>\n\t\t///Madelyn, you have some more info on him?\n\t\t///</summary>\n\t\tDlg_Rime_0104,\n\t\t///<summary>\n\t\t///Not much. Classified OC personnel, 2nd security circle.\n\t\t///</summary>\n\t\tDlg_Rime_0105,\n\t\t///<summary>\n\t\t///Employee file says: Francis Reef, born 2045, OmniCorp citizen,\n\t\t///</summary>\n\t\tDlg_Rime_0106,\n\t\t///<summary>\n\t\t///…Assistant Director of Research and Development. \n\t\t///</summary>\n\t\tDlg_Rime_0107,\n\t\t///<summary>\n\t\t///No other data in the channels I checked. \n\t\t///</summary>\n\t\tDlg_Rime_0108,\n\t\t///<summary>\n\t\t///The OmniCorp guys must keep a close eye on him. \n\t\t///</summary>\n\t\tDlg_Rime_0109,\n\t\t///<summary>\n\t\t///Time to chat him up. Head to the Research Quadrant. \n\t\t///</summary>\n\t\tDlg_Rime_0110,\n\t\t///<summary>\n\t\t///Research Quadrant?\n\t\t///</summary>\n\t\tDlg_Rime_0111,\n\t\t///<summary>\n\t\t///First time in Rime, Valentin?\n\t\t///</summary>\n\t\tDlg_Rime_0112,\n\t\t///<summary>\n\t\t///OmniCorp is divided into four parts, like four segments of a huge… donut. \n\t\t///</summary>\n\t\tDlg_Rime_0113,\n\t\t///<summary>\n\t\t///A quarter of this big-ass bitch is a research department?\n\t\t///</summary>\n\t\tDlg_Rime_0114,\n\t\t///<summary>\n\t\t///Kind of. I was stuck in here for months once, doing some errands for a client.\n\t\t///</summary>\n\t\tDlg_Rime_0115,\n\t\t///<summary>\n\t\t///Interesting city. \n\t\t///</summary>\n\t\tDlg_Rime_0116,\n\t\t///<summary>\n\t\t///Looks sterile from the outside, but has its “underbelly” –\n\t\t///</summary>\n\t\tDlg_Rime_0117,\n\t\t///<summary>\n\t\t///bars, casinos, “houses of ill repute”. \n\t\t///</summary>\n\t\tDlg_Rime_0118,\n\t\t///<summary>\n\t\t///I don’t think we’re going to have time for that\n\t\t///</summary>\n\t\tDlg_Rime_0119,\n\t\t///<summary>\n\t\t///Don’t underestimate OC officials.\n\t\t///</summary>\n\t\tDlg_Rime_0120,\n\t\t///<summary>\n\t\t///Like the city, they look sterile and proper from the outside, but underneath… \n\t\t///</summary>\n\t\tDlg_Rime_0121,\n\t\t///<summary>\n\t\t///I get what you’re saying. \n\t\t///</summary>\n\t\tDlg_Rime_0122,\n\t\t///<summary>\n\t\t///Huge and pathetic. We must be in Russia!\n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1000,\n\t\t///<summary>\n\t\t///Thanks for reminding me. The sooner we finish this, the sooner we can leave.\n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1001,\n\t\t///<summary>\n\t\t///So what’s the plan? Just fly there, shoot everything, plant the detector, and scram? \n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1002,\n\t\t///<summary>\n\t\t///Sort of…\n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1003,\n\t\t///<summary>\n\t\t///Tarja, if you say, “Aye, matey”, I’m going to have to kill you.\n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1004,\n\t\t///<summary>\n\t\t///This building is heavily guarded and full of turrets.\n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1005,\n\t\t///<summary>\n\t\t///We can’t just knock on the front door – see that side entrance? \n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1006,\n\t\t///<summary>\n\t\t///OK, got it. Tarja, Valentin: Let’s move in and place the detector fast. \n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1007,\n\t\t///<summary>\n\t\t///Roger that!\n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1008,\n\t\t///<summary>\n\t\t///The most important part of the base and you can access it from the backdoor.\n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1009,\n\t\t///<summary>\n\t\t///I don’t get the Russian mentality. \n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1010,\n\t\t///<summary>\n\t\t///Stay back! It’s highly radioactive!\n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1011,\n\t\t///<summary>\n\t\t///Not funny… Find the base entrance. Please, hurry, I’ve already shot down two guards. \n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1012,\n\t\t///<summary>\n\t\t///Now find a computer or security hub, hack it and send me back the broadcast frequency. \n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1013,\n\t\t///<summary>\n\t\t///I have to prepare the detector device so it will be compatible with the Russian signal. \n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1014,\n\t\t///<summary>\n\t\t///Clever! God, I hate Russian ships. So ugly and…\n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1015,\n\t\t///<summary>\n\t\t///Just shut up and shoot.\n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1016,\n\t\t///<summary>\n\t\t///Here it is! \n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1017,\n\t\t///<summary>\n\t\t///If it’s same security level as that nuclear generator, we’ll be back for tea at five! \n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1018,\n\t\t///<summary>\n\t\t///I can access the signal, but it seems encrypted. Madelyn?\n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1022,\n\t\t///<summary>\n\t\t///You’re right. It looks like advanced military coding.\n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1023,\n\t\t///<summary>\n\t\t///We don’t have a chance of decrypting it ourselves. \n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1024,\n\t\t///<summary>\n\t\t///Why would they…? Hold on…\n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1025,\n\t\t///<summary>\n\t\t///I just got a call. Some stranger is watching us. \n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1026,\n\t\t///<summary>\n\t\t///He wants to meet us. Here are his coordinates. \n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1027,\n\t\t///<summary>\n\t\t///Can we trust him? Who is he?\n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1028,\n\t\t///<summary>\n\t\t///He said he can help. That’s all.\n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1029,\n\t\t///<summary>\n\t\t///Well, then I guess he’s fine. \n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1030,\n\t\t///<summary>\n\t\t///Greetings, strangers! I have a deal to propose.\n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1031,\n\t\t///<summary>\n\t\t///Hey, what are you doing on our private channel?\n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1032,\n\t\t///<summary>\n\t\t///Speaking to you. I have information about code breaking… Isn’t that what you want?\n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1033,\n\t\t///<summary>\n\t\t///OK, so what do YOU want out of this?\n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1034,\n\t\t///<summary>\n\t\t///Just meet me here, we’ll discuss it personally. \n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1035,\n\t\t///<summary>\n\t\t///Welcome to my humble commode. My name is Volodia. \n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1036,\n\t\t///<summary>\n\t\t///Look at those shipboard screens: that is small part of your desired code. \n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1037,\n\t\t///<summary>\n\t\t///Do you wish to have the rest?\n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1038,\n\t\t///<summary>\n\t\t///Let’s make it quick: what do you want from us?\n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1039,\n\t\t///<summary>\n\t\t///Straightforward and lacking nonsense, I like this.\n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1040,\n\t\t///<summary>\n\t\t///You will steal some military items for me. \n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1041,\n\t\t///<summary>\n\t\t///This keeps getting better and better. \n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1042,\n\t\t///<summary>\n\t\t///Anything more specific than “military items”? \n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1043,\n\t\t///<summary>\n\t\t///Here, these are the coordinates. You will know when you get there.\n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1044,\n\t\t///<summary>\n\t\t///After you finish, I will send you more coordinates where we will meet.\n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1045,\n\t\t///<summary>\n\t\t///Hey, look at that! Isn’t that a nuke? \n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1046,\n\t\t///<summary>\n\t\t///Don’t touch it! Just take the cargo.\n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1047,\n\t\t///<summary>\n\t\t///Great! Meet me at the solar power plant. Try not to get blown up with that box on board! \n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1048,\n\t\t///<summary>\n\t\t///Ehm… So I guess you’ve been watching us the whole time?\n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1049,\n\t\t///<summary>\n\t\t///Call it “business insurance”.\n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1050,\n\t\t///<summary>\n\t\t///Who are you?\n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1051,\n\t\t///<summary>\n\t\t///Does it matter?\n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1052,\n\t\t///<summary>\n\t\t///Maybe I’ll just throw that stupid box of yours overboard and watch it fly away… \n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1053,\n\t\t///<summary>\n\t\t///And never learn the code… Think about it. What’s the problem, do you feel manipulated? \n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1054,\n\t\t///<summary>\n\t\t///A little bit… \n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1055,\n\t\t///<summary>\n\t\t///That’s because you ARE! \n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1056,\n\t\t///<summary>\n\t\t///We are all manipulated and it doesn’t matter on which side we’re standing. \n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1057,\n\t\t///<summary>\n\t\t///At least tell us: which side are you standing on? \n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1058,\n\t\t///<summary>\n\t\t///I don’t care about Russia, I don’t care about you. I’m on my own side.  \n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1059,\n\t\t///<summary>\n\t\t///Didn’t I tell you Russians are pathetic? \n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1060,\n\t\t///<summary>\n\t\t///Enough talk. Bring that cargo to me so we can all leave this sector. \n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1061,\n\t\t///<summary>\n\t\t///Here’s your cargo.\n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1062,\n\t\t///<summary>\n\t\t///And here is your code. \n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1063,\n\t\t///<summary>\n\t\t///One last question: are you… \n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1064,\n\t\t///<summary>\n\t\t///Red alert! Enemy mother ship approaching! Looks like government commando! \n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1065,\n\t\t///<summary>\n\t\t///Bliať! \n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1066,\n\t\t///<summary>\n\t\t///…a spy? \n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1067,\n\t\t///<summary>\n\t\t///This is the Federation guard. Sergei Romanov speaking. Surrender immediately!\n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1068,\n\t\t///<summary>\n\t\t///NEVER! Come on, comrades, show them we know how to fight! \n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1069,\n\t\t///<summary>\n\t\t///Engage the enemy! \n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1070,\n\t\t///<summary>\n\t\t///Oh… my… god… \n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1071,\n\t\t///<summary>\n\t\t///There’s too many of them!\n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1072,\n\t\t///<summary>\n\t\t///Keep your distance from that mother ship!\n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1073,\n\t\t///<summary>\n\t\t///We’ll try. Tarja, watch your back!\n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1074,\n\t\t///<summary>\n\t\t///Enough! Get back to the transmitter before another commando approaches. \n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1075,\n\t\t///<summary>\n\t\t///We don’t have much time. Let’s hope we have the right decryption. Watch out for turrets! \n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1076,\n\t\t///<summary>\n\t\t///If this doesn’t work, I swear I will find Volodia’s corpse and sell it for dog food!\n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1077,\n\t\t///<summary>\n\t\t///It’s working! \n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1078,\n\t\t///<summary>\n\t\t///Great, send the data back to me and find another hub to upload our signal data.\n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1079,\n\t\t///<summary>\n\t\t///Signal uploading!\n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1080,\n\t\t///<summary>\n\t\t///Now find the main room entrance. We have to place the device and start triangulating.\n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1081,\n\t\t///<summary>\n\t\t///No chance to get inside from here. There’s some kind of power field.\n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1082,\n\t\t///<summary>\n\t\t///We must find another way from inside. \n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1083,\n\t\t///<summary>\n\t\t///Here it is!\n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1084,\n\t\t///<summary>\n\t\t///Place the device on the transmitter.\n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1085,\n\t\t///<summary>\n\t\t///Done!\n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1086,\n\t\t///<summary>\n\t\t///…and working! Great job! Now, please return.\n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1087,\n\t\t///<summary>\n\t\t///There are still some power-plugged doors, we have to open them from a hub. \n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1088,\n\t\t///<summary>\n\t\t///We made it!\n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1089,\n\t\t///<summary>\n\t\t///Before you proceed with the placement of the last detector at EAC…\n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1092,\n\t\t///<summary>\n\t\t///…I suggest you get your brother out of prison.\n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1093,\n\t\t///<summary>\n\t\t///That’s not funny, Thomas. Why would you say such a thing? \n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1094,\n\t\t///<summary>\n\t\t///You haven’t watched the news lately?\n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1095,\n\t\t///<summary>\n\t\t///There was an interview with a man they claim killed all the people in New Landswick… \n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1096,\n\t\t///<summary>\n\t\t///…and blew up the peaceful Russian trade station Laika. \n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1097,\n\t\t///<summary>\n\t\t///You… you mean Marcus is alive? \n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1098,\n\t\t///<summary>\n\t\t///I am sure. I checked some black market data sources. \n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1099,\n\t\t///<summary>\n\t\t///Marcus Rainier is on the prisoners’ list at Reway, the toughest of EAC prisons. \n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1100,\n\t\t///<summary>\n\t\t///Sentenced to death, by the way. \n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1101,\n\t\t///<summary>\n\t\t///To be executed in about three or four days – the data is not clear on this point.\n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1102,\n\t\t///<summary>\n\t\t///So we might see the big boss again? \n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1103,\n\t\t///<summary>\n\t\t///Possibly. Just don’t try anything stupid like a direct assault on Reway. \n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1104,\n\t\t///<summary>\n\t\t///You can’t do this job on your own.\n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1105,\n\t\t///<summary>\n\t\t///I’m… guessing you already have a plan, right? \n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1106,\n\t\t///<summary>\n\t\t///Meet Colonel von Stauffenberg in Reichstag. He is your key to freeing Marcus.\n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1107,\n\t\t///<summary>\n\t\t///You’re suggesting we ally ourselves with the Nazis?\n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1108,\n\t\t///<summary>\n\t\t///Reichists. Yes. The end is more important than the means – at least in this case. \n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1109,\n\t\t///<summary>\n\t\t///What in God’s name will von Stauffenberg want from us in return? \n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1110,\n\t\t///<summary>\n\t\t///I don’t think God’s name will enter into it.\n\t\t///</summary>\n\t\tDlg_RussianTransmitter_1111,\n\t\t///<summary>\n\t\t///This should be it. Reef’s residence.\n\t\t///</summary>\n\t\tDlg_Rime_0201,\n\t\t///<summary>\n\t\t///Shall we knock on the–\n\t\t///</summary>\n\t\tDlg_Rime_0202,\n\t\t///<summary>\n\t\t///Greetings, gentlemen. \n\t\t///</summary>\n\t\tDlg_Rime_0203,\n\t\t///<summary>\n\t\t///My name is Francis Reef, Assistant Director of OC Research and Development.\n\t\t///</summary>\n\t\tDlg_Rime_0204,\n\t\t///<summary>\n\t\t///What exactly brings you to pay me a visit?\n\t\t///</summary>\n\t\tDlg_Rime_0205,\n\t\t///<summary>\n\t\t///We need a genius technician. Maybe you know of one.\n\t\t///</summary>\n\t\tDlg_Rime_0206,\n\t\t///<summary>\n\t\t///Someone able to construct a metal detector…\n\t\t///</summary>\n\t\tDlg_Rime_0207,\n\t\t///<summary>\n\t\t///…for a substance far beyond the knowledge of modern science. \n\t\t///</summary>\n\t\tDlg_Rime_0208,\n\t\t///<summary>\n\t\t///Hm… And what does this technician get in return?\n\t\t///</summary>\n\t\tDlg_Rime_0209,\n\t\t///<summary>\n\t\t///The thrill of being the first person ever to experiment with an alien substance. \n\t\t///</summary>\n\t\tDlg_Rime_0210,\n\t\t///<summary>\n\t\t///I need to think this out. You’re mercenaries, I take it?\n\t\t///</summary>\n\t\tDlg_Rime_0211,\n\t\t///<summary>\n\t\t///We prefer the term freelancer. \n\t\t///</summary>\n\t\tDlg_Rime_0212,\n\t\t///<summary>\n\t\t///Ok. Here’s the deal. You do me a favor, I’ll do you a favor.\n\t\t///</summary>\n\t\tDlg_Rime_0213,\n\t\t///<summary>\n\t\t///Or let’s just say – you need to convince me you’re not just low-level pirates. \n\t\t///</summary>\n\t\tDlg_Rime_0214,\n\t\t///<summary>\n\t\t///You want an exceptional scientist for an extraordinary task? \n\t\t///</summary>\n\t\tDlg_Rime_0216,\n\t\t///<summary>\n\t\t///Fine, but I work only with other exceptional people. \n\t\t///</summary>\n\t\tDlg_Rime_0217,\n\t\t///<summary>\n\t\t///What’s this favor?\n\t\t///</summary>\n\t\tDlg_Rime_0218,\n\t\t///<summary>\n\t\t///I have a “political” opponent in the company hierarchy. Jim Raynolds.\n\t\t///</summary>\n\t\tDlg_Rime_0219,\n\t\t///<summary>\n\t\t///He is attracting a great deal of cash for his campaign. And he hates me.\n\t\t///</summary>\n\t\tDlg_Rime_0220,\n\t\t///<summary>\n\t\t///Why is not important. But I need something on him. \n\t\t///</summary>\n\t\tDlg_Rime_0221,\n\t\t///<summary>\n\t\t///All the private detectives I’ve hired have found nothing. \n\t\t///</summary>\n\t\tDlg_Rime_0222,\n\t\t///<summary>\n\t\t///If I am to advance in my career, I need to be able to blackmail Raynolds. \n\t\t///</summary>\n\t\tDlg_Rime_0223,\n\t\t///<summary>\n\t\t///What – you want us to kidnap his wife and daughter?\n\t\t///</summary>\n\t\tDlg_Rime_0224,\n\t\t///<summary>\n\t\t///Nothing that… personal. \n\t\t///</summary>\n\t\tDlg_Rime_0225,\n\t\t///<summary>\n\t\t///There is a large underground supply of illegal alcohol in Rime. \n\t\t///</summary>\n\t\tDlg_Rime_0226,\n\t\t///<summary>\n\t\t///That means tax evasion, to the tune of millions of credits a month.  \n\t\t///</summary>\n\t\tDlg_Rime_0227,\n\t\t///<summary>\n\t\t///In the industrial quadrant there’s a place called the Duplex bar.\n\t\t///</summary>\n\t\tDlg_Rime_0228,\n\t\t///<summary>\n\t\t///It definitely has some connection to the black market.\n\t\t///</summary>\n\t\tDlg_Rime_0229,\n\t\t///<summary>\n\t\t///Go there, keep your eyes open. Track the source of the alcohol.\n\t\t///</summary>\n\t\tDlg_Rime_0230,\n\t\t///<summary>\n\t\t///Then… steal as many cargo boxes of it as you can.\n\t\t///</summary>\n\t\tDlg_Rime_0231,\n\t\t///<summary>\n\t\t///Drop them inside Raynolds’s diplomatic vessel. That’s it. I’ll take care of the rest.\n\t\t///</summary>\n\t\tDlg_Rime_0232,\n\t\t///<summary>\n\t\t///Hmm, that monologue was cued up for quite some time.\n\t\t///</summary>\n\t\tDlg_Rime_0233,\n\t\t///<summary>\n\t\t///Ok, we’re on it. \n\t\t///</summary>\n\t\tDlg_Rime_0234,\n\t\t///<summary>\n\t\t///Mr. Reef, check the data I just transmitted you. You might find it… interesting. \n\t\t///</summary>\n\t\tDlg_Rime_0235,\n\t\t///<summary>\n\t\t///Very well. \n\t\t///</summary>\n\t\tDlg_Rime_0236,\n\t\t///<summary>\n\t\t///What a lovely place! Reconsidering your vacation plans?\n\t\t///</summary>\n\t\tDlg_SlaverBase2_01_01,\n\t\t///<summary>\n\t\t///Let’s give this place a facelift! Guys, load up your guns!\n\t\t///</summary>\n\t\tDlg_SlaverBase2_01_02,\n\t\t///<summary>\n\t\t///First, you have to completely destroy their air defense. Keep a safe distance.\n\t\t///</summary>\n\t\tDlg_SlaverBase2_02_01,\n\t\t///<summary>\n\t\t///Let’s see who can destroy the most turrets in the shortest time!\n\t\t///</summary>\n\t\tDlg_SlaverBase2_02_02,\n\t\t///<summary>\n\t\t///You already lost…\n\t\t///</summary>\n\t\tDlg_SlaverBase2_02_03,\n\t\t///<summary>\n\t\t///Oy! Stop shooting! You can voluntarily surrender!\n\t\t///</summary>\n\t\tDlg_SlaverBase2_03_01,\n\t\t///<summary>\n\t\t///What’s Option B?\n\t\t///</summary>\n\t\tDlg_SlaverBase2_03_02,\n\t\t///<summary>\n\t\t///We can tear your ships apart and sell them for scrap metal…\n\t\t///</summary>\n\t\tDlg_SlaverBase2_03_03,\n\t\t///<summary>\n\t\t///We’ll go with Option C!\n\t\t///</summary>\n\t\tDlg_SlaverBase2_03_04,\n\t\t///<summary>\n\t\t///Unleash the dogs! \n\t\t///</summary>\n\t\tDlg_SlaverBase2_03_05,\n\t\t///<summary>\n\t\t///Now we have to unlock the cells. Find the hubs at slaver headquarters.\n\t\t///</summary>\n\t\tDlg_SlaverBase2_04_01,\n\t\t///<summary>\n\t\t///Copy that!\n\t\t///</summary>\n\t\tDlg_SlaverBase2_04_02,\n\t\t///<summary>\n\t\t///Now go do the second one. \n\t\t///</summary>\n\t\tDlg_SlaverBase2_05_03,\n\t\t///<summary>\n\t\t///Now we can free the prisoners!\n\t\t///</summary>\n\t\tDlg_SlaverBase2_06_01,\n\t\t///<summary>\n\t\t///Not yet. See those power grids? They’re still working. \n\t\t///</summary>\n\t\tDlg_SlaverBase2_06_02,\n\t\t///<summary>\n\t\t///I guess we only unlocked the first level of security. \n\t\t///</summary>\n\t\tDlg_SlaverBase2_06_03,\n\t\t///<summary>\n\t\t///Right. But my scanners can’t find any other hub.\n\t\t///</summary>\n\t\tDlg_SlaverBase2_06_04,\n\t\t///<summary>\n\t\t///We don’t need a hub. Where’s the generator? No power – no grids. \n\t\t///</summary>\n\t\tDlg_SlaverBase2_06_05,\n\t\t///<summary>\n\t\t///Clever boy!\n\t\t///</summary>\n\t\tDlg_SlaverBase2_06_06,\n\t\t///<summary>\n\t\t///The generator. Let’s cook it up!\n\t\t///</summary>\n\t\tDlg_SlaverBase2_07_01,\n\t\t///<summary>\n\t\t///Fried or mashed?\n\t\t///</summary>\n\t\tDlg_SlaverBase2_07_02,\n\t\t///<summary>\n\t\t///Both.\n\t\t///</summary>\n\t\tDlg_SlaverBase2_07_03,\n\t\t///<summary>\n\t\t///No other security systems detected. The prisoners are free!\n\t\t///</summary>\n\t\tDlg_SlaverBase2_08_01,\n\t\t///<summary>\n\t\t///I love being the good guy.\n\t\t///</summary>\n\t\tDlg_SlaverBase2_08_02,\n\t\t///<summary>\n\t\t///We need to evacuate everyone. Have you seen any transports? \n\t\t///</summary>\n\t\tDlg_SlaverBase2_08_03,\n\t\t///<summary>\n\t\t///Only two. Not enough for everybody, but I’m sure the Templars will send more. \n\t\t///</summary>\n\t\tDlg_SlaverBase2_08_04,\n\t\t///<summary>\n\t\t///We just need to physically open all the prison cells.\n\t\t///</summary>\n\t\tDlg_SlaverBase2_08_05,\n\t\t///<summary>\n\t\t///First prisoner cell unlocked!\n\t\t///</summary>\n\t\tDlg_SlaverBase2_09_01,\n\t\t///<summary>\n\t\t///Second prisoner cell open. These guys are free to go. \n\t\t///</summary>\n\t\tDlg_SlaverBase2_10_01,\n\t\t///<summary>\n\t\t///I already sent a message to the Templars. \n\t\t///</summary>\n\t\tDlg_SlaverBase2_10_02,\n\t\t///<summary>\n\t\t///They’re sending transport ships to pick them up. \n\t\t///</summary>\n\t\tDlg_SlaverBase2_10_03,\n\t\t///<summary>\n\t\t///Third prisoner cell unlocked. \n\t\t///</summary>\n\t\tDlg_SlaverBase2_11_01,\n\t\t///<summary>\n\t\t///Two more remaining. \n\t\t///</summary>\n\t\tDlg_SlaverBase2_11_02,\n\t\t///<summary>\n\t\t///Fourth prisoner group is free. One more and we’re done here. \n\t\t///</summary>\n\t\tDlg_SlaverBase2_12_01,\n\t\t///<summary>\n\t\t///Final cell open. That was it. We’ve unlocked all of them. \n\t\t///</summary>\n\t\tDlg_SlaverBase2_13_01,\n\t\t///<summary>\n\t\t///Now what? We’re supposed to leave these poor people here to fend for themselves?\n\t\t///</summary>\n\t\tDlg_SlaverBase2_13_02,\n\t\t///<summary>\n\t\t///They can make it out on their own and wait for the Templar transports.\n\t\t///</summary>\n\t\tDlg_SlaverBase2_13_03,\n\t\t///<summary>\n\t\t///Madelyn, am I right?\n\t\t///</summary>\n\t\tDlg_SlaverBase2_13_04,\n\t\t///<summary>\n\t\t///Confirmed. \n\t\t///</summary>\n\t\tDlg_SlaverBase2_13_05,\n\t\t///<summary>\n\t\t///Everyone should be safe for now. \n\t\t///</summary>\n\t\tDlg_SlaverBase2_13_06,\n\t\t///<summary>\n\t\t///There aren’t many slavers left here, at least till their reinforcements arrive.\n\t\t///</summary>\n\t\tDlg_SlaverBase2_13_07,\n\t\t///<summary>\n\t\t///Guys! The first Templar transport ships confirmed their arrival within several minutes.\n\t\t///</summary>\n\t\tDlg_SlaverBase2_13_08,\n\t\t///<summary>\n\t\t///They even have some escort ships with them.\n\t\t///</summary>\n\t\tDlg_SlaverBase2_13_09,\n\t\t///<summary>\n\t\t///We’re fine, then. Mission successful. Let’s get back to Valiant and collect our reward.\n\t\t///</summary>\n\t\tDlg_SlaverBase2_13_10,\n\t\t///<summary>\n\t\t///Majestic Fort Valiant! Right before our very eyes!\n\t\t///</summary>\n\t\tDlg_FortValiantA_0100,\n\t\t///<summary>\n\t\t///I’ve always dreamt of being a knight. Rescuing dragons, slaying princesses…\n\t\t///</summary>\n\t\tDlg_FortValiantA_0101,\n\t\t///<summary>\n\t\t///Sounds like you had a plan!\n\t\t///</summary>\n\t\tDlg_FortValiantA_0102,\n\t\t///<summary>\n\t\t///Okay, back to reality: Any idea who we should talk to about the artifact?\n\t\t///</summary>\n\t\tDlg_FortValiantA_0103,\n\t\t///<summary>\n\t\t///We need to meet with high-ranking Templar officials and that won’t be easy. \n\t\t///</summary>\n\t\tDlg_FortValiantA_0104,\n\t\t///<summary>\n\t\t///Impossible might be a better word.\n\t\t///</summary>\n\t\tDlg_FortValiantA_0105,\n\t\t///<summary>\n\t\t///So what do you suggest, guys?\n\t\t///</summary>\n\t\tDlg_FortValiantA_0106,\n\t\t///<summary>\n\t\t///Hm… asking at the gates, maybe?\n\t\t///</summary>\n\t\tDlg_FortValiantA_0107,\n\t\t///<summary>\n\t\t///What would we do without you, Madelyn?\n\t\t///</summary>\n\t\tDlg_FortValiantA_0108,\n\t\t///<summary>\n\t\t///Templars hire contractors to do dirty work for them. \n\t\t///</summary>\n\t\tDlg_FortValiantA_0109,\n\t\t///<summary>\n\t\t///You know – hunting down pirates and slavers. \n\t\t///</summary>\n\t\tDlg_FortValiantA_0110,\n\t\t///<summary>\n\t\t///Do one or two jobs for them…\n\t\t///</summary>\n\t\tDlg_FortValiantA_0111,\n\t\t///<summary>\n\t\t///…and we might get a step closer to a meeting with the patriarchs.\n\t\t///</summary>\n\t\tDlg_FortValiantA_0112,\n\t\t///<summary>\n\t\t///That… would take some time. But at least it’s a plan. \n\t\t///</summary>\n\t\tDlg_FortValiantA_0113,\n\t\t///<summary>\n\t\t///And besides meeting with the higher-ups…\n\t\t///</summary>\n\t\tDlg_FortValiantA_0114,\n\t\t///<summary>\n\t\t///…we can get our hands on some cash as well and some cool Templar gadgets.\n\t\t///</summary>\n\t\tDlg_FortValiantA_0115,\n\t\t///<summary>\n\t\t///Hail visitors! Please, state the nature of your business.\n\t\t///</summary>\n\t\tDlg_FortValiantA_0200,\n\t\t///<summary>\n\t\t///We are mercenaries. Offering services for good cause at decent rates.\n\t\t///</summary>\n\t\tDlg_FortValiantA_0201,\n\t\t///<summary>\n\t\t///Acknowledged. \n\t\t///</summary>\n\t\tDlg_FortValiantA_0202,\n\t\t///<summary>\n\t\t///Proceed to the Hall of Swords and meet with Captain Cedric of the Protectors division. \n\t\t///</summary>\n\t\tDlg_FortValiantA_0203,\n\t\t///<summary>\n\t\t///Much gratitude, my friend! \n\t\t///</summary>\n\t\tDlg_FortValiantA_0204,\n\t\t///<summary>\n\t\t///Greetings. You are the new recruits?\n\t\t///</summary>\n\t\tDlg_FortValiantA_0300,\n\t\t///<summary>\n\t\t///Independent contractors. \n\t\t///</summary>\n\t\tDlg_FortValiantA_0301,\n\t\t///<summary>\n\t\t///Good, good. We have several problems in remote sectors which…\n\t\t///</summary>\n\t\tDlg_FortValiantA_0302,\n\t\t///<summary>\n\t\t///…for regulous reasons we cannot handle with our regular troops.\n\t\t///</summary>\n\t\tDlg_FortValiantA_0303,\n\t\t///<summary>\n\t\t///Recently, there have been numerous slaver raids in the asteroid fields around…\n\t\t///</summary>\n\t\tDlg_FortValiantA_0304,\n\t\t///<summary>\n\t\t///…sector Z7 of the Jupiter belt.\n\t\t///</summary>\n\t\tDlg_FortValiantA_0305,\n\t\t///<summary>\n\t\t///We have the rumored location of a slaver base. If you accept this assignment, …\n\t\t///</summary>\n\t\tDlg_FortValiantA_0306,\n\t\t///<summary>\n\t\t///…you will travel there, put a stop to the slavers’ vicious activity and free the captives.\n\t\t///</summary>\n\t\tDlg_FortValiantA_0307,\n\t\t///<summary>\n\t\t///Peacefully or forcefully, it is your prerogative.\n\t\t///</summary>\n\t\tDlg_FortValiantA_0308,\n\t\t///<summary>\n\t\t///And the reward?\n\t\t///</summary>\n\t\tDlg_FortValiantA_0309,\n\t\t///<summary>\n\t\t///Depends on how much… “work” is required. \n\t\t///</summary>\n\t\tDlg_FortValiantA_0310,\n\t\t///<summary>\n\t\t///The range is 5–15 thousand credits for each of you.\n\t\t///</summary>\n\t\tDlg_FortValiantA_0311,\n\t\t///<summary>\n\t\t///Agreed. \n\t\t///</summary>\n\t\tDlg_FortValiantA_0312,\n\t\t///<summary>\n\t\t///Excellent. I am transmitting the coordinates to you. Once you are done…\n\t\t///</summary>\n\t\tDlg_FortValiantA_0313,\n\t\t///<summary>\n\t\t///…return to me for the reward, as well as further tasks if mutually agreed upon.\n\t\t///</summary>\n\t\tDlg_FortValiantA_0314,\n\t\t///<summary>\n\t\t///Understood. Farewell, then, Captain…?\n\t\t///</summary>\n\t\tDlg_FortValiantA_0315,\n\t\t///<summary>\n\t\t///Cedric. Farewell, and may God smile upon your mission!\n\t\t///</summary>\n\t\tDlg_FortValiantA_0316,\n\t\t///<summary>\n\t\t///Ok, guys. Whenever you’re ready, jump in!\n\t\t///</summary>\n\t\tDlg_FortValiantA_0317,\n\t\t///<summary>\n\t\t///But you might want to think about buying some supplies and ammo here at Valiant.\n\t\t///</summary>\n\t\tDlg_FortValiantA_0318,\n\t\t///<summary>\n\t\t///The Templars should have a pretty mean selection of goods.\n\t\t///</summary>\n\t\tDlg_FortValiantA_0319,\n\t\t///<summary>\n\t\t///As far as I know, most of their really cool stuff is only for members of the Order. \n\t\t///</summary>\n\t\tDlg_FortValiantA_0320,\n\t\t///<summary>\n\t\t///Not available to us. At least for now. \n\t\t///</summary>\n\t\tDlg_FortValiantA_0321,\n\t\t///<summary>\n\t\t///At least legally.\n\t\t///</summary>\n\t\tDlg_FortValiantA_0322,\n\t\t///<summary>\n\t\t///Never mind, then. Just check out the vendors. \n\t\t///</summary>\n\t\tDlg_FortValiantA_0323,\n\t\t///<summary>\n\t\t///The basic stuff should be readily available from them.\n\t\t///</summary>\n\t\tDlg_FortValiantA_0324,\n\t\t///<summary>\n\t\t///We might get to the specialty items later, once we earn the Templars’ confidence.  \n\t\t///</summary>\n\t\tDlg_FortValiantA_0325,\n\t\t///<summary>\n\t\t///Here we are. I suggest heading straight to Captain Cedric for debriefing and some cash.\n\t\t///</summary>\n\t\tDlg_FortValiantB_0100,\n\t\t///<summary>\n\t\t///Right. On our way.\n\t\t///</summary>\n\t\tDlg_FortValiantB_0101,\n\t\t///<summary>\n\t\t///Oh, and try to find a subtle way to ask about a permit to buy more advanced equipment. \n\t\t///</summary>\n\t\tDlg_FortValiantB_0102,\n\t\t///<summary>\n\t\t///Greetings! Welcome to Valiant again! \n\t\t///</summary>\n\t\tDlg_FortValiantB_0201,\n\t\t///<summary>\n\t\t///I’ve seen the mission report you sent. Excellent results! \n\t\t///</summary>\n\t\tDlg_FortValiantB_0202,\n\t\t///<summary>\n\t\t///Sad you couldn’t resolve it in a peaceful way – but still, well done! \n\t\t///</summary>\n\t\tDlg_FortValiantB_0203,\n\t\t///<summary>\n\t\t///I have ordered a cash transfer of 10,000 credits to each of you. \n\t\t///</summary>\n\t\tDlg_FortValiantB_0204,\n\t\t///<summary>\n\t\t///By the way – can we get our mitts on a Templar supplementary license?\n\t\t///</summary>\n\t\tDlg_FortValiantB_0205,\n\t\t///<summary>\n\t\t///Assuming you join us in our campaign toward protecting interstellar justice! \n\t\t///</summary>\n\t\tDlg_FortValiantB_0207,\n\t\t///<summary>\n\t\t///Just sign this document and… \n\t\t///</summary>\n\t\tDlg_FortValiantB_0208,\n\t\t///<summary>\n\t\t///…signed…\n\t\t///</summary>\n\t\tDlg_FortValiantB_0209,\n\t\t///<summary>\n\t\t///Fine! \n\t\t///</summary>\n\t\tDlg_FortValiantB_0210,\n\t\t///<summary>\n\t\t///Now, as fellow believers, you have access to specialized Templar supplies and equipment.\n\t\t///</summary>\n\t\tDlg_FortValiantB_0211,\n\t\t///<summary>\n\t\t///It’s not everything our Order has to offer, but considering you are such new members…\n\t\t///</summary>\n\t\tDlg_FortValiantB_0212,\n\t\t///<summary>\n\t\t///…you should be amazed!\n\t\t///</summary>\n\t\tDlg_FortValiantB_0213,\n\t\t///<summary>\n\t\t///So! Are you eager for another assignment?\n\t\t///</summary>\n\t\tDlg_FortValiantB_0214,\n\t\t///<summary>\n\t\t///Sure!\n\t\t///</summary>\n\t\tDlg_FortValiantB_0215,\n\t\t///<summary>\n\t\t///Sure…\n\t\t///</summary>\n\t\tDlg_FortValiantB_0216,\n\t\t///<summary>\n\t\t///Then here it is. It’s… an another slaver base wipeout!\n\t\t///</summary>\n\t\tDlg_FortValiantB_0217,\n\t\t///<summary>\n\t\t///Great!\n\t\t///</summary>\n\t\tDlg_FortValiantB_0218,\n\t\t///<summary>\n\t\t///Great…\n\t\t///</summary>\n\t\tDlg_FortValiantB_0219,\n\t\t///<summary>\n\t\t///If you’re interested, just use the coordinates I’ve transmitted. \n\t\t///</summary>\n\t\tDlg_FortValiantB_0220,\n\t\t///<summary>\n\t\t///Payment as usual, based on your mission report. And… good luck!\n\t\t///</summary>\n\t\tDlg_FortValiantB_0221,\n\t\t///<summary>\n\t\t///Ok, guys, you know the drill. Meet me at the docks when you’re ready to head out. \n\t\t///</summary>\n\t\tDlg_FortValiantB_0222,\n\t\t///<summary>\n\t\t///But first, check out those new supplies and equipment.  \n\t\t///</summary>\n\t\tDlg_FortValiantB_0223,\n\t\t///<summary>\n\t\t///One more thing. Captain Cedric?\n\t\t///</summary>\n\t\tDlg_FortValiantB_0224,\n\t\t///<summary>\n\t\t///I’m all ears!\n\t\t///</summary>\n\t\tDlg_FortValiantB_0225,\n\t\t///<summary>\n\t\t///We need you to arrange a meeting for us with high-ranking Templar officials. \n\t\t///</summary>\n\t\tDlg_FortValiantB_0226,\n\t\t///<summary>\n\t\t///We have some important matters to discuss. \n\t\t///</summary>\n\t\tDlg_FortValiantB_0227,\n\t\t///<summary>\n\t\t///You mean the patriarchs? That… won’t be easy. But…\n\t\t///</summary>\n\t\tDlg_FortValiantB_0228,\n\t\t///<summary>\n\t\t///…if you do well on this mission, I’ll recommend you for an audience.\n\t\t///</summary>\n\t\tDlg_FortValiantB_0229,\n\t\t///<summary>\n\t\t///When you get back, I’ll let you know whether I succeeded. \n\t\t///</summary>\n\t\tDlg_FortValiantB_0230,\n\t\t///<summary>\n\t\t///These are the right coordinates. This must be the slaver base Cedric spoke about.\n\t\t///</summary>\n\t\tDlg_SlaverBase_01_01,\n\t\t///<summary>\n\t\t///Does it make any sense to negotiate?\n\t\t///</summary>\n\t\tDlg_SlaverBase_01_02,\n\t\t///<summary>\n\t\t///I doubt it. We can try, but…\n\t\t///</summary>\n\t\tDlg_SlaverBase_01_03,\n\t\t///<summary>\n\t\t///Our plan, then?\n\t\t///</summary>\n\t\tDlg_SlaverBase_01_06,\n\t\t///<summary>\n\t\t///Destroy the generators first, to cut the turrets off from the energy supply. \n\t\t///</summary>\n\t\tDlg_SlaverBase_01_07,\n\t\t///<summary>\n\t\t///Looks like they’ve still got functional backup batteries. \n\t\t///</summary>\n\t\tDlg_SlaverBase_02_01,\n\t\t///<summary>\n\t\t///We need to take care of those, too.\n\t\t///</summary>\n\t\tDlg_SlaverBase_02_02,\n\t\t///<summary>\n\t\t///Right. \n\t\t///</summary>\n\t\tDlg_SlaverBase_02_03,\n\t\t///<summary>\n\t\t///Most of the stationary defenses appear to be down. \n\t\t///</summary>\n\t\tDlg_SlaverBase_03_01,\n\t\t///<summary>\n\t\t///I suggest we proceed with rescuing the captives. \n\t\t///</summary>\n\t\tDlg_SlaverBase_03_02,\n\t\t///<summary>\n\t\t///We need to find the prison, or whatever they call it. \n\t\t///</summary>\n\t\tDlg_SlaverBase_03_03,\n\t\t///<summary>\n\t\t///Holy crap, there’s a lot of people locked up here. \n\t\t///</summary>\n\t\tDlg_SlaverBase_04_01,\n\t\t///<summary>\n\t\t///We need to break down these bars.\n\t\t///</summary>\n\t\tDlg_SlaverBase_04_02,\n\t\t///<summary>\n\t\t///God bless you! You are our saviors!\n\t\t///</summary>\n\t\tDlg_SlaverBase_05_01,\n\t\t///<summary>\n\t\t///Is that all of you? Are there any more captives being held?\n\t\t///</summary>\n\t\tDlg_SlaverBase_05_02,\n\t\t///<summary>\n\t\t///Not here in the base. But there’s a transport vessel with more prisoners loaded inside. \n\t\t///</summary>\n\t\tDlg_SlaverBase_05_03,\n\t\t///<summary>\n\t\t///You must save them!\n\t\t///</summary>\n\t\tDlg_SlaverBase_05_04,\n\t\t///<summary>\n\t\t///Where can we find this transport?\n\t\t///</summary>\n\t\tDlg_SlaverBase_05_05,\n\t\t///<summary>\n\t\t///It’s that large Reichist ship in the hangar.\n\t\t///</summary>\n\t\tDlg_SlaverBase_05_06,\n\t\t///<summary>\n\t\t///But the cargo bay was closed. We’ll have to hack the door control.\n\t\t///</summary>\n\t\tDlg_SlaverBase_05_07,\n\t\t///<summary>\n\t\t///Okay, the doors are open. Let’s free those captives.\n\t\t///</summary>\n\t\tDlg_SlaverBase_06_01,\n\t\t///<summary>\n\t\t///Thank god you came, I thought we would die here. \n\t\t///</summary>\n\t\tDlg_SlaverBase_07_01,\n\t\t///<summary>\n\t\t///Can any of you pilot that mothership?\n\t\t///</summary>\n\t\tDlg_SlaverBase_07_02,\n\t\t///<summary>\n\t\t///No, but there’s a little mine where they keep pilots captive. \n\t\t///</summary>\n\t\tDlg_SlaverBase_07_03,\n\t\t///<summary>\n\t\t///Looks like we have to rescue the pilots too. \n\t\t///</summary>\n\t\tDlg_SlaverBase_07_04,\n\t\t///<summary>\n\t\t///We’re grateful for the rescue, but there are others inside the prison.\n\t\t///</summary>\n\t\tDlg_SlaverBase_08_02,\n\t\t///<summary>\n\t\t///Yes, we know, we saved them already.\n\t\t///</summary>\n\t\tDlg_SlaverBase_08_03,\n\t\t///<summary>\n\t\t///We need you to transport them from the prison to Fourth Reich mothership…\n\t\t///</summary>\n\t\tDlg_SlaverBase_08_04,\n\t\t///<summary>\n\t\t///…and then get out of here.\n\t\t///</summary>\n\t\tDlg_SlaverBase_08_05,\n\t\t///<summary>\n\t\t///We’re just small-ship pilots. I don’t think any of us have ever flown something so large.\n\t\t///</summary>\n\t\tDlg_SlaverBase_08_06,\n\t\t///<summary>\n\t\t///I’m sure at least one of you can do it.\n\t\t///</summary>\n\t\tDlg_SlaverBase_08_07,\n\t\t///<summary>\n\t\t///Sure, piloting a mothership is not that different from piloting a fighter.\n\t\t///</summary>\n\t\tDlg_SlaverBase_08_08,\n\t\t///<summary>\n\t\t///I guess we don’t have any other choice.\n\t\t///</summary>\n\t\tDlg_SlaverBase_08_09,\n\t\t///<summary>\n\t\t///Guys, we have company.\n\t\t///</summary>\n\t\tDlg_SlaverBase_08_10,\n\t\t///<summary>\n\t\t///Go get the other prisoners, we’ll take care of these slavers.\n\t\t///</summary>\n\t\tDlg_SlaverBase_08_11,\n\t\t///<summary>\n\t\t///We’re ready, can you help us out? We need the hangar doors open.\n\t\t///</summary>\n\t\tDlg_SlaverBase_09_01,\n\t\t///<summary>\n\t\t///No problem.\n\t\t///</summary>\n\t\tDlg_SlaverBase_09_02,\n\t\t///<summary>\n\t\t///And off they go!\n\t\t///</summary>\n\t\tDlg_SlaverBase_10_01,\n\t\t///<summary>\n\t\t///Wow, this is fantastic. I never thought I’d pilot something of this size. \n\t\t///</summary>\n\t\tDlg_SlaverBase_10_02,\n\t\t///<summary>\n\t\t///Thank you, my friends, we owe you one. \n\t\t///</summary>\n\t\tDlg_SlaverBase_10_03,\n\t\t///<summary>\n\t\t///I remember when I piloted a mothership for the first time.\n\t\t///</summary>\n\t\tDlg_SlaverBase_10_04,\n\t\t///<summary>\n\t\t///And was it “fantastic”?\n\t\t///</summary>\n\t\tDlg_SlaverBase_10_05,\n\t\t///<summary>\n\t\t///Yeah. I crashed into the station after a few minutes.\n\t\t///</summary>\n\t\tDlg_SlaverBase_10_06,\n\t\t///<summary>\n\t\t///I thought you said piloting a mothership was easy?\n\t\t///</summary>\n\t\tDlg_SlaverBase_10_07,\n\t\t///<summary>\n\t\t///I lied.\n\t\t///</summary>\n\t\tDlg_SlaverBase_10_08,\n\t\t///<summary>\n\t\t///So, what now? Are they all going to die?\n\t\t///</summary>\n\t\tDlg_SlaverBase_10_09,\n\t\t///<summary>\n\t\t///No, I’m pretty sure everything on these new ships is automatic. \n\t\t///</summary>\n\t\tDlg_SlaverBase_10_10,\n\t\t///<summary>\n\t\t///…Pretty sure.\n\t\t///</summary>\n\t\tDlg_SlaverBase_10_11,\n\t\t///<summary>\n\t\t///Back to Cedric?\n\t\t///</summary>\n\t\tDlg_SlaverBase_11_01,\n\t\t///<summary>\n\t\t///Right away!\n\t\t///</summary>\n\t\tDlg_SlaverBase_11_02,\n\t\t///<summary>\n\t\t///Here we are. Wow! They didn’t waste any time!\n\t\t///</summary>\n\t\tDlg_EACPrison_0100,\n\t\t///<summary>\n\t\t///Epic! I’ve never seen anything like this.\n\t\t///</summary>\n\t\tDlg_EACPrison_0101,\n\t\t///<summary>\n\t\t///Hail, colleagues! Events transpired faster than we expected.\n\t\t///</summary>\n\t\tDlg_EACPrison_0102,\n\t\t///<summary>\n\t\t///As you can see, we are in the middle of a fight for Reway.\n\t\t///</summary>\n\t\tDlg_EACPrison_0103,\n\t\t///<summary>\n\t\t///What happened?\n\t\t///</summary>\n\t\tDlg_EACPrison_0104,\n\t\t///<summary>\n\t\t///An EAC fleet guarding Reway was reported to be moving away…\n\t\t///</summary>\n\t\tDlg_EACPrison_0105,\n\t\t///<summary>\n\t\t///…to handle some more important “issues”. This gave us an opportunity to attack immediately.\n\t\t///</summary>\n\t\tDlg_EACPrison_0106,\n\t\t///<summary>\n\t\t///We must be quick, otherwise there will be reinforcements.\n\t\t///</summary>\n\t\tDlg_EACPrison_0107,\n\t\t///<summary>\n\t\t///Do you have any assignments for us? \n\t\t///</summary>\n\t\tDlg_EACPrison_0108,\n\t\t///<summary>\n\t\t///Or do we just sneak in, disable the base defenses, and free my brother?\n\t\t///</summary>\n\t\tDlg_EACPrison_0109,\n\t\t///<summary>\n\t\t///That’s the plan. We have spec op forces assigned to liberate our prisoners\n\t\t///</summary>\n\t\tDlg_EACPrison_0110,\n\t\t///<summary>\n\t\t///Get inside as fast as you can, free your brother, and get out of there!\n\t\t///</summary>\n\t\tDlg_EACPrison_0111,\n\t\t///<summary>\n\t\t///You know this is the start of a war between EAC and FoR? Not just a rescue operation!\n\t\t///</summary>\n\t\tDlg_EACPrison_0112,\n\t\t///<summary>\n\t\t///We realize that. Still, we prefer this to be a hit-and-run attack. \n\t\t///</summary>\n\t\tDlg_EACPrison_0113,\n\t\t///<summary>\n\t\t///We will deal with the main EAC fleet later.\n\t\t///</summary>\n\t\tDlg_EACPrison_0114,\n\t\t///<summary>\n\t\t///Let’s go. Marcus is waiting.\n\t\t///</summary>\n\t\tDlg_EACPrison_0115,\n\t\t///<summary>\n\t\t///Shit, that was close! \n\t\t///</summary>\n\t\tDlg_EACPrison_0200,\n\t\t///<summary>\n\t\t///Keep moving, we’re almost there.\n\t\t///</summary>\n\t\tDlg_EACPrison_0201,\n\t\t///<summary>\n\t\t///You need to destroy the solar panels powering the security system…\n\t\t///</summary>\n\t\tDlg_EACPrison_0300,\n\t\t///<summary>\n\t\t///…otherwise it’ll be impossible to get inside!\n\t\t///</summary>\n\t\tDlg_EACPrison_0301,\n\t\t///<summary>\n\t\t///Almost done! \n\t\t///</summary>\n\t\tDlg_EACPrison_0302,\n\t\t///<summary>\n\t\t///Apollo, critical update. EAC reinforcements just arrived. Three motherships.\n\t\t///</summary>\n\t\tDlg_EACPrison_0400,\n\t\t///<summary>\n\t\t///One of our zeppelins, Schwalbe, is in trouble. Its aiming system is barely functioning.\n\t\t///</summary>\n\t\tDlg_EACPrison_0401,\n\t\t///<summary>\n\t\t///We cannot send any forces right now; our fighters are all engaged. Can you help them out?\n\t\t///</summary>\n\t\tDlg_EACPrison_0402,\n\t\t///<summary>\n\t\t///It won’t make life easier for us, but we’ll do what we can. \n\t\t///</summary>\n\t\tDlg_EACPrison_0403,\n\t\t///<summary>\n\t\t///Do you see that mothership, EAC Liberator? \n\t\t///</summary>\n\t\tDlg_EACPrison_0404,\n\t\t///<summary>\n\t\t///Their defense headquarters are located there. \n\t\t///</summary>\n\t\tDlg_EACPrison_0405,\n\t\t///<summary>\n\t\t///We need you to destroy Liberator’s communication module! \n\t\t///</summary>\n\t\tDlg_EACPrison_0406,\n\t\t///<summary>\n\t\t///Without Liberators’ lead, they’ll be lost! \n\t\t///</summary>\n\t\tDlg_EACPrison_0407,\n\t\t///<summary>\n\t\t///That’s a suicide mission! \n\t\t///</summary>\n\t\tDlg_EACPrison_0408,\n\t\t///<summary>\n\t\t///We’ll cover you.\n\t\t///</summary>\n\t\tDlg_EACPrison_0409,\n\t\t///<summary>\n\t\t///Thanks. Ok, let’s move!\n\t\t///</summary>\n\t\tDlg_EACPrison_0410,\n\t\t///<summary>\n\t\t///That did the trick! \n\t\t///</summary>\n\t\tDlg_EACPrison_0500,\n\t\t///<summary>\n\t\t///Great job. To all fighters: try to disengage and attack E.A.C. Liberator…\n\t\t///</summary>\n\t\tDlg_EACPrison_0501,\n\t\t///<summary>\n\t\t///…repeat: try to disengage and attack… (white noise)\n\t\t///</summary>\n\t\tDlg_EACPrison_0502,\n\t\t///<summary>\n\t\t///Let’s finish frying those solar panels.\n\t\t///</summary>\n\t\tDlg_EACPrison_0503,\n\t\t///<summary>\n\t\t///Security system disabled. Use the cargo bay to get inside the prison. \n\t\t///</summary>\n\t\tDlg_EACPrison_0600,\n\t\t///<summary>\n\t\t///And then? \n\t\t///</summary>\n\t\tDlg_EACPrison_0601,\n\t\t///<summary>\n\t\t///Hey, boss, I thought you had a plan!\n\t\t///</summary>\n\t\tDlg_EACPrison_0602,\n\t\t///<summary>\n\t\t///I do. We go in and Marcus comes out!\n\t\t///</summary>\n\t\tDlg_EACPrison_0603,\n\t\t///<summary>\n\t\t///I found several security hubs inside. Try to hack them and find a database of prisoners. \n\t\t///</summary>\n\t\tDlg_EACPrison_0604,\n\t\t///<summary>\n\t\t///Authentication required – crap!\n\t\t///</summary>\n\t\tDlg_EACPrison_0700,\n\t\t///<summary>\n\t\t///What kind of authentication?\n\t\t///</summary>\n\t\tDlg_EACPrison_0701,\n\t\t///<summary>\n\t\t///I don’t know. Retinal scan? I don’t understand these new models. \n\t\t///</summary>\n\t\tDlg_EACPrison_0702,\n\t\t///<summary>\n\t\t///Let’s hope it uses normal ID cards. Find one. \n\t\t///</summary>\n\t\tDlg_EACPrison_0703,\n\t\t///<summary>\n\t\t///So it DOES use cards. Relax, Tarja, we don’t have to scoop out any EAC eyeballs.\n\t\t///</summary>\n\t\tDlg_EACPrison_0800,\n\t\t///<summary>\n\t\t///Oh, how thoughtful of you. \n\t\t///</summary>\n\t\tDlg_EACPrison_0801,\n\t\t///<summary>\n\t\t///Return to the hub and use the ID. \n\t\t///</summary>\n\t\tDlg_EACPrison_0802,\n\t\t///<summary>\n\t\t///We need to find out where Marcus is being held. Hurry, the battle won’t last much longer. \n\t\t///</summary>\n\t\tDlg_EACPrison_0803,\n\t\t///<summary>\n\t\t///Here’s the data. Marcus Rainier, sector B-2, cell 38. \n\t\t///</summary>\n\t\tDlg_EACPrison_0900,\n\t\t///<summary>\n\t\t///Perfect. You have to access the maintenance area; there’s no other way to the cells. \n\t\t///</summary>\n\t\tDlg_EACPrison_0901,\n\t\t///<summary>\n\t\t///Of course, the area is well guarded… surprise, surprise. \n\t\t///</summary>\n\t\tDlg_EACPrison_0902,\n\t\t///<summary>\n\t\t///Just tell which direction to shoot in… \n\t\t///</summary>\n\t\tDlg_EACPrison_0903,\n\t\t///<summary>\n\t\t///First, the easy work: use the hub to disconnect the generator. \n\t\t///</summary>\n\t\tDlg_EACPrison_1000,\n\t\t///<summary>\n\t\t///And then?\n\t\t///</summary>\n\t\tDlg_EACPrison_1001,\n\t\t///<summary>\n\t\t///The usual stuff: shooting, dodging, maneuvering in narrow corridors…\n\t\t///</summary>\n\t\tDlg_EACPrison_1002,\n\t\t///<summary>\n\t\t///Marcus has to be nearby. Can you see cell 38?\n\t\t///</summary>\n\t\tDlg_EACPrison_1100,\n\t\t///<summary>\n\t\t///Found it!\n\t\t///</summary>\n\t\tDlg_EACPrison_1101,\n\t\t///<summary>\n\t\t///Marcus! I was… we though you are dead!\n\t\t///</summary>\n\t\tDlg_EACPrison_1200,\n\t\t///<summary>\n\t\t///Apollo? What are you doing here? Valentin! Tarja! You’ve all been caught? \n\t\t///</summary>\n\t\tDlg_EACPrison_1201,\n\t\t///<summary>\n\t\t///Marcus, we need to get you out of here, fast!\n\t\t///</summary>\n\t\tDlg_EACPrison_1202,\n\t\t///<summary>\n\t\t///How… Don’t tell me you stormed the prison and killed all the guards?\n\t\t///</summary>\n\t\tDlg_EACPrison_1203,\n\t\t///<summary>\n\t\t///We had a little help from… “friends”. I’ll explain later.\n\t\t///</summary>\n\t\tDlg_EACPrison_1204,\n\t\t///<summary>\n\t\t///Madelyn, we have him!\n\t\t///</summary>\n\t\tDlg_EACPrison_1205,\n\t\t///<summary>\n\t\t///Marcus! Are you all right? \n\t\t///</summary>\n\t\tDlg_EACPrison_1206,\n\t\t///<summary>\n\t\t///You bastard! We thought you were dead! \n\t\t///</summary>\n\t\tDlg_EACPrison_1207,\n\t\t///<summary>\n\t\t///Don’t worry; I’ll kill you the minute you set foot on my ship!\n\t\t///</summary>\n\t\tDlg_EACPrison_1208,\n\t\t///<summary>\n\t\t///So good to hear your voice again, Madelyn.\n\t\t///</summary>\n\t\tDlg_EACPrison_1209,\n\t\t///<summary>\n\t\t///Shhh, we have company.\n\t\t///</summary>\n\t\tDlg_EACPrison_1210,\n\t\t///<summary>\n\t\t///Fly to the cargo bay, you have a chance to break through there!\n\t\t///</summary>\n\t\tDlg_EACPrison_1300,\n\t\t///<summary>\n\t\t///Enemy spotted. In large quantities!\n\t\t///</summary>\n\t\tDlg_EACPrison_1400,\n\t\t///<summary>\n\t\t///Engaging!\n\t\t///</summary>\n\t\tDlg_EACPrison_1401,\n\t\t///<summary>\n\t\t///Move out! Fall back. \n\t\t///</summary>\n\t\tDlg_EACPrison_1500,\n\t\t///<summary>\n\t\t///What are THEY doing here?\n\t\t///</summary>\n\t\tDlg_EACPrison_1501,\n\t\t///<summary>\n\t\t///I told you we brought “friends”.\n\t\t///</summary>\n\t\tDlg_EACPrison_1502,\n\t\t///<summary>\n\t\t///So while I was in prison the world turned inside out?\n\t\t///</summary>\n\t\tDlg_EACPrison_1503,\n\t\t///<summary>\n\t\t///Madelyn, prepare to dock us. \n\t\t///</summary>\n\t\tDlg_EACPrison_1504,\n\t\t///<summary>\n\t\t///Sapho is ready to fly as soon as you’ve boarded. Marcus, prepare to die.\n\t\t///</summary>\n\t\tDlg_EACPrison_1505,\n\t\t///<summary>\n\t\t///I love happy endings!\n\t\t///</summary>\n\t\tDlg_EACPrison_1506,\n\t\t///<summary>\n\t\t///If this were a real happy ending, all Fourth Reich ships would burn in hell…\n\t\t///</summary>\n\t\tDlg_EACPrison_1507,\n\t\t///<summary>\n\t\t///Be nice to our new “friends”!\n\t\t///</summary>\n\t\tDlg_EACPrison_1510,\n\t\t///<summary>\n\t\t///Sooner or later, you’ll be arrested too. Call this a practice run. \n\t\t///</summary>\n\t\tDlg_EACPrison_1511,\n\t\t///<summary>\n\t\t///Before you tell me the whole story, one question: Where are we going now?\n\t\t///</summary>\n\t\tDlg_EACPrison_1600,\n\t\t///<summary>\n\t\t///EAC. The radar array at Silver Foresight.\n\t\t///</summary>\n\t\tDlg_EACPrison_1601,\n\t\t///<summary>\n\t\t///We need to place the final alien material detector there. \n\t\t///</summary>\n\t\tDlg_EACPrison_1602,\n\t\t///<summary>\n\t\t///Right. Guess it’s a long story. Let’s jump on Sapho and talk on the way. \n\t\t///</summary>\n\t\tDlg_EACPrison_1603,\n\t\t///<summary>\n\t\t///And… nice to see you again, guys!\n\t\t///</summary>\n\t\tDlg_EACPrison_1604,\n\t\t///<summary>\n\t\t///Welcome to Doppelburg, soldiers. \n\t\t///</summary>\n\t\tDlg_TwinTowers_01_01,\n\t\t///<summary>\n\t\t///Proceed to the hangar in tower A and wait until you are assigned to a squad.\n\t\t///</summary>\n\t\tDlg_TwinTowers_01_02,\n\t\t///<summary>\n\t\t///Affirmative, sir.\n\t\t///</summary>\n\t\tDlg_TwinTowers_01_03,\n\t\t///<summary>\n\t\t///Guten tag. What’s new in the Fatherland?\n\t\t///</summary>\n\t\tDlg_TwinTowers_02_01,\n\t\t///<summary>\n\t\t///Have you been instructed as to the plan?\n\t\t///</summary>\n\t\tDlg_TwinTowers_02_03,\n\t\t///<summary>\n\t\t///We have. If nothing has changed, we’re ready.\n\t\t///</summary>\n\t\tDlg_TwinTowers_02_04,\n\t\t///<summary>\n\t\t///No changes. There are three places you need to place explosives to weaken tower B…\n\t\t///</summary>\n\t\tDlg_TwinTowers_02_05,\n\t\t///<summary>\n\t\t///…while we deal with tower A. After that, you’ll be paying a “visit” to the command center.\n\t\t///</summary>\n\t\tDlg_TwinTowers_02_06,\n\t\t///<summary>\n\t\t///This connects the command center to the main electrical network. \n\t\t///</summary>\n\t\tDlg_TwinTowers_03_01,\n\t\t///<summary>\n\t\t///Once you blow it up, they will have to switch to auxiliary batteries.\n\t\t///</summary>\n\t\tDlg_TwinTowers_03_02,\n\t\t///<summary>\n\t\t///It won’t stop them, but they won’t be able to keep all systems operational. \n\t\t///</summary>\n\t\tDlg_TwinTowers_03_03,\n\t\t///<summary>\n\t\t///It may save us from a few live turrets.  \n\t\t///</summary>\n\t\tDlg_TwinTowers_03_04,\n\t\t///<summary>\n\t\t///It is always helpful to weaken enemy forces directly. \n\t\t///</summary>\n\t\tDlg_TwinTowers_04_01,\n\t\t///<summary>\n\t\t///Hide the bomb well here – we can destroy many of their fighters on the ground. \n\t\t///</summary>\n\t\tDlg_TwinTowers_04_02,\n\t\t///<summary>\n\t\t///A well-placed bomb here will help keep the command center offline.\n\t\t///</summary>\n\t\tDlg_TwinTowers_05_01,\n\t\t///<summary>\n\t\t///Shutting off the generator would be better…\n\t\t///</summary>\n\t\tDlg_TwinTowers_05_02,\n\t\t///<summary>\n\t\t///…but it’s impossible without setting off an alarm.\n\t\t///</summary>\n\t\tDlg_TwinTowers_05_03,\n\t\t///<summary>\n\t\t///Excellent work, now prepare for the command center attack. I will be waiting nearby.\n\t\t///</summary>\n\t\tDlg_TwinTowers_06_01,\n\t\t///<summary>\n\t\t///You won’t be joining the attack?\n\t\t///</summary>\n\t\tDlg_TwinTowers_06_02,\n\t\t///<summary>\n\t\t///No, my ship is equipped with a special hacking device.\n\t\t///</summary>\n\t\tDlg_TwinTowers_06_03,\n\t\t///<summary>\n\t\t///I’m carrying a virus that will take control of all the systems in Tower A at once. \n\t\t///</summary>\n\t\tDlg_TwinTowers_06_04,\n\t\t///<summary>\n\t\t///If I fail at that, it’s all over.\n\t\t///</summary>\n\t\tDlg_TwinTowers_06_05,\n\t\t///<summary>\n\t\t///And after all, there are three of you. That should be more than enough.\n\t\t///</summary>\n\t\tDlg_TwinTowers_06_06,\n\t\t///<summary>\n\t\t///So, we need to protect you until the virus is uploaded?\n\t\t///</summary>\n\t\tDlg_TwinTowers_06_07,\n\t\t///<summary>\n\t\t///Exactly. Any complication can lead to a fatal failure.\n\t\t///</summary>\n\t\tDlg_TwinTowers_06_08,\n\t\t///<summary>\n\t\t///Get ready. Once you start shooting it’s you against whole enemy fleet.\n\t\t///</summary>\n\t\tDlg_TwinTowers_07_01,\n\t\t///<summary>\n\t\t///At least this masquerade will be over soon.\n\t\t///</summary>\n\t\tDlg_TwinTowers_07_02,\n\t\t///<summary>\n\t\t///You don’t like playing Nazi? Do I detect a conscience hiding in there?\n\t\t///</summary>\n\t\tDlg_TwinTowers_07_03,\n\t\t///<summary>\n\t\t///Done, area clear. Now do your job.\n\t\t///</summary>\n\t\tDlg_TwinTowers_08_01,\n\t\t///<summary>\n\t\t///On my way. Meanwhile, get ready. Wolves coming soon.\n\t\t///</summary>\n\t\tDlg_TwinTowers_08_02,\n\t\t///<summary>\n\t\t///Hacking routine started. Approximate time remaining, 3 minutes.\n\t\t///</summary>\n\t\tDlg_TwinTowers_09_01,\n\t\t///<summary>\n\t\t///Can’t you do it faster?\n\t\t///</summary>\n\t\tDlg_TwinTowers_09_02,\n\t\t///<summary>\n\t\t///Negative, I designed this software to have no weak point. It’s a lot of code.\n\t\t///</summary>\n\t\tDlg_TwinTowers_09_03,\n\t\t///<summary>\n\t\t///Glad to hear you’re that thorough.\n\t\t///</summary>\n\t\tDlg_TwinTowers_09_04,\n\t\t///<summary>\n\t\t///Thanks. It’s always nice to hear words of praise from one’s colleagues.\n\t\t///</summary>\n\t\tDlg_TwinTowers_09_05,\n\t\t///<summary>\n\t\t///Yeah. Nice.\n\t\t///</summary>\n\t\tDlg_TwinTowers_09_06,\n\t\t///<summary>\n\t\t///Our loyal friends will help protect us from outside attack. \n\t\t///</summary>\n\t\tDlg_TwinTowers_09_07,\n\t\t///<summary>\n\t\t///We only have to deal with forces inside the base.\n\t\t///</summary>\n\t\tDlg_TwinTowers_09_08,\n\t\t///<summary>\n\t\t///And we will.\n\t\t///</summary>\n\t\tDlg_TwinTowers_09_09,\n\t\t///<summary>\n\t\t///Another squad has started their engines.\n\t\t///</summary>\n\t\tDlg_TwinTowers_10_01,\n\t\t///<summary>\n\t\t///Wolves on their way.\n\t\t///</summary>\n\t\tDlg_TwinTowers_10_02,\n\t\t///<summary>\n\t\t///No! Someone’s interrupting the process! \n\t\t///</summary>\n\t\tDlg_TwinTowers_11_01,\n\t\t///<summary>\n\t\t///Someone down there has a hacking computer of equal power and they’re blocking me.\n\t\t///</summary>\n\t\tDlg_TwinTowers_11_02,\n\t\t///<summary>\n\t\t///I thought you were the premier hacker in these parts?\n\t\t///</summary>\n\t\tDlg_TwinTowers_11_04,\n\t\t///<summary>\n\t\t///This is no time for ego wars. Get him or we’re dead.\n\t\t///</summary>\n\t\tDlg_TwinTowers_11_05,\n\t\t///<summary>\n\t\t///Watch out for the turrets. Going straight down is suicide.\n\t\t///</summary>\n\t\tDlg_TwinTowers_11_06,\n\t\t///<summary>\n\t\t///The side tunnels?\n\t\t///</summary>\n\t\tDlg_TwinTowers_11_07,\n\t\t///<summary>\n\t\t///I’ll follow you. Decide.\n\t\t///</summary>\n\t\tDlg_TwinTowers_11_08,\n\t\t///<summary>\n\t\t///You’re retired, pal!\n\t\t///</summary>\n\t\tDlg_TwinTowers_12_01,\n\t\t///<summary>\n\t\t///Erhard, what’s your status?\n\t\t///</summary>\n\t\tDlg_TwinTowers_12_02,\n\t\t///<summary>\n\t\t///Back online, advancing at a steady pace again.\n\t\t///</summary>\n\t\tDlg_TwinTowers_12_03,\n\t\t///<summary>\n\t\t///But another squadron’s coming. Get back here as fast as possible.\n\t\t///</summary>\n\t\tDlg_TwinTowers_12_04,\n\t\t///<summary>\n\t\t///There’s no end to them! I thought the Wolves were just a small faction.\n\t\t///</summary>\n\t\tDlg_TwinTowers_12_05,\n\t\t///<summary>\n\t\t///They have a lot of sympathizers. Even amongst everyday citizens.\n\t\t///</summary>\n\t\tDlg_TwinTowers_12_06,\n\t\t///<summary>\n\t\t///Guess you can’t shake off the 20th century just like that. Too bad.\n\t\t///</summary>\n\t\tDlg_TwinTowers_12_07,\n\t\t///<summary>\n\t\t///The path to perfection isn’t an easy one. But we are ready.\n\t\t///</summary>\n\t\tDlg_TwinTowers_12_08,\n\t\t///<summary>\n\t\t///Just be ready enough to not get killed right now.\n\t\t///</summary>\n\t\tDlg_TwinTowers_12_09,\n\t\t///<summary>\n\t\t///Done.\n\t\t///</summary>\n\t\tDlg_TwinTowers_13_01,\n\t\t///<summary>\n\t\t///Weapons will now pursue ships with White Wolf signatures.\n\t\t///</summary>\n\t\tDlg_TwinTowers_13_02,\n\t\t///<summary>\n\t\t///Excluding ours, of course.\n\t\t///</summary>\n\t\tDlg_TwinTowers_13_03,\n\t\t///<summary>\n\t\t///So, what now?\n\t\t///</summary>\n\t\tDlg_TwinTowers_13_04,\n\t\t///<summary>\n\t\t///Now you need to disable both of the anti-mothership railguns in this tower.\n\t\t///</summary>\n\t\tDlg_TwinTowers_13_05,\n\t\t///<summary>\n\t\t///What? Didn’t you just do that?\n\t\t///</summary>\n\t\tDlg_TwinTowers_13_06,\n\t\t///<summary>\n\t\t///Railguns have independent manual controls besides the remote ones.\n\t\t///</summary>\n\t\tDlg_TwinTowers_13_07,\n\t\t///<summary>\n\t\t///As long as there are Wolves around, they can seize control of them.\n\t\t///</summary>\n\t\tDlg_TwinTowers_13_08,\n\t\t///<summary>\n\t\t///And as long as the railguns are operational…\n\t\t///</summary>\n\t\tDlg_TwinTowers_13_09,\n\t\t///<summary>\n\t\t///…we won’t get any support from Reich mother ships.\n\t\t///</summary>\n\t\tDlg_TwinTowers_13_10,\n\t\t///<summary>\n\t\t///Exactly.\n\t\t///</summary>\n\t\tDlg_TwinTowers_13_11,\n\t\t///<summary>\n\t\t///I destroyed everything that seemed like a control device for the railgun.\n\t\t///</summary>\n\t\tDlg_TwinTowers_14_01,\n\t\t///<summary>\n\t\t///According to my data, you did well. Now proceed to the next control room. \n\t\t///</summary>\n\t\tDlg_TwinTowers_14_02,\n\t\t///<summary>\n\t\t///Meanwhile I’m preparing a computer attack on Tower B.\n\t\t///</summary>\n\t\tDlg_TwinTowers_14_03,\n\t\t///<summary>\n\t\t///Proceeding.\n\t\t///</summary>\n\t\tDlg_TwinTowers_14_04,\n\t\t///<summary>\n\t\t///Done. Second railgun crippled.\n\t\t///</summary>\n\t\tDlg_TwinTowers_15_01,\n\t\t///<summary>\n\t\t///What next?\n\t\t///</summary>\n\t\tDlg_TwinTowers_15_02,\n\t\t///<summary>\n\t\t///Move to Tower B. There is a service tunnel you can use. It shouldn’t be guarded.\n\t\t///</summary>\n\t\tDlg_TwinTowers_15_03,\n\t\t///<summary>\n\t\t///“Shouldn’t be”? How reassuring.\n\t\t///</summary>\n\t\tDlg_TwinTowers_15_04,\n\t\t///<summary>\n\t\t///By the way, where are all the loyal friends you were talking about?\n\t\t///</summary>\n\t\tDlg_TwinTowers_15_05,\n\t\t///<summary>\n\t\t///According to the computer…\n\t\t///</summary>\n\t\tDlg_TwinTowers_15_06,\n\t\t///<summary>\n\t\t///…three of their ships were destroyed outside the base while we took the command center.\n\t\t///</summary>\n\t\tDlg_TwinTowers_15_07,\n\t\t///<summary>\n\t\t///They fell for the cause.\n\t\t///</summary>\n\t\tDlg_TwinTowers_15_08,\n\t\t///<summary>\n\t\t///What? You say it as if you just dropped a candy bar.\n\t\t///</summary>\n\t\tDlg_TwinTowers_15_09,\n\t\t///<summary>\n\t\t///They were prepared to die. Just as I am. Just as you should be.\n\t\t///</summary>\n\t\tDlg_TwinTowers_15_10,\n\t\t///<summary>\n\t\t///I am not prepared to die here. I hate defeatist thinking.\n\t\t///</summary>\n\t\tDlg_TwinTowers_15_11,\n\t\t///<summary>\n\t\t///This mission was uncertain at best – all the way from beginning. We all knew it.  \n\t\t///</summary>\n\t\tDlg_TwinTowers_15_12,\n\t\t///<summary>\n\t\t///I’m here, what now? Destroy some more railgun controls?\n\t\t///</summary>\n\t\tDlg_TwinTowers_16_01,\n\t\t///<summary>\n\t\t///No, just shut down the generator. Then the railguns won’t have power.\n\t\t///</summary>\n\t\tDlg_TwinTowers_16_02,\n\t\t///<summary>\n\t\t///Why didn’t we do that in Tower A?\n\t\t///</summary>\n\t\tDlg_TwinTowers_16_03,\n\t\t///<summary>\n\t\t///They’d have been able to reroute energy from other systems. \n\t\t///</summary>\n\t\tDlg_TwinTowers_16_04,\n\t\t///<summary>\n\t\t///But thanks to the work we’ve done, they won’t be able to do that in Tower B.\n\t\t///</summary>\n\t\tDlg_TwinTowers_16_05,\n\t\t///<summary>\n\t\t///Fine. Where do I go?\n\t\t///</summary>\n\t\tDlg_TwinTowers_16_06,\n\t\t///<summary>\n\t\t///Up. To the reactor room. Destroy the cooling pipes leading to the generator. \n\t\t///</summary>\n\t\tDlg_TwinTowers_16_07,\n\t\t///<summary>\n\t\t///It will automatically shut down to prevent a meltdown.\n\t\t///</summary>\n\t\tDlg_TwinTowers_16_08,\n\t\t///<summary>\n\t\t///Sounds easy enough.\n\t\t///</summary>\n\t\tDlg_TwinTowers_16_09,\n\t\t///<summary>\n\t\t///Did you see the stationary weapons there? When we were placing the explosives.\n\t\t///</summary>\n\t\tDlg_TwinTowers_16_10,\n\t\t///<summary>\n\t\t///Yeah?\n\t\t///</summary>\n\t\tDlg_TwinTowers_16_11,\n\t\t///<summary>\n\t\t///Are they still operational?\n\t\t///</summary>\n\t\tDlg_TwinTowers_16_12,\n\t\t///<summary>\n\t\t///I guess we’ll see.\n\t\t///</summary>\n\t\tDlg_TwinTowers_16_13,\n\t\t///<summary>\n\t\t///Done. No energy, no railguns. Can we have the reinforcements now?\n\t\t///</summary>\n\t\tDlg_TwinTowers_17_01,\n\t\t///<summary>\n\t\t///Signal sent. Proceed to the command center. There are still some things to be done.\n\t\t///</summary>\n\t\tDlg_TwinTowers_17_02,\n\t\t///<summary>\n\t\t///What exactly?\n\t\t///</summary>\n\t\tDlg_TwinTowers_17_03,\n\t\t///<summary>\n\t\t///It’s impossible to hack any of the command center computers from outside.\n\t\t///</summary>\n\t\tDlg_TwinTowers_17_04,\n\t\t///<summary>\n\t\t///They have to be approached from inside. \n\t\t///</summary>\n\t\tDlg_TwinTowers_17_05,\n\t\t///<summary>\n\t\t///But don’t worry, it’s not as hard as what I did in Tower A. \n\t\t///</summary>\n\t\tDlg_TwinTowers_17_06,\n\t\t///<summary>\n\t\t///I just need to open a channel to Tower A. My virus will do the rest.\n\t\t///</summary>\n\t\tDlg_TwinTowers_17_07,\n\t\t///<summary>\n\t\t///Acknowledged.\n\t\t///</summary>\n\t\tDlg_TwinTowers_17_08,\n\t\t///<summary>\n\t\t///Great. The base is ours!\n\t\t///</summary>\n\t\tDlg_TwinTowers_18_01,\n\t\t///<summary>\n\t\t///I have one last bit of unpleasant news for you.\n\t\t///</summary>\n\t\tDlg_TwinTowers_18_02,\n\t\t///<summary>\n\t\t///We are listening.\n\t\t///</summary>\n\t\tDlg_TwinTowers_18_03,\n\t\t///<summary>\n\t\t///The White Wolves had a mother ship stationed nearby. And now they are on their way here.\n\t\t///</summary>\n\t\tDlg_TwinTowers_18_04,\n\t\t///<summary>\n\t\t///What’s the plan?\n\t\t///</summary>\n\t\tDlg_TwinTowers_18_05,\n\t\t///<summary>\n\t\t///Our forces will arrive ahead of them. But we would like your assistance during the fight.\n\t\t///</summary>\n\t\tDlg_TwinTowers_18_06,\n\t\t///<summary>\n\t\t///Apollo Rainier, join the assault squad.\n\t\t///</summary>\n\t\tDlg_TwinTowers_19_01,\n\t\t///<summary>\n\t\t///Your mission is to support our fighters during the dogfight…\n\t\t///</summary>\n\t\tDlg_TwinTowers_19_02,\n\t\t///<summary>\n\t\t///…and then assist in neutralizing their zeppelin.\n\t\t///</summary>\n\t\tDlg_TwinTowers_19_03,\n\t\t///<summary>\n\t\t///Your targets are its main generators. Once they are out of commission, …\n\t\t///</summary>\n\t\tDlg_TwinTowers_19_04,\n\t\t///<summary>\n\t\t///…it is just a matter of time till they surrender or we overtake their forces.\n\t\t///</summary>\n\t\tDlg_TwinTowers_19_05,\n\t\t///<summary>\n\t\t///Good luck!\n\t\t///</summary>\n\t\tDlg_TwinTowers_19_06,\n\t\t///<summary>\n\t\t///Fight against a fully armed zeppelin? That does not sound… easy.\n\t\t///</summary>\n\t\tDlg_TwinTowers_19_07,\n\t\t///<summary>\n\t\t///It is possible. Just not easy.\n\t\t///</summary>\n\t\tDlg_TwinTowers_19_08,\n\t\t///<summary>\n\t\t///Excellent. Now proceed to destroy the backup batteries. \n\t\t///</summary>\n\t\tDlg_TwinTowers_20_01,\n\t\t///<summary>\n\t\t///Once that’s done, your job is over.\n\t\t///</summary>\n\t\tDlg_TwinTowers_20_02,\n\t\t///<summary>\n\t\t///To all White Wolf forces. It’s over. Surrender and we will spare your lives.\n\t\t///</summary>\n\t\tDlg_TwinTowers_21_01,\n\t\t///<summary>\n\t\t///Madelyn to Apollo! Report in.\n\t\t///</summary>\n\t\tDlg_TwinTowers_21_02,\n\t\t///<summary>\n\t\t///Apollo here. Madelyn, what are you doing here?\n\t\t///</summary>\n\t\tDlg_TwinTowers_21_03,\n\t\t///<summary>\n\t\t///Von Stauffenberg sent me to pick you up directly. Let’s get out of here.\n\t\t///</summary>\n\t\tDlg_TwinTowers_21_04,\n\t\t///<summary>\n\t\t///You have no idea how glad I am to hear that.\n\t\t///</summary>\n\t\tDlg_TwinTowers_21_05,\n\t\t///<summary>\n\t\t///That goes for all of us.\n\t\t///</summary>\n\t\tDlg_TwinTowers_21_06,\n\t\t///<summary>\n\t\t///We’re meeting the Fourth Reich forces at Reway. \n\t\t///</summary>\n\t\tDlg_TwinTowers_21_07,\n\t\t///<summary>\n\t\t///Walther convinced them to attack. Time to see Marcus again! Come on!\n\t\t///</summary>\n\t\tDlg_TwinTowers_21_08,\n\t\t///<summary>\n\t\t///Welcome to Eurydice!\n\t\t///</summary>\n\t\tDlg_ResearchVessel_1000,\n\t\t///<summary>\n\t\t///Amazing! The bending of the sun’s rays…\n\t\t///</summary>\n\t\tDlg_ResearchVessel_1001,\n\t\t///<summary>\n\t\t///…through the Vandenberg Gas Field creates some spectacular visuals.\n\t\t///</summary>\n\t\tDlg_ResearchVessel_1002,\n\t\t///<summary>\n\t\t///Yeah, looks like a sci-fi movie I once saw.\n\t\t///</summary>\n\t\tDlg_ResearchVessel_1003,\n\t\t///<summary>\n\t\t///Guys, this is the plan: The parts we need are probably spread all over the place.\n\t\t///</summary>\n\t\tDlg_ResearchVessel_1004,\n\t\t///<summary>\n\t\t///According to my blueprints, …\n\t\t///</summary>\n\t\tDlg_ResearchVessel_1005,\n\t\t///<summary>\n\t\t///…there seems to be no one specific place containing probe parts.\n\t\t///</summary>\n\t\tDlg_ResearchVessel_1006,\n\t\t///<summary>\n\t\t///We’re talking needle in a haystack?\n\t\t///</summary>\n\t\tDlg_ResearchVessel_1007,\n\t\t///<summary>\n\t\t///Exactly!\n\t\t///</summary>\n\t\tDlg_ResearchVessel_1008,\n\t\t///<summary>\n\t\t///So… random looting and pillaging! Awesome!\n\t\t///</summary>\n\t\tDlg_ResearchVessel_1009,\n\t\t///<summary>\n\t\t///Just make sure you don’t blow up the parts we need. \n\t\t///</summary>\n\t\tDlg_ResearchVessel_1010,\n\t\t///<summary>\n\t\t///I’ve uploaded you the dataprints from Reef.\n\t\t///</summary>\n\t\tDlg_ResearchVessel_1011,\n\t\t///<summary>\n\t\t///Your HUD will detect which parts are relevant for us.\n\t\t///</summary>\n\t\tDlg_ResearchVessel_1012,\n\t\t///<summary>\n\t\t///Incoming ships, identify yourself! This is a neutral research vessel on a mission…\n\t\t///</summary>\n\t\tDlg_ResearchVessel_1013,\n\t\t///<summary>\n\t\t///…investigating the composition of the Vandenberg Gas Field.\n\t\t///</summary>\n\t\tDlg_ResearchVessel_1014,\n\t\t///<summary>\n\t\t///Simply stated, you have something we want.\n\t\t///</summary>\n\t\tDlg_ResearchVessel_1015,\n\t\t///<summary>\n\t\t///You could have tried to negotiate first!\n\t\t///</summary>\n\t\tDlg_ResearchVessel_1016,\n\t\t///<summary>\n\t\t///We lean toward awkward silence and firearms.\n\t\t///</summary>\n\t\tDlg_ResearchVessel_1017,\n\t\t///<summary>\n\t\t///Ok, you asked for it. All fighters, engage enemy!\n\t\t///</summary>\n\t\tDlg_ResearchVessel_1018,\n\t\t///<summary>\n\t\t///This place looks pretty fortified.\n\t\t///</summary>\n\t\tDlg_ResearchVessel_1019,\n\t\t///<summary>\n\t\t///There’s definitely something valuable inside.\n\t\t///</summary>\n\t\tDlg_ResearchVessel_1020,\n\t\t///<summary>\n\t\t///Our missiles won’t do the job.\n\t\t///</summary>\n\t\tDlg_ResearchVessel_1021,\n\t\t///<summary>\n\t\t///Yup, we need to hack in from somewhere. \n\t\t///</summary>\n\t\tDlg_ResearchVessel_1022,\n\t\t///<summary>\n\t\t///This one won’t be easy.\n\t\t///</summary>\n\t\tDlg_ResearchVessel_1023,\n\t\t///<summary>\n\t\t///Preliminary scans show you’ll need to unlock several seals in order to break through.\n\t\t///</summary>\n\t\tDlg_ResearchVessel_1024,\n\t\t///<summary>\n\t\t///Wow, look at this!\n\t\t///</summary>\n\t\tDlg_ResearchVessel_1025,\n\t\t///<summary>\n\t\t///The ship is built on an asteroid with rich helium deposits.\n\t\t///</summary>\n\t\tDlg_ResearchVessel_1026,\n\t\t///<summary>\n\t\t///Technically, it runs on fuel from its own core.\n\t\t///</summary>\n\t\tDlg_ResearchVessel_1027,\n\t\t///<summary>\n\t\t///Eh, science…\n\t\t///</summary>\n\t\tDlg_ResearchVessel_1028,\n\t\t///<summary>\n\t\t///According to the dataprints, these are some of the parts we need.\n\t\t///</summary>\n\t\tDlg_ResearchVessel_1029,\n\t\t///<summary>\n\t\t///Resonator, crystal receivers, and DIP switch.\n\t\t///</summary>\n\t\tDlg_ResearchVessel_1030,\n\t\t///<summary>\n\t\t///Good!\n\t\t///</summary>\n\t\tDlg_ResearchVessel_1031,\n\t\t///<summary>\n\t\t///Another bunch of goodies we need. Centrifugal switch, reed switch, and ultrasonic filters.\n\t\t///</summary>\n\t\tDlg_ResearchVessel_1032,\n\t\t///<summary>\n\t\t///Great! We’ve got over half of the parts! Keep up the search!\n\t\t///</summary>\n\t\tDlg_ResearchVessel_1033,\n\t\t///<summary>\n\t\t///Here comes Santa Claus! Sockets, wires, some biconical...\n\t\t///</summary>\n\t\tDlg_ResearchVessel_1034,\n\t\t///<summary>\n\t\t///Sa-weet!\n\t\t///</summary>\n\t\tDlg_ResearchVessel_1036,\n\t\t///<summary>\n\t\t///Sorry to say, but a few parts are still missing. Keep looking.\n\t\t///</summary>\n\t\tDlg_ResearchVessel_1037,\n\t\t///<summary>\n\t\t///We’ve turned this whole place upside down. Any clues?\n\t\t///</summary>\n\t\tDlg_ResearchVessel_1038,\n\t\t///<summary>\n\t\t///Hey, remember that shielded hi-tech container we found? Now that we’ve hacked a few hubs…\n\t\t///</summary>\n\t\tDlg_ResearchVessel_1039,\n\t\t///<summary>\n\t\t///Good point. Maybe it’s open.\n\t\t///</summary>\n\t\tDlg_ResearchVessel_1040,\n\t\t///<summary>\n\t\t///Yes! The force field’s down, we’re free to enter.\n\t\t///</summary>\n\t\tDlg_ResearchVessel_1041,\n\t\t///<summary>\n\t\t///All right! Solenoids, hmm, filter capacitators…\n\t\t///</summary>\n\t\tDlg_ResearchVessel_1042,\n\t\t///<summary>\n\t\t///…OS-CON polymer capacitators, rectifier tubes, and klystrons.\n\t\t///</summary>\n\t\tDlg_ResearchVessel_1043,\n\t\t///<summary>\n\t\t///Checking the list and… we’re good!\n\t\t///</summary>\n\t\tDlg_ResearchVessel_1044,\n\t\t///<summary>\n\t\t///Ok, guys, come back to Sapho and we’ll set a course out of here!\n\t\t///</summary>\n\t\tDlg_ResearchVessel_1045,\n\t\t///<summary>\n\t\t///What’s the next stop?\n\t\t///</summary>\n\t\tDlg_ResearchVessel_1046,\n\t\t///<summary>\n\t\t///We need to hit the black market for those fuel cells.\n\t\t///</summary>\n\t\tDlg_ResearchVessel_1047,\n\t\t///<summary>\n\t\t///Manjeet is our man.\n\t\t///</summary>\n\t\tDlg_ResearchVessel_1048,\n\t\t///<summary>\n\t\t///Right. To the Junkyard, Jeeves. \n\t\t///</summary>\n\t\tDlg_ResearchVessel_1049,\n\t\t///<summary>\n\t\t///This computer over here, might it be helpful?\n\t\t///</summary>\n\t\tDlg_ResearchVessel_1050,\n\t\t///<summary>\n\t\t///You never know. Apollo, you have the hacking device, would you mind…?\n\t\t///</summary>\n\t\tDlg_ResearchVessel_1051,\n\t\t///<summary>\n\t\t///My pleasure.\n\t\t///</summary>\n\t\tDlg_ResearchVessel_1052,\n\t\t///<summary>\n\t\t///This seems like another computer or security hub.\n\t\t///</summary>\n\t\tDlg_ResearchVessel_1053,\n\t\t///<summary>\n\t\t///Check it out.\n\t\t///</summary>\n\t\tDlg_ResearchVessel_1054,\n\t\t///<summary>\n\t\t///I’ve got another security hub. Apollo?\n\t\t///</summary>\n\t\tDlg_ResearchVessel_1055,\n\t\t///<summary>\n\t\t///On my way. \n\t\t///</summary>\n\t\tDlg_ResearchVessel_1056,\n\t\t///<summary>\n\t\t///We’re near the rendezvous point with Madelyn. \n\t\t///</summary>\n\t\tDlg_ChineseEscape_1000,\n\t\t///<summary>\n\t\t///Red guards to cargo transport GA7. Enemy detected. EAC mother ship.\n\t\t///</summary>\n\t\tDlg_ChineseEscape_1001,\n\t\t///<summary>\n\t\t///Provide cover fire and we will engage and destroy. Do you copy?\n\t\t///</summary>\n\t\tDlg_ChineseEscape_1002,\n\t\t///<summary>\n\t\t///What should we do? We can’t answer. They’ll know right away we’re not Chinese.\n\t\t///</summary>\n\t\tDlg_ChineseEscape_1003,\n\t\t///<summary>\n\t\t///I’ve got a back-up plan. \n\t\t///</summary>\n\t\tDlg_ChineseEscape_1004,\n\t\t///<summary>\n\t\t///This may get ugly. \n\t\t///</summary>\n\t\tDlg_ChineseEscape_1005,\n\t\t///<summary>\n\t\t///The worst that can happen is they destroy their own ship.\n\t\t///</summary>\n\t\tDlg_ChineseEscape_1006,\n\t\t///<summary>\n\t\t///Remember, our fighters are still docked inside. \n\t\t///</summary>\n\t\tDlg_ChineseEscape_1007,\n\t\t///<summary>\n\t\t///Right, but all the plutonium will be lost.\n\t\t///</summary>\n\t\tDlg_ChineseEscape_1008,\n\t\t///<summary>\n\t\t///All the more reason to give it our best shot.\n\t\t///</summary>\n\t\tDlg_ChineseEscape_1009,\n\t\t///<summary>\n\t\t///GA7. This is your last warning. Respond or prepare for take-over. \n\t\t///</summary>\n\t\tDlg_ChineseEscape_1010,\n\t\t///<summary>\n\t\t///Get ready.\n\t\t///</summary>\n\t\tDlg_ChineseEscape_1011,\n\t\t///<summary>\n\t\t///Red Guards, disable GA7 engines and assume control of ship. \n\t\t///</summary>\n\t\tDlg_ChineseEscape_1012,\n\t\t///<summary>\n\t\t///Fire!\n\t\t///</summary>\n\t\tDlg_ChineseEscape_1013,\n\t\t///<summary>\n\t\t///Disable your weapons and engines and we will let you live!\n\t\t///</summary>\n\t\tDlg_ChineseEscape_1014,\n\t\t///<summary>\n\t\t///Bu hao, pal, bu hao. We’re taking this dandy load of plutonium with us. \n\t\t///</summary>\n\t\tDlg_ChineseEscape_1015,\n\t\t///<summary>\n\t\t///Then prepare for larger engagement\n\t\t///</summary>\n\t\tDlg_ChineseEscape_1016,\n\t\t///<summary>\n\t\t///We have called for reinforcements from a nearby outpost base.\n\t\t///</summary>\n\t\tDlg_ChineseEscape_1017,\n\t\t///<summary>\n\t\t///Only a fool provokes the Chinese army!\n\t\t///</summary>\n\t\tDlg_ChineseEscape_1018,\n\t\t///<summary>\n\t\t///Damn it!\n\t\t///</summary>\n\t\tDlg_ChineseEscape_1019,\n\t\t///<summary>\n\t\t///Steady, bro. We take care of these guys…\n\t\t///</summary>\n\t\tDlg_ChineseEscape_1020,\n\t\t///<summary>\n\t\t///…and hope to get to Madelyn before their reinforcements arrive.\n\t\t///</summary>\n\t\tDlg_ChineseEscape_1021,\n\t\t///<summary>\n\t\t///Just to review… You were supposed to open fire after I got into battle range.\n\t\t///</summary>\n\t\tDlg_ChineseEscape_1022,\n\t\t///<summary>\n\t\t///Shit happens.\n\t\t///</summary>\n\t\tDlg_ChineseEscape_1023,\n\t\t///<summary>\n\t\t///Copy that. Let’s finish them off together and get back to Manjeet.\n\t\t///</summary>\n\t\tDlg_ChineseEscape_1024,\n\t\t///<summary>\n\t\t///Right. I’m sick of this turret cockpit. I feel the need to MOVE.\n\t\t///</summary>\n\t\tDlg_ChineseEscape_1025,\n\t\t///<summary>\n\t\t///Enemies destroyed. We’re clear to proceed.\n\t\t///</summary>\n\t\tDlg_ChineseEscape_1026,\n\t\t///<summary>\n\t\t///I’ll tell Manjeet we’re on our way. Next stop, the Junkyard Hilton.\n\t\t///</summary>\n\t\tDlg_ChineseEscape_1027,\n\t\t///<summary>\n\t\t///Seems we’re not alone. I’m detecting fighters. Lots of them.\n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_0100,\n\t\t///<summary>\n\t\t///We’ll check it out. \n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_0101,\n\t\t///<summary>\n\t\t///There’s a battle raging here, fire and gunshots all around. \n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_0102,\n\t\t///<summary>\n\t\t///What the hell is that?\n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_0103,\n\t\t///<summary>\n\t\t///EAC Battleship, armed and operational.\n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_0104,\n\t\t///<summary>\n\t\t///What is EAC doing around here?\n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_0105,\n\t\t///<summary>\n\t\t///All troops, withdraw! Repeat, withdraw! EAC forces incoming!\n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_0106,\n\t\t///<summary>\n\t\t///Seems they’re afraid of us. \n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_0107,\n\t\t///<summary>\n\t\t///Guys, get to Thomas quickly. I’m only getting a weak signal of his ship. Find him ASAP. \n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_0108,\n\t\t///<summary>\n\t\t///Roger that. \n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_0109,\n\t\t///<summary>\n\t\t///Eat my steel, you filthy schlingels – ah, wait, Apollo? Is that you? \n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_0200,\n\t\t///<summary>\n\t\t///Glad to see you at full strength, Thomas!\n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_0201,\n\t\t///<summary>\n\t\t///Those raiders gave me an adrenaline rush. \n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_0202,\n\t\t///<summary>\n\t\t///I feel like a kid in my fifties again!\n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_0203,\n\t\t///<summary>\n\t\t///What happened here?\n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_0204,\n\t\t///<summary>\n\t\t///They came out of nowhere. Probably some raiding group that wanted equipment and cash. \n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_0205,\n\t\t///<summary>\n\t\t///They weren’t interested in me, just my loot. \n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_0206,\n\t\t///<summary>\n\t\t///Sorry for interrupting, guys, but there are still fighters inside the base. \n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_0207,\n\t\t///<summary>\n\t\t///Maybe you could, ah… you know…\n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_0208,\n\t\t///<summary>\n\t\t///Fight them? \n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_0209,\n\t\t///<summary>\n\t\t///That would be nice.\n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_0210,\n\t\t///<summary>\n\t\t///Good job, guys! Bad news, though – the raiders seem to be regrouping for a bigger strike. \n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_0300,\n\t\t///<summary>\n\t\t///I’m picking up several large ships as well. \n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_0301,\n\t\t///<summary>\n\t\t///I have some defense turrets in storage. \n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_0302,\n\t\t///<summary>\n\t\t///I didn’t have time to place them; the raiders took me by surprise. \n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_0303,\n\t\t///<summary>\n\t\t///If you install them you can beef up our defenses. \n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_0304,\n\t\t///<summary>\n\t\t///Shouldn’t we just hit the raiders while they’re regrouping?\n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_0305,\n\t\t///<summary>\n\t\t///Negative. Better to fortify the base and crush them at our gates. \n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_0306,\n\t\t///<summary>\n\t\t///They won’t be expecting stationary defenses. \n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_0307,\n\t\t///<summary>\n\t\t///Good point. \n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_0308,\n\t\t///<summary>\n\t\t///Apollo, would you mind taking charge of placing those turrets?\n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_0309,\n\t\t///<summary>\n\t\t///And be quick, those raiders won’t take long to regroup. \n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_0310,\n\t\t///<summary>\n\t\t///I’ll do my best.\n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_0311,\n\t\t///<summary>\n\t\t///Enemy incoming. First wave of fighters. \n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_0400,\n\t\t///<summary>\n\t\t///We’re ready.\n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_0401,\n\t\t///<summary>\n\t\t///This group looks too easy. \n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_0402,\n\t\t///<summary>\n\t\t///There are two mother ships on the horizon. Try to avoid taking damage.  \n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_0403,\n\t\t///<summary>\n\t\t///And keep an eye on Thomas.\n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_0404,\n\t\t///<summary>\n\t\t///Good job, everyone!\n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_0500,\n\t\t///<summary>\n\t\t///You do know there’s another wave approaching? Just saying.\n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_0501,\n\t\t///<summary>\n\t\t///We’re always well-prepared. \n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_0502,\n\t\t///<summary>\n\t\t///That’s what they say about duck l’orange. \n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_0503,\n\t\t///<summary>\n\t\t///We have a birthday surprise for you! Kabooom – (laughter) he, he!\n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_0600,\n\t\t///<summary>\n\t\t///Oh my God, this is not good!\n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_0601,\n\t\t///<summary>\n\t\t///What’s that? \n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_0602,\n\t\t///<summary>\n\t\t///Demolition ships. \n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_0603,\n\t\t///<summary>\n\t\t///Cargo freighters packed with explosives on a collision course with… Sapho. \n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_0604,\n\t\t///<summary>\n\t\t///Ok, Priority One: Everyone, target those suicide ships!\n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_0605,\n\t\t///<summary>\n\t\t///Just so you know, if one of those even grazes me…\n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_0606,\n\t\t///<summary>\n\t\t///…Sapho will turn into a pile of space debris. \n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_0607,\n\t\t///<summary>\n\t\t///More like space vapor. I’ve seen these things before. \n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_0608,\n\t\t///<summary>\n\t\t///My strong advice: look, but don’t touch. \n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_0609,\n\t\t///<summary>\n\t\t///We’ll handle it. Madelyn, don’t worry. \n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_0610,\n\t\t///<summary>\n\t\t///Good job, guys! Keep it up!\n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_0700,\n\t\t///<summary>\n\t\t///We have a minute to catch our breath before the final battle.\n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_0800,\n\t\t///<summary>\n\t\t///Mother ships approaching.\n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_0801,\n\t\t///<summary>\n\t\t///Use what time you have to repair those turrets. \n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_0802,\n\t\t///<summary>\n\t\t///There’s plenty of maintenance equipment around my base.\n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_0803,\n\t\t///<summary>\n\t\t///Let’s get to it. \n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_0804,\n\t\t///<summary>\n\t\t///Don’t get too immersed. Make a few quick repairs, then get ready for the attack!\n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_0805,\n\t\t///<summary>\n\t\t///Concentrate on their weapons and generators. \n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_0900,\n\t\t///<summary>\n\t\t///We can’t crush their armor, we can only target their weak spots.\n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_0901,\n\t\t///<summary>\n\t\t///Splendid operation!\n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_1000,\n\t\t///<summary>\n\t\t///Seems like ol’ Thomas enjoyed the thrill. \n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_1001,\n\t\t///<summary>\n\t\t///Good job, guys!\n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_1002,\n\t\t///<summary>\n\t\t///Now, I will spend some time on repairs, but thanks for the help!\n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_1003,\n\t\t///<summary>\n\t\t///You’re welcome.\n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_1004,\n\t\t///<summary>\n\t\t///By the way, how did you know about this raider attack?\n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_1005,\n\t\t///<summary>\n\t\t///We didn’t. We came seeking your assistance. \n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_1006,\n\t\t///<summary>\n\t\t///We’re ready to construct those alien material detectors. \n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_1007,\n\t\t///<summary>\n\t\t///Excellent!\n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_1008,\n\t\t///<summary>\n\t\t///Francis Reef designed them and gave us the blueprints. \n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_1009,\n\t\t///<summary>\n\t\t///We have all the components we need, and the fuel. \n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_1010,\n\t\t///<summary>\n\t\t///Hm, are you ready to deploy them?\n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_1011,\n\t\t///<summary>\n\t\t///We need to build them first. We thought we could do it here. \n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_1012,\n\t\t///<summary>\n\t\t///I don’t have the equipment and tools for that kind of job.\n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_1013,\n\t\t///<summary>\n\t\t///You do! Remember the stuff we picked at Broken Moon? \n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_1014,\n\t\t///<summary>\n\t\t///I was checking the list and according to specs from Reef…\n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_1015,\n\t\t///<summary>\n\t\t///…it is possible to build a simple manufacturing plant here. \n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_1016,\n\t\t///<summary>\n\t\t///Seems you’re a step ahead of me. Then go right for it!\n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_1017,\n\t\t///<summary>\n\t\t///Pick up the tools you need in the cargo storage and build your plant.\n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_1018,\n\t\t///<summary>\n\t\t///I can’t wait to see the results.\n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_1019,\n\t\t///<summary>\n\t\t///Give us a little time and a brand new manufacturing…\n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_1020,\n\t\t///<summary>\n\t\t///…plant will be standing right by your door!\n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_1021,\n\t\t///<summary>\n\t\t///Superb!\n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_1022,\n\t\t///<summary>\n\t\t///Ready to boogie! This “plant” should be able to build the detectors!\n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_1100,\n\t\t///<summary>\n\t\t///I take it Reef carefully instructed you as to the process?\n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_1101,\n\t\t///<summary>\n\t\t///We… hope so.\n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_1102,\n\t\t///<summary>\n\t\t///That… was fast!\n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_1200,\n\t\t///<summary>\n\t\t///You are already done?\n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_1201,\n\t\t///<summary>\n\t\t///It was just a matter of assembly and connection. \n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_1202,\n\t\t///<summary>\n\t\t///Remember, we already had all the chips and stuff.\n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_1203,\n\t\t///<summary>\n\t\t///Great! Now that you have the detectors…\n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_1204,\n\t\t///<summary>\n\t\t///…you need to place them in order to create the triangulation necessary.\n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_1205,\n\t\t///<summary>\n\t\t///What can we expect to find, anyway? Any “guesstimates”?\n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_1206,\n\t\t///<summary>\n\t\t///The detectors should give you nearly precise locations of all items…\n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_1207,\n\t\t///<summary>\n\t\t///…across the inner solar system made of this alien material. \n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_1208,\n\t\t///<summary>\n\t\t///Random thought. If one of the artifacts was with the Russians…\n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_1209,\n\t\t///<summary>\n\t\t///…would it point to their base or mother ship as well?\n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_1210,\n\t\t///<summary>\n\t\t///Exactly! Well, unless the artifacts were heavily shielded.\n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_1211,\n\t\t///<summary>\n\t\t///I understand. So now we just need to find some good locations for placing the detectors?\n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_1212,\n\t\t///<summary>\n\t\t///I suggest we place them in free space…\n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_1213,\n\t\t///<summary>\n\t\t///…somewhere outside the territories occupied by someone. \n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_1214,\n\t\t///<summary>\n\t\t///You can’t place those things in open space. \n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_1215,\n\t\t///<summary>\n\t\t///What?\n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_1216,\n\t\t///<summary>\n\t\t///They won’t work for long distances. \n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_1217,\n\t\t///<summary>\n\t\t///But I thought that was why we got the rare plutonium isotopes!\n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_1218,\n\t\t///<summary>\n\t\t///Even with the super plutonium, you still need to place the detectors in…\n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_1219,\n\t\t///<summary>\n\t\t///…existing long-range radar fields.\n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_1220,\n\t\t///<summary>\n\t\t///Consider them extenders only. You need to overtake three radar…\n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_1221,\n\t\t///<summary>\n\t\t///…operations across the Solar system and attach those detectors to them!\n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_1222,\n\t\t///<summary>\n\t\t///Overtake?\n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_1223,\n\t\t///<summary>\n\t\t///Ok, listen. I’ve already scouted some suitable locations. Chinese radar array at…\n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_1224,\n\t\t///<summary>\n\t\t///…Yunzun, Russian array at Tver, and EAC radar array at Silver Foresight.\n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_1225,\n\t\t///<summary>\n\t\t///You must mask your attack as a pirate raid. Rush inside, destroy some equipment and…\n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_1226,\n\t\t///<summary>\n\t\t///…while some of you are looting, one of you will sneak into the command center…\n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_1227,\n\t\t///<summary>\n\t\t///…and attach the detector to the cables for the radar dishes.\n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_1228,\n\t\t///<summary>\n\t\t///Make sure it looks like a raid, so the device stays attached and online long enough…\n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_1229,\n\t\t///<summary>\n\t\t///…to complete the two remaining missions.\n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_1230,\n\t\t///<summary>\n\t\t///Remember, we need triangulation, that is three detectors active at the same time.\n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_1231,\n\t\t///<summary>\n\t\t///Understand?\n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_1232,\n\t\t///<summary>\n\t\t///No, but I’m hoping YOU do.\n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_1233,\n\t\t///<summary>\n\t\t///I do. This is the easiest and most functional way to do it. \n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_1234,\n\t\t///<summary>\n\t\t///Ok, let’s get this over with. Madelyn?\n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_1235,\n\t\t///<summary>\n\t\t///Ready for Yunzun?\n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_1236,\n\t\t///<summary>\n\t\t///China, here we come!\n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_1237,\n\t\t///<summary>\n\t\t///We’ll brush up on our Kung-fu on the way!\n\t\t///</summary>\n\t\tDlg_BarthsMoonPlant_1238,\n\t\t///<summary>\n\t\t///Changde. I hear this place is a tall stack of laughs.\n\t\t///</summary>\n\t\tDlg_ChineseTransport_01_01,\n\t\t///<summary>\n\t\t///Before taking over the cargo transport, you must disable the transmitter. \n\t\t///</summary>\n\t\tDlg_ChineseTransport_01_02,\n\t\t///<summary>\n\t\t///Otherwise the base will send a warning to the refinery. \n\t\t///</summary>\n\t\tDlg_ChineseTransport_01_03,\n\t\t///<summary>\n\t\t///To do this, you need two security codes from the two different asteroid stations.\n\t\t///</summary>\n\t\tDlg_ChineseTransport_01_04,\n\t\t///<summary>\n\t\t///Me and Tarja will go after the distant one. \n\t\t///</summary>\n\t\tDlg_ChineseTransport_01_05,\n\t\t///<summary>\n\t\t///Apollo, you and Valentin get the security code from the other base.\n\t\t///</summary>\n\t\tDlg_ChineseTransport_01_06,\n\t\t///<summary>\n\t\t///Roger that.\n\t\t///</summary>\n\t\tDlg_ChineseTransport_01_07,\n\t\t///<summary>\n\t\t///Security code acquired.\n\t\t///</summary>\n\t\tDlg_ChineseTransport_02_01,\n\t\t///<summary>\n\t\t///Good. Get outside the station and meet us on the way to the transmitter.\n\t\t///</summary>\n\t\tDlg_ChineseTransport_02_02,\n\t\t///<summary>\n\t\t///Acknowledged.\n\t\t///</summary>\n\t\tDlg_ChineseTransport_02_03,\n\t\t///<summary>\n\t\t///Damn! They’re shooting at me!\n\t\t///</summary>\n\t\tDlg_ChineseTransport_03_01,\n\t\t///<summary>\n\t\t///Another bunch of red guards!\n\t\t///</summary>\n\t\tDlg_ChineseTransport_04_01,\n\t\t///<summary>\n\t\t///Marcus, I may be running a little late.\n\t\t///</summary>\n\t\tDlg_ChineseTransport_04_02,\n\t\t///<summary>\n\t\t///Fine, I’ll take care of my own business and wait for you.\n\t\t///</summary>\n\t\tDlg_ChineseTransport_04_03,\n\t\t///<summary>\n\t\t///We need to get rid of all the guards to get inside!\n\t\t///</summary>\n\t\tDlg_ChineseTransport_05_01,\n\t\t///<summary>\n\t\t///I’ll go take care of the transport ship.\n\t\t///</summary>\n\t\tDlg_ChineseTransport_06_01,\n\t\t///<summary>\n\t\t///Tarja, Valentin, Apollo – \n\t\t///</summary>\n\t\tDlg_ChineseTransport_06_02,\n\t\t///<summary>\n\t\t///– you deactivate the security terminals and destroy the transmitter.\n\t\t///</summary>\n\t\tDlg_ChineseTransport_06_03,\n\t\t///<summary>\n\t\t///Your turn, Apollo. Disable those two terminals.\n\t\t///</summary>\n\t\tDlg_ChineseTransport_07_01,\n\t\t///<summary>\n\t\t///Done. Now I’ll go place the bomb on the transmitter.\n\t\t///</summary>\n\t\tDlg_ChineseTransport_08_01,\n\t\t///<summary>\n\t\t///Placed. Everyone, quick, get to a safe distance!\n\t\t///</summary>\n\t\tDlg_ChineseTransport_09_01,\n\t\t///<summary>\n\t\t///We’re almost good to go. I got the transporter.\n\t\t///</summary>\n\t\tDlg_ChineseTransport_11_01,\n\t\t///<summary>\n\t\t///Again, Apollo, Tarja, Valentin. \n\t\t///</summary>\n\t\tDlg_ChineseTransport_11_02,\n\t\t///<summary>\n\t\t///You need to get an entrance code from the transport control. \n\t\t///</summary>\n\t\tDlg_ChineseTransport_11_03,\n\t\t///<summary>\n\t\t///On our way, boss.\n\t\t///</summary>\n\t\tDlg_ChineseTransport_11_04,\n\t\t///<summary>\n\t\t///I’ve heard a lot about this place. They say over 40% of all plutonium ore comes from here.\n\t\t///</summary>\n\t\tDlg_ChineseTransport_12_01,\n\t\t///<summary>\n\t\t///And dozens of miners die here every day, thanks to poor safety measures.\n\t\t///</summary>\n\t\tDlg_ChineseTransport_12_02,\n\t\t///<summary>\n\t\t///They choose this way of life. \n\t\t///</summary>\n\t\tDlg_ChineseTransport_12_03,\n\t\t///<summary>\n\t\t///The conditions may be inhuman, but the workers aren’t slaves. \n\t\t///</summary>\n\t\tDlg_ChineseTransport_12_04,\n\t\t///<summary>\n\t\t///They’re free to leave anytime they want.\n\t\t///</summary>\n\t\tDlg_ChineseTransport_12_05,\n\t\t///<summary>\n\t\t///They need cash. And many of them can’t leave because of their families. \n\t\t///</summary>\n\t\tDlg_ChineseTransport_12_06,\n\t\t///<summary>\n\t\t///Take out those guards!\n\t\t///</summary>\n\t\tDlg_ChineseTransport_13_01,\n\t\t///<summary>\n\t\t///Damn, the door is locked! We need to find some other way.\n\t\t///</summary>\n\t\tDlg_ChineseTransport_14_01,\n\t\t///<summary>\n\t\t///Hah! I found another way.\n\t\t///</summary>\n\t\tDlg_ChineseTransport_15_01,\n\t\t///<summary>\n\t\t///Ok, this is the computer that has the entry code!\n\t\t///</summary>\n\t\tDlg_ChineseTransport_16_01,\n\t\t///<summary>\n\t\t///Apollo, what’s your status?\n\t\t///</summary>\n\t\tDlg_ChineseTransport_17_01,\n\t\t///<summary>\n\t\t///We just got the code.\n\t\t///</summary>\n\t\tDlg_ChineseTransport_17_02,\n\t\t///<summary>\n\t\t///Good! Hurry up then. I’ve got a welcoming committee here.\n\t\t///</summary>\n\t\tDlg_ChineseTransport_17_03,\n\t\t///<summary>\n\t\t///Guys, help me get rid of these enemy fighters so we can roll!\n\t\t///</summary>\n\t\tDlg_ChineseTransport_18_01,\n\t\t///<summary>\n\t\t///EAC agents! We will crush you!\n\t\t///</summary>\n\t\tDlg_ChineseTransport_19_01,\n\t\t///<summary>\n\t\t///Gosh, I love these Chinese special forces.\n\t\t///</summary>\n\t\tDlg_ChineseTransport_19_02,\n\t\t///<summary>\n\t\t///Area clear. Docking in, I’m ready to depart for Jingzhou.\n\t\t///</summary>\n\t\tDlg_ChineseTransport_20_01,\n\t\t///<summary>\n\t\t///Excellent! You know the plan, I am wishing you best of luck!\n\t\t///</summary>\n\t\tDlg_ChineseTransport_20_03,\n\t\t///<summary>\n\t\t///There are lot miners near you. Go help them.\n\t\t///</summary>\n\t\tDlg_EACSurveySite_0711,\n\t\t///<summary>\n\t\t///Here are their coordinates downloaded from hub.\n\t\t///</summary>\n\t\tDlg_SlaverBase2_08_06,\n\t\t///<summary>\n\t\t///Fort Valiant, here we come. \n\t\t///</summary>\n\t\tDlg_FortValiantC_0100,\n\t\t///<summary>\n\t\t///I hope Captain Cedric has some good news for us. \n\t\t///</summary>\n\t\tDlg_FortValiantC_0101,\n\t\t///<summary>\n\t\t///Marcus Rainier to Captain Cedric. \n\t\t///</summary>\n\t\tDlg_FortValiantC_0102,\n\t\t///<summary>\n\t\t///Hail!\n\t\t///</summary>\n\t\tDlg_FortValiantC_0103,\n\t\t///<summary>\n\t\t///We’ve returned. The second Slavers operation was successful. \n\t\t///</summary>\n\t\tDlg_FortValiantC_0104,\n\t\t///<summary>\n\t\t///I’ve gone through the reports you sent. Good work, again! \n\t\t///</summary>\n\t\tDlg_FortValiantC_0105,\n\t\t///<summary>\n\t\t///I will transfer you the financial reward. Are you ready for another assignment?\n\t\t///</summary>\n\t\tDlg_FortValiantC_0106,\n\t\t///<summary>\n\t\t///Maybe later, first…\n\t\t///</summary>\n\t\tDlg_FortValiantC_0107,\n\t\t///<summary>\n\t\t///…the audience with patriarchs. Do you have any news for us?\n\t\t///</summary>\n\t\tDlg_FortValiantC_0108,\n\t\t///<summary>\n\t\t///Indeed! The patriarchs are willing to give you an audience.\n\t\t///</summary>\n\t\tDlg_FortValiantC_0109,\n\t\t///<summary>\n\t\t///Proceed to the Chamber of the Council.\n\t\t///</summary>\n\t\tDlg_FortValiantC_0110,\n\t\t///<summary>\n\t\t///Hail there! You have permission to pass into the Council Chambers…\n\t\t///</summary>\n\t\tDlg_FortValiantC_0200,\n\t\t///<summary>\n\t\t///…the patriarchs await you!\n\t\t///</summary>\n\t\tDlg_FortValiantC_0201,\n\t\t///<summary>\n\t\t///You are clear to proceed.\n\t\t///</summary>\n\t\tDlg_FortValiantC_0300,\n\t\t///<summary>\n\t\t///May the Council’s advice bring you the blessings you seek on your journey!\n\t\t///</summary>\n\t\tDlg_FortValiantC_0301,\n\t\t///<summary>\n\t\t///Welcome. May the audience begin. Speak your Truth!\n\t\t///</summary>\n\t\tDlg_FortValiantC_0400,\n\t\t///<summary>\n\t\t///We seek an artifact. An alien artifact. Remains of an ancient civilization. \n\t\t///</summary>\n\t\tDlg_FortValiantC_0401,\n\t\t///<summary>\n\t\t///We have reason to believe you have come in contact with it. \n\t\t///</summary>\n\t\tDlg_FortValiantC_0402,\n\t\t///<summary>\n\t\t///We would be grateful for any leads that might help us find it. \n\t\t///</summary>\n\t\tDlg_FortValiantC_0403,\n\t\t///<summary>\n\t\t///We have no idea what you are talking about. \n\t\t///</summary>\n\t\tDlg_FortValiantC_0404,\n\t\t///<summary>\n\t\t///We neither know about any artifact you call “alien”…\n\t\t///</summary>\n\t\tDlg_FortValiantC_0405,\n\t\t///<summary>\n\t\t///…nor do we believe in the existence of such.\n\t\t///</summary>\n\t\tDlg_FortValiantC_0406,\n\t\t///<summary>\n\t\t///I don’t believe a word he’s saying.\n\t\t///</summary>\n\t\tDlg_FortValiantC_0407,\n\t\t///<summary>\n\t\t///Me either, but there’s nothing we can do about it now. \n\t\t///</summary>\n\t\tDlg_FortValiantC_0408,\n\t\t///<summary>\n\t\t///Let’s get our equipment back and head back to Sapho.\n\t\t///</summary>\n\t\tDlg_FortValiantC_0409,\n\t\t///<summary>\n\t\t///Are there any other matters you wish to discuss?\n\t\t///</summary>\n\t\tDlg_FortValiantC_0410,\n\t\t///<summary>\n\t\t///No. We’re good. You’ve been incredibly… (un)helpful. \n\t\t///</summary>\n\t\tDlg_FortValiantC_0411,\n\t\t///<summary>\n\t\t///This audience is over. May God be with you. \n\t\t///</summary>\n\t\tDlg_FortValiantC_0412,\n\t\t///<summary>\n\t\t///I have information you seek. If you wish to know more, proceed to these coordinates. \n\t\t///</summary>\n\t\tDlg_FortValiantC_0500,\n\t\t///<summary>\n\t\t///That’s weird. What should we do? \n\t\t///</summary>\n\t\tDlg_FortValiantC_0501,\n\t\t///<summary>\n\t\t///Let’s check it out. We have nothing to lose, right?\n\t\t///</summary>\n\t\tDlg_FortValiantC_0502,\n\t\t///<summary>\n\t\t///Except body parts, vital organs… Like always.\n\t\t///</summary>\n\t\tDlg_FortValiantC_0503,\n\t\t///<summary>\n\t\t///Psst, over there.\n\t\t///</summary>\n\t\tDlg_FortValiantC_0600,\n\t\t///<summary>\n\t\t///Are you talking to us, Templar?\n\t\t///</summary>\n\t\tDlg_FortValiantC_0601,\n\t\t///<summary>\n\t\t///I know what you came for, what you yearn for, and what you were unrighteously denied. \n\t\t///</summary>\n\t\tDlg_FortValiantC_0602,\n\t\t///<summary>\n\t\t///I know about the lies upon lies perpetrated by our patriarchs…\n\t\t///</summary>\n\t\tDlg_FortValiantC_0603,\n\t\t///<summary>\n\t\t///Can we cut to the–\n\t\t///</summary>\n\t\tDlg_FortValiantC_0604,\n\t\t///<summary>\n\t\t///Let him talk.\n\t\t///</summary>\n\t\tDlg_FortValiantC_0605,\n\t\t///<summary>\n\t\t///You came for the artifact. The one our Order holds in secret. \n\t\t///</summary>\n\t\tDlg_FortValiantC_0606,\n\t\t///<summary>\n\t\t///What do you know about it? And why are you telling us all this?\n\t\t///</summary>\n\t\tDlg_FortValiantC_0607,\n\t\t///<summary>\n\t\t///Please continue, sir…? \n\t\t///</summary>\n\t\tDlg_FortValiantC_0608,\n\t\t///<summary>\n\t\t///Geraint, that’s my Order name. \n\t\t///</summary>\n\t\tDlg_FortValiantC_0609,\n\t\t///<summary>\n\t\t///I was the leader of the expedition that discovered this inhuman artifact. \n\t\t///</summary>\n\t\tDlg_FortValiantC_0610,\n\t\t///<summary>\n\t\t///Our Order deemed it to be heretical, cursed by diabolical powers. \n\t\t///</summary>\n\t\tDlg_FortValiantC_0611,\n\t\t///<summary>\n\t\t///The patriarchs ordered it to be kept in secret – even from our fellow brothers.\n\t\t///</summary>\n\t\tDlg_FortValiantC_0612,\n\t\t///<summary>\n\t\t///It is not being studied, nor is anyone else making use of it. \n\t\t///</summary>\n\t\tDlg_FortValiantC_0613,\n\t\t///<summary>\n\t\t///But… I… I joined the Order to search for Truth, not for lies and concealment…\n\t\t///</summary>\n\t\tDlg_FortValiantC_0614,\n\t\t///<summary>\n\t\t///So, you wish to aid us, noble sir?\n\t\t///</summary>\n\t\tDlg_FortValiantC_0615,\n\t\t///<summary>\n\t\t///I want this artifact to be studied. I have heard of some your deeds…\n\t\t///</summary>\n\t\tDlg_FortValiantC_0616,\n\t\t///<summary>\n\t\t///…and I am convinced you will make better use of it than we are.\n\t\t///</summary>\n\t\tDlg_FortValiantC_0617,\n\t\t///<summary>\n\t\t///My intuition was right. That’s where they’re keeping the artifact!\n\t\t///</summary>\n\t\tDlg_FortValiantC_0618,\n\t\t///<summary>\n\t\t///Can you give us specific directions?\n\t\t///</summary>\n\t\tDlg_FortValiantC_0619,\n\t\t///<summary>\n\t\t///I marked the location and the forgotten secret path on your GPS. \n\t\t///</summary>\n\t\tDlg_FortValiantC_0620,\n\t\t///<summary>\n\t\t///Take this equipment first, you will need it!\n\t\t///</summary>\n\t\tDlg_FortValiantC_0621,\n\t\t///<summary>\n\t\t///I suggest only one of you undertake this mission.\n\t\t///</summary>\n\t\tDlg_FortValiantC_0622,\n\t\t///<summary>\n\t\t///The underground has been – what is your word? – booby-trapped.\n\t\t///</summary>\n\t\tDlg_FortValiantC_0623,\n\t\t///<summary>\n\t\t///A single person might more easily avoid its pitfalls.\n\t\t///</summary>\n\t\tDlg_FortValiantC_0624,\n\t\t///<summary>\n\t\t///Got it. I’ll go.\n\t\t///</summary>\n\t\tDlg_FortValiantC_0626,\n\t\t///<summary>\n\t\t///May Providence be with you!\n\t\t///</summary>\n\t\tDlg_FortValiantC_0627,\n\t\t///<summary>\n\t\t///Many thanks, sir! \n\t\t///</summary>\n\t\tDlg_FortValiantC_0628,\n\t\t///<summary>\n\t\t///Ready to roll!\n\t\t///</summary>\n\t\tDlg_FortValiantC_0700,\n\t\t///<summary>\n\t\t///Good luck, Apollo!\n\t\t///</summary>\n\t\tDlg_FortValiantC_0701,\n\t\t///<summary>\n\t\t///Hm, the path seems to go through this broken vent. \n\t\t///</summary>\n\t\tDlg_FortValiantC_0800,\n\t\t///<summary>\n\t\t///I can’t avoid this security field. There must be a computer controlling it. \n\t\t///</summary>\n\t\tDlg_FortValiantC_0900,\n\t\t///<summary>\n\t\t///Path clear!\n\t\t///</summary>\n\t\tDlg_FortValiantC_1000,\n\t\t///<summary>\n\t\t///Security sensors. Need to avoid them!\n\t\t///</summary>\n\t\tDlg_FortValiantC_1200,\n\t\t///<summary>\n\t\t///This sensor looks like a tricky one!\n\t\t///</summary>\n\t\tDlg_FortValiantC_1300,\n\t\t///<summary>\n\t\t///Looks like the treasure cache! Radiated – damn!\n\t\t///</summary>\n\t\tDlg_FortValiantC_1400,\n\t\t///<summary>\n\t\t///Relics, some old remains… Fascinating!\n\t\t///</summary>\n\t\tDlg_FortValiantC_1401,\n\t\t///<summary>\n\t\t///Got to find the artifact, fast. Hope my computer is able to identify it. \n\t\t///</summary>\n\t\tDlg_FortValiantC_1402,\n\t\t///<summary>\n\t\t///The artifact must be in one of those concrete blocks. \n\t\t///</summary>\n\t\tDlg_FortValiantC_1500,\n\t\t///<summary>\n\t\t///Gotta be careful not to destroy it. Drilling should be safe… \n\t\t///</summary>\n\t\tDlg_FortValiantC_1501,\n\t\t///<summary>\n\t\t///According to the computer – this is it! Excellent! \n\t\t///</summary>\n\t\tDlg_FortValiantC_1600,\n\t\t///<summary>\n\t\t///Better get back.\n\t\t///</summary>\n\t\tDlg_FortValiantC_1601,\n\t\t///<summary>\n\t\t///Damn! I hate these security fields…\n\t\t///</summary>\n\t\tDlg_FortValiantC_1700,\n\t\t///<summary>\n\t\t///Gotta find a way to get rid of them – or find the computer that controls them. \n\t\t///</summary>\n\t\tDlg_FortValiantC_1701,\n\t\t///<summary>\n\t\t///Looks like the guards left this room open. \n\t\t///</summary>\n\t\tDlg_FortValiantC_1800,\n\t\t///<summary>\n\t\t///This computer might help me get out of here!\n\t\t///</summary>\n\t\tDlg_FortValiantC_1900,\n\t\t///<summary>\n\t\t///Hm, there seems to be another way out!\n\t\t///</summary>\n\t\tDlg_FortValiantC_2000,\n\t\t///<summary>\n\t\t///Now, let’s get the hell out of here!\n\t\t///</summary>\n\t\tDlg_FortValiantC_2101,\n\t\t///<summary>\n\t\t///Crap. Dead end. There must be another way out.\n\t\t///</summary>\n\t\tDlg_FortValiantC_2201,\n\t\t///<summary>\n\t\t///Hmm, a possible exit. Maybe it’s time to ask Sir Geraint for some hints. \n\t\t///</summary>\n\t\tDlg_FortValiantC_2300,\n\t\t///<summary>\n\t\t///Sir Geraint? I reached a dead end.\n\t\t///</summary>\n\t\tDlg_FortValiantC_2301,\n\t\t///<summary>\n\t\t///Either the tunnels are impassable or they’re guarded by scanner.\n\t\t///</summary>\n\t\tDlg_FortValiantC_2302,\n\t\t///<summary>\n\t\t///You’re almost there. I will send you new GPS coordinates…\n\t\t///</summary>\n\t\tDlg_FortValiantC_2303,\n\t\t///<summary>\n\t\t///…a path through the catacombs to the main temple.\n\t\t///</summary>\n\t\tDlg_FortValiantC_2304,\n\t\t///<summary>\n\t\t///I will wait for you on the surface, together with your friends.  \n\t\t///</summary>\n\t\tDlg_FortValiantC_2305,\n\t\t///<summary>\n\t\t///That was tons of fun.\n\t\t///</summary>\n\t\tDlg_FortValiantC_2400,\n\t\t///<summary>\n\t\t///Success?\n\t\t///</summary>\n\t\tDlg_FortValiantC_2401,\n\t\t///<summary>\n\t\t///Success! I have the artifact. \n\t\t///</summary>\n\t\tDlg_FortValiantC_2402,\n\t\t///<summary>\n\t\t///Glad you made it and found the object you seek! I wish you blessings on your journey!\n\t\t///</summary>\n\t\tDlg_FortValiantC_2403,\n\t\t///<summary>\n\t\t///Apollo, grab the equipment you left before the meeting with the Council. \n\t\t///</summary>\n\t\tDlg_FortValiantC_2404,\n\t\t///<summary>\n\t\t///Then get ready for departure. \n\t\t///</summary>\n\t\tDlg_FortValiantC_2405,\n\t\t///<summary>\n\t\t///Departure where?\n\t\t///</summary>\n\t\tDlg_FortValiantC_2406,\n\t\t///<summary>\n\t\t///Rime.\n\t\t///</summary>\n\t\tDlg_FortValiantC_2407,\n\t\t///<summary>\n\t\t///Get your equipment back, we can talk on the way there.\n\t\t///</summary>\n\t\tDlg_FortValiantC_2408,\n\t\t///<summary>\n\t\t///Your audience took quite some time. Is everything settled to you satisfaction?\n\t\t///</summary>\n\t\tDlg_FortValiantC_2500,\n\t\t///<summary>\n\t\t///Yes, brother, we got the answers we pursued.\n\t\t///</summary>\n\t\tDlg_FortValiantC_2501,\n\t\t///<summary>\n\t\t///Excellent! \n\t\t///</summary>\n\t\tDlg_FortValiantC_2502,\n\t\t///<summary>\n\t\t///So… what’s the plan?\n\t\t///</summary>\n\t\tDlg_FortValiantC_2600,\n\t\t///<summary>\n\t\t///Thomas came up with a plan for constructing an alien artifact detector. \n\t\t///</summary>\n\t\tDlg_FortValiantC_2601,\n\t\t///<summary>\n\t\t///Using the pieces we already have…\n\t\t///</summary>\n\t\tDlg_FortValiantC_2602,\n\t\t///<summary>\n\t\t///…we should have enough information to create a long-range detector.\n\t\t///</summary>\n\t\tDlg_FortValiantC_2603,\n\t\t///<summary>\n\t\t///It’ll allow us to locate other artifact parts scattered through the solar system.\n\t\t///</summary>\n\t\tDlg_FortValiantC_2604,\n\t\t///<summary>\n\t\t///Why are we going to Rime? \n\t\t///</summary>\n\t\tDlg_FortValiantC_2605,\n\t\t///<summary>\n\t\t///You need two things: a brilliant technician and hi-end components.\n\t\t///</summary>\n\t\tDlg_FortValiantC_2606,\n\t\t///<summary>\n\t\t///I have references on a guy, Francis Reef, …\n\t\t///</summary>\n\t\tDlg_FortValiantC_2607,\n\t\t///<summary>\n\t\t///…supposedly one of the best R&D people at OmniCorp Technologies.\n\t\t///</summary>\n\t\tDlg_FortValiantC_2608,\n\t\t///<summary>\n\t\t///I don’t know him personally, but my contacts say he’s a genius. \n\t\t///</summary>\n\t\tDlg_FortValiantC_2609,\n\t\t///<summary>\n\t\t///Can’t you make the device yourself? With our help?\n\t\t///</summary>\n\t\tDlg_FortValiantC_2610,\n\t\t///<summary>\n\t\t///Nah, this is way beyond my abilities. I came up with the concept…\n\t\t///</summary>\n\t\tDlg_FortValiantC_2611,\n\t\t///<summary>\n\t\t///…but you need someone who can technically pull it off.\n\t\t///</summary>\n\t\tDlg_FortValiantC_2612,\n\t\t///<summary>\n\t\t///Remember, we’re dealing with unknown substances and extremely long-range scanners. \n\t\t///</summary>\n\t\tDlg_FortValiantC_2613,\n\t\t///<summary>\n\t\t///Understood.\n\t\t///</summary>\n\t\tDlg_FortValiantC_2614,\n\t\t///<summary>\n\t\t///One more thing. The first artifact. Did you find it useful?\n\t\t///</summary>\n\t\tDlg_FortValiantC_2615,\n\t\t///<summary>\n\t\t///In a sense… Nothing we can utilize in a pragmatic sense of the word. \n\t\t///</summary>\n\t\tDlg_FortValiantC_2616,\n\t\t///<summary>\n\t\t///More of… pointer toward greater discovery. \n\t\t///</summary>\n\t\tDlg_FortValiantC_2617,\n\t\t///<summary>\n\t\t///Meaning?\n\t\t///</summary>\n\t\tDlg_FortValiantC_2618,\n\t\t///<summary>\n\t\t///At the moment, I have nothing more to say. Drop the Valiant artifact at my place. \n\t\t///</summary>\n\t\tDlg_FortValiantC_2619,\n\t\t///<summary>\n\t\t///I will see whether I can find out anything more.\n\t\t///</summary>\n\t\tDlg_FortValiantC_2620,\n\t\t///<summary>\n\t\t///That alien material detector should point us further.\n\t\t///</summary>\n\t\tDlg_FortValiantC_2621,\n\t\t///<summary>\n\t\t///In other words, thanks to the artifact we can create a detector to search for… \n\t\t///</summary>\n\t\tDlg_FortValiantC_2622,\n\t\t///<summary>\n\t\t///…other artifacts. Glad to have been so useful!\n\t\t///</summary>\n\t\tDlg_FortValiantC_2623,\n\t\t///<summary>\n\t\t///Valentin, this work is important. Those Russians want those artifacts badly.\n\t\t///</summary>\n\t\tDlg_FortValiantC_2625,\n\t\t///<summary>\n\t\t///They must have some reason – political or military – not just curiosity.  \n\t\t///</summary>\n\t\tDlg_FortValiantC_2626,\n\t\t///<summary>\n\t\t///Okay, understood. \n\t\t///</summary>\n\t\tDlg_FortValiantC_2627,\n\t\t///<summary>\n\t\t///Ready to head for Rime, guys?\n\t\t///</summary>\n\t\tDlg_FortValiantC_2628,\n\t\t///<summary>\n\t\t///It’s Rime time. Set the course. I’ll take the artifact to Barth again and meet you there. \n\t\t///</summary>\n\t\tDlg_FortValiantC_2629,\n\t\t///<summary>\n\t\t///Don’t start anything without me, understood?\n\t\t///</summary>\n\t\tDlg_FortValiantC_2630,\n\t\t///<summary>\n\t\t///You’re the boss! \n\t\t///</summary>\n\t\tDlg_FortValiantC_2631,\n\t\t///<summary>\n\t\t///Here we are. According to the triangulation, …\n\t\t///</summary>\n\t\tDlg_AlienGate_0100,\n\t\t///<summary>\n\t\t///…the source of the signal is somewhere nearby.\n\t\t///</summary>\n\t\tDlg_AlienGate_0101,\n\t\t///<summary>\n\t\t///How precise are the scans?\n\t\t///</summary>\n\t\tDlg_AlienGate_0102,\n\t\t///<summary>\n\t\t///Plus or minus a few hundred kilometers, I’d say.\n\t\t///</summary>\n\t\tDlg_AlienGate_0103,\n\t\t///<summary>\n\t\t///I can live with that. \n\t\t///</summary>\n\t\tDlg_AlienGate_0104,\n\t\t///<summary>\n\t\t///Enemy ships on radar! What are they doing here?\n\t\t///</summary>\n\t\tDlg_AlienGate_0200,\n\t\t///<summary>\n\t\t///Take them down! Quick. \n\t\t///</summary>\n\t\tDlg_AlienGate_0201,\n\t\t///<summary>\n\t\t///I don’t like this; we’d better be careful.\n\t\t///</summary>\n\t\tDlg_AlienGate_0300,\n\t\t///<summary>\n\t\t///Continue searching, but stay on high alert. \n\t\t///</summary>\n\t\tDlg_AlienGate_0301,\n\t\t///<summary>\n\t\t///Guys, let’s try a new spot. I transmitted each of you some coordinates to check. \n\t\t///</summary>\n\t\tDlg_AlienGate_0400,\n\t\t///<summary>\n\t\t///Affirmative.\n\t\t///</summary>\n\t\tDlg_AlienGate_0401,\n\t\t///<summary>\n\t\t///Got it.\n\t\t///</summary>\n\t\tDlg_AlienGate_0402,\n\t\t///<summary>\n\t\t///Roger that.\n\t\t///</summary>\n\t\tDlg_AlienGate_0403,\n\t\t///<summary>\n\t\t///I’ll keep scanning the area from afar.\n\t\t///</summary>\n\t\tDlg_AlienGate_0404,\n\t\t///<summary>\n\t\t///Sorry to disturb you, guys, but I’ve got ships incoming. \n\t\t///</summary>\n\t\tDlg_AlienGate_0500,\n\t\t///<summary>\n\t\t///I’m picking a signal… it’s…\n\t\t///</summary>\n\t\tDlg_AlienGate_0501,\n\t\t///<summary>\n\t\t///How nice to see you again, my… friends!\n\t\t///</summary>\n\t\tDlg_AlienGate_0502,\n\t\t///<summary>\n\t\t///Damn it. Two Russian motherships are approaching, too. \n\t\t///</summary>\n\t\tDlg_AlienGate_0503,\n\t\t///<summary>\n\t\t///What is this, a family reunion? \n\t\t///</summary>\n\t\tDlg_AlienGate_0504,\n\t\t///<summary>\n\t\t///What are you doing here? And what’s with your new Russian buddies?\n\t\t///</summary>\n\t\tDlg_AlienGate_0505,\n\t\t///<summary>\n\t\t///Perhaps we were just in the neighborhood and your behavior piqued our curiosity. \n\t\t///</summary>\n\t\tDlg_AlienGate_0506,\n\t\t///<summary>\n\t\t///Spit it out, Francis. What are you up to?\n\t\t///</summary>\n\t\tDlg_AlienGate_0507,\n\t\t///<summary>\n\t\t///Tracking device. On your mother ship. \n\t\t///</summary>\n\t\tDlg_AlienGate_0508,\n\t\t///<summary>\n\t\t///I’ve been following you for quite some time.\n\t\t///</summary>\n\t\tDlg_AlienGate_0509,\n\t\t///<summary>\n\t\t///After all, business is business.\n\t\t///</summary>\n\t\tDlg_AlienGate_0510,\n\t\t///<summary>\n\t\t///How much did they offer you?\n\t\t///</summary>\n\t\tDlg_AlienGate_0511,\n\t\t///<summary>\n\t\t///Come on, how much?\n\t\t///</summary>\n\t\tDlg_AlienGate_0512,\n\t\t///<summary>\n\t\t///Let’s just say I could buy half of Rime with the deposit alone. \n\t\t///</summary>\n\t\tDlg_AlienGate_0513,\n\t\t///<summary>\n\t\t///Nonsense, the Russians don’t have that kind of cash. \n\t\t///</summary>\n\t\tDlg_AlienGate_0514,\n\t\t///<summary>\n\t\t///You’d be surprised. Russians in general might be poor, …\n\t\t///</summary>\n\t\tDlg_AlienGate_0515,\n\t\t///<summary>\n\t\t///…but the people we are dealing with… not so. \n\t\t///</summary>\n\t\tDlg_AlienGate_0516,\n\t\t///<summary>\n\t\t///And it’s not just Russian money in all this.\n\t\t///</summary>\n\t\tDlg_AlienGate_0517,\n\t\t///<summary>\n\t\t///Well, I’m glad you’ll be able to afford a top-notch funeral. \n\t\t///</summary>\n\t\tDlg_AlienGate_0518,\n\t\t///<summary>\n\t\t///While you won’t be, Mr. Rainier. Sorry to see your heroic story end here. \n\t\t///</summary>\n\t\tDlg_AlienGate_0519,\n\t\t///<summary>\n\t\t///Soon, no one will remember you. \n\t\t///</summary>\n\t\tDlg_AlienGate_0520,\n\t\t///<summary>\n\t\t///I, on the other hand, represent the present and the future!\n\t\t///</summary>\n\t\tDlg_AlienGate_0521,\n\t\t///<summary>\n\t\t///What else did they offer you? \n\t\t///</summary>\n\t\tDlg_AlienGate_0522,\n\t\t///<summary>\n\t\t///Do you know who you are speaking to?\n\t\t///</summary>\n\t\tDlg_AlienGate_0523,\n\t\t///<summary>\n\t\t///Assistant Director of Research and Development at Rime, OmniCorp.\n\t\t///</summary>\n\t\tDlg_AlienGate_0524,\n\t\t///<summary>\n\t\t///Career advancement?\n\t\t///</summary>\n\t\tDlg_AlienGate_0525,\n\t\t///<summary>\n\t\t///My heart and soul are the same color as yours. Like you, I want money, I want recognition…\n\t\t///</summary>\n\t\tDlg_AlienGate_0526,\n\t\t///<summary>\n\t\t///…and I want to be the first human to set eyes on what our predecessors built here. \n\t\t///</summary>\n\t\tDlg_AlienGate_0527,\n\t\t///<summary>\n\t\t///I must admit, he’s right about that. We do want the same. \n\t\t///</summary>\n\t\tDlg_AlienGate_0528,\n\t\t///<summary>\n\t\t///True. He is a traitor and I want him dead. But I do understand his motives.\n\t\t///</summary>\n\t\tDlg_AlienGate_0529,\n\t\t///<summary>\n\t\t///Why did you join with the Russians? Wouldn’t you have been in a better position with us? \n\t\t///</summary>\n\t\tDlg_AlienGate_0530,\n\t\t///<summary>\n\t\t///I was… considering that, Mr. Rainier. \n\t\t///</summary>\n\t\tDlg_AlienGate_0531,\n\t\t///<summary>\n\t\t///But the Russians have… well… Much more than you could ever imagine. \n\t\t///</summary>\n\t\tDlg_AlienGate_0532,\n\t\t///<summary>\n\t\t///They’ll use you and kill you as soon as they’re finished here.\n\t\t///</summary>\n\t\tDlg_AlienGate_0533,\n\t\t///<summary>\n\t\t///I don’t see that happening.\n\t\t///</summary>\n\t\tDlg_AlienGate_0534,\n\t\t///<summary>\n\t\t///You see, I have access to technology you and they can only dream of…\n\t\t///</summary>\n\t\tDlg_AlienGate_0535,\n\t\t///<summary>\n\t\t///…at least for the few next years.\n\t\t///</summary>\n\t\tDlg_AlienGate_0536,\n\t\t///<summary>\n\t\t///Without me, they can’t take one step toward analyzing and reproducing those alien devices.\n\t\t///</summary>\n\t\tDlg_AlienGate_0537,\n\t\t///<summary>\n\t\t///Reproducing?\n\t\t///</summary>\n\t\tDlg_AlienGate_0538,\n\t\t///<summary>\n\t\t///You really think we are archeologists, young Mr. Rainier?\n\t\t///</summary>\n\t\tDlg_AlienGate_0539,\n\t\t///<summary>\n\t\t///They’ve got top engineers and scientists of their own. Loyal ones, too.\n\t\t///</summary>\n\t\tDlg_AlienGate_0540,\n\t\t///<summary>\n\t\t///Not traitors. I’m surprised you fell for their fairy tale; \n\t\t///</summary>\n\t\tDlg_AlienGate_0541,\n\t\t///<summary>\n\t\t///I thought you were smarter than that.\n\t\t///</summary>\n\t\tDlg_AlienGate_0542,\n\t\t///<summary>\n\t\t///We’ve talked enough. I wish you swift death, no pain. Let us resolve this once and for all\n\t\t///</summary>\n\t\tDlg_AlienGate_0543,\n\t\t///<summary>\n\t\t///Fine. Not the end I hoped for, but at least we’ll enjoy the sweet taste of revenge.\n\t\t///</summary>\n\t\tDlg_AlienGate_0544,\n\t\t///<summary>\n\t\t///Men, women, do your best. \n\t\t///</summary>\n\t\tDlg_AlienGate_0545,\n\t\t///<summary>\n\t\t///We won’t have another chance. Make it final.\n\t\t///</summary>\n\t\tDlg_AlienGate_0546,\n\t\t///<summary>\n\t\t///Marcus, just a side note. We have one mother ship and four fighters…\n\t\t///</summary>\n\t\tDlg_AlienGate_0547,\n\t\t///<summary>\n\t\t///…and they have three mother ships and probably dozens of fighters…\n\t\t///</summary>\n\t\tDlg_AlienGate_0548,\n\t\t///<summary>\n\t\t///I assume you have a plan?\n\t\t///</summary>\n\t\tDlg_AlienGate_0549,\n\t\t///<summary>\n\t\t///Yes… Improvise!\n\t\t///</summary>\n\t\tDlg_AlienGate_0550,\n\t\t///<summary>\n\t\t///Go, go, go!!! \n\t\t///</summary>\n\t\tDlg_AlienGate_0600,\n\t\t///<summary>\n\t\t///Use the asteroids as cover. Guerilla warfare.\n\t\t///</summary>\n\t\tDlg_AlienGate_0601,\n\t\t///<summary>\n\t\t///Madelyn, avoid direct fire and get out of here.\n\t\t///</summary>\n\t\tDlg_AlienGate_0602,\n\t\t///<summary>\n\t\t///We can do this! \n\t\t///</summary>\n\t\tDlg_AlienGate_0603,\n\t\t///<summary>\n\t\t///Shoot that mother ship down!\n\t\t///</summary>\n\t\tDlg_AlienGate_0604,\n\t\t///<summary>\n\t\t///Madelyn, are you ok?\n\t\t///</summary>\n\t\tDlg_AlienGate_0700,\n\t\t///<summary>\n\t\t///That was close but I’m fine.\n\t\t///</summary>\n\t\tDlg_AlienGate_0800,\n\t\t///<summary>\n\t\t///I’ll regroup with you in a couple of minutes to give you some fire support.\n\t\t///</summary>\n\t\tDlg_AlienGate_0801,\n\t\t///<summary>\n\t\t///This position isn’t safe. Enemy ships will be here in no time.\n\t\t///</summary>\n\t\tDlg_AlienGate_0802,\n\t\t///<summary>\n\t\t///Let’s meet at these new coordinates. Be the hunter, not the prey.\n\t\t///</summary>\n\t\tDlg_AlienGate_0803,\n\t\t///<summary>\n\t\t///I’ll be there soon.\n\t\t///</summary>\n\t\tDlg_AlienGate_0804,\n\t\t///<summary>\n\t\t///Enemy ships incoming, let’s hurry.\n\t\t///</summary>\n\t\tDlg_AlienGate_0805,\n\t\t///<summary>\n\t\t///Here she comes, at last!\n\t\t///</summary>\n\t\tDlg_AlienGate_0900,\n\t\t///<summary>\n\t\t///Looks like we’re safe for the moment. Did you guys come up with a plan?\n\t\t///</summary>\n\t\tDlg_AlienGate_0901,\n\t\t///<summary>\n\t\t///Those Russian battleships are heavily fortified. \n\t\t///</summary>\n\t\tDlg_AlienGate_0902,\n\t\t///<summary>\n\t\t///There’s no way we could charge them and survive. \n\t\t///</summary>\n\t\tDlg_AlienGate_0903,\n\t\t///<summary>\n\t\t///Let’s use the size and speed of your ships to our advantage.\n\t\t///</summary>\n\t\tDlg_AlienGate_0904,\n\t\t///<summary>\n\t\t///Their guns are big, but can’t easily target a small object. \n\t\t///</summary>\n\t\tDlg_AlienGate_0905,\n\t\t///<summary>\n\t\t///I notice their ships are heavily armored on the side, but not the back. \n\t\t///</summary>\n\t\tDlg_AlienGate_0906,\n\t\t///<summary>\n\t\t///We can duck behind asteroids and strike them from behind. \n\t\t///</summary>\n\t\tDlg_AlienGate_0907,\n\t\t///<summary>\n\t\t///I’ll just avoid their mother ships and give you support fire against their fighters. \n\t\t///</summary>\n\t\tDlg_AlienGate_0908,\n\t\t///<summary>\n\t\t///We can do this if we focus on their vital systems. \n\t\t///</summary>\n\t\tDlg_AlienGate_0909,\n\t\t///<summary>\n\t\t///This is the fight of our lives, guys. We either die now or remember this battle forever.\n\t\t///</summary>\n\t\tDlg_AlienGate_0910,\n\t\t///<summary>\n\t\t///Apollo, Tarja, Valentyn, come with me. We’ll start with the mothership on the right wing.\n\t\t///</summary>\n\t\tDlg_AlienGate_0911,\n\t\t///<summary>\n\t\t///Madelyn – hold off their fighters till we’re done. \n\t\t///</summary>\n\t\tDlg_AlienGate_0912,\n\t\t///<summary>\n\t\t///Affirmative!\n\t\t///</summary>\n\t\tDlg_AlienGate_0913,\n\t\t///<summary>\n\t\t///They are trying to outflank us, shoot them down!\n\t\t///</summary>\n\t\tDlg_AlienGate_1000,\n\t\t///<summary>\n\t\t///We need to take cover behind the asteroids, there are too many rocket turrets.\n\t\t///</summary>\n\t\tDlg_AlienGate_1001,\n\t\t///<summary>\n\t\t///Enemy fighters approaching!\n\t\t///</summary>\n\t\tDlg_AlienGate_1002,\n\t\t///<summary>\n\t\t///We have to stay behind asteroids no matter what.\n\t\t///</summary>\n\t\tDlg_AlienGate_1003,\n\t\t///<summary>\n\t\t///We made it!\n\t\t///</summary>\n\t\tDlg_AlienGate_1100,\n\t\t///<summary>\n\t\t///They’ve boarded the ship. Fighters, engage the threat! Top priority!\n\t\t///</summary>\n\t\tDlg_AlienGate_1200,\n\t\t///<summary>\n\t\t///Now comes the hardest part. We have to destroy the ship from inside.\n\t\t///</summary>\n\t\tDlg_AlienGate_1201,\n\t\t///<summary>\n\t\t///Overcharging the generators should do the job and buy us some time to leave the ship.\n\t\t///</summary>\n\t\tDlg_AlienGate_1202,\n\t\t///<summary>\n\t\t///We have to start with the power generator. \n\t\t///</summary>\n\t\tDlg_AlienGate_1203,\n\t\t///<summary>\n\t\t///Then we’ll sabotage the protective devices on the core engine. \n\t\t///</summary>\n\t\tDlg_AlienGate_1204,\n\t\t///<summary>\n\t\t///Great job, quickly overcharge it and get out.\n\t\t///</summary>\n\t\tDlg_AlienGate_1300,\n\t\t///<summary>\n\t\t///On our way!\n\t\t///</summary>\n\t\tDlg_AlienGate_1301,\n\t\t///<summary>\n\t\t///The core should be located in the upper floors of the ship.\n\t\t///</summary>\n\t\tDlg_AlienGate_1302,\n\t\t///<summary>\n\t\t///We have to get out as soon as possible after we sabotage this one.\n\t\t///</summary>\n\t\tDlg_AlienGate_1400,\n\t\t///<summary>\n\t\t///The core is highly unstable; we have about 40 seconds to get out. \n\t\t///</summary>\n\t\tDlg_AlienGate_1500,\n\t\t///<summary>\n\t\t///No sightseeing on the way then.\n\t\t///</summary>\n\t\tDlg_AlienGate_1501,\n\t\t///<summary>\n\t\t///Just go!! \n\t\t///</summary>\n\t\tDlg_AlienGate_1502,\n\t\t///<summary>\n\t\t///Well, that was close. \n\t\t///</summary>\n\t\tDlg_AlienGate_1600,\n\t\t///<summary>\n\t\t///Quick, get to Madelyn. The Russian ships are going to be here soon.\n\t\t///</summary>\n\t\tDlg_AlienGate_1601,\n\t\t///<summary>\n\t\t///Apollo, make sure to stop by here at Sapho to refuel and have your ship repaired! \n\t\t///</summary>\n\t\tDlg_AlienGate_1700,\n\t\t///<summary>\n\t\t///I think I still have some spare equipment and ammunition. \n\t\t///</summary>\n\t\tDlg_AlienGate_1701,\n\t\t///<summary>\n\t\t///Now let’s move on to the second Russian mothership.\n\t\t///</summary>\n\t\tDlg_AlienGate_1702,\n\t\t///<summary>\n\t\t///They’re going to be prepared this time; this won’t be as easy as the first one.\n\t\t///</summary>\n\t\tDlg_AlienGate_1703,\n\t\t///<summary>\n\t\t///Let’s just do it!\n\t\t///</summary>\n\t\tDlg_AlienGate_1704,\n\t\t///<summary>\n\t\t///Enemy approaching…\n\t\t///</summary>\n\t\tDlg_AlienGate_1800,\n\t\t///<summary>\n\t\t///Quickly, get in, there are no asteroids to cover us. \n\t\t///</summary>\n\t\tDlg_AlienGate_1900,\n\t\t///<summary>\n\t\t///Guys you know what to do, so let’s get this done.\n\t\t///</summary>\n\t\tDlg_AlienGate_2000,\n\t\t///<summary>\n\t\t///Affirmative!\n\t\t///</summary>\n\t\tDlg_AlienGate_2001,\n\t\t///<summary>\n\t\t///What is this? Armored doors?\n\t\t///</summary>\n\t\tDlg_AlienGate_2200,\n\t\t///<summary>\n\t\t///They’re as tough as the walls of the ship!\n\t\t///</summary>\n\t\tDlg_AlienGate_2201,\n\t\t///<summary>\n\t\t///You’ve got to find a way through. There has to be a control room somewhere. \n\t\t///</summary>\n\t\tDlg_AlienGate_2202,\n\t\t///<summary>\n\t\t///Follow me. \n\t\t///</summary>\n\t\tDlg_AlienGate_2203,\n\t\t///<summary>\n\t\t///Check the hub systems!\n\t\t///</summary>\n\t\tDlg_AlienGate_2300,\n\t\t///<summary>\n\t\t///Got it, the door should be open now! \n\t\t///</summary>\n\t\tDlg_AlienGate_2301,\n\t\t///<summary>\n\t\t///What is this? Madelyn, any ideas?\n\t\t///</summary>\n\t\tDlg_AlienGate_2400,\n\t\t///<summary>\n\t\t///It looks like a laboratory. It must be where they study the alien technology.\n\t\t///</summary>\n\t\tDlg_AlienGate_2401,\n\t\t///<summary>\n\t\t///It might be wise to get all their data, before we blow this whole thing up. \n\t\t///</summary>\n\t\tDlg_AlienGate_2402,\n\t\t///<summary>\n\t\t///Workin’ on it.\n\t\t///</summary>\n\t\tDlg_AlienGate_2403,\n\t\t///<summary>\n\t\t///Ok, let’s go. Any interesting findings?\n\t\t///</summary>\n\t\tDlg_AlienGate_2500,\n\t\t///<summary>\n\t\t///I don’t have time to go through all the data right now. But it looks… \n\t\t///</summary>\n\t\tDlg_AlienGate_2501,\n\t\t///<summary>\n\t\t///…promising. We’ll discuss it with Thomas later.\n\t\t///</summary>\n\t\tDlg_AlienGate_2502,\n\t\t///<summary>\n\t\t///Go, go, go!\n\t\t///</summary>\n\t\tDlg_AlienGate_2600,\n\t\t///<summary>\n\t\t///Enemy interceptors again!\n\t\t///</summary>\n\t\tDlg_AlienGate_2601,\n\t\t///<summary>\n\t\t///Never mind, there’s no time for fighting. Get out now!\n\t\t///</summary>\n\t\tDlg_AlienGate_2602,\n\t\t///<summary>\n\t\t///Great job! You’ve done it, guys.\n\t\t///</summary>\n\t\tDlg_AlienGate_2700,\n\t\t///<summary>\n\t\t///What? How?\n\t\t///</summary>\n\t\tDlg_AlienGate_2701,\n\t\t///<summary>\n\t\t///Now let’s hunt down Reef once and for all.\n\t\t///</summary>\n\t\tDlg_AlienGate_2702,\n\t\t///<summary>\n\t\t///Any more… precise plan?\n\t\t///</summary>\n\t\tDlg_AlienGate_2703,\n\t\t///<summary>\n\t\t///Cut off his weapons and generators. That should do the trick. \n\t\t///</summary>\n\t\tDlg_AlienGate_2704,\n\t\t///<summary>\n\t\t///Confirmed. \n\t\t///</summary>\n\t\tDlg_AlienGate_2705,\n\t\t///<summary>\n\t\t///This is not the last time we will meet.\n\t\t///</summary>\n\t\tDlg_AlienGate_2800,\n\t\t///<summary>\n\t\t///Quick, stop him, he’s about to take off.\n\t\t///</summary>\n\t\tDlg_AlienGate_2801,\n\t\t///<summary>\n\t\t///He’s too fast. Madelyn, block his way quick!\n\t\t///</summary>\n\t\tDlg_AlienGate_2802,\n\t\t///<summary>\n\t\t///I’m trying!\n\t\t///</summary>\n\t\tDlg_AlienGate_2803,\n\t\t///<summary>\n\t\t///What the hell…!\n\t\t///</summary>\n\t\tDlg_AlienGate_2900,\n\t\t///<summary>\n\t\t///Nice! You got him.\n\t\t///</summary>\n\t\tDlg_AlienGate_2901,\n\t\t///<summary>\n\t\t///Quickly, shoot the pursuers down!!!\n\t\t///</summary>\n\t\tDlg_AlienGate_3000,\n\t\t///<summary>\n\t\t///Did you get him?\n\t\t///</summary>\n\t\tDlg_AlienGate_3200,\n\t\t///<summary>\n\t\t///Of course we did… Where have you been?\n\t\t///</summary>\n\t\tDlg_AlienGate_3201,\n\t\t///<summary>\n\t\t///I found something; you’re not going to believe this. Get in here, quick.\n\t\t///</summary>\n\t\tDlg_AlienGate_3202,\n\t\t///<summary>\n\t\t///Oh my God!\n\t\t///</summary>\n\t\tDlg_AlienGate_3300,\n\t\t///<summary>\n\t\t///So this is the source of the signal. \n\t\t///</summary>\n\t\tDlg_AlienGate_3301,\n\t\t///<summary>\n\t\t///I must admit I wasn’t expecting something quite so… holy crap.\n\t\t///</summary>\n\t\tDlg_AlienGate_3302,\n\t\t///<summary>\n\t\t///This is the moment I’ve waited for my entire life. \n\t\t///</summary>\n\t\tDlg_AlienGate_3303,\n\t\t///<summary>\n\t\t///Any idea what it is?\n\t\t///</summary>\n\t\tDlg_AlienGate_3304,\n\t\t///<summary>\n\t\t///A door. To another world. A wormhole generator, a gateway device…\n\t\t///</summary>\n\t\tDlg_AlienGate_3305,\n\t\t///<summary>\n\t\t///Can we… use it?\n\t\t///</summary>\n\t\tDlg_AlienGate_3306,\n\t\t///<summary>\n\t\t///It does not seem operational at the moment. \n\t\t///</summary>\n\t\tDlg_AlienGate_3307,\n\t\t///<summary>\n\t\t///If we find a way to make it operational, it will take us –\n\t\t///</summary>\n\t\tDlg_AlienGate_3308,\n\t\t///<summary>\n\t\t///To its other side. \n\t\t///</summary>\n\t\tDlg_AlienGate_3309,\n\t\t///<summary>\n\t\t///Another galaxy… or maybe even another universe with its own laws of physics. \n\t\t///</summary>\n\t\tDlg_AlienGate_3310,\n\t\t///<summary>\n\t\t///So what do we do?\n\t\t///</summary>\n\t\tDlg_AlienGate_3311,\n\t\t///<summary>\n\t\t///I can’t remember ever being this far from the Sun.\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0101,\n\t\t///<summary>\n\t\t///Ehm. So, Madelyn, are we close?\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0108,\n\t\t///<summary>\n\t\t///According to my scans, there is a small base deeper in the asteroid field…\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0110,\n\t\t///<summary>\n\t\t///I marked it on your GPS. \n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0111,\n\t\t///<summary>\n\t\t///On our way.\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0112,\n\t\t///<summary>\n\t\t///Who is this Barth, again?\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0113,\n\t\t///<summary>\n\t\t///He was one of my professors back at Greenbelt…\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0114,\n\t\t///<summary>\n\t\t///Thomas Barth, a brilliant anthropologist from the old days…\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0115,\n\t\t///<summary>\n\t\t///Sounds like he taught you more than anthropology.\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0116,\n\t\t///<summary>\n\t\t///Marcus!\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0117,\n\t\t///<summary>\n\t\t///Please go on, Madelyn. Any idea where we might find him?\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0118,\n\t\t///<summary>\n\t\t///He was always this kind of crazy scientist guy…\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0119,\n\t\t///<summary>\n\t\t///The last time I saw him was before he left on his “hermitage”.\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0120,\n\t\t///<summary>\n\t\t///Hermitage?\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0121,\n\t\t///<summary>\n\t\t///This guy REALLY doesn’t like neighbors.\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0122,\n\t\t///<summary>\n\t\t///This place looks kinda romantic even to me. \n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0201,\n\t\t///<summary>\n\t\t///Greetings!\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0301,\n\t\t///<summary>\n\t\t///Welcome, travelers! Make yourselves at home.\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0302,\n\t\t///<summary>\n\t\t///Are you Thomas Barth?\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0304,\n\t\t///<summary>\n\t\t///– He is. –\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0305,\n\t\t///<summary>\n\t\t///I am.\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0306,\n\t\t///<summary>\n\t\t///What brings you to these lands? Exploration? Adventure?\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0307,\n\t\t///<summary>\n\t\t///Thomas, remember me? Madelyn Lloyd…\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0308,\n\t\t///<summary>\n\t\t///I was in your graduate anthropology class at Greenbelt.\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0309,\n\t\t///<summary>\n\t\t///Fraulein! How could I forget…\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0310,\n\t\t///<summary>\n\t\t///I always knew we would meet again! It was destiny.\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0311,\n\t\t///<summary>\n\t\t///Actually, Barth, we came to see you.\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0312,\n\t\t///<summary>\n\t\t///A Russian paramilitary group searching for something they call “alien artifacts”…\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0313,\n\t\t///<summary>\n\t\t///…has your name on its list.\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0314,\n\t\t///<summary>\n\t\t///Any idea what they may be up to?\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0315,\n\t\t///<summary>\n\t\t///Is this so? \n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0316,\n\t\t///<summary>\n\t\t///I’ll show you all the data we found. That will explain everything.\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0317,\n\t\t///<summary>\n\t\t///My observations were correct! E-everyone – everyone thought…\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0318,\n\t\t///<summary>\n\t\t///I was a madman, ranting about alien relics.\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0319,\n\t\t///<summary>\n\t\t///Now, fate has brought you here to be my… apostles!\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0320,\n\t\t///<summary>\n\t\t///Let’s not get carried away.\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0321,\n\t\t///<summary>\n\t\t///I – I never thought of you as a madman, Thomas!\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0322,\n\t\t///<summary>\n\t\t///I know. But most of the others did. That’s why I had to leave Greenbelt…\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0323,\n\t\t///<summary>\n\t\t///Not because I grew old and tired, but because no one – except those…\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0324,\n\t\t///<summary>\n\t\t///…in my closest circle – believed in my findings.\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0325,\n\t\t///<summary>\n\t\t///So, what are you saying?\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0326,\n\t\t///<summary>\n\t\t///I am prepared to offer my services and full support to you.\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0327,\n\t\t///<summary>\n\t\t///…In exchange for…?\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0328,\n\t\t///<summary>\n\t\t///No exchange necessary. However, consider my situation here. I am cut off from…\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0329,\n\t\t///<summary>\n\t\t///…communication and commerce routes. And those damn Raider war parties have…\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0330,\n\t\t///<summary>\n\t\t///…already hit my base twice. Each time they destroyed or stole some of my equipment.\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0331,\n\t\t///<summary>\n\t\t///We can take you with us. \n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0332,\n\t\t///<summary>\n\t\t///I’m of better use here with my lab and tools. \n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0333,\n\t\t///<summary>\n\t\t///So what can we do?\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0334,\n\t\t///<summary>\n\t\t///In case you happen to run into some long-range antenna components, bring them here and…\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0335,\n\t\t///<summary>\n\t\t///…help me build an array. That way we can stay in contact over a distance.\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0336,\n\t\t///<summary>\n\t\t///Also, one of the Raider warparties has established a temporary camp a few asteroids…\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0337,\n\t\t///<summary>\n\t\t///…from here. It’s only a matter of time before they come here to loot again.\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0338,\n\t\t///<summary>\n\t\t///You’d like us to exterminate them and secure the area?\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0339,\n\t\t///<summary>\n\t\t///It… would be helpful. \n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0340,\n\t\t///<summary>\n\t\t///Fine. \n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0341,\n\t\t///<summary>\n\t\t///So that’s it. Knock out a Raider warparty and search for long-range transmitter parts…\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0342,\n\t\t///<summary>\n\t\t///On our way.\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0344,\n\t\t///<summary>\n\t\t///We can talk on the way. There are still issues to be… discussed.\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0345,\n\t\t///<summary>\n\t\t///Okay, team, I suggest dealing with those Raiders first.\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0401,\n\t\t///<summary>\n\t\t///Agreed. Best to make sure Barth will be here next time we arrive.\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0402,\n\t\t///<summary>\n\t\t///Thomas? So you believe there’s something to this?\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0403,\n\t\t///<summary>\n\t\t///That there are aliens involved?\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0404,\n\t\t///<summary>\n\t\t///No one has ever seen one… At least not in the past few thousand years.\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0405,\n\t\t///<summary>\n\t\t///Past few thousand years?\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0406,\n\t\t///<summary>\n\t\t///Oh, yes, I remember from your classes: you believe there were “leaps” in the evolution…\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0407,\n\t\t///<summary>\n\t\t///…of mankind.\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0408,\n\t\t///<summary>\n\t\t///“Leaps”?\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0409,\n\t\t///<summary>\n\t\t///Mankind’s evolution was not, shall we say, continuous. There are very important missing…\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0410,\n\t\t///<summary>\n\t\t///…links in the chain. You see, our evolution typically progressed in a gradual manner…\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0411,\n\t\t///<summary>\n\t\t///…for long periods of time.\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0412,\n\t\t///<summary>\n\t\t///But at certain evolutionary moments? A leap occurred. A leap for which we can find…\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0413,\n\t\t///<summary>\n\t\t///…no rational explanation.\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0414,\n\t\t///<summary>\n\t\t///Previously nonexistent genes appeared. Nothing that can be explained as a combination…\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0415,\n\t\t///<summary>\n\t\t///…of any known species.\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0416,\n\t\t///<summary>\n\t\t///Something new.\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0417,\n\t\t///<summary>\n\t\t///You’re suggesting that… we have… alien genes?\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0418,\n\t\t///<summary>\n\t\t///I do. Most indications suggest that our species was intentionally altered. \n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0419,\n\t\t///<summary>\n\t\t///I call it genome implantation. Something we humans have been experimenting with for…\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0420,\n\t\t///<summary>\n\t\t///…the last few decades. But there is… indirect evidence to believe that this has been…\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0421,\n\t\t///<summary>\n\t\t///…done before. To us. Intentionally.\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0422,\n\t\t///<summary>\n\t\t///What the hell does that have to do with us and our current situation?\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0423,\n\t\t///<summary>\n\t\t///And what are we supposed to do about it? I mean – right now.\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0424,\n\t\t///<summary>\n\t\t///Well, don’t forget that a pirate base was also mentioned in the Russians’ communication.\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0425,\n\t\t///<summary>\n\t\t///Right. We will find out sooner or later. Once you take out the Raiders, check out that…\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0426,\n\t\t///<summary>\n\t\t///…location you know about from the Russians.\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0427,\n\t\t///<summary>\n\t\t///This must be their place.\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0501,\n\t\t///<summary>\n\t\t///Definitely. There are no reported settlements in this area. Gotta be the Raiders’ camp.\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0502,\n\t\t///<summary>\n\t\t///And… our plan?\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0503,\n\t\t///<summary>\n\t\t///I don’t expect them to negotiate. All these people know is looting and plundering.\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0504,\n\t\t///<summary>\n\t\t///You dare approach our settlement?\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0601,\n\t\t///<summary>\n\t\t///We’re here to end your looting spree.\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0602,\n\t\t///<summary>\n\t\t///You are either brave or foolish. Or both. I’ll do you the service…\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0603,\n\t\t///<summary>\n\t\t///…of letting you die like a man.\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0604,\n\t\t///<summary>\n\t\t///Challenge accepted.\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0605,\n\t\t///<summary>\n\t\t///Looks like we’re done here.\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0701,\n\t\t///<summary>\n\t\t///Good job, guys!\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0702,\n\t\t///<summary>\n\t\t///Now to the pirate base in the Damien Dust Field. The one mentioned in the data from Laika.\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0703,\n\t\t///<summary>\n\t\t///Your wish is my command. Jump in, I’ve already set the course.\n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0704,\n\t\t///<summary>\n\t\t///Affirmative.  \n\t\t///</summary>\n\t\tDlg_BarthsMoonConvince_0705,\n\t\t///<summary>\n\t\t///I’ll get you, freak!\n\t\t///</summary>\n\t\tDlg_Challenger_0100_BEHIND01,\n\t\t///<summary>\n\t\t///You think you can outrun me?\n\t\t///</summary>\n\t\tDlg_Challenger_0100_BEHIND02,\n\t\t///<summary>\n\t\t///Don’t get used to the lead!\n\t\t///</summary>\n\t\tDlg_Challenger_0100_BEHIND03,\n\t\t///<summary>\n\t\t///Comin’ to get ya!\n\t\t///</summary>\n\t\tDlg_Challenger_0100_BEHIND04,\n\t\t///<summary>\n\t\t///You won’t get far!\n\t\t///</summary>\n\t\tDlg_Challenger_0100_BEHIND05,\n\t\t///<summary>\n\t\t///Who’s the boss? Ha, ha, I’m unstoppable!\n\t\t///</summary>\n\t\tDlg_Challenger_0100_FRONT01,\n\t\t///<summary>\n\t\t///Loser! Eat my wind!\n\t\t///</summary>\n\t\tDlg_Challenger_0100_FRONT02,\n\t\t///<summary>\n\t\t///My grandma flies faster than you!\n\t\t///</summary>\n\t\tDlg_Challenger_0100_FRONT03,\n\t\t///<summary>\n\t\t///Stop wasting your time. You’ve already lost!\n\t\t///</summary>\n\t\tDlg_Challenger_0100_FRONT04,\n\t\t///<summary>\n\t\t///See my back? That’s all you’ll ever see!\n\t\t///</summary>\n\t\tDlg_Challenger_0100_FRONT05,\n\t\t///<summary>\n\t\t///The Junkyard again. (grunts) Let’s just do what we came here for and get out.\n\t\t///</summary>\n\t\tDlg_JunkyardReturn_0100,\n\t\t///<summary>\n\t\t///You don’t want to stay for a little R&R? Or maybe some… research?\n\t\t///</summary>\n\t\tDlg_JunkyardReturn_0101,\n\t\t///<summary>\n\t\t///Look at these people. This place makes me sick.\n\t\t///</summary>\n\t\tDlg_JunkyardReturn_0102,\n\t\t///<summary>\n\t\t///It’s none of our business. \n\t\t///</summary>\n\t\tDlg_JunkyardReturn_0103,\n\t\t///<summary>\n\t\t///We’re here for Manjeet. He should be somewhere in the city. Let’s find him.\n\t\t///</summary>\n\t\tDlg_JunkyardReturn_0104,\n\t\t///<summary>\n\t\t///Oh, my friends. You have made it. So nice to see you again…\n\t\t///</summary>\n\t\tDlg_JunkyardReturn_0200,\n\t\t///<summary>\n\t\t///Do you have good news for me?\n\t\t///</summary>\n\t\tDlg_JunkyardReturn_0201,\n\t\t///<summary>\n\t\t///How ’bout a fully loaded transporter waiting outside the city.\n\t\t///</summary>\n\t\tDlg_JunkyardReturn_0202,\n\t\t///<summary>\n\t\t///Wonderful! It’s really quite a pleasure to do business with you my friends.\n\t\t///</summary>\n\t\tDlg_JunkyardReturn_0203,\n\t\t///<summary>\n\t\t///We’ve fulfilled our part of the agreement, now it’s your turn. \n\t\t///</summary>\n\t\tDlg_JunkyardReturn_0204,\n\t\t///<summary>\n\t\t///I believe you have a little souvenir for us.\n\t\t///</summary>\n\t\tDlg_JunkyardReturn_0205,\n\t\t///<summary>\n\t\t///In time, my friend. You don’t rush fine wine. I will inspect the cargo first.\n\t\t///</summary>\n\t\tDlg_JunkyardReturn_0206,\n\t\t///<summary>\n\t\t///Meet me later by the transporter and don’t try anything fun–\n\t\t///</summary>\n\t\tDlg_JunkyardReturn_0207,\n\t\t///<summary>\n\t\t///Really? You can’t be serious? You can't be serious! This is your ship? This is your ship?\n\t\t///</summary>\n\t\tDlg_JunkyardReturn_0208,\n\t\t///<summary>\n\t\t///Piss off, pal. We don’t have time for children’s games\n\t\t///</summary>\n\t\tDlg_JunkyardReturn_0209,\n\t\t///<summary>\n\t\t///No, seriously. Where did you get this thing? No, let me guess – you built it yourself. \n\t\t///</summary>\n\t\tDlg_JunkyardReturn_0210,\n\t\t///<summary>\n\t\t///From dog shit. That explains a lot…\n\t\t///</summary>\n\t\tDlg_JunkyardReturn_0211,\n\t\t///<summary>\n\t\t///Well, at least we don’t live in dog shit. \n\t\t///</summary>\n\t\tDlg_JunkyardReturn_0212,\n\t\t///<summary>\n\t\t///My ship could eat yours for breakfast and crap out the bones.\n\t\t///</summary>\n\t\tDlg_JunkyardReturn_0213,\n\t\t///<summary>\n\t\t///Ohh, tough guy. Let’s see what you’ve got. \n\t\t///</summary>\n\t\tDlg_JunkyardReturn_0214,\n\t\t///<summary>\n\t\t///Me and you, one lap around the Junkyard. Or are you too scared?\n\t\t///</summary>\n\t\tDlg_JunkyardReturn_0215,\n\t\t///<summary>\n\t\t///Apollo, don’t do this. Junkyard racing is brutal. It’s not worth the risk.\n\t\t///</summary>\n\t\tDlg_JunkyardReturn_0216,\n\t\t///<summary>\n\t\t///And we don’t have time. \n\t\t///</summary>\n\t\tDlg_JunkyardReturn_0217,\n\t\t///<summary>\n\t\t///It’ll only take a few minutes. Someone needs to teach this guy some respect.\n\t\t///</summary>\n\t\tDlg_JunkyardReturn_0218,\n\t\t///<summary>\n\t\t///Ha! That’s the word. So let’s get it on.\n\t\t///</summary>\n\t\tDlg_JunkyardReturn_0219,\n\t\t///<summary>\n\t\t///When you’re done, come back to me.\n\t\t///</summary>\n\t\tDlg_JunkyardReturn_0220,\n\t\t///<summary>\n\t\t///You’re going to beg for my mercy.\n\t\t///</summary>\n\t\tDlg_JunkyardReturn_0300,\n\t\t///<summary>\n\t\t///I’m shivering. Let’s get this over with.\n\t\t///</summary>\n\t\tDlg_JunkyardReturn_0301,\n\t\t///<summary>\n\t\t///A little applause from your fans! Oh look, they like you! \n\t\t///</summary>\n\t\tDlg_JunkyardReturn_0400,\n\t\t///<summary>\n\t\t///You bastard! You’ll pay for this, big time!\n\t\t///</summary>\n\t\tDlg_JunkyardReturn_0401,\n\t\t///<summary>\n\t\t///Oops, watch the road hazard!\n\t\t///</summary>\n\t\tDlg_JunkyardReturn_0500,\n\t\t///<summary>\n\t\t///Just blow it up! \n\t\t///</summary>\n\t\tDlg_JunkyardReturn_0501,\n\t\t///<summary>\n\t\t///Beware of those green clouds, they are highly radioactive toxic vapours! \n\t\t///</summary>\n\t\tDlg_JunkyardReturn_0600,\n\t\t///<summary>\n\t\t///Don’t give up! You’re past the worst! Keep it up!\n\t\t///</summary>\n\t\tDlg_JunkyardReturn_0700,\n\t\t///<summary>\n\t\t///Come on brother! Show him how to fly!\n\t\t///</summary>\n\t\tDlg_JunkyardReturn_0800,\n\t\t///<summary>\n\t\t///Minefield front and center. Careful!\n\t\t///</summary>\n\t\tDlg_JunkyardReturn_0900,\n\t\t///<summary>\n\t\t///Share some bullets with him. That should slow him down!\n\t\t///</summary>\n\t\tDlg_JunkyardReturn_1000,\n\t\t///<summary>\n\t\t///Ok, you’re heading into the last leg. The forge. Just don’t touch the walls!\n\t\t///</summary>\n\t\tDlg_JunkyardReturn_1100,\n\t\t///<summary>\n\t\t///I see you Apollo. You’re almost there! One more curve, then a straightaway to the finish!\n\t\t///</summary>\n\t\tDlg_JunkyardReturn_1200,\n\t\t///<summary>\n\t\t///That was awesome, brother! You owned him!\n\t\t///</summary>\n\t\tDlg_JunkyardReturn_1300,\n\t\t///<summary>\n\t\t///Nicely done, Apollo! Glad to see you in one piece.\n\t\t///</summary>\n\t\tDlg_JunkyardReturn_1301,\n\t\t///<summary>\n\t\t///That’s impossible! You couldn’t have won! \n\t\t///</summary>\n\t\tDlg_JunkyardReturn_1302,\n\t\t///<summary>\n\t\t///If you want a rematch, my grandma’s ready to roll.\n\t\t///</summary>\n\t\tDlg_JunkyardReturn_1303,\n\t\t///<summary>\n\t\t///Whatever. Get out of my sight before I really get pissed off.\n\t\t///</summary>\n\t\tDlg_JunkyardReturn_1304,\n\t\t///<summary>\n\t\t///Don’t you think you owe the victor a prize?\n\t\t///</summary>\n\t\tDlg_JunkyardReturn_1305,\n\t\t///<summary>\n\t\t///Your prize is me not killing you. IF you leave NOW.\n\t\t///</summary>\n\t\tDlg_JunkyardReturn_1306,\n\t\t///<summary>\n\t\t///Oh, he’s such a little weasel. \n\t\t///</summary>\n\t\tDlg_JunkyardReturn_1307,\n\t\t///<summary>\n\t\t///I wonder what his ship would look like turned to scrap metal…\n\t\t///</summary>\n\t\tDlg_JunkyardReturn_1308,\n\t\t///<summary>\n\t\t///Forget it. Your bullets are worth more than that piece of crap.\n\t\t///</summary>\n\t\tDlg_JunkyardReturn_1309,\n\t\t///<summary>\n\t\t///Yeah. I guess you’re right. Let’s just find Manjeet.\n\t\t///</summary>\n\t\tDlg_JunkyardReturn_1310,\n\t\t///<summary>\n\t\t///So, who won the race?\n\t\t///</summary>\n\t\tDlg_JunkyardReturn_1400,\n\t\t///<summary>\n\t\t///Three guesses. First two don’t count.\n\t\t///</summary>\n\t\tDlg_JunkyardReturn_1401,\n\t\t///<summary>\n\t\t///Glad to hear it. But there’s a little problem with your cargo…\n\t\t///</summary>\n\t\tDlg_JunkyardReturn_1402,\n\t\t///<summary>\n\t\t///What are you talking about? We almost killed ourselves for that stuff?!\n\t\t///</summary>\n\t\tDlg_JunkyardReturn_1403,\n\t\t///<summary>\n\t\t///TARJA, LOAD YOUR WEAPONS!!!\n\t\t///</summary>\n\t\tDlg_JunkyardReturn_1404,\n\t\t///<summary>\n\t\t///Just kidding, just kidding. Everything is fine. I will give you the item we agreed upon. \n\t\t///</summary>\n\t\tDlg_JunkyardReturn_1405,\n\t\t///<summary>\n\t\t///Valentin, my friend, you need to switch to decaf. \n\t\t///</summary>\n\t\tDlg_JunkyardReturn_1406,\n\t\t///<summary>\n\t\t///Sorry. When it comes to risking my life and not getting paid, I have “issues”.\n\t\t///</summary>\n\t\tDlg_JunkyardReturn_1407,\n\t\t///<summary>\n\t\t///Ok, just give us the artifact so we can get out of here.\n\t\t///</summary>\n\t\tDlg_JunkyardReturn_1408,\n\t\t///<summary>\n\t\t///I’m looking forward to never coming back here again.\n\t\t///</summary>\n\t\tDlg_JunkyardReturn_1409,\n\t\t///<summary>\n\t\t///Of course. I loaded it into the cargo hold of your mothership. \n\t\t///</summary>\n\t\tDlg_JunkyardReturn_1410,\n\t\t///<summary>\n\t\t///Copy that. Artifact loaded on Sapho.\n\t\t///</summary>\n\t\tDlg_JunkyardReturn_1411,\n\t\t///<summary>\n\t\t///And here is a little bonus for a job well done. \n\t\t///</summary>\n\t\tDlg_JunkyardReturn_1412,\n\t\t///<summary>\n\t\t///Take care of yourselves, my friends. Perhaps we’ll do business again.\n\t\t///</summary>\n\t\tDlg_JunkyardReturn_1413,\n\t\t///<summary>\n\t\t///We sincerely hope not.\n\t\t///</summary>\n\t\tDlg_JunkyardReturn_1414,\n\t\t///<summary>\n\t\t///Thomas, do you copy?\n\t\t///</summary>\n\t\tDlg_JunkyardReturn_1415,\n\t\t///<summary>\n\t\t///I am online. Were you successful?\n\t\t///</summary>\n\t\tDlg_JunkyardReturn_1416,\n\t\t///<summary>\n\t\t///We have this alien thing. \n\t\t///</summary>\n\t\tDlg_JunkyardReturn_1417,\n\t\t///<summary>\n\t\t///Tell me about it!\n\t\t///</summary>\n\t\tDlg_JunkyardReturn_1418,\n\t\t///<summary>\n\t\t///Looks more like Rosetta Stone than a superhuman device.\n\t\t///</summary>\n\t\tDlg_JunkyardReturn_1419,\n\t\t///<summary>\n\t\t///What did you expect? Light sabers and plasma guns?\n\t\t///</summary>\n\t\tDlg_JunkyardReturn_1420,\n\t\t///<summary>\n\t\t///What should we do with it?\n\t\t///</summary>\n\t\tDlg_JunkyardReturn_1421,\n\t\t///<summary>\n\t\t///Drop it by my place, I will give it thorough examination.\n\t\t///</summary>\n\t\tDlg_JunkyardReturn_1422,\n\t\t///<summary>\n\t\t///Only one of you needs to do the delivery – the rest of you, head on over to Valiant.\n\t\t///</summary>\n\t\tDlg_JunkyardReturn_1423,\n\t\t///<summary>\n\t\t///Valiant? You mean the Templar fortress?\n\t\t///</summary>\n\t\tDlg_JunkyardReturn_1424,\n\t\t///<summary>\n\t\t///Exactly. I checked some reliable sources and I am 99% sure the Templars stumbled…\n\t\t///</summary>\n\t\tDlg_JunkyardReturn_1425,\n\t\t///<summary>\n\t\t///…upon one of the artifact pieces. You must check it out. \n\t\t///</summary>\n\t\tDlg_JunkyardReturn_1426,\n\t\t///<summary>\n\t\t///On our way, then. I’ll take the artifact to Barth’s moon and we’ll meet up at Valiant.\n\t\t///</summary>\n\t\tDlg_JunkyardReturn_1427,\n\t\t///<summary>\n\t\t///Chill a bit, guys, I might be a little late.\n\t\t///</summary>\n\t\tDlg_JunkyardReturn_1428,\n\t\t///<summary>\n\t\t///We’ll take the scenic route and meet you at the gates of Valiant.\n\t\t///</summary>\n\t\tDlg_JunkyardReturn_1429,\n\t\t///<summary>\n\t\t///Ok, Apollo, Valentin, Tarja – dock in!\n\t\t///</summary>\n\t\tDlg_JunkyardReturn_1430,\n\t\t///<summary>\n\t\t///This is the place. \n\t\t///</summary>\n\t\tDlg_JunkyardConvince_01_01,\n\t\t///<summary>\n\t\t///Too many sharp metal objects. I can’t proceed any further, you’re on your own.\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_01_02,\n\t\t///<summary>\n\t\t///Any idea where the smuggler might be?\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_01_03,\n\t\t///<summary>\n\t\t///I’ve been here before. It’s a small community. Everyone knows everyone.\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_01_04,\n\t\t///<summary>\n\t\t///What do you suggest?\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_01_05,\n\t\t///<summary>\n\t\t///I know a guy. Hangs around Old Shard tavern.\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_01_06,\n\t\t///<summary>\n\t\t///By the way, Marcus. How do you know a seedy place like this?\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_02_01,\n\t\t///<summary>\n\t\t///Um… research. \n\t\t///</summary>\n\t\tDlg_JunkyardConvince_02_02,\n\t\t///<summary>\n\t\t///Ok, whatever.\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_02_03,\n\t\t///<summary>\n\t\t///Marcus, is that you?\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_03_01,\n\t\t///<summary>\n\t\t///You said know a guy around here.\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_03_02,\n\t\t///<summary>\n\t\t///Guy: it’s a generic term. Like I said, research.\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_03_03,\n\t\t///<summary>\n\t\t///It’s been years! You just left and I never–\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_03_04,\n\t\t///<summary>\n\t\t///You and I can talk privately later, Tarja. We’re here for other matters.\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_03_05,\n\t\t///<summary>\n\t\t///Such as?\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_03_06,\n\t\t///<summary>\n\t\t///We’re looking for one Hindu guy. A smuggler by the name Manjeet.\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_03_07,\n\t\t///<summary>\n\t\t///Sold you some rare “antiquity”, and you just found out it was a cheese grater from Q-Mart?\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_03_08,\n\t\t///<summary>\n\t\t///We never met him before. But we heard he has… something.\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_03_09,\n\t\t///<summary>\n\t\t///Something we’re interested in.\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_03_10,\n\t\t///<summary>\n\t\t///Be gentle with him. \n\t\t///</summary>\n\t\tDlg_JunkyardConvince_03_11,\n\t\t///<summary>\n\t\t///He may not be the bravest or the most virtuous man, or even the most… well, you get it. \n\t\t///</summary>\n\t\tDlg_JunkyardConvince_03_12,\n\t\t///<summary>\n\t\t///But he’s a friend. \n\t\t///</summary>\n\t\tDlg_JunkyardConvince_03_13,\n\t\t///<summary>\n\t\t///Duly noted.\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_03_14,\n\t\t///<summary>\n\t\t///The last time I saw him was in the upper docks. Harbor district.\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_03_15,\n\t\t///<summary>\n\t\t///We’ll check it out.  \n\t\t///</summary>\n\t\tDlg_JunkyardConvince_03_16,\n\t\t///<summary>\n\t\t///Good luck finding… what you’re after.\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_03_17,\n\t\t///<summary>\n\t\t///Shit! Zappa, I promise, I will deliver the “goods” in two hours! \n\t\t///</summary>\n\t\tDlg_JunkyardConvince_04_01,\n\t\t///<summary>\n\t\t///I give you my word…–\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_04_02,\n\t\t///<summary>\n\t\t///Ehm, we’re looking for… \n\t\t///</summary>\n\t\tDlg_JunkyardConvince_04_03,\n\t\t///<summary>\n\t\t///I won’t take this crap! \n\t\t///</summary>\n\t\tDlg_JunkyardConvince_04_04,\n\t\t///<summary>\n\t\t///You won’t screw with Manjeet – not anymore! …\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_04_05,\n\t\t///<summary>\n\t\t///Guys, take out these brigands!\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_04_06,\n\t\t///<summary>\n\t\t///I… I can pay you more than Zappa! I swear! Just –\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_05_01,\n\t\t///<summary>\n\t\t///Calm down. We want to buy something from you.\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_05_02,\n\t\t///<summary>\n\t\t///Oh. I nearly had a heart attack. \n\t\t///</summary>\n\t\tDlg_JunkyardConvince_05_03,\n\t\t///<summary>\n\t\t///I’d love to do business, but this Momo Zappa and his gang are after me at the moment.\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_05_04,\n\t\t///<summary>\n\t\t///We noticed.\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_05_05,\n\t\t///<summary>\n\t\t///How about a deal?\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_05_06,\n\t\t///<summary>\n\t\t///Get rid of those bastards and I will sell you my secret, top-of-the-line goods. \n\t\t///</summary>\n\t\tDlg_JunkyardConvince_05_07,\n\t\t///<summary>\n\t\t///With 15% discount!\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_05_08,\n\t\t///<summary>\n\t\t///All right, don’t go anywhere.\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_05_09,\n\t\t///<summary>\n\t\t///Who is this Zappa, anyway?\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_06_01,\n\t\t///<summary>\n\t\t///Head of some local gang. There are hundreds of guys like him around.\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_06_02,\n\t\t///<summary>\n\t\t///Why do you think Manjeet has a dispute with this particular one?\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_06_03,\n\t\t///<summary>\n\t\t///Better not to ask. Drugs, women, weapons? This is none of our business. \n\t\t///</summary>\n\t\tDlg_JunkyardConvince_06_04,\n\t\t///<summary>\n\t\t///Let’s just get the job done. \n\t\t///</summary>\n\t\tDlg_JunkyardConvince_06_05,\n\t\t///<summary>\n\t\t///Here we go.\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_06_06,\n\t\t///<summary>\n\t\t///Watchoo want? Go playin’ somewhere else, this’ our quarter.\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_06_07,\n\t\t///<summary>\n\t\t///Manjeet sent us.\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_06_08,\n\t\t///<summary>\n\t\t///If you’re lookin’ for Momo, you come to the right place.\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_06_09,\n\t\t///<summary>\n\t\t///Except. Could be the wrong place for you. \n\t\t///</summary>\n\t\tDlg_JunkyardConvince_06_10,\n\t\t///<summary>\n\t\t///Why you riskin’ your life for that scrote sack, Manjeet?\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_06_11,\n\t\t///<summary>\n\t\t///We have an agreement. You can understand that.\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_06_12,\n\t\t///<summary>\n\t\t///Here’s what I understand!\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_06_13,\n\t\t///<summary>\n\t\t///Manjeet’s trigger men! You dare disrespect me? Do you know who I am?\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_07_01,\n\t\t///<summary>\n\t\t///That’s why we’re here.\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_07_02,\n\t\t///<summary>\n\t\t///I am most impressed! Come back and browse through the finest selection of bright material.\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_08_01,\n\t\t///<summary>\n\t\t///Bright material?\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_08_02,\n\t\t///<summary>\n\t\t///You know, active nuclear gadgets. You came for a trade, right?\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_08_03,\n\t\t///<summary>\n\t\t///We came for an artifact you bought from the pirates.\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_08_04,\n\t\t///<summary>\n\t\t///Ah, the artifact. Sadly, that item is not for sale. Too expensive for you.\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_08_05,\n\t\t///<summary>\n\t\t///But our agreement still stands – all nuclear material you can imagine, plus 15% dis–\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_08_06,\n\t\t///<summary>\n\t\t///How much do you want for the artifact?\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_08_07,\n\t\t///<summary>\n\t\t///Far, far too much for likes of you. No offense. Thirteen million, not a penny less. \n\t\t///</summary>\n\t\tDlg_JunkyardConvince_08_08,\n\t\t///<summary>\n\t\t///As I said, too rich for your blood.\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_08_09,\n\t\t///<summary>\n\t\t///What if we kill you right here and take it ourselves?\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_08_10,\n\t\t///<summary>\n\t\t///I am not so stupid. Such expensive items… I keep them with friends.\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_08_11,\n\t\t///<summary>\n\t\t///If you kill me or threaten me, you will never get it. \n\t\t///</summary>\n\t\tDlg_JunkyardConvince_08_12,\n\t\t///<summary>\n\t\t///You want to keep the artifact for yourself or sell it to the highest bidder?\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_08_13,\n\t\t///<summary>\n\t\t///Option B is more to my liking.\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_08_14,\n\t\t///<summary>\n\t\t///What about this: We did you a favor once, we’ll do you a second one. \n\t\t///</summary>\n\t\tDlg_JunkyardConvince_08_15,\n\t\t///<summary>\n\t\t///I bet a guy like you has a lot of enemies.\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_08_16,\n\t\t///<summary>\n\t\t///I am fine now. As long as Zappa is dead, my friends can get me out of troubles…\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_08_17,\n\t\t///<summary>\n\t\t///…except… \n\t\t///</summary>\n\t\tDlg_JunkyardConvince_08_18,\n\t\t///<summary>\n\t\t///Yes?\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_08_19,\n\t\t///<summary>\n\t\t///There is something I want. Perhaps we might barter. \n\t\t///</summary>\n\t\tDlg_JunkyardConvince_08_20,\n\t\t///<summary>\n\t\t///Get me a cargo ship full of plutonium and you have a deal. \n\t\t///</summary>\n\t\tDlg_JunkyardConvince_08_21,\n\t\t///<summary>\n\t\t///That should be doable. \n\t\t///</summary>\n\t\tDlg_JunkyardConvince_08_22,\n\t\t///<summary>\n\t\t///Hijack a cargo ship, fly to some plutonium-rich asteroid field, fill it up… \n\t\t///</summary>\n\t\tDlg_JunkyardConvince_08_23,\n\t\t///<summary>\n\t\t///We’ll be back in a few hours.\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_08_24,\n\t\t///<summary>\n\t\t///No, my friend. If I wanted plutonium ore, I could get it myself. \n\t\t///</summary>\n\t\tDlg_JunkyardConvince_08_25,\n\t\t///<summary>\n\t\t///I want a cargo ship full of REFINED plutonium. Military grade.\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_08_26,\n\t\t///<summary>\n\t\t///Good Lord. What would you do with something like that?\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_08_27,\n\t\t///<summary>\n\t\t///That’s my business. I have very… diversified enterprises.\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_08_28,\n\t\t///<summary>\n\t\t///Where the hell could we get our hands on a cargo ship full of military grade plutonium?\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_08_29,\n\t\t///<summary>\n\t\t///The Chinese. They have loads of the stuff.\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_08_30,\n\t\t///<summary>\n\t\t///I assume you have some specific details.\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_08_31,\n\t\t///<summary>\n\t\t///A complete plan, and a good one, too! \n\t\t///</summary>\n\t\tDlg_JunkyardConvince_08_32,\n\t\t///<summary>\n\t\t///I just couldn’t find anyone stu– brave enough to do it for me. \n\t\t///</summary>\n\t\tDlg_JunkyardConvince_08_33,\n\t\t///<summary>\n\t\t///There is a plutonium refinery at Jingzhou. You can’t take it by force. \n\t\t///</summary>\n\t\tDlg_JunkyardConvince_08_34,\n\t\t///<summary>\n\t\t///And you can’t steal one of the ships loaded with refined plutonium. \n\t\t///</summary>\n\t\tDlg_JunkyardConvince_08_35,\n\t\t///<summary>\n\t\t///They are too heavily guarded. So…\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_08_36,\n\t\t///<summary>\n\t\t///You need to steal one of the poorly protected ships leaving the mining colony of Changde.\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_08_37,\n\t\t///<summary>\n\t\t///Fly with it to Jingzhou. Unload the ore and then load it up with the refined stuff.\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_08_38,\n\t\t///<summary>\n\t\t///Piece of cake! Why didn’t we think of that?\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_08_39,\n\t\t///<summary>\n\t\t///It might actually work.\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_08_40,\n\t\t///<summary>\n\t\t///Can we trust him? Maybe he just wants us to get killed?\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_08_41,\n\t\t///<summary>\n\t\t///Nah. He wants the stuff so badly he can taste it.\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_08_42,\n\t\t///<summary>\n\t\t///Okay. We’re in.\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_08_43,\n\t\t///<summary>\n\t\t///Perfect. I transmitted you all the coordinates and relevant data. \n\t\t///</summary>\n\t\tDlg_JunkyardConvince_08_44,\n\t\t///<summary>\n\t\t///Once you are ready, set a course for Changde. \n\t\t///</summary>\n\t\tDlg_JunkyardConvince_08_45,\n\t\t///<summary>\n\t\t///Just before departure, pick up some explosives from my auxiliary depot. \n\t\t///</summary>\n\t\tDlg_JunkyardConvince_08_46,\n\t\t///<summary>\n\t\t///You might find them useful.\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_08_47,\n\t\t///<summary>\n\t\t///Guys, I’m going to do a little more… research. \n\t\t///</summary>\n\t\tDlg_JunkyardConvince_08_48,\n\t\t///<summary>\n\t\t///Apollo, get those explosives, we’ll meet at Sapho.\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_08_49,\n\t\t///<summary>\n\t\t///You here for a delivery for Manjeet?\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_09_01,\n\t\t///<summary>\n\t\t///You know it.\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_09_02,\n\t\t///<summary>\n\t\t///Your “package” is ready. And please, send my regards to Mr. Lata.\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_09_03,\n\t\t///<summary>\n\t\t///Thanks.\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_09_04,\n\t\t///<summary>\n\t\t///That was easy.\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_09_05,\n\t\t///<summary>\n\t\t///Marcus, I’m ready, how about you? How’s that research coming?\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_09_06,\n\t\t///<summary>\n\t\t///I need to probe a little… deeper. Why don’t you come here?\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_09_07,\n\t\t///<summary>\n\t\t///On my way.\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_09_08,\n\t\t///<summary>\n\t\t///As soon as possible.\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_09_09,\n\t\t///<summary>\n\t\t///Uhm, roger that.\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_09_10,\n\t\t///<summary>\n\t\t///What’s going on here? Some kind of key-swapping party tonight?\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_10_01,\n\t\t///<summary>\n\t\t///No need to be rude, Mr. Rainier. A friend of ours got into some trouble.\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_10_02,\n\t\t///<summary>\n\t\t///Just shut up and watch.\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_10_03,\n\t\t///<summary>\n\t\t///…that stuff you sold us last time –\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_10_04,\n\t\t///<summary>\n\t\t///What’s the problem with it?\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_10_05,\n\t\t///<summary>\n\t\t///One of our boys died after sniffing a gram!\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_10_06,\n\t\t///<summary>\n\t\t///Tragic. You guys know this stuff can have side effects.\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_10_07,\n\t\t///<summary>\n\t\t///Bullshit! It was bad and you know it.\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_10_08,\n\t\t///<summary>\n\t\t///And your point is…?\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_10_09,\n\t\t///<summary>\n\t\t///I want my money back.\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_10_10,\n\t\t///<summary>\n\t\t///You should have read the fine print. No refunds.\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_10_11,\n\t\t///<summary>\n\t\t///Guys, give this jag-off a refund!\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_10_12,\n\t\t///<summary>\n\t\t///We need to help my friend Valentin. Marcus? Apollo.\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_11_01,\n\t\t///<summary>\n\t\t///Friends are friends, I guess.\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_11_02,\n\t\t///<summary>\n\t\t///Whatever.\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_11_03,\n\t\t///<summary>\n\t\t///Thank you, whoever you are.\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_12_01,\n\t\t///<summary>\n\t\t///Friends of a friend.\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_12_02,\n\t\t///<summary>\n\t\t///You fight well. Are you EAC militia?\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_12_03,\n\t\t///<summary>\n\t\t///Freelancers. Just doing our business.\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_12_04,\n\t\t///<summary>\n\t\t///Valentin, they’re after something big. Something that can lead to loads of cash.\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_12_05,\n\t\t///<summary>\n\t\t///I’m listening.\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_12_06,\n\t\t///<summary>\n\t\t///We could use a hand. In return we offer, um, high adventure. And a share of the loot.\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_12_07,\n\t\t///<summary>\n\t\t///I’m in. Just like old times.\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_12_08,\n\t\t///<summary>\n\t\t///Old times?\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_12_09,\n\t\t///<summary>\n\t\t///It seems I have some explaining for you and Madelyn. We’ll save it for later.\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_12_10,\n\t\t///<summary>\n\t\t///Let’s head back to Sapho. Destination Changde.\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_12_11,\n\t\t///<summary>\n\t\t///Valentin, you with us?\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_12_12,\n\t\t///<summary>\n\t\t///Like a bad case of crabs!\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_12_13,\n\t\t///<summary>\n\t\t///Have a nice time, Marcus?\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_13_01,\n\t\t///<summary>\n\t\t///I’ve always been fond of research.\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_13_02,\n\t\t///<summary>\n\t\t///I see we have company.\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_13_03,\n\t\t///<summary>\n\t\t///We’ll save the introductions for later. We’re heading for Changde.\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_13_04,\n\t\t///<summary>\n\t\t///You got it. We’ll talk on the way. And we WILL talk.\n\t\t///</summary>\n\t\tDlg_JunkyardConvince_13_05,\n\t\t///<summary>\n\t\t///We’re not too late, I hope. \n\t\t///</summary>\n\t\tDlg_LastHope_0100,\n\t\t///<summary>\n\t\t///But I’m picking signals from several slaver mother ships. \n\t\t///</summary>\n\t\tDlg_LastHope_0101,\n\t\t///<summary>\n\t\t///Let’s get this done fast.\n\t\t///</summary>\n\t\tDlg_LastHope_0102,\n\t\t///<summary>\n\t\t///We’re on our way.\n\t\t///</summary>\n\t\tDlg_LastHope_0103,\n\t\t///<summary>\n\t\t///Reinforcements? This base should have been unarmed, no defense fleet! \n\t\t///</summary>\n\t\tDlg_LastHope_0200,\n\t\t///<summary>\n\t\t///This was not part of our contract. …\n\t\t///</summary>\n\t\tDlg_LastHope_0201,\n\t\t///<summary>\n\t\t///Go away, strangers. This is none of your business.\n\t\t///</summary>\n\t\tDlg_LastHope_0207,\n\t\t///<summary>\n\t\t///We’re here to help these people.\n\t\t///</summary>\n\t\tDlg_LastHope_0208,\n\t\t///<summary>\n\t\t///And you stand in our way.\n\t\t///</summary>\n\t\tDlg_LastHope_0209,\n\t\t///<summary>\n\t\t///You want trouble, you’ve got it.\n\t\t///</summary>\n\t\tDlg_LastHope_0210,\n\t\t///<summary>\n\t\t///You… are you here to help us? Did you receive our call?\n\t\t///</summary>\n\t\tDlg_LastHope_0300,\n\t\t///<summary>\n\t\t///We did. \n\t\t///</summary>\n\t\tDlg_LastHope_0301,\n\t\t///<summary>\n\t\t///Please, hurry. A few of us are still here, the rest are being hauled away in cages.\n\t\t///</summary>\n\t\tDlg_LastHope_0302,\n\t\t///<summary>\n\t\t///For now, hit the remaining raiding ships! \n\t\t///</summary>\n\t\tDlg_LastHope_0303,\n\t\t///<summary>\n\t\t///At least that will save those who are still alive.\n\t\t///</summary>\n\t\tDlg_LastHope_0304,\n\t\t///<summary>\n\t\t///Roger. \n\t\t///</summary>\n\t\tDlg_LastHope_0305,\n\t\t///<summary>\n\t\t///May God bless you!\n\t\t///</summary>\n\t\tDlg_LastHope_0400,\n\t\t///<summary>\n\t\t///Are we done here?\n\t\t///</summary>\n\t\tDlg_LastHope_0402,\n\t\t///<summary>\n\t\t///No! We still need your help. \n\t\t///</summary>\n\t\tDlg_LastHope_0403,\n\t\t///<summary>\n\t\t///The colony is safe, for now, but their cargo ships are full of our people.\n\t\t///</summary>\n\t\tDlg_LastHope_0404,\n\t\t///<summary>\n\t\t///They’ve already left, but you should be able to catch up with them. \n\t\t///</summary>\n\t\tDlg_LastHope_0405,\n\t\t///<summary>\n\t\t///We’ll do what we can. \n\t\t///</summary>\n\t\tDlg_LastHope_0408,\n\t\t///<summary>\n\t\t///These must be the slave transports.\n\t\t///</summary>\n\t\tDlg_LastHope_0500,\n\t\t///<summary>\n\t\t///Remember what the old man said. Don’t destroy the ships or the prisoners will die. \n\t\t///</summary>\n\t\tDlg_LastHope_0501,\n\t\t///<summary>\n\t\t///Acknowledged. \n\t\t///</summary>\n\t\tDlg_LastHope_0503,\n\t\t///<summary>\n\t\t///Job done. Transports disabled.\n\t\t///</summary>\n\t\tDlg_LastHope_0600,\n\t\t///<summary>\n\t\t///Thank you again! \n\t\t///</summary>\n\t\tDlg_LastHope_0601,\n\t\t///<summary>\n\t\t///So, are you safe now? We have other matters to attend to.\n\t\t///</summary>\n\t\tDlg_LastHope_0602,\n\t\t///<summary>\n\t\t///Please… Wait! One more thing! It seems some of those slavers have…\n\t\t///</summary>\n\t\tDlg_LastHope_0603,\n\t\t///<summary>\n\t\t///…gotten into our underground shafts.\n\t\t///</summary>\n\t\tDlg_LastHope_0604,\n\t\t///<summary>\n\t\t///They’ve somehow damaged our power generator, along with the gas vents.\n\t\t///</summary>\n\t\tDlg_LastHope_0605,\n\t\t///<summary>\n\t\t///Without that equipment, even the few of us who remain here will die within hours. \n\t\t///</summary>\n\t\tDlg_LastHope_0606,\n\t\t///<summary>\n\t\t///How do we get into the shafts?\n\t\t///</summary>\n\t\tDlg_LastHope_0607,\n\t\t///<summary>\n\t\t///The entrances are marked with red lights. \n\t\t///</summary>\n\t\tDlg_LastHope_0608,\n\t\t///<summary>\n\t\t///You can’t miss them. Once you’re inside, watch out for slaver ships. \n\t\t///</summary>\n\t\tDlg_LastHope_0609,\n\t\t///<summary>\n\t\t///How many ships should we expect?\n\t\t///</summary>\n\t\tDlg_LastHope_0700,\n\t\t///<summary>\n\t\t///Only a handful. But… eh…\n\t\t///</summary>\n\t\tDlg_LastHope_0701,\n\t\t///<summary>\n\t\t///Yes?\n\t\t///</summary>\n\t\tDlg_LastHope_0702,\n\t\t///<summary>\n\t\t///Be careful. The generator is an old Russian nuclear model we got for cheap. \n\t\t///</summary>\n\t\tDlg_LastHope_0703,\n\t\t///<summary>\n\t\t///Now that it’s been damaged, it’s leaking radiation all around. \n\t\t///</summary>\n\t\tDlg_LastHope_0704,\n\t\t///<summary>\n\t\t///Let’s get to work. \n\t\t///</summary>\n\t\tDlg_LastHope_0713,\n\t\t///<summary>\n\t\t///Fast. Roust the slavers, fix the leaking generator, and perform the minor repairs.\n\t\t///</summary>\n\t\tDlg_LastHope_0714,\n\t\t///<summary>\n\t\t///This must be the entry.\n\t\t///</summary>\n\t\tDlg_LastHope_0800,\n\t\t///<summary>\n\t\t///Looks like it. \n\t\t///</summary>\n\t\tDlg_LastHope_0801,\n\t\t///<summary>\n\t\t///Jeff, you think we’ve done enough here?\n\t\t///</summary>\n\t\tDlg_LastHope_0900,\n\t\t///<summary>\n\t\t///You hit the gas vents?\n\t\t///</summary>\n\t\tDlg_LastHope_0901,\n\t\t///<summary>\n\t\t///Made holes in the pipes. In a few minutes, this whole place could blow. \n\t\t///</summary>\n\t\tDlg_LastHope_0902,\n\t\t///<summary>\n\t\t///Good. Then let’s scram. \n\t\t///</summary>\n\t\tDlg_LastHope_0909,\n\t\t///<summary>\n\t\t///In about three minutes this little piece of heaven is going to turn into Hell. \n\t\t///</summary>\n\t\tDlg_LastHope_0910,\n\t\t///<summary>\n\t\t///Shit! \n\t\t///</summary>\n\t\tDlg_LastHope_1000,\n\t\t///<summary>\n\t\t///We need to intercept those two ships before they exit. \n\t\t///</summary>\n\t\tDlg_LastHope_1001,\n\t\t///<summary>\n\t\t///Otherwise they’ll blow the whole asteroid.\n\t\t///</summary>\n\t\tDlg_LastHope_1002,\n\t\t///<summary>\n\t\t///Let’s hurry and find those two ships.\n\t\t///</summary>\n\t\tDlg_LastHope_1007,\n\t\t///<summary>\n\t\t///Ah, brave Christians. You come to offer us a parting prayer?\n\t\t///</summary>\n\t\tDlg_LastHope_1100,\n\t\t///<summary>\n\t\t///We need to disable those explosives. \n\t\t///</summary>\n\t\tDlg_LastHope_1200,\n\t\t///<summary>\n\t\t///See those gas clouds? Don’t make any sparks around them.\n\t\t///</summary>\n\t\tDlg_LastHope_1300,\n\t\t///<summary>\n\t\t///No fireworks today?\n\t\t///</summary>\n\t\tDlg_LastHope_1301,\n\t\t///<summary>\n\t\t///We’ll have to wait for New Year!\n\t\t///</summary>\n\t\tDlg_LastHope_1302,\n\t\t///<summary>\n\t\t///Done. Disarmed–\n\t\t///</summary>\n\t\tDlg_LastHope_1400,\n\t\t///<summary>\n\t\t///Good. \n\t\t///</summary>\n\t\tDlg_LastHope_1401,\n\t\t///<summary>\n\t\t///These vents seem like the source of the leaking gas. \n\t\t///</summary>\n\t\tDlg_LastHope_1402,\n\t\t///<summary>\n\t\t///Yep, these are the leaks we’re looking for. \n\t\t///</summary>\n\t\tDlg_LastHope_1403,\n\t\t///<summary>\n\t\t///One more.\n\t\t///</summary>\n\t\tDlg_LastHope_1500,\n\t\t///<summary>\n\t\t///Done.\n\t\t///</summary>\n\t\tDlg_LastHope_1600,\n\t\t///<summary>\n\t\t///I have a bad feeling about this place.\n\t\t///</summary>\n\t\tDlg_LastHope_1700,\n\t\t///<summary>\n\t\t///Radiation. Hope you don’t mind little black spots on your face.\n\t\t///</summary>\n\t\tDlg_LastHope_1701,\n\t\t///<summary>\n\t\t///We need to be really fast here. \n\t\t///</summary>\n\t\tDlg_LastHope_1702,\n\t\t///<summary>\n\t\t///That’s it. The damaged nuclear generator. \n\t\t///</summary>\n\t\tDlg_LastHope_1800,\n\t\t///<summary>\n\t\t///Good. Radiation stopped. \n\t\t///</summary>\n\t\tDlg_LastHope_1900,\n\t\t///<summary>\n\t\t///Get out of there anyway. Fixing the core doesn’t eliminate the ambient radiation.  \n\t\t///</summary>\n\t\tDlg_LastHope_1901,\n\t\t///<summary>\n\t\t///Right. Note to self: next trip, pack anti-radiation meds. \n\t\t///</summary>\n\t\tDlg_LastHope_1902,\n\t\t///<summary>\n\t\t///Great work in the basement, guys!\n\t\t///</summary>\n\t\tDlg_LastHope_1904,\n\t\t///<summary>\n\t\t///Let’s get back to the surface.\n\t\t///</summary>\n\t\tDlg_LastHope_1907,\n\t\t///<summary>\n\t\t///Say hello to Father Tobias, then and say goodbye.\n\t\t///</summary>\n\t\tDlg_LastHope_1908,\n\t\t///<summary>\n\t\t///Thank you, thank you, my friends! \n\t\t///</summary>\n\t\tDlg_LastHope_2000,\n\t\t///<summary>\n\t\t///You’re welcome.\n\t\t///</summary>\n\t\tDlg_LastHope_2001,\n\t\t///<summary>\n\t\t///And what’s your status here? NOW can we be on our way?\n\t\t///</summary>\n\t\tDlg_LastHope_2005,\n\t\t///<summary>\n\t\t///They damaged much of our base and killed many of our people. \n\t\t///</summary>\n\t\tDlg_LastHope_2006,\n\t\t///<summary>\n\t\t///But we are strong. It will take months to get things back to normal…\n\t\t///</summary>\n\t\tDlg_LastHope_2007,\n\t\t///<summary>\n\t\t///…but with the guidance of heaven, nothing is impossible.\n\t\t///</summary>\n\t\tDlg_LastHope_2008,\n\t\t///<summary>\n\t\t///Marcus, Apollo – good news. Still want to meet that smuggler, Manjeet?\n\t\t///</summary>\n\t\tDlg_LastHope_2010,\n\t\t///<summary>\n\t\t///Definitely. Did he agree on a meeting?\n\t\t///</summary>\n\t\tDlg_LastHope_2011,\n\t\t///<summary>\n\t\t///Well, not exactly. But rumor has it he’s currently at Duncan’s Faith. \n\t\t///</summary>\n\t\tDlg_LastHope_2012,\n\t\t///<summary>\n\t\t///I suggest we head there and ask around. Lorraine out. \n\t\t///</summary>\n\t\tDlg_LastHope_2013,\n\t\t///<summary>\n\t\t///Duncan’s Faith?\n\t\t///</summary>\n\t\tDlg_LastHope_2014,\n\t\t///<summary>\n\t\t///Fancy name for the Junkyard. \n\t\t///</summary>\n\t\tDlg_LastHope_2015,\n\t\t///<summary>\n\t\t///It was a battlefield during the war between EAC and Fourth Reich. \n\t\t///</summary>\n\t\tDlg_LastHope_2016,\n\t\t///<summary>\n\t\t///The place where the last battle occurred. \n\t\t///</summary>\n\t\tDlg_LastHope_2017,\n\t\t///<summary>\n\t\t///Officially, it’s called Duncan’s Faith after the EAC army commander. \n\t\t///</summary>\n\t\tDlg_LastHope_2018,\n\t\t///<summary>\n\t\t///But everyone calls it the Junkyard…\n\t\t///</summary>\n\t\tDlg_LastHope_2019,\n\t\t///<summary>\n\t\t///…’cause there’s thousands tons of metal parts floating around. \n\t\t///</summary>\n\t\tDlg_LastHope_2020,\n\t\t///<summary>\n\t\t///Sounds like an adventure. \n\t\t///</summary>\n\t\tDlg_LastHope_2021,\n\t\t///<summary>\n\t\t///Sounds like an intergalactic yard sale. \n\t\t///</summary>\n\t\tDlg_LastHope_2022,\n\t\t///<summary>\n\t\t///I’m ready whenever you are, guys.\n\t\t///</summary>\n\t\tDlg_LastHope_2023,\n\t\t///<summary>\n\t\t///Right, tomorrow we’ll check out the Marimba Club.\n\t\t///</summary>\n\t\tDlg_Rime_0602,\n\t\t///<summary>\n\t\t///Stuart was there last week and he said the chicks are hot and they like to…\n\t\t///</summary>\n\t\tDlg_Rime_0602a,\n\t\t///<summary>\n\t\t///Ok, probably not important.\n\t\t///</summary>\n\t\tDlg_Rime_0603,\n\t\t///<summary>\n\t\t///You’ll regret this… I’m going to tell all my friends and…\n\t\t///</summary>\n\t\tDlg_Rime_0702,\n\t\t///<summary>\n\t\t///One more word and you’ll be talkin’ out of a new hole, pal.\n\t\t///</summary>\n\t\tDlg_Rime_0703,\n\t\t///<summary>\n\t\t///The one I’m going to rip in your neck.\n\t\t///</summary>\n\t\tDlg_Rime_0703a,\n\t\t///<summary>\n\t\t///Ah, the squalid human drama! I’m starting to enjoy this job.\n\t\t///</summary>\n\t\tDlg_Rime_0704,\n\t\t///<summary>\n\t\t///Quiet! I think I’ve got something.\n\t\t///</summary>\n\t\tDlg_Rime_0705,\n\t\t///<summary>\n\t\t///Ok, I’ll take care of inventory today.\n\t\t///</summary>\n\t\tDlg_Rime_0802,\n\t\t///<summary>\n\t\t///Better hurry. We’ve got lots of customers today and not much in a reserve.\n\t\t///</summary>\n\t\tDlg_Rime_0803,\n\t\t///<summary>\n\t\t///Apollo, tail this guy.\n\t\t///</summary>\n\t\tDlg_Rime_0805,\n\t\t///<summary>\n\t\t///What? Damn!\n\t\t///</summary>\n\t\tDlg_Rime_1002,\n\t\t///<summary>\n\t\t///This may seriously impact our working relationship. Guys, take care of the nosy bitch!\n\t\t///</summary>\n\t\tDlg_Rime_1003,\n\t\t///<summary>\n\t\t///We’ve got your back, Apollo! Guys, let’s make this quick.\n\t\t///</summary>\n\t\tDlg_Rime_1004,\n\t\t///<summary>\n\t\t///With pleasure.\n\t\t///</summary>\n\t\tDlg_Rime_1005,\n\t\t///<summary>\n\t\t///Hurry. I don’t want to be here when the rest of the gang shows up.\n\t\t///</summary>\n\t\tDlg_Rime_1101a,\n\t\t///<summary>\n\t\t///Ditto on that.\n\t\t///</summary>\n\t\tDlg_Rime_1102,\n\t\t///<summary>\n\t\t///Ok, then let’s make some dust.\n\t\t///</summary>\n\t\tDlg_Rime_1202,\n\t\t///<summary>\n\t\t///Reef, we’ve got the stuff. Give us the coordinates for Raynolds’ vessel.\n\t\t///</summary>\n\t\tDlg_Rime_1301,\n\t\t///<summary>\n\t\t///Good, good. I just sent them. Reef out.\n\t\t///</summary>\n\t\tDlg_Rime_1302,\n\t\t///<summary>\n\t\t///The next step’s clear. Just follow the coordinates.\n\t\t///</summary>\n\t\tDlg_Rime_1303,\n\t\t///<summary>\n\t\t///Apollo, you want to handle this part?\n\t\t///</summary>\n\t\tDlg_Rime_1401,\n\t\t///<summary>\n\t\t///Sure.\n\t\t///</summary>\n\t\tDlg_Rime_1402,\n\t\t///<summary>\n\t\t///Ok, wait for the signal from Madelyn. We need to make sure no one’s watching.\n\t\t///</summary>\n\t\tDlg_Rime_1403,\n\t\t///<summary>\n\t\t///Proceed to the exact coordinates I sent.\n\t\t///</summary>\n\t\tDlg_Rime_1404,\n\t\t///<summary>\n\t\t///Sit pretty. Wait for my signal.\n\t\t///</summary>\n\t\tDlg_Rime_1501,\n\t\t///<summary>\n\t\t///I’m checking the guard and maintenance ships in the area.\n\t\t///</summary>\n\t\tDlg_Rime_1502,\n\t\t///<summary>\n\t\t///When I give the word, rush inside, place the cargo, and return to this position.\n\t\t///</summary>\n\t\tDlg_Rime_1503,\n\t\t///<summary>\n\t\t///Understood?\n\t\t///</summary>\n\t\tDlg_Rime_1504,\n\t\t///<summary>\n\t\t///I’m locked and loaded.\n\t\t///</summary>\n\t\tDlg_Rime_1505,\n\t\t///<summary>\n\t\t///Ok. Two ships beyond the corner, your direction. Stay calm.\n\t\t///</summary>\n\t\tDlg_Rime_1506,\n\t\t///<summary>\n\t\t///Okay, this is our chance!\n\t\t///</summary>\n\t\tDlg_Rime_1601,\n\t\t///<summary>\n\t\t///Get ready… three, two, one – go, go, go!\n\t\t///</summary>\n\t\tDlg_Rime_1602,\n\t\t///<summary>\n\t\t///Place the cargo boxes on the points marked on your HUD.\n\t\t///</summary>\n\t\tDlg_Rime_1603,\n\t\t///<summary>\n\t\t///And hurry, I’m picking up several ships that might head our direction.\n\t\t///</summary>\n\t\tDlg_Rime_1604,\n\t\t///<summary>\n\t\t///Ok, Apollo, incoming ships. You’ve got about ten or twenty seconds.\n\t\t///</summary>\n\t\tDlg_Rime_1701,\n\t\t///<summary>\n\t\t///Hurry up, two ships, nearly visual contact!\n\t\t///</summary>\n\t\tDlg_Rime_1702,\n\t\t///<summary>\n\t\t///Nice run, Apollo!\n\t\t///</summary>\n\t\tDlg_Rime_1801,\n\t\t///<summary>\n\t\t///Thanks.\n\t\t///</summary>\n\t\tDlg_Rime_1802,\n\t\t///<summary>\n\t\t///A little on the high-stress side, but nice.\n\t\t///</summary>\n\t\tDlg_Rime_1803,\n\t\t///<summary>\n\t\t///So we’re on our way to Reef again?\n\t\t///</summary>\n\t\tDlg_Rime_1804,\n\t\t///<summary>\n\t\t///That’s the plan.\n\t\t///</summary>\n\t\tDlg_Rime_1805,\n\t\t///<summary>\n\t\t///I hope he’s happy.\n\t\t///</summary>\n\t\tDlg_Rime_1806,\n\t\t///<summary>\n\t\t///We did what he wanted. Now it’s his turn.\n\t\t///</summary>\n\t\tDlg_Rime_1807,\n\t\t///<summary>\n\t\t///Reef, you copy?\n\t\t///</summary>\n\t\tDlg_Rime_1901,\n\t\t///<summary>\n\t\t///Affirmative. Nice job. I’ll jump right to the fine print, gentlemen.\n\t\t///</summary>\n\t\tDlg_Rime_1902,\n\t\t///<summary>\n\t\t///Consider this a done deal.\n\t\t///</summary>\n\t\tDlg_Rime_1902a,\n\t\t///<summary>\n\t\t///I’ll work for you. But these substance detectors you want to construct…\n\t\t///</summary>\n\t\tDlg_Rime_1903,\n\t\t///<summary>\n\t\t///Yes?\n\t\t///</summary>\n\t\tDlg_Rime_1904,\n\t\t///<summary>\n\t\t///They’re going to be a major pain in the ass.\n\t\t///</summary>\n\t\tDlg_Rime_1905,\n\t\t///<summary>\n\t\t///I can build them, but I’m going to require some extremely nasty materials.\n\t\t///</summary>\n\t\tDlg_Rime_1906,\n\t\t///<summary>\n\t\t///Such as?\n\t\t///</summary>\n\t\tDlg_Rime_1907,\n\t\t///<summary>\n\t\t///I’ve just transmitted you the component list and some additional information.\n\t\t///</summary>\n\t\tDlg_Rime_1908,\n\t\t///<summary>\n\t\t///Simply put, you need several components manufactured only by OmniCorp and EAC, …\n\t\t///</summary>\n\t\tDlg_Rime_1909,\n\t\t///<summary>\n\t\t///…some heavy-duty power cells from the black market and last but not least…\n\t\t///</summary>\n\t\tDlg_Rime_1911,\n\t\t///<summary>\n\t\t///…tons of rare plutonium isotopes to keep this thing operational long enough to do its job.\n\t\t///</summary>\n\t\tDlg_Rime_1912,\n\t\t///<summary>\n\t\t///Good. Any tips as to possible sellers?\n\t\t///</summary>\n\t\tDlg_Rime_1914,\n\t\t///<summary>\n\t\t///Ha! Most of these items are rare prototypes.\n\t\t///</summary>\n\t\tDlg_Rime_1915,\n\t\t///<summary>\n\t\t///They won’t be publicly available for three to five years.\n\t\t///</summary>\n\t\tDlg_Rime_1916,\n\t\t///<summary>\n\t\t///So?\n\t\t///</summary>\n\t\tDlg_Rime_1917,\n\t\t///<summary>\n\t\t///I’ll be blunt. Apart from raiding Rime…\n\t\t///</summary>\n\t\tDlg_Rime_1918,\n\t\t///<summary>\n\t\t///…the only way to get components of sufficient quality is to hit Eurydice.\n\t\t///</summary>\n\t\tDlg_Rime_1919,\n\t\t///<summary>\n\t\t///Pretty famous research ship built out of an asteroid.\n\t\t///</summary>\n\t\tDlg_Rime_1920,\n\t\t///<summary>\n\t\t///Doesn’t it belong to OmniCorp?\n\t\t///</summary>\n\t\tDlg_Rime_1921,\n\t\t///<summary>\n\t\t///It’s currently in the Vandenberg Gas Field.\n\t\t///</summary>\n\t\tDlg_Rime_1922,\n\t\t///<summary>\n\t\t///And yes, it’s… partly OmniCorp.\n\t\t///</summary>\n\t\tDlg_Rime_1923,\n\t\t///<summary>\n\t\t///Are you suggesting we raid your own research vessel?\n\t\t///</summary>\n\t\tDlg_Rime_1924,\n\t\t///<summary>\n\t\t///I am not suggesting anything. Just stating the possibilities.\n\t\t///</summary>\n\t\tDlg_Rime_1925,\n\t\t///<summary>\n\t\t///You think we can find all the stuff we need there?\n\t\t///</summary>\n\t\tDlg_Rime_1926,\n\t\t///<summary>\n\t\t///The components, yes. For the fuel cells, try some black market channels.\n\t\t///</summary>\n\t\tDlg_Rime_1927,\n\t\t///<summary>\n\t\t///Iranians or Indians.\n\t\t///</summary>\n\t\tDlg_Rime_1927a,\n\t\t///<summary>\n\t\t///Manjeet.\n\t\t///</summary>\n\t\tDlg_Rime_1928,\n\t\t///<summary>\n\t\t///And as to the plutonium isotopes – I have no clue.\n\t\t///</summary>\n\t\tDlg_Rime_1929,\n\t\t///<summary>\n\t\t///Standard plutonium won’t handle the long-range triangulation we need to try.\n\t\t///</summary>\n\t\tDlg_Rime_1930,\n\t\t///<summary>\n\t\t///I suggest you ask the people you get the fuel cells from.\n\t\t///</summary>\n\t\tDlg_Rime_1932,\n\t\t///<summary>\n\t\t///Ok, thanks for the info, Francis. We’ll be back.\n\t\t///</summary>\n\t\tDlg_Rime_1933,\n\t\t///<summary>\n\t\t///I’ve got the approximate location of Eurydice.\n\t\t///</summary>\n\t\tDlg_Rime_1934,\n\t\t///<summary>\n\t\t///Guys, when you’re ready, come back to Sapho and I’ll heat up the engines.\n\t\t///</summary>\n\t\tDlg_Rime_1935,\n\t\t///<summary>\n\t\t///Dammit! He’s gone!\n\t\t///</summary>\n\t\tDlg_Rime_2101,\n\t\t///<summary>\n\t\t///Dammit! He spotted us!\n\t\t///</summary>\n\t\tDlg_Rime_2201,\n\t\t///<summary>\n\t\t///Here we go.\n\t\t///</summary>\n\t\tDlg_RussianWarehouse_0101,\n\t\t///<summary>\n\t\t///Launching the attack. Marcus, Apollo – go after your targets inside!\n\t\t///</summary>\n\t\tDlg_RussianWarehouse_0102,\n\t\t///<summary>\n\t\t///On our way.\n\t\t///</summary>\n\t\tDlg_RussianWarehouse_0103,\n\t\t///<summary>\n\t\t///Cut off their defenses first…\n\t\t///</summary>\n\t\tDlg_RussianWarehouse_0104,\n\t\t///<summary>\n\t\t///I marked the important points of their security system on your GPS.\n\t\t///</summary>\n\t\tDlg_RussianWarehouse_0105,\n\t\t///<summary>\n\t\t///Counting on you, guys! We can distract most of their fighters for a couple of minutes.\n\t\t///</summary>\n\t\tDlg_RussianWarehouse_0106,\n\t\t///<summary>\n\t\t///Make sure you cut off the stationary defenses and other measures!\n\t\t///</summary>\n\t\tDlg_RussianWarehouse_0107,\n\t\t///<summary>\n\t\t///This way, right?\n\t\t///</summary>\n\t\tDlg_RussianWarehouse_0201,\n\t\t///<summary>\n\t\t///Yes. Head inside. This building contains most of the controls and hubs…\n\t\t///</summary>\n\t\tDlg_RussianWarehouse_0202,\n\t\t///<summary>\n\t\t///…you need to infiltrate.\n\t\t///</summary>\n\t\tDlg_RussianWarehouse_0203,\n\t\t///<summary>\n\t\t///Shouldn’t it be the most heavily guarded part of the base?\n\t\t///</summary>\n\t\tDlg_RussianWarehouse_0204,\n\t\t///<summary>\n\t\t///It usually is. Hopefully the pirate attack distracted them, so you’ll only have…\n\t\t///</summary>\n\t\tDlg_RussianWarehouse_0205,\n\t\t///<summary>\n\t\t///…the turrets to worry about, maybe a few fighters.\n\t\t///</summary>\n\t\tDlg_RussianWarehouse_0206,\n\t\t///<summary>\n\t\t///We’ll check out the situation.\n\t\t///</summary>\n\t\tDlg_RussianWarehouse_0207,\n\t\t///<summary>\n\t\t///Hurry up! Switch off those defenses! We’re under heavy fire here!\n\t\t///</summary>\n\t\tDlg_RussianWarehouse_0208,\n\t\t///<summary>\n\t\t///Nearly there. Give us a few seconds.\n\t\t///</summary>\n\t\tDlg_RussianWarehouse_0209,\n\t\t///<summary>\n\t\t///This should help.\n\t\t///</summary>\n\t\tDlg_RussianWarehouse_0301,\n\t\t///<summary>\n\t\t///Thanks! We’re fine on our own for now. Get to the storage area and grab…\n\t\t///</summary>\n\t\tDlg_RussianWarehouse_0302,\n\t\t///<summary>\n\t\t///…the components you need! We’ll take care of the ships outside.\n\t\t///</summary>\n\t\tDlg_RussianWarehouse_0303,\n\t\t///<summary>\n\t\t///You’ll need to get to the main warehouse. Turn off the turrets…\n\t\t///</summary>\n\t\tDlg_RussianWarehouse_0304,\n\t\t///<summary>\n\t\t///…at the old entrance and the exit door.\n\t\t///</summary>\n\t\tDlg_RussianWarehouse_0305,\n\t\t///<summary>\n\t\t///You’re clear to go. Proceed to the old entrance. Use the coordinates from Lorraine.\n\t\t///</summary>\n\t\tDlg_RussianWarehouse_0401,\n\t\t///<summary>\n\t\t///The old entry seems to be boarded-up.\n\t\t///</summary>\n\t\tDlg_RussianWarehouse_0501,\n\t\t///<summary>\n\t\t///We’ll need to drill or smash our way through!\n\t\t///</summary>\n\t\tDlg_RussianWarehouse_0502,\n\t\t///<summary>\n\t\t///Cool, we’re inside!\n\t\t///</summary>\n\t\tDlg_RussianWarehouse_0601,\n\t\t///<summary>\n\t\t///Be careful! That pirate attack distracted most of the Russian ships, but…\n\t\t///</summary>\n\t\tDlg_RussianWarehouse_0602,\n\t\t///<summary>\n\t\t///…there are still plenty of them around. At least according to my scans.\n\t\t///</summary>\n\t\tDlg_RussianWarehouse_0603,\n\t\t///<summary>\n\t\t///Roger that.\n\t\t///</summary>\n\t\tDlg_RussianWarehouse_0604,\n\t\t///<summary>\n\t\t///Get to the main storage room. You have the coordinates. Good luck! And hurry!\n\t\t///</summary>\n\t\tDlg_RussianWarehouse_0605,\n\t\t///<summary>\n\t\t///The components should be somewhere in this area.\n\t\t///</summary>\n\t\tDlg_RussianWarehouse_0701,\n\t\t///<summary>\n\t\t///I did some thorough scans. The placement of the components is marked on your HUD.\n\t\t///</summary>\n\t\tDlg_RussianWarehouse_0702,\n\t\t///<summary>\n\t\t///Always a step ahead, right?\n\t\t///</summary>\n\t\tDlg_RussianWarehouse_0703,\n\t\t///<summary>\n\t\t///You know you can always count on me!\n\t\t///</summary>\n\t\tDlg_RussianWarehouse_0704,\n\t\t///<summary>\n\t\t///All done here.\n\t\t///</summary>\n\t\tDlg_RussianWarehouse_0801,\n\t\t///<summary>\n\t\t///Let’s get out!\n\t\t///</summary>\n\t\tDlg_RussianWarehouse_0802,\n\t\t///<summary>\n\t\t///You might want to check out what else is in storage. It won’t take long and…\n\t\t///</summary>\n\t\tDlg_RussianWarehouse_0803,\n\t\t///<summary>\n\t\t///…we might find something useful.\n\t\t///</summary>\n\t\tDlg_RussianWarehouse_0804,\n\t\t///<summary>\n\t\t///Sorry to cut in, but I have a favor to ask.\n\t\t///</summary>\n\t\tDlg_RussianWarehouse_0805,\n\t\t///<summary>\n\t\t///What is it?\n\t\t///</summary>\n\t\tDlg_RussianWarehouse_0806,\n\t\t///<summary>\n\t\t///Our boys were supposed to get us some data about transport ship vectors…\n\t\t///</summary>\n\t\tDlg_RussianWarehouse_0807,\n\t\t///<summary>\n\t\t///…in this sector. But none of them made it alive. The data should be housed…\n\t\t///</summary>\n\t\tDlg_RussianWarehouse_0808,\n\t\t///<summary>\n\t\t///…in a navigation computer, just a few hundred meters from where you are right now.\n\t\t///</summary>\n\t\tDlg_RussianWarehouse_0809,\n\t\t///<summary>\n\t\t///If you can get it for us, we’ll figure out some way to repay you. Make it worth…\n\t\t///</summary>\n\t\tDlg_RussianWarehouse_0810,\n\t\t///<summary>\n\t\t///…your while.\n\t\t///</summary>\n\t\tDlg_RussianWarehouse_0811,\n\t\t///<summary>\n\t\t///We’re on it.\n\t\t///</summary>\n\t\tDlg_RussianWarehouse_0812,\n\t\t///<summary>\n\t\t///I hope there won’t be too much trouble on the way.\n\t\t///</summary>\n\t\tDlg_RussianWarehouse_0813,\n\t\t///<summary>\n\t\t///We have the data, ready to exit.\n\t\t///</summary>\n\t\tDlg_RussianWarehouse_0901,\n\t\t///<summary>\n\t\t///Make sure to turn off the turrets, if you want to exit by the main door…\n\t\t///</summary>\n\t\tDlg_RussianWarehouse_0902,\n\t\t///<summary>\n\t\t///Otherwise, prepare for a hot shower. Really hot.\n\t\t///</summary>\n\t\tDlg_RussianWarehouse_0903,\n\t\t///<summary>\n\t\t///Nice to see you back, guys!\n\t\t///</summary>\n\t\tDlg_RussianWarehouse_1001,\n\t\t///<summary>\n\t\t///I can’t wait to see Thomas again!\n\t\t///</summary>\n\t\tDlg_RussianWarehouse_1002,\n\t\t///<summary>\n\t\t///I wonder what our next step will be.\n\t\t///</summary>\n\t\tDlg_RussianWarehouse_1003,\n\t\t///<summary>\n\t\t///I’m dying to see the data he prepared for us.\n\t\t///</summary>\n\t\tDlg_RussianWarehouse_1004,\n\t\t///<summary>\n\t\t///To all operating ships: The Russians have sent a distress signal…\n\t\t///</summary>\n\t\tDlg_RussianWarehouse_1101,\n\t\t///<summary>\n\t\t///…requesting reinforcements.\n\t\t///</summary>\n\t\tDlg_RussianWarehouse_1102,\n\t\t///<summary>\n\t\t///ETA 6 minutes.\n\t\t///</summary>\n\t\tDlg_RussianWarehouse_1103,\n\t\t///<summary>\n\t\t///Complete your assignments and return to Famo prior to the arrival of Russian fleet.\n\t\t///</summary>\n\t\tDlg_RussianWarehouse_1104,\n\t\t///<summary>\n\t\t///Repeat.\n\t\t///</summary>\n\t\tDlg_RussianWarehouse_1105,\n\t\t///<summary>\n\t\t///Complete your assignments and return to Famo prior to the arrival of Russian fleet.\n\t\t///</summary>\n\t\tDlg_RussianWarehouse_1106,\n\t\t///<summary>\n\t\t///Roger that. Let’s make it fast, I’m not much in the mood for company.\n\t\t///</summary>\n\t\tDlg_RussianWarehouse_1107,\n\t\t///<summary>\n\t\t///Darn. And this was such a nice raid operation.\n\t\t///</summary>\n\t\tDlg_RussianWarehouse_1108,\n\t\t///<summary>\n\t\t///Pillaging, looting, ransacking… oh, and don’t forget the marauding.\n\t\t///</summary>\n\t\tDlg_RussianWarehouse_1109,\n\t\t///<summary>\n\t\t///Spare the stand-up routine. We need to concentrate!\n\t\t///</summary>\n\t\tDlg_RussianWarehouse_1110,\n\t\t///<summary>\n\t\t///Here we are. Silver Foresight. Our last location to place an alien material detector.\n\t\t///</summary>\n\t\tDlg_EacTransmitter_0101,\n\t\t///<summary>\n\t\t///Again, back at our favorite holiday hotspot!\n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_0100,\n\t\t///<summary>\n\t\t///Let’s not waste time; let’s find Manjeet. \n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_0101,\n\t\t///<summary>\n\t\t///I’m sure he can help us.\n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_0102,\n\t\t///<summary>\n\t\t///We’ll find out soon enough. \n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_0103,\n\t\t///<summary>\n\t\t///If anyone knows how to get super-charged plutonium fuel cells, it’s Manjeet. \n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_0104,\n\t\t///<summary>\n\t\t///I hope you’re right. Since we have no other leads.\n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_0105,\n\t\t///<summary>\n\t\t///Doesn’t look like it’ll be too hard to get radioactive shit around here. \n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_0106,\n\t\t///<summary>\n\t\t///Greetings, my dear friends! What brings you here, business or…?\n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_0200,\n\t\t///<summary>\n\t\t///We’re looking for plutonium fuel cells.\n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_0202,\n\t\t///<summary>\n\t\t///We need three of them. What’s your price?\n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_0205,\n\t\t///<summary>\n\t\t///Considering you did me a favor… I could give them to you as a sign of gratitude. \n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_0206,\n\t\t///<summary>\n\t\t///Take those fuel cells and use them well!\n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_0210,\n\t\t///<summary>\n\t\t///One more thing. Manjeet, you happen to know – by any chance…\n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_0213,\n\t\t///<summary>\n\t\t///…where to get rare plutonium isotopes?\n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_0214,\n\t\t///<summary>\n\t\t///If you want something really special, mine some plutonium isotopes from the Rift. \n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_0217,\n\t\t///<summary>\n\t\t///The abandoned OmniCorp mines?\n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_0218,\n\t\t///<summary>\n\t\t///On our way, then. \n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_0223,\n\t\t///<summary>\n\t\t///Guys, hurry up, I’ve got a situation here.\n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_0300,\n\t\t///<summary>\n\t\t///Another local gang flashing their tail feathers?\n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_0301,\n\t\t///<summary>\n\t\t///Not exactly. EAC Police. \n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_0302,\n\t\t///<summary>\n\t\t///They say they have an arrest warrant for us.\n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_0303,\n\t\t///<summary>\n\t\t///We’ll be right there. Hang on.\n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_0304,\n\t\t///<summary>\n\t\t///Marcus Rainier to EAC Police: What is all this about?\n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_0406,\n\t\t///<summary>\n\t\t///Mr. Rainier, you and your companions are under arrest. \n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_0407,\n\t\t///<summary>\n\t\t///We have orders to escort you to court, where all charges will be explained and…\n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_0412,\n\t\t///<summary>\n\t\t///We did not do anything against the EAC. We’re freelancers. \n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_0416,\n\t\t///<summary>\n\t\t///You will have a chance to defend yourself in court. We have our orders. \n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_0418,\n\t\t///<summary>\n\t\t///I’m sorry. We’re not going anywhere without an explanation. \n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_0419,\n\t\t///<summary>\n\t\t///Could you at the least state the reasons for the treason charges against the EAC?\n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_0420,\n\t\t///<summary>\n\t\t///As if you didn’t know. Killing hundreds of civilians at the New Landswick survey site.\n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_0421,\n\t\t///<summary>\n\t\t///Raiding a Russian civilian trade station… \n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_0422,\n\t\t///<summary>\n\t\t///I repeat, we are NOT going anywhere!\n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_0424,\n\t\t///<summary>\n\t\t///One little issue. Their motherships have engine disruptors. I can’t budge.\n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_0428,\n\t\t///<summary>\n\t\t///We need their disruption devices knocked out. \n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_0430,\n\t\t///<summary>\n\t\t///Destroy them on the way, then dock as fast as you can.\n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_0431,\n\t\t///<summary>\n\t\t///I am taking heavy fire here. Destroy those engine disruptors – quick! …\n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_0700,\n\t\t///<summary>\n\t\t///…or we won’t make it!\n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_0701,\n\t\t///<summary>\n\t\t///We’ll take out the one on the left, me and Valentin. \n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_0702,\n\t\t///<summary>\n\t\t///Count on me. \n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_0703,\n\t\t///<summary>\n\t\t///Apollo, you and Tarja, take out the right one. \n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_0704,\n\t\t///<summary>\n\t\t///Will do!\n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_0705,\n\t\t///<summary>\n\t\t///Don’t waste time on their weapons and support ships. \n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_0706,\n\t\t///<summary>\n\t\t///I’m telling you, we cannot win this fight. Our only chance is to escape. \n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_0707,\n\t\t///<summary>\n\t\t///I’m taking this thing down!\n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_0800,\n\t\t///<summary>\n\t\t///Come on! Keep pounding that disruptor unit!\n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_0801,\n\t\t///<summary>\n\t\t///Almost there!\n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_0802,\n\t\t///<summary>\n\t\t///We’re done here. Apollo, what’s your status?\n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_0900,\n\t\t///<summary>\n\t\t///Hang on, the device isn’t dead yet. Almost!\n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_0901,\n\t\t///<summary>\n\t\t///Done. Madelyn, you should be able to fly again.\n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_1000,\n\t\t///<summary>\n\t\t///Hurry up and get here. I’m sustaining critical damage.\n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_1001,\n\t\t///<summary>\n\t\t///Another minute and you’ll have nowhere to dock.\n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_1002,\n\t\t///<summary>\n\t\t///Then we’ll be there in half a minute! \n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_1003,\n\t\t///<summary>\n\t\t///Apollo and Tarja, get inside and cover us from the turrets while the engines warm up. \n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_1100,\n\t\t///<summary>\n\t\t///I’m on it.\n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_1101,\n\t\t///<summary>\n\t\t///Me and Valentin will hold them off from here and jump in on the way. \n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_1102,\n\t\t///<summary>\n\t\t///Roger that.\n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_1103,\n\t\t///<summary>\n\t\t///Don’t even think of doing anything stupid, Marcus! I know that’s your fallback position.\n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_1104,\n\t\t///<summary>\n\t\t///No worries. \n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_1105,\n\t\t///<summary>\n\t\t///Apollo, get rid of those missile ships shooting at our engines. Damn, this won’t be easy.\n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_1200,\n\t\t///<summary>\n\t\t///Guys, would it be too much trouble to take out those fighters in front of us?!\n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_1300,\n\t\t///<summary>\n\t\t///I’m a tad busy at the moment. Valentin?\n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_1301,\n\t\t///<summary>\n\t\t///Negative. We’re outnumbered here. You’ll have to take care of them yourself, Madelyn.\n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_1302,\n\t\t///<summary>\n\t\t///Hell! Okay, whatever. Damn, another hit. \n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_1303,\n\t\t///<summary>\n\t\t///Guys, take down those interceptors or we’re screwed.\n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_1304,\n\t\t///<summary>\n\t\t///Man! I guess they were serious about that arrest warrant!\n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_1400,\n\t\t///<summary>\n\t\t///We’re taking too much damage!\n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_1401,\n\t\t///<summary>\n\t\t///I can’t move at all, half of our systems are down. Engines at 30%, hull critical.\n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_1501,\n\t\t///<summary>\n\t\t///We’re dead meat.\n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_1502,\n\t\t///<summary>\n\t\t///Damn, I scanned the ship and its weapon systems.\n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_1600,\n\t\t///<summary>\n\t\t///You won’t be able to defeat it with your weapons.\n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_1602,\n\t\t///<summary>\n\t\t///I know. I’m not going to use my weapons.\n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_1603,\n\t\t///<summary>\n\t\t///Guys and gals, it’s been an honor…\n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_1604,\n\t\t///<summary>\n\t\t///Wha-what are you planning to do?\n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_1605,\n\t\t///<summary>\n\t\t///I hope you’re not thinking of–\n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_1606,\n\t\t///<summary>\n\t\t///Sometimes that’s the only solution… Take care, guys.\n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_1607,\n\t\t///<summary>\n\t\t///Have you lost your mind, Marcus?\n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_1608,\n\t\t///<summary>\n\t\t///There is no other way.\n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_1609,\n\t\t///<summary>\n\t\t///There’s always another way! This is not the way we do things. \n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_1610,\n\t\t///<summary>\n\t\t///Do you understand? We can tr–\n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_1611,\n\t\t///<summary>\n\t\t///What must be done must be done.\n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_1612,\n\t\t///<summary>\n\t\t///No – Marcus – this is insane! Stop!\n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_1613,\n\t\t///<summary>\n\t\t///Farewell, little brother! See you on the other side. \n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_1614,\n\t\t///<summary>\n\t\t///I hate you, Marcus! You hear me? I hate you!\n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_1700,\n\t\t///<summary>\n\t\t///Marcus… Marcus? \n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_1701,\n\t\t///<summary>\n\t\t///We can’t let his sacrifice be in vain.\n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_1703,\n\t\t///<summary>\n\t\t///Now’s our only chance to make it out of here.\n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_1704,\n\t\t///<summary>\n\t\t///…\n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_1705,\n\t\t///<summary>\n\t\t///Madelyn, do you copy?\n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_1706,\n\t\t///<summary>\n\t\t///I… I set the course to the Rift. Hold on a few more seconds and we’re off.\n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_1707,\n\t\t///<summary>\n\t\t///…\n\t\t///</summary>\n\t\tDlg_JunkyardEacAmbush_1708,\n\t\t///<summary>\n\t\t///…and then what?\n\t\t///</summary>\n\t\tDlg_EacTransmitter_0102,\n\t\t///<summary>\n\t\t///Who knows? Armageddon? Spiritual enlightenment? Tic-tac-toe? Anyway, we’ve got…\n\t\t///</summary>\n\t\tDlg_EacTransmitter_0103,\n\t\t///<summary>\n\t\t///…business to do here first.\n\t\t///</summary>\n\t\tDlg_EacTransmitter_0104,\n\t\t///<summary>\n\t\t///Ok, pay attention now. We’ll approach the cargo storage area and place an explosive…\n\t\t///</summary>\n\t\tDlg_EacTransmitter_0105,\n\t\t///<summary>\n\t\t///…device on its doors. That’ll distract them for a while. Apollo, you and I will head to…\n\t\t///</summary>\n\t\tDlg_EacTransmitter_0106,\n\t\t///<summary>\n\t\t///…the control room. Tarja and Valentin will stay put.\n\t\t///</summary>\n\t\tDlg_EacTransmitter_0107,\n\t\t///<summary>\n\t\t///Nice, there should be some interesting stuff to loot.\n\t\t///</summary>\n\t\tDlg_EacTransmitter_0108,\n\t\t///<summary>\n\t\t///Ought to help me pay for my new implants!\n\t\t///</summary>\n\t\tDlg_EacTransmitter_0109,\n\t\t///<summary>\n\t\t///Tarja!\n\t\t///</summary>\n\t\tDlg_EacTransmitter_0110,\n\t\t///<summary>\n\t\t///Retinal implants.\n\t\t///</summary>\n\t\tDlg_EacTransmitter_0111,\n\t\t///<summary>\n\t\t///Come on folks, let’s move. I’ll stay at a safe distance as usual.\n\t\t///</summary>\n\t\tDlg_EacTransmitter_0112,\n\t\t///<summary>\n\t\t///Ok, Valentin and I will stay here. Head to the control room and do what you need to do.\n\t\t///</summary>\n\t\tDlg_EacTransmitter_0201,\n\t\t///<summary>\n\t\t///Get moving, guys. Watch out for military presence. It’s well known that this…\n\t\t///</summary>\n\t\tDlg_EacTransmitter_0202,\n\t\t///<summary>\n\t\t///…radar array has tactical value.\n\t\t///</summary>\n\t\tDlg_EacTransmitter_0203,\n\t\t///<summary>\n\t\t///So many doors, so little time.\n\t\t///</summary>\n\t\tDlg_EacTransmitter_0301,\n\t\t///<summary>\n\t\t///Hope everything goes smoothly here. My energy’s a little low after that…\n\t\t///</summary>\n\t\tDlg_EacTransmitter_0302,\n\t\t///<summary>\n\t\t///…golf vacation at Reway.\n\t\t///</summary>\n\t\tDlg_EacTransmitter_0303,\n\t\t///<summary>\n\t\t///Don’t worry brother, I’ll pick up your slack. Let’s head to satellite A first, and…\n\t\t///</summary>\n\t\tDlg_EacTransmitter_0304,\n\t\t///<summary>\n\t\t///…reprogram that puppy.\n\t\t///</summary>\n\t\tDlg_EacTransmitter_0305,\n\t\t///<summary>\n\t\t///Damn, a security trap! We’ve set off an auto-destruct sequence. What’s going on?!\n\t\t///</summary>\n\t\tDlg_EacTransmitter_0401,\n\t\t///<summary>\n\t\t///Apollo, watch out! Turrets have been activated…\n\t\t///</summary>\n\t\tDlg_EacTransmitter_0402,\n\t\t///<summary>\n\t\t///Doors have been locked! Destroy that panel overhead, hurry!\n\t\t///</summary>\n\t\tDlg_EacTransmitter_0403,\n\t\t///<summary>\n\t\t///Can you pick up the pace, guys?\n\t\t///</summary>\n\t\tDlg_EacTransmitter_0406,\n\t\t///<summary>\n\t\t///Apollo, let’s head to control room. The main computer should be there…\n\t\t///</summary>\n\t\tDlg_EacTransmitter_0407,\n\t\t///<summary>\n\t\t///Maybe we can use it to turn off the auto-destruct.\n\t\t///</summary>\n\t\tDlg_EacTransmitter_0408,\n\t\t///<summary>\n\t\t///Marcus, what now? Auto-destruct can’t be turned off…\n\t\t///</summary>\n\t\tDlg_EacTransmitter_0501,\n\t\t///<summary>\n\t\t///It seems there are some overburdened aggregators.\n\t\t///</summary>\n\t\tDlg_EacTransmitter_0502,\n\t\t///<summary>\n\t\t///Aggregators? Ok bro, you go destroy the two on the right side of station…\n\t\t///</summary>\n\t\tDlg_EacTransmitter_0503,\n\t\t///<summary>\n\t\t///I’ll take care of these two on the left side.\n\t\t///</summary>\n\t\tDlg_EacTransmitter_0504,\n\t\t///<summary>\n\t\t///What makes you think that will work?\n\t\t///</summary>\n\t\tDlg_EacTransmitter_0505,\n\t\t///<summary>\n\t\t///Hope and faith.\n\t\t///</summary>\n\t\tDlg_EacTransmitter_0506,\n\t\t///<summary>\n\t\t///Great! Destroying the aggregators stopped the auto-destruct sequence.\n\t\t///</summary>\n\t\tDlg_EacTransmitter_0601,\n\t\t///<summary>\n\t\t///Woohoo, they did it!\n\t\t///</summary>\n\t\tDlg_EacTransmitter_0602,\n\t\t///<summary>\n\t\t///That’s our boy.\n\t\t///</summary>\n\t\tDlg_EacTransmitter_0603,\n\t\t///<summary>\n\t\t///Marcus? Are you ready to rock’n’roll?\n\t\t///</summary>\n\t\tDlg_EacTransmitter_0604,\n\t\t///<summary>\n\t\t///Crap! Apollo, get here, fast! I’ve got company. \n\t\t///</summary>\n\t\tDlg_EacTransmitter_0605,\n\t\t///<summary>\n\t\t///Thanks, brother, I owe you again. That was close…\n\t\t///</summary>\n\t\tDlg_EacTransmitter_0701,\n\t\t///<summary>\n\t\t///Come on! Time to hack satellites B and C.\n\t\t///</summary>\n\t\tDlg_EacTransmitter_0702,\n\t\t///<summary>\n\t\t///Agreed. No time to waste.\n\t\t///</summary>\n\t\tDlg_EacTransmitter_0703,\n\t\t///<summary>\n\t\t///Satellite B reprogrammed!\n\t\t///</summary>\n\t\tDlg_EacTransmitter_0801,\n\t\t///<summary>\n\t\t///On to satellite C. Almost there!\n\t\t///</summary>\n\t\tDlg_EacTransmitter_0802,\n\t\t///<summary>\n\t\t///Satellite C reprogrammed. We can start the transmission now!\n\t\t///</summary>\n\t\tDlg_EacTransmitter_0901,\n\t\t///<summary>\n\t\t///Years of hard work, and it all comes down to this moment!\n\t\t///</summary>\n\t\tDlg_EacTransmitter_0902,\n\t\t///<summary>\n\t\t///Damn it, it won’t start. \n\t\t///</summary>\n\t\tDlg_EacTransmitter_1001,\n\t\t///<summary>\n\t\t///Try to find some components to repair the generator…\n\t\t///</summary>\n\t\tDlg_EacTransmitter_1002,\n\t\t///<summary>\n\t\t///Then we can pull some energy from the lower solar panels to jump-start it.\n\t\t///</summary>\n\t\tDlg_EacTransmitter_1003,\n\t\t///<summary>\n\t\t///Great idea, Madelyn. We can’t be defeated this close to our goal.\n\t\t///</summary>\n\t\tDlg_EacTransmitter_1004,\n\t\t///<summary>\n\t\t///Go!\n\t\t///</summary>\n\t\tDlg_EacTransmitter_1005,\n\t\t///<summary>\n\t\t///It reads “Generator Repair Kit”. Something tells me it’ll work.\n\t\t///</summary>\n\t\tDlg_EacTransmitter_1101,\n\t\t///<summary>\n\t\t///Ok, I’ll get to work. According to the floor plan, the generator is in the neighborhood.\n\t\t///</summary>\n\t\tDlg_EacTransmitter_1102,\n\t\t///<summary>\n\t\t///Good job. Now just redirect energy from the lower solar panels to this generator.\n\t\t///</summary>\n\t\tDlg_EacTransmitter_1201,\n\t\t///<summary>\n\t\t///Hope it’ll work!\n\t\t///</summary>\n\t\tDlg_EacTransmitter_1202,\n\t\t///<summary>\n\t\t///Of course it will, sweetheart!\n\t\t///</summary>\n\t\tDlg_EacTransmitter_1203,\n\t\t///<summary>\n\t\t///Yeah, that’s what I’m talking about.\n\t\t///</summary>\n\t\tDlg_EacTransmitter_1301,\n\t\t///<summary>\n\t\t///We can start the triangulation now. This is quite a moment in history!\n\t\t///</summary>\n\t\tDlg_EacTransmitter_1302,\n\t\t///<summary>\n\t\t///I’m so proud of you, guys.\n\t\t///</summary>\n\t\tDlg_EacTransmitter_1303,\n\t\t///<summary>\n\t\t///Me too. Seriously.\n\t\t///</summary>\n\t\tDlg_EacTransmitter_1304,\n\t\t///<summary>\n\t\t///Triangulation in progress. Sending echo to Thomas…\n\t\t///</summary>\n\t\tDlg_EacTransmitter_1401,\n\t\t///<summary>\n\t\t///All three detectors are functional! We’re getting the data! I’m picking up results! And…\n\t\t///</summary>\n\t\tDlg_EacTransmitter_1402,\n\t\t///<summary>\n\t\t///You’ve got the locations of more alien artifacts?\n\t\t///</summary>\n\t\tDlg_EacTransmitter_1403,\n\t\t///<summary>\n\t\t///I’ve got a location.\n\t\t///</summary>\n\t\tDlg_EacTransmitter_1404,\n\t\t///<summary>\n\t\t///What do you mean? I thought there were multiple artifacts?\n\t\t///</summary>\n\t\tDlg_EacTransmitter_1405,\n\t\t///<summary>\n\t\t///Ehm. According to the results, one of the spots containing this alien material is…\n\t\t///</summary>\n\t\tDlg_EacTransmitter_1406,\n\t\t///<summary>\n\t\t///…far denser than the others. Also, the detectors don’t seem to be strong enough…\n\t\t///</summary>\n\t\tDlg_EacTransmitter_1407,\n\t\t///<summary>\n\t\t///…to ping all the locations. They didn’t even find the two pieces we already have.\n\t\t///</summary>\n\t\tDlg_EacTransmitter_1408,\n\t\t///<summary>\n\t\t///That means…?\n\t\t///</summary>\n\t\tDlg_EacTransmitter_1409,\n\t\t///<summary>\n\t\t///That means we’ve found one location with one huge alien thing. Am I correct?\n\t\t///</summary>\n\t\tDlg_EacTransmitter_1410,\n\t\t///<summary>\n\t\t///You are. When you depart from Foresight, pick me up…\n\t\t///</summary>\n\t\tDlg_EacTransmitter_1411,\n\t\t///<summary>\n\t\t///…and we’ll head together to the marked location. I want to see it with my own eyes.\n\t\t///</summary>\n\t\tDlg_EacTransmitter_1412,\n\t\t///<summary>\n\t\t///On our way.\n\t\t///</summary>\n\t\tDlg_EacTransmitter_1413,\n\t\t///<summary>\n\t\t///Willkommen in Reichstag!\n\t\t///</summary>\n\t\tDlg_ReichstagA_1000,\n\t\t///<summary>\n\t\t///The Nazis have made themselves a pretty spectacular headquarters.\n\t\t///</summary>\n\t\tDlg_ReichstagA_1001,\n\t\t///<summary>\n\t\t///Thomas arranged us a meeting in the main Reichstag building. \n\t\t///</summary>\n\t\tDlg_ReichstagA_1002,\n\t\t///<summary>\n\t\t///Head there and find Colonel von Stauffenberg.\n\t\t///</summary>\n\t\tDlg_ReichstagA_1003,\n\t\t///<summary>\n\t\t///On our way.\n\t\t///</summary>\n\t\tDlg_ReichstagA_1004,\n\t\t///<summary>\n\t\t///I have this strange… feeling.\n\t\t///</summary>\n\t\tDlg_ReichstagA_1005,\n\t\t///<summary>\n\t\t///What do you mean?\n\t\t///</summary>\n\t\tDlg_ReichstagA_1006,\n\t\t///<summary>\n\t\t///Oh, I am not sure. Just kinda feel like committing genocide. Ever get that feeling?\n\t\t///</summary>\n\t\tDlg_ReichstagA_1007,\n\t\t///<summary>\n\t\t///Maybe it’s the surroundings.\n\t\t///</summary>\n\t\tDlg_ReichstagA_1008,\n\t\t///<summary>\n\t\t///Let’s stick to our mission!\n\t\t///</summary>\n\t\tDlg_ReichstagA_1009,\n\t\t///<summary>\n\t\t///Colonel von Stauffenberg.\n\t\t///</summary>\n\t\tDlg_ReichstagA_1012,\n\t\t///<summary>\n\t\t///Mr. Rainier! Thomas told me of your arrival.\n\t\t///</summary>\n\t\tDlg_ReichstagA_1013,\n\t\t///<summary>\n\t\t///Did he also tell you about my brother? His name is Marcus Rainier. \n\t\t///</summary>\n\t\tDlg_ReichstagA_1014,\n\t\t///<summary>\n\t\t///He is being held – unjustly – in Reway prison for treason. \n\t\t///</summary>\n\t\tDlg_ReichstagA_1015,\n\t\t///<summary>\n\t\t///I was told you might be able to help.\n\t\t///</summary>\n\t\tDlg_ReichstagA_1016,\n\t\t///<summary>\n\t\t///We will consider lending our support. \n\t\t///</summary>\n\t\tDlg_ReichstagA_1017,\n\t\t///<summary>\n\t\t///First you must prove you are worthy soldiers and ready to fight for our cause. \n\t\t///</summary>\n\t\tDlg_ReichstagA_1018,\n\t\t///<summary>\n\t\t///We can talk about the plan in more detail afterwards. \n\t\t///</summary>\n\t\tDlg_ReichstagA_1019,\n\t\t///<summary>\n\t\t///I suppose you have something specific in mind?\n\t\t///</summary>\n\t\tDlg_ReichstagA_1020,\n\t\t///<summary>\n\t\t///Recently, we had some… problems with one of our research stations. \n\t\t///</summary>\n\t\tDlg_ReichstagA_1021,\n\t\t///<summary>\n\t\t///It was taken by a group of… separatists. We need someone, …\n\t\t///</summary>\n\t\tDlg_ReichstagA_1022,\n\t\t///<summary>\n\t\t///…preferably from outside of the Reich, to go there, secure the research data…\n\t\t///</summary>\n\t\tDlg_ReichstagA_1023,\n\t\t///<summary>\n\t\t///…and neutralize the facility.\n\t\t///</summary>\n\t\tDlg_ReichstagA_1024,\n\t\t///<summary>\n\t\t///Any other information we might need?\n\t\t///</summary>\n\t\tDlg_ReichstagA_1025,\n\t\t///<summary>\n\t\t///No. This is a fairly standard operation. \n\t\t///</summary>\n\t\tDlg_ReichstagA_1026,\n\t\t///<summary>\n\t\t///But I hope you have a strong stomach, Mr. Rainier – it is a biological research lab.  \n\t\t///</summary>\n\t\tDlg_ReichstagA_1027,\n\t\t///<summary>\n\t\t///Not a problem. Will this guarantee us your favor?\n\t\t///</summary>\n\t\tDlg_ReichstagA_1028,\n\t\t///<summary>\n\t\t///No promises. But the Reich rewards those who are loyal to our cause. \n\t\t///</summary>\n\t\tDlg_ReichstagA_1029,\n\t\t///<summary>\n\t\t///We will talk later.   \n\t\t///</summary>\n\t\tDlg_ReichstagA_1030,\n\t\t///<summary>\n\t\t///Apollo out. Madelyn, I am sending you the coordinates for a Nazi research lab. \n\t\t///</summary>\n\t\tDlg_ReichstagA_1031,\n\t\t///<summary>\n\t\t///Get ready, I’m docking in a minute.\n\t\t///</summary>\n\t\tDlg_ReichstagA_1032,\n\t\t///<summary>\n\t\t///Roger that. \n\t\t///</summary>\n\t\tDlg_ReichstagA_1033,\n\t\t///<summary>\n\t\t///We’re visiting a Nazi research lab? My childhood dreams, at last, are coming true? \n\t\t///</summary>\n\t\tDlg_ReichstagA_1034,\n\t\t///<summary>\n\t\t///Valentin?\n\t\t///</summary>\n\t\tDlg_ReichstagA_1035,\n\t\t///<summary>\n\t\t///Just joking. You know me.\n\t\t///</summary>\n\t\tDlg_ReichstagA_1036,\n\t\t///<summary>\n\t\t///Consider getting some supplies before departure, Apollo.\n\t\t///</summary>\n\t\tDlg_ReichstagA_1037,\n\t\t///<summary>\n\t\t///But that’s up to you. I’m ready when you are.\n\t\t///</summary>\n\t\tDlg_ReichstagA_1038,\n\t\t///<summary>\n\t\t///Colonel von Stauffenberg? \n\t\t///</summary>\n\t\tDlg_ReichstagC_1000,\n\t\t///<summary>\n\t\t///We’re back. Mission successful. Pretty nasty business, I must say!\n\t\t///</summary>\n\t\tDlg_ReichstagC_1001,\n\t\t///<summary>\n\t\t///Soldiers follow orders. That is how it works. You proved strong, Mr. Rainier. \n\t\t///</summary>\n\t\tDlg_ReichstagC_1002,\n\t\t///<summary>\n\t\t///You flatter me, Colonel. \n\t\t///</summary>\n\t\tDlg_ReichstagC_1003,\n\t\t///<summary>\n\t\t///Strong enough for our cause. Shall we discuss your… request?\n\t\t///</summary>\n\t\tDlg_ReichstagC_1004,\n\t\t///<summary>\n\t\t///Have you considered giving us your support with Reway? \n\t\t///</summary>\n\t\tDlg_ReichstagC_1005,\n\t\t///<summary>\n\t\t///Whether it’s a frontal assault or some other way to get my brother out?\n\t\t///</summary>\n\t\tDlg_ReichstagC_1006,\n\t\t///<summary>\n\t\t///Indeed. We already had a plan in place for attacking Reway. \n\t\t///</summary>\n\t\tDlg_ReichstagC_1007,\n\t\t///<summary>\n\t\t///You see, many of our own officers and brave soldiers are being held there. \n\t\t///</summary>\n\t\tDlg_ReichstagC_1008,\n\t\t///<summary>\n\t\t///However, the attack is scheduled months from now. \n\t\t///</summary>\n\t\tDlg_ReichstagC_1009,\n\t\t///<summary>\n\t\t///And I know your brother is sentenced to death within a few days. \n\t\t///</summary>\n\t\tDlg_ReichstagC_1010,\n\t\t///<summary>\n\t\t///So what do you suggest? \n\t\t///</summary>\n\t\tDlg_ReichstagC_1011,\n\t\t///<summary>\n\t\t///I would propose to attack earlier. However, at the moment, …\n\t\t///</summary>\n\t\tDlg_ReichstagC_1012,\n\t\t///<summary>\n\t\t///…it is militarily impossible for us – thanks to some small… “internal” problems.\n\t\t///</summary>\n\t\tDlg_ReichstagC_1013,\n\t\t///<summary>\n\t\t///Internal problems?\n\t\t///</summary>\n\t\tDlg_ReichstagC_1014,\n\t\t///<summary>\n\t\t///The base you were sent to – the one that was taken over by separatists; \n\t\t///</summary>\n\t\tDlg_ReichstagC_1015,\n\t\t///<summary>\n\t\t///…it was not the only one. \n\t\t///</summary>\n\t\tDlg_ReichstagC_1016,\n\t\t///<summary>\n\t\t///This group calling themselves the White Wolves – \n\t\t///</summary>\n\t\tDlg_ReichstagC_1017,\n\t\t///<summary>\n\t\t///they’ve grown in strength over the past few months. We need to strike at their heart. \n\t\t///</summary>\n\t\tDlg_ReichstagC_1018,\n\t\t///<summary>\n\t\t///Some time ago, they took over one of our most important mothership construction sites. \n\t\t///</summary>\n\t\tDlg_ReichstagC_1019,\n\t\t///<summary>\n\t\t///As I’m sure you can understand, …\n\t\t///</summary>\n\t\tDlg_ReichstagC_1020,\n\t\t///<summary>\n\t\t///…we do not want the other factions to know about this issue until it is resolved.\n\t\t///</summary>\n\t\tDlg_ReichstagC_1021,\n\t\t///<summary>\n\t\t///We cannot attack the facility directly.\n\t\t///</summary>\n\t\tDlg_ReichstagC_1022,\n\t\t///<summary>\n\t\t///Perhaps we can aid you. \n\t\t///</summary>\n\t\tDlg_ReichstagC_1023,\n\t\t///<summary>\n\t\t///That’s what I hoped.\n\t\t///</summary>\n\t\tDlg_ReichstagC_1024,\n\t\t///<summary>\n\t\t///And that is why I “tested” your skills and allegiance during the last assignment.\n\t\t///</summary>\n\t\tDlg_ReichstagC_1025,\n\t\t///<summary>\n\t\t///If you solve this White Wolves problem of ours, \n\t\t///</summary>\n\t\tDlg_ReichstagC_1026,\n\t\t///<summary>\n\t\t///I will do my best to convince our leadership to attack Reway as soon as possible.\n\t\t///</summary>\n\t\tDlg_ReichstagC_1027,\n\t\t///<summary>\n\t\t///So… what’s the plan?\n\t\t///</summary>\n\t\tDlg_ReichstagC_1028,\n\t\t///<summary>\n\t\t///Infiltrate Doppelburg.\n\t\t///</summary>\n\t\tDlg_ReichstagC_1029,\n\t\t///<summary>\n\t\t///We have a few loyal men there, so you should be able to get inside without a problem.\n\t\t///</summary>\n\t\tDlg_ReichstagC_1030,\n\t\t///<summary>\n\t\t///Take over the command center and disable the base defenses. Are you in?\n\t\t///</summary>\n\t\tDlg_ReichstagC_1031,\n\t\t///<summary>\n\t\t///Affirmative. \n\t\t///</summary>\n\t\tDlg_ReichstagC_1032,\n\t\t///<summary>\n\t\t///Perfect. \n\t\t///</summary>\n\t\tDlg_ReichstagC_1033,\n\t\t///<summary>\n\t\t///Stop by the shipyard to pick up your own Fourth Reich fighters. \n\t\t///</summary>\n\t\tDlg_ReichstagC_1034,\n\t\t///<summary>\n\t\t///This document will ensure you receive them from the supply officer without any problems. \n\t\t///</summary>\n\t\tDlg_ReichstagC_1035,\n\t\t///<summary>\n\t\t///Once on board, proceed to landing bay 3. \n\t\t///</summary>\n\t\tDlg_ReichstagC_1036,\n\t\t///<summary>\n\t\t///A transport ship will be waiting for you there, the one that will take you to Doppelburg. \n\t\t///</summary>\n\t\tDlg_ReichstagC_1037,\n\t\t///<summary>\n\t\t///Confirmed. On my way.\n\t\t///</summary>\n\t\tDlg_ReichstagC_1038,\n\t\t///<summary>\n\t\t///Once you take over Doppelburg – send us a signal. \n\t\t///</summary>\n\t\tDlg_ReichstagC_1039,\n\t\t///<summary>\n\t\t///We’ll come to your aid and help knock out the zeppelins painlessly.  \n\t\t///</summary>\n\t\tDlg_ReichstagC_1040,\n\t\t///<summary>\n\t\t///This should be it. \n\t\t///</summary>\n\t\tDlg_ReichstagC_1041,\n\t\t///<summary>\n\t\t///Brand new vehicles at our command!\n\t\t///</summary>\n\t\tDlg_ReichstagC_1042,\n\t\t///<summary>\n\t\t///Good day, how may I serve?\n\t\t///</summary>\n\t\tDlg_ReichstagC_1043,\n\t\t///<summary>\n\t\t///We are here for re-equipping. This document was signed by Colonel von Stauffenberg. \n\t\t///</summary>\n\t\tDlg_ReichstagC_1044,\n\t\t///<summary>\n\t\t///Good, good. You are to pick up three Baer B13 fighters. \n\t\t///</summary>\n\t\tDlg_ReichstagC_1045,\n\t\t///<summary>\n\t\t///Head to the end of the hall, section S7.\n\t\t///</summary>\n\t\tDlg_ReichstagC_1046,\n\t\t///<summary>\n\t\t///Great, thanks!\n\t\t///</summary>\n\t\tDlg_ReichstagC_1047,\n\t\t///<summary>\n\t\t///You are welcome. \n\t\t///</summary>\n\t\tDlg_ReichstagC_1048,\n\t\t///<summary>\n\t\t///Enjoy the best one-seat fighters in all of known space!\n\t\t///</summary>\n\t\tDlg_ReichstagC_1049,\n\t\t///<summary>\n\t\t///Here we go. Take your pick, Apollo. \n\t\t///</summary>\n\t\tDlg_ReichstagC_1050,\n\t\t///<summary>\n\t\t///Good choice. I’ll take that one.\n\t\t///</summary>\n\t\tDlg_ReichstagC_1051,\n\t\t///<summary>\n\t\t///I think they’re all exactly the same. \n\t\t///</summary>\n\t\tDlg_ReichstagC_1052,\n\t\t///<summary>\n\t\t///I see you are ready for takeoff. \n\t\t///</summary>\n\t\tDlg_ReichstagC_1053,\n\t\t///<summary>\n\t\t///Make sure to check out the armory for weapons and other equipment you might find useful.\n\t\t///</summary>\n\t\tDlg_ReichstagC_1054,\n\t\t///<summary>\n\t\t///Thanks; it might prove useful to get some new stuff.\n\t\t///</summary>\n\t\tDlg_ReichstagC_1055,\n\t\t///<summary>\n\t\t///Wow, some of this gear kicks major ass!\n\t\t///</summary>\n\t\tDlg_ReichstagC_1056,\n\t\t///<summary>\n\t\t///Let’s go shopping!\n\t\t///</summary>\n\t\tDlg_ReichstagC_1057,\n\t\t///<summary>\n\t\t///If you want something else, Apollo, feel free to browse again. \n\t\t///</summary>\n\t\tDlg_ReichstagC_1058,\n\t\t///<summary>\n\t\t///Otherwise, me and Valentin are ready for departure. \n\t\t///</summary>\n\t\tDlg_ReichstagC_1059,\n\t\t///<summary>\n\t\t///Hail! You are the infiltrator squad for Doppelburg, correct?\n\t\t///</summary>\n\t\tDlg_ReichstagC_1060,\n\t\t///<summary>\n\t\t///Yes.\n\t\t///</summary>\n\t\tDlg_ReichstagC_1061,\n\t\t///<summary>\n\t\t///Right on time. Please head inside.\n\t\t///</summary>\n\t\tDlg_ReichstagC_1062,\n\t\t///<summary>\n\t\t///The soldiers assigned to your command are already waiting!\n\t\t///</summary>\n\t\tDlg_ReichstagC_1063,\n\t\t///<summary>\n\t\t///Helping one Nazi group against another. Not sure how I feel about this.\n\t\t///</summary>\n\t\tDlg_ReichstagC_1064,\n\t\t///<summary>\n\t\t///Best not to feel too much.\n\t\t///</summary>\n\t\tDlg_ReichstagC_1065,\n\t\t///<summary>\n\t\t///Approaching the Jingzhou refinery!\n\t\t///</summary>\n\t\tDlg_ChineseRefinery_1000,\n\t\t///<summary>\n\t\t///I’m going through the main entrance.\n\t\t///</summary>\n\t\tDlg_ChineseRefinery_1001,\n\t\t///<summary>\n\t\t///Apollo, you take the back door together with Tarja. Use the coordinates from Manjeet.\n\t\t///</summary>\n\t\tDlg_ChineseRefinery_1002,\n\t\t///<summary>\n\t\t///On our own. See you later, bro!\n\t\t///</summary>\n\t\tDlg_ChineseRefinery_1003,\n\t\t///<summary>\n\t\t///We need to cut our way through!\n\t\t///</summary>\n\t\tDlg_ChineseRefinery_1004,\n\t\t///<summary>\n\t\t///God! What is this place? They can blow up a whole planet with those nukes.\n\t\t///</summary>\n\t\tDlg_ChineseRefinery_1005,\n\t\t///<summary>\n\t\t///Seems like the Chinese are up to something. I prefer not to know what.\n\t\t///</summary>\n\t\tDlg_ChineseRefinery_1006,\n\t\t///<summary>\n\t\t///This is none of our business, anyway. Let’s keep to our objectives. \n\t\t///</summary>\n\t\tDlg_ChineseRefinery_1007,\n\t\t///<summary>\n\t\t///Holy shit! What is this place? Manjeet, this is NOT an ordinary refinery.\n\t\t///</summary>\n\t\tDlg_ChineseRefinery_1008,\n\t\t///<summary>\n\t\t///Well… I should have mentioned that. Oh, and I forgot, I need a small favor from you.\n\t\t///</summary>\n\t\tDlg_ChineseRefinery_1009,\n\t\t///<summary>\n\t\t///Changing our agreement on the fly?\n\t\t///</summary>\n\t\tDlg_ChineseRefinery_1010,\n\t\t///<summary>\n\t\t///Just a small favor.\n\t\t///</summary>\n\t\tDlg_ChineseRefinery_1011,\n\t\t///<summary>\n\t\t///I will give you some cash on top of the artifact if you do this for me.\n\t\t///</summary>\n\t\tDlg_ChineseRefinery_1012,\n\t\t///<summary>\n\t\t///What do you want?\n\t\t///</summary>\n\t\tDlg_ChineseRefinery_1013,\n\t\t///<summary>\n\t\t///I will send you a program. Upload it to the main computer. \n\t\t///</summary>\n\t\tDlg_ChineseRefinery_1014,\n\t\t///<summary>\n\t\t///Sounds simple enough. \n\t\t///</summary>\n\t\tDlg_ChineseRefinery_1015,\n\t\t///<summary>\n\t\t///That’s what I say. And you will be doing me a great favor.\n\t\t///</summary>\n\t\tDlg_ChineseRefinery_1016,\n\t\t///<summary>\n\t\t///Done. On we go. \n\t\t///</summary>\n\t\tDlg_ChineseRefinery_1017,\n\t\t///<summary>\n\t\t///Good, follow the plan.\n\t\t///</summary>\n\t\tDlg_ChineseRefinery_1018,\n\t\t///<summary>\n\t\t///By the way, what did I just do?\n\t\t///</summary>\n\t\tDlg_ChineseRefinery_1019,\n\t\t///<summary>\n\t\t///Planted a kind of virus. You’ve just sent me crucial data from their nuclear research…\n\t\t///</summary>\n\t\tDlg_ChineseRefinery_1020,\n\t\t///<summary>\n\t\t///…and at the same time bugged their system.\n\t\t///</summary>\n\t\tDlg_ChineseRefinery_1021,\n\t\t///<summary>\n\t\t///That’s fine with me. I don’t like the Chinese, anyway.\n\t\t///</summary>\n\t\tDlg_ChineseRefinery_1022,\n\t\t///<summary>\n\t\t///Apollo, if you don’t mind…\n\t\t///</summary>\n\t\tDlg_ChineseRefinery_1023,\n\t\t///<summary>\n\t\t///Yes?\n\t\t///</summary>\n\t\tDlg_ChineseRefinery_1024,\n\t\t///<summary>\n\t\t///One more small computer hack. I will increase your reward, honestly!\n\t\t///</summary>\n\t\tDlg_ChineseRefinery_1025,\n\t\t///<summary>\n\t\t///If I had known about this room before, I would have given you better equipment.\n\t\t///</summary>\n\t\tDlg_ChineseRefinery_1026,\n\t\t///<summary>\n\t\t///Why are you so interested in this one?\n\t\t///</summary>\n\t\tDlg_ChineseRefinery_1027,\n\t\t///<summary>\n\t\t///It is a communication center.\n\t\t///</summary>\n\t\tDlg_ChineseRefinery_1028,\n\t\t///<summary>\n\t\t///It connects the refinery with all the surrounding mines and ships.\n\t\t///</summary>\n\t\tDlg_ChineseRefinery_1029,\n\t\t///<summary>\n\t\t///It would be helpful to me for business reasons.\n\t\t///</summary>\n\t\tDlg_ChineseRefinery_1030,\n\t\t///<summary>\n\t\t///Sounds innocent. Just don’t screw us with the reward, you understand?\n\t\t///</summary>\n\t\tDlg_ChineseRefinery_1031,\n\t\t///<summary>\n\t\t///No need to be rude, Mr. Rainier! I am a man of honest trade!\n\t\t///</summary>\n\t\tDlg_ChineseRefinery_1032,\n\t\t///<summary>\n\t\t///Done.\n\t\t///</summary>\n\t\tDlg_ChineseRefinery_1033,\n\t\t///<summary>\n\t\t///I hope we can finally get to the command center now and get the cargo transport clearance.\n\t\t///</summary>\n\t\tDlg_ChineseRefinery_1034,\n\t\t///<summary>\n\t\t///The path leads through living quarters. This area should not be well protected. \n\t\t///</summary>\n\t\tDlg_ChineseRefinery_1035,\n\t\t///<summary>\n\t\t///Use the back door. The best way to the command center is through an old abandoned pathway.\n\t\t///</summary>\n\t\tDlg_ChineseRefinery_1036,\n\t\t///<summary>\n\t\t///Gotta love an old abandoned pathway!\n\t\t///</summary>\n\t\tDlg_ChineseRefinery_1037,\n\t\t///<summary>\n\t\t///This is it. Hack this computer to change the cargo transport clearance.\n\t\t///</summary>\n\t\tDlg_ChineseRefinery_1038,\n\t\t///<summary>\n\t\t///I just got the clearance. I’ll try to delay the scheduled departure…\n\t\t///</summary>\n\t\tDlg_ChineseRefinery_1039,\n\t\t///<summary>\n\t\t///…but we don’t want to make anyone suspicious.\n\t\t///</summary>\n\t\tDlg_ChineseRefinery_1040,\n\t\t///<summary>\n\t\t///I’ll grab you on the way, just get out fast and jump in.\n\t\t///</summary>\n\t\tDlg_ChineseRefinery_1041,\n\t\t///<summary>\n\t\t///What the hell are they up to?!\n\t\t///</summary>\n\t\tDlg_EACSurveySite_0301b,\n\t\t///<summary>\n\t\t///Here we are. Damien Dust Field.\n\t\t///</summary>\n\t\tDlg_PirateBase_0101,\n\t\t///<summary>\n\t\t///I remember this from cadet classes. Is this all that’s…\n\t\t///</summary>\n\t\tDlg_PirateBase_0102,\n\t\t///<summary>\n\t\t///Yes, the remains of the Solar Event. All that’s left.\n\t\t///</summary>\n\t\tDlg_PirateBase_0103,\n\t\t///<summary>\n\t\t///It used to be a part of Mars. Then… blammo.\n\t\t///</summary>\n\t\tDlg_PirateBase_0104,\n\t\t///<summary>\n\t\t///That was the last one!\n\t\t///</summary>\n\t\tDlg_PirateBase_0301,\n\t\t///<summary>\n\t\t///Well done! \n\t\t///</summary>\n\t\tDlg_PirateBase_0302,\n\t\t///<summary>\n\t\t///Another squad coming.\n\t\t///</summary>\n\t\tDlg_PirateBase_0401,\n\t\t///<summary>\n\t\t///Well, well! What ’ave we here, guests for dinner!\n\t\t///</summary>\n\t\tDlg_PirateBase_0402,\n\t\t///<summary>\n\t\t///We’re here to negotiate! \n\t\t///</summary>\n\t\tDlg_PirateBase_0403,\n\t\t///<summary>\n\t\t///Diplomats, eh?\n\t\t///</summary>\n\t\tDlg_PirateBase_0404,\n\t\t///<summary>\n\t\t///Our diplomacy skills are a bit rusty! On guard!\n\t\t///</summary>\n\t\tDlg_PirateBase_0405,\n\t\t///<summary>\n\t\t///Hmm, that sounded familiar.\n\t\t///</summary>\n\t\tDlg_PirateBase_0406,\n\t\t///<summary>\n\t\t///You will regret this!\n\t\t///</summary>\n\t\tDlg_PirateBase_0408,\n\t\t///<summary>\n\t\t///Die, interlopers! \n\t\t///</summary>\n\t\tDlg_PirateBase_0409,\n\t\t///<summary>\n\t\t///Arrgh, that was easier than snackin’ on doughboys.\n\t\t///</summary>\n\t\tDlg_PirateBase_0501,\n\t\t///<summary>\n\t\t///Hmm, did someone open a can of ego around here?\n\t\t///</summary>\n\t\tDlg_PirateBase_0503,\n\t\t///<summary>\n\t\t///Knocking out a handful of stragglers is not the same as attacking a…\n\t\t///</summary>\n\t\tDlg_PirateBase_0504,\n\t\t///<summary>\n\t\t///…fully fortified pirate base.\n\t\t///</summary>\n\t\tDlg_PirateBase_0505,\n\t\t///<summary>\n\t\t///Next time, do it the diplomatic way. \n\t\t///</summary>\n\t\tDlg_PirateBase_0506,\n\t\t///<summary>\n\t\t///We’re always diplomatic.\n\t\t///</summary>\n\t\tDlg_PirateBase_0507,\n\t\t///<summary>\n\t\t///I suggest you state your business.\n\t\t///</summary>\n\t\tDlg_PirateBase_0618,\n\t\t///<summary>\n\t\t///Listen, here’s the deal. Some Russians are going to come after you… \n\t\t///</summary>\n\t\tDlg_PirateBase_0624,\n\t\t///<summary>\n\t\t///The same ones that killed our friends. They’re after something WE want.\n\t\t///</summary>\n\t\tDlg_PirateBase_0625,\n\t\t///<summary>\n\t\t///And they have your coordinates, just like we did. It’s only a matter of time…\n\t\t///</summary>\n\t\tDlg_PirateBase_0626,\n\t\t///<summary>\n\t\t///…before they pay you a visit. And I’m not talking days.\n\t\t///</summary>\n\t\tDlg_PirateBase_0627,\n\t\t///<summary>\n\t\t///Got it. We need to prepare. So… we have common enemies.\n\t\t///</summary>\n\t\tDlg_PirateBase_0628,\n\t\t///<summary>\n\t\t///Let’s just say we’ll cooperate. For now.  \n\t\t///</summary>\n\t\tDlg_PirateBase_0701,\n\t\t///<summary>\n\t\t///What do you need us to do? \n\t\t///</summary>\n\t\tDlg_PirateBase_0705,\n\t\t///<summary>\n\t\t///We can’t fight off a whole Russian armada.\n\t\t///</summary>\n\t\tDlg_PirateBase_0706,\n\t\t///<summary>\n\t\t///No, but together we can delay them. I’ll send a distress signal… \n\t\t///</summary>\n\t\tDlg_PirateBase_0707,\n\t\t///<summary>\n\t\t///…to some allied pirate clans, but it will take time for them to get here.\n\t\t///</summary>\n\t\tDlg_PirateBase_0708,\n\t\t///<summary>\n\t\t///Give us a hand in building our base defenses. Just pick a good spot.  \n\t\t///</summary>\n\t\tDlg_PirateBase_0709,\n\t\t///<summary>\n\t\t///First get the equipment you’ll need at the Supply Base.\n\t\t///</summary>\n\t\tDlg_PirateBase_0801,\n\t\t///<summary>\n\t\t///Enemy incoming!\n\t\t///</summary>\n\t\tDlg_PirateBase_0901,\n\t\t///<summary>\n\t\t///How long till your pirate friends arrive?\n\t\t///</summary>\n\t\tDlg_PirateBase_0902,\n\t\t///<summary>\n\t\t///The first squad just arrived. The main fleet of mother ships is a few minutes away.\n\t\t///</summary>\n\t\tDlg_PirateBase_0903,\n\t\t///<summary>\n\t\t///Sounds good.\n\t\t///</summary>\n\t\tDlg_PirateBase_0904,\n\t\t///<summary>\n\t\t///Prepare to fight! Take cover and attack in squads!\n\t\t///</summary>\n\t\tDlg_PirateBase_0905,\n\t\t///<summary>\n\t\t///Holy crap! They’re crushing the asteroids!\n\t\t///</summary>\n\t\tDlg_PirateBase_1001,\n\t\t///<summary>\n\t\t///Hope your friends get here soon, or the same thing’ll happen to us. \n\t\t///</summary>\n\t\tDlg_PirateBase_1002,\n\t\t///<summary>\n\t\t///We can hold off the fighters, but once those motherships get here, we’ll have no chance.\n\t\t///</summary>\n\t\tDlg_PirateBase_1003,\n\t\t///<summary>\n\t\t///I know. Trust me, we’ll make it.\n\t\t///</summary>\n\t\tDlg_PirateBase_1004,\n\t\t///<summary>\n\t\t///Ready for reinforcements, lass?\n\t\t///</summary>\n\t\tDlg_PirateBase_1101,\n\t\t///<summary>\n\t\t///Never leave a damsel in distress!\n\t\t///</summary>\n\t\tDlg_PirateBase_1102,\n\t\t///<summary>\n\t\t///Battleschooner operational!\n\t\t///</summary>\n\t\tDlg_PirateBase_1103,\n\t\t///<summary>\n\t\t///Our friends are here! \n\t\t///</summary>\n\t\tDlg_PirateBase_1104,\n\t\t///<summary>\n\t\t///Man the cannons, lads!\n\t\t///</summary>\n\t\tDlg_PirateBase_1105,\n\t\t///<summary>\n\t\t///Ramming speed!\n\t\t///</summary>\n\t\tDlg_PirateBase_1106,\n\t\t///<summary>\n\t\t///Enemy on the horizon! \n\t\t///</summary>\n\t\tDlg_PirateBase_1107,\n\t\t///<summary>\n\t\t///Let’s put these bilge-suckers out of business!\n\t\t///</summary>\n\t\tDlg_PirateBase_1108,\n\t\t///<summary>\n\t\t///Revenge is delicious.\n\t\t///</summary>\n\t\tDlg_PirateBase_1109,\n\t\t///<summary>\n\t\t///Let’s hit them hard!\n\t\t///</summary>\n\t\tDlg_PirateBase_1110,\n\t\t///<summary>\n\t\t///The Russian mother ships are returning!\n\t\t///</summary>\n\t\tDlg_PirateBase_1201,\n\t\t///<summary>\n\t\t///Damn!\n\t\t///</summary>\n\t\tDlg_PirateBase_1202,\n\t\t///<summary>\n\t\t///We can beat them! Come on!\n\t\t///</summary>\n\t\tDlg_PirateBase_1203,\n\t\t///<summary>\n\t\t///Not this time. We’re lucky to have come out of that skirmish alive…\n\t\t///</summary>\n\t\tDlg_PirateBase_1204,\n\t\t///<summary>\n\t\t///You can have your revenge later.\n\t\t///</summary>\n\t\tDlg_PirateBase_1205,\n\t\t///<summary>\n\t\t///Can’t we just join the pirates and hunt them down? One more time?\n\t\t///</summary>\n\t\tDlg_PirateBase_1206,\n\t\t///<summary>\n\t\t///Once they hit interstellar speed, we’ll lose them. \n\t\t///</summary>\n\t\tDlg_PirateBase_1207,\n\t\t///<summary>\n\t\t///Live to fight another day, guys. Next time we won’t let them escape. \n\t\t///</summary>\n\t\tDlg_PirateBase_1208,\n\t\t///<summary>\n\t\t///That’s a solemn promise!\n\t\t///</summary>\n\t\tDlg_PirateBase_1209,\n\t\t///<summary>\n\t\t///I guess that’ll have to do for now.\n\t\t///</summary>\n\t\tDlg_PirateBase_1210,\n\t\t///<summary>\n\t\t///You guys, come to my base, I have a tasty surprise for you.\n\t\t///</summary>\n\t\tDlg_PirateBase_1301,\n\t\t///<summary>\n\t\t///Does she mean…\n\t\t///</summary>\n\t\tDlg_PirateBase_1302,\n\t\t///<summary>\n\t\t///Dream on, brother. Come on!\n\t\t///</summary>\n\t\tDlg_PirateBase_1303,\n\t\t///<summary>\n\t\t///Now. What brought you here? And how did you find about those Russians and the artifacts?\n\t\t///</summary>\n\t\tDlg_PirateBase_1401,\n\t\t///<summary>\n\t\t///It’s a long story. \n\t\t///</summary>\n\t\tDlg_PirateBase_1402,\n\t\t///<summary>\n\t\t///We were on a survey operation at New Landswick. Got ambushed by the Russians, most of…\n\t\t///</summary>\n\t\tDlg_PirateBase_1404,\n\t\t///<summary>\n\t\t///…the base personnel were killed, we managed to escape. Our only lead was the Russians’…\n\t\t///</summary>\n\t\tDlg_PirateBase_1405,\n\t\t///<summary>\n\t\t///…communication data, which led us to the Laika trade station. When we got there, we…\n\t\t///</summary>\n\t\tDlg_PirateBase_1406,\n\t\t///<summary>\n\t\t///…were ambushed again, but their mother ships were still back at New Landswick, so…\n\t\t///</summary>\n\t\tDlg_PirateBase_1407,\n\t\t///<summary>\n\t\t///…we were able to make it. We picked up a couple of clues there – one led to your base, …\n\t\t///</summary>\n\t\tDlg_PirateBase_1408,\n\t\t///<summary>\n\t\t///…the other was the name of a scientist, Thomas Barth. We checked him out first…\n\t\t///</summary>\n\t\tDlg_PirateBase_1409,\n\t\t///<summary>\n\t\t///…and got some dirt about the alien artifacts the Russians are after…\n\t\t///</summary>\n\t\tDlg_PirateBase_1410,\n\t\t///<summary>\n\t\t///And now – here we are.\n\t\t///</summary>\n\t\tDlg_PirateBase_1411,\n\t\t///<summary>\n\t\t///Our story is simpler. We were on a raid and stumbled on an isolated base. Looked like…\n\t\t///</summary>\n\t\tDlg_PirateBase_1412,\n\t\t///<summary>\n\t\t///…some half-operational Russian storage depot. Once we launched the attack, we realized…\n\t\t///</summary>\n\t\tDlg_PirateBase_1413,\n\t\t///<summary>\n\t\t///…that was just a cover – it was a fully operational military base. Still, we won. We…\n\t\t///</summary>\n\t\tDlg_PirateBase_1414,\n\t\t///<summary>\n\t\t///…found some nasty weapons and equipment, along with one antiquity. You know, the thing…\n\t\t///</summary>\n\t\tDlg_PirateBase_1415,\n\t\t///<summary>\n\t\t///…you call an alien artifact.\n\t\t///</summary>\n\t\tDlg_PirateBase_1416,\n\t\t///<summary>\n\t\t///So, you have it? You have it here?\n\t\t///</summary>\n\t\tDlg_PirateBase_1417,\n\t\t///<summary>\n\t\t///Nah. We sold it to a smuggler, one of our “business partners”.\n\t\t///</summary>\n\t\tDlg_PirateBase_1418,\n\t\t///<summary>\n\t\t///Can you put us in contact with him?\n\t\t///</summary>\n\t\tDlg_PirateBase_1423,\n\t\t///<summary>\n\t\t///Guys, don’t forget about the transmitter we need for Thomas. I suggest…\n\t\t///</summary>\n\t\tDlg_PirateBase_1424,\n\t\t///<summary>\n\t\t///…we handle that job first.\n\t\t///</summary>\n\t\tDlg_PirateBase_1425,\n\t\t///<summary>\n\t\t///He might sell the artifact before we get to him.\n\t\t///</summary>\n\t\tDlg_PirateBase_1426,\n\t\t///<summary>\n\t\t///I can arrange a meeting with him. But it might take some time. What kind…\n\t\t///</summary>\n\t\tDlg_PirateBase_1427,\n\t\t///<summary>\n\t\t///…of transmitter do you have in mind, by the way?\n\t\t///</summary>\n\t\tDlg_PirateBase_1428,\n\t\t///<summary>\n\t\t///A long-range model. Something heavy duty. It doesn’t have to be…\n\t\t///</summary>\n\t\tDlg_PirateBase_1429,\n\t\t///<summary>\n\t\t///…super hi-tech — we just need the components.\n\t\t///</summary>\n\t\tDlg_PirateBase_1430,\n\t\t///<summary>\n\t\t///I have a suggestion. I’ll arrange you the meeting with Manjeet the smuggler and meanwhile…\n\t\t///</summary>\n\t\tDlg_PirateBase_1431,\n\t\t///<summary>\n\t\t///We’ll raid a Russian warehouse called Bratsk. Together. Simple stuff, nothing military.\n\t\t///</summary>\n\t\tDlg_PirateBase_1432,\n\t\t///<summary>\n\t\t///Where have I heard that before?\n\t\t///</summary>\n\t\tDlg_PirateBase_1433,\n\t\t///<summary>\n\t\t///No, really. It’s just a machinery factory and warehouse. We attack, you disable…\n\t\t///</summary>\n\t\tDlg_PirateBase_1434,\n\t\t///<summary>\n\t\t///…the defenses and take the components you need. We loot the rest…\n\t\t///</summary>\n\t\tDlg_PirateBase_1435,\n\t\t///<summary>\n\t\t///How does that sound to you?\n\t\t///</summary>\n\t\tDlg_PirateBase_1436,\n\t\t///<summary>\n\t\t///We’re in. \n\t\t///</summary>\n\t\tDlg_PirateBase_1440,\n\t\t///<summary>\n\t\t///Sounds like a deal. Check out the suppliers here at the base, make sure you have…\n\t\t///</summary>\n\t\tDlg_PirateBase_1441,\n\t\t///<summary>\n\t\t///…enough fuel and ammo. \n\t\t///</summary>\n\t\tDlg_PirateBase_1442,\n\t\t///<summary>\n\t\t///Once you’re ready, dock in, I’ll get the coordinates from Lorraine.\n\t\t///</summary>\n\t\tDlg_PirateBase_1443,\n\t\t///<summary>\n\t\t///I think I like it!\n\t\t///</summary>\n\t\tDlg_PirateBase_1501,\n\t\t///<summary>\n\t\t///Like I said, keep it.\n\t\t///</summary>\n\t\tDlg_PirateBase_1502,\n\t\t///<summary>\n\t\t///And when you’re stocked up and ready for Bratsk, dock in!\n\t\t///</summary>\n\t\tDlg_PirateBase_1503,\n\t\t///<summary>\n\t\t///How are we supposed to find the pirate base in all of this?\n\t\t///</summary>\n\t\tDlg_PirateBase_0201,\n\t\t///<summary>\n\t\t///We do have some electromagnetic signals, I’ll try to…\n\t\t///</summary>\n\t\tDlg_PirateBase_0202,\n\t\t///<summary>\n\t\t///Well, well! What ’ave we here, guests for dinner!\n\t\t///</summary>\n\t\tDlg_PirateBase_0203,\n\t\t///<summary>\n\t\t///Jolly Roger ahead.\n\t\t///</summary>\n\t\tDlg_PirateBase_0204,\n\t\t///<summary>\n\t\t///We’re here to discuss something, not to fight you.\n\t\t///</summary>\n\t\tDlg_PirateBase_0205,\n\t\t///<summary>\n\t\t///Diplomats, eh?\n\t\t///</summary>\n\t\tDlg_PirateBase_0206,\n\t\t///<summary>\n\t\t///Our diplomacy skills are a bit rusty!\n\t\t///</summary>\n\t\tDlg_PirateBase_0207,\n\t\t///<summary>\n\t\t///On guard!\n\t\t///</summary>\n\t\tDlg_PirateBase_0208,\n\t\t///<summary>\n\t\t///You will regret this.\n\t\t///</summary>\n\t\tDlg_PirateBase_0209,\n\t\t///<summary>\n\t\t///Our next stop is Russian Trade Station Laika, the station with which the Russian…\n\t\t///</summary>\n\t\tDlg_EACSurveySite_0804,\n\t\t///<summary>\n\t\t///…motherships had an open communication channel during the assault on EAC Survey Site.\n\t\t///</summary>\n\t\tDlg_EACSurveySite_0805,\n\t\t///<summary>\n\t\t///…\n\t\t///</summary>\n\t\tDlg_Laika_1913,\n\t\t///<summary>\n\t\t///It is protected by heavy rail guns and we cannot afford losses at the moment.\n\t\t///</summary>\n\t\tDlg_ReichstagC_1022_2,\n\t\t///<summary>\n\t\t///This discovery means a great deal to me, Mr. Rainier.\n\t\t///</summary>\n\t\tDlg_AlienGate_0524_2,\n\t\t///<summary>\n\t\t///The rest of us – get to the nearest asteroids.\n\t\t///</summary>\n\t\tDlg_AlienGate_0602_2,\n\t\t///<summary>\n\t\t///…and phase antennas, and a feed horn.\n\t\t///</summary>\n\t\tDlg_ResearchVessel_1035,\n\t}\n\n\tstatic partial class MyDialoguesWrapper\n\t{\n\t\tstatic void Reload()\n        {\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Test01] = new StringBuilder(MyDialogues.Dlg_Test01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Test02] = new StringBuilder(MyDialogues.Dlg_Test02);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Test03] = new StringBuilder(MyDialogues.Dlg_Test03);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACSurveySite_0200] = new StringBuilder(MyDialogues.Dlg_EACSurveySite_0200);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACSurveySite_0201] = new StringBuilder(MyDialogues.Dlg_EACSurveySite_0201);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACSurveySite_0202] = new StringBuilder(MyDialogues.Dlg_EACSurveySite_0202);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACSurveySite_0203] = new StringBuilder(MyDialogues.Dlg_EACSurveySite_0203);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACSurveySite_0204] = new StringBuilder(MyDialogues.Dlg_EACSurveySite_0204);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACSurveySite_0205] = new StringBuilder(MyDialogues.Dlg_EACSurveySite_0205);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACSurveySite_0206] = new StringBuilder(MyDialogues.Dlg_EACSurveySite_0206);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACSurveySite_0207] = new StringBuilder(MyDialogues.Dlg_EACSurveySite_0207);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACSurveySite_0208] = new StringBuilder(MyDialogues.Dlg_EACSurveySite_0208);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACSurveySite_0209] = new StringBuilder(MyDialogues.Dlg_EACSurveySite_0209);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACSurveySite_0210] = new StringBuilder(MyDialogues.Dlg_EACSurveySite_0210);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACSurveySite_0211] = new StringBuilder(MyDialogues.Dlg_EACSurveySite_0211);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACSurveySite_0212] = new StringBuilder(MyDialogues.Dlg_EACSurveySite_0212);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACSurveySite_0213] = new StringBuilder(MyDialogues.Dlg_EACSurveySite_0213);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACSurveySite_0214] = new StringBuilder(MyDialogues.Dlg_EACSurveySite_0214);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACSurveySite_0215] = new StringBuilder(MyDialogues.Dlg_EACSurveySite_0215);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACSurveySite_0216] = new StringBuilder(MyDialogues.Dlg_EACSurveySite_0216);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACSurveySite_0217] = new StringBuilder(MyDialogues.Dlg_EACSurveySite_0217);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACSurveySite_0301] = new StringBuilder(MyDialogues.Dlg_EACSurveySite_0301);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACSurveySite_0302] = new StringBuilder(MyDialogues.Dlg_EACSurveySite_0302);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACSurveySite_0401] = new StringBuilder(MyDialogues.Dlg_EACSurveySite_0401);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACSurveySite_0501] = new StringBuilder(MyDialogues.Dlg_EACSurveySite_0501);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACSurveySite_0602] = new StringBuilder(MyDialogues.Dlg_EACSurveySite_0602);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACSurveySite_0603] = new StringBuilder(MyDialogues.Dlg_EACSurveySite_0603);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACSurveySite_0604] = new StringBuilder(MyDialogues.Dlg_EACSurveySite_0604);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACSurveySite_0701] = new StringBuilder(MyDialogues.Dlg_EACSurveySite_0701);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACSurveySite_0702] = new StringBuilder(MyDialogues.Dlg_EACSurveySite_0702);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACSurveySite_0703] = new StringBuilder(MyDialogues.Dlg_EACSurveySite_0703);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACSurveySite_0704] = new StringBuilder(MyDialogues.Dlg_EACSurveySite_0704);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACSurveySite_0705] = new StringBuilder(MyDialogues.Dlg_EACSurveySite_0705);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACSurveySite_0709] = new StringBuilder(MyDialogues.Dlg_EACSurveySite_0709);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACSurveySite_0710] = new StringBuilder(MyDialogues.Dlg_EACSurveySite_0710);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACSurveySite_0801] = new StringBuilder(MyDialogues.Dlg_EACSurveySite_0801);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACSurveySite_0802] = new StringBuilder(MyDialogues.Dlg_EACSurveySite_0802);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACSurveySite_0803] = new StringBuilder(MyDialogues.Dlg_EACSurveySite_0803);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACSurveySite_0901] = new StringBuilder(MyDialogues.Dlg_EACSurveySite_0901);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACSurveySite_0902] = new StringBuilder(MyDialogues.Dlg_EACSurveySite_0902);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACSurveySite_0903] = new StringBuilder(MyDialogues.Dlg_EACSurveySite_0903);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACSurveySite_0904] = new StringBuilder(MyDialogues.Dlg_EACSurveySite_0904);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACSurveySite_1001] = new StringBuilder(MyDialogues.Dlg_EACSurveySite_1001);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACSurveySite_1002] = new StringBuilder(MyDialogues.Dlg_EACSurveySite_1002);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACSurveySite_1003] = new StringBuilder(MyDialogues.Dlg_EACSurveySite_1003);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACSurveySite_0218] = new StringBuilder(MyDialogues.Dlg_EACSurveySite_0218);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACSurveySite_0502] = new StringBuilder(MyDialogues.Dlg_EACSurveySite_0502);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACSurveySite_0503] = new StringBuilder(MyDialogues.Dlg_EACSurveySite_0503);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACSurveySite_0601] = new StringBuilder(MyDialogues.Dlg_EACSurveySite_0601);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACSurveySite_1201] = new StringBuilder(MyDialogues.Dlg_EACSurveySite_1201);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACSurveySite_1202] = new StringBuilder(MyDialogues.Dlg_EACSurveySite_1202);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACSurveySite_1203] = new StringBuilder(MyDialogues.Dlg_EACSurveySite_1203);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACSurveySite_1204] = new StringBuilder(MyDialogues.Dlg_EACSurveySite_1204);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACSurveySite_1305] = new StringBuilder(MyDialogues.Dlg_EACSurveySite_1305);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACSurveySite_1306] = new StringBuilder(MyDialogues.Dlg_EACSurveySite_1306);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACSurveySite_1307] = new StringBuilder(MyDialogues.Dlg_EACSurveySite_1307);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACSurveySite_1301] = new StringBuilder(MyDialogues.Dlg_EACSurveySite_1301);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACSurveySite_1302] = new StringBuilder(MyDialogues.Dlg_EACSurveySite_1302);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACSurveySite_1303] = new StringBuilder(MyDialogues.Dlg_EACSurveySite_1303);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACSurveySite_1304] = new StringBuilder(MyDialogues.Dlg_EACSurveySite_1304);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACSurveySite_1401] = new StringBuilder(MyDialogues.Dlg_EACSurveySite_1401);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACSurveySite_1501] = new StringBuilder(MyDialogues.Dlg_EACSurveySite_1501);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACSurveySite_1601] = new StringBuilder(MyDialogues.Dlg_EACSurveySite_1601);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACSurveySite_1701] = new StringBuilder(MyDialogues.Dlg_EACSurveySite_1701);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACSurveySite_1702] = new StringBuilder(MyDialogues.Dlg_EACSurveySite_1702);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACSurveySite_1801] = new StringBuilder(MyDialogues.Dlg_EACSurveySite_1801);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACSurveySite_0605] = new StringBuilder(MyDialogues.Dlg_EACSurveySite_0605);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACSurveySite_1308] = new StringBuilder(MyDialogues.Dlg_EACSurveySite_1308);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACSurveySite_1309] = new StringBuilder(MyDialogues.Dlg_EACSurveySite_1309);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACSurveySite_2101] = new StringBuilder(MyDialogues.Dlg_EACSurveySite_2101);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACSurveySite_2102] = new StringBuilder(MyDialogues.Dlg_EACSurveySite_2102);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACSurveySite_2201] = new StringBuilder(MyDialogues.Dlg_EACSurveySite_2201);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACSurveySite_2301] = new StringBuilder(MyDialogues.Dlg_EACSurveySite_2301);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACSurveySite_2401] = new StringBuilder(MyDialogues.Dlg_EACSurveySite_2401);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiant_SlaveMission_01_TemplarGuard] = new StringBuilder(MyDialogues.Dlg_FortValiant_SlaveMission_01_TemplarGuard);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_0100] = new StringBuilder(MyDialogues.Dlg_Laika_0100);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_0504] = new StringBuilder(MyDialogues.Dlg_Laika_0504);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_0102] = new StringBuilder(MyDialogues.Dlg_Laika_0102);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_0103] = new StringBuilder(MyDialogues.Dlg_Laika_0103);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_0104] = new StringBuilder(MyDialogues.Dlg_Laika_0104);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_0200] = new StringBuilder(MyDialogues.Dlg_Laika_0200);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_0201] = new StringBuilder(MyDialogues.Dlg_Laika_0201);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_0202] = new StringBuilder(MyDialogues.Dlg_Laika_0202);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_0303] = new StringBuilder(MyDialogues.Dlg_Laika_0303);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_0300] = new StringBuilder(MyDialogues.Dlg_Laika_0300);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_0500] = new StringBuilder(MyDialogues.Dlg_Laika_0500);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_0501] = new StringBuilder(MyDialogues.Dlg_Laika_0501);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_0502] = new StringBuilder(MyDialogues.Dlg_Laika_0502);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_0503] = new StringBuilder(MyDialogues.Dlg_Laika_0503);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_0600] = new StringBuilder(MyDialogues.Dlg_Laika_0600);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_0601] = new StringBuilder(MyDialogues.Dlg_Laika_0601);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_0602] = new StringBuilder(MyDialogues.Dlg_Laika_0602);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_0700] = new StringBuilder(MyDialogues.Dlg_Laika_0700);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_0701] = new StringBuilder(MyDialogues.Dlg_Laika_0701);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_0702] = new StringBuilder(MyDialogues.Dlg_Laika_0702);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_0800] = new StringBuilder(MyDialogues.Dlg_Laika_0800);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_0801] = new StringBuilder(MyDialogues.Dlg_Laika_0801);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_0802] = new StringBuilder(MyDialogues.Dlg_Laika_0802);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_0803] = new StringBuilder(MyDialogues.Dlg_Laika_0803);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_0804] = new StringBuilder(MyDialogues.Dlg_Laika_0804);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_0806] = new StringBuilder(MyDialogues.Dlg_Laika_0806);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_0900] = new StringBuilder(MyDialogues.Dlg_Laika_0900);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_0105] = new StringBuilder(MyDialogues.Dlg_Laika_0105);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_0106] = new StringBuilder(MyDialogues.Dlg_Laika_0106);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_0304] = new StringBuilder(MyDialogues.Dlg_Laika_0304);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_0305] = new StringBuilder(MyDialogues.Dlg_Laika_0305);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_0307] = new StringBuilder(MyDialogues.Dlg_Laika_0307);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_0308] = new StringBuilder(MyDialogues.Dlg_Laika_0308);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_0309] = new StringBuilder(MyDialogues.Dlg_Laika_0309);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_0310] = new StringBuilder(MyDialogues.Dlg_Laika_0310);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_0311] = new StringBuilder(MyDialogues.Dlg_Laika_0311);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_0312] = new StringBuilder(MyDialogues.Dlg_Laika_0312);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_0313] = new StringBuilder(MyDialogues.Dlg_Laika_0313);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_0314] = new StringBuilder(MyDialogues.Dlg_Laika_0314);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_0505] = new StringBuilder(MyDialogues.Dlg_Laika_0505);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_0703] = new StringBuilder(MyDialogues.Dlg_Laika_0703);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_0704] = new StringBuilder(MyDialogues.Dlg_Laika_0704);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_0705] = new StringBuilder(MyDialogues.Dlg_Laika_0705);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_0706] = new StringBuilder(MyDialogues.Dlg_Laika_0706);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_0707] = new StringBuilder(MyDialogues.Dlg_Laika_0707);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_0708] = new StringBuilder(MyDialogues.Dlg_Laika_0708);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_0709] = new StringBuilder(MyDialogues.Dlg_Laika_0709);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_0710] = new StringBuilder(MyDialogues.Dlg_Laika_0710);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_0711] = new StringBuilder(MyDialogues.Dlg_Laika_0711);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_0712] = new StringBuilder(MyDialogues.Dlg_Laika_0712);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_0713] = new StringBuilder(MyDialogues.Dlg_Laika_0713);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_0714] = new StringBuilder(MyDialogues.Dlg_Laika_0714);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_0715] = new StringBuilder(MyDialogues.Dlg_Laika_0715);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_0716] = new StringBuilder(MyDialogues.Dlg_Laika_0716);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_0717] = new StringBuilder(MyDialogues.Dlg_Laika_0717);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_0718] = new StringBuilder(MyDialogues.Dlg_Laika_0718);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_0719] = new StringBuilder(MyDialogues.Dlg_Laika_0719);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_0720] = new StringBuilder(MyDialogues.Dlg_Laika_0720);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_0721] = new StringBuilder(MyDialogues.Dlg_Laika_0721);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_0722] = new StringBuilder(MyDialogues.Dlg_Laika_0722);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_0723] = new StringBuilder(MyDialogues.Dlg_Laika_0723);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_0724] = new StringBuilder(MyDialogues.Dlg_Laika_0724);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_0807] = new StringBuilder(MyDialogues.Dlg_Laika_0807);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_0808] = new StringBuilder(MyDialogues.Dlg_Laika_0808);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_0809] = new StringBuilder(MyDialogues.Dlg_Laika_0809);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_1501] = new StringBuilder(MyDialogues.Dlg_Laika_1501);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_1502] = new StringBuilder(MyDialogues.Dlg_Laika_1502);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_1503] = new StringBuilder(MyDialogues.Dlg_Laika_1503);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_1504] = new StringBuilder(MyDialogues.Dlg_Laika_1504);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_1505] = new StringBuilder(MyDialogues.Dlg_Laika_1505);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_1506] = new StringBuilder(MyDialogues.Dlg_Laika_1506);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_1601] = new StringBuilder(MyDialogues.Dlg_Laika_1601);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_1602] = new StringBuilder(MyDialogues.Dlg_Laika_1602);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_1603] = new StringBuilder(MyDialogues.Dlg_Laika_1603);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_1701] = new StringBuilder(MyDialogues.Dlg_Laika_1701);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_0316] = new StringBuilder(MyDialogues.Dlg_Laika_0316);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_DialoguePlaceholder] = new StringBuilder(MyDialogues.Dlg_DialoguePlaceholder);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_0501] = new StringBuilder(MyDialogues.Dlg_Rime_0501);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_0601] = new StringBuilder(MyDialogues.Dlg_Rime_0601);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_0701] = new StringBuilder(MyDialogues.Dlg_Rime_0701);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_0801] = new StringBuilder(MyDialogues.Dlg_Rime_0801);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_0901] = new StringBuilder(MyDialogues.Dlg_Rime_0901);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_1001] = new StringBuilder(MyDialogues.Dlg_Rime_1001);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_1101] = new StringBuilder(MyDialogues.Dlg_Rime_1101);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_1201] = new StringBuilder(MyDialogues.Dlg_Rime_1201);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rift_0102] = new StringBuilder(MyDialogues.Dlg_Rift_0102);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rift_0103] = new StringBuilder(MyDialogues.Dlg_Rift_0103);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rift_0105] = new StringBuilder(MyDialogues.Dlg_Rift_0105);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rift_0106] = new StringBuilder(MyDialogues.Dlg_Rift_0106);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rift_0201] = new StringBuilder(MyDialogues.Dlg_Rift_0201);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rift_0202] = new StringBuilder(MyDialogues.Dlg_Rift_0202);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rift_0203] = new StringBuilder(MyDialogues.Dlg_Rift_0203);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rift_0204] = new StringBuilder(MyDialogues.Dlg_Rift_0204);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rift_0205] = new StringBuilder(MyDialogues.Dlg_Rift_0205);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rift_0206] = new StringBuilder(MyDialogues.Dlg_Rift_0206);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rift_0301] = new StringBuilder(MyDialogues.Dlg_Rift_0301);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rift_0302] = new StringBuilder(MyDialogues.Dlg_Rift_0302);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rift_0303] = new StringBuilder(MyDialogues.Dlg_Rift_0303);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rift_0305] = new StringBuilder(MyDialogues.Dlg_Rift_0305);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rift_0306] = new StringBuilder(MyDialogues.Dlg_Rift_0306);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rift_0307] = new StringBuilder(MyDialogues.Dlg_Rift_0307);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rift_0308] = new StringBuilder(MyDialogues.Dlg_Rift_0308);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rift_0309] = new StringBuilder(MyDialogues.Dlg_Rift_0309);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rift_0310] = new StringBuilder(MyDialogues.Dlg_Rift_0310);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rift_0311] = new StringBuilder(MyDialogues.Dlg_Rift_0311);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rift_0312] = new StringBuilder(MyDialogues.Dlg_Rift_0312);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rift_0313] = new StringBuilder(MyDialogues.Dlg_Rift_0313);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rift_0401] = new StringBuilder(MyDialogues.Dlg_Rift_0401);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rift_0402] = new StringBuilder(MyDialogues.Dlg_Rift_0402);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rift_0501] = new StringBuilder(MyDialogues.Dlg_Rift_0501);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rift_0502] = new StringBuilder(MyDialogues.Dlg_Rift_0502);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rift_0503] = new StringBuilder(MyDialogues.Dlg_Rift_0503);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rift_0504] = new StringBuilder(MyDialogues.Dlg_Rift_0504);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rift_0601] = new StringBuilder(MyDialogues.Dlg_Rift_0601);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rift_0701] = new StringBuilder(MyDialogues.Dlg_Rift_0701);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rift_0801] = new StringBuilder(MyDialogues.Dlg_Rift_0801);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rift_0901] = new StringBuilder(MyDialogues.Dlg_Rift_0901);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rift_1001] = new StringBuilder(MyDialogues.Dlg_Rift_1001);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rift_1101] = new StringBuilder(MyDialogues.Dlg_Rift_1101);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rift_1102] = new StringBuilder(MyDialogues.Dlg_Rift_1102);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rift_1103] = new StringBuilder(MyDialogues.Dlg_Rift_1103);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rift_1104] = new StringBuilder(MyDialogues.Dlg_Rift_1104);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rift_1106] = new StringBuilder(MyDialogues.Dlg_Rift_1106);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rift_1107] = new StringBuilder(MyDialogues.Dlg_Rift_1107);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rift_1108] = new StringBuilder(MyDialogues.Dlg_Rift_1108);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rift_1110] = new StringBuilder(MyDialogues.Dlg_Rift_1110);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rift_1111] = new StringBuilder(MyDialogues.Dlg_Rift_1111);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rift_1112] = new StringBuilder(MyDialogues.Dlg_Rift_1112);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rift_1113] = new StringBuilder(MyDialogues.Dlg_Rift_1113);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rift_0208] = new StringBuilder(MyDialogues.Dlg_Rift_0208);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rift_0314] = new StringBuilder(MyDialogues.Dlg_Rift_0314);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rift_0505] = new StringBuilder(MyDialogues.Dlg_Rift_0505);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACSurveySite_0213b] = new StringBuilder(MyDialogues.Dlg_EACSurveySite_0213b);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACSurveySite_1003b] = new StringBuilder(MyDialogues.Dlg_EACSurveySite_1003b);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACSurveySite_1004] = new StringBuilder(MyDialogues.Dlg_EACSurveySite_1004);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0101] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_0101);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0102] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_0102);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACSurveySite_1005] = new StringBuilder(MyDialogues.Dlg_EACSurveySite_1005);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_01_01] = new StringBuilder(MyDialogues.Dlg_ChineseTransmitter_01_01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_01_02] = new StringBuilder(MyDialogues.Dlg_ChineseTransmitter_01_02);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_01_03] = new StringBuilder(MyDialogues.Dlg_ChineseTransmitter_01_03);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_01_04] = new StringBuilder(MyDialogues.Dlg_ChineseTransmitter_01_04);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_01_05] = new StringBuilder(MyDialogues.Dlg_ChineseTransmitter_01_05);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_01_06] = new StringBuilder(MyDialogues.Dlg_ChineseTransmitter_01_06);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_01_07] = new StringBuilder(MyDialogues.Dlg_ChineseTransmitter_01_07);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_01_08] = new StringBuilder(MyDialogues.Dlg_ChineseTransmitter_01_08);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_01_09] = new StringBuilder(MyDialogues.Dlg_ChineseTransmitter_01_09);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_01_10] = new StringBuilder(MyDialogues.Dlg_ChineseTransmitter_01_10);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_01_11] = new StringBuilder(MyDialogues.Dlg_ChineseTransmitter_01_11);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_01_12] = new StringBuilder(MyDialogues.Dlg_ChineseTransmitter_01_12);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_01_13] = new StringBuilder(MyDialogues.Dlg_ChineseTransmitter_01_13);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_01_14] = new StringBuilder(MyDialogues.Dlg_ChineseTransmitter_01_14);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_01_15] = new StringBuilder(MyDialogues.Dlg_ChineseTransmitter_01_15);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_01_16] = new StringBuilder(MyDialogues.Dlg_ChineseTransmitter_01_16);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_01_17] = new StringBuilder(MyDialogues.Dlg_ChineseTransmitter_01_17);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_01_18] = new StringBuilder(MyDialogues.Dlg_ChineseTransmitter_01_18);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_01_19] = new StringBuilder(MyDialogues.Dlg_ChineseTransmitter_01_19);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_01_20] = new StringBuilder(MyDialogues.Dlg_ChineseTransmitter_01_20);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_01_21] = new StringBuilder(MyDialogues.Dlg_ChineseTransmitter_01_21);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_01_22] = new StringBuilder(MyDialogues.Dlg_ChineseTransmitter_01_22);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_01_23] = new StringBuilder(MyDialogues.Dlg_ChineseTransmitter_01_23);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_02_01] = new StringBuilder(MyDialogues.Dlg_ChineseTransmitter_02_01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_02_02] = new StringBuilder(MyDialogues.Dlg_ChineseTransmitter_02_02);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_02_04] = new StringBuilder(MyDialogues.Dlg_ChineseTransmitter_02_04);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_02_05] = new StringBuilder(MyDialogues.Dlg_ChineseTransmitter_02_05);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_02_06] = new StringBuilder(MyDialogues.Dlg_ChineseTransmitter_02_06);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_02_07] = new StringBuilder(MyDialogues.Dlg_ChineseTransmitter_02_07);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_02_08] = new StringBuilder(MyDialogues.Dlg_ChineseTransmitter_02_08);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_03_01] = new StringBuilder(MyDialogues.Dlg_ChineseTransmitter_03_01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_03_02] = new StringBuilder(MyDialogues.Dlg_ChineseTransmitter_03_02);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_03_03] = new StringBuilder(MyDialogues.Dlg_ChineseTransmitter_03_03);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_04_01] = new StringBuilder(MyDialogues.Dlg_ChineseTransmitter_04_01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_04_02] = new StringBuilder(MyDialogues.Dlg_ChineseTransmitter_04_02);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_04_03] = new StringBuilder(MyDialogues.Dlg_ChineseTransmitter_04_03);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_04_04] = new StringBuilder(MyDialogues.Dlg_ChineseTransmitter_04_04);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_05_01] = new StringBuilder(MyDialogues.Dlg_ChineseTransmitter_05_01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_05_02] = new StringBuilder(MyDialogues.Dlg_ChineseTransmitter_05_02);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_05_03] = new StringBuilder(MyDialogues.Dlg_ChineseTransmitter_05_03);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_05_04] = new StringBuilder(MyDialogues.Dlg_ChineseTransmitter_05_04);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_05_05] = new StringBuilder(MyDialogues.Dlg_ChineseTransmitter_05_05);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_06_01] = new StringBuilder(MyDialogues.Dlg_ChineseTransmitter_06_01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_06_02] = new StringBuilder(MyDialogues.Dlg_ChineseTransmitter_06_02);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_06_03] = new StringBuilder(MyDialogues.Dlg_ChineseTransmitter_06_03);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_06_04] = new StringBuilder(MyDialogues.Dlg_ChineseTransmitter_06_04);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_06_05] = new StringBuilder(MyDialogues.Dlg_ChineseTransmitter_06_05);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_07_01] = new StringBuilder(MyDialogues.Dlg_ChineseTransmitter_07_01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_07_02] = new StringBuilder(MyDialogues.Dlg_ChineseTransmitter_07_02);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_07_03] = new StringBuilder(MyDialogues.Dlg_ChineseTransmitter_07_03);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_07_04] = new StringBuilder(MyDialogues.Dlg_ChineseTransmitter_07_04);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_07_05] = new StringBuilder(MyDialogues.Dlg_ChineseTransmitter_07_05);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_08_01] = new StringBuilder(MyDialogues.Dlg_ChineseTransmitter_08_01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_09_01] = new StringBuilder(MyDialogues.Dlg_ChineseTransmitter_09_01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_09_02] = new StringBuilder(MyDialogues.Dlg_ChineseTransmitter_09_02);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_09_03] = new StringBuilder(MyDialogues.Dlg_ChineseTransmitter_09_03);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_09_04] = new StringBuilder(MyDialogues.Dlg_ChineseTransmitter_09_04);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_09_05] = new StringBuilder(MyDialogues.Dlg_ChineseTransmitter_09_05);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_09_06] = new StringBuilder(MyDialogues.Dlg_ChineseTransmitter_09_06);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_09_07] = new StringBuilder(MyDialogues.Dlg_ChineseTransmitter_09_07);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_09_08] = new StringBuilder(MyDialogues.Dlg_ChineseTransmitter_09_08);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_09_09] = new StringBuilder(MyDialogues.Dlg_ChineseTransmitter_09_09);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_09_10] = new StringBuilder(MyDialogues.Dlg_ChineseTransmitter_09_10);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_10_01] = new StringBuilder(MyDialogues.Dlg_ChineseTransmitter_10_01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_10_02] = new StringBuilder(MyDialogues.Dlg_ChineseTransmitter_10_02);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_10_03] = new StringBuilder(MyDialogues.Dlg_ChineseTransmitter_10_03);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_10_04] = new StringBuilder(MyDialogues.Dlg_ChineseTransmitter_10_04);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_10_05] = new StringBuilder(MyDialogues.Dlg_ChineseTransmitter_10_05);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransmitter_10_06] = new StringBuilder(MyDialogues.Dlg_ChineseTransmitter_10_06);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0108] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_0108);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0109] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_0109);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0110] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_0110);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0111] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_0111);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0112] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_0112);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0114] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_0114);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0116] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_0116);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0201] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_0201);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0202] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_0202);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0203] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_0203);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0204] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_0204);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0206] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_0206);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0301] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_0301);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0302] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_0302);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0304] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_0304);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0305] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_0305);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0306] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_0306);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0307] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_0307);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0308] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_0308);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0309] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_0309);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0310] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_0310);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0311] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_0311);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0312] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_0312);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0313] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_0313);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0314] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_0314);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0315] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_0315);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0316] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_0316);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0317] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_0317);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0318] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_0318);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0319] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_0319);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0320] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_0320);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0321] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_0321);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0324] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_0324);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0401] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_0401);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0402] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_0402);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0403] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_0403);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0404] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_0404);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0405] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_0405);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0406] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_0406);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0407] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_0407);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0408] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_0408);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0409] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_0409);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0410] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_0410);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0411] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_0411);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0412] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_0412);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0413] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_0413);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0414] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_0414);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0415] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_0415);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0416] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_0416);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0417] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_0417);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0418] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_0418);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0419] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_0419);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0420] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_0420);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0421] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_0421);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0422] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_0422);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0501] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_0501);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0601] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_0601);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0602] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_0602);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0603] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_0603);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0604] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_0604);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0701] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_0701);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0703] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_0703);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0704] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_0704);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0705] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_0705);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0801] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_0801);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0802] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_0802);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0803] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_0803);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0804] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_0804);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_0901] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_0901);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_1001] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_1001);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_1101] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_1101);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_1102] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_1102);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_1201] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_1201);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_1202] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_1202);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_1301] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_1301);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_1401] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_1401);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_1402] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_1402);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_1403] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_1403);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_1404] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_1404);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_1501] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_1501);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_1502] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_1502);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_1503] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_1503);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_1504] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_1504);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_1505] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_1505);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_1506] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_1506);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_1507] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_1507);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_1508] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_1508);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_1509] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_1509);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_1601] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_1601);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_1602] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_1602);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_1701] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_1701);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_1702] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_1702);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_1801] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_1801);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_1901] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_1901);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_1902] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_1902);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_1903] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_1903);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_1905] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_1905);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2001] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_2001);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2002] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_2002);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2101] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_2101);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2102] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_2102);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2103] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_2103);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2104] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_2104);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2105] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_2105);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2106] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_2106);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2107] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_2107);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2201] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_2201);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2202] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_2202);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2203] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_2203);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2204] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_2204);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2205] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_2205);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2206] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_2206);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2207] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_2207);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2208] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_2208);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2209] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_2209);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2210] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_2210);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2211] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_2211);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2212] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_2212);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2213] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_2213);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2214] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_2214);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2215] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_2215);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2216] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_2216);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2217] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_2217);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2218] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_2218);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2219] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_2219);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2220] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_2220);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2221] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_2221);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2222] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_2222);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2223] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_2223);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2224] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_2224);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2225] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_2225);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2226] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_2226);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2227] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_2227);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2228] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_2228);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2229] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_2229);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2230] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_2230);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2301] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_2301);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2302] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_2302);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2401] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_2401);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2501] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_2501);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2502] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_2502);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2503] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_2503);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2504] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_2504);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2505] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_2505);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2506] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_2506);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2507] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_2507);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2508] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_2508);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2509] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_2509);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2510] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_2510);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2511] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_2511);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2512] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_2512);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2513] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_2513);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2514] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_2514);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2601] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_2601);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2602] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_2602);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2701] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_2701);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2702] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_2702);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2703] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_2703);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2704] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_2704);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2801] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_2801);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2802] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_2802);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2901] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_2901);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2902] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_2902);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2903] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_2903);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2904] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_2904);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2905] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_2905);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2906] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_2906);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_2907] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_2907);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_3001] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_3001);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_3002] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_3002);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_3101] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_3101);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_3102] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_3102);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_3103] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_3103);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_3104] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_3104);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_3105] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_3105);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_3106] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_3106);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_3107] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_3107);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_3108] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_3108);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_3201] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_3201);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_3202] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_3202);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_3203] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_3203);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_3204] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_3204);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_3205] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_3205);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_3206] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_3206);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_3208] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_3208);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_3209] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_3209);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_3210] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_3210);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_3211] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_3211);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_3212] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_3212);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_3213] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_3213);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_3214] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_3214);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_3215] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_3215);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_3216] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_3216);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_3217] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_3217);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_3218] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_3218);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_3219] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_3219);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_3220] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_3220);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_3221] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_3221);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoon2_3222] = new StringBuilder(MyDialogues.Dlg_BarthsMoon2_3222);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1000] = new StringBuilder(MyDialogues.Dlg_WhitewolvesResearch_1000);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1001] = new StringBuilder(MyDialogues.Dlg_WhitewolvesResearch_1001);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1002] = new StringBuilder(MyDialogues.Dlg_WhitewolvesResearch_1002);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1003] = new StringBuilder(MyDialogues.Dlg_WhitewolvesResearch_1003);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1004] = new StringBuilder(MyDialogues.Dlg_WhitewolvesResearch_1004);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1005] = new StringBuilder(MyDialogues.Dlg_WhitewolvesResearch_1005);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1006] = new StringBuilder(MyDialogues.Dlg_WhitewolvesResearch_1006);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1007] = new StringBuilder(MyDialogues.Dlg_WhitewolvesResearch_1007);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1008] = new StringBuilder(MyDialogues.Dlg_WhitewolvesResearch_1008);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1009] = new StringBuilder(MyDialogues.Dlg_WhitewolvesResearch_1009);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1010] = new StringBuilder(MyDialogues.Dlg_WhitewolvesResearch_1010);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1011] = new StringBuilder(MyDialogues.Dlg_WhitewolvesResearch_1011);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1012] = new StringBuilder(MyDialogues.Dlg_WhitewolvesResearch_1012);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1013] = new StringBuilder(MyDialogues.Dlg_WhitewolvesResearch_1013);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1014] = new StringBuilder(MyDialogues.Dlg_WhitewolvesResearch_1014);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1015] = new StringBuilder(MyDialogues.Dlg_WhitewolvesResearch_1015);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1016] = new StringBuilder(MyDialogues.Dlg_WhitewolvesResearch_1016);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1017] = new StringBuilder(MyDialogues.Dlg_WhitewolvesResearch_1017);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1018] = new StringBuilder(MyDialogues.Dlg_WhitewolvesResearch_1018);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1019] = new StringBuilder(MyDialogues.Dlg_WhitewolvesResearch_1019);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1020] = new StringBuilder(MyDialogues.Dlg_WhitewolvesResearch_1020);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1021] = new StringBuilder(MyDialogues.Dlg_WhitewolvesResearch_1021);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1022] = new StringBuilder(MyDialogues.Dlg_WhitewolvesResearch_1022);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1023] = new StringBuilder(MyDialogues.Dlg_WhitewolvesResearch_1023);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1024] = new StringBuilder(MyDialogues.Dlg_WhitewolvesResearch_1024);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1025] = new StringBuilder(MyDialogues.Dlg_WhitewolvesResearch_1025);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1026] = new StringBuilder(MyDialogues.Dlg_WhitewolvesResearch_1026);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1027] = new StringBuilder(MyDialogues.Dlg_WhitewolvesResearch_1027);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1028] = new StringBuilder(MyDialogues.Dlg_WhitewolvesResearch_1028);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1029] = new StringBuilder(MyDialogues.Dlg_WhitewolvesResearch_1029);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1030] = new StringBuilder(MyDialogues.Dlg_WhitewolvesResearch_1030);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1031] = new StringBuilder(MyDialogues.Dlg_WhitewolvesResearch_1031);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1032] = new StringBuilder(MyDialogues.Dlg_WhitewolvesResearch_1032);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1033] = new StringBuilder(MyDialogues.Dlg_WhitewolvesResearch_1033);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1034] = new StringBuilder(MyDialogues.Dlg_WhitewolvesResearch_1034);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1035] = new StringBuilder(MyDialogues.Dlg_WhitewolvesResearch_1035);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1036] = new StringBuilder(MyDialogues.Dlg_WhitewolvesResearch_1036);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1037] = new StringBuilder(MyDialogues.Dlg_WhitewolvesResearch_1037);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1038] = new StringBuilder(MyDialogues.Dlg_WhitewolvesResearch_1038);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1039] = new StringBuilder(MyDialogues.Dlg_WhitewolvesResearch_1039);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1041] = new StringBuilder(MyDialogues.Dlg_WhitewolvesResearch_1041);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1042] = new StringBuilder(MyDialogues.Dlg_WhitewolvesResearch_1042);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1043] = new StringBuilder(MyDialogues.Dlg_WhitewolvesResearch_1043);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_WhitewolvesResearch_1044] = new StringBuilder(MyDialogues.Dlg_WhitewolvesResearch_1044);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_0302] = new StringBuilder(MyDialogues.Dlg_Laika_0302);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_1605] = new StringBuilder(MyDialogues.Dlg_Laika_1605);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_1606] = new StringBuilder(MyDialogues.Dlg_Laika_1606);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_1607] = new StringBuilder(MyDialogues.Dlg_Laika_1607);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_1608] = new StringBuilder(MyDialogues.Dlg_Laika_1608);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_0303a] = new StringBuilder(MyDialogues.Dlg_Laika_0303a);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_0303b] = new StringBuilder(MyDialogues.Dlg_Laika_0303b);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_0303c] = new StringBuilder(MyDialogues.Dlg_Laika_0303c);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_0304a] = new StringBuilder(MyDialogues.Dlg_Laika_0304a);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_0314a] = new StringBuilder(MyDialogues.Dlg_Laika_0314a);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_0400] = new StringBuilder(MyDialogues.Dlg_Laika_0400);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_0401] = new StringBuilder(MyDialogues.Dlg_Laika_0401);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_0712a] = new StringBuilder(MyDialogues.Dlg_Laika_0712a);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_0810] = new StringBuilder(MyDialogues.Dlg_Laika_0810);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_0811] = new StringBuilder(MyDialogues.Dlg_Laika_0811);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_0812] = new StringBuilder(MyDialogues.Dlg_Laika_0812);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_0901] = new StringBuilder(MyDialogues.Dlg_Laika_0901);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_0902] = new StringBuilder(MyDialogues.Dlg_Laika_0902);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_0903] = new StringBuilder(MyDialogues.Dlg_Laika_0903);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_0950] = new StringBuilder(MyDialogues.Dlg_Laika_0950);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_1800] = new StringBuilder(MyDialogues.Dlg_Laika_1800);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_1801] = new StringBuilder(MyDialogues.Dlg_Laika_1801);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_1802] = new StringBuilder(MyDialogues.Dlg_Laika_1802);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_1803] = new StringBuilder(MyDialogues.Dlg_Laika_1803);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_1804] = new StringBuilder(MyDialogues.Dlg_Laika_1804);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_1805] = new StringBuilder(MyDialogues.Dlg_Laika_1805);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_1805a] = new StringBuilder(MyDialogues.Dlg_Laika_1805a);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_1806] = new StringBuilder(MyDialogues.Dlg_Laika_1806);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_1807] = new StringBuilder(MyDialogues.Dlg_Laika_1807);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_1808] = new StringBuilder(MyDialogues.Dlg_Laika_1808);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_1809] = new StringBuilder(MyDialogues.Dlg_Laika_1809);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_1900] = new StringBuilder(MyDialogues.Dlg_Laika_1900);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_1901] = new StringBuilder(MyDialogues.Dlg_Laika_1901);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_1902] = new StringBuilder(MyDialogues.Dlg_Laika_1902);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_1903] = new StringBuilder(MyDialogues.Dlg_Laika_1903);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_1904] = new StringBuilder(MyDialogues.Dlg_Laika_1904);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_1905] = new StringBuilder(MyDialogues.Dlg_Laika_1905);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_1906] = new StringBuilder(MyDialogues.Dlg_Laika_1906);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_1907] = new StringBuilder(MyDialogues.Dlg_Laika_1907);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_1908] = new StringBuilder(MyDialogues.Dlg_Laika_1908);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_1909] = new StringBuilder(MyDialogues.Dlg_Laika_1909);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_1910] = new StringBuilder(MyDialogues.Dlg_Laika_1910);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_1911] = new StringBuilder(MyDialogues.Dlg_Laika_1911);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_1912] = new StringBuilder(MyDialogues.Dlg_Laika_1912);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rift_2000] = new StringBuilder(MyDialogues.Dlg_Rift_2000);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rift_2001] = new StringBuilder(MyDialogues.Dlg_Rift_2001);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rift_2002] = new StringBuilder(MyDialogues.Dlg_Rift_2002);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rift_2003] = new StringBuilder(MyDialogues.Dlg_Rift_2003);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rift_2004] = new StringBuilder(MyDialogues.Dlg_Rift_2004);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rift_2005] = new StringBuilder(MyDialogues.Dlg_Rift_2005);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rift_2007] = new StringBuilder(MyDialogues.Dlg_Rift_2007);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rift_2008] = new StringBuilder(MyDialogues.Dlg_Rift_2008);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rift_2009] = new StringBuilder(MyDialogues.Dlg_Rift_2009);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_0101] = new StringBuilder(MyDialogues.Dlg_Rime_0101);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_0102] = new StringBuilder(MyDialogues.Dlg_Rime_0102);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_0103] = new StringBuilder(MyDialogues.Dlg_Rime_0103);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_0104] = new StringBuilder(MyDialogues.Dlg_Rime_0104);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_0105] = new StringBuilder(MyDialogues.Dlg_Rime_0105);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_0106] = new StringBuilder(MyDialogues.Dlg_Rime_0106);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_0107] = new StringBuilder(MyDialogues.Dlg_Rime_0107);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_0108] = new StringBuilder(MyDialogues.Dlg_Rime_0108);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_0109] = new StringBuilder(MyDialogues.Dlg_Rime_0109);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_0110] = new StringBuilder(MyDialogues.Dlg_Rime_0110);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_0111] = new StringBuilder(MyDialogues.Dlg_Rime_0111);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_0112] = new StringBuilder(MyDialogues.Dlg_Rime_0112);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_0113] = new StringBuilder(MyDialogues.Dlg_Rime_0113);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_0114] = new StringBuilder(MyDialogues.Dlg_Rime_0114);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_0115] = new StringBuilder(MyDialogues.Dlg_Rime_0115);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_0116] = new StringBuilder(MyDialogues.Dlg_Rime_0116);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_0117] = new StringBuilder(MyDialogues.Dlg_Rime_0117);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_0118] = new StringBuilder(MyDialogues.Dlg_Rime_0118);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_0119] = new StringBuilder(MyDialogues.Dlg_Rime_0119);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_0120] = new StringBuilder(MyDialogues.Dlg_Rime_0120);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_0121] = new StringBuilder(MyDialogues.Dlg_Rime_0121);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_0122] = new StringBuilder(MyDialogues.Dlg_Rime_0122);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1000] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1000);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1001] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1001);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1002] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1002);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1003] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1003);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1004] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1004);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1005] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1005);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1006] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1006);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1007] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1007);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1008] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1008);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1009] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1009);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1010] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1010);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1011] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1011);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1012] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1012);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1013] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1013);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1014] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1014);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1015] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1015);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1016] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1016);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1017] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1017);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1018] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1018);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1022] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1022);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1023] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1023);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1024] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1024);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1025] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1025);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1026] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1026);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1027] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1027);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1028] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1028);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1029] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1029);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1030] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1030);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1031] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1031);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1032] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1032);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1033] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1033);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1034] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1034);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1035] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1035);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1036] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1036);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1037] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1037);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1038] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1038);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1039] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1039);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1040] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1040);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1041] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1041);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1042] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1042);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1043] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1043);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1044] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1044);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1045] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1045);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1046] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1046);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1047] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1047);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1048] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1048);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1049] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1049);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1050] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1050);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1051] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1051);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1052] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1052);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1053] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1053);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1054] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1054);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1055] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1055);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1056] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1056);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1057] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1057);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1058] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1058);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1059] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1059);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1060] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1060);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1061] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1061);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1062] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1062);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1063] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1063);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1064] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1064);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1065] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1065);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1066] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1066);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1067] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1067);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1068] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1068);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1069] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1069);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1070] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1070);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1071] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1071);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1072] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1072);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1073] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1073);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1074] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1074);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1075] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1075);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1076] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1076);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1077] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1077);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1078] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1078);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1079] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1079);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1080] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1080);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1081] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1081);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1082] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1082);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1083] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1083);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1084] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1084);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1085] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1085);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1086] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1086);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1087] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1087);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1088] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1088);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1089] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1089);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1092] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1092);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1093] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1093);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1094] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1094);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1095] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1095);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1096] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1096);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1097] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1097);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1098] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1098);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1099] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1099);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1100] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1100);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1101] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1101);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1102] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1102);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1103] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1103);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1104] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1104);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1105] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1105);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1106] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1106);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1107] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1107);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1108] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1108);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1109] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1109);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1110] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1110);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianTransmitter_1111] = new StringBuilder(MyDialogues.Dlg_RussianTransmitter_1111);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_0201] = new StringBuilder(MyDialogues.Dlg_Rime_0201);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_0202] = new StringBuilder(MyDialogues.Dlg_Rime_0202);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_0203] = new StringBuilder(MyDialogues.Dlg_Rime_0203);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_0204] = new StringBuilder(MyDialogues.Dlg_Rime_0204);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_0205] = new StringBuilder(MyDialogues.Dlg_Rime_0205);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_0206] = new StringBuilder(MyDialogues.Dlg_Rime_0206);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_0207] = new StringBuilder(MyDialogues.Dlg_Rime_0207);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_0208] = new StringBuilder(MyDialogues.Dlg_Rime_0208);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_0209] = new StringBuilder(MyDialogues.Dlg_Rime_0209);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_0210] = new StringBuilder(MyDialogues.Dlg_Rime_0210);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_0211] = new StringBuilder(MyDialogues.Dlg_Rime_0211);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_0212] = new StringBuilder(MyDialogues.Dlg_Rime_0212);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_0213] = new StringBuilder(MyDialogues.Dlg_Rime_0213);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_0214] = new StringBuilder(MyDialogues.Dlg_Rime_0214);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_0216] = new StringBuilder(MyDialogues.Dlg_Rime_0216);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_0217] = new StringBuilder(MyDialogues.Dlg_Rime_0217);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_0218] = new StringBuilder(MyDialogues.Dlg_Rime_0218);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_0219] = new StringBuilder(MyDialogues.Dlg_Rime_0219);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_0220] = new StringBuilder(MyDialogues.Dlg_Rime_0220);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_0221] = new StringBuilder(MyDialogues.Dlg_Rime_0221);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_0222] = new StringBuilder(MyDialogues.Dlg_Rime_0222);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_0223] = new StringBuilder(MyDialogues.Dlg_Rime_0223);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_0224] = new StringBuilder(MyDialogues.Dlg_Rime_0224);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_0225] = new StringBuilder(MyDialogues.Dlg_Rime_0225);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_0226] = new StringBuilder(MyDialogues.Dlg_Rime_0226);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_0227] = new StringBuilder(MyDialogues.Dlg_Rime_0227);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_0228] = new StringBuilder(MyDialogues.Dlg_Rime_0228);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_0229] = new StringBuilder(MyDialogues.Dlg_Rime_0229);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_0230] = new StringBuilder(MyDialogues.Dlg_Rime_0230);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_0231] = new StringBuilder(MyDialogues.Dlg_Rime_0231);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_0232] = new StringBuilder(MyDialogues.Dlg_Rime_0232);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_0233] = new StringBuilder(MyDialogues.Dlg_Rime_0233);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_0234] = new StringBuilder(MyDialogues.Dlg_Rime_0234);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_0235] = new StringBuilder(MyDialogues.Dlg_Rime_0235);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_0236] = new StringBuilder(MyDialogues.Dlg_Rime_0236);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase2_01_01] = new StringBuilder(MyDialogues.Dlg_SlaverBase2_01_01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase2_01_02] = new StringBuilder(MyDialogues.Dlg_SlaverBase2_01_02);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase2_02_01] = new StringBuilder(MyDialogues.Dlg_SlaverBase2_02_01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase2_02_02] = new StringBuilder(MyDialogues.Dlg_SlaverBase2_02_02);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase2_02_03] = new StringBuilder(MyDialogues.Dlg_SlaverBase2_02_03);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase2_03_01] = new StringBuilder(MyDialogues.Dlg_SlaverBase2_03_01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase2_03_02] = new StringBuilder(MyDialogues.Dlg_SlaverBase2_03_02);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase2_03_03] = new StringBuilder(MyDialogues.Dlg_SlaverBase2_03_03);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase2_03_04] = new StringBuilder(MyDialogues.Dlg_SlaverBase2_03_04);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase2_03_05] = new StringBuilder(MyDialogues.Dlg_SlaverBase2_03_05);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase2_04_01] = new StringBuilder(MyDialogues.Dlg_SlaverBase2_04_01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase2_04_02] = new StringBuilder(MyDialogues.Dlg_SlaverBase2_04_02);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase2_05_03] = new StringBuilder(MyDialogues.Dlg_SlaverBase2_05_03);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase2_06_01] = new StringBuilder(MyDialogues.Dlg_SlaverBase2_06_01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase2_06_02] = new StringBuilder(MyDialogues.Dlg_SlaverBase2_06_02);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase2_06_03] = new StringBuilder(MyDialogues.Dlg_SlaverBase2_06_03);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase2_06_04] = new StringBuilder(MyDialogues.Dlg_SlaverBase2_06_04);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase2_06_05] = new StringBuilder(MyDialogues.Dlg_SlaverBase2_06_05);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase2_06_06] = new StringBuilder(MyDialogues.Dlg_SlaverBase2_06_06);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase2_07_01] = new StringBuilder(MyDialogues.Dlg_SlaverBase2_07_01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase2_07_02] = new StringBuilder(MyDialogues.Dlg_SlaverBase2_07_02);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase2_07_03] = new StringBuilder(MyDialogues.Dlg_SlaverBase2_07_03);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase2_08_01] = new StringBuilder(MyDialogues.Dlg_SlaverBase2_08_01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase2_08_02] = new StringBuilder(MyDialogues.Dlg_SlaverBase2_08_02);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase2_08_03] = new StringBuilder(MyDialogues.Dlg_SlaverBase2_08_03);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase2_08_04] = new StringBuilder(MyDialogues.Dlg_SlaverBase2_08_04);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase2_08_05] = new StringBuilder(MyDialogues.Dlg_SlaverBase2_08_05);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase2_09_01] = new StringBuilder(MyDialogues.Dlg_SlaverBase2_09_01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase2_10_01] = new StringBuilder(MyDialogues.Dlg_SlaverBase2_10_01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase2_10_02] = new StringBuilder(MyDialogues.Dlg_SlaverBase2_10_02);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase2_10_03] = new StringBuilder(MyDialogues.Dlg_SlaverBase2_10_03);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase2_11_01] = new StringBuilder(MyDialogues.Dlg_SlaverBase2_11_01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase2_11_02] = new StringBuilder(MyDialogues.Dlg_SlaverBase2_11_02);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase2_12_01] = new StringBuilder(MyDialogues.Dlg_SlaverBase2_12_01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase2_13_01] = new StringBuilder(MyDialogues.Dlg_SlaverBase2_13_01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase2_13_02] = new StringBuilder(MyDialogues.Dlg_SlaverBase2_13_02);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase2_13_03] = new StringBuilder(MyDialogues.Dlg_SlaverBase2_13_03);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase2_13_04] = new StringBuilder(MyDialogues.Dlg_SlaverBase2_13_04);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase2_13_05] = new StringBuilder(MyDialogues.Dlg_SlaverBase2_13_05);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase2_13_06] = new StringBuilder(MyDialogues.Dlg_SlaverBase2_13_06);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase2_13_07] = new StringBuilder(MyDialogues.Dlg_SlaverBase2_13_07);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase2_13_08] = new StringBuilder(MyDialogues.Dlg_SlaverBase2_13_08);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase2_13_09] = new StringBuilder(MyDialogues.Dlg_SlaverBase2_13_09);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase2_13_10] = new StringBuilder(MyDialogues.Dlg_SlaverBase2_13_10);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantA_0100] = new StringBuilder(MyDialogues.Dlg_FortValiantA_0100);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantA_0101] = new StringBuilder(MyDialogues.Dlg_FortValiantA_0101);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantA_0102] = new StringBuilder(MyDialogues.Dlg_FortValiantA_0102);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantA_0103] = new StringBuilder(MyDialogues.Dlg_FortValiantA_0103);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantA_0104] = new StringBuilder(MyDialogues.Dlg_FortValiantA_0104);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantA_0105] = new StringBuilder(MyDialogues.Dlg_FortValiantA_0105);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantA_0106] = new StringBuilder(MyDialogues.Dlg_FortValiantA_0106);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantA_0107] = new StringBuilder(MyDialogues.Dlg_FortValiantA_0107);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantA_0108] = new StringBuilder(MyDialogues.Dlg_FortValiantA_0108);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantA_0109] = new StringBuilder(MyDialogues.Dlg_FortValiantA_0109);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantA_0110] = new StringBuilder(MyDialogues.Dlg_FortValiantA_0110);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantA_0111] = new StringBuilder(MyDialogues.Dlg_FortValiantA_0111);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantA_0112] = new StringBuilder(MyDialogues.Dlg_FortValiantA_0112);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantA_0113] = new StringBuilder(MyDialogues.Dlg_FortValiantA_0113);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantA_0114] = new StringBuilder(MyDialogues.Dlg_FortValiantA_0114);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantA_0115] = new StringBuilder(MyDialogues.Dlg_FortValiantA_0115);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantA_0200] = new StringBuilder(MyDialogues.Dlg_FortValiantA_0200);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantA_0201] = new StringBuilder(MyDialogues.Dlg_FortValiantA_0201);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantA_0202] = new StringBuilder(MyDialogues.Dlg_FortValiantA_0202);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantA_0203] = new StringBuilder(MyDialogues.Dlg_FortValiantA_0203);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantA_0204] = new StringBuilder(MyDialogues.Dlg_FortValiantA_0204);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantA_0300] = new StringBuilder(MyDialogues.Dlg_FortValiantA_0300);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantA_0301] = new StringBuilder(MyDialogues.Dlg_FortValiantA_0301);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantA_0302] = new StringBuilder(MyDialogues.Dlg_FortValiantA_0302);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantA_0303] = new StringBuilder(MyDialogues.Dlg_FortValiantA_0303);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantA_0304] = new StringBuilder(MyDialogues.Dlg_FortValiantA_0304);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantA_0305] = new StringBuilder(MyDialogues.Dlg_FortValiantA_0305);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantA_0306] = new StringBuilder(MyDialogues.Dlg_FortValiantA_0306);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantA_0307] = new StringBuilder(MyDialogues.Dlg_FortValiantA_0307);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantA_0308] = new StringBuilder(MyDialogues.Dlg_FortValiantA_0308);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantA_0309] = new StringBuilder(MyDialogues.Dlg_FortValiantA_0309);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantA_0310] = new StringBuilder(MyDialogues.Dlg_FortValiantA_0310);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantA_0311] = new StringBuilder(MyDialogues.Dlg_FortValiantA_0311);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantA_0312] = new StringBuilder(MyDialogues.Dlg_FortValiantA_0312);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantA_0313] = new StringBuilder(MyDialogues.Dlg_FortValiantA_0313);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantA_0314] = new StringBuilder(MyDialogues.Dlg_FortValiantA_0314);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantA_0315] = new StringBuilder(MyDialogues.Dlg_FortValiantA_0315);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantA_0316] = new StringBuilder(MyDialogues.Dlg_FortValiantA_0316);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantA_0317] = new StringBuilder(MyDialogues.Dlg_FortValiantA_0317);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantA_0318] = new StringBuilder(MyDialogues.Dlg_FortValiantA_0318);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantA_0319] = new StringBuilder(MyDialogues.Dlg_FortValiantA_0319);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantA_0320] = new StringBuilder(MyDialogues.Dlg_FortValiantA_0320);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantA_0321] = new StringBuilder(MyDialogues.Dlg_FortValiantA_0321);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantA_0322] = new StringBuilder(MyDialogues.Dlg_FortValiantA_0322);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantA_0323] = new StringBuilder(MyDialogues.Dlg_FortValiantA_0323);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantA_0324] = new StringBuilder(MyDialogues.Dlg_FortValiantA_0324);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantA_0325] = new StringBuilder(MyDialogues.Dlg_FortValiantA_0325);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantB_0100] = new StringBuilder(MyDialogues.Dlg_FortValiantB_0100);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantB_0101] = new StringBuilder(MyDialogues.Dlg_FortValiantB_0101);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantB_0102] = new StringBuilder(MyDialogues.Dlg_FortValiantB_0102);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantB_0201] = new StringBuilder(MyDialogues.Dlg_FortValiantB_0201);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantB_0202] = new StringBuilder(MyDialogues.Dlg_FortValiantB_0202);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantB_0203] = new StringBuilder(MyDialogues.Dlg_FortValiantB_0203);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantB_0204] = new StringBuilder(MyDialogues.Dlg_FortValiantB_0204);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantB_0205] = new StringBuilder(MyDialogues.Dlg_FortValiantB_0205);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantB_0207] = new StringBuilder(MyDialogues.Dlg_FortValiantB_0207);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantB_0208] = new StringBuilder(MyDialogues.Dlg_FortValiantB_0208);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantB_0209] = new StringBuilder(MyDialogues.Dlg_FortValiantB_0209);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantB_0210] = new StringBuilder(MyDialogues.Dlg_FortValiantB_0210);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantB_0211] = new StringBuilder(MyDialogues.Dlg_FortValiantB_0211);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantB_0212] = new StringBuilder(MyDialogues.Dlg_FortValiantB_0212);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantB_0213] = new StringBuilder(MyDialogues.Dlg_FortValiantB_0213);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantB_0214] = new StringBuilder(MyDialogues.Dlg_FortValiantB_0214);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantB_0215] = new StringBuilder(MyDialogues.Dlg_FortValiantB_0215);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantB_0216] = new StringBuilder(MyDialogues.Dlg_FortValiantB_0216);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantB_0217] = new StringBuilder(MyDialogues.Dlg_FortValiantB_0217);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantB_0218] = new StringBuilder(MyDialogues.Dlg_FortValiantB_0218);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantB_0219] = new StringBuilder(MyDialogues.Dlg_FortValiantB_0219);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantB_0220] = new StringBuilder(MyDialogues.Dlg_FortValiantB_0220);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantB_0221] = new StringBuilder(MyDialogues.Dlg_FortValiantB_0221);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantB_0222] = new StringBuilder(MyDialogues.Dlg_FortValiantB_0222);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantB_0223] = new StringBuilder(MyDialogues.Dlg_FortValiantB_0223);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantB_0224] = new StringBuilder(MyDialogues.Dlg_FortValiantB_0224);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantB_0225] = new StringBuilder(MyDialogues.Dlg_FortValiantB_0225);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantB_0226] = new StringBuilder(MyDialogues.Dlg_FortValiantB_0226);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantB_0227] = new StringBuilder(MyDialogues.Dlg_FortValiantB_0227);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantB_0228] = new StringBuilder(MyDialogues.Dlg_FortValiantB_0228);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantB_0229] = new StringBuilder(MyDialogues.Dlg_FortValiantB_0229);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantB_0230] = new StringBuilder(MyDialogues.Dlg_FortValiantB_0230);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase_01_01] = new StringBuilder(MyDialogues.Dlg_SlaverBase_01_01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase_01_02] = new StringBuilder(MyDialogues.Dlg_SlaverBase_01_02);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase_01_03] = new StringBuilder(MyDialogues.Dlg_SlaverBase_01_03);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase_01_06] = new StringBuilder(MyDialogues.Dlg_SlaverBase_01_06);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase_01_07] = new StringBuilder(MyDialogues.Dlg_SlaverBase_01_07);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase_02_01] = new StringBuilder(MyDialogues.Dlg_SlaverBase_02_01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase_02_02] = new StringBuilder(MyDialogues.Dlg_SlaverBase_02_02);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase_02_03] = new StringBuilder(MyDialogues.Dlg_SlaverBase_02_03);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase_03_01] = new StringBuilder(MyDialogues.Dlg_SlaverBase_03_01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase_03_02] = new StringBuilder(MyDialogues.Dlg_SlaverBase_03_02);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase_03_03] = new StringBuilder(MyDialogues.Dlg_SlaverBase_03_03);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase_04_01] = new StringBuilder(MyDialogues.Dlg_SlaverBase_04_01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase_04_02] = new StringBuilder(MyDialogues.Dlg_SlaverBase_04_02);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase_05_01] = new StringBuilder(MyDialogues.Dlg_SlaverBase_05_01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase_05_02] = new StringBuilder(MyDialogues.Dlg_SlaverBase_05_02);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase_05_03] = new StringBuilder(MyDialogues.Dlg_SlaverBase_05_03);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase_05_04] = new StringBuilder(MyDialogues.Dlg_SlaverBase_05_04);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase_05_05] = new StringBuilder(MyDialogues.Dlg_SlaverBase_05_05);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase_05_06] = new StringBuilder(MyDialogues.Dlg_SlaverBase_05_06);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase_05_07] = new StringBuilder(MyDialogues.Dlg_SlaverBase_05_07);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase_06_01] = new StringBuilder(MyDialogues.Dlg_SlaverBase_06_01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase_07_01] = new StringBuilder(MyDialogues.Dlg_SlaverBase_07_01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase_07_02] = new StringBuilder(MyDialogues.Dlg_SlaverBase_07_02);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase_07_03] = new StringBuilder(MyDialogues.Dlg_SlaverBase_07_03);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase_07_04] = new StringBuilder(MyDialogues.Dlg_SlaverBase_07_04);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase_08_02] = new StringBuilder(MyDialogues.Dlg_SlaverBase_08_02);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase_08_03] = new StringBuilder(MyDialogues.Dlg_SlaverBase_08_03);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase_08_04] = new StringBuilder(MyDialogues.Dlg_SlaverBase_08_04);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase_08_05] = new StringBuilder(MyDialogues.Dlg_SlaverBase_08_05);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase_08_06] = new StringBuilder(MyDialogues.Dlg_SlaverBase_08_06);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase_08_07] = new StringBuilder(MyDialogues.Dlg_SlaverBase_08_07);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase_08_08] = new StringBuilder(MyDialogues.Dlg_SlaverBase_08_08);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase_08_09] = new StringBuilder(MyDialogues.Dlg_SlaverBase_08_09);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase_08_10] = new StringBuilder(MyDialogues.Dlg_SlaverBase_08_10);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase_08_11] = new StringBuilder(MyDialogues.Dlg_SlaverBase_08_11);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase_09_01] = new StringBuilder(MyDialogues.Dlg_SlaverBase_09_01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase_09_02] = new StringBuilder(MyDialogues.Dlg_SlaverBase_09_02);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase_10_01] = new StringBuilder(MyDialogues.Dlg_SlaverBase_10_01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase_10_02] = new StringBuilder(MyDialogues.Dlg_SlaverBase_10_02);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase_10_03] = new StringBuilder(MyDialogues.Dlg_SlaverBase_10_03);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase_10_04] = new StringBuilder(MyDialogues.Dlg_SlaverBase_10_04);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase_10_05] = new StringBuilder(MyDialogues.Dlg_SlaverBase_10_05);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase_10_06] = new StringBuilder(MyDialogues.Dlg_SlaverBase_10_06);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase_10_07] = new StringBuilder(MyDialogues.Dlg_SlaverBase_10_07);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase_10_08] = new StringBuilder(MyDialogues.Dlg_SlaverBase_10_08);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase_10_09] = new StringBuilder(MyDialogues.Dlg_SlaverBase_10_09);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase_10_10] = new StringBuilder(MyDialogues.Dlg_SlaverBase_10_10);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase_10_11] = new StringBuilder(MyDialogues.Dlg_SlaverBase_10_11);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase_11_01] = new StringBuilder(MyDialogues.Dlg_SlaverBase_11_01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase_11_02] = new StringBuilder(MyDialogues.Dlg_SlaverBase_11_02);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_0100] = new StringBuilder(MyDialogues.Dlg_EACPrison_0100);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_0101] = new StringBuilder(MyDialogues.Dlg_EACPrison_0101);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_0102] = new StringBuilder(MyDialogues.Dlg_EACPrison_0102);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_0103] = new StringBuilder(MyDialogues.Dlg_EACPrison_0103);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_0104] = new StringBuilder(MyDialogues.Dlg_EACPrison_0104);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_0105] = new StringBuilder(MyDialogues.Dlg_EACPrison_0105);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_0106] = new StringBuilder(MyDialogues.Dlg_EACPrison_0106);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_0107] = new StringBuilder(MyDialogues.Dlg_EACPrison_0107);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_0108] = new StringBuilder(MyDialogues.Dlg_EACPrison_0108);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_0109] = new StringBuilder(MyDialogues.Dlg_EACPrison_0109);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_0110] = new StringBuilder(MyDialogues.Dlg_EACPrison_0110);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_0111] = new StringBuilder(MyDialogues.Dlg_EACPrison_0111);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_0112] = new StringBuilder(MyDialogues.Dlg_EACPrison_0112);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_0113] = new StringBuilder(MyDialogues.Dlg_EACPrison_0113);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_0114] = new StringBuilder(MyDialogues.Dlg_EACPrison_0114);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_0115] = new StringBuilder(MyDialogues.Dlg_EACPrison_0115);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_0200] = new StringBuilder(MyDialogues.Dlg_EACPrison_0200);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_0201] = new StringBuilder(MyDialogues.Dlg_EACPrison_0201);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_0300] = new StringBuilder(MyDialogues.Dlg_EACPrison_0300);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_0301] = new StringBuilder(MyDialogues.Dlg_EACPrison_0301);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_0302] = new StringBuilder(MyDialogues.Dlg_EACPrison_0302);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_0400] = new StringBuilder(MyDialogues.Dlg_EACPrison_0400);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_0401] = new StringBuilder(MyDialogues.Dlg_EACPrison_0401);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_0402] = new StringBuilder(MyDialogues.Dlg_EACPrison_0402);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_0403] = new StringBuilder(MyDialogues.Dlg_EACPrison_0403);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_0404] = new StringBuilder(MyDialogues.Dlg_EACPrison_0404);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_0405] = new StringBuilder(MyDialogues.Dlg_EACPrison_0405);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_0406] = new StringBuilder(MyDialogues.Dlg_EACPrison_0406);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_0407] = new StringBuilder(MyDialogues.Dlg_EACPrison_0407);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_0408] = new StringBuilder(MyDialogues.Dlg_EACPrison_0408);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_0409] = new StringBuilder(MyDialogues.Dlg_EACPrison_0409);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_0410] = new StringBuilder(MyDialogues.Dlg_EACPrison_0410);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_0500] = new StringBuilder(MyDialogues.Dlg_EACPrison_0500);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_0501] = new StringBuilder(MyDialogues.Dlg_EACPrison_0501);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_0502] = new StringBuilder(MyDialogues.Dlg_EACPrison_0502);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_0503] = new StringBuilder(MyDialogues.Dlg_EACPrison_0503);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_0600] = new StringBuilder(MyDialogues.Dlg_EACPrison_0600);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_0601] = new StringBuilder(MyDialogues.Dlg_EACPrison_0601);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_0602] = new StringBuilder(MyDialogues.Dlg_EACPrison_0602);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_0603] = new StringBuilder(MyDialogues.Dlg_EACPrison_0603);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_0604] = new StringBuilder(MyDialogues.Dlg_EACPrison_0604);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_0700] = new StringBuilder(MyDialogues.Dlg_EACPrison_0700);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_0701] = new StringBuilder(MyDialogues.Dlg_EACPrison_0701);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_0702] = new StringBuilder(MyDialogues.Dlg_EACPrison_0702);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_0703] = new StringBuilder(MyDialogues.Dlg_EACPrison_0703);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_0800] = new StringBuilder(MyDialogues.Dlg_EACPrison_0800);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_0801] = new StringBuilder(MyDialogues.Dlg_EACPrison_0801);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_0802] = new StringBuilder(MyDialogues.Dlg_EACPrison_0802);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_0803] = new StringBuilder(MyDialogues.Dlg_EACPrison_0803);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_0900] = new StringBuilder(MyDialogues.Dlg_EACPrison_0900);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_0901] = new StringBuilder(MyDialogues.Dlg_EACPrison_0901);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_0902] = new StringBuilder(MyDialogues.Dlg_EACPrison_0902);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_0903] = new StringBuilder(MyDialogues.Dlg_EACPrison_0903);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_1000] = new StringBuilder(MyDialogues.Dlg_EACPrison_1000);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_1001] = new StringBuilder(MyDialogues.Dlg_EACPrison_1001);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_1002] = new StringBuilder(MyDialogues.Dlg_EACPrison_1002);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_1100] = new StringBuilder(MyDialogues.Dlg_EACPrison_1100);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_1101] = new StringBuilder(MyDialogues.Dlg_EACPrison_1101);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_1200] = new StringBuilder(MyDialogues.Dlg_EACPrison_1200);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_1201] = new StringBuilder(MyDialogues.Dlg_EACPrison_1201);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_1202] = new StringBuilder(MyDialogues.Dlg_EACPrison_1202);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_1203] = new StringBuilder(MyDialogues.Dlg_EACPrison_1203);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_1204] = new StringBuilder(MyDialogues.Dlg_EACPrison_1204);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_1205] = new StringBuilder(MyDialogues.Dlg_EACPrison_1205);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_1206] = new StringBuilder(MyDialogues.Dlg_EACPrison_1206);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_1207] = new StringBuilder(MyDialogues.Dlg_EACPrison_1207);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_1208] = new StringBuilder(MyDialogues.Dlg_EACPrison_1208);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_1209] = new StringBuilder(MyDialogues.Dlg_EACPrison_1209);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_1210] = new StringBuilder(MyDialogues.Dlg_EACPrison_1210);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_1300] = new StringBuilder(MyDialogues.Dlg_EACPrison_1300);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_1400] = new StringBuilder(MyDialogues.Dlg_EACPrison_1400);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_1401] = new StringBuilder(MyDialogues.Dlg_EACPrison_1401);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_1500] = new StringBuilder(MyDialogues.Dlg_EACPrison_1500);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_1501] = new StringBuilder(MyDialogues.Dlg_EACPrison_1501);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_1502] = new StringBuilder(MyDialogues.Dlg_EACPrison_1502);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_1503] = new StringBuilder(MyDialogues.Dlg_EACPrison_1503);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_1504] = new StringBuilder(MyDialogues.Dlg_EACPrison_1504);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_1505] = new StringBuilder(MyDialogues.Dlg_EACPrison_1505);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_1506] = new StringBuilder(MyDialogues.Dlg_EACPrison_1506);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_1507] = new StringBuilder(MyDialogues.Dlg_EACPrison_1507);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_1510] = new StringBuilder(MyDialogues.Dlg_EACPrison_1510);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_1511] = new StringBuilder(MyDialogues.Dlg_EACPrison_1511);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_1600] = new StringBuilder(MyDialogues.Dlg_EACPrison_1600);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_1601] = new StringBuilder(MyDialogues.Dlg_EACPrison_1601);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_1602] = new StringBuilder(MyDialogues.Dlg_EACPrison_1602);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_1603] = new StringBuilder(MyDialogues.Dlg_EACPrison_1603);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACPrison_1604] = new StringBuilder(MyDialogues.Dlg_EACPrison_1604);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_01_01] = new StringBuilder(MyDialogues.Dlg_TwinTowers_01_01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_01_02] = new StringBuilder(MyDialogues.Dlg_TwinTowers_01_02);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_01_03] = new StringBuilder(MyDialogues.Dlg_TwinTowers_01_03);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_02_01] = new StringBuilder(MyDialogues.Dlg_TwinTowers_02_01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_02_03] = new StringBuilder(MyDialogues.Dlg_TwinTowers_02_03);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_02_04] = new StringBuilder(MyDialogues.Dlg_TwinTowers_02_04);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_02_05] = new StringBuilder(MyDialogues.Dlg_TwinTowers_02_05);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_02_06] = new StringBuilder(MyDialogues.Dlg_TwinTowers_02_06);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_03_01] = new StringBuilder(MyDialogues.Dlg_TwinTowers_03_01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_03_02] = new StringBuilder(MyDialogues.Dlg_TwinTowers_03_02);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_03_03] = new StringBuilder(MyDialogues.Dlg_TwinTowers_03_03);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_03_04] = new StringBuilder(MyDialogues.Dlg_TwinTowers_03_04);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_04_01] = new StringBuilder(MyDialogues.Dlg_TwinTowers_04_01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_04_02] = new StringBuilder(MyDialogues.Dlg_TwinTowers_04_02);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_05_01] = new StringBuilder(MyDialogues.Dlg_TwinTowers_05_01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_05_02] = new StringBuilder(MyDialogues.Dlg_TwinTowers_05_02);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_05_03] = new StringBuilder(MyDialogues.Dlg_TwinTowers_05_03);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_06_01] = new StringBuilder(MyDialogues.Dlg_TwinTowers_06_01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_06_02] = new StringBuilder(MyDialogues.Dlg_TwinTowers_06_02);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_06_03] = new StringBuilder(MyDialogues.Dlg_TwinTowers_06_03);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_06_04] = new StringBuilder(MyDialogues.Dlg_TwinTowers_06_04);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_06_05] = new StringBuilder(MyDialogues.Dlg_TwinTowers_06_05);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_06_06] = new StringBuilder(MyDialogues.Dlg_TwinTowers_06_06);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_06_07] = new StringBuilder(MyDialogues.Dlg_TwinTowers_06_07);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_06_08] = new StringBuilder(MyDialogues.Dlg_TwinTowers_06_08);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_07_01] = new StringBuilder(MyDialogues.Dlg_TwinTowers_07_01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_07_02] = new StringBuilder(MyDialogues.Dlg_TwinTowers_07_02);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_07_03] = new StringBuilder(MyDialogues.Dlg_TwinTowers_07_03);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_08_01] = new StringBuilder(MyDialogues.Dlg_TwinTowers_08_01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_08_02] = new StringBuilder(MyDialogues.Dlg_TwinTowers_08_02);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_09_01] = new StringBuilder(MyDialogues.Dlg_TwinTowers_09_01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_09_02] = new StringBuilder(MyDialogues.Dlg_TwinTowers_09_02);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_09_03] = new StringBuilder(MyDialogues.Dlg_TwinTowers_09_03);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_09_04] = new StringBuilder(MyDialogues.Dlg_TwinTowers_09_04);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_09_05] = new StringBuilder(MyDialogues.Dlg_TwinTowers_09_05);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_09_06] = new StringBuilder(MyDialogues.Dlg_TwinTowers_09_06);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_09_07] = new StringBuilder(MyDialogues.Dlg_TwinTowers_09_07);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_09_08] = new StringBuilder(MyDialogues.Dlg_TwinTowers_09_08);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_09_09] = new StringBuilder(MyDialogues.Dlg_TwinTowers_09_09);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_10_01] = new StringBuilder(MyDialogues.Dlg_TwinTowers_10_01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_10_02] = new StringBuilder(MyDialogues.Dlg_TwinTowers_10_02);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_11_01] = new StringBuilder(MyDialogues.Dlg_TwinTowers_11_01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_11_02] = new StringBuilder(MyDialogues.Dlg_TwinTowers_11_02);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_11_04] = new StringBuilder(MyDialogues.Dlg_TwinTowers_11_04);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_11_05] = new StringBuilder(MyDialogues.Dlg_TwinTowers_11_05);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_11_06] = new StringBuilder(MyDialogues.Dlg_TwinTowers_11_06);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_11_07] = new StringBuilder(MyDialogues.Dlg_TwinTowers_11_07);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_11_08] = new StringBuilder(MyDialogues.Dlg_TwinTowers_11_08);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_12_01] = new StringBuilder(MyDialogues.Dlg_TwinTowers_12_01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_12_02] = new StringBuilder(MyDialogues.Dlg_TwinTowers_12_02);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_12_03] = new StringBuilder(MyDialogues.Dlg_TwinTowers_12_03);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_12_04] = new StringBuilder(MyDialogues.Dlg_TwinTowers_12_04);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_12_05] = new StringBuilder(MyDialogues.Dlg_TwinTowers_12_05);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_12_06] = new StringBuilder(MyDialogues.Dlg_TwinTowers_12_06);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_12_07] = new StringBuilder(MyDialogues.Dlg_TwinTowers_12_07);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_12_08] = new StringBuilder(MyDialogues.Dlg_TwinTowers_12_08);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_12_09] = new StringBuilder(MyDialogues.Dlg_TwinTowers_12_09);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_13_01] = new StringBuilder(MyDialogues.Dlg_TwinTowers_13_01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_13_02] = new StringBuilder(MyDialogues.Dlg_TwinTowers_13_02);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_13_03] = new StringBuilder(MyDialogues.Dlg_TwinTowers_13_03);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_13_04] = new StringBuilder(MyDialogues.Dlg_TwinTowers_13_04);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_13_05] = new StringBuilder(MyDialogues.Dlg_TwinTowers_13_05);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_13_06] = new StringBuilder(MyDialogues.Dlg_TwinTowers_13_06);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_13_07] = new StringBuilder(MyDialogues.Dlg_TwinTowers_13_07);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_13_08] = new StringBuilder(MyDialogues.Dlg_TwinTowers_13_08);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_13_09] = new StringBuilder(MyDialogues.Dlg_TwinTowers_13_09);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_13_10] = new StringBuilder(MyDialogues.Dlg_TwinTowers_13_10);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_13_11] = new StringBuilder(MyDialogues.Dlg_TwinTowers_13_11);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_14_01] = new StringBuilder(MyDialogues.Dlg_TwinTowers_14_01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_14_02] = new StringBuilder(MyDialogues.Dlg_TwinTowers_14_02);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_14_03] = new StringBuilder(MyDialogues.Dlg_TwinTowers_14_03);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_14_04] = new StringBuilder(MyDialogues.Dlg_TwinTowers_14_04);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_15_01] = new StringBuilder(MyDialogues.Dlg_TwinTowers_15_01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_15_02] = new StringBuilder(MyDialogues.Dlg_TwinTowers_15_02);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_15_03] = new StringBuilder(MyDialogues.Dlg_TwinTowers_15_03);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_15_04] = new StringBuilder(MyDialogues.Dlg_TwinTowers_15_04);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_15_05] = new StringBuilder(MyDialogues.Dlg_TwinTowers_15_05);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_15_06] = new StringBuilder(MyDialogues.Dlg_TwinTowers_15_06);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_15_07] = new StringBuilder(MyDialogues.Dlg_TwinTowers_15_07);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_15_08] = new StringBuilder(MyDialogues.Dlg_TwinTowers_15_08);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_15_09] = new StringBuilder(MyDialogues.Dlg_TwinTowers_15_09);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_15_10] = new StringBuilder(MyDialogues.Dlg_TwinTowers_15_10);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_15_11] = new StringBuilder(MyDialogues.Dlg_TwinTowers_15_11);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_15_12] = new StringBuilder(MyDialogues.Dlg_TwinTowers_15_12);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_16_01] = new StringBuilder(MyDialogues.Dlg_TwinTowers_16_01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_16_02] = new StringBuilder(MyDialogues.Dlg_TwinTowers_16_02);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_16_03] = new StringBuilder(MyDialogues.Dlg_TwinTowers_16_03);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_16_04] = new StringBuilder(MyDialogues.Dlg_TwinTowers_16_04);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_16_05] = new StringBuilder(MyDialogues.Dlg_TwinTowers_16_05);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_16_06] = new StringBuilder(MyDialogues.Dlg_TwinTowers_16_06);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_16_07] = new StringBuilder(MyDialogues.Dlg_TwinTowers_16_07);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_16_08] = new StringBuilder(MyDialogues.Dlg_TwinTowers_16_08);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_16_09] = new StringBuilder(MyDialogues.Dlg_TwinTowers_16_09);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_16_10] = new StringBuilder(MyDialogues.Dlg_TwinTowers_16_10);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_16_11] = new StringBuilder(MyDialogues.Dlg_TwinTowers_16_11);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_16_12] = new StringBuilder(MyDialogues.Dlg_TwinTowers_16_12);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_16_13] = new StringBuilder(MyDialogues.Dlg_TwinTowers_16_13);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_17_01] = new StringBuilder(MyDialogues.Dlg_TwinTowers_17_01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_17_02] = new StringBuilder(MyDialogues.Dlg_TwinTowers_17_02);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_17_03] = new StringBuilder(MyDialogues.Dlg_TwinTowers_17_03);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_17_04] = new StringBuilder(MyDialogues.Dlg_TwinTowers_17_04);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_17_05] = new StringBuilder(MyDialogues.Dlg_TwinTowers_17_05);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_17_06] = new StringBuilder(MyDialogues.Dlg_TwinTowers_17_06);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_17_07] = new StringBuilder(MyDialogues.Dlg_TwinTowers_17_07);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_17_08] = new StringBuilder(MyDialogues.Dlg_TwinTowers_17_08);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_18_01] = new StringBuilder(MyDialogues.Dlg_TwinTowers_18_01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_18_02] = new StringBuilder(MyDialogues.Dlg_TwinTowers_18_02);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_18_03] = new StringBuilder(MyDialogues.Dlg_TwinTowers_18_03);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_18_04] = new StringBuilder(MyDialogues.Dlg_TwinTowers_18_04);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_18_05] = new StringBuilder(MyDialogues.Dlg_TwinTowers_18_05);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_18_06] = new StringBuilder(MyDialogues.Dlg_TwinTowers_18_06);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_19_01] = new StringBuilder(MyDialogues.Dlg_TwinTowers_19_01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_19_02] = new StringBuilder(MyDialogues.Dlg_TwinTowers_19_02);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_19_03] = new StringBuilder(MyDialogues.Dlg_TwinTowers_19_03);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_19_04] = new StringBuilder(MyDialogues.Dlg_TwinTowers_19_04);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_19_05] = new StringBuilder(MyDialogues.Dlg_TwinTowers_19_05);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_19_06] = new StringBuilder(MyDialogues.Dlg_TwinTowers_19_06);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_19_07] = new StringBuilder(MyDialogues.Dlg_TwinTowers_19_07);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_19_08] = new StringBuilder(MyDialogues.Dlg_TwinTowers_19_08);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_20_01] = new StringBuilder(MyDialogues.Dlg_TwinTowers_20_01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_20_02] = new StringBuilder(MyDialogues.Dlg_TwinTowers_20_02);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_21_01] = new StringBuilder(MyDialogues.Dlg_TwinTowers_21_01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_21_02] = new StringBuilder(MyDialogues.Dlg_TwinTowers_21_02);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_21_03] = new StringBuilder(MyDialogues.Dlg_TwinTowers_21_03);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_21_04] = new StringBuilder(MyDialogues.Dlg_TwinTowers_21_04);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_21_05] = new StringBuilder(MyDialogues.Dlg_TwinTowers_21_05);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_21_06] = new StringBuilder(MyDialogues.Dlg_TwinTowers_21_06);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_21_07] = new StringBuilder(MyDialogues.Dlg_TwinTowers_21_07);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_TwinTowers_21_08] = new StringBuilder(MyDialogues.Dlg_TwinTowers_21_08);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ResearchVessel_1000] = new StringBuilder(MyDialogues.Dlg_ResearchVessel_1000);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ResearchVessel_1001] = new StringBuilder(MyDialogues.Dlg_ResearchVessel_1001);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ResearchVessel_1002] = new StringBuilder(MyDialogues.Dlg_ResearchVessel_1002);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ResearchVessel_1003] = new StringBuilder(MyDialogues.Dlg_ResearchVessel_1003);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ResearchVessel_1004] = new StringBuilder(MyDialogues.Dlg_ResearchVessel_1004);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ResearchVessel_1005] = new StringBuilder(MyDialogues.Dlg_ResearchVessel_1005);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ResearchVessel_1006] = new StringBuilder(MyDialogues.Dlg_ResearchVessel_1006);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ResearchVessel_1007] = new StringBuilder(MyDialogues.Dlg_ResearchVessel_1007);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ResearchVessel_1008] = new StringBuilder(MyDialogues.Dlg_ResearchVessel_1008);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ResearchVessel_1009] = new StringBuilder(MyDialogues.Dlg_ResearchVessel_1009);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ResearchVessel_1010] = new StringBuilder(MyDialogues.Dlg_ResearchVessel_1010);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ResearchVessel_1011] = new StringBuilder(MyDialogues.Dlg_ResearchVessel_1011);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ResearchVessel_1012] = new StringBuilder(MyDialogues.Dlg_ResearchVessel_1012);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ResearchVessel_1013] = new StringBuilder(MyDialogues.Dlg_ResearchVessel_1013);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ResearchVessel_1014] = new StringBuilder(MyDialogues.Dlg_ResearchVessel_1014);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ResearchVessel_1015] = new StringBuilder(MyDialogues.Dlg_ResearchVessel_1015);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ResearchVessel_1016] = new StringBuilder(MyDialogues.Dlg_ResearchVessel_1016);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ResearchVessel_1017] = new StringBuilder(MyDialogues.Dlg_ResearchVessel_1017);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ResearchVessel_1018] = new StringBuilder(MyDialogues.Dlg_ResearchVessel_1018);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ResearchVessel_1019] = new StringBuilder(MyDialogues.Dlg_ResearchVessel_1019);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ResearchVessel_1020] = new StringBuilder(MyDialogues.Dlg_ResearchVessel_1020);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ResearchVessel_1021] = new StringBuilder(MyDialogues.Dlg_ResearchVessel_1021);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ResearchVessel_1022] = new StringBuilder(MyDialogues.Dlg_ResearchVessel_1022);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ResearchVessel_1023] = new StringBuilder(MyDialogues.Dlg_ResearchVessel_1023);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ResearchVessel_1024] = new StringBuilder(MyDialogues.Dlg_ResearchVessel_1024);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ResearchVessel_1025] = new StringBuilder(MyDialogues.Dlg_ResearchVessel_1025);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ResearchVessel_1026] = new StringBuilder(MyDialogues.Dlg_ResearchVessel_1026);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ResearchVessel_1027] = new StringBuilder(MyDialogues.Dlg_ResearchVessel_1027);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ResearchVessel_1028] = new StringBuilder(MyDialogues.Dlg_ResearchVessel_1028);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ResearchVessel_1029] = new StringBuilder(MyDialogues.Dlg_ResearchVessel_1029);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ResearchVessel_1030] = new StringBuilder(MyDialogues.Dlg_ResearchVessel_1030);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ResearchVessel_1031] = new StringBuilder(MyDialogues.Dlg_ResearchVessel_1031);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ResearchVessel_1032] = new StringBuilder(MyDialogues.Dlg_ResearchVessel_1032);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ResearchVessel_1033] = new StringBuilder(MyDialogues.Dlg_ResearchVessel_1033);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ResearchVessel_1034] = new StringBuilder(MyDialogues.Dlg_ResearchVessel_1034);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ResearchVessel_1036] = new StringBuilder(MyDialogues.Dlg_ResearchVessel_1036);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ResearchVessel_1037] = new StringBuilder(MyDialogues.Dlg_ResearchVessel_1037);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ResearchVessel_1038] = new StringBuilder(MyDialogues.Dlg_ResearchVessel_1038);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ResearchVessel_1039] = new StringBuilder(MyDialogues.Dlg_ResearchVessel_1039);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ResearchVessel_1040] = new StringBuilder(MyDialogues.Dlg_ResearchVessel_1040);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ResearchVessel_1041] = new StringBuilder(MyDialogues.Dlg_ResearchVessel_1041);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ResearchVessel_1042] = new StringBuilder(MyDialogues.Dlg_ResearchVessel_1042);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ResearchVessel_1043] = new StringBuilder(MyDialogues.Dlg_ResearchVessel_1043);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ResearchVessel_1044] = new StringBuilder(MyDialogues.Dlg_ResearchVessel_1044);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ResearchVessel_1045] = new StringBuilder(MyDialogues.Dlg_ResearchVessel_1045);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ResearchVessel_1046] = new StringBuilder(MyDialogues.Dlg_ResearchVessel_1046);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ResearchVessel_1047] = new StringBuilder(MyDialogues.Dlg_ResearchVessel_1047);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ResearchVessel_1048] = new StringBuilder(MyDialogues.Dlg_ResearchVessel_1048);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ResearchVessel_1049] = new StringBuilder(MyDialogues.Dlg_ResearchVessel_1049);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ResearchVessel_1050] = new StringBuilder(MyDialogues.Dlg_ResearchVessel_1050);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ResearchVessel_1051] = new StringBuilder(MyDialogues.Dlg_ResearchVessel_1051);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ResearchVessel_1052] = new StringBuilder(MyDialogues.Dlg_ResearchVessel_1052);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ResearchVessel_1053] = new StringBuilder(MyDialogues.Dlg_ResearchVessel_1053);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ResearchVessel_1054] = new StringBuilder(MyDialogues.Dlg_ResearchVessel_1054);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ResearchVessel_1055] = new StringBuilder(MyDialogues.Dlg_ResearchVessel_1055);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ResearchVessel_1056] = new StringBuilder(MyDialogues.Dlg_ResearchVessel_1056);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseEscape_1000] = new StringBuilder(MyDialogues.Dlg_ChineseEscape_1000);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseEscape_1001] = new StringBuilder(MyDialogues.Dlg_ChineseEscape_1001);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseEscape_1002] = new StringBuilder(MyDialogues.Dlg_ChineseEscape_1002);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseEscape_1003] = new StringBuilder(MyDialogues.Dlg_ChineseEscape_1003);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseEscape_1004] = new StringBuilder(MyDialogues.Dlg_ChineseEscape_1004);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseEscape_1005] = new StringBuilder(MyDialogues.Dlg_ChineseEscape_1005);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseEscape_1006] = new StringBuilder(MyDialogues.Dlg_ChineseEscape_1006);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseEscape_1007] = new StringBuilder(MyDialogues.Dlg_ChineseEscape_1007);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseEscape_1008] = new StringBuilder(MyDialogues.Dlg_ChineseEscape_1008);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseEscape_1009] = new StringBuilder(MyDialogues.Dlg_ChineseEscape_1009);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseEscape_1010] = new StringBuilder(MyDialogues.Dlg_ChineseEscape_1010);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseEscape_1011] = new StringBuilder(MyDialogues.Dlg_ChineseEscape_1011);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseEscape_1012] = new StringBuilder(MyDialogues.Dlg_ChineseEscape_1012);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseEscape_1013] = new StringBuilder(MyDialogues.Dlg_ChineseEscape_1013);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseEscape_1014] = new StringBuilder(MyDialogues.Dlg_ChineseEscape_1014);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseEscape_1015] = new StringBuilder(MyDialogues.Dlg_ChineseEscape_1015);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseEscape_1016] = new StringBuilder(MyDialogues.Dlg_ChineseEscape_1016);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseEscape_1017] = new StringBuilder(MyDialogues.Dlg_ChineseEscape_1017);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseEscape_1018] = new StringBuilder(MyDialogues.Dlg_ChineseEscape_1018);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseEscape_1019] = new StringBuilder(MyDialogues.Dlg_ChineseEscape_1019);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseEscape_1020] = new StringBuilder(MyDialogues.Dlg_ChineseEscape_1020);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseEscape_1021] = new StringBuilder(MyDialogues.Dlg_ChineseEscape_1021);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseEscape_1022] = new StringBuilder(MyDialogues.Dlg_ChineseEscape_1022);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseEscape_1023] = new StringBuilder(MyDialogues.Dlg_ChineseEscape_1023);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseEscape_1024] = new StringBuilder(MyDialogues.Dlg_ChineseEscape_1024);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseEscape_1025] = new StringBuilder(MyDialogues.Dlg_ChineseEscape_1025);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseEscape_1026] = new StringBuilder(MyDialogues.Dlg_ChineseEscape_1026);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseEscape_1027] = new StringBuilder(MyDialogues.Dlg_ChineseEscape_1027);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0100] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_0100);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0101] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_0101);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0102] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_0102);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0103] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_0103);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0104] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_0104);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0105] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_0105);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0106] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_0106);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0107] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_0107);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0108] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_0108);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0109] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_0109);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0200] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_0200);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0201] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_0201);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0202] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_0202);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0203] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_0203);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0204] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_0204);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0205] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_0205);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0206] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_0206);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0207] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_0207);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0208] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_0208);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0209] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_0209);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0210] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_0210);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0300] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_0300);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0301] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_0301);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0302] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_0302);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0303] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_0303);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0304] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_0304);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0305] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_0305);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0306] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_0306);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0307] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_0307);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0308] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_0308);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0309] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_0309);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0310] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_0310);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0311] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_0311);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0400] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_0400);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0401] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_0401);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0402] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_0402);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0403] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_0403);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0404] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_0404);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0500] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_0500);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0501] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_0501);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0502] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_0502);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0503] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_0503);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0600] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_0600);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0601] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_0601);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0602] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_0602);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0603] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_0603);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0604] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_0604);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0605] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_0605);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0606] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_0606);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0607] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_0607);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0608] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_0608);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0609] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_0609);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0610] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_0610);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0700] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_0700);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0800] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_0800);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0801] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_0801);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0802] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_0802);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0803] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_0803);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0804] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_0804);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0805] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_0805);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0900] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_0900);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_0901] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_0901);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1000] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_1000);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1001] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_1001);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1002] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_1002);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1003] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_1003);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1004] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_1004);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1005] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_1005);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1006] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_1006);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1007] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_1007);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1008] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_1008);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1009] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_1009);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1010] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_1010);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1011] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_1011);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1012] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_1012);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1013] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_1013);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1014] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_1014);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1015] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_1015);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1016] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_1016);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1017] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_1017);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1018] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_1018);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1019] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_1019);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1020] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_1020);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1021] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_1021);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1022] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_1022);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1100] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_1100);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1101] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_1101);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1102] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_1102);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1200] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_1200);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1201] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_1201);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1202] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_1202);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1203] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_1203);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1204] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_1204);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1205] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_1205);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1206] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_1206);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1207] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_1207);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1208] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_1208);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1209] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_1209);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1210] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_1210);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1211] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_1211);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1212] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_1212);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1213] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_1213);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1214] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_1214);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1215] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_1215);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1216] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_1216);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1217] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_1217);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1218] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_1218);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1219] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_1219);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1220] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_1220);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1221] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_1221);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1222] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_1222);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1223] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_1223);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1224] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_1224);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1225] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_1225);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1226] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_1226);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1227] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_1227);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1228] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_1228);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1229] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_1229);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1230] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_1230);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1231] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_1231);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1232] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_1232);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1233] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_1233);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1234] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_1234);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1235] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_1235);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1236] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_1236);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1237] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_1237);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonPlant_1238] = new StringBuilder(MyDialogues.Dlg_BarthsMoonPlant_1238);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransport_01_01] = new StringBuilder(MyDialogues.Dlg_ChineseTransport_01_01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransport_01_02] = new StringBuilder(MyDialogues.Dlg_ChineseTransport_01_02);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransport_01_03] = new StringBuilder(MyDialogues.Dlg_ChineseTransport_01_03);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransport_01_04] = new StringBuilder(MyDialogues.Dlg_ChineseTransport_01_04);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransport_01_05] = new StringBuilder(MyDialogues.Dlg_ChineseTransport_01_05);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransport_01_06] = new StringBuilder(MyDialogues.Dlg_ChineseTransport_01_06);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransport_01_07] = new StringBuilder(MyDialogues.Dlg_ChineseTransport_01_07);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransport_02_01] = new StringBuilder(MyDialogues.Dlg_ChineseTransport_02_01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransport_02_02] = new StringBuilder(MyDialogues.Dlg_ChineseTransport_02_02);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransport_02_03] = new StringBuilder(MyDialogues.Dlg_ChineseTransport_02_03);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransport_03_01] = new StringBuilder(MyDialogues.Dlg_ChineseTransport_03_01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransport_04_01] = new StringBuilder(MyDialogues.Dlg_ChineseTransport_04_01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransport_04_02] = new StringBuilder(MyDialogues.Dlg_ChineseTransport_04_02);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransport_04_03] = new StringBuilder(MyDialogues.Dlg_ChineseTransport_04_03);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransport_05_01] = new StringBuilder(MyDialogues.Dlg_ChineseTransport_05_01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransport_06_01] = new StringBuilder(MyDialogues.Dlg_ChineseTransport_06_01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransport_06_02] = new StringBuilder(MyDialogues.Dlg_ChineseTransport_06_02);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransport_06_03] = new StringBuilder(MyDialogues.Dlg_ChineseTransport_06_03);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransport_07_01] = new StringBuilder(MyDialogues.Dlg_ChineseTransport_07_01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransport_08_01] = new StringBuilder(MyDialogues.Dlg_ChineseTransport_08_01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransport_09_01] = new StringBuilder(MyDialogues.Dlg_ChineseTransport_09_01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransport_11_01] = new StringBuilder(MyDialogues.Dlg_ChineseTransport_11_01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransport_11_02] = new StringBuilder(MyDialogues.Dlg_ChineseTransport_11_02);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransport_11_03] = new StringBuilder(MyDialogues.Dlg_ChineseTransport_11_03);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransport_11_04] = new StringBuilder(MyDialogues.Dlg_ChineseTransport_11_04);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransport_12_01] = new StringBuilder(MyDialogues.Dlg_ChineseTransport_12_01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransport_12_02] = new StringBuilder(MyDialogues.Dlg_ChineseTransport_12_02);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransport_12_03] = new StringBuilder(MyDialogues.Dlg_ChineseTransport_12_03);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransport_12_04] = new StringBuilder(MyDialogues.Dlg_ChineseTransport_12_04);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransport_12_05] = new StringBuilder(MyDialogues.Dlg_ChineseTransport_12_05);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransport_12_06] = new StringBuilder(MyDialogues.Dlg_ChineseTransport_12_06);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransport_13_01] = new StringBuilder(MyDialogues.Dlg_ChineseTransport_13_01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransport_14_01] = new StringBuilder(MyDialogues.Dlg_ChineseTransport_14_01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransport_15_01] = new StringBuilder(MyDialogues.Dlg_ChineseTransport_15_01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransport_16_01] = new StringBuilder(MyDialogues.Dlg_ChineseTransport_16_01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransport_17_01] = new StringBuilder(MyDialogues.Dlg_ChineseTransport_17_01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransport_17_02] = new StringBuilder(MyDialogues.Dlg_ChineseTransport_17_02);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransport_17_03] = new StringBuilder(MyDialogues.Dlg_ChineseTransport_17_03);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransport_18_01] = new StringBuilder(MyDialogues.Dlg_ChineseTransport_18_01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransport_19_01] = new StringBuilder(MyDialogues.Dlg_ChineseTransport_19_01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransport_19_02] = new StringBuilder(MyDialogues.Dlg_ChineseTransport_19_02);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransport_20_01] = new StringBuilder(MyDialogues.Dlg_ChineseTransport_20_01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseTransport_20_03] = new StringBuilder(MyDialogues.Dlg_ChineseTransport_20_03);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACSurveySite_0711] = new StringBuilder(MyDialogues.Dlg_EACSurveySite_0711);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_SlaverBase2_08_06] = new StringBuilder(MyDialogues.Dlg_SlaverBase2_08_06);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_0100] = new StringBuilder(MyDialogues.Dlg_FortValiantC_0100);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_0101] = new StringBuilder(MyDialogues.Dlg_FortValiantC_0101);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_0102] = new StringBuilder(MyDialogues.Dlg_FortValiantC_0102);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_0103] = new StringBuilder(MyDialogues.Dlg_FortValiantC_0103);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_0104] = new StringBuilder(MyDialogues.Dlg_FortValiantC_0104);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_0105] = new StringBuilder(MyDialogues.Dlg_FortValiantC_0105);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_0106] = new StringBuilder(MyDialogues.Dlg_FortValiantC_0106);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_0107] = new StringBuilder(MyDialogues.Dlg_FortValiantC_0107);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_0108] = new StringBuilder(MyDialogues.Dlg_FortValiantC_0108);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_0109] = new StringBuilder(MyDialogues.Dlg_FortValiantC_0109);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_0110] = new StringBuilder(MyDialogues.Dlg_FortValiantC_0110);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_0200] = new StringBuilder(MyDialogues.Dlg_FortValiantC_0200);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_0201] = new StringBuilder(MyDialogues.Dlg_FortValiantC_0201);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_0300] = new StringBuilder(MyDialogues.Dlg_FortValiantC_0300);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_0301] = new StringBuilder(MyDialogues.Dlg_FortValiantC_0301);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_0400] = new StringBuilder(MyDialogues.Dlg_FortValiantC_0400);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_0401] = new StringBuilder(MyDialogues.Dlg_FortValiantC_0401);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_0402] = new StringBuilder(MyDialogues.Dlg_FortValiantC_0402);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_0403] = new StringBuilder(MyDialogues.Dlg_FortValiantC_0403);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_0404] = new StringBuilder(MyDialogues.Dlg_FortValiantC_0404);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_0405] = new StringBuilder(MyDialogues.Dlg_FortValiantC_0405);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_0406] = new StringBuilder(MyDialogues.Dlg_FortValiantC_0406);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_0407] = new StringBuilder(MyDialogues.Dlg_FortValiantC_0407);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_0408] = new StringBuilder(MyDialogues.Dlg_FortValiantC_0408);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_0409] = new StringBuilder(MyDialogues.Dlg_FortValiantC_0409);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_0410] = new StringBuilder(MyDialogues.Dlg_FortValiantC_0410);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_0411] = new StringBuilder(MyDialogues.Dlg_FortValiantC_0411);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_0412] = new StringBuilder(MyDialogues.Dlg_FortValiantC_0412);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_0500] = new StringBuilder(MyDialogues.Dlg_FortValiantC_0500);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_0501] = new StringBuilder(MyDialogues.Dlg_FortValiantC_0501);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_0502] = new StringBuilder(MyDialogues.Dlg_FortValiantC_0502);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_0503] = new StringBuilder(MyDialogues.Dlg_FortValiantC_0503);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_0600] = new StringBuilder(MyDialogues.Dlg_FortValiantC_0600);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_0601] = new StringBuilder(MyDialogues.Dlg_FortValiantC_0601);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_0602] = new StringBuilder(MyDialogues.Dlg_FortValiantC_0602);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_0603] = new StringBuilder(MyDialogues.Dlg_FortValiantC_0603);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_0604] = new StringBuilder(MyDialogues.Dlg_FortValiantC_0604);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_0605] = new StringBuilder(MyDialogues.Dlg_FortValiantC_0605);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_0606] = new StringBuilder(MyDialogues.Dlg_FortValiantC_0606);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_0607] = new StringBuilder(MyDialogues.Dlg_FortValiantC_0607);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_0608] = new StringBuilder(MyDialogues.Dlg_FortValiantC_0608);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_0609] = new StringBuilder(MyDialogues.Dlg_FortValiantC_0609);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_0610] = new StringBuilder(MyDialogues.Dlg_FortValiantC_0610);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_0611] = new StringBuilder(MyDialogues.Dlg_FortValiantC_0611);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_0612] = new StringBuilder(MyDialogues.Dlg_FortValiantC_0612);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_0613] = new StringBuilder(MyDialogues.Dlg_FortValiantC_0613);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_0614] = new StringBuilder(MyDialogues.Dlg_FortValiantC_0614);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_0615] = new StringBuilder(MyDialogues.Dlg_FortValiantC_0615);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_0616] = new StringBuilder(MyDialogues.Dlg_FortValiantC_0616);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_0617] = new StringBuilder(MyDialogues.Dlg_FortValiantC_0617);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_0618] = new StringBuilder(MyDialogues.Dlg_FortValiantC_0618);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_0619] = new StringBuilder(MyDialogues.Dlg_FortValiantC_0619);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_0620] = new StringBuilder(MyDialogues.Dlg_FortValiantC_0620);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_0621] = new StringBuilder(MyDialogues.Dlg_FortValiantC_0621);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_0622] = new StringBuilder(MyDialogues.Dlg_FortValiantC_0622);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_0623] = new StringBuilder(MyDialogues.Dlg_FortValiantC_0623);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_0624] = new StringBuilder(MyDialogues.Dlg_FortValiantC_0624);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_0626] = new StringBuilder(MyDialogues.Dlg_FortValiantC_0626);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_0627] = new StringBuilder(MyDialogues.Dlg_FortValiantC_0627);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_0628] = new StringBuilder(MyDialogues.Dlg_FortValiantC_0628);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_0700] = new StringBuilder(MyDialogues.Dlg_FortValiantC_0700);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_0701] = new StringBuilder(MyDialogues.Dlg_FortValiantC_0701);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_0800] = new StringBuilder(MyDialogues.Dlg_FortValiantC_0800);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_0900] = new StringBuilder(MyDialogues.Dlg_FortValiantC_0900);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_1000] = new StringBuilder(MyDialogues.Dlg_FortValiantC_1000);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_1200] = new StringBuilder(MyDialogues.Dlg_FortValiantC_1200);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_1300] = new StringBuilder(MyDialogues.Dlg_FortValiantC_1300);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_1400] = new StringBuilder(MyDialogues.Dlg_FortValiantC_1400);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_1401] = new StringBuilder(MyDialogues.Dlg_FortValiantC_1401);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_1402] = new StringBuilder(MyDialogues.Dlg_FortValiantC_1402);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_1500] = new StringBuilder(MyDialogues.Dlg_FortValiantC_1500);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_1501] = new StringBuilder(MyDialogues.Dlg_FortValiantC_1501);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_1600] = new StringBuilder(MyDialogues.Dlg_FortValiantC_1600);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_1601] = new StringBuilder(MyDialogues.Dlg_FortValiantC_1601);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_1700] = new StringBuilder(MyDialogues.Dlg_FortValiantC_1700);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_1701] = new StringBuilder(MyDialogues.Dlg_FortValiantC_1701);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_1800] = new StringBuilder(MyDialogues.Dlg_FortValiantC_1800);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_1900] = new StringBuilder(MyDialogues.Dlg_FortValiantC_1900);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_2000] = new StringBuilder(MyDialogues.Dlg_FortValiantC_2000);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_2101] = new StringBuilder(MyDialogues.Dlg_FortValiantC_2101);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_2201] = new StringBuilder(MyDialogues.Dlg_FortValiantC_2201);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_2300] = new StringBuilder(MyDialogues.Dlg_FortValiantC_2300);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_2301] = new StringBuilder(MyDialogues.Dlg_FortValiantC_2301);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_2302] = new StringBuilder(MyDialogues.Dlg_FortValiantC_2302);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_2303] = new StringBuilder(MyDialogues.Dlg_FortValiantC_2303);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_2304] = new StringBuilder(MyDialogues.Dlg_FortValiantC_2304);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_2305] = new StringBuilder(MyDialogues.Dlg_FortValiantC_2305);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_2400] = new StringBuilder(MyDialogues.Dlg_FortValiantC_2400);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_2401] = new StringBuilder(MyDialogues.Dlg_FortValiantC_2401);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_2402] = new StringBuilder(MyDialogues.Dlg_FortValiantC_2402);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_2403] = new StringBuilder(MyDialogues.Dlg_FortValiantC_2403);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_2404] = new StringBuilder(MyDialogues.Dlg_FortValiantC_2404);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_2405] = new StringBuilder(MyDialogues.Dlg_FortValiantC_2405);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_2406] = new StringBuilder(MyDialogues.Dlg_FortValiantC_2406);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_2407] = new StringBuilder(MyDialogues.Dlg_FortValiantC_2407);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_2408] = new StringBuilder(MyDialogues.Dlg_FortValiantC_2408);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_2500] = new StringBuilder(MyDialogues.Dlg_FortValiantC_2500);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_2501] = new StringBuilder(MyDialogues.Dlg_FortValiantC_2501);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_2502] = new StringBuilder(MyDialogues.Dlg_FortValiantC_2502);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_2600] = new StringBuilder(MyDialogues.Dlg_FortValiantC_2600);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_2601] = new StringBuilder(MyDialogues.Dlg_FortValiantC_2601);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_2602] = new StringBuilder(MyDialogues.Dlg_FortValiantC_2602);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_2603] = new StringBuilder(MyDialogues.Dlg_FortValiantC_2603);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_2604] = new StringBuilder(MyDialogues.Dlg_FortValiantC_2604);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_2605] = new StringBuilder(MyDialogues.Dlg_FortValiantC_2605);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_2606] = new StringBuilder(MyDialogues.Dlg_FortValiantC_2606);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_2607] = new StringBuilder(MyDialogues.Dlg_FortValiantC_2607);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_2608] = new StringBuilder(MyDialogues.Dlg_FortValiantC_2608);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_2609] = new StringBuilder(MyDialogues.Dlg_FortValiantC_2609);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_2610] = new StringBuilder(MyDialogues.Dlg_FortValiantC_2610);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_2611] = new StringBuilder(MyDialogues.Dlg_FortValiantC_2611);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_2612] = new StringBuilder(MyDialogues.Dlg_FortValiantC_2612);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_2613] = new StringBuilder(MyDialogues.Dlg_FortValiantC_2613);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_2614] = new StringBuilder(MyDialogues.Dlg_FortValiantC_2614);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_2615] = new StringBuilder(MyDialogues.Dlg_FortValiantC_2615);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_2616] = new StringBuilder(MyDialogues.Dlg_FortValiantC_2616);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_2617] = new StringBuilder(MyDialogues.Dlg_FortValiantC_2617);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_2618] = new StringBuilder(MyDialogues.Dlg_FortValiantC_2618);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_2619] = new StringBuilder(MyDialogues.Dlg_FortValiantC_2619);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_2620] = new StringBuilder(MyDialogues.Dlg_FortValiantC_2620);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_2621] = new StringBuilder(MyDialogues.Dlg_FortValiantC_2621);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_2622] = new StringBuilder(MyDialogues.Dlg_FortValiantC_2622);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_2623] = new StringBuilder(MyDialogues.Dlg_FortValiantC_2623);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_2625] = new StringBuilder(MyDialogues.Dlg_FortValiantC_2625);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_2626] = new StringBuilder(MyDialogues.Dlg_FortValiantC_2626);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_2627] = new StringBuilder(MyDialogues.Dlg_FortValiantC_2627);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_2628] = new StringBuilder(MyDialogues.Dlg_FortValiantC_2628);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_2629] = new StringBuilder(MyDialogues.Dlg_FortValiantC_2629);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_2630] = new StringBuilder(MyDialogues.Dlg_FortValiantC_2630);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_FortValiantC_2631] = new StringBuilder(MyDialogues.Dlg_FortValiantC_2631);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0100] = new StringBuilder(MyDialogues.Dlg_AlienGate_0100);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0101] = new StringBuilder(MyDialogues.Dlg_AlienGate_0101);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0102] = new StringBuilder(MyDialogues.Dlg_AlienGate_0102);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0103] = new StringBuilder(MyDialogues.Dlg_AlienGate_0103);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0104] = new StringBuilder(MyDialogues.Dlg_AlienGate_0104);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0200] = new StringBuilder(MyDialogues.Dlg_AlienGate_0200);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0201] = new StringBuilder(MyDialogues.Dlg_AlienGate_0201);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0300] = new StringBuilder(MyDialogues.Dlg_AlienGate_0300);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0301] = new StringBuilder(MyDialogues.Dlg_AlienGate_0301);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0400] = new StringBuilder(MyDialogues.Dlg_AlienGate_0400);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0401] = new StringBuilder(MyDialogues.Dlg_AlienGate_0401);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0402] = new StringBuilder(MyDialogues.Dlg_AlienGate_0402);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0403] = new StringBuilder(MyDialogues.Dlg_AlienGate_0403);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0404] = new StringBuilder(MyDialogues.Dlg_AlienGate_0404);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0500] = new StringBuilder(MyDialogues.Dlg_AlienGate_0500);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0501] = new StringBuilder(MyDialogues.Dlg_AlienGate_0501);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0502] = new StringBuilder(MyDialogues.Dlg_AlienGate_0502);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0503] = new StringBuilder(MyDialogues.Dlg_AlienGate_0503);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0504] = new StringBuilder(MyDialogues.Dlg_AlienGate_0504);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0505] = new StringBuilder(MyDialogues.Dlg_AlienGate_0505);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0506] = new StringBuilder(MyDialogues.Dlg_AlienGate_0506);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0507] = new StringBuilder(MyDialogues.Dlg_AlienGate_0507);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0508] = new StringBuilder(MyDialogues.Dlg_AlienGate_0508);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0509] = new StringBuilder(MyDialogues.Dlg_AlienGate_0509);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0510] = new StringBuilder(MyDialogues.Dlg_AlienGate_0510);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0511] = new StringBuilder(MyDialogues.Dlg_AlienGate_0511);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0512] = new StringBuilder(MyDialogues.Dlg_AlienGate_0512);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0513] = new StringBuilder(MyDialogues.Dlg_AlienGate_0513);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0514] = new StringBuilder(MyDialogues.Dlg_AlienGate_0514);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0515] = new StringBuilder(MyDialogues.Dlg_AlienGate_0515);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0516] = new StringBuilder(MyDialogues.Dlg_AlienGate_0516);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0517] = new StringBuilder(MyDialogues.Dlg_AlienGate_0517);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0518] = new StringBuilder(MyDialogues.Dlg_AlienGate_0518);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0519] = new StringBuilder(MyDialogues.Dlg_AlienGate_0519);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0520] = new StringBuilder(MyDialogues.Dlg_AlienGate_0520);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0521] = new StringBuilder(MyDialogues.Dlg_AlienGate_0521);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0522] = new StringBuilder(MyDialogues.Dlg_AlienGate_0522);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0523] = new StringBuilder(MyDialogues.Dlg_AlienGate_0523);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0524] = new StringBuilder(MyDialogues.Dlg_AlienGate_0524);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0525] = new StringBuilder(MyDialogues.Dlg_AlienGate_0525);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0526] = new StringBuilder(MyDialogues.Dlg_AlienGate_0526);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0527] = new StringBuilder(MyDialogues.Dlg_AlienGate_0527);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0528] = new StringBuilder(MyDialogues.Dlg_AlienGate_0528);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0529] = new StringBuilder(MyDialogues.Dlg_AlienGate_0529);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0530] = new StringBuilder(MyDialogues.Dlg_AlienGate_0530);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0531] = new StringBuilder(MyDialogues.Dlg_AlienGate_0531);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0532] = new StringBuilder(MyDialogues.Dlg_AlienGate_0532);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0533] = new StringBuilder(MyDialogues.Dlg_AlienGate_0533);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0534] = new StringBuilder(MyDialogues.Dlg_AlienGate_0534);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0535] = new StringBuilder(MyDialogues.Dlg_AlienGate_0535);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0536] = new StringBuilder(MyDialogues.Dlg_AlienGate_0536);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0537] = new StringBuilder(MyDialogues.Dlg_AlienGate_0537);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0538] = new StringBuilder(MyDialogues.Dlg_AlienGate_0538);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0539] = new StringBuilder(MyDialogues.Dlg_AlienGate_0539);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0540] = new StringBuilder(MyDialogues.Dlg_AlienGate_0540);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0541] = new StringBuilder(MyDialogues.Dlg_AlienGate_0541);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0542] = new StringBuilder(MyDialogues.Dlg_AlienGate_0542);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0543] = new StringBuilder(MyDialogues.Dlg_AlienGate_0543);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0544] = new StringBuilder(MyDialogues.Dlg_AlienGate_0544);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0545] = new StringBuilder(MyDialogues.Dlg_AlienGate_0545);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0546] = new StringBuilder(MyDialogues.Dlg_AlienGate_0546);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0547] = new StringBuilder(MyDialogues.Dlg_AlienGate_0547);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0548] = new StringBuilder(MyDialogues.Dlg_AlienGate_0548);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0549] = new StringBuilder(MyDialogues.Dlg_AlienGate_0549);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0550] = new StringBuilder(MyDialogues.Dlg_AlienGate_0550);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0600] = new StringBuilder(MyDialogues.Dlg_AlienGate_0600);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0601] = new StringBuilder(MyDialogues.Dlg_AlienGate_0601);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0602] = new StringBuilder(MyDialogues.Dlg_AlienGate_0602);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0603] = new StringBuilder(MyDialogues.Dlg_AlienGate_0603);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0604] = new StringBuilder(MyDialogues.Dlg_AlienGate_0604);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0700] = new StringBuilder(MyDialogues.Dlg_AlienGate_0700);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0800] = new StringBuilder(MyDialogues.Dlg_AlienGate_0800);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0801] = new StringBuilder(MyDialogues.Dlg_AlienGate_0801);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0802] = new StringBuilder(MyDialogues.Dlg_AlienGate_0802);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0803] = new StringBuilder(MyDialogues.Dlg_AlienGate_0803);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0804] = new StringBuilder(MyDialogues.Dlg_AlienGate_0804);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0805] = new StringBuilder(MyDialogues.Dlg_AlienGate_0805);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0900] = new StringBuilder(MyDialogues.Dlg_AlienGate_0900);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0901] = new StringBuilder(MyDialogues.Dlg_AlienGate_0901);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0902] = new StringBuilder(MyDialogues.Dlg_AlienGate_0902);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0903] = new StringBuilder(MyDialogues.Dlg_AlienGate_0903);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0904] = new StringBuilder(MyDialogues.Dlg_AlienGate_0904);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0905] = new StringBuilder(MyDialogues.Dlg_AlienGate_0905);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0906] = new StringBuilder(MyDialogues.Dlg_AlienGate_0906);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0907] = new StringBuilder(MyDialogues.Dlg_AlienGate_0907);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0908] = new StringBuilder(MyDialogues.Dlg_AlienGate_0908);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0909] = new StringBuilder(MyDialogues.Dlg_AlienGate_0909);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0910] = new StringBuilder(MyDialogues.Dlg_AlienGate_0910);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0911] = new StringBuilder(MyDialogues.Dlg_AlienGate_0911);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0912] = new StringBuilder(MyDialogues.Dlg_AlienGate_0912);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0913] = new StringBuilder(MyDialogues.Dlg_AlienGate_0913);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_1000] = new StringBuilder(MyDialogues.Dlg_AlienGate_1000);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_1001] = new StringBuilder(MyDialogues.Dlg_AlienGate_1001);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_1002] = new StringBuilder(MyDialogues.Dlg_AlienGate_1002);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_1003] = new StringBuilder(MyDialogues.Dlg_AlienGate_1003);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_1100] = new StringBuilder(MyDialogues.Dlg_AlienGate_1100);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_1200] = new StringBuilder(MyDialogues.Dlg_AlienGate_1200);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_1201] = new StringBuilder(MyDialogues.Dlg_AlienGate_1201);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_1202] = new StringBuilder(MyDialogues.Dlg_AlienGate_1202);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_1203] = new StringBuilder(MyDialogues.Dlg_AlienGate_1203);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_1204] = new StringBuilder(MyDialogues.Dlg_AlienGate_1204);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_1300] = new StringBuilder(MyDialogues.Dlg_AlienGate_1300);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_1301] = new StringBuilder(MyDialogues.Dlg_AlienGate_1301);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_1302] = new StringBuilder(MyDialogues.Dlg_AlienGate_1302);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_1400] = new StringBuilder(MyDialogues.Dlg_AlienGate_1400);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_1500] = new StringBuilder(MyDialogues.Dlg_AlienGate_1500);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_1501] = new StringBuilder(MyDialogues.Dlg_AlienGate_1501);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_1502] = new StringBuilder(MyDialogues.Dlg_AlienGate_1502);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_1600] = new StringBuilder(MyDialogues.Dlg_AlienGate_1600);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_1601] = new StringBuilder(MyDialogues.Dlg_AlienGate_1601);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_1700] = new StringBuilder(MyDialogues.Dlg_AlienGate_1700);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_1701] = new StringBuilder(MyDialogues.Dlg_AlienGate_1701);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_1702] = new StringBuilder(MyDialogues.Dlg_AlienGate_1702);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_1703] = new StringBuilder(MyDialogues.Dlg_AlienGate_1703);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_1704] = new StringBuilder(MyDialogues.Dlg_AlienGate_1704);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_1800] = new StringBuilder(MyDialogues.Dlg_AlienGate_1800);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_1900] = new StringBuilder(MyDialogues.Dlg_AlienGate_1900);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_2000] = new StringBuilder(MyDialogues.Dlg_AlienGate_2000);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_2001] = new StringBuilder(MyDialogues.Dlg_AlienGate_2001);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_2200] = new StringBuilder(MyDialogues.Dlg_AlienGate_2200);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_2201] = new StringBuilder(MyDialogues.Dlg_AlienGate_2201);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_2202] = new StringBuilder(MyDialogues.Dlg_AlienGate_2202);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_2203] = new StringBuilder(MyDialogues.Dlg_AlienGate_2203);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_2300] = new StringBuilder(MyDialogues.Dlg_AlienGate_2300);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_2301] = new StringBuilder(MyDialogues.Dlg_AlienGate_2301);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_2400] = new StringBuilder(MyDialogues.Dlg_AlienGate_2400);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_2401] = new StringBuilder(MyDialogues.Dlg_AlienGate_2401);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_2402] = new StringBuilder(MyDialogues.Dlg_AlienGate_2402);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_2403] = new StringBuilder(MyDialogues.Dlg_AlienGate_2403);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_2500] = new StringBuilder(MyDialogues.Dlg_AlienGate_2500);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_2501] = new StringBuilder(MyDialogues.Dlg_AlienGate_2501);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_2502] = new StringBuilder(MyDialogues.Dlg_AlienGate_2502);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_2600] = new StringBuilder(MyDialogues.Dlg_AlienGate_2600);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_2601] = new StringBuilder(MyDialogues.Dlg_AlienGate_2601);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_2602] = new StringBuilder(MyDialogues.Dlg_AlienGate_2602);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_2700] = new StringBuilder(MyDialogues.Dlg_AlienGate_2700);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_2701] = new StringBuilder(MyDialogues.Dlg_AlienGate_2701);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_2702] = new StringBuilder(MyDialogues.Dlg_AlienGate_2702);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_2703] = new StringBuilder(MyDialogues.Dlg_AlienGate_2703);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_2704] = new StringBuilder(MyDialogues.Dlg_AlienGate_2704);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_2705] = new StringBuilder(MyDialogues.Dlg_AlienGate_2705);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_2800] = new StringBuilder(MyDialogues.Dlg_AlienGate_2800);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_2801] = new StringBuilder(MyDialogues.Dlg_AlienGate_2801);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_2802] = new StringBuilder(MyDialogues.Dlg_AlienGate_2802);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_2803] = new StringBuilder(MyDialogues.Dlg_AlienGate_2803);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_2900] = new StringBuilder(MyDialogues.Dlg_AlienGate_2900);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_2901] = new StringBuilder(MyDialogues.Dlg_AlienGate_2901);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_3000] = new StringBuilder(MyDialogues.Dlg_AlienGate_3000);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_3200] = new StringBuilder(MyDialogues.Dlg_AlienGate_3200);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_3201] = new StringBuilder(MyDialogues.Dlg_AlienGate_3201);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_3202] = new StringBuilder(MyDialogues.Dlg_AlienGate_3202);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_3300] = new StringBuilder(MyDialogues.Dlg_AlienGate_3300);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_3301] = new StringBuilder(MyDialogues.Dlg_AlienGate_3301);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_3302] = new StringBuilder(MyDialogues.Dlg_AlienGate_3302);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_3303] = new StringBuilder(MyDialogues.Dlg_AlienGate_3303);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_3304] = new StringBuilder(MyDialogues.Dlg_AlienGate_3304);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_3305] = new StringBuilder(MyDialogues.Dlg_AlienGate_3305);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_3306] = new StringBuilder(MyDialogues.Dlg_AlienGate_3306);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_3307] = new StringBuilder(MyDialogues.Dlg_AlienGate_3307);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_3308] = new StringBuilder(MyDialogues.Dlg_AlienGate_3308);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_3309] = new StringBuilder(MyDialogues.Dlg_AlienGate_3309);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_3310] = new StringBuilder(MyDialogues.Dlg_AlienGate_3310);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_3311] = new StringBuilder(MyDialogues.Dlg_AlienGate_3311);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0101] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0101);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0108] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0108);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0110] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0110);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0111] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0111);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0112] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0112);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0113] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0113);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0114] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0114);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0115] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0115);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0116] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0116);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0117] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0117);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0118] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0118);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0119] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0119);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0120] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0120);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0121] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0121);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0122] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0122);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0201] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0201);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0301] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0301);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0302] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0302);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0304] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0304);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0305] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0305);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0306] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0306);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0307] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0307);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0308] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0308);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0309] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0309);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0310] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0310);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0311] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0311);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0312] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0312);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0313] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0313);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0314] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0314);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0315] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0315);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0316] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0316);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0317] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0317);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0318] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0318);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0319] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0319);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0320] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0320);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0321] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0321);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0322] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0322);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0323] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0323);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0324] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0324);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0325] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0325);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0326] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0326);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0327] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0327);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0328] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0328);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0329] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0329);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0330] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0330);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0331] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0331);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0332] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0332);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0333] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0333);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0334] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0334);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0335] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0335);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0336] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0336);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0337] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0337);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0338] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0338);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0339] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0339);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0340] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0340);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0341] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0341);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0342] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0342);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0344] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0344);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0345] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0345);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0401] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0401);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0402] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0402);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0403] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0403);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0404] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0404);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0405] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0405);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0406] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0406);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0407] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0407);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0408] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0408);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0409] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0409);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0410] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0410);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0411] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0411);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0412] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0412);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0413] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0413);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0414] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0414);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0415] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0415);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0416] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0416);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0417] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0417);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0418] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0418);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0419] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0419);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0420] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0420);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0421] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0421);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0422] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0422);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0423] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0423);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0424] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0424);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0425] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0425);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0426] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0426);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0427] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0427);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0501] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0501);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0502] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0502);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0503] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0503);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0504] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0504);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0601] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0601);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0602] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0602);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0603] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0603);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0604] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0604);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0605] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0605);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0701] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0701);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0702] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0702);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0703] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0703);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0704] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0704);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0705] = new StringBuilder(MyDialogues.Dlg_BarthsMoonConvince_0705);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Challenger_0100_BEHIND01] = new StringBuilder(MyDialogues.Dlg_Challenger_0100_BEHIND01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Challenger_0100_BEHIND02] = new StringBuilder(MyDialogues.Dlg_Challenger_0100_BEHIND02);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Challenger_0100_BEHIND03] = new StringBuilder(MyDialogues.Dlg_Challenger_0100_BEHIND03);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Challenger_0100_BEHIND04] = new StringBuilder(MyDialogues.Dlg_Challenger_0100_BEHIND04);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Challenger_0100_BEHIND05] = new StringBuilder(MyDialogues.Dlg_Challenger_0100_BEHIND05);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Challenger_0100_FRONT01] = new StringBuilder(MyDialogues.Dlg_Challenger_0100_FRONT01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Challenger_0100_FRONT02] = new StringBuilder(MyDialogues.Dlg_Challenger_0100_FRONT02);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Challenger_0100_FRONT03] = new StringBuilder(MyDialogues.Dlg_Challenger_0100_FRONT03);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Challenger_0100_FRONT04] = new StringBuilder(MyDialogues.Dlg_Challenger_0100_FRONT04);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Challenger_0100_FRONT05] = new StringBuilder(MyDialogues.Dlg_Challenger_0100_FRONT05);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardReturn_0100] = new StringBuilder(MyDialogues.Dlg_JunkyardReturn_0100);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardReturn_0101] = new StringBuilder(MyDialogues.Dlg_JunkyardReturn_0101);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardReturn_0102] = new StringBuilder(MyDialogues.Dlg_JunkyardReturn_0102);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardReturn_0103] = new StringBuilder(MyDialogues.Dlg_JunkyardReturn_0103);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardReturn_0104] = new StringBuilder(MyDialogues.Dlg_JunkyardReturn_0104);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardReturn_0200] = new StringBuilder(MyDialogues.Dlg_JunkyardReturn_0200);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardReturn_0201] = new StringBuilder(MyDialogues.Dlg_JunkyardReturn_0201);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardReturn_0202] = new StringBuilder(MyDialogues.Dlg_JunkyardReturn_0202);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardReturn_0203] = new StringBuilder(MyDialogues.Dlg_JunkyardReturn_0203);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardReturn_0204] = new StringBuilder(MyDialogues.Dlg_JunkyardReturn_0204);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardReturn_0205] = new StringBuilder(MyDialogues.Dlg_JunkyardReturn_0205);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardReturn_0206] = new StringBuilder(MyDialogues.Dlg_JunkyardReturn_0206);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardReturn_0207] = new StringBuilder(MyDialogues.Dlg_JunkyardReturn_0207);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardReturn_0208] = new StringBuilder(MyDialogues.Dlg_JunkyardReturn_0208);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardReturn_0209] = new StringBuilder(MyDialogues.Dlg_JunkyardReturn_0209);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardReturn_0210] = new StringBuilder(MyDialogues.Dlg_JunkyardReturn_0210);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardReturn_0211] = new StringBuilder(MyDialogues.Dlg_JunkyardReturn_0211);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardReturn_0212] = new StringBuilder(MyDialogues.Dlg_JunkyardReturn_0212);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardReturn_0213] = new StringBuilder(MyDialogues.Dlg_JunkyardReturn_0213);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardReturn_0214] = new StringBuilder(MyDialogues.Dlg_JunkyardReturn_0214);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardReturn_0215] = new StringBuilder(MyDialogues.Dlg_JunkyardReturn_0215);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardReturn_0216] = new StringBuilder(MyDialogues.Dlg_JunkyardReturn_0216);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardReturn_0217] = new StringBuilder(MyDialogues.Dlg_JunkyardReturn_0217);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardReturn_0218] = new StringBuilder(MyDialogues.Dlg_JunkyardReturn_0218);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardReturn_0219] = new StringBuilder(MyDialogues.Dlg_JunkyardReturn_0219);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardReturn_0220] = new StringBuilder(MyDialogues.Dlg_JunkyardReturn_0220);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardReturn_0300] = new StringBuilder(MyDialogues.Dlg_JunkyardReturn_0300);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardReturn_0301] = new StringBuilder(MyDialogues.Dlg_JunkyardReturn_0301);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardReturn_0400] = new StringBuilder(MyDialogues.Dlg_JunkyardReturn_0400);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardReturn_0401] = new StringBuilder(MyDialogues.Dlg_JunkyardReturn_0401);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardReturn_0500] = new StringBuilder(MyDialogues.Dlg_JunkyardReturn_0500);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardReturn_0501] = new StringBuilder(MyDialogues.Dlg_JunkyardReturn_0501);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardReturn_0600] = new StringBuilder(MyDialogues.Dlg_JunkyardReturn_0600);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardReturn_0700] = new StringBuilder(MyDialogues.Dlg_JunkyardReturn_0700);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardReturn_0800] = new StringBuilder(MyDialogues.Dlg_JunkyardReturn_0800);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardReturn_0900] = new StringBuilder(MyDialogues.Dlg_JunkyardReturn_0900);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1000] = new StringBuilder(MyDialogues.Dlg_JunkyardReturn_1000);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1100] = new StringBuilder(MyDialogues.Dlg_JunkyardReturn_1100);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1200] = new StringBuilder(MyDialogues.Dlg_JunkyardReturn_1200);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1300] = new StringBuilder(MyDialogues.Dlg_JunkyardReturn_1300);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1301] = new StringBuilder(MyDialogues.Dlg_JunkyardReturn_1301);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1302] = new StringBuilder(MyDialogues.Dlg_JunkyardReturn_1302);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1303] = new StringBuilder(MyDialogues.Dlg_JunkyardReturn_1303);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1304] = new StringBuilder(MyDialogues.Dlg_JunkyardReturn_1304);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1305] = new StringBuilder(MyDialogues.Dlg_JunkyardReturn_1305);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1306] = new StringBuilder(MyDialogues.Dlg_JunkyardReturn_1306);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1307] = new StringBuilder(MyDialogues.Dlg_JunkyardReturn_1307);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1308] = new StringBuilder(MyDialogues.Dlg_JunkyardReturn_1308);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1309] = new StringBuilder(MyDialogues.Dlg_JunkyardReturn_1309);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1310] = new StringBuilder(MyDialogues.Dlg_JunkyardReturn_1310);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1400] = new StringBuilder(MyDialogues.Dlg_JunkyardReturn_1400);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1401] = new StringBuilder(MyDialogues.Dlg_JunkyardReturn_1401);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1402] = new StringBuilder(MyDialogues.Dlg_JunkyardReturn_1402);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1403] = new StringBuilder(MyDialogues.Dlg_JunkyardReturn_1403);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1404] = new StringBuilder(MyDialogues.Dlg_JunkyardReturn_1404);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1405] = new StringBuilder(MyDialogues.Dlg_JunkyardReturn_1405);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1406] = new StringBuilder(MyDialogues.Dlg_JunkyardReturn_1406);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1407] = new StringBuilder(MyDialogues.Dlg_JunkyardReturn_1407);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1408] = new StringBuilder(MyDialogues.Dlg_JunkyardReturn_1408);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1409] = new StringBuilder(MyDialogues.Dlg_JunkyardReturn_1409);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1410] = new StringBuilder(MyDialogues.Dlg_JunkyardReturn_1410);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1411] = new StringBuilder(MyDialogues.Dlg_JunkyardReturn_1411);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1412] = new StringBuilder(MyDialogues.Dlg_JunkyardReturn_1412);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1413] = new StringBuilder(MyDialogues.Dlg_JunkyardReturn_1413);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1414] = new StringBuilder(MyDialogues.Dlg_JunkyardReturn_1414);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1415] = new StringBuilder(MyDialogues.Dlg_JunkyardReturn_1415);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1416] = new StringBuilder(MyDialogues.Dlg_JunkyardReturn_1416);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1417] = new StringBuilder(MyDialogues.Dlg_JunkyardReturn_1417);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1418] = new StringBuilder(MyDialogues.Dlg_JunkyardReturn_1418);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1419] = new StringBuilder(MyDialogues.Dlg_JunkyardReturn_1419);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1420] = new StringBuilder(MyDialogues.Dlg_JunkyardReturn_1420);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1421] = new StringBuilder(MyDialogues.Dlg_JunkyardReturn_1421);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1422] = new StringBuilder(MyDialogues.Dlg_JunkyardReturn_1422);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1423] = new StringBuilder(MyDialogues.Dlg_JunkyardReturn_1423);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1424] = new StringBuilder(MyDialogues.Dlg_JunkyardReturn_1424);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1425] = new StringBuilder(MyDialogues.Dlg_JunkyardReturn_1425);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1426] = new StringBuilder(MyDialogues.Dlg_JunkyardReturn_1426);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1427] = new StringBuilder(MyDialogues.Dlg_JunkyardReturn_1427);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1428] = new StringBuilder(MyDialogues.Dlg_JunkyardReturn_1428);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1429] = new StringBuilder(MyDialogues.Dlg_JunkyardReturn_1429);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardReturn_1430] = new StringBuilder(MyDialogues.Dlg_JunkyardReturn_1430);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_01_01] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_01_01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_01_02] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_01_02);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_01_03] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_01_03);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_01_04] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_01_04);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_01_05] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_01_05);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_01_06] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_01_06);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_02_01] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_02_01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_02_02] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_02_02);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_02_03] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_02_03);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_03_01] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_03_01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_03_02] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_03_02);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_03_03] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_03_03);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_03_04] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_03_04);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_03_05] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_03_05);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_03_06] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_03_06);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_03_07] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_03_07);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_03_08] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_03_08);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_03_09] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_03_09);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_03_10] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_03_10);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_03_11] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_03_11);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_03_12] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_03_12);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_03_13] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_03_13);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_03_14] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_03_14);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_03_15] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_03_15);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_03_16] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_03_16);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_03_17] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_03_17);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_04_01] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_04_01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_04_02] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_04_02);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_04_03] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_04_03);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_04_04] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_04_04);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_04_05] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_04_05);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_04_06] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_04_06);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_05_01] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_05_01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_05_02] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_05_02);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_05_03] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_05_03);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_05_04] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_05_04);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_05_05] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_05_05);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_05_06] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_05_06);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_05_07] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_05_07);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_05_08] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_05_08);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_05_09] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_05_09);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_06_01] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_06_01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_06_02] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_06_02);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_06_03] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_06_03);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_06_04] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_06_04);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_06_05] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_06_05);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_06_06] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_06_06);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_06_07] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_06_07);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_06_08] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_06_08);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_06_09] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_06_09);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_06_10] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_06_10);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_06_11] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_06_11);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_06_12] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_06_12);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_06_13] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_06_13);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_07_01] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_07_01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_07_02] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_07_02);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_01] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_08_01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_02] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_08_02);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_03] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_08_03);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_04] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_08_04);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_05] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_08_05);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_06] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_08_06);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_07] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_08_07);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_08] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_08_08);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_09] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_08_09);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_10] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_08_10);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_11] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_08_11);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_12] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_08_12);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_13] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_08_13);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_14] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_08_14);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_15] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_08_15);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_16] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_08_16);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_17] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_08_17);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_18] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_08_18);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_19] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_08_19);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_20] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_08_20);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_21] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_08_21);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_22] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_08_22);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_23] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_08_23);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_24] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_08_24);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_25] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_08_25);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_26] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_08_26);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_27] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_08_27);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_28] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_08_28);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_29] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_08_29);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_30] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_08_30);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_31] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_08_31);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_32] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_08_32);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_33] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_08_33);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_34] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_08_34);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_35] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_08_35);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_36] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_08_36);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_37] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_08_37);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_38] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_08_38);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_39] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_08_39);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_40] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_08_40);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_41] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_08_41);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_42] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_08_42);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_43] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_08_43);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_44] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_08_44);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_45] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_08_45);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_46] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_08_46);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_47] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_08_47);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_48] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_08_48);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_08_49] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_08_49);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_09_01] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_09_01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_09_02] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_09_02);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_09_03] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_09_03);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_09_04] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_09_04);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_09_05] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_09_05);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_09_06] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_09_06);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_09_07] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_09_07);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_09_08] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_09_08);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_09_09] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_09_09);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_09_10] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_09_10);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_10_01] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_10_01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_10_02] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_10_02);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_10_03] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_10_03);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_10_04] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_10_04);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_10_05] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_10_05);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_10_06] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_10_06);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_10_07] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_10_07);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_10_08] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_10_08);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_10_09] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_10_09);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_10_10] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_10_10);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_10_11] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_10_11);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_10_12] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_10_12);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_11_01] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_11_01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_11_02] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_11_02);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_11_03] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_11_03);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_12_01] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_12_01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_12_02] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_12_02);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_12_03] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_12_03);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_12_04] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_12_04);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_12_05] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_12_05);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_12_06] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_12_06);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_12_07] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_12_07);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_12_08] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_12_08);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_12_09] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_12_09);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_12_10] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_12_10);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_12_11] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_12_11);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_12_12] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_12_12);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_12_13] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_12_13);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_13_01] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_13_01);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_13_02] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_13_02);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_13_03] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_13_03);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_13_04] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_13_04);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardConvince_13_05] = new StringBuilder(MyDialogues.Dlg_JunkyardConvince_13_05);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_0100] = new StringBuilder(MyDialogues.Dlg_LastHope_0100);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_0101] = new StringBuilder(MyDialogues.Dlg_LastHope_0101);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_0102] = new StringBuilder(MyDialogues.Dlg_LastHope_0102);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_0103] = new StringBuilder(MyDialogues.Dlg_LastHope_0103);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_0200] = new StringBuilder(MyDialogues.Dlg_LastHope_0200);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_0201] = new StringBuilder(MyDialogues.Dlg_LastHope_0201);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_0207] = new StringBuilder(MyDialogues.Dlg_LastHope_0207);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_0208] = new StringBuilder(MyDialogues.Dlg_LastHope_0208);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_0209] = new StringBuilder(MyDialogues.Dlg_LastHope_0209);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_0210] = new StringBuilder(MyDialogues.Dlg_LastHope_0210);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_0300] = new StringBuilder(MyDialogues.Dlg_LastHope_0300);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_0301] = new StringBuilder(MyDialogues.Dlg_LastHope_0301);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_0302] = new StringBuilder(MyDialogues.Dlg_LastHope_0302);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_0303] = new StringBuilder(MyDialogues.Dlg_LastHope_0303);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_0304] = new StringBuilder(MyDialogues.Dlg_LastHope_0304);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_0305] = new StringBuilder(MyDialogues.Dlg_LastHope_0305);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_0400] = new StringBuilder(MyDialogues.Dlg_LastHope_0400);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_0402] = new StringBuilder(MyDialogues.Dlg_LastHope_0402);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_0403] = new StringBuilder(MyDialogues.Dlg_LastHope_0403);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_0404] = new StringBuilder(MyDialogues.Dlg_LastHope_0404);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_0405] = new StringBuilder(MyDialogues.Dlg_LastHope_0405);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_0408] = new StringBuilder(MyDialogues.Dlg_LastHope_0408);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_0500] = new StringBuilder(MyDialogues.Dlg_LastHope_0500);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_0501] = new StringBuilder(MyDialogues.Dlg_LastHope_0501);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_0503] = new StringBuilder(MyDialogues.Dlg_LastHope_0503);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_0600] = new StringBuilder(MyDialogues.Dlg_LastHope_0600);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_0601] = new StringBuilder(MyDialogues.Dlg_LastHope_0601);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_0602] = new StringBuilder(MyDialogues.Dlg_LastHope_0602);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_0603] = new StringBuilder(MyDialogues.Dlg_LastHope_0603);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_0604] = new StringBuilder(MyDialogues.Dlg_LastHope_0604);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_0605] = new StringBuilder(MyDialogues.Dlg_LastHope_0605);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_0606] = new StringBuilder(MyDialogues.Dlg_LastHope_0606);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_0607] = new StringBuilder(MyDialogues.Dlg_LastHope_0607);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_0608] = new StringBuilder(MyDialogues.Dlg_LastHope_0608);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_0609] = new StringBuilder(MyDialogues.Dlg_LastHope_0609);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_0700] = new StringBuilder(MyDialogues.Dlg_LastHope_0700);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_0701] = new StringBuilder(MyDialogues.Dlg_LastHope_0701);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_0702] = new StringBuilder(MyDialogues.Dlg_LastHope_0702);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_0703] = new StringBuilder(MyDialogues.Dlg_LastHope_0703);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_0704] = new StringBuilder(MyDialogues.Dlg_LastHope_0704);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_0713] = new StringBuilder(MyDialogues.Dlg_LastHope_0713);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_0714] = new StringBuilder(MyDialogues.Dlg_LastHope_0714);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_0800] = new StringBuilder(MyDialogues.Dlg_LastHope_0800);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_0801] = new StringBuilder(MyDialogues.Dlg_LastHope_0801);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_0900] = new StringBuilder(MyDialogues.Dlg_LastHope_0900);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_0901] = new StringBuilder(MyDialogues.Dlg_LastHope_0901);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_0902] = new StringBuilder(MyDialogues.Dlg_LastHope_0902);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_0909] = new StringBuilder(MyDialogues.Dlg_LastHope_0909);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_0910] = new StringBuilder(MyDialogues.Dlg_LastHope_0910);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_1000] = new StringBuilder(MyDialogues.Dlg_LastHope_1000);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_1001] = new StringBuilder(MyDialogues.Dlg_LastHope_1001);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_1002] = new StringBuilder(MyDialogues.Dlg_LastHope_1002);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_1007] = new StringBuilder(MyDialogues.Dlg_LastHope_1007);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_1100] = new StringBuilder(MyDialogues.Dlg_LastHope_1100);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_1200] = new StringBuilder(MyDialogues.Dlg_LastHope_1200);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_1300] = new StringBuilder(MyDialogues.Dlg_LastHope_1300);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_1301] = new StringBuilder(MyDialogues.Dlg_LastHope_1301);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_1302] = new StringBuilder(MyDialogues.Dlg_LastHope_1302);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_1400] = new StringBuilder(MyDialogues.Dlg_LastHope_1400);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_1401] = new StringBuilder(MyDialogues.Dlg_LastHope_1401);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_1402] = new StringBuilder(MyDialogues.Dlg_LastHope_1402);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_1403] = new StringBuilder(MyDialogues.Dlg_LastHope_1403);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_1500] = new StringBuilder(MyDialogues.Dlg_LastHope_1500);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_1600] = new StringBuilder(MyDialogues.Dlg_LastHope_1600);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_1700] = new StringBuilder(MyDialogues.Dlg_LastHope_1700);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_1701] = new StringBuilder(MyDialogues.Dlg_LastHope_1701);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_1702] = new StringBuilder(MyDialogues.Dlg_LastHope_1702);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_1800] = new StringBuilder(MyDialogues.Dlg_LastHope_1800);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_1900] = new StringBuilder(MyDialogues.Dlg_LastHope_1900);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_1901] = new StringBuilder(MyDialogues.Dlg_LastHope_1901);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_1902] = new StringBuilder(MyDialogues.Dlg_LastHope_1902);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_1904] = new StringBuilder(MyDialogues.Dlg_LastHope_1904);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_1907] = new StringBuilder(MyDialogues.Dlg_LastHope_1907);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_1908] = new StringBuilder(MyDialogues.Dlg_LastHope_1908);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_2000] = new StringBuilder(MyDialogues.Dlg_LastHope_2000);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_2001] = new StringBuilder(MyDialogues.Dlg_LastHope_2001);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_2005] = new StringBuilder(MyDialogues.Dlg_LastHope_2005);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_2006] = new StringBuilder(MyDialogues.Dlg_LastHope_2006);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_2007] = new StringBuilder(MyDialogues.Dlg_LastHope_2007);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_2008] = new StringBuilder(MyDialogues.Dlg_LastHope_2008);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_2010] = new StringBuilder(MyDialogues.Dlg_LastHope_2010);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_2011] = new StringBuilder(MyDialogues.Dlg_LastHope_2011);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_2012] = new StringBuilder(MyDialogues.Dlg_LastHope_2012);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_2013] = new StringBuilder(MyDialogues.Dlg_LastHope_2013);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_2014] = new StringBuilder(MyDialogues.Dlg_LastHope_2014);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_2015] = new StringBuilder(MyDialogues.Dlg_LastHope_2015);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_2016] = new StringBuilder(MyDialogues.Dlg_LastHope_2016);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_2017] = new StringBuilder(MyDialogues.Dlg_LastHope_2017);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_2018] = new StringBuilder(MyDialogues.Dlg_LastHope_2018);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_2019] = new StringBuilder(MyDialogues.Dlg_LastHope_2019);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_2020] = new StringBuilder(MyDialogues.Dlg_LastHope_2020);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_2021] = new StringBuilder(MyDialogues.Dlg_LastHope_2021);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_2022] = new StringBuilder(MyDialogues.Dlg_LastHope_2022);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_LastHope_2023] = new StringBuilder(MyDialogues.Dlg_LastHope_2023);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_0602] = new StringBuilder(MyDialogues.Dlg_Rime_0602);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_0602a] = new StringBuilder(MyDialogues.Dlg_Rime_0602a);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_0603] = new StringBuilder(MyDialogues.Dlg_Rime_0603);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_0702] = new StringBuilder(MyDialogues.Dlg_Rime_0702);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_0703] = new StringBuilder(MyDialogues.Dlg_Rime_0703);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_0703a] = new StringBuilder(MyDialogues.Dlg_Rime_0703a);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_0704] = new StringBuilder(MyDialogues.Dlg_Rime_0704);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_0705] = new StringBuilder(MyDialogues.Dlg_Rime_0705);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_0802] = new StringBuilder(MyDialogues.Dlg_Rime_0802);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_0803] = new StringBuilder(MyDialogues.Dlg_Rime_0803);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_0805] = new StringBuilder(MyDialogues.Dlg_Rime_0805);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_1002] = new StringBuilder(MyDialogues.Dlg_Rime_1002);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_1003] = new StringBuilder(MyDialogues.Dlg_Rime_1003);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_1004] = new StringBuilder(MyDialogues.Dlg_Rime_1004);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_1005] = new StringBuilder(MyDialogues.Dlg_Rime_1005);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_1101a] = new StringBuilder(MyDialogues.Dlg_Rime_1101a);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_1102] = new StringBuilder(MyDialogues.Dlg_Rime_1102);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_1202] = new StringBuilder(MyDialogues.Dlg_Rime_1202);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_1301] = new StringBuilder(MyDialogues.Dlg_Rime_1301);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_1302] = new StringBuilder(MyDialogues.Dlg_Rime_1302);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_1303] = new StringBuilder(MyDialogues.Dlg_Rime_1303);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_1401] = new StringBuilder(MyDialogues.Dlg_Rime_1401);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_1402] = new StringBuilder(MyDialogues.Dlg_Rime_1402);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_1403] = new StringBuilder(MyDialogues.Dlg_Rime_1403);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_1404] = new StringBuilder(MyDialogues.Dlg_Rime_1404);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_1501] = new StringBuilder(MyDialogues.Dlg_Rime_1501);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_1502] = new StringBuilder(MyDialogues.Dlg_Rime_1502);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_1503] = new StringBuilder(MyDialogues.Dlg_Rime_1503);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_1504] = new StringBuilder(MyDialogues.Dlg_Rime_1504);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_1505] = new StringBuilder(MyDialogues.Dlg_Rime_1505);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_1506] = new StringBuilder(MyDialogues.Dlg_Rime_1506);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_1601] = new StringBuilder(MyDialogues.Dlg_Rime_1601);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_1602] = new StringBuilder(MyDialogues.Dlg_Rime_1602);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_1603] = new StringBuilder(MyDialogues.Dlg_Rime_1603);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_1604] = new StringBuilder(MyDialogues.Dlg_Rime_1604);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_1701] = new StringBuilder(MyDialogues.Dlg_Rime_1701);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_1702] = new StringBuilder(MyDialogues.Dlg_Rime_1702);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_1801] = new StringBuilder(MyDialogues.Dlg_Rime_1801);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_1802] = new StringBuilder(MyDialogues.Dlg_Rime_1802);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_1803] = new StringBuilder(MyDialogues.Dlg_Rime_1803);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_1804] = new StringBuilder(MyDialogues.Dlg_Rime_1804);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_1805] = new StringBuilder(MyDialogues.Dlg_Rime_1805);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_1806] = new StringBuilder(MyDialogues.Dlg_Rime_1806);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_1807] = new StringBuilder(MyDialogues.Dlg_Rime_1807);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_1901] = new StringBuilder(MyDialogues.Dlg_Rime_1901);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_1902] = new StringBuilder(MyDialogues.Dlg_Rime_1902);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_1902a] = new StringBuilder(MyDialogues.Dlg_Rime_1902a);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_1903] = new StringBuilder(MyDialogues.Dlg_Rime_1903);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_1904] = new StringBuilder(MyDialogues.Dlg_Rime_1904);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_1905] = new StringBuilder(MyDialogues.Dlg_Rime_1905);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_1906] = new StringBuilder(MyDialogues.Dlg_Rime_1906);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_1907] = new StringBuilder(MyDialogues.Dlg_Rime_1907);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_1908] = new StringBuilder(MyDialogues.Dlg_Rime_1908);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_1909] = new StringBuilder(MyDialogues.Dlg_Rime_1909);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_1911] = new StringBuilder(MyDialogues.Dlg_Rime_1911);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_1912] = new StringBuilder(MyDialogues.Dlg_Rime_1912);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_1914] = new StringBuilder(MyDialogues.Dlg_Rime_1914);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_1915] = new StringBuilder(MyDialogues.Dlg_Rime_1915);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_1916] = new StringBuilder(MyDialogues.Dlg_Rime_1916);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_1917] = new StringBuilder(MyDialogues.Dlg_Rime_1917);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_1918] = new StringBuilder(MyDialogues.Dlg_Rime_1918);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_1919] = new StringBuilder(MyDialogues.Dlg_Rime_1919);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_1920] = new StringBuilder(MyDialogues.Dlg_Rime_1920);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_1921] = new StringBuilder(MyDialogues.Dlg_Rime_1921);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_1922] = new StringBuilder(MyDialogues.Dlg_Rime_1922);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_1923] = new StringBuilder(MyDialogues.Dlg_Rime_1923);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_1924] = new StringBuilder(MyDialogues.Dlg_Rime_1924);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_1925] = new StringBuilder(MyDialogues.Dlg_Rime_1925);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_1926] = new StringBuilder(MyDialogues.Dlg_Rime_1926);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_1927] = new StringBuilder(MyDialogues.Dlg_Rime_1927);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_1927a] = new StringBuilder(MyDialogues.Dlg_Rime_1927a);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_1928] = new StringBuilder(MyDialogues.Dlg_Rime_1928);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_1929] = new StringBuilder(MyDialogues.Dlg_Rime_1929);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_1930] = new StringBuilder(MyDialogues.Dlg_Rime_1930);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_1932] = new StringBuilder(MyDialogues.Dlg_Rime_1932);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_1933] = new StringBuilder(MyDialogues.Dlg_Rime_1933);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_1934] = new StringBuilder(MyDialogues.Dlg_Rime_1934);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_1935] = new StringBuilder(MyDialogues.Dlg_Rime_1935);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_2101] = new StringBuilder(MyDialogues.Dlg_Rime_2101);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Rime_2201] = new StringBuilder(MyDialogues.Dlg_Rime_2201);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0101] = new StringBuilder(MyDialogues.Dlg_RussianWarehouse_0101);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0102] = new StringBuilder(MyDialogues.Dlg_RussianWarehouse_0102);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0103] = new StringBuilder(MyDialogues.Dlg_RussianWarehouse_0103);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0104] = new StringBuilder(MyDialogues.Dlg_RussianWarehouse_0104);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0105] = new StringBuilder(MyDialogues.Dlg_RussianWarehouse_0105);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0106] = new StringBuilder(MyDialogues.Dlg_RussianWarehouse_0106);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0107] = new StringBuilder(MyDialogues.Dlg_RussianWarehouse_0107);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0201] = new StringBuilder(MyDialogues.Dlg_RussianWarehouse_0201);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0202] = new StringBuilder(MyDialogues.Dlg_RussianWarehouse_0202);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0203] = new StringBuilder(MyDialogues.Dlg_RussianWarehouse_0203);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0204] = new StringBuilder(MyDialogues.Dlg_RussianWarehouse_0204);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0205] = new StringBuilder(MyDialogues.Dlg_RussianWarehouse_0205);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0206] = new StringBuilder(MyDialogues.Dlg_RussianWarehouse_0206);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0207] = new StringBuilder(MyDialogues.Dlg_RussianWarehouse_0207);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0208] = new StringBuilder(MyDialogues.Dlg_RussianWarehouse_0208);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0209] = new StringBuilder(MyDialogues.Dlg_RussianWarehouse_0209);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0301] = new StringBuilder(MyDialogues.Dlg_RussianWarehouse_0301);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0302] = new StringBuilder(MyDialogues.Dlg_RussianWarehouse_0302);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0303] = new StringBuilder(MyDialogues.Dlg_RussianWarehouse_0303);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0304] = new StringBuilder(MyDialogues.Dlg_RussianWarehouse_0304);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0305] = new StringBuilder(MyDialogues.Dlg_RussianWarehouse_0305);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0401] = new StringBuilder(MyDialogues.Dlg_RussianWarehouse_0401);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0501] = new StringBuilder(MyDialogues.Dlg_RussianWarehouse_0501);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0502] = new StringBuilder(MyDialogues.Dlg_RussianWarehouse_0502);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0601] = new StringBuilder(MyDialogues.Dlg_RussianWarehouse_0601);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0602] = new StringBuilder(MyDialogues.Dlg_RussianWarehouse_0602);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0603] = new StringBuilder(MyDialogues.Dlg_RussianWarehouse_0603);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0604] = new StringBuilder(MyDialogues.Dlg_RussianWarehouse_0604);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0605] = new StringBuilder(MyDialogues.Dlg_RussianWarehouse_0605);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0701] = new StringBuilder(MyDialogues.Dlg_RussianWarehouse_0701);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0702] = new StringBuilder(MyDialogues.Dlg_RussianWarehouse_0702);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0703] = new StringBuilder(MyDialogues.Dlg_RussianWarehouse_0703);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0704] = new StringBuilder(MyDialogues.Dlg_RussianWarehouse_0704);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0801] = new StringBuilder(MyDialogues.Dlg_RussianWarehouse_0801);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0802] = new StringBuilder(MyDialogues.Dlg_RussianWarehouse_0802);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0803] = new StringBuilder(MyDialogues.Dlg_RussianWarehouse_0803);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0804] = new StringBuilder(MyDialogues.Dlg_RussianWarehouse_0804);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0805] = new StringBuilder(MyDialogues.Dlg_RussianWarehouse_0805);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0806] = new StringBuilder(MyDialogues.Dlg_RussianWarehouse_0806);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0807] = new StringBuilder(MyDialogues.Dlg_RussianWarehouse_0807);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0808] = new StringBuilder(MyDialogues.Dlg_RussianWarehouse_0808);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0809] = new StringBuilder(MyDialogues.Dlg_RussianWarehouse_0809);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0810] = new StringBuilder(MyDialogues.Dlg_RussianWarehouse_0810);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0811] = new StringBuilder(MyDialogues.Dlg_RussianWarehouse_0811);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0812] = new StringBuilder(MyDialogues.Dlg_RussianWarehouse_0812);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0813] = new StringBuilder(MyDialogues.Dlg_RussianWarehouse_0813);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0901] = new StringBuilder(MyDialogues.Dlg_RussianWarehouse_0901);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0902] = new StringBuilder(MyDialogues.Dlg_RussianWarehouse_0902);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianWarehouse_0903] = new StringBuilder(MyDialogues.Dlg_RussianWarehouse_0903);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianWarehouse_1001] = new StringBuilder(MyDialogues.Dlg_RussianWarehouse_1001);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianWarehouse_1002] = new StringBuilder(MyDialogues.Dlg_RussianWarehouse_1002);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianWarehouse_1003] = new StringBuilder(MyDialogues.Dlg_RussianWarehouse_1003);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianWarehouse_1004] = new StringBuilder(MyDialogues.Dlg_RussianWarehouse_1004);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianWarehouse_1101] = new StringBuilder(MyDialogues.Dlg_RussianWarehouse_1101);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianWarehouse_1102] = new StringBuilder(MyDialogues.Dlg_RussianWarehouse_1102);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianWarehouse_1103] = new StringBuilder(MyDialogues.Dlg_RussianWarehouse_1103);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianWarehouse_1104] = new StringBuilder(MyDialogues.Dlg_RussianWarehouse_1104);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianWarehouse_1105] = new StringBuilder(MyDialogues.Dlg_RussianWarehouse_1105);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianWarehouse_1106] = new StringBuilder(MyDialogues.Dlg_RussianWarehouse_1106);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianWarehouse_1107] = new StringBuilder(MyDialogues.Dlg_RussianWarehouse_1107);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianWarehouse_1108] = new StringBuilder(MyDialogues.Dlg_RussianWarehouse_1108);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianWarehouse_1109] = new StringBuilder(MyDialogues.Dlg_RussianWarehouse_1109);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_RussianWarehouse_1110] = new StringBuilder(MyDialogues.Dlg_RussianWarehouse_1110);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EacTransmitter_0101] = new StringBuilder(MyDialogues.Dlg_EacTransmitter_0101);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0100] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_0100);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0101] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_0101);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0102] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_0102);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0103] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_0103);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0104] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_0104);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0105] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_0105);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0106] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_0106);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0200] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_0200);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0202] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_0202);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0205] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_0205);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0206] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_0206);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0210] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_0210);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0213] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_0213);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0214] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_0214);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0217] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_0217);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0218] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_0218);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0223] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_0223);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0300] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_0300);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0301] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_0301);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0302] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_0302);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0303] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_0303);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0304] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_0304);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0406] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_0406);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0407] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_0407);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0412] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_0412);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0416] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_0416);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0418] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_0418);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0419] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_0419);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0420] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_0420);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0421] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_0421);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0422] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_0422);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0424] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_0424);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0428] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_0428);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0430] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_0430);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0431] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_0431);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0700] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_0700);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0701] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_0701);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0702] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_0702);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0703] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_0703);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0704] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_0704);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0705] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_0705);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0706] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_0706);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0707] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_0707);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0800] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_0800);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0801] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_0801);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0802] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_0802);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0900] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_0900);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0901] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_0901);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1000] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_1000);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1001] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_1001);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1002] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_1002);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1003] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_1003);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1100] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_1100);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1101] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_1101);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1102] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_1102);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1103] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_1103);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1104] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_1104);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1105] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_1105);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1200] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_1200);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1300] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_1300);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1301] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_1301);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1302] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_1302);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1303] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_1303);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1304] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_1304);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1400] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_1400);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1401] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_1401);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1501] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_1501);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1502] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_1502);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1600] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_1600);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1602] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_1602);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1603] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_1603);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1604] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_1604);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1605] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_1605);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1606] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_1606);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1607] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_1607);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1608] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_1608);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1609] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_1609);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1610] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_1610);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1611] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_1611);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1612] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_1612);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1613] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_1613);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1614] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_1614);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1700] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_1700);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1701] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_1701);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1703] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_1703);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1704] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_1704);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1705] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_1705);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1706] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_1706);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1707] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_1707);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_1708] = new StringBuilder(MyDialogues.Dlg_JunkyardEacAmbush_1708);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EacTransmitter_0102] = new StringBuilder(MyDialogues.Dlg_EacTransmitter_0102);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EacTransmitter_0103] = new StringBuilder(MyDialogues.Dlg_EacTransmitter_0103);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EacTransmitter_0104] = new StringBuilder(MyDialogues.Dlg_EacTransmitter_0104);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EacTransmitter_0105] = new StringBuilder(MyDialogues.Dlg_EacTransmitter_0105);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EacTransmitter_0106] = new StringBuilder(MyDialogues.Dlg_EacTransmitter_0106);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EacTransmitter_0107] = new StringBuilder(MyDialogues.Dlg_EacTransmitter_0107);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EacTransmitter_0108] = new StringBuilder(MyDialogues.Dlg_EacTransmitter_0108);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EacTransmitter_0109] = new StringBuilder(MyDialogues.Dlg_EacTransmitter_0109);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EacTransmitter_0110] = new StringBuilder(MyDialogues.Dlg_EacTransmitter_0110);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EacTransmitter_0111] = new StringBuilder(MyDialogues.Dlg_EacTransmitter_0111);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EacTransmitter_0112] = new StringBuilder(MyDialogues.Dlg_EacTransmitter_0112);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EacTransmitter_0201] = new StringBuilder(MyDialogues.Dlg_EacTransmitter_0201);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EacTransmitter_0202] = new StringBuilder(MyDialogues.Dlg_EacTransmitter_0202);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EacTransmitter_0203] = new StringBuilder(MyDialogues.Dlg_EacTransmitter_0203);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EacTransmitter_0301] = new StringBuilder(MyDialogues.Dlg_EacTransmitter_0301);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EacTransmitter_0302] = new StringBuilder(MyDialogues.Dlg_EacTransmitter_0302);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EacTransmitter_0303] = new StringBuilder(MyDialogues.Dlg_EacTransmitter_0303);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EacTransmitter_0304] = new StringBuilder(MyDialogues.Dlg_EacTransmitter_0304);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EacTransmitter_0305] = new StringBuilder(MyDialogues.Dlg_EacTransmitter_0305);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EacTransmitter_0401] = new StringBuilder(MyDialogues.Dlg_EacTransmitter_0401);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EacTransmitter_0402] = new StringBuilder(MyDialogues.Dlg_EacTransmitter_0402);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EacTransmitter_0403] = new StringBuilder(MyDialogues.Dlg_EacTransmitter_0403);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EacTransmitter_0406] = new StringBuilder(MyDialogues.Dlg_EacTransmitter_0406);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EacTransmitter_0407] = new StringBuilder(MyDialogues.Dlg_EacTransmitter_0407);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EacTransmitter_0408] = new StringBuilder(MyDialogues.Dlg_EacTransmitter_0408);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EacTransmitter_0501] = new StringBuilder(MyDialogues.Dlg_EacTransmitter_0501);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EacTransmitter_0502] = new StringBuilder(MyDialogues.Dlg_EacTransmitter_0502);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EacTransmitter_0503] = new StringBuilder(MyDialogues.Dlg_EacTransmitter_0503);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EacTransmitter_0504] = new StringBuilder(MyDialogues.Dlg_EacTransmitter_0504);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EacTransmitter_0505] = new StringBuilder(MyDialogues.Dlg_EacTransmitter_0505);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EacTransmitter_0506] = new StringBuilder(MyDialogues.Dlg_EacTransmitter_0506);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EacTransmitter_0601] = new StringBuilder(MyDialogues.Dlg_EacTransmitter_0601);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EacTransmitter_0602] = new StringBuilder(MyDialogues.Dlg_EacTransmitter_0602);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EacTransmitter_0603] = new StringBuilder(MyDialogues.Dlg_EacTransmitter_0603);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EacTransmitter_0604] = new StringBuilder(MyDialogues.Dlg_EacTransmitter_0604);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EacTransmitter_0605] = new StringBuilder(MyDialogues.Dlg_EacTransmitter_0605);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EacTransmitter_0701] = new StringBuilder(MyDialogues.Dlg_EacTransmitter_0701);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EacTransmitter_0702] = new StringBuilder(MyDialogues.Dlg_EacTransmitter_0702);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EacTransmitter_0703] = new StringBuilder(MyDialogues.Dlg_EacTransmitter_0703);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EacTransmitter_0801] = new StringBuilder(MyDialogues.Dlg_EacTransmitter_0801);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EacTransmitter_0802] = new StringBuilder(MyDialogues.Dlg_EacTransmitter_0802);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EacTransmitter_0901] = new StringBuilder(MyDialogues.Dlg_EacTransmitter_0901);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EacTransmitter_0902] = new StringBuilder(MyDialogues.Dlg_EacTransmitter_0902);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EacTransmitter_1001] = new StringBuilder(MyDialogues.Dlg_EacTransmitter_1001);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EacTransmitter_1002] = new StringBuilder(MyDialogues.Dlg_EacTransmitter_1002);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EacTransmitter_1003] = new StringBuilder(MyDialogues.Dlg_EacTransmitter_1003);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EacTransmitter_1004] = new StringBuilder(MyDialogues.Dlg_EacTransmitter_1004);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EacTransmitter_1005] = new StringBuilder(MyDialogues.Dlg_EacTransmitter_1005);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EacTransmitter_1101] = new StringBuilder(MyDialogues.Dlg_EacTransmitter_1101);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EacTransmitter_1102] = new StringBuilder(MyDialogues.Dlg_EacTransmitter_1102);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EacTransmitter_1201] = new StringBuilder(MyDialogues.Dlg_EacTransmitter_1201);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EacTransmitter_1202] = new StringBuilder(MyDialogues.Dlg_EacTransmitter_1202);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EacTransmitter_1203] = new StringBuilder(MyDialogues.Dlg_EacTransmitter_1203);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EacTransmitter_1301] = new StringBuilder(MyDialogues.Dlg_EacTransmitter_1301);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EacTransmitter_1302] = new StringBuilder(MyDialogues.Dlg_EacTransmitter_1302);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EacTransmitter_1303] = new StringBuilder(MyDialogues.Dlg_EacTransmitter_1303);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EacTransmitter_1304] = new StringBuilder(MyDialogues.Dlg_EacTransmitter_1304);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EacTransmitter_1401] = new StringBuilder(MyDialogues.Dlg_EacTransmitter_1401);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EacTransmitter_1402] = new StringBuilder(MyDialogues.Dlg_EacTransmitter_1402);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EacTransmitter_1403] = new StringBuilder(MyDialogues.Dlg_EacTransmitter_1403);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EacTransmitter_1404] = new StringBuilder(MyDialogues.Dlg_EacTransmitter_1404);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EacTransmitter_1405] = new StringBuilder(MyDialogues.Dlg_EacTransmitter_1405);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EacTransmitter_1406] = new StringBuilder(MyDialogues.Dlg_EacTransmitter_1406);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EacTransmitter_1407] = new StringBuilder(MyDialogues.Dlg_EacTransmitter_1407);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EacTransmitter_1408] = new StringBuilder(MyDialogues.Dlg_EacTransmitter_1408);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EacTransmitter_1409] = new StringBuilder(MyDialogues.Dlg_EacTransmitter_1409);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EacTransmitter_1410] = new StringBuilder(MyDialogues.Dlg_EacTransmitter_1410);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EacTransmitter_1411] = new StringBuilder(MyDialogues.Dlg_EacTransmitter_1411);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EacTransmitter_1412] = new StringBuilder(MyDialogues.Dlg_EacTransmitter_1412);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EacTransmitter_1413] = new StringBuilder(MyDialogues.Dlg_EacTransmitter_1413);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagA_1000] = new StringBuilder(MyDialogues.Dlg_ReichstagA_1000);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagA_1001] = new StringBuilder(MyDialogues.Dlg_ReichstagA_1001);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagA_1002] = new StringBuilder(MyDialogues.Dlg_ReichstagA_1002);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagA_1003] = new StringBuilder(MyDialogues.Dlg_ReichstagA_1003);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagA_1004] = new StringBuilder(MyDialogues.Dlg_ReichstagA_1004);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagA_1005] = new StringBuilder(MyDialogues.Dlg_ReichstagA_1005);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagA_1006] = new StringBuilder(MyDialogues.Dlg_ReichstagA_1006);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagA_1007] = new StringBuilder(MyDialogues.Dlg_ReichstagA_1007);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagA_1008] = new StringBuilder(MyDialogues.Dlg_ReichstagA_1008);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagA_1009] = new StringBuilder(MyDialogues.Dlg_ReichstagA_1009);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagA_1012] = new StringBuilder(MyDialogues.Dlg_ReichstagA_1012);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagA_1013] = new StringBuilder(MyDialogues.Dlg_ReichstagA_1013);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagA_1014] = new StringBuilder(MyDialogues.Dlg_ReichstagA_1014);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagA_1015] = new StringBuilder(MyDialogues.Dlg_ReichstagA_1015);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagA_1016] = new StringBuilder(MyDialogues.Dlg_ReichstagA_1016);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagA_1017] = new StringBuilder(MyDialogues.Dlg_ReichstagA_1017);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagA_1018] = new StringBuilder(MyDialogues.Dlg_ReichstagA_1018);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagA_1019] = new StringBuilder(MyDialogues.Dlg_ReichstagA_1019);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagA_1020] = new StringBuilder(MyDialogues.Dlg_ReichstagA_1020);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagA_1021] = new StringBuilder(MyDialogues.Dlg_ReichstagA_1021);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagA_1022] = new StringBuilder(MyDialogues.Dlg_ReichstagA_1022);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagA_1023] = new StringBuilder(MyDialogues.Dlg_ReichstagA_1023);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagA_1024] = new StringBuilder(MyDialogues.Dlg_ReichstagA_1024);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagA_1025] = new StringBuilder(MyDialogues.Dlg_ReichstagA_1025);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagA_1026] = new StringBuilder(MyDialogues.Dlg_ReichstagA_1026);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagA_1027] = new StringBuilder(MyDialogues.Dlg_ReichstagA_1027);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagA_1028] = new StringBuilder(MyDialogues.Dlg_ReichstagA_1028);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagA_1029] = new StringBuilder(MyDialogues.Dlg_ReichstagA_1029);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagA_1030] = new StringBuilder(MyDialogues.Dlg_ReichstagA_1030);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagA_1031] = new StringBuilder(MyDialogues.Dlg_ReichstagA_1031);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagA_1032] = new StringBuilder(MyDialogues.Dlg_ReichstagA_1032);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagA_1033] = new StringBuilder(MyDialogues.Dlg_ReichstagA_1033);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagA_1034] = new StringBuilder(MyDialogues.Dlg_ReichstagA_1034);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagA_1035] = new StringBuilder(MyDialogues.Dlg_ReichstagA_1035);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagA_1036] = new StringBuilder(MyDialogues.Dlg_ReichstagA_1036);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagA_1037] = new StringBuilder(MyDialogues.Dlg_ReichstagA_1037);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagA_1038] = new StringBuilder(MyDialogues.Dlg_ReichstagA_1038);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagC_1000] = new StringBuilder(MyDialogues.Dlg_ReichstagC_1000);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagC_1001] = new StringBuilder(MyDialogues.Dlg_ReichstagC_1001);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagC_1002] = new StringBuilder(MyDialogues.Dlg_ReichstagC_1002);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagC_1003] = new StringBuilder(MyDialogues.Dlg_ReichstagC_1003);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagC_1004] = new StringBuilder(MyDialogues.Dlg_ReichstagC_1004);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagC_1005] = new StringBuilder(MyDialogues.Dlg_ReichstagC_1005);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagC_1006] = new StringBuilder(MyDialogues.Dlg_ReichstagC_1006);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagC_1007] = new StringBuilder(MyDialogues.Dlg_ReichstagC_1007);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagC_1008] = new StringBuilder(MyDialogues.Dlg_ReichstagC_1008);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagC_1009] = new StringBuilder(MyDialogues.Dlg_ReichstagC_1009);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagC_1010] = new StringBuilder(MyDialogues.Dlg_ReichstagC_1010);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagC_1011] = new StringBuilder(MyDialogues.Dlg_ReichstagC_1011);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagC_1012] = new StringBuilder(MyDialogues.Dlg_ReichstagC_1012);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagC_1013] = new StringBuilder(MyDialogues.Dlg_ReichstagC_1013);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagC_1014] = new StringBuilder(MyDialogues.Dlg_ReichstagC_1014);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagC_1015] = new StringBuilder(MyDialogues.Dlg_ReichstagC_1015);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagC_1016] = new StringBuilder(MyDialogues.Dlg_ReichstagC_1016);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagC_1017] = new StringBuilder(MyDialogues.Dlg_ReichstagC_1017);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagC_1018] = new StringBuilder(MyDialogues.Dlg_ReichstagC_1018);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagC_1019] = new StringBuilder(MyDialogues.Dlg_ReichstagC_1019);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagC_1020] = new StringBuilder(MyDialogues.Dlg_ReichstagC_1020);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagC_1021] = new StringBuilder(MyDialogues.Dlg_ReichstagC_1021);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagC_1022] = new StringBuilder(MyDialogues.Dlg_ReichstagC_1022);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagC_1023] = new StringBuilder(MyDialogues.Dlg_ReichstagC_1023);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagC_1024] = new StringBuilder(MyDialogues.Dlg_ReichstagC_1024);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagC_1025] = new StringBuilder(MyDialogues.Dlg_ReichstagC_1025);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagC_1026] = new StringBuilder(MyDialogues.Dlg_ReichstagC_1026);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagC_1027] = new StringBuilder(MyDialogues.Dlg_ReichstagC_1027);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagC_1028] = new StringBuilder(MyDialogues.Dlg_ReichstagC_1028);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagC_1029] = new StringBuilder(MyDialogues.Dlg_ReichstagC_1029);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagC_1030] = new StringBuilder(MyDialogues.Dlg_ReichstagC_1030);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagC_1031] = new StringBuilder(MyDialogues.Dlg_ReichstagC_1031);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagC_1032] = new StringBuilder(MyDialogues.Dlg_ReichstagC_1032);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagC_1033] = new StringBuilder(MyDialogues.Dlg_ReichstagC_1033);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagC_1034] = new StringBuilder(MyDialogues.Dlg_ReichstagC_1034);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagC_1035] = new StringBuilder(MyDialogues.Dlg_ReichstagC_1035);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagC_1036] = new StringBuilder(MyDialogues.Dlg_ReichstagC_1036);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagC_1037] = new StringBuilder(MyDialogues.Dlg_ReichstagC_1037);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagC_1038] = new StringBuilder(MyDialogues.Dlg_ReichstagC_1038);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagC_1039] = new StringBuilder(MyDialogues.Dlg_ReichstagC_1039);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagC_1040] = new StringBuilder(MyDialogues.Dlg_ReichstagC_1040);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagC_1041] = new StringBuilder(MyDialogues.Dlg_ReichstagC_1041);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagC_1042] = new StringBuilder(MyDialogues.Dlg_ReichstagC_1042);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagC_1043] = new StringBuilder(MyDialogues.Dlg_ReichstagC_1043);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagC_1044] = new StringBuilder(MyDialogues.Dlg_ReichstagC_1044);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagC_1045] = new StringBuilder(MyDialogues.Dlg_ReichstagC_1045);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagC_1046] = new StringBuilder(MyDialogues.Dlg_ReichstagC_1046);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagC_1047] = new StringBuilder(MyDialogues.Dlg_ReichstagC_1047);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagC_1048] = new StringBuilder(MyDialogues.Dlg_ReichstagC_1048);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagC_1049] = new StringBuilder(MyDialogues.Dlg_ReichstagC_1049);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagC_1050] = new StringBuilder(MyDialogues.Dlg_ReichstagC_1050);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagC_1051] = new StringBuilder(MyDialogues.Dlg_ReichstagC_1051);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagC_1052] = new StringBuilder(MyDialogues.Dlg_ReichstagC_1052);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagC_1053] = new StringBuilder(MyDialogues.Dlg_ReichstagC_1053);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagC_1054] = new StringBuilder(MyDialogues.Dlg_ReichstagC_1054);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagC_1055] = new StringBuilder(MyDialogues.Dlg_ReichstagC_1055);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagC_1056] = new StringBuilder(MyDialogues.Dlg_ReichstagC_1056);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagC_1057] = new StringBuilder(MyDialogues.Dlg_ReichstagC_1057);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagC_1058] = new StringBuilder(MyDialogues.Dlg_ReichstagC_1058);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagC_1059] = new StringBuilder(MyDialogues.Dlg_ReichstagC_1059);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagC_1060] = new StringBuilder(MyDialogues.Dlg_ReichstagC_1060);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagC_1061] = new StringBuilder(MyDialogues.Dlg_ReichstagC_1061);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagC_1062] = new StringBuilder(MyDialogues.Dlg_ReichstagC_1062);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagC_1063] = new StringBuilder(MyDialogues.Dlg_ReichstagC_1063);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagC_1064] = new StringBuilder(MyDialogues.Dlg_ReichstagC_1064);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagC_1065] = new StringBuilder(MyDialogues.Dlg_ReichstagC_1065);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseRefinery_1000] = new StringBuilder(MyDialogues.Dlg_ChineseRefinery_1000);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseRefinery_1001] = new StringBuilder(MyDialogues.Dlg_ChineseRefinery_1001);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseRefinery_1002] = new StringBuilder(MyDialogues.Dlg_ChineseRefinery_1002);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseRefinery_1003] = new StringBuilder(MyDialogues.Dlg_ChineseRefinery_1003);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseRefinery_1004] = new StringBuilder(MyDialogues.Dlg_ChineseRefinery_1004);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseRefinery_1005] = new StringBuilder(MyDialogues.Dlg_ChineseRefinery_1005);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseRefinery_1006] = new StringBuilder(MyDialogues.Dlg_ChineseRefinery_1006);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseRefinery_1007] = new StringBuilder(MyDialogues.Dlg_ChineseRefinery_1007);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseRefinery_1008] = new StringBuilder(MyDialogues.Dlg_ChineseRefinery_1008);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseRefinery_1009] = new StringBuilder(MyDialogues.Dlg_ChineseRefinery_1009);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseRefinery_1010] = new StringBuilder(MyDialogues.Dlg_ChineseRefinery_1010);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseRefinery_1011] = new StringBuilder(MyDialogues.Dlg_ChineseRefinery_1011);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseRefinery_1012] = new StringBuilder(MyDialogues.Dlg_ChineseRefinery_1012);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseRefinery_1013] = new StringBuilder(MyDialogues.Dlg_ChineseRefinery_1013);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseRefinery_1014] = new StringBuilder(MyDialogues.Dlg_ChineseRefinery_1014);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseRefinery_1015] = new StringBuilder(MyDialogues.Dlg_ChineseRefinery_1015);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseRefinery_1016] = new StringBuilder(MyDialogues.Dlg_ChineseRefinery_1016);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseRefinery_1017] = new StringBuilder(MyDialogues.Dlg_ChineseRefinery_1017);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseRefinery_1018] = new StringBuilder(MyDialogues.Dlg_ChineseRefinery_1018);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseRefinery_1019] = new StringBuilder(MyDialogues.Dlg_ChineseRefinery_1019);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseRefinery_1020] = new StringBuilder(MyDialogues.Dlg_ChineseRefinery_1020);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseRefinery_1021] = new StringBuilder(MyDialogues.Dlg_ChineseRefinery_1021);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseRefinery_1022] = new StringBuilder(MyDialogues.Dlg_ChineseRefinery_1022);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseRefinery_1023] = new StringBuilder(MyDialogues.Dlg_ChineseRefinery_1023);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseRefinery_1024] = new StringBuilder(MyDialogues.Dlg_ChineseRefinery_1024);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseRefinery_1025] = new StringBuilder(MyDialogues.Dlg_ChineseRefinery_1025);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseRefinery_1026] = new StringBuilder(MyDialogues.Dlg_ChineseRefinery_1026);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseRefinery_1027] = new StringBuilder(MyDialogues.Dlg_ChineseRefinery_1027);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseRefinery_1028] = new StringBuilder(MyDialogues.Dlg_ChineseRefinery_1028);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseRefinery_1029] = new StringBuilder(MyDialogues.Dlg_ChineseRefinery_1029);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseRefinery_1030] = new StringBuilder(MyDialogues.Dlg_ChineseRefinery_1030);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseRefinery_1031] = new StringBuilder(MyDialogues.Dlg_ChineseRefinery_1031);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseRefinery_1032] = new StringBuilder(MyDialogues.Dlg_ChineseRefinery_1032);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseRefinery_1033] = new StringBuilder(MyDialogues.Dlg_ChineseRefinery_1033);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseRefinery_1034] = new StringBuilder(MyDialogues.Dlg_ChineseRefinery_1034);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseRefinery_1035] = new StringBuilder(MyDialogues.Dlg_ChineseRefinery_1035);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseRefinery_1036] = new StringBuilder(MyDialogues.Dlg_ChineseRefinery_1036);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseRefinery_1037] = new StringBuilder(MyDialogues.Dlg_ChineseRefinery_1037);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseRefinery_1038] = new StringBuilder(MyDialogues.Dlg_ChineseRefinery_1038);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseRefinery_1039] = new StringBuilder(MyDialogues.Dlg_ChineseRefinery_1039);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseRefinery_1040] = new StringBuilder(MyDialogues.Dlg_ChineseRefinery_1040);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ChineseRefinery_1041] = new StringBuilder(MyDialogues.Dlg_ChineseRefinery_1041);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACSurveySite_0301b] = new StringBuilder(MyDialogues.Dlg_EACSurveySite_0301b);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_0101] = new StringBuilder(MyDialogues.Dlg_PirateBase_0101);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_0102] = new StringBuilder(MyDialogues.Dlg_PirateBase_0102);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_0103] = new StringBuilder(MyDialogues.Dlg_PirateBase_0103);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_0104] = new StringBuilder(MyDialogues.Dlg_PirateBase_0104);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_0301] = new StringBuilder(MyDialogues.Dlg_PirateBase_0301);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_0302] = new StringBuilder(MyDialogues.Dlg_PirateBase_0302);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_0401] = new StringBuilder(MyDialogues.Dlg_PirateBase_0401);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_0402] = new StringBuilder(MyDialogues.Dlg_PirateBase_0402);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_0403] = new StringBuilder(MyDialogues.Dlg_PirateBase_0403);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_0404] = new StringBuilder(MyDialogues.Dlg_PirateBase_0404);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_0405] = new StringBuilder(MyDialogues.Dlg_PirateBase_0405);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_0406] = new StringBuilder(MyDialogues.Dlg_PirateBase_0406);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_0408] = new StringBuilder(MyDialogues.Dlg_PirateBase_0408);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_0409] = new StringBuilder(MyDialogues.Dlg_PirateBase_0409);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_0501] = new StringBuilder(MyDialogues.Dlg_PirateBase_0501);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_0503] = new StringBuilder(MyDialogues.Dlg_PirateBase_0503);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_0504] = new StringBuilder(MyDialogues.Dlg_PirateBase_0504);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_0505] = new StringBuilder(MyDialogues.Dlg_PirateBase_0505);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_0506] = new StringBuilder(MyDialogues.Dlg_PirateBase_0506);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_0507] = new StringBuilder(MyDialogues.Dlg_PirateBase_0507);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_0618] = new StringBuilder(MyDialogues.Dlg_PirateBase_0618);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_0624] = new StringBuilder(MyDialogues.Dlg_PirateBase_0624);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_0625] = new StringBuilder(MyDialogues.Dlg_PirateBase_0625);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_0626] = new StringBuilder(MyDialogues.Dlg_PirateBase_0626);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_0627] = new StringBuilder(MyDialogues.Dlg_PirateBase_0627);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_0628] = new StringBuilder(MyDialogues.Dlg_PirateBase_0628);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_0701] = new StringBuilder(MyDialogues.Dlg_PirateBase_0701);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_0705] = new StringBuilder(MyDialogues.Dlg_PirateBase_0705);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_0706] = new StringBuilder(MyDialogues.Dlg_PirateBase_0706);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_0707] = new StringBuilder(MyDialogues.Dlg_PirateBase_0707);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_0708] = new StringBuilder(MyDialogues.Dlg_PirateBase_0708);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_0709] = new StringBuilder(MyDialogues.Dlg_PirateBase_0709);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_0801] = new StringBuilder(MyDialogues.Dlg_PirateBase_0801);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_0901] = new StringBuilder(MyDialogues.Dlg_PirateBase_0901);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_0902] = new StringBuilder(MyDialogues.Dlg_PirateBase_0902);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_0903] = new StringBuilder(MyDialogues.Dlg_PirateBase_0903);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_0904] = new StringBuilder(MyDialogues.Dlg_PirateBase_0904);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_0905] = new StringBuilder(MyDialogues.Dlg_PirateBase_0905);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_1001] = new StringBuilder(MyDialogues.Dlg_PirateBase_1001);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_1002] = new StringBuilder(MyDialogues.Dlg_PirateBase_1002);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_1003] = new StringBuilder(MyDialogues.Dlg_PirateBase_1003);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_1004] = new StringBuilder(MyDialogues.Dlg_PirateBase_1004);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_1101] = new StringBuilder(MyDialogues.Dlg_PirateBase_1101);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_1102] = new StringBuilder(MyDialogues.Dlg_PirateBase_1102);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_1103] = new StringBuilder(MyDialogues.Dlg_PirateBase_1103);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_1104] = new StringBuilder(MyDialogues.Dlg_PirateBase_1104);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_1105] = new StringBuilder(MyDialogues.Dlg_PirateBase_1105);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_1106] = new StringBuilder(MyDialogues.Dlg_PirateBase_1106);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_1107] = new StringBuilder(MyDialogues.Dlg_PirateBase_1107);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_1108] = new StringBuilder(MyDialogues.Dlg_PirateBase_1108);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_1109] = new StringBuilder(MyDialogues.Dlg_PirateBase_1109);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_1110] = new StringBuilder(MyDialogues.Dlg_PirateBase_1110);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_1201] = new StringBuilder(MyDialogues.Dlg_PirateBase_1201);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_1202] = new StringBuilder(MyDialogues.Dlg_PirateBase_1202);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_1203] = new StringBuilder(MyDialogues.Dlg_PirateBase_1203);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_1204] = new StringBuilder(MyDialogues.Dlg_PirateBase_1204);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_1205] = new StringBuilder(MyDialogues.Dlg_PirateBase_1205);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_1206] = new StringBuilder(MyDialogues.Dlg_PirateBase_1206);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_1207] = new StringBuilder(MyDialogues.Dlg_PirateBase_1207);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_1208] = new StringBuilder(MyDialogues.Dlg_PirateBase_1208);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_1209] = new StringBuilder(MyDialogues.Dlg_PirateBase_1209);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_1210] = new StringBuilder(MyDialogues.Dlg_PirateBase_1210);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_1301] = new StringBuilder(MyDialogues.Dlg_PirateBase_1301);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_1302] = new StringBuilder(MyDialogues.Dlg_PirateBase_1302);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_1303] = new StringBuilder(MyDialogues.Dlg_PirateBase_1303);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_1401] = new StringBuilder(MyDialogues.Dlg_PirateBase_1401);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_1402] = new StringBuilder(MyDialogues.Dlg_PirateBase_1402);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_1404] = new StringBuilder(MyDialogues.Dlg_PirateBase_1404);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_1405] = new StringBuilder(MyDialogues.Dlg_PirateBase_1405);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_1406] = new StringBuilder(MyDialogues.Dlg_PirateBase_1406);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_1407] = new StringBuilder(MyDialogues.Dlg_PirateBase_1407);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_1408] = new StringBuilder(MyDialogues.Dlg_PirateBase_1408);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_1409] = new StringBuilder(MyDialogues.Dlg_PirateBase_1409);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_1410] = new StringBuilder(MyDialogues.Dlg_PirateBase_1410);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_1411] = new StringBuilder(MyDialogues.Dlg_PirateBase_1411);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_1412] = new StringBuilder(MyDialogues.Dlg_PirateBase_1412);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_1413] = new StringBuilder(MyDialogues.Dlg_PirateBase_1413);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_1414] = new StringBuilder(MyDialogues.Dlg_PirateBase_1414);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_1415] = new StringBuilder(MyDialogues.Dlg_PirateBase_1415);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_1416] = new StringBuilder(MyDialogues.Dlg_PirateBase_1416);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_1417] = new StringBuilder(MyDialogues.Dlg_PirateBase_1417);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_1418] = new StringBuilder(MyDialogues.Dlg_PirateBase_1418);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_1423] = new StringBuilder(MyDialogues.Dlg_PirateBase_1423);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_1424] = new StringBuilder(MyDialogues.Dlg_PirateBase_1424);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_1425] = new StringBuilder(MyDialogues.Dlg_PirateBase_1425);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_1426] = new StringBuilder(MyDialogues.Dlg_PirateBase_1426);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_1427] = new StringBuilder(MyDialogues.Dlg_PirateBase_1427);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_1428] = new StringBuilder(MyDialogues.Dlg_PirateBase_1428);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_1429] = new StringBuilder(MyDialogues.Dlg_PirateBase_1429);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_1430] = new StringBuilder(MyDialogues.Dlg_PirateBase_1430);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_1431] = new StringBuilder(MyDialogues.Dlg_PirateBase_1431);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_1432] = new StringBuilder(MyDialogues.Dlg_PirateBase_1432);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_1433] = new StringBuilder(MyDialogues.Dlg_PirateBase_1433);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_1434] = new StringBuilder(MyDialogues.Dlg_PirateBase_1434);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_1435] = new StringBuilder(MyDialogues.Dlg_PirateBase_1435);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_1436] = new StringBuilder(MyDialogues.Dlg_PirateBase_1436);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_1440] = new StringBuilder(MyDialogues.Dlg_PirateBase_1440);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_1441] = new StringBuilder(MyDialogues.Dlg_PirateBase_1441);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_1442] = new StringBuilder(MyDialogues.Dlg_PirateBase_1442);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_1443] = new StringBuilder(MyDialogues.Dlg_PirateBase_1443);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_1501] = new StringBuilder(MyDialogues.Dlg_PirateBase_1501);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_1502] = new StringBuilder(MyDialogues.Dlg_PirateBase_1502);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_1503] = new StringBuilder(MyDialogues.Dlg_PirateBase_1503);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_0201] = new StringBuilder(MyDialogues.Dlg_PirateBase_0201);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_0202] = new StringBuilder(MyDialogues.Dlg_PirateBase_0202);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_0203] = new StringBuilder(MyDialogues.Dlg_PirateBase_0203);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_0204] = new StringBuilder(MyDialogues.Dlg_PirateBase_0204);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_0205] = new StringBuilder(MyDialogues.Dlg_PirateBase_0205);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_0206] = new StringBuilder(MyDialogues.Dlg_PirateBase_0206);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_0207] = new StringBuilder(MyDialogues.Dlg_PirateBase_0207);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_0208] = new StringBuilder(MyDialogues.Dlg_PirateBase_0208);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_PirateBase_0209] = new StringBuilder(MyDialogues.Dlg_PirateBase_0209);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACSurveySite_0804] = new StringBuilder(MyDialogues.Dlg_EACSurveySite_0804);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_EACSurveySite_0805] = new StringBuilder(MyDialogues.Dlg_EACSurveySite_0805);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_Laika_1913] = new StringBuilder(MyDialogues.Dlg_Laika_1913);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ReichstagC_1022_2] = new StringBuilder(MyDialogues.Dlg_ReichstagC_1022_2);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0524_2] = new StringBuilder(MyDialogues.Dlg_AlienGate_0524_2);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_AlienGate_0602_2] = new StringBuilder(MyDialogues.Dlg_AlienGate_0602_2);\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.Dlg_ResearchVessel_1035] = new StringBuilder(MyDialogues.Dlg_ResearchVessel_1035);\n\t\t}\n\t}\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Localization/MyDialoguesWrapperGenerated.tt",
    "content": "﻿<#@ template debug=\"false\" hostspecific=\"true\" language=\"C#\" #>\n<#@ output extension=\".cs\" #>\n<#@ assembly name=\"System.Core\" #>\n<#@ assembly name=\"System.Xml\" #>\n<#@ assembly name=\"System.Xml.Linq\" #>\n<#@ import namespace=\"System.IO\" #>\n<#@ import namespace=\"System.Text.RegularExpressions\" #>\n<#@ import namespace=\"System.Linq\" #>\n<#@ import namespace=\"System.Xml\" #>\n<#@ import namespace=\"System.Xml.Linq\" #>\n\n<#\nstring appName = \"MinerWars Localization Generator Template\";\nstring version = \"1.0.0.0\";\n\nstring path = this.Host.ResolvePath(\"\");\nstring resxFilePath = \"..\\\\..\\\\..\\\\Resources\\\\MyDialogues.resx\";\nXDocument document = XDocument.Parse(File.ReadAllText(Path.Combine(path, resxFilePath)));\n\n#>\n\nnamespace MinerWars.AppCode.Game.Localization\n{\n\tusing System.Text;\n\tusing MinerWars.Resources;\n\n\t[System.CodeDom.Compiler.GeneratedCode(\"<#= appName #>\", \"<#= version #>\")]\n    enum MyDialoguesWrapperEnum\n\t{\n<# foreach(var item in document.Element(\"root\").Elements(\"data\")) \n{ #>\n\t\t///<summary>\n\t\t///<#=item.Element(\"value\").Value.ToString().Replace(\"\\n\", \" \").Replace(\"\\r\", \" \")#>\n\t\t///</summary>\n\t\t<#=item.Attribute(\"name\").Value#>,\n<# }#>\n\t}\n\n\tstatic partial class MyDialoguesWrapper\n\t{\n\t\tstatic void Reload()\n        {\n<# foreach(var item in document.Element(\"root\").Elements(\"data\")) \n{ #>\n\t\t\tm_sb[(int)MyDialoguesWrapperEnum.<#=item.Attribute(\"name\").Value#>] = new StringBuilder(MyDialogues.<#=item.Attribute(\"name\").Value#>);\n<# }#>\n\t\t}\n\t}\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Localization/MyLanguagesEnum.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace MinerWars.AppCode.Game.Localization\n{\n    enum MyLanguagesEnum : byte\n    {\n        English = 0,\n        Cesky = 1,\n        Slovensky = 2,\n        Deutsch = 3,\n        Russian = 4,\n        Espanol = 5,\n        France = 6,\n        Italian = 7,\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Localization/MySubtitles.cs",
    "content": "﻿using MinerWars.AppCode.Game.Utils;\n\nnamespace MinerWars.AppCode.Game.Localization\n{\n    static class MySubtitles\n    {\n        static bool m_subtitlesEnabled;\n\n\n        public static bool Enabled\n        {\n            set\n            {\n                m_subtitlesEnabled = value;\n                MyConfig.Subtitles = m_subtitlesEnabled;\n                MyConfig.Save();\n            }\n\n            get\n            {\n                return m_subtitlesEnabled;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Localization/MyTextsWrapper.cs",
    "content": "﻿using System;\nusing System.Globalization;\nusing System.Text;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.Resources;\nusing SysUtils.Utils;\n\n//  This is wrapper for MyTexts. Reasons I made him are these:\n//      - MyTexts returns string, but I need to work with string builders\n//      - I can't make own text resources, because I need that functionality that is in MyLocalizationPipelnie (importing only characters that are found in RES files)\n\n//  IMPORTANT: Add all new texts here. Never use directly MyTexts in the code. Always use this wrapper!!!\n\n\nnamespace MinerWars.AppCode.Game.Localization\n{\n    static partial class MyTextsWrapper\n    {\n        static StringBuilder[] m_sb;\n        static MyLanguagesEnum m_actualLanguage;\n        static StringBuilder m_helperSb;\n\n        public static void Init()\n        {\n            m_sb = new StringBuilder[Enum.GetValues(typeof(MyTextsWrapperEnum)).Length];\n            m_helperSb = new StringBuilder();\n            Reload();\n        }\n\n        static string ConvertAsciiToUnicode(string theAsciiString)\n        {\n            // Create two different encodings. \n            Encoding aAsciiEncoding = Encoding.ASCII;\n            Encoding aUnicodeEncoding = Encoding.UTF8;\n            // Convert the string into a byte[]. \n            byte[] aAsciiBytes = aAsciiEncoding.GetBytes(theAsciiString);\n            // Perform the conversion from one encoding to the other. \n            byte[] aUnicodeBytes = Encoding.Convert(aAsciiEncoding, aUnicodeEncoding,\n            aAsciiBytes);\n            // Convert the new byte[] into a char[] and then into a string. \n            char[] aUnicodeChars = new char[aUnicodeEncoding.GetCharCount(aUnicodeBytes, 0, aUnicodeBytes.Length)];\n            aUnicodeEncoding.GetChars(aUnicodeBytes, 0, aUnicodeBytes.Length, aUnicodeChars, 0);\n            string aUnicodeString = new string(aUnicodeChars);\n            return aUnicodeString;\n        }\n\n        static string ConvertUnicodeToAscii(string theUnicodeString)\n        {\n            // Create two different encodings. \n            Encoding aAsciiEncoding = Encoding.ASCII;\n            Encoding aUnicodeEncoding = Encoding.UTF7;\n            // convert the string into byte[]\n            byte[] aUnicodeBytes = aUnicodeEncoding.GetBytes(theUnicodeString);\n            byte[] aAsciiBytes = Encoding.Convert(aUnicodeEncoding, aAsciiEncoding, aUnicodeBytes);\n            char[] aAsciiChars = new char[aAsciiEncoding.GetCharCount(aAsciiBytes, 0, aAsciiBytes.Length) * 2];\n            aAsciiEncoding.GetChars(aAsciiBytes, 0, aAsciiBytes.Length, aAsciiChars, 0);\n            string aAsciiString = new string(aAsciiChars);\n            return aAsciiString;\n        }\n\n        public static StringBuilder Get(MyTextsWrapperEnum textEnum)\n        {\n            if (m_sb == null)\n                return MyMwcUtils.EmptyStringBuilder;\n\n            //return m_sb[(int)textEnum];\n            return m_sb[(int)textEnum];\n        }\n\n\n        public static String GetFormatString(MyTextsWrapperEnum textEnum)\n        {\n            return m_sb[(int)textEnum].ToString();\n        }\n\n        public static String GetFormatString(MyTextsWrapperEnum textEnum, object arg0)\n        {\n            m_helperSb.Clear();\n            m_helperSb.AppendFormat(GetFormatString(textEnum), arg0);\n            return m_helperSb.ToString();\n        }\n       \n        public static String GetFormatString(MyTextsWrapperEnum textEnum, object[] formatArgs)\n        {\n            m_helperSb.Clear();\n            m_helperSb.AppendFormat(GetFormatString(textEnum), formatArgs);\n            return m_helperSb.ToString();\n        }\n       \n        public static string LanguageToString(MyLanguagesEnum lang)\n        {\n            return MyEnumsToStrings.LanguageEnums[(int)lang];\n        }\n\n\n        public static string GetActualLanguageString()\n        {\n            return LanguageToString(ActualLanguage);\n        }\n\n        public static MyLanguagesEnum ActualLanguage\n        {\n            set\n            {\n                //  Change current culture so this will switch text resources to new language\n                MyTexts.Culture = new CultureInfo(LanguageToString(value), true);\n\n                Reload();\n\n                //  Save into config\n                m_actualLanguage = value;\n                MyConfig.Language = m_actualLanguage;\n                MyConfig.Save();\n            }\n\n            get\n            {\n                return m_actualLanguage;\n            }\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Localization/MyTextsWrapperGenerated.cs",
    "content": "﻿\n\nnamespace MinerWars.AppCode.Game.Localization\n{\n\tusing System.Text;\n\tusing MinerWars.Resources;\n\n\t[System.CodeDom.Compiler.GeneratedCode(\"MinerWars Localization Generator Template\", \"1.0.0.0\")]\n    enum MyTextsWrapperEnum\n\t{\n\t\t///<summary>\n\t\t///Accept\n\t\t///</summary>\n\t\tAccept,\n\t\t///<summary>\n\t\t///Active\n\t\t///</summary>\n\t\tActive,\n\t\t///<summary>\n\t\t///Add\n\t\t///</summary>\n\t\tAdd,\n\t\t///<summary>\n\t\t///Adds gameplay objects\n\t\t///</summary>\n\t\tAddGamePlayTooltip,\n\t\t///<summary>\n\t\t///Adds mysterious cubes\n\t\t///</summary>\n\t\tAddMysteriousCubesTooltip,\n\t\t///<summary>\n\t\t///Add\n\t\t///</summary>\n\t\tAddObject,\n\t\t///<summary>\n\t\t///Add new object\n\t\t///</summary>\n\t\tAddObjectTooltip,\n\t\t///<summary>\n\t\t///Adds prefab to active container\n\t\t///</summary>\n\t\tAddPrefabTooltip,\n\t\t///<summary>\n\t\t///Add selected to this sector\n\t\t///</summary>\n\t\tAddSelectedToSector,\n\t\t///<summary>\n\t\t///Add voxels\n\t\t///</summary>\n\t\tAddVoxels,\n\t\t///<summary>\n\t\t///Adjust grid\n\t\t///</summary>\n\t\tAdjustGrid,\n\t\t///<summary>\n\t\t///Press +/− to adjust length of one grid step\n\t\t///</summary>\n\t\tAdjustGridTooltip,\n\t\t///<summary>\n\t\t///ADVANCED ARMOR | Projectile/explosion damage reduction: 60% | Solar wind damage reduction: 0%\n\t\t///</summary>\n\t\tAdvancedArmor,\n\t\t///<summary>\n\t\t///Afterburner\n\t\t///</summary>\n\t\tAfterburner,\n\t\t///<summary>\n\t\t///Aggressive\n\t\t///</summary>\n\t\tAggressive,\n\t\t///<summary>\n\t\t///Aggressivity\n\t\t///</summary>\n\t\tAggressivity,\n\t\t///<summary>\n\t\t///AI template\n\t\t///</summary>\n\t\tAITemplate,\n\t\t///<summary>\n\t\t///Alarm\n\t\t///</summary>\n\t\tAlarm,\n\t\t///<summary>\n\t\t///Alien gate\n\t\t///</summary>\n\t\tAlienGate,\n\t\t///<summary>\n\t\t///All blueprints\n\t\t///</summary>\n\t\tAllBlueprints,\n\t\t///<summary>\n\t\t///All events\n\t\t///</summary>\n\t\tAllEvents,\n\t\t///<summary>\n\t\t///All items\n\t\t///</summary>\n\t\tAllItemsInventory,\n\t\t///<summary>\n\t\t///All missions\n\t\t///</summary>\n\t\tAllMissions,\n\t\t///<summary>\n\t\t///All weapons\n\t\t///</summary>\n\t\tAllWeapons,\n\t\t///<summary>\n\t\t///Alpha\n\t\t///</summary>\n\t\tAlpha,\n\t\t///<summary>\n\t\t///Ammo\n\t\t///</summary>\n\t\tAmmo,\n\t\t///<summary>\n\t\t///Armor piercing incendiary ammo for gatling gun\n\t\t///</summary>\n\t\tAmmoAutocannonArmorPiercingIncendiary,\n\t\t///<summary>\n\t\t///BASIC AMMO FOR GATLING GUN | Damage: 3.9 | Pilot damage: 0 | EMP damage: 0 | Speed: 2000m/s | Range: 2800m\n\t\t///</summary>\n\t\tAmmoAutocannonBasic,\n\t\t///<summary>\n\t\t///BIOCHEM AMMO FOR GATLING GUN | Damage: 2 | Pilot damage: 10 | EMP damage: 0 | Speed: 1860m/s | Range: 1800m\n\t\t///</summary>\n\t\tAmmoAutocannonBioChem,\n\t\t///<summary>\n\t\t///EMP AMMO FOR GATLING GUN | Damage: 0.5 | Pilot damage: 0 | EMP damage: 5 | Speed: 1000m/s | Range: 1800m | Special: Can temporarily disable electrical objects\n\t\t///</summary>\n\t\tAmmoAutocannonEMP,\n\t\t///<summary>\n\t\t///HIGH VELOCITY AMMO FOR GATLING GUN | Damage: 5.85 | Pilot damage: 0 | EMP damage: 0 | Speed: 3000m/s | Range: 3000m\n\t\t///</summary>\n\t\tAmmoAutocannonHighVelocity,\n\t\t///<summary>\n\t\t///SAPHEI AMMO FOR GATLING GUN | Damage: 9.75 | Pilot damage: 0 | EMP damage: 0 | Speed: 2000m/s | Range: 2200m | Special: Semi-Armor Piercing High Explosive Incendiary\n\t\t///</summary>\n\t\tAmmoAutocannonSAPHEI,\n\t\t///<summary>\n\t\t///BIOCHEM AMMO FOR AUTOMATIC RIFLE WITH SILENCER | Damage: 0.5 | Pilot damage: 10 | EMP damage: 0 | Speed: 900m/s | Range: 1500m\n\t\t///</summary>\n\t\tAmmoAutomaticRifleWithSilencerBioChem,\n\t\t///<summary>\n\t\t///HIGH VELOCITY AMMO FOR AUTOMATIC RIFLE WITH SILENCER | Damage: 1 | Pilot damage: 0 | EMP damage: 0 | Speed: 1000m/s | Range: 2000m\n\t\t///</summary>\n\t\tAmmoAutomaticRifleWithSilencerHighVelocity,\n\t\t///<summary>\n\t\t///SAPHEI AMMO FOR AUTOMATIC RIFLE WITH SILENCER | Damage: 2 | Pilot damage: 0 | EMP damage: 0 | Speed: 900m/s | Range: 1800m | Special: Semi-Armor Piercing High Explosive Incendiary\n\t\t///</summary>\n\t\tAmmoAutomaticRifleWithSilencerSAPHEI,\n\t\t///<summary>\n\t\t///Armor piercing incendiary ammo for cannon\n\t\t///</summary>\n\t\tAmmoCannonArmorPiercingIncendiary,\n\t\t///<summary>\n\t\t///BASIC AMMO FOR CANNON | Damage: 30 | Pilot damage: 0 | EMP damage: 0 | Speed: 1000m/s | Explosion radius: 22 m | Range: 14000m\n\t\t///</summary>\n\t\tAmmoCannonBasic,\n\t\t///<summary>\n\t\t///BIOCHEM AMMO FOR CANNON | Damage: 3 | Pilot damage: 30 | EMP damage: 0 | Speed: 2000m/s | Explosion radius: 15 m | Range: 14000m\n\t\t///</summary>\n\t\tAmmoCannonBiochem,\n\t\t///<summary>\n\t\t///EMP AMMO FOR CANNON | Damage: 3 | Pilot damage: 0 | EMP damage: 30 | Speed: 2000m/s | Explosion radius: 15 m | Range: 14000m | Special: Can temporarily disable electrical objects\n\t\t///</summary>\n\t\tAmmoCannonEMP,\n\t\t///<summary>\n\t\t///HIGH VELOCITY AMMO FOR CANNON | Damage: 40 | Pilot damage: 0 | EMP damage: 0 | Speed: 1500m/s | Explosion radius: 25 m | Range: 15000m\n\t\t///</summary>\n\t\tAmmoCannonHighVelocity,\n\t\t///<summary>\n\t\t///PROXIMITY EXPLOSIVE AMMO FOR CANNON | Damage: 50 | Pilot damage: 0 | EMP damage: 0 | Speed: 950m/s | Explosion radius: 32 m | Range: 12000m | Special: Proximity ammo explodes within 5m of a target. No direct hit necessary.\n\t\t///</summary>\n\t\tAmmoCannonProximityExplosive,\n\t\t///<summary>\n\t\t///SAPHEI AMMO FOR CANNON | Damage: 80 | Pilot damage: 0 | EMP damage: 0 | Speed: 1100m/s | Explosion radius: 30 m | Range: 15000m | Special: Semi-Armor Piercing High Explosive Incendiary\n\t\t///</summary>\n\t\tAmmoCannonSAPHEI,\n\t\t///<summary>\n\t\t///TUNNEL BUSTER AMMO FOR CANNON | Damage: 60 | Pilot damage: 0 | EMP damage: 0 | Speed: 300m/s | Explosion radius: 60 m | Range: 10000m | Special: Large explosion radius\n\t\t///</summary>\n\t\tAmmoCannonTunnelBuster,\n\t\t///<summary>\n\t\t///Bullet\n\t\t///</summary>\n\t\tAmmoGroupBullet,\n\t\t///<summary>\n\t\t///Cannon\n\t\t///</summary>\n\t\tAmmoGroupCannon,\n\t\t///<summary>\n\t\t///Missile\n\t\t///</summary>\n\t\tAmmoGroupMissile,\n\t\t///<summary>\n\t\t///Universal launcher back\n\t\t///</summary>\n\t\tAmmoGroupUniversalLauncherBack,\n\t\t///<summary>\n\t\t///Universal launcher front\n\t\t///</summary>\n\t\tAmmoGroupUniversalLauncherFront,\n\t\t///<summary>\n\t\t///ENGINE DETECTION MISSILE FOR GUIDED LAUNCHER | Damage: 20 | Pilot damage: 0 | EMP damage: 0 | Speed: 400m/s | Explosion radius: 30 m | Range: 15000m | Special: Guides missile toward ships emitting heat from engines.\n\t\t///</summary>\n\t\tAmmoGuidedEngineDetection,\n\t\t///<summary>\n\t\t///RADAR DETECTION MISSILE FOR GUIDED LAUNCHER | Damage: 20 | Pilot damage: 0 | EMP damage: 0 | Speed: 400m/s | Explosion radius: 30 m | Range: 15000m | Special: Guides missile towards ships emitting radar\n\t\t///</summary>\n\t\tAmmoGuidedRadarDetection,\n\t\t///<summary>\n\t\t///VISUAL DETECTION MISSILE FOR GUIDED LAUNCHER | Damage: 20 | Pilot damage: 0 | EMP damage: 0 | Speed: 400m/s | Explosion radius: 30 m | Range: 15000m | Special: Guides missile at ships which are in line of sight\n\t\t///</summary>\n\t\tAmmoGuidedVisualDetection,\n\t\t///<summary>\n\t\t///Armor piercing incendiary ammo for machine gun\n\t\t///</summary>\n\t\tAmmoMachineGunArmorPiercingIncendiary,\n\t\t///<summary>\n\t\t///BASIC AMMO FOR MACHINE GUN | Damage: 6 | Pilot damage: 0 | EMP damage: 0 | Speed: 1700m/s | Range: 2300m\n\t\t///</summary>\n\t\tAmmoMachineGunBasic,\n\t\t///<summary>\n\t\t///BIOCHEM AMMO FOR MACHINE GUN | Damage: 3 | Pilot damage: 30 | EMP damage: 0 | Speed: 900m/s | Range: 1900m\n\t\t///</summary>\n\t\tAmmoMachineGunBioChem,\n\t\t///<summary>\n\t\t///EMP AMMO FOR MACHINE GUN | Damage: 0.5 | Pilot damage: 0 | EMP damage: 5 | Speed: 900m/s | Range: 1900m | Special: Can temporarily disable electrical objects\n\t\t///</summary>\n\t\tAmmoMachineGunEMP,\n\t\t///<summary>\n\t\t///HIGH VELOCITY AMMO FOR MACHINE GUN | Damage: 9 | Pilot damage: 0 | EMP damage: 0 | Speed: 2200m/s | Range: 2500m\n\t\t///</summary>\n\t\tAmmoMachineGunHighVelocity,\n\t\t///<summary>\n\t\t///SAPHEI AMMO FOR MACHINE GUN | Damage: 15 | Pilot damage: 0 | EMP damage: 0 | Speed: 1900m/s | Range: 1600m | Special: Semi-Armor Piercing High Explosive Incendiary\n\t\t///</summary>\n\t\tAmmoMachineGunSAPHEI,\n\t\t///<summary>\n\t\t///BASIC MISSILE | Damage: 70 | Pilot damage: 0 | EMP damage: 0 | Speed: 700m/s | Explosion radius: 30 m | Range: 10000m \n\t\t///</summary>\n\t\tAmmoMissileBasic,\n\t\t///<summary>\n\t\t///BIOCHEM MISSILE AMMO FOR MISSILE LAUNCHER | Damage: 2 | Pilot damage: 40 | EMP damage: 0 | Speed: 500m/s | Explosion radius: 40 m | Range: 10000m\n\t\t///</summary>\n\t\tAmmoMissileBioChem,\n\t\t///<summary>\n\t\t///EMP MISSILE FOR GUIDED LAUNCHER | Damage: 2 | Pilot damage: 0 | EMP damage: 20 | Speed: 500m/s | Explosion radius: 40 m | Range: 10000m | Special: Can temporarily disable electrical objects\n\t\t///</summary>\n\t\tAmmoMissileEMP,\n\t\t///<summary>\n\t\t///Assign ammo types to your weapon slots by selecting an ammo type and pressing fire.\n\t\t///</summary>\n\t\tAmmoSelectText,\n\t\t///<summary>\n\t\t///Primary: {0} Secondary: {1} Third: {2} Fourth: {3} Fifth: {4}\n\t\t///</summary>\n\t\tAmmoSelectTextValues,\n\t\t///<summary>\n\t\t///ARMOR-PIERCING AMMO FOR SHOTGUN | Damage: 10 | Pilot damage: 0 | EMP damage: 0 | Speed: 800m/s | Range: 300m\n\t\t///</summary>\n\t\tAmmoShotgunArmorPiercing,\n\t\t///<summary>\n\t\t///BASIC AMMO FOR SHOTGUN | Damage: 5 | Pilot damage: 0 | EMP damage: 0 | Speed: 600m/s | Range: 300m\n\t\t///</summary>\n\t\tAmmoShotgunBasic,\n\t\t///<summary>\n\t\t///EXPLOSIVE AMMO FOR SHOTGUN | Damage: 10 | Pilot damage: 0 | EMP damage: 0 | Speed: 700m/s | Range: 300m\n\t\t///</summary>\n\t\tAmmoShotgunExplosive,\n\t\t///<summary>\n\t\t///HIGH VELOCITY AMMO FOR SHOTGUN | Damage: 8 | Pilot damage: 0 | EMP damage: 0 | Speed: 1200m/s | Range: 400m\n\t\t///</summary>\n\t\tAmmoShotgunHighVelocity,\n\t\t///<summary>\n\t\t///BIOCHEM AMMO FOR SNIPER | Damage: 10 | Pilot damage: 50 | EMP damage: 0 | Speed: 9000m/s | Range: 9600m\n\t\t///</summary>\n\t\tAmmoSniperBioChem,\n\t\t///<summary>\n\t\t///EMP AMMO FOR SNIPER | Damage: 15 | Pilot damage: 0 | EMP damage: 45 | Speed: 8000m/s | Range: 9600m | Special: Can temporarily disable electrical objects\n\t\t///</summary>\n\t\tAmmoSniperEMP,\n\t\t///<summary>\n\t\t///HIGH VELOCITY AMMO FOR SNIPER | Damage: 60 | Pilot damage: 0 | EMP damage: 0 | Speed: 15000m/s | Range: 12000m\n\t\t///</summary>\n\t\tAmmoSniperHighVelocity,\n\t\t///<summary>\n\t\t///SAPHEI AMMO FOR SNIPER | Damage: 105 | Pilot damage: 0 | EMP damage: 0 | Speed: 8000m/s | Range: 11400m | Special: Semi-Armor Piercing High Explosive Incendiary\n\t\t///</summary>\n\t\tAmmoSniperSAPHEI,\n\t\t///<summary>\n\t\t///ASTEROID KILLER AMMO FOR UNIVERSAL LAUNCHER | Damage: 150 | Pilot damage: 100 | EMP damage: 0 | Speed: 5m/s | Explosion radius: 90 m | Range: 10000m | Special: Destroys a large area of mass and ore\n\t\t///</summary>\n\t\tAmmoUniversalLauncherAsteroidKiller,\n\t\t///<summary>\n\t\t///DECOY FLARE AMMO FOR UNIVERSAL LAUNCHER | Speed: 100m/s | Range: 100 m | Creates a decoy flare and confuses most guided missiles\n\t\t///</summary>\n\t\tAmmoUniversalLauncherDecoyFlare,\n\t\t///<summary>\n\t\t///DIRECTIONAL EXPLOSIVE AMMO FOR UNIVERSAL LAUNCHER | Damage: 90 | Pilot damage: 60 | EMP damage: 0 | Speed: 5m/s | Explosion radius: 35 m | Range: 10000m | Special: Creates explosion in one direction\n\t\t///</summary>\n\t\tAmmoUniversalLauncherDirectionalExplosive,\n\t\t///<summary>\n\t\t///EMP BOMB AMMO FOR UNIVERSAL LAUNCHER | Damage: 20 | Pilot damage: 0 | EMP damage: 150 | Speed: 5m/s | Explosion radius: 100 m | Range: 10000m | Special: Can temporarily disable electrical objects\n\t\t///</summary>\n\t\tAmmoUniversalLauncherEMPBomb,\n\t\t///<summary>\n\t\t///FLASH BOMB AMMO FOR UNIVERSAL LAUNCHER | Speed: 2m/s | Range: 100 m | Blinds pilots for a few seconds.\n\t\t///</summary>\n\t\tAmmoUniversalLauncherFlashBomb,\n\t\t///<summary>\n\t\t///Gravitation bomb ammo for universal launcher\n\t\t///</summary>\n\t\tAmmoUniversalLauncherGravitationBomb,\n\t\t///<summary>\n\t\t///HOLOGRAM PROJECTOR AMMO FOR UNIVERSAL LAUNCHER | Speed: 2m/s | Range: 100 m | Projects a holographic view of your ship for 60 seconds and confuses most guided missiles and enemies\n\t\t///</summary>\n\t\tAmmoUniversalLauncherHologram,\n\t\t///<summary>\n\t\t///ILLUMINATING SHELL AMMO FOR UNIVERSAL LAUNCHER | Speed: 2m/s | Range: 100 m | Illuminates an area for 20 seconds, before burning out.\n\t\t///</summary>\n\t\tAmmoUniversalLauncherIlluminatingShell,\n\t\t///<summary>\n\t\t///BASIC MINE AMMO FOR UNIVERSAL LAUNCHER | Damage: 80 | Pilot damage: 0 | EMP damage: 0 | Speed: 5m/s | Explosion radius: 30 m | Range: 100m | Special: Stationary mine\n\t\t///</summary>\n\t\tAmmoUniversalLauncherMineBasic,\n\t\t///<summary>\n\t\t///BIOCHEM MINE AMMO FOR UNIVERSAL LAUNCHER | Damage: 6 | Pilot damage: 60 | EMP damage: 0 | Speed: 5m/s | Explosion radius: 20 m | Range: 10000m\n\t\t///</summary>\n\t\tAmmoUniversalLauncherMineBioChem,\n\t\t///<summary>\n\t\t///SMART MINE AMMO FOR UNIVERSAL LAUNCHER | Damage: 60 | Pilot damage: 0 | EMP damage: 0 | Speed: 5m/s | Explosion radius: 50 m | Range: 300m | Special: Mine chasing enemy ship up to 300m with speed 5m/s.  \n\t\t///</summary>\n\t\tAmmoUniversalLauncherMineSmart,\n\t\t///<summary>\n\t\t///REMOTE BOMB AMMO FOR UNIVERSAL LAUNCHER | Damage: 120 | Pilot damage: 60 | EMP damage: 0 | Speed: 5m/s | Explosion radius: 40 m | Range: 10000m | Special: Bomb will be launched by special key\n\t\t///</summary>\n\t\tAmmoUniversalLauncherRemoteBomb,\n\t\t///<summary>\n\t\t///REMOTE CAMERA FOR UNIVERSAL LAUNCHER | Speed: 2m/s | Range: 100 m | Remote camera that can be stuck to walls\n\t\t///</summary>\n\t\tAmmoUniversalLauncherRemoteCamera,\n\t\t///<summary>\n\t\t///SMOKE BOMB CANISTER FOR UNIVERSAL LAUNCHER | Speed: 5m/s | Range: 10000 m | Generates a smoke cloud for 45 seconds.\n\t\t///</summary>\n\t\tAmmoUniversalLauncherSmokeBomb,\n\t\t///<summary>\n\t\t///SPHERICAL EXPLOSIVE AMMO FOR UNIVERSAL LAUNCHER | Damage: 120 | Pilot damage: 50 | EMP damage: 0 | Speed: 5m/s | Explosion radius: 30 m | Range: 10000m | Special: Creates spherical area of effect.\n\t\t///</summary>\n\t\tAmmoUniversalLauncherSphereExplosive,\n\t\t///<summary>\n\t\t///TIME BOMB AMMO FOR UNIVERSAL LAUNCHER | Damage: 100 | Pilot damage: 0 | EMP damage: 0 | Speed: 5m/s | Explosion radius: 30 m | Range: 10000m | Special: Timed bomb, explodes after time elapsed\n\t\t///</summary>\n\t\tAmmoUniversalLauncherTimeBomb,\n\t\t///<summary>\n\t\t///Are you sure you want to exit?\n\t\t///</summary>\n\t\tAreYouSureYouWantToExit,\n\t\t///<summary>\n\t\t///Are you sure you want to log out? You will have  to re-enter your username and password on next login.\n\t\t///</summary>\n\t\tAreYouSureYouWantToLogout,\n\t\t///<summary>\n\t\t///Armor\n\t\t///</summary>\n\t\tArmor,\n\t\t///<summary>\n\t\t///Armor hull\n\t\t///</summary>\n\t\tArmor_hull,\n\t\t///<summary>\n\t\t///Dual Head normal 4:3\n\t\t///</summary>\n\t\tAspectRatioDualHeadNormal_4_3,\n\t\t///<summary>\n\t\t///Dual Head wide 16:10\n\t\t///</summary>\n\t\tAspectRatioDualHeadWide_16_10,\n\t\t///<summary>\n\t\t///Dual Head wide 16:9\n\t\t///</summary>\n\t\tAspectRatioDualHeadWide_16_9,\n\t\t///<summary>\n\t\t///Normal 4:3\n\t\t///</summary>\n\t\tAspectRatioNormal_4_3,\n\t\t///<summary>\n\t\t///Triple Head normal 4:3\n\t\t///</summary>\n\t\tAspectRatioTripleHeadNormal_4_3,\n\t\t///<summary>\n\t\t///Triple Head wide 16:10\n\t\t///</summary>\n\t\tAspectRatioTripleHeadWide_16_10,\n\t\t///<summary>\n\t\t///Triple Head wide 16:9\n\t\t///</summary>\n\t\tAspectRatioTripleHeadWide_16_9,\n\t\t///<summary>\n\t\t///Wide 16:10\n\t\t///</summary>\n\t\tAspectRatioWide_16_10,\n\t\t///<summary>\n\t\t///Wide 16:9\n\t\t///</summary>\n\t\tAspectRatioWide_16_9,\n\t\t///<summary>\n\t\t///Dual 16:10\n\t\t///</summary>\n\t\tAspectRatio_Short_Dual_16_10,\n\t\t///<summary>\n\t\t///Dual 16:9\n\t\t///</summary>\n\t\tAspectRatio_Short_Dual_16_9,\n\t\t///<summary>\n\t\t///Dual 4:3\n\t\t///</summary>\n\t\tAspectRatio_Short_Dual_4_3,\n\t\t///<summary>\n\t\t///16:10\n\t\t///</summary>\n\t\tAspectRatio_Short_Normal_16_10,\n\t\t///<summary>\n\t\t///16:9\n\t\t///</summary>\n\t\tAspectRatio_Short_Normal_16_9,\n\t\t///<summary>\n\t\t///4:3\n\t\t///</summary>\n\t\tAspectRatio_Short_Normal_4_3,\n\t\t///<summary>\n\t\t///Triple 16:10\n\t\t///</summary>\n\t\tAspectRatio_Short_Triple_16_10,\n\t\t///<summary>\n\t\t///Triple 16:9\n\t\t///</summary>\n\t\tAspectRatio_Short_Triple_16_9,\n\t\t///<summary>\n\t\t///Triple 4:3\n\t\t///</summary>\n\t\tAspectRatio_Short_Triple_4_3,\n\t\t///<summary>\n\t\t///Please press a button on the joystick/gamepad\n\t\t///</summary>\n\t\tAssignControlJoystick,\n\t\t///<summary>\n\t\t///Please move an analog axis on the joystick/gamepad\n\t\t///</summary>\n\t\tAssignControlJoystickAxis,\n\t\t///<summary>\n\t\t///Please press a key\n\t\t///</summary>\n\t\tAssignControlKeyboard,\n\t\t///<summary>\n\t\t///Please click a mouse button\n\t\t///</summary>\n\t\tAssignControlMouse,\n\t\t///<summary>\n\t\t///Asteroid\n\t\t///</summary>\n\t\tAsteroid,\n\t\t///<summary>\n\t\t///Asteroid\n\t\t///</summary>\n\t\tAsteroidContextMenuCaption,\n\t\t///<summary>\n\t\t///Asteroid killer\n\t\t///</summary>\n\t\tAsteroidKillerHud,\n\t\t///<summary>\n\t\t///Choose material\n\t\t///</summary>\n\t\tAsteroidMaterial,\n\t\t///<summary>\n\t\t///Choose asteroid\n\t\t///</summary>\n\t\tAsteroidName,\n\t\t///<summary>\n\t\t///Asteroid with space station story sector start\n\t\t///</summary>\n\t\tAsteroidWithSpaceStationStartStorySector,\n\t\t///<summary>\n\t\t///Attached to camera\n\t\t///</summary>\n\t\tAttachedContextMenuCaption,\n\t\t///<summary>\n\t\t///Attach to camera\n\t\t///</summary>\n\t\tAttachToCamera,\n\t\t///<summary>\n\t\t///Press RMB on selected objects to attach them to spectator\n\t\t///</summary>\n\t\tAttachToCameraTooltip,\n\t\t///<summary>\n\t\t///Audio\n\t\t///</summary>\n\t\tAudio,\n\t\t///<summary>\n\t\t///Audio options\n\t\t///</summary>\n\t\tAudioOptions,\n\t\t///<summary>\n\t\t///Toggle autoleveling\n\t\t///</summary>\n\t\tAutoLevel,\n\t\t///<summary>\n\t\t///Auto-login\n\t\t///</summary>\n\t\tAutologin,\n\t\t///<summary>\n\t\t///This feature is available only for administrators\n\t\t///</summary>\n\t\tAvailableOnlyForAdministrators,\n\t\t///<summary>\n\t\t///Available submissions\n\t\t///</summary>\n\t\tAvailableSubmissions,\n\t\t///<summary>\n\t\t///Back\n\t\t///</summary>\n\t\tBack,\n\t\t///<summary>\n\t\t///Bad sector identifier\n\t\t///</summary>\n\t\tBadSectorIdentifierInput,\n\t\t///<summary>\n\t\t///Bank node\n\t\t///</summary>\n\t\tBankNode,\n\t\t///<summary>\n\t\t///BASIC ARMOR | Projectile/explosion damage reduction: 30% | Solar wind damage reduction: 0%\n\t\t///</summary>\n\t\tBasicArmor,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tBlank,\n\t\t///<summary>\n\t\t///Blue\n\t\t///</summary>\n\t\tBlue,\n\t\t///<summary>\n\t\t///Advanced construction kit\n\t\t///</summary>\n\t\tBlueprintAdvancedConstructionKit,\n\t\t///<summary>\n\t\t///Basic construction kit\n\t\t///</summary>\n\t\tBlueprintBasicConstructionKit,\n\t\t///<summary>\n\t\t///Fortification kit\n\t\t///</summary>\n\t\tBlueprintFortificationKit,\n\t\t///<summary>\n\t\t///Honorable kit\n\t\t///</summary>\n\t\tBlueprintHonorableKit,\n\t\t///<summary>\n\t\t///Superior construction kit\n\t\t///</summary>\n\t\tBlueprintSuperiorConstructionKit,\n\t\t///<summary>\n\t\t///Utilities kit\n\t\t///</summary>\n\t\tBlueprintUtilitiesKit,\n\t\t///<summary>\n\t\t///Weapons kit\n\t\t///</summary>\n\t\tBlueprintWeaponKit,\n\t\t///<summary>\n\t\t///[Can build:{0}] [Built: {1}] [In queue: {2}] [State:{3}%]\n\t\t///</summary>\n\t\tBuildingInformationWhenBuilding,\n\t\t///<summary>\n\t\t///[Can build:{0}] [Built: {1}] [In queue: {2}]\n\t\t///</summary>\n\t\tBuildingInformationWhenNotBuilding,\n\t\t///<summary>\n\t\t///Building requirements\n\t\t///</summary>\n\t\tBuildingRequirements,\n\t\t///<summary>\n\t\t///Beams\n\t\t///</summary>\n\t\tbuildTypeBeam,\n\t\t///<summary>\n\t\t///Connections\n\t\t///</summary>\n\t\tbuildTypeConnection,\n\t\t///<summary>\n\t\t///Custom\n\t\t///</summary>\n\t\tbuildTypeCustom,\n\t\t///<summary>\n\t\t///Details\n\t\t///</summary>\n\t\tbuildTypeDetail,\n\t\t///<summary>\n\t\t///Modules\n\t\t///</summary>\n\t\tbuildTypeModule,\n\t\t///<summary>\n\t\t///Shells\n\t\t///</summary>\n\t\tbuildTypePanel,\n\t\t///<summary>\n\t\t///Don’t save\n\t\t///</summary>\n\t\tButtonContinueWithoutSaving,\n\t\t///<summary>\n\t\t///Retry\n\t\t///</summary>\n\t\tButtonRetry,\n\t\t///<summary>\n\t\t///Cable corner 25m\n\t\t///</summary>\n\t\tCable_corner_25m,\n\t\t///<summary>\n\t\t///Cable straight 180\n\t\t///</summary>\n\t\tCable_straight_180,\n\t\t///<summary>\n\t\t///Cable straight 45\n\t\t///</summary>\n\t\tCable_straight_45,\n\t\t///<summary>\n\t\t///Cable straight 90\n\t\t///</summary>\n\t\tCable_straight_90,\n\t\t///<summary>\n\t\t///Cable S 45m\n\t\t///</summary>\n\t\tCable_S_45m,\n\t\t///<summary>\n\t\t///Camera\n\t\t///</summary>\n\t\tCamera,\n\t\t///<summary>\n\t\t///Cancel\n\t\t///</summary>\n\t\tCancel,\n\t\t///<summary>\n\t\t///CANNOT ASSIGN CONTROL\n\t\t///</summary>\n\t\tCanNotAssignControl,\n\t\t///<summary>\n\t\t///Cannot copy because the maximum voxel shape count was reached\n\t\t///</summary>\n\t\tCannotCopyBecauseMaxVoxelShapesReached,\n\t\t///<summary>\n\t\t///You cannot copy because you don’t have enough objects stored.\n\t\t///</summary>\n\t\tCannotCopyBecauseYouDontHaveEnoughObjectsStored,\n\t\t///<summary>\n\t\t///Sorry, you can’t log in. You don’t have permission to access the development build.  More info: www.MinerWars.com/Troubleshooting\n\t\t///</summary>\n\t\tCantLoginAccessRestrictedDevelop,\n\t\t///<summary>\n\t\t///Sorry, you can’t log in. You don’t have permission to access the test build.  More info: www.MinerWars.com/Troubleshooting\n\t\t///</summary>\n\t\tCantLoginAccessRestrictedTest,\n\t\t///<summary>\n\t\t///Sorry, you can’t log in. This version of Miner Wars is outdated. A newer version of Miner Wars  is available. Please run the updater or visit www.minerwars.com for the latest version.\n\t\t///</summary>\n\t\tCantLoginClientVersionIsWrong,\n\t\t///<summary>\n\t\t///Sorry, you can’t log in. The username is already in use. If your connection has  been terminated, please wait 90 seconds and then login again.\n\t\t///</summary>\n\t\tCantLoginPlayerAlreadyLoggedIn,\n\t\t///<summary>\n\t\t///Sorry, you can’t log in. Wrong username or password, but this  may be caused by the difference between public and test builds.  More info: www.MinerWars.com/Troubleshooting\n\t\t///</summary>\n\t\tCantLoginWrongPlayerNameOrPassword,\n\t\t///<summary>\n\t\t///Sorry, you can’t log in. The username and/or password is incorrect. Please try again.\n\t\t///</summary>\n\t\tCantLoginWrongPlayerNameOrPasswordPublic,\n\t\t///<summary>\n\t\t///Sorry, you can’t register. The server is not accessible.  Please check your firewall settings.\n\t\t///</summary>\n\t\tCantRegisterServerIsUnavailable,\n\t\t///<summary>\n\t\t///Can’t save sector – one of the prefab containers collides with other objects.\n\t\t///</summary>\n\t\tCantSaveSectorContainerCollides,\n\t\t///<summary>\n\t\t///Saving sector failed\n\t\t///</summary>\n\t\tCantSaveSectorFailed,\n\t\t///<summary>\n\t\t///Sector save failed, the specified name is already in use.\n\t\t///</summary>\n\t\tCantSaveSectorNameExists,\n\t\t///<summary>\n\t\t///Properties are not valid.\n\t\t///</summary>\n\t\tCaptionPropertiesAreNotValid,\n\t\t///<summary>\n\t\t///Property is not valid.\n\t\t///</summary>\n\t\tCaptionPropertyIsNotValid,\n\t\t///<summary>\n\t\t///Cargo Box\n\t\t///</summary>\n\t\tCargoBox,\n\t\t///<summary>\n\t\t///{0}\n\t\t///</summary>\n\t\tCash,\n\t\t///<summary>\n\t\t///Armors\n\t\t///</summary>\n\t\tCategoryTypeArmors,\n\t\t///<summary>\n\t\t///Billboards\n\t\t///</summary>\n\t\tCategoryTypeBillboards,\n\t\t///<summary>\n\t\t///Cables\n\t\t///</summary>\n\t\tcategoryTypeCables,\n\t\t///<summary>\n\t\t///Chambers\n\t\t///</summary>\n\t\tCategoryTypeChambers,\n\t\t///<summary>\n\t\t///Communications\n\t\t///</summary>\n\t\tcategoryTypeCommunications,\n\t\t///<summary>\n\t\t///Doors\n\t\t///</summary>\n\t\tCategoryTypeDoorCases,\n\t\t///<summary>\n\t\t///Doors\n\t\t///</summary>\n\t\tCategoryTypeDoors,\n\t\t///<summary>\n\t\t///Flight\n\t\t///</summary>\n\t\tcategoryTypeFlight,\n\t\t///<summary>\n\t\t///Frame\n\t\t///</summary>\n\t\tCategoryTypeFrame,\n\t\t///<summary>\n\t\t///Hangars\n\t\t///</summary>\n\t\tcategoryTypeHangars,\n\t\t///<summary>\n\t\t///Industry\n\t\t///</summary>\n\t\tcategoryTypeIndustry,\n\t\t///<summary>\n\t\t///Large\n\t\t///</summary>\n\t\tcategoryTypeLarge,\n\t\t///<summary>\n\t\t///Large ships\n\t\t///</summary>\n\t\tCategoryTypeLargeShips,\n\t\t///<summary>\n\t\t///Life support\n\t\t///</summary>\n\t\tcategoryTypeLifeSupport,\n\t\t///<summary>\n\t\t///Lights\n\t\t///</summary>\n\t\tCategoryTypeLights,\n\t\t///<summary>\n\t\t///Manned objects\n\t\t///</summary>\n\t\tcategoryTypeMannedObjects,\n\t\t///<summary>\n\t\t///Medium\n\t\t///</summary>\n\t\tcategoryTypeMedium,\n\t\t///<summary>\n\t\t///Mship\n\t\t///</summary>\n\t\tcategoryTypeMship,\n\t\t///<summary>\n\t\t///Other\n\t\t///</summary>\n\t\tCategoryTypeOther,\n\t\t///<summary>\n\t\t///Panels\n\t\t///</summary>\n\t\tCategoryTypePanels,\n\t\t///<summary>\n\t\t///Particles\n\t\t///</summary>\n\t\tCategoryTypeParticles,\n\t\t///<summary>\n\t\t///Passages\n\t\t///</summary>\n\t\tCategoryTypePassages,\n\t\t///<summary>\n\t\t///Pipes\n\t\t///</summary>\n\t\tcategoryTypePipe,\n\t\t///<summary>\n\t\t///Signs\n\t\t///</summary>\n\t\tCategoryTypeSigns,\n\t\t///<summary>\n\t\t///Small\n\t\t///</summary>\n\t\tcategoryTypeSmall,\n\t\t///<summary>\n\t\t///Sounds\n\t\t///</summary>\n\t\tCategoryTypeSounds,\n\t\t///<summary>\n\t\t///Supply\n\t\t///</summary>\n\t\tcategoryTypeSupply,\n\t\t///<summary>\n\t\t///Traffic signs\n\t\t///</summary>\n\t\tCategoryTypeTrafficSigns,\n\t\t///<summary>\n\t\t///Tunnels\n\t\t///</summary>\n\t\tcategoryTypeTunnel,\n\t\t///<summary>\n\t\t///Weaponry\n\t\t///</summary>\n\t\tcategoryTypeWeaponry,\n\t\t///<summary>\n\t\t///Radius of the voxel hand used for asteroid modification\n\t\t///</summary>\n\t\tChangeRadiusTooltip,\n\t\t///<summary>\n\t\t///Choose between Box or Sphere voxel hand shapes\n\t\t///</summary>\n\t\tChangeShapeTooltip,\n\t\t///<summary>\n\t\t///Change material\n\t\t///</summary>\n\t\tChangeVoxelMaterial,\n\t\t///<summary>\n\t\t///Cheats\n\t\t///</summary>\n\t\tCheatsCaption,\n\t\t///<summary>\n\t\t///Chinese Mines Center Asteroid\n\t\t///</summary>\n\t\tChinese_Mines_CenterAsteroid,\n\t\t///<summary>\n\t\t///Chinese Mines Front Asteroid\n\t\t///</summary>\n\t\tChinese_Mines_FrontAsteroid,\n\t\t///<summary>\n\t\t///Chinese Mines Front Right Asteroid\n\t\t///</summary>\n\t\tChinese_Mines_FrontRightAsteroid,\n\t\t///<summary>\n\t\t///Chinese Mines Left Asteroid\n\t\t///</summary>\n\t\tChinese_Mines_LeftAsteroid,\n\t\t///<summary>\n\t\t///Chinese Mines Main Asteroid\n\t\t///</summary>\n\t\tChinese_Mines_MainAsteroid,\n\t\t///<summary>\n\t\t///Chinese Mines Right Asteroid\n\t\t///</summary>\n\t\tChinese_Mines_RightAsteroid,\n\t\t///<summary>\n\t\t///Choose game\n\t\t///</summary>\n\t\tChooseGameType,\n\t\t///<summary>\n\t\t///Choose hand mode\n\t\t///</summary>\n\t\tChooseHandMode,\n\t\t///<summary>\n\t\t///Choose type\n\t\t///</summary>\n\t\tChooseInfluence,\n\t\t///<summary>\n\t\t///Choose model\n\t\t///</summary>\n\t\tChooseModel,\n\t\t///<summary>\n\t\t///Choose object type\n\t\t///</summary>\n\t\tChooseObject3D,\n\t\t///<summary>\n\t\t///Choose a password\n\t\t///</summary>\n\t\tChoosePassword,\n\t\t///<summary>\n\t\t///Build type\n\t\t///</summary>\n\t\tChoosePrefabBuildType,\n\t\t///<summary>\n\t\t///Category\n\t\t///</summary>\n\t\tChoosePrefabCategory,\n\t\t///<summary>\n\t\t///Subcategory\n\t\t///</summary>\n\t\tChoosePrefabSubcategory,\n\t\t///<summary>\n\t\t///Choose shape\n\t\t///</summary>\n\t\tChooseShapeMode,\n\t\t///<summary>\n\t\t///Choose sound\n\t\t///</summary>\n\t\tChooseSound,\n\t\t///<summary>\n\t\t///Choose a username\n\t\t///</summary>\n\t\tChooseUsername,\n\t\t///<summary>\n\t\t///Cistern\n\t\t///</summary>\n\t\tCistern,\n\t\t///<summary>\n\t\t///Clear materials\n\t\t///</summary>\n\t\tClearAsteroidMaterials,\n\t\t///<summary>\n\t\t///Reset all materials on currently selected asteroid\n\t\t///</summary>\n\t\tClearAsteroidMaterialsTooltip,\n\t\t///<summary>\n\t\t///Clear inventory\n\t\t///</summary>\n\t\tClearInventory,\n\t\t///<summary>\n\t\t///Clear sector\n\t\t///</summary>\n\t\tClearWholeSector,\n\t\t///<summary>\n\t\t///Remove everything from the sector (excluding the player ship)\n\t\t///</summary>\n\t\tClearWholeSectorTooltip,\n\t\t///<summary>\n\t\t///Cobalt\n\t\t///</summary>\n\t\tCobalt_01,\n\t\t///<summary>\n\t\t///Colliding objects\n\t\t///</summary>\n\t\tCollidingObjects,\n\t\t///<summary>\n\t\t///Color\n\t\t///</summary>\n\t\tColor,\n\t\t///<summary>\n\t\t///Color area\n\t\t///</summary>\n\t\tColorArea,\n\t\t///<summary>\n\t\t///Concrete 1\n\t\t///</summary>\n\t\tConcrete_01,\n\t\t///<summary>\n\t\t///Concrete 2\n\t\t///</summary>\n\t\tConcrete_02,\n\t\t///<summary>\n\t\t///Connected prefab IDs\n\t\t///</summary>\n\t\tConnectedPrefabIds,\n\t\t///<summary>\n\t\t///Connect entity with ID\n\t\t///</summary>\n\t\tConnectEntityWithId,\n\t\t///<summary>\n\t\t///Connection box\n\t\t///</summary>\n\t\tConnection_box,\n\t\t///<summary>\n\t\t///Connect waypoints\n\t\t///</summary>\n\t\tConnectWaypoints,\n\t\t///<summary>\n\t\t///Creates a connection between all selected waypoints\n\t\t///</summary>\n\t\tConnectWaypointsTooltip,\n\t\t///<summary>\n\t\t///ConstantFlashing\n\t\t///</summary>\n\t\tConstantFlashing,\n\t\t///<summary>\n\t\t///Continue last game\n\t\t///</summary>\n\t\tContinueLastGame,\n\t\t///<summary>\n\t\t///CONTINUE\n\t\t///</summary>\n\t\tContinueUppercase,\n\t\t///<summary>\n\t\t///{0} is already assigned to {1}. Remove the original control?\n\t\t///</summary>\n\t\tControlAlreadyAssigned,\n\t\t///<summary>\n\t\t///The pressed key may not be assigned to controls.\n\t\t///</summary>\n\t\tControlIsNotValid,\n\t\t///<summary>\n\t\t///Controlling: \n\t\t///</summary>\n\t\tControlling,\n\t\t///<summary>\n\t\t///Controls\n\t\t///</summary>\n\t\tControls,\n\t\t///<summary>\n\t\t///Copy\n\t\t///</summary>\n\t\tCopy,\n\t\t///<summary>\n\t\t///Copy selected\n\t\t///</summary>\n\t\tCopySelected,\n\t\t///<summary>\n\t\t///Press Left Ctrl+C to copy selection and Ctrl+V to paste\n\t\t///</summary>\n\t\tCopySelectedTooltip,\n\t\t///<summary>\n\t\t///Copy tool\n\t\t///</summary>\n\t\tCopyTool,\n\t\t///<summary>\n\t\t///Correct snapped prefabs\n\t\t///</summary>\n\t\tCorrectSnappedPrefabs,\n\t\t///<summary>\n\t\t///Align all prefabs by their snap points\n\t\t///</summary>\n\t\tCorrectSnappedPrefabsTooltip,\n\t\t///<summary>\n\t\t///Time remaining: {0}\n\t\t///</summary>\n\t\tCountdown,\n\t\t///<summary>\n\t\t///Crazy\n\t\t///</summary>\n\t\tCrazy,\n\t\t///<summary>\n\t\t///Create asteroid\n\t\t///</summary>\n\t\tCreateAsteroid,\n\t\t///<summary>\n\t\t///Create debris\n\t\t///</summary>\n\t\tCreateDebris,\n\t\t///<summary>\n\t\t///Create large ship\n\t\t///</summary>\n\t\tCreateLargeShip,\n\t\t///<summary>\n\t\t///Add prefab\n\t\t///</summary>\n\t\tCreatePrefab,\n\t\t///<summary>\n\t\t///Create small ship\n\t\t///</summary>\n\t\tCreateSmallShip,\n\t\t///<summary>\n\t\t///Credits\n\t\t///</summary>\n\t\tCredits,\n\t\t///<summary>\n\t\t///Cube_128x128x128\n\t\t///</summary>\n\t\tCube_128x128x128,\n\t\t///<summary>\n\t\t///Cube_128x128x256\n\t\t///</summary>\n\t\tCube_128x128x256,\n\t\t///<summary>\n\t\t///Cube_128x128x64\n\t\t///</summary>\n\t\tCube_128x128x64,\n\t\t///<summary>\n\t\t///Cube_128x256x128\n\t\t///</summary>\n\t\tCube_128x256x128,\n\t\t///<summary>\n\t\t///Cube_128x256x256\n\t\t///</summary>\n\t\tCube_128x256x256,\n\t\t///<summary>\n\t\t///Cube_128x256x64\n\t\t///</summary>\n\t\tCube_128x256x64,\n\t\t///<summary>\n\t\t///Cube_128x64x128\n\t\t///</summary>\n\t\tCube_128x64x128,\n\t\t///<summary>\n\t\t///Cube_128x64x256\n\t\t///</summary>\n\t\tCube_128x64x256,\n\t\t///<summary>\n\t\t///Cube_128x64x64\n\t\t///</summary>\n\t\tCube_128x64x64,\n\t\t///<summary>\n\t\t///Cube_256x128x128\n\t\t///</summary>\n\t\tCube_256x128x128,\n\t\t///<summary>\n\t\t///Cube_256x128x256\n\t\t///</summary>\n\t\tCube_256x128x256,\n\t\t///<summary>\n\t\t///Cube_256x128x512\n\t\t///</summary>\n\t\tCube_256x128x512,\n\t\t///<summary>\n\t\t///Cube_256x256x128\n\t\t///</summary>\n\t\tCube_256x256x128,\n\t\t///<summary>\n\t\t///Cube_256x256x256\n\t\t///</summary>\n\t\tCube_256x256x256,\n\t\t///<summary>\n\t\t///Cube_256x256x512\n\t\t///</summary>\n\t\tCube_256x256x512,\n\t\t///<summary>\n\t\t///Cube_256x512x128\n\t\t///</summary>\n\t\tCube_256x512x128,\n\t\t///<summary>\n\t\t///Cube_256x512x256\n\t\t///</summary>\n\t\tCube_256x512x256,\n\t\t///<summary>\n\t\t///Cube_256x512x512\n\t\t///</summary>\n\t\tCube_256x512x512,\n\t\t///<summary>\n\t\t///Cube_512x256x256\n\t\t///</summary>\n\t\tCube_512x256x256,\n\t\t///<summary>\n\t\t///Cube_512x256x512\n\t\t///</summary>\n\t\tCube_512x256x512,\n\t\t///<summary>\n\t\t///Cube_512x512x256\n\t\t///</summary>\n\t\tCube_512x512x256,\n\t\t///<summary>\n\t\t///Cube_512x512x512\n\t\t///</summary>\n\t\tCube_512x512x512,\n\t\t///<summary>\n\t\t///Cube_64x128x128\n\t\t///</summary>\n\t\tCube_64x128x128,\n\t\t///<summary>\n\t\t///Cube_64x128x64\n\t\t///</summary>\n\t\tCube_64x128x64,\n\t\t///<summary>\n\t\t///Cube_64x64x128\n\t\t///</summary>\n\t\tCube_64x64x128,\n\t\t///<summary>\n\t\t///Cube_64x64x64\n\t\t///</summary>\n\t\tCube_64x64x64,\n\t\t///<summary>\n\t\t///Custom object\n\t\t///</summary>\n\t\tCustomObject,\n\t\t///<summary>\n\t\t///Cycle\n\t\t///</summary>\n\t\tCycle,\n\t\t///<summary>\n\t\t///Debris\n\t\t///</summary>\n\t\tDebrisContextMenuCaption,\n\t\t///<summary>\n\t\t///Decline\n\t\t///</summary>\n\t\tDecline,\n\t\t///<summary>\n\t\t///Decoy flare\n\t\t///</summary>\n\t\tDecoyFlareHud,\n\t\t///<summary>\n\t\t///Don’t show again\n\t\t///</summary>\n\t\tDecreaseVideoSettingsCheckBox,\n\t\t///<summary>\n\t\t///Default\n\t\t///</summary>\n\t\tDefault,\n\t\t///<summary>\n\t\t///     Press {0} to show.\n\t\t///</summary>\n\t\tDefaultNotificationDisapearMessage,\n\t\t///<summary>\n\t\t///Default light\n\t\t///</summary>\n\t\tdefault_light_0,\n\t\t///<summary>\n\t\t///Default particles prefab\n\t\t///</summary>\n\t\tdefault_particles_prefab_0,\n\t\t///<summary>\n\t\t///Default sound prefab\n\t\t///</summary>\n\t\tdefault_sound_prefab_0,\n\t\t///<summary>\n\t\t///Defensive\n\t\t///</summary>\n\t\tDefensive,\n\t\t///<summary>\n\t\t///64x64x64 Deformed small sphere 1\n\t\t///</summary>\n\t\tDeformedSphere1_64x64x64,\n\t\t///<summary>\n\t\t///64x64x64 Deformed small sphere 2\n\t\t///</summary>\n\t\tDeformedSphere2_64x64x64,\n\t\t///<summary>\n\t\t///128x64x64 Deformed sphere\n\t\t///</summary>\n\t\tDeformedSphereWithCorridor_128x64x64,\n\t\t///<summary>\n\t\t///256x256x256 Deformed sphere\n\t\t///</summary>\n\t\tDeformedSphereWithCorridor_256x256x256,\n\t\t///<summary>\n\t\t///128x128x128 Deformed sphere\n\t\t///</summary>\n\t\tDeformedSphereWithCraters_128x128x128,\n\t\t///<summary>\n\t\t///64x128x64 Deformed sphere\n\t\t///</summary>\n\t\tDeformedSphereWithHoles_64x128x64,\n\t\t///<summary>\n\t\t///Delete\n\t\t///</summary>\n\t\tDelete,\n\t\t///<summary>\n\t\t///Do you really want to delete selected objects?\n\t\t///</summary>\n\t\tDeleteObjects,\n\t\t///<summary>\n\t\t///Delete selection\n\t\t///</summary>\n\t\tDeleteSelected,\n\t\t///<summary>\n\t\t///Press Delete to remove selection\n\t\t///</summary>\n\t\tDeleteSelectedTooltip,\n\t\t///<summary>\n\t\t///Cannot travel in demo\n\t\t///</summary>\n\t\tDemoUserCannotTravel,\n\t\t///<summary>\n\t\t///Depth\n\t\t///</summary>\n\t\tDepth,\n\t\t///<summary>\n\t\t///Description\n\t\t///</summary>\n\t\tDescription,\n\t\t///<summary>\n\t\t///Press LMB to detach objects at current position\n\t\t///</summary>\n\t\tDetachFromCameraTooltip,\n\t\t///<summary>\n\t\t///Detonate ammo inside drone\n\t\t///</summary>\n\t\tDetonateDrone,\n\t\t///<summary>\n\t\t///Detector\n\t\t///</summary>\n\t\tDetector,\n\t\t///<summary>\n\t\t///Developer screen\n\t\t///</summary>\n\t\tDeveloperCaption,\n\t\t///<summary>\n\t\t///Choose difficulty\n\t\t///</summary>\n\t\tDifficultyCaption,\n\t\t///<summary>\n\t\t///Easy\n\t\t///</summary>\n\t\tDifficultyEasy,\n\t\t///<summary>\n\t\t///Hard\n\t\t///</summary>\n\t\tDifficultyHard,\n\t\t///<summary>\n\t\t///Normal\n\t\t///</summary>\n\t\tDifficultyNormal,\n\t\t///<summary>\n\t\t///Diffuse color\n\t\t///</summary>\n\t\tDiffuseColor,\n\t\t///<summary>\n\t\t///Directional explosive\n\t\t///</summary>\n\t\tDirectionalExplosiveHud,\n\t\t///<summary>\n\t\t///disconnected\n\t\t///</summary>\n\t\tDisconnected,\n\t\t///<summary>\n\t\t///Disconnect waypoints\n\t\t///</summary>\n\t\tDisconnectWaypoints,\n\t\t///<summary>\n\t\t///Deletes all connections between selected waypoints\n\t\t///</summary>\n\t\tDisconnectWaypointsTooltip,\n\t\t///<summary>\n\t\t///Display name\n\t\t///</summary>\n\t\tDisplayName,\n\t\t///<summary>\n\t\t///Display prefab container bounding\n\t\t///</summary>\n\t\tDisplayPrefabContainerBounding,\n\t\t///<summary>\n\t\t///Display unselected objects bounding\n\t\t///</summary>\n\t\tDisplayUnselectedBounding,\n\t\t///<summary>\n\t\t///Distant glare\n\t\t///</summary>\n\t\tDistantGlare,\n\t\t///<summary>\n\t\t///Distant glare - flashing\n\t\t///</summary>\n\t\tDistantGlareFlashing,\n\t\t///<summary>\n\t\t///Down\n\t\t///</summary>\n\t\tDown,\n\t\t///<summary>\n\t\t///Down thrust\n\t\t///</summary>\n\t\tDownThrust,\n\t\t///<summary>\n\t\t///Do you want to keep these settings? {0} seconds remaining.\n\t\t///</summary>\n\t\tDoYouWantToKeepTheseSettingsXSecondsRemaining,\n\t\t///<summary>\n\t\t///Draw collision spots in HUD\n\t\t///</summary>\n\t\tDrawCollisionSpotsInHud,\n\t\t///<summary>\n\t\t///Draw helper primitives\n\t\t///</summary>\n\t\tDrawHelperPrimitives,\n\t\t///<summary>\n\t\t///Draw physics primitives\n\t\t///</summary>\n\t\tDrawPhysicsPrimitives,\n\t\t///<summary>\n\t\t///Draw voxel content as billboards\n\t\t///</summary>\n\t\tDrawVoxelContentAsBillboards,\n\t\t///<summary>\n\t\t///Drill\n\t\t///</summary>\n\t\tDrill,\n\t\t///<summary>\n\t\t///Drone\n\t\t///</summary>\n\t\tDrone,\n\t\t///<summary>\n\t\t///Drone camera\n\t\t///</summary>\n\t\tDroneCamera,\n\t\t///<summary>\n\t\t///Drone {0}: press {1} to take control\n\t\t///</summary>\n\t\tDroneNo,\n\t\t///<summary>\n\t\t///Dummies\n\t\t///</summary>\n\t\tDummies,\n\t\t///<summary>\n\t\t///Dummy point\n\t\t///</summary>\n\t\tDummyPoint,\n\t\t///<summary>\n\t\t///Dust\n\t\t///</summary>\n\t\tDustInfluenceSphereType,\n\t\t///<summary>\n\t\t///Each light has internally two lights: point and spot.\n\t\t///</summary>\n\t\tEachlightHasInternallyTwoLightsPointAndSpot,\n\t\t///<summary>\n\t\t///Eac Prison Asteroid\n\t\t///</summary>\n\t\tEacPrisonAsteroid,\n\t\t///<summary>\n\t\t///Edit\n\t\t///</summary>\n\t\tEdit,\n\t\t///<summary>\n\t\t///Edit asteroid\n\t\t///</summary>\n\t\tEditAsteroid,\n\t\t///<summary>\n\t\t///Edit cargo box\n\t\t///</summary>\n\t\tEditCargoBox,\n\t\t///<summary>\n\t\t///YOU ARE EDITING PREFAB CONTAINER NOW\n\t\t///</summary>\n\t\tEditingActiveContainer,\n\t\t///<summary>\n\t\t///Press Shift+J to connect selected waypoints by numbers Press Shift+K to connect/disconnect all selected waypoints Press Shift+N to create waypoint group Click a waypoint to cycle between groups it belongs to\n\t\t///</summary>\n\t\tEditingWayPointConnections,\n\t\t///<summary>\n\t\t///Press Shift+J to connect selected waypoints by numbers Press Shift+K to connect/disconnect all selected waypoints Press Shift+N to rename waypoint group {0} Ctrl+click waypoints to add/remove them from {0}\n\t\t///</summary>\n\t\tEditingWayPointConnectionsPathSelected,\n\t\t///<summary>\n\t\t///Edit objects\n\t\t///</summary>\n\t\tEditObjects,\n\t\t///<summary>\n\t\t///Editor\n\t\t///</summary>\n\t\tEditor,\n\t\t///<summary>\n\t\t///Do you really want to clear the whole sector?\n\t\t///</summary>\n\t\tEditorClearWholeSector,\n\t\t///<summary>\n\t\t///Decrease grid scale\n\t\t///</summary>\n\t\tEditorDecreaseGridScale,\n\t\t///<summary>\n\t\t///Named groups\n\t\t///</summary>\n\t\tEditorGroups,\n\t\t///<summary>\n\t\t///Add to group\n\t\t///</summary>\n\t\tEditorGroupsAddObjects,\n\t\t///<summary>\n\t\t///Create group error\n\t\t///</summary>\n\t\tEditorGroupsCantCreateGroupCaption,\n\t\t///<summary>\n\t\t///Can’t create group.\n\t\t///</summary>\n\t\tEditorGroupsCantCreateGroupText,\n\t\t///<summary>\n\t\t///Create group\n\t\t///</summary>\n\t\tEditorGroupsCreateGroup,\n\t\t///<summary>\n\t\t///Delete group\n\t\t///</summary>\n\t\tEditorGroupsDeleteGroup,\n\t\t///<summary>\n\t\t///Load from sector\n\t\t///</summary>\n\t\tEditorGroupsLoadGroup,\n\t\t///<summary>\n\t\t///Rename group error\n\t\t///</summary>\n\t\tEditorGroupsNameUsedCaption,\n\t\t///<summary>\n\t\t///The group name is already used.\n\t\t///</summary>\n\t\tEditorGroupsNameUsedText,\n\t\t///<summary>\n\t\t///Remove from group\n\t\t///</summary>\n\t\tEditorGroupsRemoveObjects,\n\t\t///<summary>\n\t\t///Rename group\n\t\t///</summary>\n\t\tEditorGroupsRenameGroup,\n\t\t///<summary>\n\t\t///Select group\n\t\t///</summary>\n\t\tEditorGroupsSelectGroup,\n\t\t///<summary>\n\t\t///Unselect group\n\t\t///</summary>\n\t\tEditorGroupsUnselectGroup,\n\t\t///<summary>\n\t\t///Editor help\n\t\t///</summary>\n\t\tEditorHelpCaption,\n\t\t///<summary>\n\t\t///Increase grid scale\n\t\t///</summary>\n\t\tEditorIncreaseGridScale,\n\t\t///<summary>\n\t\t///Are you sure you want to load? Any changes since your last save will be lost.\n\t\t///</summary>\n\t\tEditorLoadSectorMessage,\n\t\t///<summary>\n\t\t///Menu\n\t\t///</summary>\n\t\tEditorMenuButtonText,\n\t\t///<summary>\n\t\t///Object rotation amount in degrees: \n\t\t///</summary>\n\t\tEditorObjectAxisRotationAmount,\n\t\t///<summary>\n\t\t///Editor options\n\t\t///</summary>\n\t\tEditorOptions,\n\t\t///<summary>\n\t\t///Primary action key\n\t\t///</summary>\n\t\tEditorPrimaryActionKey,\n\t\t///<summary>\n\t\t///Secondary action key\n\t\t///</summary>\n\t\tEditorSecondaryActionKey,\n\t\t///<summary>\n\t\t///Type selectability & visibility\n\t\t///</summary>\n\t\tEditorSelectAndHide,\n\t\t///<summary>\n\t\t///Switch gizmo mode\n\t\t///</summary>\n\t\tEditorSwitchGizmoMode,\n\t\t///<summary>\n\t\t///Switch gizmo space\n\t\t///</summary>\n\t\tEditorSwitchGizmoSpace,\n\t\t///<summary>\n\t\t///Voxel hand\n\t\t///</summary>\n\t\tEditorVoxelHand,\n\t\t///<summary>\n\t\t///Edit prefab\n\t\t///</summary>\n\t\tEditPrefab,\n\t\t///<summary>\n\t\t///Edit container\n\t\t///</summary>\n\t\tEditPrefabContainer,\n\t\t///<summary>\n\t\t///Edit properties\n\t\t///</summary>\n\t\tEditProperties,\n\t\t///<summary>\n\t\t///Edit entity properties\n\t\t///</summary>\n\t\tEditPropertiesTooltip,\n\t\t///<summary>\n\t\t///Edit scanner\n\t\t///</summary>\n\t\tEditScanner,\n\t\t///<summary>\n\t\t///Edit selected\n\t\t///</summary>\n\t\tEditSelected,\n\t\t///<summary>\n\t\t///Edit currently selected object\n\t\t///</summary>\n\t\tEditSelectedTooltip,\n\t\t///<summary>\n\t\t///Edit small ship\n\t\t///</summary>\n\t\tEditSmallShip,\n\t\t///<summary>\n\t\t///Edit voxel hand\n\t\t///</summary>\n\t\tEditVoxelHand,\n\t\t///<summary>\n\t\t///Project to voxel surface\n\t\t///</summary>\n\t\tEditVoxelHandIsProjected,\n\t\t///<summary>\n\t\t///Voxel hand box\n\t\t///</summary>\n\t\tEditVoxelHandShapeBox,\n\t\t///<summary>\n\t\t///Voxel hand cuboid\n\t\t///</summary>\n\t\tEditVoxelHandShapeCuboid,\n\t\t///<summary>\n\t\t///Distance\n\t\t///</summary>\n\t\tEditVoxelHandShapeDistance,\n\t\t///<summary>\n\t\t///Voxel hand material\n\t\t///</summary>\n\t\tEditVoxelHandShapeMaterial,\n\t\t///<summary>\n\t\t///Voxel hand mode\n\t\t///</summary>\n\t\tEditVoxelHandShapeMode,\n\t\t///<summary>\n\t\t///Offset\n\t\t///</summary>\n\t\tEditVoxelHandShapeOffset,\n\t\t///<summary>\n\t\t///Size\n\t\t///</summary>\n\t\tEditVoxelHandShapeSize,\n\t\t///<summary>\n\t\t///Voxel hand sphere\n\t\t///</summary>\n\t\tEditVoxelHandShapeSphere,\n\t\t///<summary>\n\t\t///Voxel hand type\n\t\t///</summary>\n\t\tEditVoxelHandShapeType,\n\t\t///<summary>\n\t\t///You can also press V to enter voxel hand mode\n\t\t///</summary>\n\t\tEditVoxelHandTooltip,\n\t\t///<summary>\n\t\t///Email address\n\t\t///</summary>\n\t\tEmailAddress,\n\t\t///<summary>\n\t\t///EMP bomb\n\t\t///</summary>\n\t\tEMPBombHud,\n\t\t///<summary>\n\t\t///Empty description\n\t\t///</summary>\n\t\tEmptyDescription,\n\t\t///<summary>\n\t\t///Enabled\n\t\t///</summary>\n\t\tEnabled,\n\t\t///<summary>\n\t\t///Enable lights in editor\n\t\t///</summary>\n\t\tEnableLightsInEditor,\n\t\t///<summary>\n\t\t///Enable snap point filter\n\t\t///</summary>\n\t\tEnableSnapPointFilter,\n\t\t///<summary>\n\t\t///End\n\t\t///</summary>\n\t\tEnd,\n\t\t///<summary>\n\t\t///Enemy\n\t\t///</summary>\n\t\tEnemy,\n\t\t///<summary>\n\t\t///Purchase cheats at www.minerwars.com/Store\n\t\t///</summary>\n\t\tPurchaseCheats,\n\t\t///<summary>\n\t\t///Enemies can’t die\n\t\t///</summary>\n\t\tEnemyCantDie,\n\t\t///<summary>\n\t\t///Engine\n\t\t///</summary>\n\t\tEngine,\n\t\t///<summary>\n\t\t///CHEMICAL ENGINE 1 | Max speed: 100 m/s | Thurst: 900000 N | Fuel: Helium\n\t\t///</summary>\n\t\tEngineChemical1,\n\t\t///<summary>\n\t\t///CHEMICAL ENGINE 2 | Max speed: 105 m/s | Thurst: 1000000 N | Fuel: Helium\n\t\t///</summary>\n\t\tEngineChemical2,\n\t\t///<summary>\n\t\t///CHEMICAL ENGINE 3 | Max speed: 110 m/s | Thurst: 1100000 N | Fuel: Helium\n\t\t///</summary>\n\t\tEngineChemical3,\n\t\t///<summary>\n\t\t///CHEMICAL ENGINE 4 | Max speed: 115 m/s | Thurst: 1200000 N | Fuel: Helium\n\t\t///</summary>\n\t\tEngineChemical4,\n\t\t///<summary>\n\t\t///CHEMICAL ENGINE 5 | Max speed: 120 m/s | Thurst: 1300000 N | Fuel: Helium\n\t\t///</summary>\n\t\tEngineChemical5,\n\t\t///<summary>\n\t\t///NUCLEAR ENGINE 1 | Max speed: 140 m/s | Thurst: 1100000 N | Fuel: Plutonium\n\t\t///</summary>\n\t\tEngineNuclear1,\n\t\t///<summary>\n\t\t///NUCLEAR ENGINE 2 | Max speed: 145 m/s | Thurst: 1200000 N | Fuel: Plutonium\n\t\t///</summary>\n\t\tEngineNuclear2,\n\t\t///<summary>\n\t\t///NUCLEAR ENGINE 3 | Max speed: 150 m/s | Thurst: 1300000 N | Fuel: Plutonium\n\t\t///</summary>\n\t\tEngineNuclear3,\n\t\t///<summary>\n\t\t///NUCLEAR ENGINE 4 | Max speed: 155 m/s | Thurst: 1400000 N | Fuel: Plutonium\n\t\t///</summary>\n\t\tEngineNuclear4,\n\t\t///<summary>\n\t\t///NUCLEAR ENGINE 5 | Max speed: 160 m/s | Thurst: 1500000 N | Fuel: Plutonium\n\t\t///</summary>\n\t\tEngineNuclear5,\n\t\t///<summary>\n\t\t///POWER CELLS ENGINE 1 | Max speed: 130 m/s | Thurst: 1000000 N | Fuel: Ice\n\t\t///</summary>\n\t\tEnginePowerCells1,\n\t\t///<summary>\n\t\t///POWER CELLS ENGINE 2 | Max speed: 135 m/s | Thurst: 1075000 N | Fuel: Ice\n\t\t///</summary>\n\t\tEnginePowerCells2,\n\t\t///<summary>\n\t\t///POWER CELLS ENGINE 3 | Max speed: 140 m/s | Thurst: 1150000 N | Fuel: Ice\n\t\t///</summary>\n\t\tEnginePowerCells3,\n\t\t///<summary>\n\t\t///POWER CELLS ENGINE 4 | Max speed: 145 m/s | Thurst: 1225000 N | Fuel: Ice\n\t\t///</summary>\n\t\tEnginePowerCells4,\n\t\t///<summary>\n\t\t///POWER CELLS ENGINE 5 | Max speed: 150 m/s | Thurst: 1300000 N | Fuel: Ice\n\t\t///</summary>\n\t\tEnginePowerCells5,\n\t\t///<summary>\n\t\t///Engines\n\t\t///</summary>\n\t\tEngineShutdown,\n\t\t///<summary>\n\t\t///Enter at least 2 characters\n\t\t///</summary>\n\t\tEnterAtLeastTwoCharacters,\n\t\t///<summary>\n\t\t///Enter prefab container\n\t\t///</summary>\n\t\tEnterPrefabContainer,\n\t\t///<summary>\n\t\t///Press LMB on prefab inside selected prefab container to enter container edit mode\n\t\t///</summary>\n\t\tEnterPrefabContainerTooltip,\n\t\t///<summary>\n\t\t///Entering sector… please wait.\n\t\t///</summary>\n\t\tEnterSectorInProgressPleaseWait,\n\t\t///<summary>\n\t\t///Enter voxel hand\n\t\t///</summary>\n\t\tEnterVoxelHand,\n\t\t///<summary>\n\t\t///Press V button to modify asteroids using the voxel hand\n\t\t///</summary>\n\t\tEnterVoxelHandTooltip,\n\t\t///<summary>\n\t\t///EntityId: \n\t\t///</summary>\n\t\tEntityId,\n\t\t///<summary>\n\t\t///Entity is already connected\n\t\t///</summary>\n\t\tEntityIsAlreadyConnected,\n\t\t///<summary>\n\t\t///Entity does not exist\n\t\t///</summary>\n\t\tEntityIsNotExist,\n\t\t///<summary>\n\t\t///Entity is not supported\n\t\t///</summary>\n\t\tEntityIsNotSupported,\n\t\t///<summary>\n\t\t///Entry point is already defined. Select the already defined entry point?\n\t\t///</summary>\n\t\tEntryPointAlreadyDefined,\n\t\t///<summary>\n\t\t///Error creating network connection. Miner Wars will run in  offline mode. For more information see the log file.\n\t\t///</summary>\n\t\tErrorCreatingNetworkConnection,\n\t\t///<summary>\n\t\t///Exit\n\t\t///</summary>\n\t\tExit,\n\t\t///<summary>\n\t\t///Exit prefab container\n\t\t///</summary>\n\t\tExitEditingMode,\n\t\t///<summary>\n\t\t///Exits from prefab container editing mode\n\t\t///</summary>\n\t\tExitEditingModeTooltip,\n\t\t///<summary>\n\t\t///Exit selected\n\t\t///</summary>\n\t\tExitSelected,\n\t\t///<summary>\n\t\t///Exit to main menu\n\t\t///</summary>\n\t\tExitToMainMenu,\n\t\t///<summary>\n\t\t///Exit to Windows\n\t\t///</summary>\n\t\tExitToWindows,\n\t\t///<summary>\n\t\t///Exit voxel hand\n\t\t///</summary>\n\t\tExitVoxelHand,\n\t\t///<summary>\n\t\t///Press the V button again to exit voxel hand mode\n\t\t///</summary>\n\t\tExitVoxelHandTooltip,\n\t\t///<summary>\n\t\t///Add one milion credits\n\t\t///</summary>\n\t\tExtraMoney,\n\t\t///<summary>\n\t\t///Faction\n\t\t///</summary>\n\t\tFaction,\n\t\t///<summary>\n\t\t///People’s Republic of China\n\t\t///</summary>\n\t\tFactionChinese,\n\t\t///<summary>\n\t\t///Commonwealth of Holy Church\n\t\t///</summary>\n\t\tFactionChurch,\n\t\t///<summary>\n\t\t///Czecho-Slovak Federation\n\t\t///</summary>\n\t\tFactionCSR,\n\t\t///<summary>\n\t\t///Euro-American Confederation\n\t\t///</summary>\n\t\tFactionEuroamerican,\n\t\t///<summary>\n\t\t///Fourth Reich\n\t\t///</summary>\n\t\tFactionFourthReich,\n\t\t///<summary>\n\t\t///Free Asia\n\t\t///</summary>\n\t\tFactionFreeAsia,\n\t\t///<summary>\n\t\t///Freelancers\n\t\t///</summary>\n\t\tFactionFreelancers,\n\t\t///<summary>\n\t\t///FSRE\n\t\t///</summary>\n\t\tFactionFSRE,\n\t\t///<summary>\n\t\t///Free Republic of India\n\t\t///</summary>\n\t\tFactionIndia,\n\t\t///<summary>\n\t\t///Japanese Empire\n\t\t///</summary>\n\t\tFactionJapan,\n\t\t///<summary>\n\t\t///Miners\n\t\t///</summary>\n\t\tFactionMiners,\n\t\t///<summary>\n\t\t///None\n\t\t///</summary>\n\t\tFactionNone,\n\t\t///<summary>\n\t\t///OmniCorp\n\t\t///</summary>\n\t\tFactionOmnicorp,\n\t\t///<summary>\n\t\t///Pirate\n\t\t///</summary>\n\t\tFactionPirate,\n\t\t///<summary>\n\t\t///Space Rangers\n\t\t///</summary>\n\t\tFactionRangers,\n\t\t///<summary>\n\t\t///Ravens Force\n\t\t///</summary>\n\t\tFactionRavens,\n\t\t///<summary>\n\t\t///Russian\n\t\t///</summary>\n\t\tFactionRussian,\n\t\t///<summary>\n\t\t///Russian Commando\n\t\t///</summary>\n\t\tFactionRussianKGB,\n\t\t///<summary>\n\t\t///Arabs\n\t\t///</summary>\n\t\tFactionSaudi,\n\t\t///<summary>\n\t\t///Slavers\n\t\t///</summary>\n\t\tFactionSlavers,\n\t\t///<summary>\n\t\t///Space Mining Ltd.\n\t\t///</summary>\n\t\tFactionSMLtd,\n\t\t///<summary>\n\t\t///The Syndicate\n\t\t///</summary>\n\t\tFactionSyndicate,\n\t\t///<summary>\n\t\t///The Templars\n\t\t///</summary>\n\t\tFactionTemplars,\n\t\t///<summary>\n\t\t///Space Trader’s Guild\n\t\t///</summary>\n\t\tFactionTraders,\n\t\t///<summary>\n\t\t///Trade & Transport Ltd.\n\t\t///</summary>\n\t\tFactionTTLtd,\n\t\t///<summary>\n\t\t///Fake screen\n\t\t///</summary>\n\t\tFakeScreen,\n\t\t///<summary>\n\t\t///This feature is disabled.\n\t\t///</summary>\n\t\tFeatureNotYetImplemented,\n\t\t///<summary>\n\t\t///Field of view\n\t\t///</summary>\n\t\tFieldOfView,\n\t\t///<summary>\n\t\t///Display only items for which I have blueprints\n\t\t///</summary>\n\t\tFilterOnlyItemsOnWhichHasBlueprintsToolTip,\n\t\t///<summary>\n\t\t///Display only items for which I have enough ore\n\t\t///</summary>\n\t\tFilterOnlyItemsOnWhichHasOreToolTip,\n\t\t///<summary>\n\t\t///Display only items which I have already created\n\t\t///</summary>\n\t\tFilterOnlyItemsWhichHasBuildToolTip,\n\t\t///<summary>\n\t\t///Finished missions\n\t\t///</summary>\n\t\tFinishedMissions,\n\t\t///<summary>\n\t\t///Finished sub-missions\n\t\t///</summary>\n\t\tFinishedSubmissions,\n\t\t///<summary>\n\t\t///Fire fifth weapon\n\t\t///</summary>\n\t\tFireFifthWeapon,\n\t\t///<summary>\n\t\t///Fire fourth weapon\n\t\t///</summary>\n\t\tFireFourthWeapon,\n\t\t///<summary>\n\t\t///Fire primary weapon\n\t\t///</summary>\n\t\tFirePrimaryWeapon,\n\t\t///<summary>\n\t\t///Fire secondary weapon\n\t\t///</summary>\n\t\tFireSecondaryWeapon,\n\t\t///<summary>\n\t\t///Fire third weapon\n\t\t///</summary>\n\t\tFireThirdWeapon,\n\t\t///<summary>\n\t\t///First spawn\n\t\t///</summary>\n\t\tFirstSpawn,\n\t\t///<summary>\n\t\t///Fix all collisions before returning back to game\n\t\t///</summary>\n\t\tFixCollisions,\n\t\t///<summary>\n\t\t///Fixed snap point size\n\t\t///</summary>\n\t\tFixedSnapPointSize,\n\t\t///<summary>\n\t\t///Flash bomb\n\t\t///</summary>\n\t\tFlashBombHud,\n\t\t///<summary>\n\t\t///Flee\n\t\t///</summary>\n\t\tFlee,\n\t\t///<summary>\n\t\t///Fog settings\n\t\t///</summary>\n\t\tFogSettings,\n\t\t///<summary>\n\t\t///Configure fog settings\n\t\t///</summary>\n\t\tFogSettingsTooltip,\n\t\t///<summary>\n\t\t///Follow target\n\t\t///</summary>\n\t\tFollowTarget,\n\t\t///<summary>\n\t\t///You cannot travel here.\n\t\t///</summary>\n\t\tForbiddenSolarMapAreaWarning,\n\t\t///<summary>\n\t\t///By submitting this form, you confirm that you have read and agree to the Miner Wars Terms of Use\n\t\t///</summary>\n\t\tFormAgreement1,\n\t\t///<summary>\n\t\t///and Privacy Policy. For more information visit www.minerwars.com.\n\t\t///</summary>\n\t\tFormAgreement2,\n\t\t///<summary>\n\t\t///Fortress\n\t\t///</summary>\n\t\tFortress,\n\t\t///<summary>\n\t\t///Forward thrust\n\t\t///</summary>\n\t\tForwardThrust,\n\t\t///<summary>\n\t\t///Foundation factory\n\t\t///</summary>\n\t\tFoundationFactory,\n\t\t///<summary>\n\t\t///Add foundation factory\n\t\t///</summary>\n\t\tFoundationFactoryInInventory,\n\t\t///<summary>\n\t\t///Fourth Reich mothership\n\t\t///</summary>\n\t\tFourthReichMothership,\n\t\t///<summary>\n\t\t///Fourth Reich mothership B\n\t\t///</summary>\n\t\tFourthReichMothership_B,\n\t\t///<summary>\n\t\t///Friend\n\t\t///</summary>\n\t\tFriend,\n\t\t///<summary>\n\t\t///Friend name\n\t\t///</summary>\n\t\tFriendName,\n\t\t///<summary>\n\t\t///Friends and neutrals can’t die\n\t\t///</summary>\n\t\tFriendNeutralCantDie,\n\t\t///<summary>\n\t\t///Friend’s sector\n\t\t///</summary>\n\t\tFriendsSectorMap,\n\t\t///<summary>\n\t\t///Friend’s sectors\n\t\t///</summary>\n\t\tFriendsSectors,\n\t\t///<summary>\n\t\t///Full screen\n\t\t///</summary>\n\t\tFullscreen,\n\t\t///<summary>\n\t\t///Game\n\t\t///</summary>\n\t\tGame,\n\t\t///<summary>\n\t\t///Game options\n\t\t///</summary>\n\t\tGameOptions,\n\t\t///<summary>\n\t\t///Press Esc to exit to the main menu\n\t\t///</summary>\n\t\tGameOverInstructionsPart1,\n\t\t///<summary>\n\t\t///Gamepad\n\t\t///</summary>\n\t\tGamepad,\n\t\t///<summary>\n\t\t///Analog\n\t\t///</summary>\n\t\tAnalogAxes,\n\t\t///<summary>\n\t\t///Gameplay\n\t\t///</summary>\n\t\tGamePlay,\n\t\t///<summary>\n\t\t///Sound volume\n\t\t///</summary>\n\t\tGameVolume,\n\t\t///<summary>\n\t\t///General\n\t\t///</summary>\n\t\tGeneral,\n\t\t///<summary>\n\t\t///General\n\t\t///</summary>\n\t\tGeneralContextMenuCaption,\n\t\t///<summary>\n\t\t///Generator\n\t\t///</summary>\n\t\tGenerator,\n\t\t///<summary>\n\t\t///Gizmo space: \n\t\t///</summary>\n\t\tGizmoSpaceEditorText,\n\t\t///<summary>\n\t\t///Local\n\t\t///</summary>\n\t\tGizmoSpaceLocal,\n\t\t///<summary>\n\t\t///World\n\t\t///</summary>\n\t\tGizmoSpaceWorld,\n\t\t///<summary>\n\t\t///Factions have changed\n\t\t///</summary>\n\t\tGlobalEventFactionChangeDescription,\n\t\t///<summary>\n\t\t///Factions have changed\n\t\t///</summary>\n\t\tGlobalEventFactionChangeName,\n\t\t///<summary>\n\t\t///Faction {0} signed a peace agreement with {1}.\n\t\t///</summary>\n\t\tGlobalEventFactionRelationChange_EnemyToNeutral,\n\t\t///<summary>\n\t\t///{0} and {1} are no longer friends.\n\t\t///</summary>\n\t\tGlobalEventFactionRelationChange_FriendsToNeutral,\n\t\t///<summary>\n\t\t///Faction {0} declares war to {1}.\n\t\t///</summary>\n\t\tGlobalEventFactionRelationChange_NeutralToEnemy,\n\t\t///<summary>\n\t\t///{0} and {1} became friends.\n\t\t///</summary>\n\t\tGlobalEventFactionRelationChange_NeutralToFriends,\n\t\t///<summary>\n\t\t///Global Events\n\t\t///</summary>\n\t\tGlobalEvents,\n\t\t///<summary>\n\t\t///The sun has errupted, prepare for the hot surge!\n\t\t///</summary>\n\t\tGlobalEventSunWindDescription,\n\t\t///<summary>\n\t\t///Sun wind\n\t\t///</summary>\n\t\tGlobalEventSunWindName,\n\t\t///<summary>\n\t\t///Meteor wind\n\t\t///</summary>\n\t\tGlobalEventMeteorWindName,\n\t\t///<summary>\n\t\t///Ice Storm\n\t\t///</summary>\n\t\tGlobalEventIceStormName,\n\t\t///<summary>\n\t\t///Gold\n\t\t///</summary>\n\t\tGold_01,\n\t\t///<summary>\n\t\t///Gravitation bomb\n\t\t///</summary>\n\t\tGravityBombHud,\n\t\t///<summary>\n\t\t///Green\n\t\t///</summary>\n\t\tGreen,\n\t\t///<summary>\n\t\t/// meters\n\t\t///</summary>\n\t\tGridInMeters,\n\t\t///<summary>\n\t\t///Grid scale indicator:   \n\t\t///</summary>\n\t\tGridScaleIndicator,\n\t\t///<summary>\n\t\t///Grid snap: \n\t\t///</summary>\n\t\tGridSnapEditorText,\n\t\t///<summary>\n\t\t///Hack from hub\n\t\t///</summary>\n\t\tHackFromHUB,\n\t\t///<summary>\n\t\t///Hacking\n\t\t///</summary>\n\t\tHacking,\n\t\t///<summary>\n\t\t///Hacking level\n\t\t///</summary>\n\t\tHackingLevel,\n\t\t///<summary>\n\t\t///Hacking in progress…\n\t\t///</summary>\n\t\tHackingProgress,\n\t\t///<summary>\n\t\t///Can’t be hacked\n\t\t///</summary>\n\t\tHackingResult_CanNotBeHacked,\n\t\t///<summary>\n\t\t///You need a hacking tool of level {0}, but you have only {1}\n\t\t///</summary>\n\t\tHackingResult_NotEnoughLevel,\n\t\t///<summary>\n\t\t///Hacking time\n\t\t///</summary>\n\t\tHackingTime,\n\t\t///<summary>\n\t\t///HACKING TOOL LEVEL 1 | Hacks terminals protected by level 1\n\t\t///</summary>\n\t\tHackingTool_Level1,\n\t\t///<summary>\n\t\t///HACKING TOOL LEVEL 2 | Hacks terminals protected by level 2, and speeds up hacking\n\t\t///</summary>\n\t\tHackingTool_Level2,\n\t\t///<summary>\n\t\t///HACKING TOOL LEVEL 3 | Hacks terminals protected by level 3, and speeds up hacking\n\t\t///</summary>\n\t\tHackingTool_Level3,\n\t\t///<summary>\n\t\t///HACKING TOOL LEVEL 4 | Hacks terminals protected by level 4, and speeds up hacking\n\t\t///</summary>\n\t\tHackingTool_Level4,\n\t\t///<summary>\n\t\t///HACKING TOOL LEVEL 5 | Hacks terminals protected by level 5, and speeds up hacking\n\t\t///</summary>\n\t\tHackingTool_Level5,\n\t\t///<summary>\n\t\t///Hack solo\n\t\t///</summary>\n\t\tHackSolo,\n\t\t///<summary>\n\t\t///Hangar\n\t\t///</summary>\n\t\tHangar,\n\t\t///<summary>\n\t\t///Hardware cursor\n\t\t///</summary>\n\t\tHardwareCursor,\n\t\t///<summary>\n\t\t///Use harvesting device\n\t\t///</summary>\n\t\tHarvest,\n\t\t///<summary>\n\t\t///Harvester\n\t\t///</summary>\n\t\tHarvester,\n\t\t///<summary>\n\t\t///Toggle headlights\n\t\t///</summary>\n\t\tToggleHeadlights,\n\t\t///<summary>\n\t\t///Headlights distance\n\t\t///</summary>\n\t\tHeadlightsDistance,\n\t\t///<summary>\n\t\t///Headlights range\n\t\t///</summary>\n\t\tHeadlightsRange,\n\t\t///<summary>\n\t\t///Close\n\t\t///</summary>\n\t\tHeadlightsRangeClose,\n\t\t///<summary>\n\t\t///Long\n\t\t///</summary>\n\t\tHeadlightsRangeLong,\n\t\t///<summary>\n\t\t///Health\n\t\t///</summary>\n\t\tHealth,\n\t\t///<summary>\n\t\t///Height\n\t\t///</summary>\n\t\tHeight,\n\t\t///<summary>\n\t\t///Helium 1\n\t\t///</summary>\n\t\tHelium3_01,\n\t\t///<summary>\n\t\t///Helium 2\n\t\t///</summary>\n\t\tHelium4_01,\n\t\t///<summary>\n\t\t///Help\n\t\t///</summary>\n\t\tHelp,\n\t\t///<summary>\n\t\t///Help\n\t\t///</summary>\n\t\tHelpCaption,\n\t\t///<summary>\n\t\t///HemisphericLight\n\t\t///</summary>\n\t\tHemisphericLight,\n\t\t///<summary>\n\t\t///Visible\n\t\t///</summary>\n\t\tVisible,\n\t\t///<summary>\n\t\t///Hide snap points\n\t\t///</summary>\n\t\tHideSnapPoints,\n\t\t///<summary>\n\t\t///HIGH ENDURANCE ARMOR | Projectile/explosion damage reduction: 100% | Solar wind damage reduction: 0%\n\t\t///</summary>\n\t\tHighEnduranceArmor,\n\t\t///<summary>\n\t\t///Home\n\t\t///</summary>\n\t\tHome,\n\t\t///<summary>\n\t\t///New missions available!\n\t\t///</summary>\n\t\tHudNewMissionAvailable,\n\t\t///<summary>\n\t\t///Ice\n\t\t///</summary>\n\t\tIce_01,\n\t\t///<summary>\n\t\t///Illuminating shell\n\t\t///</summary>\n\t\tIlluminatingShellHud,\n\t\t///<summary>\n\t\t///Indestructible\n\t\t///</summary>\n\t\tIndestructible,\n\t\t///<summary>\n\t\t///Indestructible 1\n\t\t///</summary>\n\t\tIndestructible_01,\n\t\t///<summary>\n\t\t///Indestructible 2\n\t\t///</summary>\n\t\tIndestructible_02,\n\t\t///<summary>\n\t\t///Indestructible 3\n\t\t///</summary>\n\t\tIndestructible_03,\n\t\t///<summary>\n\t\t///Indestructible 4\n\t\t///</summary>\n\t\tIndestructible_04,\n\t\t///<summary>\n\t\t///Indestructible 5 Craters\n\t\t///</summary>\n\t\tIndestructible_05_Craters_01,\n\t\t///<summary>\n\t\t///Infinite ammo\n\t\t///</summary>\n\t\tInfiniteAmmo,\n\t\t///<summary>\n\t\t///Infinite fuel\n\t\t///</summary>\n\t\tInfiniteFuel,\n\t\t///<summary>\n\t\t///Infinite oxygen\n\t\t///</summary>\n\t\tInfiniteOxygen,\n\t\t///<summary>\n\t\t///Influence spheres\n\t\t///</summary>\n\t\tInfluenceSpheres,\n\t\t///<summary>\n\t\t///Influence sphere\n\t\t///</summary>\n\t\tInfluenceSphereContextMenuCaption,\n\t\t///<summary>\n\t\t///Insert\n\t\t///</summary>\n\t\tInsert,\n\t\t///<summary>\n\t\t///Instant building\n\t\t///</summary>\n\t\tInstantBuilding,\n\t\t///<summary>\n\t\t///Selection already on this position, please choose a different one\n\t\t///</summary>\n\t\tInvalidPositionCoordinates,\n\t\t///<summary>\n\t\t///Please check your timezone and time. Valid timezone and time (withing tolerance) is required to connect to server.\n\t\t///</summary>\n\t\tInvalidTime,\n\t\t///<summary>\n\t\t///Inventory\n\t\t///</summary>\n\t\tInventory,\n\t\t///<summary>\n\t\t///Invert mouse X axis\n\t\t///</summary>\n\t\tInvertMouseX,\n\t\t///<summary>\n\t\t///Invert mouse Y axis\n\t\t///</summary>\n\t\tInvertMouseY,\n\t\t///<summary>\n\t\t///Iron 1\n\t\t///</summary>\n\t\tIron_01,\n\t\t///<summary>\n\t\t///Iron 2\n\t\t///</summary>\n\t\tIron_02,\n\t\t///<summary>\n\t\t///Is hacked\n\t\t///</summary>\n\t\tIsHacked,\n\t\t///<summary>\n\t\t///Join friend’s game\n\t\t///</summary>\n\t\tJoinFriendGame,\n\t\t///<summary>\n\t\t///Journal\n\t\t///</summary>\n\t\tJournalDialogTitle,\n\t\t///<summary>\n\t\t///Joystick or gamepad\n\t\t///</summary>\n\t\tJoystick,\n\t\t///<summary>\n\t\t///JB\n\t\t///</summary>\n\t\tJoystickButton,\n\t\t///<summary>\n\t\t///JDLeft\n\t\t///</summary>\n\t\tJoystickButtonLeft,\n\t\t///<summary>\n\t\t///JDRight\n\t\t///</summary>\n\t\tJoystickButtonRight,\n\t\t///<summary>\n\t\t///JDUp\n\t\t///</summary>\n\t\tJoystickButtonUp,\n\t\t///<summary>\n\t\t///JDDown\n\t\t///</summary>\n\t\tJoystickButtonDown,\n\t\t///<summary>\n\t\t///Joystick deadzone width\n\t\t///</summary>\n\t\tJoystickDeadzone,\n\t\t///<summary>\n\t\t///Joystick gradual precision\n\t\t///</summary>\n\t\tJoystickExponent,\n\t\t///<summary>\n\t\t///Joystick sensitivity\n\t\t///</summary>\n\t\tJoystickSensitivity,\n\t\t///<summary>\n\t\t///Keyboard\n\t\t///</summary>\n\t\tKeyboard,\n\t\t///<summary>\n\t\t///Kill them all\n\t\t///</summary>\n\t\tKillAll,\n\t\t///<summary>\n\t\t///Enable object pivot\n\t\t///</summary>\n\t\tLabelEnableObjectPivot,\n\t\t///<summary>\n\t\t///Save player’s ship\n\t\t///</summary>\n\t\tLabelSavePlayerShip,\n\t\t///<summary>\n\t\t///Language\n\t\t///</summary>\n\t\tLanguage,\n\t\t///<summary>\n\t\t///Česky\n\t\t///</summary>\n\t\tLanguageCesky,\n\t\t///<summary>\n\t\t///Deutsch\n\t\t///</summary>\n\t\tLanguageDeutsch,\n\t\t///<summary>\n\t\t///English\n\t\t///</summary>\n\t\tLanguageEnglish,\n\t\t///<summary>\n\t\t///Espanol\n\t\t///</summary>\n\t\tLanguageEspanol,\n\t\t///<summary>\n\t\t///France\n\t\t///</summary>\n\t\tLanguageFrance,\n\t\t///<summary>\n\t\t///Italian\n\t\t///</summary>\n\t\tLanguageItalian,\n\t\t///<summary>\n\t\t///Russian\n\t\t///</summary>\n\t\tLanguageRussian,\n\t\t///<summary>\n\t\t///Slovensky\n\t\t///</summary>\n\t\tLanguageSlovensky,\n\t\t///<summary>\n\t\t///Largeship\n\t\t///</summary>\n\t\tLargeship,\n\t\t///<summary>\n\t\t///Ardant\n\t\t///</summary>\n\t\tLargeShipArdant,\n\t\t///<summary>\n\t\t///Large ship Complets\n\t\t///</summary>\n\t\tLargeShipComplets,\n\t\t///<summary>\n\t\t///Large ship\n\t\t///</summary>\n\t\tLargeShipContextMenuCaption,\n\t\t///<summary>\n\t\t///KAI Mothership\n\t\t///</summary>\n\t\tLargeShipKai,\n\t\t///<summary>\n\t\t///SAYA Mothership\n\t\t///</summary>\n\t\tLargeShipSaya,\n\t\t///<summary>\n\t\t///Lava 1\n\t\t///</summary>\n\t\tLava_01,\n\t\t///<summary>\n\t\t///Left\n\t\t///</summary>\n\t\tLeft,\n\t\t///<summary>\n\t\t///LAlt\n\t\t///</summary>\n\t\tLeftAlt,\n\t\t///<summary>\n\t\t///LCtrl\n\t\t///</summary>\n\t\tLeftControl,\n\t\t///<summary>\n\t\t///LMB\n\t\t///</summary>\n\t\tLeftMouseButton,\n\t\t///<summary>\n\t\t///LShift\n\t\t///</summary>\n\t\tLeftShift,\n\t\t///<summary>\n\t\t///Left wing\n\t\t///</summary>\n\t\tLeftWeapons,\n\t\t///<summary>\n\t\t///Link Snap Points\n\t\t///</summary>\n\t\tLinkSnapPoints,\n\t\t///<summary>\n\t\t///Load\n\t\t///</summary>\n\t\tLoad,\n\t\t///<summary>\n\t\t///Load chapter\n\t\t///</summary>\n\t\tLoadChapter,\n\t\t///<summary>\n\t\t///Load checkpoint\n\t\t///</summary>\n\t\tLoadCheckpoint,\n\t\t///<summary>\n\t\t///LOADING … PLEASE WAIT\n\t\t///</summary>\n\t\tLoadingPleaseWait,\n\t\t///<summary>\n\t\t///Load sector\n\t\t///</summary>\n\t\tLoadSector,\n\t\t///<summary>\n\t\t///Loading available sectors… please wait\n\t\t///</summary>\n\t\tLoadSectorIdentifiersPleaseWait,\n\t\t///<summary>\n\t\t///Load sector from server\n\t\t///</summary>\n\t\tLoadSectorTooltip,\n\t\t///<summary>\n\t\t///Log garbage collection\n\t\t///</summary>\n\t\tLogGarbageCollection,\n\t\t///<summary>\n\t\t///You are logged in as:\n\t\t///</summary>\n\t\tLoggedPlayer,\n\t\t///<summary>\n\t\t///Logging in draw/update\n\t\t///</summary>\n\t\tLoggingInDrawUpdate,\n\t\t///<summary>\n\t\t///Login\n\t\t///</summary>\n\t\tLogin,\n\t\t///<summary>\n\t\t///Login in progress… please wait.\n\t\t///</summary>\n\t\tLoginInProgressPleaseWait,\n\t\t///<summary>\n\t\t///Logout\n\t\t///</summary>\n\t\tLogout,\n\t\t///<summary>\n\t\t///Logout in progress… please wait.\n\t\t///</summary>\n\t\tLogoutInProgressPleaseWait,\n\t\t///<summary>\n\t\t///Magnesium\n\t\t///</summary>\n\t\tMagnesium_01,\n\t\t///<summary>\n\t\t///Map\n\t\t///</summary>\n\t\tMap,\n\t\t///<summary>\n\t\t///Max health\n\t\t///</summary>\n\t\tMaxHealth,\n\t\t///<summary>\n\t\t///Maximum allowed number of large ships has been reached\n\t\t///</summary>\n\t\tMaxLargeShipsCountReached,\n\t\t///<summary>\n\t\t///Max number of objects reached\n\t\t///</summary>\n\t\tMaxObjectsReached,\n\t\t///<summary>\n\t\t///Maximum asteroid count reached\n\t\t///</summary>\n\t\tMaxVoxelMapsLimitReached,\n\t\t///<summary>\n\t\t///Are you sure you want to discard all your current progress? Starting a New story deletes all saved checkpoints.\n\t\t///</summary>\n\t\tMessageAreYouSureYouWantStartNewStory,\n\t\t///<summary>\n\t\t///ERROR\n\t\t///</summary>\n\t\tMessageBoxCaptionError,\n\t\t///<summary>\n\t\t///FEATURE DISABLED\n\t\t///</summary>\n\t\tMessageBoxCaptionFeatureDisabled,\n\t\t///<summary>\n\t\t///PLEASE CONFIRM\n\t\t///</summary>\n\t\tMessageBoxCaptionPleaseConfirm,\n\t\t///<summary>\n\t\t///EXIT\n\t\t///</summary>\n\t\tMessageBoxExitQuestion,\n\t\t///<summary>\n\t\t///LOGOUT?\n\t\t///</summary>\n\t\tMessageBoxLogoutQuestion,\n\t\t///<summary>\n\t\t///Entity name already exists!\n\t\t///</summary>\n\t\tMessageEntityNameIsAlreadyExists,\n\t\t///<summary>\n\t\t///Health can’t be less than or equal to zero!\n\t\t///</summary>\n\t\tMessageHealthCantBeLessOrEqualZero,\n\t\t///<summary>\n\t\t///Max health can’t be less than or equal to zero!\n\t\t///</summary>\n\t\tMessageMaxHealthCantBeLessOrEqualZero,\n\t\t///<summary>\n\t\t///Please be aware that this is just a placeholder. The MMO mode will be added in the future.\n\t\t///</summary>\n\t\tMessageMmoWillBeAddedLater,\n\t\t///<summary>\n\t\t///Please, visit our web site “{0}” to buy the game now.\n\t\t///</summary>\n\t\tMessagePleaseVisitOurWebSiteToBuyGameNow,\n\t\t///<summary>\n\t\t///(Press {0} to hide)\n\t\t///</summary>\n\t\tMessagePressToHide,\n\t\t///<summary>\n\t\t///Demo mode – saving is disabled\n\t\t///</summary>\n\t\tMessageYouHaveDemoAccess,\n\t\t///<summary>\n\t\t///You must set the hacking time!\n\t\t///</summary>\n\t\tMessageYouMustSetHackingTime,\n\t\t///<summary>\n\t\t///You must set the health!\n\t\t///</summary>\n\t\tMessageYouMustSetHealth,\n\t\t///<summary>\n\t\t///You must set max health!\n\t\t///</summary>\n\t\tMessageYouMustSetMaxHealth,\n\t\t///<summary>\n\t\t///m\n\t\t///</summary>\n\t\tMetersShort,\n\t\t///<summary>\n\t\t///MMB\n\t\t///</summary>\n\t\tMiddleMouseButton,\n\t\t///<summary>\n\t\t///Mine\n\t\t///</summary>\n\t\tMineBasicHud,\n\t\t///<summary>\n\t\t///BioChem mine\n\t\t///</summary>\n\t\tMineBioChemHud,\n\t\t///<summary>\n\t\t///Smart mine\n\t\t///</summary>\n\t\tMineSmartHud,\n\t\t///<summary>\n\t\t///Missile cam\n\t\t///</summary>\n\t\tMissileCamera,\n\t\t///<summary>\n\t\t///Mission – {0}\n\t\t///</summary>\n\t\tMission,\n\t\t///<summary>\n\t\t///Mission dialog\n\t\t///</summary>\n\t\tMissionDialog,\n\t\t///<summary>\n\t\t///Modify selection\n\t\t///</summary>\n\t\tMixedContextMenuCaption,\n\t\t///<summary>\n\t\t///MMO sectors\n\t\t///</summary>\n\t\tMmoSectors,\n\t\t///<summary>\n\t\t///Modify asteroid\n\t\t///</summary>\n\t\tModifyAsteroidContextMenuCaption,\n\t\t///<summary>\n\t\t///Mouse\n\t\t///</summary>\n\t\tMouse,\n\t\t///<summary>\n\t\t///Mouse sensitivity\n\t\t///</summary>\n\t\tMouseSensitivity,\n\t\t///<summary>\n\t\t///MXB1\n\t\t///</summary>\n\t\tMouseXButton1,\n\t\t///<summary>\n\t\t///MXB2\n\t\t///</summary>\n\t\tMouseXButton2,\n\t\t///<summary>\n\t\t///Inertial dampeners\n\t\t///</summary>\n\t\tMovementSlowdown,\n\t\t///<summary>\n\t\t///Mship\n\t\t///</summary>\n\t\tMship,\n\t\t///<summary>\n\t\t///Mship body\n\t\t///</summary>\n\t\tMship_body,\n\t\t///<summary>\n\t\t///Mship engine\n\t\t///</summary>\n\t\tMship_engine,\n\t\t///<summary>\n\t\t///Mship shield back large left\n\t\t///</summary>\n\t\tMship_shield_back_large_left,\n\t\t///<summary>\n\t\t///Mship shield back large right\n\t\t///</summary>\n\t\tMship_shield_back_large_right,\n\t\t///<summary>\n\t\t///Mship shield back small left\n\t\t///</summary>\n\t\tMship_shield_back_small_left,\n\t\t///<summary>\n\t\t///Mship shield back small right\n\t\t///</summary>\n\t\tMship_shield_back_small_right,\n\t\t///<summary>\n\t\t///Mship shield front large left\n\t\t///</summary>\n\t\tMship_shield_front_large_left,\n\t\t///<summary>\n\t\t///Mship shield front large right\n\t\t///</summary>\n\t\tMship_shield_front_large_right,\n\t\t///<summary>\n\t\t///Mship shield front small02 left\n\t\t///</summary>\n\t\tMship_shield_front_small02_left,\n\t\t///<summary>\n\t\t///Mship shield front small02 right\n\t\t///</summary>\n\t\tMship_shield_front_small02_right,\n\t\t///<summary>\n\t\t///Mship shield front small left\n\t\t///</summary>\n\t\tMship_shield_front_small_left,\n\t\t///<summary>\n\t\t///Mship shield front small right\n\t\t///</summary>\n\t\tMship_shield_front_small_right,\n\t\t///<summary>\n\t\t///Mysterious cubes\n\t\t///</summary>\n\t\tMysteriousCubes,\n\t\t///<summary>\n\t\t///MysteriousCube 01\n\t\t///</summary>\n\t\tMysteriousCube_01,\n\t\t///<summary>\n\t\t///MysteriousCube 02\n\t\t///</summary>\n\t\tMysteriousCube_02,\n\t\t///<summary>\n\t\t///MysteriousCube 03\n\t\t///</summary>\n\t\tMysteriousCube_03,\n\t\t///<summary>\n\t\t///Name\n\t\t///</summary>\n\t\tName,\n\t\t///<summary>\n\t\t///Navigation\n\t\t///</summary>\n\t\tNavigation,\n\t\t///<summary>\n\t\t///Neutral\n\t\t///</summary>\n\t\tNeutral,\n\t\t///<summary>\n\t\t///New game\n\t\t///</summary>\n\t\tNewGame,\n\t\t///<summary>\n\t\t///Next secondary cam\n\t\t///</summary>\n\t\tNextCamera,\n\t\t///<summary>\n\t\t///Nickel\n\t\t///</summary>\n\t\tNickel_01,\n\t\t///<summary>\n\t\t///No\n\t\t///</summary>\n\t\tNo,\n\t\t///<summary>\n\t\t///None\n\t\t///</summary>\n\t\tNone,\n\t\t///<summary>\n\t\t///No records\n\t\t///</summary>\n\t\tNoRecords,\n\t\t///<summary>\n\t\t///Normal\n\t\t///</summary>\n\t\tNormal,\n\t\t///<summary>\n\t\t///No sectors available\n\t\t///</summary>\n\t\tNoSectorsAvailable,\n\t\t///<summary>\n\t\t///You do not have access rights to the test build\n\t\t///</summary>\n\t\tNotAccessRightsToTestBuild,\n\t\t///<summary>\n\t\t///This feature is not available in demo mode\n\t\t///</summary>\n\t\tNotAvailableInDemoMode,\n\t\t///<summary>\n\t\t///Notifications / warnings\n\t\t///</summary>\n\t\tNotifications,\n\t\t///<summary>\n\t\t///Armor critical\n\t\t///</summary>\n\t\tNotificationArmorCritical,\n\t\t///<summary>\n\t\t///Armor low\n\t\t///</summary>\n\t\tNotificationArmorLow,\n\t\t///<summary>\n\t\t///Confirm notification\n\t\t///</summary>\n\t\tNotificationConfirmation,\n\t\t///<summary>\n\t\t///Ship damage alert\n\t\t///</summary>\n\t\tNotificationDamageAlert,\n\t\t///<summary>\n\t\t///Ship damage critical\n\t\t///</summary>\n\t\tNotificationDamageCritical,\n\t\t///<summary>\n\t\t///    Use the toolbar to manipulate objects (add, delete, select, move, …).     Press {0} to select object     Press {1} to rotate camera or snap two snap points together\n\t\t///</summary>\n\t\tNotificationEditorSelectAndRotate,\n\t\t///<summary>\n\t\t///Fuel critical\n\t\t///</summary>\n\t\tNotificationFuelCritical,\n\t\t///<summary>\n\t\t///Fuel low\n\t\t///</summary>\n\t\tNotificationFuelLow,\n\t\t///<summary>\n\t\t///Health critical\n\t\t///</summary>\n\t\tNotificationHealthCritical,\n\t\t///<summary>\n\t\t///Health low\n\t\t///</summary>\n\t\tNotificationHealthLow,\n\t\t///<summary>\n\t\t///Press {0} to show mission info\n\t\t///</summary>\n\t\tNotificationMissionAvailableInRange,\n\t\t///<summary>\n\t\t///Objective complete!\n\t\t///</summary>\n\t\tNotificationObjectiveComplete,\n\t\t///<summary>\n\t\t///Oxygen critical\n\t\t///</summary>\n\t\tNotificationOxygenCritical,\n\t\t///<summary>\n\t\t///Oxygen low\n\t\t///</summary>\n\t\tNotificationOxygenLow,\n\t\t///<summary>\n\t\t///Press Num 0 to build\n\t\t///</summary>\n\t\tNotificationYouCanBuild,\n\t\t///<summary>\n\t\t///Press {0} to examine {2}, press {1} to take all\n\t\t///</summary>\n\t\tNotificationYouCanExamine,\n\t\t///<summary>\n\t\t///Hold {0} to hack {1}\n\t\t///</summary>\n\t\tNotificationYouCanHack,\n\t\t///<summary>\n\t\t///Press {0} to loot {1}\n\t\t///</summary>\n\t\tNotificationYouCanLoot,\n\t\t///<summary>\n\t\t///Press {0} to trade with {1}\n\t\t///</summary>\n\t\tNotificationYouCanTradeWith,\n\t\t///<summary>\n\t\t///Press {0} to travel\n\t\t///</summary>\n\t\tNotificationYouCanTravel,\n\t\t///<summary>\n\t\t///Press {0} to use {1}\n\t\t///</summary>\n\t\tNotificationYouCanUse,\n\t\t///<summary>\n\t\t///You have no foundation factory in your inventory!\n\t\t///</summary>\n\t\tNotificationYouHaveNoFoundationFactory,\n\t\t///<summary>\n\t\t///You need to be near the mothership to enter solar map!\n\t\t///</summary>\n\t\tNotificationYouHaveToBeNearMothership,\n\t\t///<summary>\n\t\t///You are not logged in\n\t\t///</summary>\n\t\tNotLoggedIn,\n\t\t///<summary>\n\t\t///Number of asteroids in sector:      \n\t\t///</summary>\n\t\tNumberOfAsteroidsInSector,\n\t\t///<summary>\n\t\t///Number of objects in sector:     \n\t\t///</summary>\n\t\tNumberOfObjectsInSector,\n\t\t///<summary>\n\t\t///Number of voxel shapes in sector:      \n\t\t///</summary>\n\t\tNumberOfVoxelShapesInSector,\n\t\t///<summary>\n\t\t///Num 0\n\t\t///</summary>\n\t\tNumPad0,\n\t\t///<summary>\n\t\t///Num 1\n\t\t///</summary>\n\t\tNumPad1,\n\t\t///<summary>\n\t\t///Num 2\n\t\t///</summary>\n\t\tNumPad2,\n\t\t///<summary>\n\t\t///Num 3\n\t\t///</summary>\n\t\tNumPad3,\n\t\t///<summary>\n\t\t///Num 4\n\t\t///</summary>\n\t\tNumPad4,\n\t\t///<summary>\n\t\t///Num 5\n\t\t///</summary>\n\t\tNumPad5,\n\t\t///<summary>\n\t\t///Num 6\n\t\t///</summary>\n\t\tNumPad6,\n\t\t///<summary>\n\t\t///Num 7\n\t\t///</summary>\n\t\tNumPad7,\n\t\t///<summary>\n\t\t///Num 8\n\t\t///</summary>\n\t\tNumPad8,\n\t\t///<summary>\n\t\t///Num 9\n\t\t///</summary>\n\t\tNumPad9,\n\t\t///<summary>\n\t\t///Object in collision with\n\t\t///</summary>\n\t\tObjectInCollisionWith,\n\t\t///<summary>\n\t\t///Objectives\n\t\t///</summary>\n\t\tObjectives,\n\t\t///<summary>\n\t\t///Object cannot be created at this position\n\t\t///</summary>\n\t\tObjectOutOfBounds,\n\t\t///<summary>\n\t\t///Objects in container\n\t\t///</summary>\n\t\tObjectsInContainer,\n\t\t///<summary>\n\t\t///Off\n\t\t///</summary>\n\t\tOff,\n\t\t///<summary>\n\t\t///OK\n\t\t///</summary>\n\t\tOk,\n\t\t///<summary>\n\t\t///On\n\t\t///</summary>\n\t\tOn,\n\t\t///<summary>\n\t\t///One way\n\t\t///</summary>\n\t\tOneWay,\n\t\t///<summary>\n\t\t///Opacity\n\t\t///</summary>\n\t\tOpacity,\n\t\t///<summary>\n\t\t///Options\n\t\t///</summary>\n\t\tOptions,\n\t\t///<summary>\n\t\t///COBALT | Harvested ore\n\t\t///</summary>\n\t\tOreCobalt,\n\t\t///<summary>\n\t\t///CONCRETE | Harvested ore\n\t\t///</summary>\n\t\tOreConcrete,\n\t\t///<summary>\n\t\t///GOLD | Harvested ore\n\t\t///</summary>\n\t\tOreGold,\n\t\t///<summary>\n\t\t///HELIUM | Harvested ore, refills fuel for chemical engine\n\t\t///</summary>\n\t\tOreHelium,\n\t\t///<summary>\n\t\t///ICE | Harvested ore, refills fuel for power cell engine\n\t\t///</summary>\n\t\tOreIce,\n\t\t///<summary>\n\t\t///Indestructible\n\t\t///</summary>\n\t\tOreIndestructible,\n\t\t///<summary>\n\t\t///IRON | Harvested ore\n\t\t///</summary>\n\t\tOreIron,\n\t\t///<summary>\n\t\t///LAVA | Harvested ore\n\t\t///</summary>\n\t\tOreLava,\n\t\t///<summary>\n\t\t///MAGNESIUM | Harvested ore\n\t\t///</summary>\n\t\tOreMagnesium,\n\t\t///<summary>\n\t\t///NICKEL | Harvested ore\n\t\t///</summary>\n\t\tOreNickel,\n\t\t///<summary>\n\t\t///ORGANIC | Harvested ore\n\t\t///</summary>\n\t\tOreOrganic,\n\t\t///<summary>\n\t\t///PLATINUM | Harvested ore\n\t\t///</summary>\n\t\tOrePlatinum,\n\t\t///<summary>\n\t\t///SANDSTONE | Harvested ore\n\t\t///</summary>\n\t\tOreSandstone,\n\t\t///<summary>\n\t\t///SILICON | Harvested ore\n\t\t///</summary>\n\t\tOreSilicon,\n\t\t///<summary>\n\t\t///SILVER | Harvested ore\n\t\t///</summary>\n\t\tOreSilver,\n\t\t///<summary>\n\t\t///SNOW | Harvested ore\n\t\t///</summary>\n\t\tOreSnow,\n\t\t///<summary>\n\t\t///STONE | Harvested ore\n\t\t///</summary>\n\t\tOreStone,\n\t\t///<summary>\n\t\t///TREASURE | Harvested ore\n\t\t///</summary>\n\t\tOreTreasure,\n\t\t///<summary>\n\t\t///PLUTONIUM | Harvested ore, refills fuel for nuclear engine\n\t\t///</summary>\n\t\tOreUranite,\n\t\t///<summary>\n\t\t///Xenon\n\t\t///</summary>\n\t\tOreXenon,\n\t\t///<summary>\n\t\t///Organic\n\t\t///</summary>\n\t\tOrganic_01,\n\t\t///<summary>\n\t\t///’s inventory\n\t\t///</summary>\n\t\tOtherSideInventory,\n\t\t///<summary>\n\t\t///Solid Beam Straight 10 meters\n\t\t///</summary>\n\t\tp110a01_solid_beam_straight_10m,\n\t\t///<summary>\n\t\t///Solid Beam Straight 20 meters\n\t\t///</summary>\n\t\tp110a02_solid_beam_straight_20m,\n\t\t///<summary>\n\t\t///Solid Beam Straight 40 meters\n\t\t///</summary>\n\t\tp110a03_solid_beam_straight_40m_with_hole,\n\t\t///<summary>\n\t\t///Solid Beam Straight 40 meters lattice\n\t\t///</summary>\n\t\tp110a04_solid_beam_straight_40m_lattice,\n\t\t///<summary>\n\t\t///Solid Beam Straight 80 meters\n\t\t///</summary>\n\t\tp110a05_solid_beam_straight_80m,\n\t\t///<summary>\n\t\t///Basic T junction weak\n\t\t///</summary>\n\t\tp110A07BasicTJunctionWeak,\n\t\t///<summary>\n\t\t///Basic T junction rotated\n\t\t///</summary>\n\t\tp110A08BasicTJunctionRotated,\n\t\t///<summary>\n\t\t///Basic short unit lattice\n\t\t///</summary>\n\t\tp110A10BasicShortUnitLattice,\n\t\t///<summary>\n\t\t///Basic short without hole\n\t\t///</summary>\n\t\tp110A11BasicShortWithoutHole,\n\t\t///<summary>\n\t\t///Solid Beam X-Junction Strong\n\t\t///</summary>\n\t\tp110a11_solid_beam_junction_x_strong,\n\t\t///<summary>\n\t\t///Basic junction strong\n\t\t///</summary>\n\t\tp110A12BasicJunctionStrong,\n\t\t///<summary>\n\t\t///Solid Beam X-Junction Weak\n\t\t///</summary>\n\t\tp110a12_solid_beam_junction_x_weak,\n\t\t///<summary>\n\t\t///Basic junction weak\n\t\t///</summary>\n\t\tp110A13BasicJunctionWeak,\n\t\t///<summary>\n\t\t///Solid Beam X-Junction Rotated\n\t\t///</summary>\n\t\tp110a13_solid_beam_junction_x_rotated,\n\t\t///<summary>\n\t\t///Basic junction rotated\n\t\t///</summary>\n\t\tp110A14BasicJunctionRotated,\n\t\t///<summary>\n\t\t///Basic joint longitudinal\n\t\t///</summary>\n\t\tp110A15BasicJointLongitudinal,\n\t\t///<summary>\n\t\t///Solid Beam T-Junction Strong\n\t\t///</summary>\n\t\tp110a21_solid_beam_junction_t_strong,\n\t\t///<summary>\n\t\t///Solid Beam T-Junction Weak\n\t\t///</summary>\n\t\tp110a22_solid_beam_junction_t_weak,\n\t\t///<summary>\n\t\t///Solid Beam T-Junction Rotated\n\t\t///</summary>\n\t\tp110a23_solid_beam_junction_t_rotated,\n\t\t///<summary>\n\t\t///Solid Beam Joint Horizontal\n\t\t///</summary>\n\t\tp110a31_solid_beam_joint_horizontal,\n\t\t///<summary>\n\t\t///Solid Beam Joint Vertical\n\t\t///</summary>\n\t\tp110a32_solid_beam_joint_vertical,\n\t\t///<summary>\n\t\t///Solid Beam Joint Longitudinal\n\t\t///</summary>\n\t\tp110a33_solid_beam_joint_longitudinal,\n\t\t///<summary>\n\t\t///Solid Beam Special Joint\n\t\t///</summary>\n\t\tp110a41_solid_beam_superjoint,\n\t\t///<summary>\n\t\t///Frame straight unit\n\t\t///</summary>\n\t\tp110B01FrameStraightUnit,\n\t\t///<summary>\n\t\t///Lattice Beam Straight 10 meters\n\t\t///</summary>\n\t\tp110b01_lattice_beam_straight_10m,\n\t\t///<summary>\n\t\t///Frame joint\n\t\t///</summary>\n\t\tp110B02FrameJoint,\n\t\t///<summary>\n\t\t///Lattice Beam Straight 30 meters\n\t\t///</summary>\n\t\tp110b02_lattice_beam_straight_30m,\n\t\t///<summary>\n\t\t///Frame triangle corner\n\t\t///</summary>\n\t\tp110B03FrameTriangleCorner,\n\t\t///<summary>\n\t\t///Lattice Beam Straight 60 meters\n\t\t///</summary>\n\t\tp110b03_lattice_beam_straight_60m,\n\t\t///<summary>\n\t\t///Frame corner\n\t\t///</summary>\n\t\tp110B04FrameCorner,\n\t\t///<summary>\n\t\t///Lattice Beam Straight 60 meters with panels\n\t\t///</summary>\n\t\tp110b04_lattice_beam_straight_60m_with_panels,\n\t\t///<summary>\n\t\t///Frame small unit\n\t\t///</summary>\n\t\tp110B05FrameSmallUnit,\n\t\t///<summary>\n\t\t///Lattice Beam T-Junction Strong\n\t\t///</summary>\n\t\tp110b21_lattice_beam_junction_t_strong,\n\t\t///<summary>\n\t\t///Lattice Beam T-Junction Weak\n\t\t///</summary>\n\t\tp110b22_lattice_beam_junction_t_weak,\n\t\t///<summary>\n\t\t///Lattice Beam Joint Horizontal\n\t\t///</summary>\n\t\tp110b31_lattice_beam_joint_horizontal,\n\t\t///<summary>\n\t\t///Lattice Beam Joint Vertical\n\t\t///</summary>\n\t\tp110b32_lattice_beam_joint_vertical,\n\t\t///<summary>\n\t\t///Cage\n\t\t///</summary>\n\t\tp110C01Cage,\n\t\t///<summary>\n\t\t///Cage half\n\t\t///</summary>\n\t\tp110C02CageHalf,\n\t\t///<summary>\n\t\t///Cage grates\n\t\t///</summary>\n\t\tp110C03CageGrates,\n\t\t///<summary>\n\t\t///Cage grates tiny unit\n\t\t///</summary>\n\t\tp110C04CageGratesTinyUnit,\n\t\t///<summary>\n\t\t///Cage pillar\n\t\t///</summary>\n\t\tp110C05CagePillar,\n\t\t///<summary>\n\t\t///Cage corner\n\t\t///</summary>\n\t\tp110C06CageCorner,\n\t\t///<summary>\n\t\t///Cage solo\n\t\t///</summary>\n\t\tp110C08CageSolo,\n\t\t///<summary>\n\t\t///Hextunnel entrance cage to hextunnel adapter\n\t\t///</summary>\n\t\tp110C09HexTunnelEntranceCageToHexTunnelAdapter,\n\t\t///<summary>\n\t\t///Cage 2\n\t\t///</summary>\n\t\tp110D01Cage2,\n\t\t///<summary>\n\t\t///Strong Lattice Beam Straight 10 meters\n\t\t///</summary>\n\t\tp120a01_strong_lattice_straight_10m,\n\t\t///<summary>\n\t\t///Strong Lattice Beam Straight 60 meters\n\t\t///</summary>\n\t\tp120a02_strong_lattice_straight_60m,\n\t\t///<summary>\n\t\t///Strong Lattice Beam Straight 120 meters\n\t\t///</summary>\n\t\tp120a03_strong_lattice_straight_120m,\n\t\t///<summary>\n\t\t///Strong Lattice Beam Straight T-Junction Strong\n\t\t///</summary>\n\t\tp120a21_strong_lattice_junction_t_strong,\n\t\t///<summary>\n\t\t///Strong Lattice Beam T-Junction Weak\n\t\t///</summary>\n\t\tp120a22_strong_lattice_junction_t_weak,\n\t\t///<summary>\n\t\t///Strong Lattice Beam T-Junction Rotated\n\t\t///</summary>\n\t\tp120a23_strong_lattice_junction_t_rotated,\n\t\t///<summary>\n\t\t///Strong to Weak Lattice (2 to 1)\n\t\t///</summary>\n\t\tp120a51_strong_to_weak_lattice_2to1,\n\t\t///<summary>\n\t\t///Strong to Weak Lattice (1 to 2)\n\t\t///</summary>\n\t\tp120a52_strong_to_weak_lattice_1to2,\n\t\t///<summary>\n\t\t///Weak Lattice Junction T-Rotated\n\t\t///</summary>\n\t\tp120a61_weak_lattice_junction_t_rotated,\n\t\t///<summary>\n\t\t///Strong lattice unit\n\t\t///</summary>\n\t\tp120B01StrongLatticeUnit,\n\t\t///<summary>\n\t\t///Medium Beam 01 10 meters\n\t\t///</summary>\n\t\tp120b01_b_straight_10m,\n\t\t///<summary>\n\t\t///Strong lattice tiny unit\n\t\t///</summary>\n\t\tp120B02StrongLatticeTinyUnit,\n\t\t///<summary>\n\t\t///Medium Beam 01 40 meters\n\t\t///</summary>\n\t\tp120b02_b_straight_40m,\n\t\t///<summary>\n\t\t///Strong lattice long unit\n\t\t///</summary>\n\t\tp120B03StrongLatticeLongUnit,\n\t\t///<summary>\n\t\t///Strong lattice T junction strong\n\t\t///</summary>\n\t\tp120B04StrongLatticeTJunctionStrong,\n\t\t///<summary>\n\t\t///Strong lattice T junction weak\n\t\t///</summary>\n\t\tp120B05StrongLatticeTJunctionWeak,\n\t\t///<summary>\n\t\t///Strong lattice T junction rotated\n\t\t///</summary>\n\t\tp120B06StrongLatticeTJunctionRotated,\n\t\t///<summary>\n\t\t///Single strong lattice T junction rotated2To1\n\t\t///</summary>\n\t\tp120B07SingleStrongLatticeTJunctionRotated2To1,\n\t\t///<summary>\n\t\t///Single strong lattice T junction rotated1To2\n\t\t///</summary>\n\t\tp120B08SingleStrongLatticeTJunctionRotated1To2,\n\t\t///<summary>\n\t\t///Single weak lattice T junction rotated\n\t\t///</summary>\n\t\tp120B09SingleWeakLatticeTJunctionRotated,\n\t\t///<summary>\n\t\t///Medium Beam 02 10 meters\n\t\t///</summary>\n\t\tp120c01_c_straight_10m,\n\t\t///<summary>\n\t\t///Medium Beam 02 40 meters\n\t\t///</summary>\n\t\tp120c02_c_straight_40m,\n\t\t///<summary>\n\t\t///Medium Beam 03 10 meters\n\t\t///</summary>\n\t\tp120d01_d_straight_10m,\n\t\t///<summary>\n\t\t///Medium Beam 03 40 meters\n\t\t///</summary>\n\t\tp120d02_d_straight_40m,\n\t\t///<summary>\n\t\t///Small Beam 08 30m\n\t\t///</summary>\n\t\tp120h01_h_straight_30m,\n\t\t///<summary>\n\t\t///Small Beam 09 30m\n\t\t///</summary>\n\t\tp120i01_i_straight_30m,\n\t\t///<summary>\n\t\t///Small Beam 10 30m\n\t\t///</summary>\n\t\tp120j01_j_straight_30m,\n\t\t///<summary>\n\t\t///Small Cross Beam 01 10m\n\t\t///</summary>\n\t\tp130a01_a_straight_10m,\n\t\t///<summary>\n\t\t///Hextunnel beam assembled\n\t\t///</summary>\n\t\tp130A02HexTunnelBeamAssembled,\n\t\t///<summary>\n\t\t///Small Cross Beam 01 30m\n\t\t///</summary>\n\t\tp130a02_a_straight_30m,\n\t\t///<summary>\n\t\t///Hextunnel beam assembled long\n\t\t///</summary>\n\t\tp130A03HexTunnelBeamAssembledLong,\n\t\t///<summary>\n\t\t///Small Cross Beam 02 10m\n\t\t///</summary>\n\t\tp130b01_b_straight_10m,\n\t\t///<summary>\n\t\t///Small Cross Beam 02 30m\n\t\t///</summary>\n\t\tp130b02_b_straight_30m,\n\t\t///<summary>\n\t\t///Small Cross Beam 03 10m\n\t\t///</summary>\n\t\tp130c01_c_straight_10m,\n\t\t///<summary>\n\t\t///Small Cross Beam 03 30m\n\t\t///</summary>\n\t\tp130c02_c_straight_30m,\n\t\t///<summary>\n\t\t///Small Cross Beam 04 10m\n\t\t///</summary>\n\t\tp130d01_d_straight_10m,\n\t\t///<summary>\n\t\t///Small Cross Beam 04 30m\n\t\t///</summary>\n\t\tp130d02_d_straight_30m,\n\t\t///<summary>\n\t\t///Small Cross Beam 05 10m\n\t\t///</summary>\n\t\tp130e01_e_straight_10m,\n\t\t///<summary>\n\t\t///Small Cross Beam 05 30m\n\t\t///</summary>\n\t\tp130e02_e_straight_30m,\n\t\t///<summary>\n\t\t///Small Beam 08 10 meters\n\t\t///</summary>\n\t\tp130h02_h_straight_10m,\n\t\t///<summary>\n\t\t///Small Beam 09 10 meters\n\t\t///</summary>\n\t\tp130i02_i_straight_10m,\n\t\t///<summary>\n\t\t///Small Beam 10 10 meters\n\t\t///</summary>\n\t\tp130j02_j_straight_10m,\n\t\t///<summary>\n\t\t///Outer Frame 01 Straight 10 meters\n\t\t///</summary>\n\t\tp141a01_thick_frame_straight_10m,\n\t\t///<summary>\n\t\t///Outer Frame 01 Straight 60 meters\n\t\t///</summary>\n\t\tp141a02_thick_frame_straight_60m,\n\t\t///<summary>\n\t\t///Outer Frame 01 Edge\n\t\t///</summary>\n\t\tp141a11_thick_frame_edge,\n\t\t///<summary>\n\t\t///Outer Frame 01 Corner\n\t\t///</summary>\n\t\tp141a12_thick_frame_corner,\n\t\t///<summary>\n\t\t///Outer Frame 01 Joint\n\t\t///</summary>\n\t\tp141a31_thick_frame_joint,\n\t\t///<summary>\n\t\t///Outer Frame 02 Straight 10 meters\n\t\t///</summary>\n\t\tp141b01_thick_frame_straight_10m,\n\t\t///<summary>\n\t\t///Outer Frame 02 Straight 60 meters\n\t\t///</summary>\n\t\tp141b02_thick_frame_straight_60m,\n\t\t///<summary>\n\t\t///Outer Frame 02 Edge\n\t\t///</summary>\n\t\tp141b11_thick_frame_edge,\n\t\t///<summary>\n\t\t///Outer Frame 02 Corner\n\t\t///</summary>\n\t\tp141b12_thick_frame_corner,\n\t\t///<summary>\n\t\t///Outer frame 02 Joint\n\t\t///</summary>\n\t\tp141b31_thick_frame_joint,\n\t\t///<summary>\n\t\t///Inner Frame 01 Edge\n\t\t///</summary>\n\t\tp142a01_cage_empty,\n\t\t///<summary>\n\t\t///Inner Frame 01 Half\n\t\t///</summary>\n\t\tp142a02_cage_halfcut,\n\t\t///<summary>\n\t\t///Inner Frame 01 with corner struts\n\t\t///</summary>\n\t\tp142a03_cage_with_corners,\n\t\t///<summary>\n\t\t///Inner Frame 01 Strut\n\t\t///</summary>\n\t\tp142a11_cage_pillar,\n\t\t///<summary>\n\t\t///Inner Frame 01 Edge\n\t\t///</summary>\n\t\tp142a12_cage_edge,\n\t\t///<summary>\n\t\t///Inner Frame 02\n\t\t///</summary>\n\t\tp142b01_cage_empty,\n\t\t///<summary>\n\t\t///Inner Frame 02 Half\n\t\t///</summary>\n\t\tp142b02_cage_halfcut,\n\t\t///<summary>\n\t\t///Inner Frame 02 with corner struts\n\t\t///</summary>\n\t\tp142b03_cage_with_corners,\n\t\t///<summary>\n\t\t///Inner Frame 02 Strut\n\t\t///</summary>\n\t\tp142b11_cage_pillar,\n\t\t///<summary>\n\t\t///Inner Frame 02 Edge\n\t\t///</summary>\n\t\tp142b12_cage_edge,\n\t\t///<summary>\n\t\t///Panel 01 120x60 meters\n\t\t///</summary>\n\t\tp211a01_panel_120mx60m,\n\t\t///<summary>\n\t\t///Panel 01 60x60 meters\n\t\t///</summary>\n\t\tp211a02_panel_60mx60m,\n\t\t///<summary>\n\t\t///Panel 01 60x30 meters\n\t\t///</summary>\n\t\tp211a03_panel_60mx30m,\n\t\t///<summary>\n\t\t///Panel 02 120x60 meters\n\t\t///</summary>\n\t\tp211b01_panel_120mx60m,\n\t\t///<summary>\n\t\t///Panel 02 60x60 meters\n\t\t///</summary>\n\t\tp211b02_panel_60mx60m,\n\t\t///<summary>\n\t\t///Panel 02 60x30 meters\n\t\t///</summary>\n\t\tp211b03_panel_60mx30m,\n\t\t///<summary>\n\t\t///Panel 03 120x60 meters\n\t\t///</summary>\n\t\tp211c01_panel_120mx60m,\n\t\t///<summary>\n\t\t///Panel 03 60x60 meters\n\t\t///</summary>\n\t\tp211c02_panel_60mx60m,\n\t\t///<summary>\n\t\t///Panel 03 60x30 meters\n\t\t///</summary>\n\t\tp211c03_panel_60mx30m,\n\t\t///<summary>\n\t\t///Panel 04 120x60 meters\n\t\t///</summary>\n\t\tp211d01_panel_120mx60m,\n\t\t///<summary>\n\t\t///Panel 04 60x60 meters\n\t\t///</summary>\n\t\tp211d02_panel_60mx60m,\n\t\t///<summary>\n\t\t///Panel 04 60x30 meters\n\t\t///</summary>\n\t\tp211d03_panel_60mx30m,\n\t\t///<summary>\n\t\t///Panel 05 120x60 meters\n\t\t///</summary>\n\t\tp211e01_panel_120mx60m,\n\t\t///<summary>\n\t\t///Panel 05 60x60 meters\n\t\t///</summary>\n\t\tp211e02_panel_60mx60m,\n\t\t///<summary>\n\t\t///Panel 05 60x30 meters\n\t\t///</summary>\n\t\tp211e03_panel_60mx30m,\n\t\t///<summary>\n\t\t///Panel 06 120x60 meters\n\t\t///</summary>\n\t\tp211f01_panel_120mx60m,\n\t\t///<summary>\n\t\t///Panel 06 60x60 meters\n\t\t///</summary>\n\t\tp211f02_panel_60mx60m,\n\t\t///<summary>\n\t\t///Panel 06 60x30 meters\n\t\t///</summary>\n\t\tp211f03_panel_60mx30m,\n\t\t///<summary>\n\t\t///Panel 07 120x60 meters\n\t\t///</summary>\n\t\tp211g01_panel_120mx60m,\n\t\t///<summary>\n\t\t///Panel 07 60x60 meters\n\t\t///</summary>\n\t\tp211g02_panel_60mx60m,\n\t\t///<summary>\n\t\t///Panel 07 60x30 meters\n\t\t///</summary>\n\t\tp211g03_panel_60mx30m,\n\t\t///<summary>\n\t\t///p211h01_panel_535mx130m\n\t\t///</summary>\n\t\tp211h01_panel_535mx130m,\n\t\t///<summary>\n\t\t///p212a01_panel_large\n\t\t///</summary>\n\t\tp212a01_panel_large,\n\t\t///<summary>\n\t\t///p212a01_panel_medium\n\t\t///</summary>\n\t\tp212a01_panel_medium,\n\t\t///<summary>\n\t\t///p212a01_panel_small\n\t\t///</summary>\n\t\tp212a01_panel_small,\n\t\t///<summary>\n\t\t///p212b02_panel_large\n\t\t///</summary>\n\t\tp212b02_panel_large,\n\t\t///<summary>\n\t\t///p212b02_panel_medium\n\t\t///</summary>\n\t\tp212b02_panel_medium,\n\t\t///<summary>\n\t\t///p212b02_panel_small\n\t\t///</summary>\n\t\tp212b02_panel_small,\n\t\t///<summary>\n\t\t///p212c03_panel_large\n\t\t///</summary>\n\t\tp212c03_panel_large,\n\t\t///<summary>\n\t\t///p212c03_panel_medium\n\t\t///</summary>\n\t\tp212c03_panel_medium,\n\t\t///<summary>\n\t\t///p212c03_panel_small\n\t\t///</summary>\n\t\tp212c03_panel_small,\n\t\t///<summary>\n\t\t///p212d04_panel_large\n\t\t///</summary>\n\t\tp212d04_panel_large,\n\t\t///<summary>\n\t\t///p212d04_panel_medium\n\t\t///</summary>\n\t\tp212d04_panel_medium,\n\t\t///<summary>\n\t\t///p212d04_panel_small\n\t\t///</summary>\n\t\tp212d04_panel_small,\n\t\t///<summary>\n\t\t///p212e05_panel_large\n\t\t///</summary>\n\t\tp212e05_panel_large,\n\t\t///<summary>\n\t\t///p212e05_panel_medium\n\t\t///</summary>\n\t\tp212e05_panel_medium,\n\t\t///<summary>\n\t\t///p212e05_panel_small\n\t\t///</summary>\n\t\tp212e05_panel_small,\n\t\t///<summary>\n\t\t///p212f01_panel_large\n\t\t///</summary>\n\t\tp212f01_panel_large,\n\t\t///<summary>\n\t\t///Panel doorlike\n\t\t///</summary>\n\t\tp220A01PanelDoorlike,\n\t\t///<summary>\n\t\t///Panel movietape\n\t\t///</summary>\n\t\tp220A02PanelMovietape,\n\t\t///<summary>\n\t\t///Chamber Cyllinder\n\t\t///</summary>\n\t\tp221a01_chamber_v1,\n\t\t///<summary>\n\t\t///Chamber Cylinder 2\n\t\t///</summary>\n\t\tp221a02_chamber_v2,\n\t\t///<summary>\n\t\t///chamber T\n\t\t///</summary>\n\t\tp221b01_chamber_v1,\n\t\t///<summary>\n\t\t///Chamber T 2\n\t\t///</summary>\n\t\tp221b02_chamber_v2,\n\t\t///<summary>\n\t\t///Chamber Arena\n\t\t///</summary>\n\t\tp221c01_chamber_v1,\n\t\t///<summary>\n\t\t///Chamber Arena 2\n\t\t///</summary>\n\t\tp221c02_chamber_v2,\n\t\t///<summary>\n\t\t///Chamber Cross\n\t\t///</summary>\n\t\tp221d01_chamber_v1,\n\t\t///<summary>\n\t\t///Chamber Cross 2\n\t\t///</summary>\n\t\tp221d02_chamber_v2,\n\t\t///<summary>\n\t\t///Chamber Zig-Zag\n\t\t///</summary>\n\t\tp221e01_chamber_v1,\n\t\t///<summary>\n\t\t///Chamber Turn\n\t\t///</summary>\n\t\tp221e02_chamber_v2,\n\t\t///<summary>\n\t\t///p221f01_chamber_v1\n\t\t///</summary>\n\t\tp221f01_chamber_v1,\n\t\t///<summary>\n\t\t///p221g01_chamber_v1\n\t\t///</summary>\n\t\tp221g01_chamber_v1,\n\t\t///<summary>\n\t\t///p221h01_chamber_v1\n\t\t///</summary>\n\t\tp221h01_chamber_v1,\n\t\t///<summary>\n\t\t///p221j01_chamber_v1\n\t\t///</summary>\n\t\tp221j01_chamber_v1,\n\t\t///<summary>\n\t\t///p221k01_chamber_v1\n\t\t///</summary>\n\t\tp221k01_chamber_v1,\n\t\t///<summary>\n\t\t///Hextunnel plate heavy stripes bottom\n\t\t///</summary>\n\t\tp230A01HexTunnelPlateHeavyStripesBottom,\n\t\t///<summary>\n\t\t///Hextunnel plate heavy stripes bottom left\n\t\t///</summary>\n\t\tp230A01HexTunnelPlateHeavyStripesBottomLeft,\n\t\t///<summary>\n\t\t///Hextunnel plate heavy stripes bottom right\n\t\t///</summary>\n\t\tp230A01HexTunnelPlateHeavyStripesBottomRight,\n\t\t///<summary>\n\t\t///Hextunnel plate heavy stripes top\n\t\t///</summary>\n\t\tp230A01HexTunnelPlateHeavyStripesTop,\n\t\t///<summary>\n\t\t///Hextunnel plate heavy stripes top left\n\t\t///</summary>\n\t\tp230A01HexTunnelPlateHeavyStripesTopLeft,\n\t\t///<summary>\n\t\t///Hextunnel plate heavy stripes top right\n\t\t///</summary>\n\t\tp230A01HexTunnelPlateHeavyStripesTopRight,\n\t\t///<summary>\n\t\t///Hextunnel plate beam flat bottom\n\t\t///</summary>\n\t\tp230A02HexTunnelPlateBeamFlatBottom,\n\t\t///<summary>\n\t\t///Hextunnel plate beam flat bottom left\n\t\t///</summary>\n\t\tp230A02HexTunnelPlateBeamFlatBottomLeft,\n\t\t///<summary>\n\t\t///Hextunnel plate beam flat bottom right\n\t\t///</summary>\n\t\tp230A02HexTunnelPlateBeamFlatBottomRight,\n\t\t///<summary>\n\t\t///Hextunnel plate beam flat top\n\t\t///</summary>\n\t\tp230A02HexTunnelPlateBeamFlatTop,\n\t\t///<summary>\n\t\t///Hextunnel plate beam flat top left\n\t\t///</summary>\n\t\tp230A02HexTunnelPlateBeamFlatTopLeft,\n\t\t///<summary>\n\t\t///Hextunnel plate beam flat top right\n\t\t///</summary>\n\t\tp230A02HexTunnelPlateBeamFlatTopRight,\n\t\t///<summary>\n\t\t///Hextunnel plate flat bottom\n\t\t///</summary>\n\t\tp230A03HexTunnelPlateFlatBottom,\n\t\t///<summary>\n\t\t///Hextunnel plate flat bottom left\n\t\t///</summary>\n\t\tp230A03HexTunnelPlateFlatBottomLeft,\n\t\t///<summary>\n\t\t///Hextunnel plate flat bottom right\n\t\t///</summary>\n\t\tp230A03HexTunnelPlateFlatBottomRight,\n\t\t///<summary>\n\t\t///Hextunnel plate flat top\n\t\t///</summary>\n\t\tp230A03HexTunnelPlateFlatTop,\n\t\t///<summary>\n\t\t///Hextunnel plate flat top left\n\t\t///</summary>\n\t\tp230A03HexTunnelPlateFlatTopLeft,\n\t\t///<summary>\n\t\t///Hextunnel plate flat top right\n\t\t///</summary>\n\t\tp230A03HexTunnelPlateFlatTopRight,\n\t\t///<summary>\n\t\t///Hextunnel plate beam bottom\n\t\t///</summary>\n\t\tp230A04HexTunnelPlateBeamBottom,\n\t\t///<summary>\n\t\t///Hextunnel plate beam bottom left\n\t\t///</summary>\n\t\tp230A04HexTunnelPlateBeamBottomLeft,\n\t\t///<summary>\n\t\t///Hextunnel plate beam bottom right\n\t\t///</summary>\n\t\tp230A04HexTunnelPlateBeamBottomRight,\n\t\t///<summary>\n\t\t///Hextunnel plate beam top\n\t\t///</summary>\n\t\tp230A04HexTunnelPlateBeamTop,\n\t\t///<summary>\n\t\t///Hextunnel plate beam top left\n\t\t///</summary>\n\t\tp230A04HexTunnelPlateBeamTopLeft,\n\t\t///<summary>\n\t\t///Hextunnel plate beam top right\n\t\t///</summary>\n\t\tp230A04HexTunnelPlateBeamTopRight,\n\t\t///<summary>\n\t\t///Hextunnel plate flat2 bottom\n\t\t///</summary>\n\t\tp230A05HexTunnelPlateFlat2Bottom,\n\t\t///<summary>\n\t\t///Hextunnel plate flat2 bottom left\n\t\t///</summary>\n\t\tp230A05HexTunnelPlateFlat2BottomLeft,\n\t\t///<summary>\n\t\t///Hextunnel plate flat2 bottom right\n\t\t///</summary>\n\t\tp230A05HexTunnelPlateFlat2BottomRight,\n\t\t///<summary>\n\t\t///Hextunnel plate flat2 top\n\t\t///</summary>\n\t\tp230A05HexTunnelPlateFlat2Top,\n\t\t///<summary>\n\t\t///Hextunnel plate flat2 top left\n\t\t///</summary>\n\t\tp230A05HexTunnelPlateFlat2TopLeft,\n\t\t///<summary>\n\t\t///Hextunnel plate flat2 top right\n\t\t///</summary>\n\t\tp230A05HexTunnelPlateFlat2TopRight,\n\t\t///<summary>\n\t\t///Hextunnel grate bottom\n\t\t///</summary>\n\t\tp230A06HexTunnelGrateBottom,\n\t\t///<summary>\n\t\t///Hextunnel grate bottom left\n\t\t///</summary>\n\t\tp230A06HexTunnelGrateBottomLeft,\n\t\t///<summary>\n\t\t///Hextunnel grate bottom right\n\t\t///</summary>\n\t\tp230A06HexTunnelGrateBottomRight,\n\t\t///<summary>\n\t\t///Hextunnel grate top\n\t\t///</summary>\n\t\tp230A06HexTunnelGrateTop,\n\t\t///<summary>\n\t\t///Hextunnel grate top left\n\t\t///</summary>\n\t\tp230A06HexTunnelGrateTopLeft,\n\t\t///<summary>\n\t\t///Hextunnel grate top right\n\t\t///</summary>\n\t\tp230A06HexTunnelGrateTopRight,\n\t\t///<summary>\n\t\t///Armor 01\n\t\t///</summary>\n\t\tp231a01_armor,\n\t\t///<summary>\n\t\t///Armor 02\n\t\t///</summary>\n\t\tp231a02_armor,\n\t\t///<summary>\n\t\t///Armor 03\n\t\t///</summary>\n\t\tp231a03_armor,\n\t\t///<summary>\n\t\t///Armor 04\n\t\t///</summary>\n\t\tp231a04_armor,\n\t\t///<summary>\n\t\t///Armor 05\n\t\t///</summary>\n\t\tp231a05_armor,\n\t\t///<summary>\n\t\t///Armor 06\n\t\t///</summary>\n\t\tp231a06_armor,\n\t\t///<summary>\n\t\t///Armor 07\n\t\t///</summary>\n\t\tp231a07_armor,\n\t\t///<summary>\n\t\t///Armor 08\n\t\t///</summary>\n\t\tp231a08_armor,\n\t\t///<summary>\n\t\t///Armor 09\n\t\t///</summary>\n\t\tp231a09_armor,\n\t\t///<summary>\n\t\t///Armor 10\n\t\t///</summary>\n\t\tp231a10_armor,\n\t\t///<summary>\n\t\t///Armor 11\n\t\t///</summary>\n\t\tp231a11_armor,\n\t\t///<summary>\n\t\t///Armor 12\n\t\t///</summary>\n\t\tp231a12_armor,\n\t\t///<summary>\n\t\t///Armor 13\n\t\t///</summary>\n\t\tp231a13_armor,\n\t\t///<summary>\n\t\t///Armor 14\n\t\t///</summary>\n\t\tp231a14_armor,\n\t\t///<summary>\n\t\t///Armor 15\n\t\t///</summary>\n\t\tp231a15_armor,\n\t\t///<summary>\n\t\t///Armor 16\n\t\t///</summary>\n\t\tp231a16_armor,\n\t\t///<summary>\n\t\t///Armor 17\n\t\t///</summary>\n\t\tp231a17_armor,\n\t\t///<summary>\n\t\t///Armor 18\n\t\t///</summary>\n\t\tp231a18_armor,\n\t\t///<summary>\n\t\t///Thruster large\n\t\t///</summary>\n\t\tp311A01ThrusterLarge,\n\t\t///<summary>\n\t\t///Large Thruster\n\t\t///</summary>\n\t\tp311a01_long_term_thruster,\n\t\t///<summary>\n\t\t///Thruster small\n\t\t///</summary>\n\t\tp312A01SmallThruster,\n\t\t///<summary>\n\t\t///Medium Thruster Latitude\n\t\t///</summary>\n\t\tp312a01_short_term_thruster_latitude,\n\t\t///<summary>\n\t\t///Thruster small lateral\n\t\t///</summary>\n\t\tp312A02SmallThrusterLateral,\n\t\t///<summary>\n\t\t///Medium Thruster Lateral\n\t\t///</summary>\n\t\tp312a02_short_term_thruster_lateral,\n\t\t///<summary>\n\t\t///Solar panel 1\n\t\t///</summary>\n\t\tp321A01SolarPanel,\n\t\t///<summary>\n\t\t///Solar Panel 1\n\t\t///</summary>\n\t\tp321a01_solar_panel,\n\t\t///<summary>\n\t\t///Solar Panel 2\n\t\t///</summary>\n\t\tp321B01SolarPanel2,\n\t\t///<summary>\n\t\t///Nuclear Reactor\n\t\t///</summary>\n\t\tp321b01_nuclear_reactor,\n\t\t///<summary>\n\t\t///Solar Panel 2\n\t\t///</summary>\n\t\tp321b01_solar_panel,\n\t\t///<summary>\n\t\t///inertia Generator\n\t\t///</summary>\n\t\tp321c01_inertia_generator,\n\t\t///<summary>\n\t\t///Solar Panel 1\n\t\t///</summary>\n\t\tp321c01_solar_panel,\n\t\t///<summary>\n\t\t///Big Solar Panel\n\t\t///</summary>\n\t\tp321_d01_big_solar_panel,\n\t\t///<summary>\n\t\t///Battery\n\t\t///</summary>\n\t\tp322a01_battery,\n\t\t///<summary>\n\t\t///Fuel Generator\n\t\t///</summary>\n\t\tp323a01_fuel_generator,\n\t\t///<summary>\n\t\t///Fuel Storage 01\n\t\t///</summary>\n\t\tp324a01_fuel_storage_a,\n\t\t///<summary>\n\t\t///Fuel Storage 02\n\t\t///</summary>\n\t\tp324b01_fuel_storage_b,\n\t\t///<summary>\n\t\t///Oxygen Generator\n\t\t///</summary>\n\t\tp331_a01_oxygen_generator,\n\t\t///<summary>\n\t\t///Oxygen Tank\n\t\t///</summary>\n\t\tp332_a01_oxygen_storage,\n\t\t///<summary>\n\t\t///Hydroponic Building\n\t\t///</summary>\n\t\tp333_a01_hydroponic_building,\n\t\t///<summary>\n\t\t///Food grow\n\t\t///</summary>\n\t\tp334_a01_food_grow,\n\t\t///<summary>\n\t\t///Dock 01 Variation 01\n\t\t///</summary>\n\t\tp341_a01_open_dock_variation1,\n\t\t///<summary>\n\t\t///Dock 01 Variation 02\n\t\t///</summary>\n\t\tp341_a02_open_dock_variation2,\n\t\t///<summary>\n\t\t///Dock 02 Variation 01\n\t\t///</summary>\n\t\tp341_b01_open_dock_variation1,\n\t\t///<summary>\n\t\t///Dock 02 Variation 02\n\t\t///</summary>\n\t\tp341_b02_open_dock_variation2,\n\t\t///<summary>\n\t\t///p341_c01_closed_dock_v1\n\t\t///</summary>\n\t\tp341_c01_closed_dock_v1,\n\t\t///<summary>\n\t\t///Container arm empty\n\t\t///</summary>\n\t\tp342A01ContainerArmEmpty,\n\t\t///<summary>\n\t\t///Container arm filled\n\t\t///</summary>\n\t\tp342A02ContainerArmFilled,\n\t\t///<summary>\n\t\t///Loading Bay\n\t\t///</summary>\n\t\tp342_a01_loading_bay,\n\t\t///<summary>\n\t\t///Ore Storage\n\t\t///</summary>\n\t\tp343_a01_ore_storage,\n\t\t///<summary>\n\t\t///Double sphere tank one joint\n\t\t///</summary>\n\t\tp344A01DoubleSphereTankOneJoint,\n\t\t///<summary>\n\t\t///Double sphere tank two joints\n\t\t///</summary>\n\t\tp344A02DoubleSphereTankTwoJoints,\n\t\t///<summary>\n\t\t///Tank missing sphere one joint\n\t\t///</summary>\n\t\tp344A03TankMissingSphereOneJoint,\n\t\t///<summary>\n\t\t///Cylindrical tank\n\t\t///</summary>\n\t\tp344B01CylTank,\n\t\t///<summary>\n\t\t///Container Arm with Container\n\t\t///</summary>\n\t\tp344_a01_container_arm_filled,\n\t\t///<summary>\n\t\t///Container Arm Empty\n\t\t///</summary>\n\t\tp344_a02_container_arm_empty,\n\t\t///<summary>\n\t\t///Bio experiment\n\t\t///</summary>\n\t\tp345_a01_bio_exp,\n\t\t///<summary>\n\t\t///Bio machine experiment\n\t\t///</summary>\n\t\tp345_a01_bio_mach_exp,\n\t\t///<summary>\n\t\t///Recycle\n\t\t///</summary>\n\t\tp345_a01_recycle,\n\t\t///<summary>\n\t\t///Refinery\n\t\t///</summary>\n\t\tp345_a01_refinery,\n\t\t///<summary>\n\t\t///tower a\n\t\t///</summary>\n\t\tp349_a_tower,\n\t\t///<summary>\n\t\t///tower b\n\t\t///</summary>\n\t\tp349_b_tower,\n\t\t///<summary>\n\t\t///tower c\n\t\t///</summary>\n\t\tp349_c_tower,\n\t\t///<summary>\n\t\t///Weapon gatling gun\n\t\t///</summary>\n\t\tp351_a01_largeship_autocannon,\n\t\t///<summary>\n\t\t///Weapon CIWS\n\t\t///</summary>\n\t\tp351_a01_largeship_ciws,\n\t\t///<summary>\n\t\t///Weapon machinegun\n\t\t///</summary>\n\t\tp351_a01_largeship_machinegun,\n\t\t///<summary>\n\t\t///Missile launcher 4 barrels\n\t\t///</summary>\n\t\tp351_a01_largeship_missile_gun4,\n\t\t///<summary>\n\t\t///Missile launcher 6 barrels\n\t\t///</summary>\n\t\tp351_a01_largeship_missile_gun6,\n\t\t///<summary>\n\t\t///Missile launcher 9 barrels\n\t\t///</summary>\n\t\tp351_a01_largeship_missile_gun9,\n\t\t///<summary>\n\t\t///Weapon Basing\n\t\t///</summary>\n\t\tp351_a01_weapon_mount,\n\t\t///<summary>\n\t\t///Missile launcher 4 guided\n\t\t///</summary>\n\t\tp351_a02_largeship_missile_gun_guided4,\n\t\t///<summary>\n\t\t///Missile launcher 6 guided\n\t\t///</summary>\n\t\tp351_a02_largeship_missile_gun_guided6,\n\t\t///<summary>\n\t\t///Missile launcher 9 guided\n\t\t///</summary>\n\t\tp351_a02_largeship_missile_gun_guided9,\n\t\t///<summary>\n\t\t///Antenna stick\n\t\t///</summary>\n\t\tp361A01AntennaStick,\n\t\t///<summary>\n\t\t///Long Distance Antenna\n\t\t///</summary>\n\t\tp361_a01_long_distance_antenna,\n\t\t///<summary>\n\t\t///Short Distance Antenna\n\t\t///</summary>\n\t\tp362_a01_short_distance_antenna,\n\t\t///<summary>\n\t\t///Building 01\n\t\t///</summary>\n\t\tp381_a01_building1,\n\t\t///<summary>\n\t\t///Building 02\n\t\t///</summary>\n\t\tp381_b01_building2,\n\t\t///<summary>\n\t\t///Building 03\n\t\t///</summary>\n\t\tp381_c01_building3,\n\t\t///<summary>\n\t\t///Building 04\n\t\t///</summary>\n\t\tp381_c01_building4,\n\t\t///<summary>\n\t\t///Bio Experiment\n\t\t///</summary>\n\t\tp381_d01_bio_exp,\n\t\t///<summary>\n\t\t///Chuch\n\t\t///</summary>\n\t\tp381_d02_church,\n\t\t///<summary>\n\t\t///Hospital\n\t\t///</summary>\n\t\tp381_d03_hospital,\n\t\t///<summary>\n\t\t///Recycle\n\t\t///</summary>\n\t\tp381_d04_recycle,\n\t\t///<summary>\n\t\t///Food Grow\n\t\t///</summary>\n\t\tp381_d05_food_grow,\n\t\t///<summary>\n\t\t///Temple 900m\n\t\t///</summary>\n\t\tp381_d06_temple_900m,\n\t\t///<summary>\n\t\t///Bio Machine Experiment\n\t\t///</summary>\n\t\tp381_d07_bio_mach_exp,\n\t\t///<summary>\n\t\t///Command Bridge 01\n\t\t///</summary>\n\t\tp382_a01_bridge1,\n\t\t///<summary>\n\t\t///Command Bridge 02\n\t\t///</summary>\n\t\tp382_b01_bridge2,\n\t\t///<summary>\n\t\t///Command Bridge 03\n\t\t///</summary>\n\t\tp382_c01_bridge3,\n\t\t///<summary>\n\t\t///Command Bridge 04\n\t\t///</summary>\n\t\tp382_d01_bridge4,\n\t\t///<summary>\n\t\t///Command Bridge 05\n\t\t///</summary>\n\t\tp382_e01_bridge5,\n\t\t///<summary>\n\t\t///Church\n\t\t///</summary>\n\t\tp383_a01_church,\n\t\t///<summary>\n\t\t///Hospital\n\t\t///</summary>\n\t\tp384_a01_hospital,\n\t\t///<summary>\n\t\t///Temple 1200m\n\t\t///</summary>\n\t\tp385_a01_temple_900m,\n\t\t///<summary>\n\t\t///Tunnel entrance\n\t\t///</summary>\n\t\tp410A01TunnelEntrance,\n\t\t///<summary>\n\t\t///Tunnel short unit\n\t\t///</summary>\n\t\tp410A02TunnelShortUnit,\n\t\t///<summary>\n\t\t///Tunnel 6DOF junction\n\t\t///</summary>\n\t\tp410A03Tunnel6DofJunction,\n\t\t///<summary>\n\t\t///Tunnel 90 turn\n\t\t///</summary>\n\t\tp410A04Tunnel90Turn,\n\t\t///<summary>\n\t\t///Tunnel short unit lattice\n\t\t///</summary>\n\t\tp410A05TunnelShortUnitLattice,\n\t\t///<summary>\n\t\t///Tunnel short unit with gaps\n\t\t///</summary>\n\t\tp410A06TunnelShortUnitWithGaps,\n\t\t///<summary>\n\t\t///Tunnel Puzzle Sharp Corner\n\t\t///</summary>\n\t\tp410_g01_turn_90_right_0m,\n\t\t///<summary>\n\t\t///Tunnel Cross Straight 10 meters\n\t\t///</summary>\n\t\tp411_a01_straight_10m,\n\t\t///<summary>\n\t\t///Tunnel Cross Straight 60 meters with side-opening\n\t\t///</summary>\n\t\tp411_a02_straight_60m_with_hole,\n\t\t///<summary>\n\t\t///Tunnel Cross Straight 120 meters\n\t\t///</summary>\n\t\tp411_a03_straight_120m,\n\t\t///<summary>\n\t\t///Tunnel Cross Straight 80 meters\n\t\t///</summary>\n\t\tp411_a04_straight_80m,\n\t\t///<summary>\n\t\t///Tunnel Cross Straight 80 meters with extension\n\t\t///</summary>\n\t\tp411_a05_straight_80m_with_extension,\n\t\t///<summary>\n\t\t///Tunnel Round Straight 10 meters\n\t\t///</summary>\n\t\tp411_b01_straight_10m,\n\t\t///<summary>\n\t\t///tunnel round straight 30 meters yellow \n\t\t///</summary>\n\t\tp411_b02_straight_30m_yellow,\n\t\t///<summary>\n\t\t///Tunnel Round Straight 60 meters with side-opening\n\t\t///</summary>\n\t\tp411_b02_straight_60m_with_hole,\n\t\t///<summary>\n\t\t///Tunnel Round Straight 120 meters\n\t\t///</summary>\n\t\tp411_b03_straight_120m,\n\t\t///<summary>\n\t\t///tunnel round straight 320 meters\n\t\t///</summary>\n\t\tp411_b03_straight_320m,\n\t\t///<summary>\n\t\t///Tunnel Round Straight 80 meters\n\t\t///</summary>\n\t\tp411_b04_straight_80m_fat,\n\t\t///<summary>\n\t\t///tunnel round straight 80 meters side grates\n\t\t///</summary>\n\t\tp411_b04_straight_80m_with_side_grates,\n\t\t///<summary>\n\t\t///Tunnel Round Straight 60 meters\n\t\t///</summary>\n\t\tp411_b05_straight_60m_with_extension,\n\t\t///<summary>\n\t\t///tunnel round straight 80 meters side open\n\t\t///</summary>\n\t\tp411_b05_straight_80m_with_side_open,\n\t\t///<summary>\n\t\t///tunnel round straight 180 meters concrete\n\t\t///</summary>\n\t\tp411_b06_straight_180m_concrete,\n\t\t///<summary>\n\t\t///tunnel round straight 200 meters\n\t\t///</summary>\n\t\tp411_b06_straight_200m,\n\t\t///<summary>\n\t\t///tunnel round straight 180 meters blue\n\t\t///</summary>\n\t\tp411_b07_straight_180m_blue,\n\t\t///<summary>\n\t\t///tunnel round straight 30 meters gray\n\t\t///</summary>\n\t\tp411_b09_straight_30m_gray,\n\t\t///<summary>\n\t\t///tunnel round straight 220 meters\n\t\t///</summary>\n\t\tp411_b11_straight_220m,\n\t\t///<summary>\n\t\t///tunnel round straight 160 meters dark metal\n\t\t///</summary>\n\t\tp411_b12_straight_160m_dark_metal,\n\t\t///<summary>\n\t\t///tunnel round straight 100 meters tube inside\n\t\t///</summary>\n\t\tp411_b13_straight_100m_tube_inside,\n\t\t///<summary>\n\t\t///Tunnel Bread Straight 10 meters\n\t\t///</summary>\n\t\tp411_c01_straight_10m,\n\t\t///<summary>\n\t\t///Tunnel Bread Straight 40 meters with side-opening\n\t\t///</summary>\n\t\tp411_c02_straight_40m_with_hole,\n\t\t///<summary>\n\t\t///Tunnel Bread Straight 60 meters\n\t\t///</summary>\n\t\tp411_c03_straight_60m,\n\t\t///<summary>\n\t\t///Tunnel Bread Straight 120 meters\n\t\t///</summary>\n\t\tp411_c04_straight_120m,\n\t\t///<summary>\n\t\t///Tunnel Bread Straight 180 meters\n\t\t///</summary>\n\t\tp411_c05_straight_180m,\n\t\t///<summary>\n\t\t///Tunnel Octagon Straight 10 meters\n\t\t///</summary>\n\t\tp411_d01_straight_10m,\n\t\t///<summary>\n\t\t///Tunnel Octagon Straight 40 meters with side-opening\n\t\t///</summary>\n\t\tp411_d02_straight_40m_with_hole,\n\t\t///<summary>\n\t\t///Tunnel Octagon Straight 60 meters\n\t\t///</summary>\n\t\tp411_d03_straight_60m,\n\t\t///<summary>\n\t\t///Tunnel Octagon Straight 120 meters\n\t\t///</summary>\n\t\tp411_d04_straight_120m,\n\t\t///<summary>\n\t\t///Tunnel Octagon Straight 180 meters\n\t\t///</summary>\n\t\tp411_d05_straight_180m,\n\t\t///<summary>\n\t\t///Tunnel Special Straight 01\n\t\t///</summary>\n\t\tp411_e01_straight_1,\n\t\t///<summary>\n\t\t///Tunnel Special Straight 02\n\t\t///</summary>\n\t\tp411_e02_straight_2,\n\t\t///<summary>\n\t\t///Tunnel Special Straight 03\n\t\t///</summary>\n\t\tp411_e03_straight_3,\n\t\t///<summary>\n\t\t///Tunnel Special Straight 04\n\t\t///</summary>\n\t\tp411_e04_straight_4,\n\t\t///<summary>\n\t\t///Tunnel Special Straight 05\n\t\t///</summary>\n\t\tp411_e05_straight_5,\n\t\t///<summary>\n\t\t///Tunnel Hexagon Straight 01\n\t\t///</summary>\n\t\tp411_f01_straight_1,\n\t\t///<summary>\n\t\t///Tunnel Hexagon Straight 02\n\t\t///</summary>\n\t\tp411_f02_straight_2,\n\t\t///<summary>\n\t\t///Tunnel Hexagon Straight 03\n\t\t///</summary>\n\t\tp411_f03_straight_3,\n\t\t///<summary>\n\t\t///Tunnel Special 01\n\t\t///</summary>\n\t\tp411_f04_straight_4,\n\t\t///<summary>\n\t\t///Tunnel Special 02\n\t\t///</summary>\n\t\tp411_f05_straight_5,\n\t\t///<summary>\n\t\t///Tunnel Puzzle Straight 01\n\t\t///</summary>\n\t\tp411_g01_straight_1,\n\t\t///<summary>\n\t\t///Tunnel Puzzle Straight 02\n\t\t///</summary>\n\t\tp411_g02_straight_2,\n\t\t///<summary>\n\t\t///Tunnel Puzzle Straight 03\n\t\t///</summary>\n\t\tp411_g03_straight_3,\n\t\t///<summary>\n\t\t///Tunnel Puzzle Straight 04\n\t\t///</summary>\n\t\tp411_g04_straight_4,\n\t\t///<summary>\n\t\t///Tunnel Special 03\n\t\t///</summary>\n\t\tp411_g05_straight_5,\n\t\t///<summary>\n\t\t///Hextunnel 90 turn vertical\n\t\t///</summary>\n\t\tp412A01HexTunnel90TurnVertical,\n\t\t///<summary>\n\t\t///Hextunnel S turn horizontal\n\t\t///</summary>\n\t\tp412A01HexTunnelSTurnHorizontal,\n\t\t///<summary>\n\t\t///Hextunnel S turn vertical\n\t\t///</summary>\n\t\tp412A01HexTunnelSTurnVertical,\n\t\t///<summary>\n\t\t///Hextunnel 90 turn horizontal\n\t\t///</summary>\n\t\tp412A02HexTunnel90TurnHorizontal,\n\t\t///<summary>\n\t\t///Tunnel Cross Corner 80 radius Up\n\t\t///</summary>\n\t\tp412_a01_turn_90_up_80m,\n\t\t///<summary>\n\t\t///Tunnel Cross Corner 80 radius Left\n\t\t///</summary>\n\t\tp412_a02_turn_90_left_80m,\n\t\t///<summary>\n\t\t///Tunnel Cross Corner 80 radius Right\n\t\t///</summary>\n\t\tp412_a03_turn_90_right_80m,\n\t\t///<summary>\n\t\t///Tunnel Cross Corner 80 radius Down\n\t\t///</summary>\n\t\tp412_a04_turn_90_down_80m,\n\t\t///<summary>\n\t\t///Tunnel Cross Corner 160 radius Up\n\t\t///</summary>\n\t\tp412_a11_turn_90_up_160m,\n\t\t///<summary>\n\t\t///Tunnel Cross Corner 160 radius Left\n\t\t///</summary>\n\t\tp412_a12_turn_90_left_160m,\n\t\t///<summary>\n\t\t///Tunnel Cross Corner 160 radius Right\n\t\t///</summary>\n\t\tp412_a13_turn_90_right_160m,\n\t\t///<summary>\n\t\t///Tunnel Cross Corner 160 radius Down\n\t\t///</summary>\n\t\tp412_a14_turn_90_down_160m,\n\t\t///<summary>\n\t\t///Tunnel Cross S-Curve Up\n\t\t///</summary>\n\t\tp412_a21_turn_s_up,\n\t\t///<summary>\n\t\t///Tunnel Cross S-Curve Left\n\t\t///</summary>\n\t\tp412_a22_turn_s_left,\n\t\t///<summary>\n\t\t///Tunnel Cross S-Curve Right\n\t\t///</summary>\n\t\tp412_a23_turn_s_right,\n\t\t///<summary>\n\t\t///Tunnel Cross S-Curve Down\n\t\t///</summary>\n\t\tp412_a24_turn_s_down,\n\t\t///<summary>\n\t\t///Tunnel Round Corner 80 radius Up\n\t\t///</summary>\n\t\tp412_b01_turn_90_up_80m,\n\t\t///<summary>\n\t\t///Tunnel Round Corner 80 radius Left\n\t\t///</summary>\n\t\tp412_b02_turn_90_left_80m,\n\t\t///<summary>\n\t\t///Tunnel Round Corner 80 radius Right\n\t\t///</summary>\n\t\tp412_b03_turn_90_right_80m,\n\t\t///<summary>\n\t\t///Tunnel Round Corner 80 radius Down\n\t\t///</summary>\n\t\tp412_b04_turn_90_down_80m,\n\t\t///<summary>\n\t\t///Tunnel Round Corner 160 radius Up\n\t\t///</summary>\n\t\tp412_b11_turn_90_up_160m,\n\t\t///<summary>\n\t\t///Tunnel Round Corner 160 radius Left\n\t\t///</summary>\n\t\tp412_b12_turn_90_left_160m,\n\t\t///<summary>\n\t\t///Tunnel Round Corner 160 radius Right\n\t\t///</summary>\n\t\tp412_b13_turn_90_right_160m,\n\t\t///<summary>\n\t\t///Tunnel Round Corner 160 radius Down\n\t\t///</summary>\n\t\tp412_b14_turn_90_down_160m,\n\t\t///<summary>\n\t\t///Tunnel Round S-Curve Up\n\t\t///</summary>\n\t\tp412_b21_turn_s_up,\n\t\t///<summary>\n\t\t///Tunnel Round S-Curve Left\n\t\t///</summary>\n\t\tp412_b22_turn_s_left,\n\t\t///<summary>\n\t\t///Tunnel Round S-Curve Right\n\t\t///</summary>\n\t\tp412_b23_turn_s_right,\n\t\t///<summary>\n\t\t///Tunnel Round S-Curve Down\n\t\t///</summary>\n\t\tp412_b24_turn_s_down,\n\t\t///<summary>\n\t\t///Tunnel Hexagon Corner 230 radius Up\n\t\t///</summary>\n\t\tp412_f01_turn_90_up_230m,\n\t\t///<summary>\n\t\t///Tunnel Hexagon Corner 230 radius Left\n\t\t///</summary>\n\t\tp412_f02_turn_90_left_230m,\n\t\t///<summary>\n\t\t///Tunnel Hexagon Corner 230 radius Right\n\t\t///</summary>\n\t\tp412_f03_turn_90_right_230m,\n\t\t///<summary>\n\t\t///Tunnel Hexagon Corner 230 radius Down\n\t\t///</summary>\n\t\tp412_f04_turn_90_down_230m,\n\t\t///<summary>\n\t\t///Tunnel Ngon Turn 90 Up\n\t\t///</summary>\n\t\tp412_f11_turn_90_up_230m,\n\t\t///<summary>\n\t\t///Tunnel Ngon Turn 90 Left\n\t\t///</summary>\n\t\tp412_f12_turn_90_left_230m,\n\t\t///<summary>\n\t\t///Tunnel Ngon Turn 90 Right\n\t\t///</summary>\n\t\tp412_f13_turn_90_right_230m,\n\t\t///<summary>\n\t\t///Tunnel Ngon Turn 90 Down\n\t\t///</summary>\n\t\tp412_f14_turn_90_down_230m,\n\t\t///<summary>\n\t\t///Tunnel Hexagon S-Curve Up\n\t\t///</summary>\n\t\tp412_f21_turn_s_up,\n\t\t///<summary>\n\t\t///Tunnel Hexagon S-Curve Left\n\t\t///</summary>\n\t\tp412_f22_turn_s_left,\n\t\t///<summary>\n\t\t///Tunnel Hexagon S-Curve Right\n\t\t///</summary>\n\t\tp412_f23_turn_s_right,\n\t\t///<summary>\n\t\t///Tunnel Hexagon S-Curve Down\n\t\t///</summary>\n\t\tp412_f24_turn_s_down,\n\t\t///<summary>\n\t\t///Cross Junction T Horizontal\n\t\t///</summary>\n\t\tp413_a01_junction_t_horizontal,\n\t\t///<summary>\n\t\t///Cross Junction T Vertical\n\t\t///</summary>\n\t\tp413_a02_junction_t_vertical,\n\t\t///<summary>\n\t\t///Tunnel Round T-Junction Horizontal\n\t\t///</summary>\n\t\tp413_b01_junction_t_horizontal,\n\t\t///<summary>\n\t\t///Tunnel Round X-Junction Horizontal\n\t\t///</summary>\n\t\tp413_b02_junction_t_vertical,\n\t\t///<summary>\n\t\t///Tunnel Bread T-Junction Horizontal\n\t\t///</summary>\n\t\tp413_c01_junction_t_horizontal,\n\t\t///<summary>\n\t\t///Tunnel Bread X-Junction Horizontal\n\t\t///</summary>\n\t\tp413_c01_junction_x_horizontal,\n\t\t///<summary>\n\t\t///Rectangle Junction T Horizontal\n\t\t///</summary>\n\t\tp413_d01_junction_t_horizontal,\n\t\t///<summary>\n\t\t///Tunnel Ngon Junction T Vertical\n\t\t///</summary>\n\t\tp413_d02_junction_t_vertical,\n\t\t///<summary>\n\t\t///Rectangle Junction X Horizontal\n\t\t///</summary>\n\t\tp413_d03_junction_x_horizontal,\n\t\t///<summary>\n\t\t///Tunnel Ngon Junction X Vertical\n\t\t///</summary>\n\t\tp413_d04_junction_x_vertical,\n\t\t///<summary>\n\t\t///Tunnel Puzzle 6-way Junction\n\t\t///</summary>\n\t\tp413_g01_junction_6axes,\n\t\t///<summary>\n\t\t///Tunnel Cross Connector\n\t\t///</summary>\n\t\tp414_a02_entrance_60m,\n\t\t///<summary>\n\t\t///Tunnel Round Connector\n\t\t///</summary>\n\t\tp414_b02_entrance_60m,\n\t\t///<summary>\n\t\t///Tunnel Bread Connector\n\t\t///</summary>\n\t\tp414_c01_entrance_60m,\n\t\t///<summary>\n\t\t///Tunnel Octagon Connector\n\t\t///</summary>\n\t\tp414_d01_entrance_60m,\n\t\t///<summary>\n\t\t///Tunnel Special Connector\n\t\t///</summary>\n\t\tp414_e01_entrance_60m,\n\t\t///<summary>\n\t\t///Entrance Special 01 60m\n\t\t///</summary>\n\t\tp414_f01_entrance_60m,\n\t\t///<summary>\n\t\t///Entrance Special 02 60m\n\t\t///</summary>\n\t\tp414_g01_entrance_60m,\n\t\t///<summary>\n\t\t///Tunnel Puzzle Connector\n\t\t///</summary>\n\t\tp414_g02_entrance_60m,\n\t\t///<summary>\n\t\t///Tunnel Cross Doorframe\n\t\t///</summary>\n\t\tp415_a01_doorcase,\n\t\t///<summary>\n\t\t///Tunnel Cross Door\n\t\t///</summary>\n\t\tp415_a02_door,\n\t\t///<summary>\n\t\t///Tunnel Round Doorframe\n\t\t///</summary>\n\t\tp415_b01_doorcase,\n\t\t///<summary>\n\t\t///Tunnel Doorframe Straight A\n\t\t///</summary>\n\t\tp415_c01_door1,\n\t\t///<summary>\n\t\t///Tunnel Doorframe Narrow A\n\t\t///</summary>\n\t\tp415_c01_door2,\n\t\t///<summary>\n\t\t///Tunnel Doorframe Narrow B\n\t\t///</summary>\n\t\tp415_c01_door3,\n\t\t///<summary>\n\t\t///Tunnel Doorframe Straight B\n\t\t///</summary>\n\t\tp415_c01_door4,\n\t\t///<summary>\n\t\t///Tunnel Bread Doorframe\n\t\t///</summary>\n\t\tp415_c01_doorcase,\n\t\t///<summary>\n\t\t///Tunnel Bread Door 01\n\t\t///</summary>\n\t\tp415_c02_door1,\n\t\t///<summary>\n\t\t///Tunnel Bread Door 02 Left\n\t\t///</summary>\n\t\tp415_c03_door2_a,\n\t\t///<summary>\n\t\t///Tunnel Bread Door 02 Right\n\t\t///</summary>\n\t\tp415_c03_door2_b,\n\t\t///<summary>\n\t\t///Tunnel Bread Door 03\n\t\t///</summary>\n\t\tp415_c04_door3,\n\t\t///<summary>\n\t\t///Tunnel Octagon Doorframe\n\t\t///</summary>\n\t\tp415_d01_doorcase,\n\t\t///<summary>\n\t\t///Tunnel Octagon Door 01\n\t\t///</summary>\n\t\tp415_d02_door1,\n\t\t///<summary>\n\t\t///Tunnel Octagon Door 02 Left\n\t\t///</summary>\n\t\tp415_d03_door2_a,\n\t\t///<summary>\n\t\t///Tunnel Octagon Door 02 Right\n\t\t///</summary>\n\t\tp415_d03_door2_b,\n\t\t///<summary>\n\t\t///Pipe straight long\n\t\t///</summary>\n\t\tp420A01PipeStraightLong,\n\t\t///<summary>\n\t\t///Pipe straight medium\n\t\t///</summary>\n\t\tp420A02PipeStraightMedium,\n\t\t///<summary>\n\t\t///Pipe straight tiny\n\t\t///</summary>\n\t\tp420A03PipeStraightTiny,\n\t\t///<summary>\n\t\t///Pipe T junction\n\t\t///</summary>\n\t\tp420A04PipeTJunction,\n\t\t///<summary>\n\t\t///Pipe turn\n\t\t///</summary>\n\t\tp420A05PipeTurn,\n\t\t///<summary>\n\t\t///Pipe Straight 80 meters\n\t\t///</summary>\n\t\tp421_a01_pipe_straight_80m,\n\t\t///<summary>\n\t\t///Pipe Straight 40 meters\n\t\t///</summary>\n\t\tp421_a02_pipe_straight_40m,\n\t\t///<summary>\n\t\t///Pipe Straight 10 meters\n\t\t///</summary>\n\t\tp421_a03_pipe_straight_10m,\n\t\t///<summary>\n\t\t///Pipe Corner\n\t\t///</summary>\n\t\tp422_a01_pipe_turn_90,\n\t\t///<summary>\n\t\t///Pipe T-Junction\n\t\t///</summary>\n\t\tp423_a01_pipe_junction,\n\t\t///<summary>\n\t\t///Pipe Base\n\t\t///</summary>\n\t\tp424_a01_pipe_base,\n\t\t///<summary>\n\t\t///Passage 10 meters\n\t\t///</summary>\n\t\tp430_a01_passage_10m,\n\t\t///<summary>\n\t\t///Passage 160 meters\n\t\t///</summary>\n\t\tp430_a02_passage_40m,\n\t\t///<summary>\n\t\t///Billboard 1\n\t\t///</summary>\n\t\tp511_a01_billboard,\n\t\t///<summary>\n\t\t///Billboard 2\n\t\t///</summary>\n\t\tp511_a02_billboard,\n\t\t///<summary>\n\t\t///Billboard 3\n\t\t///</summary>\n\t\tp511_a03_billboard,\n\t\t///<summary>\n\t\t///Billboard 4\n\t\t///</summary>\n\t\tp511_a04_billboard,\n\t\t///<summary>\n\t\t///Billboard 5\n\t\t///</summary>\n\t\tp511_a05_billboard,\n\t\t///<summary>\n\t\t///Billboard 6\n\t\t///</summary>\n\t\tp511_a06_billboard,\n\t\t///<summary>\n\t\t///Billboard 7\n\t\t///</summary>\n\t\tp511_a07_billboard,\n\t\t///<summary>\n\t\t///Billboard 8\n\t\t///</summary>\n\t\tp511_a08_billboard,\n\t\t///<summary>\n\t\t///Billboard 9\n\t\t///</summary>\n\t\tp511_a09_billboard,\n\t\t///<summary>\n\t\t///Billboard 10\n\t\t///</summary>\n\t\tp511_a10_billboard,\n\t\t///<summary>\n\t\t///Billboard 11\n\t\t///</summary>\n\t\tp511_a11_billboard,\n\t\t///<summary>\n\t\t///Billboard 12\n\t\t///</summary>\n\t\tp511_a12_billboard,\n\t\t///<summary>\n\t\t///Billboard 13\n\t\t///</summary>\n\t\tp511_a13_billboard,\n\t\t///<summary>\n\t\t///Billboard 14\n\t\t///</summary>\n\t\tp511_a14_billboard,\n\t\t///<summary>\n\t\t///Billboard 15\n\t\t///</summary>\n\t\tp511_a15_billboard,\n\t\t///<summary>\n\t\t///Billboard 16\n\t\t///</summary>\n\t\tp511_a16_billboard,\n\t\t///<summary>\n\t\t///Light 1\n\t\t///</summary>\n\t\tp521_a01_light1,\n\t\t///<summary>\n\t\t///Light 2\n\t\t///</summary>\n\t\tp521_a02_light2,\n\t\t///<summary>\n\t\t///Light 3\n\t\t///</summary>\n\t\tp521_a03_light3,\n\t\t///<summary>\n\t\t///Light 4\n\t\t///</summary>\n\t\tp521_a04_light4,\n\t\t///<summary>\n\t\t///Sign 1\n\t\t///</summary>\n\t\tp531_a01_sign1,\n\t\t///<summary>\n\t\t///Sign 2\n\t\t///</summary>\n\t\tp531_a02_sign2,\n\t\t///<summary>\n\t\t///Sign 3\n\t\t///</summary>\n\t\tp531_a03_sign3,\n\t\t///<summary>\n\t\t///Sign 4\n\t\t///</summary>\n\t\tp531_a04_sign4,\n\t\t///<summary>\n\t\t///Sign 5\n\t\t///</summary>\n\t\tp531_a05_sign5,\n\t\t///<summary>\n\t\t///Sign 6\n\t\t///</summary>\n\t\tp531_a06_sign6,\n\t\t///<summary>\n\t\t///Sign 7\n\t\t///</summary>\n\t\tp531_a07_sign7,\n\t\t///<summary>\n\t\t///Sign 8\n\t\t///</summary>\n\t\tp531_a08_sign8,\n\t\t///<summary>\n\t\t///Sign 9\n\t\t///</summary>\n\t\tp531_a09_sign9,\n\t\t///<summary>\n\t\t///Sign 10\n\t\t///</summary>\n\t\tp531_a10_sign10,\n\t\t///<summary>\n\t\t///Sign 11\n\t\t///</summary>\n\t\tp531_a11_sign11,\n\t\t///<summary>\n\t\t///Sign 12\n\t\t///</summary>\n\t\tp531_a12_sign12,\n\t\t///<summary>\n\t\t///faction sign\n\t\t///</summary>\n\t\tp531_b_faction,\n\t\t///<summary>\n\t\t///faction sign holo\n\t\t///</summary>\n\t\tp531_b_faction_holo,\n\t\t///<summary>\n\t\t///Administrative Area\n\t\t///</summary>\n\t\tp531_c_administrative_area,\n\t\t///<summary>\n\t\t///Armory\n\t\t///</summary>\n\t\tp531_c_armory,\n\t\t///<summary>\n\t\t///Left\n\t\t///</summary>\n\t\tp531_c_arrow_l,\n\t\t///<summary>\n\t\t///Right\n\t\t///</summary>\n\t\tp531_c_arrow_r,\n\t\t///<summary>\n\t\t///Forward\n\t\t///</summary>\n\t\tp531_c_arrow_str,\n\t\t///<summary>\n\t\t///Cargo Bay\n\t\t///</summary>\n\t\tp531_c_cargo_bay,\n\t\t///<summary>\n\t\t///Command Center\n\t\t///</summary>\n\t\tp531_c_command_center,\n\t\t///<summary>\n\t\t///Commercial Area\n\t\t///</summary>\n\t\tp531_c_commercial_area,\n\t\t///<summary>\n\t\t///Communications\n\t\t///</summary>\n\t\tp531_c_communications,\n\t\t///<summary>\n\t\t///Defenses\n\t\t///</summary>\n\t\tp531_c_defenses,\n\t\t///<summary>\n\t\t///Docks\n\t\t///</summary>\n\t\tp531_c_docks,\n\t\t///<summary>\n\t\t///Emergency Exit\n\t\t///</summary>\n\t\tp531_c_emergency_exit,\n\t\t///<summary>\n\t\t///Engineering Area\n\t\t///</summary>\n\t\tp531_c_engineering_area,\n\t\t///<summary>\n\t\t///Exit\n\t\t///</summary>\n\t\tp531_c_exit,\n\t\t///<summary>\n\t\t///Experimental Labs\n\t\t///</summary>\n\t\tp531_c_experimental_labs,\n\t\t///<summary>\n\t\t///Foundry\n\t\t///</summary>\n\t\tp531_c_foundry,\n\t\t///<summary>\n\t\t///Habitat\n\t\t///</summary>\n\t\tp531_c_habitats,\n\t\t///<summary>\n\t\t///Hangar\n\t\t///</summary>\n\t\tp531_c_hangars,\n\t\t///<summary>\n\t\t///Industrial Area\n\t\t///</summary>\n\t\tp531_c_industrial_area,\n\t\t///<summary>\n\t\t///Landing Bay\n\t\t///</summary>\n\t\tp531_c_landing_bay,\n\t\t///<summary>\n\t\t///Maintenance\n\t\t///</summary>\n\t\tp531_c_maintenance,\n\t\t///<summary>\n\t\t///Military Area\n\t\t///</summary>\n\t\tp531_c_military_area,\n\t\t///<summary>\n\t\t///Mines\n\t\t///</summary>\n\t\tp531_c_mines,\n\t\t///<summary>\n\t\t///Ore Processing\n\t\t///</summary>\n\t\tp531_c_ore_processing,\n\t\t///<summary>\n\t\t///Outer Area\n\t\t///</summary>\n\t\tp531_c_outer_area,\n\t\t///<summary>\n\t\t///Prison\n\t\t///</summary>\n\t\tp531_c_prison,\n\t\t///<summary>\n\t\t///Public Area\n\t\t///</summary>\n\t\tp531_c_public_area,\n\t\t///<summary>\n\t\t///Reactor\n\t\t///</summary>\n\t\tp531_c_reactor,\n\t\t///<summary>\n\t\t///Research\n\t\t///</summary>\n\t\tp531_c_research,\n\t\t///<summary>\n\t\t///Restricted Area\n\t\t///</summary>\n\t\tp531_c_restricted_area,\n\t\t///<summary>\n\t\t///Security\n\t\t///</summary>\n\t\tp531_c_security,\n\t\t///<summary>\n\t\t///Sign\n\t\t///</summary>\n\t\tp531_c_sign,\n\t\t///<summary>\n\t\t///Storage\n\t\t///</summary>\n\t\tp531_c_storage,\n\t\t///<summary>\n\t\t///Technical Area\n\t\t///</summary>\n\t\tp531_c_technical_area,\n\t\t///<summary>\n\t\t///Trade Port\n\t\t///</summary>\n\t\tp531_c_trade_port,\n\t\t///<summary>\n\t\t///Escape pod\n\t\t///</summary>\n\t\tp541_escape_pod,\n\t\t///<summary>\n\t\t///Escape pod base\n\t\t///</summary>\n\t\tp541_escape_pod_base,\n\t\t///<summary>\n\t\t///Ventilator body\n\t\t///</summary>\n\t\tp541_ventilator_body,\n\t\t///<summary>\n\t\t///Ventilator propeller\n\t\t///</summary>\n\t\tp541_ventilator_propeller,\n\t\t///<summary>\n\t\t///Leaking Steam White\n\t\t///</summary>\n\t\tp551_a01_particles,\n\t\t///<summary>\n\t\t///Leaking Steam Grey\n\t\t///</summary>\n\t\tp551_b01_particles,\n\t\t///<summary>\n\t\t///Leaking Steam Black\n\t\t///</summary>\n\t\tp551_c01_particles,\n\t\t///<summary>\n\t\t///Dust\n\t\t///</summary>\n\t\tp551_d01_particles,\n\t\t///<summary>\n\t\t///Sound 1\n\t\t///</summary>\n\t\tp561_a01_sound,\n\t\t///<summary>\n\t\t///Sound 2\n\t\t///</summary>\n\t\tp561_b01_sound,\n\t\t///<summary>\n\t\t///Sound 3\n\t\t///</summary>\n\t\tp561_c01_sound,\n\t\t///<summary>\n\t\t///Sound 4\n\t\t///</summary>\n\t\tp561_d01_sound,\n\t\t///<summary>\n\t\t///Trafic Sign 01\n\t\t///</summary>\n\t\tp571_a01_traffic_sign,\n\t\t///<summary>\n\t\t///Trafic Sign 02\n\t\t///</summary>\n\t\tp571_b01_traffic_sign,\n\t\t///<summary>\n\t\t///Trafic Box Sign 01\n\t\t///</summary>\n\t\tp571_box01_traffic_sign,\n\t\t///<summary>\n\t\t///Trafic Box Sign 02\n\t\t///</summary>\n\t\tp571_box02_traffic_sign,\n\t\t///<summary>\n\t\t///Trafic Sign 03\n\t\t///</summary>\n\t\tp571_c01_traffic_sign,\n\t\t///<summary>\n\t\t///Trafic Sign 04\n\t\t///</summary>\n\t\tp571_d01_traffic_sign,\n\t\t///<summary>\n\t\t///Trafic Sign 05\n\t\t///</summary>\n\t\tp571_e01_traffic_sign,\n\t\t///<summary>\n\t\t///Trafic Sign 06\n\t\t///</summary>\n\t\tp571_f01_traffic_sign,\n\t\t///<summary>\n\t\t///Trafic Sign 07\n\t\t///</summary>\n\t\tp571_g01_traffic_sign,\n\t\t///<summary>\n\t\t///Trafic Sign 08\n\t\t///</summary>\n\t\tp571_h01_traffic_sign,\n\t\t///<summary>\n\t\t///Trafic Sign 09\n\t\t///</summary>\n\t\tp571_i01_traffic_sign,\n\t\t///<summary>\n\t\t///Trafic Sign 10\n\t\t///</summary>\n\t\tp571_j01_traffic_sign,\n\t\t///<summary>\n\t\t///Trafic Sign 11\n\t\t///</summary>\n\t\tp571_k01_traffic_sign,\n\t\t///<summary>\n\t\t///Trafic Sign 12\n\t\t///</summary>\n\t\tp571_l01_traffic_sign,\n\t\t///<summary>\n\t\t///PgDown\n\t\t///</summary>\n\t\tPageDown,\n\t\t///<summary>\n\t\t///PgUp\n\t\t///</summary>\n\t\tPageUp,\n\t\t///<summary>\n\t\t///Particle effect\n\t\t///</summary>\n\t\tParticleEffect,\n\t\t///<summary>\n\t\t///Passive\n\t\t///</summary>\n\t\tPassive,\n\t\t///<summary>\n\t\t///Password\n\t\t///</summary>\n\t\tPassword,\n\t\t///<summary>\n\t\t///Patrol mode\n\t\t///</summary>\n\t\tPatrolMode,\n\t\t///<summary>\n\t\t///512x512x512 Splitted sphere\n\t\t///</summary>\n\t\tPerfectSphereSplitted_512x512x512,\n\t\t///<summary>\n\t\t///512x512x512 Sphere with few tunnels\n\t\t///</summary>\n\t\tPerfectSphereWithFewTunnels_512x512x512,\n\t\t///<summary>\n\t\t///512x512x512 Sphere with big tunnels 2\n\t\t///</summary>\n\t\tPerfectSphereWithMassiveTunnels2_512x512x512,\n\t\t///<summary>\n\t\t///512x512x512 Sphere with big tunnels 1\n\t\t///</summary>\n\t\tPerfectSphereWithMassiveTunnels_512x512x512,\n\t\t///<summary>\n\t\t///512x512x512 Sphere with tunnels 2\n\t\t///</summary>\n\t\tPerfectSphereWithRaceTunnel2_512x512x512,\n\t\t///<summary>\n\t\t///512x512x512 Sphere with tunnels 1\n\t\t///</summary>\n\t\tPerfectSphereWithRaceTunnel_512x512x512,\n\t\t///<summary>\n\t\t///Ping-pong\n\t\t///</summary>\n\t\tPingPong,\n\t\t///<summary>\n\t\t///Bundle of pipes\n\t\t///</summary>\n\t\tpipe_bundle,\n\t\t///<summary>\n\t\t///Pirate base cave\n\t\t///</summary>\n\t\tpiratebase_export,\n\t\t///<summary>\n\t\t///Platinum\n\t\t///</summary>\n\t\tPlatinum_01,\n\t\t///<summary>\n\t\t///Play demo\n\t\t///</summary>\n\t\tPlayDemo,\n\t\t///<summary>\n\t\t///Player health indestructible\n\t\t///</summary>\n\t\tPlayerHealthIndestructible,\n\t\t///<summary>\n\t\t///Player name\n\t\t///</summary>\n\t\tPlayerName,\n\t\t///<summary>\n\t\t///Player not found.\n\t\t///</summary>\n\t\tPlayerNotFound,\n\t\t///<summary>\n\t\t///Player ship indestructible\n\t\t///</summary>\n\t\tPlayerShipIndestructible,\n\t\t///<summary>\n\t\t///Player start\n\t\t///</summary>\n\t\tPlayerStart,\n\t\t///<summary>\n\t\t///Player ship position:     \n\t\t///</summary>\n\t\tPlayerStartPosition,\n\t\t///<summary>\n\t\t///Multiplayer\n\t\t///</summary>\n\t\tPlaySandbox,\n\t\t///<summary>\n\t\t///Singleplayer / Co-op\n\t\t///</summary>\n\t\tPlayStory,\n\t\t///<summary>\n\t\t///PointLight\n\t\t///</summary>\n\t\tPointLight,\n\t\t///<summary>\n\t\t///Position\n\t\t///</summary>\n\t\tPosition,\n\t\t///<summary>\n\t\t///Prefab Container\n\t\t///</summary>\n\t\tPrefabContainer,\n\t\t///<summary>\n\t\t///Prefab container already contains foundation factory\n\t\t///</summary>\n\t\tPrefabContainerAlreadyContainsFoundationFactory,\n\t\t///<summary>\n\t\t///Prefab container\n\t\t///</summary>\n\t\tPrefabContainerContextMenuCaption,\n\t\t///<summary>\n\t\t///Prefab\n\t\t///</summary>\n\t\tPrefabContextMenuCaption,\n\t\t///<summary>\n\t\t///Prefab materials\n\t\t///</summary>\n\t\tPrefabMaterials,\n\t\t///<summary>\n\t\t///Prefabs\n\t\t///</summary>\n\t\tPrefabs,\n\t\t///<summary>\n\t\t///Spawn points\n\t\t///</summary>\n\t\tSpawnPoints,\n\t\t///<summary>\n\t\t///Hold {0} to build a turret here.\n\t\t///</summary>\n\t\tPressToBuildTurret,\n\t\t///<summary>\n\t\t///Press {0} to launch the attack.\n\t\t///</summary>\n\t\tPressToSkipTimer,\n\t\t///<summary>\n\t\t///Previous secondary cam\n\t\t///</summary>\n\t\tPreviousCamera,\n\t\t///<summary>\n\t\t///Profile\n\t\t///</summary>\n\t\tProfile,\n\t\t///<summary>\n\t\t///Quick zoom\n\t\t///</summary>\n\t\tQuickZoom,\n\t\t///<summary>\n\t\t///Press F1 during gameplay to show help and current controls.\n\t\t///</summary>\n\t\tQuoteOfTheDay00,\n\t\t///<summary>\n\t\t///The Templars are the protectors of righteousness in the Solar System, counting up to 314 guardians.\n\t\t///</summary>\n\t\tQuoteOfTheDay01,\n\t\t///<summary>\n\t\t///The Solar Event is the consequence of failure in Project Genesis, the gigantic positron generator.\n\t\t///</summary>\n\t\tQuoteOfTheDay02,\n\t\t///<summary>\n\t\t///Maulerian Eugenics is an ideology of creating a genetically perfected human race, originally conceived by the scientist Gregor Fitzgerald Mauler.\n\t\t///</summary>\n\t\tQuoteOfTheDay03,\n\t\t///<summary>\n\t\t///The official OmniCorp motto is inscribed within three conjoined hexagons signifying the “3 P’s” – Progress, Profit, Prosperity.\n\t\t///</summary>\n\t\tQuoteOfTheDay04,\n\t\t///<summary>\n\t\t///Apollo was only sixteen during the Solar Event. His brother took care of him, taking him on many mining and survey missions.\n\t\t///</summary>\n\t\tQuoteOfTheDay05,\n\t\t///<summary>\n\t\t///Madelyn first met the brothers in 2072 on a mission for FSRE on an outer belt survey mission.\n\t\t///</summary>\n\t\tQuoteOfTheDay06,\n\t\t///<summary>\n\t\t///Watch carefully for cargo boxes. They can provide you with extra equipment and ammo!\n\t\t///</summary>\n\t\tQuoteOfTheDay07,\n\t\t///<summary>\n\t\t///Missiles are most efficient against large groups of enemies thanks to the damage radius caused by the explosion!\n\t\t///</summary>\n\t\tQuoteOfTheDay08,\n\t\t///<summary>\n\t\t///Utilize the destructible environment while in combat and reveal secret paths or hidden areas during a mission!\n\t\t///</summary>\n\t\tQuoteOfTheDay09,\n\t\t///<summary>\n\t\t///Harvesting ores from asteroids will provide you with materials that are tradeable by vendors.\n\t\t///</summary>\n\t\tQuoteOfTheDay10,\n\t\t///<summary>\n\t\t///GPS will help you navigate to your next objective.\n\t\t///</summary>\n\t\tQuoteOfTheDay11,\n\t\t///<summary>\n\t\t///Security hubs allow you to disable or control cameras, turrets, doors and other dynamic structures remotely.\n\t\t///</summary>\n\t\tQuoteOfTheDay12,\n\t\t///<summary>\n\t\t///Use drones to get through tight corridors and other places your ship is unable to fit.\n\t\t///</summary>\n\t\tQuoteOfTheDay13,\n\t\t///<summary>\n\t\t///Your enemies do not detect you while your engines are turned off. Use this in multiplayer to fool your opponents.\n\t\t///</summary>\n\t\tQuoteOfTheDay14,\n\t\t///<summary>\n\t\t///Every game session is in co-op mode by default. If you don’t want others to join you, disable co-op in menu.\n\t\t///</summary>\n\t\tQuoteOfTheDay15,\n\t\t///<summary>\n\t\t///Afterburner increases your speed temporarily and recharges automatically over time. Beware of increased fuel consumption!\n\t\t///</summary>\n\t\tQuoteOfTheDay16,\n\t\t///<summary>\n\t\t///If you run out of ammo, you can always use your drill to crush your enemies!\n\t\t///</summary>\n\t\tQuoteOfTheDay17,\n\t\t///<summary>\n\t\t///Use your mothership to travel quickly across the Solar System.\n\t\t///</summary>\n\t\tQuoteOfTheDay18,\n\t\t///<summary>\n\t\t///Some objects/terminals are usable from close distance directly, that is even without hacking a security hub.\n\t\t///</summary>\n\t\tQuoteOfTheDay19,\n\t\t///<summary>\n\t\t///Play multiplayer with your friends to show them who’s boss!\n\t\t///</summary>\n\t\tQuoteOfTheDay20,\n\t\t///<summary>\n\t\t///Use the environment properly to hide and take cover against large groups of enemy fighters!\n\t\t///</summary>\n\t\tQuoteOfTheDay21,\n\t\t///<summary>\n\t\t///Use the editor to create your own custom multiplayer maps, space stations, asteroids and other awesome structures!\n\t\t///</summary>\n\t\tQuoteOfTheDay22,\n\t\t///<summary>\n\t\t///Some enemies are tougher than others… Try to learn the weak and strong points of each ship type!\n\t\t///</summary>\n\t\tQuoteOfTheDay23,\n\t\t///<summary>\n\t\t///If you don’t like the cockpit, you can always switch to third-person mode.\n\t\t///</summary>\n\t\tQuoteOfTheDay24,\n\t\t///<summary>\n\t\t///Solar wind will hit you hard if you do not manage to find cover behind asteroids or other large objects quickly enough!\n\t\t///</summary>\n\t\tQuoteOfTheDay25,\n\t\t///<summary>\n\t\t///Smart mines will automatically chase enemies once they get close enough.\n\t\t///</summary>\n\t\tQuoteOfTheDay26,\n\t\t///<summary>\n\t\t///Use holograms to distract your enemies and relieve the pressure of engaging enemies for a short time.\n\t\t///</summary>\n\t\tQuoteOfTheDay27,\n\t\t///<summary>\n\t\t///You can use drones to explore dangerous and radioactive areas without putting yourself in harm.\n\t\t///</summary>\n\t\tQuoteOfTheDay28,\n\t\t///<summary>\n\t\t///You may shake off your enemies by turning off engines; however, you’ll still be prone to harm and unable to react promptly.\n\t\t///</summary>\n\t\tQuoteOfTheDay29,\n\t\t///<summary>\n\t\t///To maximize your efficiency while mining, try harvesting from a hole drilled in the material.\n\t\t///</summary>\n\t\tQuoteOfTheDay30,\n\t\t///<summary>\n\t\t///If a co-op game becomes a little out of hand, try playing multiplayer deathmatch!\n\t\t///</summary>\n\t\tQuoteOfTheDay31,\n\t\t///<summary>\n\t\t///You can turn off most notifications and warnings in Game options.\n\t\t///</summary>\n\t\tQuoteOfTheDay32,\n\t\t///<summary>\n\t\t///Try playing both with and without autoleveling to find out which better suits your playing style.\n\t\t///</summary>\n\t\tQuoteOfTheDay33,\n\t\t///<summary>\n\t\t///Travel long distances for free by speeding up and turning off the engines.\n\t\t///</summary>\n\t\tQuoteOfTheDay34,\n\t\t///<summary>\n\t\t///Radar type\n\t\t///</summary>\n\t\tRadarType,\n\t\t///<summary>\n\t\t///Normal3D\n\t\t///</summary>\n\t\tRadarTypeNormal3D,\n\t\t///<summary>\n\t\t///Player2D\n\t\t///</summary>\n\t\tRadarTypePlayer2D,\n\t\t///<summary>\n\t\t///Solar2D\n\t\t///</summary>\n\t\tRadarTypeSolar2D,\n\t\t///<summary>\n\t\t///Radius\n\t\t///</summary>\n\t\tRadius,\n\t\t///<summary>\n\t\t///Radius max\n\t\t///</summary>\n\t\tRadiusMax,\n\t\t///<summary>\n\t\t///Max radius must be bigger than min radius\n\t\t///</summary>\n\t\tRadiusMaxLowerThanRadiusMin,\n\t\t///<summary>\n\t\t///Radius min\n\t\t///</summary>\n\t\tRadiusMin,\n\t\t///<summary>\n\t\t///Random\n\t\t///</summary>\n\t\tRandom,\n\t\t///<summary>\n\t\t///RandomFlashing\n\t\t///</summary>\n\t\tRandomFlashing,\n\t\t///<summary>\n\t\t///Toggle secondary cam\n\t\t///</summary>\n\t\tRearCam,\n\t\t///<summary>\n\t\t///Rear-view mirror\n\t\t///</summary>\n\t\tRearViewMirror,\n\t\t///<summary>\n\t\t///Recommended: {0}\n\t\t///</summary>\n\t\tRecommendedAspectRatio,\n\t\t///<summary>\n\t\t///Red\n\t\t///</summary>\n\t\tRed,\n\t\t///<summary>\n\t\t///* Red-colored properties are not the same!\n\t\t///</summary>\n\t\tRedColoredPropertiesAreNotSame,\n\t\t///<summary>\n\t\t///Register\n\t\t///</summary>\n\t\tRegister,\n\t\t///<summary>\n\t\t///Registration\n\t\t///</summary>\n\t\tRegistration,\n\t\t///<summary>\n\t\t///Fill and submit this form in order to create your Miner Wars account\n\t\t///</summary>\n\t\tRegistrationInfo,\n\t\t///<summary>\n\t\t///Registration in progress… please wait.\n\t\t///</summary>\n\t\tRegistrationInProgressPleaseWait,\n\t\t///<summary>\n\t\t///You’ve placed {0} turrets, {1} remaining.\n\t\t///</summary>\n\t\tRemainingTurrets,\n\t\t///<summary>\n\t\t///Remember me\n\t\t///</summary>\n\t\tRememberMe,\n\t\t///<summary>\n\t\t///Remote bomb\n\t\t///</summary>\n\t\tRemoteBombHud,\n\t\t///<summary>\n\t\t///Remote camera\n\t\t///</summary>\n\t\tRemoteCameraHud,\n\t\t///<summary>\n\t\t///Cam {0}\n\t\t///</summary>\n\t\tRemoteCameraNo,\n\t\t///<summary>\n\t\t///Cam {0}: Hold {1} to look around\n\t\t///</summary>\n\t\tRemoteCameraNoRotate,\n\t\t///<summary>\n\t\t///Hold {0} to look around with the camera\n\t\t///</summary>\n\t\tRemoteCameraRotate,\n\t\t///<summary>\n\t\t///Remove all blueprints\n\t\t///</summary>\n\t\tRemoveAllBlueprints,\n\t\t///<summary>\n\t\t///Remove voxels\n\t\t///</summary>\n\t\tRemoveVoxels,\n\t\t///<summary>\n\t\t///Rename\n\t\t///</summary>\n\t\tRename,\n\t\t///<summary>\n\t\t///Rename checkpoint\n\t\t///</summary>\n\t\tRenameCheckpoint,\n\t\t///<summary>\n\t\t///Render quality\n\t\t///</summary>\n\t\tRenderQuality,\n\t\t///<summary>\n\t\t///Extreme\n\t\t///</summary>\n\t\tRenderQualityExtreme,\n\t\t///<summary>\n\t\t///High\n\t\t///</summary>\n\t\tRenderQualityHigh,\n\t\t///<summary>\n\t\t///Very Ugly\n\t\t///</summary>\n\t\tRenderQualityLow,\n\t\t///<summary>\n\t\t///Normal\n\t\t///</summary>\n\t\tRenderQualityNormal,\n\t\t///<summary>\n\t\t///Repair\n\t\t///</summary>\n\t\tRepair,\n\t\t///<summary>\n\t\t///Reset asteroid\n\t\t///</summary>\n\t\tResetAsteroid,\n\t\t///<summary>\n\t\t///Removes any merged asteroids from the current selection\n\t\t///</summary>\n\t\tResetAsteroidTooltip,\n\t\t///<summary>\n\t\t///Reset rotation\n\t\t///</summary>\n\t\tResetRotation,\n\t\t///<summary>\n\t\t///Resets any rotation modifications for the current selection\n\t\t///</summary>\n\t\tResetRotationTooltip,\n\t\t///<summary>\n\t\t///Respawn\n\t\t///</summary>\n\t\tRespawn,\n\t\t///<summary>\n\t\t///Retype password\n\t\t///</summary>\n\t\tRetypePassword,\n\t\t///<summary>\n\t\t///Reverse thrust\n\t\t///</summary>\n\t\tReverseThrust,\n\t\t///<summary>\n\t\t///Defaults\n\t\t///</summary>\n\t\tRevert,\n\t\t///<summary>\n\t\t///Right\n\t\t///</summary>\n\t\tRight,\n\t\t///<summary>\n\t\t///RAlt\n\t\t///</summary>\n\t\tRightAlt,\n\t\t///<summary>\n\t\t///RCtrl\n\t\t///</summary>\n\t\tRightControl,\n\t\t///<summary>\n\t\t///RMB\n\t\t///</summary>\n\t\tRightMouseButton,\n\t\t///<summary>\n\t\t///RShift\n\t\t///</summary>\n\t\tRightShift,\n\t\t///<summary>\n\t\t///Right wing\n\t\t///</summary>\n\t\tRighWeapons,\n\t\t///<summary>\n\t\t///Roll left\n\t\t///</summary>\n\t\tRollLeft,\n\t\t///<summary>\n\t\t///Roll right\n\t\t///</summary>\n\t\tRollRight,\n\t\t///<summary>\n\t\t///Rotate down\n\t\t///</summary>\n\t\tRotationDown,\n\t\t///<summary>\n\t\t///Rotate left\n\t\t///</summary>\n\t\tRotationLeft,\n\t\t///<summary>\n\t\t///Rotate right\n\t\t///</summary>\n\t\tRotationRight,\n\t\t///<summary>\n\t\t///Rotate up\n\t\t///</summary>\n\t\tRotationUp,\n\t\t///<summary>\n\t\t///Russian mothership\n\t\t///</summary>\n\t\tRusMothership,\n\t\t///<summary>\n\t\t///Russian mothership Hummer\n\t\t///</summary>\n\t\tRussianMothershipHummer,\n\t\t///<summary>\n\t\t///Safe area\n\t\t///</summary>\n\t\tSafeArea,\n\t\t///<summary>\n\t\t///Sandstone 1\n\t\t///</summary>\n\t\tSandstone_01,\n\t\t///<summary>\n\t\t///Save asteroids\n\t\t///</summary>\n\t\tSaveAsteroids,\n\t\t///<summary>\n\t\t///Export asteroids to a file\n\t\t///</summary>\n\t\tSaveAsteroidsTooltip,\n\t\t///<summary>\n\t\t///Save asteroid\n\t\t///</summary>\n\t\tSaveAsteroidToFile,\n\t\t///<summary>\n\t\t///Saves asteroid to a file\n\t\t///</summary>\n\t\tSaveAsteroidToFileTooltip,\n\t\t///<summary>\n\t\t///Save checkpoint\n\t\t///</summary>\n\t\tSaveCheckpoint,\n\t\t///<summary>\n\t\t///Save sector\n\t\t///</summary>\n\t\tSaveSector,\n\t\t///<summary>\n\t\t///Saving sector to server…  please wait\n\t\t///</summary>\n\t\tSaveSectorInProgressPleaseWait,\n\t\t///<summary>\n\t\t///Saves sector to server\n\t\t///</summary>\n\t\tSaveSectorTooltip,\n\t\t///<summary>\n\t\t///Scanner\n\t\t///</summary>\n\t\tScanner,\n\t\t///<summary>\n\t\t///Scanner plane\n\t\t///</summary>\n\t\tScannerPlane,\n\t\t///<summary>\n\t\t///Scanner rays\n\t\t///</summary>\n\t\tScannerRays,\n\t\t///<summary>\n\t\t///Scanning speed\n\t\t///</summary>\n\t\tScanningSpeed,\n\t\t///<summary>\n\t\t///128x128x128 Scratched boulder\n\t\t///</summary>\n\t\tScratchedBoulder_128x128x128,\n\t\t///<summary>\n\t\t///Search\n\t\t///</summary>\n\t\tSearch,\n\t\t///<summary>\n\t\t///Approaching sector border: \n\t\t///</summary>\n\t\tSectorBorderBegin,\n\t\t///<summary>\n\t\t/// m\n\t\t///</summary>\n\t\tSectorBorderEnd,\n\t\t///<summary>\n\t\t///Sector identifier:      \n\t\t///</summary>\n\t\tSectorIdentifier,\n\t\t///<summary>\n\t\t///Sector name:\n\t\t///</summary>\n\t\tSectorName,\n\t\t///<summary>\n\t\t///Sector not found.\n\t\t///</summary>\n\t\tSectorNotFound,\n\t\t///<summary>\n\t\t///Security control hub\n\t\t///</summary>\n\t\tSecurityControlHUB,\n\t\t///<summary>\n\t\t///See all\n\t\t///</summary>\n\t\tSeeAll,\n\t\t///<summary>\n\t\t///See distance\n\t\t///</summary>\n\t\tSeeDistance,\n\t\t///<summary>\n\t\t///Selectable\n\t\t///</summary>\n\t\tSelectable,\n\t\t///<summary>\n\t\t///Select all / none\n\t\t///</summary>\n\t\tSelectAllNone,\n\t\t///<summary>\n\t\t///Select all objects\n\t\t///</summary>\n\t\tSelectAllObjects,\n\t\t///<summary>\n\t\t///Press Left Ctrl+A to select all objects in sector\n\t\t///</summary>\n\t\tSelectAllObjectsTooltip,\n\t\t///<summary>\n\t\t///SELECT CONTROL\n\t\t///</summary>\n\t\tSelectControl,\n\t\t///<summary>\n\t\t///HUD label text:      \n\t\t///</summary>\n\t\tSelectedObjectHudLabelText,\n\t\t///<summary>\n\t\t///Orientation forward:     \n\t\t///</summary>\n\t\tSelectedObjectOrientationForward,\n\t\t///<summary>\n\t\t///Orientation up:     \n\t\t///</summary>\n\t\tSelectedObjectOrientationUp,\n\t\t///<summary>\n\t\t///Position:      \n\t\t///</summary>\n\t\tSelectedObjectPosition,\n\t\t///<summary>\n\t\t///Size in meters:   \n\t\t///</summary>\n\t\tSelectedObjectSizeInMeters,\n\t\t///<summary>\n\t\t///Object Type:   \n\t\t///</summary>\n\t\tSelectedObjectType,\n\t\t///<summary>\n\t\t///Remaining count of explosions saved with asteroid:    \n\t\t///</summary>\n\t\tSelectedVoxelMapRemainingSaveExplosions,\n\t\t///<summary>\n\t\t///Back launcher ammo\n\t\t///</summary>\n\t\tSelectBackLauncherAmmo,\n\t\t///<summary>\n\t\t///Front launcher ammo\n\t\t///</summary>\n\t\tSelectFrontLauncherAmmo,\n\t\t///<summary>\n\t\t///Switch weapons and ammo\n\t\t///</summary>\n\t\tSelectAmmo,\n\t\t///<summary>\n\t\t///Bullet ammo\n\t\t///</summary>\n\t\tSelectBulletAmmo,\n\t\t///<summary>\n\t\t///Loading sandbox sectors…\n\t\t///</summary>\n\t\tSelectSandboxInProgressPleaseWait,\n\t\t///<summary>\n\t\t///Missile ammo\n\t\t///</summary>\n\t\tSelectMissileAmmo,\n\t\t///<summary>\n\t\t///Select sector\n\t\t///</summary>\n\t\tSelectSector,\n\t\t///<summary>\n\t\t///Cannon ammo\n\t\t///</summary>\n\t\tSelectCannonAmmo,\n\t\t///<summary>\n\t\t///Send me Miner Wars newsletters\n\t\t///</summary>\n\t\tSendNewsletters,\n\t\t///<summary>\n\t\t///Server maintenance in {1} minutes. Server will be down for {0} minutes.\n\t\t///</summary>\n\t\tServerShutdownNotification,\n\t\t///<summary>\n\t\t///SCHEDULED SERVER SHUTDOWN\n\t\t///</summary>\n\t\tServerShutdownNotificationCaption,\n\t\t///<summary>\n\t\t///Session type:   \n\t\t///</summary>\n\t\tSessionType,\n\t\t///<summary>\n\t\t///Choose faction\n\t\t///</summary>\n\t\tSetShipFaction,\n\t\t///<summary>\n\t\t///Ship\n\t\t///</summary>\n\t\tShip,\n\t\t///<summary>\n\t\t///Ship customization\n\t\t///</summary>\n\t\tShipCustomizationCaption,\n\t\t///<summary>\n\t\t///My inventory\n\t\t///</summary>\n\t\tShipInventory,\n\t\t///<summary>\n\t\t///Inventory\n\t\t///</summary>\n\t\tShipInventoryCaption,\n\t\t///<summary>\n\t\t///Use the GPS\n\t\t///</summary>\n\t\tUseGPS,\n\t\t///<summary>\n\t\t///Show normals (must be enabled)\n\t\t///</summary>\n\t\tShowVertexNormals,\n\t\t///<summary>\n\t\t///Side mission\n\t\t///</summary>\n\t\tSideMission,\n\t\t///<summary>\n\t\t///Silicon\n\t\t///</summary>\n\t\tSilicon_01,\n\t\t///<summary>\n\t\t///Silver\n\t\t///</summary>\n\t\tSilver_01,\n\t\t///<summary>\n\t\t///Simulate lost messages sent out\n\t\t///</summary>\n\t\tSimulateLostMessages,\n\t\t///<summary>\n\t\t///Simulate slow draw\n\t\t///</summary>\n\t\tSimulateSlowDraw,\n\t\t///<summary>\n\t\t///Simulate slow update\n\t\t///</summary>\n\t\tSimulateSlowUpdate,\n\t\t///<summary>\n\t\t///SmallShip\n\t\t///</summary>\n\t\tSmallShip,\n\t\t///<summary>\n\t\t///Small Ship\n\t\t///</summary>\n\t\tSmallShipContextMenuCaption,\n\t\t///<summary>\n\t\t///DOON | Ship of class Doon | Weight: 5200 kg | Max weapons: 4 | Max cargo capacity: 36\n\t\t///</summary>\n\t\tSmallShipDoon,\n\t\t///<summary>\n\t\t///HAMMER | Ship of class Hammer | Weight: 7500 kg | Max weapons: 8 | Max cargo capacity: 60\n\t\t///</summary>\n\t\tSmallShipHammer,\n\t\t///<summary>\n\t\t///HAWK | Ship of class Hawk | Weight: 6600 kg | Max weapons: 8 | Max cargo capacity: 36\n\t\t///</summary>\n\t\tSmallShipHawk,\n\t\t///<summary>\n\t\t///JACKNIFE | Ship of class Jacknife | Weight: 6100 kg | Max weapons: 6 | Max cargo capacity: 36\n\t\t///</summary>\n\t\tSmallShipJackKnife,\n\t\t///<summary>\n\t\t///LEVIATHAN | Ship of class Leviathan | Weight: 9000 kg | Max weapons: 8 | Max cargo capacity: 36\n\t\t///</summary>\n\t\tSmallShipLeviathan,\n\t\t///<summary>\n\t\t///LIBERATOR | Ship of class Liberator | Weight: 7000 kg | Max weapons: 6 | Max cargo capacity: 60\n\t\t///</summary>\n\t\tSmallShipMinerShip01,\n\t\t///<summary>\n\t\t///ENFORCER | Ship of class Enforcer | Weight: 8000 kg | Max weapons: 6 | Max cargo capacity: 60\n\t\t///</summary>\n\t\tSmallShipMinerShip02,\n\t\t///<summary>\n\t\t///KAMMLER | Ship of class Kammler | Weight: 8500 kg | Max weapons: 6 | Max cargo capacity: 60\n\t\t///</summary>\n\t\tSmallShipMinerShip03,\n\t\t///<summary>\n\t\t///GETTYSBURG | Ship of class Gettysburg | Weight: 6600 kg | Max weapons: 6 | Max cargo capacity: 60\n\t\t///</summary>\n\t\tSmallShipMinerShip04,\n\t\t///<summary>\n\t\t///VIRGINIA | Ship of class Virginia | Weight: 5000 kg | Max weapons: 4 | Max cargo capacity: 36\n\t\t///</summary>\n\t\tSmallShipMinerShip05,\n\t\t///<summary>\n\t\t///BAER | Ship of class Baer | Weight: 5500 kg | Max weapons: 4 | Max cargo capacity: 36\n\t\t///</summary>\n\t\tSmallShipMinerShip06,\n\t\t///<summary>\n\t\t///HEWER | Ship of class Hewer | Weight: 4300 kg | Max weapons: 2 | Max cargo capacity: 36\n\t\t///</summary>\n\t\tSmallShipMinerShip07,\n\t\t///<summary>\n\t\t///RAZOR CLAW | Ship of class Razor Claw | Weight: 4800 kg | Max weapons: 4 | Max cargo capacity: 36\n\t\t///</summary>\n\t\tSmallShipMinerShip08,\n\t\t///<summary>\n\t\t///GREISER | Ship of class Greiser | Weight: 6200 kg | Max weapons: 6 | Max cargo capacity: 36\n\t\t///</summary>\n\t\tSmallShipMinerShip09,\n\t\t///<summary>\n\t\t///TRACER | Ship of class Tracer | Weight: 5900 kg | Max weapons: 6 | Max cargo capacity: 36\n\t\t///</summary>\n\t\tSmallShipMinerShip10,\n\t\t///<summary>\n\t\t///ORG | Ship of class Org | Weight: 9900 kg | Max weapons: 10 | Max cargo capacity: 60\n\t\t///</summary>\n\t\tSmallShipOrg,\n\t\t///<summary>\n\t\t///PHOENIX | Ship of class Phoenix | Weight: 6300 kg | Max weapons: 8 | Max cargo capacity: 24\n\t\t///</summary>\n\t\tSmallShipPhoenix,\n\t\t///<summary>\n\t\t///ROCKHEATER | Ship of class Rockheater | Weight: 5500 kg | Max weapons: 4 | Max cargo capacity: 24\n\t\t///</summary>\n\t\tSmallShipRockheater,\n\t\t///<summary>\n\t\t///STANISLAV | Ship of class Stanislav | Weight: 23000 kg | Max weapons: 10 | Max cargo capacity: 60\n\t\t///</summary>\n\t\tSmallShipStanislav,\n\t\t///<summary>\n\t\t///STEELHEAD | Ship of class Steelhead | Weight: 6000 kg | Max weapons: 6 | Max cargo capacity: 60\n\t\t///</summary>\n\t\tSmallShipSteelHead,\n\t\t///<summary>\n\t\t///FEDER | Ship of class Feder | Weight: 25000 kg | Max weapons: 10 | Max cargo capacity: 60\n\t\t///</summary>\n\t\tSmallShipTalon,\n\t\t///<summary>\n\t\t///YG | Ship of class Yg | Weight: 7500 kg | Max weapons: 8 | Max cargo capacity: 24\n\t\t///</summary>\n\t\tSmallShipYg,\n\t\t///<summary>\n\t\t///Smoke bomb\n\t\t///</summary>\n\t\tSmokeBombHud,\n\t\t///<summary>\n\t\t///Can’t link these snap points.\n\t\t///</summary>\n\t\tSnapPointLinkError,\n\t\t///<summary>\n\t\t///Snap points\n\t\t///</summary>\n\t\tSnapPoints,\n\t\t///<summary>\n\t\t///Snow 1\n\t\t///</summary>\n\t\tSnow_01,\n\t\t///<summary>\n\t\t///Soften voxels\n\t\t///</summary>\n\t\tSoftenVoxels,\n\t\t///<summary>\n\t\t///Solar system map\n\t\t///</summary>\n\t\tSolarSystemMap,\n\t\t///<summary>\n\t\t///SOLAR WIND ARMOR | Projectile/explosion damage reduction: 0% | Solar wind damage reduction: 100%\n\t\t///</summary>\n\t\tSolarWindArmor,\n\t\t///<summary>\n\t\t///Sorry, but the settings you have chosen are not supported by your hardware.\n\t\t///</summary>\n\t\tSorryButSelectedSettingsAreNotSupportedByYourHardware,\n\t\t///<summary>\n\t\t///Sound\n\t\t///</summary>\n\t\tSoundInfluenceSphereType,\n\t\t///<summary>\n\t\t///Space\n\t\t///</summary>\n\t\tSpace,\n\t\t///<summary>\n\t\t///Spawned bots\n\t\t///</summary>\n\t\tSpawnedBots,\n\t\t///<summary>\n\t\t///Spawn in groups\n\t\t///</summary>\n\t\tSpawnInGroups,\n\t\t///<summary>\n\t\t///SpawnPoint\n\t\t///</summary>\n\t\tSpawnPoint,\n\t\t///<summary>\n\t\t///Spectator position:     \n\t\t///</summary>\n\t\tSpectatorPosition,\n\t\t///<summary>\n\t\t///Spectator speed indicator:      \n\t\t///</summary>\n\t\tSpectatorSpeedIndicator,\n\t\t///<summary>\n\t\t///Specular color\n\t\t///</summary>\n\t\tSpecularColor,\n\t\t///<summary>\n\t\t///Spherical explosive\n\t\t///</summary>\n\t\tSphereExplosiveHud,\n\t\t///<summary>\n\t\t///Sphere Full 128\n\t\t///</summary>\n\t\tSphereFull_128,\n\t\t///<summary>\n\t\t///Sphere Full 256\n\t\t///</summary>\n\t\tSphereFull_256,\n\t\t///<summary>\n\t\t///Sphere Full 512\n\t\t///</summary>\n\t\tSphereFull_512,\n\t\t///<summary>\n\t\t///Sphere Full 64\n\t\t///</summary>\n\t\tSphereFull_64,\n\t\t///<summary>\n\t\t///128x128x128 Sphere with large cut-out\n\t\t///</summary>\n\t\tSphereWithLargeCutOut_128x128x128,\n\t\t///<summary>\n\t\t///SpotLight\n\t\t///</summary>\n\t\tSpotLight,\n\t\t///<summary>\n\t\t///Standard container 1\n\t\t///</summary>\n\t\tStandard_Container_1,\n\t\t///<summary>\n\t\t///Standard container 2\n\t\t///</summary>\n\t\tStandard_Container_2,\n\t\t///<summary>\n\t\t///Standard container 3\n\t\t///</summary>\n\t\tStandard_Container_3,\n\t\t///<summary>\n\t\t///Standard container 4\n\t\t///</summary>\n\t\tStandard_Container_4,\n\t\t///<summary>\n\t\t///Started missions\n\t\t///</summary>\n\t\tStartedMissions,\n\t\t///<summary>\n\t\t///You do not have permission to start this game, or wrong input parameters.\n\t\t///</summary>\n\t\tStartGameFailed,\n\t\t///<summary>\n\t\t///Starting game… please wait.\n\t\t///</summary>\n\t\tStartGameInProgressPleaseWait,\n\t\t///<summary>\n\t\t///Static\n\t\t///</summary>\n\t\tStatic,\n\t\t///<summary>\n\t\t///10 km\n\t\t///</summary>\n\t\tStaticAsteroid10000m,\n\t\t///<summary>\n\t\t///1 km\n\t\t///</summary>\n\t\tStaticAsteroid1000m,\n\t\t///<summary>\n\t\t///100 meters\n\t\t///</summary>\n\t\tStaticAsteroid100m,\n\t\t///<summary>\n\t\t///10 meters\n\t\t///</summary>\n\t\tStaticAsteroid10m,\n\t\t///<summary>\n\t\t///2 km\n\t\t///</summary>\n\t\tStaticAsteroid2000m,\n\t\t///<summary>\n\t\t///20 meters\n\t\t///</summary>\n\t\tStaticAsteroid20m,\n\t\t///<summary>\n\t\t///300 meters\n\t\t///</summary>\n\t\tStaticAsteroid300m,\n\t\t///<summary>\n\t\t///30 meters\n\t\t///</summary>\n\t\tStaticAsteroid30m,\n\t\t///<summary>\n\t\t///5 km\n\t\t///</summary>\n\t\tStaticAsteroid5000m,\n\t\t///<summary>\n\t\t///500 meters\n\t\t///</summary>\n\t\tStaticAsteroid500m,\n\t\t///<summary>\n\t\t///50 meters\n\t\t///</summary>\n\t\tStaticAsteroid50m,\n\t\t///<summary>\n\t\t///Static asteroid\n\t\t///</summary>\n\t\tStaticAsteroidContextMenuCaption,\n\t\t///<summary>\n\t\t///Stone 1\n\t\t///</summary>\n\t\tStone_01,\n\t\t///<summary>\n\t\t///Stone 2\n\t\t///</summary>\n\t\tStone_02,\n\t\t///<summary>\n\t\t///Stone 3\n\t\t///</summary>\n\t\tStone_03,\n\t\t///<summary>\n\t\t///Stone 4\n\t\t///</summary>\n\t\tStone_04,\n\t\t///<summary>\n\t\t///Stone 5\n\t\t///</summary>\n\t\tStone_05,\n\t\t///<summary>\n\t\t///Stone 6\n\t\t///</summary>\n\t\tStone_06,\n\t\t///<summary>\n\t\t///Stone 7\n\t\t///</summary>\n\t\tStone_07,\n\t\t///<summary>\n\t\t///Stone 8\n\t\t///</summary>\n\t\tStone_08,\n\t\t///<summary>\n\t\t///Stone 10\n\t\t///</summary>\n\t\tStone_10,\n\t\t///<summary>\n\t\t///Stone 13\n\t\t///</summary>\n\t\tStone_13_Wall_01,\n\t\t///<summary>\n\t\t///Story sector can be saved only when its Y coordinate is 0.\n\t\t///</summary>\n\t\tStorySectorPositionYMustBeZero,\n\t\t///<summary>\n\t\t///Story sectors\n\t\t///</summary>\n\t\tStorySectors,\n\t\t///<summary>\n\t\t///Strafe left\n\t\t///</summary>\n\t\tStrafeLeft,\n\t\t///<summary>\n\t\t///Strafe right\n\t\t///</summary>\n\t\tStrafeRight,\n\t\t///<summary>\n\t\t///Ammunition box\n\t\t///</summary>\n\t\tsubCategoryTypeAmmunitionBox,\n\t\t///<summary>\n\t\t///Biodome\n\t\t///</summary>\n\t\tsubCategoryTypeBiodome,\n\t\t///<summary>\n\t\t///Bridge\n\t\t///</summary>\n\t\tsubCategoryTypeBridge,\n\t\t///<summary>\n\t\t///Cable holders\n\t\t///</summary>\n\t\tsubCategoryTypeCableHolders,\n\t\t///<summary>\n\t\t///Connection boxes\n\t\t///</summary>\n\t\tsubCategoryTypeConnectionBoxes,\n\t\t///<summary>\n\t\t///Docks\n\t\t///</summary>\n\t\tsubCategoryTypeDocks,\n\t\t///<summary>\n\t\t///Escape pods\n\t\t///</summary>\n\t\tsubCategoryTypeEscapePods,\n\t\t///<summary>\n\t\t///Factory\n\t\t///</summary>\n\t\tsubCategoryTypeFactory,\n\t\t///<summary>\n\t\t///Fuel generation\n\t\t///</summary>\n\t\tsubCategoryTypeFuelGeneration,\n\t\t///<summary>\n\t\t///Fuel storage\n\t\t///</summary>\n\t\tsubCategoryTypeFuelStorage,\n\t\t///<summary>\n\t\t///Gas storage\n\t\t///</summary>\n\t\tsubCategoryTypeGasStorage,\n\t\t///<summary>\n\t\t///Junction\n\t\t///</summary>\n\t\tsubCategoryTypeJunction,\n\t\t///<summary>\n\t\t///Large\n\t\t///</summary>\n\t\tsubCategoryTypeLarge,\n\t\t///<summary>\n\t\t///Living quarters\n\t\t///</summary>\n\t\tsubCategoryTypeLivingQuarters,\n\t\t///<summary>\n\t\t///Loading/Unloading\n\t\t///</summary>\n\t\tsubCategoryTypeLoadingUnloading,\n\t\t///<summary>\n\t\t///Long distance antenna\n\t\t///</summary>\n\t\tsubCategoryTypeLongDistanceAntenna,\n\t\t///<summary>\n\t\t///Long Term Thrusters\n\t\t///</summary>\n\t\tsubCategoryTypeLongTermThrusters,\n\t\t///<summary>\n\t\t///Ore storage\n\t\t///</summary>\n\t\tsubCategoryTypeOreStorage,\n\t\t///<summary>\n\t\t///Other\n\t\t///</summary>\n\t\tsubCategoryTypeOther,\n\t\t///<summary>\n\t\t///Oxygen generation\n\t\t///</summary>\n\t\tsubCategoryTypeOxygenGeneration,\n\t\t///<summary>\n\t\t///Oxygen storage\n\t\t///</summary>\n\t\tsubCategoryTypeOxygenStorage,\n\t\t///<summary>\n\t\t///Passage\n\t\t///</summary>\n\t\tsubCategoryTypePassage,\n\t\t///<summary>\n\t\t///Power generation\n\t\t///</summary>\n\t\tsubCategoryTypePowerGeneration,\n\t\t///<summary>\n\t\t///Power storage\n\t\t///</summary>\n\t\tsubCategoryTypePowerStorage,\n\t\t///<summary>\n\t\t///Refinery\n\t\t///</summary>\n\t\tsubCategoryTypeRefinery,\n\t\t///<summary>\n\t\t///Short distance antenna\n\t\t///</summary>\n\t\tsubCategoryTypeShortDistanceAntenna,\n\t\t///<summary>\n\t\t///Short term thrusters\n\t\t///</summary>\n\t\tsubCategoryTypeShortTermThrusters,\n\t\t///<summary>\n\t\t///Small\n\t\t///</summary>\n\t\tsubCategoryTypeSmall,\n\t\t///<summary>\n\t\t///Straight\n\t\t///</summary>\n\t\tsubCategoryTypeStraight,\n\t\t///<summary>\n\t\t///Turn\n\t\t///</summary>\n\t\tsubCategoryTypeTurn,\n\t\t///<summary>\n\t\t///Weapon mount\n\t\t///</summary>\n\t\tsubCategoryTypeWeaponMount,\n\t\t///<summary>\n\t\t///Wires\n\t\t///</summary>\n\t\tsubCategoryTypeWires,\n\t\t///<summary>\n\t\t///Dialogues / subtitles\n\t\t///</summary>\n\t\tSubtitles,\n\t\t///<summary>\n\t\t///Sun settings\n\t\t///</summary>\n\t\tSunSettings,\n\t\t///<summary>\n\t\t///Configure sun settings\n\t\t///</summary>\n\t\tSunSettingsTooltip,\n\t\t///<summary>\n\t\t///Switch gizmo mode\n\t\t///</summary>\n\t\tSwitchGizmoMode,\n\t\t///<summary>\n\t\t///Press T to move objects, R to rotate objects\n\t\t///</summary>\n\t\tSwitchGizmoModeTooltip,\n\t\t///<summary>\n\t\t///Switch gizmo space\n\t\t///</summary>\n\t\tSwitchGizmoSpace,\n\t\t///<summary>\n\t\t///Press Space to change gizmo transformation space (local, world)\n\t\t///</summary>\n\t\tSwitchGizmoSpaceTooltip,\n\t\t///<summary>\n\t\t///Drone behavior\n\t\t///</summary>\n\t\tChangeDroneMode,\n\t\t///<summary>\n\t\t///Previous target\n\t\t///</summary>\n\t\tPreviousTarget,\n\t\t///<summary>\n\t\t///Next target\n\t\t///</summary>\n\t\tNextTarget,\n\t\t///<summary>\n\t\t///Switch to point light\n\t\t///</summary>\n\t\tSwitchToPointLight,\n\t\t///<summary>\n\t\t///Switch to spot light\n\t\t///</summary>\n\t\tSwitchToSpotLight,\n\t\t///<summary>\n\t\t///Systems 1\n\t\t///</summary>\n\t\tSystems1,\n\t\t///<summary>\n\t\t///Systems 2\n\t\t///</summary>\n\t\tSystems2,\n\t\t///<summary>\n\t\t///Tab\n\t\t///</summary>\n\t\tTab,\n\t\t///<summary>\n\t\t///Template checkpoint has been deleted, please start a new game\n\t\t///</summary>\n\t\tTemplateCheckpointDeleted,\n\t\t///<summary>\n\t\t///Sector map\n\t\t///</summary>\n\t\tTemporarySectorMap,\n\t\t///<summary>\n\t\t///Time bomb – {0}s\n\t\t///</summary>\n\t\tTimeBombHud,\n\t\t///<summary>\n\t\t///Failed to start the browser.\n\t\t///</summary>\n\t\tTitleFailedToStartInternetBrowser,\n\t\t///<summary>\n\t\t///Start a new story\n\t\t///</summary>\n\t\tTitleStartNewStory,\n\t\t///<summary>\n\t\t///You can’t build\n\t\t///</summary>\n\t\tTitleYouCantBuild,\n\t\t///<summary>\n\t\t///Toggle snap points\n\t\t///</summary>\n\t\tToggleSnapPoints,\n\t\t///<summary>\n\t\t///Alien object detector\n\t\t///</summary>\n\t\tToolAlienObjectDetector,\n\t\t///<summary>\n\t\t///ANTIRADIATION MEDICINE | Protects player against radiation  (for about 100 seconds) and solar  wind (about 10 waves)\n\t\t///</summary>\n\t\tToolAntiradiationMedicine,\n\t\t///<summary>\n\t\t///Antiradiation medicine active\n\t\t///</summary>\n\t\tAntiradiationMedicineActive,\n\t\t///<summary>\n\t\t///Auto-targeting\n\t\t///</summary>\n\t\tToolAutoTargeting,\n\t\t///<summary>\n\t\t///Booby trap\n\t\t///</summary>\n\t\tToolBoobyTrap,\n\t\t///<summary>\n\t\t///Extra electricity container\n\t\t///</summary>\n\t\tToolExtraElectricityContainer,\n\t\t///<summary>\n\t\t///Extra fuel container\n\t\t///</summary>\n\t\tToolExtraFuelContainer,\n\t\t///<summary>\n\t\t///Extra oxygen container\n\t\t///</summary>\n\t\tToolExtraOxygenContainer,\n\t\t///<summary>\n\t\t///Fuel converter\n\t\t///</summary>\n\t\tToolFuelConverter,\n\t\t///<summary>\n\t\t///HEALTH ENHANCING MEDICINE | Decrease received damage to player  down to 20% for 30 seconds\n\t\t///</summary>\n\t\tToolHealthEnhancingMedicine,\n\t\t///<summary>\n\t\t///Activate health enhancing medicine\n\t\t///</summary>\n\t\tActivateHealthEnhancingMedicine,\n\t\t///<summary>\n\t\t///Laser pointer\n\t\t///</summary>\n\t\tToolLaserPointer,\n\t\t///<summary>\n\t\t///MEDIKIT | Automatically heals player, 20% per second.  It has one parameter – remaining % of full.\n\t\t///</summary>\n\t\tToolMedikit,\n\t\t///<summary>\n\t\t///Medikit active\n\t\t///</summary>\n\t\tMedikitActive,\n\t\t///<summary>\n\t\t///NANO REPAIR TOOL | Repairs ship, 0.4% per second to max 75%.  Unlimited capacity and lifespan.\n\t\t///</summary>\n\t\tToolNanoRepairTool,\n\t\t///<summary>\n\t\t///Night vision\n\t\t///</summary>\n\t\tToolNightVision,\n\t\t///<summary>\n\t\t///Oxygen converter\n\t\t///</summary>\n\t\tToolOxygenConverter,\n\t\t///<summary>\n\t\t///PERFORMANCE ENHANCING MEDICINE | Decrease oxygen consumption  down to 20% for 30 seconds\n\t\t///</summary>\n\t\tToolPerformanceEnhancingMedicine,\n\t\t///<summary>\n\t\t///Activate performance enhancing medicine\n\t\t///</summary>\n\t\tActivatePerformanceEnhancingMedicine,\n\t\t///<summary>\n\t\t///RADAR JAMMER | Blocks all radar transmissions in 500m  radius, even friendly radars, so player  won’t distinguish friend from enemy.\n\t\t///</summary>\n\t\tToolRadarJammer,\n\t\t///<summary>\n\t\t///Rear / Missile camera\n\t\t///</summary>\n\t\tToolRearCamera,\n\t\t///<summary>\n\t\t///Remote camera\n\t\t///</summary>\n\t\tToolRemoteCamera,\n\t\t///<summary>\n\t\t///Remote camera on drone\n\t\t///</summary>\n\t\tToolRemoteCameraOnDrone,\n\t\t///<summary>\n\t\t///Sensor\n\t\t///</summary>\n\t\tToolSensor,\n\t\t///<summary>\n\t\t///Solar panel\n\t\t///</summary>\n\t\tToolSolarPanel,\n\t\t///<summary>\n\t\t///X-Ray\n\t\t///</summary>\n\t\tToolXRay,\n\t\t///<summary>\n\t\t///256x128x256 Torus with cave entrance\n\t\t///</summary>\n\t\tTorusStorySector_256x128x256,\n\t\t///<summary>\n\t\t///256x128x256 Torus with tunnels 2\n\t\t///</summary>\n\t\tTorusWithManyTunnels_256x128x256,\n\t\t///<summary>\n\t\t///256x128x256 Torus with tunnels 3\n\t\t///</summary>\n\t\tTorusWithManyTunnels_2_256x128x256,\n\t\t///<summary>\n\t\t///256x128x256 Torus with tunnels 1\n\t\t///</summary>\n\t\tTorusWithSmallTunnel_256x128x256,\n\t\t///<summary>\n\t\t///Trade result\n\t\t///</summary>\n\t\tTradeResultTitle,\n\t\t///<summary>\n\t\t///Trade was canceled\n\t\t///</summary>\n\t\tTradeWasCanceled,\n\t\t///<summary>\n\t\t///Travel\n\t\t///</summary>\n\t\tTravel,\n\t\t///<summary>\n\t\t///Treasure 1\n\t\t///</summary>\n\t\tTreasure_01,\n\t\t///<summary>\n\t\t///Treasure 2\n\t\t///</summary>\n\t\tTreasure_02,\n\t\t///<summary>\n\t\t///Press {0}: camera on/off, {1} {2} to switch\n\t\t///</summary>\n\t\tTurnOffCamera,\n\t\t///<summary>\n\t\t///Unable to leave the sector\n\t\t///</summary>\n\t\tUnableToLeaveSector,\n\t\t///<summary>\n\t\t///Finish the mission before leaving the sector\n\t\t///</summary>\n\t\tUnableToLeaveSectorMission,\n\t\t///<summary>\n\t\t///none\n\t\t///</summary>\n\t\tUnknownControl,\n\t\t///<summary>\n\t\t///Unlimited trading\n\t\t///</summary>\n\t\tUnlimitedTrading,\n\t\t///<summary>\n\t\t///Unlink snap points\n\t\t///</summary>\n\t\tUnlinkSnapPoints,\n\t\t///<summary>\n\t\t///Up\n\t\t///</summary>\n\t\tUp,\n\t\t///<summary>\n\t\t///Up thrust\n\t\t///</summary>\n\t\tUpThrust,\n\t\t///<summary>\n\t\t///Plutonium\n\t\t///</summary>\n\t\tUranite_01,\n\t\t///<summary>\n\t\t///Use camera crosshair\n\t\t///</summary>\n\t\tUseCameraCrosshair,\n\t\t///<summary>\n\t\t///Use drilling device\n\t\t///</summary>\n\t\tUseDrill,\n\t\t///<summary>\n\t\t///Use from hub\n\t\t///</summary>\n\t\tUseFromHUB,\n\t\t///<summary>\n\t\t///Use / Hack / Take\n\t\t///</summary>\n\t\tUseHackTake,\n\t\t///<summary>\n\t\t///Use solo\n\t\t///</summary>\n\t\tUseSolo,\n\t\t///<summary>\n\t\t///Utility vehicle 1\n\t\t///</summary>\n\t\tUtilityVehicle_1,\n\t\t///<summary>\n\t\t///Please enter an email address in valid email format (e.g. yourname@domain.com), not longer than 50 characters.\n\t\t///</summary>\n\t\tValidationEmailWrong,\n\t\t///<summary>\n\t\t///Please enter the same password in ‘Password’ and ‘Retype password’ fields.\n\t\t///</summary>\n\t\tValidationPasswordsDoNotMatch,\n\t\t///<summary>\n\t\t///Please enter a password not shorter than 6 and not longer than 10 alphanumeric characters (a–z, A–Z, 0–9).\n\t\t///</summary>\n\t\tValidationPasswordWrong,\n\t\t///<summary>\n\t\t///Please enter a username not shorter than 3 and not longer than 15 alphanumeric characters (a–z, A–Z, 0–9).\n\t\t///</summary>\n\t\tValidationUsername,\n\t\t///<summary>\n\t\t///This username is already taken.\n\t\t///</summary>\n\t\tValidationUsernameAlreadyUsed,\n\t\t///<summary>\n\t\t///Version:\n\t\t///</summary>\n\t\tVersion,\n\t\t///<summary>\n\t\t///128x256x128 Vertical island tunneled\n\t\t///</summary>\n\t\tVerticalIslandStorySector_128x256x128,\n\t\t///<summary>\n\t\t///128x128x128 Vertical island 1\n\t\t///</summary>\n\t\tVerticalIsland_128x128x128,\n\t\t///<summary>\n\t\t///128x256x128 Vertical island 2\n\t\t///</summary>\n\t\tVerticalIsland_128x256x128,\n\t\t///<summary>\n\t\t///Vertical sync\n\t\t///</summary>\n\t\tVerticalSync,\n\t\t///<summary>\n\t\t///Video\n\t\t///</summary>\n\t\tVideo,\n\t\t///<summary>\n\t\t///Video mode\n\t\t///</summary>\n\t\tVideoMode,\n\t\t///<summary>\n\t\t///Video options\n\t\t///</summary>\n\t\tVideoOptions,\n\t\t///<summary>\n\t\t///View mode\n\t\t///</summary>\n\t\tViewMode,\n\t\t///<summary>\n\t\t///Cockpit off\n\t\t///</summary>\n\t\tViewModeCockpitOff,\n\t\t///<summary>\n\t\t///Cockpit on\n\t\t///</summary>\n\t\tViewModeCockpitOn,\n\t\t///<summary>\n\t\t///Third person\n\t\t///</summary>\n\t\tViewModeThirdPerson,\n\t\t///<summary>\n\t\t///Voxel\n\t\t///</summary>\n\t\tVoxel,\n\t\t///<summary>\n\t\t///Voxel import test\n\t\t///</summary>\n\t\tVoxelImportTest,\n\t\t///<summary>\n\t\t///Mission 1 voxel map 1\n\t\t///</summary>\n\t\tVoxelMission01_01,\n\t\t///<summary>\n\t\t///Mission 1 voxel map 2\n\t\t///</summary>\n\t\tVoxelMission01_02,\n\t\t///<summary>\n\t\t///Mission01_big\n\t\t///</summary>\n\t\tVoxelMission01_asteroid_big,\n\t\t///<summary>\n\t\t///Mission01_mine\n\t\t///</summary>\n\t\tVoxelMission01_asteroid_mine,\n\t\t///<summary>\n\t\t///Voxel mission 07 01\n\t\t///</summary>\n\t\tVoxelMission07_01,\n\t\t///<summary>\n\t\t///Voxels\n\t\t///</summary>\n\t\tVoxels,\n\t\t///<summary>\n\t\t///Voxel Asteroid Story02\n\t\t///</summary>\n\t\tVoxelStory02,\n\t\t///<summary>\n\t\t///Warning\n\t\t///</summary>\n\t\tWarning,\n\t\t///<summary>\n\t\t///Waypoint\n\t\t///</summary>\n\t\tWayPoint,\n\t\t///<summary>\n\t\t///Waypoint path\n\t\t///</summary>\n\t\tWayPointPath,\n\t\t///<summary>\n\t\t///Name\n\t\t///</summary>\n\t\tWaypointPathName,\n\t\t///<summary>\n\t\t///Named waypoint group\n\t\t///</summary>\n\t\tWaypointPathNameCaption,\n\t\t///<summary>\n\t\t///Create named waypoint group\n\t\t///</summary>\n\t\tWaypointPathNameCreateCaption,\n\t\t///<summary>\n\t\t///Waypoints\n\t\t///</summary>\n\t\tWaypoints,\n\t\t///<summary>\n\t\t///Waypoints visible through\n\t\t///</summary>\n\t\tWaypointsIgnoreDepth,\n\t\t///<summary>\n\t\t///GATLING GUN | Rate of fire: 630 rounds/min\n\t\t///</summary>\n\t\tWeaponAutocannon,\n\t\t///<summary>\n\t\t///AUTOMATIC RIFLE WITH SILENCER | Rate of fire: 120 rounds/min\n\t\t///</summary>\n\t\tWeaponAutomaticRifleWithSilencer,\n\t\t///<summary>\n\t\t///CANNON | Rate of fire: 120 rounds/min\n\t\t///</summary>\n\t\tWeaponCannon,\n\t\t///<summary>\n\t\t///DRILLING DEVICE CRUSHER | Drills asteroids with mechanical drill head. Can be used against enemies and buildings.\n\t\t///</summary>\n\t\tWeaponDrillingDeviceCrusher,\n\t\t///<summary>\n\t\t///Drilling device Laser\n\t\t///</summary>\n\t\tWeaponDrillingDeviceLaser,\n\t\t///<summary>\n\t\t///Drilling device Nuclear\n\t\t///</summary>\n\t\tWeaponDrillingDeviceNuclear,\n\t\t///<summary>\n\t\t///Drilling device Pressure\n\t\t///</summary>\n\t\tWeaponDrillingDevicePressure,\n\t\t///<summary>\n\t\t///Drilling device Saw\n\t\t///</summary>\n\t\tWeaponDrillingDeviceSaw,\n\t\t///<summary>\n\t\t///Drilling device Thermal\n\t\t///</summary>\n\t\tWeaponDrillingDeviceThermal,\n\t\t///<summary>\n\t\t///MISSILE LAUNCHER | Rate of fire: 60 rounds/min\n\t\t///</summary>\n\t\tWeaponGuidedMissileLauncher,\n\t\t///<summary>\n\t\t///HARVESTING DEVICE | Harvest ore from asteroids.\n\t\t///</summary>\n\t\tWeaponHarvestingDevice,\n\t\t///<summary>\n\t\t///MACHINE GUN | Rate of fire: 430 rounds/min\n\t\t///</summary>\n\t\tWeaponMachineGun,\n\t\t///<summary>\n\t\t///Weapons\n\t\t///</summary>\n\t\tWeapons,\n\t\t///<summary>\n\t\t///SHOTGUN | Rate of fire: 120 rounds/min | Shoots 16–20 projectiles\n\t\t///</summary>\n\t\tWeaponShotgun,\n\t\t///<summary>\n\t\t///SNIPER | Rate of fire: 60 rounds/min\n\t\t///</summary>\n\t\tWeaponSniper,\n\t\t///<summary>\n\t\t///Weapon special\n\t\t///</summary>\n\t\tWeaponSpecial,\n\t\t///<summary>\n\t\t///BACK LAUNCHER | Rate of fire: 120 rounds/min | Universal launcher for various types of ammo and projectiles\n\t\t///</summary>\n\t\tWeaponUniversalLauncherBack,\n\t\t///<summary>\n\t\t///FRONT LAUNCHER | Rate of fire: 120 rounds/min | Universal launcher for various types of ammo and projectiles\n\t\t///</summary>\n\t\tWeaponUniversalLauncherFront,\n\t\t///<summary>\n\t\t///Action menu\n\t\t///</summary>\n\t\tWheelControl,\n\t\t///<summary>\n\t\t///Width\n\t\t///</summary>\n\t\tWidth,\n\t\t///<summary>\n\t\t///Wrinkle voxels\n\t\t///</summary>\n\t\tWrinkleVoxels,\n\t\t///<summary>\n\t\t///X\n\t\t///</summary>\n\t\tX,\n\t\t///<summary>\n\t\t///Y\n\t\t///</summary>\n\t\tY,\n\t\t///<summary>\n\t\t///Yes\n\t\t///</summary>\n\t\tYes,\n\t\t///<summary>\n\t\t///You can’t add foundation factory\n\t\t///</summary>\n\t\tYouCantAddFoundationFactory,\n\t\t///<summary>\n\t\t///You obtain {0}\n\t\t///</summary>\n\t\tYouObtainNotification,\n\t\t///<summary>\n\t\t///My sectors\n\t\t///</summary>\n\t\tYourSectors,\n\t\t///<summary>\n\t\t///Z\n\t\t///</summary>\n\t\tZ,\n\t\t///<summary>\n\t\t///Zoom in\n\t\t///</summary>\n\t\tZoomIn,\n\t\t///<summary>\n\t\t///Zoom out\n\t\t///</summary>\n\t\tZoomOut,\n\t\t///<summary>\n\t\t///Acquire control\n\t\t///</summary>\n\t\tAcquireControl,\n\t\t///<summary>\n\t\t///Paste\n\t\t///</summary>\n\t\tPaste,\n\t\t///<summary>\n\t\t///Ventilator\n\t\t///</summary>\n\t\tp541_ventilator,\n\t\t///<summary>\n\t\t///Distant glare – random flashing\n\t\t///</summary>\n\t\tDistantGlareRandomFlashing,\n\t\t///<summary>\n\t\t///Twin Tower 1\n\t\t///</summary>\n\t\tTowerWithConcreteBlock1,\n\t\t///<summary>\n\t\t///Twin Tower 2\n\t\t///</summary>\n\t\tTowerWithConcreteBlock2,\n\t\t///<summary>\n\t\t///White Wolves\n\t\t///</summary>\n\t\tFactionWhiteWolves,\n\t\t///<summary>\n\t\t///Press {0} to exit\n\t\t///</summary>\n\t\tNotificationExitControlled,\n\t\t///<summary>\n\t\t///Warehouse asteroid 256\n\t\t///</summary>\n\t\tWarehouse,\n\t\t///<summary>\n\t\t///Display voxel bounding\n\t\t///</summary>\n\t\tDisplayVoxelBounding,\n\t\t///<summary>\n\t\t///Rainiers\n\t\t///</summary>\n\t\tFactionRainiers,\n\t\t///<summary>\n\t\t///Barths moon base\n\t\t///</summary>\n\t\tBarths_moon_base,\n\t\t///<summary>\n\t\t///Barths moon satelite\n\t\t///</summary>\n\t\tBarths_moon_satelite,\n\t\t///<summary>\n\t\t///Fort valiant base 256x512x256\n\t\t///</summary>\n\t\tFort_valiant_base,\n\t\t///<summary>\n\t\t///Fort valiant dungeon 512x512x512\n\t\t///</summary>\n\t\tFort_valiant_dungeon,\n\t\t///<summary>\n\t\t///Secret\n\t\t///</summary>\n\t\tSecret,\n\t\t///<summary>\n\t\t///Hold {0} to place explosives\n\t\t///</summary>\n\t\tNotificationSabotageSubmission,\n\t\t///<summary>\n\t\t///Protect the hacker: {0}\n\t\t///</summary>\n\t\tCountdownHacker,\n\t\t///<summary>\n\t\t///  Add object\n\t\t///</summary>\n\t\tToolbarAddObject,\n\t\t///<summary>\n\t\t///Attach to cam.\n\t\t///</summary>\n\t\tToolbarAttachToCamera,\n\t\t///<summary>\n\t\t///Clear   all\n\t\t///</summary>\n\t\tToolbarClearWholeSector,\n\t\t///<summary>\n\t\t///  Copy selected\n\t\t///</summary>\n\t\tToolbarCopySelected,\n\t\t///<summary>\n\t\t///Copy  tool\n\t\t///</summary>\n\t\tToolbarCopyTool,\n\t\t///<summary>\n\t\t///Correct   snap\n\t\t///</summary>\n\t\tToolbarCorrectSnappedPrefabs,\n\t\t///<summary>\n\t\t///Detach   from   cam.\n\t\t///</summary>\n\t\tToolbarDetachFromCamera,\n\t\t///<summary>\n\t\t///  Edit object\n\t\t///</summary>\n\t\tToolbarEditObjects,\n\t\t///<summary>\n\t\t///Prefab groups\n\t\t///</summary>\n\t\tToolbarEditorGroups,\n\t\t///<summary>\n\t\t///Options\n\t\t///</summary>\n\t\tToolbarEditorOptions,\n\t\t///<summary>\n\t\t///   Visi. options\n\t\t///</summary>\n\t\tToolbarEditorSelectAndHide,\n\t\t///<summary>\n\t\t/// Edit props.\n\t\t///</summary>\n\t\tToolbarEditProperties,\n\t\t///<summary>\n\t\t///Prefab  cont.\n\t\t///</summary>\n\t\tToolbarEnterPrefabContainer,\n\t\t///<summary>\n\t\t///Voxel hand\n\t\t///</summary>\n\t\tToolbarEnterVoxelHand,\n\t\t///<summary>\n\t\t///   Exit editing  mode\n\t\t///</summary>\n\t\tToolbarExitEditingMode,\n\t\t///<summary>\n\t\t///  Exit select\n\t\t///</summary>\n\t\tToolbarExitSelected,\n\t\t///<summary>\n\t\t/// Exit voxel hand\n\t\t///</summary>\n\t\tToolbarExitVoxelHand,\n\t\t///<summary>\n\t\t/// Hide  snap  points\n\t\t///</summary>\n\t\tToolbarHideSnapPoints,\n\t\t///<summary>\n\t\t/// Link  snap\n\t\t///</summary>\n\t\tToolbarLinkSnapPoints,\n\t\t///<summary>\n\t\t/// Load sector\n\t\t///</summary>\n\t\tToolbarLoadSector,\n\t\t///<summary>\n\t\t///Reset   rot.\n\t\t///</summary>\n\t\tToolbarResetRotation,\n\t\t///<summary>\n\t\t/// Save sector\n\t\t///</summary>\n\t\tToolbarSaveSector,\n\t\t///<summary>\n\t\t///Select    all\n\t\t///</summary>\n\t\tToolbarSelectAllObjects,\n\t\t///<summary>\n\t\t///Show  snap points\n\t\t///</summary>\n\t\tToolbarShowSnapPoints,\n\t\t///<summary>\n\t\t///Gizmo mode\n\t\t///</summary>\n\t\tToolbarSwitchGizmoMode,\n\t\t///<summary>\n\t\t///Gizmo space\n\t\t///</summary>\n\t\tToolbarSwitchGizmoSpace,\n\t\t///<summary>\n\t\t///Toggle   snap\n\t\t///</summary>\n\t\tToolbarToggleSnapPoints,\n\t\t///<summary>\n\t\t///Unlink snap points\n\t\t///</summary>\n\t\tToolbarUnlinkSnapPoints,\n\t\t///<summary>\n\t\t/// Way points\n\t\t///</summary>\n\t\tToolbarWaypoints,\n\t\t///<summary>\n\t\t///Small ship templates\n\t\t///</summary>\n\t\tSmallShipTemplates,\n\t\t///<summary>\n\t\t///Temp lates\n\t\t///</summary>\n\t\tToolbarSmallShipTemplates,\n\t\t///<summary>\n\t\t///4th reich wreck\n\t\t///</summary>\n\t\tFourth_reich_wreck,\n\t\t///<summary>\n\t\t///Armor\n\t\t///</summary>\n\t\tp231b01_armor,\n\t\t///<summary>\n\t\t///Armor corner\n\t\t///</summary>\n\t\tp231b01_armor_corner,\n\t\t///<summary>\n\t\t///Armor edge\n\t\t///</summary>\n\t\tp231b01_armor_edge,\n\t\t///<summary>\n\t\t///Armor hole\n\t\t///</summary>\n\t\tp231b01_armor_hole,\n\t\t///<summary>\n\t\t///Cargo storage container\n\t\t///</summary>\n\t\tp344_a03_container,\n\t\t///<summary>\n\t\t///Long distance antenna big\n\t\t///</summary>\n\t\tp361_b01_long_distance_antenna_big,\n\t\t///<summary>\n\t\t///New template name\n\t\t///</summary>\n\t\tNewTemplateName,\n\t\t///<summary>\n\t\t///Save to server\n\t\t///</summary>\n\t\tSaveToServer,\n\t\t///<summary>\n\t\t///Cannot delete a template that is already saved on the server!\n\t\t///</summary>\n\t\tCannotDeleteSavedTemplate,\n\t\t///<summary>\n\t\t///Failure\n\t\t///</summary>\n\t\tFailure,\n\t\t///<summary>\n\t\t///You have to select something.\n\t\t///</summary>\n\t\tYouHaveToSelect,\n\t\t///<summary>\n\t\t///40 km\n\t\t///</summary>\n\t\tStaticAsteroid40000m,\n\t\t///<summary>\n\t\t///Shelf 1X3\n\t\t///</summary>\n\t\tp150a01_shelf_1X3,\n\t\t///<summary>\n\t\t///Shelf 1X2\n\t\t///</summary>\n\t\tp150a02_shelf_1X2,\n\t\t///<summary>\n\t\t///Shelf 1\n\t\t///</summary>\n\t\tp150a03_shelf_1,\n\t\t///<summary>\n\t\t///Shelves\n\t\t///</summary>\n\t\tCategoryTypeShelves,\n\t\t///<summary>\n\t\t///Rotate snapping: \n\t\t///</summary>\n\t\tRotateSnapping,\n\t\t///<summary>\n\t\t///15 Degrees\n\t\t///</summary>\n\t\tSnap15Deg,\n\t\t///<summary>\n\t\t///90 Degrees\n\t\t///</summary>\n\t\tSnap90Deg,\n\t\t///<summary>\n\t\t///Off\n\t\t///</summary>\n\t\tSnapOff,\n\t\t///<summary>\n\t\t///Sun\n\t\t///</summary>\n\t\tSun,\n\t\t///<summary>\n\t\t///Apollo\n\t\t///</summary>\n\t\tActor_Apollo,\n\t\t///<summary>\n\t\t///Marcus\n\t\t///</summary>\n\t\tActor_Marcus,\n\t\t///<summary>\n\t\t///Officer\n\t\t///</summary>\n\t\tActor_EacSurveySite_MilitaryOfficer,\n\t\t///<summary>\n\t\t///OPERATOR\n\t\t///</summary>\n\t\tActor_EacSurveySite_StationOperator,\n\t\t///<summary>\n\t\t///Radioactivity\n\t\t///</summary>\n\t\tRadioactivityInfluenceSphereType,\n\t\t///<summary>\n\t\t///Junk Yard Inhabited 256x128x256\n\t\t///</summary>\n\t\tJunkYardInhabited_256x128x256,\n\t\t///<summary>\n\t\t///Junk Yard Toxic 128x128x128\n\t\t///</summary>\n\t\tJunkYardToxic_128x128x128,\n\t\t///<summary>\n\t\t///Ice comet\n\t\t///</summary>\n\t\tGlobalEventIceCometDescription,\n\t\t///<summary>\n\t\t///Ice comet\n\t\t///</summary>\n\t\tGlobalEventIceCometName,\n\t\t///<summary>\n\t\t///Empty 512x512x512\n\t\t///</summary>\n\t\tEmpty512x512x512,\n\t\t///<summary>\n\t\t///Magnitude\n\t\t///</summary>\n\t\tMagnitude,\n\t\t///<summary>\n\t\t///45 Degrees\n\t\t///</summary>\n\t\tSnap45Degs,\n\t\t///<summary>\n\t\t///device\n\t\t///</summary>\n\t\tdevice,\n\t\t///<summary>\n\t\t///Take all\n\t\t///</summary>\n\t\tTakeAll,\n\t\t///<summary>\n\t\t///launcher\n\t\t///</summary>\n\t\tWeaponUniversalLauncher,\n\t\t///<summary>\n\t\t///Junk Yard Forge 256x256x256\n\t\t///</summary>\n\t\tJunkYardForge_256x256x256,\n\t\t///<summary>\n\t\t///Madelyn\n\t\t///</summary>\n\t\tActor_Madelyn,\n\t\t///<summary>\n\t\t///Lattice beam straight 420m\n\t\t///</summary>\n\t\tp110b03_lattice_beam_straight_420m,\n\t\t///<summary>\n\t\t///Lattice beam straight 420m with panels\n\t\t///</summary>\n\t\tp110b04_lattice_beam_straight_420m_with_panels,\n\t\t///<summary>\n\t\t///Straight 400m\n\t\t///</summary>\n\t\tp120c02_c_straight_400m,\n\t\t///<summary>\n\t\t///Straight 300m\n\t\t///</summary>\n\t\tp130d02_d_straight_300m,\n\t\t///<summary>\n\t\t///Straight 300m\n\t\t///</summary>\n\t\tp130j01_j_straight_300m,\n\t\t///<summary>\n\t\t///Big antenna 300m\n\t\t///</summary>\n\t\tp363_a01_big_antenna_300m,\n\t\t///<summary>\n\t\t///Asteroid part A\n\t\t///</summary>\n\t\tp611_asteroid_part_A,\n\t\t///<summary>\n\t\t///Asteroid part B\n\t\t///</summary>\n\t\tp611_asteroid_part_B,\n\t\t///<summary>\n\t\t///GuiClick\n\t\t///</summary>\n\t\tGuiClick,\n\t\t///<summary>\n\t\t///GuiEditorFlyOutsideBorder\n\t\t///</summary>\n\t\tGuiEditorFlyOutsideBorder,\n\t\t///<summary>\n\t\t///GuiEditorObjectAttach\n\t\t///</summary>\n\t\tGuiEditorObjectAttach,\n\t\t///<summary>\n\t\t///GuiEditorObjectDelete\n\t\t///</summary>\n\t\tGuiEditorObjectDelete,\n\t\t///<summary>\n\t\t///GuiEditorObjectDetach\n\t\t///</summary>\n\t\tGuiEditorObjectDetach,\n\t\t///<summary>\n\t\t///GuiEditorObjectMoveInvalid\n\t\t///</summary>\n\t\tGuiEditorObjectMoveInvalid,\n\t\t///<summary>\n\t\t///GuiEditorObjectMoveStep\n\t\t///</summary>\n\t\tGuiEditorObjectMoveStep,\n\t\t///<summary>\n\t\t///GuiEditorObjectRotateStep\n\t\t///</summary>\n\t\tGuiEditorObjectRotateStep,\n\t\t///<summary>\n\t\t///GuiEditorObjectSelect\n\t\t///</summary>\n\t\tGuiEditorObjectSelect,\n\t\t///<summary>\n\t\t///GuiEditorPrefabCommit\n\t\t///</summary>\n\t\tGuiEditorPrefabCommit,\n\t\t///<summary>\n\t\t///GuiEditorPrefabEnter\n\t\t///</summary>\n\t\tGuiEditorPrefabEnter,\n\t\t///<summary>\n\t\t///GuiEditorPrefabExit\n\t\t///</summary>\n\t\tGuiEditorPrefabExit,\n\t\t///<summary>\n\t\t///GuiEditorVoxelHandAdd\n\t\t///</summary>\n\t\tGuiEditorVoxelHandAdd,\n\t\t///<summary>\n\t\t///GuiEditorVoxelHandMaterial\n\t\t///</summary>\n\t\tGuiEditorVoxelHandMaterial,\n\t\t///<summary>\n\t\t///GuiEditorVoxelHandRemove\n\t\t///</summary>\n\t\tGuiEditorVoxelHandRemove,\n\t\t///<summary>\n\t\t///GuiEditorVoxelHandSoften\n\t\t///</summary>\n\t\tGuiEditorVoxelHandSoften,\n\t\t///<summary>\n\t\t///GuiEditorVoxelHandSwitch\n\t\t///</summary>\n\t\tGuiEditorVoxelHandSwitch,\n\t\t///<summary>\n\t\t///GuiMouseOver\n\t\t///</summary>\n\t\tGuiMouseOver,\n\t\t///<summary>\n\t\t///GuiWheelControlClose\n\t\t///</summary>\n\t\tGuiWheelControlClose,\n\t\t///<summary>\n\t\t///GuiWheelControlOpen\n\t\t///</summary>\n\t\tGuiWheelControlOpen,\n\t\t///<summary>\n\t\t///MenuWelcome\n\t\t///</summary>\n\t\tMenuWelcome,\n\t\t///<summary>\n\t\t///Press {0} to highlight the path to the next objective.\n\t\t///</summary>\n\t\tGPSReminder,\n\t\t///<summary>\n\t\t///DRONE CHINA | China drone which can do simple work (detonate  basic mine, detonate smart mine, detonate biochem  mine, detonate remote bomb, detonate EMP bomb,  launch smoke bomb, launch flash bomb, detonate  sphere explosive, detonate directional explosive,  detonate asteroid killer\n\t\t///</summary>\n\t\tDroneCN,\n\t\t///<summary>\n\t\t///DRONE FOURTH REICH | Fourth Reich drone which can do simple work  (detonate basic mine, detonate smart mine,  detonate biochem mine, detonate remote bomb,  detonate EMP bomb, launch smoke bomb, launch  flash bomb, detonate sphere explosive, detonate  directional explosive, detonate asteroid killer\n\t\t///</summary>\n\t\tDroneSS,\n\t\t///<summary>\n\t\t///DRONE EAC | EAC drone which can do simple work (detonate  basic mine, detonate smart mine, detonate biochem  mine, detonate remote bomb, detonate EMP bomb,  launch smoke bomb, launch flash bomb, detonate  sphere explosive, detonate directional explosive,  detonate asteroid killer\n\t\t///</summary>\n\t\tDroneUS,\n\t\t///<summary>\n\t\t///Aiming distance\n\t\t///</summary>\n\t\tAimingDistance,\n\t\t///<summary>\n\t\t///Edit prefab large weapon\n\t\t///</summary>\n\t\tEditPrefabLargeWeapon,\n\t\t///<summary>\n\t\t///Searching distance\n\t\t///</summary>\n\t\tSearchingDistance,\n\t\t///<summary>\n\t\t///Error\n\t\t///</summary>\n\t\tError,\n\t\t///<summary>\n\t\t///Generators range\n\t\t///</summary>\n\t\tGeneratorsRange,\n\t\t///<summary>\n\t\t///Large weapons range\n\t\t///</summary>\n\t\tLargeWeaponsRange,\n\t\t///<summary>\n\t\t///Cargo Universal 1\n\t\t///</summary>\n\t\tCargoBoxType1,\n\t\t///<summary>\n\t\t///Cargo Universal 5\n\t\t///</summary>\n\t\tCargoBoxType10,\n\t\t///<summary>\n\t\t///Repair 1\n\t\t///</summary>\n\t\tCargoBoxType2,\n\t\t///<summary>\n\t\t///Medikit 1\n\t\t///</summary>\n\t\tCargoBoxType3,\n\t\t///<summary>\n\t\t///Cargo Universal 6\n\t\t///</summary>\n\t\tCargoBoxType4,\n\t\t///<summary>\n\t\t///Fuel 1\n\t\t///</summary>\n\t\tCargoBoxType5,\n\t\t///<summary>\n\t\t///Ammo 1\n\t\t///</summary>\n\t\tCargoBoxType6,\n\t\t///<summary>\n\t\t///Medikit 2\n\t\t///</summary>\n\t\tCargoBoxType7,\n\t\t///<summary>\n\t\t///Ammo 2\n\t\t///</summary>\n\t\tCargoBoxType8,\n\t\t///<summary>\n\t\t///Oxygen 1\n\t\t///</summary>\n\t\tCargoBoxType9,\n\t\t///<summary>\n\t\t///Centrifuge\n\t\t///</summary>\n\t\tp321c03_centrifuge,\n\t\t///<summary>\n\t\t///Box Generator\n\t\t///</summary>\n\t\tp321c04_box_generator,\n\t\t///<summary>\n\t\t///Centrifuge Big\n\t\t///</summary>\n\t\tp321c05_centrifuge_big,\n\t\t///<summary>\n\t\t///Big Antenna 1500m\n\t\t///</summary>\n\t\tp363_a01_big_antenna_1500m,\n\t\t///<summary>\n\t\t///Generator Wall Big\n\t\t///</summary>\n\t\tp321c02_generator_wall_big,\n\t\t///<summary>\n\t\t///Warning! You will not be able to save this asteroid to server after this operation, this is only for exporting voxels.\n\t\t///</summary>\n\t\tClearAsteroidWarning,\n\t\t///<summary>\n\t\t///Miner Bob\n\t\t///</summary>\n\t\tActor_Researcher1,\n\t\t///<summary>\n\t\t///Miner Tom\n\t\t///</summary>\n\t\tActor_Researcher2,\n\t\t///<summary>\n\t\t///Russian captain\n\t\t///</summary>\n\t\tActor_RussianCaptain,\n\t\t///<summary>\n\t\t///Russian pilot\n\t\t///</summary>\n\t\tActor_RussianCF1,\n\t\t///<summary>\n\t\t///Russian pilot\n\t\t///</summary>\n\t\tActor_RussianCF2,\n\t\t///<summary>\n\t\t///Russian general\n\t\t///</summary>\n\t\tActor_RussianGeneral,\n\t\t///<summary>\n\t\t///Chamber v2\n\t\t///</summary>\n\t\tp221k01_chamber_v2,\n\t\t///<summary>\n\t\t///Long term thruster\n\t\t///</summary>\n\t\tp311b01_long_term_thruster,\n\t\t///<summary>\n\t\t///Inertia generator B\n\t\t///</summary>\n\t\tp321c06_inertia_generator_B,\n\t\t///<summary>\n\t\t///Generator\n\t\t///</summary>\n\t\tp321c07_generator,\n\t\t///<summary>\n\t\t///Cooling device wall 340x400\n\t\t///</summary>\n\t\tp4221_a01_cooling_device_wall_340x400,\n\t\t///<summary>\n\t\t///Pipes connector\n\t\t///</summary>\n\t\tp4222_a01_pipes_connector,\n\t\t///<summary>\n\t\t///Open pipe\n\t\t///</summary>\n\t\tp4223_a01_open_pipe,\n\t\t///<summary>\n\t\t///Press {0} to skip the introduction\n\t\t///</summary>\n\t\tNotificationSkipIntroduction,\n\t\t///<summary>\n\t\t///Follow mode. Press {0} to change\n\t\t///</summary>\n\t\tDroneFollowPlayer,\n\t\t///<summary>\n\t\t///Stay mode. Press {0} to change\n\t\t///</summary>\n\t\tDroneHoldPosition,\n\t\t///<summary>\n\t\t///Starting in progress\n\t\t///</summary>\n\t\tStartingProgress,\n\t\t///<summary>\n\t\t///Hold {0} to start generator\n\t\t///</summary>\n\t\tPressToStartGenerator,\n\t\t///<summary>\n\t\t///User scale\n\t\t///</summary>\n\t\tUserScale,\n\t\t///<summary>\n\t\t///Loading from server\n\t\t///</summary>\n\t\tLoadFromServer,\n\t\t///<summary>\n\t\t///Success\n\t\t///</summary>\n\t\tSuccess,\n\t\t///<summary>\n\t\t///Load templates error!\n\t\t///</summary>\n\t\tTemplatesLoadError,\n\t\t///<summary>\n\t\t///Load templates complete!\n\t\t///</summary>\n\t\tTemplatesLoadSuccess,\n\t\t///<summary>\n\t\t///Save templates error!\n\t\t///</summary>\n\t\tTemplatesSaveError,\n\t\t///<summary>\n\t\t///Save templates complete!\n\t\t///</summary>\n\t\tTemplatesSaveSuccess,\n\t\t///<summary>\n\t\t///Barrels\n\t\t///</summary>\n\t\tCategoryTypeBarrels,\n\t\t///<summary>\n\t\t///Fuel 2\n\t\t///</summary>\n\t\tCargoBoxType11,\n\t\t///<summary>\n\t\t///Repair 2\n\t\t///</summary>\n\t\tCargoBoxType12,\n\t\t///<summary>\n\t\t///Oxygen 2\n\t\t///</summary>\n\t\tCargoBoxTypeProp_A,\n\t\t///<summary>\n\t\t///Cargo Universal 2\n\t\t///</summary>\n\t\tCargoBoxTypeProp_B,\n\t\t///<summary>\n\t\t///Cargo Universal 3\n\t\t///</summary>\n\t\tCargoBoxTypeProp_C,\n\t\t///<summary>\n\t\t///Fuel Barrel 1\n\t\t///</summary>\n\t\tBarrel_prop_A,\n\t\t///<summary>\n\t\t///Biohazzard Barrel 3\n\t\t///</summary>\n\t\tBarrel_prop_B,\n\t\t///<summary>\n\t\t///Explosive Barrel 2\n\t\t///</summary>\n\t\tBarrel_prop_C,\n\t\t///<summary>\n\t\t///CannonBall Capsule 1\n\t\t///</summary>\n\t\tCannonBall_Capsule_1,\n\t\t///<summary>\n\t\t///Missile pack 01\n\t\t///</summary>\n\t\tMissile_pack01,\n\t\t///<summary>\n\t\t///Missile plasma 01\n\t\t///</summary>\n\t\tMissile_plazma01,\n\t\t///<summary>\n\t\t///Missile stack biochem 01\n\t\t///</summary>\n\t\tMissile_stack_biochem01,\n\t\t///<summary>\n\t\t///Barrel Biohazard 1\n\t\t///</summary>\n\t\tp581_a01_barrel_biohazard,\n\t\t///<summary>\n\t\t///Barrel Biohazard 2\n\t\t///</summary>\n\t\tp581_a01_barrel_biohazard_2,\n\t\t///<summary>\n\t\t///Nuke Barrel 1\n\t\t///</summary>\n\t\tp581_a01_nuke_barrel,\n\t\t///<summary>\n\t\t///Explosive Barrel 1\n\t\t///</summary>\n\t\tp581_a01_red_barrel,\n\t\t///<summary>\n\t\t///Plasma Barrel 1\n\t\t///</summary>\n\t\tp581_a01_simple_barrel,\n\t\t///<summary>\n\t\t///Nuke Barrel 2\n\t\t///</summary>\n\t\tp581_a01_simple_barrel_2,\n\t\t///<summary>\n\t\t///Press {0} to examine {1}\n\t\t///</summary>\n\t\tNotificationYouCanExamineEmpty,\n\t\t///<summary>\n\t\t///Remove all\n\t\t///</summary>\n\t\tRemoveAll,\n\t\t///<summary>\n\t\t///Electricity kit\n\t\t///</summary>\n\t\tElectricityKit,\n\t\t///<summary>\n\t\t///FUEL TANK | Uses same fuel type as ship’s engine.  Extends its storage by 100%\n\t\t///</summary>\n\t\tFuelKit,\n\t\t///<summary>\n\t\t///HEALTH KIT | Heals player instantly. 1% health  for 1% item’s amount. Ship can  carry more health kits\n\t\t///</summary>\n\t\tHealthKit,\n\t\t///<summary>\n\t\t///OXYGEN TANK | Extends oxygen storage for another  10 minutes worth of oxygen\n\t\t///</summary>\n\t\tOxygenKit,\n\t\t///<summary>\n\t\t///REPAIR KIT | Repairs ship instantly. 1% ship’s  health for 1% item’s amount. Ship  can carry more repair kits\n\t\t///</summary>\n\t\tRepairKit,\n\t\t///<summary>\n\t\t///Saving sector to server…\n\t\t///</summary>\n\t\tSavingSectorToServer,\n\t\t///<summary>\n\t\t///O2 barrel\n\t\t///</summary>\n\t\tp581_a01_o2_barrel,\n\t\t///<summary>\n\t\t///CargoBox prop D\n\t\t///</summary>\n\t\tCargoBox_prop_D,\n\t\t///<summary>\n\t\t///Nuclear warhead closed\n\t\t///</summary>\n\t\tNuclear_Warhead_closed,\n\t\t///<summary>\n\t\t///Nuclear warhead open\n\t\t///</summary>\n\t\tNuclear_Warhead_open,\n\t\t///<summary>\n\t\t///Nuke Barrel 3\n\t\t///</summary>\n\t\tp581_a01_nuke_barrel_1,\n\t\t///<summary>\n\t\t///Fuel Barrel 2\n\t\t///</summary>\n\t\tp581_a01_simple_barrel_3,\n\t\t///<summary>\n\t\t///Cargo Universal 4\n\t\t///</summary>\n\t\tCargoBoxTypeProp_D,\n\t\t///<summary>\n\t\t///Edit inventory\n\t\t///</summary>\n\t\tEditInventory,\n\t\t///<summary>\n\t\t///Patriarch Lamorak\n\t\t///</summary>\n\t\tActor_TemplarPatriarchLamorak,\n\t\t///<summary>\n\t\t///Sir Bedivere\n\t\t///</summary>\n\t\tActor_TemplarSirBedivere,\n\t\t///<summary>\n\t\t///Hold {0} to take the artifact\n\t\t///</summary>\n\t\tNotificationTakeArtifact,\n\t\t///<summary>\n\t\t///Chamber v1\n\t\t///</summary>\n\t\tp221L01_chamber_v1,\n\t\t///<summary>\n\t\t///Hold {0} to build a {1} here\n\t\t///</summary>\n\t\tPressToBuildHere,\n\t\t///<summary>\n\t\t///Chinese\n\t\t///</summary>\n\t\tFactionChineseShort,\n\t\t///<summary>\n\t\t///Church\n\t\t///</summary>\n\t\tFactionChurchShort,\n\t\t///<summary>\n\t\t///Euro-American\n\t\t///</summary>\n\t\tFactionEuroamericanShort,\n\t\t///<summary>\n\t\t///Fourth Reich\n\t\t///</summary>\n\t\tFactionFourthReichShort,\n\t\t///<summary>\n\t\t///Neutral\n\t\t///</summary>\n\t\tFactionNeutralShort,\n\t\t///<summary>\n\t\t///OmniCorp\n\t\t///</summary>\n\t\tFactionOmnicorpShort,\n\t\t///<summary>\n\t\t///Russian\n\t\t///</summary>\n\t\tFactionRussianShort,\n\t\t///<summary>\n\t\t///Arabs\n\t\t///</summary>\n\t\tFactionSaudiShort,\n\t\t///<summary>\n\t\t///Lorraine\n\t\t///</summary>\n\t\tActor_Lorraine,\n\t\t///<summary>\n\t\t///Templar guard\n\t\t///</summary>\n\t\tActor_TemplarGuard,\n\t\t///<summary>\n\t\t///Health %\n\t\t///</summary>\n\t\tHealthPercentage,\n\t\t///<summary>\n\t\t///Health percentage can’t be greater than 100!\n\t\t///</summary>\n\t\tMessageHealthPercentageCantBeGreaterThen100,\n\t\t///<summary>\n\t\t///p110a06_solid_beam_straight_420m\n\t\t///</summary>\n\t\tp110a06_solid_beam_straight_420m,\n\t\t///<summary>\n\t\t///p221m01_chamber_bottom_v1\n\t\t///</summary>\n\t\tp221m01_chamber_bottom_v1,\n\t\t///<summary>\n\t\t///p221m01_chamber_center_v1\n\t\t///</summary>\n\t\tp221m01_chamber_center_v1,\n\t\t///<summary>\n\t\t///p221m01_chamber_top_v1\n\t\t///</summary>\n\t\tp221m01_chamber_top_v1,\n\t\t///<summary>\n\t\t///p321e01_solar_panel\n\t\t///</summary>\n\t\tp321e01_solar_panel,\n\t\t///<summary>\n\t\t///Barrel prop D\n\t\t///</summary>\n\t\tBarrel_prop_D,\n\t\t///<summary>\n\t\t///Barrel prop E\n\t\t///</summary>\n\t\tBarrel_prop_E,\n\t\t///<summary>\n\t\t///Gatling ammo belt\n\t\t///</summary>\n\t\tGattling_ammo_belt,\n\t\t///<summary>\n\t\t///Missile pack 02\n\t\t///</summary>\n\t\tMissile_pack02,\n\t\t///<summary>\n\t\t///Requires Energy\n\t\t///</summary>\n\t\tRequiresEnergy,\n\t\t///<summary>\n\t\t///Indian smuggler\n\t\t///</summary>\n\t\tActor_IndianSmuggler,\n\t\t///<summary>\n\t\t///Informant\n\t\t///</summary>\n\t\tActor_SmugglerInformator,\n\t\t///<summary>\n\t\t///Hold {0} to collect the reward\n\t\t///</summary>\n\t\tPressToCollectReward,\n\t\t///<summary>\n\t\t///Transmitter\n\t\t///</summary>\n\t\tTransmitter,\n\t\t///<summary>\n\t\t///Transfer in progress\n\t\t///</summary>\n\t\tTransferInProgress,\n\t\t///<summary>\n\t\t///Console\n\t\t///</summary>\n\t\tConsole,\n\t\t///<summary>\n\t\t///Downloading data\n\t\t///</summary>\n\t\tDownloadingData,\n\t\t///<summary>\n\t\t///Hold {0} to download data\n\t\t///</summary>\n\t\tPressToDownloadData,\n\t\t///<summary>\n\t\t///Barths_moon_camp\n\t\t///</summary>\n\t\tBarths_moon_camp,\n\t\t///<summary>\n\t\t///Thomas “The Crook”\n\t\t///</summary>\n\t\tActor_TheCrook,\n\t\t///<summary>\n\t\t///Mothership start\n\t\t///</summary>\n\t\tMothershipStart,\n\t\t///<summary>\n\t\t///Alien detector unit\n\t\t///</summary>\n\t\talien_detector_unit,\n\t\t///<summary>\n\t\t///p221n01_chamber_v1\n\t\t///</summary>\n\t\tp221n01_chamber_v1,\n\t\t///<summary>\n\t\t///p311b01_cut_thruster\n\t\t///</summary>\n\t\tp311b01_cut_thruster,\n\t\t///<summary>\n\t\t///p312b01_cut_thruster_lateral\n\t\t///</summary>\n\t\tp312b01_cut_thruster_lateral,\n\t\t///<summary>\n\t\t///p312b02_cut_thruster_latitude\n\t\t///</summary>\n\t\tp312b02_cut_thruster_latitude,\n\t\t///<summary>\n\t\t///p381_c01_building5\n\t\t///</summary>\n\t\tp381_c01_building5,\n\t\t///<summary>\n\t\t///p381_c01_building6\n\t\t///</summary>\n\t\tp381_c01_building6,\n\t\t///<summary>\n\t\t///p381_c01_building7\n\t\t///</summary>\n\t\tp381_c01_building7,\n\t\t///<summary>\n\t\t///p531_d_medic_cross\n\t\t///</summary>\n\t\tp531_d_medic_cross,\n\t\t///<summary>\n\t\t///Survive prefab destruction\n\t\t///</summary>\n\t\tSurvivePrefabDestruction,\n\t\t///<summary>\n\t\t///Can’t destroy this type of asteroid\n\t\t///</summary>\n\t\tIndestructibleAsteroidNotification,\n\t\t///<summary>\n\t\t///Engines are off. Start them from the action menu by pressing {0}\n\t\t///</summary>\n\t\tNotificationEngineOff,\n\t\t///<summary>\n\t\t///Inertial dampeners are disabled. Press {0} to enable them\n\t\t///</summary>\n\t\tNotificationMovementSlowdownEnabled,\n\t\t///<summary>\n\t\t///Incoming missile\n\t\t///</summary>\n\t\tIncommingMissileAlarm,\n\t\t///<summary>\n\t\t///Story\n\t\t///</summary>\n\t\tStory,\n\t\t///<summary>\n\t\t///NETWORK ERROR\n\t\t///</summary>\n\t\tMessageBoxNetworkErrorCaption,\n\t\t///<summary>\n\t\t///Please try again.\n\t\t///</summary>\n\t\tPleaseTryAgain,\n\t\t///<summary>\n\t\t///Total {0}% destroyed\n\t\t///</summary>\n\t\tSolarPanelsLeft,\n\t\t///<summary>\n\t\t///Rift Base Bigger\n\t\t///</summary>\n\t\tAsteroid_Rift_base_bigger,\n\t\t///<summary>\n\t\t///Rift Base Smaller\n\t\t///</summary>\n\t\tAsteroid_Rift_base_smaller,\n\t\t///<summary>\n\t\t///Dead\n\t\t///</summary>\n\t\tSmallShipPilotDead,\n\t\t///<summary>\n\t\t///p541_screen_A\n\t\t///</summary>\n\t\tp541_screen_A,\n\t\t///<summary>\n\t\t///p541_screen_B\n\t\t///</summary>\n\t\tp541_screen_B,\n\t\t///<summary>\n\t\t///p541_terminal_A\n\t\t///</summary>\n\t\tp541_terminal_A,\n\t\t///<summary>\n\t\t///Moving\n\t\t///</summary>\n\t\tMoving,\n\t\t///<summary>\n\t\t///Hold {0} to move Marcus\n\t\t///</summary>\n\t\tHoldToMoveMarcus,\n\t\t///<summary>\n\t\t///Alien artifact\n\t\t///</summary>\n\t\talien_artefact,\n\t\t///<summary>\n\t\t///Display prefab container axis\n\t\t///</summary>\n\t\tDisplayPrefabContainerAxis,\n\t\t///<summary>\n\t\t///Hold {0} to move weapons\n\t\t///</summary>\n\t\tHoldToMoveWeapons,\n\t\t///<summary>\n\t\t///Chinese guard\n\t\t///</summary>\n\t\tActor_ChineseGuard,\n\t\t///<summary>\n\t\t///Bomb\n\t\t///</summary>\n\t\tBomb,\n\t\t///<summary>\n\t\t///Placement in progress\n\t\t///</summary>\n\t\tPlacementInProgress,\n\t\t///<summary>\n\t\t///Hold {0} to place the bomb\n\t\t///</summary>\n\t\tPressToPlaceBomb,\n\t\t///<summary>\n\t\t///Tarja\n\t\t///</summary>\n\t\tActor_Tarja,\n\t\t///<summary>\n\t\t///Deactivating in progress\n\t\t///</summary>\n\t\tDeactivatingInProgress,\n\t\t///<summary>\n\t\t///Hold {0} to deactivate the nuclear warhead\n\t\t///</summary>\n\t\tPressToDeactivateNuclearHead,\n\t\t///<summary>\n\t\t///Particle dummies\n\t\t///</summary>\n\t\tParticleDummies,\n\t\t///<summary>\n\t\t///Safe area dummies\n\t\t///</summary>\n\t\tSafeAreaDummies,\n\t\t///<summary>\n\t\t///Detector dummies\n\t\t///</summary>\n\t\tDetectorDummies,\n\t\t///<summary>\n\t\t///Tarja\n\t\t///</summary>\n\t\tActor_RavenGirl,\n\t\t///<summary>\n\t\t///Valentin\n\t\t///</summary>\n\t\tActor_RavenGuy,\n\t\t///<summary>\n\t\t///Nuclear warhead\n\t\t///</summary>\n\t\tNuclearHead,\n\t\t///<summary>\n\t\t///Edit prefab kinematic parts health and max health\n\t\t///</summary>\n\t\tEditPrefabKinematicPartsHealthAndMaxHealth,\n\t\t///<summary>\n\t\t///Destroyed\n\t\t///</summary>\n\t\tDestroyed,\n\t\t///<summary>\n\t\t///Health must be less or equal to max health!\n\t\t///</summary>\n\t\tMessageHealthMustBeLesserOrEqualMaxHealth,\n\t\t///<summary>\n\t\t///Slave\n\t\t///</summary>\n\t\tActor_Slave,\n\t\t///<summary>\n\t\t///barths_moon_lab1\n\t\t///</summary>\n\t\tbarths_moon_lab1,\n\t\t///<summary>\n\t\t///barths_moon_lab2\n\t\t///</summary>\n\t\tbarths_moon_lab2,\n\t\t///<summary>\n\t\t///Component\n\t\t///</summary>\n\t\tComponent,\n\t\t///<summary>\n\t\t///Hold {0} to take the component\n\t\t///</summary>\n\t\tPressToTakeComponent,\n\t\t///<summary>\n\t\t///Taking in progress\n\t\t///</summary>\n\t\tTakingInProgress,\n\t\t///<summary>\n\t\t///Radar I\n\t\t///</summary>\n\t\tRadar1,\n\t\t///<summary>\n\t\t///Radar II\n\t\t///</summary>\n\t\tRadar2,\n\t\t///<summary>\n\t\t///Radar III\n\t\t///</summary>\n\t\tRadar3,\n\t\t///<summary>\n\t\t///Mind the health of your mothership!\n\t\t///</summary>\n\t\tWatchMothershipHealth,\n\t\t///<summary>\n\t\t///Dialogue\n\t\t///</summary>\n\t\tDialogue,\n\t\t///<summary>\n\t\t///Display HUD\n\t\t///</summary>\n\t\tDisplayHud,\n\t\t///<summary>\n\t\t///Disabled\n\t\t///</summary>\n\t\tDisabled,\n\t\t///<summary>\n\t\t///Hold {0} to take the turrets\n\t\t///</summary>\n\t\tPressToTakeTurrets,\n\t\t///<summary>\n\t\t///Turrets\n\t\t///</summary>\n\t\tTurrets,\n\t\t///<summary>\n\t\t///Hold {0} to hack\n\t\t///</summary>\n\t\tPressToHack,\n\t\t///<summary>\n\t\t///Hold {0} to place the transmitter device\n\t\t///</summary>\n\t\tPressToPlaceDevice,\n\t\t///<summary>\n\t\t///Hold {0} to take cargo\n\t\t///</summary>\n\t\tPressToTakeCargo,\n\t\t///<summary>\n\t\t///Radar jammer detected\n\t\t///</summary>\n\t\tRadarJammed,\n\t\t///<summary>\n\t\t///Hold {0} to unlock the prison cell\n\t\t///</summary>\n\t\tUnlockCell,\n\t\t///<summary>\n\t\t///Press {0} to deploy a drone Press {1} to control a drone\n\t\t///</summary>\n\t\tHowToControlDrone,\n\t\t///<summary>\n\t\t///All\n\t\t///</summary>\n\t\tInventoryShowAll,\n\t\t///<summary>\n\t\t///Medicine\n\t\t///</summary>\n\t\tInventoryShowConsumables,\n\t\t///<summary>\n\t\t///Engines, devices, drones, etc.\n\t\t///</summary>\n\t\tInventoryShowEquipment,\n\t\t///<summary>\n\t\t///Goods\n\t\t///</summary>\n\t\tInventoryShowGods,\n\t\t///<summary>\n\t\t///Ores\n\t\t///</summary>\n\t\tInventoryShowOres,\n\t\t///<summary>\n\t\t///Weapons & ammo\n\t\t///</summary>\n\t\tInventoryShowWeapons,\n\t\t///<summary>\n\t\t///Rainold Speedster\n\t\t///</summary>\n\t\tActor_RaceChallenger,\n\t\t///<summary>\n\t\t///Start!\n\t\t///</summary>\n\t\tStart,\n\t\t///<summary>\n\t\t///Unpowered\n\t\t///</summary>\n\t\tUnpowered,\n\t\t///<summary>\n\t\t///Official sectors\n\t\t///</summary>\n\t\tSandboxSectors,\n\t\t///<summary>\n\t\t///Display deactivated entities\n\t\t///</summary>\n\t\tDisplayDeactivatedEntities,\n\t\t///<summary>\n\t\t///Rail gun\n\t\t///</summary>\n\t\trail_gun,\n\t\t///<summary>\n\t\t///p345_a01_recycle_sphere\n\t\t///</summary>\n\t\tp345_a01_recycle_sphere,\n\t\t///<summary>\n\t\t///Mission failed\n\t\t///</summary>\n\t\tMissionFailed,\n\t\t///<summary>\n\t\t///Do not shoot here!\n\t\t///</summary>\n\t\tDontShoot,\n\t\t///<summary>\n\t\t///Slave\n\t\t///</summary>\n\t\tSlave,\n\t\t///<summary>\n\t\t///EAC transmitter Silver Foresight\n\t\t///</summary>\n\t\tEAC_TRANSMITTER,\n\t\t///<summary>\n\t\t///Enter the control room\n\t\t///</summary>\n\t\tEAC_TRANSMITTER_CENTRAL_ROOM,\n\t\t///<summary>\n\t\t///Set all three satellites according to your needs. \n\t\t///</summary>\n\t\tEAC_TRANSMITTER_Description,\n\t\t///<summary>\n\t\t///Unlock outer cargo door\n\t\t///</summary>\n\t\tEAC_TRANSMITTER_OPEN_CARGO_DOOR,\n\t\t///<summary>\n\t\t///Plant the bomb \n\t\t///</summary>\n\t\tEAC_TRANSMITTER_OPEN_CARGO_DOOR_Description,\n\t\t///<summary>\n\t\t///Activate lower solar panels\n\t\t///</summary>\n\t\tEAC_TRANSMITTER_ACTIVATE_SOLARPANELS,\n\t\t///<summary>\n\t\t///Get to the controls of the lower solar panels and activate them. \n\t\t///</summary>\n\t\tEAC_TRANSMITTER_ACTIVATE_SOLARPANELS_Description,\n\t\t///<summary>\n\t\t///Start the transmission\n\t\t///</summary>\n\t\tEAC_TRANSMITTER_START_TRANSMISSION,\n\t\t///<summary>\n\t\t///Start the transmission to triangulate the goal. \n\t\t///</summary>\n\t\tEAC_TRANSMITTER_START_TRANSMISSION_Description,\n\t\t///<summary>\n\t\t///Hack satellite A\n\t\t///</summary>\n\t\tEAC_TRANSMITTER_HACK_SATELLITE_A,\n\t\t///<summary>\n\t\t///Reprogram satellite A to use our transmission frequency. \n\t\t///</summary>\n\t\tEAC_TRANSMITTER_HACK_SATELLITE_A_Description,\n\t\t///<summary>\n\t\t///Hack satellite B\n\t\t///</summary>\n\t\tEAC_TRANSMITTER_HACK_SATELLITE_B,\n\t\t///<summary>\n\t\t///Reprogram satellite B to use our transmission frequency. \n\t\t///</summary>\n\t\tEAC_TRANSMITTER_HACK_SATELLITE_B_Descrption,\n\t\t///<summary>\n\t\t///Hack satellite C\n\t\t///</summary>\n\t\tEAC_TRANSMITTER_HACK_SATELLITE_C,\n\t\t///<summary>\n\t\t///Reprogram satellite C to use our transmission frequency. \n\t\t///</summary>\n\t\tEAC_TRANSMITTER_HACK_SATELLITE_C_Description,\n\t\t///<summary>\n\t\t///Return to the meeting point\n\t\t///</summary>\n\t\tEAC_TRANSMITTER_MEETMS,\n\t\t///<summary>\n\t\t///You will be able to travel through the solar map. \n\t\t///</summary>\n\t\tEAC_TRANSMITTER_MEETMS_Description,\n\t\t///<summary>\n\t\t///Open a connection to the arm part\n\t\t///</summary>\n\t\tEAC_TRANSMITTER_OPEN_CONNECTION,\n\t\t///<summary>\n\t\t///Look for a control hub labeled ‘Solar Arm Access’. \n\t\t///</summary>\n\t\tEAC_TRANSMITTER_OPEN_CONNECTION_Description,\n\t\t///<summary>\n\t\t///Unlock the way to the satellites\n\t\t///</summary>\n\t\tEAC_TRANSMITTER_UNLOCK_WAY_TO_SATELLITES,\n\t\t///<summary>\n\t\t///Look for a control hub labeled “Communication Access”. \n\t\t///</summary>\n\t\tEAC_TRANSMITTER_UNLOCK_WAY_TO_SATELLITES_Descrption,\n\t\t///<summary>\n\t\t///Use stealth. \n\t\t///</summary>\n\t\tEAC_TRANSMITTER_CENTRAL_ROOM_Description,\n\t\t///<summary>\n\t\t///Destroy aggregators\n\t\t///</summary>\n\t\tEAC_TRANSMITTER_BLOCK_AUTODESTRUCT_DESTROY,\n\t\t///<summary>\n\t\t///Destroy them now. \n\t\t///</summary>\n\t\tEAC_TRANSMITTER_BLOCK_AUTODESTRUCT_DESTROY_Description,\n\t\t///<summary>\n\t\t///Escape\n\t\t///</summary>\n\t\tEAC_TRANSMITTER_BLOCK_AUTODESTRUCT_ESCAPE,\n\t\t///<summary>\n\t\t///Destroy the panel. \n\t\t///</summary>\n\t\tEAC_TRANSMITTER_BLOCK_AUTODESTRUCT_ESCAPE_Description,\n\t\t///<summary>\n\t\t///Stop the autodestruction\n\t\t///</summary>\n\t\tEAC_TRANSMITTER_BLOCK_AUTODESTRUCT_HACK,\n\t\t///<summary>\n\t\t///Hack the alarm. \n\t\t///</summary>\n\t\tEAC_TRANSMITTER_BLOCK_AUTODESTRUCT_HACK_Description,\n\t\t///<summary>\n\t\t///Help Marcus\n\t\t///</summary>\n\t\tEAC_TRANSMITTER_BLOCK_AUTODESTRUCT_HELP,\n\t\t///<summary>\n\t\t///Crush your enemies, see them driven before you, and hear the lamentation of their women. \n\t\t///</summary>\n\t\tEAC_TRANSMITTER_BLOCK_AUTODESTRUCT_HELP_Description,\n\t\t///<summary>\n\t\t///Find the repair kit\n\t\t///</summary>\n\t\tEAC_TRANSMITTER_FIND_REPAIR,\n\t\t///<summary>\n\t\t///Look in the box. \n\t\t///</summary>\n\t\tEAC_TRANSMITTER_FIND_REPAIR_Description,\n\t\t///<summary>\n\t\t///Fix the generator\n\t\t///</summary>\n\t\tEAC_TRANSMITTER_FIX_GENERATOR,\n\t\t///<summary>\n\t\t///The first thing to check are the fuel cells. Then try the battery-powered self-starters; change the batteries if they’re faulty. If the generator starts out nicely but cuts out immediately, you might be overloading the third inlet; try to turn off some equipment and try again. If the generator runs fine but doesn’t produce any voltage, you need to look for a blown fuse or a tripped in-built circuit breaker. Finally, check the output gain and frequency under various loads. Try to connect valve 42f to the outlet B and check the thermal gauge for short peaks. If the measurements don’t match the values in the manual, you might have to change the exhaust system, piston rings, the governor or some of the valves. If you still have problems, call a professional. \n\t\t///</summary>\n\t\tEAC_TRANSMITTER_FIX_GENERATOR_Descrpition,\n\t\t///<summary>\n\t\t///Open your path to the solar arm\n\t\t///</summary>\n\t\tEAC_TRANSMITTER_OPEN_SOLAR_ARM,\n\t\t///<summary>\n\t\t///Use the hub to open the door. \n\t\t///</summary>\n\t\tEAC_TRANSMITTER_OPEN_SOLAR_ARM_Description,\n\t\t///<summary>\n\t\t///Restart the transmission\n\t\t///</summary>\n\t\tEAC_TRANSMITTER_RESTART_TRANSMISSION,\n\t\t///<summary>\n\t\t///Use the transmitter. \n\t\t///</summary>\n\t\tEAC_TRANSMITTER_RESTART_TRANSMISSION_Description,\n\t\t///<summary>\n\t\t///Building in progress\n\t\t///</summary>\n\t\tBuildingInProgress,\n\t\t///<summary>\n\t\t///A new mission has been recieved\n\t\t///</summary>\n\t\tNewMissionRecieved,\n\t\t///<summary>\n\t\t///Hold {0} to build the transmitter\n\t\t///</summary>\n\t\tPressToBuildTransmitter,\n\t\t///<summary>\n\t\t///HOST NAME\n\t\t///</summary>\n\t\tHeaderHostName,\n\t\t///<summary>\n\t\t///PING\n\t\t///</summary>\n\t\tHeaderPing,\n\t\t///<summary>\n\t\t///GAME NAME\n\t\t///</summary>\n\t\tHeaderSectorName,\n\t\t///<summary>\n\t\t///TYPE\n\t\t///</summary>\n\t\tHeaderType,\n\t\t///<summary>\n\t\t///Host friend sec.\n\t\t///</summary>\n\t\tHostFriendSector,\n\t\t///<summary>\n\t\t///Host offic. sec.\n\t\t///</summary>\n\t\tHostOfficSector,\n\t\t///<summary>\n\t\t///Host your sec.\n\t\t///</summary>\n\t\tHostYourSector,\n\t\t///<summary>\n\t\t///Join game\n\t\t///</summary>\n\t\tJoinGame,\n\t\t///<summary>\n\t\t///Search game\n\t\t///</summary>\n\t\tSearchGameToJoin,\n\t\t///<summary>\n\t\t///JX+\n\t\t///</summary>\n\t\tJoystickAxisXpos,\n\t\t///<summary>\n\t\t///JY+\n\t\t///</summary>\n\t\tJoystickAxisYpos,\n\t\t///<summary>\n\t\t///JZ+\n\t\t///</summary>\n\t\tJoystickAxisZpos,\n\t\t///<summary>\n\t\t///JRX+\n\t\t///</summary>\n\t\tJoystickRotationXpos,\n\t\t///<summary>\n\t\t///JRY+\n\t\t///</summary>\n\t\tJoystickRotationYpos,\n\t\t///<summary>\n\t\t///JRZ+\n\t\t///</summary>\n\t\tJoystickRotationZpos,\n\t\t///<summary>\n\t\t///JS1+\n\t\t///</summary>\n\t\tJoystickSlider1pos,\n\t\t///<summary>\n\t\t///JS2+\n\t\t///</summary>\n\t\tJoystickSlider2pos,\n\t\t///<summary>\n\t\t///JX-\n\t\t///</summary>\n\t\tJoystickAxisXneg,\n\t\t///<summary>\n\t\t///JY-\n\t\t///</summary>\n\t\tJoystickAxisYneg,\n\t\t///<summary>\n\t\t///JZ-\n\t\t///</summary>\n\t\tJoystickAxisZneg,\n\t\t///<summary>\n\t\t///JRX-\n\t\t///</summary>\n\t\tJoystickRotationXneg,\n\t\t///<summary>\n\t\t///JRY-\n\t\t///</summary>\n\t\tJoystickRotationYneg,\n\t\t///<summary>\n\t\t///JRZ-\n\t\t///</summary>\n\t\tJoystickRotationZneg,\n\t\t///<summary>\n\t\t///JS1-\n\t\t///</summary>\n\t\tJoystickSlider1neg,\n\t\t///<summary>\n\t\t///JS2-\n\t\t///</summary>\n\t\tJoystickSlider2neg,\n\t\t///<summary>\n\t\t///Send\n\t\t///</summary>\n\t\tSend,\n\t\t///<summary>\n\t\t///Send to all\n\t\t///</summary>\n\t\tSendToAll,\n\t\t///<summary>\n\t\t///Send to team\n\t\t///</summary>\n\t\tSendToTeam,\n\t\t///<summary>\n\t\t///Hold {0} to hand out your equipment\n\t\t///</summary>\n\t\tPressToGiveEquipment,\n\t\t///<summary>\n\t\t///Marcus is leaving the party to get the other security key\n\t\t///</summary>\n\t\tMarucsIsLeavingForKey,\n\t\t///<summary>\n\t\t///Marcus is leaving the party to steal the transporter\n\t\t///</summary>\n\t\tMarucsIsLeavingForTransporter,\n\t\t///<summary>\n\t\t///Artifact\n\t\t///</summary>\n\t\tArtifact,\n\t\t///<summary>\n\t\t///Refresh\n\t\t///</summary>\n\t\tRefresh,\n\t\t///<summary>\n\t\t///PLAYERS\n\t\t///</summary>\n\t\tHeaderPlayerCount,\n\t\t///<summary>\n\t\t///Host game\n\t\t///</summary>\n\t\tHostGame,\n\t\t///<summary>\n\t\t///User info\n\t\t///</summary>\n\t\tUserInfo,\n\t\t///<summary>\n\t\t///Age:\n\t\t///</summary>\n\t\tInfoAge,\n\t\t///<summary>\n\t\t///Display name:\n\t\t///</summary>\n\t\tInfoDisplayName,\n\t\t///<summary>\n\t\t///E-mail:\n\t\t///</summary>\n\t\tInfoEmail,\n\t\t///<summary>\n\t\t///Gender:\n\t\t///</summary>\n\t\tInfoGender,\n\t\t///<summary>\n\t\t///Username:\n\t\t///</summary>\n\t\tInfoUserName,\n\t\t///<summary>\n\t\t///New mission:\n\t\t///</summary>\n\t\tNewMission,\n\t\t///<summary>\n\t\t///Unknown sector\n\t\t///</summary>\n\t\tUnknownSector,\n\t\t///<summary>\n\t\t///Press {0} to detonate all {1} bombs\n\t\t///</summary>\n\t\tRemoteBombHelp,\n\t\t///<summary>\n\t\t///Time bomb timer\n\t\t///</summary>\n\t\tTimeBombTimer,\n\t\t///<summary>\n\t\t///{0} seconds – Press {1} to change\n\t\t///</summary>\n\t\tTimeBombHelp,\n\t\t///<summary>\n\t\t///{0} has been killed by {1}\n\t\t///</summary>\n\t\tMP_XHasBeenKilledByY,\n\t\t///<summary>\n\t\t///{0} has joined the game\n\t\t///</summary>\n\t\tMP_XHasJoined,\n\t\t///<summary>\n\t\t///{0} has left the game\n\t\t///</summary>\n\t\tMP_XHasLeft,\n\t\t///<summary>\n\t\t///{0} killed himself\n\t\t///</summary>\n\t\tMP_XKilledHimself,\n\t\t///<summary>\n\t\t///You have been killed by {0}\n\t\t///</summary>\n\t\tMP_YouHaveBeenKilledByX,\n\t\t///<summary>\n\t\t///You have killed {0}\n\t\t///</summary>\n\t\tMP_YouHaveKilledX,\n\t\t///<summary>\n\t\t///The request has timed out\n\t\t///</summary>\n\t\tJoinGameTimeout,\n\t\t///<summary>\n\t\t///fort_val_box_128\n\t\t///</summary>\n\t\tfort_val_box_128,\n\t\t///<summary>\n\t\t///Hold {0} to repair the turret\n\t\t///</summary>\n\t\tPressToRepairTurret,\n\t\t///<summary>\n\t\t///Rift\n\t\t///</summary>\n\t\tAsteroid_Rift,\n\t\t///<summary>\n\t\t///Rift small 1\n\t\t///</summary>\n\t\tAsteroid_Rift_small_1,\n\t\t///<summary>\n\t\t///Rift small 2\n\t\t///</summary>\n\t\tAsteroid_Rift_small_2,\n\t\t///<summary>\n\t\t///Select deactivated entity\n\t\t///</summary>\n\t\tSelectDeactivatedEntity,\n\t\t///<summary>\n\t\t///Select deac. entity\n\t\t///</summary>\n\t\tToolbarSelectDeactivatedEntity,\n\t\t///<summary>\n\t\t///Repairing\n\t\t///</summary>\n\t\tProgressRepairing,\n\t\t///<summary>\n\t\t///Turret\n\t\t///</summary>\n\t\tTurret,\n\t\t///<summary>\n\t\t///Travel to {0}\n\t\t///</summary>\n\t\tTravelTo,\n\t\t///<summary>\n\t\t///No ammo\n\t\t///</summary>\n\t\tNotificationAmmoNo,\n\t\t///<summary>\n\t\t///No armor\n\t\t///</summary>\n\t\tNotificationArmorNo,\n\t\t///<summary>\n\t\t///Marcus is leaving the party\n\t\t///</summary>\n\t\tMarcusIsLeavingForTarja,\n\t\t///<summary>\n\t\t///Generator under attack\n\t\t///</summary>\n\t\tGeneratorUnderAttack,\n\t\t///<summary>\n\t\t///Respawn point\n\t\t///</summary>\n\t\tRespawnPoint,\n\t\t///<summary>\n\t\t///Num .\n\t\t///</summary>\n\t\tKeysDecimal,\n\t\t///<summary>\n\t\t///Bkslash\n\t\t///</summary>\n\t\tKeysBackslash,\n\t\t///<summary>\n\t\t///Comma\n\t\t///</summary>\n\t\tKeysComma,\n\t\t///<summary>\n\t\t///Minus\n\t\t///</summary>\n\t\tKeysMinus,\n\t\t///<summary>\n\t\t///[\n\t\t///</summary>\n\t\tKeysOpenBracket,\n\t\t///<summary>\n\t\t///]\n\t\t///</summary>\n\t\tKeysCloseBracket,\n\t\t///<summary>\n\t\t///Period\n\t\t///</summary>\n\t\tKeysPeriod,\n\t\t///<summary>\n\t\t///Pipe\n\t\t///</summary>\n\t\tKeysPipe,\n\t\t///<summary>\n\t\t///Plus\n\t\t///</summary>\n\t\tKeysPlus,\n\t\t///<summary>\n\t\t///Slash\n\t\t///</summary>\n\t\tKeysQuestion,\n\t\t///<summary>\n\t\t///Quote\n\t\t///</summary>\n\t\tKeysQuotes,\n\t\t///<summary>\n\t\t///Colon\n\t\t///</summary>\n\t\tKeysSemicolon,\n\t\t///<summary>\n\t\t///~\n\t\t///</summary>\n\t\tKeysTilde,\n\t\t///<summary>\n\t\t///Num *\n\t\t///</summary>\n\t\tKeysMultiply,\n\t\t///<summary>\n\t\t///Num /\n\t\t///</summary>\n\t\tKeysDivide,\n\t\t///<summary>\n\t\t///Num +\n\t\t///</summary>\n\t\tKeysAdd,\n\t\t///<summary>\n\t\t///Num −\n\t\t///</summary>\n\t\tKeysSubtract,\n\t\t///<summary>\n\t\t///Caps\n\t\t///</summary>\n\t\tKeysCapsLock,\n\t\t///<summary>\n\t\t///Enter\n\t\t///</summary>\n\t\tKeysEnter,\n\t\t///<summary>\n\t\t///Backsp.\n\t\t///</summary>\n\t\tBackspace,\n\t\t///<summary>\n\t\t///Special weapons\n\t\t///</summary>\n\t\tSpecialWeapons,\n\t\t///<summary>\n\t\t///Fire hologram\n\t\t///</summary>\n\t\tFireHologram,\n\t\t///<summary>\n\t\t///Fire hologram front\n\t\t///</summary>\n\t\tFireHologramFront,\n\t\t///<summary>\n\t\t///Fire hologram back\n\t\t///</summary>\n\t\tFireHologramBack,\n\t\t///<summary>\n\t\t///Fire basic mine\n\t\t///</summary>\n\t\tFireBasicMine,\n\t\t///<summary>\n\t\t///Fire basic mine front\n\t\t///</summary>\n\t\tFireBasicMineFront,\n\t\t///<summary>\n\t\t///Fire basic mine back\n\t\t///</summary>\n\t\tFireBasicMineBack,\n\t\t///<summary>\n\t\t///Fire smart mine\n\t\t///</summary>\n\t\tFireSmartMine,\n\t\t///<summary>\n\t\t///Fire smart mine front\n\t\t///</summary>\n\t\tFireSmartMineFront,\n\t\t///<summary>\n\t\t///Fire smart mine back\n\t\t///</summary>\n\t\tFireSmartMineBack,\n\t\t///<summary>\n\t\t///Fire flash bomb\n\t\t///</summary>\n\t\tFireFlashBomb,\n\t\t///<summary>\n\t\t///Fire flash bomb front\n\t\t///</summary>\n\t\tFireFlashBombFront,\n\t\t///<summary>\n\t\t///Fire flash bomb back\n\t\t///</summary>\n\t\tFireFlashBombBack,\n\t\t///<summary>\n\t\t///Fire decoy flare\n\t\t///</summary>\n\t\tFireDecoyFlare,\n\t\t///<summary>\n\t\t///Fire decoy flare front\n\t\t///</summary>\n\t\tFireDecoyFlareFront,\n\t\t///<summary>\n\t\t///Fire decoy flare back\n\t\t///</summary>\n\t\tFireDecoyFlareBack,\n\t\t///<summary>\n\t\t///Fire smoke bomb\n\t\t///</summary>\n\t\tFireSmokeBomb,\n\t\t///<summary>\n\t\t///Fire smoke bomb front\n\t\t///</summary>\n\t\tFireSmokeBombFront,\n\t\t///<summary>\n\t\t///Fire smoke bomb back\n\t\t///</summary>\n\t\tFireSmokeBombBack,\n\t\t///<summary>\n\t\t///Multiplayer session successfully started\n\t\t///</summary>\n\t\tMP_GameHosted,\n\t\t///<summary>\n\t\t///Multiplayer session cannot be started, please check your internet connection and firewall.\n\t\t///</summary>\n\t\tMP_GameHostFailed_X,\n\t\t///<summary>\n\t\t///Please enter a username and password.\n\t\t///</summary>\n\t\tCantLoginEmptyUsernameOrPassword,\n\t\t///<summary>\n\t\t///Prison\n\t\t///</summary>\n\t\tprison,\n\t\t///<summary>\n\t\t///EAC police commander\n\t\t///</summary>\n\t\tActor_EAC_Police_Mothership_Commander_F,\n\t\t///<summary>\n\t\t///EAC police commander\n\t\t///</summary>\n\t\tActor_EAC_Police_Mothership_Commander_M,\n\t\t///<summary>\n\t\t///Father Tobias\n\t\t///</summary>\n\t\tActor_Father_Tobias_Last_Hope,\n\t\t///<summary>\n\t\t///Fourth Reich colonel\n\t\t///</summary>\n\t\tActor_Fourth_Reich_Colone_2,\n\t\t///<summary>\n\t\t///Francis Reef\n\t\t///</summary>\n\t\tActor_Francis_Reef,\n\t\t///<summary>\n\t\t///Manjeet Lata\n\t\t///</summary>\n\t\tActor_Manjeet_Lata,\n\t\t///<summary>\n\t\t///Mr. Stauffenberg\n\t\t///</summary>\n\t\tActor_Mr_Stauffenberg,\n\t\t///<summary>\n\t\t///Thomas Barth\n\t\t///</summary>\n\t\tActor_Thomas_Barth,\n\t\t///<summary>\n\t\t///White Wolves general\n\t\t///</summary>\n\t\tActor_White_Wolves_General_2,\n\t\t///<summary>\n\t\t///Deploy drone\n\t\t///</summary>\n\t\tDroneDeploy,\n\t\t///<summary>\n\t\t///Control drone\n\t\t///</summary>\n\t\tDroneControl,\n\t\t///<summary>\n\t\t///Control remote camera\n\t\t///</summary>\n\t\tControlSecondaryCamera,\n\t\t///<summary>\n\t\t///Cycle secondary camera modes\n\t\t///</summary>\n\t\tCycleSecondaryCamera,\n\t\t///<summary>\n\t\t///Items\n\t\t///</summary>\n\t\tItems,\n\t\t///<summary>\n\t\t///Shift\n\t\t///</summary>\n\t\tShift,\n\t\t///<summary>\n\t\t///Ctrl\n\t\t///</summary>\n\t\tCtrl,\n\t\t///<summary>\n\t\t///Alt\n\t\t///</summary>\n\t\tAlt,\n\t\t///<summary>\n\t\t///Open help screen\n\t\t///</summary>\n\t\tOpenHelpScreen,\n\t\t///<summary>\n\t\t///Open cheat screen\n\t\t///</summary>\n\t\tOpenCheats,\n\t\t///<summary>\n\t\t///Save screenshot to user folder\n\t\t///</summary>\n\t\tSaveScreenshotToUserFolder,\n\t\t///<summary>\n\t\t///User folder\n\t\t///</summary>\n\t\tUserFolder,\n\t\t///<summary>\n\t\t///Taking in progress\n\t\t///</summary>\n\t\tPickingInProgress,\n\t\t///<summary>\n\t\t///Hold {0} to pick up items\n\t\t///</summary>\n\t\tPressToPickItems,\n\t\t///<summary>\n\t\t///Hold {0} to pick up samples\n\t\t///</summary>\n\t\tPressToPickSamples,\n\t\t///<summary>\n\t\t///Samples\n\t\t///</summary>\n\t\tSamples,\n\t\t///<summary>\n\t\t///Chinese Refinery First 128x128x128\n\t\t///</summary>\n\t\tChineseRefinery_First_128x128x128,\n\t\t///<summary>\n\t\t///Chinese Refinery Second 128x128x128\n\t\t///</summary>\n\t\tChineseRefinery_Second_128x128x128,\n\t\t///<summary>\n\t\t///Chinese Refinery Third 128x256x128\n\t\t///</summary>\n\t\tChineseRefinery_Third_128x256x128,\n\t\t///<summary>\n\t\t///Chinese Corridor Last 126x126x126\n\t\t///</summary>\n\t\tChinese_Corridor_Last_126x126x126,\n\t\t///<summary>\n\t\t///Chinese Corridor Tunnel 256x256x256\n\t\t///</summary>\n\t\tChinese_Corridor_Tunnel_256x256x256,\n\t\t///<summary>\n\t\t///Junkyard Race 2 256x256x256\n\t\t///</summary>\n\t\tJunkyard_RaceAsteroid_256x256x256,\n\t\t///<summary>\n\t\t///Junkyard Race 256x256x256\n\t\t///</summary>\n\t\tJunkyard_Race_256x256x256,\n\t\t///<summary>\n\t\t///Data transfer\n\t\t///</summary>\n\t\tDataTransfer,\n\t\t///<summary>\n\t\t///Hold {0} to download the blueprints\n\t\t///</summary>\n\t\tPressToDownloadBluePrints,\n\t\t///<summary>\n\t\t///Hold {0} to take the biomachine parts\n\t\t///</summary>\n\t\tPressToTakeBio,\n\t\t///<summary>\n\t\t///Vendor\n\t\t///</summary>\n\t\tvendor,\n\t\t///<summary>\n\t\t///Merchant Army\n\t\t///</summary>\n\t\tMerchantArmy,\n\t\t///<summary>\n\t\t///Merchant Blueprint\n\t\t///</summary>\n\t\tMerchantBlueprint,\n\t\t///<summary>\n\t\t///Inventory templates\n\t\t///</summary>\n\t\tInventoryTemplates,\n\t\t///<summary>\n\t\t///Merchant Medicine\n\t\t///</summary>\n\t\tMerchantMedicine,\n\t\t///<summary>\n\t\t///Merchant Mixed\n\t\t///</summary>\n\t\tMerchantMixed,\n\t\t///<summary>\n\t\t///Price coefficient\n\t\t///</summary>\n\t\tPriceCoeficient,\n\t\t///<summary>\n\t\t///Merchant Tools\n\t\t///</summary>\n\t\tMerchantTools,\n\t\t///<summary>\n\t\t///The price coefficient must be greater than or equal to 1!\n\t\t///</summary>\n\t\tMessagePriceCoeficientMustBeGreaterThanOrEqualToOne,\n\t\t///<summary>\n\t\t///You must set the price coefficient!\n\t\t///</summary>\n\t\tMessageYouMustSetPriceCoeficient,\n\t\t///<summary>\n\t\t///Don’t go there!\n\t\t///</summary>\n\t\tDoNotGoThere,\n\t\t///<summary>\n\t\t///Hurry up, don’t let him fly away!\n\t\t///</summary>\n\t\tHurryUp,\n\t\t///<summary>\n\t\t///Hold {0} to collect cargo\n\t\t///</summary>\n\t\tPressToCollectCargo,\n\t\t///<summary>\n\t\t///Hold {0} to plant cargo\n\t\t///</summary>\n\t\tHoldToPlantCargo,\n\t\t///<summary>\n\t\t///Slow down, don’t let him notice you!\n\t\t///</summary>\n\t\tSlowDown,\n\t\t///<summary>\n\t\t///Joining game… please wait\n\t\t///</summary>\n\t\tJoiningGame,\n\t\t///<summary>\n\t\t///Allow\n\t\t///</summary>\n\t\tAllowEnter,\n\t\t///<summary>\n\t\t///Deny\n\t\t///</summary>\n\t\tDenyEnter,\n\t\t///<summary>\n\t\t///Applying changes… please wait\n\t\t///</summary>\n\t\tApplyingPleaseWait,\n\t\t///<summary>\n\t\t///Bioresearch asteroid 256\n\t\t///</summary>\n\t\tBioresearch,\n\t\t///<summary>\n\t\t///Oxygen leaking\n\t\t///</summary>\n\t\tNotificationOxygenLeaking,\n\t\t///<summary>\n\t\t///HudOxygenLeakingWarning\n\t\t///</summary>\n\t\tHudOxygenLeakingWarning,\n\t\t///<summary>\n\t\t///Other side\n\t\t///</summary>\n\t\tOtherSide,\n\t\t///<summary>\n\t\t///Close\n\t\t///</summary>\n\t\tClose,\n\t\t///<summary>\n\t\t///many2_small_asteroids\n\t\t///</summary>\n\t\tmany2_small_asteroids,\n\t\t///<summary>\n\t\t///many_medium_asteroids\n\t\t///</summary>\n\t\tmany_medium_asteroids,\n\t\t///<summary>\n\t\t///many_small_asteroids\n\t\t///</summary>\n\t\tmany_small_asteroids,\n\t\t///<summary>\n\t\t///rus_attack\n\t\t///</summary>\n\t\trus_attack,\n\t\t///<summary>\n\t\t///small2_asteroids\n\t\t///</summary>\n\t\tsmall2_asteroids,\n\t\t///<summary>\n\t\t///small3_asteroids\n\t\t///</summary>\n\t\tsmall3_asteroids,\n\t\t///<summary>\n\t\t///Tarja and Valentin are staying in the cargo bay\n\t\t///</summary>\n\t\tTarjaAndValentinStaying,\n\t\t///<summary>\n\t\t///[TEAM] \n\t\t///</summary>\n\t\tMPChatTeamMessagePrefix,\n\t\t///<summary>\n\t\t///You can’t interact with {0} because it’s accessed by another player\n\t\t///</summary>\n\t\tNotificationYouCantExamine,\n\t\t///<summary>\n\t\t///Press {0}/{1} to switch between turrets\n\t\t///</summary>\n\t\tSwitchInHUBTurrets,\n\t\t///<summary>\n\t\t///Press {0}/{1} to switch between cameras\n\t\t///</summary>\n\t\tSwitchInHUBCameras,\n\t\t///<summary>\n\t\t///Press Enter to return to the last checkpoint\n\t\t///</summary>\n\t\tGameOverInstructionsPart2,\n\t\t///<summary>\n\t\t///Military Base Asteroid\n\t\t///</summary>\n\t\tmilitary_baseAsteroid,\n\t\t///<summary>\n\t\t///MotherShip Facility Asteroid\n\t\t///</summary>\n\t\tmothership_facilityAsteroid,\n\t\t///<summary>\n\t\t///Research Vessel Asteroid\n\t\t///</summary>\n\t\tresearch_vesselAsteroid,\n\t\t///<summary>\n\t\t///Russian Warehouse Asteroid\n\t\t///</summary>\n\t\tRussianWarehouseAsteroid,\n\t\t///<summary>\n\t\t///Slaver base asteroid\n\t\t///</summary>\n\t\tslaver_baseAsteroid,\n\t\t///<summary>\n\t\t///reef_ast\n\t\t///</summary>\n\t\treef_ast,\n\t\t///<summary>\n\t\t///{0} wants to join.\n\t\t///</summary>\n\t\tJoinRequest,\n\t\t///<summary>\n\t\t///Remember\n\t\t///</summary>\n\t\tRemember,\n\t\t///<summary>\n\t\t///Join request\n\t\t///</summary>\n\t\tJoinRequestTitle,\n\t\t///<summary>\n\t\t///Show text info\n\t\t///</summary>\n\t\tLabelEnableTextsDrawing,\n\t\t///<summary>\n\t\t///Closed\n\t\t///</summary>\n\t\tJoinModeClosed,\n\t\t///<summary>\n\t\t///Game runs in coop mode.\n\t\t///</summary>\n\t\tJoinModeStateOpen,\n\t\t///<summary>\n\t\t///Open\n\t\t///</summary>\n\t\tJoinModeOpen,\n\t\t///<summary>\n\t\t///hopebase512\n\t\t///</summary>\n\t\thopebase512,\n\t\t///<summary>\n\t\t///hopefood128\n\t\t///</summary>\n\t\thopefood128,\n\t\t///<summary>\n\t\t///hopevault128\n\t\t///</summary>\n\t\thopevault128,\n\t\t///<summary>\n\t\t///Host has shut down the game, you will be returned to the main menu\n\t\t///</summary>\n\t\tMP_HostDisconnected,\n\t\t///<summary>\n\t\t///Game has shut down\n\t\t///</summary>\n\t\tMP_HostDisconnectedCaption,\n\t\t///<summary>\n\t\t///RIFT–SION OPERATOR\n\t\t///</summary>\n\t\tActor_Rift_Operator,\n\t\t///<summary>\n\t\t///Tourist office\n\t\t///</summary>\n\t\tActor_Rift_Tourist,\n\t\t///<summary>\n\t\t///Invalid faction\n\t\t///</summary>\n\t\tInvalidFaction,\n\t\t///<summary>\n\t\t///Please select a valid faction (other than ‘None’)\n\t\t///</summary>\n\t\tPleaseSelectValidFaction,\n\t\t///<summary>\n\t\t///DEATHS\n\t\t///</summary>\n\t\tScoreDeaths,\n\t\t///<summary>\n\t\t///KILLS\n\t\t///</summary>\n\t\tScoreKills,\n\t\t///<summary>\n\t\t///NAME\n\t\t///</summary>\n\t\tScoreName,\n\t\t///<summary>\n\t\t///PING\n\t\t///</summary>\n\t\tScorePing,\n\t\t///<summary>\n\t\t///This item cannot be traded!\n\t\t///</summary>\n\t\tNotificationNonTradeableItem,\n\t\t///<summary>\n\t\t///Boarding in progress\n\t\t///</summary>\n\t\tBoardingInProgress,\n\t\t///<summary>\n\t\t///Hold {0} to board the ship\n\t\t///</summary>\n\t\tPressToBoardShip,\n\t\t///<summary>\n\t\t///Chinese_Transmitter_Asteroid\n\t\t///</summary>\n\t\tChinese_Transmitter_Asteroid,\n\t\t///<summary>\n\t\t///New_Jerusalem_Asteroid\n\t\t///</summary>\n\t\tNew_Jerusalem_Asteroid,\n\t\t///<summary>\n\t\t///Slaver_Base_2_Asteroid\n\t\t///</summary>\n\t\tSlaver_Base_2_Asteroid,\n\t\t///<summary>\n\t\t///Small_Pirate_Base_2_Asteroid\n\t\t///</summary>\n\t\tSmall_Pirate_Base_2_Asteroid,\n\t\t///<summary>\n\t\t///Small_Pirate_Base_Asteroid\n\t\t///</summary>\n\t\tSmall_Pirate_Base_Asteroid,\n\t\t///<summary>\n\t\t///Solar_Factory_EAC_Asteroid\n\t\t///</summary>\n\t\tSolar_Factory_EAC_Asteroid,\n\t\t///<summary>\n\t\t///Buy for \n\t\t///</summary>\n\t\tBuyFor,\n\t\t///<summary>\n\t\t///Sell for \n\t\t///</summary>\n\t\tSellFor,\n\t\t///<summary>\n\t\t///Wait for host\n\t\t///</summary>\n\t\tGameOverInstructionsPart2MP,\n\t\t///<summary>\n\t\t///Game runs in singleplayer mode.\n\t\t///</summary>\n\t\tJoinModeStateClosed,\n\t\t///<summary>\n\t\t///CIWS\n\t\t///</summary>\n\t\tWeaponCIWS,\n\t\t///<summary>\n\t\t///Door\n\t\t///</summary>\n\t\tDoor,\n\t\t///<summary>\n\t\t///Free-roaming\n\t\t///</summary>\n\t\tFreeRoaming,\n\t\t///<summary>\n\t\t///{0} was killed\n\t\t///</summary>\n\t\tMP_XKilled,\n\t\t///<summary>\n\t\t///You have been killed\n\t\t///</summary>\n\t\tMP_YouHaveBeenKilled,\n\t\t///<summary>\n\t\t///You have killed yourself\n\t\t///</summary>\n\t\tMP_YouHaveKilledYourself,\n\t\t///<summary>\n\t\t///Placement\n\t\t///</summary>\n\t\tPlacement,\n\t\t///<summary>\n\t\t///p511_a17_billboard_portrait_1\n\t\t///</summary>\n\t\tp511_a17_billboard_portrait_1,\n\t\t///<summary>\n\t\t///Small cargo box for items dropped from inventory\n\t\t///</summary>\n\t\tCargoBoxDroppedItems,\n\t\t///<summary>\n\t\t///Mines_Asteroid\n\t\t///</summary>\n\t\tMines_Asteroid,\n\t\t///<summary>\n\t\t///Small_Pirate_Base_3_1\n\t\t///</summary>\n\t\tSmall_Pirate_Base_3_1,\n\t\t///<summary>\n\t\t///Small_Pirate_Base_3_2\n\t\t///</summary>\n\t\tSmall_Pirate_Base_3_2,\n\t\t///<summary>\n\t\t///Small_Pirate_Base_3_3\n\t\t///</summary>\n\t\tSmall_Pirate_Base_3_3,\n\t\t///<summary>\n\t\t///Voxel_Arena_Tunnels\n\t\t///</summary>\n\t\tVoxel_Arena_Tunnels,\n\t\t///<summary>\n\t\t///madeline_mothership_sound\n\t\t///</summary>\n\t\tmadeline_mothership_sound,\n\t\t///<summary>\n\t\t///mothership_sound\n\t\t///</summary>\n\t\tmothership_sound,\n\t\t///<summary>\n\t\t///Deploying in progress\n\t\t///</summary>\n\t\tDeployingInProgress,\n\t\t///<summary>\n\t\t///Probe placement\n\t\t///</summary>\n\t\tProbePlacement,\n\t\t///<summary>\n\t\t///Detector placement\n\t\t///</summary>\n\t\tDetectorPlacement,\n\t\t///<summary>\n\t\t///No oxygen\n\t\t///</summary>\n\t\tNotificationNoOxygen,\n\t\t///<summary>\n\t\t///Female\n\t\t///</summary>\n\t\tFemale,\n\t\t///<summary>\n\t\t///Male\n\t\t///</summary>\n\t\tMale,\n\t\t///<summary>\n\t\t///Affiliate URL unique clicks:\n\t\t///</summary>\n\t\tInfoAffClick,\n\t\t///<summary>\n\t\t///Affiliate URL registrations:\n\t\t///</summary>\n\t\tInfoAffReg,\n\t\t///<summary>\n\t\t///Contributions:\n\t\t///</summary>\n\t\tInfoContributions,\n\t\t///<summary>\n\t\t///Description:\n\t\t///</summary>\n\t\tInfoDescription,\n\t\t///<summary>\n\t\t///Forum posts:\n\t\t///</summary>\n\t\tInfoForumPosts,\n\t\t///<summary>\n\t\t///Last game log in:\n\t\t///</summary>\n\t\tInfoGameLogin,\n\t\t///<summary>\n\t\t///Qualification points:\n\t\t///</summary>\n\t\tInfoQualificationPoints,\n\t\t///<summary>\n\t\t///Registered: \n\t\t///</summary>\n\t\tInfoRegistered,\n\t\t///<summary>\n\t\t///Last website log in:\n\t\t///</summary>\n\t\tInfoWebLogin,\n\t\t///<summary>\n\t\t///{0} / {1}\n\t\t///</summary>\n\t\tInventoryCapacityLabel,\n\t\t///<summary>\n\t\t///Host is loading the sector. Please wait.\n\t\t///</summary>\n\t\tNotificationHostLoadingSector,\n\t\t///<summary>\n\t\t///Disconnect?\n\t\t///</summary>\n\t\tDisconnectQuestion,\n\t\t///<summary>\n\t\t///Do you want to disconnect from game?\n\t\t///</summary>\n\t\tDoYouWantToDisconnect,\n\t\t///<summary>\n\t\t///EAC Survey Smaller\n\t\t///</summary>\n\t\tEACSurvaySmaller_256_256_256,\n\t\t///<summary>\n\t\t///EAC Survey bigger\n\t\t///</summary>\n\t\tEACSurveyBigger_512_256_256,\n\t\t///<summary>\n\t\t///Laika Asteroid 1\n\t\t///</summary>\n\t\tLaika1_128_128_128,\n\t\t///<summary>\n\t\t///Laika Asteroid 2\n\t\t///</summary>\n\t\tLaika2_64_64_64,\n\t\t///<summary>\n\t\t///Laika Asteroid3\n\t\t///</summary>\n\t\tLaika3_64_64_64,\n\t\t///<summary>\n\t\t///Laika Asteroid 4\n\t\t///</summary>\n\t\tLaika4_256_128_128,\n\t\t///<summary>\n\t\t///Laika Asteroid 5\n\t\t///</summary>\n\t\tLaika5_128_128_128,\n\t\t///<summary>\n\t\t///Laika Asteroid 6\n\t\t///</summary>\n\t\tLaika6_64_64_64,\n\t\t///<summary>\n\t\t///Laika Asteroid 7\n\t\t///</summary>\n\t\tLaika7_64_64_64,\n\t\t///<summary>\n\t\t///Laika Asteroid 8\n\t\t///</summary>\n\t\tLaika8_128_128_128,\n\t\t///<summary>\n\t\t///Laika Asteroid 9\n\t\t///</summary>\n\t\tLaika9_128_128_128,\n\t\t///<summary>\n\t\t///Novaja_Zemlja\n\t\t///</summary>\n\t\tNovaja_Zemlja,\n\t\t///<summary>\n\t\t///Sht_Reich_JE_ForTheFuture\n\t\t///</summary>\n\t\tSht_Reich_JE_ForTheFuture,\n\t\t///<summary>\n\t\t///Sht_Reich_JE_Vanquish\n\t\t///</summary>\n\t\tSht_Reich_JE_Vanquish,\n\t\t///<summary>\n\t\t///Sht_Reich_JE_WeControl\n\t\t///</summary>\n\t\tSht_Reich_JE_WeControl,\n\t\t///<summary>\n\t\t///Sht_Reich_JE_YouAreTheWeakLink\n\t\t///</summary>\n\t\tSht_Reich_JE_YouAreTheWeakLink,\n\t\t///<summary>\n\t\t///Sht_Reich_JE_YourFinalDay\n\t\t///</summary>\n\t\tSht_Reich_JE_YourFinalDay,\n\t\t///<summary>\n\t\t///Fourth Reich pilot\n\t\t///</summary>\n\t\tShouterReichJE,\n\t\t///<summary>\n\t\t///Russian transmitter\n\t\t///</summary>\n\t\tRUSSIAN_TRANSMITTER,\n\t\t///<summary>\n\t\t///Enter the outpost, sabotage electricity and place a device on the transmitter. \n\t\t///</summary>\n\t\tRUSSIAN_TRANSMITTER_Description,\n\t\t///<summary>\n\t\t///Chinese officer\n\t\t///</summary>\n\t\tChineseOfficer,\n\t\t///<summary>\n\t\t///Russian pilot\n\t\t///</summary>\n\t\tShouterRussianJE,\n\t\t///<summary>\n\t\t///Rec – Headquarters\n\t\t///</summary>\n\t\tActor_RussianGeneral_Headquarters,\n\t\t///<summary>\n\t\t///Rec – General\n\t\t///</summary>\n\t\tActor_RussianGeneral_Recording,\n\t\t///<summary>\n\t\t///Volodia\n\t\t///</summary>\n\t\tVolodia,\n\t\t///<summary>\n\t\t///Stranger\n\t\t///</summary>\n\t\tVolodiaStranger,\n\t\t///<summary>\n\t\t///Slaver base captain\n\t\t///</summary>\n\t\tSlaverBaseCaptain,\n\t\t///<summary>\n\t\t///Find entity by ID\n\t\t///</summary>\n\t\tFindEntityByID,\n\t\t///<summary>\n\t\t///Wrong number format\n\t\t///</summary>\n\t\tWrongNumberFormat,\n\t\t///<summary>\n\t\t///Find\n\t\t///</summary>\n\t\tFind,\n\t\t///<summary>\n\t\t///Prison cell\n\t\t///</summary>\n\t\tPrisonCell,\n\t\t///<summary>\n\t\t///Unlocking in progress\n\t\t///</summary>\n\t\tUnlockingInProgress,\n\t\t///<summary>\n\t\t///Are you sure you want to return to the last checkpoint?\n\t\t///</summary>\n\t\tMessageAreYouSureYouWantLoadCheckpoint,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tNull,\n\t\t///<summary>\n\t\t///Return back to Madelyn\n\t\t///</summary>\n\t\tRUSSIAN_TRANSMITTER_BACK_TO_MADELYN,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tRUSSIAN_TRANSMITTER_BACK_TO_MADELYN_Description,\n\t\t///<summary>\n\t\t///Fly back to the transmitter\n\t\t///</summary>\n\t\tRUSSIAN_TRANSMITTER_BACK_TO_TRANSMITTER,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tRUSSIAN_TRANSMITTER_BACK_TO_TRANSMITTER_Description,\n\t\t///<summary>\n\t\t///Hack the hub to decrypt the frequency\n\t\t///</summary>\n\t\tRUSSIAN_TRANSMITTER_DECRYPT_FREQUENCY,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tRUSSIAN_TRANSMITTER_DECRYPT_FREQUENCY_Description,\n\t\t///<summary>\n\t\t///Enter the base\n\t\t///</summary>\n\t\tRUSSIAN_TRANSMITTER_ENTER_THE_BASE,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tRUSSIAN_TRANSMITTER_ENTER_THE_BASE_Description,\n\t\t///<summary>\n\t\t///Fight the Russian commando\n\t\t///</summary>\n\t\tRUSSIAN_TRANSMITTER_FIGHT_RUSSIAN_COMMANDO,\n\t\t///<summary>\n\t\t///Try not to die. \n\t\t///</summary>\n\t\tRUSSIAN_TRANSMITTER_FIGHT_RUSSIAN_COMMANDO_Description,\n\t\t///<summary>\n\t\t///Find out the transmission frequency\n\t\t///</summary>\n\t\tRUSSIAN_TRANSMITTER_FIND_FREQUENCY,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tRUSSIAN_TRANSMITTER_FIND_FREQUENCY_Description,\n\t\t///<summary>\n\t\t///Find the main room entrance\n\t\t///</summary>\n\t\tRUSSIAN_TRANSMITTER_FIND_MAIN_ROOM_ENTRANCE,\n\t\t///<summary>\n\t\t///The transmitter is supposedly there. \n\t\t///</summary>\n\t\tRUSSIAN_TRANSMITTER_FIND_MAIN_ROOM_ENTRANCE_Description,\n\t\t///<summary>\n\t\t///Meet the stranger\n\t\t///</summary>\n\t\tRUSSIAN_TRANSMITTER_MEET_STRANGER,\n\t\t///<summary>\n\t\t///Answer the strangers’ call and find him. \n\t\t///</summary>\n\t\tRUSSIAN_TRANSMITTER_MEET_STRANGER_Description,\n\t\t///<summary>\n\t\t///Use the hub to open doors\n\t\t///</summary>\n\t\tRUSSIAN_TRANSMITTER_OPEN_DOORS,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tRUSSIAN_TRANSMITTER_OPEN_DOORS_Description,\n\t\t///<summary>\n\t\t///Place the device on the transmitter\n\t\t///</summary>\n\t\tRUSSIAN_TRANSMITTER_PLACE_DEVICE_ON_TRANSMITTER,\n\t\t///<summary>\n\t\t///Start the broadcast of your triangulation signal. \n\t\t///</summary>\n\t\tRUSSIAN_TRANSMITTER_PLACE_DEVICE_ON_TRANSMITTER_Description,\n\t\t///<summary>\n\t\t///Reach the side entrance\n\t\t///</summary>\n\t\tRUSSIAN_TRANSMITTER_REACH_SIDE_ENTRANCE,\n\t\t///<summary>\n\t\t///Reach side entrance – there are too many turrets at the transmitter! \n\t\t///</summary>\n\t\tRUSSIAN_TRANSMITTER_REACH_SIDE_ENTRANCE_Description,\n\t\t///<summary>\n\t\t///Reach the warehouse\n\t\t///</summary>\n\t\tRUSSIAN_TRANSMITTER_REACH_WAREHOUSE,\n\t\t///<summary>\n\t\t///Reach the Russian military warehouse. \n\t\t///</summary>\n\t\tRUSSIAN_TRANSMITTER_REACH_WAREHOUSE_Description,\n\t\t///<summary>\n\t\t///Steal the military supplies\n\t\t///</summary>\n\t\tRUSSIAN_TRANSMITTER_STEAL_MILITARY_SUPPLY,\n\t\t///<summary>\n\t\t///Steal supplies from the warehouse. \n\t\t///</summary>\n\t\tRUSSIAN_TRANSMITTER_STEAL_MILITARY_SUPPLY_Description,\n\t\t///<summary>\n\t\t///Trade with Volodia\n\t\t///</summary>\n\t\tRUSSIAN_TRANSMITTER_TRADE_WITH_VOLODIA,\n\t\t///<summary>\n\t\t///Take the military supplies back to Volodia. He’s inside the solar powerplant mothership.\n\t\t///</summary>\n\t\tRUSSIAN_TRANSMITTER_TRADE_WITH_VOLODIA_Description,\n\t\t///<summary>\n\t\t///Upload triangulation data\n\t\t///</summary>\n\t\tRUSSIAN_TRANSMITTER_UPLOAD_DATA,\n\t\t///<summary>\n\t\t///Prepare for the broadcast.\n\t\t///</summary>\n\t\tRUSSIAN_TRANSMITTER_UPLOAD_DATA_Description,\n\t\t///<summary>\n\t\t///Blondi\n\t\t///</summary>\n\t\tBlondi,\n\t\t///<summary>\n\t\t///Raider\n\t\t///</summary>\n\t\tRaider,\n\t\t///<summary>\n\t\t///Captain Cedric\n\t\t///</summary>\n\t\tCedric,\n\t\t///<summary>\n\t\t///Gatekeeper\n\t\t///</summary>\n\t\tGateKeeper,\n\t\t///<summary>\n\t\t///Slaver leader\n\t\t///</summary>\n\t\tSlaverLeader,\n\t\t///<summary>\n\t\t///Captive\n\t\t///</summary>\n\t\tCaptive,\n\t\t///<summary>\n\t\t///Captive pilot\n\t\t///</summary>\n\t\tCaptivePilot,\n\t\t///<summary>\n\t\t///Radiation critical\n\t\t///</summary>\n\t\tNotificationRadiationCritical,\n\t\t///<summary>\n\t\t///Walther von Stauffenberg\n\t\t///</summary>\n\t\tWaltherStaufenberg,\n\t\t///<summary>\n\t\t///Erhard\n\t\t///</summary>\n\t\tErhard,\n\t\t///<summary>\n\t\t///Transporter captain\n\t\t///</summary>\n\t\tTransporterCaptain,\n\t\t///<summary>\n\t\t///Fourth Reich captain\n\t\t///</summary>\n\t\tFORCaptain,\n\t\t///<summary>\n\t\t///Chinese pilot\n\t\t///</summary>\n\t\tChinesePilot,\n\t\t///<summary>\n\t\t///Raider leader\n\t\t///</summary>\n\t\tRaiderLeader,\n\t\t///<summary>\n\t\t///Raider navigator\n\t\t///</summary>\n\t\tRaiderNavigator,\n\t\t///<summary>\n\t\t///Alien artifact\n\t\t///</summary>\n\t\tALIEN_GATE,\n\t\t///<summary>\n\t\t///Grand Finale \n\t\t///</summary>\n\t\tALIEN_GATE_Description,\n\t\t///<summary>\n\t\t///Arabian border\n\t\t///</summary>\n\t\tARABIAN_BORDER,\n\t\t///<summary>\n\t\t///Help the Arabs, loot outposts \n\t\t///</summary>\n\t\tARABIAN_BORDER_Description,\n\t\t///<summary>\n\t\t///Barth’s moon\n\t\t///</summary>\n\t\tBARTHS_MOON_CONVINCE,\n\t\t///<summary>\n\t\t///Convince Thomas Barth to join your cause \n\t\t///</summary>\n\t\tBARTHS_MOON_CONVINCE_Description,\n\t\t///<summary>\n\t\t///Barth’s moon\n\t\t///</summary>\n\t\tBARTHS_MOON_PLANT,\n\t\t///<summary>\n\t\t///Plant the device \n\t\t///</summary>\n\t\tBARTHS_MOON_PLANT_Description,\n\t\t///<summary>\n\t\t///Barth’s moon\n\t\t///</summary>\n\t\tBARTHS_MOON_TRANSMITTER,\n\t\t///<summary>\n\t\t///Barth’s moon \n\t\t///</summary>\n\t\tBARTHS_MOON_TRANSMITTER_Description,\n\t\t///<summary>\n\t\t///Escape with Chinese plutonium transport\n\t\t///</summary>\n\t\tCHINESE_ESCAPE,\n\t\t///<summary>\n\t\t///Defend Madelyn’s mothership and escape with stolen cargo \n\t\t///</summary>\n\t\tCHINESE_ESCAPE_Description,\n\t\t///<summary>\n\t\t///Chinese refinery of Jingzhou\n\t\t///</summary>\n\t\tCHINESE_REFINERY,\n\t\t///<summary>\n\t\t///Sneak through the Chinese refinery and hack their systems \n\t\t///</summary>\n\t\tCHINESE_REFINERY_Description,\n\t\t///<summary>\n\t\t///PRC transmitter Yunzun\n\t\t///</summary>\n\t\tCHINESE_TRANSMITTER,\n\t\t///<summary>\n\t\t///Get to the station \n\t\t///</summary>\n\t\tCHINESE_TRANSMITTER_Description,\n\t\t///<summary>\n\t\t///Chinese mines of Changde\n\t\t///</summary>\n\t\tCHINESE_TRANSPORT,\n\t\t///<summary>\n\t\t///Destroy the transmitter and steal the chinese transport \n\t\t///</summary>\n\t\tCHINESE_TRANSPORT_Description,\n\t\t///<summary>\n\t\t///CKD mothership facility\n\t\t///</summary>\n\t\tCKD_MOTHERSHIP_FACILITY,\n\t\t///<summary>\n\t\t///CKD mothership facility \n\t\t///</summary>\n\t\tCKD_MOTHERSHIP_FACILITY_Description,\n\t\t///<summary>\n\t\t///EAC prison of Reway\n\t\t///</summary>\n\t\tEAC_PRISON,\n\t\t///<summary>\n\t\t///Rescue Marcus from the EAC prison station \n\t\t///</summary>\n\t\tEAC_PRISON_Description,\n\t\t///<summary>\n\t\t///EAC survey site New Landswick\n\t\t///</summary>\n\t\tEAC_SURVEY_SITE,\n\t\t///<summary>\n\t\t///A unknown commando of Russian special forces got into the mines. Try to escape, search for survivors and equipment and find out what is going on. Why the hell have they attacked a civilian survey site? This can’t be a random hit-and-run attack, there must be something more behind this! \n\t\t///</summary>\n\t\tEAC_SURVEY_SITE_Description,\n\t\t///<summary>\n\t\t///Fast test mission\n\t\t///</summary>\n\t\tFAST_TEST_MISSION,\n\t\t///<summary>\n\t\t///Fly through the tunnels \n\t\t///</summary>\n\t\tFAST_TEST_MISSION_Description,\n\t\t///<summary>\n\t\t///Fort Valiant I\n\t\t///</summary>\n\t\tFORT_VALIANT,\n\t\t///<summary>\n\t\t///Fort Valiant II\n\t\t///</summary>\n\t\tFORT_VALIANT_B,\n\t\t///<summary>\n\t\t///Fort Valiant II \n\t\t///</summary>\n\t\tFORT_VALIANT_B_Description,\n\t\t///<summary>\n\t\t///Fort Valiant III\n\t\t///</summary>\n\t\tFORT_VALIANT_C,\n\t\t///<summary>\n\t\t///Dungeons of Valiant \n\t\t///</summary>\n\t\tFORT_VALIANT_C_Description,\n\t\t///<summary>\n\t\t///Fort Valiant \n\t\t///</summary>\n\t\tFORT_VALIANT_Description,\n\t\t///<summary>\n\t\t///Hippie outpost\n\t\t///</summary>\n\t\tHIPPIE_OUTPOST,\n\t\t///<summary>\n\t\t///Placate the karma spoilers! \n\t\t///</summary>\n\t\tHIPPIE_OUTPOST_Description,\n\t\t///<summary>\n\t\t///Hub Showcase\n\t\t///</summary>\n\t\tHUB_SHOWCASE,\n\t\t///<summary>\n\t\t///Showcase of hubs, security elements and such \n\t\t///</summary>\n\t\tHUB_SHOWCASE_Description,\n\t\t///<summary>\n\t\t///Junkyard\n\t\t///</summary>\n\t\tJUNKYARD_CONVINCE,\n\t\t///<summary>\n\t\t///Convince the smuggler to join your cause \n\t\t///</summary>\n\t\tJUNKYARD_CONVINCE_Description,\n\t\t///<summary>\n\t\t///Junkyard / EAC Ambush\n\t\t///</summary>\n\t\tJUNKYARD_EAC_AMBUSH,\n\t\t///<summary>\n\t\t///Go back to Manjeet for plutonium power cells \n\t\t///</summary>\n\t\tJUNKYARD_EAC_AMBUSH_Description,\n\t\t///<summary>\n\t\t///Junkyard\n\t\t///</summary>\n\t\tJUNKYARD_RETURN,\n\t\t///<summary>\n\t\t///Return to Manjeet with the stolen cargo ship \n\t\t///</summary>\n\t\tJUNKYARD_RETURN_Description,\n\t\t///<summary>\n\t\t///Trade station Laika\n\t\t///</summary>\n\t\tLAIKA,\n\t\t///<summary>\n\t\t///Investigate the Russian trade station \n\t\t///</summary>\n\t\tLAIKA_Description,\n\t\t///<summary>\n\t\t///Christian colony Last Hope\n\t\t///</summary>\n\t\tLAST_HOPE,\n\t\t///<summary>\n\t\t///Follow a distress call from a remote Christian base \n\t\t///</summary>\n\t\tLAST_HOPE_Description,\n\t\t///<summary>\n\t\t///Intro mission\n\t\t///</summary>\n\t\tM01_Intro,\n\t\t///<summary>\n\t\t///Welcome to our mining company! You will learn how to mine and sell ore and, of course, how to defend yourself in this dangerous sector.\n\t\t///</summary>\n\t\tM01_Intro_Description,\n\t\t///<summary>\n\t\t///Military outpost\n\t\t///</summary>\n\t\tMILITARY_OUTPOSMILITARY_OUTPOST,\n\t\t///<summary>\n\t\t///Military outpost\n\t\t///</summary>\n\t\tMILITARY_OUTPOST,\n\t\t///<summary>\n\t\t///Conquer the outposts. \n\t\t///</summary>\n\t\tMILITARY_OUTPOST_Description,\n\t\t///<summary>\n\t\t///White Wolves bio research lab\n\t\t///</summary>\n\t\tNAZI_BIO_LAB,\n\t\t///<summary>\n\t\t///Download the blueprints from the biological research facility. \n\t\t///</summary>\n\t\tNAZI_BIO_LAB_Description,\n\t\t///<summary>\n\t\t///New Jerusalem\n\t\t///</summary>\n\t\tNEW_JERUSALEM_MISSION,\n\t\t///<summary>\n\t\t///New Jerusalem \n\t\t///</summary>\n\t\tNEW_JERUSALEM_MISSION_Description,\n\t\t///<summary>\n\t\t///New Nanjing\n\t\t///</summary>\n\t\tNEW_NANJING,\n\t\t///<summary>\n\t\t///Conquer the outposts \n\t\t///</summary>\n\t\tNEW_NANJING_Description,\n\t\t///<summary>\n\t\t///New Singapore industry\n\t\t///</summary>\n\t\tNEW_SINGAPOUR,\n\t\t///<summary>\n\t\t///New Singapore industry \n\t\t///</summary>\n\t\tNEW_SINGAPOUR_Description,\n\t\t///<summary>\n\t\t///First mission\n\t\t///</summary>\n\t\tNEW_STORY_M001,\n\t\t///<summary>\n\t\t///Protect yourself and your spaceship! \n\t\t///</summary>\n\t\tNEW_STORY_M001_Description,\n\t\t///<summary>\n\t\t///Learn how to build prefabs\n\t\t///</summary>\n\t\tNEW_STORY_M002_ADDITIONAL_MISSION,\n\t\t///<summary>\n\t\t///Travel to the marked sector and buy a new Foudation Factory. Use your mothership to travel through the Solar system. Travel back and deploy the Foundation Factory to the marked location. \n\t\t///</summary>\n\t\tNEW_STORY_M002_ADDITIONAL_MISSION_Description,\n\t\t///<summary>\n\t\t///Destroy the space station\n\t\t///</summary>\n\t\tNEW_STORY_M003,\n\t\t///<summary>\n\t\t///Chinese space station Xiamen prevents our mothership from reaching this sector. Destroy the station to call in your mothership! - Find the entrance and get inside the station! - Find the generator! - Destroy the generator - Get out as fast as possible! \n\t\t///</summary>\n\t\tNEW_STORY_M003_Description,\n\t\t///<summary>\n\t\t///Pirate base at Damien dust field\n\t\t///</summary>\n\t\tPIRATE_BASE,\n\t\t///<summary>\n\t\t///Small pirate base\n\t\t///</summary>\n\t\tPIRATE_BASE_1,\n\t\t///<summary>\n\t\t///Destroy the station \n\t\t///</summary>\n\t\tPIRATE_BASE_1_Description,\n\t\t///<summary>\n\t\t///Make contact with the pirates and get more information about the unknown artifact. \n\t\t///</summary>\n\t\tPIRATE_BASE_Description,\n\t\t///<summary>\n\t\t///Reichstag I\n\t\t///</summary>\n\t\tREICHSTAG_A,\n\t\t///<summary>\n\t\t///Meet FOR representatives in Reichstag \n\t\t///</summary>\n\t\tREICHSTAG_A_Description,\n\t\t///<summary>\n\t\t///Reichstag II\n\t\t///</summary>\n\t\tREICHSTAG_C,\n\t\t///<summary>\n\t\t///Meet FOR representatives in Reichstag \n\t\t///</summary>\n\t\tREICHSTAG_C_Description,\n\t\t///<summary>\n\t\t///Research vessel Eurydice\n\t\t///</summary>\n\t\tRESEARCH_VESSEL,\n\t\t///<summary>\n\t\t///Acquire four probe parts \n\t\t///</summary>\n\t\tRESEARCH_VESSEL_Description,\n\t\t///<summary>\n\t\t///The Rift\n\t\t///</summary>\n\t\tRIFT,\n\t\t///<summary>\n\t\t///A place between hell and nowhere, which once used to be one of the most prominent OmniCorp mining sites. Giant surface mines cracked the main asteroid with ore deposit in halves and radiation and heavy solar activity is finishing the job over the years. A small OC experimental lab is nearby, with sunshields and hi-tech equipment for the small crew on-board to survive. \n\t\t///</summary>\n\t\tRIFT_Description,\n\t\t///<summary>\n\t\t///Rime\n\t\t///</summary>\n\t\tRIME_CONVINCE,\n\t\t///<summary>\n\t\t///Speak with Francis Reef and convince him to help you \n\t\t///</summary>\n\t\tRIME_CONVINCE_Description,\n\t\t///<summary>\n\t\t///Russian warehouse Bratsk\n\t\t///</summary>\n\t\tRUSSIAN_WAREHOUSE,\n\t\t///<summary>\n\t\t///Grab a long-range transmitter from the warehouse. \n\t\t///</summary>\n\t\tRUSSIAN_WAREHOUSE_Description,\n\t\t///<summary>\n\t\t///Kill the target \n\t\t///</summary>\n\t\tSIDE_MISSION_01_ASSASSINATION_Description,\n\t\t///<summary>\n\t\t///Slaver base Grand Burrow\n\t\t///</summary>\n\t\tSLAVER_BASE_GRAND_BURROW,\n\t\t///<summary>\n\t\t///Eliminate the slaver air defense, destroy the power generator, free the slaves and take them to the transport. \n\t\t///</summary>\n\t\tSLAVER_BASE_GRAND_BURROW_Description,\n\t\t///<summary>\n\t\t///Slaver base Delta Earnings\n\t\t///</summary>\n\t\tSLAVER_BASE_DELTA_EARNINGS,\n\t\t///<summary>\n\t\t///Slaver base Delta Earnings\n\t\t///</summary>\n\t\tSLAVER_BASE_DELTA_EARNINGS_Description,\n\t\t///<summary>\n\t\t///Small Pirate Base 2\n\t\t///</summary>\n\t\tSMALL_PIRATE_BASE_2,\n\t\t///<summary>\n\t\t///Destroy the station \n\t\t///</summary>\n\t\tSMALL_PIRATE_BASE_2_Description,\n\t\t///<summary>\n\t\t///Smart waves test mission\n\t\t///</summary>\n\t\tSMART_WAVES_TEST_MISSION,\n\t\t///<summary>\n\t\t///Testing mission for smart waves, 4 bots are always attacking, never spawns near to player \n\t\t///</summary>\n\t\tSMART_WAVES_TEST_MISSION_Description,\n\t\t///<summary>\n\t\t///Chinese solar plant\n\t\t///</summary>\n\t\tSOLAR_PLANT_CHINA,\n\t\t///<summary>\n\t\t///The Chinese solar plant must be destroyed. \n\t\t///</summary>\n\t\tSOLAR_PLANT_CHINA_Description,\n\t\t///<summary>\n\t\t///Solar factory – EAC\n\t\t///</summary>\n\t\tSOLAR_PLANT_EAC,\n\t\t///<summary>\n\t\t///Trade station China\n\t\t///</summary>\n\t\tTRADE_STATION_CHINA,\n\t\t///<summary>\n\t\t///Trade station China \n\t\t///</summary>\n\t\tTRADE_STATION_CHINA_Description,\n\t\t///<summary>\n\t\t///Trade station – EAC\n\t\t///</summary>\n\t\tTRADE_STATION_EAC,\n\t\t///<summary>\n\t\t///Doppelburg\n\t\t///</summary>\n\t\tTWIN_TOWERS,\n\t\t///<summary>\n\t\t///Help Fourth Reich regain their base from the White Wolves. \n\t\t///</summary>\n\t\tTWIN_TOWERS_Description,\n\t\t///<summary>\n\t\t///Plutonium mine\n\t\t///</summary>\n\t\tURANITE_MINE,\n\t\t///<summary>\n\t\t///Clear the mine, harvest plutonium ore. \n\t\t///</summary>\n\t\tURANITE_MINE_Description,\n\t\t///<summary>\n\t\t///Chinese commando\n\t\t///</summary>\n\t\tChineseCommando,\n\t\t///<summary>\n\t\t///Check the secured cargo\n\t\t///</summary>\n\t\tRESEARCH_VESSEL_CHECK_CARGO,\n\t\t///<summary>\n\t\t///Check the door\n\t\t///</summary>\n\t\tRESEARCH_VESSEL_CHECK_CARGO_AGAIN,\n\t\t///<summary>\n\t\t/// \n\t\t///</summary>\n\t\tRESEARCH_VESSEL_CHECK_CARGO_AGAIN_Description,\n\t\t///<summary>\n\t\t///The first component should be there. \n\t\t///</summary>\n\t\tRESEARCH_VESSEL_CHECK_CARGO_Description,\n\t\t///<summary>\n\t\t///It’s locked, check the command room\n\t\t///</summary>\n\t\tRESEARCH_VESSEL_CHECK_COMMAND_ROOM,\n\t\t///<summary>\n\t\t/// \n\t\t///</summary>\n\t\tRESEARCH_VESSEL_CHECK_COMMAND_ROOM_Description,\n\t\t///<summary>\n\t\t///Check the drill room\n\t\t///</summary>\n\t\tRESEARCH_VESSEL_CHECK_DRILL_ROOM,\n\t\t///<summary>\n\t\t/// \n\t\t///</summary>\n\t\tRESEARCH_VESSEL_CHECK_DRILL_ROOM_Description,\n\t\t///<summary>\n\t\t///Check the first hangar\n\t\t///</summary>\n\t\tRESEARCH_VESSEL_CHECK_FIRST_HANGAR,\n\t\t///<summary>\n\t\t/// \n\t\t///</summary>\n\t\tRESEARCH_VESSEL_CHECK_FIRST_HANGAR_Description,\n\t\t///<summary>\n\t\t///Check the generator room\n\t\t///</summary>\n\t\tRESEARCH_VESSEL_CHECK_GENERATOR,\n\t\t///<summary>\n\t\t/// \n\t\t///</summary>\n\t\tRESEARCH_VESSEL_CHECK_GENERATOR_Description,\n\t\t///<summary>\n\t\t///Check the laboratory\n\t\t///</summary>\n\t\tRESEARCH_VESSEL_CHECK_LABORATORY,\n\t\t///<summary>\n\t\t/// \n\t\t///</summary>\n\t\tRESEARCH_VESSEL_CHECK_LABORATORY_Description,\n\t\t///<summary>\n\t\t///Check the second hangar\n\t\t///</summary>\n\t\tRESEARCH_VESSEL_CHECK_SECOND_HANGAR,\n\t\t///<summary>\n\t\t/// \n\t\t///</summary>\n\t\tRESEARCH_VESSEL_CHECK_SECOND_HANGAR_Description,\n\t\t///<summary>\n\t\t///Check the second warehouse\n\t\t///</summary>\n\t\tRESEARCH_VESSEL_CHECK_SECOND_WAREHOUSE,\n\t\t///<summary>\n\t\t/// \n\t\t///</summary>\n\t\tRESEARCH_VESSEL_CHECK_SECOND_WAREHOUSE_Description,\n\t\t///<summary>\n\t\t///Check the third hangar\n\t\t///</summary>\n\t\tRESEARCH_VESSEL_CHECK_THIRD_HANGAR,\n\t\t///<summary>\n\t\t/// \n\t\t///</summary>\n\t\tRESEARCH_VESSEL_CHECK_THIRD_HANGAR_Description,\n\t\t///<summary>\n\t\t///Check the warehouse\n\t\t///</summary>\n\t\tRESEARCH_VESSEL_CHECK_WAREHOUSE,\n\t\t///<summary>\n\t\t/// \n\t\t///</summary>\n\t\tRESEARCH_VESSEL_CHECK_WAREHOUSE_Description,\n\t\t///<summary>\n\t\t///Reach the ship\n\t\t///</summary>\n\t\tRESEARCH_VESSEL_REACH_SHIP,\n\t\t///<summary>\n\t\t/// \n\t\t///</summary>\n\t\tRESEARCH_VESSEL_REACH_SHIP_Description,\n\t\t///<summary>\n\t\t///Take the first probe component\n\t\t///</summary>\n\t\tRESEARCH_VESSEL_TAKE_FIRST,\n\t\t///<summary>\n\t\t/// \n\t\t///</summary>\n\t\tRESEARCH_VESSEL_TAKE_FIRST_Description,\n\t\t///<summary>\n\t\t///Take the final probe component\n\t\t///</summary>\n\t\tRESEARCH_VESSEL_TAKE_FOURTH,\n\t\t///<summary>\n\t\t/// \n\t\t///</summary>\n\t\tRESEARCH_VESSEL_TAKE_FOURTH_Description,\n\t\t///<summary>\n\t\t///Take the second probe component\n\t\t///</summary>\n\t\tRESEARCH_VESSEL_TAKE_SECOND,\n\t\t///<summary>\n\t\t/// \n\t\t///</summary>\n\t\tRESEARCH_VESSEL_TAKE_SECOND_Description,\n\t\t///<summary>\n\t\t///Take the third probe component\n\t\t///</summary>\n\t\tRESEARCH_VESSEL_TAKE_THIRD,\n\t\t///<summary>\n\t\t/// \n\t\t///</summary>\n\t\tRESEARCH_VESSEL_TAKE_THIRD_Description,\n\t\t///<summary>\n\t\t///Use the hub to unlock secured cargo\n\t\t///</summary>\n\t\tRESEARCH_VESSEL_USE_HUB_1,\n\t\t///<summary>\n\t\t/// \n\t\t///</summary>\n\t\tRESEARCH_VESSEL_USE_HUB_1_Description,\n\t\t///<summary>\n\t\t///Use the second hub to unlock secured cargo\n\t\t///</summary>\n\t\tRESEARCH_VESSEL_USE_HUB_2,\n\t\t///<summary>\n\t\t/// \n\t\t///</summary>\n\t\tRESEARCH_VESSEL_USE_HUB_2_Description,\n\t\t///<summary>\n\t\t///Use the third hub to unlock secured cargo\n\t\t///</summary>\n\t\tRESEARCH_VESSEL_USE_HUB_3,\n\t\t///<summary>\n\t\t/// \n\t\t///</summary>\n\t\tRESEARCH_VESSEL_USE_HUB_3_Description,\n\t\t///<summary>\n\t\t///merchant\n\t\t///</summary>\n\t\tMerchant,\n\t\t///<summary>\n\t\t///Council guard\n\t\t///</summary>\n\t\tCOUNCIL_GUARD,\n\t\t///<summary>\n\t\t///Patriarch Caradoc\n\t\t///</summary>\n\t\tPATRIARCH_CARADOC,\n\t\t///<summary>\n\t\t///Patriarch Dagonet\n\t\t///</summary>\n\t\tPATRIARCH_DAGONET,\n\t\t///<summary>\n\t\t///Patriarch Lamorak\n\t\t///</summary>\n\t\tPATRIARCH_LAMORAK,\n\t\t///<summary>\n\t\t///Sir Geraint\n\t\t///</summary>\n\t\tSIR_GERAINT,\n\t\t///<summary>\n\t\t///Unknown\n\t\t///</summary>\n\t\tUNKNOWN,\n\t\t///<summary>\n\t\t///Blow up the power generator\n\t\t///</summary>\n\t\tSLAVER_BASE_2_BREAK_THE_CHAINS,\n\t\t///<summary>\n\t\t///Open the prison cell\n\t\t///</summary>\n\t\tSLAVER_BASE_2_FREE_SLAVES,\n\t\t///<summary>\n\t\t///Destroy all turrets\n\t\t///</summary>\n\t\tSLAVER_BASE_2_PARALYZE_DEFENSE,\n\t\t///<summary>\n\t\t///Paralyze the defense by destroying all turrets. \n\t\t///</summary>\n\t\tSLAVER_BASE_2_PARALYZE_DEFENSE_Description,\n\t\t///<summary>\n\t\t///Unlock prison cells in the HQ\n\t\t///</summary>\n\t\tUNLOCK_PRISON_1,\n\t\t///<summary>\n\t\t///Unlock underground cells\n\t\t///</summary>\n\t\tUNLOCK_PRISON_2,\n\t\t///<summary>\n\t\t///Playground\n\t\t///</summary>\n\t\tPLAYGROUND,\n\t\t///<summary>\n\t\t///Hold {0} to place explosives\n\t\t///</summary>\n\t\tPressToPlaceExplosive,\n\t\t///<summary>\n\t\t///Placing explosives\n\t\t///</summary>\n\t\tPlacingExplosives,\n\t\t///<summary>\n\t\t///Everyone\n\t\t///</summary>\n\t\tEveryone,\n\t\t///<summary>\n\t\t///Russian general\n\t\t///</summary>\n\t\tRussianGeneral,\n\t\t///<summary>\n\t\t///Friendly fire won’t be tolerated!\n\t\t///</summary>\n\t\tCriticalFriendlyFireDetected,\n\t\t///<summary>\n\t\t///Hold {0} to use the security key\n\t\t///</summary>\n\t\tHoldToUseSecurityKey,\n\t\t///<summary>\n\t\t///Using\n\t\t///</summary>\n\t\tUsing,\n\t\t///<summary>\n\t\t///Merchant FrontLine – MP\n\t\t///</summary>\n\t\tMPMerchantFrontLine,\n\t\t///<summary>\n\t\t///Merchant Support – MP\n\t\t///</summary>\n\t\tMPMerchantSupport,\n\t\t///<summary>\n\t\t///Marcus and Tarja are leaving the party to steal the transporter\n\t\t///</summary>\n\t\tMarucsAndTarjaAreLeavingForTransporter,\n\t\t///<summary>\n\t\t///Marcus and Tarja are leaving the party to get the other security key\n\t\t///</summary>\n\t\tMarcusAndTarjaAreLeavingForKey,\n\t\t///<summary>\n\t\t///Pirate\n\t\t///</summary>\n\t\tPirate,\n\t\t///<summary>\n\t\t///Pirate captain Clegg\n\t\t///</summary>\n\t\tPirateCaptainClegg,\n\t\t///<summary>\n\t\t///Pirate captain Gorg\n\t\t///</summary>\n\t\tPirateCaptainGorg,\n\t\t///<summary>\n\t\t///Pirate captain Vane\n\t\t///</summary>\n\t\tPirateCaptainVane,\n\t\t///<summary>\n\t\t///New Beijing – Chinese capital\n\t\t///</summary>\n\t\tCHINESE_CAPITAL,\n\t\t///<summary>\n\t\t///New Beijing – Chinese capital \n\t\t///</summary>\n\t\tCHINESE_CAPITAL_Description,\n\t\t///<summary>\n\t\t///Only the host can travel\n\t\t///</summary>\n\t\tMP_OnlyHostCanTravel,\n\t\t///<summary>\n\t\t///Cannot host game, the multiplayer server is unavailable\n\t\t///</summary>\n\t\tMP_CannotHost,\n\t\t///<summary>\n\t\t///The Euro-American experimental survey site at New Landswick. Hidden from the eyes of  the public, this facility mainly serves research purposes. Rare substances and isotopes are  utilized in laboratories to create weapon prototypes, test new drill devices, and experiment  with chemical and nuclear reactions of substances. The facility is operated by several  hundred scientists, geologists, and administrative staff.\n\t\t///</summary>\n\t\tEAC_SURVEY_SITE_SectorDescription,\n\t\t///<summary>\n\t\t///EAC SURVEY SITE NEW LANDSWICK\n\t\t///</summary>\n\t\tEAC_SURVEY_SITE_SectorName,\n\t\t///<summary>\n\t\t///The location of a supposed alien artifact, as revealed by a sophisticated triangulation  process. The triangulated signal led to this asteroid field near the Sun, an uninhabited area  with frequent solar winds and difficult survival conditions. Due to the harsh conditions,  no trade routes are reported in the area.\n\t\t///</summary>\n\t\tALIEN_GATE_SectorDescription,\n\t\t///<summary>\n\t\t///UNKNOWN SECTOR NEAR THE SUN\n\t\t///</summary>\n\t\tALIEN_GATE_SectorName,\n\t\t///<summary>\n\t\t///Located in the distant reaches of the Solar System, far beyond Jupiter’s belt, Barth’s Moon is  a small asteroid base. The hermit-scientist Thomas Barth makes his home in the solitude of its  frozen wastelands. Well off the path of all known trade routes, local traffic is generally limited to random travelers, lost merchants, and wandering pirates and raiders.\n\t\t///</summary>\n\t\tBARTHS_MOON_SectorDescription,\n\t\t///<summary>\n\t\t///BARTH’S MOON\n\t\t///</summary>\n\t\tBARTHS_MOON_SectorName,\n\t\t///<summary>\n\t\t///The Mines of Changde are a harsh and dangerous place. Set in an asteroid field rich in  plutonium ore, they host thousands of workers who labor there for their daily living.  Numerous cargo ships pass through this sector, carrying mined ore from Changde to the  refinery complex at Jingzhou.\n\t\t///</summary>\n\t\tCHINESE_MINES_SectorDescription,\n\t\t///<summary>\n\t\t///CHINESE MINES OF CHANGDE\n\t\t///</summary>\n\t\tCHINESE_MINES_SectorName,\n\t\t///<summary>\n\t\t///The plutonium refinery and processing facility at Jingzhou. A well-protected Chinese base  specializing in processing of numerous grades of plutonium. Raw ore is transported here  from the Changde and Xining sectors and refined as fuel for nuclear weapons, reactors,  pocket fuel cells, and numerous experimental and technical devices, for both military and  industrial use.\n\t\t///</summary>\n\t\tCHINESE_REFINERY_SectorDescription,\n\t\t///<summary>\n\t\t///CHINESE REFINERY OF JINGZHOU\n\t\t///</summary>\n\t\tCHINESE_REFINERY_SectorName,\n\t\t///<summary>\n\t\t///The National Chinese broadcasting array at Yunzun. The station sends and receives  long-distance communication signals from all important Chinese cities in the vicinity. These  consist of public safety messages, TV and radio broadcasts, and governmental propaganda.\n\t\t///</summary>\n\t\tCHINESE_TRANSMITTER_SectorDescription,\n\t\t///<summary>\n\t\t///CHINESE TRANSMITTER YUNZUN\n\t\t///</summary>\n\t\tCHINESE_TRANSMITTER_SectorName,\n\t\t///<summary>\n\t\t///The zeppelin construction plant at Doppelburg. Formerly a Reichist facility, it was recently  taken over by the separatist White Wolves. The station consists of two towers, each with an  autonomous security system as well as life support and other vital systems. Destruction of  either of the towers does not pose a threat to the other; the “twin tower” concept allows for  easier reconstruction and recovery of the damaged tower. Both towers are equipped with  anti-mothership railguns, rendering Doppelburg heavily protected against enemy forces.\n\t\t///</summary>\n\t\tDOPPELBURG_SectorDescription,\n\t\t///<summary>\n\t\t///DOPPELBURG\n\t\t///</summary>\n\t\tDOPPELBURG_SectorName,\n\t\t///<summary>\n\t\t///Reway: a well-guarded and almost impenetrable space station-turned-prison. Reway offers “accommodation” for hundreds of prominent political and military prisoners. The facility is known for its strict security measures and permanent protection by a considerable division of the EAC fleet.\n\t\t///</summary>\n\t\tEAC_PRISON_SectorDescription,\n\t\t///<summary>\n\t\t///EAC PRISON REWAY\n\t\t///</summary>\n\t\tEAC_PRISON_SectorName,\n\t\t///<summary>\n\t\t///A transmitter and a research facility, originally started as an adjunct to the 20th century SETI  program. The facility serves as a hub and switching station for personal, governmental,  and commercial communication, as well as a center for the scanning and analysis of radio  data from distant galaxies.\n\t\t///</summary>\n\t\tEAC_TRANSMITTER_SectorDescription,\n\t\t///<summary>\n\t\t///EAC TRANSMITTER SILVER FORESIGHT\n\t\t///</summary>\n\t\tEAC_TRANSMITTER_SectorName,\n\t\t///<summary>\n\t\t///Fort Valiant is the main hub of the renewed Templar order. Located between the territories  of The Church and EAC, the Templars offer protection to pacifist Church citizens as well  as to traders and civilians seeking sanctuary. The base is heavily protected. No attempt to take it by force is considered wise, thanks to highly advanced Templar weaponry and the  fact that most of the Templar fleet is garrisoned there.\n\t\t///</summary>\n\t\tFORT_VALIANT_SectorDescription,\n\t\t///<summary>\n\t\t///FORT VALIANT\n\t\t///</summary>\n\t\tFORT_VALIANT_SectorName,\n\t\t///<summary>\n\t\t///Duncan’s Faith, also commonly dubbed the “Junkyard” – site of a violent historic battle in 2074 between the Fourth Reich and EAC. It contains the metallic remnants of destroyed motherships and thousands of tons of waste and abandoned equipment. Because of its extensive battle damage and war debris, it has devolved into a popular destination for pirates, scavengers, smugglers and others hiding from the eyes of legal authorities.\n\t\t///</summary>\n\t\tJUNKYARD_SectorDescription,\n\t\t///<summary>\n\t\t///DUNCAN’S FAITH (JUNKYARD)\n\t\t///</summary>\n\t\tJUNKYARD_SectorName,\n\t\t///<summary>\n\t\t///The small, but widely known Russian trade station Laika. Located in the desolate outskirts  of Russian territory, Laika is by far the most politically neutral and popular station  amongst non-Russian traders, merchants, and freelancers. While the totalitarian regime  typically suppresses “uncontrolled business” with capitalist factions, Laika has its own life  and rules. Home to numerous Asian smugglers and tradesman, OmniCorp bureaus, and  even EAC shops.\n\t\t///</summary>\n\t\tLAIKA_SectorDescription,\n\t\t///<summary>\n\t\t///RUSSIAN TRADE STATION LAIKA\n\t\t///</summary>\n\t\tLAIKA_SectorName,\n\t\t///<summary>\n\t\t///Last Hope is a colony established by Christian separatists and led by the charismatic Father Tobias, who chose to secede from the political influence of the Commonwealth of the Holy Church. It is a peaceful colony with virtually no defenses, deep within an asteroid field, far from the civilized world, far from the Sun.\n\t\t///</summary>\n\t\tLAST_HOPE_SectorDescription,\n\t\t///<summary>\n\t\t///CHRISTIAN CAMP LAST HOPE\n\t\t///</summary>\n\t\tLAST_HOPE_SectorName,\n\t\t///<summary>\n\t\t///Damien Dust Field – the shattered remains of what was once known as the planet Mars. The Solar Event of 2070 destroyed that planet and reduced it to dust, shards, and ashes, as well as thousands of asteroids. Today this dense asteroid field offers spectacular visuals thanks to the dust particles that create a unique form of sunbeam refraction. No known human settlements are reported in the area, apart from illegal pirate bases and some rumored separatist and rebel colonies.\n\t\t///</summary>\n\t\tPIRATE_BASE_SectorDescription,\n\t\t///<summary>\n\t\t///DAMIEN DUST FIELD PIRATE BASE\n\t\t///</summary>\n\t\tPIRATE_BASE_SectorName,\n\t\t///<summary>\n\t\t///Reichstag – an extravagant Reichist symbol, architectural masterpiece, and capital of the  whole Fourth Reich. Reichstag accommodates hundreds of governmental buildings and  houses over one third of the FOR Space Forces. Although open to foreign merchants and  bureaus, it does not host many visitors – since most people either sympathize with the  Reich, and have joined it, or despise it and refuse to even trade with it.\n\t\t///</summary>\n\t\tREICHSTAG_SectorDescription,\n\t\t///<summary>\n\t\t///REICHSTAG\n\t\t///</summary>\n\t\tREICHSTAG_SectorName,\n\t\t///<summary>\n\t\t///OC Research vessel Eurydice, a huge scientific complex built upon an asteroid. It was later  enhanced by the addition of thrusters to allow it to relocate between research missions.  Currently deployed in Vandenberg Gas Field, Eurydice specializes in scans, probes, and  analysis of data.\n\t\t///</summary>\n\t\tRESEARCH_VESSEL_SectorDescription,\n\t\t///<summary>\n\t\t///OC RESEARCH VESSEL EURYDICE\n\t\t///</summary>\n\t\tRESEARCH_VESSEL_SectorName,\n\t\t///<summary>\n\t\t///A place described as “between hell and nowhere”, the Rift was once one of the most prominent OmniCorp mining sites. Giant surface mines cracked the main asteroid in half. Radiation and heavy solar activity have been finishing the job over the years. A small OC experimental lab sits nearby, with sunshields and hi-tech equipment to help the small on-board crew survive. The Rift is said to contain the rarest of ores, including super-efficient plutonium isotopes.\n\t\t///</summary>\n\t\tRIFT_SectorDescription,\n\t\t///<summary>\n\t\t///THE RIFT\n\t\t///</summary>\n\t\tRIFT_SectorName,\n\t\t///<summary>\n\t\t///Rime represents the heart and soul of OmniCorp, the main administrative and executive center of its corporate cluster. The station contains several research facilities, shipyards, and entertainment centers as well as most other services and facilities one would expect to find within a major city. Rime is rightfully regarded to be among the top 5 space destinations, visited daily by tens of thousands of travelers, traders, and politicians.\n\t\t///</summary>\n\t\tRIME_SectorDescription,\n\t\t///<summary>\n\t\t///RIME\n\t\t///</summary>\n\t\tRIME_SectorName,\n\t\t///<summary>\n\t\t///Tver – one of seven Russian long-distance communication arrays serving to connect  transmitters and receivers across inhabited parts of the Solar System. The station is  protected by the military; however, the garrison is rather light and symbolic because of the  station’s ease of replacement and relatively low political and military value.\n\t\t///</summary>\n\t\tRUSSIAN_TRANSMITTER_SectorDescritpion,\n\t\t///<summary>\n\t\t///RUSSIAN TRANSMITTER TVER\n\t\t///</summary>\n\t\tRUSSIAN_TRANSMITTER_SectorName,\n\t\t///<summary>\n\t\t///Not much is known about Bratsk. It is one of several generic Russian warehouses under  governmental protection. However, all known data sources describe it as an unremarkable  storage and manufacturing facility, specializing in non-military device parts: radar arrays,  transmitters, ore processing units, and housewares.\n\t\t///</summary>\n\t\tRUSSIAN_WAREHOUSE_SectorDescription,\n\t\t///<summary>\n\t\t///RUSSIAN WAREHOUSE BRATSK\n\t\t///</summary>\n\t\tRUSSIAN_WAREHOUSE_SectorName,\n\t\t///<summary>\n\t\t///Not much is publicly known about the slaver base called Delta Earnings. Several merchants  report having been ambushed by slaver forces here, as well as at other colonies and  outposts in the vicinity. Delta Earnings appears to be the home base for one of the many  existent slaver groups, each of which has a specific hierarchy of its own, as well as a  reputation for dealing in second-hand equipment.\n\t\t///</summary>\n\t\tSLAVER_BASE_1_SectorDescription,\n\t\t///<summary>\n\t\t///SLAVER BASE DELTA EARNINGS\n\t\t///</summary>\n\t\tSLAVER_BASE_1_SectorName,\n\t\t///<summary>\n\t\t///Grand Burrow is an unwelcoming place where hundreds of captives wait to be sold as  slaves to new “masters”. Many pilots choose suicide over the prospect of capture by slavers.  To be turned into a slave is considered a fate worse than death: several neural poisons as  well as cybernetic devices are implanted in the victim’s body and brain, resulting in an  inability to refuse orders – even to voluntarily terminate one’s own life.\n\t\t///</summary>\n\t\tSLAVER_BASE_2_SectorDescription,\n\t\t///<summary>\n\t\t///SLAVER BASE GRAND BURROW\n\t\t///</summary>\n\t\tSLAVER_BASE_2_SectorName,\n\t\t///<summary>\n\t\t///This bio-research facility is a common type of a R&D structure built in the late 21st century  thanks to advances in DNA alteration, genome modification, and embryonal enhancement.  Most of the research at these labs was performed on animals and even humans. Thus, the  more successful and “efficient” a biolab was, the more cruel and inhumane were its  research methods.\n\t\t///</summary>\n\t\tWHITE_WOLVES_RESEARCH_LAB_SectorDescription,\n\t\t///<summary>\n\t\t///WHITE WOLF BIO RESEARCH LAB\n\t\t///</summary>\n\t\tWHITE_WOLVES_RESEARCH_LAB_SectorName,\n\t\t///<summary>\n\t\t///Can’t connect to the multiplayer server, please check firewall settings (UDP port {0})\n\t\t///</summary>\n\t\tMP_CannotConnectServerJoin,\n\t\t///<summary>\n\t\t///Zappa’s gang member\n\t\t///</summary>\n\t\tZappasGangman,\n\t\t///<summary>\n\t\t///Momo Zappa\n\t\t///</summary>\n\t\tMomoZappa,\n\t\t///<summary>\n\t\t///Dealer\n\t\t///</summary>\n\t\tDealer,\n\t\t///<summary>\n\t\t///Gangster\n\t\t///</summary>\n\t\tGangster,\n\t\t///<summary>\n\t\t///No fuel\n\t\t///</summary>\n\t\tNotificationFuelNo,\n\t\t///<summary>\n\t\t///New Moscow – Russian capital\n\t\t///</summary>\n\t\tRUSSIAN_CAPITAL,\n\t\t///<summary>\n\t\t///New Moscow – Russian capital \n\t\t///</summary>\n\t\tRUSSIAN_CAPITAL_Description,\n\t\t///<summary>\n\t\t///New Istanbul – Arabian capital\n\t\t///</summary>\n\t\tARABIAN_CAPITAL,\n\t\t///<summary>\n\t\t///New Istanbul – Arabian capital \n\t\t///</summary>\n\t\tARABIAN_CAPITAL_Description,\n\t\t///<summary>\n\t\t///Medina 622\n\t\t///</summary>\n\t\tMEDINA_622,\n\t\t///<summary>\n\t\t///Medina 622 \n\t\t///</summary>\n\t\tMEDINA_622_Description,\n\t\t///<summary>\n\t\t///You must set the template if you want to refill the inventory!\n\t\t///</summary>\n\t\tMessageYouMustSetTemplateIfYouWantRefillInventory,\n\t\t///<summary>\n\t\t///Refill time (sec)\n\t\t///</summary>\n\t\tRefillTime,\n\t\t///<summary>\n\t\t///Cole\n\t\t///</summary>\n\t\tSlaverCole,\n\t\t///<summary>\n\t\t///Jeff\n\t\t///</summary>\n\t\tSlaverJeff,\n\t\t///<summary>\n\t\t///Illegal cargo\n\t\t///</summary>\n\t\tIllegalCargo,\n\t\t///<summary>\n\t\t///A crucial mission object was destroyed\n\t\t///</summary>\n\t\tMissionFail_RequiredObjectDestroyed,\n\t\t///<summary>\n\t\t///Duplex Bouncer\n\t\t///</summary>\n\t\tActor_RimeBouncer,\n\t\t///<summary>\n\t\t///Client\n\t\t///</summary>\n\t\tActor_RimeClient1,\n\t\t///<summary>\n\t\t///Client\n\t\t///</summary>\n\t\tActor_RimeClient2,\n\t\t///<summary>\n\t\t///Expelled client\n\t\t///</summary>\n\t\tActor_RimeClient3,\n\t\t///<summary>\n\t\t///Smuggler\n\t\t///</summary>\n\t\tActor_RimeSmuggler,\n\t\t///<summary>\n\t\t///You have lost your target\n\t\t///</summary>\n\t\tFail_LostTarget,\n\t\t///<summary>\n\t\t///You have been spotted by your target\n\t\t///</summary>\n\t\tFail_SeenByTarget,\n\t\t///<summary>\n\t\t///You have been caught by the guards\n\t\t///</summary>\n\t\tFail_CaughtByGuards,\n\t\t///<summary>\n\t\t///You have missed the window of opportunity\n\t\t///</summary>\n\t\tFail_MissedTimeWindow,\n\t\t///<summary>\n\t\t///New NYC – EAC capital\n\t\t///</summary>\n\t\tEAC_CAPITAL,\n\t\t///<summary>\n\t\t///New NYC – EAC capital \n\t\t///</summary>\n\t\tEAC_CAPITAL_Description,\n\t\t///<summary>\n\t\t///Back\n\t\t///</summary>\n\t\tWeaponUniversalLauncherBackTitle,\n\t\t///<summary>\n\t\t///Front\n\t\t///</summary>\n\t\tWeaponUniversalLauncherFrontTitle,\n\t\t///<summary>\n\t\t///Arabian Border 1 64x64x64\n\t\t///</summary>\n\t\tArabian_Border_1,\n\t\t///<summary>\n\t\t///Arabian Border 2 64x64x64\n\t\t///</summary>\n\t\tArabian_Border_2,\n\t\t///<summary>\n\t\t///Arabian Border 3 64x64x64\n\t\t///</summary>\n\t\tArabian_Border_3,\n\t\t///<summary>\n\t\t///Arabian Border 4 64x64x64\n\t\t///</summary>\n\t\tArabian_Border_4,\n\t\t///<summary>\n\t\t///Arabian Border 5 64x64x64\n\t\t///</summary>\n\t\tArabian_Border_5,\n\t\t///<summary>\n\t\t///Arabian Border 6 64x64x64\n\t\t///</summary>\n\t\tArabian_Border_6,\n\t\t///<summary>\n\t\t///Arabian Border 7 64x64x64\n\t\t///</summary>\n\t\tArabian_Border_7,\n\t\t///<summary>\n\t\t///Arabian Border Arabian 128x128x128\n\t\t///</summary>\n\t\tArabian_Border_Arabian,\n\t\t///<summary>\n\t\t///Arabian Border EAC 128x128x128\n\t\t///</summary>\n\t\tArabian_Border_EAC,\n\t\t///<summary>\n\t\t///Chinese Corridor 1 128x128x128\n\t\t///</summary>\n\t\tChinese_Corridor_1,\n\t\t///<summary>\n\t\t///Chinese Mines Side 128x128x128\n\t\t///</summary>\n\t\tChinese_Mines_Side,\n\t\t///<summary>\n\t\t///Chinese Mines Small 64x64x64\n\t\t///</summary>\n\t\tChinese_Mines_Small,\n\t\t///<summary>\n\t\t///Chinese Solar Array Bottom 64x64x64\n\t\t///</summary>\n\t\tChinese_Solar_Array_Bottom,\n\t\t///<summary>\n\t\t///Chinese Solar Array Main 256x128x256\n\t\t///</summary>\n\t\tChinese_Solar_Array_Main,\n\t\t///<summary>\n\t\t///Fortress Sanc 1 128x256x128\n\t\t///</summary>\n\t\tFortress_Sanc_1,\n\t\t///<summary>\n\t\t///Fortress Sanc 10 128x128x128\n\t\t///</summary>\n\t\tFortress_Sanc_10,\n\t\t///<summary>\n\t\t///Fortress Sanc 11 128x128x128\n\t\t///</summary>\n\t\tFortress_Sanc_11,\n\t\t///<summary>\n\t\t///Fortress Sanc 2 256x128x256\n\t\t///</summary>\n\t\tFortress_Sanc_2,\n\t\t///<summary>\n\t\t///Fortress Sanc 3 128x128x128\n\t\t///</summary>\n\t\tFortress_Sanc_3,\n\t\t///<summary>\n\t\t///Fortress Sanc 4 128s128s128\n\t\t///</summary>\n\t\tFortress_Sanc_4,\n\t\t///<summary>\n\t\t///Fortress Sanc 5 256x256x256\n\t\t///</summary>\n\t\tFortress_Sanc_5,\n\t\t///<summary>\n\t\t///Fortress Sanc 6 256x128x256\n\t\t///</summary>\n\t\tFortress_Sanc_6,\n\t\t///<summary>\n\t\t///Fortress Sanc 7 128x256x128\n\t\t///</summary>\n\t\tFortress_Sanc_7,\n\t\t///<summary>\n\t\t///Fortress Sanc 8 128x256x128\n\t\t///</summary>\n\t\tFortress_Sanc_8,\n\t\t///<summary>\n\t\t///Fortress Sanc 9 128x128x128\n\t\t///</summary>\n\t\tFortress_Sanc_9,\n\t\t///<summary>\n\t\t///Fragile Sector 256x128x256\n\t\t///</summary>\n\t\tFragile_Sector,\n\t\t///<summary>\n\t\t///Grave Skull 256x256x256\n\t\t///</summary>\n\t\tGrave_Skull,\n\t\t///<summary>\n\t\t///Hall of Fame 256x128x256\n\t\t///</summary>\n\t\tHallOfFame,\n\t\t///<summary>\n\t\t///Hippie Outpost Base 128x128x128\n\t\t///</summary>\n\t\tHippie_Outpost_Base,\n\t\t///<summary>\n\t\t///Hippie Outpost Tree 512x512x512\n\t\t///</summary>\n\t\tHippie_Outpost_Tree,\n\t\t///<summary>\n\t\t///Ice Cave Deathmatch 256x128x256\n\t\t///</summary>\n\t\tIceCaveDeathmatch,\n\t\t///<summary>\n\t\t///Laika 1 64x64x64\n\t\t///</summary>\n\t\tLaika_1,\n\t\t///<summary>\n\t\t///Laika 2 256x128x256\n\t\t///</summary>\n\t\tLaika_2,\n\t\t///<summary>\n\t\t///Laika 3 64x64x64\n\t\t///</summary>\n\t\tLaika_3,\n\t\t///<summary>\n\t\t///Nearby Station 1 128x128x128\n\t\t///</summary>\n\t\tNearby_Station_1,\n\t\t///<summary>\n\t\t///Nearby Station 10 64x64x64\n\t\t///</summary>\n\t\tNearby_Station_10,\n\t\t///<summary>\n\t\t///Nearby Station 11 128x64x64\n\t\t///</summary>\n\t\tNearby_Station_11,\n\t\t///<summary>\n\t\t///Nearby Station 12 256x128x256\n\t\t///</summary>\n\t\tNearby_Station_12,\n\t\t///<summary>\n\t\t///Nearby Station 2 64x128x64\n\t\t///</summary>\n\t\tNearby_Station_2,\n\t\t///<summary>\n\t\t///Nearby Station 3 64x64x128\n\t\t///</summary>\n\t\tNearby_Station_3,\n\t\t///<summary>\n\t\t///Nearby Station 4 64x128x64\n\t\t///</summary>\n\t\tNearby_Station_4,\n\t\t///<summary>\n\t\t///Nearby Station 5 128x128x128\n\t\t///</summary>\n\t\tNearby_Station_5,\n\t\t///<summary>\n\t\t///Nearby Station 6 128x128x128\n\t\t///</summary>\n\t\tNearby_Station_6,\n\t\t///<summary>\n\t\t///Nearby Station 7 64x128x64\n\t\t///</summary>\n\t\tNearby_Station_7,\n\t\t///<summary>\n\t\t///Nearby Station 8 64x64x64\n\t\t///</summary>\n\t\tNearby_Station_8,\n\t\t///<summary>\n\t\t///Nearby Station 9 128x128x128\n\t\t///</summary>\n\t\tNearby_Station_9,\n\t\t///<summary>\n\t\t///New Singapore 512x512x256\n\t\t///</summary>\n\t\tNew_Singapore,\n\t\t///<summary>\n\t\t///Pirate Base 1 64x64x64\n\t\t///</summary>\n\t\tPirate_Base_Asteroid_1,\n\t\t///<summary>\n\t\t///Pirate Base 2 128x128x128\n\t\t///</summary>\n\t\tPirate_Base_Asteroid_2,\n\t\t///<summary>\n\t\t///Pirate Base 3 64x128x64\n\t\t///</summary>\n\t\tPirate_Base_Asteroid_3,\n\t\t///<summary>\n\t\t///Plutonium Mines 256x256x256\n\t\t///</summary>\n\t\tPlutonium_Mines,\n\t\t///<summary>\n\t\t///ReichStag 1 128x128x128\n\t\t///</summary>\n\t\tReichStag_1,\n\t\t///<summary>\n\t\t///ReichStag 2 256x128x256\n\t\t///</summary>\n\t\tReichStag_2,\n\t\t///<summary>\n\t\t///Rift Station Smaller 64x128x64\n\t\t///</summary>\n\t\tRiftStationSmaller,\n\t\t///<summary>\n\t\t///Russian Transmitter 1 128x128x128\n\t\t///</summary>\n\t\tRussian_Transmitter_1,\n\t\t///<summary>\n\t\t///Russian Transmitter 2 256x128x256\n\t\t///</summary>\n\t\tRussian_Transmitter_2,\n\t\t///<summary>\n\t\t///Russian Transmitter 3 256x128x256\n\t\t///</summary>\n\t\tRussian_Transmitter_3,\n\t\t///<summary>\n\t\t///Russian Warehouse New 64x64x64\n\t\t///</summary>\n\t\tRussian_Warehouse_New,\n\t\t///<summary>\n\t\t///Voxel Arena Deathmatch 256x256x256\n\t\t///</summary>\n\t\tVoxelArenaDeathmatch,\n\t\t///<summary>\n\t\t///Warehouse Deathmatch 256x128x256\n\t\t///</summary>\n\t\tWarehouseDeatmatch,\n\t\t///<summary>\n\t\t///Deactivate all bombs\n\t\t///</summary>\n\t\tLAST_HOPE_DEACTIVATE_BOMBS,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tLAST_HOPE_DEACTIVATE_BOMBS_DESC,\n\t\t///<summary>\n\t\t///Kill the saboteur squad\n\t\t///</summary>\n\t\tLAST_HOPE_KILL_SABOTERS,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tLAST_HOPE_KILL_SABOTERS_DESC,\n\t\t///<summary>\n\t\t///Fly back to the destroyed city\n\t\t///</summary>\n\t\tLAST_HOPE_LEAVE_SHAFTS,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tLAST_HOPE_LEAVE_SHAFTS_DESC,\n\t\t///<summary>\n\t\t///Catch the slaver ships\n\t\t///</summary>\n\t\tLAST_HOPE_REACH_CATCH_SHIPS,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tLAST_HOPE_REACH_CATCH_SHIPS_DESC,\n\t\t///<summary>\n\t\t///Reach the colony\n\t\t///</summary>\n\t\tLAST_HOPE_REACH_COLONY,\n\t\t///<summary>\n\t\t///Get inside the asteroid ASAP \n\t\t///</summary>\n\t\tLAST_HOPE_REACH_COLONY_DESCRIPTION,\n\t\t///<summary>\n\t\t///Disable slavers’ motherships\n\t\t///</summary>\n\t\tLAST_HOPE_REACH_DESTROY_RIDERS,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tLAST_HOPE_REACH_DESTROY_RIDERS_DESC,\n\t\t///<summary>\n\t\t///Reach the cave entrance to the underground shaft\n\t\t///</summary>\n\t\tLAST_HOPE_REACH_REACH_CAVE,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tLAST_HOPE_REACH_REACH_CAVE_DESC,\n\t\t///<summary>\n\t\t///Stop slaver ships from leaving\n\t\t///</summary>\n\t\tLAST_HOPE_REACH_STOP_SHIPS,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tLAST_HOPE_REACH_STOP_SHIPS_DESC,\n\t\t///<summary>\n\t\t///Find the maintenance tunnel\n\t\t///</summary>\n\t\tLAST_HOPE_REACH_TUNNEL,\n\t\t///<summary>\n\t\t///Go to the waypoint and look around. You’re looking for red lights in a tunnel. Beware of slaver smallships.\n\t\t///</summary>\n\t\tLAST_HOPE_REACH_TUNNEL_DESC,\n\t\t///<summary>\n\t\t///Stabilize the sabotaged gas facilities\n\t\t///</summary>\n\t\tLAST_HOPE_STABILIZE_GAS,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tLAST_HOPE_STABILIZE_GAS_DESC,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tLAST_HOPE_STABILIZE_GAS_DESC1,\n\t\t///<summary>\n\t\t///Stabilize the nuclear core\n\t\t///</summary>\n\t\tLAST_HOPE_STABILIZE_NUCLEAR_CORE,\n\t\t///<summary>\n\t\t///Change material\n\t\t///</summary>\n\t\tChangeMaterial,\n\t\t///<summary>\n\t\t///Officer\n\t\t///</summary>\n\t\tActor_ReichstagOfficer,\n\t\t///<summary>\n\t\t///Captain\n\t\t///</summary>\n\t\tActor_ReichstagCaptain,\n\t\t///<summary>\n\t\t///Flat_256x64x256\n\t\t///</summary>\n\t\tFlat_256x64x256,\n\t\t///<summary>\n\t\t///Asteroid complex \n\t\t///</summary>\n\t\tASTEROID_COMPLEX_Description,\n\t\t///<summary>\n\t\t///Asteroid complex\n\t\t///</summary>\n\t\tASTEROID_COMPLEX,\n\t\t///<summary>\n\t\t///Defend Madelyn\n\t\t///</summary>\n\t\tEAC_AMBUSH_DEFEND_MADELYN1,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tEAC_AMBUSH_DEFEND_MADELYN1_DESC,\n\t\t///<summary>\n\t\t///Defend Madelyn\n\t\t///</summary>\n\t\tEAC_AMBUSH_DEFEND_MADELYN2,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tEAC_AMBUSH_DEFEND_MADELYN2_DESC,\n\t\t///<summary>\n\t\t///Destroy the disruptor generator\n\t\t///</summary>\n\t\tEAC_AMBUSH_DESTROY_GENERATOR,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tEAC_AMBUSH_DESTROY_GENERATOR_DESC,\n\t\t///<summary>\n\t\t///Fly to Manjeet\n\t\t///</summary>\n\t\tEAC_AMBUSH_FLY_TO_MANJEET,\n\t\t///<summary>\n\t\t///Find Manjeet somewhere in the city.\n\t\t///</summary>\n\t\tEAC_AMBUSH_FLY_TO_MANJEET_DESC,\n\t\t///<summary>\n\t\t///Go back to Madelyn\n\t\t///</summary>\n\t\tEAC_AMBUSH_GO_BACK_TO_MADELYN,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tEAC_AMBUSH_GO_BACK_TO_MADELYN_DESC,\n\t\t///<summary>\n\t\t///Go back to Madelyn\n\t\t///</summary>\n\t\tEAC_AMBUSH_RETURN_TO_MADELYN,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tEAC_AMBUSH_RETURN_TO_MADELYN_DESC,\n\t\t///<summary>\n\t\t///Large Billboard 18\n\t\t///</summary>\n\t\tp511_a18_billboard,\n\t\t///<summary>\n\t\t///Large Billboard 19\n\t\t///</summary>\n\t\tp511_a19_billboard,\n\t\t///<summary>\n\t\t///DEVELOP BUILD\n\t\t///</summary>\n\t\tDevelopBuild,\n\t\t///<summary>\n\t\t///TEST BUILD\n\t\t///</summary>\n\t\tTestBuild,\n\t\t///<summary>\n\t\t///Speak with Father Tobias\n\t\t///</summary>\n\t\tLAST_HOPE_SPEAK_WITH_FATHER,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tLAST_HOPE_SPEAK_WITH_FATHER_DESC,\n\t\t///<summary>\n\t\t///Reward\n\t\t///</summary>\n\t\tReward,\n\t\t///<summary>\n\t\t///Hold {0} to take the transmitter\n\t\t///</summary>\n\t\tPressToTakeTransmitter,\n\t\t///<summary>\n\t\t///Hold {0} to place the detector\n\t\t///</summary>\n\t\tPressToPlaceDetector,\n\t\t///<summary>\n\t\t///Hold {0} to start the transmission\n\t\t///</summary>\n\t\tPressToStartTransmission,\n\t\t///<summary>\n\t\t///Transmission\n\t\t///</summary>\n\t\tTransmission,\n\t\t///<summary>\n\t\t///Placing the bomb…\n\t\t///</summary>\n\t\tPlacingBomb,\n\t\t///<summary>\n\t\t///Starting the transmission…\n\t\t///</summary>\n\t\tStartingTransmission,\n\t\t///<summary>\n\t\t///You have obtained $50,000.\n\t\t///</summary>\n\t\tPiratesRewardObtained,\n\t\t///<summary>\n\t\t///Hold {0} to take {1}\n\t\t///</summary>\n\t\tNotificationYouCanTake,\n\t\t///<summary>\n\t\t///Research vessel captain\n\t\t///</summary>\n\t\tResearchVesselCaptain,\n\t\t///<summary>\n\t\t///Flat_128x64x128\n\t\t///</summary>\n\t\tFlat_128x64x128,\n\t\t///<summary>\n\t\t///Flat_512x64x512\n\t\t///</summary>\n\t\tFlat_512x64x512,\n\t\t///<summary>\n\t\t///Fixing\n\t\t///</summary>\n\t\tFixing,\n\t\t///<summary>\n\t\t///Gas pipe\n\t\t///</summary>\n\t\tGasPipe,\n\t\t///<summary>\n\t\t///Hold {0} to repair the gas pipe\n\t\t///</summary>\n\t\tPressToRepairGasPipe,\n\t\t///<summary>\n\t\t///Hold {0} to fix the radiation leak\n\t\t///</summary>\n\t\tPressToRepairRadiation,\n\t\t///<summary>\n\t\t///Radiation leak\n\t\t///</summary>\n\t\tRadiationLeak,\n\t\t///<summary>\n\t\t///Laika operator\n\t\t///</summary>\n\t\tActor_LaikaOperator,\n\t\t///<summary>\n\t\t///You have lost your plutonium\n\t\t///</summary>\n\t\tFail_PlutoniumLost,\n\t\t///<summary>\n\t\t///You were detected!\n\t\t///</summary>\n\t\tYouWereDetected,\n\t\t///<summary>\n\t\t///Don’t harvest here!\n\t\t///</summary>\n\t\tDontHarvest,\n\t\t///<summary>\n\t\t///Marcus and Valentino are leaving the party\n\t\t///</summary>\n\t\tMarcusAndValentinoLeavingParty,\n\t\t///<summary>\n\t\t///Unavailable\n\t\t///</summary>\n\t\tMP_RemoteControlled,\n\t\t///<summary>\n\t\t///Autonomous outpost\n\t\t///</summary>\n\t\tAUTONOMOUS_OUTPOST,\n\t\t///<summary>\n\t\t///Autonomous outpost \n\t\t///</summary>\n\t\tAUTONOMOUS_OUTPOST_Description,\n\t\t///<summary>\n\t\t///Biofacility\n\t\t///</summary>\n\t\tBIOFACILITY,\n\t\t///<summary>\n\t\t///Biofacility \n\t\t///</summary>\n\t\tBIOFACILITY_Description,\n\t\t///<summary>\n\t\t///Convoy\n\t\t///</summary>\n\t\tCONVOY,\n\t\t///<summary>\n\t\t///Convoy \n\t\t///</summary>\n\t\tCONVOY_Description,\n\t\t///<summary>\n\t\t///Intergalactic highway\n\t\t///</summary>\n\t\tINTERGALACTIC_HIGHWAY,\n\t\t///<summary>\n\t\t///Intergalactic highway \n\t\t///</summary>\n\t\tINTERGALACTIC_HIGHWAY_Description,\n\t\t///<summary>\n\t\t///Mothership crash\n\t\t///</summary>\n\t\tMOTHERSHIP_CRASH,\n\t\t///<summary>\n\t\t///Mothership crash \n\t\t///</summary>\n\t\tMOTHERSHIP_CRASHL_Description,\n\t\t///<summary>\n\t\t///Game has ended\n\t\t///</summary>\n\t\tMP_GameHasEnded,\n\t\t///<summary>\n\t\t///Madelyn’s Sapho has been destroyed.\n\t\t///</summary>\n\t\tMadelynWasDestroyed,\n\t\t///<summary>\n\t\t///Madelyn’s Sapho\n\t\t///</summary>\n\t\tSapho,\n\t\t///<summary>\n\t\t///Gates of Hell\n\t\t///</summary>\n\t\tGATES_OF_HELL,\n\t\t///<summary>\n\t\t///Gates of Hell \n\t\t///</summary>\n\t\tGATES_OF_HELL_Description,\n\t\t///<summary>\n\t\t///Helium mines\n\t\t///</summary>\n\t\tMINER_OUTPOST,\n\t\t///<summary>\n\t\t///Helium mines \n\t\t///</summary>\n\t\tMINER_OUTPOST_Description,\n\t\t///<summary>\n\t\t///Miner uprising\n\t\t///</summary>\n\t\tMINER_UPRISING,\n\t\t///<summary>\n\t\t///Miner uprising \n\t\t///</summary>\n\t\tMINER_UPRISING_Description,\n\t\t///<summary>\n\t\t///You were killed in the auto-destruction sequence\n\t\t///</summary>\n\t\tFail_Autodestruction,\n\t\t///<summary>\n\t\t///Your mothership was destroyed\n\t\t///</summary>\n\t\tFail_MothershipDestroyed,\n\t\t///<summary>\n\t\t///Your objective was destroyed\n\t\t///</summary>\n\t\tFail_ObjectiveDestroyed,\n\t\t///<summary>\n\t\t///You have lost the race\n\t\t///</summary>\n\t\tFail_RaceLost,\n\t\t///<summary>\n\t\t///You have ran out of time\n\t\t///</summary>\n\t\tFail_TimeIsUp,\n\t\t///<summary>\n\t\t///You have failed in protecting the generator\n\t\t///</summary>\n\t\tPirateBaseGeneratorFailMessage,\n\t\t///<summary>\n\t\t///You have failed in protecting the hacker\n\t\t///</summary>\n\t\tFail_HackerKilled,\n\t\t///<summary>\n\t\t///The transport was destroyed\n\t\t///</summary>\n\t\tFail_TransportDestroyed,\n\t\t///<summary>\n\t\t///Merchant Mixed Tier 1\n\t\t///</summary>\n\t\tMerchantMixed_Tier_1,\n\t\t///<summary>\n\t\t///Merchant Mixed Tier 2\n\t\t///</summary>\n\t\tMerchantMixed_Tier_2,\n\t\t///<summary>\n\t\t///Merchant Mixed Tier 3\n\t\t///</summary>\n\t\tMerchantMixed_Tier_3,\n\t\t///<summary>\n\t\t///Merchant Mixed Tier 4\n\t\t///</summary>\n\t\tMerchantMixed_Tier_4,\n\t\t///<summary>\n\t\t///Merchant Mixed Tier 5\n\t\t///</summary>\n\t\tMerchantMixed_Tier_5,\n\t\t///<summary>\n\t\t///Merchant Mixed Tier 6\n\t\t///</summary>\n\t\tMerchantMixed_Tier_6,\n\t\t///<summary>\n\t\t///Merchant Mixed Tier 7\n\t\t///</summary>\n\t\tMerchantMixed_Tier_7,\n\t\t///<summary>\n\t\t///Merchant Mixed Tier 8\n\t\t///</summary>\n\t\tMerchantMixed_Tier_8,\n\t\t///<summary>\n\t\t///Merchant Mixed Tier 9\n\t\t///</summary>\n\t\tMerchantMixed_Tier_9,\n\t\t///<summary>\n\t\t///Merchant Mixed Tier Special\n\t\t///</summary>\n\t\tMerchantMixed_Tier_Special,\n\t\t///<summary>\n\t\t///Merchant Army Tier 1\n\t\t///</summary>\n\t\tMerchantArmy_Tier_1,\n\t\t///<summary>\n\t\t///Merchant Army Tier 2\n\t\t///</summary>\n\t\tMerchantArmy_Tier_2,\n\t\t///<summary>\n\t\t///Merchant Army Tier 3\n\t\t///</summary>\n\t\tMerchantArmy_Tier_3,\n\t\t///<summary>\n\t\t///Merchant Army Tier 4\n\t\t///</summary>\n\t\tMerchantArmy_Tier_4,\n\t\t///<summary>\n\t\t///Merchant Army Tier 5\n\t\t///</summary>\n\t\tMerchantArmy_Tier_5,\n\t\t///<summary>\n\t\t///Merchant Army Tier 6\n\t\t///</summary>\n\t\tMerchantArmy_Tier_6,\n\t\t///<summary>\n\t\t///Merchant Army Tier 7\n\t\t///</summary>\n\t\tMerchantArmy_Tier_7,\n\t\t///<summary>\n\t\t///Merchant Army Tier 8\n\t\t///</summary>\n\t\tMerchantArmy_Tier_8,\n\t\t///<summary>\n\t\t///Merchant Army Tier 9\n\t\t///</summary>\n\t\tMerchantArmy_Tier_9,\n\t\t///<summary>\n\t\t///Merchant Army Tier Special\n\t\t///</summary>\n\t\tMerchantArmy_Tier_Special,\n\t\t///<summary>\n\t\t///Merchant Medicine Tier 1\n\t\t///</summary>\n\t\tMerchantMedicine_Tier_1,\n\t\t///<summary>\n\t\t///Merchant Medicine Tier 2\n\t\t///</summary>\n\t\tMerchantMedicine_Tier_2,\n\t\t///<summary>\n\t\t///Merchant Medicine Tier 3\n\t\t///</summary>\n\t\tMerchantMedicine_Tier_3,\n\t\t///<summary>\n\t\t///Merchant Medicine Tier 4\n\t\t///</summary>\n\t\tMerchantMedicine_Tier_4,\n\t\t///<summary>\n\t\t///Merchant Medicine Tier 5\n\t\t///</summary>\n\t\tMerchantMedicine_Tier_5,\n\t\t///<summary>\n\t\t///Merchant Medicine Tier 6\n\t\t///</summary>\n\t\tMerchantMedicine_Tier_6,\n\t\t///<summary>\n\t\t///Merchant Medicine Tier 7\n\t\t///</summary>\n\t\tMerchantMedicine_Tier_7,\n\t\t///<summary>\n\t\t///Merchant Medicine Tier 8\n\t\t///</summary>\n\t\tMerchantMedicine_Tier_8,\n\t\t///<summary>\n\t\t///Merchant Medicine Tier 9\n\t\t///</summary>\n\t\tMerchantMedicine_Tier_9,\n\t\t///<summary>\n\t\t///Merchant Medicine Tier Special\n\t\t///</summary>\n\t\tMerchantMedicine_Tier_Special,\n\t\t///<summary>\n\t\t///Merchant Tools Tier 1\n\t\t///</summary>\n\t\tMerchantTools_Tier_1,\n\t\t///<summary>\n\t\t///Merchant Tools Tier 2\n\t\t///</summary>\n\t\tMerchantTools_Tier_2,\n\t\t///<summary>\n\t\t///Merchant Tools Tier 3\n\t\t///</summary>\n\t\tMerchantTools_Tier_3,\n\t\t///<summary>\n\t\t///Merchant Tools Tier 4\n\t\t///</summary>\n\t\tMerchantTools_Tier_4,\n\t\t///<summary>\n\t\t///Merchant Tools Tier 5\n\t\t///</summary>\n\t\tMerchantTools_Tier_5,\n\t\t///<summary>\n\t\t///Merchant Tools Tier 6\n\t\t///</summary>\n\t\tMerchantTools_Tier_6,\n\t\t///<summary>\n\t\t///Merchant Tools Tier 7\n\t\t///</summary>\n\t\tMerchantTools_Tier_7,\n\t\t///<summary>\n\t\t///Merchant Tools Tier 8\n\t\t///</summary>\n\t\tMerchantTools_Tier_8,\n\t\t///<summary>\n\t\t///Merchant Tools Tier 9\n\t\t///</summary>\n\t\tMerchantTools_Tier_9,\n\t\t///<summary>\n\t\t///Merchant Tools Tier Special\n\t\t///</summary>\n\t\tMerchantTools_Tier_Special,\n\t\t///<summary>\n\t\t///Captain\n\t\t///</summary>\n\t\tActor_EacSurveySite_MilitaryCaptain,\n\t\t///<summary>\n\t\t///Chat\n\t\t///</summary>\n\t\tOpenChat,\n\t\t///<summary>\n\t\t///Multiplayer statistics\n\t\t///</summary>\n\t\tOpenScore,\n\t\t///<summary>\n\t\t///Increase cargo capacity\n\t\t///</summary>\n\t\tIncreaseCargoCapacity,\n\t\t///<summary>\n\t\t///Sun has errupted – solar flare approaching. Find cover.\n\t\t///</summary>\n\t\tNotificationSolarWindWarning,\n\t\t///<summary>\n\t\t///Asteroid research field\n\t\t///</summary>\n\t\tASTEROID_FIELD,\n\t\t///<summary>\n\t\t///Asteroid research field \n\t\t///</summary>\n\t\tASTEROID_FIELD_Description,\n\t\t///<summary>\n\t\t///Dumping ground\n\t\t///</summary>\n\t\tDUMPING_GROUND,\n\t\t///<summary>\n\t\t///Dumping ground \n\t\t///</summary>\n\t\tDUMPING_GROUND_Description,\n\t\t///<summary>\n\t\t///Factory ambush\n\t\t///</summary>\n\t\tFACTORY_AMBUSH,\n\t\t///<summary>\n\t\t///Factory ambush \n\t\t///</summary>\n\t\tFACTORY_AMBUSH_Description,\n\t\t///<summary>\n\t\t///Industrial sector\n\t\t///</summary>\n\t\tINDUSTRIAL_SECTOR,\n\t\t///<summary>\n\t\t///Industrial sector \n\t\t///</summary>\n\t\tINDUSTRIAL_SECTOR_Description,\n\t\t///<summary>\n\t\t///You have no hacking tool\n\t\t///</summary>\n\t\tHackingResult_NoHackingTool,\n\t\t///<summary>\n\t\t///Remove all voxel hands\n\t\t///</summary>\n\t\tRemoveAllVoxelHands,\n\t\t///<summary>\n\t\t///Do you want to delete all voxel hands from the selected voxel asteroid?\n\t\t///</summary>\n\t\tClearVoxelHandsWarning,\n\t\t///<summary>\n\t\t///this object\n\t\t///</summary>\n\t\tThisObject,\n\t\t///<summary>\n\t\t///Forgotten facility\n\t\t///</summary>\n\t\tFORGOTTEN_FACILITY,\n\t\t///<summary>\n\t\t///There were many things to be said about this facility, but they are all forgotten. \n\t\t///</summary>\n\t\tFORGOTTEN_FACILITY_Description,\n\t\t///<summary>\n\t\t///Exit the drone\n\t\t///</summary>\n\t\tExitDrone,\n\t\t///<summary>\n\t\t///Enter the drone\n\t\t///</summary>\n\t\tEnterDrone,\n\t\t///<summary>\n\t\t///Activated up to difficulty\n\t\t///</summary>\n\t\tActivatedUpToDifficulty,\n\t\t///<summary>\n\t\t///Zombie level\n\t\t///</summary>\n\t\tZOMBIE_LEVEL,\n\t\t///<summary>\n\t\t///No video game is complete without zombies. \n\t\t///</summary>\n\t\tZOMBIE_LEVEL_Description,\n\t\t///<summary>\n\t\t///PirateBaseStaticAsteroid_A_1000m\n\t\t///</summary>\n\t\tPirateBaseStaticAsteroid_A_1000m,\n\t\t///<summary>\n\t\t///PirateBaseStaticAsteroid_A_5000m_1\n\t\t///</summary>\n\t\tPirateBaseStaticAsteroid_A_5000m_1,\n\t\t///<summary>\n\t\t///PirateBaseStaticAsteroid_A_5000m_2\n\t\t///</summary>\n\t\tPirateBaseStaticAsteroid_A_5000m_2,\n\t\t///<summary>\n\t\t///Voxel hand cylinder\n\t\t///</summary>\n\t\tEditVoxelHandShapeCylinder,\n\t\t///<summary>\n\t\t///Liberator\n\t\t///</summary>\n\t\tSmallShipMinerShip01Name,\n\t\t///<summary>\n\t\t///Enforcer\n\t\t///</summary>\n\t\tSmallShipMinerShip02Name,\n\t\t///<summary>\n\t\t///Kammler\n\t\t///</summary>\n\t\tSmallShipMinerShip03Name,\n\t\t///<summary>\n\t\t///Gettysburg\n\t\t///</summary>\n\t\tSmallShipMinerShip04Name,\n\t\t///<summary>\n\t\t///Virginia\n\t\t///</summary>\n\t\tSmallShipMinerShip05Name,\n\t\t///<summary>\n\t\t///Baer\n\t\t///</summary>\n\t\tSmallShipMinerShip06Name,\n\t\t///<summary>\n\t\t///Hewer\n\t\t///</summary>\n\t\tSmallShipMinerShip07Name,\n\t\t///<summary>\n\t\t///Razor Claw\n\t\t///</summary>\n\t\tSmallShipMinerShip08Name,\n\t\t///<summary>\n\t\t///Greiser\n\t\t///</summary>\n\t\tSmallShipMinerShip09Name,\n\t\t///<summary>\n\t\t///Tracer\n\t\t///</summary>\n\t\tSmallShipMinerShip10Name,\n\t\t///<summary>\n\t\t///Jacknife\n\t\t///</summary>\n\t\tSmallShipJackKnifeName,\n\t\t///<summary>\n\t\t///Doon\n\t\t///</summary>\n\t\tSmallShipDoonName,\n\t\t///<summary>\n\t\t///Hammer\n\t\t///</summary>\n\t\tSmallShipHammerName,\n\t\t///<summary>\n\t\t///Org\n\t\t///</summary>\n\t\tSmallShipOrgName,\n\t\t///<summary>\n\t\t///Yg\n\t\t///</summary>\n\t\tSmallShipYgName,\n\t\t///<summary>\n\t\t///Hawk\n\t\t///</summary>\n\t\tSmallShipHawkName,\n\t\t///<summary>\n\t\t///Phoenix\n\t\t///</summary>\n\t\tSmallShipPhoenixName,\n\t\t///<summary>\n\t\t///Leviathan\n\t\t///</summary>\n\t\tSmallShipLeviathanName,\n\t\t///<summary>\n\t\t///Rockheater\n\t\t///</summary>\n\t\tSmallShipRockheaterName,\n\t\t///<summary>\n\t\t///Steelhead\n\t\t///</summary>\n\t\tSmallShipSteelHeadName,\n\t\t///<summary>\n\t\t///Feder\n\t\t///</summary>\n\t\tSmallShipTalonName,\n\t\t///<summary>\n\t\t///Stanislav\n\t\t///</summary>\n\t\tSmallShipStanislavName,\n\t\t///<summary>\n\t\t///Stone\n\t\t///</summary>\n\t\tOreStoneName,\n\t\t///<summary>\n\t\t///Iron\n\t\t///</summary>\n\t\tOreIronName,\n\t\t///<summary>\n\t\t///Plutonium\n\t\t///</summary>\n\t\tOreUraniteName,\n\t\t///<summary>\n\t\t///Helium\n\t\t///</summary>\n\t\tOreHeliumName,\n\t\t///<summary>\n\t\t///Ice\n\t\t///</summary>\n\t\tOreIceName,\n\t\t///<summary>\n\t\t///Gold\n\t\t///</summary>\n\t\tOreGoldName,\n\t\t///<summary>\n\t\t///Silver\n\t\t///</summary>\n\t\tOreSilverName,\n\t\t///<summary>\n\t\t///Silicon\n\t\t///</summary>\n\t\tOreSiliconName,\n\t\t///<summary>\n\t\t///Platinum\n\t\t///</summary>\n\t\tOrePlatinumName,\n\t\t///<summary>\n\t\t///Nickel\n\t\t///</summary>\n\t\tOreNickelName,\n\t\t///<summary>\n\t\t///Cobalt\n\t\t///</summary>\n\t\tOreCobaltName,\n\t\t///<summary>\n\t\t///Magnesium\n\t\t///</summary>\n\t\tOreMagnesiumName,\n\t\t///<summary>\n\t\t///Treasure\n\t\t///</summary>\n\t\tOreTreasureName,\n\t\t///<summary>\n\t\t///Organic\n\t\t///</summary>\n\t\tOreOrganicName,\n\t\t///<summary>\n\t\t///Lava\n\t\t///</summary>\n\t\tOreLavaName,\n\t\t///<summary>\n\t\t///Snow\n\t\t///</summary>\n\t\tOreSnowName,\n\t\t///<summary>\n\t\t///Sandstone\n\t\t///</summary>\n\t\tOreSandstoneName,\n\t\t///<summary>\n\t\t///Concrete\n\t\t///</summary>\n\t\tOreConcreteName,\n\t\t///<summary>\n\t\t///Do you want to save before exiting?\n\t\t///</summary>\n\t\tSaveCurrentProgress,\n\t\t///<summary>\n\t\t///Save?\n\t\t///</summary>\n\t\tSaveCurrentProgressCaption,\n\t\t///<summary>\n\t\t///The plutonium refinery and processing facility at Jingzhou. A well-protected Chinese base  specializing in processing of numerous grades of plutonium. Raw ore is transported here  from the Changde and Xining sectors and refined as fuel for nuclear weapons, reactors,  pocket fuel cells, and numerous experimental and technical devices, for both military and  industrial use.\n\t\t///</summary>\n\t\tCHINESE_ESCAPE_SectorDescription,\n\t\t///<summary>\n\t\t///CHINESE REFINERY OF JINGZHOU\n\t\t///</summary>\n\t\tCHINESE_ESCAPE_SectorName,\n\t\t///<summary>\n\t\t///Race Opponent\n\t\t///</summary>\n\t\tActor_RaceOpponent,\n\t\t///<summary>\n\t\t///Radar jammer\n\t\t///</summary>\n\t\tToolRadarJammerName,\n\t\t///<summary>\n\t\t///Racing fan\n\t\t///</summary>\n\t\tRacingFan,\n\t\t///<summary>\n\t\t///Barkeeper\n\t\t///</summary>\n\t\tActor_RimeBarkeeper,\n\t\t///<summary>\n\t\t///Mitchel\n\t\t///</summary>\n\t\tActor_RimeMitchel,\n\t\t///<summary>\n\t\t///Planting in progress\n\t\t///</summary>\n\t\tPlantingInProgress,\n\t\t///<summary>\n\t\t///Local data corrupted\n\t\t///</summary>\n\t\tLocalDataCorrupted,\n\t\t///<summary>\n\t\t///Not available in offline mode\n\t\t///</summary>\n\t\tNotAvailableInOffline,\n\t\t///<summary>\n\t\t///Harvested {0:0.00} units of {1}\n\t\t///</summary>\n\t\tHarvestNotification,\n\t\t///<summary>\n\t\t///Inventory full, wasted {0:0.00} units of {1}\n\t\t///</summary>\n\t\tHarvestNotificationInventoryFull,\n\t\t///<summary>\n\t\t///d25asteroid_field\n\t\t///</summary>\n\t\td25asteroid_field,\n\t\t///<summary>\n\t\t///d25city_fight\n\t\t///</summary>\n\t\td25city_fight,\n\t\t///<summary>\n\t\t///d25gates_ofhell\n\t\t///</summary>\n\t\td25gates_ofhell,\n\t\t///<summary>\n\t\t///d25junkyard\n\t\t///</summary>\n\t\td25junkyard,\n\t\t///<summary>\n\t\t///d25military_area\n\t\t///</summary>\n\t\td25military_area,\n\t\t///<summary>\n\t\t///d25miner_outpost\n\t\t///</summary>\n\t\td25miner_outpost,\n\t\t///<summary>\n\t\t///d25plain\n\t\t///</summary>\n\t\td25plain,\n\t\t///<summary>\n\t\t///d25radioactive\n\t\t///</summary>\n\t\td25radioactive,\n\t\t///<summary>\n\t\t///You need to own “2.5D Experiment” / Arena\n\t\t///</summary>\n\t\tYouNeed25D,\n\t\t///<summary>\n\t\t///Russian Transmitter Main\n\t\t///</summary>\n\t\tRussian_Transmitter_Main,\n\t\t///<summary>\n\t\t///Escape\n\t\t///</summary>\n\t\tEAC_SURVEY_SITE_GOTO_10_Name,\n\t\t///<summary>\n\t\t///The exit is located in red hub above. \n\t\t///</summary>\n\t\tEAC_SURVEY_SITE_GOTO_10_Description,\n\t\t///<summary>\n\t\t///Clear the way\n\t\t///</summary>\n\t\tEAC_SURVEY_SITE_CLEAR_THE_WAY_Name,\n\t\t///<summary>\n\t\t///Destroy the baricade to get through! \n\t\t///</summary>\n\t\tEAC_SURVEY_SITE_CLEAR_THE_WAY_Description,\n\t\t///<summary>\n\t\t///Fly to the main base\n\t\t///</summary>\n\t\tEAC_SURVEY_SITE_GOTO_30_Name,\n\t\t///<summary>\n\t\t///Cross the skyway to get to the main part of the base. \n\t\t///</summary>\n\t\tEAC_SURVEY_SITE_GOTO_30_Description,\n\t\t///<summary>\n\t\t///Contact Madelyn\n\t\t///</summary>\n\t\tEAC_SURVEY_SITE_GOTO_40_Name,\n\t\t///<summary>\n\t\t///Get to the command center and use the transmiter. \n\t\t///</summary>\n\t\tEAC_SURVEY_SITE_GOTO_40_Description,\n\t\t///<summary>\n\t\t///Start generators\n\t\t///</summary>\n\t\tEAC_SURVEY_SITE_GENERATOR_Name,\n\t\t///<summary>\n\t\t///An auxiliary generator is near the workshop. \n\t\t///</summary>\n\t\tEAC_SURVEY_SITE_GENERATOR_Description,\n\t\t///<summary>\n\t\t///Return to the command center\n\t\t///</summary>\n\t\tEAC_SURVEY_SITE_GOTO_60_Name,\n\t\t///<summary>\n\t\t///We should be able to hold up there until someone comes to help. \n\t\t///</summary>\n\t\tEAC_SURVEY_SITE_GOTO_60_Description,\n\t\t///<summary>\n\t\t///Save miners\n\t\t///</summary>\n\t\tEAC_SURVEY_SITE_GOTO_65_Name,\n\t\t///<summary>\n\t\t///There are a few miners hiding in the sealed ore processing area.\n\t\t///</summary>\n\t\tEAC_SURVEY_SITE_GOTO_65_Description,\n\t\t///<summary>\n\t\t///Save miners\n\t\t///</summary>\n\t\tEAC_SURVEY_SITE_SAVEMINERS_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tEAC_SURVEY_SITE_SAVEMINERS_Description,\n\t\t///<summary>\n\t\t///Get to the hangar\n\t\t///</summary>\n\t\tEAC_SURVEY_SITE_GOTO_70_Name,\n\t\t///<summary>\n\t\t///Of all the areas in the base, the hangar has the heaviest defenses. Use it to our advantage. \n\t\t///</summary>\n\t\tEAC_SURVEY_SITE_GOTO_70_Description,\n\t\t///<summary>\n\t\t///Wait for Madelyn\n\t\t///</summary>\n\t\tEAC_SURVEY_SITE_SURVIVE_Name,\n\t\t///<summary>\n\t\t///It will take some time for Madelyn to get there.  \n\t\t///</summary>\n\t\tEAC_SURVEY_SITE_SURVIVE_Description,\n\t\t///<summary>\n\t\t///Board Sapho\n\t\t///</summary>\n\t\tEAC_SURVEY_SITE_GOTO_90_Name,\n\t\t///<summary>\n\t\t///The way is clear, get out!\n\t\t///</summary>\n\t\tEAC_SURVEY_SITE_GOTO_90_Description,\n\t\t///<summary>\n\t\t///Danger!\n\t\t///</summary>\n\t\tDanger,\n\t\t///<summary>\n\t\t///Reach the hangar\n\t\t///</summary>\n\t\tLAIKA_GOTO_10_Name,\n\t\t///<summary>\n\t\t///That security check is fishy; don’t let your guard down. \n\t\t///</summary>\n\t\tLAIKA_GOTO_10_Description,\n\t\t///<summary>\n\t\t///Destroy turret generator\n\t\t///</summary>\n\t\tLAIKA_GOTO_GENERATOR_Name,\n\t\t///<summary>\n\t\t///The turrets are powered by a dedicated generator. Shutting it down should disable them. \n\t\t///</summary>\n\t\tLAIKA_GOTO_GENERATOR_Description,\n\t\t///<summary>\n\t\t///Check the command center\n\t\t///</summary>\n\t\tLAIKA_GOTO_COMMAND_Name,\n\t\t///<summary>\n\t\t///They were surely involved in the attack. Try to hack their database and look for clues. \n\t\t///</summary>\n\t\tLAIKA_GOTO_COMMAND_Description,\n\t\t///<summary>\n\t\t///Check communication hubs\n\t\t///</summary>\n\t\tLAIKA_GOTO_COMMUNICATION_01_Name,\n\t\t///<summary>\n\t\t///The data was securely deleted from the main servers. Let’s hope there will be a backup in the communication hubs. \n\t\t///</summary>\n\t\tLAIKA_GOTO_COMMUNICATION_01_Description,\n\t\t///<summary>\n\t\t///Check communication hubs\n\t\t///</summary>\n\t\tLAIKA_GOTO_COMMUNICATION_02_Name,\n\t\t///<summary>\n\t\t///The data was securely deleted from the main servers. Let’s hope there will be a backup in the communication hubs. \n\t\t///</summary>\n\t\tLAIKA_GOTO_COMMUNICATION_02_Description,\n\t\t///<summary>\n\t\t///Activate warhead\n\t\t///</summary>\n\t\tLAIKA_WARHEAD_Name,\n\t\t///<summary>\n\t\t///We need to make a distraction. \n\t\t///</summary>\n\t\tLAIKA_WARHEAD_Description,\n\t\t///<summary>\n\t\t///Return to Sapho\n\t\t///</summary>\n\t\tLAIKA_RETURN_Name,\n\t\t///<summary>\n\t\t///We’ve got what we came for. Let’s get out of there. \n\t\t///</summary>\n\t\tLAIKA_RETURN_Description,\n\t\t///<summary>\n\t\t///Hide from the explosion\n\t\t///</summary>\n\t\tLAIKA_LASTSTAND_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tLAIKA_LASTSTAND_Description,\n\t\t///<summary>\n\t\t///Keep formation with Sapho\n\t\t///</summary>\n\t\tALIEN_GATE_RIGHT_WING_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tALIEN_GATE_RIGHT_WING_Description,\n\t\t///<summary>\n\t\t///Follow received coordinates\n\t\t///</summary>\n\t\tALIEN_GATE_FOLLOW_COORDINATES_Name,\n\t\t///<summary>\n\t\t///Continue searching\n\t\t///</summary>\n\t\tALIEN_GATE_CONTINUE_SEARCHING_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tALIEN_GATE_CONTINUE_SEARCHING_Description,\n\t\t///<summary>\n\t\t///Follow the direction\n\t\t///</summary>\n\t\tALIEN_GATE_FOLLOW_DIRECTION_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tALIEN_GATE_FOLLOW_DIRECTION_Description,\n\t\t///<summary>\n\t\t///Caught in a trap\n\t\t///</summary>\n\t\tALIEN_GATE_COUGHT_IN_TRAP_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tALIEN_GATE_COUGHT_IN_TRAP_Description,\n\t\t///<summary>\n\t\t///Run\n\t\t///</summary>\n\t\tALIEN_GATE_RUN_FOR_LIFE_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tALIEN_GATE_RUN_FOR_LIFE_Description,\n\t\t///<summary>\n\t\t///Regroup with Madelyn\n\t\t///</summary>\n\t\tALIEN_GATE_REGROUP_WITH_MADELYN_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tALIEN_GATE_REGROUP_WITH_MADELYN_Description,\n\t\t///<summary>\n\t\t///Board Russian mothership\n\t\t///</summary>\n\t\tALIEN_GATE_BOARD_MOTHER_SHIP_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tALIEN_GATE_BOARD_MOTHER_SHIP_Description,\n\t\t///<summary>\n\t\t///Overload energy generator\n\t\t///</summary>\n\t\tALIEN_GATE_HACK_GENERATOR_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tALIEN_GATE_HACK_GENERATOR_Description,\n\t\t///<summary>\n\t\t///Overload core engine\n\t\t///</summary>\n\t\tALIEN_GATE_HACK_ENGINE_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tALIEN_GATE_HACK_ENGINE_Description,\n\t\t///<summary>\n\t\t///Leave the ship\n\t\t///</summary>\n\t\tALIEN_GATE_LEAVE_SHIP_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tALIEN_GATE_LEAVE_SHIP_Description,\n\t\t///<summary>\n\t\t///Regroup with Madelyn\n\t\t///</summary>\n\t\tALIEN_GATE_REGROPUP_WITH_MADELYN_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tALIEN_GATE_REGROPUP_WITH_MADELYN_Description,\n\t\t///<summary>\n\t\t///Board second Russian mothership\n\t\t///</summary>\n\t\tALIEN_GATE_BOARD_SECOND_Name,\n\t\t///<summary>\n\t\t///Overload energy generator\n\t\t///</summary>\n\t\tALIEN_GATE_HACK_GENERATOR2_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tALIEN_GATE_BOARD_SECOND_Description,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tALIEN_GATE_HACK_GENERATOR2_Description,\n\t\t///<summary>\n\t\t///Overload core engine\n\t\t///</summary>\n\t\tALIEN_GATE_HACK_ENGINE_2_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tALIEN_GATE_HACK_ENGINE_2_Description,\n\t\t///<summary>\n\t\t///Breach the command deck to unlock the lab\n\t\t///</summary>\n\t\tALIEN_GATE_ENABLE_DOORS_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tALIEN_GATE_ENABLE_DOORS_Description,\n\t\t///<summary>\n\t\t///Enter the lab\n\t\t///</summary>\n\t\tALIEN_GATE_ENTER_LAB_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tALIEN_GATE_ENTER_LAB_Description,\n\t\t///<summary>\n\t\t///Download data about alien technology\n\t\t///</summary>\n\t\tALIEN_GATE_16_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tALIEN_GATE_16_Description,\n\t\t///<summary>\n\t\t///Overload energy generator\n\t\t///</summary>\n\t\tALIEN_GATE_17_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tALIEN_GATE_17_Description,\n\t\t///<summary>\n\t\t///Escape the ship\n\t\t///</summary>\n\t\tALIEN_GATE_18_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tALIEN_GATE_18_Description,\n\t\t///<summary>\n\t\t///Kill Francis Reef\n\t\t///</summary>\n\t\tALIEN_GATE_19_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tALIEN_GATE_19_Description,\n\t\t///<summary>\n\t\t///Prevent Francis Reef from escaping\n\t\t///</summary>\n\t\tALIEN_GATE_20_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tALIEN_GATE_20_Description,\n\t\t///<summary>\n\t\t///Finish Francis Reef\n\t\t///</summary>\n\t\tALIEN_GATE_21_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tALIEN_GATE_21_Description,\n\t\t///<summary>\n\t\t///Return to Sapho\n\t\t///</summary>\n\t\tALIEN_GATE_22_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tALIEN_GATE_22_Description,\n\t\t///<summary>\n\t\t///Explore alien gate\n\t\t///</summary>\n\t\tALIEN_GATE_23_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tALIEN_GATE_23_Description,\n\t\t///<summary>\n\t\t///Campaign completed\n\t\t///</summary>\n\t\tCampaignIsCompleted,\n\t\t///<summary>\n\t\t///Destroy\n\t\t///</summary>\n\t\tDestroy,\n\t\t///<summary>\n\t\t///Autodestruct in: \n\t\t///</summary>\n\t\tAutodestructIn,\n\t\t///<summary>\n\t\t///Approach the prison station\n\t\t///</summary>\n\t\tEAC_PRISON_THRUSWARM_Name,\n\t\t///<summary>\n\t\t///You must survive! For your brother’s sake! \n\t\t///</summary>\n\t\tEAC_PRISON_THRUSWARM_Description,\n\t\t///<summary>\n\t\t///Destroy solar panel defenses\n\t\t///</summary>\n\t\tEAC_PRISON_SOLARDEF_Name,\n\t\t///<summary>\n\t\t///Mind the missile turrets. \n\t\t///</summary>\n\t\tEAC_PRISON_SOLARDEF_Description,\n\t\t///<summary>\n\t\t///Destroy 75% of solar panels\n\t\t///</summary>\n\t\tEAC_PRISON_SOLAROFF1_Name,\n\t\t///<summary>\n\t\t///This will cut the electricity for a while before the backup generators take over. \n\t\t///</summary>\n\t\tEAC_PRISON_SOLAROFF1_Description,\n\t\t///<summary>\n\t\t///Destroy communications of EAC mothership\n\t\t///</summary>\n\t\tEAC_PRISON_MOTHERSHIPHELP_Name,\n\t\t///<summary>\n\t\t///The FOR siege is in danger from that big Ardant class mothership. \n\t\t///</summary>\n\t\tEAC_PRISON_MOTHERSHIPHELP_Description,\n\t\t///<summary>\n\t\t///Destroy 75% of solar panels\n\t\t///</summary>\n\t\tEAC_PRISON_SOLAROFF2_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tEAC_PRISON_SOLAROFF2_Description,\n\t\t///<summary>\n\t\t///Break into the prison\n\t\t///</summary>\n\t\tEAC_PRISON_BREAKIN_Name,\n\t\t///<summary>\n\t\t///Stop reading this, you have about 15 seconds before electricity will be restored. \n\t\t///</summary>\n\t\tEAC_PRISON_BREAKIN_Description,\n\t\t///<summary>\n\t\t///Find out Marcus’s location\n\t\t///</summary>\n\t\tEAC_PRISON_LOCINTEL_Name,\n\t\t///<summary>\n\t\t///We need the specific location of his cell to get out of this hostile place ASAP. \n\t\t///</summary>\n\t\tEAC_PRISON_LOCINTEL_Description,\n\t\t///<summary>\n\t\t///Acquire ID\n\t\t///</summary>\n\t\tEAC_PRISON_ACQUIREIDCARD_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tEAC_PRISON_ACQUIREIDCARD_Description,\n\t\t///<summary>\n\t\t///Hack security hub again\n\t\t///</summary>\n\t\tEAC_PRISON_LOCINTEL2_Name,\n\t\t///<summary>\n\t\t/// \n\t\t///</summary>\n\t\tEAC_PRISON_LOCINTEL2_Description,\n\t\t///<summary>\n\t\t///Open doors to maintance area\n\t\t///</summary>\n\t\tEAC_PRISON_OPENACCESS_Name,\n\t\t///<summary>\n\t\t/// \n\t\t///</summary>\n\t\tEAC_PRISON_OPENACCESS_Description,\n\t\t///<summary>\n\t\t///Shut down the generator\n\t\t///</summary>\n\t\tEAC_PRISON_SECURITYOFF_Name,\n\t\t///<summary>\n\t\t///There must be a hub from which it can be shut down in a safe way. \n\t\t///</summary>\n\t\tEAC_PRISON_SECURITYOFF_Description,\n\t\t///<summary>\n\t\t///Get Marcus\n\t\t///</summary>\n\t\tEAC_PRISON_MARCUSCELL_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tEAC_PRISON_MARCUSCELL_Description,\n\t\t///<summary>\n\t\t///Steal ship for Marcus\n\t\t///</summary>\n\t\tEAC_PRISON_COVERMARCUS_Name,\n\t\t///<summary>\n\t\t/// \n\t\t///</summary>\n\t\tEAC_PRISON_COVERMARCUS_Description,\n\t\t///<summary>\n\t\t///Get Marcus’s former equipment\n\t\t///</summary>\n\t\tEAC_PRISON_GETARMS_Name,\n\t\t///<summary>\n\t\t/// \n\t\t///</summary>\n\t\tEAC_PRISON_GETARMS_Description,\n\t\t///<summary>\n\t\t///Escape\n\t\t///</summary>\n\t\tEAC_PRISON_FIGHTOUT_Name,\n\t\t///<summary>\n\t\t/// \n\t\t///</summary>\n\t\tEAC_PRISON_FIGHTOUT_Description,\n\t\t///<summary>\n\t\t///Crush reinforcements\n\t\t///</summary>\n\t\tEAC_PRISON_CRUSHREINFORCEMENTS_Name,\n\t\t///<summary>\n\t\t///They think they can stop us. Fools! \n\t\t///</summary>\n\t\tEAC_PRISON_CRUSHREINFORCEMENTS_Description,\n\t\t///<summary>\n\t\t///Return to Sapho\n\t\t///</summary>\n\t\tEAC_PRISON_MEETINGPOINT_Name,\n\t\t///<summary>\n\t\t/// \n\t\t///</summary>\n\t\tEAC_PRISON_MEETINGPOINT_Description,\n\t\t///<summary>\n\t\t///Download failed\n\t\t///</summary>\n\t\tDownloadFailed,\n\t\t///<summary>\n\t\t///Place explosives\n\t\t///</summary>\n\t\tTWIN_TOWERS_SABOTAGE_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tTWIN_TOWERS_SABOTAGE_Description,\n\t\t///<summary>\n\t\t///Get to the meeting point\n\t\t///</summary>\n\t\tTWIN_TOWERS_RANDEVOUZ_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tTWIN_TOWERS_RANDEVOUZ_Description,\n\t\t///<summary>\n\t\t///Seize the command center\n\t\t///</summary>\n\t\tTWIN_TOWERS_ASSAULT_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tTWIN_TOWERS_ASSAULT_Description,\n\t\t///<summary>\n\t\t///Protect the hacker\n\t\t///</summary>\n\t\tTWIN_TOWERS_HACKING_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tTWIN_TOWERS_HACKING_Description,\n\t\t///<summary>\n\t\t///Destroy jammer\n\t\t///</summary>\n\t\tTWIN_TOWERS_JAMMER_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tTWIN_TOWERS_JAMMER_Description,\n\t\t///<summary>\n\t\t///Jammer\n\t\t///</summary>\n\t\tJammer,\n\t\t///<summary>\n\t\t///Protect the hacker\n\t\t///</summary>\n\t\tTWIN_TOWERS_HACKING_CONTINUE_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tTWIN_TOWERS_HACKING_CONTINUE_Description,\n\t\t///<summary>\n\t\t///Seize upper railgun control room\n\t\t///</summary>\n\t\tTWIN_TOWERS_RAILGUN1_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tTWIN_TOWERS_RAILGUN1_Description,\n\t\t///<summary>\n\t\t///Seize bottom railgun control room\n\t\t///</summary>\n\t\tTWIN_TOWERS_RAILGUN2_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tTWIN_TOWERS_RAILGUN2_Description,\n\t\t///<summary>\n\t\t///Approach the other base\n\t\t///</summary>\n\t\tTWIN_TOWERS_GOTO_RIGHT_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tTWIN_TOWERS_GOTO_RIGHT_Description,\n\t\t///<summary>\n\t\t///Disable generator\n\t\t///</summary>\n\t\tTWIN_TOWERS_GENERATOR_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tTWIN_TOWERS_GENERATOR_Description,\n\t\t///<summary>\n\t\t///Seize the command center\n\t\t///</summary>\n\t\tTWIN_TOWERS_COMMAND_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tTWIN_TOWERS_COMMAND_Description,\n\t\t///<summary>\n\t\t///Prepare for battle\n\t\t///</summary>\n\t\tTWIN_TOWERS_WAIT_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tTWIN_TOWERS_WAIT_Description,\n\t\t///<summary>\n\t\t///Destroy generator\n\t\t///</summary>\n\t\tTWIN_TOWERS_MOTHERSHIP1_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tTWIN_TOWERS_MOTHERSHIP1_Description,\n\t\t///<summary>\n\t\t///Destroy batteries\n\t\t///</summary>\n\t\tTWIN_TOWERS_MOTHERSHIP1_V2_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tTWIN_TOWERS_MOTHERSHIP1_V2_Description,\n\t\t///<summary>\n\t\t///Explosives\n\t\t///</summary>\n\t\tExplosives,\n\t\t///<summary>\n\t\t///Meet the colonel\n\t\t///</summary>\n\t\tREICHSTAG_C_FOR_Name,\n\t\t///<summary>\n\t\t///Talk to the Colonel about your deal.\n\t\t///</summary>\n\t\tREICHSTAG_C_FOR_Description,\n\t\t///<summary>\n\t\t///Proceed to the shipyard\n\t\t///</summary>\n\t\tREICHSTAG_C_GO_TO_SHIPYARD_Name,\n\t\t///<summary>\n\t\t///Go to the shipyard and pick up your ship\n\t\t///</summary>\n\t\tREICHSTAG_C_GO_TO_SHIPYARD_Description,\n\t\t///<summary>\n\t\t///Change the ship’s affiliation to Fourth Reich\n\t\t///</summary>\n\t\tREICHSTAG_C_CHANGESHIP_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tREICHSTAG_C_CHANGESHIP_Description,\n\t\t///<summary>\n\t\t///Arm yourself\n\t\t///</summary>\n\t\tREICHSTAG_C_WEAPONS_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tREICHSTAG_C_WEAPONS_Description,\n\t\t///<summary>\n\t\t///Board the transporter\n\t\t///</summary>\n\t\tREICHSTAG_C_GO_TO_HANGAR_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tREICHSTAG_C_GO_TO_HANGAR_Description,\n\t\t///<summary>\n\t\t///Board the White Wolves mothership\n\t\t///</summary>\n\t\tREICHSTAG_C_MOTHERSHIP_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tREICHSTAG_C_MOTHERSHIP_Description,\n\t\t///<summary>\n\t\t///Collect samples\n\t\t///</summary>\n\t\tNAZI_BIO_LAB_SAMPLES_BIOMACH_1_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tNAZI_BIO_LAB_SAMPLES_BIOMACH_1_Description,\n\t\t///<summary>\n\t\t///Get inside\n\t\t///</summary>\n\t\tNAZI_BIO_LAB_GET_INSIDE_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tNAZI_BIO_LAB_GET_INSIDE_Description,\n\t\t///<summary>\n\t\t///Collect samples\n\t\t///</summary>\n\t\tNAZI_BIO_LAB_SAMPLES_ORGANIC_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tNAZI_BIO_LAB_SAMPLES_ORGANIC_Description,\n\t\t///<summary>\n\t\t///Find blueprints\n\t\t///</summary>\n\t\tNAZI_BIO_LAB_BLUEPRINTS_BIOMACH_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tNAZI_BIO_LAB_BLUEPRINTS_BIOMACH_Description,\n\t\t///<summary>\n\t\t///Exit the station\n\t\t///</summary>\n\t\tNAZI_BIO_LAB_GET_OUT_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tNAZI_BIO_LAB_GET_OUT_Description,\n\t\t///<summary>\n\t\t///Destroy the machine\n\t\t///</summary>\n\t\tNAZI_BIO_LAB_DESTROY_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tNAZI_BIO_LAB_DESTROY_Description,\n\t\t///<summary>\n\t\t///Return to Sapho\n\t\t///</summary>\n\t\tNAZI_BIO_LAB_REACH_MEETING_POINT_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tNAZI_BIO_LAB_REACH_MEETING_POINT_Description,\n\t\t///<summary>\n\t\t///Get to the main building\n\t\t///</summary>\n\t\tREICHSTAG_A_GET_TO_MAIN_BUILDING_Name,\n\t\t///<summary>\n\t\t///Get to the main building and seek Colonel von Stauffenberg!\n\t\t///</summary>\n\t\tREICHSTAG_A_GET_TO_MAIN_BUILDING_Description,\n\t\t///<summary>\n\t\t///Meet Colonel von Stauffenberg\n\t\t///</summary>\n\t\tREICHSTAG_A_MEET_COLONEL_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tREICHSTAG_A_MEET_COLONEL_Description,\n\t\t///<summary>\n\t\t///Pillage booty\n\t\t///</summary>\n\t\tCHINESE_TRANSMITTER_LOOT_CARGO_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tCHINESE_TRANSMITTER_LOOT_CARGO_Description,\n\t\t///<summary>\n\t\t///Pillage booty\n\t\t///</summary>\n\t\tCHINESE_TRANSMITTER_DIALOGUE_1_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tCHINESE_TRANSMITTER_DIALOGUE_1_Description,\n\t\t///<summary>\n\t\t///Proceed to the station\n\t\t///</summary>\n\t\tCHINESE_TRANSMITTER_CHECKPOINT_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tCHINESE_TRANSMITTER_CHECKPOINT_Description,\n\t\t///<summary>\n\t\t///Find camera control center\n\t\t///</summary>\n\t\tCHINESE_TRANSMITTER_FIND_SECURITY_CONTROL_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tCHINESE_TRANSMITTER_FIND_SECURITY_CONTROL_Description,\n\t\t///<summary>\n\t\t///Explore security center\n\t\t///</summary>\n\t\tCHINESE_TRANSMITTER_DIALOGUE_3_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tCHINESE_TRANSMITTER_DIALOGUE_3_Description,\n\t\t///<summary>\n\t\t///Destroy generator\n\t\t///</summary>\n\t\tCHINESE_TRANSMITTER_DESTROY_SECURITY_CONTROL_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tCHINESE_TRANSMITTER_DESTROY_SECURITY_CONTROL_Description,\n\t\t///<summary>\n\t\t///Find the command center\n\t\t///</summary>\n\t\tCHINESE_TRANSMITTER_FIND_CIC_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tCHINESE_TRANSMITTER_FIND_CIC_Description,\n\t\t///<summary>\n\t\t///Find the command center\n\t\t///</summary>\n\t\tCHINESE_TRANSMITTER_DIALOGUE_5_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tCHINESE_TRANSMITTER_DIALOGUE_5_Description,\n\t\t///<summary>\n\t\t///Open doors and disable command center defenses\n\t\t///</summary>\n\t\tCHINESE_TRANSMITTER_OPEN_CIC_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tCHINESE_TRANSMITTER_OPEN_CIC_Description,\n\t\t///<summary>\n\t\t///Place the alien detector\n\t\t///</summary>\n\t\tCHINESE_TRANSMITTER_DIALOGUE_6_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tCHINESE_TRANSMITTER_DIALOGUE_6_Description,\n\t\t///<summary>\n\t\t///Place the alien detector\n\t\t///</summary>\n\t\tCHINESE_TRANSMITTER_PLACE_DEVICE_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tCHINESE_TRANSMITTER_PLACE_DEVICE_Description,\n\t\t///<summary>\n\t\t///Help Tarja and Valentin\n\t\t///</summary>\n\t\tCHINESE_TRANSMITTER_ESCAPE_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tCHINESE_TRANSMITTER_ESCAPE_Description,\n\t\t///<summary>\n\t\t///Escape\n\t\t///</summary>\n\t\tCHINESE_TRANSMITTER_ESCAPE3_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tCHINESE_TRANSMITTER_ESCAPE3_Description,\n\t\t///<summary>\n\t\t///Save Thomas Barth\n\t\t///</summary>\n\t\tBARTHS_MOON_PLANT_SAVE_BARTH_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tBARTHS_MOON_PLANT_SAVE_BARTH_Description,\n\t\t///<summary>\n\t\t///Kill attackers\n\t\t///</summary>\n\t\tBARTHS_MOON_PLANT_KILL_ATTACKERS_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tBARTHS_MOON_PLANT_KILL_ATTACKERS_Description,\n\t\t///<summary>\n\t\t///Take turrets\n\t\t///</summary>\n\t\tBARTHS_MOON_PLANT_DEFENCE_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tBARTHS_MOON_PLANT_DEFENCE_Description,\n\t\t///<summary>\n\t\t///Build defense\n\t\t///</summary>\n\t\tBARTHS_MOON_PLANT_BUILD_DEFENCE_LINE_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tBARTHS_MOON_PLANT_BUILD_DEFENCE_LINE_Description,\n\t\t///<summary>\n\t\t///Protect Thomas Barth\n\t\t///</summary>\n\t\tBARTHS_MOON_PLANT_PROTECT_BARTH_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tBARTHS_MOON_PLANT_PROTECT_BARTH_Description,\n\t\t///<summary>\n\t\t///Protect Sapho from suicide ships\n\t\t///</summary>\n\t\tBARTHS_MOON_PLANT_PROTECT_MADELYN_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tBARTHS_MOON_PLANT_PROTECT_MADELYN_Description,\n\t\t///<summary>\n\t\t///Prepare for the last stand\n\t\t///</summary>\n\t\tBARTHS_MOON_PLANT_ENEMY_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tBARTHS_MOON_PLANT_ENEMY_Description,\n\t\t///<summary>\n\t\t///Destroy mothership generators\n\t\t///</summary>\n\t\tBARTHS_MOON_PLANT_DESTROY_GENERATORS_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tBARTHS_MOON_PLANT_DESTROY_GENERATORS_Description,\n\t\t///<summary>\n\t\t///Get components\n\t\t///</summary>\n\t\tBARTHS_MOON_PLANT_GET_NEEDED_COMPONENTS_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tBARTHS_MOON_PLANT_GET_NEEDED_COMPONENTS_Description,\n\t\t///<summary>\n\t\t///Construct detectors\n\t\t///</summary>\n\t\tBARTHS_MOON_PLANT_CONSTRUCT_DETECTORS_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tBARTHS_MOON_PLANT_CONSTRUCT_DETECTORS_Description,\n\t\t///<summary>\n\t\t///Talk to Thomas Barth\n\t\t///</summary>\n\t\tBARTHS_MOON_PLANT_TALK_BARTH_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tBARTHS_MOON_PLANT_TALK_BARTH_Description,\n\t\t///<summary>\n\t\t///Repair damaged turrets\n\t\t///</summary>\n\t\tRepairDamagedTurrets,\n\t\t///<summary>\n\t\t///Portable turrets\n\t\t///</summary>\n\t\tPortableTurrets,\n\t\t///<summary>\n\t\t///Build turret\n\t\t///</summary>\n\t\tBuildTurret,\n\t\t///<summary>\n\t\t///Prepare for the Rift\n\t\t///</summary>\n\t\tRIFT_GOTO_GETSUPPLIES1_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tRIFT_GOTO_GETSUPPLIES1_Description,\n\t\t///<summary>\n\t\t///Reach the Rift\n\t\t///</summary>\n\t\tRIFT_GOTO_10_Name,\n\t\t///<summary>\n\t\t///Don’t get killed by meteors or by the extreme heat!\n\t\t///</summary>\n\t\tRIFT_GOTO_10_Description,\n\t\t///<summary>\n\t\t///Harvest plutonium\n\t\t///</summary>\n\t\tRIFT_URANITE_Name,\n\t\t///<summary>\n\t\t///Harvest at least two units of plutonium.\n\t\t///</summary>\n\t\tRIFT_URANITE_Description,\n\t\t///<summary>\n\t\t///Return to Sapho\n\t\t///</summary>\n\t\tRIFT_GOTO_30_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tRIFT_GOTO_30_Description,\n\t\t///<summary>\n\t\t///Meet Francis Reef\n\t\t///</summary>\n\t\tRIME_CONVINCE_GET_FRANCIS_REEF_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tRIME_CONVINCE_GET_FRANCIS_REEF_Description,\n\t\t///<summary>\n\t\t///Approach the Duplex\n\t\t///</summary>\n\t\tRIME_CONVINCE_GO_TO_DUPLEX_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tRIME_CONVINCE_GO_TO_DUPLEX_Description,\n\t\t///<summary>\n\t\t///Join the conversation\n\t\t///</summary>\n\t\tTRADE_STATION_EAC_DIALOGUE_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tTRADE_STATION_EAC_DIALOGUE_Description,\n\t\t///<summary>\n\t\t///Help slaves\n\t\t///</summary>\n\t\tSLAVER_BASE_1_DIALOG_9_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tSLAVER_BASE_1_DIALOG_9_Description,\n\t\t///<summary>\n\t\t///Watch for trouble\n\t\t///</summary>\n\t\tJUNKYARD_CONVINCE_D_GO_TO_MARCUS_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tJUNKYARD_CONVINCE_D_GO_TO_MARCUS_Description,\n\t\t///<summary>\n\t\t///Speak to Manjeet\n\t\t///</summary>\n\t\tJUNKYARD_CONVINCE_D_RETURN_TO_SMUGGLER_Name,\n\t\t///<summary>\n\t\t///Get information from Manjeet. \n\t\t///</summary>\n\t\tJUNKYARD_CONVINCE_D_RETURN_TO_SMUGGLER_Description,\n\t\t///<summary>\n\t\t///Speak to Madelyn\n\t\t///</summary>\n\t\tCHINESE_ESCAPE_SPEAK_WITH_MADELYN_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tCHINESE_ESCAPE_SPEAK_WITH_MADELYN_Description,\n\t\t///<summary>\n\t\t///Speak to Tarja\n\t\t///</summary>\n\t\tJUNKYARD_CONVINCE_D_FIND_INFORMATOR_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tJUNKYARD_CONVINCE_D_FIND_INFORMATOR_Description,\n\t\t///<summary>\n\t\t///The contact has appeared\n\t\t///</summary>\n\t\tRIME_CONVINCE_CONTACT_APPEARS_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tRIME_CONVINCE_CONTACT_APPEARS_Description,\n\t\t///<summary>\n\t\t///Listen to the conversation\n\t\t///</summary>\n\t\tRIME_CONVINCE_CARGO_COLLECTED_DIALOG_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tRIME_CONVINCE_CARGO_COLLECTED_DIALOG_Description,\n\t\t///<summary>\n\t\t///Fly towards Sapho\n\t\t///</summary>\n\t\tCHINESE_ESCAPE_GET_CLOSER_Name,\n\t\t///<summary>\n\t\t///Prepare for the fight! \n\t\t///</summary>\n\t\tCHINESE_ESCAPE_GET_CLOSER_Description,\n\t\t///<summary>\n\t\t///Defend yourself\n\t\t///</summary>\n\t\tCHINESE_ESCAPE_DEFEND_SHIP_Name,\n\t\t///<summary>\n\t\t///Do not let the enemies destroy Sapho! \n\t\t///</summary>\n\t\tCHINESE_ESCAPE_DEFEND_SHIP_Description,\n\t\t///<summary>\n\t\t///Return to your position\n\t\t///</summary>\n\t\tRIME_CONVINCE_RETURN_TO_POSITION_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tRIME_CONVINCE_RETURN_TO_POSITION_Description,\n\t\t///<summary>\n\t\t///Follow the contact\n\t\t///</summary>\n\t\tRIME_CONVINCE_FOLLOW_CONTACT_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tRIME_CONVINCE_FOLLOW_CONTACT_Description,\n\t\t///<summary>\n\t\t///Listen to the conversation\n\t\t///</summary>\n\t\tRIME_CONVINCE_FACTORY_FOUND_DIALOGUE_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tRIME_CONVINCE_FACTORY_FOUND_DIALOGUE_Description,\n\t\t///<summary>\n\t\t///Kill guards\n\t\t///</summary>\n\t\tRIME_CONVINCE_DESTROY_FACTORY_BOTS_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tRIME_CONVINCE_DESTROY_FACTORY_BOTS_Description,\n\t\t///<summary>\n\t\t///Collect illegal cargo\n\t\t///</summary>\n\t\tRIME_CONVINCE_COLLECT_CARGO_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tRIME_CONVINCE_COLLECT_CARGO_Description,\n\t\t///<summary>\n\t\t///Approach Raynold’s vessel\n\t\t///</summary>\n\t\tRIME_CONVINCE_FLY_TO_VESSEL_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tRIME_CONVINCE_FLY_TO_VESSEL_Description,\n\t\t///<summary>\n\t\t///Wait for the right moment\n\t\t///</summary>\n\t\tRIME_CONVINCE_WAIT_FOR_THE_MOMENT_Name,\n\t\t///<summary>\n\t\t///Wait for the right moment to fly in. \n\t\t///</summary>\n\t\tRIME_CONVINCE_WAIT_FOR_THE_MOMENT_Description,\n\t\t///<summary>\n\t\t///Plant cargo in the vessel\n\t\t///</summary>\n\t\tRIME_CONVINCE_PLANT_CARGO_Name,\n\t\t///<summary>\n\t\t///Frame Raynold by planting illegal cargo in his vessel. \n\t\t///</summary>\n\t\tRIME_CONVINCE_PLANT_CARGO_Description,\n\t\t///<summary>\n\t\t///Get out\n\t\t///</summary>\n\t\tRIME_CONVINCE_GET_OUT_OF_THE_VESSEL_Name,\n\t\t///<summary>\n\t\t///Get out of the vessel before the guards will notice you. \n\t\t///</summary>\n\t\tRIME_CONVINCE_GET_OUT_OF_THE_VESSEL_Description,\n\t\t///<summary>\n\t\t///Return to Francis Reef\n\t\t///</summary>\n\t\tRIME_CONVINCE_GO_BACK_TO_FRANCIS_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tRIME_CONVINCE_GO_BACK_TO_FRANCIS_Description,\n\t\t///<summary>\n\t\t///Mine\n\t\t///</summary>\n\t\tMine,\n\t\t///<summary>\n\t\t///Report to captain Cedric\n\t\t///</summary>\n\t\tFORT_VALIANT_C_CAPTAIN_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tFORT_VALIANT_C_CAPTAIN_Description,\n\t\t///<summary>\n\t\t///Reach the upper floors\n\t\t///</summary>\n\t\tFORT_VALIANT_C_UPPER_FLOOR_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tFORT_VALIANT_C_UPPER_FLOOR_Description,\n\t\t///<summary>\n\t\t///Talk to the royal guard\n\t\t///</summary>\n\t\tFORT_VALIANT_C_EQUIP_TALK_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tFORT_VALIANT_C_EQUIP_TALK_Description,\n\t\t///<summary>\n\t\t///Hand out your equipment\n\t\t///</summary>\n\t\tFORT_VALIANT_C_EQUIP_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tFORT_VALIANT_C_EQUIP_Description,\n\t\t///<summary>\n\t\t///Meet the officials\n\t\t///</summary>\n\t\tFORT_VALIANT_C_MEET_OFFICIALS_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tFORT_VALIANT_C_MEET_OFFICIALS_Description,\n\t\t///<summary>\n\t\t///Leave the officials\n\t\t///</summary>\n\t\tFORT_VALIANT_C_LEAVE_OFFICIALS_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tFORT_VALIANT_C_LEAVE_OFFICIALS_Description,\n\t\t///<summary>\n\t\t///Follow given coordinates\n\t\t///</summary>\n\t\tFORT_VALIANT_C_LEAVE_FOLLOW_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tFORT_VALIANT_C_LEAVE_FOLLOW_Description,\n\t\t///<summary>\n\t\t///Speak to Sir Geraint\n\t\t///</summary>\n\t\tFORT_VALIANT_C_SPEAK_SIR_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tFORT_VALIANT_C_SPEAK_SIR_Description,\n\t\t///<summary>\n\t\t///Take equipment from the cargo box\n\t\t///</summary>\n\t\tFORT_VALIANT_C_GET_EQUP_CARGO_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tFORT_VALIANT_C_GET_EQUP_CARGO_Description,\n\t\t///<summary>\n\t\t///Find the vent entrance\n\t\t///</summary>\n\t\tFORT_VALIANT_C_FOLLOW_FIND_VENTILATION_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tFORT_VALIANT_C_FOLLOW_FIND_VENTILATION_Description,\n\t\t///<summary>\n\t\t///Turn off the gate\n\t\t///</summary>\n\t\tFORT_VALIANT_C_FOLLOW_TURN_OFF_GATE_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tFORT_VALIANT_C_FOLLOW_TURN_OFF_GATE_Description,\n\t\t///<summary>\n\t\t///Find the entrance to the vault\n\t\t///</summary>\n\t\tFORT_VALIANT_C_SCANNERS1_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tFORT_VALIANT_C_SCANNERS1_Description,\n\t\t///<summary>\n\t\t///Reach the gate of the vault\n\t\t///</summary>\n\t\tFORT_VALIANT_C_SCANNERS2_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tFORT_VALIANT_C_SCANNERS2_Description,\n\t\t///<summary>\n\t\t///Enter the vault\n\t\t///</summary>\n\t\tFORT_VALIANT_C_SCANNERS23_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tFORT_VALIANT_C_SCANNERS23_Description,\n\t\t///<summary>\n\t\t///Find the artifact hidden in a concrete box\n\t\t///</summary>\n\t\tFORT_VALIANT_C_TAKE_ARTEFACT_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tFORT_VALIANT_C_TAKE_ARTEFACT_Description,\n\t\t///<summary>\n\t\t///Exit the vault\n\t\t///</summary>\n\t\tFORT_VALIANT_C_VALUT_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tFORT_VALIANT_C_VALUT_Description,\n\t\t///<summary>\n\t\t///Turn off the scanner\n\t\t///</summary>\n\t\tFORT_VALIANT_C_TURN_OFF_SCANNER_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tFORT_VALIANT_C_TURN_OFF_SCANNER_Description,\n\t\t///<summary>\n\t\t///Get to higher floors\n\t\t///</summary>\n\t\tFORT_VALIANT_C_SCANNERS4_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tFORT_VALIANT_C_SCANNERS4_Description,\n\t\t///<summary>\n\t\t///Get to the top elevator\n\t\t///</summary>\n\t\tFORT_VALIANT_C_TOP_ELEVATOR_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tFORT_VALIANT_C_TOP_ELEVATOR_Description,\n\t\t///<summary>\n\t\t///Escape through the vents\n\t\t///</summary>\n\t\tFORT_VALIANT_C_VENT_SYSTEM_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tFORT_VALIANT_C_VENT_SYSTEM_Description,\n\t\t///<summary>\n\t\t///Escape through the catacombs\n\t\t///</summary>\n\t\tFORT_VALIANT_C_CATACOMBS_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tFORT_VALIANT_C_CATACOMBS_Description,\n\t\t///<summary>\n\t\t///Pick up your equipment\n\t\t///</summary>\n\t\tFORT_VALIANT_C_PICK_UP_EQUIP_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tFORT_VALIANT_C_PICK_UP_EQUIP_Description,\n\t\t///<summary>\n\t\t///Approach Fort Valiant\n\t\t///</summary>\n\t\tFORT_VALIANT_B_FLY_ONE_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tFORT_VALIANT_B_FLY_ONE_Description,\n\t\t///<summary>\n\t\t///Report to captain Cedric\n\t\t///</summary>\n\t\tFORT_VALIANT_B_MEET_CAPTAIN_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tFORT_VALIANT_B_MEET_CAPTAIN_Description,\n\t\t///<summary>\n\t\t///Visit the Templar supplies and the equipment vendor\n\t\t///</summary>\n\t\tFORT_VALIANT_B_VISIT_VENDOR_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tFORT_VALIANT_B_VISIT_VENDOR_Description,\n\t\t///<summary>\n\t\t///Find the best way inside\n\t\t///</summary>\n\t\tSLAVER_BASE_1_DIALOG_1_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tSLAVER_BASE_1_DIALOG_1_Description,\n\t\t///<summary>\n\t\t///Destroy generators\n\t\t///</summary>\n\t\tSLAVER_BASE_1_DESTROY_GENERATOR_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tSLAVER_BASE_1_DESTROY_GENERATOR_Description,\n\t\t///<summary>\n\t\t///Disable the transmitter\n\t\t///</summary>\n\t\tSLAVER_BASE_1_DIALOG_2_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tSLAVER_BASE_1_DIALOG_2_Description,\n\t\t///<summary>\n\t\t///Destroy backup batteries\n\t\t///</summary>\n\t\tSLAVER_BASE_1_DESTROY_BATTERIES_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tSLAVER_BASE_1_DESTROY_BATTERIES_Description,\n\t\t///<summary>\n\t\t///Find the prison\n\t\t///</summary>\n\t\tSLAVER_BASE_1_FIND_PRISON_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tSLAVER_BASE_1_FIND_PRISON_Description,\n\t\t///<summary>\n\t\t///Free the slaves\n\t\t///</summary>\n\t\tSLAVER_BASE_1_FREE_SLAVES_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tSLAVER_BASE_1_FREE_SLAVES_Description,\n\t\t///<summary>\n\t\t///Open ship doors\n\t\t///</summary>\n\t\tSLAVER_BASE_1_HACK_HANGAR_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tSLAVER_BASE_1_HACK_HANGAR_Description,\n\t\t///<summary>\n\t\t///Free the slaves\n\t\t///</summary>\n\t\tSLAVER_BASE_1_FREE_SLAVES_2_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tSLAVER_BASE_1_FREE_SLAVES_2_Description,\n\t\t///<summary>\n\t\t///Find out where pilots are held\n\t\t///</summary>\n\t\tSLAVER_BASE_1_DIALOG_6_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tSLAVER_BASE_1_DIALOG_6_Description,\n\t\t///<summary>\n\t\t///Free the pilots\n\t\t///</summary>\n\t\tSLAVER_BASE_1_FIND_SLAVES_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tSLAVER_BASE_1_FIND_SLAVES_Description,\n\t\t///<summary>\n\t\t///Protect the slaves\n\t\t///</summary>\n\t\tSLAVER_BASE_1_DIALOG_7_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tSLAVER_BASE_1_DIALOG_7_Description,\n\t\t///<summary>\n\t\t///Destroy enemy reinforcements\n\t\t///</summary>\n\t\tSLAVER_BASE_1_DESTROY_ENEMIES_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tSLAVER_BASE_1_DESTROY_ENEMIES_Description,\n\t\t///<summary>\n\t\t///Open hangar doors\n\t\t///</summary>\n\t\tSLAVER_BASE_1_HACK_NUKE_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tSLAVER_BASE_1_HACK_NUKE_Description,\n\t\t///<summary>\n\t\t///Watch the mothership leave\n\t\t///</summary>\n\t\tSLAVER_BASE_1_DIALOG_10_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tSLAVER_BASE_1_DIALOG_10_Description,\n\t\t///<summary>\n\t\t///Approach Fort Valiant\n\t\t///</summary>\n\t\tFORT_VALIANT_FLY_ONE_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tFORT_VALIANT_FLY_ONE_Description,\n\t\t///<summary>\n\t\t///Reach the gate\n\t\t///</summary>\n\t\tFORT_VALIANT_SPEAK_GATE_KEEPER_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tFORT_VALIANT_SPEAK_GATE_KEEPER_Description,\n\t\t///<summary>\n\t\t///Meet captain Cedric\n\t\t///</summary>\n\t\tFORT_VALIANT_MEET_CAPTAIN_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tFORT_VALIANT_MEET_CAPTAIN_Description,\n\t\t///<summary>\n\t\t///Visit the local vendor\n\t\t///</summary>\n\t\tFORT_VALIANT_VISIT_VENDOR_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tFORT_VALIANT_VISIT_VENDOR_Description,\n\t\t///<summary>\n\t\t///Meet Manjeet in the city\n\t\t///</summary>\n\t\tJUNKYARD_RETURN_MEET_SMUGGLER_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tJUNKYARD_RETURN_MEET_SMUGGLER_Description,\n\t\t///<summary>\n\t\t///Go to the starting line and wait for the race start\n\t\t///</summary>\n\t\tJUNKYARD_RETURN_FLY_TO_START_Name,\n\t\t///<summary>\n\t\t///Fly to the starting line and prepare for the race! \n\t\t///</summary>\n\t\tJUNKYARD_RETURN_FLY_TO_START_Description,\n\t\t///<summary>\n\t\t///Reach all checkpoints\n\t\t///</summary>\n\t\tJUNKYARD_RETURN_RACE_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tJUNKYARD_RETURN_RACE_PrepareName,\n\t\t///<summary>\n\t\t///Win the race\n\t\t///</summary>\n\t\tJUNKYARD_RETURN_RACE_GoBackName,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tJUNKYARD_RETURN_RACE_Description,\n\t\t///<summary>\n\t\t///Bask in your victory\n\t\t///</summary>\n\t\tJUNKYARD_RETURN_WIN_Name,\n\t\t///<summary>\n\t\t///Get the artifact from Manjeet \n\t\t///</summary>\n\t\tJUNKYARD_RETURN_WIN_Description,\n\t\t///<summary>\n\t\t///Return to Manjeet\n\t\t///</summary>\n\t\tJUNKYARD_RETURN_GO_TO_SMUGGLER_name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tJUNKYARD_RETURN_GO_TO_SMUGGLER_Description,\n\t\t///<summary>\n\t\t///Speak to Manjeet\n\t\t///</summary>\n\t\tJUNKYARD_RETURN_DIALOGUE_RETURN_Name,\n\t\t///<summary>\n\t\t///Speak to Manjeet and get the artifact. \n\t\t///</summary>\n\t\tJUNKYARD_RETURN_DIALOGUE_RETURN_Description,\n\t\t///<summary>\n\t\t///Fly to the start line\n\t\t///</summary>\n\t\tFlyToStartingPoint,\n\t\t///<summary>\n\t\t///Race Oponent\n\t\t///</summary>\n\t\tRaceOpponent,\n\t\t///<summary>\n\t\t///Approach the asteroid\n\t\t///</summary>\n\t\tCHINESE_REFINERY_01_GET_CLOSER_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tCHINESE_REFINERY_01_GET_CLOSER_Description,\n\t\t///<summary>\n\t\t///Get inside\n\t\t///</summary>\n\t\tCHINESE_REFINERY_02_GET_IN_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tCHINESE_REFINERY_02_GET_IN_Description,\n\t\t///<summary>\n\t\t///Find the secret lab\n\t\t///</summary>\n\t\tCHINESE_REFINERY_03_FIND_SECRET_ROOM_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tCHINESE_REFINERY_03_FIND_SECRET_ROOM_Description,\n\t\t///<summary>\n\t\t///Explore secret lab\n\t\t///</summary>\n\t\tCHINESE_REFINERY_03_D_FIND_SECRET_ROOM_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tCHINESE_REFINERY_03_D_FIND_SECRET_ROOM_Description,\n\t\t///<summary>\n\t\t///Install virus\n\t\t///</summary>\n\t\tCHINESE_REFINERY_04_SET_VIRUS_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tCHINESE_REFINERY_04_SET_VIRUS_Description,\n\t\t///<summary>\n\t\t///Deactivate warhead\n\t\t///</summary>\n\t\tCHINESE_REFINERY_05_DEACTIVATE_BOMB_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tCHINESE_REFINERY_05_DEACTIVATE_BOMB_Description,\n\t\t///<summary>\n\t\t///Reach the tunnel\n\t\t///</summary>\n\t\tCHINESE_REFINERY_06_GET_TO_FIRST_TUNNEL_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tCHINESE_REFINERY_06_GET_TO_FIRST_TUNNEL_Description,\n\t\t///<summary>\n\t\t///Fly to the other side\n\t\t///</summary>\n\t\tCHINESE_REFINERY_07_PAST_FIRST_TUNNEL_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tCHINESE_REFINERY_07_PAST_FIRST_TUNNEL_Description,\n\t\t///<summary>\n\t\t///Hack the computer for Manjeet\n\t\t///</summary>\n\t\tCHINESE_REFINERY_08_SET_BUG_IN_COMPUTER_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tCHINESE_REFINERY_08_SET_BUG_IN_COMPUTER_Description,\n\t\t///<summary>\n\t\t///Reach the tunnel\n\t\t///</summary>\n\t\tCHINESE_REFINERY_09_GET_TO_SECOND_TUNNEL_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tCHINESE_REFINERY_09_GET_TO_SECOND_TUNNEL_Description,\n\t\t///<summary>\n\t\t///Fly to the other side\n\t\t///</summary>\n\t\tCHINESE_REFINERY_10_PAST_SECOND_TUNNEL_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tCHINESE_REFINERY_10_PAST_SECOND_TUNNEL_Description,\n\t\t///<summary>\n\t\t///Enter the base\n\t\t///</summary>\n\t\tCHINESE_REFINERY_11_SNEAK_INSIDE_THE_STATION_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tCHINESE_REFINERY_11_SNEAK_INSIDE_THE_STATION_Description,\n\t\t///<summary>\n\t\t///Enter the control room through the backdoor\n\t\t///</summary>\n\t\tCHINESE_REFINERY_12_GET_TO_OLD_PATH_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tCHINESE_REFINERY_12_GET_TO_OLD_PATH_Description,\n\t\t///<summary>\n\t\t///Change the records\n\t\t///</summary>\n\t\tCHINESE_REFINERY_13_HACK_REFINARY_COMPUTER_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tCHINESE_REFINERY_13_HACK_REFINARY_COMPUTER_Description,\n\t\t///<summary>\n\t\t///Leave the station\n\t\t///</summary>\n\t\tCHINESE_REFINERY_14_GET_OUT_OF_THE_STATION_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tCHINESE_REFINERY_14_GET_OUT_OF_THE_STATION_Description,\n\t\t///<summary>\n\t\t///Join the others\n\t\t///</summary>\n\t\tCHINESE_REFINERY_15_LAND_INSIDE_THE_TRANSPORTER_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tCHINESE_REFINERY_15_LAND_INSIDE_THE_TRANSPORTER_Description,\n\t\t///<summary>\n\t\t///Computer\n\t\t///</summary>\n\t\tSetVirusInComputer,\n\t\t///<summary>\n\t\t///Computer\n\t\t///</summary>\n\t\tSetBugInComputer,\n\t\t///<summary>\n\t\t///Hack the system\n\t\t///</summary>\n\t\tHackSystem,\n\t\t///<summary>\n\t\t///Get the key\n\t\t///</summary>\n\t\tCHINESE_TRANSPORT_GET_SECURITY_KEY_Name,\n\t\t///<summary>\n\t\t///Hack the computer and get the first security key. \n\t\t///</summary>\n\t\tCHINESE_TRANSPORT_GET_SECURITY_KEY_Description,\n\t\t///<summary>\n\t\t///Reach the tunnel\n\t\t///</summary>\n\t\tCHINESE_TRANSPORT_REACH_TUNNEL_1_Name,\n\t\t///<summary>\n\t\t///Reach the connection tunnel and fly straight to the transmitter. \n\t\t///</summary>\n\t\tCHINESE_TRANSPORT_REACH_TUNNEL_1_Description,\n\t\t///<summary>\n\t\t///Reach the transmitter\n\t\t///</summary>\n\t\tCHINESE_TRANSPORT_REACH_TRANSMITTER_Name,\n\t\t///<summary>\n\t\t///Fly through the tunnel straight to the transmitter. \n\t\t///</summary>\n\t\tCHINESE_TRANSPORT_REACH_TRANSMITTER_Description,\n\t\t///<summary>\n\t\t///Kill the guards\n\t\t///</summary>\n\t\tCHINESE_TRANSPORT_KILL_GUARDS_Name,\n\t\t///<summary>\n\t\t///Kill the guards around the transmitter. \n\t\t///</summary>\n\t\tCHINESE_TRANSPORT_KILL_GUARDS_Description,\n\t\t///<summary>\n\t\t///Use the key\n\t\t///</summary>\n\t\tCHINESE_TRANSPORT_HACK_TRANSMITTER_Name,\n\t\t///<summary>\n\t\t///Use the security keys to disable the service computers inside the transmitter. \n\t\t///</summary>\n\t\tCHINESE_TRANSPORT_HACK_TRANSMITTER_Description,\n\t\t///<summary>\n\t\t///Place bomb\n\t\t///</summary>\n\t\tCHINESE_TRANSPORT_PLACE_BOMB_Name,\n\t\t///<summary>\n\t\t///Place the bomb on the transmitter. \n\t\t///</summary>\n\t\tCHINESE_TRANSPORT_PLACE_BOMB_Description,\n\t\t///<summary>\n\t\t///Hide from explosion\n\t\t///</summary>\n\t\tCHINESE_TRANSPORT_RUN_EXPLOSION_Name,\n\t\t///<summary>\n\t\t///Hide before the explosion starts. \n\t\t///</summary>\n\t\tCHINESE_TRANSPORT_RUN_EXPLOSION_Description,\n\t\t///<summary>\n\t\t///Enjoy fireworks\n\t\t///</summary>\n\t\tCHINESE_TRANSPORT_LOOK_ON_EXPLOSION_Name,\n\t\t///<summary>\n\t\t///Make sure the transmitter is completely destroyed. \n\t\t///</summary>\n\t\tCHINESE_TRANSPORT_LOOK_ON_EXPLOSION_Description,\n\t\t///<summary>\n\t\t///Reach second tunnel\n\t\t///</summary>\n\t\tCHINESE_TRANSPORT_REACH_TUNNEL_2_Name,\n\t\t///<summary>\n\t\t///Reach the second connection tunnel to the hangar. \n\t\t///</summary>\n\t\tCHINESE_TRANSPORT_REACH_TUNNEL_2_Description,\n\t\t///<summary>\n\t\t///Fly to the other side\n\t\t///</summary>\n\t\tCHINESE_TRANSPORT_PAST_TUNNEL_2_Name,\n\t\t///<summary>\n\t\t///Reach the asteroid with the hangar. \n\t\t///</summary>\n\t\tCHINESE_TRANSPORT_PAST_TUNNEL_2_Description,\n\t\t///<summary>\n\t\t///Enter service room\n\t\t///</summary>\n\t\tCHINESE_TRANSPORT_REACH_HANGAR_HACK_Name,\n\t\t///<summary>\n\t\t///Reach the service room of the hangar. \n\t\t///</summary>\n\t\tCHINESE_TRANSPORT_REACH_HANGAR_HACK_Description,\n\t\t///<summary>\n\t\t///Hack hangar database\n\t\t///</summary>\n\t\tCHINESE_TRANSPORT_HACK_HANGAR_SERVICE_PC_Name,\n\t\t///<summary>\n\t\t///Hack the hangar database to get the safety mark of your ship. \n\t\t///</summary>\n\t\tCHINESE_TRANSPORT_HACK_HANGAR_SERVICE_PC_Description,\n\t\t///<summary>\n\t\t///Defend Marcus\n\t\t///</summary>\n\t\tCHINESE_TRANSPORT_DEFEND_MARCUS_Name,\n\t\t///<summary>\n\t\t///Kill all Chinese ships. \n\t\t///</summary>\n\t\tCHINESE_TRANSPORT_DEFEND_MARCUS_Description,\n\t\t///<summary>\n\t\t///Kill the Chinese commando\n\t\t///</summary>\n\t\tCHINESE_TRANSPORT_KILL_BOSS_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tCHINESE_TRANSPORT_KILL_BOSS_Description,\n\t\t///<summary>\n\t\t///Board the ship\n\t\t///</summary>\n\t\tCHINESE_TRANSPORT_LAND_IN_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tCHINESE_TRANSPORT_LAND_IN_Description,\n\t\t///<summary>\n\t\t///General Chen Lin\n\t\t///</summary>\n\t\tGeneralChenLin,\n\t\t///<summary>\n\t\t///Get first security key\n\t\t///</summary>\n\t\tGetFirstSecurityKey,\n\t\t///<summary>\n\t\t///Use first security key\n\t\t///</summary>\n\t\tUseFirstSecurityKey,\n\t\t///<summary>\n\t\t///Use second security key\n\t\t///</summary>\n\t\tUseSecondSecurityKey,\n\t\t///<summary>\n\t\t///Database\n\t\t///</summary>\n\t\tHackHangarDatabase,\n\t\t///<summary>\n\t\t///Find the informant\n\t\t///</summary>\n\t\tJUNKYARD_CONVINCE_FIND_INFORMATOR_Name,\n\t\t///<summary>\n\t\t///Look for information about the smuggler in the City. \n\t\t///</summary>\n\t\tJUNKYARD_CONVINCE_FIND_INFORMATOR_Description,\n\t\t///<summary>\n\t\t///Look for Manjeet in the hangar\n\t\t///</summary>\n\t\tJUNKYARD_CONVINCE_FIND_SMUGGLER_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tJUNKYARD_CONVINCE_FIND_SMUGGLER_Description,\n\t\t///<summary>\n\t\t///Catch Manjeet\n\t\t///</summary>\n\t\tJUNKYARD_CONVINCE_FOLLOW_SMUGGLER_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tJUNKYARD_CONVINCE_FOLLOW_SMUGGLER_Description,\n\t\t///<summary>\n\t\t///Speak to Manjeet\n\t\t///</summary>\n\t\tJUNKYARD_CONVINCE_D_FOLLOW_SMUGGLER_Name,\n\t\t///<summary>\n\t\t///Convince Manjeet to give you the artifact\n\t\t///</summary>\n\t\tJUNKYARD_CONVINCE_D_FOLLOW_SMUGGLER_Description,\n\t\t///<summary>\n\t\t///Find Momo’s gang\n\t\t///</summary>\n\t\tJUNKYARD_CONVINCE_FLY_TO_ENEMY_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tJUNKYARD_CONVINCE_FLY_TO_ENEMY_Description,\n\t\t///<summary>\n\t\t///Kill Momo’s men\n\t\t///</summary>\n\t\tJUNKYARD_CONVINCE_KILL_WAVES_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tJUNKYARD_CONVINCE_KILL_WAVES_Description,\n\t\t///<summary>\n\t\t///Approach to Momo\n\t\t///</summary>\n\t\tJUNKYARD_CONVINCE_SPEAK_WITH_MOMO_Name,\n\t\t///<summary>\n\t\t///Get closer to Momo and speak to him. \n\t\t///</summary>\n\t\tJUNKYARD_CONVINCE_SPEAK_WITH_MOMO_Description,\n\t\t///<summary>\n\t\t///Speak to Momo\n\t\t///</summary>\n\t\tJUNKYARD_CONVINCE_D_SPEAK_WITH_MOMO_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tJUNKYARD_CONVINCE_D_SPEAK_WITH_MOMO_Description,\n\t\t///<summary>\n\t\t///Kill Momo and his gang\n\t\t///</summary>\n\t\tJUNKYARD_CONVINCE_FIGHT_MOMO_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tJUNKYARD_CONVINCE_FIGHT_MOMO_Description,\n\t\t///<summary>\n\t\t///Return to Manjeet\n\t\t///</summary>\n\t\tJUNKYARD_CONVINCE_RETURN_TO_SMUGGLER_Name,\n\t\t///<summary>\n\t\t///Return to Manjeet for the reward. \n\t\t///</summary>\n\t\tJUNKYARD_CONVINCE_RETURN_TO_SMUGGLER_Description,\n\t\t///<summary>\n\t\t///Fly to the bomb dealer\n\t\t///</summary>\n\t\tJUNKYARD_CONVINCE_GO_TO_BOMB_DEALER_Name,\n\t\t///<summary>\n\t\t///Find the bomb dealer and get the bomb! \n\t\t///</summary>\n\t\tJUNKYARD_CONVINCE_GO_TO_BOMB_DEALER_Description,\n\t\t///<summary>\n\t\t///Speak to the bomb dealer\n\t\t///</summary>\n\t\tJUNKYARD_CONVINCE_D_GO_TO_BOMB_DEALER_Name,\n\t\t///<summary>\n\t\t///Get the bomb from the dealer.\n\t\t///</summary>\n\t\tJUNKYARD_CONVINCE_D_GO_TO_BOMB_DEALER_Description,\n\t\t///<summary>\n\t\t///Fly to Marcus\n\t\t///</summary>\n\t\tJUNKYARD_CONVINCE_GO_TO_MARCUS_Name,\n\t\t///<summary>\n\t\t///Marcus could be in trouble. Go help him. \n\t\t///</summary>\n\t\tJUNKYARD_CONVINCE_GO_TO_MARCUS_Description,\n\t\t///<summary>\n\t\t///Kill the enemies\n\t\t///</summary>\n\t\tJUNKYARD_CONVINCE_BR_FIGHT_Name,\n\t\t///<summary>\n\t\t///Crush. Kill. Destroy. Swag. \n\t\t///</summary>\n\t\tJUNKYARD_CONVINCE_BR_FIGHT_Description,\n\t\t///<summary>\n\t\t///Return to Madelyn\n\t\t///</summary>\n\t\tJUNKYARD_CONVINCE_RETURN_TO_MS_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tJUNKYARD_CONVINCE_RETURN_TO_MS_Description,\n\t\t///<summary>\n\t\t///Gangster boss\n\t\t///</summary>\n\t\tGangsterBoss,\n\t\t///<summary>\n\t\t///Meet Thomas Barth in his lab\n\t\t///</summary>\n\t\tBARTHS_MOON_TRANSMITTER_MEET_BARTH_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tBARTHS_MOON_TRANSMITTER_MEET_BARTH_Description,\n\t\t///<summary>\n\t\t///Talk to Thomas Barth\n\t\t///</summary>\n\t\tBARTHS_MOON_TRANSMITTER_TALK_TO_BARTH_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tBARTHS_MOON_TRANSMITTER_TALK_TO_BARTH_Description,\n\t\t///<summary>\n\t\t///Follow the path to Broken Moon\n\t\t///</summary>\n\t\tBARTHS_MOON_TRANSMITTER_FIND_WAY_TO_MOON_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tBARTHS_MOON_TRANSMITTER_FIND_WAY_TO_MOON_Description,\n\t\t///<summary>\n\t\t///Dig to reach the labs\n\t\t///</summary>\n\t\tBARTHS_MOON_TRANSMITTER_DESTROY_LAB_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tBARTHS_MOON_TRANSMITTER_DESTROY_LAB_Description,\n\t\t///<summary>\n\t\t///Turn on the backup\n\t\t///</summary>\n\t\tBARTHS_MOON_TRANSMITTER_ENABLE_GENERATOR_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tBARTHS_MOON_TRANSMITTER_ENABLE_GENERATOR_Description,\n\t\t///<summary>\n\t\t///Enter hub and check generators\n\t\t///</summary>\n\t\tBARTHS_MOON_TRANSMITTER_LOOK_HUBS_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tBARTHS_MOON_TRANSMITTER_LOOK_HUBS_Description,\n\t\t///<summary>\n\t\t///Find drones and hacking tools\n\t\t///</summary>\n\t\tBARTHS_MOON_TRANSMITTER_GET_ITEMS_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tBARTHS_MOON_TRANSMITTER_GET_ITEMS_Description,\n\t\t///<summary>\n\t\t///Find a vent entrance\n\t\t///</summary>\n\t\tBARTHS_MOON_TRANSMITTER_FAN_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tBARTHS_MOON_TRANSMITTER_FAN_Description,\n\t\t///<summary>\n\t\t///Release a drone\n\t\t///</summary>\n\t\tBARTHS_MOON_TRANSMITTER_DRONES_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tBARTHS_MOON_TRANSMITTER_DRONES_Description,\n\t\t///<summary>\n\t\t///Start generator with drone\n\t\t///</summary>\n\t\tBARTHS_MOON_TRANSMITTER_ENABLE_GENERATOR_DRONE1_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tBARTHS_MOON_TRANSMITTER_ENABLE_GENERATOR_DRONE1_Description,\n\t\t///<summary>\n\t\t///Start second generator with drone\n\t\t///</summary>\n\t\tBARTHS_MOON_TRANSMITTER_ENABLE_GENERATOR_DRONE2_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tBARTHS_MOON_TRANSMITTER_ENABLE_GENERATOR_DRONE2_Description,\n\t\t///<summary>\n\t\t///Enter the hub in the lab control room\n\t\t///</summary>\n\t\tBARTHS_MOON_TRANSMITTER_LOOK_HUBS2_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tBARTHS_MOON_TRANSMITTER_LOOK_HUBS2_Description,\n\t\t///<summary>\n\t\t///Download data from all hubs 1/4\n\t\t///</summary>\n\t\tBARTHS_MOON_TRANSMITTER_DOWNLOAD_DATA1_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tBARTHS_MOON_TRANSMITTER_DOWNLOAD_DATA1_Description,\n\t\t///<summary>\n\t\t///Download data from all hubs 2/4\n\t\t///</summary>\n\t\tBARTHS_MOON_TRANSMITTER_DOWNLOAD_DATA2_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tBARTHS_MOON_TRANSMITTER_DOWNLOAD_DATA2_Description,\n\t\t///<summary>\n\t\t///Download data from all hubs 3/4\n\t\t///</summary>\n\t\tBARTHS_MOON_TRANSMITTER_DOWNLOAD_DATA3_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tBARTHS_MOON_TRANSMITTER_DOWNLOAD_DATA3_Description,\n\t\t///<summary>\n\t\t///Download data from all hubs 4/4\n\t\t///</summary>\n\t\tBARTHS_MOON_TRANSMITTER_DOWNLOAD_DATA4_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tBARTHS_MOON_TRANSMITTER_DOWNLOAD_DATA4_Description,\n\t\t///<summary>\n\t\t///Enter the main lab\n\t\t///</summary>\n\t\tBARTHS_MOON_TRANSMITTER_ENTER_MAINLAB_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tBARTHS_MOON_TRANSMITTER_ENTER_MAINLAB_Description,\n\t\t///<summary>\n\t\t///Destroy the AI\n\t\t///</summary>\n\t\tBARTHS_MOON_TRANSMITTER_DESTROY_COMPUTER_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tBARTHS_MOON_TRANSMITTER_DESTROY_COMPUTER_Description,\n\t\t///<summary>\n\t\t///Collect needed parts\n\t\t///</summary>\n\t\tBARTHS_MOON_TRANSMITTER_FIND_PART3_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tBARTHS_MOON_TRANSMITTER_FIND_PART3_Description,\n\t\t///<summary>\n\t\t///Leave the labs\n\t\t///</summary>\n\t\tBARTHS_MOON_TRANSMITTER_FIND_WAY_OUT_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tBARTHS_MOON_TRANSMITTER_FIND_WAY_OUT_Description,\n\t\t///<summary>\n\t\t///Build the transmitter\n\t\t///</summary>\n\t\tBARTHS_MOON_TRANSMITTER_BUILD_TRANSMITTER_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tBARTHS_MOON_TRANSMITTER_BUILD_TRANSMITTER_Description,\n\t\t///<summary>\n\t\t///Return to Sapho\n\t\t///</summary>\n\t\tBARTHS_MOON_TRANSMITTER_RETURN_BACK_TO_MADELYN_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tBARTHS_MOON_TRANSMITTER_RETURN_BACK_TO_MADELYN_Description,\n\t\t///<summary>\n\t\t///Enter the main station\n\t\t///</summary>\n\t\tRUSSIAN_WAREHOUSE_SNEAKINMAINBASE_Name,\n\t\t///<summary>\n\t\t///It should be a breeze with all the fighting around you. \n\t\t///</summary>\n\t\tRUSSIAN_WAREHOUSE_SNEAKINMAINBASE_Description,\n\t\t///<summary>\n\t\t///Disable security cameras\n\t\t///</summary>\n\t\tRUSSIAN_WAREHOUSE_TURNOFFCAMS_Name,\n\t\t///<summary>\n\t\t///The security hub should be located in the right wing. \n\t\t///</summary>\n\t\tRUSSIAN_WAREHOUSE_TURNOFFCAMS_Description,\n\t\t///<summary>\n\t\t///Disable turrets at the old entrance\n\t\t///</summary>\n\t\tRUSSIAN_WAREHOUSE_CTRLTURRET_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tRUSSIAN_WAREHOUSE_CTRLTURRET_Description,\n\t\t///<summary>\n\t\t///Open doors\n\t\t///</summary>\n\t\tRUSSIAN_WAREHOUSE_OPEN_DOORS_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tRUSSIAN_WAREHOUSE_OPEN_DOORS_Description,\n\t\t///<summary>\n\t\t///Leave the station\n\t\t///</summary>\n\t\tRUSSIAN_WAREHOUSE_GETOUTMAINBASE_Name,\n\t\t///<summary>\n\t\t///Use the door at the very bottom of the station. \n\t\t///</summary>\n\t\tRUSSIAN_WAREHOUSE_GETOUTMAINBASE_Description,\n\t\t///<summary>\n\t\t///Break through the old entrance\n\t\t///</summary>\n\t\tRUSSIAN_WAREHOUSE_BREAKOLDENTRANCE_Name,\n\t\t///<summary>\n\t\t///You may need to use rockets or the drill to clear the rocks. \n\t\t///</summary>\n\t\tRUSSIAN_WAREHOUSE_BREAKOLDENTRANCE_Description,\n\t\t///<summary>\n\t\t///Locate the warehouse\n\t\t///</summary>\n\t\tRUSSIAN_WAREHOUSE_LOCATEWAREHOUSE_Name,\n\t\t///<summary>\n\t\t///It’s supposed to be in a cave carved inside the asteroid. \n\t\t///</summary>\n\t\tRUSSIAN_WAREHOUSE_LOCATEWAREHOUSE_Description,\n\t\t///<summary>\n\t\t///Find the transmitter\n\t\t///</summary>\n\t\tRUSSIAN_WAREHOUSE_FINDTRANSMITTER_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tRUSSIAN_WAREHOUSE_FINDTRANSMITTER_Description,\n\t\t///<summary>\n\t\t///Download data\n\t\t///</summary>\n\t\tRUSSIAN_WAREHOUSE_DOWNLOAD_DATA_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tRUSSIAN_WAREHOUSE_DOWNLOAD_DATA_Description,\n\t\t///<summary>\n\t\t///Disable hub A turrets\n\t\t///</summary>\n\t\tRUSSIAN_WAREHOUSE_TURNOFFMAINDEF_PART1_Name,\n\t\t///<summary>\n\t\t///This will allow the pirate mothership arrive and loot unhindered. \n\t\t///</summary>\n\t\tRUSSIAN_WAREHOUSE_TURNOFFMAINDEF_PART1_Description,\n\t\t///<summary>\n\t\t///Disable hub B turrets\n\t\t///</summary>\n\t\tRUSSIAN_WAREHOUSE_TURNOFFMAINDEF_PART2_Name,\n\t\t///<summary>\n\t\t///This will allow the pirate mothership arrive and loot unhindered. \n\t\t///</summary>\n\t\tRUSSIAN_WAREHOUSE_TURNOFFMAINDEF_PART2_Description,\n\t\t///<summary>\n\t\t///Leave warehouse through cargo bay\n\t\t///</summary>\n\t\tRUSSIAN_WAREHOUSE_GETOUTWAREHOUSE_Name,\n\t\t///<summary>\n\t\t///The pirate mothership will arrive. \n\t\t///</summary>\n\t\tRUSSIAN_WAREHOUSE_GETOUTWAREHOUSE_Description,\n\t\t///<summary>\n\t\t///Destroy remaining Russian ships\n\t\t///</summary>\n\t\tRUSSIAN_WAREHOUSE_CRUSHREMAINGSHIPS_Name,\n\t\t///<summary>\n\t\t///A few brave Russians are still resisting. Crush their hopes. Their weakness is bullets. Rockets may work, too. \n\t\t///</summary>\n\t\tRUSSIAN_WAREHOUSE_CRUSHREMAINGSHIPS_Description,\n\t\t///<summary>\n\t\t///Return to Sapho\n\t\t///</summary>\n\t\tRUSSIAN_WAREHOUSE_MEETINGPOINT_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tRUSSIAN_WAREHOUSE_MEETINGPOINT_Description,\n\t\t///<summary>\n\t\t///Russian reinforcements\n\t\t///</summary>\n\t\tRussianReinforcements,\n\t\t///<summary>\n\t\t///Find the pirate base\n\t\t///</summary>\n\t\tPIRATE_BASE_TRAVEL_TO_BASE_Name,\n\t\t///<summary>\n\t\t///Find the pirate base hidden in the asteroid field.\n\t\t///</summary>\n\t\tPIRATE_BASE_TRAVEL_TO_BASE_Description,\n\t\t///<summary>\n\t\t///Speak to the captain\n\t\t///</summary>\n\t\tPIRATE_BASE_SPEAK_WITH_PIRATES_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tPIRATE_BASE_SPEAK_WITH_PIRATES_Description,\n\t\t///<summary>\n\t\t///Prepare for the attack\n\t\t///</summary>\n\t\tPIRATE_BASE_PREPARE_FOR_DEFENSE_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tPIRATE_BASE_PREPARE_FOR_DEFENSE_Description,\n\t\t///<summary>\n\t\t///Get turrets\n\t\t///</summary>\n\t\tPIRATE_BASE_GET_TURRETS_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tPIRATE_BASE_GET_TURRETS_Description,\n\t\t///<summary>\n\t\t///Place turrets outside the base\n\t\t///</summary>\n\t\tPIRATE_BASE_DEFENSE_SETUP_Name,\n\t\t///<summary>\n\t\t///The enemy forces are coming; help the pirates defend their base. Build up to six turrets on asteroids to defend the cave entrance.\n\t\t///</summary>\n\t\tPIRATE_BASE_DEFENSE_SETUP_Description,\n\t\t///<summary>\n\t\t///Protect the generator\n\t\t///</summary>\n\t\tPIRATE_BASE_DEFEND_Name,\n\t\t///<summary>\n\t\t///Defend the generator from incoming Russian commandoes.\n\t\t///</summary>\n\t\tPIRATE_BASE_DEFEND_Description,\n\t\t///<summary>\n\t\t///Allies have arrived\n\t\t///</summary>\n\t\tPIRATE_BASE_ALLY_ARRIVED_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tPIRATE_BASE_ALLY_ARRIVED_Description,\n\t\t///<summary>\n\t\t///Base Generator\n\t\t///</summary>\n\t\tBaseGenerator,\n\t\t///<summary>\n\t\t///Meet Thomas Barth in his lab\n\t\t///</summary>\n\t\tBARTHS_MOON_CONVINCE_MEET_THOMAS_BART_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tBARTHS_MOON_CONVINCE_MEET_THOMAS_BART_Description,\n\t\t///<summary>\n\t\t///Talk to Thomas Barth\n\t\t///</summary>\n\t\tBARTHS_MOON_CONVINCE_TALK_WITH_THOMAS_BART_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tBARTHS_MOON_CONVINCE_TALK_WITH_THOMAS_BART_Description,\n\t\t///<summary>\n\t\t///Fly to the enemy base\n\t\t///</summary>\n\t\tBARTHS_MOON_CONVINCE_FLY_TO_ENEMY_BASE_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tBARTHS_MOON_CONVINCE_FLY_TO_ENEMY_BASE_Description,\n\t\t///<summary>\n\t\t///Destroy mothership\n\t\t///</summary>\n\t\tBARTHS_MOON_CONVINCE_DESTROY_SHIP_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tBARTHS_MOON_CONVINCE_DESTROY_SHIP_Description,\n\t\t///<summary>\n\t\t///Kill all enemies and disable the base\n\t\t///</summary>\n\t\tBARTHS_MOON_CONVINCE_DESTROY_GENERATOR_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tBARTHS_MOON_CONVINCE_DESTROY_GENERATOR_Description,\n\t\t///<summary>\n\t\t///Get reward\n\t\t///</summary>\n\t\tBARTHS_MOON_CONVINCE_FIND_TRANSMITTER_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tBARTHS_MOON_CONVINCE_FIND_TRANSMITTER_Description,\n\t\t///<summary>\n\t\t///Return to Sapho\n\t\t///</summary>\n\t\tBARTHS_MOON_CONVINCE_RETURN_BACK_TO_MADELYN_Name,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tBARTHS_MOON_CONVINCE_RETURN_BACK_TO_MADELYN_Description,\n\t\t///<summary>\n\t\t///Disable\n\t\t///</summary>\n\t\tDisable,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tNothing,\n\t\t///<summary>\n\t\t///Main base\n\t\t///</summary>\n\t\tHudMainBase,\n\t\t///<summary>\n\t\t///Command center\n\t\t///</summary>\n\t\tHudCommandCenter,\n\t\t///<summary>\n\t\t///Generator\n\t\t///</summary>\n\t\tHudGenerator,\n\t\t///<summary>\n\t\t///Hub\n\t\t///</summary>\n\t\tHudHub,\n\t\t///<summary>\n\t\t///Miners\n\t\t///</summary>\n\t\tHudMiners,\n\t\t///<summary>\n\t\t///Hangar\n\t\t///</summary>\n\t\tHudHangar,\n\t\t///<summary>\n\t\t///Mothership\n\t\t///</summary>\n\t\tHudMothership,\n\t\t///<summary>\n\t\t///Pirate captain\n\t\t///</summary>\n\t\tHudPirateCaptain,\n\t\t///<summary>\n\t\t///Meeting point\n\t\t///</summary>\n\t\tHudMeetingPoint,\n\t\t///<summary>\n\t\t///Hacker\n\t\t///</summary>\n\t\tHudHacker,\n\t\t///<summary>\n\t\t///Jammer\n\t\t///</summary>\n\t\tHudJammer,\n\t\t///<summary>\n\t\t///Control room\n\t\t///</summary>\n\t\tHudControlRoom,\n\t\t///<summary>\n\t\t///Tower B\n\t\t///</summary>\n\t\tHudTowerB,\n\t\t///<summary>\n\t\t///Batteries\n\t\t///</summary>\n\t\tHudBatteries,\n\t\t///<summary>\n\t\t///Tunnel\n\t\t///</summary>\n\t\tHudTunnel,\n\t\t///<summary>\n\t\t///Transmitter\n\t\t///</summary>\n\t\tHudTransmitter,\n\t\t///<summary>\n\t\t///Safe area\n\t\t///</summary>\n\t\tHudSafeArea,\n\t\t///<summary>\n\t\t///End\n\t\t///</summary>\n\t\tHudEnd,\n\t\t///<summary>\n\t\t///Container\n\t\t///</summary>\n\t\tHudContainer,\n\t\t///<summary>\n\t\t///Service room\n\t\t///</summary>\n\t\tHudServiceRoom,\n\t\t///<summary>\n\t\t///Command room\n\t\t///</summary>\n\t\tHudCommandRoom,\n\t\t///<summary>\n\t\t///Generator room\n\t\t///</summary>\n\t\tHudGeneratorRoom,\n\t\t///<summary>\n\t\t///Lab\n\t\t///</summary>\n\t\tHudLab,\n\t\t///<summary>\n\t\t///Drill room\n\t\t///</summary>\n\t\tHudDrillRoom,\n\t\t///<summary>\n\t\t///Eurydice\n\t\t///</summary>\n\t\tHudEurydice,\n\t\t///<summary>\n\t\t///Ship\n\t\t///</summary>\n\t\tHudShip,\n\t\t///<summary>\n\t\t///Cargo bay\n\t\t///</summary>\n\t\tHudCargoBay,\n\t\t///<summary>\n\t\t///Equipment\n\t\t///</summary>\n\t\tHudEquipment,\n\t\t///<summary>\n\t\t///ID card\n\t\t///</summary>\n\t\tHudIdCard,\n\t\t///<summary>\n\t\t///Security hub\n\t\t///</summary>\n\t\tHudSecurityHub,\n\t\t///<summary>\n\t\t///Control center\n\t\t///</summary>\n\t\tHudControlCenter,\n\t\t///<summary>\n\t\t///Marcus\n\t\t///</summary>\n\t\tHudMarcus,\n\t\t///<summary>\n\t\t///Entrance\n\t\t///</summary>\n\t\tHudEntrance,\n\t\t///<summary>\n\t\t///Hub A\n\t\t///</summary>\n\t\tHudHubA,\n\t\t///<summary>\n\t\t///Hub B\n\t\t///</summary>\n\t\tHudHubB,\n\t\t///<summary>\n\t\t///Communication hub\n\t\t///</summary>\n\t\tHudCommunicationHub,\n\t\t///<summary>\n\t\t///Warhead\n\t\t///</summary>\n\t\tHudWarhead,\n\t\t///<summary>\n\t\t///Madelyn’s Sapho\n\t\t///</summary>\n\t\tHudMadelynsSapho,\n\t\t///<summary>\n\t\t///Last Hope\n\t\t///</summary>\n\t\tHudLastHope,\n\t\t///<summary>\n\t\t///Fort Valiant\n\t\t///</summary>\n\t\tHudFortValiant,\n\t\t///<summary>\n\t\t///Transformer\n\t\t///</summary>\n\t\tHudTransformer,\n\t\t///<summary>\n\t\t///Back door\n\t\t///</summary>\n\t\tHudBackDoor,\n\t\t///<summary>\n\t\t///Research room\n\t\t///</summary>\n\t\tHudResearchRoom,\n\t\t///<summary>\n\t\t///Captain Cedric\n\t\t///</summary>\n\t\tHudCaptainCedric,\n\t\t///<summary>\n\t\t///Colonel von Stauffenberg\n\t\t///</summary>\n\t\tHudColonelVonStauffenberg,\n\t\t///<summary>\n\t\t///Sir Geraint\n\t\t///</summary>\n\t\tHudSirGeraint,\n\t\t///<summary>\n\t\t///Broken Moon\n\t\t///</summary>\n\t\tHudBrokenMoon,\n\t\t///<summary>\n\t\t///Main building\n\t\t///</summary>\n\t\tHudMainBuilding,\n\t\t///<summary>\n\t\t///Prison\n\t\t///</summary>\n\t\tHudPrison,\n\t\t///<summary>\n\t\t///Panel\n\t\t///</summary>\n\t\tHudPanel,\n\t\t///<summary>\n\t\t///Cave\n\t\t///</summary>\n\t\tHudCave,\n\t\t///<summary>\n\t\t///Blondi\n\t\t///</summary>\n\t\tHudBlondi,\n\t\t///<summary>\n\t\t///Transport\n\t\t///</summary>\n\t\tHudTransport,\n\t\t///<summary>\n\t\t///Chamber\n\t\t///</summary>\n\t\tHudChamber,\n\t\t///<summary>\n\t\t///Cage\n\t\t///</summary>\n\t\tHudCage,\n\t\t///<summary>\n\t\t///Cargo\n\t\t///</summary>\n\t\tHudCargo,\n\t\t///<summary>\n\t\t///Duplex\n\t\t///</summary>\n\t\tHudDuplex,\n\t\t///<summary>\n\t\t///Raynold’s vessel\n\t\t///</summary>\n\t\tHudRaynoldsVessel,\n\t\t///<summary>\n\t\t///Manjeet\n\t\t///</summary>\n\t\tHudManjeet,\n\t\t///<summary>\n\t\t///Disruptor\n\t\t///</summary>\n\t\tHudDisruptor,\n\t\t///<summary>\n\t\t///Francis Reef\n\t\t///</summary>\n\t\tHudFrancisReef,\n\t\t///<summary>\n\t\t///Run\n\t\t///</summary>\n\t\tHudRun,\n\t\t///<summary>\n\t\t///Start\n\t\t///</summary>\n\t\tHudStart,\n\t\t///<summary>\n\t\t///Regroup\n\t\t///</summary>\n\t\tHudRegroup,\n\t\t///<summary>\n\t\t///Station\n\t\t///</summary>\n\t\tHudStation,\n\t\t///<summary>\n\t\t///Left wing\n\t\t///</summary>\n\t\tHudLeftWing,\n\t\t///<summary>\n\t\t///Search\n\t\t///</summary>\n\t\tHudSearch,\n\t\t///<summary>\n\t\t///Follow\n\t\t///</summary>\n\t\tHudFollow,\n\t\t///<summary>\n\t\t///The Rift\n\t\t///</summary>\n\t\tHudRift,\n\t\t///<summary>\n\t\t///Supplies\n\t\t///</summary>\n\t\tHudSupplies,\n\t\t///<summary>\n\t\t///Stranger\n\t\t///</summary>\n\t\tHudStranger,\n\t\t///<summary>\n\t\t///Thomas Barth\n\t\t///</summary>\n\t\tHudBarth,\n\t\t///<summary>\n\t\t///Warehouse\n\t\t///</summary>\n\t\tHudWarehouse,\n\t\t///<summary>\n\t\t///Enemy base\n\t\t///</summary>\n\t\tHudEnemyBase,\n\t\t///<summary>\n\t\t///{0} units of super-efficient plutonium safely stored\n\t\t///</summary>\n\t\tPlutoniumStored,\n\t\t///<summary>\n\t\t///Generator repair kit\n\t\t///</summary>\n\t\tHudGeneratorRepairKit,\n\t\t///<summary>\n\t\t///Hold {0} to redirect energy\n\t\t///</summary>\n\t\tPressToRedirectEnergy,\n\t\t///<summary>\n\t\t///Redirect energy\n\t\t///</summary>\n\t\tRedirectEnergy,\n\t\t///<summary>\n\t\t///Redirecting…\n\t\t///</summary>\n\t\tRedirectionInProgress,\n\t\t///<summary>\n\t\t///Go back to starting position\n\t\t///</summary>\n\t\tGoBackToStartingPosition,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tBARTHS_MOON_PLANT_BUILD_PLANT_Description,\n\t\t///<summary>\n\t\t///Construct manufacturing plant\n\t\t///</summary>\n\t\tBARTHS_MOON_PLANT_BUILD_PLANT_Name,\n\t\t///<summary>\n\t\t///You need to own MinerWars 2081\n\t\t///</summary>\n\t\tYouNeedFullGame,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tALIEN_GATE_FOLLOW_COORDINATES_Description,\n\t\t///<summary>\n\t\t///You have obtained ${0}.\n\t\t///</summary>\n\t\tMoneyObtained,\n\t\t///<summary>\n\t\t///Gatling gun\n\t\t///</summary>\n\t\tAutocannon,\n\t\t///<summary>\n\t\t///CIWS\n\t\t///</summary>\n\t\tCIWS,\n\t\t///<summary>\n\t\t///Machine gun\n\t\t///</summary>\n\t\tMachineGun,\n\t\t///<summary>\n\t\t///Missile launcher\n\t\t///</summary>\n\t\tMissileLauncher,\n\t\t///<summary>\n\t\t///Note\n\t\t///</summary>\n\t\tNote,\n\t\t///<summary>\n\t\t///Texture quad\n\t\t///</summary>\n\t\tTextureQuad,\n\t\t///<summary>\n\t\t///Project to waypoints\n\t\t///</summary>\n\t\tEditVoxelHandIsProjectedToWaypoints,\n\t\t///<summary>\n\t\t///Stone red\n\t\t///</summary>\n\t\tStone_Red,\n\t\t///<summary>\n\t\t///Attach voxel hand\n\t\t///</summary>\n\t\tAttachVoxelHand,\n\t\t///<summary>\n\t\t///Detach voxel hand\n\t\t///</summary>\n\t\tDetachVoxelHand,\n\t\t///<summary>\n\t\t///Part\n\t\t///</summary>\n\t\tHudPart,\n\t\t///<summary>\n\t\t///{0} days ago\n\t\t///</summary>\n\t\tDateDaysAgo,\n\t\t///<summary>\n\t\t///{0} hours ago\n\t\t///</summary>\n\t\tDateHoursAgo,\n\t\t///<summary>\n\t\t///{0} minutes ago\n\t\t///</summary>\n\t\tDateMinutesAgo,\n\t\t///<summary>\n\t\t///{0} months ago\n\t\t///</summary>\n\t\tDateMonthsAgo,\n\t\t///<summary>\n\t\t///Press F1 to see help\n\t\t///</summary>\n\t\tNotificationNeedShowHelpScreen,\n\t\t///<summary>\n\t\t///Steam connection error\n\t\t///</summary>\n\t\tSteamRegisterErrorCaption,\n\t\t///<summary>\n\t\t///Cannot connect Steam account to MinerWars, please contact MinerWars support at support@minerwars.com.  Please provide following information: SteamId: {0} Error Message: {1} CD key: {2} Where did you bought MinerWars  (data was copied to clipboard)\n\t\t///</summary>\n\t\tSteamRegisterErrorText,\n\t\t///<summary>\n\t\t///Health Enhancing Medicine Active\n\t\t///</summary>\n\t\tHealthEnhancingMedicineActive,\n\t\t///<summary>\n\t\t///Performance Enhancing Medicine Active\n\t\t///</summary>\n\t\tPerformanceEnhancingMedicineActive,\n\t\t///<summary>\n\t\t///Press {0} to activate drill\n\t\t///</summary>\n\t\tDrillNotification,\n\t\t///<summary>\n\t\t///Press {0} to harvest ore\n\t\t///</summary>\n\t\tOreNotification,\n\t\t///<summary>\n\t\t///Guard\n\t\t///</summary>\n\t\tActor_RimeGuard,\n\t\t///<summary>\n\t\t///X\n\t\t///</summary>\n\t\tAxisX,\n\t\t///<summary>\n\t\t///Y\n\t\t///</summary>\n\t\tAxisY,\n\t\t///<summary>\n\t\t///Z\n\t\t///</summary>\n\t\tAxisZ,\n\t\t///<summary>\n\t\t///Explosion in: \n\t\t///</summary>\n\t\tExplosionIn,\n\t\t///<summary>\n\t\t///Hide\n\t\t///</summary>\n\t\tHidePassword,\n\t\t///<summary>\n\t\t///Music volume\n\t\t///</summary>\n\t\tMusicVolume,\n\t\t///<summary>\n\t\t///Protect Sapho’s bridge\n\t\t///</summary>\n\t\tProtectSaphosCommandCenter,\n\t\t///<summary>\n\t\t///Starting editor… please wait.\n\t\t///</summary>\n\t\tStartEditorInProgressPleaseWait,\n\t\t///<summary>\n\t\t///In 2070, Project Genesis was launched.\n\t\t///</summary>\n\t\tIntro01,\n\t\t///<summary>\n\t\t///An experimental project aiming to harness the energy of the sun.\n\t\t///</summary>\n\t\tIntro02,\n\t\t///<summary>\n\t\t///However, the experiment resulted in a temporary quantum change\n\t\t///</summary>\n\t\tIntro03,\n\t\t///<summary>\n\t\t///within gravitational laws and subatomic particle rotations.\n\t\t///</summary>\n\t\tIntro04,\n\t\t///<summary>\n\t\t///The gravitational quantum collapse tore all the larger objects asunder throughout our solar system.\n\t\t///</summary>\n\t\tIntro05,\n\t\t///<summary>\n\t\t///Planets, moons and even larger asteroids and comets were fragmented into thousands of pieces.\n\t\t///</summary>\n\t\tIntro06,\n\t\t///<summary>\n\t\t///Creating new asteroid belts, marking their former planet's orbits.\n\t\t///</summary>\n\t\tIntro07,\n\t\t///<summary>\n\t\t///Together with the rest of the planets and moons, Earth was eventually destroyed.\n\t\t///</summary>\n\t\tIntro08,\n\t\t///<summary>\n\t\t///Billions of people died together along with our planet Earth.\n\t\t///</summary>\n\t\tIntro09,\n\t\t///<summary>\n\t\t///Concurrent massive solar storms killed additional thousands of space colonists.\n\t\t///</summary>\n\t\tIntro10,\n\t\t///<summary>\n\t\t///The Euro-American Confederation is held responsible for the celestial accident, \n\t\t///</summary>\n\t\tIntro11,\n\t\t///<summary>\n\t\t///especially by its major opposition China.\n\t\t///</summary>\n\t\tIntro12,\n\t\t///<summary>\n\t\t///2081 – eleven years after the Solar Event\n\t\t///</summary>\n\t\tIntro13,\n\t\t///<summary>\n\t\t///Here we are. According to the triangulation, the source of the signal is somewhere nearby.\n\t\t///</summary>\n\t\tIntro14,\n\t\t///<summary>\n\t\t///So this is the source of the signal. I must admit I wasn’t expecting something quite so… Holy Crap.\n\t\t///</summary>\n\t\tIntro15,\n\t\t///<summary>\n\t\t///Oh my God!\n\t\t///</summary>\n\t\tIntro16,\n\t\t///<summary>\n\t\t///This is the moment I’ve waited for my entire life.\n\t\t///</summary>\n\t\tIntro17,\n\t\t///<summary>\n\t\t///Any idea what it is?\n\t\t///</summary>\n\t\tIntro18,\n\t\t///<summary>\n\t\t///Three weeks earlier...\n\t\t///</summary>\n\t\tIntro19,\n\t\t///<summary>\n\t\t///Hold {0} to drill\n\t\t///</summary>\n\t\tHoldFireToDrillNotification,\n\t\t///<summary>\n\t\t///Press {0} to deactivate drill\n\t\t///</summary>\n\t\tPressMToDeactivateDrill,\n\t\t///<summary>\n\t\t///LONG LOADING TIMES ARE DUE TO MINER WARS'\n\t\t///</summary>\n\t\tPerfWarning1_0,\n\t\t///<summary>\n\t\t///FULLY DESTRUCTIBLE AND PERSISTENT ENVIRONMENTS\n\t\t///</summary>\n\t\tPerfWarning2_0,\n\t\t///<summary>\n\t\t///TO PERFORM THESE FEATURES WE'VE HAD TO BUILD\n\t\t///</summary>\n\t\tPerfWarning3_0,\n\t\t///<summary>\n\t\t///OUR OWN\n\t\t///</summary>\n\t\tPerfWarning4_0,\n\t\t///<summary>\n\t\t///VOXEL\n\t\t///</summary>\n\t\tPerfWarning4_1,\n\t\t///<summary>\n\t\t///ENGINE\n\t\t///</summary>\n\t\tPerfWarning4_2,\n\t\t///<summary>\n\t\t///THIS TYPE OF GEOMETRY NATURALLY NEEDS A\n\t\t///</summary>\n\t\tPerfWarning5_0,\n\t\t///<summary>\n\t\t///POWERFUL CPU AND GPU\n\t\t///</summary>\n\t\tPerfWarning6_0,\n\t\t///<summary>\n\t\t///No products owned\n\t\t///</summary>\n\t\tSteamNoProductsCaption,\n\t\t///<summary>\n\t\t///You have activated MinerWars on Steam using Steam key from Profile page, however you don't own MinerWars, so you're unable to play on Steam. Buy MinerWars on www.minerwars.com to play on Steam.\n\t\t///</summary>\n\t\tSteamNoProductsText,\n\t\t///<summary>\n\t\t///Longer loading times are due to Miner Wars' unique fully destructible and persistent environments\n\t\t///</summary>\n\t\tLongerLoadingTimes,\n\t\t///<summary>\n\t\t///TIP:\n\t\t///</summary>\n\t\tTip,\n\t\t///<summary>\n\t\t///You don't own this game on Steam\n\t\t///</summary>\n\t\tSteamYouDontOwnTheGameCaption,\n\t\t///<summary>\n\t\t///You don't own this game on Steam or game was not launched through steam\n\t\t///</summary>\n\t\tSteamYouDontOwnTheGameText,\n\t\t///<summary>\n\t\t///Disable quick zoom\n\t\t///</summary>\n\t\tDisableQuickZoom,\n\t\t///<summary>\n\t\t///Disable zoom\n\t\t///</summary>\n\t\tDisableZoom,\n\t\t///<summary>\n\t\t///Defend Madelyn:\n\t\t///</summary>\n\t\tDefendMadelyn,\n\t\t///<summary>\n\t\t///5 Degrees\n\t\t///</summary>\n\t\tSnap5Deg,\n\t\t///<summary>\n\t\t///Saved game corrupted\n\t\t///</summary>\n\t\tSaveCorruptedCaption,\n\t\t///<summary>\n\t\t///Saved game is corrupted, please load different saved game (use Load Chapter)\n\t\t///</summary>\n\t\tSaveCorruptedText,\n\t\t///<summary>\n\t\t///Accessible only from main menu\n\t\t///</summary>\n\t\tFeatureAccessibleOnlyFromMainMenu,\n\t\t///<summary>\n\t\t///\n\t\t///</summary>\n\t\tString1,\n\t\t///<summary>\n\t\t///Deathmatch\n\t\t///</summary>\n\t\tDeathmatch,\n\t\t///<summary>\n\t\t///Steam offline!\n\t\t///</summary>\n\t\tSteamInvalidTicketCaption,\n\t\t///<summary>\n\t\t///Steam is offline, you have been probably logged out from Steam, please login to Steam and try again. Make sure you're not using offline mode (Steam menu / Go online...) When this problem persist, please send your logfile to support@minerwars.com\n\t\t///</summary>\n\t\tSteamInvalidTicketText,\n\t\t///<summary>\n\t\t///Video adapter\n\t\t///</summary>\n\t\tVideoAdapter,\n\t\t///<summary>\n\t\t///: {0:0} meters to next objective.\n\t\t///</summary>\n\t\tGPSDistance,\n\t\t///<summary>\n\t\t///: no path found.\n\t\t///</summary>\n\t\tGPSNoPath,\n\t\t///<summary>\n\t\t///Sphere Full 1024\n\t\t///</summary>\n\t\tSphereFull_1024,\n\t\t///<summary>\n\t\t///p511_a17_billboard_portrait_2\n\t\t///</summary>\n\t\tp511_a17_billboard_portrait_2,\n\t\t///<summary>\n\t\t///Default: {0:F1}\n\t\t///</summary>\n\t\tDefaultFOV,\n\t\t///<summary>\n\t\t///Disable coop\n\t\t///</summary>\n\t\tDisableCoop,\n\t\t///<summary>\n\t\t///Enable coop\n\t\t///</summary>\n\t\tEnableCoop,\n\t\t///<summary>\n\t\t///Ammo\n\t\t///</summary>\n\t\tCargoBoxAmmo,\n\t\t///<summary>\n\t\t///Fuel\n\t\t///</summary>\n\t\tCargoBoxFuel,\n\t\t///<summary>\n\t\t///Medikit\n\t\t///</summary>\n\t\tCargoBoxMedikit,\n\t\t///<summary>\n\t\t///Oxygen\n\t\t///</summary>\n\t\tCargoBoxOxygen,\n\t\t///<summary>\n\t\t///Repair\n\t\t///</summary>\n\t\tCargoBoxRepair,\n\t\t///<summary>\n\t\t///Locked\n\t\t///</summary>\n\t\tDoorsLocked,\n\t\t///<summary>\n\t\t///Reichstag\n\t\t///</summary>\n\t\tREICHSTAG,\n\t\t///<summary>\n\t\t///VÝZKUMNÁ ZÁKLADNA BÍLÝCH VLKŮ\n\t\t///</summary>\n\t\tWHITE_WOLVES,\n\t\t///<summary>\n\t\t///Dead pilot\n\t\t///</summary>\n\t\tDeadPilot,\n\t\t///<summary>\n\t\t///: no objectives available.\n\t\t///</summary>\n\t\tGPSNoObjectives,\n\t\t///<summary>\n\t\t///Camera HUB\n\t\t///</summary>\n\t\tCameraHUB,\n\t\t///<summary>\n\t\t///Weapon Control\n\t\t///</summary>\n\t\tWeaponControl,\n\t\t///<summary>\n\t\t///Secret rooms found:\n\t\t///</summary>\n\t\tSecretRoomsFound,\n\t\t///<summary>\n\t\t///Back Turret\n\t\t///</summary>\n\t\tBackTurret,\n\t\t///<summary>\n\t\t///Bottom Turret\n\t\t///</summary>\n\t\tBottomTurret,\n\t\t///<summary>\n\t\t///Front Turret\n\t\t///</summary>\n\t\tFrontTurret,\n\t\t///<summary>\n\t\t///Left Door\n\t\t///</summary>\n\t\tLeftDoor,\n\t\t///<summary>\n\t\t///Right Door\n\t\t///</summary>\n\t\tRightDoor,\n\t\t///<summary>\n\t\t///meters\n\t\t///</summary>\n\t\tMetersLong,\n\t\t///<summary>\n\t\t///seconds\n\t\t///</summary>\n\t\tSecondsLong,\n\t}\n\n\tstatic partial class MyTextsWrapper\n\t{\n\t\tstatic void Reload()\n        {\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Accept] = new StringBuilder(MyTexts.Accept);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Active] = new StringBuilder(MyTexts.Active);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Add] = new StringBuilder(MyTexts.Add);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AddGamePlayTooltip] = new StringBuilder(MyTexts.AddGamePlayTooltip);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AddMysteriousCubesTooltip] = new StringBuilder(MyTexts.AddMysteriousCubesTooltip);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AddObject] = new StringBuilder(MyTexts.AddObject);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AddObjectTooltip] = new StringBuilder(MyTexts.AddObjectTooltip);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AddPrefabTooltip] = new StringBuilder(MyTexts.AddPrefabTooltip);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AddSelectedToSector] = new StringBuilder(MyTexts.AddSelectedToSector);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AddVoxels] = new StringBuilder(MyTexts.AddVoxels);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AdjustGrid] = new StringBuilder(MyTexts.AdjustGrid);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AdjustGridTooltip] = new StringBuilder(MyTexts.AdjustGridTooltip);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AdvancedArmor] = new StringBuilder(MyTexts.AdvancedArmor);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Afterburner] = new StringBuilder(MyTexts.Afterburner);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Aggressive] = new StringBuilder(MyTexts.Aggressive);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Aggressivity] = new StringBuilder(MyTexts.Aggressivity);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AITemplate] = new StringBuilder(MyTexts.AITemplate);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Alarm] = new StringBuilder(MyTexts.Alarm);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AlienGate] = new StringBuilder(MyTexts.AlienGate);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AllBlueprints] = new StringBuilder(MyTexts.AllBlueprints);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AllEvents] = new StringBuilder(MyTexts.AllEvents);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AllItemsInventory] = new StringBuilder(MyTexts.AllItemsInventory);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AllMissions] = new StringBuilder(MyTexts.AllMissions);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AllWeapons] = new StringBuilder(MyTexts.AllWeapons);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Alpha] = new StringBuilder(MyTexts.Alpha);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Ammo] = new StringBuilder(MyTexts.Ammo);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AmmoAutocannonArmorPiercingIncendiary] = new StringBuilder(MyTexts.AmmoAutocannonArmorPiercingIncendiary);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AmmoAutocannonBasic] = new StringBuilder(MyTexts.AmmoAutocannonBasic);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AmmoAutocannonBioChem] = new StringBuilder(MyTexts.AmmoAutocannonBioChem);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AmmoAutocannonEMP] = new StringBuilder(MyTexts.AmmoAutocannonEMP);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AmmoAutocannonHighVelocity] = new StringBuilder(MyTexts.AmmoAutocannonHighVelocity);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AmmoAutocannonSAPHEI] = new StringBuilder(MyTexts.AmmoAutocannonSAPHEI);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AmmoAutomaticRifleWithSilencerBioChem] = new StringBuilder(MyTexts.AmmoAutomaticRifleWithSilencerBioChem);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AmmoAutomaticRifleWithSilencerHighVelocity] = new StringBuilder(MyTexts.AmmoAutomaticRifleWithSilencerHighVelocity);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AmmoAutomaticRifleWithSilencerSAPHEI] = new StringBuilder(MyTexts.AmmoAutomaticRifleWithSilencerSAPHEI);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AmmoCannonArmorPiercingIncendiary] = new StringBuilder(MyTexts.AmmoCannonArmorPiercingIncendiary);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AmmoCannonBasic] = new StringBuilder(MyTexts.AmmoCannonBasic);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AmmoCannonBiochem] = new StringBuilder(MyTexts.AmmoCannonBiochem);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AmmoCannonEMP] = new StringBuilder(MyTexts.AmmoCannonEMP);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AmmoCannonHighVelocity] = new StringBuilder(MyTexts.AmmoCannonHighVelocity);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AmmoCannonProximityExplosive] = new StringBuilder(MyTexts.AmmoCannonProximityExplosive);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AmmoCannonSAPHEI] = new StringBuilder(MyTexts.AmmoCannonSAPHEI);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AmmoCannonTunnelBuster] = new StringBuilder(MyTexts.AmmoCannonTunnelBuster);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AmmoGroupBullet] = new StringBuilder(MyTexts.AmmoGroupBullet);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AmmoGroupCannon] = new StringBuilder(MyTexts.AmmoGroupCannon);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AmmoGroupMissile] = new StringBuilder(MyTexts.AmmoGroupMissile);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AmmoGroupUniversalLauncherBack] = new StringBuilder(MyTexts.AmmoGroupUniversalLauncherBack);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AmmoGroupUniversalLauncherFront] = new StringBuilder(MyTexts.AmmoGroupUniversalLauncherFront);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AmmoGuidedEngineDetection] = new StringBuilder(MyTexts.AmmoGuidedEngineDetection);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AmmoGuidedRadarDetection] = new StringBuilder(MyTexts.AmmoGuidedRadarDetection);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AmmoGuidedVisualDetection] = new StringBuilder(MyTexts.AmmoGuidedVisualDetection);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AmmoMachineGunArmorPiercingIncendiary] = new StringBuilder(MyTexts.AmmoMachineGunArmorPiercingIncendiary);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AmmoMachineGunBasic] = new StringBuilder(MyTexts.AmmoMachineGunBasic);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AmmoMachineGunBioChem] = new StringBuilder(MyTexts.AmmoMachineGunBioChem);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AmmoMachineGunEMP] = new StringBuilder(MyTexts.AmmoMachineGunEMP);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AmmoMachineGunHighVelocity] = new StringBuilder(MyTexts.AmmoMachineGunHighVelocity);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AmmoMachineGunSAPHEI] = new StringBuilder(MyTexts.AmmoMachineGunSAPHEI);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AmmoMissileBasic] = new StringBuilder(MyTexts.AmmoMissileBasic);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AmmoMissileBioChem] = new StringBuilder(MyTexts.AmmoMissileBioChem);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AmmoMissileEMP] = new StringBuilder(MyTexts.AmmoMissileEMP);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AmmoSelectText] = new StringBuilder(MyTexts.AmmoSelectText);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AmmoSelectTextValues] = new StringBuilder(MyTexts.AmmoSelectTextValues);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AmmoShotgunArmorPiercing] = new StringBuilder(MyTexts.AmmoShotgunArmorPiercing);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AmmoShotgunBasic] = new StringBuilder(MyTexts.AmmoShotgunBasic);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AmmoShotgunExplosive] = new StringBuilder(MyTexts.AmmoShotgunExplosive);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AmmoShotgunHighVelocity] = new StringBuilder(MyTexts.AmmoShotgunHighVelocity);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AmmoSniperBioChem] = new StringBuilder(MyTexts.AmmoSniperBioChem);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AmmoSniperEMP] = new StringBuilder(MyTexts.AmmoSniperEMP);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AmmoSniperHighVelocity] = new StringBuilder(MyTexts.AmmoSniperHighVelocity);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AmmoSniperSAPHEI] = new StringBuilder(MyTexts.AmmoSniperSAPHEI);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AmmoUniversalLauncherAsteroidKiller] = new StringBuilder(MyTexts.AmmoUniversalLauncherAsteroidKiller);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AmmoUniversalLauncherDecoyFlare] = new StringBuilder(MyTexts.AmmoUniversalLauncherDecoyFlare);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AmmoUniversalLauncherDirectionalExplosive] = new StringBuilder(MyTexts.AmmoUniversalLauncherDirectionalExplosive);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AmmoUniversalLauncherEMPBomb] = new StringBuilder(MyTexts.AmmoUniversalLauncherEMPBomb);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AmmoUniversalLauncherFlashBomb] = new StringBuilder(MyTexts.AmmoUniversalLauncherFlashBomb);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AmmoUniversalLauncherGravitationBomb] = new StringBuilder(MyTexts.AmmoUniversalLauncherGravitationBomb);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AmmoUniversalLauncherHologram] = new StringBuilder(MyTexts.AmmoUniversalLauncherHologram);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AmmoUniversalLauncherIlluminatingShell] = new StringBuilder(MyTexts.AmmoUniversalLauncherIlluminatingShell);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AmmoUniversalLauncherMineBasic] = new StringBuilder(MyTexts.AmmoUniversalLauncherMineBasic);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AmmoUniversalLauncherMineBioChem] = new StringBuilder(MyTexts.AmmoUniversalLauncherMineBioChem);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AmmoUniversalLauncherMineSmart] = new StringBuilder(MyTexts.AmmoUniversalLauncherMineSmart);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AmmoUniversalLauncherRemoteBomb] = new StringBuilder(MyTexts.AmmoUniversalLauncherRemoteBomb);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AmmoUniversalLauncherRemoteCamera] = new StringBuilder(MyTexts.AmmoUniversalLauncherRemoteCamera);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AmmoUniversalLauncherSmokeBomb] = new StringBuilder(MyTexts.AmmoUniversalLauncherSmokeBomb);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AmmoUniversalLauncherSphereExplosive] = new StringBuilder(MyTexts.AmmoUniversalLauncherSphereExplosive);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AmmoUniversalLauncherTimeBomb] = new StringBuilder(MyTexts.AmmoUniversalLauncherTimeBomb);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AreYouSureYouWantToExit] = new StringBuilder(MyTexts.AreYouSureYouWantToExit);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AreYouSureYouWantToLogout] = new StringBuilder(MyTexts.AreYouSureYouWantToLogout);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Armor] = new StringBuilder(MyTexts.Armor);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Armor_hull] = new StringBuilder(MyTexts.Armor_hull);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AspectRatioDualHeadNormal_4_3] = new StringBuilder(MyTexts.AspectRatioDualHeadNormal_4_3);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AspectRatioDualHeadWide_16_10] = new StringBuilder(MyTexts.AspectRatioDualHeadWide_16_10);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AspectRatioDualHeadWide_16_9] = new StringBuilder(MyTexts.AspectRatioDualHeadWide_16_9);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AspectRatioNormal_4_3] = new StringBuilder(MyTexts.AspectRatioNormal_4_3);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AspectRatioTripleHeadNormal_4_3] = new StringBuilder(MyTexts.AspectRatioTripleHeadNormal_4_3);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AspectRatioTripleHeadWide_16_10] = new StringBuilder(MyTexts.AspectRatioTripleHeadWide_16_10);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AspectRatioTripleHeadWide_16_9] = new StringBuilder(MyTexts.AspectRatioTripleHeadWide_16_9);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AspectRatioWide_16_10] = new StringBuilder(MyTexts.AspectRatioWide_16_10);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AspectRatioWide_16_9] = new StringBuilder(MyTexts.AspectRatioWide_16_9);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AspectRatio_Short_Dual_16_10] = new StringBuilder(MyTexts.AspectRatio_Short_Dual_16_10);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AspectRatio_Short_Dual_16_9] = new StringBuilder(MyTexts.AspectRatio_Short_Dual_16_9);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AspectRatio_Short_Dual_4_3] = new StringBuilder(MyTexts.AspectRatio_Short_Dual_4_3);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AspectRatio_Short_Normal_16_10] = new StringBuilder(MyTexts.AspectRatio_Short_Normal_16_10);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AspectRatio_Short_Normal_16_9] = new StringBuilder(MyTexts.AspectRatio_Short_Normal_16_9);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AspectRatio_Short_Normal_4_3] = new StringBuilder(MyTexts.AspectRatio_Short_Normal_4_3);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AspectRatio_Short_Triple_16_10] = new StringBuilder(MyTexts.AspectRatio_Short_Triple_16_10);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AspectRatio_Short_Triple_16_9] = new StringBuilder(MyTexts.AspectRatio_Short_Triple_16_9);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AspectRatio_Short_Triple_4_3] = new StringBuilder(MyTexts.AspectRatio_Short_Triple_4_3);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AssignControlJoystick] = new StringBuilder(MyTexts.AssignControlJoystick);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AssignControlJoystickAxis] = new StringBuilder(MyTexts.AssignControlJoystickAxis);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AssignControlKeyboard] = new StringBuilder(MyTexts.AssignControlKeyboard);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AssignControlMouse] = new StringBuilder(MyTexts.AssignControlMouse);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Asteroid] = new StringBuilder(MyTexts.Asteroid);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AsteroidContextMenuCaption] = new StringBuilder(MyTexts.AsteroidContextMenuCaption);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AsteroidKillerHud] = new StringBuilder(MyTexts.AsteroidKillerHud);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AsteroidMaterial] = new StringBuilder(MyTexts.AsteroidMaterial);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AsteroidName] = new StringBuilder(MyTexts.AsteroidName);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AsteroidWithSpaceStationStartStorySector] = new StringBuilder(MyTexts.AsteroidWithSpaceStationStartStorySector);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AttachedContextMenuCaption] = new StringBuilder(MyTexts.AttachedContextMenuCaption);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AttachToCamera] = new StringBuilder(MyTexts.AttachToCamera);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AttachToCameraTooltip] = new StringBuilder(MyTexts.AttachToCameraTooltip);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Audio] = new StringBuilder(MyTexts.Audio);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AudioOptions] = new StringBuilder(MyTexts.AudioOptions);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AutoLevel] = new StringBuilder(MyTexts.AutoLevel);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Autologin] = new StringBuilder(MyTexts.Autologin);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AvailableOnlyForAdministrators] = new StringBuilder(MyTexts.AvailableOnlyForAdministrators);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AvailableSubmissions] = new StringBuilder(MyTexts.AvailableSubmissions);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Back] = new StringBuilder(MyTexts.Back);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BadSectorIdentifierInput] = new StringBuilder(MyTexts.BadSectorIdentifierInput);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BankNode] = new StringBuilder(MyTexts.BankNode);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BasicArmor] = new StringBuilder(MyTexts.BasicArmor);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Blank] = new StringBuilder(MyTexts.Blank);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Blue] = new StringBuilder(MyTexts.Blue);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BlueprintAdvancedConstructionKit] = new StringBuilder(MyTexts.BlueprintAdvancedConstructionKit);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BlueprintBasicConstructionKit] = new StringBuilder(MyTexts.BlueprintBasicConstructionKit);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BlueprintFortificationKit] = new StringBuilder(MyTexts.BlueprintFortificationKit);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BlueprintHonorableKit] = new StringBuilder(MyTexts.BlueprintHonorableKit);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BlueprintSuperiorConstructionKit] = new StringBuilder(MyTexts.BlueprintSuperiorConstructionKit);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BlueprintUtilitiesKit] = new StringBuilder(MyTexts.BlueprintUtilitiesKit);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BlueprintWeaponKit] = new StringBuilder(MyTexts.BlueprintWeaponKit);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BuildingInformationWhenBuilding] = new StringBuilder(MyTexts.BuildingInformationWhenBuilding);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BuildingInformationWhenNotBuilding] = new StringBuilder(MyTexts.BuildingInformationWhenNotBuilding);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BuildingRequirements] = new StringBuilder(MyTexts.BuildingRequirements);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.buildTypeBeam] = new StringBuilder(MyTexts.buildTypeBeam);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.buildTypeConnection] = new StringBuilder(MyTexts.buildTypeConnection);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.buildTypeCustom] = new StringBuilder(MyTexts.buildTypeCustom);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.buildTypeDetail] = new StringBuilder(MyTexts.buildTypeDetail);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.buildTypeModule] = new StringBuilder(MyTexts.buildTypeModule);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.buildTypePanel] = new StringBuilder(MyTexts.buildTypePanel);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ButtonContinueWithoutSaving] = new StringBuilder(MyTexts.ButtonContinueWithoutSaving);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ButtonRetry] = new StringBuilder(MyTexts.ButtonRetry);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Cable_corner_25m] = new StringBuilder(MyTexts.Cable_corner_25m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Cable_straight_180] = new StringBuilder(MyTexts.Cable_straight_180);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Cable_straight_45] = new StringBuilder(MyTexts.Cable_straight_45);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Cable_straight_90] = new StringBuilder(MyTexts.Cable_straight_90);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Cable_S_45m] = new StringBuilder(MyTexts.Cable_S_45m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Camera] = new StringBuilder(MyTexts.Camera);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Cancel] = new StringBuilder(MyTexts.Cancel);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CanNotAssignControl] = new StringBuilder(MyTexts.CanNotAssignControl);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CannotCopyBecauseMaxVoxelShapesReached] = new StringBuilder(MyTexts.CannotCopyBecauseMaxVoxelShapesReached);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CannotCopyBecauseYouDontHaveEnoughObjectsStored] = new StringBuilder(MyTexts.CannotCopyBecauseYouDontHaveEnoughObjectsStored);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CantLoginAccessRestrictedDevelop] = new StringBuilder(MyTexts.CantLoginAccessRestrictedDevelop);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CantLoginAccessRestrictedTest] = new StringBuilder(MyTexts.CantLoginAccessRestrictedTest);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CantLoginClientVersionIsWrong] = new StringBuilder(MyTexts.CantLoginClientVersionIsWrong);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CantLoginPlayerAlreadyLoggedIn] = new StringBuilder(MyTexts.CantLoginPlayerAlreadyLoggedIn);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CantLoginWrongPlayerNameOrPassword] = new StringBuilder(MyTexts.CantLoginWrongPlayerNameOrPassword);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CantLoginWrongPlayerNameOrPasswordPublic] = new StringBuilder(MyTexts.CantLoginWrongPlayerNameOrPasswordPublic);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CantRegisterServerIsUnavailable] = new StringBuilder(MyTexts.CantRegisterServerIsUnavailable);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CantSaveSectorContainerCollides] = new StringBuilder(MyTexts.CantSaveSectorContainerCollides);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CantSaveSectorFailed] = new StringBuilder(MyTexts.CantSaveSectorFailed);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CantSaveSectorNameExists] = new StringBuilder(MyTexts.CantSaveSectorNameExists);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CaptionPropertiesAreNotValid] = new StringBuilder(MyTexts.CaptionPropertiesAreNotValid);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CaptionPropertyIsNotValid] = new StringBuilder(MyTexts.CaptionPropertyIsNotValid);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CargoBox] = new StringBuilder(MyTexts.CargoBox);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Cash] = new StringBuilder(MyTexts.Cash);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CategoryTypeArmors] = new StringBuilder(MyTexts.CategoryTypeArmors);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CategoryTypeBillboards] = new StringBuilder(MyTexts.CategoryTypeBillboards);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.categoryTypeCables] = new StringBuilder(MyTexts.categoryTypeCables);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CategoryTypeChambers] = new StringBuilder(MyTexts.CategoryTypeChambers);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.categoryTypeCommunications] = new StringBuilder(MyTexts.categoryTypeCommunications);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CategoryTypeDoorCases] = new StringBuilder(MyTexts.CategoryTypeDoorCases);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CategoryTypeDoors] = new StringBuilder(MyTexts.CategoryTypeDoors);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.categoryTypeFlight] = new StringBuilder(MyTexts.categoryTypeFlight);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CategoryTypeFrame] = new StringBuilder(MyTexts.CategoryTypeFrame);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.categoryTypeHangars] = new StringBuilder(MyTexts.categoryTypeHangars);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.categoryTypeIndustry] = new StringBuilder(MyTexts.categoryTypeIndustry);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.categoryTypeLarge] = new StringBuilder(MyTexts.categoryTypeLarge);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CategoryTypeLargeShips] = new StringBuilder(MyTexts.CategoryTypeLargeShips);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.categoryTypeLifeSupport] = new StringBuilder(MyTexts.categoryTypeLifeSupport);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CategoryTypeLights] = new StringBuilder(MyTexts.CategoryTypeLights);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.categoryTypeMannedObjects] = new StringBuilder(MyTexts.categoryTypeMannedObjects);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.categoryTypeMedium] = new StringBuilder(MyTexts.categoryTypeMedium);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.categoryTypeMship] = new StringBuilder(MyTexts.categoryTypeMship);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CategoryTypeOther] = new StringBuilder(MyTexts.CategoryTypeOther);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CategoryTypePanels] = new StringBuilder(MyTexts.CategoryTypePanels);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CategoryTypeParticles] = new StringBuilder(MyTexts.CategoryTypeParticles);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CategoryTypePassages] = new StringBuilder(MyTexts.CategoryTypePassages);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.categoryTypePipe] = new StringBuilder(MyTexts.categoryTypePipe);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CategoryTypeSigns] = new StringBuilder(MyTexts.CategoryTypeSigns);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.categoryTypeSmall] = new StringBuilder(MyTexts.categoryTypeSmall);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CategoryTypeSounds] = new StringBuilder(MyTexts.CategoryTypeSounds);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.categoryTypeSupply] = new StringBuilder(MyTexts.categoryTypeSupply);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CategoryTypeTrafficSigns] = new StringBuilder(MyTexts.CategoryTypeTrafficSigns);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.categoryTypeTunnel] = new StringBuilder(MyTexts.categoryTypeTunnel);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.categoryTypeWeaponry] = new StringBuilder(MyTexts.categoryTypeWeaponry);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ChangeRadiusTooltip] = new StringBuilder(MyTexts.ChangeRadiusTooltip);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ChangeShapeTooltip] = new StringBuilder(MyTexts.ChangeShapeTooltip);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ChangeVoxelMaterial] = new StringBuilder(MyTexts.ChangeVoxelMaterial);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CheatsCaption] = new StringBuilder(MyTexts.CheatsCaption);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Chinese_Mines_CenterAsteroid] = new StringBuilder(MyTexts.Chinese_Mines_CenterAsteroid);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Chinese_Mines_FrontAsteroid] = new StringBuilder(MyTexts.Chinese_Mines_FrontAsteroid);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Chinese_Mines_FrontRightAsteroid] = new StringBuilder(MyTexts.Chinese_Mines_FrontRightAsteroid);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Chinese_Mines_LeftAsteroid] = new StringBuilder(MyTexts.Chinese_Mines_LeftAsteroid);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Chinese_Mines_MainAsteroid] = new StringBuilder(MyTexts.Chinese_Mines_MainAsteroid);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Chinese_Mines_RightAsteroid] = new StringBuilder(MyTexts.Chinese_Mines_RightAsteroid);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ChooseGameType] = new StringBuilder(MyTexts.ChooseGameType);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ChooseHandMode] = new StringBuilder(MyTexts.ChooseHandMode);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ChooseInfluence] = new StringBuilder(MyTexts.ChooseInfluence);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ChooseModel] = new StringBuilder(MyTexts.ChooseModel);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ChooseObject3D] = new StringBuilder(MyTexts.ChooseObject3D);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ChoosePassword] = new StringBuilder(MyTexts.ChoosePassword);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ChoosePrefabBuildType] = new StringBuilder(MyTexts.ChoosePrefabBuildType);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ChoosePrefabCategory] = new StringBuilder(MyTexts.ChoosePrefabCategory);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ChoosePrefabSubcategory] = new StringBuilder(MyTexts.ChoosePrefabSubcategory);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ChooseShapeMode] = new StringBuilder(MyTexts.ChooseShapeMode);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ChooseSound] = new StringBuilder(MyTexts.ChooseSound);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ChooseUsername] = new StringBuilder(MyTexts.ChooseUsername);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Cistern] = new StringBuilder(MyTexts.Cistern);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ClearAsteroidMaterials] = new StringBuilder(MyTexts.ClearAsteroidMaterials);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ClearAsteroidMaterialsTooltip] = new StringBuilder(MyTexts.ClearAsteroidMaterialsTooltip);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ClearInventory] = new StringBuilder(MyTexts.ClearInventory);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ClearWholeSector] = new StringBuilder(MyTexts.ClearWholeSector);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ClearWholeSectorTooltip] = new StringBuilder(MyTexts.ClearWholeSectorTooltip);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Cobalt_01] = new StringBuilder(MyTexts.Cobalt_01);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CollidingObjects] = new StringBuilder(MyTexts.CollidingObjects);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Color] = new StringBuilder(MyTexts.Color);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ColorArea] = new StringBuilder(MyTexts.ColorArea);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Concrete_01] = new StringBuilder(MyTexts.Concrete_01);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Concrete_02] = new StringBuilder(MyTexts.Concrete_02);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ConnectedPrefabIds] = new StringBuilder(MyTexts.ConnectedPrefabIds);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ConnectEntityWithId] = new StringBuilder(MyTexts.ConnectEntityWithId);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Connection_box] = new StringBuilder(MyTexts.Connection_box);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ConnectWaypoints] = new StringBuilder(MyTexts.ConnectWaypoints);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ConnectWaypointsTooltip] = new StringBuilder(MyTexts.ConnectWaypointsTooltip);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ConstantFlashing] = new StringBuilder(MyTexts.ConstantFlashing);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ContinueLastGame] = new StringBuilder(MyTexts.ContinueLastGame);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ContinueUppercase] = new StringBuilder(MyTexts.ContinueUppercase);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ControlAlreadyAssigned] = new StringBuilder(MyTexts.ControlAlreadyAssigned);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ControlIsNotValid] = new StringBuilder(MyTexts.ControlIsNotValid);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Controlling] = new StringBuilder(MyTexts.Controlling);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Controls] = new StringBuilder(MyTexts.Controls);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Copy] = new StringBuilder(MyTexts.Copy);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CopySelected] = new StringBuilder(MyTexts.CopySelected);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CopySelectedTooltip] = new StringBuilder(MyTexts.CopySelectedTooltip);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CopyTool] = new StringBuilder(MyTexts.CopyTool);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CorrectSnappedPrefabs] = new StringBuilder(MyTexts.CorrectSnappedPrefabs);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CorrectSnappedPrefabsTooltip] = new StringBuilder(MyTexts.CorrectSnappedPrefabsTooltip);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Countdown] = new StringBuilder(MyTexts.Countdown);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Crazy] = new StringBuilder(MyTexts.Crazy);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CreateAsteroid] = new StringBuilder(MyTexts.CreateAsteroid);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CreateDebris] = new StringBuilder(MyTexts.CreateDebris);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CreateLargeShip] = new StringBuilder(MyTexts.CreateLargeShip);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CreatePrefab] = new StringBuilder(MyTexts.CreatePrefab);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CreateSmallShip] = new StringBuilder(MyTexts.CreateSmallShip);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Credits] = new StringBuilder(MyTexts.Credits);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Cube_128x128x128] = new StringBuilder(MyTexts.Cube_128x128x128);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Cube_128x128x256] = new StringBuilder(MyTexts.Cube_128x128x256);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Cube_128x128x64] = new StringBuilder(MyTexts.Cube_128x128x64);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Cube_128x256x128] = new StringBuilder(MyTexts.Cube_128x256x128);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Cube_128x256x256] = new StringBuilder(MyTexts.Cube_128x256x256);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Cube_128x256x64] = new StringBuilder(MyTexts.Cube_128x256x64);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Cube_128x64x128] = new StringBuilder(MyTexts.Cube_128x64x128);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Cube_128x64x256] = new StringBuilder(MyTexts.Cube_128x64x256);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Cube_128x64x64] = new StringBuilder(MyTexts.Cube_128x64x64);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Cube_256x128x128] = new StringBuilder(MyTexts.Cube_256x128x128);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Cube_256x128x256] = new StringBuilder(MyTexts.Cube_256x128x256);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Cube_256x128x512] = new StringBuilder(MyTexts.Cube_256x128x512);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Cube_256x256x128] = new StringBuilder(MyTexts.Cube_256x256x128);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Cube_256x256x256] = new StringBuilder(MyTexts.Cube_256x256x256);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Cube_256x256x512] = new StringBuilder(MyTexts.Cube_256x256x512);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Cube_256x512x128] = new StringBuilder(MyTexts.Cube_256x512x128);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Cube_256x512x256] = new StringBuilder(MyTexts.Cube_256x512x256);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Cube_256x512x512] = new StringBuilder(MyTexts.Cube_256x512x512);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Cube_512x256x256] = new StringBuilder(MyTexts.Cube_512x256x256);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Cube_512x256x512] = new StringBuilder(MyTexts.Cube_512x256x512);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Cube_512x512x256] = new StringBuilder(MyTexts.Cube_512x512x256);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Cube_512x512x512] = new StringBuilder(MyTexts.Cube_512x512x512);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Cube_64x128x128] = new StringBuilder(MyTexts.Cube_64x128x128);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Cube_64x128x64] = new StringBuilder(MyTexts.Cube_64x128x64);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Cube_64x64x128] = new StringBuilder(MyTexts.Cube_64x64x128);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Cube_64x64x64] = new StringBuilder(MyTexts.Cube_64x64x64);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CustomObject] = new StringBuilder(MyTexts.CustomObject);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Cycle] = new StringBuilder(MyTexts.Cycle);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.DebrisContextMenuCaption] = new StringBuilder(MyTexts.DebrisContextMenuCaption);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Decline] = new StringBuilder(MyTexts.Decline);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.DecoyFlareHud] = new StringBuilder(MyTexts.DecoyFlareHud);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.DecreaseVideoSettingsCheckBox] = new StringBuilder(MyTexts.DecreaseVideoSettingsCheckBox);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Default] = new StringBuilder(MyTexts.Default);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.DefaultNotificationDisapearMessage] = new StringBuilder(MyTexts.DefaultNotificationDisapearMessage);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.default_light_0] = new StringBuilder(MyTexts.default_light_0);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.default_particles_prefab_0] = new StringBuilder(MyTexts.default_particles_prefab_0);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.default_sound_prefab_0] = new StringBuilder(MyTexts.default_sound_prefab_0);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Defensive] = new StringBuilder(MyTexts.Defensive);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.DeformedSphere1_64x64x64] = new StringBuilder(MyTexts.DeformedSphere1_64x64x64);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.DeformedSphere2_64x64x64] = new StringBuilder(MyTexts.DeformedSphere2_64x64x64);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.DeformedSphereWithCorridor_128x64x64] = new StringBuilder(MyTexts.DeformedSphereWithCorridor_128x64x64);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.DeformedSphereWithCorridor_256x256x256] = new StringBuilder(MyTexts.DeformedSphereWithCorridor_256x256x256);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.DeformedSphereWithCraters_128x128x128] = new StringBuilder(MyTexts.DeformedSphereWithCraters_128x128x128);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.DeformedSphereWithHoles_64x128x64] = new StringBuilder(MyTexts.DeformedSphereWithHoles_64x128x64);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Delete] = new StringBuilder(MyTexts.Delete);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.DeleteObjects] = new StringBuilder(MyTexts.DeleteObjects);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.DeleteSelected] = new StringBuilder(MyTexts.DeleteSelected);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.DeleteSelectedTooltip] = new StringBuilder(MyTexts.DeleteSelectedTooltip);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.DemoUserCannotTravel] = new StringBuilder(MyTexts.DemoUserCannotTravel);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Depth] = new StringBuilder(MyTexts.Depth);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Description] = new StringBuilder(MyTexts.Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.DetachFromCameraTooltip] = new StringBuilder(MyTexts.DetachFromCameraTooltip);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.DetonateDrone] = new StringBuilder(MyTexts.DetonateDrone);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Detector] = new StringBuilder(MyTexts.Detector);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.DeveloperCaption] = new StringBuilder(MyTexts.DeveloperCaption);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.DifficultyCaption] = new StringBuilder(MyTexts.DifficultyCaption);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.DifficultyEasy] = new StringBuilder(MyTexts.DifficultyEasy);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.DifficultyHard] = new StringBuilder(MyTexts.DifficultyHard);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.DifficultyNormal] = new StringBuilder(MyTexts.DifficultyNormal);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.DiffuseColor] = new StringBuilder(MyTexts.DiffuseColor);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.DirectionalExplosiveHud] = new StringBuilder(MyTexts.DirectionalExplosiveHud);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Disconnected] = new StringBuilder(MyTexts.Disconnected);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.DisconnectWaypoints] = new StringBuilder(MyTexts.DisconnectWaypoints);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.DisconnectWaypointsTooltip] = new StringBuilder(MyTexts.DisconnectWaypointsTooltip);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.DisplayName] = new StringBuilder(MyTexts.DisplayName);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.DisplayPrefabContainerBounding] = new StringBuilder(MyTexts.DisplayPrefabContainerBounding);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.DisplayUnselectedBounding] = new StringBuilder(MyTexts.DisplayUnselectedBounding);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.DistantGlare] = new StringBuilder(MyTexts.DistantGlare);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.DistantGlareFlashing] = new StringBuilder(MyTexts.DistantGlareFlashing);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Down] = new StringBuilder(MyTexts.Down);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.DownThrust] = new StringBuilder(MyTexts.DownThrust);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.DoYouWantToKeepTheseSettingsXSecondsRemaining] = new StringBuilder(MyTexts.DoYouWantToKeepTheseSettingsXSecondsRemaining);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.DrawCollisionSpotsInHud] = new StringBuilder(MyTexts.DrawCollisionSpotsInHud);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.DrawHelperPrimitives] = new StringBuilder(MyTexts.DrawHelperPrimitives);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.DrawPhysicsPrimitives] = new StringBuilder(MyTexts.DrawPhysicsPrimitives);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.DrawVoxelContentAsBillboards] = new StringBuilder(MyTexts.DrawVoxelContentAsBillboards);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Drill] = new StringBuilder(MyTexts.Drill);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Drone] = new StringBuilder(MyTexts.Drone);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.DroneCamera] = new StringBuilder(MyTexts.DroneCamera);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.DroneNo] = new StringBuilder(MyTexts.DroneNo);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Dummies] = new StringBuilder(MyTexts.Dummies);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.DummyPoint] = new StringBuilder(MyTexts.DummyPoint);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.DustInfluenceSphereType] = new StringBuilder(MyTexts.DustInfluenceSphereType);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EachlightHasInternallyTwoLightsPointAndSpot] = new StringBuilder(MyTexts.EachlightHasInternallyTwoLightsPointAndSpot);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EacPrisonAsteroid] = new StringBuilder(MyTexts.EacPrisonAsteroid);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Edit] = new StringBuilder(MyTexts.Edit);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EditAsteroid] = new StringBuilder(MyTexts.EditAsteroid);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EditCargoBox] = new StringBuilder(MyTexts.EditCargoBox);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EditingActiveContainer] = new StringBuilder(MyTexts.EditingActiveContainer);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EditingWayPointConnections] = new StringBuilder(MyTexts.EditingWayPointConnections);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EditingWayPointConnectionsPathSelected] = new StringBuilder(MyTexts.EditingWayPointConnectionsPathSelected);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EditObjects] = new StringBuilder(MyTexts.EditObjects);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Editor] = new StringBuilder(MyTexts.Editor);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EditorClearWholeSector] = new StringBuilder(MyTexts.EditorClearWholeSector);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EditorDecreaseGridScale] = new StringBuilder(MyTexts.EditorDecreaseGridScale);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EditorGroups] = new StringBuilder(MyTexts.EditorGroups);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EditorGroupsAddObjects] = new StringBuilder(MyTexts.EditorGroupsAddObjects);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EditorGroupsCantCreateGroupCaption] = new StringBuilder(MyTexts.EditorGroupsCantCreateGroupCaption);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EditorGroupsCantCreateGroupText] = new StringBuilder(MyTexts.EditorGroupsCantCreateGroupText);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EditorGroupsCreateGroup] = new StringBuilder(MyTexts.EditorGroupsCreateGroup);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EditorGroupsDeleteGroup] = new StringBuilder(MyTexts.EditorGroupsDeleteGroup);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EditorGroupsLoadGroup] = new StringBuilder(MyTexts.EditorGroupsLoadGroup);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EditorGroupsNameUsedCaption] = new StringBuilder(MyTexts.EditorGroupsNameUsedCaption);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EditorGroupsNameUsedText] = new StringBuilder(MyTexts.EditorGroupsNameUsedText);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EditorGroupsRemoveObjects] = new StringBuilder(MyTexts.EditorGroupsRemoveObjects);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EditorGroupsRenameGroup] = new StringBuilder(MyTexts.EditorGroupsRenameGroup);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EditorGroupsSelectGroup] = new StringBuilder(MyTexts.EditorGroupsSelectGroup);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EditorGroupsUnselectGroup] = new StringBuilder(MyTexts.EditorGroupsUnselectGroup);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EditorHelpCaption] = new StringBuilder(MyTexts.EditorHelpCaption);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EditorIncreaseGridScale] = new StringBuilder(MyTexts.EditorIncreaseGridScale);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EditorLoadSectorMessage] = new StringBuilder(MyTexts.EditorLoadSectorMessage);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EditorMenuButtonText] = new StringBuilder(MyTexts.EditorMenuButtonText);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EditorObjectAxisRotationAmount] = new StringBuilder(MyTexts.EditorObjectAxisRotationAmount);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EditorOptions] = new StringBuilder(MyTexts.EditorOptions);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EditorPrimaryActionKey] = new StringBuilder(MyTexts.EditorPrimaryActionKey);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EditorSecondaryActionKey] = new StringBuilder(MyTexts.EditorSecondaryActionKey);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EditorSelectAndHide] = new StringBuilder(MyTexts.EditorSelectAndHide);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EditorSwitchGizmoMode] = new StringBuilder(MyTexts.EditorSwitchGizmoMode);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EditorSwitchGizmoSpace] = new StringBuilder(MyTexts.EditorSwitchGizmoSpace);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EditorVoxelHand] = new StringBuilder(MyTexts.EditorVoxelHand);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EditPrefab] = new StringBuilder(MyTexts.EditPrefab);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EditPrefabContainer] = new StringBuilder(MyTexts.EditPrefabContainer);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EditProperties] = new StringBuilder(MyTexts.EditProperties);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EditPropertiesTooltip] = new StringBuilder(MyTexts.EditPropertiesTooltip);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EditScanner] = new StringBuilder(MyTexts.EditScanner);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EditSelected] = new StringBuilder(MyTexts.EditSelected);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EditSelectedTooltip] = new StringBuilder(MyTexts.EditSelectedTooltip);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EditSmallShip] = new StringBuilder(MyTexts.EditSmallShip);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EditVoxelHand] = new StringBuilder(MyTexts.EditVoxelHand);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EditVoxelHandIsProjected] = new StringBuilder(MyTexts.EditVoxelHandIsProjected);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EditVoxelHandShapeBox] = new StringBuilder(MyTexts.EditVoxelHandShapeBox);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EditVoxelHandShapeCuboid] = new StringBuilder(MyTexts.EditVoxelHandShapeCuboid);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EditVoxelHandShapeDistance] = new StringBuilder(MyTexts.EditVoxelHandShapeDistance);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EditVoxelHandShapeMaterial] = new StringBuilder(MyTexts.EditVoxelHandShapeMaterial);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EditVoxelHandShapeMode] = new StringBuilder(MyTexts.EditVoxelHandShapeMode);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EditVoxelHandShapeOffset] = new StringBuilder(MyTexts.EditVoxelHandShapeOffset);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EditVoxelHandShapeSize] = new StringBuilder(MyTexts.EditVoxelHandShapeSize);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EditVoxelHandShapeSphere] = new StringBuilder(MyTexts.EditVoxelHandShapeSphere);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EditVoxelHandShapeType] = new StringBuilder(MyTexts.EditVoxelHandShapeType);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EditVoxelHandTooltip] = new StringBuilder(MyTexts.EditVoxelHandTooltip);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EmailAddress] = new StringBuilder(MyTexts.EmailAddress);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EMPBombHud] = new StringBuilder(MyTexts.EMPBombHud);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EmptyDescription] = new StringBuilder(MyTexts.EmptyDescription);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Enabled] = new StringBuilder(MyTexts.Enabled);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EnableLightsInEditor] = new StringBuilder(MyTexts.EnableLightsInEditor);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EnableSnapPointFilter] = new StringBuilder(MyTexts.EnableSnapPointFilter);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.End] = new StringBuilder(MyTexts.End);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Enemy] = new StringBuilder(MyTexts.Enemy);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PurchaseCheats] = new StringBuilder(MyTexts.PurchaseCheats);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EnemyCantDie] = new StringBuilder(MyTexts.EnemyCantDie);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Engine] = new StringBuilder(MyTexts.Engine);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EngineChemical1] = new StringBuilder(MyTexts.EngineChemical1);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EngineChemical2] = new StringBuilder(MyTexts.EngineChemical2);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EngineChemical3] = new StringBuilder(MyTexts.EngineChemical3);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EngineChemical4] = new StringBuilder(MyTexts.EngineChemical4);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EngineChemical5] = new StringBuilder(MyTexts.EngineChemical5);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EngineNuclear1] = new StringBuilder(MyTexts.EngineNuclear1);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EngineNuclear2] = new StringBuilder(MyTexts.EngineNuclear2);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EngineNuclear3] = new StringBuilder(MyTexts.EngineNuclear3);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EngineNuclear4] = new StringBuilder(MyTexts.EngineNuclear4);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EngineNuclear5] = new StringBuilder(MyTexts.EngineNuclear5);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EnginePowerCells1] = new StringBuilder(MyTexts.EnginePowerCells1);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EnginePowerCells2] = new StringBuilder(MyTexts.EnginePowerCells2);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EnginePowerCells3] = new StringBuilder(MyTexts.EnginePowerCells3);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EnginePowerCells4] = new StringBuilder(MyTexts.EnginePowerCells4);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EnginePowerCells5] = new StringBuilder(MyTexts.EnginePowerCells5);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EngineShutdown] = new StringBuilder(MyTexts.EngineShutdown);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EnterAtLeastTwoCharacters] = new StringBuilder(MyTexts.EnterAtLeastTwoCharacters);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EnterPrefabContainer] = new StringBuilder(MyTexts.EnterPrefabContainer);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EnterPrefabContainerTooltip] = new StringBuilder(MyTexts.EnterPrefabContainerTooltip);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EnterSectorInProgressPleaseWait] = new StringBuilder(MyTexts.EnterSectorInProgressPleaseWait);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EnterVoxelHand] = new StringBuilder(MyTexts.EnterVoxelHand);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EnterVoxelHandTooltip] = new StringBuilder(MyTexts.EnterVoxelHandTooltip);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EntityId] = new StringBuilder(MyTexts.EntityId);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EntityIsAlreadyConnected] = new StringBuilder(MyTexts.EntityIsAlreadyConnected);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EntityIsNotExist] = new StringBuilder(MyTexts.EntityIsNotExist);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EntityIsNotSupported] = new StringBuilder(MyTexts.EntityIsNotSupported);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EntryPointAlreadyDefined] = new StringBuilder(MyTexts.EntryPointAlreadyDefined);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ErrorCreatingNetworkConnection] = new StringBuilder(MyTexts.ErrorCreatingNetworkConnection);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Exit] = new StringBuilder(MyTexts.Exit);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ExitEditingMode] = new StringBuilder(MyTexts.ExitEditingMode);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ExitEditingModeTooltip] = new StringBuilder(MyTexts.ExitEditingModeTooltip);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ExitSelected] = new StringBuilder(MyTexts.ExitSelected);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ExitToMainMenu] = new StringBuilder(MyTexts.ExitToMainMenu);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ExitToWindows] = new StringBuilder(MyTexts.ExitToWindows);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ExitVoxelHand] = new StringBuilder(MyTexts.ExitVoxelHand);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ExitVoxelHandTooltip] = new StringBuilder(MyTexts.ExitVoxelHandTooltip);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ExtraMoney] = new StringBuilder(MyTexts.ExtraMoney);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Faction] = new StringBuilder(MyTexts.Faction);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FactionChinese] = new StringBuilder(MyTexts.FactionChinese);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FactionChurch] = new StringBuilder(MyTexts.FactionChurch);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FactionCSR] = new StringBuilder(MyTexts.FactionCSR);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FactionEuroamerican] = new StringBuilder(MyTexts.FactionEuroamerican);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FactionFourthReich] = new StringBuilder(MyTexts.FactionFourthReich);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FactionFreeAsia] = new StringBuilder(MyTexts.FactionFreeAsia);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FactionFreelancers] = new StringBuilder(MyTexts.FactionFreelancers);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FactionFSRE] = new StringBuilder(MyTexts.FactionFSRE);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FactionIndia] = new StringBuilder(MyTexts.FactionIndia);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FactionJapan] = new StringBuilder(MyTexts.FactionJapan);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FactionMiners] = new StringBuilder(MyTexts.FactionMiners);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FactionNone] = new StringBuilder(MyTexts.FactionNone);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FactionOmnicorp] = new StringBuilder(MyTexts.FactionOmnicorp);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FactionPirate] = new StringBuilder(MyTexts.FactionPirate);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FactionRangers] = new StringBuilder(MyTexts.FactionRangers);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FactionRavens] = new StringBuilder(MyTexts.FactionRavens);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FactionRussian] = new StringBuilder(MyTexts.FactionRussian);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FactionRussianKGB] = new StringBuilder(MyTexts.FactionRussianKGB);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FactionSaudi] = new StringBuilder(MyTexts.FactionSaudi);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FactionSlavers] = new StringBuilder(MyTexts.FactionSlavers);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FactionSMLtd] = new StringBuilder(MyTexts.FactionSMLtd);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FactionSyndicate] = new StringBuilder(MyTexts.FactionSyndicate);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FactionTemplars] = new StringBuilder(MyTexts.FactionTemplars);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FactionTraders] = new StringBuilder(MyTexts.FactionTraders);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FactionTTLtd] = new StringBuilder(MyTexts.FactionTTLtd);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FakeScreen] = new StringBuilder(MyTexts.FakeScreen);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FeatureNotYetImplemented] = new StringBuilder(MyTexts.FeatureNotYetImplemented);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FieldOfView] = new StringBuilder(MyTexts.FieldOfView);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FilterOnlyItemsOnWhichHasBlueprintsToolTip] = new StringBuilder(MyTexts.FilterOnlyItemsOnWhichHasBlueprintsToolTip);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FilterOnlyItemsOnWhichHasOreToolTip] = new StringBuilder(MyTexts.FilterOnlyItemsOnWhichHasOreToolTip);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FilterOnlyItemsWhichHasBuildToolTip] = new StringBuilder(MyTexts.FilterOnlyItemsWhichHasBuildToolTip);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FinishedMissions] = new StringBuilder(MyTexts.FinishedMissions);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FinishedSubmissions] = new StringBuilder(MyTexts.FinishedSubmissions);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FireFifthWeapon] = new StringBuilder(MyTexts.FireFifthWeapon);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FireFourthWeapon] = new StringBuilder(MyTexts.FireFourthWeapon);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FirePrimaryWeapon] = new StringBuilder(MyTexts.FirePrimaryWeapon);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FireSecondaryWeapon] = new StringBuilder(MyTexts.FireSecondaryWeapon);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FireThirdWeapon] = new StringBuilder(MyTexts.FireThirdWeapon);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FirstSpawn] = new StringBuilder(MyTexts.FirstSpawn);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FixCollisions] = new StringBuilder(MyTexts.FixCollisions);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FixedSnapPointSize] = new StringBuilder(MyTexts.FixedSnapPointSize);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FlashBombHud] = new StringBuilder(MyTexts.FlashBombHud);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Flee] = new StringBuilder(MyTexts.Flee);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FogSettings] = new StringBuilder(MyTexts.FogSettings);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FogSettingsTooltip] = new StringBuilder(MyTexts.FogSettingsTooltip);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FollowTarget] = new StringBuilder(MyTexts.FollowTarget);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ForbiddenSolarMapAreaWarning] = new StringBuilder(MyTexts.ForbiddenSolarMapAreaWarning);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FormAgreement1] = new StringBuilder(MyTexts.FormAgreement1);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FormAgreement2] = new StringBuilder(MyTexts.FormAgreement2);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Fortress] = new StringBuilder(MyTexts.Fortress);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ForwardThrust] = new StringBuilder(MyTexts.ForwardThrust);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FoundationFactory] = new StringBuilder(MyTexts.FoundationFactory);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FoundationFactoryInInventory] = new StringBuilder(MyTexts.FoundationFactoryInInventory);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FourthReichMothership] = new StringBuilder(MyTexts.FourthReichMothership);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FourthReichMothership_B] = new StringBuilder(MyTexts.FourthReichMothership_B);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Friend] = new StringBuilder(MyTexts.Friend);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FriendName] = new StringBuilder(MyTexts.FriendName);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FriendNeutralCantDie] = new StringBuilder(MyTexts.FriendNeutralCantDie);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FriendsSectorMap] = new StringBuilder(MyTexts.FriendsSectorMap);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FriendsSectors] = new StringBuilder(MyTexts.FriendsSectors);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Fullscreen] = new StringBuilder(MyTexts.Fullscreen);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Game] = new StringBuilder(MyTexts.Game);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.GameOptions] = new StringBuilder(MyTexts.GameOptions);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.GameOverInstructionsPart1] = new StringBuilder(MyTexts.GameOverInstructionsPart1);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Gamepad] = new StringBuilder(MyTexts.Gamepad);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AnalogAxes] = new StringBuilder(MyTexts.AnalogAxes);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.GamePlay] = new StringBuilder(MyTexts.GamePlay);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.GameVolume] = new StringBuilder(MyTexts.GameVolume);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.General] = new StringBuilder(MyTexts.General);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.GeneralContextMenuCaption] = new StringBuilder(MyTexts.GeneralContextMenuCaption);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Generator] = new StringBuilder(MyTexts.Generator);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.GizmoSpaceEditorText] = new StringBuilder(MyTexts.GizmoSpaceEditorText);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.GizmoSpaceLocal] = new StringBuilder(MyTexts.GizmoSpaceLocal);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.GizmoSpaceWorld] = new StringBuilder(MyTexts.GizmoSpaceWorld);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.GlobalEventFactionChangeDescription] = new StringBuilder(MyTexts.GlobalEventFactionChangeDescription);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.GlobalEventFactionChangeName] = new StringBuilder(MyTexts.GlobalEventFactionChangeName);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.GlobalEventFactionRelationChange_EnemyToNeutral] = new StringBuilder(MyTexts.GlobalEventFactionRelationChange_EnemyToNeutral);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.GlobalEventFactionRelationChange_FriendsToNeutral] = new StringBuilder(MyTexts.GlobalEventFactionRelationChange_FriendsToNeutral);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.GlobalEventFactionRelationChange_NeutralToEnemy] = new StringBuilder(MyTexts.GlobalEventFactionRelationChange_NeutralToEnemy);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.GlobalEventFactionRelationChange_NeutralToFriends] = new StringBuilder(MyTexts.GlobalEventFactionRelationChange_NeutralToFriends);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.GlobalEvents] = new StringBuilder(MyTexts.GlobalEvents);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.GlobalEventSunWindDescription] = new StringBuilder(MyTexts.GlobalEventSunWindDescription);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.GlobalEventSunWindName] = new StringBuilder(MyTexts.GlobalEventSunWindName);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.GlobalEventMeteorWindName] = new StringBuilder(MyTexts.GlobalEventMeteorWindName);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.GlobalEventIceStormName] = new StringBuilder(MyTexts.GlobalEventIceStormName);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Gold_01] = new StringBuilder(MyTexts.Gold_01);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.GravityBombHud] = new StringBuilder(MyTexts.GravityBombHud);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Green] = new StringBuilder(MyTexts.Green);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.GridInMeters] = new StringBuilder(MyTexts.GridInMeters);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.GridScaleIndicator] = new StringBuilder(MyTexts.GridScaleIndicator);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.GridSnapEditorText] = new StringBuilder(MyTexts.GridSnapEditorText);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HackFromHUB] = new StringBuilder(MyTexts.HackFromHUB);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Hacking] = new StringBuilder(MyTexts.Hacking);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HackingLevel] = new StringBuilder(MyTexts.HackingLevel);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HackingProgress] = new StringBuilder(MyTexts.HackingProgress);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HackingResult_CanNotBeHacked] = new StringBuilder(MyTexts.HackingResult_CanNotBeHacked);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HackingResult_NotEnoughLevel] = new StringBuilder(MyTexts.HackingResult_NotEnoughLevel);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HackingTime] = new StringBuilder(MyTexts.HackingTime);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HackingTool_Level1] = new StringBuilder(MyTexts.HackingTool_Level1);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HackingTool_Level2] = new StringBuilder(MyTexts.HackingTool_Level2);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HackingTool_Level3] = new StringBuilder(MyTexts.HackingTool_Level3);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HackingTool_Level4] = new StringBuilder(MyTexts.HackingTool_Level4);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HackingTool_Level5] = new StringBuilder(MyTexts.HackingTool_Level5);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HackSolo] = new StringBuilder(MyTexts.HackSolo);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Hangar] = new StringBuilder(MyTexts.Hangar);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HardwareCursor] = new StringBuilder(MyTexts.HardwareCursor);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Harvest] = new StringBuilder(MyTexts.Harvest);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Harvester] = new StringBuilder(MyTexts.Harvester);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ToggleHeadlights] = new StringBuilder(MyTexts.ToggleHeadlights);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HeadlightsDistance] = new StringBuilder(MyTexts.HeadlightsDistance);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HeadlightsRange] = new StringBuilder(MyTexts.HeadlightsRange);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HeadlightsRangeClose] = new StringBuilder(MyTexts.HeadlightsRangeClose);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HeadlightsRangeLong] = new StringBuilder(MyTexts.HeadlightsRangeLong);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Health] = new StringBuilder(MyTexts.Health);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Height] = new StringBuilder(MyTexts.Height);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Helium3_01] = new StringBuilder(MyTexts.Helium3_01);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Helium4_01] = new StringBuilder(MyTexts.Helium4_01);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Help] = new StringBuilder(MyTexts.Help);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HelpCaption] = new StringBuilder(MyTexts.HelpCaption);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HemisphericLight] = new StringBuilder(MyTexts.HemisphericLight);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Visible] = new StringBuilder(MyTexts.Visible);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HideSnapPoints] = new StringBuilder(MyTexts.HideSnapPoints);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HighEnduranceArmor] = new StringBuilder(MyTexts.HighEnduranceArmor);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Home] = new StringBuilder(MyTexts.Home);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HudNewMissionAvailable] = new StringBuilder(MyTexts.HudNewMissionAvailable);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Ice_01] = new StringBuilder(MyTexts.Ice_01);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.IlluminatingShellHud] = new StringBuilder(MyTexts.IlluminatingShellHud);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Indestructible] = new StringBuilder(MyTexts.Indestructible);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Indestructible_01] = new StringBuilder(MyTexts.Indestructible_01);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Indestructible_02] = new StringBuilder(MyTexts.Indestructible_02);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Indestructible_03] = new StringBuilder(MyTexts.Indestructible_03);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Indestructible_04] = new StringBuilder(MyTexts.Indestructible_04);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Indestructible_05_Craters_01] = new StringBuilder(MyTexts.Indestructible_05_Craters_01);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.InfiniteAmmo] = new StringBuilder(MyTexts.InfiniteAmmo);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.InfiniteFuel] = new StringBuilder(MyTexts.InfiniteFuel);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.InfiniteOxygen] = new StringBuilder(MyTexts.InfiniteOxygen);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.InfluenceSpheres] = new StringBuilder(MyTexts.InfluenceSpheres);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.InfluenceSphereContextMenuCaption] = new StringBuilder(MyTexts.InfluenceSphereContextMenuCaption);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Insert] = new StringBuilder(MyTexts.Insert);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.InstantBuilding] = new StringBuilder(MyTexts.InstantBuilding);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.InvalidPositionCoordinates] = new StringBuilder(MyTexts.InvalidPositionCoordinates);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.InvalidTime] = new StringBuilder(MyTexts.InvalidTime);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Inventory] = new StringBuilder(MyTexts.Inventory);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.InvertMouseX] = new StringBuilder(MyTexts.InvertMouseX);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.InvertMouseY] = new StringBuilder(MyTexts.InvertMouseY);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Iron_01] = new StringBuilder(MyTexts.Iron_01);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Iron_02] = new StringBuilder(MyTexts.Iron_02);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.IsHacked] = new StringBuilder(MyTexts.IsHacked);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JoinFriendGame] = new StringBuilder(MyTexts.JoinFriendGame);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JournalDialogTitle] = new StringBuilder(MyTexts.JournalDialogTitle);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Joystick] = new StringBuilder(MyTexts.Joystick);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JoystickButton] = new StringBuilder(MyTexts.JoystickButton);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JoystickButtonLeft] = new StringBuilder(MyTexts.JoystickButtonLeft);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JoystickButtonRight] = new StringBuilder(MyTexts.JoystickButtonRight);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JoystickButtonUp] = new StringBuilder(MyTexts.JoystickButtonUp);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JoystickButtonDown] = new StringBuilder(MyTexts.JoystickButtonDown);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JoystickDeadzone] = new StringBuilder(MyTexts.JoystickDeadzone);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JoystickExponent] = new StringBuilder(MyTexts.JoystickExponent);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JoystickSensitivity] = new StringBuilder(MyTexts.JoystickSensitivity);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Keyboard] = new StringBuilder(MyTexts.Keyboard);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.KillAll] = new StringBuilder(MyTexts.KillAll);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LabelEnableObjectPivot] = new StringBuilder(MyTexts.LabelEnableObjectPivot);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LabelSavePlayerShip] = new StringBuilder(MyTexts.LabelSavePlayerShip);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Language] = new StringBuilder(MyTexts.Language);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LanguageCesky] = new StringBuilder(MyTexts.LanguageCesky);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LanguageDeutsch] = new StringBuilder(MyTexts.LanguageDeutsch);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LanguageEnglish] = new StringBuilder(MyTexts.LanguageEnglish);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LanguageEspanol] = new StringBuilder(MyTexts.LanguageEspanol);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LanguageFrance] = new StringBuilder(MyTexts.LanguageFrance);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LanguageItalian] = new StringBuilder(MyTexts.LanguageItalian);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LanguageRussian] = new StringBuilder(MyTexts.LanguageRussian);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LanguageSlovensky] = new StringBuilder(MyTexts.LanguageSlovensky);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Largeship] = new StringBuilder(MyTexts.Largeship);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LargeShipArdant] = new StringBuilder(MyTexts.LargeShipArdant);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LargeShipComplets] = new StringBuilder(MyTexts.LargeShipComplets);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LargeShipContextMenuCaption] = new StringBuilder(MyTexts.LargeShipContextMenuCaption);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LargeShipKai] = new StringBuilder(MyTexts.LargeShipKai);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LargeShipSaya] = new StringBuilder(MyTexts.LargeShipSaya);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Lava_01] = new StringBuilder(MyTexts.Lava_01);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Left] = new StringBuilder(MyTexts.Left);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LeftAlt] = new StringBuilder(MyTexts.LeftAlt);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LeftControl] = new StringBuilder(MyTexts.LeftControl);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LeftMouseButton] = new StringBuilder(MyTexts.LeftMouseButton);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LeftShift] = new StringBuilder(MyTexts.LeftShift);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LeftWeapons] = new StringBuilder(MyTexts.LeftWeapons);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LinkSnapPoints] = new StringBuilder(MyTexts.LinkSnapPoints);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Load] = new StringBuilder(MyTexts.Load);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LoadChapter] = new StringBuilder(MyTexts.LoadChapter);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LoadCheckpoint] = new StringBuilder(MyTexts.LoadCheckpoint);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LoadingPleaseWait] = new StringBuilder(MyTexts.LoadingPleaseWait);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LoadSector] = new StringBuilder(MyTexts.LoadSector);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LoadSectorIdentifiersPleaseWait] = new StringBuilder(MyTexts.LoadSectorIdentifiersPleaseWait);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LoadSectorTooltip] = new StringBuilder(MyTexts.LoadSectorTooltip);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LogGarbageCollection] = new StringBuilder(MyTexts.LogGarbageCollection);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LoggedPlayer] = new StringBuilder(MyTexts.LoggedPlayer);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LoggingInDrawUpdate] = new StringBuilder(MyTexts.LoggingInDrawUpdate);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Login] = new StringBuilder(MyTexts.Login);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LoginInProgressPleaseWait] = new StringBuilder(MyTexts.LoginInProgressPleaseWait);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Logout] = new StringBuilder(MyTexts.Logout);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LogoutInProgressPleaseWait] = new StringBuilder(MyTexts.LogoutInProgressPleaseWait);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Magnesium_01] = new StringBuilder(MyTexts.Magnesium_01);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Map] = new StringBuilder(MyTexts.Map);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MaxHealth] = new StringBuilder(MyTexts.MaxHealth);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MaxLargeShipsCountReached] = new StringBuilder(MyTexts.MaxLargeShipsCountReached);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MaxObjectsReached] = new StringBuilder(MyTexts.MaxObjectsReached);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MaxVoxelMapsLimitReached] = new StringBuilder(MyTexts.MaxVoxelMapsLimitReached);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MessageAreYouSureYouWantStartNewStory] = new StringBuilder(MyTexts.MessageAreYouSureYouWantStartNewStory);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MessageBoxCaptionError] = new StringBuilder(MyTexts.MessageBoxCaptionError);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MessageBoxCaptionFeatureDisabled] = new StringBuilder(MyTexts.MessageBoxCaptionFeatureDisabled);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MessageBoxCaptionPleaseConfirm] = new StringBuilder(MyTexts.MessageBoxCaptionPleaseConfirm);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MessageBoxExitQuestion] = new StringBuilder(MyTexts.MessageBoxExitQuestion);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MessageBoxLogoutQuestion] = new StringBuilder(MyTexts.MessageBoxLogoutQuestion);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MessageEntityNameIsAlreadyExists] = new StringBuilder(MyTexts.MessageEntityNameIsAlreadyExists);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MessageHealthCantBeLessOrEqualZero] = new StringBuilder(MyTexts.MessageHealthCantBeLessOrEqualZero);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MessageMaxHealthCantBeLessOrEqualZero] = new StringBuilder(MyTexts.MessageMaxHealthCantBeLessOrEqualZero);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MessageMmoWillBeAddedLater] = new StringBuilder(MyTexts.MessageMmoWillBeAddedLater);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MessagePleaseVisitOurWebSiteToBuyGameNow] = new StringBuilder(MyTexts.MessagePleaseVisitOurWebSiteToBuyGameNow);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MessagePressToHide] = new StringBuilder(MyTexts.MessagePressToHide);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MessageYouHaveDemoAccess] = new StringBuilder(MyTexts.MessageYouHaveDemoAccess);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MessageYouMustSetHackingTime] = new StringBuilder(MyTexts.MessageYouMustSetHackingTime);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MessageYouMustSetHealth] = new StringBuilder(MyTexts.MessageYouMustSetHealth);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MessageYouMustSetMaxHealth] = new StringBuilder(MyTexts.MessageYouMustSetMaxHealth);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MetersShort] = new StringBuilder(MyTexts.MetersShort);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MiddleMouseButton] = new StringBuilder(MyTexts.MiddleMouseButton);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MineBasicHud] = new StringBuilder(MyTexts.MineBasicHud);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MineBioChemHud] = new StringBuilder(MyTexts.MineBioChemHud);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MineSmartHud] = new StringBuilder(MyTexts.MineSmartHud);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MissileCamera] = new StringBuilder(MyTexts.MissileCamera);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Mission] = new StringBuilder(MyTexts.Mission);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MissionDialog] = new StringBuilder(MyTexts.MissionDialog);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MixedContextMenuCaption] = new StringBuilder(MyTexts.MixedContextMenuCaption);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MmoSectors] = new StringBuilder(MyTexts.MmoSectors);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ModifyAsteroidContextMenuCaption] = new StringBuilder(MyTexts.ModifyAsteroidContextMenuCaption);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Mouse] = new StringBuilder(MyTexts.Mouse);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MouseSensitivity] = new StringBuilder(MyTexts.MouseSensitivity);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MouseXButton1] = new StringBuilder(MyTexts.MouseXButton1);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MouseXButton2] = new StringBuilder(MyTexts.MouseXButton2);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MovementSlowdown] = new StringBuilder(MyTexts.MovementSlowdown);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Mship] = new StringBuilder(MyTexts.Mship);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Mship_body] = new StringBuilder(MyTexts.Mship_body);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Mship_engine] = new StringBuilder(MyTexts.Mship_engine);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Mship_shield_back_large_left] = new StringBuilder(MyTexts.Mship_shield_back_large_left);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Mship_shield_back_large_right] = new StringBuilder(MyTexts.Mship_shield_back_large_right);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Mship_shield_back_small_left] = new StringBuilder(MyTexts.Mship_shield_back_small_left);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Mship_shield_back_small_right] = new StringBuilder(MyTexts.Mship_shield_back_small_right);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Mship_shield_front_large_left] = new StringBuilder(MyTexts.Mship_shield_front_large_left);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Mship_shield_front_large_right] = new StringBuilder(MyTexts.Mship_shield_front_large_right);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Mship_shield_front_small02_left] = new StringBuilder(MyTexts.Mship_shield_front_small02_left);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Mship_shield_front_small02_right] = new StringBuilder(MyTexts.Mship_shield_front_small02_right);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Mship_shield_front_small_left] = new StringBuilder(MyTexts.Mship_shield_front_small_left);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Mship_shield_front_small_right] = new StringBuilder(MyTexts.Mship_shield_front_small_right);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MysteriousCubes] = new StringBuilder(MyTexts.MysteriousCubes);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MysteriousCube_01] = new StringBuilder(MyTexts.MysteriousCube_01);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MysteriousCube_02] = new StringBuilder(MyTexts.MysteriousCube_02);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MysteriousCube_03] = new StringBuilder(MyTexts.MysteriousCube_03);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Name] = new StringBuilder(MyTexts.Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Navigation] = new StringBuilder(MyTexts.Navigation);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Neutral] = new StringBuilder(MyTexts.Neutral);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NewGame] = new StringBuilder(MyTexts.NewGame);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NextCamera] = new StringBuilder(MyTexts.NextCamera);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Nickel_01] = new StringBuilder(MyTexts.Nickel_01);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.No] = new StringBuilder(MyTexts.No);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.None] = new StringBuilder(MyTexts.None);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NoRecords] = new StringBuilder(MyTexts.NoRecords);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Normal] = new StringBuilder(MyTexts.Normal);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NoSectorsAvailable] = new StringBuilder(MyTexts.NoSectorsAvailable);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NotAccessRightsToTestBuild] = new StringBuilder(MyTexts.NotAccessRightsToTestBuild);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NotAvailableInDemoMode] = new StringBuilder(MyTexts.NotAvailableInDemoMode);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Notifications] = new StringBuilder(MyTexts.Notifications);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NotificationArmorCritical] = new StringBuilder(MyTexts.NotificationArmorCritical);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NotificationArmorLow] = new StringBuilder(MyTexts.NotificationArmorLow);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NotificationConfirmation] = new StringBuilder(MyTexts.NotificationConfirmation);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NotificationDamageAlert] = new StringBuilder(MyTexts.NotificationDamageAlert);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NotificationDamageCritical] = new StringBuilder(MyTexts.NotificationDamageCritical);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NotificationEditorSelectAndRotate] = new StringBuilder(MyTexts.NotificationEditorSelectAndRotate);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NotificationFuelCritical] = new StringBuilder(MyTexts.NotificationFuelCritical);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NotificationFuelLow] = new StringBuilder(MyTexts.NotificationFuelLow);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NotificationHealthCritical] = new StringBuilder(MyTexts.NotificationHealthCritical);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NotificationHealthLow] = new StringBuilder(MyTexts.NotificationHealthLow);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NotificationMissionAvailableInRange] = new StringBuilder(MyTexts.NotificationMissionAvailableInRange);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NotificationObjectiveComplete] = new StringBuilder(MyTexts.NotificationObjectiveComplete);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NotificationOxygenCritical] = new StringBuilder(MyTexts.NotificationOxygenCritical);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NotificationOxygenLow] = new StringBuilder(MyTexts.NotificationOxygenLow);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NotificationYouCanBuild] = new StringBuilder(MyTexts.NotificationYouCanBuild);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NotificationYouCanExamine] = new StringBuilder(MyTexts.NotificationYouCanExamine);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NotificationYouCanHack] = new StringBuilder(MyTexts.NotificationYouCanHack);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NotificationYouCanLoot] = new StringBuilder(MyTexts.NotificationYouCanLoot);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NotificationYouCanTradeWith] = new StringBuilder(MyTexts.NotificationYouCanTradeWith);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NotificationYouCanTravel] = new StringBuilder(MyTexts.NotificationYouCanTravel);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NotificationYouCanUse] = new StringBuilder(MyTexts.NotificationYouCanUse);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NotificationYouHaveNoFoundationFactory] = new StringBuilder(MyTexts.NotificationYouHaveNoFoundationFactory);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NotificationYouHaveToBeNearMothership] = new StringBuilder(MyTexts.NotificationYouHaveToBeNearMothership);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NotLoggedIn] = new StringBuilder(MyTexts.NotLoggedIn);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NumberOfAsteroidsInSector] = new StringBuilder(MyTexts.NumberOfAsteroidsInSector);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NumberOfObjectsInSector] = new StringBuilder(MyTexts.NumberOfObjectsInSector);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NumberOfVoxelShapesInSector] = new StringBuilder(MyTexts.NumberOfVoxelShapesInSector);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NumPad0] = new StringBuilder(MyTexts.NumPad0);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NumPad1] = new StringBuilder(MyTexts.NumPad1);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NumPad2] = new StringBuilder(MyTexts.NumPad2);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NumPad3] = new StringBuilder(MyTexts.NumPad3);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NumPad4] = new StringBuilder(MyTexts.NumPad4);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NumPad5] = new StringBuilder(MyTexts.NumPad5);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NumPad6] = new StringBuilder(MyTexts.NumPad6);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NumPad7] = new StringBuilder(MyTexts.NumPad7);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NumPad8] = new StringBuilder(MyTexts.NumPad8);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NumPad9] = new StringBuilder(MyTexts.NumPad9);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ObjectInCollisionWith] = new StringBuilder(MyTexts.ObjectInCollisionWith);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Objectives] = new StringBuilder(MyTexts.Objectives);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ObjectOutOfBounds] = new StringBuilder(MyTexts.ObjectOutOfBounds);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ObjectsInContainer] = new StringBuilder(MyTexts.ObjectsInContainer);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Off] = new StringBuilder(MyTexts.Off);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Ok] = new StringBuilder(MyTexts.Ok);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.On] = new StringBuilder(MyTexts.On);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.OneWay] = new StringBuilder(MyTexts.OneWay);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Opacity] = new StringBuilder(MyTexts.Opacity);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Options] = new StringBuilder(MyTexts.Options);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.OreCobalt] = new StringBuilder(MyTexts.OreCobalt);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.OreConcrete] = new StringBuilder(MyTexts.OreConcrete);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.OreGold] = new StringBuilder(MyTexts.OreGold);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.OreHelium] = new StringBuilder(MyTexts.OreHelium);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.OreIce] = new StringBuilder(MyTexts.OreIce);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.OreIndestructible] = new StringBuilder(MyTexts.OreIndestructible);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.OreIron] = new StringBuilder(MyTexts.OreIron);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.OreLava] = new StringBuilder(MyTexts.OreLava);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.OreMagnesium] = new StringBuilder(MyTexts.OreMagnesium);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.OreNickel] = new StringBuilder(MyTexts.OreNickel);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.OreOrganic] = new StringBuilder(MyTexts.OreOrganic);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.OrePlatinum] = new StringBuilder(MyTexts.OrePlatinum);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.OreSandstone] = new StringBuilder(MyTexts.OreSandstone);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.OreSilicon] = new StringBuilder(MyTexts.OreSilicon);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.OreSilver] = new StringBuilder(MyTexts.OreSilver);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.OreSnow] = new StringBuilder(MyTexts.OreSnow);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.OreStone] = new StringBuilder(MyTexts.OreStone);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.OreTreasure] = new StringBuilder(MyTexts.OreTreasure);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.OreUranite] = new StringBuilder(MyTexts.OreUranite);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.OreXenon] = new StringBuilder(MyTexts.OreXenon);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Organic_01] = new StringBuilder(MyTexts.Organic_01);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.OtherSideInventory] = new StringBuilder(MyTexts.OtherSideInventory);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p110a01_solid_beam_straight_10m] = new StringBuilder(MyTexts.p110a01_solid_beam_straight_10m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p110a02_solid_beam_straight_20m] = new StringBuilder(MyTexts.p110a02_solid_beam_straight_20m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p110a03_solid_beam_straight_40m_with_hole] = new StringBuilder(MyTexts.p110a03_solid_beam_straight_40m_with_hole);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p110a04_solid_beam_straight_40m_lattice] = new StringBuilder(MyTexts.p110a04_solid_beam_straight_40m_lattice);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p110a05_solid_beam_straight_80m] = new StringBuilder(MyTexts.p110a05_solid_beam_straight_80m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p110A07BasicTJunctionWeak] = new StringBuilder(MyTexts.p110A07BasicTJunctionWeak);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p110A08BasicTJunctionRotated] = new StringBuilder(MyTexts.p110A08BasicTJunctionRotated);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p110A10BasicShortUnitLattice] = new StringBuilder(MyTexts.p110A10BasicShortUnitLattice);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p110A11BasicShortWithoutHole] = new StringBuilder(MyTexts.p110A11BasicShortWithoutHole);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p110a11_solid_beam_junction_x_strong] = new StringBuilder(MyTexts.p110a11_solid_beam_junction_x_strong);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p110A12BasicJunctionStrong] = new StringBuilder(MyTexts.p110A12BasicJunctionStrong);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p110a12_solid_beam_junction_x_weak] = new StringBuilder(MyTexts.p110a12_solid_beam_junction_x_weak);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p110A13BasicJunctionWeak] = new StringBuilder(MyTexts.p110A13BasicJunctionWeak);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p110a13_solid_beam_junction_x_rotated] = new StringBuilder(MyTexts.p110a13_solid_beam_junction_x_rotated);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p110A14BasicJunctionRotated] = new StringBuilder(MyTexts.p110A14BasicJunctionRotated);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p110A15BasicJointLongitudinal] = new StringBuilder(MyTexts.p110A15BasicJointLongitudinal);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p110a21_solid_beam_junction_t_strong] = new StringBuilder(MyTexts.p110a21_solid_beam_junction_t_strong);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p110a22_solid_beam_junction_t_weak] = new StringBuilder(MyTexts.p110a22_solid_beam_junction_t_weak);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p110a23_solid_beam_junction_t_rotated] = new StringBuilder(MyTexts.p110a23_solid_beam_junction_t_rotated);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p110a31_solid_beam_joint_horizontal] = new StringBuilder(MyTexts.p110a31_solid_beam_joint_horizontal);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p110a32_solid_beam_joint_vertical] = new StringBuilder(MyTexts.p110a32_solid_beam_joint_vertical);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p110a33_solid_beam_joint_longitudinal] = new StringBuilder(MyTexts.p110a33_solid_beam_joint_longitudinal);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p110a41_solid_beam_superjoint] = new StringBuilder(MyTexts.p110a41_solid_beam_superjoint);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p110B01FrameStraightUnit] = new StringBuilder(MyTexts.p110B01FrameStraightUnit);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p110b01_lattice_beam_straight_10m] = new StringBuilder(MyTexts.p110b01_lattice_beam_straight_10m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p110B02FrameJoint] = new StringBuilder(MyTexts.p110B02FrameJoint);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p110b02_lattice_beam_straight_30m] = new StringBuilder(MyTexts.p110b02_lattice_beam_straight_30m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p110B03FrameTriangleCorner] = new StringBuilder(MyTexts.p110B03FrameTriangleCorner);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p110b03_lattice_beam_straight_60m] = new StringBuilder(MyTexts.p110b03_lattice_beam_straight_60m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p110B04FrameCorner] = new StringBuilder(MyTexts.p110B04FrameCorner);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p110b04_lattice_beam_straight_60m_with_panels] = new StringBuilder(MyTexts.p110b04_lattice_beam_straight_60m_with_panels);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p110B05FrameSmallUnit] = new StringBuilder(MyTexts.p110B05FrameSmallUnit);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p110b21_lattice_beam_junction_t_strong] = new StringBuilder(MyTexts.p110b21_lattice_beam_junction_t_strong);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p110b22_lattice_beam_junction_t_weak] = new StringBuilder(MyTexts.p110b22_lattice_beam_junction_t_weak);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p110b31_lattice_beam_joint_horizontal] = new StringBuilder(MyTexts.p110b31_lattice_beam_joint_horizontal);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p110b32_lattice_beam_joint_vertical] = new StringBuilder(MyTexts.p110b32_lattice_beam_joint_vertical);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p110C01Cage] = new StringBuilder(MyTexts.p110C01Cage);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p110C02CageHalf] = new StringBuilder(MyTexts.p110C02CageHalf);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p110C03CageGrates] = new StringBuilder(MyTexts.p110C03CageGrates);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p110C04CageGratesTinyUnit] = new StringBuilder(MyTexts.p110C04CageGratesTinyUnit);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p110C05CagePillar] = new StringBuilder(MyTexts.p110C05CagePillar);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p110C06CageCorner] = new StringBuilder(MyTexts.p110C06CageCorner);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p110C08CageSolo] = new StringBuilder(MyTexts.p110C08CageSolo);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p110C09HexTunnelEntranceCageToHexTunnelAdapter] = new StringBuilder(MyTexts.p110C09HexTunnelEntranceCageToHexTunnelAdapter);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p110D01Cage2] = new StringBuilder(MyTexts.p110D01Cage2);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p120a01_strong_lattice_straight_10m] = new StringBuilder(MyTexts.p120a01_strong_lattice_straight_10m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p120a02_strong_lattice_straight_60m] = new StringBuilder(MyTexts.p120a02_strong_lattice_straight_60m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p120a03_strong_lattice_straight_120m] = new StringBuilder(MyTexts.p120a03_strong_lattice_straight_120m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p120a21_strong_lattice_junction_t_strong] = new StringBuilder(MyTexts.p120a21_strong_lattice_junction_t_strong);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p120a22_strong_lattice_junction_t_weak] = new StringBuilder(MyTexts.p120a22_strong_lattice_junction_t_weak);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p120a23_strong_lattice_junction_t_rotated] = new StringBuilder(MyTexts.p120a23_strong_lattice_junction_t_rotated);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p120a51_strong_to_weak_lattice_2to1] = new StringBuilder(MyTexts.p120a51_strong_to_weak_lattice_2to1);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p120a52_strong_to_weak_lattice_1to2] = new StringBuilder(MyTexts.p120a52_strong_to_weak_lattice_1to2);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p120a61_weak_lattice_junction_t_rotated] = new StringBuilder(MyTexts.p120a61_weak_lattice_junction_t_rotated);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p120B01StrongLatticeUnit] = new StringBuilder(MyTexts.p120B01StrongLatticeUnit);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p120b01_b_straight_10m] = new StringBuilder(MyTexts.p120b01_b_straight_10m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p120B02StrongLatticeTinyUnit] = new StringBuilder(MyTexts.p120B02StrongLatticeTinyUnit);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p120b02_b_straight_40m] = new StringBuilder(MyTexts.p120b02_b_straight_40m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p120B03StrongLatticeLongUnit] = new StringBuilder(MyTexts.p120B03StrongLatticeLongUnit);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p120B04StrongLatticeTJunctionStrong] = new StringBuilder(MyTexts.p120B04StrongLatticeTJunctionStrong);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p120B05StrongLatticeTJunctionWeak] = new StringBuilder(MyTexts.p120B05StrongLatticeTJunctionWeak);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p120B06StrongLatticeTJunctionRotated] = new StringBuilder(MyTexts.p120B06StrongLatticeTJunctionRotated);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p120B07SingleStrongLatticeTJunctionRotated2To1] = new StringBuilder(MyTexts.p120B07SingleStrongLatticeTJunctionRotated2To1);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p120B08SingleStrongLatticeTJunctionRotated1To2] = new StringBuilder(MyTexts.p120B08SingleStrongLatticeTJunctionRotated1To2);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p120B09SingleWeakLatticeTJunctionRotated] = new StringBuilder(MyTexts.p120B09SingleWeakLatticeTJunctionRotated);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p120c01_c_straight_10m] = new StringBuilder(MyTexts.p120c01_c_straight_10m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p120c02_c_straight_40m] = new StringBuilder(MyTexts.p120c02_c_straight_40m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p120d01_d_straight_10m] = new StringBuilder(MyTexts.p120d01_d_straight_10m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p120d02_d_straight_40m] = new StringBuilder(MyTexts.p120d02_d_straight_40m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p120h01_h_straight_30m] = new StringBuilder(MyTexts.p120h01_h_straight_30m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p120i01_i_straight_30m] = new StringBuilder(MyTexts.p120i01_i_straight_30m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p120j01_j_straight_30m] = new StringBuilder(MyTexts.p120j01_j_straight_30m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p130a01_a_straight_10m] = new StringBuilder(MyTexts.p130a01_a_straight_10m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p130A02HexTunnelBeamAssembled] = new StringBuilder(MyTexts.p130A02HexTunnelBeamAssembled);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p130a02_a_straight_30m] = new StringBuilder(MyTexts.p130a02_a_straight_30m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p130A03HexTunnelBeamAssembledLong] = new StringBuilder(MyTexts.p130A03HexTunnelBeamAssembledLong);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p130b01_b_straight_10m] = new StringBuilder(MyTexts.p130b01_b_straight_10m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p130b02_b_straight_30m] = new StringBuilder(MyTexts.p130b02_b_straight_30m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p130c01_c_straight_10m] = new StringBuilder(MyTexts.p130c01_c_straight_10m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p130c02_c_straight_30m] = new StringBuilder(MyTexts.p130c02_c_straight_30m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p130d01_d_straight_10m] = new StringBuilder(MyTexts.p130d01_d_straight_10m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p130d02_d_straight_30m] = new StringBuilder(MyTexts.p130d02_d_straight_30m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p130e01_e_straight_10m] = new StringBuilder(MyTexts.p130e01_e_straight_10m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p130e02_e_straight_30m] = new StringBuilder(MyTexts.p130e02_e_straight_30m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p130h02_h_straight_10m] = new StringBuilder(MyTexts.p130h02_h_straight_10m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p130i02_i_straight_10m] = new StringBuilder(MyTexts.p130i02_i_straight_10m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p130j02_j_straight_10m] = new StringBuilder(MyTexts.p130j02_j_straight_10m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p141a01_thick_frame_straight_10m] = new StringBuilder(MyTexts.p141a01_thick_frame_straight_10m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p141a02_thick_frame_straight_60m] = new StringBuilder(MyTexts.p141a02_thick_frame_straight_60m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p141a11_thick_frame_edge] = new StringBuilder(MyTexts.p141a11_thick_frame_edge);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p141a12_thick_frame_corner] = new StringBuilder(MyTexts.p141a12_thick_frame_corner);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p141a31_thick_frame_joint] = new StringBuilder(MyTexts.p141a31_thick_frame_joint);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p141b01_thick_frame_straight_10m] = new StringBuilder(MyTexts.p141b01_thick_frame_straight_10m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p141b02_thick_frame_straight_60m] = new StringBuilder(MyTexts.p141b02_thick_frame_straight_60m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p141b11_thick_frame_edge] = new StringBuilder(MyTexts.p141b11_thick_frame_edge);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p141b12_thick_frame_corner] = new StringBuilder(MyTexts.p141b12_thick_frame_corner);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p141b31_thick_frame_joint] = new StringBuilder(MyTexts.p141b31_thick_frame_joint);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p142a01_cage_empty] = new StringBuilder(MyTexts.p142a01_cage_empty);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p142a02_cage_halfcut] = new StringBuilder(MyTexts.p142a02_cage_halfcut);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p142a03_cage_with_corners] = new StringBuilder(MyTexts.p142a03_cage_with_corners);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p142a11_cage_pillar] = new StringBuilder(MyTexts.p142a11_cage_pillar);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p142a12_cage_edge] = new StringBuilder(MyTexts.p142a12_cage_edge);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p142b01_cage_empty] = new StringBuilder(MyTexts.p142b01_cage_empty);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p142b02_cage_halfcut] = new StringBuilder(MyTexts.p142b02_cage_halfcut);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p142b03_cage_with_corners] = new StringBuilder(MyTexts.p142b03_cage_with_corners);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p142b11_cage_pillar] = new StringBuilder(MyTexts.p142b11_cage_pillar);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p142b12_cage_edge] = new StringBuilder(MyTexts.p142b12_cage_edge);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p211a01_panel_120mx60m] = new StringBuilder(MyTexts.p211a01_panel_120mx60m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p211a02_panel_60mx60m] = new StringBuilder(MyTexts.p211a02_panel_60mx60m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p211a03_panel_60mx30m] = new StringBuilder(MyTexts.p211a03_panel_60mx30m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p211b01_panel_120mx60m] = new StringBuilder(MyTexts.p211b01_panel_120mx60m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p211b02_panel_60mx60m] = new StringBuilder(MyTexts.p211b02_panel_60mx60m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p211b03_panel_60mx30m] = new StringBuilder(MyTexts.p211b03_panel_60mx30m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p211c01_panel_120mx60m] = new StringBuilder(MyTexts.p211c01_panel_120mx60m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p211c02_panel_60mx60m] = new StringBuilder(MyTexts.p211c02_panel_60mx60m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p211c03_panel_60mx30m] = new StringBuilder(MyTexts.p211c03_panel_60mx30m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p211d01_panel_120mx60m] = new StringBuilder(MyTexts.p211d01_panel_120mx60m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p211d02_panel_60mx60m] = new StringBuilder(MyTexts.p211d02_panel_60mx60m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p211d03_panel_60mx30m] = new StringBuilder(MyTexts.p211d03_panel_60mx30m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p211e01_panel_120mx60m] = new StringBuilder(MyTexts.p211e01_panel_120mx60m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p211e02_panel_60mx60m] = new StringBuilder(MyTexts.p211e02_panel_60mx60m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p211e03_panel_60mx30m] = new StringBuilder(MyTexts.p211e03_panel_60mx30m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p211f01_panel_120mx60m] = new StringBuilder(MyTexts.p211f01_panel_120mx60m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p211f02_panel_60mx60m] = new StringBuilder(MyTexts.p211f02_panel_60mx60m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p211f03_panel_60mx30m] = new StringBuilder(MyTexts.p211f03_panel_60mx30m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p211g01_panel_120mx60m] = new StringBuilder(MyTexts.p211g01_panel_120mx60m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p211g02_panel_60mx60m] = new StringBuilder(MyTexts.p211g02_panel_60mx60m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p211g03_panel_60mx30m] = new StringBuilder(MyTexts.p211g03_panel_60mx30m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p211h01_panel_535mx130m] = new StringBuilder(MyTexts.p211h01_panel_535mx130m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p212a01_panel_large] = new StringBuilder(MyTexts.p212a01_panel_large);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p212a01_panel_medium] = new StringBuilder(MyTexts.p212a01_panel_medium);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p212a01_panel_small] = new StringBuilder(MyTexts.p212a01_panel_small);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p212b02_panel_large] = new StringBuilder(MyTexts.p212b02_panel_large);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p212b02_panel_medium] = new StringBuilder(MyTexts.p212b02_panel_medium);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p212b02_panel_small] = new StringBuilder(MyTexts.p212b02_panel_small);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p212c03_panel_large] = new StringBuilder(MyTexts.p212c03_panel_large);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p212c03_panel_medium] = new StringBuilder(MyTexts.p212c03_panel_medium);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p212c03_panel_small] = new StringBuilder(MyTexts.p212c03_panel_small);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p212d04_panel_large] = new StringBuilder(MyTexts.p212d04_panel_large);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p212d04_panel_medium] = new StringBuilder(MyTexts.p212d04_panel_medium);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p212d04_panel_small] = new StringBuilder(MyTexts.p212d04_panel_small);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p212e05_panel_large] = new StringBuilder(MyTexts.p212e05_panel_large);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p212e05_panel_medium] = new StringBuilder(MyTexts.p212e05_panel_medium);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p212e05_panel_small] = new StringBuilder(MyTexts.p212e05_panel_small);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p212f01_panel_large] = new StringBuilder(MyTexts.p212f01_panel_large);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p220A01PanelDoorlike] = new StringBuilder(MyTexts.p220A01PanelDoorlike);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p220A02PanelMovietape] = new StringBuilder(MyTexts.p220A02PanelMovietape);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p221a01_chamber_v1] = new StringBuilder(MyTexts.p221a01_chamber_v1);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p221a02_chamber_v2] = new StringBuilder(MyTexts.p221a02_chamber_v2);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p221b01_chamber_v1] = new StringBuilder(MyTexts.p221b01_chamber_v1);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p221b02_chamber_v2] = new StringBuilder(MyTexts.p221b02_chamber_v2);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p221c01_chamber_v1] = new StringBuilder(MyTexts.p221c01_chamber_v1);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p221c02_chamber_v2] = new StringBuilder(MyTexts.p221c02_chamber_v2);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p221d01_chamber_v1] = new StringBuilder(MyTexts.p221d01_chamber_v1);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p221d02_chamber_v2] = new StringBuilder(MyTexts.p221d02_chamber_v2);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p221e01_chamber_v1] = new StringBuilder(MyTexts.p221e01_chamber_v1);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p221e02_chamber_v2] = new StringBuilder(MyTexts.p221e02_chamber_v2);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p221f01_chamber_v1] = new StringBuilder(MyTexts.p221f01_chamber_v1);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p221g01_chamber_v1] = new StringBuilder(MyTexts.p221g01_chamber_v1);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p221h01_chamber_v1] = new StringBuilder(MyTexts.p221h01_chamber_v1);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p221j01_chamber_v1] = new StringBuilder(MyTexts.p221j01_chamber_v1);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p221k01_chamber_v1] = new StringBuilder(MyTexts.p221k01_chamber_v1);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p230A01HexTunnelPlateHeavyStripesBottom] = new StringBuilder(MyTexts.p230A01HexTunnelPlateHeavyStripesBottom);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p230A01HexTunnelPlateHeavyStripesBottomLeft] = new StringBuilder(MyTexts.p230A01HexTunnelPlateHeavyStripesBottomLeft);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p230A01HexTunnelPlateHeavyStripesBottomRight] = new StringBuilder(MyTexts.p230A01HexTunnelPlateHeavyStripesBottomRight);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p230A01HexTunnelPlateHeavyStripesTop] = new StringBuilder(MyTexts.p230A01HexTunnelPlateHeavyStripesTop);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p230A01HexTunnelPlateHeavyStripesTopLeft] = new StringBuilder(MyTexts.p230A01HexTunnelPlateHeavyStripesTopLeft);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p230A01HexTunnelPlateHeavyStripesTopRight] = new StringBuilder(MyTexts.p230A01HexTunnelPlateHeavyStripesTopRight);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p230A02HexTunnelPlateBeamFlatBottom] = new StringBuilder(MyTexts.p230A02HexTunnelPlateBeamFlatBottom);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p230A02HexTunnelPlateBeamFlatBottomLeft] = new StringBuilder(MyTexts.p230A02HexTunnelPlateBeamFlatBottomLeft);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p230A02HexTunnelPlateBeamFlatBottomRight] = new StringBuilder(MyTexts.p230A02HexTunnelPlateBeamFlatBottomRight);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p230A02HexTunnelPlateBeamFlatTop] = new StringBuilder(MyTexts.p230A02HexTunnelPlateBeamFlatTop);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p230A02HexTunnelPlateBeamFlatTopLeft] = new StringBuilder(MyTexts.p230A02HexTunnelPlateBeamFlatTopLeft);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p230A02HexTunnelPlateBeamFlatTopRight] = new StringBuilder(MyTexts.p230A02HexTunnelPlateBeamFlatTopRight);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p230A03HexTunnelPlateFlatBottom] = new StringBuilder(MyTexts.p230A03HexTunnelPlateFlatBottom);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p230A03HexTunnelPlateFlatBottomLeft] = new StringBuilder(MyTexts.p230A03HexTunnelPlateFlatBottomLeft);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p230A03HexTunnelPlateFlatBottomRight] = new StringBuilder(MyTexts.p230A03HexTunnelPlateFlatBottomRight);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p230A03HexTunnelPlateFlatTop] = new StringBuilder(MyTexts.p230A03HexTunnelPlateFlatTop);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p230A03HexTunnelPlateFlatTopLeft] = new StringBuilder(MyTexts.p230A03HexTunnelPlateFlatTopLeft);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p230A03HexTunnelPlateFlatTopRight] = new StringBuilder(MyTexts.p230A03HexTunnelPlateFlatTopRight);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p230A04HexTunnelPlateBeamBottom] = new StringBuilder(MyTexts.p230A04HexTunnelPlateBeamBottom);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p230A04HexTunnelPlateBeamBottomLeft] = new StringBuilder(MyTexts.p230A04HexTunnelPlateBeamBottomLeft);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p230A04HexTunnelPlateBeamBottomRight] = new StringBuilder(MyTexts.p230A04HexTunnelPlateBeamBottomRight);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p230A04HexTunnelPlateBeamTop] = new StringBuilder(MyTexts.p230A04HexTunnelPlateBeamTop);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p230A04HexTunnelPlateBeamTopLeft] = new StringBuilder(MyTexts.p230A04HexTunnelPlateBeamTopLeft);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p230A04HexTunnelPlateBeamTopRight] = new StringBuilder(MyTexts.p230A04HexTunnelPlateBeamTopRight);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p230A05HexTunnelPlateFlat2Bottom] = new StringBuilder(MyTexts.p230A05HexTunnelPlateFlat2Bottom);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p230A05HexTunnelPlateFlat2BottomLeft] = new StringBuilder(MyTexts.p230A05HexTunnelPlateFlat2BottomLeft);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p230A05HexTunnelPlateFlat2BottomRight] = new StringBuilder(MyTexts.p230A05HexTunnelPlateFlat2BottomRight);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p230A05HexTunnelPlateFlat2Top] = new StringBuilder(MyTexts.p230A05HexTunnelPlateFlat2Top);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p230A05HexTunnelPlateFlat2TopLeft] = new StringBuilder(MyTexts.p230A05HexTunnelPlateFlat2TopLeft);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p230A05HexTunnelPlateFlat2TopRight] = new StringBuilder(MyTexts.p230A05HexTunnelPlateFlat2TopRight);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p230A06HexTunnelGrateBottom] = new StringBuilder(MyTexts.p230A06HexTunnelGrateBottom);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p230A06HexTunnelGrateBottomLeft] = new StringBuilder(MyTexts.p230A06HexTunnelGrateBottomLeft);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p230A06HexTunnelGrateBottomRight] = new StringBuilder(MyTexts.p230A06HexTunnelGrateBottomRight);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p230A06HexTunnelGrateTop] = new StringBuilder(MyTexts.p230A06HexTunnelGrateTop);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p230A06HexTunnelGrateTopLeft] = new StringBuilder(MyTexts.p230A06HexTunnelGrateTopLeft);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p230A06HexTunnelGrateTopRight] = new StringBuilder(MyTexts.p230A06HexTunnelGrateTopRight);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p231a01_armor] = new StringBuilder(MyTexts.p231a01_armor);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p231a02_armor] = new StringBuilder(MyTexts.p231a02_armor);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p231a03_armor] = new StringBuilder(MyTexts.p231a03_armor);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p231a04_armor] = new StringBuilder(MyTexts.p231a04_armor);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p231a05_armor] = new StringBuilder(MyTexts.p231a05_armor);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p231a06_armor] = new StringBuilder(MyTexts.p231a06_armor);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p231a07_armor] = new StringBuilder(MyTexts.p231a07_armor);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p231a08_armor] = new StringBuilder(MyTexts.p231a08_armor);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p231a09_armor] = new StringBuilder(MyTexts.p231a09_armor);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p231a10_armor] = new StringBuilder(MyTexts.p231a10_armor);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p231a11_armor] = new StringBuilder(MyTexts.p231a11_armor);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p231a12_armor] = new StringBuilder(MyTexts.p231a12_armor);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p231a13_armor] = new StringBuilder(MyTexts.p231a13_armor);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p231a14_armor] = new StringBuilder(MyTexts.p231a14_armor);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p231a15_armor] = new StringBuilder(MyTexts.p231a15_armor);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p231a16_armor] = new StringBuilder(MyTexts.p231a16_armor);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p231a17_armor] = new StringBuilder(MyTexts.p231a17_armor);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p231a18_armor] = new StringBuilder(MyTexts.p231a18_armor);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p311A01ThrusterLarge] = new StringBuilder(MyTexts.p311A01ThrusterLarge);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p311a01_long_term_thruster] = new StringBuilder(MyTexts.p311a01_long_term_thruster);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p312A01SmallThruster] = new StringBuilder(MyTexts.p312A01SmallThruster);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p312a01_short_term_thruster_latitude] = new StringBuilder(MyTexts.p312a01_short_term_thruster_latitude);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p312A02SmallThrusterLateral] = new StringBuilder(MyTexts.p312A02SmallThrusterLateral);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p312a02_short_term_thruster_lateral] = new StringBuilder(MyTexts.p312a02_short_term_thruster_lateral);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p321A01SolarPanel] = new StringBuilder(MyTexts.p321A01SolarPanel);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p321a01_solar_panel] = new StringBuilder(MyTexts.p321a01_solar_panel);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p321B01SolarPanel2] = new StringBuilder(MyTexts.p321B01SolarPanel2);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p321b01_nuclear_reactor] = new StringBuilder(MyTexts.p321b01_nuclear_reactor);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p321b01_solar_panel] = new StringBuilder(MyTexts.p321b01_solar_panel);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p321c01_inertia_generator] = new StringBuilder(MyTexts.p321c01_inertia_generator);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p321c01_solar_panel] = new StringBuilder(MyTexts.p321c01_solar_panel);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p321_d01_big_solar_panel] = new StringBuilder(MyTexts.p321_d01_big_solar_panel);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p322a01_battery] = new StringBuilder(MyTexts.p322a01_battery);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p323a01_fuel_generator] = new StringBuilder(MyTexts.p323a01_fuel_generator);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p324a01_fuel_storage_a] = new StringBuilder(MyTexts.p324a01_fuel_storage_a);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p324b01_fuel_storage_b] = new StringBuilder(MyTexts.p324b01_fuel_storage_b);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p331_a01_oxygen_generator] = new StringBuilder(MyTexts.p331_a01_oxygen_generator);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p332_a01_oxygen_storage] = new StringBuilder(MyTexts.p332_a01_oxygen_storage);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p333_a01_hydroponic_building] = new StringBuilder(MyTexts.p333_a01_hydroponic_building);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p334_a01_food_grow] = new StringBuilder(MyTexts.p334_a01_food_grow);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p341_a01_open_dock_variation1] = new StringBuilder(MyTexts.p341_a01_open_dock_variation1);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p341_a02_open_dock_variation2] = new StringBuilder(MyTexts.p341_a02_open_dock_variation2);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p341_b01_open_dock_variation1] = new StringBuilder(MyTexts.p341_b01_open_dock_variation1);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p341_b02_open_dock_variation2] = new StringBuilder(MyTexts.p341_b02_open_dock_variation2);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p341_c01_closed_dock_v1] = new StringBuilder(MyTexts.p341_c01_closed_dock_v1);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p342A01ContainerArmEmpty] = new StringBuilder(MyTexts.p342A01ContainerArmEmpty);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p342A02ContainerArmFilled] = new StringBuilder(MyTexts.p342A02ContainerArmFilled);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p342_a01_loading_bay] = new StringBuilder(MyTexts.p342_a01_loading_bay);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p343_a01_ore_storage] = new StringBuilder(MyTexts.p343_a01_ore_storage);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p344A01DoubleSphereTankOneJoint] = new StringBuilder(MyTexts.p344A01DoubleSphereTankOneJoint);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p344A02DoubleSphereTankTwoJoints] = new StringBuilder(MyTexts.p344A02DoubleSphereTankTwoJoints);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p344A03TankMissingSphereOneJoint] = new StringBuilder(MyTexts.p344A03TankMissingSphereOneJoint);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p344B01CylTank] = new StringBuilder(MyTexts.p344B01CylTank);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p344_a01_container_arm_filled] = new StringBuilder(MyTexts.p344_a01_container_arm_filled);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p344_a02_container_arm_empty] = new StringBuilder(MyTexts.p344_a02_container_arm_empty);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p345_a01_bio_exp] = new StringBuilder(MyTexts.p345_a01_bio_exp);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p345_a01_bio_mach_exp] = new StringBuilder(MyTexts.p345_a01_bio_mach_exp);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p345_a01_recycle] = new StringBuilder(MyTexts.p345_a01_recycle);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p345_a01_refinery] = new StringBuilder(MyTexts.p345_a01_refinery);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p349_a_tower] = new StringBuilder(MyTexts.p349_a_tower);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p349_b_tower] = new StringBuilder(MyTexts.p349_b_tower);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p349_c_tower] = new StringBuilder(MyTexts.p349_c_tower);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p351_a01_largeship_autocannon] = new StringBuilder(MyTexts.p351_a01_largeship_autocannon);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p351_a01_largeship_ciws] = new StringBuilder(MyTexts.p351_a01_largeship_ciws);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p351_a01_largeship_machinegun] = new StringBuilder(MyTexts.p351_a01_largeship_machinegun);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p351_a01_largeship_missile_gun4] = new StringBuilder(MyTexts.p351_a01_largeship_missile_gun4);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p351_a01_largeship_missile_gun6] = new StringBuilder(MyTexts.p351_a01_largeship_missile_gun6);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p351_a01_largeship_missile_gun9] = new StringBuilder(MyTexts.p351_a01_largeship_missile_gun9);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p351_a01_weapon_mount] = new StringBuilder(MyTexts.p351_a01_weapon_mount);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p351_a02_largeship_missile_gun_guided4] = new StringBuilder(MyTexts.p351_a02_largeship_missile_gun_guided4);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p351_a02_largeship_missile_gun_guided6] = new StringBuilder(MyTexts.p351_a02_largeship_missile_gun_guided6);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p351_a02_largeship_missile_gun_guided9] = new StringBuilder(MyTexts.p351_a02_largeship_missile_gun_guided9);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p361A01AntennaStick] = new StringBuilder(MyTexts.p361A01AntennaStick);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p361_a01_long_distance_antenna] = new StringBuilder(MyTexts.p361_a01_long_distance_antenna);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p362_a01_short_distance_antenna] = new StringBuilder(MyTexts.p362_a01_short_distance_antenna);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p381_a01_building1] = new StringBuilder(MyTexts.p381_a01_building1);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p381_b01_building2] = new StringBuilder(MyTexts.p381_b01_building2);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p381_c01_building3] = new StringBuilder(MyTexts.p381_c01_building3);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p381_c01_building4] = new StringBuilder(MyTexts.p381_c01_building4);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p381_d01_bio_exp] = new StringBuilder(MyTexts.p381_d01_bio_exp);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p381_d02_church] = new StringBuilder(MyTexts.p381_d02_church);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p381_d03_hospital] = new StringBuilder(MyTexts.p381_d03_hospital);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p381_d04_recycle] = new StringBuilder(MyTexts.p381_d04_recycle);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p381_d05_food_grow] = new StringBuilder(MyTexts.p381_d05_food_grow);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p381_d06_temple_900m] = new StringBuilder(MyTexts.p381_d06_temple_900m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p381_d07_bio_mach_exp] = new StringBuilder(MyTexts.p381_d07_bio_mach_exp);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p382_a01_bridge1] = new StringBuilder(MyTexts.p382_a01_bridge1);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p382_b01_bridge2] = new StringBuilder(MyTexts.p382_b01_bridge2);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p382_c01_bridge3] = new StringBuilder(MyTexts.p382_c01_bridge3);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p382_d01_bridge4] = new StringBuilder(MyTexts.p382_d01_bridge4);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p382_e01_bridge5] = new StringBuilder(MyTexts.p382_e01_bridge5);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p383_a01_church] = new StringBuilder(MyTexts.p383_a01_church);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p384_a01_hospital] = new StringBuilder(MyTexts.p384_a01_hospital);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p385_a01_temple_900m] = new StringBuilder(MyTexts.p385_a01_temple_900m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p410A01TunnelEntrance] = new StringBuilder(MyTexts.p410A01TunnelEntrance);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p410A02TunnelShortUnit] = new StringBuilder(MyTexts.p410A02TunnelShortUnit);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p410A03Tunnel6DofJunction] = new StringBuilder(MyTexts.p410A03Tunnel6DofJunction);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p410A04Tunnel90Turn] = new StringBuilder(MyTexts.p410A04Tunnel90Turn);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p410A05TunnelShortUnitLattice] = new StringBuilder(MyTexts.p410A05TunnelShortUnitLattice);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p410A06TunnelShortUnitWithGaps] = new StringBuilder(MyTexts.p410A06TunnelShortUnitWithGaps);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p410_g01_turn_90_right_0m] = new StringBuilder(MyTexts.p410_g01_turn_90_right_0m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p411_a01_straight_10m] = new StringBuilder(MyTexts.p411_a01_straight_10m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p411_a02_straight_60m_with_hole] = new StringBuilder(MyTexts.p411_a02_straight_60m_with_hole);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p411_a03_straight_120m] = new StringBuilder(MyTexts.p411_a03_straight_120m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p411_a04_straight_80m] = new StringBuilder(MyTexts.p411_a04_straight_80m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p411_a05_straight_80m_with_extension] = new StringBuilder(MyTexts.p411_a05_straight_80m_with_extension);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p411_b01_straight_10m] = new StringBuilder(MyTexts.p411_b01_straight_10m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p411_b02_straight_30m_yellow] = new StringBuilder(MyTexts.p411_b02_straight_30m_yellow);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p411_b02_straight_60m_with_hole] = new StringBuilder(MyTexts.p411_b02_straight_60m_with_hole);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p411_b03_straight_120m] = new StringBuilder(MyTexts.p411_b03_straight_120m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p411_b03_straight_320m] = new StringBuilder(MyTexts.p411_b03_straight_320m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p411_b04_straight_80m_fat] = new StringBuilder(MyTexts.p411_b04_straight_80m_fat);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p411_b04_straight_80m_with_side_grates] = new StringBuilder(MyTexts.p411_b04_straight_80m_with_side_grates);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p411_b05_straight_60m_with_extension] = new StringBuilder(MyTexts.p411_b05_straight_60m_with_extension);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p411_b05_straight_80m_with_side_open] = new StringBuilder(MyTexts.p411_b05_straight_80m_with_side_open);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p411_b06_straight_180m_concrete] = new StringBuilder(MyTexts.p411_b06_straight_180m_concrete);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p411_b06_straight_200m] = new StringBuilder(MyTexts.p411_b06_straight_200m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p411_b07_straight_180m_blue] = new StringBuilder(MyTexts.p411_b07_straight_180m_blue);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p411_b09_straight_30m_gray] = new StringBuilder(MyTexts.p411_b09_straight_30m_gray);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p411_b11_straight_220m] = new StringBuilder(MyTexts.p411_b11_straight_220m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p411_b12_straight_160m_dark_metal] = new StringBuilder(MyTexts.p411_b12_straight_160m_dark_metal);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p411_b13_straight_100m_tube_inside] = new StringBuilder(MyTexts.p411_b13_straight_100m_tube_inside);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p411_c01_straight_10m] = new StringBuilder(MyTexts.p411_c01_straight_10m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p411_c02_straight_40m_with_hole] = new StringBuilder(MyTexts.p411_c02_straight_40m_with_hole);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p411_c03_straight_60m] = new StringBuilder(MyTexts.p411_c03_straight_60m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p411_c04_straight_120m] = new StringBuilder(MyTexts.p411_c04_straight_120m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p411_c05_straight_180m] = new StringBuilder(MyTexts.p411_c05_straight_180m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p411_d01_straight_10m] = new StringBuilder(MyTexts.p411_d01_straight_10m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p411_d02_straight_40m_with_hole] = new StringBuilder(MyTexts.p411_d02_straight_40m_with_hole);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p411_d03_straight_60m] = new StringBuilder(MyTexts.p411_d03_straight_60m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p411_d04_straight_120m] = new StringBuilder(MyTexts.p411_d04_straight_120m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p411_d05_straight_180m] = new StringBuilder(MyTexts.p411_d05_straight_180m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p411_e01_straight_1] = new StringBuilder(MyTexts.p411_e01_straight_1);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p411_e02_straight_2] = new StringBuilder(MyTexts.p411_e02_straight_2);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p411_e03_straight_3] = new StringBuilder(MyTexts.p411_e03_straight_3);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p411_e04_straight_4] = new StringBuilder(MyTexts.p411_e04_straight_4);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p411_e05_straight_5] = new StringBuilder(MyTexts.p411_e05_straight_5);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p411_f01_straight_1] = new StringBuilder(MyTexts.p411_f01_straight_1);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p411_f02_straight_2] = new StringBuilder(MyTexts.p411_f02_straight_2);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p411_f03_straight_3] = new StringBuilder(MyTexts.p411_f03_straight_3);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p411_f04_straight_4] = new StringBuilder(MyTexts.p411_f04_straight_4);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p411_f05_straight_5] = new StringBuilder(MyTexts.p411_f05_straight_5);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p411_g01_straight_1] = new StringBuilder(MyTexts.p411_g01_straight_1);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p411_g02_straight_2] = new StringBuilder(MyTexts.p411_g02_straight_2);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p411_g03_straight_3] = new StringBuilder(MyTexts.p411_g03_straight_3);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p411_g04_straight_4] = new StringBuilder(MyTexts.p411_g04_straight_4);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p411_g05_straight_5] = new StringBuilder(MyTexts.p411_g05_straight_5);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p412A01HexTunnel90TurnVertical] = new StringBuilder(MyTexts.p412A01HexTunnel90TurnVertical);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p412A01HexTunnelSTurnHorizontal] = new StringBuilder(MyTexts.p412A01HexTunnelSTurnHorizontal);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p412A01HexTunnelSTurnVertical] = new StringBuilder(MyTexts.p412A01HexTunnelSTurnVertical);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p412A02HexTunnel90TurnHorizontal] = new StringBuilder(MyTexts.p412A02HexTunnel90TurnHorizontal);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p412_a01_turn_90_up_80m] = new StringBuilder(MyTexts.p412_a01_turn_90_up_80m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p412_a02_turn_90_left_80m] = new StringBuilder(MyTexts.p412_a02_turn_90_left_80m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p412_a03_turn_90_right_80m] = new StringBuilder(MyTexts.p412_a03_turn_90_right_80m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p412_a04_turn_90_down_80m] = new StringBuilder(MyTexts.p412_a04_turn_90_down_80m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p412_a11_turn_90_up_160m] = new StringBuilder(MyTexts.p412_a11_turn_90_up_160m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p412_a12_turn_90_left_160m] = new StringBuilder(MyTexts.p412_a12_turn_90_left_160m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p412_a13_turn_90_right_160m] = new StringBuilder(MyTexts.p412_a13_turn_90_right_160m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p412_a14_turn_90_down_160m] = new StringBuilder(MyTexts.p412_a14_turn_90_down_160m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p412_a21_turn_s_up] = new StringBuilder(MyTexts.p412_a21_turn_s_up);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p412_a22_turn_s_left] = new StringBuilder(MyTexts.p412_a22_turn_s_left);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p412_a23_turn_s_right] = new StringBuilder(MyTexts.p412_a23_turn_s_right);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p412_a24_turn_s_down] = new StringBuilder(MyTexts.p412_a24_turn_s_down);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p412_b01_turn_90_up_80m] = new StringBuilder(MyTexts.p412_b01_turn_90_up_80m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p412_b02_turn_90_left_80m] = new StringBuilder(MyTexts.p412_b02_turn_90_left_80m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p412_b03_turn_90_right_80m] = new StringBuilder(MyTexts.p412_b03_turn_90_right_80m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p412_b04_turn_90_down_80m] = new StringBuilder(MyTexts.p412_b04_turn_90_down_80m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p412_b11_turn_90_up_160m] = new StringBuilder(MyTexts.p412_b11_turn_90_up_160m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p412_b12_turn_90_left_160m] = new StringBuilder(MyTexts.p412_b12_turn_90_left_160m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p412_b13_turn_90_right_160m] = new StringBuilder(MyTexts.p412_b13_turn_90_right_160m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p412_b14_turn_90_down_160m] = new StringBuilder(MyTexts.p412_b14_turn_90_down_160m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p412_b21_turn_s_up] = new StringBuilder(MyTexts.p412_b21_turn_s_up);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p412_b22_turn_s_left] = new StringBuilder(MyTexts.p412_b22_turn_s_left);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p412_b23_turn_s_right] = new StringBuilder(MyTexts.p412_b23_turn_s_right);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p412_b24_turn_s_down] = new StringBuilder(MyTexts.p412_b24_turn_s_down);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p412_f01_turn_90_up_230m] = new StringBuilder(MyTexts.p412_f01_turn_90_up_230m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p412_f02_turn_90_left_230m] = new StringBuilder(MyTexts.p412_f02_turn_90_left_230m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p412_f03_turn_90_right_230m] = new StringBuilder(MyTexts.p412_f03_turn_90_right_230m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p412_f04_turn_90_down_230m] = new StringBuilder(MyTexts.p412_f04_turn_90_down_230m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p412_f11_turn_90_up_230m] = new StringBuilder(MyTexts.p412_f11_turn_90_up_230m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p412_f12_turn_90_left_230m] = new StringBuilder(MyTexts.p412_f12_turn_90_left_230m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p412_f13_turn_90_right_230m] = new StringBuilder(MyTexts.p412_f13_turn_90_right_230m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p412_f14_turn_90_down_230m] = new StringBuilder(MyTexts.p412_f14_turn_90_down_230m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p412_f21_turn_s_up] = new StringBuilder(MyTexts.p412_f21_turn_s_up);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p412_f22_turn_s_left] = new StringBuilder(MyTexts.p412_f22_turn_s_left);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p412_f23_turn_s_right] = new StringBuilder(MyTexts.p412_f23_turn_s_right);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p412_f24_turn_s_down] = new StringBuilder(MyTexts.p412_f24_turn_s_down);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p413_a01_junction_t_horizontal] = new StringBuilder(MyTexts.p413_a01_junction_t_horizontal);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p413_a02_junction_t_vertical] = new StringBuilder(MyTexts.p413_a02_junction_t_vertical);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p413_b01_junction_t_horizontal] = new StringBuilder(MyTexts.p413_b01_junction_t_horizontal);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p413_b02_junction_t_vertical] = new StringBuilder(MyTexts.p413_b02_junction_t_vertical);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p413_c01_junction_t_horizontal] = new StringBuilder(MyTexts.p413_c01_junction_t_horizontal);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p413_c01_junction_x_horizontal] = new StringBuilder(MyTexts.p413_c01_junction_x_horizontal);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p413_d01_junction_t_horizontal] = new StringBuilder(MyTexts.p413_d01_junction_t_horizontal);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p413_d02_junction_t_vertical] = new StringBuilder(MyTexts.p413_d02_junction_t_vertical);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p413_d03_junction_x_horizontal] = new StringBuilder(MyTexts.p413_d03_junction_x_horizontal);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p413_d04_junction_x_vertical] = new StringBuilder(MyTexts.p413_d04_junction_x_vertical);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p413_g01_junction_6axes] = new StringBuilder(MyTexts.p413_g01_junction_6axes);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p414_a02_entrance_60m] = new StringBuilder(MyTexts.p414_a02_entrance_60m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p414_b02_entrance_60m] = new StringBuilder(MyTexts.p414_b02_entrance_60m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p414_c01_entrance_60m] = new StringBuilder(MyTexts.p414_c01_entrance_60m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p414_d01_entrance_60m] = new StringBuilder(MyTexts.p414_d01_entrance_60m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p414_e01_entrance_60m] = new StringBuilder(MyTexts.p414_e01_entrance_60m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p414_f01_entrance_60m] = new StringBuilder(MyTexts.p414_f01_entrance_60m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p414_g01_entrance_60m] = new StringBuilder(MyTexts.p414_g01_entrance_60m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p414_g02_entrance_60m] = new StringBuilder(MyTexts.p414_g02_entrance_60m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p415_a01_doorcase] = new StringBuilder(MyTexts.p415_a01_doorcase);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p415_a02_door] = new StringBuilder(MyTexts.p415_a02_door);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p415_b01_doorcase] = new StringBuilder(MyTexts.p415_b01_doorcase);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p415_c01_door1] = new StringBuilder(MyTexts.p415_c01_door1);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p415_c01_door2] = new StringBuilder(MyTexts.p415_c01_door2);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p415_c01_door3] = new StringBuilder(MyTexts.p415_c01_door3);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p415_c01_door4] = new StringBuilder(MyTexts.p415_c01_door4);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p415_c01_doorcase] = new StringBuilder(MyTexts.p415_c01_doorcase);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p415_c02_door1] = new StringBuilder(MyTexts.p415_c02_door1);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p415_c03_door2_a] = new StringBuilder(MyTexts.p415_c03_door2_a);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p415_c03_door2_b] = new StringBuilder(MyTexts.p415_c03_door2_b);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p415_c04_door3] = new StringBuilder(MyTexts.p415_c04_door3);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p415_d01_doorcase] = new StringBuilder(MyTexts.p415_d01_doorcase);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p415_d02_door1] = new StringBuilder(MyTexts.p415_d02_door1);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p415_d03_door2_a] = new StringBuilder(MyTexts.p415_d03_door2_a);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p415_d03_door2_b] = new StringBuilder(MyTexts.p415_d03_door2_b);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p420A01PipeStraightLong] = new StringBuilder(MyTexts.p420A01PipeStraightLong);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p420A02PipeStraightMedium] = new StringBuilder(MyTexts.p420A02PipeStraightMedium);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p420A03PipeStraightTiny] = new StringBuilder(MyTexts.p420A03PipeStraightTiny);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p420A04PipeTJunction] = new StringBuilder(MyTexts.p420A04PipeTJunction);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p420A05PipeTurn] = new StringBuilder(MyTexts.p420A05PipeTurn);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p421_a01_pipe_straight_80m] = new StringBuilder(MyTexts.p421_a01_pipe_straight_80m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p421_a02_pipe_straight_40m] = new StringBuilder(MyTexts.p421_a02_pipe_straight_40m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p421_a03_pipe_straight_10m] = new StringBuilder(MyTexts.p421_a03_pipe_straight_10m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p422_a01_pipe_turn_90] = new StringBuilder(MyTexts.p422_a01_pipe_turn_90);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p423_a01_pipe_junction] = new StringBuilder(MyTexts.p423_a01_pipe_junction);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p424_a01_pipe_base] = new StringBuilder(MyTexts.p424_a01_pipe_base);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p430_a01_passage_10m] = new StringBuilder(MyTexts.p430_a01_passage_10m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p430_a02_passage_40m] = new StringBuilder(MyTexts.p430_a02_passage_40m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p511_a01_billboard] = new StringBuilder(MyTexts.p511_a01_billboard);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p511_a02_billboard] = new StringBuilder(MyTexts.p511_a02_billboard);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p511_a03_billboard] = new StringBuilder(MyTexts.p511_a03_billboard);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p511_a04_billboard] = new StringBuilder(MyTexts.p511_a04_billboard);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p511_a05_billboard] = new StringBuilder(MyTexts.p511_a05_billboard);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p511_a06_billboard] = new StringBuilder(MyTexts.p511_a06_billboard);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p511_a07_billboard] = new StringBuilder(MyTexts.p511_a07_billboard);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p511_a08_billboard] = new StringBuilder(MyTexts.p511_a08_billboard);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p511_a09_billboard] = new StringBuilder(MyTexts.p511_a09_billboard);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p511_a10_billboard] = new StringBuilder(MyTexts.p511_a10_billboard);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p511_a11_billboard] = new StringBuilder(MyTexts.p511_a11_billboard);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p511_a12_billboard] = new StringBuilder(MyTexts.p511_a12_billboard);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p511_a13_billboard] = new StringBuilder(MyTexts.p511_a13_billboard);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p511_a14_billboard] = new StringBuilder(MyTexts.p511_a14_billboard);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p511_a15_billboard] = new StringBuilder(MyTexts.p511_a15_billboard);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p511_a16_billboard] = new StringBuilder(MyTexts.p511_a16_billboard);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p521_a01_light1] = new StringBuilder(MyTexts.p521_a01_light1);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p521_a02_light2] = new StringBuilder(MyTexts.p521_a02_light2);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p521_a03_light3] = new StringBuilder(MyTexts.p521_a03_light3);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p521_a04_light4] = new StringBuilder(MyTexts.p521_a04_light4);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p531_a01_sign1] = new StringBuilder(MyTexts.p531_a01_sign1);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p531_a02_sign2] = new StringBuilder(MyTexts.p531_a02_sign2);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p531_a03_sign3] = new StringBuilder(MyTexts.p531_a03_sign3);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p531_a04_sign4] = new StringBuilder(MyTexts.p531_a04_sign4);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p531_a05_sign5] = new StringBuilder(MyTexts.p531_a05_sign5);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p531_a06_sign6] = new StringBuilder(MyTexts.p531_a06_sign6);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p531_a07_sign7] = new StringBuilder(MyTexts.p531_a07_sign7);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p531_a08_sign8] = new StringBuilder(MyTexts.p531_a08_sign8);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p531_a09_sign9] = new StringBuilder(MyTexts.p531_a09_sign9);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p531_a10_sign10] = new StringBuilder(MyTexts.p531_a10_sign10);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p531_a11_sign11] = new StringBuilder(MyTexts.p531_a11_sign11);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p531_a12_sign12] = new StringBuilder(MyTexts.p531_a12_sign12);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p531_b_faction] = new StringBuilder(MyTexts.p531_b_faction);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p531_b_faction_holo] = new StringBuilder(MyTexts.p531_b_faction_holo);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p531_c_administrative_area] = new StringBuilder(MyTexts.p531_c_administrative_area);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p531_c_armory] = new StringBuilder(MyTexts.p531_c_armory);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p531_c_arrow_l] = new StringBuilder(MyTexts.p531_c_arrow_l);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p531_c_arrow_r] = new StringBuilder(MyTexts.p531_c_arrow_r);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p531_c_arrow_str] = new StringBuilder(MyTexts.p531_c_arrow_str);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p531_c_cargo_bay] = new StringBuilder(MyTexts.p531_c_cargo_bay);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p531_c_command_center] = new StringBuilder(MyTexts.p531_c_command_center);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p531_c_commercial_area] = new StringBuilder(MyTexts.p531_c_commercial_area);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p531_c_communications] = new StringBuilder(MyTexts.p531_c_communications);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p531_c_defenses] = new StringBuilder(MyTexts.p531_c_defenses);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p531_c_docks] = new StringBuilder(MyTexts.p531_c_docks);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p531_c_emergency_exit] = new StringBuilder(MyTexts.p531_c_emergency_exit);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p531_c_engineering_area] = new StringBuilder(MyTexts.p531_c_engineering_area);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p531_c_exit] = new StringBuilder(MyTexts.p531_c_exit);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p531_c_experimental_labs] = new StringBuilder(MyTexts.p531_c_experimental_labs);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p531_c_foundry] = new StringBuilder(MyTexts.p531_c_foundry);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p531_c_habitats] = new StringBuilder(MyTexts.p531_c_habitats);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p531_c_hangars] = new StringBuilder(MyTexts.p531_c_hangars);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p531_c_industrial_area] = new StringBuilder(MyTexts.p531_c_industrial_area);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p531_c_landing_bay] = new StringBuilder(MyTexts.p531_c_landing_bay);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p531_c_maintenance] = new StringBuilder(MyTexts.p531_c_maintenance);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p531_c_military_area] = new StringBuilder(MyTexts.p531_c_military_area);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p531_c_mines] = new StringBuilder(MyTexts.p531_c_mines);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p531_c_ore_processing] = new StringBuilder(MyTexts.p531_c_ore_processing);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p531_c_outer_area] = new StringBuilder(MyTexts.p531_c_outer_area);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p531_c_prison] = new StringBuilder(MyTexts.p531_c_prison);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p531_c_public_area] = new StringBuilder(MyTexts.p531_c_public_area);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p531_c_reactor] = new StringBuilder(MyTexts.p531_c_reactor);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p531_c_research] = new StringBuilder(MyTexts.p531_c_research);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p531_c_restricted_area] = new StringBuilder(MyTexts.p531_c_restricted_area);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p531_c_security] = new StringBuilder(MyTexts.p531_c_security);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p531_c_sign] = new StringBuilder(MyTexts.p531_c_sign);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p531_c_storage] = new StringBuilder(MyTexts.p531_c_storage);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p531_c_technical_area] = new StringBuilder(MyTexts.p531_c_technical_area);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p531_c_trade_port] = new StringBuilder(MyTexts.p531_c_trade_port);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p541_escape_pod] = new StringBuilder(MyTexts.p541_escape_pod);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p541_escape_pod_base] = new StringBuilder(MyTexts.p541_escape_pod_base);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p541_ventilator_body] = new StringBuilder(MyTexts.p541_ventilator_body);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p541_ventilator_propeller] = new StringBuilder(MyTexts.p541_ventilator_propeller);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p551_a01_particles] = new StringBuilder(MyTexts.p551_a01_particles);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p551_b01_particles] = new StringBuilder(MyTexts.p551_b01_particles);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p551_c01_particles] = new StringBuilder(MyTexts.p551_c01_particles);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p551_d01_particles] = new StringBuilder(MyTexts.p551_d01_particles);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p561_a01_sound] = new StringBuilder(MyTexts.p561_a01_sound);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p561_b01_sound] = new StringBuilder(MyTexts.p561_b01_sound);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p561_c01_sound] = new StringBuilder(MyTexts.p561_c01_sound);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p561_d01_sound] = new StringBuilder(MyTexts.p561_d01_sound);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p571_a01_traffic_sign] = new StringBuilder(MyTexts.p571_a01_traffic_sign);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p571_b01_traffic_sign] = new StringBuilder(MyTexts.p571_b01_traffic_sign);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p571_box01_traffic_sign] = new StringBuilder(MyTexts.p571_box01_traffic_sign);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p571_box02_traffic_sign] = new StringBuilder(MyTexts.p571_box02_traffic_sign);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p571_c01_traffic_sign] = new StringBuilder(MyTexts.p571_c01_traffic_sign);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p571_d01_traffic_sign] = new StringBuilder(MyTexts.p571_d01_traffic_sign);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p571_e01_traffic_sign] = new StringBuilder(MyTexts.p571_e01_traffic_sign);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p571_f01_traffic_sign] = new StringBuilder(MyTexts.p571_f01_traffic_sign);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p571_g01_traffic_sign] = new StringBuilder(MyTexts.p571_g01_traffic_sign);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p571_h01_traffic_sign] = new StringBuilder(MyTexts.p571_h01_traffic_sign);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p571_i01_traffic_sign] = new StringBuilder(MyTexts.p571_i01_traffic_sign);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p571_j01_traffic_sign] = new StringBuilder(MyTexts.p571_j01_traffic_sign);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p571_k01_traffic_sign] = new StringBuilder(MyTexts.p571_k01_traffic_sign);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p571_l01_traffic_sign] = new StringBuilder(MyTexts.p571_l01_traffic_sign);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PageDown] = new StringBuilder(MyTexts.PageDown);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PageUp] = new StringBuilder(MyTexts.PageUp);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ParticleEffect] = new StringBuilder(MyTexts.ParticleEffect);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Passive] = new StringBuilder(MyTexts.Passive);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Password] = new StringBuilder(MyTexts.Password);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PatrolMode] = new StringBuilder(MyTexts.PatrolMode);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PerfectSphereSplitted_512x512x512] = new StringBuilder(MyTexts.PerfectSphereSplitted_512x512x512);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PerfectSphereWithFewTunnels_512x512x512] = new StringBuilder(MyTexts.PerfectSphereWithFewTunnels_512x512x512);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PerfectSphereWithMassiveTunnels2_512x512x512] = new StringBuilder(MyTexts.PerfectSphereWithMassiveTunnels2_512x512x512);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PerfectSphereWithMassiveTunnels_512x512x512] = new StringBuilder(MyTexts.PerfectSphereWithMassiveTunnels_512x512x512);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PerfectSphereWithRaceTunnel2_512x512x512] = new StringBuilder(MyTexts.PerfectSphereWithRaceTunnel2_512x512x512);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PerfectSphereWithRaceTunnel_512x512x512] = new StringBuilder(MyTexts.PerfectSphereWithRaceTunnel_512x512x512);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PingPong] = new StringBuilder(MyTexts.PingPong);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.pipe_bundle] = new StringBuilder(MyTexts.pipe_bundle);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.piratebase_export] = new StringBuilder(MyTexts.piratebase_export);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Platinum_01] = new StringBuilder(MyTexts.Platinum_01);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PlayDemo] = new StringBuilder(MyTexts.PlayDemo);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PlayerHealthIndestructible] = new StringBuilder(MyTexts.PlayerHealthIndestructible);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PlayerName] = new StringBuilder(MyTexts.PlayerName);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PlayerNotFound] = new StringBuilder(MyTexts.PlayerNotFound);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PlayerShipIndestructible] = new StringBuilder(MyTexts.PlayerShipIndestructible);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PlayerStart] = new StringBuilder(MyTexts.PlayerStart);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PlayerStartPosition] = new StringBuilder(MyTexts.PlayerStartPosition);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PlaySandbox] = new StringBuilder(MyTexts.PlaySandbox);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PlayStory] = new StringBuilder(MyTexts.PlayStory);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PointLight] = new StringBuilder(MyTexts.PointLight);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Position] = new StringBuilder(MyTexts.Position);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PrefabContainer] = new StringBuilder(MyTexts.PrefabContainer);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PrefabContainerAlreadyContainsFoundationFactory] = new StringBuilder(MyTexts.PrefabContainerAlreadyContainsFoundationFactory);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PrefabContainerContextMenuCaption] = new StringBuilder(MyTexts.PrefabContainerContextMenuCaption);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PrefabContextMenuCaption] = new StringBuilder(MyTexts.PrefabContextMenuCaption);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PrefabMaterials] = new StringBuilder(MyTexts.PrefabMaterials);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Prefabs] = new StringBuilder(MyTexts.Prefabs);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SpawnPoints] = new StringBuilder(MyTexts.SpawnPoints);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PressToBuildTurret] = new StringBuilder(MyTexts.PressToBuildTurret);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PressToSkipTimer] = new StringBuilder(MyTexts.PressToSkipTimer);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PreviousCamera] = new StringBuilder(MyTexts.PreviousCamera);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Profile] = new StringBuilder(MyTexts.Profile);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.QuickZoom] = new StringBuilder(MyTexts.QuickZoom);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.QuoteOfTheDay00] = new StringBuilder(MyTexts.QuoteOfTheDay00);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.QuoteOfTheDay01] = new StringBuilder(MyTexts.QuoteOfTheDay01);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.QuoteOfTheDay02] = new StringBuilder(MyTexts.QuoteOfTheDay02);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.QuoteOfTheDay03] = new StringBuilder(MyTexts.QuoteOfTheDay03);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.QuoteOfTheDay04] = new StringBuilder(MyTexts.QuoteOfTheDay04);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.QuoteOfTheDay05] = new StringBuilder(MyTexts.QuoteOfTheDay05);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.QuoteOfTheDay06] = new StringBuilder(MyTexts.QuoteOfTheDay06);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.QuoteOfTheDay07] = new StringBuilder(MyTexts.QuoteOfTheDay07);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.QuoteOfTheDay08] = new StringBuilder(MyTexts.QuoteOfTheDay08);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.QuoteOfTheDay09] = new StringBuilder(MyTexts.QuoteOfTheDay09);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.QuoteOfTheDay10] = new StringBuilder(MyTexts.QuoteOfTheDay10);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.QuoteOfTheDay11] = new StringBuilder(MyTexts.QuoteOfTheDay11);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.QuoteOfTheDay12] = new StringBuilder(MyTexts.QuoteOfTheDay12);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.QuoteOfTheDay13] = new StringBuilder(MyTexts.QuoteOfTheDay13);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.QuoteOfTheDay14] = new StringBuilder(MyTexts.QuoteOfTheDay14);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.QuoteOfTheDay15] = new StringBuilder(MyTexts.QuoteOfTheDay15);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.QuoteOfTheDay16] = new StringBuilder(MyTexts.QuoteOfTheDay16);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.QuoteOfTheDay17] = new StringBuilder(MyTexts.QuoteOfTheDay17);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.QuoteOfTheDay18] = new StringBuilder(MyTexts.QuoteOfTheDay18);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.QuoteOfTheDay19] = new StringBuilder(MyTexts.QuoteOfTheDay19);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.QuoteOfTheDay20] = new StringBuilder(MyTexts.QuoteOfTheDay20);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.QuoteOfTheDay21] = new StringBuilder(MyTexts.QuoteOfTheDay21);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.QuoteOfTheDay22] = new StringBuilder(MyTexts.QuoteOfTheDay22);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.QuoteOfTheDay23] = new StringBuilder(MyTexts.QuoteOfTheDay23);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.QuoteOfTheDay24] = new StringBuilder(MyTexts.QuoteOfTheDay24);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.QuoteOfTheDay25] = new StringBuilder(MyTexts.QuoteOfTheDay25);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.QuoteOfTheDay26] = new StringBuilder(MyTexts.QuoteOfTheDay26);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.QuoteOfTheDay27] = new StringBuilder(MyTexts.QuoteOfTheDay27);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.QuoteOfTheDay28] = new StringBuilder(MyTexts.QuoteOfTheDay28);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.QuoteOfTheDay29] = new StringBuilder(MyTexts.QuoteOfTheDay29);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.QuoteOfTheDay30] = new StringBuilder(MyTexts.QuoteOfTheDay30);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.QuoteOfTheDay31] = new StringBuilder(MyTexts.QuoteOfTheDay31);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.QuoteOfTheDay32] = new StringBuilder(MyTexts.QuoteOfTheDay32);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.QuoteOfTheDay33] = new StringBuilder(MyTexts.QuoteOfTheDay33);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.QuoteOfTheDay34] = new StringBuilder(MyTexts.QuoteOfTheDay34);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RadarType] = new StringBuilder(MyTexts.RadarType);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RadarTypeNormal3D] = new StringBuilder(MyTexts.RadarTypeNormal3D);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RadarTypePlayer2D] = new StringBuilder(MyTexts.RadarTypePlayer2D);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RadarTypeSolar2D] = new StringBuilder(MyTexts.RadarTypeSolar2D);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Radius] = new StringBuilder(MyTexts.Radius);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RadiusMax] = new StringBuilder(MyTexts.RadiusMax);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RadiusMaxLowerThanRadiusMin] = new StringBuilder(MyTexts.RadiusMaxLowerThanRadiusMin);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RadiusMin] = new StringBuilder(MyTexts.RadiusMin);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Random] = new StringBuilder(MyTexts.Random);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RandomFlashing] = new StringBuilder(MyTexts.RandomFlashing);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RearCam] = new StringBuilder(MyTexts.RearCam);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RearViewMirror] = new StringBuilder(MyTexts.RearViewMirror);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RecommendedAspectRatio] = new StringBuilder(MyTexts.RecommendedAspectRatio);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Red] = new StringBuilder(MyTexts.Red);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RedColoredPropertiesAreNotSame] = new StringBuilder(MyTexts.RedColoredPropertiesAreNotSame);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Register] = new StringBuilder(MyTexts.Register);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Registration] = new StringBuilder(MyTexts.Registration);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RegistrationInfo] = new StringBuilder(MyTexts.RegistrationInfo);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RegistrationInProgressPleaseWait] = new StringBuilder(MyTexts.RegistrationInProgressPleaseWait);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RemainingTurrets] = new StringBuilder(MyTexts.RemainingTurrets);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RememberMe] = new StringBuilder(MyTexts.RememberMe);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RemoteBombHud] = new StringBuilder(MyTexts.RemoteBombHud);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RemoteCameraHud] = new StringBuilder(MyTexts.RemoteCameraHud);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RemoteCameraNo] = new StringBuilder(MyTexts.RemoteCameraNo);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RemoteCameraNoRotate] = new StringBuilder(MyTexts.RemoteCameraNoRotate);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RemoteCameraRotate] = new StringBuilder(MyTexts.RemoteCameraRotate);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RemoveAllBlueprints] = new StringBuilder(MyTexts.RemoveAllBlueprints);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RemoveVoxels] = new StringBuilder(MyTexts.RemoveVoxels);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Rename] = new StringBuilder(MyTexts.Rename);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RenameCheckpoint] = new StringBuilder(MyTexts.RenameCheckpoint);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RenderQuality] = new StringBuilder(MyTexts.RenderQuality);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RenderQualityExtreme] = new StringBuilder(MyTexts.RenderQualityExtreme);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RenderQualityHigh] = new StringBuilder(MyTexts.RenderQualityHigh);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RenderQualityLow] = new StringBuilder(MyTexts.RenderQualityLow);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RenderQualityNormal] = new StringBuilder(MyTexts.RenderQualityNormal);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Repair] = new StringBuilder(MyTexts.Repair);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ResetAsteroid] = new StringBuilder(MyTexts.ResetAsteroid);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ResetAsteroidTooltip] = new StringBuilder(MyTexts.ResetAsteroidTooltip);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ResetRotation] = new StringBuilder(MyTexts.ResetRotation);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ResetRotationTooltip] = new StringBuilder(MyTexts.ResetRotationTooltip);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Respawn] = new StringBuilder(MyTexts.Respawn);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RetypePassword] = new StringBuilder(MyTexts.RetypePassword);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ReverseThrust] = new StringBuilder(MyTexts.ReverseThrust);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Revert] = new StringBuilder(MyTexts.Revert);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Right] = new StringBuilder(MyTexts.Right);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RightAlt] = new StringBuilder(MyTexts.RightAlt);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RightControl] = new StringBuilder(MyTexts.RightControl);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RightMouseButton] = new StringBuilder(MyTexts.RightMouseButton);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RightShift] = new StringBuilder(MyTexts.RightShift);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RighWeapons] = new StringBuilder(MyTexts.RighWeapons);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RollLeft] = new StringBuilder(MyTexts.RollLeft);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RollRight] = new StringBuilder(MyTexts.RollRight);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RotationDown] = new StringBuilder(MyTexts.RotationDown);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RotationLeft] = new StringBuilder(MyTexts.RotationLeft);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RotationRight] = new StringBuilder(MyTexts.RotationRight);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RotationUp] = new StringBuilder(MyTexts.RotationUp);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RusMothership] = new StringBuilder(MyTexts.RusMothership);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RussianMothershipHummer] = new StringBuilder(MyTexts.RussianMothershipHummer);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SafeArea] = new StringBuilder(MyTexts.SafeArea);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Sandstone_01] = new StringBuilder(MyTexts.Sandstone_01);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SaveAsteroids] = new StringBuilder(MyTexts.SaveAsteroids);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SaveAsteroidsTooltip] = new StringBuilder(MyTexts.SaveAsteroidsTooltip);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SaveAsteroidToFile] = new StringBuilder(MyTexts.SaveAsteroidToFile);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SaveAsteroidToFileTooltip] = new StringBuilder(MyTexts.SaveAsteroidToFileTooltip);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SaveCheckpoint] = new StringBuilder(MyTexts.SaveCheckpoint);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SaveSector] = new StringBuilder(MyTexts.SaveSector);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SaveSectorInProgressPleaseWait] = new StringBuilder(MyTexts.SaveSectorInProgressPleaseWait);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SaveSectorTooltip] = new StringBuilder(MyTexts.SaveSectorTooltip);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Scanner] = new StringBuilder(MyTexts.Scanner);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ScannerPlane] = new StringBuilder(MyTexts.ScannerPlane);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ScannerRays] = new StringBuilder(MyTexts.ScannerRays);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ScanningSpeed] = new StringBuilder(MyTexts.ScanningSpeed);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ScratchedBoulder_128x128x128] = new StringBuilder(MyTexts.ScratchedBoulder_128x128x128);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Search] = new StringBuilder(MyTexts.Search);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SectorBorderBegin] = new StringBuilder(MyTexts.SectorBorderBegin);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SectorBorderEnd] = new StringBuilder(MyTexts.SectorBorderEnd);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SectorIdentifier] = new StringBuilder(MyTexts.SectorIdentifier);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SectorName] = new StringBuilder(MyTexts.SectorName);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SectorNotFound] = new StringBuilder(MyTexts.SectorNotFound);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SecurityControlHUB] = new StringBuilder(MyTexts.SecurityControlHUB);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SeeAll] = new StringBuilder(MyTexts.SeeAll);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SeeDistance] = new StringBuilder(MyTexts.SeeDistance);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Selectable] = new StringBuilder(MyTexts.Selectable);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SelectAllNone] = new StringBuilder(MyTexts.SelectAllNone);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SelectAllObjects] = new StringBuilder(MyTexts.SelectAllObjects);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SelectAllObjectsTooltip] = new StringBuilder(MyTexts.SelectAllObjectsTooltip);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SelectControl] = new StringBuilder(MyTexts.SelectControl);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SelectedObjectHudLabelText] = new StringBuilder(MyTexts.SelectedObjectHudLabelText);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SelectedObjectOrientationForward] = new StringBuilder(MyTexts.SelectedObjectOrientationForward);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SelectedObjectOrientationUp] = new StringBuilder(MyTexts.SelectedObjectOrientationUp);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SelectedObjectPosition] = new StringBuilder(MyTexts.SelectedObjectPosition);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SelectedObjectSizeInMeters] = new StringBuilder(MyTexts.SelectedObjectSizeInMeters);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SelectedObjectType] = new StringBuilder(MyTexts.SelectedObjectType);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SelectedVoxelMapRemainingSaveExplosions] = new StringBuilder(MyTexts.SelectedVoxelMapRemainingSaveExplosions);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SelectBackLauncherAmmo] = new StringBuilder(MyTexts.SelectBackLauncherAmmo);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SelectFrontLauncherAmmo] = new StringBuilder(MyTexts.SelectFrontLauncherAmmo);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SelectAmmo] = new StringBuilder(MyTexts.SelectAmmo);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SelectBulletAmmo] = new StringBuilder(MyTexts.SelectBulletAmmo);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SelectSandboxInProgressPleaseWait] = new StringBuilder(MyTexts.SelectSandboxInProgressPleaseWait);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SelectMissileAmmo] = new StringBuilder(MyTexts.SelectMissileAmmo);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SelectSector] = new StringBuilder(MyTexts.SelectSector);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SelectCannonAmmo] = new StringBuilder(MyTexts.SelectCannonAmmo);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SendNewsletters] = new StringBuilder(MyTexts.SendNewsletters);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ServerShutdownNotification] = new StringBuilder(MyTexts.ServerShutdownNotification);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ServerShutdownNotificationCaption] = new StringBuilder(MyTexts.ServerShutdownNotificationCaption);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SessionType] = new StringBuilder(MyTexts.SessionType);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SetShipFaction] = new StringBuilder(MyTexts.SetShipFaction);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Ship] = new StringBuilder(MyTexts.Ship);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ShipCustomizationCaption] = new StringBuilder(MyTexts.ShipCustomizationCaption);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ShipInventory] = new StringBuilder(MyTexts.ShipInventory);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ShipInventoryCaption] = new StringBuilder(MyTexts.ShipInventoryCaption);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.UseGPS] = new StringBuilder(MyTexts.UseGPS);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ShowVertexNormals] = new StringBuilder(MyTexts.ShowVertexNormals);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SideMission] = new StringBuilder(MyTexts.SideMission);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Silicon_01] = new StringBuilder(MyTexts.Silicon_01);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Silver_01] = new StringBuilder(MyTexts.Silver_01);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SimulateLostMessages] = new StringBuilder(MyTexts.SimulateLostMessages);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SimulateSlowDraw] = new StringBuilder(MyTexts.SimulateSlowDraw);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SimulateSlowUpdate] = new StringBuilder(MyTexts.SimulateSlowUpdate);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SmallShip] = new StringBuilder(MyTexts.SmallShip);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SmallShipContextMenuCaption] = new StringBuilder(MyTexts.SmallShipContextMenuCaption);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SmallShipDoon] = new StringBuilder(MyTexts.SmallShipDoon);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SmallShipHammer] = new StringBuilder(MyTexts.SmallShipHammer);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SmallShipHawk] = new StringBuilder(MyTexts.SmallShipHawk);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SmallShipJackKnife] = new StringBuilder(MyTexts.SmallShipJackKnife);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SmallShipLeviathan] = new StringBuilder(MyTexts.SmallShipLeviathan);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SmallShipMinerShip01] = new StringBuilder(MyTexts.SmallShipMinerShip01);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SmallShipMinerShip02] = new StringBuilder(MyTexts.SmallShipMinerShip02);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SmallShipMinerShip03] = new StringBuilder(MyTexts.SmallShipMinerShip03);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SmallShipMinerShip04] = new StringBuilder(MyTexts.SmallShipMinerShip04);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SmallShipMinerShip05] = new StringBuilder(MyTexts.SmallShipMinerShip05);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SmallShipMinerShip06] = new StringBuilder(MyTexts.SmallShipMinerShip06);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SmallShipMinerShip07] = new StringBuilder(MyTexts.SmallShipMinerShip07);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SmallShipMinerShip08] = new StringBuilder(MyTexts.SmallShipMinerShip08);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SmallShipMinerShip09] = new StringBuilder(MyTexts.SmallShipMinerShip09);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SmallShipMinerShip10] = new StringBuilder(MyTexts.SmallShipMinerShip10);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SmallShipOrg] = new StringBuilder(MyTexts.SmallShipOrg);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SmallShipPhoenix] = new StringBuilder(MyTexts.SmallShipPhoenix);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SmallShipRockheater] = new StringBuilder(MyTexts.SmallShipRockheater);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SmallShipStanislav] = new StringBuilder(MyTexts.SmallShipStanislav);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SmallShipSteelHead] = new StringBuilder(MyTexts.SmallShipSteelHead);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SmallShipTalon] = new StringBuilder(MyTexts.SmallShipTalon);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SmallShipYg] = new StringBuilder(MyTexts.SmallShipYg);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SmokeBombHud] = new StringBuilder(MyTexts.SmokeBombHud);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SnapPointLinkError] = new StringBuilder(MyTexts.SnapPointLinkError);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SnapPoints] = new StringBuilder(MyTexts.SnapPoints);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Snow_01] = new StringBuilder(MyTexts.Snow_01);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SoftenVoxels] = new StringBuilder(MyTexts.SoftenVoxels);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SolarSystemMap] = new StringBuilder(MyTexts.SolarSystemMap);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SolarWindArmor] = new StringBuilder(MyTexts.SolarWindArmor);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SorryButSelectedSettingsAreNotSupportedByYourHardware] = new StringBuilder(MyTexts.SorryButSelectedSettingsAreNotSupportedByYourHardware);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SoundInfluenceSphereType] = new StringBuilder(MyTexts.SoundInfluenceSphereType);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Space] = new StringBuilder(MyTexts.Space);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SpawnedBots] = new StringBuilder(MyTexts.SpawnedBots);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SpawnInGroups] = new StringBuilder(MyTexts.SpawnInGroups);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SpawnPoint] = new StringBuilder(MyTexts.SpawnPoint);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SpectatorPosition] = new StringBuilder(MyTexts.SpectatorPosition);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SpectatorSpeedIndicator] = new StringBuilder(MyTexts.SpectatorSpeedIndicator);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SpecularColor] = new StringBuilder(MyTexts.SpecularColor);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SphereExplosiveHud] = new StringBuilder(MyTexts.SphereExplosiveHud);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SphereFull_128] = new StringBuilder(MyTexts.SphereFull_128);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SphereFull_256] = new StringBuilder(MyTexts.SphereFull_256);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SphereFull_512] = new StringBuilder(MyTexts.SphereFull_512);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SphereFull_64] = new StringBuilder(MyTexts.SphereFull_64);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SphereWithLargeCutOut_128x128x128] = new StringBuilder(MyTexts.SphereWithLargeCutOut_128x128x128);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SpotLight] = new StringBuilder(MyTexts.SpotLight);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Standard_Container_1] = new StringBuilder(MyTexts.Standard_Container_1);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Standard_Container_2] = new StringBuilder(MyTexts.Standard_Container_2);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Standard_Container_3] = new StringBuilder(MyTexts.Standard_Container_3);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Standard_Container_4] = new StringBuilder(MyTexts.Standard_Container_4);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.StartedMissions] = new StringBuilder(MyTexts.StartedMissions);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.StartGameFailed] = new StringBuilder(MyTexts.StartGameFailed);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.StartGameInProgressPleaseWait] = new StringBuilder(MyTexts.StartGameInProgressPleaseWait);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Static] = new StringBuilder(MyTexts.Static);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.StaticAsteroid10000m] = new StringBuilder(MyTexts.StaticAsteroid10000m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.StaticAsteroid1000m] = new StringBuilder(MyTexts.StaticAsteroid1000m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.StaticAsteroid100m] = new StringBuilder(MyTexts.StaticAsteroid100m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.StaticAsteroid10m] = new StringBuilder(MyTexts.StaticAsteroid10m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.StaticAsteroid2000m] = new StringBuilder(MyTexts.StaticAsteroid2000m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.StaticAsteroid20m] = new StringBuilder(MyTexts.StaticAsteroid20m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.StaticAsteroid300m] = new StringBuilder(MyTexts.StaticAsteroid300m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.StaticAsteroid30m] = new StringBuilder(MyTexts.StaticAsteroid30m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.StaticAsteroid5000m] = new StringBuilder(MyTexts.StaticAsteroid5000m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.StaticAsteroid500m] = new StringBuilder(MyTexts.StaticAsteroid500m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.StaticAsteroid50m] = new StringBuilder(MyTexts.StaticAsteroid50m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.StaticAsteroidContextMenuCaption] = new StringBuilder(MyTexts.StaticAsteroidContextMenuCaption);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Stone_01] = new StringBuilder(MyTexts.Stone_01);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Stone_02] = new StringBuilder(MyTexts.Stone_02);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Stone_03] = new StringBuilder(MyTexts.Stone_03);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Stone_04] = new StringBuilder(MyTexts.Stone_04);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Stone_05] = new StringBuilder(MyTexts.Stone_05);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Stone_06] = new StringBuilder(MyTexts.Stone_06);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Stone_07] = new StringBuilder(MyTexts.Stone_07);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Stone_08] = new StringBuilder(MyTexts.Stone_08);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Stone_10] = new StringBuilder(MyTexts.Stone_10);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Stone_13_Wall_01] = new StringBuilder(MyTexts.Stone_13_Wall_01);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.StorySectorPositionYMustBeZero] = new StringBuilder(MyTexts.StorySectorPositionYMustBeZero);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.StorySectors] = new StringBuilder(MyTexts.StorySectors);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.StrafeLeft] = new StringBuilder(MyTexts.StrafeLeft);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.StrafeRight] = new StringBuilder(MyTexts.StrafeRight);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.subCategoryTypeAmmunitionBox] = new StringBuilder(MyTexts.subCategoryTypeAmmunitionBox);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.subCategoryTypeBiodome] = new StringBuilder(MyTexts.subCategoryTypeBiodome);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.subCategoryTypeBridge] = new StringBuilder(MyTexts.subCategoryTypeBridge);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.subCategoryTypeCableHolders] = new StringBuilder(MyTexts.subCategoryTypeCableHolders);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.subCategoryTypeConnectionBoxes] = new StringBuilder(MyTexts.subCategoryTypeConnectionBoxes);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.subCategoryTypeDocks] = new StringBuilder(MyTexts.subCategoryTypeDocks);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.subCategoryTypeEscapePods] = new StringBuilder(MyTexts.subCategoryTypeEscapePods);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.subCategoryTypeFactory] = new StringBuilder(MyTexts.subCategoryTypeFactory);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.subCategoryTypeFuelGeneration] = new StringBuilder(MyTexts.subCategoryTypeFuelGeneration);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.subCategoryTypeFuelStorage] = new StringBuilder(MyTexts.subCategoryTypeFuelStorage);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.subCategoryTypeGasStorage] = new StringBuilder(MyTexts.subCategoryTypeGasStorage);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.subCategoryTypeJunction] = new StringBuilder(MyTexts.subCategoryTypeJunction);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.subCategoryTypeLarge] = new StringBuilder(MyTexts.subCategoryTypeLarge);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.subCategoryTypeLivingQuarters] = new StringBuilder(MyTexts.subCategoryTypeLivingQuarters);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.subCategoryTypeLoadingUnloading] = new StringBuilder(MyTexts.subCategoryTypeLoadingUnloading);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.subCategoryTypeLongDistanceAntenna] = new StringBuilder(MyTexts.subCategoryTypeLongDistanceAntenna);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.subCategoryTypeLongTermThrusters] = new StringBuilder(MyTexts.subCategoryTypeLongTermThrusters);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.subCategoryTypeOreStorage] = new StringBuilder(MyTexts.subCategoryTypeOreStorage);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.subCategoryTypeOther] = new StringBuilder(MyTexts.subCategoryTypeOther);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.subCategoryTypeOxygenGeneration] = new StringBuilder(MyTexts.subCategoryTypeOxygenGeneration);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.subCategoryTypeOxygenStorage] = new StringBuilder(MyTexts.subCategoryTypeOxygenStorage);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.subCategoryTypePassage] = new StringBuilder(MyTexts.subCategoryTypePassage);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.subCategoryTypePowerGeneration] = new StringBuilder(MyTexts.subCategoryTypePowerGeneration);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.subCategoryTypePowerStorage] = new StringBuilder(MyTexts.subCategoryTypePowerStorage);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.subCategoryTypeRefinery] = new StringBuilder(MyTexts.subCategoryTypeRefinery);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.subCategoryTypeShortDistanceAntenna] = new StringBuilder(MyTexts.subCategoryTypeShortDistanceAntenna);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.subCategoryTypeShortTermThrusters] = new StringBuilder(MyTexts.subCategoryTypeShortTermThrusters);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.subCategoryTypeSmall] = new StringBuilder(MyTexts.subCategoryTypeSmall);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.subCategoryTypeStraight] = new StringBuilder(MyTexts.subCategoryTypeStraight);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.subCategoryTypeTurn] = new StringBuilder(MyTexts.subCategoryTypeTurn);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.subCategoryTypeWeaponMount] = new StringBuilder(MyTexts.subCategoryTypeWeaponMount);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.subCategoryTypeWires] = new StringBuilder(MyTexts.subCategoryTypeWires);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Subtitles] = new StringBuilder(MyTexts.Subtitles);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SunSettings] = new StringBuilder(MyTexts.SunSettings);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SunSettingsTooltip] = new StringBuilder(MyTexts.SunSettingsTooltip);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SwitchGizmoMode] = new StringBuilder(MyTexts.SwitchGizmoMode);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SwitchGizmoModeTooltip] = new StringBuilder(MyTexts.SwitchGizmoModeTooltip);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SwitchGizmoSpace] = new StringBuilder(MyTexts.SwitchGizmoSpace);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SwitchGizmoSpaceTooltip] = new StringBuilder(MyTexts.SwitchGizmoSpaceTooltip);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ChangeDroneMode] = new StringBuilder(MyTexts.ChangeDroneMode);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PreviousTarget] = new StringBuilder(MyTexts.PreviousTarget);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NextTarget] = new StringBuilder(MyTexts.NextTarget);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SwitchToPointLight] = new StringBuilder(MyTexts.SwitchToPointLight);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SwitchToSpotLight] = new StringBuilder(MyTexts.SwitchToSpotLight);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Systems1] = new StringBuilder(MyTexts.Systems1);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Systems2] = new StringBuilder(MyTexts.Systems2);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Tab] = new StringBuilder(MyTexts.Tab);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.TemplateCheckpointDeleted] = new StringBuilder(MyTexts.TemplateCheckpointDeleted);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.TemporarySectorMap] = new StringBuilder(MyTexts.TemporarySectorMap);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.TimeBombHud] = new StringBuilder(MyTexts.TimeBombHud);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.TitleFailedToStartInternetBrowser] = new StringBuilder(MyTexts.TitleFailedToStartInternetBrowser);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.TitleStartNewStory] = new StringBuilder(MyTexts.TitleStartNewStory);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.TitleYouCantBuild] = new StringBuilder(MyTexts.TitleYouCantBuild);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ToggleSnapPoints] = new StringBuilder(MyTexts.ToggleSnapPoints);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ToolAlienObjectDetector] = new StringBuilder(MyTexts.ToolAlienObjectDetector);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ToolAntiradiationMedicine] = new StringBuilder(MyTexts.ToolAntiradiationMedicine);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AntiradiationMedicineActive] = new StringBuilder(MyTexts.AntiradiationMedicineActive);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ToolAutoTargeting] = new StringBuilder(MyTexts.ToolAutoTargeting);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ToolBoobyTrap] = new StringBuilder(MyTexts.ToolBoobyTrap);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ToolExtraElectricityContainer] = new StringBuilder(MyTexts.ToolExtraElectricityContainer);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ToolExtraFuelContainer] = new StringBuilder(MyTexts.ToolExtraFuelContainer);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ToolExtraOxygenContainer] = new StringBuilder(MyTexts.ToolExtraOxygenContainer);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ToolFuelConverter] = new StringBuilder(MyTexts.ToolFuelConverter);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ToolHealthEnhancingMedicine] = new StringBuilder(MyTexts.ToolHealthEnhancingMedicine);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ActivateHealthEnhancingMedicine] = new StringBuilder(MyTexts.ActivateHealthEnhancingMedicine);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ToolLaserPointer] = new StringBuilder(MyTexts.ToolLaserPointer);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ToolMedikit] = new StringBuilder(MyTexts.ToolMedikit);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MedikitActive] = new StringBuilder(MyTexts.MedikitActive);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ToolNanoRepairTool] = new StringBuilder(MyTexts.ToolNanoRepairTool);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ToolNightVision] = new StringBuilder(MyTexts.ToolNightVision);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ToolOxygenConverter] = new StringBuilder(MyTexts.ToolOxygenConverter);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ToolPerformanceEnhancingMedicine] = new StringBuilder(MyTexts.ToolPerformanceEnhancingMedicine);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ActivatePerformanceEnhancingMedicine] = new StringBuilder(MyTexts.ActivatePerformanceEnhancingMedicine);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ToolRadarJammer] = new StringBuilder(MyTexts.ToolRadarJammer);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ToolRearCamera] = new StringBuilder(MyTexts.ToolRearCamera);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ToolRemoteCamera] = new StringBuilder(MyTexts.ToolRemoteCamera);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ToolRemoteCameraOnDrone] = new StringBuilder(MyTexts.ToolRemoteCameraOnDrone);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ToolSensor] = new StringBuilder(MyTexts.ToolSensor);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ToolSolarPanel] = new StringBuilder(MyTexts.ToolSolarPanel);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ToolXRay] = new StringBuilder(MyTexts.ToolXRay);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.TorusStorySector_256x128x256] = new StringBuilder(MyTexts.TorusStorySector_256x128x256);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.TorusWithManyTunnels_256x128x256] = new StringBuilder(MyTexts.TorusWithManyTunnels_256x128x256);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.TorusWithManyTunnels_2_256x128x256] = new StringBuilder(MyTexts.TorusWithManyTunnels_2_256x128x256);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.TorusWithSmallTunnel_256x128x256] = new StringBuilder(MyTexts.TorusWithSmallTunnel_256x128x256);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.TradeResultTitle] = new StringBuilder(MyTexts.TradeResultTitle);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.TradeWasCanceled] = new StringBuilder(MyTexts.TradeWasCanceled);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Travel] = new StringBuilder(MyTexts.Travel);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Treasure_01] = new StringBuilder(MyTexts.Treasure_01);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Treasure_02] = new StringBuilder(MyTexts.Treasure_02);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.TurnOffCamera] = new StringBuilder(MyTexts.TurnOffCamera);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.UnableToLeaveSector] = new StringBuilder(MyTexts.UnableToLeaveSector);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.UnableToLeaveSectorMission] = new StringBuilder(MyTexts.UnableToLeaveSectorMission);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.UnknownControl] = new StringBuilder(MyTexts.UnknownControl);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.UnlimitedTrading] = new StringBuilder(MyTexts.UnlimitedTrading);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.UnlinkSnapPoints] = new StringBuilder(MyTexts.UnlinkSnapPoints);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Up] = new StringBuilder(MyTexts.Up);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.UpThrust] = new StringBuilder(MyTexts.UpThrust);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Uranite_01] = new StringBuilder(MyTexts.Uranite_01);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.UseCameraCrosshair] = new StringBuilder(MyTexts.UseCameraCrosshair);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.UseDrill] = new StringBuilder(MyTexts.UseDrill);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.UseFromHUB] = new StringBuilder(MyTexts.UseFromHUB);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.UseHackTake] = new StringBuilder(MyTexts.UseHackTake);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.UseSolo] = new StringBuilder(MyTexts.UseSolo);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.UtilityVehicle_1] = new StringBuilder(MyTexts.UtilityVehicle_1);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ValidationEmailWrong] = new StringBuilder(MyTexts.ValidationEmailWrong);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ValidationPasswordsDoNotMatch] = new StringBuilder(MyTexts.ValidationPasswordsDoNotMatch);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ValidationPasswordWrong] = new StringBuilder(MyTexts.ValidationPasswordWrong);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ValidationUsername] = new StringBuilder(MyTexts.ValidationUsername);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ValidationUsernameAlreadyUsed] = new StringBuilder(MyTexts.ValidationUsernameAlreadyUsed);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Version] = new StringBuilder(MyTexts.Version);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.VerticalIslandStorySector_128x256x128] = new StringBuilder(MyTexts.VerticalIslandStorySector_128x256x128);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.VerticalIsland_128x128x128] = new StringBuilder(MyTexts.VerticalIsland_128x128x128);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.VerticalIsland_128x256x128] = new StringBuilder(MyTexts.VerticalIsland_128x256x128);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.VerticalSync] = new StringBuilder(MyTexts.VerticalSync);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Video] = new StringBuilder(MyTexts.Video);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.VideoMode] = new StringBuilder(MyTexts.VideoMode);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.VideoOptions] = new StringBuilder(MyTexts.VideoOptions);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ViewMode] = new StringBuilder(MyTexts.ViewMode);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ViewModeCockpitOff] = new StringBuilder(MyTexts.ViewModeCockpitOff);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ViewModeCockpitOn] = new StringBuilder(MyTexts.ViewModeCockpitOn);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ViewModeThirdPerson] = new StringBuilder(MyTexts.ViewModeThirdPerson);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Voxel] = new StringBuilder(MyTexts.Voxel);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.VoxelImportTest] = new StringBuilder(MyTexts.VoxelImportTest);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.VoxelMission01_01] = new StringBuilder(MyTexts.VoxelMission01_01);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.VoxelMission01_02] = new StringBuilder(MyTexts.VoxelMission01_02);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.VoxelMission01_asteroid_big] = new StringBuilder(MyTexts.VoxelMission01_asteroid_big);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.VoxelMission01_asteroid_mine] = new StringBuilder(MyTexts.VoxelMission01_asteroid_mine);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.VoxelMission07_01] = new StringBuilder(MyTexts.VoxelMission07_01);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Voxels] = new StringBuilder(MyTexts.Voxels);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.VoxelStory02] = new StringBuilder(MyTexts.VoxelStory02);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Warning] = new StringBuilder(MyTexts.Warning);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.WayPoint] = new StringBuilder(MyTexts.WayPoint);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.WayPointPath] = new StringBuilder(MyTexts.WayPointPath);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.WaypointPathName] = new StringBuilder(MyTexts.WaypointPathName);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.WaypointPathNameCaption] = new StringBuilder(MyTexts.WaypointPathNameCaption);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.WaypointPathNameCreateCaption] = new StringBuilder(MyTexts.WaypointPathNameCreateCaption);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Waypoints] = new StringBuilder(MyTexts.Waypoints);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.WaypointsIgnoreDepth] = new StringBuilder(MyTexts.WaypointsIgnoreDepth);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.WeaponAutocannon] = new StringBuilder(MyTexts.WeaponAutocannon);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.WeaponAutomaticRifleWithSilencer] = new StringBuilder(MyTexts.WeaponAutomaticRifleWithSilencer);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.WeaponCannon] = new StringBuilder(MyTexts.WeaponCannon);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.WeaponDrillingDeviceCrusher] = new StringBuilder(MyTexts.WeaponDrillingDeviceCrusher);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.WeaponDrillingDeviceLaser] = new StringBuilder(MyTexts.WeaponDrillingDeviceLaser);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.WeaponDrillingDeviceNuclear] = new StringBuilder(MyTexts.WeaponDrillingDeviceNuclear);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.WeaponDrillingDevicePressure] = new StringBuilder(MyTexts.WeaponDrillingDevicePressure);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.WeaponDrillingDeviceSaw] = new StringBuilder(MyTexts.WeaponDrillingDeviceSaw);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.WeaponDrillingDeviceThermal] = new StringBuilder(MyTexts.WeaponDrillingDeviceThermal);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.WeaponGuidedMissileLauncher] = new StringBuilder(MyTexts.WeaponGuidedMissileLauncher);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.WeaponHarvestingDevice] = new StringBuilder(MyTexts.WeaponHarvestingDevice);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.WeaponMachineGun] = new StringBuilder(MyTexts.WeaponMachineGun);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Weapons] = new StringBuilder(MyTexts.Weapons);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.WeaponShotgun] = new StringBuilder(MyTexts.WeaponShotgun);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.WeaponSniper] = new StringBuilder(MyTexts.WeaponSniper);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.WeaponSpecial] = new StringBuilder(MyTexts.WeaponSpecial);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.WeaponUniversalLauncherBack] = new StringBuilder(MyTexts.WeaponUniversalLauncherBack);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.WeaponUniversalLauncherFront] = new StringBuilder(MyTexts.WeaponUniversalLauncherFront);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.WheelControl] = new StringBuilder(MyTexts.WheelControl);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Width] = new StringBuilder(MyTexts.Width);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.WrinkleVoxels] = new StringBuilder(MyTexts.WrinkleVoxels);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.X] = new StringBuilder(MyTexts.X);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Y] = new StringBuilder(MyTexts.Y);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Yes] = new StringBuilder(MyTexts.Yes);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.YouCantAddFoundationFactory] = new StringBuilder(MyTexts.YouCantAddFoundationFactory);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.YouObtainNotification] = new StringBuilder(MyTexts.YouObtainNotification);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.YourSectors] = new StringBuilder(MyTexts.YourSectors);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Z] = new StringBuilder(MyTexts.Z);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ZoomIn] = new StringBuilder(MyTexts.ZoomIn);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ZoomOut] = new StringBuilder(MyTexts.ZoomOut);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AcquireControl] = new StringBuilder(MyTexts.AcquireControl);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Paste] = new StringBuilder(MyTexts.Paste);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p541_ventilator] = new StringBuilder(MyTexts.p541_ventilator);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.DistantGlareRandomFlashing] = new StringBuilder(MyTexts.DistantGlareRandomFlashing);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.TowerWithConcreteBlock1] = new StringBuilder(MyTexts.TowerWithConcreteBlock1);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.TowerWithConcreteBlock2] = new StringBuilder(MyTexts.TowerWithConcreteBlock2);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FactionWhiteWolves] = new StringBuilder(MyTexts.FactionWhiteWolves);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NotificationExitControlled] = new StringBuilder(MyTexts.NotificationExitControlled);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Warehouse] = new StringBuilder(MyTexts.Warehouse);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.DisplayVoxelBounding] = new StringBuilder(MyTexts.DisplayVoxelBounding);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FactionRainiers] = new StringBuilder(MyTexts.FactionRainiers);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Barths_moon_base] = new StringBuilder(MyTexts.Barths_moon_base);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Barths_moon_satelite] = new StringBuilder(MyTexts.Barths_moon_satelite);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Fort_valiant_base] = new StringBuilder(MyTexts.Fort_valiant_base);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Fort_valiant_dungeon] = new StringBuilder(MyTexts.Fort_valiant_dungeon);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Secret] = new StringBuilder(MyTexts.Secret);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NotificationSabotageSubmission] = new StringBuilder(MyTexts.NotificationSabotageSubmission);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CountdownHacker] = new StringBuilder(MyTexts.CountdownHacker);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ToolbarAddObject] = new StringBuilder(MyTexts.ToolbarAddObject);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ToolbarAttachToCamera] = new StringBuilder(MyTexts.ToolbarAttachToCamera);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ToolbarClearWholeSector] = new StringBuilder(MyTexts.ToolbarClearWholeSector);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ToolbarCopySelected] = new StringBuilder(MyTexts.ToolbarCopySelected);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ToolbarCopyTool] = new StringBuilder(MyTexts.ToolbarCopyTool);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ToolbarCorrectSnappedPrefabs] = new StringBuilder(MyTexts.ToolbarCorrectSnappedPrefabs);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ToolbarDetachFromCamera] = new StringBuilder(MyTexts.ToolbarDetachFromCamera);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ToolbarEditObjects] = new StringBuilder(MyTexts.ToolbarEditObjects);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ToolbarEditorGroups] = new StringBuilder(MyTexts.ToolbarEditorGroups);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ToolbarEditorOptions] = new StringBuilder(MyTexts.ToolbarEditorOptions);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ToolbarEditorSelectAndHide] = new StringBuilder(MyTexts.ToolbarEditorSelectAndHide);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ToolbarEditProperties] = new StringBuilder(MyTexts.ToolbarEditProperties);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ToolbarEnterPrefabContainer] = new StringBuilder(MyTexts.ToolbarEnterPrefabContainer);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ToolbarEnterVoxelHand] = new StringBuilder(MyTexts.ToolbarEnterVoxelHand);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ToolbarExitEditingMode] = new StringBuilder(MyTexts.ToolbarExitEditingMode);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ToolbarExitSelected] = new StringBuilder(MyTexts.ToolbarExitSelected);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ToolbarExitVoxelHand] = new StringBuilder(MyTexts.ToolbarExitVoxelHand);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ToolbarHideSnapPoints] = new StringBuilder(MyTexts.ToolbarHideSnapPoints);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ToolbarLinkSnapPoints] = new StringBuilder(MyTexts.ToolbarLinkSnapPoints);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ToolbarLoadSector] = new StringBuilder(MyTexts.ToolbarLoadSector);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ToolbarResetRotation] = new StringBuilder(MyTexts.ToolbarResetRotation);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ToolbarSaveSector] = new StringBuilder(MyTexts.ToolbarSaveSector);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ToolbarSelectAllObjects] = new StringBuilder(MyTexts.ToolbarSelectAllObjects);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ToolbarShowSnapPoints] = new StringBuilder(MyTexts.ToolbarShowSnapPoints);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ToolbarSwitchGizmoMode] = new StringBuilder(MyTexts.ToolbarSwitchGizmoMode);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ToolbarSwitchGizmoSpace] = new StringBuilder(MyTexts.ToolbarSwitchGizmoSpace);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ToolbarToggleSnapPoints] = new StringBuilder(MyTexts.ToolbarToggleSnapPoints);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ToolbarUnlinkSnapPoints] = new StringBuilder(MyTexts.ToolbarUnlinkSnapPoints);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ToolbarWaypoints] = new StringBuilder(MyTexts.ToolbarWaypoints);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SmallShipTemplates] = new StringBuilder(MyTexts.SmallShipTemplates);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ToolbarSmallShipTemplates] = new StringBuilder(MyTexts.ToolbarSmallShipTemplates);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Fourth_reich_wreck] = new StringBuilder(MyTexts.Fourth_reich_wreck);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p231b01_armor] = new StringBuilder(MyTexts.p231b01_armor);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p231b01_armor_corner] = new StringBuilder(MyTexts.p231b01_armor_corner);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p231b01_armor_edge] = new StringBuilder(MyTexts.p231b01_armor_edge);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p231b01_armor_hole] = new StringBuilder(MyTexts.p231b01_armor_hole);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p344_a03_container] = new StringBuilder(MyTexts.p344_a03_container);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p361_b01_long_distance_antenna_big] = new StringBuilder(MyTexts.p361_b01_long_distance_antenna_big);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NewTemplateName] = new StringBuilder(MyTexts.NewTemplateName);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SaveToServer] = new StringBuilder(MyTexts.SaveToServer);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CannotDeleteSavedTemplate] = new StringBuilder(MyTexts.CannotDeleteSavedTemplate);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Failure] = new StringBuilder(MyTexts.Failure);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.YouHaveToSelect] = new StringBuilder(MyTexts.YouHaveToSelect);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.StaticAsteroid40000m] = new StringBuilder(MyTexts.StaticAsteroid40000m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p150a01_shelf_1X3] = new StringBuilder(MyTexts.p150a01_shelf_1X3);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p150a02_shelf_1X2] = new StringBuilder(MyTexts.p150a02_shelf_1X2);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p150a03_shelf_1] = new StringBuilder(MyTexts.p150a03_shelf_1);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CategoryTypeShelves] = new StringBuilder(MyTexts.CategoryTypeShelves);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RotateSnapping] = new StringBuilder(MyTexts.RotateSnapping);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Snap15Deg] = new StringBuilder(MyTexts.Snap15Deg);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Snap90Deg] = new StringBuilder(MyTexts.Snap90Deg);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SnapOff] = new StringBuilder(MyTexts.SnapOff);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Sun] = new StringBuilder(MyTexts.Sun);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Actor_Apollo] = new StringBuilder(MyTexts.Actor_Apollo);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Actor_Marcus] = new StringBuilder(MyTexts.Actor_Marcus);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Actor_EacSurveySite_MilitaryOfficer] = new StringBuilder(MyTexts.Actor_EacSurveySite_MilitaryOfficer);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Actor_EacSurveySite_StationOperator] = new StringBuilder(MyTexts.Actor_EacSurveySite_StationOperator);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RadioactivityInfluenceSphereType] = new StringBuilder(MyTexts.RadioactivityInfluenceSphereType);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JunkYardInhabited_256x128x256] = new StringBuilder(MyTexts.JunkYardInhabited_256x128x256);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JunkYardToxic_128x128x128] = new StringBuilder(MyTexts.JunkYardToxic_128x128x128);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.GlobalEventIceCometDescription] = new StringBuilder(MyTexts.GlobalEventIceCometDescription);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.GlobalEventIceCometName] = new StringBuilder(MyTexts.GlobalEventIceCometName);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Empty512x512x512] = new StringBuilder(MyTexts.Empty512x512x512);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Magnitude] = new StringBuilder(MyTexts.Magnitude);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Snap45Degs] = new StringBuilder(MyTexts.Snap45Degs);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.device] = new StringBuilder(MyTexts.device);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.TakeAll] = new StringBuilder(MyTexts.TakeAll);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.WeaponUniversalLauncher] = new StringBuilder(MyTexts.WeaponUniversalLauncher);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JunkYardForge_256x256x256] = new StringBuilder(MyTexts.JunkYardForge_256x256x256);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Actor_Madelyn] = new StringBuilder(MyTexts.Actor_Madelyn);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p110b03_lattice_beam_straight_420m] = new StringBuilder(MyTexts.p110b03_lattice_beam_straight_420m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p110b04_lattice_beam_straight_420m_with_panels] = new StringBuilder(MyTexts.p110b04_lattice_beam_straight_420m_with_panels);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p120c02_c_straight_400m] = new StringBuilder(MyTexts.p120c02_c_straight_400m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p130d02_d_straight_300m] = new StringBuilder(MyTexts.p130d02_d_straight_300m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p130j01_j_straight_300m] = new StringBuilder(MyTexts.p130j01_j_straight_300m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p363_a01_big_antenna_300m] = new StringBuilder(MyTexts.p363_a01_big_antenna_300m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p611_asteroid_part_A] = new StringBuilder(MyTexts.p611_asteroid_part_A);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p611_asteroid_part_B] = new StringBuilder(MyTexts.p611_asteroid_part_B);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.GuiClick] = new StringBuilder(MyTexts.GuiClick);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.GuiEditorFlyOutsideBorder] = new StringBuilder(MyTexts.GuiEditorFlyOutsideBorder);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.GuiEditorObjectAttach] = new StringBuilder(MyTexts.GuiEditorObjectAttach);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.GuiEditorObjectDelete] = new StringBuilder(MyTexts.GuiEditorObjectDelete);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.GuiEditorObjectDetach] = new StringBuilder(MyTexts.GuiEditorObjectDetach);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.GuiEditorObjectMoveInvalid] = new StringBuilder(MyTexts.GuiEditorObjectMoveInvalid);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.GuiEditorObjectMoveStep] = new StringBuilder(MyTexts.GuiEditorObjectMoveStep);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.GuiEditorObjectRotateStep] = new StringBuilder(MyTexts.GuiEditorObjectRotateStep);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.GuiEditorObjectSelect] = new StringBuilder(MyTexts.GuiEditorObjectSelect);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.GuiEditorPrefabCommit] = new StringBuilder(MyTexts.GuiEditorPrefabCommit);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.GuiEditorPrefabEnter] = new StringBuilder(MyTexts.GuiEditorPrefabEnter);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.GuiEditorPrefabExit] = new StringBuilder(MyTexts.GuiEditorPrefabExit);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.GuiEditorVoxelHandAdd] = new StringBuilder(MyTexts.GuiEditorVoxelHandAdd);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.GuiEditorVoxelHandMaterial] = new StringBuilder(MyTexts.GuiEditorVoxelHandMaterial);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.GuiEditorVoxelHandRemove] = new StringBuilder(MyTexts.GuiEditorVoxelHandRemove);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.GuiEditorVoxelHandSoften] = new StringBuilder(MyTexts.GuiEditorVoxelHandSoften);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.GuiEditorVoxelHandSwitch] = new StringBuilder(MyTexts.GuiEditorVoxelHandSwitch);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.GuiMouseOver] = new StringBuilder(MyTexts.GuiMouseOver);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.GuiWheelControlClose] = new StringBuilder(MyTexts.GuiWheelControlClose);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.GuiWheelControlOpen] = new StringBuilder(MyTexts.GuiWheelControlOpen);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MenuWelcome] = new StringBuilder(MyTexts.MenuWelcome);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.GPSReminder] = new StringBuilder(MyTexts.GPSReminder);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.DroneCN] = new StringBuilder(MyTexts.DroneCN);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.DroneSS] = new StringBuilder(MyTexts.DroneSS);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.DroneUS] = new StringBuilder(MyTexts.DroneUS);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AimingDistance] = new StringBuilder(MyTexts.AimingDistance);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EditPrefabLargeWeapon] = new StringBuilder(MyTexts.EditPrefabLargeWeapon);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SearchingDistance] = new StringBuilder(MyTexts.SearchingDistance);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Error] = new StringBuilder(MyTexts.Error);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.GeneratorsRange] = new StringBuilder(MyTexts.GeneratorsRange);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LargeWeaponsRange] = new StringBuilder(MyTexts.LargeWeaponsRange);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CargoBoxType1] = new StringBuilder(MyTexts.CargoBoxType1);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CargoBoxType10] = new StringBuilder(MyTexts.CargoBoxType10);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CargoBoxType2] = new StringBuilder(MyTexts.CargoBoxType2);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CargoBoxType3] = new StringBuilder(MyTexts.CargoBoxType3);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CargoBoxType4] = new StringBuilder(MyTexts.CargoBoxType4);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CargoBoxType5] = new StringBuilder(MyTexts.CargoBoxType5);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CargoBoxType6] = new StringBuilder(MyTexts.CargoBoxType6);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CargoBoxType7] = new StringBuilder(MyTexts.CargoBoxType7);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CargoBoxType8] = new StringBuilder(MyTexts.CargoBoxType8);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CargoBoxType9] = new StringBuilder(MyTexts.CargoBoxType9);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p321c03_centrifuge] = new StringBuilder(MyTexts.p321c03_centrifuge);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p321c04_box_generator] = new StringBuilder(MyTexts.p321c04_box_generator);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p321c05_centrifuge_big] = new StringBuilder(MyTexts.p321c05_centrifuge_big);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p363_a01_big_antenna_1500m] = new StringBuilder(MyTexts.p363_a01_big_antenna_1500m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p321c02_generator_wall_big] = new StringBuilder(MyTexts.p321c02_generator_wall_big);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ClearAsteroidWarning] = new StringBuilder(MyTexts.ClearAsteroidWarning);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Actor_Researcher1] = new StringBuilder(MyTexts.Actor_Researcher1);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Actor_Researcher2] = new StringBuilder(MyTexts.Actor_Researcher2);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Actor_RussianCaptain] = new StringBuilder(MyTexts.Actor_RussianCaptain);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Actor_RussianCF1] = new StringBuilder(MyTexts.Actor_RussianCF1);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Actor_RussianCF2] = new StringBuilder(MyTexts.Actor_RussianCF2);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Actor_RussianGeneral] = new StringBuilder(MyTexts.Actor_RussianGeneral);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p221k01_chamber_v2] = new StringBuilder(MyTexts.p221k01_chamber_v2);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p311b01_long_term_thruster] = new StringBuilder(MyTexts.p311b01_long_term_thruster);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p321c06_inertia_generator_B] = new StringBuilder(MyTexts.p321c06_inertia_generator_B);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p321c07_generator] = new StringBuilder(MyTexts.p321c07_generator);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p4221_a01_cooling_device_wall_340x400] = new StringBuilder(MyTexts.p4221_a01_cooling_device_wall_340x400);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p4222_a01_pipes_connector] = new StringBuilder(MyTexts.p4222_a01_pipes_connector);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p4223_a01_open_pipe] = new StringBuilder(MyTexts.p4223_a01_open_pipe);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NotificationSkipIntroduction] = new StringBuilder(MyTexts.NotificationSkipIntroduction);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.DroneFollowPlayer] = new StringBuilder(MyTexts.DroneFollowPlayer);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.DroneHoldPosition] = new StringBuilder(MyTexts.DroneHoldPosition);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.StartingProgress] = new StringBuilder(MyTexts.StartingProgress);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PressToStartGenerator] = new StringBuilder(MyTexts.PressToStartGenerator);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.UserScale] = new StringBuilder(MyTexts.UserScale);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LoadFromServer] = new StringBuilder(MyTexts.LoadFromServer);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Success] = new StringBuilder(MyTexts.Success);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.TemplatesLoadError] = new StringBuilder(MyTexts.TemplatesLoadError);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.TemplatesLoadSuccess] = new StringBuilder(MyTexts.TemplatesLoadSuccess);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.TemplatesSaveError] = new StringBuilder(MyTexts.TemplatesSaveError);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.TemplatesSaveSuccess] = new StringBuilder(MyTexts.TemplatesSaveSuccess);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CategoryTypeBarrels] = new StringBuilder(MyTexts.CategoryTypeBarrels);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CargoBoxType11] = new StringBuilder(MyTexts.CargoBoxType11);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CargoBoxType12] = new StringBuilder(MyTexts.CargoBoxType12);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CargoBoxTypeProp_A] = new StringBuilder(MyTexts.CargoBoxTypeProp_A);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CargoBoxTypeProp_B] = new StringBuilder(MyTexts.CargoBoxTypeProp_B);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CargoBoxTypeProp_C] = new StringBuilder(MyTexts.CargoBoxTypeProp_C);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Barrel_prop_A] = new StringBuilder(MyTexts.Barrel_prop_A);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Barrel_prop_B] = new StringBuilder(MyTexts.Barrel_prop_B);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Barrel_prop_C] = new StringBuilder(MyTexts.Barrel_prop_C);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CannonBall_Capsule_1] = new StringBuilder(MyTexts.CannonBall_Capsule_1);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Missile_pack01] = new StringBuilder(MyTexts.Missile_pack01);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Missile_plazma01] = new StringBuilder(MyTexts.Missile_plazma01);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Missile_stack_biochem01] = new StringBuilder(MyTexts.Missile_stack_biochem01);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p581_a01_barrel_biohazard] = new StringBuilder(MyTexts.p581_a01_barrel_biohazard);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p581_a01_barrel_biohazard_2] = new StringBuilder(MyTexts.p581_a01_barrel_biohazard_2);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p581_a01_nuke_barrel] = new StringBuilder(MyTexts.p581_a01_nuke_barrel);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p581_a01_red_barrel] = new StringBuilder(MyTexts.p581_a01_red_barrel);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p581_a01_simple_barrel] = new StringBuilder(MyTexts.p581_a01_simple_barrel);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p581_a01_simple_barrel_2] = new StringBuilder(MyTexts.p581_a01_simple_barrel_2);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NotificationYouCanExamineEmpty] = new StringBuilder(MyTexts.NotificationYouCanExamineEmpty);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RemoveAll] = new StringBuilder(MyTexts.RemoveAll);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ElectricityKit] = new StringBuilder(MyTexts.ElectricityKit);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FuelKit] = new StringBuilder(MyTexts.FuelKit);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HealthKit] = new StringBuilder(MyTexts.HealthKit);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.OxygenKit] = new StringBuilder(MyTexts.OxygenKit);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RepairKit] = new StringBuilder(MyTexts.RepairKit);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SavingSectorToServer] = new StringBuilder(MyTexts.SavingSectorToServer);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p581_a01_o2_barrel] = new StringBuilder(MyTexts.p581_a01_o2_barrel);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CargoBox_prop_D] = new StringBuilder(MyTexts.CargoBox_prop_D);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Nuclear_Warhead_closed] = new StringBuilder(MyTexts.Nuclear_Warhead_closed);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Nuclear_Warhead_open] = new StringBuilder(MyTexts.Nuclear_Warhead_open);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p581_a01_nuke_barrel_1] = new StringBuilder(MyTexts.p581_a01_nuke_barrel_1);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p581_a01_simple_barrel_3] = new StringBuilder(MyTexts.p581_a01_simple_barrel_3);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CargoBoxTypeProp_D] = new StringBuilder(MyTexts.CargoBoxTypeProp_D);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EditInventory] = new StringBuilder(MyTexts.EditInventory);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Actor_TemplarPatriarchLamorak] = new StringBuilder(MyTexts.Actor_TemplarPatriarchLamorak);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Actor_TemplarSirBedivere] = new StringBuilder(MyTexts.Actor_TemplarSirBedivere);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NotificationTakeArtifact] = new StringBuilder(MyTexts.NotificationTakeArtifact);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p221L01_chamber_v1] = new StringBuilder(MyTexts.p221L01_chamber_v1);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PressToBuildHere] = new StringBuilder(MyTexts.PressToBuildHere);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FactionChineseShort] = new StringBuilder(MyTexts.FactionChineseShort);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FactionChurchShort] = new StringBuilder(MyTexts.FactionChurchShort);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FactionEuroamericanShort] = new StringBuilder(MyTexts.FactionEuroamericanShort);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FactionFourthReichShort] = new StringBuilder(MyTexts.FactionFourthReichShort);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FactionNeutralShort] = new StringBuilder(MyTexts.FactionNeutralShort);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FactionOmnicorpShort] = new StringBuilder(MyTexts.FactionOmnicorpShort);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FactionRussianShort] = new StringBuilder(MyTexts.FactionRussianShort);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FactionSaudiShort] = new StringBuilder(MyTexts.FactionSaudiShort);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Actor_Lorraine] = new StringBuilder(MyTexts.Actor_Lorraine);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Actor_TemplarGuard] = new StringBuilder(MyTexts.Actor_TemplarGuard);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HealthPercentage] = new StringBuilder(MyTexts.HealthPercentage);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MessageHealthPercentageCantBeGreaterThen100] = new StringBuilder(MyTexts.MessageHealthPercentageCantBeGreaterThen100);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p110a06_solid_beam_straight_420m] = new StringBuilder(MyTexts.p110a06_solid_beam_straight_420m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p221m01_chamber_bottom_v1] = new StringBuilder(MyTexts.p221m01_chamber_bottom_v1);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p221m01_chamber_center_v1] = new StringBuilder(MyTexts.p221m01_chamber_center_v1);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p221m01_chamber_top_v1] = new StringBuilder(MyTexts.p221m01_chamber_top_v1);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p321e01_solar_panel] = new StringBuilder(MyTexts.p321e01_solar_panel);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Barrel_prop_D] = new StringBuilder(MyTexts.Barrel_prop_D);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Barrel_prop_E] = new StringBuilder(MyTexts.Barrel_prop_E);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Gattling_ammo_belt] = new StringBuilder(MyTexts.Gattling_ammo_belt);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Missile_pack02] = new StringBuilder(MyTexts.Missile_pack02);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RequiresEnergy] = new StringBuilder(MyTexts.RequiresEnergy);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Actor_IndianSmuggler] = new StringBuilder(MyTexts.Actor_IndianSmuggler);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Actor_SmugglerInformator] = new StringBuilder(MyTexts.Actor_SmugglerInformator);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PressToCollectReward] = new StringBuilder(MyTexts.PressToCollectReward);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Transmitter] = new StringBuilder(MyTexts.Transmitter);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.TransferInProgress] = new StringBuilder(MyTexts.TransferInProgress);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Console] = new StringBuilder(MyTexts.Console);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.DownloadingData] = new StringBuilder(MyTexts.DownloadingData);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PressToDownloadData] = new StringBuilder(MyTexts.PressToDownloadData);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Barths_moon_camp] = new StringBuilder(MyTexts.Barths_moon_camp);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Actor_TheCrook] = new StringBuilder(MyTexts.Actor_TheCrook);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MothershipStart] = new StringBuilder(MyTexts.MothershipStart);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.alien_detector_unit] = new StringBuilder(MyTexts.alien_detector_unit);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p221n01_chamber_v1] = new StringBuilder(MyTexts.p221n01_chamber_v1);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p311b01_cut_thruster] = new StringBuilder(MyTexts.p311b01_cut_thruster);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p312b01_cut_thruster_lateral] = new StringBuilder(MyTexts.p312b01_cut_thruster_lateral);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p312b02_cut_thruster_latitude] = new StringBuilder(MyTexts.p312b02_cut_thruster_latitude);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p381_c01_building5] = new StringBuilder(MyTexts.p381_c01_building5);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p381_c01_building6] = new StringBuilder(MyTexts.p381_c01_building6);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p381_c01_building7] = new StringBuilder(MyTexts.p381_c01_building7);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p531_d_medic_cross] = new StringBuilder(MyTexts.p531_d_medic_cross);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SurvivePrefabDestruction] = new StringBuilder(MyTexts.SurvivePrefabDestruction);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.IndestructibleAsteroidNotification] = new StringBuilder(MyTexts.IndestructibleAsteroidNotification);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NotificationEngineOff] = new StringBuilder(MyTexts.NotificationEngineOff);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NotificationMovementSlowdownEnabled] = new StringBuilder(MyTexts.NotificationMovementSlowdownEnabled);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.IncommingMissileAlarm] = new StringBuilder(MyTexts.IncommingMissileAlarm);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Story] = new StringBuilder(MyTexts.Story);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MessageBoxNetworkErrorCaption] = new StringBuilder(MyTexts.MessageBoxNetworkErrorCaption);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PleaseTryAgain] = new StringBuilder(MyTexts.PleaseTryAgain);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SolarPanelsLeft] = new StringBuilder(MyTexts.SolarPanelsLeft);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Asteroid_Rift_base_bigger] = new StringBuilder(MyTexts.Asteroid_Rift_base_bigger);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Asteroid_Rift_base_smaller] = new StringBuilder(MyTexts.Asteroid_Rift_base_smaller);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SmallShipPilotDead] = new StringBuilder(MyTexts.SmallShipPilotDead);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p541_screen_A] = new StringBuilder(MyTexts.p541_screen_A);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p541_screen_B] = new StringBuilder(MyTexts.p541_screen_B);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p541_terminal_A] = new StringBuilder(MyTexts.p541_terminal_A);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Moving] = new StringBuilder(MyTexts.Moving);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HoldToMoveMarcus] = new StringBuilder(MyTexts.HoldToMoveMarcus);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.alien_artefact] = new StringBuilder(MyTexts.alien_artefact);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.DisplayPrefabContainerAxis] = new StringBuilder(MyTexts.DisplayPrefabContainerAxis);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HoldToMoveWeapons] = new StringBuilder(MyTexts.HoldToMoveWeapons);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Actor_ChineseGuard] = new StringBuilder(MyTexts.Actor_ChineseGuard);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Bomb] = new StringBuilder(MyTexts.Bomb);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PlacementInProgress] = new StringBuilder(MyTexts.PlacementInProgress);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PressToPlaceBomb] = new StringBuilder(MyTexts.PressToPlaceBomb);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Actor_Tarja] = new StringBuilder(MyTexts.Actor_Tarja);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.DeactivatingInProgress] = new StringBuilder(MyTexts.DeactivatingInProgress);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PressToDeactivateNuclearHead] = new StringBuilder(MyTexts.PressToDeactivateNuclearHead);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ParticleDummies] = new StringBuilder(MyTexts.ParticleDummies);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SafeAreaDummies] = new StringBuilder(MyTexts.SafeAreaDummies);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.DetectorDummies] = new StringBuilder(MyTexts.DetectorDummies);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Actor_RavenGirl] = new StringBuilder(MyTexts.Actor_RavenGirl);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Actor_RavenGuy] = new StringBuilder(MyTexts.Actor_RavenGuy);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NuclearHead] = new StringBuilder(MyTexts.NuclearHead);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EditPrefabKinematicPartsHealthAndMaxHealth] = new StringBuilder(MyTexts.EditPrefabKinematicPartsHealthAndMaxHealth);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Destroyed] = new StringBuilder(MyTexts.Destroyed);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MessageHealthMustBeLesserOrEqualMaxHealth] = new StringBuilder(MyTexts.MessageHealthMustBeLesserOrEqualMaxHealth);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Actor_Slave] = new StringBuilder(MyTexts.Actor_Slave);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.barths_moon_lab1] = new StringBuilder(MyTexts.barths_moon_lab1);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.barths_moon_lab2] = new StringBuilder(MyTexts.barths_moon_lab2);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Component] = new StringBuilder(MyTexts.Component);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PressToTakeComponent] = new StringBuilder(MyTexts.PressToTakeComponent);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.TakingInProgress] = new StringBuilder(MyTexts.TakingInProgress);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Radar1] = new StringBuilder(MyTexts.Radar1);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Radar2] = new StringBuilder(MyTexts.Radar2);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Radar3] = new StringBuilder(MyTexts.Radar3);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.WatchMothershipHealth] = new StringBuilder(MyTexts.WatchMothershipHealth);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Dialogue] = new StringBuilder(MyTexts.Dialogue);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.DisplayHud] = new StringBuilder(MyTexts.DisplayHud);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Disabled] = new StringBuilder(MyTexts.Disabled);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PressToTakeTurrets] = new StringBuilder(MyTexts.PressToTakeTurrets);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Turrets] = new StringBuilder(MyTexts.Turrets);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PressToHack] = new StringBuilder(MyTexts.PressToHack);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PressToPlaceDevice] = new StringBuilder(MyTexts.PressToPlaceDevice);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PressToTakeCargo] = new StringBuilder(MyTexts.PressToTakeCargo);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RadarJammed] = new StringBuilder(MyTexts.RadarJammed);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.UnlockCell] = new StringBuilder(MyTexts.UnlockCell);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HowToControlDrone] = new StringBuilder(MyTexts.HowToControlDrone);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.InventoryShowAll] = new StringBuilder(MyTexts.InventoryShowAll);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.InventoryShowConsumables] = new StringBuilder(MyTexts.InventoryShowConsumables);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.InventoryShowEquipment] = new StringBuilder(MyTexts.InventoryShowEquipment);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.InventoryShowGods] = new StringBuilder(MyTexts.InventoryShowGods);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.InventoryShowOres] = new StringBuilder(MyTexts.InventoryShowOres);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.InventoryShowWeapons] = new StringBuilder(MyTexts.InventoryShowWeapons);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Actor_RaceChallenger] = new StringBuilder(MyTexts.Actor_RaceChallenger);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Start] = new StringBuilder(MyTexts.Start);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Unpowered] = new StringBuilder(MyTexts.Unpowered);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SandboxSectors] = new StringBuilder(MyTexts.SandboxSectors);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.DisplayDeactivatedEntities] = new StringBuilder(MyTexts.DisplayDeactivatedEntities);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.rail_gun] = new StringBuilder(MyTexts.rail_gun);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p345_a01_recycle_sphere] = new StringBuilder(MyTexts.p345_a01_recycle_sphere);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MissionFailed] = new StringBuilder(MyTexts.MissionFailed);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.DontShoot] = new StringBuilder(MyTexts.DontShoot);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Slave] = new StringBuilder(MyTexts.Slave);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_TRANSMITTER] = new StringBuilder(MyTexts.EAC_TRANSMITTER);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_TRANSMITTER_CENTRAL_ROOM] = new StringBuilder(MyTexts.EAC_TRANSMITTER_CENTRAL_ROOM);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_TRANSMITTER_Description] = new StringBuilder(MyTexts.EAC_TRANSMITTER_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_TRANSMITTER_OPEN_CARGO_DOOR] = new StringBuilder(MyTexts.EAC_TRANSMITTER_OPEN_CARGO_DOOR);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_TRANSMITTER_OPEN_CARGO_DOOR_Description] = new StringBuilder(MyTexts.EAC_TRANSMITTER_OPEN_CARGO_DOOR_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_TRANSMITTER_ACTIVATE_SOLARPANELS] = new StringBuilder(MyTexts.EAC_TRANSMITTER_ACTIVATE_SOLARPANELS);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_TRANSMITTER_ACTIVATE_SOLARPANELS_Description] = new StringBuilder(MyTexts.EAC_TRANSMITTER_ACTIVATE_SOLARPANELS_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_TRANSMITTER_START_TRANSMISSION] = new StringBuilder(MyTexts.EAC_TRANSMITTER_START_TRANSMISSION);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_TRANSMITTER_START_TRANSMISSION_Description] = new StringBuilder(MyTexts.EAC_TRANSMITTER_START_TRANSMISSION_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_TRANSMITTER_HACK_SATELLITE_A] = new StringBuilder(MyTexts.EAC_TRANSMITTER_HACK_SATELLITE_A);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_TRANSMITTER_HACK_SATELLITE_A_Description] = new StringBuilder(MyTexts.EAC_TRANSMITTER_HACK_SATELLITE_A_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_TRANSMITTER_HACK_SATELLITE_B] = new StringBuilder(MyTexts.EAC_TRANSMITTER_HACK_SATELLITE_B);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_TRANSMITTER_HACK_SATELLITE_B_Descrption] = new StringBuilder(MyTexts.EAC_TRANSMITTER_HACK_SATELLITE_B_Descrption);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_TRANSMITTER_HACK_SATELLITE_C] = new StringBuilder(MyTexts.EAC_TRANSMITTER_HACK_SATELLITE_C);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_TRANSMITTER_HACK_SATELLITE_C_Description] = new StringBuilder(MyTexts.EAC_TRANSMITTER_HACK_SATELLITE_C_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_TRANSMITTER_MEETMS] = new StringBuilder(MyTexts.EAC_TRANSMITTER_MEETMS);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_TRANSMITTER_MEETMS_Description] = new StringBuilder(MyTexts.EAC_TRANSMITTER_MEETMS_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_TRANSMITTER_OPEN_CONNECTION] = new StringBuilder(MyTexts.EAC_TRANSMITTER_OPEN_CONNECTION);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_TRANSMITTER_OPEN_CONNECTION_Description] = new StringBuilder(MyTexts.EAC_TRANSMITTER_OPEN_CONNECTION_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_TRANSMITTER_UNLOCK_WAY_TO_SATELLITES] = new StringBuilder(MyTexts.EAC_TRANSMITTER_UNLOCK_WAY_TO_SATELLITES);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_TRANSMITTER_UNLOCK_WAY_TO_SATELLITES_Descrption] = new StringBuilder(MyTexts.EAC_TRANSMITTER_UNLOCK_WAY_TO_SATELLITES_Descrption);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_TRANSMITTER_CENTRAL_ROOM_Description] = new StringBuilder(MyTexts.EAC_TRANSMITTER_CENTRAL_ROOM_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_DESTROY] = new StringBuilder(MyTexts.EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_DESTROY);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_DESTROY_Description] = new StringBuilder(MyTexts.EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_DESTROY_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_ESCAPE] = new StringBuilder(MyTexts.EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_ESCAPE);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_ESCAPE_Description] = new StringBuilder(MyTexts.EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_ESCAPE_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_HACK] = new StringBuilder(MyTexts.EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_HACK);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_HACK_Description] = new StringBuilder(MyTexts.EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_HACK_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_HELP] = new StringBuilder(MyTexts.EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_HELP);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_HELP_Description] = new StringBuilder(MyTexts.EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_HELP_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_TRANSMITTER_FIND_REPAIR] = new StringBuilder(MyTexts.EAC_TRANSMITTER_FIND_REPAIR);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_TRANSMITTER_FIND_REPAIR_Description] = new StringBuilder(MyTexts.EAC_TRANSMITTER_FIND_REPAIR_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_TRANSMITTER_FIX_GENERATOR] = new StringBuilder(MyTexts.EAC_TRANSMITTER_FIX_GENERATOR);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_TRANSMITTER_FIX_GENERATOR_Descrpition] = new StringBuilder(MyTexts.EAC_TRANSMITTER_FIX_GENERATOR_Descrpition);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_TRANSMITTER_OPEN_SOLAR_ARM] = new StringBuilder(MyTexts.EAC_TRANSMITTER_OPEN_SOLAR_ARM);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_TRANSMITTER_OPEN_SOLAR_ARM_Description] = new StringBuilder(MyTexts.EAC_TRANSMITTER_OPEN_SOLAR_ARM_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_TRANSMITTER_RESTART_TRANSMISSION] = new StringBuilder(MyTexts.EAC_TRANSMITTER_RESTART_TRANSMISSION);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_TRANSMITTER_RESTART_TRANSMISSION_Description] = new StringBuilder(MyTexts.EAC_TRANSMITTER_RESTART_TRANSMISSION_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BuildingInProgress] = new StringBuilder(MyTexts.BuildingInProgress);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NewMissionRecieved] = new StringBuilder(MyTexts.NewMissionRecieved);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PressToBuildTransmitter] = new StringBuilder(MyTexts.PressToBuildTransmitter);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HeaderHostName] = new StringBuilder(MyTexts.HeaderHostName);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HeaderPing] = new StringBuilder(MyTexts.HeaderPing);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HeaderSectorName] = new StringBuilder(MyTexts.HeaderSectorName);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HeaderType] = new StringBuilder(MyTexts.HeaderType);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HostFriendSector] = new StringBuilder(MyTexts.HostFriendSector);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HostOfficSector] = new StringBuilder(MyTexts.HostOfficSector);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HostYourSector] = new StringBuilder(MyTexts.HostYourSector);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JoinGame] = new StringBuilder(MyTexts.JoinGame);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SearchGameToJoin] = new StringBuilder(MyTexts.SearchGameToJoin);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JoystickAxisXpos] = new StringBuilder(MyTexts.JoystickAxisXpos);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JoystickAxisYpos] = new StringBuilder(MyTexts.JoystickAxisYpos);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JoystickAxisZpos] = new StringBuilder(MyTexts.JoystickAxisZpos);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JoystickRotationXpos] = new StringBuilder(MyTexts.JoystickRotationXpos);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JoystickRotationYpos] = new StringBuilder(MyTexts.JoystickRotationYpos);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JoystickRotationZpos] = new StringBuilder(MyTexts.JoystickRotationZpos);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JoystickSlider1pos] = new StringBuilder(MyTexts.JoystickSlider1pos);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JoystickSlider2pos] = new StringBuilder(MyTexts.JoystickSlider2pos);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JoystickAxisXneg] = new StringBuilder(MyTexts.JoystickAxisXneg);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JoystickAxisYneg] = new StringBuilder(MyTexts.JoystickAxisYneg);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JoystickAxisZneg] = new StringBuilder(MyTexts.JoystickAxisZneg);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JoystickRotationXneg] = new StringBuilder(MyTexts.JoystickRotationXneg);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JoystickRotationYneg] = new StringBuilder(MyTexts.JoystickRotationYneg);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JoystickRotationZneg] = new StringBuilder(MyTexts.JoystickRotationZneg);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JoystickSlider1neg] = new StringBuilder(MyTexts.JoystickSlider1neg);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JoystickSlider2neg] = new StringBuilder(MyTexts.JoystickSlider2neg);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Send] = new StringBuilder(MyTexts.Send);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SendToAll] = new StringBuilder(MyTexts.SendToAll);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SendToTeam] = new StringBuilder(MyTexts.SendToTeam);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PressToGiveEquipment] = new StringBuilder(MyTexts.PressToGiveEquipment);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MarucsIsLeavingForKey] = new StringBuilder(MyTexts.MarucsIsLeavingForKey);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MarucsIsLeavingForTransporter] = new StringBuilder(MyTexts.MarucsIsLeavingForTransporter);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Artifact] = new StringBuilder(MyTexts.Artifact);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Refresh] = new StringBuilder(MyTexts.Refresh);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HeaderPlayerCount] = new StringBuilder(MyTexts.HeaderPlayerCount);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HostGame] = new StringBuilder(MyTexts.HostGame);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.UserInfo] = new StringBuilder(MyTexts.UserInfo);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.InfoAge] = new StringBuilder(MyTexts.InfoAge);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.InfoDisplayName] = new StringBuilder(MyTexts.InfoDisplayName);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.InfoEmail] = new StringBuilder(MyTexts.InfoEmail);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.InfoGender] = new StringBuilder(MyTexts.InfoGender);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.InfoUserName] = new StringBuilder(MyTexts.InfoUserName);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NewMission] = new StringBuilder(MyTexts.NewMission);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.UnknownSector] = new StringBuilder(MyTexts.UnknownSector);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RemoteBombHelp] = new StringBuilder(MyTexts.RemoteBombHelp);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.TimeBombTimer] = new StringBuilder(MyTexts.TimeBombTimer);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.TimeBombHelp] = new StringBuilder(MyTexts.TimeBombHelp);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MP_XHasBeenKilledByY] = new StringBuilder(MyTexts.MP_XHasBeenKilledByY);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MP_XHasJoined] = new StringBuilder(MyTexts.MP_XHasJoined);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MP_XHasLeft] = new StringBuilder(MyTexts.MP_XHasLeft);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MP_XKilledHimself] = new StringBuilder(MyTexts.MP_XKilledHimself);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MP_YouHaveBeenKilledByX] = new StringBuilder(MyTexts.MP_YouHaveBeenKilledByX);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MP_YouHaveKilledX] = new StringBuilder(MyTexts.MP_YouHaveKilledX);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JoinGameTimeout] = new StringBuilder(MyTexts.JoinGameTimeout);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.fort_val_box_128] = new StringBuilder(MyTexts.fort_val_box_128);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PressToRepairTurret] = new StringBuilder(MyTexts.PressToRepairTurret);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Asteroid_Rift] = new StringBuilder(MyTexts.Asteroid_Rift);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Asteroid_Rift_small_1] = new StringBuilder(MyTexts.Asteroid_Rift_small_1);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Asteroid_Rift_small_2] = new StringBuilder(MyTexts.Asteroid_Rift_small_2);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SelectDeactivatedEntity] = new StringBuilder(MyTexts.SelectDeactivatedEntity);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ToolbarSelectDeactivatedEntity] = new StringBuilder(MyTexts.ToolbarSelectDeactivatedEntity);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ProgressRepairing] = new StringBuilder(MyTexts.ProgressRepairing);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Turret] = new StringBuilder(MyTexts.Turret);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.TravelTo] = new StringBuilder(MyTexts.TravelTo);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NotificationAmmoNo] = new StringBuilder(MyTexts.NotificationAmmoNo);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NotificationArmorNo] = new StringBuilder(MyTexts.NotificationArmorNo);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MarcusIsLeavingForTarja] = new StringBuilder(MyTexts.MarcusIsLeavingForTarja);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.GeneratorUnderAttack] = new StringBuilder(MyTexts.GeneratorUnderAttack);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RespawnPoint] = new StringBuilder(MyTexts.RespawnPoint);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.KeysDecimal] = new StringBuilder(MyTexts.KeysDecimal);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.KeysBackslash] = new StringBuilder(MyTexts.KeysBackslash);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.KeysComma] = new StringBuilder(MyTexts.KeysComma);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.KeysMinus] = new StringBuilder(MyTexts.KeysMinus);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.KeysOpenBracket] = new StringBuilder(MyTexts.KeysOpenBracket);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.KeysCloseBracket] = new StringBuilder(MyTexts.KeysCloseBracket);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.KeysPeriod] = new StringBuilder(MyTexts.KeysPeriod);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.KeysPipe] = new StringBuilder(MyTexts.KeysPipe);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.KeysPlus] = new StringBuilder(MyTexts.KeysPlus);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.KeysQuestion] = new StringBuilder(MyTexts.KeysQuestion);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.KeysQuotes] = new StringBuilder(MyTexts.KeysQuotes);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.KeysSemicolon] = new StringBuilder(MyTexts.KeysSemicolon);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.KeysTilde] = new StringBuilder(MyTexts.KeysTilde);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.KeysMultiply] = new StringBuilder(MyTexts.KeysMultiply);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.KeysDivide] = new StringBuilder(MyTexts.KeysDivide);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.KeysAdd] = new StringBuilder(MyTexts.KeysAdd);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.KeysSubtract] = new StringBuilder(MyTexts.KeysSubtract);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.KeysCapsLock] = new StringBuilder(MyTexts.KeysCapsLock);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.KeysEnter] = new StringBuilder(MyTexts.KeysEnter);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Backspace] = new StringBuilder(MyTexts.Backspace);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SpecialWeapons] = new StringBuilder(MyTexts.SpecialWeapons);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FireHologram] = new StringBuilder(MyTexts.FireHologram);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FireHologramFront] = new StringBuilder(MyTexts.FireHologramFront);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FireHologramBack] = new StringBuilder(MyTexts.FireHologramBack);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FireBasicMine] = new StringBuilder(MyTexts.FireBasicMine);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FireBasicMineFront] = new StringBuilder(MyTexts.FireBasicMineFront);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FireBasicMineBack] = new StringBuilder(MyTexts.FireBasicMineBack);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FireSmartMine] = new StringBuilder(MyTexts.FireSmartMine);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FireSmartMineFront] = new StringBuilder(MyTexts.FireSmartMineFront);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FireSmartMineBack] = new StringBuilder(MyTexts.FireSmartMineBack);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FireFlashBomb] = new StringBuilder(MyTexts.FireFlashBomb);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FireFlashBombFront] = new StringBuilder(MyTexts.FireFlashBombFront);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FireFlashBombBack] = new StringBuilder(MyTexts.FireFlashBombBack);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FireDecoyFlare] = new StringBuilder(MyTexts.FireDecoyFlare);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FireDecoyFlareFront] = new StringBuilder(MyTexts.FireDecoyFlareFront);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FireDecoyFlareBack] = new StringBuilder(MyTexts.FireDecoyFlareBack);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FireSmokeBomb] = new StringBuilder(MyTexts.FireSmokeBomb);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FireSmokeBombFront] = new StringBuilder(MyTexts.FireSmokeBombFront);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FireSmokeBombBack] = new StringBuilder(MyTexts.FireSmokeBombBack);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MP_GameHosted] = new StringBuilder(MyTexts.MP_GameHosted);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MP_GameHostFailed_X] = new StringBuilder(MyTexts.MP_GameHostFailed_X);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CantLoginEmptyUsernameOrPassword] = new StringBuilder(MyTexts.CantLoginEmptyUsernameOrPassword);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.prison] = new StringBuilder(MyTexts.prison);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Actor_EAC_Police_Mothership_Commander_F] = new StringBuilder(MyTexts.Actor_EAC_Police_Mothership_Commander_F);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Actor_EAC_Police_Mothership_Commander_M] = new StringBuilder(MyTexts.Actor_EAC_Police_Mothership_Commander_M);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Actor_Father_Tobias_Last_Hope] = new StringBuilder(MyTexts.Actor_Father_Tobias_Last_Hope);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Actor_Fourth_Reich_Colone_2] = new StringBuilder(MyTexts.Actor_Fourth_Reich_Colone_2);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Actor_Francis_Reef] = new StringBuilder(MyTexts.Actor_Francis_Reef);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Actor_Manjeet_Lata] = new StringBuilder(MyTexts.Actor_Manjeet_Lata);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Actor_Mr_Stauffenberg] = new StringBuilder(MyTexts.Actor_Mr_Stauffenberg);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Actor_Thomas_Barth] = new StringBuilder(MyTexts.Actor_Thomas_Barth);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Actor_White_Wolves_General_2] = new StringBuilder(MyTexts.Actor_White_Wolves_General_2);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.DroneDeploy] = new StringBuilder(MyTexts.DroneDeploy);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.DroneControl] = new StringBuilder(MyTexts.DroneControl);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ControlSecondaryCamera] = new StringBuilder(MyTexts.ControlSecondaryCamera);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CycleSecondaryCamera] = new StringBuilder(MyTexts.CycleSecondaryCamera);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Items] = new StringBuilder(MyTexts.Items);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Shift] = new StringBuilder(MyTexts.Shift);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Ctrl] = new StringBuilder(MyTexts.Ctrl);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Alt] = new StringBuilder(MyTexts.Alt);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.OpenHelpScreen] = new StringBuilder(MyTexts.OpenHelpScreen);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.OpenCheats] = new StringBuilder(MyTexts.OpenCheats);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SaveScreenshotToUserFolder] = new StringBuilder(MyTexts.SaveScreenshotToUserFolder);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.UserFolder] = new StringBuilder(MyTexts.UserFolder);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PickingInProgress] = new StringBuilder(MyTexts.PickingInProgress);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PressToPickItems] = new StringBuilder(MyTexts.PressToPickItems);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PressToPickSamples] = new StringBuilder(MyTexts.PressToPickSamples);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Samples] = new StringBuilder(MyTexts.Samples);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ChineseRefinery_First_128x128x128] = new StringBuilder(MyTexts.ChineseRefinery_First_128x128x128);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ChineseRefinery_Second_128x128x128] = new StringBuilder(MyTexts.ChineseRefinery_Second_128x128x128);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ChineseRefinery_Third_128x256x128] = new StringBuilder(MyTexts.ChineseRefinery_Third_128x256x128);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Chinese_Corridor_Last_126x126x126] = new StringBuilder(MyTexts.Chinese_Corridor_Last_126x126x126);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Chinese_Corridor_Tunnel_256x256x256] = new StringBuilder(MyTexts.Chinese_Corridor_Tunnel_256x256x256);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Junkyard_RaceAsteroid_256x256x256] = new StringBuilder(MyTexts.Junkyard_RaceAsteroid_256x256x256);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Junkyard_Race_256x256x256] = new StringBuilder(MyTexts.Junkyard_Race_256x256x256);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.DataTransfer] = new StringBuilder(MyTexts.DataTransfer);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PressToDownloadBluePrints] = new StringBuilder(MyTexts.PressToDownloadBluePrints);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PressToTakeBio] = new StringBuilder(MyTexts.PressToTakeBio);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.vendor] = new StringBuilder(MyTexts.vendor);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MerchantArmy] = new StringBuilder(MyTexts.MerchantArmy);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MerchantBlueprint] = new StringBuilder(MyTexts.MerchantBlueprint);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.InventoryTemplates] = new StringBuilder(MyTexts.InventoryTemplates);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MerchantMedicine] = new StringBuilder(MyTexts.MerchantMedicine);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MerchantMixed] = new StringBuilder(MyTexts.MerchantMixed);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PriceCoeficient] = new StringBuilder(MyTexts.PriceCoeficient);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MerchantTools] = new StringBuilder(MyTexts.MerchantTools);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MessagePriceCoeficientMustBeGreaterThanOrEqualToOne] = new StringBuilder(MyTexts.MessagePriceCoeficientMustBeGreaterThanOrEqualToOne);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MessageYouMustSetPriceCoeficient] = new StringBuilder(MyTexts.MessageYouMustSetPriceCoeficient);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.DoNotGoThere] = new StringBuilder(MyTexts.DoNotGoThere);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HurryUp] = new StringBuilder(MyTexts.HurryUp);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PressToCollectCargo] = new StringBuilder(MyTexts.PressToCollectCargo);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HoldToPlantCargo] = new StringBuilder(MyTexts.HoldToPlantCargo);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SlowDown] = new StringBuilder(MyTexts.SlowDown);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JoiningGame] = new StringBuilder(MyTexts.JoiningGame);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AllowEnter] = new StringBuilder(MyTexts.AllowEnter);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.DenyEnter] = new StringBuilder(MyTexts.DenyEnter);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ApplyingPleaseWait] = new StringBuilder(MyTexts.ApplyingPleaseWait);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Bioresearch] = new StringBuilder(MyTexts.Bioresearch);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NotificationOxygenLeaking] = new StringBuilder(MyTexts.NotificationOxygenLeaking);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HudOxygenLeakingWarning] = new StringBuilder(MyTexts.HudOxygenLeakingWarning);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.OtherSide] = new StringBuilder(MyTexts.OtherSide);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Close] = new StringBuilder(MyTexts.Close);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.many2_small_asteroids] = new StringBuilder(MyTexts.many2_small_asteroids);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.many_medium_asteroids] = new StringBuilder(MyTexts.many_medium_asteroids);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.many_small_asteroids] = new StringBuilder(MyTexts.many_small_asteroids);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.rus_attack] = new StringBuilder(MyTexts.rus_attack);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.small2_asteroids] = new StringBuilder(MyTexts.small2_asteroids);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.small3_asteroids] = new StringBuilder(MyTexts.small3_asteroids);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.TarjaAndValentinStaying] = new StringBuilder(MyTexts.TarjaAndValentinStaying);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MPChatTeamMessagePrefix] = new StringBuilder(MyTexts.MPChatTeamMessagePrefix);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NotificationYouCantExamine] = new StringBuilder(MyTexts.NotificationYouCantExamine);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SwitchInHUBTurrets] = new StringBuilder(MyTexts.SwitchInHUBTurrets);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SwitchInHUBCameras] = new StringBuilder(MyTexts.SwitchInHUBCameras);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.GameOverInstructionsPart2] = new StringBuilder(MyTexts.GameOverInstructionsPart2);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.military_baseAsteroid] = new StringBuilder(MyTexts.military_baseAsteroid);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.mothership_facilityAsteroid] = new StringBuilder(MyTexts.mothership_facilityAsteroid);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.research_vesselAsteroid] = new StringBuilder(MyTexts.research_vesselAsteroid);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RussianWarehouseAsteroid] = new StringBuilder(MyTexts.RussianWarehouseAsteroid);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.slaver_baseAsteroid] = new StringBuilder(MyTexts.slaver_baseAsteroid);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.reef_ast] = new StringBuilder(MyTexts.reef_ast);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JoinRequest] = new StringBuilder(MyTexts.JoinRequest);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Remember] = new StringBuilder(MyTexts.Remember);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JoinRequestTitle] = new StringBuilder(MyTexts.JoinRequestTitle);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LabelEnableTextsDrawing] = new StringBuilder(MyTexts.LabelEnableTextsDrawing);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JoinModeClosed] = new StringBuilder(MyTexts.JoinModeClosed);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JoinModeStateOpen] = new StringBuilder(MyTexts.JoinModeStateOpen);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JoinModeOpen] = new StringBuilder(MyTexts.JoinModeOpen);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.hopebase512] = new StringBuilder(MyTexts.hopebase512);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.hopefood128] = new StringBuilder(MyTexts.hopefood128);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.hopevault128] = new StringBuilder(MyTexts.hopevault128);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MP_HostDisconnected] = new StringBuilder(MyTexts.MP_HostDisconnected);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MP_HostDisconnectedCaption] = new StringBuilder(MyTexts.MP_HostDisconnectedCaption);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Actor_Rift_Operator] = new StringBuilder(MyTexts.Actor_Rift_Operator);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Actor_Rift_Tourist] = new StringBuilder(MyTexts.Actor_Rift_Tourist);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.InvalidFaction] = new StringBuilder(MyTexts.InvalidFaction);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PleaseSelectValidFaction] = new StringBuilder(MyTexts.PleaseSelectValidFaction);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ScoreDeaths] = new StringBuilder(MyTexts.ScoreDeaths);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ScoreKills] = new StringBuilder(MyTexts.ScoreKills);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ScoreName] = new StringBuilder(MyTexts.ScoreName);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ScorePing] = new StringBuilder(MyTexts.ScorePing);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NotificationNonTradeableItem] = new StringBuilder(MyTexts.NotificationNonTradeableItem);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BoardingInProgress] = new StringBuilder(MyTexts.BoardingInProgress);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PressToBoardShip] = new StringBuilder(MyTexts.PressToBoardShip);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Chinese_Transmitter_Asteroid] = new StringBuilder(MyTexts.Chinese_Transmitter_Asteroid);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.New_Jerusalem_Asteroid] = new StringBuilder(MyTexts.New_Jerusalem_Asteroid);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Slaver_Base_2_Asteroid] = new StringBuilder(MyTexts.Slaver_Base_2_Asteroid);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Small_Pirate_Base_2_Asteroid] = new StringBuilder(MyTexts.Small_Pirate_Base_2_Asteroid);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Small_Pirate_Base_Asteroid] = new StringBuilder(MyTexts.Small_Pirate_Base_Asteroid);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Solar_Factory_EAC_Asteroid] = new StringBuilder(MyTexts.Solar_Factory_EAC_Asteroid);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BuyFor] = new StringBuilder(MyTexts.BuyFor);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SellFor] = new StringBuilder(MyTexts.SellFor);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.GameOverInstructionsPart2MP] = new StringBuilder(MyTexts.GameOverInstructionsPart2MP);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JoinModeStateClosed] = new StringBuilder(MyTexts.JoinModeStateClosed);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.WeaponCIWS] = new StringBuilder(MyTexts.WeaponCIWS);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Door] = new StringBuilder(MyTexts.Door);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FreeRoaming] = new StringBuilder(MyTexts.FreeRoaming);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MP_XKilled] = new StringBuilder(MyTexts.MP_XKilled);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MP_YouHaveBeenKilled] = new StringBuilder(MyTexts.MP_YouHaveBeenKilled);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MP_YouHaveKilledYourself] = new StringBuilder(MyTexts.MP_YouHaveKilledYourself);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Placement] = new StringBuilder(MyTexts.Placement);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p511_a17_billboard_portrait_1] = new StringBuilder(MyTexts.p511_a17_billboard_portrait_1);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CargoBoxDroppedItems] = new StringBuilder(MyTexts.CargoBoxDroppedItems);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Mines_Asteroid] = new StringBuilder(MyTexts.Mines_Asteroid);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Small_Pirate_Base_3_1] = new StringBuilder(MyTexts.Small_Pirate_Base_3_1);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Small_Pirate_Base_3_2] = new StringBuilder(MyTexts.Small_Pirate_Base_3_2);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Small_Pirate_Base_3_3] = new StringBuilder(MyTexts.Small_Pirate_Base_3_3);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Voxel_Arena_Tunnels] = new StringBuilder(MyTexts.Voxel_Arena_Tunnels);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.madeline_mothership_sound] = new StringBuilder(MyTexts.madeline_mothership_sound);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.mothership_sound] = new StringBuilder(MyTexts.mothership_sound);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.DeployingInProgress] = new StringBuilder(MyTexts.DeployingInProgress);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ProbePlacement] = new StringBuilder(MyTexts.ProbePlacement);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.DetectorPlacement] = new StringBuilder(MyTexts.DetectorPlacement);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NotificationNoOxygen] = new StringBuilder(MyTexts.NotificationNoOxygen);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Female] = new StringBuilder(MyTexts.Female);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Male] = new StringBuilder(MyTexts.Male);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.InfoAffClick] = new StringBuilder(MyTexts.InfoAffClick);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.InfoAffReg] = new StringBuilder(MyTexts.InfoAffReg);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.InfoContributions] = new StringBuilder(MyTexts.InfoContributions);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.InfoDescription] = new StringBuilder(MyTexts.InfoDescription);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.InfoForumPosts] = new StringBuilder(MyTexts.InfoForumPosts);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.InfoGameLogin] = new StringBuilder(MyTexts.InfoGameLogin);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.InfoQualificationPoints] = new StringBuilder(MyTexts.InfoQualificationPoints);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.InfoRegistered] = new StringBuilder(MyTexts.InfoRegistered);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.InfoWebLogin] = new StringBuilder(MyTexts.InfoWebLogin);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.InventoryCapacityLabel] = new StringBuilder(MyTexts.InventoryCapacityLabel);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NotificationHostLoadingSector] = new StringBuilder(MyTexts.NotificationHostLoadingSector);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.DisconnectQuestion] = new StringBuilder(MyTexts.DisconnectQuestion);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.DoYouWantToDisconnect] = new StringBuilder(MyTexts.DoYouWantToDisconnect);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EACSurvaySmaller_256_256_256] = new StringBuilder(MyTexts.EACSurvaySmaller_256_256_256);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EACSurveyBigger_512_256_256] = new StringBuilder(MyTexts.EACSurveyBigger_512_256_256);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Laika1_128_128_128] = new StringBuilder(MyTexts.Laika1_128_128_128);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Laika2_64_64_64] = new StringBuilder(MyTexts.Laika2_64_64_64);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Laika3_64_64_64] = new StringBuilder(MyTexts.Laika3_64_64_64);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Laika4_256_128_128] = new StringBuilder(MyTexts.Laika4_256_128_128);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Laika5_128_128_128] = new StringBuilder(MyTexts.Laika5_128_128_128);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Laika6_64_64_64] = new StringBuilder(MyTexts.Laika6_64_64_64);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Laika7_64_64_64] = new StringBuilder(MyTexts.Laika7_64_64_64);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Laika8_128_128_128] = new StringBuilder(MyTexts.Laika8_128_128_128);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Laika9_128_128_128] = new StringBuilder(MyTexts.Laika9_128_128_128);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Novaja_Zemlja] = new StringBuilder(MyTexts.Novaja_Zemlja);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Sht_Reich_JE_ForTheFuture] = new StringBuilder(MyTexts.Sht_Reich_JE_ForTheFuture);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Sht_Reich_JE_Vanquish] = new StringBuilder(MyTexts.Sht_Reich_JE_Vanquish);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Sht_Reich_JE_WeControl] = new StringBuilder(MyTexts.Sht_Reich_JE_WeControl);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Sht_Reich_JE_YouAreTheWeakLink] = new StringBuilder(MyTexts.Sht_Reich_JE_YouAreTheWeakLink);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Sht_Reich_JE_YourFinalDay] = new StringBuilder(MyTexts.Sht_Reich_JE_YourFinalDay);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ShouterReichJE] = new StringBuilder(MyTexts.ShouterReichJE);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RUSSIAN_TRANSMITTER] = new StringBuilder(MyTexts.RUSSIAN_TRANSMITTER);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_Description] = new StringBuilder(MyTexts.RUSSIAN_TRANSMITTER_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ChineseOfficer] = new StringBuilder(MyTexts.ChineseOfficer);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ShouterRussianJE] = new StringBuilder(MyTexts.ShouterRussianJE);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Actor_RussianGeneral_Headquarters] = new StringBuilder(MyTexts.Actor_RussianGeneral_Headquarters);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Actor_RussianGeneral_Recording] = new StringBuilder(MyTexts.Actor_RussianGeneral_Recording);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Volodia] = new StringBuilder(MyTexts.Volodia);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.VolodiaStranger] = new StringBuilder(MyTexts.VolodiaStranger);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SlaverBaseCaptain] = new StringBuilder(MyTexts.SlaverBaseCaptain);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FindEntityByID] = new StringBuilder(MyTexts.FindEntityByID);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.WrongNumberFormat] = new StringBuilder(MyTexts.WrongNumberFormat);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Find] = new StringBuilder(MyTexts.Find);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PrisonCell] = new StringBuilder(MyTexts.PrisonCell);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.UnlockingInProgress] = new StringBuilder(MyTexts.UnlockingInProgress);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MessageAreYouSureYouWantLoadCheckpoint] = new StringBuilder(MyTexts.MessageAreYouSureYouWantLoadCheckpoint);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Null] = new StringBuilder(MyTexts.Null);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_BACK_TO_MADELYN] = new StringBuilder(MyTexts.RUSSIAN_TRANSMITTER_BACK_TO_MADELYN);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_BACK_TO_MADELYN_Description] = new StringBuilder(MyTexts.RUSSIAN_TRANSMITTER_BACK_TO_MADELYN_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_BACK_TO_TRANSMITTER] = new StringBuilder(MyTexts.RUSSIAN_TRANSMITTER_BACK_TO_TRANSMITTER);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_BACK_TO_TRANSMITTER_Description] = new StringBuilder(MyTexts.RUSSIAN_TRANSMITTER_BACK_TO_TRANSMITTER_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_DECRYPT_FREQUENCY] = new StringBuilder(MyTexts.RUSSIAN_TRANSMITTER_DECRYPT_FREQUENCY);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_DECRYPT_FREQUENCY_Description] = new StringBuilder(MyTexts.RUSSIAN_TRANSMITTER_DECRYPT_FREQUENCY_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_ENTER_THE_BASE] = new StringBuilder(MyTexts.RUSSIAN_TRANSMITTER_ENTER_THE_BASE);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_ENTER_THE_BASE_Description] = new StringBuilder(MyTexts.RUSSIAN_TRANSMITTER_ENTER_THE_BASE_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_FIGHT_RUSSIAN_COMMANDO] = new StringBuilder(MyTexts.RUSSIAN_TRANSMITTER_FIGHT_RUSSIAN_COMMANDO);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_FIGHT_RUSSIAN_COMMANDO_Description] = new StringBuilder(MyTexts.RUSSIAN_TRANSMITTER_FIGHT_RUSSIAN_COMMANDO_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_FIND_FREQUENCY] = new StringBuilder(MyTexts.RUSSIAN_TRANSMITTER_FIND_FREQUENCY);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_FIND_FREQUENCY_Description] = new StringBuilder(MyTexts.RUSSIAN_TRANSMITTER_FIND_FREQUENCY_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_FIND_MAIN_ROOM_ENTRANCE] = new StringBuilder(MyTexts.RUSSIAN_TRANSMITTER_FIND_MAIN_ROOM_ENTRANCE);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_FIND_MAIN_ROOM_ENTRANCE_Description] = new StringBuilder(MyTexts.RUSSIAN_TRANSMITTER_FIND_MAIN_ROOM_ENTRANCE_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_MEET_STRANGER] = new StringBuilder(MyTexts.RUSSIAN_TRANSMITTER_MEET_STRANGER);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_MEET_STRANGER_Description] = new StringBuilder(MyTexts.RUSSIAN_TRANSMITTER_MEET_STRANGER_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_OPEN_DOORS] = new StringBuilder(MyTexts.RUSSIAN_TRANSMITTER_OPEN_DOORS);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_OPEN_DOORS_Description] = new StringBuilder(MyTexts.RUSSIAN_TRANSMITTER_OPEN_DOORS_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_PLACE_DEVICE_ON_TRANSMITTER] = new StringBuilder(MyTexts.RUSSIAN_TRANSMITTER_PLACE_DEVICE_ON_TRANSMITTER);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_PLACE_DEVICE_ON_TRANSMITTER_Description] = new StringBuilder(MyTexts.RUSSIAN_TRANSMITTER_PLACE_DEVICE_ON_TRANSMITTER_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_REACH_SIDE_ENTRANCE] = new StringBuilder(MyTexts.RUSSIAN_TRANSMITTER_REACH_SIDE_ENTRANCE);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_REACH_SIDE_ENTRANCE_Description] = new StringBuilder(MyTexts.RUSSIAN_TRANSMITTER_REACH_SIDE_ENTRANCE_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_REACH_WAREHOUSE] = new StringBuilder(MyTexts.RUSSIAN_TRANSMITTER_REACH_WAREHOUSE);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_REACH_WAREHOUSE_Description] = new StringBuilder(MyTexts.RUSSIAN_TRANSMITTER_REACH_WAREHOUSE_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_STEAL_MILITARY_SUPPLY] = new StringBuilder(MyTexts.RUSSIAN_TRANSMITTER_STEAL_MILITARY_SUPPLY);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_STEAL_MILITARY_SUPPLY_Description] = new StringBuilder(MyTexts.RUSSIAN_TRANSMITTER_STEAL_MILITARY_SUPPLY_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_TRADE_WITH_VOLODIA] = new StringBuilder(MyTexts.RUSSIAN_TRANSMITTER_TRADE_WITH_VOLODIA);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_TRADE_WITH_VOLODIA_Description] = new StringBuilder(MyTexts.RUSSIAN_TRANSMITTER_TRADE_WITH_VOLODIA_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_UPLOAD_DATA] = new StringBuilder(MyTexts.RUSSIAN_TRANSMITTER_UPLOAD_DATA);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_UPLOAD_DATA_Description] = new StringBuilder(MyTexts.RUSSIAN_TRANSMITTER_UPLOAD_DATA_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Blondi] = new StringBuilder(MyTexts.Blondi);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Raider] = new StringBuilder(MyTexts.Raider);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Cedric] = new StringBuilder(MyTexts.Cedric);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.GateKeeper] = new StringBuilder(MyTexts.GateKeeper);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SlaverLeader] = new StringBuilder(MyTexts.SlaverLeader);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Captive] = new StringBuilder(MyTexts.Captive);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CaptivePilot] = new StringBuilder(MyTexts.CaptivePilot);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NotificationRadiationCritical] = new StringBuilder(MyTexts.NotificationRadiationCritical);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.WaltherStaufenberg] = new StringBuilder(MyTexts.WaltherStaufenberg);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Erhard] = new StringBuilder(MyTexts.Erhard);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.TransporterCaptain] = new StringBuilder(MyTexts.TransporterCaptain);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FORCaptain] = new StringBuilder(MyTexts.FORCaptain);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ChinesePilot] = new StringBuilder(MyTexts.ChinesePilot);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RaiderLeader] = new StringBuilder(MyTexts.RaiderLeader);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RaiderNavigator] = new StringBuilder(MyTexts.RaiderNavigator);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ALIEN_GATE] = new StringBuilder(MyTexts.ALIEN_GATE);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ALIEN_GATE_Description] = new StringBuilder(MyTexts.ALIEN_GATE_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ARABIAN_BORDER] = new StringBuilder(MyTexts.ARABIAN_BORDER);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ARABIAN_BORDER_Description] = new StringBuilder(MyTexts.ARABIAN_BORDER_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_CONVINCE] = new StringBuilder(MyTexts.BARTHS_MOON_CONVINCE);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_CONVINCE_Description] = new StringBuilder(MyTexts.BARTHS_MOON_CONVINCE_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_PLANT] = new StringBuilder(MyTexts.BARTHS_MOON_PLANT);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_PLANT_Description] = new StringBuilder(MyTexts.BARTHS_MOON_PLANT_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER] = new StringBuilder(MyTexts.BARTHS_MOON_TRANSMITTER);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_Description] = new StringBuilder(MyTexts.BARTHS_MOON_TRANSMITTER_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_ESCAPE] = new StringBuilder(MyTexts.CHINESE_ESCAPE);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_ESCAPE_Description] = new StringBuilder(MyTexts.CHINESE_ESCAPE_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_REFINERY] = new StringBuilder(MyTexts.CHINESE_REFINERY);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_REFINERY_Description] = new StringBuilder(MyTexts.CHINESE_REFINERY_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_TRANSMITTER] = new StringBuilder(MyTexts.CHINESE_TRANSMITTER);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_TRANSMITTER_Description] = new StringBuilder(MyTexts.CHINESE_TRANSMITTER_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_TRANSPORT] = new StringBuilder(MyTexts.CHINESE_TRANSPORT);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_TRANSPORT_Description] = new StringBuilder(MyTexts.CHINESE_TRANSPORT_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CKD_MOTHERSHIP_FACILITY] = new StringBuilder(MyTexts.CKD_MOTHERSHIP_FACILITY);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CKD_MOTHERSHIP_FACILITY_Description] = new StringBuilder(MyTexts.CKD_MOTHERSHIP_FACILITY_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_PRISON] = new StringBuilder(MyTexts.EAC_PRISON);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_PRISON_Description] = new StringBuilder(MyTexts.EAC_PRISON_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_SURVEY_SITE] = new StringBuilder(MyTexts.EAC_SURVEY_SITE);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_SURVEY_SITE_Description] = new StringBuilder(MyTexts.EAC_SURVEY_SITE_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FAST_TEST_MISSION] = new StringBuilder(MyTexts.FAST_TEST_MISSION);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FAST_TEST_MISSION_Description] = new StringBuilder(MyTexts.FAST_TEST_MISSION_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FORT_VALIANT] = new StringBuilder(MyTexts.FORT_VALIANT);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FORT_VALIANT_B] = new StringBuilder(MyTexts.FORT_VALIANT_B);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FORT_VALIANT_B_Description] = new StringBuilder(MyTexts.FORT_VALIANT_B_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FORT_VALIANT_C] = new StringBuilder(MyTexts.FORT_VALIANT_C);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FORT_VALIANT_C_Description] = new StringBuilder(MyTexts.FORT_VALIANT_C_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FORT_VALIANT_Description] = new StringBuilder(MyTexts.FORT_VALIANT_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HIPPIE_OUTPOST] = new StringBuilder(MyTexts.HIPPIE_OUTPOST);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HIPPIE_OUTPOST_Description] = new StringBuilder(MyTexts.HIPPIE_OUTPOST_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HUB_SHOWCASE] = new StringBuilder(MyTexts.HUB_SHOWCASE);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HUB_SHOWCASE_Description] = new StringBuilder(MyTexts.HUB_SHOWCASE_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JUNKYARD_CONVINCE] = new StringBuilder(MyTexts.JUNKYARD_CONVINCE);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JUNKYARD_CONVINCE_Description] = new StringBuilder(MyTexts.JUNKYARD_CONVINCE_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JUNKYARD_EAC_AMBUSH] = new StringBuilder(MyTexts.JUNKYARD_EAC_AMBUSH);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JUNKYARD_EAC_AMBUSH_Description] = new StringBuilder(MyTexts.JUNKYARD_EAC_AMBUSH_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JUNKYARD_RETURN] = new StringBuilder(MyTexts.JUNKYARD_RETURN);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JUNKYARD_RETURN_Description] = new StringBuilder(MyTexts.JUNKYARD_RETURN_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LAIKA] = new StringBuilder(MyTexts.LAIKA);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LAIKA_Description] = new StringBuilder(MyTexts.LAIKA_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LAST_HOPE] = new StringBuilder(MyTexts.LAST_HOPE);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LAST_HOPE_Description] = new StringBuilder(MyTexts.LAST_HOPE_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.M01_Intro] = new StringBuilder(MyTexts.M01_Intro);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.M01_Intro_Description] = new StringBuilder(MyTexts.M01_Intro_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MILITARY_OUTPOSMILITARY_OUTPOST] = new StringBuilder(MyTexts.MILITARY_OUTPOSMILITARY_OUTPOST);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MILITARY_OUTPOST] = new StringBuilder(MyTexts.MILITARY_OUTPOST);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MILITARY_OUTPOST_Description] = new StringBuilder(MyTexts.MILITARY_OUTPOST_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NAZI_BIO_LAB] = new StringBuilder(MyTexts.NAZI_BIO_LAB);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NAZI_BIO_LAB_Description] = new StringBuilder(MyTexts.NAZI_BIO_LAB_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NEW_JERUSALEM_MISSION] = new StringBuilder(MyTexts.NEW_JERUSALEM_MISSION);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NEW_JERUSALEM_MISSION_Description] = new StringBuilder(MyTexts.NEW_JERUSALEM_MISSION_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NEW_NANJING] = new StringBuilder(MyTexts.NEW_NANJING);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NEW_NANJING_Description] = new StringBuilder(MyTexts.NEW_NANJING_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NEW_SINGAPOUR] = new StringBuilder(MyTexts.NEW_SINGAPOUR);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NEW_SINGAPOUR_Description] = new StringBuilder(MyTexts.NEW_SINGAPOUR_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NEW_STORY_M001] = new StringBuilder(MyTexts.NEW_STORY_M001);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NEW_STORY_M001_Description] = new StringBuilder(MyTexts.NEW_STORY_M001_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NEW_STORY_M002_ADDITIONAL_MISSION] = new StringBuilder(MyTexts.NEW_STORY_M002_ADDITIONAL_MISSION);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NEW_STORY_M002_ADDITIONAL_MISSION_Description] = new StringBuilder(MyTexts.NEW_STORY_M002_ADDITIONAL_MISSION_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NEW_STORY_M003] = new StringBuilder(MyTexts.NEW_STORY_M003);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NEW_STORY_M003_Description] = new StringBuilder(MyTexts.NEW_STORY_M003_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PIRATE_BASE] = new StringBuilder(MyTexts.PIRATE_BASE);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PIRATE_BASE_1] = new StringBuilder(MyTexts.PIRATE_BASE_1);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PIRATE_BASE_1_Description] = new StringBuilder(MyTexts.PIRATE_BASE_1_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PIRATE_BASE_Description] = new StringBuilder(MyTexts.PIRATE_BASE_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.REICHSTAG_A] = new StringBuilder(MyTexts.REICHSTAG_A);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.REICHSTAG_A_Description] = new StringBuilder(MyTexts.REICHSTAG_A_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.REICHSTAG_C] = new StringBuilder(MyTexts.REICHSTAG_C);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.REICHSTAG_C_Description] = new StringBuilder(MyTexts.REICHSTAG_C_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RESEARCH_VESSEL] = new StringBuilder(MyTexts.RESEARCH_VESSEL);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RESEARCH_VESSEL_Description] = new StringBuilder(MyTexts.RESEARCH_VESSEL_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RIFT] = new StringBuilder(MyTexts.RIFT);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RIFT_Description] = new StringBuilder(MyTexts.RIFT_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RIME_CONVINCE] = new StringBuilder(MyTexts.RIME_CONVINCE);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RIME_CONVINCE_Description] = new StringBuilder(MyTexts.RIME_CONVINCE_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RUSSIAN_WAREHOUSE] = new StringBuilder(MyTexts.RUSSIAN_WAREHOUSE);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_Description] = new StringBuilder(MyTexts.RUSSIAN_WAREHOUSE_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SIDE_MISSION_01_ASSASSINATION_Description] = new StringBuilder(MyTexts.SIDE_MISSION_01_ASSASSINATION_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SLAVER_BASE_GRAND_BURROW] = new StringBuilder(MyTexts.SLAVER_BASE_GRAND_BURROW);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SLAVER_BASE_GRAND_BURROW_Description] = new StringBuilder(MyTexts.SLAVER_BASE_GRAND_BURROW_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SLAVER_BASE_DELTA_EARNINGS] = new StringBuilder(MyTexts.SLAVER_BASE_DELTA_EARNINGS);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SLAVER_BASE_DELTA_EARNINGS_Description] = new StringBuilder(MyTexts.SLAVER_BASE_DELTA_EARNINGS_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SMALL_PIRATE_BASE_2] = new StringBuilder(MyTexts.SMALL_PIRATE_BASE_2);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SMALL_PIRATE_BASE_2_Description] = new StringBuilder(MyTexts.SMALL_PIRATE_BASE_2_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SMART_WAVES_TEST_MISSION] = new StringBuilder(MyTexts.SMART_WAVES_TEST_MISSION);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SMART_WAVES_TEST_MISSION_Description] = new StringBuilder(MyTexts.SMART_WAVES_TEST_MISSION_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SOLAR_PLANT_CHINA] = new StringBuilder(MyTexts.SOLAR_PLANT_CHINA);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SOLAR_PLANT_CHINA_Description] = new StringBuilder(MyTexts.SOLAR_PLANT_CHINA_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SOLAR_PLANT_EAC] = new StringBuilder(MyTexts.SOLAR_PLANT_EAC);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.TRADE_STATION_CHINA] = new StringBuilder(MyTexts.TRADE_STATION_CHINA);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.TRADE_STATION_CHINA_Description] = new StringBuilder(MyTexts.TRADE_STATION_CHINA_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.TRADE_STATION_EAC] = new StringBuilder(MyTexts.TRADE_STATION_EAC);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.TWIN_TOWERS] = new StringBuilder(MyTexts.TWIN_TOWERS);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.TWIN_TOWERS_Description] = new StringBuilder(MyTexts.TWIN_TOWERS_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.URANITE_MINE] = new StringBuilder(MyTexts.URANITE_MINE);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.URANITE_MINE_Description] = new StringBuilder(MyTexts.URANITE_MINE_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ChineseCommando] = new StringBuilder(MyTexts.ChineseCommando);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_CARGO] = new StringBuilder(MyTexts.RESEARCH_VESSEL_CHECK_CARGO);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_CARGO_AGAIN] = new StringBuilder(MyTexts.RESEARCH_VESSEL_CHECK_CARGO_AGAIN);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_CARGO_AGAIN_Description] = new StringBuilder(MyTexts.RESEARCH_VESSEL_CHECK_CARGO_AGAIN_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_CARGO_Description] = new StringBuilder(MyTexts.RESEARCH_VESSEL_CHECK_CARGO_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_COMMAND_ROOM] = new StringBuilder(MyTexts.RESEARCH_VESSEL_CHECK_COMMAND_ROOM);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_COMMAND_ROOM_Description] = new StringBuilder(MyTexts.RESEARCH_VESSEL_CHECK_COMMAND_ROOM_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_DRILL_ROOM] = new StringBuilder(MyTexts.RESEARCH_VESSEL_CHECK_DRILL_ROOM);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_DRILL_ROOM_Description] = new StringBuilder(MyTexts.RESEARCH_VESSEL_CHECK_DRILL_ROOM_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_FIRST_HANGAR] = new StringBuilder(MyTexts.RESEARCH_VESSEL_CHECK_FIRST_HANGAR);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_FIRST_HANGAR_Description] = new StringBuilder(MyTexts.RESEARCH_VESSEL_CHECK_FIRST_HANGAR_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_GENERATOR] = new StringBuilder(MyTexts.RESEARCH_VESSEL_CHECK_GENERATOR);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_GENERATOR_Description] = new StringBuilder(MyTexts.RESEARCH_VESSEL_CHECK_GENERATOR_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_LABORATORY] = new StringBuilder(MyTexts.RESEARCH_VESSEL_CHECK_LABORATORY);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_LABORATORY_Description] = new StringBuilder(MyTexts.RESEARCH_VESSEL_CHECK_LABORATORY_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_SECOND_HANGAR] = new StringBuilder(MyTexts.RESEARCH_VESSEL_CHECK_SECOND_HANGAR);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_SECOND_HANGAR_Description] = new StringBuilder(MyTexts.RESEARCH_VESSEL_CHECK_SECOND_HANGAR_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_SECOND_WAREHOUSE] = new StringBuilder(MyTexts.RESEARCH_VESSEL_CHECK_SECOND_WAREHOUSE);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_SECOND_WAREHOUSE_Description] = new StringBuilder(MyTexts.RESEARCH_VESSEL_CHECK_SECOND_WAREHOUSE_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_THIRD_HANGAR] = new StringBuilder(MyTexts.RESEARCH_VESSEL_CHECK_THIRD_HANGAR);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_THIRD_HANGAR_Description] = new StringBuilder(MyTexts.RESEARCH_VESSEL_CHECK_THIRD_HANGAR_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_WAREHOUSE] = new StringBuilder(MyTexts.RESEARCH_VESSEL_CHECK_WAREHOUSE);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_WAREHOUSE_Description] = new StringBuilder(MyTexts.RESEARCH_VESSEL_CHECK_WAREHOUSE_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RESEARCH_VESSEL_REACH_SHIP] = new StringBuilder(MyTexts.RESEARCH_VESSEL_REACH_SHIP);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RESEARCH_VESSEL_REACH_SHIP_Description] = new StringBuilder(MyTexts.RESEARCH_VESSEL_REACH_SHIP_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RESEARCH_VESSEL_TAKE_FIRST] = new StringBuilder(MyTexts.RESEARCH_VESSEL_TAKE_FIRST);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RESEARCH_VESSEL_TAKE_FIRST_Description] = new StringBuilder(MyTexts.RESEARCH_VESSEL_TAKE_FIRST_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RESEARCH_VESSEL_TAKE_FOURTH] = new StringBuilder(MyTexts.RESEARCH_VESSEL_TAKE_FOURTH);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RESEARCH_VESSEL_TAKE_FOURTH_Description] = new StringBuilder(MyTexts.RESEARCH_VESSEL_TAKE_FOURTH_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RESEARCH_VESSEL_TAKE_SECOND] = new StringBuilder(MyTexts.RESEARCH_VESSEL_TAKE_SECOND);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RESEARCH_VESSEL_TAKE_SECOND_Description] = new StringBuilder(MyTexts.RESEARCH_VESSEL_TAKE_SECOND_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RESEARCH_VESSEL_TAKE_THIRD] = new StringBuilder(MyTexts.RESEARCH_VESSEL_TAKE_THIRD);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RESEARCH_VESSEL_TAKE_THIRD_Description] = new StringBuilder(MyTexts.RESEARCH_VESSEL_TAKE_THIRD_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RESEARCH_VESSEL_USE_HUB_1] = new StringBuilder(MyTexts.RESEARCH_VESSEL_USE_HUB_1);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RESEARCH_VESSEL_USE_HUB_1_Description] = new StringBuilder(MyTexts.RESEARCH_VESSEL_USE_HUB_1_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RESEARCH_VESSEL_USE_HUB_2] = new StringBuilder(MyTexts.RESEARCH_VESSEL_USE_HUB_2);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RESEARCH_VESSEL_USE_HUB_2_Description] = new StringBuilder(MyTexts.RESEARCH_VESSEL_USE_HUB_2_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RESEARCH_VESSEL_USE_HUB_3] = new StringBuilder(MyTexts.RESEARCH_VESSEL_USE_HUB_3);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RESEARCH_VESSEL_USE_HUB_3_Description] = new StringBuilder(MyTexts.RESEARCH_VESSEL_USE_HUB_3_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Merchant] = new StringBuilder(MyTexts.Merchant);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.COUNCIL_GUARD] = new StringBuilder(MyTexts.COUNCIL_GUARD);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PATRIARCH_CARADOC] = new StringBuilder(MyTexts.PATRIARCH_CARADOC);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PATRIARCH_DAGONET] = new StringBuilder(MyTexts.PATRIARCH_DAGONET);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PATRIARCH_LAMORAK] = new StringBuilder(MyTexts.PATRIARCH_LAMORAK);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SIR_GERAINT] = new StringBuilder(MyTexts.SIR_GERAINT);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.UNKNOWN] = new StringBuilder(MyTexts.UNKNOWN);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SLAVER_BASE_2_BREAK_THE_CHAINS] = new StringBuilder(MyTexts.SLAVER_BASE_2_BREAK_THE_CHAINS);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SLAVER_BASE_2_FREE_SLAVES] = new StringBuilder(MyTexts.SLAVER_BASE_2_FREE_SLAVES);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SLAVER_BASE_2_PARALYZE_DEFENSE] = new StringBuilder(MyTexts.SLAVER_BASE_2_PARALYZE_DEFENSE);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SLAVER_BASE_2_PARALYZE_DEFENSE_Description] = new StringBuilder(MyTexts.SLAVER_BASE_2_PARALYZE_DEFENSE_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.UNLOCK_PRISON_1] = new StringBuilder(MyTexts.UNLOCK_PRISON_1);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.UNLOCK_PRISON_2] = new StringBuilder(MyTexts.UNLOCK_PRISON_2);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PLAYGROUND] = new StringBuilder(MyTexts.PLAYGROUND);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PressToPlaceExplosive] = new StringBuilder(MyTexts.PressToPlaceExplosive);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PlacingExplosives] = new StringBuilder(MyTexts.PlacingExplosives);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Everyone] = new StringBuilder(MyTexts.Everyone);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RussianGeneral] = new StringBuilder(MyTexts.RussianGeneral);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CriticalFriendlyFireDetected] = new StringBuilder(MyTexts.CriticalFriendlyFireDetected);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HoldToUseSecurityKey] = new StringBuilder(MyTexts.HoldToUseSecurityKey);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Using] = new StringBuilder(MyTexts.Using);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MPMerchantFrontLine] = new StringBuilder(MyTexts.MPMerchantFrontLine);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MPMerchantSupport] = new StringBuilder(MyTexts.MPMerchantSupport);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MarucsAndTarjaAreLeavingForTransporter] = new StringBuilder(MyTexts.MarucsAndTarjaAreLeavingForTransporter);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MarcusAndTarjaAreLeavingForKey] = new StringBuilder(MyTexts.MarcusAndTarjaAreLeavingForKey);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Pirate] = new StringBuilder(MyTexts.Pirate);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PirateCaptainClegg] = new StringBuilder(MyTexts.PirateCaptainClegg);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PirateCaptainGorg] = new StringBuilder(MyTexts.PirateCaptainGorg);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PirateCaptainVane] = new StringBuilder(MyTexts.PirateCaptainVane);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_CAPITAL] = new StringBuilder(MyTexts.CHINESE_CAPITAL);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_CAPITAL_Description] = new StringBuilder(MyTexts.CHINESE_CAPITAL_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MP_OnlyHostCanTravel] = new StringBuilder(MyTexts.MP_OnlyHostCanTravel);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MP_CannotHost] = new StringBuilder(MyTexts.MP_CannotHost);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_SURVEY_SITE_SectorDescription] = new StringBuilder(MyTexts.EAC_SURVEY_SITE_SectorDescription);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_SURVEY_SITE_SectorName] = new StringBuilder(MyTexts.EAC_SURVEY_SITE_SectorName);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ALIEN_GATE_SectorDescription] = new StringBuilder(MyTexts.ALIEN_GATE_SectorDescription);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ALIEN_GATE_SectorName] = new StringBuilder(MyTexts.ALIEN_GATE_SectorName);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_SectorDescription] = new StringBuilder(MyTexts.BARTHS_MOON_SectorDescription);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_SectorName] = new StringBuilder(MyTexts.BARTHS_MOON_SectorName);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_MINES_SectorDescription] = new StringBuilder(MyTexts.CHINESE_MINES_SectorDescription);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_MINES_SectorName] = new StringBuilder(MyTexts.CHINESE_MINES_SectorName);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_REFINERY_SectorDescription] = new StringBuilder(MyTexts.CHINESE_REFINERY_SectorDescription);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_REFINERY_SectorName] = new StringBuilder(MyTexts.CHINESE_REFINERY_SectorName);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_TRANSMITTER_SectorDescription] = new StringBuilder(MyTexts.CHINESE_TRANSMITTER_SectorDescription);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_TRANSMITTER_SectorName] = new StringBuilder(MyTexts.CHINESE_TRANSMITTER_SectorName);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.DOPPELBURG_SectorDescription] = new StringBuilder(MyTexts.DOPPELBURG_SectorDescription);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.DOPPELBURG_SectorName] = new StringBuilder(MyTexts.DOPPELBURG_SectorName);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_PRISON_SectorDescription] = new StringBuilder(MyTexts.EAC_PRISON_SectorDescription);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_PRISON_SectorName] = new StringBuilder(MyTexts.EAC_PRISON_SectorName);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_TRANSMITTER_SectorDescription] = new StringBuilder(MyTexts.EAC_TRANSMITTER_SectorDescription);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_TRANSMITTER_SectorName] = new StringBuilder(MyTexts.EAC_TRANSMITTER_SectorName);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FORT_VALIANT_SectorDescription] = new StringBuilder(MyTexts.FORT_VALIANT_SectorDescription);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FORT_VALIANT_SectorName] = new StringBuilder(MyTexts.FORT_VALIANT_SectorName);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JUNKYARD_SectorDescription] = new StringBuilder(MyTexts.JUNKYARD_SectorDescription);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JUNKYARD_SectorName] = new StringBuilder(MyTexts.JUNKYARD_SectorName);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LAIKA_SectorDescription] = new StringBuilder(MyTexts.LAIKA_SectorDescription);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LAIKA_SectorName] = new StringBuilder(MyTexts.LAIKA_SectorName);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LAST_HOPE_SectorDescription] = new StringBuilder(MyTexts.LAST_HOPE_SectorDescription);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LAST_HOPE_SectorName] = new StringBuilder(MyTexts.LAST_HOPE_SectorName);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PIRATE_BASE_SectorDescription] = new StringBuilder(MyTexts.PIRATE_BASE_SectorDescription);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PIRATE_BASE_SectorName] = new StringBuilder(MyTexts.PIRATE_BASE_SectorName);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.REICHSTAG_SectorDescription] = new StringBuilder(MyTexts.REICHSTAG_SectorDescription);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.REICHSTAG_SectorName] = new StringBuilder(MyTexts.REICHSTAG_SectorName);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RESEARCH_VESSEL_SectorDescription] = new StringBuilder(MyTexts.RESEARCH_VESSEL_SectorDescription);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RESEARCH_VESSEL_SectorName] = new StringBuilder(MyTexts.RESEARCH_VESSEL_SectorName);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RIFT_SectorDescription] = new StringBuilder(MyTexts.RIFT_SectorDescription);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RIFT_SectorName] = new StringBuilder(MyTexts.RIFT_SectorName);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RIME_SectorDescription] = new StringBuilder(MyTexts.RIME_SectorDescription);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RIME_SectorName] = new StringBuilder(MyTexts.RIME_SectorName);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_SectorDescritpion] = new StringBuilder(MyTexts.RUSSIAN_TRANSMITTER_SectorDescritpion);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_SectorName] = new StringBuilder(MyTexts.RUSSIAN_TRANSMITTER_SectorName);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_SectorDescription] = new StringBuilder(MyTexts.RUSSIAN_WAREHOUSE_SectorDescription);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_SectorName] = new StringBuilder(MyTexts.RUSSIAN_WAREHOUSE_SectorName);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SLAVER_BASE_1_SectorDescription] = new StringBuilder(MyTexts.SLAVER_BASE_1_SectorDescription);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SLAVER_BASE_1_SectorName] = new StringBuilder(MyTexts.SLAVER_BASE_1_SectorName);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SLAVER_BASE_2_SectorDescription] = new StringBuilder(MyTexts.SLAVER_BASE_2_SectorDescription);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SLAVER_BASE_2_SectorName] = new StringBuilder(MyTexts.SLAVER_BASE_2_SectorName);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.WHITE_WOLVES_RESEARCH_LAB_SectorDescription] = new StringBuilder(MyTexts.WHITE_WOLVES_RESEARCH_LAB_SectorDescription);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.WHITE_WOLVES_RESEARCH_LAB_SectorName] = new StringBuilder(MyTexts.WHITE_WOLVES_RESEARCH_LAB_SectorName);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MP_CannotConnectServerJoin] = new StringBuilder(MyTexts.MP_CannotConnectServerJoin);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ZappasGangman] = new StringBuilder(MyTexts.ZappasGangman);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MomoZappa] = new StringBuilder(MyTexts.MomoZappa);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Dealer] = new StringBuilder(MyTexts.Dealer);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Gangster] = new StringBuilder(MyTexts.Gangster);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NotificationFuelNo] = new StringBuilder(MyTexts.NotificationFuelNo);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RUSSIAN_CAPITAL] = new StringBuilder(MyTexts.RUSSIAN_CAPITAL);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RUSSIAN_CAPITAL_Description] = new StringBuilder(MyTexts.RUSSIAN_CAPITAL_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ARABIAN_CAPITAL] = new StringBuilder(MyTexts.ARABIAN_CAPITAL);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ARABIAN_CAPITAL_Description] = new StringBuilder(MyTexts.ARABIAN_CAPITAL_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MEDINA_622] = new StringBuilder(MyTexts.MEDINA_622);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MEDINA_622_Description] = new StringBuilder(MyTexts.MEDINA_622_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MessageYouMustSetTemplateIfYouWantRefillInventory] = new StringBuilder(MyTexts.MessageYouMustSetTemplateIfYouWantRefillInventory);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RefillTime] = new StringBuilder(MyTexts.RefillTime);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SlaverCole] = new StringBuilder(MyTexts.SlaverCole);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SlaverJeff] = new StringBuilder(MyTexts.SlaverJeff);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.IllegalCargo] = new StringBuilder(MyTexts.IllegalCargo);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MissionFail_RequiredObjectDestroyed] = new StringBuilder(MyTexts.MissionFail_RequiredObjectDestroyed);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Actor_RimeBouncer] = new StringBuilder(MyTexts.Actor_RimeBouncer);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Actor_RimeClient1] = new StringBuilder(MyTexts.Actor_RimeClient1);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Actor_RimeClient2] = new StringBuilder(MyTexts.Actor_RimeClient2);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Actor_RimeClient3] = new StringBuilder(MyTexts.Actor_RimeClient3);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Actor_RimeSmuggler] = new StringBuilder(MyTexts.Actor_RimeSmuggler);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Fail_LostTarget] = new StringBuilder(MyTexts.Fail_LostTarget);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Fail_SeenByTarget] = new StringBuilder(MyTexts.Fail_SeenByTarget);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Fail_CaughtByGuards] = new StringBuilder(MyTexts.Fail_CaughtByGuards);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Fail_MissedTimeWindow] = new StringBuilder(MyTexts.Fail_MissedTimeWindow);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_CAPITAL] = new StringBuilder(MyTexts.EAC_CAPITAL);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_CAPITAL_Description] = new StringBuilder(MyTexts.EAC_CAPITAL_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.WeaponUniversalLauncherBackTitle] = new StringBuilder(MyTexts.WeaponUniversalLauncherBackTitle);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.WeaponUniversalLauncherFrontTitle] = new StringBuilder(MyTexts.WeaponUniversalLauncherFrontTitle);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Arabian_Border_1] = new StringBuilder(MyTexts.Arabian_Border_1);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Arabian_Border_2] = new StringBuilder(MyTexts.Arabian_Border_2);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Arabian_Border_3] = new StringBuilder(MyTexts.Arabian_Border_3);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Arabian_Border_4] = new StringBuilder(MyTexts.Arabian_Border_4);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Arabian_Border_5] = new StringBuilder(MyTexts.Arabian_Border_5);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Arabian_Border_6] = new StringBuilder(MyTexts.Arabian_Border_6);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Arabian_Border_7] = new StringBuilder(MyTexts.Arabian_Border_7);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Arabian_Border_Arabian] = new StringBuilder(MyTexts.Arabian_Border_Arabian);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Arabian_Border_EAC] = new StringBuilder(MyTexts.Arabian_Border_EAC);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Chinese_Corridor_1] = new StringBuilder(MyTexts.Chinese_Corridor_1);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Chinese_Mines_Side] = new StringBuilder(MyTexts.Chinese_Mines_Side);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Chinese_Mines_Small] = new StringBuilder(MyTexts.Chinese_Mines_Small);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Chinese_Solar_Array_Bottom] = new StringBuilder(MyTexts.Chinese_Solar_Array_Bottom);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Chinese_Solar_Array_Main] = new StringBuilder(MyTexts.Chinese_Solar_Array_Main);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Fortress_Sanc_1] = new StringBuilder(MyTexts.Fortress_Sanc_1);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Fortress_Sanc_10] = new StringBuilder(MyTexts.Fortress_Sanc_10);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Fortress_Sanc_11] = new StringBuilder(MyTexts.Fortress_Sanc_11);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Fortress_Sanc_2] = new StringBuilder(MyTexts.Fortress_Sanc_2);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Fortress_Sanc_3] = new StringBuilder(MyTexts.Fortress_Sanc_3);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Fortress_Sanc_4] = new StringBuilder(MyTexts.Fortress_Sanc_4);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Fortress_Sanc_5] = new StringBuilder(MyTexts.Fortress_Sanc_5);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Fortress_Sanc_6] = new StringBuilder(MyTexts.Fortress_Sanc_6);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Fortress_Sanc_7] = new StringBuilder(MyTexts.Fortress_Sanc_7);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Fortress_Sanc_8] = new StringBuilder(MyTexts.Fortress_Sanc_8);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Fortress_Sanc_9] = new StringBuilder(MyTexts.Fortress_Sanc_9);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Fragile_Sector] = new StringBuilder(MyTexts.Fragile_Sector);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Grave_Skull] = new StringBuilder(MyTexts.Grave_Skull);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HallOfFame] = new StringBuilder(MyTexts.HallOfFame);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Hippie_Outpost_Base] = new StringBuilder(MyTexts.Hippie_Outpost_Base);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Hippie_Outpost_Tree] = new StringBuilder(MyTexts.Hippie_Outpost_Tree);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.IceCaveDeathmatch] = new StringBuilder(MyTexts.IceCaveDeathmatch);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Laika_1] = new StringBuilder(MyTexts.Laika_1);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Laika_2] = new StringBuilder(MyTexts.Laika_2);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Laika_3] = new StringBuilder(MyTexts.Laika_3);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Nearby_Station_1] = new StringBuilder(MyTexts.Nearby_Station_1);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Nearby_Station_10] = new StringBuilder(MyTexts.Nearby_Station_10);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Nearby_Station_11] = new StringBuilder(MyTexts.Nearby_Station_11);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Nearby_Station_12] = new StringBuilder(MyTexts.Nearby_Station_12);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Nearby_Station_2] = new StringBuilder(MyTexts.Nearby_Station_2);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Nearby_Station_3] = new StringBuilder(MyTexts.Nearby_Station_3);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Nearby_Station_4] = new StringBuilder(MyTexts.Nearby_Station_4);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Nearby_Station_5] = new StringBuilder(MyTexts.Nearby_Station_5);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Nearby_Station_6] = new StringBuilder(MyTexts.Nearby_Station_6);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Nearby_Station_7] = new StringBuilder(MyTexts.Nearby_Station_7);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Nearby_Station_8] = new StringBuilder(MyTexts.Nearby_Station_8);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Nearby_Station_9] = new StringBuilder(MyTexts.Nearby_Station_9);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.New_Singapore] = new StringBuilder(MyTexts.New_Singapore);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Pirate_Base_Asteroid_1] = new StringBuilder(MyTexts.Pirate_Base_Asteroid_1);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Pirate_Base_Asteroid_2] = new StringBuilder(MyTexts.Pirate_Base_Asteroid_2);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Pirate_Base_Asteroid_3] = new StringBuilder(MyTexts.Pirate_Base_Asteroid_3);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Plutonium_Mines] = new StringBuilder(MyTexts.Plutonium_Mines);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ReichStag_1] = new StringBuilder(MyTexts.ReichStag_1);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ReichStag_2] = new StringBuilder(MyTexts.ReichStag_2);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RiftStationSmaller] = new StringBuilder(MyTexts.RiftStationSmaller);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Russian_Transmitter_1] = new StringBuilder(MyTexts.Russian_Transmitter_1);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Russian_Transmitter_2] = new StringBuilder(MyTexts.Russian_Transmitter_2);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Russian_Transmitter_3] = new StringBuilder(MyTexts.Russian_Transmitter_3);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Russian_Warehouse_New] = new StringBuilder(MyTexts.Russian_Warehouse_New);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.VoxelArenaDeathmatch] = new StringBuilder(MyTexts.VoxelArenaDeathmatch);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.WarehouseDeatmatch] = new StringBuilder(MyTexts.WarehouseDeatmatch);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LAST_HOPE_DEACTIVATE_BOMBS] = new StringBuilder(MyTexts.LAST_HOPE_DEACTIVATE_BOMBS);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LAST_HOPE_DEACTIVATE_BOMBS_DESC] = new StringBuilder(MyTexts.LAST_HOPE_DEACTIVATE_BOMBS_DESC);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LAST_HOPE_KILL_SABOTERS] = new StringBuilder(MyTexts.LAST_HOPE_KILL_SABOTERS);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LAST_HOPE_KILL_SABOTERS_DESC] = new StringBuilder(MyTexts.LAST_HOPE_KILL_SABOTERS_DESC);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LAST_HOPE_LEAVE_SHAFTS] = new StringBuilder(MyTexts.LAST_HOPE_LEAVE_SHAFTS);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LAST_HOPE_LEAVE_SHAFTS_DESC] = new StringBuilder(MyTexts.LAST_HOPE_LEAVE_SHAFTS_DESC);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LAST_HOPE_REACH_CATCH_SHIPS] = new StringBuilder(MyTexts.LAST_HOPE_REACH_CATCH_SHIPS);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LAST_HOPE_REACH_CATCH_SHIPS_DESC] = new StringBuilder(MyTexts.LAST_HOPE_REACH_CATCH_SHIPS_DESC);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LAST_HOPE_REACH_COLONY] = new StringBuilder(MyTexts.LAST_HOPE_REACH_COLONY);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LAST_HOPE_REACH_COLONY_DESCRIPTION] = new StringBuilder(MyTexts.LAST_HOPE_REACH_COLONY_DESCRIPTION);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LAST_HOPE_REACH_DESTROY_RIDERS] = new StringBuilder(MyTexts.LAST_HOPE_REACH_DESTROY_RIDERS);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LAST_HOPE_REACH_DESTROY_RIDERS_DESC] = new StringBuilder(MyTexts.LAST_HOPE_REACH_DESTROY_RIDERS_DESC);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LAST_HOPE_REACH_REACH_CAVE] = new StringBuilder(MyTexts.LAST_HOPE_REACH_REACH_CAVE);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LAST_HOPE_REACH_REACH_CAVE_DESC] = new StringBuilder(MyTexts.LAST_HOPE_REACH_REACH_CAVE_DESC);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LAST_HOPE_REACH_STOP_SHIPS] = new StringBuilder(MyTexts.LAST_HOPE_REACH_STOP_SHIPS);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LAST_HOPE_REACH_STOP_SHIPS_DESC] = new StringBuilder(MyTexts.LAST_HOPE_REACH_STOP_SHIPS_DESC);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LAST_HOPE_REACH_TUNNEL] = new StringBuilder(MyTexts.LAST_HOPE_REACH_TUNNEL);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LAST_HOPE_REACH_TUNNEL_DESC] = new StringBuilder(MyTexts.LAST_HOPE_REACH_TUNNEL_DESC);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LAST_HOPE_STABILIZE_GAS] = new StringBuilder(MyTexts.LAST_HOPE_STABILIZE_GAS);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LAST_HOPE_STABILIZE_GAS_DESC] = new StringBuilder(MyTexts.LAST_HOPE_STABILIZE_GAS_DESC);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LAST_HOPE_STABILIZE_GAS_DESC1] = new StringBuilder(MyTexts.LAST_HOPE_STABILIZE_GAS_DESC1);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LAST_HOPE_STABILIZE_NUCLEAR_CORE] = new StringBuilder(MyTexts.LAST_HOPE_STABILIZE_NUCLEAR_CORE);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ChangeMaterial] = new StringBuilder(MyTexts.ChangeMaterial);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Actor_ReichstagOfficer] = new StringBuilder(MyTexts.Actor_ReichstagOfficer);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Actor_ReichstagCaptain] = new StringBuilder(MyTexts.Actor_ReichstagCaptain);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Flat_256x64x256] = new StringBuilder(MyTexts.Flat_256x64x256);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ASTEROID_COMPLEX_Description] = new StringBuilder(MyTexts.ASTEROID_COMPLEX_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ASTEROID_COMPLEX] = new StringBuilder(MyTexts.ASTEROID_COMPLEX);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_AMBUSH_DEFEND_MADELYN1] = new StringBuilder(MyTexts.EAC_AMBUSH_DEFEND_MADELYN1);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_AMBUSH_DEFEND_MADELYN1_DESC] = new StringBuilder(MyTexts.EAC_AMBUSH_DEFEND_MADELYN1_DESC);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_AMBUSH_DEFEND_MADELYN2] = new StringBuilder(MyTexts.EAC_AMBUSH_DEFEND_MADELYN2);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_AMBUSH_DEFEND_MADELYN2_DESC] = new StringBuilder(MyTexts.EAC_AMBUSH_DEFEND_MADELYN2_DESC);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_AMBUSH_DESTROY_GENERATOR] = new StringBuilder(MyTexts.EAC_AMBUSH_DESTROY_GENERATOR);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_AMBUSH_DESTROY_GENERATOR_DESC] = new StringBuilder(MyTexts.EAC_AMBUSH_DESTROY_GENERATOR_DESC);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_AMBUSH_FLY_TO_MANJEET] = new StringBuilder(MyTexts.EAC_AMBUSH_FLY_TO_MANJEET);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_AMBUSH_FLY_TO_MANJEET_DESC] = new StringBuilder(MyTexts.EAC_AMBUSH_FLY_TO_MANJEET_DESC);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_AMBUSH_GO_BACK_TO_MADELYN] = new StringBuilder(MyTexts.EAC_AMBUSH_GO_BACK_TO_MADELYN);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_AMBUSH_GO_BACK_TO_MADELYN_DESC] = new StringBuilder(MyTexts.EAC_AMBUSH_GO_BACK_TO_MADELYN_DESC);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_AMBUSH_RETURN_TO_MADELYN] = new StringBuilder(MyTexts.EAC_AMBUSH_RETURN_TO_MADELYN);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_AMBUSH_RETURN_TO_MADELYN_DESC] = new StringBuilder(MyTexts.EAC_AMBUSH_RETURN_TO_MADELYN_DESC);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p511_a18_billboard] = new StringBuilder(MyTexts.p511_a18_billboard);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p511_a19_billboard] = new StringBuilder(MyTexts.p511_a19_billboard);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.DevelopBuild] = new StringBuilder(MyTexts.DevelopBuild);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.TestBuild] = new StringBuilder(MyTexts.TestBuild);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LAST_HOPE_SPEAK_WITH_FATHER] = new StringBuilder(MyTexts.LAST_HOPE_SPEAK_WITH_FATHER);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LAST_HOPE_SPEAK_WITH_FATHER_DESC] = new StringBuilder(MyTexts.LAST_HOPE_SPEAK_WITH_FATHER_DESC);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Reward] = new StringBuilder(MyTexts.Reward);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PressToTakeTransmitter] = new StringBuilder(MyTexts.PressToTakeTransmitter);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PressToPlaceDetector] = new StringBuilder(MyTexts.PressToPlaceDetector);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PressToStartTransmission] = new StringBuilder(MyTexts.PressToStartTransmission);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Transmission] = new StringBuilder(MyTexts.Transmission);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PlacingBomb] = new StringBuilder(MyTexts.PlacingBomb);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.StartingTransmission] = new StringBuilder(MyTexts.StartingTransmission);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PiratesRewardObtained] = new StringBuilder(MyTexts.PiratesRewardObtained);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NotificationYouCanTake] = new StringBuilder(MyTexts.NotificationYouCanTake);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ResearchVesselCaptain] = new StringBuilder(MyTexts.ResearchVesselCaptain);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Flat_128x64x128] = new StringBuilder(MyTexts.Flat_128x64x128);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Flat_512x64x512] = new StringBuilder(MyTexts.Flat_512x64x512);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Fixing] = new StringBuilder(MyTexts.Fixing);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.GasPipe] = new StringBuilder(MyTexts.GasPipe);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PressToRepairGasPipe] = new StringBuilder(MyTexts.PressToRepairGasPipe);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PressToRepairRadiation] = new StringBuilder(MyTexts.PressToRepairRadiation);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RadiationLeak] = new StringBuilder(MyTexts.RadiationLeak);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Actor_LaikaOperator] = new StringBuilder(MyTexts.Actor_LaikaOperator);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Fail_PlutoniumLost] = new StringBuilder(MyTexts.Fail_PlutoniumLost);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.YouWereDetected] = new StringBuilder(MyTexts.YouWereDetected);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.DontHarvest] = new StringBuilder(MyTexts.DontHarvest);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MarcusAndValentinoLeavingParty] = new StringBuilder(MyTexts.MarcusAndValentinoLeavingParty);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MP_RemoteControlled] = new StringBuilder(MyTexts.MP_RemoteControlled);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AUTONOMOUS_OUTPOST] = new StringBuilder(MyTexts.AUTONOMOUS_OUTPOST);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AUTONOMOUS_OUTPOST_Description] = new StringBuilder(MyTexts.AUTONOMOUS_OUTPOST_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BIOFACILITY] = new StringBuilder(MyTexts.BIOFACILITY);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BIOFACILITY_Description] = new StringBuilder(MyTexts.BIOFACILITY_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CONVOY] = new StringBuilder(MyTexts.CONVOY);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CONVOY_Description] = new StringBuilder(MyTexts.CONVOY_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.INTERGALACTIC_HIGHWAY] = new StringBuilder(MyTexts.INTERGALACTIC_HIGHWAY);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.INTERGALACTIC_HIGHWAY_Description] = new StringBuilder(MyTexts.INTERGALACTIC_HIGHWAY_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MOTHERSHIP_CRASH] = new StringBuilder(MyTexts.MOTHERSHIP_CRASH);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MOTHERSHIP_CRASHL_Description] = new StringBuilder(MyTexts.MOTHERSHIP_CRASHL_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MP_GameHasEnded] = new StringBuilder(MyTexts.MP_GameHasEnded);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MadelynWasDestroyed] = new StringBuilder(MyTexts.MadelynWasDestroyed);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Sapho] = new StringBuilder(MyTexts.Sapho);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.GATES_OF_HELL] = new StringBuilder(MyTexts.GATES_OF_HELL);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.GATES_OF_HELL_Description] = new StringBuilder(MyTexts.GATES_OF_HELL_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MINER_OUTPOST] = new StringBuilder(MyTexts.MINER_OUTPOST);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MINER_OUTPOST_Description] = new StringBuilder(MyTexts.MINER_OUTPOST_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MINER_UPRISING] = new StringBuilder(MyTexts.MINER_UPRISING);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MINER_UPRISING_Description] = new StringBuilder(MyTexts.MINER_UPRISING_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Fail_Autodestruction] = new StringBuilder(MyTexts.Fail_Autodestruction);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Fail_MothershipDestroyed] = new StringBuilder(MyTexts.Fail_MothershipDestroyed);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Fail_ObjectiveDestroyed] = new StringBuilder(MyTexts.Fail_ObjectiveDestroyed);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Fail_RaceLost] = new StringBuilder(MyTexts.Fail_RaceLost);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Fail_TimeIsUp] = new StringBuilder(MyTexts.Fail_TimeIsUp);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PirateBaseGeneratorFailMessage] = new StringBuilder(MyTexts.PirateBaseGeneratorFailMessage);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Fail_HackerKilled] = new StringBuilder(MyTexts.Fail_HackerKilled);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Fail_TransportDestroyed] = new StringBuilder(MyTexts.Fail_TransportDestroyed);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MerchantMixed_Tier_1] = new StringBuilder(MyTexts.MerchantMixed_Tier_1);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MerchantMixed_Tier_2] = new StringBuilder(MyTexts.MerchantMixed_Tier_2);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MerchantMixed_Tier_3] = new StringBuilder(MyTexts.MerchantMixed_Tier_3);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MerchantMixed_Tier_4] = new StringBuilder(MyTexts.MerchantMixed_Tier_4);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MerchantMixed_Tier_5] = new StringBuilder(MyTexts.MerchantMixed_Tier_5);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MerchantMixed_Tier_6] = new StringBuilder(MyTexts.MerchantMixed_Tier_6);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MerchantMixed_Tier_7] = new StringBuilder(MyTexts.MerchantMixed_Tier_7);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MerchantMixed_Tier_8] = new StringBuilder(MyTexts.MerchantMixed_Tier_8);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MerchantMixed_Tier_9] = new StringBuilder(MyTexts.MerchantMixed_Tier_9);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MerchantMixed_Tier_Special] = new StringBuilder(MyTexts.MerchantMixed_Tier_Special);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MerchantArmy_Tier_1] = new StringBuilder(MyTexts.MerchantArmy_Tier_1);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MerchantArmy_Tier_2] = new StringBuilder(MyTexts.MerchantArmy_Tier_2);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MerchantArmy_Tier_3] = new StringBuilder(MyTexts.MerchantArmy_Tier_3);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MerchantArmy_Tier_4] = new StringBuilder(MyTexts.MerchantArmy_Tier_4);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MerchantArmy_Tier_5] = new StringBuilder(MyTexts.MerchantArmy_Tier_5);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MerchantArmy_Tier_6] = new StringBuilder(MyTexts.MerchantArmy_Tier_6);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MerchantArmy_Tier_7] = new StringBuilder(MyTexts.MerchantArmy_Tier_7);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MerchantArmy_Tier_8] = new StringBuilder(MyTexts.MerchantArmy_Tier_8);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MerchantArmy_Tier_9] = new StringBuilder(MyTexts.MerchantArmy_Tier_9);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MerchantArmy_Tier_Special] = new StringBuilder(MyTexts.MerchantArmy_Tier_Special);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MerchantMedicine_Tier_1] = new StringBuilder(MyTexts.MerchantMedicine_Tier_1);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MerchantMedicine_Tier_2] = new StringBuilder(MyTexts.MerchantMedicine_Tier_2);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MerchantMedicine_Tier_3] = new StringBuilder(MyTexts.MerchantMedicine_Tier_3);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MerchantMedicine_Tier_4] = new StringBuilder(MyTexts.MerchantMedicine_Tier_4);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MerchantMedicine_Tier_5] = new StringBuilder(MyTexts.MerchantMedicine_Tier_5);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MerchantMedicine_Tier_6] = new StringBuilder(MyTexts.MerchantMedicine_Tier_6);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MerchantMedicine_Tier_7] = new StringBuilder(MyTexts.MerchantMedicine_Tier_7);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MerchantMedicine_Tier_8] = new StringBuilder(MyTexts.MerchantMedicine_Tier_8);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MerchantMedicine_Tier_9] = new StringBuilder(MyTexts.MerchantMedicine_Tier_9);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MerchantMedicine_Tier_Special] = new StringBuilder(MyTexts.MerchantMedicine_Tier_Special);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MerchantTools_Tier_1] = new StringBuilder(MyTexts.MerchantTools_Tier_1);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MerchantTools_Tier_2] = new StringBuilder(MyTexts.MerchantTools_Tier_2);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MerchantTools_Tier_3] = new StringBuilder(MyTexts.MerchantTools_Tier_3);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MerchantTools_Tier_4] = new StringBuilder(MyTexts.MerchantTools_Tier_4);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MerchantTools_Tier_5] = new StringBuilder(MyTexts.MerchantTools_Tier_5);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MerchantTools_Tier_6] = new StringBuilder(MyTexts.MerchantTools_Tier_6);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MerchantTools_Tier_7] = new StringBuilder(MyTexts.MerchantTools_Tier_7);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MerchantTools_Tier_8] = new StringBuilder(MyTexts.MerchantTools_Tier_8);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MerchantTools_Tier_9] = new StringBuilder(MyTexts.MerchantTools_Tier_9);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MerchantTools_Tier_Special] = new StringBuilder(MyTexts.MerchantTools_Tier_Special);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Actor_EacSurveySite_MilitaryCaptain] = new StringBuilder(MyTexts.Actor_EacSurveySite_MilitaryCaptain);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.OpenChat] = new StringBuilder(MyTexts.OpenChat);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.OpenScore] = new StringBuilder(MyTexts.OpenScore);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.IncreaseCargoCapacity] = new StringBuilder(MyTexts.IncreaseCargoCapacity);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NotificationSolarWindWarning] = new StringBuilder(MyTexts.NotificationSolarWindWarning);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ASTEROID_FIELD] = new StringBuilder(MyTexts.ASTEROID_FIELD);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ASTEROID_FIELD_Description] = new StringBuilder(MyTexts.ASTEROID_FIELD_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.DUMPING_GROUND] = new StringBuilder(MyTexts.DUMPING_GROUND);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.DUMPING_GROUND_Description] = new StringBuilder(MyTexts.DUMPING_GROUND_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FACTORY_AMBUSH] = new StringBuilder(MyTexts.FACTORY_AMBUSH);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FACTORY_AMBUSH_Description] = new StringBuilder(MyTexts.FACTORY_AMBUSH_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.INDUSTRIAL_SECTOR] = new StringBuilder(MyTexts.INDUSTRIAL_SECTOR);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.INDUSTRIAL_SECTOR_Description] = new StringBuilder(MyTexts.INDUSTRIAL_SECTOR_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HackingResult_NoHackingTool] = new StringBuilder(MyTexts.HackingResult_NoHackingTool);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RemoveAllVoxelHands] = new StringBuilder(MyTexts.RemoveAllVoxelHands);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ClearVoxelHandsWarning] = new StringBuilder(MyTexts.ClearVoxelHandsWarning);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ThisObject] = new StringBuilder(MyTexts.ThisObject);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FORGOTTEN_FACILITY] = new StringBuilder(MyTexts.FORGOTTEN_FACILITY);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FORGOTTEN_FACILITY_Description] = new StringBuilder(MyTexts.FORGOTTEN_FACILITY_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ExitDrone] = new StringBuilder(MyTexts.ExitDrone);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EnterDrone] = new StringBuilder(MyTexts.EnterDrone);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ActivatedUpToDifficulty] = new StringBuilder(MyTexts.ActivatedUpToDifficulty);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ZOMBIE_LEVEL] = new StringBuilder(MyTexts.ZOMBIE_LEVEL);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ZOMBIE_LEVEL_Description] = new StringBuilder(MyTexts.ZOMBIE_LEVEL_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PirateBaseStaticAsteroid_A_1000m] = new StringBuilder(MyTexts.PirateBaseStaticAsteroid_A_1000m);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PirateBaseStaticAsteroid_A_5000m_1] = new StringBuilder(MyTexts.PirateBaseStaticAsteroid_A_5000m_1);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PirateBaseStaticAsteroid_A_5000m_2] = new StringBuilder(MyTexts.PirateBaseStaticAsteroid_A_5000m_2);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EditVoxelHandShapeCylinder] = new StringBuilder(MyTexts.EditVoxelHandShapeCylinder);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SmallShipMinerShip01Name] = new StringBuilder(MyTexts.SmallShipMinerShip01Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SmallShipMinerShip02Name] = new StringBuilder(MyTexts.SmallShipMinerShip02Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SmallShipMinerShip03Name] = new StringBuilder(MyTexts.SmallShipMinerShip03Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SmallShipMinerShip04Name] = new StringBuilder(MyTexts.SmallShipMinerShip04Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SmallShipMinerShip05Name] = new StringBuilder(MyTexts.SmallShipMinerShip05Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SmallShipMinerShip06Name] = new StringBuilder(MyTexts.SmallShipMinerShip06Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SmallShipMinerShip07Name] = new StringBuilder(MyTexts.SmallShipMinerShip07Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SmallShipMinerShip08Name] = new StringBuilder(MyTexts.SmallShipMinerShip08Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SmallShipMinerShip09Name] = new StringBuilder(MyTexts.SmallShipMinerShip09Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SmallShipMinerShip10Name] = new StringBuilder(MyTexts.SmallShipMinerShip10Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SmallShipJackKnifeName] = new StringBuilder(MyTexts.SmallShipJackKnifeName);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SmallShipDoonName] = new StringBuilder(MyTexts.SmallShipDoonName);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SmallShipHammerName] = new StringBuilder(MyTexts.SmallShipHammerName);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SmallShipOrgName] = new StringBuilder(MyTexts.SmallShipOrgName);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SmallShipYgName] = new StringBuilder(MyTexts.SmallShipYgName);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SmallShipHawkName] = new StringBuilder(MyTexts.SmallShipHawkName);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SmallShipPhoenixName] = new StringBuilder(MyTexts.SmallShipPhoenixName);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SmallShipLeviathanName] = new StringBuilder(MyTexts.SmallShipLeviathanName);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SmallShipRockheaterName] = new StringBuilder(MyTexts.SmallShipRockheaterName);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SmallShipSteelHeadName] = new StringBuilder(MyTexts.SmallShipSteelHeadName);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SmallShipTalonName] = new StringBuilder(MyTexts.SmallShipTalonName);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SmallShipStanislavName] = new StringBuilder(MyTexts.SmallShipStanislavName);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.OreStoneName] = new StringBuilder(MyTexts.OreStoneName);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.OreIronName] = new StringBuilder(MyTexts.OreIronName);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.OreUraniteName] = new StringBuilder(MyTexts.OreUraniteName);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.OreHeliumName] = new StringBuilder(MyTexts.OreHeliumName);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.OreIceName] = new StringBuilder(MyTexts.OreIceName);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.OreGoldName] = new StringBuilder(MyTexts.OreGoldName);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.OreSilverName] = new StringBuilder(MyTexts.OreSilverName);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.OreSiliconName] = new StringBuilder(MyTexts.OreSiliconName);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.OrePlatinumName] = new StringBuilder(MyTexts.OrePlatinumName);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.OreNickelName] = new StringBuilder(MyTexts.OreNickelName);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.OreCobaltName] = new StringBuilder(MyTexts.OreCobaltName);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.OreMagnesiumName] = new StringBuilder(MyTexts.OreMagnesiumName);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.OreTreasureName] = new StringBuilder(MyTexts.OreTreasureName);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.OreOrganicName] = new StringBuilder(MyTexts.OreOrganicName);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.OreLavaName] = new StringBuilder(MyTexts.OreLavaName);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.OreSnowName] = new StringBuilder(MyTexts.OreSnowName);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.OreSandstoneName] = new StringBuilder(MyTexts.OreSandstoneName);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.OreConcreteName] = new StringBuilder(MyTexts.OreConcreteName);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SaveCurrentProgress] = new StringBuilder(MyTexts.SaveCurrentProgress);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SaveCurrentProgressCaption] = new StringBuilder(MyTexts.SaveCurrentProgressCaption);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_ESCAPE_SectorDescription] = new StringBuilder(MyTexts.CHINESE_ESCAPE_SectorDescription);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_ESCAPE_SectorName] = new StringBuilder(MyTexts.CHINESE_ESCAPE_SectorName);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Actor_RaceOpponent] = new StringBuilder(MyTexts.Actor_RaceOpponent);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ToolRadarJammerName] = new StringBuilder(MyTexts.ToolRadarJammerName);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RacingFan] = new StringBuilder(MyTexts.RacingFan);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Actor_RimeBarkeeper] = new StringBuilder(MyTexts.Actor_RimeBarkeeper);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Actor_RimeMitchel] = new StringBuilder(MyTexts.Actor_RimeMitchel);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PlantingInProgress] = new StringBuilder(MyTexts.PlantingInProgress);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LocalDataCorrupted] = new StringBuilder(MyTexts.LocalDataCorrupted);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NotAvailableInOffline] = new StringBuilder(MyTexts.NotAvailableInOffline);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HarvestNotification] = new StringBuilder(MyTexts.HarvestNotification);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HarvestNotificationInventoryFull] = new StringBuilder(MyTexts.HarvestNotificationInventoryFull);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.d25asteroid_field] = new StringBuilder(MyTexts.d25asteroid_field);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.d25city_fight] = new StringBuilder(MyTexts.d25city_fight);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.d25gates_ofhell] = new StringBuilder(MyTexts.d25gates_ofhell);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.d25junkyard] = new StringBuilder(MyTexts.d25junkyard);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.d25military_area] = new StringBuilder(MyTexts.d25military_area);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.d25miner_outpost] = new StringBuilder(MyTexts.d25miner_outpost);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.d25plain] = new StringBuilder(MyTexts.d25plain);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.d25radioactive] = new StringBuilder(MyTexts.d25radioactive);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.YouNeed25D] = new StringBuilder(MyTexts.YouNeed25D);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Russian_Transmitter_Main] = new StringBuilder(MyTexts.Russian_Transmitter_Main);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_SURVEY_SITE_GOTO_10_Name] = new StringBuilder(MyTexts.EAC_SURVEY_SITE_GOTO_10_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_SURVEY_SITE_GOTO_10_Description] = new StringBuilder(MyTexts.EAC_SURVEY_SITE_GOTO_10_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_SURVEY_SITE_CLEAR_THE_WAY_Name] = new StringBuilder(MyTexts.EAC_SURVEY_SITE_CLEAR_THE_WAY_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_SURVEY_SITE_CLEAR_THE_WAY_Description] = new StringBuilder(MyTexts.EAC_SURVEY_SITE_CLEAR_THE_WAY_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_SURVEY_SITE_GOTO_30_Name] = new StringBuilder(MyTexts.EAC_SURVEY_SITE_GOTO_30_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_SURVEY_SITE_GOTO_30_Description] = new StringBuilder(MyTexts.EAC_SURVEY_SITE_GOTO_30_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_SURVEY_SITE_GOTO_40_Name] = new StringBuilder(MyTexts.EAC_SURVEY_SITE_GOTO_40_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_SURVEY_SITE_GOTO_40_Description] = new StringBuilder(MyTexts.EAC_SURVEY_SITE_GOTO_40_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_SURVEY_SITE_GENERATOR_Name] = new StringBuilder(MyTexts.EAC_SURVEY_SITE_GENERATOR_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_SURVEY_SITE_GENERATOR_Description] = new StringBuilder(MyTexts.EAC_SURVEY_SITE_GENERATOR_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_SURVEY_SITE_GOTO_60_Name] = new StringBuilder(MyTexts.EAC_SURVEY_SITE_GOTO_60_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_SURVEY_SITE_GOTO_60_Description] = new StringBuilder(MyTexts.EAC_SURVEY_SITE_GOTO_60_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_SURVEY_SITE_GOTO_65_Name] = new StringBuilder(MyTexts.EAC_SURVEY_SITE_GOTO_65_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_SURVEY_SITE_GOTO_65_Description] = new StringBuilder(MyTexts.EAC_SURVEY_SITE_GOTO_65_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_SURVEY_SITE_SAVEMINERS_Name] = new StringBuilder(MyTexts.EAC_SURVEY_SITE_SAVEMINERS_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_SURVEY_SITE_SAVEMINERS_Description] = new StringBuilder(MyTexts.EAC_SURVEY_SITE_SAVEMINERS_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_SURVEY_SITE_GOTO_70_Name] = new StringBuilder(MyTexts.EAC_SURVEY_SITE_GOTO_70_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_SURVEY_SITE_GOTO_70_Description] = new StringBuilder(MyTexts.EAC_SURVEY_SITE_GOTO_70_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_SURVEY_SITE_SURVIVE_Name] = new StringBuilder(MyTexts.EAC_SURVEY_SITE_SURVIVE_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_SURVEY_SITE_SURVIVE_Description] = new StringBuilder(MyTexts.EAC_SURVEY_SITE_SURVIVE_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_SURVEY_SITE_GOTO_90_Name] = new StringBuilder(MyTexts.EAC_SURVEY_SITE_GOTO_90_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_SURVEY_SITE_GOTO_90_Description] = new StringBuilder(MyTexts.EAC_SURVEY_SITE_GOTO_90_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Danger] = new StringBuilder(MyTexts.Danger);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LAIKA_GOTO_10_Name] = new StringBuilder(MyTexts.LAIKA_GOTO_10_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LAIKA_GOTO_10_Description] = new StringBuilder(MyTexts.LAIKA_GOTO_10_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LAIKA_GOTO_GENERATOR_Name] = new StringBuilder(MyTexts.LAIKA_GOTO_GENERATOR_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LAIKA_GOTO_GENERATOR_Description] = new StringBuilder(MyTexts.LAIKA_GOTO_GENERATOR_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LAIKA_GOTO_COMMAND_Name] = new StringBuilder(MyTexts.LAIKA_GOTO_COMMAND_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LAIKA_GOTO_COMMAND_Description] = new StringBuilder(MyTexts.LAIKA_GOTO_COMMAND_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LAIKA_GOTO_COMMUNICATION_01_Name] = new StringBuilder(MyTexts.LAIKA_GOTO_COMMUNICATION_01_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LAIKA_GOTO_COMMUNICATION_01_Description] = new StringBuilder(MyTexts.LAIKA_GOTO_COMMUNICATION_01_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LAIKA_GOTO_COMMUNICATION_02_Name] = new StringBuilder(MyTexts.LAIKA_GOTO_COMMUNICATION_02_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LAIKA_GOTO_COMMUNICATION_02_Description] = new StringBuilder(MyTexts.LAIKA_GOTO_COMMUNICATION_02_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LAIKA_WARHEAD_Name] = new StringBuilder(MyTexts.LAIKA_WARHEAD_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LAIKA_WARHEAD_Description] = new StringBuilder(MyTexts.LAIKA_WARHEAD_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LAIKA_RETURN_Name] = new StringBuilder(MyTexts.LAIKA_RETURN_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LAIKA_RETURN_Description] = new StringBuilder(MyTexts.LAIKA_RETURN_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LAIKA_LASTSTAND_Name] = new StringBuilder(MyTexts.LAIKA_LASTSTAND_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LAIKA_LASTSTAND_Description] = new StringBuilder(MyTexts.LAIKA_LASTSTAND_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ALIEN_GATE_RIGHT_WING_Name] = new StringBuilder(MyTexts.ALIEN_GATE_RIGHT_WING_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ALIEN_GATE_RIGHT_WING_Description] = new StringBuilder(MyTexts.ALIEN_GATE_RIGHT_WING_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ALIEN_GATE_FOLLOW_COORDINATES_Name] = new StringBuilder(MyTexts.ALIEN_GATE_FOLLOW_COORDINATES_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ALIEN_GATE_CONTINUE_SEARCHING_Name] = new StringBuilder(MyTexts.ALIEN_GATE_CONTINUE_SEARCHING_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ALIEN_GATE_CONTINUE_SEARCHING_Description] = new StringBuilder(MyTexts.ALIEN_GATE_CONTINUE_SEARCHING_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ALIEN_GATE_FOLLOW_DIRECTION_Name] = new StringBuilder(MyTexts.ALIEN_GATE_FOLLOW_DIRECTION_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ALIEN_GATE_FOLLOW_DIRECTION_Description] = new StringBuilder(MyTexts.ALIEN_GATE_FOLLOW_DIRECTION_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ALIEN_GATE_COUGHT_IN_TRAP_Name] = new StringBuilder(MyTexts.ALIEN_GATE_COUGHT_IN_TRAP_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ALIEN_GATE_COUGHT_IN_TRAP_Description] = new StringBuilder(MyTexts.ALIEN_GATE_COUGHT_IN_TRAP_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ALIEN_GATE_RUN_FOR_LIFE_Name] = new StringBuilder(MyTexts.ALIEN_GATE_RUN_FOR_LIFE_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ALIEN_GATE_RUN_FOR_LIFE_Description] = new StringBuilder(MyTexts.ALIEN_GATE_RUN_FOR_LIFE_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ALIEN_GATE_REGROUP_WITH_MADELYN_Name] = new StringBuilder(MyTexts.ALIEN_GATE_REGROUP_WITH_MADELYN_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ALIEN_GATE_REGROUP_WITH_MADELYN_Description] = new StringBuilder(MyTexts.ALIEN_GATE_REGROUP_WITH_MADELYN_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ALIEN_GATE_BOARD_MOTHER_SHIP_Name] = new StringBuilder(MyTexts.ALIEN_GATE_BOARD_MOTHER_SHIP_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ALIEN_GATE_BOARD_MOTHER_SHIP_Description] = new StringBuilder(MyTexts.ALIEN_GATE_BOARD_MOTHER_SHIP_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ALIEN_GATE_HACK_GENERATOR_Name] = new StringBuilder(MyTexts.ALIEN_GATE_HACK_GENERATOR_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ALIEN_GATE_HACK_GENERATOR_Description] = new StringBuilder(MyTexts.ALIEN_GATE_HACK_GENERATOR_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ALIEN_GATE_HACK_ENGINE_Name] = new StringBuilder(MyTexts.ALIEN_GATE_HACK_ENGINE_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ALIEN_GATE_HACK_ENGINE_Description] = new StringBuilder(MyTexts.ALIEN_GATE_HACK_ENGINE_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ALIEN_GATE_LEAVE_SHIP_Name] = new StringBuilder(MyTexts.ALIEN_GATE_LEAVE_SHIP_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ALIEN_GATE_LEAVE_SHIP_Description] = new StringBuilder(MyTexts.ALIEN_GATE_LEAVE_SHIP_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ALIEN_GATE_REGROPUP_WITH_MADELYN_Name] = new StringBuilder(MyTexts.ALIEN_GATE_REGROPUP_WITH_MADELYN_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ALIEN_GATE_REGROPUP_WITH_MADELYN_Description] = new StringBuilder(MyTexts.ALIEN_GATE_REGROPUP_WITH_MADELYN_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ALIEN_GATE_BOARD_SECOND_Name] = new StringBuilder(MyTexts.ALIEN_GATE_BOARD_SECOND_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ALIEN_GATE_HACK_GENERATOR2_Name] = new StringBuilder(MyTexts.ALIEN_GATE_HACK_GENERATOR2_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ALIEN_GATE_BOARD_SECOND_Description] = new StringBuilder(MyTexts.ALIEN_GATE_BOARD_SECOND_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ALIEN_GATE_HACK_GENERATOR2_Description] = new StringBuilder(MyTexts.ALIEN_GATE_HACK_GENERATOR2_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ALIEN_GATE_HACK_ENGINE_2_Name] = new StringBuilder(MyTexts.ALIEN_GATE_HACK_ENGINE_2_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ALIEN_GATE_HACK_ENGINE_2_Description] = new StringBuilder(MyTexts.ALIEN_GATE_HACK_ENGINE_2_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ALIEN_GATE_ENABLE_DOORS_Name] = new StringBuilder(MyTexts.ALIEN_GATE_ENABLE_DOORS_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ALIEN_GATE_ENABLE_DOORS_Description] = new StringBuilder(MyTexts.ALIEN_GATE_ENABLE_DOORS_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ALIEN_GATE_ENTER_LAB_Name] = new StringBuilder(MyTexts.ALIEN_GATE_ENTER_LAB_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ALIEN_GATE_ENTER_LAB_Description] = new StringBuilder(MyTexts.ALIEN_GATE_ENTER_LAB_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ALIEN_GATE_16_Name] = new StringBuilder(MyTexts.ALIEN_GATE_16_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ALIEN_GATE_16_Description] = new StringBuilder(MyTexts.ALIEN_GATE_16_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ALIEN_GATE_17_Name] = new StringBuilder(MyTexts.ALIEN_GATE_17_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ALIEN_GATE_17_Description] = new StringBuilder(MyTexts.ALIEN_GATE_17_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ALIEN_GATE_18_Name] = new StringBuilder(MyTexts.ALIEN_GATE_18_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ALIEN_GATE_18_Description] = new StringBuilder(MyTexts.ALIEN_GATE_18_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ALIEN_GATE_19_Name] = new StringBuilder(MyTexts.ALIEN_GATE_19_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ALIEN_GATE_19_Description] = new StringBuilder(MyTexts.ALIEN_GATE_19_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ALIEN_GATE_20_Name] = new StringBuilder(MyTexts.ALIEN_GATE_20_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ALIEN_GATE_20_Description] = new StringBuilder(MyTexts.ALIEN_GATE_20_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ALIEN_GATE_21_Name] = new StringBuilder(MyTexts.ALIEN_GATE_21_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ALIEN_GATE_21_Description] = new StringBuilder(MyTexts.ALIEN_GATE_21_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ALIEN_GATE_22_Name] = new StringBuilder(MyTexts.ALIEN_GATE_22_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ALIEN_GATE_22_Description] = new StringBuilder(MyTexts.ALIEN_GATE_22_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ALIEN_GATE_23_Name] = new StringBuilder(MyTexts.ALIEN_GATE_23_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ALIEN_GATE_23_Description] = new StringBuilder(MyTexts.ALIEN_GATE_23_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CampaignIsCompleted] = new StringBuilder(MyTexts.CampaignIsCompleted);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Destroy] = new StringBuilder(MyTexts.Destroy);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AutodestructIn] = new StringBuilder(MyTexts.AutodestructIn);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_PRISON_THRUSWARM_Name] = new StringBuilder(MyTexts.EAC_PRISON_THRUSWARM_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_PRISON_THRUSWARM_Description] = new StringBuilder(MyTexts.EAC_PRISON_THRUSWARM_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_PRISON_SOLARDEF_Name] = new StringBuilder(MyTexts.EAC_PRISON_SOLARDEF_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_PRISON_SOLARDEF_Description] = new StringBuilder(MyTexts.EAC_PRISON_SOLARDEF_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_PRISON_SOLAROFF1_Name] = new StringBuilder(MyTexts.EAC_PRISON_SOLAROFF1_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_PRISON_SOLAROFF1_Description] = new StringBuilder(MyTexts.EAC_PRISON_SOLAROFF1_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_PRISON_MOTHERSHIPHELP_Name] = new StringBuilder(MyTexts.EAC_PRISON_MOTHERSHIPHELP_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_PRISON_MOTHERSHIPHELP_Description] = new StringBuilder(MyTexts.EAC_PRISON_MOTHERSHIPHELP_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_PRISON_SOLAROFF2_Name] = new StringBuilder(MyTexts.EAC_PRISON_SOLAROFF2_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_PRISON_SOLAROFF2_Description] = new StringBuilder(MyTexts.EAC_PRISON_SOLAROFF2_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_PRISON_BREAKIN_Name] = new StringBuilder(MyTexts.EAC_PRISON_BREAKIN_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_PRISON_BREAKIN_Description] = new StringBuilder(MyTexts.EAC_PRISON_BREAKIN_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_PRISON_LOCINTEL_Name] = new StringBuilder(MyTexts.EAC_PRISON_LOCINTEL_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_PRISON_LOCINTEL_Description] = new StringBuilder(MyTexts.EAC_PRISON_LOCINTEL_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_PRISON_ACQUIREIDCARD_Name] = new StringBuilder(MyTexts.EAC_PRISON_ACQUIREIDCARD_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_PRISON_ACQUIREIDCARD_Description] = new StringBuilder(MyTexts.EAC_PRISON_ACQUIREIDCARD_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_PRISON_LOCINTEL2_Name] = new StringBuilder(MyTexts.EAC_PRISON_LOCINTEL2_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_PRISON_LOCINTEL2_Description] = new StringBuilder(MyTexts.EAC_PRISON_LOCINTEL2_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_PRISON_OPENACCESS_Name] = new StringBuilder(MyTexts.EAC_PRISON_OPENACCESS_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_PRISON_OPENACCESS_Description] = new StringBuilder(MyTexts.EAC_PRISON_OPENACCESS_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_PRISON_SECURITYOFF_Name] = new StringBuilder(MyTexts.EAC_PRISON_SECURITYOFF_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_PRISON_SECURITYOFF_Description] = new StringBuilder(MyTexts.EAC_PRISON_SECURITYOFF_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_PRISON_MARCUSCELL_Name] = new StringBuilder(MyTexts.EAC_PRISON_MARCUSCELL_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_PRISON_MARCUSCELL_Description] = new StringBuilder(MyTexts.EAC_PRISON_MARCUSCELL_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_PRISON_COVERMARCUS_Name] = new StringBuilder(MyTexts.EAC_PRISON_COVERMARCUS_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_PRISON_COVERMARCUS_Description] = new StringBuilder(MyTexts.EAC_PRISON_COVERMARCUS_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_PRISON_GETARMS_Name] = new StringBuilder(MyTexts.EAC_PRISON_GETARMS_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_PRISON_GETARMS_Description] = new StringBuilder(MyTexts.EAC_PRISON_GETARMS_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_PRISON_FIGHTOUT_Name] = new StringBuilder(MyTexts.EAC_PRISON_FIGHTOUT_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_PRISON_FIGHTOUT_Description] = new StringBuilder(MyTexts.EAC_PRISON_FIGHTOUT_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_PRISON_CRUSHREINFORCEMENTS_Name] = new StringBuilder(MyTexts.EAC_PRISON_CRUSHREINFORCEMENTS_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_PRISON_CRUSHREINFORCEMENTS_Description] = new StringBuilder(MyTexts.EAC_PRISON_CRUSHREINFORCEMENTS_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_PRISON_MEETINGPOINT_Name] = new StringBuilder(MyTexts.EAC_PRISON_MEETINGPOINT_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EAC_PRISON_MEETINGPOINT_Description] = new StringBuilder(MyTexts.EAC_PRISON_MEETINGPOINT_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.DownloadFailed] = new StringBuilder(MyTexts.DownloadFailed);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.TWIN_TOWERS_SABOTAGE_Name] = new StringBuilder(MyTexts.TWIN_TOWERS_SABOTAGE_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.TWIN_TOWERS_SABOTAGE_Description] = new StringBuilder(MyTexts.TWIN_TOWERS_SABOTAGE_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.TWIN_TOWERS_RANDEVOUZ_Name] = new StringBuilder(MyTexts.TWIN_TOWERS_RANDEVOUZ_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.TWIN_TOWERS_RANDEVOUZ_Description] = new StringBuilder(MyTexts.TWIN_TOWERS_RANDEVOUZ_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.TWIN_TOWERS_ASSAULT_Name] = new StringBuilder(MyTexts.TWIN_TOWERS_ASSAULT_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.TWIN_TOWERS_ASSAULT_Description] = new StringBuilder(MyTexts.TWIN_TOWERS_ASSAULT_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.TWIN_TOWERS_HACKING_Name] = new StringBuilder(MyTexts.TWIN_TOWERS_HACKING_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.TWIN_TOWERS_HACKING_Description] = new StringBuilder(MyTexts.TWIN_TOWERS_HACKING_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.TWIN_TOWERS_JAMMER_Name] = new StringBuilder(MyTexts.TWIN_TOWERS_JAMMER_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.TWIN_TOWERS_JAMMER_Description] = new StringBuilder(MyTexts.TWIN_TOWERS_JAMMER_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Jammer] = new StringBuilder(MyTexts.Jammer);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.TWIN_TOWERS_HACKING_CONTINUE_Name] = new StringBuilder(MyTexts.TWIN_TOWERS_HACKING_CONTINUE_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.TWIN_TOWERS_HACKING_CONTINUE_Description] = new StringBuilder(MyTexts.TWIN_TOWERS_HACKING_CONTINUE_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.TWIN_TOWERS_RAILGUN1_Name] = new StringBuilder(MyTexts.TWIN_TOWERS_RAILGUN1_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.TWIN_TOWERS_RAILGUN1_Description] = new StringBuilder(MyTexts.TWIN_TOWERS_RAILGUN1_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.TWIN_TOWERS_RAILGUN2_Name] = new StringBuilder(MyTexts.TWIN_TOWERS_RAILGUN2_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.TWIN_TOWERS_RAILGUN2_Description] = new StringBuilder(MyTexts.TWIN_TOWERS_RAILGUN2_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.TWIN_TOWERS_GOTO_RIGHT_Name] = new StringBuilder(MyTexts.TWIN_TOWERS_GOTO_RIGHT_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.TWIN_TOWERS_GOTO_RIGHT_Description] = new StringBuilder(MyTexts.TWIN_TOWERS_GOTO_RIGHT_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.TWIN_TOWERS_GENERATOR_Name] = new StringBuilder(MyTexts.TWIN_TOWERS_GENERATOR_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.TWIN_TOWERS_GENERATOR_Description] = new StringBuilder(MyTexts.TWIN_TOWERS_GENERATOR_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.TWIN_TOWERS_COMMAND_Name] = new StringBuilder(MyTexts.TWIN_TOWERS_COMMAND_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.TWIN_TOWERS_COMMAND_Description] = new StringBuilder(MyTexts.TWIN_TOWERS_COMMAND_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.TWIN_TOWERS_WAIT_Name] = new StringBuilder(MyTexts.TWIN_TOWERS_WAIT_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.TWIN_TOWERS_WAIT_Description] = new StringBuilder(MyTexts.TWIN_TOWERS_WAIT_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.TWIN_TOWERS_MOTHERSHIP1_Name] = new StringBuilder(MyTexts.TWIN_TOWERS_MOTHERSHIP1_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.TWIN_TOWERS_MOTHERSHIP1_Description] = new StringBuilder(MyTexts.TWIN_TOWERS_MOTHERSHIP1_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.TWIN_TOWERS_MOTHERSHIP1_V2_Name] = new StringBuilder(MyTexts.TWIN_TOWERS_MOTHERSHIP1_V2_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.TWIN_TOWERS_MOTHERSHIP1_V2_Description] = new StringBuilder(MyTexts.TWIN_TOWERS_MOTHERSHIP1_V2_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Explosives] = new StringBuilder(MyTexts.Explosives);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.REICHSTAG_C_FOR_Name] = new StringBuilder(MyTexts.REICHSTAG_C_FOR_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.REICHSTAG_C_FOR_Description] = new StringBuilder(MyTexts.REICHSTAG_C_FOR_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.REICHSTAG_C_GO_TO_SHIPYARD_Name] = new StringBuilder(MyTexts.REICHSTAG_C_GO_TO_SHIPYARD_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.REICHSTAG_C_GO_TO_SHIPYARD_Description] = new StringBuilder(MyTexts.REICHSTAG_C_GO_TO_SHIPYARD_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.REICHSTAG_C_CHANGESHIP_Name] = new StringBuilder(MyTexts.REICHSTAG_C_CHANGESHIP_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.REICHSTAG_C_CHANGESHIP_Description] = new StringBuilder(MyTexts.REICHSTAG_C_CHANGESHIP_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.REICHSTAG_C_WEAPONS_Name] = new StringBuilder(MyTexts.REICHSTAG_C_WEAPONS_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.REICHSTAG_C_WEAPONS_Description] = new StringBuilder(MyTexts.REICHSTAG_C_WEAPONS_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.REICHSTAG_C_GO_TO_HANGAR_Name] = new StringBuilder(MyTexts.REICHSTAG_C_GO_TO_HANGAR_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.REICHSTAG_C_GO_TO_HANGAR_Description] = new StringBuilder(MyTexts.REICHSTAG_C_GO_TO_HANGAR_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.REICHSTAG_C_MOTHERSHIP_Name] = new StringBuilder(MyTexts.REICHSTAG_C_MOTHERSHIP_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.REICHSTAG_C_MOTHERSHIP_Description] = new StringBuilder(MyTexts.REICHSTAG_C_MOTHERSHIP_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NAZI_BIO_LAB_SAMPLES_BIOMACH_1_Name] = new StringBuilder(MyTexts.NAZI_BIO_LAB_SAMPLES_BIOMACH_1_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NAZI_BIO_LAB_SAMPLES_BIOMACH_1_Description] = new StringBuilder(MyTexts.NAZI_BIO_LAB_SAMPLES_BIOMACH_1_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NAZI_BIO_LAB_GET_INSIDE_Name] = new StringBuilder(MyTexts.NAZI_BIO_LAB_GET_INSIDE_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NAZI_BIO_LAB_GET_INSIDE_Description] = new StringBuilder(MyTexts.NAZI_BIO_LAB_GET_INSIDE_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NAZI_BIO_LAB_SAMPLES_ORGANIC_Name] = new StringBuilder(MyTexts.NAZI_BIO_LAB_SAMPLES_ORGANIC_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NAZI_BIO_LAB_SAMPLES_ORGANIC_Description] = new StringBuilder(MyTexts.NAZI_BIO_LAB_SAMPLES_ORGANIC_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NAZI_BIO_LAB_BLUEPRINTS_BIOMACH_Name] = new StringBuilder(MyTexts.NAZI_BIO_LAB_BLUEPRINTS_BIOMACH_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NAZI_BIO_LAB_BLUEPRINTS_BIOMACH_Description] = new StringBuilder(MyTexts.NAZI_BIO_LAB_BLUEPRINTS_BIOMACH_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NAZI_BIO_LAB_GET_OUT_Name] = new StringBuilder(MyTexts.NAZI_BIO_LAB_GET_OUT_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NAZI_BIO_LAB_GET_OUT_Description] = new StringBuilder(MyTexts.NAZI_BIO_LAB_GET_OUT_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NAZI_BIO_LAB_DESTROY_Name] = new StringBuilder(MyTexts.NAZI_BIO_LAB_DESTROY_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NAZI_BIO_LAB_DESTROY_Description] = new StringBuilder(MyTexts.NAZI_BIO_LAB_DESTROY_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NAZI_BIO_LAB_REACH_MEETING_POINT_Name] = new StringBuilder(MyTexts.NAZI_BIO_LAB_REACH_MEETING_POINT_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NAZI_BIO_LAB_REACH_MEETING_POINT_Description] = new StringBuilder(MyTexts.NAZI_BIO_LAB_REACH_MEETING_POINT_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.REICHSTAG_A_GET_TO_MAIN_BUILDING_Name] = new StringBuilder(MyTexts.REICHSTAG_A_GET_TO_MAIN_BUILDING_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.REICHSTAG_A_GET_TO_MAIN_BUILDING_Description] = new StringBuilder(MyTexts.REICHSTAG_A_GET_TO_MAIN_BUILDING_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.REICHSTAG_A_MEET_COLONEL_Name] = new StringBuilder(MyTexts.REICHSTAG_A_MEET_COLONEL_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.REICHSTAG_A_MEET_COLONEL_Description] = new StringBuilder(MyTexts.REICHSTAG_A_MEET_COLONEL_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_TRANSMITTER_LOOT_CARGO_Name] = new StringBuilder(MyTexts.CHINESE_TRANSMITTER_LOOT_CARGO_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_TRANSMITTER_LOOT_CARGO_Description] = new StringBuilder(MyTexts.CHINESE_TRANSMITTER_LOOT_CARGO_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_TRANSMITTER_DIALOGUE_1_Name] = new StringBuilder(MyTexts.CHINESE_TRANSMITTER_DIALOGUE_1_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_TRANSMITTER_DIALOGUE_1_Description] = new StringBuilder(MyTexts.CHINESE_TRANSMITTER_DIALOGUE_1_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_TRANSMITTER_CHECKPOINT_Name] = new StringBuilder(MyTexts.CHINESE_TRANSMITTER_CHECKPOINT_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_TRANSMITTER_CHECKPOINT_Description] = new StringBuilder(MyTexts.CHINESE_TRANSMITTER_CHECKPOINT_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_TRANSMITTER_FIND_SECURITY_CONTROL_Name] = new StringBuilder(MyTexts.CHINESE_TRANSMITTER_FIND_SECURITY_CONTROL_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_TRANSMITTER_FIND_SECURITY_CONTROL_Description] = new StringBuilder(MyTexts.CHINESE_TRANSMITTER_FIND_SECURITY_CONTROL_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_TRANSMITTER_DIALOGUE_3_Name] = new StringBuilder(MyTexts.CHINESE_TRANSMITTER_DIALOGUE_3_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_TRANSMITTER_DIALOGUE_3_Description] = new StringBuilder(MyTexts.CHINESE_TRANSMITTER_DIALOGUE_3_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_TRANSMITTER_DESTROY_SECURITY_CONTROL_Name] = new StringBuilder(MyTexts.CHINESE_TRANSMITTER_DESTROY_SECURITY_CONTROL_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_TRANSMITTER_DESTROY_SECURITY_CONTROL_Description] = new StringBuilder(MyTexts.CHINESE_TRANSMITTER_DESTROY_SECURITY_CONTROL_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_TRANSMITTER_FIND_CIC_Name] = new StringBuilder(MyTexts.CHINESE_TRANSMITTER_FIND_CIC_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_TRANSMITTER_FIND_CIC_Description] = new StringBuilder(MyTexts.CHINESE_TRANSMITTER_FIND_CIC_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_TRANSMITTER_DIALOGUE_5_Name] = new StringBuilder(MyTexts.CHINESE_TRANSMITTER_DIALOGUE_5_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_TRANSMITTER_DIALOGUE_5_Description] = new StringBuilder(MyTexts.CHINESE_TRANSMITTER_DIALOGUE_5_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_TRANSMITTER_OPEN_CIC_Name] = new StringBuilder(MyTexts.CHINESE_TRANSMITTER_OPEN_CIC_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_TRANSMITTER_OPEN_CIC_Description] = new StringBuilder(MyTexts.CHINESE_TRANSMITTER_OPEN_CIC_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_TRANSMITTER_DIALOGUE_6_Name] = new StringBuilder(MyTexts.CHINESE_TRANSMITTER_DIALOGUE_6_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_TRANSMITTER_DIALOGUE_6_Description] = new StringBuilder(MyTexts.CHINESE_TRANSMITTER_DIALOGUE_6_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_TRANSMITTER_PLACE_DEVICE_Name] = new StringBuilder(MyTexts.CHINESE_TRANSMITTER_PLACE_DEVICE_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_TRANSMITTER_PLACE_DEVICE_Description] = new StringBuilder(MyTexts.CHINESE_TRANSMITTER_PLACE_DEVICE_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_TRANSMITTER_ESCAPE_Name] = new StringBuilder(MyTexts.CHINESE_TRANSMITTER_ESCAPE_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_TRANSMITTER_ESCAPE_Description] = new StringBuilder(MyTexts.CHINESE_TRANSMITTER_ESCAPE_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_TRANSMITTER_ESCAPE3_Name] = new StringBuilder(MyTexts.CHINESE_TRANSMITTER_ESCAPE3_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_TRANSMITTER_ESCAPE3_Description] = new StringBuilder(MyTexts.CHINESE_TRANSMITTER_ESCAPE3_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_PLANT_SAVE_BARTH_Name] = new StringBuilder(MyTexts.BARTHS_MOON_PLANT_SAVE_BARTH_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_PLANT_SAVE_BARTH_Description] = new StringBuilder(MyTexts.BARTHS_MOON_PLANT_SAVE_BARTH_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_PLANT_KILL_ATTACKERS_Name] = new StringBuilder(MyTexts.BARTHS_MOON_PLANT_KILL_ATTACKERS_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_PLANT_KILL_ATTACKERS_Description] = new StringBuilder(MyTexts.BARTHS_MOON_PLANT_KILL_ATTACKERS_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_PLANT_DEFENCE_Name] = new StringBuilder(MyTexts.BARTHS_MOON_PLANT_DEFENCE_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_PLANT_DEFENCE_Description] = new StringBuilder(MyTexts.BARTHS_MOON_PLANT_DEFENCE_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_PLANT_BUILD_DEFENCE_LINE_Name] = new StringBuilder(MyTexts.BARTHS_MOON_PLANT_BUILD_DEFENCE_LINE_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_PLANT_BUILD_DEFENCE_LINE_Description] = new StringBuilder(MyTexts.BARTHS_MOON_PLANT_BUILD_DEFENCE_LINE_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_PLANT_PROTECT_BARTH_Name] = new StringBuilder(MyTexts.BARTHS_MOON_PLANT_PROTECT_BARTH_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_PLANT_PROTECT_BARTH_Description] = new StringBuilder(MyTexts.BARTHS_MOON_PLANT_PROTECT_BARTH_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_PLANT_PROTECT_MADELYN_Name] = new StringBuilder(MyTexts.BARTHS_MOON_PLANT_PROTECT_MADELYN_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_PLANT_PROTECT_MADELYN_Description] = new StringBuilder(MyTexts.BARTHS_MOON_PLANT_PROTECT_MADELYN_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_PLANT_ENEMY_Name] = new StringBuilder(MyTexts.BARTHS_MOON_PLANT_ENEMY_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_PLANT_ENEMY_Description] = new StringBuilder(MyTexts.BARTHS_MOON_PLANT_ENEMY_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_PLANT_DESTROY_GENERATORS_Name] = new StringBuilder(MyTexts.BARTHS_MOON_PLANT_DESTROY_GENERATORS_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_PLANT_DESTROY_GENERATORS_Description] = new StringBuilder(MyTexts.BARTHS_MOON_PLANT_DESTROY_GENERATORS_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_PLANT_GET_NEEDED_COMPONENTS_Name] = new StringBuilder(MyTexts.BARTHS_MOON_PLANT_GET_NEEDED_COMPONENTS_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_PLANT_GET_NEEDED_COMPONENTS_Description] = new StringBuilder(MyTexts.BARTHS_MOON_PLANT_GET_NEEDED_COMPONENTS_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_PLANT_CONSTRUCT_DETECTORS_Name] = new StringBuilder(MyTexts.BARTHS_MOON_PLANT_CONSTRUCT_DETECTORS_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_PLANT_CONSTRUCT_DETECTORS_Description] = new StringBuilder(MyTexts.BARTHS_MOON_PLANT_CONSTRUCT_DETECTORS_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_PLANT_TALK_BARTH_Name] = new StringBuilder(MyTexts.BARTHS_MOON_PLANT_TALK_BARTH_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_PLANT_TALK_BARTH_Description] = new StringBuilder(MyTexts.BARTHS_MOON_PLANT_TALK_BARTH_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RepairDamagedTurrets] = new StringBuilder(MyTexts.RepairDamagedTurrets);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PortableTurrets] = new StringBuilder(MyTexts.PortableTurrets);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BuildTurret] = new StringBuilder(MyTexts.BuildTurret);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RIFT_GOTO_GETSUPPLIES1_Name] = new StringBuilder(MyTexts.RIFT_GOTO_GETSUPPLIES1_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RIFT_GOTO_GETSUPPLIES1_Description] = new StringBuilder(MyTexts.RIFT_GOTO_GETSUPPLIES1_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RIFT_GOTO_10_Name] = new StringBuilder(MyTexts.RIFT_GOTO_10_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RIFT_GOTO_10_Description] = new StringBuilder(MyTexts.RIFT_GOTO_10_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RIFT_URANITE_Name] = new StringBuilder(MyTexts.RIFT_URANITE_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RIFT_URANITE_Description] = new StringBuilder(MyTexts.RIFT_URANITE_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RIFT_GOTO_30_Name] = new StringBuilder(MyTexts.RIFT_GOTO_30_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RIFT_GOTO_30_Description] = new StringBuilder(MyTexts.RIFT_GOTO_30_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RIME_CONVINCE_GET_FRANCIS_REEF_Name] = new StringBuilder(MyTexts.RIME_CONVINCE_GET_FRANCIS_REEF_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RIME_CONVINCE_GET_FRANCIS_REEF_Description] = new StringBuilder(MyTexts.RIME_CONVINCE_GET_FRANCIS_REEF_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RIME_CONVINCE_GO_TO_DUPLEX_Name] = new StringBuilder(MyTexts.RIME_CONVINCE_GO_TO_DUPLEX_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RIME_CONVINCE_GO_TO_DUPLEX_Description] = new StringBuilder(MyTexts.RIME_CONVINCE_GO_TO_DUPLEX_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.TRADE_STATION_EAC_DIALOGUE_Name] = new StringBuilder(MyTexts.TRADE_STATION_EAC_DIALOGUE_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.TRADE_STATION_EAC_DIALOGUE_Description] = new StringBuilder(MyTexts.TRADE_STATION_EAC_DIALOGUE_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SLAVER_BASE_1_DIALOG_9_Name] = new StringBuilder(MyTexts.SLAVER_BASE_1_DIALOG_9_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SLAVER_BASE_1_DIALOG_9_Description] = new StringBuilder(MyTexts.SLAVER_BASE_1_DIALOG_9_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JUNKYARD_CONVINCE_D_GO_TO_MARCUS_Name] = new StringBuilder(MyTexts.JUNKYARD_CONVINCE_D_GO_TO_MARCUS_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JUNKYARD_CONVINCE_D_GO_TO_MARCUS_Description] = new StringBuilder(MyTexts.JUNKYARD_CONVINCE_D_GO_TO_MARCUS_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JUNKYARD_CONVINCE_D_RETURN_TO_SMUGGLER_Name] = new StringBuilder(MyTexts.JUNKYARD_CONVINCE_D_RETURN_TO_SMUGGLER_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JUNKYARD_CONVINCE_D_RETURN_TO_SMUGGLER_Description] = new StringBuilder(MyTexts.JUNKYARD_CONVINCE_D_RETURN_TO_SMUGGLER_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_ESCAPE_SPEAK_WITH_MADELYN_Name] = new StringBuilder(MyTexts.CHINESE_ESCAPE_SPEAK_WITH_MADELYN_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_ESCAPE_SPEAK_WITH_MADELYN_Description] = new StringBuilder(MyTexts.CHINESE_ESCAPE_SPEAK_WITH_MADELYN_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JUNKYARD_CONVINCE_D_FIND_INFORMATOR_Name] = new StringBuilder(MyTexts.JUNKYARD_CONVINCE_D_FIND_INFORMATOR_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JUNKYARD_CONVINCE_D_FIND_INFORMATOR_Description] = new StringBuilder(MyTexts.JUNKYARD_CONVINCE_D_FIND_INFORMATOR_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RIME_CONVINCE_CONTACT_APPEARS_Name] = new StringBuilder(MyTexts.RIME_CONVINCE_CONTACT_APPEARS_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RIME_CONVINCE_CONTACT_APPEARS_Description] = new StringBuilder(MyTexts.RIME_CONVINCE_CONTACT_APPEARS_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RIME_CONVINCE_CARGO_COLLECTED_DIALOG_Name] = new StringBuilder(MyTexts.RIME_CONVINCE_CARGO_COLLECTED_DIALOG_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RIME_CONVINCE_CARGO_COLLECTED_DIALOG_Description] = new StringBuilder(MyTexts.RIME_CONVINCE_CARGO_COLLECTED_DIALOG_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_ESCAPE_GET_CLOSER_Name] = new StringBuilder(MyTexts.CHINESE_ESCAPE_GET_CLOSER_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_ESCAPE_GET_CLOSER_Description] = new StringBuilder(MyTexts.CHINESE_ESCAPE_GET_CLOSER_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_ESCAPE_DEFEND_SHIP_Name] = new StringBuilder(MyTexts.CHINESE_ESCAPE_DEFEND_SHIP_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_ESCAPE_DEFEND_SHIP_Description] = new StringBuilder(MyTexts.CHINESE_ESCAPE_DEFEND_SHIP_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RIME_CONVINCE_RETURN_TO_POSITION_Name] = new StringBuilder(MyTexts.RIME_CONVINCE_RETURN_TO_POSITION_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RIME_CONVINCE_RETURN_TO_POSITION_Description] = new StringBuilder(MyTexts.RIME_CONVINCE_RETURN_TO_POSITION_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RIME_CONVINCE_FOLLOW_CONTACT_Name] = new StringBuilder(MyTexts.RIME_CONVINCE_FOLLOW_CONTACT_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RIME_CONVINCE_FOLLOW_CONTACT_Description] = new StringBuilder(MyTexts.RIME_CONVINCE_FOLLOW_CONTACT_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RIME_CONVINCE_FACTORY_FOUND_DIALOGUE_Name] = new StringBuilder(MyTexts.RIME_CONVINCE_FACTORY_FOUND_DIALOGUE_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RIME_CONVINCE_FACTORY_FOUND_DIALOGUE_Description] = new StringBuilder(MyTexts.RIME_CONVINCE_FACTORY_FOUND_DIALOGUE_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RIME_CONVINCE_DESTROY_FACTORY_BOTS_Name] = new StringBuilder(MyTexts.RIME_CONVINCE_DESTROY_FACTORY_BOTS_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RIME_CONVINCE_DESTROY_FACTORY_BOTS_Description] = new StringBuilder(MyTexts.RIME_CONVINCE_DESTROY_FACTORY_BOTS_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RIME_CONVINCE_COLLECT_CARGO_Name] = new StringBuilder(MyTexts.RIME_CONVINCE_COLLECT_CARGO_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RIME_CONVINCE_COLLECT_CARGO_Description] = new StringBuilder(MyTexts.RIME_CONVINCE_COLLECT_CARGO_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RIME_CONVINCE_FLY_TO_VESSEL_Name] = new StringBuilder(MyTexts.RIME_CONVINCE_FLY_TO_VESSEL_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RIME_CONVINCE_FLY_TO_VESSEL_Description] = new StringBuilder(MyTexts.RIME_CONVINCE_FLY_TO_VESSEL_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RIME_CONVINCE_WAIT_FOR_THE_MOMENT_Name] = new StringBuilder(MyTexts.RIME_CONVINCE_WAIT_FOR_THE_MOMENT_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RIME_CONVINCE_WAIT_FOR_THE_MOMENT_Description] = new StringBuilder(MyTexts.RIME_CONVINCE_WAIT_FOR_THE_MOMENT_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RIME_CONVINCE_PLANT_CARGO_Name] = new StringBuilder(MyTexts.RIME_CONVINCE_PLANT_CARGO_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RIME_CONVINCE_PLANT_CARGO_Description] = new StringBuilder(MyTexts.RIME_CONVINCE_PLANT_CARGO_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RIME_CONVINCE_GET_OUT_OF_THE_VESSEL_Name] = new StringBuilder(MyTexts.RIME_CONVINCE_GET_OUT_OF_THE_VESSEL_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RIME_CONVINCE_GET_OUT_OF_THE_VESSEL_Description] = new StringBuilder(MyTexts.RIME_CONVINCE_GET_OUT_OF_THE_VESSEL_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RIME_CONVINCE_GO_BACK_TO_FRANCIS_Name] = new StringBuilder(MyTexts.RIME_CONVINCE_GO_BACK_TO_FRANCIS_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RIME_CONVINCE_GO_BACK_TO_FRANCIS_Description] = new StringBuilder(MyTexts.RIME_CONVINCE_GO_BACK_TO_FRANCIS_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Mine] = new StringBuilder(MyTexts.Mine);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FORT_VALIANT_C_CAPTAIN_Name] = new StringBuilder(MyTexts.FORT_VALIANT_C_CAPTAIN_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FORT_VALIANT_C_CAPTAIN_Description] = new StringBuilder(MyTexts.FORT_VALIANT_C_CAPTAIN_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FORT_VALIANT_C_UPPER_FLOOR_Name] = new StringBuilder(MyTexts.FORT_VALIANT_C_UPPER_FLOOR_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FORT_VALIANT_C_UPPER_FLOOR_Description] = new StringBuilder(MyTexts.FORT_VALIANT_C_UPPER_FLOOR_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FORT_VALIANT_C_EQUIP_TALK_Name] = new StringBuilder(MyTexts.FORT_VALIANT_C_EQUIP_TALK_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FORT_VALIANT_C_EQUIP_TALK_Description] = new StringBuilder(MyTexts.FORT_VALIANT_C_EQUIP_TALK_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FORT_VALIANT_C_EQUIP_Name] = new StringBuilder(MyTexts.FORT_VALIANT_C_EQUIP_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FORT_VALIANT_C_EQUIP_Description] = new StringBuilder(MyTexts.FORT_VALIANT_C_EQUIP_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FORT_VALIANT_C_MEET_OFFICIALS_Name] = new StringBuilder(MyTexts.FORT_VALIANT_C_MEET_OFFICIALS_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FORT_VALIANT_C_MEET_OFFICIALS_Description] = new StringBuilder(MyTexts.FORT_VALIANT_C_MEET_OFFICIALS_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FORT_VALIANT_C_LEAVE_OFFICIALS_Name] = new StringBuilder(MyTexts.FORT_VALIANT_C_LEAVE_OFFICIALS_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FORT_VALIANT_C_LEAVE_OFFICIALS_Description] = new StringBuilder(MyTexts.FORT_VALIANT_C_LEAVE_OFFICIALS_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FORT_VALIANT_C_LEAVE_FOLLOW_Name] = new StringBuilder(MyTexts.FORT_VALIANT_C_LEAVE_FOLLOW_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FORT_VALIANT_C_LEAVE_FOLLOW_Description] = new StringBuilder(MyTexts.FORT_VALIANT_C_LEAVE_FOLLOW_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FORT_VALIANT_C_SPEAK_SIR_Name] = new StringBuilder(MyTexts.FORT_VALIANT_C_SPEAK_SIR_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FORT_VALIANT_C_SPEAK_SIR_Description] = new StringBuilder(MyTexts.FORT_VALIANT_C_SPEAK_SIR_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FORT_VALIANT_C_GET_EQUP_CARGO_Name] = new StringBuilder(MyTexts.FORT_VALIANT_C_GET_EQUP_CARGO_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FORT_VALIANT_C_GET_EQUP_CARGO_Description] = new StringBuilder(MyTexts.FORT_VALIANT_C_GET_EQUP_CARGO_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FORT_VALIANT_C_FOLLOW_FIND_VENTILATION_Name] = new StringBuilder(MyTexts.FORT_VALIANT_C_FOLLOW_FIND_VENTILATION_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FORT_VALIANT_C_FOLLOW_FIND_VENTILATION_Description] = new StringBuilder(MyTexts.FORT_VALIANT_C_FOLLOW_FIND_VENTILATION_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FORT_VALIANT_C_FOLLOW_TURN_OFF_GATE_Name] = new StringBuilder(MyTexts.FORT_VALIANT_C_FOLLOW_TURN_OFF_GATE_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FORT_VALIANT_C_FOLLOW_TURN_OFF_GATE_Description] = new StringBuilder(MyTexts.FORT_VALIANT_C_FOLLOW_TURN_OFF_GATE_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FORT_VALIANT_C_SCANNERS1_Name] = new StringBuilder(MyTexts.FORT_VALIANT_C_SCANNERS1_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FORT_VALIANT_C_SCANNERS1_Description] = new StringBuilder(MyTexts.FORT_VALIANT_C_SCANNERS1_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FORT_VALIANT_C_SCANNERS2_Name] = new StringBuilder(MyTexts.FORT_VALIANT_C_SCANNERS2_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FORT_VALIANT_C_SCANNERS2_Description] = new StringBuilder(MyTexts.FORT_VALIANT_C_SCANNERS2_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FORT_VALIANT_C_SCANNERS23_Name] = new StringBuilder(MyTexts.FORT_VALIANT_C_SCANNERS23_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FORT_VALIANT_C_SCANNERS23_Description] = new StringBuilder(MyTexts.FORT_VALIANT_C_SCANNERS23_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FORT_VALIANT_C_TAKE_ARTEFACT_Name] = new StringBuilder(MyTexts.FORT_VALIANT_C_TAKE_ARTEFACT_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FORT_VALIANT_C_TAKE_ARTEFACT_Description] = new StringBuilder(MyTexts.FORT_VALIANT_C_TAKE_ARTEFACT_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FORT_VALIANT_C_VALUT_Name] = new StringBuilder(MyTexts.FORT_VALIANT_C_VALUT_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FORT_VALIANT_C_VALUT_Description] = new StringBuilder(MyTexts.FORT_VALIANT_C_VALUT_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FORT_VALIANT_C_TURN_OFF_SCANNER_Name] = new StringBuilder(MyTexts.FORT_VALIANT_C_TURN_OFF_SCANNER_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FORT_VALIANT_C_TURN_OFF_SCANNER_Description] = new StringBuilder(MyTexts.FORT_VALIANT_C_TURN_OFF_SCANNER_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FORT_VALIANT_C_SCANNERS4_Name] = new StringBuilder(MyTexts.FORT_VALIANT_C_SCANNERS4_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FORT_VALIANT_C_SCANNERS4_Description] = new StringBuilder(MyTexts.FORT_VALIANT_C_SCANNERS4_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FORT_VALIANT_C_TOP_ELEVATOR_Name] = new StringBuilder(MyTexts.FORT_VALIANT_C_TOP_ELEVATOR_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FORT_VALIANT_C_TOP_ELEVATOR_Description] = new StringBuilder(MyTexts.FORT_VALIANT_C_TOP_ELEVATOR_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FORT_VALIANT_C_VENT_SYSTEM_Name] = new StringBuilder(MyTexts.FORT_VALIANT_C_VENT_SYSTEM_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FORT_VALIANT_C_VENT_SYSTEM_Description] = new StringBuilder(MyTexts.FORT_VALIANT_C_VENT_SYSTEM_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FORT_VALIANT_C_CATACOMBS_Name] = new StringBuilder(MyTexts.FORT_VALIANT_C_CATACOMBS_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FORT_VALIANT_C_CATACOMBS_Description] = new StringBuilder(MyTexts.FORT_VALIANT_C_CATACOMBS_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FORT_VALIANT_C_PICK_UP_EQUIP_Name] = new StringBuilder(MyTexts.FORT_VALIANT_C_PICK_UP_EQUIP_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FORT_VALIANT_C_PICK_UP_EQUIP_Description] = new StringBuilder(MyTexts.FORT_VALIANT_C_PICK_UP_EQUIP_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FORT_VALIANT_B_FLY_ONE_Name] = new StringBuilder(MyTexts.FORT_VALIANT_B_FLY_ONE_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FORT_VALIANT_B_FLY_ONE_Description] = new StringBuilder(MyTexts.FORT_VALIANT_B_FLY_ONE_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FORT_VALIANT_B_MEET_CAPTAIN_Name] = new StringBuilder(MyTexts.FORT_VALIANT_B_MEET_CAPTAIN_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FORT_VALIANT_B_MEET_CAPTAIN_Description] = new StringBuilder(MyTexts.FORT_VALIANT_B_MEET_CAPTAIN_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FORT_VALIANT_B_VISIT_VENDOR_Name] = new StringBuilder(MyTexts.FORT_VALIANT_B_VISIT_VENDOR_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FORT_VALIANT_B_VISIT_VENDOR_Description] = new StringBuilder(MyTexts.FORT_VALIANT_B_VISIT_VENDOR_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SLAVER_BASE_1_DIALOG_1_Name] = new StringBuilder(MyTexts.SLAVER_BASE_1_DIALOG_1_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SLAVER_BASE_1_DIALOG_1_Description] = new StringBuilder(MyTexts.SLAVER_BASE_1_DIALOG_1_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SLAVER_BASE_1_DESTROY_GENERATOR_Name] = new StringBuilder(MyTexts.SLAVER_BASE_1_DESTROY_GENERATOR_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SLAVER_BASE_1_DESTROY_GENERATOR_Description] = new StringBuilder(MyTexts.SLAVER_BASE_1_DESTROY_GENERATOR_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SLAVER_BASE_1_DIALOG_2_Name] = new StringBuilder(MyTexts.SLAVER_BASE_1_DIALOG_2_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SLAVER_BASE_1_DIALOG_2_Description] = new StringBuilder(MyTexts.SLAVER_BASE_1_DIALOG_2_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SLAVER_BASE_1_DESTROY_BATTERIES_Name] = new StringBuilder(MyTexts.SLAVER_BASE_1_DESTROY_BATTERIES_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SLAVER_BASE_1_DESTROY_BATTERIES_Description] = new StringBuilder(MyTexts.SLAVER_BASE_1_DESTROY_BATTERIES_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SLAVER_BASE_1_FIND_PRISON_Name] = new StringBuilder(MyTexts.SLAVER_BASE_1_FIND_PRISON_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SLAVER_BASE_1_FIND_PRISON_Description] = new StringBuilder(MyTexts.SLAVER_BASE_1_FIND_PRISON_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SLAVER_BASE_1_FREE_SLAVES_Name] = new StringBuilder(MyTexts.SLAVER_BASE_1_FREE_SLAVES_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SLAVER_BASE_1_FREE_SLAVES_Description] = new StringBuilder(MyTexts.SLAVER_BASE_1_FREE_SLAVES_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SLAVER_BASE_1_HACK_HANGAR_Name] = new StringBuilder(MyTexts.SLAVER_BASE_1_HACK_HANGAR_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SLAVER_BASE_1_HACK_HANGAR_Description] = new StringBuilder(MyTexts.SLAVER_BASE_1_HACK_HANGAR_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SLAVER_BASE_1_FREE_SLAVES_2_Name] = new StringBuilder(MyTexts.SLAVER_BASE_1_FREE_SLAVES_2_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SLAVER_BASE_1_FREE_SLAVES_2_Description] = new StringBuilder(MyTexts.SLAVER_BASE_1_FREE_SLAVES_2_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SLAVER_BASE_1_DIALOG_6_Name] = new StringBuilder(MyTexts.SLAVER_BASE_1_DIALOG_6_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SLAVER_BASE_1_DIALOG_6_Description] = new StringBuilder(MyTexts.SLAVER_BASE_1_DIALOG_6_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SLAVER_BASE_1_FIND_SLAVES_Name] = new StringBuilder(MyTexts.SLAVER_BASE_1_FIND_SLAVES_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SLAVER_BASE_1_FIND_SLAVES_Description] = new StringBuilder(MyTexts.SLAVER_BASE_1_FIND_SLAVES_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SLAVER_BASE_1_DIALOG_7_Name] = new StringBuilder(MyTexts.SLAVER_BASE_1_DIALOG_7_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SLAVER_BASE_1_DIALOG_7_Description] = new StringBuilder(MyTexts.SLAVER_BASE_1_DIALOG_7_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SLAVER_BASE_1_DESTROY_ENEMIES_Name] = new StringBuilder(MyTexts.SLAVER_BASE_1_DESTROY_ENEMIES_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SLAVER_BASE_1_DESTROY_ENEMIES_Description] = new StringBuilder(MyTexts.SLAVER_BASE_1_DESTROY_ENEMIES_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SLAVER_BASE_1_HACK_NUKE_Name] = new StringBuilder(MyTexts.SLAVER_BASE_1_HACK_NUKE_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SLAVER_BASE_1_HACK_NUKE_Description] = new StringBuilder(MyTexts.SLAVER_BASE_1_HACK_NUKE_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SLAVER_BASE_1_DIALOG_10_Name] = new StringBuilder(MyTexts.SLAVER_BASE_1_DIALOG_10_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SLAVER_BASE_1_DIALOG_10_Description] = new StringBuilder(MyTexts.SLAVER_BASE_1_DIALOG_10_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FORT_VALIANT_FLY_ONE_Name] = new StringBuilder(MyTexts.FORT_VALIANT_FLY_ONE_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FORT_VALIANT_FLY_ONE_Description] = new StringBuilder(MyTexts.FORT_VALIANT_FLY_ONE_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FORT_VALIANT_SPEAK_GATE_KEEPER_Name] = new StringBuilder(MyTexts.FORT_VALIANT_SPEAK_GATE_KEEPER_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FORT_VALIANT_SPEAK_GATE_KEEPER_Description] = new StringBuilder(MyTexts.FORT_VALIANT_SPEAK_GATE_KEEPER_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FORT_VALIANT_MEET_CAPTAIN_Name] = new StringBuilder(MyTexts.FORT_VALIANT_MEET_CAPTAIN_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FORT_VALIANT_MEET_CAPTAIN_Description] = new StringBuilder(MyTexts.FORT_VALIANT_MEET_CAPTAIN_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FORT_VALIANT_VISIT_VENDOR_Name] = new StringBuilder(MyTexts.FORT_VALIANT_VISIT_VENDOR_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FORT_VALIANT_VISIT_VENDOR_Description] = new StringBuilder(MyTexts.FORT_VALIANT_VISIT_VENDOR_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JUNKYARD_RETURN_MEET_SMUGGLER_Name] = new StringBuilder(MyTexts.JUNKYARD_RETURN_MEET_SMUGGLER_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JUNKYARD_RETURN_MEET_SMUGGLER_Description] = new StringBuilder(MyTexts.JUNKYARD_RETURN_MEET_SMUGGLER_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JUNKYARD_RETURN_FLY_TO_START_Name] = new StringBuilder(MyTexts.JUNKYARD_RETURN_FLY_TO_START_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JUNKYARD_RETURN_FLY_TO_START_Description] = new StringBuilder(MyTexts.JUNKYARD_RETURN_FLY_TO_START_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JUNKYARD_RETURN_RACE_Name] = new StringBuilder(MyTexts.JUNKYARD_RETURN_RACE_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JUNKYARD_RETURN_RACE_PrepareName] = new StringBuilder(MyTexts.JUNKYARD_RETURN_RACE_PrepareName);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JUNKYARD_RETURN_RACE_GoBackName] = new StringBuilder(MyTexts.JUNKYARD_RETURN_RACE_GoBackName);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JUNKYARD_RETURN_RACE_Description] = new StringBuilder(MyTexts.JUNKYARD_RETURN_RACE_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JUNKYARD_RETURN_WIN_Name] = new StringBuilder(MyTexts.JUNKYARD_RETURN_WIN_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JUNKYARD_RETURN_WIN_Description] = new StringBuilder(MyTexts.JUNKYARD_RETURN_WIN_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JUNKYARD_RETURN_GO_TO_SMUGGLER_name] = new StringBuilder(MyTexts.JUNKYARD_RETURN_GO_TO_SMUGGLER_name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JUNKYARD_RETURN_GO_TO_SMUGGLER_Description] = new StringBuilder(MyTexts.JUNKYARD_RETURN_GO_TO_SMUGGLER_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JUNKYARD_RETURN_DIALOGUE_RETURN_Name] = new StringBuilder(MyTexts.JUNKYARD_RETURN_DIALOGUE_RETURN_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JUNKYARD_RETURN_DIALOGUE_RETURN_Description] = new StringBuilder(MyTexts.JUNKYARD_RETURN_DIALOGUE_RETURN_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FlyToStartingPoint] = new StringBuilder(MyTexts.FlyToStartingPoint);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RaceOpponent] = new StringBuilder(MyTexts.RaceOpponent);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_REFINERY_01_GET_CLOSER_Name] = new StringBuilder(MyTexts.CHINESE_REFINERY_01_GET_CLOSER_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_REFINERY_01_GET_CLOSER_Description] = new StringBuilder(MyTexts.CHINESE_REFINERY_01_GET_CLOSER_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_REFINERY_02_GET_IN_Name] = new StringBuilder(MyTexts.CHINESE_REFINERY_02_GET_IN_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_REFINERY_02_GET_IN_Description] = new StringBuilder(MyTexts.CHINESE_REFINERY_02_GET_IN_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_REFINERY_03_FIND_SECRET_ROOM_Name] = new StringBuilder(MyTexts.CHINESE_REFINERY_03_FIND_SECRET_ROOM_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_REFINERY_03_FIND_SECRET_ROOM_Description] = new StringBuilder(MyTexts.CHINESE_REFINERY_03_FIND_SECRET_ROOM_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_REFINERY_03_D_FIND_SECRET_ROOM_Name] = new StringBuilder(MyTexts.CHINESE_REFINERY_03_D_FIND_SECRET_ROOM_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_REFINERY_03_D_FIND_SECRET_ROOM_Description] = new StringBuilder(MyTexts.CHINESE_REFINERY_03_D_FIND_SECRET_ROOM_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_REFINERY_04_SET_VIRUS_Name] = new StringBuilder(MyTexts.CHINESE_REFINERY_04_SET_VIRUS_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_REFINERY_04_SET_VIRUS_Description] = new StringBuilder(MyTexts.CHINESE_REFINERY_04_SET_VIRUS_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_REFINERY_05_DEACTIVATE_BOMB_Name] = new StringBuilder(MyTexts.CHINESE_REFINERY_05_DEACTIVATE_BOMB_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_REFINERY_05_DEACTIVATE_BOMB_Description] = new StringBuilder(MyTexts.CHINESE_REFINERY_05_DEACTIVATE_BOMB_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_REFINERY_06_GET_TO_FIRST_TUNNEL_Name] = new StringBuilder(MyTexts.CHINESE_REFINERY_06_GET_TO_FIRST_TUNNEL_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_REFINERY_06_GET_TO_FIRST_TUNNEL_Description] = new StringBuilder(MyTexts.CHINESE_REFINERY_06_GET_TO_FIRST_TUNNEL_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_REFINERY_07_PAST_FIRST_TUNNEL_Name] = new StringBuilder(MyTexts.CHINESE_REFINERY_07_PAST_FIRST_TUNNEL_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_REFINERY_07_PAST_FIRST_TUNNEL_Description] = new StringBuilder(MyTexts.CHINESE_REFINERY_07_PAST_FIRST_TUNNEL_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_REFINERY_08_SET_BUG_IN_COMPUTER_Name] = new StringBuilder(MyTexts.CHINESE_REFINERY_08_SET_BUG_IN_COMPUTER_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_REFINERY_08_SET_BUG_IN_COMPUTER_Description] = new StringBuilder(MyTexts.CHINESE_REFINERY_08_SET_BUG_IN_COMPUTER_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_REFINERY_09_GET_TO_SECOND_TUNNEL_Name] = new StringBuilder(MyTexts.CHINESE_REFINERY_09_GET_TO_SECOND_TUNNEL_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_REFINERY_09_GET_TO_SECOND_TUNNEL_Description] = new StringBuilder(MyTexts.CHINESE_REFINERY_09_GET_TO_SECOND_TUNNEL_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_REFINERY_10_PAST_SECOND_TUNNEL_Name] = new StringBuilder(MyTexts.CHINESE_REFINERY_10_PAST_SECOND_TUNNEL_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_REFINERY_10_PAST_SECOND_TUNNEL_Description] = new StringBuilder(MyTexts.CHINESE_REFINERY_10_PAST_SECOND_TUNNEL_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_REFINERY_11_SNEAK_INSIDE_THE_STATION_Name] = new StringBuilder(MyTexts.CHINESE_REFINERY_11_SNEAK_INSIDE_THE_STATION_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_REFINERY_11_SNEAK_INSIDE_THE_STATION_Description] = new StringBuilder(MyTexts.CHINESE_REFINERY_11_SNEAK_INSIDE_THE_STATION_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_REFINERY_12_GET_TO_OLD_PATH_Name] = new StringBuilder(MyTexts.CHINESE_REFINERY_12_GET_TO_OLD_PATH_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_REFINERY_12_GET_TO_OLD_PATH_Description] = new StringBuilder(MyTexts.CHINESE_REFINERY_12_GET_TO_OLD_PATH_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_REFINERY_13_HACK_REFINARY_COMPUTER_Name] = new StringBuilder(MyTexts.CHINESE_REFINERY_13_HACK_REFINARY_COMPUTER_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_REFINERY_13_HACK_REFINARY_COMPUTER_Description] = new StringBuilder(MyTexts.CHINESE_REFINERY_13_HACK_REFINARY_COMPUTER_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_REFINERY_14_GET_OUT_OF_THE_STATION_Name] = new StringBuilder(MyTexts.CHINESE_REFINERY_14_GET_OUT_OF_THE_STATION_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_REFINERY_14_GET_OUT_OF_THE_STATION_Description] = new StringBuilder(MyTexts.CHINESE_REFINERY_14_GET_OUT_OF_THE_STATION_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_REFINERY_15_LAND_INSIDE_THE_TRANSPORTER_Name] = new StringBuilder(MyTexts.CHINESE_REFINERY_15_LAND_INSIDE_THE_TRANSPORTER_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_REFINERY_15_LAND_INSIDE_THE_TRANSPORTER_Description] = new StringBuilder(MyTexts.CHINESE_REFINERY_15_LAND_INSIDE_THE_TRANSPORTER_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SetVirusInComputer] = new StringBuilder(MyTexts.SetVirusInComputer);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SetBugInComputer] = new StringBuilder(MyTexts.SetBugInComputer);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HackSystem] = new StringBuilder(MyTexts.HackSystem);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_TRANSPORT_GET_SECURITY_KEY_Name] = new StringBuilder(MyTexts.CHINESE_TRANSPORT_GET_SECURITY_KEY_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_TRANSPORT_GET_SECURITY_KEY_Description] = new StringBuilder(MyTexts.CHINESE_TRANSPORT_GET_SECURITY_KEY_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_TRANSPORT_REACH_TUNNEL_1_Name] = new StringBuilder(MyTexts.CHINESE_TRANSPORT_REACH_TUNNEL_1_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_TRANSPORT_REACH_TUNNEL_1_Description] = new StringBuilder(MyTexts.CHINESE_TRANSPORT_REACH_TUNNEL_1_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_TRANSPORT_REACH_TRANSMITTER_Name] = new StringBuilder(MyTexts.CHINESE_TRANSPORT_REACH_TRANSMITTER_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_TRANSPORT_REACH_TRANSMITTER_Description] = new StringBuilder(MyTexts.CHINESE_TRANSPORT_REACH_TRANSMITTER_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_TRANSPORT_KILL_GUARDS_Name] = new StringBuilder(MyTexts.CHINESE_TRANSPORT_KILL_GUARDS_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_TRANSPORT_KILL_GUARDS_Description] = new StringBuilder(MyTexts.CHINESE_TRANSPORT_KILL_GUARDS_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_TRANSPORT_HACK_TRANSMITTER_Name] = new StringBuilder(MyTexts.CHINESE_TRANSPORT_HACK_TRANSMITTER_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_TRANSPORT_HACK_TRANSMITTER_Description] = new StringBuilder(MyTexts.CHINESE_TRANSPORT_HACK_TRANSMITTER_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_TRANSPORT_PLACE_BOMB_Name] = new StringBuilder(MyTexts.CHINESE_TRANSPORT_PLACE_BOMB_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_TRANSPORT_PLACE_BOMB_Description] = new StringBuilder(MyTexts.CHINESE_TRANSPORT_PLACE_BOMB_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_TRANSPORT_RUN_EXPLOSION_Name] = new StringBuilder(MyTexts.CHINESE_TRANSPORT_RUN_EXPLOSION_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_TRANSPORT_RUN_EXPLOSION_Description] = new StringBuilder(MyTexts.CHINESE_TRANSPORT_RUN_EXPLOSION_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_TRANSPORT_LOOK_ON_EXPLOSION_Name] = new StringBuilder(MyTexts.CHINESE_TRANSPORT_LOOK_ON_EXPLOSION_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_TRANSPORT_LOOK_ON_EXPLOSION_Description] = new StringBuilder(MyTexts.CHINESE_TRANSPORT_LOOK_ON_EXPLOSION_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_TRANSPORT_REACH_TUNNEL_2_Name] = new StringBuilder(MyTexts.CHINESE_TRANSPORT_REACH_TUNNEL_2_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_TRANSPORT_REACH_TUNNEL_2_Description] = new StringBuilder(MyTexts.CHINESE_TRANSPORT_REACH_TUNNEL_2_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_TRANSPORT_PAST_TUNNEL_2_Name] = new StringBuilder(MyTexts.CHINESE_TRANSPORT_PAST_TUNNEL_2_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_TRANSPORT_PAST_TUNNEL_2_Description] = new StringBuilder(MyTexts.CHINESE_TRANSPORT_PAST_TUNNEL_2_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_TRANSPORT_REACH_HANGAR_HACK_Name] = new StringBuilder(MyTexts.CHINESE_TRANSPORT_REACH_HANGAR_HACK_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_TRANSPORT_REACH_HANGAR_HACK_Description] = new StringBuilder(MyTexts.CHINESE_TRANSPORT_REACH_HANGAR_HACK_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_TRANSPORT_HACK_HANGAR_SERVICE_PC_Name] = new StringBuilder(MyTexts.CHINESE_TRANSPORT_HACK_HANGAR_SERVICE_PC_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_TRANSPORT_HACK_HANGAR_SERVICE_PC_Description] = new StringBuilder(MyTexts.CHINESE_TRANSPORT_HACK_HANGAR_SERVICE_PC_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_TRANSPORT_DEFEND_MARCUS_Name] = new StringBuilder(MyTexts.CHINESE_TRANSPORT_DEFEND_MARCUS_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_TRANSPORT_DEFEND_MARCUS_Description] = new StringBuilder(MyTexts.CHINESE_TRANSPORT_DEFEND_MARCUS_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_TRANSPORT_KILL_BOSS_Name] = new StringBuilder(MyTexts.CHINESE_TRANSPORT_KILL_BOSS_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_TRANSPORT_KILL_BOSS_Description] = new StringBuilder(MyTexts.CHINESE_TRANSPORT_KILL_BOSS_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_TRANSPORT_LAND_IN_Name] = new StringBuilder(MyTexts.CHINESE_TRANSPORT_LAND_IN_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CHINESE_TRANSPORT_LAND_IN_Description] = new StringBuilder(MyTexts.CHINESE_TRANSPORT_LAND_IN_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.GeneralChenLin] = new StringBuilder(MyTexts.GeneralChenLin);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.GetFirstSecurityKey] = new StringBuilder(MyTexts.GetFirstSecurityKey);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.UseFirstSecurityKey] = new StringBuilder(MyTexts.UseFirstSecurityKey);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.UseSecondSecurityKey] = new StringBuilder(MyTexts.UseSecondSecurityKey);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HackHangarDatabase] = new StringBuilder(MyTexts.HackHangarDatabase);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JUNKYARD_CONVINCE_FIND_INFORMATOR_Name] = new StringBuilder(MyTexts.JUNKYARD_CONVINCE_FIND_INFORMATOR_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JUNKYARD_CONVINCE_FIND_INFORMATOR_Description] = new StringBuilder(MyTexts.JUNKYARD_CONVINCE_FIND_INFORMATOR_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JUNKYARD_CONVINCE_FIND_SMUGGLER_Name] = new StringBuilder(MyTexts.JUNKYARD_CONVINCE_FIND_SMUGGLER_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JUNKYARD_CONVINCE_FIND_SMUGGLER_Description] = new StringBuilder(MyTexts.JUNKYARD_CONVINCE_FIND_SMUGGLER_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JUNKYARD_CONVINCE_FOLLOW_SMUGGLER_Name] = new StringBuilder(MyTexts.JUNKYARD_CONVINCE_FOLLOW_SMUGGLER_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JUNKYARD_CONVINCE_FOLLOW_SMUGGLER_Description] = new StringBuilder(MyTexts.JUNKYARD_CONVINCE_FOLLOW_SMUGGLER_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JUNKYARD_CONVINCE_D_FOLLOW_SMUGGLER_Name] = new StringBuilder(MyTexts.JUNKYARD_CONVINCE_D_FOLLOW_SMUGGLER_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JUNKYARD_CONVINCE_D_FOLLOW_SMUGGLER_Description] = new StringBuilder(MyTexts.JUNKYARD_CONVINCE_D_FOLLOW_SMUGGLER_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JUNKYARD_CONVINCE_FLY_TO_ENEMY_Name] = new StringBuilder(MyTexts.JUNKYARD_CONVINCE_FLY_TO_ENEMY_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JUNKYARD_CONVINCE_FLY_TO_ENEMY_Description] = new StringBuilder(MyTexts.JUNKYARD_CONVINCE_FLY_TO_ENEMY_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JUNKYARD_CONVINCE_KILL_WAVES_Name] = new StringBuilder(MyTexts.JUNKYARD_CONVINCE_KILL_WAVES_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JUNKYARD_CONVINCE_KILL_WAVES_Description] = new StringBuilder(MyTexts.JUNKYARD_CONVINCE_KILL_WAVES_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JUNKYARD_CONVINCE_SPEAK_WITH_MOMO_Name] = new StringBuilder(MyTexts.JUNKYARD_CONVINCE_SPEAK_WITH_MOMO_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JUNKYARD_CONVINCE_SPEAK_WITH_MOMO_Description] = new StringBuilder(MyTexts.JUNKYARD_CONVINCE_SPEAK_WITH_MOMO_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JUNKYARD_CONVINCE_D_SPEAK_WITH_MOMO_Name] = new StringBuilder(MyTexts.JUNKYARD_CONVINCE_D_SPEAK_WITH_MOMO_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JUNKYARD_CONVINCE_D_SPEAK_WITH_MOMO_Description] = new StringBuilder(MyTexts.JUNKYARD_CONVINCE_D_SPEAK_WITH_MOMO_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JUNKYARD_CONVINCE_FIGHT_MOMO_Name] = new StringBuilder(MyTexts.JUNKYARD_CONVINCE_FIGHT_MOMO_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JUNKYARD_CONVINCE_FIGHT_MOMO_Description] = new StringBuilder(MyTexts.JUNKYARD_CONVINCE_FIGHT_MOMO_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JUNKYARD_CONVINCE_RETURN_TO_SMUGGLER_Name] = new StringBuilder(MyTexts.JUNKYARD_CONVINCE_RETURN_TO_SMUGGLER_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JUNKYARD_CONVINCE_RETURN_TO_SMUGGLER_Description] = new StringBuilder(MyTexts.JUNKYARD_CONVINCE_RETURN_TO_SMUGGLER_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JUNKYARD_CONVINCE_GO_TO_BOMB_DEALER_Name] = new StringBuilder(MyTexts.JUNKYARD_CONVINCE_GO_TO_BOMB_DEALER_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JUNKYARD_CONVINCE_GO_TO_BOMB_DEALER_Description] = new StringBuilder(MyTexts.JUNKYARD_CONVINCE_GO_TO_BOMB_DEALER_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JUNKYARD_CONVINCE_D_GO_TO_BOMB_DEALER_Name] = new StringBuilder(MyTexts.JUNKYARD_CONVINCE_D_GO_TO_BOMB_DEALER_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JUNKYARD_CONVINCE_D_GO_TO_BOMB_DEALER_Description] = new StringBuilder(MyTexts.JUNKYARD_CONVINCE_D_GO_TO_BOMB_DEALER_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JUNKYARD_CONVINCE_GO_TO_MARCUS_Name] = new StringBuilder(MyTexts.JUNKYARD_CONVINCE_GO_TO_MARCUS_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JUNKYARD_CONVINCE_GO_TO_MARCUS_Description] = new StringBuilder(MyTexts.JUNKYARD_CONVINCE_GO_TO_MARCUS_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JUNKYARD_CONVINCE_BR_FIGHT_Name] = new StringBuilder(MyTexts.JUNKYARD_CONVINCE_BR_FIGHT_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JUNKYARD_CONVINCE_BR_FIGHT_Description] = new StringBuilder(MyTexts.JUNKYARD_CONVINCE_BR_FIGHT_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JUNKYARD_CONVINCE_RETURN_TO_MS_Name] = new StringBuilder(MyTexts.JUNKYARD_CONVINCE_RETURN_TO_MS_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.JUNKYARD_CONVINCE_RETURN_TO_MS_Description] = new StringBuilder(MyTexts.JUNKYARD_CONVINCE_RETURN_TO_MS_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.GangsterBoss] = new StringBuilder(MyTexts.GangsterBoss);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_MEET_BARTH_Name] = new StringBuilder(MyTexts.BARTHS_MOON_TRANSMITTER_MEET_BARTH_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_MEET_BARTH_Description] = new StringBuilder(MyTexts.BARTHS_MOON_TRANSMITTER_MEET_BARTH_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_TALK_TO_BARTH_Name] = new StringBuilder(MyTexts.BARTHS_MOON_TRANSMITTER_TALK_TO_BARTH_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_TALK_TO_BARTH_Description] = new StringBuilder(MyTexts.BARTHS_MOON_TRANSMITTER_TALK_TO_BARTH_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_FIND_WAY_TO_MOON_Name] = new StringBuilder(MyTexts.BARTHS_MOON_TRANSMITTER_FIND_WAY_TO_MOON_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_FIND_WAY_TO_MOON_Description] = new StringBuilder(MyTexts.BARTHS_MOON_TRANSMITTER_FIND_WAY_TO_MOON_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_DESTROY_LAB_Name] = new StringBuilder(MyTexts.BARTHS_MOON_TRANSMITTER_DESTROY_LAB_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_DESTROY_LAB_Description] = new StringBuilder(MyTexts.BARTHS_MOON_TRANSMITTER_DESTROY_LAB_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_ENABLE_GENERATOR_Name] = new StringBuilder(MyTexts.BARTHS_MOON_TRANSMITTER_ENABLE_GENERATOR_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_ENABLE_GENERATOR_Description] = new StringBuilder(MyTexts.BARTHS_MOON_TRANSMITTER_ENABLE_GENERATOR_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_LOOK_HUBS_Name] = new StringBuilder(MyTexts.BARTHS_MOON_TRANSMITTER_LOOK_HUBS_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_LOOK_HUBS_Description] = new StringBuilder(MyTexts.BARTHS_MOON_TRANSMITTER_LOOK_HUBS_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_GET_ITEMS_Name] = new StringBuilder(MyTexts.BARTHS_MOON_TRANSMITTER_GET_ITEMS_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_GET_ITEMS_Description] = new StringBuilder(MyTexts.BARTHS_MOON_TRANSMITTER_GET_ITEMS_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_FAN_Name] = new StringBuilder(MyTexts.BARTHS_MOON_TRANSMITTER_FAN_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_FAN_Description] = new StringBuilder(MyTexts.BARTHS_MOON_TRANSMITTER_FAN_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_DRONES_Name] = new StringBuilder(MyTexts.BARTHS_MOON_TRANSMITTER_DRONES_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_DRONES_Description] = new StringBuilder(MyTexts.BARTHS_MOON_TRANSMITTER_DRONES_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_ENABLE_GENERATOR_DRONE1_Name] = new StringBuilder(MyTexts.BARTHS_MOON_TRANSMITTER_ENABLE_GENERATOR_DRONE1_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_ENABLE_GENERATOR_DRONE1_Description] = new StringBuilder(MyTexts.BARTHS_MOON_TRANSMITTER_ENABLE_GENERATOR_DRONE1_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_ENABLE_GENERATOR_DRONE2_Name] = new StringBuilder(MyTexts.BARTHS_MOON_TRANSMITTER_ENABLE_GENERATOR_DRONE2_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_ENABLE_GENERATOR_DRONE2_Description] = new StringBuilder(MyTexts.BARTHS_MOON_TRANSMITTER_ENABLE_GENERATOR_DRONE2_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_LOOK_HUBS2_Name] = new StringBuilder(MyTexts.BARTHS_MOON_TRANSMITTER_LOOK_HUBS2_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_LOOK_HUBS2_Description] = new StringBuilder(MyTexts.BARTHS_MOON_TRANSMITTER_LOOK_HUBS2_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_DOWNLOAD_DATA1_Name] = new StringBuilder(MyTexts.BARTHS_MOON_TRANSMITTER_DOWNLOAD_DATA1_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_DOWNLOAD_DATA1_Description] = new StringBuilder(MyTexts.BARTHS_MOON_TRANSMITTER_DOWNLOAD_DATA1_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_DOWNLOAD_DATA2_Name] = new StringBuilder(MyTexts.BARTHS_MOON_TRANSMITTER_DOWNLOAD_DATA2_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_DOWNLOAD_DATA2_Description] = new StringBuilder(MyTexts.BARTHS_MOON_TRANSMITTER_DOWNLOAD_DATA2_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_DOWNLOAD_DATA3_Name] = new StringBuilder(MyTexts.BARTHS_MOON_TRANSMITTER_DOWNLOAD_DATA3_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_DOWNLOAD_DATA3_Description] = new StringBuilder(MyTexts.BARTHS_MOON_TRANSMITTER_DOWNLOAD_DATA3_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_DOWNLOAD_DATA4_Name] = new StringBuilder(MyTexts.BARTHS_MOON_TRANSMITTER_DOWNLOAD_DATA4_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_DOWNLOAD_DATA4_Description] = new StringBuilder(MyTexts.BARTHS_MOON_TRANSMITTER_DOWNLOAD_DATA4_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_ENTER_MAINLAB_Name] = new StringBuilder(MyTexts.BARTHS_MOON_TRANSMITTER_ENTER_MAINLAB_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_ENTER_MAINLAB_Description] = new StringBuilder(MyTexts.BARTHS_MOON_TRANSMITTER_ENTER_MAINLAB_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_DESTROY_COMPUTER_Name] = new StringBuilder(MyTexts.BARTHS_MOON_TRANSMITTER_DESTROY_COMPUTER_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_DESTROY_COMPUTER_Description] = new StringBuilder(MyTexts.BARTHS_MOON_TRANSMITTER_DESTROY_COMPUTER_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_FIND_PART3_Name] = new StringBuilder(MyTexts.BARTHS_MOON_TRANSMITTER_FIND_PART3_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_FIND_PART3_Description] = new StringBuilder(MyTexts.BARTHS_MOON_TRANSMITTER_FIND_PART3_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_FIND_WAY_OUT_Name] = new StringBuilder(MyTexts.BARTHS_MOON_TRANSMITTER_FIND_WAY_OUT_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_FIND_WAY_OUT_Description] = new StringBuilder(MyTexts.BARTHS_MOON_TRANSMITTER_FIND_WAY_OUT_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_BUILD_TRANSMITTER_Name] = new StringBuilder(MyTexts.BARTHS_MOON_TRANSMITTER_BUILD_TRANSMITTER_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_BUILD_TRANSMITTER_Description] = new StringBuilder(MyTexts.BARTHS_MOON_TRANSMITTER_BUILD_TRANSMITTER_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_RETURN_BACK_TO_MADELYN_Name] = new StringBuilder(MyTexts.BARTHS_MOON_TRANSMITTER_RETURN_BACK_TO_MADELYN_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_RETURN_BACK_TO_MADELYN_Description] = new StringBuilder(MyTexts.BARTHS_MOON_TRANSMITTER_RETURN_BACK_TO_MADELYN_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_SNEAKINMAINBASE_Name] = new StringBuilder(MyTexts.RUSSIAN_WAREHOUSE_SNEAKINMAINBASE_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_SNEAKINMAINBASE_Description] = new StringBuilder(MyTexts.RUSSIAN_WAREHOUSE_SNEAKINMAINBASE_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_TURNOFFCAMS_Name] = new StringBuilder(MyTexts.RUSSIAN_WAREHOUSE_TURNOFFCAMS_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_TURNOFFCAMS_Description] = new StringBuilder(MyTexts.RUSSIAN_WAREHOUSE_TURNOFFCAMS_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_CTRLTURRET_Name] = new StringBuilder(MyTexts.RUSSIAN_WAREHOUSE_CTRLTURRET_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_CTRLTURRET_Description] = new StringBuilder(MyTexts.RUSSIAN_WAREHOUSE_CTRLTURRET_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_OPEN_DOORS_Name] = new StringBuilder(MyTexts.RUSSIAN_WAREHOUSE_OPEN_DOORS_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_OPEN_DOORS_Description] = new StringBuilder(MyTexts.RUSSIAN_WAREHOUSE_OPEN_DOORS_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_GETOUTMAINBASE_Name] = new StringBuilder(MyTexts.RUSSIAN_WAREHOUSE_GETOUTMAINBASE_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_GETOUTMAINBASE_Description] = new StringBuilder(MyTexts.RUSSIAN_WAREHOUSE_GETOUTMAINBASE_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_BREAKOLDENTRANCE_Name] = new StringBuilder(MyTexts.RUSSIAN_WAREHOUSE_BREAKOLDENTRANCE_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_BREAKOLDENTRANCE_Description] = new StringBuilder(MyTexts.RUSSIAN_WAREHOUSE_BREAKOLDENTRANCE_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_LOCATEWAREHOUSE_Name] = new StringBuilder(MyTexts.RUSSIAN_WAREHOUSE_LOCATEWAREHOUSE_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_LOCATEWAREHOUSE_Description] = new StringBuilder(MyTexts.RUSSIAN_WAREHOUSE_LOCATEWAREHOUSE_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_FINDTRANSMITTER_Name] = new StringBuilder(MyTexts.RUSSIAN_WAREHOUSE_FINDTRANSMITTER_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_FINDTRANSMITTER_Description] = new StringBuilder(MyTexts.RUSSIAN_WAREHOUSE_FINDTRANSMITTER_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_DOWNLOAD_DATA_Name] = new StringBuilder(MyTexts.RUSSIAN_WAREHOUSE_DOWNLOAD_DATA_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_DOWNLOAD_DATA_Description] = new StringBuilder(MyTexts.RUSSIAN_WAREHOUSE_DOWNLOAD_DATA_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_TURNOFFMAINDEF_PART1_Name] = new StringBuilder(MyTexts.RUSSIAN_WAREHOUSE_TURNOFFMAINDEF_PART1_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_TURNOFFMAINDEF_PART1_Description] = new StringBuilder(MyTexts.RUSSIAN_WAREHOUSE_TURNOFFMAINDEF_PART1_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_TURNOFFMAINDEF_PART2_Name] = new StringBuilder(MyTexts.RUSSIAN_WAREHOUSE_TURNOFFMAINDEF_PART2_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_TURNOFFMAINDEF_PART2_Description] = new StringBuilder(MyTexts.RUSSIAN_WAREHOUSE_TURNOFFMAINDEF_PART2_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_GETOUTWAREHOUSE_Name] = new StringBuilder(MyTexts.RUSSIAN_WAREHOUSE_GETOUTWAREHOUSE_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_GETOUTWAREHOUSE_Description] = new StringBuilder(MyTexts.RUSSIAN_WAREHOUSE_GETOUTWAREHOUSE_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_CRUSHREMAINGSHIPS_Name] = new StringBuilder(MyTexts.RUSSIAN_WAREHOUSE_CRUSHREMAINGSHIPS_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_CRUSHREMAINGSHIPS_Description] = new StringBuilder(MyTexts.RUSSIAN_WAREHOUSE_CRUSHREMAINGSHIPS_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_MEETINGPOINT_Name] = new StringBuilder(MyTexts.RUSSIAN_WAREHOUSE_MEETINGPOINT_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_MEETINGPOINT_Description] = new StringBuilder(MyTexts.RUSSIAN_WAREHOUSE_MEETINGPOINT_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RussianReinforcements] = new StringBuilder(MyTexts.RussianReinforcements);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PIRATE_BASE_TRAVEL_TO_BASE_Name] = new StringBuilder(MyTexts.PIRATE_BASE_TRAVEL_TO_BASE_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PIRATE_BASE_TRAVEL_TO_BASE_Description] = new StringBuilder(MyTexts.PIRATE_BASE_TRAVEL_TO_BASE_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PIRATE_BASE_SPEAK_WITH_PIRATES_Name] = new StringBuilder(MyTexts.PIRATE_BASE_SPEAK_WITH_PIRATES_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PIRATE_BASE_SPEAK_WITH_PIRATES_Description] = new StringBuilder(MyTexts.PIRATE_BASE_SPEAK_WITH_PIRATES_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PIRATE_BASE_PREPARE_FOR_DEFENSE_Name] = new StringBuilder(MyTexts.PIRATE_BASE_PREPARE_FOR_DEFENSE_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PIRATE_BASE_PREPARE_FOR_DEFENSE_Description] = new StringBuilder(MyTexts.PIRATE_BASE_PREPARE_FOR_DEFENSE_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PIRATE_BASE_GET_TURRETS_Name] = new StringBuilder(MyTexts.PIRATE_BASE_GET_TURRETS_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PIRATE_BASE_GET_TURRETS_Description] = new StringBuilder(MyTexts.PIRATE_BASE_GET_TURRETS_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PIRATE_BASE_DEFENSE_SETUP_Name] = new StringBuilder(MyTexts.PIRATE_BASE_DEFENSE_SETUP_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PIRATE_BASE_DEFENSE_SETUP_Description] = new StringBuilder(MyTexts.PIRATE_BASE_DEFENSE_SETUP_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PIRATE_BASE_DEFEND_Name] = new StringBuilder(MyTexts.PIRATE_BASE_DEFEND_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PIRATE_BASE_DEFEND_Description] = new StringBuilder(MyTexts.PIRATE_BASE_DEFEND_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PIRATE_BASE_ALLY_ARRIVED_Name] = new StringBuilder(MyTexts.PIRATE_BASE_ALLY_ARRIVED_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PIRATE_BASE_ALLY_ARRIVED_Description] = new StringBuilder(MyTexts.PIRATE_BASE_ALLY_ARRIVED_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BaseGenerator] = new StringBuilder(MyTexts.BaseGenerator);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_CONVINCE_MEET_THOMAS_BART_Name] = new StringBuilder(MyTexts.BARTHS_MOON_CONVINCE_MEET_THOMAS_BART_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_CONVINCE_MEET_THOMAS_BART_Description] = new StringBuilder(MyTexts.BARTHS_MOON_CONVINCE_MEET_THOMAS_BART_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_CONVINCE_TALK_WITH_THOMAS_BART_Name] = new StringBuilder(MyTexts.BARTHS_MOON_CONVINCE_TALK_WITH_THOMAS_BART_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_CONVINCE_TALK_WITH_THOMAS_BART_Description] = new StringBuilder(MyTexts.BARTHS_MOON_CONVINCE_TALK_WITH_THOMAS_BART_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_CONVINCE_FLY_TO_ENEMY_BASE_Name] = new StringBuilder(MyTexts.BARTHS_MOON_CONVINCE_FLY_TO_ENEMY_BASE_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_CONVINCE_FLY_TO_ENEMY_BASE_Description] = new StringBuilder(MyTexts.BARTHS_MOON_CONVINCE_FLY_TO_ENEMY_BASE_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_CONVINCE_DESTROY_SHIP_Name] = new StringBuilder(MyTexts.BARTHS_MOON_CONVINCE_DESTROY_SHIP_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_CONVINCE_DESTROY_SHIP_Description] = new StringBuilder(MyTexts.BARTHS_MOON_CONVINCE_DESTROY_SHIP_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_CONVINCE_DESTROY_GENERATOR_Name] = new StringBuilder(MyTexts.BARTHS_MOON_CONVINCE_DESTROY_GENERATOR_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_CONVINCE_DESTROY_GENERATOR_Description] = new StringBuilder(MyTexts.BARTHS_MOON_CONVINCE_DESTROY_GENERATOR_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_CONVINCE_FIND_TRANSMITTER_Name] = new StringBuilder(MyTexts.BARTHS_MOON_CONVINCE_FIND_TRANSMITTER_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_CONVINCE_FIND_TRANSMITTER_Description] = new StringBuilder(MyTexts.BARTHS_MOON_CONVINCE_FIND_TRANSMITTER_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_CONVINCE_RETURN_BACK_TO_MADELYN_Name] = new StringBuilder(MyTexts.BARTHS_MOON_CONVINCE_RETURN_BACK_TO_MADELYN_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_CONVINCE_RETURN_BACK_TO_MADELYN_Description] = new StringBuilder(MyTexts.BARTHS_MOON_CONVINCE_RETURN_BACK_TO_MADELYN_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Disable] = new StringBuilder(MyTexts.Disable);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Nothing] = new StringBuilder(MyTexts.Nothing);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HudMainBase] = new StringBuilder(MyTexts.HudMainBase);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HudCommandCenter] = new StringBuilder(MyTexts.HudCommandCenter);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HudGenerator] = new StringBuilder(MyTexts.HudGenerator);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HudHub] = new StringBuilder(MyTexts.HudHub);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HudMiners] = new StringBuilder(MyTexts.HudMiners);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HudHangar] = new StringBuilder(MyTexts.HudHangar);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HudMothership] = new StringBuilder(MyTexts.HudMothership);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HudPirateCaptain] = new StringBuilder(MyTexts.HudPirateCaptain);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HudMeetingPoint] = new StringBuilder(MyTexts.HudMeetingPoint);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HudHacker] = new StringBuilder(MyTexts.HudHacker);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HudJammer] = new StringBuilder(MyTexts.HudJammer);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HudControlRoom] = new StringBuilder(MyTexts.HudControlRoom);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HudTowerB] = new StringBuilder(MyTexts.HudTowerB);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HudBatteries] = new StringBuilder(MyTexts.HudBatteries);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HudTunnel] = new StringBuilder(MyTexts.HudTunnel);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HudTransmitter] = new StringBuilder(MyTexts.HudTransmitter);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HudSafeArea] = new StringBuilder(MyTexts.HudSafeArea);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HudEnd] = new StringBuilder(MyTexts.HudEnd);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HudContainer] = new StringBuilder(MyTexts.HudContainer);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HudServiceRoom] = new StringBuilder(MyTexts.HudServiceRoom);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HudCommandRoom] = new StringBuilder(MyTexts.HudCommandRoom);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HudGeneratorRoom] = new StringBuilder(MyTexts.HudGeneratorRoom);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HudLab] = new StringBuilder(MyTexts.HudLab);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HudDrillRoom] = new StringBuilder(MyTexts.HudDrillRoom);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HudEurydice] = new StringBuilder(MyTexts.HudEurydice);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HudShip] = new StringBuilder(MyTexts.HudShip);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HudCargoBay] = new StringBuilder(MyTexts.HudCargoBay);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HudEquipment] = new StringBuilder(MyTexts.HudEquipment);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HudIdCard] = new StringBuilder(MyTexts.HudIdCard);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HudSecurityHub] = new StringBuilder(MyTexts.HudSecurityHub);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HudControlCenter] = new StringBuilder(MyTexts.HudControlCenter);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HudMarcus] = new StringBuilder(MyTexts.HudMarcus);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HudEntrance] = new StringBuilder(MyTexts.HudEntrance);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HudHubA] = new StringBuilder(MyTexts.HudHubA);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HudHubB] = new StringBuilder(MyTexts.HudHubB);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HudCommunicationHub] = new StringBuilder(MyTexts.HudCommunicationHub);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HudWarhead] = new StringBuilder(MyTexts.HudWarhead);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HudMadelynsSapho] = new StringBuilder(MyTexts.HudMadelynsSapho);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HudLastHope] = new StringBuilder(MyTexts.HudLastHope);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HudFortValiant] = new StringBuilder(MyTexts.HudFortValiant);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HudTransformer] = new StringBuilder(MyTexts.HudTransformer);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HudBackDoor] = new StringBuilder(MyTexts.HudBackDoor);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HudResearchRoom] = new StringBuilder(MyTexts.HudResearchRoom);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HudCaptainCedric] = new StringBuilder(MyTexts.HudCaptainCedric);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HudColonelVonStauffenberg] = new StringBuilder(MyTexts.HudColonelVonStauffenberg);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HudSirGeraint] = new StringBuilder(MyTexts.HudSirGeraint);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HudBrokenMoon] = new StringBuilder(MyTexts.HudBrokenMoon);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HudMainBuilding] = new StringBuilder(MyTexts.HudMainBuilding);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HudPrison] = new StringBuilder(MyTexts.HudPrison);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HudPanel] = new StringBuilder(MyTexts.HudPanel);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HudCave] = new StringBuilder(MyTexts.HudCave);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HudBlondi] = new StringBuilder(MyTexts.HudBlondi);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HudTransport] = new StringBuilder(MyTexts.HudTransport);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HudChamber] = new StringBuilder(MyTexts.HudChamber);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HudCage] = new StringBuilder(MyTexts.HudCage);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HudCargo] = new StringBuilder(MyTexts.HudCargo);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HudDuplex] = new StringBuilder(MyTexts.HudDuplex);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HudRaynoldsVessel] = new StringBuilder(MyTexts.HudRaynoldsVessel);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HudManjeet] = new StringBuilder(MyTexts.HudManjeet);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HudDisruptor] = new StringBuilder(MyTexts.HudDisruptor);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HudFrancisReef] = new StringBuilder(MyTexts.HudFrancisReef);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HudRun] = new StringBuilder(MyTexts.HudRun);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HudStart] = new StringBuilder(MyTexts.HudStart);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HudRegroup] = new StringBuilder(MyTexts.HudRegroup);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HudStation] = new StringBuilder(MyTexts.HudStation);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HudLeftWing] = new StringBuilder(MyTexts.HudLeftWing);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HudSearch] = new StringBuilder(MyTexts.HudSearch);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HudFollow] = new StringBuilder(MyTexts.HudFollow);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HudRift] = new StringBuilder(MyTexts.HudRift);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HudSupplies] = new StringBuilder(MyTexts.HudSupplies);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HudStranger] = new StringBuilder(MyTexts.HudStranger);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HudBarth] = new StringBuilder(MyTexts.HudBarth);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HudWarehouse] = new StringBuilder(MyTexts.HudWarehouse);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HudEnemyBase] = new StringBuilder(MyTexts.HudEnemyBase);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PlutoniumStored] = new StringBuilder(MyTexts.PlutoniumStored);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HudGeneratorRepairKit] = new StringBuilder(MyTexts.HudGeneratorRepairKit);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PressToRedirectEnergy] = new StringBuilder(MyTexts.PressToRedirectEnergy);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RedirectEnergy] = new StringBuilder(MyTexts.RedirectEnergy);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RedirectionInProgress] = new StringBuilder(MyTexts.RedirectionInProgress);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.GoBackToStartingPosition] = new StringBuilder(MyTexts.GoBackToStartingPosition);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_PLANT_BUILD_PLANT_Description] = new StringBuilder(MyTexts.BARTHS_MOON_PLANT_BUILD_PLANT_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BARTHS_MOON_PLANT_BUILD_PLANT_Name] = new StringBuilder(MyTexts.BARTHS_MOON_PLANT_BUILD_PLANT_Name);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.YouNeedFullGame] = new StringBuilder(MyTexts.YouNeedFullGame);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ALIEN_GATE_FOLLOW_COORDINATES_Description] = new StringBuilder(MyTexts.ALIEN_GATE_FOLLOW_COORDINATES_Description);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MoneyObtained] = new StringBuilder(MyTexts.MoneyObtained);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Autocannon] = new StringBuilder(MyTexts.Autocannon);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CIWS] = new StringBuilder(MyTexts.CIWS);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MachineGun] = new StringBuilder(MyTexts.MachineGun);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MissileLauncher] = new StringBuilder(MyTexts.MissileLauncher);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Note] = new StringBuilder(MyTexts.Note);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.TextureQuad] = new StringBuilder(MyTexts.TextureQuad);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EditVoxelHandIsProjectedToWaypoints] = new StringBuilder(MyTexts.EditVoxelHandIsProjectedToWaypoints);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Stone_Red] = new StringBuilder(MyTexts.Stone_Red);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AttachVoxelHand] = new StringBuilder(MyTexts.AttachVoxelHand);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.DetachVoxelHand] = new StringBuilder(MyTexts.DetachVoxelHand);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HudPart] = new StringBuilder(MyTexts.HudPart);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.DateDaysAgo] = new StringBuilder(MyTexts.DateDaysAgo);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.DateHoursAgo] = new StringBuilder(MyTexts.DateHoursAgo);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.DateMinutesAgo] = new StringBuilder(MyTexts.DateMinutesAgo);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.DateMonthsAgo] = new StringBuilder(MyTexts.DateMonthsAgo);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.NotificationNeedShowHelpScreen] = new StringBuilder(MyTexts.NotificationNeedShowHelpScreen);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SteamRegisterErrorCaption] = new StringBuilder(MyTexts.SteamRegisterErrorCaption);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SteamRegisterErrorText] = new StringBuilder(MyTexts.SteamRegisterErrorText);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HealthEnhancingMedicineActive] = new StringBuilder(MyTexts.HealthEnhancingMedicineActive);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PerformanceEnhancingMedicineActive] = new StringBuilder(MyTexts.PerformanceEnhancingMedicineActive);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.DrillNotification] = new StringBuilder(MyTexts.DrillNotification);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.OreNotification] = new StringBuilder(MyTexts.OreNotification);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Actor_RimeGuard] = new StringBuilder(MyTexts.Actor_RimeGuard);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AxisX] = new StringBuilder(MyTexts.AxisX);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AxisY] = new StringBuilder(MyTexts.AxisY);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.AxisZ] = new StringBuilder(MyTexts.AxisZ);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ExplosionIn] = new StringBuilder(MyTexts.ExplosionIn);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HidePassword] = new StringBuilder(MyTexts.HidePassword);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MusicVolume] = new StringBuilder(MyTexts.MusicVolume);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.ProtectSaphosCommandCenter] = new StringBuilder(MyTexts.ProtectSaphosCommandCenter);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.StartEditorInProgressPleaseWait] = new StringBuilder(MyTexts.StartEditorInProgressPleaseWait);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Intro01] = new StringBuilder(MyTexts.Intro01);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Intro02] = new StringBuilder(MyTexts.Intro02);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Intro03] = new StringBuilder(MyTexts.Intro03);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Intro04] = new StringBuilder(MyTexts.Intro04);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Intro05] = new StringBuilder(MyTexts.Intro05);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Intro06] = new StringBuilder(MyTexts.Intro06);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Intro07] = new StringBuilder(MyTexts.Intro07);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Intro08] = new StringBuilder(MyTexts.Intro08);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Intro09] = new StringBuilder(MyTexts.Intro09);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Intro10] = new StringBuilder(MyTexts.Intro10);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Intro11] = new StringBuilder(MyTexts.Intro11);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Intro12] = new StringBuilder(MyTexts.Intro12);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Intro13] = new StringBuilder(MyTexts.Intro13);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Intro14] = new StringBuilder(MyTexts.Intro14);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Intro15] = new StringBuilder(MyTexts.Intro15);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Intro16] = new StringBuilder(MyTexts.Intro16);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Intro17] = new StringBuilder(MyTexts.Intro17);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Intro18] = new StringBuilder(MyTexts.Intro18);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Intro19] = new StringBuilder(MyTexts.Intro19);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.HoldFireToDrillNotification] = new StringBuilder(MyTexts.HoldFireToDrillNotification);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PressMToDeactivateDrill] = new StringBuilder(MyTexts.PressMToDeactivateDrill);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PerfWarning1_0] = new StringBuilder(MyTexts.PerfWarning1_0);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PerfWarning2_0] = new StringBuilder(MyTexts.PerfWarning2_0);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PerfWarning3_0] = new StringBuilder(MyTexts.PerfWarning3_0);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PerfWarning4_0] = new StringBuilder(MyTexts.PerfWarning4_0);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PerfWarning4_1] = new StringBuilder(MyTexts.PerfWarning4_1);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PerfWarning4_2] = new StringBuilder(MyTexts.PerfWarning4_2);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PerfWarning5_0] = new StringBuilder(MyTexts.PerfWarning5_0);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.PerfWarning6_0] = new StringBuilder(MyTexts.PerfWarning6_0);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SteamNoProductsCaption] = new StringBuilder(MyTexts.SteamNoProductsCaption);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SteamNoProductsText] = new StringBuilder(MyTexts.SteamNoProductsText);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LongerLoadingTimes] = new StringBuilder(MyTexts.LongerLoadingTimes);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Tip] = new StringBuilder(MyTexts.Tip);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SteamYouDontOwnTheGameCaption] = new StringBuilder(MyTexts.SteamYouDontOwnTheGameCaption);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SteamYouDontOwnTheGameText] = new StringBuilder(MyTexts.SteamYouDontOwnTheGameText);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.DisableQuickZoom] = new StringBuilder(MyTexts.DisableQuickZoom);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.DisableZoom] = new StringBuilder(MyTexts.DisableZoom);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.DefendMadelyn] = new StringBuilder(MyTexts.DefendMadelyn);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Snap5Deg] = new StringBuilder(MyTexts.Snap5Deg);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SaveCorruptedCaption] = new StringBuilder(MyTexts.SaveCorruptedCaption);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SaveCorruptedText] = new StringBuilder(MyTexts.SaveCorruptedText);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FeatureAccessibleOnlyFromMainMenu] = new StringBuilder(MyTexts.FeatureAccessibleOnlyFromMainMenu);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.String1] = new StringBuilder(MyTexts.String1);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.Deathmatch] = new StringBuilder(MyTexts.Deathmatch);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SteamInvalidTicketCaption] = new StringBuilder(MyTexts.SteamInvalidTicketCaption);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SteamInvalidTicketText] = new StringBuilder(MyTexts.SteamInvalidTicketText);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.VideoAdapter] = new StringBuilder(MyTexts.VideoAdapter);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.GPSDistance] = new StringBuilder(MyTexts.GPSDistance);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.GPSNoPath] = new StringBuilder(MyTexts.GPSNoPath);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SphereFull_1024] = new StringBuilder(MyTexts.SphereFull_1024);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.p511_a17_billboard_portrait_2] = new StringBuilder(MyTexts.p511_a17_billboard_portrait_2);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.DefaultFOV] = new StringBuilder(MyTexts.DefaultFOV);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.DisableCoop] = new StringBuilder(MyTexts.DisableCoop);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.EnableCoop] = new StringBuilder(MyTexts.EnableCoop);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CargoBoxAmmo] = new StringBuilder(MyTexts.CargoBoxAmmo);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CargoBoxFuel] = new StringBuilder(MyTexts.CargoBoxFuel);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CargoBoxMedikit] = new StringBuilder(MyTexts.CargoBoxMedikit);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CargoBoxOxygen] = new StringBuilder(MyTexts.CargoBoxOxygen);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CargoBoxRepair] = new StringBuilder(MyTexts.CargoBoxRepair);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.DoorsLocked] = new StringBuilder(MyTexts.DoorsLocked);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.REICHSTAG] = new StringBuilder(MyTexts.REICHSTAG);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.WHITE_WOLVES] = new StringBuilder(MyTexts.WHITE_WOLVES);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.DeadPilot] = new StringBuilder(MyTexts.DeadPilot);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.GPSNoObjectives] = new StringBuilder(MyTexts.GPSNoObjectives);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.CameraHUB] = new StringBuilder(MyTexts.CameraHUB);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.WeaponControl] = new StringBuilder(MyTexts.WeaponControl);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SecretRoomsFound] = new StringBuilder(MyTexts.SecretRoomsFound);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BackTurret] = new StringBuilder(MyTexts.BackTurret);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.BottomTurret] = new StringBuilder(MyTexts.BottomTurret);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.FrontTurret] = new StringBuilder(MyTexts.FrontTurret);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.LeftDoor] = new StringBuilder(MyTexts.LeftDoor);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.RightDoor] = new StringBuilder(MyTexts.RightDoor);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.MetersLong] = new StringBuilder(MyTexts.MetersLong);\n\t\t\tm_sb[(int)MyTextsWrapperEnum.SecondsLong] = new StringBuilder(MyTexts.SecondsLong);\n\t\t}\n\t}\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Localization/MyTextsWrapperGenerated.tt",
    "content": "﻿<#@ template debug=\"false\" hostspecific=\"true\" language=\"C#\" #>\n<#@ output extension=\".cs\" #>\n<#@ assembly name=\"System.Core\" #>\n<#@ assembly name=\"System.Xml\" #>\n<#@ assembly name=\"System.Xml.Linq\" #>\n<#@ import namespace=\"System.IO\" #>\n<#@ import namespace=\"System.Text.RegularExpressions\" #>\n<#@ import namespace=\"System.Linq\" #>\n<#@ import namespace=\"System.Xml\" #>\n<#@ import namespace=\"System.Xml.Linq\" #>\n\n<#\nstring appName = \"MinerWars Localization Generator Template\";\nstring version = \"1.0.0.0\";\n\nstring path = this.Host.ResolvePath(\"\");\nstring resxFilePath = \"..\\\\..\\\\..\\\\Resources\\\\MyTexts.resx\";\nXDocument document = XDocument.Parse(File.ReadAllText(Path.Combine(path, resxFilePath)));\n#>\n\nnamespace MinerWars.AppCode.Game.Localization\n{\n\tusing System.Text;\n\tusing MinerWars.Resources;\n\n\t[System.CodeDom.Compiler.GeneratedCode(\"<#= appName #>\", \"<#= version #>\")]\n    enum MyTextsWrapperEnum\n\t{\n<# foreach(var item in document.Element(\"root\").Elements(\"data\")) \n{ #>\n\t\t///<summary>\n\t\t///<#=item.Element(\"value\").Value.ToString().Replace(\"\\n\", \" \").Replace(\"\\r\", \" \")#>\n\t\t///</summary>\n\t\t<#=item.Attribute(\"name\").Value#>,\n<# }#>\n\t}\n\n\tstatic partial class MyTextsWrapper\n\t{\n\t\tstatic void Reload()\n        {\n<# foreach(var item in document.Element(\"root\").Elements(\"data\")) \n{ #>\n\t\t\tm_sb[(int)MyTextsWrapperEnum.<#=item.Attribute(\"name\").Value#>] = new StringBuilder(MyTexts.<#=item.Attribute(\"name\").Value#>);\n<# }#>\n\t\t}\n\t}\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Managers/MyManager.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\n\nnamespace MinerWars.AppCode.Game.Managers\n{\n    /// <summary>\n    /// Texture loading mode\n    /// </summary>\n    internal enum LoadingMode\n    {\n        /// <summary>\n        /// Texture is loaded texture immidiately.\n        /// </summary>\n        Immediate,\n\n        /// <summary>\n        /// Texture is scheduled for load on background thread.\n        /// </summary>\n        Background,\n\n        /// <summary>\n        /// Texture is loaded on first access.\n        /// </summary>\n        Lazy,\n\n        /// <summary>\n        /// Texture is loaded on first access on background thread.\n        /// </summary>\n        LazyBackground,\n    }\n\n    /// <summary>\n    /// Loading state of texture.\n    /// </summary>\n    internal enum LoadState\n    {\n        Loaded,\n        LoadYourself,\n        Pending,\n        Unloaded,\n        Error,\n        Loading,\n        LoadYourselfBackground,\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Managers/MyResource.cs",
    "content": "﻿// -----------------------------------------------------------------------\n//  <copyright file=\"MyResource.cs\" company=\"Keen Software House\">\n//      Copyright (c) Keen Software House 2011. All rights reserved.\n//  </copyright>\n//  <author>Ondřej Štorek</author>\n// -----------------------------------------------------------------------\n\nnamespace MinerWars.AppCode.Game.Managers\n{\n    using System.Collections.Generic;\n    using KeenSoftwareHouse.Library.Memory;\n    using System.Reflection;\n    using KeenSoftwareHouse.Library.Extensions;\n\n    /// <summary>\n    /// Defines object that supports collecting of sub-resources.\n    /// </summary>\n    internal interface IResourceCollector\n    {\n        /// <summary>\n        /// Collects all sub-resources of this object.\n        /// </summary>\n        /// <param name=\"collectedResources\">The collected resources.</param>\n        /// <param name=\"hierarchically\"></param>\n        void CollectResources(ICollection<MyResource> collectedResources, bool hierarchically = true);\n    }\n\n    /// <summary>\n    /// Abstract engine resource base of all engine data.\n    /// </summary>\n    internal abstract class MyResource: IResourceCollector\n    {\n        #region Constants\n\n        /// <summary>\n        /// Can read values.\n        /// </summary>\n        public const byte User = 1 << 0;\n\n        /// <summary>\n        /// Can change values and execute standard logic.\n        /// </summary>\n        public const byte Controller = 1 << 3;\n\n        /// <summary>\n        /// Can change values execute protected logic and  serialize/deserialize resource.\n        /// </summary>\n        public const byte Owner = 1 << 7;\n\n        #endregion\n\n        #region Properties\n\n        string m_name;\n\n        /// <summary>\n        /// Gets or sets the name of resource used for debug/develop purpose.\n        /// </summary>\n        /// <value>\n        /// The name.\n        /// </value>\n        public string Name\n        {\n            get\n            {\n                return m_name;\n            }\n            protected set\n            {\n                m_name = value;\n            }\n        }\n\n        /// <summary>\n        /// Gets or sets the manager.\n        /// </summary>\n        /// <value>\n        /// The manager associtated with this resource.\n        /// </value>\n        //public MyManager Manager { get; internal set; }\n\n        // removed, it's \"Storkovina\"\n        ///// <summary>\n        ///// Gets a value indicating whether this instance is activated.\n        ///// </summary>\n        ///// <value>\n        ///// \t<c>true</c> if this instance is activated; otherwise, <c>false</c>.\n        ///// </value>\n        //public bool IsActivated { get; private set; }\n\n        #endregion\n        \n        #region Methods\n\n        /// <summary>\n        /// Called when resource is [activated] for its context.\n        /// </summary>\n        /// <param name=\"source\">The source of activation.</param>\n        protected virtual void OnActivated(object source) {}\n\n        /// <summary>\n        /// Called when resource is [deactivated] for its context.\n        /// </summary>\n        /// <param name=\"source\">The source of deactivation.</param>\n        protected virtual void OnDeactivated(object source) { }\n\n        #endregion\n\n        #region Notifications methods\n\n        /// <summary>\n        /// Notifies that resource was activated.\n        /// <remarks>\n        /// This function should call direct only owner/manager of this resource.\n        /// </remarks>\n        /// </summary>\n        /// <param name=\"source\">The source of activation.</param>\n        public virtual void NotifyActivated(object source)\n        {\n            // removed, it's \"Storkovina\"\n            //this.IsActivated = true;\n\n            OnActivated(source);\n            \n            using (var ob = PoolClass<HashSet<MyResource>>.Acquire())\n            {\n                HashSet<MyResource> collectedResources = ob;\n                collectedResources.Clear();\n                \n                CollectResources(collectedResources, false);\n             \n                foreach (var collectedResource in collectedResources)\n                {\n                    collectedResource.NotifyActivated(this);\n                }\n            }\n        }\n\n        /// <summary>\n        /// Notifies that resource was deactivated.\n        /// </summary>\n        /// <remarks>\n        /// This function should call direct only owner/manager of this resource.\n        /// </remarks>\n        /// <param name=\"source\">The source of deactivation.</param>\n        public virtual void NotifyDeactivated(object source)\n        {\n            using (var ob = PoolClass<HashSet<MyResource>>.Acquire())\n            {\n                HashSet<MyResource> collectedResources = ob;\n                collectedResources.Clear();\n\n                CollectResources(collectedResources, false);\n\n                foreach (var collectedResource in collectedResources)\n                {\n                    collectedResource.NotifyDeactivated(this);\n                }\n            }\n\n            // removed, it's \"Storkovina\"\n            //this.IsActivated = false;\n\n            OnDeactivated(source);\n        }\n\n        #endregion\n        \n        #region Implementation of IResourceCollector\n\n        /// <summary>\n        /// Collects all sub-resources of this object.\n        /// </summary>\n        /// <param name=\"collectedResources\">The collected resources.</param>\n        /// <param name=\"hierarchically\">[true] collect all resources hierarchically, [false] only children.</param>\n        public virtual void CollectResources(ICollection<MyResource> collectedResources, bool hierarchically = true) { }\n\n        #endregion\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/Components/MyBlinkingObjects.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Utils;\n\nnamespace MinerWars.AppCode.Game.Missions.Components\n{\n    class MyBlinkingObjects : MyMissionComponent\n    {\n\n        private List<MyEntity> m_entities;\n        private List<uint> m_entitiesIds;\n        private Vector3 m_color;\n        private int m_nextChange;\n        private bool m_highlited;\n        private int m_blinkingPeriod;\n        private bool m_enabled;\n\n\n        public bool Enabled\n        {\n            get { return m_enabled; }\n            set { m_enabled = value;\n                m_highlited = false;\n                UpdateHighlighting();\n            }\n        }\n\n        public MyBlinkingObjects(List<uint> objects, int blinkingTime = 250, Vector3 ?color = null)\n        {\n            if (color == null) m_color = MyMissionsConstants.OBJECT_HIGHTLIGHT_COLOR;\n            else m_color = color.Value;\n            m_entitiesIds = objects;\n            m_blinkingPeriod = blinkingTime;\n            m_enabled = true;\n            m_entities = new List<MyEntity>();\n        }\n\n\n        public override void Update(MyMissionBase sender)\n        \n        {\n            base.Update(sender);\n            if (m_enabled)\n            {\n                if (sender.MissionTimer.ElapsedTime > m_nextChange)\n                {\n                    m_nextChange = sender.MissionTimer.ElapsedTime + m_blinkingPeriod;\n                    \n                    m_highlited = !m_highlited;\n                    if (m_highlited) m_nextChange = sender.MissionTimer.ElapsedTime + 2*m_blinkingPeriod;\n                    UpdateHighlighting();\n                }\n            }\n        }\n\n        private void UpdateHighlighting()\n        {   \n\n            foreach (var myEntity in m_entities)\n            {\n                if (m_highlited)\n                {\n                    myEntity.HighlightEntity(ref m_color);\n                    if (!myEntity.Closed && myEntity.Activated)\n                    {\n                        myEntity.Visible = true;\n                    }\n                    \n                }\n                else\n                {\n                    myEntity.ClearHighlightning();\n                    //myEntity.Visible = false;\n                }\n            }\n        }\n\n\n        public void AddBlinkingObject(MyEntity entity)\n        {\n            if (entity == null) return;\n\n            //If not handled here, it will make harvester+drill visible on highlighted ship\n            if ((entity is MyDrillBase) || (entity is MinerWars.AppCode.Game.Entities.SubObjects.MyHarvestingDevice))\n                return;\n\n            m_entities.Add(entity);\n            if (entity.Children != null)\n            {\n                foreach (var child in entity.Children)\n                {\n                    AddBlinkingObject(child);\n                }\n            }\n        }\n\n        public void RemoveBlinkingObject(MyEntity entity)\n        {   \n            entity.ClearHighlightning();\n            \n            while (m_entities.Remove(entity)) { };  // Remove all\n            \n            if (entity.Children != null)\n            {\n                foreach (var child in entity.Children)\n                {\n                    RemoveBlinkingObject(child);\n                }\n            }\n        }\n\n\n        public override void Success(MyMissionBase sender)\n        {\n            base.Success(sender);\n        }\n\n        public override void Load(MyMissionBase sender)\n        {\n            base.Load(sender);\n           /*\n            m_entities = new List<MyEntity>();\n            foreach (var entitiesId in m_entitiesIds)\n            {\n                var entity = MyScriptWrapper.TryGetEntity(entitiesId);\n                if (entity!=null)\n                {\n                    m_entities.Add(entity);\n                }\n            }\n            * */\n        }\n\n        public override void Unload(MyMissionBase sender)\n        {\n            m_entities.Clear();\n            m_nextChange = 0;\n            Enabled = true;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/Components/MyDetectorDialogue.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Audio.Dialogues;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\n\nnamespace MinerWars.AppCode.Game.Missions.Components\n{\n    class MyDetectorDialogue : MyMissionComponent\n    {\n        public event Action OnDialogStarted;\n        public event Action OnDialogFinished;\n\n        private readonly uint m_detectorId;\n        private readonly MyDialogueEnum m_dialogueId;\n        private MyEntityDetector m_detector;\n        \n        public MyDetectorDialogue(uint detectorId, MyDialogueEnum dialogueId)\n        {\n            m_detectorId = detectorId;\n            m_dialogueId = dialogueId;\n        }\n\n        public override void Load(MyMissionBase sender)\n        {\n            m_detector = MyScriptWrapper.GetDetector(MyScriptWrapper.GetEntity(m_detectorId));\n            m_detector.On();\n            m_detector.OnEntityEnter += DetectorOnOnEntityEnter;\n            MyScriptWrapper.OnDialogueFinished += MyScriptWrapperOnOnDialogueFinished;\n            base.Load(sender);\n        }\n\n        private void MyScriptWrapperOnOnDialogueFinished(MyDialogueEnum dialogue, bool interrupted)\n        {\n            if (dialogue == m_dialogueId)\n            {\n                if (OnDialogFinished != null) OnDialogFinished();\n            }\n        }\n\n        private void DetectorOnOnEntityEnter(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            var isEnteredWithDrone = MyGuiScreenGamePlay.Static.IsControlledDrone &&\n                                    entity == MyGuiScreenGamePlay.Static.ControlledDrone;\n\n            if(MyScriptWrapper.IsPlayerShip(entity) || isEnteredWithDrone)\n            {\n                m_detector.Off();\n                MyScriptWrapper.PlayDialogue(m_dialogueId);\n                if (OnDialogStarted != null) OnDialogStarted();\n            }\n        }\n\n        public override void Unload(MyMissionBase sender)\n        {\n            base.Unload(sender);\n            m_detector.OnEntityEnter -= DetectorOnOnEntityEnter;\n            MyScriptWrapper.OnDialogueFinished -= MyScriptWrapperOnOnDialogueFinished;\n            m_detector.Off();\n\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/Components/MyHeadshake.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWarsMath;\n\nnamespace MinerWars.AppCode.Game.Missions.Components\n{\n    class MyHeadshake : MyMissionComponent\n    {\n        public static List<int> DefaultShaking = new List<int> { 0, 350, 550, 800, 1050, 1400, 1900 };\n\n        public int? Time { get; set; }\n        public float FirstShake { get; set; }\n        public float NextShakesMin { get; set; }\n        public float NextShakesMax { get; set; }\n        public float Damping { get; set; }\n\n        private int m_shakeIndex;\n        \n        private List<int> m_shakeWaves;\n\n\n        public MyHeadshake(int? time, List<int> shakeWaves, float firstShake = 8, float nextShakesMin = 3, float nextShakesMax = 4, float damping = 0.07f)\n        {\n            Time = time;\n            FirstShake = firstShake;\n            NextShakesMin = nextShakesMin;\n            NextShakesMax = nextShakesMax;\n            Damping = damping;\n            m_shakeWaves = shakeWaves;\n        }\n\n        public override void Update(MyMissionBase sender)\n        {\n            base.Update(sender);\n\n            if (Time.HasValue)\n            {\n                if (m_shakeIndex < m_shakeWaves.Count &&\n                    sender.MissionTimer.GetElapsedTime().TotalMilliseconds > Time.Value + m_shakeWaves[m_shakeIndex])\n                {\n                    if (m_shakeIndex == 0)\n                    {\n                        MyScriptWrapper.IncreaseHeadShake(FirstShake);\n                    }\n                    else\n                    {\n                        MyScriptWrapper.IncreaseHeadShake(MyMwcUtils.GetRandomFloat(NextShakesMin, NextShakesMax) * MathHelper.Max(0, 1.0f - Damping * m_shakeIndex));\n                    }\n                    ++m_shakeIndex;\n                }\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/Components/MyMinesField.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.AppCode.Game.Explosions;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Utils;\n\nnamespace MinerWars.AppCode.Game.Missions.Components\n{\n    class MyMinesField : MyMissionComponent\n    {\n        private uint[,] m_mines;\n        private float m_mineDamage;\n        private float m_mineExplosionRadius;\n        private float m_mineStartRadius;\n        MySoundCue? m_beepCue = null;\n\n        public MyMinesField(uint[,] mines, float mineDamage = 25,float mineExplosionRadius = 25,float mineStartRadius = 10)\n        {\n            m_mines = mines;\n            m_mineDamage = mineDamage;\n            m_mineExplosionRadius = mineExplosionRadius;\n            m_mineStartRadius = mineStartRadius;\n        }\n\n        public override void Load(MyMissionBase sender)\n        {\n            base.Load(sender);\n\n            for (int i = 0; i < m_mines.GetLength(0); i++)\n            {\n                MyEntityDetector mineDetector = MyScriptWrapper.GetDetector(m_mines[i, 1]);\n                mineDetector.OnEntityPositionChange +=mineDetector_OnEntityPositionChange;\n                mineDetector.On();\n            }\n        }\n\n        private void mineDetector_OnEntityPositionChange(MyEntityDetector sender, MyEntity entity, Vector3 newposition)\n        {\n            if (sender.Closed)\n                return;\n\n            if (entity == MySession.PlayerShip)\n            {\n                if (m_beepCue == null || !m_beepCue.Value.IsPlaying)\n                {\n                    m_beepCue = MyAudio.AddCue2D(MySoundCuesEnum.SfxHudAlarmDamageA);\n                }\n\n                float distance = (entity.GetPosition() - sender.GetPosition()).Length();\n\n                if (distance < m_mineStartRadius)\n                {\n                    uint mineId = 0;\n                    for (int i = 0; i < m_mines.GetLength(0); i++)\n                    {\n                        if (m_mines[i, 1] == sender.Parent.EntityId.Value.NumericValue)\n                        {\n                            mineId = m_mines[i, 0];\n                        }\n                    }\n                    ExplodeMine(mineId);\n                    sender.Off();\n                    sender.Parent.MarkForClose();\n                }\n\n            }\n        }\n\n        public void ExplodeMine(uint entityId)\n        {\n            MyEntity mine = MyScriptWrapper.GetEntity(entityId);\n            MyExplosion newExplosion = MyExplosions.AddExplosion();\n            if (newExplosion != null)\n            {\n                newExplosion.Start(0, m_mineDamage, 0, MyExplosionTypeEnum.BOMB_EXPLOSION, new BoundingSphere(mine.GetPosition(), m_mineExplosionRadius), MyExplosionsConstants.EXPLOSION_LIFESPAN, 1, ownerEntity: mine);\n            }\n            mine.MarkForClose();\n        }\n\n\n        public override void Update(MyMissionBase sender)\n        {\n            base.Update(sender);\n        }\n\n        public override void Success(MyMissionBase sender)\n        {\n            base.Success(sender);\n        }\n\n        public override void Unload(MyMissionBase sender)\n        {\n            base.Unload(sender);\n\n            for (int i = 0; i < m_mines.GetLength(0); i++)\n            {\n                MyEntityDetector mineDetector = MyScriptWrapper.GetDetector(m_mines[i, 1]);\n               //mineDetector.OnEntityPositionChange -= mineDetector_OnEntityPositionChange;\n                //mineDetector.On();\n            }\n        }\n\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/Components/MyMovingEntity.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Utils;\nusing System.Diagnostics;\n\nnamespace MinerWars.AppCode.Game.Missions.Components\n{\n    class MyMovingEntity : MyMissionComponent\n    {\n\n        private readonly uint? m_shipId;\n        private readonly string m_shipName;\n        private readonly uint m_targetId;\n        private readonly int m_time;\n        private readonly bool m_isShip;\n\n        private float m_progress;\n\n        private MyEntity m_ship;\n        private MyLine m_trajectory;\n        private bool m_shipMoving = false;\n\n        public MyMovingEntity(uint shipId, uint targetId, int timeMilliseconds, bool isShip = true)\n        {\n            m_shipId = shipId;\n            m_targetId = targetId;\n            m_time = timeMilliseconds;\n            m_isShip = isShip;\n        }\n\n\n        public MyMovingEntity(string shipName, uint targetId, int timeMilliseconds, bool isShip = true)\n        {\n            m_shipName = shipName;\n            m_targetId = targetId;\n            m_time = timeMilliseconds;\n            m_isShip = isShip;\n        }\n\n\n        public override void Load(MyMissionBase sender)\n        {\n            base.Load(sender);\n            m_ship = m_shipId.HasValue ? MyScriptWrapper.GetEntity(m_shipId.Value) : MyScriptWrapper.GetEntity(m_shipName);\n            m_trajectory = new MyLine(m_ship.GetPosition(), MyScriptWrapper.GetEntity(m_targetId).GetPosition());\n            \n            if (m_isShip)\n            {\n                MyScriptWrapper.PrepareMotherShipForMove(m_ship);\n            }\n            m_shipMoving = true;\n        }\n\n\n\n        public override void Update(MyMissionBase sender)\n        {\n            base.Update(sender);\n            var progress = sender.MissionTimer.ElapsedTime / (float)m_time;\n            if (progress < 1.0f && m_shipMoving)\n            {\n                var position = Vector3.SmoothStep(m_trajectory.From, m_trajectory.To, progress);\n                MyScriptWrapper.Move(m_ship, position);\n            }\n            else\n            {\n                StopShip();\n            }\n        }\n\n        public void StopShip()\n        {\n            if (m_shipMoving)\n            {\n                m_shipMoving = false;\n                if (m_isShip)\n                {\n                    MyScriptWrapper.ReturnMotherShipFromMove(m_ship);\n                }\n            }\n        }\n\n        public override void Unload(MyMissionBase sender)\n        {\n            base.Unload(sender);\n\n            //Ensure that entity is on the end of trajectory\n            if (m_shipMoving)\n            {\n                MyScriptWrapper.Move(m_ship, m_trajectory.To);\n\n                if (!MyFakes.TEST_MISSION_GAMEPLAY)\n                {\n                    Debug.Assert(!sender.IsCompleted() || Vector3.Distance(m_ship.GetPosition(), m_trajectory.To) < 0.1);\n                } \n            }\n\n            StopShip();\n        }\n\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/Components/MySpawnpointLimiter.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Entities;\n\nnamespace MinerWars.AppCode.Game.Missions.Components\n{\n    /// <summary>\n    /// The given spawnpoints will spawn bots only if the bot count is below maxBotCount.\n    /// </summary>\n    class MySpawnpointLimiter : MyMissionComponent\n    {\n        private uint[] m_spawnpointIDs;\n        public int MaxBotCount = 0;\n\n        public MySpawnpointLimiter(uint[] spawnpointIDs, int maxBotCount)\n        {\n            m_spawnpointIDs = spawnpointIDs;\n            MaxBotCount = maxBotCount;\n        }\n\n        public int CurrentBotCount\n        {\n            get {\n                int count = 0;\n                foreach (uint id in m_spawnpointIDs)\n                {\n                    MySpawnPoint spawnpoint;\n                    if (MyEntities.TryGetEntityById(new MyEntityIdentifier(id), out spawnpoint))\n                        count += spawnpoint.GetShipCount();\n                }\n                return count;\n            }\n        }\n\n        public override void Load(MyMissionBase sender)\n        {\n            base.Load(sender);\n\n            foreach (uint id in m_spawnpointIDs)\n            {\n                MySpawnPoint spawnpoint;\n                if (MyEntities.TryGetEntityById(new MyEntityIdentifier(id), out spawnpoint))\n                    spawnpoint.AddLimiter(this);\n            }\n        }\n\n        public override void Unload(MyMissionBase sender)\n        {\n            base.Unload(sender);\n\n            foreach (uint id in m_spawnpointIDs)\n            {\n                MySpawnPoint spawnpoint;\n                if (MyEntities.TryGetEntityById(new MyEntityIdentifier(id), out spawnpoint))\n                    spawnpoint.RemoveLimiter(this);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/Components/MySpawnpointSmartWaves.cs",
    "content": "﻿#region Using\n\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.AppCode.Game.Sessions;\n\n#endregion\n\nnamespace MinerWars.AppCode.Game.Missions.Components\n{\n    class MySpawnpointSmartWaves : MyMissionComponent\n    {\n        #region Members\n\n        private uint[] m_spawnPointIDs;\n        private uint[] m_excludedSpawnPointIDs;\n        private List<MySpawnPoint> m_spawnPoints = new List<MySpawnPoint>();\n        private int m_maxBotsCount = 0;\n        private int m_currentBotsCount = 0;\n\n        private List<MyEntity> m_spawnedBots = new List<MyEntity>();\n        SortedDictionary<float, MySpawnPoint> m_sortedSpawnPoints = new SortedDictionary<float, MySpawnPoint>();\n\n        bool m_spawnInGroups;\n        int m_spawnInterval;\n\n        #endregion\n\n        #region Constructor\n\n        public MySpawnpointSmartWaves(uint[] spawnPointIDs, uint[] excludedSpawnPointIDs, int maxBotsCount)\n        {\n            m_spawnPointIDs = spawnPointIDs;\n            m_excludedSpawnPointIDs = excludedSpawnPointIDs ?? new uint[0];\n            m_maxBotsCount = maxBotsCount;\n        }\n\n        #endregion\n\n        #region Overrides\n\n        public override void Load(MyMissionBase sender)\n        {\n            base.Load(sender);\n            m_spawnPoints.Clear();\n\n            if (m_spawnPointIDs == null)\n            {   //Add all spawnpoints in mission\n                List<uint> list = new List<uint>();\n                foreach (MyEntity entity in MyEntities.GetEntities())\n                {\n                    MySpawnPoint spawnPoint = entity as MySpawnPoint;\n                    if (spawnPoint != null && MyFactions.GetFactionsRelation(MySession.PlayerShip.Faction, spawnPoint.Faction) == MyFactionRelationEnum.Enemy && !m_excludedSpawnPointIDs.Contains(spawnPoint.EntityId.Value.NumericValue))\n                    {\n                        list.Add(spawnPoint.EntityId.Value.NumericValue);\n                        spawnPoint.OnActivatedChanged += new Action<MySpawnPoint>(spawnPoint_OnActivatedChanged);\n                    }\n                }\n                m_spawnPointIDs = list.ToArray();\n            }\n\n            foreach (uint spawnPointID in m_spawnPointIDs)\n            {\n                m_spawnPoints.Add(MyEntities.GetEntityById(new MyEntityIdentifier(spawnPointID)) as MySpawnPoint);\n            }\n\n            MyScriptWrapper.OnSpawnpointBotSpawned += OnSpawnpointBotSpawned;\n            \n            m_currentBotsCount = 0;\n\n            foreach (MySpawnPoint spawnPoint in m_spawnPoints)\n            {\n                spawnPoint.LeftToSpawn = 0;\n                spawnPoint.FirstSpawnTimer = 0;\n                spawnPoint.RespawnTimer = 0;\n\n                m_currentBotsCount += spawnPoint.GetShipCount();\n                spawnPoint.Deactivate();\n            }\n\n            UpdateCurrentBotCount();\n        }\n\n        void spawnPoint_OnActivatedChanged(MySpawnPoint obj)\n        {\n            UpdateCurrentBotCount();\n        }\n\n        public override void Unload(MyMissionBase sender)\n        {\n            base.Unload(sender);\n\n            m_spawnPoints.Clear();\n            m_sortedSpawnPoints.Clear();\n\n            MyScriptWrapper.OnSpawnpointBotSpawned -= OnSpawnpointBotSpawned;\n        }\n\n\n        void OnSpawnpointBotSpawned(MyEntity spawnpoint, MyEntity bot)\n        {\n            if (m_spawnPoints.Contains(spawnpoint))\n            {\n                m_currentBotsCount++;\n\n                bot.OnClose += new Action<MyEntity>(bot_OnClose);\n\n                MySmallShipBot botShip = bot as MySmallShipBot;\n                botShip.SleepDistance = 10000;\n                botShip.Attack(ChooseClosestPlayer(bot));\n            }\n        }\n\n        MyEntity ChooseClosestPlayer(MyEntity bot)\n        {\n            if (MyMultiplayerGameplay.IsHosting)\n            {\n                var closestEntity = MySession.PlayerShip;\n                var distSquared = Vector3.DistanceSquared(bot.GetPosition(), MySession.PlayerShip.GetPosition());\n\n                foreach (var player in MyMultiplayerGameplay.Peers.Players)\n                {\n                    if (player.Ship != null && !player.Ship.IsDead() && !player.Ship.IsPilotDead())\n                    {\n                        var newDistSquared = Vector3.DistanceSquared(player.Ship.GetPosition(), closestEntity.GetPosition());\n                        if (newDistSquared < distSquared)\n                        {\n                            distSquared = newDistSquared;\n                            closestEntity = player.Ship;\n                        }\n                    }\n                }\n\n                return closestEntity;\n            }\n            else\n            {\n                return MySession.PlayerShip;\n            }\n        }\n\n        void bot_OnClose(MyEntity obj)\n        {\n            m_currentBotsCount--;\n\n            UpdateCurrentBotCount();\n        }\n\n        void UpdateCurrentBotCount()\n        {\n            bool canSpawn = SpawnInGroups ? m_currentBotsCount == 0 : m_currentBotsCount < MaxBotsCount;\n\n            if (canSpawn)\n            {\n                //Get closest spawnpoint not closer than 700m\n                float minAllowedDistance = 700; //m\n\n                m_sortedSpawnPoints.Clear();\n\n                foreach (MySpawnPoint spawnPoint in m_spawnPoints)\n                {\n                    //if (!spawnPoint.IsActive())\n                      //  continue;\n\n                    float distance = Vector3.Distance(spawnPoint.GetPosition(), MySession.PlayerShip.GetPosition());\n                    m_sortedSpawnPoints.Add(distance, spawnPoint);\n                }\n\n                int needSpawn = m_maxBotsCount - m_currentBotsCount;\n                while (needSpawn > 0 && m_sortedSpawnPoints.Count > 0)\n                {\n                    KeyValuePair<float, MySpawnPoint>? idealSpawnPoint = null;\n\n                    foreach (var pair in m_sortedSpawnPoints)\n                    {\n                        if (pair.Key >= minAllowedDistance)\n                        {\n                            idealSpawnPoint = pair;\n                            break;\n                        }\n                    }\n\n                    if (idealSpawnPoint == null)\n                    {   //Pick farthest spawn point\n                        foreach (var pair in m_sortedSpawnPoints)\n                        {\n                            idealSpawnPoint = pair;\n                        }\n                    }\n\n                    if (idealSpawnPoint != null)\n                    {\n                        int spawnBotsCount = Math.Min(needSpawn, idealSpawnPoint.Value.Value.GetBots().Count - idealSpawnPoint.Value.Value.GetShipCount());\n                        idealSpawnPoint.Value.Value.LeftToSpawn = spawnBotsCount;\n                        idealSpawnPoint.Value.Value.SpawnInGroups = false;\n                        idealSpawnPoint.Value.Value.Activate();\n\n                        idealSpawnPoint.Value.Value.FirstSpawnTimer = SpawnIntervalInMS;\n                        idealSpawnPoint.Value.Value.RespawnTimer = SpawnIntervalInMS;\n\n                        needSpawn -= spawnBotsCount;\n                        m_sortedSpawnPoints.Remove(idealSpawnPoint.Value.Key);\n                    }\n                }\n            }\n        }\n\n        public override void Update(MyMissionBase sender)\n        {\n            base.Update(sender);\n        }\n\n        public override void Success(MyMissionBase sender)\n        {\n            base.Success(sender);\n        }\n\n        #endregion\n\n        #region Properties\n\n        public bool SpawnInGroups\n        {\n            get { return m_spawnInGroups; }\n            set\n            {\n                m_spawnInGroups = value;\n                UpdateCurrentBotCount();\n            }\n        }\n\n        public int MaxBotsCount\n        {\n            get { return m_maxBotsCount; }\n            set\n            {\n                m_maxBotsCount = value;\n                UpdateCurrentBotCount();\n            }\n        }\n\n        public int SpawnIntervalInMS\n        {\n            get { return m_spawnInterval; }\n            set\n            {\n                m_spawnInterval = value;\n                UpdateCurrentBotCount();\n            }\n        }\n\n#endregion\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/Components/MySpawnpointWaves.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.AppCode.Game.Entities;\n\nnamespace MinerWars.AppCode.Game.Missions.Components\n{\n    class MySpawnpointWaves : MyMissionComponent\n    {\n        private uint m_detectorID;\n        private MyEntityDetector m_detector;\n\n        private List<MyEntity> m_spawnedBots;\n        private List<uint[]> m_waves;\n\n        private int m_currentWave;\n        private int m_botsToNextWave;\n        private int m_waveShipCount;\n\n        public MySpawnpointWaves(uint detectorID, int botsToNextWave)\n            : this(detectorID, botsToNextWave, new List<uint[]>())\n        {\n        }\n\n        public MySpawnpointWaves(uint detectorID, int botsToNextWave, uint spawnpointID)\n            : this(detectorID, botsToNextWave, new List<uint[]>() { new uint[] { spawnpointID } })\n        {\n        }\n\n        public MySpawnpointWaves(uint detectorID, int botsToNextWave, List<uint[]> waves)\n        {\n            m_detectorID = detectorID;\n            m_waves = waves;\n            m_botsToNextWave = botsToNextWave;\n        }\n\n        public void AddWave(uint[] spawnpoints)\n        {\n            m_waves.Add(spawnpoints);\n        }\n\n        public override void Load(MyMissionBase sender)\n        {\n            base.Load(sender);\n\n            m_detector = MyScriptWrapper.GetDetector(m_detectorID);\n            if (m_detector != null)\n            {\n                m_detector.OnEntityEnter += OnDetector;\n                m_detector.On();\n            }\n\n            m_currentWave = 0;\n            m_spawnedBots = new List<MyEntity>();\n        }\n\n        public override void Unload(MyMissionBase sender)\n        {\n            base.Unload(sender);\n\n            if (m_detector != null)\n            {\n                m_detector.OnEntityEnter -= OnDetector;\n                m_detector.Off();\n            }\n\n            MyScriptWrapper.OnSpawnpointBotSpawned -= OnSpawnpointBotSpawned;\n            MyScriptWrapper.EntityDeath -= EntityDeath;\n        }\n\n        void OnDetector(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (entity != null && entity == MinerWars.AppCode.Game.Managers.Session.MySession.PlayerShip)\n            {\n                MyScriptWrapper.OnSpawnpointBotSpawned += OnSpawnpointBotSpawned;\n                MyScriptWrapper.EntityDeath += EntityDeath;\n\n                SpawnNewWave(0);\n\n                m_detector.OnEntityEnter -= OnDetector;\n            }\n        }\n\n        void OnSpawnpointBotSpawned(MyEntity spawnpoint, MyEntity bot)\n        {\n            if (m_currentWave >= m_waves.Count)\n            {\n                return;\n            }\n\n            foreach (var spawnpoints in m_waves)\n            {\n                foreach (var spawnPointId in m_waves[m_currentWave])\n                {\n                    if (MyScriptWrapper.GetEntityId(spawnpoint) == spawnPointId)\n                    {\n                        --m_waveShipCount;\n                        m_spawnedBots.Add(bot);\n                        return;\n                    }\n                }\n            }\n        }\n\n        void EntityDeath(MyEntity who, MyEntity by)\n        {\n            if (m_spawnedBots.Remove(who) &&\n                m_currentWave < m_waves.Count &&\n                m_spawnedBots.Count <= m_botsToNextWave &&\n                m_waveShipCount == 0)\n            {\n                ++m_currentWave;\n                SpawnNewWave(m_currentWave);\n            }\n        }\n\n        private void SpawnNewWave(int waveIndex)\n        {\n            if (m_currentWave < m_waves.Count)\n            {\n                m_waveShipCount = 0;\n                foreach (var spawnpointId in m_waves[m_currentWave])\n                {\n                    MyScriptWrapper.ActivateSpawnPoint(spawnpointId);\n\n                    MySpawnPoint spawnpoint = MyScriptWrapper.TryGetEntity(spawnpointId) as MySpawnPoint;\n                    if (spawnpoint != null)\n                    {\n                        m_waveShipCount += spawnpoint.LeftToSpawn + spawnpoint.GetShipCount();\n                    }\n                }\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/Components/MyTimedDialogue.cs",
    "content": "﻿using System;\nusing MinerWars.AppCode.Game.Audio.Dialogues;\n\nnamespace MinerWars.AppCode.Game.Missions.Components\n{\n    class MyTimedDialogue : MyMissionComponent\n    {\n        readonly TimeSpan m_startTime;\n        readonly MyDialogueEnum m_dialogue;\n\n        public MyTimedDialogue(TimeSpan startTime, MyDialogueEnum dialogue)\n        {\n            m_startTime = startTime;\n            m_dialogue = dialogue;\n        }\n\n        public override void Load(MyMissionBase sender)\n        {\n            base.Load(sender);\n\n            sender.MissionTimer.RegisterTimerAction(m_startTime, OnAllTimeElapsed);\n        }\n\n        void OnAllTimeElapsed()\n        {\n            MyScriptWrapper.PlayDialogue(m_dialogue);\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/MyActorProgress.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\n\nnamespace MinerWars.AppCode.Game.Missions\n{\n    static class MyActorProgress\n    {\n        public static void SetupActors(MyMissionID missionID)\n        {\n            int missionNumber = MyMissions.GetMissionNumber(missionID);\n            if (missionNumber < 0)\n            {\n                return;\n            }\n\n            MyEntity entity;\n            if (MyEntities.TryGetEntityByName(\"Marcus\", out entity))\n            {\n                var marcus = entity as MySmallShipBot;\n                SetupMarcus(missionNumber, marcus);\n            }\n\n            if (MyEntities.TryGetEntityByName(\"RavenGirl\", out entity))\n            {\n                var tarja = entity as MySmallShipBot;\n                SetupTarja(missionNumber, tarja);\n            }\n\n            if (MyEntities.TryGetEntityByName(\"RavenGuy\", out entity))\n            {\n                var valentin = entity as MySmallShipBot;\n                SetupValentin(missionNumber, valentin);\n            }\n        }\n\n        private static void SetupMarcus(int missionNumber, MySmallShipBot marcus)\n        {\n            if (marcus != null)\n            {\n                marcus.Engine = new MyMwcObjectBuilder_SmallShip_Engine(MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.Nuclear_1);\n                if (missionNumber <= 1)\n                {\n                    marcus.SetEquip(new List<MyMwcObjectBuilder_SmallShip_Weapon>\n                        {\n                            new MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Machine_Gun),\n                            new MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Machine_Gun),\n                        },\n                    new List<MyMwcObjectBuilder_InventoryItem>\n                        {\n                            new MyMwcObjectBuilder_InventoryItem(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Machine_Gun_Basic), 100),\n                        });\n                }\n                else if (missionNumber == 2)\n                {\n                    marcus.SetEquip(new List<MyMwcObjectBuilder_SmallShip_Weapon>\n                        {\n                            new MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Machine_Gun),\n                            new MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Machine_Gun),\n                            new MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Shotgun),\n                        },\n                    new List<MyMwcObjectBuilder_InventoryItem>\n                        {\n                            new MyMwcObjectBuilder_InventoryItem(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Machine_Gun_Basic), 100),\n                            new MyMwcObjectBuilder_InventoryItem(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Shotgun_Basic), 100),\n                        });\n                }\n                else if (missionNumber == 3)\n                {\n                    marcus.SetEquip(new List<MyMwcObjectBuilder_SmallShip_Weapon>\n                        {\n                            new MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Machine_Gun),\n                            new MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Machine_Gun),\n                            new MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Shotgun),\n                            new MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Missile_Launcher),\n                        },\n                    new List<MyMwcObjectBuilder_InventoryItem>\n                        {\n                            new MyMwcObjectBuilder_InventoryItem(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Machine_Gun_Basic), 100),\n                            new MyMwcObjectBuilder_InventoryItem(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Shotgun_Basic), 100),\n                            new MyMwcObjectBuilder_InventoryItem(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Missile_Basic), 10),\n                        });\n                }\n                else if (missionNumber >= 4)\n                {\n                    marcus.SetEquip(new List<MyMwcObjectBuilder_SmallShip_Weapon>\n                        {\n                            new MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Machine_Gun),\n                            new MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Machine_Gun),\n                            new MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Shotgun),\n                            new MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Missile_Launcher),\n                            new MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Sniper),\n                        },\n                    new List<MyMwcObjectBuilder_InventoryItem>\n                        {\n                            new MyMwcObjectBuilder_InventoryItem(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Machine_Gun_Basic), 100),\n                            new MyMwcObjectBuilder_InventoryItem(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Shotgun_Basic), 100),\n                            new MyMwcObjectBuilder_InventoryItem(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Guided_Missile_Visual_Detection), 10),\n                            new MyMwcObjectBuilder_InventoryItem(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Sniper_High_Speed), 10),\n                        });\n                }\n            }\n        }\n\n        private static void SetupTarja(int missionNumber, MySmallShipBot tarja)\n        {\n            if (tarja != null)\n            {\n                tarja.Engine = new MyMwcObjectBuilder_SmallShip_Engine(MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.Nuclear_1);\n                tarja.SetEquip(new List<MyMwcObjectBuilder_SmallShip_Weapon>\n                    {\n                        new MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Autocanon),\n                        new MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Autocanon),\n                        new MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Missile_Launcher),\n                    },\n                    new List<MyMwcObjectBuilder_InventoryItem>\n                    {\n                        new MyMwcObjectBuilder_InventoryItem(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_Basic), 100),\n                        new MyMwcObjectBuilder_InventoryItem(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Guided_Missile_Visual_Detection), 10),\n                    });\n            }\n        }\n\n        private static void SetupValentin(int missionNumber, MySmallShipBot valentin)\n        {\n            if (valentin != null)\n            {\n                valentin.Engine = new MyMwcObjectBuilder_SmallShip_Engine(MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.Nuclear_1);\n                valentin.SetEquip(new List<MyMwcObjectBuilder_SmallShip_Weapon>\n                    {\n                        new MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Machine_Gun),\n                        new MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Machine_Gun),\n                        new MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Missile_Launcher),\n                    },\n                    new List<MyMwcObjectBuilder_InventoryItem>\n                    {\n                        new MyMwcObjectBuilder_InventoryItem(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Machine_Gun_Basic), 100),\n                        new MyMwcObjectBuilder_InventoryItem(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Guided_Missile_Visual_Detection), 10),\n                    });\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/MyFriendlyFire.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Entities.Ships.AI;\nusing MinerWars.AppCode.Game.GUI.Helpers;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Sessions;\nusing MinerWars.CommonLIB.AppCode.Networking.Multiplayer;\nusing MinerWars.AppCode.Game.Audio.Dialogues;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.AppCode.Game.Entities;\n\nnamespace MinerWars.AppCode.Game.Missions\n{\n    static class MyFriendlyFire\n    {\n        private static float? m_gameOverTimer;\n\n        public static void Load()\n        {\n            m_gameOverTimer = null;\n        }\n\n        public static void Unload()\n        {\n            m_gameOverTimer = null;\n        }\n\n        public static void MakeEnemy(MyMwcObjectBuilder_FactionEnum shipFaction)\n        {\n            // Order bots to kill player\n            foreach (var bot in MyBotCoordinator.GetBots())\n            {\n                var relation = MyFactions.GetFactionsRelation(shipFaction, bot.Faction);\n                if (relation == MyFactionRelationEnum.Friend || relation == MyFactionRelationEnum.Neutral)\n                {\n                    bot.Attack(MySession.PlayerShip);\n                }\n            }\n\n            MyScriptWrapper.SetPlayerFaction(MyMwcObjectBuilder_FactionEnum.Freelancers);\n\n\n            MyMissions.DisableSaveObjectives();\n        }\n\n        public static void StartGameoverTimer()\n        {\n            if (m_gameOverTimer == null)\n            {\n                MyAudio.AddCue2D(MySoundCuesEnum.SfxClaxonAlert); \n                MySmallShipBot.PlayFriendlyFireCue();\n                MyDialogues.Stop();\n                m_gameOverTimer = 10.0f; // 10s\n            }\n        }\n\n        public static void Fail()\n        {\n            MySession.Static.GameOver(MyTextsWrapperEnum.CriticalFriendlyFireDetected);\n            m_gameOverTimer = null;\n        }\n\n        public static void Update()\n        {\n            // Handle friendly fire aggro\n            if (m_gameOverTimer != null)\n            {\n                m_gameOverTimer -= MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS;\n                if (m_gameOverTimer.Value < 0 && MyGuiScreenGamePlay.Static.IsGameStoryActive())\n                {\n                    Fail();\n\n                    if (MyMultiplayerGameplay.IsRunning)\n                    {\n                        MyMultiplayerGameplay.Static.FriendlyFire(MyFriendlyFireEnum.GAME_FAILED);\n                    }\n                }\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/MyMission.cs",
    "content": "﻿using System.Collections.Generic;\nusing System.Diagnostics;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.HUD;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.SolarSystem;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Gameplay;\nusing MinerWars.AppCode.Game.World.Global;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWarsMath;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.AppCode.Game.World;\nusing System;\nusing System.Linq;\nusing MinerWars.AppCode.Game.Sessions;\nusing MinerWars.CommonLIB.AppCode.Networking.Multiplayer;\nusing MinerWars.AppCode.Game.Prefabs;\n\nnamespace MinerWars.AppCode.Game.Missions\n{\n    [Flags]\n    public enum MyMissionFlags\n    {\n        None  = 0,\n        Story = 1 << 0,\n        HiddenInSolarMap = 1 << 1,\n    }\n\n    abstract class MyMission : MyMissionBase\n    {\n        public MyMissionFlags Flags;\n        protected List<MyObjective> m_objectives;\n        protected List<MyObjective> m_activeObjectives;\n        public static List<MyObjective> m_activeObjectiveBuffer = new List<MyObjective>();\n\n        public List<MyObjective> Objectives\n        {\n            get { return m_objectives; }\n        }\n\n        public List<MyObjective> ActiveObjectives\n        {\n            get { return m_activeObjectives; }\n        }\n\n        public MyMission()\n        {\n            m_activeObjectives = new List<MyObjective>();\n        }\n\n        public virtual bool IsValid() \n        {\n            return Objectives != null && Objectives.Count > 0 && Location != null;\n        }\n\n        /// <summary>\n        /// Returns true when current sector is mission location\n        /// </summary>\n        public bool IsMainSector\n        {\n            get\n            {\n                return Location.Sector.Equals(MyGuiScreenGamePlay.Static.GetSectorIdentifier().Position);\n            }\n        }\n\n        public MyMwcVector3Int GetCurrentSector()\n        {\n            return MyGuiScreenGamePlay.Static.GetSectorIdentifier().Position;\n        }\n\n        public override bool IsAvailable()\n        {\n            return (MyMissions.ActiveMission == null) && base.IsAvailable();\n        }\n\n        public virtual void ValidateIds()\n        {\n        }\n\n        private void RefillMerchants()\n        {\n            foreach (var c in MyEntities.GetEntities().OfType<MyPrefabContainer>())\n            {\n                if (c.Inventory.TemplateType == null)\n                    continue;\n\n                foreach (var p in c.GetPrefabs(CategoryTypesEnum.OTHER))\n                {\n                    if (p.PrefabTypeFlag == PrefabTypesFlagEnum.Vendor)\n                    {\n                        c.RefillInventory();\n                        break;\n                    }\n                }\n            }\n        }\n\n        /// <summary>\n        /// Accept is called just once, only when player Accepts mission by button, or mission is Accepted from game. By calling Accept, player starts to play the mission.\n        /// </summary>\n        public virtual void Accept()\n        {\n            MyScriptWrapper.Log(\"Mission {0} started.\", NameTemp);\n\n            Debug.Assert(MyMissions.ActiveMission == null);\n\n            MySession.Static.EventLog.AddMissionStarted(ID);\n\n            RefillMerchants();\n            InsertRequiredActors();\n            Load();\n\n            ValidateIds();\n\n            MyMissions.CreateChapter = true;\n            MyMissions.NeedsSave = true;\n        }\n\n        /// <summary>\n        ///  Is called whenever the mission/submission is loaded or started. Initialize your members here, adjust properties of existing scene.\n        /// </summary>\n        public override void Load()\n        {\n            MyMwcLog.WriteLine(\"MyMission.Load - START\");\n\n            base.Load();\n\n            if (MyFakes.SET_ACTOR_PROGRESS)\n            {\n                MyActorProgress.SetupActors(ID);\n            }\n            \n            MyScriptWrapper.Log(\"Mission {0} loaded.\", DebugName);\n\n            MyMissions.ActiveMission = this;\n\n            m_activeObjectives.Clear();\n\n            UpdateActiveObjectives();\n\n            MyGuiScreenGamePlay.Static.RefillMadelyn();\n\n            //MyGlobalEvents.DisableAllGlobalEvents();\n\n            MakeAllRequiredEntitiesIndestructible();\n\n            if (MyMultiplayerGameplay.IsRunning && MyMultiplayerGameplay.Static.IsHost) // Change name of the game based on current mission\n            {\n                MyMultiplayerGameplay.Static.UpdateGameInfo();\n            }\n\n            MyMwcLog.WriteLine(\"MyMission.Load - END\");\n        }\n\n\n        private void MakeAllRequiredEntitiesIndestructible()\n        {\n            foreach (var objective in Objectives)\n            {\n                if (objective.MakeEntityIndestructible && !MySession.Static.EventLog.IsMissionFinished(objective.ID))\n                {\n                    SetEntitiesIndestructible(objective.RequiredEntityIDs);\n                    SetEntitiesIndestructible(objective.MissionEntityIDs);\n                }\n            }\n        }\n\n        private void SetEntitiesIndestructible(List<uint> entityIDs)\n        {\n            foreach (uint entityID in entityIDs)\n            {\n                MyEntity entity = MyEntities.GetEntityById(new MyEntityIdentifier(entityID));\n                MyScriptWrapper.SetEntityDestructible(entity, false);\n            }\n        }\n\n        /// <summary>\n        /// Is called whenever mission/Submission gets obsolete. Clean your allocations/handlers here.\n        /// </summary>\n        public override void Unload()\n        {\n            MyScriptWrapper.Log(\"Mission {0} unloaded.\", DebugName);\n            System.Diagnostics.Debug.Assert(MyMissions.ActiveMission == this);\n\n            base.Unload();\n            foreach (var objective in m_activeObjectives)\n            {\n                objective.Unload();\n            }\n\n            m_activeObjectiveBuffer.Clear();\n\n            MyMissions.ActiveMission = null;\n\n            if (MyMultiplayerGameplay.IsRunning && MyMultiplayerGameplay.Static.IsHost) // Change name of the game based on current mission\n            {\n                MyMultiplayerGameplay.Static.UpdateGameInfo();\n            }\n            MarkedForUnload = false;\n            m_failReason = null;\n            //MyGlobalEvents.EnableAllGlobalEvents();\n        }\n\n        public override void Update()\n        {\n            m_activeObjectiveBuffer.Clear();\n            foreach (var m in m_activeObjectives)\n            {\n                m_activeObjectiveBuffer.Add(m);\n            }\n\n            base.Update();\n            foreach (var objective in m_activeObjectiveBuffer)\n            {\n                if (m_activeObjectives.Contains(objective))\n                {\n                    objective.Update();\n                }\n            }\n\n            if (m_activeObjectiveBuffer.Count == 0 && !MarkedForUnload)\n            {\n                TestSuccess();\n            }\n        }\n\n        public override void Success()\n        {\n            if (MarkedForUnload)\n                return;\n\n            MySession.Static.EventLog.MissionFinished(ID);\n\n            if (MyMultiplayerGameplay.IsRunning)\n            {\n                MyMultiplayerGameplay.Static.SendMissionProgress(this, CommonLIB.AppCode.Networking.Multiplayer.MyMissionProgressType.Success);\n            }\n\n            base.Success();\n            // temporary disabled\n            //MyAudio.AddCue2D(MySoundCuesEnum.SfxMissionComplete);\n\n            MyScriptWrapper.Log(\"Mission {0} success.\", DebugName);\n\n            MarkedForUnload = true;\n\n            MyMissions.NeedsSave = true;\n        }\n\n        public bool MarkedForUnload { get; private set; }\n        \n        private MyTextsWrapperEnum? m_failReason;\n\n        public override void Fail(MyTextsWrapperEnum? customMessage = null)\n        {\n            if (customMessage == null)\n                customMessage = MyTextsWrapperEnum.MP_YouHaveBeenKilled;\n            if (m_failReason != null)\n                customMessage = m_failReason;  // first fail reason has priority (usually a custom one from the script)\n\n            MyScriptWrapper.Log(\"Mission {0} fail.\", DebugName);\n            base.Fail(customMessage);\n\n            m_failReason = customMessage;\n            MySession.Static.GameOver(m_failReason);\n\n            MarkedForUnload = true;\n        }\n\n        public void ObjectiveCompleted(MyObjective completedObjective)\n        {\n            UpdateActiveObjectives();\n\n            //if (m_activeSubmissions.Count == 0)\n            TestSuccess();\n\n            if (completedObjective.ShowNotificationOnSuccess)\n            {\n                ShowObjectiveCompleted();\n            }\n        }\n\n        private void TestSuccess()\n        {\n            if (MySession.Static.EventLog.AreMissionsFinished(RequiredMissionsForSuccess))\n            {\n                Success();\n            }\n        }\n\n        public static void ShowObjectiveCompleted()\n        {\n            var notification = new MyHudNotification.MyNotification(\n                MyTextsWrapperEnum.NotificationObjectiveComplete,\n                MyHudNotification.GetCurrentScreen(),\n                .85f,\n                MyHudConstants.MISSION_FONT,\n                MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER,\n                15000); // TODO constant\n\n            MyHudNotification.AddNotification(notification);\n        }\n\n        protected void UpdateActiveObjectives()\n        {\n            foreach (var objective in m_objectives)\n            {\n                if (objective.IsAvailable())\n                {\n                    if (!m_activeObjectives.Contains(objective))\n                    {\n                        // New submission add to active subbmissions\n                        m_activeObjectives.Add(objective);\n\n                        objective.InsertRequiredActors();\n                        objective.SetLocationVisibility(true);\n\n                        objective.Load();\n\n                        if (MyMultiplayerGameplay.IsHosting)\n                        {\n                            MyMultiplayerGameplay.Static.SendMissionProgress(objective, MyMissionProgressType.NewObjective);\n                        }\n                    }\n                }\n                else\n                {\n                    if (m_activeObjectives.Remove(objective))\n                    {\n                        //This is the only place where objective is unloaded\n                        objective.Unload();\n                    }\n                }\n            }\n\n            Debug.Assert(m_activeObjectives.Count <= 1, \"Now there can be only one active objective\");\n        }\n\n        public override void AddSolarMapMarks(MySolarSystemMapData data)\n        {\n            foreach (var objective in ActiveObjectives)\n            {\n                if (objective.Location != null && !MyGuiScreenGamePlay.Static.IsCurrentSector(objective.Location.Sector) && objective.ShowNavigationMark)\n                {\n                    var missionMark = new MySolarSystemMapNavigationMark(objective.Location.Sector, objective.NameTemp.ToString(), null, MyHudConstants.MISSION_MARKER_COLOR, TransparentGeometry.MyTransparentMaterialEnum.SolarMapNavigationMark) { VerticalLineColor = MyHudConstants.MISSION_MARKER_COLOR.ToVector4(), DirectionalTexture = MyHudTexturesEnum.DirectionIndicator_white };\n                    data.NavigationMarks.Add(missionMark);\n                }\n\n                objective.AddSolarMapMarks(data);\n            }\n\n            if (Location != null && !MyGuiScreenGamePlay.Static.IsCurrentSector(Location.Sector) && ShowNavigationMark)\n            {\n                var missionMark = new MySolarSystemMapNavigationMark(Location.Sector, NameTemp.ToString(), null, MyHudConstants.ACTIVE_MISSION_SOLAR_MAP_COLOR, TransparentGeometry.MyTransparentMaterialEnum.SolarMapNavigationMark) { VerticalLineColor = MyHudConstants.MISSION_MARKER_COLOR.ToVector4(), DirectionalTexture = MyHudTexturesEnum.DirectionIndicator_white };\n                data.NavigationMarks.Add(missionMark);\n            }\n        }\n\n        public override bool IsMissionEntity(MyEntity target)\n        {\n            foreach (var objective in ActiveObjectives)\n            {\n                if (objective.IsMissionEntity(target))\n                {\n                    return true;\n                }\n            }\n            return false;\n        }\n\n        public override bool IsMissionEntityNotification(MyEntity entity, MySmallShipInteractionActionEnum action)\n        {\n            foreach (var objective in ActiveObjectives)\n            {\n                if (objective.IsMissionEntityNotification(entity, action))\n                {\n                    return true;\n                }\n            }\n            return false;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/MyMissionBase.cs",
    "content": "﻿#region Using\n\nusing System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Text;\nusing MinerWarsMath.Graphics;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Missions.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.GUI.Helpers;\nusing MinerWars.CommonLIB.AppCode.Generics;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.AppCode.Game.HUD;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.AppCode.Game.World.Global;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.AppCode.Game.World;\nusing MinerWars.AppCode.Game.SolarSystem;\nusing MinerWars.AppCode.Game.Sessions;\nusing MinerWars.AppCode.Game.Entities.Prefabs;\nusing MinerWars.AppCode.Physics;\nusing MinerWars.AppCode.Networking;\nusing MinerWars.AppCode.Game.Entities.WayPoints;\n\n#endregion\n\n\nnamespace MinerWars.AppCode.Game.Missions\n{\n    delegate void MissionHandler(MyMissionBase sender);\n\n    abstract class MyMissionBase\n    {\n        bool IsLoaded = false; //DEBUG!!\n\n        /// <summary>\n        /// Name of achievement, when mission/objective is finished achievement is granted\n        /// </summary>\n        public string AchievementName { get; set; }\n\n        public struct MyMissionLocationEntityIdentifier\n        {\n            public uint? LocationEntityId;\n            public string LocationEntityName;\n\n            private MyMissionLocationEntityIdentifier(uint? locationEntityId, string locationEntityName)\n            {\n                LocationEntityId = locationEntityId;\n                LocationEntityName = locationEntityName;\n            }\n\n            public MyMissionLocationEntityIdentifier(uint locationEntityId)\n                : this(locationEntityId, null)\n            {\n            }\n\n            public MyMissionLocationEntityIdentifier(string locationEntityName)\n                : this(null, locationEntityName)\n            {\n            }\n\n            public override string ToString()\n            {\n                if (LocationEntityId != null)\n                {\n                    return \"ID: \" + LocationEntityId.Value;\n                }\n                else\n                {\n                    return \"NAME: \" + LocationEntityName;\n                }\n            }\n        }\n\n        public class MyMissionLocation\n        {\n            public const string MADELYN_HANGAR = \"MDHangar\";\n            public const float MADELYN_HANGAR_RADIUS = 50;\n\n            public MyMwcVector3Int Sector { get; protected set; }\n            public MyMissionLocationEntityIdentifier LocationEntityIdentifier { get; protected set; }\n            public MyEntity Entity;\n\n            public MyMissionLocation(MyMwcVector3Int sector, uint locationEntityId)\n            {\n                Sector = sector;\n                LocationEntityIdentifier = new MyMissionLocationEntityIdentifier(locationEntityId);\n            }\n\n            public MyMissionLocation(MyMwcVector3Int sector, string locationEntityName)\n            {\n                Sector = sector;\n                LocationEntityIdentifier = new MyMissionLocationEntityIdentifier(locationEntityName);\n            }\n        }\n\n        public StringBuilder DebugName { get; protected set; }\n        public MyMissionID ID { get; protected set; }\n\n        [Obsolete]\n        public StringBuilder NameTemp; //TODO: Remove when all mission has proper description set\n        private MyTextsWrapperEnum m_name;\n        public MyTextsWrapperEnum Name\n        {\n            get { return m_name; }\n            protected set { m_name = value; NameTemp = MyTextsWrapper.Get(value); }\n        }\n\n        public StringBuilder HudNameTemp = new StringBuilder(\"\");\n        private MyTextsWrapperEnum? m_hudName = null;\n        public MyTextsWrapperEnum? HudName\n        {\n            get { return m_hudName; }\n            set { m_hudName = value; HudNameTemp = (m_hudName == null) ? new StringBuilder(\"\") : MyTextsWrapper.Get(m_hudName.Value); }\n        }\n\n        public void ReloadName()\n        {\n            NameTemp = MyTextsWrapper.Get(Name);\n            HudNameTemp = (m_hudName == null) ? new StringBuilder(\"\") : MyTextsWrapper.Get(m_hudName.Value);\n        }\n\n\n        [Obsolete]\n        public StringBuilder DescriptionTemp; //TODO: Remove when all mission has proper description set\n        private MyTextsWrapperEnum _description;\n        public MyTextsWrapperEnum Description\n        {\n            get { return _description; }\n            protected set { _description = value; DescriptionTemp = MyTextsWrapper.Get(value); }\n        }\n        public MyTexture2D Icon { get; protected set; }\n        public MyMissionID[] RequiredMissions { get; set; }\n        public MyMissionID[] RequiredUncompletedMissions { get; set; }\n        public MyMissionID[] RequiredMissionsForSuccess { get; set; }\n        public MyActorEnum[] RequiredActors { get; set; }   //Actors will be put into the scene while Load\n        public MyMissionLocation Location { get; set; }\n        public DateTime RequiredTime { get; protected set; }\n        public MyMwcVector3Int SectorLocation { get; protected set; }\n        public List<uint> MissionEntityIDs { get; protected set; }\n        public List<uint> RequiredEntityIDs { get; protected set; }\n        public Audio.Dialogues.MyDialogueEnum? SuccessDialogId { get; protected internal set; }\n        public Audio.Dialogues.MyDialogueEnum? StartDialogId { get; protected internal set; }\n        protected float? m_radiusOverride;\n\n        public bool ShowNavigationMark { get; set; }\n        public bool IsSideMission { get; set; }\n        public MyGuitargetMode GuiTargetMode { get; set; }\n        public bool MovePlayerToMadelynHangar { get; set; }\n\n        /// <summary>\n        /// Mission timer is started automatically on mission start.\n        /// </summary>\n        public MyMissionTimer MissionTimer;\n\n        /// <summary>\n        /// Countdown timer has to be started manually when it is needed.\n        /// </summary>\n        public MyCountdownTimer CountdownTimer = new MyCountdownTimer();\n\n        public event MissionHandler OnMissionSuccess;\n        public event MissionHandler OnMissionLoaded;\n        public event MissionHandler OnMissionCleanUp;\n        public event MissionHandler OnMissionUpdate;\n\n        public List<MyMissionComponent> Components { get; set; }\n\n        public MyMissionBase()\n        {\n            ShowNavigationMark = true;\n            IsSideMission = false;\n            MissionTimer = new MyMissionTimer();\n            RequiredUncompletedMissions = new MyMissionID[0];\n            RequiredMissionsForSuccess = new MyMissionID[0];\n            MissionEntityIDs = new List<uint>();\n            RequiredEntityIDs = new List<uint>();\n            GuiTargetMode = MyGuitargetMode.Objective;\n            MovePlayerToMadelynHangar = true;\n            RequiredActors = new MyActorEnum[0];\n\n            Components = new List<MyMissionComponent>();\n        }\n\n        public virtual bool IsCompleted()\n        {\n            Debug.Assert(MySession.Static.EventLog != null);\n            return MySession.Static.EventLog != null && MySession.Static.EventLog.IsMissionFinished(ID);\n        }\n\n        public virtual bool IsAvailable()\n        {\n            Debug.Assert(MySession.Static.EventLog != null);\n            return MySession.Static.EventLog != null &&\n                MySession.Static.GameDateTime >= RequiredTime &&\n                !MySession.Static.EventLog.IsMissionFinished(ID) &&\n                MySession.Static.EventLog.AreMissionsFinished(RequiredMissions) &&\n                MySession.Static.EventLog.GetFinishedMissionCount(RequiredUncompletedMissions) == 0;\n        }\n\n\n        public virtual void Load()\n        {\n            Debug.Assert(MyGuiScreenGamePlay.Static != null, \"Loading mission from menu!\");\n            Debug.Assert(IsLoaded == false);\n            IsLoaded = true;\n\n            //AddActorsToPlayerFriends();\n\n            MissionTimer.Reset();\n            MissionTimer.Start();\n\n            if (OnMissionLoaded != null)\n            {\n                OnMissionLoaded(this);\n            }\n\n            foreach (var component in Components)\n            {\n                component.Load(this);\n            }\n\n            if (StartDialogId != null)\n            {\n                MyScriptWrapper.PlayDialogue(StartDialogId.Value);\n            }\n        }\n\n        public virtual void Update()\n        {\n            Debug.Assert(IsLoaded == true);\n\n            MissionTimer.Update();\n            if (CountdownTimer != null)\n            {\n                CountdownTimer.Update();\n            }\n\n            var handler = OnMissionUpdate;\n            if (handler != null)\n            {\n                handler(this);\n            }\n\n            foreach (var component in Components)\n            {\n                component.Update(this);\n            }\n        }\n\n        /// <summary>\n        /// Causes mission to success\n        /// </summary>\n        /// <param name=\"userId\">user that causes this success of this mission</param>\n        public virtual void Success()\n        {\n            if (OnMissionSuccess != null)\n            {\n                OnMissionSuccess(this);\n            }\n            MissionTimer.End();\n\n            foreach (var component in Components)\n            {\n                component.Success(this);\n            }\n\n            if (!String.IsNullOrEmpty(AchievementName))\n            {\n                MySteamStats.SetAchievement(AchievementName);\n            }\n\n            //Unloaded in Mission.UpdateActiveObjectives\n        }\n\n        public virtual void Fail(MyTextsWrapperEnum? customMessage = null)\n        {\n            if (MyMultiplayerGameplay.IsRunning && MyMultiplayerGameplay.Static.IsHost)\n            {\n                MyMultiplayerGameplay.Static.SendMissionProgress(this, CommonLIB.AppCode.Networking.Multiplayer.MyMissionProgressType.Fail);\n            }\n\n            //Unloaded in Mission.UpdateActiveObjectives\n        }\n\n        public virtual void Unload()\n        {\n            Debug.Assert(IsLoaded == true);\n            IsLoaded = false;\n\n            SetLocationVisibility(false);\n\n\n            var handler = OnMissionCleanUp;\n            if (handler != null)\n            {\n                handler(this);\n            }\n            MissionTimer.ClearActions();\n\n            foreach (var component in Components)\n            {\n                component.Unload(this);\n            }\n\n            if (Location != null)\n                Location.Entity = null;\n        }\n\n        public override string ToString()\n        {\n            return NameTemp.ToString();\n        }\n\n        public virtual bool IsMissionEntity(MyEntity target)\n        {\n            // Show hud marker for location dummy in mission colors\n            return !MySession.Static.EventLog.IsMissionFinished(ID) &&\n                (HasLocationEntity() && Location.Entity == target ||\n                MissionEntityIDs != null && target.EntityId.HasValue && MissionEntityIDs.Contains(target.EntityId.Value.NumericValue));\n        }\n\n        public virtual bool IsMissionEntityNotification(MyEntity entity, MySmallShipInteractionActionEnum action)\n        {\n            return false;\n        }\n\n        public virtual void AddSolarMapMarks(SolarSystem.MySolarSystemMapData data)\n        {\n\n        }\n\n        public bool HasLocationEntity()\n        {\n            return MyGuiScreenGamePlay.Static != null && Location != null && MyGuiScreenGamePlay.Static.IsCurrentSector(Location.Sector) && Location.Entity != null;\n        }\n\n        public virtual void SetLocationVisibility(bool visible)\n        {\n            // Show or hide location dummy\n            if (Location != null)\n            {\n                if (MyGuiScreenGamePlay.Static != null && MyGuiScreenGamePlay.Static.IsCurrentSector(Location.Sector))\n                {\n                    Location.Entity = MyEntities.GetEntityByMissionLocationIdentifier(Location.LocationEntityIdentifier);\n                    if (Location.Entity != null)\n                    {\n                        SetLocationVisibility(visible, Location.Entity, GuiTargetMode);\n                    }\n                }\n            }\n        }\n\n        public void SetLocationVisibility(bool visible, MyEntity entity, MyGuitargetMode guiTargetMode)\n        {\n            if (visible)\n            {\n                MyHud.RemoveText(entity);\n                MyHud.AddText(entity, HudNameTemp ?? NameTemp, guiTargetMode);\n            }\n            else\n            {\n                entity.UpdateHudMarker(true);\n            }\n        }\n\n        public void RemoveComponent(MyMissionComponent component)\n        {\n            Components.Remove(component);\n            component.Unload(this);\n        }\n\n        public void InsertRequiredActors()\n        {\n            MyMwcLog.WriteLine(\"InsertRequiredActors - START\");\n\n            foreach (MyActorEnum actor in RequiredActors)\n            {\n                switch (actor)\n                {\n                    //Insert Madelyn\n                    case MyActorEnum.MADELYN:\n                        {\n                            if (!MyEntities.EntityExists(\"Madelyn\"))\n                            {\n                                MyMwcLog.WriteLine(\"Insert Madelyne - START\");\n\n                                // Holds ids for remap\n                                IMyEntityIdRemapContext remapContext = new MyEntityIdRemapContext();\n\n                                //MyMwcObjectBuilder_SectorObjectGroups groups = MySectorGenerator.LoadSectorGroups(MyTemplateGroups.GetGroupSector(MyTemplateGroupEnum.Madelyn));\n                                MyMwcObjectBuilder_SectorObjectGroups groups = MySession.Static.LoadSectorGroups(MyTemplateGroups.GetGroupSector(MyTemplateGroupEnum.Madelyn));\n                                System.Diagnostics.Debug.Assert(groups.Groups.Count > 0);\n\n                                MyMwcObjectBuilder_ObjectGroup madelynGroup = groups.Groups[0];\n                                groups.RemapEntityIds(remapContext);\n                                IEnumerable<MyMwcObjectBuilder_Base> rootObjects = madelynGroup.GetRootBuilders(groups.Entities);\n\n                                List<MyMwcObjectBuilder_Base> clonedList = new List<MyMwcObjectBuilder_Base>();\n                                foreach (MyMwcObjectBuilder_Base o in rootObjects)\n                                {\n                                    // Clone\n                                    var clone = o.Clone() as MyMwcObjectBuilder_Base;\n                                    // we want Madelyn's prefab container as first builder\n                                    if (clone is MyMwcObjectBuilder_PrefabContainer)\n                                    {\n                                        clonedList.Insert(0, clone);\n                                    }\n                                    else\n                                    {\n                                        clonedList.Add(clone);\n                                    }\n                                }\n\n                                System.Diagnostics.Debug.Assert(clonedList.Count > 0 && clonedList[0] is MyMwcObjectBuilder_PrefabContainer);\n\n                                // create Madelyn's prefab container\n                                MyEntity madelynMothership = MyEntities.CreateFromObjectBuilder(MyTextsWrapper.Get(MyTextsWrapperEnum.Actor_Madelyn).ToString(), clonedList[0], ((MyMwcObjectBuilder_Object3dBase)clonedList[0]).PositionAndOrientation.GetMatrix());\n                                madelynMothership.FindChild(MyMissionLocation.MADELYN_HANGAR).DisplayName = MyTextsWrapper.Get(MyTextsWrapperEnum.Sapho).ToString();\n                                madelynMothership.SetName(MyActorConstants.GetActorName(MyActorEnum.MADELYN));\n                                Matrix madelynMothershipWorldInv = Matrix.Invert(madelynMothership.WorldMatrix);\n\n                                List<MinerWars.AppCode.Game.Entities.WayPoints.MyWayPoint> waypoints = new List<Entities.WayPoints.MyWayPoint>();\n\n                                // create other entities as children of Madelyn's prefab container\n                                for (int i = 1; i < clonedList.Count; i++)\n                                {\n                                    System.Diagnostics.Debug.Assert(clonedList[i] is MyMwcObjectBuilder_Object3dBase);\n                                    MyEntity childEntity = MyEntities.CreateFromObjectBuilder(null, clonedList[i], ((MyMwcObjectBuilder_Object3dBase)clonedList[i]).PositionAndOrientation.GetMatrix());\n                                    childEntity.SetLocalMatrix(childEntity.WorldMatrix * madelynMothershipWorldInv);\n                                    madelynMothership.Children.Add(childEntity);\n                                    if (childEntity is MinerWars.AppCode.Game.Entities.WayPoints.MyWayPoint)\n                                    {\n                                        waypoints.Add(childEntity as MinerWars.AppCode.Game.Entities.WayPoints.MyWayPoint);\n                                    }\n                                }\n\n                                // connect waypoints of Madelyn's prefab container\n                                foreach (var waypoint in waypoints)\n                                {\n                                    waypoint.ResolveLinks();\n                                }\n\n                                // set correct Madelyn's position and add to scene\n                                madelynMothership.SetWorldMatrix(MyPlayer.FindMothershipPosition());\n                                madelynMothership.Link();\n                                MyEntities.Add(madelynMothership);\n\n                                MyMwcLog.WriteLine(\"Insert Madelyne - END\");\n                            }\n                            else\n                            {\n                                MyMwcLog.WriteLine(\"Insert Madelyne - Madelyne already loaded\");\n                            }\n\n                            MyWayPointGraph.RecreateWaypointsAroundMadelyn();\n                        }\n                        break;\n\n                    //Insert Marcus\n                    case MyActorEnum.MARCUS:\n                        InsertFriend(MyActorEnum.MARCUS);\n                        break;\n\n                    //Insert RavenGirl\n                    case MyActorEnum.TARJA:\n                        InsertFriend(MyActorEnum.TARJA);\n                        break;\n\n                    //Insert RavenGuy\n                    case MyActorEnum.VALENTIN:\n                        InsertFriend(MyActorEnum.VALENTIN, MyMwcObjectBuilder_SmallShip_TypesEnum.HAMMER);\n                        break;\n\n                    default:\n                        System.Diagnostics.Debug.Assert(false, \"Uknown actor to insert!\");\n                        break;\n                }\n            }\n\n            MyMwcLog.WriteLine(\"InsertRequiredActors - END\");\n        }\n\n        public void MovePlayerAndFriendsToHangar()\n        {\n            if (MovePlayerToMadelynHangar && IsPlayerShipNearMadelyn())\n            {\n                MovePlayerAndFriendsToHangar(RequiredActors);\n            }\n        }\n\n        public static void MovePlayerAndFriendsToHangar(MyActorEnum[] requiredActors)\n        {\n          //  if (IsPlayerShipNearMadelyn())\n            {\n                MoveEntityToHangar(MySession.PlayerShip, 30);\n\n                float offset = 50;\n                foreach (MyActorEnum actor in requiredActors)\n                {\n                    if (actor == MyActorEnum.MADELYN)\n                        continue;\n\n                    MyEntity actorEntity;\n                    if (MyEntities.TryGetEntityByName(MyActorConstants.GetActorName(actor), out actorEntity))\n                    {\n                        MoveEntityToHangar(actorEntity, offset);\n                        offset += 20;\n                    }\n                }\n            }\n        }\n\n        public static void RemoveFriends()\n        {\n            while (MySession.PlayerFriends.Count > 0)\n            {\n                MySession.PlayerFriends[0].MarkForClose();\n            }\n        }\n\n        public static MySmallShipBot InsertFriend(MyActorEnum actorEnum, MyMwcObjectBuilder_SmallShip_TypesEnum? shipType = null)\n        {\n            MyMwcObjectBuilder_SmallShip_TypesEnum selectedShipType;\n            if (shipType.HasValue)\n            {\n                selectedShipType = shipType.Value;\n            }\n            else\n            {\n                switch (actorEnum)\n                {\n                    case MyActorEnum.TARJA:\n                        selectedShipType = MyMwcObjectBuilder_SmallShip_TypesEnum.DOON;\n                        break;\n                    case MyActorEnum.VALENTIN:\n                        selectedShipType = MyMwcObjectBuilder_SmallShip_TypesEnum.HAMMER;\n                        break;\n                    default:\n                        selectedShipType = MyMwcObjectBuilder_SmallShip_TypesEnum.GETTYSBURG;\n                        break;\n                }\n            }\n\n            MySmallShipBot bot;\n\n            string actorSystemName = MyActorConstants.GetActorName(actorEnum);\n\n            if (!MyEntities.EntityExists(actorSystemName))\n            {\n                MyMwcLog.WriteLine(\"Insert \" + actorSystemName + \" - START\");\n\n                bot = MyGuiScreenGamePlay.Static.CreateFriend(MyTextsWrapper.Get(MyActorConstants.GetActorProperties(actorEnum).DisplayName).ToString(), 100000, 1, selectedShipType);\n                bot.SetName(actorSystemName);\n                bot.Save = true;\n                bot.LeaderLostEnabled = true;\n                bot.IsDestructible = false;\n                bot.SetWorldMatrix(Matrix.CreateWorld(bot.GetPosition(), MySession.PlayerShip.WorldMatrix.Forward, MySession.PlayerShip.WorldMatrix.Up));\n                bot.Faction = MyMwcObjectBuilder_FactionEnum.Rainiers;\n                bot.AIPriority = -5;\n\n                MyMwcLog.WriteLine(\"Insert \" + actorSystemName + \" - END\");\n            }\n            else\n            {\n                bot = MyEntities.GetEntityByName(actorSystemName) as MySmallShipBot;\n                bot.Save = true;\n                bot.LeaderLostEnabled = true;     // Not persisted for now\n                MyMwcLog.WriteLine(\"Insert \" + actorSystemName + \" - already loaded\");\n            }\n\n            //Init smaller box physics because of following player problems\n            bot.InitPhysics(1 / MySmallShipConstants.FRIEND_SMALL_SHIP_MODEL_SCALE, bot.ShipTypeProperties.Visual.MaterialType);\n            bot.Follow(MySession.PlayerShip);\n\n            if (!MySession.PlayerFriends.Contains(bot))\n            {\n                MySession.PlayerFriends.Add(bot);\n            }\n\n            Debug.Assert(bot.Save, \"Bot must have save flag to work in coop\");\n\n            return bot;\n        }\n\n        private static void MoveEntityToHangar(MyEntity entity, float offset)\n        {\n            MyEntity hangarEntity;\n            MyEntities.TryGetEntityByName(MyMissionLocation.MADELYN_HANGAR, out hangarEntity);\n            MyPrefabHangar madelynHangar = hangarEntity as MyPrefabHangar;\n            if (madelynHangar != null)\n            {\n                entity.SetPosition(madelynHangar.WorldVolume.Center - offset * madelynHangar.WorldMatrix.Forward);\n            }\n        }\n\n        public static bool IsPlayerShipNearMadelyn()\n        {\n            MyEntity hangarEntity;\n            MyEntities.TryGetEntityByName(MyMissionLocation.MADELYN_HANGAR, out hangarEntity);\n            MyPrefabHangar madelynHangar = hangarEntity as MyPrefabHangar;\n            if (madelynHangar != null)\n            {\n                float distance = Vector3.Distance(MySession.PlayerShip.GetPosition(), madelynHangar.GetPosition());\n                if (distance < 2000)\n                {\n                    return true;\n                }\n            }\n\n            return false;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/MyMissionComponent.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace MinerWars.AppCode.Game.Missions\n{\n    class MyMissionComponent\n    {\n        public virtual void Load(MyMissionBase sender) { }\n\n        public virtual void Unload(MyMissionBase sender) { }\n\n        public virtual void Update(MyMissionBase sender) { }\n\n        public virtual void Success(MyMissionBase sender) { }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/MyMissionSandboxBase.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Diagnostics;\n\nnamespace MinerWars.AppCode.Game.Missions\n{\n    abstract class MyMissionSandboxBase : MyMission\n    {\n        public override void Load()\n        {\n            Debug.Assert(Objectives == null || Objectives.Count == 0, \"Sandbox mission can't has any objective!\");\n            base.Load();\n            Success();\n        }\n\n        public override bool IsValid()\n        {\n            return Objectives == null || Objectives.Count == 0;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/MyMissions.cs",
    "content": "﻿#region Using\n\nusing System.Collections.Generic;\nusing System.Linq;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.HUD;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.Entities;\nusing System;\nusing System.Diagnostics;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.AppCode.Game.SolarSystem;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.AppCode.Game.Entities.Prefabs;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Sessions;\n\n#endregion\n\nnamespace MinerWars.AppCode.Game.Missions\n{\n    #region Enums\n\n    public enum MyMissionID\n    {\n        M01_Intro = 1000,\n        M01_Intro_Mining = 1001,\n        M01_Intro_Sell = 1002,\n        M01_Intro_Buy = 1003,\n        M01_Intro_Kill = 1004,\n\n        NEW_STORY_M001 = 10000,\n        NEW_STORY_M001_DEFEND = 10001,\n\n        NEW_STORY_M002_ADDITIONAL_MISSION = 20000,\n        NEW_STORY_M002_GET_FOUNDATION_FACTORY = 20001,\n        NEW_STORY_M002_DEPLOY_FOUNDATION_FACTORY = 20002,\n        NEW_STORY_M002_BUILD_PREFAB = 20003,\n\n        NEW_STORY_M003 = 30000,\n        NEW_STORY_M003_FIND_ENTRANCE = 30001,\n        NEW_STORY_M003_FIND_AND_DESTROY_GENERATORS = 30002,\n        NEW_STORY_M003_STEAL_CASH = 30003,\n\n        PIRATE_BASE = 40000,\n        PIRATE_BASE_TRAVEL_TO_BASE = 40001,\n        PIRATE_BASE_DEFENSE_SETUP = 40002,\n        PIRATE_BASE_DEFEND = 40003,\n        PIRATE_BASE_RETURN_BACK_TO_MOTHERSHIP = 40004,\n\n        PIRATE_BASE_SPEAK_WITH_PIRATES = 40005,\n        PIRATE_BASE_LISTEN_TO_CAPTAIN = 40006,\n        PIRATE_BASE_PREPARE_FOR_DEFENSE = 40007,\n        PIRATE_BASE_GET_TURRETS = 40008,\n        PIRATE_BASE_ALLY_ARRIVED = 40009,\n\n        EAC_SURVEY_SITE = 700000,\n        EAC_SURVEY_SITE_FOLLOWMARCUS_1 = 700005,\n        EAC_SURVEY_SITE_FOLLOWMARCUS_2 = 700007,\n        EAC_SURVEY_SITE_GOTO_10 = 700010,\n        EAC_SURVEY_SITE_WAVES = 700015,\n        EAC_SURVEY_SITE_CLEAR_THE_WAY = 700020,\n        EAC_SURVEY_SITE_GOTO_30 = 700030,\n        EAC_SURVEY_SITE_GOTO_40 = 700040,\n        EAC_SURVEY_SITE_GENERATOR = 700050,\n        EAC_SURVEY_SITE_GOTO_60 = 700060,\n        EAC_SURVEY_SITE_GOTO_65 = 700065,\n        EAC_SURVEY_SITE_SAVEMINERS = 700066,\n        EAC_SURVEY_SITE_GOTO_70 = 700070,\n        EAC_SURVEY_SITE_SURVIVE = 700080,\n        EAC_SURVEY_SITE_GOTO_90 = 700090,\n        EAC_SURVEY_SITE_TURRETS_RIGHT = 700100,\n        EAC_SURVEY_SITE_TURRETS_LEFT = 700110,\n\n        LAIKA = 800000,\n        LAIKA_GOTO_10 = 800010,\n        LAIKA_GOTO_11 = 800011,\n        LAIKA_GOTO_12 = 800012,\n        LAIKA_GOTO_GENERATOR = 800015,\n        LAIKA_GOTO_COMMAND = 800020,\n        LAIKA_GOTO_COMMUNICATION_01 = 800030,\n        LAIKA_GOTO_COMMUNICATION_02 = 800040,\n        LAIKA_WARHEAD = 800045,\n        LAIKA_RETURN = 800050,\n        LAIKA_LASTSTAND = 800060,\n        LAIKA_AWAY = 800070,\n\n        TWIN_TOWERS = 1000000,\n        TWIN_TOWERS_INTRO = 1000003,\n        TWIN_TOWERS_SABOTAGE = 1000010,\n        TWIN_TOWERS_RANDEVOUZ = 1000020,\n        TWIN_TOWERS_ASSAULT = 1000030,\n        TWIN_TOWERS_HACKING = 1000033,\n        TWIN_TOWERS_JAMMER = 1000036,\n        TWIN_TOWERS_HACKING_CONTINUE = 1000038,\n        TWIN_TOWERS_RAILGUN1 = 1000040,\n        TWIN_TOWERS_RAILGUN2 = 1000050,\n        TWIN_TOWERS_GOTO_RIGHT = 1000060,\n        TWIN_TOWERS_GENERATOR = 1000070,\n        TWIN_TOWERS_COMMAND = 1000080,\n        TWIN_TOWERS_WAIT = 1000085,\n        TWIN_TOWERS_MOTHERSHIP1 = 1000090,\n        TWIN_TOWERS_MOTHERSHIP1_V2 = 1000093,\n        TWIN_TOWERS_MOTHERSHIP2 = 1000095,\n        TWIN_TOWERS_GOTO_MADELYN = 1000100,\n\n        CHINESE_TRANSPORT = 900000,\n        CHINESE_TRANSPORT_GET_SECURITY_KEY = 900001,\n        CHINESE_TRANSPORT_REACH_TUNNEL_1 = 900002,\n        CHINESE_TRANSPORT_REACH_TRANSMITTER = 900003,\n        CHINESE_TRANSPORT_KILL_GUARDS = 900004,\n        CHINESE_TRANSPORT_HACK_TRANSMITTER = 900005,\n        CHINESE_TRANSPORT_PLACE_BOMB = 900007,\n        CHINESE_TRANSPORT_RUN_EXPLOSION = 900008,\n        CHINESE_TRANSPORT_LOOK_ON_EXPLOSION = 900009,\n        CHINESE_TRANSPORT_REACH_TUNNEL_2 = 900010,\n        CHINESE_TRANSPORT_PAST_TUNNEL_2 = 900011,\n        CHINESE_TRANSPORT_REACH_HANGAR_HACK = 900012,\n        CHINESE_TRANSPORT_OPEN_HANGAR_SERVICE_ROOM = 900013,\n        CHINESE_TRANSPORT_HACK_HANGAR_SERVICE_PC = 900014,\n        CHINESE_TRANSPORT_DEFEND_MARCUS = 900015,\n        CHINESE_TRANSPORT_KILL_BOSS = 900016,\n        CHINESE_TRANSPORT_LAND_IN = 900017,\n\n        SIDE_MISSION_01_ASSASSINATION = 1000001,\n        SIDE_MISSION_01_ASSASSINATION_KILL = 1000002,\n\n        CHINESE_ESCAPE = 1100000,\n        CHINESE_ESCAPE_GET_CLOSER = 1100001,\n        CHINESE_ESCAPE_DEFEND_SHIP = 1100002,\n        CHINESE_ESCAPE_SPEAK_WITH_MADELYN = 1100003,\n\n        RUSSIAN_WAREHOUSE = 1500000,\n        RUSSIAN_WAREHOUSE_SNEAKINMAINBASE = 1500010,\n        RUSSIAN_WAREHOUSE_TURNOFFCAMS = 1500020,\n        RUSSIAN_WAREHOUSE_CTRLTURRET = 1500030,\n        RUSSIAN_WAREHOUSE_GETOUTMAINBASE = 1500040,\n        RUSSIAN_WAREHOUSE_BREAKOLDENTRANCE = 1500050,\n        RUSSIAN_WAREHOUSE_LOCATEWAREHOUSE = 1500060,\n        RUSSIAN_WAREHOUSE_FINDTRANSMITTER = 1500070,\n        RUSSIAN_WAREHOUSE_TURNOFFMAINDEF_PART1 = 1500080,\n        RUSSIAN_WAREHOUSE_GETOUTWAREHOUSE = 1500090,\n        RUSSIAN_WAREHOUSE_CRUSHREMAINGSHIPS = 1500100,\n        RUSSIAN_WAREHOUSE_MEETINGPOINT = 1500110,\n        RUSSIAN_WAREHOUSE_OPEN_DOORS = 1500111,\n        RUSSIAN_WAREHOUSE_DOWNLOAD_DATA = 1500112,\n        RUSSIAN_WAREHOUSE_TURNOFFMAINDEF_PART2 = 15000113,\n        RUSSIAN_WAREHOUSE_DOWNDATADIALOGUE = 1500114,\n\n        EAC_PRISON = 1900000,\n        EAC_PRISON_THRUSWARM = 1900005, //new one\n        EAC_PRISON_SOLARDEF = 1900010,\n        EAC_PRISON_SOLAROFF = 1900020, //should be splitted between SOLAROFF1 and SOLAROFF2\n        EAC_PRISON_SOLAROFF1 = 1900022, //part 1 of exSOLAROFF\n        EAC_PRISON_MOTHERSHIPHELP = 1900025, //new one\n        EAC_PRISON_SOLAROFF2 = 1900027, //part 2 of exSOLAROFF\n        EAC_PRISON_BREAKIN = 1900030,\n        EAC_PRISON_LOCINTEL = 1900040,\n        EAC_PRISON_ACQUIREIDCARD = 1900042, //new one\n        EAC_PRISON_LOCINTEL2 = 1900043,\n        EAC_PRISON_OPENACCESS = 1900045, //new one\n        EAC_PRISON_SECURITYOFF = 1900050,\n        EAC_PRISON_MARCUSCELL = 1900060,\n        EAC_PRISON_MARCUSDIALOG = 1900065,\n        EAC_PRISON_WE_HAVE_COMPANY = 1900066,\n        EAC_PRISON_MEETMARCUS = 1900070, //can be deleted or commented out\n        EAC_PRISON_COVERMARCUS = 1900080,\n        EAC_PRISON_GETARMS = 1900090,\n        EAC_PRISON_FIGHTOUT = 1900100,\n        EAC_PRISON_CRUSHREINFORCEMENTS = 1900105, //new one\n        EAC_PRISON_MEETINGPOINT = 1900110,\n\n        LAST_HOPE = 2000000,\n        LAST_HOPE_REACH_COLONY = 2000001,\n        LAST_HOPE_DESTROY_SLAVER_RIDERS = 2000002,\n        LAST_HOPE_CATCH_SLAVER_RIDERS = 20000021,\n        LAST_HOPE_FLY_KILL_WAVES = 20000022,\n        LAST_HOPE_STOP_SLAVER_RIDERS = 2000003,\n        LAST_HOPE_REACH_UNDEGROUND_CAVES = 2000004,\n        LAST_HOPE_SPEAK_WITH_FATHER = 20000041,\n        LAST_HOPE_FIND_MAINTANCE_TUNELL = 20000042,\n        LAST_HOPE_KILL_SQUAD = 2000005,\n        LAST_HOPE_DEACTIVATE_BOMB = 2000006,\n        LAST_HOPE_REPAIR_PIPES= 2000007,\n        LAST_HOPE_STABILIZE_NUCLEAR_CORE = 2000008,\n        LAST_HOPE_LEAVE_UNDERGROUND = 2000009,\n        LAST_HOPE_GET_REVARD = 20000010,\n        LAST_HOPE_RETURN_TO_MOTHER_SHIP = 20000012,\n\n        CHINESE_TRANSMITTER = 2100000,\n        CHINESE_TRANSMITTER_FIND_CIC = 2100001,\n        CHINESE_TRANSMITTER_OPEN_CIC = 2100002,\n        CHINESE_TRANSMITTER_PLACE_DEVICE = 2100003,\n        CHINESE_TRANSMITTER_LOOT_CARGO = 2100004,\n        CHINESE_TRANSMITTER_ESCAPE = 2100005,\n        CHINESE_TRANSMITTER_FIND_SECURITY_CONTROL = 2100006,\n        CHINESE_TRANSMITTER_DESTROY_SECURITY_CONTROL = 2100007,\n        CHINESE_TRANSMITTER_ESCAPE2 = 2100008,\n        CHINESE_TRANSMITTER_CHECKPOINT = 2100009,\n        CHINESE_TRANSMITTER_DIALOGUE_1 = 2100010,\n        CHINESE_TRANSMITTER_DIALOGUE_2 = 2100011,\n        CHINESE_TRANSMITTER_DIALOGUE_3 = 2100012,\n        CHINESE_TRANSMITTER_DIALOGUE_4 = 2100013,\n        CHINESE_TRANSMITTER_DIALOGUE_5 = 2100014,\n        CHINESE_TRANSMITTER_DIALOGUE_6 = 2100015,\n        CHINESE_TRANSMITTER_DIALOGUE_7 = 2100016,\n        CHINESE_TRANSMITTER_DIALOGUE_8 = 2100017,\n        CHINESE_TRANSMITTER_DIALOGUE_9 = 2100018,\n        CHINESE_TRANSMITTER_ESCAPE3 = 2100019,\n     \n        NAZI_BIO_LAB = 2200000,\n        NAZI_BIO_LAB_GETMISSION = 220005,\n        NAZI_BIO_LAB_SAMPLES_BIOMACH_1 = 2200010,\n        NAZI_BIO_LAB_GET_INSIDE = 2200020,\n        NAZI_BIO_LAB_SAMPLES_BIOMACH_2 = 2200030,\n        NAZI_BIO_LAB_SAMPLES_ORGANIC = 2200040,\n        NAZI_BIO_LAB_BLUEPRINTS_BIOMACH = 2200050,\n        NAZI_BIO_LAB_GET_BIOMACH_PARTS = 2200060,\n        NAZI_BIO_LAB_GET_OUT = 2200070,\n        NAZI_BIO_LAB_DESTROY= 2200071,\n        NAZI_BIO_LAB_REACH_MEETING_POINT = 2200080,\n\n        // Play ground - small pirate base\n        PIRATE_BASE_1 = 2300000,\n        PIRATE_BASE_1_DESTROY_PIPES_1 = 2300001,\n        PIRATE_BASE_1_DESTROY_GENERATOR = 2300002,\n        PIRATE_BASE_1_ESCAPE = 2300003,\n\n        SMALL_PIRATE_BASE_2 = 2800000,\n        SMALL_PIRATE_BASE_2_DESTROY_MOTHERSHIP = 2800001,\n        SMALL_PIRATE_BASE_2_KILL_GENERAL = 2800003,\n        SMALL_PIRATE_BASE_2_DESTROY_GENERATOR = 2800002,\n        SMALL_PIRATE_BASE_2_DESTROY_ENEMIES = 2800010,\n\n        RIFT = 2500000,\n        RIFT_INTRO = 2500003,\n        RIFT_GOTO_GETSUPPLIES1 = 2500005,\n        RIFT_GOTO_GETSUPPLIES2 = 2500006,\n        RIFT_GOTO_GETSUPPLIES3 = 2500007,\n        RIFT_GOTO_10 = 2500010,\n        RIFT_URANITE = 2500020,\n        RIFT_GOTO_30 = 2500030,\n\n        JUNKYARD_CONVINCE = 2600000,\n        JUNKYARD_CONVINCE_FIND_INFORMATOR = 2600001,\n        JUNKYARD_CONVINCE_D_FIND_INFORMATOR = 2600002,\n        JUNKYARD_CONVINCE_FIND_SMUGGLER = 2600003,\n        JUNKYARD_CONVINCE_FIGHT_COMPANIONS = 2600004,\n        JUNKYARD_CONVINCE_FOLLOW_SMUGGLER = 2600005,\n        JUNKYARD_CONVINCE_D_FOLLOW_SMUGGLER = 2600006,\n        JUNKYARD_CONVINCE_MEET_GANGMAN = 2600021,\n        JUNKYARD_CONVINCE_FLY_TO_ENEMY = 2600007,\n        JUNKYARD_CONVINCE_KILL_WAVES = 2600008,\n        JUNKYARD_CONVINCE_SPEAK_WITH_MOMO = 2600009,\n        JUNKYARD_CONVINCE_D_SPEAK_WITH_MOMO = 2600010,\n        JUNKYARD_CONVINCE_FIGHT_MOMO = 2600011,\n        JUNKYARD_CONVINCE_RETURN_TO_SMUGGLER = 2600012,\n        JUNKYARD_CONVINCE_D_RETURN_TO_SMUGGLER = 2600013,\n        JUNKYARD_CONVINCE_FIGHT_ENEMY_WAVES = 2600014,\n        JUNKYARD_CONVINCE_GO_TO_BOMB_DEALER = 2600015,\n        JUNKYARD_CONVINCE_D_GO_TO_BOMB_DEALER = 2600016,\n        JUNKYARD_CONVINCE_GO_TO_MARCUS = 2600017,\n        JUNKYARD_CONVINCE_D_GO_TO_MARCUS = 2600018,\n        JUNKYARD_CONVINCE_BR_FIGHT = 2600019,\n        JUNKYARD_CONVINCE_RETURN_TO_MS = 2600020,\n\n        RUSSIAN_TRANSMITTER = 3200000,\n        RUSSIAN_TRANSMITTER_REACH_SIDE_ENTRANCE = 3200001,\n        RUSSIAN_TRANSMITTER_ENTER_THE_BASE = 3200002,\n        RUSSIAN_TRANSMITTER_FIND_FREQUENCY = 3200003,\n        RUSSIAN_TRANSMITTER_MEET_STRANGER = 3200004,\n        RUSSIAN_TRANSMITTER_REACH_WAREHOUSE = 3200005,\n        RUSSIAN_TRANSMITTER_STEAL_MILITARY_SUPPLY = 3200006,\n        RUSSIAN_TRANSMITTER_TRADE_WITH_VOLODIA = 3200007,\n        RUSSIAN_TRANSMITTER_FIGHT_RUSSIAN_COMMANDO = 3200008,\n        RUSSIAN_TRANSMITTER_SURVIVE = 3200009,\n        RUSSIAN_TRANSMITTER_BACK_TO_TRANSMITTER = 3200010,\n        RUSSIAN_TRANSMITTER_DECRYPT_FREQUENCY = 320011,\n        RUSSIAN_TRANSMITTER_UPLOAD_DATA = 3200012,\n        RUSSIAN_TRANSMITTER_FIND_MAIN_ROOM_ENTRANCE = 3200013,\n        RUSSIAN_TRANSMITTER_PLACE_DEVICE_ON_TRANSMITTER = 3200014,\n        RUSSIAN_TRANSMITTER_OPEN_DOORS = 3200015,\n        RUSSIAN_TRANSMITTER_BACK_TO_MADELYN = 3200016,\n        RUSSIAN_TRANSMITTER_INTRO_DIALOGUE = 3200017,\n        RUSSIAN_TRANSMITTER_STRANGER_CONTACT = 3200018,\n        RUSSIAN_TRANSMITTER_HACKING_FAILED = 3200019,\n\n        BARTHS_MOON_CONVINCE = 2900000,\n        BARTHS_MOON_CONVINCE_MEET_THOMAS_BART = 2900001,\n        BARTHS_MOON_CONVINCE_TALK_WITH_THOMAS_BART = 2900002,\n        BARTHS_MOON_CONVINCE_RETURN_BACK_TO_MADELYN = 2900003,\n        BARTHS_MOON_CONVINCE_FLY_TO_ENEMY_BASE = 2900004,\n        BARTHS_MOON_CONVINCE_DESTROY_SHIP = 2900005,\n        BARTHS_MOON_CONVINCE_DESTROY_GENERATOR = 2900006,\n        BARTHS_MOON_CONVINCE_FIND_TRANSMITTER = 2900007,\n        BARTHS_MOON_CONVINCE_FLY_BACK_TO_BARTH = 2900008,\n\n        BARTHS_MOON_TRANSMITTER = 2910000,\n        BARTHS_MOON_TRANSMITTER_MEET_BARTH = 2910001,\n        BARTHS_MOON_TRANSMITTER_TALK_TO_BARTH = 2910002,\n        BARTHS_MOON_TRANSMITTER_FIND_WAY_TO_MOON= 2910003,\n        BARTHS_MOON_TRANSMITTER_DESTROY_LAB = 2910004,\n        BARTHS_MOON_TRANSMITTER_ENABLE_GENERATOR= 2910005,\n        BARTHS_MOON_TRANSMITTER_LOOK_HUBS = 2910006,\n        BARTHS_MOON_TRANSMITTER_GET_ITEMS = 2910007,\n        BARTHS_MOON_TRANSMITTER_FAN = 29100071,\n        BARTHS_MOON_TRANSMITTER_DRONES = 29100072,\n        BARTHS_MOON_TRANSMITTER_ENABLE_GENERATOR_DRONE1 = 2910008,\n        BARTHS_MOON_TRANSMITTER_ENABLE_GENERATOR_DRONE2 = 2910009,\n        BARTHS_MOON_TRANSMITTER_LOOK_HUBS2 = 29100091,\n        BARTHS_MOON_TRANSMITTER_DOWNLOAD_DATA1 = 2910010,\n        BARTHS_MOON_TRANSMITTER_DOWNLOAD_DATA2 = 2910011,\n        BARTHS_MOON_TRANSMITTER_DOWNLOAD_DATA3= 2910012,\n        BARTHS_MOON_TRANSMITTER_DOWNLOAD_DATA4 = 2910013,\n        BARTHS_MOON_TRANSMITTER_ENTER_MAINLAB = 2910014,\n        BARTHS_MOON_TRANSMITTER_DESTROY_COMPUTER = 2910015,\n        BARTHS_MOON_TRANSMITTER_FIND_PART1= 2910016,\n        BARTHS_MOON_TRANSMITTER_FIND_PART2= 2910017,\n        BARTHS_MOON_TRANSMITTER_FIND_PART3 = 2910018,\n        BARTHS_MOON_TRANSMITTER_FIND_PART4 = 2910019,\n        BARTHS_MOON_TRANSMITTER_FIND_WAY_OUT = 2910020,\n        BARTHS_MOON_TRANSMITTER_MEET_THOMAS2 = 29100201,\n        BARTHS_MOON_TRANSMITTER_TALK_TO_BARTH_WAY_BACK = 2910021,\n\n\n        BARTHS_MOON_TRANSMITTER_BUILD_TRANSMITTER = 29100030,\n        BARTHS_MOON_TRANSMITTER_TALK_WITH_THOMAS_BARTH_END = 2910031,\n        BARTHS_MOON_TRANSMITTER_RETURN_BACK_TO_MADELYN = 2910033,        \n\n        BARTHS_MOON_PLANT = 2920000,\n        BARTHS_MOON_PLANT_SAVE_BARTH = 2920001,\n        BARTHS_MOON_PLANT_KILL_ATTACKERS= 2920002,\n        BARTHS_MOON_PLANT_DEFENCE= 2920003,\n        BARTHS_MOON_PLANT_BUILD_DEFENCE_LINE= 2920004,\n        BARTHS_MOON_PLANT_PROTECT_BARTH = 2920005,\n        BARTHS_MOON_PLANT_PROTECT_MADELYN = 2920006,\n        BARTHS_MOON_PLANT_ENEMY = 2920007,\n        BARTHS_MOON_PLANT_DESTROY_GENERATORS = 2920008,\n        BARTHS_MOON_PLANT_GET_NEEDED_COMPONENTS = 29200081,\n        BARTHS_MOON_PLANT_CONSTRUCT_DETECTORS = 29200082,\n        BARTHS_MOON_PLANT_TALK_BARTH = 2920009,\n        BARTHS_MOON_PLANT_START_GENERATOR = 2920010,\n        BARTHS_MOON_PLANT_BUILD_PLANT= 2920011,\n\n        BARTHS_MOON_PLANT_BUILD_MANUFACTURING_PLANT = 2920031,\n        BARTHS_MOON_PLANT_TALK_WITH_THOMAS_BARTH = 2920032,\n        BARTHS_MOON_PLANT_RETURN_BACK_TO_MADELYN = 2920033,\n        \n        NEW_STORY_M331 = 3100000,\n        NEW_STORY_M331_REACH_SIDE_ENTRANCE = 3100001,\n        NEW_STORY_M331_PLACE_POWER_JAMMER_ON_REACTOR = 3100002,\n        NEW_STORY_M331_ENTER_THE_BASE = 3100003,\n        NEW_STORY_M331_SHUT_DOWN_ENERGY_1 = 3100004,\n        NEW_STORY_M331_SHUT_DOWN_ENERGY_2 = 3100005,\n        NEW_STORY_M331_PLACE_DEVICE_ON_TRANSMITTER = 3100006,\n        NEW_STORY_M331_ESCAPE_THE_OUTPOST_1 = 3100007,\n        NEW_STORY_M331_ESCAPE_THE_OUTPOST_2 = 3100008,\n\n        EAC_TRANSMITTER = 3500000,\n        EAC_TRANSMITTER_OPEN_CARGO = 3500010,\n        EAC_TRANSMITTER_CENTRAL_ROOM = 3500020,\n        EAC_TRANSMITTER_UNLOCK_WAY_TO_SATELLITE_A = 3500030,\n        EAC_TRANSMITTER_UNLOCK_WAY_TO_SATELLITE_B = 3500031,\n        EAC_TRANSMITTER_UNLOCK_WAY_TO_SATELLITE_C = 3500032,\n        EAC_TRANSMITTER_HACK_SATELLITE_A = 3500040,\n        EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_ESCAPE = 3500045,\n        EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_HACK = 3500046,\n        EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_DESTROY = 3500047,\n        EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_HELP = 3500048,\n        EAC_TRANSMITTER_HACK_SATELLITE_B = 3500050,\n        EAC_TRANSMITTER_HACK_SATELLITE_C = 3500060,\n        EAC_TRANSMITTER_START_TRANSMISSION = 3500070,\n        EAC_TRANSMITTER_OPEN_SOLAR_ARM = 3500080,\n        EAC_TRANSMITTER_FIND_REPAIR = 3500082,\n        EAC_TRANSMITTER_FIX_GENERATOR = 3500085,\n        EAC_TRANSMITTER_ACTIVATE_SOLARPANELS = 3500090,\n        EAC_TRANSMITTER_RESTART_TRANSMISSION = 3500095,\n        EAC_TRANSMITTER_MEETMS = 3500100,\n\n        SLAVER_BASE_1 = 3600000,\n        SLAVER_BASE_1_FIND_SLAVES = 3600001,\n        SLAVER_BASE_1_FREE_SLAVES = 3600002,\n        SLAVER_BASE_1_FREE_SLAVES_2 = 3600003,\n        SLAVER_BASE_1_FREE_SLAVES_3 = 3600004,\n        SLAVER_BASE_1_FREE_SLAVES_4 = 3600005,\n        SLAVER_BASE_1_FREE_SLAVES_5 = 3600006,\n        SLAVER_BASE_1_FIND_SLAVES_2 = 3600007,\n        SLAVER_BASE_1_DESTROY_GENERATOR = 3600008,\n        SLAVER_BASE_1_DESTROY_BATTERIES = 3600009,\n        SLAVER_BASE_1_RETURN = 3600010,\n        SLAVER_BASE_1_FIND_PRISON = 3600011,\n        SLAVER_BASE_1_DESTROY_ENEMIES = 3600012,  \n        SLAVER_BASE_1_HACK_HANGAR = 3600013,\n        SLAVER_BASE_1_RETURN_FAKE = 3600014,\n        SLAVER_BASE_1_HACK_NUKE = 3600015 ,\n        SLAVER_BASE_1_NAVIGATION = 3600016,\n        SLAVER_BASE_1_DIALOG_1 = 3600017,\n        SLAVER_BASE_1_DIALOG_2 = 3600018,\n        SLAVER_BASE_1_DIALOG_3 = 3600019,\n        SLAVER_BASE_1_DIALOG_4 = 3600020,\n        SLAVER_BASE_1_DIALOG_5 = 3600021,\n        SLAVER_BASE_1_DIALOG_6 = 3600022,\n        SLAVER_BASE_1_DIALOG_7 = 3600023,\n        SLAVER_BASE_1_DIALOG_8 = 3600024,\n        SLAVER_BASE_1_DIALOG_9 = 3600025,\n        SLAVER_BASE_1_DIALOG_10 = 3600026,\n\n        SLAVER_BASE_2 = 3700000,\n        SLAVER_BASE_2_PARALYZE_DEFENSE = 3700001,\n        UNLOCK_PRISON_1 = 3700002,\n        UNLOCK_PRISON_2 = 3700003,\n        SLAVER_BASE_2_BREAK_THE_CHAINS = 3700004,\n        SLAVER_BASE_2_FREE_SLAVES = 3700005,\n        SLAVER_BASE_2_FINAL_FREEDOM = 3700010,\n        SLAVER_BASE_2_RETURN = 3700011,\n        SLAVER_BASE_2_INTRO = 3700012,\n        SLAVER_BASE_2_TALK_ABOUT_GENERATOR = 3700013,\n        SLAVER_BASE_2_TALK_ABOUT_PRISONERS = 3700014,\n\n        RIME_BLUEPRINTS = 3800000,\n        RIME_BLUEPRINTS_ENTRANCE1 = 3800001,\n        RIME_BLUEPRINTS_ENTRANCE2 = 3800002,\n        RIME_BLUEPRINTS_TARGET = 3800003,\n        RIME_BLUEPRINTS_EXIT = 3800004,\n        RIME_BLUEPRINTS_RETURN_TO_FRANCIS = 3800005,\n        RIME_BLUEPRINTS_RETURN_TO_MOTHERSHIP = 3800006,\n            \n        RESEARCH_VESSEL = 38100000,\n        RESEARCH_VESSEL_REACH_SHIP = 38100001,\n        RESEARCH_VESSEL_CHECK_CARGO = 38100002,\n        RESEARCH_VESSEL_CHECK_COMMAND_ROOM = 38100003,\n        RESEARCH_VESSEL_TAKE_FIRST = 38100004,\n        RESEARCH_VESSEL_USE_HUB_1 = 38100005,\n        RESEARCH_VESSEL_CHECK_LABORATORY = 38100006,\n        RESEARCH_VESSEL_CHECK_WAREHOUSE = 38100007,\n        RESEARCH_VESSEL_CHECK_DRILL_ROOM = 38100008,\n        RESEARCH_VESSEL_CHECK_FIRST_HANGAR = 38100009,\n        RESEARCH_VESSEL_TAKE_SECOND = 38100010,\n        RESEARCH_VESSEL_USE_HUB_2 = 38100011,\n        RESEARCH_VESSEL_CHECK_SECOND_HANGAR = 38100012,\n        RESEARCH_VESSEL_CHECK_THIRD_HANGAR = 38100013,\n        RESEARCH_VESSEL_CHECK_SECOND_WAREHOUSE = 38100014,\n        RESEARCH_VESSEL_CHECK_GENERATOR = 38100015,\n        RESEARCH_VESSEL_TAKE_THIRD = 38100016,\n        RESEARCH_VESSEL_USE_HUB_3 = 38100017,\n        RESEARCH_VESSEL_CHECK_CARGO_AGAIN = 38100018,\n        RESEARCH_VESSEL_TAKE_FOURTH = 38100019,\n        RESEARCH_VESSEL_INTRO = 38100020,\n        RESEARCH_VESSEL_TAKE_THIRD_DIALOGUE = 38100021,\n        \n       \n\n        TRADE_STATION_EAC = 3900000,\n        TRADE_STATION_EAC_HOSPITAL = 3900001,\n        TRADE_STATION_EAC_CASINO = 3900002,\n        TRADE_STATION_EAC_RETURN = 3900003,\n        TRADE_STATION_EAC_DIALOGUE = 3900004,\n\n        FORT_VALIANT = 4000000,\n        FORT_VALIANT_B = 5500000,\n        FORT_VALIANT_C = 560000,\n        FORT_VALIANT_FLY_TARGET = 4000001,\n        FORT_VALIANT_MEET_TEMPLAR_REPRESENTATIVES = 4000002,\n        FORT_VALIANT_RETURN_BACK_TO_MADELYN = 4000003,\n        FORT_VALIANT_TALK_WITH_TEMPLAR = 4000004,\n        FORT_VALIANT_FIND_VENT_ENTRANCE = 4000005,\n        FORT_VALIANT_GET_TO_ELEVATOR_SHAFT = 4000006,\n        FORT_VALIANT_GET_TO_CAVE_ENTRANCE = 4000007,\n        FORT_VALIANT_FIND_THE_ARTIFACT = 4000008,\n        FORT_VALIANT_LEAVE_VAULT_OF_VALIANT = 4000009,\n        FORT_VALIANT_RETURN_BACK_TO_MADELYN_2 = 4000010,\n        FORT_VALIANT_ACTIVATE_SLAVE_MISSIONS = 4000011,\n\n        FORT_VALIANT_FLY_ONE = 4000012,\n        //FORT_VALIANT_FLY_REACH_GATE = 4000013,\n        FORT_VALIANT_SPEAK_GATE_KEEPER = 4000014,\n        FORT_VALIANT_MEET_CAPTAIN = 4000015,\n        FORT_VALIANT_VISIT_VENDOR = 4000016,\n        FORT_VALIANT_FLY_BACK_MADELYN = 4000017,\n\n\n\n\n\n        FORT_VALIANT_C_VALUT = 5600016,\n        FORT_VALIANT_C_TURN_OFF_SCANNER = 5600017,\n        FORT_VALIANT_C_SCANNERS3 = 56000171,\n        FORT_VALIANT_C_SCANNERS4 = 56000172,\n        FORT_VALIANT_C_TOP_ELEVATOR = 5600018,\n        FORT_VALIANT_C_VENT_SYSTEM = 5600019,\n        FORT_VALIANT_C_CATACOMBS = 5600020,\n        FORT_VALIANT_C_PICK_UP_EQUIP = 5600021,\n        FORT_VALIANT_C_FLY_BACK_MADELYN = 5600022,\n\n\n        //FORT_VALIANT_C_FOLLOW_TURN_OFF_GATE = 5600012,\n\n\n\n\n        TRADE_STATION_ARABS = 4100000,\n        //TRADE_STATION_ARABS_FLY_TARGET = 4100001,\n\n        SOLAR_PLANT_CHINA = 4200000,\n        SOLAR_PLANT_CHINA_DESTROY_TARGET_1 = 4200001,\n        SOLAR_PLANT_CHINA_DESTROY_TARGET_2 = 4200002,\n        SOLAR_PLANT_CHINA_FLY_TARGET = 4200003,\n\n        CHINESE_REFINERY = 4300000,\n        CHINESE_REFINERY_01_GET_CLOSER = 4300001,\n        CHINESE_REFINERY_02_GET_IN = 4300002,\n        CHINESE_REFINERY_03_FIND_SECRET_ROOM = 4300003,\n        CHINESE_REFINERY_03_D_FIND_SECRET_ROOM = 4300004,\n        CHINESE_REFINERY_04_SET_VIRUS = 4300005,\n        CHINESE_REFINERY_05_DEACTIVATE_BOMB = 4300006,\n        CHINESE_REFINERY_06_GET_TO_FIRST_TUNNEL = 4300007,\n        CHINESE_REFINERY_07_PAST_FIRST_TUNNEL = 4300008,\n        CHINESE_REFINERY_08_SET_BUG_IN_COMPUTER = 4300009,\n        CHINESE_REFINERY_09_GET_TO_SECOND_TUNNEL = 4300010,\n        CHINESE_REFINERY_10_PAST_SECOND_TUNNEL = 4300011,\n        CHINESE_REFINERY_11_SNEAK_INSIDE_THE_STATION = 4300012,\n        CHINESE_REFINERY_12_GET_TO_OLD_PATH = 4300013,\n        CHINESE_REFINERY_13_HACK_REFINARY_COMPUTER = 4300014,\n        CHINESE_REFINERY_14_GET_OUT_OF_THE_STATION = 4300015,\n        CHINESE_REFINERY_15_LAND_INSIDE_THE_TRANSPORTER = 4300016,\n\n        TRADE_STATION_CHINA = 4400000,\n        TRADE_STATION_CHINA_FLY_INSIDE = 4400001,\n\n        NEW_SINGAPOUR = 4500000,\n        //NEW_SINGAPOUR_FLY = 4500001,\n\n        REICHSTAG_C = 4600000,\n        //REICHSTAG_C_MEETING = 4600010,\n        REICHSTAG_C_FOR = 4600015,\n        REICHSTAG_C_COLONEL_DIALOGUE = 4600016,\n        REICHSTAG_C_GO_TO_SHIPYARD = 4600017,\n        REICHSTAG_C_TALK_TO_SUPPLY_OFFICER = 4600018,\n        REICHSTAG_C_CHANGESHIP = 4600020,\n        REICHSTAG_C_SHIP_CHANGED_DIALOGUE = 4600021,\n        REICHSTAG_C_WEAPONS = 4600025,\n        REICHSTAG_C_GO_TO_HANGAR = 4600026,\n        REICHSTAG_C_TRANSPORTER_CAPTAIN_DIALOGUE = 4600027,\n        REICHSTAG_C_MOTHERSHIP = 4600030,\n        REICHSTAG_C_RETURN = 4600035,\n\n        SOLAR_PLANT_EAC = 4700000,\n        SOLAR_PLANT_EAC_DESTROY = 4700001,\n        SOLAR_PLANT_EAC_RETURN = 4700002,\n\n        JUNKYARD_RETURN = 4800000,\n        JUNKYARD_RETURN_MEET_SMUGGLER = 4800001,\n        JUNKYARD_RETURN_SMUGGLER_DIALOGUE = 4800002,\n        JUNKYARD_RETURN_FLY_TO_START = 4800003,\n        JUNKYARD_RETURN_RACE = 4800004,\n        JUNKYARD_RETURN_WIN = 4800005,\n        JUNKYARD_RETURN_GO_TO_SMUGGLER = 4800006,\n        JUNKYARD_RETURN_DIALOGUE_RETURN = 4800007,\n        JUNKYARD_RETURN_SPEEDSTER_DIALOGUE = 4800009,\n\n        RIME_CONVINCE = 4900000,\n        RIME_CONVINCE_INTRODUCTION = 4900001,\n        RIME_CONVINCE_GET_FRANCIS_REEF = 4900002,\n        RIME_CONVINCE_TALK_FRANCIS_REEF = 4900003,\n        RIME_CONVINCE_GO_TO_DUPLEX = 4900004,\n        RIME_CONVINCE_CLIENTS_TALK = 4900005,\n        RIME_CONVINCE_DUPLEX_BOUNCER = 4900020,\n        RIME_CONVINCE_CONTACT_APPEARS = 4900021,\n        RIME_CONVINCE_RETURN_TO_POSITION = 4900006,\n        RIME_CONVINCE_FOLLOW_CONTACT = 4900007,\n        RIME_CONVINCE_FACTORY_FOUND_DIALOGUE = 4900008,\n        RIME_CONVINCE_DESTROY_FACTORY_BOTS = 4900009,\n        RIME_CONVINCE_COLLECT_CARGO = 4900010,\n        RIME_CONVINCE_CARGO_COLLECTED_DIALOG = 4900011,\n        RIME_CONVINCE_FLY_TO_VESSEL = 4900012,\n        RIME_CONVINCE_WAIT_FOR_THE_MOMENT = 4900013,\n        RIME_CONVINCE_PLANT_CARGO = 4900014,\n        RIME_CONVINCE_GET_OUT_OF_THE_VESSEL = 4900015,\n        RIME_CONVINCE_CARGO_PLANTED_OBJECTIVE_DIALOGUE = 4900016,\n        RIME_CONVINCE_GO_BACK_TO_FRANCIS = 4900017,\n        RIME_CONVINCE_TALK_TO_FRANCIS= 4900018,\n        RIME_CONVINCE_GO_BACK_TO_MADELYN = 4900019,\n\n        ALIEN_GATE = 5000000,\n        ALIEN_GATE_RIGHT_WING = 500000001,\n        ALIEN_GATE_FOLLOW_COORDINATES = 50000001,\n        ALIEN_GATE_CONTINUE_SEARCHING = 50000002,\n        ALIEN_GATE_FOLLOW_DIRECTION = 50000003,\n        ALIEN_GATE_COUGHT_IN_TRAP = 50000004,\n        ALIEN_GATE_RUN_FOR_LIFE = 50000005,\n        ALIEN_GATE_REGROUP_WITH_MADELYN = 50000006,\n        ALIEN_GATE_BOARD_MOTHER_SHIP = 50000007,\n        ALIEN_GATE_HACK_GENERATOR = 50000008,\n        ALIEN_GATE_HACK_ENGINE = 50000009,\n        ALIEN_GATE_LEAVE_SHIP = 50000010,\n        ALIEN_GATE_REGROPUP_WITH_MADELYN = 50000011,\n        ALIEN_GATE_BOARD_SECOND = 500000111,\n        ALIEN_GATE_HACK_GENERATOR2 = 50000012,\n        ALIEN_GATE_HACK_ENGINE_2 = 50000013,\n        ALIEN_GATE_ENABLE_DOORS = 50000014,\n        ALIEN_GATE_ENTER_LAB = 50000015,\n        ALIEN_GATE_16 = 50000016,\n        ALIEN_GATE_17 = 50000017,\n        ALIEN_GATE_18 = 50000018,\n        ALIEN_GATE_19 = 50000019,\n        ALIEN_GATE_20 = 50000020,\n        ALIEN_GATE_21 = 50000021,\n        ALIEN_GATE_22 = 50000022,\n        ALIEN_GATE_23 = 50000023,\n        ALIEN_GATE_EXPLORE_THE_ALIEN_GATE = 5000001,\n        ALIEN_GATE_DESTROY_INCOMING_ENEMY_FORCES = 5000002,\n        ALIEN_GATE_DESTROY_GENERATOR_OF_ENEMY_MOTHER_SHIP = 5000003,\n\n        JUNKYARD_EAC_AMBUSH = 51000000,\n        JUNKYARD_EAC_AMBUSH_FLY_MANJEET= 5100001,\n        JUNKYARD_EAC_AMBUSH_TALK_RANIJT = 51000002,\n        JUNKYARD_EAC_AMBUSH_GO_BACK_TO_MADELYN = 51000003,\n        JUNKYARD_EAC_AMBUSH_SPEAK_POLICE = 51000004,\n        JUNKYARD_EAC_AMBUSH_DEFEND_MADELYN_1 =510000041, \n        JUNKYARD_EAC_AMBUSH_DESTROY_GENERATOR = 51000005,\n        JUNKYARD_EAC_AMBUSH_RETUR_TO_MADELYN =  51000006,\n        JUNKYARD_EAC_AMBUSH_DEFEND_MADELYN =  51000007,\n\n\n        URANITE_MINE = 5200000,\n\n        ARABIAN_BORDER = 5300000,\n\n        CKD_MOTHERSHIP_FACILITY = 5400000,\n\n        FORT_VALIANT_B_FLY_ONE = 5500012,\n        //FORT_VALIANT_FLY_REACH_GATE = 4000013,\n        FORT_VALIANT_B_SPEAK_GATE_KEEPER = 5500014,\n        FORT_VALIANT_B_MEET_CAPTAIN = 5500015,\n        FORT_VALIANT_B_VISIT_VENDOR = 5500016,\n        FORT_VALIANT_B_FLY_BACK_MADELYN = 5500017,\n\n\n        FORT_VALIANT_C_CAPTAIN = 560001,\n        FORT_VALIANT_C_UPPER_FLOOR = 560002,\n        FORT_VALIANT_C_EQUIP_TALK = 5600041,\n        FORT_VALIANT_C_EQUIP = 5600042,\n        FORT_VALIANT_C_MEET_OFFICIALS = 560005,\n        FORT_VALIANT_C_LEAVE_OFFICIALS = 560006,\n        FORT_VALIANT_C_LEAVE_FOLLOW = 5600061,\n        FORT_VALIANT_C_SPEAK_SIR = 560008,\n        FORT_VALIANT_C_GET_EQUP_CARGO = 560009,\n        FORT_VALIANT_C_FOLLOW_FIND_VENTILATION = 5600010,\n        FORT_VALIANT_C_FOLLOW_ENTER_VENTILATION = 5600011,\n        FORT_VALIANT_C_FOLLOW_TURN_OFF_GATE = 5600012,\n        FORT_VALIANT_C_SCANNERS1 = 5600013,\n        FORT_VALIANT_C_SCANNERS2 = 5600014,\n        FORT_VALIANT_C_SCANNERS23 = 56000141,\n        FORT_VALIANT_C_TAKE_ARTEFACT = 5600015,\n\n\n        HIPPIE_OUTPOST = 5700000,\n        REACH_OUTPOST = 5700001,\n        KILL_ALL = 5700002,\n\n\n        MILITARY_OUTPOST = 5800000,\n\n        NEW_JERUSALEM_MISSION = 590000,\n\n        NEW_NANJING = 600000,\n\n        REICHSTAG_A = 610000,\n        REICHSTAG_A_INTRODUCTION = 610001,\n        REICHSTAG_A_GET_TO_MAIN_BUILDING = 610002,\n        REICHSTAG_A_MEET_COLONEL = 610003,\n        REICHSTAG_A_COLONEL_DIALOGUE = 610004,\n\n        CHINESE_CAPITAL = 620000,\n\n        RUSSIAN_CAPITAL = 630000,\n\n        ARABIAN_CAPITAL = 640000,\n\n        EAC_CAPITAL = 650000,\n\n        ASTEROID_COMPLEX = 660000,\n\n        MOTHERSHIP_CRASH = 670000,\n\n        INTERGALACTIC_HIGHWAY = 680000,\n\n        CONVOY = 690000,\n\n        BIOFACILITY = 711001,\n\n        AUTONOMOUS_OUTPOST = 711002,\n\n        GATES_OF_HELL = 711003,\n\n        MINER_OUTPOST = 711004,\n\n        MINER_UPRISING = 711005,\n\n        INDUSTRIAL_SECTOR = 711006,\n        \n        FACTORY_AMBUSH = 711007,\n\n        ASTEROID_FIELD = 711008,\n\n        DUMPING_GROUND = 711009,\n\n        FORGOTTEN_FACILITY = 711010,\n\n        ZOMBIE_LEVEL = 711011,\n\n        // TO DELETE\n        PLAYGROUND = 999999,\n        PLAYGROUND_SUBMISSION_01 = 999998,\n        PLAYGROUND_SUBMISSION_02 = 999997,\n\n        HUB_SHOWCASE = 3000000,         // In main menu play playground\n\n        STEALTH_PLAYGROUND = 3000001,\n\n        FAST_TEST_MISSION = 9900000,\n        FAST_TEST_MISSION_TUNNEL1 = 9900010,\n        FAST_TEST_MISSION_TUNNEL2 = 9900020,\n        FAST_TEST_MISSION_TUNNEL3 = 9900030,\n\n        SMART_WAVES_TEST_MISSION = 9901000,\n        SMART_WAVES_TEST_MISSION_OBJECTIVE = 9901010,\n\n        COOP_FOLLOW_HOST = 9902000,\n        COOP_FOLLOW_HOST_OBJECTIVE = 9902001,\n\n        TEST_MISSION = 9904000,\n        TEST_MISSION_OBJECTIVE1 = 9904001,\n        TEST_MISSION_OBJECTIVE2 = 9904002,\n\n        TEST_ATTACK_MISSION = 9905000,\n        TEST_ATTACK_MISSION_OBJECTIVE1 = 9905001,\n        TEST_ATTACK_MISSION_OBJECTIVE2 = 9905002,\n    }\n\n    #endregion\n\n    static class MyMissions\n    {\n        static readonly Dictionary<int, MyMissionBase> m_missions = new Dictionary<int, MyMissionBase>();\n        static readonly Dictionary<MyMwcVector3Int, MyMission> m_sandboxMissions = new Dictionary<MyMwcVector3Int, MyMission>();\n\n        static readonly List<MyMission> m_availableMissions = new List<MyMission>();\n        static readonly List<MyMission> m_availableStoryMissions = new List<MyMission>();\n        static bool m_inMissionScreen;\n        /*\n        static MyHudNotification.MyNotification m_missionNotification = new MyHudNotification.MyNotification(\n                    MyTextsWrapperEnum.NotificationMissionAvailableInRange,\n                    MyHudNotification.GetCurrentScreen(),\n                    1f,\n                    MyGuiManager.GetFontMinerWarsBlue(),\n                    MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER,\n                    (int)MySmallShipConstants.DETECT_INTERVAL + 50,\n                    null,\n                    false,\n                    new[] { MyGuiManager.GetInput().GetGameControlTextEnum(MyGameControlEnums.MISSION_DIALOG) });\n          */\n                \n        private static int m_newMissionAvailableLastTime = 0;\n        private static MyMission m_availableMissionLastTime = null;\n\n        static bool m_needsSave = false;\n        public static string SaveName;\n        public static bool NeedsSave\n        {\n            get { return m_needsSave; }\n            set { m_needsSave = value; }\n        }\n        public static bool CreateChapter;\n\n        private static MyMission _activeMission;\n        public static MyMission ActiveMission \n        {\n            get { return _activeMission; }\n            set { _activeMission = value; }\n        }\n\n        static bool m_canSaveObjectives = true;\n\n        static MyMissions()\n        {\n            AddMissions();\n            //AddSandboxMissions();\n\n            //Render.MyRender.RegisterRenderModule(\"Missions\", Draw, Render.MyRenderStage.PrepareForDraw);\n\n            //OutputMissionTree();\n\n            MyScriptWrapper.EntityClosing += new MyScriptWrapper.EntityHandler(MyScriptWrapper_EntityClosing);\n        }\n\n        static void MyScriptWrapper_EntityClosing(MyEntity entity)\n        {\n            if (entity.EntityId.HasValue && (ActiveMission != null) && ActiveMission.Objectives.Count > 0)\n            {\n                foreach (var objective in ActiveMission.Objectives)\n                {\n                    if (objective.FailIfEntityDestroyed && !MySession.Static.EventLog.IsMissionFinished(objective.ID))\n                    {\n                        FailIfRequiredEntity(entity, objective.RequiredEntityIDs);\n                        FailIfRequiredEntity(entity, objective.MissionEntityIDs);\n                    }\n                }\n            }\n        }\n\n        static void FailIfRequiredEntity(MyEntity entity, List<uint> entityIDs)\n        {\n            foreach (var entityID in entityIDs)\n            {\n                if (entity.EntityId.Value.NumericValue == entityID)\n                {\n                    ActiveMission.Fail(MyTextsWrapperEnum.MissionFail_RequiredObjectDestroyed);\n                    return;\n                }\n            }\n        }\n\n        //private static void OutputMissionTree()\n        //{\n        //    List<MyMissionBase> rootMissions = new List<MyMissionBase>();\n        //    foreach (var mission in m_missions)\n        //    {\n        //        if (mission.Value.RequiredMissions.Length == 0)\n        //        {\n        //            rootMissions.Add(mission.Value);\n        //        }\n        //    }\n        //    System.IO.StreamWriter writer = new System.IO.StreamWriter(System.IO.File.OpenWrite(\"missions.txt\"));\n        //    foreach (var item in rootMissions)\n        //    {\n        //        WriteDependentMissions(writer, item.ID, 0);\n        //        writer.WriteLine();\n        //    }\n        //    writer.Flush();\n        //    writer.Close();\n        //}\n\n        //private static void WriteDependentMissions(System.IO.StreamWriter writer, MyMissionID parentId, int intedationLevel)\n        //{\n        //    var parent = m_missions[(int)parentId];\n\n        //    for (int i = 0; i < intedationLevel; i++)\n        //    {\n        //        writer.Write(\">\");\n        //    }\n        //    writer.Write(parent.DebugName ?? parent.NameTemp);\n        //    writer.WriteLine();\n\n        //    foreach (var item in m_missions.Values)\n        //    {\n        //        if (item.RequiredMissions.Contains(parent.ID))\n        //        {\n        //            WriteDependentMissions(writer, item.ID, intedationLevel + 1);\n        //        }\n        //    }\n        //}\n\n        private static void AddMissions()\n        {\n            //AddMission(new SinglePlayer.MyIntroMission());\n            AddMission(new SinglePlayer.MyEACSurveySiteMission());\n            AddMission(new SinglePlayer.MyPirateBaseMission());\n            AddMission(new SinglePlayer.MyTwinTowersMission());\n            AddMission(new SinglePlayer.MyChineseTransportMission());\n            AddMission(new SinglePlayer.MyEACPrisonMission());\n            AddMission(new SinglePlayer.MyRussianWarehouseMission());\n            AddMission(new SinglePlayer.MyLaikaMission());\n            AddMission(new SinglePlayer.MyChineseEscapeMission());\n            AddMission(new SinglePlayer.MyLastHopeMission());\n            AddMission(new SinglePlayer.MyPlaygroundMission());\n            AddMission(new SinglePlayer.MyChineseTransmitterMission());\n            AddMission(new SinglePlayer.MyWhiteWolvesResearchMission());\n            AddMission(new SinglePlayer.MyRiftMission());\n            AddMission(new SinglePlayer.MyJunkyardConvinceMission());\n            AddMission(new SinglePlayer.MyStealthPlayground());\n            AddMission(new SinglePlayer.MySmallPirateBaseMission());\n            AddMission(new SinglePlayer.MySmallPirateBase2Mission());\n            AddMission(new SinglePlayer.MyRussianTransmitterMission());\n            AddMission(new SinglePlayer.MyBarthsMoonConvinceMission());\n            AddMission(new SinglePlayer.MyEACTransmitterMission());\n\n\n\n            /*AddMission(new SinglePlayer.MyRimeBlueprintsMission());*/\n            AddMission(new SinglePlayer.MyResearchVesselMission());\n            AddMission(new SinglePlayer.MyTradeStationEACMission());\n            AddMission(new SinglePlayer.MyTradeStationChinaMission());\n            AddMission(new SinglePlayer.MyNewSingaporeIndustryMission());\n            AddMission(new SinglePlayer.MyChineseSolarArrayAttackMission());\n            AddMission(new SinglePlayer.MyMedina622Mission());\n            AddMission(new SinglePlayer.MyFortValiantMission());\n            AddMission(new SinglePlayer.MySlaverBase2Mission());\n            AddMission(new SinglePlayer.MyFortValiantMissionB());\n            AddMission(new SinglePlayer.MySlaverBaseMission());\n            AddMission(new SinglePlayer.MyFortValiantMissionC());\n            AddMission(new SinglePlayer.MyReichstagAMission());\n            AddMission(new SinglePlayer.MyReichstagCMission());\n            AddMission(new SinglePlayer.MySolarfactoryEACMission());\n            AddMission(new SinglePlayer.MyChineseRefineryMission());\n            AddMission(new SinglePlayer.MyBarthsMoonTransmitterMission());\n            AddMission(new SinglePlayer.MyBarthsMoonPlantMission());\n            AddMission(new SinglePlayer.MyAlienGateMission());\n            AddMission(new SinglePlayer.MyJunkyardReturnMission());\n            AddMission(new SinglePlayer.MyRimeConvinceMission());\n            AddMission(new SinglePlayer.MyJunkyardEACAmbushMission());\n            AddMission(new SinglePlayer.MyPlutoniumMineMission());\n            AddMission(new SinglePlayer.MyArabianBorderMission());\n            AddMission(new SinglePlayer.MyCKDMothershipFacilityMission());\n            AddMission(new SinglePlayer.MyHippieOutpostMission());\n            AddMission(new SinglePlayer.MyMilitaryOutpostMission());\n            AddMission(new SinglePlayer.MyNewJerusalemMission());\n            AddMission(new SinglePlayer.MyNewNanjingMission());\n            AddMission(new SinglePlayer.MyChineseCapitalMission());\n            AddMission(new SinglePlayer.MyRussianCapitalMission());\n            AddMission(new SinglePlayer.MyArabianCapitalMission());\n            AddMission(new SinglePlayer.MyEACCapitalMission());\n            AddMission(new SinglePlayer.MyAsteroidComplexMission());\n            AddMission(new SinglePlayer.MyMothershipCrashMission());\n            AddMission(new SinglePlayer.IntergalacticHighway());\n            AddMission(new SinglePlayer.MyConvoyMission());\n            AddMission(new SinglePlayer.MyBiofacilityMission());\n            AddMission(new SinglePlayer.MyAutonomousOutpostMission());\n            AddMission(new SinglePlayer.MyGatesOfHellMission());\n            AddMission(new SinglePlayer.MyHeliumMinesMission());\n            AddMission(new SinglePlayer.MyMinerUprisingtMission());\n            AddMission(new SinglePlayer.MyIndustrialSectorMission());\n            AddMission(new SinglePlayer.MyFactoryAmbushMission());\n            AddMission(new SinglePlayer.MyAsteroidResearchFieldMission());\n            AddMission(new SinglePlayer.MyDmpingGroundMission());\n            AddMission(new SinglePlayer.MyForgottenFacilityMission());\n            AddMission(new SinglePlayer.MyZombieLevelMission());\n\n\n            AddMission(new SinglePlayer.MyTestMission());\n            AddMission(new SinglePlayer.MyTestAttackMission());\n\n        }\n\n        public static void AddSandboxMissions()\n        {\n            AddSandboxMission(new Sandbox.MyHubShowcaseMission());\n        }\n\n        public static void AddSandboxMission(MyMission mission)\n        {\n            Debug.Assert(mission.Location != null, \"Sandbox mission must have one location (one sector)\");\n            m_sandboxMissions.Add(mission.Location.Sector, mission);\n        }\n\n        public static void ReloadTexts()\n        {\n            foreach (var mission in m_missions)\n            {\n                mission.Value.ReloadName();\n            }\n        }\n\n\n        /// <summary>\n        /// Starts mission for current sandbox sector, when mission exists.\n        /// Otherwise do nothing.\n        /// </summary>\n        /// <returns>Accepted mission or null.</returns>\n        public static MyMission StartSandboxMission(MyMwcVector3Int sectorPosition)\n        {\n            MyMission mission;\n            if (m_sandboxMissions.TryGetValue(sectorPosition, out mission))\n            {\n                mission.Accept();\n                return mission;\n            }\n            return null;\n        }\n\n        //static void Draw()\n        //{\n        //    // Dont draw cubes in editor etc.\n        //    if (!MyGuiScreenGamePlay.Static.IsGameActive())\n        //    {\n        //        return;\n        //    }\n\n        //    Matrix world = Matrix.Identity;\n        //    Vector4 vctColorPoly = MyHudConstants.MISSION_CUBE_COLOR;\n\n        //    BoundingBox boundingBox = new BoundingBox(-Vector3.One * MyMissionsConstants.MISSION_CUBE_SIZE_HALF, Vector3.One * MyMissionsConstants.MISSION_CUBE_SIZE_HALF); \n            \n        //    // Draw cubes for available missions\n        //    var availableMissions = GetAvailableMissions();\n        //    foreach (var mission in availableMissions)\n        //    {\n        //        if (mission.Location != null && \n        //            (MySession.Static == null || mission != MySession.Static.ActiveMission) && \n        //            MyGuiScreenGamePlay.Static.IsCurrentSector(mission.Location.Sector))\n        //        {\n        //            world = Matrix.CreateTranslation(mission.Location.Location);\n        //            MySimpleObjectDraw.DrawTransparentBox(ref world, ref boundingBox, ref vctColorPoly, true, 1);\n        //        }\n        //    }\n\n        //    // Draw cubes for active submissions\n        //    if (MySession.Static != null && MySession.Static.ActiveMission != null)\n        //    {\n        //        foreach (var activeSubMission in MySession.Static.ActiveMission.ActiveSubmissions)\n        //        {\n        //            if (activeSubMission.Location != null && MyGuiScreenGamePlay.Static.IsCurrentSector(activeSubMission.Location.Sector))\n        //            {\n        //                world = Matrix.CreateTranslation(activeSubMission.Location.Location);\n        //                MySimpleObjectDraw.DrawTransparentBox(ref world, ref boundingBox, ref vctColorPoly, true, 1);\n        //            }\n        //        }\n        //    }\n        //}\n\n        public static void AddMission(MyMission mission)\n        {\n            Debug.Assert(mission.RequiredMissions != null, \"Required mission cannot be null\");\n            Debug.Assert(mission.IsValid(), \"Mission is not valid! For mission without objectives use MyMissionSandboxBase and for mission with objectives use MyMission!\");\n\n            // Write a list of missions and objectives into a file.\n\n            //System.IO.StreamWriter file = new System.IO.StreamWriter(\"c:\\\\mission_list.txt\", append:true);\n            //file.WriteLine(MyTextsWrapper.Get(mission.Name) + \" (\" + mission.DebugName + \")\");\n\n            m_missions.Add((int)mission.ID, mission);\n            foreach (var objective in mission.Objectives)\n            {\n                System.Diagnostics.Debug.Assert(!m_missions.ContainsKey((int)objective.ID), string.Format(\"Objective {0} already added!\", objective.NameTemp));\n                m_missions.Add((int)objective.ID, objective);\n                //file.WriteLine(objective.ID + \"\\t\" + objective.GetType() + \"\\t\" + objective.NameTemp);\n            }\n            //file.WriteLine(\"\");\n            //file.Close();\n        }\n\n        public static void ClearSideMissions()\n        {\n            // Make copy to allow foreach\n            foreach (var mission in m_missions.ToArray())\n            {\n                if (mission.Value.IsSideMission)\n                {\n                    m_missions.Remove(mission.Key);\n                }\n            }\n        }\n\n        /// <summary>\n        /// Returns a MyMission or MySubmission object with the specified ID.\n        /// </summary>\n        public static MyMissionBase GetMissionByID(MyMissionID ID)\n        {\n            if (m_missions.ContainsKey((int)ID))\n                return m_missions[(int)ID];\n\n            return null;\n        }\n\n\n        public static void Update()\n        {\n            if (NeedsSave)\n            {\n                var session = MySession.Static;\n                bool canSave = session != null \n                    && MyGuiScreenGamePlay.Static.GetGameType() == MyGuiScreenGamePlayType.GAME_STORY // save only in story\n                    && !MyFakes.DISABLE_AUTO_SAVE\n                    && (!MyMultiplayerGameplay.IsRunning || MyMultiplayerGameplay.Static.IsHost) // Save only when multiplayer is not running or i am the host\n                    && (MySession.PlayerShip != null && !MySession.PlayerShip.IsDead()); // Save only when i am alive\n\n                if (canSave)\n                {\n                    if (MyFakes.CHAPTER_ON_EACH_MISSION)\n                    {\n                        session.SaveLastCheckpoint(true);\n                    }\n                    else\n                    {\n                        session.SaveLastCheckpoint(CreateChapter);\n                    }\n                }\n                CreateChapter = false;\n                NeedsSave = false;\n            }\n\n            var mission = MyMissions.ActiveMission;\n            if (mission != null)\n            {\n                if (!mission.MarkedForUnload)\n                    mission.Update();\n\n                if (mission.MarkedForUnload)\n                {\n                    mission.Unload();\n                }\n            }\n        }\n\n        /// <summary>\n        /// Refreshes the list of available missions. Call after some change in missions (success, fail, sector change).\n        /// </summary>\n        public static void RefreshAvailableMissions()\n        {\n            //MyMwcLog.WriteLine(\"MyMissions::RefreshAvailableMissions - START\");\n            //MyMwcLog.IncreaseIndent();\n\n            m_availableMissions.Clear();\n            m_availableStoryMissions.Clear();\n\n            // Run missions only on host\n            if (MyMultiplayerGameplay.IsRunning && !MyMultiplayerGameplay.Static.IsHost)\n                return;\n\n            if (MyGuiScreenGamePlay.Static == null || MyGuiScreenGamePlay.Static.IsEditorActive() || MySession.Static == null || MySession.Static.EventLog == null\n                || (MyGuiScreenGamePlay.Static.GetPreviousGameType().HasValue && (MyGuiScreenGamePlay.Static.GetPreviousGameType().Value == MyGuiScreenGamePlayType.EDITOR_STORY || MyGuiScreenGamePlay.Static.GetPreviousGameType().Value == MyGuiScreenGamePlayType.EDITOR_SANDBOX)\n                || MyGuiScreenGamePlay.Static.GetGameType() == MyGuiScreenGamePlayType.GAME_SANDBOX)\n                || (MySession.PlayerShip == null) || (MySession.PlayerShip.IsDead()))\n                return;\n            \n            // because we dont want unnecessary memory allocation\n            foreach (KeyValuePair<int, MyMissionBase> missionKeyValuePair in m_missions)\n            {\n                MyMission mission = missionKeyValuePair.Value as MyMission;\n                if (mission != null)\n                {\n                    bool available = missionKeyValuePair.Value.IsAvailable() && !MySession.Static.EventLog.IsMissionFinished(missionKeyValuePair.Value.ID);\n                    if (available)\n                    {\n                        m_availableMissions.Add(mission);\n\n                        if (mission.RequiredMissions.Length > 0)\n                            m_availableStoryMissions.Add(mission);\n                    }\n\n                    // Show or hide location dummy\n                    mission.SetLocationVisibility(available);\n                }\n            }\n\n            //MyMwcLog.DecreaseIndent();\n            //MyMwcLog.WriteLine(\"MyMissions::RefreshAvailableMissions - END\");            \n        }\n\n        /// <summary>\n        /// Returns the list of available missions. Can be out of date - use RefreshAvailableMissions() in that case.\n        /// </summary>\n        /// <returns></returns>\n        public static List<MyMission> GetAvailableMissions()\n        {\n            return m_availableMissions;\n        }\n\n        /// <summary>\n        /// Returns the list of story missions. \n        /// </summary>\n        /// <returns></returns>\n        public static List<MyMission> GetAvailableStoryMissions()\n        {\n            return m_availableStoryMissions;\n        } \n\n        public static bool IsNewMissionOrObjectiveAvailable()\n        {\n            if (ActiveMission != null)\n            {\n                if(ActiveMission.ActiveObjectives.Count > 0 &&\n                    (ActiveMission.ActiveObjectives[0].GetObjectiveStartTime() + MyMissionsConstants.NEW_OBJECTIVE_FOR_TIME) >= MyMinerGame.TotalGamePlayTimeInMilliseconds)\n                {\n                    return true;\n                }\n            }\n            else\n            {\n                MyMission firstAvailableMission = GetAvailableMissions().Count > 0 ? GetAvailableMissions()[0] : null;\n                if (firstAvailableMission != m_availableMissionLastTime)\n                {\n                    m_availableMissionLastTime = firstAvailableMission;\n                    m_newMissionAvailableLastTime = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n                }\n                if (m_availableMissionLastTime != null && m_newMissionAvailableLastTime + MyMissionsConstants.NEW_OBJECTIVE_FOR_TIME >= MyMinerGame.TotalGamePlayTimeInMilliseconds)\n                {\n                    return true;\n                }\n            }\n            return false;\n        }\n\n        private static MyMission GetAvailableMissionAtPosition()\n        {\n            var boundingSphere = MySession.PlayerShip.WorldVolume;\n            RefreshAvailableMissions();\n            foreach (var mission in m_availableMissions)\n            {\n                if (mission.HasLocationEntity())\n                {\n                    if (mission.Location.Entity.GetIntersectionWithSphere(ref boundingSphere))\n                    {\n                        return mission;\n                    }\n                }\n            }\n            return null;\n        }\n\n        public static void CheckMissionProximity()\n        {\n            if (m_inMissionScreen)\n                return;\n\n            /*\n            var mission = GetAvailableMissionAtPosition();\n            if (mission != null)\n            {\n                MyHudNotification.AddNotification(m_missionNotification); \n            } */\n        }\n\n        public static bool RequestMissionDialog()\n        {\n            /*\n            var mission = GetAvailableMissionAtPosition();\n            if (mission != null)\n            {\n                MyGuiManager.AddScreen(new MyGuiScreenMission(mission));\n                m_missionNotification.Disappear();\n                m_inMissionScreen = true;\n                return true;\n            } */\n            return false;\n        }\n\n        public static void HandleCloseMissionScreen()\n        {\n            m_inMissionScreen = false;\n            CheckMissionProximity();\n            RefreshAvailableMissions();\n            //m_missionNotification.Appear();\n        }\n\n        public static void Unload()\n        {\n            ClearSideMissions();\n\n            if (ActiveMission != null)\n                ActiveMission.Unload();\n\n            m_canSaveObjectives = true;\n\n            /*\n            foreach (var missionItem in m_missions)\n            {\n                // CleanUp only missions because they automaticaly CleanUp theyr submissions\n                if (missionItem.Value is MyMission)\n                {\n                    missionItem.Value.Unload();\n                }\n            } */\n        }\n\n        public static Dictionary<int, MyMissionBase> Missions\n        {\n            get\n            {\n                return m_missions;\n            }\n        }\n\n        public static MyObjective GetSubmissionByEntity(MyEntity target)\n        {            \n            if (ActiveMission != null)\n            {\n                foreach (var sub in ActiveMission.ActiveObjectives)\n                {\n                    if (sub.IsMissionEntity(target))\n                    {\n                        return sub;\n                    }\n                }\n            }            \n            return null;\n        }\n\n        public static bool IsMissionEntity(MyEntity target)\n        {\n            if (ActiveMission != null)\n            {\n                return ActiveMission.IsMissionEntity(target);\n            }\n            else\n            {\n                foreach (var mission in GetAvailableMissions())\n                {\n                    if (mission.HasLocationEntity() && mission.Location.Entity == target)\n                    {\n                        return true;\n                    }\n                }\n            }            \n\n            //No mission entity in the sector, try to find hangar to visit solar map\n            MyPrefabHangar hangar = target as MinerWars.AppCode.Game.Entities.Prefabs.MyPrefabHangar;\n            if (hangar != null && MyFactions.GetFactionsRelation(MySession.Static.Player.Faction, hangar.Faction) == World.Global.MyFactionRelationEnum.Friend && hangar.Name == MyMissionBase.MyMissionLocation.MADELYN_HANGAR)\n            {\n                return true;\n            }\n\n            return false;\n        }\n\n        public static bool IsMissionEntityNotification(MyEntity entity, MySmallShipInteractionActionEnum action)\n        {\n            \n            return ActiveMission != null && ActiveMission.IsMissionEntityNotification(entity, action)\n                || ActiveMission == null && action == MySmallShipInteractionActionEnum.Travel && MyMissions.IsMissionEntity(entity);\n        }\n\n        public static void AddSolarMapMarks(MySolarSystemMapData data)\n        {\n            foreach (var mission in m_missions.Values.OfType<MyMission>())\n            {\n                if (mission.Location != null && !MyGuiScreenGamePlay.Static.IsCurrentSector(mission.Location.Sector) && mission.ShowNavigationMark)\n                {\n                    if (!mission.Flags.HasFlag(MyMissionFlags.HiddenInSolarMap) && mission.IsAvailable())\n                    {\n                        bool isStory = mission.Flags.HasFlag(MyMissionFlags.Story);\n\n                        var missionMark = new MySolarSystemMapNavigationMark(\n                            mission.Location.Sector,\n                            MyTextsWrapper.Get(mission.Name).ToString(),\n                            mission.ID,\n                            /*isStory ? MyHudConstants.SOLAR_MAP_STORY_MISSION_MARKER_COLOR : */MyHudConstants.SOLAR_MAP_SIDE_MISSION_MARKER_COLOR,\n                            isStory ? TransparentGeometry.MyTransparentMaterialEnum.SolarMapStoryMission : TransparentGeometry.MyTransparentMaterialEnum.SolarMapSideMission)\n                            {\n                                //Description = mission.DescriptionTemp.ToString(),\n                                DirectionalTexture = mission.Flags.HasFlag(MyMissionFlags.Story) ? MyHudTexturesEnum.DirectionIndicator_blue : MyHudTexturesEnum.DirectionIndicator_white,\n                                IsBlinking = isStory,\n                                Text = isStory ? MyTextsWrapper.Get(MyTextsWrapperEnum.NewMission).ToString() : null,\n                                TextSize = isStory ? 0.9f : 0.7f,\n                                Font = isStory ? MyGuiManager.GetFontMinerWarsBlue() : MyGuiManager.GetFontMinerWarsWhite(),\n                                Importance = isStory ? 100 : 1\n                            };\n                        missionMark.VerticalLineColor = missionMark.Color.ToVector4();\n\n                        data.NavigationMarks.Add(missionMark);\n                    }\n                    else\n                    {\n                        bool any = false;\n                        foreach (MyMissionBase value in m_missions.Values)\n                        {\n                            MyMission m = value as MyMission;\n                            if (m != null)\n                            {\n                                if (m.Location.Sector == mission.Location.Sector && m.IsAvailable())\n                                {\n                                    any = true;\n                                    break;\n                                }\n                            }\n                        }\n                        if (!any && mission.IsCompleted() && !data.NavigationMarks.Contains(mission.Location.Sector))\n                        {\n                            var missionMark = new MySolarSystemMapNavigationMark(\n                                mission.Location.Sector,\n                                MyTextsWrapper.Get(mission.Name).ToString(),\n                                null,\n                                Color.Gray,\n                                TransparentGeometry.MyTransparentMaterialEnum.SolarMapSideMission)\n                                                  {\n                                                      //Description = mission.DescriptionTemp.ToString(),\n                                                      DirectionalTexture = MyHudTexturesEnum.DirectionIndicator_white,\n                                                      Text = \"Completed\",\n                                                      TextSize = 0.6f,\n                                                  };\n                            missionMark.VerticalLineColor = missionMark.Color.ToVector4();\n                            data.NavigationMarks.Add(missionMark);\n                        }\n                    }\n                }\n            }\n        }\n\n        public static bool IsGameStoryCompleted()\n        {\n            return GetMissionByID(MyMissionID.ALIEN_GATE).IsCompleted();\n        }\n\n        public static void DisableSaveObjectives()\n        {\n            m_canSaveObjectives = false;\n        }\n\n        public static bool CanSaveObjectives()\n        {\n            return m_canSaveObjectives;\n        }\n\n        public static int GetMissionNumber(MyMissionID missionID)\n        {\n            List<MyMissionID> missions = new List<MyMissionID>\n            {\n                MyMissionID.EAC_SURVEY_SITE,            // 1 - Tier 1\n                MyMissionID.LAIKA,                      // 2\n                MyMissionID.BARTHS_MOON_CONVINCE,       // 3\n                MyMissionID.PIRATE_BASE,                // 4\n                MyMissionID.RUSSIAN_WAREHOUSE,          // 5 - Tier 2\n                MyMissionID.BARTHS_MOON_TRANSMITTER,    // 6\n                MyMissionID.LAST_HOPE,                  // 7\n                MyMissionID.JUNKYARD_CONVINCE,          // 8 - Tier 3\n                MyMissionID.CHINESE_TRANSPORT,          // 9\n                MyMissionID.CHINESE_REFINERY,           // 10\n                MyMissionID.CHINESE_ESCAPE,             // 11\n                MyMissionID.JUNKYARD_RETURN,            // 12 - Tier 4\n                MyMissionID.FORT_VALIANT,               // 13\n                MyMissionID.SLAVER_BASE_1,              // 14\n                MyMissionID.FORT_VALIANT_B,             // 15\n                MyMissionID.SLAVER_BASE_2,              // 16\n                MyMissionID.FORT_VALIANT_C,             // 17 - Tier 5\n                MyMissionID.RIME_CONVINCE,              // 18\n                MyMissionID.RESEARCH_VESSEL,            // 19 - Tier 6\n                MyMissionID.JUNKYARD_EAC_AMBUSH,        // 20\n                MyMissionID.RIFT,                       // 21\n                MyMissionID.BARTHS_MOON_PLANT,          // 22 - Tier 7\n                MyMissionID.CHINESE_TRANSMITTER,        // 23\n                MyMissionID.RUSSIAN_TRANSMITTER,        // 24\n                MyMissionID.REICHSTAG_A,                // 25\n                MyMissionID.NAZI_BIO_LAB,               // 26 - Tier 8\n                MyMissionID.REICHSTAG_C,                // 27\n                MyMissionID.TWIN_TOWERS,                // 28 - Tier 9\n                MyMissionID.EAC_PRISON,                 // 29\n                MyMissionID.EAC_TRANSMITTER,            // 30\n                MyMissionID.ALIEN_GATE,                 // 31\n            };\n\n            int index = missions.IndexOf(missionID);\n            return index < 0 ? index : index + 1;       // first mission is 1\n        }\n\n        public static int GetCurrentTier()\n        {\n            var missionNumber = ActiveMission != null ? GetMissionNumber(ActiveMission.ID) : -1;\n            int[] tierLevels = { 4, 7, 11, 16, 18, 21, 25, 27 };\n\n            int tier = 0;\n            if (missionNumber > 0)\n            {\n                while (tier < tierLevels.Length && missionNumber > tierLevels[tier])\n                {\n                    ++tier;\n                }\n                ++tier; // first tier is 1\n            }\n            \n            return tier;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/MyScriptWrapper.cs",
    "content": "﻿#region Using\n\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Inventory;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.Entities.Prefabs;\nusing MinerWars.AppCode.Game.Entities.Weapons.UniversalLauncher;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Missions.Components;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Prefabs;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.HUD;\nusing MinerWars.AppCode.Physics;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.Prefabs;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing System.Diagnostics;\nusing MinerWars.AppCode.Game.Entities.SubObjects;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Explosions;\nusing MinerWars.AppCode.Game.Entities.VoxelHandShapes;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Voxels;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing SysUtils.Utils;\nusing MinerWars.AppCode.Game.Gameplay;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.AppCode.Game.Audio.Dialogues;\nusing MinerWars.AppCode.Game.Entities.WayPoints;\nusing KeenSoftwareHouse.Library.Extensions;\nusing MinerWars.AppCode.Game.Entities.CargoBox;\nusing MinerWars.AppCode.Game.Sessions;\nusing MinerWars.CommonLIB.AppCode.Networking.Multiplayer;\nusing MinerWars.AppCode.Game.TransparentGeometry;\n\n#endregion\n\nnamespace MinerWars.AppCode.Game.Missions\n{\n    static class MyScriptWrapper\n    {\n        #region Event & delegates\n\n        public delegate void EntityInventoryContentChangeHandler(MyEntity entity, MyInventory inventory);\n        public delegate void EntityInventoryItemAmountChangeHandler(MyEntity entity, MyInventory inventory, MyInventoryItem inventoryItem, float amountChanged);\n        public delegate void EntityHandler(MyEntity entity);\n        public delegate void PrefabHandler(MyPrefabBase prefab);\n        public delegate void CancelHandler(CancelEventArgs cancelEventArgs);\n        public delegate void SpawnPointHandler(MySpawnPoint spawnPoint);\n        public delegate void EntityEntityHandler(MyEntity entity1, MyEntity entity2);\n        public delegate void DialogueHandler(MyDialogueEnum dialogue, bool interrupted);\n        public delegate void SentenceHandler(MyDialogueEnum dialogue, MyDialoguesWrapperEnum sentence);\n        public delegate void AttackHandler(MyEntity attacker, MyEntity target);\n\n        public static event EntityInventoryContentChangeHandler EntityInventoryContentChanged;\n        public static event EntityInventoryItemAmountChangeHandler EntityInventoryItemAmountChanged;\n        public static event EntityEntityHandler EntityDeath;\n        public static event EntityHandler EntityClose;\n        public static event EntityHandler EntityClosing;\n        public static event SpawnPointHandler SpawnpointBotsKilled;\n        public static event PrefabHandler PrefabBuilt;\n        public static event EntityEntityHandler OnBotReachedWaypoint;\n        public static event EntityEntityHandler OnSpawnpointBotSpawned;\n        public static event EntityEntityHandler OnEntityAtacked;\n        public static event EntityEntityHandler AlarmLaunched;\n        public static event Action OnUseKeyPress;\n        public static event Action OnHarvesterUse;\n        public static event DialogueHandler OnDialogueFinished;\n        public static event SentenceHandler OnSentenceStarted;\n        public static event EntityHandler EntityHacked;\n        public static event AttackHandler EntityAttackedByBot;\n\n        public static event Action SwitchTowerPrevious;\n        public static event Action SwitchTowerNext;\n\n        #endregion\n\n        static MyScriptWrapper()\n        {\n            MyDialogues.OnDialogueFinished += DialogueFinished;\n            MyDialogues.OnSentenceStarted += SentenceStarted;\n        }\n\n        #region Event Methods (Called from code)\n\n        public static void DialogueFinished(MyDialogueEnum dialogue, bool interrupted)\n        {\n            if (OnDialogueFinished != null)\n            {\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyScriptWrapper::DialogueFinished\");\n                OnDialogueFinished(dialogue, interrupted);\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n            }\n        }\n\n        public static void SentenceStarted(MyDialogueEnum dialogue, MyDialoguesWrapperEnum sentence)\n        {\n            if (OnSentenceStarted != null)\n            {\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyScriptWrapper::SentenceStarted\");\n                OnSentenceStarted(dialogue, sentence);\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n            }\n        }\n\n        public static void OnEntityInventoryContentChange(MyEntity entity, MyInventory inventory)\n        {\n            if (EntityInventoryContentChanged != null)\n            {\n                EntityInventoryContentChanged(entity, inventory);\n            }\n        }\n\n        public static void OnEntityInventoryAmountChange(MyEntity entity, MyInventory inventory, MyInventoryItem inventoryItem, float amountChanged)\n        {\n            if (EntityInventoryItemAmountChanged != null)\n            {\n                EntityInventoryItemAmountChanged(entity, inventory, inventoryItem, amountChanged);\n            }\n        }\n\n        public static void OnEntityClose(MyEntity entity)\n        {\n            if (EntityClose != null)\n            {\n                EntityClose(entity);\n            }\n        }\n\n        public static void OnEntityClosing(MyEntity entity)\n        {\n            if (EntityClosing != null)\n            {\n                EntityClosing(entity);\n            }\n        }\n\n        public static void OnSpawnpointBotsKilled(MySpawnPoint spawnPoint)\n        {\n            if (SpawnpointBotsKilled != null)\n            {\n                SpawnpointBotsKilled(spawnPoint);\n            }\n        }\n\n        public static void OnAlarmLaunched(MyPrefabContainer prefabContainer, MyEntity enemyEntity)\n        {\n            if (AlarmLaunched != null)\n            {\n                AlarmLaunched(prefabContainer, enemyEntity);\n            }\n        }\n\n        public static void OnEntityDeath(MyEntity entity, MyEntity killedBy = null)\n        {\n            if (EntityDeath != null && entity.EntityId.HasValue)\n            {\n                EntityDeath(entity, killedBy);\n            }\n        }\n\n        public static void OnEntityCreated(MyEntity entity)\n        {\n            if (MyGuiScreenGamePlay.Static.IsIngameEditorActive() && entity is MyPrefabBase)\n            {\n                if (PrefabBuilt != null)\n                {\n                    PrefabBuilt(entity as MyPrefabBase);\n                }\n            }\n        }\n\n        public static void OnEntityHacked(MyEntity entity)\n        {\n            if (EntityHacked != null)\n            {\n                EntityHacked(entity);\n            }\n        }\n\n        public static void OnEntityAttackedByBot(MyEntity attacker, MyEntity target)\n        {\n            if (EntityAttackedByBot != null)\n            {\n                EntityAttackedByBot(attacker, target);\n            }\n        }\n\n        public static void UseKeyPressed()\n        {\n            if (OnUseKeyPress != null)\n            {\n                OnUseKeyPress();\n            }\n\n        }\n\n        public static void HarvesterUse()\n        {\n            if (OnHarvesterUse != null)\n            {\n                OnHarvesterUse();\n            }\n\n        }\n\n\n        public static MyGameControlEnums GetUseControlKey()\n        {\n            return MyGameControlEnums.USE;\n        }\n\n        public static void RollLeftPressed()\n        {\n\n            if (SwitchTowerPrevious != null && MyGuiScreenGamePlay.Static.CameraAttachedTo == MyCameraAttachedToEnum.LargeWeapon)\n            {\n                SwitchTowerPrevious();\n            }\n\n        }\n\n        public static void RollRightPressed()\n        {\n\n            if (SwitchTowerNext != null && MyGuiScreenGamePlay.Static.CameraAttachedTo == MyCameraAttachedToEnum.LargeWeapon)\n            {\n                SwitchTowerNext();\n            }\n\n        }\n\n        public static bool IsFoundationFactoryDeployable()\n        {\n            return true;\n        }\n\n        public static void SetCanDropFoundationFactory(bool canDrop)\n        {\n            MyGuiScreenGamePlay.Static.FoundationFactoryDropEnabled = canDrop;\n        }\n\n        public static void BotReachedWaypoint(MyEntity bot, MyEntity waypoint)\n        {\n            if (OnBotReachedWaypoint != null)\n            {\n                OnBotReachedWaypoint(bot, waypoint);\n            }\n        }\n\n        public static void SpawnpointBotSpawned(MyEntity spawnpoint, MyEntity bot)\n        {\n            if (OnSpawnpointBotSpawned != null)\n            {\n                OnSpawnpointBotSpawned(spawnpoint, bot);\n            }\n        }\n\n        public static void EntityAtacked(MyEntity atacker, MyEntity target)\n        {\n            if (OnEntityAtacked != null)\n            {\n                OnEntityAtacked(atacker, target);\n            }\n        }\n        #endregion\n\n        public static bool IsSmallShip(MyEntity entity)\n        {\n            return entity is MySmallShip;\n        }\n\n        public static bool IsLargeShip(MyEntity entity)\n        {\n            return entity is MyPrefabLargeShip;\n        }\n\n        public static bool IsFactionMember(MyEntity entity, MyMwcObjectBuilder_FactionEnum faction)\n        {\n            var ship = entity as MyShip;\n            return ship != null && ship.Faction == faction;\n        }\n\n        public static bool IsPlayerShip(MyEntity entity)\n        {\n            return MySession.IsPlayerShip(entity);\n        }\n\n        public static MyInventory GetPlayerInventory()\n        {\n            return MySession.PlayerShip != null ? MySession.PlayerShip.Inventory : null;\n        }\n\n        public static MyInventory GetCentralInventory()\n        {\n            return MySession.Static != null ? MySession.Static.Inventory : null;\n        }\n\n        public static void EnsureInventoryItem(MyMwcObjectBuilderTypeEnum objectBuilderType, int? objectBuilderId, float amount = 1)\n        {\n            if (GetPlayerInventory().Contains(objectBuilderType, objectBuilderId) || GetCentralInventory().Contains(objectBuilderType, objectBuilderId))\n            {\n                return;\n            }\n\n            GetCentralInventory().AddInventoryItem(objectBuilderType, objectBuilderId, amount, true);\n        }\n\n        public static void EnsureInventoryItem(MyInventory inventory, MyMwcObjectBuilderTypeEnum objectBuilderType, int? objectBuilderId, float amount = 1)\n        {\n            if (inventory.Contains(objectBuilderType, objectBuilderId))\n            {\n                return;\n            }\n\n            inventory.AddInventoryItem(objectBuilderType, objectBuilderId, amount, true);\n        }\n\n        public static void AddInventoryItems(MyInventory inventory, List<MyInventoryItem> inventoryItems, MyInventory fallbackInventory)\n        {\n            for (int i = 0; i < inventoryItems.Count; i++)\n            {\n                var inventoryItem = inventoryItems[i];\n\n                if (inventory.IsFull)\n                {\n                    Debug.Assert(fallbackInventory != null);\n\n                    var newList = inventoryItems.GetRange(i, inventoryItems.Count - i);\n                    AddInventoryItems(fallbackInventory, newList, null);\n                    break;\n                }\n                else\n                {\n                    inventory.AddInventoryItem(inventoryItem);\n                }\n            }\n        }\n\n        public static void AddInventoryItem(MyInventory inventory, MyMwcObjectBuilderTypeEnum objectBuilderType, int? objectBuilderId, float amount = 1f, bool increaseCapacityIfInventoryIsFull = false, bool playInventoryIsFull = false, bool removeAnotherItemsIfFull = false)\n        {\n            float amountLeft = inventory.AddInventoryItem(objectBuilderType, objectBuilderId, amount, true, increaseCapacityIfInventoryIsFull);\n\n            if (amountLeft > 0f)\n            {\n                if (playInventoryIsFull)\n                {\n                    MyScriptWrapper.PlaySound2D(MySoundCuesEnum.HudInventoryFullWarning);\n                }\n                if (removeAnotherItemsIfFull)\n                {\n                    var gamePlayProp = MyGameplayConstants.GetGameplayProperties(objectBuilderType, objectBuilderId != null ? objectBuilderId.Value : 0, MyMwcObjectBuilder_FactionEnum.Euroamerican);\n                    int itemsAddNeed = (int)Math.Ceiling(amountLeft / gamePlayProp.MaxAmount);\n                    Debug.Assert(itemsAddNeed <= inventory.MaxItems, \"We can't add more items, than is inventory capacity!\");\n                    List<MyInventoryItem> itemsToRemove = GetInventoryItemsToRemove(inventory, itemsAddNeed);\n                    inventory.RemoveInventoryItems(itemsToRemove, true);\n                    amountLeft = inventory.AddInventoryItem(objectBuilderType, objectBuilderId, amountLeft, true, increaseCapacityIfInventoryIsFull);\n                    Debug.Assert(amountLeft <= 0f);\n                }\n            }\n        }\n\n        private static List<MyInventoryItem> GetInventoryItemsToRemove(MyInventory inventory, int count)\n        {\n            Debug.Assert(inventory.GetInventoryItems().Count >= count);\n            List<MyInventoryItem> items = new List<MyInventoryItem>();\n\n            // try find ammo\n            inventory.GetInventoryItems(ref items, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, null);\n            if (items.Count < count)\n            {\n                // try find ore\n                inventory.GetInventoryItems(ref items, MyMwcObjectBuilderTypeEnum.Ore, null);\n            }\n            // try find random item\n            while (items.Count < count)\n            {\n                int randomIndex = MyMwcUtils.GetRandomInt(inventory.GetInventoryItems().Count - 1);\n                MyInventoryItem randomItem = inventory.GetInventoryItems()[randomIndex];\n                if (!items.Contains(randomItem))\n                {\n                    items.Add(randomItem);\n                }\n            }\n            items = items.GetRange(0, Math.Min(count, items.Count));\n            return items;\n        }\n\n        public static int GetInventoryItemCount(MyInventory inventory, MyMwcObjectBuilderTypeEnum objectbuilderType, int? objectBuilderId)\n        {\n            return inventory.GetInventoryItemsCount(objectbuilderType, objectBuilderId);\n        }\n\n        public static float GetInventoryItemAmount(MyInventory inventory, MyMwcObjectBuilderTypeEnum objectbuilderType, int? objectBuilderId)\n        {\n            return inventory.GetTotalAmountOfInventoryItems(objectbuilderType, objectBuilderId);\n        }\n\n        public static bool RemoveInventoryItemAmount(MyInventory inventory, MyMwcObjectBuilderTypeEnum objectbuilderType, int? objectBuilderId, float amount)\n        {\n            return inventory.RemoveInventoryItemAmount(objectbuilderType, objectBuilderId, amount);\n        }\n\n        public static bool IsPlayerNearLocation(MyMissionBase.MyMissionLocation location, float distance)\n        {\n            return\n                MySession.PlayerShip != null &&\n                location != null &&\n                MyGuiScreenGamePlay.Static.IsCurrentSector(location.Sector) &&\n                location.Entity != null &&\n                (MySession.PlayerShip.GetPosition() - location.Entity.GetPosition()).LengthSquared() <= distance * distance;\n        }\n\n        public static void ShowMessageBox(MyMessageBoxType type, MyTextsWrapperEnum text, MyTextsWrapperEnum caption)\n        {\n            MyGuiManager.AddScreen(new MyGuiScreenMessageBox(type, text, caption, MyTextsWrapperEnum.Ok, null));\n        }\n\n        public static bool IsGameActive()\n        {\n            return MyGuiScreenGamePlay.Static.IsGameActive();\n        }\n\n        public static List<MyEntity> GetSmallShips(MyMwcObjectBuilder_FactionEnum faction)\n        {\n            List<MyEntity> entities = new List<MyEntity>();\n            MyEntities.FindEntities(a =>\n                {\n                    MySmallShip smallShip = a as MySmallShip;\n                    return smallShip != null && smallShip.Faction == faction;\n                }, entities);\n            return entities;\n        }\n\n        public static MyPrefabLargeShip GetMotherShip()\n        {\n            List<MyEntity> largeShips = new List<MyEntity>();\n            if (MyEntities.FindEntitiesRecursive(a => a is MyPrefabLargeShip && a.Faction == MySession.PlayerShip.Faction, largeShips))\n            {\n                return largeShips.FirstOrDefault() as MyPrefabLargeShip;\n            }\n            return null;\n        }\n\n        public static MyPrefabLargeShip GetLargeShip(string name)\n        {\n            List<MyEntity> largeShips = new List<MyEntity>();\n            if (MyEntities.FindEntitiesRecursive(a => a is MyPrefabLargeShip && a.DisplayName.Equals(name, StringComparison.InvariantCultureIgnoreCase), largeShips))\n            {\n                return largeShips.FirstOrDefault() as MyPrefabLargeShip;\n            }\n            return null;\n        }\n\n\n        /// <summary>\n        /// Finds an entity by id, and fails when there is no such entity\n        /// </summary>\n        /// <param name=\"id\"></param>\n        /// <returns></returns>\n        public static MyEntity GetEntity(uint id)\n        {\n            MyEntity entity;\n            MyEntities.TryGetEntityById(new MyEntityIdentifier(id), out entity);\n            if (entity == null)\n            {\n                Log(\"script: did not find entity with ID: \" + id);\n                Debug.Fail(\"script: did not find entity with ID: \" + id);\n            }\n            \n            return entity;\n        }\n\n        /// <summary>\n        /// Finds an entity by name\n        /// </summary>\n        /// <param name=\"name\"></param>\n        /// <returns></returns>\n        public static MyEntity GetEntity(string name)\n        {\n            MyEntity entity;\n            MyEntities.TryGetEntityByName(name, out entity);\n            if (entity == null)\n            {\n#if DETECT_LEAKS\n                entity = new MySmallShipBot();\n                entity.EntityId = new MyEntityIdentifier(56156);\n                return entity;\n#endif\n\n                Log(\"script: did not find entity with Name: \" + name);\n                Debug.Fail(\"script: did not find entity with Name: \" + name);\n            }\n            return entity;\n        }\n\n        /// <summary>\n        /// Finds an entity by mission location entity identifier (id or name)\n        /// </summary>\n        /// <param name=\"missionLocationIdentifier\"></param>\n        /// <returns></returns>\n        public static MyEntity GetEntity(MyMissionBase.MyMissionLocationEntityIdentifier missionLocationIdentifier)\n        {\n            if (missionLocationIdentifier.LocationEntityId != null)\n            {\n                return GetEntity(missionLocationIdentifier.LocationEntityId.Value);\n            }\n            else\n            {\n                return GetEntity(missionLocationIdentifier.LocationEntityName);\n            }\n        }\n\n        /// <summary>\n        /// Finds an entity by mission location entity identifier (id or name), returns null if there is none\n        /// </summary>\n        /// <param name=\"missionLocationIdentifier\"></param>\n        /// <returns></returns>\n        public static MyEntity TryGetEntity(MyMissionBase.MyMissionLocationEntityIdentifier missionLocationIdentifier)\n        {\n            if (missionLocationIdentifier.LocationEntityId != null)\n            {\n                return TryGetEntity(missionLocationIdentifier.LocationEntityId.Value);\n            }\n            else\n            {\n                return TryGetEntity(missionLocationIdentifier.LocationEntityName);\n            }\n        }\n\n        /// <summary>\n        /// Finds an entity by id, returns null if there is none\n        /// </summary>\n        /// <param name=\"id\">Id of entity you wish to find</param>\n        /// <returns>Entity with specified id</returns>\n        public static MyEntity TryGetEntity(uint id)\n        {\n            MyEntity entity;\n            MyEntities.TryGetEntityById(new MyEntityIdentifier(id), out entity);\n            return entity;\n        }\n\n        /// <summary>\n        /// Finds an entity by name, returns null if there is none\n        /// </summary>\n        /// <param name=\"name\"></param>\n        /// <returns></returns>\n        public static MyEntity TryGetEntity(string name)\n        {\n            if (String.IsNullOrEmpty(name))\n                return null;\n\n            MyEntity entity;\n            MyEntities.TryGetEntityByName(name, out entity);\n            return entity;\n        }\n\n        public static MyEntityDetector GetDetector(uint id)\n        {\n            return GetDetector(GetEntity(id));\n        }\n\n        public static MyPrefabBase GetPrefab(uint id)\n        {\n            return GetEntity(id) as MyPrefabBase;\n        }\n\n        public static MyPrefabBase TryGetPrefab(uint id)\n        {\n            return TryGetEntity(id) as MyPrefabBase;\n        }\n\n        public static MyEntityDetector GetDetector(MyEntity entity)\n        {\n            MyDummyPoint dummy = entity as MyDummyPoint;\n            return dummy != null ? dummy.GetDetector() : null;\n        }\n\n\n        public static MyHudNotification.MyNotification CreateNotification(MyTextsWrapperEnum text, MyGuiFont font, MyEntity owner = null)\n        {\n            return new MyHudNotification.MyNotification(text, font, owner);\n        }\n\n        public static MyHudNotification.MyNotification CreateNotification(MyTextsWrapperEnum text, MyGuiFont font, int disaperTime, object[] textFormatArguments = null, MyEntity owner = null)\n        {\n            return new MyHudNotification.MyNotification(text, font, disaperTime, owner, textFormatArguments);\n        }\n\n        public static MyHudNotification.MyNotification CreateNotification(String text, MyGuiFont font, int disaperTime, MyEntity owner = null)\n        {\n            return new MyHudNotification.MyNotification(text, font, disaperTime, owner);\n        }\n\n        public static void AddNotification(MyHudNotification.MyNotification notification)\n        {\n            MyHudNotification.AddNotification(notification, MyGuiScreenGamePlayType.GAME_STORY);\n        }\n\n        public static bool IsCurrentSector(MyMwcVector3Int sector)\n        {\n            return MyGuiScreenGamePlay.Static.IsCurrentSector(sector);\n        }\n\n        public static void DeactivateBot(uint id)\n        {\n            var bot = MyScriptWrapper.GetEntity(id) as MySmallShipBot;\n            Debug.Assert(bot != null);\n            if (bot != null)\n            {\n                bot.Visible = false;\n\n                if (bot.Physics.Enabled)\n                {\n                    bot.Physics.Enabled = false;\n                }\n            }\n        }\n\n        public static void PrepareMotherShipForMove(MyEntity motherShip)\n        {\n            Debug.Assert(motherShip != null);\n\n            MyScriptWrapper.EnablePhysics(motherShip.EntityId.Value.NumericValue, false);\n\n            MyPrefabContainer motherShipContainer = motherShip as MyPrefabContainer;\n            Debug.Assert(motherShipContainer != null);\n            motherShipContainer.Physics.Enabled = true;\n            motherShipContainer.InitBoxPhysics(MyMaterialType.METAL, Vector3.Zero, motherShipContainer.WorldAABBHr.Size(), 10000, 0, 0, RigidBodyFlag.RBF_KINEMATIC);\n            motherShipContainer.Physics.Enabled = true;\n\n            if (MyMultiplayerGameplay.IsHosting)\n            {\n                MyMultiplayerGameplay.Static.UpdateFlags(motherShip, MyFlagsEnum.PREPARE_MOVE);\n            }\n        }\n\n        public static void ReturnMotherShipFromMove(MyEntity motherShip)\n        {\n            Debug.Assert(motherShip != null);\n            MyPrefabContainer motherShipContainer = motherShip as MyPrefabContainer;\n            Debug.Assert(motherShipContainer != null);\n            MyScriptWrapper.EnablePhysics(motherShip.EntityId.Value.NumericValue, true);\n            motherShipContainer.InitBoxPhysics(MyMaterialType.METAL, Vector3.Zero, motherShipContainer.WorldAABBHr.Size(), 10000, 0, MyConstants.COLLISION_LAYER_UNCOLLIDABLE, RigidBodyFlag.RBF_RBO_STATIC);\n\n            if (MyMultiplayerGameplay.IsHosting)\n            {\n                MyMultiplayerGameplay.Static.UpdateFlags(motherShip, MyFlagsEnum.RETURN_FROM_MOVE);\n            }\n        }\n\n\n        public static void ActivateBot(uint id)\n        {\n            var bot = MyScriptWrapper.GetEntity(id) as MySmallShipBot;\n            Debug.Assert(bot != null);\n            if (bot != null)\n            {\n                bot.Visible = true;\n                bot.Physics.Enabled = true;\n            }\n        }\n\n        public static void ActivateSpawnPoint(uint id)\n        {\n            var spawnPoint = MyScriptWrapper.GetEntity(id) as MySpawnPoint;\n            Debug.Assert(spawnPoint != null);\n            if (spawnPoint != null && !spawnPoint.IsActive())\n            {\n                spawnPoint.Activate();\n            }\n        }\n\n        public static void DeactivateSpawnPoint(uint id)\n        {\n            var spawnPoint = MyScriptWrapper.GetEntity(id) as MySpawnPoint;\n            Debug.Assert(spawnPoint != null);\n            if (spawnPoint != null && spawnPoint.IsActive())\n            {\n                spawnPoint.Deactivate();\n            }\n        }\n\n        public static void ActivateSpawnPoints(List<uint> spawnPoints)\n        {\n            foreach (var spawnPoint in spawnPoints)\n            {\n                MyScriptWrapper.ActivateSpawnPoint(spawnPoint);\n            }\n        }\n\n\n        public static void DeactivateSpawnPoints(List<uint> spawnPoints)\n        {\n            foreach (var spawnPoint in spawnPoints)\n            {\n                MyScriptWrapper.DeactivateSpawnPoint(spawnPoint);\n            }\n        }\n\n        public static void SetEntityEnabled(MyEntity entity, bool enabled, bool checkEntityExist = false)\n        {\n            if (checkEntityExist)\n            {\n                Debug.Assert(entity != null);\n            }\n            if (entity != null)\n            {\n                if (MyMultiplayerGameplay.IsRunning && MyMultiplayerGameplay.Static.IsHost)\n                {\n                    MyMultiplayerGameplay.Static.UpdateFlags(entity, enabled ? MyFlagsEnum.ENABLE : MyFlagsEnum.DISABLE);\n                }\n\n                entity.Enabled = enabled;\n            }\n        }\n\n\n        public static void SetEntityEnabled(uint entityId, bool enabled, bool checkEntityExist = false)\n        {\n            var entity = TryGetEntity(entityId);\n            SetEntityEnabled(entity, enabled, checkEntityExist);\n        }\n\n        public static void SetEntitiesEnabled(List<MyEntity> entities, bool enabled, bool checkEntityExist = false)\n        {\n            foreach (MyEntity entity in entities)\n            {\n                SetEntityEnabled(entity, enabled, checkEntityExist);\n            }\n        }\n\n        public static void SetEntitiesEnabled(List<uint> entities, bool enabled, bool checkEntityExist = false)\n        {\n            foreach (var id in entities)\n            {\n                MyEntity entity = TryGetEntity(id); \n                SetEntityEnabled(entity, enabled, checkEntityExist);\n            }\n        }\n\n        public static void SetEntityDestructible(MyEntity entity, bool destructible)\n        {\n            //Avoid crashes caused bad designed scripts/spawnpoints..\n            if (entity == null)\n                return;\n\n            if (MyMultiplayerGameplay.IsHosting)\n            {\n                MyMultiplayerGameplay.Static.UpdateFlags(entity, destructible ? MyFlagsEnum.DESTRUCTIBLE : MyFlagsEnum.INDESTRUCTIBLE);\n            }\n\n            entity.IsDestructible = destructible;\n        }\n\n        public static void MarkEntity(MyEntity entity, string text, MyHudIndicatorFlagsEnum flags = MyHudIndicatorFlagsEnum.SHOW_TEXT | MyHudIndicatorFlagsEnum.SHOW_BORDER_INDICATORS | MyHudIndicatorFlagsEnum.SHOW_HEALTH_BARS | MyHudIndicatorFlagsEnum.SHOW_DISTANCE | MyHudIndicatorFlagsEnum.ALPHA_CORRECTION_BY_DISTANCE | MyHudIndicatorFlagsEnum.SHOW_MISSION_MARKER | MyHudIndicatorFlagsEnum.SHOW_FACTION_RELATION_MARKER, MyGuitargetMode guiTargetMode = MyGuitargetMode.Objective)\n        {\n            if (entity != null && (!(entity is MySpawnPoint)))\n            {\n                MyHud.ChangeText(entity, new StringBuilder(text), guiTargetMode, 0, flags);\n            }\n        }\n\n        public static void RemoveEntityMark(MyEntity entity)\n        {\n            if (entity != null)\n            {\n                MyHud.RemoveText(entity);\n            }\n        }\n\n        public static void SetFactionRelation(MyMwcObjectBuilder_FactionEnum faction1, MyMwcObjectBuilder_FactionEnum faction2, float status)\n        {\n            if (MyMultiplayerGameplay.IsHosting)\n            {\n                MyMultiplayerGameplay.Static.SendSetFactionRelation(faction1, faction2, status);\n            }\n\n            MyFactions.SetFactionStatus(faction1, faction2, status, false, true);\n        }\n\n        [Obsolete(\"Don't use this! Enable/disable particle using SetEntityEnabled and set particle flag in editor\")]\n        public static void SetParticleEffect(MyEntity entity, bool enabled)\n        {\n            if (MyMultiplayerGameplay.IsHosting)\n            {\n                MyMultiplayerGameplay.Static.UpdateFlags(entity, MyFlagsEnum.PARTICLE, enabled);\n            }\n\n            var dummy = entity as MyDummyPoint;\n            Debug.Assert(dummy != null);\n            if (dummy != null)\n            {\n                dummy.DummyFlags = enabled ? dummy.DummyFlags | MyDummyPointFlags.PARTICLE : dummy.DummyFlags & ~MyDummyPointFlags.PARTICLE;\n            }\n        }\n\n        public static void PlaySound2D(MySoundCuesEnum soundCueEnum)\n        {\n            if (MyMultiplayerGameplay.IsHosting)\n            {\n                MyMultiplayerGameplay.Static.SendPlaySound(null, soundCueEnum);\n            }\n\n            MyAudio.AddCue2D(soundCueEnum);\n        }\n\n        public static void ApplyTransition(MyMusicTransitionEnum transitionEnum, int priority = 0, string category = null, bool loop = true)\n        {\n            if (MyMultiplayerGameplay.IsHosting)\n            {\n                MyMultiplayerGameplay.Static.SendApplyTransition(transitionEnum, priority, category, loop);\n            }\n\n            MyAudio.ApplyTransition(transitionEnum, priority, category, loop);\n        }\n\n        public static void StopTransition(int priority)\n        {\n            if (MyMultiplayerGameplay.IsHosting)\n            {\n                MyMultiplayerGameplay.Static.SendStopTransition(priority);\n            }\n\n            MyAudio.StopTransition(priority);\n        }\n\n        public static void StopMusic()\n        {\n            if (MyMultiplayerGameplay.IsHosting)\n            {\n                MyMultiplayerGameplay.Static.SendStopMusic();\n            }\n\n            MyAudio.StopMusic();\n        }\n\n        public static void PlaySound3D(uint entityId, MySoundCuesEnum soundCueEnum)\n        {\n            PlaySound3D(GetEntity(entityId), soundCueEnum);\n        }\n\n        public static void PlaySound3D(MyEntity entity, MySoundCuesEnum soundCueEnum)\n        {\n            Debug.Assert(entity != null);\n            PlaySound3D(entity.GetPosition(), soundCueEnum);\n        }\n\n        public static void PlaySound3D(Vector3 position, MySoundCuesEnum soundCueEnum)\n        {\n            if (MyMultiplayerGameplay.IsHosting)\n            {\n                MyMultiplayerGameplay.Static.SendPlaySound(position, soundCueEnum);\n            }\n\n            MyAudio.AddCue3D(soundCueEnum, position, Vector3.Forward, Vector3.Up, Vector3.Zero);\n        }\n\n        public static void SetSpawnPointLeader(uint id, MySmallShip leader)\n        {\n            var spawnPoint = MyScriptWrapper.GetEntity(id) as MySpawnPoint;\n            Debug.Assert(spawnPoint != null);\n            if (spawnPoint != null)\n            {\n                spawnPoint.Leader = leader;\n            }\n        }\n\n        public static List<MySpawnPoint.Bot> GetSpawnPointBots(uint id)\n        {\n            var spawnPoint = MyScriptWrapper.GetEntity(id) as MySpawnPoint;\n            Debug.Assert(spawnPoint != null);\n            if (spawnPoint != null)\n            {\n                return spawnPoint.GetBots();\n            }\n            return null;\n        }\n\n        public static void SetEntityPriority(MyEntity entity, int priority, bool setForChildren = false)\n        {\n            Debug.Assert(entity != null);\n            if (entity != null)\n            {\n                entity.AIPriority = priority;\n            }\n\n            if (setForChildren)\n            {\n                if (entity.Children != null)\n                {\n                    foreach (var child in entity.Children)\n                    {\n                        SetEntityPriority(child, priority, true);\n                    }\n                }\n            }\n        }\n\n        public static int GetGameTime()\n        {\n            return MyMinerGame.TotalGamePlayTimeInMilliseconds;\n        }\n\n        public static void SetHealth(MyEntity entity, float percents)\n        {\n            if (entity != null && entity.IsDestructible)\n            {\n                entity.Health = entity.Health * percents;\n            }\n        }\n\n        public static void DamageEntity(MyEntity entity, float percents)\n        {\n            if (entity != null && entity.IsDestructible)\n            {\n                entity.DoDamage(0, (entity.MaxHealth * percents), 0, MyDamageType.Unknown, MyAmmoType.Unknown, null);\n            }\n        }\n\n        public static void SetMaxHealth(MyEntity entity, float percents)\n        {\n            if (entity != null && entity.IsDestructible)\n            {\n                entity.Health = entity.MaxHealth * percents;\n            }\n        }\n\n        public static uint GetEntityId(string entityName)\n        {\n            return GetEntity(entityName).EntityId.Value.NumericValue;\n        }\n\n        public static uint GetEntityId(MyEntity entity)\n        {\n            Debug.Assert(entity != null && entity.EntityId.HasValue);\n            return entity.EntityId.HasValue ? entity.EntityId.Value.NumericValue : (uint)0;\n        }\n\n        public static void AddExplosions(List<uint> entities, MyExplosionTypeEnum type, float damage, float radius = 0, bool forceDebris = false, bool createDecals = false, MyParticleEffectsIDEnum? particleIDOverride = null)\n        {\n            foreach (uint id in entities)\n            {\n                MyEntity entity = GetEntity(id);\n                AddExplosion(entity, type, damage, radius, forceDebris, createDecals, particleIDOverride);\n            }\n        }\n\n        public static void AddExplosion(MyEntity entity, MyExplosionTypeEnum type, float damage, float radius = 0, bool forceDebris = false, bool createDecals = false, MyParticleEffectsIDEnum? particleIDOverride = null)\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"AddExplosion\");\n\n            if (MyMultiplayerGameplay.IsRunning && MyMultiplayerGameplay.Static.IsHost)\n            {\n                MyMultiplayerGameplay.Static.AddExplosion(entity, type, damage, radius, forceDebris, createDecals, particleIDOverride);\n            }\n\n            MyDummyPoint dummyPoint = entity as MyDummyPoint;\n            if (dummyPoint != null)\n            {\n                dummyPoint.DummyFlags |= MyDummyPointFlags.SURIVE_PREFAB_DESTRUCTION;\n                dummyPoint.DummyFlags |= MyDummyPointFlags.PARTICLE;\n                dummyPoint.Save = false; //We dont want to reuse explosion dummies, moreover it causes bugs when saved during explosion\n            }\n\n            BoundingSphere boundingSphere = new BoundingSphere(entity.WorldVolume.Center, entity.WorldVolume.Radius);\n\n            if (radius > 0)\n            {\n                boundingSphere.Radius = radius;\n            }\n\n            MyExplosionInfo explosionInfo = new MyExplosionInfo(0, damage, 0, boundingSphere, type, true, dummyPoint, checkIntersection: false);\n            explosionInfo.CreateDecals = createDecals;\n            explosionInfo.ForceDebris = forceDebris;\n            //explosionInfo.AffectVoxels = false;\n\n            if (particleIDOverride.HasValue && dummyPoint != null)\n            {\n                dummyPoint.ParticleID = (float)(int)particleIDOverride.Value;\n            }\n            if (dummyPoint == null)\n            {   //because default explosions need to be scaled\n                explosionInfo.ParticleScale = entity.WorldVolume.Radius / 5.0f;\n            }\n            MyExplosion explosion = MyExplosions.AddExplosion();\n            if (explosion != null)\n            {\n                explosion.Start(ref explosionInfo);\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        public static void AddExplosion(Vector3 position, MyExplosionTypeEnum explosionType, float radius, float damage, bool forceDebris = false, bool createDecals = false)\n        {\n            if (MyMultiplayerGameplay.IsRunning && MyMultiplayerGameplay.Static.IsHost)\n            {\n                MyMultiplayerGameplay.Static.AddExplosion(position, explosionType, damage, radius, forceDebris, createDecals);\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyScriptWrapper.AddExplosion\");\n\n            MyExplosion explosion = MyExplosions.AddExplosion();\n            if (explosion != null)\n            {\n                explosion.Start(0, damage, 0, explosionType, new BoundingSphere(position, radius), MyExplosionsConstants.EXPLOSION_LIFESPAN, 0, null, 1.0f, null, forceDebris, createDecals);\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n        }\n\n        public static void FixBotNames()\n        {\n            // disable because 0004748: Disable all HUD names for generic Friend, Enemy, Neutral\n            return;\n            if (MySession.PlayerShip != null)\n            {\n                string friendName = MyTextsWrapper.Get(MyTextsWrapperEnum.Friend).ToString();\n                string neutralName = MyTextsWrapper.Get(MyTextsWrapperEnum.Neutral).ToString();\n                string enemyName = MyTextsWrapper.Get(MyTextsWrapperEnum.Enemy).ToString();\n\n                foreach (var entity in MyEntities.GetEntities())\n                {\n                    MySmallShipBot bot = entity as MySmallShipBot;\n                    if (bot != null &&\n                        (bot.DisplayName == null ||\n                         bot.DisplayName == friendName ||\n                         bot.DisplayName == neutralName ||\n                         bot.DisplayName == enemyName))\n                    {\n                        var relationToPlayer = MyFactions.GetFactionsRelation(MySession.PlayerShip, bot);\n                        switch (relationToPlayer)\n                        {\n                            case MyFactionRelationEnum.Neutral:\n                                bot.DisplayName = neutralName;\n                                break;\n                            case MyFactionRelationEnum.Friend:\n                                bot.DisplayName = friendName;\n                                break;\n                            case MyFactionRelationEnum.Enemy:\n                                bot.DisplayName = enemyName;\n                                break;\n                        }\n                    }\n                }\n            }\n        }\n\n        public static void SetBotReflectors(bool longRange)\n        {\n            foreach (var entity in MyEntities.GetEntities())\n            {\n                MySmallShipBot bot = entity as MySmallShipBot;\n                if (bot != null)\n                {\n                    bot.Config.ReflectorLongRange.SetValue(longRange);\n                }\n            }\n        }\n\n        public static void SetPlayerFaction(MyMwcObjectBuilder_FactionEnum faction)\n        {\n            if (MyMultiplayerGameplay.IsHosting)\n            {\n                MyMultiplayerGameplay.Static.SendFaction(faction);\n            }\n\n            Debug.Assert(MySession.Static != null && MySession.Static.Player != null);\n            if (MySession.Static != null && MySession.Static.Player != null)\n            {\n                MySession.Static.Player.Faction = faction;\n            }\n        }\n\n        public static MyEntity GetPrefabContainer(MyEntity entity)\n        {\n            MyPrefab prefab = entity as MyPrefab;\n            if (prefab != null)\n            {\n                return prefab.Parent;\n            }\n            return null;\n        }\n\n        public static void AddVoxelHand(uint voxelMapId, uint entityId, float radius, MyMwcVoxelMaterialsEnum? voxelMaterial = null, MyMwcVoxelHandModeTypeEnum voxelHandType = MyMwcVoxelHandModeTypeEnum.ADD)\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"AddVoxelHand\");\n\n            if (MyMultiplayerGameplay.IsRunning && MyMultiplayerGameplay.Static.IsHost)\n            {\n                MyMultiplayerGameplay.Static.AddVoxelHand(voxelMapId, entityId, radius, voxelHandType, voxelMaterial);\n            }\n\n            MyEntity entity = MyScriptWrapper.GetEntity(entityId);\n            MyVoxelMap asteroid = (MyVoxelMap)MyScriptWrapper.GetEntity(voxelMapId);\n            MyVoxelHandSphere voxelHandSphere = new MyVoxelHandSphere();\n            voxelHandSphere.Init(new MyMwcObjectBuilder_VoxelHand_Sphere(new MyMwcPositionAndOrientation(entity.WorldMatrix), radius, voxelHandType), null);\n            voxelHandSphere.Material = voxelMaterial != null ? voxelMaterial.Value : asteroid.VoxelMaterial;\n            asteroid.AddVoxelHandShape(voxelHandSphere, false);\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        public static void MakeNuclearExplosion(MyEntity entity)\n        {\n            if (MyMultiplayerGameplay.IsHosting)\n            {\n                MyMultiplayerGameplay.Static.UpdateFlags(entity, MyFlagsEnum.NUCLEAR_EXPLOSION);\n            }\n\n            MyNuclearExplosion.MakeExplosion(entity.GetPosition());\n        }\n\n        /// <summary>\n        /// Destroys entities specified by ids, if entities are already destroyed or do not exists, nothing happens\n        /// </summary>\n        /// <param name=\"objectEntityIds\"></param>\n        public static void DestroyEntities(List<uint> objectEntityIds)\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"DestroyEntities\");\n            if (objectEntityIds != null)\n            {\n                foreach (var entityId in objectEntityIds)\n                {\n                    DestroyEntity(entityId);\n                }\n            }\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        public static void DestroyEntity(uint entityId)\n        {\n            MyEntity entity = TryGetEntity(entityId);\n            if (entity != null && entity.Physics != null)\n            {\n                entity.DoDamage(0, 1000000, 0, MyDamageType.Unknown, MyAmmoType.Unknown, null);\n            }\n        }\n\n        public static void Follow(MyEntity leader, MyEntity follower)\n        {\n            MySmallShipBot followerShip = follower as MySmallShipBot;\n            Debug.Assert(followerShip != null);\n\n            if (leader != null && followerShip != null)\n            {\n                followerShip.Follow(leader);\n            }\n        }\n\n        public static void SetLight(MyEntity entity, bool enabled, bool checkEntityExist = false)\n        {\n            //MyPrefabLight light = entity as MyPrefabLight;\n            //Debug.Assert(light != null);\n            //if (light != null)\n            //{\n            //    light.GetLight().LightOn = enabled;\n            //}\n            SetEntityEnabled(entity, enabled, checkEntityExist);\n        }\n\n        public static void SetLightEffect(MyEntity entity, MyLightEffectTypeEnum effect)\n        {\n            MyPrefabLight light = entity as MyPrefabLight;\n            Debug.Assert(light != null);\n            if (light != null)\n            {\n                light.Effect = effect;\n            }\n        }\n\n        public static void AddFalseIdToPlayersInventory(MyMwcObjectBuilder_FactionEnum faction)\n        {\n            var inventory = MyScriptWrapper.GetPlayerInventory();\n            var falseIdItem = inventory.GetInventoryItem(MyMwcObjectBuilderTypeEnum.FalseId, MyMwcFactionsByIndex.GetFactionIndex(faction));\n            if (falseIdItem == null)\n            {\n                inventory.AddInventoryItem(MyMwcObjectBuilderTypeEnum.FalseId, MyMwcFactionsByIndex.GetFactionIndex(faction), 1.0f, true);\n            }\n        }\n\n        public static void AddHackingToolToPlayersInventory(int level)\n        {\n            Debug.Assert(level >= 1 && level <= 5);\n            var inventory = MyScriptWrapper.GetCentralInventory();\n            var item = inventory.GetInventoryItem(MyMwcObjectBuilderTypeEnum.SmallShip_HackingTool, level);\n            if (item == null)\n            {\n                inventory.AddInventoryItem(MyMwcObjectBuilderTypeEnum.SmallShip_HackingTool, level, 1.0f, true);\n            }\n        }\n\n        public static bool IsEntityControlledByPlayer(MyEntity entity)\n        {\n            MyPrefabLargeWeapon largeWeapon = entity as MyPrefabLargeWeapon;\n            if (largeWeapon != null)\n            {\n                return MyGuiScreenGamePlay.Static.IsControlledByPlayer(largeWeapon);\n            }\n            else\n            {\n                return false;\n            }\n        }\n\n        public static void TakeControlOfLargeWeapon(MyEntity entity)\n        {\n            Debug.Assert(entity != null);\n            Debug.Assert(!entity.Closed);\n            MyPrefabLargeWeapon largeWeapon = entity as MyPrefabLargeWeapon;\n            if (largeWeapon != null)\n            {\n                MyGuiScreenGamePlay.Static.TakeControlOfLargeWeapon(largeWeapon);\n            }\n        }\n\n        public static void DrawHealthOfCustomPrefabInLargeWeapon(MyEntity entity)\n        {\n            MyHud.DrawHealthOfCustomPrefabInLargeWeapon(entity);\n        }\n\n        public static void DetachHealthOfCustomPrefabInLargeWeapon()\n        {\n            MyHud.DetachHealthOfCustomPrefab();\n        }\n\n        public static void EnableGlobalEvent(MyGlobalEventEnum globalEvent, bool enable)\n        {\n            MyGlobalEvents.Enable(globalEvent, enable);\n        }\n\n        public static void SetRateForGlobalEvent(MyGlobalEventEnum globalEvent, float ratePerHour)\n        {\n            MyGlobalEvents.SetRatePerHour(globalEvent, ratePerHour);\n        }\n\n        public static void IncreaseHeadShake(float amount)\n        {\n            if (MyMultiplayerGameplay.IsHosting)\n            {\n                MyMultiplayerGameplay.Static.SendHeadshake(amount);\n            }\n\n            MySession.PlayerShip.IncreaseHeadShake(amount);\n        }\n\n        public static void Log(string message, params object[] args)\n        {\n            string formattedMessage = String.Format(message, args);\n            Debug.WriteLine(formattedMessage);\n            MyMwcLog.WriteLine(formattedMessage);\n        }\n\n        public static void CloseEntity(MyEntity entity)\n        {\n            if (entity != null)\n            {\n                if (MyMultiplayerGameplay.IsHosting)\n                {\n                    MyMultiplayerGameplay.Static.UpdateFlags(entity, MyFlagsEnum.CLOSE);\n                }\n\n                entity.MarkForClose();\n            }\n        }\n\n        public static void ForbideDetaching()\n        {\n            MyGuiScreenGamePlay.Static.DetachingForbidden = true;\n        }\n\n        public static void EnableDetaching()\n        {\n            MinerWars.AppCode.Game.GUI.MyGuiScreenGamePlay.Static.ReleaseControlOfLargeWeapon();\n            MyGuiScreenGamePlay.Static.DetachingForbidden = false;\n        }\n\n        public static void HideEntity(uint entityId, bool buffered = false)\n        {\n            var entity = TryGetEntity(entityId);\n            HideEntity(entity, buffered);\n        }\n\n        public static void HideEntity(MyEntity entity, bool buffered = false)\n        {\n            Debug.Assert(entity != null);\n            if (entity != null)\n            {\n                if (MyMultiplayerGameplay.IsRunning && MyMultiplayerGameplay.Static.IsHost)\n                {\n                    MyMultiplayerGameplay.Static.UpdateFlags(entity, CommonLIB.AppCode.Networking.Multiplayer.MyFlagsEnum.HIDE);\n                }\n                entity.Activate(false, buffered);\n            }\n        }\n\n        public static void TryHide(uint id, bool buffered = false)\n        {\n            var e = TryGetEntity(id);\n            if (e != null)\n            {\n                MyScriptWrapper.HideEntity(e, buffered);\n            }\n        }\n\n\n        public static void TryUnhide(uint entityId, bool buffered = true, bool destroyGeneratedWaypointEdges = false)\n        {\n            MyEntity entity = TryGetEntity(entityId);\n            if (entity != null)\n            {\n                UnhideEntity(entity, destroyGeneratedWaypointEdges ? false : buffered);  // if we want to destroy waypoint edges, we need to have it NOW (can't be buffered)\n                if (destroyGeneratedWaypointEdges)\n                    MyWayPointGraph.RemoveAllObstructedGeneratedEdgesAround(entity);\n            }\n        }\n\n        public static void UnhideEntity(MyEntity entity, bool buffered = true)\n        {\n            if (entity != null)\n            {\n                if (MyMultiplayerGameplay.IsRunning && MyMultiplayerGameplay.Static.IsHost)\n                {\n                    MyMultiplayerGameplay.Static.UpdateFlags(entity, CommonLIB.AppCode.Networking.Multiplayer.MyFlagsEnum.UNHIDE);\n                }\n\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"UnhideEntity\");\n                entity.Activate(true, buffered);\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n                if (entity.Name == \"Madelyn\")\n                {\n                    RegenerateWaypointGraph();\n                }\n            }\n        }\n\n        public static void PlayDialogue(MyDialogueEnum id)\n        {\n            if (MyMinerGame.IsGameReady)\n            {\n                PlayDialogueNow(id);\n            }\n            else\n            {\n                // When game is not ready, play dialogue after load is finished\n                MyGuiScreenGamePlay.Static.OnGameReady += new MyGuiScreenBase.ScreenHandler((screen) => PlayDialogueNow(id));\n            }\n        }\n\n        private static void PlayDialogueNow(MyDialogueEnum id)\n        {\n            MyDialogues.Play(id);\n\n            if (MyMultiplayerGameplay.IsHosting)\n            {\n                MyMultiplayerGameplay.Static.SendPlayDialogue(id);\n            }\n        }\n\n        public static void SetActorFaction(MyActorEnum actorId, MyMwcObjectBuilder_FactionEnum newFaction)\n        {\n            if (MyMultiplayerGameplay.IsHosting)\n            {\n                MyMultiplayerGameplay.Static.SendSetActorFaction(actorId, newFaction);\n            }\n\n            MyActorConstants.SetActorFaction(actorId, newFaction);\n        }\n\n        public static void SetWaypointGroupSecrecy(string groupName, bool newSecrecy)\n        {\n            MyWayPointGraph.SetSecrecyForPath(groupName, newSecrecy);\n        }\n\n        public static void SetWaypointListSecrecy(List<uint> entityIds, bool newSecrecy)\n        {\n            var list = new List<MyWayPoint>();\n\n            foreach (var i in entityIds)\n            {\n                var entity = GetEntity(i);\n                var wp = entity as MyWayPoint;\n                MyCommonDebugUtils.AssertDebug(wp != null, string.Format(\"Entity with id={0} is not a waypoint!\", i));\n                list.Add(wp);\n            }\n            MyWayPointGraph.SetSecrecyForWaypoints(list, newSecrecy);\n        }\n\n        public static void AddAudioImpShipQuake()\n        {\n            PlaySound2D(MySoundCuesEnum.ImpShipQuake);\n        }\n\n\n        public static void GetEntitiesInDummyPoint(uint dummyPointId, List<MyEntity> resultEntities)\n        {\n            MyDummyPoint dummyPoint = MyScriptWrapper.GetEntity(dummyPointId) as MyDummyPoint;\n            Debug.Assert(dummyPoint != null, \"Entity Id does not belong to dummy point\");\n\n            MyEntities.GetIntersectionsWithAABB(dummyPoint.WorldAABB, resultEntities);\n        }\n\n        public static void GetSmallShipBotsInDummyPoint(uint dummyPointId, List<MySmallShipBot> resultEntities, MyFactionRelationEnum? relation = null)\n        {\n            MyDummyPoint dummyPoint = MyScriptWrapper.GetEntity(dummyPointId) as MyDummyPoint;\n            Debug.Assert(dummyPoint != null, \"Entity Id does not belong to dummy point\");\n\n            MyEntities.GetIntersectionsWithAABBOfType<MySmallShipBot>(dummyPoint.WorldAABB, resultEntities);\n            if (relation != null)\n            {\n                int i = 0;\n                while (i < resultEntities.Count)\n                {\n                    MySmallShip smallShip = resultEntities[i];\n                    if (MyFactions.GetFactionsRelation(smallShip.Faction, MySession.PlayerShip.Faction) != relation)\n                    {\n                        resultEntities.RemoveAtFast(i);\n                    }\n                    i++;\n                }\n            }\n        }\n\n        internal static bool IsEntityDead(uint entityId)\n        {\n            MyEntity entity;\n            bool result = MyEntities.TryGetEntityById(new MyEntityIdentifier(entityId), out entity);\n            if (entity == null)\n                return true;\n            return entity.IsDead();\n        }\n\n        internal static void DisableAllGlobalEvents()\n        {\n            MyGlobalEvents.DisableAllGlobalEvents();\n        }\n\n        internal static void EnableAllGlobalEvents()\n        {\n            MyGlobalEvents.EnableAllGlobalEvents();\n        }\n\n        internal static void SetBotAITemplate(MyEntity entity, MyAITemplateEnum template)\n        {\n            MySmallShipBot bot = entity as MySmallShipBot;\n            Debug.Assert(bot != null);\n            if (bot != null)\n            {\n                bot.SetAITemplate(template);\n            }\n        }\n\n        internal static void ForceFindGPSPathToNextObjective()\n        {\n            MyHud.ShowGPSPathToNextObjective(false);\n        }\n\n        public static void SetAlarmMode(uint entityId, bool enabled)\n        {\n            SetAlarmMode(GetEntity(entityId), enabled);\n        }\n\n        public static void SetAlarmMode(MyEntity entity, bool enabled)\n        {\n            MyPrefabContainer prefabContainer = entity as MyPrefabContainer;\n            Debug.Assert(prefabContainer != null);\n            if (prefabContainer != null)\n            {\n                prefabContainer.AlarmOn = enabled;\n            }\n        }\n\n        public static MySmallShip GetSpawnPointLeader(uint entityId)\n        {\n            return GetSpawnPointLeader(TryGetEntity(entityId));\n        }\n\n        public static MySmallShip GetSpawnPointLeader(MyEntity entity)\n        {\n            MySpawnPoint spawnPoint = entity as MySpawnPoint;\n            Debug.Assert(spawnPoint != null);\n            return spawnPoint.GetLeader();\n        }\n\n        public static void StopFollow(uint followerId)\n        {\n            StopFollow(TryGetEntity(followerId));\n        }\n\n        public static void StopFollow(MyEntity bot)\n        {\n            MySmallShipBot smallShipBot = bot as MySmallShipBot;\n            Debug.Assert(smallShipBot != null);\n\n            if (smallShipBot != null)\n            {\n                if (smallShipBot.Leader != null)\n                {\n                    smallShipBot.StopFollow();\n                }\n            }\n        }\n\n        public static void Move(MyEntity entity, MyEntity target)\n        {\n            Debug.Assert(entity != null);\n            Debug.Assert(target != null);\n            Move(entity, target.GetPosition(), target.GetForward(), target.GetUp());\n        }\n\n        public static void Move(MyEntity entity, Vector3 position, Vector3? forward = null, Vector3? up = null)\n        {\n            Debug.Assert(entity != null);\n            Matrix newWorld = Matrix.CreateWorld(position, forward ?? entity.WorldMatrix.Forward, up ?? entity.WorldMatrix.Up);\n            entity.SetWorldMatrix(newWorld);\n\n            if (MyMultiplayerGameplay.IsHosting)\n            {\n                MyMultiplayerGameplay.Static.UpdatePositionFast(entity, position/*, forward, up*/); //TODO: why is not forward and up transmitted?\n            }\n        }\n\n        public static void MoveWithVelocity(MyEntity entity, Vector3 position, Vector3 velocity)\n        {\n            Debug.Assert(entity != null);\n            Matrix newWorld = Matrix.CreateWorld(position, entity.WorldMatrix.Forward, entity.WorldMatrix.Up);\n            entity.SetWorldMatrix(newWorld);\n\n            if (MyMultiplayerGameplay.IsHosting)\n            {\n                MyMultiplayerGameplay.Static.UpdatePosition(entity, entity.WorldMatrix, velocity, Vector3.Zero);\n            }\n        }\n\n        public static void TravelToMission(MyMissionID missionID)\n        {\n            MyMission mission = (MyMission)MyMissions.GetMissionByID(missionID);\n            Debug.Assert(mission.Location != null);\n\n            MyGuiScreenGamePlay.Static.TravelToSector(new MyMwcSectorIdentifier(MyMwcSectorTypeEnum.STORY, null, mission.Location.Sector, \"\"), MyMwcTravelTypeEnum.SOLAR, MySession.PlayerShip.GetPosition(), mission.ID);\n        }\n\n        public static bool IsMissionFinished(MyMissionID missionID)\n        {\n            return MySession.Static.EventLog.IsMissionFinished(missionID);\n        }\n\n        public static bool AreMissionFinished(MyMissionID[] missionIDs)\n        {\n            return MySession.Static.EventLog.AreMissionsFinished(missionIDs);\n        }\n\n        public static void SetSleepDistance(MyEntity botEntity, float sleepDistance)\n        {\n            MySmallShipBot bot = botEntity as MySmallShipBot;\n            Debug.Assert(bot != null);\n\n            if (bot != null)\n            {\n                bot.SleepDistance = sleepDistance;\n            }\n\n        }\n\n        public static void SetBotTarget(MyEntity bot, MyEntity target)\n        {\n            MySmallShipBot smallShipBot = bot as MySmallShipBot;\n            Debug.Assert(smallShipBot != null);\n\n            if (smallShipBot != null)\n            {\n                smallShipBot.Attack(target);\n            }\n        }\n\n        public static MyEntity GetMothershipHangar(MyEntity mothership)\n        {\n            foreach (MyPrefabBase prefab in ((MyPrefabContainer)mothership).GetPrefabs())\n            {\n                if (prefab is MyPrefabHangar)\n                {\n                    return prefab;\n                }\n            }\n\n            return null;\n        }\n\n        public static void Highlight(uint id, bool hightlight, MyMissionBase misson)\n        {\n            if (hightlight)\n            {\n                bool hasComponent = false;\n                foreach (var components in misson.Components)\n                {\n                    if (components is MyBlinkingObjects)\n                    {\n                        var blinkingObjects = components as MyBlinkingObjects;\n                        blinkingObjects.AddBlinkingObject(TryGetEntity(id));\n                        hasComponent = true;\n                        break;\n                    }\n                }\n                if (!hasComponent)\n                {\n                    var blink = new MyBlinkingObjects(new List<uint>());\n                    blink.AddBlinkingObject(TryGetEntity(id));\n                    misson.Components.Add(blink);\n                }\n            }\n            else\n            {\n                foreach (var components in misson.Components)\n                {\n                    if (components is MyBlinkingObjects)\n                    {\n                        var blinkingObjects = components as MyBlinkingObjects;\n                        MyEntity entity = MyScriptWrapper.TryGetEntity(id);\n                        if (entity != null)\n                        {\n                            blinkingObjects.RemoveBlinkingObject(entity);\n                        }\n                        break;\n                    }\n                }\n            }\n        }\n\n\n\n        public static void EnablePhysics(uint id, bool enable, bool ignoreLargeWeapons = false)\n        {\n            var entity = MyScriptWrapper.GetEntity(id);\n            Debug.Assert(entity != null);\n            if (entity != null)\n            {\n                EnablePhysicsRecursive(entity, enable, ignoreLargeWeapons);\n            }\n        }\n\n        private static void EnablePhysicsRecursive(MyEntity entity, bool enable, bool ignoreLargeWeapons = false)\n        {\n            if (ignoreLargeWeapons && entity is MyPrefabLargeWeapon)\n                return;\n\n            if (entity.Physics != null && entity.Physics.Enabled != enable)\n                entity.Physics.Enabled = enable;\n\n            foreach (var myEntity in entity.Children)\n            {\n                EnablePhysicsRecursive(myEntity, enable);\n            }\n        }\n\n        /// <summary>\n        /// Disable ship - turn off lights and engine, disable AI\n        /// </summary>\n        public static void DisableShip(MyEntity entity, bool staticPhysics = true, bool destructible = true)\n        {\n            MySmallShip ship = entity as MySmallShip;\n            if (ship != null)\n            {\n                if (MyMultiplayerGameplay.IsHosting)\n                {\n                    MyFlagsEnum flags = MyFlagsEnum.PARK_SHIP | (destructible ? MyFlagsEnum.DESTRUCTIBLE : MyFlagsEnum.INDESTRUCTIBLE);\n                    MyMultiplayerGameplay.Static.UpdateFlags(entity, MyFlagsEnum.PARK_SHIP, staticPhysics);\n                }\n\n                ship.SetParked(staticPhysics);\n                ship.IsDestructible = destructible;\n            }\n        }\n\n        public static event Action FadedIn\n        {\n            add { MyGuiScreenGamePlay.Static.FadedIn += value; }\n            remove { MyGuiScreenGamePlay.Static.FadedIn -= value; }\n        }\n\n        public static event Action FadedOut\n        {\n            add { MyGuiScreenGamePlay.Static.FadedOut += value; }\n            remove { MyGuiScreenGamePlay.Static.FadedOut -= value; }\n        }\n\n        public static void FadeIn(float speed = 0.02f)\n        {\n            MyGuiScreenGamePlay.Static.FadeIn(speed);\n        }\n\n        public static void FadeOut(float speed = 0.02f)\n        {\n            MyGuiScreenGamePlay.Static.FadeOut(speed);\n        }\n\n        public static void SetEntityDisplayName(MyEntity entity, string displayName)\n        {\n            Debug.Assert(entity != null);\n            entity.DisplayName = displayName;\n        }\n\n        public static void SetEntityDisplayName(uint entityId, string displayName)\n        {\n            SetEntityDisplayName(GetEntity(entityId), displayName);\n        }\n\n        public static void GenerateMinesField<T>(MyEntity en, MyMwcObjectBuilder_FactionEnum faction, int count, string name, MyHudIndicatorFlagsEnum hudparams) where T : MyMineBase, IUniversalLauncherShell, new()\n        {\n            //if (! is MyMineBase) \n            en.Faction = MyMwcObjectBuilder_FactionEnum.Russian_KGB;\n            var radius = en.WorldVolume.Radius;\n            for (int i = 0; i < count; i++)\n            {\n                Vector3 vec = new Vector3();\n                while (true)\n                {\n                    vec.X = MyMwcUtils.GetRandomFloat(-radius, radius);\n                    vec.Y = MyMwcUtils.GetRandomFloat(-radius, radius);\n                    vec.Z = MyMwcUtils.GetRandomFloat(-radius, radius);\n                    if (vec.Length() <= radius) break;\n                }\n\n                MyMineBase mine = MyUniversalLauncherShells.Allocate<T>(en.EntityId.Value.PlayerId);\n                if (mine != null)\n                {\n                    mine.Init();\n                    mine.Start(en.GetPosition() + vec, Vector3.Zero, Vector3.One, en.EntityId.Value.PlayerId, en);\n                    var relation = MyFactions.GetFactionsRelation(faction, MySession.PlayerShip.Faction);\n\n                    var mode = MyGuitargetMode.Neutral;\n\n                    switch (relation)\n                    {\n                        case MyFactionRelationEnum.Enemy: mode = MyGuitargetMode.Enemy;\n                            break;\n                        case MyFactionRelationEnum.Friend: mode = MyGuitargetMode.Friend;\n                            break;\n                        default:\n                            break;\n                    }\n\n\n                    if (hudparams != MyHudIndicatorFlagsEnum.NONE)\n                    {\n                        MyScriptWrapper.MarkEntity(mine, name, hudparams, mode);\n                    }\n                }\n                else\n                {\n\n                }\n            }\n        }\n\n        public static void DisableShipBackCamera()\n        {\n            MyGuiScreenGamePlay.Static.DisableBackCamera = true;\n        }\n\n        public static void EnableShipBackCamera()\n        {\n            MyGuiScreenGamePlay.Static.DisableBackCamera = false;\n        }\n\n\n        internal static void SetCargoRespawn(uint cargobox, TimeSpan respawnTime)\n        {\n            var e = GetEntity(cargobox) as MyCargoBox;\n            Debug.Assert(e != null);\n            e.RespawnTime = respawnTime;\n        }\n\n        public static void SetEntitySaveFlagDisabled(MyEntity entity)\n        {\n            if (entity != null) entity.Save = false;\n        }\n\n\n        public static void KillAllEnemy()\n        {\n            // We need player ship to recognize friends\n            if (MySession.PlayerShip == null)\n            {\n                return;\n            }\n\n            foreach (var entity in MyEntities.GetEntities().ToArray())\n            {\n                MySmallShip smallShip = entity as MySmallShip;\n                if (smallShip != null &&\n                    smallShip.Visible &&\n                    smallShip != MySession.PlayerShip &&\n                    MyFactions.GetFactionsRelation(MySession.PlayerShip, smallShip) == MyFactionRelationEnum.Enemy)\n                {\n                    entity.DoDamage(0, 1000000, 0, MyDamageType.Unknown, MyAmmoType.Unknown, null);\n                }\n\n                MyPrefabContainer container = entity as MyPrefabContainer;\n                if (container != null &&\n                    MyFactions.GetFactionsRelation(MySession.PlayerShip, container) == MyFactionRelationEnum.Enemy)\n                {\n                    foreach (var prefab in container.GetPrefabs().ToArray())\n                    {\n                        MyPrefabLargeWeapon largeWeapon = prefab as MyPrefabLargeWeapon;\n                        if (largeWeapon != null)\n                        {\n                            prefab.DoDamage(0, 1000000, 0, MyDamageType.Unknown, MyAmmoType.Unknown, null);\n                        }\n                    }\n                }\n            }\n        }\n\n        //TODO: this is used in rift and will not work in multiplayer\n        public static MyEntity GenerateMeteor(float size, Vector3 position, MyMwcVoxelMaterialsEnum material, Vector3 velocity, MyParticleEffectsIDEnum? trailEffect)\n        {\n            Matrix worldMatrix = Matrix.CreateFromAxisAngle(MyMwcUtils.GetRandomVector3Normalized(), MyMwcUtils.GetRandomFloat(0, MathHelper.Pi));\n            worldMatrix.Translation = position;\n\n            MyMeteor meteor = MyMeteor.GenerateMeteor(size, worldMatrix, position, material);\n\n            meteor.Start(velocity, (int?)trailEffect);\n\n            return meteor;\n        }\n\n\n\n        public static void ChangeShip(MySmallShip changeForShip)\n        {\n            MyMwcObjectBuilder_SmallShip_Player originalBuilder = MySession.PlayerShip.GetObjectBuilder(true) as MyMwcObjectBuilder_SmallShip_Player;\n            var originalShipType = originalBuilder.ShipType;\n            var originalPosition = MySession.PlayerShip.WorldMatrix;\n\n            MySession.PlayerShip.Physics.Clear();\n            MySession.PlayerShip.MarkForClose();\n\n            //creating new Player ship\n            MyMwcObjectBuilder_SmallShip changeForShipOB = (MyMwcObjectBuilder_SmallShip)changeForShip.GetObjectBuilder(true);\n            MyMwcObjectBuilder_SmallShip_Player newPlayerShipBuilder = new MyMwcObjectBuilder_SmallShip_Player(changeForShipOB.ShipType,\n                changeForShipOB.Inventory,\n                changeForShipOB.Weapons,\n                changeForShipOB.Engine,\n                changeForShipOB.AssignmentOfAmmo,\n                changeForShipOB.Armor,\n                changeForShipOB.Radar,\n                changeForShipOB.ShipMaxHealth,\n                changeForShipOB.ShipHealthRatio,\n                changeForShipOB.ArmorHealth,\n                100,\n                changeForShipOB.Oxygen,\n                changeForShipOB.Fuel,\n                changeForShipOB.ReflectorLight,\n                changeForShipOB.ReflectorLongRange,\n                changeForShipOB.ReflectorShadowDistance,\n                changeForShipOB.AIPriority);\n            newPlayerShipBuilder.Faction = MySession.PlayerShip.Faction;\n                \n/*\n            originalBuilder.ShipType = changeForShip.ShipType;\n            MyEntities.CreateFromObjectBuilderAndAdd(null, originalBuilder, changeForShip.WorldMatrix);\n                   */\n\n            MyEntities.CreateFromObjectBuilderAndAdd(null, newPlayerShipBuilder, changeForShip.WorldMatrix);\n\n            //adding old ship to inventory - garage\n            var playerShipInventory = MyInventory.CreateInventoryItemFromObjectBuilder(originalBuilder);\n            MySession.Static.Inventory.AddInventoryItem(playerShipInventory);\n            changeForShip.MarkForClose();\n\n\n            MyMwcObjectBuilder_SmallShip fakeShipBuilder = new MyMwcObjectBuilder_SmallShip(\n                originalShipType,\n                null,\n                originalBuilder.Weapons,\n                originalBuilder.Engine,\n                originalBuilder.AssignmentOfAmmo,\n                originalBuilder.Armor,\n                originalBuilder.Radar,\n                originalBuilder.ShipMaxHealth,\n                originalBuilder.ShipHealthRatio,\n                originalBuilder.ArmorHealth,\n                originalBuilder.Oxygen,\n                originalBuilder.Fuel,\n                originalBuilder.ReflectorLight,\n                originalBuilder.ReflectorLongRange,\n                originalBuilder.ReflectorShadowDistance,\n                originalBuilder.AIPriority);\n            fakeShipBuilder.Faction = originalBuilder.Faction;\n\n            //creating new ship, replacement of mine old ship\n            fakeShipBuilder.EntityId = MyEntityIdentifier.AllocateId().NumericValue;\n            fakeShipBuilder.PositionAndOrientation = new MyMwcPositionAndOrientation(originalPosition);\n            var myFakeShip = new MySmallShip();\n            myFakeShip.Init(null, fakeShipBuilder);\n            MyEntities.Add(myFakeShip);\n            DisableShip(myFakeShip);\n        }\n\n        public static void RevertShipFromInventory()\n        {\n            if (MySession.PlayerShip.ShipType == MyMwcObjectBuilder_SmallShip_TypesEnum.VIRGINIA)\n                return;\n\n            MyMwcObjectBuilder_SmallShip_Player originalBuilder = MySession.PlayerShip.GetObjectBuilder(true) as MyMwcObjectBuilder_SmallShip_Player;\n\n            var originalShipType = originalBuilder.ShipType;\n            var originalPosition = MySession.PlayerShip.WorldMatrix;\n\n            MyInventoryItem playerSmallShip = null;\n            foreach (var item in MySession.Static.Inventory.GetInventoryItems())\n            {\n                if (item.ObjectBuilderType == MyMwcObjectBuilderTypeEnum.SmallShip_Player)\n                {   //We have found stored player ship\n\n                    MySession.PlayerShip.Physics.Clear();\n                    MySession.PlayerShip.MarkForClose();\n\n                    playerSmallShip = item;\n\n                    var builder = item.GetInventoryItemObjectBuilder(true) as MyMwcObjectBuilder_SmallShip_Player;\n                    MyEntities.CreateFromObjectBuilderAndAdd(null, builder, MySession.PlayerShip.WorldMatrix);\n\n                    break;\n                }\n            }\n\n            if (playerSmallShip == null)\n                return; //already changed\n\n\n\n            //backing up current ship\n            MyMwcObjectBuilder_SmallShip_Player inventoryShipBuilder = new MyMwcObjectBuilder_SmallShip_Player(originalBuilder.ShipType,\n                originalBuilder.Inventory,\n                originalBuilder.Weapons,\n                originalBuilder.Engine,\n                originalBuilder.AssignmentOfAmmo,\n                originalBuilder.Armor,\n                originalBuilder.Radar,\n                originalBuilder.ShipMaxHealth,\n                originalBuilder.ShipHealthRatio,\n                originalBuilder.ArmorHealth,\n                100,\n                originalBuilder.Oxygen,\n                originalBuilder.Fuel,\n                originalBuilder.ReflectorLight,\n                originalBuilder.ReflectorLongRange,\n                originalBuilder.ReflectorShadowDistance,\n                originalBuilder.AIPriority);\n            inventoryShipBuilder.Faction = originalBuilder.Faction;\n\n            //adding old ship to inventory - garage\n            var playerShipInventory = MyInventory.CreateInventoryItemFromObjectBuilder(inventoryShipBuilder);\n            \n            MySession.Static.Inventory.AddInventoryItem(playerShipInventory);\n\n            if (playerSmallShip != null)\n            {\n                MySession.Static.Inventory.RemoveInventoryItem(playerSmallShip);\n            }\n        }\n\n\n        public static MySmallShipBot InsertFriend(MyActorEnum actorEnum, MyMwcObjectBuilder_SmallShip_TypesEnum? shipType = null)\n        {\n            return MyMissionBase.InsertFriend(actorEnum, shipType);\n        }\n\n        public static void TryHideEntities(List<uint> toHide, bool buffered = false)\n        {\n            foreach (var u in toHide)\n            {\n                MyScriptWrapper.TryHide(u, buffered);\n            }\n        }\n\n        public static void HideEntities(List<uint> toHide, bool buffered = false)\n        {\n            foreach (var u in toHide)\n            {\n                MyScriptWrapper.HideEntity(u, buffered);\n            }\n        }\n\n        public static void HideEntities(List<MyEntity> toHide, bool buffered = false)\n        {\n            foreach (var u in toHide)\n            {\n                MyScriptWrapper.HideEntity(u, buffered);\n            }\n        }\n\n        public static void TryUnhideEntities(List<uint> toHide, bool buffered = false)\n        {\n            foreach (var u in toHide)\n            {\n                MyScriptWrapper.TryUnhide(u, buffered);\n            }\n        }\n\n        public static void UnhideEntities(List<MyEntity> toUnhide, bool buffered = false)\n        {\n            foreach (var u in toUnhide)\n            {\n                MyScriptWrapper.UnhideEntity(u, buffered);\n            }\n        }\n\n        public static void DestroyPlayerShip()\n        {\n            MySession.PlayerShip.DoDamage(0, 1000000, 0, MyDamageType.Unknown, MyAmmoType.Unknown, null);\n        }\n\n        public static void AllowMusic(bool allow)\n        {\n            MyAudio.MusicAllowed = allow;\n        }\n\n        public static void MovePlayerAndFriendsToHangar(MyActorEnum[] requiredActors)\n        {\n            MyMissionBase.MovePlayerAndFriendsToHangar(requiredActors);\n        }\n\n        public static void ChangeFaction(MyEntity entity, MyMwcObjectBuilder_FactionEnum newFaction)\n        {\n            if (entity != null)\n            {\n                Debug.Assert(entity.EntityId.HasValue);\n                ChangeFaction(entity.EntityId.Value.NumericValue, newFaction);\n            }\n        }\n\n        public static void ChangeFaction(uint entityId, MyMwcObjectBuilder_FactionEnum newFaction)\n        {\n            var entity = GetEntity(entityId);\n            if (entity != null)\n            {\n                if (MyMultiplayerGameplay.IsHosting)\n                {\n                    MyMultiplayerGameplay.Static.SendSetEntityFaction(entity, newFaction);\n                }\n\n                entity.Faction = newFaction;\n            }\n        }\n\n        public static void RegenerateWaypointGraph()\n        {\n            if (MyMultiplayerGameplay.IsHosting)\n            {\n                MyMultiplayerGameplay.Static.SendGlobalFlag(MyGlobalFlagsEnum.REGENERATE_WAYPOINTS);\n            }\n\n            MyWayPointGraph.RecreateWaypointsAroundMadelyn();\n        }\n\n        public static void Refill()\n        {\n            MySession.Static.Player.RestoreHealth();\n            MySession.PlayerShip.Refill();\n        }\n\n        public static void SetLargeWeaponRotation(uint entityId, float angle, float elevation)\n        {\n            MyPrefabLargeWeapon weapon = GetEntity(entityId) as MyPrefabLargeWeapon;\n            Debug.Assert(weapon != null);\n            if (weapon != null)\n            {\n                weapon.SetRotation(angle, elevation);\n            }\n        }\n\n        [Conditional(\"DEBUG\")]\n        internal static void DebugSetFactions(MyMission mission)\n        {\n            var currentMissionNumber = MyMissions.GetMissionNumber(mission.ID);\n            if (currentMissionNumber == -1)\n                return;\n\n            MyFactions.SetDefaultFactionRelations();\n            if (MyMissions.GetMissionNumber(MyMissionID.PIRATE_BASE) < currentMissionNumber) //4\n            {\n                MyScriptWrapper.SetFactionRelation(MyMwcObjectBuilder_FactionEnum.Pirates, MyMwcObjectBuilder_FactionEnum.Rainiers, MyFactions.RELATION_WORST);\n            }\n            if (MyMissions.GetMissionNumber(MyMissionID.RUSSIAN_WAREHOUSE) < currentMissionNumber) //5\n            {\n                MyScriptWrapper.SetFactionRelation(MyMwcObjectBuilder_FactionEnum.Pirates, MyMwcObjectBuilder_FactionEnum.Rainiers, MyFactions.RELATION_BEST);\n                MyScriptWrapper.SetFactionRelation(MyMwcObjectBuilder_FactionEnum.Russian, MyMwcObjectBuilder_FactionEnum.Rainiers, MyFactions.RELATION_WORST);\n                MyScriptWrapper.SetFactionRelation(MyMwcObjectBuilder_FactionEnum.Pirates, MyMwcObjectBuilder_FactionEnum.Russian, MyFactions.RELATION_WORST);\n            }\n            if (MyMissions.GetMissionNumber(MyMissionID.LAST_HOPE) < currentMissionNumber) //7\n            {\n                MyScriptWrapper.SetFactionRelation(MyMwcObjectBuilder_FactionEnum.Slavers, MyMwcObjectBuilder_FactionEnum.Rainiers, MyFactions.RELATION_WORST);\n            }\n            if (MyMissions.GetMissionNumber(MyMissionID.CHINESE_ESCAPE) < currentMissionNumber) //8d\n            {\n                MyScriptWrapper.SetFactionRelation(MyMwcObjectBuilder_FactionEnum.China, MyMwcObjectBuilder_FactionEnum.Rainiers, MyFactions.RELATION_WORST);\n            }\n            if (MyMissions.GetMissionNumber(MyMissionID.RESEARCH_VESSEL) < currentMissionNumber) //12\n            {\n                MyScriptWrapper.SetFactionRelation(MyMwcObjectBuilder_FactionEnum.Euroamerican, MyMwcObjectBuilder_FactionEnum.Rainiers, MyFactions.RELATION_WORST);\n            }\n            if (MyMissions.GetMissionNumber(MyMissionID.JUNKYARD_EAC_AMBUSH) < currentMissionNumber) //13\n            {\n                MyScriptWrapper.SetFactionRelation(MyMwcObjectBuilder_FactionEnum.Euroamerican, MyMwcObjectBuilder_FactionEnum.Rainiers, MyFactions.RELATION_WORST);\n            }\n            if (MyMissions.GetMissionNumber(MyMissionID.RUSSIAN_TRANSMITTER) < currentMissionNumber) // 17\n            {\n                MyScriptWrapper.SetFactionRelation(MyMwcObjectBuilder_FactionEnum.Russian, MyMwcObjectBuilder_FactionEnum.Rainiers, MyFactions.RELATION_WORST);\n            }\n            if (MyMissions.GetMissionNumber(MyMissionID.REICHSTAG_A) < currentMissionNumber) //18a\n            {\n                MyScriptWrapper.SetFactionRelation(MyMwcObjectBuilder_FactionEnum.FourthReich, MyMwcObjectBuilder_FactionEnum.Rainiers, MyFactions.RELATION_NEUTRAL);\n            }\n            if (MyMissions.GetMissionNumber(MyMissionID.NAZI_BIO_LAB) < currentMissionNumber) //18b\n            {\n                MyScriptWrapper.SetFactionRelation(MyMwcObjectBuilder_FactionEnum.WhiteWolves, MyMwcObjectBuilder_FactionEnum.Rainiers, MyFactions.RELATION_WORST);\n            }\n            if (MyMissions.GetMissionNumber(MyMissionID.REICHSTAG_C) < currentMissionNumber) //18c\n            {\n                MyScriptWrapper.SetFactionRelation(MyMwcObjectBuilder_FactionEnum.FourthReich, MyMwcObjectBuilder_FactionEnum.Rainiers, MyFactions.RELATION_BEST);\n            }\n            if (MyMissions.GetMissionNumber(MyMissionID.TWIN_TOWERS) < currentMissionNumber) //19\n            {\n                MyScriptWrapper.SetFactionRelation(MyMwcObjectBuilder_FactionEnum.FourthReich, MyMwcObjectBuilder_FactionEnum.Rainiers, MyFactions.RELATION_BEST);\n                MyScriptWrapper.SetFactionRelation(MyMwcObjectBuilder_FactionEnum.WhiteWolves, MyMwcObjectBuilder_FactionEnum.Rainiers, MyFactions.RELATION_WORST);\n            }\n            if (MyMissions.GetMissionNumber(MyMissionID.EAC_PRISON) < currentMissionNumber) //20\n            {\n                MyScriptWrapper.SetFactionRelation(MyMwcObjectBuilder_FactionEnum.FourthReich, MyMwcObjectBuilder_FactionEnum.Rainiers, MyFactions.RELATION_BEST);\n                MyScriptWrapper.SetFactionRelation(MyMwcObjectBuilder_FactionEnum.Euroamerican, MyMwcObjectBuilder_FactionEnum.Rainiers, MyFactions.RELATION_WORST);\n            }\n            if (MyMissions.GetMissionNumber(MyMissionID.EAC_TRANSMITTER) < currentMissionNumber) //21\n            {\n                MyScriptWrapper.SetFactionRelation(MyMwcObjectBuilder_FactionEnum.Euroamerican, MyMwcObjectBuilder_FactionEnum.Rainiers, MyFactions.RELATION_WORST);\n            }\n\n        }\n\n        public static float GetGameVolume()\n        {\n            return MyAudio.VolumeGame;\n        }\n\n        public static void SetGameVolume(float volume)\n        {\n            MyAudio.VolumeGame = volume;\n        }\n\n        public static void SetGameVolumeExceptDialogues(float volume)\n        {\n            MyAudio.SetVolumeExceptDialogues(volume);\n        }\n\n\n        internal static void AddMoney(int money)\n        {\n            var notification = MyScriptWrapper.CreateNotification(MyTextsWrapperEnum.MoneyObtained, MyGuiManager.GetFontMinerWarsBlue(), 5000);\n            notification.SetTextFormatArguments(new object[] { money.ToString() });\n            MySession.Static.Player.Money += money;\n            MyScriptWrapper.AddNotification(notification);\n            notification.Appear();\n        }\n    }\n\n\n\n    public class CancelEventArgs\n    {\n        public bool Cancel { get; set; }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/Objectives/MyDestroyWavesObjective.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Textures;\n\nnamespace MinerWars.AppCode.Game.Missions.Objectives\n{\n    class MyDestroyWavesObjective : MyObjective\n    {\n        private List<MyEntity> m_spawnedBots;\n        private List<List<uint>> m_waves;\n        private int m_currentWave;\n        private int m_botsToNextWave;\n        private int m_waveShipCount;\n        private List<uint> m_spawnPointsIds;\n  \n        [Obsolete]\n        public MyDestroyWavesObjective(StringBuilder Name, MyMissionID ID, StringBuilder Description, MyTexture2D Icon, MyMission ParentMission, MyMissionID[] RequiredMissions, List<uint> spawnpoints = null, MyMissionLocation Location = null, Audio.Dialogues.MyDialogueEnum? successDialogId = null, Audio.Dialogues.MyDialogueEnum? startDialogId = null, int botsToNextWave = 3, float? radiusOverride = null)\n            : base(Name, ID, Description, Icon, ParentMission, RequiredMissions, Location, null, successDialogId, startDialogId, null, radiusOverride)\n        {\n            m_waves = new List<List<uint>>();\n            m_botsToNextWave = botsToNextWave;\n            m_spawnPointsIds = spawnpoints;\n        }\n\n\n        public MyDestroyWavesObjective(MyTextsWrapperEnum Name, MyMissionID ID, MyTextsWrapperEnum Description, MyTexture2D Icon, MyMission ParentMission, MyMissionID[] RequiredMissions, List<uint> spawnpoints = null, MyMissionLocation Location = null, Audio.Dialogues.MyDialogueEnum? successDialogId = null, Audio.Dialogues.MyDialogueEnum? startDialogId = null, int botsToNextWave = 3,float? radiusOverride = null)\n            : base(Name, ID, Description, Icon, ParentMission, RequiredMissions, Location, null, successDialogId, startDialogId, null, radiusOverride)\n        {\n            m_waves = new List<List<uint>>();\n            m_botsToNextWave = botsToNextWave;\n            m_spawnPointsIds = spawnpoints;\n        }\n\n\n        public void AddWave(List<uint> spawnpoints)\n        {\n            m_waves.Add(spawnpoints);\n        }\n\n        public override void Load()\n        {\n            base.Load();\n\n            m_currentWave = 0;\n            m_spawnedBots = new List<MyEntity>();\n\n            MyScriptWrapper.OnSpawnpointBotSpawned += OnSpawnpointBotSpawned;\n            MyScriptWrapper.EntityDeath += EntityDeath;\n\n            //m_currentWave = -1;\n            if (m_spawnPointsIds!=null){\n            foreach (var missionEntityID in m_spawnPointsIds)\n            {\n                var spawnpoint = MyScriptWrapper.GetEntity(missionEntityID) as MySpawnPoint;\n                if (spawnpoint != null)\n                {\n                    var bots = spawnpoint.GetBots();\n                    foreach (var bot in bots)\n                    {\n                        if (bot.Ship != null)\n                        {\n                            m_spawnedBots.Add(bot.Ship);\n                        }\n                    }\n\n                }\n            }\n            }\n            SpawnNewWave(0);\n\n        }\n\n        public override void Unload()\n        {\n            base.Unload();\n\n            MyScriptWrapper.OnSpawnpointBotSpawned -= OnSpawnpointBotSpawned;\n            MyScriptWrapper.EntityDeath -= EntityDeath;\n        }\n\n        void OnSpawnpointBotSpawned(MyEntity spawnpoint, MyEntity bot)\n        {\n            if (m_currentWave >= m_waves.Count)\n            {\n                return;\n            }\n\n            foreach (var spawnPointId in m_waves[m_currentWave])\n            {\n                if (MyScriptWrapper.GetEntityId(spawnpoint) == spawnPointId)\n                {\n                    --m_waveShipCount;\n                        m_spawnedBots.Add(bot);\n                    return;\n                }\n            }\n        }\n\n        public override void Update()\n        {\n            base.Update();\n\n\n        }\n        void EntityDeath(MyEntity who, MyEntity by)\n        {\n            if (m_spawnedBots.Remove(who) &&\n                m_currentWave < m_waves.Count &&\n                m_spawnedBots.Count <= m_botsToNextWave /*&&\n                m_waveShipCount == 0*/)\n            {\n                ++m_currentWave;\n                SpawnNewWave(m_currentWave);\n            }\n        }\n\n        public override bool IsSuccess()\n        {\n            //return base.IsSuccess() || (m_waves.Count == m_currentWave && m_spawnedBots.Count == 0);\n\n            if (Location!=null)\n            {\n                return base.IsSuccess() && (m_waves.Count == m_currentWave && m_spawnedBots.Count == 0);\n            }\n            return (m_waves.Count == m_currentWave && m_spawnedBots.Count == 0);\n\n        }\n\n        private void SpawnNewWave(int waveIndex)\n        {\n            if (m_currentWave < m_waves.Count)\n            {\n                m_waveShipCount = 0;\n                foreach (var spawnpointId in m_waves[m_currentWave])\n                {\n                    MyScriptWrapper.ActivateSpawnPoint(spawnpointId);\n\n                    MySpawnPoint spawnpoint = MyScriptWrapper.TryGetEntity(spawnpointId) as MySpawnPoint;\n                    if (spawnpoint != null)\n                    {\n                        m_waveShipCount += spawnpoint.GetShipCount();\n                    }\n                }\n            }\n        }\n\n        public override bool IsMissionEntity(MyEntity target)\n        {\n            if (base.IsMissionEntity(target)) return true;\n            else if (m_spawnedBots != null)\n                return m_spawnedBots.Contains(target);\n            return false;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/Objectives/MyFollowHostObjective.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Localization;\n\nnamespace MinerWars.AppCode.Game.Missions.Objectives\n{\n    class MyFollowHostObjective : MyObjective\n    {\n        public MyFollowHostObjective(MyMission parentMission)\n            : base(MyTextsWrapperEnum.FollowTarget, MyMissionID.COOP_FOLLOW_HOST_OBJECTIVE, MyTextsWrapperEnum.FollowTarget, null, parentMission, new MyMissionID[] { }, null)\n        {\n        }\n\n        public override bool IsSuccess()\n        {\n            return false;\n        }\n\n        public void SetObjectives(MyMissionBase mission)\n        {\n            if (mission != null)\n            {\n                this.Name = mission.Name;\n                this.Description = mission.Description;\n\n                this.NameTemp = mission.NameTemp;\n                this.DescriptionTemp = mission.DescriptionTemp;\n            }\n            else\n            {\n                Name = MyTextsWrapperEnum.EmptyDescription;\n                NameTemp = new StringBuilder();\n                Description = MyTextsWrapperEnum.EmptyDescription;\n                DescriptionTemp = new StringBuilder();\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/Objectives/MyMeetObjective.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Audio.Dialogues;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.AppCode.Game.HUD;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWarsMath;\nusing System.Diagnostics;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing SysUtils.Utils;\n\nnamespace MinerWars.AppCode.Game.Missions\n{\n    class MyMeetObjective : MyObjective\n    {\n        private uint? m_botDetectorId;\n        private uint? m_botToTalkId;\n        private float m_slowdown;\n        private float m_distanceToTalk;\n\n        private MySmallShipBot m_botToTalk;\n        private MyEntityDetector m_botDetector;\n        //private MyDialogueEnum? m_detectorDialog;\n        private bool m_stopFollow;\n        public string PathName { get; set; }\n\n        public uint BotToTalkId\n        {\n            set\n            {\n                m_botToTalkId = value;\n                UpdateBotToTalk();\n            }\n        }\n\n        public bool FollowMe { get; set; }\n        private bool m_success;\n        private bool m_constructorFromName;\n        private string m_botName;\n        protected bool m_detectorReached;\n\n        public MyMeetObjective(MyTextsWrapperEnum Name, MyMissionID ID, MyTextsWrapperEnum Description, MyMission ParentMission, MyMissionID[] RequiredMissions, uint? detectorId, string botName, float distanceToTalk = 50, float slowdown = 0.25f, MyDialogueEnum? successDialogueId = null, MyDialogueEnum? startDialogueId = null, bool stopFollow = true)\n            : base(Name, ID, Description, null, ParentMission, RequiredMissions, null, null, successDialogueId, startDialogueId)\n        {\n            m_botDetectorId = detectorId;\n            m_distanceToTalk = distanceToTalk;\n            m_slowdown = slowdown;\n            //m_detectorDialog = detectorDialogId;\n            m_stopFollow = stopFollow;\n            m_constructorFromName = true;\n            m_botName = botName;\n            FollowMe = true;\n        }\n\n\n        public MyMeetObjective(MyTextsWrapperEnum Name, MyMissionID ID, MyTextsWrapperEnum Description, MyMission ParentMission, MyMissionID[] RequiredMissions, uint? detectorId, uint? botId, float distanceToTalk = 50, float slowdown = 0.25f, MyDialogueEnum? successDialogueId = null, MyDialogueEnum? startDialogueId = null, bool stopFollow = true)\n            : base(Name, ID, Description, null, ParentMission, RequiredMissions, null, null, successDialogueId, startDialogueId)\n        {\n            m_botToTalkId = botId;\n            m_botDetectorId = detectorId;\n            m_distanceToTalk = distanceToTalk;\n            m_slowdown = slowdown;\n            //m_detectorDialog = detectorDialogId;\n\n            m_stopFollow = stopFollow;\n            FollowMe = true;\n        }\n\n\n        [Obsolete]\n        public MyMeetObjective(StringBuilder Name, MyMissionID ID, StringBuilder Description, MyMission ParentMission, MyMissionID[] RequiredMissions, uint? detectorId, string botName, float distanceToTalk = 50, float slowdown = 0.25f, MyDialogueEnum? successDialogueId = null, MyDialogueEnum? startDialogueId = null, bool stopFollow = true)\n            : base(Name, ID, Description, null, ParentMission, RequiredMissions, null, null, successDialogueId, startDialogueId)\n        {\n            m_botDetectorId = detectorId;\n            m_distanceToTalk = distanceToTalk;\n            m_slowdown = slowdown;\n            //m_detectorDialog = detectorDialogId;\n            m_stopFollow = stopFollow;\n            m_constructorFromName = true;\n            m_botName = botName;\n            FollowMe = true;\n        }\n\n        [Obsolete]\n        public MyMeetObjective(StringBuilder Name, MyMissionID ID, StringBuilder Description, MyMission ParentMission, MyMissionID[] RequiredMissions, uint? detectorId, uint? botId, float distanceToTalk = 50, float slowdown = 0.25f, MyDialogueEnum? successDialogueId = null, MyDialogueEnum? startDialogueId = null, bool stopFollow = true)\n            : base(Name, ID, Description, null, ParentMission, RequiredMissions, null, null, successDialogueId, startDialogueId)\n        {\n            m_botToTalkId = botId;\n            m_botDetectorId = detectorId;\n            m_distanceToTalk = distanceToTalk;\n            m_slowdown = slowdown;\n            //m_detectorDialog = detectorDialogId;\n\n            m_stopFollow = stopFollow;\n            FollowMe = true;\n        }\n\n        public override void Load()\n        {\n            MyMwcLog.WriteLine(\"MyMeetObjective::Load - Start\");\n\n            base.Load();\n\n            if (!m_constructorFromName && !m_botToTalkId.HasValue)\n            {\n                MyMwcLog.WriteLine(\"MyMeetObjective::Load - End null\");\n                return;\n            }\n\n            UpdateBotToTalk();\n\n            MyMwcLog.WriteLine(\"MyMeetObjective::Load - End\");\n        }\n\n        private void UpdateBotToTalk()\n        {\n\n            m_success = false;\n\n            if (m_constructorFromName)\n            {\n                MyMwcLog.WriteLine(\"Bot name: \" + m_botName);\n                m_botToTalk = (MySmallShipBot)MyScriptWrapper.GetEntity(m_botName);\n                m_botToTalkId = m_botToTalk.EntityId.Value.NumericValue;\n                MissionEntityIDs.Add(m_botToTalkId.Value);\n            }\n            else\n            {\n                MyMwcLog.WriteLine(\"Bot ID: \" + m_botToTalkId.Value.ToString());\n                MissionEntityIDs.Add(m_botToTalkId.Value);\n                m_botToTalk = (MySmallShipBot)MyScriptWrapper.GetEntity(m_botToTalkId.Value);\n            }\n\n            m_detectorReached = false;\n            Debug.Assert(m_botToTalk != null);\n\n            if (m_botToTalk.WaypointPath != null)\n            {\n                PathName = m_botToTalk.WaypointPath.Name;\n            }\n            m_botToTalk.SpeedModifier = m_slowdown;\n\n            if (m_botDetectorId.HasValue)\n            {\n                m_botDetector = MyScriptWrapper.GetDetector(m_botDetectorId.Value);\n                m_botDetector.On();\n                m_botDetector.OnEntityEnter += m_botDetector_OnEntityEnter;\n            }\n            else if (FollowMe)\n            {\n                MyScriptWrapper.Follow(MySession.PlayerShip, m_botToTalk);\n            }\n        }\n\n\n\n        private void StopFollow()\n        {\n            if (m_stopFollow)\n            {\n                MyScriptWrapper.StopFollow(m_botToTalk);\n            }\n            else if (PathName != null) //PATROL MODE\n            {\n                if (m_botToTalk != null)\n                {\n                    m_botToTalk.SetWaypointPath(PathName);\n                    m_botToTalk.PatrolMode = MyPatrolMode.CYCLE;\n                    m_botToTalk.SpeedModifier = m_slowdown;\n                    m_botToTalk.Patrol();\n                }\n            }\n\n            if (m_botToTalk != null)\n            {\n                m_botToTalk.LookTarget = null;\n            }\n        }\n\n        void m_botDetector_OnEntityEnter(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (entity == MySession.PlayerShip)\n            {\n                m_botToTalk.LookTarget = MySession.PlayerShip;\n                MyScriptWrapper.Follow(MySession.PlayerShip, m_botToTalk);\n                m_success = true;\n                sender.Off();\n                m_detectorReached = true;\n            }\n        }\n\n        public override bool IsSuccess()\n        {\n            if (m_success)\n                return true;\n\n            if (m_botToTalk != null && Vector3.DistanceSquared(m_botToTalk.GetPosition(), MySession.PlayerShip.GetPosition()) <= m_distanceToTalk * m_distanceToTalk)\n            {\n                MyScriptWrapper.Follow(MySession.PlayerShip, m_botToTalk);\n                m_botToTalk.LookTarget = MySession.PlayerShip;\n                return true;\n            }\n            return false;\n        }\n\n        public override void Unload()\n        {\n            StopFollow();\n\n            MissionEntityIDs.Clear();\n\n            if (m_botToTalk != null)\n            {\n                m_botToTalk.SpeedModifier = 1.0f;\n                m_botToTalk = null;\n\n                if (m_constructorFromName)\n                {\n                    m_botToTalkId = null;\n                }\n            }\n\n            base.Unload();\n            if (m_botDetector != null)\n            {\n                m_botDetector.Off();\n                m_botDetector.OnEntityEnter -= m_botDetector_OnEntityEnter;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/Objectives/MyMultipleObjectives.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing KeenSoftwareHouse.Library.Extensions;\nusing MinerWars.AppCode.Game.Localization;\n\nnamespace MinerWars.AppCode.Game.Missions\n{\n\n    \n     abstract class MyMultipleObjectives : MyObjective\n        {\n            private bool m_displayObjectivesCount;\n            private int m_objectivesCountLastUpdate;\n\n            public MyMultipleObjectives(MyTextsWrapperEnum Name, MyMissionID ID, MyTextsWrapperEnum Description, MyTexture2D Icon, MyMission ParentMission, MyMissionID[] RequiredMissions, MyMissionLocation Location, List<uint> MissionEntityIDs = null, Audio.Dialogues.MyDialogueEnum? successDialogId = null, Audio.Dialogues.MyDialogueEnum? startDialogId = null, bool displayObjectivesCount = true)\n                : base(Name, ID, Description, Icon, ParentMission, RequiredMissions, Location, MissionEntityIDs, successDialogId, startDialogId)\n            {\n                m_displayObjectivesCount = displayObjectivesCount;\n                AdditionalHudInformation = new StringBuilder();\n            }\n\n            [Obsolete]\n            public MyMultipleObjectives(StringBuilder Name, MyMissionID ID, StringBuilder Description, MyTexture2D Icon, MyMission ParentMission, MyMissionID[] RequiredMissions, MyMissionLocation Location, List<uint> MissionEntityIDs = null, Audio.Dialogues.MyDialogueEnum? successDialogId = null, Audio.Dialogues.MyDialogueEnum? startDialogId = null, bool displayObjectivesCount = true)\n                : base(Name, ID, Description, Icon, ParentMission, RequiredMissions, Location, MissionEntityIDs, successDialogId, startDialogId)\n            {\n                m_displayObjectivesCount = displayObjectivesCount;\n                AdditionalHudInformation = new StringBuilder();\n            }\n\n            public override void Load()\n            {\n                base.Load();\n                ReloadAdditionalHubInfo();\n            }\n\n            public override void Update()\n            {\n                base.Update();\n                if (m_objectivesCountLastUpdate != GetObjectivesCompletedCount())\n                {\n                    ReloadAdditionalHubInfo();\n                    m_objectivesCountLastUpdate = GetObjectivesCompletedCount();\n                }\n            }\n\n            protected void ReloadAdditionalHubInfo()\n            {\n                AdditionalHudInformation.Clear();\n                if (m_displayObjectivesCount)\n                {\n                    AdditionalHudInformation.AppendInt32(GetObjectivesCompletedCount());\n                    AdditionalHudInformation.Append('/');\n                    AdditionalHudInformation.AppendInt32(GetObjectivesTotalCount());\n                }\n            }\n\n            protected abstract int GetObjectivesTotalCount();\n            protected abstract int GetObjectivesCompletedCount();\n        }\n    \n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/Objectives/MyMultipleUseObjective.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.HUD;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Audio.Dialogues;\n\nnamespace MinerWars.AppCode.Game.Missions\n{   \n    delegate void ObjectUsedSucces(uint entityID);\n\n\n\n    class MyMultipleUseObjective : MyMultipleObjectives\n    {\n        private MyTextsWrapperEnum m_notificationText;\n        private MyHudNotification.MyNotification m_notification;\n        private bool m_isNearLocation;\n\n        private int m_requiredTime;\n        private int m_elapsedTime;\n\n        private bool m_inUse;\n\n\n        private MyGuiScreenUseProgressBar m_useProgress;\n        private MyTextsWrapperEnum m_useCaption;\n        private MyTextsWrapperEnum m_useText;\n        private EventHandler m_startingGeneratorProgressScreen_OnCanceledHandler;\n        private EventHandler m_startingGeneratorProgressScreen_OnSuccessHandler;\n\n        private MySoundCuesEnum m_progressCue, m_cancelCue;\n        private int m_totalCount;\n        private uint m_usingEntityId ;\n        private MyUseObjectiveType m_objectiveType;\n        public event ObjectUsedSucces OnObjectUsedSucces;\n\n        public float? RadiusOverride;\n\n        private List<uint> m_entitiesToUse = new List<uint>();\n\n        public MyMultipleUseObjective(\n            MyTextsWrapperEnum name,\n            MyMissionID id,\n            MyTextsWrapperEnum description,\n            MyTexture2D icon,\n            MyMission parentMission,\n            MyMissionID[] requiredMissions,\n            MyTextsWrapperEnum notificationText,\n            MyTextsWrapperEnum useCaption,\n            MyTextsWrapperEnum useText,\n            int requiredTime,\n            List<uint> MissionEntityIDs,\n            MyUseObjectiveType objectiveType = MyUseObjectiveType.Hacking,\n\n\n            MyDialogueEnum? startDialogId = null)\n            : base(name, id, description, icon, parentMission, requiredMissions, null, MissionEntityIDs, startDialogId: startDialogId)\n        {\n            m_notificationText = notificationText;\n            m_useText = useText;\n            m_useCaption = useCaption;\n            m_requiredTime = requiredTime;\n\n            m_objectiveType = objectiveType;\n        }\n\n   \n        private void InitSounds(MyUseObjectiveType objectiveType)\n        {\n            switch (objectiveType)\n            {\n                case MyUseObjectiveType.Activating:\n                    m_progressCue = MySoundCuesEnum.SfxProgressActivation;\n                    m_cancelCue = MySoundCuesEnum.SfxCancelActivation;\n                    break;\n                case MyUseObjectiveType.Building:\n                    m_progressCue = MySoundCuesEnum.SfxProgressBuild;\n                    m_cancelCue = MySoundCuesEnum.SfxCancelBuild;\n                    break;\n                case MyUseObjectiveType.Hacking:\n                    m_progressCue = MySoundCuesEnum.SfxProgressHack;\n                    m_cancelCue = MySoundCuesEnum.SfxCancelHack;\n                    break;\n                case MyUseObjectiveType.Repairing:\n                    m_progressCue = MySoundCuesEnum.SfxProgressRepair;\n                    m_cancelCue = MySoundCuesEnum.SfxCancelRepair;\n                    break;\n                case MyUseObjectiveType.Taking:\n                    m_progressCue = MySoundCuesEnum.SfxProgressTake;\n                    m_cancelCue = MySoundCuesEnum.SfxCancelTake;\n                    break;\n                case MyUseObjectiveType.Putting:\n                    m_progressCue = MySoundCuesEnum.SfxProgressPut;\n                    m_cancelCue = MySoundCuesEnum.SfxCancelPut;\n                    break;\n            }\n        }\n\n\n        public override void Unload()\n        {\n            base.Unload();\n            m_useProgress.OnCanceled -= m_startingGeneratorProgressScreen_OnCanceledHandler;\n            m_useProgress.OnSuccess -= m_startingGeneratorProgressScreen_OnSuccessHandler;\n        }\n\n        public override void Load()\n        {\n            base.Load();\n            m_entitiesToUse = new List<uint>();\n            m_entitiesToUse.AddRange(MissionEntityIDs);\n            InitSounds(m_objectiveType);\n            m_totalCount = MissionEntityIDs.Count;\n            m_notification = new MyHudNotification.MyNotification(m_notificationText, MyHudConstants.MISSION_FONT, MyHudNotification.DONT_DISAPEAR,null, new object[] { \"\" });\n            m_startingGeneratorProgressScreen_OnCanceledHandler = new EventHandler(OnCanceledHandler);\n            m_startingGeneratorProgressScreen_OnSuccessHandler = new EventHandler(OnSuccessHandler);\n\n            m_useProgress = new MyGuiScreenUseProgressBar(m_useCaption, m_useText, 0f, m_progressCue, m_cancelCue, MyGameControlEnums.USE, 0, m_requiredTime, 0);\n            m_useProgress.OnCanceled += m_startingGeneratorProgressScreen_OnCanceledHandler;\n            m_useProgress.OnSuccess += m_startingGeneratorProgressScreen_OnSuccessHandler;\n\n\n            foreach(var id in MissionEntityIDs)\n            {\n               SetLocationVisibility(true,MyScriptWrapper.GetEntity(id),MyGuitargetMode.Objective);\n            }\n\n            ReloadAdditionalHubInfo();\n        }\n\n\n       \n\n        public override bool IsSuccess()\n        {\n            uint eId = 0;\n            m_isNearLocation = IsNearSomeLocation(ref eId);\n\n            if (m_isNearLocation)\n            {\n                m_notification.SetTextFormatArguments(new object[] { MyGuiManager.GetInput().GetGameControlTextEnum(MyGameControlEnums.USE) });\n                m_notification.Appear();\n                MyHudNotification.AddNotification(m_notification);\n            }\n            else\n            {\n                m_notification.Disappear();\n            }\n\n            return false;\n        }\n\n\n\n        private bool IsNearSomeLocation(ref uint entityId)\n        {\n            foreach (var entityID in m_entitiesToUse)\n            {\n                MyEntity entity;\n                MyEntities.TryGetEntityById(new MyEntityIdentifier(entityID), out entity);\n                if (entity!=null)\n                {\n                    var boundingSphere = MySession.PlayerShip.WorldVolume;\n                    if (RadiusOverride.HasValue)\n                    {\n                        boundingSphere.Radius = RadiusOverride.Value;\n                    }\n                    \n                    if(entity.GetIntersectionWithSphere(ref boundingSphere))\n                    {\n                        if (entity.EntityId != null) entityId = entity.EntityId.Value.NumericValue;\n                        return true;\n                    }\n                }\n            }\n\n            return false;\n        }\n\n        /*\n        public override void Success()\n        {\n            m_notification.Disappear();\n            base.Success();\n        }\n        */\n\n        private void UseSuccess(uint entityID)\n        {\n            if (entityID != 0 && m_entitiesToUse.Remove(entityID))\n            {\n                SetLocationVisibility(false, MyScriptWrapper.GetEntity(entityID), MyGuitargetMode.Objective);\n                m_notification.Disappear();\n                \n                SetLocationVisibility(false, MyScriptWrapper.GetEntity(entityID), MyGuitargetMode.Objective);\n                MyScriptWrapper.RemoveEntityMark(MyScriptWrapper.GetEntity(entityID));\n                if (OnObjectUsedSucces != null)\n                {\n                    OnObjectUsedSucces(entityID);\n                }\n                if (m_entitiesToUse.Count == 0) Success();\n            }\n        }\n\n\n\n        public override void Update()\n        {\n            base.Update();\n\n            uint entityId = 0;\n            if (MyGuiManager.GetInput().GetGameControl(MyGameControlEnums.USE).IsPressed() && IsNearSomeLocation(ref entityId))\n            {\n                if (!m_inUse)\n                {\n                    StartUse();\n                    m_usingEntityId = entityId;\n                }\n\n\n                //m_elapsedTime += MyConstants.PHYSICS_STEP_SIZE_IN_MILLISECONDS;\n                //m_useProgress.UpdateValue((float)(m_elapsedTime) / (float)m_requiredTime);\n\n                //if (m_elapsedTime >= m_requiredTime)\n                //{\n                //    FinishUse();\n                //}\n            }\n        }\n\n\n\n        private void OnCanceledHandler(object sender, EventArgs e)\n        {\n            FailUse();\n        }\n\n        private void OnSuccessHandler(object sender, EventArgs e)\n        {\n            FinishUse();\n        }\n\n        private void StartUse()\n        {\n            m_inUse = true;\n            if (m_requiredTime == 0)\n            {\n                FinishUse();\n                return;\n            }\n            else\n            {\n                m_useProgress.Reset();\n                MyGuiManager.AddScreen(m_useProgress);\n            }\n        }\n\n        private void FinishUse()\n        {\n            m_inUse = false;\n            \n            UseSuccess(m_usingEntityId);\n        }\n\n        public void FailUse()\n        {\n            m_inUse = false;\n            m_elapsedTime = 0;\n            //m_useProgress.CloseScreenNow();\n        }\n\n\n        protected override int GetObjectivesTotalCount()\n        {\n            return m_totalCount;\n        }\n\n        protected override int GetObjectivesCompletedCount()\n        {\n            return (m_totalCount - m_entitiesToUse.Count);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/Objectives/MyObjective.cs",
    "content": "﻿#region Using\n\nusing System;\nusing System.Collections.Generic;\nusing System.Text;\nusing MinerWarsMath.Graphics;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.HUD;\nusing MinerWars.AppCode.Game.Journal;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.GUI.Helpers;\nusing MinerWars.CommonLIB.AppCode.Generics;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Prefabs;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.AppCode.Game.Missions.Utils;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing System.Diagnostics;\nusing MinerWars.AppCode.Game.Audio.Dialogues;\nusing SysUtils.Utils;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.AppCode.Game.Sessions;\n\n#endregion\n\nnamespace MinerWars.AppCode.Game.Missions\n{\n    class MyObjective : MyMissionBase\n    {\n        public bool CanBeSkipped { get; set; }\n        public bool FailIfEntityDestroyed { get; set; }\n        public bool MakeEntityIndestructible { get; set; }\n        public bool ShowNotificationOnSuccess = true;\n        public bool MarkMissionEntities = false;\n\n        public event MissionHandler OnSuccessDialogueStarted;\n\n        [Obsolete]\n        public MyObjective( StringBuilder Name, \n                            MyMissionID ID, \n                            StringBuilder Description, \n                            MyTexture2D Icon, \n                            MyMission ParentMission, \n                            MyMissionID[] RequiredMissions, \n                            MyMissionLocation Location, \n                            List<uint> MissionEntityIDs = null, \n                            MyDialogueEnum? successDialogId = null, \n                            MyDialogueEnum? startDialogId = null,\n                            MyActorEnum[] requiredActors = null,\n                            float? radiusOverride = null)\n        {\n            this.NameTemp = Name;\n            this.ID = ID;\n            this.DescriptionTemp = Description;\n            this.Icon = Icon;\n            this.ParentMission = ParentMission;\n            this.RequiredMissions = RequiredMissions;\n            this.Location = Location;\n            this.MissionEntityIDs = new List<uint>();\n            this.SuccessDialogId = successDialogId;\n            this.StartDialogId = startDialogId;\n            this.m_radiusOverride = radiusOverride;\n            if (MissionEntityIDs != null)\n            {\n                this.MissionEntityIDs.AddRange(MissionEntityIDs);\n            }\n            if (requiredActors != null)\n            {\n                this.RequiredActors = requiredActors;\n            }\n            RequiresDrone = false;\n            CanBeSkipped = true;\n            FailIfEntityDestroyed = true;\n            MakeEntityIndestructible = true;\n        }\n\n        public MyObjective( MyTextsWrapperEnum name,\n                            MyMissionID missionId,\n                            MyTextsWrapperEnum description,\n                            MyTexture2D icon,\n                            MyMission parentMission,\n                            MyMissionID[] requiredMissions,\n                            MyMissionLocation location,\n                            List<uint> missionEntityIDs = null,\n                            MyDialogueEnum? successDialogId = null,\n                            MyDialogueEnum? startDialogId = null,\n                            MyActorEnum[] requiredActors = null,\n                            float? radiusOverride = null)\n            : this(MyTextsWrapper.Get(name), missionId, MyTextsWrapper.Get(description), icon, parentMission, requiredMissions, location, missionEntityIDs, successDialogId,\n            startDialogId, requiredActors, radiusOverride)\n\n        {\n        }\n\n        public MyMission ParentMission { get; private set; }\n\n        public static bool SkipSubmission = false;\n        public bool SaveOnSuccess = false;\n        public StringBuilder AdditionalHudInformation { get; protected set; }\n        bool m_showAsOptional = false;\n        int m_dialogDelayToSkipForTesting = 1000; //ms\n\n        protected bool SkipDialogEnabled;\n        public bool ShowAsOptional\n        {\n            get\n            {\n                return m_showAsOptional;\n            }\n            set\n            {\n                m_showAsOptional = value;\n                GuiTargetMode = value ? MyGuitargetMode.ObjectiveOptional : MyGuitargetMode.Objective;\n            }\n        }\n\n\n        private bool m_succesDialogStarted = false;\n        private bool m_successDialogFinished = false;\n        private int m_objectiveStartTime = 0;\n        bool m_destinationReached = false;\n        private MyHudNotification.MyNotification m_learnToUseDrone  ;\n\n        public bool RequiresDrone { get; set; }\n\n        public override void Load()\n        {\n            m_succesDialogStarted = false;\n            m_successDialogFinished = false;\n            if(RequiresDrone)\n            {\n                MyGuiScreenGamePlay.Static.CameraContrlolledObjectChanged += Static_CameraContrlolledObjectChanged;\n                if(MyGuiScreenGamePlay.Static.CameraAttachedTo != MyCameraAttachedToEnum.Drone)\n                {\n                    AddDroneNotification();\n                }\n            }\n            m_objectiveStartTime = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n            MySession.Static.EventLog.AddSubmissionAvailable(ID);\n\n            MyMwcLog.WriteLine(\"Submission \" + NameTemp + \" loaded.\");\n            base.Load();\n\n            // Clear player notifications (so that ie. Travel notification can change color immediately)\n            MySession.PlayerShip.ClearNotifications();\n\n            if (SuccessDialogId != null)\n            {\n                MyDialogues.OnDialogueFinished += OnDialogueFinished;\n            }\n\n            MyHud.ShowGPSPathToNextObjective(false);\n\n\n            if (MarkMissionEntities)\n            {\n                foreach (var item in MissionEntityIDs)\n                {\n                    SetLocationVisibility(true, MyScriptWrapper.GetEntity(item), MyGuitargetMode.Objective);\n                }\n            }\n        }\n\n        private void Static_CameraContrlolledObjectChanged(MyEntity e)\n        {\n            if ((e is MyDrone)) RemoveDroneNotification();\n            else AddDroneNotification();\n        }\n\n        private void AddDroneNotification()\n        {\n            m_learnToUseDrone = MyScriptWrapper.CreateNotification(\n                MyTextsWrapperEnum.HowToControlDrone,\n                MyHudConstants.MISSION_FONT, 0,\n                new object[] { MyGuiManager.GetInput().GetGameControlTextEnum(MyGameControlEnums.DRONE_DEPLOY), MyGuiManager.GetInput().GetGameControlTextEnum(MyGameControlEnums.DRONE_CONTROL) }\n                );\n            MyScriptWrapper.AddNotification(m_learnToUseDrone);\n        }\n        private void RemoveDroneNotification()\n        {\n            if(m_learnToUseDrone!=null)m_learnToUseDrone.Disappear();\n        }\n\n        void OnDialogueFinished(Audio.Dialogues.MyDialogueEnum dialogue, bool interrupted)\n        {\n            if (dialogue == SuccessDialogId)\n            {\n                m_successDialogFinished = true;\n                Success();\n            }\n        }\n\n        public override void Unload()\n        {\n            MyMwcLog.WriteLine(\"Submission \" + NameTemp + \" unload.\");\n            base.Unload();\n            m_objectiveStartTime = 0;\n\n            MyDialogues.OnDialogueFinished -= OnDialogueFinished;\n            if(m_learnToUseDrone!=null) m_learnToUseDrone.Disappear();\n            MyGuiScreenGamePlay.Static.CameraContrlolledObjectChanged -= Static_CameraContrlolledObjectChanged;\n\n            if (MarkMissionEntities)\n            {\n                foreach (var item in MissionEntityIDs)\n                {\n                    SetLocationVisibility(false, MyScriptWrapper.GetEntity(item), MyGuitargetMode.Objective);\n                }\n            }\n        }\n\n        public int GetObjectiveStartTime()\n        {\n            return m_objectiveStartTime;\n        }\n\n        public override void Update()\n        {\n            base.Update();\n\n            if (!m_destinationReached && IsPlayerNearLocation())\n            {\n                DestinationReached();\n            }\n\n            if ((IsSuccess() || (SkipSubmission && (CanBeSkipped || MyFakes.TEST_MISSION_GAMEPLAY)))\n                // complete submission only if player is in game play screen (In some missions there's possibility that mission will complete and player is in MainMenu,\n                // progress dialog which follows will break gameplay)\n                && MyGuiScreenGamePlay.Static != null && MyGuiScreenGamePlay.Static == MyGuiManager.GetScreenWithFocus())\n            {\n                if (SkipSubmission) MyDialogues.Stop();\n                SkipSubmission = false;\n                Success();\n                \n            }\n        }\n\n        public virtual void DestinationReached()\n        {\n            m_destinationReached = true;\n            MyAudio.AddCue2D(MySoundCuesEnum.HudDestinationReached);\n        }\n\n        public override void Success()\n        {\n            if (this.ParentMission.MarkedForUnload)\n                return;\n\n            if (MyMultiplayerGameplay.IsHosting && !MySession.Static.EventLog.IsMissionFinished(ID))\n            {\n                MyMultiplayerGameplay.Static.SendMissionProgress(this, CommonLIB.AppCode.Networking.Multiplayer.MyMissionProgressType.Success);\n            }\n            \n            MySession.Static.EventLog.SubmissionFinished(ID);\n            \n            SetLocationVisibility(false);\n            if (Location != null)\n            {\n                Location.Entity = null;\n            }\n\n            bool canPlaySuccessDialogue = (!MyFakes.ENABLE_AUTOSKIPPING_ENDMISSION_DIALOGUE || SkipDialogEnabled);\n\n            if (MyFakes.TEST_MISSION_GAMEPLAY && MyFakes.TEST_MISSION_GAMEPLAY_AUTO_KILLS == 0)\n            {\n                m_dialogDelayToSkipForTesting -= MyConstants.PHYSICS_STEP_SIZE_IN_MILLISECONDS;\n                if (m_dialogDelayToSkipForTesting <= 0)\n                {\n                    //Stop success dialogue after one second. This delay should be enough to spawn bots etc.\n                    canPlaySuccessDialogue = false;\n                }\n            }\n            else if (MyFakes.TEST_MISSION_GAMEPLAY)\n                canPlaySuccessDialogue = false;\n                \n\n            if (canPlaySuccessDialogue)\n            {\n                if (m_succesDialogStarted && !m_successDialogFinished) // We are waiting to finish dialog\n                    return;\n                if (!m_successDialogFinished && SuccessDialogId != null) // We succeded but still did not played succes dialog\n                {\n                    m_succesDialogStarted = true;\n                    \n                    if (OnSuccessDialogueStarted != null)\n                    {\n                        OnSuccessDialogueStarted(this);\n                    }\n\n                    MyScriptWrapper.PlayDialogue(SuccessDialogId.Value);\n                    return;\n                }\n            }\n            \n            MyMwcLog.WriteLine(\"Submission \" + NameTemp + \" success.\");\n\n\n            base.Success();\n                        \n            MyAudio.AddCue2D(MySoundCuesEnum.HudObjectiveComplete);\n            ParentMission.ObjectiveCompleted(this);\n\n            MyMissions.SaveName = this.ParentMission.NameTemp.ToString() + \": \" + (NameTemp != null ? NameTemp.ToString() : \"(null)\") + (SaveOnSuccess ? \"\" : \" *\");\n            MyMissions.NeedsSave |= SaveOnSuccess;\n        }\n\n        public override void Fail(MyTextsWrapperEnum? customMessage = null)\n        {\n            base.Fail(customMessage);\n\n            MyMwcLog.WriteLine(\"Submission \" + NameTemp + \" fail. \" + (customMessage.HasValue ? \" (\" + MyTextsWrapper.Get(customMessage.Value).ToString() + \")\" : \"\"));\n\n            ParentMission.Fail(customMessage);\n        }\n\n        public override bool IsAvailable()\n        {\n            return (MyMissions.ActiveMission == ParentMission) && base.IsAvailable();\n        }\n\n        public virtual bool IsSuccess()\n        {\n            return IsPlayerNearLocation();\n        }\n\n        public override bool IsMissionEntityNotification(MyEntity entity, MySmallShipInteractionActionEnum action)\n        {\n            //return base.IsMissionEntityNotification(entity, action);\n            return base.IsMissionEntity(entity);\n         \n        }\n\n        public override void SetLocationVisibility(bool visible)\n        {\n            base.SetLocationVisibility(visible);\n        }\n\n        public bool IsPlayerNearLocation()\n        {\n            if (HasLocationEntity())\n            {\n\n                if (MyGuiScreenGamePlay.Static.ControlledDrone != null)\n                {\n                    var boundingSphere = MyGuiScreenGamePlay.Static.ControlledDrone.WorldVolume;\n                    if (m_radiusOverride.HasValue)\n                    {\n                        boundingSphere.Radius = m_radiusOverride.Value;\n                    }\n                    bool isNear = Location.Entity.GetIntersectionWithSphere(ref boundingSphere);\n                    if (isNear)\n                        return true;\n                }\n                {\n                    var boundingSphere = MySession.PlayerShip.WorldVolume;\n                    if (m_radiusOverride.HasValue)\n                    {\n                        boundingSphere.Radius = m_radiusOverride.Value;\n                    }\n                    return Location.Entity.GetIntersectionWithSphere(ref boundingSphere);\n                }\n            }\n            return false;\n        }\n    }\n\n\n\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/Objectives/MyObjectiveDefend.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.Localization;\n\nnamespace MinerWars.AppCode.Game.Missions\n{\n    class MyObjectiveDefend : MyObjectiveDestroy\n    {\n        private List<uint> m_toDefend;\n\n        public MyObjectiveDefend(StringBuilder name, MyMissionID id, StringBuilder description, MyTexture2D icon, MyMission parentMission, MyMissionID[] requiredMissions, List<uint> toKill, List<uint> toDefend, bool displayObjectivesCount = true)\n            : this(name, id, description, icon, parentMission, requiredMissions, toKill, new List<uint>(), toDefend, true, displayObjectivesCount)\n        {\n        }\n\n        public MyObjectiveDefend(StringBuilder name, MyMissionID id, StringBuilder description, MyTexture2D icon, MyMission parentMission, MyMissionID[] requiredMissions, List<uint> toKill, List<uint> toKillSpawnpoints, List<uint> toDefend, bool showMarks = true, bool displayObjectivesCount = true)\n            : base(name, id, description, icon, parentMission, requiredMissions, toKill, toKillSpawnpoints, showMarks, displayObjectivesCount)\n        {\n            m_toDefend = toDefend;\n        }\n\n        public override bool IsSuccess()\n        {\n            return base.IsSuccess() && IsAllEntitiesToDefendAlive();\n        }\n\n        public override void Update()\n        {\n            base.Update();\n            if (!IsAllEntitiesToDefendAlive())\n            {\n                Fail(MyTextsWrapperEnum.Fail_ObjectiveDestroyed);\n            }\n        }\n\n        private bool IsAllEntitiesToDefendAlive()\n        {\n            foreach (var entityId in m_toDefend)\n            {\n                if (MyScriptWrapper.IsEntityDead(entityId))\n                {\n                    return false;\n                }\n            }\n            return true;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/Objectives/MyObjectiveDestroy.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.HUD;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.Audio.Dialogues;\nusing MinerWars.AppCode.Game.Localization;\nusing System.Diagnostics;\n\nnamespace MinerWars.AppCode.Game.Missions\n{\n    // A submission to destroy a list of entities.\n    class MyObjectiveDestroy : MyMultipleObjectives\n    {\n        private List<uint> m_toKill;\n        private List<uint> m_toKillSpawnpoints;\n        private bool m_showMarks;\n\n        private int m_destroyTotalCount;\n        private int m_destroyCount;\n\n        public int ToDestroyCount = 0;\n        public string DestroyCaption;\n\n        [Obsolete]\n        public MyObjectiveDestroy(StringBuilder name, MyMissionID id, StringBuilder description, MyTexture2D icon, MyMission parentMission, MyMissionID[] requiredMissions, List<uint> toKill, bool displayObjectivesCount = true, MyDialogueEnum? successDialogID = null, MyDialogueEnum? startDialogID = null)\n            : this(name, id, description, icon, parentMission, requiredMissions, toKill, new List<uint>(), true, displayObjectivesCount, successDialogID, startDialogID)\n\n        {\n        }\n\n        [Obsolete]\n        public MyObjectiveDestroy(StringBuilder name, MyMissionID id, StringBuilder description, MyTexture2D icon, MyMission parentMission, MyMissionID[] requiredMissions, List<uint> toKill, List<uint> toKillSpawnpoints, bool showMarks = true, bool displayObjectivesCount = true, MyDialogueEnum? successDialogID = null, MyDialogueEnum? startDialogID = null)\n            : base(name, id, description, icon, parentMission, requiredMissions, null, displayObjectivesCount: displayObjectivesCount, successDialogId: successDialogID, startDialogId: startDialogID)\n        {\n            m_toKill = toKill;\n            m_toKillSpawnpoints = toKillSpawnpoints;\n            m_showMarks = showMarks;\n            FailIfEntityDestroyed = false;\n            MakeEntityIndestructible = false;\n        }\n\n\n        public MyObjectiveDestroy(MyTextsWrapperEnum name, MyMissionID id, MyTextsWrapperEnum description, MyTexture2D icon, MyMission parentMission, MyMissionID[] requiredMissions, List<uint> toKill, bool displayObjectivesCount = true, MyDialogueEnum? successDialogID = null, MyDialogueEnum? startDialogID = null)\n            : this(name, id, description, icon, parentMission, requiredMissions, toKill, new List<uint>(), true, displayObjectivesCount, successDialogID, startDialogID)\n        {\n        }\n\n        public MyObjectiveDestroy(MyTextsWrapperEnum name, MyMissionID id, MyTextsWrapperEnum description, MyTexture2D icon, MyMission parentMission, MyMissionID[] requiredMissions, List<uint> toKill, List<uint> toKillSpawnpoints, bool showMarks = true, bool displayObjectivesCount = true, MyDialogueEnum? successDialogID = null, MyDialogueEnum? startDialogID = null)\n            : base(name, id, description, icon, parentMission, requiredMissions, null, displayObjectivesCount: displayObjectivesCount, successDialogId: successDialogID, startDialogId: startDialogID)\n        {\n            m_toKill = toKill;\n            m_toKillSpawnpoints = toKillSpawnpoints;\n            m_showMarks = showMarks;\n            FailIfEntityDestroyed = false;\n            MakeEntityIndestructible = false;\n        }\n\n        public void AddToKill(uint toKill)\n        {\n            if (!m_toKill.Contains(toKill))\n            {\n                m_toKill.Add(toKill);\n                m_destroyTotalCount++;\n                \n                MyEntity entity = MyScriptWrapper.GetEntity(toKill);\n                System.Diagnostics.Debug.Assert(!(entity is MySpawnPoint));\n                MarkAsDestroy(entity);\n            }\n        }\n\n        protected override int GetObjectivesCompletedCount()\n        {\n            return m_destroyCount;\n        }\n\n        protected override int GetObjectivesTotalCount()\n        {\n            return m_destroyTotalCount;\n        }\n\n        public override void Load()\n        {\n            Init();\n            base.Load();\n\n            MyScriptWrapper.EntityDeath += OnEntityDeath;\n            MyScriptWrapper.OnSpawnpointBotSpawned += OnSpawnpointBotSpawned;\n        }\n\n\n\n        void OnSpawnpointBotSpawned(MyEntity entity1, MyEntity entity2)\n        {\n            if (m_showMarks && m_toKillSpawnpoints != null)\n            {\n                foreach (var spawnPointId in m_toKillSpawnpoints)\n                {\n                    foreach (var spawnPointBot in MyScriptWrapper.GetSpawnPointBots(spawnPointId))\n                    {\n                        if (spawnPointBot.Ship == entity2)\n                        {\n                            MarkAsDestroy(entity2);\n                            break;\n                        }\n                    }\n                }\n            }\n        }\n\n        private void MarkAsDestroy(MyEntity entity)\n        {\n            string destroyCaption = DestroyCaption ?? (HudName!=null ? HudNameTemp.ToString() : null) ?? MyTextsWrapper.Get(MyTextsWrapperEnum.Destroy).ToString();\n            if (entity is MySmallShipBot)\n                destroyCaption = \"\";\n\n            MyScriptWrapper.MarkEntity(entity, destroyCaption, guiTargetMode: MyGuitargetMode.Enemy, flags: MyHudIndicatorFlagsEnum.SHOW_BORDER_INDICATORS | MyHudIndicatorFlagsEnum.SHOW_DISTANCE | MyHudIndicatorFlagsEnum.SHOW_HEALTH_BARS | MyHudIndicatorFlagsEnum.SHOW_TEXT);\n        }\n\n        /// <summary>\n        /// Inits destroy counts and hud markers\n        /// </summary>\n        private void Init()\n        {\n            // show asserts for ill defined spawnpoints\n            if (m_toKillSpawnpoints != null)\n            {\n                foreach (var spawnpointId in m_toKillSpawnpoints)\n                {\n                    MySpawnPoint spawnpointEntity;\n                    if (MyEntities.TryGetEntityById(new MyEntityIdentifier(spawnpointId), out spawnpointEntity))\n                    {\n                        Debug.Assert(spawnpointEntity.Activated, \"DestroyObjective: spawnpointEntity.Activated == false\");\n                    }\n                    else\n                    {\n                        Debug.Assert(spawnpointEntity != null, \"DestroyObjective - bad spawnpoint\");\n                    }\n                }\n            }\n\n            m_destroyTotalCount = 0;\n            m_destroyCount = 0;\n            if (m_toKill != null)\n            {\n                foreach (var entityId in m_toKill)\n                {\n                    if (!MyScriptWrapper.IsEntityDead(entityId))\n                    {\n                        MyEntity entity = MyScriptWrapper.GetEntity(entityId);\n                        if (m_showMarks)\n                        {\n                            MarkAsDestroy(entity);\n                        }\n                    }\n                    else\n                    {\n                        m_destroyCount++;\n                    }\n                    m_destroyTotalCount++;\n                }\n            }\n            if (m_toKillSpawnpoints != null)\n            {\n                foreach (var entityId in m_toKillSpawnpoints)\n                {\n                    foreach (var bot in MyScriptWrapper.GetSpawnPointBots(entityId))\n                    {\n                        if (bot.Ship != null && !bot.Ship.IsDead())\n                        {\n                            if (m_showMarks)\n                            {\n                                MarkAsDestroy(bot.Ship);\n                            }\n                        }\n                    }\n                    MySpawnPoint spawnPoint = MyScriptWrapper.GetEntity(entityId) as MySpawnPoint;\n                    //int totalForThisSpawnpoint = (spawnPoint.MaxSpawnCount <= 0) ? spawnPoint.GetBots().Count : spawnPoint.MaxSpawnCount;\n                    int totalForThisSpawnpoint = spawnPoint.MaxSpawnCount;\n                    m_destroyTotalCount += totalForThisSpawnpoint;\n                    if (spawnPoint.IsActive())\n                    {\n                        int botsToKillCount = spawnPoint.LeftToSpawn + spawnPoint.GetShipCount();\n                        m_destroyCount += totalForThisSpawnpoint - botsToKillCount;\n                    }\n                }\n            }\n        }\n\n        public override void Unload()\n        {\n            base.Unload();\n            MyScriptWrapper.EntityDeath -= OnEntityDeath;\n            MyScriptWrapper.OnSpawnpointBotSpawned -= OnSpawnpointBotSpawned;\n\n        }\n\n        public override bool IsSuccess()\n        {\n            if (ToDestroyCount > 0) return m_destroyCount >= ToDestroyCount;\n            return m_destroyCount >= m_destroyTotalCount;\n        }\n\n        public override void Success()\n        {\n            base.Success();\n\n            if (m_toKill != null)\n            {\n                foreach (var entityId in m_toKill)\n                {\n                    if (!MyScriptWrapper.IsEntityDead(entityId))\n                    {\n                        MyEntity entity = MyScriptWrapper.GetEntity(entityId);\n                        MyScriptWrapper.RemoveEntityMark(entity);\n                    }\n                }\n            }\n        }\n\n        public override bool IsMissionEntity(MyEntity target)\n        {\n\n            if (base.IsMissionEntity(target)) return true;\n            if (!target.EntityId.HasValue) return false;\n\n            bool isSpawnPointBot = false;\n            if (m_toKillSpawnpoints != null && target is MySmallShipBot)\n            {\n                foreach (var entityId in m_toKillSpawnpoints)\n                {\n                    foreach (var spawnPointBot in MyScriptWrapper.GetSpawnPointBots(entityId))\n                    {\n                        if (spawnPointBot.Ship == target as MySmallShipBot)\n                        {\n                            isSpawnPointBot = true;\n                            break;\n                        }\n                    }\n                }\n            }\n            return /*m_showMarks &&*/ (m_toKill != null && m_toKill.Contains(target.EntityId.Value.NumericValue) || isSpawnPointBot);\n        }\n\n        void OnEntityDeath(MyEntity deadEntity, MyEntity killedBy)\n        {\n            EntityDisapeared(deadEntity);\n        }\n\n\n\n        private void EntityDisapeared(MyEntity entity)\n        {\n            if (entity.EntityId.HasValue)\n            {\n                if (m_toKill != null && m_toKill.Contains(entity.EntityId.Value.NumericValue))\n                {\n                    m_destroyCount++;\n                    MyScriptWrapper.RemoveEntityMark(entity);\n                }\n                else if (m_toKillSpawnpoints != null)\n                {\n                    foreach (var spawnPointId in m_toKillSpawnpoints)\n                    {\n                        foreach (var spawnPointBot in MyScriptWrapper.GetSpawnPointBots(spawnPointId))\n                        {\n                            if (spawnPointBot.Ship == entity)\n                            {\n                                m_destroyCount++;\n                                MyScriptWrapper.RemoveEntityMark(entity);\n                                break;\n                            }\n                        }\n                    }\n                }\n            }\n        }\n\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/Objectives/MyObjectiveDialog.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Audio.Dialogues;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.Localization;\n\nnamespace MinerWars.AppCode.Game.Missions\n{\n    class MyObjectiveDialog : MyObjective\n    {\n        public MyObjectiveDialog(MyMissionID id, MyTexture2D icon, MyMission parentMission, MyMissionID[] requiredMissions, Audio.Dialogues.MyDialogueEnum? dialogId = null) \n            : base(MyTextsWrapperEnum.Null, id, MyTextsWrapperEnum.Null, icon, parentMission, requiredMissions, null, null, dialogId, null)\n        {\n            ShowNotificationOnSuccess = false;\n        }\n\n        public MyObjectiveDialog(MyTextsWrapperEnum text, MyMissionID id, MyTextsWrapperEnum description, MyTexture2D icon, MyMission parentMission, MyMissionID[] requiredMissions, Audio.Dialogues.MyDialogueEnum? dialogId = null)\n            : base(text, id, description, icon, parentMission, requiredMissions, null, null, dialogId, null)\n        {\n            ShowNotificationOnSuccess = false;\n        }\n\n        [Obsolete]\n        public MyObjectiveDialog(StringBuilder text, MyMissionID id, StringBuilder description, MyTexture2D icon, MyMission parentMission, MyMissionID[] requiredMissions, Audio.Dialogues.MyDialogueEnum? dialogId = null)\n            : base(text, id, description, icon, parentMission, requiredMissions, null, null, dialogId, null)\n        {\n            ShowNotificationOnSuccess = false;\n        }\n\n        public override bool IsSuccess()\n        {\n            return true;\n        }\n\n\n        public override void Success()\n        {\n            base.Success();\n        }\n\n        public void SkipDialog()\n        {\n            MyDialogues.Stop();\n            SkipDialogEnabled = true;\n            Success();\n        }\n\n        public override void Update()\n        {\n            base.Update();\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/Objectives/MyObjectiveDisablePrefabs.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.Prefabs;\nusing MinerWars.AppCode.Game.Audio.Dialogues;\n\nnamespace MinerWars.AppCode.Game.Missions\n{\n    class MyObjectiveDisablePrefabs : MyMultipleObjectives\n    {\n        private List<uint> m_toDisable;\n        private int m_disabledPrefabsCount;\n        private bool m_markObjectsToDisable;\n\n        public MyObjectiveDisablePrefabs(MyTextsWrapperEnum name, MyMissionID id, MyTextsWrapperEnum description, MyTexture2D icon, MyMission parentMission, \n                MyMissionID[] requiredMissions, List<uint> toDisable, List<uint> disableBy, bool displayObjectivesCount = true, \n                bool markObjectsToDisable = true, MyDialogueEnum? successDialogId = null, MyDialogueEnum? startDialogId = null)\n            : base(name, id, description, icon, parentMission, requiredMissions, null, disableBy, successDialogId, startDialogId,  displayObjectivesCount: displayObjectivesCount)\n        {\n            m_toDisable = toDisable;\n            m_markObjectsToDisable = markObjectsToDisable;\n            RequiredEntityIDs.AddRange(toDisable);\n        }\n\n        protected override int GetObjectivesTotalCount()\n        {\n            return m_toDisable.Count;\n        }\n\n        protected override int GetObjectivesCompletedCount()\n        {\n            return m_disabledPrefabsCount;\n        }\n\n        public override void Load()\n        {\n            RecalculatedDisabledPrefabsCount();\n            base.Load();\n            if (m_markObjectsToDisable){\n                foreach (var entityId in m_toDisable)\n                {\n                    var prefab = MyScriptWrapper.GetPrefab(entityId);\n                    if (prefab != null && prefab.Enabled)\n                        MyScriptWrapper.MarkEntity(prefab, MyTextsWrapper.Get(MyTextsWrapperEnum.Disable).ToString());\n                }\n            }\n            MyScriptWrapper.EntityClosing += OnEntityClosing;\n        }\n\n        public override void Unload()\n        {\n            base.Unload();\n\n            MyScriptWrapper.EntityClosing -= OnEntityClosing;\n        }\n\n        private void RecalculatedDisabledPrefabsCount()\n        {\n            m_disabledPrefabsCount = 0;\n            foreach (var entityId in m_toDisable)\n            {\n                var prefab = MyScriptWrapper.TryGetPrefab(entityId);\n                if (prefab == null || !prefab.Enabled)\n                {\n                    m_disabledPrefabsCount++;\n                }\n            }\n        }\n\n        public override void Update()\n        {\n            base.Update();\n            RecalculatedDisabledPrefabsCount();\n        }\n\n        public override bool IsSuccess()\n        {\n            //foreach (var entityId in m_toDisable)\n            //{\n            //    var prefab = MyScriptWrapper.GetPrefab(entityId);\n            //    if (prefab != null && prefab.Enabled)\n            //        return false;\n            //}\n            //return true;\n            return m_disabledPrefabsCount >= m_toDisable.Count;\n        }\n\n        public override void Success()\n        {\n            base.Success();\n\n            foreach (var entityId in m_toDisable)\n            {\n                var prefab = MyScriptWrapper.GetPrefab(entityId);\n                if (prefab != null)\n                    MyScriptWrapper.RemoveEntityMark(prefab);\n            }\n        }\n        /*\n        public override bool IsMissionEntity(MyEntity target)\n        {\n            if (base.IsMissionEntity(target)) return true;\n            if (!target.EntityId.HasValue) return false;\n            return false;\n            //return m_toDisable.Contains(target.EntityId.Value.NumericValue);\n        }\n        */\n        void OnEntityClosing(MyEntity entity)\n        {\n            if (entity is MyPrefabBase && entity.EntityId.HasValue && m_toDisable.Contains(entity.EntityId.Value.NumericValue))\n            {\n                MyScriptWrapper.RemoveEntityMark(entity);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/Objectives/MyObjectiveEnablePrefabs.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Audio.Dialogues;\n\nnamespace MinerWars.AppCode.Game.Missions\n{\n    class MyObjectiveEnablePrefabs : MyObjective\n    {\n        private List<uint> m_toEnablePrefabs;\n\n        public MyObjectiveEnablePrefabs(\n            MyTextsWrapperEnum name,\n            MyMissionID id,\n            MyTextsWrapperEnum description,\n            MyTexture2D icon,\n            MyMission parentMission,\n            MyMissionID[] requiredMissions,\n            MyMissionLocation location,\n            List<uint> missionEntityIDs,\n            List<uint> toEnablePrefabs, \n            MyDialogueEnum? successDialogId = null, \n            MyDialogueEnum? startDialogId = null)\n            : base(name, id, description, icon, parentMission, requiredMissions, location, missionEntityIDs, successDialogId, startDialogId)\n        {\n            m_toEnablePrefabs = toEnablePrefabs;\n        }\n\n        [Obsolete]\n        public MyObjectiveEnablePrefabs(\n            StringBuilder name,\n            MyMissionID id,\n            StringBuilder description,\n            MyTexture2D icon,\n            MyMission parentMission,\n            MyMissionID[] requiredMissions,\n            MyMissionLocation location,\n            List<uint> missionEntityIDs,\n            List<uint> toEnablePrefabs,\n            MyDialogueEnum? successDialogId = null,\n            MyDialogueEnum? startDialogId = null)\n            : base(name, id, description, icon, parentMission, requiredMissions, location, missionEntityIDs, successDialogId, startDialogId)\n        {\n            m_toEnablePrefabs = toEnablePrefabs;\n        }\n\n        public override bool IsSuccess()\n        {\n            foreach (var id in m_toEnablePrefabs)\n            {\n                var entity = MyScriptWrapper.TryGetEntity(id);\n                if (entity != null && !entity.Enabled)\n                {\n                    return false;\n                }\n            }\n            return true;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/Objectives/MyObjectiveEnterInventory.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Audio.Dialogues;\nusing MinerWars.AppCode.Game.GUI.Helpers;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.World.Global;\n\nnamespace MinerWars.AppCode.Game.Missions\n{\n    class MyObjectiveEnterInventory : MyObjective\n    {\n\n        public MyObjectiveEnterInventory(MyTextsWrapperEnum Name, MyMissionID ID, MyTextsWrapperEnum Description, MyTexture2D Icon, MyMission ParentMission, MyMissionID[] RequiredMissions, uint ownerId, MyDialogueEnum? successDialogId = null, MyDialogueEnum? startDialogId = null, MyActorEnum[] requiredActors = null, float? radiusOverride = null)\n            : base(Name, ID, Description, Icon, ParentMission, RequiredMissions, null, null, successDialogId, startDialogId, requiredActors, radiusOverride)\n        {\n            MissionEntityIDs = new List<uint> { ownerId };\n        }\n\n        private bool m_isSuccess;\n        public override void Load()\n        {\n            base.Load();\n            \n            MyGuiScreenInventoryManagerForGame.OpeningInventoryScreen += MyGuiScreenInventoryManagerForGameOnOpeningInventoryScreen;\n        }\n\n        private void MyGuiScreenInventoryManagerForGameOnOpeningInventoryScreen(MyEntity entity, MySmallShipInteractionActionEnum interactionAction)\n        {\n            if (MissionEntityIDs.Contains(entity.EntityId.Value.NumericValue))\n            {\n                MissionEntityIDs.Remove(entity.EntityId.Value.NumericValue);\n                if (0 == MissionEntityIDs.Count)\n                {\n                    m_isSuccess = true;\n                }\n            }\n        }\n\n        public override bool IsSuccess()\n        {\n            return m_isSuccess;\n        }\n        public override void Unload()\n        {\n            base.Unload();\n            MyGuiScreenInventoryManagerForGame.OpeningInventoryScreen -= MyGuiScreenInventoryManagerForGameOnOpeningInventoryScreen;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/Objectives/MyObjectiveFollowBot.cs",
    "content": "﻿#region Using\n\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Audio.Dialogues;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.HUD;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Entities;\nusing System.Diagnostics;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Entities.WayPoints;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.AppCode.Game.Utils;\n\n#endregion\n\n\nnamespace MinerWars.AppCode.Game.Missions.SinglePlayer\n{\n\n    class MyObjectiveFollowBot : MyObjective\n    {\n        private uint? m_targetId;\n        private MySmallShipBot m_target;\n\n        public int FailDistanceTooShort = 150;\n        public int FailDistanceTooFar = 800;\n        public int WarningDelta = 150;\n\n        private MyEntity m_dummy;\n        private uint m_dummyId;\n        private bool m_invalid = false;\n\n        private MyHudNotification.MyNotification m_notificationWarningHurry;\n        private MyHudNotification.MyNotification m_notificationWarningSlowDown;\n\n        public MyDialogueEnum FarDialog;\n        public MyDialogueEnum ShortDialog;\n\n        public uint TargetId\n        {\n            set\n            {\n                m_targetId = value;\n                if (m_targetId != null)\n                {\n                    MissionEntityIDs.Add(value);\n                    m_target = MyScriptWrapper.GetEntity(m_targetId.Value) as MySmallShipBot;\n                }\n            }\n        }\n\n\n\n        public MyObjectiveFollowBot(MyTextsWrapperEnum Name, MyMissionID ID, MyTextsWrapperEnum Description, MyTexture2D Icon, MyMission ParentMission, MyMissionID[] RequiredMissions, uint? target, uint dummy, Audio.Dialogues.MyDialogueEnum? startDialogId = null)\n            : base(Name, ID, Description, Icon, ParentMission, RequiredMissions, null, null, null, startDialogId)\n        {\n            //MissionEntityIDs.Add(target);\n            m_targetId = target;\n            m_dummyId = dummy;\n            MakeEntityIndestructible = false;\n        }\n\n\n\n        public override void Update()\n        {\n            if (m_dummy == null) return;\n            \n            base.Update();\n\n            if (m_invalid) return;\n\n            if ((MySession.PlayerShip.GetPosition() - m_target.GetPosition()).Length() < FailDistanceTooShort)\n            {\n                MyScriptWrapper.PlayDialogue(ShortDialog);\n                m_target.SpeedModifier = 2.00f;\n                m_dummy = null;\n            }\n\n            if ((MySession.PlayerShip.GetPosition() - m_target.GetPosition()).Length() < FailDistanceTooShort + WarningDelta)\n            {\n                MyScriptWrapper.AddNotification(m_notificationWarningSlowDown);\n                m_notificationWarningSlowDown.Appear();\n            }\n            else\n            {\n                m_notificationWarningSlowDown.Disappear();\n            }\n\n\n            if ((MySession.PlayerShip.GetPosition() - m_target.GetPosition()).Length() > FailDistanceTooFar)\n            {\n                MyScriptWrapper.PlayDialogue(FarDialog);\n                m_dummy = null;\n            }\n\n            if ((MySession.PlayerShip.GetPosition() - m_target.GetPosition()).Length() > FailDistanceTooFar - WarningDelta)\n            {\n                m_notificationWarningHurry.Appear();\n                MyScriptWrapper.AddNotification(m_notificationWarningHurry);\n            }\n            else\n            {\n                m_notificationWarningHurry.Disappear();\n            }\n        }\n\n        public override bool IsSuccess()\n        {\n            if (m_dummy == null) return false;\n            if (m_target == null) return false;\n\n            if (!m_dummy.Enabled) return false;\n\n            var playerBoundingSphere = MySession.PlayerShip.WorldVolume;\n            var targetBoundingSphere = m_target.WorldVolume;\n            var result = base.IsSuccess() || (m_dummy.GetIntersectionWithSphere(ref playerBoundingSphere) && m_dummy.GetIntersectionWithSphere(ref targetBoundingSphere));\n            return result;\n        }\n\n        public override void Load()\n        {\n            base.Load();\n            m_dummy = MyScriptWrapper.GetEntity(m_dummyId);\n            MyScriptWrapper.OnDialogueFinished += MyScriptWrapperOnDialogueFinished;\n            m_notificationWarningHurry = MyScriptWrapper.CreateNotification(MyTextsWrapperEnum.HurryUp,\n                                                                            MyGuiManager.GetFontMinerWarsRed());\n            m_notificationWarningSlowDown = MyScriptWrapper.CreateNotification(MyTextsWrapperEnum.SlowDown,\n                                                                               MyGuiManager.GetFontMinerWarsRed());\n\n            MyScriptWrapper.AddNotification(m_notificationWarningHurry);\n            m_notificationWarningHurry.Disappear();\n            MyScriptWrapper.AddNotification(m_notificationWarningSlowDown);\n            m_notificationWarningSlowDown.Disappear();\n\n            m_invalid = false;\n\n            //We prevent mission fail by this when skipping with ctrl+del\n            if ((MySession.PlayerShip.GetPosition() - m_target.GetPosition()).Length() < FailDistanceTooShort)\n            {\n                m_invalid = true;\n            }\n            //We prevent mission fail by this when skipping with ctrl+del\n            if ((MySession.PlayerShip.GetPosition() - m_target.GetPosition()).Length() > FailDistanceTooFar)\n            {\n                m_invalid = true;\n            }\n        }\n\n        private void MyScriptWrapperOnDialogueFinished(MyDialogueEnum dialogue, bool interrupted)\n        {\n            if (dialogue == FarDialog)\n            {\n                Fail(MyTextsWrapperEnum.Fail_LostTarget);\n            }\n            if (dialogue == ShortDialog)\n            {\n                Fail(MyTextsWrapperEnum.Fail_SeenByTarget);\n            }\n        }\n\n\n        public override void Unload()\n        {\n            base.Unload();\n            m_targetId = null;\n            m_dummy = null;\n            MyScriptWrapper.OnDialogueFinished -= MyScriptWrapperOnDialogueFinished;\n            m_notificationWarningHurry.Disappear();\n            m_notificationWarningSlowDown.Disappear();\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/Objectives/MyObjectiveGetItems.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Inventory;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Missions.Utils;\n\nnamespace MinerWars.AppCode.Game.Missions\n{\n    class MyObjectiveGetItems : MyMultipleObjectives\n    {\n        private List<MyItemToGetDefinition> m_itemsToGet;\n        private int m_totalCount;\n\n        public MyObjectiveGetItems(MyTextsWrapperEnum name, MyMissionID id, MyTextsWrapperEnum description, MyTexture2D icon, MyMission parentMission, MyMissionID[] requiredMissions, List<MyItemToGetDefinition> itemsToGet, List<uint> getFrom)\n            : base(name, id, description, icon, parentMission, requiredMissions, null, getFrom)\n        {\n            m_itemsToGet = itemsToGet;\n        }\n\n        public override void Load()\n        {\n            m_totalCount = m_itemsToGet.Count;\n            RecalculateItemsCount(MyScriptWrapper.GetPlayerInventory());\n            RecalculateItemsCount(MyScriptWrapper.GetCentralInventory());\n            \n            base.Load();\n            MyScriptWrapper.EntityInventoryContentChanged += OnInventoryContentChanged;\n            if (MySession.Static != null && MySession.Static.Inventory != null)\n                MySession.Static.Inventory.OnInventoryContentChange += OnInventoryContentChangedEntity;\n        }\n\n        private void OnInventoryContentChangedEntity(MyInventory sender)\n        {\n            OnInventoryContentChanged(null, sender);\n        }\n\n        void OnInventoryContentChanged(MyEntity entity, Inventory.MyInventory inventory)\n        {\n            if (inventory == MyScriptWrapper.GetPlayerInventory() )\n            {\n                RecalculateItemsCount(inventory);\n            }\n\n            if (inventory == MyScriptWrapper.GetCentralInventory())\n            {\n                RecalculateItemsCount(inventory);\n            }\n        }\n\n        private void RecalculateItemsCount(MyInventory inventory)\n        {\n            for (int index = 0; index < m_itemsToGet.Count; index++)\n            {\n                var itemToGet = m_itemsToGet[index];\n                int itemCount = MyScriptWrapper.GetInventoryItemCount(inventory, itemToGet.ItemType, itemToGet.ItemId);\n                if (itemCount >= itemToGet.Count)\n                {\n                    m_itemsToGet.Remove(itemToGet);\n                    index--;\n\n                }\n            }\n        }\n\n        public override void Unload()\n        {\n            base.Unload();\n            MyScriptWrapper.EntityInventoryContentChanged -= OnInventoryContentChanged;\n        }\n\n        protected override int GetObjectivesTotalCount()\n        {\n            return m_totalCount;\n        }\n\n        protected override int GetObjectivesCompletedCount()\n        {\n            return m_totalCount - m_itemsToGet.Count;\n        }\n\n        public override bool IsSuccess()\n        {\n            //foreach (var itemToGet in m_itemsToGet)\n            //{\n            //    int itemCount = MyScriptWrapper.GetInventoryItemCount(MyScriptWrapper.GetPlayerInventory(), itemToGet.ItemType, itemToGet.ItemId);\n            //    if (itemCount < itemToGet.Count)\n            //    {\n            //        return false;\n            //    }\n            //}\n            //return true;\n            return m_itemsToGet.Count == 0;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/Objectives/MyObjectiveGetToLocations.cs",
    "content": "﻿#region Using\n\nusing System;\nusing System.Collections.Generic;\nusing System.Text;\nusing MinerWarsMath.Graphics;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.HUD;\nusing MinerWars.AppCode.Game.Journal;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.GUI.Helpers;\nusing MinerWars.CommonLIB.AppCode.Generics;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Prefabs;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.AppCode.Game.Missions.Utils;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing System.Diagnostics;\n\n#endregion\n\n\nnamespace MinerWars.AppCode.Game.Missions\n{\n     class MyObjectiveGetToLocations : MyMultipleObjectives\n     {\n        private List<MyMissionLocation> m_dummiesToVisit;\n        private List<MyMissionLocation> m_dummiesVisited;\n\n        public MyObjectiveGetToLocations(StringBuilder Name, MyMissionID ID, StringBuilder Description, MyTexture2D Icon, MyMission ParentMission, MyMissionID[] RequiredMissions, List<MyMissionLocation> DummiesToVisit, Audio.Dialogues.MyDialogueEnum? successDialogId = null, Audio.Dialogues.MyDialogueEnum? startDialogId = null, bool displayObjectivesCount = true) :\n            base(Name, ID, Description, Icon, ParentMission, RequiredMissions, null, null, successDialogId, startDialogId, displayObjectivesCount)\n        {\n            Debug.Assert(DummiesToVisit != null);\n            Debug.Assert(DummiesToVisit.Count > 0);\n            m_dummiesToVisit = DummiesToVisit;\n            m_dummiesVisited = new List<MyMissionLocation>();\n        }\n\n        public override void Load()\n        {\n            foreach (MyMissionLocation locationToVisit in m_dummiesToVisit)\n            {\n                locationToVisit.Entity = MyScriptWrapper.GetEntity(locationToVisit.LocationEntityIdentifier);\n                SetLocationVisibility(true, locationToVisit.Entity, MyGuitargetMode.Objective);\n            }\n            base.Load();\n        }\n\n        public override bool IsMissionEntity(MyEntity target)\n        {\n            if (base.IsMissionEntity(target)) return true;\n            foreach (MyMissionLocation locationToVisit in m_dummiesToVisit)\n            {\n                if (target == locationToVisit.Entity && !m_dummiesVisited.Contains(locationToVisit))\n                {\n                    return true;\n                }\n            }\n            return false;\n        }\n\n        public override void Update()\n        {\n            base.Update();\n            var boundingSphere = MySession.PlayerShip.WorldVolume;\n            foreach (MyMissionLocation locationToVisit in m_dummiesToVisit)\n            {\n                if (!m_dummiesVisited.Contains(locationToVisit) && locationToVisit.Entity.GetIntersectionWithSphere(ref boundingSphere))\n                {\n                    SetLocationVisibility(false, locationToVisit.Entity, MyGuitargetMode.Objective);\n                    m_dummiesVisited.Add(locationToVisit);\n                }\n            }\n        }\n\n        public override void Unload()\n        {\n            base.Unload();\n            foreach (MyMissionLocation locationToVisit in m_dummiesToVisit)\n            {\n                SetLocationVisibility(false, locationToVisit.Entity, MyGuitargetMode.Objective);\n            }\n            m_dummiesVisited.Clear();\n        }\n\n        public override bool IsSuccess()\n        {\n            return m_dummiesVisited.Count >= m_dummiesToVisit.Count;\n        }\n\n        protected override int GetObjectivesCompletedCount()\n        {\n            return m_dummiesVisited.Count;\n        }\n\n        protected override int GetObjectivesTotalCount()\n        {\n            return m_dummiesToVisit.Count;\n        }\n    }\n\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/Objectives/MyObjectiveRace.cs",
    "content": "﻿#region Using\n\nusing System;\nusing System.Collections.Generic;\nusing System.Globalization;\nusing System.Text;\nusing MinerWarsMath.Graphics;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.AppCode.Game.Audio.Dialogues;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.HUD;\nusing MinerWars.AppCode.Game.Journal;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.GUI.Helpers;\nusing MinerWars.CommonLIB.AppCode.Generics;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Prefabs;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.AppCode.Game.Missions.Utils;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing System.Diagnostics;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\n\n#endregion\n\n\nnamespace MinerWars.AppCode.Game.Missions\n{\n    internal class MyRacer\n    {\n        private MySmallShipBot m_racer;\n        private string m_wayPointPath;\n        public float SlowSpeed { get; set; }\n        public float NormalSpeed { get; set; }\n        public float FastSpeed { get; set; }\n        public float SlowDownDistance { get; set; }\n        public float ShootDistance { get; set; }\n        public string Name;\n        public List<MyDialogueEnum> FrontDialogs;\n        public List<MyDialogueEnum> BehindDialogs;\n        public float DialogPorobability { get; set; }\n\n        private int m_nextShoot = 0;\n        private float m_distanceToMe;\n        private int shootInterval = 1000;\n        private const float distanceOffset = 5.00f;\n        private bool m_botBehindRacer;\n\n        public float CurrentSppedUp\n        {\n            get { return m_racer.SpeedModifier; }\n            set\n            {\n                if (m_racer.SpeedModifier != value)\n                {\n                    if (m_racer.SpeedModifier == NormalSpeed && value == FastSpeed) PlayBehindDialogue();\n                    if (m_racer.SpeedModifier == NormalSpeed && value == SlowSpeed) PlayInFrontDialogue();\n                    m_racer.SpeedModifier = value;\n                }\n            }\n        }\n\n        private void PlayInFrontDialogue()\n        {   var rand = MyMwcUtils.GetRandomFloat(0, 1); \n            if (rand< DialogPorobability)\n            {\n                if (FrontDialogs != null) MyScriptWrapper.PlayDialogue(FrontDialogs[MyMwcUtils.GetRandomInt(0, FrontDialogs.Count - 1)]);\n            }\n        }\n\n        private void PlayBehindDialogue()\n        {\n            if (MyMwcUtils.GetRandomFloat(0, 1) < DialogPorobability)\n            {\n                if (BehindDialogs != null) MyScriptWrapper.PlayDialogue(BehindDialogs[MyMwcUtils.GetRandomInt(0, BehindDialogs.Count - 1)]);\n            }\n        }\n\n\n\n\n        public MyRacer(MySmallShipBot bot, string name, string path, float dialogPorbability, float slowSpeed = 0.9f, float normalSpeed = 1.3f,\n                       float fastSpeed = 1.6f, float slowDownDistance = 250f, float shootDistance = 100f)\n        {\n            m_racerId = bot.EntityId.Value.NumericValue;\n            m_wayPointPath = path;\n            SlowDownDistance = slowDownDistance;\n            SlowSpeed = slowSpeed;\n            NormalSpeed = normalSpeed;\n            FastSpeed = fastSpeed;\n            Name = name;\n            DialogPorobability = dialogPorbability;\n            ShootDistance = shootDistance;\n\n        }\n\n        public MySmallShipBot RacerBot\n        {\n            get { return m_racer; }\n        }\n\n        public string WayPointPath\n        {\n            get { return m_wayPointPath; }\n        }\n\n        public void Load()\n        {\n            m_racer = MyScriptWrapper.GetEntity(m_racerId) as MySmallShipBot;\n        }\n\n        public void StartRace()\n        {\n\n            m_racer.SetWaypointPath(WayPointPath);\n            m_racer.Patrol();\n            m_racer.Enabled = true;\n            m_racer.Engine = MySession.PlayerShip.Engine;\n            MyHudIndicatorFlagsEnum flags = MyHudIndicatorFlagsEnum.SHOW_TEXT |\n                                            MyHudIndicatorFlagsEnum.SHOW_BORDER_INDICATORS |\n                                            MyHudIndicatorFlagsEnum.SHOW_DISTANCE;\n            MyScriptWrapper.MarkEntity(m_racer, Name, flags, MyGuitargetMode.Objective);\n        }\n\n\n        public void UpdateRacerSpeed(float distance, int botsCheckPoint, int currentCheckPointIndex, int totalLenngth)\n        {\n            m_distanceToMe = distance;\n            m_botBehindRacer = false;\n            // Im in front of bot\n            if (botsCheckPoint < currentCheckPointIndex)\n            {\n                m_botBehindRacer = true;\n                if (Math.Abs(distance) > (SlowDownDistance + distanceOffset))\n                {\n                    CurrentSppedUp = FastSpeed;\n                    //Debug.WriteLine(\"fast\");\n                }\n                //Im loosing\n            }\n            else if (botsCheckPoint > currentCheckPointIndex)\n            {\n                if (Math.Abs(distance) > (SlowDownDistance + distanceOffset))\n                {\n                    CurrentSppedUp = SlowSpeed;\n                    if (botsCheckPoint >= totalLenngth - 1) m_racer.AfterburnerEnabled = false;\n                    // Debug.WriteLine(\"slow\");\n                }\n                //we are in same race part\n            }\n            else\n            {\n                //Im first\n\n                if (distance < -distanceOffset)\n                {\n                    m_botBehindRacer = true;\n                    //Debug.WriteLine(\"fast\");\n                }\n\n                if (distance < -(SlowDownDistance + distanceOffset))\n                {\n                    CurrentSppedUp = FastSpeed;\n                    //Debug.WriteLine(\"fast\");\n                }\n                //Im loosin\n                else if (distance > SlowDownDistance + distanceOffset)\n                {\n                    CurrentSppedUp = SlowSpeed;\n                    if (botsCheckPoint >= totalLenngth - 1) m_racer.AfterburnerEnabled = false;\n                    //Debug.WriteLine(\"slow\");\n                }\n                else if (distance < (SlowDownDistance + distanceOffset) || distance > -(SlowDownDistance - distanceOffset))\n                {\n                    CurrentSppedUp = NormalSpeed;\n                    //Debug.WriteLine(\"normal\");\n                }\n            }\n\n            \n\n            //Debug.WriteLine(m_racer.DisplayName+\" \"+botsCheckPoint);\n            //Debug.WriteLine(\"-----------------------------------------\");\n\n        }\n\n        private bool m_shoot = false;\n        private uint m_racerId;\n\n\n        public void UpdateShooting(int time)\n        {\n            if (m_nextShoot < time)\n            {\n                m_nextShoot = time + shootInterval;\n                shootInterval = MyMwcUtils.GetRandomInt(0, 2000);\n                m_shoot = !m_shoot;\n            }\n\n            if (m_shoot && m_botBehindRacer && Math.Abs(m_distanceToMe) > ShootDistance)\n            {\n               if(m_racer.Weapons!=null) m_racer.Shoot(MyMwcObjectBuilder_FireKeyEnum.Primary);\n            }\n        }\n    }\n\n    internal class MyObjectiveRace : MyMultipleObjectives\n    {\n\n        #region Events\n\n        public delegate void ChechpointReachedEvent(MyEntity checkPoint, int CheckpointNumber);\n\n        public delegate void OnRaceMissionFailed(MySmallShipBot bot);\n\n        public delegate void StartingRaceEvent(int toStart);\n\n        public event ChechpointReachedEvent CheckpointReached;\n        public event OnRaceMissionFailed OnMissionFailed;\n        public event StartingRaceEvent OnStartNumberChanged;\n\n        #endregion\n\n        #region Fields\n\n        private const int startingTimeTick = 1000;\n        private const int notifyCount = 4;\n        private MyHudNotification.MyNotification[] notifications = new MyHudNotification.MyNotification[notifyCount];\n\n        private List<MyMissionLocation> m_raceLocations;\n\n        private int m_currentCheckPointIndex = 0;\n        private List<uint> m_checkpointsIDs;\n        private MyMwcVector3Int m_sector;\n        private int m_startingTime;\n        private bool m_isStartingGame;\n        private uint m_detectorID;\n        private MyEntityDetector m_detector;\n        private bool m_restartRace;\n        private List<int> botsFinishedCheckPoints = new List<int>();\n\n        private MyTextsWrapperEnum m_normalName;\n        private MyTextsWrapperEnum m_prepareName;\n        private MyTextsWrapperEnum m_goBackName;\n        private StringBuilder m_emptyString = new StringBuilder(\"\");\n        private MySmallShipBot m_winner;\n        public List<string> RacerNames;\n        public Action<MySmallShipBot> BotLoaded;\n        public Action RaceStarted;\n        #endregion\n\n        private List<MyRacer> m_racers = new List<MyRacer>();\n\n        public void AddRacer(MyRacer bot)\n        {\n            if (!m_racers.Contains(bot) && bot != null)\n            {\n                m_racers.Add(bot);\n                botsFinishedCheckPoints.Add(0);\n            }\n        }\n\n        public MyObjectiveRace(MyTextsWrapperEnum Name, MyTextsWrapperEnum PrepareName, MyTextsWrapperEnum goBackToStart,\n                               MyMissionID ID, MyTextsWrapperEnum Description, MyTexture2D Icon, MyMission ParentMission,\n                               MyMissionID[] RequiredMissions, MyMwcVector3Int sector, List<uint> Checkpoints,\n                               uint detectorID, MyDialogueEnum? successDialogId = null,\n                               MyDialogueEnum? startDialogId = null, bool displayObjectivesCount = true)\n            :\n                base(\n                PrepareName, ID, Description, Icon, ParentMission, RequiredMissions, null, null, successDialogId,\n                startDialogId, displayObjectivesCount)\n        {\n            Debug.Assert(Checkpoints != null);\n            Debug.Assert(Checkpoints.Count > 0);\n            m_sector = sector;\n            m_checkpointsIDs = Checkpoints;\n            m_detectorID = detectorID;\n\n            m_normalName = Name;\n            m_prepareName = PrepareName;\n            m_goBackName = goBackToStart;\n        }\n\n\n\n        void MyScriptWrapper_OnSpawnpointBotSpawned(MyEntity entity1, MyEntity entity2)\n        {\n            if (BotLoaded != null)\n            {\n                if (RacerNames.Contains(entity2.Name))\n                {\n                    BotLoaded((MySmallShipBot)entity2);\n                }\n            }\n        }\n        public override void Load()\n        {\n            m_emptyString = new StringBuilder();\n            m_isFailed = false;\n            if (BotLoaded != null)\n            {\n                foreach (var racerName in RacerNames)\n                {\n                    MySmallShipBot racer = (MySmallShipBot)MyScriptWrapper.GetEntity(racerName);\n                    BotLoaded(racer);\n                }\n            }\n            MyScriptWrapper.OnSpawnpointBotSpawned += MyScriptWrapper_OnSpawnpointBotSpawned;\n            ResetStart();\n            m_raceLocations = new List<MyMissionLocation>();\n            foreach (uint u in m_checkpointsIDs)\n            {\n                MyMissionLocation loc = new MyMissionLocation(m_sector, u);\n                MyEntity entity;\n                MyEntities.TryGetEntityById(new MyEntityIdentifier(u), out entity);\n                loc.Entity = entity;\n                m_raceLocations.Add(loc);\n            }\n\n\n            m_isStartingGame = true;\n            m_startingTime = 0;\n\n\n            m_detector = MyScriptWrapper.GetDetector(m_detectorID);\n            if (m_detector != null)\n            {\n                m_detector.OnEntityEnter += OnDetectorEnter;\n                m_detector.OnEntityLeave += OnDetectorLeave;\n                m_detector.On();\n            }\n\n            foreach (var myRacer in m_racers)\n            {\n                myRacer.Load();\n            }\n\n            m_currentCheckPointIndex = 0;\n            m_restartRace = false;\n\n            \n            base.Load();\n        }\n\n\n        private void OnDetectorLeave(MyEntityDetector sender, MyEntity entity)\n        {\n            if (m_isStartingGame)\n            {\n                MyScriptWrapper.RemoveEntityMark(m_detector);\n                m_restartRace = true;\n                MyScriptWrapper.AddNotification(MyScriptWrapper.CreateNotification(MyTextsWrapperEnum.GoBackToStartingPosition,\n                                                                                   MyHudConstants.ENEMY_FONT, 5000));\n                Name = m_goBackName;\n                for (int i = 0; i < notifyCount; i++)\n                {\n                    if (notifications[i] != null)\n                    {\n                        notifications[i].Disappear();\n                    }\n                }\n                if (OnStartNumberChanged != null) OnStartNumberChanged(-1);\n                if(m_startSoundFinished) MyAudio.Stop();\n            }\n        }\n\n        private void OnDetectorEnter(MyEntityDetector sender, MyEntity entity, int meetcriterias)\n        {\n            if (m_restartRace)\n            {\n                MyScriptWrapper.RemoveEntityMark(m_detector);\n                ResetStart();\n                m_restartRace = false;\n                Name = m_prepareName;\n            }\n            else //only first time\n            {\n\n                MyScriptWrapper.PlaySound3D(sender, MySoundCuesEnum.VocRace01Welcome);\n                m_startSoundFinished = false;\n                MissionTimer.RegisterTimerAction(14000, () => { m_startSoundFinished = true; });\n            }\n        }\n\n\n        private void ResetStart()\n        {\n            startCounter = 3;\n            m_isStartingGame = true;\n            m_startingTime = 0;\n\n        }\n\n\n        public override bool IsMissionEntity(MyEntity target)\n        {\n            if (base.IsMissionEntity(target)) return true;\n            foreach (MyMissionLocation locationToVisit in m_raceLocations)\n            {\n                if (target == locationToVisit.Entity)\n                {\n                    return true;\n                }\n            }\n            return false;\n        }\n\n\n        public override void Update()\n        {\n            base.Update();\n\n            //notifications 3,2,1,Start ...\n            if (m_isStartingGame && !m_restartRace && m_startSoundFinished)\n            {\n                UpdateNotifications();\n                \n            }\n\n            if (m_isStartingGame)\n            {\n                AdditionalHudInformation = m_emptyString;\n            }\n\n\n            //managing next checkpoints\n\n            UpdateCheckpoints();\n\n            UpdateBots();\n\n            if (m_isFailed)\n            {\n                OnMissionFailed(m_winner);\n            }\n        }\n\n\n\n        private void UpdateCheckpoints()\n        {\n            var boundingSphere = MySession.PlayerShip.WorldVolume;\n            MyMissionLocation raceLocation = m_raceLocations[m_currentCheckPointIndex];\n\n            if (raceLocation.Entity.GetIntersectionWithSphere(ref boundingSphere))\n            {\n                if (CheckpointReached != null) \n                    CheckpointReached(raceLocation.Entity, m_currentCheckPointIndex);\n\n                RemovelabelFormCurrentCheckPoint();\n\n                m_currentCheckPointIndex++;\n                if (m_currentCheckPointIndex >= m_raceLocations.Count)\n                {\n                    Success();\n                    m_currentCheckPointIndex--;\n                }\n                else\n                {\n                    AddLabelToCurrentCheckPoint();\n                    MyHud.ShowGPSPathToNextObjective(false);\n                }\n            }\n\n\n\n        }\n\n        private void UpdateBots()\n        {\n            MyMissionLocation raceLocation = m_raceLocations[m_currentCheckPointIndex];\n            //controlling speed of bots \n            int counter = 0;\n            foreach (MyRacer racer in m_racers)\n            {\n                var mySmallShipBot = racer.RacerBot;\n\n                var boundingSphere = mySmallShipBot.WorldVolume;\n                var botsCheckPoint = botsFinishedCheckPoints[counter];\n\n\n                var myChceckPoint = m_raceLocations[m_currentCheckPointIndex].Entity.GetPosition();\n                var hisCheckPoint = m_raceLocations[botsCheckPoint].Entity.GetPosition();\n\n\n\n                var distance = (myChceckPoint - hisCheckPoint).Length() +\n                               (MySession.PlayerShip.GetPosition() - myChceckPoint).Length() -\n                               (mySmallShipBot.GetPosition() - hisCheckPoint).Length();\n\n                racer.UpdateRacerSpeed(distance, botsCheckPoint, m_currentCheckPointIndex, m_raceLocations.Count);\n\n                //check if bot went to next chcechpoint\n                raceLocation = m_raceLocations[botsFinishedCheckPoints[counter]];\n                if (raceLocation.Entity.GetIntersectionWithSphere(ref boundingSphere))\n                {\n                    botsFinishedCheckPoints[counter]++;\n                    if (botsFinishedCheckPoints[counter] == m_raceLocations.Count)\n                    {\n                        //Bot won\n                        if (OnMissionFailed != null && !m_isFailed)\n                        {\n                            m_winner = mySmallShipBot;\n                            m_isFailed = true;\n                        }\n                        botsFinishedCheckPoints[counter]--;\n                    }\n                }\n\n                racer.UpdateShooting(MissionTimer.ElapsedTime);\n                counter++;\n            }\n        }\n\n\n        private int startCounter = 3;\n        private bool m_isFailed;\n        private bool m_startSoundFinished;\n\n        private void UpdateNotifications()\n        {\n\n\n            if (MissionTimer.ElapsedTime > m_startingTime)\n            {   \n                if(startCounter==3)\n                {\n                    MyScriptWrapper.PlaySound3D(m_detector, MySoundCuesEnum.VocRace02countdown);\n                }\n\n                if (startCounter == 0)\n                {\n                    notifications[0] = MyScriptWrapper.CreateNotification(MyTextsWrapperEnum.Start,\n                                                                          MyHudConstants.MISSION_FONT, startingTimeTick);\n                    MyScriptWrapper.AddNotification(notifications[0]);\n                    m_isStartingGame = false;\n                    AddLabelToCurrentCheckPoint();\n                    if (OnStartNumberChanged != null) OnStartNumberChanged(startCounter);\n                    StartRace();\n                }\n                else\n                {\n                    notifications[startCounter] = MyScriptWrapper.CreateNotification(startCounter.ToString(),\n                                                                                     MyHudConstants.MISSION_FONT,\n                                                                                     startingTimeTick);\n                    MyScriptWrapper.AddNotification(notifications[startCounter]);\n                    m_startingTime = MissionTimer.ElapsedTime + startingTimeTick;\n                    if (OnStartNumberChanged != null) OnStartNumberChanged(startCounter);\n                    startCounter--;\n\n                }\n            }\n\n        }\n\n\n\n        private void StartRace()\n        {\n            Name = m_normalName;\n            ReloadAdditionalHubInfo();\n            foreach (MyRacer racer in m_racers)\n            {\n                racer.StartRace();\n            }\n            MyScriptWrapper.PlaySound3D(m_detector,MySoundCuesEnum.VocRace03cleanStart);\n            if (RaceStarted != null)\n            {\n                RaceStarted();\n            }\n        }\n\n        public override void Unload()\n        {\n            base.Unload();\n\n            m_winner = null;\n\n            foreach (MyMissionLocation locationToVisit in m_raceLocations)\n            {\n                SetLocationVisibility(false, locationToVisit.Entity, MyGuitargetMode.Objective);\n            }\n\n            MyScriptWrapper.OnSpawnpointBotSpawned -= MyScriptWrapper_OnSpawnpointBotSpawned;\n\n            botsFinishedCheckPoints.Clear();\n            m_racers.Clear();\n\n            if (m_detector != null)\n            {\n                m_detector.OnEntityEnter -= OnDetectorEnter;\n                m_detector.OnEntityLeave -= OnDetectorLeave;\n                m_detector.Off();\n            }\n\n\n        }\n\n        public override bool IsSuccess()\n        {\n            return false;\n        }\n\n        protected override int GetObjectivesCompletedCount()\n        {\n            return m_currentCheckPointIndex + 1;\n        }\n\n        protected override int GetObjectivesTotalCount()\n        {\n            return m_raceLocations.Count;\n        }\n\n\n        private void RemovelabelFormCurrentCheckPoint()\n        {\n            MyHud.RemoveText(m_raceLocations[m_currentCheckPointIndex].Entity);\n        }\n\n        private void AddLabelToCurrentCheckPoint()\n        {\n            string label = (m_currentCheckPointIndex + 1).ToString(CultureInfo.InvariantCulture) + \"/\" +\n                           m_raceLocations.Count.ToString(CultureInfo.InvariantCulture);\n            m_raceLocations[m_currentCheckPointIndex].Entity =\n                MyScriptWrapper.GetEntity(m_raceLocations[m_currentCheckPointIndex].LocationEntityIdentifier);\n            SetLocationVisibility(true, m_raceLocations[m_currentCheckPointIndex].Entity, MyGuitargetMode.Objective);\n            MyHudIndicatorFlagsEnum flags = MyHudIndicatorFlagsEnum.SHOW_TEXT |\n                                            MyHudIndicatorFlagsEnum.SHOW_BORDER_INDICATORS |\n                                            MyHudIndicatorFlagsEnum.SHOW_DISTANCE;\n\n            MyHud.ChangeText(m_raceLocations[m_currentCheckPointIndex].Entity, new StringBuilder(label),\n                             MyGuitargetMode.Objective, 0, flags);\n        }\n\n\n    }\n}\n\n\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/Objectives/MyObjectiveWatchSigns.cs",
    "content": "﻿#region Using\n\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Audio.Dialogues;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.HUD;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Entities;\nusing System.Diagnostics;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Entities.WayPoints;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.AppCode.Game.Utils;\n\n#endregion\n\n\nnamespace MinerWars.AppCode.Game.Missions.SinglePlayer\n{\n\n  class MyObjectiveWatchSigns : MyObjective\n        {\n            private uint m_targetId;\n            private MyEntity m_target;\n\n            public int FailDistance = 80;\n            public int WarningDistance = 200;\n            private MyHudNotification.MyNotification m_notification;\n            public event Action DialogeFinished;\n\n            public MyObjectiveWatchSigns(StringBuilder Name, MyMissionID ID, StringBuilder Description, MyTexture2D Icon, MyMission ParentMission, MyMissionID[] RequiredMissions, uint target, Audio.Dialogues.MyDialogueEnum? dialogId = null)\n                : base(Name, ID, Description, Icon, ParentMission, RequiredMissions, null, null, null, dialogId)\n            {\n                m_targetId = target;\n            }\n\n            public override bool IsSuccess()\n            {\n                return false;\n            }\n\n\n            public override void Update()\n            {\n                base.Update();\n\n                if ((MySession.PlayerShip.GetPosition() - m_target.GetPosition()).Length() < WarningDistance)\n                {\n                    m_notification.Appear();\n                    MyScriptWrapper.AddNotification(m_notification);\n                }\n                else\n                {\n                    m_notification.Disappear();\n                }\n\n                if ((MySession.PlayerShip.GetPosition() - m_target.GetPosition()).Length() < FailDistance)\n                {\n                    Fail(MyTextsWrapperEnum.Fail_LostTarget);\n                }\n            }\n\n            public override void Load()\n            {\n                base.Load();\n                MyScriptWrapper.OnDialogueFinished += MyScriptWrapperOnOnDialogueFinished;\n                m_notification = MyScriptWrapper.CreateNotification(MyTextsWrapperEnum.DoNotGoThere,\n                                                                    MyGuiManager.GetFontMinerWarsRed());\n\n                m_target = MyScriptWrapper.GetEntity(m_targetId);\n                MyScriptWrapper.MarkEntity(m_target, NameTemp.ToString(),\n                                           MyHudIndicatorFlagsEnum.SHOW_MISSION_MARKER |\n                                           MyHudIndicatorFlagsEnum.SHOW_BORDER_INDICATORS |\n                                           MyHudIndicatorFlagsEnum.SHOW_DISTANCE |\n                                MyHudIndicatorFlagsEnum.SHOW_TEXT, MyGuitargetMode.Objective);\n                MyScriptWrapper.AddNotification(m_notification);\n                m_notification.Disappear();\n            }\n\n            private void MyScriptWrapperOnOnDialogueFinished(MyDialogueEnum dialogue, bool interrupted)\n            {\n                if (dialogue == StartDialogId)\n                {\n                    if (DialogeFinished != null) DialogeFinished();\n                }\n            }\n\n            public override void Unload()\n            {\n                base.Unload();\n                m_notification.Disappear();\n                MyScriptWrapper.OnDialogueFinished -= MyScriptWrapperOnOnDialogueFinished;\n                MyScriptWrapper.RemoveEntityMark(m_target);\n            }\n        }\n\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/Objectives/MyTimedMeetObjective.cs",
    "content": "﻿using System;\nusing System.Text;\nusing MinerWars.AppCode.Game.Audio.Dialogues;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.HUD;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Utils;\n\nnamespace MinerWars.AppCode.Game.Missions.Objectives\n{   \n\n    class MyTimedMeetObjective : MyMeetObjective\n    {\n        private TimeSpan m_submissionDuration;\n        private TimeSpan m_remainingTime;\n        private MyHudNotification.MyNotification m_countdownNotification;\n\n\n        public MyTimedMeetObjective(MyTextsWrapperEnum Name, MyMissionID ID, MyTextsWrapperEnum Description, MyMission ParentMission, MyMissionID[] RequiredMissions, uint? detectorId, uint botId, float distanceToTalk, float slowdown, TimeSpan submissionDuration, MyDialogueEnum? successDialogueId = null, MyDialogueEnum? startDialogueId = null, bool stopFollow = true) \n            : base(Name, ID, Description, ParentMission, RequiredMissions, detectorId, botId, distanceToTalk, slowdown, successDialogueId, startDialogueId, stopFollow)\n        {\n            m_submissionDuration = submissionDuration;\n            m_remainingTime = submissionDuration;\n        }\n        public override void Load()\n        {\n            base.Load();\n            m_remainingTime = m_submissionDuration;\n            m_countdownNotification = new MyHudNotification.MyNotification(MyTextsWrapperEnum.Countdown, (int)m_remainingTime.TotalMilliseconds, null);\n            MyHudNotification.AddNotification(m_countdownNotification,MyGuiScreenGamePlayType.GAME_STORY);\n        }\n\n        public override void Update()\n        {\n            base.Update();\n            m_remainingTime = m_remainingTime - new TimeSpan(0, 0, 0, 0, MyConstants.PHYSICS_STEP_SIZE_IN_MILLISECONDS);\n            if (m_remainingTime.TotalMilliseconds < 0 || m_detectorReached)\n            {\n                m_countdownNotification.Disappear();\n            }\n\n            m_countdownNotification.SetTextFormatArguments(new object[] { String.Format(\"{0:00}\", m_remainingTime.Minutes) + \":\" + String.Format(\"{0:00}\", m_remainingTime.Seconds) });\n\n            //if not speaking\n            if (m_remainingTime.TotalSeconds<=0 && !m_detectorReached)\n            {\n                Fail(MyTextsWrapperEnum.Fail_TimeIsUp);        \n            }\n        }\n\n        \n        public float Progress\n        {\n            get\n            {\n                return (float)(1 - (m_remainingTime.TotalMilliseconds / m_submissionDuration.TotalMilliseconds));\n            }\n        }\n        \n\n        public override void Unload()\n        {\n            base.Unload();\n            if (m_countdownNotification!=null) m_countdownNotification.Disappear();\n        }\n\n\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/Objectives/MyTimedObjective.cs",
    "content": "﻿using System;\nusing System.Diagnostics;\nusing System.Text;\nusing MinerWars.AppCode.Game.HUD;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.Audio.Dialogues;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Sessions;\n\nnamespace MinerWars.AppCode.Game.Missions\n{\n    class MyTimedObjective : MyObjective\n    {\n        private MyHudNotification.MyNotification m_countdownNotification;\n        private bool m_isOn = true;\n        private bool m_defaultState = true;\n\n        public MyTextsWrapperEnum NotificationText = MyTextsWrapperEnum.Countdown;\n        public bool DisplayCounter { get; set; }\n\n        public MyTimedObjective(MyTextsWrapperEnum name, MyMissionID id, MyTextsWrapperEnum description, MyTexture2D icon, MyMission parentMission, MyMissionID[] requiredMissions, TimeSpan submissionDuration, MyDialogueEnum? successDialogId = null, MyDialogueEnum? startDialogId = null)\n            : base(name, id, description, icon, parentMission, requiredMissions, null, null, successDialogId, startDialogId)\n        {\n            SubmissionDuration = submissionDuration;\n            DisplayCounter = true;\n        }\n\n        public MyTimedObjective(MyTextsWrapperEnum name, MyMissionID id, MyTextsWrapperEnum description, MyTexture2D icon, MyMission parentMission, MyMissionID[] requiredMissions, TimeSpan submissionDuration, bool isOn)\n            : this(name, id, description, icon, parentMission, requiredMissions, submissionDuration)\n        {\n            m_isOn = isOn;\n            m_defaultState = m_isOn;\n            DisplayCounter = true;\n        }\n\n        [Obsolete]\n        public MyTimedObjective(StringBuilder name, MyMissionID id, StringBuilder description, MyTexture2D icon, MyMission parentMission, MyMissionID[] requiredMissions, TimeSpan submissionDuration, MyDialogueEnum? successDialogId = null, MyDialogueEnum? startDialogId = null)\n            : base(name, id, description, icon, parentMission, requiredMissions, null, null, successDialogId, startDialogId)\n        {\n            SubmissionDuration = submissionDuration;\n            DisplayCounter = true;\n        }\n\n        [Obsolete]\n        public MyTimedObjective(StringBuilder name, MyMissionID id, StringBuilder description, MyTexture2D icon, MyMission parentMission, MyMissionID[] requiredMissions, TimeSpan submissionDuration, bool isOn)\n            : this(name, id, description, icon, parentMission, requiredMissions, submissionDuration)\n        {\n            m_isOn = isOn;\n            m_defaultState = m_isOn;\n            DisplayCounter = true;\n        }\n\n        /// <summary>\n        /// Return a real number between 0 and 1 indicating how much time has passed from the beginning of the mission.\n        /// </summary>\n        public float Progress\n        {\n            get\n            {\n                return (float)(1 - (RemainingTime.TotalMilliseconds / SubmissionDuration.TotalMilliseconds));\n            }\n        }\n\n        public TimeSpan RemainingTime\n        {\n            get { return SubmissionDuration - MissionTimer.GetElapsedTime(); }\n        }\n\n        public TimeSpan SubmissionDuration { get; set; }\n\n        public override void Load()\n        {\n            base.Load();\n            if (m_isOn)\n            {\n                m_countdownNotification = new MyHudNotification.MyNotification(NotificationText, MyGuiManager.GetFontMinerWarsBlue(), (int)RemainingTime.TotalMilliseconds, null);\n                m_countdownNotification.IsImportant = true;\n                if (DisplayCounter) \n                    MyHudNotification.AddNotification(m_countdownNotification);\n            }\n        }\n\n        public override void Unload()\n        {\n            base.Unload();\n            m_isOn = m_defaultState;\n        }\n\n        public override void Update()\n        {\n            base.Update();\n\n            if (m_countdownNotification == null)  //loaded checkpoint\n            {\n                m_isOn = false;\n            }\n\n            if (m_isOn)\n            {\n                Debug.Assert(m_countdownNotification != null, \"m_countdownNotification != null\");\n                m_countdownNotification.SetTextFormatArguments(new object[] { String.Format(\"{0:00}\", RemainingTime.Minutes) + \":\" + String.Format(\"{0:00}\", RemainingTime.Seconds) });\n                SendTimer(false, DisplayCounter);\n            }\n        }\n\n        public void SkipTimer()\n        {\n            MissionTimer.SetElapsedTime(SubmissionDuration);\n            //SubmissionDuration = MissionTimer.GetElapsedTime();\n            m_countdownNotification.Disappear();\n            SendTimer(true, false);\n        }\n\n        public override bool IsSuccess()\n        {\n            return RemainingTime.TotalMilliseconds <= 0;\n        }\n\n        public void Suspend(bool isOn)\n        {\n            if (isOn && !m_isOn)\n            {\n                m_countdownNotification = new MyHudNotification.MyNotification(NotificationText, (int)RemainingTime.TotalMilliseconds);\n                m_countdownNotification.IsImportant = true;\n                if (DisplayCounter) MyHudNotification.AddNotification(m_countdownNotification);\n            }\n            m_isOn = isOn;\n\n        }\n\n        public void HideNotification()\n        {\n            if (m_countdownNotification != null)\n            {\n                m_countdownNotification.Disappear();\n            }\n            SendTimer(true, false);\n        }\n\n        void SendTimer(bool force, bool displayCounter)\n        {\n            if (MyMultiplayerGameplay.IsHosting)\n            {\n                var timespan = displayCounter ? RemainingTime : TimeSpan.FromTicks(0);\n                MyMultiplayerGameplay.Static.SendCountdown(timespan, force);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/Objectives/MyTimedReachLocationObjective.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.HUD;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.Utils;\n\nnamespace MinerWars.AppCode.Game.Missions\n{\n    class MyTimedReachLocationObjective : MyObjective\n    {\n        private TimeSpan m_submissionDuration;\n        private TimeSpan m_remainingTime;\n        private MyHudNotification.MyNotification m_countdownNotification;\n        public event Action OnMissionFailed;\n\n        public MyTimedReachLocationObjective(StringBuilder name, MyMissionID id, StringBuilder description, MyTexture2D icon, MyMission parentMission, MyMissionID[] requiredMissions, TimeSpan submissionDuration, MyMissionLocation location)\n            : base(name, id, description, icon, parentMission, requiredMissions, location)\n        {\n            m_submissionDuration = submissionDuration;\n            m_remainingTime = submissionDuration;\n        }\n\n        public MyTimedReachLocationObjective(MyTextsWrapperEnum name, MyMissionID id, MyTextsWrapperEnum description, MyTexture2D icon, MyMission parentMission, MyMissionID[] requiredMissions, TimeSpan submissionDuration, MyMissionLocation location)\n            : base(name, id, description, icon, parentMission, requiredMissions, location)\n        {\n            m_submissionDuration = submissionDuration;\n            m_remainingTime = submissionDuration;\n        }\n\n        /// <summary>\n        /// Return a real number between 0 and 1 indicating how much time has passed from the beginning of the mission.\n        /// </summary>\n        public float Progress\n        {\n            get\n            {\n                return (float)(1 - (m_remainingTime.TotalMilliseconds / m_submissionDuration.TotalMilliseconds));\n            }\n        }\n\n        public override void Load()\n        {\n            base.Load();\n            m_remainingTime = m_submissionDuration;\n            m_countdownNotification = new MyHudNotification.MyNotification(MyTextsWrapperEnum.Countdown, (int)m_remainingTime.TotalMilliseconds, null);\n            MyHudNotification.AddNotification(m_countdownNotification);\n        }\n\n        public override void Update()\n        {\n            base.Update();\n\n\n            if (m_remainingTime.TotalMilliseconds <= 0)\n            {\n                // submission event?\n                if (OnMissionFailed != null) OnMissionFailed();\n                else \n                    Fail(MyTextsWrapperEnum.Fail_TimeIsUp);\n            }\n            else\n            {\n                m_remainingTime -= new TimeSpan(0, 0, 0, 0, MyConstants.PHYSICS_STEP_SIZE_IN_MILLISECONDS);\n                m_countdownNotification.SetTextFormatArguments(new object[] { String.Format(\"{0:00}\", m_remainingTime.Minutes) + \":\" + String.Format(\"{0:00}\", m_remainingTime.Seconds) });\n            }\n        }\n\n        public override bool IsSuccess()\n        {\n            bool success = base.IsSuccess();\n            if (success && m_countdownNotification != null)\n            {\n                m_countdownNotification.Disappear();\n            }\n            return success;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/Objectives/MyUseObjective.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.HUD;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Audio.Dialogues;\n\nnamespace MinerWars.AppCode.Game.Missions\n{\n    public enum MyUseObjectiveType\n    {\n        Hacking,\n        Building,\n        Repairing,\n        Activating,\n        Taking,\n        Putting,\n    }\n\n    class MyUseObjective : MyObjective\n    {\n        private MyTextsWrapperEnum m_notificationText;\n        private MyHudNotification.MyNotification m_notification;\n        private bool m_isNearLocation;\n\n        private int m_requiredTime;\n        private int m_elapsedTime;\n\n        private bool m_inUse;\n        private uint? m_realMissionEntityId;\n        private MyEntity m_realMissionEntity;\n\n        private MyGuiScreenUseProgressBar m_useProgress;\n        private MyTextsWrapperEnum m_useCaption;\n        private MyTextsWrapperEnum m_useText;\n        private EventHandler m_startingGeneratorProgressScreen_OnCanceledHandler;\n        private EventHandler m_startingGeneratorProgressScreen_OnSuccessHandler;\n\n        private MySoundCuesEnum m_progressCue, m_cancelCue;\n\n        public MyUseObjective(\n            MyTextsWrapperEnum name,\n            MyMissionID id,\n            MyTextsWrapperEnum description,\n            MyTexture2D icon,\n            MyMission parentMission,\n            MyMissionID[] requiredMissions,\n            MyMissionLocation location,\n            MyTextsWrapperEnum notificationText,\n            MyTextsWrapperEnum useCaption,\n            MyTextsWrapperEnum useText,\n            int requiredTime,\n            MyUseObjectiveType objectiveType = MyUseObjectiveType.Hacking,\n            MyDialogueEnum? successDialogId = null,\n            MyDialogueEnum? startDialogId = null,\n            float? radiusOverride = null,\n            List<uint> fakeMissionIds = null,\n            uint? realMissionId = null)\n            : base(name, id, description, icon, parentMission, requiredMissions, location, fakeMissionIds, successDialogId, startDialogId, radiusOverride: radiusOverride)\n        {\n            m_notificationText = notificationText;\n            m_useText = useText;\n            m_useCaption = useCaption;\n            m_requiredTime = requiredTime;\n            m_realMissionEntityId = realMissionId;\n            InitSounds(objectiveType);\n\n            if (location != null)\n            {\n                if (location.LocationEntityIdentifier.LocationEntityId != null)\n                {\n                    RequiredEntityIDs.Add(location.LocationEntityIdentifier.LocationEntityId.Value);\n                }\n            }\n        }\n\n        [Obsolete]\n        public MyUseObjective(\n            StringBuilder name,\n            MyMissionID id,\n            StringBuilder description,\n            MyTexture2D icon,\n            MyMission parentMission,\n            MyMissionID[] requiredMissions,\n            MyMissionLocation location,\n            MyTextsWrapperEnum notificationText,\n            MyTextsWrapperEnum useCaption,\n            MyTextsWrapperEnum useText,\n            int requiredTime,\n            MyUseObjectiveType objectiveType = MyUseObjectiveType.Hacking,\n            MyDialogueEnum? successDialogId = null, \n            MyDialogueEnum? startDialogId = null,\n            float? radiusOverride = null,\n            List<uint> fakeMissionIds = null,\n            uint? realMissionId = null)\n            : base(name, id, description, icon, parentMission, requiredMissions, location, fakeMissionIds, successDialogId, startDialogId, radiusOverride: radiusOverride)\n        {\n            m_notificationText = notificationText;\n            m_useText = useText;\n            m_useCaption = useCaption;\n            m_requiredTime = requiredTime;\n             m_realMissionEntityId = realMissionId;\n            InitSounds(objectiveType);\n\n            if (location != null)\n            {\n                if (location.LocationEntityIdentifier.LocationEntityId != null)\n                {\n                    RequiredEntityIDs.Add(location.LocationEntityIdentifier.LocationEntityId.Value);\n                }\n            }\n        }\n\n\n        private void InitSounds(MyUseObjectiveType objectiveType)\n        {\n            switch (objectiveType)\n            {\n                case MyUseObjectiveType.Activating:\n                    m_progressCue = MySoundCuesEnum.SfxProgressActivation;\n                    m_cancelCue = MySoundCuesEnum.SfxCancelActivation;\n                    break;\n                case MyUseObjectiveType.Building: \n                    m_progressCue = MySoundCuesEnum.SfxProgressBuild;\n                    m_cancelCue = MySoundCuesEnum.SfxCancelBuild;\n                    break;\n                case MyUseObjectiveType.Hacking:\n                    m_progressCue = MySoundCuesEnum.SfxProgressHack;\n                    m_cancelCue = MySoundCuesEnum.SfxCancelHack;\n                    break;\n                case MyUseObjectiveType.Repairing:\n                    m_progressCue = MySoundCuesEnum.SfxProgressRepair;\n                    m_cancelCue = MySoundCuesEnum.SfxCancelRepair;\n                    break;\n                case MyUseObjectiveType.Taking:\n                    m_progressCue = MySoundCuesEnum.SfxProgressTake;\n                    m_cancelCue = MySoundCuesEnum.SfxCancelTake;\n                    break;\n                case MyUseObjectiveType.Putting:\n                    m_progressCue = MySoundCuesEnum.SfxProgressPut;\n                    m_cancelCue = MySoundCuesEnum.SfxCancelPut;\n                    break;\n            }\n        }\n\n\n        public override void Unload()\n        {\n            base.Unload();\n            m_useProgress.OnCanceled -= m_startingGeneratorProgressScreen_OnCanceledHandler;\n            m_useProgress.OnSuccess -= m_startingGeneratorProgressScreen_OnSuccessHandler;\n        }\n\n        public override void Load()\n        {\n            base.Load();\n            if (m_realMissionEntityId.HasValue)\n                m_realMissionEntity = MyScriptWrapper.TryGetEntity(m_realMissionEntityId.Value);\n\n            m_notification = new MyHudNotification.MyNotification(m_notificationText, MyHudConstants.MISSION_FONT, MyHudNotification.DONT_DISAPEAR, null, new object[] { \"\" });\n            m_startingGeneratorProgressScreen_OnCanceledHandler = new EventHandler(OnCanceledHandler);\n            m_startingGeneratorProgressScreen_OnSuccessHandler = new EventHandler(OnSuccessHandler);\n\n            m_useProgress = new MyGuiScreenUseProgressBar(m_useCaption, m_useText, 0f, m_progressCue, m_cancelCue, MyGameControlEnums.USE, 0, m_requiredTime, 0);\n            m_useProgress.OnCanceled += m_startingGeneratorProgressScreen_OnCanceledHandler;\n            m_useProgress.OnSuccess += m_startingGeneratorProgressScreen_OnSuccessHandler;\n        }\n\n        public override bool IsSuccess()\n        {\n            m_isNearLocation = base.IsSuccess() || IsNearRealLocation();\n            if (m_isNearLocation)\n            {\n                m_notification.SetTextFormatArguments(new object[] { MyGuiManager.GetInput().GetGameControlTextEnum(MyGameControlEnums.USE) });\n                m_notification.Appear();\n                MyHudNotification.AddNotification(m_notification);\n            }\n            else\n            {\n                m_notification.Disappear();\n            }\n\n            return false;\n        }\n\n\n        public override void Success()\n        {\n            m_notification.Disappear();\n            base.Success();\n        }\n\n        private bool IsNearRealLocation()\n        {\n            if (m_realMissionEntity == null) return false;\n\n            var boundingSphere = MySession.PlayerShip.WorldVolume;\n\n            if (MyGuiScreenGamePlay.Static.CameraAttachedTo == MyCameraAttachedToEnum.Drone)\n            {\n                boundingSphere = MyGuiScreenGamePlay.Static.ControlledDrone.WorldVolume;\n            }\n\n            if (m_radiusOverride.HasValue)\n            {\n                boundingSphere.Radius = m_radiusOverride.Value;\n            }\n\n            return  m_realMissionEntity.GetIntersectionWithSphere(ref boundingSphere);\n            \n        }\n\n        public override void Update()\n        {\n            base.Update();\n\n            if (MyGuiManager.GetInput().GetGameControl(MyGameControlEnums.USE).IsPressed() && (base.IsSuccess() || IsNearRealLocation()))\n            {\n                if (!m_inUse)\n                {\n                    StartUse();\n                }\n                //m_elapsedTime += MyConstants.PHYSICS_STEP_SIZE_IN_MILLISECONDS;\n                //m_useProgress.UpdateValue((float)(m_elapsedTime) / (float)m_requiredTime);\n\n                //if (m_elapsedTime >= m_requiredTime)\n                //{\n                //    FinishUse();\n                //}\n            }\n        }\n\n\n\n        private void OnCanceledHandler(object sender, EventArgs e)\n        {\n            FailUse();\n        }\n\n        private void OnSuccessHandler(object sender, EventArgs e)\n        {\n            FinishUse();\n        }\n\n        private void StartUse()\n        {\n            m_inUse = true;\n            m_useProgress.Reset();\n            MyGuiManager.AddScreen(m_useProgress);\n        }\n\n        private void FinishUse()\n        {\n            m_inUse = false;\n            Success();\n        }\n\n        public void FailUse()\n        {\n            m_inUse = false;\n            m_elapsedTime = 0;\n            //m_useProgress.CloseScreenNow();\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/Sandbox/MyHubShowcaseMission.cs",
    "content": "﻿using System.Text;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing System.Collections.Generic;\nusing System.Linq;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Audio;\nusing System.Diagnostics;\nusing MinerWars.AppCode.Game.Prefabs;\nusing MinerWars.AppCode.Game.Entities.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.Missions.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.AppCode.Game.HUD;\nusing MinerWars.AppCode.Game.World.Global;\n\nnamespace MinerWars.AppCode.Game.Missions.Sandbox\n{\n    class MyHubShowcaseMission : MyMission\n    {\n        public static readonly MyMwcVector3Int BaseSector = new MyMwcVector3Int(3, 0, 9);\n\n        public MyHubShowcaseMission()\n        {\n            ID = 0; // Lets try zero for sandbox\n            DebugName = new StringBuilder(\"Hub showcase\");\n            Name = Localization.MyTextsWrapperEnum.HUB_SHOWCASE;\n            Name = Localization.MyTextsWrapperEnum.HUB_SHOWCASE_Description;\n\n            /* sector where the mission is located */\n            Location = new MyMissionLocation(BaseSector, 222); // Posledne cislo - ID dummy pointu kde prijimam misiu (v tomto pripade tiez 'player start')\n\n            RequiredActors = new MyActorEnum[] { MyActorEnum.MARCUS, MyActorEnum.MADELYN };\n            m_objectives = new List<MyObjective>();\n        }\n\n        private MySmallShipBot m_Slave;\n\n        public override void Load()\n        {\n            base.Load();\n\n            MyScriptWrapper.AlarmLaunched += MyScriptWrapper_AlarmLaunched;\n\n            // Turn off sunwind, meteorwind and icestorm\n            MyScriptWrapper.EnableGlobalEvent(World.Global.MyGlobalEventEnum.SunWind, false);\n            MyScriptWrapper.EnableGlobalEvent(World.Global.MyGlobalEventEnum.MeteorWind, false);\n            MyScriptWrapper.EnableGlobalEvent(World.Global.MyGlobalEventEnum.IceStorm, false);\n\n            // Add Fourth Reich FalseId to inventory if player already haven't got one\n            MyScriptWrapper.AddFalseIdToPlayersInventory(MyMwcObjectBuilder_FactionEnum.FourthReich);\n\n            // Add Radar Jammer to player inventory\n            MyScriptWrapper.AddInventoryItem(MyScriptWrapper.GetPlayerInventory(), MyMwcObjectBuilderTypeEnum.SmallShip_Tool, (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.RADAR_JAMMER, 1f);\n\n            // Add Hacking Tool to player inventory\n            MyScriptWrapper.AddInventoryItem(MyScriptWrapper.GetCentralInventory(), MyMwcObjectBuilderTypeEnum.SmallShip_HackingTool, (int)MyMwcObjectBuilder_SmallShip_HackingTool_TypesEnum.Level_2, 1f, true);\n            MyScriptWrapper.AddInventoryItem(MyScriptWrapper.GetCentralInventory(), MyMwcObjectBuilderTypeEnum.SmallShip_HackingTool, (int)MyMwcObjectBuilder_SmallShip_HackingTool_TypesEnum.Level_3, 1f, true);\n\n            // Set musicmood right from script start\n            MyAudio.ApplyTransition(MyMusicTransitionEnum.TensionBeforeAnAction);\n\n            m_Slave = (MySmallShipBot)MyScriptWrapper.TryGetEntity(328);\n            MySession.PlayerFriends.Add(m_Slave);\n            m_Slave.Follow(MySession.PlayerShip);\n            m_Slave.SetName(\"Slave\");\n        }\n\n        void MyScriptWrapper_AlarmLaunched(MyEntity prefabContainer, MyEntity enemy)\n        {\n            if (prefabContainer.EntityId != null && prefabContainer.EntityId.Value.NumericValue == 155) \n            {\n                MyScriptWrapper.ActivateSpawnPoint(153);\n            }\n        }\n\n        public override void Unload()\n        {\n            base.Unload();\n            MyScriptWrapper.AlarmLaunched -= MyScriptWrapper_AlarmLaunched;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/SideMissions/MySideMissionAssassination.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Managers.Session;\n\nnamespace MinerWars.AppCode.Game.Missions.SideMissions\n{\n    class MySideMissionAssassinationKillSubmission : MyObjective\n    {\n        public MySmallShipBot Target { get; set; }\n        public bool Aborted { get; private set; }\n\n        public MySideMissionAssassinationKillSubmission(MyMission parent)\n            :base(new StringBuilder(\"Kill the enemy\"), MyMissionID.SIDE_MISSION_01_ASSASSINATION_KILL, new StringBuilder(\"Your enemy needs to be terminated\"), null, parent, new MyMissionID[0], null) \n        {\n            this.IsSideMission = true;\n        }\n\n        public override bool IsSuccess()\n        {\n            if (Target == null)\n            {\n                // Target already dead/not exists\n                Aborted = true;\n                return true;\n            }\n            return Target.IsDead();\n        }\n    }\n\n    class MySideMissionAssassination : MyMission\n    {\n        MySideMissionAssassinationKillSubmission killSubmission;\n\n        public MySideMissionAssassination(MyMissionLocation missionLocation)\n        {\n            this.ID = MyMissionID.SIDE_MISSION_01_ASSASSINATION;\n            this.Description = Localization.MyTextsWrapperEnum.SIDE_MISSION_01_ASSASSINATION_Description;\n            this.Location = missionLocation;\n            this.DebugName = new StringBuilder(\"Assassination mission\");\n            killSubmission = new MySideMissionAssassinationKillSubmission(this);\n            this.m_objectives = new List<MyObjective>()\n            {\n                killSubmission\n            };\n            this.RequiredMissions = new MyMissionID[0];\n            this.IsSideMission = true;\n        }\n\n        public override void Accept()\n        {\n            float dist = float.MaxValue;\n            MySpawnPoint closestSpawn = null;\n            foreach (var spawn in MyEntities.GetEntities().OfType<MySpawnPoint>())\n            {\n                var d = (this.Location.Entity.GetPosition() - spawn.GetPosition()).LengthSquared();\n                if (d < dist)\n                {\n                    dist = d;\n                    closestSpawn = spawn;\n                }\n            }\n\n            // Spawnpoint exists and has templates\n            if (closestSpawn != null && closestSpawn.GetBotTemplates().Any())\n            {\n                // HACK: This is little hack (manually adding bot to scene), because spawnpoints are broken\n                var template = closestSpawn.GetBotTemplates().First();\n                killSubmission.Target = (MySmallShipBot)MyEntities.CreateFromObjectBuilderAndAdd(\"Assassination target\", template.m_builder, closestSpawn.WorldMatrix);\n            }\n\n            base.Accept();\n        }\n\n        public override void Success()\n        {\n            // Reward player\n            if (!killSubmission.Aborted)\n            {\n                MyScriptWrapper.AddMoney(500);\n            }\n            base.Success();\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/SinglePlayer/MilitaryOutpostMission.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Managers.EntityManager.Entities.EntityDetector;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Managers.EntityManager.Entities;\nusing System.Diagnostics;\nusing Microsoft.Xna.Framework;\nusing MinerWars.AppCode.Game.Managers.EntityManager.Entities.WayPoints;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Inventory;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.Game.World.Global;\n\n\nnamespace MinerWars.AppCode.Game.Missions.SinglePlayer\n{\n    class MyMilitaryOutpostMission : MyMission\n    {\n        private enum EntityID // list of IDs used in script\n        {\n            StartLocation = 1365,\n         \n        }\n\n        public override void ValidateIds() // checks if all IDs in enum are loaded correctly\n        {\n            foreach (var value in Enum.GetValues(typeof(EntityID)))\n            {\n                MyScriptWrapper.GetEntity((uint)((value as EntityID?).Value));\n            }\n        }\n\n\n\n        public MyMilitaryOutpostMission()\n        {\n            ID = MyMissionID.MILITARY_OUTPOST; /* ID must be added to MyMissions.cs */\n            Name = new StringBuilder(\"Military outpost\"); // Name of mission\n            Description = new StringBuilder(\"Conquer the outposts.\\n  \");\n            MyMwcVector3Int baseSector = new MyMwcVector3Int(-3210402, 0, 2812826); // Story sector of the script - i.e. (-2465,0,6541)\n            RequiredMissions = new MyMissionID[] { };\n            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation); // Starting dummy point - must by typecasted to uint and referenced from EntityID enum\n            RequiredActors = new MyActorEnum[] { MyActorEnum.Madelyn };\n           \n\n            m_objectives = new List<MyObjective>(); // Creating of list of submissions\n\n\n        }\n\n\n\n\n        public override void Load() // Code in that block will be called on the load of the sector\n        {\n            base.Load();\n            MyAudio.ApplyTransition(MyMusicTransitionEnum.HeavyFight, 3); // Sets music group to be played in the sector - no matter if the mission is running or not\n            MyScriptWrapper.SetPlayerFaction(MyMwcObjectBuilder_FactionEnum.Rainiers);\n            MyScriptWrapper.SetFactionRelation(MyMwcObjectBuilder_FactionEnum.Rainiers, MyMwcObjectBuilder_FactionEnum.China, -100);\n           \n\n       \n         \n               }\n      \n       \n\n        public override void Update() //Code in that block will be called in each frame\n        {\n            base.Update();\n\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/SinglePlayer/MyAlienGateMission.cs",
    "content": "﻿#region Using \n\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Audio.Dialogues;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.HUD;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Missions.Components;\nusing MinerWars.AppCode.Game.Missions.Objectives;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Entities;\nusing System.Diagnostics;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Entities.WayPoints;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.Resources;\nusing MinerWars.AppCode.Networking;\nusing MinerWars.AppCode.Game.GUI;\n\n#endregion\n\nnamespace MinerWars.AppCode.Game.Missions.SinglePlayer\n{\n    class MyAlienGateMission : MyMission\n    {\n        #region Members\n\n        private const int FollowCoordinatesMadelynTime = 15000;\n        private const int ContinueSearchingMadelynTime = 18000;\n        private const int CoughtInTrapMoveTime = 75000;\n        private const int RunForYourLifeObjectiveTime = 20000;\n        private const int RunForYourLifeShipMoveTime = 14000;\n        private const int RunForYourLifeDialogStartTime = 9000;\n        private const int RunForYourLifeParticleStartTime = 11000;\n        private const int RegroupWithMadelynMissionTime = 50000;\n        private const int m_10ObjectiveTime = 40000;\n        private const int m_18ObjectiveTime = 40000;\n        private const int m_20ObjectiveTime = 8000;\n        private const int m_21ObjectiveMovingTime = 9000;\n\n        private readonly MyDestroyWavesObjective m_followCords;\n        private MyEntityDetector m_followCoordinatesDetector;\n        private MyEntity m_madelyn;\n\n        #endregion\n\n        #region EntityIDs\n        private enum EntityID // list of IDs used in script\n        {\n            Voxel1 = 26431,\n            Voxel2 = 16782567,\n            Voxel3 = 26406,\n            //Objective 01\n            FollowCoordinatesDummy = 21305,\n            FollowCoordinatesSpawnPoint = 21306,\n            //Objective 02\n            ContinueSearchingDummy = 3401,\n            //Objective 03\n            FollowDirectionDummy = 4756,\n            FollowDirectionDetector = 21309,\n            //Objective04\n            CoughtInTrapDummy = 21311,\n            CoughtInTrapSpawn1 = 21702,\n            CoughtInTrapSpawn2 = 21700,\n            CoughtInTrapShip3 = 15108,\n            CoughtInTrapShip1 = 15616,\n            CoughtInTrapShip1Target = 18725,\n            CoughtInTrapShip2 = 17730,\n            CoughtInTrapShip2Target = 18726,\n            CoughtInTrapShip3Target = 95,\n            //objective 05\n            RunForYourLifeDummy = 21312,\n            RunForYourLifeParticleEffect = 18723,\n            RunForYourLifeMovingMadelyn = 4063,\n            RunForYourLifeShipTarget = 14252,\n            RunForYourLifeVoxel = 69,\n            //Objective 06\n            RegroupWithMadelynShip2 = 4297,\n            RegroupWithMadelynShip1Target = 9471,\n            RegroupWithMadelynShip2Target = 16609,\n            RegroupWithMadelynShip3Target = 18724,\n            RegroupWithMadelynShip4Target = 15276,\n            RegroupWithMadelynDetector = 21694,\n            RegroupWithMadelynSpawn1 = 21648,\n            RegroupWithMadelynSpawn2 = 21650,\n            RegroupWithMadelynDetector2 = 21696,\n            RegroupWithMadelynSpawn3 = 21651,\n            RegroupWithMadelynSpawn4 = 21652,\n            //Objective 07\n            BoardmotherShipDummy = 21785,\n            BoardmotherShipDetector1 = 21786,\n            BoardmotherShipDetector2 = 21789,\n            BoardmotherShipDetector3 = 21792,\n            BoardmotherShipSpawn1 = 21788,\n            BoardmotherShipSpawn2 = 21791,\n            BoardmotherShipSpawn3 = 21794,\n            //Objective 08\n            HackGeneratordestroy = 15618,\n            HackGeneratorDummy = 22459,\n            HackGeneratorDetector1 = 27235,\n            HackGeneratorDetector2 = 27237,\n            HackGeneratorDetector3 = 27241,\n            HackGeneratorDetector4 = 27244,\n            HackGeneratorDetector5 = 27248,\n            HackGeneratorSpawn11 = 25533,\n            HackGeneratorSpawn12 = 25534,\n            HackGeneratorSpawn21 = 25552,\n            HackGeneratorSpawn22 = 25530,\n            HackGeneratorSpawn31 = 25550,\n            HackGeneratorSpawn32 = 27243,\n            HackGeneratorSpawn33 = 25551,\n            HackGeneratorSpawn41 = 25529,\n            HackGeneratorSpawn42 = 25535,\n            HackGeneratorSpawn5 = 16785284,\n            Ship1Interier = 15727,\n            //Objective 09\n            HackEngineDummy = 22467,\n            HackEngineDetector3 = 27257,\n            HackEngineDetector4 = 16787021,\n            HackEngineDetector5 = 27261,\n            HackEngineDetector6 = 27263,\n            HackEngineSpawn2 = 25548,\n            HackEngineSpawn3 = 27259,\n            HackEngineSpawn4 = 25547,\n            HackEngineSpawn51 = 25528,\n            HackEngineSpawn52 = 25549,\n            HackEngineSpawn6 = 25526,\n            //Objective 10\n            _10WayPoint = 21878,\n            _10Spawn2 = 28070,\n            _10DisableDummy = 22484,\n            _10Dummy = 22487,\n            _10DisableTurret = 15623,\n            _10PrefabCont = 7357,\n            //_10Explosiondummy = 16787928,\n            BoardSecondShipSpawn1 = 22499,\n            BoardSecondShipSpawn2 = 22500,\n\n            //Objective 11\n            BoardSecondShipbDetector = 22509,\n            BoardSecondShipbDummy = 22522,\n            BoardSecondShipbSpawn0 = 22572,\n            BoardSecondShipbSpawn1 = 22576,\n            BoardSecondShipbSpawn2 = 22596,\n            //Objective 12\n            HackGenerator2Doors = 17731,\n            HackGenerator2Dummy = 23249,\n            HackGenerator2Detector1 = 25582,\n            HackGenerator2Detector2 = 25584,\n            HackGenerator2Spawn11 = 25520,\n            HackGenerator2Spawn12 = 25544,\n            HackGenerator2Spawn2 = 25538,\n            MotherShip2Interior = 17841,\n            //Objective 13\n            _13Dummy = 23251,\n            _13Detector1 = 25602,\n            _13Detector2 = 25586,\n            _13Detector3 = 25588,\n            _13Detector4 = 25590,\n            _13Detector5 = 25592,\n            _13Spawn11 = 25604,\n            _13Spawn12 = 25542,\n            _13Spawn13 = 25543,\n            _13Spawn2 = 25536,\n            _13Spawn3 = 25537,\n            _13Spawn41 = 25532,\n            _13Spawn42 = 25531,\n            _13Spawn51 = 25545,\n            _13Spawn52 = 25539,\n            //Objective 14\n            EnableDoorsHUB = 17857,\n            EnableDoorsDoors = 22602,\n            EnableDoorsDetector = 25594,\n            EnableDoorsSpawnPoint = 25546,\n\n            //Objective 15\n            EnterLaboratoryDummy = 23253,\n            EnterLaboratoryDetector = 25596,\n            EnterLaboratorySpawn = 25525,\n            //Objective 16\n            _16Dummy = 23255,\n            //Objective 17\n            _17Dummy = 23257,\n            _17Detector = 25598,\n            _17Spawn1 = 25524,\n            //_17Spawn2 = 25525,\n            //Objective 18\n            _18Dummy = 23263,\n            //_18Detector1 = 25592 ,\n            _18Spawn1 = 25605,\n            _18DisableDummy = 23261,\n            _18DisableTurret = 17737,\n            MotherShip2Destroyed = 9791,\n            //Objective 19\n            _19Dummy = 23279,\n            _19Spawn1 = 25513,\n            _19Spawn2 = 25512,\n            _19Ship = 14940,\n            //Objective 20\n            _20Prefab = 15074,\n            _20ShipTarget = 14051,\n            //objective 21\n            _21Detector1 = 28077,\n            _21SpawnPoint11 = 28074,\n            _21SpawnPoint12 = 28076,\n            _21VoxelAsteroidHide = 16782569,\n            _21Prefab1UnHide = 13705,\n            _21Ship2 = 13912,\n            _21Ship2Target = 14062,\n            _21Particle1 = 14049,\n            _21Particle1Target = 14061,\n            _21Particle2 = 14048,\n            _21Particle2Target = 14060,\n            _21ShipUnhide = 14395,\n            _21ToDesroy = 14018,\n            //Objective 22\n            _22Dummy = 24017,\n            _22Ship1 = 4808,\n            _22Ship2 = 11081,\n            _23Dummy = 24018,\n            _23Shiptarget = 24620,\n            RussianGeneralSpeak = 58,\n            DoorsDialogue = 60,\n            MadelynSRightWingPosition = 59,\n        }\n\n        private readonly List<uint> m_hackGeneratorCargos = new List<uint>() { 30069, 30057, 30061, 30071, 30058, 30062, 30059, 30063, 30070, 30060, 30064, 30072, 30948 };\n        private readonly List<uint> m_hackGeneratorparticles = new List<uint>() { 28959, 28963, 29011, 28966, 28968, 29009, 29005, 29065 };\n        private readonly List<uint> m_hackEngineparticles = new List<uint>() { 22454, 22457, 22458 };\n        private readonly List<uint> m_10particlesEnable = new List<uint>() { 8640, 8639 };\n        private readonly List<uint> m_10particlesDisable = new List<uint>() { 22454, 22457, 22458, 22483, 22486, 22485, 28959, 28963, 29011, 28966, 28968, 29009, 29005, 29065 };\n        private readonly List<uint> m_10explosionDummies = new List<uint>() { 27, 26, 25, 24, 23, 19, 18, 17, 16, 15 };\n        private readonly List<uint> m_boardSecondShipparticles = new List<uint>() { 8641, 8648, 9141, 8644, 9142, 8646, 9135, 9137, 9139, 9136, 9134, 9138 };\n        private readonly List<uint> m_boardSecondShipbparticlesDisable = new List<uint>() { 8641, 8648, 9141, 8644, 9142, 8646, 9135, 9137, 9139, 9136, 9134, 9138 };\n        private readonly List<uint> m_boardSecondShipbparticlesEnable = new List<uint>() { 22514, 22515, 22520 };\n        private readonly List<uint> m_hackGenerator2Particles = new List<uint>() { 29069, 29072, 29074, 29109, 29077, 29165, 29170, 29168 };\n        private readonly List<uint> m_hackGenerator2Cargos = new List<uint>() { 30065, 30066, 30049, 30053, 30050, 30054, 30067, 30068, 30052, 30056, 30055, 30051 };\n        private readonly List<uint> m_13Particles = new List<uint>() { 28072, 28071, 28073 };\n\n        private readonly List<uint> m_18EnableParticles = new List<uint>() { 23262, 23260, 23259 };\n\n        private readonly List<uint> m_18EnableParticlesBoom = new List<uint>() { 10040, 10039 };\n        private readonly List<uint> m_18DisableParticlesBoom = new List<uint>() { 23259, 23260, 23262, 28072, 28071, 28073, 29069, 29072, 29074, 29109, 29077, 29165, 29170, 29168 };\n        private readonly List<uint> m_18explosionDummies = new List<uint>() { 28, 29, 30, 31, 32, 33, 34, 35, 36, 37 };\n\n\n        private readonly List<uint> m_19EnableParticles = new List<uint>() { 10042, 10043, 10059, 10046, 10038, 10041, 10045, 10057, 10037, 10044, 10061, 10062, };\n        private readonly List<uint> m_19DisableParticles = new List<uint>() { 22514, 9134, 22515, 9141, 8648 };\n        private readonly List<uint> m_21Enableparticles = new List<uint>() { 13703, 14048, 13736, 14049, 13737 };\n        private readonly List<uint> m_21EnableparticlesDestroy = new List<uint>() { 14253, 14567, 14541, 14532, 14565 };\n        private readonly List<uint> m_21DisableParticlesDestroy = new List<uint>() { 14049, 14048 };\n\n\n\n        public override void ValidateIds() // checks if all IDs in enum are loaded correctly\n        {\n            foreach (var value in Enum.GetValues(typeof(EntityID)))\n            {\n                MyScriptWrapper.GetEntity((uint)(((EntityID?)value).Value));\n            }\n\n\n            var list = new List<uint>();\n            list.AddRange(m_hackGeneratorCargos);\n            list.AddRange(m_hackGeneratorparticles);\n            list.AddRange(m_hackEngineparticles);\n            list.AddRange(m_10particlesEnable);\n            list.AddRange(m_10particlesDisable);\n            list.AddRange(m_boardSecondShipparticles);\n            list.AddRange(m_boardSecondShipbparticlesDisable);\n            list.AddRange(m_boardSecondShipbparticlesEnable);\n            list.AddRange(m_hackGenerator2Cargos);\n            list.AddRange(m_hackGenerator2Particles);\n            list.AddRange(m_13Particles);\n            list.AddRange(m_18EnableParticles);\n            list.AddRange(m_19EnableParticles);\n            list.AddRange(m_19DisableParticles);\n            list.AddRange(m_21Enableparticles);\n            list.AddRange(m_21EnableparticlesDestroy);\n            list.AddRange(m_13Particles);\n            list.AddRange(m_21DisableParticlesDestroy);\n\n            foreach (var u in list)\n            {\n                MyScriptWrapper.GetEntity(u);\n            }\n        }\n        #endregion\n\n        public MyAlienGateMission()\n        {\n            ID = MyMissionID.ALIEN_GATE;\n            DebugName = new StringBuilder(\"22-Alien artifact\");\n            Name = MyTextsWrapperEnum.ALIEN_GATE;\n            Description = MyTextsWrapperEnum.ALIEN_GATE_Description;\n            Flags = MyMissionFlags.Story;\n            AchievementName = MySteamAchievementNames.Mission31_AlienGate;\n\n            MyMwcVector3Int baseSector = new MyMwcVector3Int(-1202900, 0, -112652); // Story sector of the script - i.e. (-2465,0,6541)\n\n            Location = new MyMissionLocation(baseSector, (uint)EntityID.FollowCoordinatesDummy); // Starting dummy point - must by typecasted to uint and referenced from EntityID enum\n\n            RequiredMissions = new MyMissionID[] { MyMissionID.EAC_TRANSMITTER }; // IDs of missions required to make this mission available\n            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.ALIEN_GATE_23 };\n            RequiredActors = new MyActorEnum[] { MyActorEnum.MARCUS, MyActorEnum.MADELYN, MyActorEnum.TARJA, MyActorEnum.VALENTIN };\n\n            #region Objectives\n            m_objectives = new List<MyObjective>();\n\n\n            var keepFormation = new MyObjective(\n                (MyTextsWrapperEnum.ALIEN_GATE_RIGHT_WING_Name),\n                MyMissionID.ALIEN_GATE_RIGHT_WING,\n                (MyTextsWrapperEnum.ALIEN_GATE_RIGHT_WING_Description),\n                null,\n                this,\n                new MyMissionID[] { },\n                new MyMissionLocation(baseSector, (uint)EntityID.MadelynSRightWingPosition)) { HudName = MyTextsWrapperEnum.HudLeftWing };\n            m_objectives.Add(keepFormation);\n\n\n            m_followCords = new MyDestroyWavesObjective(\n                (MyTextsWrapperEnum.ALIEN_GATE_FOLLOW_COORDINATES_Name),\n                MyMissionID.ALIEN_GATE_FOLLOW_COORDINATES,\n                (MyTextsWrapperEnum.ALIEN_GATE_FOLLOW_COORDINATES_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.ALIEN_GATE_RIGHT_WING, },\n                new List<uint>() { },\n                new MyMissionLocation(baseSector, (uint)EntityID.FollowCoordinatesDummy),\n                radiusOverride: 150) { StartDialogId = MyDialogueEnum.ALIEN_GATE_0100, SuccessDialogId = MyDialogueEnum.ALIEN_GATE_0300 };\n            m_followCords.AddWave(new List<uint>() { (uint)EntityID.FollowCoordinatesSpawnPoint });\n            m_followCords.OnMissionLoaded += M01FollowCordsOnOnMissionLoaded;\n            m_followCords.OnMissionSuccess += M01FollowCordsOnOnMissionSuccess;\n            m_followCords.Components.Add(new MyMovingEntity(\"Madelyn\", (uint)EntityID.FollowCoordinatesDummy, FollowCoordinatesMadelynTime));\n            m_objectives.Add(m_followCords);\n\n\n            var continueSearching = new MyObjective(\n                (MyTextsWrapperEnum.ALIEN_GATE_CONTINUE_SEARCHING_Name),\n                MyMissionID.ALIEN_GATE_CONTINUE_SEARCHING,\n                (MyTextsWrapperEnum.ALIEN_GATE_CONTINUE_SEARCHING_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.ALIEN_GATE_FOLLOW_COORDINATES },\n                new MyMissionLocation(baseSector, (uint)EntityID.ContinueSearchingDummy)\n                ) { SaveOnSuccess = false, SuccessDialogId = MyDialogueEnum.ALIEN_GATE_0400, HudName = MyTextsWrapperEnum.HudSearch };\n            continueSearching.Components.Add(new MyMovingEntity(\"Madelyn\", (uint)EntityID.ContinueSearchingDummy, ContinueSearchingMadelynTime));\n            m_objectives.Add(continueSearching);\n\n\n            var followDirection = new MyObjective(\n                (MyTextsWrapperEnum.ALIEN_GATE_FOLLOW_DIRECTION_Name),\n                MyMissionID.ALIEN_GATE_FOLLOW_DIRECTION,\n                (MyTextsWrapperEnum.ALIEN_GATE_FOLLOW_DIRECTION_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.ALIEN_GATE_CONTINUE_SEARCHING },\n                new MyMissionLocation(baseSector, (uint)EntityID.FollowDirectionDummy)) { HudName = MyTextsWrapperEnum.HudFollow };\n            followDirection.OnMissionLoaded += M03FollowDirectionOnOnMissionLoaded;\n            followDirection.OnMissionCleanUp += M03FollowDirectionOnOnMissionCleanUp;\n            m_objectives.Add(followDirection);\n\n\n            m_coughtInTrap = new MyObjectiveDialog\n                (MyTextsWrapperEnum.ALIEN_GATE_COUGHT_IN_TRAP_Name,\n                 MyMissionID.ALIEN_GATE_COUGHT_IN_TRAP,\n                 MyTextsWrapperEnum.ALIEN_GATE_COUGHT_IN_TRAP_Description,\n                 null,\n                 this,\n                 new MyMissionID[] { MyMissionID.ALIEN_GATE_FOLLOW_DIRECTION },\n                 MyDialogueEnum.ALIEN_GATE_0500\n                 ) { Location = new MyMissionLocation(baseSector, (uint)EntityID.CoughtInTrapDummy), SaveOnSuccess = true };\n            m_coughtInTrap.OnMissionLoaded += M04CoughtInTrapOnOnMissionLoaded;\n            m_coughtInTrap.Components.Add(new MyMovingEntity((uint)EntityID.CoughtInTrapShip1, (uint)EntityID.CoughtInTrapShip1Target, CoughtInTrapMoveTime));\n            m_coughtInTrap.Components.Add(new MyMovingEntity((uint)EntityID.CoughtInTrapShip2, (uint)EntityID.CoughtInTrapShip2Target, CoughtInTrapMoveTime));\n            m_coughtInTrap.Components.Add(new MyMovingEntity((uint)EntityID.CoughtInTrapShip3, (uint)EntityID.CoughtInTrapShip3Target, CoughtInTrapMoveTime));\n            m_objectives.Add(m_coughtInTrap);\n            \n\n\n\n            m_runForYourLife = new MyTimedObjective\n                ((MyTextsWrapperEnum.ALIEN_GATE_RUN_FOR_LIFE_Name),\n                 MyMissionID.ALIEN_GATE_RUN_FOR_LIFE,\n                 (MyTextsWrapperEnum.ALIEN_GATE_RUN_FOR_LIFE_Description),\n                 null,\n                 this,\n                 new MyMissionID[] { MyMissionID.ALIEN_GATE_COUGHT_IN_TRAP },\n                 TimeSpan.FromMilliseconds(RunForYourLifeObjectiveTime),\n                 startDialogId: MyDialogueEnum.ALIEN_GATE_0600\n                ) { DisplayCounter = false, Location = new MyMissionLocation(baseSector, (uint)EntityID.RunForYourLifeDummy), HudName = MyTextsWrapperEnum.HudRun };\n            m_runForYourLife.OnMissionLoaded += M05RunForYourLifeOnOnMissionLoaded;\n            m_runForYourLife.Components.Add(new MyMovingEntity(MyActorConstants.GetActorName(MyActorEnum.MADELYN), (uint)EntityID.RunForYourLifeShipTarget, RunForYourLifeShipMoveTime));\n            m_objectives.Add(m_runForYourLife);\n            \n            m_regroupWithMadelyn = new MyTimedObjective(\n                (MyTextsWrapperEnum.ALIEN_GATE_REGROUP_WITH_MADELYN_Name),\n                MyMissionID.ALIEN_GATE_REGROUP_WITH_MADELYN,\n                (MyTextsWrapperEnum.ALIEN_GATE_REGROUP_WITH_MADELYN_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.ALIEN_GATE_RUN_FOR_LIFE, },\n                TimeSpan.FromMilliseconds(RegroupWithMadelynMissionTime)\n            ) { DisplayCounter = false, Location = new MyMissionLocation(baseSector, (uint)EntityID.RegroupWithMadelynShip1Target), HudName = MyTextsWrapperEnum.HudRegroup, SaveOnSuccess = true };\n            m_regroupWithMadelyn.OnMissionLoaded += M06RegroupWithMadelynOnOnMissionLoaded;\n            m_regroupWithMadelyn.Components.Add(new MySpawnpointWaves((uint)EntityID.RegroupWithMadelynDetector, 1, new List<uint[]>()\n                                                                                                         {\n                                                                                                             new uint[]{(uint)EntityID.RegroupWithMadelynSpawn1},\n                                                                                                             new uint[]{(uint)EntityID.RegroupWithMadelynSpawn2}\n                                                                                                         }));\n            m_regroupWithMadelyn.Components.Add(new MySpawnpointWaves((uint)EntityID.RegroupWithMadelynDetector2, 1, new List<uint[]>()\n                                                                                                         {\n                                                                                                             new uint[]{(uint)EntityID.RegroupWithMadelynSpawn3, (uint)EntityID.RegroupWithMadelynSpawn4}\n                                                                                                         }));\n\n            m_regroupWithMadelyn.Components.Add(new MyMovingEntity(MyActorConstants.GetActorName(MyActorEnum.MADELYN), (uint)EntityID.RegroupWithMadelynShip1Target, RegroupWithMadelynMissionTime));\n            m_regroupWithMadelyn.Components.Add(new MyMovingEntity((uint)EntityID.CoughtInTrapShip1, (uint)EntityID.RegroupWithMadelynShip2Target, RegroupWithMadelynMissionTime));\n            m_regroupWithMadelyn.Components.Add(new MyMovingEntity((uint)EntityID.CoughtInTrapShip2, (uint)EntityID.RegroupWithMadelynShip3Target, RegroupWithMadelynMissionTime));\n            m_regroupWithMadelyn.Components.Add(new MyMovingEntity((uint)EntityID.CoughtInTrapShip3, (uint)EntityID.RegroupWithMadelynShip4Target, RegroupWithMadelynMissionTime));\n            m_regroupWithMadelyn.Components.Add(new MyTimedDialogue(new TimeSpan(0, 0, 50), MyDialogueEnum.ALIEN_GATE_0900));\n            m_regroupWithMadelyn.Components.Add(new MyDetectorDialogue((uint)EntityID.RegroupWithMadelynShip1Target, MyDialogueEnum.ALIEN_GATE_0800B));\n            m_objectives.Add(m_regroupWithMadelyn);\n            \n\n\n            m_boardMotherShip = new MyObjective\n                ((MyTextsWrapperEnum.ALIEN_GATE_BOARD_MOTHER_SHIP_Name),\n                 MyMissionID.ALIEN_GATE_BOARD_MOTHER_SHIP,\n                 (MyTextsWrapperEnum.ALIEN_GATE_BOARD_MOTHER_SHIP_Description),\n                 null,\n                 this,\n                 new MyMissionID[] { MyMissionID.ALIEN_GATE_REGROUP_WITH_MADELYN, },\n                 new MyMissionLocation(baseSector, (uint)EntityID.BoardmotherShipDummy)\n                ) { SuccessDialogId = MyDialogueEnum.ALIEN_GATE_1100, HudName = MyTextsWrapperEnum.HudMothership };\n            m_boardMotherShip.Components.Add(new MySpawnpointWaves((uint)EntityID.BoardmotherShipDetector1, 1, (uint)EntityID.BoardmotherShipSpawn1));\n            m_boardMotherShip.Components.Add(new MySpawnpointWaves((uint)EntityID.BoardmotherShipDetector2, 1, (uint)EntityID.BoardmotherShipSpawn2));\n            m_boardMotherShip.Components.Add(new MySpawnpointWaves((uint)EntityID.BoardmotherShipDetector3, 1, (uint)EntityID.BoardmotherShipSpawn3));\n            m_boardMotherShip.Components.Add(new MyDetectorDialogue((uint)EntityID.RussianGeneralSpeak, MyDialogueEnum.ALIEN_GATE_1000));\n            m_boardMotherShip.OnMissionLoaded += BoardMotherShipOnOnMissionLoaded;\n            m_objectives.Add(m_boardMotherShip);\n\n            m_hackGenerator = new MyUseObjective\n                ((MyTextsWrapperEnum.ALIEN_GATE_HACK_GENERATOR_Name),\n                 MyMissionID.ALIEN_GATE_HACK_GENERATOR,\n                 (MyTextsWrapperEnum.ALIEN_GATE_HACK_GENERATOR_Description),\n                 null,\n                 this,\n                 new MyMissionID[] { MyMissionID.ALIEN_GATE_BOARD_MOTHER_SHIP },\n                 new MyMissionLocation(baseSector, (uint)EntityID.HackGeneratorDummy),\n                 MyTextsWrapperEnum.PressToHack,\n                 MyTextsWrapperEnum.Generator,\n                 MyTextsWrapperEnum.StartingProgress,\n                 5000\n                );\n            m_hackGenerator.SaveOnSuccess = true;\n            m_hackGenerator.OnMissionLoaded += M08HackGeneratorOnOnMissionLoaded;\n            m_hackGenerator.Components.Add(new MyTimedDialogue(new TimeSpan(0, 0, 2), MyDialogueEnum.ALIEN_GATE_1200));\n            m_hackGenerator.Components.Add(new MySpawnpointWaves((uint)EntityID.HackGeneratorDetector1, 1, new List<uint[]>()\n                                                                                                         {\n                                                                                                             new uint[]{(uint)EntityID.HackGeneratorSpawn11},\n                                                                                                             new uint[]{(uint)EntityID.HackGeneratorSpawn12}\n                                                                                                         }));\n            m_hackGenerator.Components.Add(new MySpawnpointWaves((uint)EntityID.HackGeneratorDetector2, 1, new List<uint[]>()\n                                                                                                         {\n                                                                                                             new uint[]{(uint)EntityID.HackGeneratorSpawn21},\n                                                                                                             new uint[]{(uint)EntityID.HackGeneratorSpawn22}\n                                                                                                         }));\n            m_hackGenerator.Components.Add(new MySpawnpointWaves((uint)EntityID.HackGeneratorDetector3, 1, new List<uint[]>()\n                                                                                                         {\n                                                                                                             new uint[]{(uint)EntityID.HackGeneratorSpawn31,(uint)EntityID.HackGeneratorSpawn32,(uint)EntityID.HackGeneratorSpawn33},\n                                                                                                         }));\n            m_hackGenerator.Components.Add(new MySpawnpointWaves((uint)EntityID.HackGeneratorDetector4, 1, new List<uint[]>()\n                                                                                                         {\n                                                                                                             new uint[]{(uint)EntityID.HackGeneratorSpawn41,(uint)EntityID.HackGeneratorSpawn42},\n                                                                                                         }));\n            m_hackGenerator.Components.Add(new MySpawnpointWaves((uint)EntityID.HackGeneratorDetector5, 1, new List<uint[]>()\n                                                                                                         {\n                                                                                                             new uint[]{(uint)EntityID.HackGeneratorSpawn5},\n                                                                                                         }));\n            m_objectives.Add(m_hackGenerator);\n\n\n            m_hackEngine = new MyUseObjective\n                ((MyTextsWrapperEnum.ALIEN_GATE_HACK_ENGINE_Name),\n                 MyMissionID.ALIEN_GATE_HACK_ENGINE,\n                 (MyTextsWrapperEnum.ALIEN_GATE_HACK_ENGINE_Description),\n                 null,\n                 this,\n                 new MyMissionID[] { MyMissionID.ALIEN_GATE_HACK_GENERATOR },\n                 new MyMissionLocation(baseSector, (uint)EntityID.HackEngineDummy),\n                 MyTextsWrapperEnum.PressToHack,\n                 MyTextsWrapperEnum.Generator,\n                 MyTextsWrapperEnum.StartingProgress,\n                 5000,\n                 MyUseObjectiveType.Hacking,\n                 startDialogId: MyDialogueEnum.ALIEN_GATE_1300\n                ) { SuccessDialogId = MyDialogueEnum.ALIEN_GATE_1500, SaveOnSuccess = true };\n            m_hackEngine.OnMissionLoaded += M09HackEngineOnOnMissionLoaded;\n            m_hackEngine.Components.Add(new MyDetectorDialogue((uint)EntityID.HackEngineDummy, MyDialogueEnum.ALIEN_GATE_1400));\n            m_hackEngine.Components.Add(new MySpawnpointWaves((uint)EntityID.HackGeneratorDetector5, 1, new List<uint[]>()\n                                                                                                         {\n                                                                                                             new uint[]{(uint)EntityID.HackGeneratorSpawn5},\n                                                                                                        }));\n\n            m_hackEngine.Components.Add(new MySpawnpointWaves((uint)EntityID.HackGeneratorDetector4, 1, new List<uint[]>()\n                                                                                                         {\n                                                                                                             new uint[]{(uint)EntityID.HackEngineSpawn2},\n                                                                                                         }));\n            m_hackEngine.Components.Add(new MySpawnpointWaves((uint)EntityID.HackEngineDetector3, 1, new List<uint[]>()\n                                                                                                         {\n                                                                                                             new uint[]{(uint)EntityID.HackEngineSpawn3},\n                                                                                                         }));\n            m_hackEngine.Components.Add(new MySpawnpointWaves((uint)EntityID.HackEngineDetector4, 1, new List<uint[]>()\n                                                                                                         {\n                                                                                                             new uint[]{(uint)EntityID.HackEngineSpawn4},\n                                                                                                         }));\n            m_hackEngine.Components.Add(new MySpawnpointWaves((uint)EntityID.HackEngineDetector5, 1, new List<uint[]>()\n                                                                                                         {\n                                                                                                             new uint[]{(uint)EntityID.HackEngineSpawn51},\n                                                                                                             new uint[]{(uint)EntityID.HackEngineSpawn52},\n                                                                                                         }));\n            m_hackEngine.Components.Add(new MySpawnpointWaves((uint)EntityID.HackEngineDetector6, 1, new List<uint[]>()\n                                                                                                         {\n                                                                                                             new uint[]{(uint)EntityID.HackEngineSpawn6},\n                                                                                                         }));\n            m_objectives.Add(m_hackEngine);\n\n\n            m_leaveShip1 = new MyTimedReachLocationObjective\n                ((MyTextsWrapperEnum.ALIEN_GATE_LEAVE_SHIP_Name),\n                 MyMissionID.ALIEN_GATE_LEAVE_SHIP,\n                 (MyTextsWrapperEnum.ALIEN_GATE_LEAVE_SHIP_Description),\n                 null,\n                 this,\n                 new MyMissionID[] { MyMissionID.ALIEN_GATE_HACK_ENGINE, },\n                 TimeSpan.FromMilliseconds((double)m_10ObjectiveTime),\n                 new MyMissionLocation(baseSector, (uint)EntityID._10Dummy)\n                ) { HudName = MyTextsWrapperEnum.Nothing };\n\n            m_leaveShip1.OnMissionLoaded += M10LeaveShip1OnOnMissionLoaded;\n            m_leaveShip1.OnMissionFailed += M10LeaveShip1OnOnMissionFailed;\n            m_leaveShip1.Components.Add(new MySpawnpointWaves((uint)EntityID.HackEngineDetector4, 1, new List<uint[]>()\n                                                                                                         {\n                                                                                                             new uint[]{(uint)EntityID.HackEngineSpawn4},\n                                                                                                        }));\n\n            m_leaveShip1.Components.Add(new MySpawnpointWaves((uint)EntityID.HackGeneratorDetector3, 1, new List<uint[]>()\n                                                                                                         {\n                                                                                                             new uint[]{(uint)EntityID._10Spawn2},\n                                                                                                         }));\n            m_objectives.Add(m_leaveShip1);\n\n\n            m_regroupWithMadelyn2 = new MyObjective(\n                (MyTextsWrapperEnum.ALIEN_GATE_REGROPUP_WITH_MADELYN_Name),\n                MyMissionID.ALIEN_GATE_REGROPUP_WITH_MADELYN,\n                (MyTextsWrapperEnum.ALIEN_GATE_REGROPUP_WITH_MADELYN_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.ALIEN_GATE_LEAVE_SHIP, },\n                new MyMissionLocation(baseSector, (uint)EntityID.RegroupWithMadelynShip1Target),\n                startDialogId: MyDialogueEnum.ALIEN_GATE_1700\n            ) { HudName = MyTextsWrapperEnum.HudRegroup, SaveOnSuccess = true };\n            m_regroupWithMadelyn2.OnMissionLoaded += M11RegroupWithMadelyn2OnOnMissionLoaded;\n            m_objectives.Add(m_regroupWithMadelyn2);\n\n            m_shipbBoard2 = new MyObjective(\n                (MyTextsWrapperEnum.ALIEN_GATE_BOARD_SECOND_Name),\n                MyMissionID.ALIEN_GATE_BOARD_SECOND,\n                (MyTextsWrapperEnum.ALIEN_GATE_BOARD_SECOND_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.ALIEN_GATE_REGROPUP_WITH_MADELYN, },\n                new MyMissionLocation(baseSector, (uint)EntityID.BoardSecondShipbDummy)\n                ) { StartDialogId = MyDialogueEnum.ALIEN_GATE_1900, HudName = MyTextsWrapperEnum.HudMothership };\n            m_shipbBoard2.Components.Add(new MySpawnpointWaves((uint)EntityID.RegroupWithMadelynDetector, 1, new List<uint[]>()\n                                                                                                         {\n                                                                                                             new uint[]{(uint)EntityID.BoardSecondShipbSpawn1, (uint)EntityID.BoardSecondShipbSpawn2},\n                                                                                                        }));\n            m_shipbBoard2.OnMissionLoaded += M11BBoard2OnOnMissionLoaded;\n            m_objectives.Add(m_shipbBoard2);\n\n\n            m_hackGenerator2 = new MyUseObjective\n                ((MyTextsWrapperEnum.ALIEN_GATE_HACK_GENERATOR2_Name),\n                 MyMissionID.ALIEN_GATE_HACK_GENERATOR2,\n                 (MyTextsWrapperEnum.ALIEN_GATE_HACK_GENERATOR2_Description),\n                 null,\n                 this,\n                 new MyMissionID[] { MyMissionID.ALIEN_GATE_BOARD_SECOND },\n                 new MyMissionLocation(baseSector, (uint)EntityID.HackGenerator2Dummy),\n                 MyTextsWrapperEnum.PressToHack,\n                 MyTextsWrapperEnum.Generator,\n                 MyTextsWrapperEnum.StartingProgress,\n                 5000,\n                 MyUseObjectiveType.Hacking\n                ) { StartDialogId = MyDialogueEnum.ALIEN_GATE_2000, SaveOnSuccess = true };\n            m_hackGenerator2.OnMissionLoaded += M12HackGenerator2OnOnMissionLoaded;\n\n            m_hackGenerator2.Components.Add(new MySpawnpointWaves((uint)EntityID.HackGenerator2Detector1, 1, new List<uint[]>()\n                                                                                                         {\n                                                                                                             new uint[]{(uint)EntityID.HackGenerator2Spawn11, (uint)EntityID.HackGenerator2Spawn12},\n                                                                                                        }));\n            m_hackGenerator2.Components.Add(new MySpawnpointWaves((uint)EntityID.HackGenerator2Detector2, 1, new List<uint[]>()\n                                                                                                         {\n                                                                                                             new uint[]{(uint)EntityID.HackGenerator2Spawn2},\n                                                                                                        }));\n            m_objectives.Add(m_hackGenerator2);\n\n\n            m_hackEngine2 = new MyObjective(\n                (MyTextsWrapperEnum.ALIEN_GATE_HACK_ENGINE_2_Name),\n                MyMissionID.ALIEN_GATE_HACK_ENGINE_2,\n                (MyTextsWrapperEnum.ALIEN_GATE_HACK_ENGINE_2_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.ALIEN_GATE_HACK_GENERATOR2 },\n                new MyMissionLocation(baseSector, (uint)EntityID._13Dummy)/*,\n                startDialogId: MyDialogueEnum.ALIEN_GATE_2100*/\n                );\n            m_hackEngine2.OnMissionLoaded += M13HackEngine2OnOnMissionLoaded;\n            m_hackEngine2.Components.Add(new MySpawnpointWaves((uint)EntityID._13Detector1, 1, new List<uint[]>()\n                                                                                                         {\n                                                                                                             new uint[]{(uint)EntityID._13Spawn11, (uint)EntityID._13Spawn12,(uint)EntityID._13Spawn13},\n                                                                                                        }));\n            m_hackEngine2.Components.Add(new MySpawnpointWaves((uint)EntityID._13Detector2, 1, new List<uint[]>()\n                                                                                                         {\n                                                                                                             new uint[]{(uint)EntityID._13Spawn2}\n                                                                                                        }));\n            m_hackEngine2.Components.Add(new MySpawnpointWaves((uint)EntityID._13Detector3, 1, new List<uint[]>()\n                                                                                                         {\n                                                                                                             new uint[]{(uint)EntityID._13Spawn3}\n                                                                                                        }));\n            m_hackEngine2.Components.Add(new MySpawnpointWaves((uint)EntityID._13Detector4, 1, new List<uint[]>()\n                                                                                                         {\n                                                                                                             new uint[]{(uint)EntityID._13Spawn41},\n                                                                                                            new uint[]{(uint)EntityID._13Spawn42}\n                                                                                                        }));\n            m_hackEngine2.Components.Add(new MySpawnpointWaves((uint)EntityID._13Detector5, 1, new List<uint[]>()\n                                                                                                         {\n                                                                                                             new uint[]{(uint)EntityID._13Spawn51},\n                                                                                                            new uint[]{(uint)EntityID._13Spawn52}\n                                                                                                        }));\n            m_objectives.Add(m_hackEngine2);\n\n\n            m_enableDoors = new MyObjectiveEnablePrefabs(\n                (MyTextsWrapperEnum.ALIEN_GATE_ENABLE_DOORS_Name),\n                MyMissionID.ALIEN_GATE_ENABLE_DOORS,\n                (MyTextsWrapperEnum.ALIEN_GATE_ENABLE_DOORS_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.ALIEN_GATE_HACK_ENGINE_2 },\n                null,\n                new List<uint> { (uint)EntityID.EnableDoorsHUB },\n                new List<uint> { (uint)EntityID.EnableDoorsDoors, }\n\n\n                ) { HudName = MyTextsWrapperEnum.HudHub };\n            m_enableDoors.Components.Add(new MySpawnpointWaves((uint)EntityID.EnableDoorsDetector, 1, new List<uint[]>()\n                                                                                                         {\n                                                                                                             new uint[]{(uint)EntityID.EnableDoorsSpawnPoint}\n                                                                                                        }));\n\n            m_enableDoors.Components.Add(new MyDetectorDialogue((uint)EntityID.DoorsDialogue, MyDialogueEnum.ALIEN_GATE_2200));\n            m_objectives.Add(m_enableDoors);\n\n            m_enterlaboratory = new MyObjective(\n                (MyTextsWrapperEnum.ALIEN_GATE_ENTER_LAB_Name),\n                MyMissionID.ALIEN_GATE_ENTER_LAB,\n                (MyTextsWrapperEnum.ALIEN_GATE_ENTER_LAB_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.ALIEN_GATE_ENABLE_DOORS },\n                new MyMissionLocation(baseSector, (uint)EntityID.EnterLaboratoryDummy)\n                // startDialogId: m_dialog12\n                ) { StartDialogId = MyDialogueEnum.ALIEN_GATE_2300, HudName = MyTextsWrapperEnum.HudLab };\n            m_enterlaboratory.Components.Add(new MySpawnpointWaves((uint)EntityID.EnterLaboratoryDetector, 1, new List<uint[]>()\n                                                                                                         {\n                                                                                                             new uint[]{(uint)EntityID.EnterLaboratorySpawn}\n                                                                                                        }));\n            m_objectives.Add(m_enterlaboratory);\n\n            m_downloadData = new MyUseObjective\n                ((MyTextsWrapperEnum.ALIEN_GATE_16_Name),\n                 MyMissionID.ALIEN_GATE_16,\n                 (MyTextsWrapperEnum.ALIEN_GATE_16_Description),\n                 null,\n                 this,\n                 new MyMissionID[] { MyMissionID.ALIEN_GATE_ENTER_LAB },\n                 new MyMissionLocation(baseSector, (uint)EntityID._16Dummy),\n                 MyTextsWrapperEnum.PressToDownloadData,\n                 MyTextsWrapperEnum.DataTransfer,\n                 MyTextsWrapperEnum.DownloadingData,\n                 3000,\n                 MyUseObjectiveType.Taking\n                ) { StartDialogId = MyDialogueEnum.ALIEN_GATE_2400, SaveOnSuccess = true };\n            m_objectives.Add(m_downloadData);\n\n\n            m_hackGenerator3 = new MyUseObjective\n                ((MyTextsWrapperEnum.ALIEN_GATE_17_Name),\n                 MyMissionID.ALIEN_GATE_17,\n                 (MyTextsWrapperEnum.ALIEN_GATE_17_Description),\n                 null,\n                 this,\n                 new MyMissionID[] { MyMissionID.ALIEN_GATE_16 },\n                 new MyMissionLocation(baseSector, (uint)EntityID._17Dummy),\n                 MyTextsWrapperEnum.PressToHack,\n                 MyTextsWrapperEnum.Generator,\n                 MyTextsWrapperEnum.StartingProgress,\n                 5000,\n                 MyUseObjectiveType.Hacking,\n                 startDialogId: MyDialogueEnum.ALIEN_GATE_2500\n                );\n            m_objectives.Add(m_hackGenerator3);\n            m_hackGenerator3.OnMissionLoaded += M17HackGenerator3OnOnMissionLoaded;\n\n            m_hackGenerator3.Components.Add(new MySpawnpointWaves((uint)EntityID._17Detector, 1, new List<uint[]>()\n                                                                                                         {\n                                                                                                             new uint[]{(uint)EntityID._17Spawn1,(uint)EntityID.EnterLaboratorySpawn}\n                                                                                                        }));\n\n            m_leaveShip = new MyTimedReachLocationObjective\n                ((MyTextsWrapperEnum.ALIEN_GATE_18_Name),\n                 MyMissionID.ALIEN_GATE_18,\n                 (MyTextsWrapperEnum.ALIEN_GATE_18_Description),\n                 null,\n                 this,\n                 new MyMissionID[] { MyMissionID.ALIEN_GATE_17, },\n                 TimeSpan.FromMilliseconds((double)m_18ObjectiveTime),\n                 new MyMissionLocation(baseSector, (uint)EntityID._18Dummy)\n\n                ) { StartDialogId = MyDialogueEnum.ALIEN_GATE_2600, HudName = MyTextsWrapperEnum.Nothing, SaveOnSuccess = true };\n            m_leaveShip.OnMissionLoaded += M18LeaveShipOnOnMissionLoaded;\n            m_leaveShip.OnMissionFailed += M18LeaveShipOnOnMissionFailed;\n            m_leaveShip.Components.Add(new MySpawnpointWaves((uint)EntityID._13Detector5, 1, new List<uint[]>()\n                                                                                                         {\n                                                                                                             new uint[]{(uint)EntityID._18Spawn1}\n                                                                                                        }));\n            m_objectives.Add(m_leaveShip);\n\n            m_killReef = new MyObjective(\n                (MyTextsWrapperEnum.ALIEN_GATE_19_Name),\n                MyMissionID.ALIEN_GATE_19,\n                (MyTextsWrapperEnum.ALIEN_GATE_19_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.ALIEN_GATE_18 },\n                new MyMissionLocation(baseSector, (uint)EntityID._19Dummy)\n\n                ) { StartDialogId = MyDialogueEnum.ALIEN_GATE_2800 };\n            m_killReef.OnMissionLoaded += M19KilReefOnOnMissionLoaded;\n            m_objectives.Add(m_killReef);\n\n\n            m_20ReefEscape = new MyTimedObjective\n                ((MyTextsWrapperEnum.ALIEN_GATE_20_Name),\n                 MyMissionID.ALIEN_GATE_20,\n                 (MyTextsWrapperEnum.ALIEN_GATE_20_Description),\n                 null,\n                 this,\n                 new MyMissionID[] { MyMissionID.ALIEN_GATE_19, },\n                 TimeSpan.FromMilliseconds(m_20ObjectiveTime)\n                ) { HudName = MyTextsWrapperEnum.HudFrancisReef };\n            m_20ReefEscape.Location = new MyMissionLocation(baseSector, (uint)EntityID._20Prefab);\n            m_20ReefEscape.Components.Add(new MyMovingEntity((uint)EntityID._19Ship, (uint)EntityID._20ShipTarget, m_20ObjectiveTime));\n            m_20ReefEscape.OnMissionLoaded += M20ReefEscapeOnOnMissionLoaded;\n            m_20ReefEscape.OnMissionSuccess += ReefEscapeOnOnMissionSuccess;\n            m_objectives.Add(m_20ReefEscape);\n\n            m_21DestroyReef = new MyObjectiveDestroy(\n                (MyTextsWrapperEnum.ALIEN_GATE_21_Name),\n                MyMissionID.ALIEN_GATE_21,\n                (MyTextsWrapperEnum.ALIEN_GATE_21_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.ALIEN_GATE_20 },\n                new List<uint>() { (uint)EntityID._21ToDesroy }) { StartDialogId = MyDialogueEnum.ALIEN_GATE_2900, HudName = MyTextsWrapperEnum.HudFrancisReef, SaveOnSuccess = true };\n            m_21DestroyReef.OnMissionLoaded += M21DestroyReefOnOnMissionLoaded;\n            m_21DestroyReef.OnMissionSuccess += M21DestroyReefOnOnMissionSuccess;\n            m_21DestroyReef.Components.Add(new MySpawnpointWaves((uint)EntityID._21Detector1, 1, new List<uint[]>()\n                                                                                                         {\n                                                                                                             new uint[]{(uint)EntityID._21SpawnPoint11},\n                                                                                                             new uint[]{(uint)EntityID._21SpawnPoint12}\n                                                                                                        }));\n            m_21DestroyReef.Components.Add(new MyMovingEntity((uint)EntityID._21Ship2, (uint)EntityID._21Ship2Target, m_21ObjectiveMovingTime));\n            m_21DestroyReef.Components.Add(new MyMovingEntity((uint)EntityID._21Particle1, (uint)EntityID._21Particle1Target, m_21ObjectiveMovingTime, false));\n            m_21DestroyReef.Components.Add(new MyMovingEntity((uint)EntityID._21Particle2, (uint)EntityID._21Particle2Target, m_21ObjectiveMovingTime, false));\n            //m_21DestroyReef.Components.Add(new MyTimedDialogue(TimeSpan.FromMilliseconds(m_21ObjectiveMovingTime), MyDialogueEnum.ALIEN_GATE_3100));\n            m_21DestroyReef.Components.Add(new MyTimedDialogue(TimeSpan.FromMilliseconds(5000), MyDialogueEnum.ALIEN_GATE_3000));\n            m_objectives.Add(m_21DestroyReef);\n\n\n            m_22FlyBackTomadelyn = new MyObjective(\n                (MyTextsWrapperEnum.ALIEN_GATE_22_Name),\n                MyMissionID.ALIEN_GATE_22,\n                (MyTextsWrapperEnum.ALIEN_GATE_22_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.ALIEN_GATE_21 },\n                new MyMissionLocation(baseSector, (uint)EntityID._22Dummy),\n                startDialogId: MyDialogueEnum.ALIEN_GATE_3200\n                ) { HudName = MyTextsWrapperEnum.HudMeetingPoint };\n            m_22FlyBackTomadelyn.OnMissionLoaded += M22FlyBackTomadelynOnOnMissionLoaded;\n            m_objectives.Add(m_22FlyBackTomadelyn);\n\n            m_23ExploreAliengate = new MyObjective(\n                (MyTextsWrapperEnum.ALIEN_GATE_23_Name),\n                MyMissionID.ALIEN_GATE_23,\n                (MyTextsWrapperEnum.ALIEN_GATE_23_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.ALIEN_GATE_22 },\n                new MyMissionLocation(baseSector, (uint)EntityID._23Dummy),\n                startDialogId: MyDialogueEnum.ALIEN_GATE_3300\n                ) { HudName = MyTextsWrapperEnum.Nothing };\n            m_23ExploreAliengate.Components.Add(new MyMovingEntity(MyActorConstants.GetActorName(MyActorEnum.MADELYN), (uint)EntityID._23Shiptarget, 50000));\n            m_23ExploreAliengate.OnMissionLoaded += M23ExploreAliengateOnOnMissionLoaded;\n            m_objectives.Add(m_23ExploreAliengate);\n            #endregion\n        }\n\n        private void BoardMotherShipOnOnMissionLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.TryUnhide((uint)EntityID.Ship1Interier, true);\n            MyScriptWrapper.TryUnhide((uint)EntityID.MotherShip2Interior, true);\n        }\n\n        private void ReefEscapeOnOnMissionSuccess(MyMissionBase sender)\n        {\n            MyScriptWrapper.TryUnhide((uint)EntityID._21Prefab1UnHide, true);\n            MyScriptWrapper.TryUnhide((uint)EntityID._21Ship2, true);\n        }\n\n        private void M23ExploreAliengateOnOnMissionLoaded(MyMissionBase sender)\n        {\n            //MyScriptWrapper.AddNotification(MyScriptWrapper.CreateNotification(MyTexts.CampaignIsCompleted, MyGuiManager.GetFontMinerWarsGreen(), 100000));\n            MyGuiScreenGamePlay.Static.DrawCampaignEnd = true;\n            sender.MissionTimer.RegisterTimerAction(15000, HideDrawCampaignEnd, false);\n        }\n\n        void HideDrawCampaignEnd()\n        {\n            MyGuiScreenGamePlay.Static.DrawCampaignEnd = false;\n        }\n\n        private void M22FlyBackTomadelynOnOnMissionLoaded(MyMissionBase sender)\n        {\n            var madelynLocation = MyScriptWrapper.GetEntity((uint) EntityID._22Ship1);\n            MyScriptWrapper.Move(m_madelyn, madelynLocation.GetPosition(), madelynLocation.GetForward(), madelynLocation.GetUp());\n            MyScriptWrapper.TryUnhide((uint)EntityID._22Ship2, true);\n        }\n\n        private void M21DestroyReefOnOnMissionSuccess(MyMissionBase sender)\n        {\n            MyScriptWrapper.SetEntitiesEnabled(m_21EnableparticlesDestroy, true);\n            MyScriptWrapper.SetEntitiesEnabled(m_21DisableParticlesDestroy, false);\n            MyScriptWrapper.TryHide((uint)EntityID._21Ship2, true);\n            MyScriptWrapper.TryUnhide((uint)EntityID._21ShipUnhide, true);\n        }\n\n        private void M21DestroyReefOnOnMissionLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.SetEntitiesEnabled(m_21Enableparticles, true);\n            MyScriptWrapper.TryHide((uint)EntityID._19Ship, true);\n            MyScriptWrapper.PlaySound3D(MyScriptWrapper.GetEntity(m_21Enableparticles[0]), MySoundCuesEnum.SfxShipLargeExplosion);\n\n            MyScriptWrapper.TryUnhide((uint)EntityID.Voxel2, true);\n            MyScriptWrapper.TryHide((uint)EntityID._21VoxelAsteroidHide, true);\n        }\n\n        private void M20ReefEscapeOnOnMissionLoaded(MyMissionBase sender)\n        {\n            //MyScriptWrapper.TryHide((uint)EntityID.RegroupWithMadelynShip2);\n        }\n\n        private void M19KilReefOnOnMissionLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.SetEntitiesEnabled(m_19DisableParticles, false);\n            MyScriptWrapper.ActivateSpawnPoints(new List<uint>() { (uint)EntityID._19Spawn1, (uint)EntityID._19Spawn2 });\n            MyScriptWrapper.TryHide((uint)EntityID.CoughtInTrapShip3, true);\n            MyScriptWrapper.TryUnhide((uint)EntityID._19Ship, true);\n            sender.MissionTimer.RegisterTimerAction(5000, KillReefParticles);\n        }\n\n        private void KillReefParticles()\n        {\n            MyScriptWrapper.SetEntitiesEnabled(m_19EnableParticles, true);\n        }\n\n        private void M18LeaveShipOnOnMissionFailed()\n        {\n            MyScriptWrapper.DestroyPlayerShip();\n        }\n\n        private void M18LeaveShipOnOnMissionLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.SetEntityEnabled((uint)EntityID._18DisableDummy, false);\n            MyScriptWrapper.SetEntitiesEnabled(m_18EnableParticles, true);\n            MyScriptWrapper.SetEntityEnabled((uint)EntityID._18DisableTurret, false);\n            MissionTimer.RegisterTimerAction(m_18ObjectiveTime, ExplosionMission18, false);\n\n            for (int i = 0; i < m_18ObjectiveTime / 5000; i++)\n            {\n                Components.Add(new MyHeadshake(MissionTimer.ElapsedTime + i * 5000, MyHeadshake.DefaultShaking, 12, 5, 10));\n            }\n\n        }\n\n        private void ExplosionMission18()\n        {\n            Components.Add(new MyHeadshake(MissionTimer.ElapsedTime, MyHeadshake.DefaultShaking, 17, 10, 10));\n\n            var time = 0;\n\n\n            MissionTimer.RegisterTimerAction(time += 750, FirstExplosion, false);\n\n\n            MissionTimer.RegisterTimerAction(time += 500, Explosion18Final, false);\n        }\n\n        private void FirstExplosion()\n        {\n            foreach (uint explosionDummy in m_10explosionDummies)\n            {\n                var entity = MyScriptWrapper.GetEntity(explosionDummy);\n                MyScriptWrapper.AddExplosion(entity, Explosions.MyExplosionTypeEnum.MEDIUM_PREFAB_EXPLOSION, 20000);\n            }\n        }\n\n        private void Explosion18Final()\n        {\n            MyScriptWrapper.SetEntitiesEnabled(m_18DisableParticlesBoom, false);\n            MyScriptWrapper.SetEntitiesEnabled(m_18EnableParticlesBoom, true);\n\n            MyScriptWrapper.PlaySound3D(MyScriptWrapper.GetEntity((uint)EntityID.CoughtInTrapShip2), MySoundCuesEnum.SfxShipLargeExplosion);\n\n\n            MissionTimer.RegisterTimerAction(250, () => MyScriptWrapper.TryHide((uint)EntityID.MotherShip2Interior), false);\n            MissionTimer.RegisterTimerAction(250, () => MyScriptWrapper.TryHide((uint)EntityID.CoughtInTrapShip2, true), false);\n            MissionTimer.RegisterTimerAction(250, () => MyScriptWrapper.TryUnhide((uint)EntityID.MotherShip2Destroyed, false));\n\n\n            MyScriptWrapper.TryHideEntities(m_hackGenerator2Cargos, true);\n            MyScriptWrapper.PlayDialogue(MyDialogueEnum.ALIEN_GATE_2700);\n        }\n\n\n\n        private void Explosion10Final()\n        {\n            MyScriptWrapper.SetEntitiesEnabled(m_10particlesDisable, false);\n            MyScriptWrapper.SetEntitiesEnabled(m_10particlesEnable, true);\n            MyScriptWrapper.TryHideEntities(m_hackGeneratorCargos, true);\n\n            MyScriptWrapper.PlaySound3D(MyScriptWrapper.GetEntity((uint)EntityID.CoughtInTrapShip1), MySoundCuesEnum.SfxShipLargeExplosion);\n\n            MissionTimer.RegisterTimerAction(500, () => MyScriptWrapper.TryHide((uint)EntityID.CoughtInTrapShip1), false);\n            MissionTimer.RegisterTimerAction(500, () => MyScriptWrapper.TryHide((uint)EntityID.Ship1Interier, true), false);\n            MissionTimer.RegisterTimerAction(500, () => MyScriptWrapper.TryUnhide((uint)EntityID._10PrefabCont, false));\n\n            MyScriptWrapper.PlayDialogue(MyDialogueEnum.ALIEN_GATE_1600);\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.Special, 100, \"KA09\", false);\n        }\n\n        private void M17HackGenerator3OnOnMissionLoaded(MyMissionBase sender)\n        {\n            sender.Components.Add(new MyHeadshake(m_leaveShip1.MissionTimer.ElapsedTime, MyHeadshake.DefaultShaking, 12, 5, 10));\n        }\n\n        private void M13HackEngine2OnOnMissionLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.SetEntitiesEnabled(m_13Particles, true);\n        }\n\n        private void M12HackGenerator2OnOnMissionLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.MarkEntity(MyScriptWrapper.TryGetEntity((uint)EntityID.HackGenerator2Doors), \"Destroy\", MyHudIndicatorFlagsEnum.SHOW_DISTANCE | MyHudIndicatorFlagsEnum.SHOW_TEXT | MyHudIndicatorFlagsEnum.SHOW_HEALTH_BARS | MyHudIndicatorFlagsEnum.SHOW_BORDER_INDICATORS, MyGuitargetMode.Enemy);\n            MyScriptWrapper.TryUnhideEntities(m_hackGenerator2Cargos, true);\n            sender.Components.Add(new MyHeadshake(0, MyHeadshake.DefaultShaking));\n\n            MyScriptWrapper.SetEntitiesEnabled(m_hackGenerator2Particles, true);\n        }\n\n\n\n\n\n        private void M11BBoard2OnOnMissionLoaded(MyMissionBase sender)\n        {\n            var boardSecondShipBDetector = MyScriptWrapper.GetDetector((uint)EntityID.BoardSecondShipbDetector);\n            boardSecondShipBDetector.On();\n            boardSecondShipBDetector.OnEntityEnter += M11BDetectorOnOnEntityEnter;\n            MyScriptWrapper.TryUnhide((uint)EntityID.MotherShip2Interior, true);\n        }\n\n        private void M11BDetectorOnOnEntityEnter(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            MyScriptWrapper.SetEntitiesEnabled(m_boardSecondShipbparticlesDisable, false);\n            MyScriptWrapper.SetEntitiesEnabled(m_boardSecondShipbparticlesEnable, true);\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.BoardSecondShipbSpawn0);\n        }\n\n        private void M11RegroupWithMadelyn2OnOnMissionLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.BoardSecondShipSpawn1);\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.BoardSecondShipSpawn2);\n            sender.MissionTimer.RegisterTimerAction(5000, M11Action);\n        }\n\n        private void M11Action()\n        {\n            MyScriptWrapper.SetEntitiesEnabled(m_boardSecondShipparticles, true);\n        }\n\n        private void M10LeaveShip1OnOnMissionFailed()\n        {\n            MyScriptWrapper.DestroyPlayerShip();\n        }\n\n        private void M10LeaveShip1OnOnMissionLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.SetWaypointListSecrecy(new List<uint>() { (uint)EntityID._10WayPoint }, true);\n            MyScriptWrapper.SetEntityEnabled((uint)EntityID._10DisableDummy, false);\n            MyScriptWrapper.SetEntityEnabled((uint)EntityID._10DisableTurret, false);\n            MissionTimer.RegisterTimerAction(m_10ObjectiveTime, ExplosionMission10, false);\n\n\n            for (int i = 0; i < m_10ObjectiveTime / 5000; i++)\n            {\n                Components.Add(new MyHeadshake(MissionTimer.ElapsedTime + i * 5000, MyHeadshake.DefaultShaking, 12, 5, 10));\n            }\n        }\n\n        private void ExplosionMission10()\n        {\n            Components.Add(new MyHeadshake(MissionTimer.ElapsedTime, MyHeadshake.DefaultShaking, 17, 10, 10));\n\n            var time = 0;\n            foreach (uint explosionDummy in m_18explosionDummies)\n            {\n                var entity = MyScriptWrapper.GetEntity(explosionDummy);\n                MissionTimer.RegisterTimerAction(time += 750, () => MyScriptWrapper.AddExplosion(entity, Explosions.MyExplosionTypeEnum.MEDIUM_PREFAB_EXPLOSION, 25000), false);\n            }\n\n            MissionTimer.RegisterTimerAction(time += 500, Explosion10Final, false);\n        }\n\n\n        private void M09HackEngineOnOnMissionLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.SetEntitiesEnabled(m_hackEngineparticles, true);\n        }\n\n        private void M08HackGeneratorOnOnMissionLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.MarkEntity(MyScriptWrapper.GetEntity((uint)EntityID.HackGeneratordestroy), MyTexts.Destroy, MyHudIndicatorFlagsEnum.SHOW_HEALTH_BARS | MyHudIndicatorFlagsEnum.SHOW_BORDER_INDICATORS | MyHudIndicatorFlagsEnum.SHOW_TEXT | MyHudIndicatorFlagsEnum.SHOW_DISTANCE, MyGuitargetMode.Enemy);\n            MyScriptWrapper.TryUnhideEntities(m_hackGeneratorCargos, true);\n\n            MyScriptWrapper.SetEntitiesEnabled(m_hackGeneratorparticles, true);\n        }\n\n        private void M06RegroupWithMadelynOnOnMissionLoaded(MyMissionBase sender)\n        {\n            var madelynLocation = MyScriptWrapper.GetEntity((uint) EntityID.RegroupWithMadelynShip2);\n            MyScriptWrapper.Move(m_madelyn, madelynLocation.GetPosition(), madelynLocation.GetForward(), madelynLocation.GetUp());\n        }\n\n\n\n        private void M05RunForYourLifeOnOnMissionLoaded(MyMissionBase sender)\n        {\n            sender.MissionTimer.RegisterTimerAction(RunForYourLifeShipMoveTime, M05StartDialogue);\n            sender.MissionTimer.RegisterTimerAction(RunForYourLifeParticleStartTime, M05Startparticle);\n            MyScriptWrapper.SetFactionRelation(MyMwcObjectBuilder_FactionEnum.Russian_KGB, MyMwcObjectBuilder_FactionEnum.Rainiers, MyFactions.RELATION_WORST);\n        }\n\n\n\n\n        private void M05Startparticle()\n        {\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.GetEntity((uint)EntityID.RunForYourLifeParticleEffect), true);\n\n            MyScriptWrapper.TryHideEntities(new List<uint>() { (uint)EntityID.RunForYourLifeVoxel }, true);\n            MyScriptWrapper.TryUnhideEntities(new List<uint>() { (uint)EntityID.Voxel1, (uint)EntityID.Voxel3 }, true);\n            MyScriptWrapper.PlayDialogue(MyDialogueEnum.ALIEN_GATE_0700);\n            MyScriptWrapper.PlaySound3D(MyScriptWrapper.GetEntity((uint)EntityID.RunForYourLifeParticleEffect), MySoundCuesEnum.SfxShipLargeExplosion);\n        }\n\n\n\n        private void M05StartDialogue()\n        {\n            MyScriptWrapper.PlayDialogue(MyDialogueEnum.ALIEN_GATE_0800);\n        }\n\n\n\n        private void M04CoughtInTrapOnOnMissionLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.SetEntityPriority(MyScriptWrapper.GetEntity((uint)EntityID.CoughtInTrapShip1), 0, true);\n            MyScriptWrapper.SetEntityPriority(MyScriptWrapper.GetEntity((uint)EntityID.CoughtInTrapShip2), 0, true);\n            MyScriptWrapper.SetEntityPriority(MyScriptWrapper.GetEntity((uint)EntityID.CoughtInTrapShip3), 0, true);\n            MyScriptWrapper.ActivateSpawnPoints(new List<uint>() { (uint)EntityID.CoughtInTrapSpawn1, (uint)EntityID.CoughtInTrapSpawn2 });\n            MyScriptWrapper.TryUnhideEntities(new List<uint>() { (uint)EntityID.CoughtInTrapShip3, (uint)EntityID.CoughtInTrapShip1, (uint)EntityID.CoughtInTrapShip2 }, true);\n\n        }\n\n        private MyEntityDetector m_followDirectionDetector;\n        private MyObjectiveDialog m_coughtInTrap;\n\n        private MyObjective m_runForYourLife;\n        private MyObjective m_regroupWithMadelyn;\n        private MyObjective m_boardMotherShip;\n        private MyUseObjective m_hackGenerator;\n        private MyUseObjective m_hackEngine;\n        private MyTimedReachLocationObjective m_leaveShip1;\n        private MyObjective m_regroupWithMadelyn2;\n        private MyObjective m_shipbBoard2;\n        private MyUseObjective m_hackGenerator2;\n        private MyObjective m_hackEngine2;\n        private MyObjectiveEnablePrefabs m_enableDoors;\n        private MyObjective m_enterlaboratory;\n        private MyUseObjective m_downloadData;\n        private MyUseObjective m_hackGenerator3;\n        private MyTimedReachLocationObjective m_leaveShip;\n        private MyObjective m_killReef;\n        private MyTimedObjective m_20ReefEscape;\n        private MyObjectiveDestroy m_21DestroyReef;\n        private MyObjective m_22FlyBackTomadelyn;\n        private MyObjective m_23ExploreAliengate;\n\n\n        private void M03FollowDirectionOnOnMissionCleanUp(MyMissionBase sender)\n        {\n            m_followDirectionDetector.Off();\n            m_followDirectionDetector.OnEntityEnter -= M03DetectorOnOnEntityEnter;\n            //MyScriptWrapper.TryHide(m_madelyn.EntityId.Value.NumericValue);\n        }\n\n\n        private void M03DetectorOnOnEntityEnter(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (entity == MySession.PlayerShip)\n            {\n                var madelynLocation = MyScriptWrapper.GetEntity((uint)EntityID.RunForYourLifeMovingMadelyn);\n                MyScriptWrapper.Move(m_madelyn, madelynLocation.GetPosition(), madelynLocation.GetForward(), madelynLocation.GetUp());\n                sender.Off();\n            }\n        }\n\n        private void M03FollowDirectionOnOnMissionLoaded(MyMissionBase sender)\n        {\n            m_followDirectionDetector = MyScriptWrapper.GetDetector((uint)EntityID.FollowDirectionDetector);\n            m_followDirectionDetector.On();\n            m_followDirectionDetector.OnEntityEnter += M03DetectorOnOnEntityEnter;\n        }\n\n\n        private void M01FollowCordsOnOnMissionSuccess(MyMissionBase sender)\n        {\n            m_followCoordinatesDetector.Off();\n            m_followCoordinatesDetector.OnEntityEnter -= M01DetectorOnOnEntityEnter;\n        }\n\n        private void M01DetectorOnOnEntityEnter(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            //if(entity==MySession.PlayerShip)\n            //  MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.FollowCoordinatesSpawnPoint);\n        }\n\n        private void M01FollowCordsOnOnMissionLoaded(MyMissionBase sender)\n        {\n            m_followCoordinatesDetector.On();\n            m_followCoordinatesDetector.OnEntityEnter += M01DetectorOnOnEntityEnter;\n\n        }\n\n        public override void Load() // Code in that block will be called on the load of the sector\n        {\n            m_followCoordinatesDetector = MyScriptWrapper.GetDetector((uint)EntityID.FollowCoordinatesDummy);\n            m_madelyn = MyScriptWrapper.GetEntity(MyActorConstants.GetActorName(MyActorEnum.MADELYN));  \n\n            base.Load();\n\n            MyScriptWrapper.OnSpawnpointBotSpawned += MyScriptWrapperOnOnSpawnpointBotSpawned;\n            MyScriptWrapper.OnSentenceStarted += MyScriptWrapper_OnSentenceStarted;\n\n            if (MyScriptWrapper.IsMissionFinished(MyMissionID.ALIEN_GATE_COUGHT_IN_TRAP))\n            {\n                MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.CalmAtmosphere);\n            }\n            else\n            {\n                MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.Horror, 100, \"KA02\");\n            }\n\n            MyScriptWrapper.TryHide((uint)EntityID.Voxel1);\n            MyScriptWrapper.TryHide((uint)EntityID.Voxel2);\n            MyScriptWrapper.TryHide((uint)EntityID.Voxel3);\n            MyScriptWrapper.SetFactionRelation(MyMwcObjectBuilder_FactionEnum.Rainiers, MyMwcObjectBuilder_FactionEnum.Russian_KGB, MyFactions.RELATION_NEUTRAL);\n\n            if (MyScriptWrapper.IsMissionFinished(MyMissionID.ALIEN_GATE_FOLLOW_DIRECTION)) \n            {\n                MyScriptWrapper.SetFactionRelation(MyMwcObjectBuilder_FactionEnum.Russian_KGB, MyMwcObjectBuilder_FactionEnum.Rainiers, MyFactions.RELATION_WORST);\n            }\n        }\n\n        void MyScriptWrapper_OnSentenceStarted(MyDialogueEnum dialogue, MyDialoguesWrapperEnum sentence)\n        {\n            if (dialogue == MyDialogueEnum.ALIEN_GATE_0500 && sentence == MyDialoguesWrapperEnum.Dlg_AlienGate_0502)\n            {\n                //MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.Horror, 100, \"KA02\");\n                MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.Special, 100, \"KA15\");\n            }\n            if (dialogue == MyDialogueEnum.ALIEN_GATE_0600 && sentence == MyDialoguesWrapperEnum.Dlg_AlienGate_0600)\n            {\n                MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.HeavyFight, 100, \"KA15\");\n            }\n            if (dialogue == MyDialogueEnum.ALIEN_GATE_0800 && sentence == MyDialoguesWrapperEnum.Dlg_AlienGate_0802)\n            {\n                MyScriptWrapper.StopTransition(100);\n                MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.CalmAtmosphere);\n            }\n            if (dialogue == MyDialogueEnum.ALIEN_GATE_1500 && sentence == MyDialoguesWrapperEnum.Dlg_AlienGate_1500)\n            {\n                MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.StressOrTimeRush, 100, \"KA02\");\n            }\n            if (dialogue == MyDialogueEnum.ALIEN_GATE_2600 && sentence == MyDialoguesWrapperEnum.Dlg_AlienGate_2600)\n            {\n                MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.HeavyFight, 100, \"KA19\");\n            }\n            if (dialogue == MyDialogueEnum.ALIEN_GATE_2900 && sentence == MyDialoguesWrapperEnum.Dlg_AlienGate_2901)\n            {\n                MyScriptWrapper.StopTransition(0); //ensure that nothing will play after KA10\n                MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.Special, 100, \"KA10\", false);\n            }\n            if (dialogue == MyDialogueEnum.ALIEN_GATE_3200 && sentence == MyDialoguesWrapperEnum.Dlg_AlienGate_3202)\n            {\n                MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.CalmAtmosphere, 100, \"KA05\");\n            }\n            if (dialogue == MyDialogueEnum.ALIEN_GATE_3300 && sentence == MyDialoguesWrapperEnum.Dlg_AlienGate_3300)\n            {\n                MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.Special, 100, \"KA11\");\n            }\n        }\n\n        public override void Unload()\n        {\n            MyScriptWrapper.OnSpawnpointBotSpawned -= MyScriptWrapperOnOnSpawnpointBotSpawned;\n            MyScriptWrapper.OnSentenceStarted -= MyScriptWrapper_OnSentenceStarted;\n\n            m_madelyn = null;\n            m_followCoordinatesDetector = null;\n            HideDrawCampaignEnd();\n\n            base.Unload();\n        }\n\n        private void MyScriptWrapperOnOnSpawnpointBotSpawned(MyEntity spawnPoint, MyEntity entity2)\n        {\n            if (spawnPoint.EntityId.Value.NumericValue == (uint)EntityID.BoardSecondShipSpawn1\n                || spawnPoint.EntityId.Value.NumericValue == (uint)EntityID.BoardSecondShipSpawn2\n                || spawnPoint.EntityId.Value.NumericValue == (uint)EntityID._19Spawn1\n                || spawnPoint.EntityId.Value.NumericValue == (uint)EntityID._19Spawn2)\n            {\n                entity2.Health = 0.75f * entity2.MaxHealth;\n            }\n\n            if (spawnPoint.EntityId.Value.NumericValue == (uint)EntityID.FollowCoordinatesSpawnPoint)\n            {\n                if (m_followCords.IsAvailable())\n                {\n                    m_followCords.Components.Add(new MyTimedDialogue(m_followCords.MissionTimer.GetElapsedTime() + new TimeSpan(0, 0, 3), MyDialogueEnum.ALIEN_GATE_0200));\n                }\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/SinglePlayer/MyArabianBorderMission.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Entities;\nusing System.Diagnostics;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Entities.WayPoints;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Inventory;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.Game.World.Global;\n\n\nnamespace MinerWars.AppCode.Game.Missions.SinglePlayer\n{\n    class MyArabianBorderMission : MyMissionSandboxBase\n    {\n        private enum EntityID // list of IDs used in script\n        {\n            StartLocation = 301,\n            Cargo1 = 690,\n            Cargo2 = 691,\n            Cargo3 = 692,\n            Cargo4 = 693,\n            Cargo5 = 694,\n            Cargo6 = 695,\n            Cargo7 = 696,\n            Cargo8 = 697,\n            Cargo9 = 698,\n            Cargo10 = 699,\n            Cargo11 = 700,\n            Cargo12 = 701,\n            Detector1 = 1398,\n            Detector2 = 1396,\n            Detector3 = 1394,\n            Spawn1 = 1388,\n            Spawn2 = 1390,\n            Spawn3 = 1393,\n            \n        }\n\n        public override void ValidateIds() // checks if all IDs in enum are loaded correctly\n        {\n            foreach (var value in Enum.GetValues(typeof(EntityID)))\n            {\n                MyScriptWrapper.GetEntity((uint)((value as EntityID?).Value));\n            }\n        }\n\n\n        private MyEntityDetector m_Detector1;\n        private MyEntityDetector m_Detector2;\n        private MyEntityDetector m_Detector3;\n        private MyEntityDetector m_Detector4;\n\n        public MyArabianBorderMission()\n        {\n            ID = MyMissionID.ARABIAN_BORDER; /* ID must be added to MyMissions.cs */\n            DebugName = new StringBuilder(\"Arabian border\"); // Name of mission\n            Name = MyTextsWrapperEnum.ARABIAN_BORDER;\n            Description = MyTextsWrapperEnum.ARABIAN_BORDER_Description;\n            MyMwcVector3Int baseSector = new MyMwcVector3Int(6477920, 0, -2331108); // Story sector of the script - i.e. (-2465,0,6541)\n            RequiredMissions = new MyMissionID[] { };\n            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation); // Starting dummy point - must by typecasted to uint and referenced from EntityID enum\n            RequiredActors = new MyActorEnum[] { MyActorEnum.MADELYN };\n\n\n            m_objectives = new List<MyObjective>(); // Creating of list of submissions\n        }\n\n\n\n\n        public override void Load() // Code in that block will be called on the load of the sector\n        {\n            base.Load();\n\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.HeavyFight, 3); // Sets music group to be played in the sector - no matter if the mission is running or not\n\n            TimeSpan respawnTime = TimeSpan.FromSeconds(60);\n            MyScriptWrapper.SetCargoRespawn((uint)EntityID.Cargo1, respawnTime);\n            MyScriptWrapper.SetCargoRespawn((uint)EntityID.Cargo2, respawnTime);\n            MyScriptWrapper.SetCargoRespawn((uint)EntityID.Cargo3, respawnTime);\n            MyScriptWrapper.SetCargoRespawn((uint)EntityID.Cargo4, respawnTime);\n            MyScriptWrapper.SetCargoRespawn((uint)EntityID.Cargo5, respawnTime);\n            MyScriptWrapper.SetCargoRespawn((uint)EntityID.Cargo6, respawnTime);\n            MyScriptWrapper.SetCargoRespawn((uint)EntityID.Cargo7, respawnTime);\n            MyScriptWrapper.SetCargoRespawn((uint)EntityID.Cargo8, respawnTime);\n            MyScriptWrapper.SetCargoRespawn((uint)EntityID.Cargo9, respawnTime);\n            MyScriptWrapper.SetCargoRespawn((uint)EntityID.Cargo10, respawnTime);\n            MyScriptWrapper.SetCargoRespawn((uint)EntityID.Cargo11, respawnTime);\n            MyScriptWrapper.SetCargoRespawn((uint)EntityID.Cargo12, respawnTime);\n\n\n            m_Detector1 = MyScriptWrapper.GetDetector(MyScriptWrapper.GetEntity((uint)EntityID.Detector1));\n            m_Detector1.OnEntityEnter += Detector1Action;\n            m_Detector1.On();\n\n            m_Detector2 = MyScriptWrapper.GetDetector(MyScriptWrapper.GetEntity((uint)EntityID.Detector2));\n            m_Detector2.OnEntityEnter += Detector2Action;\n            m_Detector2.On();\n\n            m_Detector3 = MyScriptWrapper.GetDetector(MyScriptWrapper.GetEntity((uint)EntityID.Detector3));\n            m_Detector3.OnEntityEnter += Detector3Action;\n            m_Detector3.On();\n\n        }\n\n\n        public override void Unload()\n        {\n            base.Unload();\n\n            if (m_Detector1 != null)\n            {\n                m_Detector1.OnEntityEnter -= Detector1Action;\n            }\n            if (m_Detector2 != null)\n            {\n                m_Detector2.OnEntityEnter -= Detector2Action;\n            } \n            if (m_Detector3 != null)\n            {\n                m_Detector3.OnEntityEnter -= Detector3Action;\n            } \n           \n        }\n\n        public void Detector1Action(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (MySession.IsPlayerShip(entity))\n            {\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Spawn1);\n                m_Detector1.Off();\n            }\n        }\n\n        public void Detector2Action(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (MySession.IsPlayerShip(entity))\n            {\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Spawn2);\n                m_Detector2.Off();\n            }\n        }\n\n        public void Detector3Action(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (MySession.IsPlayerShip(entity))\n            {\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Spawn3);\n                m_Detector3.Off();\n            }\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/SinglePlayer/MyArabianCapitalMission.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Entities;\nusing System.Diagnostics;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Entities.WayPoints;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Inventory;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.Game.World.Global;\n\n\nnamespace MinerWars.AppCode.Game.Missions.SinglePlayer\n{\n    class MyArabianCapitalMission : MyMissionSandboxBase\n    {\n        private enum EntityID // list of IDs used in script\n        {\n            StartLocation = 526,\n         \n        }\n\n        public override void ValidateIds() // checks if all IDs in enum are loaded correctly\n        {\n            foreach (var value in Enum.GetValues(typeof(EntityID)))\n            {\n                MyScriptWrapper.GetEntity((uint)((value as EntityID?).Value));\n            }\n        }\n\n\n\n        public MyArabianCapitalMission()\n        {\n            ID = MyMissionID.ARABIAN_CAPITAL; /* ID must be added to MyMissions.cs */\n            DebugName = new StringBuilder(\"New Istanbul - Arabian Capital\"); // Name of mission\n            Name = MyTextsWrapperEnum.ARABIAN_CAPITAL;\n            Description = MyTextsWrapperEnum.ARABIAN_CAPITAL_Description;\n            MyMwcVector3Int baseSector = new MyMwcVector3Int(8469777, 0, -501687); // Story sector of the script - i.e. (-2465,0,6541)\n            RequiredMissions = new MyMissionID[] { };\n            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation); // Starting dummy point - must by typecasted to uint and referenced from EntityID enum\n            RequiredActors = new MyActorEnum[] { MyActorEnum.MADELYN };\n           \n\n            m_objectives = new List<MyObjective>(); // Creating of list of submissions\n\n\n        }\n\n\n\n\n        public override void Load() // Code in that block will be called on the load of the sector\n        {\n            base.Load();\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.HeavyFight, 3); // Sets music group to be played in the sector - no matter if the mission is running or not\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/SinglePlayer/MyAsteroidComplexMission.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Entities;\nusing System.Diagnostics;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Entities.WayPoints;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Inventory;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.Game.World.Global;\n\n\nnamespace MinerWars.AppCode.Game.Missions.SinglePlayer\n{\n    class MyAsteroidComplexMission : MyMissionSandboxBase\n    {\n        private enum EntityID // list of IDs used in script\n        {\n            StartLocation = 4180,\n         \n        }\n\n        public override void ValidateIds() // checks if all IDs in enum are loaded correctly\n        {\n            foreach (var value in Enum.GetValues(typeof(EntityID)))\n            {\n                MyScriptWrapper.GetEntity((uint)((value as EntityID?).Value));\n            }\n        }\n\n\n\n        public MyAsteroidComplexMission()\n        {\n            ID = MyMissionID.ASTEROID_COMPLEX; /* ID must be added to MyMissions.cs */\n            DebugName = new StringBuilder(\"Asteroid complex\"); // Name of mission\n            Name = MyTextsWrapperEnum.ASTEROID_COMPLEX;\n            Description = MyTextsWrapperEnum.ASTEROID_COMPLEX_Description;\n            MyMwcVector3Int baseSector = new MyMwcVector3Int(2066666, 0, -7666666); // Story sector of the script - i.e. (-2465,0,6541)\n            RequiredMissions = new MyMissionID[] { };\n            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation); // Starting dummy point - must by typecasted to uint and referenced from EntityID enum\n            RequiredActors = new MyActorEnum[] { MyActorEnum.MADELYN };\n           \n\n            m_objectives = new List<MyObjective>(); // Creating of list of submissions\n\n\n        }\n\n\n\n\n        public override void Load() // Code in that block will be called on the load of the sector\n        {\n            base.Load();\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.HeavyFight, 3); // Sets music group to be played in the sector - no matter if the mission is running or not\n        }\n      \n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/SinglePlayer/MyAsteroidResearchFieldMission.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Entities;\nusing System.Diagnostics;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Entities.WayPoints;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Inventory;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.Game.World.Global;\n\n\nnamespace MinerWars.AppCode.Game.Missions.SinglePlayer\n{\n    class MyAsteroidResearchFieldMission : MyMissionSandboxBase\n    {\n        private enum EntityID // list of IDs used in script\n        {\n            StartLocation = 194,\n         \n        }\n\n        public override void ValidateIds() // checks if all IDs in enum are loaded correctly\n        {\n            foreach (var value in Enum.GetValues(typeof(EntityID)))\n            {\n                MyScriptWrapper.GetEntity((uint)((value as EntityID?).Value));\n            }\n        }\n\n\n\n        public MyAsteroidResearchFieldMission()\n        {\n            ID = MyMissionID.ASTEROID_FIELD; /* ID must be added to MyMissions.cs */\n            DebugName = new StringBuilder(\"Asteroid Research Field\"); // Name of mission\n            Name = MyTextsWrapperEnum.ASTEROID_FIELD;\n            Description = MyTextsWrapperEnum.ASTEROID_FIELD_Description;\n            MyMwcVector3Int baseSector = new MyMwcVector3Int(27037966, 0, 81020050); // Story sector of the script - i.e. (-2465,0,6541)\n            RequiredMissions = new MyMissionID[] { };\n            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation); // Starting dummy point - must by typecasted to uint and referenced from EntityID enum\n            RequiredActors = new MyActorEnum[] { MyActorEnum.MADELYN };\n           \n\n            m_objectives = new List<MyObjective>(); // Creating of list of submissions\n\n\n        }\n\n\n        private float m_oldRelation;\n\n\n        public override void Load() // Code in that block will be called on the load of the sector\n        {\n            base.Load();\n            MyAudio.ApplyTransition(MyMusicTransitionEnum.CalmAtmosphere, 3); // Sets music group to be played in the sector - no matter if the mission is running or not\n            m_oldRelation = MyFactions.GetFactionsStatus(MyMwcObjectBuilder_FactionEnum.Euroamerican, MyMwcObjectBuilder_FactionEnum.Rainiers);\n            MyScriptWrapper.SetFactionRelation(MyMwcObjectBuilder_FactionEnum.Euroamerican, MyMwcObjectBuilder_FactionEnum.Rainiers, MyFactions.RELATION_WORST);\n        }\n\n        public override void Unload()\n        {\n            base.Unload();\n\n            MyScriptWrapper.SetFactionRelation(MyMwcObjectBuilder_FactionEnum.Euroamerican, MyMwcObjectBuilder_FactionEnum.Rainiers, m_oldRelation);\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/SinglePlayer/MyAutonomousOutpostMission.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Entities;\nusing System.Diagnostics;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Entities.WayPoints;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Inventory;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.Game.World.Global;\n\n\nnamespace MinerWars.AppCode.Game.Missions.SinglePlayer\n{\n    class MyAutonomousOutpostMission : MyMissionSandboxBase\n    {\n        private enum EntityID // list of IDs used in script\n        {\n            StartLocation = 3828,\n         \n        }\n\n        public override void ValidateIds() // checks if all IDs in enum are loaded correctly\n        {\n            foreach (var value in Enum.GetValues(typeof(EntityID)))\n            {\n                MyScriptWrapper.GetEntity((uint)((value as EntityID?).Value));\n            }\n        }\n\n\n\n        public MyAutonomousOutpostMission()\n        {\n            ID = MyMissionID.AUTONOMOUS_OUTPOST; /* ID must be added to MyMissions.cs */\n            DebugName = new StringBuilder(\"Autonomous Outpost\"); // Name of mission\n            Name = MyTextsWrapperEnum.AUTONOMOUS_OUTPOST;\n            Description = MyTextsWrapperEnum.AUTONOMOUS_OUTPOST_Description;\n            MyMwcVector3Int baseSector = new MyMwcVector3Int(4968037, 0, -676524); // Story sector of the script - i.e. (-2465,0,6541)\n            RequiredMissions = new MyMissionID[] { };\n            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation); // Starting dummy point - must by typecasted to uint and referenced from EntityID enum\n            RequiredActors = new MyActorEnum[] { MyActorEnum.MADELYN };\n           \n\n            m_objectives = new List<MyObjective>(); // Creating of list of submissions\n\n\n        }\n\n\n\n\n        public override void Load() // Code in that block will be called on the load of the sector\n        {\n            base.Load();\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.HeavyFight, 3); // Sets music group to be played in the sector - no matter if the mission is running or not\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/SinglePlayer/MyBarthsMoonConvinceMission.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Audio.Dialogues;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.Resources;\nusing MinerWars.AppCode.Networking;\n\nnamespace MinerWars.AppCode.Game.Missions.SinglePlayer\n{\n    class MyBarthsMoonConvinceMission : MyBarthsMoonMissionBase\n    {\n        private MyEntityDetector m_flyBackDetector;\n        private List<uint> m_botSpawnpoints = new List<uint>() { \n            (uint)EntityID.AmbushSpawnpoint0,\n            (uint)EntityID.AmbushSpawnpoint1,\n            (uint)EntityID.AmbushSpawnpoint2,\n            (uint)EntityID.EngineSpawnpoint, \n            (uint)EntityID.EngineSpawnpoint2, \n            (uint)EntityID.CaveSpawnpoint1,\n            (uint)EntityID.CaveSpawnpoint2,\n            (uint)EntityID.CaveSpawnpoint3,\n            (uint)EntityID.CaveSpawnpoint4,\n            (uint)EntityID.FlyBackSpawnpoint0,\n            (uint)EntityID.FlyBackSpawnpoint1,\n            (uint)EntityID.FlyBackSpawnpoint2,\n        };\n        \n        private MyEntityDetector m_ambushDetector { get; set; }\n        private List<uint> m_hideEntities = new List<uint>() { 2203565, 1958806, 2328595, 2577321 };\n        private MyEntityDetector m_dialogue2Detector;\n        private MyEntityDetector m_dialogue5Detector;\n\n\n        public override void ValidateIds()\n        {\n            var list = new List<uint>();\n            list.AddRange(m_hideEntities);\n\n\n            foreach (var u in list)\n            {\n                MyScriptWrapper.GetEntity(u);\n            }\n\n            base.ValidateIds();\n        }\n        \n        public MyBarthsMoonConvinceMission()\n            : base(\n            MyMissionID.BARTHS_MOON_CONVINCE,\n            new StringBuilder(\"03-Barth's moon convince\"), \n            MyTextsWrapperEnum.BARTHS_MOON_CONVINCE,\n            MyTextsWrapperEnum.BARTHS_MOON_CONVINCE_Description,\n            new MyMissionID[] { MyMissionID.LAIKA }, \n            new EntityID[]{},\n            EntityID.PlayerStartLocationConvince\n            )\n        {\n            RequiredMissions = new MyMissionID[] { MyMissionID.LAIKA };\n            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.BARTHS_MOON_CONVINCE_RETURN_BACK_TO_MADELYN };\n            RequiredActors = new MyActorEnum[] { MyActorEnum.MARCUS, MyActorEnum.MADELYN };\n            AchievementName = MySteamAchievementNames.Mission03_Barths;\n            \n            m_objectives = new List<MyObjective>();\n\n            var meetThomasBarth = new MyObjective(\n                (MyTextsWrapperEnum.BARTHS_MOON_CONVINCE_MEET_THOMAS_BART_Name),\n                MyMissionID.BARTHS_MOON_CONVINCE_MEET_THOMAS_BART,\n                (MyTextsWrapperEnum.BARTHS_MOON_CONVINCE_MEET_THOMAS_BART_Description),\n                null,\n                this,\n                new MyMissionID[] {},\n                new MyMissionLocation(baseSector, (uint)EntityID.ThomasBartId),\n                startDialogId: MyDialogueEnum.BARTHS_MOON_CONVINCE_0100, \n                radiusOverride: 50\n            ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudBarth };\n            meetThomasBarth.OnMissionLoaded += MeetThomasBarthOnLoaded;\n            meetThomasBarth.OnMissionCleanUp += MeetThomasBarthOnUnload;\n            m_objectives.Add(meetThomasBarth);\n\n            var talkWithThomasBarth = new MyBarthsMoonSubmissionTalkWithThomasBarth(\n                (MyTextsWrapperEnum.BARTHS_MOON_CONVINCE_TALK_WITH_THOMAS_BART_Name),\n                MyMissionID.BARTHS_MOON_CONVINCE_TALK_WITH_THOMAS_BART,\n                (MyTextsWrapperEnum.BARTHS_MOON_CONVINCE_TALK_WITH_THOMAS_BART_Description),\n                this,\n                new MyMissionID[] { MyMissionID.BARTHS_MOON_CONVINCE_MEET_THOMAS_BART },\n                MyDialogueEnum.BARTHS_MOON_CONVINCE_0300,\n                true\n            ) { SaveOnSuccess = false };\n            m_objectives.Add(talkWithThomasBarth);\n\n            var flyToEnemyBase = new MyObjective(\n                (MyTextsWrapperEnum.BARTHS_MOON_CONVINCE_FLY_TO_ENEMY_BASE_Name),\n                MyMissionID.BARTHS_MOON_CONVINCE_FLY_TO_ENEMY_BASE,\n                (MyTextsWrapperEnum.BARTHS_MOON_CONVINCE_FLY_TO_ENEMY_BASE_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.BARTHS_MOON_CONVINCE_TALK_WITH_THOMAS_BART },\n                new MyMissionLocation(baseSector, (uint)EntityID.FlyToEnemyBaseSubmissionLocation),\n                null,\n                successDialogId: MyDialogueEnum.BARTHS_MOON_CONVINCE_0500,\n                startDialogId: MyDialogueEnum.BARTHS_MOON_CONVINCE_0400\n            ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudEnemyBase };\n            flyToEnemyBase.OnMissionLoaded += FlyToEnemyBaseOnLoaded;\n            flyToEnemyBase.OnMissionCleanUp += FlyToEnemyBaseOnCleanUp;\n            m_objectives.Add(flyToEnemyBase);\n\n            var destroyShipSubmission = new MyObjectiveDestroy(\n                (MyTextsWrapperEnum.BARTHS_MOON_CONVINCE_DESTROY_SHIP_Name),\n                MyMissionID.BARTHS_MOON_CONVINCE_DESTROY_SHIP,\n                (MyTextsWrapperEnum.BARTHS_MOON_CONVINCE_DESTROY_SHIP_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.BARTHS_MOON_CONVINCE_FLY_TO_ENEMY_BASE },\n                new List<uint>() { (uint)EntityID.ShipGenerator },\n                new List<uint>() {},\n                startDialogID: MyDialogueEnum.BARTHS_MOON_CONVINCE_0600\n            ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudGenerator };\n            destroyShipSubmission.OnMissionLoaded += DestroyShipSubmissionOnLoad;\n            m_objectives.Add(destroyShipSubmission);\n\n            var destroyGeneratorSubmission = new MyObjectiveDestroy(\n                (MyTextsWrapperEnum.BARTHS_MOON_CONVINCE_DESTROY_GENERATOR_Name),\n                MyMissionID.BARTHS_MOON_CONVINCE_DESTROY_GENERATOR,\n                (MyTextsWrapperEnum.BARTHS_MOON_CONVINCE_DESTROY_GENERATOR_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.BARTHS_MOON_CONVINCE_DESTROY_SHIP },\n                new List<uint>() { /*(uint)EntityID.BaseGenerator,*/ (uint)EntityID.MainSmallShip },\n                new List<uint>() { /*(uint)EntityID.EngineSpawnpoint, (uint)EntityID.EngineSpawnpoint2, */(uint)EntityID.CaveSpawnpoint1, (uint)EntityID.CaveSpawnpoint2, (uint)EntityID.CaveSpawnpoint3, (uint)EntityID.CaveSpawnpoint4 },\n                showMarks: false\n            ) { SaveOnSuccess = true };\n            destroyGeneratorSubmission.OnMissionLoaded += DestroyGeneratorSubmissionOnLoad;\n            destroyGeneratorSubmission.OnMissionSuccess += new MissionHandler(destroyGeneratorSubmission_OnMissionSuccess);\n            m_objectives.Add(destroyGeneratorSubmission);\n            \n            var findTransmitterSubmission = new MyUseObjective(\n                (MyTextsWrapperEnum.BARTHS_MOON_CONVINCE_FIND_TRANSMITTER_Name),\n                MyMissionID.BARTHS_MOON_CONVINCE_FIND_TRANSMITTER,\n                (MyTextsWrapperEnum.BARTHS_MOON_CONVINCE_FIND_TRANSMITTER_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.BARTHS_MOON_CONVINCE_DESTROY_GENERATOR },\n                new MyMissionLocation(baseSector, (uint)EntityID.TakeTransmitterDummy),\n                MyTextsWrapperEnum.PressToCollectReward,\n                MyTextsWrapperEnum.Reward,\n                MyTextsWrapperEnum.TransferInProgress,\n                3000\n            ) { SaveOnSuccess = true };\n\n            findTransmitterSubmission.OnMissionLoaded += FindTransmitterSubmissionOnMissionLoaded;\n            findTransmitterSubmission.OnMissionSuccess += FindTransmitterSubmissionOnSuccess;\n            m_objectives.Add(findTransmitterSubmission);\n\n            /*\n            var flyBackSubmission = new MyBarthsMoonSubmissionTalkWithThomasBarth(\n                new StringBuilder(\"Fly back to Barth\"),\n                MyMissionID.BARTHS_MOON_CONVINCE_FLY_BACK_TO_BARTH,\n                new StringBuilder(\"\"),\n                this,\n                new MyMissionID[] { MyMissionID.BARTHS_MOON_CONVINCE_FIND_TRANSMITTER },\n                null,\n                false\n            ) { SaveOnSuccess = false };\n            flyBackSubmission.OnMissionLoaded += FlyBackSubmissionOnLoaded;\n            flyBackSubmission.OnMissionCleanUp += FlyBackSubmissionOnCleanUp;\n            m_objectives.Add(flyBackSubmission);\n            */\n            \n            var backToMadelyn = new MyObjective(\n                (MyTextsWrapperEnum.BARTHS_MOON_CONVINCE_RETURN_BACK_TO_MADELYN_Name),\n                MyMissionID.BARTHS_MOON_CONVINCE_RETURN_BACK_TO_MADELYN,\n                (MyTextsWrapperEnum.BARTHS_MOON_CONVINCE_RETURN_BACK_TO_MADELYN_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.BARTHS_MOON_CONVINCE_FIND_TRANSMITTER },\n                new MyMissionLocation(baseSector, MyMissionLocation.MADELYN_HANGAR),\n                startDialogId: MyDialogueEnum.BARTHS_MOON_CONVINCE_0700,\n                radiusOverride: MyMissionLocation.MADELYN_HANGAR_RADIUS\n            ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudMadelynsSapho };\n            m_objectives.Add(backToMadelyn);\n        }\n\n        void destroyGeneratorSubmission_OnMissionSuccess(MyMissionBase sender)\n        {\n            var madelynDummy = MyScriptWrapper.GetEntity((uint)EntityID.MadelynDummyId);\n            MyScriptWrapper.Move(MyScriptWrapper.GetEntity(\"Madelyn\"), madelynDummy.WorldMatrix.Translation, madelynDummy.WorldMatrix.Forward, madelynDummy.WorldMatrix.Up);\n            MyScriptWrapper.RegenerateWaypointGraph();\n        }\n\n        public override void Load()\n        {\n            base.Load();\n            EnableCorrectBarths((uint)EntityID.ThomasBartId, (uint)EntityID._01SmallShipBarth);\n            MyScriptWrapper.SetEntityPriority(MyScriptWrapper.GetEntity(\"Marcus\"), 10);\n            MyScriptWrapper.SetEntityPriority(GetEntity(EntityID.RaidersMothership), -1);\n\n            var mainSmallShip = GetEntity(EntityID.MainSmallShip) as MySmallShipBot;\n            if (mainSmallShip != null)\n            {\n                mainSmallShip.SetWaypointPath(\"inside\");\n                mainSmallShip.Patrol();\n            }\n\n            MyScriptWrapper.OnSpawnpointBotSpawned += OnSpawnpointBotSpawned;\n            MyScriptWrapper.SpawnpointBotsKilled += OnSpawnpointBotsKilled;\n            MyScriptWrapper.EntityDeath += EntityDeath;\n            MyScriptWrapper.OnSentenceStarted += MyScriptWrapper_OnSentenceStarted;\n            //MyScriptWrapper.OnDialogueFinished += OnDialogueFinished;\n        }\n\n        public override void Unload()\n        {\n            base.Unload();\n\n            MyScriptWrapper.OnSpawnpointBotSpawned -= OnSpawnpointBotSpawned;\n            MyScriptWrapper.SpawnpointBotsKilled -= OnSpawnpointBotsKilled;\n            MyScriptWrapper.EntityDeath -= EntityDeath;\n            MyScriptWrapper.OnSentenceStarted -= MyScriptWrapper_OnSentenceStarted;\n            //MyScriptWrapper.OnDialogueFinished -= OnDialogueFinished;\n        }\n\n\n        void MyScriptWrapper_OnSentenceStarted(MyDialogueEnum dialogue, MyDialoguesWrapperEnum sentence)\n        {\n            if (dialogue == MyDialogueEnum.BARTHS_MOON_CONVINCE_0300 && sentence == MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0308)\n            {\n                MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.Special, 100, \"KA12\", false);\n            }\n\n            if (dialogue == MyDialogueEnum.BARTHS_MOON_CONVINCE_0400 && sentence == MyDialoguesWrapperEnum.Dlg_BarthsMoonConvince_0405)\n            {\n                MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.Special, 100, \"KA14\");\n            }\n        }\n\n        void FlyToEnemyBaseOnLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.StealthAction, 100, \"KA01\");\n            m_ambushDetector = InitDetector((uint)EntityID.AmbushDetectorDummy, OnAmbushDetectorEnter);\n        }\n\n        void FlyToEnemyBaseOnCleanUp(MyMissionBase sender)\n        {\n            CleanUpDetector(m_ambushDetector, OnAmbushDetectorEnter);\n        }\n\n        void FlyBackSubmissionOnLoaded(MyMissionBase sender)\n        {\n            m_flyBackDetector = InitDetector((uint)EntityID.FlyBackDetector, OnFlyBackDetectorEnter);\n        }\n\n        void OnAmbushDetectorEnter(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (entity == MySession.PlayerShip)\n            {\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.AmbushSpawnpoint0);\n            }\n        }\n\n        void FlyBackSubmissionOnCleanUp(MyMissionBase sender)\n        {\n            CleanUpDetector(m_flyBackDetector, OnFlyBackDetectorEnter);\n        }\n\n        void OnFlyBackDetectorEnter(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (entity == MySession.PlayerShip)\n            {\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.FlyBackSpawnpoint0);\n            }\n        }\n\n        void MeetThomasBarthOnLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.Mystery, 100, \"KA01\");\n            MyScriptWrapper.SetParticleEffect(GetEntity(EntityID.ShipFlameEffect), false);\n            MyScriptWrapper.SetParticleEffect(GetEntity(EntityID.GeneratorFlameEffect), false);\n            m_dialogue2Detector = InitDetector((uint)EntityID.ConvinceDialog2DetectorId, MeetThomasBarthDialogue2Detector);\n        }\n\n        void MeetThomasBarthOnUnload(MyMissionBase sender)\n        {\n            CleanUpDetector(m_dialogue2Detector, MeetThomasBarthDialogue2Detector);\n        }\n\n        void MeetThomasBarthDialogue2Detector(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (entity == MySession.PlayerShip)\n        \t{\n                CleanUpDetector(m_dialogue2Detector, MeetThomasBarthDialogue2Detector);\n                MyScriptWrapper.PlayDialogue(MyDialogueEnum.BARTHS_MOON_CONVINCE_0200);\n\t        }\n        }\n\n        void DestroyShipSubmissionOnLoad(MyMissionBase sender)\n        {\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.HeavyFight, 100, \"KA06\");\n\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.EngineSpawnpoint);\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.EngineSpawnpoint2);\n        }\n        \n        void DestroyGeneratorSubmissionOnLoad(MyMissionBase sender)\n        {\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.LightFight, 100, \"KA05\");\n\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.CaveSpawnpoint1);\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.CaveSpawnpoint2);\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.CaveSpawnpoint3);\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.CaveSpawnpoint4);\n\n            MyScriptWrapper.DeactivateSpawnPoint((uint)EntityID.EngineSpawnpoint);\n            MyScriptWrapper.DeactivateSpawnPoint((uint)EntityID.EngineSpawnpoint2);\n        }\n\n        void FindTransmitterSubmissionOnMissionLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.Highlight((uint)EntityID.PirateReward, true, sender);\n        }\n\n        void FindTransmitterSubmissionOnSuccess(MyMissionBase sender)\n         {\n            MyScriptWrapper.CloseEntity(MyScriptWrapper.GetEntity((uint)EntityID.PirateReward));\n            MyScriptWrapper.AddMoney(50000);\n        }\n\n        void OnSpawnpointBotSpawned(MyEntity spawnpoint, MyEntity bot)\n        {\n            // Reduce health of all bots by 25%\n            uint id = MyScriptWrapper.GetEntityId(spawnpoint);\n            foreach (var spawnpointId in m_botSpawnpoints)\n            {\n                if (spawnpointId == id)\n                {\n                    bot.MaxHealth *= 0.25f;\n                    break;\n                }\n            }\n        }\n\n        void OnSpawnpointBotsKilled(MySpawnPoint spawnpoint)\n        {\n            uint id = MyScriptWrapper.GetEntityId(spawnpoint);\n            switch (id)\n            {\n                // Ambush waves\n                case (uint)EntityID.AmbushSpawnpoint0:\n                    MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.AmbushSpawnpoint1);\n                    break;\n                case (uint)EntityID.AmbushSpawnpoint1:\n                    MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.AmbushSpawnpoint2);\n                    break;\n\n                // Fly Back waves\n                case (uint)EntityID.FlyBackSpawnpoint0:\n                    MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.FlyBackSpawnpoint1);\n                    break;\n                case (uint)EntityID.FlyBackSpawnpoint1:\n                    MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.FlyBackSpawnpoint2);\n                    break;\n            }\n        }\n\n        void EntityDeath(MyEntity entity, MyEntity killedBy)\n        {\n            uint id = MyScriptWrapper.GetEntityId(entity);\n\n            if (id == (uint)EntityID.ShipGenerator)\n            {\n                MyScriptWrapper.SetParticleEffect(GetEntity(EntityID.ShipFlameEffect), true);\n            }\n\n            if (id == (uint)EntityID.BaseGenerator)\n            {\n                MyScriptWrapper.SetParticleEffect(GetEntity(EntityID.GeneratorFlameEffect), true);\n            }\n        }\n                 /*\n        void OnDialogueFinished(MyDialogueEnum dialogue, bool interrupted)\n        {\n            if (dialogue == talk1 || dialogue == talk2)\n            {\n                var barth = GetEntity(EntityID.ThomasBartId) as MySmallShipBot;\n                if (barth != null)\n\t            {\n                    barth.LookTarget = null;\n                    barth.SetWaypointPath(\"interior2\");\n                    barth.Patrol();\n\t            }\n            }\n        }          */\n        \n        private MyEntityDetector InitDetector(uint detectorID, OnEntityEnter handler)\n        {\n            MyEntityDetector detector = MyScriptWrapper.GetDetector(MyScriptWrapper.GetEntity(detectorID));\n            detector.OnEntityEnter += handler;\n            detector.On();\n            return detector;\n        }\n\n        private void CleanUpDetector(MyEntityDetector detector, OnEntityEnter handler)\n        {\n            if (detector != null)\n            {\n                detector.OnEntityEnter -= handler;\n                detector.Off();\n            }\n        }\n\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/SinglePlayer/MyBarthsMoonMissionBase.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.AppCode.Game.HUD;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.Audio.Dialogues;\nusing MinerWarsMath;\nusing System.Diagnostics;\nusing MinerWars.AppCode.Game.Entities.WayPoints;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.AppCode.Game.Localization;\n\nnamespace MinerWars.AppCode.Game.Missions.SinglePlayer\n{\n    class MyBarthsMoonMissionBase : MyMission\n    {\n        protected class MyBarthsMoonSubmissionTalkWithThomasBarth : MyObjective\n        {\n            private uint m_botDetectorId;\n            private uint m_botToTalkId;            \n            private int m_distanceToTalk;\n            private bool m_restartPatrol;\n            private string m_pathName;\n\n            private MySmallShipBot m_botToTalk;\n            private MyEntityDetector m_botDetector;\n\n            public MyBarthsMoonSubmissionTalkWithThomasBarth(MyTextsWrapperEnum Name, MyMissionID ID, MyTextsWrapperEnum Description, MyMission ParentMission, MyMissionID[] RequiredMissions, MyDialogueEnum? dialogue, bool restartPatrol = true, MyDialogueEnum? startDialogue = null, string pathName = \"interior2\")\n                : base(Name, ID, Description, null, ParentMission, RequiredMissions, null, null, dialogue) \n            {                \n                m_botToTalkId = (uint)EntityID.ThomasBartId;\n\n                m_botDetectorId = (uint)EntityID.ThomasBartDetectorId;\n                m_distanceToTalk = 100;\n                m_restartPatrol = restartPatrol;\n                m_pathName = pathName;\n                MissionEntityIDs.Add(m_botToTalkId);\n            }\n\n            public override void Load()\n            {\n                base.Load();\n                MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.CalmAtmosphere); // Sets music group to be played in the sector - no matter if the mission is running or not\n                m_botDetector = MyScriptWrapper.GetDetector(m_botDetectorId);\n                m_botDetector.On();\n                m_botDetector.OnEntityEnter += m_botDetector_OnEntityEnter;\n                m_botToTalk = MyScriptWrapper.GetEntity(m_botToTalkId) as MySmallShipBot;\n                m_botToTalk.SpeedModifier = 0.25f;\n                SetPatrolMode();\n                \n                Debug.Assert(m_botToTalk != null);                \n            }\n\n            private void SetPatrolMode() \n            {\n                m_botToTalk.LookTarget = null;\n                m_botToTalk.SetWaypointPath(m_pathName);\n                m_botToTalk.Patrol();\n            }\n\n            void m_botDetector_OnEntityEnter(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n            {\n                MyScriptWrapper.Follow(MySession.PlayerShip, m_botToTalk);\n                sender.Off();\n            }            \n\n            public override bool IsSuccess()\n            {\n                if (m_botToTalk != null && Vector3.DistanceSquared(m_botToTalk.GetPosition(), MySession.PlayerShip.GetPosition()) <= m_distanceToTalk * m_distanceToTalk)\n                {\n                    StopFollow();\n                    return true;\n                }\n                return false;\n            }\n\n            public override void Success()\n            {\n                base.Success();\n            }\n\n            public override void Unload()\n            {\n                if (m_restartPatrol)\n                {\n                    SetPatrolMode();\n                }\n\n                base.Unload();\n                if (m_botDetector != null) \n                {\n                    m_botDetector.Off();\n                    m_botDetector.OnEntityEnter -= m_botDetector_OnEntityEnter;\n                }\n            }\n\n            private void StopFollow() \n            {\n                m_botToTalk.LookTarget = MySession.PlayerShip;\n                MyScriptWrapper.StopFollow(m_botToTalk);                \n            }\n        }\n\n        protected enum EntityID : uint\n        {\n\n            BarthsMoon2StartLocation = 2725127,\n            BarthsMoon2MadelynLocation = 2725121,\n            BarthsMoon2DisableInfluenceSphere = 16787347,\n\n            BuildDetector0 = 1089490,\n            BuildPlatform0 = 1663315,\n            BuildContainer0 = 1663266,\n\n            BuildDetector1 = 1089492,\n            BuildPlatform1 = 1663313,\n            BuildContainer1 = 1663267,\n\n            BuildDetector2 = 1089496,\n            BuildPlatform2 = 1663319,\n            BuildContainer2 = 1663268,\n\n            BuildDetector3 = 1089494,\n            BuildPlatform3 = 1663317,\n            BuildContainer3 = 1663269,\n\n            BuildDetector4 = 1089476,\n            BuildPlatform4 = 1663321,\n            BuildContainer4 = 1663270,\n\n            BuildDetector5 = 1089488,\n            BuildPlatform5 = 1663323,\n            BuildContainer5 = 1663271,\n\n            ThomasBartId = 1785814,\n            ThomasBartDetectorId = 1785846,\n            MadelynDummyId = 16785949,\n\n            FlyToEnemyBaseSubmissionLocation = 1934316,\n            ShipGenerator = 1800811,\n            BaseGenerator = 1896481,\n            MainSmallShip = 1946366,\n            EngineSpawnpoint = 1800916,\n            EngineSpawnpoint2 = 1949674,\n            CaveSpawnpoint1 = 1800915,\n            CaveSpawnpoint2 = 1800914,\n            CaveSpawnpoint3 = 1800913,\n            CaveSpawnpoint4 = 1800919,\n            TakeTransmitterDummy = 1801017,\n            ShipFlameEffect = 1918251,\n            GeneratorFlameEffect = 1918252,\n            FlyBackDetector = 1800804,\n            FlyBackSpawnpoint0 = 1918248,\n            FlyBackSpawnpoint1 = 1954776,\n            FlyBackSpawnpoint2 = 1954777,\n            AmbushDetectorDummy = 1949972,\n            AmbushSpawnpoint0 = 1800917,\n            AmbushSpawnpoint1 = 1949676,\n            AmbushSpawnpoint2 = 1949675,\n\n            InvisibleContainer1 = 2058250,\n            InvisibleContainer2 = 2103332,\n            InvisibleContainer3 = 2203552,\n\n\n            BrokenMoonDummy = 2016697,\n            FanDummy = 2671110,\n            Destroyprefab = 2058259,\n            ToDestroyPrefab1 = 2058257,\n            ToDestroyPrefab2 = 2058256,\n            ToDestroyParticle1 = 2103319,\n            ToDestroyParticle2 = 2068275,\n            ToDestroyParticle3 = 2020682,\n            VoxelDummy1 = 2058244,\n            VoxelDummy2 = 2058245,\n            VoxelDummy3 = 2058246,\n            VoxelDummy4 = 2058247,\n            VoxelDummy5 = 2058249,\n            VoxelDummy6 = 2058248,\n            VoxelMap = 2582973,\n\n            SecurityHubDummy = 1993580,\n\n            EnableGenerator = 2203566,\n            SecurityHubLook1 = 2203568,\n            SecurityHubLook2 = 2584525,\n\n            Cargobox1 = 2016743,\n            Cargobox2 = 1990020,\n\n            DroneGeneratroHub1 = 2322458,\n            Dronegenerator1 = 1976987,\n            Dronegenerator1particles = 2203576,\n            DroneGeneratroHub2 = 2273178,\n            DroneGenerator2 = 1976989,\n\n            Hub1Dummy = 2489570,\n            Hub2Dummy = 2489571,\n            Hub3Dummy = 2489572,\n            Hub4Dummy = 2489573,\n\n            /*\n            SecurityScanner1 = 1972344,\n            SecurityScanner2 = 1981496,\n            */\n\n            InfluenceSphere1 = 2583203,\n            InfluenceSphere2 = 2583205,\n            InfluenceSphere3 = 2583207,\n            ActivateDummyInfl = 2503268,\n            ActivateGenerator = 2203795,\n            TurretId = 1976967,\n            TurretDestroyprefab = 2103322,\n            ActiveDummy1 = 2503264,\n            ActiveDummy2 = 2503263,\n            ActiveDummy3 = 2503262,\n            ActiveDummy4 = 2503265,\n            //TurretKillShow = 2103332,\n\n            SpawnPoint1 = 1981606,\n            SpawnPoint2 = 1981608,\n\n            EnterMainLabDummy = 1981501,\n            EnterMainLabDetector = 2203585,\n            SpawnPoint3 = 1981601,\n            SpawnPoint4 = 1981607,\n\n            DestroyComputer = 2671717,\n            DestroyCompParticleDummy = 2671716,\n            //DestroyComputerDummyActivateTurrets = 1981501,\n            //DestroyComputerDummyActivateSpawn = 1981501 ;\n            SpawnPoint5 = 1981605,\n            SpawnPoint6 = 1981603,\n            SpawnPoint7 = 1981604,\n            SpawnPoint8 = 1981602,\n\n\n            CollectPart1 = 2671316,\n            CollectPart2 = 2671315,\n            CollectPart3 = 2671312,\n\n\n            CollectPart1Dummy = 2210396,\n            CollectPart2Dummy = 2210395,\n            CollectPart3Dummy = 2210397,\n\n\n            EscapeDummy = 2020668,\n            EscapeEventDummy = 2203587,\n            EscapeEventDummyToActive1 = 2203547,\n            EscapeEventDummyToActive2 = 2203543,\n            InvisibleDummy4 = 2579910,\n\n            SpawnPoint9 = 2203778,\n            SpawnPoint10 = 2203779,\n            SpawnPoint11 = 2203781,\n            SpawnPoint12 = 2203780,\n            DetectorWayBack2 = 2203784,\n            SpawnPoint13 = 2203783,\n            SpawnPoint14 = 2203782,\n\n            WayForbarthLastWayPoint = 2203799,\n            SpawnPointEscape = 2579909,\n            HidePrefabCont = 2580779,\n\n            ParticleDummy1 = 2580916,\n            ParticleDummy2 = 2580890,\n            AlarmContId = 1958806,\n\n            PlayerStartLocationPlant = 2701202,\n            PlayerStartLocationConvince = 303745,\n            PlayerStartLocationTransmitter = 71,\n            MadelynMotShip = 2672892,\n            BarthsTurrets1 = 2700945,\n            BarthsDestroyedBase = 2699223,\n            BarthNormalBase = 2700604,\n            WayPoint = 2701207,\n\n            //turretDestroy1 =2103324,\n            turretDestroy2 = 2103320,\n            turretDestroy3 = 2103325,\n            Doors = 2016400,\n            GeneratorDestroyed = 2580811,\n\n\n            _01SmallShipBarth = 2701051,\n            _01Detector = 2703136,\n            _01PirateShip = 2697503,\n            _01PirateShiptarget = 2697564,\n            _01SpawnPoint = 2696598,\n            _01SpawnPoint2 = 2720983,\n\n            _02MadelyneDefenceShip = 2695020,\n            //_02MadelynsHangar = 2708104 ,\n\n            _03Dummy = 2703138,\n            _03PortableTurrets = 2691923,\n\n\n            TURRET_CONTAINER_ID_1 = 2692004,\n            TURRET_CONTAINER_ID_2 = 2701090,\n            TURRET_CONTAINER_ID_3 = 2691968,\n            TURRET_CONTAINER_ID_4 = 2691950,\n            TURRET_CONTAINER_ID_5 = 2701184,\n            TURRET_CONTAINER_ID_6 = 2701108,\n            TURRET_CONTAINER_ID_7 = 2701144,\n\n\n            DETECTOR_ID_1 = 2703140,\n            DETECTOR_ID_2 = 2703142,\n            DETECTOR_ID_3 = 2703144,\n            DETECTOR_ID_4 = 2703146,\n            DETECTOR_ID_5 = 2703148,\n            DETECTOR_ID_6 = 2703150,\n            DETECTOR_ID_7 = 2704352,\n\n            DETECTOR_ID_8 = 2708082,\n\n            PARTICLE_ID_1 = 2704348,\n            PARTICLE_ID_2 = 2704346,\n            PARTICLE_ID_3 = 2704344,\n            PARTICLE_ID_4 = 2704342,\n            PARTICLE_ID_5 = 2704340,\n            PARTICLE_ID_6 = 2704350,\n            PARTICLE_ID_7 = 2703152,\n\n            PARTICLE_ID_8 = 2708083,\n\n            _05PirateShip = 2697625,\n            _05PirateBigShip = 2672627,\n            _05PirateShipTarget = 2696581,\n            _05PirateBigShipTarget = 2701428,\n\n\n            _06ParticleDummy = 2701441,\n            _06PrefabContainer1 = 2701450,\n            _06AttackmadelynDummy = 2705609,\n\n\n            _07PirateShipTarget = 2697725,\n            _07PirateBigShipTarget = 2695495,\n\n\n            _08generator1 = 2672774,\n            _08generator1particle = 2701440,\n            _08generator1VisibleCOnt = 2702969,\n\n            _08generator2 = 2697665,\n            _08generator2VisibleCont = 2702883,\n\n\n            _10generatorDummy = 2706812,\n            _10generatorparticleDummyEnable = 2706833,\n\n            _11placeBombDummy = 2706834,\n\n            _12MadelynDummy = 2708046,\n\n            MadelynLocation = 2720990,\n\n            BarthAttackDetector = 2720981,\n\n            //MadelynTurret1 = 2722358,\n            //MadelynTurret2 = 2722348,\n            //MadelynTurret3 = 2722353,\n\n\n            MadelynTurret1Detector = 2722376,\n            MadelynTurret2Detector = 2722366,\n            MadelynTurret3Detector = 2722370,\n\n\n            MadelynTurret1Particle = 2722377,\n            MadelynTurret2Particle = 2722367,\n            MadelynTurret3Particle = 2722371,\n\n\n            Explosion = 2701439,\n\n\n\n            Dialog5DetectorId = 16788772,\n            Dialog6DetectorId = 16788776,\n            Dialog10DetectorId = 16788778,\n            Dialog13DetectorId = 16788818,\n            Dialog17DetectorId = 16788820,\n\n            Dialog19DetectorId = 16788822,\n            //Dialog27DetectorId = 2203587,\n            Dialog31DetectorId = 16788826,\n\n            ConvinceDialog2DetectorId = 2989,\n            GetNeededComponentsDummy = 1989,\n            GetNeededComponentsContainer = 1979,\n            ConstructDetector = 2027,\n            UnhidePrefab = 259,\n            Light1 = 1662751,\n            Light2 = 1662734,\n            Light3 = 1662745,\n            PirateReward = 10,\n            RaidersMothership = 1793184,\n        }\n\n        public override void ValidateIds() // checks if all IDs in enum are loaded correctly\n        {\n            foreach (EntityID value in Enum.GetValues(typeof(EntityID)))\n            {\n                MyScriptWrapper.GetEntity((uint)value);\n            }\n        }\n\n        protected MyEntity GetEntity(EntityID entityId)\n        {\n            return MyScriptWrapper.GetEntity((uint)entityId);\n        }\n\n        protected MyBarthsMoonMissionBase(MyMissionID id, StringBuilder debugName, MyTextsWrapperEnum name, MyTextsWrapperEnum decription, MyMissionID[] requiredMissions, EntityID[] buildContainers, EntityID locationEntity)\n        {            \n            ID = id;\n            DebugName = debugName;\n            Name = name;\n            Description = decription;\n            RequiredMissions = requiredMissions;            \n            Location = new MyMissionLocation(baseSector, (uint)locationEntity);\n            m_buildedContainers = buildContainers;\n            m_objectives = new List<MyObjective>();\n            Flags = MyMissionFlags.Story;\n        }\n\n        protected static MyMwcVector3Int baseSector = new MyMwcVector3Int(3360719, 0, -27890037);\n        \n        private EntityID[] m_buildedContainers;        \n\n        public override void Load()\n        {            \n            HideDetectorAndPlatformAndContainer(EntityID.BuildDetector0, EntityID.BuildPlatform0, EntityID.BuildContainer0);\n            HideDetectorAndPlatformAndContainer(EntityID.BuildDetector1, EntityID.BuildPlatform1, EntityID.BuildContainer1);\n            HideDetectorAndPlatformAndContainer(EntityID.BuildDetector2, EntityID.BuildPlatform2, EntityID.BuildContainer2);\n            HideDetectorAndPlatformAndContainer(EntityID.BuildDetector3, EntityID.BuildPlatform3, EntityID.BuildContainer3);\n            HideDetectorAndPlatformAndContainer(EntityID.BuildDetector4, EntityID.BuildPlatform4, EntityID.BuildContainer4);\n            HideDetectorAndPlatformAndContainer(EntityID.BuildDetector5, EntityID.BuildPlatform5, EntityID.BuildContainer5);\n\n            base.Load();\n        }        \n\n        protected void HideDetectorAndPlatformAndContainer(EntityID detectorId, EntityID platformId, EntityID containerId) \n        {\n            HideDummy(detectorId);\n            HideDummy(platformId);\n            if (m_buildedContainers == null || !m_buildedContainers.Contains(containerId))\n            {                \n                HideContainer(containerId);\n            }\n        }        \n\n        protected static void HideDummy(EntityID platformId) \n        {\n            SetDummyVisibleStatus(platformId, false);\n        }\n\n        protected static void HideDummy(MyDummyPoint platform) \n        {\n            SetDummyVisibleStatus(platform, false);\n        }\n\n        protected static void ShowDummy(EntityID platformId) \n        {\n            SetDummyVisibleStatus(platformId, true);\n        }\n\n        protected static void ShowDummy(MyDummyPoint platform) \n        {\n            SetDummyVisibleStatus(platform, true);\n        }\n\n        protected static void SetDummyVisibleStatus(EntityID platformId, bool visible) \n        {\n            SetDummyVisibleStatus((MyDummyPoint)MyScriptWrapper.GetEntity((uint)platformId), visible);            \n        }\n\n        private static void SetDummyVisibleStatus(MyDummyPoint platform, bool visible) \n        {\n            if (visible)\n            {\n                MyScriptWrapper.UnhideEntity(platform);\n            }\n            else\n            {\n                MyScriptWrapper.HideEntity(platform);\n            }\n        }\n\n        protected static void ShowContainer(EntityID containerId) \n        {\n            SetContainerVisibleStatus(containerId, true);\n        }\n\n        protected static void ShowContainer(MyPrefabContainer container) \n        {\n            SetContainerVisibleStatus(container, true);\n        }\n\n        protected static void HideContainer(EntityID containerId) \n        {\n            SetContainerVisibleStatus(containerId, false);\n        }\n\n        protected static void HideContainer(MyPrefabContainer container) \n        {\n            SetContainerVisibleStatus(container, false);\n        }\n\n        protected static void SetContainerVisibleStatus(EntityID containerId, bool visible) \n        {\n            SetContainerVisibleStatus((MyPrefabContainer)MyScriptWrapper.GetEntity((uint)containerId), visible);            \n        }\n\n        protected static void HideContainers(List<uint> toHide)\n        {\n            foreach (var u in toHide)\n            {\n                SetContainerVisibleStatus((MyPrefabContainer)MyScriptWrapper.GetEntity(u), false);         \n            }\n        }\n\n        protected static void ShowContainers(List<uint> toHide)\n        {\n            foreach (var u in toHide)\n            {\n                SetContainerVisibleStatus((MyPrefabContainer)MyScriptWrapper.GetEntity(u), true);\n            }\n        }\n\n        protected static void EnableCorrectBarths(uint bartIdToEnable, uint bartIdToDisable) \n        {\n            MyScriptWrapper.SetEntityEnabled(bartIdToDisable, false);\n            MyScriptWrapper.HideEntity(MyScriptWrapper.GetEntity(bartIdToDisable));\n\n            EnableEntity(bartIdToEnable);\n            MyScriptWrapper.UnhideEntity(MyScriptWrapper.GetEntity(bartIdToEnable));\n        }\n\n        protected static void EnableEntities(List<uint> toEnable)\n        {\n            foreach (var u in toEnable)\n            {\n                MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.GetEntity(u),true);\n            }\n        }\n\n        protected static void DisableEntities(List<uint> toEnable)\n        {\n            foreach (var u in toEnable)\n            {\n                MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.GetEntity(u), true);\n            }\n        }\n\n        protected static void EnableEntity(uint id)\n        {\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.GetEntity(id), true);\n        }\n\n\n        protected static void DisableEntity(uint id)\n        {\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.GetEntity(id), false);\n        }\n\n        private static void SetContainerVisibleStatus(MyPrefabContainer container, bool visible) \n        {\n            if (visible)\n            {\n                MyScriptWrapper.UnhideEntity(container);\n            }\n            else \n            {\n                MyScriptWrapper.HideEntity(container);\n            }\n        }\n\n        protected static void ActivateSpawnpoints(List<uint> spawnPoints)\n        {\n            foreach (var spawnPoint in spawnPoints)\n            {\n                MyScriptWrapper.ActivateSpawnPoint(spawnPoint);\n            }\n        }\n\n\n        protected static void DeactivateSpawnpoints(List<uint> spawnPoints)\n        {\n            foreach (var spawnPoint in spawnPoints)\n            {\n                MyScriptWrapper.DeactivateSpawnPoint(spawnPoint);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/SinglePlayer/MyBarthsMoonPlantMission.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.AppCode.Game.Audio.Dialogues;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.HUD;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.AppCode.Game.Entities.SubObjects;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Missions.Components;\nusing MinerWars.AppCode.Game.Missions.Objectives;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.World;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWarsMath;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.Prefabs;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.Resources;\n\nnamespace MinerWars.AppCode.Game.Missions.SinglePlayer\n{\n    class MyBarthsMoonPlantMission : MyBarthsMoonMissionBase\n    {\n\n        #region EntityIDs\n        private readonly List<uint> m_barthsMoonM1 = new List<uint>() { 1800664, 1793182 };\n        private readonly List<uint> m_barthsMoonM2 = new List<uint>() { 1958806, 2203565, 2580779, 2203552, 2103332, 2577321 };\n        private readonly List<uint> m_particleEffectsToEnable = new List<uint>() { 2700930, 2700931, 2700933, 2700932, 2700934, 2700935, 2700936, 2700942, 2700992, 2700991, 2700990, 2701048, 2701088, 2701280 };\n        private readonly List<uint> m_particleEffectsToDisable = new List<uint>() { 1677229, 1734884, 1697589, 1687418 };\n        private readonly List<uint> m_02SpawnPoints = new List<uint>() { 2696600, 2696597, 2696599 };\n        private readonly List<uint> m_05SpawnPoints = new List<uint>() { 2695664, 2695663, 2695660, 2695659, 2695656, 2695658, 2695665, 2695666, 2695662, 2695661 };\n        private readonly List<uint> m_06SpawnPoints = new List<uint>() { 2701423, 2701422, 2701391, 2701392, 2701426 };\n        private readonly List<uint> m_06ParticleDummies = new List<uint>() { 2701689, 2702880, 2702874 };\n\n        private readonly List<uint> m_06BombsContainersIds = new List<uint>() { 2694990, 2694915, 2686986, 2694965, 2694940 };\n        private readonly List<uint> m_06BombsTargetDummy = new List<uint>() { 2695015, 2695016, 2695017, 2695018, 2695019 };\n        private readonly List<uint> m_06BombsParticleDummy = new List<uint>() { 2701444, 2701445, 2701446, 2701447, 2701448 };\n        private readonly List<uint> m_06BombsPrefabsIDs = new List<uint>() { 2694993, 2694918, 2686989, 2694968, 2694943 };\n        private readonly List<uint> m_06BombsFlyTimes = new List<uint>() { 40 * 1000, 40 * 1000, 40 * 1000, 40 * 1000, 40 * 1000 };\n        private readonly List<uint> m_06BombsTimeOffsets = new List<uint>() { 5000, 35 * 1000, 45 * 1000, 75 * 1000, 90 * 1000 };\n\n        private readonly List<uint> m_08Generator1Particles = new List<uint>() { 2703126, 2703127, 2703128, 2703125, 2703132 };\n        private readonly List<uint> m_08Generator2Particles = new List<uint>() { 2702950, 2702949, 2702951, 2702947, 2702954, 2701439 };\n        private readonly List<uint> m_08SpawnPoints1 = new List<uint>() { 2695653, 2695654, 2695651, 2695652 };\n        private readonly List<uint> m_08SpawnPoints2 = new List<uint>() { 2697733 };\n        private readonly List<uint> m_hidePrefabContainers = new List<uint>() { 2577321, 2203565, 1958806, 2103332, 2203552, 2580779, 1921382, 1800664, 1793182 };\n        private readonly List<uint> m_spawns = new List<uint>() { 2695664, 2695663, 2695660, 2695659, 2695656, 2695658, 2695665, 2695666, 2695662, 2695661, 2701423, 2701422, 2701391, 2701392, 2701426, 2695653, 2695654, 2695651, 2695652, 2697733 };\n\n        private readonly List<uint> m_setVisible = new List<uint>() { 2708067, 2708074, 2708070, 2708068, 2708065, 2708076, 2708066, 2723725, 2708069, 2708073 };\n        private readonly List<uint> m_setInVisible = new List<uint>() { 2203565, 1958806, 2328595, 2577321, 1793182, 1800664, 1946366, 1921567, 1934141, 1949974, 2584326, 1946253, 1921569, 1934140, 1946250, 2584325, 1921568, 1946252, 1921566 };\n        private readonly List<uint> m_disableDummy = new List<uint>() { 1822189, 1918251, 1825161, 1918000, 1918001, 1917998, 1917997, 1917999, 1917661, 1816248, 1875664, 1822190, 1905545, 1902558, 1918252 };\n\n\n\n        public override void ValidateIds()\n        {\n            if (!IsMainSector) return;\n\n            base.ValidateIds();\n\n            var list = new List<uint>();\n            list.AddRange(m_barthsMoonM1);\n            list.AddRange(m_barthsMoonM2);\n            list.AddRange(m_particleEffectsToDisable);\n            list.AddRange(m_particleEffectsToEnable);\n            list.AddRange(m_02SpawnPoints);\n            list.AddRange(m_05SpawnPoints);\n            list.AddRange(m_06SpawnPoints);\n            list.AddRange(m_06ParticleDummies);\n\n            list.AddRange(m_06BombsContainersIds);\n            list.AddRange(m_06BombsTargetDummy);\n            list.AddRange(m_06BombsParticleDummy);\n            list.AddRange(m_06BombsPrefabsIDs);\n            list.AddRange(m_08Generator1Particles);\n            list.AddRange(m_08Generator2Particles);\n            list.AddRange(m_08SpawnPoints1);\n            list.AddRange(m_08SpawnPoints2);\n            list.AddRange(m_hidePrefabContainers);\n            list.AddRange(m_spawns);\n            list.AddRange(m_setVisible);\n            list.AddRange(m_setInVisible);\n            list.AddRange(m_disableDummy);\n\n            foreach (var u in list)\n            {\n                MyScriptWrapper.GetEntity(u);\n            }\n        }\n        #endregion\n\n        private MyEntity m_05PirateShip;\n        private MyEntity m_05PirateBigShip;\n        private MyEntityDetector m_attackBarthDetector;\n\n        private MySmallShipBot m_barth;\n\n        private readonly Dictionary<uint, uint> m_turretContainerToDetectorMapping = new Dictionary<uint, uint>();\n        private readonly Dictionary<uint, uint> m_detectorToTurretContainerMapping = new Dictionary<uint, uint>();\n        private readonly Dictionary<uint, uint> m_detectorToParticleMapping = new Dictionary<uint, uint>();\n\n        private MyTimedObjective m_protectBarth;\n        private MyTimedObjective m_protectMadelyn;\n        private MyTimedObjective m_buildDefenses;\n        private MyTimedObjective m_lastStand;\n        private MyObjectiveDestroy m_destroyGenerators;\n        private MyMeetObjective m_barthEndDialogue;\n        private MyUseObjective m_10startGenerator;\n        private MyUseObjective m_11placeBomb;\n        private MyMeetObjective m_12talkWithThomasBarthEnd;\n\n        private object[] m_actionKeyString = new object[1];\n\n        private MyHudNotification.MyNotification m_canBuildNotification;\n        private MyHudNotification.MyNotification m_remainingTurretsNotification;\n        //private MyHudNotification.MyNotification m_canSkipNotification;\n        private MyHudNotification.MyNotification m_canRepairNotification;\n        \n        private MyGuiScreenUseProgressBar m_buildProgress;\n        private MyGuiScreenUseProgressBar m_repairProgress;\n\n        private const int NUMBER_OF_TURRETS_TO_BUILD = 4;\n\n        private int m_turretsBuilt = 0;\n        private bool m_destroySuicideDialoguePlayed;\n\n        private bool m_building;\n        private bool m_repairing;\n\n        private MyEntityDetector m_currentDetector;\n        private MyEntityDetector m_06AttackDetector;\n\n        private List<MyLine> m_06BombsTrajectories;\n        private List<MyEntity> m_06BombsContainers;\n        private List<bool> m_06BombsDeath;\n        private List<float> m_06BombsProgresses;\n        private List<bool> m_06BombsMarked;\n\n        public MyBarthsMoonPlantMission()\n            : base(MyMissionID.BARTHS_MOON_PLANT,\n                   new StringBuilder(\"15-Barth's moon plant\"),\n                   MyTextsWrapperEnum.BARTHS_MOON_PLANT,\n                   MyTextsWrapperEnum.BARTHS_MOON_PLANT_Description,\n                   new MyMissionID[] { MyMissionID.RIFT },\n                   new EntityID[] { EntityID.BuildContainer4 },\n                   EntityID.PlayerStartLocationPlant)\n        {\n            m_objectives = new List<MyObjective>();\n            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.BARTHS_MOON_PLANT_TALK_BARTH };\n            RequiredActors = new MyActorEnum[] { MyActorEnum.MADELYN, MyActorEnum.VALENTIN, MyActorEnum.TARJA };\n            RequiredMissions = new MyMissionID[] { MyMissionID.RIFT };\n\n            #region Objectives\n            var saveThomas = new MyTimedMeetObjective(\n                (MyTextsWrapperEnum.BARTHS_MOON_PLANT_SAVE_BARTH_Name),\n                MyMissionID.BARTHS_MOON_PLANT_SAVE_BARTH,\n                (MyTextsWrapperEnum.BARTHS_MOON_PLANT_SAVE_BARTH_Description),\n                this,\n                new MyMissionID[] { },\n                (uint)EntityID._01Detector,\n                (uint)EntityID._01SmallShipBarth,\n                100,\n                0.25f,\n                new TimeSpan(0, 1, 30),\n                startDialogueId: MyDialogueEnum.BARTHS_MOON_PLANT_0100,\n                successDialogueId: MyDialogueEnum.BARTHS_MOON_PLANT_0200,\n                stopFollow: false\n                ) { SaveOnSuccess = true, PathName = \"BarthEs\" };\n            saveThomas.Components.Add(new MyMovingEntity((uint)EntityID._01PirateShip, (uint)EntityID._01PirateShiptarget, (int)new TimeSpan(0, 1, 30).TotalMilliseconds));\n            saveThomas.OnMissionLoaded += SaveThomas_Loaded;\n            m_objectives.Add(saveThomas);\n\n            var killAttackers = new MyObjectiveDestroy(\n                (MyTextsWrapperEnum.BARTHS_MOON_PLANT_KILL_ATTACKERS_Name),\n                MyMissionID.BARTHS_MOON_PLANT_KILL_ATTACKERS,\n                (MyTextsWrapperEnum.BARTHS_MOON_PLANT_KILL_ATTACKERS_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.BARTHS_MOON_PLANT_SAVE_BARTH },\n                null,\n                m_02SpawnPoints,\n                false\n                ) { SaveOnSuccess = true, };\n            killAttackers.OnMissionLoaded += KillAttackers_Loaded;\n            m_objectives.Add(killAttackers);\n\n\n            var getTurrets = new MyUseObjective(\n                (MyTextsWrapperEnum.BARTHS_MOON_PLANT_DEFENCE_Name),\n                MyMissionID.BARTHS_MOON_PLANT_DEFENCE,\n                (MyTextsWrapperEnum.BARTHS_MOON_PLANT_DEFENCE_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.BARTHS_MOON_PLANT_KILL_ATTACKERS },\n                new MyMissionLocation(baseSector, (uint)EntityID._03Dummy),\n                MyTextsWrapperEnum.PressToTakeTurrets,\n                MyTextsWrapperEnum.Turrets,\n                MyTextsWrapperEnum.TransferInProgress,\n                3000,\n                startDialogId: MyDialogueEnum.BARTHS_MOON_PLANT_0300) { SaveOnSuccess = true };\n            getTurrets.OnMissionLoaded += GetTurrets_Loaded;\n            getTurrets.OnMissionSuccess += GetTurrets_Success;\n            m_objectives.Add(getTurrets);\n\n\n\n            m_buildDefenses = new MyTimedObjective(\n                (MyTextsWrapperEnum.BARTHS_MOON_PLANT_BUILD_DEFENCE_LINE_Name),\n                MyMissionID.BARTHS_MOON_PLANT_BUILD_DEFENCE_LINE,\n                (MyTextsWrapperEnum.BARTHS_MOON_PLANT_BUILD_DEFENCE_LINE_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.BARTHS_MOON_PLANT_DEFENCE },\n                new TimeSpan(0, 0, minutes: 1, seconds: 30)\n\n                ) { DisplayCounter = true, SaveOnSuccess = true };\n            m_buildDefenses.OnMissionLoaded += BuildDefenses_Loaded;\n            m_buildDefenses.OnMissionUpdate += BuildDefenses_Update;\n            m_buildDefenses.OnMissionCleanUp += BuildDefenses_Unloaded;\n            m_objectives.Add(m_buildDefenses);\n\n\n\n            m_protectBarth = new MyTimedObjective(\n                (MyTextsWrapperEnum.BARTHS_MOON_PLANT_PROTECT_BARTH_Name),\n                MyMissionID.BARTHS_MOON_PLANT_PROTECT_BARTH,\n                (MyTextsWrapperEnum.BARTHS_MOON_PLANT_PROTECT_BARTH_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.BARTHS_MOON_PLANT_BUILD_DEFENCE_LINE },\n                new TimeSpan(0, minutes: 2, seconds: 0),\n                true\n                ) { DisplayCounter = false, SaveOnSuccess = true, StartDialogId = MyDialogueEnum.BARTHS_MOON_PLANT_0400, MakeEntityIndestructible = false };\n            m_protectBarth.MissionEntityIDs.Add((uint)EntityID._01SmallShipBarth);\n            m_protectBarth.Components.Add(new MyMovingEntity((uint)EntityID._05PirateShip, (uint)EntityID._01PirateShiptarget, (int)m_protectBarth.SubmissionDuration.TotalMilliseconds));\n            m_protectBarth.Components.Add(new MyMovingEntity((uint)EntityID._05PirateBigShip, (uint)EntityID._05PirateBigShipTarget, (int)m_protectBarth.SubmissionDuration.TotalMilliseconds));\n            m_protectBarth.OnMissionLoaded += ProtectBarth_Loaded;\n            m_protectBarth.OnMissionCleanUp += ProtectBarth_Unloaded;\n            m_protectBarth.OnMissionSuccess += ProtectBarth_Success;\n            m_objectives.Add(m_protectBarth);\n\n\n            m_protectMadelyn = new MyTimedObjective(\n                (MyTextsWrapperEnum.BARTHS_MOON_PLANT_PROTECT_MADELYN_Name),\n                MyMissionID.BARTHS_MOON_PLANT_PROTECT_MADELYN,\n                (MyTextsWrapperEnum.BARTHS_MOON_PLANT_PROTECT_MADELYN_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.BARTHS_MOON_PLANT_PROTECT_BARTH },\n                new TimeSpan(0, minutes: 3, seconds: 0),\n                true) { SaveOnSuccess = true, DisplayCounter = false, HudName = MyTextsWrapperEnum.HudCommandCenter };\n            m_protectMadelyn.OnMissionLoaded += ProtectMadelyn_Loaded;\n            m_protectMadelyn.OnMissionSuccess += ProtectMadelyn_Success;\n            m_protectMadelyn.OnMissionCleanUp += ProtectMadelyn_CleanUp;\n            m_protectMadelyn.OnMissionUpdate += ProtectMadelyn_Update;\n            m_protectMadelyn.Components.Add(new MyTimedDialogue(new TimeSpan(0, 0, 5), MyDialogueEnum.BARTHS_MOON_PLANT_0600));\n            m_objectives.Add(m_protectMadelyn);\n\n\n            m_lastStand = new MyTimedObjective(\n                (MyTextsWrapperEnum.BARTHS_MOON_PLANT_ENEMY_Name),\n                MyMissionID.BARTHS_MOON_PLANT_ENEMY,\n                (MyTextsWrapperEnum.BARTHS_MOON_PLANT_ENEMY_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.BARTHS_MOON_PLANT_PROTECT_MADELYN },\n                new TimeSpan(0, 0, 50),\n                true\n            ) { /*DisplayCounter = false, */ SaveOnSuccess = true, StartDialogId = MyDialogueEnum.BARTHS_MOON_PLANT_0800 };\n            m_lastStand.Components.Add(new MyMovingEntity((uint)EntityID._05PirateShip, (uint)EntityID._07PirateShipTarget, (int)m_lastStand.SubmissionDuration.TotalMilliseconds));\n            m_lastStand.Components.Add(new MyMovingEntity((uint)EntityID._05PirateBigShip, (uint)EntityID._07PirateBigShipTarget, (int)m_lastStand.SubmissionDuration.TotalMilliseconds));\n            m_lastStand.OnMissionLoaded += LastStand_Loaded;\n            m_lastStand.OnMissionCleanUp += LastStand_CleanUp;\n            m_objectives.Add(m_lastStand);\n\n\n            m_destroyGenerators = new MyObjectiveDestroy(\n                (MyTextsWrapperEnum.BARTHS_MOON_PLANT_DESTROY_GENERATORS_Name),\n                MyMissionID.BARTHS_MOON_PLANT_DESTROY_GENERATORS,\n                (MyTextsWrapperEnum.BARTHS_MOON_PLANT_DESTROY_GENERATORS_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.BARTHS_MOON_PLANT_ENEMY },\n                new List<uint> { (uint)EntityID._08generator1, (uint)EntityID._08generator2 },         // entities needed to kill\n                new List<uint> { },  // spawnpoint from which bots must be killed\n                true,\n                false // dont count \n            ) { SaveOnSuccess = true, StartDialogId = MyDialogueEnum.BARTHS_MOON_PLANT_0900, HudName = MyTextsWrapperEnum.HudGenerator };\n            m_destroyGenerators.OnMissionSuccess += DestroyGenerators_Success;\n            m_destroyGenerators.OnMissionLoaded += DestroyGenerators_Loaded;\n            m_objectives.Add(m_destroyGenerators);\n\n\n\n            var getComponents = new MyUseObjective(\n                (MyTextsWrapperEnum.BARTHS_MOON_PLANT_GET_NEEDED_COMPONENTS_Name),\n                MyMissionID.BARTHS_MOON_PLANT_GET_NEEDED_COMPONENTS,\n                (MyTextsWrapperEnum.BARTHS_MOON_PLANT_GET_NEEDED_COMPONENTS_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.BARTHS_MOON_PLANT_DESTROY_GENERATORS },\n                new MyMissionLocation(baseSector, (uint)EntityID.GetNeededComponentsDummy),\n                MyTextsWrapperEnum.PressToPickItems,\n                MyTextsWrapperEnum.Items,\n                MyTextsWrapperEnum.PickingInProgress,\n                4000,\n                MyUseObjectiveType.Taking,\n                startDialogId: MyDialogueEnum.BARTHS_MOON_PLANT_1000) { SaveOnSuccess = true };\n            getComponents.OnMissionLoaded += GetComponents_Loaded;\n            getComponents.OnMissionSuccess += GetComponents_Success;\n            m_objectives.Add(getComponents);\n\n            var buildPlant = new MyUseObjective(\n                    (MyTextsWrapperEnum.BARTHS_MOON_PLANT_BUILD_PLANT_Name),\n                    MyMissionID.BARTHS_MOON_PLANT_BUILD_PLANT,\n                    (MyTextsWrapperEnum.BARTHS_MOON_PLANT_BUILD_PLANT_Description),\n                    null,\n                    this,\n                    new MyMissionID[] { MyMissionID.BARTHS_MOON_PLANT_GET_NEEDED_COMPONENTS },\n                    new MyMissionLocation(baseSector, (uint)EntityID.ConstructDetector),\n                    MyTextsWrapperEnum.PressToBuildTransmitter,\n                    MyTextsWrapperEnum.Items,\n                    MyTextsWrapperEnum.BuildingInProgress,\n                    4000,\n                    MyUseObjectiveType.Activating,\n                    startDialogId: MyDialogueEnum.BARTHS_MOON_PLANT_1100) { SaveOnSuccess = true };\n            buildPlant.OnMissionLoaded += new MissionHandler(BuildPlant_OnMissionLoaded);\n            buildPlant.OnMissionSuccess += new MissionHandler(BuildPlant_OnMissionSuccess);\n            m_objectives.Add(buildPlant);\n\n            var constructDetectors = new MyUseObjective(\n                    (MyTextsWrapperEnum.BARTHS_MOON_PLANT_CONSTRUCT_DETECTORS_Name),\n                    MyMissionID.BARTHS_MOON_PLANT_CONSTRUCT_DETECTORS,\n                    (MyTextsWrapperEnum.BARTHS_MOON_PLANT_CONSTRUCT_DETECTORS_Description),\n                    null,\n                    this,\n                    new MyMissionID[] { MyMissionID.BARTHS_MOON_PLANT_BUILD_PLANT },\n                    new MyMissionLocation(baseSector, (uint)EntityID.ConstructDetector),\n                    MyTextsWrapperEnum.PressToBuildTransmitter,\n                    MyTextsWrapperEnum.Items,\n                    MyTextsWrapperEnum.BuildingInProgress,\n                    4000,\n                    MyUseObjectiveType.Activating) { SaveOnSuccess = true };\n            constructDetectors.OnMissionLoaded +=new MissionHandler(ConstructDetectors_Loaded);\n            constructDetectors.OnMissionSuccess += new MissionHandler(ConstructDetectors_Success);\n            m_objectives.Add(constructDetectors);\n\n\n\n            m_barthEndDialogue = new MyMeetObjective(\n                (MyTextsWrapperEnum.BARTHS_MOON_PLANT_TALK_BARTH_Name),\n                MyMissionID.BARTHS_MOON_PLANT_TALK_BARTH,\n                (MyTextsWrapperEnum.BARTHS_MOON_PLANT_TALK_BARTH_Description),\n                this,\n                new MyMissionID[] { MyMissionID.BARTHS_MOON_PLANT_CONSTRUCT_DETECTORS },\n                (uint)EntityID._01Detector,\n                (uint)EntityID._01SmallShipBarth,\n                50,\n                0.25f,\n                successDialogueId: MyDialogueEnum.BARTHS_MOON_PLANT_1200\n            ) { SaveOnSuccess = true, FollowMe = false, PathName = \"Group23\", MakeEntityIndestructible = false };\n            m_barthEndDialogue.OnMissionLoaded += BarthEndDialogue_Loaded;\n            m_objectives.Add(m_barthEndDialogue);\n            #endregion\n        }\n\n\n        private void GetComponents_Loaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.TryUnhide((uint)EntityID.GetNeededComponentsContainer);\n            MyScriptWrapper.Highlight((uint)EntityID.GetNeededComponentsContainer, true, this);\n        }\n\n        private void GetComponents_Success(MyMissionBase sender)\n        {\n            MyScriptWrapper.Highlight((uint)EntityID.GetNeededComponentsContainer, false, this);\n        }\n\n        void BuildPlant_OnMissionLoaded(MyMissionBase sender)\n        {\n            // show plant\n            MyScriptWrapper.TryUnhide((uint)EntityID.BuildContainer1);\n            MyScriptWrapper.Highlight((uint)EntityID.BuildContainer1, true, sender);\n        }\n\n        void BuildPlant_OnMissionSuccess(MyMissionBase sender)\n        {\n            // unhighlight plant\n            MyScriptWrapper.Highlight((uint)EntityID.BuildContainer1, false, sender);\n        }\n\n        private void ConstructDetectors_Loaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.TryUnhide((uint)EntityID.UnhidePrefab);\n            MyScriptWrapper.Highlight((uint)EntityID.UnhidePrefab, true, this);\n        }\n\n        private void ConstructDetectors_Success(MyMissionBase sender)\n        {\n            MyScriptWrapper.Highlight((uint)EntityID.UnhidePrefab, false, this);\n        }\n\n        private void BarthEndDialogue_Loaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.SetEntityEnabled((uint)EntityID.Light1, true);\n            MyScriptWrapper.SetEntityEnabled((uint)EntityID.Light2, true);\n            MyScriptWrapper.SetEntityEnabled((uint)EntityID.Light3, true);\n            \n        }\n\n\n        private void DestroyGenerators_Loaded(MyMissionBase sender)\n        {\n            ActivateSpawnpoints(m_08SpawnPoints1);\n            ActivateSpawnpoints(m_08SpawnPoints2);\n        }\n\n        private void DestroyGenerators_Success(MyMissionBase sender)\n        {\n            foreach (KeyValuePair<uint, uint> keyValuePair in m_detectorToTurretContainerMapping)\n            {\n                var container = MyScriptWrapper.TryGetEntity(keyValuePair.Value);\n                if (container != null)\n                {\n                    RepairTurret(container.EntityId.Value.NumericValue);\n\n                    var detectorId = m_turretContainerToDetectorMapping[container.EntityId.Value.NumericValue];\n\n                    var detector = (MyEntityDetector)MyScriptWrapper.GetEntity(detectorId);\n                    detector.Off();\n                    detector.OnEntityLeave -= RepairDetector_Leave;\n                    detector.OnEntityEnter -= RepairDetector_Enter;\n                }\n            }\n\n            MyScriptWrapper.KillAllEnemy();\n\n            MyScriptWrapper.DeactivateSpawnPoints(m_02SpawnPoints);\n            MyScriptWrapper.DeactivateSpawnPoint((uint)EntityID._01SpawnPoint);\n            MyScriptWrapper.DeactivateSpawnPoint((uint)EntityID._01SpawnPoint2);\n        }\n\n        private void LastStand_CleanUp(MyMissionBase sender)\n        {\n            MyScriptWrapper.SetEntityDestructible(MyScriptWrapper.GetEntity(\"MadelynsBridge\"), false);\n        }\n\n\n        private void LastStand_Loaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.AddNotification(MyScriptWrapper.CreateNotification(MyTexts.RepairDamagedTurrets, MyGuiManager.GetFontMinerWarsBlue(), 10000));\n        }\n\n        private void ProtectBarth_Loaded(MyMissionBase sender)\n        {\n            m_canRepairNotification = MyScriptWrapper.CreateNotification(\n                Localization.MyTextsWrapperEnum.PressToRepairTurret,\n                MyGuiManager.GetFontMinerWarsBlue());\n            m_canRepairNotification.SetTextFormatArguments(m_actionKeyString);\n\n\n            m_repairing = false;\n\n\n            ShowContainer(EntityID._05PirateBigShip);\n            ShowContainer(EntityID._05PirateShip);\n\n            MyScriptWrapper.SetEntityDestructible(MyScriptWrapper.GetEntity(\"MadelynsBridge\"), true);\n\n            MyScriptWrapper.PrepareMotherShipForMove(m_05PirateShip);\n            MyScriptWrapper.PrepareMotherShipForMove(m_05PirateBigShip);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.GetEntity(\"FrontTurretM\"), true);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.GetEntity(\"BackTurretM\"), true);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.GetEntity(\"BottomTurretM\"), true);\n            ActivateSpawnpoints(m_05SpawnPoints);\n        }\n\n        private void KillAttackers_Loaded(MyMissionBase sender)\n        {\n            m_barth.SetWaypointPath(\"BarthEs\");\n            m_barth.StopFollow();\n            m_barth.PatrolMode = MyPatrolMode.CYCLE;\n            m_barth.Patrol();\n\n            ActivateSpawnpoints(m_02SpawnPoints);\n\n            HideContainer(EntityID._01PirateShip);\n\n            var madelyn = MyScriptWrapper.GetEntity(\"Madelyn\");\n            MyScriptWrapper.Move(madelyn, GetEntity(EntityID._02MadelyneDefenceShip).GetPosition(), GetEntity(EntityID._02MadelyneDefenceShip).GetForward(), GetEntity(EntityID._02MadelyneDefenceShip).GetUp());\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.GetEntity(\"FrontTurretM\"), false);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.GetEntity(\"BackTurretM\"), false);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.GetEntity(\"BottomTurretM\"), false);\n        }\n\n\n        private void SaveThomas_Loaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID._01SpawnPoint);\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID._01SpawnPoint2);\n        }\n\n        private void GetTurrets_Loaded(MyMissionBase sender)\n        {\n            foreach (var child in MyScriptWrapper.GetEntity((uint)EntityID._03PortableTurrets).Children)\n            {\n                MyScriptWrapper.Highlight(child.EntityId.Value.NumericValue, true, this);\n            }\n            MyScriptWrapper.MarkEntity(MyScriptWrapper.GetEntity((uint)EntityID._03Dummy), MyTexts.PortableTurrets, MyHudIndicatorFlagsEnum.SHOW_TEXT | MyHudIndicatorFlagsEnum.SHOW_BORDER_INDICATORS | MyHudIndicatorFlagsEnum.SHOW_DISTANCE, MyGuitargetMode.Objective);\n        }\n\n        private void GetTurrets_Success(MyMissionBase sender)\n        {\n            foreach (var child in MyScriptWrapper.GetEntity((uint)EntityID._03PortableTurrets).Children)\n            {\n                MyScriptWrapper.Highlight(child.EntityId.Value.NumericValue, false, this);\n            }\n            HideContainer(EntityID._03PortableTurrets);\n\n            MyScriptWrapper.AddInventoryItem(MyScriptWrapper.GetCentralInventory(), MyMwcObjectBuilderTypeEnum.PrefabLargeWeapon,\n                (int)MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A01_LARGESHIP_AUTOCANNON,\n                NUMBER_OF_TURRETS_TO_BUILD, true);\n\n        }\n\n        void BuildDefenses_Loaded(MyMissionBase sender)\n        {\n            m_buildingStopped = false;\n\n            m_turretsBuilt = 0;\n\n            m_buildDefenses.MissionEntityIDs.Add(GetTurretFromContainer((uint)EntityID.TURRET_CONTAINER_ID_1).EntityId.Value.NumericValue);\n            m_buildDefenses.MissionEntityIDs.Add(GetTurretFromContainer((uint)EntityID.TURRET_CONTAINER_ID_2).EntityId.Value.NumericValue);\n            m_buildDefenses.MissionEntityIDs.Add(GetTurretFromContainer((uint)EntityID.TURRET_CONTAINER_ID_3).EntityId.Value.NumericValue);\n            m_buildDefenses.MissionEntityIDs.Add(GetTurretFromContainer((uint)EntityID.TURRET_CONTAINER_ID_4).EntityId.Value.NumericValue);\n            m_buildDefenses.MissionEntityIDs.Add(GetTurretFromContainer((uint)EntityID.TURRET_CONTAINER_ID_5).EntityId.Value.NumericValue);\n            m_buildDefenses.MissionEntityIDs.Add(GetTurretFromContainer((uint)EntityID.TURRET_CONTAINER_ID_6).EntityId.Value.NumericValue);\n            m_buildDefenses.MissionEntityIDs.Add(GetTurretFromContainer((uint)EntityID.TURRET_CONTAINER_ID_7).EntityId.Value.NumericValue);\n\n            foreach (var detectorTurretContainerPair in m_detectorToTurretContainerMapping)\n            {\n                MyScriptWrapper.Highlight(detectorTurretContainerPair.Value, true, this);\n                MyScriptWrapper.EnablePhysics(detectorTurretContainerPair.Value, false);\n                MyScriptWrapper.UnhideEntity(MyScriptWrapper.GetEntity(detectorTurretContainerPair.Value));\n\n                ShowContainer(MyScriptWrapper.GetEntity(detectorTurretContainerPair.Value) as MyPrefabContainer);\n\n                var turret = GetTurretFromContainer(detectorTurretContainerPair.Value);\n                Debug.Assert(turret != null);\n                if (turret != null)\n                {\n                    turret.Enabled = false;\n                    MyScriptWrapper.MarkEntity(turret, MyTexts.BuildTurret, MyHudIndicatorFlagsEnum.SHOW_TEXT | MyHudIndicatorFlagsEnum.SHOW_DISTANCE | MyHudIndicatorFlagsEnum.SHOW_BORDER_INDICATORS | MyHudIndicatorFlagsEnum.SHOW_MISSION_MARKER, MyGuitargetMode.Objective);\n                }\n            }\n\n\n            foreach (var dummyId in m_detectorToTurretContainerMapping)\n            {\n                var detector = MyScriptWrapper.GetEntity(dummyId.Key) as MyEntityDetector;\n                //MyScriptWrapper.GetEntity(dummyId.Key);\n                Debug.Assert(detector != null);\n                if (detector != null)\n                {\n                    // register for player ship enter\n                    detector.OnEntityEnter += TurretDummyEnter;\n                    detector.OnEntityLeave += TurretDummyLeave;\n                    detector.On();\n                }\n            }\n\n            m_canBuildNotification = MyScriptWrapper.CreateNotification(Localization.MyTextsWrapperEnum.PressToBuildTurret, MyGuiManager.GetFontMinerWarsBlue());\n            m_canBuildNotification.SetTextFormatArguments(m_actionKeyString);\n\n            m_remainingTurretsNotification = MyScriptWrapper.CreateNotification(Localization.MyTextsWrapperEnum.RemainingTurrets, MyGuiManager.GetFontMinerWarsBlue());\n            m_remainingTurretsNotification.IsImportant = true;\n\n            //m_canSkipNotification = MyScriptWrapper.CreateNotification(Localization.MyTextsWrapperEnum.PressToSkipTimer, MyGuiManager.GetFontMinerWarsBlue());\n            //m_canSkipNotification.SetTextFormatArguments(m_actionKeyString);\n            //m_canSkipNotification.Disappear();\n\n\n            MyScriptWrapper.AddNotification(m_remainingTurretsNotification);\n\n            MyScriptWrapper.OnUseKeyPress += Build_UseKeyPress;\n        }\n\n        void BuildDefenses_Update(MyMissionBase sender)\n        {\n            UpdateRemainingTurretsCount();\n        }\n\n\n        private void TryBuildTurret()\n        {\n            if (m_currentDetector != null)\n            {\n                var inventory = MyScriptWrapper.GetCentralInventory();\n                bool canBuild = inventory.RemoveInventoryItemAmount(\n                    MyMwcObjectBuilderTypeEnum.PrefabLargeWeapon,\n                    (int)MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A01_LARGESHIP_AUTOCANNON,\n                    1);\n\n                if (canBuild)\n                {\n                    m_buildDefenses.MissionEntityIDs.Remove(GetTurretFromContainer(m_detectorToTurretContainerMapping[MyScriptWrapper.GetEntityId(m_currentDetector)]).EntityId.Value.NumericValue);\n\n                    BuildTurret();\n                    //m_currentDetector.Parent.Close();\n                    m_currentDetector.Off();\n                    m_currentDetector = null;\n                }\n            }\n        }\n\n        private void BuildTurret()\n        {\n            var container = MyScriptWrapper.GetEntity(m_detectorToTurretContainerMapping[m_currentDetector.EntityId.Value.NumericValue]);\n\n            Debug.Assert(container != null);\n            if (container != null)\n            {\n                MyScriptWrapper.Highlight(m_detectorToTurretContainerMapping[m_currentDetector.EntityId.Value.NumericValue], false, this);\n                MyScriptWrapper.EnablePhysics(m_detectorToTurretContainerMapping[m_currentDetector.EntityId.Value.NumericValue], true);\n\n                var turret = GetTurretFromContainer(container.EntityId.Value.NumericValue);\n                MyScriptWrapper.RemoveEntityMark(turret);\n                turret.Enabled = true;\n\n                foreach (var child in turret.Children)\n                {\n                    child.Enabled = true;\n                }\n            }\n\n            m_turretsBuilt++;\n            UpdateRemainingTurretsCount();\n            m_canBuildNotification.Disappear();\n        }\n\n        private void UpdateRemainingTurretsCount()\n        {\n            var inventory = MyScriptWrapper.GetCentralInventory();\n            var remainingTurretsCount = Convert.ToInt32(inventory.GetTotalAmountOfInventoryItems(MyMwcObjectBuilderTypeEnum.PrefabLargeWeapon, (int)MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A01_LARGESHIP_AUTOCANNON));\n            if (remainingTurretsCount <= 0)\n            {\n                StopBuilding();\n                \n                //m_canSkipNotification.Appear();\n                //MyScriptWrapper.AddNotification(m_canSkipNotification);\n            }\n            else\n            {\n                m_remainingTurretsNotification.Appear();\n                m_remainingTurretsNotification.SetTextFormatArguments(new object[] { m_turretsBuilt, remainingTurretsCount });\n            }\n        }\n        \n\n        void BuildDefenses_Unloaded(MyMissionBase sender)\n        {\n            StopBuilding();\n\n            //m_canSkipNotification.Disappear();\n            //MyScriptWrapper.OnUseKeyPress -= SkipToAttack_OnUseKeyPress;\n            m_currentDetector = null;\n        }\n\n        private bool m_buildingStopped = false;\n        private void StopBuilding()\n        {\n            if (m_buildingStopped)\n                return;\n            m_buildingStopped = true;\n\n            m_remainingTurretsNotification.Disappear();\n\n            var missionIds = m_buildDefenses.MissionEntityIDs.ToList();\n            foreach (var containerID in missionIds)\n            {\n                m_buildDefenses.MissionEntityIDs.Remove(containerID);\n\n                var turret = MyScriptWrapper.TryGetEntity(containerID);\n                if (turret != null)\n                {\n                    var container = turret.Parent as MyPrefabContainer;\n                    if (container != null)\n                    {\n                        MyScriptWrapper.Highlight(container.EntityId.Value.NumericValue, false, this);\n                        MyScriptWrapper.HideEntity(container);\n                        HideContainer(container);\n                        MyScriptWrapper.RemoveEntityMark(turret);\n                        container.MarkForClose();\n                    }\n                }\n            }\n\n            foreach (var dummyTurretContainerPair in m_detectorToTurretContainerMapping)\n            {\n                var detector = MyScriptWrapper.GetEntity(dummyTurretContainerPair.Key) as MyEntityDetector;\n                Debug.Assert(detector != null);\n                if (detector != null)\n                {\n                    // unregister for player ship enter\n                    detector.OnEntityEnter -= TurretDummyEnter;\n                    detector.OnEntityLeave -= TurretDummyLeave;\n                    if (detector.IsOn())\n                    {\n                        detector.Off();\n                    }\n                }\n            }\n\n\n            MyScriptWrapper.OnUseKeyPress -= Build_UseKeyPress;\n\n            m_buildDefenses.SkipTimer();\n\n            //MyScriptWrapper.OnUseKeyPress += SkipToAttack_OnUseKeyPress;\n\n            MyScriptWrapper.GetCentralInventory().RemoveInventoryItems(MyMwcObjectBuilderTypeEnum.PrefabLargeWeapon, (int)MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A01_LARGESHIP_AUTOCANNON, true);\n        }\n\n        private void TurretDummyEnter(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (entity == MySession.PlayerShip && this.m_turretsBuilt < NUMBER_OF_TURRETS_TO_BUILD)\n            {\n                m_currentDetector = sender;\n\n                m_canBuildNotification.Appear();\n                MyScriptWrapper.AddNotification(m_canBuildNotification);\n            }\n        }\n\n\n        private void TurretDummyLeave(MyEntityDetector sender, MyEntity entity)\n        {\n            if (entity == MySession.PlayerShip)\n            {\n                m_currentDetector = null;\n                m_canBuildNotification.Disappear();\n            }\n        }\n\n        private void SetUpTurrets()\n        {\n            m_detectorToTurretContainerMapping.Clear();\n            m_detectorToTurretContainerMapping.Add(MyScriptWrapper.GetDetector((uint)EntityID.DETECTOR_ID_1).EntityId.Value.NumericValue, (uint)EntityID.TURRET_CONTAINER_ID_1);\n            m_detectorToTurretContainerMapping.Add(MyScriptWrapper.GetDetector((uint)EntityID.DETECTOR_ID_2).EntityId.Value.NumericValue, (uint)EntityID.TURRET_CONTAINER_ID_2);\n            m_detectorToTurretContainerMapping.Add(MyScriptWrapper.GetDetector((uint)EntityID.DETECTOR_ID_3).EntityId.Value.NumericValue, (uint)EntityID.TURRET_CONTAINER_ID_3);\n            m_detectorToTurretContainerMapping.Add(MyScriptWrapper.GetDetector((uint)EntityID.DETECTOR_ID_4).EntityId.Value.NumericValue, (uint)EntityID.TURRET_CONTAINER_ID_4);\n            m_detectorToTurretContainerMapping.Add(MyScriptWrapper.GetDetector((uint)EntityID.DETECTOR_ID_5).EntityId.Value.NumericValue, (uint)EntityID.TURRET_CONTAINER_ID_5);\n            m_detectorToTurretContainerMapping.Add(MyScriptWrapper.GetDetector((uint)EntityID.DETECTOR_ID_6).EntityId.Value.NumericValue, (uint)EntityID.TURRET_CONTAINER_ID_6);\n            m_detectorToTurretContainerMapping.Add(MyScriptWrapper.GetDetector((uint)EntityID.DETECTOR_ID_7).EntityId.Value.NumericValue, (uint)EntityID.TURRET_CONTAINER_ID_7);\n\n            m_turretContainerToDetectorMapping.Clear();\n            foreach (var item in m_detectorToTurretContainerMapping)\n            {\n                m_turretContainerToDetectorMapping.Add(item.Value, item.Key);\n            }\n\n            m_detectorToParticleMapping.Clear();\n            m_detectorToParticleMapping.Add(MyScriptWrapper.GetDetector((uint)EntityID.DETECTOR_ID_1).EntityId.Value.NumericValue, (uint)EntityID.PARTICLE_ID_1);\n            m_detectorToParticleMapping.Add(MyScriptWrapper.GetDetector((uint)EntityID.DETECTOR_ID_2).EntityId.Value.NumericValue, (uint)EntityID.PARTICLE_ID_2);\n            m_detectorToParticleMapping.Add(MyScriptWrapper.GetDetector((uint)EntityID.DETECTOR_ID_3).EntityId.Value.NumericValue, (uint)EntityID.PARTICLE_ID_3);\n            m_detectorToParticleMapping.Add(MyScriptWrapper.GetDetector((uint)EntityID.DETECTOR_ID_4).EntityId.Value.NumericValue, (uint)EntityID.PARTICLE_ID_4);\n            m_detectorToParticleMapping.Add(MyScriptWrapper.GetDetector((uint)EntityID.DETECTOR_ID_5).EntityId.Value.NumericValue, (uint)EntityID.PARTICLE_ID_5);\n            m_detectorToParticleMapping.Add(MyScriptWrapper.GetDetector((uint)EntityID.DETECTOR_ID_6).EntityId.Value.NumericValue, (uint)EntityID.PARTICLE_ID_6);\n            m_detectorToParticleMapping.Add(MyScriptWrapper.GetDetector((uint)EntityID.DETECTOR_ID_7).EntityId.Value.NumericValue, (uint)EntityID.PARTICLE_ID_7);\n        }\n\n        private static MyPrefabLargeWeapon GetTurretFromContainer(uint id)\n        {\n            MyPrefabLargeWeapon turret = null;\n            var container = MyScriptWrapper.TryGetEntity(id);\n            if (container == null)\n                return null;\n            if (container is MyPrefabLargeWeapon)\n                return (MyPrefabLargeWeapon)container;\n            foreach (var child in container.Children)\n            {\n                turret = child as MyPrefabLargeWeapon;\n                if (turret != null) break;\n            }\n            return turret;\n        }\n\n\n        private void Repair_UseKeyPress()\n        {\n            if (m_buildDefenses.IsCompleted() && !m_destroyGenerators.IsCompleted())\n            {\n                if (!m_repairing && m_currentDetector != null)\n                {\n                    m_repairProgress.Reset();\n                    MyGuiManager.AddScreen(m_repairProgress);\n                }\n            }\n        }\n\n                                        /*\n        void SkipToAttack_OnUseKeyPress()\n        {\n            m_buildDefenses.SkipTimer();\n        }\n                                          */\n        void Build_UseKeyPress()\n        {\n            if (m_buildDefenses.IsAvailable())\n            {\n                if (!m_building && m_currentDetector != null)\n                {\n                    m_building = true;\n                    m_buildProgress.Reset();\n                    MyGuiManager.AddScreen(m_buildProgress);\n                }\n            }\n        }\n\n\n\n        private void RepairDetector_Leave(MyEntityDetector sender, MyEntity entity)\n        {\n            if (entity == MySession.PlayerShip)\n            {\n                m_canRepairNotification.Disappear();\n                m_currentDetector = null;\n            }\n        }\n\n        private void RepairDetector_Enter(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (entity == MySession.PlayerShip)\n            {\n                MyScriptWrapper.AddNotification(m_canRepairNotification);\n                m_currentDetector = sender;\n            }\n        }\n\n\n        private void Build_Success(object sender, EventArgs e)\n        {\n            TryBuildTurret();\n            m_building = false;\n        }\n\n        private void Build_Canceled(object sender, EventArgs e)\n        {\n            m_building = false;\n        }\n\n        private void Repair_Success(object sender, EventArgs e)\n        {\n            if (m_currentDetector != null)\n            {\n                var containerId = m_detectorToTurretContainerMapping[MyScriptWrapper.GetEntityId(m_currentDetector)];\n                RepairTurret(containerId);\n            }\n            \n            m_repairing = false;\n        }\n\n        private void Repair_Canceled(object sender, EventArgs e)\n        {\n            m_repairing = false;\n        }\n\n        private void RepairTurret(uint containerId)\n        {\n            var turret = GetTurretFromContainer(containerId);\n            MyScriptWrapper.SetEntityDestructible(turret, true);\n            turret.Health = turret.MaxHealth;\n            turret.Enabled = true;\n            turret.AIPriority = 0;\n\n            var detectorId = m_turretContainerToDetectorMapping[containerId];\n            MyScriptWrapper.SetEntityEnabled(m_detectorToParticleMapping[detectorId], false);\n\n            MyEntityDetector detector = (MyEntityDetector)MyScriptWrapper.GetEntity(detectorId);\n            detector.Off();\n\n            if (m_lastStand.IsAvailable())\n            {\n                m_lastStand.MissionEntityIDs.Remove(turret.EntityId.Value.NumericValue);\n                MyScriptWrapper.RemoveEntityMark(turret);\n            }\n\n            MyScriptWrapper.RemoveEntityMark(turret);\n        }\n\n        private void HookDamagedTurrets()\n        {\n            foreach (var turretContainerId in m_turretContainerToDetectorMapping.Keys)\n            {\n                var turret = GetTurretFromContainer(turretContainerId);\n                if (turret == null) continue;\n                if (!MarkForRepair(turret))\n                {\n                    MyScriptWrapper.SetEntityDestructible(turret, true);\n                    turret.Enabled = true;\n                    turret.AIPriority = 0;\n\n                    var detectorId = m_turretContainerToDetectorMapping[turretContainerId];\n                    MyScriptWrapper.SetEntityEnabled(m_detectorToParticleMapping[detectorId], false);\n\n                    MyEntityDetector detector = (MyEntityDetector)MyScriptWrapper.GetEntity(detectorId);\n                    detector.Off();\n                }\n            }\n        }\n\n        private void Script_EntityAtacked(MyEntity entity1, MyEntity entity2)\n        {\n            var turret = entity2 as MyPrefabLargeWeapon;\n            MarkForRepair(turret);\n        }\n\n        private bool MarkForRepair(MyPrefabLargeWeapon turret)\n        {\n            if (turret != null)\n            {\n                if (turret.Health <= 250 && turret.IsDestructible && m_turretContainerToDetectorMapping.ContainsKey(turret.Parent.EntityId.Value.NumericValue))\n                {\n                    MyScriptWrapper.SetEntityDestructible(turret, false);\n                    MyScriptWrapper.SetEntityEnabled(turret, false);\n                    turret.AIPriority = -1;\n\n                    uint detectorId = m_turretContainerToDetectorMapping[turret.Parent.EntityId.Value.NumericValue];\n\n                    var repairDetector = (MyEntityDetector)MyScriptWrapper.GetEntity(detectorId);\n                    repairDetector.On();\n                    repairDetector.OnEntityEnter += RepairDetector_Enter;\n                    repairDetector.OnEntityLeave += RepairDetector_Leave;\n\n                    MyScriptWrapper.SetEntityEnabled(m_detectorToParticleMapping[detectorId], true);\n\n                    MyScriptWrapper.MarkEntity(turret, MyTexts.Repair, MyHudIndicatorFlagsEnum.SHOW_TEXT | MyHudIndicatorFlagsEnum.SHOW_BORDER_INDICATORS);\n                    return true;\n                }\n            }\n            return false;\n        }\n\n        private void ProtectBarth_Success(MyMissionBase sender)\n        {\n            DeactivateSpawnpoints(m_05SpawnPoints);\n        }\n\n\n        private void ProtectBarth_Unloaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.ReturnMotherShipFromMove(m_05PirateShip);\n            MyScriptWrapper.ReturnMotherShipFromMove(m_05PirateBigShip);\n        }\n\n\n        private void ProtectMadelyn_Loaded(MyMissionBase sender)\n        {\n            ActivateSpawnpoints(m_06SpawnPoints);\n\n            m_06AttackDetector = MyScriptWrapper.GetDetector((uint)EntityID._06AttackmadelynDummy);\n            m_06AttackDetector.On();\n            m_06AttackDetector.OnEntityEnter += M06AttackDetectorOnOnEntityEnter;\n\n            MyScriptWrapper.AddNotification(MyScriptWrapper.CreateNotification(MyTexts.ProtectSaphosCommandCenter, MyGuiManager.GetFontMinerWarsBlue(), 10000));\n\n            ShowContainers(m_06BombsContainersIds);\n\n            var index = 0;\n            m_06BombsTrajectories = new List<MyLine>();\n            m_06BombsContainers = new List<MyEntity>();\n            m_06BombsDeath = new List<bool>();\n            m_06BombsProgresses = new List<float>();\n            m_06BombsMarked = new List<bool>();\n            \n            foreach (uint prefabId in m_06BombsPrefabsIDs)\n            {\n                m_06BombsTrajectories.Add(new MyLine(MyScriptWrapper.GetEntity(prefabId).GetPosition(), MyScriptWrapper.GetEntity(m_06BombsTargetDummy[index]).GetPosition()));\n                m_06BombsContainers.Add(MyScriptWrapper.GetEntity(m_06BombsContainersIds[index]));\n                m_06BombsProgresses.Add(-1);\n                m_06BombsDeath.Add(false);\n                m_06BombsMarked.Add(false);\n                index++;\n            }\n\n            var madelyn = MyScriptWrapper.GetEntity(\"MadelynsBridge\");\n            MyScriptWrapper.MarkEntity(madelyn, sender.HudNameTemp.ToString(), MyHudIndicatorFlagsEnum.SHOW_DISTANCE | MyHudIndicatorFlagsEnum.SHOW_HEALTH_BARS | MyHudIndicatorFlagsEnum.SHOW_BORDER_INDICATORS | MyHudIndicatorFlagsEnum.SHOW_TEXT);\n        }\n\n        private void M06AttackDetectorOnOnEntityEnter(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            var bot = entity as MySmallShipBot;\n            if (bot != null)\n            {\n                var madelynsBridge = MyScriptWrapper.TryGetEntity(\"MadelynsBridge\");\n\n                if (MyFactions.GetFactionsRelation(bot.Faction, madelynsBridge.Faction) == MyFactionRelationEnum.Enemy)\n                {\n                    bot.Attack(madelynsBridge);\n                }\n            }\n        }\n\n\n\n        private void ProtectMadelyn_Update(MyMissionBase sender)\n        {\n            var index = 0;\n            foreach (var prefab in m_06BombsContainers)\n            {\n                //m_06bobmsTrajectories.Add(new MyLine(MyScriptWrapper.GetEntity(container).GetPosition(), MyScriptWrapper.GetEntity(m_06BombsTargetDummy[index]).GetPosition()));\n                var progressUp = sender.MissionTimer.ElapsedTime - m_06BombsTimeOffsets[index];\n                var progressDown = (float)m_06BombsFlyTimes[index];\n                var progress = progressUp / progressDown;\n\n                if (m_06BombsTimeOffsets[index] < sender.MissionTimer.ElapsedTime && !m_06BombsMarked[index])\n                {\n                    MyScriptWrapper.MarkEntity(MyScriptWrapper.GetEntity(m_06BombsPrefabsIDs[index]), MyTexts.Destroy, MyHudIndicatorFlagsEnum.SHOW_DISTANCE | MyHudIndicatorFlagsEnum.SHOW_TEXT | MyHudIndicatorFlagsEnum.SHOW_HEALTH_BARS | MyHudIndicatorFlagsEnum.SHOW_BORDER_INDICATORS, MyGuitargetMode.Enemy);\n                    m_06BombsMarked[index] = true;\n                }\n                m_06BombsProgresses[index] = progress;\n\n\n                if (progress > 1 && !m_06BombsDeath[index])\n                {\n                    m_destroySuicideDialoguePlayed = true;\n                    MyScriptWrapper.DestroyEntity(MyScriptWrapper.GetEntityId(\"MadelynsBridge\"));\n                    MyScriptWrapper.DestroyEntities(m_06BombsPrefabsIDs);\n                    BlowMadelyn();\n                }\n\n                if (progress > 0 && progress < 1 && !m_06BombsDeath[index])\n                {\n                    MyScriptWrapper.Move(prefab, Vector3.Lerp(m_06BombsTrajectories[index].From, m_06BombsTrajectories[index].To, progress));\n                }\n                index++;\n            }\n        }\n\n        private void ProtectMadelyn_CleanUp(MyMissionBase sender)\n        {\n            m_06AttackDetector.Off();\n\n            var madelyn = MyScriptWrapper.GetEntity(\"MadelynsBridge\");\n            MyScriptWrapper.RemoveEntityMark(madelyn);\n        }\n\n        private void ProtectMadelyn_Success(MyMissionBase sender)\n        {\n            DeactivateSpawnpoints(m_06SpawnPoints);\n        }\n\n        private void Script_EntityDeath(MyEntity entity1, MyEntity entity2)\n        {\n            if (MyMissions.ActiveMission != this)\n                return;\n\n            //if (m_protectMadelyn.IsAvailable() && entity1.Name == \"MadelynsBridge\")\n            //{\n            //    BlowMadelyn();\n            //}\n\n\n            if (m_protectMadelyn.IsAvailable() && entity1.EntityId.HasValue && m_06BombsPrefabsIDs.Contains(entity1.EntityId.Value.NumericValue))\n            {\n                int index = m_06BombsPrefabsIDs.IndexOf(entity1.EntityId.Value.NumericValue);\n                var particle = MyScriptWrapper.GetEntity(m_06BombsParticleDummy[index]);\n                particle.SetWorldMatrix(entity1.WorldMatrix);\n                MyScriptWrapper.SetEntityEnabled(particle, true);\n                m_06BombsDeath[index] = true;\n                HideContainers(new List<uint>() { m_06BombsContainersIds[index] });\n                if (!m_destroySuicideDialoguePlayed)\n                {\n                    m_destroySuicideDialoguePlayed = true;\n                    MyScriptWrapper.PlayDialogue(MyDialogueEnum.BARTHS_MOON_PLANT_0700);\n                }\n            }\n\n\n            if (m_destroyGenerators.IsAvailable() && entity1.EntityId.HasValue && entity1.EntityId.Value.NumericValue == (uint)EntityID._08generator1)\n            {\n                MyScriptWrapper.SetEntityEnabled((uint)EntityID._08generator1particle, true);\n                HideContainer(EntityID._05PirateBigShip);\n                ShowContainer(EntityID._08generator1VisibleCOnt);\n                this.Components.Add(new MyHeadshake(MissionTimer.ElapsedTime, MyHeadshake.DefaultShaking, 12, 5, 10));\n                EnableEntities(m_08Generator1Particles);\n                DeactivateSpawnpoints(m_08SpawnPoints1);\n            }\n\n            if (m_destroyGenerators.IsAvailable() && entity1.EntityId.HasValue && entity1.EntityId.Value.NumericValue == (uint)EntityID._08generator2)\n            {\n                HideContainer(EntityID._05PirateShip);\n                ShowContainer(EntityID._08generator2VisibleCont);\n                EnableEntities(m_08Generator2Particles);\n                this.Components.Add(new MyHeadshake(MissionTimer.ElapsedTime, MyHeadshake.DefaultShaking, 12, 5, 10));\n                DeactivateSpawnpoints(m_08SpawnPoints2);\n            }\n        }\n\n        private void BlowMadelyn()\n        {\n            MyScriptWrapper.SetEntityEnabled((uint)EntityID._06ParticleDummy, true);\n            MyScriptWrapper.HideEntity(MyScriptWrapper.GetEntity(\"Madelyn\"));\n            ShowContainer(EntityID._06PrefabContainer1);\n            EnableEntities(m_06ParticleDummies);\n            MyScriptWrapper.IncreaseHeadShake(8);\n\n            Fail(MyTextsWrapperEnum.MadelynWasDestroyed);\n        }\n\n\n        public override void Load()\n        {\n            if (!IsMainSector) return;\n            \n\n            m_buildProgress = new MyGuiScreenUseProgressBar(MyTextsWrapperEnum.Turrets, MyTextsWrapperEnum.BuildingInProgress, 0f, MySoundCuesEnum.SfxProgressBuild, MySoundCuesEnum.SfxCancelBuild, MyGameControlEnums.USE, 0, 3000, 0);\n            m_buildProgress.OnCanceled += Build_Canceled;\n            m_buildProgress.OnSuccess += Build_Success;\n\n            m_repairProgress = new MyGuiScreenUseProgressBar(MyTextsWrapperEnum.Turret, MyTextsWrapperEnum.ProgressRepairing, 0f, MySoundCuesEnum.SfxProgressRepair, MySoundCuesEnum.SfxCancelRepair, MyGameControlEnums.USE, 0, 2000, 0);\n            m_repairProgress.OnCanceled += Repair_Canceled;\n            m_repairProgress.OnSuccess += Repair_Success;\n\n            m_protectMadelyn.MissionEntityIDs.Add(MyScriptWrapper.GetEntity(\"MadelynsBridge\").EntityId.Value.NumericValue);\n\n            MyScriptWrapper.OnEntityAtacked += Script_EntityAtacked;\n            MyScriptWrapper.EntityDeath += Script_EntityDeath;\n            MyScriptWrapper.OnSpawnpointBotSpawned += Script_BotSpawned;\n            MyScriptWrapper.OnUseKeyPress += Repair_UseKeyPress;\n\n            ShowContainer(EntityID._01PirateShip);\n            ShowContainer(EntityID._03PortableTurrets);\n            ShowContainer(EntityID.BarthsTurrets1);\n            ShowContainer(EntityID.BarthsDestroyedBase);\n            HideContainer(EntityID.BarthNormalBase);\n\n            HideContainers(m_barthsMoonM1);\n            HideContainers(m_barthsMoonM2);\n            DisableEntities(m_particleEffectsToDisable);\n            EnableEntities(m_particleEffectsToEnable);\n            \n            EnableCorrectBarths((uint)EntityID._01SmallShipBarth, (uint)EntityID.ThomasBartId);\n\n            MyScriptWrapper.SetEntitiesEnabled(m_disableDummy, false);\n            MyScriptWrapper.TryHideEntities(m_setInVisible);\n            MyScriptWrapper.TryUnhideEntities(m_setVisible);\n\n            m_05PirateShip = MyScriptWrapper.GetEntity((uint)EntityID._05PirateShip);\n\n            m_05PirateBigShip = MyScriptWrapper.GetEntity((uint)EntityID._05PirateBigShip);\n\n            m_barth = (MySmallShipBot)MyScriptWrapper.GetEntity((uint)EntityID._01SmallShipBarth);\n\n            m_actionKeyString[0] = MyGuiManager.GetInput().GetGameControlTextEnum(MyGameControlEnums.USE);\n\n            if (!MyMissions.GetMissionByID(MyMissionID.BARTHS_MOON_PLANT_SAVE_BARTH).IsCompleted())\n            {\n                var startPosition = MyScriptWrapper.GetEntity((uint)EntityID.PlayerStartLocationPlant).GetPosition();\n                MyScriptWrapper.Move(MyScriptWrapper.GetEntity(MyActorConstants.GetActorName(MyActorEnum.MADELYN)), startPosition);\n                MyScriptWrapper.MovePlayerAndFriendsToHangar(this.RequiredActors);\n            }\n\n            MyScriptWrapper.HideEntities(m_hidePrefabContainers);\n\n            SetUpTurrets();\n\n            m_attackBarthDetector = MyScriptWrapper.GetDetector((uint)EntityID.BarthAttackDetector);\n            m_attackBarthDetector.On();\n            m_attackBarthDetector.OnEntityEnter += AttackBarthDetector_Enter;\n   \n                                      /*\n            MySector.FogProperties.FogNear = 1;\n            MySector.FogProperties.FogFar = 53182.205f;\n            MySector.FogProperties.FogMultiplier = 0.728f;\n            MySector.FogProperties.FogBacklightMultiplier = 0;\n            MySector.FogProperties.FogColor = MyMath.VectorFromColor(0, 112, 186);\n            MySector.ParticleDustProperties.DustBillboardRadius = 168.707f;\n            MySector.ParticleDustProperties.DustFieldCountInDirectionHalf = 8.817f;\n            MySector.ParticleDustProperties.DistanceBetween = 125.083f;\n            MySector.ImpostorProperties[2].Intensity = 1.519f;\n            MySector.ImpostorProperties[2].Radius = 2.007f;\n            MySector.ImpostorProperties[2].Anim1 = -0.021f;\n                                        */\n            m_currentDetector = null;\n\n            MyScriptWrapper.SetEntityPriority(MyScriptWrapper.GetEntity(\"FrontTurretM\"), -1);\n            MyScriptWrapper.SetEntityPriority(MyScriptWrapper.GetEntity(\"BackTurretM\"), -1);\n            MyScriptWrapper.SetEntityPriority(MyScriptWrapper.GetEntity(\"BottomTurretM\"), -1);\n\n            // Show notifications\n            HookDamagedTurrets();\n\n            base.Load();\n\n            if (MySession.Static.EventLog.IsMissionFinished(MyMissionID.BARTHS_MOON_PLANT_BUILD_PLANT))\n            {\n                ShowContainer(EntityID.BuildContainer1);\n            }\n        }\n\n\n        private void AttackBarthDetector_Enter(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (entity == m_barth)\n                return;\n\n            var relation = MyFactions.GetFactionsRelation(entity.Faction, m_barth.Faction);\n            var bot = entity as MySmallShipBot;\n            if (bot != null && relation == MyFactionRelationEnum.Enemy)\n            {\n                bot.Attack(m_barth);\n            }\n\n            sender.Off();\n        }\n\n        private void Script_BotSpawned(MyEntity spawn, MyEntity entity2)\n        {\n            if (m_spawns.Contains(spawn.EntityId.Value.NumericValue))\n            {\n                ((MySmallShipBot) entity2).SleepDistance = 5000;\n            }\n        }\n\n        public override void Unload()\n        {\n            if (!IsMainSector) return;\n\n            base.Unload();\n\n            m_protectMadelyn.MissionEntityIDs.Clear();\n\n            m_05PirateShip = null;\n            m_05PirateBigShip = null;\n            m_barth = null;\n            m_detectorToTurretContainerMapping.Clear();\n            m_turretContainerToDetectorMapping.Clear();\n            m_detectorToParticleMapping.Clear();\n\n            m_attackBarthDetector = null;\n             \n            MyScriptWrapper.OnUseKeyPress -= Repair_UseKeyPress;\n            MyScriptWrapper.OnEntityAtacked -= Script_EntityAtacked;\n            MyScriptWrapper.EntityDeath -= Script_EntityDeath;\n            MyScriptWrapper.OnSpawnpointBotSpawned -= Script_BotSpawned;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/SinglePlayer/MyBarthsMoonTransmitterMission.cs",
    "content": "﻿using System.Collections.Generic;\nusing System.Text;\nusing MinerWars.AppCode.Game.Audio.Dialogues;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.HUD;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.AppCode.Game.Entities.SubObjects;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Missions.Components;\nusing MinerWars.AppCode.Game.Missions.Utils;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.Resources;\n\nnamespace MinerWars.AppCode.Game.Missions.SinglePlayer\n{\n    class MyBarthsMoonTransmitterMission : MyBarthsMoonMissionBase\n    {\n        private MyObjective m_lookBothHubs;\n        private MyObjective m_lookBothHubs2;\n        private MyObjective m_escape;\n        private MyObjective m_learnToUseDrones;\n        private MyObjective m_findWayToMoon;\n        private MyObjective m_talkWithThomasBarth;\n        private MyMultipleUseObjective m_needPart3;\n        private MyObjectiveDestroy m_destroyComputer;\n        private MyUseObjective m_enableGeneratorWithDrone1Mission;\n        private MyUseObjective m_enableGeneratorWithDrone2Mission;\n\n        private bool m_computerDownDialoguePlayed;\n        private bool m_computerDestroydDialoguePlayed;\n        private bool m_lookedThroughLeftCameras;\n        private bool m_lookedThroughRightCameras;\n        private MyEntity m_controlledDrone;\n        private bool m_enableGeneratorWithDrone1;\n        private int m_releaseDroneTime;\n        private bool m_spawnpoint5Or6BotsKilled;\n        private MyBlinkingObjects m_blinkingObjects;\n        private MySmallShipBot m_thomasBarth;\n        private MyHudNotification.MyNotification m_learnToUseDrone;\n \n        #region EntityIDs\n        private readonly List<uint> m_leftHubCameras = new List<uint>() { 2203571, 2203570 };\n        private readonly List<uint> m_rightHubCameras = new List<uint>() { 2203572, 2203573, 2203574 };\n\n        private readonly List<uint> m_turrets1Waves = new List<uint>() { 2203839, 2203844 };\n        private readonly List<uint> m_turrets2Waves = new List<uint>() { 2203843, 2203840 };\n        private readonly List<uint> m_turrets3Waves = new List<uint>() { 2203842, 2203841 };\n\n\n        private readonly List<uint> m_turretsLights1 = new List<uint>() { 2502272, 2502269 };\n        private readonly List<uint> m_turretsLights2 = new List<uint>() { 2502271, 2502267 };\n        private readonly List<uint> m_turretsLights3 = new List<uint>() { 2502270, 2502268 };\n                 \n        private readonly List<uint> m_toDestroyAfterComputerDestroy = new List<uint> { 2502326, 2502323, 2502321, 2502319, 2502324, 2502328, 2502325, 2502322, 2502321, 2489803, 2489801, 2489810, 2489799, 2489804, 2489797, 2489798, 2489811, 2489800, 2489802, (uint)EntityID.ActivateGenerator };\n        private readonly List<uint> m_deadShips = new List<uint> { 2577221, 2577234, 2577247, 2577260, 2577285, 2577286, 2577287, 2577288, 2577289, 2577302, 2582974 };\n        private readonly List<uint> m_entitiesToHide = new List<uint> { 2708065, 2708068, 2708069, 2708066, 2708067, 2708074, 2708073, 2708070, 2708075, 2708076 };\n        private readonly List<uint> m_whiteMarks = new List<uint>() { 2203568, 2584525, 2203582, 1976987, 2273178, 1976989, 1993795, 2580811, 2273178, 2322458 };\n                 \n        private readonly List<uint> m_turretsToActivate = new List<uint> { 1801016 };\n        private readonly List<uint> m_hidePrefabs = new List<uint>() { 1793182, 1800664, 1946366, 1921567, 1934141, 1949974, 2584326, 1946253, 1921569, 1934140, 1946250, 2584325, 1921568, 1946252, 1921566 };\n        private readonly List<uint> m_disableDummies = new List<uint>() { 1822189, 1918251, 1825161, 1918000, 1918001, 1917998, 1917997, 1917999, 1917661, 1816248, 1875664, 1822190, 1905545, 1902558, 1918252 };\n        private readonly List<uint> m_fans = new List<uint>() { 2322386, 2322387, 2322384, 2322419, 2322410 };\n\n        private readonly List<uint> m_turrets1 = new List<uint>() { };\n        private readonly List<uint> m_turrets2 = new List<uint>() { };\n        private readonly List<uint> m_turrets3 = new List<uint>() { };\n\n\n        public override void ValidateIds()\n        {\n            base.ValidateIds();\n            var list = new List<uint>();\n\n            list.AddRange(m_leftHubCameras);\n            list.AddRange(m_rightHubCameras);\n            list.AddRange(m_turrets1);\n            list.AddRange(m_turrets2);\n            list.AddRange(m_turrets3);\n            list.AddRange(m_turretsLights1);\n            list.AddRange(m_turretsLights2);\n            list.AddRange(m_turretsLights3);\n            list.AddRange(m_toDestroyAfterComputerDestroy);\n            list.AddRange(m_deadShips);\n            list.AddRange(m_entitiesToHide);\n            list.AddRange(m_whiteMarks);\n            list.AddRange(m_turretsToActivate);\n            list.AddRange(m_disableDummies);\n            list.AddRange(m_hidePrefabs);\n            list.AddRange(m_fans);\n\n            foreach (var u in list)\n            {\n                MyScriptWrapper.GetEntity(u);\n            }\n\n        }\n        #endregion\n\n        public MyBarthsMoonTransmitterMission()\n            : base(\n            MyMissionID.BARTHS_MOON_TRANSMITTER,\n            new StringBuilder(\"06-Barth's moon transmitter\"),\n            MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER,\n            MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_Description,\n            new MyMissionID[] { MyMissionID.RUSSIAN_WAREHOUSE },\n            new EntityID[] { },\n            EntityID.PlayerStartLocationTransmitter)\n        {\n            m_objectives = new List<MyObjective>();\n            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.BARTHS_MOON_TRANSMITTER_RETURN_BACK_TO_MADELYN };\n            RequiredActors = new MyActorEnum[] { MyActorEnum.MARCUS, MyActorEnum.MADELYN };\n            RequiredMissions = new MyMissionID[] { MyMissionID.RUSSIAN_WAREHOUSE };\n\n            Components.Add(new MySpawnpointWaves((uint)EntityID.EnterMainLabDetector, 0,\n                new List<uint[]> { new List<uint> { (uint)EntityID.SpawnPoint3 }.ToArray(), new List<uint> { (uint)EntityID.SpawnPoint4 }.ToArray() }));\n\n            #region Objectives\n            var meetThomasBarth = new MyObjective(\n                    (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_MEET_BARTH_Name),\n                    MyMissionID.BARTHS_MOON_TRANSMITTER_MEET_BARTH,\n                    (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_MEET_BARTH_Description),\n                    null,\n                    this,\n                    new MyMissionID[] { },\n                    new MyMissionLocation(baseSector, (uint)EntityID.ThomasBartId),\n                    radiusOverride: 50\n                    ) { SaveOnSuccess = false, StartDialogId = MyDialogueEnum.BARTHS_MOON_TRANSMITTER_0100_INTRO, HudName = MyTextsWrapperEnum.HudBarth };\n            meetThomasBarth.OnMissionLoaded += MeetThomasBarthOnLoaded;\n            m_objectives.Add(meetThomasBarth);\n\n\n            m_talkWithThomasBarth = new MyBarthsMoonSubmissionTalkWithThomasBarth(\n                (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_TALK_TO_BARTH_Name),\n                MyMissionID.BARTHS_MOON_TRANSMITTER_TALK_TO_BARTH,\n                (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_TALK_TO_BARTH_Description),\n                this,\n                new MyMissionID[] { MyMissionID.BARTHS_MOON_TRANSMITTER_MEET_BARTH },\n                null,\n                true\n                ) { SaveOnSuccess = true, SuccessDialogId = MyDialogueEnum.BARTHS_MOON_TRANSMITTER_0300 };\n            m_objectives.Add(m_talkWithThomasBarth);\n\n\n            //02\n            m_findWayToMoon = new MyObjective(\n                 (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_FIND_WAY_TO_MOON_Name),\n                 MyMissionID.BARTHS_MOON_TRANSMITTER_FIND_WAY_TO_MOON,\n                 (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_FIND_WAY_TO_MOON_Description),\n                 null,\n                 this,\n                 new MyMissionID[] { MyMissionID.BARTHS_MOON_TRANSMITTER_TALK_TO_BARTH },\n                 new MyMissionLocation(baseSector, (uint)EntityID.BrokenMoonDummy),\n                 null,\n                 null,\n                 MyDialogueEnum.BARTHS_MOON_TRANSMITTER_0400\n                 ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudBrokenMoon };\n            m_objectives.Add(m_findWayToMoon);\n\n            //03\n            var destroyLaboratories = new MyObjectiveDestroy(\n                (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_DESTROY_LAB_Name),\n                MyMissionID.BARTHS_MOON_TRANSMITTER_DESTROY_LAB,\n                (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_DESTROY_LAB_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.BARTHS_MOON_TRANSMITTER_FIND_WAY_TO_MOON },\n                new List<uint> { },         // entities needed to kill\n                new List<uint> { },  // spawnpoint from which bots must be killed\n                true,\n                false // dont count \n                ) { SaveOnSuccess = true };\n            destroyLaboratories.OnMissionLoaded += destroyLaboratories_OnMissionLoaded;\n            destroyLaboratories.Components.Add(new MyDetectorDialogue((uint)EntityID.Dialog5DetectorId, MyDialogueEnum.BARTHS_MOON_TRANSMITTER_0500));\n            destroyLaboratories.Components.Add(new MyDetectorDialogue((uint)EntityID.Dialog6DetectorId, MyDialogueEnum.BARTHS_MOON_TRANSMITTER_0600));\n            m_objectives.Add(destroyLaboratories);\n\n            //04\n\n\n            var enableGenerator = new MyUseObjective(\n                       (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_ENABLE_GENERATOR_Name),\n                   MyMissionID.BARTHS_MOON_TRANSMITTER_ENABLE_GENERATOR,\n                   (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_ENABLE_GENERATOR_Description),\n                   null,\n                   this,\n                   new MyMissionID[] { MyMissionID.BARTHS_MOON_TRANSMITTER_DESTROY_LAB },\n                   new MyMissionLocation(baseSector, (uint)EntityID.SecurityHubDummy),\n                   MyTextsWrapperEnum.PressToStartGenerator,\n                   MyTextsWrapperEnum.Generator,\n                   MyTextsWrapperEnum.StartingProgress,\n                   5000,\n                   MyUseObjectiveType.Activating\n                   ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudGenerator, ShowNavigationMark = true };\n            enableGenerator.OnMissionSuccess += EnableGeneratorOnOnMissionSuccess;\n            m_objectives.Add(enableGenerator);\n            \n\n\n            //05\n            m_lookBothHubs = new MyObjective(\n                (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_LOOK_HUBS_Name),\n                MyMissionID.BARTHS_MOON_TRANSMITTER_LOOK_HUBS,\n                (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_LOOK_HUBS_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.BARTHS_MOON_TRANSMITTER_ENABLE_GENERATOR },\n                null,\n                new List<uint> { (uint)EntityID.SecurityHubLook1 },\n                null\n                ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudHub, MarkMissionEntities = true };\n            m_objectives.Add(m_lookBothHubs);\n\n\n            //06\n            var getItemsFromCargoBoxes = new MyObjectiveGetItems(\n                    (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_GET_ITEMS_Name),\n                    MyMissionID.BARTHS_MOON_TRANSMITTER_GET_ITEMS,\n                    (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_GET_ITEMS_Description),\n                    null,\n                    this,\n                    new MyMissionID[] { MyMissionID.BARTHS_MOON_TRANSMITTER_LOOK_HUBS },\n                    new List<MyItemToGetDefinition>() { new MyItemToGetDefinition(MyMwcObjectBuilderTypeEnum.Drone, (int)MyMwcObjectBuilder_Drone_TypesEnum.DroneUS),\n                    new MyItemToGetDefinition(MyMwcObjectBuilderTypeEnum.SmallShip_HackingTool, (int)MyMwcObjectBuilder_SmallShip_HackingTool_TypesEnum.Level_3)},\n                    new List<uint>() { (uint)EntityID.Cargobox1, (uint)EntityID.Cargobox2 }\n                    ) { SaveOnSuccess = true, StartDialogId = MyDialogueEnum.BARTHS_MOON_TRANSMITTER_0700, MarkMissionEntities = true };\n            m_objectives.Add(getItemsFromCargoBoxes);\n\n\n\n\n            var findFans = new MyObjective(\n                 (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_FAN_Name),\n                 MyMissionID.BARTHS_MOON_TRANSMITTER_FAN,\n                 (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_FAN_Description),\n                 null,\n                 this,\n                 new MyMissionID[] { MyMissionID.BARTHS_MOON_TRANSMITTER_GET_ITEMS },\n                 new MyMissionLocation(baseSector, (uint)EntityID.FanDummy)\n                 ) { SaveOnSuccess = true, StartDialogId = MyDialogueEnum.BARTHS_MOON_TRANSMITTER_0800, HudName = MyTextsWrapperEnum.HudEntrance };\n            m_objectives.Add(findFans);\n\n\n            m_learnToUseDrones = new MyObjective(\n                     (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_DRONES_Name),\n                     MyMissionID.BARTHS_MOON_TRANSMITTER_DRONES,\n                     (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_DRONES_Description),\n                     null,\n                     this,\n                     new MyMissionID[] { MyMissionID.BARTHS_MOON_TRANSMITTER_FAN },\n                     null\n                     ) { SaveOnSuccess = true, StartDialogId = MyDialogueEnum.BARTHS_MOON_TRANSMITTER_0900 };\n            m_objectives.Add(m_learnToUseDrones);\n\n            m_learnToUseDrones.OnMissionLoaded += LearnDronesOnOnMissionLoaded;\n            m_learnToUseDrones.OnMissionSuccess += LearnDronesOnOnMissionSuccess;\n\n\n\n            //07\n            m_enableGeneratorWithDrone1Mission = new MyUseObjective(\n                (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_ENABLE_GENERATOR_DRONE1_Name),\n                MyMissionID.BARTHS_MOON_TRANSMITTER_ENABLE_GENERATOR_DRONE1,\n                (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_ENABLE_GENERATOR_DRONE1_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.BARTHS_MOON_TRANSMITTER_DRONES },\n                new MyMissionLocation(baseSector, (uint)EntityID.DroneGeneratroHub1),\n                MyTextsWrapperEnum.PressToStartGenerator,\n                MyTextsWrapperEnum.Generator,\n                MyTextsWrapperEnum.StartingProgress,\n                5000,\n                radiusOverride: 50\n                ) { SaveOnSuccess = true, SuccessDialogId = MyDialogueEnum.BARTHS_MOON_TRANSMITTER_1100, HudName = MyTextsWrapperEnum.HudHub };\n\n            m_enableGeneratorWithDrone1Mission.RequiresDrone = true;\n            m_enableGeneratorWithDrone1Mission.OnMissionSuccess += EnableGeneratorWithDrone1OnOnMissionSuccess;\n            m_enableGeneratorWithDrone1Mission.OnMissionLoaded += EnsureDronesInShip;\n            m_enableGeneratorWithDrone1Mission.Components.Add(new MyDetectorDialogue((uint)EntityID.Dialog10DetectorId, MyDialogueEnum.BARTHS_MOON_TRANSMITTER_1000));\n            m_objectives.Add(m_enableGeneratorWithDrone1Mission);\n\n            m_enableGeneratorWithDrone2Mission = new MyUseObjective(\n                       (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_ENABLE_GENERATOR_DRONE2_Name),\n                       MyMissionID.BARTHS_MOON_TRANSMITTER_ENABLE_GENERATOR_DRONE2,\n                       (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_ENABLE_GENERATOR_DRONE2_Description),\n                       null,\n                       this,\n                       new MyMissionID[] { MyMissionID.BARTHS_MOON_TRANSMITTER_ENABLE_GENERATOR_DRONE1 },\n                       new MyMissionLocation(baseSector, (uint)EntityID.DroneGeneratroHub2),\n                       MyTextsWrapperEnum.PressToStartGenerator,\n                       MyTextsWrapperEnum.Generator,\n                       MyTextsWrapperEnum.StartingProgress,\n                       5000,\n                       radiusOverride: 50\n                       ) { SaveOnSuccess = true, StartDialogId = MyDialogueEnum.BARTHS_MOON_TRANSMITTER_1200, SuccessDialogId = MyDialogueEnum.BARTHS_MOON_TRANSMITTER_1400, RequiresDrone = true, HudName = MyTextsWrapperEnum.HudHub };\n            m_enableGeneratorWithDrone2Mission.OnMissionSuccess += EnableGeneratorWithDrone2OnOnMissionSuccess;\n            m_enableGeneratorWithDrone2Mission.OnMissionLoaded += EnsureDronesInShip;\n            m_enableGeneratorWithDrone2Mission.Components.Add(new MyDetectorDialogue((uint)EntityID.Dialog13DetectorId, MyDialogueEnum.BARTHS_MOON_TRANSMITTER_1300));\n            m_objectives.Add(m_enableGeneratorWithDrone2Mission);\n\n            //05\n            m_lookBothHubs2 = new MyObjective(\n                (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_LOOK_HUBS2_Name),\n                MyMissionID.BARTHS_MOON_TRANSMITTER_LOOK_HUBS2,\n                (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_LOOK_HUBS2_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.BARTHS_MOON_TRANSMITTER_ENABLE_GENERATOR_DRONE2 },\n                null,\n                new List<uint> { (uint)EntityID.SecurityHubLook2 }\n                ) { SaveOnSuccess = true, SuccessDialogId = MyDialogueEnum.BARTHS_MOON_TRANSMITTER_1500, HudName = MyTextsWrapperEnum.HudHub, ShowNavigationMark = true };\n            m_objectives.Add(m_lookBothHubs2);\n\n            //08\n\n\n            var downloadData1 = new MyUseObjective(\n                (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_DOWNLOAD_DATA1_Name),\n                MyMissionID.BARTHS_MOON_TRANSMITTER_DOWNLOAD_DATA1,\n                (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_DOWNLOAD_DATA1_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.BARTHS_MOON_TRANSMITTER_LOOK_HUBS2 },\n                new MyMissionLocation(baseSector, (uint)EntityID.Hub1Dummy),\n                MyTextsWrapperEnum.PressToDownloadData,\n                MyTextsWrapperEnum.Console,\n                MyTextsWrapperEnum.DownloadingData,\n                3000,\n                MyUseObjectiveType.Activating,\n                null) { HudName = MyTextsWrapperEnum.HudHub };\n            downloadData1.Components.Add(new MyDetectorDialogue((uint)EntityID.Dialog17DetectorId, MyDialogueEnum.BARTHS_MOON_TRANSMITTER_1700));\n            m_objectives.Add(downloadData1);\n\n            var downloadData2 = new MyUseObjective(\n                    (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_DOWNLOAD_DATA2_Name),\n                    MyMissionID.BARTHS_MOON_TRANSMITTER_DOWNLOAD_DATA2,\n                    (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_DOWNLOAD_DATA2_Description),\n                    null,\n                    this,\n                    new MyMissionID[] { MyMissionID.BARTHS_MOON_TRANSMITTER_DOWNLOAD_DATA1 },\n                    new MyMissionLocation(baseSector, (uint)EntityID.Hub2Dummy),\n                    MyTextsWrapperEnum.PressToDownloadData,\n                    MyTextsWrapperEnum.Console,\n                    MyTextsWrapperEnum.DownloadingData,\n                    3000,\n                    MyUseObjectiveType.Hacking,\n                    null) { SuccessDialogId = MyDialogueEnum.BARTHS_MOON_TRANSMITTER_1800, HudName = MyTextsWrapperEnum.HudHub };\n            m_objectives.Add(downloadData2);\n\n            var downloadData3 = new MyUseObjective(\n                    (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_DOWNLOAD_DATA3_Name),\n                    MyMissionID.BARTHS_MOON_TRANSMITTER_DOWNLOAD_DATA3,\n                    (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_DOWNLOAD_DATA3_Description),\n                    null,\n                    this,\n                    new MyMissionID[] { MyMissionID.BARTHS_MOON_TRANSMITTER_DOWNLOAD_DATA2 },\n                    new MyMissionLocation(baseSector, (uint)EntityID.Hub3Dummy),\n                    MyTextsWrapperEnum.PressToDownloadData,\n                    MyTextsWrapperEnum.Console,\n                    MyTextsWrapperEnum.DownloadingData,\n                    3000,\n                    MyUseObjectiveType.Hacking,\n                    null) { SuccessDialogId = MyDialogueEnum.BARTHS_MOON_TRANSMITTER_2000, HudName = MyTextsWrapperEnum.HudHub };\n            downloadData3.RequiresDrone = true;\n            downloadData3.OnMissionLoaded += DownloadData3OnOnMissionLoaded;\n            downloadData3.OnMissionSuccess += DownloadData3OnOnMissionSuccess;\n            downloadData3.Components.Add(new MyDetectorDialogue((uint)EntityID.Dialog19DetectorId, MyDialogueEnum.BARTHS_MOON_TRANSMITTER_1900));\n            m_objectives.Add(downloadData3);\n\n            var downloadData4 = new MyUseObjective(\n                    (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_DOWNLOAD_DATA4_Name),\n                    MyMissionID.BARTHS_MOON_TRANSMITTER_DOWNLOAD_DATA4,\n                    (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_DOWNLOAD_DATA4_Description),\n                    null,\n                    this,\n                    new MyMissionID[] { MyMissionID.BARTHS_MOON_TRANSMITTER_DOWNLOAD_DATA3 },\n                    new MyMissionLocation(baseSector, (uint)EntityID.Hub4Dummy),\n                    MyTextsWrapperEnum.PressToDownloadData,\n                    MyTextsWrapperEnum.Console,\n                    MyTextsWrapperEnum.DownloadingData,\n                    3000) { HudName = MyTextsWrapperEnum.HudHub };\n            downloadData4.OnMissionLoaded += EnsureDronesInShip;\n            m_objectives.Add(downloadData4);\n\n            var entermainLab = new MyObjective(\n                (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_ENTER_MAINLAB_Name),\n                MyMissionID.BARTHS_MOON_TRANSMITTER_ENTER_MAINLAB,\n                (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_ENTER_MAINLAB_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.BARTHS_MOON_TRANSMITTER_DOWNLOAD_DATA4 },\n                new MyMissionLocation(baseSector, (uint)EntityID.EnterMainLabDummy)\n                ) { SaveOnSuccess = true, StartDialogId = MyDialogueEnum.BARTHS_MOON_TRANSMITTER_2100, HudName = MyTextsWrapperEnum.HudLab };\n            entermainLab.OnMissionSuccess += EntermainLabOnOnMissionSuccess;\n            m_objectives.Add(entermainLab);\n\n\n            //10\n            m_destroyComputer = new MyObjectiveDestroy(\n               (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_DESTROY_COMPUTER_Name),\n               MyMissionID.BARTHS_MOON_TRANSMITTER_DESTROY_COMPUTER,\n               (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_DESTROY_COMPUTER_Description),\n               null,\n               this,\n               new MyMissionID[] { MyMissionID.BARTHS_MOON_TRANSMITTER_ENTER_MAINLAB },\n               new List<uint> { (uint)EntityID.DestroyComputer },         // entities needed to kill\n               new List<uint> { },  // spawnpoint from which bots must be killed\n               true,\n               false // dont count \n               ) { SaveOnSuccess = false, StartDialogId = MyDialogueEnum.BARTHS_MOON_TRANSMITTER_2200/*, SuccessDialogId = MyDialogueEnum.BARTHS_MOON_TRANSMITTER_2400*/, HudName = MyTextsWrapperEnum.HudBlondi };\n            m_destroyComputer.OnMissionSuccess += DestroyComputerOnOnMissionSuccess;\n            m_destroyComputer.OnMissionLoaded += DestroyComputerOnOnMissionLoaded;\n            m_destroyComputer.Components.Add(new MySpawnpointWaves((uint)EntityID.EnterMainLabDummy, 0,\n                new List<uint[]>\n                    {\n                        new List<uint> { (uint)EntityID.SpawnPoint5, (uint)EntityID.SpawnPoint6 }.ToArray(), \n                        new List<uint> { (uint)EntityID.SpawnPoint7, (uint)EntityID.SpawnPoint8 }.ToArray()\n                    }));\n            m_objectives.Add(m_destroyComputer);\n\n\n            m_needPart3 = new MyMultipleUseObjective(\n                (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_FIND_PART3_Name),\n                MyMissionID.BARTHS_MOON_TRANSMITTER_FIND_PART3,\n                (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_FIND_PART3_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.BARTHS_MOON_TRANSMITTER_DESTROY_COMPUTER },\n                MyTextsWrapperEnum.PressToTakeComponent,\n                MyTextsWrapperEnum.Component,\n                MyTextsWrapperEnum.TakingInProgress,\n                1000,\n                new List<uint>() { (uint)EntityID.CollectPart1Dummy, (uint)EntityID.CollectPart2Dummy, (uint)EntityID.CollectPart3Dummy },\n                MyUseObjectiveType.Taking) { SaveOnSuccess =  true, StartDialogId = MyDialogueEnum.BARTHS_MOON_TRANSMITTER_2500, HudName = MyTextsWrapperEnum.HudPart };\n            m_needPart3.OnMissionSuccess += NeedPart3OnOnMissionSuccess;\n            m_needPart3.OnObjectUsedSucces += OnObjectUsedSucces;\n            m_needPart3.OnMissionLoaded += NeedPart1OnOnMissionLoaded;\n            m_objectives.Add(m_needPart3);\n\n\n            m_escape = new MyObjective(\n                (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_FIND_WAY_OUT_Name),\n                MyMissionID.BARTHS_MOON_TRANSMITTER_FIND_WAY_OUT,\n                (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_FIND_WAY_OUT_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.BARTHS_MOON_TRANSMITTER_FIND_PART3 },\n                new MyMissionLocation(baseSector, (uint)EntityID.EscapeDummy)\n                ) { SaveOnSuccess = true, StartDialogId = MyDialogueEnum.BARTHS_MOON_TRANSMITTER_2600, SuccessDialogId = MyDialogueEnum.BARTHS_MOON_TRANSMITTER_3100, HudName = MyTextsWrapperEnum.Nothing };\n            m_escape.OnMissionSuccess += Escape_Success;\n            m_escape.Components.Add(new MyDetectorDialogue((uint)EntityID.EscapeEventDummy, MyDialogueEnum.BARTHS_MOON_TRANSMITTER_2700));\n            m_escape.Components.Add(new MyDetectorDialogue((uint)EntityID.EscapeDummy, MyDialogueEnum.BARTHS_MOON_TRANSMITTER_2900));\n            m_escape.OnMissionLoaded += EscapeOnOnMissionLoaded;\n            m_escape.OnMissionCleanUp += EscapeOnOnMissionCleanUp;\n            m_objectives.Add(m_escape);\n            \n\n            var build = new MyUseObjective(\n                (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_BUILD_TRANSMITTER_Name),\n                MyMissionID.BARTHS_MOON_TRANSMITTER_BUILD_TRANSMITTER,\n                (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_BUILD_TRANSMITTER_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.BARTHS_MOON_TRANSMITTER_FIND_WAY_OUT },\n                new MyMissionLocation(baseSector, (uint)EntityID.BuildDetector4),\n                MyTextsWrapperEnum.PressToBuildTransmitter,\n                MyTextsWrapperEnum.Transmitter,\n                MyTextsWrapperEnum.BuildingInProgress,\n                3000,\n                MyUseObjectiveType.Building);\n            build.OnMissionSuccess += Build_Success;\n            build.OnMissionLoaded += Build_Loaded;\n            build.Components.Add(new MySpawnpointWaves((uint)EntityID.EscapeDummy, 0,\n                                                       new List<uint[]>\n                                                           {\n                                                               new List<uint> {(uint) EntityID.SpawnPoint9}.ToArray(),\n                                                               new List<uint>\n                                                                   {\n                                                                       (uint) EntityID.SpawnPoint10,\n                                                                       (uint) EntityID.SpawnPoint11,\n                                                                       (uint) EntityID.SpawnPoint12\n                                                                   }.ToArray()\n                                                           }));\n            build.Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorWayBack2, 0,\n                                                       new List<uint[]>\n                                                           {\n                                                               new List<uint> {(uint) EntityID.SpawnPoint13}.ToArray(),\n                                                               new List<uint> {(uint) EntityID.SpawnPoint14}.ToArray()\n                                                           }));\n            m_objectives.Add(build);\n\n            var backToMadelyn = new MyObjective(\n                (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_RETURN_BACK_TO_MADELYN_Name),\n                MyMissionID.BARTHS_MOON_TRANSMITTER_RETURN_BACK_TO_MADELYN,\n                (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_RETURN_BACK_TO_MADELYN_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.BARTHS_MOON_TRANSMITTER_BUILD_TRANSMITTER },\n                new MyMissionLocation(baseSector, MyMissionLocation.MADELYN_HANGAR),\n                startDialogId: MyDialogueEnum.BARTHS_MOON_TRANSMITTER_3200,\n                radiusOverride: MyMissionLocation.MADELYN_HANGAR_RADIUS\n            ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudMadelynsSapho };\n            m_objectives.Add(backToMadelyn);\n\n            //var talkWithThomasBarthEnd = new MyMeetObjective(\n            //    new StringBuilder(\"Talk with Thomas Barth\"),\n            //    MyMissionID.BARTHS_MOON_TRANSMITTER_TALK_WITH_THOMAS_BARTH_END,\n            //    new StringBuilder(\"\"),\n            //    this,\n            //    new MyMissionID[] { MyMissionID.BARTHS_MOON_TRANSMITTER_BUILD_TRANSMITTER },\n            //    null,\n            //    (uint)EntityID.ThomasBartId,\n            //    50,\n            //    0.25f\n            //) { SaveOnSuccess = true, FollowMe = false };\n            //talkWithThomasBarthEnd.OnMissionSuccess += TalkWithThomasBarthEnd_Success;\n            //m_objectives.Add(talkWithThomasBarthEnd);\n\n\n            #endregion\n        }\n\n        private void Build_Loaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.SetWaypointListSecrecy(new List<uint>() { (uint)EntityID.WayPoint }, true);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.GetEntity((uint)EntityID.WayPoint), false);\n\n            SetDummyVisibleStatus(EntityID.BuildDetector4, true);\n            SetDummyVisibleStatus(EntityID.BuildPlatform4, true);\n            SetContainerVisibleStatus(EntityID.BuildContainer4, true);\n\n\n            m_thomasBarth.SetWaypointPath(\"BarthWayo\");\n            m_thomasBarth.PatrolMode = MyPatrolMode.ONE_WAY;\n            m_thomasBarth.Patrol();\n        }\n\n        private void EscapeOnOnMissionLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.SpawnpointBotsKilled += Script_SpawnpointBotsKilled;\n        }\n\n        private void EscapeOnOnMissionCleanUp(MyMissionBase sender)\n        {\n            MyScriptWrapper.SpawnpointBotsKilled += Script_SpawnpointBotsKilled;\n        }\n\n        private void Script_SpawnpointBotsKilled(MySpawnPoint spawnPoint)\n        {\n            if (spawnPoint.EntityId.Value.NumericValue == (uint)EntityID.SpawnPointEscape)\n            {\n                MyScriptWrapper.PlayDialogue(MyDialogueEnum.BARTHS_MOON_TRANSMITTER_2800);\n            }\n\n            if (spawnPoint.EntityId.Value.NumericValue == (uint)EntityID.SpawnPoint4)\n            {\n                MyScriptWrapper.PlayDialogue(MyDialogueEnum.BARTHS_MOON_TRANSMITTER_3000);\n            }\n        }\n\n        void TalkWithThomasBarthEnd_Success(MyMissionBase sender)\n        {\n            m_thomasBarth.LookTarget = null;\n            m_thomasBarth.SetWaypointPath(\"BarthIn\");\n            m_thomasBarth.PatrolMode = MyPatrolMode.ONE_WAY;\n            m_thomasBarth.SpeedModifier = 0.5f;\n            m_thomasBarth.Patrol();\n        }\n\n        private void OnObjectUsedSucces(uint entity)\n        {\n            if (entity == (uint)EntityID.CollectPart3Dummy)\n            {\n                MyScriptWrapper.Highlight((uint)EntityID.CollectPart3, false, this);\n                MyScriptWrapper.CloseEntity(MyScriptWrapper.GetEntity((uint)EntityID.CollectPart3));\n            }\n            else if (entity == (uint)EntityID.CollectPart2Dummy)\n            {\n                MyScriptWrapper.Highlight((uint)EntityID.CollectPart2, false, this);\n                MyScriptWrapper.CloseEntity(MyScriptWrapper.GetEntity((uint)EntityID.CollectPart2));\n            }\n            else if (entity == (uint)EntityID.CollectPart1Dummy)\n            {\n                MyScriptWrapper.Highlight((uint)EntityID.CollectPart1, false, this);\n                MyScriptWrapper.CloseEntity(MyScriptWrapper.GetEntity((uint)EntityID.CollectPart1));\n            }\n        }\n\n        private void DownloadData3OnOnMissionSuccess(MyMissionBase sender)\n        {\n            MyScriptWrapper.AddNotification(MyScriptWrapper.CreateNotification(MyTextsWrapperEnum.ExitDrone, MyGuiManager.GetFontMinerWarsBlue(), 5000));\n\n        }\n\n        private void DownloadData3OnOnMissionLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.AddNotification(MyScriptWrapper.CreateNotification(MyTextsWrapperEnum.EnterDrone, MyGuiManager.GetFontMinerWarsBlue(), 5000));\n        }\n\n        private void NeedPart1OnOnMissionLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.Highlight((uint)EntityID.CollectPart1, true, this);\n            MyScriptWrapper.Highlight((uint)EntityID.CollectPart2, true, this);\n            MyScriptWrapper.Highlight((uint)EntityID.CollectPart3, true, this);\n        }\n\n        private void Build_Success(MyMissionBase sender)\n        {\n            var prefabCont = MyScriptWrapper.GetEntity((uint)EntityID.BuildContainer4);\n\n            foreach (var child in prefabCont.Children)\n            {\n                MyScriptWrapper.Highlight(child.EntityId.Value.NumericValue, false, this);\n                MyScriptWrapper.EnablePhysics(child.EntityId.Value.NumericValue, true);\n            }\n\n            //m_thomasBarth.Follow(MySession.PlayerShip);\n            //m_thomasBarth.LookTarget = MySession.PlayerShip;\n            //m_blinkingObjects.Enabled = false;\n        }\n\n        private void LearnDronesOnOnMissionSuccess(MyMissionBase sender)\n        {\n            if (m_learnToUseDrone != null)\n            {\n                m_learnToUseDrone.Disappear();\n            }\n        }\n\n        private void LearnDronesOnOnMissionLoaded(MyMissionBase sender)\n        {\n            m_learnToUseDrone = MyScriptWrapper.CreateNotification(\n                MyTextsWrapperEnum.HowToControlDrone,\n                MyHudConstants.MISSION_FONT, 0,\n                new object[] { MyGuiManager.GetInput().GetGameControlTextEnum(MyGameControlEnums.DRONE_DEPLOY), MyGuiManager.GetInput().GetGameControlTextEnum(MyGameControlEnums.DRONE_CONTROL) }\n            );\n            MyScriptWrapper.AddNotification(m_learnToUseDrone);\n        }\n\n        private void Escape_Success(MyMissionBase sender)\n        {\n            ShowContainer(EntityID.HidePrefabCont);\n            MyScriptWrapper.SetAlarmMode((uint)EntityID.AlarmContId, false);\n        }\n\n        private void DestroyComputerOnOnMissionLoaded(MyMissionBase sender)\n        {\n            ActivateTurretsObjects(m_turrets1);\n            ActivateObjects(m_turretsLights1);\n        }\n\n        private void DestroyComputerOnOnMissionSuccess(MyMissionBase sender)\n        {\n\n            MyScriptWrapper.DestroyEntities(m_toDestroyAfterComputerDestroy);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.GetEntity((uint)EntityID.InvisibleDummy4), true);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.GetEntity((uint)EntityID.DestroyCompParticleDummy), true);\n            MyScriptWrapper.DeactivateSpawnPoint((uint)EntityID.SpawnPoint5);\n            MyScriptWrapper.DeactivateSpawnPoint((uint)EntityID.SpawnPoint6);\n            MyScriptWrapper.DeactivateSpawnPoint((uint)EntityID.SpawnPoint7);\n            MyScriptWrapper.DeactivateSpawnPoint((uint)EntityID.SpawnPoint8);\n\n            this.Components.Add(new MyHeadshake(MissionTimer.ElapsedTime, MyHeadshake.DefaultShaking, 12, 5, 10));\n\n        }\n\n\n        private void NeedPart3OnOnMissionSuccess(MyMissionBase sender)\n        {\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.GetEntity((uint)EntityID.EscapeDummy), true);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.GetEntity((uint)EntityID.DetectorWayBack2), true);\n            //var x = MyScriptWrapper.TryGetEntity((uint) EntityID.Doors);\n            var doors = MyScriptWrapper.TryGetEntity((uint)EntityID.Doors) as MyPrefabKinematic;\n            if (doors != null)\n            {\n                doors.OrderToOpen();\n                doors.Enabled = true;\n            }\n        }\n\n        private void NeedPart2OnOnMissionSuccess(MyMissionBase sender)\n        {\n            MyScriptWrapper.CloseEntity(MyScriptWrapper.GetEntity((uint)EntityID.CollectPart2));\n        }\n\n        private void NeedPart1OnOnMissionSuccess(MyMissionBase sender)\n        {\n            MyScriptWrapper.CloseEntity(MyScriptWrapper.GetEntity((uint)EntityID.CollectPart1));\n        }\n\n\n\n        private void EntermainLabOnOnMissionSuccess(MyMissionBase sender)\n        {\n            var doors = (MyPrefabKinematic)MyScriptWrapper.GetEntity((uint)EntityID.Doors);\n            doors.OrderToClose();\n            doors.Enabled = false;\n        }\n\n\n        private void EnableGeneratorWithDrone1OnOnMissionSuccess(MyMissionBase sender)\n        {\n            MyScriptWrapper.DestroyEntities(new List<uint> { (uint)EntityID.Dronegenerator1 });\n\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.GetEntity((uint)EntityID.Dronegenerator1particles), true);\n            m_enableGeneratorWithDrone1 = true;\n            m_releaseDroneTime = MissionTimer.ElapsedTime + 1000;\n\n        }\n\n        private void EnableGeneratorWithDrone2OnOnMissionSuccess(MyMissionBase sender)\n        {\n            MyScriptWrapper.AddNotification(MyScriptWrapper.CreateNotification(MyTextsWrapperEnum.ExitDrone, MyGuiManager.GetFontMinerWarsGreen(), 4000));\n            //deactivate inf. spheres\n            ActivateObjects(new List<uint> { (uint)EntityID.InfluenceSphere1, (uint)EntityID.InfluenceSphere2, (uint)EntityID.InfluenceSphere3 }, false);\n            ActivateObjects(new List<uint> { (uint)EntityID.ActivateDummyInfl, (uint)EntityID.DroneGenerator2, (uint)EntityID.ActivateGenerator, (uint)EntityID.ActiveDummy1, (uint)EntityID.ActiveDummy2, (uint)EntityID.ActiveDummy3, (uint)EntityID.ActiveDummy4 });\n        }\n\n\n\n        private void EnableGeneratorOnOnMissionSuccess(MyMissionBase sender)\n        {\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.GetEntity((uint)EntityID.EnableGenerator), true);\n        }\n\n\n        void destroyLaboratories_OnMissionLoaded(MyMissionBase sender)\n        {\n            var mission = sender as MyObjectiveDestroy;\n            var doors = (MyPrefabKinematic)MyScriptWrapper.GetEntity((uint)EntityID.Destroyprefab);\n\n            foreach (var doorParts in doors.Parts)\n            {\n                if (doorParts != null && doorParts.EntityId != null)\n                    if (mission != null) mission.AddToKill(doorParts.EntityId.Value.NumericValue);\n            }\n        }\n\n\n\n        private void MeetThomasBarthOnLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.SetParticleEffect(GetEntity(EntityID.ShipFlameEffect), false);\n            MyScriptWrapper.SetParticleEffect(GetEntity(EntityID.GeneratorFlameEffect), false);\n        }\n\n\n        public override void Update()\n        {\n            base.Update();\n\n            if (m_enableGeneratorWithDrone1 && MissionTimer.ElapsedTime > m_releaseDroneTime)\n            {\n                MyGuiScreenGamePlay.Static.ReleaseControlOfDrone();\n                if (m_controlledDrone != null && m_controlledDrone.EntityId != null) MyScriptWrapper.DestroyEntities(new List<uint> { m_controlledDrone.EntityId.Value.NumericValue });\n                m_enableGeneratorWithDrone1 = false;\n            }\n        }\n\n        public override void Load()\n        {\n            EnableCorrectBarths((uint)EntityID.ThomasBartId, (uint)EntityID._01SmallShipBarth);\n\n            MyGuiScreenGamePlay.Static.CameraContrlolledObjectChanged += Static_CameraContrlolledObjectChanged;\n            MyScriptWrapper.EntityClosing += MyScriptWrapperOnEntityClosing;\n            MyScriptWrapper.AlarmLaunched += MyScriptWrapperOnAlarmLaunched;\n            MyScriptWrapper.SpawnpointBotsKilled += MyScriptWrapperOnSpawnpointBotsKilled;\n            MyScriptWrapper.OnBotReachedWaypoint += MyScriptWrapperOnOnBotReachedWaypoint;\n            MyScriptWrapper.OnDialogueFinished += MyScriptWrapperOnOnDialogueFinished;\n            MyScriptWrapper.OnEntityAtacked += MyScriptWrapperOnEntityAttacked;\n\n            if (!MyMissions.GetMissionByID(MyMissionID.BARTHS_MOON_TRANSMITTER_TALK_TO_BARTH).IsCompleted())\n            {\n                var startPosition = MyScriptWrapper.GetEntity((uint)EntityID.PlayerStartLocationTransmitter).GetPosition();\n                MyScriptWrapper.Move(MyScriptWrapper.GetEntity(MyActorConstants.GetActorName(MyActorEnum.MADELYN)), startPosition);\n                MyScriptWrapper.MovePlayerAndFriendsToHangar(this.RequiredActors);\n            }\n\n            HideContainer(EntityID.InvisibleContainer1);\n            HideContainer(EntityID.InvisibleContainer2);\n            HideContainer(EntityID.InvisibleContainer3);\n            //HideContainer(EntityID.HidePrefabCont);\n            MyScriptWrapper.SetEntityEnabled((uint)EntityID.BarthsMoon2DisableInfluenceSphere, false);\n            MyScriptWrapper.TryHideEntities(m_hidePrefabs);\n            MyScriptWrapper.SetEntitiesEnabled(m_disableDummies, false);\n            //InitDetector((uint)EntityID.EnterMainLabDetector, StartMainLabDetector);\n            MyScriptWrapper.OnSentenceStarted += MyScriptWrapper_OnSentenceStarted;\n\n            MyEntityDetector detector = MyScriptWrapper.GetDetector(MyScriptWrapper.GetEntity((uint)EntityID.EscapeEventDummy));\n            detector.OnEntityEnter += (OnEntityEnter)EscapeEvent;\n            detector.On();\n\n\n            foreach (uint deadShip in m_deadShips)\n            {\n                MyEntity shipEntity = MyScriptWrapper.TryGetEntity(deadShip);\n                if (shipEntity != null)\n                {\n                    MyScriptWrapper.DisableShip(MyScriptWrapper.GetEntity(deadShip), false);\n                    MyScriptWrapper.RemoveEntityMark(MyScriptWrapper.GetEntity(deadShip));\n                }\n            }\n\n\n            m_thomasBarth = (MySmallShipBot)MyScriptWrapper.GetEntity((uint)EntityID.ThomasBartId);\n            m_thomasBarth.SpeedModifier = 0.5f;\n\n            ActivateTurretsObjects(m_turrets1, false);\n            ActivateTurretsObjects(m_turrets2, false);\n            ActivateTurretsObjects(m_turrets3, false);\n\n\n            foreach (var entity in m_whiteMarks)\n            {\n                var en = MyScriptWrapper.TryGetEntity(entity);\n\n                if (en != null)\n                {\n                    var name = \"\";\n                    if (en.Name != null) name = en.Name;\n                    if (en.DisplayName != null) name = en.DisplayName;\n                    //TODO: can't we just remove SHOW_TEXT?\n                    MyScriptWrapper.MarkEntity(en, name, HUD.MyHudIndicatorFlagsEnum.SHOW_DISTANCE | HUD.MyHudIndicatorFlagsEnum.SHOW_TEXT | MyHudIndicatorFlagsEnum.ALPHA_CORRECTION_BY_DISTANCE, HUD.MyGuitargetMode.Neutral);\n                }\n            }\n\n\n            m_computerDownDialoguePlayed = false;\n\n            var prefabCont = MyScriptWrapper.GetEntity((uint)EntityID.BuildContainer4);\n\n            foreach (var child in prefabCont.Children)\n            {\n                if (child.Physics != null) child.Physics.Enabled = false;\n                MyScriptWrapper.Highlight(child.EntityId.Value.NumericValue, true, this);\n            }\n\n            m_thomasBarth.SetWaypointPath(\"interior2\");\n            m_thomasBarth.PatrolMode = MyPatrolMode.CYCLE;\n            m_thomasBarth.Patrol();\n\n            MyScriptWrapper.TryHideEntities(m_entitiesToHide);\n            //MyScriptWrapper.TryHideEntities(new List<uint>(){(uint)EntityID._01SmallShipBarth});\n\n            m_turrets1.Clear();\n            m_turrets1.AddRange(m_turrets1Waves);\n            m_turrets2.Clear();\n            m_turrets2.AddRange(m_turrets2Waves);\n            m_turrets3.Clear();\n            m_turrets3.AddRange(m_turrets3Waves);\n\n            //MyScriptWrapper.GetEntity(\"Madelyn\").SetWorldMatrix(MyScriptWrapper.GetEntity((uint)EntityID.BarthsMoon2MadelynLocation).WorldMatrix);\n            //MySession.PlayerShip.SetWorldMatrix(MyScriptWrapper.GetEntity((uint)EntityID.BarthsMoon2StartLocation).WorldMatrix);\n\n            LoadFanPhysics();\n\n            m_lookedThroughLeftCameras = false;\n            m_lookedThroughRightCameras = false;\n            base.Load();\n        }\n\n        void MyScriptWrapper_OnSentenceStarted(MyDialogueEnum dialogue, MyDialoguesWrapperEnum sentence)\n        {\n            if (dialogue == MyDialogueEnum.BARTHS_MOON_TRANSMITTER_3200 && sentence == MyDialoguesWrapperEnum.Dlg_BarthsMoon2_3210)\n            {\n                MyScriptWrapper.ApplyTransition(Audio.MyMusicTransitionEnum.Special, 100, \"KA08\", false);\n            }\n        }\n\n\n        private void LoadFanPhysics()\n        {\n            foreach (var fan in m_fans)\n            {\n                EnableTriangleLod0Physics(fan);\n            }\n        }\n\n        private void EnableTriangleLod0Physics(uint fan)\n        {\n            var fanPrefab = MyScriptWrapper.TryGetEntity(fan);\n            if (fanPrefab != null && fanPrefab.ModelLod0 != null)\n            {\n                MyScriptWrapper.EnablePhysics(fan, false);\n                fanPrefab.InitTrianglePhysics(MyMaterialType.METAL, 1000, fanPrefab.ModelLod0, fanPrefab.ModelLod0);\n            }\n        }\n\n        private void MyScriptWrapperOnEntityAttacked(MyEntity attacker, MyEntity target)\n        {\n            if (target.EntityId != null && (target.EntityId.Value.NumericValue == (uint)EntityID.DestroyComputer && m_destroyComputer.IsAvailable()))\n            {\n                if (!m_computerDownDialoguePlayed && target.HealthRatio <= 0.4f)\n                {\n                    m_computerDownDialoguePlayed = true;\n                    MyScriptWrapper.PlayDialogue(MyDialogueEnum.BARTHS_MOON_TRANSMITTER_2300);\n                }\n                else if (!m_computerDestroydDialoguePlayed && target.HealthRatio <= 0.1f)\n                {\n                    m_computerDestroydDialoguePlayed = true;\n                    MyScriptWrapper.PlayDialogue(MyDialogueEnum.BARTHS_MOON_TRANSMITTER_2400);\n\n                }\n            }\n        }\n\n        private void MyScriptWrapperOnOnDialogueFinished(MyDialogueEnum dialogue, bool interrupted)\n        {\n            if (dialogue == MyDialogueEnum.BARTHS_MOON_TRANSMITTER_0400 && m_findWayToMoon.IsAvailable())\n            {\n                m_thomasBarth.LookTarget = null;\n                m_thomasBarth.SetWaypointPath(\"interior2\");\n                m_thomasBarth.Patrol();\n            }\n            if (dialogue == MyDialogueEnum.BARTHS_MOON_TRANSMITTER_2400)\n            {\n                MyScriptWrapper.DestroyEntity((uint)EntityID.DestroyComputer);\n            }\n            if (dialogue == MyDialogueEnum.BARTHS_MOON_TRANSMITTER_0100_INTRO)\n            {\n                MissionTimer.RegisterTimerAction(2000, () => MyScriptWrapper.PlayDialogue(MyDialogueEnum.BARTHS_MOON_TRANSMITTER_0200), false);\n            }\n\n        }\n\n        private void MyScriptWrapperOnOnBotReachedWaypoint(MyEntity entity1, MyEntity entity2)\n        {\n            if (entity2.EntityId != null && (entity1 == m_thomasBarth && entity2.EntityId.Value.NumericValue == (uint)EntityID.WayForbarthLastWayPoint))\n            {\n                m_thomasBarth.PatrolMode = MyPatrolMode.CYCLE;\n                m_thomasBarth.SetWaypointPath(\"BarthTrans\");\n                m_thomasBarth.Patrol();\n            }\n        }\n\n        private void EscapeEvent(MyEntityDetector sender, MyEntity entity, int meetcriterias)\n        {\n            if (MyMissions.ActiveMission != null && MyMissions.ActiveMission.ActiveObjectives != null && MyMissions.ActiveMission.ActiveObjectives.Contains(m_escape))\n            {\n                MyScriptWrapper.AddExplosions(new List<uint>() { (uint)EntityID.EscapeEventDummyToActive1, (uint)EntityID.EscapeEventDummyToActive2 }, Explosions.MyExplosionTypeEnum.LARGE_SHIP_EXPLOSION, 100);\n\n                MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.GetEntity((uint)EntityID.ParticleDummy1), false);\n                MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.GetEntity((uint)EntityID.ParticleDummy2), false);\n                ShowContainer(EntityID.InvisibleContainer3);\n                MyScriptWrapper.AddVoxelHand((uint)EntityID.VoxelMap, 2203550, 100, MyMwcVoxelMaterialsEnum.Stone_03, MyMwcVoxelHandModeTypeEnum.SUBTRACT);\n                MyScriptWrapper.AddVoxelHand((uint)EntityID.VoxelMap, 2203550, 61, MyMwcVoxelMaterialsEnum.Stone_03, MyMwcVoxelHandModeTypeEnum.SUBTRACT);\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnPointEscape);\n\n                this.Components.Add(new MyHeadshake(MissionTimer.ElapsedTime, MyHeadshake.DefaultShaking, 12, 5, 10));\n            }\n\n        }\n\n\n\n        private void MyScriptWrapperOnSpawnpointBotsKilled(MySpawnPoint spawnPoint)\n        {\n            if (spawnPoint.EntityId.Value.NumericValue == (uint)EntityID.SpawnPoint1)\n            {\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnPoint2);\n            }\n        }\n\n\n\n        private void MyScriptWrapperOnAlarmLaunched(MyEntity entity1, MyEntity entity2)\n        {\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnPoint1);\n\n            ActivateObjects(m_turretsToActivate);\n            MyScriptWrapper.PlayDialogue(MyDialogueEnum.BARTHS_MOON_TRANSMITTER_1600);\n\n        }\n\n        private void MyScriptWrapperOnEntityClosing(MyEntity entity)\n        {\n            if (entity.EntityId == null)\n                return;\n\n            if (entity.EntityId.Value.NumericValue == (uint)EntityID.TurretId)\n            {\n                BoomAfterTurretDestroy();\n            }\n\n            if (entity is MyPrefabLargeWeapon)\n            {\n                if (m_turrets1.Contains(entity.EntityId.Value.NumericValue))\n                {\n                    m_turrets1.Remove(entity.EntityId.Value.NumericValue);\n                }\n\n                if (m_turrets2.Contains(entity.EntityId.Value.NumericValue))\n                {\n                    m_turrets2.Remove(entity.EntityId.Value.NumericValue);\n                }\n\n                if (m_turrets1.Count == 0) { ActivateTurretsObjects(m_turrets2); ActivateObjects(m_turretsLights2); }\n                if (m_turrets2.Count == 0) { ActivateTurretsObjects(m_turrets3); ActivateObjects(m_turretsLights3); }\n            }\n        }\n\n\n\n        private void BoomAfterTurretDestroy()\n        {\n            //MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.GetEntity((uint)EntityID.turretDestroy1), true);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.GetEntity((uint)EntityID.turretDestroy2), true);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.GetEntity((uint)EntityID.turretDestroy3), true);\n\n            ShowContainer(EntityID.InvisibleContainer2);\n            //MyScriptWrapper.DestroyEntities(new List<uint>{(uint)EntityID.TurretDestroyprefab});\n\n            MyScriptWrapper.AddVoxelHand((uint)EntityID.VoxelMap, 2103326, 100, MyMwcVoxelMaterialsEnum.Stone_03);\n            MyScriptWrapper.AddVoxelHand((uint)EntityID.VoxelMap, 2103327, 100, MyMwcVoxelMaterialsEnum.Stone_03);\n            MyScriptWrapper.AddVoxelHand((uint)EntityID.VoxelMap, 2103328, 100, MyMwcVoxelMaterialsEnum.Stone_03);\n            MyScriptWrapper.AddVoxelHand((uint)EntityID.VoxelMap, 2103329, 100, MyMwcVoxelMaterialsEnum.Stone_03);\n            MyScriptWrapper.AddVoxelHand((uint)EntityID.VoxelMap, 2103330, 61, MyMwcVoxelMaterialsEnum.Stone_03);\n            MyScriptWrapper.AddVoxelHand((uint)EntityID.VoxelMap, 2103331, 61, MyMwcVoxelMaterialsEnum.Stone_03);\n\n            this.Components.Add(new MyHeadshake(MissionTimer.ElapsedTime, MyHeadshake.DefaultShaking, 12, 5, 10));\n        }\n\n        void Static_CameraContrlolledObjectChanged(MyEntity e)\n        {\n            if (MyMissions.ActiveMission.ActiveObjectives.Contains(m_lookBothHubs))\n            {\n                if (m_leftHubCameras.Contains(e.EntityId.Value.NumericValue)) m_lookedThroughLeftCameras = true;\n\n                if (m_lookedThroughLeftCameras)\n                {\n                    m_lookBothHubs.Success();\n                }\n            }\n\n            if (MyMissions.ActiveMission.ActiveObjectives.Contains(m_lookBothHubs2))\n            {\n                if (m_rightHubCameras.Contains(e.EntityId.Value.NumericValue)) m_lookedThroughRightCameras = true;\n\n                if (m_lookedThroughRightCameras)\n                {\n                    m_lookBothHubs2.Success();\n                }\n            }\n\n\n            if (e is MyDrone)\n            {\n                m_controlledDrone = e;\n                if (m_learnToUseDrones.IsAvailable())\n                {\n                    m_learnToUseDrones.Success();\n                }\n            }\n\n        }\n\n        public override void Unload()\n        {\n            base.Unload();\n\n            m_thomasBarth = null;\n            m_controlledDrone = null;\n\n            MyScriptWrapper.OnSentenceStarted -= MyScriptWrapper_OnSentenceStarted;\n            MyGuiScreenGamePlay.Static.CameraContrlolledObjectChanged -= Static_CameraContrlolledObjectChanged;\n            MyScriptWrapper.EntityClosing -= MyScriptWrapperOnEntityClosing;\n            MyScriptWrapper.AlarmLaunched -= MyScriptWrapperOnAlarmLaunched;\n            MyScriptWrapper.SpawnpointBotsKilled -= MyScriptWrapperOnSpawnpointBotsKilled;\n            MyScriptWrapper.OnBotReachedWaypoint -= MyScriptWrapperOnOnBotReachedWaypoint;\n            MyScriptWrapper.OnDialogueFinished -= MyScriptWrapperOnOnDialogueFinished;\n            MyScriptWrapper.OnEntityAtacked -= MyScriptWrapperOnEntityAttacked;\n        }\n\n\n        private void ActivateObjects(List<uint> objects, bool activate = true)\n        {\n            foreach (var u in objects)\n            {\n                var entity = MyScriptWrapper.TryGetEntity(u);\n                if (entity != null)\n                {\n                    MyScriptWrapper.SetEntityEnabled(entity, activate);\n                }\n            }\n        }\n\n\n        private void ActivateTurretsObjects(List<uint> objects, bool activate = true)\n        {\n            foreach (var u in objects)\n            {\n                var entity = MyScriptWrapper.TryGetEntity(u);\n                if (entity != null)\n                {\n                    MyScriptWrapper.SetEntityEnabled(entity, activate);\n                    entity.Visible = activate;\n                    if (!activate)\n                    {\n                        MyScriptWrapper.RemoveEntityMark(entity);\n                    }\n                    else\n                    {\n                        MyScriptWrapper.MarkEntity(entity, \"\", guiTargetMode: MyGuitargetMode.Enemy);\n                    }\n                }\n            }\n        }\n\n\n        private void EnsureDronesInShip(MyMissionBase sender)\n        {\n            // there is no drone in player's or session's inventory, then add 10 drones to session's inventory, because player neeeds them for completing mission\n            MyScriptWrapper.EnsureInventoryItem(MyMwcObjectBuilderTypeEnum.Drone, (int)MyMwcObjectBuilder_Drone_TypesEnum.DroneUS, 10f);\n        }\n\n\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/SinglePlayer/MyBiofacilityMission.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Entities;\nusing System.Diagnostics;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Entities.WayPoints;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Inventory;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.Game.World.Global;\n\n\nnamespace MinerWars.AppCode.Game.Missions.SinglePlayer\n{\n    class MyBiofacilityMission : MyMissionSandboxBase\n    {\n        private enum EntityID // list of IDs used in script\n        {\n            StartLocation = 3869,\n         \n        }\n\n        public override void ValidateIds() // checks if all IDs in enum are loaded correctly\n        {\n            foreach (var value in Enum.GetValues(typeof(EntityID)))\n            {\n                MyScriptWrapper.GetEntity((uint)((value as EntityID?).Value));\n            }\n        }\n\n\n\n        public MyBiofacilityMission()\n        {\n            ID = MyMissionID.BIOFACILITY; /* ID must be added to MyMissions.cs */\n            DebugName = new StringBuilder(\"Biofacility\"); // Name of mission\n            Name = MyTextsWrapperEnum.BIOFACILITY;\n            Description = MyTextsWrapperEnum.BIOFACILITY_Description;\n            MyMwcVector3Int baseSector = new MyMwcVector3Int(3612352, 0, 2326312); // Story sector of the script - i.e. (-2465,0,6541)\n            RequiredMissions = new MyMissionID[] { };\n            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation); // Starting dummy point - must by typecasted to uint and referenced from EntityID enum\n            RequiredActors = new MyActorEnum[] { MyActorEnum.MADELYN };\n           \n\n            m_objectives = new List<MyObjective>(); // Creating of list of submissions\n\n\n        }\n\n\n\n        private float m_oldRelation;\n\n\n        public override void Load() // Code in that block will be called on the load of the sector\n        {\n            base.Load();\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.CalmAtmosphere, 3); \n            m_oldRelation = MyFactions.GetFactionsStatus(MyMwcObjectBuilder_FactionEnum.Euroamerican, MyMwcObjectBuilder_FactionEnum.Rainiers);\n            MyScriptWrapper.SetFactionRelation(MyMwcObjectBuilder_FactionEnum.Euroamerican, MyMwcObjectBuilder_FactionEnum.Rainiers, MyFactions.RELATION_WORST);\n        }\n\n        public override void Unload()\n        {\n            base.Unload();\n\n            MyScriptWrapper.SetFactionRelation(MyMwcObjectBuilder_FactionEnum.Euroamerican, MyMwcObjectBuilder_FactionEnum.Rainiers, m_oldRelation);\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/SinglePlayer/MyCKDMothershipFacilityMission.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Entities;\nusing System.Diagnostics;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Entities.WayPoints;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Inventory;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.Game.World.Global;\n\n\nnamespace MinerWars.AppCode.Game.Missions.SinglePlayer\n{\n    class MyCKDMothershipFacilityMission : MyMissionSandboxBase\n    {\n        private enum EntityID // list of IDs used in script\n        {\n            StartLocation = 3499,\n            Detector1 = 4752,\n            Detector2 = 4754,\n            Detector3 = 4757,\n            Detector4 = 4759,\n            Spawn1 = 3918,\n            Spawn2 = 4756,\n            Spawn3 = 3916,\n            Spawn4 = 4761,\n         \n        }\n\n        public override void ValidateIds() // checks if all IDs in enum are loaded correctly\n        {\n            foreach (var value in Enum.GetValues(typeof(EntityID)))\n            {\n                MyScriptWrapper.GetEntity((uint)((value as EntityID?).Value));\n            }\n        }\n\n         private MyEntityDetector m_Detector1;\n        private MyEntityDetector m_Detector2;\n        private MyEntityDetector m_Detector3;\n         private MyEntityDetector m_Detector4;\n\n        public MyCKDMothershipFacilityMission()\n        {\n\n                    RequiredActors = new MyActorEnum[] { MyActorEnum.MADELYN };\n\n\n            ID = MyMissionID.CKD_MOTHERSHIP_FACILITY; /* ID must be added to MyMissions.cs */\n            DebugName = new StringBuilder(\"CKD Mothership Facility\"); // Name of mission\n            Name = MyTextsWrapperEnum.CKD_MOTHERSHIP_FACILITY;\n            Description = MyTextsWrapperEnum.CKD_MOTHERSHIP_FACILITY_Description;\n            MyMwcVector3Int baseSector = new MyMwcVector3Int(1320253, 0, -2846330); // Story sector of the script - i.e. (-2465,0,6541)\n            RequiredMissions = new MyMissionID[] { };\n            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation); // Starting dummy point - must by typecasted to uint and referenced from EntityID enum\n            RequiredActors = new MyActorEnum[] { MyActorEnum.MADELYN };\n\n\n            m_objectives = new List<MyObjective>(); // Creating of list of submissions\n\n\n        }\n\n\n\n\n        public override void Load() // Code in that block will be called on the load of the sector\n        {\n             base.Load();\n\n             m_Detector1 = MyScriptWrapper.GetDetector(MyScriptWrapper.GetEntity((uint)EntityID.Detector1));\n            m_Detector1.OnEntityEnter += Detector1Action;\n            m_Detector1.On();\n\n            m_Detector2 = MyScriptWrapper.GetDetector(MyScriptWrapper.GetEntity((uint)EntityID.Detector2));\n            m_Detector2.OnEntityEnter += Detector2Action;\n            m_Detector2.On();\n\n            m_Detector3 = MyScriptWrapper.GetDetector(MyScriptWrapper.GetEntity((uint)EntityID.Detector3));\n            m_Detector3.OnEntityEnter += Detector3Action;\n            m_Detector3.On();\n\n            m_Detector4 = MyScriptWrapper.GetDetector(MyScriptWrapper.GetEntity((uint)EntityID.Detector4));\n            m_Detector4.OnEntityEnter += Detector4Action;\n            m_Detector4.On();\n\n\n\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.HeavyFight, 3); // Sets music group to be played in the sector - no matter if the mission is running or not\n            MyScriptWrapper.SetPlayerFaction(MyMwcObjectBuilder_FactionEnum.Rainiers);\n\n\n        }\n\n\n        public override void Unload()\n        {\n            base.Unload();\n            if (m_Detector1 != null)\n            {\n                m_Detector1.OnEntityEnter -= Detector1Action;\n            }\n            if (m_Detector2 != null)\n            {\n                m_Detector2.OnEntityEnter -= Detector2Action;\n            } \n            if (m_Detector3 != null)\n            {\n                m_Detector3.OnEntityEnter -= Detector3Action;\n            } \n            if (m_Detector4 != null)\n            {\n                m_Detector4.OnEntityEnter -= Detector4Action;\n            }\n        }\n\n        public void Detector1Action(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (entity == MySession.PlayerShip)\n            {\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Spawn1);\n                m_Detector1.Off();\n            }\n        }\n\n        public void Detector2Action(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (entity == MySession.PlayerShip)\n            {\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Spawn2);\n                m_Detector2.Off();\n            }\n        }\n        public void Detector3Action(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (entity == MySession.PlayerShip)\n            {\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Spawn3);\n                m_Detector3.Off();\n            }\n        }\n        public void Detector4Action(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (entity == MySession.PlayerShip)\n            {\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Spawn4);\n                m_Detector4.Off();\n            }\n        }\n\n\n\n     \n        public override void Update() //Code in that block will be called in each frame\n        {\n            base.Update();\n\n        }\n\n    }\n\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/SinglePlayer/MyChineseCapitalMission.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Entities;\nusing System.Diagnostics;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Entities.WayPoints;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Inventory;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.Game.World.Global;\n\n\nnamespace MinerWars.AppCode.Game.Missions.SinglePlayer\n{\n    class MyChineseCapitalMission : MyMissionSandboxBase\n    {\n        private enum EntityID // list of IDs used in script\n        {\n            StartLocation = 2074,\n         \n        }\n\n        public override void ValidateIds() // checks if all IDs in enum are loaded correctly\n        {\n            foreach (var value in Enum.GetValues(typeof(EntityID)))\n            {\n                MyScriptWrapper.GetEntity((uint)((value as EntityID?).Value));\n            }\n        }\n\n\n\n        public MyChineseCapitalMission()\n        {\n            ID = MyMissionID.CHINESE_CAPITAL; /* ID must be added to MyMissions.cs */\n            DebugName = new StringBuilder(\"New Beijing - Chinese Capital\"); // Name of mission\n            Name = MyTextsWrapperEnum.CHINESE_CAPITAL;\n            Description = MyTextsWrapperEnum.CHINESE_CAPITAL_Description;\n            MyMwcVector3Int baseSector = new MyMwcVector3Int(528217, 0, 7282654); // Story sector of the script - i.e. (-2465,0,6541)\n            RequiredMissions = new MyMissionID[] { };\n            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation); // Starting dummy point - must by typecasted to uint and referenced from EntityID enum\n            RequiredActors = new MyActorEnum[] { MyActorEnum.MADELYN };\n           \n\n            m_objectives = new List<MyObjective>(); // Creating of list of submissions\n\n\n        }\n\n\n\n\n        public override void Load() // Code in that block will be called on the load of the sector\n        {\n            base.Load();\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.HeavyFight, 3); // Sets music group to be played in the sector - no matter if the mission is running or not\n        }\n      \n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/SinglePlayer/MyChineseEscapeMission.cs",
    "content": "﻿#region Using\n\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.HUD;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Entities;\nusing System.Diagnostics;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Entities.WayPoints;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.AppCode.Game.Explosions;\nusing MinerWars.AppCode.Game.Audio.Dialogues;\nusing MinerWars.AppCode.Game.Entities.Prefabs;\nusing MinerWars.Resources;\n\n#endregion\n\nnamespace MinerWars.AppCode.Game.Missions.SinglePlayer\n{\n    class MyChineseEscapeMission : MyMission\n    {\n        readonly float MOTHERSHIP_FULLSPEED = 70;\n        readonly float MOTHERSHIP_SLOWSPEED = 40;\n\n        private MyObjective m_objective01_flyTowardsMadelyn;\n        private MyObjective m_objective02_defendMadelyn;\n        \n        private MyEntity m_madelyn;\n        private MyEntity m_transporter;\n        private int m_activeTower;\n        private int m_towersCount;\n        private int m_switchCounter;\n        private MyEntity[] m_towers = new MyEntity[3];\n        private bool m_madelynDestinationReached;\n        private bool m_transporterDestinationReached;\n        private bool m_moveMadelynFlag;\n        private bool m_reassignBotTargets;\n        private MyEntityDetector m_detectorFirst;\n        private MyEntityDetector m_detectorSecond;\n        private MyEntityDetector m_detectorThird;\n        private float m_motherShipSpeed;\n\n        private float m_assignBotTargetsTimer;\n\n        private List<MySmallShipBot> m_attackerBots = new List<MySmallShipBot>();\n        private List<MySmallShipBot> m_attackerWaitingForPass = new List<MySmallShipBot>();\n        private Vector3 transporterDestination = new Vector3(-1898.427f, 3664.597f, 10353.816f);\n\n        private enum EntityID // list of IDs used in script\n        {\n            Transporter = 248,\n            TransporterShip = 249,\n            Tower1 = 2729,\n            Tower2 = 2732,\n            Tower3 = 9363,\n            TowerDown = 2744,\n            DetectorFirst = 7979,\n            DetectorSecond = 7981,\n            DetectorThird = 8116,\n            StartLocation = 526,\n            O01DefendMadelyn = 533,\n            ExplosionRight1_1 = 7983,\n            ExplosionRight2_1 = 7985,\n            ExplosionRight2_2 = 7984,\n            ExplosionLeft1_1 = 7993,\n            ExplosionLeft2_1 = 7994,\n            ExplosionLeft2_2 = 7995,\n            ExplosionParticleFirstRight = 8115,\n            ExplosionParticleRight1 = 8055,\n            ExplosionParticleRight2 = 8053,\n            ExplosionParticleLeft1 = 8054,\n            ExplosionIn3_1 = 8405,\n            ExplosionIn3_2 = 8404,\n            ExplosionIn3_3 = 8403,\n            ExplosionIn4_1 = 8415,\n            ExplosionIn4_2 = 8414,\n            ExplosionIn4_3 = 8416,\n            ExplosionLarge1 = 9629,\n            ExplosionLarge2 = 9630,\n            ExplosionLarge3 = 9631,\n            SpawnInR = 7986,\n            SpawnInL = 7996,\n            SpawnIn3 = 8402,\n            SpawnIn4 = 8417,    \n            SpawnFrontL = 8003,\n            SpawnFrontR = 8004,\n            SpawnCenterL = 8431,\n            SpawnCenterR = 8428,\n            SpawnLastL = 551,\n            SpawnLastR = 552,\n            SpawnLastAsteroid = 558,\n            SpawnLast1 = 10320,\n            SpawnLast1_2 = 10610,\n            SpawnLast2 = 9825,\n            SpawnLast2_2 = 10615,\n            SpawnLast3 = 10319,\n            SpawnLast3_2 = 10620,\n            SpawnLast4 = 10065,\n\n            //Transporter attack points\n            AttackPoint01 = 8754,\n            AttackPoint02 = 8755,\n            AttackPoint03 = 8756,\n            AttackPoint04 = 8757,\n            AttackPoint05 = 8758,\n            AttackPoint06 = 8759,\n            AttackPoint07 = 8760,\n            AttackPoint08 = 8761,\n            AttackPoint09 = 8762,\n            AttackPoint10 = 8763,\n            AttackPoint11 = 8764,\n        }\n\n        #region Enums\n\n        private List<uint> m_spawnCompanions = new List<uint> {\n            2747, 2748, 2749, 2752, 2751, 2750, 2753\n        };\n\n        private List<EntityID> m_transporterAttackPoints = new List<EntityID> \n        {\n            EntityID.AttackPoint01,EntityID.AttackPoint02,EntityID.AttackPoint03,EntityID.AttackPoint04,EntityID.AttackPoint05,\n            EntityID.AttackPoint06,EntityID.AttackPoint07,EntityID.AttackPoint08,EntityID.AttackPoint09,EntityID.AttackPoint10,\n            EntityID.AttackPoint11\n        };\n\n        public override void ValidateIds() // checks if all IDs in enum are loaded correctly\n        {\n            if (!IsMainSector) return;\n\n            foreach (var value in Enum.GetValues(typeof(EntityID)))\n            {\n                MyScriptWrapper.GetEntity((uint)((value as EntityID?).Value));\n            }\n            \n            foreach (var value in m_spawnCompanions)\n            {\n                MyScriptWrapper.GetEntity(value);\n            }\n        }\n\n        #endregion\n\n        public MyChineseEscapeMission()\n        {\n            ID = MyMissionID.CHINESE_ESCAPE; /* ID must be added to MyMissions.cs */\n            Name = MyTextsWrapperEnum.CHINESE_ESCAPE;\n            Description = MyTextsWrapperEnum.CHINESE_ESCAPE_Description; // \"Defend Madelyn's mothership and escape with stolen cargo\\n\"\n            DebugName = new StringBuilder(\"08d-Chinese escape\");\n            Flags = MyMissionFlags.Story;\n\n            MyMwcVector3Int baseSector = new MyMwcVector3Int(-1919599, 0, 5268734); // Story sector of the script\n\n            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation); // Starting dummy point\n\n            RequiredMissions = new MyMissionID[] { MyMissionID.CHINESE_REFINERY };\n            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.CHINESE_ESCAPE_SPEAK_WITH_MADELYN };\n            RequiredActors = new MyActorEnum[] {MyActorEnum.MADELYN};\n\n            m_objectives = new List<MyObjective>(); // Creating of list of submissions\n\n            m_objective01_flyTowardsMadelyn = new MyObjective( // One member of that list\n                (MyTextsWrapperEnum.CHINESE_ESCAPE_GET_CLOSER_Name),\n                MyMissionID.CHINESE_ESCAPE_GET_CLOSER,\n                (MyTextsWrapperEnum.CHINESE_ESCAPE_GET_CLOSER_Description),\n                null,\n                this,\n                new MyMissionID[] { },\n                new MyMissionLocation(baseSector, (uint)EntityID.O01DefendMadelyn),\n                startDialogId: MyDialogueEnum.CHINESE_ESCAPE_0100_INTRODUCTION\n            ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudMadelynsSapho };            \n            m_objective01_flyTowardsMadelyn.OnMissionLoaded += O01FlyTowardsMadelynLoaded;\n            m_objective01_flyTowardsMadelyn.OnMissionSuccess += O01FlyTowardsMadelynSuccess;\n\n            m_objectives.Add(m_objective01_flyTowardsMadelyn);\n\n                                    \n            m_objective02_defendMadelyn = new MyObjectiveDestroy( \n                (MyTextsWrapperEnum.CHINESE_ESCAPE_DEFEND_SHIP_Name),\n                MyMissionID.CHINESE_ESCAPE_DEFEND_SHIP,\n                (MyTextsWrapperEnum.CHINESE_ESCAPE_DEFEND_SHIP_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.CHINESE_ESCAPE_GET_CLOSER },\n                null,\n                new List<uint> { (uint)EntityID.SpawnLastL, (uint)EntityID.SpawnLastR, (uint)EntityID.SpawnLastAsteroid},\n                true,\n                true\n            ) { SaveOnSuccess = true };            \n            m_objectives.Add(m_objective02_defendMadelyn);\n            m_objective02_defendMadelyn.OnMissionLoaded += new MissionHandler(m_objective02_defendMadelyn_OnMissionLoaded);\n            m_objective02_defendMadelyn.OnMissionCleanUp += new MissionHandler(m_objective02_defendMadelyn_OnMissionCleanUp);\n                                    \n            \n            var objective03_lastDialogue = new MyObjectiveDialog(\n                MyTextsWrapperEnum.CHINESE_ESCAPE_SPEAK_WITH_MADELYN_Name,\n                MyMissionID.CHINESE_ESCAPE_SPEAK_WITH_MADELYN,\n                MyTextsWrapperEnum.CHINESE_ESCAPE_SPEAK_WITH_MADELYN_Description,\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.CHINESE_ESCAPE_DEFEND_SHIP },\n                dialogId: MyDialogueEnum.CHINESE_ESCAPE_1000_LAST_OF_THEM\n                ) { SaveOnSuccess = false };\n            m_objectives.Add(objective03_lastDialogue);\n        }\n\n        void m_objective02_defendMadelyn_OnMissionCleanUp(MyMissionBase sender)\n        {\n            MissionTimer.ClearActions();\n        }\n\n        void m_objective02_defendMadelyn_OnMissionLoaded(MyMissionBase sender)\n        {\n            MissionTimer.RegisterTimerAction(TimeSpan.FromMinutes(2), MadelynDefended, false, MyTexts.DefendMadelyn, false);\n        }\n\n        void MadelynDefended()\n        {\n            m_objective02_defendMadelyn.Success();\n        }\n\n        public override void Load()\n        {\n            \n            if (!IsMainSector) return;\n\n            RemoveFriends();\n\n            MyScriptWrapper.DisableAllGlobalEvents();\n\n            m_attackerBots.Clear();\n\n            m_detectorFirst = MyScriptWrapper.GetDetector((uint)EntityID.DetectorFirst);\n            m_detectorSecond = MyScriptWrapper.GetDetector((uint)EntityID.DetectorSecond);\n            m_detectorThird = MyScriptWrapper.GetDetector((uint)EntityID.DetectorThird);\n            m_detectorFirst.SetSensorDetectRigidBodyTypes(null);\n            m_detectorSecond.SetSensorDetectRigidBodyTypes(null);\n            m_detectorThird.SetSensorDetectRigidBodyTypes(null);\n\n            m_madelyn = MyScriptWrapper.GetEntity(\"Madelyn\");\n            //Because she was hidden in previous mission\n            MyScriptWrapper.UnhideEntity(m_madelyn);\n            m_transporter = MyScriptWrapper.GetEntity((uint)EntityID.Transporter);\n            m_transporter.OnContactEvent += new Action<MyEntity>(m_transporter_OnContactEvent);\n            m_reassignBotTargets = false;\n\n            m_motherShipSpeed = MOTHERSHIP_FULLSPEED;\n\n            MyScriptWrapper.PrepareMotherShipForMove(m_transporter);\n\n            MyScriptWrapper.AddNotification(MyScriptWrapper.CreateNotification(Localization.MyTextsWrapperEnum.SwitchInHUBTurrets, MyGuiManager.GetFontMinerWarsGreen(), 60000, \n                new object[] {\n                    MyGuiManager.GetInput().GetGameControlTextEnum(MyGameControlEnums.ROLL_LEFT),\n                    MyGuiManager.GetInput().GetGameControlTextEnum(MyGameControlEnums.ROLL_RIGHT)\n                }\n            ));\n\n            foreach (var item in m_spawnCompanions)\n            {\n                MyScriptWrapper.ActivateSpawnPoint(item);\n            }\n           \n            var pos = MySession.PlayerShip.WorldMatrix.Translation;\n            MySession.PlayerShip.WorldMatrix = m_transporter.WorldMatrix;\n            Vector3 playerPos = m_transporter.WorldMatrix.Translation - 400 * m_transporter.WorldMatrix.Forward;\n            MyScriptWrapper.Move(MySession.PlayerShip, playerPos);\n            //MyScriptWrapper.EnablePhysics(MySession.PlayerShip.EntityId.Value.NumericValue, false);\n            MyScriptWrapper.HideEntity(MySession.PlayerShip);\n\n            m_towers[0] = MyScriptWrapper.GetEntity((uint)EntityID.Tower1);\n            m_towers[1] = MyScriptWrapper.GetEntity((uint)EntityID.Tower2);\n            m_towers[2] = MyScriptWrapper.GetEntity((uint)EntityID.Tower3);\n\n            MyScriptWrapper.SetEntityPriority(m_towers[0], -1);\n            MyScriptWrapper.SetEntityPriority(m_towers[1], -1);\n            MyScriptWrapper.SetEntityPriority(m_towers[2], -1);\n            MyScriptWrapper.SetEntityPriority(MyScriptWrapper.GetEntity((uint)EntityID.TowerDown), -1);\n\n            MyScriptWrapper.TakeControlOfLargeWeapon(m_towers[m_activeTower]);\n            MyScriptWrapper.ForbideDetaching();\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.Mystery);\n            \n            MyScriptWrapper.SwitchTowerPrevious += MyScriptWrapper_SwitchTowerPrevious;\n            MyScriptWrapper.SwitchTowerNext += MyScriptWrapper_SwitchTowerNext;\n            MyScriptWrapper.EntityDeath += MyScriptWrapper_OnEntityDeath;\n            MyScriptWrapper.OnSpawnpointBotSpawned += BotSpawned;\n\n            m_objective01_flyTowardsMadelyn.OnMissionLoaded += O01FlyTowardsMadelynLoaded;\n            m_objective01_flyTowardsMadelyn.OnMissionSuccess += O01FlyTowardsMadelynSuccess;\n\n            m_madelynDestinationReached = false;\n            m_transporterDestinationReached = false;\n            m_moveMadelynFlag = false;\n           \n            m_towersCount = 3;\n            m_activeTower = 0;\n            m_switchCounter = 0;\n\n            MyScriptWrapper.DrawHealthOfCustomPrefabInLargeWeapon(MyScriptWrapper.GetEntity((uint)EntityID.TransporterShip));\n            MyScriptWrapper.DisableShipBackCamera();\n            m_detectorFirst.OnEntityEnter += DetectorActionFirst;\n            m_detectorFirst.On();\n\n            MyScriptWrapper.OnDialogueFinished += MyScriptWrapper_OnDialogueFinished;\n            base.Load();\n        }\n\n        void m_transporter_OnContactEvent(MyEntity obj)\n        {\n            //Damage all bot which touched our mothership (we have to prevent sticking bots to ms because of physics)\n            if (obj is MySmallShipBot)\n            {\n                obj.DoDamage(0, 5, 0, MyDamageType.Unknown, MyAmmoType.Unknown, m_transporter);\n            }\n        }\n\n\n        public override void Accept()\n        {\n            base.Accept();\n\n            MySession.PlayerShip.RepairToMax();\n\n            MyScriptWrapper.SetFactionRelation(MyMwcObjectBuilder_FactionEnum.Rainiers, MyMwcObjectBuilder_FactionEnum.China, MyFactions.RELATION_BEST);\n        }\n\n        public override void Unload()\n        {\n            if (!IsMainSector) return;\n            MyScriptWrapper.SwitchTowerPrevious -= MyScriptWrapper_SwitchTowerPrevious;\n            MyScriptWrapper.SwitchTowerNext -= MyScriptWrapper_SwitchTowerNext;\n            MyScriptWrapper.EntityDeath -= MyScriptWrapper_OnEntityDeath;\n            MyScriptWrapper.OnSpawnpointBotSpawned -= BotSpawned;\n            MyScriptWrapper.OnDialogueFinished -= MyScriptWrapper_OnDialogueFinished;\n\n            m_attackerBots.Clear();\n            m_detectorFirst = null;\n            m_detectorSecond = null;\n            m_detectorThird = null;\n\n            m_madelyn = null;\n            m_transporter = null;\n\n            m_towers[0] = null;\n            m_towers[1] = null;\n            m_towers[2] = null;\n            \n            m_detectorFirst = null;\n            \n            base.Unload();\n\n            MyScriptWrapper.UnhideEntity(MySession.PlayerShip);\n            MyScriptWrapper.EnableDetaching();\n            MySession.PlayerShip.Activate(true, false);\n\n            MyScriptWrapper.EnableAllGlobalEvents();\n\n            if (MyScriptWrapper.IsMissionFinished(this.ID))\n            {\n                MyScriptWrapper.TravelToMission(MyMissionID.JUNKYARD_RETURN);\n            }\n        }\n\n         public override void Update()\n        {\n            if (!IsMainSector) return;\n\n            base.Update();\n\n            if (m_madelyn != null && m_moveMadelynFlag && !m_madelynDestinationReached) \n            {\n                m_madelynDestinationReached = MoveEntityForward(m_madelyn, 110f, new Vector3(-1294f, 3616f, 10572f), false);\n            }\n            if (!m_transporterDestinationReached)\n            {\n                MoveEntityForward(MySession.PlayerShip, m_motherShipSpeed);\n                m_transporterDestinationReached = MoveEntityForward(m_transporter, m_motherShipSpeed, transporterDestination, true);\n            }\n\n            m_assignBotTargetsTimer += MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS;\n            if (m_assignBotTargetsTimer > 0.25f)\n            {\n                m_assignBotTargetsTimer -= 0.25f;\n                AssignBotTargets();\n                AllowBotManeuvers();\n            }\n        }\n\n         void AssignBotTargets()\n         {\n             MyEntity transporterShip = MyScriptWrapper.TryGetEntity((uint)EntityID.TransporterShip);\n             if (transporterShip != null)\n             {\n                 for (int i = m_attackerBots.Count - 1; i >= 0; i--)\n                 {\n                     var bot = m_attackerBots[i];\n\n                     MyLine line = new MyLine(bot.GetPosition(), transporterShip.GetPosition(), true);\n                     var result = MyEntities.GetIntersectionWithLine(ref line, bot, transporterShip, true, ignoreChilds: true);\n                     if (!result.HasValue)\n                     {\n                         bot.Attack(transporterShip);\n                         bot.SpeedModifier = 0;\n                         m_attackerWaitingForPass.Add(bot);\n\n                         m_attackerBots.RemoveAt(i);\n                     }\n                 }\n             }\n         }\n\n         void AllowBotManeuvers()\n         {\n             \n\n             MyEntity transporterShip = MyScriptWrapper.TryGetEntity((uint)EntityID.TransporterShip);\n             if (transporterShip != null)\n             {\n                 for (int i = m_attackerWaitingForPass.Count - 1; i >= 0; i--)\n                 {\n                     var bot = m_attackerWaitingForPass[i];\n                     \n                     var direction = transporterDestination - transporterShip.GetPosition();\n                     if (direction.LengthSquared() > 0)\n                     {\n                         direction.Normalize();\n                         var d = Vector3.Dot(transporterShip.GetPosition() - m_towers[0].GetPosition(), direction);\n                         var transporterToBot = bot.GetPosition() - transporterShip.GetPosition();\n\n                         if (Vector3.Dot(direction, transporterToBot) < 180)\n                         {\n                             bot.SpeedModifier = 1;\n                             m_attackerWaitingForPass.RemoveAt(i);\n                         }\n                     }\n                 }\n             }\n         }\n\n         void O01FlyTowardsMadelynLoaded(MyMissionBase sender)\n         {\n             //Fly slower on beginning\n             m_motherShipSpeed = 40;\n\n             MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.TensionBeforeAnAction, 3, \"KA02\");\n             MyEntity transporter = MyScriptWrapper.GetEntity((uint)EntityID.Transporter);\n             \n             /*\n             foreach (EntityID attackPointID in m_transporterAttackPoints)\n             {\n                 MyEntity attackPoint = MyScriptWrapper.GetEntity((uint)attackPointID);\n                 MyEntities.Remove(attackPoint);\n                 transporter.AddChild(attackPoint, true);\n             } */\n         }\n\n        void MyScriptWrapper_SwitchTowerPrevious()\n        {\n            m_switchCounter--;\n            m_activeTower = mod(m_switchCounter, m_towersCount);\n            MyScriptWrapper.TakeControlOfLargeWeapon(m_towers[m_activeTower]);       \n        }\n\n         void MyScriptWrapper_SwitchTowerNext()\n        {\n            m_switchCounter++;\n            m_activeTower = mod(m_switchCounter, m_towersCount);\n            MyScriptWrapper.TakeControlOfLargeWeapon(m_towers[m_activeTower]);       \n        }\n\n        void MyScriptWrapper_OnEntityDeath(MyEntity entity, MyEntity killedBy) \n        {\n            if (!(entity is MySmallShipBot))\n            {\n                if (entity == m_madelyn || entity == m_transporter || entity is MyPrefabLargeShip)\n                {\n                    if (entity is MyPrefabLargeShip)\n                        m_madelyn.MarkForClose();\n\n                    MyScriptWrapper.EnableDetaching();\n                    Fail(MyTextsWrapperEnum.Fail_MothershipDestroyed);\n                    m_madelyn = null;\n                }\n            }\n        }\n\n        void BotSpawned(MyEntity spawnpoint, MyEntity bot)\n        {\n            //List<uint> { \n            //    (uint)EntityID.SpawnLastR, \n            //    (uint)EntityID.SpawnLastL, \n            //    (uint)EntityID.SpawnLastAsteroid, \n            //    (uint)EntityID.SpawnCenterL, \n            //    (uint)EntityID.SpawnCenterR }\n\n            var attackerList = new List<uint>\n            {\n                (uint)EntityID.SpawnInR,\n                (uint)EntityID.SpawnInL,\n                (uint)EntityID.SpawnIn3,\n                (uint)EntityID.SpawnIn4,\n                (uint)EntityID.SpawnFrontL,\n                (uint)EntityID.SpawnFrontR,\n                (uint)EntityID.SpawnCenterL,\n                (uint)EntityID.SpawnCenterR,\n                (uint)EntityID.SpawnLastL,\n                (uint)EntityID.SpawnLastR,\n                (uint)EntityID.SpawnLastAsteroid,\n                (uint)EntityID.SpawnLast1,\n                (uint)EntityID.SpawnLast1_2,\n                (uint)EntityID.SpawnLast2,\n                (uint)EntityID.SpawnLast2_2,\n                (uint)EntityID.SpawnLast3,\n                (uint)EntityID.SpawnLast3_2,\n                (uint)EntityID.SpawnLast4,\n            };\n            \n            foreach (var item in attackerList)\n            {\n                if (spawnpoint == MyScriptWrapper.GetEntity(item) && bot != null)\n                {\n                    MyScriptWrapper.SetSleepDistance(bot as MySmallShipBot, 10000);\n                    var botShip = bot as MySmallShipBot;\n                    m_attackerBots.Add(botShip);\n                    //botShip.Attack(MyScriptWrapper.GetEntity((uint)m_transporterAttackPoints[MyMwcUtils.GetRandomInt(m_transporterAttackPoints.Count)]));\n                }\n            }\n\n            foreach (var item in m_spawnCompanions)\n            {\n                if (spawnpoint == MyScriptWrapper.GetEntity(item))\n                {\n                    MySmallShipBot botship = bot as MySmallShipBot;\n                    //botship.SlowDown = 0.583f;\n                    botship.SpeedModifier = 0.583f * (MOTHERSHIP_SLOWSPEED / MOTHERSHIP_FULLSPEED);\n\n                    botship.IsDestructible = m_reassignBotTargets;\n                    if (m_reassignBotTargets)\n                        bot.Kill(m_towers[MyMwcUtils.GetRandomInt(m_towers.Length)]);\n                }\n            }\n        }\n\n        private void MyScriptWrapper_OnDialogueFinished(MyDialogueEnum dialogue, bool interrupted)\n        {\n            if (dialogue == MyDialogueEnum.CHINESE_ESCAPE_0100_INTRODUCTION)\n            {\n                MyScriptWrapper.PlayDialogue(MyDialogueEnum.CHINESE_ESCAPE_0200_IT_IS_TRAP);\n            }\n            else\n            if (dialogue == MyDialogueEnum.CHINESE_ESCAPE_0200_IT_IS_TRAP)\n            {\n                MyScriptWrapper.SetFactionRelation(MyMwcObjectBuilder_FactionEnum.Rainiers, MyMwcObjectBuilder_FactionEnum.China, MyFactions.RELATION_WORST);\n                MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.HeavyFight, 3, \"MM01\");\n\n                m_motherShipSpeed = MOTHERSHIP_FULLSPEED;\n\n                foreach (var spawn in m_spawnCompanions)\n                {\n                    MyScriptWrapper.ChangeFaction(spawn, MyMwcObjectBuilder_FactionEnum.China);\n                    foreach (var bot in MyScriptWrapper.GetSpawnPointBots(spawn))\n                    {\n                        if (bot.Ship != null)\n                        {\n                            MyScriptWrapper.ChangeFaction(bot.Ship.EntityId.Value.NumericValue, MyMwcObjectBuilder_FactionEnum.China);\n                            bot.Ship.SpeedModifier = 1f;\n                            MyScriptWrapper.SetEntityDestructible(bot.Ship, true);\n\n                            m_attackerBots.Add(bot.Ship);\n                        }\n                    }\n                }\n\n\n                m_detectorFirst.Off();\n                m_detectorFirst.OnEntityEnter -= DetectorActionFirst;\n                m_detectorSecond.OnEntityEnter += DetectorActionSecond;\n                m_detectorSecond.On();\n\n                m_reassignBotTargets = true;\n                //AssignTargetsToBots();\n\n                MyScriptWrapper.AddNotification(MyScriptWrapper.CreateNotification(\n                                    MyTextsWrapperEnum.WatchMothershipHealth,\n                                    MyHudConstants.ENEMY_FONT,\n                                    8000,\n                                    null));\n            }\n            else if (dialogue == MyDialogueEnum.CHINESE_ESCAPE_0300_ON_THIRD)\n            {\n                MyScriptWrapper.PlayDialogue(MyDialogueEnum.CHINESE_ESCAPE_0400_ON_NINE); \n            }\n        }\n\n        private void DetectorActionFirst(MyEntityDetector sender, MyEntity entity, int meetCriterias) \n        {\n            if (entity == m_transporter)\n            {\n            }\n        }\n        \n        //private void AssignTargetsToBots()\n        //{\n        //    foreach (var spawn in m_spawnCompanions)\n        //    {\n        //        MyScriptWrapper.GetEntity(spawn).Faction = MyMwcObjectBuilder_FactionEnum.China;\n        //        foreach (var bot in MyScriptWrapper.GetSpawnPointBots(spawn))\n        //        {\n        //            if (bot.Ship != null)\n        //            {\n        //                bot.Ship.Attack(MyScriptWrapper.GetEntity((uint)m_transporterAttackPoints[MyMwcUtils.GetRandomInt(m_transporterAttackPoints.Count)]));\n        //            }\n        //        }\n        //    }\n\n        //    if (m_reassignBotTargets)\n        //    {\n        //        MissionTimer.RegisterTimerAction(3000, AssignTargetsToBots, false);\n        //    }\n        //}\n\n         private void DetectorActionSecond(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n         {\n             if (entity == m_transporter)\n             {\n                 MissionTimer.RegisterTimerAction(8000, AsteroidInsideExplosionR2, false);\n                 MissionTimer.RegisterTimerAction(12000, AsteroidInsideExplosionL1, false);\n                 MissionTimer.RegisterTimerAction(20000, WatchFront, false);\n                 MissionTimer.RegisterTimerAction(15000, AsteroidInsideExplosion3, false);\n                 MissionTimer.RegisterTimerAction(18000, AsteroidInsideExplosion4, false);\n                 MyScriptWrapper.AddExplosion(MyScriptWrapper.GetEntity((uint)EntityID.ExplosionRight1_1), MyExplosionTypeEnum.BOMB_EXPLOSION, 100f, 500f);\n                 m_detectorSecond.Off();\n                 m_detectorSecond.OnEntityEnter -= DetectorActionSecond;\n                 m_detectorThird.OnEntityEnter += DetectorActionThird;\n                 m_detectorThird.On();\n             }\n         }  \n\n         private void DetectorActionThird(MyEntityDetector sender, MyEntity entity, int meetCriterias) \n         {\n\n             MyScriptWrapper.SetParticleEffect(MyScriptWrapper.GetEntity((uint)EntityID.ExplosionLarge3), true);\n             MyScriptWrapper.PlaySound3D(MySession.PlayerShip, MySoundCuesEnum.SfxShipLargeExplosion);\n             if (entity == m_transporter)\n             {\n                 m_moveMadelynFlag = true;\n                 MyScriptWrapper.SetParticleEffect(MyScriptWrapper.GetEntity((uint)EntityID.ExplosionParticleFirstRight), true);\n                 MyScriptWrapper.PlaySound3D(MySession.PlayerShip, MySoundCuesEnum.SfxShipLargeExplosion);\n                 MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnCenterL);\n                 MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnCenterR);\n                 MyScriptWrapper.PlayDialogue(MyDialogueEnum.CHINESE_ESCAPE_0700_ON_THE_RIGHT);\n\n                 MissionTimer.RegisterTimerAction(20000, Last1, false);\n                 m_detectorThird.Off();\n                 m_detectorThird.OnEntityEnter -= DetectorActionThird;\n             }\n         }\n\n         void Last1()\n         {\n             MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnLast1);\n             MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnLast1_2);\n             MissionTimer.RegisterTimerAction(15000, Last2, false);\n         }\n\n         void Last2()\n         {\n             MissionTimer.RegisterTimerAction(20000, Last3, false);\n             MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnLast2);\n             MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnLast2_2);\n         }\n\n         void Last3()\n         {\n             MissionTimer.RegisterTimerAction(15000, Last4, false);\n             MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnLast3);\n             MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnLast3_2);\n         }\n\n         void Last4()\n         {\n             MissionTimer.RegisterTimerAction(5000, MadelynInSight, false);\n             MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnLast4);\n         }\n\n         void MadelynInSight()\n         {\n             MyScriptWrapper.PlayDialogue(MyDialogueEnum.CHINESE_ESCAPE_0800_MADELYN_IN_SIGHT);\n         }\n\n        void AsteroidInsideExplosionR2() \n        {\n             MyScriptWrapper.AddExplosion(MyScriptWrapper.GetEntity((uint)EntityID.ExplosionRight2_1), MyExplosionTypeEnum.BOMB_EXPLOSION, 100f, 500f);\n             MyScriptWrapper.AddExplosion(MyScriptWrapper.GetEntity((uint)EntityID.ExplosionRight2_2), MyExplosionTypeEnum.BOMB_EXPLOSION, 100f, 500f);\n             MyScriptWrapper.PlayDialogue(MyDialogueEnum.CHINESE_ESCAPE_0300_ON_THIRD); \n             MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnInR);\n        }\n\n        void AsteroidInsideExplosionL1() \n        {\n             MyScriptWrapper.AddExplosion(MyScriptWrapper.GetEntity((uint)EntityID.ExplosionLeft1_1), MyExplosionTypeEnum.BOMB_EXPLOSION, 100f, 500f);\n             MissionTimer.RegisterTimerAction(1000, AsteroidInsideExplosionL2, false);\n        }\n\n        void AsteroidInsideExplosionL2()\n        {\n             MyScriptWrapper.AddExplosion(MyScriptWrapper.GetEntity((uint)EntityID.ExplosionLeft2_1), MyExplosionTypeEnum.BOMB_EXPLOSION, 100f, 500f);\n             MyScriptWrapper.AddExplosion(MyScriptWrapper.GetEntity((uint)EntityID.ExplosionLeft2_2), MyExplosionTypeEnum.BOMB_EXPLOSION, 100f, 500f);\n             MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnInL);\n        }\n\n        void AsteroidInsideExplosion3()\n        {\n            MyScriptWrapper.SetParticleEffect(MyScriptWrapper.GetEntity((uint)EntityID.ExplosionLarge1), true);\n            MyScriptWrapper.PlaySound3D(MySession.PlayerShip, MySoundCuesEnum.SfxShipLargeExplosion);\n            MyScriptWrapper.AddExplosion(MyScriptWrapper.GetEntity((uint)EntityID.ExplosionIn3_1), MyExplosionTypeEnum.BOMB_EXPLOSION, 100f, 500f);\n            MyScriptWrapper.AddExplosion(MyScriptWrapper.GetEntity((uint)EntityID.ExplosionIn3_2), MyExplosionTypeEnum.BOMB_EXPLOSION, 100f, 500f);\n            MissionTimer.RegisterTimerAction(1000, AsteroidInsideExplosion3_2, false);\n        }\n\n        void AsteroidInsideExplosion3_2()\n        {\n            MyScriptWrapper.AddExplosion(MyScriptWrapper.GetEntity((uint)EntityID.ExplosionIn3_3), MyExplosionTypeEnum.BOMB_EXPLOSION, 100f, 500f);\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnIn3);\n        }\n\n        void AsteroidInsideExplosion4()\n        {\n            MyScriptWrapper.AddExplosion(MyScriptWrapper.GetEntity((uint)EntityID.ExplosionIn4_1), MyExplosionTypeEnum.BOMB_EXPLOSION, 100f, 500f);\n            MyScriptWrapper.AddExplosion(MyScriptWrapper.GetEntity((uint)EntityID.ExplosionIn4_2), MyExplosionTypeEnum.BOMB_EXPLOSION, 100f, 500f);\n            MyScriptWrapper.SetParticleEffect(MyScriptWrapper.GetEntity((uint)EntityID.ExplosionLarge2), true);\n            MyScriptWrapper.PlaySound3D(MySession.PlayerShip, MySoundCuesEnum.SfxShipLargeExplosion);\n            MissionTimer.RegisterTimerAction(1000, AsteroidInsideExplosion4_2, false);\n        }\n\n        void AsteroidInsideExplosion4_2()\n        {\n            MyScriptWrapper.AddExplosion(MyScriptWrapper.GetEntity((uint)EntityID.ExplosionIn4_3), MyExplosionTypeEnum.BOMB_EXPLOSION, 100f, 500f);\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnIn4);\n        }\n\n        void WatchFront() \n        {\n            MyScriptWrapper.PlayDialogue(MyDialogueEnum.CHINESE_ESCAPE_0600_WATCH_FRONT);\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnFrontL);\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnFrontR);\n        }\n\n        void O01FlyTowardsMadelynSuccess(MyMissionBase sender)\n        {\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.HeavyFight, 3, \"KA03\");\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnLastAsteroid);\n            MyScriptWrapper.PlayDialogue(MyDialogueEnum.CHINESE_ESCAPE_0900_KILL_THOSE_BASTARDS);\n            MissionTimer.RegisterTimerAction(15000, ExplosionLastAsteroid1, false);\n            MyScriptWrapper.SetParticleEffect(MyScriptWrapper.GetEntity((uint)EntityID.ExplosionParticleLeft1), true);\n            MyScriptWrapper.PlaySound3D(MySession.PlayerShip, MySoundCuesEnum.SfxShipLargeExplosion);\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnLastL);\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnLastR);\n        }\n\n        void ExplosionLastAsteroid1() \n        {\n            MissionTimer.RegisterTimerAction(5000, ExplosionLastAsteroid2, false);\n            MyScriptWrapper.SetParticleEffect(MyScriptWrapper.GetEntity((uint)EntityID.ExplosionParticleRight1), true);\n            MyScriptWrapper.PlaySound3D(MySession.PlayerShip, MySoundCuesEnum.SfxShipLargeExplosion);\n        }\n\n        void ExplosionLastAsteroid2() \n        {\n            MyScriptWrapper.SetParticleEffect(MyScriptWrapper.GetEntity((uint)EntityID.ExplosionParticleRight2), true);\n            MyScriptWrapper.PlaySound3D(MySession.PlayerShip, MySoundCuesEnum.SfxShipLargeExplosion);\n        }\n\n        bool MoveEntityForward(MyEntity entity, float speed, Vector3 destination, bool updateVelocity)\n        {\n            float SlowDownRadius = 200;\n            float StopRadius = 10;\n\n           // speed *= 10;\n\n            Vector3 velocity = speed * entity.WorldMatrix.Forward; // Speed in direction\n\n            if (Vector3.DistanceSquared(destination, entity.GetPosition()) < SlowDownRadius * SlowDownRadius)\n            {\n                velocity = entity.Physics.LinearVelocity * 0.995f;\n            }\n\n            entity.Physics.Clear();\n\n            if (Vector3.DistanceSquared(destination, entity.GetPosition()) > StopRadius * StopRadius)\n            {\n                Vector3 newPos = entity.GetPosition() + velocity * MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS;\n                //entity.SetPosition(newPos); // recalculate position\n                if (updateVelocity)\n                {\n                    MyScriptWrapper.MoveWithVelocity(entity, newPos, velocity);\n                    // When at target set velocity to zero\n                    if (Vector3.DistanceSquared(destination, entity.GetPosition()) > StopRadius * StopRadius)\n                    {\n                        MyScriptWrapper.MoveWithVelocity(entity, entity.GetPosition(), Vector3.Zero);\n                    }\n                }\n                else\n                {\n                    MyScriptWrapper.Move(entity, newPos);\n                }\n                return false;\n            }\n            return true;\n        }\n        \n        int mod(int x, int m)\n        {\n            return (x % m + m) % m;\n        }\n\n        void MoveEntityForward(MyEntity entity, float speed)\n        {\n            Vector3 velocity = speed * entity.WorldMatrix.Forward; // Speed in direction\n            MyScriptWrapper.Move(entity, entity.GetPosition() + velocity * MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS);\n        }\n\n        public override void Success()\n        {\n            base.Success();\n\n            m_reassignBotTargets = false;\n  \n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/SinglePlayer/MyChineseRefineryMission.cs",
    "content": "﻿#region Using\n\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Entities;\nusing System.Diagnostics;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Entities.WayPoints;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Audio.Dialogues;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.Resources;\n\n#endregion\n\nnamespace MinerWars.AppCode.Game.Missions.SinglePlayer\n{\n    class MyChineseRefineryMission : MyMission\n    {\n        #region Members\n\n        private MyObjective m_objective01_GetCloserToAsteroid;\n        private MyObjective m_objective02_GetInside;\n        private MyObjective m_objective03_FindSecretRoom;\n        private MyObjectiveDialog m_objective03_D_FindSecterRoom;\n        private MyObjective m_objective04_SetVirus;\n        private MyUseObjective m_objective05_DeactivateBomb;\n        private MyObjective m_objective06_GetToFirstTunnel;\n        private MyObjective m_objective07_PastFirstTunnel;\n        private MyObjective m_objective08_SetBugInComputer;\n        private MyObjective m_objective09_GetToSecondTunnel;\n        private MyObjective m_objective10_PastSecondTunnel;\n        private MyObjective m_objective11_SneakInsideTheStation;\n        private MyObjective m_objective12_GetToOldPath;\n        private MyObjective m_objective13_HackRefineryComputer;\n        private MyObjective m_objective14_GetOutOfTheStation;\n        private MyObjective m_objective15_LandInsideTheTransporter;\n\n        private MyEntityDetector m_detector_spawns1;\n        private MyEntityDetector m_detector_spawns2;\n        private MyEntityDetector m_detector_spawns3;\n        private MyEntityDetector m_detector_spawns4;\n        private MyEntityDetector m_detector_spawns5;\n        private MyEntityDetector m_detector_spawns6;\n        private MyEntityDetector m_detector_spawns7;\n        private MyEntityDetector m_detector_spawns8;\n        private MyEntityDetector m_detector_spawns9;\n        private MyEntityDetector m_detector_spawns10;\n        private MyEntityDetector m_detector_spawns11;\n        private MyEntityDetector m_detector_spawns12;\n        private MyEntityDetector m_detector_spawns13;\n        private MyEntityDetector m_detector_spawns14;\n        private MyEntityDetector m_detector_spawns15;\n        private MyEntityDetector m_detector_spawns16;\n        private MyEntityDetector m_detector_spawns17;\n        private MyEntityDetector m_detector_spawns18;\n        private MyEntityDetector m_detector_spawns19;\n        private MyEntityDetector m_detector_spawns20;\n        private MyEntityDetector m_detector_spawns21;\n        private MyEntityDetector m_detector_spawns22;\n        private MyEntityDetector m_detector_spawns23;\n        private MyEntityDetector m_detector_spawns24;\n        private MyEntityDetector m_detector_spawns25;\n        \n        private MyEntity m_transporter;\n        private MyEntity m_HUBRefineryComputer;\n        private MyEntity m_HUBSecretRoomComputer;\n        private MyEntity m_HUBSetBugComputer;\n        private MyEntity m_particleTransporter1;\n        private MyEntity m_particleTransporter2;\n        private MyEntity m_particleTransporter3;\n\n        private bool m_transporterstop;\n\n        #endregion\n\n        #region Enum\n\n        private enum EntityID // list of IDs used in script\n        {\n            StartLocation = 1432,\n            O01GetCloserToAsterid = 886,\n            O02GetInside = 7775,\n            O03FindSecretRoom = 9645,\n            O05Bomb = 7566,\n            O06GetToFirstTunnel = 7746,\n            O07PastFirstTunnel = 7747,\n            O09GetToSecondTunnel = 7748,\n            O10PastSecondTunnel = 885,\n            O11SneakToStation = 883,\n            O12GetOldPath = 882,\n            O14GetOutOfTheStation = 2842,\n            O15LandIn = 8900,\n            Transporter = 2845,\n            MoveTransporterDummy = 878,\n            NuclearHeadDummy = 11784,\n            HUBSetBugComputer = 16694,\n            HUBRefineryComputer = 19441,\n            HUBSecretRoomComputer = 7570,\n            SPStart = 8125,\n            SP1 = 8134,\n            SP2 = 8135,\n            SP3 = 8136,\n            SP4 = 8137,\n            SP5_1 = 8138,\n            SP5_2 = 19368,\n            SP6_1 = 8139,\n            SP6_2 = 8140,\n            SP7 = 8142,\n            SPReachTunnel1 = 8149,\n            SP8 = 8148,\n            SP9 = 8146,\n            SP10 = 8144,\n            SPPastTunnel1_1 = 8151,\n            SPPastTunnel1_2 = 8152,\n            SPPastTunnel1_3 = 8153,\n            SP11_1 = 8154,\n            SP11_2 = 8155,\n            SP11_3 = 8156,\n            SP12_1 = 8157,\n            SP12_2 = 8158,\n            SP13 = 8160,\n            SPReachTunnel2 = 8161,\n            SP14 = 8163,\n            SP15 = 8164,\n            SP16 = 8165,\n            SP17 = 4399,\n            SP18_1 = 19423,\n            SP18_2 = 19438,\n            SP18_3 = 4400,\n            SP19 = 4401,\n            SP20 = 19431,\n            SP21_1 = 19435,\n            SP21_2 = 19440,\n            SPBackdoor = 8904,\n            SP22_1 = 19445,\n            SP22_2 = 4398,\n            SP23 = 19448,\n            SP24 = 19451,\n            SP25 = 19420,\n            DetectorSP1 = 19283,\n            DetectorSP2 = 19360,\n            DetectorSP3 = 19362,\n            DetectorSP4 = 19364,\n            DetectorSP5 = 19366,\n            DetectorSP6 = 19369,\n            DetectorSP7 = 19393,\n            DetectorSP8 = 19395,\n            DetectorSP9 = 19397,\n            DetectorSP10 = 19399,\n            DetectorSP11 = 19405,\n            DetectorSP12 = 19407,\n            DetectorSP13 = 19409,\n            DetectorSP14 = 19411,\n            DetectorSP15 = 19413,\n            DetectorSP16 = 19415,\n            DetectorSP17 = 19421,\n            DetectorSP18 = 19424,\n            DetectorSP19 = 19426,\n            DetectorSP20 = 19428,\n            DetectorSP21 = 19436, \n            DetectorSP22 = 19446,\n            DetectorSP23 = 19449,\n            DetectorSP24 = 19452,     \n            DetectorSP25 = 20750,\n            TransporterParticle1 = 21397,\n            TransporterParticle2 = 21396,\n            TransporterParticle3 = 5147,\n            Container1 = 6787,\n        }\n\n        private List<uint> m_SPPastTunnel2 = new List<uint>\n        {\n            4393, 4390, 4388, 19419, 4395, 4397\n        };\n\n        public override void ValidateIds() // checks if all IDs in enum are loaded correctly\n        {\n            if (!IsMainSector)\n            {\n                return;\n            }\n\n            foreach (var value in Enum.GetValues(typeof(EntityID)))\n            {\n                MyScriptWrapper.GetEntity((uint)((value as EntityID?).Value));\n            }\n            foreach (var item in m_SPPastTunnel2)\n            {\n                MyScriptWrapper.GetEntity(item);\n            }\n        }\n\n        #endregion\n\n        public MyChineseRefineryMission()\n        {\n            ID = MyMissionID.CHINESE_REFINERY; /* ID must be added to MyMissions.cs */\n            Name = MyTextsWrapperEnum.CHINESE_REFINERY;\n            Description = MyTextsWrapperEnum.CHINESE_REFINERY_Description; // \"Sneak throught the Chinese Refinery station and hack their system\\n\"\n            DebugName = new StringBuilder(\"08c-Chinese refinery of Jingzhou\"); // Name of mission\n            Flags = MyMissionFlags.Story;\n\n            MyMwcVector3Int baseSector = new MyMwcVector3Int(-2716080, 0, 4951053); // Story sector of the script - i.e. (-2465,0,6541)\n\n            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation); // Starting dummy point - must by typecasted to uint and referenced from EntityID enum\n\n            RequiredMissions = new MyMissionID[] { MyMissionID.CHINESE_TRANSPORT }; // IDs of missions required to make this mission available\n            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.CHINESE_REFINERY_15_LAND_INSIDE_THE_TRANSPORTER };\n            RequiredActors = new MyActorEnum[] { MyActorEnum.TARJA };\n\n            m_objectives = new List<MyObjective>(); // Creating of list of submissions\n\n            m_objective01_GetCloserToAsteroid = new MyObjective(\n              (MyTextsWrapperEnum.CHINESE_REFINERY_01_GET_CLOSER_Name),\n              MyMissionID.CHINESE_REFINERY_01_GET_CLOSER,\n              (MyTextsWrapperEnum.CHINESE_REFINERY_01_GET_CLOSER_Description),\n              null,\n              this,\n              new MyMissionID[] { },\n              new MyMissionLocation(baseSector, (uint)EntityID.O01GetCloserToAsterid),\n              startDialogId: MyDialogueEnum.CHINESE_REFINERY_0100_GO_CLOSER\n            ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudBackDoor };\n            m_objectives.Add(m_objective01_GetCloserToAsteroid);\n\n            m_objective02_GetInside = new MyObjective(\n              (MyTextsWrapperEnum.CHINESE_REFINERY_02_GET_IN_Name),\n              MyMissionID.CHINESE_REFINERY_02_GET_IN,\n              (MyTextsWrapperEnum.CHINESE_REFINERY_02_GET_IN_Description),\n              null,\n              this,\n              new MyMissionID[] { MyMissionID.CHINESE_REFINERY_01_GET_CLOSER },\n              new MyMissionLocation(baseSector, (uint)EntityID.O02GetInside),\n              startDialogId: MyDialogueEnum.CHINESE_REFINERY_0150_GET_INSIDE\n          ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.Nothing };\n            m_objectives.Add(m_objective02_GetInside);\n\n            m_objective03_FindSecretRoom = new MyObjective(\n              (MyTextsWrapperEnum.CHINESE_REFINERY_03_FIND_SECRET_ROOM_Name),\n              MyMissionID.CHINESE_REFINERY_03_FIND_SECRET_ROOM,\n              (MyTextsWrapperEnum.CHINESE_REFINERY_03_FIND_SECRET_ROOM_Description),\n              null,\n              this,\n              new MyMissionID[] { MyMissionID.CHINESE_REFINERY_02_GET_IN },\n              new MyMissionLocation(baseSector, (uint)EntityID.O03FindSecretRoom)\n          ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudResearchRoom };\n            m_objectives.Add(m_objective03_FindSecretRoom);\n\n            m_objective03_D_FindSecterRoom = new MyObjectiveDialog(\n                (MyTextsWrapperEnum.CHINESE_REFINERY_03_D_FIND_SECRET_ROOM_Name),\n                MyMissionID.CHINESE_REFINERY_03_D_FIND_SECRET_ROOM,\n                (MyTextsWrapperEnum.CHINESE_REFINERY_03_D_FIND_SECRET_ROOM_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.CHINESE_REFINERY_03_FIND_SECRET_ROOM },\n                dialogId: MyDialogueEnum.CHINESE_REFINERY_0200_LABORATORY\n                ) { SaveOnSuccess = false };\n            m_objectives.Add(m_objective03_D_FindSecterRoom);\n\n            m_objective04_SetVirus = new MyObjective(\n              (MyTextsWrapperEnum.CHINESE_REFINERY_04_SET_VIRUS_Name),\n              MyMissionID.CHINESE_REFINERY_04_SET_VIRUS,\n              (MyTextsWrapperEnum.CHINESE_REFINERY_04_SET_VIRUS_Description),\n              null,\n              this,\n              new MyMissionID[] { MyMissionID.CHINESE_REFINERY_03_D_FIND_SECRET_ROOM },\n              null,\n              startDialogId: MyDialogueEnum.CHINESE_REFINERY_0300_DEACTIVATE_BOMB\n          ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudHub };\n            m_objective04_SetVirus.MissionEntityIDs.Add((uint)EntityID.HUBSecretRoomComputer);\n            m_objectives.Add(m_objective04_SetVirus); \n            \n            m_objective05_DeactivateBomb = new MyUseObjective(\n                (MyTextsWrapperEnum.CHINESE_REFINERY_05_DEACTIVATE_BOMB_Name),\n                MyMissionID.CHINESE_REFINERY_05_DEACTIVATE_BOMB,\n                (MyTextsWrapperEnum.CHINESE_REFINERY_05_DEACTIVATE_BOMB_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.CHINESE_REFINERY_04_SET_VIRUS },\n                new MyMissionLocation(baseSector, (uint)EntityID.NuclearHeadDummy),\n                MyTextsWrapperEnum.PressToDeactivateNuclearHead,\n                MyTextsWrapperEnum.NuclearHead,\n                MyTextsWrapperEnum.DeactivatingInProgress,\n                5000,\n                MyUseObjectiveType.Repairing\n            ) { SaveOnSuccess = false };\n            m_objectives.Add(m_objective05_DeactivateBomb);\n\n            m_objective06_GetToFirstTunnel = new MyObjective(\n              (MyTextsWrapperEnum.CHINESE_REFINERY_06_GET_TO_FIRST_TUNNEL_Name),\n              MyMissionID.CHINESE_REFINERY_06_GET_TO_FIRST_TUNNEL,\n              (MyTextsWrapperEnum.CHINESE_REFINERY_06_GET_TO_FIRST_TUNNEL_Description),\n              null,\n              this,\n              new MyMissionID[] { MyMissionID.CHINESE_REFINERY_05_DEACTIVATE_BOMB },\n              new MyMissionLocation(baseSector, (uint)EntityID.O06GetToFirstTunnel),\n              startDialogId: MyDialogueEnum.CHINESE_REFINERY_0400_GO_TO_SECOND_ASTEROID\n          ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudTunnel };\n            m_objectives.Add(m_objective06_GetToFirstTunnel);\n\n            m_objective07_PastFirstTunnel = new MyObjective(\n              (MyTextsWrapperEnum.CHINESE_REFINERY_07_PAST_FIRST_TUNNEL_Name),\n              MyMissionID.CHINESE_REFINERY_07_PAST_FIRST_TUNNEL,\n              (MyTextsWrapperEnum.CHINESE_REFINERY_07_PAST_FIRST_TUNNEL_Description),\n              null,\n              this,\n              new MyMissionID[] { MyMissionID.CHINESE_REFINERY_06_GET_TO_FIRST_TUNNEL },\n              new MyMissionLocation(baseSector, (uint)EntityID.O07PastFirstTunnel)\n          ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudEnd };\n            m_objectives.Add(m_objective07_PastFirstTunnel);\n\n            m_objective08_SetBugInComputer = new MyObjective(\n              (MyTextsWrapperEnum.CHINESE_REFINERY_08_SET_BUG_IN_COMPUTER_Name),\n              MyMissionID.CHINESE_REFINERY_08_SET_BUG_IN_COMPUTER,\n              (MyTextsWrapperEnum.CHINESE_REFINERY_08_SET_BUG_IN_COMPUTER_Description),\n              null,\n              this,\n              new MyMissionID[] { MyMissionID.CHINESE_REFINERY_07_PAST_FIRST_TUNNEL },\n              null,\n              startDialogId: MyDialogueEnum.CHINESE_REFINERY_0500_FIND_THE_COMPUTER\n          ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudHub };\n            m_objective08_SetBugInComputer.MissionEntityIDs.Add((uint)EntityID.HUBSetBugComputer);\n            m_objectives.Add(m_objective08_SetBugInComputer);\n\n            m_objective09_GetToSecondTunnel = new MyObjective(\n              (MyTextsWrapperEnum.CHINESE_REFINERY_09_GET_TO_SECOND_TUNNEL_Name),\n              MyMissionID.CHINESE_REFINERY_09_GET_TO_SECOND_TUNNEL,\n              (MyTextsWrapperEnum.CHINESE_REFINERY_09_GET_TO_SECOND_TUNNEL_Description),\n              null,\n              this,\n              new MyMissionID[] { MyMissionID.CHINESE_REFINERY_08_SET_BUG_IN_COMPUTER },\n              new MyMissionLocation(baseSector, (uint)EntityID.O09GetToSecondTunnel),\n              startDialogId: MyDialogueEnum.CHINESE_REFINERY_0600_GO_TO_THIRD_ASTEROID\n          ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudTunnel };\n            m_objectives.Add(m_objective09_GetToSecondTunnel);\n\n            m_objective10_PastSecondTunnel = new MyObjective(\n              (MyTextsWrapperEnum.CHINESE_REFINERY_10_PAST_SECOND_TUNNEL_Name),\n              MyMissionID.CHINESE_REFINERY_10_PAST_SECOND_TUNNEL,\n              (MyTextsWrapperEnum.CHINESE_REFINERY_10_PAST_SECOND_TUNNEL_Description),\n              null,\n              this,\n              new MyMissionID[] { MyMissionID.CHINESE_REFINERY_09_GET_TO_SECOND_TUNNEL },\n              new MyMissionLocation(baseSector, (uint)EntityID.O10PastSecondTunnel)\n          ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudEnd };\n            m_objectives.Add(m_objective10_PastSecondTunnel); \n\n            m_objective11_SneakInsideTheStation = new MyObjective( // One member of that list - its type defines the type of submission - MySubmission means fly to the dummypoint to success. Here it is var so you cannot call methods on it\n                (MyTextsWrapperEnum.CHINESE_REFINERY_11_SNEAK_INSIDE_THE_STATION_Name), // Name of the submission\n                MyMissionID.CHINESE_REFINERY_11_SNEAK_INSIDE_THE_STATION, // ID of the submission - must be added to MyMissions.cs\n                (MyTextsWrapperEnum.CHINESE_REFINERY_11_SNEAK_INSIDE_THE_STATION_Description), // Description of the submission\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.CHINESE_REFINERY_10_PAST_SECOND_TUNNEL }, // ID of submissions required to make this submission available - it is clear so this submission is the starting submission\n                new MyMissionLocation(baseSector, (uint)EntityID.O11SneakToStation),\n                startDialogId: MyDialogueEnum.CHINESE_REFINERY_0700_SNEAK_INSIDE_THE_STATION\n            ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudBackDoor }; // False means do not save game in that checkpoint\n            m_objectives.Add(m_objective11_SneakInsideTheStation); // Adding this submission to the list of submissions of current mission\n\n             m_objective12_GetToOldPath = new MyObjective( // One member of that list - its type defines the type of submission - MySubmission means fly to the dummypoint to success. Here it is var so you cannot call methods on it\n             (MyTextsWrapperEnum.CHINESE_REFINERY_12_GET_TO_OLD_PATH_Name), // Name of the submission\n             MyMissionID.CHINESE_REFINERY_12_GET_TO_OLD_PATH, // ID of the submission - must be added to MyMissions.cs\n             (MyTextsWrapperEnum.CHINESE_REFINERY_12_GET_TO_OLD_PATH_Description), // Description of the submission\n             null,\n             this,\n             new MyMissionID[] { MyMissionID.CHINESE_REFINERY_11_SNEAK_INSIDE_THE_STATION }, // ID of submissions required to make this submission available - it is clear so this submission is the starting submission\n             new MyMissionLocation(baseSector, (uint)EntityID.O12GetOldPath),\n             startDialogId: MyDialogueEnum.CHINESE_REFINERY_0800_FIND_THE_OLD_PATH\n         ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.Nothing }; // False means do not save game in that checkpoint\n            m_objectives.Add(m_objective12_GetToOldPath); // Adding this submission to the list of submissions of current mission\n\n            m_objective13_HackRefineryComputer = new MyObjective( // Var is used to call functions on that member\n                (MyTextsWrapperEnum.CHINESE_REFINERY_13_HACK_REFINARY_COMPUTER_Name),\n                MyMissionID.CHINESE_REFINERY_13_HACK_REFINARY_COMPUTER,\n                (MyTextsWrapperEnum.CHINESE_REFINERY_13_HACK_REFINARY_COMPUTER_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.CHINESE_REFINERY_12_GET_TO_OLD_PATH },\n                null,\n                startDialogId:MyDialogueEnum.CHINESE_REFINERY_0900_HACK_THE_COMPUTER\n            ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudHub };\n            m_objective13_HackRefineryComputer.MissionEntityIDs.Add((uint)EntityID.HUBRefineryComputer);\n            m_objectives.Add(m_objective13_HackRefineryComputer);\n\n            m_objective14_GetOutOfTheStation = new MyObjective( // One member of that list - its type defines the type of submission - MySubmission means fly to the dummypoint to success. Here it is var so you cannot call methods on it\n            (MyTextsWrapperEnum.CHINESE_REFINERY_14_GET_OUT_OF_THE_STATION_Name), // Name of the submission\n            MyMissionID.CHINESE_REFINERY_14_GET_OUT_OF_THE_STATION, // ID of the submission - must be added to MyMissions.cs\n            (MyTextsWrapperEnum.CHINESE_REFINERY_14_GET_OUT_OF_THE_STATION_Description), // Description of the submission\n            null,\n            this,\n            new MyMissionID[] { MyMissionID.CHINESE_REFINERY_13_HACK_REFINARY_COMPUTER }, // ID of submissions required to make this submission available - it is clear so this submission is the starting submission\n            new MyMissionLocation(baseSector, (uint)EntityID.O14GetOutOfTheStation), \n            startDialogId: MyDialogueEnum.CHINESE_REFINERY_1000_GET_OUT\n            ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.Nothing }; // False means do not save game in that checkpoint\n            m_objectives.Add(m_objective14_GetOutOfTheStation); // Adding this submission to the list of submissions of current mission\n\n            m_objective15_LandInsideTheTransporter = new MyObjective( // One member of that list - its type defines the type of submission - MySubmission means fly to the dummypoint to success. Here it is var so you cannot call methods on it\n         (MyTextsWrapperEnum.CHINESE_REFINERY_15_LAND_INSIDE_THE_TRANSPORTER_Name), // Name of the submission\n         MyMissionID.CHINESE_REFINERY_15_LAND_INSIDE_THE_TRANSPORTER, // ID of the submission - must be added to MyMissions.cs\n         (MyTextsWrapperEnum.CHINESE_REFINERY_15_LAND_INSIDE_THE_TRANSPORTER_Description), // Description of the submission\n         null,\n         this,\n         new MyMissionID[] { MyMissionID.CHINESE_REFINERY_14_GET_OUT_OF_THE_STATION }, // ID of submissions required to make this submission available - it is clear so this submission is the starting submission\n         new MyMissionLocation(baseSector, (uint)EntityID.O15LandIn) // ID of dummy point of checkpoint\n         ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudTransport }; // False means do not save game in that checkpoint\n            m_objectives.Add(m_objective15_LandInsideTheTransporter); // Adding this submission to the list of submissions of current mission\n\n\n\n            m_objective05_DeactivateBomb.OnMissionSuccess += O05DeactivateBombSuccess;\n            m_objective04_SetVirus.OnMissionSuccess += O04SetVirusSuccess;\n            m_objective08_SetBugInComputer.OnMissionSuccess += O08SetBugInComputerSuccess;\n            m_objective13_HackRefineryComputer.OnMissionSuccess += O13HackRefinerySuccess;\n\n            m_objective01_GetCloserToAsteroid.OnMissionLoaded += M01GetCloserToAsteroidLoaded;\n            m_objective03_FindSecretRoom.OnMissionLoaded += M03FindSecretRoomLoaded;\n            m_objective04_SetVirus.OnMissionLoaded += M04SetVirusLoaded;\n            m_objective05_DeactivateBomb.OnMissionLoaded += M05DeactivateBombLoaded;\n            m_objective06_GetToFirstTunnel.OnMissionLoaded += M06GetToFirstTunnelLoaded;\n            m_objective07_PastFirstTunnel.OnMissionLoaded += M07PastFirstTunnelLoaded;\n            m_objective08_SetBugInComputer.OnMissionLoaded += M08SetBugInComputerLoaded;\n            m_objective10_PastSecondTunnel.OnMissionLoaded += M10PastSecondTunnelLoaded;\n            m_objective11_SneakInsideTheStation.OnMissionLoaded += M11SneakInsideTheStationLoaded;\n            m_objective13_HackRefineryComputer.OnMissionLoaded += M13HackRefineryComputerLoaded;\n            m_objective14_GetOutOfTheStation.OnMissionLoaded += M14GetOutOfTheStationLoaded;\n        }\n\n        public override void Accept()\n        {\n            base.Accept();\n\n            MySession.PlayerShip.RepairToMax();\n        }\n        \n        public override void Load() // Code in that block will be called on the load of the sector\n        {\n            if (!IsMainSector)\n            {\n                return;\n            }\n\n            m_detector_spawns1 = MyScriptWrapper.GetDetector((uint)EntityID.DetectorSP1);\n            m_detector_spawns2 = MyScriptWrapper.GetDetector((uint)EntityID.DetectorSP2);\n            m_detector_spawns3 = MyScriptWrapper.GetDetector((uint)EntityID.DetectorSP3);\n            m_detector_spawns4 = MyScriptWrapper.GetDetector((uint)EntityID.DetectorSP4);\n            m_detector_spawns5 = MyScriptWrapper.GetDetector((uint)EntityID.DetectorSP5);\n            m_detector_spawns6 = MyScriptWrapper.GetDetector((uint)EntityID.DetectorSP6);\n            m_detector_spawns7 = MyScriptWrapper.GetDetector((uint)EntityID.DetectorSP7);\n            m_detector_spawns8 = MyScriptWrapper.GetDetector((uint)EntityID.DetectorSP8);\n            m_detector_spawns9 = MyScriptWrapper.GetDetector((uint)EntityID.DetectorSP9);\n            m_detector_spawns10 = MyScriptWrapper.GetDetector((uint)EntityID.DetectorSP10);\n            m_detector_spawns11 = MyScriptWrapper.GetDetector((uint)EntityID.DetectorSP11);\n            m_detector_spawns12 = MyScriptWrapper.GetDetector((uint)EntityID.DetectorSP12);\n            m_detector_spawns13 = MyScriptWrapper.GetDetector((uint)EntityID.DetectorSP13);\n            m_detector_spawns14 = MyScriptWrapper.GetDetector((uint)EntityID.DetectorSP14);\n            m_detector_spawns15 = MyScriptWrapper.GetDetector((uint)EntityID.DetectorSP15);\n            m_detector_spawns16 = MyScriptWrapper.GetDetector((uint)EntityID.DetectorSP16);\n            m_detector_spawns17 = MyScriptWrapper.GetDetector((uint)EntityID.DetectorSP17);\n            m_detector_spawns18 = MyScriptWrapper.GetDetector((uint)EntityID.DetectorSP18);\n            m_detector_spawns19 = MyScriptWrapper.GetDetector((uint)EntityID.DetectorSP19);\n            m_detector_spawns20 = MyScriptWrapper.GetDetector((uint)EntityID.DetectorSP20);\n            m_detector_spawns21 = MyScriptWrapper.GetDetector((uint)EntityID.DetectorSP21);\n            m_detector_spawns22 = MyScriptWrapper.GetDetector((uint)EntityID.DetectorSP22);\n            m_detector_spawns23 = MyScriptWrapper.GetDetector((uint)EntityID.DetectorSP23);\n            m_detector_spawns24 = MyScriptWrapper.GetDetector((uint)EntityID.DetectorSP24);\n            m_detector_spawns25 = MyScriptWrapper.GetDetector((uint)EntityID.DetectorSP24);\n\n            m_HUBRefineryComputer = MyScriptWrapper.GetEntity((uint)EntityID.HUBRefineryComputer);\n            m_HUBSecretRoomComputer = MyScriptWrapper.GetEntity((uint)EntityID.HUBSecretRoomComputer);\n            m_HUBSetBugComputer = MyScriptWrapper.GetEntity((uint)EntityID.HUBSetBugComputer);\n\n            MyScriptWrapper.EnablePhysics((uint)EntityID.Transporter, false);\n            \n            MyScriptWrapper.EnsureInventoryItem(MyScriptWrapper.GetCentralInventory(), MyMwcObjectBuilderTypeEnum.SmallShip_HackingTool, (int)MyMwcObjectBuilder_SmallShip_HackingTool_TypesEnum.Level_2);\n\n\n\n            m_transporter = MyScriptWrapper.GetEntity((uint)EntityID.Transporter);\n            m_particleTransporter1 = MyScriptWrapper.GetEntity((uint)EntityID.TransporterParticle1);\n            m_particleTransporter2 = MyScriptWrapper.GetEntity((uint)EntityID.TransporterParticle2);\n            m_particleTransporter3 = MyScriptWrapper.GetEntity((uint)EntityID.TransporterParticle3);\n\n            m_transporterstop = false;\n           \n            //We have travelled here with her\n            MyEntity madelyn = MyScriptWrapper.TryGetEntity(\"Madelyn\");\n            if (madelyn != null)\n            {\n                MyScriptWrapper.HideEntity(madelyn);\n            }\n\n            MyScriptWrapper.EntityHacked += MyScriptWrapper_EntityHacked;\n            base.Load();\n        }\n\n        public override void  Unload()\n        {\n            if (!IsMainSector)\n            {\n                return;\n            }\n            MyScriptWrapper.EntityHacked -= MyScriptWrapper_EntityHacked;\n            m_detector_spawns1.Off();\n            m_detector_spawns1.OnEntityEnter -= DetectorSPEntered;\n            m_detector_spawns2.Off();\n            m_detector_spawns2.OnEntityEnter -= DetectorSPEntered;\n            m_detector_spawns3.Off();\n            m_detector_spawns3.OnEntityEnter -= DetectorSPEntered;\n            m_detector_spawns4.Off();\n            m_detector_spawns4.OnEntityEnter -= DetectorSPEntered;\n            m_detector_spawns5.Off();\n            m_detector_spawns5.OnEntityEnter -= DetectorSPEntered;\n            m_detector_spawns6.Off();\n            m_detector_spawns6.OnEntityEnter -= DetectorSPEntered;\n            m_detector_spawns7.Off();\n            m_detector_spawns7.OnEntityEnter -= DetectorSPEntered;\n            m_detector_spawns8.Off();\n            m_detector_spawns8.OnEntityEnter -= DetectorSPEntered;\n            m_detector_spawns9.Off();\n            m_detector_spawns9.OnEntityEnter -= DetectorSPEntered;\n            m_detector_spawns10.Off();\n            m_detector_spawns10.OnEntityEnter -= DetectorSPEntered;\n            m_detector_spawns11.Off();\n            m_detector_spawns11.OnEntityEnter -= DetectorSPEntered;\n            m_detector_spawns12.Off();\n            m_detector_spawns12.OnEntityEnter -= DetectorSPEntered;\n            m_detector_spawns13.Off();\n            m_detector_spawns13.OnEntityEnter -= DetectorSPEntered;\n            m_detector_spawns14.Off();\n            m_detector_spawns14.OnEntityEnter -= DetectorSPEntered;\n            m_detector_spawns15.Off();\n            m_detector_spawns15.OnEntityEnter -= DetectorSPEntered;\n            m_detector_spawns16.Off();\n            m_detector_spawns16.OnEntityEnter -= DetectorSPEntered;\n            m_detector_spawns17.Off();\n            m_detector_spawns17.OnEntityEnter -= DetectorSPEntered;\n            m_detector_spawns18.Off();\n            m_detector_spawns18.OnEntityEnter -= DetectorSPEntered;\n            m_detector_spawns19.Off();\n            m_detector_spawns19.OnEntityEnter -= DetectorSPEntered;\n            m_detector_spawns20.Off();\n            m_detector_spawns20.OnEntityEnter -= DetectorSPEntered;\n            m_detector_spawns21.Off();\n            m_detector_spawns21.OnEntityEnter -= DetectorSPEntered;\n            m_detector_spawns22.Off();\n            m_detector_spawns22.OnEntityEnter -= DetectorSPEntered;\n            m_detector_spawns23.Off();\n            m_detector_spawns23.OnEntityEnter -= DetectorSPEntered;\n            m_detector_spawns24.Off();\n            m_detector_spawns24.OnEntityEnter -= DetectorSPEntered;\n            m_detector_spawns25.Off();\n            m_detector_spawns25.OnEntityEnter -= DetectorSPEntered;\n\n            m_HUBRefineryComputer = null;\n            m_HUBSecretRoomComputer = null;\n            m_HUBSetBugComputer = null;\n\n            m_transporter = null;\n            m_particleTransporter1 = null;\n            m_particleTransporter2 = null;\n            m_particleTransporter3 = null;\n\n            base.Unload();\n\n            if (MyScriptWrapper.IsMissionFinished(this.ID))\n            {\n                MyScriptWrapper.TravelToMission(MyMissionID.CHINESE_ESCAPE);\n            }\n        }\n\n        public override void Update() //Code in that block will be called in each frame\n        {\n            if (!IsMainSector)\n            {\n                return;\n            }\n\n            base.Update();\n\n            if (!m_transporterstop)\n            {\n                m_transporterstop = MoveMotherShipForwardDest(m_transporter, 120f, new Vector3(-121f, 2407f, -2061f));\n                MoveMotherShipForward(m_particleTransporter1, new Vector3(0, 0, -120f));\n                MoveMotherShipForward(m_particleTransporter2, new Vector3(0, 0, -120f));\n                MoveMotherShipForward(m_particleTransporter3, new Vector3(0, 0, -120f));\n            }\n            else\n            {\n                MyScriptWrapper.EnablePhysics((uint)EntityID.Transporter, true);\n                MyScriptWrapper.SetParticleEffect(m_particleTransporter1, false);\n                MyScriptWrapper.SetParticleEffect(m_particleTransporter2, false);\n                MyScriptWrapper.SetParticleEffect(m_particleTransporter3, false);\n            }\n        }\n\n        #region Mission Success\n        void O04SetVirusSuccess(MyMissionBase sender)\n        {\n            MyScriptWrapper.RemoveEntityMark(m_HUBSecretRoomComputer);\n        }\n           \n        void O05DeactivateBombSuccess(MyMissionBase sender)\n        {\n            MyScriptWrapper.Highlight((uint)EntityID.O05Bomb, false,this);\n        }\n\n        void O08SetBugInComputerSuccess(MyMissionBase sender)\n        {\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.Victory);\n            MyScriptWrapper.RemoveEntityMark(m_HUBSetBugComputer);\n        }\n\n        void O13HackRefinerySuccess(MyMissionBase sender)\n        {\n            MyScriptWrapper.RemoveEntityMark(m_HUBRefineryComputer);\n        }\n        #endregion\n\n        #region Mission Loaded\n        void M01GetCloserToAsteroidLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.DesperateWithStress); // Sets music group to be played in the sector - no matter if the mission is running or not\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SPStart);\n            m_detector_spawns1.On();\n            m_detector_spawns1.OnEntityEnter += DetectorSPEntered;\n            m_detector_spawns2.On();\n            m_detector_spawns2.OnEntityEnter += DetectorSPEntered;\n            m_detector_spawns3.On();\n            m_detector_spawns3.OnEntityEnter += DetectorSPEntered;\n            m_detector_spawns4.On();\n            m_detector_spawns4.OnEntityEnter += DetectorSPEntered;\n            m_detector_spawns5.On();\n            m_detector_spawns5.OnEntityEnter += DetectorSPEntered;\n            m_detector_spawns6.On();\n            m_detector_spawns6.OnEntityEnter += DetectorSPEntered;\n            m_detector_spawns7.On();\n            m_detector_spawns7.OnEntityEnter += DetectorSPEntered;\n        }\n\n        void M03FindSecretRoomLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.SetAlarmMode(MyScriptWrapper.GetEntity((uint)EntityID.Container1), true);\n        }\n\n        void M04SetVirusLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.Mystery, 0, \"MM01\");\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.GetEntity((uint)EntityID.HUBSecretRoomComputer), true);\n            MyScriptWrapper.MarkEntity(m_HUBSecretRoomComputer, MyTexts.SetVirusInComputer, HUD.MyHudIndicatorFlagsEnum.SHOW_TEXT | HUD.MyHudIndicatorFlagsEnum.SHOW_DISTANCE | HUD.MyHudIndicatorFlagsEnum.SHOW_BORDER_INDICATORS, HUD.MyGuitargetMode.Objective);\n        }\n\n        void M05DeactivateBombLoaded(MyMissionBase sender)\n        {\n            //MyScriptWrapper.PlayDialogue(MyDialogueEnum.CHINESE_REFINERY_0300_DEACTIVATE_BOMB);\n            MyScriptWrapper.Highlight((uint)EntityID.O05Bomb, true,this);\n        }\n\n        void M06GetToFirstTunnelLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.DesperateWithStress);\n        }\n\n        void M07PastFirstTunnelLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.SetAlarmMode(MyScriptWrapper.GetEntity((uint)EntityID.Container1), true);\n            m_detector_spawns1.Off();\n            m_detector_spawns1.OnEntityEnter -= DetectorSPEntered;\n            m_detector_spawns2.Off();\n            m_detector_spawns2.OnEntityEnter -= DetectorSPEntered;\n            m_detector_spawns3.Off();\n            m_detector_spawns3.OnEntityEnter -= DetectorSPEntered;\n            m_detector_spawns4.Off();\n            m_detector_spawns4.OnEntityEnter -= DetectorSPEntered;\n            m_detector_spawns5.Off();\n            m_detector_spawns5.OnEntityEnter -= DetectorSPEntered;\n            m_detector_spawns6.Off();\n            m_detector_spawns6.OnEntityEnter -= DetectorSPEntered;\n            m_detector_spawns7.Off();\n            m_detector_spawns7.OnEntityEnter -= DetectorSPEntered;\n            m_detector_spawns8.On();\n            m_detector_spawns8.OnEntityEnter += DetectorSPEntered;\n            m_detector_spawns9.On();\n            m_detector_spawns9.OnEntityEnter += DetectorSPEntered;\n            m_detector_spawns10.On();\n            m_detector_spawns10.OnEntityEnter += DetectorSPEntered;\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SPReachTunnel1);\n            m_transporterstop = true;\n        }\n\n        void M08SetBugInComputerLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.SetAlarmMode(MyScriptWrapper.GetEntity((uint)EntityID.Container1), false);\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.Special);\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SPPastTunnel1_1);\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SPPastTunnel1_2);\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SPPastTunnel1_3);\n            m_detector_spawns8.Off();\n            m_detector_spawns8.OnEntityEnter -= DetectorSPEntered;\n            m_detector_spawns9.Off();\n            m_detector_spawns9.OnEntityEnter -= DetectorSPEntered;\n            m_detector_spawns10.Off();\n            m_detector_spawns10.OnEntityEnter -= DetectorSPEntered;\n            m_detector_spawns11.On();\n            m_detector_spawns11.OnEntityEnter += DetectorSPEntered;\n            m_detector_spawns12.On();\n            m_detector_spawns12.OnEntityEnter += DetectorSPEntered;\n            m_detector_spawns13.On();\n            m_detector_spawns13.OnEntityEnter += DetectorSPEntered;\n            MyScriptWrapper.MarkEntity(m_HUBSetBugComputer, MyTexts.SetBugInComputer, HUD.MyHudIndicatorFlagsEnum.SHOW_TEXT | HUD.MyHudIndicatorFlagsEnum.SHOW_DISTANCE | HUD.MyHudIndicatorFlagsEnum.SHOW_BORDER_INDICATORS, HUD.MyGuitargetMode.Objective);\n        }\n\n        void M10PastSecondTunnelLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.DesperateWithStress);\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SPReachTunnel2);\n            m_detector_spawns11.Off();\n            m_detector_spawns11.OnEntityEnter -= DetectorSPEntered;\n            m_detector_spawns12.Off();\n            m_detector_spawns12.OnEntityEnter -= DetectorSPEntered;\n            m_detector_spawns13.Off();\n            m_detector_spawns13.OnEntityEnter -= DetectorSPEntered;\n            m_detector_spawns14.On();\n            m_detector_spawns14.OnEntityEnter += DetectorSPEntered;\n            m_detector_spawns15.On();\n            m_detector_spawns15.OnEntityEnter += DetectorSPEntered;\n            m_detector_spawns16.On();\n            m_detector_spawns16.OnEntityEnter += DetectorSPEntered;\n            m_transporterstop = true;\n        }\n\n        void M11SneakInsideTheStationLoaded(MyMissionBase sender)\n        {\n            foreach (var item in m_SPPastTunnel2)\n            {\n                MyScriptWrapper.ActivateSpawnPoint(item);\n            }\n            m_detector_spawns14.Off();\n            m_detector_spawns14.OnEntityEnter -= DetectorSPEntered;\n            m_detector_spawns15.Off();\n            m_detector_spawns15.OnEntityEnter -= DetectorSPEntered;\n            m_detector_spawns16.Off();\n            m_detector_spawns16.OnEntityEnter -= DetectorSPEntered;\n            m_detector_spawns17.On();\n            m_detector_spawns17.OnEntityEnter += DetectorSPEntered;\n            m_detector_spawns18.On();\n            m_detector_spawns18.OnEntityEnter += DetectorSPEntered;\n            m_detector_spawns19.On();\n            m_detector_spawns19.OnEntityEnter += DetectorSPEntered;\n            m_detector_spawns20.On();\n            m_detector_spawns20.OnEntityEnter += DetectorSPEntered;\n            m_detector_spawns21.On();\n            m_detector_spawns21.OnEntityEnter += DetectorSPEntered;\n            m_detector_spawns25.On();\n            m_detector_spawns25.OnEntityEnter += DetectorSPEntered;\n        }\n\n        void M13HackRefineryComputerLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SPBackdoor);\n            m_detector_spawns17.Off();\n            m_detector_spawns17.OnEntityEnter -= DetectorSPEntered;\n            m_detector_spawns18.Off();\n            m_detector_spawns18.OnEntityEnter -= DetectorSPEntered;\n            m_detector_spawns19.Off();\n            m_detector_spawns19.OnEntityEnter -= DetectorSPEntered;\n            m_detector_spawns20.Off();\n            m_detector_spawns20.OnEntityEnter -= DetectorSPEntered;\n            m_detector_spawns21.Off();\n            m_detector_spawns21.OnEntityEnter -= DetectorSPEntered;\n            MyScriptWrapper.MarkEntity(m_HUBRefineryComputer, MyTexts.HackSystem, HUD.MyHudIndicatorFlagsEnum.SHOW_TEXT | HUD.MyHudIndicatorFlagsEnum.SHOW_DISTANCE | HUD.MyHudIndicatorFlagsEnum.SHOW_BORDER_INDICATORS, HUD.MyGuitargetMode.Objective);\n        }\n\n        void M14GetOutOfTheStationLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.Victory, 3);\n            m_detector_spawns22.On();\n            m_detector_spawns22.OnEntityEnter += DetectorSPEntered;\n            m_detector_spawns23.On();\n            m_detector_spawns23.OnEntityEnter += DetectorSPEntered;\n            m_detector_spawns24.On();\n            m_detector_spawns24.OnEntityEnter += DetectorSPEntered;\n            m_transporterstop = true;\n            m_transporter.SetWorldMatrix(MyScriptWrapper.GetEntity((uint)EntityID.MoveTransporterDummy).WorldMatrix);\n        }\n        #endregion       \n\n        #region Spawnpoint Detectors\n        void DetectorSPEntered(MyEntityDetector sender, MyEntity smallship, int meetcriterias)\n        {\n            if (sender == m_detector_spawns1 && smallship == MySession.PlayerShip)\n            {\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SP1);\n                m_detector_spawns1.Off();\n                m_detector_spawns1.OnEntityEnter -= DetectorSPEntered;\n                return;\n            }\n            if (sender == m_detector_spawns2 && smallship == MySession.PlayerShip)\n            {\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SP2);\n                m_detector_spawns2.Off();\n                m_detector_spawns2.OnEntityEnter -= DetectorSPEntered;\n                return;\n            }\n            if (sender == m_detector_spawns3 && smallship == MySession.PlayerShip)\n            {\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SP3);\n                m_detector_spawns3.Off();\n                m_detector_spawns3.OnEntityEnter -= DetectorSPEntered;\n                return;\n            }\n            if (sender == m_detector_spawns4 && smallship == MySession.PlayerShip)\n            {\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SP4);\n                m_detector_spawns4.Off();\n                m_detector_spawns4.OnEntityEnter -= DetectorSPEntered;\n                return;\n            }\n            if (sender == m_detector_spawns5 && smallship == MySession.PlayerShip)\n            {\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SP5_1);\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SP5_2);\n                m_detector_spawns5.Off();\n                m_detector_spawns5.OnEntityEnter -= DetectorSPEntered;\n                return;\n            }\n            if (sender == m_detector_spawns6 && smallship == MySession.PlayerShip)\n            {\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SP6_1);\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SP6_2);\n                m_detector_spawns6.Off();\n                m_detector_spawns6.OnEntityEnter -= DetectorSPEntered;\n                return;\n            }\n            if (sender == m_detector_spawns7 && smallship == MySession.PlayerShip)\n            {\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SP7);\n                m_detector_spawns7.Off();\n                m_detector_spawns7.OnEntityEnter -= DetectorSPEntered;\n                return;\n            }\n            if (sender == m_detector_spawns8 && smallship == MySession.PlayerShip)\n            {\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SP8);\n                m_detector_spawns8.Off();\n                m_detector_spawns8.OnEntityEnter -= DetectorSPEntered;\n                return;\n            }\n            if (sender == m_detector_spawns9 && smallship == MySession.PlayerShip)\n            {\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SP9);\n                m_detector_spawns9.Off();\n                m_detector_spawns9.OnEntityEnter -= DetectorSPEntered;\n                return;\n            }\n            if (sender == m_detector_spawns10 && smallship == MySession.PlayerShip)\n            {\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SP10);\n                m_detector_spawns10.Off();\n                m_detector_spawns10.OnEntityEnter -= DetectorSPEntered;\n                return;\n            }\n            if (sender == m_detector_spawns11 && smallship == MySession.PlayerShip)\n            {\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SP11_1);\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SP11_2);\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SP11_3);\n                m_detector_spawns11.Off();\n                m_detector_spawns11.OnEntityEnter -= DetectorSPEntered;\n                return;\n            }\n            if (sender == m_detector_spawns12 && smallship == MySession.PlayerShip)\n            {\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SP12_1);\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SP12_2);\n                m_detector_spawns12.Off();\n                m_detector_spawns12.OnEntityEnter -= DetectorSPEntered;\n                return;\n            }\n            if (sender == m_detector_spawns13 && smallship == MySession.PlayerShip)\n            {\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SP13);\n                m_detector_spawns13.Off();\n                m_detector_spawns13.OnEntityEnter -= DetectorSPEntered;\n                return;\n            }\n            if (sender == m_detector_spawns14 && smallship == MySession.PlayerShip)\n            {\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SP14);\n                m_detector_spawns14.Off();\n                m_detector_spawns14.OnEntityEnter -= DetectorSPEntered;\n                return;\n            }\n            if (sender == m_detector_spawns15 && smallship == MySession.PlayerShip)\n            {\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SP15);\n                m_detector_spawns15.Off();\n                m_detector_spawns15.OnEntityEnter -= DetectorSPEntered;\n                return;\n            }\n            if (sender == m_detector_spawns16 && smallship == MySession.PlayerShip)\n            {\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SP16);\n                m_detector_spawns16.Off();\n                m_detector_spawns16.OnEntityEnter -= DetectorSPEntered;\n                return;\n            }\n            if (sender == m_detector_spawns17 && smallship == MySession.PlayerShip)\n            {\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SP17);\n                m_detector_spawns17.Off();\n                m_detector_spawns17.OnEntityEnter -= DetectorSPEntered;\n                return;\n            }\n            if (sender == m_detector_spawns18 && smallship == MySession.PlayerShip)\n            {\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SP18_1);\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SP18_2);\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SP18_3);\n                m_detector_spawns18.Off();\n                m_detector_spawns18.OnEntityEnter -= DetectorSPEntered;\n                return;\n            }\n            if (sender == m_detector_spawns19 && smallship == MySession.PlayerShip)\n            {\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SP19);\n                m_detector_spawns19.Off();\n                m_detector_spawns19.OnEntityEnter -= DetectorSPEntered;\n                return;\n            }\n            if (sender == m_detector_spawns20 && smallship == MySession.PlayerShip)\n            {\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SP20);\n                m_detector_spawns20.Off();\n                m_detector_spawns20.OnEntityEnter -= DetectorSPEntered;\n                return;\n            }\n            if (sender == m_detector_spawns21 && smallship == MySession.PlayerShip)\n            {\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SP21_1);\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SP21_2);\n                m_detector_spawns21.Off();\n                m_detector_spawns21.OnEntityEnter -= DetectorSPEntered;\n                return;\n            }\n            if (sender == m_detector_spawns22 && smallship == MySession.PlayerShip)\n            {\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SP22_1);\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SP22_2);\n                m_detector_spawns22.Off();\n                m_detector_spawns22.OnEntityEnter -= DetectorSPEntered;\n                return;\n            }\n            if (sender == m_detector_spawns23 && smallship == MySession.PlayerShip)\n            {\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SP23);\n                m_detector_spawns23.Off();\n                m_detector_spawns23.OnEntityEnter -= DetectorSPEntered;\n                return;\n            }\n            if (sender == m_detector_spawns24 && smallship == MySession.PlayerShip)\n            {\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SP24);\n                m_detector_spawns24.Off();\n                m_detector_spawns24.OnEntityEnter -= DetectorSPEntered;\n                return;\n            }\n            if (sender == m_detector_spawns25 && smallship == MySession.PlayerShip)\n            {\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SP24);\n                m_detector_spawns25.Off();\n                m_detector_spawns25.OnEntityEnter -= DetectorSPEntered;\n                return;\n            }\n        }\n#endregion\n\n        #region General Methods\n\n        bool MoveMotherShipForwardDest(MyEntity entity, float speed, Vector3 destination)\n        {\n            Vector3 velocity = speed * entity.WorldMatrix.Forward; // Speed in direction\n            if (Vector3.DistanceSquared(destination, entity.GetPosition()) > 10 * 10)\n            {\n                MyScriptWrapper.Move(entity, entity.GetPosition() + velocity * MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS);\n                return false;\n            }\n            return true;\n        }\n\n        void MoveMotherShipForward(MyEntity entity, Vector3 velocity)\n        {\n            MyScriptWrapper.Move(entity, entity.GetPosition() + velocity * MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS);\n        }\n\n        void MyScriptWrapper_EntityHacked(MyEntity entity)\n        {\n            if (entity == m_HUBRefineryComputer)\n            {\n                m_objective13_HackRefineryComputer.Success();\n            }\n            if (entity == m_HUBSecretRoomComputer)\n            {\n                m_objective04_SetVirus.Success();\n            }\n            if (entity == m_HUBSetBugComputer)\n            {\n                m_objective08_SetBugInComputer.Success();\n            }\n        }\n        #endregion\n    }\n\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/SinglePlayer/MyChineseSolarArrayAttackMission.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Entities;\nusing System.Diagnostics;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Entities.WayPoints;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.AppCode.Game.Localization;\n\n\nnamespace MinerWars.AppCode.Game.Missions.SinglePlayer\n{\n    class MyChineseSolarArrayAttackMission : MyMissionSandboxBase\n    {\n        private enum EntityID // list of IDs used in script\n        {\n            StartLocation = 289,\n            //FlyTarget = 290,\n            //DestroyPrefab1Id = 261,\n            //DestroyPrefab2Id = 5771,\n            //DestroyPrefab3Id = 5773,\n            //DestroyPrefab4Id = 5776,\n        }\n\n        public override void ValidateIds() // checks if all IDs in enum are loaded correctly\n        {\n            foreach (var value in Enum.GetValues(typeof(EntityID)))\n            {\n                MyScriptWrapper.GetEntity((uint)((value as EntityID?).Value));\n            }\n        }\n\n        //BLOCK FOR CLASS MEMBERS\n\n        //END OF BLOCK\n\n        public MyChineseSolarArrayAttackMission()\n        {\n            ID = MyMissionID.SOLAR_PLANT_CHINA; /* ID must be added to MyMissions.cs */\n            DebugName = new StringBuilder(\"Destroy the Chinese solar plant\"); // Name of mission\n            Name = MyTextsWrapperEnum.SOLAR_PLANT_CHINA;\n            Description = MyTextsWrapperEnum.SOLAR_PLANT_CHINA_Description;\n            //Flags = MyMissionFlags.Story;\n\n            MyMwcVector3Int baseSector = new MyMwcVector3Int(-1185103, 0, 3822834); // Story sector of the script - i.e. (-2465,0,6541)\n\n            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation); // Starting dummy point - must by typecasted to uint and referenced from EntityID enum\n\n            RequiredMissions = new MyMissionID[] { /*MyMissionID.ALIEN_GATE*/ }; // IDs of missions required to make this mission available\n            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.SOLAR_PLANT_CHINA_FLY_TARGET };\n            RequiredActors = new MyActorEnum[] { MyActorEnum.MARCUS, MyActorEnum.MADELYN };\n\n            m_objectives = new List<MyObjective>(); // Creating of list of submissions\n\n            //var destroy1 = new MyObjectiveDestroy(\n            //    new StringBuilder(\"Destroy the comm station\"),\n            //    MyMissionID.SOLAR_PLANT_CHINA_DESTROY_TARGET_1,\n            //    new StringBuilder(\"Destroy the satellite communication station to prevent the Chinese from calling reinforcements.\\n\"),\n            //    null,\n            //    this,\n            //    new MyMissionID[] { },\n            //    new List<uint>() { (uint)EntityID.DestroyPrefab1Id }\n            //) { SaveOnSuccess = false };\n            //m_objectives.Add(destroy1);\n\n            //var destroy2 = new MyObjectiveDestroy(\n            //    new StringBuilder(\"Destroy the accumulators\"),\n            //    MyMissionID.SOLAR_PLANT_CHINA_DESTROY_TARGET_2,\n            //    new StringBuilder(\"Destroying three accumulators will seriously disrupt the energy supply of the Chinese.\\n\"),\n            //    null,\n            //    this,\n            //    new MyMissionID[] { MyMissionID.SOLAR_PLANT_CHINA_DESTROY_TARGET_1 },\n            //    new List<uint>() { (uint)EntityID.DestroyPrefab2Id, (uint)EntityID.DestroyPrefab3Id, (uint)EntityID.DestroyPrefab4Id }\n            //) { SaveOnSuccess = false };\n            //m_objectives.Add(destroy2);\n\n            //// START OF REACH OBJECTIVE SUBMISSION DEFINITION\n            //var flyInside = new MyObjective( // One member of that list - its type defines the type of submission - MySubmission means fly to the dummypoint to success. Here it is var so you cannot call methods on it\n            //    new StringBuilder(\"Return to Madelyn\"), // Name of the submission\n            //    MyMissionID.SOLAR_PLANT_CHINA_FLY_TARGET, // ID of the submission - must be added to MyMissions.cs\n            //    new StringBuilder(\"Fly to your mothership to get away.\\n\"), // Description of the submission\n            //    null,\n            //    this,\n            //    new MyMissionID[] { MyMissionID.SOLAR_PLANT_CHINA_DESTROY_TARGET_2 }, // ID of submissions required to make this submission available - it is clear so this submission is the starting submission\n            //    new MyMissionLocation(baseSector, (uint)EntityID.FlyTarget) // ID of dummy point of checkpoint\n            //) { SaveOnSuccess = false }; // False means do not save game in that checkpoint\n            //m_objectives.Add(flyInside); // Adding this submission to the list of submissions of current mission\n            //// END OF REACH OBJECTIVE SUBMISSION DEFINITION\n        }\n\n        public override void Load() // Code in that block will be called on the load of the sector\n        {\n            base.Load();\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.CalmAtmosphere); // Sets music group to be played in the sector - no matter if the mission is running or not\n\n            MyScriptWrapper.FixBotNames();\n        }\n    }\n\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/SinglePlayer/MyChineseTransmitterMission.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing MinerWars.AppCode.Game.Missions.Components;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Audio.Dialogues;\nusing MinerWars.Resources;\n\nnamespace MinerWars.AppCode.Game.Missions.SinglePlayer\n{\n   \n    class MyChineseTransmitterMission: MyMission\n    {\n        #region EntityIDs\n\n        enum EntityID\n        {\n            StartLocation = 15029,\n            CargoDummy = 1281,\n            SecurityDummy = 7578,\n            FindCICDummy = 1285,\n            HackDummy = 1283,\n            InsideCICDummy = 1284,\n            EscapeDummy = 1273,\n\n            EscapeDummy3 = 17191,\n            Escape_Spawn1 = 1260,\n            Escape_Spawn2 = 1265,\n            Escape_Spawn3 = 1272,\n            Escape_Spawn4 = 1278,\n            Security_Spawn1 = 8294,\n            Security_Spawn = 8295,\n            PC1 = 7552,\n            PC2 = 7553,\n            PC3 = 7554,\n            PC4 = 7569,\n            PC5 = 7570,\n            PC6 = 7571,\n            PC7 = 7572,\n            PC8 = 7573,\n            PC9 = 7574,\n            PC10 = 7557,\n            PC11 = 7558,\n            PC12 = 7559,\n            PC14 = 9070,\n            PC15 = 9026,\n            PC16 = 9028,\n            PC17 = 9030,\n            PC18 = 9032,\n            PC19 = 9034,\n            PC20 = 9045,\n            PC21 = 9043,\n            PC22 = 9041,\n            PC23 = 9039,\n            PC24 = 9037,\n            PC25 = 9036,\n            PC26 = 9073,\n            PC27 = 9048,\n            PC28 = 9050,\n            PC29 = 9052,\n            PC30 = 9054,\n            PC31 = 9056,\n\n            PC33 = 9092,\n            PC34 = 9094,\n            PC35 = 9083,\n            PC36 = 9086,\n            PC37 = 9088,\n            PC38 = 9099,\n            PC39 = 9097,\n            PC40 = 9096,\n            PC42 = 9105,\n            PC43 = 9103,\n            PC44 = 9101,\n            PC45 = 9147,\n            PC46 = 9115,\n            PC47 = 9117,\n            PC48 = 9119,\n            PC49 = 9121,\n            PC50 = 9123,\n            PC51 = 9125,\n            PC52 = 9126,\n            PC53 = 9128,\n            PC54 = 9130,\n            PC55 = 9132,\n            PC56 = 9134,\n            PC57 = 9145,\n            PC58 = 9143,\n            PC59 = 9141,\n            PC60 = 9139,\n            PC61 = 9137,\n            PC62 = 9150,\n            PC63 = 9090,\n            PC64 = 241,\n            Generator = 9174,\n            Loot_Spawn = 9414,\n            FindSecurity_Spawn = 9415,\n            DestroyGenerator_Spawn = 9416,\n            FindCIC_Spawn = 9419,\n            PlaceDevice_Spawn = 9420,\n            checkpoint = 9847,\n            HUB = 226,\n            Detector = 15567,\n            CargoDetector = 16801,\n            CIC_Charge = 16627,\n            Detector_Hide = 17153,\n            Detector_Unhide = 16976,\n            Spawn_Unhide = 17189,\n            CICDoors_1 = 234,\n            CICDoors_2 = 227,\n            Spawn_cargo = 16779562,\n            Radar = 12383,\n        }\n\n        public override void ValidateIds() // checks if all IDs in enum are loaded correctly\n        {\n            foreach (var value in Enum.GetValues(typeof (EntityID)))\n            {\n                MyScriptWrapper.GetEntity((uint) ((value as EntityID?).Value));\n            }\n        }\n\n        List<uint> m_pc = new List<uint>\n            {\n                (uint) EntityID.PC1,\n                (uint) EntityID.PC2,\n                (uint) EntityID.PC3,\n                (uint) EntityID.PC4,\n                (uint) EntityID.PC5,\n                (uint) EntityID.PC6,\n                (uint) EntityID.PC7,\n                (uint) EntityID.PC8,\n                (uint) EntityID.PC9,\n                (uint) EntityID.PC10,\n                (uint) EntityID.PC11,\n                (uint) EntityID.PC12,\n                (uint) EntityID.PC14,\n                (uint) EntityID.PC15,\n                (uint) EntityID.PC16,\n                (uint) EntityID.PC17,\n                (uint) EntityID.PC18,\n                (uint) EntityID.PC19,\n                (uint) EntityID.PC20,\n                (uint) EntityID.PC21,\n                (uint) EntityID.PC22,\n                (uint) EntityID.PC23,\n                (uint) EntityID.PC24,\n                (uint) EntityID.PC25,\n                (uint) EntityID.PC26,\n                (uint) EntityID.PC27,\n                (uint) EntityID.PC28,\n                (uint) EntityID.PC29,\n                (uint) EntityID.PC30,\n                (uint) EntityID.PC31,\n                (uint) EntityID.PC33,\n                (uint) EntityID.PC34,\n                (uint) EntityID.PC35,\n                (uint) EntityID.PC36,\n                (uint) EntityID.PC37,\n                (uint) EntityID.PC38,\n                (uint) EntityID.PC39,\n                (uint) EntityID.PC40,\n                (uint) EntityID.PC42,\n                (uint) EntityID.PC43,\n                (uint) EntityID.PC44,\n                (uint) EntityID.PC45,\n                (uint) EntityID.PC46,\n                (uint) EntityID.PC47,\n                (uint) EntityID.PC48,\n                (uint) EntityID.PC49,\n                (uint) EntityID.PC50,\n                (uint) EntityID.PC51,\n                (uint) EntityID.PC52,\n                (uint) EntityID.PC53,\n                (uint) EntityID.PC54,\n                (uint) EntityID.PC55,\n                (uint) EntityID.PC56,\n                (uint) EntityID.PC57,\n                (uint) EntityID.PC58,\n                (uint) EntityID.PC59,\n                (uint) EntityID.PC60,\n                (uint) EntityID.PC61,\n                (uint) EntityID.PC62,\n                (uint) EntityID.PC63,\n                // (uint)EntityID.PC64\n            };\n\n        #endregion\n\n        private MyObjectiveDestroy m_destroyEnemies;\n        private MyObjectiveDialog m_talkWith5;\n        private MyEntity m_hub;\n        private MyObjective m_hackCIC;\n        private MyObjective m_escape;\n        private MyEntityDetector m_detector;\n        private MyUseObjective m_placeRadarMission;\n        private MyEntity m_ravengirl;\n        private MyEntity m_ravenguy;\n        private MyEntityDetector m_cargodetector;\n        private MyEntityDetector m_hidedetector;\n        private MyEntityDetector m_unhidedetector;\n        private MyObjectiveDialog m_talkWith7;\n\n\n        public MyChineseTransmitterMission()\n        {\n            ID = MyMissionID.CHINESE_TRANSMITTER; /* ID must be added to MyMissions.cs */\n            Name = MyTextsWrapperEnum.CHINESE_TRANSMITTER;\n            Description = MyTextsWrapperEnum.CHINESE_TRANSMITTER_Description;\n            DebugName = new StringBuilder(\"16-PRC transmitter\"); // Nazev mise\n            Flags = MyMissionFlags.Story;\n\n            MyMwcVector3Int baseSector = new MyMwcVector3Int(2329559, 0, 4612446); // Story sector of the script\n\n            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation); // Starting dummy point\n\n            RequiredMissions = new MyMissionID[] { MyMissionID.BARTHS_MOON_PLANT }; // mise ktere musi byt splneny pred prijetim teto mise\n            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.CHINESE_TRANSMITTER_ESCAPE3 };\n            RequiredActors = new MyActorEnum[] {  MyActorEnum.MADELYN, MyActorEnum.TARJA, MyActorEnum.VALENTIN };\n\n            m_objectives = new List<MyObjective>(); // Creating of list of submissions\n            // START DEFINICE SUBMISE\n\n           var lootCargo = new MyObjective( // One member of that list - je to MySubmission takze cilem je doletet do checkpointu\n              (MyTextsWrapperEnum.CHINESE_TRANSMITTER_LOOT_CARGO_Name), // nazev submise\n              MyMissionID.CHINESE_TRANSMITTER_LOOT_CARGO, // id submise\n              (MyTextsWrapperEnum.CHINESE_TRANSMITTER_LOOT_CARGO_Description), // popis submise\n              null,\n              this,\n              new MyMissionID[] { }, // ID submisi ktere musi byt splneny - je to prazdne takze je to prvni submise\n              new MyMissionLocation(baseSector, (uint)EntityID.CargoDummy),\n                  startDialogId: MyDialogueEnum.CHINESE_TRANSMITTER_0100_INTRODUCE\n          ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudCargo }; // nastaveni save na checkpointu nebo ne\n            m_objectives.Add(lootCargo);\n            lootCargo.OnMissionSuccess += LootSucces;\n\n\n            //var spawnPointSmartWaves =\n            //    new MySpawnpointSmartWaves(\n            //        new[] { (uint) EntityID.Security_Spawn1, (uint) EntityID.Loot_Spawn }, null, 2);\n\n            //Components.Add(spawnPointSmartWaves);\n\n            var talkWith = new MyObjectiveDialog(\n            MyTextsWrapperEnum.CHINESE_TRANSMITTER_DIALOGUE_1_Name,\n            MyMissionID.CHINESE_TRANSMITTER_DIALOGUE_1,\n            MyTextsWrapperEnum.CHINESE_TRANSMITTER_DIALOGUE_1_Description,\n            null,\n            this,\n            new MyMissionID[] { MyMissionID.CHINESE_TRANSMITTER_LOOT_CARGO },\n            dialogId: MyDialogueEnum.CHINESE_TRANSMITTER_0200_CARGO_BAY\n            ) { SaveOnSuccess = false };\n            m_objectives.Add(talkWith);\n\n            var checkpoint = new MyObjective( // One member of that list - je to MySubmission takze cilem je doletet do checkpointu\n               (MyTextsWrapperEnum.CHINESE_TRANSMITTER_CHECKPOINT_Name), // nazev submise\n               MyMissionID.CHINESE_TRANSMITTER_CHECKPOINT, // id submise\n               (MyTextsWrapperEnum.CHINESE_TRANSMITTER_CHECKPOINT_Description), // popis submise\n               null,\n               this,\n               new MyMissionID[] { MyMissionID.CHINESE_TRANSMITTER_DIALOGUE_1 }, // ID submisi ktere musi byt splneny - je to prazdne takze je to prvni submise\n               new MyMissionLocation(baseSector, (uint)EntityID.checkpoint)\n                //successDialogId: MyDialogueEnum.CHINESE_TRANSMITTER_0300_CARGO_BAY_2// ID of dummy point of checkpoint\n           ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudStation }; // nastaveni save na checkpointu nebo ne\n            m_objectives.Add(checkpoint); // pridani do seznamu submisi\n\n           \n\n            var findSecurityControl = new MyObjective( // One member of that list - je to MySubmission takze cilem je doletet do checkpointu\n                 (MyTextsWrapperEnum.CHINESE_TRANSMITTER_FIND_SECURITY_CONTROL_Name), // nazev submise\n                 MyMissionID.CHINESE_TRANSMITTER_FIND_SECURITY_CONTROL, // id submise\n                 (MyTextsWrapperEnum.CHINESE_TRANSMITTER_FIND_SECURITY_CONTROL_Description), // popis submise\n                 null,\n                 this,\n                 new MyMissionID[] { MyMissionID.CHINESE_TRANSMITTER_CHECKPOINT, }, // ID submisi ktere musi byt splneny - je to prazdne takze je to prvni submise\n                 new MyMissionLocation(baseSector, (uint)EntityID.SecurityDummy), // ID of dummy point of checkpoint\n                 startDialogId: MyDialogueEnum.CHINESE_TRANSMITTER_0300_CARGO_BAY_2\n             ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudControlCenter }; // nastaveni save na checkpointu nebo ne\n            m_objectives.Add(findSecurityControl);\n            findSecurityControl.OnMissionSuccess += FindSecurityControl_OnMissionSuccess;\n\n            var talkWith3 = new MyObjectiveDialog(\n            MyTextsWrapperEnum.CHINESE_TRANSMITTER_DIALOGUE_3_Name,\n            MyMissionID.CHINESE_TRANSMITTER_DIALOGUE_3,\n            MyTextsWrapperEnum.CHINESE_TRANSMITTER_DIALOGUE_3_Description,\n            null,\n            this,\n            new MyMissionID[] { MyMissionID.CHINESE_TRANSMITTER_FIND_SECURITY_CONTROL},\n            dialogId: MyDialogueEnum.CHINESE_TRANSMITTER_0400_SECURITY_ROOM\n            ) { SaveOnSuccess = false };\n            m_objectives.Add(talkWith3);\n\n            var destroyGenerator = new MyObjectiveDestroy( // Var is used to call functions on that member\n                 (MyTextsWrapperEnum.CHINESE_TRANSMITTER_DESTROY_SECURITY_CONTROL_Name),\n                 MyMissionID.CHINESE_TRANSMITTER_DESTROY_SECURITY_CONTROL,\n                 (MyTextsWrapperEnum.CHINESE_TRANSMITTER_DESTROY_SECURITY_CONTROL_Description),\n                 null,\n                 this,\n                 new MyMissionID[] { MyMissionID.CHINESE_TRANSMITTER_DIALOGUE_3, },\n                 new List<uint> { (uint)EntityID.Generator },\n                 new List<uint>(),\n                 true\n             ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudGenerator };\n            destroyGenerator.MissionEntityIDs.Add((uint)EntityID.Generator);\n            m_objectives.Add(destroyGenerator); // pridani do seznamu submisi\n            destroyGenerator.OnMissionSuccess += DestroyMSSucces;\n\n           /*  var talkWith4 = new MyObjectiveDialog(\n            new StringBuilder(\"Find the comand center\"),\n            MyMissionID.CHINESE_TRANSMITTER_DIALOGUE_4,\n            new StringBuilder(\"\"),\n            null,\n            this,\n            new MyMissionID[] { MyMissionID.CHINESE_TRANSMITTER_DESTROY_SECURITY_CONTROL, },\n            dialogId: MyDialogueEnum.CHINESE_TRANSMITTER_0500_GENERATOR_DESTROYED\n            ) { SaveOnSuccess = false };\n            m_objectives.Add(talkWith4);*/\n\n\n            var findCIC = new MyObjective( // One member of that list - je to MySubmission takze cilem je doletet do checkpointu\n                 (MyTextsWrapperEnum.CHINESE_TRANSMITTER_FIND_CIC_Name), // nazev submise\n                 MyMissionID.CHINESE_TRANSMITTER_FIND_CIC, // id submise\n                 (MyTextsWrapperEnum.CHINESE_TRANSMITTER_FIND_CIC_Description), // popis submise\n                 null,\n                 this,\n                 new MyMissionID[] { MyMissionID.CHINESE_TRANSMITTER_DESTROY_SECURITY_CONTROL, }, // ID submisi ktere musi byt splneny - je to prazdne takze je to prvni submise\n                 new MyMissionLocation(baseSector, (uint)EntityID.FindCICDummy), // ID of dummy point of checkpoint\n                 startDialogId: MyDialogueEnum.CHINESE_TRANSMITTER_0500_GENERATOR_DESTROYED\n             ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudCommandCenter }; // nastaveni save na checkpointu nebo ne\n            m_objectives.Add(findCIC); // pridani do seznamu submisi\n            findCIC.OnMissionSuccess += findCICSucces;\n\n            m_talkWith5 = new MyObjectiveDialog(\n            (MyTextsWrapperEnum.CHINESE_TRANSMITTER_DIALOGUE_5_Name),\n            MyMissionID.CHINESE_TRANSMITTER_DIALOGUE_5,\n            (MyTextsWrapperEnum.CHINESE_TRANSMITTER_DIALOGUE_5_Description),\n            null,\n            this,\n            new MyMissionID[] { MyMissionID.CHINESE_TRANSMITTER_FIND_CIC,},\n            dialogId: MyDialogueEnum.CHINESE_TRANSMITTER_0600_CIC_FOUND\n            ) { SaveOnSuccess = false };\n            m_objectives.Add(m_talkWith5);\n\n            m_hackCIC = new MyObjectiveEnablePrefabs(\n             (MyTextsWrapperEnum.CHINESE_TRANSMITTER_OPEN_CIC_Name),\n             MyMissionID.CHINESE_TRANSMITTER_OPEN_CIC,\n             (MyTextsWrapperEnum.CHINESE_TRANSMITTER_OPEN_CIC_Description),\n             null,\n             this,\n             new MyMissionID[] { MyMissionID.CHINESE_TRANSMITTER_DIALOGUE_5 },\n             null,\n             new List<uint> { (uint)EntityID.HUB },\n             new List<uint> { (uint)EntityID.CICDoors_1, (uint)EntityID.CICDoors_2 }\n             ) { HudName = MyTextsWrapperEnum.HudSecurityHub };\n            m_objectives.Add(m_hackCIC);\n\n         \n            var talkWith6 = new MyObjectiveDialog(\n            (MyTextsWrapperEnum.CHINESE_TRANSMITTER_DIALOGUE_6_Name),\n            MyMissionID.CHINESE_TRANSMITTER_DIALOGUE_6,\n            (MyTextsWrapperEnum.CHINESE_TRANSMITTER_DIALOGUE_6_Description),\n            null,\n            this,\n            new MyMissionID[] { MyMissionID.CHINESE_TRANSMITTER_OPEN_CIC},\n            dialogId: MyDialogueEnum.CHINESE_TRANSMITTER_0700_HUB_HACKED\n            ) { SaveOnSuccess = false };\n            talkWith6.MissionEntityIDs.Add((uint)EntityID.InsideCICDummy);\n            m_objectives.Add(talkWith6);\n\n            m_placeRadarMission = new MyUseObjective(\n               (MyTextsWrapperEnum.CHINESE_TRANSMITTER_PLACE_DEVICE_Name),\n               MyMissionID.CHINESE_TRANSMITTER_PLACE_DEVICE,\n               (MyTextsWrapperEnum.CHINESE_TRANSMITTER_PLACE_DEVICE_Description),\n               null,\n               this,\n               new MyMissionID[] { MyMissionID.CHINESE_TRANSMITTER_DIALOGUE_6, },\n               new MyMissionLocation(baseSector, (uint)EntityID.InsideCICDummy),\n               MyTextsWrapperEnum.PressToPlaceDetector,\n               MyTextsWrapperEnum.DetectorPlacement,\n               MyTextsWrapperEnum.DeployingInProgress,\n               5000\n                //StartDialogId: MyDialogueEnum.CHINESETRANSMITTER_0700_HUB_HACKED\n           ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.Nothing };\n            m_placeRadarMission.OnMissionSuccess += PlaceRadarSucces;\n            m_objectives.Add(m_placeRadarMission);\n\n          /*   talkWith7 = new MyObjectiveDialog(\n            new StringBuilder(\"Help Tarja and Valentin\"),\n            MyMissionID.CHINESE_TRANSMITTER_DIALOGUE_7,\n            new StringBuilder(\"\"),\n            null,\n            this,\n            new MyMissionID[] { MyMissionID.CHINESE_TRANSMITTER_PLACE_DEVICE},\n            dialogId: MyDialogueEnum.CHINESE_TRANSMITTER_1000_DETECTOR_PLACED\n            ) { SaveOnSuccess = false };\n            m_objectives.Add(talkWith7);*/\n\n            m_escape = new MyObjective( // One member of that list - je to MySubmission takze cilem je doletet do checkpointu\n                (MyTextsWrapperEnum.CHINESE_TRANSMITTER_ESCAPE_Name), // nazev submise\n                MyMissionID.CHINESE_TRANSMITTER_ESCAPE, // id submise\n                (MyTextsWrapperEnum.CHINESE_TRANSMITTER_ESCAPE_Description), // popis submise\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.CHINESE_TRANSMITTER_PLACE_DEVICE }, // ID submisi ktere musi byt splneny - je to prazdne takze je to prvni submise\n                new MyMissionLocation(baseSector, (uint)EntityID.EscapeDummy),\n                startDialogId: MyDialogueEnum.CHINESE_TRANSMITTER_0800_TRANSMITTER_PLACED// ID of dummy point of checkpoint\n            ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.Nothing }; // nastaveni save na checkpointu nebo ne\n            m_objectives.Add(m_escape); // pridani do seznamu submisi\n            m_escape.OnMissionSuccess += Escape2MSSuccess;\n\n             /*var talkWith8 = new MyObjectiveDialog(\n            new StringBuilder(\"Help Tarja and Valentin\"),\n            MyMissionID.CHINESE_TRANSMITTER_DIALOGUE_8,\n            new StringBuilder(\"Help Tarja and Valentin\"),\n            null,\n            this,\n            new MyMissionID[] {MyMissionID.CHINESE_TRANSMITTER_ESCAPE},\n            dialogId: MyDialogueEnum.CHINESE_TRANSMITTER_0800_ESCAPE_1\n            ) { SaveOnSuccess = false };\n            m_objectives.Add(talkWith8);\n\n            */\n\n            var escape3 = new MyObjective( // One member of that list - je to MySubmission takze cilem je doletet do checkpointu\n                 (MyTextsWrapperEnum.CHINESE_TRANSMITTER_ESCAPE3_Name), // nazev submise\n                 MyMissionID.CHINESE_TRANSMITTER_ESCAPE3, // id submise\n                 (MyTextsWrapperEnum.CHINESE_TRANSMITTER_ESCAPE3_Description), // popis submise\n                 null,\n                 this,\n                 new MyMissionID[] { MyMissionID.CHINESE_TRANSMITTER_ESCAPE }, // ID submisi ktere musi byt splneny - je to prazdne takze je to prvni submise\n                 new MyMissionLocation(baseSector, MyMissionLocation.MADELYN_HANGAR), // ID of dummy point of checkpoint\n                 startDialogId: MyDialogueEnum.CHINESE_TRANSMITTER_0900_ESCAPE_2,\n                 successDialogId: MyDialogueEnum.CHINESE_TRANSMITTER_1000_MISSION_COMPLETE,\n                 radiusOverride: MyMissionLocation.MADELYN_HANGAR_RADIUS\n             ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudMadelynsSapho }; // nastaveni save na checkpointu nebo ne\n            m_objectives.Add(escape3); // pridani do seznamu submisi\n\n            m_talkWith5.OnMissionSuccess += TimeRush; \n        }\n       \n\n        void LootSucces(MyMissionBase sender)\n        {\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Loot_Spawn);\n            MyScriptWrapper.AddNotification(MyScriptWrapper.CreateNotification(MyTextsWrapperEnum.TarjaAndValentinStaying, MyGuiManager.GetFontMinerWarsGreen(), 5000));\n        }\n\n        void FindSecurityControl_OnMissionSuccess(MyMissionBase sender)\n        {\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Security_Spawn);\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Security_Spawn1);\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.FindSecurity_Spawn);\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Spawn_cargo);\n        }\n\n        void DestroyMSSucces(MyMissionBase sender)\n        {\n            foreach (var pc in m_pc)\n            {\n                 MyScriptWrapper.SetEntityEnabled(pc, true);\n            }\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.DestroyGenerator_Spawn);\n        }\n       \n        void findCICSucces(MyMissionBase sender)\n        {\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.FindCIC_Spawn);\n        }\n\n        void Escape2MSSuccess(MyMissionBase sender)\n        {\n            \n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Escape_Spawn1);\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Escape_Spawn2);\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Escape_Spawn3);\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Escape_Spawn4);\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.CIC_Charge);\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.StressOrTimeRush);\n            MyScriptWrapper.Follow(MySession.PlayerShip, m_ravengirl);\n            MyScriptWrapper.Follow(MySession.PlayerShip, m_ravenguy);\n            MyScriptWrapper.StopTransition(3);\n        }\n\n        void PlaceRadarSucces(MyMissionBase sender)\n        {\n            MyScriptWrapper.Highlight((uint) EntityID.Radar, false, this);\n            MyScriptWrapper.EnablePhysics((uint) EntityID.Radar, true);\n            MyScriptWrapper.DeactivateSpawnPoint((uint) EntityID.Spawn_cargo);\n            //HackCIC.Success();\n            //MyScriptWrapper.UnhideEntity(MyScriptWrapper.GetEntity(\"RavenGuy\"));\n            //MyScriptWrapper.UnhideEntity(MyScriptWrapper.GetEntity(\"RavenGirl\"));\n\n            MyScriptWrapper.ActivateSpawnPoint((uint) EntityID.Spawn_Unhide);\n\n            //var inventory = MyScriptWrapper.GetPlayerInventory();\n            // don't remove radar!!! alien object detector is smallship tool not radar, and you must close inventory item, when you revemo it from inventory\n            //var items = new List<MyInventoryItem>();\n            //inventory.GetInventoryItems(ref items, MyMwcObjectBuilderTypeEnum.SmallShip_Radar, null);//SmallShip_AlienObjectDetector,\n\n            //inventory.RemoveInventoryItems(items, false);            \n            //inventory.RemoveInventoryItems(MyMwcObjectBuilderTypeEnum.SmallShip_Tool, (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.ALIEN_OBJECT_DETECTOR, true);\n            m_unhidedetector.On();\n        }\n\n        void DetectorAction(MyEntity detector, MyEntity bot, int meetCriterias)\n        {\n            if (detector == m_detector && MyScriptWrapper.IsPlayerShip(bot) && m_hackCIC.IsAvailable())\n            {\n                m_hackCIC.Success();\n                \n               // m_detector.OnEntityEnter -= DetectorAction;\n            }\n            if (detector == m_cargodetector && bot == MyScriptWrapper.GetEntity(\"RavenGirl\"))\n            {\n                if (!MyScriptWrapper.IsMissionFinished(MyMissionID.CHINESE_TRANSMITTER_ESCAPE))\n                {\n                    MyScriptWrapper.StopFollow(m_ravengirl);\n                    MyScriptWrapper.StopFollow(m_ravenguy);\n                }\n            }\n            if (detector == m_hidedetector && MyScriptWrapper.IsPlayerShip(bot))\n            {\n                //MyScriptWrapper.HideEntity(MyScriptWrapper.GetEntity(\"RavenGuy\"));\n                //MyScriptWrapper.HideEntity(MyScriptWrapper.GetEntity(\"RavenGirl\"));\n            }\n        }\n\n        void TimeRush(MyMissionBase sender)\n        {\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.StressOrTimeRush, 3);\n        }\n\n\n        public override void Load() // vykona se jednou na zacatku\n        {            \n            MyScriptWrapper.EnsureInventoryItem(MyScriptWrapper.GetCentralInventory(), MyMwcObjectBuilderTypeEnum.SmallShip_HackingTool, (int)MyMwcObjectBuilder_SmallShip_HackingTool_TypesEnum.Level_2);\n            MyScriptWrapper.HideEntity(MyScriptWrapper.GetEntity((uint)EntityID.PC64)); // Hiding old useless HUB just for case we will need it again\n            m_detector = MyScriptWrapper.GetDetector(MyScriptWrapper.GetEntity((uint)EntityID.Detector));\n            m_detector.On();\n            m_detector.OnEntityEnter += DetectorAction;\n            m_cargodetector = MyScriptWrapper.GetDetector(MyScriptWrapper.GetEntity((uint)EntityID.CargoDetector));\n            m_cargodetector.On();\n            m_cargodetector.OnEntityEnter += DetectorAction;\n            m_hidedetector = MyScriptWrapper.GetDetector(MyScriptWrapper.GetEntity((uint)EntityID.Detector_Hide));\n            m_hidedetector.On();\n            m_hidedetector.OnEntityEnter += DetectorAction;\n            m_unhidedetector = MyScriptWrapper.GetDetector(MyScriptWrapper.GetEntity((uint)EntityID.Detector_Unhide));\n            \n            m_unhidedetector.OnEntityEnter += DetectorAction;\n            m_ravengirl = MyScriptWrapper.GetEntity(\"RavenGirl\");\n            m_ravenguy = MyScriptWrapper.GetEntity(\"RavenGuy\");\n            \n           \n            foreach (var pc in m_pc)\n            {\n                MyScriptWrapper.RemoveEntityMark(MyScriptWrapper.GetEntity(pc));\n            }\n            \n            MyScriptWrapper.Highlight((uint)EntityID.Radar, true, this);\n            MyScriptWrapper.EnablePhysics((uint)EntityID.Radar, false);\n            \n            base.Load();\n        }\n\n        public override void Unload()\n        {\n            m_detector = null;\n            m_cargodetector = null;\n            m_hidedetector = null;\n            m_unhidedetector = null;\n            m_ravengirl = null;\n            m_ravenguy = null;\n\n            base.Unload();\n        }\n\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/SinglePlayer/MyChineseTransportMission.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing MinerWars.AppCode.Game.HUD;\nusing MinerWars.AppCode.Game.Entities.SubObjects;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Missions.Objectives;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.AppCode.Game.Audio.Dialogues;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.Resources;\nusing MinerWars.AppCode.Game.Missions.Components;\n\nnamespace MinerWars.AppCode.Game.Missions.SinglePlayer\n{\n    class MyChineseTransportMission : MyMission\n    {\n        #region Entities\n\n        MyEntity m_stealMS;\n        MyEntity m_ms1;\n        MyEntity m_ms2;\n        MyEntity m_ms3;\n        MyEntity m_ms4;\n        MyEntity m_ms5;\n        MyEntity m_ms6;\n        MySmallShipBot m_marcus;\n        MySmallShipBot m_tarja;\n\n        #endregion\n\n        private List<List<uint>> m_validateIDlists;\n\n        #region Objectives\n\n        MyObjective m_mission01_getFirstKey;\n        MyObjective m_mission02_reachTunnel_1;\n        MyObjective m_mission03_reachTransmitter;\n        MyObjectiveDestroy m_mission04_killGuards;\n        MyMultipleUseObjective m_mission05HackTransmitters;\n        MyUseObjective m_mission06_placeBomb;\n        MyObjective m_mission07_runExplosion;\n        MyObjective m_mission08_lookOnExplosion;\n        MyObjective m_mission09_reachTunnel2;\n        MyObjective m_mission10_pastTunnel2;\n        MyObjective m_mission11_reachHangarHack;\n        MyObjective m_mission12_hackHangarServicePC;\n        MyDestroyWavesObjective m_mission13_defendMarcus;\n        MyObjectiveDestroy m_mission14_killBoss;\n        MyObjective m_mission15_landIn;\n\n        #endregion\n\n        #region Detector\n\n        MyEntityDetector m_detector_tunnelExplosion;\n        MyEntityDetector m_detector_ambushExplosion;\n        MyEntityDetector m_detector_headshake1;\n        MyEntityDetector m_detector_headshake2;\n        MyEntityDetector m_detector_headshake3;\n        MyEntityDetector m_detector_reachHangar;\n        MyEntityDetector m_detector_bots1;\n        MyEntityDetector m_detector_bots2;\n        MyEntityDetector m_detector_bots3;\n        MyEntityDetector m_detector_bots4;\n        MyEntityDetector m_detector_bots5;\n        MyEntityDetector m_detector_bots6;\n        MyEntityDetector m_detector_bots7;\n        MyEntityDetector m_detector_bots8;\n        MyEntityDetector m_detector_bots9;\n        MyEntityDetector m_detector_bots10;\n        MyEntityDetector m_detector_marcusLeave1;\n        MyEntityDetector m_detector_marcusLeave2;\n\n        #endregion\n\n        #region EntityIDs\n\n        enum EntityID // list of IDs used in script\n        {\n            StartLocation = 187309,\n            ReachTunnel1 = 187267,\n            ReachTransmitter = 187268,\n            PlaceBomb = 187314,\n            RunExplosion = 187363,\n            ReachTunnel2 = 187270,\n            PastTunnel2 = 187272,\n            ReachHacking = 187364,\n            DefendMS = 10363,\n            Land = 180700,\n            MS1 = 16780285,\n            MS2 = 16780373,\n            MS3 = 16780417,\n            MS4 = 16780329,\n            MS5 = 16780461,\n            MS6 = 182340,\n            MSSteal = 179850,\n            HUBGetKey = 193646,\n            HUBHackTrans1 = 192364,\n            HUBHackTrans2 = 192367,\n            HUBHackHangar = 196818,\n            DetectorTunnelExplosion = 187324,\n            DetectorAmbushExplosion = 187322,\n            DetectorHeadshake1 = 188137,\n            DetectorHeadshake2 = 188135,\n            DetectorHeadshake3 = 188129,\n            DetectorReachHangar = 189273,\n            DestructionTunnel = 180,\n            DestructionTransmitter = 182838,\n            DestructionBuilding = 182760,\n            DetectorBots1 = 196871,\n            DetectorBots2 = 196873,\n            DetectorBots3 = 196875,\n            DetectorBots4 = 196878,\n            DetectorBots5 = 196880,\n            DetectorBots7 = 197310,\n            DetectorBots8 = 197312,\n            DetectorBots9 = 197323,\n            DetectorBots10 = 197327,\n            DetectorMarcusLeave1 = 198507,\n            DetectorMarcusLeave2 = 198509,\n            SpawnBots1_1 = 187231,\n            SpawnBots2_1 = 187232,\n            SpawnBots2_2 = 4839,\n            SpawnBots3_1 = 187233,\n            SpawnBots3_2 = 196877,\n            SpawnBots4_1 = 187234,\n            SpawnBots4_2 = 187235,\n            SpawnBots5_1 = 187236,\n            SpawnBots5_2 = 196882,\n            SpawnBots5_3 = 187237,\n            SpawnBots6_1 = 186917,\n            SpawnBots7_1 = 18140,\n            SpawnBots8_1 = 187320,\n            SpawnBots8_2 = 27485,\n            SpawnBots9_1 = 18143,\n            SpawnBots9_2 = 197325,\n            SpawnBots10_1 = 197326,\n            SpawnBots10_2 = 197329,\n            SpawnBotsLast = 18147,\n            SpawnTunnelDestruction = 187238,\n            SpawnAmbush = 27486,\n            SpawnBoss = 187284,\n            SpawnMarcus = 187751,\n            SpawnTarja = 1,\n            SpawnBossCompanion1 = 187286,\n            SpawnBossCompanion2 = 187285,\n            WaypointReachedMarcus = 187754,\n            ExplosionAmbush = 187315,\n            ExplosionTunnel = 187313,\n            Bomb = 191603,\n            UnlockDoors = 191982,\n            MarcusWaypointReached = 199916,\n            MarcusLeavePosition = 199918,\n            ExplosionPrefab = 16778085,\n            ExplosionTransmitter = 16778086,\n            DoorToHub = 167944,\n        }\n\n        List<uint> m_explosion1 = new List<uint>\n            {\n                187327,\n                187330,\n                187335,\n                187339,\n                187344\n            };\n\n        List<uint> m_explosion2 = new List<uint>\n            {\n                187328,\n                187331,\n                187336,\n                187340,\n                187345\n            };\n\n        List<uint> m_explosion3 = new List<uint>\n            {\n                187329,\n                187332,\n                187337,\n                187341\n            };\n\n        List<uint> m_explosion4 = new List<uint>\n            {\n                187338,\n                187342,\n                187343\n            };\n\n        List<uint> m_explosionFinal = new List<uint>\n            {\n                187333,\n                187334,\n                187346,\n                187347,\n                187348\n            };\n\n        List<uint> m_transmitterPrefabs1 = new List<uint>\n            {\n                184588,\n                184614,\n                184617,\n                184641,\n                184640,\n                184639,\n                184623,\n                184624,\n                184625,\n                184633,\n                184632,\n                182768\n            };\n\n        List<uint> m_transmitterPrefabs2 = new List<uint>\n            {\n                184586,\n                184592,\n                184615,\n                184616,\n                184638,\n                184622,\n                184635,\n                184634,\n                182767,\n                186431,\n                186433,\n                186409,\n                186407,\n                186408,\n                186406,\n                186410,\n                185566,\n                185565,\n                185562,\n                185564,\n                185563,\n                185557,\n                185561,\n                185560,\n                185556,\n                185559,\n                186411,\n                186412,\n                186416,\n                186413,\n                186414,\n                186415,\n                184655,\n                185098,\n                192370,\n                192371,\n                192369,\n                192372,\n                192368,\n                192373\n            };\n\n        List<uint> m_spawnsStart = new List<uint>\n            {\n                186919,\n                186920,\n                4430\n            };\n\n        List<uint> m_spawnsCenterAsteroid = new List<uint>\n            {\n                187239,\n                187257,\n                187258\n            };\n\n        List<uint> m_spawnsTransmitter = new List<uint>\n            {\n                187249,\n                187255,\n                187251,\n                187252,\n                187253,\n                187254,\n                187244,\n                187250\n            };\n\n        List<uint> m_spawnsCenterAsteroidOut = new List<uint>\n            {\n                187259,\n                4066,\n                2288\n            };\n\n        List<uint> m_spawnsWave1 = new List<uint> { 187274, 187273 };\n\n        List<uint> m_spawnsWave2 = new List<uint> { 187279, 187275 };\n\n        List<uint> m_spawnsWave3 = new List<uint> { 187299, 187280 };\n\n        List<uint> m_spawnsWave4 = new List<uint> { 187276, 187283 };\n\n        List<uint> m_spawnsWave5 = new List<uint> { 187282, 187278, 187281 };\n        \n        uint[] m_spawns = new uint[] { 187274, 187273, 187279, 187275, 187299, 187280, 187276, 187283, 187282, 187278, 187281 };\n\n        List<uint> m_debrisAfterExplosion = new List<uint>\n            {\n                193177,\n                193173,\n                193180,\n                193176,\n                193207,\n                193209,\n                193213,\n                193212,\n                193208\n            };\n\n        bool m_doorDied;\n\n        #endregion\n\n        public MyChineseTransportMission()\n        {\n            #region Validate IDs\n\n            m_validateIDlists = new List<List<uint>>();\n            m_validateIDlists.Add(m_explosion1);\n            m_validateIDlists.Add(m_explosion2);\n            m_validateIDlists.Add(m_explosion3);\n            m_validateIDlists.Add(m_explosion4);\n            m_validateIDlists.Add(m_explosionFinal);\n            m_validateIDlists.Add(m_transmitterPrefabs1);\n            m_validateIDlists.Add(m_transmitterPrefabs2);\n            m_validateIDlists.Add(m_spawnsStart);\n            m_validateIDlists.Add(m_spawnsCenterAsteroid);\n            m_validateIDlists.Add(m_spawnsTransmitter);\n            m_validateIDlists.Add(m_spawnsCenterAsteroidOut);\n            m_validateIDlists.Add(m_spawnsWave1);\n            m_validateIDlists.Add(m_spawnsWave2);\n            m_validateIDlists.Add(m_spawnsWave3);\n            m_validateIDlists.Add(m_spawnsWave4);\n            m_validateIDlists.Add(m_spawnsWave5);\n\n            #endregion\n\n            ID = MyMissionID.CHINESE_TRANSPORT; /* ID must be added to MyMissions.cs */\n            Name = MyTextsWrapperEnum.CHINESE_TRANSPORT;\n            Description = MyTextsWrapperEnum.CHINESE_TRANSPORT_Description; // \"Destroy the transmitter and steal the chinese transporter\\n\"\n            DebugName = new StringBuilder(\"08b-Chinese mines of Changde\");\n            Flags = MyMissionFlags.Story;\n\n            MyMwcVector3Int baseSector = new MyMwcVector3Int(-4274372, 0, 4874227); // Story sector of the script\n\n            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation); // Starting dummy point\n\n            RequiredMissions = new MyMissionID[] { MyMissionID.JUNKYARD_CONVINCE };\n            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.CHINESE_TRANSPORT_LAND_IN };\n            RequiredActors = new MyActorEnum[] { MyActorEnum.MADELYN, MyActorEnum.MARCUS, MyActorEnum.TARJA, MyActorEnum.VALENTIN };\n\n            m_objectives = new List<MyObjective>(); // Creating of list of submissions\n\n\n            m_mission01_getFirstKey = new MyObjective( // One member of that list - its type defines the type of submission - MySubmission means fly to the dummypoint to success. Here it is var so you cannot call methods on it\n                (MyTextsWrapperEnum.CHINESE_TRANSPORT_GET_SECURITY_KEY_Name), // Name of the submission\n                MyMissionID.CHINESE_TRANSPORT_GET_SECURITY_KEY, // ID of the submission - must be added to MyMissions.cs\n                (MyTextsWrapperEnum.CHINESE_TRANSPORT_GET_SECURITY_KEY_Description), // Description of the submission\n                null,\n                this,\n                new MyMissionID[] { }, // ID of submissions required to make this submission available - it is clear so this submission is the starting submission\n                null,\n                startDialogId: MyDialogueEnum.CHINESE_TRANSPORT_0100_INTRODUCE\n            )\n                {\n                    SaveOnSuccess = false,\n                    HudName = MyTextsWrapperEnum.HudHub\n                };\n            m_mission01_getFirstKey.MissionEntityIDs.Add((uint)EntityID.HUBGetKey);\n            m_objectives.Add(m_mission01_getFirstKey);\n\n            m_mission02_reachTunnel_1 = new MyObjective(\n                (MyTextsWrapperEnum.CHINESE_TRANSPORT_REACH_TUNNEL_1_Name),\n                MyMissionID.CHINESE_TRANSPORT_REACH_TUNNEL_1,\n                (MyTextsWrapperEnum.CHINESE_TRANSPORT_REACH_TUNNEL_1_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.CHINESE_TRANSPORT_GET_SECURITY_KEY },\n                new MyMissionLocation(baseSector, (uint) EntityID.ReachTunnel1),\n                startDialogId: MyDialogueEnum.CHINESE_TRANSPORT_0200_FIRST_DEVICE_HACKED\n                ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudTunnel };\n            m_objectives.Add(m_mission02_reachTunnel_1);\n\n            m_mission03_reachTransmitter = new MyObjective(\n                (MyTextsWrapperEnum.CHINESE_TRANSPORT_REACH_TRANSMITTER_Name),\n                MyMissionID.CHINESE_TRANSPORT_REACH_TRANSMITTER,\n                (MyTextsWrapperEnum.CHINESE_TRANSPORT_REACH_TRANSMITTER_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.CHINESE_TRANSPORT_REACH_TUNNEL_1 },\n                 new MyMissionLocation(baseSector, (uint)EntityID.ReachTransmitter)\n            ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudTransmitter };\n            m_objectives.Add(m_mission03_reachTransmitter);\n\n            m_mission04_killGuards = new MyObjectiveDestroy( // Var is used to call functions on that member\n                 (MyTextsWrapperEnum.CHINESE_TRANSPORT_KILL_GUARDS_Name),\n                 MyMissionID.CHINESE_TRANSPORT_KILL_GUARDS,\n                 (MyTextsWrapperEnum.CHINESE_TRANSPORT_KILL_GUARDS_Description),\n                 null,\n                 this,\n                 new MyMissionID[] { MyMissionID.CHINESE_TRANSPORT_REACH_TRANSMITTER },\n                 null,\n                 m_spawnsTransmitter,\n                 true,\n                 startDialogID: MyDialogueEnum.CHINESE_TRANSPORT_0500_MARCUS_IS_HERE\n             ) { SaveOnSuccess = true };\n            m_objectives.Add(m_mission04_killGuards);\n\n            m_mission05HackTransmitters = new MyMultipleUseObjective(\n                (MyTextsWrapperEnum.CHINESE_TRANSPORT_HACK_TRANSMITTER_Name),\n                MyMissionID.CHINESE_TRANSPORT_HACK_TRANSMITTER,\n                (MyTextsWrapperEnum.CHINESE_TRANSPORT_HACK_TRANSMITTER_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.CHINESE_TRANSPORT_KILL_GUARDS },\n                MyTextsWrapperEnum.HoldToUseSecurityKey,\n                MyTextsWrapperEnum.Using,\n                MyTextsWrapperEnum.DeactivatingInProgress,\n                2000,\n                new List<uint> { (uint) EntityID.HUBHackTrans1, (uint) EntityID.HUBHackTrans2 }\n                )\n                {\n                    StartDialogId = MyDialogueEnum.CHINESE_TRANSPORT_0600_DESTROY_THE_TRANSMITTER, \n                    SaveOnSuccess = false,\n                    RadiusOverride = 30,\n                    MakeEntityIndestructible = false,\n                    FailIfEntityDestroyed = true\n                };\n            m_objectives.Add(m_mission05HackTransmitters);\n\n            m_mission06_placeBomb = new MyUseObjective(\n                (MyTextsWrapperEnum.CHINESE_TRANSPORT_PLACE_BOMB_Name),\n                MyMissionID.CHINESE_TRANSPORT_PLACE_BOMB,\n                (MyTextsWrapperEnum.CHINESE_TRANSPORT_PLACE_BOMB_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.CHINESE_TRANSPORT_HACK_TRANSMITTER },\n                new MyMissionLocation(baseSector, (uint)EntityID.PlaceBomb),\n                MyTextsWrapperEnum.PressToPlaceBomb,\n                MyTextsWrapperEnum.Bomb,\n                MyTextsWrapperEnum.PlacementInProgress,\n                5000,\n                MyUseObjectiveType.Activating, \n                startDialogId: MyDialogueEnum.CHINESE_TRANSPORT_0670_disabling_the_terminals\n            ) { SaveOnSuccess = false };\n            m_mission06_placeBomb.MissionEntityIDs.Add((uint) EntityID.Bomb);\n            m_objectives.Add(m_mission06_placeBomb);\n\n            m_mission07_runExplosion = new MyObjective(\n                (MyTextsWrapperEnum.CHINESE_TRANSPORT_RUN_EXPLOSION_Name),\n                MyMissionID.CHINESE_TRANSPORT_RUN_EXPLOSION,\n                (MyTextsWrapperEnum.CHINESE_TRANSPORT_RUN_EXPLOSION_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.CHINESE_TRANSPORT_PLACE_BOMB },\n                new MyMissionLocation(baseSector, (uint)EntityID.RunExplosion),\n                startDialogId: MyDialogueEnum.CHINESE_TRANSPORT_0700_RUN\n            ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudSafeArea };\n            m_objectives.Add(m_mission07_runExplosion);\n\n            m_mission08_lookOnExplosion = new MyObjective(\n              (MyTextsWrapperEnum.CHINESE_TRANSPORT_LOOK_ON_EXPLOSION_Name),\n              MyMissionID.CHINESE_TRANSPORT_LOOK_ON_EXPLOSION,\n              (MyTextsWrapperEnum.CHINESE_TRANSPORT_LOOK_ON_EXPLOSION_Description),\n              null,\n              this,\n              new MyMissionID[] { MyMissionID.CHINESE_TRANSPORT_RUN_EXPLOSION },\n              new MyMissionLocation(baseSector, (uint)EntityID.DestructionTransmitter)\n          ) { SaveOnSuccess = true };\n            m_objectives.Add(m_mission08_lookOnExplosion);\n\n            m_mission09_reachTunnel2 = new MyObjective(\n                (MyTextsWrapperEnum.CHINESE_TRANSPORT_REACH_TUNNEL_2_Name),\n                MyMissionID.CHINESE_TRANSPORT_REACH_TUNNEL_2,\n                (MyTextsWrapperEnum.CHINESE_TRANSPORT_REACH_TUNNEL_2_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.CHINESE_TRANSPORT_LOOK_ON_EXPLOSION },\n                new MyMissionLocation(baseSector, (uint)EntityID.ReachTunnel2),\n                startDialogId: MyDialogueEnum.CHINESE_TRANSPORT_0800_GO_TO_SECOND_BASE\n            ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudTunnel };\n            m_objectives.Add(m_mission09_reachTunnel2);\n\n            m_mission10_pastTunnel2 = new MyObjective(\n                (MyTextsWrapperEnum.CHINESE_TRANSPORT_PAST_TUNNEL_2_Name),\n                MyMissionID.CHINESE_TRANSPORT_PAST_TUNNEL_2,\n                (MyTextsWrapperEnum.CHINESE_TRANSPORT_PAST_TUNNEL_2_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.CHINESE_TRANSPORT_REACH_TUNNEL_2 },\n                new MyMissionLocation(baseSector, (uint)EntityID.PastTunnel2),\n                startDialogId: MyDialogueEnum.CHINESE_TRANSPORT_0850_INSIDE_TUNNEL,\n                successDialogId: MyDialogueEnum.CHINESE_TRANSPORT_0900_SURRENDER\n            ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudEnd };\n            m_objectives.Add(m_mission10_pastTunnel2);\n\n            m_mission11_reachHangarHack = new MyObjective(\n                (MyTextsWrapperEnum.CHINESE_TRANSPORT_REACH_HANGAR_HACK_Name),\n                MyMissionID.CHINESE_TRANSPORT_REACH_HANGAR_HACK,\n                (MyTextsWrapperEnum.CHINESE_TRANSPORT_REACH_HANGAR_HACK_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.CHINESE_TRANSPORT_PAST_TUNNEL_2 },\n                new MyMissionLocation(baseSector, (uint)EntityID.ReachHacking),\n                successDialogId: MyDialogueEnum.CHINESE_TRANSPORT_1000_DOOR_BLOCKED\n            ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudServiceRoom };\n            m_mission11_reachHangarHack.OnMissionLoaded += Mission11ReachHangarHackOnOnMissionLoaded;\n            m_objectives.Add(m_mission11_reachHangarHack);\n\n            m_mission12_hackHangarServicePC = new MyObjective(\n                (MyTextsWrapperEnum.CHINESE_TRANSPORT_HACK_HANGAR_SERVICE_PC_Name),\n                MyMissionID.CHINESE_TRANSPORT_HACK_HANGAR_SERVICE_PC,\n                (MyTextsWrapperEnum.CHINESE_TRANSPORT_HACK_HANGAR_SERVICE_PC_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.CHINESE_TRANSPORT_REACH_HANGAR_HACK },\n                null\n                //startDialogId: MyDialogueEnum.CHINESE_TRANSPORT_1400_DOORS_UNLOCKED\n            ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudHub };\n            m_mission12_hackHangarServicePC.OnMissionLoaded += new MissionHandler(m_mission12_hackHangarServicePC_OnMissionLoaded);\n            m_objectives.Add(m_mission12_hackHangarServicePC);\n            m_mission12_hackHangarServicePC.MissionEntityIDs.Add((uint)EntityID.HUBHackHangar);\n\n            m_mission13_defendMarcus = new MyDestroyWavesObjective(\n               (MyTextsWrapperEnum.CHINESE_TRANSPORT_DEFEND_MARCUS_Name),\n               MyMissionID.CHINESE_TRANSPORT_DEFEND_MARCUS,\n               (MyTextsWrapperEnum.CHINESE_TRANSPORT_DEFEND_MARCUS_Description),\n               null,\n               this,\n               new MyMissionID[] { MyMissionID.CHINESE_TRANSPORT_HACK_HANGAR_SERVICE_PC },\n               null,\n               null,\n               null,\n               null,\n               4\n               )\n                {\n                    SaveOnSuccess = false,\n                    StartDialogId = MyDialogueEnum.CHINESE_TRANSPORT_1100_HELP_MARCUS\n                };\n            m_mission13_defendMarcus.AddWave(m_spawnsWave1);\n            m_mission13_defendMarcus.AddWave(m_spawnsWave2);\n            m_mission13_defendMarcus.AddWave(m_spawnsWave3);\n            m_mission13_defendMarcus.AddWave(m_spawnsWave4);\n            m_mission13_defendMarcus.AddWave(m_spawnsWave5);\n            m_mission13_defendMarcus.Components.Add(new MySpawnpointLimiter(m_spawns, 10));\n            m_objectives.Add(m_mission13_defendMarcus);\n\n            m_mission14_killBoss = new MyObjectiveDestroy( // Var is used to call functions on that member\n                 (MyTextsWrapperEnum.CHINESE_TRANSPORT_KILL_BOSS_Name),\n                 MyMissionID.CHINESE_TRANSPORT_KILL_BOSS,\n                 (MyTextsWrapperEnum.CHINESE_TRANSPORT_KILL_BOSS_Description),\n                 null,\n                 this,\n                 new MyMissionID[] { MyMissionID.CHINESE_TRANSPORT_DEFEND_MARCUS },\n                 null,\n                 new List<uint> { (uint)EntityID.SpawnBossCompanion1, (uint)EntityID.SpawnBossCompanion2, (uint)EntityID.SpawnBoss },\n                 true,\n                 startDialogID: MyDialogueEnum.CHINESE_TRANSPORT_1200_GENERAL_ARRIVAL\n             ) { SaveOnSuccess = true };\n            m_objectives.Add(m_mission14_killBoss);\n\n            m_mission15_landIn = new MyObjective(\n                (MyTextsWrapperEnum.CHINESE_TRANSPORT_LAND_IN_Name),\n                MyMissionID.CHINESE_TRANSPORT_LAND_IN,\n                (MyTextsWrapperEnum.CHINESE_TRANSPORT_LAND_IN_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.CHINESE_TRANSPORT_KILL_BOSS },\n                new MyMissionLocation(baseSector, (uint)EntityID.Land),\n                startDialogId: MyDialogueEnum.CHINESE_TRANSPORT_1300_LAND_IN\n            ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudShip };\n            m_objectives.Add(m_mission15_landIn);\n\n            m_mission01_getFirstKey.OnMissionLoaded += M01GetFirstKeyLoaded;\n            m_mission02_reachTunnel_1.OnMissionLoaded += M02ReachTunnel1Loaded;\n            m_mission03_reachTransmitter.OnMissionLoaded += M03ReachTransmitterLoaded;\n            m_mission04_killGuards.OnMissionLoaded += M04KillGuardsLoaded;\n            m_mission05HackTransmitters.OnMissionLoaded += M05HackTransmitterLoaded;\n            m_mission06_placeBomb.OnMissionLoaded += M06PlaceBombLoaded;\n            m_mission07_runExplosion.OnMissionLoaded += M07RunExplosionLoaded;\n            m_mission08_lookOnExplosion.OnMissionLoaded += M08LookOnExplosionLoaded;\n            m_mission09_reachTunnel2.OnMissionLoaded += M09ReachTunnel2Loaded;\n            m_mission10_pastTunnel2.OnMissionLoaded += M10PastTunnel2Loaded;\n            m_mission11_reachHangarHack.OnMissionLoaded += M11ReachHangarHackLoaded;\n            m_mission12_hackHangarServicePC.OnMissionLoaded += M12HackHangarServicePCLoaded;\n            m_mission13_defendMarcus.OnMissionLoaded += M13DefendMarcusLoaded;\n            m_mission13_defendMarcus.OnMissionCleanUp += Mission13DefendMarcusOnOnMissionCleanUp;\n            m_mission14_killBoss.OnMissionLoaded += M14KillBossLoaded;\n            m_mission14_killBoss.OnMissionCleanUp += M14KillBossUnloaded;\n            m_mission15_landIn.OnMissionLoaded += M15LandInLoaded;\n\n            m_mission06_placeBomb.OnMissionSuccess += M06PlaceBombSuccess;\n            m_mission05HackTransmitters.OnObjectUsedSucces += M05TransmittersSuccess;\n        }\n\n        void m_mission12_hackHangarServicePC_OnMissionLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.EntityHacked += MyScriptWrapper_EntityHackedAfterExplosion;\n        }\n\n        void Mission11ReachHangarHackOnOnMissionLoaded(MyMissionBase sender)\n        {\n            var door = MyScriptWrapper.GetEntity((uint) EntityID.DoorToHub) as MyPrefabKinematic;\n            if (door != null)\n            {\n                foreach (var part in door.Parts)\n                {\n                    if (part != null)\n                        part.OnDie += DoorDied;\n                }\n            }\n\n            m_doorDied = false;\n        }\n\n        void DoorDied(MyEntity entity, MyEntity killer)\n        {\n            entity.OnDie -= DoorDied;\n\n            if (!m_doorDied)\n            {\n                m_doorDied = true;\n                MyScriptWrapper.PlayDialogue(MyDialogueEnum.CHINESE_TRANSPORT_1400_DOORS_UNLOCKED);\n            }\n        }\n\n        public override void ValidateIds() // checks if all IDs in enum are loaded correctly\n        {\n            foreach (var value in Enum.GetValues(typeof(EntityID)))\n            {\n                MyScriptWrapper.GetEntity((uint)((value as EntityID?).Value));\n            }\n            foreach (List<uint> list in m_validateIDlists) \n            {\n                foreach (var item in list)\n                {\n                    MyScriptWrapper.GetEntity(item);\n                }\n            }\n          \n        }\n\n        private void Mission13DefendMarcusOnOnMissionCleanUp(MyMissionBase sender)\n        {\n            MyScriptWrapper.OnSpawnpointBotSpawned -= MyScriptWrapperOnOnSpawnpointBotSpawnedDefendMarcus;\n            MyScriptWrapper.RemoveEntityMark(m_stealMS);\n        }\n\n        public override void Update()\n        {\n            if (!IsMainSector)\n            {\n                return;\n            }\n\n            MoveMotherShipForward(m_ms1, 120.0f);\n            MoveMotherShipForward(m_ms2, 80.0f);\n            MoveMotherShipForward(m_ms3, 100.0f);\n            MoveMotherShipForward(m_ms4, 140.0f);\n            MoveMotherShipForward(m_ms5, 140.0f);\n            MoveMotherShipForwardDest(m_ms6, 70.0f, new Vector3(-2634f, 1490f, -8516f));\n\n            if (m_stealMS.IsDead())\n            {\n                Fail(MyTextsWrapperEnum.Fail_MothershipDestroyed);\n            }\n            base.Update();\n        }\n\n        public override void Load()\n        {\n            m_ms1 = MyScriptWrapper.GetEntity((uint)EntityID.MS1);\n            m_ms2 = MyScriptWrapper.GetEntity((uint)EntityID.MS2);\n            m_ms3 = MyScriptWrapper.GetEntity((uint)EntityID.MS3);\n            m_ms4 = MyScriptWrapper.GetEntity((uint)EntityID.MS4);\n            m_ms5 = MyScriptWrapper.GetEntity((uint)EntityID.MS5);\n            m_ms6 = MyScriptWrapper.GetEntity((uint)EntityID.MS6);\n            m_stealMS = MyScriptWrapper.GetEntity((uint)EntityID.MSSteal);\n            \n            MyScriptWrapper.EnsureInventoryItem(MyScriptWrapper.GetCentralInventory(), MyMwcObjectBuilderTypeEnum.SmallShip_HackingTool, (int)MyMwcObjectBuilder_SmallShip_HackingTool_TypesEnum.Level_2);\n\n            m_marcus = (MySmallShipBot)MyScriptWrapper.GetEntity(\"Marcus\");\n            m_tarja = (MySmallShipBot)MyScriptWrapper.GetEntity(\"RavenGirl\");\n\n            MyScriptWrapper.EnablePhysics((uint)EntityID.MS1, false);\n            MyScriptWrapper.EnablePhysics((uint)EntityID.MS2, false);\n            MyScriptWrapper.EnablePhysics((uint)EntityID.MS3, false);\n            MyScriptWrapper.EnablePhysics((uint)EntityID.MS4, false);\n            MyScriptWrapper.EnablePhysics((uint)EntityID.MS5, false);\n            MyScriptWrapper.EnablePhysics((uint)EntityID.MS6, false);\n\n\n            m_detector_reachHangar = MyScriptWrapper.GetDetector((uint)EntityID.DetectorReachHangar);\n            m_detector_tunnelExplosion = MyScriptWrapper.GetDetector((uint)EntityID.DetectorTunnelExplosion);\n            m_detector_ambushExplosion = MyScriptWrapper.GetDetector((uint)EntityID.DetectorAmbushExplosion);\n            m_detector_headshake1 = MyScriptWrapper.GetDetector((uint)EntityID.DetectorHeadshake1);\n            m_detector_headshake2 = MyScriptWrapper.GetDetector((uint)EntityID.DetectorHeadshake2);\n            m_detector_headshake3 = MyScriptWrapper.GetDetector((uint)EntityID.DetectorHeadshake3);\n            m_detector_bots1 = MyScriptWrapper.GetDetector((uint)EntityID.DetectorBots1);\n            m_detector_bots2 = MyScriptWrapper.GetDetector((uint)EntityID.DetectorBots2);\n            m_detector_bots3 = MyScriptWrapper.GetDetector((uint)EntityID.DetectorBots3);\n            m_detector_bots4 = MyScriptWrapper.GetDetector((uint)EntityID.DetectorBots4);\n            m_detector_bots5 = MyScriptWrapper.GetDetector((uint)EntityID.DetectorBots5);\n            m_detector_bots7 = MyScriptWrapper.GetDetector((uint)EntityID.DetectorBots7);\n            m_detector_bots8 = MyScriptWrapper.GetDetector((uint)EntityID.DetectorBots8);\n            m_detector_bots9 = MyScriptWrapper.GetDetector((uint)EntityID.DetectorBots9);\n            m_detector_bots10 = MyScriptWrapper.GetDetector((uint)EntityID.DetectorBots10);\n            m_detector_marcusLeave1 = MyScriptWrapper.GetDetector((uint)EntityID.DetectorMarcusLeave1);\n            m_detector_marcusLeave2 = MyScriptWrapper.GetDetector((uint)EntityID.DetectorMarcusLeave2);\n\n            MyScriptWrapper.OnBotReachedWaypoint += ReachedWaypoint;\n            base.Load();\n        }\n\n\n        public override void Unload()\n        {\n            MyScriptWrapper.EntityHacked -= MyScriptWrapper_EntityHackedAfterExplosion;\n            MyScriptWrapper.EntityHacked -= MyScriptWrapperEntityHackedFirstKey;\n            MyScriptWrapper.OnBotReachedWaypoint -= ReachedWaypoint;\n            m_detector_bots1.Off();\n            m_detector_bots1.OnEntityEnter -= SpawnBotsDetectorEntered;\n            m_detector_bots2.Off();\n            m_detector_bots2.OnEntityEnter -= SpawnBotsDetectorEntered;\n            m_detector_bots3.Off();\n            m_detector_bots3.OnEntityEnter -= SpawnBotsDetectorEntered;\n            m_detector_bots4.Off();\n            m_detector_bots4.OnEntityEnter -= SpawnBotsDetectorEntered;\n            m_detector_bots5.Off();\n            m_detector_bots5.OnEntityEnter -= SpawnBotsDetectorEntered;\n            m_detector_bots7.Off();\n            m_detector_bots7.OnEntityEnter -= SpawnBotsDetectorEntered;\n            m_detector_bots8.Off();\n            m_detector_bots8.OnEntityEnter -= SpawnBotsDetectorEntered;\n            m_detector_bots9.Off();\n            m_detector_bots9.OnEntityEnter -= SpawnBotsDetectorEntered;\n            m_detector_bots10.Off();\n            m_detector_bots10.OnEntityEnter -= SpawnBotsDetectorEntered;\n            base.Unload();\n\n            m_ms1 = null;\n            m_ms2 = null;\n            m_ms3 = null;\n            m_ms4 = null;\n            m_ms5 = null;\n            m_ms6 = null;\n            m_stealMS = null;\n\n            m_marcus = null;\n            m_tarja = null;\n\n            m_detector_reachHangar = null;\n            m_detector_tunnelExplosion = null;\n            m_detector_ambushExplosion = null;\n            m_detector_headshake1 = null;\n            m_detector_headshake2 = null;\n            m_detector_headshake3 = null;\n            m_detector_bots1 = null;\n            m_detector_bots2 = null;\n            m_detector_bots3 = null;\n            m_detector_bots4 = null;\n            m_detector_bots5 = null;\n            m_detector_bots7 = null;\n            m_detector_bots8 = null;\n            m_detector_bots9 = null;\n            m_detector_bots10 = null;\n            m_detector_marcusLeave1 = null;\n            m_detector_marcusLeave2 = null;\n\n            if (MyScriptWrapper.IsMissionFinished(this.ID))\n            {\n                MyScriptWrapper.TravelToMission(MyMissionID.CHINESE_REFINERY); //Chinese refinery\n            }\n        }\n\n        public override void Accept()\n        {\n            base.Accept();\n        }\n\n\n        private void ReachedWaypoint(MyEntity bot, MyEntity waypoint)\n        {\n            if (waypoint == MyScriptWrapper.GetEntity((uint)EntityID.WaypointReachedMarcus) && bot == m_marcus)\n            {\n                MyScriptWrapper.HideEntity(m_marcus);\n                MyScriptWrapper.HideEntity(m_tarja);\n                MyScriptWrapper.OnBotReachedWaypoint -= ReachedWaypoint;\n            }\n        }\n\n        private void DetectorEntered(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (sender == m_detector_tunnelExplosion && MySession.IsPlayerShip(entity))\n            {\n                MyScriptWrapper.PlayDialogue(Audio.Dialogues.MyDialogueEnum.CHINESE_TRANSPORT_0400_THEY_FOUND_ME);\n                m_detector_tunnelExplosion.OnEntityEnter -= DetectorEntered;\n                m_detector_tunnelExplosion.Off();\n                MyScriptWrapper.AddExplosion(MyScriptWrapper.GetEntity((uint)EntityID.ExplosionTunnel), Explosions.MyExplosionTypeEnum.MEDIUM_PREFAB_EXPLOSION, 20000);\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnTunnelDestruction);\n                MyScriptWrapper.IncreaseHeadShake(8);\n            }\n            if (sender == m_detector_headshake1 && MySession.IsPlayerShip(entity))\n            {\n                MyScriptWrapper.PlayDialogue(Audio.Dialogues.MyDialogueEnum.CHINESE_TRANSPORT_0300_SHOOTING_ON_ME);\n                MyScriptWrapper.PlaySound3D(MySession.PlayerShip, MySoundCuesEnum.SfxShipLargeExplosion);\n                MyScriptWrapper.IncreaseHeadShake(12);\n                m_detector_headshake1.OnEntityEnter -= DetectorEntered;\n                m_detector_headshake1.Off();\n\n            }\n            if (sender == m_detector_headshake2 && MySession.IsPlayerShip(entity))\n            {\n                MyScriptWrapper.PlaySound3D(MySession.PlayerShip, MySoundCuesEnum.SfxShipLargeExplosion);\n                MyScriptWrapper.IncreaseHeadShake(18);\n                m_detector_headshake2.OnEntityEnter -= DetectorEntered;\n                m_detector_headshake2.Off();\n            }\n            if (sender == m_detector_headshake3 && MySession.IsPlayerShip(entity))\n            {\n                MyScriptWrapper.PlaySound3D(MySession.PlayerShip, MySoundCuesEnum.SfxShipLargeExplosion);\n                MyScriptWrapper.IncreaseHeadShake(15);\n                m_detector_headshake3.OnEntityEnter -= DetectorEntered;\n                m_detector_headshake3.Off();\n            }\n            if (sender == m_detector_ambushExplosion && MySession.IsPlayerShip(entity))\n            {\n                MyScriptWrapper.SetParticleEffect(MyScriptWrapper.GetEntity((uint)EntityID.ExplosionAmbush), true);\n                MyScriptWrapper.PlaySound3D(MySession.PlayerShip, MySoundCuesEnum.SfxShipLargeExplosion);\n                MyScriptWrapper.IncreaseHeadShake(9);\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnAmbush);\n                m_detector_ambushExplosion.OnEntityEnter -= DetectorEntered;\n                m_detector_ambushExplosion.Off();\n            }\n\n            if (sender == m_detector_reachHangar && MySession.IsPlayerShip(entity))\n            {\n                MyScriptWrapper.PlayDialogue(MyDialogueEnum.CHINESE_TRANSPORT_1050_REACHED_COMPUTER);\n                m_detector_reachHangar.OnEntityEnter -= DetectorEntered;\n                m_detector_reachHangar.Off();\n            }\n        }\n\n        void MarcusLeaveAction(MyEntityDetector sender, MyEntity entity, int meetcriterias)\n        {\n            MyScriptWrapper.OnBotReachedWaypoint += MarcusReached;\n            m_marcus.SetWorldMatrix(MyScriptWrapper.GetEntity((uint)EntityID.MarcusLeavePosition).WorldMatrix);\n            m_marcus.SetWaypointPath(\"MarcusL\");\n            m_marcus.PatrolMode = CommonLIB.AppCode.ObjectBuilders.Object3D.MyPatrolMode.ONE_WAY;\n            m_marcus.Patrol();\n            MyScriptWrapper.AddNotification(MyScriptWrapper.CreateNotification(Localization.MyTextsWrapperEnum.MarucsIsLeavingForTransporter, MyGuiManager.GetFontMinerWarsGreen(), 5000));\n            MyScriptWrapper.PlayDialogue(MyDialogueEnum.CHINESE_TRANSPORT_0650_MARCUS_IS_LEAVING);\n            m_detector_marcusLeave1.OnEntityEnter -= MarcusLeaveAction;\n            m_detector_marcusLeave1.Off();\n            m_detector_marcusLeave2.OnEntityEnter -= MarcusLeaveAction;\n            m_detector_marcusLeave2.Off();\n        }\n\n        void MarcusReached(MyEntity bot, MyEntity waypoint)\n        {\n            if (bot == m_marcus && waypoint == MyScriptWrapper.GetEntity((uint)EntityID.MarcusWaypointReached))\n            {\n                MyScriptWrapper.HideEntity(m_marcus);\n                MyScriptWrapper.OnBotReachedWaypoint -= MarcusReached;\n            }\n        }\n\n        void SpawnBotsDetectorEntered(MyEntityDetector sender, MyEntity entity, int meetcriterias)\n        {\n            if (sender == m_detector_bots1 && MySession.IsPlayerShip(entity))\n            {\n                m_detector_bots1.OnEntityEnter -= SpawnBotsDetectorEntered;\n                m_detector_bots1.Off();\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnBots1_1);               \n            }\n            if (sender == m_detector_bots2 && MySession.IsPlayerShip(entity))\n            {\n                m_detector_bots2.OnEntityEnter -= SpawnBotsDetectorEntered;\n                m_detector_bots2.Off();\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnBots2_1);\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnBots2_2);\n            }\n            if (sender == m_detector_bots3 && MySession.IsPlayerShip(entity))\n            {\n                m_detector_bots3.OnEntityEnter -= SpawnBotsDetectorEntered;\n                m_detector_bots3.Off();\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnBots3_1);\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnBots3_2);\n            }\n            if (sender == m_detector_bots4 && MySession.IsPlayerShip(entity))\n            {\n                m_detector_bots4.OnEntityEnter -= SpawnBotsDetectorEntered;\n                m_detector_bots4.Off();\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnBots4_1);\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnBots4_2);\n            }\n            if (sender == m_detector_bots5 && MySession.IsPlayerShip(entity))\n            {\n                m_detector_bots5.OnEntityEnter -= SpawnBotsDetectorEntered;\n                m_detector_bots5.Off();\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnBots5_1);\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnBots5_2);\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnBots5_3);\n            }\n            if (sender == m_detector_bots7 && MySession.IsPlayerShip(entity))\n            {\n                m_detector_bots7.OnEntityEnter -= SpawnBotsDetectorEntered;\n                m_detector_bots7.Off();\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnBots7_1);\n            }\n            if (sender == m_detector_bots8 && MySession.IsPlayerShip(entity))\n            {\n                m_detector_bots8.OnEntityEnter -= SpawnBotsDetectorEntered;\n                m_detector_bots8.Off();\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnBots8_1);\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnBots8_2);\n            }\n            if (sender == m_detector_bots9 && MySession.IsPlayerShip(entity))\n            {\n                m_detector_bots9.OnEntityEnter -= SpawnBotsDetectorEntered;\n                m_detector_bots9.Off();\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnBots9_1);\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnBots9_2);\n            }\n            if (sender == m_detector_bots10 && MySession.IsPlayerShip(entity))\n            {\n                m_detector_bots10.OnEntityEnter -= SpawnBotsDetectorEntered;\n                m_detector_bots10.Off();\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnBots10_1);\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnBots10_2);\n            }\n        }\n        \n        void MyScriptWrapperEntityHackedFirstKey(MyEntity entity)\n        {\n            if (entity == MyScriptWrapper.GetEntity((uint)EntityID.HUBGetKey))\n            {\n                m_mission01_getFirstKey.Success();\n                MyScriptWrapper.RemoveEntityMark(entity);\n            }\n        }\n\n        void MyScriptWrapper_EntityHackedAfterExplosion(MyEntity entity)\n        {\n            if (entity == MyScriptWrapper.GetEntity((uint)EntityID.HUBHackHangar))\n            {\n                m_mission12_hackHangarServicePC.Success();\n            }\n        }\n\n        void BossSpawned(MyEntity spawnpoint, MyEntity botmain)\n        {\n            foreach (var item2 in new List<List<uint>> { m_spawnsWave1, m_spawnsWave2, m_spawnsWave3, m_spawnsWave4, m_spawnsWave5 })\n            foreach (var item in item2)\n            {\n                if (spawnpoint == MyScriptWrapper.GetEntity(item))\n                {\n                    MyScriptWrapper.SetSleepDistance(botmain, 3000);\n                }\n            }\n            if (spawnpoint == MyScriptWrapper.GetEntity((uint)EntityID.SpawnBoss))\n            {\n                MySmallShipBot bossbot = botmain as MySmallShipBot;\n                bossbot.Health = bossbot.MaxHealth = 1500;\n                botmain.DisplayName = MyTexts.GeneralChenLin;\n            }\n        }\n\n        void M01GetFirstKeyLoaded(MyMissionBase sender)\n        {\n            m_detector_bots1.On();\n            m_detector_bots1.OnEntityEnter += SpawnBotsDetectorEntered;\n            m_detector_bots2.On();\n            m_detector_bots2.OnEntityEnter += SpawnBotsDetectorEntered;\n            m_detector_bots3.On();\n            m_detector_bots3.OnEntityEnter += SpawnBotsDetectorEntered;\n            m_detector_bots4.On();\n            m_detector_bots4.OnEntityEnter += SpawnBotsDetectorEntered;\n            m_detector_bots5.On();\n            m_detector_bots5.OnEntityEnter += SpawnBotsDetectorEntered;\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.TensionBeforeAnAction, 1, \"MM01\");\n            MyScriptWrapper.AddNotification(MyScriptWrapper.CreateNotification(Localization.MyTextsWrapperEnum.MarucsIsLeavingForKey, MyGuiManager.GetFontMinerWarsGreen(), 20000));\n            MyScriptWrapper.HideEntity(MyScriptWrapper.GetEntity((uint)EntityID.Bomb));\n            MyScriptWrapper.EntityHacked += MyScriptWrapperEntityHackedFirstKey;\n            m_detector_bots1.OnEntityEnter += SpawnBotsDetectorEntered;\n            m_detector_bots1.On();\n            foreach (var spawnpoint in m_spawnsStart)\n            {\n                MyScriptWrapper.ActivateSpawnPoint(spawnpoint);\n            }\n            MyScriptWrapper.MarkEntity(MyScriptWrapper.GetEntity((uint)EntityID.HUBGetKey), MyTexts.GetFirstSecurityKey, HUD.MyHudIndicatorFlagsEnum.SHOW_TEXT | HUD.MyHudIndicatorFlagsEnum.SHOW_DISTANCE | HUD.MyHudIndicatorFlagsEnum.SHOW_BORDER_INDICATORS, HUD.MyGuitargetMode.Objective);\n\n\n            MyScriptWrapper.StopFollow(m_marcus);\n            m_marcus.SpeedModifier = 2.0f;\n            MyScriptWrapper.SetSleepDistance(m_marcus, 10000f);\n\n            m_tarja.Follow(m_marcus);\n            m_tarja.SpeedModifier = 2.0f;\n            MyScriptWrapper.SetSleepDistance(m_tarja, 10000f);\n\n            m_marcus.SetWaypointPath(\"MarcusW\");\n            m_marcus.PatrolMode = CommonLIB.AppCode.ObjectBuilders.Object3D.MyPatrolMode.ONE_WAY;\n            m_marcus.Patrol();\n        }\n\n        void M02ReachTunnel1Loaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.EntityHacked -= MyScriptWrapperEntityHackedFirstKey;\n            MyScriptWrapper.RemoveEntityMark(MyScriptWrapper.GetEntity((uint)EntityID.HUBGetKey));\n        }\n\n        void M03ReachTransmitterLoaded(MyMissionBase sender)\n        { \n            foreach (var spawn in m_spawnsTransmitter)\n            {\n                MyScriptWrapper.ActivateSpawnPoint(spawn);\n            }\n            foreach (var spawn in m_spawnsCenterAsteroid)\n            {\n                MyScriptWrapper.ActivateSpawnPoint(spawn);\n            }\n            m_detector_tunnelExplosion.OnEntityEnter += DetectorEntered;\n            m_detector_tunnelExplosion.On();\n            m_detector_headshake1.OnEntityEnter += DetectorEntered;\n            m_detector_headshake1.On();\n            m_detector_headshake2.OnEntityEnter += DetectorEntered;\n            m_detector_headshake2.On();\n            m_detector_headshake3.OnEntityEnter += DetectorEntered;\n            m_detector_headshake3.On();\n        }\n\n        void M04KillGuardsLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.UnhideEntity(m_marcus);\n            MyScriptWrapper.UnhideEntity(m_tarja);\n            m_marcus.SetPosition(MyScriptWrapper.GetEntity((uint)EntityID.SpawnMarcus).GetPosition());\n            m_tarja.SetPosition(MyScriptWrapper.GetEntity((uint)EntityID.SpawnTarja).GetPosition());\n\n            m_marcus.SpeedModifier = 1.0f;\n            m_tarja.SpeedModifier = 1.0f;\n\n            m_tarja.Follow(MySession.PlayerShip);\n        }\n\n        void M05HackTransmitterLoaded(MyMissionBase sender)\n        {\n            m_marcus.Idle();\n            m_detector_marcusLeave1.OnEntityEnter += MarcusLeaveAction;\n            m_detector_marcusLeave2.OnEntityEnter += MarcusLeaveAction;\n            m_detector_marcusLeave1.On();\n            m_detector_marcusLeave2.On();\n            MyScriptWrapper.HideEntity(MyScriptWrapper.GetEntity((uint)EntityID.Bomb));\n            MyScriptWrapper.MarkEntity(MyScriptWrapper.GetEntity((uint)EntityID.HUBHackTrans1), MyTexts.UseFirstSecurityKey, HUD.MyHudIndicatorFlagsEnum.SHOW_TEXT | HUD.MyHudIndicatorFlagsEnum.SHOW_DISTANCE | HUD.MyHudIndicatorFlagsEnum.SHOW_BORDER_INDICATORS, HUD.MyGuitargetMode.Objective);\n            MyScriptWrapper.MarkEntity(MyScriptWrapper.GetEntity((uint)EntityID.HUBHackTrans2), MyTexts.UseSecondSecurityKey, HUD.MyHudIndicatorFlagsEnum.SHOW_TEXT | HUD.MyHudIndicatorFlagsEnum.SHOW_DISTANCE | HUD.MyHudIndicatorFlagsEnum.SHOW_BORDER_INDICATORS, HUD.MyGuitargetMode.Objective);\n        }\n\n        void M05TransmittersSuccess(uint entityID)\n        {\n            switch (entityID)\n            {\n                case (uint)EntityID.HUBHackTrans1:\n                    MyScriptWrapper.RemoveEntityMark(MyScriptWrapper.GetEntity((uint)EntityID.HUBHackTrans1));\n                    break;\n                case (uint)EntityID.HUBHackTrans2:\n                    MyScriptWrapper.RemoveEntityMark(MyScriptWrapper.GetEntity((uint)EntityID.HUBHackTrans2));\n                    break;\n            }\n        }\n            \n        void M06PlaceBombLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.Highlight((uint)EntityID.Bomb, true, this);\n            MyScriptWrapper.EnablePhysics((uint)EntityID.Bomb, false);\n            MyScriptWrapper.UnhideEntity(MyScriptWrapper.GetEntity((uint)EntityID.Bomb), false);\n        }\n\n        void M06PlaceBombSuccess(MyMissionBase sender)\n        {\n            MyScriptWrapper.Highlight((uint)EntityID.Bomb, false,this);\n            MyScriptWrapper.EnablePhysics((uint)EntityID.Bomb, true);\n        }\n\n        void M07RunExplosionLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.StressOrTimeRush, 3, \"KA02\");\n            m_mission07_runExplosion.MissionTimer.RegisterTimerAction(20000, CloseToExplosion, false, MyTexts.ExplosionIn);\n        }\n\n        void M08LookOnExplosionLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.Victory, 3, \"KA02\");\n            foreach (var spawnpoint in m_spawnsCenterAsteroidOut)\n            {\n                MyScriptWrapper.ActivateSpawnPoint(spawnpoint);\n            }\n            MissionTimer.RegisterTimerAction(2000, TransmitterExplosion1, false);\n        }\n\n        void M09ReachTunnel2Loaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.StopTransition(3);\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.TensionBeforeAnAction, 1, \"KA02\");\n            MyScriptWrapper.HideEntity(m_marcus);\n        }\n\n        void M10PastTunnel2Loaded(MyMissionBase sender)\n        {\n            m_detector_reachHangar.OnEntityEnter += DetectorEntered;\n            m_detector_reachHangar.On(); \n            m_detector_ambushExplosion.OnEntityEnter += DetectorEntered;\n            m_detector_ambushExplosion.On();\n        }\n\n        void M11ReachHangarHackLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnBots6_1);\n            m_detector_bots1.Off();\n            m_detector_bots1.OnEntityEnter -= SpawnBotsDetectorEntered;\n            m_detector_bots2.Off();\n            m_detector_bots2.OnEntityEnter -= SpawnBotsDetectorEntered;\n            m_detector_bots3.Off();\n            m_detector_bots3.OnEntityEnter -= SpawnBotsDetectorEntered;\n            m_detector_bots4.Off();\n            m_detector_bots4.OnEntityEnter -= SpawnBotsDetectorEntered;\n            m_detector_bots5.Off();\n            m_detector_bots5.OnEntityEnter -= SpawnBotsDetectorEntered;\n            m_detector_bots7.OnEntityEnter += SpawnBotsDetectorEntered;\n            m_detector_bots7.On();\n            m_detector_bots8.OnEntityEnter += SpawnBotsDetectorEntered;\n            m_detector_bots8.On();\n            m_detector_bots9.OnEntityEnter += SpawnBotsDetectorEntered;\n            m_detector_bots9.On();\n            m_detector_bots10.OnEntityEnter += SpawnBotsDetectorEntered;\n            m_detector_bots10.On();\n        }\n\n        void M12HackHangarServicePCLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.MarkEntity(MyScriptWrapper.GetEntity((uint)EntityID.HUBHackHangar), MyTexts.HackHangarDatabase, HUD.MyHudIndicatorFlagsEnum.SHOW_TEXT | HUD.MyHudIndicatorFlagsEnum.SHOW_DISTANCE | HUD.MyHudIndicatorFlagsEnum.SHOW_BORDER_INDICATORS, HUD.MyGuitargetMode.Objective);\n        }\n\n        void M13DefendMarcusLoaded(MyMissionBase sender)\n        {\n            m_detector_bots7.Off();\n            m_detector_bots7.OnEntityEnter -= SpawnBotsDetectorEntered;\n            m_detector_bots8.Off();\n            m_detector_bots8.OnEntityEnter -= SpawnBotsDetectorEntered;\n            m_detector_bots9.Off();\n            m_detector_bots9.OnEntityEnter -= SpawnBotsDetectorEntered;\n            m_detector_bots10.Off();\n            m_detector_bots10.OnEntityEnter -= SpawnBotsDetectorEntered;\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.GetEntity((uint)EntityID.UnlockDoors), true);\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.HeavyFight, 3, \"KA03\");\n            MyScriptWrapper.RemoveEntityMark(MyScriptWrapper.GetEntity((uint)EntityID.HUBHackHangar));\n            MyScriptWrapper.HideEntity(m_marcus);\n            sender.MissionEntityIDs.Add(m_stealMS.EntityId.Value.NumericValue);\n            MyScriptWrapper.MarkEntity(m_stealMS,sender.NameTemp.ToString(),MyHudIndicatorFlagsEnum.SHOW_DISTANCE | MyHudIndicatorFlagsEnum.SHOW_TEXT | MyHudIndicatorFlagsEnum.SHOW_BORDER_INDICATORS | MyHudIndicatorFlagsEnum.SHOW_HEALTH_BARS);\n            MyScriptWrapper.OnSpawnpointBotSpawned += MyScriptWrapperOnOnSpawnpointBotSpawnedDefendMarcus;\n\n        }\n\n        private void MyScriptWrapperOnOnSpawnpointBotSpawnedDefendMarcus(MyEntity spawn, MyEntity bot)\n        {\n            var ship = bot as MySmallShipBot;\n            ship.SleepDistance = 5000;\n        }\n\n        void M14KillBossLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.OnSpawnpointBotSpawned += BossSpawned;\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.LightFight, 3, \"KA05\");\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnBoss);\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnBossCompanion1);\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnBossCompanion2);\n            MyScriptWrapper.HideEntity(m_marcus);\n        }\n\n        void M14KillBossUnloaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.OnSpawnpointBotSpawned -= BossSpawned;\n        }\n\n        void M15LandInLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.Victory, 3, \"KA02\");\n        }\n\n        void TransmitterExplosion1()\n        {\n            MissionTimer.RegisterTimerAction(3000, TransmitterExplosion2, false);\n            \n           /* foreach (var particle in m_explosion1)\n            {\n                MyScriptWrapper.SetParticleEffect(MyScriptWrapper.GetEntity(particle), true);\n            } */\n\n            //MyScriptWrapper.PlaySound3D(MyScriptWrapper.GetEntity((uint)EntityID.DestructionTransmitter), MySoundCuesEnum.SfxShipLargeExplosion);\n\n            MyScriptWrapper.AddExplosions(m_explosion1, Explosions.MyExplosionTypeEnum.MISSILE_EXPLOSION, 1000);\n        }\n\n        void TransmitterExplosion2()\n        {\n            MissionTimer.RegisterTimerAction(2000, TransmitterExplosion3, false);\n          /*  foreach (var particle in m_explosion2)\n            {\n                MyScriptWrapper.SetParticleEffect(MyScriptWrapper.GetEntity(particle), true);\n            }*/\n\n            MyScriptWrapper.AddExplosions(m_explosion2, Explosions.MyExplosionTypeEnum.MISSILE_EXPLOSION, 500);\n            /*\n            foreach (var entity in m_transmitterPrefabs1)\n            {\n                var item = MyScriptWrapper.TryGetEntity(entity);\n                if (item != null)\n                {\n                    MyScriptWrapper.GetEntity(entity).MarkForClose();\n                }\n            }\n            MyScriptWrapper.PlaySound3D(MyScriptWrapper.GetEntity((uint)EntityID.DestructionTransmitter), MySoundCuesEnum.SfxShipLargeExplosion);\n             * */\n        }\n\n        void TransmitterExplosion3()\n        {\n            MissionTimer.RegisterTimerAction(1000, TransmitterExplosion4, false);\n            /*\n            foreach (var particle in m_explosion3)\n            {\n                MyScriptWrapper.SetParticleEffect(MyScriptWrapper.GetEntity(particle), true);\n            }\n            MyScriptWrapper.PlaySound3D(MyScriptWrapper.GetEntity((uint)EntityID.DestructionTransmitter), MySoundCuesEnum.SfxShipLargeExplosion);\n             * */\n\n            MyScriptWrapper.AddExplosions(m_explosion3, Explosions.MyExplosionTypeEnum.MISSILE_EXPLOSION, 1000);\n        }\n\n        void TransmitterExplosion4()\n        {\n            MissionTimer.RegisterTimerAction(2000, TransmitterExplosionFinal, false);\n            /*foreach (var particle in m_explosion4)\n            {\n                MyScriptWrapper.SetParticleEffect(MyScriptWrapper.GetEntity(particle), true);\n            }       */\n            //MyScriptWrapper.PlaySound3D(MyScriptWrapper.GetEntity((uint)EntityID.DestructionTransmitter), MySoundCuesEnum.SfxShipLargeExplosion);\n            MyScriptWrapper.AddExplosions(m_explosion4, Explosions.MyExplosionTypeEnum.MISSILE_EXPLOSION, 1000);\n        }\n\n        void TransmitterExplosionFinal()\n        {\n            MyScriptWrapper.GetEntity((uint)EntityID.Bomb).MarkForClose();\n            MyScriptWrapper.AddExplosion(MyScriptWrapper.GetEntity((uint)EntityID.ExplosionPrefab), Explosions.MyExplosionTypeEnum.LARGE_SHIP_EXPLOSION, 40000);\n            MyScriptWrapper.AddExplosion(MyScriptWrapper.GetEntity((uint)EntityID.ExplosionTransmitter), Explosions.MyExplosionTypeEnum.LARGE_SHIP_EXPLOSION, 40000);\n            //MyScriptWrapper.AddExplosions(m_explosionFinal, Explosions.MyExplosionTypeEnum.LARGE_SHIP_EXPLOSION, 20000);\n            /*\n            foreach (var particle in m_explosionFinal)\n            {\n                MyScriptWrapper.SetParticleEffect(MyScriptWrapper.GetEntity(particle), true);\n            }\n            foreach (var entity in m_transmitterPrefabs2)\n            {\n                var item = MyScriptWrapper.TryGetEntity(entity);\n                if (item != null)\n                {\n                    item.MarkForClose();\n                }\n            }*/\n            MissionTimer.RegisterTimerAction(1000, UnhideDebris, false);\n            m_mission08_lookOnExplosion.Success();\n            \n            /*\n            MyScriptWrapper.PlaySound3D(MyScriptWrapper.GetEntity((uint)EntityID.DestructionTransmitter), MySoundCuesEnum.SfxShipLargeExplosion);\n            \n            MyScriptWrapper.GetEntity((uint)EntityID.HUBHackTrans1).MarkForClose();\n            MyScriptWrapper.GetEntity((uint)EntityID.HUBHackTrans2).MarkForClose();\n            MyScriptWrapper.GetEntity((uint)EntityID.DestructionBuilding).MarkForClose();\n            MyScriptWrapper.GetEntity((uint)EntityID.DestructionTransmitter).MarkForClose();\n             * */\n        }\n\n        void UnhideDebris()\n        {\n            foreach (var item in m_debrisAfterExplosion)\n            {\n                MyScriptWrapper.UnhideEntity(MyScriptWrapper.GetEntity(item));\n            }\n        }\n\n        void CloseToExplosion()\n        {\n            if (Vector3.DistanceSquared(MySession.PlayerShip.GetPosition(), MyScriptWrapper.GetEntity((uint)EntityID.DestructionBuilding).GetPosition()) < 500 * 500)\n\n            {\n                //MissionTimer.ClearActions();\n                MyScriptWrapper.DestroyPlayerShip();\n                \n            }\n            else\n            {\n                m_mission07_runExplosion.Success();\n            }\n        }\n\n        bool MoveMotherShipForwardDest(MyEntity entity, float speed, Vector3 destination)\n        {\n            Vector3 velocity = speed * entity.WorldMatrix.Forward; // Speed in direction\n            if (Vector3.DistanceSquared(destination, entity.GetPosition()) > 10 * 10)\n            {\n                MyScriptWrapper.Move(entity, entity.GetPosition() + velocity * MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS);\n                return false;\n            }\n            return true;\n        }\n\n        void MoveMotherShipForward(MyEntity entity, float speed)\n        {\n            Vector3 velocity = speed * entity.WorldMatrix.Forward; // Speed in direction\n            MyScriptWrapper.Move(entity, entity.GetPosition() + velocity * MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS);\n        }\n\n\n        \n    }\n       \n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/SinglePlayer/MyConvoyMission.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Entities;\nusing System.Diagnostics;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Entities.WayPoints;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Inventory;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.Game.World.Global;\n\n\nnamespace MinerWars.AppCode.Game.Missions.SinglePlayer\n{\n    class MyConvoyMission : MyMissionSandboxBase\n    {\n        private enum EntityID // list of IDs used in script\n        {\n            StartLocation = 708,\n         \n        }\n\n        public override void ValidateIds() // checks if all IDs in enum are loaded correctly\n        {\n            foreach (var value in Enum.GetValues(typeof(EntityID)))\n            {\n                MyScriptWrapper.GetEntity((uint)((value as EntityID?).Value));\n            }\n        }\n\n\n\n        public MyConvoyMission()\n        {\n            ID = MyMissionID.CONVOY; /* ID must be added to MyMissions.cs */\n            DebugName = new StringBuilder(\"Convoy\"); // Name of mission\n            Name = MyTextsWrapperEnum.CONVOY;\n            Description = MyTextsWrapperEnum.CONVOY_Description;\n            MyMwcVector3Int baseSector = new MyMwcVector3Int(-1179792, 0, -5253184); // Story sector of the script - i.e. (-2465,0,6541)\n            RequiredMissions = new MyMissionID[] { };\n            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation); // Starting dummy point - must by typecasted to uint and referenced from EntityID enum\n            RequiredActors = new MyActorEnum[] { MyActorEnum.MADELYN };\n           \n\n            m_objectives = new List<MyObjective>(); // Creating of list of submissions\n\n\n        }\n\n\n\n\n        public override void Load() // Code in that block will be called on the load of the sector\n        {\n            base.Load();\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.LightFight, 3); // Sets music group to be played in the sector - no matter if the mission is running or not\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/SinglePlayer/MyDumpingGroundMission.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Entities;\nusing System.Diagnostics;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Entities.WayPoints;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Inventory;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.Game.World.Global;\n\n\nnamespace MinerWars.AppCode.Game.Missions.SinglePlayer\n{\n    class MyDmpingGroundMission : MyMissionSandboxBase\n    {\n        private enum EntityID // list of IDs used in script\n        {\n            StartLocation = 350,\n         \n        }\n\n        public override void ValidateIds() // checks if all IDs in enum are loaded correctly\n        {\n            foreach (var value in Enum.GetValues(typeof(EntityID)))\n            {\n                MyScriptWrapper.GetEntity((uint)((value as EntityID?).Value));\n            }\n        }\n\n\n\n        public MyDmpingGroundMission()\n        {\n            ID = MyMissionID.DUMPING_GROUND; /* ID must be added to MyMissions.cs */\n            DebugName = new StringBuilder(\"Dumping Ground\"); // Name of mission\n            Name = MyTextsWrapperEnum.DUMPING_GROUND;\n            Description = MyTextsWrapperEnum.DUMPING_GROUND_Description;\n            MyMwcVector3Int baseSector = new MyMwcVector3Int(2466427, 0, 546651); // Story sector of the script - i.e. (-2465,0,6541)\n            RequiredMissions = new MyMissionID[] { };\n            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation); // Starting dummy point - must by typecasted to uint and referenced from EntityID enum\n            RequiredActors = new MyActorEnum[] { MyActorEnum.MADELYN };\n           \n\n            m_objectives = new List<MyObjective>(); // Creating of list of submissions\n\n\n        }\n\n\n\n\n        private float m_oldRelation;\n\n\n        public override void Load() // Code in that block will be called on the load of the sector\n        {\n            base.Load();\n            MyAudio.ApplyTransition(MyMusicTransitionEnum.CalmAtmosphere, 3);\n            m_oldRelation = MyFactions.GetFactionsStatus(MyMwcObjectBuilder_FactionEnum.Euroamerican, MyMwcObjectBuilder_FactionEnum.Rainiers);\n            MyScriptWrapper.SetFactionRelation(MyMwcObjectBuilder_FactionEnum.Euroamerican, MyMwcObjectBuilder_FactionEnum.Rainiers, MyFactions.RELATION_WORST);\n        }\n\n        public override void Unload()\n        {\n            base.Unload();\n\n            MyScriptWrapper.SetFactionRelation(MyMwcObjectBuilder_FactionEnum.Euroamerican, MyMwcObjectBuilder_FactionEnum.Rainiers, m_oldRelation);\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/SinglePlayer/MyEACCapitalMission.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Entities;\nusing System.Diagnostics;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Entities.WayPoints;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Inventory;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.Game.World.Global;\n\n\nnamespace MinerWars.AppCode.Game.Missions.SinglePlayer\n{\n    class MyEACCapitalMission : MyMissionSandboxBase\n    {\n        private enum EntityID // list of IDs used in script\n        {\n            StartLocation = 39,\n         \n        }\n\n        public override void ValidateIds() // checks if all IDs in enum are loaded correctly\n        {\n            foreach (var value in Enum.GetValues(typeof(EntityID)))\n            {\n                MyScriptWrapper.GetEntity((uint)((value as EntityID?).Value));\n            }\n        }\n\n\n\n        public MyEACCapitalMission()\n        {\n            ID = MyMissionID.EAC_CAPITAL; /* ID must be added to MyMissions.cs */\n            DebugName = new StringBuilder(\"New NYC - EAC Capital\"); // Name of mission\n            Name = MyTextsWrapperEnum.EAC_CAPITAL;\n            Description = MyTextsWrapperEnum.EAC_CAPITAL_Description;\n            MyMwcVector3Int baseSector = new MyMwcVector3Int(6494595, 0, -4998184); // Story sector of the script - i.e. (-2465,0,6541)\n            RequiredMissions = new MyMissionID[] { };\n            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation); // Starting dummy point - must by typecasted to uint and referenced from EntityID enum\n            RequiredActors = new MyActorEnum[] { MyActorEnum.MADELYN };\n           \n\n            m_objectives = new List<MyObjective>(); // Creating of list of submissions\n\n\n        }\n\n\n\n\n        public override void Load() // Code in that block will be called on the load of the sector\n        {\n            base.Load();\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.HeavyFight, 3); // Sets music group to be played in the sector - no matter if the mission is running or not\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/SinglePlayer/MyEACPrisonMission.cs",
    "content": "﻿#region Using\n\nusing System;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Audio.Dialogues;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.HUD;\nusing MinerWars.AppCode.Game.Inventory;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Entities.Prefabs;\nusing MinerWars.AppCode.Game.Missions.Utils;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.Prefabs;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing System.Collections.Generic;\nusing System.Linq;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Audio;\nusing System.Diagnostics;\nusing MinerWars.AppCode.Game.Prefabs;\nusing MinerWars.AppCode.Game.Entities.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.AppCode.Game.Missions.Components;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.Resources;\nusing MinerWars.AppCode.Networking;\n\n#endregion\n\nnamespace MinerWars.AppCode.Game.Missions.SinglePlayer\n{\n    class MyEACPrisonMission : MyMission\n    {\n        #region Enums\n\n        public enum EntityID\n        {\n            DetectorBeforeStorage = 77502,\n            DetectorBeforeIndustry = 77504,\n            DetectorBeforeParking = 77506,\n            DetectorBeforeMines = 77508,\n            DetectorBeforeMinesEntrance = 77510,\n            DetectorBeforeMarcusCell = 77073,\n            DetectorBeforeSecurityCheck7 = 77512,\n            DetectorBeforeSecurityCheck6 = 77514,\n            DetectorBeforeSecurityCheck8 = 77516,\n            DetectorBeforeSecurityCheck4 = 77518,\n            DetectorBeforeCellAfterSecurityCheck4 = 77520,\n            DetectorBeforeSecurityCheck5 = 77522,\n            DetectorBeforeCell1AfterSecurityCheck5 = 77524,\n            DetectorBeforeCell2AfterSecurityCheck5 = 77526,\n            DetectorBeforeCell3AfterSecurityCheck5 = 77528,\n            DetectorBeforeSecurityCheck3 = 77530,\n            DetectorBeforeCell1AfterSecurityCheck3 = 77532,\n            DetectorBeforeCell2AfterSecurityCheck3 = 77534,\n\n            SpawnpointAtStorage =12596,\n            SpawnpointAtIndustry1 = 76622,\n            SpawnpointAtIndustry2 = 76621,\n            SpawnpointAtParking = 12597,\n            SpawnpointAtMines = 76623,\n            SpawnpointAtMinesEntrance = 76624,\n            SpawnpointAtMarcusCell = 76625,\n            SpawnpointAtSecurityCheck7 = 12598,\n            SpawnpointAtSecurityCheck6 = 12600,\n            SpawnpointAtSecurityCheck8 = 12599,\n            SpawnpointAtSecurityCheck4 = 12601,\n            SpawnpointAtCellAfterSecurityCheck4 = 76626,\n            SpawnpointAtSecurityCheck5 = 12602,\n            SpawnpointAtCell1AfterSecurityCheck5 = 77056,\n            SpawnpointAtCell2AfterSecurityCheck5 = 77055,\n            SpawnpointAtCell3AfterSecurityCheck5 = 77054,\n            SpawnpointAtSecurityCheck3 = 12603,\n            SpawnpointAtCell1AfterSecurityCheck3 = 77072,\n            SpawnpointAtCell2AfterSecurityCheck3 = 77071,\n            SpawnpointAtWeHaveCompany = 185,\n\n            SecurityHub = 75002,\n\n            CargoIDCard = 16782189,\n\n            CargoExitDoor = 10763,\n\n           // OfflineMarcusShip = 75040,\n\n            MotherShiBattleLocationDummy = 72035,\n            BreakInsideStationLocationDummy = 28346,\n            _MarcusIntelLocation = 31233,\n            HubHack = 74991,\n            HubHackGenerator = 74993,\n            MarcusCellLocation = 31236,\n            MarcusShipDetector = 31237,\n            CargoForMarcus = 31238,\n            StationDummy = 31239,\n            _16MeetingPoint = 70028,\n            StartLocation = 16536,\n\n            StartSpawn = 12569,\n            SecuritySpawn1 = 12604,\n            SecuritySpawn2 = 12590,\n            DestroyPanelsEnable1 = 11131,\n            DestroyPanelsEnable2 = 11147,\n            PanelsPrefabContainer = 42938,\n            StartDetector = 40036,\n\n            SecurityDetector = 51658,\n            SecurityDetector2 = 54568,\n            MarcusPlaceholder = 75040,\n            MarcusFakeShip1 = 75026,\n\n            MarcusFakeShip2 = 75053,\n            MarcusFakeShip3 = 75066,\n            Doors1 = 10638,\n            Doors3 = 11072,\n            Doors4 = 10692,\n        }\n\n        public override void ValidateIds() // checks if all IDs in enum are loaded correctly\n        {\n            foreach (var value in Enum.GetValues(typeof(EntityID)))\n            {\n                MyScriptWrapper.GetEntity((uint)((value as EntityID?).Value));\n            }\n\n            var list = new List<uint>();\n            list.AddRange(m_02toKill);\n            list.AddRange(m_04toKill);\n            list.AddRange(m_09toEnablePrefabs);\n            list.AddRange(m_15toKillSpawnpoints);\n\n            foreach (var entityId in list)\n            {\n                MyScriptWrapper.GetEntity(entityId);\n            }\n        }\n\n        #endregion\n\n        private MyObjective m_destroySolarPanelsFirst;\n        private MyObjective m_destroySolarPanelsSecond;\n        private MyObjective m_findCircoutPart;\n        private int m_panelsLeft;\n\n        private MyHudNotification.MyNotification m_hudSolarPanelsCounter;\n\n        private const int m_totalPanelCount = 117;\n        private static float DestroySolarPanelPercentsOne = 0.5f;\n        private static float DestroySolarPanelPercentsTwo = 0.75f;\n        private MyEntity m_botToBeLooted;\n        private MySmallShipBot m_marcus;\n        private List<MyInventoryItem> m_marcusInventory = new List<MyInventoryItem>();\n        private MyEntity m_marcusPlacHolder ;\n        private bool m_playerShipReverted;\n\n        private MySmallShipBot m_ravenguyBot;\n        private MySmallShipBot m_ravengirlBot;\n        private List<uint> m_02toKill = new List<uint> { 37078, 37079, 37096, 37097, 37086, 37087, 37120, 37121, 37058, 37054, 37104, 37105, 37112, 37113 };\n        private List<uint> m_04toKill = new List<uint> { 72040, 72042, 72044, 21 };\n        private List<uint> m_09toEnablePrefabs = new List<uint> { 10756, 10927};\n        private List<uint> m_15toKillSpawnpoints = new List<uint> { 74227, 75093 };\n        List<uint> m_battleSpawnpoints = new List<uint>()\n                                                 {\n                                                     73060,\n                                                     73059,\n                                                     73610,\n                                                     73611,\n                                                     80377,\n                                                     80378,\n\n                                                 };\n\n        private List<uint> m_EACdetectorSpawns = new List<uint>\n                                                     {\n                                                         74227,\n                                                         75093,\n                                                         74226,\n                                                         85075,\n                                                     };\n\n        private List<uint> m_spawnsSecurityDetector= new List<uint>\n                                                         {\n                                                             12586,\n                                                             12587,\n                                                             12588,\n                                                             12589,\n                                                             12594,\n                                                             12595,\n                                                             12591,\n                                                             12592,\n                                                             12593,\n                                                             79075,\n                                                             79076,\n                                                             79077,\n                                                             79078,\n                                                         };\n\n        private uint[] m_spawns = new uint[] { 12586, 12587, 12588, 12589, 12594, 12595, 12591, 12592, 12593, 79075, 79076, 79077, 79078,\n            /*12596, 76622,76621, 12597, 76623, 76624, 76625, 12598, 12600, 12599, 12601, 76626, 12602, 77056, 77055, 77054, 12603, 77072, 77071, 185*/\n        };\n\n\n        public MyEACPrisonMission()\n        {\n            ID = MyMissionID.EAC_PRISON; /* ID must be added to MyMissions.cs */\n            DebugName = new StringBuilder(\"20-EAC prison\");\n            Name = MyTextsWrapperEnum.EAC_PRISON;\n            Description = MyTextsWrapperEnum.EAC_PRISON_Description;\n            Flags = MyMissionFlags.Story;\n            AchievementName = MySteamAchievementNames.Mission29_EacPrison;\n\n            MyMwcVector3Int baseSector = new MyMwcVector3Int(5480055, 0, -5077310);\n\n            /* sector where the mission is located */\n            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation); //posledne cislo - ID dummy pointu kde prijimam misiu\n\n            RequiredMissions = new MyMissionID[] { MyMissionID.TWIN_TOWERS };\n            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.EAC_PRISON_MEETINGPOINT };\n            RequiredActors = new MyActorEnum[] { MyActorEnum.TARJA, MyActorEnum.VALENTIN, MyActorEnum.MADELYN, MyActorEnum.MARCUS };\n            \n            m_objectives = new List<MyObjective>();\n\n            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeStorage, 0, (uint)EntityID.SpawnpointAtStorage));\n            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeIndustry, 0, (uint)EntityID.SpawnpointAtIndustry1));\n            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeIndustry, 0, (uint)EntityID.SpawnpointAtIndustry2));\n            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeParking, 0, (uint)EntityID.SpawnpointAtParking));\n            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeMines, 0, (uint)EntityID.SpawnpointAtMines));\n            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeMinesEntrance, 0, (uint)EntityID.SpawnpointAtMinesEntrance));\n            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeMarcusCell, 0, (uint)EntityID.SpawnpointAtMarcusCell));\n            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeSecurityCheck7, 0, (uint)EntityID.SpawnpointAtSecurityCheck7));\n            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeSecurityCheck6, 0, (uint)EntityID.SpawnpointAtSecurityCheck6));\n            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeSecurityCheck8, 0, (uint)EntityID.SpawnpointAtSecurityCheck8));\n            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeSecurityCheck4, 0, (uint)EntityID.SpawnpointAtSecurityCheck4));\n            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeCellAfterSecurityCheck4, 0, (uint)EntityID.SpawnpointAtCellAfterSecurityCheck4));\n            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeSecurityCheck5, 0, (uint)EntityID.SpawnpointAtSecurityCheck5));\n            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeCell1AfterSecurityCheck5, 0, (uint)EntityID.SpawnpointAtCell1AfterSecurityCheck5));\n            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeCell2AfterSecurityCheck5, 0, (uint)EntityID.SpawnpointAtCell2AfterSecurityCheck5));\n            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeCell3AfterSecurityCheck5, 0, (uint)EntityID.SpawnpointAtCell3AfterSecurityCheck5));\n            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeSecurityCheck3, 0, (uint)EntityID.SpawnpointAtSecurityCheck3));\n            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeCell1AfterSecurityCheck3, 0, (uint)EntityID.SpawnpointAtCell1AfterSecurityCheck3));\n            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeCell2AfterSecurityCheck3, 0, (uint)EntityID.SpawnpointAtCell2AfterSecurityCheck3));\n\n            //Components.Add(new MySpawnpointWaves(detectorId, 3, new List<uint[]> { \n            //    new uint[] { spawnpointId1, spawnpointId2, spawnpointId3 },\n            //    new uint[] { spawnpointId4, spawnpointId5 }}));\n                        \n            //01\n            var mothershipBattle = new MyObjective(\n                (MyTextsWrapperEnum.EAC_PRISON_THRUSWARM_Name),\n                MyMissionID.EAC_PRISON_THRUSWARM,\n                (MyTextsWrapperEnum.EAC_PRISON_THRUSWARM_Description),\n                null,\n                this,\n                new MyMissionID[] {},\n                new MyMissionLocation(baseSector, (uint)EntityID.MotherShiBattleLocationDummy)\n                ) {SaveOnSuccess = true,StartDialogId = MyDialogueEnum.EAC_PRISON_0100, SuccessDialogId = MyDialogueEnum.EAC_PRISON_0200};\n            m_objectives.Add(mothershipBattle);\n            //mothershipBattle.Components.Add(new MySpawnpointWaves(77073, 0, 76625));\n            mothershipBattle.OnMissionLoaded += mothershipBattle_OnMissionLoaded;\n\n            //02\n            \n            var destroySolarDefence = new MyObjectiveDestroy(\n                (MyTextsWrapperEnum.EAC_PRISON_SOLARDEF_Name),\n                MyMissionID.EAC_PRISON_SOLARDEF,\n                (MyTextsWrapperEnum.EAC_PRISON_SOLARDEF_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.EAC_PRISON_THRUSWARM },\n                m_02toKill\n            ) { SaveOnSuccess = true,StartDialogId = MyDialogueEnum.EAC_PRISON_0300};\n            destroySolarDefence.OnMissionSuccess += DestroySolarDefenceOnOnMissionSuccess;\n            m_objectives.Add(destroySolarDefence);\n            destroySolarDefence.OnMissionLoaded += destroySolarDefence_OnMissionLoaded;\n\n            //03\n            m_destroySolarPanelsFirst = new MyObjective(\n                (MyTextsWrapperEnum.EAC_PRISON_SOLAROFF1_Name),\n                MyMissionID.EAC_PRISON_SOLAROFF1,\n                (MyTextsWrapperEnum.EAC_PRISON_SOLAROFF1_Description),\n                null,\n                this,\n                new MyMissionID[] {MyMissionID.EAC_PRISON_SOLARDEF},\n                null\n                ) {SaveOnSuccess = false};\n            m_destroySolarPanelsFirst.OnMissionLoaded += DestroySolarPanelsFirstSubmissionLoaded;\n            m_destroySolarPanelsFirst.OnMissionSuccess += DestroySolarPanelsFirstSubmissionSuccess;\n            m_objectives.Add(m_destroySolarPanelsFirst);\n            m_destroySolarPanelsFirst.SaveOnSuccess = true;\n\n            //04\n            var motherShipHelp = new MyObjectiveDestroy(\n                (MyTextsWrapperEnum.EAC_PRISON_MOTHERSHIPHELP_Name),\n                MyMissionID.EAC_PRISON_MOTHERSHIPHELP,\n                (MyTextsWrapperEnum.EAC_PRISON_MOTHERSHIPHELP_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.EAC_PRISON_SOLAROFF1 },\n                m_04toKill\n            ) { SaveOnSuccess = false, StartDialogId = MyDialogueEnum.EAC_PRISON_0400, SuccessDialogId = MyDialogueEnum.EAC_PRISON_0500};\n            m_objectives.Add(motherShipHelp);\n            motherShipHelp.OnMissionLoaded += new MissionHandler(motherShipHelp_OnMissionLoaded);\n\n                        //05\n            m_destroySolarPanelsSecond = new MyObjective(\n                (MyTextsWrapperEnum.EAC_PRISON_SOLAROFF2_Name),\n                MyMissionID.EAC_PRISON_SOLAROFF2,\n                (MyTextsWrapperEnum.EAC_PRISON_SOLAROFF2_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.EAC_PRISON_MOTHERSHIPHELP },\n                null\n            ) { SaveOnSuccess = true,};\n            m_destroySolarPanelsSecond.OnMissionLoaded += DestroySolarPanelsSecondSubmissionLoaded;\n            m_destroySolarPanelsSecond.OnMissionSuccess += DestroySolarPanelsSecondSubmissionSuccess;\n            m_objectives.Add(m_destroySolarPanelsSecond);\n            \n            //06\n            var breakInsideStation = new MyTimedReachLocationObjective(\n               (MyTextsWrapperEnum.EAC_PRISON_BREAKIN_Name),\n               MyMissionID.EAC_PRISON_BREAKIN,\n               (MyTextsWrapperEnum.EAC_PRISON_BREAKIN_Description),\n               null,\n               this,\n               new MyMissionID[] { MyMissionID.EAC_PRISON_SOLAROFF2 },\n               new System.TimeSpan(0, 1, 0),\n               new MyMissionLocation(baseSector,(uint) EntityID.BreakInsideStationLocationDummy)\n           ) { SaveOnSuccess = true, StartDialogId = MyDialogueEnum.EAC_PRISON_0600, HudName = MyTextsWrapperEnum.HudCargoBay };\n            breakInsideStation.OnMissionSuccess += BreakInsideStationSubmissionSuccess;\n            breakInsideStation.OnMissionLoaded += BreakInsideStationOnOnMissionLoaded;\n            m_objectives.Add(breakInsideStation);\n            \n            //07\n            var marcusLocationIntel = new MyUseObjective(\n                   (MyTextsWrapperEnum.EAC_PRISON_LOCINTEL_Name),\n                   MyMissionID.EAC_PRISON_LOCINTEL,\n                   (MyTextsWrapperEnum.EAC_PRISON_LOCINTEL_Description),\n                   null,\n                   this,\n                   new MyMissionID[] { MyMissionID.EAC_PRISON_BREAKIN },\n                   new MyMissionLocation(baseSector, (uint)EntityID._MarcusIntelLocation),\n                   MyTextsWrapperEnum.PressToDownloadData,\n                   MyTextsWrapperEnum.Console,\n                   MyTextsWrapperEnum.DownloadingData,\n                   5000,\n                   MyUseObjectiveType.Hacking\n                ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudSecurityHub };\n\n            m_objectives.Add(marcusLocationIntel);\n            marcusLocationIntel.OnMissionLoaded += new MissionHandler(marcusLocationIntel_OnMissionLoaded);\n            marcusLocationIntel.OnMissionSuccess += MarcusLocationIntelOnOnMissionSuccess;\n            marcusLocationIntel.Components.Add(new MySpawnpointLimiter(m_spawns, 6));\n            \n            //08\n            m_findCircoutPart = new MyUseObjective(\n                    (MyTextsWrapperEnum.EAC_PRISON_ACQUIREIDCARD_Name),\n                    MyMissionID.EAC_PRISON_ACQUIREIDCARD,\n                    (MyTextsWrapperEnum.EAC_PRISON_ACQUIREIDCARD_Description),\n                    null,\n                    this,\n                    new MyMissionID[] { MyMissionID.EAC_PRISON_LOCINTEL},\n                    new MyMissionLocation(baseSector, (uint)EntityID.CargoIDCard),\n                    MyTextsWrapperEnum.PressToTakeCargo,\n                    MyTextsWrapperEnum.TakeAll,\n                    MyTextsWrapperEnum.TakeAll,\n                    2000,\n                    MyUseObjectiveType.Taking,\n                    radiusOverride: 50\n            ) { SaveOnSuccess = true, StartDialogId = MyDialogueEnum.EAC_PRISON_0700, HudName = MyTextsWrapperEnum.HudIdCard };\n\n            m_findCircoutPart.OnMissionLoaded += OnFindCircuitLoaded;\n            m_findCircoutPart.OnMissionSuccess += new MissionHandler(m_findCircoutPart_OnMissionSuccess);\n            m_objectives.Add(m_findCircoutPart);\n\n\n            var marcusLocationIntel2 = new MyUseObjective(\n               (MyTextsWrapperEnum.EAC_PRISON_LOCINTEL2_Name),\n               MyMissionID.EAC_PRISON_LOCINTEL2,\n               (MyTextsWrapperEnum.EAC_PRISON_LOCINTEL2_Description),\n               null,\n               this,\n               new MyMissionID[] { MyMissionID.EAC_PRISON_ACQUIREIDCARD },\n               new MyMissionLocation(baseSector, (uint)EntityID._MarcusIntelLocation),\n               MyTextsWrapperEnum.PressToDownloadData,\n               MyTextsWrapperEnum.Console,\n               MyTextsWrapperEnum.DownloadingData,\n               5000,\n               MyUseObjectiveType.Hacking\n            ) { SaveOnSuccess = true, SuccessDialogId = MyDialogueEnum.EAC_PRISON_0900, StartDialogId = MyDialogueEnum.EAC_PRISON_0800, HudName = MyTextsWrapperEnum.HudSecurityHub };\n\n            m_objectives.Add(marcusLocationIntel2);\n            \n            //09\n            var openDoors = new MyObjectiveEnablePrefabs(\n                (MyTextsWrapperEnum.EAC_PRISON_OPENACCESS_Name),\n                MyMissionID.EAC_PRISON_OPENACCESS,\n                (MyTextsWrapperEnum.EAC_PRISON_OPENACCESS_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.EAC_PRISON_LOCINTEL2 },\n                null,\n                new List<uint> {(int)EntityID.SecurityHub},\n                m_09toEnablePrefabs\n            ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudSecurityHub };\n            m_objectives.Add(openDoors);\n\n            openDoors.OnMissionLoaded += OnOpenDoorsLoaded;\n            \n            //10\n            var takeOffSecurityCircuit = new MyObjectiveDisablePrefabs(\n              (MyTextsWrapperEnum.EAC_PRISON_SECURITYOFF_Name),\n              MyMissionID.EAC_PRISON_SECURITYOFF,\n              (MyTextsWrapperEnum.EAC_PRISON_SECURITYOFF_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.EAC_PRISON_OPENACCESS },\n                new List<uint> { (uint)EntityID.HubHack },\n                new List<uint> { (uint)EntityID.HubHackGenerator },\n                false,\n                false\n            ) { SaveOnSuccess = true, StartDialogId = MyDialogueEnum.EAC_PRISON_1000, HudName = MyTextsWrapperEnum.HudHub };\n\n            takeOffSecurityCircuit.OnMissionLoaded += OntakeOffSecuritypartLoaded;//zapne svetlo\n            m_objectives.Add(takeOffSecurityCircuit);\n            \n            //11\n            var approachMarcusCell = new MyUseObjective(\n                (MyTextsWrapperEnum.EAC_PRISON_MARCUSCELL_Name),\n               MyMissionID.EAC_PRISON_MARCUSCELL,\n               (MyTextsWrapperEnum.EAC_PRISON_MARCUSCELL_Description),\n               null,\n               this,\n               new MyMissionID[] { MyMissionID.EAC_PRISON_SECURITYOFF },\n               new MyMissionLocation(baseSector, (uint)EntityID.MarcusCellLocation),\n               MyTextsWrapperEnum.HoldToMoveMarcus,\n               MyTextsWrapperEnum.Actor_Marcus,\n               MyTextsWrapperEnum.Moving,\n               4000,\n               MyUseObjectiveType.Taking\n            ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudMarcus };\n            approachMarcusCell.OnMissionLoaded += OnapproachMarcusLoaded;\n            m_objectives.Add(approachMarcusCell);\n\n            var marcusLoaded = new MyObjectiveDialog(\n                MyMissionID.EAC_PRISON_MARCUSDIALOG,\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.EAC_PRISON_MARCUSCELL },\n                MyDialogueEnum.EAC_PRISON_1200\n            ) { SaveOnSuccess = true };\n            marcusLoaded.OnMissionLoaded += OnMarcusLoadedLoaded;\n            m_objectives.Add(marcusLoaded);\n\n            var weHaveCompany = new MyObjectiveDialog(\n                MyMissionID.EAC_PRISON_WE_HAVE_COMPANY,\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.EAC_PRISON_MARCUSDIALOG },\n                MyDialogueEnum.EAC_PRISON_1250\n            ) { SaveOnSuccess = false };\n            weHaveCompany.OnMissionLoaded += OnWeHaveCompanyLoaded;\n            m_objectives.Add(weHaveCompany);\n\n            //12\n            var findMarcusSmallShip = new MyUseObjective(\n             (MyTextsWrapperEnum.EAC_PRISON_COVERMARCUS_Name),\n             MyMissionID.EAC_PRISON_COVERMARCUS,\n             (MyTextsWrapperEnum.EAC_PRISON_COVERMARCUS_Description),\n               null,\n               this,\n               new MyMissionID[] { MyMissionID.EAC_PRISON_WE_HAVE_COMPANY },\n               new MyMissionLocation(baseSector, (uint)EntityID.MarcusShipDetector),\n               MyTextsWrapperEnum.HoldToMoveMarcus,\n               MyTextsWrapperEnum.Actor_Marcus,\n               MyTextsWrapperEnum.Moving,\n               4000,\n               MyUseObjectiveType.Putting\n            ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudShip };\n\n            // destroySolarDefence.OnMissionSuccess += ToHangarSubmissionSuccess;\n            m_objectives.Add(findMarcusSmallShip);\n            findMarcusSmallShip.OnMissionSuccess += OnSuccesfindMarcusSmallShip;\n\n            //13\n            var equipMarcus = new MyUseObjective(\n             (MyTextsWrapperEnum.EAC_PRISON_GETARMS_Name),\n             MyMissionID.EAC_PRISON_GETARMS,\n             (MyTextsWrapperEnum.EAC_PRISON_GETARMS_Description),\n                   null,\n                   this,\n                   new MyMissionID[] { MyMissionID.EAC_PRISON_COVERMARCUS },\n                   new MyMissionLocation(baseSector, (uint)EntityID.CargoForMarcus),\n                   MyTextsWrapperEnum.HoldToMoveWeapons,\n                   MyTextsWrapperEnum.Actor_Marcus,\n                   MyTextsWrapperEnum.Moving,\n                   4000\n             ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudEquipment };\n\n            // destroySolarDefence.OnMissionSuccess += ToHangarSubmissionSuccess;\n            m_objectives.Add(equipMarcus);\n            equipMarcus.OnMissionSuccess += OnEquipMarcussSucces;\n            equipMarcus.OnMissionLoaded += EquipMarcusOnOnMissionLoaded;\n\n            //14\n            var fightOutStation = new MyObjective(\n                    (MyTextsWrapperEnum.EAC_PRISON_FIGHTOUT_Name),\n                MyMissionID.EAC_PRISON_FIGHTOUT,\n                (MyTextsWrapperEnum.EAC_PRISON_FIGHTOUT_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.EAC_PRISON_GETARMS },\n                new MyMissionLocation(baseSector, (uint)EntityID.StationDummy)\n            ) { SaveOnSuccess = true, StartDialogId = MyDialogueEnum.EAC_PRISON_1300, SuccessDialogId = MyDialogueEnum.EAC_PRISON_1400, HudName = MyTextsWrapperEnum.Nothing };\n            fightOutStation.OnMissionLoaded += fightOutStation_OnMissionLoaded;\n            fightOutStation.OnMissionSuccess += fightOutStation_OnMissionSuccess;\n            m_objectives.Add(fightOutStation);\n\n            //15\n            var CrushRemainingShips = new MyObjectiveDestroy(\n                (MyTextsWrapperEnum.EAC_PRISON_CRUSHREINFORCEMENTS_Name),\n                MyMissionID.EAC_PRISON_CRUSHREINFORCEMENTS,\n                (MyTextsWrapperEnum.EAC_PRISON_CRUSHREINFORCEMENTS_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.EAC_PRISON_FIGHTOUT },\n                new List<uint> { },         // entities needed to kill\n                m_15toKillSpawnpoints,  // spawnpoint from which bots must be killed\n                false                       // don't show marks on entities (not from spawnpoint)\n            ) { SaveOnSuccess = true, };\n            m_objectives.Add(CrushRemainingShips);\n            \n            //16\n            var GetToMeetingPoint = new MyObjective(\n                (MyTextsWrapperEnum.EAC_PRISON_MEETINGPOINT_Name),\n                MyMissionID.EAC_PRISON_MEETINGPOINT,\n                (MyTextsWrapperEnum.EAC_PRISON_MEETINGPOINT_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.EAC_PRISON_CRUSHREINFORCEMENTS },\n                new MyMissionLocation(baseSector, MyMissionLocation.MADELYN_HANGAR),\n                radiusOverride: MyMissionLocation.MADELYN_HANGAR_RADIUS\n              ) { SaveOnSuccess = true, StartDialogId = MyDialogueEnum.EAC_PRISON_1500, SuccessDialogId = MyDialogueEnum.EAC_PRISON_1600, HudName = MyTextsWrapperEnum.HudMeetingPoint };\n            m_objectives.Add(GetToMeetingPoint);\n            \n        }\n\n        private void EquipMarcusOnOnMissionLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.Victory, 100, \"KA06\");\n        }\n\n        private void BreakInsideStationOnOnMissionLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.StealthAction, 100, \"KA03\");\n        }\n\n        private void MarcusLocationIntelOnOnMissionSuccess(MyMissionBase sender)\n        {\n            MyScriptWrapper.AddNotification(MyScriptWrapper.CreateNotification(MyTexts.DownloadFailed, MyGuiManager.GetFontMinerWarsRed(),5000));\n        }\n\n        void fightOutStation_OnMissionLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.SetEntityDestructible(MyScriptWrapper.GetEntity((uint)EntityID.CargoExitDoor), true);\n        }\n\n        void fightOutStation_OnMissionSuccess(MyMissionBase sender)\n        {\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.HeavyFight, 100, \"KA17\");\n        }\n\n        void m_findCircoutPart_OnMissionSuccess(MyMissionBase sender)\n        {\n            MyScriptWrapper.TryHide((uint)EntityID.CargoIDCard);\n        }\n\n        void marcusLocationIntel_OnMissionLoaded(MyMissionBase sender)\n        {\n            //throw new NotImplementedException();\n            MyScriptWrapper.DeactivateSpawnPoint(74982);\n            MyScriptWrapper.DeactivateSpawnPoint(74981);\n            //MyAudio.ApplyTransition(MyMusicTransitionEnum.HeavyFight);\n        }\n\n        void motherShipHelp_OnMissionLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.ActivateSpawnPoint(74982);\n            MyScriptWrapper.ActivateSpawnPoint(74981);\n        }\n\n        void destroySolarDefence_OnMissionLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.DeactivateSpawnPoints(m_battleSpawnpoints);\n        }\n\n        void mothershipBattle_OnMissionLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.ActivateSpawnPoints(m_battleSpawnpoints);\n            MyAudio.ApplyTransition(MyMusicTransitionEnum.HeavyFight, 100, \"KA19\");\n        }\n\n        private void OnEquipMarcussSucces(MyMissionBase sender)\n        {\n            if (m_marcus != null)\n            {\n                m_marcus.Inventory.AddInventoryItems(m_marcusInventory);\n                m_marcusInventory.Clear();\n            }\n        }\n\n           private void OnSuccesfindMarcusSmallShip(MyMissionBase sender)\n           {\n\n            if (m_marcus != null)\n            {\n                MyScriptWrapper.HideEntity(m_marcusPlacHolder);\n\n                m_marcus.Enabled = true;\n                m_marcus.Visible = true;\n                m_marcus.ActiveAI = true;\n                m_marcus.Follow(MySession.PlayerShip);\n\n                var position = m_marcusPlacHolder.GetPosition();\n\n                m_marcus.WorldMatrix = m_marcusPlacHolder.WorldMatrix;\n            }\n\n            MyScriptWrapper.Highlight((uint)EntityID.MarcusPlaceholder, false, this);\n        }\n\n        private void OnapproachMarcusLoaded(MyMissionBase sender)\n        {\n            var light = MyScriptWrapper.GetEntity(75005) as MyPrefabLight;\n\n            if (light != null)\n            {\n                light.SetAllColors(new Color(1f, 0f, 0f));\n                light.Effect = MyLightEffectTypeEnum.CONSTANT_FLASHING;\n            }\n\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.GetEntity((int)EntityID.HubHackGenerator), false);\n            var hub = MyScriptWrapper.GetEntity((int) EntityID.HubHackGenerator) as MyPrefabSecurityControlHUB;\n            hub.UseProperties.HackType = MyUseType.None;\n            hub.UseProperties.UseType = MyUseType.None;\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.LightFight, 100, \"KA28\");\n\n            MyScriptWrapper.Highlight((uint)EntityID.MarcusPlaceholder, true, this);\n        }\n\n        private void OnMarcusLoadedLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.HeavyFight, 100, \"KA16\");\n        }\n\n        private void OnWeHaveCompanyLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnpointAtWeHaveCompany);\n        }\n        \n        private void OnOpenDoorsLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.GetEntity((int)EntityID.SecurityHub), true);\n        }\n\n\n        private void OntakeOffSecuritypartLoaded(MyMissionBase sender)\n        {\n            var light = MyScriptWrapper.TryGetEntity(75006) as MyPrefabLight;\n\n            if (light != null)\n            {\n                light.SetAllColors(new Color(0f, 1f, 0f));\n                light.Effect = MyLightEffectTypeEnum.DISTANT_GLARE;\n            }\n        }\n        \n        private void OnFindCircuitLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.LightFight, 100, \"KA27\");\n            MyScriptWrapper.Highlight((uint)EntityID.CargoIDCard, true, this);\n            MyScriptWrapper.ActivateSpawnPoint(72524);\n            MyScriptWrapper.DisableShip(MyScriptWrapper.GetEntity(75066));\n            MyScriptWrapper.SetEntityEnabled((uint)EntityID.CargoIDCard,false);\n        }\n        \n        public void DestroySolarDefenceOnOnMissionSuccess(MyMissionBase sender)\n        {\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.HeavyFight, 100, \"KA06\");\n        }\n\n        public override void Load()\n        {\n            if (!IsMainSector)\n                return;\n\n            //add biochem ammo\n            //MyScriptWrapper.GetPlayerInventory().AddInventoryItem(MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Missile_BioChem, 100f, true);\n            //MyScriptWrapper.GetPlayerInventory().AddInventoryItem(MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Mine_BioChem, 100, true);\n            MyScriptWrapper.AddInventoryItem(MyScriptWrapper.GetPlayerInventory(), MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_BioChem, 100);\n            MyScriptWrapper.AddInventoryItem(MyScriptWrapper.GetCentralInventory(), MyMwcObjectBuilderTypeEnum.SmallShip_HackingTool, (int)MyMwcObjectBuilder_SmallShip_HackingTool_TypesEnum.Level_2, 1f, true);\n\n            MyScriptWrapper.DeactivateSpawnPoint((uint)EntityID.SpawnpointAtWeHaveCompany);\n\n            /*\n            MyMwcObjectBuilder_SmallShip_Player originalBuilder = MySession.PlayerShip.GetObjectBuilder(true) as MyMwcObjectBuilder_SmallShip_Player;\n            originalBuilder.ShipType = MyMwcObjectBuilder_SmallShip_TypesEnum.GETTYSBURG;\n            MySession.PlayerShip.Close();\n            MyEntities.CreateFromObjectBuilderAndAdd(null, originalBuilder, originalBuilder.PositionAndOrientation.GetMatrix());\n              */\n            m_panelsLeft = GetPanelsLeft((uint)EntityID.PanelsPrefabContainer);\n            //MyAudio.ApplyTransition(MyMusicTransitionEnum.HeavyFight);\n\n            MyScriptWrapper.SetPlayerFaction(MyMwcObjectBuilder_FactionEnum.Rainiers);\n            MyScriptWrapper.SetFactionRelation(MyMwcObjectBuilder_FactionEnum.Rainiers, MyMwcObjectBuilder_FactionEnum.FourthReich, MyFactions.RELATION_BEST);\n            MyScriptWrapper.SetFactionRelation(MyMwcObjectBuilder_FactionEnum.Rainiers, MyMwcObjectBuilder_FactionEnum.Euroamerican, MyFactions.RELATION_WORST);\n            MyScriptWrapper.FixBotNames();\n\n            MyEntityDetector startDetector = MyScriptWrapper.GetDetector(MyScriptWrapper.GetEntity((uint) EntityID.StartDetector));\n            startDetector.OnEntityEnter += StartDummyDetector;\n            startDetector.On();\n\n            MyEntityDetector Security01Detector = MyScriptWrapper.GetDetector(MyScriptWrapper.GetEntity((uint)EntityID.SecurityDetector));\n            Security01Detector.OnEntityEnter += StartSecurity01Detector;\n            Security01Detector.On();\n\n            MyEntityDetector Security02Detector = MyScriptWrapper.GetDetector(MyScriptWrapper.GetEntity((uint)EntityID.SecurityDetector2));\n            Security02Detector.OnEntityEnter += StartSecurity02Detector;\n            Security02Detector.On();\n\n            MyScriptWrapper.EntityClosing += EntityClosing;\n\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.GetEntity((uint)EntityID.DestroyPanelsEnable1), false);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.GetEntity((uint)EntityID.CargoExitDoor), false);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.GetEntity((uint)EntityID.Doors1), false);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.GetEntity((uint)EntityID.DestroyPanelsEnable2), false);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.GetEntity((uint)EntityID.Doors3), false);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.GetEntity((uint)EntityID.Doors4), false);\n\n            MyScriptWrapper.OnSpawnpointBotSpawned += OnSpawnpointSpawned;\n\n            MyScriptWrapper.OnSentenceStarted += MyScriptWrapper_OnSentenceStarted;\n\n\n\n            m_marcus = MyScriptWrapper.GetEntity(\"Marcus\") as MySmallShipBot;\n\n            //disable marcus \n            if (m_marcus != null)\n            {\n                //MyScriptWrapper.DisableShip(m_ma);\n                m_marcus.Enabled = false;\n                m_marcus.Visible = false;\n                m_marcus.ActiveAI = false;\n                MyScriptWrapper.StopFollow(m_marcus);\n                m_marcusInventory.Clear();\n                m_marcusInventory.AddRange(m_marcus.Inventory.GetInventoryItems());\n                m_marcus.Inventory.ClearInventoryItems();\n            }\n\n            //disable ships for marcus\n            MyScriptWrapper.DisableShip(MyScriptWrapper.GetEntity((uint)EntityID.MarcusFakeShip1));\n            MyScriptWrapper.DisableShip(MyScriptWrapper.GetEntity((uint)EntityID.MarcusFakeShip2));\n            MyScriptWrapper.DisableShip(MyScriptWrapper.GetEntity((uint)EntityID.MarcusPlaceholder));\n            MyScriptWrapper.DisableShip(MyScriptWrapper.GetEntity((uint)EntityID.MarcusFakeShip3));\n\n\n            m_marcusPlacHolder = MyScriptWrapper.GetEntity((uint)EntityID.MarcusPlaceholder);\n\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.GetEntity((int)EntityID.SecurityHub), false);\n\n            InitDetector((uint)75094, StartEACDetector);\n\n            //add Raven Girl and Raven Guy\n            //We need to replace old vitolino+tanja, because they have deutch smallships from doppelburg\n\n            m_ravenguyBot = MyScriptWrapper.GetEntity(\"RavenGuy\") as MySmallShipBot;\n            m_ravenguyBot.SetName(\"Disabled_vitolino\");\n            m_ravenguyBot.MarkForClose();\n\n            m_ravenguyBot = MyScriptWrapper.InsertFriend(MyActorEnum.VALENTIN);\n            m_ravenguyBot.LeaderLostEnabled = true;\n            m_ravenguyBot.Follow(MySession.PlayerShip);\n            Matrix ravenguyPosition = Matrix.CreateWorld(MySession.PlayerShip.GetPosition() - Vector3.Right * 15, MySession.PlayerShip.WorldMatrix.Forward, MySession.PlayerShip.WorldMatrix.Up);\n            m_ravenguyBot.SetWorldMatrix(ravenguyPosition);\n\n            m_ravengirlBot = MyScriptWrapper.GetEntity(\"RavenGirl\") as MySmallShipBot;\n            m_ravengirlBot.SetName(\"Disabled_tanja\");\n            m_ravengirlBot.MarkForClose();\n\n            m_ravengirlBot = MyScriptWrapper.InsertFriend(MyActorEnum.TARJA);\n            m_ravengirlBot.LeaderLostEnabled = true;\n            m_ravenguyBot.Follow(MySession.PlayerShip);\n            Matrix ravengirlPosition = Matrix.CreateWorld(MySession.PlayerShip.GetPosition() + Vector3.Right * 15, MySession.PlayerShip.WorldMatrix.Forward, MySession.PlayerShip.WorldMatrix.Up);\n            m_ravengirlBot.SetWorldMatrix(ravengirlPosition);\n            \n            base.Load();\n        }\n\n        void MyScriptWrapper_OnSentenceStarted(MyDialogueEnum dialogue, MyDialoguesWrapperEnum sentence)\n        {\n            if (dialogue == MyDialogueEnum.EAC_PRISON_1200 && sentence == MyDialoguesWrapperEnum.Dlg_EACPrison_1200)\n            {\n                MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.Special, 100, \"KA13\");\n            }\n\n            if (dialogue == MyDialogueEnum.EAC_PRISON_1250 && sentence == MyDialoguesWrapperEnum.Dlg_EACPrison_1210)\n            {\n                MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.HeavyFight, 100, \"KA16\");\n            }\n        }\n\n        private void StartEACDetector(MyEntityDetector sender, MyEntity entity, int meetcriterias)\n        {\n            MyScriptWrapper.ActivateSpawnPoints(m_EACdetectorSpawns);\n            \n        }\n\n        private MyEntityDetector InitDetector(uint detectorID, OnEntityEnter handler)\n        {\n            MyEntityDetector detector = MyScriptWrapper.GetDetector(MyScriptWrapper.GetEntity(detectorID));\n            detector.OnEntityEnter += handler;\n            detector.On();\n            return detector;\n        }\n\n        private void OnSpawnpointSpawned(MyEntity spawnpoint, MyEntity bot)\n        {\n            if (m_battleSpawnpoints.Contains(spawnpoint.EntityId.Value.NumericValue))\n            {\n                MyScriptWrapper.SetSleepDistance(bot, 10000);\n            }\n        }\n\n        public override void Unload()\n        {\n            base.Unload();\n\n            m_marcus = null;\n            m_marcusPlacHolder = null;\n            m_ravenguyBot = null;\n            m_ravengirlBot = null;\n\n            MyScriptWrapper.OnSentenceStarted -= MyScriptWrapper_OnSentenceStarted;\n            MyScriptWrapper.EntityClosing -= EntityClosing;\n            MyScriptWrapper.OnSpawnpointBotSpawned -= OnSpawnpointSpawned;\n        }\n\n\n        public override void Update()\n        {\n            if (!IsMainSector)\n                return;\n\n            base.Update();\n\n            if (!m_playerShipReverted)\n            {\n                MyScriptWrapper.RevertShipFromInventory();\n                m_playerShipReverted = true;\n            }\n\n            if (m_destroySolarPanelsFirst.IsAvailable() && m_panelsLeft <= m_totalPanelCount * (1 - DestroySolarPanelPercentsOne))\n            {\n                m_destroySolarPanelsFirst.Success();\n            }\n\n            if (m_destroySolarPanelsSecond.IsAvailable() && m_panelsLeft <= m_totalPanelCount * (1 - DestroySolarPanelPercentsTwo))\n            {\n                m_destroySolarPanelsSecond.Success();\n            }\n        }\n\n        void AddPanelPercentNotification()\n        {\n            if (m_hudSolarPanelsCounter != null) m_hudSolarPanelsCounter.Disappear();\n            m_hudSolarPanelsCounter = MyScriptWrapper.CreateNotification(\n                    MyTextsWrapperEnum.SolarPanelsLeft,\n                    MyHudConstants.MISSION_FONT,\n                    0,\n                    new object[] { (int)((1 - (float)m_panelsLeft / m_totalPanelCount) * 100) });\n            MyScriptWrapper.AddNotification(m_hudSolarPanelsCounter);\n        }\n\n        void RemovePanelPercentNotification()\n        {\n            if (m_hudSolarPanelsCounter != null) m_hudSolarPanelsCounter.Disappear();\n        }\n\n        void EntityClosing(MyEntity entity)\n        {\n            MyPrefabBase prefab = entity as MyPrefabBase;\n            if ((m_destroySolarPanelsFirst.IsAvailable() || m_destroySolarPanelsSecond.IsAvailable()) &&\n                (prefab != null && entity is MyPrefabLight == false && prefab.Parent != null && prefab.Parent.EntityId.HasValue && prefab.Parent.EntityId.Value.NumericValue == 42938)\n               )\n            {\n                --m_panelsLeft;\n                AddPanelPercentNotification();\n            }\n        }\n\n        private void StartDummyDetector(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (entity == MySession.PlayerShip)\n            {\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.StartSpawn);\n                sender.Off();\n            }\n        }\n\n        private void StartSecurity01Detector(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (entity == MySession.PlayerShip)\n            {\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SecuritySpawn1);\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SecuritySpawn2);\n                sender.Off();\n            }\n        }\n\n        private void StartSecurity02Detector(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (entity == MySession.PlayerShip)\n            {\n                MyScriptWrapper.ActivateSpawnPoints(m_spawnsSecurityDetector);\n                sender.Off();\n            }\n        }\n        \n        private void DestroySolarPanelsFirstSubmissionLoaded(MyMissionBase sender)\n        {\n            m_panelsLeft = GetPanelsLeft((uint)EntityID.PanelsPrefabContainer);\n            AddPanelPercentNotification();\n        }\n\n        private void DestroySolarPanelsFirstSubmissionSuccess(MyMissionBase sender)\n        {\n            RemovePanelPercentNotification();\n        }\n\n        private void DestroySolarPanelsSecondSubmissionLoaded(MyMissionBase sender)\n        {\n            m_panelsLeft = GetPanelsLeft((uint)EntityID.PanelsPrefabContainer);\n            AddPanelPercentNotification();\n        }\n\n        private void DestroySolarPanelsSecondSubmissionSuccess(MyMissionBase sender)\n        {\n            RemovePanelPercentNotification();\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.GetEntity((uint)EntityID.DestroyPanelsEnable1), true);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.GetEntity((uint)EntityID.DestroyPanelsEnable2), true);\n        }\n\n\n\n        void BreakInsideStationSubmissionSuccess(MyMissionBase sender)\n        {\n            //MyAudio.ApplyTransition(MyMusicTransitionEnum.TensionBeforeAnAction);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.GetEntity((uint)EntityID.DestroyPanelsEnable1), false);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.GetEntity((uint)EntityID.DestroyPanelsEnable2), false);\n        }\n\n        private int GetPanelsLeft(uint containerEntityId)\n        {\n            int panelsLeft = -2;  // apparently there are 13*9 panels and two non-panels :)\n            MyPrefabContainer container = MyScriptWrapper.GetEntity(containerEntityId) as MyPrefabContainer;\n            Debug.Assert(container != null);\n            if (container != null)\n            {\n                foreach (var prefab in container.GetPrefabs())\n                {\n                    if (prefab is MyPrefabLight == false)\n                    {\n                        ++panelsLeft;\n                    }\n                }\n            }\n            return panelsLeft;\n        }\n\n        public override void Accept()\n        {\n            base.Accept();\n\n            //Revert ship only once\n            m_playerShipReverted = false;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/SinglePlayer/MyEACSurveySiteMission.cs",
    "content": "﻿#region Using\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.AppCode.Game.HUD;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Missions;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.AppCode.Game.Explosions;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Entities.VoxelHandShapes;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Voxels;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.Game.Audio.Dialogues;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.AppCode.Game.Entities.SubObjects;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.AppCode.Game.Missions.Components;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.Resources;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Networking;\nusing MinerWars.AppCode.Game.World;\nusing SysUtils.Utils;\n\n#endregion\n\nnamespace MinerWars.AppCode.Game.Missions.SinglePlayer\n{\n    class MyEACSurveySiteMission : MyMission\n    {\n        #region Enums\n        private enum EntityID\n        {\n            StartLocation = 1275,\n            RedHubSubmissionLocation = 1277,\n            ToTheBaseSubmissionLocation = 70907,\n            CommandCentreSubmissionLocation = 70908,\n            GeneratorSubmissionLocation = 72629,\n            GaneratorHUB = 215890,            \n            HangarSubmissionLocation = 72910,\n            Barricade1 = 35074,\n            Barricade2 = 35075,\n            Barricade3 = 35076,\n            Barricade4 = 35077,\n            Barricade5 = 34042,\n            Barricade6 = 34043,\n            Barricade7 = 34038,\n            Barricade8 = 34044,\n            PreBarricade1 = 101879,\n            PreBarricade2 = 101875,\n            PreBarricade3 = 101876,\n            PreBarricade4 = 101880,\n            PreBarricade5 = 101882,\n            PreBarricade6 = 101883,\n            PreBarricade7 = 101884,\n            PreBarricade8 = 101885,\n            OptionalSaveMinersAcceptLocation = 72909,\n            OptionalSaveMinersLocation = 100685,\n            HangerEscapeLocation = 83479,\n            Light1 = 99889,\n            Light2 = 99887,\n            Light3 = 99890,\n            Light4 = 99892,\n            Light5 = 99894,\n            Light6 = 99893,\n            MothershipParticleEffect = 77392,\n            SpawnPointStart1 = 66031,\n            SpawnPointStart2 = 66032,\n            SpawnPointStart3 = 78710,\n            SpawnPointBlue1 = 66033,\n            SpawnPointBlue2 = 66035,\n            SpawnPointBlue3 = 79545,\n            SpawnPointGreen1 = 73160,\n            SpawnPointGreen2 = 73161,\n            SpawnPointGreen3 = 73163,\n            SpawnPointGreen4 = 80506,\n            SpawnPointCrazyRussian = 77633,\n            SpawnPointPipe1 = 76156,\n            SpawnPointPipe2 = 76157,\n            SpawnPointPipe3 = 76158,\n            SpawnPointPipe4 = 76159,\n            SpawnPointInside = 71772,\n            SpawnPointEnemyStream01 = 107942,\n            SpawnPointEnemyStream02 = 107943,\n            SpawnPointEnemyStream03 = 107955,\n            SpawnPointRouteLiving1 = 72411,\n            SpawnPointRouteLiving2 = 71824,\n            SpawnPointRouteLiving3 = 72412,\n            SpawnPointCommandCentre1 = 76664,\n            SpawnPointCommandCentre2 = 76665,\n            SpawnPointWorkshop1 = 76650,\n            SpawnPointWorkshop2 = 76663,\n            SpawnPointHangarRoute = 76649,\n            SpawnPointStorageRoute = 93239,\n            SpawnPointPhase1 = 76647,\n            SpawnPointPhase2 = 72911,\n            SpawnPointPhase3 = 76648,\n            SpawnPointSurvived = 76651,\n            DetectorBlue = 1276,\n            DetectorGreen = 71793,\n            DetectorRed = 73358,\n            DetectorBarricade = 35433,\n            DetectorPipe = 70906,\n            DetectorRouteLiving = 76177,\n            DetectorCommandDoor = 76412,\n            ExplosionBlue = 80024,\n            Explosion1 = 80264,\n            Explosion2 = 80265,\n            Explosion3 = 80266,\n            Explosion4a = 80267,\n            Explosion4b = 80263,\n            ExplosionBarricade1 = 80747,\n            ExplosionBarricade2 = 91472,\n            ExplosionCutscene1 = 77394,\n            ExplosionCutscene2a = 77393,\n            CrashingMothershipFuel = 100146,\n            ExplosionCutscene3 = 100138,\n            CrashingMothershipComm = 100143,\n            CrashingMothershipThruster1 = 100142,\n            CrashingMothershipThruster2 = 100140,\n            CrashingMothershipBatery = 100147,\n            CrashingMothershipSmoke = 206377,\n            ExplosionCutscene5a = 103258,\n            ExplosionCutscene5b = 103259,\n            ExplosionPhase1 = 80748,\n            ExplosionPhase2 = 80750,\n            ExplosionPhase3 = 80749,\n            ExplosionHangarBay1 = 83480,\n            ExplosionHangarBay2 = 83481,\n            ExplosionOptionalPhase = 102405,\n            ExplosionCenterHangarBay1 = 83482,\n            ExplosionCenterHangarBay2 = 83483,\n            ExplosionCenterHangarBay3 = 83484,\n            ExplosionFuelTank1a = 20400,\n            ExplosionFuelTank1b = 82749,\n            ExplosionFuelTank1c = 83491,\n            ExplosionFuelTank2 = 85296,\n            VoxelMap = 16791862,\n            VoxelSphere1 = 91210,\n            VoxelSphere2 = 91209,\n            VoxelSphere3 = 91208,\n            VoxelSphere4 = 91207,\n            DoorNearControl1 = 67281,\n            DoorNearControl2 = 67285,\n            DoorNearControl3 = 67276,\n            DoorNearControl4 = 67219,\n            DoorNearControl5 = 67535,\n            DoorNearControl6 = 67537,\n            DoorNearControl7 = 69688,\n            DoorNearControl8 = 67456,\n            DoorNearControl9 = 67458,\n            DoorProcessingResearch1 = 71820,\n            DoorProcessingResearch2 = 71817,\n            DoorProcessingResearch3 = 72904,\n            DoorProcessingResearch4 = 72903,\n            DoorProcessingResearch5 = 67472,\n            DoorProcessingResearch6 = 67470,\n            DoorProcessingResearch7 = 67465,\n            DoorProcessingResearch8 = 67463,\n            DoorLocked1 = 67186,\n            DoorLocked2 = 76911,\n            DoorGenerator1 = 67201,\n            DoorGenerator2 = 67192,\n            DoorHangar1 = 69677,\n            DoorHangar2 = 66784,\n            DoorHangar3 = 69668,\n            DoorHangar4 = 67130,\n            DoorHangar5 = 67132,\n            DoorHangar6 = 67134,\n            DoorHangar7 = 66772,\n            DoorHangar8 = 66773,\n            DoorHangar9 = 66776,\n            DoorHangar10 = 67325,\n            DoorHangar11 = 67329,\n            DoorHangar12 = 67142,\n            DetectorCommandCentreEntrance = 93240,\n            DetectorHangar = 93241,\n            Generator1 = 99638,\n            Generator2 = 99643,\n            Generator3 = 72406,\n            Generator4 = 99644,\n            LoadingBayDummy = 93719,\n            SavedMiner1 = 100699,\n            SavedMiner2 = 100686,\n            SavedMiner3 = 100712,\n            HangarBay1a = 70210,\n            HangarBay1b = 70219,\n            HangarBay2a = 70215,\n            HangarBay2b = 70220,\n            HangarBay3 = 70208,\n            Mothership = 100135,\n            //MadelynMothership = 83485,\n            BeamageBefore01 = 8776,\n            BeamageBefore02 = 8779,\n            BeamageBefore03 = 8780,\n            BeamageBefore04 = 8781,\n            BeamageBefore05 = 1229,\n            BeamageBefore06 = 1129,\n            BeamageBefore07 = 1176,\n            BeamageBefore08 = 1160,\n            BeamageBefore09 = 20402,\n            BeamageAfter01 = 106023,\n            BeamageAfter02 = 106028,\n            BeamageAfter03 = 131471,\n            BeamageAfter04 = 106026,\n            BeamageAfter05 = 106027,\n            BeamageAfter06 = 104113,\n            RussianMothership1 = 131472,\n            RussianMothership2 = 75843,\n            RussianMothership3 = 109335,\n            FollowDetector = 117136,\n            MarcusRoute01 = 42763,\n            MarcusRoute02 = 20537,\n            MarcusRoute03 = 20530,\n            MarcusRoute04 = 20527,\n            //Marcus = 118137,\n            MinersSpawnpoint01 = 121176,\n            MinersSpawnpoint02 = 121177,\n            MinersSpawnpoint03 = 122214,\n            MinersSpawnpoint04 = 139970,\n            MinersSpawnpoint05 = 144446,\n            Left_PlatformDummy = 135785,\n            Left_Control = 125839,\n            Left_Generator = 125837, \n            Left_LeftTurretLight = 127200,\n            Left_RightTurret = 70085,\n            Left_RightTurretLight = 127199,\n            Left_Light1 = 127204,\n            Left_Light2 = 125874,\n            Right_PlatformDummy = 135786,\n            Right_Control = 125871,\n            Right_Generator = 125870,\n            Right_LeftTurret = 70082,\n            Right_LeftTurretLight = 127202,\n            Right_RightTurretLight = 127201,\n            Right_Light1 = 125873,\n            Right_Light2 = 127203,\n            Asteroid_Static_01 = 136845,\n            Asteroid_Static_02 = 136847,\n            Asteroid_Static_03 = 136846,\n            Asteroid_Static_04 = 136848,\n            Asteroid_Static_05 = 136850,\n            Asteroid_Static_06 = 136851,\n            Asteroid_Static_07 = 136853,\n            Asteroid_Static_08 = 136852,\n            Asteroid_Static_09 = 136849,\n            Particles_01 = 82582,\n            Particles_03 = 112775,\n            Particles_04 = 115123,\n            CargoToMove01_Dummy = 172108,\n            CargoToMove01_1 = 131446, // box\n            CargoToMove01_2 = 131447,\n            CargoToMove01_3 = 101117, // box\n            CargoToMove01_4 = 70889,\n            CargoToMove02_Dummy = 172109,\n            CargoToMove02_1 = 131451, // box\n            CargoToMove02_2 = 131450,\n            CargoToMove02_3 = 131452, // box\n            CargoToMove02_4 = 131453,\n            CargoToMove03_Dummy = 172110,\n            CargoToMove03_1 = 131462, // box\n            CargoToMove03_2 = 131463,\n            BarricadeVoxels1 = 174192, //80\n            BarricadeVoxels2 = 174842, //100\n            BarricadeVoxels3 = 174843, //100\n            TurretFriend01 = 72418,\n            TurretFriend02 = 72419,\n            TurretFriend03 = 93477,\n            TurretFriend04 = 93479,\n            TurretFriend05 = 93481,\n            TurretFriend06 = 93483,\n            //InfluenceSphere01 = 194376,\n            //InfluenceSphere02 = 194378,\n            //InfluenceSphere03 = 194380,\n            //InfluenceSphere04 = 194382,\n            SharpshooterSpawn = 193371,\n            Dust01 = 198371,\n            Dust02 = 198372,\n            Dust03 = 198373,\n            Dust04 = 198377,\n            Dust05 = 198378,\n            Dust06 = 198379,\n            Dust07 = 198380,\n            Dust08 = 198381,\n            OtherParticle01 = 199349,\n            OtherParticle02 = 200786,\n            OtherParticle03 = 210172,\n            OtherParticle04 = 210067,\n            OtherParticle05 = 209951,\n            OtherParticle06 = 210030,\n            OtherParticle07 = 209872,\n            OtherParticle08 = 209767,\n            OtherParticle09 = 209582,\n            OtherParticle10 = 207306,\n            OtherParticle11 = 209584,\n            OtherParticle12 = 209583,\n            OtherParticle13 = 207643,\n            OtherParticle14 = 207473,\n            OtherParticle15 = 207507,\n            OtherParticle16 = 207541,\n            GeneratorLight = 75352,\n\n            MothershipCrash01 = 204612,\n            MothershipCrash02 = 204611,\n            MothershipCrash03 = 204610,\n            MothershipCrash04 = 204609,\n            //MothershipCrashTurret = 100145,\n            MothershipCrashVoxel = 204613,\n            MothershipCrashEffect1 = 204614,\n            MothershipCrashEffect2 = 205333,\n            MothershipCrashEffect3 = 212087,\n            MothershipCrashEffect4 = 212088,\n\n            VendorHangar = 195395,\n\n            MSCrashExplosion1 = 16780710,\n            MSCrashExplosion2 = 16780709,\n            MSCrashExplosion3 = 16780711,\n            MSCrashExplosion4 = 16780707,\n            MSCrashExplosion5 = 16780708,\n            MSCrashExplosion6 = 16782441,\n\n\n        }\n\n        private List<uint> m_LightsAllOfThem = new List<uint>\n        {                                                              \n            73557, 73556, 73555, 73554, 70900, 70899, 70901, 70881, 70446, 70883, 70885, 70884, 70882, 70881, 70441, 75382, 73755, 73756, 72901, 68793, 68796, 68795, 68794, 68786, 68779, 68783, 68784, 68785, 72889, 68787, 68789, 72900, 72902, 72888, 173168, 173166, 127205, 127206, 93004, 127209, 127208, 127207, 91975, 91974, 91977, 91976, 69416, 69415, 69413, 69414, 73973, 73974, 73975, 73976\n        };\n\n        public override void ValidateIds()\n        {\n            foreach (var value in Enum.GetValues(typeof(EntityID)))\n            {\n                MyScriptWrapper.GetEntity((uint)((value as EntityID?).Value));\n            }\n            foreach (var item in m_LightsAllOfThem)\n            {\n                MyScriptWrapper.GetEntity(item);\n            }\n        }\n\n        /*private List<uint> m_influenceAlarm = new List<uint>\n        {\n            (uint)EntityID.InfluenceSphere01, (uint)EntityID.InfluenceSphere02, (uint)EntityID.InfluenceSphere03, (uint)EntityID.InfluenceSphere04\n        };\n        */\n\n        private List<uint> m_turrets = new List<uint>\n        {\n            (uint)EntityID.TurretFriend01, (uint)EntityID.TurretFriend02, (uint)EntityID.TurretFriend03, (uint)EntityID.TurretFriend04, (uint)EntityID.TurretFriend05, (uint)EntityID.TurretFriend06\n        };\n        private List<uint> m_particles = new List<uint>\n        {\n            (uint)EntityID.Particles_01, (uint)EntityID.ExplosionFuelTank1b, (uint)EntityID.Particles_03, (uint)EntityID.Particles_04, (uint)EntityID.Dust01, (uint)EntityID.Dust02, (uint)EntityID.Dust03, (uint)EntityID.Dust04, (uint)EntityID.Dust05, (uint)EntityID.Dust06, (uint)EntityID.Dust07, (uint)EntityID.Dust08, (uint)EntityID.OtherParticle01, (uint)EntityID.OtherParticle02, (uint)EntityID.OtherParticle03, (uint)EntityID.OtherParticle04, (uint)EntityID.OtherParticle05, (uint)EntityID.OtherParticle06, (uint)EntityID.OtherParticle07, (uint)EntityID.OtherParticle08, (uint)EntityID.OtherParticle09, (uint)EntityID.OtherParticle10, (uint)EntityID.OtherParticle11, (uint)EntityID.OtherParticle12, (uint)EntityID.OtherParticle13, (uint)EntityID.OtherParticle14, (uint)EntityID.OtherParticle15, (uint)EntityID.OtherParticle16\n        };\n        private List<uint> m_beamsBefore = new List<uint>\n        {\n            (uint)EntityID.BeamageBefore01, (uint)EntityID.BeamageBefore02, (uint)EntityID.BeamageBefore03, (uint)EntityID.BeamageBefore04, (uint)EntityID.BeamageBefore05, (uint)EntityID.BeamageBefore06, (uint)EntityID.BeamageBefore07, (uint)EntityID.BeamageBefore08, (uint)EntityID.BeamageBefore09\n        };\n        private List<uint> m_beamsAfter = new List<uint>\n        {\n            (uint)EntityID.BeamageAfter01, (uint)EntityID.BeamageAfter02, (uint)EntityID.BeamageAfter03, (uint)EntityID.BeamageAfter04, (uint)EntityID.BeamageAfter05, (uint)EntityID.BeamageAfter06\n        };\n        private List<uint> m_mothershipCrashStuff = new List<uint>\n        {\n            (uint)EntityID.MothershipCrash01, (uint)EntityID.MothershipCrash02, (uint)EntityID.MothershipCrash03, (uint)EntityID.MothershipCrash04\n        };\n\n        private List<uint> m_barricade = new List<uint>\n        {\n            (uint)EntityID.Barricade1, (uint)EntityID.Barricade2, (uint)EntityID.Barricade3, (uint)EntityID.Barricade4, (uint)EntityID.Barricade5, (uint)EntityID.Barricade6, (uint)EntityID.Barricade7, (uint)EntityID.Barricade8\n        };\n        private List<uint> m_preBarricade = new List<uint>\n        { \n            (uint)EntityID.PreBarricade1, (uint)EntityID.PreBarricade2, (uint)EntityID.PreBarricade3, (uint)EntityID.PreBarricade4, (uint)EntityID.PreBarricade5, (uint)EntityID.PreBarricade6, (uint)EntityID.PreBarricade7, (uint)EntityID.PreBarricade8\n        };\n\n        private List<uint> m_Cargo1 = new List<uint>\n        {\n            (uint)EntityID.CargoToMove01_Dummy, (uint)EntityID.CargoToMove01_1, (uint)EntityID.CargoToMove01_2, (uint)EntityID.CargoToMove01_3, (uint)EntityID.CargoToMove01_4\n        };\n        private List<uint> m_Cargo2 = new List<uint>\n        {\n            (uint)EntityID.CargoToMove02_Dummy, (uint)EntityID.CargoToMove02_1, (uint)EntityID.CargoToMove02_2, (uint)EntityID.CargoToMove02_3, (uint)EntityID.CargoToMove02_4\n        };\n        private List<uint> m_Cargo3 = new List<uint>\n        {\n            (uint)EntityID.CargoToMove03_Dummy, (uint)EntityID.CargoToMove03_1, (uint)EntityID.CargoToMove03_2\n        };\n\n        #endregion\n\n        #region Members\n\n        private static readonly int MAX_ANNOYING_BOTS = 2;\n\n        private Vector3 m_mothershipFinalPosition;\n        private Vector3 m_mothershipPosition01 = new Vector3(530, -2316, -10171); // explode\n        private Vector3 m_mothershipPosition02 = new Vector3(476, -2155, -10294); // beam\n        private Vector3 m_mothershipPosition03 = new Vector3(414, -1966, -10439); // final, crash and explode\n\n        private MySmallShipBot m_sharpshooter;\n        //private MyObjective m_followSubmission;\n        private MyObjective m_hangarLastStand;\n        private MyObjective m_toTheBaseSubmission;\n        private MyObjective m_barricadeSubmission;\n        private MyObjective m_generatorSubmission;\n        private MyObjective m_optionalSaveMinersAccept;\n        private MyObjective m_optionalSaveMiners;\n\n        private MySmallShipBot m_MarcusBot;\n        //private bool m_followMarcusShown;\n        private bool m_flyMS;\n\n        /*\n        private bool m_moveCargo1 = false;\n        private bool m_moveCargo2 = false;\n        private bool m_moveCargo3 = false;\n          */\n\n        private Vector3 m_Cargo1FinalPosition = new Vector3(16, -1437, -10562);\n        private Vector3 m_Cargo2FinalPosition = new Vector3(30, -2265, -10598);\n        private Vector3 m_Cargo3FinalPosition = new Vector3(-1258, -4441, -11050);\n\n        private MyEntity m_MSmove;\n        private bool m_minesShake = true;\n        //private bool m_marcusInShaft = false;\n        //private bool m_playerInShaft = false;\n        //private bool m_beginningSkipped = false;\n        //private bool m_skipIntroUsed = false;\n\n        //private MyEntityDetector m_followDetector;\n\n        private MyTimerActionDelegate m_subShakeAction;\n        private MyTimerActionDelegate m_farExplosionAction;\n        //private MyMissionLocation m_Shaft7;\n\n        private MinerWars.AppCode.Game.HUD.MyHudNotification.MyNotification m_skipIntroductionNotification;\n        //private bool m_skippingIntroduction;\n        //private float m_skippingIntroductionTime;\n\n        MySpawnpointSmartWaves m_spawnPointSmartWaves;\n\n        #endregion\n\n        public MyEACSurveySiteMission()\n        {\n            m_subShakeAction = new MyTimerActionDelegate(SubShake);\n            m_farExplosionAction = new MyTimerActionDelegate(FarExplosion);\n\n            ID = MyMissionID.EAC_SURVEY_SITE; /* ID must be added to MyMissions.cs */\n            DebugName = new StringBuilder(\"01-EAC survey site\");\n            Name = MyTextsWrapperEnum.EAC_SURVEY_SITE;\n            Description = MyTextsWrapperEnum.EAC_SURVEY_SITE_Description;\n            Flags = MyMissionFlags.Story;\n            AchievementName = MySteamAchievementNames.Mission01_EacSS;\n\n            MyMwcVector3Int baseSector = new MyMwcVector3Int(-913818, 0, -790076);\n\n            /* sector where the mission is located */\n            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation);\n            //m_Shaft7 = new MyMissionLocation(baseSector, (uint)EntityID.FollowDetector);\n            RequiredMissions = new MyMissionID[] { };\n            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.EAC_SURVEY_SITE_GOTO_90 };\n            RequiredActors = new MyActorEnum[] { MyActorEnum.MARCUS, MyActorEnum.MADELYN };\n\n            this.OnMissionSuccess += new MissionHandler(MyEACSurveySiteMission_OnMissionSuccess);\n            \n            m_objectives = new List<MyObjective>();\n\n     \n            /*\n            m_followSubmission = new MyObjective(\n                new StringBuilder(\"Follow Marcus to the mines\"),\n                MyMissionID.EAC_SURVEY_SITE_FOLLOWMARCUS_1,\n                new StringBuilder(\"Another boring day...\\n\"),\n                null,\n                this,\n                new MyMissionID[] { },\n                null,\n                successDialogId: MyDialogueEnum.EAC_SURVEY_SITE_0200_ACTIONSTARTS\n            ) { SaveOnSuccess = true };\n            m_followSubmission.OnMissionLoaded += FollowSubmission_OnMissionLoaded;\n            m_followSubmission.OnMissionSuccess += FollowSubmissionSuccess;\n            m_followSubmission.OnMissionUpdate += FollowSubmission_OnMissionUpdate;\n\n            m_objectives.Add(m_followSubmission);\n              */\n            var redHubSubmission = new MyObjective(\n                (MyTextsWrapperEnum.EAC_SURVEY_SITE_GOTO_10_Name),\n                MyMissionID.EAC_SURVEY_SITE_GOTO_10,\n                (MyTextsWrapperEnum.EAC_SURVEY_SITE_GOTO_10_Description),\n                null,\n                this,\n                new MyMissionID[] { },\n                new MyMissionLocation(baseSector, (uint)EntityID.RedHubSubmissionLocation)\n            ) { HudName = MyTextsWrapperEnum.Nothing };\n            redHubSubmission.OnMissionLoaded += RedHubLoaded;\n            m_objectives.Add(redHubSubmission);\n\n                        \n            m_spawnPointSmartWaves = new MySpawnpointSmartWaves(\n                new uint[] \n                {\n                    (uint)EntityID.SpawnPointPipe1,\n                    (uint)EntityID.SpawnPointPipe2,\n                    (uint)EntityID.SpawnPointPipe3,\n                    (uint)EntityID.SpawnPointPipe4,\n                    (uint)EntityID.SpawnPointEnemyStream01,\n                    (uint)EntityID.SpawnPointEnemyStream02,\n                    (uint)EntityID.SpawnPointEnemyStream03,\n                },\n               new uint[] { (uint)EntityID.SpawnPointCrazyRussian }\n               , MAX_ANNOYING_BOTS);\n\n            Components.Add(m_spawnPointSmartWaves);\n\n            m_barricadeSubmission = new MyObjectiveDestroy(\n                (MyTextsWrapperEnum.EAC_SURVEY_SITE_CLEAR_THE_WAY_Name),\n                MyMissionID.EAC_SURVEY_SITE_CLEAR_THE_WAY,\n                (MyTextsWrapperEnum.EAC_SURVEY_SITE_CLEAR_THE_WAY_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.EAC_SURVEY_SITE_GOTO_10 },\n                m_barricade\n            ) { HudName = MyTextsWrapperEnum.Nothing };\n            m_barricadeSubmission.OnMissionLoaded += BarricadeLoaded;\n            m_barricadeSubmission.OnMissionSuccess += BarricadeSuccess;\n            m_objectives.Add(m_barricadeSubmission);\n\n            m_toTheBaseSubmission = new MyObjective(\n                (MyTextsWrapperEnum.EAC_SURVEY_SITE_GOTO_30_Name),\n                MyMissionID.EAC_SURVEY_SITE_GOTO_30,\n                (MyTextsWrapperEnum.EAC_SURVEY_SITE_GOTO_30_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.EAC_SURVEY_SITE_CLEAR_THE_WAY },\n                new MyMissionLocation(baseSector, (uint)EntityID.ToTheBaseSubmissionLocation)\n            ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudMainBase };\n            m_toTheBaseSubmission.OnMissionLoaded += ToTheBaseLoaded;\n            m_objectives.Add(m_toTheBaseSubmission);\n\n\n            var commandCentreSubmission = new MyObjective(\n                (MyTextsWrapperEnum.EAC_SURVEY_SITE_GOTO_40_Name),\n                MyMissionID.EAC_SURVEY_SITE_GOTO_40,\n                (MyTextsWrapperEnum.EAC_SURVEY_SITE_GOTO_40_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.EAC_SURVEY_SITE_GOTO_30 },\n                new MyMissionLocation(baseSector, (uint)EntityID.CommandCentreSubmissionLocation),\n                successDialogId: MyDialogueEnum.EAC_SURVEY_SITE_0550_COMMANDOFFLINE\n            ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudCommandCenter };\n            commandCentreSubmission.OnMissionLoaded += CommandCenterLoaded;// CommandCentreSubmissionSuccess;\n            m_objectives.Add(commandCentreSubmission);\n\n            m_generatorSubmission = new MyObjectiveEnablePrefabs(\n                (MyTextsWrapperEnum.EAC_SURVEY_SITE_GENERATOR_Name),\n               MyMissionID.EAC_SURVEY_SITE_GENERATOR,\n               (MyTextsWrapperEnum.EAC_SURVEY_SITE_GENERATOR_Description),\n               null,\n               this,\n               new MyMissionID[] { MyMissionID.EAC_SURVEY_SITE_GOTO_40 },\n               new MyMissionLocation(baseSector, (uint)EntityID.GaneratorHUB),\n               new List<uint>() { (uint)EntityID.Generator1, (uint)EntityID.Generator2, (uint)EntityID.Generator3, (uint)EntityID.Generator4 },\n               new List<uint>() { (uint)EntityID.Generator1, (uint)EntityID.Generator2, (uint)EntityID.Generator3, (uint)EntityID.Generator4 }\n            ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudHub };\n           // m_generatorSubmission = new MyUseObjective(\n           //    new StringBuilder(\"Start the generator\"),\n           //    MyMissionID.EAC_SURVEY_SITE_GENERATOR,\n           //    new StringBuilder(\"An auxiliary generator is near the workshop.\\n\"),\n           //    null,\n           //    this,\n           //    new MyMissionID[] { MyMissionID.EAC_SURVEY_SITE_GOTO_40 },\n           //    new MyMissionLocation(baseSector, (uint)EntityID.GeneratorSubmissionLocation),\n           //    MyTextsWrapperEnum.PressToStartGenerator,\n           //    MyTextsWrapperEnum.Generator,\n           //    MyTextsWrapperEnum.StartingProgress,\n           //    5000,\n           //    MyUseObjectiveType.Activating\n           //) { SaveOnSuccess = true };\n            m_generatorSubmission.OnMissionLoaded += GeneratorLoaded;// GeneratorSubmissionSuccess;\n            m_generatorSubmission.OnMissionSuccess += GeneratorSuccess;\n            m_objectives.Add(m_generatorSubmission);\n\n\n            var commandCentreAgainSubmission = new MyObjective(\n                (MyTextsWrapperEnum.EAC_SURVEY_SITE_GOTO_60_Name),\n                MyMissionID.EAC_SURVEY_SITE_GOTO_60,\n                (MyTextsWrapperEnum.EAC_SURVEY_SITE_GOTO_60_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.EAC_SURVEY_SITE_GENERATOR },\n                new MyMissionLocation(baseSector, (uint)EntityID.CommandCentreSubmissionLocation),\n                successDialogId: MyDialogueEnum.EAC_SURVEY_SITE_0700_MADELYN\n            ) { HudName = MyTextsWrapperEnum.HudCommandCenter };\n            commandCentreAgainSubmission.OnMissionLoaded += CommandCenterAgainLoaded;// CommandCentreAgainSubmissionSuccess;\n            m_objectives.Add(commandCentreAgainSubmission);\n\n            m_optionalSaveMinersAccept = new MyObjective(\n                (MyTextsWrapperEnum.EAC_SURVEY_SITE_GOTO_65_Name),\n                MyMissionID.EAC_SURVEY_SITE_GOTO_65,\n                (MyTextsWrapperEnum.EAC_SURVEY_SITE_GOTO_65_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.EAC_SURVEY_SITE_GOTO_60 },\n                new MyMissionLocation(baseSector, (uint)EntityID.OptionalSaveMinersAcceptLocation)\n            ) { HudName = MyTextsWrapperEnum.Nothing };\n            m_optionalSaveMinersAccept.OnMissionSuccess += OptionalSaveMinersAcceptSubmissionSuccess;\n            m_optionalSaveMinersAccept.OnMissionLoaded += OptionalSaveMinersAcceptSubmissionLoaded;\n            m_objectives.Add(m_optionalSaveMinersAccept);\n\n            m_optionalSaveMiners = new MyObjective(\n                (MyTextsWrapperEnum.EAC_SURVEY_SITE_SAVEMINERS_Name),\n                MyMissionID.EAC_SURVEY_SITE_SAVEMINERS,\n                (MyTextsWrapperEnum.EAC_SURVEY_SITE_SAVEMINERS_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.EAC_SURVEY_SITE_GOTO_65 },\n                new MyMissionLocation(baseSector, (uint)EntityID.OptionalSaveMinersLocation)\n            ) { HudName = MyTextsWrapperEnum.HudMiners };\n            m_optionalSaveMiners.OnMissionSuccess += OptionalSaveMinersSubmissionSuccess;\n            m_objectives.Add(m_optionalSaveMiners);\n\n\n            var hangarSubmission = new MyObjective(\n                (MyTextsWrapperEnum.EAC_SURVEY_SITE_GOTO_70_Name),\n                MyMissionID.EAC_SURVEY_SITE_GOTO_70,\n                (MyTextsWrapperEnum.EAC_SURVEY_SITE_GOTO_70_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.EAC_SURVEY_SITE_SAVEMINERS },\n                new MyMissionLocation(baseSector, (uint)EntityID.HangarSubmissionLocation)\n            ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudHangar };\n            hangarSubmission.OnMissionLoaded += HangarLoaded; // HangarSubmissionSuccess;\n            m_objectives.Add(hangarSubmission);\n\n\n\n\n\n            m_hangarLastStand = new MyTimedObjective(\n                (MyTextsWrapperEnum.EAC_SURVEY_SITE_SURVIVE_Name),\n                MyMissionID.EAC_SURVEY_SITE_SURVIVE,\n                (MyTextsWrapperEnum.EAC_SURVEY_SITE_SURVIVE_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.EAC_SURVEY_SITE_GOTO_70 },\n                new TimeSpan(0, 3, 0)\n            ) { SaveOnSuccess = true };\n            m_hangarLastStand.OnMissionLoaded += HangarLastStandLoaded;// Survived;\n            m_objectives.Add(m_hangarLastStand);\n\n                           /*\n            var TurretsRightSubmission = new MyObjectiveEnablePrefabs(\n               new StringBuilder(\"Activate the turrets\"),\n               MyMissionID.EAC_SURVEY_SITE_TURRETS_RIGHT,\n               new StringBuilder(\"\"),\n               null,\n               this,\n               new MyMissionID[] { MyMissionID.EAC_SURVEY_SITE_GOTO_70 },\n               new MyMissionLocation(baseSector, (uint)EntityID.Right_Generator),\n               null,\n               new List<uint>() { (uint)EntityID.Right_Generator }\n           ) { ShowAsOptional = true };\n                            \n            TurretsRightSubmission.OnMissionSuccess += TurretsRightSuccess;// TurretsRightSubmissionSuccess;\n            m_objectives.Add(TurretsRightSubmission);\n\n            var TurretsLeftSubmission = new MyObjectiveEnablePrefabs(\n               new StringBuilder(\"Activate the turrets\"),\n               MyMissionID.EAC_SURVEY_SITE_TURRETS_LEFT,\n               new StringBuilder(\"\"),\n               null,\n               this,\n               new MyMissionID[] { MyMissionID.EAC_SURVEY_SITE_GOTO_70 },\n               new MyMissionLocation(baseSector, (uint)EntityID.Left_Generator),\n               null,\n               new List<uint>() { (uint)EntityID.Left_Generator }\n           ) { ShowAsOptional = true };\n            TurretsLeftSubmission.OnMissionSuccess += TurretLeftSuccess;// TurretsLeftSubmissionSuccess;\n            m_objectives.Add(TurretsLeftSubmission);\n                            */\n\n\n            var hangarEscape = new MyObjective(\n                (MyTextsWrapperEnum.EAC_SURVEY_SITE_GOTO_90_Name),\n                MyMissionID.EAC_SURVEY_SITE_GOTO_90,\n                (MyTextsWrapperEnum.EAC_SURVEY_SITE_GOTO_90_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.EAC_SURVEY_SITE_SURVIVE },\n                //new MyMissionLocation(baseSector, (uint)EntityID.HangerEscapeLocation)\n                new MyMissionLocation(baseSector, MyMissionLocation.MADELYN_HANGAR),\n                radiusOverride: MyMissionLocation.MADELYN_HANGAR_RADIUS\n            ) { HudName = MyTextsWrapperEnum.HudMadelynsSapho };\n            hangarEscape.OnMissionLoaded += HangarEscapeLoaded;\n            m_objectives.Add(hangarEscape);\n\n            m_subShakeAction = SubShake;\n            m_farExplosionAction = FarExplosion;\n        }\n\n        void MyEACSurveySiteMission_OnMissionSuccess(MyMissionBase sender)\n        {\n            if (MyClientServer.LoggedPlayer.IsDemoUser())\n            {\n                MyGuiScreenGamePlay.Static.DrawDemoEnd = true;\n            }\n        }\n\n        public override void Accept()\n        {\n            base.Accept();\n            \n            // inventory shuffle\n            // MyScriptWrapper.GetPlayerInventory().ClearInventoryItems();\n            //MyScriptWrapper.GetPlayerInventory().AddInventoryItem(MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_Basic, 1000f, true);\n            //MyScriptWrapper.GetPlayerInventory().AddInventoryItem(MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Missile_Basic, 48, true);\n            \n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.GetEntity((uint)EntityID.Right_Control), false);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.GetEntity((uint)EntityID.Right_Generator), false);\n            //MyScriptWrapper.SetPrefabMode(MyScriptWrapper.GetEntity((uint)EntityID.Right_RightTurret), false);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.GetEntity((uint)EntityID.Right_RightTurretLight), false);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.GetEntity((uint)EntityID.Right_LeftTurret), false);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.GetEntity((uint)EntityID.Right_LeftTurretLight), false);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.GetEntity((uint)EntityID.Right_Light2), false);\n        \n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.GetEntity((uint)EntityID.Left_Control), false);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.GetEntity((uint)EntityID.Left_Generator), false);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.GetEntity((uint)EntityID.Left_RightTurret), false);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.GetEntity((uint)EntityID.Left_RightTurretLight), false);\n            //MyScriptWrapper.SetPrefabMode(MyScriptWrapper.GetEntity((uint)EntityID.Left_LeftTurret), false);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.GetEntity((uint)EntityID.Left_LeftTurretLight), false);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.GetEntity((uint)EntityID.Left_Light2), false);\n\n            HideEnemymotherships();\n\n            if (!MyMinerGame.IsGameReady)\n            {\n                MyGuiScreenGamePlay.Static.OnGameSafelyLoaded += new MyGuiScreenBase.ScreenHandler(Static_OnGameLoaded);\n            }\n            else\n            {\n                Static_OnGameLoaded(null);\n            }\n        }\n\n        void Static_OnGameLoaded(MyGuiScreenBase source)\n        {\n            // Run intro\n            if (MyFakes.ENABLE_INTRO)\n            {\n                MyMwcLog.WriteLine(\"Intro started\");\n                \n                MyGuiScreenGamePlay.Static.HideScreen();\n\n                MyGuiManager.AddScreen(MyGuiScreenIntroVideo.CreateIntroScreen(IntroFinished));\n\n                if (!MyMinerGame.IsPaused())\n                {\n                    MyMinerGame.SwitchPause();\n                }\n            }\n        }\n\n        private void IntroFinished()\n        {\n            MyMwcLog.WriteLine(\"Intro finished\");\n\n            MyGuiScreenGamePlay.Static.UnhideScreen();\n\n            if (MyMinerGame.IsPaused())\n            {\n                MyMinerGame.SwitchPause();\n            }\n        }\n\n        private void HideEnemymotherships()\n        {\n            foreach (MyEntity entity in MyEntities.GetEntities())\n            {\n                MyPrefabContainer motherShip = entity as MyPrefabContainer;\n                if (motherShip != null && MyFactions.GetFactionsRelation(motherShip.Faction, MySession.PlayerShip.Faction) == MyFactionRelationEnum.Enemy)\n                {\n                    MyScriptWrapper.HideEntity(entity, false);\n                }\n            }\n        }\n\n        public override void Load()\n        {\n            if (!IsMainSector) return;\n\n            //m_followMarcusShown = false;\n            m_flyMS = false;\n\n            /*\n            m_moveCargo1 = false;\n            m_moveCargo2 = false;\n            m_moveCargo3 = false;\n              */\n            m_minesShake = !MyScriptWrapper.IsMissionFinished(MyMissionID.EAC_SURVEY_SITE_GOTO_30);\n            //m_marcusInShaft = false;\n            //m_playerInShaft = false;\n            //m_beginningSkipped = false;\n            //m_skipIntroUsed = false;\n\n            m_skipIntroductionNotification = MyScriptWrapper.CreateNotification(MinerWars.AppCode.Game.Localization.MyTextsWrapperEnum.NotificationSkipIntroduction, MyHudConstants.MISSION_FONT);\n            m_skipIntroductionNotification.SetTextFormatArguments(new[] { MyGuiManager.GetInput().GetGameControlTextEnum(MyGameControlEnums.USE) });\n\n            // spawn Marcus\n            //marcus = MyScriptWrapper.CreateFriend(\"Marcus\", 100000);\n            m_MarcusBot = (MySmallShipBot)MyScriptWrapper.GetEntity(\"Marcus\");\n            m_MarcusBot.LeaderLostEnabled = true;\n\n            // When not in base, there was no crash, so hide debris\n            if (!MyScriptWrapper.IsMissionFinished(MyMissionID.EAC_SURVEY_SITE_GOTO_30))\n            {\n                foreach (var prefab in m_mothershipCrashStuff)\n                {\n                    MyScriptWrapper.HideEntity(MyScriptWrapper.TryGetEntity(prefab));\n                }\n            }\n\n            // crashing mothership\n            m_MSmove = MyScriptWrapper.TryGetEntity((uint)EntityID.Mothership);\n            MyScriptWrapper.HideEntity(m_MSmove.Parent);\n            m_mothershipFinalPosition = m_mothershipPosition01;\n\n            //MyScriptWrapper.OnBotReachedWaypoint += OnBotReachedWaypoint;\n            MyScriptWrapper.OnSpawnpointBotSpawned += OnSpawnpointBotSpawned;\n\n            m_flyMS = false;\n\n       \n            // hide beams\n            if (!MyScriptWrapper.IsMissionFinished(MyMissionID.EAC_SURVEY_SITE_GOTO_10))\n            {\n                foreach (var prefab in m_beamsAfter)\n                {\n                    MyScriptWrapper.TryHide(prefab);\n                }\n                // player priority lower\n                //MyScriptWrapper.SetEntityPriority(MySession.PlayerShip, 5);\n                //MyScriptWrapper.SetEntityPriority(m_MarcusBot, -50);\n            }\n                      \n            if (!MyScriptWrapper.IsMissionFinished(MyMissionID.EAC_SURVEY_SITE_SURVIVE))\n            {\n                // hide final mothership\n                MyScriptWrapper.TryHide((uint)MyScriptWrapper.GetEntity(\"Madelyn\").EntityId.Value.NumericValue);\n            }\n\n            //Hide outside mothership and spawnpoint because of confusion\n            //Ticket 8925\n            MyScriptWrapper.TryHide((uint)EntityID.RussianMothership3); //Mothership\n            MyScriptWrapper.TryHide((uint)EntityID.SpawnPointEnemyStream01); //SP1\n            MyScriptWrapper.TryHide((uint)EntityID.SpawnPointEnemyStream02); //SP2\n\n            \n            base.Load(); // base.Load() loads submissions, so it must be after mission load\n        }\n\n        public override void Unload()\n        {\n            base.Unload();\n\n            MyScriptWrapper.OnSpawnpointBotSpawned -= OnSpawnpointBotSpawned;\n\n            //m_followDetector = null;\n            m_MarcusBot = null;\n            m_sharpshooter = null;\n            m_MSmove = null;\n            MyAudio.MusicAllowed = true;\n\n        }\n                        \n       \n        public override void Update()\n        {\n            if (!IsMainSector) return;\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyEacSurveySite::Update\");\n\n            //MyAudio.ApplyTransition(MyMusicTransitionEnum.LightFight, 0, \"KA26\");\n\n            base.Update();\n\n            if (m_flyMS)\n            {\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"FlyMS\");\n                if (MoveMotherShipForward(m_MSmove, 110f, m_mothershipFinalPosition))\n                {\n                    if (m_mothershipFinalPosition == m_mothershipPosition01)\n                    {\n                        m_mothershipFinalPosition = m_mothershipPosition02;\n\n                        MyScriptWrapper.SetParticleEffect(MyScriptWrapper.GetEntity((uint)EntityID.ExplosionCutscene1), true);\n                        MyScriptWrapper.PlaySound3D(MyScriptWrapper.GetEntity((uint)EntityID.ExplosionCutscene1), MySoundCuesEnum.SfxShipLargeExplosion);\n                        MyScriptWrapper.DestroyEntities(new List<uint> { (uint)EntityID.CrashingMothershipFuel });\n                        // destroy fuel\n                        //((MyPrefabLargeWeapon)MyScriptWrapper.TryGetEntity((uint)EntityID.MothershipTurret)).GetGun().Target = MyScriptWrapper.TryGetEntity((uint)EntityID.MothershipTurretTarget);\n                        MissionTimer.RegisterTimerAction(500, CutsceneExplosion01, false);\n                    }\n                    else\n                    {\n                        if (m_mothershipFinalPosition == m_mothershipPosition02)\n                        {\n                            m_mothershipFinalPosition = m_mothershipPosition03;\n\n                            MyScriptWrapper.SetParticleEffect(MyScriptWrapper.GetEntity((uint)EntityID.MothershipParticleEffect), true);\n                            MyScriptWrapper.AddExplosion(MyScriptWrapper.GetEntity((uint)EntityID.MSCrashExplosion1), MyExplosionTypeEnum.MISSILE_EXPLOSION, 50, 0);\n                            MyScriptWrapper.AddExplosion(MyScriptWrapper.GetEntity((uint)EntityID.MSCrashExplosion2), MyExplosionTypeEnum.MISSILE_EXPLOSION, 60, 0);\n                            MyScriptWrapper.AddExplosion(MyScriptWrapper.GetEntity((uint)EntityID.MSCrashExplosion3), MyExplosionTypeEnum.MISSILE_EXPLOSION, 80, 0);\n                            MissionTimer.RegisterTimerAction(1000, MSCrashExplosionNew, false);\n                            MyScriptWrapper.PlaySound3D(MyScriptWrapper.GetEntity((uint)EntityID.MothershipParticleEffect), MySoundCuesEnum.SfxShipLargeExplosion);\n                            MyScriptWrapper.DestroyEntities(new List<uint> { (uint)EntityID.CrashingMothershipComm, (uint)EntityID.CrashingMothershipThruster1, (uint)EntityID.CrashingMothershipThruster2/*, (uint)EntityID.MothershipCrashTurret*/ });\n                            // destroy beam\n                        }\n                        else\n                        {\n                            if (m_mothershipFinalPosition == m_mothershipPosition03)\n                            {\n                                MyScriptWrapper.IncreaseHeadShake(8);\n                                MissionTimer.RegisterTimerAction(350, m_subShakeAction, false);\n                                MissionTimer.RegisterTimerAction(550, m_subShakeAction, false);\n                                MissionTimer.RegisterTimerAction(800, m_subShakeAction, false);\n                                MissionTimer.RegisterTimerAction(1050, m_subShakeAction, false);\n                                MissionTimer.RegisterTimerAction(1400, m_subShakeAction, false);\n                                MissionTimer.RegisterTimerAction(1900, m_subShakeAction, false);\n                                \n                                MyScriptWrapper.SetParticleEffect(MyScriptWrapper.GetEntity((uint)EntityID.MothershipParticleEffect), true);\n                                MyScriptWrapper.PlaySound3D(MyScriptWrapper.GetEntity((uint)EntityID.MothershipParticleEffect), MySoundCuesEnum.SfxShipLargeExplosion);\n\n                                m_flyMS = false;\n                            }\n                        }\n                    }\n                }\n\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n            }\n\n           \n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        void MSCrashExplosionNew()\n        {\n            MyScriptWrapper.AddExplosion(MyScriptWrapper.GetEntity((uint)EntityID.MSCrashExplosion4), MyExplosionTypeEnum.MISSILE_EXPLOSION, 50, 0);\n            MyScriptWrapper.AddExplosion(MyScriptWrapper.GetEntity((uint)EntityID.MSCrashExplosion5), MyExplosionTypeEnum.MISSILE_EXPLOSION, 60, 0);\n            MyScriptWrapper.AddExplosion(MyScriptWrapper.GetEntity((uint)EntityID.MSCrashExplosion6), MyExplosionTypeEnum.MISSILE_EXPLOSION, 80, 0);\n        }\n\n        void CutsceneExplosion01()\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"CutsceneExplosion01\");\n            MyScriptWrapper.DestroyEntities(new List<uint> { (uint)EntityID.CrashingMothershipBatery  });\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        bool MoveMotherShipForward(MyEntity entity, float speed, Vector3 destination)\n        {\n            Vector3 velocity = speed * entity.WorldMatrix.Forward; // Speed in direction\n            MyEntity container = entity.Parent;                    // Get prefab container\n            if (Vector3.DistanceSquared(destination, container.GetPosition()) > 10 * 10)\n            {\n                MyScriptWrapper.Move(container, container.GetPosition() + velocity * MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS);\n                MyEntity smoke = MyScriptWrapper.GetEntity((uint)EntityID.CrashingMothershipSmoke);\n                MyScriptWrapper.Move(smoke, smoke.GetPosition() + velocity * MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS);\n                return false;\n            }\n            return true;\n        }\n                     \n\n        private void SubShake()\n        {\n            MyScriptWrapper.IncreaseHeadShake(MyMwcUtils.GetRandomInt(3, 4));\n        }\n\n        private void FarExplosion()\n        {\n            if (m_minesShake)\n            {\n                // MainShake\n                MyScriptWrapper.IncreaseHeadShake(MyMwcUtils.GetRandomInt(7, 10));\n                MyScriptWrapper.AddAudioImpShipQuake();\n\n                // Register sub shakes\n                MissionTimer.RegisterTimerAction(MyMwcUtils.GetRandomInt(200, 400), m_subShakeAction, false);\n                MissionTimer.RegisterTimerAction(MyMwcUtils.GetRandomInt(600, 800), m_subShakeAction, false);\n                MissionTimer.RegisterTimerAction(MyMwcUtils.GetRandomInt(800, 1200), m_subShakeAction, false);\n                MissionTimer.RegisterTimerAction(MyMwcUtils.GetRandomInt(1200, 1400), m_subShakeAction, false);\n\n                // Register next far explosion\n                MissionTimer.RegisterTimerAction(MyMwcUtils.GetRandomInt(4000, 12000), m_farExplosionAction, false);\n            }\n        }\n\n        void OnSpawnpointBotSpawned(MyEntity spawnpoint, MyEntity bot)\n        {\n            switch ((EntityID)MyScriptWrapper.GetEntityId(spawnpoint))\n            {\n                case EntityID.SpawnPointStart3:\n                    MyScriptWrapper.DamageEntity(bot, 0.7f);\n                    MyScriptWrapper.SetMaxHealth(bot, 0.5f);\n                    MyScriptWrapper.SetEntityPriority(bot, 50);\n                    break;\n                case EntityID.SpawnPointGreen4:\n                    MyScriptWrapper.DamageEntity(bot, 0.4f);\n                    MyScriptWrapper.SetMaxHealth(bot, 0.5f);\n                    MyScriptWrapper.SetEntityPriority(bot, 20);\n                    break;\n                case EntityID.SpawnPointBlue3:\n                    MyScriptWrapper.DamageEntity(bot, 0.6f);\n                    MyScriptWrapper.SetMaxHealth(bot, 0.5f);\n                    MyScriptWrapper.SetEntityPriority(bot, -5);\n                    break;\n                case EntityID.MinersSpawnpoint01:\n                    MyScriptWrapper.SetMaxHealth(bot, 0.5f);\n                    MyScriptWrapper.SetEntityPriority(bot, -5);\n                    break;\n                case EntityID.MinersSpawnpoint02:\n                    MyScriptWrapper.SetMaxHealth(bot, 0.3f);\n                    break;\n                case EntityID.MinersSpawnpoint03:\n                    MyScriptWrapper.SetMaxHealth(bot, 0.3f);\n                    break;\n                case EntityID.MinersSpawnpoint04:\n                    MyScriptWrapper.SetMaxHealth(bot, 0.3f);\n                    break;\n                case EntityID.MinersSpawnpoint05:\n                    MyScriptWrapper.SetMaxHealth(bot, 0.3f);\n                    break;\n              \n                default:\n                    break;\n            }\n        }\n\n        private void LetGoMarcus()\n        {\n            m_MarcusBot.SpeedModifier = 1.0f;\n            \n            //change music mood\n            //MyAudio.ApplyTransition(MyMusicTransitionEnum.Mystery);\n\n            foreach (MyEntity entity in MyEntities.GetEntities())\n            {\n                MyPrefabContainer motherShip = entity as MyPrefabContainer;\n                if (motherShip != null && MyFactions.GetFactionsRelation(motherShip.Faction, MySession.PlayerShip.Faction) == MyFactionRelationEnum.Enemy)\n                {\n                    if (motherShip.EntityId.Value.NumericValue == (uint)EntityID.RussianMothership3)\n                        continue;\n\n                    MyScriptWrapper.UnhideEntity(entity);\n                }\n            }\n        }\n\n        private void RedHubLoaded(MyMissionBase sender)\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"RedHubLoaded\");\n\n\n            MissionTimer.RegisterTimerAction(MyMwcUtils.GetRandomInt(3500, 6000), LetGoMarcus, false);\n\n            m_MarcusBot.SetWorldMatrix(Matrix.CreateWorld(MySession.PlayerShip.GetPosition() - MySession.PlayerShip.GetForward() * MySession.PlayerShip.LocalVolume.Radius * 2,\n                                                MySession.PlayerShip.WorldMatrix.Forward, MySession.PlayerShip.WorldMatrix.Up));\n            m_MarcusBot.Idle();\n            m_MarcusBot.Physics.Clear();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"All lights set\");\n\n            foreach (var light in m_LightsAllOfThem)\n            {\n                if (MyScriptWrapper.TryGetEntity(light) is MyPrefabLight)\n                {\n                    MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.GetEntity(light), false);\n                }\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"Turrets\");\n\n            foreach (var turret in m_turrets)\n            {\n                MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity(turret), false);\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"Alarms\");\n\n            // activate alarm\n            MyScriptWrapper.SetAlarmMode(MyScriptWrapper.TryGetEntity((uint)EntityID.DoorNearControl1).Parent, true);\n\n            // disable vendor\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.VendorHangar), false);\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"Bots\");\n\n            // marcus to follow\n            m_MarcusBot.Follow(MySession.PlayerShip);\n\n            // activate first ambush\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnPointStart1);\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnPointStart2);\n            // minership escaping\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnPointStart3);\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"Detectors\");\n\n            // activate further detectors\n            MyEntityDetector blueDetector = MyScriptWrapper.GetDetector(MyScriptWrapper.GetEntity((uint)EntityID.DetectorBlue));\n            blueDetector.OnEntityEnter += BlueHubReached;\n            blueDetector.On();\n            MyEntityDetector greenDetector = MyScriptWrapper.GetDetector(MyScriptWrapper.GetEntity((uint)EntityID.DetectorGreen));\n            greenDetector.OnEntityEnter += GreenHubReached;\n            greenDetector.On();\n            MyEntityDetector redDetector = MyScriptWrapper.GetDetector(MyScriptWrapper.GetEntity((uint)EntityID.DetectorRed));\n            redDetector.OnEntityEnter += RedHubReached;\n            redDetector.On();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"Music\");\n\n            //change music mood to battle\n            //MyAudio.ApplyTransition(MyMusicTransitionEnum.CalmAtmosphere);\n            MyAudio.MusicAllowed = false; //to forbid action music caused by bot fight\n            MissionTimer.RegisterTimerAction(10000, PlayActionMusic, false);\n\n            // set lights off\n            MyScriptWrapper.SetLight(MyScriptWrapper.TryGetEntity((uint)EntityID.Light1), false);\n            MyScriptWrapper.SetLight(MyScriptWrapper.TryGetEntity((uint)EntityID.Light2), false);\n            MyScriptWrapper.SetLight(MyScriptWrapper.TryGetEntity((uint)EntityID.Light3), false);\n            MyScriptWrapper.SetLight(MyScriptWrapper.TryGetEntity((uint)EntityID.Light4), false);\n\n            // explosions & dialogue\n            MissionTimer.RegisterTimerAction(2000, m_farExplosionAction, true);\n            MissionTimer.RegisterTimerAction(MyMwcUtils.GetRandomInt(3400, 3600), m_subShakeAction, false);\n            MissionTimer.RegisterTimerAction(MyMwcUtils.GetRandomInt(3600, 3800), m_subShakeAction, false);\n            MissionTimer.RegisterTimerAction(MyMwcUtils.GetRandomInt(3800, 4000), m_subShakeAction, false);\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"Next dialogue\");\n\n            MyScriptWrapper.PlayDialogue(Audio.Dialogues.MyDialogueEnum.EAC_SURVEY_SITE_0205_ACTION);\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"Unhide russians\");\n\n            // Unhide russians\n            MyScriptWrapper.UnhideEntity(MyScriptWrapper.TryGetEntity((uint)EntityID.RussianMothership1));\n            MyScriptWrapper.UnhideEntity(MyScriptWrapper.TryGetEntity((uint)EntityID.RussianMothership2));\n           // MyScriptWrapper.UnhideEntity(MyScriptWrapper.TryGetEntity((uint)EntityID.RussianMothership3));\n\n            // unhide crashing mothership\n            MyScriptWrapper.UnhideEntity(m_MSmove.Parent);\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"Hide asteroids\");\n\n            // hide static asteroids\n            MyScriptWrapper.HideEntity(MyScriptWrapper.TryGetEntity((uint)EntityID.Asteroid_Static_01));\n            MyScriptWrapper.HideEntity(MyScriptWrapper.TryGetEntity((uint)EntityID.Asteroid_Static_02));\n            MyScriptWrapper.HideEntity(MyScriptWrapper.TryGetEntity((uint)EntityID.Asteroid_Static_03));\n            MyScriptWrapper.HideEntity(MyScriptWrapper.TryGetEntity((uint)EntityID.Asteroid_Static_04));\n            MyScriptWrapper.HideEntity(MyScriptWrapper.TryGetEntity((uint)EntityID.Asteroid_Static_05));\n            MyScriptWrapper.HideEntity(MyScriptWrapper.TryGetEntity((uint)EntityID.Asteroid_Static_06));\n            MyScriptWrapper.HideEntity(MyScriptWrapper.TryGetEntity((uint)EntityID.Asteroid_Static_07));\n            MyScriptWrapper.HideEntity(MyScriptWrapper.TryGetEntity((uint)EntityID.Asteroid_Static_08));\n            MyScriptWrapper.HideEntity(MyScriptWrapper.TryGetEntity((uint)EntityID.Asteroid_Static_09));\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"Close miners\");\n\n            List<MySpawnPoint.Bot> Miners = MyScriptWrapper.GetSpawnPointBots((uint)EntityID.MinersSpawnpoint02);\n            foreach (var bot in Miners)\n            {\n                if (bot.Ship != null)\n                {\n                    bot.Ship.MarkForClose();\n                }\n            }\n\n            Miners = MyScriptWrapper.GetSpawnPointBots((uint)EntityID.MinersSpawnpoint01);\n            foreach (var bot in Miners)\n            {\n                if (bot.Ship != null)\n                {\n                    bot.Ship.MarkForClose();\n                }\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"Start particles\");\n\n            // start particles\n            foreach (var particle in m_particles)\n            {\n                MyScriptWrapper.SetParticleEffect(MyScriptWrapper.GetEntity(particle), true);\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        private void PlayActionMusic()\n        {\n            MyAudio.MusicAllowed = true;\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.LightFight, 100, \"KA26\");\n        }\n\n        private void BlueHubReached(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"BlueHubLoaded\");\n\n            if (MySession.IsPlayerShip(entity))\n            {\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnPointBlue1);\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnPointBlue2);\n                //MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnPointEnemyStream01);\n                //MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnPointEnemyStream02);\n                MyScriptWrapper.DeactivateSpawnPoint((uint)EntityID.SpawnPointStart1);\n                MyScriptWrapper.DeactivateSpawnPoint((uint)EntityID.SpawnPointStart2);\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnPointBlue3); // miners escaping\n                sender.Off();\n\n                // explosion spawn\n                MyScriptWrapper.AddExplosion(MyScriptWrapper.TryGetEntity((uint)EntityID.ExplosionBlue), MyExplosionTypeEnum.MISSILE_EXPLOSION, 50f, 50f);\n                MissionTimer.RegisterTimerAction(500, ScriptExplosions01_01, false);\n                MissionTimer.RegisterTimerAction(800, ScriptExplosions01_02, false);\n                MissionTimer.RegisterTimerAction(900, ScriptExplosions01_03, false);\n                MissionTimer.RegisterTimerAction(1100, ScriptExplosions01_04, false);\n                \n                // player priority\n                //MyScriptWrapper.SetEntityPriority(MySession.PlayerShip, -25);\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        private void ScriptExplosions01_01()\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"ScriptExplosions01_01\");\n            MyScriptWrapper.AddExplosion(MyScriptWrapper.GetEntity((uint)EntityID.Explosion1), MyExplosionTypeEnum.MISSILE_EXPLOSION, 50f, 50f, true);\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        private void ScriptExplosions01_02()\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"ScriptExplosions01_02\");\n            MyScriptWrapper.IncreaseHeadShake(30);\n            MyScriptWrapper.AddExplosion(MyScriptWrapper.GetEntity((uint)EntityID.Explosion2), MyExplosionTypeEnum.MISSILE_EXPLOSION, 50f, 50f, true);\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        private void ScriptExplosions01_03()\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"ScriptExplosions01_03\");\n            MyScriptWrapper.AddExplosion(MyScriptWrapper.GetEntity((uint)EntityID.Explosion3), MyExplosionTypeEnum.MISSILE_EXPLOSION, 50f, 50f, true);\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        private void ScriptExplosions01_04()\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"ScriptExplosions01_04\");\n            MyScriptWrapper.AddExplosion(MyScriptWrapper.GetEntity((uint)EntityID.Explosion4a), MyExplosionTypeEnum.MISSILE_EXPLOSION, 50f, 50f, true);\n            MyScriptWrapper.AddExplosion(MyScriptWrapper.GetEntity((uint)EntityID.Explosion4b), MyExplosionTypeEnum.MISSILE_EXPLOSION, 50f, 50f, true);\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        private void GreenHubReached(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"GreenHubReached\");\n            if (MySession.IsPlayerShip(entity))\n            {\n                // player priority raise\n                //MyScriptWrapper.SetEntityPriority(MySession.PlayerShip, 5);\n\n                // set priority for marcus\n                //MyScriptWrapper.SetEntityPriority(m_MarcusBot, 3);\n\n                // activate spawns\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnPointGreen1);\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnPointGreen2);\n                // MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnPointGreen3);\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnPointGreen4); // panicking miners\n                // explosion\n                MissionTimer.RegisterTimerAction(4500, FuelTankExplosion01, false);\n                MissionTimer.RegisterTimerAction(5000, FuelTankExplosion02, false);\n                sender.Off();\n            }\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        private void FuelTankExplosion01() \n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"FuelTankExplosion01\");\n            // add beams exploding\n            //MyScriptWrapper.DestroyEntities(new List<uint> { (uint)EntityID.ExplosionFuelTank1a });\n            //MyScriptWrapper.SetParticleEffect(MyScriptWrapper.GetEntity((uint)EntityID.ExplosionFuelTank1b), false);\n            //MyScriptWrapper.SetParticleEffect(MyScriptWrapper.GetEntity((uint)EntityID.ExplosionFuelTank1c), true);\n            MyScriptWrapper.AddExplosion(MyScriptWrapper.GetEntity((uint)EntityID.ExplosionFuelTank1b), MyExplosionTypeEnum.BOMB_EXPLOSION, 1000);\n            MyScriptWrapper.AddExplosion(MyScriptWrapper.GetEntity((uint)EntityID.ExplosionFuelTank1c), MyExplosionTypeEnum.BOMB_EXPLOSION, 1000);\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        private void FuelTankExplosion02()\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"FuelTankExplosion02\");\n            // add beams appeareing\n            //MyScriptWrapper.DestroyEntities(m_beamsBefore);\n            MyScriptWrapper.TryHideEntities(m_beamsBefore, true);\n            MyScriptWrapper.TryUnhideEntities(m_beamsAfter, true);\n\n            MyScriptWrapper.IncreaseHeadShake(30);\n            //MyScriptWrapper.SetParticleEffect(MyScriptWrapper.GetEntity((uint)EntityID.ExplosionFuelTank2), true);\n            //MyScriptWrapper.SetParticleEffect(MyScriptWrapper.GetEntity((uint)EntityID.ExplosionFuelTank1c), true);\n\n            MyScriptWrapper.AddExplosion(MyScriptWrapper.GetEntity((uint)EntityID.ExplosionFuelTank2), MyExplosionTypeEnum.BOMB_EXPLOSION, 1000);\n            MyScriptWrapper.AddExplosion(MyScriptWrapper.GetEntity((uint)EntityID.ExplosionFuelTank1c), MyExplosionTypeEnum.BOMB_EXPLOSION, 1000);\n\n                              /*\n            MyScriptWrapper.AddVoxelHand((uint)EntityID.VoxelMap, (uint)EntityID.VoxelSphere1, 80f, MyMwcVoxelMaterialsEnum.Stone_04);\n            MyScriptWrapper.AddVoxelHand((uint)EntityID.VoxelMap, (uint)EntityID.VoxelSphere2, 98f, MyMwcVoxelMaterialsEnum.Stone_04);\n            MyScriptWrapper.AddVoxelHand((uint)EntityID.VoxelMap, (uint)EntityID.VoxelSphere3, 60f, MyMwcVoxelMaterialsEnum.Stone_04);\n            MyScriptWrapper.AddVoxelHand((uint)EntityID.VoxelMap, (uint)EntityID.VoxelSphere4, 86f, MyMwcVoxelMaterialsEnum.Stone_03);\n                                */\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        private void RedHubReached(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"RedHubReached\");\n            if (MySession.IsPlayerShip(entity))\n            {\n                // stop bots spawning inside mines, some cleanup there would be fine (kill all bots there etc.)\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnPointEnemyStream03);\n                MyScriptWrapper.DeactivateSpawnPoint((uint)EntityID.SpawnPointGreen1);\n                MyScriptWrapper.DeactivateSpawnPoint((uint)EntityID.SpawnPointGreen2);\n                MyScriptWrapper.DeactivateSpawnPoint((uint)EntityID.SpawnPointGreen3);\n                sender.Off();\n\n                //change music mood to calmer\n                //MyAudio.ApplyTransition(MyMusicTransitionEnum.SadnessOrDesperation);\n\n                // explosion\n                //MyScriptWrapper.SetParticleEffect(MyScriptWrapper.GetEntity((uint)EntityID.ExplosionBarricade2), true);\n                MyScriptWrapper.AddExplosion(MyScriptWrapper.GetEntity((uint)EntityID.ExplosionBarricade2), MyExplosionTypeEnum.BOMB_EXPLOSION, 10);\n\n                MissionTimer.RegisterTimerAction(1200, BarricadeExplosion01, false);\n                MissionTimer.RegisterTimerAction(1400, BarricadeExplosion02, false);\n            }\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        private void BarricadeExplosion01()\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"BarricadeExplosion01\");\n\n            MyScriptWrapper.IncreaseHeadShake(20);\n            MyScriptWrapper.AddExplosion(MyScriptWrapper.GetEntity((uint)EntityID.ExplosionBarricade1), MyExplosionTypeEnum.BLASTER_EXPLOSION, 80f, 90f, true);\n            MyScriptWrapper.SetParticleEffect(MyScriptWrapper.GetEntity((uint)EntityID.ExplosionBarricade1), true);\n            MyScriptWrapper.TryUnhideEntities(m_barricade, true);\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        private void BarricadeExplosion02()\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"BarricadeExplosion02\");\n\n            //MyScriptWrapper.SetParticleEffect(MyScriptWrapper.GetEntity((uint)EntityID.ExplosionBarricade2), false);\n            MyScriptWrapper.AddExplosion(MyScriptWrapper.GetEntity((uint)EntityID.ExplosionBarricade2), MyExplosionTypeEnum.BOMB_EXPLOSION, 10);\n\n            // barricade\n            /*\n            MyScriptWrapper.AddVoxelHand((uint)EntityID.VoxelMap, (uint)EntityID.BarricadeVoxels1, 40f, MyMwcVoxelMaterialsEnum.Stone_02);\n            MyScriptWrapper.AddVoxelHand((uint)EntityID.VoxelMap, (uint)EntityID.BarricadeVoxels2, 60f, MyMwcVoxelMaterialsEnum.Stone_04);\n            MyScriptWrapper.AddVoxelHand((uint)EntityID.VoxelMap, (uint)EntityID.BarricadeVoxels3, 30f, MyMwcVoxelMaterialsEnum.Stone_02);\n              */\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        private void BarricadeLoaded(MyMissionBase sender)\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"BarricadeLoaded\");\n\n            // barrier breached without destroying all parts\n            MyEntityDetector barricadeDetector = MyScriptWrapper.GetDetector(MyScriptWrapper.GetEntity((uint)EntityID.DetectorBarricade));\n            barricadeDetector.OnEntityEnter += BarricadeBReached;\n            barricadeDetector.On();\n\n            // play dialogue\n            MyScriptWrapper.PlayDialogue(Audio.Dialogues.MyDialogueEnum.EAC_SURVEY_SITE_0400_BARRICADE);\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        private void BarricadeBReached(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"BarricadeBreached\");\n\n            if (MySession.IsPlayerShip(entity))\n            {\n                if (!MyScriptWrapper.IsMissionFinished(m_barricadeSubmission.ID))\n                {\n                    m_barricadeSubmission.Success();\n                }\n                sender.Off();\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        private void BarricadeSuccess(MyMissionBase sender)\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"BarricadeSuccess\");\n\n            // play dialogue\n            MyScriptWrapper.PlayDialogue(Audio.Dialogues.MyDialogueEnum.EAC_SURVEY_SITE_0500_TOBASE);\n\n            // spawn crazy russian\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnPointCrazyRussian);\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        private void ToTheBaseLoaded(MyMissionBase sender)\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"ToTheBaseLoaded\");\n\n            // activate detector for commentary to cutscene\n            MyEntityDetector pipeDetector = MyScriptWrapper.GetDetector(MyScriptWrapper.GetEntity((uint)EntityID.DetectorPipe));\n            pipeDetector.OnEntityEnter += PipeReached;\n            pipeDetector.On();\n            \n            //change music mood\n            //MyAudio.ApplyTransition(MyMusicTransitionEnum.TensionBeforeAnAction);\n\n            // disable shakes\n            m_minesShake = false;\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        private void PipeReached(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"PipeReached\");\n\n            if (MySession.IsPlayerShip(entity))\n            {\n                //m_moveCargo2 = true;\n                \n                // comment on cutscene\n                MyScriptWrapper.PlayDialogue(Audio.Dialogues.MyDialogueEnum.EAC_SURVEY_SITE_0450_MOTHERSHIPS);\n\n                // activate explosions\n                m_flyMS = true;\n                MyScriptWrapper.SetParticleEffect(MyScriptWrapper.GetEntity((uint)EntityID.CrashingMothershipSmoke), true);\n\n                // start cutscene with russian motherships fighting eac\n                /*\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnPointPipe1);\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnPointPipe2);\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnPointPipe3);\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnPointPipe4);\n                  */\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SharpshooterSpawn);\n\n                // cleanup crazy russian\n                MyScriptWrapper.DeactivateSpawnPoint((uint)EntityID.SpawnPointCrazyRussian);\n\n                //change music mood to epic\n                //MyAudio.ApplyTransition(MyMusicTransitionEnum.SadnessOrDesperation);\n\n                sender.Off();\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        private void CommandCenterLoaded(MyMissionBase sender)\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"CommandCenterLoaded\");\n\n            // stop cutscene\n            \n            MyScriptWrapper.DeactivateSpawnPoint((uint)EntityID.SpawnPointPipe1);\n            MyScriptWrapper.DeactivateSpawnPoint((uint)EntityID.SpawnPointPipe2);\n            MyScriptWrapper.DeactivateSpawnPoint((uint)EntityID.SpawnPointPipe3);\n            MyScriptWrapper.DeactivateSpawnPoint((uint)EntityID.SpawnPointPipe4);\n              \n            // activate bots inside base\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnPointInside);\n             \n            // activate detector for another wave of bots\n            MyEntityDetector routeLivingDetector = MyScriptWrapper.GetDetector(MyScriptWrapper.GetEntity((uint)EntityID.DetectorRouteLiving));\n            routeLivingDetector.OnEntityEnter += RouteLivingReached;\n            routeLivingDetector.On();\n\n            // activate detector for Command center entrace.\n            //MyEntityDetector commandDoorDetector = MyScriptWrapper.GetDetector(MyScriptWrapper.GetEntity((uint)EntityID.DetectorCommandDoor));\n            //commandDoorDetector.OnEntityEnter += commandDoorReached;\n            //commandDoorDetector.On();\n\n            // lock doors around control centre\n            //MyScriptWrapper.SetEntityMode(MyScriptWrapper.TryGetEntity((uint)EntityID.DoorNearControl1), false);\n            //MyScriptWrapper.SetEntityMode(MyScriptWrapper.TryGetEntity((uint)EntityID.DoorNearControl2), false);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.DoorNearControl3), false);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.DoorNearControl4), false);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.DoorNearControl5), false);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.DoorNearControl6), false);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.DoorNearControl7), false);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.DoorNearControl8), false);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.DoorNearControl9), false);\n\n            // lock ore processing and research centers\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.DoorProcessingResearch1), false);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.DoorProcessingResearch2), false);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.DoorProcessingResearch3), false);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.DoorProcessingResearch4), false);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.DoorProcessingResearch5), false);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.DoorProcessingResearch6), false);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.DoorProcessingResearch7), false);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.DoorProcessingResearch8), false);\n            // always locked\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.DoorLocked1), false);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.DoorLocked2), false);\n            // generator room always locked\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.DoorGenerator1), false);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.DoorGenerator2), false);\n\n            //change music mood\n            //MyAudio.ApplyTransition(MyMusicTransitionEnum.Mystery);\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        private void RouteLivingReached(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"CommandCenterLoaded\");\n\n            if (MySession.IsPlayerShip(entity))\n            {\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnPointRouteLiving1);\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnPointRouteLiving2);\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnPointRouteLiving3);\n                \n                // some russian bullshit\n                MyScriptWrapper.PlayDialogue(Audio.Dialogues.MyDialogueEnum.EAC_SURVEY_SITE_1200_RUSSIANCHAT_01);\n                 \n                sender.Off();\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        private void CommandDoorReached(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"CommandCenterLoaded\");\n\n            if (MySession.IsPlayerShip(entity))\n            {\n                MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.DoorNearControl1), true);\n                MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.DoorNearControl2), true);\n                sender.Off();\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n\n        private void GeneratorLoaded(MyMissionBase sender)\n        {\n            // deactivate spawns in living area\n            MyScriptWrapper.DeactivateSpawnPoint((uint)EntityID.SpawnPointInside);\n            MyScriptWrapper.DeactivateSpawnPoint((uint)EntityID.SpawnPointRouteLiving1);\n            MyScriptWrapper.DeactivateSpawnPoint((uint)EntityID.SpawnPointRouteLiving2);\n            MyScriptWrapper.DeactivateSpawnPoint((uint)EntityID.SpawnPointRouteLiving3);\n\n            // activate detectors for ambush and stuff happening inside workshop\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnPointCommandCentre1);\n            MyEntityDetector workshopDetector = MyScriptWrapper.GetDetector(MyScriptWrapper.GetEntity(76666));\n            workshopDetector.OnEntityEnter += WorkshopReached;\n            workshopDetector.On();\n\n            //change music mood\n            //MyAudio.ApplyTransition(MyMusicTransitionEnum.TensionBeforeAnAction);\n        }\n\n        private void GeneratorSuccess(MyMissionBase sender)\n        {\n            if (!MyScriptWrapper.IsEntityDead((uint)EntityID.GeneratorLight))\n            {\n                MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.GeneratorLight), false);\n            }\n\n            // disable vendor\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.VendorHangar), true);\n\n            //activate lights\n            MyScriptWrapper.SetLight(MyScriptWrapper.TryGetEntity((uint)EntityID.Light1), true);\n            MyScriptWrapper.SetLight(MyScriptWrapper.TryGetEntity((uint)EntityID.Light2), true);\n            MyScriptWrapper.SetLight(MyScriptWrapper.TryGetEntity((uint)EntityID.Light3), true);\n            MyScriptWrapper.SetLight(MyScriptWrapper.TryGetEntity((uint)EntityID.Light4), true);\n            MyScriptWrapper.SetLight(MyScriptWrapper.TryGetEntity((uint)EntityID.Light5), false);\n            MyScriptWrapper.SetLight(MyScriptWrapper.TryGetEntity((uint)EntityID.Light6), false);\n\n            foreach (var light in m_LightsAllOfThem)\n            {\n                if ((MyScriptWrapper.TryGetEntity(light) is MyPrefabLight))\n                {\n                    MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity(light), true);\n                    // MyPrefabLight lightprefab = MyScriptWrapper.GetEntity(light) as MyPrefabLight;\n                    // lightprefab.GetLight().Intensity = lightprefab.GetLight().Intensity * 5;\n                }\n            }\n\n            // animate generators\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.Generator1), true);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.Generator2), true);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.Generator3), true);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.Generator4), true);\n\n            // unlock way to command centre\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.DoorNearControl8), true);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.DoorNearControl9), true);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.DoorNearControl7), true);\n\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.DoorNearControl3), true);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.DoorNearControl4), true);\n\n        }\n\n\n        private void WorkshopReached(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (MySession.IsPlayerShip(entity))\n            {\n                MyScriptWrapper.DeactivateSpawnPoint((uint)EntityID.SpawnPointCommandCentre1);\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnPointWorkshop1);\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnPointWorkshop2);\n                sender.Off();\n\n                //change music mood\n                //MyAudio.ApplyTransition(MyMusicTransitionEnum.CalmAtmosphere);\n\n                // some russian bullshit\n                MyScriptWrapper.PlayDialogue(Audio.Dialogues.MyDialogueEnum.EAC_SURVEY_SITE_1400_RUSSIANCHAT_03);\n            }\n        }\n\n        private void CommandCenterAgainLoaded(MyMissionBase sender)\n        {\n            foreach (var turret in m_turrets)\n            {\n                MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity(turret), true);\n            }\n\n            // activate detector for Command center entrace.\n            var storageDetector = MyScriptWrapper.GetDetector(MyScriptWrapper.GetEntity((uint)EntityID.DetectorCommandCentreEntrance));\n            storageDetector.OnEntityEnter += StorageRouteReached;\n            storageDetector.On();\n\n            // activate\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnPointCommandCentre2);\n\n            // deactivate spawns from previous session\n            MyScriptWrapper.DeactivateSpawnPoint((uint)EntityID.SpawnPointWorkshop1);\n            MyScriptWrapper.DeactivateSpawnPoint((uint)EntityID.SpawnPointWorkshop2);\n            \n            // dialogue\n            MyScriptWrapper.PlayDialogue(Audio.Dialogues.MyDialogueEnum.EAC_SURVEY_SITE_0560_GENERATORUP);\n        }\n\n        private void HangarLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.LightFight, 100, \"KA27\");\n        }\n\n        private void HangarRouteReached(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (MySession.IsPlayerShip(entity))\n            {\n                sender.Off();\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnPointHangarRoute);\n\n                // some russian bullshit\n                MyScriptWrapper.PlayDialogue(Audio.Dialogues.MyDialogueEnum.EAC_SURVEY_SITE_1500_RUSSIANCHAT_04);\n            }\n        }\n\n        private void StorageRouteReached(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (MySession.IsPlayerShip(entity))\n            {\n                sender.Off();\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnPointStorageRoute);\n            }\n        }\n\n\n        private List<MySmallShipBot> saveMinersEnemyShips = new List<MySmallShipBot>();\n\n        private void OptionalSaveMinersAcceptSubmissionLoaded(MyMissionBase sender)\n        {\n            MyEntityDetector hangarDetector = MyScriptWrapper.GetDetector(MyScriptWrapper.GetEntity((uint)EntityID.DetectorHangar));\n            hangarDetector.OnEntityEnter += HangarRouteReached;\n            hangarDetector.On();\n\n            // unlock way from command centre\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.DoorNearControl5), true);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.DoorNearControl6), true);\n            // lock way to command centre\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.DoorNearControl8), false);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.DoorNearControl9), false);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.DoorNearControl7), false);\n\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.LightFight, 100, \"KA28\");\n        }\n\n        private void OptionalSaveMinersAcceptSubmissionSuccess(MyMissionBase sender)\n        {\n            // open doors\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.DoorProcessingResearch8), true);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.DoorProcessingResearch7), true);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.DoorProcessingResearch6), true);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.DoorProcessingResearch5), true);\n            // way down\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.DoorProcessingResearch2), true);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.DoorProcessingResearch1), true);\n            // way to miners\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.DoorProcessingResearch3), true);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.DoorProcessingResearch4), true);\n\n            // set off detector in storage but spawn bots there\n            var storageDetector = MyScriptWrapper.GetDetector(MyScriptWrapper.GetEntity((uint)EntityID.DetectorCommandCentreEntrance));\n            storageDetector.Off();\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnPointStorageRoute);\n            \n            // Dialogue\n            MyScriptWrapper.PlayDialogue(Audio.Dialogues.MyDialogueEnum.EAC_SURVEY_SITE_1000_RESEARCHERS_1);\n        }\n\n        private void OptionalSaveMinersSubmissionSuccess(MyMissionBase sender)\n        {\n            // set miners to follow player\n            MySmallShipBot miner01 = MyScriptWrapper.TryGetEntity((uint)EntityID.SavedMiner1) as MySmallShipBot;\n            miner01.Follow(MySession.PlayerShip);\n            MySmallShipBot miner02 = MyScriptWrapper.TryGetEntity((uint)EntityID.SavedMiner2) as MySmallShipBot;\n            miner02.Follow(MySession.PlayerShip);\n            MySmallShipBot miner03 = MyScriptWrapper.TryGetEntity((uint)EntityID.SavedMiner3) as MySmallShipBot;\n            miner03.Follow(MySession.PlayerShip);\n                              \n            // send there bots from storage\n            MyScriptWrapper.GetSmallShipBotsInDummyPoint((uint)EntityID.LoadingBayDummy, saveMinersEnemyShips, MinerWars.AppCode.Game.World.Global.MyFactionRelationEnum.Enemy);\n            foreach (MySmallShipBot enemyShip in saveMinersEnemyShips)\n            {\n                enemyShip.SetWaypointPath(\"BackHangAssault\");\n            }   \n\n            // Dialogue\n            MyScriptWrapper.PlayDialogue(Audio.Dialogues.MyDialogueEnum.EAC_SURVEY_SITE_1100_RESEARCHERS_2);\n        }\n        \n        private void HangarLastStandLoaded(MyMissionBase sender)\n        {\n            // Player entered final hangar for big battle\n\n            // Lock all doors\n            /*\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.DoorHangar1), false);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.DoorHangar2), false);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.DoorHangar3), false);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.DoorHangar4), false);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.DoorHangar5), false);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.DoorHangar6), false);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.DoorHangar7), false);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.DoorHangar8), false);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.DoorHangar9), false);\n            // Lock door you came from\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.DoorHangar10), false);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.DoorHangar11), false);\n              */\n\n            /*\n            m_spawnPointSmartWaves.SpawnIntervalInMS = 7000;\n            m_spawnPointSmartWaves.SpawnInGroups = true;\n            m_spawnPointSmartWaves.MaxBotsCount = 5;\n              */\n            // change music mood\n            //MyAudio.ApplyTransition(MyMusicTransitionEnum.LightFight);\n\n            // set player ship priority to be equal to everything else\n            //MyScriptWrapper.SetEntityPriority(MySession.PlayerShip, 0);\n\n            // Timer\n            MissionTimer.RegisterTimerAction(5000, ActivatePhase1, false);\n            MissionTimer.RegisterTimerAction(10000, ActivatePhase1Explosion, false);\n            MissionTimer.RegisterTimerAction(60000, ActivatePhase2, false);\n            MissionTimer.RegisterTimerAction(68000, ActivatePhase2Explosion, false);\n            MissionTimer.RegisterTimerAction(120000, ActivatePhase3, false);\n            MissionTimer.RegisterTimerAction(130000, ActivatePhase3Explosion, false);\n            MissionTimer.RegisterTimerAction(170000, DangerMark, false);\n            MissionTimer.RegisterTimerAction(179000, hangarBayExplosion01, false);\n            MissionTimer.RegisterTimerAction(179300, hangarBayExplosion02, false);\n            MissionTimer.RegisterTimerAction(179800, hangarBayExplosion03, false);\n            MissionTimer.RegisterTimerAction(40000, ActivateOptionalPhase, false);\n            MissionTimer.RegisterTimerAction(60000, ActivateOptionalPhaseExplosion, false);\n\n            // deactivate storage spawn\n            MyScriptWrapper.DeactivateSpawnPoint((uint)EntityID.SpawnPointStorageRoute);\n\n            // check this\n            //m_optionalSaveMinersAccept.Enabled = false;\n            //m_optionalSaveMiners.Enabled = false;\n\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.Right_Control), true);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.Right_Generator), true);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.Right_RightTurretLight), true);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.Right_Light2), true);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.Left_Control), true);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.Left_Generator), true);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.Left_LeftTurretLight), true);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.Left_Light2), true);\n\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.DesperateWithStress, 100, \"KA02b\");\n        }\n\n        // Last stand timed events\n        private void ActivatePhase1()\n        {\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnPointPhase1);\n            \n            // some russian bullshit\n            MyScriptWrapper.PlayDialogue(Audio.Dialogues.MyDialogueEnum.EAC_SURVEY_SITE_1600_RUSSIANCHAT_05);\n        }\n\n        private void ActivatePhase1Explosion()\n        {\n            //MyScriptWrapper.DestroyEntities(new List<uint> { (uint)EntityID.DoorHangar1, (uint)EntityID.DoorHangar2, (uint)EntityID.DoorHangar3 });\n            //MyScriptWrapper.SetParticleEffect(MyScriptWrapper.GetEntity((uint)EntityID.ExplosionPhase1), true);\n            //MyScriptWrapper.AddExplosion(MyScriptWrapper.GetEntity((uint)EntityID.ExplosionPhase1), MyExplosionTypeEnum.BOMB_EXPLOSION, 15000);\n        }\n\n        private void ActivatePhase2()\n        {\n            // set player ship priority higher than turrets\n            //MyScriptWrapper.SetEntityPriority(MySession.PlayerShip, 50);\n\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnPointPhase2);\n        }\n\n        private void ActivatePhase2Explosion()\n        {\n            //MyScriptWrapper.DestroyEntities(new List<uint> { (uint)EntityID.DoorHangar4, (uint)EntityID.DoorHangar5, (uint)EntityID.DoorHangar6, (uint)EntityID.DoorHangar12 });\n            //MyScriptWrapper.SetParticleEffect(MyScriptWrapper.GetEntity((uint)EntityID.ExplosionPhase2), true);\n            //MyScriptWrapper.AddExplosion(MyScriptWrapper.GetEntity((uint)EntityID.ExplosionPhase2), MyExplosionTypeEnum.BOMB_EXPLOSION, 15000);\n        }\n        \n        private void ActivatePhase3()\n        {\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnPointPhase3);\n        }\n\n        private void ActivatePhase3Explosion()\n        {\n            //MyScriptWrapper.DestroyEntities(new List<uint> { (uint)EntityID.DoorHangar7, (uint)EntityID.DoorHangar8, (uint)EntityID.DoorHangar9 });\n            //MyScriptWrapper.SetParticleEffect(MyScriptWrapper.GetEntity((uint)EntityID.ExplosionPhase3), true);\n            //MyScriptWrapper.AddExplosion(MyScriptWrapper.GetEntity((uint)EntityID.ExplosionPhase3), MyExplosionTypeEnum.BOMB_EXPLOSION, 15000);\n        }\n\n        private void DangerMark()\n        {\n            MyScriptWrapper.MarkEntity(MyScriptWrapper.GetEntity((uint)EntityID.ExplosionHangarBay2), MyTexts.Danger);\n            \n            // unhide final mothership\n            MyScriptWrapper.UnhideEntity(MyScriptWrapper.GetEntity(\"Madelyn\"));\n\n            MyScriptWrapper.PlayDialogue(MyDialogueEnum.EAC_SURVEY_SITE_0750_NEAREND);\n        }\n\n        private void hangarBayExplosion01()\n        {\n            MyScriptWrapper.AddExplosion(MyScriptWrapper.GetEntity((uint)EntityID.ExplosionHangarBay1), MyExplosionTypeEnum.BOMB_EXPLOSION, 15000);\n            MyScriptWrapper.AddExplosion(MyScriptWrapper.GetEntity((uint)EntityID.ExplosionCenterHangarBay1), MyExplosionTypeEnum.BOMB_EXPLOSION, 15000);\n            //MyScriptWrapper.DestroyEntities(new List<uint> { (uint)EntityID.HangarBay1a, (uint)EntityID.HangarBay1b });\n\n            //Update madelyn waypoints\n            RegenerateWaypointGraph();\n        }\n\n        private void hangarBayExplosion02()\n        {\n            MyScriptWrapper.AddExplosion(MyScriptWrapper.GetEntity((uint)EntityID.ExplosionHangarBay2), MyExplosionTypeEnum.BOMB_EXPLOSION, 15000);\n            MyScriptWrapper.AddExplosion(MyScriptWrapper.GetEntity((uint)EntityID.ExplosionCenterHangarBay2), MyExplosionTypeEnum.BOMB_EXPLOSION, 15000);\n            //MyScriptWrapper.DestroyEntities(new List<uint> { (uint)EntityID.HangarBay2a, (uint)EntityID.HangarBay2b });\n        }\n\n        private void hangarBayExplosion03()\n        {\n            MyScriptWrapper.AddExplosion(MyScriptWrapper.GetEntity((uint)EntityID.ExplosionCenterHangarBay3), MyExplosionTypeEnum.BOMB_EXPLOSION, 15000);\n            //MyScriptWrapper.DestroyEntities(new List<uint> { (uint)EntityID.HangarBay3 });\n        }\n\n        private void ActivateOptionalPhase()\n        {\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnPointPhase1);    \n        }\n\n        private void ActivateOptionalPhaseExplosion()\n        {\n            \n            //MyScriptWrapper.DestroyEntities(new List<uint> { (uint)EntityID.DoorHangar10, (uint)EntityID.DoorHangar11 });\n            //MyScriptWrapper.SetParticleEffect(MyScriptWrapper.GetEntity((uint)EntityID.ExplosionOptionalPhase), true);\n            MyScriptWrapper.AddExplosion(MyScriptWrapper.GetEntity((uint)EntityID.ExplosionOptionalPhase), MyExplosionTypeEnum.BOMB_EXPLOSION, 15000);\n        }\n\n        private void RegenerateWaypointGraph()\n        {\n            MyScriptWrapper.RegenerateWaypointGraph();\n        }\n\n        private void HangarEscapeLoaded(MyMissionBase sender)\n        {\n            // Big battle ended, mothership is here, hangar doors are opened (exploded)\n                                  /*\n            m_spawnPointSmartWaves.SpawnIntervalInMS = 0;\n            m_spawnPointSmartWaves.SpawnInGroups = false;\n            m_spawnPointSmartWaves.MaxBotsCount = 4;\n                                    */\n\n            // PetrM - show Madelyn\n            MyScriptWrapper.UnhideEntity(MyScriptWrapper.GetEntity(\"Madelyn\"));\n\n            MissionTimer.RegisterTimerAction(1000, RegenerateWaypointGraph, false);\n\n            \n\n            // In the end some more bots will spawn, towers will go offline and hangar will open with mothership waiting\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnPointSurvived);\n            //change music mood\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.Victory, 100);\n            // deactivate spawnpoints inside base\n            MyScriptWrapper.DeactivateSpawnPoint((uint)EntityID.SpawnPointPhase1);\n            MyScriptWrapper.DeactivateSpawnPoint((uint)EntityID.SpawnPointPhase2);\n            MyScriptWrapper.DeactivateSpawnPoint((uint)EntityID.SpawnPointPhase3);\n\n            MyEntity marker = MyScriptWrapper.TryGetEntity((uint)EntityID.ExplosionHangarBay2);\n            if (marker != null)\n            {\n                MyScriptWrapper.RemoveEntityMark(marker);\n            }\n\n            MyScriptWrapper.PlayDialogue(Audio.Dialogues.MyDialogueEnum.EAC_SURVEY_SITE_0800_PICKUP);\n\n            //sender.Location.Entity = MyScriptWrapper.GetMothershipHangar(MyScriptWrapper.GetEntity(\"Madelyn\"));\n        }\n\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/SinglePlayer/MyEACTransmitterMission.cs",
    "content": "﻿using System.Text;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing System.Collections.Generic;\nusing System.Linq;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Audio;\nusing System.Diagnostics;\nusing MinerWars.AppCode.Game.Prefabs;\nusing MinerWars.AppCode.Game.Entities.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.Missions.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.AppCode.Game.Missions.Components;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.Resources;\nusing System;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Explosions;\nusing MinerWars.AppCode.Game.Audio.Dialogues;\n\n\nnamespace MinerWars.AppCode.Game.Missions.SinglePlayer\n{\n    class MyEACTransmitterMission : MyMission\n    {\n        \n        #region Enums\n        private enum EntityID\n        {\n            StartLocation = 41632,\n            DummyCargoBomb = 41372,\n            DoorCargoBomb = 43436,\n            DummyControlRoom = 41376,\n            HubA = 53255,\n            DoorHubA = 34864,\n            HubB = 53256,\n            DoorHubB1 = 33840,\n            DoorHubB2 = 33702,\n            DoorHubB3 = 33789,\n            DoorHubB4 = 33705,\n            HubC = 53257,\n            DoorHubC1 = 33922,\n            DoorHubC2 = 33895,\n            DoorHubC3 = 33912,\n            DoorHubC4 = 33896,\n\n            DummySatelliteA = 41375,\n\n            AlarmAutodestruct1 = 33656,\n            AlarmAutodestruct2 = 41012,\n            PanelAutodestruct = 43395,\n            TurretAutodescrut1 = 53630,\n            TurretAutodescrut2 = 53633,\n            TurretAutodescrut3 = 53636,\n            TurretAutodescrut4 = 53639,\n\n            DummyAutodestructHack = 54437,\n\n            PrefabAutodestruct1 = 53271,\n            PrefabAutodestruct2 = 53274,\n            PrefabAutodestruct3 = 53259,\n            PrefabAutodestruct4 = 53268,\n\n            SpawnAutodestruct = 53276,\n            DummyNearPrefabAutodestruct3 = 54837,\n            DummyNearPrefabAutodestruct4 = 54836,\n\n            DummySatelliteB = 41374,\n            DummySatelliteC = 41373,\n            DummySatelliteD = 42456,\n\n            HubSolarArm = 53278,\n            DoorSolarArm = 34714,\n\n            CargoRepair = 55,\n            DummyCargoRepair = 54036,\n            DummyGeneratorFix = 53281,\n            GeneratorFix = 53279,\n\n            DummySolarCircuit = 41377,\n\n            DummyReturn = 52594,\n\n            WaypointAutodestruct1 = 42084,\n            WaypointAutodestruct2 = 42079,\n\n            WaypointControlRoom1 = 42388,\n            WaypointControlRoom2 = 42304,\n\n            //detectors and spawnpoints porn\n            DetectorBeforeEnteringCargoWithRavens = 57425,\n            DetectorBeforeEnteringControlRoomFromOutside = 57428,\n            DetectorBeforeEnteringSatelitteA = 57431,\n            DetectorWhenEscapingSatAThruDestroyedPanel = 57433,\n            DetectorBeforeAgregat1 = 57438,\n            DetectorBeforeAgregat2 = 57441,\n            DetectorBeforeAgregat3 = 57444,\n            DetectorBeforeHackingSatelitteBandC = 57447,\n            DetectorBeforeStartingTransmission = 57449,\n            DetectorBeforeOpeningDoorToArm = 57453,\n            DetectorBeforeEnteringCargoThruArm = 57456,\n            DetectorBeforeFixingGenerator = 57458,\n            DetectorBeforeTurnBackOnSolars = 57461,\n\n            SpawnpointAtInnerCargo = 57427,\n            SpawnpointAtOuterControlRoom1 = 57430,\n            SpawnpointAtControlRoom1 = 42707,\n            SpawnpointAtControlRoom2 = 42706,\n            SpawnpointAtSatelitteA = 42978,\n            SpawnpointAtOuterSatelitteA = 57435,\n            SpawnpointAtControlRoom3 = 57436,\n            SpawnpointAtControlRoom4 = 57437,\n            SpawnpointAtAgregat1 = 57440,\n            SpawnpointAtAgregat2 = 57443,\n            SpawnpointAtAgregat3 = 57446,\n            SpawnpointAtSatelitteB = 42977,\n            SpawnpointAtSatelitteC = 42976,\n            SpawnpointAtControlRoom5 = 57451,\n            SpawnpointAtControlRoom6 = 57452,\n            SpawnpointAtArmEntrance = 57455,\n            SpawnpointAtCargoInnerEntrance = 42979,\n            SpawnpointAtGenerator = 57460,\n            SpawnpointAtSolarStarting = 42980,\n            SpawnpointAtControlRoom7 = 57463,\n            SpawnpointAtControlRoom8 = 57464,\n            SpawnpointAtOuterControlRoom2 = 57465,\n\n            ParticleBombExplosion = 58057,\n            PrefabBomb = 58658,\n\n            InnerCargoDoor1 = 34991,\n            InnerCargoDoor2 = 34996,\n\n        }\n\n        public override void ValidateIds()\n        {\n            foreach (var value in Enum.GetValues(typeof(EntityID)))\n            {\n                MyScriptWrapper.GetEntity((uint)((value as EntityID?).Value));\n            }\n        }\n\n        #endregion\n\n        public MyEACTransmitterMission()\n        {\n            ID = MyMissionID.EAC_TRANSMITTER;\n            DebugName = new StringBuilder(\"21-EAC transmitter\");\n            Name = MyTextsWrapperEnum.EAC_TRANSMITTER;\n            Description = MyTextsWrapperEnum.EAC_TRANSMITTER_Description; // \"Set all 3 satellites to your needs.\\n\"\n            Flags = MyMissionFlags.Story;\n\n            MyMwcVector3Int baseSector = new MyMwcVector3Int(3818505, 0, -4273800);\n            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation);\n\n\n\n            RequiredMissions = new MyMissionID[] { MyMissionID.EAC_PRISON };\n            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.EAC_TRANSMITTER_MEETMS };\n            RequiredActors = new MyActorEnum[] { MyActorEnum.MARCUS, MyActorEnum.MADELYN, MyActorEnum.TARJA, MyActorEnum.VALENTIN };\n            \n            m_objectives = new List<MyObjective>();\n\n            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeEnteringCargoWithRavens, 0, (uint)EntityID.SpawnpointAtInnerCargo));\n            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeEnteringCargoWithRavens, 0, (uint)EntityID.SpawnpointAtOuterControlRoom1));\n            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeEnteringControlRoomFromOutside, 0, (uint)EntityID.SpawnpointAtControlRoom1));\n            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeEnteringControlRoomFromOutside, 0, (uint)EntityID.SpawnpointAtControlRoom2));\n            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeEnteringSatelitteA, 0, (uint)EntityID.SpawnpointAtSatelitteA));\n            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorWhenEscapingSatAThruDestroyedPanel, 0, (uint)EntityID.SpawnpointAtOuterSatelitteA));\n            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorWhenEscapingSatAThruDestroyedPanel, 0, (uint)EntityID.SpawnpointAtControlRoom3));\n            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorWhenEscapingSatAThruDestroyedPanel, 0, (uint)EntityID.SpawnpointAtControlRoom4));\n            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeAgregat1, 0, (uint)EntityID.SpawnpointAtAgregat1));\n            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeAgregat2, 0, (uint)EntityID.SpawnpointAtAgregat2));\n            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeAgregat3, 0, (uint)EntityID.SpawnpointAtAgregat3));\n            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeHackingSatelitteBandC, 0, (uint)EntityID.SpawnpointAtSatelitteB));\n            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeHackingSatelitteBandC, 0, (uint)EntityID.SpawnpointAtSatelitteC));\n            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeStartingTransmission, 0, (uint)EntityID.SpawnpointAtControlRoom5));\n            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeStartingTransmission, 0, (uint)EntityID.SpawnpointAtControlRoom6));\n            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeOpeningDoorToArm, 0, (uint)EntityID.SpawnpointAtArmEntrance));\n            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeEnteringCargoThruArm, 0, (uint)EntityID.SpawnpointAtCargoInnerEntrance));\n            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeFixingGenerator, 0, (uint)EntityID.SpawnpointAtGenerator));\n            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeTurnBackOnSolars, 0, (uint)EntityID.SpawnpointAtSolarStarting));\n            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeTurnBackOnSolars, 0, (uint)EntityID.SpawnpointAtControlRoom7));\n            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeTurnBackOnSolars, 0, (uint)EntityID.SpawnpointAtControlRoom8));\n            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeTurnBackOnSolars, 0, (uint)EntityID.SpawnpointAtOuterControlRoom2));\n\n            var openCargoDoor = new MyUseObjective(\n                (MyTextsWrapperEnum.EAC_TRANSMITTER_OPEN_CARGO_DOOR),\n                MyMissionID.EAC_TRANSMITTER_OPEN_CARGO,\n                (MyTextsWrapperEnum.EAC_TRANSMITTER_OPEN_CARGO_DOOR_Description),\n                null,\n                this,\n                new MyMissionID[] { },\n                new MyMissionLocation(baseSector, (uint)EntityID.DummyCargoBomb),\n                MyTextsWrapperEnum.PressToPlaceBomb,\n                MyTextsWrapperEnum.Blank,\n                MyTextsWrapperEnum.PlacingBomb,\n                1000,\n                startDialogId: MyDialogueEnum.EAC_TRANSMITTER_0100\n            ) { SaveOnSuccess = true };\n            m_objectives.Add(openCargoDoor);\n            openCargoDoor.OnMissionLoaded += new MissionHandler(openCargoDoor_OnMissionLoaded);\n            openCargoDoor.OnMissionSuccess += new MissionHandler(openCargoDoor_OnMissionSuccess);\n\n\n            var enterControlRoom = new MyObjective(\n                (MyTextsWrapperEnum.EAC_TRANSMITTER_CENTRAL_ROOM),\n                MyMissionID.EAC_TRANSMITTER_CENTRAL_ROOM,\n                (MyTextsWrapperEnum.EAC_TRANSMITTER_CENTRAL_ROOM_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.EAC_TRANSMITTER_OPEN_CARGO },\n                new MyMissionLocation(baseSector, (uint)EntityID.DummyControlRoom),\n                startDialogId: MyDialogueEnum.EAC_TRANSMITTER_0200\n            ) { HudName = MyTextsWrapperEnum.HudControlRoom,\n               SaveOnSuccess = true };\n            enterControlRoom.OnMissionLoaded += new MissionHandler(enterControlRoom_OnMissionLoaded);\n            enterControlRoom.OnMissionSuccess += new MissionHandler(enterControlRoom_OnMissionSuccess);\n            m_objectives.Add(enterControlRoom);\n\n\n            var unlockWayToSatelliteA = new MyObjectiveEnablePrefabs(\n                (MyTextsWrapperEnum.EAC_TRANSMITTER_UNLOCK_WAY_TO_SATELLITES),\n                MyMissionID.EAC_TRANSMITTER_UNLOCK_WAY_TO_SATELLITE_A,\n                (MyTextsWrapperEnum.EAC_TRANSMITTER_UNLOCK_WAY_TO_SATELLITES_Descrption),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.EAC_TRANSMITTER_CENTRAL_ROOM },\n                null,\n                new List<uint> { (int)EntityID.HubA },\n                new List<uint> { (int)EntityID.DoorHubA }\n            ) { HudName = MyTextsWrapperEnum.HudHub,\n                SaveOnSuccess = true };\n            m_objectives.Add(unlockWayToSatelliteA);\n\n            var unlockWayToSatelliteB = new MyObjectiveEnablePrefabs(\n                (MyTextsWrapperEnum.EAC_TRANSMITTER_UNLOCK_WAY_TO_SATELLITES),\n                MyMissionID.EAC_TRANSMITTER_UNLOCK_WAY_TO_SATELLITE_B,\n                (MyTextsWrapperEnum.EAC_TRANSMITTER_UNLOCK_WAY_TO_SATELLITES_Descrption),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.EAC_TRANSMITTER_UNLOCK_WAY_TO_SATELLITE_A },\n                null,\n                new List<uint> { (int)EntityID.HubB },\n                new List<uint> { (int)EntityID.DoorHubB1, (int)EntityID.DoorHubB2, (int)EntityID.DoorHubB3, (int)EntityID.DoorHubB4}\n            ) { HudName = MyTextsWrapperEnum.HudHub,\n                SaveOnSuccess = true };\n            m_objectives.Add(unlockWayToSatelliteB);\n\n            var unlockWayToSatelliteC = new MyObjectiveEnablePrefabs(\n                (MyTextsWrapperEnum.EAC_TRANSMITTER_UNLOCK_WAY_TO_SATELLITES),\n                MyMissionID.EAC_TRANSMITTER_UNLOCK_WAY_TO_SATELLITE_C,\n                (MyTextsWrapperEnum.EAC_TRANSMITTER_UNLOCK_WAY_TO_SATELLITES_Descrption),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.EAC_TRANSMITTER_UNLOCK_WAY_TO_SATELLITE_B },\n                null,\n                new List<uint> { (int)EntityID.HubC },\n                new List<uint> { (int)EntityID.DoorHubC1, (int)EntityID.DoorHubC2, (int)EntityID.DoorHubC3, (int)EntityID.DoorHubC4}\n            ) { HudName = MyTextsWrapperEnum.HudHub,\n                SaveOnSuccess = true };\n            m_objectives.Add(unlockWayToSatelliteC);\n\n\n            var hackSatelliteA = new MyUseObjective(\n                (MyTextsWrapperEnum.EAC_TRANSMITTER_HACK_SATELLITE_A),\n                MyMissionID.EAC_TRANSMITTER_HACK_SATELLITE_A,\n                (MyTextsWrapperEnum.EAC_TRANSMITTER_HACK_SATELLITE_A_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.EAC_TRANSMITTER_UNLOCK_WAY_TO_SATELLITE_C },\n                new MyMissionLocation(baseSector, (uint)EntityID.DummySatelliteA),\n                MyTextsWrapperEnum.PressToHack,\n                MyTextsWrapperEnum.HackingProgress,\n                MyTextsWrapperEnum.Hacking,\n                2000,\n                startDialogId: MyDialogueEnum.EAC_TRANSMITTER_0300\n            );\n            m_objectives.Add(hackSatelliteA);\n\n\n            var autodestructEscape = new MyObjectiveDestroy(\n                (MyTextsWrapperEnum.EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_ESCAPE),\n                MyMissionID.EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_ESCAPE,\n                (MyTextsWrapperEnum.EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_ESCAPE_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.EAC_TRANSMITTER_HACK_SATELLITE_A },\n                new List<uint> { (uint)EntityID.PanelAutodestruct },\n                startDialogID: MyDialogueEnum.EAC_TRANSMITTER_0400\n            ) { HudName = MyTextsWrapperEnum.HudPanel};\n            autodestructEscape.OnMissionLoaded += new MissionHandler(autodestructEscape_OnMissionLoaded);\n            m_objectives.Add(autodestructEscape);\n\n\n            var autodestructHack = new MyUseObjective(\n                (MyTextsWrapperEnum.EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_HACK),\n                MyMissionID.EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_HACK,\n                (MyTextsWrapperEnum.EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_HACK_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_ESCAPE },\n                new MyMissionLocation(baseSector, (uint)EntityID.DummyAutodestructHack),\n                MyTextsWrapperEnum.PressToHack,\n                MyTextsWrapperEnum.Hacking,\n                MyTextsWrapperEnum.HackingProgress,\n                2000\n            );\n            m_objectives.Add(autodestructHack);\n\n            //Escape by destroying panel upon your head\n            var autodestructDestroy = new MyObjectiveDestroy(\n                (MyTextsWrapperEnum.EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_DESTROY),\n                MyMissionID.EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_DESTROY,\n                (MyTextsWrapperEnum.EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_DESTROY_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_HACK },\n                new List<uint> { (uint)EntityID.PrefabAutodestruct1, (uint)EntityID.PrefabAutodestruct2 },\n                startDialogID: MyDialogueEnum.EAC_TRANSMITTER_0500\n            ) { SaveOnSuccess = true };\n            autodestructDestroy.OnMissionLoaded += new MissionHandler(autodestructDestroy_OnMissionLoaded);\n            autodestructDestroy.OnMissionSuccess += new MissionHandler(autodestructDestroy_OnMissionSuccess);\n            m_objectives.Add(autodestructDestroy);\n\n            var autodestructHelp = new MyObjectiveDestroy(\n                (MyTextsWrapperEnum.EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_HELP),\n                MyMissionID.EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_HELP,\n                (MyTextsWrapperEnum.EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_HELP_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_DESTROY },\n                null,\n                new List<uint> { (uint)EntityID.SpawnAutodestruct },\n                true,\n                true,\n                startDialogID: MyDialogueEnum.EAC_TRANSMITTER_0600,\n                successDialogID: MyDialogueEnum.EAC_TRANSMITTER_0700\n            ) { SaveOnSuccess = true };\n            autodestructHelp.OnMissionSuccess += new MissionHandler(autodestructHelp_OnMissionSuccess);\n            m_objectives.Add(autodestructHelp);\n\n\n            var hackSatelliteB = new MyUseObjective(\n                (MyTextsWrapperEnum.EAC_TRANSMITTER_HACK_SATELLITE_B),\n                MyMissionID.EAC_TRANSMITTER_HACK_SATELLITE_B,\n                (MyTextsWrapperEnum.EAC_TRANSMITTER_HACK_SATELLITE_B_Descrption),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_HELP },\n                new MyMissionLocation(baseSector, (uint)EntityID.DummySatelliteB),\n                MyTextsWrapperEnum.PressToHack,\n                MyTextsWrapperEnum.HackingProgress,\n                MyTextsWrapperEnum.Hacking,\n                2000\n            ) { SaveOnSuccess = true };\n            m_objectives.Add(hackSatelliteB);\n\n\n            var hackSatelliteC = new MyUseObjective(\n                (MyTextsWrapperEnum.EAC_TRANSMITTER_HACK_SATELLITE_C),\n                MyMissionID.EAC_TRANSMITTER_HACK_SATELLITE_C,\n                (MyTextsWrapperEnum.EAC_TRANSMITTER_HACK_SATELLITE_C_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.EAC_TRANSMITTER_HACK_SATELLITE_B },\n                new MyMissionLocation(baseSector, (uint)EntityID.DummySatelliteC),\n                MyTextsWrapperEnum.PressToHack,\n                MyTextsWrapperEnum.HackingProgress,\n                MyTextsWrapperEnum.Hacking,\n                2000,\n                startDialogId: MyDialogueEnum.EAC_TRANSMITTER_0800\n            ) { SaveOnSuccess = true };\n            m_objectives.Add(hackSatelliteC);\n\n            var startTransmittion = new MyUseObjective(\n                (MyTextsWrapperEnum.EAC_TRANSMITTER_START_TRANSMISSION),\n                MyMissionID.EAC_TRANSMITTER_START_TRANSMISSION,\n                (MyTextsWrapperEnum.EAC_TRANSMITTER_START_TRANSMISSION_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.EAC_TRANSMITTER_HACK_SATELLITE_C },\n                new MyMissionLocation(baseSector, (uint)EntityID.DummySatelliteD),\n                MyTextsWrapperEnum.PressToStartTransmission,\n                MyTextsWrapperEnum.StartingTransmission,\n                MyTextsWrapperEnum.Transmission,\n                1000,\n                startDialogId: MyDialogueEnum.EAC_TRANSMITTER_0900\n            );\n            m_objectives.Add(startTransmittion);\n\n            var openSolarArm = new MyObjectiveEnablePrefabs(\n                (MyTextsWrapperEnum.EAC_TRANSMITTER_OPEN_SOLAR_ARM),\n                MyMissionID.EAC_TRANSMITTER_OPEN_SOLAR_ARM,\n                (MyTextsWrapperEnum.EAC_TRANSMITTER_OPEN_SOLAR_ARM_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.EAC_TRANSMITTER_START_TRANSMISSION },\n                null,\n                new List<uint> { (int)EntityID.HubSolarArm },\n                new List<uint> { (int)EntityID.DoorSolarArm },\n                startDialogId: MyDialogueEnum.EAC_TRANSMITTER_1000\n            ) { HudName = MyTextsWrapperEnum.HudHub,\n                SaveOnSuccess = true };\n            openSolarArm.OnMissionLoaded += new MissionHandler(openSolarArm_OnMissionLoaded);\n            m_objectives.Add(openSolarArm);\n\n\n\n            var findRepairKit = new MyUseObjective(\n                  (MyTextsWrapperEnum.EAC_TRANSMITTER_FIND_REPAIR),\n                  MyMissionID.EAC_TRANSMITTER_FIND_REPAIR,\n                  (MyTextsWrapperEnum.EAC_TRANSMITTER_FIND_REPAIR_Description),\n                  null,\n                  this,\n                  new MyMissionID[] { MyMissionID.EAC_TRANSMITTER_OPEN_SOLAR_ARM },\n                  new MyMissionLocation(baseSector, (uint)EntityID.CargoRepair),\n                  MyTextsWrapperEnum.PressToTakeCargo,\n                  MyTextsWrapperEnum.TakeAll,\n                  MyTextsWrapperEnum.TakingInProgress,\n                  2000,\n                  radiusOverride: 50\n              ) { HudName = MyTextsWrapperEnum.HudGeneratorRepairKit,\n                  SaveOnSuccess = true };\n            findRepairKit.OnMissionLoaded += new MissionHandler(findRepairKit_OnMissionLoaded);\n            findRepairKit.OnMissionSuccess += new MissionHandler(findRepairKit_OnMissionSuccess);\n            m_objectives.Add(findRepairKit);\n\n\n            var fixGenerator = new MyUseObjective(\n                  (MyTextsWrapperEnum.EAC_TRANSMITTER_FIX_GENERATOR),\n                  MyMissionID.EAC_TRANSMITTER_FIX_GENERATOR,\n                  (MyTextsWrapperEnum.EAC_TRANSMITTER_FIX_GENERATOR_Descrpition),\n                  null,\n                  this,\n                  new MyMissionID[] { MyMissionID.EAC_TRANSMITTER_FIND_REPAIR },\n                  new MyMissionLocation(baseSector, (uint)EntityID.DummyGeneratorFix),\n                  MyTextsWrapperEnum.PressToStartGenerator,\n                  MyTextsWrapperEnum.StartingProgress,\n                  MyTextsWrapperEnum.StartingProgress,\n                  2000,\n                  startDialogId: MyDialogueEnum.EAC_TRANSMITTER_1100\n              ) { SaveOnSuccess = true };\n            fixGenerator.OnMissionSuccess += new MissionHandler(fixGenerator_OnMissionSuccess);\n            m_objectives.Add(fixGenerator);\n\n            var activateSolarpanels = new MyUseObjective(\n                  (MyTextsWrapperEnum.EAC_TRANSMITTER_ACTIVATE_SOLARPANELS),\n                  MyMissionID.EAC_TRANSMITTER_ACTIVATE_SOLARPANELS,\n                  (MyTextsWrapperEnum.EAC_TRANSMITTER_ACTIVATE_SOLARPANELS_Description),\n                  null,\n                  this,\n                  new MyMissionID[] { MyMissionID.EAC_TRANSMITTER_FIX_GENERATOR },\n                  new MyMissionLocation(baseSector, (uint)EntityID.DummySolarCircuit),\n                  MyTextsWrapperEnum.PressToRedirectEnergy,\n                  MyTextsWrapperEnum.RedirectEnergy,\n                  MyTextsWrapperEnum.RedirectionInProgress,\n                  2000,\n                  startDialogId: MyDialogueEnum.EAC_TRANSMITTER_1200\n              );\n            m_objectives.Add(activateSolarpanels);\n\n            var restartTransmition = new MyUseObjective(\n                  (MyTextsWrapperEnum.EAC_TRANSMITTER_RESTART_TRANSMISSION),\n                  MyMissionID.EAC_TRANSMITTER_RESTART_TRANSMISSION,\n                  (MyTextsWrapperEnum.EAC_TRANSMITTER_RESTART_TRANSMISSION_Description),\n                  null,\n                  this,\n                  new MyMissionID[] { MyMissionID.EAC_TRANSMITTER_ACTIVATE_SOLARPANELS },\n                  new MyMissionLocation(baseSector, (uint)EntityID.DummySatelliteD),\n                  MyTextsWrapperEnum.PressToStartTransmission,\n                  MyTextsWrapperEnum.StartingTransmission,\n                  MyTextsWrapperEnum.Transmission,\n                  2000,\n                  startDialogId: MyDialogueEnum.EAC_TRANSMITTER_1300\n              ) { SaveOnSuccess = true };\n            m_objectives.Add(restartTransmition);\n\n\n            var meetms = new MyObjective(\n                  (MyTextsWrapperEnum.EAC_TRANSMITTER_MEETMS),\n                  MyMissionID.EAC_TRANSMITTER_MEETMS,\n                  (MyTextsWrapperEnum.EAC_TRANSMITTER_MEETMS_Description),\n                  null,\n                  this,\n                  new MyMissionID[] { MyMissionID.EAC_TRANSMITTER_RESTART_TRANSMISSION },\n                  new MyMissionLocation(baseSector, MyMissionLocation.MADELYN_HANGAR),\n                  startDialogId: MyDialogueEnum.EAC_TRANSMITTER_1400,\n                  radiusOverride: MyMissionLocation.MADELYN_HANGAR_RADIUS\n              ) { HudName = MyTextsWrapperEnum.HudMadelynsSapho };\n            m_objectives.Add(meetms);\n\n\n  \n        }\n\n        void openSolarArm_OnMissionLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.SetEntityDestructible(MyScriptWrapper.GetEntity((uint)EntityID.InnerCargoDoor1), true);\n            MyScriptWrapper.SetEntityDestructible(MyScriptWrapper.GetEntity((uint)EntityID.InnerCargoDoor2), true);\n        }\n\n        void enterControlRoom_OnMissionSuccess(MyMissionBase sender)\n        {\n            MyScriptWrapper.SetWaypointListSecrecy(new List<uint> { (uint)EntityID.WaypointControlRoom1, (uint)EntityID.WaypointControlRoom2 }, false);\n        }\n\n        void enterControlRoom_OnMissionLoaded(MyMissionBase sender)\n        {\n            this.MissionTimer.RegisterTimerAction(6000, openCargoDoor_boom, false, MyTexts.ExplosionIn, false);\n            MyScriptWrapper.SetWaypointListSecrecy(new List<uint> { (uint)EntityID.WaypointControlRoom1, (uint)EntityID.WaypointControlRoom2 }, true);\n        }\n\n        void autodestructDestroy_OnMissionSuccess(MyMissionBase sender)\n        {\n            MyScriptWrapper.SetAlarmMode((uint)EntityID.AlarmAutodestruct1, false);\n            MyScriptWrapper.SetAlarmMode((uint)EntityID.AlarmAutodestruct2, false);\n\n            MissionTimer.ClearActions();\n        }\n\n        void autodestructEscape_OnMissionLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.GetEntity((uint)EntityID.DoorHubA), false);\n\n            MyScriptWrapper.SetAlarmMode((uint)EntityID.AlarmAutodestruct1, true);\n            MyScriptWrapper.SetAlarmMode((uint)EntityID.AlarmAutodestruct2, true);\n\n            MyScriptWrapper.TryUnhide((uint)EntityID.TurretAutodescrut1);\n            MyScriptWrapper.TryUnhide((uint)EntityID.TurretAutodescrut2);\n            MyScriptWrapper.TryUnhide((uint)EntityID.TurretAutodescrut3);\n            MyScriptWrapper.TryUnhide((uint)EntityID.TurretAutodescrut4);\n\n            MyScriptWrapper.SetWaypointListSecrecy(new List<uint> { (uint)EntityID.WaypointAutodestruct1, (uint)EntityID.WaypointAutodestruct2 }, true);\n\n            MissionTimer.RegisterTimerAction(TimeSpan.FromMinutes(1), Autodestruct, false, MyTexts.AutodestructIn, false);\n        }\n\n        void Autodestruct()\n        {\n            Fail(MyTextsWrapperEnum.Fail_Autodestruction);\n        }\n\n        void fixGenerator_OnMissionSuccess(MyMissionBase sender)\n        {\n            MyEntity generator = MyScriptWrapper.GetEntity((uint)EntityID.GeneratorFix);\n            MyScriptWrapper.SetEntityEnabled(generator, true);\n        }\n\n        void findRepairKit_OnMissionSuccess(MyMissionBase sender)\n        {\n            MyScriptWrapper.TryHide((uint)EntityID.CargoRepair);\n        }\n\n        void findRepairKit_OnMissionLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.Highlight((uint)EntityID.CargoRepair, true,this);\n            MyScriptWrapper.TryUnhide((uint)EntityID.CargoRepair);\n            MyScriptWrapper.EnablePhysics((uint)EntityID.CargoRepair, false);\n        }\n\n        void autodestructHelp_OnMissionSuccess(MyMissionBase sender)\n        {\n            MySmallShipBot marcus = (MySmallShipBot)MyScriptWrapper.GetEntity(\"Marcus\");\n            MyScriptWrapper.Follow(MySession.PlayerShip, marcus);\n        }\n\n        void MyScriptWrapper_EntityDeath(MyEntity entity1, MyEntity entity2)\n        {\n            if (entity1 == null || !entity1.EntityId.HasValue)\n                return;\n\n            if (entity1.EntityId.Value.NumericValue == (uint)EntityID.PrefabAutodestruct1)\n            {\n                Aggregator1Or2Destroyed();\n            }\n            else if (entity1.EntityId.Value.NumericValue == (uint)EntityID.PrefabAutodestruct2)\n            {\n                Aggregator1Or2Destroyed();\n            }\n            else if (entity1.EntityId.Value.NumericValue == (uint)EntityID.PrefabAutodestruct3)\n            {\n                Aggregator3Destroyed();\n            }\n            else if (entity1.EntityId.Value.NumericValue == (uint)EntityID.PrefabAutodestruct4)\n            {\n                Aggregator4Destroyed();\n            }\n        }\n\n        void autodestructDestroy_OnMissionLoaded(MyMissionBase sender)\n        {\n            MySmallShipBot marcus = (MySmallShipBot)MyScriptWrapper.GetEntity(\"Marcus\");\n            MyEntity destroy3 = MyScriptWrapper.TryGetEntity((uint)EntityID.PrefabAutodestruct3);\n            MyScriptWrapper.StopFollow(marcus);\n\n            if (destroy3 != null)\n            {\n                marcus.Attack(destroy3);\n            }\n        }\n\n        void Aggregator1Or2Destroyed()\n        {\n            MyEntity destroy1 = MyScriptWrapper.TryGetEntity((uint)EntityID.PrefabAutodestruct1);\n            MyEntity destroy2 = MyScriptWrapper.TryGetEntity((uint)EntityID.PrefabAutodestruct2);\n\n            int deadCount = 0;\n            if (destroy1 == null || destroy1.IsDead())\n            {\n                deadCount++;\n            }\n            if (destroy2 == null || destroy2.IsDead())\n            {\n                deadCount++;\n            }\n\n            if (deadCount == 1)\n            {\n                MyScriptWrapper.DestroyEntities(new List<uint> { (uint)EntityID.PrefabAutodestruct3 });\n            }\n            else if (deadCount == 2)\n            {\n                MyScriptWrapper.DestroyEntities(new List<uint> { (uint)EntityID.PrefabAutodestruct4 });\n            }\n        }\n\n        void Aggregator3Destroyed()\n        {\n            MySmallShipBot marcus = (MySmallShipBot)MyScriptWrapper.GetEntity(\"Marcus\");\n            MyEntity destroy4 = MyScriptWrapper.GetEntity((uint)EntityID.PrefabAutodestruct4);\n            marcus.Attack(destroy4);\n        }\n\n        void Aggregator4Destroyed()\n        {\n            MySmallShipBot marcus = (MySmallShipBot)MyScriptWrapper.GetEntity(\"Marcus\");\n            MyScriptWrapper.Move(marcus, MyScriptWrapper.GetEntity((uint)EntityID.DummyNearPrefabAutodestruct4).GetPosition());\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnAutodestruct);\n        }\n\n\n\n        void openCargoDoor_OnMissionLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.EnablePhysics((uint)EntityID.PrefabBomb, false);\n            MyScriptWrapper.Highlight((uint)EntityID.PrefabBomb, true, this);\n        }\n\n        void openCargoDoor_OnMissionSuccess(MyMissionBase sender)\n        {\n            MyScriptWrapper.Highlight((uint)EntityID.PrefabBomb, false, this);\n            MyScriptWrapper.EnablePhysics((uint)EntityID.PrefabBomb, true);\n        }\n\n        private void openCargoDoor_boom()\n        {\n            //door.Health = 0.1f;\n            MyScriptWrapper.AddExplosion(MyScriptWrapper.GetEntity((uint)EntityID.PrefabBomb).GetPosition(), MyExplosionTypeEnum.BOMB_EXPLOSION, 80, 25);\n\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.GetEntity((uint)EntityID.ParticleBombExplosion), true);\n\n            MyScriptWrapper.CloseEntity(MyScriptWrapper.GetEntity((uint)EntityID.PrefabBomb));\n            MyScriptWrapper.CloseEntity(MyScriptWrapper.GetEntity((uint)EntityID.DoorCargoBomb));\n\n            var ravenGirl = (MySmallShipBot)MyScriptWrapper.GetEntity(\"RavenGirl\");\n            var ravenGuy = (MySmallShipBot)MyScriptWrapper.GetEntity(\"RavenGuy\");\n\n            MyScriptWrapper.StopFollow(ravenGirl);\n            MyScriptWrapper.StopFollow(ravenGuy);\n        \n            //ravenGirl.Follow\n        }\n\n\n        public override void Load()\n        {\n            base.Load();\n\n            // Add Fourth Reich FalseId to inventory if player already haven't got one\n            //MyScriptWrapper.AddFalseIdToPlayersInventory(MyMwcObjectBuilder_FactionEnum.FourthReich);\n\n            // Set musicmood right from script start\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.DesperateWithStress);\n\n            // Change player faction to Rainiers and set relations between them\n            MyScriptWrapper.SetPlayerFaction(MyMwcObjectBuilder_FactionEnum.Rainiers);\n            MyScriptWrapper.SetFactionRelation(MyMwcObjectBuilder_FactionEnum.Rainiers, MyMwcObjectBuilder_FactionEnum.Euroamerican, MyFactions.RELATION_WORST);\n            MyScriptWrapper.SetFactionRelation(MyMwcObjectBuilder_FactionEnum.Euroamerican, MyMwcObjectBuilder_FactionEnum.Rainiers, MyFactions.RELATION_WORST);\n            MyScriptWrapper.FixBotNames();\n            \n            MyScriptWrapper.TryHide((uint)EntityID.TurretAutodescrut1);\n            MyScriptWrapper.TryHide((uint)EntityID.TurretAutodescrut2);\n            MyScriptWrapper.TryHide((uint)EntityID.TurretAutodescrut3);\n            MyScriptWrapper.TryHide((uint)EntityID.TurretAutodescrut4);\n\n            MyScriptWrapper.TryHide((uint)EntityID.CargoRepair);\n\n            // Add hacking tool to inventory if player already haven't got one\n            MyScriptWrapper.AddHackingToolToPlayersInventory(2);\n\n\n            MyScriptWrapper.EntityDeath += MyScriptWrapper_EntityDeath;\n        }\n\n\n        public override void Unload()\n        {\n            base.Unload();\n\n            MyScriptWrapper.EntityDeath -= MyScriptWrapper_EntityDeath;\n\n        }\n\n\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/SinglePlayer/MyFactoryAmbushMission.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Entities;\nusing System.Diagnostics;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Entities.WayPoints;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Inventory;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.Game.World.Global;\n\n\nnamespace MinerWars.AppCode.Game.Missions.SinglePlayer\n{\n    class MyFactoryAmbushMission : MyMissionSandboxBase\n    {\n        private enum EntityID // list of IDs used in script\n        {\n            StartLocation = 5245,\n         \n        }\n\n        public override void ValidateIds() // checks if all IDs in enum are loaded correctly\n        {\n            foreach (var value in Enum.GetValues(typeof(EntityID)))\n            {\n                MyScriptWrapper.GetEntity((uint)((value as EntityID?).Value));\n            }\n        }\n\n\n\n        public MyFactoryAmbushMission()\n        {\n            ID = MyMissionID.FACTORY_AMBUSH; /* ID must be added to MyMissions.cs */\n            DebugName = new StringBuilder(\"Factory Ambush\"); // Name of mission\n            Name = MyTextsWrapperEnum.FACTORY_AMBUSH;\n            Description = MyTextsWrapperEnum.FACTORY_AMBUSH_Description;\n            MyMwcVector3Int baseSector = new MyMwcVector3Int(-1120106, 0, -11892620); // Story sector of the script - i.e. (-2465,0,6541)\n            RequiredMissions = new MyMissionID[] { };\n            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation); // Starting dummy point - must by typecasted to uint and referenced from EntityID enum\n            RequiredActors = new MyActorEnum[] { MyActorEnum.MADELYN };\n           \n\n            m_objectives = new List<MyObjective>(); // Creating of list of submissions\n\n\n        }\n\n\n\n\n        public override void Load() // Code in that block will be called on the load of the sector\n        {\n            base.Load();\n            MyAudio.ApplyTransition(MyMusicTransitionEnum.DesperateWithStress, 3); // Sets music group to be played in the sector - no matter if the mission is running or not\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/SinglePlayer/MyFollowHostMission.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.AppCode.Game.Missions.Objectives;\n\nnamespace MinerWars.AppCode.Game.Missions.SinglePlayer\n{\n    class MyFollowHostMission : MyMission\n    {\n        public MyFollowHostObjective MainObjective { get; private set; }\n\n        public MyFollowHostMission()\n        {\n            ID = MyMissionID.COOP_FOLLOW_HOST; /* ID must be added to MyMissions.cs */\n            DebugName = new StringBuilder(\"Coop follow host mission\"); // Nazev mise\n            Flags = MyMissionFlags.Story;\n\n            Location = null;\n\n            RequiredMissions = new MyMissionID[] { }; // mise ktere musi byt splneny pred prijetim teto mise\n            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.COOP_FOLLOW_HOST_OBJECTIVE };\n            RequiredActors = new MyActorEnum[] { };\n\n            m_objectives = new List<MyObjective>(); // Creating of list of submissions\n\n            MainObjective = new MyFollowHostObjective(this);\n            m_objectives.Add(MainObjective);\n\n            SetObjectives(null);\n        }\n\n        public void SetHudName(StringBuilder hudName)\n        {\n            HudNameTemp = hudName;\n            MainObjective.HudNameTemp = hudName;\n        }\n\n        public void SetObjectives(int? missionId/*, List<MyMissionID> optionalObjectives*/)\n        {\n            MyObjective objective = null;\n\n            if (missionId.HasValue && (objective = MyMissions.GetMissionByID((MyMissionID)missionId.Value) as MyObjective) != null)\n            {\n                RequiredActors = objective.ParentMission.RequiredActors;\n                MainObjective.RequiredActors = objective.RequiredActors;\n                InsertRequiredActors();\n                objective.InsertRequiredActors();\n\n                Name = objective.ParentMission.Name;\n                NameTemp = objective.ParentMission.NameTemp;\n                Description = objective.ParentMission.Description;\n                DescriptionTemp = objective.ParentMission.DescriptionTemp;\n            }\n            else\n            {\n                Name = MyTextsWrapperEnum.EmptyDescription;\n                NameTemp = new StringBuilder();\n                Description = MyTextsWrapperEnum.EmptyDescription;\n                DescriptionTemp = new StringBuilder();\n            }\n\n            MainObjective.SetObjectives(objective);\n\n            // Only one objective is active\n            //m_objectives.Clear();\n            //m_objectives.Add(MainObjective);\n\n            //foreach (var objective in optionalObjectives)\n            //{\n            //    var baseObjective = MyMissions.GetMissionByID(objective);\n\n            //    if (baseObjective != null)\n            //    {\n            //        var o = new MyFollowHostObjective(this);\n            //        o.SetObjectives(baseObjective);\n            //        m_objectives.Add(o);\n            //    }\n            //}\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/SinglePlayer/MyForgottenFacilityMission.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Entities;\nusing System.Diagnostics;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Entities.WayPoints;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Inventory;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.Game.World.Global;\n\n\nnamespace MinerWars.AppCode.Game.Missions.SinglePlayer\n{\n    class MyForgottenFacilityMission : MyMissionSandboxBase\n    {\n        private enum EntityID // list of IDs used in script\n        {\n            StartLocation = 263,\n         \n        }\n\n        public override void ValidateIds() // checks if all IDs in enum are loaded correctly\n        {\n            foreach (var value in Enum.GetValues(typeof(EntityID)))\n            {\n                MyScriptWrapper.GetEntity((uint)((value as EntityID?).Value));\n            }\n        }\n\n\n\n        public MyForgottenFacilityMission()\n        {\n            ID = MyMissionID.FORGOTTEN_FACILITY; /* ID must be added to MyMissions.cs */\n            DebugName = new StringBuilder(\"Forgotten Facility\"); // Name of mission\n            Name = MyTextsWrapperEnum.FORGOTTEN_FACILITY;\n            Description = MyTextsWrapperEnum.FORGOTTEN_FACILITY_Description;\n            MyMwcVector3Int baseSector = new MyMwcVector3Int(18474168, 0, 62799965); // Story sector of the script - i.e. (-2465,0,6541)\n            RequiredMissions = new MyMissionID[] { };\n            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation); // Starting dummy point - must by typecasted to uint and referenced from EntityID enum\n            RequiredActors = new MyActorEnum[] { MyActorEnum.MADELYN };\n           \n\n            m_objectives = new List<MyObjective>(); // Creating of list of submissions\n\n\n        }\n\n\n\n\n        public override void Load() // Code in that block will be called on the load of the sector\n        {\n            base.Load();\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.HeavyFight, 3); // Sets music group to be played in the sector - no matter if the mission is running or not\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/SinglePlayer/MyFortValiantMission.cs",
    "content": "﻿using System.Collections.Generic;\nusing System.Text;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Audio.Dialogues;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.Resources;\n\n\nnamespace MinerWars.AppCode.Game.Missions.SinglePlayer\n{\n\n    class MyFortValiantMission : MyFortValiantMissionBase\n    {   \n\n\n        #region fields\n\n\n        private MyObjective m_visitVendor;\n\n        #endregion\n\n\n\n\n        public MyFortValiantMission():base()\n        {\n            ID = MyMissionID.FORT_VALIANT; /* ID must be added to MyMissions.cs */\n            Name = MyTextsWrapperEnum.FORT_VALIANT;\n            Description = MyTextsWrapperEnum.FORT_VALIANT_Description;\n            DebugName = new StringBuilder(\"09a-Fort Valiant A\"); // Name of mission\n            RequiredMissions = new MyMissionID[] { MyMissionID.JUNKYARD_RETURN };\n            RequiredActors = new MyActorEnum[] { MyActorEnum.MADELYN, MyActorEnum.MARCUS, MyActorEnum.TARJA, MyActorEnum.VALENTIN };\n            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.FORT_VALIANT_VISIT_VENDOR };\n\n            #region Objectives\n            m_objectives = new List<MyObjective>(); // Creating of list of submissions\n\n            var flyOne = new MyObjective(\n                (MyTextsWrapperEnum.FORT_VALIANT_FLY_ONE_Name),\n                MyMissionID.FORT_VALIANT_FLY_ONE,\n                (MyTextsWrapperEnum.FORT_VALIANT_FLY_ONE_Description),\n                null,\n                this,\n                new MyMissionID[] {},\n                new MyMissionLocation(baseSector, (uint) EntityID.VendorSpeakDetector1),\n                null,\n                null,\n                MyDialogueEnum.FORT_VALIANT_A_0100\n            ){ SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudFortValiant };\n            m_objectives.Add(flyOne);\n\n\n            var speakGateKeeper = new MyMeetObjective(\n                (MyTextsWrapperEnum.FORT_VALIANT_SPEAK_GATE_KEEPER_Name),\n                MyMissionID.FORT_VALIANT_SPEAK_GATE_KEEPER,\n                (MyTextsWrapperEnum.FORT_VALIANT_SPEAK_GATE_KEEPER_Description),\n                this,\n                new MyMissionID[] {MyMissionID.FORT_VALIANT_FLY_ONE},\n                (uint) EntityID.DetecorGateKeeper,\n                (uint) EntityID.GateKeeper,\n                25,\n                0.25f,\n                \n                MyDialogueEnum.FORT_VALIANT_A_0200,\n                null,\n                false\n            ){SaveOnSuccess =  true, FollowMe = false};\n            m_objectives.Add(speakGateKeeper);\n            \n            \n            var speakCaptain = new MyMeetObjective(\n                (MyTextsWrapperEnum.FORT_VALIANT_MEET_CAPTAIN_Name),\n                MyMissionID.FORT_VALIANT_MEET_CAPTAIN,\n                (MyTextsWrapperEnum.FORT_VALIANT_MEET_CAPTAIN_Description),\n                this,\n                new MyMissionID[] {MyMissionID.FORT_VALIANT_SPEAK_GATE_KEEPER},\n                (uint) EntityID.DetectorCaptain,\n                (uint) EntityID.Captain,\n                50,\n                0.25f,\n                MyDialogueEnum.FORT_VALIANT_A_0300,\n                null,\n                false\n                ){SaveOnSuccess = true, FollowMe = false};\n            speakCaptain.OnMissionLoaded += SpeakCaptainOnOnMissionLoaded;\n            speakCaptain.OnMissionSuccess += SpeakCaptainOnOnMissionSuccess;\n            m_objectives.Add(speakCaptain);\n\n            m_visitVendor = new MyObjectiveEnterInventory(\n                (MyTextsWrapperEnum.FORT_VALIANT_VISIT_VENDOR_Name),\n                MyMissionID.FORT_VALIANT_VISIT_VENDOR,\n                (MyTextsWrapperEnum.FORT_VALIANT_VISIT_VENDOR_Description),\n                null,\n                this,\n                new MyMissionID[] {MyMissionID.FORT_VALIANT_MEET_CAPTAIN},\n                (uint)EntityID.Vendor\n                );\n            m_visitVendor.OnMissionLoaded += MVisitVendorOnOnMissionLoaded;\n            m_objectives.Add(m_visitVendor);\n            #endregion\n        }\n\n\n        private bool m_shootWarningSent = false;\n        void OnEntityDeath(MyEntity entity, MyEntity killedBy)\n        {\n            if (killedBy == MySession.PlayerShip && !m_shootWarningSent)\n            {\n                m_shootWarningSent = true;\n                MyScriptWrapper.AddNotification(MyScriptWrapper.CreateNotification(MyTextsWrapperEnum.DontShoot, MyHudConstants.ENEMY_FONT, 10000));\n                return;\n            }\n\n            if (killedBy == MySession.PlayerShip && !MyScriptWrapper.IsMissionFinished(MyMissionID.TWIN_TOWERS_ASSAULT))\n            {\n                Fail(MyTextsWrapperEnum.DontShoot);\n            }\n        }\n\n\n        private void MVisitVendorOnOnMissionLoaded(MyMissionBase sender)\n        {\n            m_captain.SetWaypointPath(\"Captain\");\n            m_captain.PatrolMode = MyPatrolMode.CYCLE;\n            m_captain.SpeedModifier = 0.25f;\n            m_captain.Patrol();\n        }\n\n        private void SpeakCaptainOnOnMissionLoaded(MyMissionBase sender)\n        {\n            m_gateKeeper.SetWaypointPath(\"GateKeep\");\n            m_gateKeeper.PatrolMode = MyPatrolMode.CYCLE;\n            m_gateKeeper.SpeedModifier = 0.25f;\n            m_gateKeeper.Patrol();\n        }\n\n\n        private void SpeakCaptainOnOnMissionSuccess(MyMissionBase sender)\n        {\n            MyScriptWrapper.AddNotification(MyScriptWrapper.CreateNotification(MyTextsWrapperEnum.NewMissionRecieved, MyHudConstants.FRIEND_FONT, 10000));\n        }\n\n\n        public override void Load()\n        {\n            MyScriptWrapper.EntityDeath += OnEntityDeath;\n            base.Load();\n        }\n\n        public override void Unload()\n        {\n            MyScriptWrapper.EntityDeath -= OnEntityDeath;\n            base.Unload();\n        }\n\n    }\n\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/SinglePlayer/MyFortValiantMissionB.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Missions.Objectives;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Entities;\nusing System.Diagnostics;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Entities.WayPoints;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Audio.Dialogues;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.Entities.Prefabs;\nusing MinerWars.AppCode.Game.HUD;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Missions.Submissions;\nusing MinerWars.Resources;\n\nnamespace MinerWars.AppCode.Game.Missions.SinglePlayer\n{\n    class MyFortValiantMissionB : MyFortValiantMissionBase\n    {\n\n\n        #region fields\n\n\n\n\n\n        private MyObjective m_visitVendor;\n\n        private MyEntity m_madelynDummy;\n        private MyEntity m_madelyn;\n        #endregion\n\n        public override void Load()\n        {\n            base.Load();\n            m_madelynDummy = MyScriptWrapper.GetEntity((uint) EntityID.MadelynDummy);\n            m_madelyn = MyScriptWrapper.GetEntity(\"Madelyn\");\n            m_shootWarningSent = false;\n            MyScriptWrapper.EntityDeath += OnEntityDeath;\n        }\n\n\n\n        public MyFortValiantMissionB()\n            : base()\n        {\n            ID = MyMissionID.FORT_VALIANT_B; /* ID must be added to MyMissions.cs */\n            DebugName = new StringBuilder(\"09c-Fort Valiant B\"); // Name of mission\n            Name = MyTextsWrapperEnum.FORT_VALIANT_B;\n            Description = MyTextsWrapperEnum.FORT_VALIANT_B_Description;\n            RequiredActors = new MyActorEnum[] { MyActorEnum.MADELYN, MyActorEnum.MARCUS, MyActorEnum.TARJA, MyActorEnum.VALENTIN };\n            RequiredMissions = new MyMissionID[] { MyMissionID.SLAVER_BASE_1 };\n            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.FORT_VALIANT_B_VISIT_VENDOR };\n            m_objectives = new List<MyObjective>(); // Creating of list of submissions\n\n            \n            var flyOne = new MyObjective(\n                (MyTextsWrapperEnum.FORT_VALIANT_B_FLY_ONE_Name),\n                MyMissionID.FORT_VALIANT_B_FLY_ONE,\n                (MyTextsWrapperEnum.FORT_VALIANT_B_FLY_ONE_Description),\n                null,\n                this,\n                new MyMissionID[] { },\n                new MyMissionLocation(baseSector, (uint)EntityID.DetecorGateKeeper),\n                null,\n                null,\n                MyDialogueEnum.FORT_VALIANT_B_0100) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudFortValiant };\n            m_objectives.Add(flyOne);\n\n            /*\n            var speakGateKeeper = new MyMeetObjective(\n                new StringBuilder(\"Reach the gate of Fort Valiant\"),\n                MyMissionID.FORT_VALIANT_B_SPEAK_GATE_KEEPER,\n                new StringBuilder(\"\"),\n                this,\n                new MyMissionID[] { MyMissionID.FORT_VALIANT_FLY_ONE },\n                (uint)EntityID.DetecorGateKeeper,\n                (uint)EntityID.GateKeeper,\n                25,\n                0.25f,\n                dialog3,\n                dialog2\n                ) { SaveOnSuccess = true };\n            m_objectives.Add(speakGateKeeper);\n\n            */\n\n            var speakCaptain = new MyMeetObjective(\n                (MyTextsWrapperEnum.FORT_VALIANT_B_MEET_CAPTAIN_Name),\n                MyMissionID.FORT_VALIANT_B_MEET_CAPTAIN,\n                (MyTextsWrapperEnum.FORT_VALIANT_B_MEET_CAPTAIN_Description),\n                this,\n                new MyMissionID[] { MyMissionID.FORT_VALIANT_B_FLY_ONE },\n                (uint)EntityID.DetectorCaptain,\n                (uint)EntityID.Captain,\n                50,\n                0.25f,\n                MyDialogueEnum.FORT_VALIANT_B_0200,\n                null,\n                false\n                ) { SaveOnSuccess = true, FollowMe = false};\n            m_objectives.Add(speakCaptain);\n            speakCaptain.OnMissionSuccess += SpeakCaptainOnOnMissionSuccess;\n\n            m_visitVendor = new MyObjectiveEnterInventory(\n               (MyTextsWrapperEnum.FORT_VALIANT_B_VISIT_VENDOR_Name),\n               MyMissionID.FORT_VALIANT_B_VISIT_VENDOR,\n               (MyTextsWrapperEnum.FORT_VALIANT_B_VISIT_VENDOR_Description),\n               null,\n               this,\n               new MyMissionID[] { MyMissionID.FORT_VALIANT_B_MEET_CAPTAIN },\n               (uint)EntityID.VendorB,\n               null,\n               null\n               );\n            m_objectives.Add(m_visitVendor);\n            m_visitVendor.OnMissionLoaded += MVisitVendorOnOnMissionLoaded; \n                         /*\n            var flyToMadelyn = new MyObjective(\n                   new StringBuilder(\"Meet your mothership close to the Templar cargo bay\"),\n                   MyMissionID.FORT_VALIANT_B_FLY_BACK_MADELYN,\n                   new StringBuilder(\"\"),\n                   null,\n                   this,\n                   new MyMissionID[] { MyMissionID.FORT_VALIANT_B_VISIT_VENDOR },\n                   new MyMissionLocation(baseSector, MyMissionLocation.MADELYN_HANGAR)\n             );\n            m_objectives.Add(flyToMadelyn);\n                           */\n\n\n        }\n\n\n\n\n        private bool m_shootWarningSent = false;\n        void OnEntityDeath(MyEntity entity, MyEntity killedBy)\n        {\n\n\n            if (killedBy == MySession.PlayerShip && !m_shootWarningSent)\n            {\n                m_shootWarningSent = true;\n                MyScriptWrapper.AddNotification(MyScriptWrapper.CreateNotification(MyTextsWrapperEnum.DontShoot, MyHudConstants.ENEMY_FONT, 10000));\n                return;\n            }\n\n            if (killedBy == MySession.PlayerShip && !MyScriptWrapper.IsMissionFinished(MyMissionID.TWIN_TOWERS_ASSAULT))\n            {\n                if (true) // which things\n                {\n                    Fail(MyTextsWrapperEnum.DontShoot);\n                }\n            }\n        }\n\n        private void MVisitVendorOnOnMissionLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.AddMoney(10000);\n\n            m_captain.SetWaypointPath(\"Captain\");\n            m_captain.PatrolMode = MyPatrolMode.CYCLE;\n            m_captain.SpeedModifier = 0.25f;\n            m_captain.Patrol();\n        }\n\n        private void SpeakCaptainOnOnMissionSuccess(MyMissionBase sender)\n        {\n            MyScriptWrapper.AddNotification(MyScriptWrapper.CreateNotification(MyTextsWrapperEnum.NewMissionRecieved, MyHudConstants.FRIEND_FONT, 10000));\n            var position = m_madelynDummy.GetPosition();\n            var rotation = m_madelynDummy.GetOrientation();\n            m_madelyn.MoveAndRotate(position, rotation);\n\n            //m_madelyn.SetWorldMatrix(m_madelynDummy.GetWorldMatrixForDraw());\n            MyScriptWrapper.UnhideEntity(MyScriptWrapper.GetEntity((uint) EntityID.PrefabContainer));\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.GetEntity((uint)EntityID.Scanner1),false);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.GetEntity((uint)EntityID.Scanner2), false);\n        }\n\n        public override void Unload()\n        {   \n            base.Unload();\n            MyScriptWrapper.EntityDeath -= OnEntityDeath;\n            \n            m_madelynDummy = null;\n            m_madelyn = null;\n            \n            //MyScriptWrapper.RunGlobalEvent(World.Global.MyGlobalEventEnum.SunWind);\n            //MyScriptWrapper.RunGlobalEvent(World.Global.MyGlobalEventEnum.MeteorWind);\n            //MyScriptWrapper.RunGlobalEvent(World.Global.MyGlobalEventEnum.IceStorm);\n        }\n\n    }\n\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/SinglePlayer/MyFortValiantMissionBase.cs",
    "content": "using System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Text;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.AppCode.Game.Audio.Dialogues;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Prefabs;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.CommonLIB.AppCode.Utils;\n\nnamespace MinerWars.AppCode.Game.Missions.SinglePlayer\n{\n    internal class MyDeadlyScanners : MyMissionComponent\n    {\n        private List<uint> m_scannersIds;\n        private List<MyPrefabScanner> m_scanners;\n\n        private List<int> m_scannersStartTimes;\n        private List<int> m_scannersUpdateTimes;\n\n        private bool m_isFirstUpdate;\n        public MyDeadlyScanners(\n                            List<uint> scanners,\n                            List<int> scannersUpdateTimes)\n        {\n            m_scannersIds = new List<uint>();\n            m_scannersIds.AddRange(scanners);\n            m_scannersUpdateTimes = scannersUpdateTimes;\n            Debug.Assert(scanners.Count == scannersUpdateTimes.Count, \"Bad parameters of constructor\");\n        }\n\n        public override void Load(MyMissionBase sender)\n        {\n           \n            m_scanners = new List<MyPrefabScanner>();\n            m_isFirstUpdate = true;\n            m_scannersStartTimes = new List<int>();\n            foreach (var mScannersId in m_scannersIds)\n            {\n                var scanner = MyScriptWrapper.GetEntity(mScannersId) as MyPrefabScanner;\n                scanner.OnEntityScanned += ScannerOnOnEntityScanned;\n                m_scanners.Add(scanner);\n                m_scannersStartTimes.Add(0);\n            }\n\n            \n        }\n\n        private void ScannerOnOnEntityScanned(MyPrefabScanner sender, MyEntity scannedEntity)\n        {\n            if (scannedEntity == MySession.PlayerShip && m_scanners.Contains(sender))\n            {\n                scannedEntity.DoDamage(0, 1000000, 0, MyDamageType.Unknown, MyAmmoType.Unknown, null);\n                ((MyPrefabContainer) sender.Parent).AlarmOn = true;\n            }\n        }\n\n        public override void Update(MyMissionBase sender)\n        {\n            if (m_isFirstUpdate)\n            {\n                for (int i = 0; i < m_scannersStartTimes.Count; i++)\n                {\n                    m_scannersStartTimes[i] = sender.MissionTimer.ElapsedTime + MyMwcUtils.GetRandomInt(0, 3)*1000;\n                }\n                m_isFirstUpdate = false;\n            }\n            else\n            {\n                var index =0;\n                foreach (MyEntity scanner in m_scanners)\n                {\n                    if (m_scannersStartTimes[index] < sender.MissionTimer.ElapsedTime)\n                    {\n                        scanner.Enabled = !scanner.Enabled;\n                        m_scannersStartTimes[index] = sender.MissionTimer.ElapsedTime + m_scannersUpdateTimes[index];\n                    }\n                    index++;\n                }\n            }\n\n        }\n\n        public override void Unload(MyMissionBase sender)\n        {\n            foreach (var scanner in m_scanners)\n            {\n                scanner.OnEntityScanned -= ScannerOnOnEntityScanned;\n            }\n\n            m_scanners.Clear();\n            //m_scannersStartTimes.Clear();\n        }\n    }\n\n    internal abstract class MyFortValiantMissionBase : MyMission\n    {\n        protected MySmallShipBot m_captain;\n        protected MySmallShipBot m_gateKeeper;\n        private List<uint> SpawnPoints1 = new List<uint>(){17157, 17155, 94434, 17146, 17150, 17132 };\n        private List<uint> SpawnPoints2 = new List<uint>() { 17150, 17132, 17149, 17147, 17152, 23874 };\n        private List<uint> SpawnPoints3 = new List<uint>() { 90075, 15948 };\n        private List<uint> SpawnPoints4 = new List<uint>() { 17153, 17154 };\n        private List<uint> SpawnPoints5 = new List<uint>() { 93699, 17148 };\n\n        protected enum EntityID // list of IDs used in script\n        {\n            StartLocation = 80570,\n            VendorSpeakDetector1 = 164699,\n            DetecorGateKeeper = 143240, \n            DetectorCaptain = 143242,\n            Vendor = 174831, \n            VendorSpeakDetector = 80571 ,\n            //MeetTemplarRepresentatives = 87795,\n            //ReturnBackToMadelyn = 97026,\n            //FindVentEntrance = 87868,\n            //GetToElevatorShaft = 87881,\n            //GetToCaveEntrance = 88117,\n            Box1Marker = 88105,\n            Box2Marker = 88103,\n            Box3Marker = 88106,\n            Box4Marker = 88108,\n            ArtifactDummy = 88121,\n            PrefabArtifact = 170398,           \n            //SpawnPointToJoin = 17157,           \n            MadelynLocation = 97959,\n            //ActivateSlaveMission = 100640,\n\n            Captain = 143227,\n            GateKeeper  = 143214,\n            //Alarm = 153297,\n            //Alarm2 = 148633,\n            //Alarm3 = 153310,\n            Detector1 = 153685,\n            Detector2 = 153673,\n            Detector3 = 153669,\n            Detector4 = 153671,\n            Detector5 = 16777667,\n            MadelynDummy = 143755,\n            PrefabContainer = 143744,\n            Scanner1 = 152953,\n            Scanner2 = 165559,\n            VendorB = 174833,\n            MadelyDummyB = 143759,\n\n            StartLocationC = 16777666,\n            BotRoyal = 144286 ,\n            BotTemplar = 87796,\n            Generator1 = 152943,\n            CaptainDummy = 144265,\n            UpperFloorDummy = 144267,\n            RoyalDummy = 144268,\n            RoyalCargoBoxDetector = 144270,\n            OfficalsDetector = 87795,\n            OfficalsleaveDetector = 144308,\n            FollowPathDetector = 144309,\n            SirBendivereDummy = 144334 ,\n            CargoBox = 87444,\n            Ventilation = 87868,\n            SpawnAlarm1 = 142111, \n            SpawnAlarm2 = 142109,\n            DisableScanner = 172860,\n            DisableScanner2Hub = 170056,\n            ScannersLocation1 = 153677,\n            //ScannersTalkDummy = 153678,\n            //ScannersEndGameDummy = 153322,\n            ScannersLocation2 = 88082,\n            //DisableScanner2Detector = 153324,\n            DisableScannerHub = 170058,\n            ElevatorDummy = 144338,\n            EscapeVentSystemDummy = 144340,\n            EscapeCatacombsDummy = 144341,\n            //CargoBoxWayBack = 144270,\n            DisableSnanners2 = 172862,\n            DialogDummy2 = 144336 ,\n            ScannersLocation23 = 88117,\n            HigherFloors = 172502,\n            FakeCargo = 173576,\n\n\n            DontuseHarvestor1 =  173927,\n            //DontuseHarvestor2 = 153669,\n\n            DetectorGuardsDialogue = 1,\n            DetectorSensorsDialogue = 3,\n            DetectorSecurityFields = 11,\n            DetectorOpenDoors = 13,\n            DetectorComputer = 15,\n            CameraLookThroughID = 142450,\n            GetItemsWayBackDialogue = 18,\n            \n        }\n\n        protected MyMwcVector3Int baseSector;\n        private List<MyEntity> m_entities = new List<MyEntity>();\n        private bool m_harvesterWarningSend;\n\n        public MyFortValiantMissionBase()\n        {\n            Flags = MyMissionFlags.Story;\n            baseSector = new MyMwcVector3Int(-588410, 0, -3425542); // Story sector of the script - i.e. (-2465,0,6541)\n\n            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation); // Starting dummy point - must by typecasted to uint and referenced from EntityID enum\n\n            RequiredMissions = new MyMissionID[] { MyMissionID.JUNKYARD_RETURN }; // IDs of missions required to make this mission available\n            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.FORT_VALIANT_RETURN_BACK_TO_MADELYN_2 };\n        }\n\n\n        public override void ValidateIds() // checks if all IDs in enum are loaded correctly\n        {\n            foreach (var value in Enum.GetValues(typeof(EntityID)))\n            {\n                MyScriptWrapper.GetEntity((uint)((value as EntityID?).Value));\n            }\n        }\n\n        public override void Load() // Code in that block will be called on the load of the sector\n        {\n            MyScriptWrapper.AlarmLaunched += MyScriptWrapperOnAlarmLaunched;\n\n            MyScriptWrapper.OnHarvesterUse += MyScriptWrapperOnOnHarvesterUse;\n            \n            MyScriptWrapper.HideEntity(MyScriptWrapper.GetEntity((uint)EntityID.BotTemplar));\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.CalmAtmosphere); // Sets music group to be played in the sector - no matter if the mission is running or not\n            MyScriptWrapper.EnableGlobalEvent(World.Global.MyGlobalEventEnum.SunWind, false);\n            MyScriptWrapper.EnableGlobalEvent(World.Global.MyGlobalEventEnum.MeteorWind, false);\n            MyScriptWrapper.EnableGlobalEvent(World.Global.MyGlobalEventEnum.IceStorm, false);\n\n\n            m_captain = MyScriptWrapper.GetEntity((uint) EntityID.Captain) as MySmallShipBot;\n            m_gateKeeper = MyScriptWrapper.GetEntity((uint) EntityID.GateKeeper) as MySmallShipBot;\n            m_captain.SpeedModifier = 0.25f;\n            m_gateKeeper.SpeedModifier = 0.25f;\n\n            m_captain.SetWaypointPath(\"Captain\");\n            m_captain.PatrolMode = MyPatrolMode.CYCLE;\n            m_captain.SpeedModifier = 0.25f;\n            m_captain.Patrol();\n\n            m_gateKeeper.SetWaypointPath(\"GateKeep\");\n            m_gateKeeper.PatrolMode = MyPatrolMode.CYCLE;\n            m_gateKeeper.SpeedModifier = 0.25f;\n            m_gateKeeper.Patrol();\n\n            InitDetector((uint)EntityID.Detector1, OnDetecor1Active);\n            InitDetector((uint)EntityID.Detector2, OnDetecor2Active);\n            InitDetector((uint)EntityID.Detector3, OnDetecor3Active);\n            InitDetector((uint)EntityID.Detector4, OnDetecor4Active);\n            InitDetector((uint)EntityID.Detector5, OnDetecor5Active);\n\n\n            base.Load();\n        }\n\n        public override void Unload()\n        {\n            MyScriptWrapper.OnHarvesterUse -= MyScriptWrapperOnOnHarvesterUse;\n            MyScriptWrapper.AlarmLaunched -= MyScriptWrapperOnAlarmLaunched;\n\n            base.Unload();\n        }\n\n        private void OnDetecor5Active(MyEntityDetector sender, MyEntity entity, int meetcriterias)\n        {\n            ActivateSpawnPoints(SpawnPoints5);\n        }\n\n\n        private void OnDetecor4Active(MyEntityDetector sender, MyEntity entity, int meetcriterias)\n        {\n            ActivateSpawnPoints(SpawnPoints4);\n        }\n\n        private void OnDetecor3Active(MyEntityDetector sender, MyEntity entity, int meetcriterias)\n        {\n            ActivateSpawnPoints(SpawnPoints3);\n        }\n\n        private void OnDetecor2Active(MyEntityDetector sender, MyEntity entity, int meetcriterias)\n        {\n            ActivateSpawnPoints(SpawnPoints2);\n        }\n\n        private void OnDetecor1Active(MyEntityDetector sender, MyEntity entity, int meetcriterias)\n        {\n            ActivateSpawnPoints(SpawnPoints1);\n        }\n\n        private void ActivateSpawnPoints(List<uint> spawnPoints)\n        {\n            foreach (var spawnPoint in spawnPoints)\n            {\n                MyScriptWrapper.ActivateSpawnPoint(spawnPoint);\n            }\n        }\n\n        protected MyEntityDetector InitDetector(uint detectorID, OnEntityEnter handler)\n        {\n            MyEntityDetector detector = MyScriptWrapper.GetDetector(MyScriptWrapper.GetEntity(detectorID));\n            detector.OnEntityEnter += handler;\n            detector.On();\n            return detector;\n        }\n\n        protected virtual void MyScriptWrapperOnAlarmLaunched(MyEntity prefabContainer, MyEntity launchedBy)\n        {\n            Fail(Localization.MyTextsWrapperEnum.YouWereDetected);\n        }\n\n\n\n\n\n\n\n        #region HelpMethods\n\n        protected static void EnableEntities(List<uint> toEnable)\n        {\n            foreach (var u in toEnable)\n            {\n                MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.GetEntity(u), true);\n            }\n        }\n\n        protected static void DisableEntities(List<uint> toEnable)\n        {\n            foreach (var u in toEnable)\n            {\n                MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.GetEntity(u), false);\n            }\n        }\n        #endregion\n\n        protected void MyScriptWrapperOnOnHarvesterUse()\n        {\n            bool harvestingIn = false;\n            MyScriptWrapper.GetEntitiesInDummyPoint((uint) EntityID.DontuseHarvestor1, m_entities);\n\n            if (m_entities.Contains(MySession.PlayerShip)) harvestingIn = true;\n\n            MyScriptWrapper.GetEntitiesInDummyPoint((uint)EntityID.Detector3, m_entities);\n\n            if (m_entities.Contains(MySession.PlayerShip)) harvestingIn = true;\n\n            if(harvestingIn)\n            {   \n                if (m_harvesterWarningSend)\n                {\n                    Fail(Localization.MyTextsWrapperEnum.DontHarvest);\n                }\n                MyScriptWrapper.AddNotification(MyScriptWrapper.CreateNotification(Localization.MyTextsWrapperEnum.DontHarvest,MyGuiManager.GetFontMinerWarsRed(),5000));\n                m_harvesterWarningSend = true;\n            }\n \n\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/SinglePlayer/MyFortValiantMissionC.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.Inventory;\nusing MinerWars.AppCode.Game.Entities.CargoBox;\nusing MinerWars.AppCode.Game.Entities.Prefabs;\nusing MinerWars.AppCode.Game.Entities.Weapons.UniversalLauncher;\nusing MinerWars.AppCode.Game.Missions.Components;\nusing MinerWars.AppCode.Game.Missions.Utils;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Audio.Dialogues;\nusing MinerWars.AppCode.Game.HUD;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.Resources;\nusing MinerWars.AppCode.Networking;\n\nnamespace MinerWars.AppCode.Game.Missions.SinglePlayer\n{\n    class MyFortValiantMissionC : MyFortValiantMissionBase\n    {\n\n        #region EntityIDs\n        private readonly List<uint> m_scanners1IDs = new List<uint>() { 137461, 137467, 123500, 123504, 137451, 137491, 137485, 137479, 137473, 137497, 137504, 137510, 137516, 137522 };\n        private readonly List<uint> m_minesDummies = new List<uint>() { 164, 169, 170, 171, 172, 184, 185, 186, 187, 188, 202, 207, 206, 203, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249 };\n\n        public override void ValidateIds()\n        {\n            base.ValidateIds();\n\n            foreach (var entityIds in new List<List<uint>> { m_scanners1IDs, m_minesDummies })\n            {\n                foreach (var entityId in entityIds)\n                {\n                    MyScriptWrapper.GetEntity(entityId);    \n                }\n            }\n        }\n        #endregion\n\n        private bool m_shootWarningSent = false;\n\n        private MyObjective m_visitVendor;\n\n        private MyEntity m_madelynDummy;\n        private MyEntity m_madelyn;\n\n        private MySmallShipBot m_royalBot;\n        private MySmallShipBot m_templarBot;\n\n        private MyUseObjective m_findArtifact;\n        private MyObjectiveDisablePrefabs m_disableScanner2;\n        private MyDeadlyScanners m_deadlyScanners;\n        private List<MyInventoryItem> m_myInventory = new List<MyInventoryItem>();\n\n        private MySmallShipBot m_ravenguyBot;\n        private MySmallShipBot m_ravengirlBot;\n        private MySmallShipBot m_marcus;\n        \n\n        public override void Load()\n        {\n            //if (!IsMainSector) return;\n            MyScriptWrapper.OnSpawnpointBotSpawned += MyScriptWrapperOnOnSpawnpointBotSpawned;\n            MyScriptWrapper.EntityDeath += OnEntityDeath;\n            MyGuiScreenGamePlay.Static.CameraContrlolledObjectChanged += Static_CameraContrlolledObjectChanged;\n\n\n\n            m_templarBot = (MySmallShipBot)MyScriptWrapper.GetEntity((uint)EntityID.BotTemplar);\n            m_royalBot = (MySmallShipBot)MyScriptWrapper.GetEntity((uint)EntityID.BotRoyal);\n\n            m_templarBot.SetWaypointPath(\"Templar\");\n            m_templarBot.PatrolMode = MyPatrolMode.CYCLE;\n            m_templarBot.SpeedModifier = 0.25f;\n            m_templarBot.Patrol();\n\n            m_royalBot.SetWaypointPath(\"Royal\");\n            m_royalBot.PatrolMode = MyPatrolMode.CYCLE;\n            m_royalBot.SpeedModifier = 0.25f;\n            m_royalBot.Patrol();\n\n            m_ravenguyBot = MyScriptWrapper.GetEntity(\"RavenGuy\") as MySmallShipBot;\n            m_ravengirlBot = MyScriptWrapper.GetEntity(\"RavenGirl\") as MySmallShipBot;\n            m_marcus = MyScriptWrapper.GetEntity(\"Marcus\") as MySmallShipBot;\n\n\n\n            MyScriptWrapper.UnhideEntity(MyScriptWrapper.GetEntity((uint)EntityID.BotTemplar));\n\n\n            m_deadlyScanners = new MyDeadlyScanners(m_scanners1IDs, new List<int>() { 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000 });\n            if (!MyScriptWrapper.IsMissionFinished(m_disableScanner2.ID)) \n                Components.Add(m_deadlyScanners);\n            DisableEntities(new List<uint>() { (uint)EntityID.Scanner1, (uint)EntityID.Scanner2 });\n            \n            foreach (var mine in m_minesDummies)\n            {\n                MyScriptWrapper.GenerateMinesField<MyMineBasic>(MyScriptWrapper.GetEntity(mine),\n                                                                MyMwcObjectBuilder_FactionEnum.Russian_KGB, 1, MyTexts.Mine,\n                                                                MyHudIndicatorFlagsEnum.SHOW_BORDER_INDICATORS |\n                                                                MyHudIndicatorFlagsEnum.ALPHA_CORRECTION_BY_DISTANCE |\n                                                                MyHudIndicatorFlagsEnum.SHOW_TEXT |\n                                                                MyHudIndicatorFlagsEnum.SHOW_DISTANCE |\n                                                                MyHudIndicatorFlagsEnum.SHOW_FACTION_RELATION_MARKER |\n                                                                MyHudIndicatorFlagsEnum.SHOW_ONLY_IF_DETECTED_BY_RADAR\n            );\n            }\n\n            if (MySession.Static.EventLog.IsMissionFinished(MyMissionID.FORT_VALIANT_C_FOLLOW_FIND_VENTILATION) && !MySession.Static.EventLog.IsMissionFinished(MyMissionID.FORT_VALIANT_C_CATACOMBS))\n            {\n                SetFriendsPatrol();\n            }\n\n            if (!MyMissions.GetMissionByID(MyMissionID.FORT_VALIANT_C_CAPTAIN).IsCompleted())\n            {\n                var startPosition = MyScriptWrapper.GetEntity((uint)EntityID.StartLocationC).GetPosition();\n                MyScriptWrapper.Move(MyScriptWrapper.GetEntity(MyActorConstants.GetActorName(MyActorEnum.MADELYN)), startPosition);\n                MyScriptWrapper.MovePlayerAndFriendsToHangar(this.RequiredActors);\n            }\n            \n\n            base.Load();\n        }\n\n        private void Static_CameraContrlolledObjectChanged(MyEntity e)\n        {\n            if(e.EntityId.Value.NumericValue == (uint)EntityID.CameraLookThroughID)\n            {\n                MyScriptWrapper.PlayDialogue(MyDialogueEnum.FORT_VALIANT_C_2000);\n            }\n        }\n\n\n        private void MyScriptWrapperOnOnSpawnpointBotSpawned(MyEntity spawnPoint, MyEntity entity2)\n        {\n            if (spawnPoint.EntityId.Value.NumericValue == (uint)EntityID.SpawnAlarm1 || spawnPoint.EntityId.Value.NumericValue == (uint)EntityID.SpawnAlarm2)\n            {\n                var bot = (MySmallShipBot)entity2;\n                bot.SpeedModifier = 0.5f;\n            }\n        }\n\n\n\n        public MyFortValiantMissionC()\n            : base()\n        {\n            ID = MyMissionID.FORT_VALIANT_C; /* ID must be added to MyMissions.cs */\n            DebugName = new StringBuilder(\"09e-Fort Valiant C\"); // Name of mission\n            Name = MyTextsWrapperEnum.FORT_VALIANT_C;\n            Description = MyTextsWrapperEnum.FORT_VALIANT_C_Description;\n            RequiredActors = new MyActorEnum[] { MyActorEnum.MADELYN, MyActorEnum.MARCUS, MyActorEnum.TARJA, MyActorEnum.VALENTIN };\n            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocationC); //StartLocationC Starting dummy point - must by typecasted to uint and referenced from EntityID enum\n            RequiredMissions = new MyMissionID[] { MyMissionID.SLAVER_BASE_2 };\n            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.FORT_VALIANT_C_PICK_UP_EQUIP };\n            AchievementName = MySteamAchievementNames.Mission17_FortValiantDungeons;\n\n            #region Objectives\n            m_objectives = new List<MyObjective>();\n\n            var speakCaptain = new MyMeetObjective(\n                 (MyTextsWrapperEnum.FORT_VALIANT_C_CAPTAIN_Name),\n                 MyMissionID.FORT_VALIANT_C_CAPTAIN,\n                 (MyTextsWrapperEnum.FORT_VALIANT_C_CAPTAIN_Description),\n                 this,\n                 new MyMissionID[] { },\n                 (uint)EntityID.CaptainDummy,\n                 (uint)EntityID.Captain,\n                 50,\n                 0.25f,\n                 MyDialogueEnum.FORT_VALIANT_C_0100,\n                 null,\n                 false\n            ) { SaveOnSuccess = true, FollowMe = false, StartDialogId = MyDialogueEnum.FORT_VALIANT_C_0100_BEGIN, HudName = MyTextsWrapperEnum.HudCaptainCedric };\n            speakCaptain.OnMissionSuccess += SpeakCaptainOnOnMissionSuccess;\n            m_objectives.Add(speakCaptain);\n\n\n            var reachUpperFloor = new MyObjective(\n                (MyTextsWrapperEnum.FORT_VALIANT_C_UPPER_FLOOR_Name),\n                MyMissionID.FORT_VALIANT_C_UPPER_FLOOR,\n                (MyTextsWrapperEnum.FORT_VALIANT_C_UPPER_FLOOR_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.FORT_VALIANT_C_CAPTAIN },\n                new MyMissionLocation(baseSector, (uint)EntityID.UpperFloorDummy)\n                ) { HudName = MyTextsWrapperEnum.Nothing };\n            m_objectives.Add(reachUpperFloor);\n\n\n\n            var meetRoyal = new MyMeetObjective(\n                 (MyTextsWrapperEnum.FORT_VALIANT_C_EQUIP_TALK_Name),\n                 MyMissionID.FORT_VALIANT_C_EQUIP_TALK,\n                 (MyTextsWrapperEnum.FORT_VALIANT_C_EQUIP_TALK_Description),\n                 this,\n                 new MyMissionID[] { MyMissionID.FORT_VALIANT_C_UPPER_FLOOR },\n                 (uint)EntityID.RoyalDummy,\n                 (uint)EntityID.BotRoyal,\n                 50,\n                 0.25f,\n                 MyDialogueEnum.FORT_VALIANT_C_0200,\n                 null,\n                 false\n            ) { SaveOnSuccess = true, FollowMe = false };\n            m_objectives.Add(meetRoyal);\n\n\n            var giveoutEquipment = new MyUseObjective(\n                   (MyTextsWrapperEnum.FORT_VALIANT_C_EQUIP_Name),\n                   MyMissionID.FORT_VALIANT_C_EQUIP,\n                   (MyTextsWrapperEnum.FORT_VALIANT_C_EQUIP_Description),\n                   null,\n                   this,\n                   new MyMissionID[] { MyMissionID.FORT_VALIANT_C_EQUIP_TALK },\n                   new MyMissionLocation(baseSector, (uint)EntityID.RoyalCargoBoxDetector),\n                   MyTextsWrapperEnum.PressToGiveEquipment,\n                   MyTextsWrapperEnum.CargoBox,\n                   MyTextsWrapperEnum.TransferInProgress,\n                   3000,\n                   MyUseObjectiveType.Activating\n            ) { SaveOnSuccess = true };\n            giveoutEquipment.OnMissionSuccess += GiveoutEquipmentOnOnMissionSuccess;\n            m_objectives.Add(giveoutEquipment);\n\n\n\n            var meetOfficers = new MyObjective(\n                (MyTextsWrapperEnum.FORT_VALIANT_C_MEET_OFFICIALS_Name),\n                MyMissionID.FORT_VALIANT_C_MEET_OFFICIALS,\n                (MyTextsWrapperEnum.FORT_VALIANT_C_MEET_OFFICIALS_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.FORT_VALIANT_C_EQUIP },\n                new MyMissionLocation(baseSector, (uint)EntityID.OfficalsDetector),\n                null\n                ) { StartDialogId = MyDialogueEnum.FORT_VALIANT_C_0300, SuccessDialogId = MyDialogueEnum.FORT_VALIANT_C_0400, HudName = MyTextsWrapperEnum.HudChamber };\n            m_objectives.Add(meetOfficers);\n\n\n            var leaveOfficers = new MyObjective(\n                (MyTextsWrapperEnum.FORT_VALIANT_C_LEAVE_OFFICIALS_Name),\n                MyMissionID.FORT_VALIANT_C_LEAVE_OFFICIALS,\n                (MyTextsWrapperEnum.FORT_VALIANT_C_LEAVE_OFFICIALS_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.FORT_VALIANT_C_MEET_OFFICIALS },\n                new MyMissionLocation(baseSector, (uint)EntityID.OfficalsleaveDetector),\n                null\n                ) { SuccessDialogId = MyDialogueEnum.FORT_VALIANT_C_0500, HudName = MyTextsWrapperEnum.Nothing };\n            m_objectives.Add(leaveOfficers);\n\n            var followPath = new MyObjective(\n                (MyTextsWrapperEnum.FORT_VALIANT_C_LEAVE_FOLLOW_Name),\n                MyMissionID.FORT_VALIANT_C_LEAVE_FOLLOW,\n                (MyTextsWrapperEnum.FORT_VALIANT_C_LEAVE_FOLLOW_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.FORT_VALIANT_C_LEAVE_OFFICIALS },\n                new MyMissionLocation(baseSector, (uint)EntityID.FollowPathDetector),\n                null,\n                null) { HudName = MyTextsWrapperEnum.Nothing };\n            m_objectives.Add(followPath);\n\n            var speakWithSir = new MyMeetObjective(\n                (MyTextsWrapperEnum.FORT_VALIANT_C_SPEAK_SIR_Name),\n                MyMissionID.FORT_VALIANT_C_SPEAK_SIR,\n                 (MyTextsWrapperEnum.FORT_VALIANT_C_SPEAK_SIR_Description),\n                 this,\n                new MyMissionID[] { MyMissionID.FORT_VALIANT_C_LEAVE_FOLLOW },\n                 (uint)EntityID.SirBendivereDummy,\n                 (uint)EntityID.BotTemplar,\n                 50,\n                 0.25f,\n                 MyDialogueEnum.FORT_VALIANT_C_0600,\n                 null,\n                 false\n            ) { SaveOnSuccess = true, FollowMe = false, HudName = MyTextsWrapperEnum.HudSirGeraint };\n            m_objectives.Add(speakWithSir);\n\n\n            var getItemsFromCargoBoxes = new MyObjectiveGetItems(\n                (MyTextsWrapperEnum.FORT_VALIANT_C_GET_EQUP_CARGO_Name),\n                MyMissionID.FORT_VALIANT_C_GET_EQUP_CARGO,\n                (MyTextsWrapperEnum.FORT_VALIANT_C_GET_EQUP_CARGO_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.FORT_VALIANT_C_SPEAK_SIR },\n                new List<MyItemToGetDefinition>() {\n                            new MyItemToGetDefinition(MyMwcObjectBuilderTypeEnum.SmallShip_HackingTool, (int)MyMwcObjectBuilder_SmallShip_HackingTool_TypesEnum.Level_1)},\n                new List<uint>() { (uint)EntityID.CargoBox }\n            ) { SaveOnSuccess = true };\n            m_objectives.Add(getItemsFromCargoBoxes);\n\n\n\n            var findEntrance = new MyObjective(\n                (MyTextsWrapperEnum.FORT_VALIANT_C_FOLLOW_FIND_VENTILATION_Name),\n                MyMissionID.FORT_VALIANT_C_FOLLOW_FIND_VENTILATION,\n                (MyTextsWrapperEnum.FORT_VALIANT_C_FOLLOW_FIND_VENTILATION_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.FORT_VALIANT_C_GET_EQUP_CARGO },\n                new MyMissionLocation(baseSector, (uint)EntityID.Ventilation),\n                null,\n                null) { StartDialogId = MyDialogueEnum.FORT_VALIANT_C_0700, HudName = MyTextsWrapperEnum.HudEntrance };\n            findEntrance.OnMissionLoaded += FindEntranceOnOnMissionLoaded;\n            m_objectives.Add(findEntrance);\n            \n\n            var disableScanner = new MyObjectiveDisablePrefabs(\n                  (MyTextsWrapperEnum.FORT_VALIANT_C_FOLLOW_TURN_OFF_GATE_Name),\n                  MyMissionID.FORT_VALIANT_C_FOLLOW_TURN_OFF_GATE,\n                  (MyTextsWrapperEnum.FORT_VALIANT_C_FOLLOW_TURN_OFF_GATE_Description),\n                    null,\n                    this,\n                    new MyMissionID[] { MyMissionID.FORT_VALIANT_C_FOLLOW_FIND_VENTILATION },\n                    new List<uint> { (uint)EntityID.DisableScanner },\n                    new List<uint> { (uint)EntityID.DisableScannerHub },\n                    false,\n                    false\n                ) { SaveOnSuccess = true, StartDialogId = MyDialogueEnum.FORT_VALIANT_C_0800, HudName = MyTextsWrapperEnum.HudSecurityHub };\n            disableScanner.OnMissionLoaded += DisableScannerOnOnMissionLoaded;\n            m_objectives.Add(disableScanner);\n\n            var scanners1 = new MyObjective(\n                (MyTextsWrapperEnum.FORT_VALIANT_C_SCANNERS1_Name),\n                MyMissionID.FORT_VALIANT_C_SCANNERS1,\n                (MyTextsWrapperEnum.FORT_VALIANT_C_SCANNERS1_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.FORT_VALIANT_C_FOLLOW_TURN_OFF_GATE },\n                new MyMissionLocation(baseSector, (uint)EntityID.ScannersLocation1)) { SaveOnSuccess = true, StartDialogId = MyDialogueEnum.FORT_VALIANT_C_1000, HudName = MyTextsWrapperEnum.Nothing };\n            //scanners1.Components.Add(new MyDetectorDialogue((uint)EntityID.DetectorGuardsDialogue, MyDialogueEnum.FORT_VALIANT_C_1100));\n            scanners1.Components.Add(new MyDetectorDialogue((uint)EntityID.DetectorSensorsDialogue, MyDialogueEnum.FORT_VALIANT_C_1200));\n            m_objectives.Add(scanners1);\n\n\n            var scanners2 = new MyObjective(\n                (MyTextsWrapperEnum.FORT_VALIANT_C_SCANNERS2_Name),\n                MyMissionID.FORT_VALIANT_C_SCANNERS2,\n                (MyTextsWrapperEnum.FORT_VALIANT_C_SCANNERS2_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.FORT_VALIANT_C_SCANNERS1 },\n                new MyMissionLocation(baseSector, (uint)EntityID.ScannersLocation2)) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.Nothing };\n            scanners2.OnMissionSuccess += Scanners2OnOnMissionSuccess;\n            m_objectives.Add(scanners2);\n\n            \n            var scanners23 = new MyObjective(\n                (MyTextsWrapperEnum.FORT_VALIANT_C_SCANNERS23_Name),\n                MyMissionID.FORT_VALIANT_C_SCANNERS23,\n                (MyTextsWrapperEnum.FORT_VALIANT_C_SCANNERS23_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.FORT_VALIANT_C_SCANNERS2 },\n                new MyMissionLocation(baseSector, (uint)EntityID.ScannersLocation23)) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.Nothing };\n            m_objectives.Add(scanners23);\n            \n            m_findArtifact = new MyUseObjective(\n               (MyTextsWrapperEnum.FORT_VALIANT_C_TAKE_ARTEFACT_Name),\n               MyMissionID.FORT_VALIANT_C_TAKE_ARTEFACT,\n               (MyTextsWrapperEnum.FORT_VALIANT_C_TAKE_ARTEFACT_Description),\n               null,\n               this,\n               new MyMissionID[] { MyMissionID.FORT_VALIANT_C_SCANNERS23 },\n               null,\n               MyTextsWrapperEnum.NotificationTakeArtifact,\n               MyTextsWrapperEnum.Artifact,\n               MyTextsWrapperEnum.TakingInProgress,\n               3000,\n               MyUseObjectiveType.Taking,\n               null,\n               null,\n               null,\n               new List<uint>() { (uint)EntityID.Box1Marker, (uint)EntityID.Box2Marker, (uint)EntityID.Box3Marker, (uint)EntityID.Box4Marker },\n               (uint)EntityID.ArtifactDummy\n            ) { SaveOnSuccess = true, StartDialogId = MyDialogueEnum.FORT_VALIANT_C_1400 };\n            m_findArtifact.OnMissionLoaded += FindArtifactOnOnMissionLoaded;\n            m_findArtifact.OnMissionSuccess += FindArtifactOnOnMissionSuccess;\n            m_findArtifact.Components.Add(new MyTimedDialogue(new TimeSpan(0,0,10),MyDialogueEnum.FORT_VALIANT_C_1500 ));\n            m_objectives.Add(m_findArtifact);\n\n\n            var vault = new MyObjective(\n                (MyTextsWrapperEnum.FORT_VALIANT_C_VALUT_Name),\n                MyMissionID.FORT_VALIANT_C_VALUT,\n                (MyTextsWrapperEnum.FORT_VALIANT_C_VALUT_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.FORT_VALIANT_C_TAKE_ARTEFACT },\n                new MyMissionLocation(baseSector, (uint)EntityID.ScannersLocation2)) { HudName = MyTextsWrapperEnum.Nothing };\n            vault.Components.Add(new MyDetectorDialogue((uint)EntityID.DetectorSecurityFields, MyDialogueEnum.FORT_VALIANT_C_1700));\n            vault.Components.Add(new MyDetectorDialogue((uint)EntityID.DetectorOpenDoors, MyDialogueEnum.FORT_VALIANT_C_1800));\n            vault.Components.Add(new MyDetectorDialogue((uint)EntityID.DetectorComputer, MyDialogueEnum.FORT_VALIANT_C_1900));\n            m_objectives.Add(vault);\n\n            m_disableScanner2 = new MyObjectiveDisablePrefabs(\n                  (MyTextsWrapperEnum.FORT_VALIANT_C_TURN_OFF_SCANNER_Name),\n                  MyMissionID.FORT_VALIANT_C_TURN_OFF_SCANNER,\n                  (MyTextsWrapperEnum.FORT_VALIANT_C_TURN_OFF_SCANNER_Description),\n                    null,\n                    this,\n                    new MyMissionID[] { MyMissionID.FORT_VALIANT_C_VALUT },\n                    new List<uint> { (uint)EntityID.DisableSnanners2 },\n                    new List<uint> { (uint)EntityID.DisableScanner2Hub },\n                    false\n\n                ) { SaveOnSuccess = true, SuccessDialogId = MyDialogueEnum.FORT_VALIANT_C_2100, HudName = MyTextsWrapperEnum.HudSecurityHub };\n            m_disableScanner2.OnMissionSuccess += DisableScanner2_Success;\n            m_objectives.Add(m_disableScanner2);\n\n            var scanners4 = new MyObjective(\n                (MyTextsWrapperEnum.FORT_VALIANT_C_SCANNERS4_Name),\n                MyMissionID.FORT_VALIANT_C_SCANNERS4,\n                (MyTextsWrapperEnum.FORT_VALIANT_C_SCANNERS4_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.FORT_VALIANT_C_TURN_OFF_SCANNER },\n                new MyMissionLocation(baseSector, (uint)EntityID.HigherFloors)) { HudName = MyTextsWrapperEnum.Nothing };\n            m_objectives.Add(scanners4);\n\n\n            var elevator = new MyObjective(\n                (MyTextsWrapperEnum.FORT_VALIANT_C_TOP_ELEVATOR_Name),\n                MyMissionID.FORT_VALIANT_C_TOP_ELEVATOR,\n                (MyTextsWrapperEnum.FORT_VALIANT_C_TOP_ELEVATOR_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.FORT_VALIANT_C_SCANNERS4 },\n                new MyMissionLocation(baseSector, (uint)EntityID.ElevatorDummy)) { HudName = MyTextsWrapperEnum.Nothing };\n            m_objectives.Add(elevator);\n\n\n            var escape = new MyObjective(\n                (MyTextsWrapperEnum.FORT_VALIANT_C_VENT_SYSTEM_Name),\n                MyMissionID.FORT_VALIANT_C_VENT_SYSTEM,\n                (MyTextsWrapperEnum.FORT_VALIANT_C_VENT_SYSTEM_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.FORT_VALIANT_C_TOP_ELEVATOR },\n                new MyMissionLocation(baseSector, (uint)EntityID.EscapeVentSystemDummy)) { SuccessDialogId = MyDialogueEnum.FORT_VALIANT_C_2300, HudName = MyTextsWrapperEnum.Nothing };\n            m_objectives.Add(escape);\n\n\n            var useCatacombs = new MyObjective(\n                (MyTextsWrapperEnum.FORT_VALIANT_C_CATACOMBS_Name),\n                MyMissionID.FORT_VALIANT_C_CATACOMBS,\n                (MyTextsWrapperEnum.FORT_VALIANT_C_CATACOMBS_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.FORT_VALIANT_C_VENT_SYSTEM },\n                new MyMissionLocation(baseSector, (uint)EntityID.EscapeCatacombsDummy)\n                //startDialogId: dialog9\n                ) { HudName = MyTextsWrapperEnum.Nothing };\n            useCatacombs.OnMissionSuccess += UseCatacombsOnOnMissionSuccess;\n            m_objectives.Add(useCatacombs);\n\n            var getItemsFromCargoBoxes2 = new MyUseObjective(\n                (MyTextsWrapperEnum.FORT_VALIANT_C_PICK_UP_EQUIP_Name),\n                MyMissionID.FORT_VALIANT_C_PICK_UP_EQUIP,\n                (MyTextsWrapperEnum.FORT_VALIANT_C_PICK_UP_EQUIP_Description),\n               null,\n               this,\n               new MyMissionID[] { MyMissionID.FORT_VALIANT_C_CATACOMBS },\n               new MyMissionLocation(baseSector, (uint)EntityID.RoyalCargoBoxDetector),\n               MyTextsWrapperEnum.PressToTakeCargo,\n               MyTextsWrapperEnum.CargoBox,\n               MyTextsWrapperEnum.TakingInProgress,\n               3000,\n               MyUseObjectiveType.Taking\n               //startDialogId: dialog10\n        ) { SaveOnSuccess = true,StartDialogId = MyDialogueEnum.FORT_VALIANT_C_2400};\n            getItemsFromCargoBoxes2.Components.Add(new MyDetectorDialogue((uint)EntityID.GetItemsWayBackDialogue, MyDialogueEnum.FORT_VALIANT_C_2500));\n            getItemsFromCargoBoxes2.OnMissionSuccess += GetItemsFromCargoBoxesOnOnMissionSuccess;\n            m_objectives.Add(getItemsFromCargoBoxes2);\n            #endregion\n        }\n\n        private void UseCatacombsOnOnMissionSuccess(MyMissionBase sender)\n        {\n            var sir = (MySmallShipBot)MyScriptWrapper.GetEntity((uint)EntityID.BotTemplar);\n            sir.SetWaypointPath(\"ChurchPatrol\");\n            sir.PatrolMode = MyPatrolMode.ONE_WAY;\n            sir.Patrol();\n\n            m_marcus.Follow(MySession.PlayerShip);\n            m_ravengirlBot.Follow(MySession.PlayerShip);\n            m_ravenguyBot.Follow(MySession.PlayerShip);\n        }\n\n        private void GetItemsFromCargoBoxesOnOnMissionSuccess(MyMissionBase sender)\n        {\n            m_myInventory.Clear();\n            \n            var cargobox = (MyCargoBox)MyScriptWrapper.GetEntity((uint)EntityID.FakeCargo);\n            m_myInventory.AddRange(cargobox.Inventory.GetInventoryItems());\n            MyScriptWrapper.AddInventoryItems(MyScriptWrapper.GetPlayerInventory(), m_myInventory, ((MyPrefabHangar)MyScriptWrapper.GetMothershipHangar(MyScriptWrapper.GetEntity(\"Madelyn\"))).Inventory);\n            cargobox.Inventory.ClearInventoryItems(false);\n            MyScriptWrapper.PlayDialogue(MyDialogueEnum.FORT_VALIANT_C_2600);\n        }\n\n        private void DisableScannerOnOnMissionLoaded(MyMissionBase sender)\n        {\n            var sir = (MySmallShipBot)MyScriptWrapper.GetEntity((uint)EntityID.BotTemplar);\n            sir.SetWaypointPath(\"ChurchPatrol\");\n            sir.PatrolMode = MyPatrolMode.ONE_WAY;\n            sir.Patrol();\n\n            SetFriendsPatrol();\n        }\n\n        private void SetFriendsPatrol()\n        {\n            m_marcus.SetWaypointPath(\"ChurchPatrol\");\n            m_marcus.PatrolMode = MyPatrolMode.ONE_WAY;\n            m_marcus.Patrol();\n\n            m_ravengirlBot.SetWaypointPath(\"ChurchPatrol\");\n            m_ravengirlBot.PatrolMode = MyPatrolMode.ONE_WAY;\n            m_ravengirlBot.Patrol();\n\n            m_ravenguyBot.SetWaypointPath(\"ChurchPatrol\");\n            m_ravenguyBot.PatrolMode = MyPatrolMode.ONE_WAY;\n            m_ravenguyBot.Patrol();\n        }\n\n        private void Scanners2OnOnMissionSuccess(MyMissionBase sender)\n        {\n            MyScriptWrapper.SetEntityEnabled((MyScriptWrapper.GetEntity((uint)EntityID.DisableScanner)), true);\n        }\n\n        private void DisableScanner2_Success(MyMissionBase sender)\n        {\n            Components.Remove(m_deadlyScanners);\n            MyScriptWrapper.SetEntitiesEnabled(m_scanners1IDs, false);\n\n            var bots = MyScriptWrapper.GetSpawnPointBots((uint)EntityID.SpawnAlarm2);\n            foreach (var bot in bots)\n            {\n                var smallShipBot = bot.Ship;\n                smallShipBot.SetWaypointPath(\"group3\");\n                smallShipBot.PatrolMode = MyPatrolMode.ONE_WAY;\n                smallShipBot.Patrol();\n            }\n        }\n\n        private void FindArtifactOnOnMissionSuccess(MyMissionBase sender)\n        {\n            MyScriptWrapper.Highlight((uint)EntityID.PrefabArtifact, false, this);\n            MyScriptWrapper.HideEntity(MyScriptWrapper.GetEntity((uint)EntityID.PrefabArtifact));\n\n            MyScriptWrapper.RemoveEntityMark(MyScriptWrapper.GetEntity((uint)EntityID.Box1Marker));\n            MyScriptWrapper.RemoveEntityMark(MyScriptWrapper.GetEntity((uint)EntityID.Box2Marker));\n            MyScriptWrapper.RemoveEntityMark(MyScriptWrapper.GetEntity((uint)EntityID.Box3Marker));\n            MyScriptWrapper.RemoveEntityMark(MyScriptWrapper.GetEntity((uint)EntityID.Box4Marker));\n\n            MyScriptWrapper.PlayDialogue(MyDialogueEnum.FORT_VALIANT_C_1600);\n        }\n\n        private void FindArtifactOnOnMissionLoaded(MyMissionBase sender)\n        {\n            sender.SetLocationVisibility(true, MyScriptWrapper.GetEntity((uint)EntityID.Box1Marker), MyGuitargetMode.Objective);\n            sender.SetLocationVisibility(true, MyScriptWrapper.GetEntity((uint)EntityID.Box2Marker), MyGuitargetMode.Objective);\n            sender.SetLocationVisibility(true, MyScriptWrapper.GetEntity((uint)EntityID.Box3Marker), MyGuitargetMode.Objective);\n            sender.SetLocationVisibility(true, MyScriptWrapper.GetEntity((uint)EntityID.Box4Marker), MyGuitargetMode.Objective);\n\n            InitDetector((uint)EntityID.Box1Marker, Box1Entered);\n            InitDetector((uint)EntityID.Box2Marker, Box2Entered);\n            InitDetector((uint)EntityID.Box3Marker, Box3Entered);\n            InitDetector((uint)EntityID.Box4Marker, Box4Entered);\n\n\n            MyScriptWrapper.Highlight((uint)EntityID.PrefabArtifact, true, this);\n        }\n\n        private void Box4Entered(MyEntityDetector sender, MyEntity entity, int meetcriterias)\n        {\n            sender.Off();\n            if (m_findArtifact.IsAvailable()) m_findArtifact.MissionEntityIDs.Remove((uint)EntityID.Box4Marker);\n            MyScriptWrapper.RemoveEntityMark(MyScriptWrapper.GetEntity((uint)EntityID.Box4Marker));\n        }\n\n        private void Box3Entered(MyEntityDetector sender, MyEntity entity, int meetcriterias)\n        {\n            sender.Off();\n            if (m_findArtifact.IsAvailable()) m_findArtifact.MissionEntityIDs.Remove((uint)EntityID.Box3Marker);\n            MyScriptWrapper.RemoveEntityMark(MyScriptWrapper.GetEntity((uint)EntityID.Box3Marker));\n        }\n\n        private void Box2Entered(MyEntityDetector sender, MyEntity entity, int meetcriterias)\n        {\n            sender.Off();\n            if (m_findArtifact.IsAvailable()) m_findArtifact.MissionEntityIDs.Remove((uint)EntityID.Box2Marker);\n            MyScriptWrapper.RemoveEntityMark(MyScriptWrapper.GetEntity((uint)EntityID.Box2Marker));\n        }\n\n        private void Box1Entered(MyEntityDetector sender, MyEntity entity, int meetcriterias)\n        {\n            sender.Off();\n            if (m_findArtifact.IsAvailable()) m_findArtifact.MissionEntityIDs.Remove((uint)EntityID.Box1Marker);\n            MyScriptWrapper.RemoveEntityMark(MyScriptWrapper.GetEntity((uint)EntityID.Box1Marker));\n        }\n\n        private void FindEntranceOnOnMissionLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnAlarm1);\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnAlarm2);\n\n            var sir = (MySmallShipBot)MyScriptWrapper.GetEntity((uint)EntityID.BotTemplar);\n\n            sir.SetWaypointPath(\"WayChurch\");\n            sir.PatrolMode = MyPatrolMode.ONE_WAY;\n            sir.Patrol();\n\n\n            m_marcus.SetWaypointPath(\"WayChurch\");\n            m_marcus.PatrolMode = MyPatrolMode.ONE_WAY;\n            m_marcus.Patrol();\n\n            m_ravengirlBot.SetWaypointPath(\"WayChurch\");\n            m_ravengirlBot.PatrolMode = MyPatrolMode.ONE_WAY;\n            m_ravengirlBot.Patrol();\n\n            m_ravenguyBot.SetWaypointPath(\"WayChurch\");\n            m_ravenguyBot.PatrolMode = MyPatrolMode.ONE_WAY;\n            m_ravenguyBot.Patrol();\n\n        }\n\n        private void GiveoutEquipmentOnOnMissionSuccess(MyMissionBase sender)\n        {\n            m_myInventory.Clear();\n            m_myInventory.AddRange(MyScriptWrapper.GetPlayerInventory().GetInventoryItems());\n            var cargobox = (MyCargoBox)MyScriptWrapper.GetEntity((uint)EntityID.FakeCargo);\n\n            var builders = MySession.PlayerShip.Weapons.GetWeaponsObjectBuilders(true);\n            foreach (var myMwcObjectBuilderSmallShipWeapon in builders)\n            {\n                var item = MyInventory.CreateInventoryItemFromObjectBuilder(myMwcObjectBuilderSmallShipWeapon);\n                m_myInventory.Add(item);\n            }\n            cargobox.Inventory.AddInventoryItems(m_myInventory);\n\n            MySession.PlayerShip.Weapons.RemoveAllWeapons();\n            var inventory = MyScriptWrapper.GetPlayerInventory();\n            inventory.ClearInventoryItems(false);\n        }\n\n        private void SpeakCaptainOnOnMissionSuccess(MyMissionBase sender)\n        {\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.GetEntity((uint)EntityID.Generator1), false);\n        }\n\n        public override void Unload()\n        {\n            //if (!IsMainSector) return;\n            MyScriptWrapper.OnSpawnpointBotSpawned -= MyScriptWrapperOnOnSpawnpointBotSpawned;\n            MyScriptWrapper.EntityDeath -= OnEntityDeath;\n            MyGuiScreenGamePlay.Static.CameraContrlolledObjectChanged -= Static_CameraContrlolledObjectChanged;\n            Components.Clear();\n\n            m_ravenguyBot = null;\n            m_ravengirlBot = null;\n            m_marcus = null;\n            m_templarBot = null;\n            m_royalBot = null;\n\n            base.Unload();\n        }\n        \n        void OnEntityDeath(MyEntity entity, MyEntity killedBy)\n        {\n            if (MyScriptWrapper.IsPlayerShip(killedBy) && !m_shootWarningSent)\n            {\n                m_shootWarningSent = true;\n                MyScriptWrapper.AddNotification(MyScriptWrapper.CreateNotification(MyTextsWrapperEnum.DontShoot, MyHudConstants.ENEMY_FONT, 10000));\n                return;\n            }\n\n            if (MyScriptWrapper.IsPlayerShip(killedBy) && !MyScriptWrapper.IsMissionFinished(MyMissionID.TWIN_TOWERS_ASSAULT))\n            {\n                Fail(MyTextsWrapperEnum.DontShoot);\n            }\n        }\n    }\n\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/SinglePlayer/MyGatesOfHellMission.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Entities;\nusing System.Diagnostics;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Entities.WayPoints;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Inventory;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.Game.World.Global;\n\n\nnamespace MinerWars.AppCode.Game.Missions.SinglePlayer\n{\n    class MyGatesOfHellMission : MyMissionSandboxBase\n    {\n        private enum EntityID // list of IDs used in script\n        {\n            StartLocation = 85,\n         \n        }\n\n        public override void ValidateIds() // checks if all IDs in enum are loaded correctly\n        {\n            foreach (var value in Enum.GetValues(typeof(EntityID)))\n            {\n                MyScriptWrapper.GetEntity((uint)((value as EntityID?).Value));\n            }\n        }\n\n\n\n        public MyGatesOfHellMission()\n        {\n            ID = MyMissionID.GATES_OF_HELL; /* ID must be added to MyMissions.cs */\n            DebugName = new StringBuilder(\"Gates of Hell\"); // Name of mission\n            Name = MyTextsWrapperEnum.GATES_OF_HELL;\n            Description = MyTextsWrapperEnum.GATES_OF_HELL_Description;\n            MyMwcVector3Int baseSector = new MyMwcVector3Int(-3852627, 0, -2074149); // Story sector of the script - i.e. (-2465,0,6541)\n            RequiredMissions = new MyMissionID[] { };\n            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation); // Starting dummy point - must by typecasted to uint and referenced from EntityID enum\n            RequiredActors = new MyActorEnum[] { MyActorEnum.MADELYN };\n           \n\n            m_objectives = new List<MyObjective>(); // Creating of list of submissions\n\n\n        }\n\n\n\n\n        public override void Load() // Code in that block will be called on the load of the sector\n        {\n            base.Load();\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.HeavyFight, 3); // Sets music group to be played in the sector - no matter if the mission is running or not\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/SinglePlayer/MyHeliumMinesMission.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Entities;\nusing System.Diagnostics;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Entities.WayPoints;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Inventory;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.Game.World.Global;\n\n\nnamespace MinerWars.AppCode.Game.Missions.SinglePlayer\n{\n    class MyHeliumMinesMission : MyMissionSandboxBase\n    {\n        private enum EntityID // list of IDs used in script\n        {\n            StartLocation = 1077,\n         \n        }\n\n        public override void ValidateIds() // checks if all IDs in enum are loaded correctly\n        {\n            foreach (var value in Enum.GetValues(typeof(EntityID)))\n            {\n                MyScriptWrapper.GetEntity((uint)((value as EntityID?).Value));\n            }\n        }\n\n\n\n        public MyHeliumMinesMission()\n        {\n            ID = MyMissionID.MINER_OUTPOST; /* ID must be added to MyMissions.cs */\n            DebugName = new StringBuilder(\"Helium Mines\"); // Name of mission\n            Name = MyTextsWrapperEnum.MINER_OUTPOST;\n            Description = MyTextsWrapperEnum.MINER_OUTPOST_Description;\n            MyMwcVector3Int baseSector = new MyMwcVector3Int(-54034502, 0, -30077686); // Story sector of the script - i.e. (-2465,0,6541)\n            RequiredMissions = new MyMissionID[] { };\n            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation); // Starting dummy point - must by typecasted to uint and referenced from EntityID enum\n            RequiredActors = new MyActorEnum[] { MyActorEnum.MADELYN };\n           \n\n            m_objectives = new List<MyObjective>(); // Creating of list of submissions\n\n\n        }\n\n\n\n\n        public override void Load() // Code in that block will be called on the load of the sector\n        {\n            base.Load();\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.HeavyFight, 3); // Sets music group to be played in the sector - no matter if the mission is running or not\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/SinglePlayer/MyHippieOutpostMission.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Entities;\nusing System.Diagnostics;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Entities.WayPoints;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Inventory;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.Game.World.Global;\n\n\nnamespace MinerWars.AppCode.Game.Missions.SinglePlayer\n{\n    class MyHippieOutpostMission : MyMission\n    {\n        private enum EntityID // list of IDs used in script\n        {\n            StartLocation = 96,\n            Spawn1 = 172,\n            Spawn2 = 173,\n            Spawn3 = 167,\n            Spawn4 = 170,\n            Spawn5 = 169,\n            Spawn6 = 168,\n            Spawn7 = 171, \n            reach = 1234,\n           \n            \n           \n            \n        }\n\n        public override void ValidateIds() // checks if all IDs in enum are loaded correctly\n        {\n            foreach (var value in Enum.GetValues(typeof(EntityID)))\n            {\n                MyScriptWrapper.GetEntity((uint)((value as EntityID?).Value));\n            }\n        }\n\n\n\n\n        public MyHippieOutpostMission()\n        {\n            ID = MyMissionID.HIPPIE_OUTPOST; /* ID must be added to MyMissions.cs */\n            DebugName = new StringBuilder(\"Hippie Outpost\"); // Name of mission\n            Name = MyTextsWrapperEnum.HIPPIE_OUTPOST;\n            Description = MyTextsWrapperEnum.HIPPIE_OUTPOST_Description;\n            MyMwcVector3Int baseSector = new MyMwcVector3Int(238307, 0, -2545498); // Story sector of the script - i.e. (-2465,0,6541)\n            RequiredMissions = new MyMissionID[] { };\n            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation); // Starting dummy point - must by typecasted to uint and referenced from EntityID enum\n            RequiredActors = new MyActorEnum[] { MyActorEnum.MADELYN };\n\n\n            m_objectives = new List<MyObjective>(); // Creating of list of submissions\n\n\n\n            var reach_outpost = new MyObjective( // One member of that list - its type defines the type of submission - MySubmission means fly to the dummypoint to success. Here it is var so you cannot call methods on it\n               new StringBuilder(\"See what's wrong!\"), // Name of the submission\n               MyMissionID.REACH_OUTPOST, // ID of the submission - must be added to MyMissions.cs\n               new StringBuilder(\"\\n\"), // Description of the submission\n               null,\n               this,\n               new MyMissionID[] { }, // ID of submissions required to make this submission available - it is clear so this submission is the starting submission\n               new MyMissionLocation(baseSector, (uint)EntityID.reach) // ID of dummy point of checkpoint\n           ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.Nothing }; // False means do not save game in that checkpoint                  \n            m_objectives.Add(reach_outpost);\n\n\n            // START OF DESTROY SUBMISSION DEFINITION\n            var KillKharmaSpoilers = new MyObjectiveDestroy( // MySubmissionDestroy means mission with objective to destroy something - here it is class member so you can call methods on it\n              new StringBuilder(\"Place the karma spoilers\"), //Name of the submission\n              MyMissionID.KILL_ALL, // ID of the submission\n              new StringBuilder(\"Don't let them spread negative energy!\\n\"), // Description of the submission\n              null,\n              this,\n              new MyMissionID[] { MyMissionID.REACH_OUTPOST }, // ID of submissions required to make this submission available - these declares the sequence of submissions\n                         \n              null,\n              new List<uint> { (uint)EntityID.Spawn1, (uint)EntityID.Spawn2, (uint)EntityID.Spawn3, (uint)EntityID.Spawn4, (uint)EntityID.Spawn5, (uint)EntityID.Spawn6, (uint)EntityID.Spawn7 }, // ID of objects to be destroyed as a mission objective\n              true\n          ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.Nothing };\n            m_objectives.Add(KillKharmaSpoilers);\n            // END OF DESTROY SUBMISSION DEFINITION\n        }\n\n\n        public override void Load() // Code in that block will be called on the load of the sector\n        {\n            base.Load();\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.Mystery, 3); // Sets music group to be played in the sector - no matter if the mission is running or not\n            MyScriptWrapper.SetPlayerFaction(MyMwcObjectBuilder_FactionEnum.Rainiers);\n           \n            }\n        \n      \n       \n\n        public override void Update() //Code in that block will be called in each frame\n        {\n            base.Update();\n\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/SinglePlayer/MyIndustrialSectorMission.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Entities;\nusing System.Diagnostics;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Entities.WayPoints;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Inventory;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.Game.World.Global;\n\n\nnamespace MinerWars.AppCode.Game.Missions.SinglePlayer\n{\n    class MyIndustrialSectorMission : MyMissionSandboxBase\n    {\n        private enum EntityID // list of IDs used in script\n        {\n            StartLocation = 14,\n         \n        }\n\n        public override void ValidateIds() // checks if all IDs in enum are loaded correctly\n        {\n            foreach (var value in Enum.GetValues(typeof(EntityID)))\n            {\n                MyScriptWrapper.GetEntity((uint)((value as EntityID?).Value));\n            }\n        }\n\n\n\n        public MyIndustrialSectorMission()\n        {\n            ID = MyMissionID.INDUSTRIAL_SECTOR; /* ID must be added to MyMissions.cs */\n            DebugName = new StringBuilder(\"Industrial Sector\"); // Name of mission\n            Name = MyTextsWrapperEnum.INDUSTRIAL_SECTOR;\n            Description = MyTextsWrapperEnum.INDUSTRIAL_SECTOR_Description;\n            MyMwcVector3Int baseSector = new MyMwcVector3Int(-7944309, 0, -14218145); // Story sector of the script - i.e. (-2465,0,6541)\n            RequiredMissions = new MyMissionID[] { };\n            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation); // Starting dummy point - must by typecasted to uint and referenced from EntityID enum\n            RequiredActors = new MyActorEnum[] { MyActorEnum.MADELYN };\n           \n\n            m_objectives = new List<MyObjective>(); // Creating of list of submissions\n\n\n        }\n\n\n\n\n        public override void Load() // Code in that block will be called on the load of the sector\n        {\n            base.Load();\n            MyAudio.ApplyTransition(MyMusicTransitionEnum.HeavyFight, 3); // Sets music group to be played in the sector - no matter if the mission is running or not\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/SinglePlayer/MyIntergalacticHighwayMission.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Entities;\nusing System.Diagnostics;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Entities.WayPoints;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Inventory;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.Game.World.Global;\n\n\nnamespace MinerWars.AppCode.Game.Missions.SinglePlayer\n{\n    class IntergalacticHighway : MyMissionSandboxBase\n    {\n        private enum EntityID // list of IDs used in script\n        {\n            StartLocation = 264,\n         \n        }\n\n        public override void ValidateIds() // checks if all IDs in enum are loaded correctly\n        {\n            foreach (var value in Enum.GetValues(typeof(EntityID)))\n            {\n                MyScriptWrapper.GetEntity((uint)((value as EntityID?).Value));\n            }\n        }\n\n\n\n        public IntergalacticHighway()\n        {\n            ID = MyMissionID.INTERGALACTIC_HIGHWAY; /* ID must be added to MyMissions.cs */\n            DebugName = new StringBuilder(\"Intergalatic highway\"); // Name of mission\n            Name = MyTextsWrapperEnum.INTERGALACTIC_HIGHWAY;\n            Description = MyTextsWrapperEnum.INTERGALACTIC_HIGHWAY_Description;\n            MyMwcVector3Int baseSector = new MyMwcVector3Int(4546561, 0, -6059286); // Story sector of the script - i.e. (-2465,0,6541)\n            RequiredMissions = new MyMissionID[] { };\n            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation); // Starting dummy point - must by typecasted to uint and referenced from EntityID enum\n            RequiredActors = new MyActorEnum[] { MyActorEnum.MADELYN };\n           \n\n            m_objectives = new List<MyObjective>(); // Creating of list of submissions\n\n\n        }\n\n\n\n\n        public override void Load() // Code in that block will be called on the load of the sector\n        {\n            base.Load();\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.CalmAtmosphere, 3); // Sets music group to be played in the sector - no matter if the mission is running or not\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/SinglePlayer/MyIntroMission.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Inventory;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.AppCode.Game.Localization;\n\nnamespace MinerWars.AppCode.Game.Missions.SinglePlayer\n{\n    class MyIntroMission : MyMission\n    {\n        public MyIntroMission()\n        {\n            ID = MyMissionID.M01_Intro;\n            DebugName = new StringBuilder(\"Intro mission\");\n            Name = MyTextsWrapperEnum.M01_Intro;\n            Description = MyTextsWrapperEnum.M01_Intro_Description;\n\n            //Location = new Vector3(100, -300, 0);\n            RequiredMissions = new MyMissionID[] { };\n            //RequiredTime = new DateTime(1, 1, 1, 0, 0, 15);\n\n            // use MyFirstMission\n            //m_submissions = new List<MySubmission>\n            //                    {\n            //                        new MySubmission(\n            //                                ID: MyMissionID.M01_Intro_Mining,\n            //                                Name: new StringBuilder(\"Mine 50 ore\"),\n            //                                Description: new StringBuilder(\"\"),\n            //                                Icon: null,\n            //                                ParentMission: this,\n            //                                RequiredMissions: new MyMissionID[] {},\n            //                                Location: new Vector3(250, 250, 250)\n            //                            ),\n\n            //                        new MySubmission(\n            //                                ID: MyMissionID.M01_Intro_Sell,\n            //                                Name: new StringBuilder(\"Sell the ore\"),\n            //                                Description: new StringBuilder(\"\"),\n            //                                Icon: null,\n            //                                ParentMission: this,\n            //                                RequiredMissions: new MyMissionID[] { MyMissionID.M01_Intro_Mining },\n            //                                Location: new Vector3(100, 500, 500)\n            //                            ),\n\n            //                        new MySubmission(\n            //                                ID: MyMissionID.M01_Intro_Buy,\n            //                                Name: new StringBuilder(\"Buy a weapon\"),\n            //                                Description: new StringBuilder(\"\"),\n            //                                Icon: null,\n            //                                ParentMission: this,\n            //                                RequiredMissions: new MyMissionID[] { MyMissionID.M01_Intro_Sell },\n            //                                Location: new Vector3(500, 100, 500)\n            //                            ),\n\n            //                        new MySubmission(\n            //                                ID: MyMissionID.M01_Intro_Kill,\n            //                                Name: new StringBuilder(\"Kill the enemy\"),\n            //                                Description: new StringBuilder(\"He may not survive.\"),\n            //                                Icon: null,\n            //                                ParentMission: this,\n            //                                RequiredMissions: new MyMissionID[] { MyMissionID.M01_Intro_Buy },\n            //                                Location: new Vector3(500, 500, 100)\n            //                            )\n            //                    };\n\n            //MyMissions.AddMission(new MySubmission(\n            //        ID: MyMissionID.M01_Intro_Mining,\n            //        Name: new StringBuilder(\"Mine\"),\n            //        Description: new StringBuilder(\"\"),\n            //        Icon: null,\n            //        ParentMission: this,\n            //        RequiredMissions: new MyMissionID[] { MyMissionID.M01_Intro },\n            //        Location: new Vector3(500, 500, 500)\n            //        ));\n\n            //MyMissions.AddMission(new MySubmission(\n            //        ID: MyMissionID.M01_Intro_Sell,\n            //        Name: new StringBuilder(\"Sell the ore\"),\n            //        Description: new StringBuilder(\"\"),\n            //        Icon: null,\n            //        ParentMission: this,\n            //        RequiredMissions: new MyMissionID[] { MyMissionID.M01_Intro_Mining },\n            //        Location: new Vector3(100, 500, 500)\n            //        ));\n\n            //MyMissions.AddMission(new MySubmission(\n            //        ID: MyMissionID.M01_Intro_Buy,\n            //        Name: new StringBuilder(\"Buy a weapon\"),\n            //        Description: new StringBuilder(\"\"),\n            //        Icon: null,\n            //        ParentMission: this,\n            //        RequiredMissions: new MyMissionID[] { MyMissionID.M01_Intro_Sell },\n            //        Location: new Vector3(500, 100, 500)\n            //        ));\n\n            //MyMissions.AddMission(new MySubmission(\n            //        ID: MyMissionID.M01_Intro_Kill,\n            //        Name: new StringBuilder(\"Kill the enemy\"),\n            //        Description: new StringBuilder(\"He may not survive.\"),\n            //        Icon: null,\n            //        ParentMission: this,\n            //        RequiredMissions: new MyMissionID[] { MyMissionID.M01_Intro_Buy },\n            //        Location: new Vector3(500, 500, 100)\n            //        ));\n        }\n\n        public override void Load()\n        {\n            base.Load();\n\n            MySession.PlayerShip.Inventory.OnInventoryItemAmountChange += InventoryContentChanged;\n        }\n\n        private void InventoryContentChanged(MyInventory sender, MyInventoryItem inventoryItem, float amountChanged)\n        {                        \n            float oreAmount = sender.GetInventoryItemsCount(MyMwcObjectBuilderTypeEnum.Ore, null);\n            if (oreAmount >= 50)\n            {\n                m_objectives.Find(submission => submission.ID == MyMissionID.M01_Intro_Mining).Success();\n            }\n        }\n\n        public override void Update()\n        {\n            base.Update();\n        }\n\n        public override void Success()\n        {\n            base.Success();\n\n            MySession.PlayerShip.Inventory.OnInventoryItemAmountChange -= InventoryContentChanged;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/SinglePlayer/MyJunkyardConvinceMission.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing MinerWars.AppCode.Game.Missions.Objectives;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Entities;\nusing System.Diagnostics;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.AppCode.Game.Audio.Dialogues;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.Resources;\nusing MinerWars.AppCode.Networking;\n\nnamespace MinerWars.AppCode.Game.Missions.SinglePlayer\n{\n    class MyJunkyardConvinceMission: MyMission\n    {\n        #region EntityIDs\n\n        enum EntityID // list of IDs used in script\n        {\n            StartLocation = 131399,\n            SmugglerShip = 131460,\n            FindSmuggler = 215058,\n            FlyToEnemy = 218159,\n            GetCloserToMomo = 219214,\n            SP1_1 = 218102,\n            SP1_2 = 218103,\n            SP1_3 = 215497,\n            SP1_4 = 215498,\n            SP2_1 = 218118,\n            SP2_2 = 218119,\n            SP3_1 = 218121,\n            SP3_2 = 218120,\n            SP3_3 = 218122,\n            SP3_4 = 218123,\n            SP4_1 = 219223,\n            SP4_2 = 218124,\n            MomoZappaSP = 222239,\n            MomoGangMember1 = 1626,\n            MomoGangMember2 = 1599,\n            Smuggler = 156176,\n            SP_Find_1 = 218868,\n            SP_Find_2 = 218161,\n            SP_Find_3 = 218162,\n            Waypoint = 215041,\n            WaypointLast = 218520,\n            Waypointprelast = 167047,\n            SmugglerRunWaypoint = 167041,\n            BombDealer = 240252,\n            BombDealerDetector = 240251,\n            MarcusBRPosition = 240324,\n            TarjaInitialPosition = 20,\n            TarjaBRPosition = 240325,\n            GetToMarcus = 240326,\n            ValentinBRPosition = 264212,\n            BR_SP_Boss = 240342,\n            BR_SP_1 = 240328,\n            BR_SP_2 = 240339,\n            BR_SP_3 = 240340,\n            BR_SP_4 = 240341,\n            FlyToMS = 131401,\n            SmugglerStart = 264571,\n            ManjeetFinalPosition = 531508,\n            ManjeetFindDetector = 532570,\n\n            // cargo box IDs:\n            Ammo1 = 900,\n            Ammo2 = 903,\n            Repair1 = 901,\n            Repair2 = 902,\n        }\n\n        List<uint> m_mothershipsSetlowpriority = new List<uint>\n            {\n                215353,\n                215351,\n                130855,\n                131199,\n                131091,\n                5668,\n                130774,\n                131052,\n                130828,\n                5664\n            };\n\n        List<uint> m_killWavesSecond1 = new List<uint> { 545718, 545736 };\n        List<uint> m_killWavesSecond2 = new List<uint> { 16786676, 16786677, 545717, 545714 };\n        List<uint> m_killWavesSecond3 = new List<uint> { 16786734, 16786735, 545716, 545715 };\n        List<uint> m_killWavesSecond4 = new List<uint> { 16786733, 16786732, 16786737, 16786736, 16786738, 16786739 };\n\n        List<uint> m_spawns = new List<uint>\n            {\n                (uint) EntityID.BR_SP_1,\n                (uint) EntityID.BR_SP_2,\n                (uint) EntityID.BR_SP_3,\n                (uint) EntityID.BR_SP_4,\n                (uint) EntityID.BR_SP_Boss\n            };\n\n        private List<uint> m_firstWave = new List<uint>\n        {\n            (uint)EntityID.SP1_1, (uint)EntityID.SP1_2, (uint)EntityID.SP1_3, (uint)EntityID.SP1_4\n        };\n\n        public override void ValidateIds() // checks if all IDs in enum are loaded correctly\n        {\n            foreach (var value in Enum.GetValues(typeof (EntityID)))\n            {\n                MyScriptWrapper.GetEntity((uint) ((value as EntityID?).Value));\n            }\n            foreach (var value in m_mothershipsSetlowpriority)\n            {\n                MyScriptWrapper.GetEntity(value);\n            }\n        }\n\n        #endregion\n\n        #region Entities\n\n        MyEntity m_waypoint;\n        MyEntity m_waypointprelast;\n        MyEntity m_waypointlast;\n\n        MyObjective m_objective01FindInformator;\n        MyObjectiveDialog m_objective01BFindInformator;\n        MyObjective m_objective02FindSmuggler;\n        MyObjectiveDestroy m_objective03FightCompanions;\n        MyObjective m_objective04FollowSmuggler;\n        MyObjectiveDialog m_objective04DFollowSmuggler;\n        MyObjective m_objective05GetCloserToEnemy;\n        MyObjectiveDialog m_objective05MetZappasFirstGangman;\n        MyDestroyWavesObjective m_objective06KillWaves;\n        MyMeetObjective m_objective07SpeakWithMomo;\n        MyObjective m_objective07DSpeakWithMomo;\n        MyObjectiveDestroy m_objective08FightMomo;\n        MyObjective m_objective09ReturnToSmuggler;\n        MyObjectiveDialog m_objective09DReturnToSmuggler;\n        MyObjective m_objective10FindBombDealer;\n        MyObjectiveDialog m_objective10DFindBombDealer;\n        MyObjective m_objective11GetToMarcus;\n        MyDestroyWavesObjective m_objective12BrFight;\n        MyObjective m_objective13FlyToMS;\n\n        MySmallShipBot m_manjeet;\n        MySmallShipBot m_blackRavenBoss;\n        MySmallShipBot m_momoBoss;\n        MySmallShipBot m_marcus;\n        MySmallShipBot m_valentin;\n        MySmallShipBot m_tarja;\n\n        MyEntityDetector m_manjeetFindDetector;\n\n        #endregion\n\n        public MyJunkyardConvinceMission()\n        {\n            ID = MyMissionID.JUNKYARD_CONVINCE; /* ID must be added to MyMissions.cs */\n            Name = MyTextsWrapperEnum.JUNKYARD_CONVINCE;\n            Description = MyTextsWrapperEnum.JUNKYARD_CONVINCE_Description; //\"Convince the Smuggler to join you in your mission \\n\"\n            DebugName = new StringBuilder(\"08a-Junkyard\"); // Name of mission\n            Flags = MyMissionFlags.Story;\n            AchievementName = MySteamAchievementNames.Mission08_JunkyardDuncan;\n\n            MyMwcVector3Int baseSector = new MyMwcVector3Int(2567538,0,-172727); // Story sector of the script - i.e. (-2465,0,6541)\n            \n            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation); // Starting dummy point - must by typecasted to uint and referenced from EntityID enum\n\n            RequiredMissions = new MyMissionID[] { MyMissionID.LAST_HOPE }; // IDs of missions required to make this mission available\n            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.JUNKYARD_CONVINCE_RETURN_TO_MS };\n            RequiredActors = new MyActorEnum[] { MyActorEnum.MARCUS, MyActorEnum.MADELYN, };\n\n            #region Objectives\n            m_objectives = new List<MyObjective>(); // Creating of list of submissions\n\n            // ----- objectives -----\n\n            m_objective01FindInformator = new MyMeetObjective(\n                // One member of that list - its type defines the type of submission - MySubmission means fly to the dummypoint to success. Here it is var so you cannot call methods on it\n                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_FIND_INFORMATOR_Name),\n                // Name of the submission\n                MyMissionID.JUNKYARD_CONVINCE_FIND_INFORMATOR,\n                // ID of the submission - must be added to MyMissions.cs\n                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_FIND_INFORMATOR_Description),\n                // Description of the submission\n                this,\n                new MyMissionID[] { },\n                // ID of submissions required to make this submission available - it is clear so this submission is the starting submission\n                null,\n                \"RavenGirl\",\n                250,\n                1.00f,\n                startDialogueId:MyDialogueEnum.JUNKYARD_CONVINCE_0100_INTRODUCE\n                )\n                {\n                    // False means do not save game in that checkpoint\n                    SaveOnSuccess = false,\n                    FollowMe = false\n                };\n            m_objective01FindInformator.OnMissionLoaded += O01FindInformatorLoaded;\n            m_objectives.Add(m_objective01FindInformator);\n\n\n            m_objective01BFindInformator = new MyObjectiveDialog(\n                MyTextsWrapperEnum.JUNKYARD_CONVINCE_D_FIND_INFORMATOR_Name,\n                MyMissionID.JUNKYARD_CONVINCE_D_FIND_INFORMATOR,\n                MyTextsWrapperEnum.JUNKYARD_CONVINCE_D_FIND_INFORMATOR_Description,\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.JUNKYARD_CONVINCE_FIND_INFORMATOR },\n                dialogId: MyDialogueEnum.JUNKYARD_CONVINCE_0200_INFORMATOR\n                )\n                {\n                    SaveOnSuccess = false,\n                };\n            m_objective01BFindInformator.OnMissionLoaded += O01BFindInformatorLoaded;\n            m_objective01BFindInformator.OnMissionSuccess += O01BFindInformatorSuccess;\n            m_objectives.Add(m_objective01BFindInformator);\n\n            m_objective02FindSmuggler = new MyObjective(\n                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_FIND_SMUGGLER_Name),\n                MyMissionID.JUNKYARD_CONVINCE_FIND_SMUGGLER,\n                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_FIND_SMUGGLER_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.JUNKYARD_CONVINCE_D_FIND_INFORMATOR },\n                new MyMissionLocation(baseSector, (uint) EntityID.FindSmuggler) // ID of dummy point of checkpoint\n                )\n                {\n                    SaveOnSuccess = false,\n                    SuccessDialogId = MyDialogueEnum.JUNKYARD_CONVINCE_0300_RUN,\n                    HudName = MyTextsWrapperEnum.HudManjeet\n                };\n            m_objective02FindSmuggler.OnMissionLoaded += O02FindSmugglerLoaded;\n            m_objective02FindSmuggler.OnMissionSuccess += O2FindSmugglerSuccess;\n            m_objectives.Add(m_objective02FindSmuggler);\n\n            m_objective04FollowSmuggler = new MyMeetObjective(\n                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_FOLLOW_SMUGGLER_Name),\n                MyMissionID.JUNKYARD_CONVINCE_FOLLOW_SMUGGLER,\n                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_FOLLOW_SMUGGLER_Description),\n                this,\n                new MyMissionID[] { MyMissionID.JUNKYARD_CONVINCE_FIND_SMUGGLER },\n                null,\n                (uint) EntityID.Smuggler,\n                300,\n                1.00f\n                )\n                {\n                    SaveOnSuccess = false,\n                    FollowMe = false\n                };\n            m_objective04FollowSmuggler.OnMissionLoaded += O04FollowSmugglerLoaded;\n            m_objective04FollowSmuggler.OnMissionSuccess += O04FollowSmugglerSuccess;\n            m_objectives.Add(m_objective04FollowSmuggler);\n\n            m_objective04DFollowSmuggler = new MyObjectiveDialog(\n                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_D_FOLLOW_SMUGGLER_Name),\n                MyMissionID.JUNKYARD_CONVINCE_D_FOLLOW_SMUGGLER,\n                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_D_FOLLOW_SMUGGLER_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.JUNKYARD_CONVINCE_FOLLOW_SMUGGLER },\n                dialogId: MyDialogueEnum.JUNKYARD_CONVINCE_0500_CATCHED\n                ) { SaveOnSuccess = false, };\n            m_objectives.Add(m_objective04DFollowSmuggler);\n            m_objective04DFollowSmuggler.OnMissionLoaded += O04DFollowSmugglerLoaded;\n            m_objective04DFollowSmuggler.OnMissionSuccess += O04DFollowSmugglerSuccess;\n\n            m_objective05GetCloserToEnemy = new MyObjective(\n                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_FLY_TO_ENEMY_Name),\n                MyMissionID.JUNKYARD_CONVINCE_FLY_TO_ENEMY,\n                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_FLY_TO_ENEMY_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.JUNKYARD_CONVINCE_D_FOLLOW_SMUGGLER },\n                new MyMissionLocation(baseSector, (uint) EntityID.FlyToEnemy),\n                radiusOverride: 500f\n            ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.Nothing };\n            m_objective05GetCloserToEnemy.OnMissionLoaded += O05GetCloserToEnemyLoaded;\n            m_objectives.Add(m_objective05GetCloserToEnemy);\n\n            m_objective05MetZappasFirstGangman = new MyObjectiveDialog(\n                MyMissionID.JUNKYARD_CONVINCE_MEET_GANGMAN,\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.JUNKYARD_CONVINCE_FLY_TO_ENEMY },\n                dialogId: MyDialogueEnum.JUNKYARD_CONVINCE_0650_MET_ZAPPA_GUARD\n            );\n            m_objectives.Add(m_objective05MetZappasFirstGangman);\n            m_objective05MetZappasFirstGangman.OnMissionLoaded += O05MetZappasFirstGangmanLoaded;\n            m_objective05MetZappasFirstGangman.OnMissionSuccess += O05MetZappasFirstGangmanSuccess;\n\n            m_objective06KillWaves = new MyDestroyWavesObjective(\n                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_KILL_WAVES_Name),\n                MyMissionID.JUNKYARD_CONVINCE_KILL_WAVES,\n                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_KILL_WAVES_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.JUNKYARD_CONVINCE_MEET_GANGMAN },\n                null,\n                null,\n                null,\n                null,\n                4\n                ) { SaveOnSuccess = false };\n            m_objective06KillWaves.AddWave(new List<uint> {(uint)EntityID.SP1_1, (uint)EntityID.SP1_2, (uint)EntityID.SP1_3, (uint)EntityID.SP1_4});\n            m_objective06KillWaves.AddWave(new List<uint> {(uint)EntityID.SP2_1, (uint)EntityID.SP2_2});\n            m_objective06KillWaves.AddWave(new List<uint> { (uint)EntityID.SP3_1, (uint)EntityID.SP3_2, (uint)EntityID.SP3_3 });\n            m_objective06KillWaves.OnMissionLoaded += O06KillWavesLoaded;\n            m_objective06KillWaves.OnMissionSuccess += O06KillWavesSuccess;\n            m_objectives.Add(m_objective06KillWaves);\n\n            m_objective07SpeakWithMomo = new MyMeetObjective(\n                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_SPEAK_WITH_MOMO_Name),\n                MyMissionID.JUNKYARD_CONVINCE_SPEAK_WITH_MOMO,\n                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_SPEAK_WITH_MOMO_Description),\n                this,\n                new MyMissionID[] { MyMissionID.JUNKYARD_CONVINCE_KILL_WAVES },\n                null,\n                (uint?) null,\n                500,\n                1.00f\n                )\n                {\n                    SaveOnSuccess = false,\n                    FollowMe = false\n                };\n            m_objectives.Add(m_objective07SpeakWithMomo);\n\n            m_objective07DSpeakWithMomo = new MyObjectiveDialog(\n                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_D_SPEAK_WITH_MOMO_Name),\n                MyMissionID.JUNKYARD_CONVINCE_D_SPEAK_WITH_MOMO,\n                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_D_SPEAK_WITH_MOMO_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.JUNKYARD_CONVINCE_SPEAK_WITH_MOMO },\n                dialogId: MyDialogueEnum.JUNKYARD_CONVINCE_0900_THE_MOMO\n                ) { SaveOnSuccess = false };\n            m_objectives.Add(m_objective07DSpeakWithMomo);\n            m_objective07DSpeakWithMomo.OnMissionLoaded += O07DSpeakWithMomoLoaded;\n            m_objective07DSpeakWithMomo.OnMissionSuccess += O07DSpeakWithMomoSuccess;\n\n            m_objective08FightMomo = new MyObjectiveDestroy(\n                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_FIGHT_MOMO_Name),\n                MyMissionID.JUNKYARD_CONVINCE_FIGHT_MOMO,\n                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_FIGHT_MOMO_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.JUNKYARD_CONVINCE_D_SPEAK_WITH_MOMO },\n                null,\n                new List<uint> { (uint) EntityID.SP4_1, (uint) EntityID.SP4_2, (uint) EntityID.MomoZappaSP },\n                true\n                ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.Nothing };\n            m_objective08FightMomo.OnMissionLoaded += O08FightMomoLoaded;\n            m_objectives.Add(m_objective08FightMomo);\n\n            m_objective09ReturnToSmuggler = new MyMeetObjective(\n                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_RETURN_TO_SMUGGLER_Name),\n                MyMissionID.JUNKYARD_CONVINCE_RETURN_TO_SMUGGLER,\n                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_RETURN_TO_SMUGGLER_Description),\n                this,\n                new MyMissionID[] { MyMissionID.JUNKYARD_CONVINCE_FIGHT_MOMO },\n                null,\n                (uint) EntityID.Smuggler,\n                300,\n                1.00f\n                //startDialogueId: MyDialogueEnum.JUNKYARD_CONVINCE_1000_LAST_OF_THEM\n                ) { SaveOnSuccess = true, FollowMe = false };\n            m_objective09ReturnToSmuggler.OnMissionLoaded += O09ReturnToSmugglerLoaded;\n            m_objectives.Add(m_objective09ReturnToSmuggler);\n\n            m_objective09DReturnToSmuggler = new MyObjectiveDialog(\n                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_D_RETURN_TO_SMUGGLER_Name),\n                MyMissionID.JUNKYARD_CONVINCE_D_RETURN_TO_SMUGGLER,\n                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_D_RETURN_TO_SMUGGLER_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.JUNKYARD_CONVINCE_RETURN_TO_SMUGGLER },\n                dialogId: MyDialogueEnum.JUNKYARD_CONVINCE_1100_FIGHT_ENDS\n            ) { SaveOnSuccess = false };\n            m_objectives.Add(m_objective09DReturnToSmuggler);\n            m_objective09DReturnToSmuggler.OnMissionLoaded += O09DReturnToSmugglerLoaded;\n            m_objective09DReturnToSmuggler.OnMissionSuccess += O09DReturnToSmugglerSuccess;\n\n            m_objective10FindBombDealer = new MyMeetObjective(\n                // One member of that list - its type defines the type of submission - MySubmission means fly to the dummypoint to success. Here it is var so you cannot call methods on it\n                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_GO_TO_BOMB_DEALER_Name),\n                // Name of the submission\n                MyMissionID.JUNKYARD_CONVINCE_GO_TO_BOMB_DEALER,\n                // ID of the submission - must be added to MyMissions.cs\n                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_GO_TO_BOMB_DEALER_Description),\n                // Description of the submission\n                this,\n                new MyMissionID[] { MyMissionID.JUNKYARD_CONVINCE_D_RETURN_TO_SMUGGLER },\n                // ID of submissions required to make this submission available - it is clear so this submission is the starting submission\n                null,\n                (uint) EntityID.BombDealer,\n                300,\n                1.00f\n                )\n                {\n                    SaveOnSuccess = false,\n                    RequiredActors = new MyActorEnum[] { MyActorEnum.TARJA, MyActorEnum.VALENTIN },\n                    FollowMe = false\n                };\n            m_objective10FindBombDealer.OnMissionLoaded += O10FindBombDealerLoaded;\n            m_objectives.Add(m_objective10FindBombDealer);\n\n            m_objective10DFindBombDealer = new MyObjectiveDialog(\n                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_D_GO_TO_BOMB_DEALER_Name),\n                MyMissionID.JUNKYARD_CONVINCE_D_GO_TO_BOMB_DEALER,\n                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_D_GO_TO_BOMB_DEALER_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.JUNKYARD_CONVINCE_GO_TO_BOMB_DEALER},\n                dialogId: MyDialogueEnum.JUNKYARD_CONVINCE_1300_BOMB_DEALER\n            ) { SaveOnSuccess = false };\n            m_objectives.Add(m_objective10DFindBombDealer);\n            m_objective10DFindBombDealer.OnMissionLoaded += O10DFindBombDealerLoaded;\n            m_objective10DFindBombDealer.OnMissionSuccess += O10DFindBombDealerSuccess;\n\n            m_objective11GetToMarcus = new MyMeetObjective(\n                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_GO_TO_MARCUS_Name),\n                MyMissionID.JUNKYARD_CONVINCE_GO_TO_MARCUS,\n                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_GO_TO_MARCUS_Description),\n                this,\n                new MyMissionID[] { MyMissionID.JUNKYARD_CONVINCE_D_GO_TO_BOMB_DEALER },\n                null,\n                \"Marcus\",\n                300,\n                1.00f\n                )\n                {\n                    SaveOnSuccess = true,\n                    FollowMe = false,\n                };\n            m_objective11GetToMarcus.OnMissionLoaded += O11GetToMarcusLoaded;\n            m_objective11GetToMarcus.OnMissionSuccess += O11GetToMarcusSuccess;\n            m_objectives.Add(m_objective11GetToMarcus);\n\n            var objective11DGetToMarcus = new MyObjectiveDialog(\n                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_D_GO_TO_MARCUS_Name),\n                MyMissionID.JUNKYARD_CONVINCE_D_GO_TO_MARCUS,\n                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_D_GO_TO_MARCUS_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.JUNKYARD_CONVINCE_GO_TO_MARCUS },\n                dialogId: MyDialogueEnum.JUNKYARD_CONVINCE_1400_ARRIVED_AT_MARCUS\n                ) { SaveOnSuccess = false };\n            m_objectives.Add(objective11DGetToMarcus);\n\n            m_objective12BrFight = new MyDestroyWavesObjective(\n                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_BR_FIGHT_Name),\n                MyMissionID.JUNKYARD_CONVINCE_BR_FIGHT,\n                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_BR_FIGHT_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.JUNKYARD_CONVINCE_D_GO_TO_MARCUS },\n                new List<uint>\n                    {\n                        (uint) EntityID.BR_SP_1,\n                        (uint) EntityID.BR_SP_2,\n                        (uint) EntityID.BR_SP_3,\n                        (uint) EntityID.BR_SP_4,\n                        (uint) EntityID.BR_SP_Boss\n                    }\n                )\n                {\n                    SaveOnSuccess = false,\n                    StartDialogId = MyDialogueEnum.JUNKYARD_CONVINCE_1500_GANGSTER_FIGHT_STARTED,\n                    SuccessDialogId = MyDialogueEnum.JUNKYARD_CONVINCE_1600_GO_TO_MS\n                };\n            m_objective12BrFight.OnMissionLoaded += O12BRFightLoaded;\n            m_objective12BrFight.OnMissionSuccess += O12BRFightSuccess;\n            m_objective12BrFight.AddWave(m_killWavesSecond1);\n            m_objective12BrFight.AddWave(m_killWavesSecond2);\n            m_objective12BrFight.AddWave(m_killWavesSecond3);\n            m_objective12BrFight.AddWave(m_killWavesSecond4);\n            m_objectives.Add(m_objective12BrFight);\n\n            m_objective13FlyToMS = new MyObjective(\n                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_RETURN_TO_MS_Name),\n                MyMissionID.JUNKYARD_CONVINCE_RETURN_TO_MS,\n                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_RETURN_TO_MS_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.JUNKYARD_CONVINCE_BR_FIGHT },\n                new MyMissionLocation(baseSector, MyMissionLocation.MADELYN_HANGAR),\n                radiusOverride: 300f\n                )\n                {\n                    SaveOnSuccess = true,\n                    SuccessDialogId = MyDialogueEnum.JUNKYARD_CONVINCE_1700_FINALE,\n                    HudName = MyTextsWrapperEnum.HudMadelynsSapho\n                };\n            m_objectives.Add(m_objective13FlyToMS);\n            #endregion      \n\n            m_spawns.AddRange(m_killWavesSecond1);\n            m_spawns.AddRange(m_killWavesSecond2);\n            m_spawns.AddRange(m_killWavesSecond3);\n            m_spawns.AddRange(m_killWavesSecond4);\n        }\n\n\n        // Code in that block will be called on the load of the sector\n        public override void Load()\n        {\n            foreach (var item in m_mothershipsSetlowpriority)\n            {\n                MyScriptWrapper.SetEntityPriority(MyScriptWrapper.GetEntity(item),-1);\n            }\n            \n            MyScriptWrapper.HideEntity(MyScriptWrapper.GetEntity((uint)EntityID.BombDealer));\n\n            m_manjeet = (MySmallShipBot) MyScriptWrapper.GetEntity((uint) EntityID.Smuggler);\n            m_marcus = (MySmallShipBot)MyScriptWrapper.GetEntity(\"Marcus\");\n            m_tarja = MyScriptWrapper.InsertFriend(MyActorEnum.TARJA);\n            MyScriptWrapper.SetEntityDisplayName(m_tarja, MyTextsWrapper.Get(MyTextsWrapperEnum.Actor_SmugglerInformator).ToString());\n\n            m_waypoint = MyScriptWrapper.GetEntity((uint)EntityID.Waypoint);\n            m_waypointlast = MyScriptWrapper.GetEntity((uint)EntityID.WaypointLast);\n            m_waypointprelast = MyScriptWrapper.GetEntity((uint)EntityID.Waypointprelast);\n\n            m_manjeetFindDetector = MyScriptWrapper.GetDetector(MyScriptWrapper.GetEntity((uint)EntityID.ManjeetFindDetector));\n\n            m_momoBoss = MyScriptWrapper.TryGetEntity(\"Momo\") as MySmallShipBot;\n\n            base.Load();\n        }\n\n        public override void Unload()\n        {\n            base.Unload();\n\n            m_manjeet = null;\n            m_marcus = null;\n            m_tarja = null;\n            \n            m_waypoint = null;\n            m_waypointlast = null;\n            m_waypointprelast = null;\n\n            m_manjeetFindDetector = null;\n\n            MyScriptWrapper.OnSpawnpointBotSpawned -= OnSpawnpointBotSpawned;\n        }\n\n        #region OnMissionLoaded\n\n        void O01FindInformatorLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.StopFollow(m_tarja);\n            MyScriptWrapper.Move(m_tarja, MyScriptWrapper.GetEntity((uint)EntityID.TarjaInitialPosition).GetPosition());\n            MyScriptWrapper.Move(m_manjeet, MyScriptWrapper.GetEntity((uint)EntityID.SmugglerStart).GetPosition());\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.CalmAtmosphere, 1, \"KA02\");\n            MyScriptWrapper.HideEntity(m_manjeet);\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SP_Find_1);\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SP_Find_2);\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SP_Find_3);\n        }\n\n        void O01BFindInformatorLoaded(MyMissionBase sender)\n        {\n            m_tarja.LookTarget = MySession.PlayerShip;\n            MyScriptWrapper.SetEntityDisplayName(m_tarja, MyTextsWrapper.Get(MyTextsWrapperEnum.Actor_Tarja).ToString());\n        }\n\n        void O02FindSmugglerLoaded(MyMissionBase sender)\n        {\n        }\n\n        void O04FollowSmugglerLoaded(MyMissionBase sender)\n        {\n            m_manjeetFindDetector.OnEntityEnter -= ManjeetFound;\n            m_manjeetFindDetector.Off();\n            m_manjeet.SetWaypointPath(\"SmugglerRun\");\n            m_manjeet.PatrolMode = MyPatrolMode.ONE_WAY;\n            m_manjeet.Patrol();\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.StressOrTimeRush, 3, \"MM01\");\n        }\n\n        void O04DFollowSmugglerLoaded(MyMissionBase sender)\n        {\n            m_manjeet.LookTarget = MySession.PlayerShip;\n        }\n\n        void O05GetCloserToEnemyLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.StopTransition(3);\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.DesperateWithStress, 1, \"KA01\");\n            //smuggler.SetWaypointPath(\"SmugglerRun2\");\n            m_manjeet.PatrolMode = MyPatrolMode.ONE_WAY;\n            m_manjeet.Patrol();\n            m_manjeet.LookTarget = null;\n            MissionTimer.RegisterTimerAction(10000, StartPathDialogue, false);\n        }\n\n        void O05MetZappasFirstGangmanLoaded(MyMissionBase sender)\n        {\n            foreach (var spawn in new List<uint> { (uint)EntityID.MomoGangMember1, (uint)EntityID.MomoGangMember2 })\n            {\n                var entity = MyScriptWrapper.GetEntity(spawn) as MySmallShipBot;\n                if (entity != null) entity.LookTarget = MySession.PlayerShip;\n            }\n        }\n\n        void O06KillWavesLoaded(MyMissionBase sender)\n        {\n            //MyScriptWrapper.PlayDialogue(MyDialogueEnum.JUNKYARD_CONVINCE_0700_ALMOST_THERE);\n            m_manjeet.Idle();\n            m_manjeet.SetWorldMatrix(MyScriptWrapper.GetEntity((uint)EntityID.ManjeetFinalPosition).WorldMatrix);\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.LightFight, 3, \"MM01\");\n            MyScriptWrapper.OnSpawnpointBotSpawned += OnSpawnpointBotSpawned;\n        }\n\n        void O07DSpeakWithMomoLoaded(MyMissionBase sender)\n        {\n            m_momoBoss.LookTarget = MySession.PlayerShip;\n            foreach (var spawn in new List<uint> { (uint)EntityID.SP4_1, (uint)EntityID.SP4_2, (uint)EntityID.MomoZappaSP })\n            {\n                MyScriptWrapper.ChangeFaction(spawn, MyMwcObjectBuilder_FactionEnum.Slavers);\n                foreach (var bot in MyScriptWrapper.GetSpawnPointBots(spawn))\n                {\n                    MyScriptWrapper.SetEntityDestructible(bot.Ship, true);\n                    MyScriptWrapper.ChangeFaction(bot.Ship, MyMwcObjectBuilder_FactionEnum.Slavers);\n                }\n            }\n        }\n\n        void O08FightMomoLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.LightFight, 3, \"KA07\");\n        }\n\n        void O09ReturnToSmugglerLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.StopTransition(3);\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.Victory, 1, \"KA02\");\n        }\n\n        void O09DReturnToSmugglerLoaded(MyMissionBase sender)\n        {\n            m_manjeet.LookTarget = MySession.PlayerShip;\n        }\n\n        void O10FindBombDealerLoaded(MyMissionBase sender)\n        {\n            m_manjeet.LookTarget = null;\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.Special, 1, \"MM01\");\n            MyScriptWrapper.SetSleepDistance(m_marcus, 5000);\n            MyScriptWrapper.StopFollow(m_marcus);\n            m_marcus.SetWaypointPath(\"MarcusOut\");\n            m_marcus.SpeedModifier = 2.0f;\n            MyScriptWrapper.AddNotification(MyScriptWrapper.CreateNotification(MyTextsWrapperEnum.MarcusIsLeavingForTarja, MyGuiManager.GetFontMinerWarsGreen(), 5000));\n            m_marcus.PatrolMode = MyPatrolMode.ONE_WAY;\n            m_marcus.Patrol();\n\n            m_valentin = (MySmallShipBot) MyScriptWrapper.GetEntity(\"RavenGuy\");\n            m_valentin.LeaderLostEnabled = true;\n            MyScriptWrapper.MarkEntity(m_valentin, MyTextsWrapper.Get(MyActorConstants.GetActorDisplayName(MyActorEnum.VALENTIN)).ToString(), HUD.MyHudIndicatorFlagsEnum.SHOW_DISTANCE | HUD.MyHudIndicatorFlagsEnum.SHOW_ONLY_IF_DETECTED_BY_RADAR | HUD.MyHudIndicatorFlagsEnum.SHOW_TEXT | HUD.MyHudIndicatorFlagsEnum.SHOW_BORDER_INDICATORS, HUD.MyGuitargetMode.Friend);\n            MyScriptWrapper.StopFollow(m_valentin);\n            MyEntity valentinPosition = MyScriptWrapper.GetEntity((uint)EntityID.ValentinBRPosition);\n            m_valentin.SetWorldMatrix(valentinPosition.WorldMatrix);\n\n            m_tarja.LeaderLostEnabled = true;\n            MyScriptWrapper.StopFollow(m_tarja);\n            MyScriptWrapper.MarkEntity(m_tarja, MyTextsWrapper.Get(MyActorConstants.GetActorDisplayName(MyActorEnum.TARJA)).ToString(), HUD.MyHudIndicatorFlagsEnum.SHOW_DISTANCE | HUD.MyHudIndicatorFlagsEnum.SHOW_ONLY_IF_DETECTED_BY_RADAR | HUD.MyHudIndicatorFlagsEnum.SHOW_TEXT | HUD.MyHudIndicatorFlagsEnum.SHOW_BORDER_INDICATORS, HUD.MyGuitargetMode.Friend);\n            MyEntity tarjaPosition = MyScriptWrapper.GetEntity((uint)EntityID.TarjaBRPosition);\n            m_tarja.SetWorldMatrix(tarjaPosition.WorldMatrix);\n            MyScriptWrapper.SetEntityDisplayName(m_tarja, MyTextsWrapper.Get(MyTextsWrapperEnum.Actor_Tarja).ToString());\n            \n            MyScriptWrapper.UnhideEntity(MyScriptWrapper.GetEntity((uint)EntityID.BombDealer));\n        }\n\n        void O10DFindBombDealerLoaded(MyMissionBase sender)\n        {\n            MySmallShipBot bombDealer = (MySmallShipBot)MyScriptWrapper.GetEntity((uint)EntityID.BombDealer);\n            bombDealer.LookTarget = MySession.PlayerShip;\n        }\n\n        void O11GetToMarcusLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.BR_SP_Boss);\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.TensionBeforeAnAction, 1, \"MM01\");\n        }\n\n        void O12BRFightLoaded(MyMissionBase sender)\n        {\n            m_valentin = (MySmallShipBot) MyScriptWrapper.GetEntity(\"RavenGuy\");\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.HeavyFight, 3, \"KA03\");\n            MyScriptWrapper.Follow(MySession.PlayerShip, m_marcus);\n            MyScriptWrapper.Follow(MySession.PlayerShip, m_tarja);\n            MyScriptWrapper.Follow(MySession.PlayerShip, m_valentin);\n            m_marcus.SpeedModifier = 1.0f;\n\n            MyScriptWrapper.ChangeFaction((uint)EntityID.BR_SP_Boss, MyMwcObjectBuilder_FactionEnum.Slavers);\n            foreach (var bot in MyScriptWrapper.GetSpawnPointBots((uint)EntityID.BR_SP_Boss))\n            {\n                if (bot.Ship != null)\n                {\n                    MyScriptWrapper.SetEntityDestructible(bot.Ship, true);\n                    MyScriptWrapper.ChangeFaction(bot.Ship, MyMwcObjectBuilder_FactionEnum.Slavers);\n                }\n            }\n\n            foreach (var spawn in m_spawns)\n            {\n                MyScriptWrapper.ChangeFaction(spawn, MyMwcObjectBuilder_FactionEnum.Slavers);\n                foreach (var bot in MyScriptWrapper.GetSpawnPointBots(spawn))\n                {\n                    if (bot.Ship != null)\n                    {\n                        MyScriptWrapper.SetEntityDestructible(bot.Ship, true);\n                        MyScriptWrapper.ChangeFaction(bot.Ship, MyMwcObjectBuilder_FactionEnum.Slavers);\n                    }\n                }\n            }\n        }\n\n        #endregion\n\n        #region OnMissionSuccess\n\n        void O01BFindInformatorSuccess(MyMissionBase sender)\n        {\n            m_tarja.LookTarget = null;\n            m_manjeetFindDetector.OnEntityEnter += ManjeetFound;\n            m_manjeetFindDetector.On();\n            MyScriptWrapper.UnhideEntity(m_manjeet);\n            MyScriptWrapper.SetEntityPriority(m_manjeet, -1);\n            m_manjeet.SpeedModifier = 1.25f;\n        }\n\n        void O2FindSmugglerSuccess(MyMissionBase sender)\n        {\n            foreach (var spawn in new List<uint> { (uint)EntityID.SP_Find_1, (uint)EntityID.SP_Find_2, (uint)EntityID.SP_Find_3 })\n            {\n                MyScriptWrapper.ChangeFaction(spawn, MyMwcObjectBuilder_FactionEnum.Slavers);\n                foreach (var bot in MyScriptWrapper.GetSpawnPointBots(spawn))\n                {\n                    if (bot.Ship != null)\n                    {\n                        MyScriptWrapper.SetEntityDestructible(bot.Ship, true);\n                        MyScriptWrapper.ChangeFaction(bot.Ship, MyMwcObjectBuilder_FactionEnum.Slavers);\n                    }\n                }\n            }\n        }\n\n        void O04FollowSmugglerSuccess(MyMissionBase sender)\n        {\n            MyScriptWrapper.StopTransition(3);\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.CalmAtmosphere, 1, \"KA03\");\n\n            foreach (var spawn in new List<uint> { (uint)EntityID.SP_Find_1, (uint)EntityID.SP_Find_2, (uint)EntityID.SP_Find_3 })\n            {\n                MyScriptWrapper.ChangeFaction(spawn, MyMwcObjectBuilder_FactionEnum.Slavers);\n                foreach (var bot in MyScriptWrapper.GetSpawnPointBots(spawn))\n                {\n                    if (bot.Ship != null)\n                    {\n                        MyScriptWrapper.ChangeFaction(bot.Ship, MyMwcObjectBuilder_FactionEnum.Traders);\n                    }\n                }\n            }\n\n            m_manjeet.Idle();\n\n            foreach (var spawn in new List<uint> { (uint)EntityID.MomoGangMember1, (uint)EntityID.MomoGangMember2 })\n            {\n                MyScriptWrapper.UnhideEntity(MyScriptWrapper.GetEntity(spawn));\n            }\n        }\n\n        void O04DFollowSmugglerSuccess(MyMissionBase sender)\n        {\n            m_manjeet.LookTarget = null;\n        }\n\n        void O05MetZappasFirstGangmanSuccess(MyMissionBase sender)\n        {\n            foreach (var spawn in new List<uint> { (uint)EntityID.MomoGangMember1, (uint)EntityID.MomoGangMember2 })\n            {\n                var entity = MyScriptWrapper.GetEntity(spawn) as MySmallShipBot;\n                if (entity != null) entity.LookTarget = null;\n                MyScriptWrapper.ChangeFaction(entity, MyMwcObjectBuilder_FactionEnum.Slavers);\n            }\n        }\n\n        void O06KillWavesSuccess(MyMissionBase sender)\n        {\n            //MyScriptWrapper.PlayDialogue(MyDialogueEnum.JUNKYARD_CONVINCE_0800_MOMO_ARRIVE);\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.MomoZappaSP);\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.TensionBeforeAnAction, 3, \"KA02\");\n        }\n\n        void O07DSpeakWithMomoSuccess(MyMissionBase sender)\n        {\n            m_momoBoss.LookTarget = null;\n        }\n\n        void O09DReturnToSmugglerSuccess(MyMissionBase sender)\n        {\n            m_manjeet.LookTarget = null;\n        }\n\n        void O10DFindBombDealerSuccess(MyMissionBase sender)\n        {\n            MySmallShipBot bombDealer = (MySmallShipBot)MyScriptWrapper.GetEntity((uint)EntityID.BombDealer);\n            bombDealer.LookTarget = null;\n        }\n\n        void O11GetToMarcusSuccess(MyMissionBase sender)\n        {\n            MyScriptWrapper.MarkEntity(m_valentin, MyTextsWrapper.Get(MyActorConstants.GetActorDisplayName(MyActorEnum.VALENTIN)).ToString(), HUD.MyHudIndicatorFlagsEnum.SHOW_DISTANCE | HUD.MyHudIndicatorFlagsEnum.SHOW_TEXT | HUD.MyHudIndicatorFlagsEnum.SHOW_TEXT | HUD.MyHudIndicatorFlagsEnum.SHOW_HEALTH_BARS, HUD.MyGuitargetMode.Friend);\n            MyScriptWrapper.MarkEntity(m_tarja, MyTextsWrapper.Get(MyActorConstants.GetActorDisplayName(MyActorEnum.TARJA)).ToString(), HUD.MyHudIndicatorFlagsEnum.SHOW_DISTANCE | HUD.MyHudIndicatorFlagsEnum.SHOW_TEXT | HUD.MyHudIndicatorFlagsEnum.SHOW_TEXT | HUD.MyHudIndicatorFlagsEnum.SHOW_HEALTH_BARS, HUD.MyGuitargetMode.Friend);\n        }\n\n        static void O12BRFightSuccess(MyMissionBase sender)\n        {\n            MyScriptWrapper.StopTransition(3);\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.Victory, 1, \"KA01\");\n        }\n\n        #endregion\n\n        #region General Events\n\n        void OnSpawnpointBotSpawned(MyEntity spawnpoint, MyEntity spawnedBot)\n        {\n            foreach (var sp in m_firstWave)\n            {\n                if (spawnpoint == MyScriptWrapper.GetEntity(sp))\n                {\n                    MyScriptWrapper.SetSleepDistance(spawnedBot, 3000);\n                }\n            }\n\n            foreach (var item in new List<uint> { (uint)EntityID.SP4_1, (uint)EntityID.SP4_2 })\n            {\n                if (spawnpoint.EntityId.Value.NumericValue == item)\n                {\n                    MyScriptWrapper.StopFollow(spawnedBot);\n                    if (m_momoBoss != null)\n                    {\n                        MyScriptWrapper.SetEntityDestructible(spawnedBot, false);\n                        MyScriptWrapper.Follow(m_momoBoss, spawnedBot);\n                        MyScriptWrapper.SetSleepDistance(spawnedBot, 3000);\n                    }\n                    else\n                    {\n                        Debug.Assert(true, \"Boss entity is null. Cannot identify leader\");\n                    }\n                }\n            }\n\n            if (spawnpoint == MyScriptWrapper.GetEntity((uint)EntityID.MomoZappaSP))\n            {\n                spawnedBot.SetName(\"Momo\");\n                spawnedBot.DisplayName = MyTexts.MomoZappa;\n                m_momoBoss = (MySmallShipBot) spawnedBot;\n                m_objective07SpeakWithMomo.BotToTalkId = MyScriptWrapper.GetEntityId(m_momoBoss);\n                MyScriptWrapper.SetEntityDestructible(m_momoBoss, false);\n                m_momoBoss.LookTarget = MySession.PlayerShip;\n                m_momoBoss.Health = m_momoBoss.MaxHealth = 1000;\n                MyScriptWrapper.SetSleepDistance(spawnedBot, 3000);\n                MyScriptWrapper.ActivateSpawnPoint((uint) EntityID.SP4_1);\n                MyScriptWrapper.ActivateSpawnPoint((uint) EntityID.SP4_2);\n            }\n\n            if (spawnpoint == MyScriptWrapper.GetEntity((uint)EntityID.BR_SP_Boss))\n            {\n                spawnedBot.DisplayName = MyTexts.GangsterBoss;\n                m_blackRavenBoss = (MySmallShipBot)spawnedBot;\n                MyScriptWrapper.SetEntityDestructible(m_blackRavenBoss, false);\n                MyScriptWrapper.ChangeFaction(m_blackRavenBoss, MyMwcObjectBuilder_FactionEnum.Traders);\n                m_blackRavenBoss.LookTarget = MySession.PlayerShip;\n                m_blackRavenBoss.Health = m_blackRavenBoss.MaxHealth = 500;\n                MyScriptWrapper.SetSleepDistance(spawnedBot, 5000);\n\n                m_blackRavenBoss.OnDie += OnGangsterBossDied;\n\n                foreach (var item in new List<uint>\n                    {\n                        (uint) EntityID.BR_SP_1,\n                        (uint) EntityID.BR_SP_2,\n                        (uint) EntityID.BR_SP_3,\n                        (uint) EntityID.BR_SP_4,\n                        (uint) EntityID.BR_SP_Boss\n                    })\n                {\n                    MyScriptWrapper.ActivateSpawnPoint(item);\n                }\n            }\n\n            foreach (var item in m_spawns)\n            {\n                if (spawnpoint == MyScriptWrapper.GetEntity(item) && spawnedBot != m_blackRavenBoss)\n                {\n                    MyScriptWrapper.SetSleepDistance(spawnedBot, 5000);\n                    if (m_blackRavenBoss != null && !m_blackRavenBoss.Closed)\n                    {\n                        if (ActiveObjectives.Contains(m_objective12BrFight))\n                        {\n                            MyScriptWrapper.SetEntityDestructible(spawnedBot, true);\n                            MyScriptWrapper.ChangeFaction(spawnedBot, MyMwcObjectBuilder_FactionEnum.Slavers);\n                        }\n                        else\n                        {\n                            MyScriptWrapper.SetEntityDestructible(spawnedBot, false);\n                            MyScriptWrapper.ChangeFaction(spawnedBot, MyMwcObjectBuilder_FactionEnum.Traders);\n                        }\n                        MyScriptWrapper.Follow(m_blackRavenBoss, spawnedBot);\n                    }\n                    else\n                    {\n                        MyScriptWrapper.SetEntityDestructible(spawnedBot, true);\n                        MyScriptWrapper.ChangeFaction(spawnedBot, MyMwcObjectBuilder_FactionEnum.Slavers);\n                        ((MySmallShipBot)spawnedBot).Attack(MySession.PlayerShip);\n                    }\n                }\n            }\n        }\n\n        void OnGangsterBossDied(MyEntity entity, MyEntity killer)\n        {\n            foreach (var bot in m_blackRavenBoss.Followers)\n            {\n                bot.Attack(MySession.PlayerShip);\n            }\n        }\n\n        void ManjeetFound(MyEntityDetector sender, MyEntity bot, int meetcriterias)\n        {\n            if (sender == m_manjeetFindDetector && bot == MySession.PlayerShip && m_objective01BFindInformator.IsAvailable())\n            {\n                m_objective01BFindInformator.Success();\n                m_objective02FindSmuggler.Success();\n            }\n        }\n\n        void StartPathDialogue()\n        {\n            MyScriptWrapper.PlayDialogue(MyDialogueEnum.JUNKYARD_CONVINCE_0600_BEFORE_FIGHT);\n        }\n\n        #endregion\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/SinglePlayer/MyJunkyardEACAmbushMission.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Audio.Dialogues;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Entities.Ships.AI;\nusing MinerWars.AppCode.Game.Entities.SubObjects;\nusing MinerWars.AppCode.Game.Missions.Components;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Entities.InfluenceSpheres;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Missions.Objectives;\n\n\nnamespace MinerWars.AppCode.Game.Missions.SinglePlayer\n{\n    class MyJunkyardEACAmbushMission : MyMission\n    {\n\n        #region Fields\n        private MyObjectiveDialog m_defendMadelyn;\n        private MyObjective m_speakWithPolice;\n        private MyObjective m_backToMadelyn;\n        private MyObjective m_defendMadelyn2;\n\n        private MySmallShipBot m_ravenGuy;\n        private MySmallShipBot m_ravenGirl;\n        private MySmallShipBot m_marcus;\n        private MyEntity m_madelyn;\n        private int m_activeTurret = 0;\n        private MyPrefabLargeWeapon[] m_madelynTurrets;\n        private bool m_speakWithPoliceDialogueFinished;\n        private bool m_marcusForCrashDialoguePlayed;\n        private float m_gameVolume;\n\n        private readonly List<uint> m_barricadeSpawns = new List<uint>() { 535965, 535921, 535966, 535967, 535968, 535970, 535969};\n        private readonly List<uint> m_barricadeLoomers = new List<uint>() { 1650, 1652, 1653 };\n        private readonly List<uint> m_barricadeHeavies = new List<uint>() { 1588 };\n        private readonly List<uint> m_barricadeElites = new List<uint>() { 1673, 1670 };\n        private readonly List<uint> m_particlesMarcus = new List<uint>() { 535475, 535474, 535473 };\n        private readonly List<uint> m_particlesApollo = new List<uint>() { 535468, 535469, 535190 };\n                 \n        private readonly List<uint> m_wavesApolloSpawns = new List<uint>() { 536782 };\n        private readonly List<uint> m_wavesMarcusSpawns = new List<uint>() { 536780 };\n\n        private readonly uint[] m_spawns = { 535965, 535921, 535966, 535967, 535968, 535970, 535969, 1650, 1652, 1653, 1588, 1673, 1670, 536782, 536780 };\n\n        private readonly List<uint> m_particlesExplosion1 = new List<uint>() {536879, 536875, 536884};\n        private readonly List<uint>\tm_particlesExplosion2= new List<uint>() { 536878, 536876, 536881};\n        private readonly List<uint>\tm_particlesExplosion3= new List<uint>() { 537002, 537003, 537004};\n        private readonly List<uint>\tm_particlesExplosion4= new List<uint>() { 536880, 536882, 536883, 536877};\n        private readonly List<uint>\tm_particlesExplosion5= new List<uint>() { 536888, 536887, 536886, 536885, 536889};\n        private readonly List<uint> m_particlesExplosion2_2 = new List<uint>() { 16779458, 16779459, 16779460, 16779500 };\n        private readonly List<uint> m_particlesExplosion4_2 = new List<uint>() { 16779501, 16779504 };\n        private readonly List<uint> m_particlesExplosion4_2_Destroy = new List<uint>() { 16779502, 16779503 };\n\n        private Vector3 m_generatorPosition;\n\n        private bool m_generatorAttacked = false;\n\n        #endregion\n\n        #region EntityIDs\n        private enum EntityID // list of IDs used in sScript\n        {\n            FlyToManjeet = 156176,\n            GoBackToMadelyn = 536812,\n            DestroyGenerator = 534691,\n            ReturnToMadelyn = 536854,\n            WaypointFinalVitolinoRetreat = 536861,\n            WaypointFinalMarcusRetreat = 536855,\n            PlayerStart = 538082,\n            MadelynStart = 538055,\n            EACMothershipContainer1 = 50,\n            EACMothershipContainer2 = 533595,\n            WarSound = 1621,\n        }\n\n        public override void ValidateIds() // checks if all IDs in enum are loaded correctly\n        {\n            foreach (var value in Enum.GetValues(typeof(EntityID)))\n            {\n                MyScriptWrapper.GetEntity((uint)(((EntityID?) value).Value));\n            }\n        }\n        #endregion\n\n        public MyJunkyardEACAmbushMission()\n        {\n            ID = MyMissionID.JUNKYARD_EAC_AMBUSH; /* ID must be added to MyMissions.cs */\n            DebugName = new StringBuilder(\"13-EAC ambush\"); // Name of mission\n            Name = MyTextsWrapperEnum.JUNKYARD_EAC_AMBUSH;\n            Description = MyTextsWrapperEnum.JUNKYARD_EAC_AMBUSH_Description;\n            Flags = MyMissionFlags.Story;\n            RequiredActors = new MyActorEnum[] { MyActorEnum.MADELYN, MyActorEnum.MARCUS, MyActorEnum.TARJA, MyActorEnum.VALENTIN };\n            MyMwcVector3Int baseSector = new MyMwcVector3Int(2567538, 0, -172727); // Story sector of the script - i.e. (-2465,0,6541)\n\n            Location = new MyMissionLocation(baseSector, (uint)EntityID.PlayerStart); // Starting dummy point - must by typecasted to uint and referenced from EntityID enum\n\n            RequiredMissions = new MyMissionID[] { MyMissionID.RESEARCH_VESSEL }; // IDs of missions required to make this mission available\n            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.JUNKYARD_EAC_AMBUSH_DEFEND_MADELYN };\n\n            Components.Add(new MySpawnpointLimiter(m_spawns, 7));\n\n            #region Objectives\n            m_objectives = new List<MyObjective>(); // Creating of list of submissions\n            var flyToManjeet = new MyMeetObjective(\n                MyTextsWrapperEnum.EAC_AMBUSH_FLY_TO_MANJEET,\n                MyMissionID.JUNKYARD_EAC_AMBUSH_FLY_MANJEET,\n                MyTextsWrapperEnum.EAC_AMBUSH_FLY_TO_MANJEET_DESC,\n                this,\n                new MyMissionID[] { },\n                null,\n                (uint)EntityID.FlyToManjeet,\n                100,\n                0.25f,\n                null,\n                MyDialogueEnum.EAC_AMBUSH_0100_INTRO\n                ) { SaveOnSuccess = false, FollowMe = false };\n            flyToManjeet.OnMissionLoaded += FlyToManjeet_Loaded;\n            m_objectives.Add(flyToManjeet);\n\n            var speakToManjeet = new MyObjectiveDialog(\n                MyMissionID.JUNKYARD_EAC_AMBUSH_TALK_RANIJT,\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.JUNKYARD_EAC_AMBUSH_FLY_MANJEET },\n                MyDialogueEnum.EAC_AMBUSH_0200_MANJEET\n                ) { SaveOnSuccess = false };\n            speakToManjeet.OnMissionLoaded += SpeakToManjeet_Loaded;\n            m_objectives.Add(speakToManjeet);\n\n            m_backToMadelyn = new MyObjective(\n                MyTextsWrapperEnum.EAC_AMBUSH_GO_BACK_TO_MADELYN,\n                MyMissionID.JUNKYARD_EAC_AMBUSH_GO_BACK_TO_MADELYN,\n                MyTextsWrapperEnum.EAC_AMBUSH_GO_BACK_TO_MADELYN_DESC,\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.JUNKYARD_EAC_AMBUSH_TALK_RANIJT },\n                new MyMissionLocation(baseSector, (uint)EntityID.GoBackToMadelyn),\n                startDialogId: MyDialogueEnum.EAC_AMBUSH_0300_GUYS_HURRY_UP\n            ) { HudName = MyTextsWrapperEnum.Nothing };\n            m_backToMadelyn.OnMissionLoaded += BackToMadelyn_Loaded;\n            m_objectives.Add(m_backToMadelyn);\n\n            m_speakWithPolice = new MyObjective(\n                MyTextsWrapperEnum.Null,\n                MyMissionID.JUNKYARD_EAC_AMBUSH_SPEAK_POLICE,\n                MyTextsWrapperEnum.Null,\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.JUNKYARD_EAC_AMBUSH_GO_BACK_TO_MADELYN },\n                null\n            );\n            m_speakWithPolice.OnMissionLoaded += SpeakWithPolice_Loaded;\n            m_objectives.Add(m_speakWithPolice);\n\n            m_defendMadelyn = new MyObjectiveDialog(\n                MyTextsWrapperEnum.EAC_AMBUSH_DEFEND_MADELYN1,\n                MyMissionID.JUNKYARD_EAC_AMBUSH_DEFEND_MADELYN_1,\n                MyTextsWrapperEnum.EAC_AMBUSH_DEFEND_MADELYN1_DESC,\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.JUNKYARD_EAC_AMBUSH_SPEAK_POLICE },\n                MyDialogueEnum.EAC_AMBUSH_0500_ONE_LITTLE_ISSUE\n                ) { SaveOnSuccess = true };\n            m_defendMadelyn.OnMissionLoaded += DefendMadelyn_Loaded;\n            m_objectives.Add(m_defendMadelyn);\n\n            var destroyGenerator  = new MyObjectiveDestroy(\n                MyTextsWrapperEnum.EAC_AMBUSH_DESTROY_GENERATOR,\n                MyMissionID.JUNKYARD_EAC_AMBUSH_DESTROY_GENERATOR,\n                MyTextsWrapperEnum.EAC_AMBUSH_DESTROY_GENERATOR_DESC,\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.JUNKYARD_EAC_AMBUSH_DEFEND_MADELYN_1 },\n                new List<uint> {  (uint)EntityID.DestroyGenerator}\n                ) { SaveOnSuccess = true, StartDialogId = MyDialogueEnum.EAC_AMBUSH_0700_SPLIT_TO_DESTROY_GENERATORS, HudName = MyTextsWrapperEnum.HudDisruptor };\n            destroyGenerator.OnMissionLoaded += DestroyGenerator_Loaded;\n            destroyGenerator.OnMissionSuccess += DestroyGenerator_Success;\n            m_objectives.Add(destroyGenerator);\n\n            var returnToMadelyn = new MyTimedReachLocationObjective(\n                MyTextsWrapperEnum.EAC_AMBUSH_RETURN_TO_MADELYN,\n                MyMissionID.JUNKYARD_EAC_AMBUSH_RETUR_TO_MADELYN,\n                MyTextsWrapperEnum.EAC_AMBUSH_RETURN_TO_MADELYN_DESC,\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.JUNKYARD_EAC_AMBUSH_DESTROY_GENERATOR },\n                new TimeSpan(0, 0, 45),\n                new MyMissionLocation(baseSector, (uint)EntityID.ReturnToMadelyn)\n                ) { SaveOnSuccess = true, StartDialogId = MyDialogueEnum.EAC_AMBUSH_1000, HudName = MyTextsWrapperEnum.HudMadelynsSapho };\n            returnToMadelyn.OnMissionLoaded += ReturnToMadelyn_Loaded;\n            m_objectives.Add(returnToMadelyn);\n\n            m_defendMadelyn2 = new MyObjective(\n                MyTextsWrapperEnum.EAC_AMBUSH_DEFEND_MADELYN2,\n                MyMissionID.JUNKYARD_EAC_AMBUSH_DEFEND_MADELYN,\n                MyTextsWrapperEnum.EAC_AMBUSH_DEFEND_MADELYN2_DESC,\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.JUNKYARD_EAC_AMBUSH_RETUR_TO_MADELYN },\n                null\n            ) { StartDialogId = MyDialogueEnum.EAC_AMBUSH_1200_1300 };\n            m_defendMadelyn2.OnMissionLoaded += DefendMadelyn2_Loaded;\n            m_defendMadelyn2.OnMissionUpdate += DefendMadelyn2_Update;\n            m_objectives.Add(m_defendMadelyn2);\n\n            #endregion\n        }\n\n        void FlyToManjeet_Loaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.MovePlayerAndFriendsToHangar(RequiredActors);\n        }\n\n        private void MyScriptWrapperOnFadedOut()\n        {\n            MyScriptWrapper.FadedOut -= MyScriptWrapperOnFadedOut;\n\n            MyScriptWrapper.FadeIn();\n\n            MyScriptWrapper.AddNotification(MyScriptWrapper.CreateNotification(Localization.MyTextsWrapperEnum.SwitchInHUBTurrets, MyGuiManager.GetFontMinerWarsGreen(), 60000,\n                new object[] {\n                                MyGuiManager.GetInput().GetGameControlTextEnum(MyGameControlEnums.ROLL_LEFT),\n                                MyGuiManager.GetInput().GetGameControlTextEnum(MyGameControlEnums.ROLL_RIGHT)\n                            }\n            ));\n\n            MyScriptWrapper.TakeControlOfLargeWeapon(m_madelynTurrets[m_activeTurret]);\n            MyScriptWrapper.ForbideDetaching();\n\n            MyScriptWrapper.SwitchTowerPrevious += MyScriptWrapper_SwitchTowerPrevious;\n            MyScriptWrapper.SwitchTowerNext += MyScriptWrapper_SwitchTowerNext;\n\n        }\n\n        private void MyScriptWrapper_SwitchTowerNext()\n        {\n            m_activeTurret--;\n            m_activeTurret = Mod(m_activeTurret, m_madelynTurrets.Length);\n            MyScriptWrapper.TakeControlOfLargeWeapon(m_madelynTurrets[m_activeTurret]);\n        }\n\n\n        private void MyScriptWrapper_SwitchTowerPrevious()\n        {\n            m_activeTurret++;\n            m_activeTurret = Mod(m_activeTurret, m_madelynTurrets.Length);\n            MyScriptWrapper.TakeControlOfLargeWeapon(m_madelynTurrets[m_activeTurret]);\n        }\n\n        private static int Mod(int x, int m)\n        {\n            return (x % m + m) % m;\n        }\n\n\n        private void DefendMadelyn_Loaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.StopTransition(100);\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.DesperateWithStress, 3, \"KA03\");\n\n            MyScriptWrapper.SetFactionRelation(MyMwcObjectBuilder_FactionEnum.Rainiers, MyMwcObjectBuilder_FactionEnum.Euroamerican, MyFactions.RELATION_WORST);\n\n            var bots = GetBotsFromSpawnpoints(m_barricadeSpawns);\n            foreach (var mySmallShipBot in bots)\n            {\n                if (mySmallShipBot != null)\n                {\n                    mySmallShipBot.LookTarget = null;\n                    MyScriptWrapper.SetEntityDestructible(mySmallShipBot, true);\n                }\n            }\n            var looms = GetBotsFromSpawnpoints(m_barricadeLoomers);\n            foreach (var mySmallShipBot in looms)\n            {\n                if (mySmallShipBot != null)\n                {\n                    mySmallShipBot.LookTarget = null;\n                    MyScriptWrapper.SetEntityDestructible(mySmallShipBot, true);\n                }\n            }\n            MyScriptWrapper.ActivateSpawnPoints(m_barricadeElites);\n\n            ((MyInfluenceSphere)MyScriptWrapper.GetEntity((uint)EntityID.WarSound)).Enabled = true;\n        }\n\n        private void SpeakWithPolice_Loaded(MyMissionBase sender)\n        {\n            if (m_speakWithPoliceDialogueFinished)\n            {\n                sender.Success();\n            }\n        }\n\n        private void SpeakToManjeet_Loaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.SetFactionRelation(MyMwcObjectBuilder_FactionEnum.Rainiers, MyMwcObjectBuilder_FactionEnum.Euroamerican, MyFactions.RELATION_NEUTRAL);  // The police won't attack you at first.\n            MyScriptWrapper.TryUnhide((uint)EntityID.EACMothershipContainer2, destroyGeneratedWaypointEdges: true);\n            MyScriptWrapper.TryUnhide((uint)EntityID.EACMothershipContainer1, destroyGeneratedWaypointEdges: true);\n            MyScriptWrapper.SetEntityPriority(MyScriptWrapper.GetEntity((uint)EntityID.EACMothershipContainer1), -1, true);\n            MyScriptWrapper.SetEntityPriority(MyScriptWrapper.GetEntity((uint)EntityID.EACMothershipContainer2), -1, true);\n        }\n\n        public override void Update()\n        {\n            base.Update();\n\n            if (m_desperationFadeout)\n            {\n                // fade out sounds\n                float level = Math.Max(-1f, -1f * (MyMinerGame.TotalGamePlayTimeInMilliseconds - m_desperationFadeoutStarted) / 10000.0f); // it takes 60s for desperation to sink in\n                MyScriptWrapper.SetGameVolumeExceptDialogues((float)Math.Pow(10, level));  // logarithmic fadeout\n            }\n        }\n\n        private void DefendMadelyn2_Update(MyMissionBase sender)\n        {\n            if (m_madelynMoving2)\n            {\n                var speed = Math.Min(100, 15 + (100 - 15) * (MyMinerGame.TotalGamePlayTimeInMilliseconds - m_madelynMovingStarted2) / 20000.0f);  // it takes 20s for Madelyn to reach max speed after Marcus crashes\n\n                Vector3 velocity = speed * m_madelyn.WorldMatrix.Forward; // Speed in direction\n                MyScriptWrapper.Move(m_madelyn, m_madelyn.GetPosition() + velocity * MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS);\n            }\n            else if (m_madelynMoving)\n            {\n                var speed = Math.Min(15, 15 * (MyMinerGame.TotalGamePlayTimeInMilliseconds - m_madelynMovingStarted) / 10000.0f);  // it takes 10s for Madelyn to reach max speed of 15 (jammed)\n\n                Vector3 velocity = speed * m_madelyn.WorldMatrix.Forward; // Speed in direction\n                MyScriptWrapper.Move(m_madelyn, m_madelyn.GetPosition() + velocity * MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS);\n            }\n        }\n\n        private void DefendMadelyn2_Loaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.FadedOut += MyScriptWrapperOnFadedOut;\n            MyScriptWrapper.FadeOut();\n\n            MyScriptWrapper.SetEntityPriority(m_madelyn, -1, true);\n            MyScriptWrapper.HideEntity(MySession.PlayerShip);\n\n            MyScriptWrapper.Refill();\n\n            EveryoneAttackMadelyn();\n        }\n\n        private void ReturnToMadelyn_Loaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.HeavyFight, 3, \"KA19\");\n            MyScriptWrapper.SetEntitiesEnabled(m_particlesApollo, false);\n            MyScriptWrapper.ActivateSpawnPoints(m_barricadeHeavies);\n\n            EveryoneAttackMadelyn();\n        }\n\n        private void DestroyGenerator_Loaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.ActivateSpawnPoints(m_wavesApolloSpawns);\n            MyScriptWrapper.ActivateSpawnPoints(m_wavesMarcusSpawns);\n\n            m_marcus.StopFollow();\n            m_ravenGuy.StopFollow();\n\n            m_marcus.SetWaypointPath(\"MarcusLeaved\");\n            m_marcus.PatrolMode = MyPatrolMode.ONE_WAY;\n            m_marcus.SeeDistance = 250f;\n            m_marcus.Patrol();\n\n            m_ravenGuy.SetWaypointPath(\"VitolinoLeaved\");\n            m_ravenGuy.SeeDistance = 250f;\n            m_ravenGuy.PatrolMode = MyPatrolMode.ONE_WAY;\n            m_ravenGuy.Patrol();\n\n            m_generatorPosition = MyScriptWrapper.GetEntity((uint)EntityID.DestroyGenerator).GetPosition();\n            MyScriptWrapper.ActivateSpawnPoints(m_barricadeLoomers);\n\n            MyScriptWrapper.AddNotification(MyScriptWrapper.CreateNotification(MyTextsWrapperEnum.MarcusAndValentinoLeavingParty, MyGuiManager.GetFontMinerWarsGreen(), 10000));\n            EveryoneAttackMadelyn();\n        }\n\n        private void EveryoneAttackMadelyn()\n        {\n            foreach (var bot in GetBotsFromSpawnpoints(m_spawns)) if (bot != null)\n            {\n                bot.Attack(MyScriptWrapper.GetEntity(\"Madelyn\"));\n            }\n        }\n\n        private void DestroyGenerator_Success(MyMissionBase sender)\n        {\n            MyScriptWrapper.PlaySound3D(m_generatorPosition, MySoundCuesEnum.WepBombExplosion);\n        }\n\n        private List<MySmallShipBot> GetBotsFromSpawnpoints(IEnumerable<uint> spawnPoints)\n        {\n            var result = new List<MySmallShipBot>();\n            foreach (var spawnPoint in spawnPoints)\n            {\n                var bots = MyScriptWrapper.GetSpawnPointBots(spawnPoint);\n                foreach (var bot in bots)\n                {\n                    result.Add(bot.Ship);\n                }\n            }\n            return result;\n        }\n\n        private void BackToMadelyn_Loaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.StressOrTimeRush, 3, \"KA02\");\n            MyScriptWrapper.ActivateSpawnPoints(m_barricadeSpawns);\n\n            foreach (var particle in m_particlesMarcus)\n            {\n                MyScriptWrapper.SetParticleEffect(MyScriptWrapper.GetEntity(particle), true);\n            }\n            foreach (var particle in m_particlesApollo)\n            {\n                MyScriptWrapper.SetParticleEffect(MyScriptWrapper.GetEntity(particle), true);\n            }\n            MyScriptWrapper.SetEntitiesEnabled(m_particlesMarcus, true);\n            MyScriptWrapper.SetEntitiesEnabled(m_particlesApollo, true);     \n        }\n\n        public override void Load()\n        {\n            //Because he has different position from junkyard race\n            MyEntity manjeet = MyScriptWrapper.GetEntity((int)EntityID.FlyToManjeet);\n            manjeet.SetPosition(new Vector3(-7529.0f, -3368.0f, 5938.0f));\n\n            m_marcusForCrashDialoguePlayed = false;\n\n            MyScriptWrapper.OnSpawnpointBotSpawned += MyScriptWrapperOnOnSpawnpointBotSpawned;\n            MyScriptWrapper.OnBotReachedWaypoint += MyScriptWrapperOnOnBotReachedWaypoint;\n            MyScriptWrapper.OnDialogueFinished += MyScriptWrapperOnOnDialogueFinished;\n            MyScriptWrapper.OnEntityAtacked += MyScriptWrapperOnOnEntityAtacked;\n\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.CalmAtmosphere, 0, \"KA01\");\n            MyScriptWrapper.OnSentenceStarted += MyScriptWrapper_OnSentenceStarted;\n\n            m_speakWithPoliceDialogueFinished = false;\n\n            m_ravenGuy = (MySmallShipBot)MyScriptWrapper.GetEntity(MyActorConstants.GetActorName(MyActorEnum.VALENTIN));\n            m_ravenGuy.SleepDistance = 8000;\n\n            m_gameVolume = MyScriptWrapper.GetGameVolume();\n\n            m_ravenGirl = (MySmallShipBot)MyScriptWrapper.GetEntity(MyActorConstants.GetActorName(MyActorEnum.TARJA));\n            m_ravenGirl.SleepDistance = 8000;\n\n            m_marcus = (MySmallShipBot)MyScriptWrapper.GetEntity(MyActorConstants.GetActorName(MyActorEnum.MARCUS));\n            m_marcus.SleepDistance = 8000;\n\n            m_madelyn = MyScriptWrapper.GetEntity(MyActorConstants.GetActorName(MyActorEnum.MADELYN));\n            MyScriptWrapper.SetEntityDestructible(m_madelyn, false);\n            m_madelyn.SetWorldMatrix(MyScriptWrapper.GetEntity((uint)EntityID.MadelynStart).WorldMatrix);\n\n            m_madelynTurrets = new MyPrefabLargeWeapon[3];\n            m_madelynTurrets[0] = (MyPrefabLargeWeapon)MyScriptWrapper.GetEntity(\"BackTurretM\");\n            m_madelynTurrets[1] = (MyPrefabLargeWeapon)MyScriptWrapper.GetEntity(\"FrontTurretM\");\n            m_madelynTurrets[2] = (MyPrefabLargeWeapon)MyScriptWrapper.GetEntity(\"BottomTurretM\");\n\n            MyScriptWrapper.SetEntityPriority(MyScriptWrapper.GetEntity((uint) EntityID.EACMothershipContainer1), -1, true);\n            MyScriptWrapper.SetEntityPriority(MyScriptWrapper.GetEntity((uint) EntityID.EACMothershipContainer2), -1, true);\n\n            m_ravenGuyIn = false;\n            m_madelynMoving = false;\n            m_madelynMoving2 = false;\n            m_desperationFadeout = false;\n\n            base.Load();\n        }\n\n        void MyScriptWrapper_OnSentenceStarted(MyDialogueEnum dialogue, MyDialoguesWrapperEnum sentence)\n        {\n            if (dialogue == MyDialogueEnum.EAC_AMBUSH_0400_MARCUS_TO_EAC && sentence == MyDialoguesWrapperEnum.Dlg_JunkyardEacAmbush_0407)\n            {\n                MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.Special, 3, \"KA16\");\n            }\n        }\n\n        private void MyScriptWrapperOnOnEntityAtacked(MyEntity attacker, MyEntity target)\n        {\n            if (target.EntityId != null && (attacker == MySession.PlayerShip && target.EntityId.Value.NumericValue == (uint)EntityID.DestroyGenerator) && !m_generatorAttacked)\n            {             \n                MyScriptWrapper.PlayDialogue(MyDialogueEnum.EAC_AMBUSH_0800);\n                m_generatorAttacked = true;\n            }\n        }\n\n        private void MyScriptWrapperOnOnDialogueFinished(MyDialogueEnum dialogue, bool interrupted)\n        {\n            switch (dialogue)\n            {\n                case MyDialogueEnum.EAC_AMBUSH_0300_GUYS_HURRY_UP:\n                    MyScriptWrapper.PlayDialogue(MyDialogueEnum.EAC_AMBUSH_0400_MARCUS_TO_EAC);\n                    break;\n\n                case MyDialogueEnum.EAC_AMBUSH_0400_MARCUS_TO_EAC:\n                    if (m_backToMadelyn.IsAvailable())\n                    {\n                        m_backToMadelyn.Success();\n                    }\n                    if (m_speakWithPolice.IsAvailable())\n                    {\n                        m_speakWithPolice.Success();\n                    }\n                    MyScriptWrapper.ActivateSpawnPoints(m_barricadeSpawns);\n                    m_speakWithPoliceDialogueFinished = true;\n                    break;\n\n                case MyDialogueEnum.EAC_AMBUSH_1200_1300:\n                    MyScriptWrapper.HideEntity(m_ravenGirl);\n                    MyScriptWrapper.RemoveEntityMark(m_ravenGirl);\n\n                    MyScriptWrapper.SetEntitiesEnabled(m_particlesMarcus, false);\n\n                    m_marcus.AITemplate = MyBotAITemplates.GetTemplate(MyAITemplateEnum.PASSIVE);\n                    m_marcus.SetWaypointPath(\"MarcusRetreat\");\n                    m_marcus.PatrolMode = MyPatrolMode.ONE_WAY;\n                    m_marcus.Patrol();\n\n                    m_ravenGuy.AITemplate = MyBotAITemplates.GetTemplate(MyAITemplateEnum.PASSIVE);\n                    m_ravenGuy.SetWaypointPath(\"VitolinoRetreat\");\n                    m_ravenGuy.PatrolMode = MyPatrolMode.ONE_WAY;\n                    m_ravenGuy.Patrol();\n\n                    MyScriptWrapper.PlayDialogue(MyDialogueEnum.EAC_AMBUSH_1500);\n                    MissionTimer.RegisterTimerAction(30000, MarcusForCrashDialogue, false);\n                    break;\n\n                case MyDialogueEnum.EAC_AMBUSH_1500:\n                    //MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.Special, 3, \"LostInTheDistance\");\n                    break;\n                case MyDialogueEnum.EAC_AMBUSH_1600:\n                    //MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.SadnessOrDesperation, 3, \"KA02\"); //TODO: change to \n                    MyScriptWrapper.PlayDialogue(MyDialogueEnum.EAC_AMBUSH_1650);\n                    MarcusForCrash();\n                    break;\n                case MyDialogueEnum.EAC_AMBUSH_1650:\n                    Boom();\n                    break;\n            }\n        }\n\n\n        public override void Unload()\n        {\n            base.Unload();\n\n            MyScriptWrapper.FadedOut -= MyScriptWrapperOnFadedOut;\n            MyScriptWrapper.OnSpawnpointBotSpawned -= MyScriptWrapperOnOnSpawnpointBotSpawned;\n            MyScriptWrapper.OnBotReachedWaypoint -= MyScriptWrapperOnOnBotReachedWaypoint;\n            MyScriptWrapper.OnDialogueFinished -= MyScriptWrapperOnOnDialogueFinished;\n            MyScriptWrapper.OnEntityAtacked -= MyScriptWrapperOnOnEntityAtacked;\n            MyScriptWrapper.OnSentenceStarted -= MyScriptWrapper_OnSentenceStarted;\n\n            MyScriptWrapper.SetEntitySaveFlagDisabled(MyScriptWrapper.GetEntity((uint)EntityID.EACMothershipContainer1));\n            MyScriptWrapper.SetEntitySaveFlagDisabled(MyScriptWrapper.GetEntity((uint)EntityID.EACMothershipContainer2));\n\n            MyScriptWrapper.SetGameVolume(m_gameVolume);\n\n            m_ravenGuy = null;\n            m_ravenGirl = null;\n            m_marcus = null;\n            m_madelyn = null;\n            m_madelynTurrets = null;\n\n            MyScriptWrapper.EnableDetaching();\n            MyScriptWrapper.SwitchTowerPrevious -= MyScriptWrapper_SwitchTowerPrevious;\n            MyScriptWrapper.SwitchTowerNext -= MyScriptWrapper_SwitchTowerNext;\n\n            if (MyScriptWrapper.IsMissionFinished(this.ID))\n            {\n                MyScriptWrapper.TravelToMission(MyMissionID.RIFT);\n            }\n        }\n\n        private bool m_ravenGuyIn = false;\n        private bool m_marcusIn = false;\n        private bool m_madelynMoving = false;\n        private int m_madelynMovingStarted = 0;\n        private bool m_madelynMoving2 = false;\n        private int m_madelynMovingStarted2 = 0;\n        private bool m_desperationFadeout = false;\n        private int m_desperationFadeoutStarted = 0;\n\n\n        private void MyScriptWrapperOnOnBotReachedWaypoint(MyEntity bot , MyEntity waypoint)\n        {\n            if (bot == m_ravenGuy)\n            {\n                if (waypoint.EntityId.Value.NumericValue == (uint)EntityID.WaypointFinalVitolinoRetreat && m_defendMadelyn2.IsAvailable())\n                {\n                    MyScriptWrapper.HideEntity(m_ravenGuy);\n                    MyScriptWrapper.RemoveEntityMark(m_ravenGuy);\n                    m_ravenGuyIn = true;\n                    if (m_marcusIn)\n                    {\n                        MarcusForCrashDialogue();\n                    }\n                }\n            }\n\n            if (bot == m_marcus && waypoint.EntityId.Value.NumericValue == (uint)EntityID.WaypointFinalMarcusRetreat && m_defendMadelyn2.IsAvailable())\n            {\n                m_marcusIn = true;\n                if (m_ravenGuyIn)\n                {\n                    MarcusForCrashDialogue();\n                }\n            }\n        }\n\n        private void MarcusForCrashDialogue()\n        {\n            if (!m_marcusForCrashDialoguePlayed)\n            {\n                m_marcusForCrashDialoguePlayed = true;\n                MyScriptWrapper.PlayDialogue(MyDialogueEnum.EAC_AMBUSH_1600);\n\n                //Here Marek wants to lower nondialogue sounds and start sad music\n                m_desperationFadeout = true;\n                m_desperationFadeoutStarted = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n\n                MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.Special, 100, \"LostInTheDistance\");\n\n                StartMovingMadelyn1();\n            }\n        }\n\n        private void StartMovingMadelyn1()\n        {\n            MyScriptWrapper.EnablePhysics(m_madelyn.EntityId.Value.NumericValue, false);\n            m_madelynMoving = true;\n            m_madelynMovingStarted = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n        }\n\n        private void StartMovingMadelyn2()\n        {\n            m_madelynMoving2 = true;\n            m_madelynMovingStarted2 = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n        }\n\n        private void MarcusForCrash()\n        {\n            MyScriptWrapper.DeactivateSpawnPoints(m_wavesApolloSpawns);\n\n            m_marcus.AITemplate = MyBotAITemplates.GetTemplate(MyAITemplateEnum.PASSIVE);\n            m_marcus.SetWaypointPath(\"MarcusCrash\");\n            m_marcus.PatrolMode = MyPatrolMode.ONE_WAY;\n            m_marcus.Patrol();\n\n           // MyScriptWrapper.MarkEntity(m_marcus, m_marcus.DisplayName, HUD.MyHudIndicatorFlagsEnum.SHOW_ALL);\n        }\n\n  \n        private void Boom()\n        {\n            StartMovingMadelyn2();\n            MyScriptWrapper.HideEntity(m_marcus);\n            MyScriptWrapper.RemoveEntityMark(m_marcus);\n            MyScriptWrapper.PlayDialogue(MyDialogueEnum.EAC_AMBUSH_1700);\n            MyScriptWrapper.DeactivateSpawnPoints(m_wavesMarcusSpawns);\n\n            MyScriptWrapper.AddExplosions(m_particlesExplosion1, Explosions.MyExplosionTypeEnum.LARGE_SHIP_EXPLOSION, 100, particleIDOverride: MyParticleEffectsIDEnum.Explosion_Medium);\n\n            MissionTimer.RegisterTimerAction(3000, Boom1, false);\n            MissionTimer.RegisterTimerAction(4000, Boom2, false);\n            MissionTimer.RegisterTimerAction(4500, Boom2_2, false);\n            MissionTimer.RegisterTimerAction(5000, Boom3, false);\n            MissionTimer.RegisterTimerAction(5500, Boom4, false);\n            MissionTimer.RegisterTimerAction(7000, Boom4_2, false);\n            MissionTimer.RegisterTimerAction(30000, EndGame, false);\n        }\n\n        private void Boom1()\n        {\n            MyScriptWrapper.AddExplosions(m_particlesExplosion2, Explosions.MyExplosionTypeEnum.LARGE_SHIP_EXPLOSION, 800, particleIDOverride: MyParticleEffectsIDEnum.Explosion_Medium);\n        }\n\n        private void Boom2()\n        {\n            MyScriptWrapper.AddExplosions(m_particlesExplosion3, Explosions.MyExplosionTypeEnum.LARGE_SHIP_EXPLOSION, 800, particleIDOverride: MyParticleEffectsIDEnum.Explosion_Medium);\n        }\n\n        private void Boom2_2()\n        {\n            MyScriptWrapper.AddExplosions(m_particlesExplosion2_2, Explosions.MyExplosionTypeEnum.LARGE_SHIP_EXPLOSION, 800, particleIDOverride: MyParticleEffectsIDEnum.Explosion_Medium);\n        }\n\n        private void Boom3()\n        {\n            MyScriptWrapper.AddExplosions(m_particlesExplosion4, Explosions.MyExplosionTypeEnum.LARGE_SHIP_EXPLOSION, 800, particleIDOverride: MyParticleEffectsIDEnum.Explosion_Medium);\n        }\n\n        private void Boom4()\n        {\n            MyScriptWrapper.AddExplosions(m_particlesExplosion5, Explosions.MyExplosionTypeEnum.LARGE_SHIP_EXPLOSION, 800, particleIDOverride: MyParticleEffectsIDEnum.Explosion_Medium);\n        }\n\n        private void Boom4_2()\n        {\n            MyScriptWrapper.AddExplosions(m_particlesExplosion4_2, Explosions.MyExplosionTypeEnum.LARGE_SHIP_EXPLOSION, 18000, 1000, particleIDOverride: MyParticleEffectsIDEnum.Explosion_Medium);\n            MyScriptWrapper.AddExplosions(m_particlesExplosion4_2_Destroy, Explosions.MyExplosionTypeEnum.LARGE_SHIP_EXPLOSION, 100000, 0, false, false, MyParticleEffectsIDEnum.Explosion_Huge);\n        }\n\n        private void EndGame()\n        {   \n            m_defendMadelyn2.Success();\n        }\n\n        private void MyScriptWrapperOnOnSpawnpointBotSpawned(MyEntity entity1, MyEntity entity2)\n        {\n            if (m_barricadeSpawns.Contains(entity1.EntityId.Value.NumericValue) && !MyScriptWrapper.IsMissionFinished(MyMissionID.JUNKYARD_EAC_AMBUSH_SPEAK_POLICE))\n            {\n                var bot = (MySmallShipBot)entity2;\n                bot.LookTarget = MySession.PlayerShip;\n                MyScriptWrapper.SetEntityDestructible(bot, false);\n            }\n            if (m_barricadeLoomers.Contains(entity1.EntityId.Value.NumericValue) && !MyScriptWrapper.IsMissionFinished(MyMissionID.JUNKYARD_EAC_AMBUSH_SPEAK_POLICE))\n            {\n                var bot = (MySmallShipBot)entity2;\n                bot.LookTarget = MySession.PlayerShip;\n                MyScriptWrapper.SetEntityDestructible(bot, false);\n            }\n\n            if (m_barricadeHeavies.Contains(entity1.EntityId.Value.NumericValue))\n            {\n                var bot = (MySmallShipBot)entity2;\n                bot.Attack(MyScriptWrapper.GetEntity(\"Madelyn\"));  // hope they won't consider the player to be a better target :)\n            }\n\n            if (m_barricadeElites.Contains(entity1.EntityId.Value.NumericValue))\n            {\n                var bot = (MySmallShipBot)entity2;\n                bot.Attack(MyScriptWrapper.GetEntity(\"Madelyn\"));  // hope they won't consider the player to be a better target :)\n            }\n\n            if (m_wavesApolloSpawns.Contains(entity1.EntityId.Value.NumericValue) || m_wavesMarcusSpawns.Contains(entity1.EntityId.Value.NumericValue))\n            {\n                var bot = (MySmallShipBot)entity2;\n                bot.SleepDistance = 5000;\n            }\n        }\n\n        public override void Success()\n        {\n            MyScriptWrapper.UnhideEntity(MySession.PlayerShip, false);\n\n            //We dont want him in Rift\n            MyScriptWrapper.CloseEntity(m_marcus);\n\n            m_ravenGuy.AITemplate = MyBotAITemplates.GetTemplate(MyAITemplateEnum.DEFAULT);\n\n            base.Success();\n        }\n    }\n\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/SinglePlayer/MyJunkyardReturnMission.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing MinerWars.AppCode.Game.Explosions;\nusing MinerWars.AppCode.Game.HUD;\nusing MinerWars.AppCode.Game.Entities.Weapons.UniversalLauncher;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.AppCode.Game.Audio.Dialogues;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.Resources;\nusing MinerWars.AppCode.Networking;\n\n\nnamespace MinerWars.AppCode.Game.Missions.SinglePlayer\n{\n    class MyJunkyardReturnMission: MyMission\n    {\n        private MyObjective m_objective03_FlyToStart;\n        private MyObjectiveRace m_objective04_Race;\n        private MyObjectiveDialog m_objective05_Win;\n        private MyObjective m_objective06_GoToSmuggler;\n        private MyObjectiveDialog m_objective07_SmugglerDialogueReturn;\n        //private MyObjective m_objective08_FlyToMS;\n\n        private MyEntityDetector m_detector_ReachStart;\n        //private MyEntityDetector m_detector_SmugglerFirst;\n        //private MyEntityDetector m_detector_SmugglerReturn;\n        private MyEntityDetector m_detector_Explosion1;\n        private MyEntityDetector m_detector_Explosion2;\n        private MyEntityDetector m_detector_Explosion3;\n        private MyEntityDetector m_detector_TunnelExplosion;\n\n        private bool m_playerIsOnStart;\n        private bool m_challengerIsOnStart;\n        private bool m_unfollowedCompanions;\n\n        private MySmallShipBot m_manjeet;\n        private MyEntity m_marcus;\n        private MyEntity m_tarja;\n        private MyEntity m_vitolino;\n\n        #region EntityIDs\n        private enum EntityID // list of IDs used in script\n        {\n            StartLocation = 131399,\n            SmugglerStartPosition = 404558,\n            DetectorStartRacePosition = 418116,\n            DetectorStartRacePosition2 = 407419,\n            DetectorExplosion1 = 419491,\n            DetectorExplosion2 = 419496,\n            DetectorExplosion3 = 419498,\n            DetectorTunnelExplosion = 433532,\n            ParticleExplosionInTunnel = 433564,\n            Challenger = 375502,\n            Manjeet = 156176,\n            ChallengerStartPosWaypoint = 404592,\n            LookAtDummy = 404602,\n            Transporter = 418656,\n            Racer2 = 529318,\n            Racer3 = 529317,\n            ComentatorDeetctor = 869\n        }\n\n        private readonly List<uint> m_minesDummies = new List<uint>() { \n            406486, 16785233, 16785234, 16785235, 406485, 16785236, 16785241 ,406483, 16785240, 16785239, 16785238, 406484, 16785237, 406487, 406488\n        }; \n\n        private readonly List<uint> m_companionSpawnpoints = new List<uint>\n        {\n            404573, 404572, 404569, 404571\n        };\n\n        private readonly List<uint> m_raceCheckpoints = new List<uint>\n        {\n            404103, //0\n            404104, //1\n            404105, //2\n            404106, //3\n            404107, //4\n            404108, //5\n            404109, //6\n            404110, //7\n            404111, //8\n            404112, //9\n            404113, //10\n            404114, //11\n            404115, //12\n            404116, //13\n            404117, //14\n            404118, //15\n            404119, //16\n            404120, //17\n            404121  //18\n        };\n\n        private readonly List<uint> m_greenLights = new List<uint>\n        {\n            407900, 407899, 407886, 407884\n        };\n\n        private readonly List<uint> m_yellowLights = new List<uint>\n        {\n           407898, 407897, 407891, 407892\n        };\n\n        private readonly List<uint> m_redLights = new List<uint>\n        {\n           407894, 407893, 407896, 407895\n        };\n\n        private readonly List<uint> m_explosionParticles1 = new List<uint>\n        {\n            419488, 419489, 419490\n        };\n\n        private readonly List<uint> m_explosionParticles2 = new List<uint>\n        {\n            419495, 419494, 419493\n        };\n\n        private readonly List<uint> m_explosionParticles3 = new List<uint>\n        {\n            419500, 419502, 419503, 419501\n        };\n\n        private readonly List<uint> m_raceFansSP1 = new List<uint>\n        {\n            419482, 419483, 419484, 419485, 419486, 419487\n        };\n\n        private readonly List<uint> m_raceFansSP2 = new List<uint>\n        {\n            419507, 419504, 419506, 419505\n        };\n\n        private readonly List<uint> m_raceFansSP3 = new List<uint>\n        {\n            419510, 419512, 419513, 419511\n        };\n\n        private readonly List<uint> m_raceFansSP4 = new List<uint>\n        {\n            433566, 433565, 433568, 433567\n        };\n\n        private readonly List<uint> m_raceFansSP5 = new List<uint>\n        {\n            433571, 433569, 433570, 433572\n        };\n\n        private readonly List<List<uint>> m_raceGates = new List<List<uint>> \n        {\n            new List<uint> {290478, 290477}, new List<uint> {306930, 306929}, new List<uint> {365999, 365998}, new List<uint> {366019, 366020}, new List<uint> {306971, 306972},\n            new List<uint> {306999, 307000}, new List<uint> {307020, 307021}, new List<uint> {527748, 366105}, new List<uint> {366127, 366126}, new List<uint> {366147, 366148},\n            new List<uint> {366211, 366210}, new List<uint> {366231, 366232}, new List<uint> {366253, 366252}, new List<uint> {366273, 366274}, new List<uint> {366298, 366299},\n            new List<uint> {375462, 375463}, new List<uint> {375484, 375483}, new List<uint> {366319, 366320}, new List<uint> {366361, 376421}\n        };\n\n        private readonly List<List<uint>> m_raceTowers = new List<List<uint>> \n        {\n            null, //0\n            new List<uint> {516356, 516353}, //1\n            null, //2\n            null, //3\n            new List<uint> {527736, 527739}, //4\n            null, //5\n            new List<uint> {527742, 527745}, //6\n            null, //7\n            null, //8\n            null, //9\n            null, //10\n            new List<uint> {527749, 527752}, //11\n            null, //12\n            null, //13\n            null, //14\n            new List<uint> {527755, 527758}, //15\n            null, //16\n            null, //17\n            null  //18\n        };\n\n        private readonly List<uint> m_influenceSpheresFansBeforeStart = new List<uint>() {895, 897};\n        private readonly List<uint> m_influenceSpheresFansAfterStart = new List<uint>() { 905, 907, 909, 911, 920, 921, 922, 924, 925, 926, 941, 942, 943, 946, 947, 948, 950, 952, 955, 957, 958, 960, };\n\n        public override void ValidateIds() // checks if all IDs in enum are loaded correctly\n        {\n            if (!IsMainSector) return;\n\n            foreach (EntityID value in Enum.GetValues(typeof(EntityID)))\n            {\n                MyScriptWrapper.GetEntity((uint)value);\n            }\n\n\n            foreach (var item in new List<List<uint>> {\n                m_explosionParticles1, m_explosionParticles2, m_explosionParticles3, m_raceFansSP1, m_raceFansSP2, m_raceFansSP3, m_raceFansSP4, m_raceFansSP5,\n                m_minesDummies, m_redLights, m_yellowLights, m_companionSpawnpoints, m_influenceSpheresFansBeforeStart})\n            {\n                foreach (var item2 in item)\n                {\n                    MyScriptWrapper.GetEntity(item2);\n                }\n            }\n            foreach (var item in m_raceGates)\n            {\n                foreach (var item2 in item)\n                {\n                    MyScriptWrapper.GetEntity(item2);\n                }\n            }\n            foreach (var item in m_raceTowers)\n            {\n                if (item != null)\n                {\n                    foreach (var item2 in item)\n                    {\n                        MyScriptWrapper.GetEntity(item2);\n                    }\n                }\n            }\n        }\n        #endregion\n\n        public MyJunkyardReturnMission()\n        {\n            ID = MyMissionID.JUNKYARD_RETURN; /* ID must be added to MyMissions.cs */\n            Name = MyTextsWrapperEnum.JUNKYARD_RETURN;\n            Description = MyTextsWrapperEnum.JUNKYARD_RETURN_Description; //\"Return to Ranjit with stolen Cargoship\\n\"\n            DebugName = new StringBuilder(\"08e-Junkyard racing\"); // Name of mission\n            Flags = MyMissionFlags.Story;\n            AchievementName = MySteamAchievementNames.Mission12_JunkyardRacing;\n\n            MyMwcVector3Int baseSector = new MyMwcVector3Int(2567538,0,-172727); // Story sector of the script - i.e. (-2465,0,6541)\n\n            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation); // Starting dummy point - must by typecasted to uint and referenced from EntityID enum\n\n            RequiredMissions = new MyMissionID[] { MyMissionID.CHINESE_ESCAPE }; // IDs of missions required to make this mission available\n            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.JUNKYARD_RETURN_DIALOGUE_RETURN };\n            RequiredActors = new MyActorEnum[] { MyActorEnum.MARCUS, MyActorEnum.MADELYN, MyActorEnum.TARJA, MyActorEnum.VALENTIN };\n\n            #region Objectives\n            m_objectives = new List<MyObjective>(); // Creating of list of submissions\n\n            var meetManjeet = new MyObjective(\n                (MyTextsWrapperEnum.JUNKYARD_RETURN_MEET_SMUGGLER_Name),\n                MyMissionID.JUNKYARD_RETURN_MEET_SMUGGLER,\n                (MyTextsWrapperEnum.JUNKYARD_RETURN_MEET_SMUGGLER_Description),\n                null,\n                this,\n                new MyMissionID[] {},\n                new MyMissionLocation(baseSector, (uint) EntityID.Manjeet),\n                new List<uint> {(uint) EntityID.Manjeet},\n                radiusOverride: 50\n                ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudManjeet };\n            m_objectives.Add(meetManjeet);\n            meetManjeet.OnMissionLoaded += O01MeetSmugglerLoaded;\n\n\n            var manjeetDialogue = new MyObjectiveDialog(\n                MyMissionID.JUNKYARD_RETURN_SMUGGLER_DIALOGUE,\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.JUNKYARD_RETURN_MEET_SMUGGLER },\n                MyDialogueEnum.JUNKYARD_RETURN_0200\n                ) { SaveOnSuccess = true };\n            manjeetDialogue.OnMissionSuccess += new MissionHandler(manjeetDialogue_OnMissionSuccess);\n            m_objectives.Add(manjeetDialogue);\n\n            var speedsterDialogue = new MyObjective(\n                MyTextsWrapperEnum.Null,\n                MyMissionID.JUNKYARD_RETURN_SPEEDSTER_DIALOGUE,\n                MyTextsWrapperEnum.Null,\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.JUNKYARD_RETURN_SMUGGLER_DIALOGUE },\n                null\n                ) { SaveOnSuccess = true };\n            speedsterDialogue.OnMissionLoaded += O02SmugglerDialogueLoaded;\n            m_objectives.Add(speedsterDialogue);\n\n            m_objective03_FlyToStart = new MyObjective(\n                (MyTextsWrapperEnum.JUNKYARD_RETURN_FLY_TO_START_Name),\n                MyMissionID.JUNKYARD_RETURN_FLY_TO_START,\n                (MyTextsWrapperEnum.JUNKYARD_RETURN_FLY_TO_START_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.JUNKYARD_RETURN_SPEEDSTER_DIALOGUE },\n                null,\n                startDialogId: MyDialogueEnum.JUNKYARD_RETURN_0300\n            ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudStart };\n            m_objective03_FlyToStart.MissionEntityIDs.Add((uint)EntityID.DetectorStartRacePosition);\n            m_objective03_FlyToStart.OnMissionLoaded += O03FlyToStartLoaded;\n            m_objective03_FlyToStart.OnMissionCleanUp += O03FlyToStartCleanUp;\n            m_objectives.Add(m_objective03_FlyToStart);\n\n\n            m_objective04_Race = new MyObjectiveRace(\n                (MyTextsWrapperEnum.JUNKYARD_RETURN_RACE_Name),\n                (MyTextsWrapperEnum.JUNKYARD_RETURN_RACE_PrepareName),\n                (MyTextsWrapperEnum.JUNKYARD_RETURN_RACE_GoBackName),\n                MyMissionID.JUNKYARD_RETURN_RACE,\n                (MyTextsWrapperEnum.JUNKYARD_RETURN_RACE_Description),\n                null,\n                this,\n                new MyMissionID[]{ MyMissionID.JUNKYARD_RETURN_FLY_TO_START },\n                baseSector,\n                m_raceCheckpoints,\n                (uint)EntityID.DetectorStartRacePosition2\n            ) { SaveOnSuccess = true} ;\n            m_objective04_Race.RacerNames = new List<string> { \"Racer2\", \"Racer3\", \"Challenger\" };\n            m_objective04_Race.BotLoaded += Race_BotLoaded;\n            m_objective04_Race.OnMissionLoaded += O04RaceLoaded;\n            m_objective04_Race.OnMissionFailed += RaceMissionFailed;\n            m_objective04_Race.OnMissionSuccess += Objective04_RaceOnOnMissionSuccess;\n            m_objective04_Race.CheckpointReached += RaceMissonOnCheckpointReached;\n            m_objective04_Race.OnStartNumberChanged += RaceStartNumberChanged;\n            m_objective04_Race.RaceStarted = RaceStarted;\n            m_objectives.Add(m_objective04_Race);\n\n            m_objective05_Win = new MyObjectiveDialog(\n                (MyTextsWrapperEnum.JUNKYARD_RETURN_WIN_Name),\n                MyMissionID.JUNKYARD_RETURN_WIN,\n                (MyTextsWrapperEnum.JUNKYARD_RETURN_WIN_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.JUNKYARD_RETURN_RACE },\n                MyDialogueEnum.JUNKYARD_RETURN_1300\n            ) { SaveOnSuccess = false };\n            m_objectives.Add(m_objective05_Win);\n            m_objective05_Win.OnMissionLoaded += O05WinLoaded;\n\n\n            m_objective06_GoToSmuggler = new MyMeetObjective(\n                (MyTextsWrapperEnum.JUNKYARD_RETURN_GO_TO_SMUGGLER_name),\n                MyMissionID.JUNKYARD_RETURN_GO_TO_SMUGGLER,\n                (MyTextsWrapperEnum.JUNKYARD_RETURN_GO_TO_SMUGGLER_Description),\n                this,\n                new MyMissionID[] { MyMissionID.JUNKYARD_RETURN_WIN },\n                null,\n                (uint)EntityID.Manjeet,\n                100,\n                0.25f,\n                null\n                ) { SaveOnSuccess = true, FollowMe = false };\n            m_objectives.Add(m_objective06_GoToSmuggler);\n\n\n            m_objective07_SmugglerDialogueReturn = new MyObjectiveDialog(\n                (MyTextsWrapperEnum.JUNKYARD_RETURN_DIALOGUE_RETURN_Name),\n                MyMissionID.JUNKYARD_RETURN_DIALOGUE_RETURN,\n                (MyTextsWrapperEnum.JUNKYARD_RETURN_DIALOGUE_RETURN_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.JUNKYARD_RETURN_GO_TO_SMUGGLER},\n                dialogId: MyDialogueEnum.JUNKYARD_RETURN_1400\n            ) { SaveOnSuccess = false };\n            m_objectives.Add(m_objective07_SmugglerDialogueReturn);\n\n            m_objective07_SmugglerDialogueReturn.OnMissionLoaded += O07SmugglerDialogueReturnLoaded;\n\n            #endregion\n        }\n\n        void manjeetDialogue_OnMissionSuccess(MyMissionBase sender)\n        {\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Challenger);\n        }\n\n\n        private void Objective04_RaceOnOnMissionSuccess(MyMissionBase sender)\n        {\n            this.MissionTimer.RegisterTimerAction(TimeSpan.FromSeconds(5), () => {\n                                                                                   MyScriptWrapper.SetEntitiesEnabled(m_influenceSpheresFansAfterStart,false);\n                                                                                   MyScriptWrapper.SetEntitiesEnabled(m_influenceSpheresFansBeforeStart,false);\n                                                                                 }, false);\n        }\n\n        private void RaceStarted()\n        {\n            MySmallShipBot challenger = (MySmallShipBot)MyScriptWrapper.GetEntity(\"Challenger\");\n            challenger.LookTarget = null;\n\n            MySmallShipBot racer3 = (MySmallShipBot)MyScriptWrapper.GetEntity(\"Racer3\");\n            racer3.LookTarget = null;\n\n            MySmallShipBot racer2 = (MySmallShipBot)MyScriptWrapper.GetEntity(\"Racer2\");\n            racer2.LookTarget = null;\n        }\n\n        public override void Load()\n        {\n            if (!IsMainSector) return;\n\n            m_detector_ReachStart = MyScriptWrapper.GetDetector(MyScriptWrapper.GetEntity((uint)EntityID.DetectorStartRacePosition));\n            m_detector_Explosion1 = MyScriptWrapper.GetDetector(MyScriptWrapper.GetEntity((uint)EntityID.DetectorExplosion1));\n\n            m_detector_Explosion2 = MyScriptWrapper.GetDetector(MyScriptWrapper.GetEntity((uint)EntityID.DetectorExplosion2));\n            m_detector_Explosion3 = MyScriptWrapper.GetDetector(MyScriptWrapper.GetEntity((uint)EntityID.DetectorExplosion3));\n            m_detector_TunnelExplosion = MyScriptWrapper.GetDetector(MyScriptWrapper.GetEntity((uint)EntityID.DetectorTunnelExplosion));            \n\n            m_marcus = MyScriptWrapper.GetEntity(MyActorConstants.GetActorName(MyActorEnum.MARCUS));\n            m_tarja = MyScriptWrapper.GetEntity(MyActorConstants.GetActorName(MyActorEnum.TARJA));\n            m_vitolino = MyScriptWrapper.GetEntity(MyActorConstants.GetActorName(MyActorEnum.VALENTIN));\n            m_manjeet = (MySmallShipBot)MyScriptWrapper.GetEntity((uint)EntityID.Manjeet);\n\n            MyScriptWrapper.OnDialogueFinished += Script_DialogueFinished;\n            MyScriptWrapper.OnSpawnpointBotSpawned += Script_BotSpawned;  \n\n            ShutDownAllLights();\n\n            foreach (var minesDummy in m_minesDummies)\n            {\n                MyScriptWrapper.GenerateMinesField<MyMineSmart>(MyScriptWrapper.GetEntity(minesDummy),\n                                                                MyMwcObjectBuilder_FactionEnum.Russian, 4,\n                                                                MyTextsWrapper.Get(MyTextsWrapperEnum.MineBasicHud).ToString(),\n                                                                MyHudIndicatorFlagsEnum.SHOW_BORDER_INDICATORS |\n                                                                MyHudIndicatorFlagsEnum.ALPHA_CORRECTION_BY_DISTANCE |\n                                                                MyHudIndicatorFlagsEnum.SHOW_TEXT |\n                                                                MyHudIndicatorFlagsEnum.SHOW_DISTANCE |\n                                                                MyHudIndicatorFlagsEnum.SHOW_FACTION_RELATION_MARKER |\n                                                                MyHudIndicatorFlagsEnum.SHOW_ONLY_IF_DETECTED_BY_RADAR);\n            }\n\n            m_playerIsOnStart = false;\n            m_challengerIsOnStart = false;\n            m_unfollowedCompanions = false;\n\n            foreach (var item in m_raceTowers)\n            {\n                if (item != null)\n                {\n                    foreach (var item2 in item)\n                    {\n                        MyScriptWrapper.UnhideEntity(MyScriptWrapper.GetEntity(item2));\n                    }\n                }\n            }\n            \n            MyScriptWrapper.UnhideEntity(MyScriptWrapper.GetEntity((uint)EntityID.Transporter));\n            \n            base.Load();\n        }\n\n        void Script_DialogueFinished(MyDialogueEnum dialogue, bool interrupted)\n        {\n            switch (dialogue)\n            {\n                case MyDialogueEnum.JUNKYARD_RETURN_0250:\n                    MyMissions.GetMissionByID(MyMissionID.JUNKYARD_RETURN_SPEEDSTER_DIALOGUE).Success();\n                    break;\n            }\n        }\n\n        public override void Unload()\n        {\n            if (!IsMainSector) return;\n\n            m_playerIsOnStart = false;\n            m_challengerIsOnStart = false;\n\n            MyScriptWrapper.OnDialogueFinished -= Script_DialogueFinished;\n            MyScriptWrapper.OnSpawnpointBotSpawned -= Script_BotSpawned;  \n\n\n            MyScriptWrapper.SetEntitySaveFlagDisabled(MyScriptWrapper.GetEntity((uint)EntityID.Transporter));\n            foreach (var item in m_raceTowers)\n            {\n                if (item != null)\n                {\n                    foreach (var item2 in item)\n                    {\n                        MyEntity tower = MyScriptWrapper.TryGetEntity(item2);\n                        if (tower != null)\n                        {\n                            MyScriptWrapper.SetEntitySaveFlagDisabled(tower);\n                        }\n                    }\n                }\n            }\n\n            m_detector_ReachStart = null;\n            m_detector_Explosion1 = null;\n            m_detector_Explosion2 = null;\n            m_detector_Explosion3 = null;\n            m_detector_TunnelExplosion = null;\n    \n            m_manjeet = null;\n            m_marcus = null;\n            m_tarja = null;\n            m_vitolino = null;\n\n            base.Unload();\n        }\n\n        public override void Update()\n        {\n            if (!IsMainSector) return;\n\n            base.Update();\n\n            if (m_playerIsOnStart && m_challengerIsOnStart && m_objective03_FlyToStart.IsAvailable())\n            {\n                m_objective03_FlyToStart.Success();\n                m_objective03_FlyToStart.MissionEntityIDs.Remove((uint) EntityID.DetectorStartRacePosition);\n            }\n\n        }\n\n        void O01MeetSmugglerLoaded(MyMissionBase sender)\n        {\n            //Because it sometimes, no one knows why, get broken when leaving chinese escape\n            MyScriptWrapper.UnhideEntity(MySession.PlayerShip);\n            MyScriptWrapper.EnableDetaching();\n            MySession.PlayerShip.Activate(true, false);\n\n\n\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.DesperateWithStress, 0, \"KA01\");\n            MyScriptWrapper.PlayDialogue(MyDialogueEnum.JUNKYARD_RETURN_0100);\n\n            var manjeetPosition = MyScriptWrapper.GetEntity((uint) EntityID.SmugglerStartPosition);\n\n            MyScriptWrapper.Move(m_manjeet, manjeetPosition.GetPosition(), manjeetPosition.GetForward(), manjeetPosition.GetUp());            \n        }\n\n        void O02SmugglerDialogueLoaded(MyMissionBase sender)\n        {\n            foreach (var item in m_companionSpawnpoints)\n            {\n                MyScriptWrapper.ActivateSpawnPoint(item);\n            }\n        }\n\n        void O03FlyToStartLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.OnBotReachedWaypoint += Script_BotReachedWaypoint;\n\n            m_detector_ReachStart.OnEntityEnter += StartPositionEntered;\n            m_detector_ReachStart.OnEntityLeave += StartPositionLeaved;\n            m_detector_ReachStart.On();\n\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Racer2);\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Racer3);\n            MyScriptWrapper.MarkEntity(MyScriptWrapper.GetEntity((uint)EntityID.DetectorStartRacePosition), MyTexts.FlyToStartingPoint, HUD.MyHudIndicatorFlagsEnum.SHOW_TEXT | HUD.MyHudIndicatorFlagsEnum.SHOW_DISTANCE | HUD.MyHudIndicatorFlagsEnum.SHOW_BORDER_INDICATORS);\n\n            m_manjeet.LookTarget = null;\n            m_manjeet.SetWaypointPath(\"SmugglerOut\");\n            m_manjeet.PatrolMode = CommonLIB.AppCode.ObjectBuilders.Object3D.MyPatrolMode.ONE_WAY;\n            m_manjeet.Patrol();\n            MyScriptWrapper.SetSleepDistance(m_manjeet, 3000);\n\n            MySmallShipBot challenger = (MySmallShipBot)MyScriptWrapper.GetEntity(\"Challenger\");\n            challenger.SetWaypointPath(\"Gotostart\");\n            challenger.PatrolMode = CommonLIB.AppCode.ObjectBuilders.Object3D.MyPatrolMode.ONE_WAY;\n            challenger.Patrol();\n\n            MyScriptWrapper.SetSleepDistance(challenger, 20000);\n\n            MyScriptWrapper.SetEntitiesEnabled(m_influenceSpheresFansBeforeStart, true);\n        }\n\n        void O04RaceLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.RemoveEntityMark(MyScriptWrapper.GetEntity((uint)EntityID.DetectorStartRacePosition));\n\n            MySmallShipBot challenger = (MySmallShipBot)MyScriptWrapper.GetEntity(\"Challenger\");\n            challenger.SetWaypointPath(\"Gotostart\");\n            challenger.PatrolMode = CommonLIB.AppCode.ObjectBuilders.Object3D.MyPatrolMode.ONE_WAY;\n            challenger.Patrol();\n            MyScriptWrapper.SetSleepDistance(challenger, 20000);\n\n            m_playerIsOnStart = true;\n            m_challengerIsOnStart = true;\n            m_unfollowedCompanions = true;\n\n\n            m_detector_Explosion1.OnEntityEnter += RaceExplosionsDetectorEntered;\n            m_detector_Explosion1.On();\n\n            m_detector_Explosion2.OnEntityEnter += RaceExplosionsDetectorEntered;\n            m_detector_Explosion2.On();\n\n            m_detector_Explosion3.OnEntityEnter += RaceExplosionsDetectorEntered;\n            m_detector_Explosion3.On();\n\n            m_detector_TunnelExplosion.OnEntityEnter += RaceExplosionsDetectorEntered;\n            m_detector_TunnelExplosion.On();\n\n            var detectorComentator = MyScriptWrapper.GetDetector(MyScriptWrapper.GetEntity((uint)EntityID.ComentatorDeetctor));\n            detectorComentator.OnEntityEnter += DetectorComentatorOnOnEntityEnter;\n            detectorComentator.On();\n\n\n            MyScriptWrapper.SetEntitiesEnabled(m_influenceSpheresFansAfterStart, true);\n\n\n        }\n\n        private void DetectorComentatorOnOnEntityEnter(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            MyScriptWrapper.PlaySound3D(sender, MySoundCuesEnum.VocRace04running);\n            sender.Off();\n        }\n\n        void O05WinLoaded(MyMissionBase sender)\n        {\n            MySmallShipBot challenger = (MySmallShipBot)MyScriptWrapper.GetEntity(\"Challenger\");\n            MyScriptWrapper.RemoveEntityMark(challenger);\n\n            MySmallShipBot racer2 = (MySmallShipBot)MyScriptWrapper.GetEntity(\"Racer2\");\n            MyScriptWrapper.RemoveEntityMark(racer2);\n\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.Victory, 3, \"KA06\");\n            m_unfollowedCompanions = false;\n            m_playerIsOnStart = true;\n            m_challengerIsOnStart = true;\n            MyScriptWrapper.Follow(MySession.PlayerShip, m_marcus);\n            MyScriptWrapper.Follow(MySession.PlayerShip, m_tarja);\n            MyScriptWrapper.Follow(MySession.PlayerShip, m_vitolino);\n            \n        }\n\n        void O07SmugglerDialogueReturnLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.StopTransition(3);\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.DesperateWithStress, 0, \"KA04\"); \n        }\n\n        void O03FlyToStartCleanUp(MyMissionBase sender)\n        {\n            MyScriptWrapper.OnBotReachedWaypoint -= Script_BotReachedWaypoint;\n\n            if (m_detector_ReachStart != null)\n            {\n                m_detector_ReachStart.Off();\n                m_detector_ReachStart.OnEntityEnter -= StartPositionEntered;\n                m_detector_ReachStart.OnEntityLeave -= StartPositionLeaved;\n            }\n            \n        }\n\n\n        private void Script_BotReachedWaypoint(MyEntity bot, MyEntity waypoint)\n        {\n            MySmallShipBot challenger = (MySmallShipBot)MyScriptWrapper.GetEntity(\"Challenger\");\n            MySmallShipBot racer2 = (MySmallShipBot)MyScriptWrapper.GetEntity(\"Racer2\");\n            MySmallShipBot racer3 = (MySmallShipBot)MyScriptWrapper.GetEntity(\"Racer3\");\n\n            if (waypoint == MyScriptWrapper.GetEntity((uint)EntityID.ChallengerStartPosWaypoint) && bot == challenger)\n            {\n                m_challengerIsOnStart = true;\n                MySmallShipBot botship = (MySmallShipBot)bot;\n                botship.LookTarget = MyScriptWrapper.GetEntity((uint)EntityID.LookAtDummy);\n                racer3.LookTarget = MyScriptWrapper.GetEntity((uint)EntityID.LookAtDummy);\n                racer2.LookTarget = MyScriptWrapper.GetEntity((uint)EntityID.LookAtDummy);\n            }\n            \n        }\n\n        private void StartPositionEntered(MyEntityDetector sender, MyEntity entity, int meetcriterias)\n        {\n            if (m_unfollowedCompanions == false)\n            {\n                MyScriptWrapper.StopFollow(m_marcus);\n                MyScriptWrapper.StopFollow(m_tarja);\n                MyScriptWrapper.StopFollow(m_vitolino);\n                m_unfollowedCompanions = true;\n            }\n            if (sender == m_detector_ReachStart && entity == MySession.PlayerShip)\n            {\n                m_playerIsOnStart = true;\n            }\n        }\n\n        private void StartPositionLeaved(MyEntityDetector sender, MyEntity entity)\n        {\n            if (sender == m_detector_ReachStart && entity == MySession.PlayerShip)\n            {\n                m_playerIsOnStart = false;\n            }\n        }\n\n\n        private void RaceExplosionsDetectorEntered(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (sender == m_detector_Explosion1 && entity == MySession.PlayerShip)\n            {\n                MyScriptWrapper.AddExplosions(m_explosionParticles1, MyExplosionTypeEnum.BOMB_EXPLOSION, 5);\n                \n                MyScriptWrapper.PlaySound3D(MyScriptWrapper.GetEntity(m_explosionParticles1[0]), MySoundCuesEnum.VocRace09dirtyTricks);\n                //MyScriptWrapper.IncreaseHeadShake(12f);\n            }\n            if (sender == m_detector_Explosion2 && entity == MySession.PlayerShip)\n            {\n                MyScriptWrapper.AddExplosions(m_explosionParticles2, MyExplosionTypeEnum.BOMB_EXPLOSION, 5);\n                //MyScriptWrapper.IncreaseHeadShake(10f);\n            }\n            if (sender == m_detector_Explosion3 && entity == MySession.PlayerShip)\n            {\n                MyScriptWrapper.AddExplosions(m_explosionParticles3, MyExplosionTypeEnum.BOMB_EXPLOSION, 5);\n                //MyScriptWrapper.IncreaseHeadShake(11f);\n            }\n            if (sender == m_detector_TunnelExplosion && entity == MySession.PlayerShip)\n            {\n                MyScriptWrapper.AddExplosion(MyScriptWrapper.GetEntity((uint)EntityID.ParticleExplosionInTunnel), MyExplosionTypeEnum.BOMB_EXPLOSION, 5);\n                //MyScriptWrapper.PlaySound3D(MySession.PlayerShip, MySoundCuesEnum.SfxAcquireDroneOn);\n                //MyScriptWrapper.PlaySound3D(MySession.PlayerShip, MySoundCuesEnum.SfxShipLargeExplosion);\n                MyScriptWrapper.PlayDialogue(MyDialogueEnum.JUNKYARD_RETURN_0500);\n            }\n        }\n\n        void Race_BotLoaded(MySmallShipBot bot)\n        {\n            switch (bot.Name)\n            {\n                case \"Racer2\":\n                    {\n                        var racer2 = new MyRacer(bot, MyTexts.RaceOpponent, \"Racing2\", 0.20f, 0.8f, 1.1f, 1.5f, 340, 250);\n                        m_objective04_Race.AddRacer(racer2);\n                    }\n                    break;\n                case \"Racer3\":\n                    {\n                        var racer3 = new MyRacer(bot, MyTexts.RaceOpponent, \"Racing3\", 0.20f, 0.8f, 1.1f, 1.5f, 340, 250);\n                        m_objective04_Race.AddRacer(racer3);\n                    }\n                    break;\n                case \"Challenger\":\n                    {\n                        var chalanger = new MyRacer(bot, MyTextsWrapper.Get(MyTextsWrapperEnum.Actor_RaceChallenger).ToString(), \"Racing\", 0.15f, 0.7f, 1.1f, 1.9f, 200, 150)\n                                            {\n                                                FrontDialogs = new List<MyDialogueEnum>() { MyDialogueEnum.RACING_CHALLENGER_0100_FRONT01, MyDialogueEnum.RACING_CHALLENGER_0200_FRONT02, MyDialogueEnum.RACING_CHALLENGER_0300_FRONT03, MyDialogueEnum.RACING_CHALLENGER_0400_FRONT04, MyDialogueEnum.RACING_CHALLENGER_0500_FRONT05 },\n                                                BehindDialogs = new List<MyDialogueEnum>() { MyDialogueEnum.RACING_CHALLENGER_0600_BEHIND01, MyDialogueEnum.RACING_CHALLENGER_0700_BEHIND02, MyDialogueEnum.RACING_CHALLENGER_0800_BEHIND03, MyDialogueEnum.RACING_CHALLENGER_0900_BEHIND04, MyDialogueEnum.RACING_CHALLENGER_1000_BEHIND05 }\n                                            };\n                        m_objective04_Race.AddRacer(chalanger);\n                    }\n                    break;\n            }\n        }\n\n        void Script_BotSpawned(MyEntity spawnpoint, MyEntity bot)\n        {\n            foreach (var item2 in new List<List<uint>> {m_raceFansSP1, m_raceFansSP2, m_raceFansSP3, m_raceFansSP4, m_raceFansSP5})\n            {\n                foreach (var item in item2)\n                {\n                    if (spawnpoint == MyScriptWrapper.GetEntity(item))\n                    {\n                        MySmallShipBot botship = (MySmallShipBot)bot;\n                        botship.LookTarget = MySession.PlayerShip;\n                        botship.DisplayName = MyTextsWrapper.Get(MyTextsWrapperEnum.RacingFan).ToString();\n                    }\n                }\n            }\n            if (spawnpoint == MyScriptWrapper.GetEntity((uint)EntityID.Racer2))\n            {\n                MySmallShipBot racer2 = (MySmallShipBot)bot;\n                racer2.SetName(\"Racer2\");\n                MyScriptWrapper.SetSleepDistance(bot, 10000f);\n                MyScriptWrapper.SetEntityDisplayName(bot, MyTextsWrapper.Get(MyTextsWrapperEnum.Actor_RaceOpponent).ToString());\n                MyScriptWrapper.SetEntityDestructible(racer2, false);\n            }\n            if (spawnpoint == MyScriptWrapper.GetEntity((uint)EntityID.Racer3))\n            {\n                MySmallShipBot racer3 = (MySmallShipBot)bot;\n                racer3.SetName(\"Racer3\");\n                MyScriptWrapper.SetSleepDistance(bot, 10000f);\n                MyScriptWrapper.SetEntityDisplayName(bot, MyTextsWrapper.Get(MyTextsWrapperEnum.Actor_RaceOpponent).ToString());\n                MyScriptWrapper.SetEntityDestructible(racer3, false);\n            }\n            if (spawnpoint == MyScriptWrapper.GetEntity((uint)EntityID.Challenger))\n            {\n                MySmallShipBot challenger = (MySmallShipBot)bot;\n                challenger.SetName(\"Challenger\");\n                MyScriptWrapper.SetSleepDistance(bot, 10000f);\n                MyScriptWrapper.SetEntityDisplayName(bot, MyTextsWrapper.Get(MyTextsWrapperEnum.Actor_RaceChallenger).ToString());\n                MyScriptWrapper.SetEntityDestructible(challenger, false);\n\n                MyScriptWrapper.PlayDialogue(MyDialogueEnum.JUNKYARD_RETURN_0250);\n            }\n            foreach (var item in m_companionSpawnpoints)\n            {\n                if (spawnpoint == MyScriptWrapper.GetEntity(item))\n                {\n                    MySmallShipBot botship = (MySmallShipBot)bot;\n                    botship.LookTarget = MySession.PlayerShip;\n                    MyScriptWrapper.SetEntityDestructible(bot, false);\n                }\n            }\n        }\n\n        private void RaceStartNumberChanged(int number)\n        {\n            switch (number) \n            {\n                case -1:\n                    ShutDownAllLights();\n                    MyScriptWrapper.MarkEntity(MyScriptWrapper.GetEntity((uint)EntityID.DetectorStartRacePosition), MyTexts.FlyToStartingPoint, MyHudIndicatorFlagsEnum.SHOW_TEXT | MyHudIndicatorFlagsEnum.SHOW_DISTANCE | MyHudIndicatorFlagsEnum.SHOW_BORDER_INDICATORS);\n                    break;\n                case 0:\n                    MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.LightFight, 3, \"KA04\");\n                    foreach (var item in m_raceGates[0])\n                    {\n                        MyScriptWrapper.Highlight(item, true, this);\n                    }\n                    MyScriptWrapper.SetEntitiesEnabled(m_greenLights, true);\n                    MyScriptWrapper.SetEntitiesEnabled(m_yellowLights, false);\n                    break;\n                case 1:\n                    MyScriptWrapper.SetEntitiesEnabled(m_yellowLights, true);\n                    MyScriptWrapper.SetEntitiesEnabled(m_redLights, false);\n                    break;\n                case 2:\n                    MyScriptWrapper.SetEntitiesEnabled(m_redLights, true);\n                    break;\n                case 3:\n                    ShutDownAllLights();\n                    break;\n            }\n            if (number > 0) \n            {\n                MyScriptWrapper.RemoveEntityMark(MyScriptWrapper.GetEntity((uint)EntityID.DetectorStartRacePosition));\n            }\n        }\n\n        void ShutDownAllLights()\n        {\n            MyScriptWrapper.SetEntitiesEnabled(m_redLights, false);\n            MyScriptWrapper.SetEntitiesEnabled(m_yellowLights, false);\n            MyScriptWrapper.SetEntitiesEnabled(m_greenLights, false);\n        }\n\n        void RaceMissionFailed(MySmallShipBot bot)\n        {\n            Fail(MyTextsWrapperEnum.Fail_RaceLost);\n        }\n\n        private void RaceMissonOnCheckpointReached(MyEntity checkPoint, int checkPointNumber)\n        {\n            if (checkPointNumber + 1 < m_raceGates.Count) // highlight and activate towers on next checkpoint except for last checkpoint\n            {\n                foreach (var item in m_raceGates[checkPointNumber + 1])\n                {\n                    MyScriptWrapper.Highlight(item, true, this);\n                }\n                if (m_raceTowers[checkPointNumber + 1] != null) // only if there are some towers\n                {\n                    MyScriptWrapper.SetEntitiesEnabled(m_raceTowers[checkPointNumber + 1], true);\n                }\n            }\n            foreach (var item in m_raceGates[checkPointNumber]) // stop highlight and deactivate towers on current checkpoint\n            {\n                    MyScriptWrapper.Highlight(item, false,this);\n            }\n            if (m_raceTowers[checkPointNumber] != null) // only if there are some towers\n            {\n                MyScriptWrapper.SetEntitiesEnabled(m_raceTowers[checkPointNumber], false);\n            }\n            switch (checkPointNumber)\n            {\n                case 1:\n                    MyScriptWrapper.PlayDialogue(MyDialogueEnum.JUNKYARD_RETURN_0400);\n                    break;\n                case 2:\n                    MyScriptWrapper.PlayDialogue(MyDialogueEnum.JUNKYARD_RETURN_0900);\n                    MyScriptWrapper.PlaySound3D(MyScriptWrapper.GetEntity(m_raceGates[checkPointNumber][0]),MySoundCuesEnum.VocRace05minefields);\n                    break;\n                case 3:\n                    MyScriptWrapper.ActivateSpawnPoints(m_raceFansSP1);\n                    MyScriptWrapper.PlayDialogue(MyDialogueEnum.JUNKYARD_RETURN_0800);\n                    break;\n                case 4:\n                    MyScriptWrapper.ActivateSpawnPoints(m_raceFansSP2);\n                    MyScriptWrapper.ActivateSpawnPoints(m_raceFansSP3);\n                    break;\n                case 5:\n                    MyScriptWrapper.ActivateSpawnPoints(m_raceFansSP4);\n                    break;\n                case 6:\n                    MyScriptWrapper.PlaySound3D(MyScriptWrapper.GetEntity(m_raceGates[checkPointNumber][0]), MySoundCuesEnum.VocRace06speedDuel);\n                    break;\n                case 9:\n                    MyScriptWrapper.PlaySound3D(MyScriptWrapper.GetEntity(m_raceGates[checkPointNumber][0]), MySoundCuesEnum.VocRace07allThose);\n                    break;\n                case 10:\n                    MyScriptWrapper.ActivateSpawnPoints(m_raceFansSP5);\n                    MyScriptWrapper.PlayDialogue(MyDialogueEnum.JUNKYARD_RETURN_1000);\n                    break;\n                case 7:\n                    MyScriptWrapper.PlayDialogue(MyDialogueEnum.JUNKYARD_RETURN_0600);\n                    break;\n                case 11:\n                    MyScriptWrapper.PlayDialogue(MyDialogueEnum.JUNKYARD_RETURN_0700);\n                    break;\n                case 12:\n                    MyScriptWrapper.PlayDialogue(MyDialogueEnum.JUNKYARD_RETURN_1100);\n                    break;\n                case 13:\n                    MyScriptWrapper.PlaySound3D(MyScriptWrapper.GetEntity(m_raceGates[checkPointNumber][0]), MySoundCuesEnum.VocRace08moving);\n                    break;\n                case 15:\n                    MyScriptWrapper.PlaySound3D(MyScriptWrapper.GetEntity(m_raceGates[checkPointNumber][0]), MySoundCuesEnum.VocRace10inside);\n                    break;\n                case 18:\n                    MyScriptWrapper.PlayDialogue(MyDialogueEnum.JUNKYARD_RETURN_1200);\n                    MyScriptWrapper.PlaySound3D(MyScriptWrapper.GetEntity(m_raceGates[checkPointNumber][0]), MySoundCuesEnum.VocRace11wire);\n                    break;\n            }\n        }\n\n\n    }\n       \n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/SinglePlayer/MyLaikaMission.cs",
    "content": "﻿#region Using\n\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Audio.Dialogues;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.AppCode.Game.Missions.Components;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.AppCode.Game.Entities.CargoBox;\nusing MinerWars.AppCode.Game.Managers.EntityManager;\nusing MinerWars.AppCode.Game.Entities.Prefabs;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.AppCode.Game.Entities.SubObjects;\nusing MinerWars.Resources;\n\n#endregion\n\nnamespace MinerWars.AppCode.Game.Missions.SinglePlayer\n{\n    class MyLaikaMission : MyMission\n    {\n        #region Enums\n\n        private enum EntityID\n        {\n            StartLocation = 4988,\n            Objective01_Hangar = 3891,\n            Objective01_Generator = 14177,\n            Objective02_CommandHub = 39164,\n            Objective03_Transmitter1Hub = 35601,\n            Objective04_Transmitter2Hub = 35595,\n            Objective05_Warhead = 29774,\n\n            MothershipToHide = 1736,\n            MothershipToShow = 1759,\n            \n            BaseMain = 278,\n            BaseStation1 = 1664,\n            BaseStation2 = 1590,\n            BaseStore = 14152,\n            BaseCivilianParts = 7456,\n\n            Spawnpoint_01 = 1969,\n            Spawnpoint_03 = 4102,\n            Spawnpoint_04 = 4108,\n            \n            Spawnpoint_HangarAmbush1 = 1970,\n            Spawnpoint_HangarAmbush2 = 1971,\n            Spawnpoint_Hangar_Back = 1938,\n            Spawnpoint_ResearchPatrol = 9638,\n            Spawnpoint_CivilianArea = 4777,\n            Spawnpoint_ToLeftHub = 29246,\n            Spawnpoint_ToRightHub = 29247,\n            Spawnpoint_Ambush = 9627,\n            SpawnpointHub2 = 29494,\n            Spawnpoint_Hounds_Asteroid = 34666,\n\n            Spawnpoint_Hounds_Left_Up = 36881,\n            Spawnpoint_Hounds_Left_Down = 36880,\n\n            Spawnpoint_Hounds_Right_Up = 36878,\n            Spawnpoint_Hounds_Right_Down = 36879,\n\n            Spawnpoint_Hounds_Base_Up = 34667,\n            Spawnpoint_Hounds_Base_Down = 36877,\n\n            Detector_Warhead = 29492,\n\n            Detector_Hangar = 3890,\n            Door_ToHangar01 = 996,\n            Door_ToHangar02 = 383,\n\n            Detector_Pipe = 9626,\n            PipeToDestroy = 419,\n            \n            Detector_PlayerInPipes = 29248,\n            GrilleToDestroy = 4800,\n\n            Detector_RightEntered = 37497,\n            Detector_LeftEntered = 37499,\n\n            Waypoint_Right_Wait = 1541,\n            Waypoint_Right_Voxel = 1173,\n            Waypoint_Right_Lattice1 = 9615,\n            Waypoint_Right_Lattice2 = 1469,\n            Waypoint_Left_Wait = 37189,\n            Waypoint_Left_Lattice1 = 35569,\n            Waypoint_Left_Lattice2 = 1429,\n            Waypoint_Right_Door = 29495,\n\n            Waypoint_Unsecret_Escape = 28470,\n\n            Dummy_DestroyVoxel01 = 35591,\n            Dummy_DestroyVoxel02 = 35592,\n            Dummy_DestroyVoxel03 = 35593,\n\n            RightLatticeToDestroy0 = 55544,\n            RightLatticeToDestroy1 = 8661,\n            RightLatticeToDestroy2 = 1601,\n            LeftLatticeToDestroy1 = 9061,\n            LeftLatticeToDestroy2 = 1607,\n\n            Detector_Right_Down = 36562,\n            Detector_Right_Up = 36873,\n\n            Detector_Left_Down = 36558,\n            Detector_Left_Up = 36875,\n\n            Detector_Base_Down = 36563,\n            Detector_Base_Up = 36550,\n\n            RussianMothership = 38882,\n\n            DoorLock_Right1 = 1597,\n            DoorLock_Right2 = 1608,\n            DoorLock_Left1 = 1679,\n            DoorLock_Left2 = 1693,\n\n            PipeToDestroy_waytowarhead = 826,\n\n            Detector_StopRussianMothershipMove = 47214,\n            Spawn_MothershipHounds = 47218,\n\n            Detector_StopMadelynMove = 47216,\n\n            Particle_Ambush_mist = 57378,\n            Particle_Ambush_explosion = 57379,\n            Particle_Ambush_smoke = 57380,\n\n            Prefab_Ambush_1 = 58293,\n            Prefab_Ambush_2 = 58294,\n\n            Spawnpoint_LastFight_1 = 59208,\n            Spawnpoint_LastFight_2 = 59223,\n            \n            Dummy_Madelyn_Moved = 61142,\n\n            Influence_Sphere_Fallout = 62119,\n            Stuff_to_remove_prefab_container1 = 45316,\n            Stuff_to_remove_prefab_container4 = 8566,\n\n            Waypoint_ToAmbush = 1240,\n\n            Dummy_Remove_stuff_after_explosion = 16778189,\n\n            CommandCenterDetector = 16779246,\n        }\n\n        private List<uint> m_MothershipToHideThrusters = new List<uint>\n        {\n            25402, 25403, 25404, 25405, 25406, 25407\n        };\n\n        private List<uint> m_MothershipToShowThrusters = new List<uint>\n        {\n            25756, 25757, 26106, 26107, 26108, 26109,\n        };\n\n        private List<uint> m_asteroidDetectors = new List<uint>\n        {\n            36196, 36198, 36200, 36202, 36204, 36206, 36208, 36210, 36212\n        };\n\n        private List<uint> m_houndSpawnpoints = new List<uint>\n        {\n            (uint)EntityID.Spawnpoint_Hounds_Asteroid, (uint)EntityID.Spawnpoint_Hounds_Base_Down, (uint)EntityID.Spawnpoint_Hounds_Base_Up, (uint)EntityID.Spawnpoint_Hounds_Left_Down, (uint)EntityID.Spawnpoint_Hounds_Left_Up, (uint)EntityID.Spawnpoint_Hounds_Right_Down, (uint)EntityID.Spawnpoint_Hounds_Right_Up, (uint)EntityID.Spawn_MothershipHounds\n        };\n\n        private List<uint> m_smallShips = new List<uint>\n        {\n            10, 23\n        };\n\n        private List<uint> m_asteroidSecretWaypoints = new List<uint>\n        {\n            28470, 28153, 28098, 36246, 28171, 28167, 28165, 28163, 28199, 36232, 36230, 31391, 28473, 28130\n        };\n\n        private List<uint> m_leavePipeWaypoints = new List<uint>\n        {\n            35567,\n        };\n\n        private List<uint> m_stuffWithRussianMothership = new List<uint>\n        {\n            (uint)EntityID.Detector_StopRussianMothershipMove, (uint)EntityID.Spawn_MothershipHounds\n        };\n\n        private List<uint> m_stuffWithMadelyn = new List<uint>\n        {\n            (uint)EntityID.Detector_StopMadelynMove\n        };\n\n        private List<uint> m_staticAsteroidRubble = new List<uint>\n        {\n            31, 18\n        };\n\n        public override void ValidateIds()\n        {\n            foreach (var value in Enum.GetValues(typeof(EntityID)))\n            {\n                MyScriptWrapper.GetEntity((uint)((value as EntityID?).Value));\n            }\n            foreach (var value in m_MothershipToHideThrusters)\n            {\n                MyScriptWrapper.GetEntity(value);\n            }\n            foreach (var value in m_MothershipToShowThrusters)\n            {\n                MyScriptWrapper.GetEntity(value);\n            }\n            foreach (var value in m_asteroidDetectors)\n            {\n                MyScriptWrapper.GetEntity(value);\n            }\n            foreach (var value in m_smallShips)\n            {\n                MyScriptWrapper.GetEntity(value);\n            }\n            foreach (var value in m_asteroidSecretWaypoints)\n            {\n                MyScriptWrapper.GetEntity(value);\n            }\n            foreach (var value in m_staticAsteroidRubble)\n            {\n                MyScriptWrapper.GetEntity(value);\n            }\n        }\n\n        #endregion\n\n        private float m_MadelynSpeed;\n        private float m_RussianSpeed;\n\n        MyEntity m_hangar;\n        bool m_laikaBaseCalled = false;\n\n        #region Submissions\n        private MyObjective m_generatorSubmission;\n        private MyObjective m_toCommandCentreSubmission;\n        private MyObjective m_warheadSubmission;\n        private MyObjective m_communication01Submission;\n        private MyObjective m_communication02Submission;\n        private MyObjective m_escapeSubmission;\n        \n        public MyLaikaMission()\n        {\n            ID = MyMissionID.LAIKA; /* ID must be added to MyMissions.cs */\n            Name = MyTextsWrapperEnum.LAIKA;\n            Description = MyTextsWrapperEnum.LAIKA_Description;\n            DebugName = new StringBuilder(\"02-Laika\");\n            Flags = MyMissionFlags.Story;\n\n            MyMwcVector3Int baseSector = new MyMwcVector3Int(-3851812, 0, -2054500);\n\n            /* sector where the mission is located */\n            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation);\n\n            RequiredMissions = new MyMissionID[] { MyMissionID.EAC_SURVEY_SITE };\n            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.LAIKA_LASTSTAND };\n            RequiredActors = new MyActorEnum[] { MyActorEnum.MARCUS, MyActorEnum.MADELYN };\n\n            m_objectives = new List<MyObjective>();\n\n            var toHangarSubmission = new MyObjective(\n                (MyTextsWrapperEnum.LAIKA_GOTO_10_Name),\n                MyMissionID.LAIKA_GOTO_10,\n                (MyTextsWrapperEnum.LAIKA_GOTO_10_Description),\n                null,\n                this,\n                new MyMissionID[] { },\n                new MyMissionLocation(baseSector, (uint)EntityID.Objective01_Hangar)\n            ) { HudName = MyTextsWrapperEnum.HudHangar };\n            //{ SaveOnSuccess = true };\n            toHangarSubmission.OnMissionUpdate += new MissionHandler(toHangarSubmission_OnMissionUpdate);\n\n            //toHangarSubmission.OnMissionSuccess += ToHangarSubmissionSuccess;\n            toHangarSubmission.OnMissionLoaded += ToHangarSubmissionLoaded;\n            m_objectives.Add(toHangarSubmission);\n\n            var inHangarSubmission = new MyTimedObjective(\n                MyTextsWrapperEnum.Null,\n                MyMissionID.LAIKA_GOTO_11,\n                MyTextsWrapperEnum.Null,\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.LAIKA_GOTO_10 },\n                TimeSpan.FromSeconds(0.2f),\n                successDialogId: MyDialogueEnum.LAIKA_0275_INSIDEHANGAR\n            ) { DisplayCounter = false };\n\n            inHangarSubmission.OnMissionSuccess += InHangarSubmissionSuccess;\n            m_objectives.Add(inHangarSubmission);\n\n            var inHangarSubmission2 = new MyTimedObjective(\n                MyTextsWrapperEnum.Null,\n                MyMissionID.LAIKA_GOTO_12,\n                MyTextsWrapperEnum.Null,\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.LAIKA_GOTO_11 },\n                TimeSpan.FromSeconds(5)\n            ) { DisplayCounter = false };\n            m_objectives.Add(inHangarSubmission2);\n\n            m_generatorSubmission = new MyObjectiveDestroy(\n                (MyTextsWrapperEnum.LAIKA_GOTO_GENERATOR_Name),\n                MyMissionID.LAIKA_GOTO_GENERATOR,\n                (MyTextsWrapperEnum.LAIKA_GOTO_GENERATOR_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.LAIKA_GOTO_12, },\n                new List<uint> { (uint)EntityID.Objective01_Generator },\n                successDialogID: MyDialogueEnum.LAIKA_0300_AFTERHANGAR,\n                startDialogID: MyDialogueEnum.LAIKA_0277_DESTROYGENERATOR\n            ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudGenerator };\n            m_generatorSubmission.OnMissionSuccess += GeneratorSubmissionSuccess;\n            m_generatorSubmission.OnMissionLoaded += GeneratorSubmissionLoaded;\n            m_objectives.Add(m_generatorSubmission);\n\n            m_toCommandCentreSubmission = new MyObjective(\n                (MyTextsWrapperEnum.LAIKA_GOTO_COMMAND_Name),\n                MyMissionID.LAIKA_GOTO_COMMAND,\n                (MyTextsWrapperEnum.LAIKA_GOTO_COMMAND_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.LAIKA_GOTO_GENERATOR },\n                null,\n                new List<uint>() { (uint)EntityID.Objective02_CommandHub },\n                successDialogId: MyDialogueEnum.LAIKA_0500_COMMAND,\n                startDialogId: MyDialogueEnum.LAIKA_0350_GPS\n            ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudCommandCenter };\n            m_toCommandCentreSubmission.OnMissionSuccess += ToCommandCentreSubmissionSuccess;\n            m_toCommandCentreSubmission.OnMissionLoaded += ToCommandCentreSubmissionLoaded;\n            m_objectives.Add(m_toCommandCentreSubmission);\n\n\n            m_communication01Submission = new MyObjective(\n                (MyTextsWrapperEnum.LAIKA_GOTO_COMMUNICATION_01_Name),\n                MyMissionID.LAIKA_GOTO_COMMUNICATION_01,\n                (MyTextsWrapperEnum.LAIKA_GOTO_COMMUNICATION_01_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.LAIKA_GOTO_COMMAND },\n                null,\n                new List<uint>() { (uint)EntityID.Objective03_Transmitter1Hub },\n                successDialogId: MyDialogueEnum.LAIKA_0700_LEFTHUB\n            ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudCommunicationHub };\n            m_communication01Submission.OnMissionSuccess += Communication01SubmissionSuccess;\n            m_communication01Submission.OnMissionLoaded += Communication01SubmissionLoaded;\n            m_objectives.Add(m_communication01Submission);\n\n\n            m_communication02Submission = new MyObjective(\n                (MyTextsWrapperEnum.LAIKA_GOTO_COMMUNICATION_02_Name),\n                MyMissionID.LAIKA_GOTO_COMMUNICATION_02,\n                (MyTextsWrapperEnum.LAIKA_GOTO_COMMUNICATION_02_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.LAIKA_GOTO_COMMUNICATION_01 },\n                null,\n                new List<uint>() { (uint)EntityID.Objective04_Transmitter2Hub },\n                successDialogId: MyDialogueEnum.LAIKA_0800_RIGHTHUB,\n                startDialogId: MyDialogueEnum.LAIKA_0700_LEFTHUB2\n            ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudCommunicationHub };\n            m_communication02Submission.OnMissionSuccess += Communication02SubmissionSuccess;\n            m_communication02Submission.OnMissionLoaded += Communication02SubmissionLoaded;\n            m_objectives.Add(m_communication02Submission);\n\n\n            m_warheadSubmission = new MyObjective(\n                (MyTextsWrapperEnum.LAIKA_WARHEAD_Name),\n                MyMissionID.LAIKA_WARHEAD,\n                (MyTextsWrapperEnum.LAIKA_WARHEAD_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.LAIKA_GOTO_COMMUNICATION_02 },\n                null,\n                new List<uint>() { (uint)EntityID.Objective05_Warhead },\n                successDialogId: MyDialogueEnum.LAIKA_1800_WARHEAD_DONE\n            ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudWarhead };\n            m_warheadSubmission.OnMissionSuccess += WarheadSubmissionSuccess;\n            m_warheadSubmission.OnMissionLoaded += WarheadSubmissionLoaded;\n            m_objectives.Add(m_warheadSubmission);\n\n\n            m_escapeSubmission = new MyObjective(\n                (MyTextsWrapperEnum.LAIKA_RETURN_Name),\n                MyMissionID.LAIKA_RETURN,\n                (MyTextsWrapperEnum.LAIKA_RETURN_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.LAIKA_WARHEAD },\n                new MyMissionLocation(baseSector, MyMissionLocation.MADELYN_HANGAR),\n                radiusOverride: 1000\n            ) { HudName = MyTextsWrapperEnum.HudMadelynsSapho };\n            m_escapeSubmission.OnMissionLoaded += EscapeSubmissionLoaded;\n            m_escapeSubmission.OnMissionSuccess += EscapeSubmissionSuccess;\n            m_escapeSubmission.OnMissionUpdate += EscapeSubmissionUpdate;\n            m_escapeSubmission.OnMissionCleanUp += EscapeSubmissionUnload;\n            m_objectives.Add(m_escapeSubmission);\n                                \n            var hideSubmission = new MyTimedObjective(\n                (MyTextsWrapperEnum.LAIKA_LASTSTAND_Name),\n                MyMissionID.LAIKA_LASTSTAND,\n                (MyTextsWrapperEnum.LAIKA_LASTSTAND_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.LAIKA_RETURN },\n                TimeSpan.FromSeconds(15), true\n            ) { SaveOnSuccess = false,\n                DisplayCounter = false,\n                HudName = MyTextsWrapperEnum.Nothing\n            };\n            m_objectives.Add(hideSubmission);\n            hideSubmission.OnMissionLoaded += new MissionHandler(hideSubmission_OnMissionLoaded);\n        }\n\n        #endregion\n\n        private MyTimerActionDelegate m_giveHoundsTarget;\n        private MySmallShipBot m_Marcus;\n        private bool m_tunnelToRight = false;\n        private bool m_tunnelToLeft = false;\n\n        private Vector3 m_mothershipPosition_Russian_Final = new Vector3(-3046, -1489, -6821);\n        private Vector3 m_mothershipPosition_Madelyn_Final = new Vector3(-215.0004f, -1853.138f, -4312.602f);\n\n        private bool m_flyRussian = false;\n        private bool m_flyMadelyn = false;\n\n        MyEntity m_Madelyn;\n        MyEntity m_RussianMS;\n\n        public override void Accept()\n        {\n            base.Accept();\n            MyScriptWrapper.AddHackingToolToPlayersInventory(3);\n\n            ((IMyUseableEntity)MyScriptWrapper.GetEntity((uint)EntityID.Objective02_CommandHub)).UseProperties.HackType = MyUseType.None;\n            ((IMyUseableEntity)MyScriptWrapper.GetEntity((uint)EntityID.Objective03_Transmitter1Hub)).UseProperties.HackType = MyUseType.None;\n            ((IMyUseableEntity)MyScriptWrapper.GetEntity((uint)EntityID.Objective04_Transmitter2Hub)).UseProperties.HackType = MyUseType.None;\n            ((IMyUseableEntity)MyScriptWrapper.GetEntity((uint)EntityID.Objective05_Warhead)).UseProperties.HackType = MyUseType.None;\n        }\n\n        public override void Load()\n        {\n            if (!IsMainSector)\n                return;\n\n            foreach (var item in m_staticAsteroidRubble)\n            {\n                MyScriptWrapper.HideEntity(MyScriptWrapper.GetEntity(item));\n            }\n            MyScriptWrapper.HideEntity(MyScriptWrapper.GetEntity((uint)EntityID.Influence_Sphere_Fallout));\n\n            m_Marcus = MyScriptWrapper.GetEntity(\"Marcus\") as MySmallShipBot;\n\n            m_hangar = MyScriptWrapper.GetEntity((uint)EntityID.Objective01_Hangar);\n\n            MyScriptWrapper.OnSpawnpointBotSpawned += OnSpawnpointBotSpawned;\n            MyScriptWrapper.EntityHacked += OnEntityHacked;\n            MyScriptWrapper.OnBotReachedWaypoint += OnBotReachedWaypoint;\n            MyScriptWrapper.EntityDeath += OnEntityDeath;\n\n            m_MadelynSpeed = 200f;\n            m_RussianSpeed = 100f;\n            m_laikaBaseCalled = false;\n\n            var pipeDetector = MyScriptWrapper.GetDetector((uint)EntityID.Detector_Pipe);\n            pipeDetector.OnEntityEnter += PipeEntered;\n\n            var rightEnteredDetector = MyScriptWrapper.GetDetector((uint)EntityID.Detector_RightEntered);\n            rightEnteredDetector.OnEntityEnter += RightEntered;\n\n            var leftEnteredDetector = MyScriptWrapper.GetDetector((uint)EntityID.Detector_LeftEntered);\n            leftEnteredDetector.OnEntityEnter += LeftEntered;\n\n            m_Madelyn = MyScriptWrapper.GetEntity(\"Madelyn\");\n            m_RussianMS = MyScriptWrapper.GetEntity((uint)EntityID.RussianMothership);\n            //MyScriptWrapper.PrepareMotherShipForMove(m_RussianMS);\n\n            foreach (var ship in m_smallShips)\n            {\n                MyScriptWrapper.DisableShip(MyScriptWrapper.TryGetEntity(ship));\n            }\n\n            if (MyScriptWrapper.IsMissionFinished(MyMissionID.LAIKA_GOTO_10))\n            {\n                ConvertToKGB();\n            }\n            else\n            {\n                MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.Door_ToHangar01), false);\n                MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.Door_ToHangar02), false);\n            }\n\n            if (!MyScriptWrapper.AreMissionFinished(new MyMissionID[] { MyMissionID.LAIKA_GOTO_COMMUNICATION_01, MyMissionID.LAIKA_GOTO_COMMUNICATION_02 }))\n            {\n                HideMothershipToShow();\n                MyScriptWrapper.HideEntity(MyScriptWrapper.GetEntity((uint)EntityID.RussianMothership));\n            }\n\n            BoundingBox box = MyScriptWrapper.GetEntity((uint)EntityID.Dummy_Remove_stuff_after_explosion).WorldAABB;\n            //MyEntities.GetIntersectionWithSphere(ref sphere, null, null, true, false, ref entitiesAfterExplosion);\n            List<MyEntity> entitiesAfterExplosion = MyGamePruningStructure.GetAllEntitiesInBox(ref box, MyGamePruningStructure.QueryFlags.Others);\n            m_entitiesAfterExplosion.Clear();\n            foreach (MyEntity entity in entitiesAfterExplosion)\n            {\n                if (entity.EntityId.HasValue)\n                {\n                    if ((entity is MySmallShipBot) ||\n                        (entity is MyCargoBox) ||\n                        (entity is MyVoxelMap) ||\n                        (entity is MyStaticAsteroid) ||\n                        (entity is MyDummyPoint) ||\n                        (entity is MyPrefabLight) ||\n                        (entity is MyPrefabHangar))\n                    {\n                        m_entitiesAfterExplosion.Add(entity.EntityId.Value.NumericValue);\n                    }\n                }\n            }\n\n            if (MyScriptWrapper.IsMissionFinished(MyMissionID.LAIKA_GOTO_COMMAND))\n            {\n                HideMothershipToHide();\n                AsteroidDetectorsActivate();\n\n                if (MyScriptWrapper.IsMissionFinished(MyMissionID.LAIKA_GOTO_COMMUNICATION_01) || MyScriptWrapper.IsMissionFinished(MyMissionID.LAIKA_GOTO_COMMUNICATION_02))\n                {\n                    MyScriptWrapper.DestroyEntities(new List<uint> { (uint)EntityID.GrilleToDestroy });\n                    MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Spawnpoint_ToLeftHub);\n                    MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Spawnpoint_ToRightHub);\n                    if (MyScriptWrapper.IsMissionFinished(MyMissionID.LAIKA_GOTO_COMMUNICATION_01) == MyScriptWrapper.IsMissionFinished(MyMissionID.LAIKA_GOTO_COMMUNICATION_02))\n                    {\n                        SetHoundDetectorsBase();\n                    }\n                    else\n                    {\n                        if (!MyScriptWrapper.IsEntityDead((uint)EntityID.PipeToDestroy))\n                        {\n                            pipeDetector.On();\n                        }\n                        /*\n                        if (MyScriptWrapper.IsMissionFinished(MyMissionID.LAIKA_GOTO_COMMUNICATION_01))\n                        {\n                            MyScriptWrapper.PlayDialogue(MyDialogueEnum.LAIKA_0720_AFTERLEFTHUB);\n                        } */\n                    }\n                }\n                else\n                {\n                    MyEntityDetector playerInPipesDetector = MyScriptWrapper.GetDetector((uint)EntityID.Detector_PlayerInPipes);\n                    playerInPipesDetector.OnEntityEnter += PlayerInPipes;\n                    playerInPipesDetector.On();\n                }\n\n                if (MyScriptWrapper.IsMissionFinished(MyMissionID.LAIKA_GOTO_COMMUNICATION_01) && !MyScriptWrapper.IsMissionFinished(MyMissionID.LAIKA_GOTO_COMMUNICATION_02))\n                {\n                    SetHoundDetectorsLeft();\n                }\n                else if (MyScriptWrapper.IsMissionFinished(MyMissionID.LAIKA_GOTO_COMMUNICATION_02) && !MyScriptWrapper.IsMissionFinished(MyMissionID.LAIKA_GOTO_COMMUNICATION_01))\n                {\n                    SetHoundDetectorsRight();\n                }\n\n                if (MyScriptWrapper.IsMissionFinished(MyMissionID.LAIKA_GOTO_COMMUNICATION_02))\n                {\n                    RestartRussian();\n                    RestartMadelyn();\n                }\n                else\n                {\n                    StopRussian();\n                    //StopMadelyn();\n                }\n            }\n\n            base.Load();\n        }\n\n\n        public override void Unload()\n        {\n            base.Unload();\n\n            MyScriptWrapper.OnSpawnpointBotSpawned -= OnSpawnpointBotSpawned;\n            MyScriptWrapper.EntityHacked -= OnEntityHacked;\n            MyScriptWrapper.OnBotReachedWaypoint -= OnBotReachedWaypoint;\n            MyScriptWrapper.EntityDeath -= OnEntityDeath;\n\n            m_Marcus = null;\n            m_Madelyn = null;\n            m_hangar = null;\n            m_RussianMS = null;\n        }\n\n        //bool explode = false;\n\n        public override void Update()\n        {\n            if (!IsMainSector)\n                return;\n\n            base.Update();\n\n            //RestartMadelyn();\n            //StopMadelyn();\n\n             /*\n            if (MySession.PlayerShip.Physics.LinearVelocity.Length() > 10)\n            {\n                explode = true;\n            } \n              \n            if (explode)\n            {\n                MyNuclearExplosion.MakeExplosion(MyScriptWrapper.GetEntity(m_warheadSubmission.MissionEntityIDs[0]).GetPosition());\n                explode = false;\n                return;\n            }  */\n\n            if (m_flyRussian)\n            {\n                // MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"FlyMS\");\n                //     Too bad performance\n                /*if (MoveMotherShipForward(m_RussianMS, m_RussianSpeed, m_mothershipPosition_Russian_Final, m_stuffWithRussianMothership))\n                {\n                    if (MyScriptWrapper.IsMissionFinished(MyMissionID.LAIKA_RETURN))\n                    {\n                        m_RussianSpeed = 250;\n                    }\n                    else\n                    {\n                        StopRussian();\n                        var russianStopDetector = MyScriptWrapper.GetDetector((uint)EntityID.Detector_StopRussianMothershipMove);\n                        russianStopDetector.Off();\n                    }\n                } \n              */\n                MyScriptWrapper.Move(m_RussianMS, m_mothershipPosition_Russian_Final);\n                var russianStopDetector = MyScriptWrapper.GetDetector((uint)EntityID.Detector_StopRussianMothershipMove);\n                russianStopDetector.Off();\n\n                m_flyRussian = false;\n            }\n           \n            if (m_flyMadelyn)\n            {\n                if (MoveMotherShipForward(m_Madelyn, m_MadelynSpeed, m_mothershipPosition_Madelyn_Final, m_stuffWithMadelyn))\n                {\n                    if (!MyScriptWrapper.IsMissionFinished(MyMissionID.LAIKA_WARHEAD))\n                    {\n                        StopMadelyn();\n                        var madelynStopDetector = MyScriptWrapper.GetDetector((uint)EntityID.Detector_StopMadelynMove);\n                        madelynStopDetector.Off();\n                        MyScriptWrapper.RegenerateWaypointGraph();\n                    }\n                }\n            }\n        }\n\n        #region Event Handlers\n        void OnSpawnpointBotSpawned(MyEntity spawnpoint, MyEntity bot)\n        {\n            if (m_houndSpawnpoints.Contains(MyScriptWrapper.GetEntityId(spawnpoint)))\n            {\n                ((MySmallShipBot)MyScriptWrapper.GetSpawnPointLeader(spawnpoint)).Attack(MySession.PlayerShip);\n            }\n            else if ((MyScriptWrapper.GetEntityId(spawnpoint) == (uint)EntityID.Spawnpoint_LastFight_2) && (MyScriptWrapper.IsMissionFinished(MyMissionID.LAIKA_RETURN)))\n            {\n                ((MySmallShipBot)MyScriptWrapper.GetSpawnPointLeader(spawnpoint)).Attack(MySession.PlayerShip);\n            }\n        }\n\n        void OnEntityHacked(MyEntity entity)\n        {\n            if (entity == MyScriptWrapper.GetEntity((uint)EntityID.Objective02_CommandHub))\n            {\n                m_toCommandCentreSubmission.Success();                \n            } \n            if (entity == MyScriptWrapper.GetEntity((uint)EntityID.Objective03_Transmitter1Hub))\n            {\n                m_communication01Submission.Success();\n            }\n            if (entity == MyScriptWrapper.GetEntity((uint)EntityID.Objective04_Transmitter2Hub))\n            {\n                m_communication02Submission.Success();\n            }\n            if (entity == MyScriptWrapper.GetEntity((uint)EntityID.Objective05_Warhead))\n            {\n                m_warheadSubmission.Success();\n            }\n        }\n\n        void OnBotReachedWaypoint(MyEntity bot, MyEntity waypoint)\n        {\n            if (bot == MyScriptWrapper.GetSpawnPointLeader((uint)EntityID.Spawnpoint_ToRightHub))\n            {\n                switch (MyScriptWrapper.GetEntityId(waypoint))\n                {\n                    case (uint)EntityID.Waypoint_Right_Wait:\n                        if (!MyScriptWrapper.IsMissionFinished(MyMissionID.LAIKA_GOTO_COMMUNICATION_02))\n                        {\n                            ((MySmallShipBot)bot).SuspendPatrol = true;\n                        }\n                        else\n                        {\n                            MyScriptWrapper.DestroyEntities(new List<uint> { (uint)EntityID.RightLatticeToDestroy0 }); \n                        }\n                        break;\n                    case (uint)EntityID.Waypoint_Right_Voxel:\n                        if (!m_tunnelToRight)\n                        {\n                        MyScriptWrapper.AddExplosion(MyScriptWrapper.GetEntity((uint)EntityID.Dummy_DestroyVoxel01).GetPosition(), Explosions.MyExplosionTypeEnum.BOMB_EXPLOSION, 50.0f, 10.0f);\n                        MyScriptWrapper.AddExplosion(MyScriptWrapper.GetEntity((uint)EntityID.Dummy_DestroyVoxel02).GetPosition(), Explosions.MyExplosionTypeEnum.BOMB_EXPLOSION, 50.0f, 10.0f);\n                        MyScriptWrapper.AddExplosion(MyScriptWrapper.GetEntity((uint)EntityID.Dummy_DestroyVoxel03).GetPosition(), Explosions.MyExplosionTypeEnum.BOMB_EXPLOSION, 50.0f, 10.0f);\n                        }\n                        break;\n                    case (uint)EntityID.Waypoint_Right_Lattice1:\n                        if (!m_tunnelToRight)\n                        {\n                            MyScriptWrapper.DestroyEntities(new List<uint> { (uint)EntityID.RightLatticeToDestroy1 });\n                        }\n                        break;\n                    case (uint)EntityID.Waypoint_Right_Lattice2:\n                        if (!m_tunnelToRight)\n                        {\n                            MyScriptWrapper.DestroyEntities(new List<uint> { (uint)EntityID.RightLatticeToDestroy2 });\n                            m_tunnelToRight = true;\n                        }\n                        break;\n                    default:\n                        break;\n                }\n            }\n            if (bot == MyScriptWrapper.GetSpawnPointLeader((uint)EntityID.Spawnpoint_ToLeftHub))\n            {\n                switch (MyScriptWrapper.GetEntityId(waypoint))\n                {\n                    case (uint)EntityID.Waypoint_Left_Wait:\n                        if (!MyScriptWrapper.IsMissionFinished(MyMissionID.LAIKA_GOTO_COMMUNICATION_01))\n                        {\n                            ((MySmallShipBot)bot).SuspendPatrol = true;\n                        }\n                        break;\n                    case (uint)EntityID.Waypoint_Left_Lattice1:\n                        if (!m_tunnelToLeft)\n                        {\n                            MyScriptWrapper.DestroyEntities(new List<uint> { (uint)EntityID.LeftLatticeToDestroy1 });\n                        }\n                        break;\n                    case (uint)EntityID.Waypoint_Left_Lattice2:\n                        if (!m_tunnelToLeft)\n                        {\n                            MyScriptWrapper.DestroyEntities(new List<uint> { (uint)EntityID.LeftLatticeToDestroy2 });\n                            m_tunnelToLeft = true;\n                        }\n                        break;\n                    default:\n                        break;\n                }\n            }\n        }\n\n        void OnEntityDeath(MyEntity entity, MyEntity killedBy)\n        {\n            if (entity == MyScriptWrapper.TryGetEntity((uint)EntityID.PipeToDestroy))\n            {\n                var pipeDetector = MyScriptWrapper.GetDetector((uint)EntityID.Detector_Pipe);\n                pipeDetector.Off();\n            }\n        }\n\n        #endregion\n\n\n        void toHangarSubmission_OnMissionUpdate(MyMissionBase sender)\n        {\n            if (!m_laikaBaseCalled && Vector3.Distance(MySession.PlayerShip.GetPosition(), m_hangar.GetPosition()) < 3000)\n                CallLaikaBase();\n        }\n\n\n        private void ToHangarSubmissionLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.CalmAtmosphere, 100, \"MM_b\");\n\n            MyEntityDetector hangarDetector = MyScriptWrapper.GetDetector((uint)EntityID.Detector_Hangar);\n            hangarDetector.On();\n            MissionTimer.RegisterTimerAction(1000, Arrival, false);\n            m_laikaBaseCalled = false;\n        }\n\n        private void Arrival()\n        {\n            MyScriptWrapper.PlayDialogue(Audio.Dialogues.MyDialogueEnum.LAIKA_0100_ARRIVAL);\n        }\n\n        private void CallLaikaBase()\n        {\n            m_laikaBaseCalled = true;\n            MyScriptWrapper.PlayDialogue(Audio.Dialogues.MyDialogueEnum.LAIKA_0250_WAYTOHANGAR);\n        }\n\n        private void InHangarSubmissionSuccess(MyMissionBase sender)\n        {\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Spawnpoint_Hangar_Back);\n\n            // Activate ambush\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Spawnpoint_HangarAmbush1);\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Spawnpoint_HangarAmbush2);\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Spawnpoint_CivilianArea);\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Spawnpoint_ResearchPatrol);\n\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.Door_ToHangar01), true);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.Door_ToHangar02), true);\n\n            ConvertToKGB();\n        }\n\n        private void GeneratorSubmissionLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.StressOrTimeRush, 100);\n\n            //((MyObjective)sender).MissionTimer.RegisterTimerAction(3000, DestroyGeneratorDialog, false);\n        }\n\n        /*\n        private void DestroyGeneratorDialog()\n        {\n            MyScriptWrapper.PlayDialogue(MyDialogueEnum.LAIKA_0277_DESTROYGENERATOR);\n        } */\n\n        private void GeneratorSubmissionSuccess(MyMissionBase sender)\n        {\n            //MissionTimer.RegisterTimerAction(8000, AfterHangarChatter, false);\n        }\n        \n        private void ToCommandCentreSubmissionLoaded(MyMissionBase sender)\n        {\n            ((IMyUseableEntity)MyScriptWrapper.GetEntity((uint)EntityID.Objective02_CommandHub)).UseProperties.HackType = MyUseType.Solo;\n\n            MyEntityDetector commandCenterDetector = MyScriptWrapper.GetDetector((uint)EntityID.Detector_PlayerInPipes);\n            commandCenterDetector.OnEntityEnter += PlayerInCommandCenter;\n            commandCenterDetector.On();\n        }\n\n\n        void PlayerInCommandCenter(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (MySession.IsPlayerShip(entity))\n            {\n                MyEntityDetector commandCenterDetector = MyScriptWrapper.GetDetector((uint)EntityID.Detector_PlayerInPipes);\n                commandCenterDetector.OnEntityEnter -= PlayerInCommandCenter;\n                commandCenterDetector.Off();\n\n                MyScriptWrapper.PlayDialogue(MyDialogueEnum.LAIKA_0480_COMMANDARRIVE);\n            }\n        }\n\n\n        private void ToCommandCentreSubmissionSuccess(MyMissionBase sender)\n        {\n            HideMothershipToHide();\n\n            ((IMyUseableEntity)MyScriptWrapper.GetEntity((uint)EntityID.Objective03_Transmitter1Hub)).UseProperties.HackType = MyUseType.Solo;\n\n            MyEntityDetector playerInPipesDetector = MyScriptWrapper.GetDetector((uint)EntityID.Detector_PlayerInPipes);\n            playerInPipesDetector.OnEntityEnter += PlayerInPipes;\n            playerInPipesDetector.On();\n\n            var rightEnteredDetector = MyScriptWrapper.GetDetector((uint)EntityID.Detector_RightEntered);\n            rightEnteredDetector.On();\n            var leftEnteredDetector = MyScriptWrapper.GetDetector((uint)EntityID.Detector_LeftEntered);\n            leftEnteredDetector.On();\n\n            AsteroidDetectorsActivate();\n\n            if (!MyScriptWrapper.IsMissionFinished(MyMissionID.LAIKA_GOTO_GENERATOR))\n            {\n                m_generatorSubmission.Success();\n            }\n        }\n\n\n        private void PlayerInPipes(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (MySession.IsPlayerShip(entity))\n            {\n                MyScriptWrapper.DestroyEntities(new List<uint> { (uint)EntityID.GrilleToDestroy });\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Spawnpoint_ToLeftHub);\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Spawnpoint_ToRightHub);\n                SetHoundDetectorsBase();\n                var rightEnteredDetector = MyScriptWrapper.GetDetector((uint)EntityID.Detector_RightEntered);\n                rightEnteredDetector.Off();\n                var leftEnteredDetector = MyScriptWrapper.GetDetector((uint)EntityID.Detector_LeftEntered);\n                leftEnteredDetector.Off();\n                MyScriptWrapper.SetWaypointListSecrecy(new List<uint> { (uint)EntityID.Waypoint_ToAmbush }, true);\n                sender.Off();\n            }\n        }\n\n        private void PipeEntered(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (MySession.IsPlayerShip(entity))\n            {\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Spawnpoint_Ambush);\n                MyScriptWrapper.UnhideEntity(MyScriptWrapper.TryGetEntity((uint)EntityID.MothershipToShow));\n                \n                foreach (var value in m_MothershipToShowThrusters)\n                {\n                    MyScriptWrapper.UnhideEntity(MyScriptWrapper.TryGetEntity(value));\n                }\n                MyScriptWrapper.DestroyEntities(new List<uint> { (uint)EntityID.PipeToDestroy });\n                MyScriptWrapper.SetParticleEffect(MyScriptWrapper.GetEntity((uint)EntityID.Particle_Ambush_mist), true);\n                MyScriptWrapper.SetParticleEffect(MyScriptWrapper.GetEntity((uint)EntityID.Particle_Ambush_smoke), true);\n                MyScriptWrapper.SetParticleEffect(MyScriptWrapper.GetEntity((uint)EntityID.Particle_Ambush_explosion), true);\n                \n                MyScriptWrapper.UnhideEntity(MyScriptWrapper.GetEntity((uint)EntityID.Prefab_Ambush_1));\n                MyScriptWrapper.UnhideEntity(MyScriptWrapper.GetEntity((uint)EntityID.Prefab_Ambush_2));\n            }\n        }\n\n        private void RightEntered(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (MySession.IsPlayerShip(entity))\n            {\n                MyScriptWrapper.DestroyEntities(new List<uint> { (uint)EntityID.GrilleToDestroy });\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Spawnpoint_ToLeftHub);\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Spawnpoint_ToRightHub);\n                sender.Off();\n            }\n        }\n\n        private void LeftEntered(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (MySession.IsPlayerShip(entity))\n            {\n                MyScriptWrapper.DestroyEntities(new List<uint> { (uint)EntityID.GrilleToDestroy });\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Spawnpoint_ToLeftHub);\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Spawnpoint_ToRightHub);\n                sender.Off();\n            }\n        }\n\n        private void WarheadDiscovered(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (MySession.IsPlayerShip(entity))\n            {\n                MyScriptWrapper.PlayDialogue(MyDialogueEnum.LAIKA_0900_WARHEAD);\n                MyScriptWrapper.SetWaypointListSecrecy(new List<uint> { (uint)EntityID.Waypoint_Right_Door }, false);\n                sender.OnEntityEnter -= WarheadDiscovered;\n                sender.Off();\n            }\n        }\n\n        private void WarheadDetectorEnter(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (MySession.IsPlayerShip(entity))\n            {\n                MyScriptWrapper.PlayDialogue(MyDialogueEnum.LAIKA_0950_WARHEAD_HACK);\n                sender.OnEntityEnter -= WarheadDetectorEnter;\n                sender.Off();\n            }\n        }\n\n        private void Communication01SubmissionLoaded(MyMissionBase sender)\n        {\n            MissionEntityIDs.Add((uint)EntityID.Objective03_Transmitter1Hub);\n            if (!MyScriptWrapper.IsMissionFinished(MyMissionID.LAIKA_GOTO_COMMUNICATION_02))\n            {\n                MyScriptWrapper.PlayDialogue(MyDialogueEnum.LAIKA_0600_TOPIPE);\n            }\n        }\n\n        private void Communication01SubmissionSuccess(MyMissionBase sender)\n        {\n            if (!MyScriptWrapper.IsMissionFinished(MyMissionID.LAIKA_GOTO_COMMUNICATION_02))\n            {\n                var pipeDetector = MyScriptWrapper.GetDetector((uint)EntityID.Detector_Pipe);\n                pipeDetector.On();\n            }\n            \n            ((IMyUseableEntity)MyScriptWrapper.GetEntity((uint)EntityID.Objective04_Transmitter2Hub)).UseProperties.HackType = MyUseType.Solo;\n\n            SetHoundDetectorsLeft();\n            MySmallShipBot leader = MyScriptWrapper.GetSpawnPointLeader(MyScriptWrapper.GetEntity((uint)EntityID.Spawnpoint_ToLeftHub)) as MySmallShipBot;\n            if (leader != null)\n            {\n                leader.SuspendPatrol = false;\n            }\n        }\n\n        private void Communication02SubmissionLoaded(MyMissionBase sender)\n        {\n            var warheadDetector = MyScriptWrapper.GetDetector((uint)EntityID.Detector_Warhead);\n            warheadDetector.OnEntityEnter += WarheadDiscovered;\n            warheadDetector.On();\n\n            MissionEntityIDs.Add((uint)EntityID.Objective04_Transmitter2Hub);\n        }\n\n        private void Communication02SubmissionSuccess(MyMissionBase sender)\n        {\n            if (!MyScriptWrapper.IsMissionFinished(MyMissionID.LAIKA_GOTO_COMMUNICATION_01))\n            {\n                var pipeDetector = MyScriptWrapper.GetDetector((uint)EntityID.Detector_Pipe);\n                pipeDetector.On();\n            }\n\n            ((IMyUseableEntity)MyScriptWrapper.GetEntity((uint)EntityID.Objective05_Warhead)).UseProperties.HackType = MyUseType.Solo;\n\n            SetHoundDetectorsRight();\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnpointHub2);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.DoorLock_Right1), true);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.DoorLock_Right2), true);\n            MySmallShipBot leader = MyScriptWrapper.GetSpawnPointLeader(MyScriptWrapper.GetEntity((uint)EntityID.Spawnpoint_ToRightHub)) as MySmallShipBot;\n            if (leader != null)\n            {\n                leader.SuspendPatrol = false;\n            }\n            MyScriptWrapper.DestroyEntities(new List<uint> { (uint)EntityID.RightLatticeToDestroy0 });\n        }\n\n        private void WarheadSubmissionLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.UnhideEntity(MyScriptWrapper.GetEntity((uint)EntityID.RussianMothership));\n            MyScriptWrapper.EnablePhysics((uint)EntityID.RussianMothership, false, true);\n            MyScriptWrapper.EnablePhysics(MyScriptWrapper.GetEntity(\"Madelyn\").EntityId.Value.NumericValue, false, true);\n            //MyScriptWrapper.DestroyEntities(new List<uint> { (uint)EntityID.PipeToDestroy_waytowarhead });\n\n            //MyScriptWrapper.SetWaypointListSecrecy(m_leavePipeWaypoints, false);\n\n            RestartMadelyn();\n            var madelynStopDetector = MyScriptWrapper.GetDetector((uint)EntityID.Detector_StopMadelynMove);\n            madelynStopDetector.OnEntityEnter += StopMadelyn;\n            madelynStopDetector.OnEntityLeave += RestartMadelyn;\n            madelynStopDetector.On();\n\n            RestartRussian();\n            var russianStopDetector = MyScriptWrapper.GetDetector((uint)EntityID.Detector_StopRussianMothershipMove);\n            russianStopDetector.OnEntityEnter += StopRussian;\n            russianStopDetector.OnEntityLeave += RestartRussian;\n            russianStopDetector.On();\n\n            var warheadDetector = MyScriptWrapper.GetDetector((uint)EntityID.Detector_Warhead);\n            warheadDetector.OnEntityEnter += WarheadDetectorEnter;\n            warheadDetector.On();\n        }\n\n        private void FindWarheadSubmissionSuccess(MyMissionBase sender)\n        {\n           // MyScriptWrapper.AddExplosion(MyScriptWrapper.GetEntity((uint)EntityID.Tunnel_explosion).GetPosition(), Explosions.MyExplosionTypeEnum.BOMB_EXPLOSION, 40.0f, 10.0f);\n        }\n\n        private void WarheadSubmissionSuccess(MyMissionBase sender)\n        {\n            //MyScriptWrapper.EnablePhysics((uint)EntityID.RussianMothership, true);\n            //MyScriptWrapper.EnablePhysics(MyScriptWrapper.GetEntity(\"Madelyn\").EntityId.Value.NumericValue, true);\n            MyScriptWrapper.SetWaypointListSecrecy(new List<uint> { (uint)EntityID.Waypoint_Unsecret_Escape }, false);\n\n            //m_Madelyn.SetPosition(MyScriptWrapper.GetEntity((uint)EntityID.Dummy_Madelyn_Moved).GetPosition());\n            MoveMotherShip(m_Madelyn, MyScriptWrapper.GetEntity((uint)EntityID.Dummy_Madelyn_Moved).GetPosition(), m_stuffWithMadelyn);\n        }\n\n        private void EscapeSubmissionLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.Horror, 100, \"KA02\");\n\n            RestartMadelyn();\n            //m_mothershipPosition_Madelyn_Final = new Vector3(0f);\n            \n            var madelynStopDetector = MyScriptWrapper.GetDetector((uint)EntityID.Detector_StopMadelynMove);\n            madelynStopDetector.On();\n            m_MadelynSpeed = 80f;\n\n            var warheadDetector = MyScriptWrapper.GetDetector((uint)EntityID.Detector_Warhead);\n            warheadDetector.Off();\n\n            MyScriptWrapper.HideEntity(m_RussianMS, true);\n\n            MyScriptWrapper.PlayDialogue(MyDialogueEnum.LAIKA_1800_WARHEAD_DONE2);\n        }\n\n        private void EscapeSubmissionSuccess(MyMissionBase sender)\n        {\n            StopMadelyn();\n\n            var madelynStopDetector = MyScriptWrapper.GetDetector((uint)EntityID.Detector_StopMadelynMove);\n            madelynStopDetector.Off();\n            MyScriptWrapper.EnablePhysics(MyScriptWrapper.GetEntity(\"Madelyn\").EntityId.Value.NumericValue, true, true);\n\n            MyScriptWrapper.MakeNuclearExplosion(MyScriptWrapper.GetEntity(m_warheadSubmission.MissionEntityIDs[0]));\n        }\n\n\n\n        private void EscapeSubmissionUpdate(MyMissionBase sender)\n        {\n            var dummy = MyScriptWrapper.TryGetEntity((uint)EntityID.Dummy_Remove_stuff_after_explosion);\n            if (dummy != null && (dummy.GetPosition() - MySession.PlayerShip.GetPosition()).Length() > 3641.1f/2)\n            {\n                MyScriptWrapper.StopMusic();\n            }\n        }\n\n        private void EscapeSubmissionUnload(MyMissionBase sender)\n        {\n        }\n\n        List<uint> m_entitiesAfterExplosion = new List<uint>(1024);\n\n        private void RussianExplodesBase()\n        {\n            MyScriptWrapper.PlayDialogue(MyDialogueEnum.LAIKA_1900_ESCAPED);\n\n            foreach (uint entityID in m_entitiesAfterExplosion)\n            {\n                MyEntity entity = MyScriptWrapper.TryGetEntity(entityID);\n                if (entity != null)\n                {\n                    MyScriptWrapper.HideEntity(entity, true);\n                }\n            }\n\n            foreach (var item in m_staticAsteroidRubble)\n            {\n                MyScriptWrapper.UnhideEntity(MyScriptWrapper.GetEntity(item), true);\n            }\n            MyScriptWrapper.HideEntity(MyScriptWrapper.GetEntity((uint)EntityID.Influence_Sphere_Fallout), true);\n            MyScriptWrapper.HideEntity(MyScriptWrapper.GetEntity((uint)EntityID.Stuff_to_remove_prefab_container1), true);\n            MyScriptWrapper.HideEntity(MyScriptWrapper.GetEntity((uint)EntityID.BaseCivilianParts), true);\n            MyScriptWrapper.HideEntity(MyScriptWrapper.GetEntity((uint)EntityID.BaseMain), true);\n            MyScriptWrapper.HideEntity(MyScriptWrapper.GetEntity((uint)EntityID.Stuff_to_remove_prefab_container4), true);\n            MyScriptWrapper.HideEntity(MyScriptWrapper.GetEntity((uint)EntityID.MothershipToShow), true);\n            MyScriptWrapper.HideEntity(MyScriptWrapper.GetEntity((uint)EntityID.BaseStore), true);\n        }\n\n        void hideSubmission_OnMissionLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.Special, 100, \"KA05\");\n\n            m_RussianSpeed = 250;\n            m_mothershipPosition_Russian_Final = new Vector3(0f);\n            RestartRussian();\n            var russianStopDetector = MyScriptWrapper.GetDetector((uint)EntityID.Detector_StopRussianMothershipMove);\n            russianStopDetector.Off();\n            MissionTimer.RegisterTimerAction(4000, RussianExplodesBase, false);\n        }\n\n\n        private void ConvertToKGB()\n        {\n            // change factions relations\n            MyScriptWrapper.ChangeFaction((uint)EntityID.BaseStation1, MyMwcObjectBuilder_FactionEnum.Russian_KGB);\n            MyScriptWrapper.ChangeFaction((uint)EntityID.BaseStation2, MyMwcObjectBuilder_FactionEnum.Russian_KGB);\n            MyScriptWrapper.ChangeFaction((uint)EntityID.BaseStore, MyMwcObjectBuilder_FactionEnum.Russian_KGB);\n            MyScriptWrapper.ChangeFaction((uint)EntityID.BaseMain, MyMwcObjectBuilder_FactionEnum.Russian_KGB);\n\n            foreach (var spawn in new List<uint> { (uint)EntityID.Spawnpoint_01, (uint)EntityID.Spawnpoint_Hangar_Back, (uint)EntityID.Spawnpoint_03, (uint)EntityID.Spawnpoint_04 })\n            {\n                MyScriptWrapper.ChangeFaction(spawn, MyMwcObjectBuilder_FactionEnum.Russian_KGB);\n                foreach (var bot in MyScriptWrapper.GetSpawnPointBots(spawn))\n                {\n                    if (bot.Ship != null)\n                    {\n                        MyScriptWrapper.ChangeFaction(bot.Ship.EntityId.Value.NumericValue, MyMwcObjectBuilder_FactionEnum.Russian_KGB);\n                    }\n                }\n            }\n        }\n\n        private void HideMothershipToHide()\n        {\n            MyScriptWrapper.HideEntity(MyScriptWrapper.TryGetEntity((uint)EntityID.MothershipToHide));\n            foreach (var value in m_MothershipToHideThrusters)\n            {\n                MyScriptWrapper.HideEntity(MyScriptWrapper.TryGetEntity(value));\n            }\n        }\n\n        private void HideMothershipToShow()\n        {\n            MyScriptWrapper.HideEntity(MyScriptWrapper.TryGetEntity((uint)EntityID.MothershipToShow)); // hide ambush assault vessel\n            foreach (var value in m_MothershipToShowThrusters)\n            {\n                MyScriptWrapper.HideEntity(MyScriptWrapper.TryGetEntity(value));\n            }\n        }\n\n        private void AsteroidDetectorsActivate()\n        {\n            foreach (var detector in m_asteroidDetectors)\n            {\n                MyEntityDetector Detector = MyScriptWrapper.GetDetector(detector);\n                Detector.OnEntityEnter += AsteroidTriggered;\n                Detector.On();\n            }\n        }\n\n        private void AsteroidTriggered(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (MySession.IsPlayerShip(entity))\n            {\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Spawnpoint_Hounds_Asteroid);\n                foreach (var detector in m_asteroidDetectors)\n                {\n                    MyEntityDetector Detector = MyScriptWrapper.GetDetector(detector);\n                    Detector.Off();\n                    Detector.OnEntityEnter -= AsteroidTriggered;\n                }\n                MyScriptWrapper.SetWaypointListSecrecy(m_asteroidSecretWaypoints, false);\n            }\n        }\n\n        private void SetHoundDetectorsRight()\n        {\n            MyEntityDetector RightUpDetector = MyScriptWrapper.GetDetector((uint)EntityID.Detector_Right_Up);\n            RightUpDetector.OnEntityEnter += RightUp;\n            RightUpDetector.On();\n            MyEntityDetector RightDownDetector = MyScriptWrapper.GetDetector((uint)EntityID.Detector_Right_Down);\n            RightDownDetector.OnEntityEnter += RightDown;\n            RightDownDetector.On();\n        }\n\n        private void DeactivateHoundDetectorsRight()\n        {\n            MyEntityDetector RightUpDetector = MyScriptWrapper.GetDetector((uint)EntityID.Detector_Right_Up);\n            RightUpDetector.OnEntityEnter -= RightUp;\n            RightUpDetector.Off();\n            MyEntityDetector RightDownDetector = MyScriptWrapper.GetDetector((uint)EntityID.Detector_Right_Down);\n            RightDownDetector.OnEntityEnter -= RightDown;\n            RightDownDetector.Off();\n        }\n\n        private void SetHoundDetectorsLeft()\n        {\n            MyEntityDetector LeftUpDetector = MyScriptWrapper.GetDetector((uint)EntityID.Detector_Left_Up);\n            LeftUpDetector.OnEntityEnter += LeftUp;\n            LeftUpDetector.On();\n            MyEntityDetector LeftDownDetector = MyScriptWrapper.GetDetector((uint)EntityID.Detector_Left_Down);\n            LeftDownDetector.OnEntityEnter += LeftDown;\n            LeftDownDetector.On();\n        }\n\n        private void DeactivateHoundDetectorsLeft()\n        {\n            MyEntityDetector LeftUpDetector = MyScriptWrapper.GetDetector((uint)EntityID.Detector_Left_Up);\n            LeftUpDetector.OnEntityEnter -= LeftUp;\n            LeftUpDetector.Off();\n            MyEntityDetector LeftDownDetector = MyScriptWrapper.GetDetector((uint)EntityID.Detector_Left_Down);\n            LeftDownDetector.OnEntityEnter -= LeftDown;\n            LeftDownDetector.Off();\n        }\n\n        private void SetHoundDetectorsBase()\n        {\n            MyEntityDetector BaseUpDetector = MyScriptWrapper.GetDetector((uint)EntityID.Detector_Base_Up);\n            BaseUpDetector.OnEntityEnter += BaseUp;\n            BaseUpDetector.On();\n            MyEntityDetector BaseDownDetector = MyScriptWrapper.GetDetector((uint)EntityID.Detector_Base_Down);\n            BaseDownDetector.OnEntityEnter += BaseDown;\n            BaseDownDetector.On();\n        }\n\n        private void DeactivateHoundDetectorsBase()\n        {\n            MyEntityDetector BaseUpDetector = MyScriptWrapper.GetDetector((uint)EntityID.Detector_Base_Up);\n            BaseUpDetector.OnEntityEnter -= BaseUp;\n            BaseUpDetector.Off();\n            MyEntityDetector BaseDownDetector = MyScriptWrapper.GetDetector((uint)EntityID.Detector_Base_Down);\n            BaseDownDetector.OnEntityEnter -= BaseDown;\n            BaseDownDetector.Off();\n        }\n\n        private void RightUp(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (MySession.IsPlayerShip(entity))\n            {\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Spawnpoint_Hounds_Right_Up);\n                DeactivateHoundDetectorsRight();\n            }\n        }\n\n        private void RightDown(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (MySession.IsPlayerShip(entity))\n            {\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Spawnpoint_Hounds_Right_Down);\n                DeactivateHoundDetectorsRight();\n            }\n        }\n\n        private void LeftUp(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (MySession.IsPlayerShip(entity))\n            {\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Spawnpoint_Hounds_Left_Up);\n                DeactivateHoundDetectorsLeft();\n            }\n        }\n\n        private void LeftDown(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (MySession.IsPlayerShip(entity))\n            {\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Spawnpoint_Hounds_Left_Down);\n                DeactivateHoundDetectorsLeft();\n            }\n        }\n\n        private void BaseUp(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (MySession.IsPlayerShip(entity))\n            {\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Spawnpoint_Hounds_Base_Up);\n                DeactivateHoundDetectorsBase();\n            }\n        }\n\n        private void BaseDown(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (MySession.IsPlayerShip(entity))\n            {\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Spawnpoint_Hounds_Base_Down);\n                DeactivateHoundDetectorsBase();\n            }\n        }\n\n        private void StopMadelyn(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (MySession.IsPlayerShip(entity))\n            {\n                StopMadelyn();\n            }\n        }\n\n        private void StopMadelyn()\n        {\n            m_flyMadelyn = false;\n            //MyScriptWrapper.EnablePhysics(MyScriptWrapper.GetEntity(\"Madelyn\").EntityId.Value.NumericValue, true, true);\n            //MyScriptWrapper.ReturnMotherShipFromMove(MyScriptWrapper.GetEntity(\"Madelyn\"));\n\n            if (MyScriptWrapper.IsMissionFinished(MyMissionID.LAIKA_WARHEAD) && !MyScriptWrapper.IsMissionFinished(MyMissionID.LAIKA_RETURN))\n            {\n                var madelynStopDetector = MyScriptWrapper.GetDetector((uint)EntityID.Detector_StopMadelynMove);\n                madelynStopDetector.Off();\n                m_escapeSubmission.Success();\n            }\n        }\n\n        private void RestartMadelyn(MyEntityDetector sender, MyEntity entity)\n        {\n            if (MySession.IsPlayerShip(entity))\n            {\n                RestartMadelyn();\n            }\n        }\n\n        private void RestartMadelyn()\n        {\n            m_flyMadelyn = true;\n            //MyScriptWrapper.EnablePhysics(MyScriptWrapper.GetEntity(\"Madelyn\").EntityId.Value.NumericValue, false, true);\n            //MyScriptWrapper.PrepareMotherShipForMove(MyScriptWrapper.GetEntity(\"Madelyn\"));\n        }\n\n        private void StopRussian(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (MySession.IsPlayerShip(entity))\n            {\n                StopRussian();\n            }\n        }\n\n        private void StopRussian()\n        {\n            if (m_flyRussian == true)\n            {\n                m_flyRussian = false;\n                //MyScriptWrapper.EnablePhysics((uint)EntityID.RussianMothership, true, true);\n                //MyScriptWrapper.ReturnMotherShipFromMove(MyScriptWrapper.GetEntity((uint)EntityID.RussianMothership));\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Spawn_MothershipHounds);\n            }\n        }\n\n        private void RestartRussian(MyEntityDetector sender, MyEntity entity)\n        {\n            if (MySession.IsPlayerShip(entity))\n            {\n                RestartRussian();\n            }\n        }\n\n        private void RestartRussian()\n        {\n            m_flyRussian = true;\n            //MyScriptWrapper.EnablePhysics((uint)EntityID.RussianMothership, false, true);\n            //MyScriptWrapper.PrepareMotherShipForMove(MyScriptWrapper.GetEntity((uint)EntityID.RussianMothership));\n            //MyScriptWrapper.DeactivateSpawnPoint((uint)EntityID.Spawn_MothershipHounds);\n        }\n\n\n        bool MoveMotherShipForward(MyEntity entity, float speed, Vector3 destination, List<uint> AdditionalStuffToMove) //helps to move even non prefab entities with the ship, like thruster particles and spawnpoints\n        {\n            Vector3 velocity = speed * entity.WorldMatrix.Forward; // Speed in direction\n            if (Vector3.DistanceSquared(destination, entity.GetPosition()) > 10 * 10)\n            {\n                //Render.MyRender.ClearEnhancedStats();\n                MyScriptWrapper.Move(entity, entity.GetPosition() + velocity * MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS); // recalculate position\n                foreach (var item in AdditionalStuffToMove)\n                {\n                    MyEntity Item = MyScriptWrapper.GetEntity(item);\n                    if (Item != null)\n                    {\n                        MyScriptWrapper.Move(Item, Item.GetPosition() + velocity * MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS);\n                    }\n                }\n                //MyScriptWrapper.GetEntity((uint)EntityID.CrashingMothershipSmoke).SetPosition(MyScriptWrapper.GetEntity((uint)EntityID.CrashingMothershipSmoke).GetPosition() + velocity * MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS);\n                //Render.MyRender.ClearEnhancedStats();\n                return false;\n            }\n            return true;\n        }\n\n        void MoveMotherShip(MyEntity entity, Vector3 destination, List<uint> AdditionalStuffToMove) //helps to move even non prefab entities with the ship, like thruster particles and spawnpoints\n        {\n            MyScriptWrapper.Move(entity, destination);\n\n            Vector3 delta = destination - entity.GetPosition();\n\n            foreach (var item in AdditionalStuffToMove)\n            {\n                MyEntity Item = MyScriptWrapper.GetEntity(item);\n                if (Item != null)\n                {\n                    MyScriptWrapper.Move(Item, Item.GetPosition() + delta);\n                }\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/SinglePlayer/MyLastHopeMission.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing MinerWars.AppCode.Game.Audio.Dialogues;\nusing MinerWars.AppCode.Game.HUD;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Missions.Components;\nusing MinerWars.AppCode.Game.Missions.Objectives;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.AppCode.Game.World.Global;\n\n\nnamespace MinerWars.AppCode.Game.Missions.SinglePlayer\n{\n    class MyLastHopeMission : MyMission\n    {\n        private const int StopSlaversObjectiveTime = 150000;\n        private int m_repairedCounter;\n\n        private readonly MyMultipleUseObjective m_repairPipes;\n        private readonly MyObjective m_stopSlaverTransport;\n        private readonly MyObjective m_findTunnel;\n        private readonly MyObjective m_catchSlaverRiders;\n        private readonly MyDestroyWavesObjective m_killSaboteurSquad;\n        private readonly MyMultipleUseObjective m_deactivateBombs;\n\n        private MyEntity m_repairPipesDummyShoot;\n\n        private readonly MyMovingEntity m_movingShip1;\n        private readonly MyMovingEntity m_movingShip2;\n        private readonly MyMovingEntity m_movingShip1Particle;\n        private readonly MyMovingEntity m_movingShip2Particle;\n        \n        \n\n        #region EntityIDs\n        private readonly Dictionary<uint, Tuple<List<uint>, uint>> m_gasPipes = new Dictionary<uint, Tuple<List<uint>, uint>>()\n                                                                           {\n                                                                               {16779440,new Tuple<List<uint>, uint>(new List<uint>(){16778002,16778003},16778629 )},\n                                                                               {16779438,new Tuple<List<uint>, uint>(new List<uint>(){16777997,16777998},16778628 )},\n                                                                               {16779442,new Tuple<List<uint>, uint>(new List<uint>(){16777995,16778000,16777994,16777999,16777996,16778001},16778630 )},                   \n                                                                           };\n\n        private readonly Dictionary<uint, Tuple<List<uint>, uint>> m_nuclearCores = new Dictionary<uint, Tuple<List<uint>, uint>>()\n                                                                           {\n                                                                               {16779444,new Tuple<List<uint>, uint>(new List<uint>(){16777712,16777708},16778034 )},\n                                                                               {16779448,new Tuple<List<uint>, uint>(new List<uint>(){16777710,16777711},16778035 )},\n                                                                               {16779446,new Tuple<List<uint>, uint>(new List<uint>(){16777709,16777713},16778033 )},\n                                                                           };\n        \n        private readonly List<uint> m_cargoBoxes = new List<uint>() { 16781486, 16781485 };\n        private readonly List<uint> m_cargoBoxesHide = new List<uint>() { 16781480, 16781463, 16781481 };\n\n        private enum EntityId\n        {\n            //Objective 01\n            ReachColonyDummy = 2468,\n            ReachColonyDialogDetector = 16782668,\n            ReachColonySpawn1 = 16781269,\n            //Objective 02\n            \n            DestroySlaverRidersShip1 = 22640,\n            DestroySlaverRidersShip2 = 16780300,\n\n            DestroySlaverRidersGenerator1 = 16779905,\n            DestroySlaverRidersGenerator2 = 16780305,\n            DestroySlaverRidersDetector1 = 16781327,\n\n            DestroySlaverRidersDetector3 = 16781329,\n\n            DestroySlaverRidersSpawn11 = 16781268,\n            DestroySlaverRidersSpawn21 = 16779838,\n            DestroySlaverRidersSpawn31 = 16781274,\n            DestroySlaverRidersSpawn41 = 16781273,\n            DestroySlaverRidersSpawn12 = 16779836,\n            DestroySlaverRidersSpawn22 = 533,\n            DestroySlaverRidersSpawn32 = 16781272,\n            DestroySlaverRidersSpawn42 = 16781271,\n            //Objective 03\n            CatchSlaverRidersDummy = 2469,\n            CatchSlaverRidersDetector1 = 16781321,\n            CatchSlaverRidersDetector2 = 16781323,\n            CatchSlaverRidersSpawn1 = 16781276,\n            CatchSlaverRidersSpawn21 = 16781277,\n            CatchSlaverRidersSpawn22 = 16781278,\n            //Objective 04\n            StopSlaverTransportShip1 = 16780927,\n            StopSlaverTransportShip1Target = 16781266,\n            StopSlaverTransportShip2 = 16781064,\n            StopSlaverTransportShip2Target = 16781201,\n            StopSlaverTransportShip1Particle = 16781260,\n            StopSlaverTransportShip1TargetParticle = 16781265,\n            StopSlaverTransportShip2Particle = 16781256,\n            StopSlaverTransportShip2TargetParticle = 16781264,\n            StopSlaverTransportGenerator1 = 16781008,\n            StopSlaverTransportGenerator2 = 16781145,\n            StopSlaverTransportSpawn11 = 16781280,\n            StopSlaverTransportSpawn12 = 16781281,\n            StopSlaverTransportSpawn21 = 16781283,\n            StopSlaverTransportSpawn22 = 16781282,\n            //Objective 05\n            ReachCavesLocation = 25345,\n            //Objective 06\n            FindTunnelDummy = 25347,\n            FindTunnelSpawn1 = 16781284,\n            FindTunnelSpawn2 = 16781285,\n            FindTunnelSpawn3 = 16781286,\n            //Objective 07\n            KillSaboteursSpawn = 16781287,\n            //Objective 08\n            DeactivateBombPrefab1 = 16777992,\n            DeactivateBombPrefab2 = 16777993,\n            //Objective 09\n            StabilizeGasPipesShootDetector = 16788549,\n            StabilizeGasPipesShootparticle = 16788553,\n            //Objective 10\n            //Spawn1 = 25341,\n            //Spawn2 = 25343,\n\n            LaveUndergroundDummy = 51,\n            KillSabotersDetector = 25351,\n            GasCloudsDetector = 45,\n            StabilizeCoreDialog1Dummy = 47,\n            StabilizeCoreDialog2Dummy = 49,\n\n        }\n\n\n        public override void ValidateIds() // checks if all IDs in enum are loaded correctly\n        {\n            if (!IsMainSector) return;\n            foreach (var value in Enum.GetValues(typeof(EntityId)))\n            {\n                MyScriptWrapper.GetEntity((uint)(((EntityId?)value).Value));\n            }\n\n            var list = new List<uint>();\n            list.AddRange(m_cargoBoxes);\n            list.AddRange(m_cargoBoxesHide);\n\n            foreach (KeyValuePair<uint, Tuple<List<uint>, uint>> keyValuePair in m_gasPipes)\n            {\n                list.Add(keyValuePair.Key);\n                list.AddRange(keyValuePair.Value.Item1);\n                list.Add(keyValuePair.Value.Item2);\n            }\n\n            foreach (KeyValuePair<uint, Tuple<List<uint>, uint>> keyValuePair in m_nuclearCores)\n            {\n                list.Add(keyValuePair.Key);\n                list.AddRange(keyValuePair.Value.Item1);\n                list.Add(keyValuePair.Value.Item2);\n            }\n\n            foreach (var value in list)\n            {\n                MyScriptWrapper.GetEntity(value);\n            }\n        }\n        #endregion\n\n        public MyLastHopeMission()\n        {\n            ID = MyMissionID.LAST_HOPE;\n            Name = MyTextsWrapperEnum.LAST_HOPE;\n            Description = MyTextsWrapperEnum.LAST_HOPE_Description;\n            DebugName = new StringBuilder(\"07-Last Hope\");\n            Flags = MyMissionFlags.Story;\n\n            MyMwcVector3Int baseSector = new MyMwcVector3Int(-190694, 0, -18204363);\n            Location = new MyMissionLocation(baseSector, (uint)EntityId.ReachColonyDummy);\n\n            RequiredMissions = new MyMissionID[] { MyMissionID.BARTHS_MOON_TRANSMITTER };\n            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.LAST_HOPE_LEAVE_UNDERGROUND };\n            RequiredActors = new MyActorEnum[] { MyActorEnum.MARCUS, MyActorEnum.MADELYN };\n\n            #region Objectives\n\n            m_objectives = new List<MyObjective>();\n\n            var reachColony = new MyObjective(\n                MyTextsWrapperEnum.LAST_HOPE_REACH_COLONY,\n                MyMissionID.LAST_HOPE_REACH_COLONY,\n                MyTextsWrapperEnum.LAST_HOPE_REACH_COLONY_DESCRIPTION,\n                null,\n                this,\n                new MyMissionID[] { },\n                new MyMissionLocation(baseSector, (uint)EntityId.ReachColonyDummy),\n                startDialogId: MyDialogueEnum.LAST_HOPE_0100\n                ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudLastHope };\n            reachColony.Components.Add(new MySpawnpointWaves((uint)EntityId.ReachColonyDialogDetector, 1, new List<uint[]>()\n                                                                                                         {\n                                                                                                             new uint[]{(uint)EntityId.ReachColonySpawn1}\n                                                                                                        }));\n            var dialogComponent = new MyDetectorDialogue((uint)EntityId.ReachColonyDialogDetector, MyDialogueEnum.LAST_HOPE_0200);\n            dialogComponent.OnDialogStarted += ReachColonyDialogComonentOnOnDialogStarted;\n            dialogComponent.OnDialogFinished += ReachColonyDialogComonentOnOnDialogFinished;\n            reachColony.Components.Add(dialogComponent);\n            m_objectives.Add(reachColony);\n\n\n\n\n            var destroySlaverRiders = new MyObjectiveDestroy(\n              MyTextsWrapperEnum.LAST_HOPE_REACH_DESTROY_RIDERS,\n              MyMissionID.LAST_HOPE_DESTROY_SLAVER_RIDERS,\n              MyTextsWrapperEnum.LAST_HOPE_REACH_DESTROY_RIDERS_DESC,\n              null,\n              this,\n              new MyMissionID[] { MyMissionID.LAST_HOPE_REACH_COLONY },\n              new List<uint> { (uint)EntityId.DestroySlaverRidersGenerator1, (uint)EntityId.DestroySlaverRidersGenerator2 }\n            ) { SaveOnSuccess = true, StartDialogId = MyDialogueEnum.LAST_HOPE_0300, HudName = MyTextsWrapperEnum.Nothing };\n            destroySlaverRiders.Components.Add(new MySpawnpointWaves((uint)EntityId.DestroySlaverRidersDetector1, 1, new List<uint[]>()\n                                                                                                         {\n                                                                                                             new uint[]{(uint)EntityId.DestroySlaverRidersSpawn11},\n                                                                                                             new uint[]{(uint)EntityId.DestroySlaverRidersSpawn12}\n                                                                                                        }));\n            destroySlaverRiders.Components.Add(new MySpawnpointWaves((uint)EntityId.DestroySlaverRidersDetector1, 1, new List<uint[]>()\n                                                                                                         {\n                                                                                                             new uint[]{(uint)EntityId.DestroySlaverRidersSpawn21},\n                                                                                                             new uint[]{(uint)EntityId.DestroySlaverRidersSpawn22}\n                                                                                                        }));\n            destroySlaverRiders.Components.Add(new MySpawnpointWaves((uint)EntityId.DestroySlaverRidersDetector3, 1, new List<uint[]>()\n                                                                                                         {\n                                                                                                             new uint[]{(uint)EntityId.DestroySlaverRidersSpawn31},\n                                                                                                             new uint[]{(uint)EntityId.DestroySlaverRidersSpawn32}\n                                                                                                        }));\n            destroySlaverRiders.Components.Add(new MySpawnpointWaves((uint)EntityId.DestroySlaverRidersDetector3, 1, new List<uint[]>()\n                                                                                                         {\n                                                                                                             new uint[]{(uint)EntityId.DestroySlaverRidersSpawn41},\n                                                                                                             new uint[]{(uint)EntityId.DestroySlaverRidersSpawn42}\n                                                                                                        }));\n            destroySlaverRiders.OnMissionLoaded += DestroySlaverRiders_Loaded;\n            m_objectives.Add(destroySlaverRiders);\n\n\n            m_catchSlaverRiders = new MyObjective(\n                MyTextsWrapperEnum.LAST_HOPE_REACH_CATCH_SHIPS,\n                MyMissionID.LAST_HOPE_CATCH_SLAVER_RIDERS,\n                MyTextsWrapperEnum.LAST_HOPE_REACH_CATCH_SHIPS_DESC,\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.LAST_HOPE_DESTROY_SLAVER_RIDERS, },\n                new MyMissionLocation(baseSector, (uint)EntityId.CatchSlaverRidersDummy)\n            ) { SaveOnSuccess = true, StartDialogId = MyDialogueEnum.LAST_HOPE_0400 };\n            m_catchSlaverRiders.Components.Add(new MySpawnpointWaves((uint)EntityId.CatchSlaverRidersDetector1, 1, new List<uint[]>()\n                                                                                                         {\n                                                                                                             new uint[]{(uint)EntityId.CatchSlaverRidersSpawn1},\n                                                                                                        }));\n            m_catchSlaverRiders.Components.Add(new MySpawnpointWaves((uint)EntityId.CatchSlaverRidersDetector2, 1, new List<uint[]>()\n                                                                                                         {\n                                                                                                             new uint[]{(uint)EntityId.CatchSlaverRidersSpawn21},\n                                                                                                             new uint[]{(uint)EntityId.CatchSlaverRidersSpawn22}\n                                                                                                        }));\n            m_catchSlaverRiders.OnMissionLoaded += CatchSlaverRiders_Loaded;\n            m_objectives.Add(m_catchSlaverRiders);\n\n\n\n            m_stopSlaverTransport = new MyObjectiveDestroy(\n                MyTextsWrapperEnum.LAST_HOPE_REACH_STOP_SHIPS,\n                MyMissionID.LAST_HOPE_STOP_SLAVER_RIDERS,\n                MyTextsWrapperEnum.LAST_HOPE_REACH_STOP_SHIPS_DESC,\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.LAST_HOPE_CATCH_SLAVER_RIDERS },\n                new List<uint>() { (uint)EntityId.StopSlaverTransportGenerator1, (uint)EntityId.StopSlaverTransportGenerator2 }\n            ) { SaveOnSuccess = false, StartDialogId = MyDialogueEnum.LAST_HOPE_0500 };\n            m_movingShip1 = new MyMovingEntity((uint)EntityId.StopSlaverTransportShip1,\n                                   (uint)EntityId.StopSlaverTransportShip1Target, StopSlaversObjectiveTime, false);\n\n            m_movingShip2 = new MyMovingEntity((uint)EntityId.StopSlaverTransportShip2,\n                                   (uint)EntityId.StopSlaverTransportShip2Target, StopSlaversObjectiveTime, false);\n\n            m_movingShip1Particle = new MyMovingEntity((uint)EntityId.StopSlaverTransportShip1Particle,\n                                   (uint)EntityId.StopSlaverTransportShip1TargetParticle, StopSlaversObjectiveTime, false);\n\n            m_movingShip2Particle = new MyMovingEntity((uint)EntityId.StopSlaverTransportShip2Particle,\n                                   (uint)EntityId.StopSlaverTransportShip2TargetParticle, StopSlaversObjectiveTime, false);\n\n            m_stopSlaverTransport.Components.Add(m_movingShip1);\n            m_stopSlaverTransport.Components.Add(m_movingShip2);\n            m_stopSlaverTransport.Components.Add(m_movingShip1Particle);\n            m_stopSlaverTransport.Components.Add(m_movingShip2Particle);\n            m_stopSlaverTransport.OnMissionLoaded += StopSlaverTransport_Loaded;\n\n            m_stopSlaverTransport.Components.Add(new MySpawnpointWaves((uint)EntityId.CatchSlaverRidersDummy, 1, new List<uint[]>()\n                                                                                                         {\n                                                                                                             new uint[]{(uint)EntityId.StopSlaverTransportSpawn11,(uint)EntityId.StopSlaverTransportSpawn21,},\n                                                                                                             new uint[]{(uint)EntityId.StopSlaverTransportSpawn12,(uint)EntityId.StopSlaverTransportSpawn22,},\n                                                                                                        }));\n            m_objectives.Add(m_stopSlaverTransport);\n\n\n            var speakWithFathetTobias = new MyObjectiveDialog\n                (\n                MyTextsWrapperEnum.LAST_HOPE_SPEAK_WITH_FATHER,\n                MyMissionID.LAST_HOPE_SPEAK_WITH_FATHER,\n                MyTextsWrapperEnum.LAST_HOPE_SPEAK_WITH_FATHER_DESC,\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.LAST_HOPE_STOP_SLAVER_RIDERS },\n                MyDialogueEnum.LAST_HOPE_0600\n                ) { SaveOnSuccess = true };\n            m_objectives.Add(speakWithFathetTobias);\n\n\n            var reachCaves = new MyObjective(\n                MyTextsWrapperEnum.LAST_HOPE_REACH_REACH_CAVE,\n                MyMissionID.LAST_HOPE_REACH_UNDEGROUND_CAVES,\n                MyTextsWrapperEnum.LAST_HOPE_REACH_REACH_CAVE_DESC,\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.LAST_HOPE_SPEAK_WITH_FATHER },\n                new MyMissionLocation(baseSector, (uint)EntityId.ReachCavesLocation)\n\n            ) { SaveOnSuccess = true, StartDialogId = MyDialogueEnum.LAST_HOPE_0700, HudName = MyTextsWrapperEnum.HudCave };\n            m_objectives.Add(reachCaves);\n\n\n            m_findTunnel = new MyObjective(\n                    MyTextsWrapperEnum.LAST_HOPE_REACH_TUNNEL,\n                    MyMissionID.LAST_HOPE_FIND_MAINTANCE_TUNELL,\n                    MyTextsWrapperEnum.LAST_HOPE_REACH_TUNNEL_DESC,\n                    null,\n                    this,\n                    new MyMissionID[] { MyMissionID.LAST_HOPE_REACH_UNDEGROUND_CAVES },\n                    new MyMissionLocation(baseSector, (uint)EntityId.FindTunnelDummy)\n                    ) { SaveOnSuccess = true, StartDialogId = MyDialogueEnum.LAST_HOPE_0800, HudName = MyTextsWrapperEnum.HudTunnel };\n            m_findTunnel.Components.Add(new MySpawnpointWaves((uint)EntityId.ReachCavesLocation, 1, new List<uint[]>()\n                                                                                                         {\n                                                                                                             new uint[]{(uint)EntityId.FindTunnelSpawn1},\n                                                                                                             new uint[]{(uint)EntityId.FindTunnelSpawn2},\n                                                                                                             new uint[]{(uint)EntityId.FindTunnelSpawn3},\n                                                                                                        }));\n            m_objectives.Add(m_findTunnel);\n\n\n            var killSaboteurSquad = new MyDestroyWavesObjective\n                (\n                MyTextsWrapperEnum.LAST_HOPE_KILL_SABOTERS,\n                MyMissionID.LAST_HOPE_KILL_SQUAD,\n                MyTextsWrapperEnum.LAST_HOPE_KILL_SABOTERS,\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.LAST_HOPE_FIND_MAINTANCE_TUNELL }\n                ) { SaveOnSuccess = true };\n            killSaboteurSquad.AddWave(new List<uint>() { (uint)EntityId.KillSaboteursSpawn });\n            killSaboteurSquad.Components.Add(new MyDetectorDialogue((uint)EntityId.KillSabotersDetector, MyDialogueEnum.LAST_HOPE_1100));\n            m_objectives.Add(killSaboteurSquad);\n\n\n\n            var deactivateBombs = new MyMultipleUseObjective\n                (MyTextsWrapperEnum.LAST_HOPE_DEACTIVATE_BOMBS,\n                 MyMissionID.LAST_HOPE_DEACTIVATE_BOMB,\n                 MyTextsWrapperEnum.LAST_HOPE_DEACTIVATE_BOMBS_DESC,\n                 null,\n                 this,\n                 new MyMissionID[] { MyMissionID.LAST_HOPE_KILL_SQUAD },\n                 MyTextsWrapperEnum.PressToDeactivateNuclearHead,\n                 MyTextsWrapperEnum.NuclearHead,\n                 MyTextsWrapperEnum.DeactivatingInProgress,\n                 5000,\n                 new List<uint>() { (uint)EntityId.DeactivateBombPrefab1, (uint)EntityId.DeactivateBombPrefab2 },\n                 MyUseObjectiveType.Taking\n\n                ) { RadiusOverride = 30, SaveOnSuccess = true, StartDialogId = MyDialogueEnum.LAST_HOPE_1200 };\n            deactivateBombs.OnMissionLoaded += DeactivateBombs_Loaded;\n            deactivateBombs.OnObjectUsedSucces += DeactivateBombs_ObjectUsedSuccess;\n            deactivateBombs.Components.Add(new MyDetectorDialogue((uint)EntityId.GasCloudsDetector, MyDialogueEnum.LAST_HOPE_1300));\n            m_objectives.Add(deactivateBombs);\n\n\n\n            m_repairPipes = new MyMultipleUseObjective\n                (MyTextsWrapperEnum.LAST_HOPE_STABILIZE_GAS,\n                 MyMissionID.LAST_HOPE_REPAIR_PIPES,\n                  MyTextsWrapperEnum.LAST_HOPE_STABILIZE_GAS_DESC,\n                 null,\n                 this,\n                 new MyMissionID[] { MyMissionID.LAST_HOPE_DEACTIVATE_BOMB },\n                 MyTextsWrapperEnum.PressToRepairGasPipe,\n                 MyTextsWrapperEnum.GasPipe,\n                 MyTextsWrapperEnum.ProgressRepairing,\n                 5000,\n                 new List<uint>() { },\n                 MyUseObjectiveType.Repairing\n                ) { SaveOnSuccess = true, RadiusOverride = 30, StartDialogId = MyDialogueEnum.LAST_HOPE_1400, SuccessDialogId = MyDialogueEnum.LAST_HOPE_1600 };\n            foreach (var gasPipe in m_gasPipes)\n            {\n                m_repairPipes.MissionEntityIDs.Add(gasPipe.Key);\n            }\n            m_repairPipes.OnObjectUsedSucces += RepairPipes_ObjectUsedSuccess;\n            m_objectives.Add(m_repairPipes);\n\n\n\n            var stabilizeNuclearCore = new MyMultipleUseObjective\n                (\n                MyTextsWrapperEnum.LAST_HOPE_STABILIZE_NUCLEAR_CORE,\n                MyMissionID.LAST_HOPE_STABILIZE_NUCLEAR_CORE,\n                MyTextsWrapperEnum.LAST_HOPE_STABILIZE_GAS_DESC,\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.LAST_HOPE_REPAIR_PIPES },\n                MyTextsWrapperEnum.PressToRepairRadiation,\n                MyTextsWrapperEnum.RadiationLeak,\n                MyTextsWrapperEnum.Fixing,\n                5000,\n                new List<uint>() { },\n                MyUseObjectiveType.Repairing\n                ) { RadiusOverride = 40, SaveOnSuccess = true };\n            stabilizeNuclearCore.Components.Add(new MyDetectorDialogue((uint)EntityId.StabilizeCoreDialog1Dummy, MyDialogueEnum.LAST_HOPE_1700));\n            stabilizeNuclearCore.Components.Add(new MyDetectorDialogue((uint)EntityId.StabilizeCoreDialog2Dummy, MyDialogueEnum.LAST_HOPE_1800));\n            foreach (var core in m_nuclearCores)\n            {\n                stabilizeNuclearCore.MissionEntityIDs.Add(core.Key);\n            }\n            stabilizeNuclearCore.OnObjectUsedSucces += StabilizeNuclearCore_ObjectUsedSuccess;\n            m_objectives.Add(stabilizeNuclearCore);\n\n\n            var leaveUnderground = new MyObjective\n                (\n                MyTextsWrapperEnum.LAST_HOPE_LEAVE_SHAFTS,\n                MyMissionID.LAST_HOPE_LEAVE_UNDERGROUND,\n                MyTextsWrapperEnum.LAST_HOPE_LEAVE_SHAFTS_DESC,\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.LAST_HOPE_STABILIZE_NUCLEAR_CORE },\n                new MyMissionLocation(baseSector, (uint)EntityId.LaveUndergroundDummy)) { StartDialogId = MyDialogueEnum.LAST_HOPE_1900, HudName = MyTextsWrapperEnum.Nothing };\n            leaveUnderground.OnMissionSuccess += LeaveUnderground_Success;\n            m_objectives.Add(leaveUnderground);\n\n            #endregion\n        }\n\n        void LeaveUnderground_Success(MyMissionBase sender)\n        {\n            MyScriptWrapper.PlayDialogue(MyDialogueEnum.LAST_HOPE_2000);\n        }\n\n        private void DestroySlaverRiders_Loaded(MyMissionBase sender)\n        {\n            \n        }\n\n\n        public override void Success()\n        {\n            base.Success();\n\n        }\n\n        private void StabilizeNuclearCore_ObjectUsedSuccess(uint entityId)\n        {\n            MyScriptWrapper.TryUnhideEntities(m_nuclearCores[entityId].Item1);\n            MyScriptWrapper.SetEntityEnabled(m_nuclearCores[entityId].Item2, false);\n        }\n\n\n        private void RepairPipes_ObjectUsedSuccess(uint entityId)\n        {\n            MyScriptWrapper.TryUnhideEntities(m_gasPipes[entityId].Item1);\n            MyScriptWrapper.SetEntityEnabled(m_gasPipes[entityId].Item2, false);\n\n            m_repairedCounter++;\n\n            if (m_repairedCounter == 2)\n            {\n                MyScriptWrapper.PlayDialogue(MyDialogueEnum.LAST_HOPE_1500);\n            }\n        }\n\n        private void DeactivateBombs_ObjectUsedSuccess(uint entityId)\n        {\n            MyScriptWrapper.Highlight(entityId, false, this);\n            MyScriptWrapper.TryHide(entityId);\n        }\n\n        private void DeactivateBombs_Loaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.Highlight((uint)EntityId.DeactivateBombPrefab1, true, this);\n            MyScriptWrapper.Highlight((uint)EntityId.DeactivateBombPrefab2, true, this);\n        }\n\n\n        private void StopSlaverTransport_Loaded(MyMissionBase sender)\n        {\n            sender.MissionTimer.RegisterTimerAction(StopSlaversObjectiveTime, () => Fail(MyTextsWrapperEnum.Fail_TimeIsUp), true, \"\");\n        }\n\n        private void ReachColonyDialogComonentOnOnDialogStarted()\n        {\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.Special, category:\"KA07\", priority:100);\n        }\n\n        private void ReachColonyDialogComonentOnOnDialogFinished()\n        {\n            //MyScriptWrapper.SetFactionRelation(MyMwcObjectBuilder_FactionEnum.Rainiers, MyMwcObjectBuilder_FactionEnum.Omnicorp, MyFactions.RELATION_WORST);\n        }\n\n        private void CatchSlaverRiders_Loaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.StopTransition(100);\n        }\n\n        void Script_EntityDeath(MyEntity entityDeath, MyEntity killedBy)\n        {\n            if (entityDeath.EntityId == null)\n                return;\n\n            if (entityDeath.EntityId.Value.NumericValue == (uint)EntityId.StopSlaverTransportGenerator1)\n            {\n                m_movingShip1.StopShip();\n                m_movingShip1Particle.StopShip();\n                /*\n                m_stopSlaverTransport.RemoveComponent(m_movingShip1);\n                m_stopSlaverTransport.RemoveComponent(m_movingShip1Particle);\n                 */\n            }\n\n            if (entityDeath.EntityId.Value.NumericValue == (uint)EntityId.StopSlaverTransportGenerator2)\n            {\n                m_movingShip2.StopShip();\n                m_movingShip2Particle.StopShip();\n                /*\n                m_stopSlaverTransport.RemoveComponent(m_movingShip2);\n                m_stopSlaverTransport.RemoveComponent(m_movingShip2Particle);\n                 */\n            }\n        }\n\n\n\n\n        public override void Accept()\n        {\n            base.Accept();\n\n            MyScriptWrapper.AddInventoryItem(MyScriptWrapper.GetPlayerInventory(), MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_Basic, 5000f);\n        }\n\n        public override void Load()\n        {\n            base.Load();\n            MyScriptWrapper.SetEntityPriority(MyScriptWrapper.GetEntity((uint)EntityId.DestroySlaverRidersShip1), -1);\n            MyScriptWrapper.SetEntityPriority(MyScriptWrapper.GetEntity((uint)EntityId.DestroySlaverRidersShip2), -1);\n            MyScriptWrapper.SetEntityPriority(MyScriptWrapper.GetEntity((uint)EntityId.StopSlaverTransportShip1), -1);\n            MyScriptWrapper.SetEntityPriority(MyScriptWrapper.GetEntity((uint)EntityId.StopSlaverTransportShip2), -1);\n\n            MyScriptWrapper.SetEntityDestructible(MyScriptWrapper.GetEntity((int)EntityId.StopSlaverTransportShip1), false);\n            MyScriptWrapper.SetEntityDestructible(MyScriptWrapper.GetEntity((int)EntityId.StopSlaverTransportShip2), false);\n\n                \n            MyScriptWrapper.SetFactionRelation(MyMwcObjectBuilder_FactionEnum.Rainiers, MyMwcObjectBuilder_FactionEnum.Slavers, MyFactions.RELATION_WORST);\n            MyScriptWrapper.SetFactionRelation(MyMwcObjectBuilder_FactionEnum.Rainiers, MyMwcObjectBuilder_FactionEnum.Pirates, MyFactions.RELATION_BEST);\n\n\n            MyScriptWrapper.EntityDeath += Script_EntityDeath;\n            MyScriptWrapper.OnEntityAtacked += Script_EntityAtacked;\n            MyScriptWrapper.OnSpawnpointBotSpawned += Script_SpawnpointBotSpawned;\n            MyScriptWrapper.OnDialogueFinished += Script_DialogueFinished;\n\n\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.CalmAtmosphere);\n\n            m_repairPipesDummyShoot = MyScriptWrapper.GetEntity((uint)EntityId.StabilizeGasPipesShootDetector);\n            m_repairedCounter = 0;\n        }\n\n        private void Script_DialogueFinished(MyDialogueEnum dialogue, bool interrupted)\n        {\n            if (dialogue == MyDialogueEnum.LAST_HOPE_0800 && m_findTunnel.IsAvailable())\n            {\n                m_findTunnel.Success();\n            }\n        }\n\n\n        private void Script_EntityAtacked(MyEntity attacker, MyEntity entity2)\n        {\n            var boundingSphere = MySession.PlayerShip.WorldVolume;\n\n            if (MyScriptWrapper.IsPlayerShip(attacker) && m_repairPipes.IsAvailable() && m_repairPipesDummyShoot.GetIntersectionWithSphere(ref boundingSphere))\n            {\n                MyScriptWrapper.SetEntityEnabled((uint)EntityId.StabilizeGasPipesShootparticle, true);\n                MyScriptWrapper.DestroyPlayerShip();\n            }\n        }\n\n        private void Script_SpawnpointBotSpawned(MyEntity entity1, MyEntity entity2)\n        {\n            var bot = entity2 as MySmallShipBot;\n\n            if (entity1.EntityId != null && bot != null)\n            {\n                bot.SleepDistance = 40000;\n                bot.SeeDistance = 2000;\n                //bot.Attack(MySession.PlayerShip);\n            }\n        }\n\n\n        public override void Unload()\n        {\n            MyScriptWrapper.EntityDeath -= Script_EntityDeath;\n            MyScriptWrapper.OnEntityAtacked -= Script_EntityAtacked;\n            MyScriptWrapper.OnSpawnpointBotSpawned -= Script_SpawnpointBotSpawned;\n            MyScriptWrapper.OnDialogueFinished -= Script_DialogueFinished;\n\n            m_repairPipesDummyShoot = null;\n\n            base.Unload();\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/SinglePlayer/MyMedina622Mission.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Entities;\nusing System.Diagnostics;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Entities.WayPoints;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.World.Global;\n\n\nnamespace MinerWars.AppCode.Game.Missions.SinglePlayer\n{\n    class MyMedina622Mission : MyMissionSandboxBase\n    {\n        private enum EntityID // list of IDs used in script\n        {\n            StartLocation = 1483,\n            //FlyTarget = 1484,\n        }\n\n        public override void ValidateIds() // checks if all IDs in enum are loaded correctly\n        {\n            foreach (var value in Enum.GetValues(typeof(EntityID)))\n            {\n                MyScriptWrapper.GetEntity((uint)((value as EntityID?).Value));\n            }\n        }\n\n        //BLOCK FOR CLASS MEMBERS\n\n        //END OF BLOCK\n\n        public MyMedina622Mission()\n        {\n            ID = MyMissionID.TRADE_STATION_ARABS; /* ID must be added to MyMissions.cs */\n            DebugName = new StringBuilder(\"Medina 622 mission\"); // Name of mission\n            Name = Localization.MyTextsWrapperEnum.MEDINA_622;\n            Description = Localization.MyTextsWrapperEnum.MEDINA_622_Description; // Description of mission - do not forget to \\n at the end of each line\n            //Flags = MyMissionFlags.Story;\n\n            MyMwcVector3Int baseSector = new MyMwcVector3Int(4027778, 0, 861110); // Story sector of the script - i.e. (-2465,0,6541)\n\n            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation); // Starting dummy point - must by typecasted to uint and referenced from EntityID enum\n\n            RequiredMissions = new MyMissionID[] { /*MyMissionID.ALIEN_GATE*/ }; // IDs of missions required to make this mission available\n            RequiredActors = new MyActorEnum[] { MyActorEnum.MARCUS, MyActorEnum.MADELYN };\n\n            m_objectives = new List<MyObjective>(); // Creating of list of submissions\n\n            //// START OF REACH OBJECTIVE SUBMISSION DEFINITION\n            //var flyInside = new MyObjective( // One member of that list - its type defines the type of submission - MySubmission means fly to the dummypoint to success. Here it is var so you cannot call methods on it\n            //    new StringBuilder(\"Fly over there\"), // Name of the submission\n            //    MyMissionID.TRADE_STATION_ARABS_FLY_TARGET, // ID of the submission - must be added to MyMissions.cs\n            //    new StringBuilder(\"\"), // Description of the submission\n            //    null,\n            //    this,\n            //    new MyMissionID[] { }, // ID of submissions required to make this submission available - it is clear so this submission is the starting submission\n            //    new MyMissionLocation(baseSector, (uint)EntityID.FlyTarget) // ID of dummy point of checkpoint\n            //) { SaveOnSuccess = false }; // False means do not save game in that checkpoint\n            //m_objectives.Add(flyInside); // Adding this submission to the list of submissions of current mission\n            //// END OF REACH OBJECTIVE SUBMISSION DEFINITION\n        }\n\n        public override void Load() // Code in that block will be called on the load of the sector\n        {\n            base.Load();\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.CalmAtmosphere); // Sets music group to be played in the sector - no matter if the mission is running or not\n\n        }\n\n        public override void Update() //Code in that block will be called in each frame\n        {\n            base.Update();\n\n        }\n\n    }\n\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/SinglePlayer/MyMilitaryOutpostMission.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Entities;\nusing System.Diagnostics;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Entities.WayPoints;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Inventory;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.Game.World.Global;\n\n\nnamespace MinerWars.AppCode.Game.Missions.SinglePlayer\n{\n    class MyMilitaryOutpostMission : MyMissionSandboxBase\n    {\n        private enum EntityID // list of IDs used in script\n        {\n            StartLocation = 1365,\n         \n        }\n\n        public override void ValidateIds() // checks if all IDs in enum are loaded correctly\n        {\n            foreach (var value in Enum.GetValues(typeof(EntityID)))\n            {\n                MyScriptWrapper.GetEntity((uint)((value as EntityID?).Value));\n            }\n        }\n\n\n\n        public MyMilitaryOutpostMission()\n        {\n            ID = MyMissionID.MILITARY_OUTPOST; /* ID must be added to MyMissions.cs */\n            DebugName = new StringBuilder(\"Military Outpost\"); // Name of mission\n            Name = MyTextsWrapperEnum.MILITARY_OUTPOST;\n            Description = MyTextsWrapperEnum.MILITARY_OUTPOST_Description;\n            MyMwcVector3Int baseSector = new MyMwcVector3Int(-3210402, 0, 2812826); // Story sector of the script - i.e. (-2465,0,6541)\n            RequiredMissions = new MyMissionID[] { };\n            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation); // Starting dummy point - must by typecasted to uint and referenced from EntityID enum\n            RequiredActors = new MyActorEnum[] { MyActorEnum.MADELYN };\n           \n\n            m_objectives = new List<MyObjective>(); // Creating of list of submissions\n\n\n        }\n\n\n\n\n        public override void Load() // Code in that block will be called on the load of the sector\n        {\n            base.Load();\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.HeavyFight, 3); // Sets music group to be played in the sector - no matter if the mission is running or not            \n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/SinglePlayer/MyMinerUprisingMission.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Entities;\nusing System.Diagnostics;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Entities.WayPoints;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Inventory;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.Game.World.Global;\n\n\nnamespace MinerWars.AppCode.Game.Missions.SinglePlayer\n{\n    class MyMinerUprisingtMission : MyMissionSandboxBase\n    {\n        private enum EntityID // list of IDs used in script\n        {\n            StartLocation = 7,\n         \n        }\n\n        public override void ValidateIds() // checks if all IDs in enum are loaded correctly\n        {\n            foreach (var value in Enum.GetValues(typeof(EntityID)))\n            {\n                MyScriptWrapper.GetEntity((uint)((value as EntityID?).Value));\n            }\n        }\n\n\n\n        public MyMinerUprisingtMission()\n        {\n            ID = MyMissionID.MINER_UPRISING; /* ID must be added to MyMissions.cs */\n            DebugName = new StringBuilder(\"Miner Uprising\"); // Name of mission\n            Name = MyTextsWrapperEnum.MINER_UPRISING;\n            Description = MyTextsWrapperEnum.MINER_UPRISING_Description;\n            MyMwcVector3Int baseSector = new MyMwcVector3Int(-2610975, 0, -290706); // Story sector of the script - i.e. (-2465,0,6541)\n            RequiredMissions = new MyMissionID[] { };\n            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation); // Starting dummy point - must by typecasted to uint and referenced from EntityID enum\n            RequiredActors = new MyActorEnum[] { MyActorEnum.MADELYN };\n           \n\n            m_objectives = new List<MyObjective>(); // Creating of list of submissions\n\n\n        }\n\n\n        private float m_oldRelation;\n\n        public override void Load() // Code in that block will be called on the load of the sector\n        {\n            base.Load();\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.HeavyFight, 3); // Sets music group to be played in the sector - no matter if the mission is running or not\n\n            m_oldRelation = MyFactions.GetFactionsStatus(MyMwcObjectBuilder_FactionEnum.Russian, MyMwcObjectBuilder_FactionEnum.Russian_KGB);\n            MyScriptWrapper.SetFactionRelation(MyMwcObjectBuilder_FactionEnum.Russian, MyMwcObjectBuilder_FactionEnum.Russian_KGB, MyFactions.RELATION_WORST);\n        }\n\n        public override void Unload()\n        {\n            base.Unload();\n\n            MyScriptWrapper.SetFactionRelation(MyMwcObjectBuilder_FactionEnum.Russian, MyMwcObjectBuilder_FactionEnum.Russian_KGB, m_oldRelation);\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/SinglePlayer/MyMothershipCrashMission.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Entities;\nusing System.Diagnostics;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Entities.WayPoints;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Inventory;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.Game.World.Global;\n\n\nnamespace MinerWars.AppCode.Game.Missions.SinglePlayer\n{\n    class MyMothershipCrashMission : MyMissionSandboxBase\n    {\n        private enum EntityID // list of IDs used in script\n        {\n            StartLocation = 1224,\n         \n        }\n\n        public override void ValidateIds() // checks if all IDs in enum are loaded correctly\n        {\n            foreach (var value in Enum.GetValues(typeof(EntityID)))\n            {\n                MyScriptWrapper.GetEntity((uint)((value as EntityID?).Value));\n            }\n        }\n\n\n\n        public MyMothershipCrashMission()\n        {\n            ID = MyMissionID.MOTHERSHIP_CRASH; /* ID must be added to MyMissions.cs */\n            DebugName = new StringBuilder(\"Mothership Crash\"); // Name of mission\n            Name = MyTextsWrapperEnum.MOTHERSHIP_CRASH;\n            Description = MyTextsWrapperEnum.MOTHERSHIP_CRASHL_Description;\n            MyMwcVector3Int baseSector = new MyMwcVector3Int(-6450733, 0, -5060566); // Story sector of the script - i.e. (-2465,0,6541)\n            RequiredMissions = new MyMissionID[] { };\n            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation); // Starting dummy point - must by typecasted to uint and referenced from EntityID enum\n            RequiredActors = new MyActorEnum[] { MyActorEnum.MADELYN };\n           \n\n            m_objectives = new List<MyObjective>(); // Creating of list of submissions\n\n\n        }\n\n\n\n\n        public override void Load() // Code in that block will be called on the load of the sector\n        {\n            base.Load();\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.Mystery, 3); // Sets music group to be played in the sector - no matter if the mission is running or not\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/SinglePlayer/MyNewJerusalemMission.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Inventory;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Entities;\nusing System.Diagnostics;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Entities.WayPoints;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.AppCode.Game.Audio.Dialogues;\n\n\n\n\nnamespace MinerWars.AppCode.Game.Missions.SinglePlayer\n{\n    class MyNewJerusalemMission : MyMissionSandboxBase\n    {\n        private enum EntityID\n        {\n            StartLocation = 16779508,\n           \n        }\n       \n\n\n\n        public override void ValidateIds() // checks if all IDs in enum are loaded correctly\n        {\n            foreach (var value in Enum.GetValues(typeof(EntityID)))\n            {\n                MyScriptWrapper.GetEntity((uint)((value as EntityID?).Value));\n            }\n            foreach (List<uint> list in new List<List<uint>> {  })\n            {\n                foreach (var item in list)\n                {\n                    MyScriptWrapper.GetEntity(item);\n                }\n            }\n            \n        }\n\n\n       \n\n\n        public MyNewJerusalemMission()\n        {\n            ID = MyMissionID.NEW_JERUSALEM_MISSION; /* ID must be added to MyMissions.cs */\n            DebugName = new StringBuilder(\"New Jerusalem\"); // Nazev mise\n            Name = MyTextsWrapperEnum.NEW_JERUSALEM_MISSION;\n            Description = MyTextsWrapperEnum.NEW_JERUSALEM_MISSION_Description;\n\n\n            MyMwcVector3Int baseSector = new MyMwcVector3Int(-491618, 0, -2765857); // Story sector of the script\n\n            Location = new MyMissionLocation(baseSector,(uint)EntityID.StartLocation ); // Startmy point129158\n\n            RequiredMissions = new MyMissionID[] {  }; // mise ktere musi byt splneny pred prijetim teto mise\n            RequiredMissionsForSuccess = new MyMissionID[] {  };\n            RequiredActors = new MyActorEnum[] { MyActorEnum.MADELYN };\n\n            m_objectives = new List<MyObjective>(); // Creating of list of submissions\n            // START DEFINICE SUBMISE\n\n\n\n           \n           \n        }\n  \n\n       \n\n    \n\n        public override void Load() // vykona se jednou na zacatku\n        {\n\n            base.Load();\n            \n\n            \n            \n        }\n\n        public override void Update()//vola se v kazdem snimku\n        {\n            \n            base.Update();\n                  \n        }\n\n     \n\n    }\n       \n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/SinglePlayer/MyNewNanjingMission.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Entities;\nusing System.Diagnostics;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Entities.WayPoints;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Inventory;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.Game.World.Global;\n\n\nnamespace MinerWars.AppCode.Game.Missions.SinglePlayer\n{\n    class MyNewNanjingMission : MyMissionSandboxBase\n    {\n        private enum EntityID // list of IDs used in script\n        {\n            StartLocation = 16777293,\n          \n            \n        }\n\n        public override void ValidateIds() // checks if all IDs in enum are loaded correctly\n        {\n            foreach (var value in Enum.GetValues(typeof(EntityID)))\n            {\n                MyScriptWrapper.GetEntity((uint)((value as EntityID?).Value));\n            }\n        }\n\n\n\n        public MyNewNanjingMission()\n        {\n            ID = MyMissionID.NEW_NANJING; /* ID must be added to MyMissions.cs */\n            DebugName = new StringBuilder(\"New Nanjing\"); // Name of mission\n            Name = MyTextsWrapperEnum.NEW_NANJING;\n            Description = MyTextsWrapperEnum.NEW_NANJING_Description;\n            MyMwcVector3Int baseSector = new MyMwcVector3Int(719329, 0, 3942993); // Story sector of the script - i.e. (-2465,0,6541)\n            RequiredMissions = new MyMissionID[] { };\n            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation); // Starting dummy point - must by typecasted to uint and referenced from EntityID enum\n            RequiredActors = new MyActorEnum[] { MyActorEnum.MADELYN };\n\n\n            m_objectives = new List<MyObjective>(); // Creating of list of submissions\n        }\n\n\n\n\n        public override void Load() // Code in that block will be called on the load of the sector\n        {\n            base.Load();\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.HeavyFight, 3); // Sets music group to be played in the sector - no matter if the mission is running or not\n            MyScriptWrapper.SetPlayerFaction(MyMwcObjectBuilder_FactionEnum.Rainiers);\n           \n\n           \n            }\n        }\n    }\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/SinglePlayer/MyNewSingaporeIndustryMission.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Entities;\nusing System.Diagnostics;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Entities.WayPoints;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.AppCode.Game.Localization;\n\n\nnamespace MinerWars.AppCode.Game.Missions.SinglePlayer\n{\n    class MyNewSingaporeIndustryMission : MyMissionSandboxBase\n    {\n        private enum EntityID // list of IDs used in script\n        {\n            StartLocation = 3985,\n            //FlyInside = 4604,\n        }\n\n        public override void ValidateIds() // checks if all IDs in enum are loaded correctly\n        {\n            foreach (var value in Enum.GetValues(typeof(EntityID)))\n            {\n                MyScriptWrapper.GetEntity((uint)((value as EntityID?).Value));\n            }\n        }\n\n        //BLOCK FOR CLASS MEMBERS\n        private MyObjectiveDestroy m_DestroyEnemies;\n        //END OF BLOCK\n\n        public MyNewSingaporeIndustryMission()\n        {\n            ID = MyMissionID.NEW_SINGAPOUR; /* ID must be added to MyMissions.cs */\n            DebugName = new StringBuilder(\"New Singapore industry\"); // Name of mission\n            Name = MyTextsWrapperEnum.NEW_SINGAPOUR;\n            Description = MyTextsWrapperEnum.NEW_SINGAPOUR_Description;\n            //Flags = MyMissionFlags.Story;\n\n            MyMwcVector3Int baseSector = new MyMwcVector3Int(-1032721, 0, 5706607); // Story sector of the script - i.e. (-2465,0,6541)\n\n            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation); // Starting dummy point - must by typecasted to uint and referenced from EntityID enum\n\n            RequiredMissions = new MyMissionID[] { /*MyMissionID.ALIEN_GATE*/ }; // IDs of missions required to make this mission available\n            RequiredMissionsForSuccess = new MyMissionID[] { /*MyMissionID.NEW_SINGAPOUR_FLY*/ };\n            RequiredActors = new MyActorEnum[] { MyActorEnum.MARCUS, MyActorEnum.MADELYN };\n\n            m_objectives = new List<MyObjective>(); // Creating of list of submissions\n\n\n\n            //// START OF REACH OBJECTIVE SUBMISSION DEFINITION\n            //var FlyInside = new MyObjective( // One member of that list - its type defines the type of submission - MySubmission means fly to the dummypoint to success. Here it is var so you cannot call methods on it\n            //    new StringBuilder(\"fly\\n\"), // Name of the submission\n            //    MyMissionID.NEW_SINGAPOUR_FLY, // ID of the submission - must be added to MyMissions.cs\n            //    new StringBuilder(\"fly\\n\"), // Description of the submission\n            //    null,\n            //    this,\n            //    new MyMissionID[] { }, // ID of submissions required to make this submission available - it is clear so this submission is the starting submission\n            //    new MyMissionLocation(baseSector, (uint)EntityID.FlyInside) // ID of dummy point of checkpoint\n            //) { SaveOnSuccess = false }; // False means do not save game in that checkpoint\n            //m_objectives.Add(FlyInside); // Adding this submission to the list of submissions of current mission\n            //// END OF REACH OBJECTIVE SUBMISSION DEFINITION\n\n\n\n\n            //Here you can add another submissions\n        }\n\n        public override void Load() // Code in that block will be called on the load of the sector\n        {\n            base.Load();\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.CalmAtmosphere); // Sets music group to be played in the sector - no matter if the mission is running or not\n        }\n\n        public override void Update() //Code in that block will be called in each frame\n        {\n            base.Update();\n\n        }\n\n    }\n\n}\n\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/SinglePlayer/MyPirateBaseMission.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Gameplay;\nusing MinerWars.AppCode.Game.HUD;\nusing MinerWars.AppCode.Game.Inventory;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.AppCode.Game.Entities.Prefabs;\nusing MinerWars.AppCode.Game.Entities.SubObjects;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.Prefabs;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Missions.Components;\nusing MinerWars.AppCode.Game.Audio.Dialogues;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.Resources;\n\nnamespace MinerWars.AppCode.Game.Missions.SinglePlayer\n{\n    class MyPirateBaseMission : MyMission\n    {\n        enum EntityID\n        {\n            FIND_PIRATE_BASE_LOCATION = 548180,\n\n            DETECTOR_ID_1 = 247687,\n            DETECTOR_ID_2 = 247688,\n            DETECTOR_ID_3 = 247714,\n            DETECTOR_ID_4 = 247716,\n            DETECTOR_ID_5 = 247717,\n            DETECTOR_ID_6 = 247718,\n            DETECTOR_ID_7 = 247720,\n            DETECTOR_ID_8 = 247719,\n            DETECTOR_ID_9 = 247715,\n            DETECTOR_ID_10 = 247712,\n            DETECTOR_ID_11 = 247723,\n\n            TURRET_ID_1 = 247685,\n            TURRET_ID_2 = 247692,\n            TURRET_ID_3 = 247694,\n            TURRET_ID_4 = 247696,\n            TURRET_ID_5 = 247698,\n            TURRET_ID_6 = 247702,\n            TURRET_ID_7 = 247704,\n            TURRET_ID_8 = 247706,\n            TURRET_ID_9 = 247710,\n            TURRET_ID_10 = 247708,\n            TURRET_ID_11 = 247721,\n\n            LIGHT_ID_1 = 247713,\n            LIGHT_ID_2 = 259371,\n            LIGHT_ID_3 = 259373,\n            LIGHT_ID_4 = 259376,\n            LIGHT_ID_5 = 259380,\n            LIGHT_ID_6 = 259359,\n            LIGHT_ID_7 = 259363,\n            LIGHT_ID_8 = 259366,\n            LIGHT_ID_9 = 259367,\n            LIGHT_ID_10 = 259377,\n            LIGHT_ID_11 = 259361,\n\n            AMBUSH_1_DETECTOR = 547685,\n            AMBUSH_1_SPAWNPOINT_A = 547191,\n            AMBUSH_1_SPAWNPOINT_B = 553601,\n\n            AMBUSH_2_DETECTOR = 547686,\n            AMBUSH_2_SPAWNPOINT_A = 547192,\n            AMBUSH_2_SPAWNPOINT_B = 553600,\n\n            AMBUSH_3_DETECTOR = 547687,\n            AMBUSH_3_SPAWNPOINT_A = 548182,\n            AMBUSH_3_SPAWNPOINT_B = 553599,\n\n            AMBUSH_4_DETECTOR = 548183,\n            AMBUSH_4_SPAWNPOINT_A = 547193,\n            AMBUSH_4_SPAWNPOINT_B = 553598,\n\n            AMBUSH_5_DETECTOR = 560662,\n            AMBUSH_5_SPAWNPOINT_A = 552954,\n            AMBUSH_5_SPAWNPOINT_B = 553602,\n\n            AMBUSH_6_DETECTOR = 547688,\n            AMBUSH_6_SPAWNPOINT_A = 547190,\n            AMBUSH_6_SPAWNPOINT_B = 553603,\n\n            PIRATE_LEADER = 247736,\n            PIRATE_SPAWNPOINT1 = 247652,\n            PIRATE_SPAWNPOINT2 = 247653,\n            PIRATE_SPAWNPOINT3 = 247654,\n            PREPARE_DETECTOR = 558789,\n            PREPARE_SPAWNPOINT0 = 259383,\n            PREPARE_SPAWNPOINT1 = 259384,\n            PREPARE_SPAWNPOINT2 = 259385,\n            PREPARE_FOR_DEFENSE_LOCATION = 557978,\n            TURRET_PREFABS_DUMMY = 228781,\n            TURRET_PREFAB0 = 603561,\n            TURRET_PREFAB1 = 603565,\n            TURRET_PREFAB2 = 603555,\n            TURRET_PREFAB3 = 603573,\n            TURRET_PREFAB4 = 603569,\n            TURRET_PREFAB5 = 603576,\n            RUSSIAN_MOTHERSHIP0 = 132833,\n            RUSSIAN_MOTHERSHIP1 = 247728,\n            RUSSIAN_MOTHERSHIP2 = 247727,\n            RUSSIAN_MOTHERSHIP_TARGET0 = 247726,\n            RUSSIAN_MOTHERSHIP_TARGET1 = 247733,\n            RUSSIAN_MOTHERSHIP_TARGET2 = 247735,\n            RUSSIAN_MOTHERSHIP_FLEE_TARGET0 = 556291,\n            RUSSIAN_MOTHERSHIP_FLEE_TARGET1 = 556290,\n            RUSSIAN_MOTHERSHIP_FLEE_TARGET2 = 556292,\n            PIRATE_LEADER_BASE_WAYPOINT = 557985,\n            PIRATES_SPLIT_WAYPOINT = 553676,\n            BASE_ATACKERS_DETECTOR = 557157,\n            BASE_GENERATOR = 557158,\n            PIRATE_MOTHERSHIP_CONTAINER = 555325,\n            RUSSIAN_MOTHERSHIP_CONTAINER = 132832,\n            PIRATE_MOTHERSHIP_DESTINATION = 555487,\n            MADELYN_DUMMY = 560586,\n\n            ASTEROID1 = 247667,\n            ASTEROID2 = 247666,\n            ASTEROID3 = 247682,\n        }\n\n        uint[] m_defendSpawnpoints = { 228814, 553607, 553605, 228815, 553604, 228813, 553628, 553625, 553626, 553627 };\n        uint[] m_allySpawnpoints = { 553752, 553747, 553746, 553750, 553751, 553748 };\n        string[] m_piratePatrolRoutes = { \"Wing1\", \"Wing2\", \"center\" };\n\n        private MyEntityDetector m_baseAtackersDetector { get; set; }\n\n        public override void ValidateIds() // checks if all IDs in enum are loaded correctly\n        {\n            foreach (var value in Enum.GetValues(typeof(EntityID)))\n            {\n                MyScriptWrapper.GetEntity((uint)((value as EntityID?).Value));\n            }\n\n            foreach (var id in m_defendSpawnpoints)\n            {\n                MyScriptWrapper.GetEntity(id);\n            }\n        }\n\n        MyEntity GetEntity(EntityID entityId)\n        {\n            return MyScriptWrapper.GetEntity((uint)entityId);\n        }\n\n        enum PirateMissionStage\n        {\n            FirstWaveAttacking,\n            SecondWaveAttacking,\n            PirateLeaderGoingToPlayer,\n            PirateLeaderEscortingPlayer,\n            SettingUpDefenses,\n            Defending,\n            GetBackToMotherShip,\n        }\n\n        private const int NUMBER_OF_TURRETS_TO_BUILD = 6;\n        private const MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum TURRET_PREFAB_TYPE =\n            MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A01_LARGESHIP_AUTOCANNON;\n\n        private const float PIRATE_SHIP_HEALTH_HANDICAP = 0.5f;\n\n        private readonly MyPrefabLargeShip[] m_russianMotherships = new MyPrefabLargeShip[3];\n        private readonly MyLine[] m_russianMothershipTrajectories = new MyLine[3];\n        private readonly MyLine[] m_russianMothershipTrajectories2 = new MyLine[3];\n        private MyLine m_pirateNothershipTrajectory;\n\n        private readonly Dictionary<uint, uint> m_detectorTurretMapping = new Dictionary<uint, uint>();\n        private readonly Dictionary<uint, uint> m_detectorLightMapping = new Dictionary<uint, uint>();\n        private readonly List<uint> m_dummiesForTurrets = new List<uint>();\n        private int m_turretsBuilt;\n\n        private readonly MyTimedObjective m_defendObjective;\n        private readonly MyTimedObjective m_buildDefensesObjective;\n        private readonly MyObjective m_getTurrets;\n        private readonly MyObjective m_allyArrivedObjective;\n\n        private MyEntityDetector m_currentDetector;\n        private MyHudNotification.MyNotification m_canBuildNotification;\n        private MyHudNotification.MyNotification m_remainingTurretsNotification;\n        //private MyHudNotification.MyNotification m_canSkipNotification;\n        private MyHudNotification.MyNotification m_generatorUnderAttackNotification;\n        private object[] m_actionKeyString = new object[1];\n\n        private MyEntityDetector m_wave1Detector;\n        private MyEntityDetector m_wave6Detector;\n\n        public MyPirateBaseMission()\n        {\n            ID = MyMissionID.PIRATE_BASE; /* ID must be added to MyMissions.cs */\n            DebugName = new StringBuilder(\"04-Pirate base\");\n            Name = MyTextsWrapperEnum.PIRATE_BASE;\n            Description = MyTextsWrapperEnum.PIRATE_BASE_Description;\n            Flags = MyMissionFlags.Story;\n            \n            MyMwcVector3Int baseSector = new MyMwcVector3Int(190921, 0, 2152692);\n\n            /* sector where the mission is located */\n            Location = new MyMissionLocation(baseSector, 228782);\n\n            RequiredMissions = new MyMissionID[] { MyMissionID.BARTHS_MOON_CONVINCE };\n            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.PIRATE_BASE_ALLY_ARRIVED };\n            RequiredActors = new MyActorEnum[] { MyActorEnum.MARCUS, MyActorEnum.MADELYN };\n\n            m_objectives = new List<MyObjective>();\n\n            // == Objective 01 ==\n            var travel = new MyObjective(\n                (MyTextsWrapperEnum.PIRATE_BASE_TRAVEL_TO_BASE_Name),\n                MyMissionID.PIRATE_BASE_TRAVEL_TO_BASE,\n                (MyTextsWrapperEnum.PIRATE_BASE_TRAVEL_TO_BASE_Description),\n                null,\n                this,\n                new MyMissionID[] {  },\n                new MyMissionLocation(baseSector, (uint)EntityID.FIND_PIRATE_BASE_LOCATION)\n            ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.Nothing };\n\n            travel.Components.Add(new MySpawnpointWaves((uint)EntityID.AMBUSH_1_DETECTOR, 0,\n                new List<uint[]> { new uint[] { (uint)EntityID.AMBUSH_1_SPAWNPOINT_A }, new uint[] { (uint)EntityID.AMBUSH_1_SPAWNPOINT_B } }));\n\n            travel.Components.Add(new MySpawnpointWaves((uint)EntityID.AMBUSH_2_DETECTOR, 0,\n                new List<uint[]> { new uint[] { (uint)EntityID.AMBUSH_2_SPAWNPOINT_A }, new uint[] { (uint)EntityID.AMBUSH_2_SPAWNPOINT_B } }));\n\n            travel.Components.Add(new MySpawnpointWaves((uint)EntityID.AMBUSH_3_DETECTOR, 0,\n                new List<uint[]> { new uint[] { (uint)EntityID.AMBUSH_3_SPAWNPOINT_A }, new uint[] { (uint)EntityID.AMBUSH_3_SPAWNPOINT_B } }));\n\n            travel.Components.Add(new MySpawnpointWaves((uint)EntityID.AMBUSH_4_DETECTOR, 0,\n                new List<uint[]> { new uint[] { (uint)EntityID.AMBUSH_4_SPAWNPOINT_A }, new uint[] { (uint)EntityID.AMBUSH_4_SPAWNPOINT_B } }));\n\n            travel.Components.Add(new MySpawnpointWaves((uint)EntityID.AMBUSH_5_DETECTOR, 0,\n                new List<uint[]> { new uint[] { (uint)EntityID.AMBUSH_5_SPAWNPOINT_A }, new uint[] { (uint)EntityID.AMBUSH_5_SPAWNPOINT_B } }));\n\n            travel.Components.Add(new MySpawnpointWaves((uint)EntityID.AMBUSH_6_DETECTOR, 0,\n                new List<uint[]> { new uint[] { (uint)EntityID.AMBUSH_6_SPAWNPOINT_A }, new uint[] { (uint)EntityID.AMBUSH_6_SPAWNPOINT_B } }));\n\n            //travel.OnMissionSuccess += ArrivedToBase;\n            travel.OnMissionLoaded += Travel_OnMissionLoaded;\n            travel.OnMissionCleanUp += Travel_OnMissionUnload;\n            m_objectives.Add(travel);\n\n            // == Objective 02 ==\n            var speakWithPirates = new MyMeetObjective(\n                (MyTextsWrapperEnum.PIRATE_BASE_SPEAK_WITH_PIRATES_Name),\n                MyMissionID.PIRATE_BASE_SPEAK_WITH_PIRATES,\n                (MyTextsWrapperEnum.PIRATE_BASE_SPEAK_WITH_PIRATES_Description),\n                this,\n                new MyMissionID[] { MyMissionID.PIRATE_BASE_TRAVEL_TO_BASE },\n                null, (uint)EntityID.PIRATE_LEADER, 300) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudPirateCaptain };\n            speakWithPirates.OnMissionLoaded += SpeakWithPirates_OnMissionLoaded;\n            m_objectives.Add(speakWithPirates);\n\n            // == Objective 03 ==\n            var listenToCaptain = new MyObjectiveDialog(\n                MyMissionID.PIRATE_BASE_LISTEN_TO_CAPTAIN,\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.PIRATE_BASE_SPEAK_WITH_PIRATES },\n                MyDialogueEnum.PIRATE_BASE_0600);\n            listenToCaptain.OnMissionLoaded += ListenToCaptain_OnMissionLoaded;\n            listenToCaptain.OnMissionCleanUp += ListenToCaptain_OnMissionUnload;\n            m_objectives.Add(listenToCaptain);\n\n            // == Objective 04 ==\n            var prepareForDefense = new MyObjective(\n                (MyTextsWrapperEnum.PIRATE_BASE_PREPARE_FOR_DEFENSE_Name),\n                MyMissionID.PIRATE_BASE_PREPARE_FOR_DEFENSE,\n                (MyTextsWrapperEnum.PIRATE_BASE_PREPARE_FOR_DEFENSE_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.PIRATE_BASE_LISTEN_TO_CAPTAIN },\n                new MyMissionLocation(baseSector, (uint)EntityID.PREPARE_FOR_DEFENSE_LOCATION),\n                startDialogId: MyDialogueEnum.PIRATE_BASE_0800) { SaveOnSuccess = true };\n            prepareForDefense.Components.Add(new MySpawnpointWaves((uint)EntityID.PREPARE_DETECTOR, 0, new List<uint[]> { new uint[] { (uint)EntityID.PREPARE_SPAWNPOINT0, (uint)EntityID.PREPARE_SPAWNPOINT1, (uint)EntityID.PREPARE_SPAWNPOINT2 } }));\n            prepareForDefense.OnMissionLoaded += PrepareForDefense_OnMissionLoaded;\n            m_objectives.Add(prepareForDefense);\n\n            // == Objective 05 ==\n            m_getTurrets = new MyUseObjective(\n                (MyTextsWrapperEnum.PIRATE_BASE_GET_TURRETS_Name),\n                MyMissionID.PIRATE_BASE_GET_TURRETS,\n                (MyTextsWrapperEnum.PIRATE_BASE_GET_TURRETS_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.PIRATE_BASE_PREPARE_FOR_DEFENSE },\n                new MyMissionLocation(baseSector, (uint)EntityID.TURRET_PREFABS_DUMMY),\n                MyTextsWrapperEnum.PressToTakeTurrets,\n                MyTextsWrapperEnum.Turrets,\n                MyTextsWrapperEnum.TransferInProgress,\n                3000,\n                objectiveType: MyUseObjectiveType.Taking) { SaveOnSuccess = true };\n            m_getTurrets.OnMissionLoaded += GetTurrets_OnMissionLoaded;\n            m_getTurrets.OnMissionSuccess += GetTurrets_OnMissionSuccess;\n            m_objectives.Add(m_getTurrets);\n\n            // == Objective 06 ==\n            m_buildDefensesObjective = new MyTimedObjective(\n                (MyTextsWrapperEnum.PIRATE_BASE_DEFENSE_SETUP_Name),\n                MyMissionID.PIRATE_BASE_DEFENSE_SETUP,\n                (MyTextsWrapperEnum.PIRATE_BASE_DEFENSE_SETUP_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.PIRATE_BASE_GET_TURRETS },\n                new TimeSpan(0, 0, minutes: 5, seconds: 0)\n                ) { SaveOnSuccess = true };\n            \n            m_buildDefensesObjective.OnMissionLoaded += BuildDefenses_OnMissionLoaded;\n            m_buildDefensesObjective.OnMissionUpdate += BuildDefenses_OnMissionUpdate;\n            m_buildDefensesObjective.OnMissionCleanUp += BuildDefenses_OnMissionUnloaded;\n            m_buildDefensesObjective.OnMissionSuccess += BuildDefenses_OnMissionSuccess;\n            m_objectives.Add(m_buildDefensesObjective);\n\n            // == Objective 07 ==\n            m_defendObjective = new MyTimedObjective(\n                (MyTextsWrapperEnum.PIRATE_BASE_DEFEND_Name),\n                MyMissionID.PIRATE_BASE_DEFEND,\n                (MyTextsWrapperEnum.PIRATE_BASE_DEFEND_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.PIRATE_BASE_DEFENSE_SETUP },\n                new TimeSpan(0, 0, minutes: 5, seconds: 0),\n                startDialogId: MyDialogueEnum.PIRATE_BASE_0900\n                ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudGenerator };\n            \n            m_defendObjective.OnMissionLoaded += Defend_OnMissionLoaded;\n            m_defendObjective.OnMissionCleanUp += Defend_OnMissionUnloaded;\n            m_defendObjective.OnMissionUpdate += Defend_OnMissionUpdate;\n            m_defendObjective.OnMissionSuccess += Defend_OnMissionSuccess;\n\n            m_defendObjective.Components.Add(new MyHeadshake((3*60)*1000, MyHeadshake.DefaultShaking));\n            m_defendObjective.Components.Add(new MyHeadshake((6*60)*1000, MyHeadshake.DefaultShaking));\n            m_defendObjective.Components.Add(new MyHeadshake((9*60)*1000, MyHeadshake.DefaultShaking));\n\n            m_objectives.Add(m_defendObjective);\n\n            // == Objective 08 ==\n            m_allyArrivedObjective = new MyObjective(\n                (MyTextsWrapperEnum.PIRATE_BASE_ALLY_ARRIVED_Name),\n                MyMissionID.PIRATE_BASE_ALLY_ARRIVED,\n                (MyTextsWrapperEnum.PIRATE_BASE_ALLY_ARRIVED_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.PIRATE_BASE_DEFEND },\n                null,\n                startDialogId: MyDialogueEnum.PIRATE_BASE_1100) { SaveOnSuccess = true };\n            m_allyArrivedObjective.OnMissionLoaded += AllyArrived_OnMissionLoaded;\n            m_allyArrivedObjective.OnMissionCleanUp += AllyArrived_OnMissionUnload;\n            m_allyArrivedObjective.OnMissionUpdate += AllyArrived_OnMissionUpdate;\n            m_allyArrivedObjective.OnMissionSuccess += AllyArrived_OnMissionSuccess;\n            m_objectives.Add(m_allyArrivedObjective);\n\n            /*\n            var returnBackToMotherShip = new MyObjective(\n                new StringBuilder(\"Return to your mothership\"),\n                MyMissionID.PIRATE_BASE_RETURN_BACK_TO_MOTHERSHIP,\n                new StringBuilder(\"\"),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.PIRATE_BASE_ALLY_ARRIVED },\n                new MyMissionLocation(baseSector, (uint)EntityID.MADELYN_DUMMY)\n            ) { SaveOnSuccess = true };\n            m_objectives.Add(returnBackToMotherShip);\n             */\n        }\n\n\n        private MyGuiScreenUseProgressBar m_useProgress;\n        private bool m_inUse;\n\n        public override void Load()\n        {\n            \n            MyScriptWrapper.OnBotReachedWaypoint += BotReachedWaypoint;\n            MyScriptWrapper.OnSpawnpointBotSpawned += OnSpawnpointBotSpawned;\n            MyScriptWrapper.EntityDeath += OnEntityDeath;\n\n            m_actionKeyString[0] = MyGuiManager.GetInput().GetGameControlTextEnum(MyGameControlEnums.USE);\n            \n            m_canBuildNotification = MyScriptWrapper.CreateNotification(\n                Localization.MyTextsWrapperEnum.PressToBuildTurret,\n                MyGuiManager.GetFontMinerWarsBlue());\n            m_canBuildNotification.SetTextFormatArguments(m_actionKeyString);\n\n            m_remainingTurretsNotification = MyScriptWrapper.CreateNotification(\n                Localization.MyTextsWrapperEnum.RemainingTurrets,\n                MyGuiManager.GetFontMinerWarsBlue());\n\n            //m_canSkipNotification = MyScriptWrapper.CreateNotification(\n            //    Localization.MyTextsWrapperEnum.PressToSkipTimer,\n            //    MyGuiManager.GetFontMinerWarsBlue());\n            //m_canSkipNotification.SetTextFormatArguments(m_actionKeyString);\n            //m_canSkipNotification.Disappear();\n\n            m_generatorUnderAttackNotification = MyScriptWrapper.CreateNotification(\n                Localization.MyTextsWrapperEnum.GeneratorUnderAttack,\n                MyGuiManager.GetFontMinerWarsRed(), 3000);\n            m_generatorUnderAttackNotification.Disappear();\n\n\n            m_useProgress = new MyGuiScreenUseProgressBar(MyTextsWrapperEnum.Turrets, MyTextsWrapperEnum.BuildingInProgress,0f, MySoundCuesEnum.SfxProgressBuild, MySoundCuesEnum.SfxCancelBuild, MyGameControlEnums.USE, 0, 3000, 0);\n            m_useProgress.OnCanceled += OnCanceledHandler;\n            m_useProgress.OnSuccess += OnSuccessHandler;\n\n            SetupMotherships();\n            SetUpTurrets();\n\n            base.Load();\n        }\n\n        private void OnSuccessHandler(object sender, EventArgs e)\n        {\n            TryBuildTurret();\n            m_inUse = false;\n        }\n\n        private void OnCanceledHandler(object sender, EventArgs e)\n        {\n            m_inUse = false;\n        }\n\n\n        private void StartUse()\n        {\n            m_inUse = true;\n            m_useProgress.Reset();\n            MyGuiManager.AddScreen(m_useProgress);\n        }\n\n\n\n        public override void Unload()\n        {\n            base.Unload();\n\n            m_russianMotherships[0] = null;\n            m_russianMotherships[1] = null;\n            m_russianMotherships[2] = null;\n\n            m_detectorTurretMapping.Clear();\n            m_detectorLightMapping.Clear();\n            m_dummiesForTurrets.Clear();\n\n            m_currentDetector = null;\n            m_wave1Detector = null;\n            m_wave6Detector = null;\n\n            MyScriptWrapper.OnBotReachedWaypoint -= BotReachedWaypoint;\n            MyScriptWrapper.OnSpawnpointBotSpawned -= OnSpawnpointBotSpawned;\n            MyScriptWrapper.EntityDeath -= OnEntityDeath;\n        }\n\n        private void BotReachedWaypoint(MyEntity bot, MyEntity waypoint)\n        {\n            MySmallShipBot smallShipBot = bot as MySmallShipBot;\n            Debug.Assert(smallShipBot != null);\n            if (smallShipBot == null)\n            {\n                return;\n            }\n\n            // Set pirate leader to patrol around base\n            if (MyScriptWrapper.GetEntityId(smallShipBot) == (uint)EntityID.PIRATE_LEADER &&\n                MyScriptWrapper.GetEntityId(waypoint) == (uint)EntityID.PIRATE_LEADER_BASE_WAYPOINT)\n            {\n                smallShipBot.PatrolMode = MyPatrolMode.CYCLE;\n                smallShipBot.SetWaypointPath(\"CapainPat\");\n            }\n\n            // Split pirates\n            if (MyScriptWrapper.GetEntityId(waypoint) == (uint)EntityID.PIRATES_SPLIT_WAYPOINT &&\n                smallShipBot.WaypointPath != null && smallShipBot.WaypointPath.Name == \"AttPir\")\n            {\n                List<MySmallShipBot> ships = new List<MySmallShipBot>();\n                ships.Add(smallShipBot);\n                ships.AddRange(smallShipBot.Followers);\n                Debug.Assert(ships.Count == 9);\n\n                if (ships.Count == 9)   // dont split\n                {\n                    foreach (var ship in ships)\n                    {\n                        MyScriptWrapper.StopFollow(ship);\n                    }\n\n                    MySmallShipBot leader = null;\n                    for (int i = 0; i < ships.Count; i++)\n                    {\n                        if (i % 3 == 0 && i <= 6)\n                        {\n                            leader = ships[i];\n                            leader.PatrolMode = MyPatrolMode.CYCLE;\n                            leader.SetWaypointPath(m_piratePatrolRoutes[i / 3]);     // PirSup1, PirSup2, PirSup3\n                            leader.Patrol();\n                        }\n                        else\n                        {\n                            ships[i].Follow(leader);\n                        }\n                    }\n                }\n            }\n        }\n\n        private void OnSpawnpointBotSpawned(MyEntity spawnpoint, MyEntity bot)\n        {\n            var pirateLeader = GetEntity(EntityID.PIRATE_LEADER) as MySmallShipBot;\n\n            var spawnpointId = MyScriptWrapper.GetEntityId(spawnpoint);\n            switch (spawnpointId)\n            {\n                case (uint)EntityID.PIRATE_SPAWNPOINT1:\n                case (uint)EntityID.PIRATE_SPAWNPOINT2:\n                case (uint)EntityID.PIRATE_SPAWNPOINT3:\n                    MyScriptWrapper.SetHealth(bot, PIRATE_SHIP_HEALTH_HANDICAP);\n                    MyScriptWrapper.StopFollow(bot);\n                    if (pirateLeader != null)\n                    {\n                        MyScriptWrapper.Follow(pirateLeader, bot);\n                    }\n                    break;\n            }\n\n            foreach (var defendSpawnpointId in m_defendSpawnpoints)\n            {\n                if (spawnpointId == defendSpawnpointId)\n                {\n                    MyScriptWrapper.SetSleepDistance(bot, 5000);\n                    break;\n                }\n            }\n        }\n\n        private void OnEntityDeath(MyEntity victim, MyEntity killer)\n        {\n            uint id = MyScriptWrapper.GetEntityId(victim);\n            if (id == (uint)EntityID.BASE_GENERATOR)\n            {\n                Fail(MyTextsWrapperEnum.PirateBaseGeneratorFailMessage);\n            }\n\n            foreach (var item in m_detectorTurretMapping)\n            {\n                if (id == item.Value)\n                {\n                    var turretLight = MyScriptWrapper.TryGetEntity(m_detectorLightMapping[item.Key]);\n                    if (turretLight != null)\n                    {\n                        MyScriptWrapper.SetLight(turretLight, false);\n                    }\n                    break;\n                }\n            }\n        }\n\n        void Travel_OnMissionLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.SetFactionRelation(MyMwcObjectBuilder_FactionEnum.Rainiers, MyMwcObjectBuilder_FactionEnum.Pirates, MyFactions.RELATION_NEUTRAL);\n\n            MyScriptWrapper.HideEntity(GetEntity(EntityID.PIRATE_MOTHERSHIP_CONTAINER));\n            MyScriptWrapper.HideEntity(GetEntity(EntityID.RUSSIAN_MOTHERSHIP_CONTAINER));\n            \n            MyScriptWrapper.PlayDialogue(MyDialogueEnum.PIRATE_BASE_0100);\n            MyScriptWrapper.OnDialogueFinished += Travel_OnDialogueFinished;\n            MyScriptWrapper.SpawnpointBotsKilled += Travel_SpawnpointBotsKilled;\n            m_wave1Detector = InitDetector((uint)EntityID.AMBUSH_1_DETECTOR, Travel_Wave1Activated);\n            m_wave6Detector = InitDetector((uint)EntityID.AMBUSH_6_DETECTOR, Travel_Wave6Activated);\n        }\n\n        void Travel_OnMissionUnload(MyMissionBase sender)\n        {\n            MyScriptWrapper.OnDialogueFinished -= Travel_OnDialogueFinished;\n            MyScriptWrapper.SpawnpointBotsKilled -= Travel_SpawnpointBotsKilled;\n            CleanUpDetector(m_wave1Detector, Travel_Wave6Activated);\n            CleanUpDetector(m_wave6Detector, Travel_Wave6Activated);\n        }\n\n        void Travel_OnDialogueFinished(MyDialogueEnum dialogue, bool interrupted)\n        {\n            if (dialogue == MyDialogueEnum.PIRATE_BASE_0200)\n            {\n                MyScriptWrapper.SetFactionRelation(MyMwcObjectBuilder_FactionEnum.Rainiers, MyMwcObjectBuilder_FactionEnum.Pirates, MyFactions.RELATION_WORST);\n            }\n        }\n\n        void Travel_SpawnpointBotsKilled(MySpawnPoint spawnPoint)\n        {\n            if (spawnPoint == MyScriptWrapper.TryGetEntity((uint)EntityID.AMBUSH_1_SPAWNPOINT_B))\n            {\n                MyScriptWrapper.PlayDialogue(MyDialogueEnum.PIRATE_BASE_0300);\n            }\n\n            if (spawnPoint == MyScriptWrapper.TryGetEntity((uint)EntityID.AMBUSH_6_SPAWNPOINT_B))\n            {\n                MyScriptWrapper.PlayDialogue(MyDialogueEnum.PIRATE_BASE_0500);\n            }\n        }\n\n        void Travel_Wave1Activated(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (entity == MySession.PlayerShip)\n            {\n                MyScriptWrapper.PlayDialogue(MyDialogueEnum.PIRATE_BASE_0200);\n                CleanUpDetector(m_wave1Detector, Travel_Wave1Activated);\n            }\n        }\n\n        void Travel_Wave6Activated(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (entity == MySession.PlayerShip)\n            {\n                MyScriptWrapper.PlayDialogue(MyDialogueEnum.PIRATE_BASE_0400);\n                CleanUpDetector(m_wave6Detector, Travel_Wave6Activated);\n            }\n        }\n\n        void SpeakWithPirates_OnMissionLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.SetFactionRelation(MyMwcObjectBuilder_FactionEnum.Pirates, MyMwcObjectBuilder_FactionEnum.Rainiers, MyFactions.RELATION_BEST);\n\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.PIRATE_SPAWNPOINT1);\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.PIRATE_SPAWNPOINT2);\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.PIRATE_SPAWNPOINT3);\n\n            var pirateLeader = GetEntity(EntityID.PIRATE_LEADER) as MySmallShipBot;\n            MyScriptWrapper.SetSleepDistance(pirateLeader, 3000);\n\n            HighlightTurrets();\n        }\n\n        void ListenToCaptain_OnMissionLoaded(MyMissionBase sender)\n        {\n            var pirateLeader = GetEntity(EntityID.PIRATE_LEADER) as MySmallShipBot;\n            if (pirateLeader != null)\n            {\n                pirateLeader.LookTarget = MySession.PlayerShip;\n            }\n\n            HighlightTurrets();\n        }\n\n        void ListenToCaptain_OnMissionUnload(MyMissionBase sender)\n        {\n            var pirateLeader = GetEntity(EntityID.PIRATE_LEADER) as MySmallShipBot;\n            if (pirateLeader != null)\n            {\n                pirateLeader.LookTarget = null;\n            }\n        }\n\n        void PrepareForDefense_OnMissionLoaded(MyMissionBase sender)\n        {\n            var pirateLeader = GetEntity(EntityID.PIRATE_LEADER) as MySmallShipBot;\n\n            if (pirateLeader != null)\n            {\n                var x = MyFactions.GetFactionsRelation(MinerWars.CommonLIB.AppCode.ObjectBuilders.MyMwcObjectBuilder_FactionEnum.Rainiers, CommonLIB.AppCode.ObjectBuilders.MyMwcObjectBuilder_FactionEnum.Pirates); \n                \n                pirateLeader.LookTarget = null;\n                pirateLeader.SetWaypointPath(\"CaptWay\");\n                pirateLeader.PatrolMode = MyPatrolMode.ONE_WAY;\n                pirateLeader.Patrol();\n\n                if (pirateLeader.Followers.Count > 0)\n\t            {\n                    var newLeader = pirateLeader.Followers[0];\n                    MyScriptWrapper.StopFollow(newLeader);\n\n                    var followers = pirateLeader.Followers.ToArray();\n                    for (int i = 0; i < followers.Length; i++)\n\t\t\t        {\n                        MyScriptWrapper.StopFollow(followers[i]);\n                        MyScriptWrapper.Follow(newLeader, followers[i]);\n\t\t\t        }\n\n                    newLeader.SetWaypointPath(\"AttPir\");\n                    newLeader.PatrolMode = MyPatrolMode.ONE_WAY;\n                    newLeader.Patrol();\n\t            }\n            }\n        }\n\n        void GetTurrets_OnMissionLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.Highlight((uint)EntityID.TURRET_PREFAB0, true, m_getTurrets);\n            MyScriptWrapper.Highlight((uint)EntityID.TURRET_PREFAB1, true, m_getTurrets);\n            MyScriptWrapper.Highlight((uint)EntityID.TURRET_PREFAB2, true, m_getTurrets);\n            MyScriptWrapper.Highlight((uint)EntityID.TURRET_PREFAB3, true, m_getTurrets);\n            MyScriptWrapper.Highlight((uint)EntityID.TURRET_PREFAB4, true, m_getTurrets);\n            MyScriptWrapper.Highlight((uint)EntityID.TURRET_PREFAB5, true, m_getTurrets);\n\n            HighlightTurrets();\n        }\n\n        void GetTurrets_OnMissionSuccess(MyMissionBase sender)\n        {\n            MyScriptWrapper.CloseEntity(GetEntity(EntityID.TURRET_PREFAB0));\n            MyScriptWrapper.CloseEntity(GetEntity(EntityID.TURRET_PREFAB1));\n            MyScriptWrapper.CloseEntity(GetEntity(EntityID.TURRET_PREFAB2));\n            MyScriptWrapper.CloseEntity(GetEntity(EntityID.TURRET_PREFAB3));\n            MyScriptWrapper.CloseEntity(GetEntity(EntityID.TURRET_PREFAB4));\n            MyScriptWrapper.CloseEntity(GetEntity(EntityID.TURRET_PREFAB5));\n            \n            MyScriptWrapper.AddInventoryItem(MyScriptWrapper.GetCentralInventory(), MyMwcObjectBuilderTypeEnum.PrefabLargeWeapon,\n                (int)TURRET_PREFAB_TYPE,\n                NUMBER_OF_TURRETS_TO_BUILD, true);    // TODO: will be changed to central inventory\n        }\n\n        void BuildDefenses_OnMissionLoaded(MyMissionBase sender)\n        {\n            HighlightTurrets();\n\n            m_turretsBuilt = 0; \n            \n            m_buildDefensesObjective.MissionEntityIDs.Add((uint)EntityID.TURRET_ID_1);\n            m_buildDefensesObjective.MissionEntityIDs.Add((uint)EntityID.TURRET_ID_2);\n            m_buildDefensesObjective.MissionEntityIDs.Add((uint)EntityID.TURRET_ID_3);\n            m_buildDefensesObjective.MissionEntityIDs.Add((uint)EntityID.TURRET_ID_4);\n            m_buildDefensesObjective.MissionEntityIDs.Add((uint)EntityID.TURRET_ID_5);\n            m_buildDefensesObjective.MissionEntityIDs.Add((uint)EntityID.TURRET_ID_6);\n            m_buildDefensesObjective.MissionEntityIDs.Add((uint)EntityID.TURRET_ID_7);\n            m_buildDefensesObjective.MissionEntityIDs.Add((uint)EntityID.TURRET_ID_8);\n            m_buildDefensesObjective.MissionEntityIDs.Add((uint)EntityID.TURRET_ID_9);\n            m_buildDefensesObjective.MissionEntityIDs.Add((uint)EntityID.TURRET_ID_10);\n            m_buildDefensesObjective.MissionEntityIDs.Add((uint)EntityID.TURRET_ID_11);\n\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.StressOrTimeRush);\n            MyScriptWrapper.UnhideEntity(GetEntity(EntityID.RUSSIAN_MOTHERSHIP_CONTAINER));\n\n            foreach (var dummyId in m_dummiesForTurrets)\n            {\n                var detector = MyScriptWrapper.GetDetector(dummyId);\n                Debug.Assert(detector != null);\n                if (detector != null)\n                {\n                    // register for player ship enter\n                    detector.OnEntityEnter += TurretDummyEnter;\n                    detector.OnEntityLeave += TurretDummyLeave;\n                    detector.On();\n                }\n            }\n            \n            UpdateRemainingTurretsCount();\n            MyScriptWrapper.AddNotification(m_remainingTurretsNotification);\n\n            MyScriptWrapper.OnUseKeyPress += BuildDefenses_OnUseKeyPress;\n        }\n\n        void BuildDefenses_OnMissionUpdate(MyMissionBase sender)\n        {\n            UpdateRemainingTurretsCount();\n        }\n\n        void BuildDefenses_OnMissionUnloaded(MyMissionBase sender)\n        {\n            m_buildDefensesObjective.MissionEntityIDs.Clear();\n\n            foreach (var dummyTurretPair in m_dummiesForTurrets)\n            {\n                var detector = MyScriptWrapper.GetDetector(dummyTurretPair);\n                Debug.Assert(detector != null);\n                if (detector != null)\n                {\n                    // register for player ship enter\n                    detector.OnEntityEnter -= TurretDummyEnter;\n                    if (detector.IsOn())\n                    {\n                        detector.Off();\n                    }\n                }\n            }\n\n            MyScriptWrapper.OnUseKeyPress -= BuildDefenses_OnUseKeyPress;\n\n            MyScriptWrapper.GetCentralInventory().RemoveInventoryItems(MyMwcObjectBuilderTypeEnum.PrefabLargeWeapon,\n                (int)TURRET_PREFAB_TYPE, true);\n        }\n\n        private void BuildDefenses_OnMissionSuccess(MyMissionBase sender)\n        {\n            foreach (var detectorTurretPair in m_detectorTurretMapping)\n            {\n                var turret = MyScriptWrapper.GetEntity(detectorTurretPair.Value) as MyPrefabLargeWeapon;\n                if (turret != null && !turret.Visible)\n                {\n                    turret.MarkForClose();\n                }\n            }\n\n            foreach (var detectorLight in m_detectorLightMapping)\n            {\n                var detector = (MyEntityDetector)MyScriptWrapper.GetEntity(detectorLight.Key);\n                var light = (MyPrefabLight)MyScriptWrapper.GetEntity(detectorLight.Value);\n                var turret = MyScriptWrapper.GetEntity(m_detectorTurretMapping[detectorLight.Key]) as MyPrefabLargeWeapon;\n\n                if (detector.IsOn())\n                {\n                    MyScriptWrapper.SetLight(light, false);\n                    MyScriptWrapper.CloseEntity(turret);\n                    //light.GetLight().LightOn = false;\n                    //light.SetAllColors(new Color(m_turretHighlightColor.X,m_turretHighlightColor.Y,m_turretHighlightColor.Z));\n                }\n            }\n            \n            //m_canSkipNotification.Disappear();\n            m_remainingTurretsNotification.Disappear();            \n        }\n\n        void BuildDefenses_OnUseKeyPress()\n        {\n            if (/*m_canSkipNotification.IsDisappeared() && */!m_inUse)\n            {\n                if (m_currentDetector != null)\n                {\n                    StartUse();\n                }\n            }\n            //else\n            //{\n            //    m_buildDefensesObjective.SkipTimer();\n            //    m_canSkipNotification.Disappear();\n            //}\n        }\n\n        private void TurretDummyEnter(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (entity == MySession.PlayerShip)\n            {\n                m_currentDetector = sender;\n\n                m_canBuildNotification.Appear();\n                MyScriptWrapper.AddNotification(m_canBuildNotification);\n            }\n        }\n\n        private void TurretDummyLeave(MyEntityDetector sender, MyEntity entity)\n        {\n            if (entity == MySession.PlayerShip)\n            {\n                m_currentDetector = null;\n                m_canBuildNotification.Disappear();\n            }\n        }\n\n        private void TryBuildTurret()\n        {\n            if (m_currentDetector != null)\n            {\n                var inventory = MyScriptWrapper.GetCentralInventory();\n                bool canBuild = inventory.RemoveInventoryItemAmount(\n                    MyMwcObjectBuilderTypeEnum.PrefabLargeWeapon,\n                    (int)TURRET_PREFAB_TYPE,\n                    1);\n\n                if (canBuild)\n                {\n                    m_buildDefensesObjective.MissionEntityIDs.Remove(\n                        m_detectorTurretMapping[MyScriptWrapper.GetEntityId(m_currentDetector)]);\n                    ++m_turretsBuilt;\n\n                    BuildTurret();\n                    //m_currentDetector.Parent.Close();\n                    m_currentDetector.Off();\n                    m_currentDetector = null;\n\n                    int remainingTurretCount = inventory.GetInventoryItemsCount(MyMwcObjectBuilderTypeEnum.PrefabLargeWeapon, (int)TURRET_PREFAB_TYPE);\n                    if (remainingTurretCount <= 0)\n                    {\n                        m_buildDefensesObjective.MissionEntityIDs.Clear();\n                    }\n                }\n            }\n        }\n\n        private void BuildTurret()\n        {\n            var turret =\n                MyScriptWrapper.GetEntity(m_detectorTurretMapping[m_currentDetector.EntityId.Value.NumericValue])\n                as MyPrefabLargeWeapon;\n\n            Debug.Assert(turret != null);\n              if (turret != null)\n            {\n                MyScriptWrapper.Highlight(m_detectorTurretMapping[m_currentDetector.EntityId.Value.NumericValue], false,this);\n                MyScriptWrapper.EnablePhysics(m_detectorTurretMapping[m_currentDetector.EntityId.Value.NumericValue], true);\n                turret.Enabled = true;\n                turret.IsDestructible = true;\n            }\n\n            var light =\n                MyScriptWrapper.GetEntity(m_detectorLightMapping[m_currentDetector.EntityId.Value.NumericValue])\n                as MyPrefabLight;\n\n            if (light != null)\n            {\n                light.SetAllColors(new Color(0f, 1f, 0f));\n                light.Effect = MyLightEffectTypeEnum.DISTANT_GLARE;\n            }\n\n            UpdateRemainingTurretsCount();\n            m_canBuildNotification.Disappear();\n        }\n\n        private void UpdateRemainingTurretsCount()\n        {\n            var inventory = MyScriptWrapper.GetCentralInventory();\n            var remainingTurretsCount = Convert.ToInt32(inventory.GetTotalAmountOfInventoryItems(MyMwcObjectBuilderTypeEnum.PrefabLargeWeapon, (int)TURRET_PREFAB_TYPE));\n            if (remainingTurretsCount <= 0)\n            {\n                m_remainingTurretsNotification.Disappear();\n                if (remainingTurretsCount != int.MinValue)\n                {\n                    remainingTurretsCount = int.MinValue;  // <- debug&continue\n                    m_buildDefensesObjective.MissionTimer.RegisterTimerAction(TimeSpan.FromSeconds(5), DefensesBuilt, false);\n                }\n                \n                //m_canSkipNotification.Appear();\n                //MyScriptWrapper.AddNotification(m_canSkipNotification);\n            }\n            else\n            {\n                m_remainingTurretsNotification.SetTextFormatArguments(new object[] { m_turretsBuilt, remainingTurretsCount });\n            }\n        }\n\n        private void DefensesBuilt()\n        {\n            m_buildDefensesObjective.SkipTimer();\n        }\n\n        private void Defend_OnMissionLoaded(MyMissionBase sender)\n        {\n            sender.MissionTimer.RegisterTimerAction(new TimeSpan(0, 3, 00), FirstAsteroidExplosion);\n            sender.MissionTimer.RegisterTimerAction(new TimeSpan(0, 6, 00), SecondAsteroidExplosion);\n            sender.MissionTimer.RegisterTimerAction(new TimeSpan(0, 9, 00), ThirdAsteroidExplosion);\n\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.Special, 100, \"KA06\");\n            m_turretsBuilt = 0;\n\n            var generator = MyScriptWrapper.TryGetEntity((uint)EntityID.BASE_GENERATOR);\n            if (generator != null)\n            {\n                MyScriptWrapper.MarkEntity(generator, MyTexts.BaseGenerator, MyHudIndicatorFlagsEnum.SHOW_TEXT | MyHudIndicatorFlagsEnum.SHOW_HEALTH_BARS | MyHudIndicatorFlagsEnum.SHOW_MISSION_MARKER | MyHudIndicatorFlagsEnum.SHOW_BORDER_INDICATORS);\n            }\n\n            foreach (var spawnpointId in m_defendSpawnpoints)\n            {\n                MyScriptWrapper.ActivateSpawnPoint(spawnpointId);\n            }\n\n            m_baseAtackersDetector = InitDetector((uint)EntityID.BASE_ATACKERS_DETECTOR, OnAttackerInBase);\n\n            MyScriptWrapper.OnEntityAtacked += Defend_EntityAttacked;\n        }\n\n        private void Defend_OnMissionUnloaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.StopTransition(100);\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.CalmAtmosphere);\n            CleanUpDetector(m_baseAtackersDetector, OnAttackerInBase);\n            var generator = MyScriptWrapper.TryGetEntity((uint)EntityID.BASE_GENERATOR);\n            if (generator != null)\n            {\n                generator.UpdateHudMarker(true);\n            }\n\n            m_baseAtackersDetector = null;\n            MyScriptWrapper.OnEntityAtacked -= Defend_EntityAttacked;\n        }\n\n        private void Defend_OnMissionUpdate(MyMissionBase sender)\n        {\n            for (int i = 0; i < 3; i++)\n            {\n                Vector3 newPosition = Vector3.Lerp(\n                m_russianMothershipTrajectories[i].From,\n                m_russianMothershipTrajectories[i].To,\n                m_defendObjective.Progress);\n\n                MyScriptWrapper.Move(m_russianMotherships[i], newPosition);\n            }\n        }\n\n        private void Defend_OnMissionSuccess(MyMissionBase sender)\n        {\n            foreach (var spawnpointId in m_defendSpawnpoints)\n            {\n                MyScriptWrapper.DeactivateSpawnPoint(spawnpointId);\n            }\n        }\n\n        void Defend_EntityAttacked(MyEntity attacker, MyEntity target)\n        {\n            var generator = MyScriptWrapper.TryGetEntity((uint)EntityID.BASE_GENERATOR);\n            if (generator != null && target == generator)\n            {\n                m_generatorUnderAttackNotification.ResetAliveTime();\n                m_generatorUnderAttackNotification.Appear();\n                MyScriptWrapper.AddNotification(m_generatorUnderAttackNotification);\n            }\n        }\n\n        void OnAttackerInBase(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            MySmallShipBot bot = entity as MySmallShipBot;\n            if (bot != null && MyFactions.GetFactionsRelation(MySession.PlayerShip.Faction, bot.Faction) == MyFactionRelationEnum.Enemy)\n            {\n                MyScriptWrapper.SetBotTarget(entity, GetEntity(EntityID.BASE_GENERATOR));\n            }\n        }\n\n        private void FirstAsteroidExplosion()\n        {\n            var asteroid = GetEntity(EntityID.ASTEROID1) as MyStaticAsteroid;\n            Debug.Assert(asteroid != null);\n            if (asteroid != null)\n            {\n                MyScriptWrapper.MakeNuclearExplosion(asteroid);\n                MyScriptWrapper.CloseEntity(asteroid);\n                MyScriptWrapper.PlayDialogue(MyDialogueEnum.PIRATE_BASE_1000);\n            }\n        }\n\n        private void SecondAsteroidExplosion()\n        {\n            var asteroid = GetEntity(EntityID.ASTEROID2) as MyStaticAsteroid;\n            Debug.Assert(asteroid != null);\n            if (asteroid != null)\n            {\n                MyScriptWrapper.MakeNuclearExplosion(asteroid);\n                MyScriptWrapper.CloseEntity(asteroid);\n            }\n        }\n\n        private void ThirdAsteroidExplosion()\n        {\n            var asteroid = GetEntity(EntityID.ASTEROID3) as MyStaticAsteroid;\n            Debug.Assert(asteroid != null);\n            if (asteroid != null)\n            {\n                MyScriptWrapper.MakeNuclearExplosion(asteroid);\n                MyScriptWrapper.CloseEntity(asteroid);\n            }\n        }\n\n        private void AllyArrived_OnMissionLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.UnhideEntity(GetEntity(EntityID.PIRATE_MOTHERSHIP_CONTAINER), true); \n            \n            m_russianMothershipTrajectories2[0] = new MyLine(\n                m_russianMotherships[0].GetPosition(),\n                MyScriptWrapper.GetEntity((uint)EntityID.RUSSIAN_MOTHERSHIP_FLEE_TARGET0).GetPosition()\n            );\n\n            m_russianMothershipTrajectories2[1] = new MyLine(\n                m_russianMotherships[1].GetPosition(),\n                MyScriptWrapper.GetEntity((uint)EntityID.RUSSIAN_MOTHERSHIP_FLEE_TARGET1).GetPosition()\n            );\n\n            m_russianMothershipTrajectories2[2] = new MyLine(\n                m_russianMotherships[2].GetPosition(),\n                MyScriptWrapper.GetEntity((uint)EntityID.RUSSIAN_MOTHERSHIP_FLEE_TARGET2).GetPosition()\n            );\n\n            m_pirateNothershipTrajectory = new MyLine(\n                    GetEntity(EntityID.PIRATE_MOTHERSHIP_CONTAINER).GetPosition(),\n                    GetEntity(EntityID.PIRATE_MOTHERSHIP_DESTINATION).GetPosition()\n                );\n\n            MyScriptWrapper.OnDialogueFinished += AllyArrived_OnDialogueFinished;\n        }\n\n        private void AllyArrived_OnMissionUnload(MyMissionBase sender)\n        {\n            MyScriptWrapper.OnDialogueFinished -= AllyArrived_OnDialogueFinished;\n        }\n\n        private void AllyArrived_OnMissionUpdate(MyMissionBase sender)\n        {\n            float missionTime = (float)sender.MissionTimer.GetElapsedTime().TotalSeconds;\n\n            float flyProgress = MathHelper.Clamp(missionTime / 120, 0, 1);\n\n            for (int i = 0; i < 3; i++)\n            {\n                MyScriptWrapper.Move(\n                    m_russianMotherships[i],\n                    Vector3.Lerp(m_russianMothershipTrajectories2[i].From, m_russianMothershipTrajectories2[i].To, flyProgress));\n            }\n\n            float pirateflyProgress = 0;\n            if (missionTime <= 115)\n            {\n                pirateflyProgress = flyProgress;\n            }\n            else\n            {\n                float slowdownTime = 5;\n                float distance = (m_pirateNothershipTrajectory.From - m_pirateNothershipTrajectory.To).Length();\n                float slowDownDistance = distance * slowdownTime / 120.0f;\n                float slowDownSpeed = (distance - slowDownDistance) / (120.0f - slowdownTime);\n                float deceleration = 2.0f * slowDownSpeed / (slowdownTime * slowdownTime);\n                float decelerationTime = missionTime - (120.0f - slowdownTime);\n                if (missionTime > 120)\n                {\n                    pirateflyProgress = 1;\n                }\n                else\n                {\n                    pirateflyProgress = distance * (120.0f - slowdownTime) / 120 + (slowDownSpeed * decelerationTime - 0.5f * deceleration * decelerationTime * decelerationTime);\n                    pirateflyProgress = MathHelper.Clamp(pirateflyProgress / distance, 0, 1);\n                }\n            }\n\n            MyScriptWrapper.Move(\n                GetEntity(EntityID.PIRATE_MOTHERSHIP_CONTAINER),\n                Vector3.Lerp(m_pirateNothershipTrajectory.From, m_pirateNothershipTrajectory.To, pirateflyProgress));\n        }\n\n        private void AllyArrived_OnMissionSuccess(MyMissionBase sender)\n        {\n            MyScriptWrapper.HideEntity(GetEntity(EntityID.RUSSIAN_MOTHERSHIP_CONTAINER));\n            MyScriptWrapper.Move(MyScriptWrapper.GetEntity(\"Madelyn\"), GetEntity(EntityID.MADELYN_DUMMY).GetPosition());\n        }\n\n        void AllyArrived_OnDialogueFinished(MyDialogueEnum dialogue, bool interrupted)\n        {\n            if (dialogue == MyDialogueEnum.PIRATE_BASE_1100)\n            {\n                m_allyArrivedObjective.MissionTimer.RegisterTimerAction(TimeSpan.FromSeconds(5), AllyArrived_ContinueDialogue, false);\n            }\n\n            if (dialogue == MyDialogueEnum.PIRATE_BASE_1200)\n            {\n                m_allyArrivedObjective.MissionTimer.RegisterTimerAction(TimeSpan.FromSeconds(1), AllyArrived_ContinueDialogue2, false);\n            }\n\n            if (dialogue == MyDialogueEnum.PIRATE_BASE_1400)\n            {\n                m_allyArrivedObjective.Success();\n            }\n        }\n\n        void AllyArrived_ContinueDialogue()\n        {\n            MyScriptWrapper.PlayDialogue(MyDialogueEnum.PIRATE_BASE_1200);\n        }\n\n        void AllyArrived_ContinueDialogue2()\n        {\n            MyScriptWrapper.PlayDialogue(MyDialogueEnum.PIRATE_BASE_1400);\n        }\n\n        public override void Update()\n        {\n            base.Update();\n        }\n\n        private void SetupMotherships()\n        {\n            m_russianMotherships[0] = MyScriptWrapper.GetEntity((uint)EntityID.RUSSIAN_MOTHERSHIP0) as MyPrefabLargeShip;\n            m_russianMotherships[1] = MyScriptWrapper.GetEntity((uint)EntityID.RUSSIAN_MOTHERSHIP1) as MyPrefabLargeShip;\n            m_russianMotherships[2] = MyScriptWrapper.GetEntity((uint)EntityID.RUSSIAN_MOTHERSHIP2) as MyPrefabLargeShip;\n\n            m_russianMothershipTrajectories[0] = new MyLine(\n                m_russianMotherships[0].GetPosition(),\n                MyScriptWrapper.GetEntity((uint)EntityID.RUSSIAN_MOTHERSHIP_TARGET0).GetPosition()\n            );\n\n            m_russianMothershipTrajectories[1] = new MyLine(\n                m_russianMotherships[1].GetPosition(),\n                MyScriptWrapper.GetEntity((uint)EntityID.RUSSIAN_MOTHERSHIP_TARGET1).GetPosition()\n            );\n\n            m_russianMothershipTrajectories[2] = new MyLine(\n                m_russianMotherships[2].GetPosition(),\n                MyScriptWrapper.GetEntity((uint)EntityID.RUSSIAN_MOTHERSHIP_TARGET2).GetPosition()\n            );\n        }\n\n        private void SetUpTurrets()\n        {\n            m_detectorTurretMapping.Clear();\n            m_detectorTurretMapping.Add(MyScriptWrapper.GetDetector((uint)EntityID.DETECTOR_ID_1).EntityId.Value.NumericValue, (uint)EntityID.TURRET_ID_1);\n            m_detectorTurretMapping.Add(MyScriptWrapper.GetDetector((uint)EntityID.DETECTOR_ID_2).EntityId.Value.NumericValue, (uint)EntityID.TURRET_ID_2);\n            m_detectorTurretMapping.Add(MyScriptWrapper.GetDetector((uint)EntityID.DETECTOR_ID_3).EntityId.Value.NumericValue, (uint)EntityID.TURRET_ID_3);\n            m_detectorTurretMapping.Add(MyScriptWrapper.GetDetector((uint)EntityID.DETECTOR_ID_4).EntityId.Value.NumericValue, (uint)EntityID.TURRET_ID_4);\n            m_detectorTurretMapping.Add(MyScriptWrapper.GetDetector((uint)EntityID.DETECTOR_ID_5).EntityId.Value.NumericValue, (uint)EntityID.TURRET_ID_5);\n            m_detectorTurretMapping.Add(MyScriptWrapper.GetDetector((uint)EntityID.DETECTOR_ID_6).EntityId.Value.NumericValue, (uint)EntityID.TURRET_ID_6);\n            m_detectorTurretMapping.Add(MyScriptWrapper.GetDetector((uint)EntityID.DETECTOR_ID_7).EntityId.Value.NumericValue, (uint)EntityID.TURRET_ID_7);\n            m_detectorTurretMapping.Add(MyScriptWrapper.GetDetector((uint)EntityID.DETECTOR_ID_8).EntityId.Value.NumericValue, (uint)EntityID.TURRET_ID_8);\n            m_detectorTurretMapping.Add(MyScriptWrapper.GetDetector((uint)EntityID.DETECTOR_ID_9).EntityId.Value.NumericValue, (uint)EntityID.TURRET_ID_9);\n            m_detectorTurretMapping.Add(MyScriptWrapper.GetDetector((uint)EntityID.DETECTOR_ID_10).EntityId.Value.NumericValue, (uint)EntityID.TURRET_ID_10);\n            m_detectorTurretMapping.Add(MyScriptWrapper.GetDetector((uint)EntityID.DETECTOR_ID_11).EntityId.Value.NumericValue, (uint)EntityID.TURRET_ID_11);\n\n            m_detectorLightMapping.Clear();\n            m_detectorLightMapping.Add(MyScriptWrapper.GetDetector((uint)EntityID.DETECTOR_ID_1).EntityId.Value.NumericValue, (uint)EntityID.LIGHT_ID_1);\n            m_detectorLightMapping.Add(MyScriptWrapper.GetDetector((uint)EntityID.DETECTOR_ID_2).EntityId.Value.NumericValue, (uint)EntityID.LIGHT_ID_2);\n            m_detectorLightMapping.Add(MyScriptWrapper.GetDetector((uint)EntityID.DETECTOR_ID_3).EntityId.Value.NumericValue, (uint)EntityID.LIGHT_ID_3);\n            m_detectorLightMapping.Add(MyScriptWrapper.GetDetector((uint)EntityID.DETECTOR_ID_4).EntityId.Value.NumericValue, (uint)EntityID.LIGHT_ID_4);\n            m_detectorLightMapping.Add(MyScriptWrapper.GetDetector((uint)EntityID.DETECTOR_ID_5).EntityId.Value.NumericValue, (uint)EntityID.LIGHT_ID_5);\n            m_detectorLightMapping.Add(MyScriptWrapper.GetDetector((uint)EntityID.DETECTOR_ID_6).EntityId.Value.NumericValue, (uint)EntityID.LIGHT_ID_6);\n            m_detectorLightMapping.Add(MyScriptWrapper.GetDetector((uint)EntityID.DETECTOR_ID_7).EntityId.Value.NumericValue, (uint)EntityID.LIGHT_ID_7);\n            m_detectorLightMapping.Add(MyScriptWrapper.GetDetector((uint)EntityID.DETECTOR_ID_8).EntityId.Value.NumericValue, (uint)EntityID.LIGHT_ID_8);\n            m_detectorLightMapping.Add(MyScriptWrapper.GetDetector((uint)EntityID.DETECTOR_ID_9).EntityId.Value.NumericValue, (uint)EntityID.LIGHT_ID_9);\n            m_detectorLightMapping.Add(MyScriptWrapper.GetDetector((uint)EntityID.DETECTOR_ID_10).EntityId.Value.NumericValue, (uint)EntityID.LIGHT_ID_10);\n            m_detectorLightMapping.Add(MyScriptWrapper.GetDetector((uint)EntityID.DETECTOR_ID_11).EntityId.Value.NumericValue, (uint)EntityID.LIGHT_ID_11);\n\n            m_dummiesForTurrets.Clear();\n            m_dummiesForTurrets.Add((uint)EntityID.DETECTOR_ID_1);\n            m_dummiesForTurrets.Add((uint)EntityID.DETECTOR_ID_2);\n            m_dummiesForTurrets.Add((uint)EntityID.DETECTOR_ID_3);\n            m_dummiesForTurrets.Add((uint)EntityID.DETECTOR_ID_4);\n            m_dummiesForTurrets.Add((uint)EntityID.DETECTOR_ID_5);\n            m_dummiesForTurrets.Add((uint)EntityID.DETECTOR_ID_6);\n            m_dummiesForTurrets.Add((uint)EntityID.DETECTOR_ID_7);\n            m_dummiesForTurrets.Add((uint)EntityID.DETECTOR_ID_8);\n            m_dummiesForTurrets.Add((uint)EntityID.DETECTOR_ID_9);\n            m_dummiesForTurrets.Add((uint)EntityID.DETECTOR_ID_10);\n            m_dummiesForTurrets.Add((uint)EntityID.DETECTOR_ID_11);\n        }\n\n        private void HighlightTurrets()\n        {\n            foreach (var dummyTurretPair in m_detectorTurretMapping)\n            {\n                var turret = MyScriptWrapper.GetEntity(dummyTurretPair.Value) as MyPrefabLargeWeapon;\n                MyScriptWrapper.Highlight(dummyTurretPair.Value, true, this);\n                MyScriptWrapper.EnablePhysics(dummyTurretPair.Value, false);\n\n                Debug.Assert(turret != null);\n                if (turret != null)\n                {\n                    turret.Enabled = false;\n                }\n            }\n        }\n\n        private MyEntityDetector InitDetector(uint detectorID, OnEntityEnter handler)\n        {\n            MyEntityDetector detector = MyScriptWrapper.GetDetector(MyScriptWrapper.GetEntity(detectorID));\n            detector.OnEntityEnter += handler;\n            detector.On();\n            return detector;\n        }\n\n        private void CleanUpDetector(MyEntityDetector detector, OnEntityEnter handler)\n        {\n            if (detector != null)\n            {\n                detector.OnEntityEnter -= handler;\n                detector.Off();\n            }\n        }\n\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/SinglePlayer/MyPlaygroundMission.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Inventory;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.AppCode.Game.HUD;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Missions;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.AppCode.Game.Explosions;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Entities.VoxelHandShapes;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Voxels;\nusing MinerWars.CommonLIB.AppCode.Networking;\n\nnamespace MinerWars.AppCode.Game.Missions.SinglePlayer\n{\n    class MyPlaygroundMission : MyMission\n    {\n        private MyObjective m_cubeSubmission;\n        \n        private MyTimerActionDelegate m_subShakeAction;\n        private MyTimerActionDelegate m_shakeAction;\n\n        private MyEntityDetector doorDetector1;\n        private MyEntityDetector doorDetector2;\n\n        private MySmallShipBot m_Speedy;\n\n        private List<uint> Puzzle = new List<uint> { 448,447,449,442,443,441,444,445,446,430,424,426,429,425,427,431,423,428,418,417,419,412,411,413,409,407,404 };\n        private const uint RadarEntity = 1812;\n        private Vector3 m_turretHighlightColor = new Vector3(9 / 255f, 96 / 255f, 177 / 255f);\n\n        public MyPlaygroundMission()\n        {\n            ID = MyMissionID.PLAYGROUND; /* ID must be added to MyMissions.cs */\n            DebugName = new StringBuilder(\"Playground\");\n            Name = MyTextsWrapperEnum.PLAYGROUND;\n            Description = MyTextsWrapperEnum.EmptyDescription;\n            Flags = MyMissionFlags.HiddenInSolarMap;\n\n            MyMwcVector3Int baseSector = new MyMwcVector3Int(-85381496, 0, -85381496);\n\n            Location = new MyMissionLocation(baseSector, 315);\n\n            RequiredMissions = new MyMissionID[] { };\n\n            m_objectives = new List<MyObjective>();\n\n\n            var placeRadarMission = new MyUseObjective(\n                new StringBuilder(\"Find a place for the alien radar\"),\n                MyMissionID.PLAYGROUND_SUBMISSION_01,\n                new StringBuilder(\"\"),\n                null,\n                this,\n                new MyMissionID[] { },\n                new MyMissionLocation(baseSector, (uint)1889),\n                MyTextsWrapperEnum.PressToTakeTransmitter,\n                MyTextsWrapperEnum.Transmitter,\n                MyTextsWrapperEnum.TransferInProgress,\n                10\n            ) { SaveOnSuccess = false };\n                    placeRadarMission.OnMissionSuccess += PlaceRadarSucces;\n\n            m_objectives.Add(placeRadarMission);\n\n\n            /*\n            var playgroundSubmission = new MySubmission(\n                new StringBuilder(\"Play around a little\"),\n                MyMissionID.PLAYGROUND_SUBMISSION_02,\n                new StringBuilder(\"\"),\n                null,\n                this,\n                new MyMissionID[] { },\n                new MyMissionLocation(baseSector, 831)\n            );\n            playgroundSubmission.OnMissionSuccess += PlaygroundSubmissionSubmissionSuccess;\n            m_submissions.Add(playgroundSubmission);\n            */\n            /*\n            m_cubeSubmission = new MySubmission(\n                new StringBuilder(\"3D cubes\"),\n                MyMissionID.PLAYGROUND_SUBMISSION_02,\n                new StringBuilder(\"Reach the exit. Enter every cube exactly once.\"),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.PLAYGROUND_SUBMISSION_01 },\n                null\n            );\n            m_submissions.Add(m_cubeSubmission);\n            */\n            m_subShakeAction = new MyTimerActionDelegate(SubShake);\n            m_shakeAction = new MyTimerActionDelegate(FarExplosion);\n        }\n\n        public override void Load()\n        {\n            base.Load();\n\n            MissionTimer.RegisterTimerAction(MyMwcUtils.GetRandomInt(3000, 5000), m_shakeAction, true);\n\n            doorDetector1 = MyScriptWrapper.GetDetector(MyScriptWrapper.GetEntity(367));\n            doorDetector1.OnEntityEnter += DoorDetector1Open;\n            doorDetector1.On();\n\n            doorDetector2 = MyScriptWrapper.GetDetector(MyScriptWrapper.GetEntity(366));\n            doorDetector2.OnEntityEnter += DoorDetector2Closed;\n            doorDetector2.On();\n                        \n            for (int i = 0; i < mines.GetLength(0); i++)\n            {\n                MyEntityDetector mineDetector = MyScriptWrapper.GetDetector(mines[i, 1]);\n                mineDetector.OnEntityEnter += new OnEntityEnter(mineDetector_OnEntityEnter);\n                mineDetector.OnEntityPositionChange += new OnEntityPositionChange(mineDetector_OnEntityPositionChange);\n                mineDetector.On();\n            }\n\n            MyScriptWrapper.OnBotReachedWaypoint += OnBotReachedWaypoint;\n            MyScriptWrapper.OnSpawnpointBotSpawned += OnSpawnpointBotSpawned;\n\n            //aliendetector\n            MyScriptWrapper.Highlight(RadarEntity, true,this);\n            MyScriptWrapper.EnablePhysics(RadarEntity, false);\n\n            //aliendetector\n            MyScriptWrapper.Highlight(1962, true,this);\n            MyScriptWrapper.EnablePhysics(1962, false);\n\n        }\n\n        public override void Unload()\n        {\n            base.Unload();\n            MyScriptWrapper.OnSpawnpointBotSpawned -= OnSpawnpointBotSpawned;\n            MyScriptWrapper.OnBotReachedWaypoint -= OnBotReachedWaypoint;\n        }\n\n        uint[,] mines = new uint[,]\n        {\n            { 626,631 },\n            { 628,632 },\n            { 629,634 },\n            { 627,633 },\n            { 637,636 },\n            { 694,695 },\n        };\n\n        const float mineDamage = 25;\n        const float mineExplosionRadius = 25;\n        const float mineStartRadius = 10;\n        MySoundCue? beepCue = null;\n        void mineDetector_OnEntityPositionChange(MyEntityDetector sender, MyEntity entity, Vector3 newPosition)\n        {\n            if (sender.Closed)\n                return;\n\n            if (entity == MySession.PlayerShip)\n            {\n                if (beepCue == null || !beepCue.Value.IsPlaying)\n                {\n                    beepCue = MyAudio.AddCue2D(MySoundCuesEnum.SfxHudAlarmDamageA);\n                }\n\n                float distance = (entity.GetPosition() - sender.GetPosition()).Length();\n                \n                if (distance < mineStartRadius)\n                {\n                    uint mineId = 0;\n                    for (int i = 0; i < mines.GetLength(0); i++)\n                    {\n                        if (mines[i, 1] == sender.Parent.EntityId.Value.NumericValue)\n                        {\n                            mineId = mines[i, 0]; \n                        }\n                    }\n                    ExplodeMine(mineId);\n                    sender.Off();\n                    sender.Parent.MarkForClose();\n                }\n\n            }\n        }\n\n        public void ExplodeMine(uint entityId)\n        {\n            MyEntity mine = MyScriptWrapper.GetEntity(entityId);\n            MyExplosion newExplosion = MyExplosions.AddExplosion();\n            if (newExplosion != null)\n            {\n                newExplosion.Start(0, mineDamage, 0, MyExplosionTypeEnum.BOMB_EXPLOSION, new BoundingSphere(mine.GetPosition(), mineExplosionRadius), MyExplosionsConstants.EXPLOSION_LIFESPAN, 1, ownerEntity: mine);\n            }\n            mine.MarkForClose();\n        }\n\n        void mineDetector_OnEntityEnter(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n\n        }\n\n        private void PlaygroundSubmissionSubmissionSuccess(MyMissionBase sender)\n        {\n            var puzzleReset = MyScriptWrapper.GetDetector(MyScriptWrapper.GetEntity(572));\n            puzzleReset.OnEntityEnter += new OnEntityEnter(puzzleReset_OnEntityEnter);\n            puzzleReset.On();\n            var puzzleFinish = MyScriptWrapper.GetDetector(MyScriptWrapper.GetEntity(753));\n            puzzleFinish.OnEntityEnter += new OnEntityEnter(puzzleFinish_OnEntityEnter);\n            puzzleFinish.On();\n            foreach (uint item in Puzzle)\n            {\n                var puzzleDetector = MyScriptWrapper.GetDetector(MyScriptWrapper.GetEntity(item));\n                puzzleDetector.OnEntityEnter += new OnEntityEnter(puzzleDetector_OnEntityEnter);\n                puzzleDetector.On();\n            }\n        }\n\n        void puzzleReset_OnEntityEnter(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            Reset();\n        }\n\n        void puzzleFinish_OnEntityEnter(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (CheckWin())\n            {\n                m_cubeSubmission.Success();\n                foreach (uint item in Puzzle)\n                {\n                    var puzzleDetector = MyScriptWrapper.GetDetector(MyScriptWrapper.GetEntity(item));\n                    puzzleDetector.Off();\n                }\n                var puzzleReset = MyScriptWrapper.GetDetector(MyScriptWrapper.GetEntity(572));\n                puzzleReset.Off();\n                var puzzleFinish = MyScriptWrapper.GetDetector(MyScriptWrapper.GetEntity(753));\n                puzzleFinish.Off();\n            }\n            else\n            {\n                Reset();\n            }\n        }\n\n        void puzzleDetector_OnEntityEnter(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            MyDummyPoint dummyPoint = (MyDummyPoint)sender.Parent;\n            if (dummyPoint.Color == Color.Green.ToVector4())\n            {\n                Reset();\n            }\n            else\n            {\n                dummyPoint.Color = Color.Green.ToVector4();\n            }\n        }\n\n        private bool CheckWin()\n        {\n            foreach (uint item in Puzzle)\n            {\n                var puzzleDetector = MyScriptWrapper.GetDetector(MyScriptWrapper.GetEntity(item));\n                MyDummyPoint dummyPoint = (MyDummyPoint)puzzleDetector.Parent;\n                if (dummyPoint.Color != Color.Green.ToVector4())\n                {\n                    Reset();\n                    return false;\n                }\n            }\n            return true;\n        }\n\n        private void Reset()\n        {\n            foreach (uint item in Puzzle)\n            {\n                var puzzleDetector = MyScriptWrapper.GetDetector(MyScriptWrapper.GetEntity(item));\n                MyDummyPoint dummyPoint = (MyDummyPoint)puzzleDetector.Parent;\n                dummyPoint.Color = Color.Yellow.ToVector4();\n            }\n        }\n\n        private void SubShake()\n        {\n            MyScriptWrapper.IncreaseHeadShake(MyMwcUtils.GetRandomInt(3, 4));\n        }\n\n        private void FarExplosion()\n        {\n            // MainShake\n            MyScriptWrapper.IncreaseHeadShake(MyMwcUtils.GetRandomInt(7, 10));\n            MyScriptWrapper.AddAudioImpShipQuake();\n\n            // Register sub shakes\n            MissionTimer.RegisterTimerAction(MyMwcUtils.GetRandomInt(200, 400), m_subShakeAction, false);\n            MissionTimer.RegisterTimerAction(MyMwcUtils.GetRandomInt(600, 800), m_subShakeAction, false);\n            MissionTimer.RegisterTimerAction(MyMwcUtils.GetRandomInt(800, 1200), m_subShakeAction, false);\n            MissionTimer.RegisterTimerAction(MyMwcUtils.GetRandomInt(1200, 1400), m_subShakeAction, false);\n\n            // Register next far explosion\n            MissionTimer.RegisterTimerAction(MyMwcUtils.GetRandomInt(3000, 5000), m_shakeAction, false);\n            //TODO add particle effect\n        }\n\n        private void DoorDetector1Open(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (entity == MySession.PlayerShip)\n            {\n                MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.GetEntity(370), false);\n                doorDetector2.On();\n                doorDetector1.On();\n            }\n        }\n\n        private void DoorDetector2Closed(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (entity == MySession.PlayerShip)\n            {\n                MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.GetEntity(370), true);\n                doorDetector2.On();\n                doorDetector1.On();\n            }\n        }\n\n        void OnSpawnpointBotSpawned(MyEntity spawnpoint, MyEntity bot)\n        {\n            if (spawnpoint == MyScriptWrapper.GetEntity(1660))\n            {\n                m_Speedy = (MySmallShipBot)bot; \n            }   \n        }\n\n        void OnBotReachedWaypoint(MyEntity bot, MyEntity waypoint)\n        {\n            if (bot == m_Speedy)\n            {\n                switch (MyScriptWrapper.GetEntityId(waypoint))\n                {\n                    case 1652:\n                        m_Speedy.SpeedModifier = 0.3f;\n                        break;\n                    case 1646:\n                        m_Speedy.SpeedModifier = 2.0f;\n                        break;\n                    default:\n                        break;\n                }\n            }\n        }\n\n        void PlaceRadarSucces(MyMissionBase sender)\n        {\n            MyScriptWrapper.Highlight(RadarEntity, false,this);\n            MyScriptWrapper.EnablePhysics(RadarEntity, true);\n\n           \n            var inventory = MyScriptWrapper.GetPlayerInventory();\n            var items = new List<MyInventoryItem> ();\n            inventory.GetInventoryItems(ref items, MyMwcObjectBuilderTypeEnum.SmallShip_Radar, null);//SmallShip_AlienObjectDetector,\n\n            inventory.RemoveInventoryItems(items,false);\n\n        }\n\n\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/SinglePlayer/MyPlutoniumMineMission.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Entities;\nusing System.Diagnostics;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Entities.WayPoints;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Inventory;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.Game.World.Global;\n\n\nnamespace MinerWars.AppCode.Game.Missions.SinglePlayer\n{\n    class MyPlutoniumMineMission : MyMissionSandboxBase\n    {\n        private enum EntityID // list of IDs used in script\n        {\n            StartLocation = 31787,\n            Detector1 = 34770,\n            Detector2 = 34779,\n            Spawn1 = 34769,\n            Spawn2 = 34778,\n\n\n        }\n\n        public override void ValidateIds() // checks if all IDs in enum are loaded correctly\n        {\n            foreach (var value in Enum.GetValues(typeof(EntityID)))\n            {\n                MyScriptWrapper.GetEntity((uint)((value as EntityID?).Value));\n            }\n        }\n\n        private MyEntityDetector m_Detector1;\n        private MyEntityDetector m_Detector2;\n\n        public MyPlutoniumMineMission()\n        {\n            ID = MyMissionID.URANITE_MINE; /* ID must be added to MyMissions.cs */\n            DebugName = new StringBuilder(\"Plutonium mine\"); // Name of mission\n            Name = MyTextsWrapperEnum.URANITE_MINE;\n            Description = MyTextsWrapperEnum.URANITE_MINE_Description;\n            MyMwcVector3Int baseSector = new MyMwcVector3Int(-7271990, 0, 1111311); // Story sector of the script - i.e. (-2465,0,6541)\n            RequiredMissions = new MyMissionID[] { };\n            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation); // Starting dummy point - must by typecasted to uint and referenced from EntityID enum\n            RequiredActors = new MyActorEnum[] { MyActorEnum.MADELYN };\n\n\n\n            m_objectives = new List<MyObjective>(); // Creating of list of submissions\n\n\n        }\n\n\n\n\n        public override void Load() // Code in that block will be called on the load of the sector\n        {\n            base.Load();\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.HeavyFight, 3); // Sets music group to be played in the sector - no matter if the mission is running or not\n\n            base.Load();\n\n            m_Detector1 = MyScriptWrapper.GetDetector(MyScriptWrapper.GetEntity((uint)EntityID.Detector1));\n            m_Detector1.OnEntityEnter += Detector1Action;\n            m_Detector1.On();\n\n            m_Detector2 = MyScriptWrapper.GetDetector(MyScriptWrapper.GetEntity((uint)EntityID.Detector2));\n            m_Detector2.OnEntityEnter += Detector2Action;\n            m_Detector2.On();\n\n        }\n\n        public override void Unload()\n        {\n            base.Unload();\n            if (m_Detector1 != null)\n            {\n                m_Detector1.OnEntityEnter -= Detector1Action;\n            }\n            if (m_Detector2 != null)\n            {\n                m_Detector2.OnEntityEnter -= Detector2Action;\n            }\n        }\n\n        public void Detector1Action(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (entity == MySession.PlayerShip)\n            {\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Spawn1);\n                m_Detector1.Off();\n            }\n        }\n\n        public void Detector2Action(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (entity == MySession.PlayerShip)\n            {\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Spawn2);\n                m_Detector2.Off();\n            }\n        }\n\n        public override void Update() //Code in that block will be called in each frame\n        {\n            base.Update();\n\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/SinglePlayer/MyReichstagAMission.cs",
    "content": "﻿#region Using\n\nusing System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.Inventory;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Physics;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.AppCode.Game.HUD;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Missions;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.AppCode.Game.Explosions;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Entities.VoxelHandShapes;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Voxels;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.Game.Renders;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.AppCode.Game.Audio.Dialogues;\nusing MinerWars.Resources;\n\n#endregion\n\nnamespace MinerWars.AppCode.Game.Missions.SinglePlayer\n{\n    class MyReichstagAMission : MyMission\n    {\n        private enum EntityID\n        {\n            StartLocation = 485,\n            Bot_WaltherStauffenberg = 74692,\n            Bot_Hans = 74717,\n            Bot_Karl = 74742,\n            MainBuilding = 307,\n        }\n        \n        public override void ValidateIds()\n        {\n            foreach (var value in Enum.GetValues(typeof(EntityID)))\n            {\n                MyScriptWrapper.GetEntity((uint)((value as EntityID?).Value));\n            }\n        }\n        \n        #region Submissions\n\n        public MyReichstagAMission()\n        {\n            ID = MyMissionID.REICHSTAG_A; /* ID must be added to MyMissions.cs */\n            DebugName = new StringBuilder(\"18a-Reichstag A\");\n            Name = MyTextsWrapperEnum.REICHSTAG_A;\n            Description = MyTextsWrapperEnum.REICHSTAG_A_Description;\n            Flags = MyMissionFlags.Story;\n\n            MyMwcVector3Int baseSector = new MyMwcVector3Int(-2325831, 0, -7186381);\n\n            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation);\n\n            RequiredMissions = new MyMissionID[] { MyMissionID.RUSSIAN_TRANSMITTER };\n            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.REICHSTAG_A_COLONEL_DIALOGUE };\n            RequiredActors = new MyActorEnum[] { MyActorEnum.MADELYN, MyActorEnum.TARJA, MyActorEnum.VALENTIN };\n\n            m_objectives = new List<MyObjective>();\n\n            var introduction = new MyObjectiveDialog(\n                MyMissionID.REICHSTAG_A_INTRODUCTION,\n                null,\n                this,\n                new MyMissionID[] { },\n                dialogId: MyDialogueEnum.REICHSTAG_A_0100_INTRODUCTION\n                ) { SaveOnSuccess = true };\n            m_objectives.Add(introduction);\n\n            var getCloserToStation = new MyObjective(\n                (MyTextsWrapperEnum.REICHSTAG_A_GET_TO_MAIN_BUILDING_Name),\n                MyMissionID.REICHSTAG_A_GET_TO_MAIN_BUILDING,\n                (MyTextsWrapperEnum.REICHSTAG_A_GET_TO_MAIN_BUILDING_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.REICHSTAG_A_INTRODUCTION },\n                new MyMissionLocation(baseSector, (uint)EntityID.MainBuilding)\n              ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudMainBuilding };\n            getCloserToStation.OnMissionLoaded += GetCloserToStationLoaded;\n            m_objectives.Add(getCloserToStation);\n\n            var meetColonel = new MyMeetObjective(\n                (MyTextsWrapperEnum.REICHSTAG_A_MEET_COLONEL_Name),\n                MyMissionID.REICHSTAG_A_MEET_COLONEL,\n                (MyTextsWrapperEnum.REICHSTAG_A_MEET_COLONEL_Description),\n                this,\n                new MyMissionID[] { MyMissionID.REICHSTAG_A_GET_TO_MAIN_BUILDING },\n                null,\n                (uint)EntityID.Bot_WaltherStauffenberg,\n                100,\n                0.25f,\n                null,\n                startDialogueId: MyDialogueEnum.REICHSTAG_A_0300_REACHING_REICHSTAG\n               ) { SaveOnSuccess = false, FollowMe = false, HudName = MyTextsWrapperEnum.HudColonelVonStauffenberg };\n            m_objectives.Add(meetColonel);\n\n\n            var colonelDialogue = new MyObjectiveDialog(\n                MyMissionID.REICHSTAG_A_COLONEL_DIALOGUE,\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.REICHSTAG_A_MEET_COLONEL },\n                dialogId: MyDialogueEnum.REICHSTAG_A_0400_OFFICER_DIALOGUE\n                ) { SaveOnSuccess = true };\n            m_objectives.Add(colonelDialogue);\n            colonelDialogue.OnMissionSuccess += ColonelDialogueSuccess;\n\n        }\n        #endregion\n\n        private void GetCloserToStationLoaded(MyMissionBase sender)\n        {\n            sender.MissionTimer.RegisterTimerAction(5000, TimerActionDelegate, false);\n        }\n\n        private void TimerActionDelegate()\n        {\n            MyScriptWrapper.PlayDialogue(MyDialogueEnum.REICHSTAG_A_0200_ON_THE_WAY);\n        }\n\n        private void ColonelDialogueSuccess(MyMissionBase sender)\n        {\n            MyScriptWrapper.PlayDialogue(MyDialogueEnum.REICHSTAG_A_0500_ON_THE_WAY_BACK);\n        }\n\n        public override void Load() // Code in that block will be called on the load of the sector\n        {\n            base.Load();\n\n            MySmallShipBot FoRrepresentative = (MySmallShipBot)MyScriptWrapper.TryGetEntity((uint)EntityID.Bot_WaltherStauffenberg);\n            MyScriptWrapper.ChangeFaction(FoRrepresentative, MyMwcObjectBuilder_FactionEnum.FourthReich);\n            FoRrepresentative.IsDestructible = false;\n            MySmallShipBot Hans = (MySmallShipBot)MyScriptWrapper.TryGetEntity((uint)EntityID.Bot_Hans);\n            MySmallShipBot Karl = (MySmallShipBot)MyScriptWrapper.TryGetEntity((uint)EntityID.Bot_Karl);\n            Hans.IsDestructible = false;\n            Karl.IsDestructible = false;\n            Hans.Follow(FoRrepresentative);\n            Karl.Follow(FoRrepresentative);\n\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.CalmAtmosphere); // Sets music group to be played in the sector - no matter if the mission is running or not\n\n            MyScriptWrapper.SetFactionRelation(MyMwcObjectBuilder_FactionEnum.FourthReich, MyMwcObjectBuilder_FactionEnum.Rainiers, MyFactions.RELATION_NEUTRAL);\n        }\n    }\n\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/SinglePlayer/MyReichstagCMission.cs",
    "content": "﻿#region Using\n\nusing System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.Inventory;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Physics;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.AppCode.Game.HUD;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Missions;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.AppCode.Game.Explosions;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Entities.VoxelHandShapes;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Voxels;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.Game.Renders;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.AppCode.Game.Audio.Dialogues;\nusing MinerWars.Resources;\nusing MinerWars.AppCode.Networking;\n\n#endregion\n\nnamespace MinerWars.AppCode.Game.Missions.SinglePlayer\n{\n    class MyReichstagCMission : MyMission\n    {\n        private enum EntityID\n        {\n            StartLocation = 485,\n            MoveMS = 1,\n            MovePlayer = 2,\n            Meetpoint = 307,\n            Bot_ShipyardOfficer = 32,\n            Bot_TransporterCaptain = 4,\n            Bot_WaltherStauffenberg = 74692,\n            Bot_Hans = 74717,\n            Bot_Karl = 74742,\n            Objective_Shipchange = 83406,\n            Objective_Mothership = 9,\n            Bot_Disabled_01 = 88111,\n            Bot_Disabled_02 = 88136,\n            Bot_Disabled_03 = 88048,\n            Bot_Disabled_04 = 88086,\n            Bot_Disabled_05 = 88061,\n            Detector_Shipyard = 3,\n            Detector_Weaponry = 7,      \n        }\n        \n        public override void ValidateIds()\n        {\n            foreach (var value in Enum.GetValues(typeof(EntityID)))\n            {\n                MyScriptWrapper.GetEntity((uint)((value as EntityID?).Value));\n            }\n        }\n\n        private MyEntityDetector m_detectorWeaponry;\n        private MyEntityDetector m_detectorShipyard;\n        private MyTimerActionDelegate m_SolarwindAction;\n\n        #region Submissions\n        \n        public MyReichstagCMission()\n        {\n            ID = MyMissionID.REICHSTAG_C; /* ID must be added to MyMissions.cs */\n            DebugName = new StringBuilder(\"18c-Reichstag C\");\n            Name = MyTextsWrapperEnum.REICHSTAG_C;\n            Description = MyTextsWrapperEnum.REICHSTAG_C_Description;\n            Flags = MyMissionFlags.Story;\n            AchievementName = MySteamAchievementNames.Mission27_Reichstag2;\n\n            MyMwcVector3Int baseSector = new MyMwcVector3Int(-2325831, 0, -7186381);\n\n            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation);\n\n            RequiredMissions = new MyMissionID[] { MyMissionID.NAZI_BIO_LAB };\n            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.REICHSTAG_C_MOTHERSHIP };\n            RequiredActors = new MyActorEnum[] { MyActorEnum.MADELYN, MyActorEnum.TARJA, MyActorEnum.VALENTIN };\n\n            m_objectives = new List<MyObjective>();\n\n\n            var MeetSubmission = new MyMeetObjective(\n                 (MyTextsWrapperEnum.REICHSTAG_C_FOR_Name),\n                MyMissionID.REICHSTAG_C_FOR,\n                (MyTextsWrapperEnum.REICHSTAG_C_FOR_Description),\n                this,\n                new MyMissionID[] { },\n                null,\n                (uint)EntityID.Bot_WaltherStauffenberg,\n                100,\n                0.25f,\n                null\n               ) { SaveOnSuccess = true, FollowMe = false };\n          /*  MeetSubmission.OnMissionSuccess += MeetSubmissionSuccess;\n            MeetSubmission.OnMissionLoaded += MeetSubmissionLoaded;*/\n            m_objectives.Add(MeetSubmission);\n\n            var colonelDialogue = new MyObjectiveDialog(\n                MyMissionID.REICHSTAG_C_COLONEL_DIALOGUE,\n                null,\n                this,\n                new MyMissionID[] {MyMissionID.REICHSTAG_C_FOR },\n                dialogId: MyDialogueEnum.REICHSTAG_C_0100_OFFICER_TALK\n                ) { SaveOnSuccess = true };\n            m_objectives.Add(colonelDialogue);\n\n            var goToShipyard = new MyMeetObjective(\n                (MyTextsWrapperEnum.REICHSTAG_C_GO_TO_SHIPYARD_Name),\n                MyMissionID.REICHSTAG_C_GO_TO_SHIPYARD,\n                (MyTextsWrapperEnum.REICHSTAG_C_GO_TO_SHIPYARD_Description),\n                this,\n                new MyMissionID[] { MyMissionID.REICHSTAG_C_COLONEL_DIALOGUE },\n                null,\n                (uint)EntityID.Bot_ShipyardOfficer,\n                100,\n                0.25f,\n                null,\n                startDialogueId: MyDialogueEnum.REICHSTAG_C_0200_ON_THE_WAY\n               ) { SaveOnSuccess = true, FollowMe = false };\n            m_objectives.Add(goToShipyard);\n            goToShipyard.OnMissionLoaded += GoToShipyardLoaded;\n\n            var talkToSupplyOfficer = new MyObjectiveDialog(\n                MyMissionID.REICHSTAG_C_TALK_TO_SUPPLY_OFFICER,\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.REICHSTAG_C_GO_TO_SHIPYARD },\n                dialogId: MyDialogueEnum.REICHSTAG_C_0400_SUPPLY_OFFICER\n                ) { SaveOnSuccess = true };\n            m_objectives.Add(talkToSupplyOfficer);\n\n            var ChangeShip = new MyUseObjective(\n                (MyTextsWrapperEnum.REICHSTAG_C_CHANGESHIP_Name),\n                MyMissionID.REICHSTAG_C_CHANGESHIP,\n                (MyTextsWrapperEnum.REICHSTAG_C_CHANGESHIP_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.REICHSTAG_C_TALK_TO_SUPPLY_OFFICER },\n                new MyMissionLocation(baseSector, (uint)EntityID.Bot_Disabled_03),\n                MyTextsWrapperEnum.PressToBoardShip,\n                MyTextsWrapperEnum.Ship,\n                MyTextsWrapperEnum.BoardingInProgress,\n                3000,\n                radiusOverride:30,\n                startDialogId: MyDialogueEnum.REICHSTAG_C_0500_REACHING_SHIPS\n            );\n            m_objectives.Add(ChangeShip);\n            ChangeShip.OnMissionSuccess += ChangeShipOnOnMissionSuccess;\n\n            var ShipChangedDialogue = new MyObjectiveDialog(\n                MyMissionID.REICHSTAG_C_SHIP_CHANGED_DIALOGUE,\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.REICHSTAG_C_CHANGESHIP },\n                dialogId: MyDialogueEnum.REICHSTAG_C_0600_SHIPS_PICKUPED\n                ) { SaveOnSuccess = true };\n            m_objectives.Add(ShipChangedDialogue);\n           \n            var GetArmed  = new MyObjectiveEnterInventory(\n                (MyTextsWrapperEnum.REICHSTAG_C_WEAPONS_Name),\n                MyMissionID.REICHSTAG_C_WEAPONS,\n                (MyTextsWrapperEnum.REICHSTAG_C_WEAPONS_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.REICHSTAG_C_SHIP_CHANGED_DIALOGUE },\n                (uint)EntityID.Objective_Shipchange,\n                successDialogId: MyDialogueEnum.REICHSTAG_C_0800_SHOPPING_FINISHED\n            );\n            m_objectives.Add(GetArmed);\n            GetArmed.OnMissionLoaded += GetArmedLoaded;\n\n            var MeetTransporterCaptain = new MyMeetObjective(\n                (MyTextsWrapperEnum.REICHSTAG_C_GO_TO_HANGAR_Name),\n                MyMissionID.REICHSTAG_C_GO_TO_HANGAR,\n                (MyTextsWrapperEnum.REICHSTAG_C_GO_TO_HANGAR_Description),\n                this,\n                new MyMissionID[] { MyMissionID.REICHSTAG_C_WEAPONS},\n                null,\n                (uint)EntityID.Bot_TransporterCaptain,\n                100,\n                0.25f,\n                null\n               ) { SaveOnSuccess = true, FollowMe = false };\n            m_objectives.Add(MeetTransporterCaptain);\n\n            var TalkToTransporterCaptain = new MyObjectiveDialog(\n                MyMissionID.REICHSTAG_C_TRANSPORTER_CAPTAIN_DIALOGUE,\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.REICHSTAG_C_GO_TO_HANGAR },\n                dialogId: MyDialogueEnum.REICHSTAG_C_0900_TRANSPORTER_REACHED\n                ) { SaveOnSuccess = true };\n            m_objectives.Add(TalkToTransporterCaptain);\n\n            var GetWWMothership = new MyObjective(\n                 (MyTextsWrapperEnum.REICHSTAG_C_MOTHERSHIP_Name),\n                 MyMissionID.REICHSTAG_C_MOTHERSHIP,\n                 (MyTextsWrapperEnum.REICHSTAG_C_MOTHERSHIP_Description),\n                 null,\n                 this,\n                 new MyMissionID[] { MyMissionID.REICHSTAG_C_TRANSPORTER_CAPTAIN_DIALOGUE },\n                 new MyMissionLocation(baseSector, (uint)EntityID.Objective_Mothership),\n                 radiusOverride: 30\n             ) { HudName = MyTextsWrapperEnum.HudMothership };\n            m_objectives.Add(GetWWMothership);\n        }\n\n        private void GetArmedLoaded(MyMissionBase sender)\n        {\n            m_detectorWeaponry = MyScriptWrapper.GetDetector(MyScriptWrapper.GetEntity((uint)EntityID.Detector_Weaponry));\n            m_detectorWeaponry.On();\n            m_detectorWeaponry.OnEntityEnter += WeaponryDetectorEntered;\n        }\n\n        private void WeaponryDetectorEntered(MyEntity detector, MyEntity bot, int meetcriterias)\n        {\n            if (detector == (MyEntity)m_detectorShipyard && bot == MySession.PlayerShip)\n            {\n                MyScriptWrapper.PlayDialogue(MyDialogueEnum.REICHSTAG_C_0700_SHIPYARD_SHOP);\n                m_detectorWeaponry.Off();\n                m_detectorWeaponry.OnEntityEnter -= WeaponryDetectorEntered;\n            }\n        }\n\n        private void GoToShipyardLoaded(MyMissionBase sender)\n        {\n            m_detectorShipyard = MyScriptWrapper.GetDetector(MyScriptWrapper.GetEntity((uint)EntityID.Detector_Shipyard));\n            m_detectorShipyard.On();\n            m_detectorShipyard.OnEntityEnter += ShipyardDetectorEntered;\n        }\n\n        private void ShipyardDetectorEntered(MyEntity detector, MyEntity bot, int meetcriterias)\n        {\n            if (detector == (MyEntity)m_detectorShipyard && bot == MySession.PlayerShip)\n            {\n                MyScriptWrapper.PlayDialogue(MyDialogueEnum.REICHSTAG_C_0300_REACHING_SHIPYARD);\n                m_detectorShipyard.Off();\n                m_detectorShipyard.OnEntityEnter -= ShipyardDetectorEntered;\n            }\n        }\n\n        private void ChangeShipOnOnMissionSuccess(MyMissionBase sender)\n        {\n            MyScriptWrapper.FadedOut += MyScriptWrapper_FadedOut;\n            MyScriptWrapper.FadeOut();\n        }\n\n        private void MyScriptWrapper_FadedOut()\n        {\n            MyScriptWrapper.FadedOut -= MyScriptWrapper_FadedOut;\n            var ship = MyScriptWrapper.GetEntity((uint)EntityID.Bot_Disabled_03) as MySmallShipBot;\n\n            MyScriptWrapper.ChangeShip(ship);\n\n            MySmallShip vitolino = (MySmallShip)MyScriptWrapper.GetEntity(\"RavenGuy\");\n            vitolino.SetName(\"Disabled_vitolino\");\n            MyScriptWrapper.DisableShip(vitolino);\n\n            MySmallShip tanja = (MySmallShip)MyScriptWrapper.GetEntity(\"RavenGirl\");\n            tanja.SetName(\"Disabled_tanja\");\n            MyScriptWrapper.DisableShip(tanja);\n\n            MySmallShip vitolinoNewShip = (MySmallShip)MyScriptWrapper.TryGetEntity((uint)EntityID.Bot_Disabled_04);\n            if (vitolinoNewShip != null)\n            {\n                vitolinoNewShip.MarkForClose();\n            }\n            MyScriptWrapper.InsertFriend(MyActorEnum.VALENTIN, vitolinoNewShip != null ? vitolinoNewShip.ShipType : MyMwcObjectBuilder_SmallShip_TypesEnum.HEWER);\n\n            MySmallShip tanjaNewShip = (MySmallShip)MyScriptWrapper.TryGetEntity((uint)EntityID.Bot_Disabled_05);\n            if (tanjaNewShip != null)\n            {\n                tanjaNewShip.MarkForClose();\n            }\n            MyScriptWrapper.InsertFriend(MyActorEnum.TARJA, tanjaNewShip != null ? tanjaNewShip.ShipType : MyMwcObjectBuilder_SmallShip_TypesEnum.KAMMLER);\n\n            MyScriptWrapper.FadeIn();\n        }\n\n        #endregion\n\n        public override void Load()\n        {\n            // HACK: ...adding dead entities (dead by solar wind or anything)\n            // These entities probably died after Reichstag A mission was successful, so they were not indestructible, solar wind came and eat them\n            var colonel = MyScriptWrapper.TryGetEntity((uint)EntityID.Bot_WaltherStauffenberg);\n            var valkyrie = MyScriptWrapper.TryGetEntity((uint)EntityID.Bot_Disabled_03);\n\n            if (colonel == null || valkyrie == null)\n            {\n                var sector = MyLocalCache.LoadSector(new MyMwcSectorIdentifier(MyMwcSectorTypeEnum.STORY, null, this.GetCurrentSector(), String.Empty));\n                var bots = sector.SectorObjects.OfType<MyMwcObjectBuilder_SmallShip_Bot>();\n                foreach (var bot in bots)\n                {\n                    if (colonel == null && bot.EntityId == (uint)EntityID.Bot_WaltherStauffenberg\n                        || valkyrie == null && bot.EntityId == (uint)EntityID.Bot_Disabled_03)\n                    {\n                        MyEntities.CreateFromObjectBuilderAndAdd(bot.DisplayName, bot, bot.PositionAndOrientation.GetMatrix());\n                    }\n                }\n            }\n\n            base.Load();            \n\n            MyScriptWrapper.SetFactionRelation(MyMwcObjectBuilder_FactionEnum.FourthReich, MyMwcObjectBuilder_FactionEnum.Rainiers, MyFactions.RELATION_BEST);\n\n            MySmallShipBot FoRrepresentative = (MySmallShipBot)MyScriptWrapper.TryGetEntity((uint)EntityID.Bot_WaltherStauffenberg);\n            MyScriptWrapper.ChangeFaction(FoRrepresentative, MyMwcObjectBuilder_FactionEnum.FourthReich);\n            FoRrepresentative.IsDestructible = false;\n            MySmallShipBot Hans = (MySmallShipBot)MyScriptWrapper.TryGetEntity((uint)EntityID.Bot_Hans);\n            MySmallShipBot Karl = (MySmallShipBot)MyScriptWrapper.TryGetEntity((uint)EntityID.Bot_Karl);\n            Hans.IsDestructible = false;\n            Karl.IsDestructible = false;\n            Hans.Follow(FoRrepresentative);\n            Karl.Follow(FoRrepresentative);\n\n            MyScriptWrapper.DisableShip(MyScriptWrapper.GetEntity((uint)EntityID.Bot_Disabled_01), true, false);\n            MyScriptWrapper.DisableShip(MyScriptWrapper.GetEntity((uint)EntityID.Bot_Disabled_02), true, false);\n            MyScriptWrapper.DisableShip(MyScriptWrapper.GetEntity((uint)EntityID.Bot_Disabled_03), true, false);\n            MyScriptWrapper.DisableShip(MyScriptWrapper.GetEntity((uint)EntityID.Bot_Disabled_04), true, false);\n            MyScriptWrapper.DisableShip(MyScriptWrapper.GetEntity((uint)EntityID.Bot_Disabled_05), true, false);\n        }\n\n\n        public override void Unload()\n        {\n            base.Unload();\n\n            if (MyScriptWrapper.IsMissionFinished(this.ID))\n            {\n                MyScriptWrapper.TravelToMission(MyMissionID.TWIN_TOWERS);\n            }\n        }\n\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/SinglePlayer/MyResearchVesselMission.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Journal;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Entities;\nusing System.Diagnostics;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Entities.WayPoints;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.AppCode.Game.Audio.Dialogues;\n\n\nnamespace MinerWars.AppCode.Game.Missions.SinglePlayer\n{\n    class MyResearchVesselMission : MyMission\n    {\n        #region EntityIDs\n        private enum EntityID // list of IDs used in script\n        {\n            StartLocation = 1871,\n            DummyReachShip = 30608,\n            checkpoint_1 = 30187,\n            DummyNearHub1 = 30188,\n            checkpoint_3 = 30189, // LAB CARGO\n            checkpoint_4 = 30190,\n            checkpoint_5 = 30191,\n            checkpoint_6 = 30192, //HANGAR CARGO\n            checkpoint_7 = 30397,\n            checkpoint_8 = 30398,\n            checkpoint_9 = 30399,\n            checkpoint_10 = 30400, // GENERATOR CARGO\n            checkpoint_11 = 30401, //CARGO\n            DummyNearHub2 = 35067, // new HANGAR\n            DummyNearHub3 = 35072, // new GENERATOR \n            checkpoint_14 = 35071, // new LAB \n            DummyReturn = 21583,\n            BridgeDetector = 31047,\n            BridgeSpawnpoint = 31048,\n            GeneratorDetector1 = 31053,\n            GeneratorDetector2 = 31055,\n            GeneratorDetector3 = 31057,\n            GeneratorSpawnpoint = 31059,\n            Cargo1 = 31550, // checkpoint 11 - CARGO\n            Cargo2 = 31554, // checkpoint 10 - GENERATOR\n            Cargo3 = 31549, //checkpoint 3 - LAB\n            Cargo4 = 31551, //checkpoint 6 - HANGAR\n            Hub1 = 2408,\n            Hub2 = 2407,\n            Hub3 = 2434,\n            Spawn1 = 36779,\n            spawn2 = 36787,\n            detect1 = 36785,\n            detect2 = 36788,\n\n            Door1 = 277,\n            Door2 = 278,\n            Door3 = 279,\n\n            Particle1 = 16777494,\n            Particle2 = 16777495,\n            Particle3 = 16777496,\n            Particle4 = 16777497,\n            Particle5 = 16777498,\n            Particle6 = 16777499,\n            Particle7 = 16777500,\n            Particle8 = 16777501,\n            Particle9 = 16777502,\n        }\n\n        public override void ValidateIds() // checks if all IDs in enum are loaded correctly\n        {\n            foreach (var value in Enum.GetValues(typeof(EntityID)))\n            {\n                MyScriptWrapper.GetEntity((uint)(((EntityID?) value).Value));\n            }\n        }\n        #endregion\n\n        \n        private MyEntityDetector m_generatorDetector1;\n        private MyEntityDetector m_generatorDetector2;\n        private MyEntityDetector m_generatorDetector3;\n\n\n        public MyResearchVesselMission()\n        {\n            ID = MyMissionID.RESEARCH_VESSEL;\n            DebugName = new StringBuilder(\"12-Eurydice/Osaka\");\n            Name = MyTextsWrapperEnum.RESEARCH_VESSEL;\n            Description = MyTextsWrapperEnum.RESEARCH_VESSEL_Description;\n            Flags = MyMissionFlags.Story;\n\n            MyMwcVector3Int baseSector = new MyMwcVector3Int(4189723, 0, -2201402);\n            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation);\n\n            RequiredMissions = new MyMissionID[] { MyMissionID.RIME_CONVINCE };\n            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.RESEARCH_VESSEL_TAKE_FOURTH };\n            RequiredActors = new MyActorEnum[] { MyActorEnum.MARCUS, MyActorEnum.MADELYN, MyActorEnum.TARJA, MyActorEnum.VALENTIN };\n\n\n            #region Objectives\n            m_objectives = new List<MyObjective>(); \n\n            var introDialogue = new MyObjectiveDialog(\n                MyMissionID.RESEARCH_VESSEL_INTRO,\n                null,\n                this,\n                new MyMissionID[] { },\n                MyDialogueEnum.RESEARCH_VESSEL_0100_INTRO\n            ) { SaveOnSuccess = true };\n            m_objectives.Add(introDialogue);\n\n\n            var reachShip = new MyObjective(\n                MyTextsWrapperEnum.RESEARCH_VESSEL_REACH_SHIP,\n                MyMissionID.RESEARCH_VESSEL_REACH_SHIP,\n                MyTextsWrapperEnum.RESEARCH_VESSEL_REACH_SHIP_Description,\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.RESEARCH_VESSEL_INTRO },\n                new MyMissionLocation(baseSector, (uint)EntityID.DummyReachShip)\n            ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudEurydice };\n            reachShip.OnMissionSuccess += new MissionHandler(ReachShip_Success);\n            m_objectives.Add(reachShip);\n\n    \n            var checkCargo = new MyObjective( \n                MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_CARGO,\n                MyMissionID.RESEARCH_VESSEL_CHECK_CARGO,\n                MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_CARGO_Description,\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.RESEARCH_VESSEL_REACH_SHIP },\n                new MyMissionLocation(baseSector, (uint)EntityID.checkpoint_1)\n            ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudContainer };\n            m_objectives.Add(checkCargo);\n\n\n            var checkCommandRoom = new MyObjective(\n                MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_COMMAND_ROOM,\n                MyMissionID.RESEARCH_VESSEL_CHECK_COMMAND_ROOM,\n                MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_COMMAND_ROOM_Description,\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.RESEARCH_VESSEL_CHECK_CARGO },\n                new MyMissionLocation(baseSector, (uint)EntityID.DummyNearHub1)\n            ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudCommandRoom };\n            checkCommandRoom.OnMissionLoaded += new MissionHandler(checkCommandRoom_OnMissionLoaded);\n            m_objectives.Add(checkCommandRoom);\n\n\n            var unlockFirstCargo = new MyObjectiveEnablePrefabs(\n                MyTextsWrapperEnum.RESEARCH_VESSEL_USE_HUB_1,\n                MyMissionID.RESEARCH_VESSEL_USE_HUB_1,\n                MyTextsWrapperEnum.RESEARCH_VESSEL_USE_HUB_1_Description,\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.RESEARCH_VESSEL_CHECK_COMMAND_ROOM },\n                null,\n                new List<uint> { (uint)EntityID.Hub1 },\n                new List<uint> { (uint)EntityID.Door1 }\n            ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudHub };\n            m_objectives.Add(unlockFirstCargo);\n\n\n            var checkLaboratory = new MyObjective(\n                MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_LABORATORY,\n                MyMissionID.RESEARCH_VESSEL_CHECK_LABORATORY,\n                MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_LABORATORY_Description,\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.RESEARCH_VESSEL_USE_HUB_1 },\n                new MyMissionLocation(baseSector, (uint)EntityID.checkpoint_14)\n            ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudLab };\n            m_objectives.Add(checkLaboratory);\n\n\n            var takeFirstParts = new MyUseObjective(\n                MyTextsWrapperEnum.RESEARCH_VESSEL_TAKE_FIRST,\n                MyMissionID.RESEARCH_VESSEL_TAKE_FIRST,\n                MyTextsWrapperEnum.RESEARCH_VESSEL_TAKE_FIRST_Description,\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.RESEARCH_VESSEL_CHECK_LABORATORY },\n                new MyMissionLocation(baseSector, (uint)EntityID.Cargo3),\n                MyTextsWrapperEnum.PressToTakeComponent,\n                MyTextsWrapperEnum.Component,\n                MyTextsWrapperEnum.TakingInProgress,\n                1000,\n                MyUseObjectiveType.Activating,\n                radiusOverride: 50\n            ) { SaveOnSuccess = true };\n            takeFirstParts.OnMissionSuccess += TakeFirstParts_Success;\n            m_objectives.Add(takeFirstParts);\n\n\n            var checkWarehouse = new MyObjective( \n                MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_WAREHOUSE,\n                MyMissionID.RESEARCH_VESSEL_CHECK_WAREHOUSE,\n                MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_WAREHOUSE_Description,\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.RESEARCH_VESSEL_TAKE_FIRST }, \n                new MyMissionLocation(baseSector, (uint)EntityID.checkpoint_4)\n            ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudWarehouse };\n            m_objectives.Add(checkWarehouse); \n\n\n            var checkDrillMachineRoom = new MyObjective(\n                MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_DRILL_ROOM,\n                MyMissionID.RESEARCH_VESSEL_CHECK_DRILL_ROOM, \n                MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_DRILL_ROOM_Description,\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.RESEARCH_VESSEL_CHECK_WAREHOUSE }, \n                new MyMissionLocation(baseSector, (uint)EntityID.checkpoint_5)\n            ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudDrillRoom };\n            checkDrillMachineRoom.OnMissionSuccess += new MissionHandler(checkDrillMachineRoom_OnMissionSuccess);\n            m_objectives.Add(checkDrillMachineRoom); \n\n\n            var checkFirstHangar = new MyObjective(\n                MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_FIRST_HANGAR,\n                MyMissionID.RESEARCH_VESSEL_CHECK_FIRST_HANGAR,\n                MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_FIRST_HANGAR_Description,\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.RESEARCH_VESSEL_CHECK_DRILL_ROOM },\n                new MyMissionLocation(baseSector, (uint)EntityID.DummyNearHub2)\n            ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudHangar };\n            m_objectives.Add(checkFirstHangar);\n\n\n            var takeSecondParts = new MyUseObjective(\n                MyTextsWrapperEnum.RESEARCH_VESSEL_TAKE_SECOND,\n                MyMissionID.RESEARCH_VESSEL_TAKE_SECOND,\n                MyTextsWrapperEnum.RESEARCH_VESSEL_TAKE_SECOND_Description,\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.RESEARCH_VESSEL_CHECK_FIRST_HANGAR },\n                new MyMissionLocation(baseSector, (uint)EntityID.Cargo4),\n                MyTextsWrapperEnum.PressToTakeComponent,\n                MyTextsWrapperEnum.Component,\n                MyTextsWrapperEnum.TakingInProgress,\n                1000,\n                MyUseObjectiveType.Activating,\n                radiusOverride: 50\n            ) { SaveOnSuccess = true };\n            takeSecondParts.OnMissionSuccess += TakeSecondParts_Success;\n            m_objectives.Add(takeSecondParts);\n\n\n            var useHub2 = new MyObjectiveEnablePrefabs(\n               MyTextsWrapperEnum.RESEARCH_VESSEL_USE_HUB_2,\n               MyMissionID.RESEARCH_VESSEL_USE_HUB_2,\n               MyTextsWrapperEnum.RESEARCH_VESSEL_USE_HUB_2_Description,\n               null,\n               this,\n               new MyMissionID[] { MyMissionID.RESEARCH_VESSEL_TAKE_SECOND },\n                null,\n                new List<uint> { (uint)EntityID.Hub2 },\n                new List<uint> { (uint)EntityID.Door2 }\n            ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudHub };\n            m_objectives.Add(useHub2);\n\n\n            var checkSecondHangar = new MyObjective(\n                MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_SECOND_HANGAR,\n                MyMissionID.RESEARCH_VESSEL_CHECK_SECOND_HANGAR, \n                MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_SECOND_HANGAR_Description,\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.RESEARCH_VESSEL_USE_HUB_2 },\n                new MyMissionLocation(baseSector, (uint)EntityID.checkpoint_7)\n            ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudHangar };\n            m_objectives.Add(checkSecondHangar);\n\n\n            var checkThirdHangar = new MyObjective( \n                MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_THIRD_HANGAR,\n                MyMissionID.RESEARCH_VESSEL_CHECK_THIRD_HANGAR,\n                MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_THIRD_HANGAR_Description,\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.RESEARCH_VESSEL_CHECK_SECOND_HANGAR },\n                new MyMissionLocation(baseSector, (uint)EntityID.checkpoint_8)\n            ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudHangar };\n            m_objectives.Add(checkThirdHangar);\n          \n\n            var checkSecondWarehouse = new MyObjective( \n                MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_SECOND_WAREHOUSE,\n                MyMissionID.RESEARCH_VESSEL_CHECK_SECOND_WAREHOUSE,\n                MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_SECOND_WAREHOUSE_Description,\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.RESEARCH_VESSEL_CHECK_THIRD_HANGAR },\n                new MyMissionLocation(baseSector, (uint)EntityID.checkpoint_9)\n            ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudWarehouse };\n            m_objectives.Add(checkSecondWarehouse);\n            \n\n            var checkGenerator = new MyObjective(\n                MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_GENERATOR,\n                MyMissionID.RESEARCH_VESSEL_CHECK_GENERATOR,\n                MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_GENERATOR_Description,\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.RESEARCH_VESSEL_CHECK_SECOND_WAREHOUSE },\n                new MyMissionLocation(baseSector, (uint)EntityID.DummyNearHub3)\n            ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudGeneratorRoom };\n            m_objectives.Add(checkGenerator);\n\n\n            var useHub3 = new MyObjectiveEnablePrefabs(\n                MyTextsWrapperEnum.RESEARCH_VESSEL_USE_HUB_3,\n                MyMissionID.RESEARCH_VESSEL_USE_HUB_3,\n                MyTextsWrapperEnum.RESEARCH_VESSEL_USE_HUB_3_Description,\n               null,\n               this,\n               new MyMissionID[] { MyMissionID.RESEARCH_VESSEL_CHECK_GENERATOR },\n                null,\n                new List<uint> { (uint)EntityID.Hub3 },\n                new List<uint> { (uint)EntityID.Door3 }\n            ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudHub };\n            useHub3.OnMissionSuccess += new MissionHandler(UseHub3_Success);\n            m_objectives.Add(useHub3);\n\n            var takeThridProbe = new MyUseObjective(\n                MyTextsWrapperEnum.RESEARCH_VESSEL_TAKE_THIRD,\n                MyMissionID.RESEARCH_VESSEL_TAKE_THIRD,\n                MyTextsWrapperEnum.RESEARCH_VESSEL_TAKE_THIRD_Description,\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.RESEARCH_VESSEL_USE_HUB_3 },\n                new MyMissionLocation(baseSector, (uint)EntityID.Cargo2),\n                MyTextsWrapperEnum.PressToTakeComponent,\n                MyTextsWrapperEnum.Component,\n                MyTextsWrapperEnum.TakingInProgress,\n                1000,\n                MyUseObjectiveType.Activating,\n                radiusOverride: 50\n                ) { SaveOnSuccess = true };\n            takeThridProbe.OnMissionSuccess += TakeThirdParts_Success;\n            m_objectives.Add(takeThridProbe);\n\n            var takeThridProbeDialogue = new MyObjectiveDialog(\n                MyTextsWrapperEnum.Null,\n                MyMissionID.RESEARCH_VESSEL_TAKE_THIRD_DIALOGUE,\n                MyTextsWrapperEnum.Null,\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.RESEARCH_VESSEL_TAKE_THIRD },\n                MyDialogueEnum.RESEARCH_VESSEL_0700_THIRDPARTS);\n            m_objectives.Add(takeThridProbeDialogue);\n\n            var checkCargoAgain = new MyObjective(\n                MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_CARGO_AGAIN,\n                MyMissionID.RESEARCH_VESSEL_CHECK_CARGO_AGAIN,\n                MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_CARGO_AGAIN_Description,\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.RESEARCH_VESSEL_TAKE_THIRD_DIALOGUE },\n                new MyMissionLocation(baseSector, (uint)EntityID.checkpoint_1)\n            ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudContainer };\n            checkCargoAgain.OnMissionSuccess += new MissionHandler(CheckCargoAgain_Success);\n            m_objectives.Add(checkCargoAgain);\n        \n            var takeFourthParts = new MyUseObjective(\n                MyTextsWrapperEnum.RESEARCH_VESSEL_TAKE_FOURTH,\n                MyMissionID.RESEARCH_VESSEL_TAKE_FOURTH,\n                MyTextsWrapperEnum.RESEARCH_VESSEL_TAKE_FOURTH_Description,\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.RESEARCH_VESSEL_CHECK_CARGO_AGAIN },\n                new MyMissionLocation(baseSector, (uint)EntityID.Cargo1),\n                MyTextsWrapperEnum.PressToTakeComponent,\n                MyTextsWrapperEnum.Component,\n                MyTextsWrapperEnum.TakingInProgress,\n                 1000,\n                 MyUseObjectiveType.Activating, \n                 radiusOverride: 50\n                ) { SaveOnSuccess = false };\n            takeFourthParts.OnMissionSuccess += TakeFourthParts_Success;\n            m_objectives.Add(takeFourthParts);\n\n\n            #endregion\n        }\n\n        void CheckCargoAgain_Success(MyMissionBase sender)\n        {\n            MyScriptWrapper.PlayDialogue(MyDialogueEnum.RESEARCH_VESSEL_0800_FORCEFIELDDOWN);\n        }\n\n        void ReachShip_Success(MyMissionBase sender)\n        {\n            MyScriptWrapper.PlayDialogue(MyDialogueEnum.RESEARCH_VESSEL_0200_INCOMINGSHIPS);\n        }\n\n        void checkDrillMachineRoom_OnMissionSuccess(MyMissionBase sender)\n        {\n            MyScriptWrapper.PlayDialogue(MyDialogueEnum.RESEARCH_VESSEL_0400_LOOKATTHIS);\n        }\n\n        void checkCommandRoom_OnMissionLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.PlayDialogue(MyDialogueEnum.RESEARCH_VESSEL_0300_FORTIFIED);\n        }\n\n\n        public override void Load() // Code in that block will be called on the load of the sector\n        {\n            base.Load();\n\n            // Ensure correct game state\n            MyScriptWrapper.SetPlayerFaction(MyMwcObjectBuilder_FactionEnum.Rainiers);\n            MyScriptWrapper.SetFactionRelation(MyMwcObjectBuilder_FactionEnum.Rainiers, MyMwcObjectBuilder_FactionEnum.Euroamerican, MyFactions.RELATION_NEUTRAL);\n            MyScriptWrapper.EnsureInventoryItem(MyScriptWrapper.GetCentralInventory(), MyMwcObjectBuilderTypeEnum.SmallShip_HackingTool, (int)MyMwcObjectBuilder_SmallShip_HackingTool_TypesEnum.Level_2);\n            \n            if (MySession.Static.EventLog.IsMissionFinished(MyMissionID.RESEARCH_VESSEL_INTRO))\n            {\n                MyScriptWrapper.SetFactionRelation(MyMwcObjectBuilder_FactionEnum.Rainiers, MyMwcObjectBuilder_FactionEnum.Euroamerican, MyFactions.RELATION_WORST);    \n            }\n\n            var bridgeDetector = MyScriptWrapper.GetDetector(MyScriptWrapper.GetEntity((uint)EntityID.BridgeDetector));\n            bridgeDetector.OnEntityEnter += BridgeDetectorAction;\n            bridgeDetector.On();\n\n            m_generatorDetector1 = MyScriptWrapper.GetDetector(MyScriptWrapper.GetEntity((uint)EntityID.GeneratorDetector1));\n            m_generatorDetector1.OnEntityEnter += GeneratorDetector_Enter;\n            m_generatorDetector1.On();\n\n            m_generatorDetector2 = MyScriptWrapper.GetDetector(MyScriptWrapper.GetEntity((uint)EntityID.GeneratorDetector1));\n            m_generatorDetector2.OnEntityEnter += GeneratorDetector_Enter;\n            m_generatorDetector2.On();\n\n            m_generatorDetector3 = MyScriptWrapper.GetDetector(MyScriptWrapper.GetEntity((uint)EntityID.GeneratorDetector1));\n            m_generatorDetector3.OnEntityEnter += GeneratorDetector_Enter;\n            m_generatorDetector3.On();\n\n            var detectorNearHub1 = MyScriptWrapper.GetDetector((uint)EntityID.DummyNearHub1);\n            detectorNearHub1.OnEntityEnter += new OnEntityEnter(DetectorNearHub1_Enter);\n            detectorNearHub1.On();\n\n            var detectorNearHub2 = MyScriptWrapper.GetDetector((uint)EntityID.DummyNearHub2);\n            detectorNearHub2.OnEntityEnter += new OnEntityEnter(DetectorNearHub2_Enter);\n            detectorNearHub2.On();\n\n            var detectorNearHub3 = MyScriptWrapper.GetDetector((uint)EntityID.DummyNearHub3);\n            detectorNearHub3.OnEntityEnter += new OnEntityEnter(DetectorNearHub3_Enter);\n            detectorNearHub3.On();\n\n            var detect1 = MyScriptWrapper.GetDetector(MyScriptWrapper.GetEntity((uint)EntityID.detect1));\n            detect1.OnEntityEnter += Detector1_Enter;\n            detect1.On();\n\n\n            var detect2 = MyScriptWrapper.GetDetector(MyScriptWrapper.GetEntity((uint)EntityID.detect2));\n            detect2.OnEntityEnter += Detector2_Enter;\n            detect2.On();\n\n\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.DesperateWithStress, 3); // Sets music group to be played in the sector - no matter if the mission is running or not\n\n            MyScriptWrapper.Highlight((uint)EntityID.Cargo1, true, this); //highlighted items\n            MyScriptWrapper.Highlight((uint)EntityID.Cargo2, true, this);\n            MyScriptWrapper.Highlight((uint)EntityID.Cargo3, true, this);\n            MyScriptWrapper.Highlight((uint)EntityID.Cargo4, true, this);\n\n            MyScriptWrapper.OnDialogueFinished += new MyScriptWrapper.DialogueHandler(MyScriptWrapper_OnDialogueFinished);\n        }\n\n        public override void Unload()\n        {\n            base.Unload();\n\n            m_generatorDetector1 = null;\n            m_generatorDetector2 = null;\n            m_generatorDetector3 = null;\n        \n            MyScriptWrapper.OnDialogueFinished -= new MyScriptWrapper.DialogueHandler(MyScriptWrapper_OnDialogueFinished);\n        }\n\n        void MyScriptWrapper_OnDialogueFinished(MyDialogueEnum dialogue, bool interrupted)\n        {\n            if (dialogue == MyDialogueEnum.RESEARCH_VESSEL_0200_INCOMINGSHIPS)\n            {\n                MyScriptWrapper.SetFactionRelation(MyMwcObjectBuilder_FactionEnum.Euroamerican, MyMwcObjectBuilder_FactionEnum.Rainiers, MyFactions.RELATION_WORST);\n                MyScriptWrapper.PlayDialogue(MyDialogueEnum.RESEARCH_VESSEL_0250_YOUASKEDFORIT);\n            }\n        }\n\n        void DetectorNearHub1_Enter(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (MyScriptWrapper.IsPlayerShip(entity))\n            {\n                MyScriptWrapper.PlayDialogue(MyDialogueEnum.RESEARCH_VESSEL_1000_FIRSTHUB);\n                sender.Off();\n            }\n        }\n\n        void DetectorNearHub2_Enter(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (MyScriptWrapper.IsPlayerShip(entity))\n            {\n                MyScriptWrapper.PlayDialogue(MyDialogueEnum.RESEARCH_VESSEL_1100_SECONDHUB);\n                sender.Off();\n            }\n        }\n\n        void DetectorNearHub3_Enter(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (MyScriptWrapper.IsPlayerShip(entity))\n            {\n                MyScriptWrapper.PlayDialogue(MyDialogueEnum.RESEARCH_VESSEL_1200_THIRDHUB);\n                sender.Off();\n            }\n        }\n\n        void UseHub3_Success(MyMissionBase sender)\n        {\n            MyScriptWrapper.TryHide((uint)EntityID.Particle1);\n            MyScriptWrapper.TryHide((uint)EntityID.Particle2);\n            MyScriptWrapper.TryHide((uint)EntityID.Particle3);\n            MyScriptWrapper.TryHide((uint)EntityID.Particle4);\n            MyScriptWrapper.TryHide((uint)EntityID.Particle5);\n            MyScriptWrapper.TryHide((uint)EntityID.Particle6);\n            MyScriptWrapper.TryHide((uint)EntityID.Particle7);\n            MyScriptWrapper.TryHide((uint)EntityID.Particle8);\n            MyScriptWrapper.TryHide((uint)EntityID.Particle9);\n        }\n\n\n        void TakeFirstParts_Success(MyMissionBase sender) \n        {\n            MyScriptWrapper.PlayDialogue(MyDialogueEnum.RESEARCH_VESSEL_0500_FIRSTPARTS);\n            MyScriptWrapper.GetEntity((uint)EntityID.Cargo3).MarkForClose();\n        }\n\n\n        void TakeSecondParts_Success(MyMissionBase sender)\n        {\n            MyScriptWrapper.PlayDialogue(MyDialogueEnum.RESEARCH_VESSEL_0600_SECONDPARTS);\n            MyScriptWrapper.GetEntity((uint)EntityID.Cargo4).MarkForClose();\n        }\n\n\n        void TakeThirdParts_Success(MyMissionBase sender) \n        {\n            MyScriptWrapper.GetEntity((uint)EntityID.Cargo2).MarkForClose();\n        }\n\n\n        void TakeFourthParts_Success(MyMissionBase sender) \n        {\n            MyScriptWrapper.GetEntity((uint)EntityID.Cargo1).MarkForClose();\n            MyScriptWrapper.PlayDialogue(MyDialogueEnum.RESEARCH_VESSEL_0900_FOURTHPARTS);\n        }\n\n        public void BridgeDetectorAction(MyEntityDetector sender, MyEntity entity, int meetCriterias) \n        {\n            if (MyScriptWrapper.IsPlayerShip(entity))\n            {\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.BridgeSpawnpoint);\n                sender.Off();\n            }\n        }\n\n\n        public void GeneratorDetector_Enter(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (MyScriptWrapper.IsPlayerShip(entity))\n            {\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.GeneratorSpawnpoint);\n                m_generatorDetector1.Off();\n                m_generatorDetector2.Off();\n                m_generatorDetector3.Off();\n            }\n        }\n\n\n        public void Detector1_Enter(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (MyScriptWrapper.IsPlayerShip(entity))\n            {\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Spawn1);\n                sender.Off();\n            }\n        }\n\n\n        public void Detector2_Enter(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (MyScriptWrapper.IsPlayerShip(entity))\n            {\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.spawn2);\n                sender.Off();\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/SinglePlayer/MyRiftMission.cs",
    "content": "﻿#region Using\n\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.AppCode.Game.HUD;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Missions;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.AppCode.Game.Explosions;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Entities.VoxelHandShapes;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Voxels;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.Game.Renders;\nusing MinerWars.AppCode.Game.Inventory;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.AppCode.Game.Audio.Dialogues;\nusing MinerWars.AppCode.Game.Missions.Submissions;\nusing MinerWars.AppCode.Game.Missions.Components;\nusing MinerWars.AppCode.Game.Entities.Prefabs;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.Resources;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Networking;\n\n#endregion\n\nnamespace MinerWars.AppCode.Game.Missions.SinglePlayer\n{\n    class MyRiftMission : MyMission\n    {\n        #region Enums\n\n        private enum EntityID\n        {\n            StartLocation = 3934,\n            Detector_ShopLocation = 24107,\n            Objective_RiftEntraceLocation = 24109,\n            Objective_Uranite = 42060,\n            Spawnpoint_Pirates = 54418,\n            Spawnpoint_Pirates2 = 16780919,\n            Detector_Pirates = 54416,\n\n            Deterctor_shakes = 60632,\n\n            Objective_Vendor = 24276,\n\n            Detector_Dialogue_Base = 16779420,\n            Detector_Dialogue_Mining = 16779422,\n        }\n\n        public override void ValidateIds()\n        {\n            foreach (var value in Enum.GetValues(typeof(EntityID)))\n            {\n                MyScriptWrapper.GetEntity((uint)((value as EntityID?).Value));\n            }\n            foreach (var value in m_eruptionDetectors)\n            {\n                MyScriptWrapper.GetEntity(value);\n            }\n            foreach (var value in m_meteorDetectors)\n            {\n                MyScriptWrapper.GetEntity(value);\n            }\n        }\n\n        private List<uint> m_eruptionDetectors = new List<uint>\n        {\n            60634, 60781, 60783, 60814, 60816, 60818, 60820, 60822, 60981, 60987, 60989, 60991, 60993, 60995, 60997, 60999, 61001, 61003, 61005, 61007, 61009, 61011, 61013, 61015, 61017,\n            16777422, 16777424, 16777426, 16777428, 16777434, 16777436, 16777438, 16777458, 16777460, 16777462, 16777464, 16777466, 16777468, 16777470, 16777472, 16777474, 16777476, 16777478,\n            16777480, 16777482, 16777484, 16777486, 16777488, 16777490, 16777492, 16777494, 16777496, 16777498, 16777500, 16777502, 16777504, 16777506, 16777508, 16777510, 16777512\n        };\n\n        private List<uint> m_meteorDetectors = new List<uint>\n        {\n            16777754, 16777756, 16777758, 16777760, 16777762, 16777764, 16777766, 16777768, 16777770, 16777772, 16777774, 16777800, 16777802, 16777804, 16777806, 16777808, 16777810, 16777812, 16777814, 16777816\n        };\n\n        private MyTimerActionDelegate m_subShakeAction;\n        private MyTimerActionDelegate m_farExplosionAction;\n        private bool m_riftShake;\n        private int m_miningquotes;\n\n        readonly float URANITE_TO_OBTAIN = 2.0f;\n\n        #endregion\n\n        public MyRiftMission()\n        {\n            m_subShakeAction = new MyTimerActionDelegate(SubShake);\n            m_farExplosionAction = new MyTimerActionDelegate(FarExplosion);\n            \n            ID = MyMissionID.RIFT; /* ID must be added to MyMissions.cs */\n            DebugName = new StringBuilder(\"14-Rift\");\n            Name = Localization.MyTextsWrapperEnum.RIFT;\n            Description = Localization.MyTextsWrapperEnum.RIFT_Description;\n            Flags = MyMissionFlags.Story;\n            AchievementName = MySteamAchievementNames.Mission21_Rift;\n\n            MyMwcVector3Int baseSector = new MyMwcVector3Int(-56700, 0, 4276);\n\n            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation);\n\n            RequiredMissions = new MyMissionID[] { MyMissionID.JUNKYARD_EAC_AMBUSH };\n            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.RIFT_GOTO_30 };\n            RequiredActors = new MyActorEnum[] { MyActorEnum.MADELYN, MyActorEnum.TARJA, MyActorEnum.VALENTIN };\n\n            m_objectives = new List<MyObjective>();\n\n            MySpawnpointSmartWaves spawnPointSmartWaves = new MySpawnpointSmartWaves(null, null, 2);\n\n            var intro = new MyObjectiveDialog(\n                MyMissionID.RIFT_INTRO,\n                null,\n                this,\n                new MyMissionID[] { },\n                MyDialogueEnum.RIFT_0050_INTRO\n            )\n            {\n                SaveOnSuccess = true,\n            };\n            m_objectives.Add(intro);\n\n\n            //Cannot see dialogues over inv.screen\n            /*\n            var getSupplies = new MyObjectiveEnterInventroy(\n                new StringBuilder(\"Get supplies for the journey to the Rift\"),\n                MyMissionID.RIFT_GOTO_GETSUPPLIES1,\n                new StringBuilder(\"Buy whatever useful.\"),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.RIFT_INTRO },\n                new List<uint>() {  (uint)EntityID.Objective_Vendor }\n            )\n            {\n                SaveOnSuccess = true,\n            };*/\n            var getSupplies = new MyObjective(\n                (MyTextsWrapperEnum.RIFT_GOTO_GETSUPPLIES1_Name),\n                MyMissionID.RIFT_GOTO_GETSUPPLIES1,\n                (MyTextsWrapperEnum.RIFT_GOTO_GETSUPPLIES1_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.RIFT_INTRO },\n                new MyMissionLocation(baseSector, (uint)EntityID.Objective_Vendor),\n                radiusOverride: 30\n            )\n            {\n                SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudSupplies\n            };\n            getSupplies.OnMissionSuccess += GetSuppliesSubmissionSuccess;\n            getSupplies.OnMissionLoaded += GetSuppliesSubmissionLoaded;\n            m_objectives.Add(getSupplies);\n\n            var reachTheRiftSubmission = new MyObjective(\n                (MyTextsWrapperEnum.RIFT_GOTO_10_Name),\n                MyMissionID.RIFT_GOTO_10,\n                (MyTextsWrapperEnum.RIFT_GOTO_10_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.RIFT_GOTO_GETSUPPLIES1 },\n                new MyMissionLocation(baseSector, (uint)EntityID.Objective_RiftEntraceLocation)\n            )\n            {\n                SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudRift\n            };\n            reachTheRiftSubmission.OnMissionLoaded += ReachTheRiftSubmissionLoaded;\n            reachTheRiftSubmission.OnMissionSuccess += ReachTheRiftSubmissionSuccess;\n            m_objectives.Add(reachTheRiftSubmission);\n\n            var getOreSubmission = new MyHarvestOreSubmission(\n                (MyTextsWrapperEnum.RIFT_URANITE_Name),\n                MyMissionID.RIFT_URANITE,\n                (MyTextsWrapperEnum.RIFT_URANITE_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.RIFT_GOTO_10 },\n                new MyMissionLocation(baseSector, (uint)EntityID.Objective_Uranite),\n                MyMwcObjectBuilder_Ore_TypesEnum.URANITE,\n                URANITE_TO_OBTAIN,\n                successDialogId: MyDialogueEnum.RIFT_1000_MINING_DONE\n            )\n            {\n                SaveOnSuccess = true\n            };\n            getOreSubmission.Components.Add(spawnPointSmartWaves);\n            getOreSubmission.OnMissionLoaded += GetOreSubmissionLoaded;\n            getOreSubmission.OnMissionSuccess += GetOreSubmissionSuccess;\n            m_objectives.Add(getOreSubmission);\n\n            var returnToMothershipSubmission = new MyObjective(\n                (MyTextsWrapperEnum.RIFT_GOTO_30_Name),\n                MyMissionID.RIFT_GOTO_30,\n                (MyTextsWrapperEnum.RIFT_GOTO_30_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.RIFT_URANITE },\n                new MyMissionLocation(baseSector, MyMissionLocation.MADELYN_HANGAR),\n                radiusOverride: MyMissionLocation.MADELYN_HANGAR_RADIUS\n            )\n            {\n                SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudMadelynsSapho\n            };\n            returnToMothershipSubmission.OnMissionLoaded += ReturnSubmissionLoaded;\n            returnToMothershipSubmission.OnMissionSuccess += ReturnSubmissionSuccess;\n            m_objectives.Add(returnToMothershipSubmission);\n\n            //m_subShakeAction = SubShake;\n            //m_farExplosionAction = FarExplosion;\n        }\n\n        public override void Load()\n        {\n            base.Load();\n\n            MissionTimer.RegisterTimerAction(MyMwcUtils.GetRandomInt(40000, 50000), SolarwindAction, false);\n            MissionTimer.RegisterTimerAction(MyMwcUtils.GetRandomInt(4000, 5000), MeteorAction, false);\n\n            m_riftShake = false;\n            MyEntityDetector shakeDetector = MyScriptWrapper.GetDetector((uint)EntityID.Deterctor_shakes);\n            shakeDetector.OnEntityEnter += RiftReached;\n            shakeDetector.OnEntityLeave += RiftLeft;\n            shakeDetector.On();\n\n            foreach (var detector in m_eruptionDetectors)\n            {\n                MyEntityDetector eruptionDetector = MyScriptWrapper.GetDetector(detector);\n                eruptionDetector.OnEntityEnter += Erupt;\n                eruptionDetector.On();\n            }\n            /*\n            foreach (var detector in m_meteorDetectors)\n            {\n                MyEntityDetector MeteorDetector = MyScriptWrapper.GetDetector(detector);\n                MeteorDetector.OnEntityEnter += Meteorite;\n                MeteorDetector.On();\n            }\n            */\n\n            MySmallShipBot ravenGirl = (MySmallShipBot)MyScriptWrapper.GetEntity(\"RavenGirl\");\n            MySmallShipBot ravenGuy = (MySmallShipBot)MyScriptWrapper.GetEntity(\"RavenGuy\");\n\n            MyScriptWrapper.StopFollow(ravenGirl);\n            MyScriptWrapper.StopFollow(ravenGuy);\n\n            ravenGirl.LookTarget = MySession.PlayerShip;\n            ravenGuy.LookTarget = MySession.PlayerShip;\n\n            MyAudio.MusicAllowed = false; //to forbid action music caused by bot fight\n            MissionTimer.RegisterTimerAction(1000, PlayActionMusic, false);\n        }\n\n        private void PlayActionMusic()\n        {\n            MyAudio.MusicAllowed = true;\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.CalmAtmosphere, 100, \"KA03\");\n        }\n\n        private void SolarwindAction()\n        {\n            MyScriptWrapper.EnableGlobalEvent(World.Global.MyGlobalEventEnum.SunWind, true);\n            MissionTimer.RegisterTimerAction(MyMwcUtils.GetRandomInt(5000, 40000), SolarwindAction, false);\n        }\n\n        private void MeteorAction()\n        {\n            MyScriptWrapper.EnableGlobalEvent(World.Global.MyGlobalEventEnum.MeteorWind, true);\n            MissionTimer.RegisterTimerAction(MyMwcUtils.GetRandomInt(2000, 4000), MeteorAction, false);\n\n            //MyScriptWrapper.GenerateMeteor(100, MySession.PlayerShip.GetPosition() + MySession.PlayerShip.WorldMatrix.Forward * 500, MyMwcVoxelMaterialsEnum.Lava_01, MySession.PlayerShip.WorldMatrix.Forward * -1000, MyParticleEffectsIDEnum.MeteorTrail_FireAndSmoke);\n        }\n\n\n        private void GetSuppliesSubmissionLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.PlayDialogue(Audio.Dialogues.MyDialogueEnum.RIFT_0100_INTRO2);\n\n            MyEntityDetector DialogueDetector_Base = MyScriptWrapper.GetDetector((uint)EntityID.Detector_Dialogue_Base);\n            DialogueDetector_Base.OnEntityEnter += DialogueBase;\n            DialogueDetector_Base.On();\n        }\n\n        private void GetSuppliesSubmissionSuccess(MyMissionBase sender)\n        {\n            \n        }\n\n        private void ReachTheRiftSubmissionLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.PlayDialogue(Audio.Dialogues.MyDialogueEnum.RIFT_0400_SHOPPINGDONE);\n            MissionTimer.RegisterTimerAction(20000, PlayRiftMusic, false);\n        }\n\n        private void PlayRiftMusic()\n        {\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.Special, 100, \"KA04loop\");\n        }\n\n\n        private void ReachTheRiftSubmissionSuccess(MyMissionBase sender)\n        {\n            \n        }\n\n        private void GetOreSubmissionLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.PlayDialogue(Audio.Dialogues.MyDialogueEnum.RIFT_0500_ENTERINGRIFT);\n\n            MyEntityDetector DialogueDetector_Mining = MyScriptWrapper.GetDetector((uint)EntityID.Detector_Dialogue_Mining);\n            DialogueDetector_Mining.OnEntityEnter += DialogueMining;\n            DialogueDetector_Mining.On();\n            m_miningquotes = 1;\n        }\n\n        private void GetOreSubmissionSuccess(MyMissionBase sender)\n        {\n            MyScriptWrapper.EntityInventoryItemAmountChanged -= OreAmountChanged;\n\n            // remove the mined plutonium to prevend stupid players from breaking the game\n            MyScriptWrapper.AddNotification(MyScriptWrapper.CreateNotification(MyTextsWrapperEnum.PlutoniumStored, MyGuiManager.GetFontMinerWarsBlue(), 5000, new object[] { URANITE_TO_OBTAIN }));\n            MyScriptWrapper.RemoveInventoryItemAmount(MyScriptWrapper.GetPlayerInventory(), MyMwcObjectBuilderTypeEnum.Ore, (int)MyMwcObjectBuilder_Ore_TypesEnum.URANITE, URANITE_TO_OBTAIN);\n        }\n\n        private void ReturnSubmissionLoaded(MyMissionBase sender)\n        {\n        }\n\n        private void ReturnSubmissionSuccess(MyMissionBase sender)\n        {\n        }\n\n        private void RiftReached(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (entity == MySession.PlayerShip)\n            {\n                //MyAudio.ApplyTransition(MyMusicTransitionEnum.Mystery);\n\n                // start shakes\n                m_riftShake = true;\n                MissionTimer.RegisterTimerAction(MyMwcUtils.GetRandomInt(4000, 12000), m_farExplosionAction, false);\n            }\n        }\n\n        private void RiftLeft(MyEntityDetector sender, MyEntity entity)\n        {\n            if (entity == MySession.PlayerShip)\n            {\n                // stop shakes\n                m_riftShake = false;\n\n                MyScriptWrapper.PlayDialogue(Audio.Dialogues.MyDialogueEnum.RIFT_1100_LEAVING);\n            }\n        }\n\n        private void DialogueBase(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (entity == MySession.PlayerShip)\n            {\n                MyScriptWrapper.PlayDialogue(Audio.Dialogues.MyDialogueEnum.RIFT_0200_STATION);\n                MissionTimer.RegisterTimerAction(24000, DialogueBaseCont, false);\n                sender.Off();\n            }\n        }\n\n        private void DialogueBaseCont()\n        {\n            MyScriptWrapper.PlayDialogue(Audio.Dialogues.MyDialogueEnum.RIFT_0300_TOURISTS);\n        }\n\n        private void DialogueMining(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (entity == MySession.PlayerShip)\n            {\n                MyScriptWrapper.PlayDialogue(Audio.Dialogues.MyDialogueEnum.RIFT_0600_MINING);\n                MyScriptWrapper.EntityInventoryItemAmountChanged += OreAmountChanged;\n                sender.Off();\n            }\n        }\n\n        void OreAmountChanged(MyEntity entity, MyInventory inventory, MyInventoryItem item, float number)\n        {\n            if (MyScriptWrapper.IsPlayerShip(entity))\n            {\n                if (item.ObjectBuilderType == MyMwcObjectBuilderTypeEnum.Ore)\n                {\n                    if (!MyScriptWrapper.IsMissionFinished(MyMissionID.RIFT_URANITE))\n                    {\n                        if (item.ObjectBuilderId == (int)MyMwcObjectBuilder_Ore_TypesEnum.URANITE)\n                        {\n                            float ammount = MyScriptWrapper.GetInventoryItemAmount(MyScriptWrapper.GetPlayerInventory(), MyMwcObjectBuilderTypeEnum.Ore, (int)MyMwcObjectBuilder_Ore_TypesEnum.URANITE);\n                            if (ammount > 0.5f && m_miningquotes == 1)\n                            {\n                                MyScriptWrapper.PlayDialogue(MyDialogueEnum.RIFT_0700_MINING_COLOR);\n                                m_miningquotes++;\n                            }\n                            else if (ammount > 1.0f && m_miningquotes == 2)\n                            {\n                                MyScriptWrapper.PlayDialogue(MyDialogueEnum.RIFT_0800_MINING_TUNE);\n                                m_miningquotes++;\n                            }\n                            else if (ammount > 1.5f && m_miningquotes == 3)\n                            {\n                                MyScriptWrapper.PlayDialogue(MyDialogueEnum.RIFT_0900_MINING_TUNE_2);\n                                m_miningquotes++;\n                            }\n                        }\n                    }\n                }\n            }\n        }\n\n        private void Erupt(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (entity == MySession.PlayerShip)\n            {\n                MyScriptWrapper.AddExplosion(sender, MyExplosionTypeEnum.BOMB_EXPLOSION, MyMwcUtils.GetRandomFloat(40f, 60f), MyMwcUtils.GetRandomFloat(25f, 40f), true);\n                MyScriptWrapper.IncreaseHeadShake(MyMwcUtils.GetRandomFloat(5f, 15f));\n                sender.Off();\n            }\n        }\n        /*\n        private void Meteorite(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (entity == MySession.PlayerShip)\n            {\n                MyScriptWrapper.GenerateMeteor(100, MySession.PlayerShip.GetPosition() + MySession.PlayerShip.WorldMatrix.Forward * 500, MyMwcVoxelMaterialsEnum.Lava_01, MySession.PlayerShip.WorldMatrix.Forward * -1000, MyParticleEffectsIDEnum.MeteorTrail_FireAndSmoke);\n                sender.Off();\n            }\n        }\n        */\n        private void SubShake()\n        {\n            MyScriptWrapper.IncreaseHeadShake(MyMwcUtils.GetRandomInt(3, 4));\n        }\n\n        private void FarExplosion()\n        {\n            if (m_riftShake)\n            {\n                // MainShake\n                MyScriptWrapper.IncreaseHeadShake(MyMwcUtils.GetRandomInt(7, 10));\n                MyScriptWrapper.AddAudioImpShipQuake();\n\n                // Register sub shakes\n                MissionTimer.RegisterTimerAction(MyMwcUtils.GetRandomInt(200, 400), m_subShakeAction, false);\n                MissionTimer.RegisterTimerAction(MyMwcUtils.GetRandomInt(600, 800), m_subShakeAction, false);\n                MissionTimer.RegisterTimerAction(MyMwcUtils.GetRandomInt(800, 1200), m_subShakeAction, false);\n                MissionTimer.RegisterTimerAction(MyMwcUtils.GetRandomInt(1200, 1400), m_subShakeAction, false);\n\n                // Register next far explosion\n                MissionTimer.RegisterTimerAction(MyMwcUtils.GetRandomInt(4000, 12000), m_farExplosionAction, false);\n            }\n        }\n\n        public override void Update()\n        {\n            base.Update();\n\n            if (MyMwcUtils.GetRandomFloat(0, 1) > 0.97f)\n            {\n                Vector3 position = MySession.PlayerShip.GetPosition() + MyMwcUtils.GetRandomFloat(0, 10) * MySession.PlayerShip.WorldMatrix.Forward * 500 + Vector3.Up * 2000 + MyMwcUtils.GetRandomFloat(0, 1) * MySession.PlayerShip.WorldMatrix.Right * 4000 - MyMwcUtils.GetRandomFloat(0, 1) * MySession.PlayerShip.WorldMatrix.Right * 4000;\n                MyScriptWrapper.GenerateMeteor(MyMwcUtils.GetRandomFloat(0.0001f, 2) * 100, position, MyMwcVoxelMaterialsEnum.Lava_01, -800 * Vector3.Up * MyMwcUtils.GetRandomFloat(0.7f, 1.0f), MyParticleEffectsIDEnum.MeteorTrail_FireAndSmoke);\n            }\n        }\n\n        public override void Unload()\n        {\n            base.Unload();\n            MyAudio.MusicAllowed = true;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/SinglePlayer/MyRimeBlueprintsMission.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Managers.EntityManager.Entities.EntityDetector;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Managers.EntityManager.Entities;\nusing System.Diagnostics;\nusing Microsoft.Xna.Framework;\nusing MinerWars.AppCode.Game.Managers.EntityManager.Entities.WayPoints;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\n\n\nnamespace MinerWars.AppCode.Game.Missions.SinglePlayer\n{\n    class MyRimeBlueprintsMission : MyMission\n    {\n        private enum EntityID // list of IDs used in script\n        {\n            StartLocation = 9691,\n            EntranceL = 9688,\n            EntranceR = 15904,\n            HUB = 8572,\n            Exit = 9690,\n            Return = 40235,\n            ReturnToMothership = 43179,\n        }\n\n        public override void ValidateIds() // checks if all IDs in enum are loaded correctly\n        {\n            foreach (var value in Enum.GetValues(typeof(EntityID)))\n            {\n                MyScriptWrapper.GetEntity((uint)((value as EntityID?).Value));\n            }\n        }\n\n        public MyObjective m_entranceL;\n        public MyObjective m_entranceR;\n        public MyObjective m_target;\n        public MyObjective m_flyExit;\n        public MyEntity m_hub;\n    \n\n        public MyRimeBlueprintsMission()\n        {\n            ID = MyMissionID.RIME_BLUEPRINTS; /* ID must be added to MyMissions.cs */\n            Name = new StringBuilder(\"11-Rime:Blueprints\"); // Name of mission\n            Description = new StringBuilder(\"Choose one of the entrances and sneak through the laboratory to steal the blueprints\\n\"); // Description of mission - do not forget to \\n at the end of each line\n            Flags = MyMissionFlags.Story;\n\n            MyMwcVector3Int baseSector = new MyMwcVector3Int(-1922856, 0, -2867519); // Story sector of the script - i.e. (-2465,0,6541)\n\n            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation); // Starting dummy point - must by typecasted to uint and referenced from EntityID enum\n\n            RequiredMissions = new MyMissionID[] { MyMissionID.RIME_CONVINCE }; // IDs of missions required to make this mission available\n            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.RIME_BLUEPRINTS_RETURN_TO_MOTHERSHIP };\n\n            m_objectives = new List<MyObjective>(); // Creating of list of submissions\n\n            // START OF REACH OBJECTIVE SUBMISSION DEFINITION\n          m_entranceL = new MyObjective( // One member of that list - its type defines the type of submission - MySubmission means fly to the dummypoint to success. Here it is var so you cannot call methods on it\n                new StringBuilder(\"Enter the quarter\"), // Name of the submission\n                MyMissionID.RIME_BLUEPRINTS_ENTRANCE1, // ID of the submission - must be added to MyMissions.cs\n                new StringBuilder(\"\"), // Description of the submission\n                null,\n                this,\n                new MyMissionID[] { }, // ID of submissions required to make this submission available - it is clear so this submission is the starting submission\n                new MyMissionLocation(baseSector, (uint)EntityID.EntranceL) // ID of dummy point of checkpoint\n            ) { SaveOnSuccess = false }; // False means do not save game in that checkpoint\n            m_objectives.Add(m_entranceL); // Adding this submission to the list of submissions of current mission\n            // END OF REACH OBJECTIVE SUBMISSION DEFINITION\n\n            // START OF REACH OBJECTIVE SUBMISSION DEFINITION\n            m_entranceR = new MyObjective( // One member of that list - its type defines the type of submission - MySubmission means fly to the dummypoint to success. Here it is var so you cannot call methods on it\n                new StringBuilder(\"Entry the quarter with the drone\"), // Name of the submission\n                MyMissionID.RIME_BLUEPRINTS_ENTRANCE2, // ID of the submission - must be added to MyMissions.cs\n                new StringBuilder(\"\"), // Description of the submission\n                null,\n                this,\n                new MyMissionID[] { }, // ID of submissions required to make this submission available - it is clear so this submission is the starting submission\n                new MyMissionLocation(baseSector, (uint)EntityID.EntranceR) // ID of dummy point of checkpoint\n            ) { SaveOnSuccess = false }; // False means do not save game in that checkpoint\n            m_objectives.Add(m_entranceR); // Adding this submission to the list of submissions of current mission\n            // END OF REACH OBJECTIVE SUBMISSION DEFINITION\n\n            // START OF REACH OBJECTIVE SUBMISSION DEFINITION\n            m_target =  new MyObjectiveOptionalRequirements( \n                new StringBuilder(\"Get the blueprints\"),\n                MyMissionID.RIME_BLUEPRINTS_TARGET,\n                new StringBuilder(\"Sneak through the base and get the blueprints!\\n\"),\n                null,\n                this,\n                new MyMissionID[] { },\n                null,\n                new MyMissionID[] { MyMissionID.RIME_BLUEPRINTS_ENTRANCE1, MyMissionID.RIME_BLUEPRINTS_ENTRANCE2 },\n                1,\n                new List<uint>() {(uint)EntityID.HUB }\n                ) { SaveOnSuccess = false }; // False means do not save game in that checkpoint\n            m_objectives.Add(m_target);\n            // END OF REACH OBJECTIVE SUBMISSION DEFINITION\n\n            m_flyExit = new MyObjective( // One member of that list - its type defines the type of submission - MySubmission means fly to the dummypoint to success. Here it is var so you cannot call methods on it\n                new StringBuilder(\"Leave the laboratory\"), // Name of the submission\n                MyMissionID.RIME_BLUEPRINTS_EXIT, // ID of the submission - must be added to MyMissions.cs\n                new StringBuilder(\"Use the emergency exit.\\n\"), // Description of the submission\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.RIME_BLUEPRINTS_TARGET }, // ID of submissions required to make this submission available - it is clear so this submission is the starting submission\n                new MyMissionLocation(baseSector, (uint)EntityID.Exit) // ID of dummy point of checkpoint\n                ) { SaveOnSuccess = false }; // False means do not save game in that checkpoint\n            m_objectives.Add(m_flyExit);\n\n           var returnToFrancis = new MyObjective( // One member of that list - its type defines the type of submission - MySubmission means fly to the dummypoint to success. Here it is var so you cannot call methods on it\n                new StringBuilder(\"Get back to Francis\"), // Name of the submission\n                MyMissionID.RIME_BLUEPRINTS_RETURN_TO_FRANCIS, // ID of the submission - must be added to MyMissions.cs\n                new StringBuilder(\"Bring the blueprints back to Francis Reef\\n\"), // Description of the submission\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.RIME_BLUEPRINTS_EXIT }, // ID of submissions required to make this submission available - it is clear so this submission is the starting submission\n                new MyMissionLocation(baseSector, (uint)EntityID.Return) // ID of dummy point of checkpoint\n                ) { SaveOnSuccess = false }; // False means do not save game in that checkpoint\n            m_objectives.Add(returnToFrancis);\n\n            var returnToMothership = new MyObjective( // One member of that list - its type defines the type of submission - MySubmission means fly to the dummypoint to success. Here it is var so you cannot call methods on it\n               new StringBuilder(\"Return to your mothership\"), // Name of the submission\n               MyMissionID.RIME_BLUEPRINTS_RETURN_TO_MOTHERSHIP, // ID of the submission - must be added to MyMissions.cs\n               new StringBuilder(\"\"), // Description of the submission\n               null,\n               this,\n               new MyMissionID[] { MyMissionID.RIME_BLUEPRINTS_RETURN_TO_FRANCIS }, // ID of submissions required to make this submission available - it is clear so this submission is the starting submission\n               new MyMissionLocation(baseSector, (uint)EntityID.ReturnToMothership) // ID of dummy point of checkpoint\n               ) { SaveOnSuccess = false }; // False means do not save game in that checkpoint\n            m_objectives.Add(returnToMothership);\n        }\n\n        public override void Load() // Code in that block will be called on the load of the sector\n        {\n            base.Load();\n            m_entranceR.OnMissionSuccess += entranceR_OnMissionSuccess;\n            m_entranceL.OnMissionSuccess += entranceL_OnMissionSuccess;\n            m_flyExit.OnMissionSuccess += flyExit_OnMissionSuccess;\n            //MyScriptWrapper.SetPlayerFaction(MyMwcObjectBuilder_FactionEnum.Rainiers);\n            MyScriptWrapper.EntityHacked += MyScriptWrapper_EntityHacked;\n            m_hub = MyScriptWrapper.GetEntity((uint)EntityID.HUB);\n            MySession.PlayerShip.Inventory.AddInventoryItem(MyMwcObjectBuilderTypeEnum.SmallShip_HackingTool, (int)MyMwcObjectBuilder_SmallShip_HackingTool_TypesEnum.Level_2, 1f, true);\n            MySession.PlayerShip.Inventory.AddInventoryItem(MyMwcObjectBuilderTypeEnum.Drone, (int)MyMwcObjectBuilder_Drone_TypesEnum.DroneUS, 1f, true);\n            MyAudio.ApplyTransition(MyMusicTransitionEnum.CalmAtmosphere); // Sets music group to be played in the sector - no matter if the mission is running or not\n\n        }\n\n         void MyScriptWrapper_EntityHacked(MyEntity entity)\n        {\n            if (entity == m_hub)\n            {\n                m_target.Success();\n                MyScriptWrapper.EntityHacked -= MyScriptWrapper_EntityHacked;\n            }\n         }\n             \n             \n        void flyExit_OnMissionSuccess(MyMissionBase sender)\n        {\n            MyScriptWrapper.SetFactionRelation(MyMwcObjectBuilder_FactionEnum.Rainiers, MyMwcObjectBuilder_FactionEnum.Omnicorp, 100);\n            sender.OnMissionSuccess -= flyExit_OnMissionSuccess;\n        }\n\n        void entranceR_OnMissionSuccess(MyMissionBase sender)\n        {\n            if (m_entranceL.IsAvailable())\n            {\n                m_entranceL.Success();\n            }\n            MyScriptWrapper.SetFactionRelation(MyMwcObjectBuilder_FactionEnum.Rainiers, MyMwcObjectBuilder_FactionEnum.Omnicorp, -100);\n            sender.OnMissionSuccess -= entranceR_OnMissionSuccess;\n        }\n\n        void entranceL_OnMissionSuccess(MyMissionBase sender)\n        {\n            if (m_entranceR.IsAvailable())\n            {\n                m_entranceR.Success();\n            }\n            MyScriptWrapper.SetFactionRelation(MyMwcObjectBuilder_FactionEnum.Rainiers, MyMwcObjectBuilder_FactionEnum.Omnicorp, -100);\n            sender.OnMissionSuccess -= entranceL_OnMissionSuccess;\n        }\n\n        public override void Update() //Code in that block will be called in each frame\n        {\n            base.Update();\n\n        }\n\n    }\n\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/SinglePlayer/MyRimeConvinceMission.cs",
    "content": "﻿#region Using\n\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Audio.Dialogues;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.HUD;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Entities;\nusing System.Diagnostics;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Entities.WayPoints;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.Resources;\n\n#endregion\n\n\nnamespace MinerWars.AppCode.Game.Missions.SinglePlayer\n{\n    class MyRimeConvinceMission : MyMission\n    {\n        #region Enums\n\n        private enum EntityID // list of IDs used in script\n        {\n            StartLocation = 40233,\n            //FrancisReached = 40234,\n            Madelyn = 43179,\n            FrancisReef = 47152,\n            Barkeeper = 47167,\n            FlyToDummy = 47180,\n            //LookAtDummy = 47181,\n            FactoryFound = 48143,\n            FlyToVessel = 62,\n            DetectorVessel = 135,\n            SpawnContact = 47165,\n            WaypointStart = 47183,\n            WaypointFollow1 = 16777586,\n            WaypointFollow2 = 16777642,\n            WaypointFollow3 = 16777704,\n            SpawnpointClient1 = 1,\n            SpawnpointClient2 = 2,\n            SpawnpointBouncer = 48,\n            SpawnpointFactory = 61,\n            SpawnpointGuardL = 63,\n            SpawnpointGuardR = 64,\n            WaypointGuardL = 133,\n            WaypointGuardR = 121\n        }\n\n        private List<uint> m_factorySpawns = new List<uint>()\n                                                   {\n                                                       39164,\n                                                       39163,\n                                                       39162,\n                                                       39161,\n                                                       39166,\n                                                       39165,\n                                                       16777724,\n                                                       16777723,\n                                                       16777726,\n                                                       16777727,\n                                                       16777728,\n                                                   };\n\n\n        #endregion\n\n        private List<uint> m_boxes = new List<uint>() { 70, 72, 74, 76, 78, 103, 104, 105 };\n        private List<uint> m_plantBoxes = new List<uint>() { 107, 108 };\n        private List<uint> m_doors = new List<uint>() { 10064, 10063 };\n        private MyMeetObjective m_01MeetReef;\n        private MyObjective m_waitForTheMoment;\n        private MyObjectiveDialog m_02TalkToReef;\n        private MySmallShipBot m_ravenguyBot;\n        private MySmallShipBot m_ravengirlBot;\n        private MySmallShipBot m_marcus;\n        private MyMeetObjective m_03MeetBarkeeper;\n        private MyObjectiveDialog m_04TalkToBarKeeper;\n        private MyObjective m_05FlyToDuplex;\n        private MyObjective m_06watchSuspects;\n        private MyObjectiveFollowBot m_07followContact;\n        private MySmallShipBot m_reef;\n        private MySmallShipBot m_barkeeper;\n        private MyEntityDetector m_vesselDetector;\n        private bool m_guardLReached;\n        private bool m_guardRReached;\n        private MyMultipleUseObjective m_08CollectIllegalCargo;\n        private MyMultipleUseObjective m_09plantcargo;\n        private MyMeetObjective m_10MeetReef;\n        private MyObjectiveDialog m_11TalkToReef;\n        private MyObjective m_12getBackmadelyn;\n        \n\n        public override void ValidateIds() // checks if all IDs in enum are loaded correctly\n        {\n            foreach (var value in Enum.GetValues(typeof(EntityID)))\n            {\n                MyScriptWrapper.GetEntity((uint)((value as EntityID?).Value));\n            }\n\n            foreach (var value in m_factorySpawns)\n            {\n                MyScriptWrapper.GetEntity(value);\n            }\n        }\n\n        public MyRimeConvinceMission()\n        {\n            ID = MyMissionID.RIME_CONVINCE; /* ID must be added to MyMissions.cs */\n            DebugName = new StringBuilder(\"10-Rime\"); // Name of mission\n            Name = MyTextsWrapperEnum.RIME_CONVINCE;\n            Description = MyTextsWrapperEnum.RIME_CONVINCE_Description;\n            Flags = MyMissionFlags.Story;\n\n            MyMwcVector3Int baseSector = new MyMwcVector3Int(-1922856, 0, -2867519); // Story sector of the script - i.e. (-2465,0,6541)\n\n            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation); // Starting dummy point - must by typecasted to uint and referenced from EntityID enum\n\n            RequiredMissions = new MyMissionID[] { MyMissionID.FORT_VALIANT_C }; // IDs of missions required to make this mission available\n            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.RIME_CONVINCE_TALK_TO_FRANCIS };\n\n            m_objectives = new List<MyObjective>(); // Creating of list of submissions\n            RequiredActors = new MyActorEnum[] { MyActorEnum.MADELYN, MyActorEnum.MARCUS, MyActorEnum.TARJA, MyActorEnum.VALENTIN };\n\n            var introduction = new MyObjectiveDialog(\n                MyMissionID.RIME_CONVINCE_INTRODUCTION,\n                null,\n                this,\n                new MyMissionID[] { },\n                dialogId: MyDialogueEnum.RIME_0100_INTRODUCTION\n                ) { SaveOnSuccess = true };\n            m_objectives.Add(introduction);   \n\n            m_01MeetReef = new MyMeetObjective(\n                (MyTextsWrapperEnum.RIME_CONVINCE_GET_FRANCIS_REEF_Name),\n                MyMissionID.RIME_CONVINCE_GET_FRANCIS_REEF,\n                (MyTextsWrapperEnum.RIME_CONVINCE_GET_FRANCIS_REEF_Description),\n                this,\n                new MyMissionID[] { MyMissionID.RIME_CONVINCE_INTRODUCTION},\n                null,\n                (uint)EntityID.FrancisReef,\n                distanceToTalk: 300,\n                slowdown: 0.25f,\n                startDialogueId: MyDialogueEnum.RIME_0150_HEAD_TO_REEF,\n                successDialogueId: MyDialogueEnum.RIME_0200_REEF_REACHED\n                ) { SaveOnSuccess = false, FollowMe = false };\n            m_objectives.Add(m_01MeetReef);\n            m_01MeetReef.OnMissionLoaded += M01MeetReefOnOnMissionLoaded;\n\n            m_02TalkToReef = new MyObjectiveDialog(\n                MyTextsWrapperEnum.Null,\n                MyMissionID.RIME_CONVINCE_TALK_FRANCIS_REEF,\n                MyTextsWrapperEnum.Null,\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.RIME_CONVINCE_GET_FRANCIS_REEF },\n                dialogId: MyDialogueEnum.RIME_0300_TALK_TO_REEF\n                ) { SaveOnSuccess = true };\n            m_objectives.Add(m_02TalkToReef);\n            m_02TalkToReef.OnMissionLoaded += M02TalkToReefOnOnMissionLoaded;\n            m_02TalkToReef.OnMissionSuccess += M02TalkToReefOnOnMissionSuccess;\n\n            m_05FlyToDuplex = new MyObjective(\n                (MyTextsWrapperEnum.RIME_CONVINCE_GO_TO_DUPLEX_Name),\n                MyMissionID.RIME_CONVINCE_GO_TO_DUPLEX,\n                (MyTextsWrapperEnum.RIME_CONVINCE_GO_TO_DUPLEX_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.RIME_CONVINCE_TALK_FRANCIS_REEF },\n                new MyMissionLocation(baseSector, (uint)EntityID.FlyToDummy),\n                //startDialogId: MyDialogueEnum.RIME_0400_ON_THE_WAY,\n                successDialogId: MyDialogueEnum.RIME_0500_LISTEN_TO_SUSPICIOUS\n                ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudDuplex };\n            m_objectives.Add(m_05FlyToDuplex);\n\n            MyObjectiveDialog clientsTalk = new MyObjectiveDialog(\n            MyMissionID.RIME_CONVINCE_CLIENTS_TALK,\n            null,\n            this,\n            new MyMissionID[] { MyMissionID.RIME_CONVINCE_GO_TO_DUPLEX },\n            dialogId: MyDialogueEnum.RIME_0600_CLIENTS_TALK);\n            clientsTalk.OnMissionLoaded += delegate\n            {\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnpointClient1);\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnpointClient2);\n            };\n            m_objectives.Add(clientsTalk);\n\n            MyObjectiveDialog bouncerTalk = new MyObjectiveDialog(\n            MyMissionID.RIME_CONVINCE_DUPLEX_BOUNCER,\n            null,\n            this,\n            new MyMissionID[] { MyMissionID.RIME_CONVINCE_CLIENTS_TALK },\n            dialogId: MyDialogueEnum.RIME_0700_DUPLEX_BOUNCER);\n            bouncerTalk.OnMissionLoaded += delegate\n            {\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnpointBouncer);\n            };\n            bouncerTalk.OnMissionSuccess += delegate\n            {\n                MySmallShipBot bouncer = MyScriptWrapper.TryGetEntity(\"Bouncer\") as MySmallShipBot;\n                if (bouncer != null)\n                {\n                    bouncer.LookTarget = null;\n                    m_barkeeper.LookTarget = null;\n                    bouncer.SetWaypointPath(\"Client1\");\n                    bouncer.PatrolMode = MyPatrolMode.ONE_WAY;\n                    bouncer.Patrol();\n                }\n            };\n            m_objectives.Add(bouncerTalk);\n\n            var returnBack = new MyObjective(\n                (MyTextsWrapperEnum.RIME_CONVINCE_RETURN_TO_POSITION_Name),\n                MyMissionID.RIME_CONVINCE_RETURN_TO_POSITION,\n                (MyTextsWrapperEnum.RIME_CONVINCE_RETURN_TO_POSITION_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.RIME_CONVINCE_DUPLEX_BOUNCER },\n                new MyMissionLocation(baseSector, (uint)EntityID.FlyToDummy)) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.Nothing };\n            returnBack.OnMissionSuccess += ReturnBackOnMissionSuccess;\n            m_objectives.Add(returnBack);\n\n            MyObjectiveDialog contactAppears = new MyObjectiveDialog(\n            MyTextsWrapperEnum.RIME_CONVINCE_CONTACT_APPEARS_Name,\n            MyMissionID.RIME_CONVINCE_CONTACT_APPEARS,\n            MyTextsWrapperEnum.RIME_CONVINCE_CONTACT_APPEARS_Description,\n            null,\n            this,\n            new MyMissionID[] { MyMissionID.RIME_CONVINCE_RETURN_TO_POSITION },\n            dialogId: MyDialogueEnum.RIME_0800_CONTACT_APPEARS);\n            contactAppears.OnMissionSuccess += delegate\n            {\n                MySmallShipBot mitchel = (MySmallShipBot)MyScriptWrapper.GetEntity(\"Mitchel\");\n                mitchel.SetWaypointPath(\"Follow1\");\n                mitchel.PatrolMode = MyPatrolMode.ONE_WAY;\n                mitchel.Patrol();\n                m_07followContact.TargetId = mitchel.EntityId.Value.NumericValue;\n            };\n            m_objectives.Add(contactAppears);\n\n            m_07followContact = new MyObjectiveFollowBot(\n                (MyTextsWrapperEnum.RIME_CONVINCE_FOLLOW_CONTACT_Name),\n                MyMissionID.RIME_CONVINCE_FOLLOW_CONTACT,\n                (MyTextsWrapperEnum.RIME_CONVINCE_FOLLOW_CONTACT_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.RIME_CONVINCE_CONTACT_APPEARS },\n                null,\n                (uint)EntityID.FactoryFound,\n                MyDialogueEnum.RIME_0900_FOLLOW_INSTRUCTION)\n                                    {\n                                        FarDialog = MyDialogueEnum.RIME_2100_HE_IS_GONE,\n                                        ShortDialog = MyDialogueEnum.RIME_2200_HE_SPOTTED_US,\n                                        SaveOnSuccess = true,\n                                        HudName = MyTextsWrapperEnum.HudFollow\n                                    };\n            m_objectives.Add(m_07followContact);\n\n            var factoryFoundDialogue = new MyObjectiveDialog(\n                (MyTextsWrapperEnum.RIME_CONVINCE_FACTORY_FOUND_DIALOGUE_Name),\n                MyMissionID.RIME_CONVINCE_FACTORY_FOUND_DIALOGUE,\n                (MyTextsWrapperEnum.RIME_CONVINCE_FACTORY_FOUND_DIALOGUE_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.RIME_CONVINCE_FOLLOW_CONTACT },\n                dialogId: MyDialogueEnum.RIME_1000_FACTORY_FOUND\n                ) { SaveOnSuccess = true };\n            m_objectives.Add(factoryFoundDialogue);\n      \n            var destroyFactoryBots = new MyObjectiveDestroy(\n                (MyTextsWrapperEnum.RIME_CONVINCE_DESTROY_FACTORY_BOTS_Name),\n                MyMissionID.RIME_CONVINCE_DESTROY_FACTORY_BOTS,\n                (MyTextsWrapperEnum.RIME_CONVINCE_DESTROY_FACTORY_BOTS_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.RIME_CONVINCE_FACTORY_FOUND_DIALOGUE },\n                null,\n                m_factorySpawns\n                //startDialogID: MyDialogueEnum.RIME_1100_WE_GOT_YOUR_BACK\n            ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.Nothing };\n            destroyFactoryBots.OnMissionLoaded += DestroyFactoryBotsLoaded;\n            m_objectives.Add(destroyFactoryBots);\n\n            m_08CollectIllegalCargo = new MyMultipleUseObjective\n               ((MyTextsWrapperEnum.RIME_CONVINCE_COLLECT_CARGO_Name),\n                 MyMissionID.RIME_CONVINCE_COLLECT_CARGO,\n                 (MyTextsWrapperEnum.RIME_CONVINCE_COLLECT_CARGO_Description),\n                 null,\n                 this,\n                 new MyMissionID[] { MyMissionID.RIME_CONVINCE_DESTROY_FACTORY_BOTS },\n                 MyTextsWrapperEnum.PressToCollectCargo,\n                 MyTextsWrapperEnum.IllegalCargo,\n                 MyTextsWrapperEnum.TakingInProgress,\n                 2000,\n                 m_boxes,\n                 MyUseObjectiveType.Taking\n                ) { RadiusOverride = 70f, SaveOnSuccess = true, StartDialogId = MyDialogueEnum.RIME_1100_GRAB_THE_ALCOHOL };\n            m_objectives.Add(m_08CollectIllegalCargo);\n            m_08CollectIllegalCargo.OnMissionLoaded += M08CollectIllegalCargoOnOnMissionLoaded;\n            m_08CollectIllegalCargo.OnObjectUsedSucces += M08CollectIllegalCargoOnOnObjectUsedSucces;\n            m_08CollectIllegalCargo.OnMissionSuccess += M08CollectIllegalCargoOnOnMissionSuccess;\n\n            var cargoCollectedDialogue = new MyObjectiveDialog(\n                (MyTextsWrapperEnum.RIME_CONVINCE_CARGO_COLLECTED_DIALOG_Name),\n                MyMissionID.RIME_CONVINCE_CARGO_COLLECTED_DIALOG,\n                (MyTextsWrapperEnum.RIME_CONVINCE_CARGO_COLLECTED_DIALOG_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.RIME_CONVINCE_COLLECT_CARGO },\n                dialogId: MyDialogueEnum.RIME_1200_GET_TO_THE_VESSEL\n                ) {SaveOnSuccess = true};\n            m_objectives.Add(cargoCollectedDialogue);\n\n            var flyToVessel = new MyObjective(\n                 (MyTextsWrapperEnum.RIME_CONVINCE_FLY_TO_VESSEL_Name),\n                MyMissionID.RIME_CONVINCE_FLY_TO_VESSEL,\n                (MyTextsWrapperEnum.RIME_CONVINCE_FLY_TO_VESSEL_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.RIME_CONVINCE_CARGO_COLLECTED_DIALOG },\n                new MyMissionLocation(baseSector, (uint)EntityID.FlyToVessel),\n                startDialogId: MyDialogueEnum.RIME_1300_ON_THE_WAY_TO_VESSEL\n                ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudRaynoldsVessel };\n            m_objectives.Add(flyToVessel);\n            flyToVessel.OnMissionLoaded += FlyToVesselLoaded;\n\n            m_waitForTheMoment = new MyObjective(\n                 (MyTextsWrapperEnum.RIME_CONVINCE_WAIT_FOR_THE_MOMENT_Name),\n                MyMissionID.RIME_CONVINCE_WAIT_FOR_THE_MOMENT,\n                (MyTextsWrapperEnum.RIME_CONVINCE_WAIT_FOR_THE_MOMENT_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.RIME_CONVINCE_FLY_TO_VESSEL },\n                null,\n                startDialogId: MyDialogueEnum.RIME_1500_WAIT_FOR_THE_SIGNAL,\n                successDialogId: MyDialogueEnum.RIME_1600_THIS_IS_OUR_CHANCE)\n                { SaveOnSuccess = true };\n            m_objectives.Add(m_waitForTheMoment);\n            m_waitForTheMoment.OnMissionLoaded += WaitForTheMomentLoaded;    \n            m_waitForTheMoment.OnMissionUpdate += WaitForTheMomentUpdate;\n            m_waitForTheMoment.OnMissionCleanUp += new MissionHandler(m_waitForTheMoment_OnMissionCleanUp);\n\n            m_09plantcargo = new MyMultipleUseObjective\n                ((MyTextsWrapperEnum.RIME_CONVINCE_PLANT_CARGO_Name),\n                 MyMissionID.RIME_CONVINCE_PLANT_CARGO,\n                (MyTextsWrapperEnum.RIME_CONVINCE_PLANT_CARGO_Description),\n                 null,\n                 this,\n                 new MyMissionID[] { MyMissionID.RIME_CONVINCE_WAIT_FOR_THE_MOMENT },\n                 MyTextsWrapperEnum.HoldToPlantCargo,\n                 MyTextsWrapperEnum.IllegalCargo,\n                 MyTextsWrapperEnum.PlantingInProgress,\n                 2000,\n                 m_plantBoxes,\n                 MyUseObjectiveType.Taking,\n                 startDialogId: MyDialogueEnum.RIME_1650_PLACE\n                 ) { RadiusOverride = 60f, SaveOnSuccess = true};\n            m_objectives.Add(m_09plantcargo);\n            m_09plantcargo.OnMissionLoaded += M09PlantcargoOnOnMissionLoaded;\n            m_09plantcargo.OnMissionSuccess += M09PlantcargoOnOnMissionSuccess;\n            m_09plantcargo.OnObjectUsedSucces += M09PlantcargoOnOnObjectUsedSucces;\n\n            var getOutOfTheVessel = new MyObjective(\n                  (MyTextsWrapperEnum.RIME_CONVINCE_GET_OUT_OF_THE_VESSEL_Name),\n                MyMissionID.RIME_CONVINCE_GET_OUT_OF_THE_VESSEL,\n                (MyTextsWrapperEnum.RIME_CONVINCE_GET_OUT_OF_THE_VESSEL_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.RIME_CONVINCE_PLANT_CARGO },\n                new MyMissionLocation(baseSector, (uint)EntityID.FlyToVessel)\n                ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.Nothing };\n            m_objectives.Add(getOutOfTheVessel);\n            getOutOfTheVessel.OnMissionLoaded += GetOutOfTheVesselLoaded;\n            getOutOfTheVessel.OnMissionSuccess += GetOutOfTheVesselSuccess;\n                          /*\n            var cargoPlantedObjectiveDialogue = new MyObjectiveDialog(\n                new StringBuilder(\"Listen to the conversation\"),\n                MyMissionID.RIME_CONVINCE_CARGO_PLANTED_OBJECTIVE_DIALOGUE,\n                new StringBuilder(\"\"),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.RIME_CONVINCE_GET_OUT_OF_THE_VESSEL },\n                dialogId: MyDialogueEnum.RIME_1800_CARGO_PLANTED\n                ) { SaveOnSuccess = true };\n            m_objectives.Add(cargoPlantedObjectiveDialogue);\n                           */\n            m_10MeetReef = new MyMeetObjective(\n                (MyTextsWrapperEnum.RIME_CONVINCE_GO_BACK_TO_FRANCIS_Name),\n                MyMissionID.RIME_CONVINCE_GO_BACK_TO_FRANCIS,\n                (MyTextsWrapperEnum.RIME_CONVINCE_GO_BACK_TO_FRANCIS_Description),\n                this,\n                new MyMissionID[] { MyMissionID.RIME_CONVINCE_GET_OUT_OF_THE_VESSEL },\n                null,\n                (uint)EntityID.FrancisReef,\n                100,\n                0.25f,\n                null,\n                startDialogueId: MyDialogueEnum.RIME_1800_CARGO_PLANTED\n                ) { SaveOnSuccess = false, FollowMe = false };\n            m_objectives.Add(m_10MeetReef);\n            //m_01MeetReef.OnMissionLoaded += M01MeetReefOnOnMissionLoaded;\n\n            m_11TalkToReef = new MyObjectiveDialog(\n                MyMissionID.RIME_CONVINCE_TALK_TO_FRANCIS,\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.RIME_CONVINCE_GO_BACK_TO_FRANCIS },\n                dialogId: MyDialogueEnum.RIME_2000_REEF_TALK\n                ) { SaveOnSuccess = false };\n            m_objectives.Add(m_11TalkToReef);\n            m_11TalkToReef.OnMissionLoaded += M11TalkToReefOnOnMissionLoaded;\n            m_11TalkToReef.OnMissionSuccess += M11TalkToReefOnOnMissionSuccess;\n        }\n\n        void m_waitForTheMoment_OnMissionCleanUp(MyMissionBase sender)\n        {\n            m_vesselDetector.OnEntityEnter -= VesselDetectorEntered;\n            m_vesselDetector.Off();\n        }\n\n        private void M11TalkToReefOnOnMissionSuccess(MyMissionBase sender)\n        {\n            m_barkeeper.LookTarget = null;\n        }\n\n        private void M02TalkToReefOnOnMissionSuccess(MyMissionBase sender)\n        {\n            m_reef.LookTarget = null;\n        }\n\n\n        private void M02TalkToReefOnOnMissionLoaded(MyMissionBase sender)\n        {\n            m_reef.LookTarget = MySession.PlayerShip;\n        }\n\n        private void DestroyFactoryBotsLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.ActivateSpawnPoints(m_factorySpawns);\n\n            MySmallShipBot mitchel = (MySmallShipBot)MyScriptWrapper.GetEntity(\"Mitchel\");\n            MyScriptWrapper.ChangeFaction(mitchel, MyMwcObjectBuilder_FactionEnum.Slavers);\n            MyScriptWrapper.SetEntityDestructible(mitchel, true);\n\n            //Support for objective skip\n            MySmallShipBot smuggler2 = (MySmallShipBot)MyScriptWrapper.TryGetEntity(\"Smuggler\");\n            if (smuggler2 == null)\n            {\n                Follow1Reached();\n                MyEntity spawnPoint = MyScriptWrapper.GetEntity(((uint)EntityID.SpawnpointFactory));\n                (spawnPoint as MySpawnPoint).SpawnShip(0);\n            }\n\n            MySmallShipBot smuggler = (MySmallShipBot)MyScriptWrapper.GetEntity(\"Smuggler\");\n            MyScriptWrapper.ChangeFaction(smuggler, MyMwcObjectBuilder_FactionEnum.Slavers);\n            MyScriptWrapper.SetEntityDestructible(smuggler, true);\n\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnpointGuardL);\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnpointGuardR);\n        }\n\n        private void FlyToVesselLoaded(MyMissionBase sender)\n        {        \n        }\n\n        private void VesselDetectorEntered(MyEntity sender, MyEntity bot, int meetCriterias)\n        {\n            if (bot == MySession.PlayerShip)\n            {\n                GuardsCatchedPlayer();\n            }\n        }\n\n        private void WaitForTheMomentLoaded(MyMissionBase sender)\n        {\n            m_guardLReached = false;\n            m_guardRReached = false;\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.StealthAction, 3, \"MM01\");\n\n            MySmallShipBot vesselGuardL = (MySmallShipBot)MyScriptWrapper.GetEntity(\"GuardL\");\n            MySmallShipBot vesselGuardR = (MySmallShipBot)MyScriptWrapper.GetEntity(\"GuardR\");\n            vesselGuardL.SetWaypointPath(\"GUARDLL\");\n            vesselGuardR.SetWaypointPath(\"GUARDRL\");\n            vesselGuardL.PatrolMode = MyPatrolMode.ONE_WAY;\n            vesselGuardR.PatrolMode = MyPatrolMode.ONE_WAY;\n            vesselGuardR.Patrol();\n            vesselGuardL.Patrol();\n            MyScriptWrapper.SetEntityDestructible(vesselGuardR, false);\n            MyScriptWrapper.SetEntityDestructible(vesselGuardL, false);\n\n            m_vesselDetector = MyScriptWrapper.GetDetector(MyScriptWrapper.GetEntity((uint)EntityID.DetectorVessel));\n            m_vesselDetector.On();\n            m_vesselDetector.OnEntityEnter += VesselDetectorEntered;\n\n        }\n\n        private void WaitForTheMomentUpdate(MyMissionBase sender)\n        {\n            if (m_guardLReached && m_guardRReached)\n            {\n                m_waitForTheMoment.Success();\n            }\n        }\n\n        private void ReturnBackOnMissionSuccess(MyMissionBase sender)\n        {\n            MyScriptWrapper.SetEntitiesEnabled(m_doors, true);\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnContact);\n        }\n\n        private void GetOutOfTheVesselLoaded(MyMissionBase sender)\n        {\n            sender.MissionTimer.RegisterTimerAction(20000, GuardsCatchedPlayer, false, \"\", false);\n        }\n\n        private void GetOutOfTheVesselSuccess(MyMissionBase sender)\n        {\n            sender.MissionTimer.ClearActions();\n        }\n\n        private void MissedWindow()\n        {\n            MySmallShipBot vesselGuardL = (MySmallShipBot)MyScriptWrapper.GetEntity(\"GuardL\");\n            MySmallShipBot vesselGuardR = (MySmallShipBot)MyScriptWrapper.GetEntity(\"GuardR\");\n            MyScriptWrapper.ChangeFaction(vesselGuardL, MyMwcObjectBuilder_FactionEnum.Slavers);\n            MyScriptWrapper.ChangeFaction(vesselGuardR, MyMwcObjectBuilder_FactionEnum.Slavers);\n            Fail(MyTextsWrapperEnum.Fail_MissedTimeWindow);\n        }\n\n        private void GuardsCatchedPlayer()\n        {\n            MySmallShipBot vesselGuardL = (MySmallShipBot)MyScriptWrapper.GetEntity(\"GuardL\");\n            MySmallShipBot vesselGuardR = (MySmallShipBot)MyScriptWrapper.GetEntity(\"GuardR\");\n            MyScriptWrapper.ChangeFaction(vesselGuardL, MyMwcObjectBuilder_FactionEnum.Slavers);\n            MyScriptWrapper.ChangeFaction(vesselGuardR, MyMwcObjectBuilder_FactionEnum.Slavers);\n            Fail(MyTextsWrapperEnum.Fail_CaughtByGuards);\n        }\n\n        private void M11TalkToReefOnOnMissionLoaded(MyMissionBase sender)\n        {\n            m_marcus.Follow(MySession.PlayerShip);\n            m_ravenguyBot.Follow(MySession.PlayerShip);\n            m_ravengirlBot.Follow(MySession.PlayerShip);\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.Victory, 3, \"KA02\");\n            m_reef.LookTarget = MySession.PlayerShip;\n        }\n\n        private void M09PlantcargoOnOnObjectUsedSucces(uint entityId)\n        {\n            MyScriptWrapper.Highlight(entityId, false, this);\n        }\n\n        private void M09PlantcargoOnOnMissionSuccess(MyMissionBase sender)\n        {\n            sender.MissionTimer.ClearActions();\n        }\n\n        private void M09PlantcargoOnOnMissionLoaded(MyMissionBase sender)\n        {\n            foreach (var box in m_plantBoxes)\n            {\n                MyScriptWrapper.Highlight(box, true, this);\n            }\n            sender.MissionTimer.RegisterTimerAction(25000, MissedWindow, false, \"\", false);\n        }\n\n        void HurryUp()\n        {\n            MyScriptWrapper.PlayDialogue(MyDialogueEnum.RIME_1700_HURRY_UP);\n        }\n\n        private void M08CollectIllegalCargoOnOnMissionSuccess(MyMissionBase sender)\n        {\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.Victory, 3, \"KA02\");\n        }\n        private void M08CollectIllegalCargoOnOnObjectUsedSucces(uint entityId)\n        {\n            MyScriptWrapper.Highlight(entityId, false, this);\n            MyScriptWrapper.HideEntity(MyScriptWrapper.GetEntity(entityId));\n        }\n\n        private void M08CollectIllegalCargoOnOnMissionLoaded(MyMissionBase sender)\n        {\n            foreach (var box in m_boxes)\n            {\n                MyScriptWrapper.Highlight(box, true, this);\n            }\n\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.LightFight, 3, \"KA08\");\n        }\n\n\n        private void MyScriptWrapperOnOnSpawnpointBotSpawned(MyEntity spawnPoint, MyEntity bot)\n        {\n            if (spawnPoint.EntityId.Value.NumericValue == (uint)EntityID.SpawnContact)\n            {\n                //  Debug.Assert(!m_07followContact.IsAvailable(), \"Bot spawned in bad mission\"); //Not needed anymore\n                MySmallShipBot mitchel = bot as MySmallShipBot;\n                mitchel.SpeedModifier = 0.7f;\n                mitchel.SetName(\"Mitchel\");\n                mitchel.DisplayName = MyTextsWrapper.Get(MyActorConstants.GetActorDisplayName(MyActorEnum.RIME_MITCHEL)).ToString();\n            }\n            if (spawnPoint.EntityId.Value.NumericValue == (uint)EntityID.SpawnpointClient1 || spawnPoint.EntityId.Value.NumericValue == (uint)EntityID.SpawnpointClient2)\n            {\n                bot.DisplayName = MyTextsWrapper.Get(MyActorConstants.GetActorDisplayName(MyActorEnum.RIME_CLIENT1)).ToString();\n                MySmallShipBot botship = bot as MySmallShipBot;\n                botship.SpeedModifier = 0.5f;\n            }\n            if (spawnPoint.EntityId.Value.NumericValue == (uint)EntityID.SpawnpointBouncer)\n            {\n                MySmallShipBot bouncer = bot as MySmallShipBot;\n                bot.DisplayName = MyTextsWrapper.Get(MyActorConstants.GetActorDisplayName(MyActorEnum.RIME_BOUNCER)).ToString();\n                bot.SetName(\"Bouncer\");\n                MyScriptWrapper.SetEntityDestructible(bot, false);\n                bouncer.LookTarget = m_barkeeper;\n                m_barkeeper.LookTarget = bouncer;\n\n            }\n            if (spawnPoint.EntityId.Value.NumericValue == (uint)EntityID.SpawnpointFactory)\n            {\n                bot.SetName(\"Smuggler\");\n                bot.DisplayName = MyTextsWrapper.Get(MyActorConstants.GetActorDisplayName(MyActorEnum.RIME_SMUGGLER)).ToString();\n                MyScriptWrapper.SetEntityDestructible(bot, false);\n                ((MySmallShipBot)bot).LookTarget = MyScriptWrapper.GetEntity(\"Mitchel\");\n            }\n            if (spawnPoint.EntityId.Value.NumericValue == (uint)EntityID.SpawnpointGuardL)\n            {\n                bot.SetName(\"GuardL\");\n                bot.DisplayName = MyTextsWrapper.Get(MyActorConstants.GetActorDisplayName(MyActorEnum.RIME_GUARD)).ToString();\n                MyScriptWrapper.SetEntityDestructible(bot, false);\n                ((MySmallShipBot)bot).SleepDistance = 10000;\n            }\n            if (spawnPoint.EntityId.Value.NumericValue == (uint)EntityID.SpawnpointGuardR)\n            {\n                bot.SetName(\"GuardR\");\n                bot.DisplayName = MyTextsWrapper.Get(MyActorConstants.GetActorDisplayName(MyActorEnum.RIME_GUARD)).ToString();\n                MyScriptWrapper.SetEntityDestructible(bot, false);\n                ((MySmallShipBot)bot).SleepDistance = 10000;\n            }\n        }\n\n        private void MyScriptWrapperOnBotReachedWaypoint(MyEntity bot, MyEntity waypoint)\n        {\n            if (m_07followContact.IsAvailable() && waypoint.EntityId.Value.NumericValue == (uint)EntityID.WaypointFollow1 && bot == MyScriptWrapper.GetEntity(\"Mitchel\"))\n            {\n                MissionTimer.RegisterTimerAction(5000, Follow1Reached, false);\n            }\n\n            MySmallShipBot vesselGuardL = (MySmallShipBot)MyScriptWrapper.TryGetEntity(\"GuardL\");\n            MySmallShipBot vesselGuardR = (MySmallShipBot)MyScriptWrapper.TryGetEntity(\"GuardR\");\n\n            if (m_waitForTheMoment.IsAvailable() && bot == vesselGuardL && waypoint.EntityId.Value.NumericValue == (uint)EntityID.WaypointGuardL)\n            {\n                m_guardLReached = true;             \n            }\n            if (m_waitForTheMoment.IsAvailable() && bot == vesselGuardR && waypoint.EntityId.Value.NumericValue == (uint)EntityID.WaypointGuardR)\n            {\n                m_guardRReached = true;\n            }\n        }\n\n        private void Follow1Reached()\n        {\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnpointFactory);\n            MySmallShipBot mitchel = (MySmallShipBot)MyScriptWrapper.GetEntity(\"Mitchel\");\n            mitchel.SetWaypointPath(\"Follow2\");\n            mitchel.PatrolMode = MyPatrolMode.ONE_WAY;\n            mitchel.Patrol();\n\n            MyScriptWrapper.SetEntityEnabled((uint)EntityID.FactoryFound, true);\n        }\n\n        private void M01MeetReefOnOnMissionLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.TensionBeforeAnAction, 0, \"KA01\");\n        }\n\n        public override void Load() // Code in that block will be called on the load of the sector\n        {\n            base.Load();\n\n            MyScriptWrapper.OnSpawnpointBotSpawned += MyScriptWrapperOnOnSpawnpointBotSpawned;\n            MyScriptWrapper.OnBotReachedWaypoint += MyScriptWrapperOnBotReachedWaypoint;\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.DesperateWithStress); // Sets music group to be played in the sector - no matter if the mission is running or not\n\n            m_ravenguyBot = MyScriptWrapper.GetEntity(\"RavenGuy\") as MySmallShipBot;\n            m_ravengirlBot = MyScriptWrapper.GetEntity(\"RavenGirl\") as MySmallShipBot;\n            m_marcus = MyScriptWrapper.GetEntity(\"Marcus\") as MySmallShipBot;\n            m_reef = MyScriptWrapper.GetEntity((uint)EntityID.FrancisReef) as MySmallShipBot;\n            m_barkeeper = MyScriptWrapper.GetEntity((uint)EntityID.Barkeeper) as MySmallShipBot;\n\n            MyScriptWrapper.SetEntityEnabled((uint)EntityID.FactoryFound, false);\n        }\n\n\n        public override void Unload()\n        {\n            base.Unload();\n            MyScriptWrapper.OnSpawnpointBotSpawned -= MyScriptWrapperOnOnSpawnpointBotSpawned;\n            MyScriptWrapper.OnBotReachedWaypoint -= MyScriptWrapperOnBotReachedWaypoint;\n\n            m_ravenguyBot = null;\n            m_ravengirlBot = null;\n            m_marcus = null;\n            m_reef = null;\n            m_barkeeper = null;\n        }\n\n\n        public override void Update() //Code in that block will be called in each frame\n        {\n            base.Update();\n\n        }\n\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/SinglePlayer/MyRussianCapitalMission.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Entities;\nusing System.Diagnostics;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Entities.WayPoints;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Inventory;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.Game.World.Global;\n\n\nnamespace MinerWars.AppCode.Game.Missions.SinglePlayer\n{\n    class MyRussianCapitalMission : MyMissionSandboxBase\n    {\n        private enum EntityID // list of IDs used in script\n        {\n            StartLocation = 86,\n         \n        }\n\n        public override void ValidateIds() // checks if all IDs in enum are loaded correctly\n        {\n            foreach (var value in Enum.GetValues(typeof(EntityID)))\n            {\n                MyScriptWrapper.GetEntity((uint)((value as EntityID?).Value));\n            }\n        }\n\n\n\n        public MyRussianCapitalMission()\n        {\n            ID = MyMissionID.RUSSIAN_CAPITAL; /* ID must be added to MyMissions.cs */\n            DebugName = new StringBuilder(\"New Moscow - Russian capital\"); // Name of mission\n            Name = MyTextsWrapperEnum.RUSSIAN_CAPITAL;\n            Description = MyTextsWrapperEnum.RUSSIAN_CAPITAL_Description;\n            MyMwcVector3Int baseSector = new MyMwcVector3Int(-4839140, 0, -1490646); // Story sector of the script - i.e. (-2465,0,6541)\n            RequiredMissions = new MyMissionID[] { };\n            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation); // Starting dummy point - must by typecasted to uint and referenced from EntityID enum\n            RequiredActors = new MyActorEnum[] { MyActorEnum.MADELYN };\n           \n\n            m_objectives = new List<MyObjective>(); // Creating of list of submissions\n\n\n        }\n\n\n        private float m_oldRelation;\n\n\n        public override void Load() // Code in that block will be called on the load of the sector\n        {\n            base.Load();\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.HeavyFight, 3);\n            m_oldRelation = MyFactions.GetFactionsStatus(MyMwcObjectBuilder_FactionEnum.Rainiers, MyMwcObjectBuilder_FactionEnum.Russian);\n            MyScriptWrapper.SetFactionRelation(MyMwcObjectBuilder_FactionEnum.Rainiers, MyMwcObjectBuilder_FactionEnum.Russian, MyFactions.RELATION_WORST);\n        }\n\n\n        public override void Unload()\n        {\n            base.Unload();\n\n            MyScriptWrapper.SetFactionRelation(MyMwcObjectBuilder_FactionEnum.Rainiers, MyMwcObjectBuilder_FactionEnum.Russian, m_oldRelation);\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/SinglePlayer/MyRussianTransmitterMission.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Entities;\nusing System.Diagnostics;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Entities.WayPoints;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Inventory;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.AppCode.Game.Audio.Dialogues;\n\n\nnamespace MinerWars.AppCode.Game.Missions.SinglePlayer\n{\n    class MyRussianTransmitterMission : MyMission\n    {\n        private enum EntityID // list of IDs used in script\n        {\n            StartLocation = 2835,\n            OutpostSideEntrance = 2832,\n            EnterTheBase = 7789,\n            SabotageTurrets_1 = 2836,\n            ReachWarehouse = 93853,\n            StealMilitarySupply = 93862,\n            FightRussianCommando = 93864,\n            BackToTransmitter = 93865,\n            SabotageTurrets_3 = 7081,\n            FindMainRoomEntrance = 94327,\n            PlaceDeviceOnTransmitter = 2837,\n            EscapeTheOutpost_1 = 7082,\n            EscapeTheOutpost_2 = 6169,\n            VolodiaCommandoSpawnPoint = 94842,\n            VolodiaCommandoSpawnPoint2 = 124834,\n            CommandoSpawnPoint = 94839,\n            Mothership = 95432,\n            Hub1 = 6499,\n            Hub2 = 7078,\n            VolodiaDummy = 97258,\n            CargoBox1 = 93859,\n            MothershipEntity = 95433,\n            Transmitter1 = 2500,\n            Transmitter2 = 2532,\n            Cargospawn = 123223,\n            Transmitter1spawn = 123224,\n\n            ShipVolodia = 107656,\n\n            Particle1 = 16779409,\n            Particle2 = 16779410,\n            Particle3 = 16779411,\n            Particle4 = 16779438,\n\n            Hub3 = 7085,\n            Door1 = 272,\n            Door2 = 273,\n            Door3 = 274,\n            Door4 = 275,\n\n            DummyInsideBase = 15,\n            DummyNearFrequencyHub = 57,\n            DummyNearVolodia = 61,\n            DummyNearCargo = 59,\n            DummyOutsideTransmitter = 60,\n        }\n\n        public override void ValidateIds() // checks if all IDs in enum are loaded correctly\n        {\n            foreach (var value in Enum.GetValues(typeof(EntityID)))\n            {\n                MyScriptWrapper.GetEntity((uint)(((EntityID?) value).Value));\n            }\n        }\n\n        private MyObjective m_fightRussianCommando;\n        private MyObjective m_tradeWithVolodia;\n        private MyObjectiveDialog m_strangerContact;\n\n        public MyRussianTransmitterMission()\n        {\n            ID = MyMissionID.RUSSIAN_TRANSMITTER; /* ID must be added to MyMissions.cs */\n            DebugName = new StringBuilder(\"17-RUF transmitter\");\n            Name = MyTextsWrapperEnum.RUSSIAN_TRANSMITTER;\n            Description = MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_Description;\n            Flags = MyMissionFlags.Story;\n\n            MyMwcVector3Int baseSector = new MyMwcVector3Int(-4988032, 0, -865747); // Story sector of the script - i.e. (-2465,0,6541)\n\n            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation); // Starting dummy point - must by typecasted to uint and referenced from EntityID enum\n\n            RequiredMissions = new MyMissionID[] { MyMissionID.CHINESE_TRANSMITTER }; // IDs of missions required to make this mission available\n            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.RUSSIAN_TRANSMITTER_BACK_TO_MADELYN };\n            RequiredActors = new MyActorEnum[] { MyActorEnum.MADELYN, MyActorEnum.TARJA, MyActorEnum.VALENTIN };\n\n            #region Objectives\n\n            m_objectives = new List<MyObjective>(); // Creating of list of submissions\n            \n            var introDialogue = new MyObjectiveDialog(\n                MyMissionID.RUSSIAN_TRANSMITTER_INTRO_DIALOGUE,\n                null,\n                this,\n                new MyMissionID[] { },\n                MyDialogueEnum.RUSSIAN_TRANSMITTER_0100_INTRO);\n            m_objectives.Add(introDialogue);\n\n            // START OF REACH OBJECTIVE SUBMISSION DEFINITION\n            var reachSideEntrance = new MyObjective( // One member of that list - its type defines the type of submission - MySubmission means fly to the dummypoint to success. Here it is var so you cannot call methods on it\n                MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_REACH_SIDE_ENTRANCE, // Name of the submission\n                MyMissionID.RUSSIAN_TRANSMITTER_REACH_SIDE_ENTRANCE, // ID of the submission - must be added to MyMissions.cs\n                MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_REACH_SIDE_ENTRANCE_Description, // Description of the submission\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.RUSSIAN_TRANSMITTER_INTRO_DIALOGUE }, // ID of submissions required to make this submission available - it is clear so this submission is the starting submission\n                new MyMissionLocation(baseSector, (uint)EntityID.OutpostSideEntrance) // ID of dummy point of checkpoint\n            ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudEntrance }; // False means do not save game in that checkpoint\n            m_objectives.Add(reachSideEntrance); // Adding this submission to the list of submissions of current mission\n            // END OF REACH OBJECTIVE SUBMISSION DEFINITION\n\n\n            var enterTheBase = new MyObjective(\n                  MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_ENTER_THE_BASE,\n                  MyMissionID.RUSSIAN_TRANSMITTER_ENTER_THE_BASE,\n                  MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_ENTER_THE_BASE_Description,\n                  null,\n                  this,\n                  new MyMissionID[] { MyMissionID.RUSSIAN_TRANSMITTER_REACH_SIDE_ENTRANCE },\n                  new MyMissionLocation(baseSector, (uint)EntityID.EnterTheBase)\n              ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudEntrance };\n            enterTheBase.OnMissionLoaded += new MissionHandler(enterTheBase_OnMissionLoaded);\n            enterTheBase.OnMissionSuccess += new MissionHandler(enterTheBase_OnMissionSuccess);\n            m_objectives.Add(enterTheBase);\n\n\n            var findFrequency = new MyUseObjective(\n                  MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_FIND_FREQUENCY,\n                  MyMissionID.RUSSIAN_TRANSMITTER_FIND_FREQUENCY,\n                  MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_FIND_FREQUENCY_Description,\n                  null,\n                  this,\n                  new MyMissionID[] { MyMissionID.RUSSIAN_TRANSMITTER_ENTER_THE_BASE },\n                  new MyMissionLocation(baseSector, (uint)EntityID.SabotageTurrets_1),\n                  MyTextsWrapperEnum.PressToDownloadData,\n                  MyTextsWrapperEnum.SecurityControlHUB,\n                  MyTextsWrapperEnum.DownloadingData,\n                  10000,\n                  MyUseObjectiveType.Hacking\n              ) { SaveOnSuccess = false };\n            findFrequency.OnMissionLoaded += new MissionHandler(findFrequency_OnMissionLoaded);\n            findFrequency.OnMissionSuccess += FindFrequency_Success;\n            m_objectives.Add(findFrequency);\n\n            m_strangerContact = new MyObjectiveDialog(\n                MyTextsWrapperEnum.Null,\n                MyMissionID.RUSSIAN_TRANSMITTER_STRANGER_CONTACT,\n                MyTextsWrapperEnum.Null,\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.RUSSIAN_TRANSMITTER_FIND_FREQUENCY },\n                MyDialogueEnum.RUSSIAN_TRANSMITTER_0500_0600_HACKPROBLEM_STRANGERCALLS\n            );\n            m_objectives.Add(m_strangerContact);\n\n            var meetStranger = new MyObjective(\n                 MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_MEET_STRANGER,\n                 MyMissionID.RUSSIAN_TRANSMITTER_MEET_STRANGER,\n                 MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_MEET_STRANGER_Description,\n                 null,\n                 this,\n                 new MyMissionID[] { MyMissionID.RUSSIAN_TRANSMITTER_STRANGER_CONTACT },\n                 new MyMissionLocation(baseSector, (uint)EntityID.ShipVolodia),\n                 radiusOverride: 90f\n             ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudStranger };\n            meetStranger.OnMissionLoaded += MeetStranger_Loaded;\n            meetStranger.OnMissionSuccess += MeetStranger_Success;\n            m_objectives.Add(meetStranger);\n\n\n\n            var reachWarehouse = new MyObjective(\n                MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_REACH_WAREHOUSE,\n               MyMissionID.RUSSIAN_TRANSMITTER_REACH_WAREHOUSE,\n               MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_REACH_WAREHOUSE_Description,\n               null,\n               this,\n               new MyMissionID[] { MyMissionID.RUSSIAN_TRANSMITTER_MEET_STRANGER },\n               new MyMissionLocation(baseSector, (uint)EntityID.ReachWarehouse)\n            ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudWarehouse };\n            reachWarehouse.OnMissionLoaded += new MissionHandler(ReachWarehouse_Loaded);\n            m_objectives.Add(reachWarehouse);\n\n\n            var stealMilitarySupply = new MyUseObjective(\n                MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_STEAL_MILITARY_SUPPLY,\n                MyMissionID.RUSSIAN_TRANSMITTER_STEAL_MILITARY_SUPPLY,\n                MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_STEAL_MILITARY_SUPPLY_Description,\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.RUSSIAN_TRANSMITTER_REACH_WAREHOUSE },\n                new MyMissionLocation(baseSector, (uint)EntityID.StealMilitarySupply),\n                MyTextsWrapperEnum.PressToTakeCargo,\n                MyTextsWrapperEnum.CargoBox,\n                MyTextsWrapperEnum.TakingInProgress,\n                1000,\n                MyUseObjectiveType.Activating\n            ) { SaveOnSuccess = false };\n            stealMilitarySupply.OnMissionSuccess += new MissionHandler(StealMilitarySupply_Success);\n            m_objectives.Add(stealMilitarySupply);\n\n\n            m_tradeWithVolodia = new MyObjective(\n               MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_TRADE_WITH_VOLODIA,\n               MyMissionID.RUSSIAN_TRANSMITTER_TRADE_WITH_VOLODIA,\n               MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_TRADE_WITH_VOLODIA_Description,\n               null,\n               this,\n               new MyMissionID[] { MyMissionID.RUSSIAN_TRANSMITTER_STEAL_MILITARY_SUPPLY },\n               new MyMissionLocation(baseSector, (uint)EntityID.ShipVolodia),\n               radiusOverride: 90\n            ) { SaveOnSuccess = true, SuccessDialogId = MyDialogueEnum.RUSSIAN_TRANSMITTER_1000_VOLODIA_FOUND, HudName = MyTextsWrapperEnum.Volodia };\n            m_tradeWithVolodia.OnMissionSuccess += TradeWithVolodia_Success;\n            m_objectives.Add(m_tradeWithVolodia);\n\n\n            m_fightRussianCommando = new MyObjectiveDestroy(\n                MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_FIGHT_RUSSIAN_COMMANDO,\n               MyMissionID.RUSSIAN_TRANSMITTER_FIGHT_RUSSIAN_COMMANDO,\n               MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_FIGHT_RUSSIAN_COMMANDO_Description,\n               null,\n               this,\n               new MyMissionID[] { MyMissionID.RUSSIAN_TRANSMITTER_TRADE_WITH_VOLODIA },\n               //new List<uint> { (uint)EntityID.MothershipEntity },\n               new List<uint> { },\n               new List<uint> { (uint)EntityID.CommandoSpawnPoint },\n               false\n            ) { SaveOnSuccess = false, SuccessDialogId = MyDialogueEnum.RUSSIAN_TRANSMITTER_1400_RETREAT, HudName = MyTextsWrapperEnum.Nothing };\n            m_fightRussianCommando.OnMissionLoaded += RussianCommandoLoaded;\n            m_fightRussianCommando.OnMissionSuccess += new MissionHandler(FightRussianCommando_Success);\n            m_objectives.Add(m_fightRussianCommando);\n\n\n            var backToTransmitter = new MyObjective(\n                    MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_BACK_TO_TRANSMITTER,\n                   MyMissionID.RUSSIAN_TRANSMITTER_BACK_TO_TRANSMITTER,\n                   MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_BACK_TO_TRANSMITTER_Description,\n                   null,\n                   this,\n                   new MyMissionID[] { MyMissionID.RUSSIAN_TRANSMITTER_FIGHT_RUSSIAN_COMMANDO }, // prerekvizita - OPRAVIT na survive!!!\n                   new MyMissionLocation(baseSector, (uint)EntityID.BackToTransmitter)\n               ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudTransmitter };\n            backToTransmitter.OnMissionLoaded += new MissionHandler(BackToTransmitter_Loaded);\n            m_objectives.Add(backToTransmitter);\n\n\n            var decryptFrequency = new MyUseObjective(\n                  MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_DECRYPT_FREQUENCY,\n                  MyMissionID.RUSSIAN_TRANSMITTER_DECRYPT_FREQUENCY,\n                  MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_DECRYPT_FREQUENCY_Description,\n                  null,\n                  this,\n                  new MyMissionID[] { MyMissionID.RUSSIAN_TRANSMITTER_BACK_TO_TRANSMITTER },\n                  new MyMissionLocation(baseSector, (uint)EntityID.SabotageTurrets_1),\n                  MyTextsWrapperEnum.PressToHack,\n                  MyTextsWrapperEnum.SecurityControlHUB,\n                  MyTextsWrapperEnum.HackingProgress,\n                  5000,\n                  MyUseObjectiveType.Hacking\n              ) { SaveOnSuccess = false, SuccessDialogId = MyDialogueEnum.RUSSIAN_TRANSMITTER_1600_ITSWORKING };\n            m_objectives.Add(decryptFrequency);\n\n\n            var uploadData = new MyUseObjective(\n                MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_UPLOAD_DATA,\n                 MyMissionID.RUSSIAN_TRANSMITTER_UPLOAD_DATA,\n                 MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_UPLOAD_DATA_Description,\n                 null,\n                 this,\n                 new MyMissionID[] { MyMissionID.RUSSIAN_TRANSMITTER_DECRYPT_FREQUENCY },\n                 new MyMissionLocation(baseSector, (uint)EntityID.SabotageTurrets_3),\n                 MyTextsWrapperEnum.PressToHack,\n                 MyTextsWrapperEnum.SecurityControlHUB,\n                 MyTextsWrapperEnum.HackingProgress,\n                 5000\n             ) { SaveOnSuccess = false, SuccessDialogId = MyDialogueEnum.RUSSIAN_TRANSMITTER_1700_UPLOADINGSIGNAL };\n            m_objectives.Add(uploadData);\n\n\n            var findMainRoomEntrance = new MyObjective(\n                 MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_FIND_MAIN_ROOM_ENTRANCE,\n                 MyMissionID.RUSSIAN_TRANSMITTER_FIND_MAIN_ROOM_ENTRANCE,\n                 MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_FIND_MAIN_ROOM_ENTRANCE_Description,\n                 null,\n                 this,\n                 new MyMissionID[] { MyMissionID.RUSSIAN_TRANSMITTER_UPLOAD_DATA },\n                 new MyMissionLocation(baseSector, (uint)EntityID.FindMainRoomEntrance)\n             ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudEntrance };\n            findMainRoomEntrance.OnMissionLoaded += new MissionHandler(findMainRoomEntrance_Loaded);\n            m_objectives.Add(findMainRoomEntrance);\n\n\n            var placeDeviceOnTransmitter = new MyUseObjective(\n                MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_PLACE_DEVICE_ON_TRANSMITTER,\n                MyMissionID.RUSSIAN_TRANSMITTER_PLACE_DEVICE_ON_TRANSMITTER,\n                MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_PLACE_DEVICE_ON_TRANSMITTER_Description,\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.RUSSIAN_TRANSMITTER_FIND_MAIN_ROOM_ENTRANCE },\n                new MyMissionLocation(baseSector, (uint)EntityID.PlaceDeviceOnTransmitter),\n                MyTextsWrapperEnum.PressToPlaceDevice,\n                MyTextsWrapperEnum.Transmitter,\n                MyTextsWrapperEnum.PlacementInProgress,\n                10000,\n                MyUseObjectiveType.Building\n              ) { SaveOnSuccess = false };\n            placeDeviceOnTransmitter.OnMissionSuccess += new MissionHandler(PlaceDeviceOnTransmitter_Success);\n            m_objectives.Add(placeDeviceOnTransmitter);\n\n\n            var openDoors = new MyObjectiveEnablePrefabs(\n              MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_OPEN_DOORS,\n              MyMissionID.RUSSIAN_TRANSMITTER_OPEN_DOORS,\n              MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_OPEN_DOORS_Description,\n              null,\n              this,\n              new MyMissionID[] { MyMissionID.RUSSIAN_TRANSMITTER_PLACE_DEVICE_ON_TRANSMITTER },\n              null,\n              new List<uint> { (uint)EntityID.Hub3 },\n              new List<uint> { (uint)EntityID.Door1, (uint)EntityID.Door2, (uint)EntityID.Door3, (uint)EntityID.Door4, }\n            ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudHub };\n            openDoors.OnMissionSuccess += new MissionHandler(OpenDoors_Success);\n            m_objectives.Add(openDoors);\n\n\n            var backToMadelyn = new MyObjective(\n                MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_BACK_TO_MADELYN,\n                MyMissionID.RUSSIAN_TRANSMITTER_BACK_TO_MADELYN,\n                MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_BACK_TO_MADELYN_Description,\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.RUSSIAN_TRANSMITTER_OPEN_DOORS },\n                new MyMissionLocation(baseSector, MyMissionLocation.MADELYN_HANGAR),\n                radiusOverride: MyMissionLocation.MADELYN_HANGAR_RADIUS\n            ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudMadelynsSapho };\n            backToMadelyn.OnMissionSuccess += new MissionHandler(BackToMadelyn_Success);\n            m_objectives.Add(backToMadelyn);\n\n            #endregion\n\n        }\n\n        void enterTheBase_OnMissionSuccess(MyMissionBase sender)\n        {\n            MyScriptWrapper.PlayDialogue(MyDialogueEnum.RUSSIAN_TRANSMITTER_0300_FINDHUB);\n        }\n\n\n        void FindMainRoomEntrance_OnEntityEnter(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            MyScriptWrapper.PlayDialogue(MyDialogueEnum.RUSSIAN_TRANSMITTER_1900_PLACEDEVICE);\n            var detectorOutside = MyScriptWrapper.GetDetector((uint)EntityID.DummyOutsideTransmitter);\n            detectorOutside.Off();\n\n            sender.Off();\n        }\n\n        void detectorOutsideTransmitter_OnEntityEnter(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            MyScriptWrapper.PlayDialogue(MyDialogueEnum.RUSSIAN_TRANSMITTER_1800_BADROUTE);\n            sender.Off();\n        }\n\n        void findMainRoomEntrance_Loaded(MyMissionBase sender)\n        {\n            var detectorFindMainRoomEntrance = MyScriptWrapper.GetDetector((uint)EntityID.FindMainRoomEntrance);\n            detectorFindMainRoomEntrance.On();\n\n            var detectorOutside = MyScriptWrapper.GetDetector((uint)EntityID.DummyOutsideTransmitter);\n            detectorOutside.On();\n\n        }\n\n        void ReachWarehouse_Loaded(MyMissionBase sender)\n        {\n            var detector = MyScriptWrapper.GetDetector((uint)EntityID.DummyNearCargo);\n            detector.On();  \n        }\n\n        void DummyNearCargo_Enter(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (MyScriptWrapper.IsPlayerShip(entity))\n            {\n                MyScriptWrapper.PlayDialogue(MyDialogueEnum.RUSSIAN_TRANSMITTER_0800_NEARCARGO);\n                sender.Off();\n            }\n        }\n\n        void MeetStranger_Loaded(MyMissionBase sender)\n        {\n            var detector = MyScriptWrapper.GetDetector((uint)EntityID.DummyNearVolodia);\n            detector.OnEntityEnter += new OnEntityEnter(DummyNearVolodia_Enter);\n            detector.On();     \n        }\n\n        void DummyNearVolodia_Enter(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (MyScriptWrapper.IsPlayerShip(entity))\n            {\n                MyScriptWrapper.PlayDialogue(MyDialogueEnum.RUSSIAN_TRANSMITTER_0700_STRANGERPROPOSAL);\n                sender.Off();\n            }\n        }\n\n        void findFrequency_OnMissionLoaded(MyMissionBase sender)\n        {\n            var detector = MyScriptWrapper.GetDetector((uint)EntityID.DummyNearFrequencyHub);\n            detector.OnEntityEnter += new OnEntityEnter(DummyNearFrequencyHub_Enter);\n            detector.On(); \n        }\n\n        void DummyNearFrequencyHub_Enter(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (MyScriptWrapper.IsPlayerShip(entity))\n            {\n                if (m_tradeWithVolodia.IsCompleted())\n                {\n                    MyScriptWrapper.PlayDialogue(MyDialogueEnum.RUSSIAN_TRANSMITTER_1500_IFITDOESNOTWORK);\n                    sender.Off();\n                }\n                else\n                {\n                    MyScriptWrapper.PlayDialogue(MyDialogueEnum.RUSSIAN_TRANSMITTER_0400_HUBFOUND);\n                    sender.Off();\n                }\n            }\n        }\n\n        void enterTheBase_OnMissionLoaded(MyMissionBase sender)\n        {\n            var detector = MyScriptWrapper.GetDetector((uint)EntityID.DummyInsideBase);\n            detector.On();\n        }\n\n        public override void Accept()\n        {\n            base.Accept();\n            MyScriptWrapper.HideEntity(MyScriptWrapper.GetEntity((uint)EntityID.Mothership));\n        }\n\n\n\n        void BackToMadelyn_Success(MyMissionBase sender)\n        {\n            MyScriptWrapper.PlayDialogue(MyDialogueEnum.RUSSIAN_TRANSMITTER_2200_THOMASCHAT);\n            MissionTimer.ClearActions();\n        }\n\n\n        void BackToTransmitter_Loaded(MyMissionBase sender)\n        {\n            MissionTimer.RegisterTimerAction(TimeSpan.FromMinutes(5), () => Fail(MyTextsWrapperEnum.Fail_TimeIsUp), false);\n        }\n\n        void FightRussianCommando_Success(MyMissionBase sender)\n        {\n            MyScriptWrapper.TryHide((uint)EntityID.ShipVolodia);\n        }\n\n        void OpenDoors_Success(MyMissionBase sender)\n        {\n            MyScriptWrapper.PlayDialogue(MyDialogueEnum.RUSSIAN_TRANSMITTER_2100_WEMADEIT);\n            MyScriptWrapper.TryHide((uint)EntityID.Particle1);\n            MyScriptWrapper.TryHide((uint)EntityID.Particle2);\n            MyScriptWrapper.TryHide((uint)EntityID.Particle3);\n            MyScriptWrapper.TryHide((uint)EntityID.Particle4);\n        }\n\n        void MeetStranger_Success(MyMissionBase sender)\n        {\n            MyScriptWrapper.PlayDialogue(MyDialogueEnum.RUSSIAN_TRANSMITTER_0700_VOLODIAINTRO);\n            MyScriptWrapper.SetEntityDisplayName((uint)EntityID.ShipVolodia, MyTextsWrapper.Get(MyTextsWrapperEnum.Volodia).ToString());\n        }\n\n        void FindFrequency_Success(MyMissionBase sender)\n        {\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Transmitter1spawn);\n        }\n\n\n\n        void StealMilitarySupply_Success(MyMissionBase sender)\n        {\n            MyScriptWrapper.HideEntity(MyScriptWrapper.GetEntity((uint)EntityID.CargoBox1));\n\n            MyScriptWrapper.PlayDialogue(MyDialogueEnum.RUSSIAN_TRANSMITTER_0900_VOLODIA_RANT);\n\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Cargospawn);\n            MyScriptWrapper.Move(MyScriptWrapper.GetEntity((uint)EntityID.ShipVolodia), MyScriptWrapper.GetEntity((uint)EntityID.VolodiaDummy).GetPosition());\n        }\n\n        void PlaceDeviceOnTransmitter_Success(MyMissionBase sender)\n        {\n            MyScriptWrapper.PlayDialogue(MyDialogueEnum.RUSSIAN_TRANSMITTER_2000_DEVICEWORKING);\n            MyScriptWrapper.Highlight((uint)EntityID.Transmitter1, false, this);\n            MyScriptWrapper.Highlight((uint)EntityID.Transmitter2, false, this);\n            MyScriptWrapper.Highlight((uint)EntityID.PlaceDeviceOnTransmitter, false, this);\n            MyScriptWrapper.EnablePhysics((uint)EntityID.PlaceDeviceOnTransmitter, true);\n        }\n\n        void TradeWithVolodia_Success(MyMissionBase sender)\n        {\n            MyScriptWrapper.GetEntity((uint)EntityID.Hub1).Enabled = true;\n            MyScriptWrapper.GetEntity((uint)EntityID.Hub2).Enabled = true;\n\n            MyScriptWrapper.UnhideEntity(MyScriptWrapper.GetEntity((uint)EntityID.Mothership));\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.CommandoSpawnPoint); //aktivace spawnpointu pri startu mise   \n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.VolodiaCommandoSpawnPoint); //aktivace spawnpointu pri startu mise\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.VolodiaCommandoSpawnPoint2); //aktivace spawnpointu pri startu mise    \n\n            var detector = MyScriptWrapper.GetDetector((uint)EntityID.DummyNearFrequencyHub);\n            detector.On();\n        }\n\n\n        public override void Load() // Code in that block will be called on the load of the sector\n        {\n            base.Load();\n\n            // Ensure correct game state\n            MyScriptWrapper.SetPlayerFaction(MyMwcObjectBuilder_FactionEnum.Rainiers);\n            MyScriptWrapper.SetFactionRelation(MyMwcObjectBuilder_FactionEnum.Rainiers, MyMwcObjectBuilder_FactionEnum.Russian, MyFactions.RELATION_WORST);\n\n            MyScriptWrapper.EnsureInventoryItem(MyScriptWrapper.GetCentralInventory(), MyMwcObjectBuilderTypeEnum.SmallShip_HackingTool, (int)MyMwcObjectBuilder_SmallShip_HackingTool_TypesEnum.Level_2);\n\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.StressOrTimeRush, 3); // Sets music group to be played in the sector - no matter if the mission is running or not\n\n            MyScriptWrapper.Highlight((uint)EntityID.CargoBox1, true, this);\n            MyScriptWrapper.Highlight((uint)EntityID.Transmitter1, true, this);\n            MyScriptWrapper.Highlight((uint)EntityID.Transmitter2, true, this);\n\n            var detectorNearFrequencyHub = MyScriptWrapper.GetDetector((uint)EntityID.DummyNearFrequencyHub);\n            detectorNearFrequencyHub.OnEntityEnter += new OnEntityEnter(DummyNearFrequencyHub_Enter);\n\n            var detectorNearCargo = MyScriptWrapper.GetDetector((uint)EntityID.DummyNearCargo);\n            detectorNearCargo.OnEntityEnter += new OnEntityEnter(DummyNearCargo_Enter);\n\n            var detectorInsideBase = MyScriptWrapper.GetDetector((uint)EntityID.DummyInsideBase);\n            detectorInsideBase.OnEntityEnter += new OnEntityEnter(MyRussianTransmitterMission_OnEntityEnter);\n\n            var detectorOutsideTransmitter = MyScriptWrapper.GetDetector((uint)EntityID.DummyOutsideTransmitter);\n            detectorOutsideTransmitter.OnEntityEnter += new OnEntityEnter(detectorOutsideTransmitter_OnEntityEnter);\n\n            var detectorFindMainRoomEntrance = MyScriptWrapper.GetDetector((uint)EntityID.FindMainRoomEntrance);\n            detectorFindMainRoomEntrance.OnEntityEnter += new OnEntityEnter(FindMainRoomEntrance_OnEntityEnter);\n        }\n\n\n        void MyRussianTransmitterMission_OnEntityEnter(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (MyScriptWrapper.IsPlayerShip(entity))\n            {\n                MyScriptWrapper.PlayDialogue(MyDialogueEnum.RUSSIAN_TRANSMITTER_0200_BACKDOOR);\n                sender.Off();\n            }\n        }\n\n\n        void RussianCommandoLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.PlayDialogue(MyDialogueEnum.RUSSIAN_TRANSMITTER_1100_MADELYNSCARED);\n            MissionTimer.RegisterTimerAction(TimeSpan.FromSeconds(5), () => MyScriptWrapper.PlayDialogue(MyDialogueEnum.RUSSIAN_TRANSMITTER_1300_APOLLOSCARED), false);\n            MissionTimer.RegisterTimerAction(TimeSpan.FromSeconds(65), () => m_fightRussianCommando.Success(), false);\n        }\n\n    }\n\n}\n\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/SinglePlayer/MyRussianWarehouseMission.cs",
    "content": "﻿using System.Text;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing System.Collections.Generic;\nusing System.Linq;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Audio;\nusing System.Diagnostics;\nusing MinerWars.AppCode.Game.Prefabs;\nusing MinerWars.AppCode.Game.Entities.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.Missions.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing System;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Audio.Dialogues;\nusing MinerWars.AppCode.Game.HUD;\nusing MinerWars.AppCode.Game.Missions.Components;\nusing MinerWars.Resources;\n\nnamespace MinerWars.AppCode.Game.Missions.SinglePlayer\n{\n    class MyRussianWarehouseMission : MyMission\n    {\n        private enum EntityID\n        {\n            StartLocation = 54915,\n            SneakInsideSubmissionLocation = 65922,\n            TurnOffCamera0 = 436725,\n            TurnOffCamera1 = 436726,\n            TurnOffCamera2 = 76920,\n            TurnOffHUB = 76921,\n            GetOutsideSubmissionLocation = 69549,\n            BreakThroughSubmissionLocation = 65925,\n            LocateWarehouseSubmissionLocation = 65926,\n            TransmitterCargoBox = 125618,\n            CargoTurret0 = 65883,\n            CargoTurret1 = 65885,\n            CargoTurret2 = 65882,\n            CargoTurret3 = 65886,\n            CargoTurret4 = 65884,\n            CargoTurret5 = 65794,\n            CargoTurret6 = 65790,\n            CargoTurret7 = 65788,\n            CargoTurret8 = 65796,\n            CargoTurret9 = 65792,\n            CargoTurretHUB0 = 179534,\n            CargoTurretHUB1 = 179535,\n            GetOutsideThruCargoSubmissionLocation = 65929,\n            CrushRussiansSpawnpoint = 171854,\n            MeetingPointSubmission = 441040,\n            UpperOldEntranceDoor1 = 10899,\n            UpperOldEntranceDoor2 = 10796,\n            LeftCargoDoors = 10658,\n            OldEntranceDoor1 = 10799,\n            OldEntranceDoor2 = 10822,\n            WarehouseDoors = 10873,\n            GetOutsideDoors = 84173,\n            RightCargoDoors = 10665,\n            MainbaseWarehouseDoors = 18611,\n            WarehouseMainbaseDoors = 18604,\n            ToWarehouseDoors = 18617,\n            MainChamberDoors = 10583,\n            AbandonedPartDoors = 10858,\n            Spawnpoint1 = 69555,\n            Spawnpoint2 = 69596,\n            Spawnpoint3 = 69597,\n            Spawnpoint4 = 133329,\n            Spawnpoint5 = 443908,\n            SpawnpointSlaversRight = 426612,\n            SpawnpointSlaversLeft = 443422,\n            SpawnpointSlaversMiddle = 443429,\n            SpawnpointOnRoadToOldEntr1 = 443902,\n            SpawnpointOnRoadToOldEntr2 = 443903,\n            SpawnpointBonus1 = 448384,\n            SpawnpointBonus2 = 448635,\n            SpawnpointBonus3 = 448651,\n            SpawnpointBonus4 = 448658,\n            SpawnpointBonus5 = 449174,\n            SpawnpointSeekAndDestroyA = 450259,\n            SpawnpointSeekAndDestroyB = 450260,\n            Detector02 = 95056,\n            Detector03 = 141011,\n            Detector04 = 156385,\n            Detector05 = 164164,\n            Detector06 = 164165,\n            Detector07 = 164166,\n            Detector08 = 164171,\n            Detector09 = 164172,\n            Detector10 = 171853,\n            Detector11 = 443904,\n            Detector12 = 443906,\n            DetectorBonus1 = 448631,\n            DetectorBonus2 = 448633,\n            DetectorBonus3 = 448649,\n            DetectorBonus4 = 448656,\n            DetectorBonus5 = 449172,\n            DetectorForUpperTurretHub = 450246,\n            DetectorForLowerTurretHub = 450248,\n            DetectorForDownData1 = 450251,\n            DetectorForDownData2 = 450253,\n            DetectorForExitArea1 = 450255,\n            DetectorForExitArea2 = 450257,\n            //DetectorForSeekAndDestroy1 = 164164,\n            //DetectorForSeekAndDestroy2 = 164165,\n            //DetectorForSeekAndDestroy3 = 164166,\n            //DetectorForSeekAndDestroy4 = 164171,\n            SlaversTarget0 = 248960,\n            OpenDoorsSpawnpoint = 443910,\n            LateWarehouseSpawnpoint = 443439,\n            OpenDoorHUB = 87800,\n            OpenDoorsDummy = 443909,\n            SecurityTowersHUB = 80548,\n            SecurityTower1 = 454252,\n            SecurityTower2 = 454255,\n            SecurityTower3 = 453696,\n            SecurityTower4 = 76886,\n            SecurityTower5 = 76913,\n            //SecurityTower6 = 73263,\n            DownloadDataDummy = 443913,\n            EntranceDoors = 65845,\n            PirateMothershipContainer = 69550,\n            PirateMothershipThrust0 = 441843,\n            PirateMothershipThrust1 = 441844,\n            PirateMothershipThrust2 = 441845,\n            PirateMothershipTrigger = 449176,\n            SpawnpointCtrlTurret = 449702,\n            LastHatch = 443436,\n\n            MovingMothershipContainer = 54898,\n            MovingMothershipContainerParticles1 = 16778602,\n            MovingMothershipContainerParticles2 = 16778572,\n            MovingMothershipTarget = 16777852,\n            MovingMothershipSpawnpoint1 = 16777873, \n            MovingMothershipSpawnpoint2 = 16777874,\n\n            SomeSpawnpoint01 = 156439,\n            SomeSpawnpoint02 = 110268,\n            SomeSpawnpoint03 = 451403,\n            SomeSpawnpoint04 = 141012,\n            SomeSpawnpoint05 = 164173,\n            SomeSpawnpoint06 = 426633,\n            SomeSpawnpoint07 = 164168,\n            SomeSpawnpoint08 = 451951,\n            SomeSpawnpoint09 = 164170,\n            SomeSpawnpoint10 = 164169,\n\n            RaidSpawnpoint = 102,\n            RaidDetector = 103,\n        }\n\n        public override void ValidateIds()\n        {\n            foreach (var value in Enum.GetValues(typeof(EntityID)))\n            {\n                MyScriptWrapper.GetEntity((uint)((value as EntityID?).Value));\n            }\n            foreach (var value in m_waypoints)\n            {\n                MyScriptWrapper.GetEntity(value);\n            }\n        }\n\n        private List<uint> m_waypoints = new List<uint>\n        {\n            187215, 43820, 10664, 10657, 10787, 10803, 10786, 10811\n        };\n\n        private MyEntity GetEntity(EntityID entityId)\n        {\n            return MyScriptWrapper.GetEntity((uint)entityId);\n        }\n\n        private MyEntityDetector Detector01 { get; set; }\n        private MyEntityDetector Detector02 { get; set; }\n        private MyEntityDetector Detector03 { get; set; }\n        private MyEntityDetector Detector04 { get; set; }\n        private MyEntityDetector Detector05 { get; set; }\n        private MyEntityDetector Detector06 { get; set; }\n        private MyEntityDetector Detector07 { get; set; }\n        private MyEntityDetector Detector08 { get; set; }\n        private MyEntityDetector Detector09 { get; set; }\n        private MyEntityDetector Detector10 { get; set; }\n        private MyEntityDetector Detector11 { get; set; }\n        private MyEntityDetector Detector12 { get; set; }\n        private MyEntityDetector DetectorBonus1 { get; set; }\n        private MyEntityDetector DetectorBonus2 { get; set; }\n        private MyEntityDetector DetectorBonus3 { get; set; }\n        private MyEntityDetector DetectorBonus4 { get; set; }\n        private MyEntityDetector DetectorBonus5 { get; set; }\n        private MyEntityDetector DetectorForUpperTurretHub { get; set; }\n        private MyEntityDetector DetectorForLowerTurretHub { get; set; }\n        private MyEntityDetector DetectorForDownData1 { get; set; }\n        private MyEntityDetector DetectorForDownData2 { get; set; }\n        private MyEntityDetector DetectorForExitArea1 { get; set; }\n        private MyEntityDetector DetectorForExitArea2 { get; set; }\n        \n        private MyEntityDetector PirateMothershipTrigger { get; set; }\n\n        private MyObjective m_returnToMeetingPointSubmission;\n        private MyObjective m_sneakInsideMainBaseSubmission;\n\n        private bool m_movePirateMothership;\n        private float m_pirateMothershipSpeed = 100;\n        private Vector3 m_pirateMothershipTargetPosition = new Vector3(7151, 1314, -4923);\n\n        public MyRussianWarehouseMission()\n        {\n            MyMwcVector3Int baseSector = new MyMwcVector3Int(-7420630, 0, 388170);\n\n            ID = MyMissionID.RUSSIAN_WAREHOUSE;\n            DebugName = new StringBuilder(\"05-Russian warehouse\");\n            Name = MyTextsWrapperEnum.RUSSIAN_WAREHOUSE;\n            Description = MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_Description;\n            Flags = MyMissionFlags.Story;\n            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation);\n\n            RequiredMissions = new MyMissionID[] { MyMissionID.PIRATE_BASE };\n            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.RUSSIAN_WAREHOUSE_MEETINGPOINT };\n            RequiredActors = new MyActorEnum[] { MyActorEnum.MARCUS, MyActorEnum.MADELYN };\n\n            m_objectives = new List<MyObjective>();\n            m_sneakInsideMainBaseSubmission = new MyObjective(\n                (MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_SNEAKINMAINBASE_Name),\n                MyMissionID.RUSSIAN_WAREHOUSE_SNEAKINMAINBASE,\n                (MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_SNEAKINMAINBASE_Description),\n                null,\n                this,\n                new MyMissionID[] { },\n                new MyMissionLocation(baseSector, (uint)EntityID.SneakInsideSubmissionLocation),\n                startDialogId: MyDialogueEnum.RUSSIAN_WAREHOUSE_0100\n            ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudEntrance };\n            m_sneakInsideMainBaseSubmission.OnMissionLoaded += SneakInsideMainBaseSubmission_OnMissionLoaded;\n            m_objectives.Add(m_sneakInsideMainBaseSubmission);\n            \n            var TurnOffSecurityCams = new MyObjectiveDisablePrefabs(\n                (MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_TURNOFFCAMS_Name),\n                MyMissionID.RUSSIAN_WAREHOUSE_TURNOFFCAMS,\n                (MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_TURNOFFCAMS_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.RUSSIAN_WAREHOUSE_SNEAKINMAINBASE },\n                new List<uint>() { (uint)EntityID.TurnOffCamera0, (uint)EntityID.TurnOffCamera1, (uint)EntityID.TurnOffCamera2 },\n                new List<uint>() { (uint)EntityID.TurnOffHUB },\n                markObjectsToDisable: false,\n                startDialogId: MyDialogueEnum.RUSSIAN_WAREHOUSE_0200\n            ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudSecurityHub };\n            m_objectives.Add(TurnOffSecurityCams);\n            TurnOffSecurityCams.OnMissionLoaded += TurnOffSecurityCams_OnMissionLoaded;\n\n            var ControlTurret = new MyObjectiveDisablePrefabs(\n                (MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_CTRLTURRET_Name),\n                MyMissionID.RUSSIAN_WAREHOUSE_CTRLTURRET,\n                (MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_CTRLTURRET_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.RUSSIAN_WAREHOUSE_TURNOFFCAMS },\n                new List<uint>() { (uint)EntityID.SecurityTower1, (uint)EntityID.SecurityTower2, (uint)EntityID.SecurityTower3, (uint)EntityID.SecurityTower4, (uint)EntityID.SecurityTower5 },\n                new List<uint>() { (uint)EntityID.SecurityTowersHUB },\n                markObjectsToDisable: false\n            ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudSecurityHub };\n            ControlTurret.OnMissionLoaded += ControlTurretOnLoaded;\n            ControlTurret.OnMissionSuccess += ControlTurretOnSuccess;\n            m_objectives.Add(ControlTurret);\n\n            var OpenDoor = new MyObjectiveEnablePrefabs(\n                (MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_OPEN_DOORS_Name),\n                MyMissionID.RUSSIAN_WAREHOUSE_OPEN_DOORS,\n                (MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_OPEN_DOORS_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.RUSSIAN_WAREHOUSE_CTRLTURRET },\n                null,\n                new List<uint> { (uint)EntityID.OpenDoorHUB},\n                new List<uint> { (uint)EntityID.GetOutsideDoors },\n                startDialogId: MyDialogueEnum.RUSSIAN_WAREHOUSE_0300\n                ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudHub };\n            m_objectives.Add(OpenDoor);\n\n            var GetOutsideMainBase = new MyObjective(\n                (MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_GETOUTMAINBASE_Name),\n                MyMissionID.RUSSIAN_WAREHOUSE_GETOUTMAINBASE,\n                (MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_GETOUTMAINBASE_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.RUSSIAN_WAREHOUSE_OPEN_DOORS },\n                new MyMissionLocation(baseSector, (uint)EntityID.GetOutsideSubmissionLocation),\n                startDialogId: MyDialogueEnum.RUSSIAN_WAREHOUSE_0400\n            ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.Nothing };\n            GetOutsideMainBase.OnMissionLoaded += new MissionHandler(GetOutsideMainBase_OnMissionLoaded);\n            m_objectives.Add(GetOutsideMainBase);\n\n            var BreakThruOldEntrance = new MyObjective(\n                (MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_BREAKOLDENTRANCE_Name),\n                MyMissionID.RUSSIAN_WAREHOUSE_BREAKOLDENTRANCE,\n                (MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_BREAKOLDENTRANCE_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.RUSSIAN_WAREHOUSE_GETOUTMAINBASE },\n                new MyMissionLocation(baseSector, (uint)EntityID.BreakThroughSubmissionLocation),\n                startDialogId: MyDialogueEnum.RUSSIAN_WAREHOUSE_1100\n            ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.Nothing };\n            BreakThruOldEntrance.OnMissionLoaded += BreakThruOldEntrance_OnMissionLoaded;\n            BreakThruOldEntrance.OnMissionUpdate += UpdateRussianMothershipMovement;\n            m_objectives.Add(BreakThruOldEntrance);\n\n            var LocateWarehouse = new MyObjective(\n                (MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_LOCATEWAREHOUSE_Name),\n                MyMissionID.RUSSIAN_WAREHOUSE_LOCATEWAREHOUSE,\n                (MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_LOCATEWAREHOUSE_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.RUSSIAN_WAREHOUSE_BREAKOLDENTRANCE },\n                new MyMissionLocation(baseSector, (uint)EntityID.LocateWarehouseSubmissionLocation),\n                startDialogId: MyDialogueEnum.RUSSIAN_WAREHOUSE_0500\n            ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.Nothing };\n            LocateWarehouse.OnMissionUpdate += UpdateRussianMothershipMovement;\n            LocateWarehouse.OnMissionLoaded += LocateWarehouse_OnMissionLoaded;\n            LocateWarehouse.OnMissionCleanUp += LocateWarehouse_OnMissionUnload;\n            m_objectives.Add(LocateWarehouse);\n\n            var FindTransmitter = new MyUseObjective(\n                (MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_FINDTRANSMITTER_Name),\n                MyMissionID.RUSSIAN_WAREHOUSE_FINDTRANSMITTER,\n                (MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_FINDTRANSMITTER_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.RUSSIAN_WAREHOUSE_LOCATEWAREHOUSE },\n                new MyMissionLocation(baseSector, (uint)EntityID.TransmitterCargoBox),\n                Localization.MyTextsWrapperEnum.PressToTakeCargo,\n                Localization.MyTextsWrapperEnum.TakeAll,\n                Localization.MyTextsWrapperEnum.TakeAll,\n                1000,\n                radiusOverride: 50,\n                startDialogId: MyDialogueEnum.RUSSIAN_WAREHOUSE_0700\n            ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudTransmitter };\n            FindTransmitter.OnMissionUpdate += UpdateRussianMothershipMovement;\n            FindTransmitter.OnMissionLoaded += new MissionHandler(FindTransmitter_OnMissionLoaded);\n            FindTransmitter.OnMissionSuccess += new MissionHandler(FindTransmitter_OnMissionSuccess);\n            m_objectives.Add(FindTransmitter);\n\n            var downDataDlgSubmission = new MyObjectiveDialog(\n                    MyMissionID.RUSSIAN_WAREHOUSE_DOWNDATADIALOGUE,\n                    null,\n                    this,\n                    new MyMissionID[] { MyMissionID.RUSSIAN_WAREHOUSE_FINDTRANSMITTER },\n                    MyDialogueEnum.RUSSIAN_WAREHOUSE_0800\n                );\n            downDataDlgSubmission.OnMissionUpdate += UpdateRussianMothershipMovement;\n            m_objectives.Add(downDataDlgSubmission);\n\n            var DownData = new MyUseObjective(\n                (MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_DOWNLOAD_DATA_Name),\n                MyMissionID.RUSSIAN_WAREHOUSE_DOWNLOAD_DATA,\n                (MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_DOWNLOAD_DATA_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.RUSSIAN_WAREHOUSE_DOWNDATADIALOGUE },\n                new MyMissionLocation(baseSector, (uint)EntityID.DownloadDataDummy),\n                Localization.MyTextsWrapperEnum.PressToDownloadData,\n                Localization.MyTextsWrapperEnum.Console,\n                Localization.MyTextsWrapperEnum.DownloadingData,\n                3000) { SaveOnSuccess = true };\n            DownData.OnMissionUpdate += UpdateRussianMothershipMovement;\n            DownData.OnMissionLoaded += DownDataOnLoaded;\n            m_objectives.Add(DownData);\n\n            var TurnOffMainDefense1 = new MyObjectiveDisablePrefabs(\n                (MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_TURNOFFMAINDEF_PART1_Name),\n                MyMissionID.RUSSIAN_WAREHOUSE_TURNOFFMAINDEF_PART1,\n                (MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_TURNOFFMAINDEF_PART1_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.RUSSIAN_WAREHOUSE_DOWNLOAD_DATA },\n                new List<uint>() { (uint)EntityID.CargoTurret0, (uint)EntityID.CargoTurret1, (uint)EntityID.CargoTurret2, (uint)EntityID.CargoTurret3, (uint)EntityID.CargoTurret4 },\n                new List<uint>() { (uint)EntityID.CargoTurretHUB0 },\n                markObjectsToDisable: false,\n                startDialogId: MyDialogueEnum.RUSSIAN_WAREHOUSE_0900\n            ) { HudName = MyTextsWrapperEnum.HudHubA };\n            TurnOffMainDefense1.OnMissionUpdate += UpdateRussianMothershipMovement;\n            m_objectives.Add(TurnOffMainDefense1);\n\n            var TurnOffMainDefense2 = new MyObjectiveDisablePrefabs(\n                (MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_TURNOFFMAINDEF_PART2_Name),\n                MyMissionID.RUSSIAN_WAREHOUSE_TURNOFFMAINDEF_PART2,\n                (MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_TURNOFFMAINDEF_PART2_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.RUSSIAN_WAREHOUSE_TURNOFFMAINDEF_PART1 },\n                new List<uint>() { (uint)EntityID.CargoTurret5, (uint)EntityID.CargoTurret6, (uint)EntityID.CargoTurret7, (uint)EntityID.CargoTurret8, (uint)EntityID.CargoTurret9 },\n                new List<uint>() { (uint)EntityID.CargoTurretHUB1 },\n                markObjectsToDisable: false\n            ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudHubB };\n            TurnOffMainDefense2.OnMissionUpdate += UpdateRussianMothershipMovement;\n            m_objectives.Add(TurnOffMainDefense2);\n\n            var GetOutsideWarehouse = new MyObjective(\n                (MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_GETOUTWAREHOUSE_Name),\n                MyMissionID.RUSSIAN_WAREHOUSE_GETOUTWAREHOUSE,\n                (MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_GETOUTWAREHOUSE_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.RUSSIAN_WAREHOUSE_TURNOFFMAINDEF_PART1, MyMissionID.RUSSIAN_WAREHOUSE_TURNOFFMAINDEF_PART2 },\n                new MyMissionLocation(baseSector, (uint)EntityID.GetOutsideThruCargoSubmissionLocation)\n            ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.Nothing };\n            GetOutsideWarehouse.OnMissionUpdate += UpdateRussianMothershipMovement;\n            GetOutsideWarehouse.OnMissionLoaded += GetOutsideWarehouseOnLoad;\n            GetOutsideWarehouse.OnMissionCleanUp += GetOutsideWarehouseOnCleanUp;\n            m_objectives.Add(GetOutsideWarehouse);\n\n            var CrushRemainingShips = new MyObjectiveDestroy(\n                (MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_CRUSHREMAINGSHIPS_Name),\n                MyMissionID.RUSSIAN_WAREHOUSE_CRUSHREMAINGSHIPS,\n                (MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_CRUSHREMAINGSHIPS_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.RUSSIAN_WAREHOUSE_GETOUTWAREHOUSE },\n                new List<uint> { },\n                new List<uint> { (uint)EntityID.CrushRussiansSpawnpoint },\n                false\n            ) { SaveOnSuccess = true };\n            CrushRemainingShips.OnMissionUpdate += UpdateRussianMothershipMovement;\n            CrushRemainingShips.OnMissionLoaded += CrushRemainingShipsOnLoad;\n            m_objectives.Add(CrushRemainingShips);\n\n            m_returnToMeetingPointSubmission = new MyObjective(\n                (MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_MEETINGPOINT_Name),\n                MyMissionID.RUSSIAN_WAREHOUSE_MEETINGPOINT,\n                (MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_MEETINGPOINT_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.RUSSIAN_WAREHOUSE_CRUSHREMAINGSHIPS },\n                new MyMissionLocation(baseSector, MyMissionLocation.MADELYN_HANGAR),\n                successDialogId: MyDialogueEnum.RUSSIAN_WAREHOUSE_1000,\n                radiusOverride: MyMissionLocation.MADELYN_HANGAR_RADIUS\n            ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudMadelynsSapho };\n            m_returnToMeetingPointSubmission.OnMissionUpdate += UpdateRussianMothershipMovement;\n            m_returnToMeetingPointSubmission.OnMissionUpdate += new MissionHandler(ReturnToMeetingPointSubmissionOnUpdate);\n            m_objectives.Add(m_returnToMeetingPointSubmission);\n\n            Components.Add(new MySpawnpointWaves((uint)EntityID.RaidDetector, 0, (uint)EntityID.RaidSpawnpoint));\n        }\n\n        void FindTransmitter_OnMissionSuccess(MyMissionBase sender)\n        {\n            MyScriptWrapper.TryHide((uint)EntityID.TransmitterCargoBox);            \n        }\n\n        void FindTransmitter_OnMissionLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.Highlight((uint)EntityID.TransmitterCargoBox, true, this);\n        }\n\n        void GetOutsideMainBase_OnMissionLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.SetEntityDestructible(MyScriptWrapper.GetEntity((uint)EntityID.GetOutsideDoors), true);\n        }\n\n        void BreakThruOldEntrance_OnMissionLoaded(MyMissionBase sender)\n        {\n            var mothership = GetEntity(EntityID.MovingMothershipContainer);\n            var particle1 = GetEntity(EntityID.MovingMothershipContainerParticles1);\n            var particle2 = GetEntity(EntityID.MovingMothershipContainerParticles2);\n\n            MyScriptWrapper.UnhideEntity(mothership, true);\n            MyScriptWrapper.UnhideEntity(particle1);\n            MyScriptWrapper.UnhideEntity(particle2);\n\n            MyDummyPoint motherShipStart = MyScriptWrapper.TryGetEntity(\"motherShipStart\") as MyDummyPoint;\n            MyDummyPoint particle1Start = MyScriptWrapper.TryGetEntity(\"particle1Start\") as MyDummyPoint;\n            MyDummyPoint particle2Start = MyScriptWrapper.TryGetEntity(\"particle2Start\") as MyDummyPoint;\n\n            if (motherShipStart == null)\n            {\n                motherShipStart = MyEntities.CreateFromObjectBuilderAndAdd(null, MyMwcObjectBuilder_Base.CreateNewObject(MyMwcObjectBuilderTypeEnum.DummyPoint, null), mothership.WorldMatrix) as MyDummyPoint;\n                motherShipStart.SetName(\"motherShipStart\");\n            }\n            else\n                motherShipStart.WorldMatrix = mothership.WorldMatrix;\n\n            if (particle1Start == null)\n            {\n                particle1Start = MyEntities.CreateFromObjectBuilderAndAdd(null, MyMwcObjectBuilder_Base.CreateNewObject(MyMwcObjectBuilderTypeEnum.DummyPoint, null), particle1.WorldMatrix) as MyDummyPoint;\n                particle1Start.SetName(\"particle1Start\");\n            }\n            else\n                particle1Start.WorldMatrix = mothership.WorldMatrix;\n\n            if (particle2Start == null)\n            {\n                particle2Start = MyEntities.CreateFromObjectBuilderAndAdd(null, MyMwcObjectBuilder_Base.CreateNewObject(MyMwcObjectBuilderTypeEnum.DummyPoint, null), particle2.WorldMatrix) as MyDummyPoint;\n                particle2Start.SetName(\"particle2Start\");\n            }\n            else\n                particle2Start.WorldMatrix = mothership.WorldMatrix;\n\n            MyScriptWrapper.MarkEntity(mothership, MyTexts.RussianReinforcements, MyHudIndicatorFlagsEnum.SHOW_TEXT | MyHudIndicatorFlagsEnum.SHOW_BORDER_INDICATORS | MyHudIndicatorFlagsEnum.SHOW_DISTANCE, MyGuitargetMode.Enemy);\n        }\n\n        void UpdateRussianMothershipMovement(MyMissionBase sender)\n        {\n            MoveRussianMothership();\n        }\n\n        void SneakInsideMainBaseSubmission_OnMissionLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.SetWaypointListSecrecy(m_waypoints, true);\n\n            MyScriptWrapper.HideEntity(GetEntity(EntityID.MovingMothershipContainer), true);\n            MyScriptWrapper.HideEntity(GetEntity(EntityID.MovingMothershipContainerParticles1));\n            MyScriptWrapper.HideEntity(GetEntity(EntityID.MovingMothershipContainerParticles2));\n        }\n\n        void TurnOffSecurityCams_OnMissionLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.SetWaypointListSecrecy(m_waypoints, false);\n        }\n\n        void LocateWarehouse_OnMissionLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.EntityDeath += LocateWarehouse_EntityDeath;\n        }\n\n        void LocateWarehouse_OnMissionUnload(MyMissionBase sender)\n        {\n            MyScriptWrapper.EntityDeath -= LocateWarehouse_EntityDeath;\n        }\n\n        void LocateWarehouse_EntityDeath(MyEntity entity, MyEntity damageSource)\n        {\n            if (entity == MyScriptWrapper.TryGetEntity((uint)EntityID.LastHatch))\n            {\n                MyScriptWrapper.PlayDialogue(MyDialogueEnum.RUSSIAN_WAREHOUSE_0600);\n            }\n        }\n\n        void DownDataOnLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.LateWarehouseSpawnpoint);\n        }\n\n        void ControlTurretOnLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.GetEntity((uint)EntityID.EntranceDoors), false);\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnpointCtrlTurret);\n        }\n\n        void ControlTurretOnSuccess(MyMissionBase sender)\n        {\n            var inventory = MyScriptWrapper.GetPlayerInventory();\n            bool removed = inventory.RemoveInventoryItemAmount(\n                MyMwcObjectBuilderTypeEnum.FalseId,\n                MyMwcFactionsByIndex.GetFactionIndex(MyMwcObjectBuilder_FactionEnum.Russian),\n                1);\n            MyScriptWrapper.FixBotNames();\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.OpenDoorsSpawnpoint);\n        }\n\n        void GetOutsideWarehouseOnLoad(MyMissionBase sender)\n        {\n            PirateMothershipTrigger = InitDetector((uint)EntityID.PirateMothershipTrigger, OnPirateMothershipTrigger);\n\n            MyScriptWrapper.SetEntityDestructible(MyScriptWrapper.GetEntity((uint)EntityID.LeftCargoDoors), true);\n        }\n\n        void GetOutsideWarehouseOnCleanUp(MyMissionBase sender)\n        {\n            CleanUpDetector(PirateMothershipTrigger, OnPirateMothershipTrigger);\n        }\n\n        void CrushRemainingShipsOnLoad(MyMissionBase sender)\n        {\n            m_movePirateMothership = true;\n        }\n\n        void ReturnToMeetingPointSubmissionOnUpdate(MyMissionBase sender)\n        {\n            m_movePirateMothership = true;\n        }\n\n        public override void Load()\n        {\n            base.Load();\n\n            // Add hacking tool to inventory if player already haven't got one\n            MyScriptWrapper.AddHackingToolToPlayersInventory(2);\n\n            // Set musicmood right from script start\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.HeavyFight);\n\n            // Change player faction to Rainiers and set relations between them\n            MyScriptWrapper.SetPlayerFaction(MyMwcObjectBuilder_FactionEnum.Rainiers);\n            MyScriptWrapper.SetFactionRelation(MyMwcObjectBuilder_FactionEnum.Rainiers, MyMwcObjectBuilder_FactionEnum.Pirates, MyFactions.RELATION_BEST);\n            MyScriptWrapper.SetFactionRelation(MyMwcObjectBuilder_FactionEnum.Rainiers, MyMwcObjectBuilder_FactionEnum.Russian, MyFactions.RELATION_WORST);\n            MyScriptWrapper.SetFactionRelation(MyMwcObjectBuilder_FactionEnum.Pirates, MyMwcObjectBuilder_FactionEnum.Russian, MyFactions.RELATION_WORST);\n            MyScriptWrapper.FixBotNames();\n\n            // Permaclosed doors\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.GetEntity((uint)EntityID.UpperOldEntranceDoor1), false);   // Upper old entrance tunnel 1st door\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.GetEntity((uint)EntityID.UpperOldEntranceDoor2), false);   // Upper old entrance tunnel 2nd door\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.GetEntity((uint)EntityID.LeftCargoDoors), false);          // Left cargo bay doors which leads to nowhere\n\n            // Closed doors on mission start\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.GetEntity((uint)EntityID.OldEntranceDoor1), false);        // Should be opened from HUB at main base - it's 1st door at old entrance\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.GetEntity((uint)EntityID.OldEntranceDoor2), false);        // Should be opened from HUB at main base - it's 2nd door at old entrance\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.GetEntity((uint)EntityID.WarehouseDoors), false);          // Should be opened from HUB at old entrance - leads to warehouse\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.GetEntity((uint)EntityID.GetOutsideDoors), false);         // Should open for GetOutsideMainBase submission\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.GetEntity((uint)EntityID.RightCargoDoors), false);         // Right cargo bay doors which leads to outside of Warehouse Station\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.GetEntity((uint)EntityID.MainbaseWarehouseDoors), false);  // Doors at connection tunnel between main base and warehouse base (from side of main base)\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.GetEntity((uint)EntityID.WarehouseMainbaseDoors), false);  // Doors at connection tunnel between main base and warehouse base (from side of warehouse base)\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.GetEntity((uint)EntityID.ToWarehouseDoors), false);        // Doors at connection tunnel between main base and warehouse base which leads to warehouse itself\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.GetEntity((uint)EntityID.MainChamberDoors), false);        // Doors at main chamber after cargobay which leads to warehouse itself\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.GetEntity((uint)EntityID.AbandonedPartDoors), false);      // Doors to abandoned part of warehouse\n\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Spawnpoint1);\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Spawnpoint2);\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Spawnpoint3);\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Spawnpoint4);\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnpointSlaversRight);\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnpointSlaversLeft);\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnpointSlaversMiddle);\n\n            // Detectors Dummy points\n            Detector02 = InitDetector((uint)EntityID.Detector02, StartDetector02);\n            Detector03 = InitDetector((uint)EntityID.Detector03, StartDetector03);\n            Detector04 = InitDetector((uint)EntityID.Detector04, StartDetector04);\n            Detector05 = InitDetector((uint)EntityID.Detector05, StartDetector05);\n            Detector06 = InitDetector((uint)EntityID.Detector06, StartDetector06);\n            Detector07 = InitDetector((uint)EntityID.Detector07, StartDetector07);\n            Detector08 = InitDetector((uint)EntityID.Detector08, StartDetector08);\n            Detector09 = InitDetector((uint)EntityID.Detector09, StartDetector09);\n            Detector10 = InitDetector((uint)EntityID.Detector10, StartDetector10);\n            Detector11 = InitDetector((uint)EntityID.Detector11, StartDetector11);\n            Detector12 = InitDetector((uint)EntityID.Detector12, StartDetector12);\n\n            DetectorBonus1 = InitDetector((uint)EntityID.DetectorBonus1,StartDetectorBonus1);\n            DetectorBonus2 = InitDetector((uint)EntityID.DetectorBonus2,StartDetectorBonus2);\n            DetectorBonus3 = InitDetector((uint)EntityID.DetectorBonus3,StartDetectorBonus3);\n            DetectorBonus4 = InitDetector((uint)EntityID.DetectorBonus4,StartDetectorBonus4);\n            DetectorBonus5 = InitDetector((uint)EntityID.DetectorBonus5,StartDetectorBonus5);\n\n            DetectorForUpperTurretHub = InitDetector((uint)EntityID.DetectorForUpperTurretHub, StartDetectorForUpperTurretHub);\n            DetectorForLowerTurretHub = InitDetector((uint)EntityID.DetectorForLowerTurretHub, StartDetectorForLowerTurretHub);\n            DetectorForDownData1 = InitDetector((uint)EntityID.DetectorForDownData1, StartDetectorForDownData1);\n            DetectorForDownData2 = InitDetector((uint)EntityID.DetectorForDownData2, StartDetectorForDownData2);\n            DetectorForExitArea1 = InitDetector((uint)EntityID.DetectorForExitArea1, StartDetectorForExitArea1);\n            DetectorForExitArea2 = InitDetector((uint)EntityID.DetectorForExitArea2, StartDetectorForExitArea2);\n\n            MyScriptWrapper.OnSpawnpointBotSpawned += OnSpawnpointBotSpawned;\n            m_movePirateMothership = false;\n        }\n\n        void OnSpawnpointBotSpawned(MyEntity spawnpoint, MyEntity bot)\n        {\n            if (spawnpoint.EntityId.Value.NumericValue == (uint)EntityID.SpawnpointSlaversRight)\n            {\n                MyScriptWrapper.SetBotTarget(bot, MyScriptWrapper.GetEntity((uint)EntityID.SlaversTarget0));\n            }\n        }\n\n        public override void Update()\n        {\n            base.Update();\n\n            if (m_movePirateMothership)\n            {\n                MovePirateShip();\n            }\n        }\n\n        public override void Unload()\n        {\n            base.Unload();\n            MyScriptWrapper.OnSpawnpointBotSpawned -= OnSpawnpointBotSpawned;\n\n            CleanUpDetector(Detector01, StartDetector01);\n            CleanUpDetector(Detector02, StartDetector02);\n            CleanUpDetector(Detector03, StartDetector03);\n            CleanUpDetector(Detector04, StartDetector04);\n            CleanUpDetector(Detector05, StartDetector05);\n            CleanUpDetector(Detector06, StartDetector06);\n            CleanUpDetector(Detector07, StartDetector07);\n            CleanUpDetector(Detector08, StartDetector08);\n            CleanUpDetector(Detector09, StartDetector09);\n            CleanUpDetector(Detector10, StartDetector10);\n            CleanUpDetector(Detector11, StartDetector11);\n            CleanUpDetector(Detector12, StartDetector12);\n            \n            CleanUpDetector(DetectorBonus1, StartDetectorBonus1);\n            CleanUpDetector(DetectorBonus2, StartDetectorBonus2);\n            CleanUpDetector(DetectorBonus3, StartDetectorBonus3);\n            CleanUpDetector(DetectorBonus4, StartDetectorBonus4);\n            CleanUpDetector(DetectorBonus5, StartDetectorBonus5);\n\n            CleanUpDetector(DetectorForUpperTurretHub, StartDetectorForUpperTurretHub);\n            CleanUpDetector(DetectorForLowerTurretHub, StartDetectorForLowerTurretHub);\n            CleanUpDetector(DetectorForDownData1, StartDetectorForDownData1);\n            CleanUpDetector(DetectorForDownData2, StartDetectorForDownData2);\n            CleanUpDetector(DetectorForExitArea1, StartDetectorForExitArea1);\n            CleanUpDetector(DetectorForExitArea2, StartDetectorForExitArea2);\n        }\n\n        private void StartDetector01(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (entity == MySession.PlayerShip)\n            {\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Spawnpoint1);\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Spawnpoint2);\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Spawnpoint3);\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Spawnpoint4);\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnpointSlaversRight);\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnpointSlaversLeft);\n                sender.Off();\n            }\n        }\n\n        private void StartDetector02(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (entity == MySession.PlayerShip)\n            {\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SomeSpawnpoint02);\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SomeSpawnpoint03);\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Spawnpoint5);\n                sender.Off();\n            }\n        }\n\n        private void StartDetector03(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (entity == MySession.PlayerShip)\n            {\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SomeSpawnpoint04);\n                sender.Off();\n            }\n        }\n\n        private void StartDetector04(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (entity == MySession.PlayerShip)\n            {\n                //MyScriptWrapper.ActivateSpawnPoint(156386);\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SomeSpawnpoint01);\n                sender.Off();\n            }\n        }\n\n        private void StartDetector05(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (entity == MySession.PlayerShip)\n            {\n                //MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SomeSpawnpoint07);\n                //MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SomeSpawnpoint10);\n                //MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SomeSpawnpoint09);\n                //MyScriptWrapper.ActivateSpawnPoint(164174);\n                //MyScriptWrapper.ActivateSpawnPoint(156386);\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SomeSpawnpoint01);\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnpointSeekAndDestroyA);\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnpointSeekAndDestroyB);\n                sender.Off();\n            }\n        }\n\n        private void StartDetector06(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (entity == MySession.PlayerShip)\n            {\n                //MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SomeSpawnpoint07);\n                //MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SomeSpawnpoint10);\n                //MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SomeSpawnpoint09);\n                //MyScriptWrapper.ActivateSpawnPoint(164174);\n                //MyScriptWrapper.ActivateSpawnPoint(156386);\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SomeSpawnpoint01);\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnpointSeekAndDestroyA);\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnpointSeekAndDestroyB);\n                sender.Off();\n            }\n        }\n\n        private void StartDetector07(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (entity == MySession.PlayerShip)\n            {\n                //MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SomeSpawnpoint07);\n                //MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SomeSpawnpoint10);\n                //MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SomeSpawnpoint09);\n                //MyScriptWrapper.ActivateSpawnPoint(164174);\n                //MyScriptWrapper.ActivateSpawnPoint(156386);\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SomeSpawnpoint01);\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnpointSeekAndDestroyA);\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnpointSeekAndDestroyB);\n                sender.Off();\n            }\n        }\n\n        private void StartDetector08(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (entity == MySession.PlayerShip)\n            {\n                //MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SomeSpawnpoint07);\n                //MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SomeSpawnpoint10);\n                //MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SomeSpawnpoint09);\n                //MyScriptWrapper.ActivateSpawnPoint(164174);\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnpointSeekAndDestroyA);\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnpointSeekAndDestroyB);\n                sender.Off();\n            }\n        }\n\n        private void StartDetector09(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (entity == MySession.PlayerShip)\n            {\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SomeSpawnpoint05);\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SomeSpawnpoint06);\n                sender.Off();\n            }\n        }\n\n        private void StartDetector10(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (entity == MySession.PlayerShip)\n            {\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.CrushRussiansSpawnpoint);\n                sender.Off();\n            }\n        }\n\n        private void StartDetector11(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (entity == MySession.PlayerShip)\n            {\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnpointOnRoadToOldEntr1);\n                sender.Off();\n            }\n        }\n\n        private void StartDetector12(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (entity == MySession.PlayerShip)\n            {\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnpointOnRoadToOldEntr2);\n                sender.Off();\n            }\n        }\n\n        private void OnPirateMothershipTrigger(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            m_movePirateMothership = true;\n        }\n\n        private void StartDetectorBonus1(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (entity == MySession.PlayerShip)\n            {\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnpointBonus1);\n                sender.Off();\n            }\n        }\n\n        private void StartDetectorBonus2(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (entity == MySession.PlayerShip)\n            {\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SomeSpawnpoint02);\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnpointBonus2);\n                sender.Off();\n            }\n        }\n\n        private void StartDetectorBonus3(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (entity == MySession.PlayerShip)\n            {\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnpointBonus3);\n                sender.Off();\n            }\n        }\n\n        private void StartDetectorBonus4(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (entity == MySession.PlayerShip)\n            {\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnpointBonus4);\n                sender.Off();\n            }\n        }\n\n        private void StartDetectorBonus5(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (entity == MySession.PlayerShip)\n            {\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnpointBonus5);\n                sender.Off();\n            }\n        }\n\n        private void StartDetectorForUpperTurretHub(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (entity == MySession.PlayerShip)\n            {\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SomeSpawnpoint07);\n                sender.Off();\n            }\n        }\n\n        private void StartDetectorForLowerTurretHub(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (entity == MySession.PlayerShip)\n            {\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SomeSpawnpoint08);\n                sender.Off();\n            }\n        }\n\n        private void StartDetectorForDownData1(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (entity == MySession.PlayerShip)\n            {\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SomeSpawnpoint09);\n                sender.Off();\n            }\n        }\n\n        private void StartDetectorForDownData2(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (entity == MySession.PlayerShip)\n            {\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SomeSpawnpoint09);\n                sender.Off();\n            }\n        }\n\n        private void StartDetectorForExitArea1(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (entity == MySession.PlayerShip)\n            {\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SomeSpawnpoint10);\n                sender.Off();\n            }\n        }\n\n        private void StartDetectorForExitArea2(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (entity == MySession.PlayerShip)\n            {\n                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SomeSpawnpoint10);\n                sender.Off();\n            }\n        }\n\n        private void MovePirateShip()\n        {\n            var pirateMotherShipContainer = GetEntity(EntityID.PirateMothershipContainer);\n            if (pirateMotherShipContainer != null && Vector3.DistanceSquared(m_pirateMothershipTargetPosition, pirateMotherShipContainer.GetPosition()) > 10 * 10)\n            {\n                Vector3 direction = MyMwcUtils.Normalize(m_pirateMothershipTargetPosition - pirateMotherShipContainer.GetPosition());\n                Vector3 deltaPosition = direction * m_pirateMothershipSpeed * MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS;\n\n                MyScriptWrapper.Move(pirateMotherShipContainer, pirateMotherShipContainer.GetPosition() + deltaPosition);\n\n                var thrust0 = GetEntity(EntityID.PirateMothershipThrust0);\n                var thrust1 = GetEntity(EntityID.PirateMothershipThrust1);\n                var thrust2 = GetEntity(EntityID.PirateMothershipThrust2);\n\n                MyScriptWrapper.Move(thrust0, thrust0.GetPosition() + deltaPosition);\n                MyScriptWrapper.Move(thrust1, thrust1.GetPosition() + deltaPosition);\n                MyScriptWrapper.Move(thrust2, thrust2.GetPosition() + deltaPosition);\n            }\n        }\n\n        private void MoveRussianMothership()\n        {\n            var motherShipStart = MyScriptWrapper.TryGetEntity(\"motherShipStart\");\n            if (motherShipStart != null)\n            {\n                var particle1Start = MyScriptWrapper.GetEntity(\"particle1Start\");\n                var particle2Start = MyScriptWrapper.GetEntity(\"particle2Start\");\n\n                var mothership = GetEntity(EntityID.MovingMothershipContainer);\n                var particle1 = GetEntity(EntityID.MovingMothershipContainerParticles1);\n                var particle2 = GetEntity(EntityID.MovingMothershipContainerParticles2);\n\n                var mothershipTarget = GetEntity(EntityID.MovingMothershipTarget);\n\n                var distance = (mothershipTarget.GetPosition() - motherShipStart.GetPosition()).Length();\n                var traveledDistance = (motherShipStart.GetPosition() - mothership.GetPosition()).Length();\n                var phase =  traveledDistance / distance;\n\n                phase += MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS / (6 * 60);   // 6 minutes travel time\n\n                Vector3 position = Vector3.Lerp(motherShipStart.GetPosition(), mothershipTarget.GetPosition(), phase);\n\n                MyScriptWrapper.Move(mothership, position);\n                MyScriptWrapper.Move(particle1, particle1Start.GetPosition() - motherShipStart.GetPosition() + position);\n                MyScriptWrapper.Move(particle2, particle2Start.GetPosition() - motherShipStart.GetPosition() + position);\n\n                if (distance - traveledDistance < 10f)\n                {\n                    motherShipStart.MarkForClose();\n                    MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.MovingMothershipSpawnpoint1);\n                    MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.MovingMothershipSpawnpoint2);\n\n                    MyScriptWrapper.RemoveEntityMark(mothership);\n                }\n            }\n        }\n\n        private MyEntityDetector InitDetector(uint detectorID, OnEntityEnter handler)\n        {\n            MyEntityDetector detector = MyScriptWrapper.GetDetector(MyScriptWrapper.GetEntity(detectorID));\n            detector.OnEntityEnter += handler;\n            detector.On();\n            return detector;\n        }\n\n        private void CleanUpDetector(MyEntityDetector detector, OnEntityEnter handler)\n        {\n            if (detector != null)\n            {\n                detector.OnEntityEnter -= handler;\n                detector.Off();\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/SinglePlayer/MySlaverBase2Mission.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Text;\nusing MinerWars.AppCode.Game.Audio.Dialogues;\nusing MinerWars.AppCode.Game.Missions.Components;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.World.Global;\n\nnamespace MinerWars.AppCode.Game.Missions.SinglePlayer\n{\n    class MySlaverBase2Mission : MyMission\n    {\n        private enum EntityID // list of IDs used in script\n        {\n            StartLocation = 4954,\n            turret_1 = 966,\n            turret_2 = 991,\n            turret_3 = 864,\n            turret_4 = 2081,\n            turret_5 = 1566,\n            turret_6 = 1605,\n            generator_1 = 2681,\n            slave_1 = 5910,\n            slave_2 = 5909,\n            slave_3 = 5911,\n            slave_4 = 5912,\n            slave_5 = 5913,\n            FinalFreedom = 5914,\n            Return = 14377,\n            hub1 = 18080,\n            hub2 = 18081,\n            generatorspawn = 18359,\n            unlockspawn = 19303,\n            freeslaves2spawn = 20146,\n            freeslaves4spawn = 19714,\n            ShipTransport1 = 5928,\n            ShipTransport2 = 5915,\n            GeneratorDetectorDummy = 10,\n        }\n\n        List<uint> m_chainEffects = new List<uint>()\n            {\n                25492, 25493, 25494, 25495, 25496, 25497, 25498, 25499, 25500, 25501, \n            };\n\n        public override void ValidateIds() // checks if all IDs in enum are loaded correctly\n        {\n            foreach (var value in Enum.GetValues(typeof(EntityID)))\n            {\n                MyScriptWrapper.GetEntity((uint)((value as EntityID?).Value));\n            }\n\n            foreach (var value in m_chainEffects)\n            {\n                MyScriptWrapper.GetEntity(value);\n            }\n        }\n\n        bool m_slaverCaptainTalked;\n        int m_slavesFreed;\n\n        public MySlaverBase2Mission()\n        {\n            RequiredActors = new MyActorEnum[] { MyActorEnum.MARCUS, MyActorEnum.MADELYN, MyActorEnum.TARJA, MyActorEnum.VALENTIN };\n\n\n            ID = MyMissionID.SLAVER_BASE_2; /* ID must be added to MyMissions.cs */\n            DebugName = new StringBuilder(\"09d-Slaver base Delta Earnings\"); // Name of mission\n            Name = MyTextsWrapperEnum.SLAVER_BASE_DELTA_EARNINGS;\n            Description = MyTextsWrapperEnum.SLAVER_BASE_DELTA_EARNINGS_Description;\n            Flags = MyMissionFlags.Story;\n\n            MyMwcVector3Int baseSector = new MyMwcVector3Int(4169480, 0, -8216683); // Story sector of the script - i.e. (-2465,0,6541)\n\n            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation); // Starting dummy point - must by typecasted to uint and referenced from EntityID enum\n\n            RequiredMissions = new MyMissionID[] { MyMissionID.FORT_VALIANT_B }; // IDs of missions required to make this mission available\n            RequiredMissionsForSuccess = new MyMissionID[]\n                {\n                    MyMissionID.SLAVER_BASE_2_FREE_SLAVES,\n                };\n            m_objectives = new List<MyObjective>(); // Creating of list of submissions\n\n\n            // ----------- START OF SUBMISSIONS DEFINITION --------------\n            var introTalk = new MyObjectiveDialog(\n                MyMissionID.SLAVER_BASE_2_INTRO,\n                null,\n                this,\n                new MyMissionID[] { },\n                MyDialogueEnum.SLAVERBASE2_0100_INTRO\n                ) { SaveOnSuccess = false };\n            m_objectives.Add(introTalk);\n\n\n            var paralyzeDefense = new MyObjectiveDestroy(\n                // MySubmissionDestroy means mission with objective to destroy something - here it is class member so you can call methods on it\n                MyTextsWrapperEnum.SLAVER_BASE_2_PARALYZE_DEFENSE,\n                //Name of the submission\n                MyMissionID.SLAVER_BASE_2_PARALYZE_DEFENSE,\n                // ID of the submission\n                MyTextsWrapperEnum.SLAVER_BASE_2_PARALYZE_DEFENSE_Description,\n                // Description of the submission\n                null,\n                this,\n                new MyMissionID[]\n                    {\n                        MyMissionID.SLAVER_BASE_2_INTRO\n                    },\n                // ID of submissions required to make this submission available - these declares the sequence of submissions\n                new List<uint>\n                    {\n                        (uint) EntityID.turret_1,\n                        (uint) EntityID.turret_2,\n                        (uint) EntityID.turret_3,\n                        (uint) EntityID.turret_4,\n                        (uint) EntityID.turret_5,\n                        (uint) EntityID.turret_6\n                    },\n                // ID of objects to be destroyed as a mission objective\n                null,\n                true,\n                startDialogID: MyDialogueEnum.SLAVERBASE2_0200_DESTROY_TURRETS\n                ) { SaveOnSuccess = true };\n            m_objectives.Add(paralyzeDefense);\n\n            paralyzeDefense.OnMissionLoaded += ParalyzeDefenseOnMissionLoaded;\n            paralyzeDefense.OnMissionCleanUp += ParalyzeDefenseOnMissionUnloaded;\n\n\n            var unlockprison1 = new MyUseObjective(\n                MyTextsWrapperEnum.UNLOCK_PRISON_1,\n                MyMissionID.UNLOCK_PRISON_1,\n                MyTextsWrapperEnum.Blank,\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.SLAVER_BASE_2_PARALYZE_DEFENSE },\n                new MyMissionLocation(baseSector, (uint) EntityID.hub1),\n                MyTextsWrapperEnum.PressToHack,\n                MyTextsWrapperEnum.SecurityControlHUB,\n                MyTextsWrapperEnum.HackingProgress,\n                2000,\n                startDialogId: MyDialogueEnum.SLAVERBASE2_0300_TURRETS_DESTROYED\n                ) { SaveOnSuccess = false };\n            unlockprison1.OnMissionSuccess += m_Unlockprison1_OnMissionSuccess;\n            m_objectives.Add(unlockprison1);\n\n\n            var unlockprison2 = new MyUseObjective(\n                MyTextsWrapperEnum.UNLOCK_PRISON_2,\n                MyMissionID.UNLOCK_PRISON_2,\n                MyTextsWrapperEnum.Blank,\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.UNLOCK_PRISON_1 },\n                new MyMissionLocation(baseSector, (uint) EntityID.hub2),\n                MyTextsWrapperEnum.PressToHack,\n                MyTextsWrapperEnum.SecurityControlHUB,\n                MyTextsWrapperEnum.HackingProgress,\n                2000,\n                startDialogId: MyDialogueEnum.SLAVERBASE2_0400_FIRST_HUB_DESTROYED\n                ) { SaveOnSuccess = false };\n            m_objectives.Add(unlockprison2);\n\n\n            var talkAboutGenerator = new MyObjectiveDialog(\n                MyMissionID.SLAVER_BASE_2_TALK_ABOUT_GENERATOR,\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.UNLOCK_PRISON_2 },\n                MyDialogueEnum.SLAVERBASE2_0500_BOTH_HUBS_DESTROYED\n                ) { SaveOnSuccess = false };\n            m_objectives.Add(talkAboutGenerator);\n\n\n            var breakTheChains = new MyObjectiveDestroy(\n                MyTextsWrapperEnum.SLAVER_BASE_2_BREAK_THE_CHAINS,\n                MyMissionID.SLAVER_BASE_2_BREAK_THE_CHAINS,\n                MyTextsWrapperEnum.Blank,\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.SLAVER_BASE_2_TALK_ABOUT_GENERATOR },\n                new List<uint> { (uint) EntityID.generator_1 },\n                null,\n                true\n                ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudGenerator };\n            breakTheChains.OnMissionSuccess += BreakTheChains_OnMissionSuccess;\n            breakTheChains.Components.Add(new MyDetectorDialogue((uint)EntityID.GeneratorDetectorDummy, MyDialogueEnum.SLAVERBASE2_0600_GENERATOR_REACHED));\n            m_objectives.Add(breakTheChains);\n\n\n            var talkAboutPrisoners = new MyObjectiveDialog(\n                MyMissionID.SLAVER_BASE_2_TALK_ABOUT_PRISONERS,\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.SLAVER_BASE_2_BREAK_THE_CHAINS },\n                MyDialogueEnum.SLAVERBASE2_0700_GENERATOR_DESTROYED\n                ) { SaveOnSuccess = false };\n            m_objectives.Add(talkAboutPrisoners);\n\n\n            var freeSlaves = new MyMultipleUseObjective(\n                MyTextsWrapperEnum.SLAVER_BASE_2_FREE_SLAVES,\n                MyMissionID.SLAVER_BASE_2_FREE_SLAVES,\n                MyTextsWrapperEnum.Blank,\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.SLAVER_BASE_2_TALK_ABOUT_PRISONERS },\n                MyTextsWrapperEnum.UnlockCell,\n                MyTextsWrapperEnum.PrisonCell,\n                MyTextsWrapperEnum.UnlockingInProgress,\n                2000,\n                new List<uint>\n                    {\n                        (uint) EntityID.slave_1,\n                        (uint) EntityID.slave_2,\n                        (uint) EntityID.slave_3,\n                        (uint) EntityID.slave_4,\n                        (uint) EntityID.slave_5\n                    },\n                MyUseObjectiveType.Activating\n                )\n                {\n                    SaveOnSuccess = true,\n                    SuccessDialogId = MyDialogueEnum.SLAVERBASE2_1200_MISSION_COMPLETE\n                };\n            freeSlaves.OnObjectUsedSucces += OnFreeSlavesObjectiveSuccess;\n            m_objectives.Add(freeSlaves);\n\n            //var finalFreedom = new MyObjective( // One member of that list - its type defines the type of submission - MySubmission means fly to the dummypoint to success. Here it is var so you cannot call methods on it\n            //    new StringBuilder(\"Return to Valiant.\"), // Name of the submission\n            //    MyMissionID.SLAVER_BASE_2_FINAL_FREEDOM, // ID of the submission - must be added to MyMissions.cs\n            //    new StringBuilder(\"Return to Valiant.\\n\"), // Description of the submission\n            //    null,\n            //    this,\n            //    new MyMissionID[] { MyMissionID.SLAVER_BASE_2_FREE_SLAVES, MyMissionID.SLAVER_BASE_1_FREE_SLAVES_2, MyMissionID.SLAVER_BASE_1_FREE_SLAVES_3, MyMissionID.SLAVER_BASE_1_FREE_SLAVES_4, MyMissionID.SLAVER_BASE_1_FREE_SLAVES_5 }, // ID of submissions required to make this submission available - it is clear so this submission is the starting submission\n            //    new MyMissionLocation(baseSector, (uint)EntityID.FinalFreedom), // ID of dummy point of checkpoint\n            //    startDialogId: MyDialogueEnum.SLAVERBASE2_1200_MISSION_COMPLETE\n            //  ) { SaveOnSuccess = false }; // False means do not save game in that checkpointa\n            //m_objectives.Add(finalFreedom); // Adding this submission to the list of submissions of current mission\n        }\n\n        void OnFreeSlavesObjectiveSuccess(uint entityID)\n        {\n            m_slavesFreed++;\n\n            switch (m_slavesFreed)\n            {\n                case 1:\n                    MyScriptWrapper.PlayDialogue(MyDialogueEnum.SLAVERBASE2_0800_FIRST_CELL_UNLOCKED);\n                    break;\n                case 2:\n                    MyScriptWrapper.PlayDialogue(MyDialogueEnum.SLAVERBASE2_0900_SECOND_CELL_UNLOCKED);\n                    break;\n                case 3:\n                    MyScriptWrapper.PlayDialogue(MyDialogueEnum.SLAVERBASE2_1000_THIRD_CELL_UNLOCKED);\n                    break;\n                case 4:\n                    MyScriptWrapper.PlayDialogue(MyDialogueEnum.SLAVERBASE2_1100_FOURTH_CELL_UNLOCKED);\n                    break;\n                case 5:\n                    //MyScriptWrapper.PlayDialogue(MyDialogueEnum.SLAVERBASE2_1200_MISSION_COMPLETE);\n                    break;\n                default:\n                    Debug.Fail(\"should not get here! slaver base 2, too many prisoners?\");\n                    break;\n            }\n        }\n\n        void ParalyzeDefenseOnMissionLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.EntityDeath += OnMyParalyzeDefenseEntityDeath;\n        }\n\n        void ParalyzeDefenseOnMissionUnloaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.EntityDeath -= OnMyParalyzeDefenseEntityDeath;\n        }\n\n        void OnMyParalyzeDefenseEntityDeath(MyEntity entity1, MyEntity entity2)\n        {\n            if (m_slaverCaptainTalked)\n            {\n                return;\n            }\n\n            if (entity1.EntityId == null)\n                return;\n\n            if (entity1.EntityId.Value.NumericValue == (uint)EntityID.turret_1 ||\n                entity1.EntityId.Value.NumericValue == (uint)EntityID.turret_2 ||\n                entity1.EntityId.Value.NumericValue == (uint)EntityID.turret_3 ||\n                entity1.EntityId.Value.NumericValue == (uint)EntityID.turret_4 ||\n                entity1.EntityId.Value.NumericValue == (uint)EntityID.turret_5 ||\n                entity1.EntityId.Value.NumericValue == (uint)EntityID.turret_6 ||\n                entity1.EntityId.Value.NumericValue == (uint)EntityID.turret_5 ||\n                entity1.EntityId.Value.NumericValue == (uint)EntityID.turret_6)\n            {\n                MyScriptWrapper.PlayDialogue(MyDialogueEnum.SLAVERBASE2_0201_SLAVER_TALK);\n                m_slaverCaptainTalked = true;\n            }\n        }\n\n        void m_FreeSlaves_4_OnMissionSuccess(MyMissionBase sender)\n        {\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.freeslaves4spawn);\n        }\n\n        void m_FreeSlaves_2_OnMissionSuccess(MyMissionBase sender)\n        {\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.freeslaves2spawn);\n        }\n\n        void m_Unlockprison1_OnMissionSuccess(MyMissionBase sender)\n        {\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.unlockspawn);\n        }\n\n        void BreakTheChains_OnMissionSuccess(MyMissionBase sender)\n        {\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.generatorspawn);\n\n            foreach (var chainEffect in m_chainEffects)\n            {\n                MyScriptWrapper.SetEntityEnabled(chainEffect, false);\n            }\n        }\n\n        void Return_OnMissionLoaded(MyMissionBase sender)\n        {\n            MySmallShipBot transport1 = (MySmallShipBot)MyScriptWrapper.GetEntity((uint)EntityID.ShipTransport1);\n            transport1.SetWaypointPath(\"transport\");\n            transport1.Patrol();\n            MySmallShipBot transport2 = (MySmallShipBot)MyScriptWrapper.GetEntity((uint)EntityID.ShipTransport2);\n            transport2.SetWaypointPath(\"transport\");\n            transport2.Patrol();\n        }\n\n        public override void Load() // Code in that block will be called on the load of the sector\n        {\n            base.Load();\n            m_slaverCaptainTalked = false;\n            m_slavesFreed = 0;\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.StressOrTimeRush); // Sets music group to be played in the sector - no matter if the mission is running or not\n            MyScriptWrapper.EntityDeath += MyScriptWrapperOnEntityDeath;\n            MyScriptWrapper.EnsureInventoryItem(MyScriptWrapper.GetCentralInventory(), MyMwcObjectBuilderTypeEnum.SmallShip_HackingTool, (int)MyMwcObjectBuilder_SmallShip_HackingTool_TypesEnum.Level_2);\n        }\n\n        private void MyScriptWrapperOnEntityDeath(MyEntity entity1, MyEntity entity2)\n        {\n            if (entity1.EntityId == null)\n                return;\n\n            if (entity1.EntityId.Value.NumericValue == (uint)EntityID.ShipTransport1 || entity1.EntityId.Value.NumericValue == (uint)EntityID.ShipTransport2)\n            {\n                Fail(MyTextsWrapperEnum.Fail_TransportDestroyed);\n            }\n        }\n\n\n        public override void Unload()\n        {\n            base.Unload();\n            MyScriptWrapper.EntityDeath -= MyScriptWrapperOnEntityDeath;\n        }\n\n    }\n\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/SinglePlayer/MySlaverBaseMission.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing MinerWars.AppCode.Game.Missions.Objectives;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.AppCode.Game.Audio.Dialogues;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.Resources;\n\nnamespace MinerWars.AppCode.Game.Missions.SinglePlayer\n{\n    class MySlaverBaseMission : MyMission\n    {\n        #region EntityIDs\n\n        List<List<uint>> m_ValidateIDlists;\n\n        enum EntityID\n        {\n            StartLocation = 4837,\n            Navigation_Dummy = 23559,\n            Navigation_Dummy_2 = 24104,\n            Prison_Dummy = 4838,\n            Bars_1 = 849,\n            Bars_2 = 560,\n            Bars_3 = 1319,\n            Bars_4 = 434,\n            Bars_5 = 705,\n            Pit_Dummy = 6501,\n            Escape_Dummy = 20321,\n            Generator_Spawn_1 = 4966,\n            Generator_Spawn_2 = 4946,\n            Prison_Spawn_1 = 4947,\n            Prison_Spawn_2 = 23026,\n            Prison_Spawm_3 = 23027,\n\n            Batteries_Spawn = 26257,\n            Mothership_Spawn_1 = 55202,\n            Mothership_Spawn_2 = 55741,\n            Mothership_Spawn_3 = 55740,\n\n            Battery_1 = 25723,\n            Battery_2 = 25724,\n            Transmitter = 641,\n            //Light_1 = 7883,\n            //Light_2 = 7885,\n            //Light_3 = 8345,\n            PC_1 = 28173,\n            //  PC_2 = 28174,\n            PC_3 = 28175,\n            PC_4 = 28176,\n\n            PC_6 = 28178,\n            PC_7 = 28140,\n            PC_8 = 28141,\n            // PC_9 = 28142,\n            PC_10 = 28143,\n            PC_11 = 28138,\n\n            PC_13 = 28160,\n            PC_14 = 28161,\n            //     PC_15 = 28162,\n            PC_16 = 28159,\n            //   PC_17 = 28158,\n            PC_18 = 28157,\n            PC_19 = 31380,\n            //   PC_20 = 31381,\n            //   PC_21 = 31382,\n            PC_22 = 31383,\n            //  PC_23 = 31384,\n            PC_24 = 31385,\n            //  PC_25 = 31386,\n            PC_26 = 31387,\n            //  PC_27 = 31390,\n            PC_28 = 31391,\n            //  PC_29 = 31388,\n            PC_30 = 31389,\n            PC_31 = 31392,\n            PC_32 = 31393,\n            // PC_33 = 31362,\n            PC_34 = 31363,\n            // PC_35 = 31364,\n            PC_36 = 31365,\n            // PC_37 = 31366,\n            PC_38 = 31370,\n            // PC_39 = 31371,\n            PC_40 = 31372,\n            // PC_41 = 31367,\n            PC_42 = 31368,\n            // PC_43 = 31369,\n            PC_44 = 28122,\n            PC_45 = 28123,\n            PC_46 = 31414,\n            PC_47 = 28124,\n            PC_48 = 31415,\n            PC_49 = 32585,\n            PC_50 = 32587,\n            PC_51 = 32588,\n            PC_52 = 32586,\n            PC_53 = 52099,\n            Hack_PC = 32591,\n            Hide_Doors_1 = 35740,\n            Hide_Doors_2 = 5709,\n            Hide_Doors_3 = 5707,\n            Hide_Doors_4 = 5708,\n            Hidden_Doors_1 = 35741,\n            Hidden_Doors_2 = 35742,\n            Hidden_Doors_3 = 35743,\n            HangarDoorsHub = 50917,\n            Fake_escape = 38219,\n            CIC_Spawn = 38231,\n            Navigation = 40615,\n            Generator_1 = 11489,\n            Generator_2 = 12017,\n            Mothership_Bars_1 = 42386,\n            Mothership_Bars_2 = 42389,\n            Mothership_Bars_3 = 42387,\n            Mothership_Bars_4 = 42388,\n            Bar_pit = 3604,\n            Mothership_container = 264,\n            Cargo_Bay_Doors = 292,\n            Hangar_Doors = 298,\n            Endless_spawn = 54560,\n        }\n\n        List<uint> m_closeddoors = new List<uint>\n            {\n                456,\n                787,\n                921,\n                373,\n                506,\n                1654,\n                779,\n                1337,\n                328,\n                1024,\n                1025,\n                1590,\n                623,\n                1778,\n                1063,\n                1473,\n                458,\n                1412,\n                1125,\n                624,\n                1029\n            };\n\n        List<uint> m_finalparticle = new List<uint>\n            {\n                48578,\n                48597,\n                48610,\n                48613,\n                48615,\n                48617,\n                48620,\n                48622,\n                48624,\n                48626\n            };\n\n        List<uint> m_standbyparticle = new List<uint>\n            {\n                15716,\n                15717,\n                15427,\n                15718,\n                15719,\n                15153,\n                15151,\n                15150,\n                15149,\n                14712\n            };\n\n        List<uint> m_openedddoors = new List<uint>\n            {\n                48648,\n                48649,\n                48652,\n                48651,\n                48650,\n                48657,\n                48653,\n                48646,\n                48645,\n                48642,\n                48641,\n                48638,\n                48640,\n                48643,\n                48644,\n                48647,\n                48639,\n                16777819,\n                16777817,\n                16777816\n            };\n\n        List<uint> m_pilotsSpawn = new List<uint>\n            {\n                12785,\n                12796,\n                12797,\n                12794,\n                /* 12798*/ 12795\n            };\n\n        List<uint> m_closeentiites = new List<uint>\n            {\n                28090,\n                28089,\n                28088,\n                28092,\n                28100,\n                28096,\n                28094,\n                28103,\n                37481,\n                28105,\n                38173,\n                38174,\n                28114,\n                28116,\n                31402,\n                31404,\n                43556,\n                43555,\n                28172,\n                28137,\n                28156,\n                31993,\n                31994,\n                32001,\n                31374,\n                31996,\n                32002,\n                32003,\n                31998,\n                31997,\n                32004,\n                32005,\n                32000,\n                32585,\n                32586,\n                32588,\n                32587,\n                32008,\n                38172,\n                32009,\n                38171,\n                //28120,\n                28163,\n                31341,\n                31373,\n                31995,\n                31340,\n                31339,\n                31375,\n                31376,\n                31335,\n                31334,\n                31377,\n                31378,\n                31333,\n                28183,\n                28184,\n                31343,\n                31355,\n                31356,\n                31342,\n                31357,\n                31345,\n                31346,\n                31358,\n                31347,\n                31360,\n                //31348,\n                //31359,\n                38176,\n                31416,\n                31417,\n                31419,\n                31417,\n                31419,\n                28083,\n                28082,\n                28075,\n                28073,\n                28070,\n                28069,\n                28068,\n                28063,\n                28071,\n                28057,\n                28053,\n                28056,\n                28052,\n                28046,\n                28178,\n                40020,\n                38180,\n                38179,\n                28031,\n                28043,\n                49242,\n                38225,\n                38224,\n                18251,\n                6182,\n                6183,\n                6184,\n                6185,\n                6186,\n                6188,\n                6187,\n                6190,\n                6189,\n                6192,\n                6191,\n                6152,\n                6151,\n                6153,\n                6154,\n                6155,\n                6156,\n                6157,\n                6158,\n                6159,\n                6160,\n                6162,\n                6161,\n                6167,\n                6168,\n                6165,\n                6166,\n                6163,\n                6164,\n                5804,\n                5803,\n                5806,\n                5805,\n                5808,\n                5807,\n                5801,\n                5802,\n                5799,\n                5800,\n                5797,\n                5798,\n                5795,\n                5796,\n                5794,\n                5793,\n                5791,\n                5792,\n                6067,\n                6068,\n                6070,\n                6071,\n                6072,\n                6066,\n                6065,\n                6064,\n                6063,\n                6062,\n                6061,\n                42389,\n                42386,\n                42388,\n                42387,\n                7712,\n                41211,\n                7709\n            };\n\n        List<uint> m_doors = new List<uint>\n            {\n                49801,\n                49799,\n                49800\n            };\n\n        List<uint> m_turrets = new List<uint>\n            {\n                1917,\n                1916,\n                1914,\n                1915,\n                1913\n            };\n\n        public override void ValidateIds() // checks if all IDs in enum are loaded correctly\n        {\n            foreach (var value in Enum.GetValues(typeof (EntityID)))\n            {\n                MyScriptWrapper.GetEntity((uint) ((value as EntityID?).Value));\n            }\n            foreach (\n                List<uint> list in\n                    new List<List<uint>>\n                        {\n                            m_closeddoors,\n                            m_finalparticle,\n                            m_standbyparticle,\n                            m_openedddoors,\n                            m_pilotsSpawn,\n                            m_closeentiites,\n                            m_doors\n                        })\n            {\n                foreach (var item in list)\n                {\n                    MyScriptWrapper.GetEntity(item);\n                }\n            }\n\n        }\n\n        List<uint> m_PC = new List<uint>\n            {\n                (uint) EntityID.PC_1,\n                (uint) EntityID.PC_3,\n                (uint) EntityID.PC_4,\n                (uint) EntityID.PC_6,\n                (uint) EntityID.PC_7,\n                (uint) EntityID.PC_8,\n                (uint) EntityID.PC_10,\n                (uint) EntityID.PC_11,\n                (uint) EntityID.PC_13,\n                (uint) EntityID.PC_14,\n                (uint) EntityID.PC_18,\n                (uint) EntityID.PC_19,\n                (uint) EntityID.PC_22,\n                (uint) EntityID.PC_24,\n                (uint) EntityID.PC_26,\n                (uint) EntityID.PC_28,\n                (uint) EntityID.PC_30,\n                (uint) EntityID.PC_31,\n                (uint) EntityID.PC_32,\n                (uint) EntityID.PC_34,\n                (uint) EntityID.PC_36,\n                (uint) EntityID.PC_38,\n                (uint) EntityID.PC_40,\n                (uint) EntityID.PC_42,\n                (uint) EntityID.PC_49,\n                (uint) EntityID.PC_50,\n                (uint) EntityID.PC_44,\n                (uint) EntityID.PC_45,\n                (uint) EntityID.PC_46,\n                (uint) EntityID.PC_51,\n                (uint) EntityID.PC_52,\n                (uint) EntityID.PC_47,\n                (uint) EntityID.PC_48,\n                (uint) EntityID.PC_53,\n                (uint) EntityID.PC_16\n            };\n\n        List<uint> m_Bars = new List<uint>\n            {\n                (uint) EntityID.Bars_1,\n                (uint) EntityID.Bars_2,\n                (uint) EntityID.Bars_3,\n                (uint) EntityID.Bars_4,\n                (uint) EntityID.Bars_5\n            };\n\n        List<uint> TurnOff = new List<uint>\n            {\n                (uint) EntityID.Transmitter,\n                //(uint) EntityID.Light_1,\n                //(uint) EntityID.Light_2,\n                //(uint) EntityID.Light_3\n            };\n\n        List<uint> Batteries = new List<uint>\n            {\n                (uint) EntityID.Battery_1,\n                (uint) EntityID.Battery_2,\n            };\n\n        List<uint> Generators = new List<uint>\n            {\n                (uint) EntityID.Generator_1,\n                (uint) EntityID.Generator_2,\n            };\n\n        List<uint> Mothership_Bars = new List<uint>\n            {\n                (uint) EntityID.Mothership_Bars_1,\n                (uint) EntityID.Mothership_Bars_2,\n                (uint) EntityID.Mothership_Bars_3,\n                (uint) EntityID.Mothership_Bars_4\n            };\n\n        List<uint> bar_pit = new List<uint>\n            {\n                (uint) EntityID.Bar_pit\n            };\n\n        #endregion\n\n        #region Objectives\n\n        MyObjectiveDestroy m_freeSlaves;\n        MyObjectiveDestroy m_freeSlavesMS;\n        MyObjective m_hackTransmitter;\n        MyObjective m_hackHangar;\n        MyObjective m_openHangarDoors;\n        //private MyObjective m_returnToMothership;\n\n        #endregion\n\n        #region Fields\n\n        MyEntity m_fourthReichMS;\n        Vector3 m_fourthReichMS_UpDestination = new Vector3(315.974f, 11599.000f, 7698.000f);\n        Vector3 m_fourthReichMS_BackDestination = new Vector3(315.974f, 11599.000f, 9780.000f);\n        Vector3 m_fourthReichMS_Up2Destination = new Vector3(315.974f, 13500.000f, 9780.000f);\n        bool m_moveMS_Up;\n        bool m_moveMS_Back;\n        bool m_moveMS_Up2;\n        bool m_moveMS_Out;\n        float m_moveMS_Speed;\n        int m_moveMS_AccelerateCounter;\n        //private MySubmisisonDefend m_defendGenerator;\n\n        #endregion\n\n        public MySlaverBaseMission()\n        {\n            m_ValidateIDlists = new List<List<uint>>();\n            m_ValidateIDlists.Add(m_closeddoors);\n            m_ValidateIDlists.Add(m_finalparticle);\n            m_ValidateIDlists.Add(m_openedddoors);\n            m_ValidateIDlists.Add(m_standbyparticle);\n            m_ValidateIDlists.Add(m_pilotsSpawn);\n            m_ValidateIDlists.Add(m_closeentiites);\n            ID = MyMissionID.SLAVER_BASE_1; /* ID must be added to MyMissions.cs */\n            Name = MyTextsWrapperEnum.SLAVER_BASE_GRAND_BURROW;\n            Description = MyTextsWrapperEnum.SLAVER_BASE_GRAND_BURROW_Description;\n            DebugName = new StringBuilder(\"09b-Slaver base Grand Burrow\"); // Nazev mise\n\n            Flags = MyMissionFlags.Story;\n\n            MyMwcVector3Int baseSector = new MyMwcVector3Int(2052452, 0, -10533886); // Story sector of the script\n\n            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation); // Starting dummy point\n\n            RequiredMissions = new MyMissionID[] { MyMissionID.FORT_VALIANT }; // mise ktere musi byt splneny pred prijetim teto mise\n            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.SLAVER_BASE_1_DIALOG_10 };\n            RequiredActors = new MyActorEnum[] { MyActorEnum.MARCUS, MyActorEnum.MADELYN, MyActorEnum.TARJA, MyActorEnum.VALENTIN };\n\n            m_objectives = new List<MyObjective>(); // Creating of list of submissions\n\n\n            // -------------- START DEFINICE SUBMISE ---------------------\n\n            var talkWith = new MyObjectiveDialog(\n                (MyTextsWrapperEnum.SLAVER_BASE_1_DIALOG_1_Name),\n                MyMissionID.SLAVER_BASE_1_DIALOG_1,\n                (MyTextsWrapperEnum.SLAVER_BASE_1_DIALOG_1_Description),\n                null,\n                this,\n                new MyMissionID[] { },\n                dialogId: MyDialogueEnum.SLAVERBASE_0100_INTRODUCE\n                ) { SaveOnSuccess = false };\n            m_objectives.Add(talkWith);\n\n\n            var DestroyGenerators = new MyObjectiveDestroy(\n                // Var is used to call functions on that member\n                (MyTextsWrapperEnum.SLAVER_BASE_1_DESTROY_GENERATOR_Name),\n                MyMissionID.SLAVER_BASE_1_DESTROY_GENERATOR,\n                (MyTextsWrapperEnum.SLAVER_BASE_1_DESTROY_GENERATOR_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.SLAVER_BASE_1_DIALOG_1 },\n                Generators,\n                false\n                ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudGenerator };\n            m_objectives.Add(DestroyGenerators); // pridani do seznamu submisi\n            DestroyGenerators.OnMissionSuccess += DestroyGeneratorMSSuccess;\n\n\n            var talkWith2 = new MyObjectiveDialog(\n                (MyTextsWrapperEnum.SLAVER_BASE_1_DIALOG_2_Name),\n                MyMissionID.SLAVER_BASE_1_DIALOG_2,\n                (MyTextsWrapperEnum.SLAVER_BASE_1_DIALOG_2_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.SLAVER_BASE_1_DESTROY_GENERATOR },\n                dialogId: MyDialogueEnum.SLAVERBASE_0200_GENERATORS_DESTROYED\n                ) { SaveOnSuccess = false };\n            m_objectives.Add(talkWith2);\n\n\n            var DestroyBatteries = new MyObjectiveDestroy(\n                // Var is used to call functions on that member\n\n                (MyTextsWrapperEnum.SLAVER_BASE_1_DESTROY_BATTERIES_Name),\n                MyMissionID.SLAVER_BASE_1_DESTROY_BATTERIES,\n                (MyTextsWrapperEnum.SLAVER_BASE_1_DESTROY_BATTERIES_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.SLAVER_BASE_1_DIALOG_2 },\n                Batteries,\n                false\n                ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudBatteries };\n            m_objectives.Add(DestroyBatteries); // pridani do seznamu submisi\n            DestroyBatteries.OnMissionSuccess += DestroyBatteriesMSSuccess;\n\n\n            var FindPrison = new MyObjective( // One member of that list - je to MyObjective takze cilem je doletet do checkpointu\n                (MyTextsWrapperEnum.SLAVER_BASE_1_FIND_PRISON_Name), // nazev submise\n                MyMissionID.SLAVER_BASE_1_FIND_PRISON, // id submise\n                (MyTextsWrapperEnum.SLAVER_BASE_1_FIND_PRISON_Description), // popis submise\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.SLAVER_BASE_1_DESTROY_BATTERIES }, // ID submisi ktere musi byt splneny - je to prazdne takze je to prvni submise\n                new MyMissionLocation(baseSector, (uint)EntityID.Prison_Dummy),\n                startDialogId: MyDialogueEnum.SLAVERBASE_0300_BATTERIES_DESTROYED// ID of dummy point of checkpoint\n                ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudPrison }; // nastaveni save na checkpointu nebo ne\n            m_objectives.Add(FindPrison); // pridani do seznamu submisi\n            FindPrison.OnMissionSuccess += FindPrisonMSSuccess;\n\n\n            m_freeSlaves = new MyObjectiveDestroy(\n                // Var is used to call functions on that member\n                (MyTextsWrapperEnum.SLAVER_BASE_1_FREE_SLAVES_Name),\n                MyMissionID.SLAVER_BASE_1_FREE_SLAVES,\n                (MyTextsWrapperEnum.SLAVER_BASE_1_FREE_SLAVES_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.SLAVER_BASE_1_FIND_PRISON },\n                m_Bars,\n                false\n                ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudCage };\n            m_objectives.Add(m_freeSlaves); // pridani do seznamu submisi\n\n\n            var talkWith4 = new MyObjectiveDialog(\n                MyMissionID.SLAVER_BASE_1_DIALOG_4,\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.SLAVER_BASE_1_FREE_SLAVES },\n                dialogId: MyDialogueEnum.SLAVERBASE_0400_SLAVES_SAVED\n                ) { SaveOnSuccess = true };\n            m_objectives.Add(talkWith4);\n\n\n            m_hackHangar = new MyObjectiveEnablePrefabs(\n                (MyTextsWrapperEnum.SLAVER_BASE_1_HACK_HANGAR_Name),\n                MyMissionID.SLAVER_BASE_1_HACK_HANGAR,\n                (MyTextsWrapperEnum.SLAVER_BASE_1_HACK_HANGAR_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.SLAVER_BASE_1_DIALOG_4 },\n                null,\n                new List<uint> { (uint)EntityID.Hack_PC },\n                new List<uint> { (uint)EntityID.Hangar_Doors }\n                ) { HudName = MyTextsWrapperEnum.HudHub };\n            m_objectives.Add(m_hackHangar);\n            m_hackHangar.OnMissionSuccess += HangarOpen;\n\n            m_freeSlavesMS = new MyObjectiveDestroy( // Var is used to call functions on that member\n               (MyTextsWrapperEnum.SLAVER_BASE_1_FREE_SLAVES_2_Name),\n               MyMissionID.SLAVER_BASE_1_FREE_SLAVES_2,\n               (MyTextsWrapperEnum.SLAVER_BASE_1_FREE_SLAVES_2_Description),\n               null,\n               this,\n               new MyMissionID[] { MyMissionID.SLAVER_BASE_1_HACK_HANGAR },\n               Mothership_Bars,\n               false\n           ) { SaveOnSuccess = false, ToDestroyCount = 1, HudName = MyTextsWrapperEnum.HudCage };\n            m_objectives.Add(m_freeSlavesMS); // pridani do seznamu submisi\n\n\n            var talkWith6 = new MyObjectiveDialog(\n                (MyTextsWrapperEnum.SLAVER_BASE_1_DIALOG_6_Name),\n                MyMissionID.SLAVER_BASE_1_DIALOG_6,\n                (MyTextsWrapperEnum.SLAVER_BASE_1_DIALOG_6_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.SLAVER_BASE_1_FREE_SLAVES_2, },\n                dialogId: MyDialogueEnum.SLAVERBASE_0600_MOTHERSHIP_EMPTY\n                ) { SaveOnSuccess = false };\n            m_objectives.Add(talkWith6);\n\n\n            var findSlaves = new MyObjectiveDestroy(\n                // Var is used to call functions on that member\n                (MyTextsWrapperEnum.SLAVER_BASE_1_FIND_SLAVES_Name),\n                MyMissionID.SLAVER_BASE_1_FIND_SLAVES,\n                (MyTextsWrapperEnum.SLAVER_BASE_1_FIND_SLAVES_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.SLAVER_BASE_1_DIALOG_6 },\n                bar_pit,\n                // ID of dummy point of checkpoint\n                false\n                ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudCage };\n            findSlaves.MissionEntityIDs.Add((uint)EntityID.Bar_pit);\n            m_objectives.Add(findSlaves); // pridani do seznamu submisi\n\n\n            var talkWith7 = new MyObjectiveDialog(\n                (MyTextsWrapperEnum.SLAVER_BASE_1_DIALOG_7_Name),\n                MyMissionID.SLAVER_BASE_1_DIALOG_7,\n                (MyTextsWrapperEnum.SLAVER_BASE_1_DIALOG_7_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.SLAVER_BASE_1_FIND_SLAVES, },\n                dialogId: MyDialogueEnum.SLAVERBASE_0700_PIT_EMPTY\n                ) { SaveOnSuccess = false };\n            m_objectives.Add(talkWith7);\n            talkWith7.OnMissionLoaded += FreePilotsMSSuccess;\n\n\n            var destroyEnemies = new MyDestroyWavesObjective(\n                // Var is used to call functions on that member\n                (MyTextsWrapperEnum.SLAVER_BASE_1_DESTROY_ENEMIES_Name),\n                MyMissionID.SLAVER_BASE_1_DESTROY_ENEMIES,\n                (MyTextsWrapperEnum.SLAVER_BASE_1_DESTROY_ENEMIES_Description),\n                null,\n                this,\n                new[] { MyMissionID.SLAVER_BASE_1_DIALOG_7 }\n                //new List<uint>\n                //    {\n                //        (uint) EntityID.Mothership_Spawn_1,\n                //        (uint) EntityID.Mothership_Spawn_2,\n                //        (uint) EntityID.Mothership_Spawn_3\n                //    },\n                ) { SaveOnSuccess = false };\n            destroyEnemies.AddWave(new List<uint> { (uint)EntityID.Mothership_Spawn_1 });\n            destroyEnemies.AddWave(new List<uint> { (uint)EntityID.Mothership_Spawn_2 });\n            destroyEnemies.AddWave(new List<uint> { (uint)EntityID.Mothership_Spawn_3 });\n            destroyEnemies.OnMissionSuccess += EnemiesDestroyed;\n            m_objectives.Add(destroyEnemies); // pridani do seznamu submisi\n\n            var talkWith9 = new MyObjectiveDialog(\n                (MyTextsWrapperEnum.SLAVER_BASE_1_DIALOG_9_Name),\n                MyMissionID.SLAVER_BASE_1_DIALOG_9,\n                (MyTextsWrapperEnum.SLAVER_BASE_1_DIALOG_9_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.SLAVER_BASE_1_DESTROY_ENEMIES },\n                dialogId: MyDialogueEnum.SLAVERBASE_0800_ENEMIES_DESTROYED\n                ) { SaveOnSuccess = false };\n            m_objectives.Add(talkWith9);\n\n\n            m_openHangarDoors = new MyObjectiveEnablePrefabs(\n                (MyTextsWrapperEnum.SLAVER_BASE_1_HACK_NUKE_Name),\n                MyMissionID.SLAVER_BASE_1_HACK_NUKE,\n                (MyTextsWrapperEnum.SLAVER_BASE_1_HACK_NUKE_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.SLAVER_BASE_1_DIALOG_9 },\n                null,\n                new List<uint> { (uint)EntityID.HangarDoorsHub },\n                new List<uint> { (uint)EntityID.Cargo_Bay_Doors }\n                ) { HudName = MyTextsWrapperEnum.HudHub };\n            m_objectives.Add(m_openHangarDoors);\n            m_openHangarDoors.OnMissionSuccess += MSEscape;\n            m_openHangarDoors.OnMissionSuccess += MoveFourthReichMSStart;\n          \n\n\n            var talkWith10 = new MyTimedObjective(\n                (MyTextsWrapperEnum.SLAVER_BASE_1_DIALOG_10_Name),\n                MyMissionID.SLAVER_BASE_1_DIALOG_10,\n                (MyTextsWrapperEnum.SLAVER_BASE_1_DIALOG_10_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.SLAVER_BASE_1_HACK_NUKE },\n                TimeSpan.FromSeconds(50)\n                )\n                {\n                    SaveOnSuccess = false,\n                    SuccessDialogId = MyDialogueEnum.SLAVERBASE_1100_FAKE_ESCAPED,\n                    DisplayCounter = false,\n                };\n            talkWith10.MissionEntityIDs.Add((uint) EntityID.Escape_Dummy);\n            m_objectives.Add(talkWith10);\n        }\n\n        void HideMothership()\n        {\n            MyScriptWrapper.HideEntity(m_fourthReichMS);\n\n            foreach (var item in m_standbyparticle)\n            {\n                MyScriptWrapper.SetEntityEnabled(item, false);\n            }\n            foreach (var item in m_finalparticle)\n            {\n                MyScriptWrapper.SetEntityEnabled(item, false);\n            }\n        }\n\n        void DestroyGeneratorMSSuccess(MyMissionBase sender)\n        {\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Generator_Spawn_1);\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Generator_Spawn_2);\n        }\n\n        void DestroyBatteriesMSSuccess(MyMissionBase sender)\n        {\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Batteries_Spawn);\n            foreach (var Light in TurnOff)\n            {\n                MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.GetEntity(Light), false);\n            }\n        }\n\n        void FindPrisonMSSuccess(MyMissionBase sender)\n        {\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Prison_Spawn_1);\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Prison_Spawn_2);\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.CIC_Spawn);\n        }\n\n        void MSEscape(MyMissionBase sender)\n        {\n            foreach (var Door in m_openedddoors)\n            {\n                MyScriptWrapper.UnhideEntity(MyScriptWrapper.GetEntity(Door));\n            }\n            foreach (var Door in m_closeddoors)\n            {\n                MyScriptWrapper.HideEntity(MyScriptWrapper.GetEntity(Door));\n            }\n            foreach (var spawn in m_pilotsSpawn)\n            {\n                foreach (var bot in MyScriptWrapper.GetSpawnPointBots(spawn))\n                {\n                    if (bot.Ship != null) // If bots are already spawned\n                    {\n                        if (!bot.Ship.IsDead())\n                        {\n                            bot.Ship.MarkForClose();\n                        }\n                    }\n                }\n            }\n\n            foreach (var Entity in m_closeentiites)\n            {\n                var item = MyScriptWrapper.TryGetEntity(Entity);\n                if (item != null)\n                {\n                    item.MarkForClose();\n                }\n                MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.Victory, 3);\n\n            }\n            MyScriptWrapper.SetEntityPriority(MyScriptWrapper.GetEntity((uint)EntityID.Mothership_container), -1);\n            foreach (var Entity in m_PC)\n            {\n                var item = MyScriptWrapper.TryGetEntity(Entity);\n                if (item != null)\n                {\n                    item.MarkForClose();\n                }\n               \n            }\n\n        \n            MyScriptWrapper.UnhideEntity(MyScriptWrapper.GetEntity((uint)EntityID.Hide_Doors_1));\n            MyScriptWrapper.UnhideEntity(MyScriptWrapper.GetEntity((uint)EntityID.Hide_Doors_2));\n            MyScriptWrapper.UnhideEntity(MyScriptWrapper.GetEntity((uint)EntityID.Hide_Doors_3));\n            MyScriptWrapper.UnhideEntity(MyScriptWrapper.GetEntity((uint)EntityID.Hide_Doors_4));\n            MyScriptWrapper.HideEntity(MyScriptWrapper.GetEntity((uint)EntityID.Hidden_Doors_1));\n            MyScriptWrapper.HideEntity(MyScriptWrapper.GetEntity((uint)EntityID.Hidden_Doors_2));\n            MyScriptWrapper.HideEntity(MyScriptWrapper.GetEntity((uint)EntityID.Hidden_Doors_3));\n            foreach (var Doors in m_doors)\n            {\n                MyScriptWrapper.UnhideEntity(MyScriptWrapper.GetEntity(Doors));\n            }\n        }\n        void EnemiesDestroyed(MyMissionBase sender)\n        {\n            MyScriptWrapper.StopTransition(3);\n        }\n\n        void HangarOpen(MyMissionBase sender)\n        {\n            MyScriptWrapper.UnhideEntity(MyScriptWrapper.GetEntity((uint)EntityID.Hidden_Doors_1));\n            MyScriptWrapper.UnhideEntity(MyScriptWrapper.GetEntity((uint)EntityID.Hidden_Doors_2));\n            MyScriptWrapper.UnhideEntity(MyScriptWrapper.GetEntity((uint)EntityID.Hidden_Doors_3));\n            MyScriptWrapper.HideEntity(MyScriptWrapper.GetEntity((uint)EntityID.Hide_Doors_1));\n            MyScriptWrapper.HideEntity(MyScriptWrapper.GetEntity((uint)EntityID.Hide_Doors_2));\n            MyScriptWrapper.HideEntity(MyScriptWrapper.GetEntity((uint)EntityID.Hide_Doors_3));\n            MyScriptWrapper.HideEntity(MyScriptWrapper.GetEntity((uint)EntityID.Hide_Doors_4));\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Prison_Spawm_3);\n        }\n\n     /*   void FreeMothershipMSSuccess(MyMissionBase sender)\n        {\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Mothership_Spawn_1);\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Mothership_Spawn_2);\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Mothership_Spawn_3);\n            sender.OnMissionSuccess -= FreeMothershipMSSuccess;\n        \n        }*/\n\n        void FreePilotsMSSuccess(MyMissionBase sender)\n        {\n            foreach (var spawn in m_pilotsSpawn)\n            {\n                MyScriptWrapper.ActivateSpawnPoint(spawn);\n            }\n            MyScriptWrapper.DeactivateSpawnPoint((uint)EntityID.Endless_spawn);\n            //MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Mothership_Spawn_1);\n            //MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Mothership_Spawn_2);\n            //MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Mothership_Spawn_3);\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.HeavyFight, 3);\n\n            //sender.OnMissionSuccess -= FreePilotsMSSuccess;\n        }\n\n        /*\n        void Hide(MyMissionBase sender)\n        {\n            MyScriptWrapper.HideEntity(m_fourthReichMS);\n            sender.OnMissionSuccess -= Hide;\n        }\n          */\n     \n        /* void DestroyMSSuccess2(MyMissionBase sender)\n         {\n             MyScriptWrapper.SetEntityMode(MyScriptWrapper.TryGetEntity(4723), false);\n             MyScriptWrapper.SetEntityMode(MyScriptWrapper.TryGetEntity(4719), false);\n             MyScriptWrapper.SetEntityMode(MyScriptWrapper.TryGetEntity(4709), false);\n             MyScriptWrapper.SetEntityMode(MyScriptWrapper.TryGetEntity(4705), false);\n             MyScriptWrapper.SetEntityMode(MyScriptWrapper.TryGetEntity(4687), false);\n             MyScriptWrapper.SetEntityMode(MyScriptWrapper.TryGetEntity(4691), false);\n             MyScriptWrapper.SetEntityMode(MyScriptWrapper.TryGetEntity(4677), false);\n            \n             sender.OnMissionSuccess -= DestroyMSSuccess2;\n         }*/\n        \n        \n        public override void Load() // vykona se jednou na zacatku\n        {\n            // MyScriptWrapper.SetEntityPriority(m_fourthReichMS, -1);\n            MyScriptWrapper.EnsureInventoryItem(MyScriptWrapper.GetCentralInventory(), MyMwcObjectBuilderTypeEnum.SmallShip_HackingTool, (int)MyMwcObjectBuilder_SmallShip_HackingTool_TypesEnum.Level_2);\n\n            //MyScriptWrapper.HideEntity(MyScriptWrapper.GetEntity(\"Marcus\"));\n            foreach (var turret in m_turrets)\n            {\n                MyScriptWrapper.RemoveEntityMark(MyScriptWrapper.GetEntity(turret));\n            }\n            foreach (var doors in m_doors)\n            {\n                MyScriptWrapper.HideEntity(MyScriptWrapper.GetEntity(doors));\n            }\n            m_fourthReichMS = MyScriptWrapper.GetEntity((uint)EntityID.Mothership_container);\n            m_moveMS_Up = false;\n            m_moveMS_Back = false;\n            m_moveMS_Up2 = false;\n            m_moveMS_Out = false;\n            m_moveMS_Speed = 70f;\n            m_moveMS_AccelerateCounter = 0;\n            MyScriptWrapper.HideEntity(MyScriptWrapper.GetEntity((uint)EntityID.Hidden_Doors_1));\n            MyScriptWrapper.HideEntity(MyScriptWrapper.GetEntity((uint)EntityID.Hidden_Doors_2));\n            MyScriptWrapper.HideEntity(MyScriptWrapper.GetEntity((uint)EntityID.Hidden_Doors_3));\n            //m_returnToMothership.OnMissionSuccess += Hide;\n            foreach (var Door in m_openedddoors)\n            {\n                MyScriptWrapper.HideEntity(MyScriptWrapper.GetEntity(Door));\n            }\n            foreach (var PC in m_PC)\n            {\n                MyScriptWrapper.RemoveEntityMark(MyScriptWrapper.GetEntity(PC));\n            }\n           \n            base.Load();  \n        }\n\n        public override void Unload()\n        {\n            MyScriptWrapper.StopTransition(3);\n            m_fourthReichMS = null;\n            base.Unload();\n        }\n\n\n\n        public override void Update()//vola se v kazdem snimku\n        {\n            base.Update();\n            if (m_moveMS_Up)\n            {\n                foreach (var item in m_standbyparticle)\n                {\n                    MyEntity particle = MyScriptWrapper.GetEntity(item);\n                    MyScriptWrapper.SetEntityEnabled(particle, true);\n                    MoveMotherShipForward(particle, new Vector3(0, m_moveMS_Speed, 0));\n                }\n                foreach (var item in m_finalparticle)\n                {\n                    MyEntity particle = MyScriptWrapper.GetEntity(item);\n                    MoveMotherShipForward(particle, new Vector3(0, m_moveMS_Speed, 0));\n                }\n                m_moveMS_Back = MoveMotherShipForwardDest(m_fourthReichMS, new Vector3(0, m_moveMS_Speed, 0), m_fourthReichMS_UpDestination);\n                if (m_moveMS_Back) \n                    m_moveMS_Up = false;\n            }\n            if (m_moveMS_Back)\n            {\n                foreach (var item in m_standbyparticle)\n                {\n                    MyEntity particle = MyScriptWrapper.GetEntity(item);\n                    MoveMotherShipForward(particle, new Vector3(0, 0, m_moveMS_Speed));\n                }\n                foreach (var item in m_finalparticle)\n                {\n                    MyEntity particle = MyScriptWrapper.GetEntity(item);\n                    MoveMotherShipForward(particle, new Vector3(0, 0, m_moveMS_Speed));\n                }\n                m_moveMS_Up2 = MoveMotherShipForwardDest(m_fourthReichMS, new Vector3(0, 0, m_moveMS_Speed), m_fourthReichMS_BackDestination);\n                if (m_moveMS_Up2) m_moveMS_Back = false;\n            }\n            if (m_moveMS_Up2)\n            {\n                foreach (var item in m_standbyparticle)\n                {\n                    MyEntity particle = MyScriptWrapper.GetEntity(item);\n                    MyScriptWrapper.SetEntityEnabled(particle, false);\n                    MoveMotherShipForward(particle, new Vector3(0, m_moveMS_Speed, 0));\n                }\n                foreach (var item in m_finalparticle)\n                {\n                    MyEntity particle = MyScriptWrapper.GetEntity(item);\n                    MyScriptWrapper.SetEntityEnabled(particle, true);\n                    MoveMotherShipForward(particle, new Vector3(0, m_moveMS_Speed, 0));\n                }\n                m_moveMS_Out = MoveMotherShipForwardDest(m_fourthReichMS, new Vector3(0, m_moveMS_Speed, 0), m_fourthReichMS_Up2Destination);\n                if (m_moveMS_Out)\n                {\n                    MissionTimer.RegisterTimerAction(300, Accelerate, false);\n                    m_moveMS_Up2 = false;\n                }\n            }\n            if (m_moveMS_Out)\n            {\n                foreach (var item in m_standbyparticle)\n                {\n                    MyEntity particle = MyScriptWrapper.GetEntity(item);\n                    MoveMotherShipForward(particle, new Vector3(0, 0, -m_moveMS_Speed));\n                }\n                foreach (var item in m_finalparticle)\n                {\n                    MyEntity particle = MyScriptWrapper.GetEntity(item);\n                    MoveMotherShipForward(particle, new Vector3(0, 0, -m_moveMS_Speed));\n                }\n                MoveMotherShipForward(m_fourthReichMS, new Vector3(0, 0, -m_moveMS_Speed));\n            }\n        }\n\n        void Accelerate()\n        {\n            if (m_moveMS_AccelerateCounter < 150)\n            {\n                m_moveMS_Speed += 28f;\n                MissionTimer.RegisterTimerAction(250, Accelerate, false);\n            }\n        }\n\n        bool MoveMotherShipForwardDest(MyEntity entity, Vector3 velocity, Vector3 destination)\n        {\n            if (Vector3.DistanceSquared(destination, entity.GetPosition()) > 10 * 10)\n            {\n                MyScriptWrapper.Move(entity, entity.GetPosition() + velocity * MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS);\n\n                return false;\n            }\n            return true;\n        }\n\n        void MoveMotherShipForward(MyEntity entity, Vector3 velocity)\n        {\n            MyScriptWrapper.Move(entity, entity.GetPosition() + velocity * MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS);\n        }\n\n        void MoveFourthReichMSStart(MyMissionBase sender)\n        {\n            m_moveMS_Up = true;\n        }\n\n        //public Missions.OnMissionSuccess DestroyMSSuccess { get; set; }\n    }\n\n\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/SinglePlayer/MySmallPirateBase.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Managers.EntityManager.Entities.EntityDetector;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Managers.EntityManager.Entities;\nusing System.Diagnostics;\nusing Microsoft.Xna.Framework;\nusing MinerWars.AppCode.Game.Managers.EntityManager.Entities.WayPoints;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.AppCode.Game.Utils;\n\n\nnamespace MinerWars.AppCode.Game.Missions.SinglePlayer\n{\n    class MySmallPirateBase: MyMission\n    {\n        private MyObjectiveDestroy DestroyPipes1;\n        private MyObjectiveDestroy DestroyGenerator;\n\n        public MySmallPirateBase()\n        {\n            ID = MyMissionID.PIRATE_BASE_1; /* ID must be added to MyMissions.cs */\n            Name = new StringBuilder(\"Small pirate base\"); // Nazev mise\n            Description = new StringBuilder( // popis mise\n                \"Destroy the station\\n\"\n            );\n\n            MyMwcVector3Int baseSector = new MyMwcVector3Int(14393995,0,2939339); // Story sector of the script\n\n            Location = new MyMissionLocation(baseSector, 1649); // Starting dummy point\n\n            RequiredMissions = new MyMissionID[] { }; // mise ktere musi byt splneny pred prijetim teto mise\n\n            m_submissions = new List<MyObjective>(); // Creating of list of submissions\n            // START DEFINICE SUBMISE\n\n\n            /*DestroyPipes1 = new MySubmissionDestroy( // Var is used to call functions on that member\n                new StringBuilder(\"Destroy pipes\"),\n                MyMissionID.NEW_STORY_M230_DESTROY_PIPES_1,\n                new StringBuilder(\"\"),\n                null,\n                this,\n                new MyMissionID[] { },\n                new List<uint> { 563, 1859, 415 },\n                new List<uint> { },\n                false\n            ) { SaveOnSuccess = false };\n            m_submissions.Add(DestroyPipes1); // pridani do seznamu submisi\n            DestroyPipes1.OnMissionSuccess += new Missions.OnMissionSuccess(DestroyMSSuccess);*/\n\n            var findCIC = new MyObjective( // One member of that list - je to MySubmission takze cilem je doletet do checkpointu\n                new StringBuilder(\"Find the generator\"), // nazev submise\n                MyMissionID.PIRATE_BASE_1_DESTROY_PIPES_1, // id submise\n                new StringBuilder(\"\"), // popis submise\n                null,\n                this,\n                new MyMissionID[] { }, // ID submisi ktere musi byt splneny - je to prazdne takze je to prvni submise\n                new MyMissionLocation(baseSector, 2271) // ID of dummy point of checkpoint\n            ) { SaveOnSuccess = false }; // nastaveni save na checkpointu nebo ne\n            m_submissions.Add(findCIC); // pridani do seznamu submisi\n        \n            DestroyGenerator = new MyObjectiveDestroy( // Var is used to call functions on that member\n                new StringBuilder(\"Destroy the generator\"),\n                MyMissionID.PIRATE_BASE_1_DESTROY_GENERATOR,\n                new StringBuilder(\"\"),\n                null,\n                this,\n                new MyMissionID[] {  },\n                new List<uint> { 328 },\n                new List<uint> {  },\n                false\n            ) { SaveOnSuccess = false };\n            m_submissions.Add(DestroyGenerator); // pridani do seznamu submisi\n            DestroyGenerator.OnMissionSuccess += new MissionHandler(DestroyMSSuccess);\n\n            var escape = new MyObjective( // One member of that list - je to MySubmission takze cilem je doletet do checkpointu\n                new StringBuilder(\"Return to your mothership\"), // nazev submise\n                MyMissionID.SMALL_PIRATE_BASE_2_KILL_GENERAL, // id submise\n                new StringBuilder(\"\"), // popis submise\n                null,\n                this,\n                new MyMissionID[] {MyMissionID.PIRATE_BASE_1_DESTROY_GENERATOR,MyMissionID.PIRATE_BASE_1_DESTROY_PIPES_1, }, // ID submisi ktere musi byt splneny - je to prazdne takze je to prvni submise\n                new MyMissionLocation(baseSector, 18414)\n            ) { SaveOnSuccess = false }; // nastaveni save na checkpointu nebo ne\n            m_submissions.Add(escape); // pridani do seznamu submisi\n\n                  \n\n\n           \n        }\n        void DestroyMSSuccess(MyMissionBase sender)\n        {\n\n            MyScriptWrapper.ActivateSpawnPoint(2679);\n            MyScriptWrapper.ActivateSpawnPoint(2943);\n            sender.OnMissionSuccess -= DestroyMSSuccess;\n        }\n      \n       \n\n        public override void Load() // vykona se jednou na zacatku\n        {\n            base.Load();\n            \n        }\n\n       \n\n        public override void Update()//vola se v kazdem snimku\n        {\n            base.Update();\n             \n        \n\n            \n        }\n\n    }\n       \n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/SinglePlayer/MySmallPirateBase2.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Managers.EntityManager.Entities.EntityDetector;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Managers.EntityManager.Entities;\nusing System.Diagnostics;\nusing Microsoft.Xna.Framework;\nusing MinerWars.AppCode.Game.Managers.EntityManager.Entities.WayPoints;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.AppCode.Game.Utils;\n\n\nnamespace MinerWars.AppCode.Game.Missions.SinglePlayer\n{\n    class MySmallPirateBase2: MyMission\n    {\n        private MyObjectiveDestroy DestroyEnemies;\n        private MyObjectiveDestroy DestroyGenerator;\n\n        public MySmallPirateBase2()\n        {\n            ID = MyMissionID.SMALL_PIRATE_BASE_2; /* ID must be added to MyMissions.cs */\n            Name = new StringBuilder(\"Small pirate base 2\"); // Nazev mise\n            Description = new StringBuilder( // popis mise\n                \"Destroy the station\\n\"\n            );\n\n            MyMwcVector3Int baseSector = new MyMwcVector3Int(9708260,0,-2101810); // Story sector of the script\n\n            Location = new MyMissionLocation(baseSector, 1749); // Starting dummy point\n\n            RequiredMissions = new MyMissionID[] { }; // mise ktere musi byt splneny pred prijetim teto mise\n\n            m_submissions = new List<MyObjective>(); // Creating of list of submissions\n            // START DEFINICE SUBMISE\n\n            DestroyEnemies = new MyObjectiveDestroy( // Var is used to call functions on that member\n                    new StringBuilder(\"Destroy the mothership\"),\n                    MyMissionID.SMALL_PIRATE_BASE_2_DESTROY_ENEMIES,\n                    new StringBuilder(\"\"),\n                    null,\n                    this,\n                    new MyMissionID[] { },\n                    new List<uint> { 5293 },\n                    new List<uint> { },\n                    false\n            ) { SaveOnSuccess = false };\n            m_submissions.Add(DestroyEnemies); // pridani do seznamu submisi\n           \n        \n            DestroyGenerator = new MyObjectiveDestroy( // Var is used to call functions on that member\n                new StringBuilder(\"Destroy the generator\"),\n                MyMissionID.SMALL_PIRATE_BASE_2_DESTROY_GENERATOR,\n                new StringBuilder(\"\"),\n                null,\n                this,\n                new MyMissionID[] {  },\n                new List<uint> { 812 },\n                new List<uint> {  },\n                false\n            ) { SaveOnSuccess = false };\n            m_submissions.Add(DestroyGenerator); // pridani do seznamu submisi\n\n            var escape = new MyObjective( // One member of that list - je to MySubmission takze cilem je doletet do checkpointu\n               new StringBuilder(\"Return to the mothership\"), // nazev submise\n               MyMissionID.PIRATE_BASE_1_ESCAPE, // id submise\n               new StringBuilder(\"\"), // popis submise\n               null,\n               this,\n               new MyMissionID[] { MyMissionID.PIRATE_BASE_1_DESTROY_GENERATOR, }, // ID submisi ktere musi byt splneny - je to prazdne takze je to prvni submise\n               new MyMissionLocation(baseSector, 2475) // ID of dummy point of checkpoint\n           ) { SaveOnSuccess = false }; // nastaveni save na checkpointu nebo ne\n            m_submissions.Add(escape); // pridani do seznamu submisi\n        }\n        \n       \n\n        public override void Load() // vykona se jednou na zacatku\n        {\n            base.Load();\n            \n        }\n\n       \n\n        public override void Update()//vola se v kazdem snimku\n        {\n            base.Update();\n             \n        \n\n            \n        }\n\n    }\n       \n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/SinglePlayer/MySmallPirateBase2Mission.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Entities;\nusing System.Diagnostics;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Entities.WayPoints;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.AppCode.Game.Localization;\n\n\nnamespace MinerWars.AppCode.Game.Missions.SinglePlayer\n{\n    class MySmallPirateBase2Mission: MyMission\n    {\n        private enum EntityID\n        {\n            StartLocation = 1749,\n            Mothership = 5293,\n            Generator = 812,\n            Generator_2 = 15452,\n            Generator_3 = 15454,\n            Escape = 18414,\n        }\n        public override void ValidateIds() // checks if all IDs in enum are loaded correctly\n        {\n            foreach (var value in Enum.GetValues(typeof(EntityID)))\n            {\n                MyScriptWrapper.GetEntity((uint)((value as EntityID?).Value));\n            }\n        }\n        private List<uint> generators = new List<uint>\n        {\n            (uint)EntityID.Generator, (uint)EntityID.Generator_2, (uint)EntityID.Generator_3\n        };\n        private MyObjectiveDestroy DestroyEnemies;\n        private MyObjectiveDestroy KillGeneral;\n        private MyObjectiveDestroy DestroyGenerator;\n\n        public MySmallPirateBase2Mission()\n        {\n            ID = MyMissionID.SMALL_PIRATE_BASE_2; /* ID must be added to MyMissions.cs */\n            DebugName = new StringBuilder(\"Small pirate base 2\"); // Nazev mise\n            Name = MyTextsWrapperEnum.SMALL_PIRATE_BASE_2;\n            Description = MyTextsWrapperEnum.SMALL_PIRATE_BASE_2_Description;\n\n            MyMwcVector3Int baseSector = new MyMwcVector3Int(9708260,0,-2101810); // Story sector of the script\n\n            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation); // Starting dummy point\n\n            RequiredMissions = new MyMissionID[] { }; // mise ktere musi byt splneny pred prijetim teto mise\n            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.SMALL_PIRATE_BASE_2_KILL_GENERAL };\n            RequiredActors = new MyActorEnum[] { MyActorEnum.MARCUS, MyActorEnum.MADELYN, MyActorEnum.TARJA, MyActorEnum.VALENTIN };\n\n            m_objectives = new List<MyObjective>(); // Creating of list of submissions\n            // START DEFINICE SUBMISE\n            \n           /* DestroyEnemies = new MyObjectiveDestroy( // Var is used to call functions on that member\n                    new StringBuilder(\"Destroy the mothership\"),\n                    MyMissionID.SMALL_PIRATE_BASE_2_DESTROY_MOTHERSHIP,\n                    new StringBuilder(\"\"),\n                    null,\n                    this,\n                    new MyMissionID[] { },\n                    new List<uint> { (uint)EntityID.Mothership },\n                    new List<uint> { },\n                    false\n            ) { SaveOnSuccess = false };\n            m_objectives.Add(DestroyEnemies); // pridani do seznamu submisi*/\n        \n           DestroyGenerator = new MyObjectiveDestroy( // Var is used to call functions on that member\n                new StringBuilder(\"Destroy the generators\"),\n                MyMissionID.SMALL_PIRATE_BASE_2_DESTROY_GENERATOR,\n                new StringBuilder(\"\"),\n                null,\n                this,\n                new MyMissionID[] { },\n                generators,\n                false\n            ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudGenerator };\n            m_objectives.Add(DestroyGenerator); // pridani do seznamu submisi\n            /*DestroyGenerator.MissionEntityIDs.Add((uint)EntityID.Generator_3);\n            DestroyGenerator.MissionEntityIDs.Add((uint)EntityID.Generator_2);\n            DestroyGenerator.MissionEntityIDs.Add((uint)EntityID.Generator);*/\n\n            var ReturnToMothership = new MyObjective( // One member of that list - je to MySubmission takze cilem je doletet do checkpointu\n               new StringBuilder(\"Return to your mothership\"), // nazev submise\n               MyMissionID.SMALL_PIRATE_BASE_2_KILL_GENERAL, // id submise\n               new StringBuilder(\"\"), // popis submise\n               null,\n               this,\n               new MyMissionID[] { MyMissionID.SMALL_PIRATE_BASE_2_DESTROY_GENERATOR, }, // ID submisi ktere musi byt splneny - je to prazdne takze je to prvni submise\n               new MyMissionLocation(baseSector, MyMissionLocation.MADELYN_HANGAR), // ID of dummy point of checkpoint\n               radiusOverride: MyMissionLocation.MADELYN_HANGAR_RADIUS\n           ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudMadelynsSapho }; // nastaveni save na checkpointu nebo ne\n            m_objectives.Add(ReturnToMothership); // pridani do seznamu submisi\n\n        \n        }\n\n\n        public override void Load() // vykona se jednou na zacatku\n        {\n            base.Load();\n\n\n          \n        }\n       \n\n        public override void Update()//vola se v kazdem snimku\n        {\n            base.Update();\n             \n         //MyScriptWrapper.MarkEntity(Generator, \"Generator\");\n          \n          \n            \n        }\n\n    }\n       \n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/SinglePlayer/MySmallPirateBaseMission.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Entities;\nusing System.Diagnostics;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Entities.WayPoints;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.AppCode.Game.Localization;\n\n\nnamespace MinerWars.AppCode.Game.Missions.SinglePlayer\n{\n    class MySmallPirateBaseMission: MyMission\n    {\n        private enum EntityID\n        {\n            StartLocation = 1649,\n            Generator = 11241,\n            Generator_2 = 16012,\n            Escape_Dummy = 2475,\n            Escape_Spawn_1 = 2679,\n            Escape_Spawn_2 = 2943,\n        }\n\n        public override void ValidateIds() // checks if all IDs in enum are loaded correctly\n        {\n            foreach (var value in Enum.GetValues(typeof(EntityID)))\n            {\n                MyScriptWrapper.GetEntity((uint)((value as EntityID?).Value));\n            }\n        }\n        private List<uint> generators = new List<uint>\n        {\n            (uint)EntityID.Generator, (uint)EntityID.Generator_2\n        };\n        private MyObjectiveDestroy DestroyPipes1;\n        private MyObjectiveDestroy DestroyGenerator;\n       \n\n        public MySmallPirateBaseMission()\n        {\n            ID = MyMissionID.PIRATE_BASE_1; /* ID must be added to MyMissions.cs */\n            DebugName = new StringBuilder(\"Small pirate base\"); // Nazev mise\n            Name = MyTextsWrapperEnum.PIRATE_BASE_1;\n            Description = MyTextsWrapperEnum.PIRATE_BASE_1_Description;\n\n            MyMwcVector3Int baseSector = new MyMwcVector3Int(14393995,0,2939339); // Story sector of the script\n\n            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation); // Starting dummy point\n\n            RequiredMissions = new MyMissionID[] { }; // mise ktere musi byt splneny pred prijetim teto mise\n            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.PIRATE_BASE_1_ESCAPE };\n            RequiredActors = new MyActorEnum[] { MyActorEnum.MARCUS, MyActorEnum.MADELYN, MyActorEnum.TARJA, MyActorEnum.VALENTIN };\n\n            m_objectives = new List<MyObjective>(); // Creating of list of submissions\n            // START DEFINICE SUBMISE\n\n        \n            DestroyGenerator = new MyObjectiveDestroy( // Var is used to call functions on that member\n                new StringBuilder(\"Destroy the generator\"),\n                MyMissionID.PIRATE_BASE_1_DESTROY_GENERATOR,\n                new StringBuilder(\"\"),\n                null,\n                this,\n                new MyMissionID[] {  },\n                generators,\n                false\n            ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudGenerator };\n            m_objectives.Add(DestroyGenerator); // pridani do seznamu submisi\n            DestroyGenerator.OnMissionSuccess += new Missions.MissionHandler(DestroyMSSuccess);\n\n            var escape = new MyObjective( // One member of that list - je to MySubmission takze cilem je doletet do checkpointu\n                new StringBuilder(\"Escape\"), // nazev submise\n                MyMissionID.PIRATE_BASE_1_ESCAPE, // id submise\n                new StringBuilder(\"\"), // popis submise\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.PIRATE_BASE_1_DESTROY_GENERATOR, }, // ID submisi ktere musi byt splneny - je to prazdne takze je to prvni submise\n                new MyMissionLocation(baseSector, MyMissionLocation.MADELYN_HANGAR), // ID of dummy point of checkpoint\n                radiusOverride: MyMissionLocation.MADELYN_HANGAR_RADIUS\n            ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudMadelynsSapho }; // nastaveni save na checkpointu nebo ne\n            m_objectives.Add(escape); // pridani do seznamu submisi\n\n                  \n\n\n           \n        }\n        void DestroyMSSuccess(MyMissionBase sender)\n        {\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Escape_Spawn_1);\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Escape_Spawn_2);\n        }\n      \n       \n\n        public override void Load() // vykona se jednou na zacatku\n        {\n            base.Load();\n           // MyScriptWrapper.MarkEntity(MyEntities.GetEntityById((MyEntityIdentifier)MyEntityIdentifier.FromNullableInt((uint)EntityID.Generator)), \"Generator\");           \n        }\n\n       \n\n        public override void Update()//vola se v kazdem snimku\n        {\n            base.Update();\n          \n            \n          \n             \n        \n\n            \n        }\n\n    }\n       \n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/SinglePlayer/MySolarFactoryEACMission.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Inventory;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Entities;\nusing System.Diagnostics;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Entities.WayPoints;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.AppCode.Game.Audio.Dialogues;\nusing MinerWars.AppCode.Game.Missions.Objectives;\n\n\n\nnamespace MinerWars.AppCode.Game.Missions.SinglePlayer\n{\n    class MySolarfactoryEACMission : MyMission\n    {\n        private List<List<uint>> m_ValidateIDlists;\n        private enum EntityID\n        {\n            StartLocation = 1670,\n            Transformator_1 = 2139,\n            Transformator_2 = 2137,\n            Transformator_3 = 2140,\n            Transformator_4 = 2138,\n            Transformator_5 = 2057,\n            Transformator_6 = 2275,\n            Transformator_7 = 2056,\n            Transformator_8 = 2058,\n            Return_Dummy = 4134,\n        }\n        private List<uint> m_greenLights = new List<uint>\n        {\n            2753, 2741, 2742, 2697, 2752\n        };\n        private List<uint> m_redLights = new List<uint>\n        {\n            4224, 4227, 4226, 4225, 4228\n        };\n\n\n        public override void ValidateIds() // checks if all IDs in enum are loaded correctly\n        {\n            foreach (var value in Enum.GetValues(typeof(EntityID)))\n            {\n                MyScriptWrapper.GetEntity((uint)((value as EntityID?).Value));\n            }\n            foreach (List<uint> list in m_ValidateIDlists)\n            {\n                foreach (var item in list)\n                {\n                    MyScriptWrapper.GetEntity(item);\n                }\n            }\n\n        }\n\n        private List<uint> Transformators = new List<uint>\n        {\n            (uint)EntityID.Transformator_1, (uint)EntityID.Transformator_2, (uint)EntityID.Transformator_3, (uint)EntityID.Transformator_4, \n           // (uint)EntityID.Transformator_5, (uint)EntityID.Transformator_6, (uint)EntityID.Transformator_7, (uint)EntityID.Transformator_8,\n        };\n\n\n        public MySolarfactoryEACMission()\n        {\n            m_ValidateIDlists = new List<List<uint>>();\n            m_ValidateIDlists.Add(m_greenLights);\n            m_ValidateIDlists.Add(m_redLights);\n\n\n            ID = MyMissionID.SOLAR_PLANT_EAC; /* ID must be added to MyMissions.cs */\n            DebugName = new StringBuilder(\"Solar factory - EAC\"); // Nazev mise\n            Name = MyTextsWrapperEnum.SOLAR_PLANT_EAC;\n            Description = MyTextsWrapperEnum.EmptyDescription;\n\n            MyMwcVector3Int baseSector = new MyMwcVector3Int(2700837, 0, -1774663); // Story sector of the script\n\n            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation); // Startmy point\n\n            RequiredMissions = new MyMissionID[] {  }; // mise ktere musi byt splneny pred prijetim teto mise\n            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.SOLAR_PLANT_EAC_RETURN };\n            RequiredActors = new MyActorEnum[] { MyActorEnum.MARCUS, MyActorEnum.MADELYN, MyActorEnum.TARJA, MyActorEnum.VALENTIN };\n\n            m_objectives = new List<MyObjective>(); // Creating of list of submissions\n            // START DEFINICE SUBMISE\n\n\n            var DestroyTransformator = new MyObjectiveDestroy( // Var is used to call functions on that member\n                 new StringBuilder(\"Destroy the transformer\"),\n                 MyMissionID.SOLAR_PLANT_EAC_DESTROY,\n                 new StringBuilder(\"\"),\n                 null,\n                 this,\n                 new MyMissionID[] { },\n                 Transformators,\n                 false\n             ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudTransformer };\n            DestroyTransformator.OnMissionSuccess += new Missions.MissionHandler(DestroyedTransformator);\n            m_objectives.Add(DestroyTransformator); // pridani do seznamu submisi            \n\n            var ReturnToMothership = new MyObjective( // One member of that list - je to MyObjective takze cilem je doletet do checkpointu\n               new StringBuilder(\"Return to your mothership\"), // nazev submise\n               MyMissionID.SOLAR_PLANT_EAC_RETURN, // id submise\n               new StringBuilder(\"\"), // popis submise\n               null,\n               this,\n               new MyMissionID[] { MyMissionID.SOLAR_PLANT_EAC_DESTROY, }, // ID submisi ktere musi byt splneny - je to prazdne takze je to prvni submise\n               new MyMissionLocation(baseSector, MyMissionLocation.MADELYN_HANGAR), // ID of dummy point of checkpoin\n                //StartDialogId: MyDialogueEnum.SLAVERBASE_0900_NUKE_HACKED,\n               radiusOverride: MyMissionLocation.MADELYN_HANGAR_RADIUS) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudMadelynsSapho }; // nastaveni save na checkpointu nebo ne\n            m_objectives.Add(ReturnToMothership); //\n\n        }\n        void DestroyedTransformator(MyMissionBase sender)\n        {\n            foreach (var Light in m_greenLights)\n            {\n               var item = MyScriptWrapper.TryGetEntity(Light);\n                if (item != null)\n                {\n                    item.MarkForClose();\n                }\n            }\n            foreach (var Light in m_redLights)\n            {\n                MyScriptWrapper.UnhideEntity(MyScriptWrapper.GetEntity(Light));\n            }\n        }\n\n\n\n        public override void Load() // vykona se jednou na zacatku\n        {\n            base.Load();\n            /* MyScriptWrapper.SetPlayerFaction(MyMwcObjectBuilder_FactionEnum.Rainiers);\n             MyScriptWrapper.SetFactionRelation(MyMwcObjectBuilder_FactionEnum.Rainiers, MyMwcObjectBuilder_FactionEnum.Euroamerican, -1000, false);*/\n            foreach (var Light in m_redLights)\n            {\n                MyScriptWrapper.HideEntity(MyScriptWrapper.GetEntity(Light));\n            }\n\n        }\n\n        public override void Update()//vola se v kazdem snimku\n        {\n            base.Update();\n\n\n        }\n\n\n    }    \n       \n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/SinglePlayer/MyStealthPlaygroundMission.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.AppCode.Game.HUD;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Missions;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.AppCode.Game.Explosions;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Entities.VoxelHandShapes;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Voxels;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.Game.Prefabs;\nusing MinerWars.AppCode.Game.World.Global;\n\nnamespace MinerWars.AppCode.Game.Missions.SinglePlayer\n{\n    class MyStealthPlayground : MyMissionSandboxBase\n    {\n        private enum EntityID : uint\n        {\n            StartLocation = 23619,\n            Detector0 = 62667,\n            Detector1 = 62669,\n            Detector2 = 62670,\n            Scanner0 = 39389,\n            Scanner1 = 54904,\n            Scanner2 = 54910,\n            SecurityHub = 70447,\n            PatrolSpawnPoint = 62685,\n        }\n       \n        public MyStealthPlayground()\n        {\n            ID = MyMissionID.STEALTH_PLAYGROUND; /* ID must be added to MyMissions.cs */\n            DebugName = new StringBuilder(\"Stealth playground\");\n            Name = Localization.MyTextsWrapperEnum.EmptyDescription;\n            Description = Localization.MyTextsWrapperEnum.EmptyDescription;\n\n            MyMwcVector3Int baseSector = new MyMwcVector3Int(-2, 0, 0);\n\n            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation);\n\n            RequiredMissions = new MyMissionID[] { MyMissionID.STEALTH_PLAYGROUND };\n            RequiredActors = new MyActorEnum[] { MyActorEnum.MARCUS, MyActorEnum.MADELYN };\n\n            m_objectives = new List<MyObjective>();\n\n            //var playgroundSubmission = new MySubmission(\n            //    new StringBuilder(\"Move like a ninja!\"),\n            //    MyMissionID.PLAYGROUND_SUBMISSION_01,\n            //    new StringBuilder(\"\"),\n            //    null,\n            //    this,\n            //    new MyMissionID[] { },\n            //    new MyMissionLocation(baseSector, 831)\n            //);\n\n            //playgroundSubmission.OnMissionSuccess += PlaygroundSubmissionSubmissionSuccess;\n            //m_submissions.Add(playgroundSubmission);\n\n        }\n\n        public override void Load()\n        {\n            base.Load();\n            var entities = MyEntities.GetEntities();\n\n            var detectorsIds = new[] { EntityID.Detector0, EntityID.Detector1, EntityID.Detector2 };\n            var scannerIds = new[] { EntityID.Scanner0, EntityID.Scanner1, EntityID.Scanner2 };\n            for (int i = 0; i < detectorsIds.Length; i++)\n\t\t\t{\n                MyDummyPoint dummy = (MyDummyPoint)MyScriptWrapper.GetEntity((uint)detectorsIds[i]);\n                MyPrefabScanner scanner = (MyPrefabScanner)MyScriptWrapper.GetEntity((uint)scannerIds[i]);\n                dummy.Tag = scanner.EntityId.Value.NumericValue;\n\n                var detector = dummy.GetDetector();\n                detector.OnEntityEnter += new OnEntityEnter(detector_OnEntityEnter);\n                detector.OnEntityLeave += new OnEntityLeave(detector_OnEntityLeave);\n                detector.On();\n\t        }\n\n        }\n\n        void detector_OnEntityLeave(MyEntityDetector sender, MyEntity entity)\n        {\n            //MySpawnPoint spawnPoint = (MySpawnPoint)MyScriptWrapper.GetEntity((uint)EntityID.PatrolSpawnPoint);\n\n            MyDummyPoint dummy = (MyDummyPoint)sender.Parent;\n\n\n            if (MyFactions.GetFactionsRelation(dummy, entity) == MyFactionRelationEnum.Friend)\n            {\n\n            }\n\n\n            uint scannerId = (uint)dummy.Tag;\n            MyPrefabScanner scanner = (MyPrefabScanner)MyScriptWrapper.GetEntity(scannerId);\n            scanner.Enabled = true;\n        }\n\n        void detector_OnEntityEnter(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            MyDummyPoint dummy = (MyDummyPoint)sender.Parent;\n            uint scannerId = (uint)dummy.Tag;\n            MyPrefabScanner scanner = (MyPrefabScanner)MyScriptWrapper.GetEntity(scannerId);\n            scanner.Enabled = false;\n        }\n\n      \n        private void PlaygroundSubmissionSubmissionSuccess(MyMissionBase sender)\n        {\n            \n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/SinglePlayer/MyTestAttackMission.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.AppCode.Game.HUD;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Missions;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.AppCode.Game.Explosions;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Entities.VoxelHandShapes;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Voxels;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.Game.Prefabs;\nusing MinerWars.AppCode.Game.World.Global;\n\nnamespace MinerWars.AppCode.Game.Missions.SinglePlayer\n{\n    class MyTestAttackMission : MyMission\n    {\n        private enum EntityID : uint\n        {\n            StartLocation = 3104,\n        }\n\n        public MyTestAttackMission()\n        {\n            ID = MyMissionID.TEST_ATTACK_MISSION; /* ID must be added to MyMissions.cs */\n            DebugName = new StringBuilder(\"Test attack mission\");\n            Name = Localization.MyTextsWrapperEnum.EmptyDescription;\n            Description = Localization.MyTextsWrapperEnum.EmptyDescription;\n\n            MyMwcVector3Int baseSector = new MyMwcVector3Int(-3, 0, 3);\n\n            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation);\n\n            RequiredMissions = new MyMissionID[] { MyMissionID.TEST_ATTACK_MISSION };\n            RequiredActors = new MyActorEnum[] { };\n\n            m_objectives = new List<MyObjective>();\n\n            var objective1 = new MyObjective(\n                new StringBuilder(\"Objective1\"),\n                MyMissionID.TEST_ATTACK_MISSION_OBJECTIVE1,\n                new StringBuilder(\"\"),\n                null,\n                this,\n                new MyMissionID[] { },\n                null\n            );\n            objective1.SaveOnSuccess = true;\n            m_objectives.Add(objective1);\n\n            var objective2 = new MyObjective(\n                new StringBuilder(\"Objective2\"),\n                MyMissionID.TEST_ATTACK_MISSION_OBJECTIVE2,\n                new StringBuilder(\"\"),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.TEST_MISSION_OBJECTIVE1 },\n                null\n            );\n            objective2.SaveOnSuccess = true;\n            m_objectives.Add(objective2);\n\n\n        }\n\n        public override void Load()\n        {\n            base.Load();   \n        }\n\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/SinglePlayer/MyTestMission.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.AppCode.Game.HUD;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Missions;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.AppCode.Game.Explosions;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Entities.VoxelHandShapes;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Voxels;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.Game.Prefabs;\nusing MinerWars.AppCode.Game.World.Global;\n\nnamespace MinerWars.AppCode.Game.Missions.SinglePlayer\n{\n    class MyTestMission : MyMission\n    {\n        private enum EntityID : uint\n        {\n            StartLocation = 64,\n        }\n\n        public MyTestMission()\n        {\n            ID = MyMissionID.TEST_MISSION; /* ID must be added to MyMissions.cs */\n            DebugName = new StringBuilder(\"Test mission\");\n            Name = Localization.MyTextsWrapperEnum.EmptyDescription;\n            Description = Localization.MyTextsWrapperEnum.EmptyDescription;\n\n            MyMwcVector3Int baseSector = new MyMwcVector3Int(-2, 0, 2);\n\n            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation);\n\n            RequiredMissions = new MyMissionID[] { MyMissionID.TEST_MISSION };\n            RequiredActors = new MyActorEnum[] { MyActorEnum.MADELYN };\n\n            m_objectives = new List<MyObjective>();\n\n            var objective1 = new MyObjective(\n                new StringBuilder(\"Objective1\"),\n                MyMissionID.TEST_MISSION_OBJECTIVE1,\n                new StringBuilder(\"\"),\n                null,\n                this,\n                new MyMissionID[] { },\n                null\n            );\n            objective1.SaveOnSuccess = true;\n            m_objectives.Add(objective1);\n\n            var objective2 = new MyObjective(\n                new StringBuilder(\"Objective2\"),\n                MyMissionID.TEST_MISSION_OBJECTIVE2,\n                new StringBuilder(\"\"),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.TEST_MISSION_OBJECTIVE1 },\n                null\n            );\n            objective2.SaveOnSuccess = true;\n            m_objectives.Add(objective2);\n\n\n        }\n\n        public override void Load()\n        {\n            base.Load();   \n        }\n\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/SinglePlayer/MyTradeStationChinaMission.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Entities;\nusing System.Diagnostics;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Entities.WayPoints;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.AppCode.Game.Localization;\n\n\nnamespace MinerWars.AppCode.Game.Missions.SinglePlayer\n{\n    class MyTradeStationChinaMission : MyMissionSandboxBase\n    {\n        private enum EntityID // list of IDs used in script\n        {\n            StartLocation = 851,\n            Inside = 904,\n            \n        }\n\n        public override void ValidateIds() // checks if all IDs in enum are loaded correctly\n        {\n            foreach (var value in Enum.GetValues(typeof(EntityID)))\n            {\n                MyScriptWrapper.GetEntity((uint)((value as EntityID?).Value));\n            }\n        }\n\n        //BLOCK FOR CLASS MEMBERS\n        private MyObjectiveDestroy m_DestroyEnemies;\n        //END OF BLOCK\n\n        public MyTradeStationChinaMission()\n        {\n            ID = MyMissionID.TRADE_STATION_CHINA; /* ID must be added to MyMissions.cs */\n            DebugName = new StringBuilder(\"Trade station - China\"); // Name of mission\n            Name = MyTextsWrapperEnum.TRADE_STATION_CHINA;\n            Description = MyTextsWrapperEnum.TRADE_STATION_CHINA_Description;\n\n            MyMwcVector3Int baseSector = new MyMwcVector3Int(2069219, 0, 5949238); // Story sector of the script - i.e. (-2465,0,6541)\n\n            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation); // Starting dummy point - must by typecasted to uint and referenced from EntityID enum\n\n            RequiredMissions = new MyMissionID[] { }; // IDs of missions required to make this mission available\n            RequiredMissionsForSuccess = new MyMissionID[] { };\n            RequiredActors = new MyActorEnum[] { MyActorEnum.MARCUS, MyActorEnum.MADELYN };\n\n            m_objectives = new List<MyObjective>(); // Creating of list of submissions\n\n         \n\n            //Here you can add another submissions\n        }\n\n        public override void Load() // Code in that block will be called on the load of the sector\n        {\n            base.Load();\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.CalmAtmosphere); // Sets music group to be played in the sector - no matter if the mission is running or not\n            MyScriptWrapper.SetPlayerFaction(MyMwcObjectBuilder_FactionEnum.Rainiers);\n        }\n\n        public override void Update() //Code in that block will be called in each frame\n        {\n            base.Update();\n\n        }\n\n    }\n\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/SinglePlayer/MyTradeStationEACMission.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Inventory;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Entities;\nusing System.Diagnostics;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Entities.WayPoints;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.AppCode.Game.Audio.Dialogues;\nusing MinerWars.Resources;\n\n\nnamespace MinerWars.AppCode.Game.Missions.SinglePlayer\n{\n    class MyTradeStationEACMission: MyMission\n    {\n        private enum EntityID\n        {\n            StartLocation = 185180,\n            Hospital_Dummy = 184908,\n            Casino_Dummy = 185736,\n            Return_Dummy = 186659,\n            \n            PC_Red = 190983,\n            PC_Green = 191347,\n            Influence_War = 189376,\n            Central_Defense_System = 129402,\n        }\n        private List<uint> m_turrets = new List<uint>\n       {\n           129341, 129333, 129329, 129321, 129317, 129313, 129346, 129353, 129371, 129362, 129374, 129406, 129404, 190212, 190215, 190218\n       };\n        private List<uint> m_PC = new List<uint>\n        {\n            189835, 189836, 189837, 189834, 189833, 189818, 189822, 189823, 189830, 189831, 189832, 190586, 190584, 190585, 190583, 191347,\n        };\n        /*private List<uint> m_civilSpawnPoint = new List<uint>\n        {\n            44050, 22882, 128938, 128939, 128937, 128936, 44199, 180199\n        };*/\n        private List<uint> m_finalSpawn = new List<uint>\n        {\n            16778879, 16778892, \n        };\n        private List<uint> m_warSpawn = new List<uint>\n        {\n            188372, 189347\n        };\n\n\n\n\n        public override void ValidateIds() // checks if all IDs in enum are loaded correctly\n        {\n            foreach (var value in Enum.GetValues(typeof(EntityID)))\n            {\n                MyScriptWrapper.GetEntity((uint)((value as EntityID?).Value));\n            }\n            foreach (List<uint> list in new List<List<uint>> { m_turrets, m_PC, m_warSpawn, m_finalSpawn })\n            {\n                foreach (var item in list)\n                {\n                    MyScriptWrapper.GetEntity(item);\n                }\n            }\n            \n        }\n\n\n        private MyObjectiveEnablePrefabs m_hospital;\n        private MyObjective m_casino;\n\n\n        public MyTradeStationEACMission()\n        {\n            ID = MyMissionID.TRADE_STATION_EAC; /* ID must be added to MyMissions.cs */\n            DebugName = new StringBuilder(\"Trade station - EAC\"); // Nazev mise\n            Name = MyTextsWrapperEnum.TRADE_STATION_EAC;\n            Description = MyTextsWrapperEnum.EmptyDescription;\n\n            MyMwcVector3Int baseSector = new MyMwcVector3Int(5944222,0,-3414281); // Story sector of the script\n\n            Location = new MyMissionLocation(baseSector,(uint)EntityID.StartLocation ); // Startmy point129158\n\n            RequiredMissions = new MyMissionID[] { }; // mise ktere musi byt splneny pred prijetim teto mise\n            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.TRADE_STATION_EAC_RETURN };\n            RequiredActors = new MyActorEnum[] { MyActorEnum.MARCUS, MyActorEnum.MADELYN, MyActorEnum.TARJA, MyActorEnum.VALENTIN };\n\n            m_objectives = new List<MyObjective>(); // Creating of list of submissions\n            // START DEFINICE SUBMISE\n\n\n\n            m_casino = new MyObjective( // One member of that list - je to MySubmission takze cilem je doletet do checkpointu\n               new StringBuilder(\"Get into the station\"), // nazev submise\n               MyMissionID.TRADE_STATION_EAC_CASINO, // id submise\n               new StringBuilder(\"\"), // popis submise\n               null,\n               this,\n               new MyMissionID[] { }, // ID submisi ktere musi byt splneny - je to prazdne takze je to prvni submise\n               new MyMissionLocation(baseSector, (uint)EntityID.Casino_Dummy) // ID of dummy point of checkpoint\n               ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudStation }; // nastaveni save na checkpointu nebo ne\n            m_objectives.Add(m_casino); // pridani do seznamu submisi\n            \n            \n\n\n            var talkWith = new MyObjectiveDialog(\n          (MyTextsWrapperEnum.TRADE_STATION_EAC_DIALOGUE_Name),\n          MyMissionID.TRADE_STATION_EAC_DIALOGUE,\n          (MyTextsWrapperEnum.TRADE_STATION_EAC_DIALOGUE_Description),\n          null,\n          this,\n          new MyMissionID[] { MyMissionID.TRADE_STATION_EAC_CASINO }\n          ) { SaveOnSuccess = false };\n            m_objectives.Add(talkWith);\n\n            m_hospital = new MyObjectiveEnablePrefabs(\n                new StringBuilder(\"Activate the central defense system\"),\n                MyMissionID.TRADE_STATION_EAC_HOSPITAL,\n                new StringBuilder(\"\"),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.TRADE_STATION_EAC_DIALOGUE },\n                null,\n                new List<uint> { (uint)EntityID.PC_Red },\n                new List<uint> { (uint)EntityID.Central_Defense_System }\n            ) { HudName = MyTextsWrapperEnum.HudSecurityHub };\n            m_objectives.Add(m_hospital);\n        \n\n           /* m_hospital = new MyObjective( // One member of that list - je to MySubmission takze cilem je doletet do checkpointu\n               new StringBuilder(\"Reset station central defense system\"), // nazev submise\n               MyMissionID.TRADE_STATION_EAC_HOSPITAL, // id submise\n               new StringBuilder(\"Reset station central defense system\"), // popis submise\n               null,\n               this,\n               new MyMissionID[] { MyMissionID.TRADE_STATION_EAC_DIALOGUE }, // ID submisi ktere musi byt splneny - je to prazdne takze je to prvni submise\n               new MyMissionLocation(baseSector, (uint)EntityID.PC_Red) // ID of dummy point of checkpoint\n               ) { SaveOnSuccess = false }; // nastaveni save na checkpointu nebo ne\n            m_objectives.Add(m_hospital); // pridani do seznamu submisi*/\n\n            var Return = new MyObjective( // One member of that list - je to MySubmission takze cilem je doletet do checkpointu\n              new StringBuilder(\"Return to Madelyn\"), // nazev submise\n              MyMissionID.TRADE_STATION_EAC_RETURN, // id submise\n              new StringBuilder(\"\"), // popis submise\n              null,\n              this,\n              new MyMissionID[] { MyMissionID.TRADE_STATION_EAC_HOSPITAL }, // ID submisi ktere musi byt splneny - je to prazdne takze je to prvni submise\n              new MyMissionLocation(baseSector, MyMissionLocation.MADELYN_HANGAR), // ID of dummy point of checkpoint\n              radiusOverride: MyMissionLocation.MADELYN_HANGAR_RADIUS\n              ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudMadelynsSapho }; // nastaveni save na checkpointu nebo ne\n            m_objectives.Add(Return); // pridani do seznamu submisi\n\n            m_hospital.OnMissionSuccess += DefenseON;\n            m_casino.OnMissionSuccess += AttackBegin;\n        }\n  \n\n        void AttackBegin(MyMissionBase sender)\n        {\n            foreach (var turret in m_turrets)\n            {\n                MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.GetEntity(turret), false);\n            }\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.GetEntity((uint)EntityID.Central_Defense_System), false);\n\n            foreach (var Spawn in m_warSpawn)\n            {\n                MyScriptWrapper.ActivateSpawnPoint(Spawn);\n            }\n           \n            MyScriptWrapper.HideEntity(MyScriptWrapper.GetEntity((uint)EntityID.PC_Green));\n            MyScriptWrapper.UnhideEntity(MyScriptWrapper.GetEntity((uint)EntityID.PC_Red));\n        }\n\n\n\n\n        void DefenseON(MyMissionBase sender)\n        {\n\n            foreach (var turret in m_turrets)\n            {\n                MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.GetEntity(turret), true);\n            }\n            foreach (var Spawn in m_warSpawn)\n            {\n                MyScriptWrapper.DeactivateSpawnPoint(Spawn);\n            }\n            foreach (var Spawn in m_finalSpawn)\n            {\n                MyScriptWrapper.ActivateSpawnPoint(Spawn);\n            }\n            MyScriptWrapper.HideEntity(MyScriptWrapper.GetEntity((uint)EntityID.PC_Red));\n            MyScriptWrapper.UnhideEntity(MyScriptWrapper.GetEntity((uint)EntityID.PC_Green));\n        }\n\n    \n\n        public override void Load() // vykona se jednou na zacatku\n        {\n\n            base.Load();\n\n            foreach (var PC in m_PC)\n            {\n                MyScriptWrapper.RemoveEntityMark(MyScriptWrapper.GetEntity(PC));\n            }\n            \n       \n            MyScriptWrapper.HideEntity(MyScriptWrapper.GetEntity((uint)EntityID.PC_Red));\n     \n           \n            \n           \n            \n        }\n\n        public override void Update()//vola se v kazdem snimku\n        {\n            \n            base.Update();\n                  \n        }\n\n     \n\n    }\n       \n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/SinglePlayer/MyTwinTowersMission.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing MinerWars.AppCode.Game.Audio.Dialogues;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.AppCode.Game.Missions.Components;\nusing MinerWarsMath;\nusing MinerWars.Resources;\n\nnamespace MinerWars.AppCode.Game.Missions.SinglePlayer\n{\n    //Doppelburg?\n    class MyTwinTowersMission : MyMission\n    {\n        #region EntitiyIDs and entities\n\n        enum EntityID\n        {\n            StartLocation = 2315,\n            ReichMothership = 11747,\n\n            Objective_randevouz = 3791,\n\n            Objective_Railgun1 = 3792,\n            Objective_Railgun1_Controls_01 = 34549,\n            Objective_Railgun1_Controls_02 = 34550,\n\n            Objective_Railgun2 = 7160,\n            Objective_Railgun2_Controls_01 = 38701,\n            Objective_Railgun2_Controls_02 = 38702,\n            Objective_Railgun2_Controls_03 = 38703,\n            Objective_Railgun2_Controls_04 = 38704,\n            Objective_RightBase = 9580,\n\n            Objective_Generator = 9581,\n            Objective_Generator_Pipe1 = 1264,\n            Objective_Generator_Pipe2 = 1293,\n            Prefab_Generator_ToDisable = 13697,\n            Prefab_Light_ToDisable_01 = 39800,\n            Prefab_Light_ToDisable_02 = 39801,\n            Prefab_Light_ToEnable_01 = 39796,\n            Prefab_Light_ToEnable_02 = 39795,\n\n            Objective_Command = 9582,\n            Objective_Command_HUB = 16188,\n\n            Sabotage1 = 3459,\n            Sabotage2 = 3460,\n            Sabotage3 = 3461,\n            Sabotage4 = 3462,\n            Explosives1 = 23463,\n            Explosives2 = 23462,\n            Explosives3 = 23464,\n            Explosives4 = 23467,\n            Prefab_Rubble_01 = 41862,\n            Prefab_Sabotage1_ToDestroy1 = 8811,\n            Dummy_Sabotage1 = 41869,\n            Prefab_Rubble_02 = 39842,\n            Prefab_Sabotage2_ToDestroy1 = 12680,\n            Prefab_Sabotage2_ToDestroy2 = 12681,\n            Prefab_Sabotage2_ToDestroy3 = 12682,\n            Prefab_Rubble_03 = 41870,\n            Prefab_Sabotage3_ToDestroy1 = 1401,\n            Prefab_Sabotage3_ToDestroy2 = 1161,\n            Prefab_Sabotage3_ToDestroy3 = 24231,\n            Prefab_Sabotage3_ToDestroy4 = 24232,\n            Dummy_Sabotage3 = 42881,\n            Prefab_Rubble_04 = 43168,\n            Prefab_Sabotage4_ToDestroy1 = 43156,\n            Prefab_Sabotage4_ToDestroy2 = 43155,\n            Prefab_Sabotage4_ToDestroy3 = 43165,\n            Prefab_Sabotage4_ToDestroy4 = 23468,\n            Dummy_Sabotage4 = 43178,\n\n            Bot_Friend_Hacker = 7315,\n            //Bot_Friend_01 = 31403,\n            //Bot_Friend_02 = 31416,\n            //Bot_Friend_03 = 31429,\n\n            Spawnpoint_Command = 7309,\n            Spawnpoint_Jammer = 7835,\n            Spawnpoint_Jammer_Guards = 7834,\n\n            Detector_Command = 7328,\n            Detector_Hacker = 11986,\n            Detector_Friends = 30428,\n\n            Spawnpoint_Left_Assault_01 = 7310,\n            Bot_Left_01_01 = 22002,\n            Bot_Left_01_02 = 22003,\n            Spawnpoint_Left_Assault_02 = 7311,\n            Bot_Left_02_01 = 21989,\n            Bot_Left_02_02 = 21976,\n            Bot_Left_02_03 = 21951,\n            Spawnpoint_Left_Assault_03 = 7312,\n            //Bot_Left_03_01 = 21887,\n            //Bot_Left_03_02 = 21886,\n            Spawnpoint_Left_Assault_04 = 7313,\n            Bot_Left_04_01 = 21836,\n            Bot_Left_04_02 = 21861,\n            Spawnpoint_Left_Assault_05 = 7314,\n            Bot_Left_05_01 = 21938,\n            Bot_Left_05_02 = 21912,\n            Bot_Left_05_03 = 21913,\n\n            Spawnpoint_LastWave = 25254,\n\n            Spawnpoint_Right_Assault_01 = 9391,\n            //Bot_Right_01_01 = 24323,\n            //Bot_Right_01_02 = 24322,\n            Spawnpoint_Right_Assault_02 = 9392,\n            //Bot_Right_02_01 = 24245,\n            //Bot_Right_02_02 = 24258,\n            Spawnpoint_Right_Assault_03 = 9393,\n            Bot_Right_03_01 = 24350,\n            Bot_Right_03_02 = 24348,\n            Bot_Right_03_03 = 24349,\n            Spawnpoint_Right_Assault_04 = 9394, //disabable\n            Bot_Right_04_01 = 24297,\n            Bot_Right_04_02 = 24271,\n            Bot_Right_04_03 = 24272,\n\n            Spawnpoint_Railgun_Room_01 = 8626,\n            Spawnpoint_Railgun_Room_02 = 8627,\n\n            Spawnpoint_Right_Command = 9397,\n            Spawnpoint_Right_Lower = 9396,\n            Spawnpoint_Right_Upper = 9395,\n\n            Spawnpoint_Zeppelin_FoR_01 = 28037,\n            Spawnpoint_Zeppelin_FoR_02 = 28038,\n\n            Spawnpoint_Zeppelin_WW1_01 = 28473,\n            Spawnpoint_Zeppelin_WW1_02 = 28474,\n            Spawnpoint_Zeppelin_WW1_03_Hounds = 28475,\n            Detector_Zeppelin_WW1_Hounds = 28476,\n\n            Zeppelin_WW_1_Static = 20365,\n            Zeppelin_WW_2 = 20837,\n            Zeppelin_FoR_1 = 19893,\n            Zeppelin_WW_1_Moving = 69,\n\n            Objective_Zeppelin1_Battery1 = 20749,\n            Objective_Zeppelin1_Battery2 = 20467,\n            Objective_Zeppelin1_GeneratorWithoutBatteries = 20638,\n            Objective_Zeppelin1_Generator = 20666,\n\n            Objective_Zeppelin2_Command = 27123,\n\n            Prefab_Base_Left_01 = 2232,\n            Prefab_Base_Left_02 = 1969,\n            Prefab_Base_Left_03 = 483,\n\n            Prefab_Base_Right_01 = 1160,\n            Prefab_Base_Right_02 = 11215,\n            Prefab_Base_Right_03 = 2152,\n            Prefab_Base_Bridge = 267,\n            Prefab_Base_Construction = 1565,\n\n            Prefab_Door_LeftCommand1 = 820,\n            Prefab_Door_LeftCommand2 = 859,\n\n            Spawn_point_left_middle = 45275,\n            Spawn_point_left_down = 45274,\n            Spawn_point_left_up = 45276,\n            Spawn_point_right_up = 45277,\n            Spawn_point_right_down = 45278,\n\n            Spawn_point_End_friends1 = 16778202,\n            Spawn_point_End_friends2 = 16778203,\n\n            Waypoint_hacker_final = 11983,\n            Hacker_hub = 2233,\n        }\n\n        public override void ValidateIds()\n        {\n            foreach (var value in Enum.GetValues(typeof (EntityID)))\n            {\n                MyScriptWrapper.GetEntity((uint) ((value as EntityID?).Value));\n            }\n            foreach (var value in m_turrets1)\n            {\n                MyScriptWrapper.GetEntity(value);\n            }\n        }\n\n        private uint[] m_WWZeppelinSpawns = new uint[] {\n            (uint)EntityID.Spawnpoint_Zeppelin_WW1_01,\n            (uint)EntityID.Spawnpoint_Zeppelin_WW1_02,\n            (uint)EntityID.Spawnpoint_Zeppelin_WW1_03_Hounds\n        };\n\n        List<uint> m_botsInLeftHangars = new List<uint>\n            {\n                (uint) EntityID.Bot_Left_01_01,\n                (uint) EntityID.Bot_Left_01_02,\n                (uint) EntityID.Bot_Left_02_01,\n                (uint) EntityID.Bot_Left_02_02,\n                (uint) EntityID.Bot_Left_02_03,\n                /*(uint)EntityID.Bot_Left_03_01, (uint)EntityID.Bot_Left_03_02,*/ (uint) EntityID.Bot_Left_04_01,\n                (uint) EntityID.Bot_Left_04_02,\n                (uint) EntityID.Bot_Left_05_01,\n                (uint) EntityID.Bot_Left_05_02,\n                (uint) EntityID.Bot_Left_05_03,\n            };\n\n        List<uint> m_botsInRightHangars = new List<uint>\n            {\n                /*(uint)EntityID.Bot_Right_01_01, (uint)EntityID.Bot_Right_01_02, (uint)EntityID.Bot_Right_02_01, (uint)EntityID.Bot_Right_02_02,*/\n                (uint) EntityID.Bot_Right_03_01,\n                (uint) EntityID.Bot_Right_03_02,\n                (uint) EntityID.Bot_Right_03_03,\n                (uint) EntityID.Bot_Right_04_01,\n                (uint) EntityID.Bot_Right_04_02,\n                (uint) EntityID.Bot_Right_04_03\n            };\n\n        List<uint> m_turrets1 = new List<uint>\n            {\n                7869,\n                7867,\n                7872,\n                7875,\n                7887,\n                7881,\n                7879\n            };\n\n        /*\n        private List<uint> m_list_friends = new List<uint>\n        {\n            (uint)EntityID.Bot_Friend_01, (uint)EntityID.Bot_Friend_02, (uint)EntityID.Bot_Friend_03\n        };\n        */\n\n        Int32 m_explosives;\n\n        MySmallShipBot m_hacker;\n        MyEntity m_jammer;\n\n        MyEntityDetector m_commandDetector;\n\n        MyEntity m_explosives01;\n        MyEntity m_explosives02;\n        MyEntity m_explosives03;\n        MyEntity m_explosives04;\n\n        #endregion\n\n        private int? m_shootWarningTime;\n        private bool m_flyWWMS1;\n        private bool m_flyWWMS2;\n        private bool m_flyFoRMS;\n\n        private bool m_WWMS1_passedmark;\n        private bool m_WWMS2_passedmark;\n        private bool m_FoRMS_passedmark;\n\n        private Vector3 m_WW1mothershipPosition = new Vector3(-7004.5f, -168f, -8494f);\n        private Vector3 m_WW2mothershipPosition = new Vector3(-6208, -3509, -7949);\n        private Vector3 m_FoRmothershipPosition = new Vector3(-4920.5f, 447, -3742.5f);\n\n        private Vector3 m_WW1mothershipPositionHalf = new Vector3(-7362f, -168f, -9111f);\n        //private Vector3 m_WW2mothershipPosition = new Vector3(-6208, -3509, -7949);\n        private Vector3 m_FoRmothershipPositionHalf = new Vector3(-4253f, 447f, -3922f);\n\n        private MyEntity m_WWMS1_Moving;\n        private MyEntity m_WWMS1_Static;\n        private MyEntity m_WWMS2;\n        private MyEntity m_FoRMS;\n\n        #region Submissions\n\n        private MyObjective m_introTalk;\n        private MyObjective m_assaultSubmission;\n        private MyTimedObjective m_hackerSubmission;\n        private MyTimedObjective m_hackerSubmission2;\n        private MyObjectiveDestroy m_jammerSubmission;\n        private MyObjective m_rightBaseCommandSubmission;\n        private MyObjectiveDestroy m_mothership1Submission;\n        private MyObjectiveDestroy m_mothership1Submission2;\n        private MyObjective m_waitSubmission;\n\n        public MyTwinTowersMission()\n        {\n            ID = MyMissionID.TWIN_TOWERS; /* ID must be added to MyMissions.cs */\n            Name = MyTextsWrapperEnum.TWIN_TOWERS;\n            Description = MyTextsWrapperEnum.TWIN_TOWERS_Description;\n            DebugName = new StringBuilder(\"19-Doppelburg\");\n            Flags = MyMissionFlags.Story;\n\n            MyMwcVector3Int baseSector = new MyMwcVector3Int(-2809328, 0, -4609055);\n\n            /* sector where the mission is located */\n            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation);\n\n            RequiredMissions = new MyMissionID[] { MyMissionID.REICHSTAG_C };\n            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.TWIN_TOWERS_MOTHERSHIP1_V2 };\n            RequiredActors = new MyActorEnum[] { MyActorEnum.MADELYN, MyActorEnum.TARJA, MyActorEnum.VALENTIN  };\n            MovePlayerToMadelynHangar = false;\n\n            m_objectives = new List<MyObjective>();\n\n            m_introTalk = new MyObjective(\n                MyTextsWrapperEnum.Blank,\n                MyMissionID.TWIN_TOWERS_INTRO,\n                MyTextsWrapperEnum.Blank,\n                null,\n                this,\n                new MyMissionID[] { },\n                null\n                ) { StartDialogId = MyDialogueEnum.TWIN_TOWERS_0100_INTRO };\n            m_objectives.Add(m_introTalk);\n\n            var multipleSabotage = new MyMultipleUseObjective(\n                (MyTextsWrapperEnum.TWIN_TOWERS_SABOTAGE_Name),\n                MyMissionID.TWIN_TOWERS_SABOTAGE,\n                (MyTextsWrapperEnum.TWIN_TOWERS_SABOTAGE_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.TWIN_TOWERS_INTRO },\n                MyTextsWrapperEnum.PressToPlaceExplosive,\n                MyTextsWrapperEnum.Blank,\n                MyTextsWrapperEnum.PlacingExplosives,\n                1000,\n                new List<uint> { (uint)EntityID.Explosives2, (uint)EntityID.Explosives3, (uint)EntityID.Explosives1 },\n                MyUseObjectiveType.Putting\n                ) { StartDialogId = MyDialogueEnum.TWIN_TOWERS_0200_PLACE_EXPLOSIVES };\n            multipleSabotage.OnObjectUsedSucces += MultipleSabotageOnOnObjectUsedSucces;\n            multipleSabotage.RequiredUncompletedMissions = new MyMissionID[] { MyMissionID.TWIN_TOWERS_RANDEVOUZ };\n            multipleSabotage.Components.Add(\n                new MyDetectorDialogue(\n                    (uint) EntityID.Sabotage1,\n                    MyDialogueEnum.TWIN_TOWERS_0300_player_reaching_the_main_electricity_supply));\n            multipleSabotage.Components.Add(\n                new MyDetectorDialogue(\n                    (uint) EntityID.Sabotage2,\n                    MyDialogueEnum.TWIN_TOWERS_0400_reaching_a_hangar_with_unmanned_enemy_small_ships));\n            multipleSabotage.Components.Add(\n                new MyDetectorDialogue(\n                    (uint) EntityID.Sabotage3, MyDialogueEnum.TWIN_TOWERS_0500_reaching_electricity_distribution_HUB));\n            m_objectives.Add(multipleSabotage);\n\n            /*\n            var sabotageSubmission04 = new MySabotageSubmission(\n                new StringBuilder(\"Industrial section control room\"),\n                MyMissionID.TWIN_TOWERS_SABOTAGE04,\n                new StringBuilder(\"\"),\n                null,\n                this,\n                new MyMissionID[] { },\n                new MyMissionLocation(baseSector, (uint)EntityID.Sabotage4)\n            );\n            sabotageSubmission04.RequiredUncompletedMissions = new MyMissionID[] { MyMissionID.TWIN_TOWERS_RANDEVOUZ };\n            sabotageSubmission04.OnMissionSuccess += Sabotage04SubmissionSuccess;\n            m_objectives.Add(sabotageSubmission04);\n            */\n            var randevouzSubmission = new MyObjective(\n                (MyTextsWrapperEnum.TWIN_TOWERS_RANDEVOUZ_Name),\n                MyMissionID.TWIN_TOWERS_RANDEVOUZ,\n                (MyTextsWrapperEnum.TWIN_TOWERS_RANDEVOUZ_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.TWIN_TOWERS_SABOTAGE },\n                new MyMissionLocation(baseSector, (uint)EntityID.Objective_randevouz)\n            )\n                {\n                    SaveOnSuccess = true,\n                    StartDialogId = MyDialogueEnum.TWIN_TOWERS_0600_after_all_the_sabotages_are_done,\n                    HudName = MyTextsWrapperEnum.HudMeetingPoint\n                };\n            randevouzSubmission.OnMissionLoaded += RandevouzSubmissionLoaded;\n            randevouzSubmission.OnMissionSuccess += RandevouzSubmissionSuccess;\n            m_objectives.Add(randevouzSubmission);\n\n            m_assaultSubmission = new MyObjectiveDestroy(\n                (MyTextsWrapperEnum.TWIN_TOWERS_ASSAULT_Name),\n                MyMissionID.TWIN_TOWERS_ASSAULT,\n                (MyTextsWrapperEnum.TWIN_TOWERS_ASSAULT_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.TWIN_TOWERS_RANDEVOUZ },\n                null,\n                new List<uint> { (uint) EntityID.Spawnpoint_Command }\n                )\n                {\n                    SaveOnSuccess = true,\n                    StartDialogId = MyDialogueEnum.TWIN_TOWERS_0700_Meeting_point,\n                    SuccessDialogId = MyDialogueEnum.TWIN_TOWERS_0800_command_center_cleared\n                };\n            m_assaultSubmission.OnMissionSuccess += AssaultSubmissionSuccess;\n            m_assaultSubmission.OnMissionLoaded += AssaultSubmissionLoaded;\n            m_objectives.Add(m_assaultSubmission);\n\n            m_hackerSubmission = new MyTimedObjective(\n                (MyTextsWrapperEnum.TWIN_TOWERS_HACKING_Name),\n                MyMissionID.TWIN_TOWERS_HACKING,\n                (MyTextsWrapperEnum.TWIN_TOWERS_HACKING_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.TWIN_TOWERS_ASSAULT },\n                new TimeSpan(0, 3, 0),\n                false\n                )\n                {\n                    SaveOnSuccess = true,\n                    StartDialogId = MyDialogueEnum.TWIN_TOWERS_0900_hacker_reaches_computer,\n                    SuccessDialogId = MyDialogueEnum.TWIN_TOWERS_1100_hacking_gets_jammed,\n                    HudName = MyTextsWrapperEnum.HudHacker\n                };\n            m_hackerSubmission.OnMissionSuccess += HackerSubmissionSuccess;\n            m_hackerSubmission.OnMissionLoaded += HackerSubmissionLoaded;\n            m_hackerSubmission.NotificationText = MyTextsWrapperEnum.CountdownHacker;\n            m_hackerSubmission.Components.Add(new MyTimedDialogue(TimeSpan.FromSeconds(90), MyDialogueEnum.TWIN_TOWERS_1000_through_the_fight));\n            m_objectives.Add(m_hackerSubmission);\n\n            m_jammerSubmission = new MyObjectiveDestroy(\n                (MyTextsWrapperEnum.TWIN_TOWERS_JAMMER_Name),\n                MyMissionID.TWIN_TOWERS_JAMMER,\n                (MyTextsWrapperEnum.TWIN_TOWERS_JAMMER_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.TWIN_TOWERS_HACKING },\n                null,\n                new List<uint> { (uint) EntityID.Spawnpoint_Jammer }\n                )\n                {\n                    SaveOnSuccess = true,\n                    SuccessDialogId = MyDialogueEnum.TWIN_TOWERS_1200_killing_jammer,\n                    HudName = MyTextsWrapperEnum.HudJammer\n                };\n            m_jammerSubmission.OnMissionSuccess += JammerSubmissionSuccess;\n            m_jammerSubmission.OnMissionLoaded += JammerSubmissionLoaded;\n            m_objectives.Add(m_jammerSubmission);\n\n            m_hackerSubmission2 = new MyTimedObjective(\n                (MyTextsWrapperEnum.TWIN_TOWERS_HACKING_CONTINUE_Name),\n                MyMissionID.TWIN_TOWERS_HACKING_CONTINUE,\n                (MyTextsWrapperEnum.TWIN_TOWERS_HACKING_CONTINUE_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.TWIN_TOWERS_JAMMER },\n                new TimeSpan(0, 1, 7)\n                )\n                {\n                    SaveOnSuccess = true,\n                    SuccessDialogId = MyDialogueEnum.TWIN_TOWERS_1300_hacking_done,\n                    HudName = MyTextsWrapperEnum.HudHacker\n                };\n            m_hackerSubmission2.OnMissionSuccess += Hacker2SubmissionSuccess;\n            m_hackerSubmission2.OnMissionLoaded += Hacker2SubmissionLoaded;\n            m_hackerSubmission2.NotificationText = MyTextsWrapperEnum.CountdownHacker;\n            m_objectives.Add(m_hackerSubmission2);\n\n            var railgun01Submission = new MyObjectiveDestroy(\n                (MyTextsWrapperEnum.TWIN_TOWERS_RAILGUN1_Name),\n                MyMissionID.TWIN_TOWERS_RAILGUN1,\n                (MyTextsWrapperEnum.TWIN_TOWERS_RAILGUN1_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.TWIN_TOWERS_HACKING_CONTINUE },\n                new List<uint>\n                    { (uint) EntityID.Objective_Railgun1_Controls_01, (uint) EntityID.Objective_Railgun1_Controls_02 }\n                )\n                {\n                    SuccessDialogId = MyDialogueEnum.TWIN_TOWERS_1400_clearing_first_control_room\n                };\n            railgun01Submission.OnMissionSuccess += Railgun01SubmissionSuccess;\n            m_objectives.Add(railgun01Submission);\n\n            var railgun02Submission = new MyObjectiveDestroy(\n                (MyTextsWrapperEnum.TWIN_TOWERS_RAILGUN2_Name),\n                MyMissionID.TWIN_TOWERS_RAILGUN2,\n                (MyTextsWrapperEnum.TWIN_TOWERS_RAILGUN2_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.TWIN_TOWERS_RAILGUN1 },\n                new List<uint>\n                    {\n                        (uint) EntityID.Objective_Railgun2_Controls_01,\n                        (uint) EntityID.Objective_Railgun2_Controls_02,\n                        (uint) EntityID.Objective_Railgun2_Controls_03,\n                        (uint) EntityID.Objective_Railgun2_Controls_04\n                    }\n                )\n                {\n                    SaveOnSuccess = true\n                };\n            railgun02Submission.OnMissionLoaded += Railgun02SubmissionLoaded;\n            railgun02Submission.OnMissionSuccess += Railgun02SubmissionSuccess;\n            m_objectives.Add(railgun02Submission);\n\n            var rightBaseGoToSubmission = new MyObjective(\n                (MyTextsWrapperEnum.TWIN_TOWERS_GOTO_RIGHT_Name),\n                MyMissionID.TWIN_TOWERS_GOTO_RIGHT,\n                (MyTextsWrapperEnum.TWIN_TOWERS_GOTO_RIGHT_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.TWIN_TOWERS_RAILGUN2 },\n                new MyMissionLocation(baseSector, (uint) EntityID.Objective_RightBase)\n                )\n                {\n                    StartDialogId = MyDialogueEnum.TWIN_TOWERS_1500_clearing_second_control_room,\n                    HudName = MyTextsWrapperEnum.HudTowerB\n                };\n            rightBaseGoToSubmission.OnMissionSuccess += RightBaseGoToSubmissionSuccess;\n            m_objectives.Add(rightBaseGoToSubmission);\n\n            var rightBaseGeneratorSubmission = new MyObjectiveDestroy(\n                (MyTextsWrapperEnum.TWIN_TOWERS_GENERATOR_Name),\n                MyMissionID.TWIN_TOWERS_GENERATOR,\n                (MyTextsWrapperEnum.TWIN_TOWERS_GENERATOR_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.TWIN_TOWERS_GOTO_RIGHT },\n                new List<uint> { (uint) EntityID.Objective_Generator_Pipe1, (uint) EntityID.Objective_Generator_Pipe2 }\n                )\n                {\n                    StartDialogId = MyDialogueEnum.TWIN_TOWERS_1600_in_tower_B,\n                    HudName = MyTextsWrapperEnum.HudGenerator\n                };\n            rightBaseGeneratorSubmission.SaveOnSuccess = true;\n            rightBaseGeneratorSubmission.OnMissionLoaded += RightBaseGeneratorSubmissionLoaded;\n            rightBaseGeneratorSubmission.OnMissionSuccess += RightBaseGeneratorSubmissionSuccess;\n            m_objectives.Add(rightBaseGeneratorSubmission);\n\n            m_rightBaseCommandSubmission = new MyObjective(\n                (MyTextsWrapperEnum.TWIN_TOWERS_COMMAND_Name),\n                MyMissionID.TWIN_TOWERS_COMMAND,\n                (MyTextsWrapperEnum.TWIN_TOWERS_COMMAND_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.TWIN_TOWERS_GENERATOR },\n                null,\n                new List<uint> { (uint) EntityID.Objective_Command_HUB }\n                )\n                {\n                    StartDialogId = MyDialogueEnum.TWIN_TOWERS_1700_reactor_shut_down,\n                    SuccessDialogId = MyDialogueEnum.TWIN_TOWERS_1800_computer_hacked,\n                    HudName = MyTextsWrapperEnum.HudCommandCenter\n                };\n            m_rightBaseCommandSubmission.OnMissionLoaded += RightBaseCommandSubmissionLoaded;\n            m_rightBaseCommandSubmission.OnMissionSuccess += RightBaseCommandSubmissionSuccess;\n            m_objectives.Add(m_rightBaseCommandSubmission);\n\n            m_waitSubmission = new MyObjective(\n                (MyTextsWrapperEnum.TWIN_TOWERS_WAIT_Name),\n                MyMissionID.TWIN_TOWERS_WAIT,\n                (MyTextsWrapperEnum.TWIN_TOWERS_WAIT_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.TWIN_TOWERS_COMMAND },\n                null\n                )\n                {\n                    SuccessDialogId = MyDialogueEnum.TWIN_TOWERS_1900_motherships_arrived\n                };\n            m_waitSubmission.SaveOnSuccess = true;\n            m_waitSubmission.OnMissionLoaded += WaitSubmissionLoaded;\n            m_waitSubmission.OnMissionSuccess += WaitSubmissionSuccess;\n            m_objectives.Add(m_waitSubmission);\n\n            m_mothership1Submission = new MyObjectiveDestroy(\n                (MyTextsWrapperEnum.TWIN_TOWERS_MOTHERSHIP1_Name),\n                MyMissionID.TWIN_TOWERS_MOTHERSHIP1,\n                (MyTextsWrapperEnum.TWIN_TOWERS_MOTHERSHIP1_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.TWIN_TOWERS_WAIT },\n                new List<uint> { (uint)EntityID.Objective_Zeppelin1_Generator }\n                )\n                {\n                    HudName = MyTextsWrapperEnum.HudGenerator\n                };\n            m_mothership1Submission.SaveOnSuccess = true;\n            m_mothership1Submission.Components.Add(new MySpawnpointWaves((uint)EntityID.Detector_Zeppelin_WW1_Hounds, 0, (uint)EntityID.Spawnpoint_Zeppelin_WW1_03_Hounds));\n            m_mothership1Submission.OnMissionLoaded += Mothership1SubmissionLoaded;\n            m_mothership1Submission.OnMissionSuccess += Mothership1SubmissionSuccess;\n            m_mothership1Submission.Components.Add(new MySpawnpointLimiter(m_WWZeppelinSpawns, 10));\n            m_objectives.Add(m_mothership1Submission);\n\n            m_mothership1Submission2 = new MyObjectiveDestroy(\n                (MyTextsWrapperEnum.TWIN_TOWERS_MOTHERSHIP1_V2_Name),\n                MyMissionID.TWIN_TOWERS_MOTHERSHIP1_V2,\n                (MyTextsWrapperEnum.TWIN_TOWERS_MOTHERSHIP1_V2_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.TWIN_TOWERS_MOTHERSHIP1 },\n                new List<uint>\n                    { (uint) EntityID.Objective_Zeppelin1_Battery1, (uint) EntityID.Objective_Zeppelin1_Battery2 }\n                )\n                {\n                    StartDialogId = MyDialogueEnum.TWIN_TOWERS_2000_destroying_the_generator,\n                    SuccessDialogId = MyDialogueEnum.TWIN_TOWERS_2100_destroying_batteries,\n                    HudName = MyTextsWrapperEnum.HudBatteries\n                };\n            m_mothership1Submission2.Components.Add(new MySpawnpointWaves((uint)EntityID.Detector_Zeppelin_WW1_Hounds, 0, (uint)EntityID.Spawnpoint_Zeppelin_WW1_03_Hounds));\n            m_mothership1Submission2.OnMissionLoaded += Mothership1Submission2Loaded;\n            m_mothership1Submission2.OnMissionSuccess += Mothership1Submission2Success;\n            m_mothership1Submission2.Components.Add(new MySpawnpointLimiter(m_WWZeppelinSpawns, 10));\n            m_objectives.Add(m_mothership1Submission2);\n            /*\n            var mothership2Submission = new MyObjective(\n                new StringBuilder(\"Destroy the second mothership\"),\n                MyMissionID.TWIN_TOWERS_MOTHERSHIP2,\n                new StringBuilder(\"\"),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.TWIN_TOWERS_MOTHERSHIP1_V2 },\n                new MyMissionLocation(baseSector, (uint)EntityID.Objective_Zeppelin2_Command)\n            );\n            mothership2Submission.OnMissionLoaded += Mothership2SubmissionLoaded;\n            mothership2Submission.OnMissionSuccess += Mothership2SubmissionSuccess;\n            m_objectives.Add(mothership2Submission);\n            */  /*\n            var returnSubmission = new MyObjective(\n                new StringBuilder(\"Return to Madelyn\"),\n                MyMissionID.TWIN_TOWERS_GOTO_MADELYN,\n                new StringBuilder(\"\"),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.TWIN_TOWERS_MOTHERSHIP1_V2 },\n                new MyMissionLocation(baseSector, MyMissionLocation.MADELYN_HANGAR)\n            );\n            m_objectives.Add(returnSubmission);*/\n        }\n\n        #endregion\n\n        #region Load/Unload\n        public override void Accept()\n        {\n            base.Accept();\n\n            MyScriptWrapper.AddHackingToolToPlayersInventory(5);\n        }\n\n        public override void Load()\n        {\n            m_shootWarningTime = null;\n\n            /*\n            if (MyScriptWrapper.IsMissionFinished(MyMissionID.TWIN_TOWERS_HACKING_CONTINUE))\n            {\n                for (int i = 1; i < m_friends.Count; i++)\n                {\n                    m_friends[i].Follow(m_friends[0]);\n                }\n                m_friends[0].SetWaypointPath(\"friendPatrol\");\n                m_friends[0].PatrolMode = MyPatrolMode.CYCLE;\n                m_friends[0].Patrol();\n            }\n            */\n\n            // audio\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.Mystery);\n\n            MyScriptWrapper.OnSpawnpointBotSpawned += OnSpawnpointBotSpawned;\n            MyScriptWrapper.OnEntityAtacked += OnEntityAtacked;\n            MyScriptWrapper.OnBotReachedWaypoint += OnBotReachedWaypoint;\n            MyScriptWrapper.EntityDeath += OnEntityDeath;\n            MyScriptWrapper.EntityHacked += OnEntityHacked;\n\n            MyScriptWrapper.OnDialogueFinished += MyScriptWrapperOnDialogueFinished;\n\n            MyScriptWrapper.SetFactionRelation(MyMwcObjectBuilder_FactionEnum.FourthReich, MyMwcObjectBuilder_FactionEnum.Rainiers, MyFactions.RELATION_BEST);\n\n            // deactivate bots in hangar\n            foreach (var botID in m_botsInLeftHangars)\n            {\n                MyEntity bot = MyScriptWrapper.TryGetEntity(botID);\n                if (bot != null)\n                {\n                    MyScriptWrapper.DisableShip(MyScriptWrapper.TryGetEntity(botID));\n                }\n            }\n\n            foreach (var botID in m_botsInRightHangars)\n            {\n                MyEntity bot = MyScriptWrapper.TryGetEntity(botID);\n                if (bot != null)\n                {\n                    MyScriptWrapper.DisableShip(MyScriptWrapper.TryGetEntity(botID));\n                }\n            }\n\n            // hide motherships\n            if (!MyScriptWrapper.IsMissionFinished(MyMissionID.TWIN_TOWERS_MOTHERSHIP2))\n            {\n                MyScriptWrapper.HideEntity(MyScriptWrapper.GetEntity(\"Madelyn\"));\n            }\n\n            // get hacker\n            m_hacker = MyScriptWrapper.TryGetEntity((uint)EntityID.Bot_Friend_Hacker) as MySmallShipBot;\n            MyScriptWrapper.SetEntityDestructible(m_hacker, false);\n\n            if (MyScriptWrapper.IsMissionFinished(MyMissionID.TWIN_TOWERS_RANDEVOUZ))\n            {\n                MyScriptWrapper.HideEntity(MyScriptWrapper.GetEntity((uint)EntityID.ReichMothership));\n            }\n            else\n            {\n                m_explosives = 3;\n                m_explosives01 = MyScriptWrapper.TryGetEntity((uint)EntityID.Explosives1);\n                HideExplosives(m_explosives01);\n\n                m_explosives02 = MyScriptWrapper.TryGetEntity((uint)EntityID.Explosives2);\n                HideExplosives(m_explosives02);\n\n                m_explosives03 = MyScriptWrapper.TryGetEntity((uint)EntityID.Explosives3);\n                HideExplosives(m_explosives03);\n\n                m_explosives04 = MyScriptWrapper.TryGetEntity((uint)EntityID.Explosives4);\n                HideExplosives(m_explosives04);\n            }\n\n            if (MyScriptWrapper.IsMissionFinished(MyMissionID.TWIN_TOWERS_ASSAULT))\n            {\n                MyScriptWrapper.SetFactionRelation(MyMwcObjectBuilder_FactionEnum.WhiteWolves, MyMwcObjectBuilder_FactionEnum.Rainiers, -100);\n                if (!MyScriptWrapper.IsMissionFinished(MyMissionID.TWIN_TOWERS_HACKING_CONTINUE))\n                {\n                    foreach (var value in m_turrets1)\n                    {\n                        MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity(value), false);\n                    }\n                }\n                else\n                {\n                    MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.Prefab_Door_LeftCommand1), true);\n                    MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.Prefab_Door_LeftCommand2), true);\n                }\n            }\n            else\n            {\n                MyScriptWrapper.SetFactionRelation(MyMwcObjectBuilder_FactionEnum.WhiteWolves, MyMwcObjectBuilder_FactionEnum.Rainiers, 100);\n            }\n\n            if (MyScriptWrapper.IsMissionFinished(MyMissionID.TWIN_TOWERS_HACKING_CONTINUE))\n            {\n                ChangeFaction_Phase01();\n            }\n\n            if (MyScriptWrapper.IsMissionFinished(MyMissionID.TWIN_TOWERS_GENERATOR))\n            {\n                MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.GetEntity((uint)EntityID.Objective_Generator), false);\n            }\n\n            m_FoRMS = MyScriptWrapper.GetEntity((uint)EntityID.Zeppelin_FoR_1);\n            m_WWMS1_Moving = MyScriptWrapper.GetEntity((uint)EntityID.Zeppelin_WW_1_Moving);\n            m_WWMS1_Static = MyScriptWrapper.GetEntity((uint)EntityID.Zeppelin_WW_1_Static);\n            m_WWMS2 = MyScriptWrapper.GetEntity((uint)EntityID.Zeppelin_WW_2);\n            \n            if (!MyScriptWrapper.IsMissionFinished(MyMissionID.TWIN_TOWERS_COMMAND))\n            {\n                MyScriptWrapper.HideEntity(m_WWMS1_Moving, true);\n                MyScriptWrapper.HideEntity(m_WWMS1_Static, true);\n                MyScriptWrapper.HideEntity(m_WWMS2, true);\n                MyScriptWrapper.HideEntity(m_FoRMS, true);\n            }\n            else\n            {\n                ChangeFaction_Phase02();\n            }\n\n            m_flyWWMS1 = false;\n            m_flyWWMS2 = false;\n            m_flyFoRMS = false;\n            m_WWMS1_passedmark = false;\n            m_WWMS2_passedmark = false;\n            m_FoRMS_passedmark = false;\n\n            base.Load();\n\n            // To be removed later\n            // inventory items\n            /*\n            MyMwcObjectBuilder_SmallShip_Player originalBuilder = MySession.PlayerShip.GetObjectBuilder(true) as MyMwcObjectBuilder_SmallShip_Player;\n            originalBuilder.ShipType = MyMwcObjectBuilder_SmallShip_TypesEnum.HEWER;\n            MySession.PlayerShip.Close();\n            MyEntities.CreateFromObjectBuilderAndAdd(null, originalBuilder, originalBuilder.PositionAndOrientation.GetMatrix());\n             */\n\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.Prefab_Light_ToDisable_01),true);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.Prefab_Light_ToDisable_02),true);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.Prefab_Light_ToEnable_01),false);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.Prefab_Light_ToEnable_02),false);\n        }\n\n        void MyScriptWrapperOnDialogueFinished(MyDialogueEnum dialogue, bool interrupted)\n        {\n            switch (dialogue)\n            {\n                case MyDialogueEnum.TWIN_TOWERS_0100_INTRO:\n                    m_introTalk.Success();\n                    break;\n            }\n        }\n\n        public override void Unload()\n        {\n            base.Unload();\n\n            MyScriptWrapper.OnDialogueFinished -= MyScriptWrapperOnDialogueFinished;\n\n            MyScriptWrapper.OnSpawnpointBotSpawned -= OnSpawnpointBotSpawned;\n            MyScriptWrapper.OnEntityAtacked -= OnEntityAtacked;\n            MyScriptWrapper.OnBotReachedWaypoint -= OnBotReachedWaypoint;\n            MyScriptWrapper.EntityDeath -= OnEntityDeath;\n            MyScriptWrapper.EntityHacked -= OnEntityHacked;\n\n            m_hacker = null;\n            m_explosives01 = null;\n            m_explosives02 = null;\n            m_explosives03 = null;\n            m_explosives04 = null;\n            m_FoRMS = null;\n            m_WWMS1_Moving = null;\n            m_WWMS1_Static = null;\n            m_WWMS2 = null;\n        }\n\n        public override void Update()\n        {\n            if (!IsMainSector) return;\n\n            base.Update();\n\n            if (m_flyWWMS1)\n            {\n                if (m_WWMS1_passedmark)\n                {\n                    if (MoveMotherShipForward(m_WWMS1_Moving, 300f, m_WW1mothershipPosition))\n                    {\n                        m_flyWWMS1 = false;\n                        m_waitSubmission.Success();\n                        MyScriptWrapper.EnablePhysics((uint)EntityID.Zeppelin_WW_1_Static, true);\n                        MyScriptWrapper.UnhideEntity(m_WWMS1_Static);\n                        MyScriptWrapper.HideEntity(m_WWMS1_Moving);\n                    }\n                }\n                else\n                {\n                    if (MoveMotherShipForward(m_WWMS1_Moving, 1000f, m_WW1mothershipPositionHalf))\n                    {\n                        m_WWMS1_passedmark = true;\n                    }\n                }\n            }\n            if (m_flyWWMS2)\n            {\n                if (MoveMotherShipForward(m_WWMS2, 1000f, m_WW2mothershipPosition))\n                {\n                    m_flyWWMS2 = false;\n                    MyScriptWrapper.ReturnMotherShipFromMove(m_WWMS2);\n                }\n            }\n            if (m_flyFoRMS)\n            {\n                if (m_FoRMS_passedmark)\n                {\n                    if (MoveMotherShipForward(m_FoRMS, 300f, m_FoRmothershipPosition))\n                    {\n                        m_flyFoRMS = false;\n                        //MyScriptWrapper.EnablePhysics((uint)EntityID.Zeppelin_FoR_1, true);\n                        MyScriptWrapper.ReturnMotherShipFromMove(m_FoRMS);\n                        m_flyWWMS1 = true;\n                        //m_flyWWMS2 = true;\n                    }\n                }\n                else\n                {\n                    if (MoveMotherShipForward(m_FoRMS, 1000f, m_FoRmothershipPositionHalf))\n                    {\n                        m_FoRMS_passedmark = true;\n                    }\n                }\n                \n            }\n        }\n\n        #endregion\n\n        #region Event handlers\n        void OnBotReachedWaypoint(MyEntity bot, MyEntity waypoint)\n        {\n            if (bot == m_hacker && waypoint.EntityId != null && waypoint.EntityId.Value.NumericValue == (uint)EntityID.Waypoint_hacker_final)\n            {\n                m_hacker.LookTarget = MyScriptWrapper.TryGetEntity((uint)EntityID.Hacker_hub);\n            }\n        }\n\n        bool KillableWithoutAlarm(MyEntity entity)\n        {\n            var bot = entity as MySmallShipBot;\n            foreach (var spBot in MyScriptWrapper.GetSpawnPointBots((uint)EntityID.Spawnpoint_Command))  // bots in command center are killable without alarm\n            {\n                if (spBot.Ship == bot) return true;\n            }\n            return false;\n        }\n\n        void DisplayWarningOrStartAlarm()\n        {\n            if (m_shootWarningTime == null)\n            {\n                m_shootWarningTime = MyScriptWrapper.GetGameTime();\n                MyScriptWrapper.AddNotification(MyScriptWrapper.CreateNotification(MyTextsWrapperEnum.DontShoot, MyHudConstants.ENEMY_FONT, 10000));\n                return;\n            }\n            if (MyScriptWrapper.GetGameTime() - m_shootWarningTime.Value < 2000)  // two-second grace period\n            {\n                return;\n            }\n            ChangeToEnemy();\n            SpawnBotsOnAlarm();\n        }\n\n        void OnEntityDeath(MyEntity entity, MyEntity killedBy)\n        {\n            if ((entity == m_hacker) && (!MyScriptWrapper.IsMissionFinished(MyMissionID.TWIN_TOWERS_HACKING) || !MyScriptWrapper.IsMissionFinished(MyMissionID.TWIN_TOWERS_HACKING_CONTINUE)))\n            {\n                Fail(MyTextsWrapperEnum.Fail_HackerKilled);\n            }\n\n            if (MySession.IsPlayerShip(killedBy) && !MyScriptWrapper.IsMissionFinished(MyMissionID.TWIN_TOWERS_ASSAULT) && !KillableWithoutAlarm(entity))\n            {\n                DisplayWarningOrStartAlarm();\n            }\n        }\n\n\n        private void SpawnBotsOnAlarm()\n        {\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Spawn_point_left_down);\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Spawn_point_left_middle);\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Spawn_point_left_up);\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Spawn_point_right_down);\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Spawn_point_right_up);\n        }\n\n        void OnEntityAtacked(MyEntity attacker, MyEntity target)\n        {\n            if (MySession.IsPlayerShip(attacker) && !MyScriptWrapper.IsMissionFinished(MyMissionID.TWIN_TOWERS_ASSAULT) && !KillableWithoutAlarm(target))\n            {\n                if (target is MySmallShipBot && target.Faction == MyMwcObjectBuilder_FactionEnum.WhiteWolves)\n                {\n                    DisplayWarningOrStartAlarm();\n                }\n            }\n        }\n\n        void OnSpawnpointBotSpawned(MyEntity spawnpoint, MyEntity bot)\n        {\n            switch (MyScriptWrapper.GetEntityId(spawnpoint))\n            {\n                case (uint)EntityID.Spawnpoint_Zeppelin_WW1_03_Hounds:\n                    ((MySmallShipBot)bot).Attack(MySession.PlayerShip);\n                    break;\n                case (uint)EntityID.Spawnpoint_Jammer:\n                    m_jammer = bot;\n                    MyScriptWrapper.MarkEntity(bot, MyTexts.Jammer);\n                    // stop hacker mission and play jammer mission\n                    m_hackerSubmission.Success();\n                    break;\n                case (uint)EntityID.Spawnpoint_Left_Assault_01:\n                    ((MySmallShipBot)bot).Attack(m_hacker);\n                    break;\n            }\n        }\n\n\n\n        void OnEntityHacked(MyEntity entity)\n        {\n            if (entity == MyScriptWrapper.GetEntity((uint)EntityID.Objective_Command_HUB))\n            {\n                m_rightBaseCommandSubmission.Success();\n            }\n        }\n        #endregion\n\n        #region MissionSuccess\n\n        void MultipleSabotageOnOnObjectUsedSucces(uint entityID)\n        {\n            switch (entityID)\n            {\n                case (uint)EntityID.Explosives1:\n                    PlaceExplosives(m_explosives01);\n                    break;\n                case (uint)EntityID.Explosives2:\n                    PlaceExplosives(m_explosives02);\n                    break;\n                case (uint)EntityID.Explosives3:\n                    PlaceExplosives(m_explosives03);\n                    break;\n            }\n        }\n\n        private void RandevouzSubmissionLoaded(MyMissionBase sender)\n        {\n            \n        }\n\n        private void RandevouzSubmissionSuccess(MyMissionBase sender)\n        {\n            //m_hacker.Follow(MySession.PlayerShip);\n        }\n\n        private void AssaultSubmissionLoaded(MyMissionBase sender)\n        {\n            m_commandDetector = MyScriptWrapper.GetDetector(MyScriptWrapper.GetEntity((uint)EntityID.Detector_Command));\n            m_commandDetector.OnEntityEnter += CommandReached;\n            m_commandDetector.On();\n\n            MyScriptWrapper.HideEntity(MyScriptWrapper.GetEntity((uint)EntityID.ReichMothership));\n        }\n\n        private void AssaultSubmissionSuccess(MyMissionBase sender)\n        {\n            ChangeToEnemy();\n        }\n\n        private void HackerSubmissionLoaded(MyMissionBase sender)\n        {\n            m_hacker.PatrolMode = MyPatrolMode.ONE_WAY;\n            m_hacker.SetWaypointPath(\"HackerRoute1\");\n            MyScriptWrapper.SetEntityDestructible(m_hacker, true);\n            m_hacker.Patrol();\n            m_hacker.MaxHealth = 500;\n            m_hacker.Health = 500;\n\n            MyScriptWrapper.SetEntityPriority(m_hacker, MySession.PlayerShip.AIPriority *6);\n\n            MyEntityDetector securityDetector = MyScriptWrapper.GetDetector(MyScriptWrapper.GetEntity((uint)EntityID.Detector_Hacker));\n            securityDetector.OnEntityEnter += SecurityDetectorReached;\n            securityDetector.On();\n            \n            m_hackerSubmission.MissionEntityIDs.Add(MyScriptWrapper.GetEntityId(m_hacker));\n\n            MissionTimer.RegisterTimerAction(3000, AssaultSubmissionWave01, false);\n            MissionTimer.RegisterTimerAction(55000, AssaultSubmissionWave02, false);\n            MissionTimer.RegisterTimerAction(113000, AssaultSubmissionWave03, false);\n\n            foreach (var value in m_turrets1)\n            {\n                MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity(value), false);\n            }\n\n            ExplodeExplosives();\n        }\n\n        private void HackerSubmissionSuccess(MyMissionBase sender)\n        {\n            \n        }\n\n        private void JammerSubmissionLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Spawnpoint_Left_Assault_04);\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Spawnpoint_Left_Assault_03);\n        }\n\n        private void JammerSubmissionSuccess(MyMissionBase sender)\n        {\n           // m_hackerSubmission.Suspend(true);\n        }\n\n        private void Hacker2SubmissionLoaded(MyMissionBase sender)\n        {\n            m_hackerSubmission2.SubmissionDuration = m_hackerSubmission.RemainingTime;\n            m_hackerSubmission.HideNotification();\n\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Spawnpoint_LastWave);\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Spawnpoint_Left_Assault_04);\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Spawnpoint_Left_Assault_03);\n\n            m_hackerSubmission2.MissionEntityIDs.Add(MyScriptWrapper.GetEntityId(m_hacker));\n        }\n\n        private void Hacker2SubmissionSuccess(MyMissionBase sender)\n        {\n            MyScriptWrapper.DeactivateSpawnPoint((uint)EntityID.Spawnpoint_Left_Assault_01);\n            MyScriptWrapper.DeactivateSpawnPoint((uint)EntityID.Spawnpoint_Left_Assault_02);\n            MyScriptWrapper.DeactivateSpawnPoint((uint)EntityID.Spawnpoint_Left_Assault_03);\n            MyScriptWrapper.DeactivateSpawnPoint((uint)EntityID.Spawnpoint_Left_Assault_04);\n            MyScriptWrapper.DeactivateSpawnPoint((uint)EntityID.Spawnpoint_Left_Assault_05);\n            MyScriptWrapper.DeactivateSpawnPoint((uint)EntityID.Spawnpoint_LastWave);\n\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Spawnpoint_Railgun_Room_01);\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Spawnpoint_Railgun_Room_02);\n            ChangeFaction_Phase01();\n\n            foreach (var value in m_turrets1)\n            {\n                MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity(value), true);\n            }\n\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.Prefab_Door_LeftCommand1), true);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.Prefab_Door_LeftCommand2), true);\n        }\n\n        private void Railgun01SubmissionSuccess(MyMissionBase sender)\n        {\n            \n        }\n\n        private void Railgun02SubmissionLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Spawnpoint_Right_Assault_01);\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Spawnpoint_Right_Assault_02); // dead\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Spawnpoint_Right_Assault_03);\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Spawnpoint_Right_Assault_04); // dead\n            /*\n            MyEntityDetector friendsDetector = MyScriptWrapper.GetDetector(MyScriptWrapper.GetEntity((uint)EntityID.Detector_Friends));\n            friendsDetector.OnEntityEnter += FriendsToHangar;\n            friendsDetector.On();\n            */\n        }\n\n        private void Railgun02SubmissionSuccess(MyMissionBase sender)\n        {\n            /*\n            MyEntityDetector friendsDetector = MyScriptWrapper.GetDetector(MyScriptWrapper.GetEntity((uint)EntityID.Detector_Friends));\n            friendsDetector.OnEntityEnter -= FriendsToHangar;\n            friendsDetector.Off();\n            */\n        }\n\n        private void RightBaseGoToSubmissionLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Spawnpoint_Right_Assault_01);\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Spawnpoint_Right_Assault_02);\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Spawnpoint_Right_Upper);\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Spawnpoint_Right_Lower);\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Spawnpoint_Right_Command);\n        }\n\n        private void RightBaseGoToSubmissionSuccess(MyMissionBase sender)\n        {\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.Objective_Generator), false);\n        }\n\n        private void RightBaseGeneratorSubmissionLoaded(MyMissionBase sender)\n        {\n\n        }\n\n        private void RightBaseGeneratorSubmissionSuccess(MyMissionBase sender)\n        {\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.Prefab_Generator_ToDisable),false);\n\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.Prefab_Light_ToDisable_01),false);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.Prefab_Light_ToDisable_02),false);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.Prefab_Light_ToEnable_01),true);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.Prefab_Light_ToEnable_02),true);\n\n\n        }\n\n        private void RightBaseCommandSubmissionLoaded(MyMissionBase sender)\n        {\n            \n        }\n\n        private void RightBaseCommandSubmissionSuccess(MyMissionBase sender)\n        {\n            MyScriptWrapper.UnhideEntity(m_WWMS1_Moving, false);\n            MyScriptWrapper.UnhideEntity(m_WWMS2, false);\n            MyScriptWrapper.UnhideEntity(m_FoRMS, false);\n            ChangeFaction_Phase02();\n        }\n\n        private void WaitSubmissionLoaded(MyMissionBase sender)\n        {\n            m_flyFoRMS = true;\n            //m_flyWWMS1 = true;\n            //m_flyWWMS2 = true;\n            MyScriptWrapper.PrepareMotherShipForMove(MyScriptWrapper.GetEntity((uint)EntityID.Zeppelin_WW_1_Moving));\n            MyScriptWrapper.PrepareMotherShipForMove(MyScriptWrapper.GetEntity((uint)EntityID.Zeppelin_WW_2));\n            MyScriptWrapper.PrepareMotherShipForMove(MyScriptWrapper.GetEntity((uint)EntityID.Zeppelin_FoR_1));\n        }\n\n        private void WaitSubmissionSuccess(MyMissionBase sender)\n        {\n            \n        }\n\n        private void Mothership1SubmissionLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Spawnpoint_Zeppelin_FoR_01);\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Spawnpoint_Zeppelin_FoR_02);\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Spawnpoint_Zeppelin_WW1_01);\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Spawnpoint_Zeppelin_WW1_02);\n        }\n\n        private void Mothership1SubmissionSuccess(MyMissionBase sender)\n        {\n\n        }\n\n        private void Mothership1Submission2Loaded(MyMissionBase sender)\n        {\n            \n        }\n\n        private void Mothership1Submission2Success(MyMissionBase sender)\n        {\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.GetEntity((uint)EntityID.Objective_Zeppelin1_GeneratorWithoutBatteries), false);\n            MyScriptWrapper.UnhideEntity(MyScriptWrapper.GetEntity(\"Madelyn\"));\n            MyScriptWrapper.DeactivateSpawnPoint((uint)EntityID.Spawnpoint_Zeppelin_WW1_01);\n            MyScriptWrapper.DeactivateSpawnPoint((uint)EntityID.Spawnpoint_Zeppelin_WW1_02);\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Spawn_point_End_friends1);\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Spawn_point_End_friends2);\n        }\n\n        private void Mothership2SubmissionLoaded(MyMissionBase sender)\n        {\n\n        }\n\n        private void Mothership2SubmissionSuccess(MyMissionBase sender)\n        {\n            \n        }\n\n\n        #endregion\n\n\n        private void CommandReached(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if ((entity == m_hacker) || (MySession.IsPlayerShip(entity)))\n            {\n                ChangeToEnemy();\n            }\n        }\n\n        private void ChangeToEnemy()\n        {\n            MyScriptWrapper.SetFactionRelation(MyMwcObjectBuilder_FactionEnum.Rainiers, MyMwcObjectBuilder_FactionEnum.WhiteWolves, MyFactions.RELATION_WORST);\n\n            MyScriptWrapper.ChangeFaction(m_hacker, MyMwcObjectBuilder_FactionEnum.FourthReich);\n\n            if (MyScriptWrapper.IsMissionFinished(MyMissionID.TWIN_TOWERS_RANDEVOUZ))\n            {\n                m_commandDetector.Off();\n            }\n\n            //prefab_base_Left, prefab_base_Right, prefab_base_Bridge, prefab_base_Construction\n\n            MyScriptWrapper.SetAlarmMode((uint)EntityID.Prefab_Base_Left_01,true);\n            MyScriptWrapper.SetAlarmMode((uint)EntityID.Prefab_Base_Left_02, true);\n            MyScriptWrapper.SetAlarmMode((uint)EntityID.Prefab_Base_Left_03, true);\n            MyScriptWrapper.SetAlarmMode((uint)EntityID.Prefab_Base_Right_01, true);\n            MyScriptWrapper.SetAlarmMode((uint)EntityID.Prefab_Base_Right_02, true);\n            MyScriptWrapper.SetAlarmMode((uint)EntityID.Prefab_Base_Right_03, true);\n            MyScriptWrapper.SetAlarmMode((uint)EntityID.Prefab_Base_Bridge, true);\n            MyScriptWrapper.SetAlarmMode((uint)EntityID.Prefab_Base_Construction, true);\n        }\n\n        void SecurityDetectorReached(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            if (entity == m_hacker)\n            {\n                m_hackerSubmission.Suspend(true);\n                sender.Off();\n            }\n        }\n        \n        private void AssaultSubmissionWave01()\n        {\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Spawnpoint_Left_Assault_01);\n            var bot1 = MyScriptWrapper.TryGetEntity((uint)EntityID.Bot_Left_01_01); if (bot1 != null) bot1.MarkForClose();\n            var bot2 = MyScriptWrapper.TryGetEntity((uint)EntityID.Bot_Left_01_02); if (bot2 != null) bot2.MarkForClose();\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Spawnpoint_Left_Assault_02);\n            var bot3 = MyScriptWrapper.TryGetEntity((uint)EntityID.Bot_Left_02_01); if (bot3 != null) bot3.MarkForClose();\n            var bot4 = MyScriptWrapper.TryGetEntity((uint)EntityID.Bot_Left_02_02); if (bot4 != null) bot4.MarkForClose();\n            var bot5 = MyScriptWrapper.TryGetEntity((uint)EntityID.Bot_Left_02_03); if (bot5 != null) bot5.MarkForClose();\n        }\n\n        private void AssaultSubmissionWave02()\n        {\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Spawnpoint_Left_Assault_04);\n            var bot1 = MyScriptWrapper.TryGetEntity((uint)EntityID.Bot_Left_04_01); if (bot1 != null) bot1.MarkForClose();\n            var bot2 = MyScriptWrapper.TryGetEntity((uint)EntityID.Bot_Left_04_02); if (bot2 != null) bot2.MarkForClose();\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Spawnpoint_Left_Assault_05);\n            var bot3 = MyScriptWrapper.TryGetEntity((uint)EntityID.Bot_Left_05_01); if (bot3 != null) bot3.MarkForClose();\n            var bot4 = MyScriptWrapper.TryGetEntity((uint)EntityID.Bot_Left_05_02); if (bot4 != null) bot4.MarkForClose();\n            var bot5 = MyScriptWrapper.TryGetEntity((uint)EntityID.Bot_Left_05_03); if (bot5 != null) bot5.MarkForClose();\n        }\n\n        private void AssaultSubmissionWave03()\n        {\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Spawnpoint_Jammer);\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Spawnpoint_Jammer_Guards);\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Spawnpoint_Left_Assault_03);\n            //MyScriptWrapper.GetEntity((uint)EntityID.Bot_Left_03_01).Close();\n            //MyScriptWrapper.GetEntity((uint)EntityID.Bot_Left_03_02).Close();\n        }\n\n\n        private void ChangeFaction_Phase01()\n        {\n            MyScriptWrapper.ChangeFaction((uint)EntityID.Prefab_Base_Left_01,  MyMwcObjectBuilder_FactionEnum.FourthReich);\n            MyScriptWrapper.ChangeFaction((uint)EntityID.Prefab_Base_Left_02,  MyMwcObjectBuilder_FactionEnum.FourthReich);\n            MyScriptWrapper.ChangeFaction((uint)EntityID.Prefab_Base_Left_03,  MyMwcObjectBuilder_FactionEnum.FourthReich);\n        }\n\n        private void ChangeFaction_Phase02()\n        {\n            MyScriptWrapper.ChangeFaction((uint)EntityID.Prefab_Base_Right_01,  MyMwcObjectBuilder_FactionEnum.FourthReich);\n            MyScriptWrapper.ChangeFaction((uint)EntityID.Prefab_Base_Right_02,  MyMwcObjectBuilder_FactionEnum.FourthReich);\n            MyScriptWrapper.ChangeFaction((uint)EntityID.Prefab_Base_Right_03,  MyMwcObjectBuilder_FactionEnum.FourthReich);\n            MyScriptWrapper.ChangeFaction((uint)EntityID.Prefab_Base_Construction,  MyMwcObjectBuilder_FactionEnum.FourthReich);\n            MyScriptWrapper.ChangeFaction((uint)EntityID.Prefab_Base_Bridge,  MyMwcObjectBuilder_FactionEnum.FourthReich);\n        }\n\n        private void HideExplosives(MyEntity explosivesContainer)\n        {\n            //MyScriptWrapper.HideEntity(explosivesContainer);\n            MyScriptWrapper.RemoveEntityMark(explosivesContainer);\n            if (explosivesContainer.EntityId != null)\n            {\n                MyScriptWrapper.Highlight(explosivesContainer.EntityId.Value.NumericValue,true,this);\n            }\n        }\n\n        private bool PlaceExplosives(MyEntity explosivesContainer)\n        {\n            if (m_explosives > 0)\n            {\n                MyScriptWrapper.UnhideEntity(explosivesContainer);\n                if (explosivesContainer.EntityId != null)\n                {\n                    MyScriptWrapper.Highlight(explosivesContainer.EntityId.Value.NumericValue, false,this);\n                }\n                explosivesContainer.DisplayName = MyTexts.Explosives;\n                --m_explosives;\n                return true;\n            }\n            else\n            {\n                return false;\n            }\n        }\n\n        private void ExplodeExplosives()\n        {\n            MyScriptWrapper.DestroyEntities(new List<uint>()\n            {\n                (uint)EntityID.Explosives1,\n                (uint)EntityID.Explosives2,\n                (uint)EntityID.Explosives3,\n                (uint)EntityID.Explosives4,\n                (uint)EntityID.Prefab_Sabotage1_ToDestroy1,\n                (uint)EntityID.Prefab_Sabotage2_ToDestroy1,\n                (uint)EntityID.Prefab_Sabotage2_ToDestroy2,\n                (uint)EntityID.Prefab_Sabotage2_ToDestroy3,\n                (uint)EntityID.Prefab_Sabotage3_ToDestroy1,\n                (uint)EntityID.Prefab_Sabotage3_ToDestroy2,\n                (uint)EntityID.Prefab_Sabotage3_ToDestroy3,\n                (uint)EntityID.Prefab_Sabotage3_ToDestroy4,\n                (uint)EntityID.Prefab_Sabotage4_ToDestroy1,\n                (uint)EntityID.Prefab_Sabotage4_ToDestroy2,\n                (uint)EntityID.Prefab_Sabotage4_ToDestroy3,\n                (uint)EntityID.Prefab_Sabotage4_ToDestroy4,\n            });\n\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.Dummy_Sabotage1), true);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.Dummy_Sabotage3), true);\n            MyScriptWrapper.SetEntityEnabled(MyScriptWrapper.TryGetEntity((uint)EntityID.Dummy_Sabotage4), true);\n\n            MyScriptWrapper.UnhideEntity(MyScriptWrapper.TryGetEntity((uint)EntityID.Prefab_Rubble_01));\n            MyScriptWrapper.UnhideEntity(MyScriptWrapper.TryGetEntity((uint)EntityID.Prefab_Rubble_02));\n            MyScriptWrapper.UnhideEntity(MyScriptWrapper.TryGetEntity((uint)EntityID.Prefab_Rubble_03));\n            MyScriptWrapper.UnhideEntity(MyScriptWrapper.TryGetEntity((uint)EntityID.Prefab_Rubble_04));\n        }\n\n        bool MoveMotherShipForward(MyEntity entity, float speed, Vector3 destination)\n        {\n            Vector3 velocity = speed * entity.WorldMatrix.Forward; // Speed in direction\n            if (Vector3.DistanceSquared(destination, entity.GetPosition()) > 10 * 10)\n            {\n                entity.SetPosition(entity.GetPosition() + velocity * MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS); // recalculate position\n                return false;\n            }\n            return true;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/SinglePlayer/MyUraniteMineMission.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Managers.EntityManager.Entities.EntityDetector;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Managers.EntityManager.Entities;\nusing System.Diagnostics;\nusing Microsoft.Xna.Framework;\nusing MinerWars.AppCode.Game.Managers.EntityManager.Entities.WayPoints;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Inventory;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.Game.World.Global;\n\n\nnamespace MinerWars.AppCode.Game.Missions.SinglePlayer\n{\n    class MyUraniteMineMission : MyMission\n    {\n        private enum EntityID // list of IDs used in script\n        {\n            StartLocation = 31787,\n            Detector1 = 34770,\n            Detector2 = 34779,\n            Spawn1 = 34769,\n            Spawn2 = 34778,\n         \n\n        }\n\n        public override void ValidateIds() // checks if all IDs in enum are loaded correctly\n        {\n            foreach (var value in Enum.GetValues(typeof(EntityID)))\n            {\n                MyScriptWrapper.GetEntity((uint)((value as EntityID?).Value));\n            }\n        }\n\n        private MyEntityDetector m_Detector1;\n        private MyEntityDetector m_Detector2;\n\n        public MyUraniteMineMission()\n        {\n            ID = MyMissionID.URANITE_MINE; /* ID must be added to MyMissions.cs */\n            DebugName = new StringBuilder(\"Uranite mine\"); // Name of mission\n            Name = MyTextsWrapperEnum.URANITE_MINE;\n            Description = MyTextsWrapperEnum.URANITE_MINE_Description;\n            MyMwcVector3Int baseSector = new MyMwcVector3Int(-7271980, 0, 680473); // Story sector of the script - i.e. (-2465,0,6541)\n            RequiredMissions = new MyMissionID[] { };\n            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation); // Starting dummy point - must by typecasted to uint and referenced from EntityID enum\n            RequiredActors = new MyActorEnum[] { MyActorEnum.MADELYN };\n\n\n\n            m_objectives = new List<MyObjective>(); // Creating of list of submissions\n\n\n        }\n\n\n\n\n        public override void Load() // Code in that block will be called on the load of the sector\n        {\n            base.Load();\n            MyAudio.ApplyTransition(MyMusicTransitionEnum.HeavyFight, 3); // Sets music group to be played in the sector - no matter if the mission is running or not\n            MyScriptWrapper.SetPlayerFaction(MyMwcObjectBuilder_FactionEnum.Rainiers);\n            MyScriptWrapper.SetFactionRelation(MyMwcObjectBuilder_FactionEnum.Russian, MyMwcObjectBuilder_FactionEnum.China, -100);\n       \n\n          base.Load();\n\n             m_Detector1 = MyScriptWrapper.GetDetector(MyScriptWrapper.GetEntity((uint)EntityID.Detector1));\n            m_Detector1.OnEntityEnter += Detector1Action;\n            m_Detector1.On();\n\n            m_Detector2 = MyScriptWrapper.GetDetector(MyScriptWrapper.GetEntity((uint)EntityID.Detector2));\n            m_Detector2.OnEntityEnter += Detector2Action;\n            m_Detector2.On();\n\n        }\n\n         public override void Unload()\n        {\n            base.Unload();\n            if (m_Detector1 != null)\n            {\n                m_Detector1.OnEntityEnter -= Detector1Action;\n            }\n            if (m_Detector2 != null)\n            {\n                m_Detector2.OnEntityEnter -= Detector2Action;\n            }\n        }\n\n         public void Detector1Action(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n         {\n             if (entity == MySession.PlayerShip)\n             {\n                 MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Spawn1);\n                 m_Detector1.Off();\n             }\n         }\n\n         public void Detector2Action(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n         {\n             if (entity == MySession.PlayerShip)\n             {\n                 MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.Spawn2);\n                 m_Detector2.Off();\n             }\n         }\n\n        public override void Update() //Code in that block will be called in each frame\n        {\n            base.Update();\n\n        }                                                                                                                                                                                                                                                                                      \n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/SinglePlayer/MyWhiteWolvesResearchMission.cs",
    "content": "﻿#region Using\n\nusing System;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.HUD;\nusing MinerWars.AppCode.Game.Inventory;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Entities.Prefabs;\nusing MinerWars.AppCode.Game.Missions.Utils;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.Prefabs;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing System.Collections.Generic;\nusing System.Linq;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Audio;\nusing System.Diagnostics;\nusing MinerWars.AppCode.Game.Prefabs;\nusing MinerWars.AppCode.Game.Entities.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.AppCode.Game.Missions.Components;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.AppCode.Game.Audio.Dialogues;\nusing MinerWars.Resources;\nusing MinerWars.AppCode.Networking;\n\n#endregion\n\nnamespace MinerWars.AppCode.Game.Missions.SinglePlayer\n{\n    class MyWhiteWolvesResearchMission : MyMission\n    {\n        MyMwcVector3Int AcceptSector = new MyMwcVector3Int(-2325831, 0, -7186381);\n        MyMwcVector3Int BaseSector = new MyMwcVector3Int(-4081250, 0, -6815625);\n        private List<uint> m_particlesExplosion1 = new List<uint>() { 563933, 563935, 563934, 563932, 563927 };\n        private List<uint> m_particlesExplosion2 = new List<uint>() { 563928, 563930, 563929, 563931, 563919, 563936 };\n        private List<uint> m_particlesExplosion3 = new List<uint>() { 563903, 563937, 16777478, 16777479, 16777480, 16777481, 16777482, 16778169 };\n \n\n        private enum AcceptSectorEntityIDs\n        {\n            AcceptLocationInReichstag = 18967,\n        }\n\n        private enum EntityID\n        {\n            TargetUse01 = 562905,\n            Target02 = 562906,\n            TargetUse03 = 562907,\n            TargetUse04 = 562908,\n            TargetUse05 = 562909,\n            //06\n            Target06 = 16777477,\n            Door1 = 299653,\n            Door2 = 299656,\n            WayPoint1 = 299663,\n            WayPoint2 = 299572,\n            WayPoint3 = 299571,\n            WayPoint4 = 299683,\n            Target07 = 562911,\n            Target08 = 54512,\n            Target09 = 562912,\n\n            BlinkLight1 = 354880,\n            BlinkLight2 = 355701,\n            BlinkLight3 = 355423,\n            BlinkLight4 = 355420,\n            BlinkLight5 = 356318,\n\n            DetectorBeforeGetOut = 564178,\n            DetectorBeforeEnteringWarehouseAtHigh = 564182,\n            DetectorBeforeEnteringWarehouseAtLow = 564186,\n            DetectorBeforeEnteringBlueprintLocation = 564189,\n            DetectorBeforeEnteringMainConnectionRoom = 564191,\n            DetectorBeforeEnteringBioBrainsCircularRoom = 564193,\n            DetectorBeforeTakingBrainSample = 564195,\n            DetectroBeforeEnteringLowerPartOfBiomachine = 564198,\n            DetectorBeforeEnteringHigherPartOfBiomachine = 564201,\n\n            SpawnpointAtGettingOut1 = 564180,\n            SpawnpointAtGettingOut2 = 564181,\n            SpawnpointAtGettingOut3 = 564243,\n            SpawnpointAtGettingOut4 = 564242,\n            SpawnpointAtWarehouse1 = 564184,\n            SpawnpointAtWarehouse2 = 564185,\n            SpawnpointUponWarehouse = 564188,\n            SpawnpointAtBlueprintLocation = 361629,\n            SpawnpointAtConnectionRoom1 = 361627,\n            SpawnpointAtConnectionRoom2 = 564245,\n            SpawnpointAtBrainsConnection = 361628,\n            SpawnpointAtBrains = 564197,\n            SpawnpointAtLowerPartOfBiomach = 564200,\n            SpawnpointAtHigherPartOfBiomach1 = 564203,\n            SpawnpointAtHigherPartOfBiomach2 = 564244,\n            SpawnpointAtVeryStart1 = 354972,\n            SpawnpointAtVeryStart2 = 564204,\n            SpawnpointAtVeryStart3 = 564232,\n            \n        }\n\n        public override void ValidateIds() // checks if all IDs in enum are loaded correctly\n        {\n            if (!IsMainSector) return;\n            foreach (var value in Enum.GetValues(typeof(EntityID)))\n            {\n                MyScriptWrapper.GetEntity((uint)((value as EntityID?).Value));\n            }\n\n            var list = new List<uint>();\n            list.AddRange(m_particlesExplosion1);\n            list.AddRange(m_particlesExplosion2);\n            list.AddRange(m_particlesExplosion3);\n\n            foreach (var value in list)\n            {\n                MyScriptWrapper.GetEntity(value);\n            }\n\n\n        }\n\n        public MyWhiteWolvesResearchMission()\n        {\n            ID = MyMissionID.NAZI_BIO_LAB; /* ID must be added to MyMissions.cs */\n            DebugName = new StringBuilder(\"18b-White Wolves bio research lab\");\n            Name = MyTextsWrapperEnum.NAZI_BIO_LAB;\n            Description = MyTextsWrapperEnum.NAZI_BIO_LAB_Description;\n            Flags = MyMissionFlags.Story;\n            AchievementName = MySteamAchievementNames.Mission26_BioResearch;\n\n            /* sector where the mission is located */\n            Location = new MyMissionLocation(BaseSector, (uint)EntityID.TargetUse01); // Posledne cislo - ID dummy pointu kde prijimam misiu (v tomto pripade tiez 'player start')\n\n            RequiredMissions = new MyMissionID[] { MyMissionID.REICHSTAG_A };\n            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.NAZI_BIO_LAB_REACH_MEETING_POINT };\n            RequiredActors = new MyActorEnum[] { MyActorEnum.TARJA, MyActorEnum.VALENTIN, MyActorEnum.MADELYN };\n\n\n            m_objectives = new List<MyObjective>();\n\n            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeGetOut, 0, (uint)EntityID.SpawnpointAtGettingOut1));\n            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeGetOut, 0, (uint)EntityID.SpawnpointAtGettingOut2));\n            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeGetOut, 0, (uint)EntityID.SpawnpointAtGettingOut3));\n            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeGetOut, 0, (uint)EntityID.SpawnpointAtGettingOut4));\n            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeEnteringWarehouseAtHigh, 0, (uint)EntityID.SpawnpointAtWarehouse1));\n            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeEnteringWarehouseAtHigh, 0, (uint)EntityID.SpawnpointAtWarehouse2));\n            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeEnteringWarehouseAtLow, 0, (uint)EntityID.SpawnpointUponWarehouse));\n            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeEnteringBlueprintLocation, 0, (uint)EntityID.SpawnpointAtBlueprintLocation));\n            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeEnteringMainConnectionRoom, 0, (uint)EntityID.SpawnpointAtConnectionRoom1));\n            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeEnteringMainConnectionRoom, 0, (uint)EntityID.SpawnpointAtConnectionRoom2));\n            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeEnteringBioBrainsCircularRoom, 0, (uint)EntityID.SpawnpointAtBrainsConnection));\n            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeTakingBrainSample, 0, (uint)EntityID.SpawnpointAtBrains));\n            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectroBeforeEnteringLowerPartOfBiomachine, 0, (uint)EntityID.SpawnpointAtLowerPartOfBiomach));\n            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeEnteringHigherPartOfBiomachine, 0, (uint)EntityID.SpawnpointAtHigherPartOfBiomach1));\n            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeEnteringHigherPartOfBiomachine, 0, (uint)EntityID.SpawnpointAtHigherPartOfBiomach2));\n\n            var m_01GetBiomachSamples1 = new MyUseObjective(\n                (MyTextsWrapperEnum.NAZI_BIO_LAB_SAMPLES_BIOMACH_1_Name),\n                MyMissionID.NAZI_BIO_LAB_SAMPLES_BIOMACH_1,\n                (MyTextsWrapperEnum.NAZI_BIO_LAB_SAMPLES_BIOMACH_1_Description),\n                null,\n                this,\n                new MyMissionID[] {},\n                new MyMissionLocation(BaseSector, (uint)EntityID.TargetUse01),\n                MyTextsWrapperEnum.PressToPickSamples,\n                MyTextsWrapperEnum.Samples,\n                MyTextsWrapperEnum.PickingInProgress,\n                3000, \n                MyUseObjectiveType.Hacking,\n                MyDialogueEnum.WHITEWOLVES_RESEARCH_0200_ENTER\n               ) { SaveOnSuccess = true };\n            // destroySolarDefence.OnMissionSuccess += ToHangarSubmissionSuccess;\n            m_objectives.Add(m_01GetBiomachSamples1);\n            m_01GetBiomachSamples1.OnMissionLoaded += new MissionHandler(m_01GetBiomachSamples1_OnMissionLoaded);\n            m_01GetBiomachSamples1.OnSuccessDialogueStarted += new MissionHandler(m_01GetBiomachSamples1_OnSuccessDialogueStarted);\n\n            var m_02GetInsideBiomach = new MyObjective(\n                (MyTextsWrapperEnum.NAZI_BIO_LAB_GET_INSIDE_Name),\n                MyMissionID.NAZI_BIO_LAB_GET_INSIDE,\n                (MyTextsWrapperEnum.NAZI_BIO_LAB_GET_INSIDE_Description),\n                null,\n                this,\n                new MyMissionID[] {MyMissionID.NAZI_BIO_LAB_SAMPLES_BIOMACH_1},\n                new MyMissionLocation(BaseSector, (uint) EntityID.Target02)\n                ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudStation };\n            // destroySolarDefence.OnMissionSuccess += ToHangarSubmissionSuccess;\n            m_objectives.Add(m_02GetInsideBiomach);\n                            \n\n            var m_04GetOrganicSamples = new MyUseObjective(\n                (MyTextsWrapperEnum.NAZI_BIO_LAB_SAMPLES_ORGANIC_Name),\n                MyMissionID.NAZI_BIO_LAB_SAMPLES_ORGANIC,\n                (MyTextsWrapperEnum.NAZI_BIO_LAB_SAMPLES_ORGANIC_Description),\n                null,\n                this,\n                new MyMissionID[] { MyMissionID.NAZI_BIO_LAB_GET_INSIDE },\n                new MyMissionLocation(BaseSector, (uint) EntityID.TargetUse04),\n                MyTextsWrapperEnum.PressToPickSamples,\n                MyTextsWrapperEnum.Samples,\n                MyTextsWrapperEnum.PickingInProgress,\n                3000,\n                MyUseObjectiveType.Hacking,\n                MyDialogueEnum.WHITEWOLVES_RESEARCH_0300_COLLECT2\n                ) { SaveOnSuccess = true };\n            // destroySolarDefence.OnMissionSuccess += ToHangarSubmissionSuccess;\n            m_04GetOrganicSamples.OnMissionLoaded += new MissionHandler(m_04GetOrganicSamples_OnMissionLoaded);\n            m_04GetOrganicSamples.OnSuccessDialogueStarted += new MissionHandler(m_04GetOrganicSamples_OnSuccessDialogueStarted);\n            m_objectives.Add(m_04GetOrganicSamples);\n\n            var m_05GetBiomachBlueprints = new MyUseObjective(\n                (MyTextsWrapperEnum.NAZI_BIO_LAB_BLUEPRINTS_BIOMACH_Name),\n                MyMissionID.NAZI_BIO_LAB_BLUEPRINTS_BIOMACH,\n                (MyTextsWrapperEnum.NAZI_BIO_LAB_BLUEPRINTS_BIOMACH_Description),\n                null,\n                this,\n                new MyMissionID[] {MyMissionID.NAZI_BIO_LAB_SAMPLES_ORGANIC},\n                new MyMissionLocation(BaseSector, (uint) EntityID.TargetUse05),\n                MyTextsWrapperEnum.PressToDownloadBluePrints,\n                MyTextsWrapperEnum.DataTransfer,\n                MyTextsWrapperEnum.DownloadingData, \n                3000\n                ) { SaveOnSuccess = true };\n            // destroySolarDefence.OnMissionSuccess += ToHangarSubmissionSuccess;\n            m_objectives.Add(m_05GetBiomachBlueprints);\n            m_05GetBiomachBlueprints.OnMissionLoaded += new MissionHandler(m_05GetBiomachBlueprints_OnMissionLoaded);\n            m_05GetBiomachBlueprints.OnSuccessDialogueStarted += new MissionHandler(m_05GetBiomachBlueprints_OnSuccessDialogueStarted);\n\n            var m_07GetOut = new MyObjective(\n            (MyTextsWrapperEnum.NAZI_BIO_LAB_GET_OUT_Name),\n            MyMissionID.NAZI_BIO_LAB_GET_OUT,\n            (MyTextsWrapperEnum.NAZI_BIO_LAB_GET_OUT_Description),\n            null,\n            this,\n            new MyMissionID[] { MyMissionID.NAZI_BIO_LAB_BLUEPRINTS_BIOMACH },\n            new MyMissionLocation(BaseSector, (uint)EntityID.Target07)\n        ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.Nothing };\n            // destroySolarDefence.OnMissionSuccess += ToHangarSubmissionSuccess;\n            m_07GetOut.OnMissionLoaded += new MissionHandler(m_07GetOut_OnMissionLoaded);\n            m_objectives.Add(m_07GetOut);\n\n\n            var m_08Destroy = new MyObjectiveDestroy(\n                (MyTextsWrapperEnum.NAZI_BIO_LAB_DESTROY_Name),\n                MyMissionID.NAZI_BIO_LAB_DESTROY,\n                (MyTextsWrapperEnum.NAZI_BIO_LAB_DESTROY_Description),\n                null,\n                this,\n                new MyMissionID[] {MyMissionID.NAZI_BIO_LAB_GET_OUT,},\n                new List<uint>() {(uint) EntityID.Target08},\n                null,\n                true,\n                false\n                ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.Nothing };\n\n            m_objectives.Add(m_08Destroy);\n            m_08Destroy.OnMissionLoaded += M08DestroyOnMissionLoaded;\n            m_08Destroy.OnMissionSuccess += M08DestroyOnMissionSuccess;\n\n            var returnToMothership = new MyObjective(\n               (MyTextsWrapperEnum.NAZI_BIO_LAB_REACH_MEETING_POINT_Name),\n               MyMissionID.NAZI_BIO_LAB_REACH_MEETING_POINT,\n               (MyTextsWrapperEnum.NAZI_BIO_LAB_REACH_MEETING_POINT_Description),\n               null,\n               this,\n               new MyMissionID[] { MyMissionID.NAZI_BIO_LAB_DESTROY },\n                //new MyMissionLocation(baseSector, (uint)EntityID.HangerEscapeLocation)\n               new MyMissionLocation(BaseSector, MyMissionLocation.MADELYN_HANGAR),\n               radiusOverride: MyMissionLocation.MADELYN_HANGAR_RADIUS\n           ) { HudName = MyTextsWrapperEnum.HudMadelynsSapho };\n            returnToMothership.OnMissionLoaded += new MissionHandler(returnToMothership_OnMissionLoaded);\n            m_objectives.Add(returnToMothership);\n\n        }\n\n        void returnToMothership_OnMissionLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.PlayDialogue(MyDialogueEnum.WHITEWOLVES_RESEARCH_0700_RETURN);\n        }\n\n        void m_01GetBiomachSamples1_OnMissionLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnpointAtVeryStart1);\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnpointAtVeryStart2);\n            MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnpointAtVeryStart3);\n\n            MyScriptWrapper.Highlight((uint)EntityID.BlinkLight1, true, this);\n\n            MyScriptWrapper.PlayDialogue(MyDialogueEnum.WHITEWOLVES_RESEARCH_0100_COLLECT);\n        }\n\n        void m_01GetBiomachSamples1_OnSuccessDialogueStarted(MyMissionBase sender)\n        {\n            MyScriptWrapper.Highlight((uint)EntityID.BlinkLight1, false, this);\n        }\n\n       \n        void m_04GetOrganicSamples_OnMissionLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.Highlight((uint)EntityID.BlinkLight3, true, this);\n            MyScriptWrapper.Highlight((uint)EntityID.BlinkLight4, true, this);\n\n            SickensDialog();\n            //MissionTimer.RegisterTimerAction(3000, SickensDialog, false);\n        }\n\n\n        void m_04GetOrganicSamples_OnSuccessDialogueStarted(MyMissionBase sender)\n        {\n            MyScriptWrapper.Highlight((uint)EntityID.BlinkLight3, false, this);\n            MyScriptWrapper.Highlight((uint)EntityID.BlinkLight4, false, this);\n        }\n\n\n        void m_05GetBiomachBlueprints_OnMissionLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.Highlight((uint)EntityID.BlinkLight5, true, this);\n            MyScriptWrapper.PlayDialogue(MyDialogueEnum.WHITEWOLVES_RESEARCH_0400_FIND);\n        }\n\n\n        void m_05GetBiomachBlueprints_OnSuccessDialogueStarted(MyMissionBase sender)\n        {\n            MyScriptWrapper.Highlight((uint)EntityID.BlinkLight5, false, this);\n        }\n\n\n        void m_07GetOut_OnMissionLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.PlayDialogue(MyDialogueEnum.WHITEWOLVES_RESEARCH_0500_GET_OUT);\n        }\n\n        void M08DestroyOnMissionLoaded(MyMissionBase sender)\n        {\n            MyScriptWrapper.Highlight((uint)EntityID.Target08, true, this);\n\n            MyScriptWrapper.PlayDialogue(MyDialogueEnum.WHITEWOLVES_RESEARCH_0550_GET_OUT_SUCCESS);\n        }\n\n        private void M08DestroyOnMissionSuccess(MyMissionBase sender)\n        {\n            MyScriptWrapper.PlayDialogue(MyDialogueEnum.WHITEWOLVES_RESEARCH_0600_DESTROY);\n            Boom1();\n            MissionTimer.RegisterTimerAction(250, Boom1Hide, false);\n            MissionTimer.RegisterTimerAction(1000, Boom2, false);\n            MissionTimer.RegisterTimerAction(1250, Boom2Hide, false);\n            MissionTimer.RegisterTimerAction(2020, Boom3, false);\n            MissionTimer.RegisterTimerAction(2450, Boom3Hide, false);\n        }\n\n\n    \n       \n        void SickensDialog()\n        {\n            MyScriptWrapper.PlayDialogue(MyDialogueEnum.WHITEWOLVES_RESEARCH_0350_SICKEN);\n        }\n\n     \n\n        private void Boom1()\n        {\n            //EnableEntities(m_particlesExplosion1);\n            //MyScriptWrapper.PlaySound3D(MyScriptWrapper.GetEntity(m_particlesExplosion1[0]), MySoundCuesEnum.SfxShipLargeExplosion);\n            MyScriptWrapper.AddExplosions(m_particlesExplosion1, Explosions.MyExplosionTypeEnum.LARGE_SHIP_EXPLOSION, 1000000);\n            Debug.WriteLine(\"BOOM1 \" + MissionTimer.ElapsedTime);\n        }\n\n        private void Boom1Hide()\n        {\n           // TryHideEntities(m_prefabsExplosion1);\n            \n        }\n        private void Boom2()\n        {\n            //EnableEntities(m_particlesExplosion2);\n            //MyScriptWrapper.PlaySound3D(MyScriptWrapper.GetEntity(m_particlesExplosion2[0]), MySoundCuesEnum.SfxShipLargeExplosion);\n            MyScriptWrapper.AddExplosions(m_particlesExplosion2, Explosions.MyExplosionTypeEnum.LARGE_SHIP_EXPLOSION, 1000000);\n            Debug.WriteLine(\"BOOM2 \" + MissionTimer.ElapsedTime);\n        }\n\n        private void Boom2Hide()\n        {\n            //TryHideEntities(m_prefabsExplosion2);\n        }\n        \n        private void Boom3()\n        {\n            //MyScriptWrapper.DestroyEntities(m_prefabsExplosion3);\n            //EnableEntities(m_particlesExplosion3);\n            //DisableEntities(m_particlesClose);\n            //MyScriptWrapper.PlaySound3D(MyScriptWrapper.GetEntity(m_particlesExplosion3[0]), MySoundCuesEnum.SfxShipLargeExplosion);\n            MyScriptWrapper.AddExplosions(m_particlesExplosion3, Explosions.MyExplosionTypeEnum.LARGE_SHIP_EXPLOSION, 100000);\n            Debug.WriteLine(\"BOOM3 \" + MissionTimer.ElapsedTime);\n        }\n\n        private void Boom3Hide()\n        {\n            //TryHideEntities(m_prefabsExplosion3);\n\n        }\n\n        public override void Load()\n        {\n            if (!IsMainSector) return;\n\n            base.Load();\n\n            // Change player faction to Rainiers and set relations between them\n            MyScriptWrapper.SetPlayerFaction(MyMwcObjectBuilder_FactionEnum.Rainiers);\n            MyScriptWrapper.SetFactionRelation(MyMwcObjectBuilder_FactionEnum.Rainiers, MyMwcObjectBuilder_FactionEnum.WhiteWolves, MyFactions.RELATION_WORST);\n            MyScriptWrapper.FixBotNames();\n\n            // Set musicmood right from script start\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.Horror);\n\n            //TODO: this should be set in editor\n            foreach (uint id in m_particlesExplosion1)\n            {\n                MyDummyPoint dummy = MyScriptWrapper.TryGetEntity(id) as MyDummyPoint;\n                if (dummy != null)\n                {\n                    dummy.DummyFlags |= MyDummyPointFlags.SURIVE_PREFAB_DESTRUCTION;\n                }\n            }\n            foreach (uint id in m_particlesExplosion2)\n            {\n                MyDummyPoint dummy = MyScriptWrapper.TryGetEntity(id) as MyDummyPoint;\n                if (dummy != null)\n                {\n                    dummy.DummyFlags |= MyDummyPointFlags.SURIVE_PREFAB_DESTRUCTION;\n                }\n            }\n            foreach (uint id in m_particlesExplosion3)\n            {\n                MyDummyPoint dummy = MyScriptWrapper.TryGetEntity(id) as MyDummyPoint;\n                if (dummy != null)\n                {\n                    dummy.DummyFlags |= MyDummyPointFlags.SURIVE_PREFAB_DESTRUCTION;\n                }\n            }\n        }\n\n        public override void Unload()\n        {\n            if (!IsMainSector) return;\n            base.Unload();\n        }\n\n        protected static void TryHideEntities(List<uint> toHide)\n        {\n            foreach (var u in toHide)\n            {\n                MyScriptWrapper.TryHide(u);\n            }\n        }\n\n        protected static void UnHideEntities(List<uint> toHide)\n        {\n            foreach (var u in toHide)\n            {\n                MyScriptWrapper.TryUnhide(u);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/SinglePlayer/MyZombieLevelMission.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Entities;\nusing System.Diagnostics;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Entities.WayPoints;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Inventory;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.Game.World.Global;\n\n\nnamespace MinerWars.AppCode.Game.Missions.SinglePlayer\n{\n    class MyZombieLevelMission : MyMissionSandboxBase\n    {\n        private enum EntityID // list of IDs used in script\n        {\n            StartLocation = 993,\n         \n        }\n\n        public override void ValidateIds() // checks if all IDs in enum are loaded correctly\n        {\n            foreach (var value in Enum.GetValues(typeof(EntityID)))\n            {\n                MyScriptWrapper.GetEntity((uint)((value as EntityID?).Value));\n            }\n        }\n\n\n\n        public MyZombieLevelMission()\n        {\n            ID = MyMissionID.ZOMBIE_LEVEL; /* ID must be added to MyMissions.cs */\n            DebugName = new StringBuilder(\"Zombie Level\"); // Name of mission\n            Name = MyTextsWrapperEnum.ZOMBIE_LEVEL;\n            Description = MyTextsWrapperEnum.ZOMBIE_LEVEL_Description;\n            MyMwcVector3Int baseSector = new MyMwcVector3Int(-5758996, 0, -8078063); // Story sector of the script - i.e. (-2465,0,6541)\n            RequiredMissions = new MyMissionID[] { };\n            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation); // Starting dummy point - must by typecasted to uint and referenced from EntityID enum\n            RequiredActors = new MyActorEnum[] { MyActorEnum.MADELYN };\n           \n\n            m_objectives = new List<MyObjective>(); // Creating of list of submissions\n\n\n        }\n\n\n\n\n        public override void Load() // Code in that block will be called on the load of the sector\n        {\n            base.Load();\n            MyScriptWrapper.ApplyTransition(MyMusicTransitionEnum.Horror, 3); // Sets music group to be played in the sector - no matter if the mission is running or not\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/Submissions/MyHarvestOreSubmission.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Inventory;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.Audio.Dialogues;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\n\nnamespace MinerWars.AppCode.Game.Missions.Submissions\n{\n    class MyHarvestOreSubmission : MyObjective\n    {\n        bool m_oreObtained = false;\n        float m_amount = 100;\n        MyMwcObjectBuilder_Ore_TypesEnum m_ore;\n\n        public MyHarvestOreSubmission(MyTextsWrapperEnum name, MyMissionID id, MyTextsWrapperEnum description, MyTexture2D icon, MyMission parentMission, MyMissionID[] requiredMissions, MyMissionLocation location, MyMwcObjectBuilder_Ore_TypesEnum ore, float amount, MyDialogueEnum successDialogId)\n            : base(name, id, description, icon, parentMission, requiredMissions, null, successDialogId: successDialogId)\n        {\n            Location = location;\n            m_amount = amount;\n            m_ore = ore;\n        }\n\n        public override void Load()\n        {\n            base.Load();\n\n            CheckOre();\n\n            MyScriptWrapper.EntityInventoryItemAmountChanged += EntityInventoryItemAmountChanged;\n        }\n\n        public override void Unload()\n        {\n            base.Unload();\n            MyScriptWrapper.EntityInventoryItemAmountChanged -= EntityInventoryItemAmountChanged;\n        }\n\n\n        public override bool IsSuccess()\n        {\n            return m_oreObtained;\n        }\n\n        public override void Success()\n        {\n            base.Success();\n        }\n\n        void EntityInventoryItemAmountChanged(MyEntity entity, MyInventory inventory, MyInventoryItem item, float number)\n        {\n            if (MyScriptWrapper.IsPlayerShip(entity))\n            {\n                CheckOre();\n            }\n        }\n\n        private void CheckOre()\n        {\n            m_oreObtained = MyScriptWrapper.GetInventoryItemAmount(MyScriptWrapper.GetPlayerInventory(), MyMwcObjectBuilderTypeEnum.Ore, (int)m_ore) > m_amount;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/Submissions/MySabotageSubmission.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing System.Diagnostics;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.HUD;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Utils;\n\nnamespace MinerWars.AppCode.Game.Missions.SinglePlayer\n{\n    class MySabotageSubmission : MyObjective\n    {\n        private MyTextsWrapperEnum m_notificationText;\n        private MyHudNotification.MyNotification m_notification;\n        private bool m_isNearLocation;\n        public MySabotageSubmission(\n            StringBuilder name,\n            MyMissionID id,\n            StringBuilder description,\n            MyTexture2D icon,\n            MyMission parentMission,\n            MyMissionID[] requiredMissions,\n            MyMissionLocation location)\n            : this(name, id, description, icon, parentMission, requiredMissions, location, MyTextsWrapperEnum.NotificationSabotageSubmission)\n        {\n        \n        }\n\n        public MySabotageSubmission(\n            StringBuilder name, \n            MyMissionID id, \n            StringBuilder description, \n            MyTexture2D icon, \n            MyMission parentMission, \n            MyMissionID[] requiredMissions, \n            MyMissionLocation location, \n            MyTextsWrapperEnum notificationText)\n            : base(name, id, description, icon, parentMission, requiredMissions, location, null)\n        {\n            m_notificationText = notificationText;\n        }\n\n        public override void Load()\n        {\n            base.Load();\n\n            m_notification = new MyHudNotification.MyNotification(m_notificationText, MyHudNotification.DONT_DISAPEAR, null, new object[] { \"\" });\n            //MyHudNotification.AddNotification(m_countdownNotification);\n\n            MyScriptWrapper.OnUseKeyPress += OnUseKeyPress;\n        }\n\n        public override void Unload()\n        {\n            base.Unload();\n\n            if (m_notification != null)\n            {\n                m_notification.Disappear();\n                m_notification = null;\n            }\n            \n            MyScriptWrapper.OnUseKeyPress -= OnUseKeyPress;\n        }\n\n        public override bool IsSuccess()\n        {\n            m_isNearLocation = base.IsSuccess();\n\n            if (m_isNearLocation)\n            {\n                m_notification.SetTextFormatArguments(new object[] { MyGuiManager.GetInput().GetGameControlTextEnum(MyGameControlEnums.USE) });\n                m_notification.Appear();\n                MyHudNotification.AddNotification(m_notification);\n            }\n            else\n            {\n                m_notification.Disappear();\n            }\n\n            return false;\n        }\n\n        \n        void OnUseKeyPress()\n        {\n            if (m_isNearLocation)\n            {\n                Success();\n            }\n        }\n    }\n\n\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/Submissions/MySubmissionGotoAny.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing System.Diagnostics;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.Entities;\n\nnamespace MinerWars.AppCode.Game.Missions.Submissions\n{\n    class MySubmissionFlyToAny : MyObjective\n    {\n        readonly List<MyMissionLocation> m_locations;\n\n        public MySubmissionFlyToAny(StringBuilder Name, MyMissionID ID, StringBuilder Description, MyTexture2D Icon, MyMission ParentMission, MyMissionID[] RequiredMissions, List<MyMissionLocation> Locations, List<uint> MissionEntityIDs = null, Audio.Dialogues.MyDialogueEnum? successDialogId = null)\n            : base(Name, ID, Description, Icon, ParentMission, RequiredMissions, null, MissionEntityIDs, successDialogId)\n        {\n            m_locations = Locations;\n        }\n\n        [Conditional(\"DEBUG\")]\n        private void TestLocations()\n        {\n            foreach (var loc in m_locations)\n            {\n                Debug.Assert(loc != null && loc.Entity != null, \"All locations must be valid!\");\n            }\n        }\n\n        private bool TestLocation(MyMissionLocation location)\n        {\n            var boundingSphere = MySession.PlayerShip.WorldVolume;\n            return MyGuiScreenGamePlay.Static.IsCurrentSector(location.Sector) && location.Entity.GetIntersectionWithSphere(ref boundingSphere);\n        }\n\n        public override void Unload()\n        {\n            base.Unload();\n\n            SetLocationVisibility(false);\n        }\n\n        public override void Load()\n        {\n            base.Load();\n\n            foreach (var loc in m_locations)\n            {\n                loc.Entity = MyEntities.GetEntityByMissionLocationIdentifier(loc.LocationEntityIdentifier) as MyDummyPoint;\n                Debug.Assert(loc.Entity != null, \"Cannot find location dummypoint, IDENTIFIER: \" + loc.LocationEntityIdentifier.ToString());                \n\n                if (!MissionEntityIDs.Contains(loc.Entity.EntityId.Value.NumericValue))\n                {\n                    MissionEntityIDs.Add(loc.Entity.EntityId.Value.NumericValue);\n                }\n            }\n        }\n\n        public override bool IsSuccess()\n        {\n            SetLocationVisibility(true);\n            foreach (var loc in m_locations)\n            {\n                if (TestLocation(loc))\n                {\n                    return true;\n                }\n            }\n            return false;\n        }\n\n        public override void SetLocationVisibility(bool visible)\n        {\n            foreach (var loc in m_locations)\n            {\n                SetLocationVisibility(visible, loc.Entity, GuiTargetMode);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/Utils/MyCountdownTimer.cs",
    "content": "﻿using System;\nusing System.Diagnostics;\n\nnamespace MinerWars.AppCode.Game.Missions.Utils\n{\n    /// <summary>\n    /// Class for controlling countdown timers in missions.\n    /// </summary>\n    class MyCountdownTimer\n    {\n        readonly MyMissionTimer m_timer = new MyMissionTimer();\n\n        TimeSpan m_countdownDuration;\n        MyTimerActionDelegate m_actionAfterCountdown;\n\n        public void Start(TimeSpan countdownDuration, MyTimerActionDelegate actionAfterCountdown)\n        {\n            Debug.Assert(!m_timer.Started);\n\n            m_timer.Reset();\n            m_timer.Start();\n\n            m_countdownDuration = countdownDuration;\n            m_actionAfterCountdown = actionAfterCountdown;\n\n            m_timer.RegisterTimerAction((int)countdownDuration.TotalMilliseconds, CountdownEnded);\n        }\n\n        public TimeSpan GetRemainingTime()\n        {\n            return m_countdownDuration - m_timer.GetElapsedTime();\n        }\n\n        private void CountdownEnded()\n        {\n            m_actionAfterCountdown.Invoke();\n            m_timer.End();\n        }\n\n        public void Update()\n        {\n            m_timer.Update();\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/Utils/MyEntityAnimator.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Entities;\n\nnamespace MinerWars.AppCode.Game.Missions.Utils\n{\n    class MyEntityAnimator\n    {\n        public class MyKey\n        {\n            public float Time { get; set; }\n            public Vector3 Position { get; set; }\n            public Quaternion Rotation { get; set; }\n        }\n\n        public List<MyKey> Keys { get; set; }\n\n        private float m_time;\n\n        public MyEntityAnimator()\n        {\n            Keys = new List<MyKey>();\n        }\n\n        private int CompareKeysByTime(MyKey a, MyKey b)\n        {\n            return a.Time.CompareTo(b.Time);\n        }\n\n        private void GetValues(float time, out Vector3 position, out Quaternion rotation)\n        {\n            int index = -1;\n            foreach (var key in Keys)\n            {\n                if (key.Time < time)\n                {\n                    ++index;\n                }\n                else\n                {\n                    break;\n                }\n            }\n\n            MyKey key0 = Keys[(int)MathHelper.Clamp(index - 1, 0, Keys.Count - 1)];\n            MyKey key1 = Keys[(int)MathHelper.Clamp(index, 0, Keys.Count - 1)];\n            MyKey key2 = Keys[(int)MathHelper.Clamp(index + 1, 0, Keys.Count - 1)];\n            MyKey key3 = Keys[(int)MathHelper.Clamp(index + 2, 0, Keys.Count - 1)];\n\n            float deltaTime = key2.Time - key1.Time;\n            float amount = deltaTime > 0 ? (time - key1.Time) / deltaTime : 1;\n\n            position = new Vector3(\n                MathHelper.CatmullRom(key0.Position.X, key1.Position.X, key2.Position.X, key3.Position.X, amount),\n                MathHelper.CatmullRom(key0.Position.Y, key1.Position.Y, key2.Position.Y, key3.Position.Y, amount),\n                MathHelper.CatmullRom(key0.Position.Z, key1.Position.Z, key2.Position.Z, key3.Position.Z, amount));\n\n            rotation = Quaternion.Slerp(key1.Rotation, key2.Rotation, amount);\n        }\n\n        public void AddKey(float time, Vector3 position, Quaternion rotation)\n        {\n            Keys.Add(new MyKey\n            {\n                Time = time,\n                Position = position,\n                Rotation = rotation\n            });\n            Keys.Sort(CompareKeysByTime);\n        }\n\n        public void UpdateEntity(MyEntity entity)\n        {\n            Vector3 position;\n            Quaternion rotation;\n            GetValues(m_time, out position, out rotation);\n            entity.MoveAndRotate(position, Matrix.CreateFromQuaternion(rotation));\n        }\n\n        public void UpdateTangent(MyEntity entity, Vector3 up)\n        {\n            Vector3 position0, position1;\n            Quaternion rotation0, rotation1;\n\n            GetValues(m_time - 0.05f, out position0, out rotation0);\n            GetValues(m_time + 0.05f, out position1, out rotation1);\n\n            Vector3 forward = position1 - position0;\n            if (!MyUtils.IsValid(forward))\n            {\n                forward = entity.WorldMatrix.Forward;\n            }\n\n            entity.MoveAndRotate((position0 + position1) / 2, Matrix.CreateWorld(Vector3.Zero, forward, up));\n        }\n\n        public float GetAnimationLength()\n        {\n            return Keys.Count > 0 ? Keys[Keys.Count - 1].Time : 0;\n        }\n\n        public void JumpToTime(float time)\n        {\n            m_time = time;\n        }\n\n        public void Update()\n        {\n            m_time += MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS;\n        }\n\n        public void DebugDraw()\n        {\n            Vector3? prePosition = null;\n            for (int i = 0; i < Keys.Count - 1; i++)\n            {\n                MyKey key0 = Keys[(int)MathHelper.Clamp(i - 1, 0, Keys.Count - 1)];\n                MyKey key1 = Keys[(int)MathHelper.Clamp(i, 0, Keys.Count - 1)];\n                MyKey key2 = Keys[(int)MathHelper.Clamp(i + 1, 0, Keys.Count - 1)];\n                MyKey key3 = Keys[(int)MathHelper.Clamp(i + 2, 0, Keys.Count - 1)];\n\n                MyDebugDraw.DrawAxis(Matrix.CreateTranslation(key1.Position), 10, 1);\n\n                int steps = 50;\n                for (int j = 0; j < steps; j++)\n                {\n                    float amount = 1.0f * j / steps;\n\n                    Vector3 position = new Vector3(\n                        MathHelper.CatmullRom(key0.Position.X, key1.Position.X, key2.Position.X, key3.Position.X, amount),\n                        MathHelper.CatmullRom(key0.Position.Y, key1.Position.Y, key2.Position.Y, key3.Position.Y, amount),\n                        MathHelper.CatmullRom(key0.Position.Z, key1.Position.Z, key2.Position.Z, key3.Position.Z, amount));\n\n                    if (prePosition.HasValue)\n                    {\n                        MyDebugDraw.DrawLine3D(prePosition.Value, position, Color.Orange, Color.Orange);\n                    }\n\n                    prePosition = position;\n                }\n            }\n\n            MyDebugDraw.DrawAxis(Matrix.CreateTranslation(Keys[Keys.Count - 1].Position), 10, 1);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/Utils/MyItemToGetDefinition.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\n\nnamespace MinerWars.AppCode.Game.Missions.Utils\n{\n    class MyItemToGetDefinition\n    {\n        public MyMwcObjectBuilderTypeEnum ItemType { get; set; }\n        public int? ItemId { get; set; }\n        public int Count { get; set; }\n\n        public MyItemToGetDefinition(MyMwcObjectBuilderTypeEnum itemType, int? itemId, int count) \n        {\n            ItemType = itemType;\n            ItemId = itemId;\n            Count = count;\n        }\n\n        public MyItemToGetDefinition(MyMwcObjectBuilderTypeEnum itemType, int? itemId)\n            : this(itemType, itemId, 1) \n        {\n\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Missions/Utils/MyMissionTimer.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Diagnostics;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.HUD;\nusing MinerWars.AppCode.Game.GUI.Core;\n\nnamespace MinerWars.AppCode.Game.Missions\n{\n    delegate void MyTimerActionDelegate();\n\n    // Times are in milliseconds.\n    class MyMissionTimer\n    {\n        /// <summary>\n        /// Inner class Timer action\n        /// </summary>\n        protected class MyTimerAction\n        {\n            public MyTimerActionDelegate Action { get; set; }\n            public bool Launched { get; set; }\n            public int StartTime { get; set; }\n            public string Notification { get; set; }\n            public bool ShowTimeFromStart { get; set; }\n\n            private MyHudNotification.MyNotification m_hudNotification;\n            private object[] m_hudNotificationArgs;\n\n            public MyTimerAction(int startTime, MyTimerActionDelegate action, string notification, bool showTimeFromStart)\n            {\n                StartTime = startTime;\n                Launched = false;\n                Action = action;\n                Notification = notification;\n                ShowTimeFromStart = showTimeFromStart;\n\n                if (Notification != null)\n                {\n                    m_hudNotification = new MyHudNotification.MyNotification(Notification + \"{0}\", MyGuiManager.GetFontMinerWarsBlue(), MyHudNotification.DONT_DISAPEAR, null);\n                    m_hudNotificationArgs = new object[1];\n                }\n            }\n\n            public void Launch()\n            {\n                Debug.Assert(!Launched);\n                Launched = true;\n                Action();\n                if (m_hudNotification != null)\n                {\n                    m_hudNotification.Disappear();\n                }\n            }\n\n            public void Stop()\n            {\n                if (m_hudNotification != null)\n                {\n                    m_hudNotification.Disappear();\n                }\n            }\n\n            public void Start()\n            {\n                if (m_hudNotification != null)\n                {\n                    if (m_hudNotification.IsDisappeared())\n                    {\n                        m_hudNotification.Appear();\n                    }\n                    MyHudNotification.AddNotification(m_hudNotification);\n                }\n            }\n\n            public void Update(int elapsedTime)\n            {\n                if (m_hudNotification != null)\n                {\n                    TimeSpan remainingTime;\n                    if (ShowTimeFromStart)\n                    {\n                        remainingTime = TimeSpan.FromMilliseconds(elapsedTime);\n                    }\n                    else\n                    {\n                        remainingTime = TimeSpan.FromMilliseconds(StartTime - elapsedTime);\n                    }\n                    m_hudNotificationArgs[0] = String.Format(\"{0:00}\", remainingTime.Minutes) + \":\" + String.Format(\"{0:00}\", remainingTime.Seconds);\n                    m_hudNotification.SetTextFormatArguments(m_hudNotificationArgs);\n                }\n            }\n        }\n\n        private List<MyTimerAction> m_registeredActions;\n        private int m_elapsedTime;\n\n        public bool Started { get; private set; }\n\n        public int ElapsedTime\n        {\n            get { return m_elapsedTime; }\n        }\n\n        public MyMissionTimer()\n        {\n            m_registeredActions = new List<MyTimerAction>();\n        }\n\n        public TimeSpan GetElapsedTime()\n        {\n            return new TimeSpan(0, 0, 0, 0, ElapsedTime);\n        }\n\n        public void Start()\n        {\n            Started = true;\n            foreach (MyTimerAction timerAction in m_registeredActions)\n            {\n                timerAction.Start();\n            }\n        }\n\n        public void Reset()\n        {\n            m_elapsedTime = 0;\n        }\n\n        public void End()\n        {\n            Started = false;\n            foreach (MyTimerAction timerAction in m_registeredActions)\n            {\n                timerAction.Stop();\n            }\n        }\n\n        public void RegisterTimerAction(int startTime, MyTimerActionDelegate timerActionDelegate, bool fromMissionStart = true, string displayNotification = null, bool showTimeFromStart = false)\n        {\n            int timerActionStartTime = startTime + (fromMissionStart ? 0 : ElapsedTime);\n            MyTimerAction timerAction = new MyTimerAction(timerActionStartTime, timerActionDelegate, displayNotification, showTimeFromStart);\n            if (Started)\n            {\n                timerAction.Start();\n            }\n            m_registeredActions.Add(timerAction);\n        }\n\n        public void RegisterTimerAction(TimeSpan startTime, MyTimerActionDelegate timerActionDelegate, bool fromMissionStart = true, string displayNotification = null, bool displayElapsedTime = false)\n        {\n            RegisterTimerAction((int)startTime.TotalMilliseconds, timerActionDelegate, fromMissionStart, displayNotification, displayElapsedTime);\n        }\n\n        public void Update()\n        {\n            if (Started)\n            {\n                m_elapsedTime += MyConstants.PHYSICS_STEP_SIZE_IN_MILLISECONDS;\n                int index = 0;\n                while (index < m_registeredActions.Count)\n                {\n                    MyTimerAction timerAction = m_registeredActions[index];\n                    if (ElapsedTime >= timerAction.StartTime)\n                    {\n                        Debug.Assert(!timerAction.Launched);\n                        timerAction.Launch();\n                        if (m_registeredActions.Count > 0)\n                        {\n                            m_registeredActions.RemoveAt(index);\n                        }\n                    }\n                    else\n                    {\n                        timerAction.Update(ElapsedTime);\n                        index++;\n                    }\n                }\n            }\n        }\n\n        public void ClearActions()\n        {\n            // hide notifications\n            foreach (var item in m_registeredActions)\n            {\n                item.Stop();\n            }\n\n            m_registeredActions.Clear();\n        }\n\n        internal void SetElapsedTime(TimeSpan timeSpan)\n        {\n            m_elapsedTime = (int)timeSpan.TotalMilliseconds;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Models/IMyTriangePruningStructure.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Physics.Collisions;\n\nnamespace MinerWars.AppCode.Game.Models\n{\n    interface IMyTriangePruningStructure\n    {\n        MyIntersectionResultLineTriangleEx? GetIntersectionWithLine(MyEntity physObject, ref MyLine line, IntersectionFlags flags = IntersectionFlags.DIRECT_TRIANGLES);\n        MyIntersectionResultLineTriangleEx? GetIntersectionWithLine(MyEntity physObject, ref MyLine line, ref Matrix customInvMatrix, IntersectionFlags flags = IntersectionFlags.DIRECT_TRIANGLES);\n\n        //  Return list of triangles intersecting specified sphere. Angle between every triangleVertexes normal vector and 'referenceNormalVector'\n        //  is calculated, and if more than 'maxAngle', we ignore such triangleVertexes.\n        //  Triangles are returned in 'retTriangles', and this list must be preallocated!\n        //  IMPORTANT: Sphere must be in model space, so don't transform it!\n        void GetTrianglesIntersectingSphere(ref BoundingSphere sphere, Vector3? referenceNormalVector, float? maxAngle, List<MyTriangle_Vertex_Normals> retTriangles, int maxNeighbourTriangles);\n\n        //  Return true if object intersects specified sphere.\n        //  This method doesn't return exact point of intersection or any additional data.\n        //  We don't look for closest intersection - so we stop on first intersection found.\n        bool GetIntersectionWithSphere(MyEntity physObject, ref BoundingSphere sphere);\n\n        //  Return list of triangles intersecting specified sphere. Angle between every triangleVertexes normal vector and 'referenceNormalVector'\n        //  is calculated, and if more than 'maxAngle', we ignore such triangleVertexes.\n        //  Triangles are returned in 'retTriangles', and this list must be preallocated!\n        //  IMPORTANT: Sphere must be in model space, so don't transform it!\n        void GetTrianglesIntersectingSphere(ref BoundingSphere sphere, List<MyTriangle_Vertex_Normal> retTriangles, int maxNeighbourTriangles);\n\n\n        void GetTrianglesIntersectingAABB(ref BoundingBox sphere, List<MyTriangle_Vertex_Normal> retTriangles, int maxNeighbourTriangles);\n\n        void Close();\n\n        int Size { get; }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Models/MyMesh.cs",
    "content": "﻿using System;\nusing System.IO;\n\nusing MinerWars.AppCode.App;\nusing System.Diagnostics;\nusing MinerWars.AppCode.Game.Managers;\n\n//using MinerWarsMath.Graphics;\n\nusing SharpDX;\nusing SharpDX.Direct3D9;\nusing SharpDX.Toolkit;\nusing SharpDX.Toolkit.Graphics;\nusing MinerWars.CommonLIB.AppCode.Import;\n\nnamespace MinerWars.AppCode.Game.Models\n{\n    internal class MyMesh\n    {\n        private const string C_CONTENT_ID = \"Content\\\\\";\n        private const string C_POSTFIX_DIFFUSE = \"_d\";\n        internal const string C_POSTFIX_DIFFUSE_EMISSIVE = \"_de\";\n        private const string C_POSTFIX_DONT_HAVE_NORMAL = \"_dn\";\n        internal const string C_POSTFIX_NORMAL_SPECULAR = \"_ns\";\n        private const string DEFAULT_DIRECTORY = \"\\\\v01\\\\\";\n\n        private IndexBuffer m_IndexBuffer;\n        private readonly string m_assetName;\n        public readonly MyMeshMaterial[] Materials = null;\n\n        public int IndexStart;\n        public int TriCount;\n\n        /// <summary>\n        /// c-tor - generic way for collecting resources\n        /// </summary>\n        /// <param name=\"meshInfo\"></param>\n        /// assetName - just for debug output\n        public MyMesh(MyMeshPartInfo meshInfo, string assetName)\n        {\n            string textureName = null;\n\n            MyMaterialDescriptor matDesc = meshInfo.m_MaterialDesc;\n            if (matDesc != null)\n            {\n                bool hasNormalTexture = true;\n\n                string texName = matDesc.m_DiffuseTextureName;\n                if (String.IsNullOrEmpty(texName) == false)\n                {\n                    int i = texName.LastIndexOf(C_CONTENT_ID);\n\n                    texName = texName.Substring(i + C_CONTENT_ID.Length, texName.Length - i - C_CONTENT_ID.Length);\n                    //@ cut extension\n                    int lastIndex = texName.LastIndexOf(\".\");\n                    textureName = texName.Substring(0, texName.Length - (texName.Length - lastIndex));\n\n                    if (textureName.LastIndexOf(C_POSTFIX_DONT_HAVE_NORMAL) == (textureName.Length - C_POSTFIX_DONT_HAVE_NORMAL.Length))\n                    {\n                        hasNormalTexture = false;\n                        textureName = textureName.Substring(0, textureName.Length - C_POSTFIX_DONT_HAVE_NORMAL.Length);\n                    }\n\n                    //@ if postfix for diffuse is _d -> trim it\n                    if (textureName.LastIndexOf(C_POSTFIX_DIFFUSE) == (textureName.Length - 2))\n                    {\n                        textureName = textureName.Substring(0, textureName.Length - 2);\n                    }\n\n                    if (textureName.LastIndexOf(C_POSTFIX_DIFFUSE_EMISSIVE) == (textureName.Length - 3))\n                    {\n                        textureName = textureName.Substring(0, textureName.Length - 3);\n                    }\n                }\n\n                var defaultMaterial = new MyMeshMaterial(matDesc.MaterialName,\n                                                         textureName + C_POSTFIX_DIFFUSE_EMISSIVE,\n                                                         textureName + C_POSTFIX_NORMAL_SPECULAR, matDesc.m_Glossiness,\n                                                         hasNormalTexture, ref matDesc.m_DiffuseColor,\n                                                         ref matDesc.m_SpecularColor);\n\n                // check for alternative textures and create corresponding materials.\n                if (!textureName.Contains(DEFAULT_DIRECTORY))\n                {\n                    Materials = new MyMeshMaterial[8];\n                    for (int j = 1; j < Materials.Length; j++)\n                    {\n                        Materials[j] = defaultMaterial;\n                    }\n                }\n                else\n                {\n                    int materialCount = FindMaterialCount(textureName);\n\n                    Materials = new MyMeshMaterial[materialCount];\n\n                    // here check if corresponding textures exist in the \"v02\" or \"v03\" ...\n                    // folder. If not, fall back to default \"v01\" folder\n                    for (int j = 1; j < Materials.Length; j++)\n                    {\n                        string newFolder = \"\\\\v\" + String.Format(\"{0:00}\", j + 1) + \"\\\\\";\n                        string newNameDiffuse = textureName.Replace(DEFAULT_DIRECTORY, newFolder) + C_POSTFIX_DIFFUSE_EMISSIVE;\n                        string newNameNormal = textureName.Replace(DEFAULT_DIRECTORY, newFolder) + C_POSTFIX_NORMAL_SPECULAR;\n\n                        string diffusepath = Path.Combine(MyMinerGame.Static.RootDirectory, newNameDiffuse) + \".dds\";\n                        if (!File.Exists(diffusepath))\n                            newNameDiffuse = textureName + C_POSTFIX_DIFFUSE_EMISSIVE;\n\n                        if (!File.Exists(Path.Combine(MyMinerGame.Static.RootDirectory, newNameNormal) + \".dds\"))\n                            newNameNormal = textureName + C_POSTFIX_NORMAL_SPECULAR;\n\n                        Materials[j] = new MyMeshMaterial(          matDesc.MaterialName,\n                                                                    newNameDiffuse, newNameNormal,\n                                                                      matDesc.m_Glossiness,\n                                                                      hasNormalTexture, ref matDesc.m_DiffuseColor,\n                                                                      ref matDesc.m_SpecularColor);\n                    }\n                }\n\n                Materials[0] = defaultMaterial;\n            }\n            else\n            {\n                //It is OK because ie. collision meshes dont have materials\n                //MyCommonDebugUtils.AssertRelease(false, String.Format(\"Model {0} has bad material for mesh.\", assetName));\n                Trace.TraceWarning(\"Model with null material: \" + assetName);\n\n                //We define at least debug material\n                MinerWarsMath.Vector3 color = MinerWarsMath.Color.Pink.ToVector3();\n                Materials = new MyMeshMaterial[8];\n                Materials[0] = new MyMeshMaterial(\"\", null, null, 0, true, ref color, ref color);\n                for (int j = 1; j < Materials.Length; j++)\n                {\n                    Materials[j] = Materials[0];\n                }\n            }\n\n            for (int i = 0; i < Materials.Length; i++)\n            {\n                Materials[i].DrawTechnique = meshInfo.m_MeshRenderTechnique;\n            }\n\n            m_assetName = assetName;\n        }\n\n        /// <summary>\n        /// Gets the number of existing folders with names \"v01\", \"v02\" ...\n        /// </summary>\n        /// <param name=\"textureName\">Path to a texture that contains \"v01\".</param>\n        /// <returns>Gets the number of available materials (textures) for the given textureName.</returns>\n        private static int FindMaterialCount(string textureName)\n        {\n            int materialCount = 0;\n            string directory = Path.Combine(MyMinerGame.Static.RootDirectory, textureName);\n            directory = directory.Remove(1 + directory.LastIndexOf('\\\\'));\n            while (Directory.Exists(directory))\n            {\n                materialCount++;\n                directory = directory.Replace(\"\\\\v\" + String.Format(\"{0:00}\", materialCount) + \"\\\\\",\n                                              \"\\\\v\" + String.Format(\"{0:00}\", materialCount + 1) + \"\\\\\");\n            }\n            return materialCount;\n        }\n\n        /// <summary>\n        /// Render\n        /// </summary>\n        /// <param name=\"grDevice\"></param>\n        /// <param name=\"vertexCount\"></param>\n        /// <param name=\"triCount\"></param>\n        public void Render(Device grDevice, int vertexCount)\n        {\n            grDevice.DrawIndexedPrimitive(PrimitiveType.TriangleList, 0, 0, vertexCount, IndexStart, TriCount);\n            MyPerformanceCounter.PerCameraDraw.TotalDrawCalls++;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Models/MyMeshMaterial.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath.Graphics;\nusing MinerWars.AppCode.Game.Render;\n\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Textures;\n\nnamespace MinerWars.AppCode.Game.Models\n{\n    using MinerWars.AppCode.App;\n    using System.Diagnostics;\n    using MinerWars.AppCode.Game.Utils;\n    using MinerWars.AppCode.Game.Managers;\n    using MinerWars.CommonLIB.AppCode.Import;\n\n    //@ Simple stupid material class which enwrapp 2 textures and generate uniqueID form textures\n    internal class MyMeshMaterial\n    {\n        private const string C_FAKE_NORMAL_TEXTURE = \"Textures2\\\\Models\\\\fake_n\";\n\n        public int HashCode;\n        private MyTexture2D m_diffuseTex;\n        private MyTexture2D m_normalTex;\n\n        private float m_specularIntensity = 1f;\n        private float m_specularPower = 1f;\n        private Vector3 m_specularColor;\n        private Vector3 m_diffuseColor = new Vector3(1f, 1f, 1f);\n\n        private readonly string m_materialName;\n        private readonly string m_diffuseName;\n        private readonly string m_normalName;\n        private readonly bool m_hasNormalTexture;\n        private MyMeshDrawTechnique m_drawTechnique;\n        private Vector2 m_emissiveUVAnim;\n        private bool m_emissivityEnabled = true;\n\n        private bool m_loadedContent;\n\n        Vector2 m_diffuseUVAnim;\n        public Vector2 DiffuseUVAnim\n        {\n            get { return m_diffuseUVAnim; }\n            set { m_diffuseUVAnim = value; ComputeHashCode(); }\n        }\n\n        public Vector2 EmissiveUVAnim \n        {\n            get \n            {\n                if (m_emissivityEnabled)\n                {\n                    return m_emissiveUVAnim;\n                }\n                else \n                {\n                    return Vector2.Zero;\n                }\n            }\n            set \n            {\n                m_emissiveUVAnim = value;\n                ComputeHashCode();\n            }\n        }\n                \n        public bool EmissivityEnabled \n        {\n            get { return m_emissivityEnabled; }\n            set\n            {\n                if (m_emissivityEnabled != value)\n                {\n                    m_emissivityEnabled = value;\n                    ComputeHashCode();\n                }\n            }\n        }\n\n        public float EmissivityOffset \n        {\n            get \n            {\n                if (EmissivityEnabled)\n                {\n                    return MyMinerGame.TotalGamePlayTimeInMilliseconds / 1000.0f;\n                }\n                else \n                {\n                    return 0f;\n                }\n            }\n        }\n\n        public float HoloEmissivity \n        {\n            get \n            {\n                if (EmissivityEnabled)\n                {\n                    if (SpecularColor.Y > 0)\n                    {  //material with animated emissivity\n                        return (((float)Math.Sin(MyMinerGame.TotalGamePlayTimeInMilliseconds / 1000.0f * SpecularColor.Y * 10.0f + SpecularColor.Z * 2 * (float)Math.PI)) + 1.0f) / 2.0f;\n                    }\n                    else //Holos and decals have multiplied emissivity\n                    {\n                        return 1f;\n                    }\n                }\n                else\n                {\n                    return 0f;\n                }\n            }\n        }\n\n        public MyMeshDrawTechnique DrawTechnique\n        {\n            get { return m_drawTechnique; }\n            set { m_drawTechnique = value; }\n        }\n\n        public MyTexture2D DiffuseTexture\n        {\n            get { return m_diffuseTex; }\n            set { m_diffuseTex = value; ComputeHashCode(); }\n        }\n        public MyTexture2D NormalTexture\n        {\n            get { return m_normalTex; }\n            set { m_normalTex = value; ComputeHashCode(); }\n        }\n        public float SpecularIntensity\n        {\n            get { return m_specularIntensity; }\n            set { m_specularIntensity = value; ComputeHashCode(); }\n        }\n        public float SpecularPower\n        {\n            get { return m_specularPower; }\n            set { m_specularPower = value; ComputeHashCode(); }\n        }\n        public Vector3 SpecularColor\n        {\n            get { return m_specularColor; }\n            set { m_specularColor = value; ComputeHashCode(); }\n        }\n        public Vector3 DiffuseColor\n        {\n            get { return m_diffuseColor; }\n            set { m_diffuseColor = value; ComputeHashCode(); }\n        }\n\n        public string MaterialName\n        {\n            get { return m_materialName; }\n        }\n\n        public MyMeshMaterial(string name, string materialName, MyTexture2D diff, MyTexture2D norm)\n        {\n            if (name!= null)\n            {\n                m_diffuseName = name + MyMesh.C_POSTFIX_DIFFUSE_EMISSIVE;\n                m_normalName = name + MyMesh.C_POSTFIX_NORMAL_SPECULAR;\n            }\n            m_materialName = materialName;\n            m_drawTechnique = MyMeshDrawTechnique.MESH;\n            HashCode = 0;\n            m_diffuseTex = diff;\n            m_normalTex = norm;\n            m_hasNormalTexture = m_normalTex != null;\n\n            ComputeHashCode();\n        }\n\n        /// <summary>\n        /// MyMeshMaterial\n        /// </summary>\n        /// <param name=\"specularLevel\"></param>\n        /// <param name=\"glossiness\"></param>\n        public MyMeshMaterial(string materialName, string diffuseName, string normalName, float glossiness, bool hasNormalTexture, ref Vector3 diffuseColor, ref Vector3 specularColor)\n        {\n            if (diffuseColor == Vector3.Zero)\n            {\n                // Debug.Assert(diffuseColor != Vector3.Zero);\n                diffuseColor = Vector3.One;\n            }\n\n            m_materialName = materialName;\n            m_diffuseName = diffuseName;\n            m_normalName = normalName;\n            m_specularIntensity = specularColor.X; //because of strange 3DSMAX/FBX conversion, specular level from 3ds max converts to .X component of specular color\n            m_specularPower = glossiness;\n            m_diffuseColor = diffuseColor;\n            m_hasNormalTexture = hasNormalTexture;\n\n            //we are not using specular color directly, we just use it to store extra data (animation of holos)\n            m_specularColor = specularColor;\n        }\n\n        /// <summary>\n        /// Preload textures into manager\n        /// </summary>\n        public void PreloadTexture(LoadingMode loadingMode = (MyFakes.LOAD_TEXTURES_IMMEDIATELY ? LoadingMode.Immediate : LoadingMode.LazyBackground))\n        {\n            if (m_loadedContent || m_diffuseName == null)\n            {\n                return;\n            }\n\n            if (m_hasNormalTexture)\n            {\n                DiffuseTexture = MyTextureManager.GetTexture<MyTexture2D>(m_diffuseName, CheckTexture, loadingMode);\n\n                if (MyRenderConstants.RenderQualityProfile.UseNormals)\n                    NormalTexture = MyTextureManager.GetTexture<MyTexture2D>(m_normalName, CheckTexture, loadingMode);\n            }\n            else\n            {\n                DiffuseTexture = MyTextureManager.GetTexture<MyTexture2D>(m_diffuseName, CheckTexture, loadingMode);\n\n                if (MyRenderConstants.RenderQualityProfile.UseNormals)\n                    NormalTexture = MyTextureManager.GetTexture<MyTexture2D>(C_FAKE_NORMAL_TEXTURE, CheckTexture, loadingMode);\n            }\n\n            m_loadedContent = true;\n        }\n\n        /// <summary>\n        /// Checks the normal map.\n        /// </summary>\n        /// <param name=\"texture\">The texture.</param>\n        private static void CheckTexture(MyTexture texture)\n        {\n            MyUtils.AssertTexture((MyTexture2D)texture);\n\n            texture.TextureLoaded -= CheckTexture;\n        }\n\n        /// <summary>\n        /// ComputeHashCode\n        /// </summary>\n        /// <returns></returns>\n        private void ComputeHashCode()\n        {\n            int result = 1;\n            int modCode = 0;\n\n            if (m_diffuseTex != null)\n            {\n                result = m_diffuseTex.GetHashCode();\n                modCode = (1 << 1);\n            }\n\n            if (m_normalTex != null)\n            {\n                result = (result * 397) ^ m_normalTex.GetHashCode();\n                modCode += (1 << 2);\n            }\n\n            if (m_specularIntensity != 0)\n            {\n                result = (result * 397) ^ m_specularIntensity.GetHashCode();\n                modCode += (1 << 4);\n            }\n\n            if (m_specularPower != 0)\n            {\n                result = (result * 397) ^ m_specularPower.GetHashCode();\n                modCode += (1 << 5);\n            }\n\n            if (m_diffuseColor.GetHashCode() != 0)\n            {\n                result = (result * 397) ^ m_diffuseColor.GetHashCode();\n                modCode += (1 << 6);\n            }\n\n            if (DiffuseUVAnim.GetHashCode() != 0)\n            {\n                result = (result * 397) ^ DiffuseUVAnim.GetHashCode();\n                modCode += (1 << 7);               \n            }\n\n            if (EmissiveUVAnim.GetHashCode() != 0)\n            {\n                result = (result * 397) ^ EmissiveUVAnim.GetHashCode();\n                modCode += (1 << 8);\n            }\n\n            result = (result * 397) ^ EmissivityEnabled.GetHashCode();\n            modCode += (1 << 9);\n\n            HashCode = (result * 397) ^ modCode;\n        }\n\n        /// <summary>\n        /// GetHashCode\n        /// </summary>\n        /// <returns></returns>\n        public override int GetHashCode()\n        {\n            unchecked\n            {\n                return HashCode;\n            }\n        }\n\n        /// <summary>\n        /// Equals\n        /// </summary>\n        /// <param name=\"obj\"></param>\n        /// <returns></returns>\n        public override bool Equals(object obj)\n        {\n            if (ReferenceEquals(null, obj)) \n                return false;\n            if (obj.GetType() != typeof(MyMeshMaterial)) \n                return false;\n            return HashCode == obj.GetHashCode();\n        }\n\n\n        /// <summary>\n        /// Return modelDrawTechnique based on textures\n        /// </summary>\n        /// <returns></returns>\n        public MyMeshDrawTechnique GenerateDrawTechnique()\n        {\n            return MyMeshDrawTechnique.MESH;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Models/MyModel.cs",
    "content": "﻿#region\n\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Managers;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Utils.VertexFormats;\nusing MinerWars.AppCode.Physics;\nusing SysUtils.Utils;\n\nusing MinerWars.AppCode.Game.Render;\nusing SysUtils;\nusing System.Diagnostics;\nusing System.IO;\nusing MinerWars.AppCode.Game.Textures;\nusing BulletXNA.BulletCollision;\nusing MinerWars.AppCode.Physics.Collisions;\nusing MinerWarsMath.Graphics.PackedVector;\nusing System.Runtime.InteropServices;\n\n//using MinerWarsMath;\n//using MinerWarsMath.Graphics;\n\nusing SharpDX;\nusing SharpDX.Direct3D9;\nusing SharpDX.Toolkit;\nusing SharpDX.Toolkit.Graphics;\n\n#endregion\n\n//  Coordinate system transformation:\n//  3DS MAX displays different coordinate system than XNA, plus when converting to FBX, it looks like it switches sign of Z values (Z in XNA way).\n//  So when thinking about converting coordinate system, this is it:\n//  XNA X = 3DSMAX X\n//  XNA Y = 3DSMAX Z\n//  XNA Z = NEGATIVE OF 3DSMAX Y\n\nnamespace MinerWars.AppCode.Game.Models\n{\n    using Vector2 = MinerWarsMath.Vector2;\n    using Vector3 = MinerWarsMath.Vector3;\n    using Vector4 = MinerWarsMath.Vector4;\n    using Rectangle = MinerWarsMath.Rectangle;\n    using Matrix = MinerWarsMath.Matrix;\n    using Color = MinerWarsMath.Color;\n    using BoundingBox = MinerWarsMath.BoundingBox;\n    using BoundingSphere = MinerWarsMath.BoundingSphere;\n    using BoundingFrustum = MinerWarsMath.BoundingFrustum;\n    using MinerWars.CommonLIB.AppCode.Import;\n\n    class MyModel : IDisposable, IPrimitiveManagerBase\n    {\n        private const string C_POSTFIX_MASK = \"_m\";\n\n        static MyModelExporter m_exporter = new MyModelExporter();\n\n        public readonly MyModelsEnum ModelEnum;\n\n        public bool KeepInMemory { get; private set; }\n\n\n        MyMeshDrawTechnique m_drawTechnique;\n        VertexBuffer m_vertexBuffer = null;\n        IndexBuffer m_indexBuffer = null;\n        int m_verticesCount;\n        int m_trianglesCount;\n        int m_vertexBufferSize;\n        int m_indexBufferSize;\n        int m_vertexStride;\n        VertexDeclaration m_vertexDeclaration;\n\n        public int GetVBSize\n        {\n            get { return m_vertexBufferSize; }\n        }\n        public int GetIBSize\n        {\n            get { return m_indexBufferSize; }\n        }\n\n        //  Vertices and indices used for collision detection\n        [StructLayout(LayoutKind.Sequential, Pack = 1)]\n        struct MyCompressedVertexNormal\n        {  //8 + 4 bytes\n            public HalfVector4 Position;\n            public Byte4 Normal;\n        }\n\n        //  Vertices and indices used for collision detection\n        [StructLayout(LayoutKind.Sequential, Pack = 1)]\n        struct MyVertexNormal\n        {  //12 + 12 bytes\n            public Vector3 Position;\n            public Vector3 Normal;\n        }\n\n#if PACKED_VERTEX_FORMAT\n        private MyCompressedVertexNormal[] m_vertices;\n#else\n        private MyVertexNormal[] m_vertices;\n#endif\n\n        private int[] m_Indicies = null;\n        private ushort[] m_Indicies_16bit = null;\n\n        public MyTriangleVertexIndices[] Triangles;       //  Triangles specified by three indicies to \"Vertex\" list      //TODO: Could be made readonly from the outside, and alterable only from the inside of this class\n        public Dictionary<string, MyModelDummy> Dummies;\n        public MyModelInfo ModelInfo;\n        public MyTexture2D MaskTexture;\n\n        /// <summary>\n        /// State of loading.\n        /// </summary>\n        private volatile LoadState m_loadState;\n\n        /// <summary>\n        /// Gets or sets the state of the load.\n        /// </summary>\n        /// <value>\n        /// The state of the load.\n        /// </value>\n        public LoadState LoadState\n        {\n            get\n            {\n                return this.m_loadState;\n            }\n            internal set\n            {\n                this.m_loadState = value;\n            }\n        }\n\n        public int GetVertexStride()\n        {\n            return m_vertexStride;\n        }\n\n        public VertexDeclaration GetVertexDeclaration()\n        {\n            return m_vertexDeclaration;\n        }\n\n        public Vector3 GetVertexInt(int vertexIndex)\n        {\n#if PACKED_VERTEX_FORMAT\n            return VF_Packer.UnpackPosition(ref m_vertices[vertexIndex].Position);\n#else\n            return m_vertices[vertexIndex].Position;\n#endif\n        }\n\n        public Vector3 GetVertex(int vertexIndex)\n        {\n            return GetVertexInt(vertexIndex);\n        }\n\n        public void GetVertex(int vertexIndex1, int vertexIndex2, int vertexIndex3, out Vector3 v1, out Vector3 v2, out Vector3 v3)\n        {   \n            v1 = GetVertex(vertexIndex1);\n            v2 = GetVertex(vertexIndex2);\n            v3 = GetVertex(vertexIndex3);\n        }\n\n        public Vector3 GetVertexNormal(int vertexIndex)\n        {\n#if PACKED_VERTEX_FORMAT\n           return  VF_Packer.UnpackNormal(ref m_vertices[vertexIndex].Normal);\n#else\n           return m_vertices[vertexIndex].Normal;\n#endif\n        }\n\n        public Vector3 GetVertexBinormal(int vertexIndex)\n        {\n#if PACKED_VERTEX_FORMAT\n            return VF_Packer.UnpackNormal(ref m_forLoadingBinormals[vertexIndex]);\n#else\n            return m_forLoadingBinormals[vertexIndex];\n#endif\n        }\n\n        public Vector3 GetVertexTangent(int vertexIndex)\n        {\n#if PACKED_VERTEX_FORMAT\n            return VF_Packer.UnpackNormal(ref m_forLoadingTangents[vertexIndex]);\n#else\n            return m_forLoadingTangents[vertexIndex];\n#endif\n        }\n\n        //  Used only for loading and then disposed. It lives between LoadData and LoadInDraw... but that's OK because it's only during sector loading\n        //  and I have to make it so because we can't load vertex/index buffers from other place than Draw call\n#if PACKED_VERTEX_FORMAT\n        HalfVector2[] m_forLoadingTexCoords0;\n        HalfVector2[] m_forLoadingTexCoords1;\n        Byte4[] m_forLoadingBinormals;\n        Byte4[] m_forLoadingTangents;\n#else\n        Vector2[] m_forLoadingTexCoords0;\n        Vector2[] m_forLoadingTexCoords1;\n        Vector3[] m_forLoadingBinormals;\n        Vector3[] m_forLoadingTangents;\n#endif\n\n        float m_specularShininess;\n        float m_specularPower;\n        float m_rescaleFactor;\n        bool m_useChannelTextures;\n\n        //  Bounding volumes\n        public BoundingSphere BoundingSphere;   //TODO: Could be made readonly from the outside, and alterable only from the inside of this class\n        public BoundingBox BoundingBox;         //TODO: Could be made readonly from the outside, and alterable only from the inside of this class\n\n        //  Size of the bounding box\n        public Vector3 BoundingBoxSize;         //TODO: Could be made readonly from the outside, and alterable only from the inside of this class\n        public Vector3 BoundingBoxSizeHalf;     //TODO: Could be made readonly from the outside, and alterable only from the inside of this class\n\n        //  Octree\n        IMyTriangePruningStructure m_bvh;\n\n        readonly string m_assetName;\n        bool m_loadedData;\n        bool m_loadedContent;\n\n\n        public bool LoadedData\n        {\n            get { return m_loadedData; }\n        }\n\n        public bool LoadedContent\n        {\n            get { return m_loadedContent; }\n        }\n\n        List<MyMesh> m_meshContainer = new List<MyMesh>();\n\n        public bool UseChannels\n        {\n            get\n            {\n                return m_useChannelTextures && MyRenderConstants.RenderQualityProfile.UseChannels;\n            }\n        }\n\n        //  Create instance of a model, but doesn't really load the model from file to memory. Only remembers its definition.\n        //  Data are loaded later using lazy-load mechanism - in LoadData or LoadInDraw\n        //  Parameters of this constructor that are nullable aren't mandatory - that's why they are nullable.\n        //  But they might be needed at some point of model's life, so think!\n        //  E.g. if texture isn't specified, then it's not assigned to shader during rendering. Same for \"shininess\" and \"specularPower\"\n        //  But models that use it should have null in all other texture parameters, because those textures won't be used.\n        //  IMPORTANT: ASSERTS IN THIS CONSTRUCTOR SHOULD CHECK IF ALL REQUIRED PARAMETERS AND THEIR COMBINATIONS ARE FINE!\n        //  BUT THE REALITY IS THAT I DON'T HAVE TIME TO ASSERT ALL POSSIBLE COMBINATIONS...                          \n\n        public MyModel(string assetName, MyMeshDrawTechnique drawTechnique, MyModelsEnum modelEnum)\n            :this(assetName, drawTechnique, modelEnum, false)\n        {\n        }\n\n        /// <summary>\n        /// c-tor - this constructor should be used just for max models - not voxels!\n        /// </summary>\n        /// <param name=\"assetName\"></param>\n        /// <param name=\"unloadableModel\"></param>\n        /// <param name=\"drawTechnique\"></param>\n        /// <param name=\"modelEnum\"></param>\n        public MyModel(string assetName, MyMeshDrawTechnique drawTechnique, MyModelsEnum modelEnum, bool keepInMemory)\n        {\n            m_assetName = assetName;\n            m_loadedData = false;\n            m_loadedContent = false;\n            ModelEnum = modelEnum;\n            m_drawTechnique = drawTechnique;\n            KeepInMemory = keepInMemory;\n\n            string absFilePath = Directory.GetCurrentDirectory() + \"\\\\Content\\\\\" + m_assetName + \".mwm\";\n            System.Diagnostics.Debug.Assert(File.Exists(absFilePath), \"Model data for \" + m_assetName + \" does not exists!\");\n\n            LoadState = Managers.LoadState.Unloaded;\n        }\n\n        /// <summary>\n        /// Use brain w\n        /// </summary>\n        /// <returns></returns>\n        public List<MyMesh> GetMeshList()\n        {\n            return m_meshContainer;\n        }\n\n\n        //  Sort of lazy-load, where constructor just saves information about what this model should be, but real load is done here - and only one time.\n        //  This loads only vertex data, doesn't touch GPU\n        //  Can be called from main and background thread\n        public void LoadData()\n        {\n            if (m_loadedData) return;\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyModel::LoadData\");\n\n\n            MyMwcLog.WriteLine(\"MyModel.LoadData -> START\", LoggingOptions.LOADING_MODELS);\n            MyMwcLog.IncreaseIndent(LoggingOptions.LOADING_MODELS);\n\n            MyMwcLog.WriteLine(\"m_assetName: \" + m_assetName, LoggingOptions.LOADING_MODELS);\n\n            //  Read data from model TAG parameter. There are stored vertex positions, triangle indices, vectors, ... everything we need.\n            string absFilePath = Directory.GetCurrentDirectory() + \"\\\\Content\\\\\" + m_assetName + \".mwm\";\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Model - load data - import data\");\n\n            \n\n            MyMwcLog.WriteLine(String.Format(\"Importing asset {0}, path: {1}\", m_assetName, absFilePath), LoggingOptions.LOADING_MODELS);\n            try\n            {\n                m_exporter.ImportData(absFilePath);\n            }\n            catch (Exception e)\n            {\n                MyMwcLog.WriteLine(String.Format(\"Importing asset failed {0}, message: {1}, stack:{2}\", m_assetName, e.Message, e.StackTrace));\n            }\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Model - load data - load tag data\");\n            Dictionary<string, object> tagData = m_exporter.GetTagData();\n            if (tagData.Count == 0)\n            {\n                throw new Exception(String.Format(\"Uncompleted tagData for asset: {0}, path: {1}\", m_assetName, absFilePath));\n            }\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Model - load data - vertex, normals, texture coords\");\n\n\n#if PACKED_VERTEX_FORMAT\n            HalfVector4[] vertices = (HalfVector4[])tagData[MyImporterConstants.TAG_VERTICES];\n\n            System.Diagnostics.Debug.Assert(vertices.Length > 0);\n\n            Byte4[] normals = (Byte4[])tagData[MyImporterConstants.TAG_NORMALS];\n            m_vertices = new MyCompressedVertexNormal[vertices.Length];\n            if (normals.Length > 0)\n            {\n                for (int v = 0; v < vertices.Length; v++)\n                {\n                    m_vertices[v] = new MyCompressedVertexNormal()\n                    {\n                        Position = vertices[v],// VF_Packer.PackPosition(ref vertices[v]),\n                        Normal = normals[v]//VF_Packer.PackNormalB4(ref normals[v])\n                    };\n                }\n            }\n            else\n            {\n                for (int v = 0; v < vertices.Length; v++)\n                {\n                    m_vertices[v] = new MyCompressedVertexNormal()\n                    {\n                        Position = vertices[v],// VF_Packer.PackPosition(ref vertices[v]),\n                    };\n                }\n            }\n#else            \n            Vector3[] vertices = (Vector3[])tagData[MyImporterConstants.TAG_VERTICES];\n            Vector3[] normals = (Vector3[])tagData[MyImporterConstants.TAG_NORMALS];\n            m_vertices = new MyVertexNormal[vertices.Length];\n            for (int v = 0; v < vertices.Length; v++)\n            {\n                m_vertices[v] = new MyVertexNormal()\n                {\n                    Position = vertices[v],\n                    Normal = normals[v]\n                };\n            }\n#endif\n\n            m_verticesCount = vertices.Length;\n\n#if PACKED_VERTEX_FORMAT\n            HalfVector2[] forLoadingTexCoords0 = (HalfVector2[])tagData[MyImporterConstants.TAG_TEXCOORDS0];\n            m_forLoadingTexCoords0 = new HalfVector2[forLoadingTexCoords0.Length];\n            for (int t = 0; t < forLoadingTexCoords0.Length; t++)\n            {\n                m_forLoadingTexCoords0[t] = forLoadingTexCoords0[t];// new HalfVector2(forLoadingTexCoords0[t]);\n            }\n#else\n            Vector2[] forLoadingTexCoords0 = (Vector2[])tagData[MyImporterConstants.TAG_TEXCOORDS0];\n            m_forLoadingTexCoords0 = new Vector2[forLoadingTexCoords0.Length];\n            for (int t = 0; t < forLoadingTexCoords0.Length; t++)\n            {\n                m_forLoadingTexCoords0[t] = forLoadingTexCoords0[t];\n            }\n#endif\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Model - load data - mesh\");\n            m_meshContainer.Clear();\n            \n            if (tagData.ContainsKey(MyImporterConstants.TAG_MESH_PARTS))\n            {\n                List<int> indices = new List<int>(GetVerticesCount()); // Default capacity estimation\n                int maxIndex = 0;\n\n                List<MyMeshPartInfo> meshes = tagData[MyImporterConstants.TAG_MESH_PARTS] as List<MyMeshPartInfo>;\n                foreach (MyMeshPartInfo meshPart in meshes)\n                {\n                    MyMesh mesh = new MyMesh(meshPart, m_assetName);\n\n                    mesh.IndexStart = indices.Count;\n                    mesh.TriCount = meshPart.m_Indicies.Count / 3;\n\n                    System.Diagnostics.Debug.Assert(mesh.TriCount > 0);\n\n                    foreach(var i in meshPart.m_Indicies)\n                    {\n                        indices.Add(i);\n                        if(i > maxIndex)\n                        {\n                            maxIndex = i;\n                        }\n                    }\n\n                    m_meshContainer.Add(mesh);\n                }\n\n                if (maxIndex <= ushort.MaxValue)\n                {\n                    // create 16 bit indices\n                    m_Indicies_16bit = new ushort[indices.Count];\n                    for (int i = 0; i < indices.Count; i++)\n                    {\n                        m_Indicies_16bit[i] = (ushort)indices[i];\n                    }\n                }\n                else\n                {\n                    // use 32bit indices\n                    m_Indicies = indices.ToArray();\n                }\n            }\n\n            if (tagData.ContainsKey(MyImporterConstants.TAG_MODEL_BVH))\n            {\n                m_bvh = new MyQuantizedBvhAdapter(tagData[MyImporterConstants.TAG_MODEL_BVH] as GImpactQuantizedBvh, this);\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Model - load data - other data\");\n            if (MyRenderConstants.RenderQualityProfile.UseNormals)\n            {\n\n#if PACKED_VERTEX_FORMAT\n                Byte4[] forLoadingBinormals = (Byte4[])tagData[MyImporterConstants.TAG_BINORMALS];\n                Byte4[] forLoadingTangents = (Byte4[])tagData[MyImporterConstants.TAG_TANGENTS];\n                m_forLoadingBinormals = new Byte4[forLoadingBinormals.Length];\n                m_forLoadingTangents = new Byte4[forLoadingBinormals.Length];\n\n                for (int v = 0; v < forLoadingBinormals.Length; v++)\n                {\n                    m_forLoadingBinormals[v] = forLoadingBinormals[v];// VF_Packer.PackNormalB4(ref forLoadingBinormals[v]);\n                    m_forLoadingTangents[v] = forLoadingTangents[v];//VF_Packer.PackNormalB4(ref forLoadingTangents[v]);\n                }\n#else\n                Vector3[] forLoadingBinormals = (Vector3[])tagData[MyImporterConstants.TAG_BINORMALS];\n                Vector3[] forLoadingTangents = (Vector3[])tagData[MyImporterConstants.TAG_TANGENTS];\n                m_forLoadingBinormals = new Vector3[forLoadingBinormals.Length];\n                m_forLoadingTangents = new Vector3[forLoadingBinormals.Length];\n\n                for (int v = 0; v < forLoadingBinormals.Length; v++)\n                {\n                    m_forLoadingBinormals[v] = forLoadingBinormals[v];\n                    m_forLoadingTangents[v] = forLoadingTangents[v];\n                }\n#endif\n            }\n\n            m_specularShininess = (float)tagData[MyImporterConstants.TAG_SPECULAR_SHININESS];\n            m_specularPower = (float)tagData[MyImporterConstants.TAG_SPECULAR_POWER];\n            m_rescaleFactor = (float)tagData[MyImporterConstants.TAG_RESCALE_FACTOR];\n\n            m_useChannelTextures = (bool)tagData[MyImporterConstants.TAG_USE_CHANNEL_TEXTURES];\n            if (m_useChannelTextures)\n            {\n\n#if PACKED_VERTEX_FORMAT\n                HalfVector2[] forLoadingTexCoords1 = (HalfVector2[])tagData[MyImporterConstants.TAG_TEXCOORDS1];\n                System.Diagnostics.Debug.Assert(forLoadingTexCoords1.Length > 0);\n                m_forLoadingTexCoords1 = new HalfVector2[forLoadingTexCoords1.Length];\n                for (int t = 0; t < forLoadingTexCoords1.Length; t++)\n                {\n                    m_forLoadingTexCoords1[t] = forLoadingTexCoords1[t];// new HalfVector2(forLoadingTexCoords1[t]);\n                }\n#else\n                Vector2[] forLoadingTexCoords1 = (Vector2[])tagData[MyImporterConstants.TAG_TEXCOORDS1];\n                System.Diagnostics.Debug.Assert(forLoadingTexCoords1.Length > 0);\n                m_forLoadingTexCoords1 = new Vector2[forLoadingTexCoords1.Length];\n                for (int t = 0; t < forLoadingTexCoords1.Length; t++)\n                {\n                    m_forLoadingTexCoords1[t] = forLoadingTexCoords1[t];\n                }\n#endif\n            }\n\n            BoundingBox = (BoundingBox)tagData[MyImporterConstants.TAG_BOUNDING_BOX];\n            BoundingSphere = (BoundingSphere)tagData[MyImporterConstants.TAG_BOUNDING_SPHERE];\n            BoundingBoxSize = BoundingBox.Max - BoundingBox.Min;\n            BoundingBoxSizeHalf = BoundingBoxSize / 2.0f;\n            Dummies = tagData[MyImporterConstants.TAG_DUMMIES] as Dictionary<string, MyModelDummy>;\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n\n            foreach (MyMesh mesh in m_meshContainer)\n            {\n                for (int i = 0; i < mesh.Materials.Length; i++)\n                {\n                    MyMeshMaterial material = mesh.Materials[i];\n\n                    if (Dummies.ContainsKey(material.MaterialName))\n                    {\n                        MyModelDummy dummy = Dummies[material.MaterialName];\n\n                        material.DiffuseUVAnim = new Vector2(\n                            MyUtils.ReadSingleSafe((string)dummy.CustomData[\"DiffuseU\"]),\n                            MyUtils.ReadSingleSafe((string)dummy.CustomData[\"DiffuseV\"])\n                            );\n\n                        material.EmissiveUVAnim = new Vector2(\n                            MyUtils.ReadSingleSafe((string)dummy.CustomData[\"EmissiveU\"]),\n                            MyUtils.ReadSingleSafe((string)dummy.CustomData[\"EmissiveV\"])\n                            );\n                    }\n                }\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Model - load data - copy triangle indices\");\n            //  Prepare data\n            CopyTriangleIndices();\n            m_trianglesCount = Triangles.Count();\n\n            //m_effect = MyModels.GetEffectForDrawTechnique(m_drawTechnique);\n\n            //  Remember this numbers as list may be cleared at the end of this method\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            MyMwcLog.WriteLine(\"Triangles.Length: \" + Triangles.Length, LoggingOptions.LOADING_MODELS);\n            MyMwcLog.WriteLine(\"Vertexes.Length: \" + GetVerticesCount(), LoggingOptions.LOADING_MODELS);\n            MyMwcLog.WriteLine(\"Centered: \" + (bool)tagData[MyImporterConstants.TAG_CENTERED], LoggingOptions.LOADING_MODELS);\n            MyMwcLog.WriteLine(\"UseChannelTextures: \" + (bool)tagData[MyImporterConstants.TAG_USE_CHANNEL_TEXTURES], LoggingOptions.LOADING_MODELS);\n            MyMwcLog.WriteLine(\"Length in meters: \" + (float)tagData[MyImporterConstants.TAG_LENGTH_IN_METERS], LoggingOptions.LOADING_MODELS);\n            MyMwcLog.WriteLine(\"Rescale to length in meters?: \" + (bool)tagData[MyImporterConstants.TAG_RESCALE_TO_LENGTH_IN_METERS], LoggingOptions.LOADING_MODELS);\n            MyMwcLog.WriteLine(\"SpecularShininess: \" + m_specularShininess, LoggingOptions.LOADING_MODELS);\n            MyMwcLog.WriteLine(\"SpecularPower: \" + m_specularPower, LoggingOptions.LOADING_MODELS);\n            MyMwcLog.WriteLine(\"RescaleFactor: \" + m_rescaleFactor, LoggingOptions.LOADING_MODELS);\n            MyMwcLog.WriteLine(\"BoundingBox: \" + BoundingBox, LoggingOptions.LOADING_MODELS);\n            MyMwcLog.WriteLine(\"BoundingSphere: \" + BoundingSphere, LoggingOptions.LOADING_MODELS);\n\n            MyPerformanceCounter.PerAppLifetime.MyModelsCount++;\n            MyPerformanceCounter.PerAppLifetime.MyModelsMeshesCount += m_meshContainer.Count;\n            MyPerformanceCounter.PerAppLifetime.MyModelsVertexesCount += GetVerticesCount();\n            MyPerformanceCounter.PerAppLifetime.MyModelsTrianglesCount += Triangles.Length;\n\n            //MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Model - load data - octree\");\n            ////  Create octree for fast line intersections. \n            ////  IMPORTANT: This can be calculated only after we know bounding box and vertex/triangleVertexes arrays are filled\n            //m_octree = new MyModelOctree(this);\n            //MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            // Preload octree & bvh\n            //var before = System.GC.GetTotalMemory(true);\n            //DateTime beforeTime = DateTime.Now;\n            //GetOctree();\n            //MyPerformanceCounter.PerAppLifetime.MyModelsOctreeLoadTime += (DateTime.Now - beforeTime);\n            //var after = System.GC.GetTotalMemory(true);\n            //MyPerformanceCounter.PerAppLifetime.MyModelsOctreeSizeB += (after - before);\n\n            //var before2 = System.GC.GetTotalMemory(true);\n            //DateTime beforeTime2 = DateTime.Now;\n            //GetBvh();\n            //MyPerformanceCounter.PerAppLifetime.MyModelsBvhLoadTime += (DateTime.Now - beforeTime2);\n            //var after2 = System.GC.GetTotalMemory(true);\n            //MyPerformanceCounter.PerAppLifetime.MyModelsBvhSizeB += (after2 - before2);\n\n            //tempContentManagerForModelOnly.Unload();\n\n            ModelInfo = new MyModelInfo(GetTrianglesCount(), GetVerticesCount(), BoundingBoxSize);\n\n            m_loadedData = true;\n\n            MyMwcLog.DecreaseIndent(LoggingOptions.LOADING_MODELS);\n            MyMwcLog.WriteLine(\"MyModel.LoadData -> END\", LoggingOptions.LOADING_MODELS);\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n\n        //\n        //\n        public void LoadContent()\n        {\n            //If model was loaded previously, we need it reload because it has some temporary data discarded\n            //otherwise model wont load after device reset\n            // We must also reload when binormals or tangents are missing.\n            /*\n            if (m_loadedData && (m_forLoadingTexCoords0 == null || m_forLoadingBinormals == null || m_forLoadingTangents == null || m_meshContainer.Count == 0))\n            {\n                m_loadedData = false;\n                LoadData();\n            }  */\n            \n            LoadInDraw();\n\n\n        }\n\n\n\n        private void CreateRenderDataForMesh()\n        {\n            // Creating vertex and index buffer\n            //  Write to GPU\n            CreateVertexBuffer();\n            CreateIndexBuffer();\n\n            //  We don't need this anymore - we need it for merging geometry\n            //  Cleaning up lists          \n            /*\n            m_forLoadingTexCoords0 = null;\n            m_forLoadingTexCoords1 = null;\n            m_forLoadingBinormals = null;\n            m_forLoadingTangents = null; \n            */\n\n            // Cleaning normals if we do not need vertex normal debug drawing\n           // if (!MyMwcFinalBuildConstants.ENABLE_VERTEX_NORMALS_DEBUG_DRAW)\n             //   m_VertexNormals = null;\n        }\n\n        //  Loads vertex/index buffers and textures, access GPU\n        //  Should be called only from Draw method on main thread\n        public void LoadInDraw(LoadingMode loadingMode = LoadingMode.Immediate)\n        {\n            //  If already loaded into GPU\n            if (m_loadedContent) return;\n\n            //  If this model wasn't loaded through lazy-load then it means we don't need it in this game/sector, and we\n            //  don't need to load him into GPU\n            if (m_loadedData == false) return;\n\n            if (LoadState == Managers.LoadState.Loading)\n                return;\n\n            if (loadingMode == LoadingMode.Background)\n            {\n                MyModels.LoadModelInDrawInBackground(this);\n                return;\n            }\n            \n\n            Debug.Assert(m_forLoadingTexCoords0 != null && m_meshContainer.Count != 0, \"Somebody forget to call LoadData on model before rendering\");\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyModel::LoadInDraw\");\n\n            if (m_useChannelTextures)\n            {\n                MaskTexture = MyTextureManager.GetTexture<MyTexture2D>(m_assetName + C_POSTFIX_MASK, null, LoadingMode.LazyBackground);\n            }\n\n\n\n            // Creating\n            CreateRenderDataForMesh();\n\n\n            m_loadedContent = true;\n\n            LoadState = Managers.LoadState.Loaded;\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        void CreateVertexBuffer()\n        {\n            //  Create vertex buffer - vertex format type depends on draw technique\n\n            switch (m_drawTechnique)\n            {\n                case MyMeshDrawTechnique.MESH:\n                case MyMeshDrawTechnique.DECAL:\n                case MyMeshDrawTechnique.HOLO:\n                case MyMeshDrawTechnique.ALPHA_MASKED:\n                    {\n                        if (m_forLoadingTexCoords0 == null) throw new Exception(\"Model '\" + m_assetName + \"' doesn't have texture channel 0 specified, but this shader requires it\");\n\n                        if (m_forLoadingTexCoords0.Length == 0)\n                        {\n                            MyVertexFormatPosition[] vertexArray = new MyVertexFormatPosition[GetVerticesCount()];\n                            for (int i = 0; i < GetVerticesCount(); i++)\n                            {\n                                Vector4 pos = m_vertices[i].Position.ToVector4();\n                                vertexArray[i].Position = new Vector3(pos.X, pos.Y, pos.Z);\n                            }\n\n                            m_vertexDeclaration = MyVertexFormatPosition.VertexDeclaration;\n                            m_vertexStride = MyVertexFormatPosition.Stride;\n                            m_vertexBufferSize = vertexArray.Length * m_vertexStride;\n                            m_vertexBuffer = new VertexBuffer(MyMinerGame.Static.GraphicsDevice, m_vertexBufferSize, Usage.WriteOnly, VertexFormat.None, Pool.Default);\n                            m_vertexBuffer.Lock(0, 0, LockFlags.None).WriteRange(vertexArray);\n                            m_vertexBuffer.Unlock();\n                            m_vertexBuffer.Tag = this;\n                        }\n                        else\n                        if (MyRenderConstants.RenderQualityProfile.UseNormals)\n                        {\n                            if (m_forLoadingBinormals == null) \n                                throw new Exception(\"Model '\" + m_assetName + \"' doesn't have binormals calculated, but this shader requires them\");\n                            if (m_forLoadingTangents == null) \n                                throw new Exception(\"Model '\" + m_assetName + \"' doesn't have tangent vectors calculated, but this shader requires them\");\n\n                            if (UseChannels)\n                            {\n                                if (m_forLoadingTexCoords1 == null || m_forLoadingTexCoords1.Length == 0)\n                                {\n                                    throw new Exception(\"Model '\" + m_assetName + \"' doesn't have UVcoords1 calculated, but this shader requires them\");\n                                }\n\n                                MyVertexFormatPositionNormalTextureTangentBinormalMask[] vertexArray = new MyVertexFormatPositionNormalTextureTangentBinormalMask[GetVerticesCount()];\n                                for (int i = 0; i < GetVerticesCount(); i++)\n                                {\n#if PACKED_VERTEX_FORMAT\n                                    vertexArray[i].PositionPacked = m_vertices[i].Position;\n                                    vertexArray[i].NormalPacked = m_vertices[i].Normal;\n                                    vertexArray[i].TexCoordPacked = m_forLoadingTexCoords0[i];\n                                    vertexArray[i].BinormalPacked = m_forLoadingBinormals[i];\n                                    vertexArray[i].TangentPacked = m_forLoadingTangents[i];\n                                    vertexArray[i].MaskCoordPacked = m_forLoadingTexCoords1[i];\n#else\n                                    vertexArray[i].Position = m_vertices[i].Position;\n                                    vertexArray[i].Normal = m_vertices[i].Normal;\n                                    vertexArray[i].TexCoord = m_forLoadingTexCoords0[i];\n                                    vertexArray[i].Binormal = m_forLoadingBinormals[i];\n                                    vertexArray[i].Tangent = m_forLoadingTangents[i];\n                                    vertexArray[i].MaskCoord = m_forLoadingTexCoords1[i];\n\n#endif\n                                }\n\n                                m_vertexDeclaration = MyVertexFormatPositionNormalTextureTangentBinormalMask.VertexDeclaration;\n                                m_vertexStride = MyVertexFormatPositionNormalTextureTangentBinormalMask.Stride;\n                                m_vertexBufferSize = vertexArray.Length * m_vertexStride;\n                                m_vertexBuffer = new VertexBuffer(MyMinerGame.Static.GraphicsDevice, m_vertexBufferSize, Usage.WriteOnly, VertexFormat.None, Pool.Default);\n                                m_vertexBuffer.Lock(0, 0, LockFlags.None).WriteRange(vertexArray);\n                                m_vertexBuffer.Unlock();\n                                m_vertexBuffer.Tag = this;\n                            }\n                            else\n                            {\n                                MyVertexFormatPositionNormalTextureTangentBinormal[] vertexArray = new MyVertexFormatPositionNormalTextureTangentBinormal[GetVerticesCount()];\n                                for (int i = 0; i < GetVerticesCount(); i++)\n                                {\n#if PACKED_VERTEX_FORMAT\n                                    vertexArray[i].PositionPacked = m_vertices[i].Position;\n                                    vertexArray[i].NormalPacked = m_vertices[i].Normal;\n                                    vertexArray[i].TexCoordPacked = m_forLoadingTexCoords0[i];\n                                    vertexArray[i].BinormalPacked = m_forLoadingBinormals[i];\n                                    vertexArray[i].TangentPacked = m_forLoadingTangents[i];\n#else\n                                    vertexArray[i].Position = m_vertices[i].Position;\n                                    vertexArray[i].Normal = m_vertices[i].Normal;\n                                    vertexArray[i].TexCoord = m_forLoadingTexCoords0[i];\n                                    vertexArray[i].Binormal = m_forLoadingBinormals[i];\n                                    vertexArray[i].Tangent = m_forLoadingTangents[i];\n#endif\n                                }\n\n                                m_vertexDeclaration = MyVertexFormatPositionNormalTextureTangentBinormal.VertexDeclaration;\n                                m_vertexStride = MyVertexFormatPositionNormalTextureTangentBinormal.Stride;\n                                m_vertexBufferSize = vertexArray.Length * m_vertexStride;\n                                m_vertexBuffer = new VertexBuffer(MyMinerGame.Static.GraphicsDevice, m_vertexBufferSize, Usage.WriteOnly, VertexFormat.None, Pool.Default);\n                                m_vertexBuffer.Lock(0, 0, LockFlags.None).WriteRange(vertexArray);\n                                m_vertexBuffer.Unlock();\n                                m_vertexBuffer.Tag = this;\n                            }\n                        }\n                        else\n                        {\n                            if (UseChannels)\n                            {\n                                MyVertexFormatPositionNormalTextureMask[] vertexArray = new MyVertexFormatPositionNormalTextureMask[GetVerticesCount()];\n                                for (int i = 0; i < GetVerticesCount(); i++)\n                                {\n#if PACKED_VERTEX_FORMAT\n                                    vertexArray[i].PositionPacked = m_vertices[i].Position;\n                                    vertexArray[i].NormalPacked = m_vertices[i].Normal;\n                                    vertexArray[i].TexCoordPacked = m_forLoadingTexCoords0[i];\n                                    vertexArray[i].MaskCoordPacked = m_forLoadingTexCoords1[i];\n#else\n                                    vertexArray[i].Position = m_vertices[i].Position;\n                                    vertexArray[i].Normal = m_vertices[i].Normal;\n                                    vertexArray[i].TexCoord = m_forLoadingTexCoords0[i];\n                                    vertexArray[i].MaskCoord = m_forLoadingTexCoords1[i];\n#endif\n                                }\n\n                                m_vertexDeclaration = MyVertexFormatPositionNormalTextureMask.VertexDeclaration;\n                                m_vertexStride = MyVertexFormatPositionNormalTextureMask.Stride;\n                                m_vertexBufferSize = vertexArray.Length * m_vertexStride;\n                                m_vertexBuffer = new VertexBuffer(MyMinerGame.Static.GraphicsDevice, m_vertexBufferSize, Usage.WriteOnly, VertexFormat.None, Pool.Default);\n                                m_vertexBuffer.Lock(0, 0, LockFlags.None).WriteRange(vertexArray);\n                                m_vertexBuffer.Unlock();\n                                m_vertexBuffer.Tag = this;\n                            }\n                            else\n                            {\n                                MyVertexFormatPositionNormalTexture[] vertexArray = new MyVertexFormatPositionNormalTexture[GetVerticesCount()];\n                                for (int i = 0; i < GetVerticesCount(); i++)\n                                {\n                                    vertexArray[i].Position = GetVertexInt(i);\n                                    vertexArray[i].Normal = GetVertexNormal(i);\n#if PACKED_VERTEX_FORMAT\n                                    vertexArray[i].TexCoord = m_forLoadingTexCoords0[i].ToVector2();\n#else\n                                    vertexArray[i].TexCoord = m_forLoadingTexCoords0[i];\n#endif\n                                }\n\n                                m_vertexDeclaration = MyVertexFormatPositionNormalTexture.VertexDeclaration;\n                                m_vertexStride = MyVertexFormatPositionNormalTexture.Stride;\n                                m_vertexBufferSize = vertexArray.Length * m_vertexStride;\n                                m_vertexBuffer = new VertexBuffer(MyMinerGame.Static.GraphicsDevice, m_vertexBufferSize, Usage.WriteOnly , VertexFormat.None, Pool.Default);\n                                m_vertexBuffer.Lock(0, 0, LockFlags.None).WriteRange(vertexArray);\n                                m_vertexBuffer.Unlock();\n                                m_vertexBuffer.Tag = this;\n                            }\n                        }\n                    }\n                    break;\n\n                case MyMeshDrawTechnique.VOXELS_DEBRIS:\n                case MyMeshDrawTechnique.VOXELS_STATIC_ASTEROID:\n                    {\n                        MyVertexFormatPositionNormal[] vertexArray = new MyVertexFormatPositionNormal[GetVerticesCount()];\n                        for (int i = 0; i < GetVerticesCount(); i++)\n                        {\n                            vertexArray[i].Position = GetVertexInt(i);\n                            vertexArray[i].Normal = GetVertexNormal(i);\n                        }\n\n                        m_vertexDeclaration = MyVertexFormatPositionNormal.VertexDeclaration;\n                        m_vertexStride = MyVertexFormatPositionNormal.Stride;\n                        m_vertexBufferSize = vertexArray.Length * m_vertexStride;\n                        m_vertexBuffer = new VertexBuffer(MyMinerGame.Static.GraphicsDevice, m_vertexBufferSize, Usage.WriteOnly, VertexFormat.None, Pool.Default);\n                        m_vertexBuffer.Lock(0, 0, LockFlags.None).WriteRange(vertexArray);\n                        m_vertexBuffer.Unlock();\n                        m_vertexBuffer.Tag = this;\n                    }\n                    break;\n                default:\n                    {\n                        throw new MyMwcExceptionApplicationShouldNotGetHere();\n                    }\n            }\n\n            MyPerformanceCounter.PerAppLifetime.ModelVertexBuffersSize += m_vertexBufferSize;\n\n            SignResource(m_vertexBuffer);\n        }\n\n        void CreateIndexBuffer()\n        {\n            MyCommonDebugUtils.AssertDebug(m_indexBuffer == null);\n\n            if (m_Indicies != null)\n            {\n                m_indexBuffer = new IndexBuffer(MyMinerGame.Static.GraphicsDevice, m_Indicies.Length * sizeof(int), Usage.WriteOnly, Pool.Default, false);\n                m_indexBuffer.Lock(0, 0, LockFlags.None).WriteRange(m_Indicies);\n                m_indexBuffer.Unlock();\n                m_indexBuffer.Tag = this;\n                m_indexBufferSize = m_Indicies.Length * sizeof(int);\n            }\n            else if (m_Indicies_16bit != null)\n            {\n                m_indexBuffer = new IndexBuffer(MyMinerGame.Static.GraphicsDevice, m_Indicies_16bit.Length * sizeof(short), Usage.WriteOnly, Pool.Default, true);\n                m_indexBuffer.Lock(0, 0, LockFlags.None).WriteRange(m_Indicies_16bit);\n                m_indexBuffer.Unlock();\n                m_indexBuffer.Tag = this;\n                m_indexBufferSize = m_Indicies_16bit.Length * sizeof(short);\n            }\n\n            MyPerformanceCounter.PerAppLifetime.ModelIndexBuffersSize += m_indexBufferSize;\n\n            SignResource(m_indexBuffer);\n        }\n\n        /// <summary>\n        /// Signs the resource.\n        /// </summary>\n        /// <param name=\"indexBuffer\">The index buffer.</param>\n        [Conditional(\"DEBUG\")]\n        private void SignResource(IndexBuffer indexBuffer)\n        {\n            indexBuffer.DebugName = m_assetName + \"_ib\";\n        }\n\n        bool IsMeshGoingToBeAddedIntoTrianglesArray(MyMesh mesh)\n        {\n            return MyMeshPartInfo.IsPhysical(mesh.Materials[0].DrawTechnique);\n        }\n\n        int GetNumberOfTrianglesForColDet()\n        {\n            int trianglesCount = 0;\n            foreach (MyMesh mesh in m_meshContainer)\n            {\n                if (IsMeshGoingToBeAddedIntoTrianglesArray(mesh))\n                {\n                    trianglesCount += mesh.TriCount;\n                }\n            }\n            return trianglesCount;\n        }\n\n        void CopyTriangleIndices()\n        {\n            Triangles = new MyTriangleVertexIndices[GetNumberOfTrianglesForColDet()];\n            int triangleIndex = 0;\n\n            foreach (MyMesh mesh in m_meshContainer)\n            {\n                if (IsMeshGoingToBeAddedIntoTrianglesArray(mesh))\n                {\n                    if (m_Indicies != null)\n                    {\n                        for (int i = 0; i < mesh.TriCount; i++)\n                        {\n                            //  Notice we swap indices. It's because XNA's clock-wise rule probably differs from FBX's, and JigLib needs it in this order.\n                            //  But because of this, I did similar swaping in my col/det functions\n                            Triangles[triangleIndex] = new MyTriangleVertexIndices(m_Indicies[mesh.IndexStart + i * 3 + 0], m_Indicies[mesh.IndexStart + i * 3 + 2], m_Indicies[mesh.IndexStart + i * 3 + 1]);\n                            triangleIndex++;\n                        }\n                    }\n                    else if (m_Indicies_16bit != null)\n                    {\n                        for (int i = 0; i < mesh.TriCount; i++)\n                        {\n                            //  Notice we swap indices. It's because XNA's clock-wise rule probably differs from FBX's, and JigLib needs it in this order.\n                            //  But because of this, I did similar swaping in my col/det functions\n                            Triangles[triangleIndex] = new MyTriangleVertexIndices(m_Indicies_16bit[mesh.IndexStart + i * 3 + 0], m_Indicies_16bit[mesh.IndexStart + i * 3 + 2], m_Indicies_16bit[mesh.IndexStart + i * 3 + 1]);\n                            triangleIndex++;\n                        }\n                    }\n                    else throw new MyMwcExceptionApplicationShouldNotGetHere(); // Neither 32bit or 16bit indices are set, probably already called mesh.DisposeIndices()\n                }\n            }\n\n            // No need to store indices anymore\n            //m_Indicies = null;\n            //m_Indicies_16bit = null;\n\n            //  Validate this new array, if size is correct and if all indices are OK\n            MyCommonDebugUtils.AssertDebug(triangleIndex == Triangles.Length);\n            foreach (MyTriangleVertexIndices triangle in Triangles)\n            {\n                MyCommonDebugUtils.AssertDebug(triangle.I0 != triangle.I1);\n                MyCommonDebugUtils.AssertDebug(triangle.I1 != triangle.I2);\n                MyCommonDebugUtils.AssertDebug(triangle.I2 != triangle.I0);\n                MyCommonDebugUtils.AssertDebug((triangle.I0 >= 0) && (triangle.I0 < GetVerticesCount()));\n                MyCommonDebugUtils.AssertDebug((triangle.I1 >= 0) && (triangle.I1 < GetVerticesCount()));\n                MyCommonDebugUtils.AssertDebug((triangle.I2 >= 0) && (triangle.I2 < GetVerticesCount()));\n            }\n        }\n\n\n        private void UnloadTemporaryData()\n        {\n            m_forLoadingTexCoords0 = null;\n            m_forLoadingTexCoords1 = null;\n            m_forLoadingBinormals = null;\n            m_forLoadingTangents = null;\n        }\n\n        public bool UnloadData()\n        {\n            if (m_loadedContent)\n                UnloadContent();\n\n            UnloadTemporaryData();\n\n            bool res = m_loadedData;\n            m_loadedData = false;\n            if (m_bvh != null)\n            {\n                m_bvh.Close();\n                m_bvh = null;\n            }\n            LoadState = Managers.LoadState.Unloaded;\n\n            MyPerformanceCounter.PerAppLifetime.MyModelsMeshesCount -= m_meshContainer.Count;\n            if (m_vertices != null)\n                MyPerformanceCounter.PerAppLifetime.MyModelsVertexesCount -= GetVerticesCount();\n            if (Triangles != null)\n                MyPerformanceCounter.PerAppLifetime.MyModelsTrianglesCount -= Triangles.Length;\n            if (res)\n                MyPerformanceCounter.PerAppLifetime.MyModelsCount--;\n\n            m_vertices = null;\n            Triangles = null;\n            m_meshContainer.Clear();\n            m_Indicies_16bit = null;\n            m_Indicies = null;\n\n            return res;\n        }\n\n        public void UnloadContent()\n        {\n            //MyPerformanceCounter.PerAppLifetime.MyModelsCount--;\n\n            if (m_vertexBuffer != null)\n            {\n                m_vertexBuffer.Dispose();\n                m_vertexBuffer = null;\n                MyPerformanceCounter.PerAppLifetime.ModelVertexBuffersSize -= m_vertexBufferSize;\n                m_vertexBufferSize = 0;\n            }\n\n            if (m_indexBuffer != null)\n            {\n                m_indexBuffer.Dispose();\n                m_indexBuffer = null;\n                MyPerformanceCounter.PerAppLifetime.ModelIndexBuffersSize -= m_indexBufferSize;\n                m_indexBufferSize = 0;\n            }\n\n            LoadState = Managers.LoadState.Unloaded;\n\n            //foreach (MyMesh mesh in m_meshContainer)\n            //{\n            //    mesh.DisposeBuffers();  //index\n            //}\n\n            //m_meshContainer.Clear();// added for LoadContent purpose this will cause whole mesh to reload\n\n            m_loadedContent = false;\n        }\n\n        public MyModelsEnum GetModelEnum()\n        {\n            return ModelEnum;\n        }\n\n        public IMyTriangePruningStructure GetTrianglePruningStructure()\n        {\n            Debug.Assert(m_bvh != null, \"BVH should be loaded from content processor\");\n            return m_bvh;\n        }\n\n        public void GetTriangleBoundingBox(int triangleIndex, ref BoundingBox boundingBox)\n        {\n            boundingBox = BoundingBoxHelper.InitialBox;\n            Vector3 v1, v2, v3;\n            GetVertex(Triangles[triangleIndex].I0, Triangles[triangleIndex].I1, Triangles[triangleIndex].I2, out v1, out v2, out v3);\n\n            BoundingBoxHelper.AddTriangle(ref boundingBox, \n                v1, \n                v2, \n                v3);\n        }\n\n        public int GetTrianglesCount()\n        {\n            return m_trianglesCount;\n        }\n\n        public int GetVerticesCount()\n        {\n            return m_verticesCount;\n        }\n\n        public int GetBVHSize()\n        {\n            return m_bvh != null ? m_bvh.Size : 0;\n        }\n\n        public MyMeshDrawTechnique GetDrawTechnique()\n        {\n            return m_drawTechnique;\n        }\n\n        public void SetDrawTechnique(MyMeshDrawTechnique drawTechnique)\n        {\n            m_drawTechnique = drawTechnique;\n        }\n\n        public float GetSpecularShininess()\n        {\n            return m_specularShininess;\n        }\n\n        public float GetSpecularPower()\n        {\n            return m_specularPower;\n        }\n\n        public float GetRescaleFactor()\n        {\n            return m_rescaleFactor;\n        }\n              \n\n        /// <summary>\n        /// Render\n        /// </summary>\n        /// <param name=\"effect\"></param>\n        public void Render()\n        {\n            Device device = MyMinerGame.Static.GraphicsDevice;\n            device.SetStreamSource(0, m_vertexBuffer, 0, m_vertexStride);\n            device.Indices = m_indexBuffer;\n            device.VertexDeclaration = GetVertexDeclaration();\n\n            foreach (MyMesh mesh in m_meshContainer)\n            {\n                mesh.Render(device, m_verticesCount);\n            }\n        }\n\n        /// <summary>\n        /// Dispose\n        /// </summary>\n        public void Dispose()\n        {\n            m_meshContainer.Clear();\n            m_vertexBuffer.Dispose();\n            m_vertexBuffer = null;\n            MyPerformanceCounter.PerAppLifetime.ModelVertexBuffersSize -= m_vertexBufferSize;\n            m_vertexBufferSize = 0;\n\n            m_indexBuffer.Dispose();\n            m_indexBuffer = null;\n            MyPerformanceCounter.PerAppLifetime.ModelIndexBuffersSize -= m_indexBufferSize;\n            m_indexBufferSize = 0;\n        }\n\n        /// <summary>\n        /// File path of the model\n        /// </summary>\n        internal string AssetName\n        {\n            get { return m_assetName; }\n        }\n\n        internal VertexBuffer VertexBuffer\n        {\n            get { return m_vertexBuffer; }\n        }\n\n        internal IndexBuffer IndexBuffer\n        {\n            get { return m_indexBuffer; }\n        }\n\n        /// <summary>\n        /// Signs the resource.\n        /// </summary>\n        /// <param name=\"vertexBuffer\">The vertex buffer.</param>\n        [Conditional(\"DEBUG\")]\n        private void SignResource(VertexBuffer vertexBuffer)\n        {\n            vertexBuffer.DebugName = m_assetName + \"_vb\";\n        }\n\n        //  Load only snappoints.\n        public void LoadOnlyDummies()\n        {\n            if (!m_loadedData)\n            {\n                MyMwcLog.WriteLine(\"MyModel.LoadSnapPoints -> START\", LoggingOptions.LOADING_MODELS);\n                MyMwcLog.IncreaseIndent(LoggingOptions.LOADING_MODELS);\n\n                MyMwcLog.WriteLine(\"m_assetName: \" + m_assetName, LoggingOptions.LOADING_MODELS);\n\n                //  Read data from model TAG parameter. There are stored vertex positions, triangle indices, vectors, ... everything we need.\n                string absFilePath = Directory.GetCurrentDirectory() + \"\\\\Content\\\\\" + m_assetName + \".mwm\";\n\n                MyModelExporter exporter = new MyModelExporter();\n\n                MyMwcLog.WriteLine(String.Format(\"Importing asset {0}, path: {1}\", m_assetName, absFilePath), LoggingOptions.LOADING_MODELS);\n\n                // Read only TAG_DUMMIES data\n                SortedSet<string> tags = new SortedSet<string>();\n                tags.Add(MyImporterConstants.TAG_DUMMIES);\n\n                try\n                {\n                    exporter.ImportCustomData(absFilePath, tags);\n                }\n                catch (Exception e)\n                {\n                    MyMwcLog.WriteLine(String.Format(\"Importing asset failed {0}, message: {1}, stack:{2}\", m_assetName, e.Message, e.StackTrace));\n                }\n\n                Dictionary<string, object> tagData = exporter.GetTagData();\n                //if (tagData.Count == 0)\n                //{\n                //    throw new Exception(String.Format(\"Uncompleted tagData for asset: {0}, path: {1}\", m_assetName, absFilePath));\n                //}\n\n                //Dummies = tagData[MyImporterConstants.TAG_DUMMIES] as Dictionary<string, MyModelDummy>;\n                if (tagData.Count > 0)\n                {\n                    Dummies = tagData[MyImporterConstants.TAG_DUMMIES] as Dictionary<string, MyModelDummy>;\n                }\n                else\n                {\n                    Dummies = new Dictionary<string, MyModelDummy>();\n                }\n            }\n        }\n\n        //  Load only snappoints.\n        public void LoadOnlyModelInfo()\n        {\n            if (!m_loadedData)\n            {\n                MyMwcLog.WriteLine(\"MyModel.LoadModelData -> START\", LoggingOptions.LOADING_MODELS);\n                MyMwcLog.IncreaseIndent(LoggingOptions.LOADING_MODELS);\n\n                MyMwcLog.WriteLine(\"m_assetName: \" + m_assetName, LoggingOptions.LOADING_MODELS);\n\n                //  Read data from model TAG parameter. There are stored vertex positions, triangle indices, vectors, ... everything we need.\n                string absFilePath = Directory.GetCurrentDirectory() + \"\\\\Content\\\\\" + m_assetName + \".mwm\";\n\n                MyModelExporter exporter = new MyModelExporter();\n\n                MyMwcLog.WriteLine(String.Format(\"Importing asset {0}, path: {1}\", m_assetName, absFilePath), LoggingOptions.LOADING_MODELS);\n\n                // Read only TAG_DUMMIES data\n                SortedSet<string> tags = new SortedSet<string>();\n                tags.Add(MyImporterConstants.TAG_MODEL_INFO);\n\n                try\n                {\n                    exporter.ImportCustomData(absFilePath, tags);\n                }\n                catch (Exception e)\n                {\n                    MyMwcLog.WriteLine(String.Format(\"Importing asset failed {0}, message: {1}, stack:{2}\", m_assetName, e.Message, e.StackTrace));\n                }\n\n                Dictionary<string, object> tagData = exporter.GetTagData();\n\n                if (tagData.Count > 0)\n                {\n                    ModelInfo = tagData[MyImporterConstants.TAG_MODEL_INFO] as MyModelInfo;\n                }\n                else\n                {\n                    ModelInfo = new MyModelInfo(0, 0, Vector3.Zero);\n                }\n            }\n        }\n\n        void IPrimitiveManagerBase.Cleanup()\n        {\n            //throw new NotImplementedException();\n        }\n\n        bool IPrimitiveManagerBase.IsTrimesh()\n        {\n            return true;\n            //throw new NotImplementedException();\n        }\n\n        int IPrimitiveManagerBase.GetPrimitiveCount()\n        {\n            return this.m_trianglesCount;\n            //throw new NotImplementedException();\n        }\n\n        void IPrimitiveManagerBase.GetPrimitiveBox(int prim_index, out AABB primbox)\n        {\n            BoundingBox bbox = BoundingBoxHelper.InitialBox;\n            Vector3 v1 = GetVertex(Triangles[prim_index].I0);\n            Vector3 v2 = GetVertex(Triangles[prim_index].I1);\n            Vector3 v3 = GetVertex(Triangles[prim_index].I2);\n            BoundingBoxHelper.AddTriangle(ref bbox,\n                ref v1,\n                ref v2,\n                ref v3);\n\n            primbox = new AABB() { m_min = bbox.Min, m_max = bbox.Max };\n        }\n\n        void IPrimitiveManagerBase.GetPrimitiveTriangle(int prim_index, PrimitiveTriangle triangle)\n        {\n            triangle.m_vertices[0] = GetVertex(Triangles[prim_index].I0);\n            triangle.m_vertices[1] = GetVertex(Triangles[prim_index].I1);\n            triangle.m_vertices[2] = GetVertex(Triangles[prim_index].I2);\n        }\n\n        public void PreloadTextures(LoadingMode loadingMode, int materialIndex = -1)\n        {\n            foreach (MyMesh mesh in GetMeshList())\n            {\n                if (materialIndex == -1)\n                    mesh.Materials[0].PreloadTexture(loadingMode);\n                else\n                    mesh.Materials[materialIndex].PreloadTexture(loadingMode);\n            }\n        }        \n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Models/MyModelObj .cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing MinerWarsMath;\nusing System.IO;\nusing System.Text.RegularExpressions;\nusing System.Globalization;\nusing MinerWars.AppCode.Physics;\n\n//  Class for loading OBJ files (3d models).\n\n//  Caller of this method must check if exception occur during calling this constructor. Just place it in try/catch.\n//  This class will dispose/close its internal objects itself so nothing will be handing around after an exception.\n\nnamespace MinerWars.AppCode.Game.Models\n{\n    class MyModelObj\n    {\n        public List<Vector3> Vertexes;\n        public List<Vector3> Normals;\n        public List<MyTriangleVertexIndices> Triangles;\n\n        public MyModelObj(string filename)\n        {\n            Vertexes = new List<Vector3>();\n            Normals = new List<Vector3>();\n            Triangles = new List<MyTriangleVertexIndices>();\n            // Loop over each tokenized line of the OBJ file\n            foreach (String[] lineTokens in GetLineTokens(filename))\n            {\n                ParseObjLine(lineTokens);\n            }\n        }\n\n        /// <summary>\n        /// Yields an array of tokens for each line in an OBJ or MTL file.\n        /// </summary>\n        /// <remarks>\n        /// OBJ and MTL files are text based formats of identical structure.\n        /// Each line of a OBJ or MTL file is either an instruction or a comment.\n        /// Comments begin with # and are effectively ignored.\n        /// Instructions are a space dilimited list of tokens. The first token is the\n        /// instruction type code. The tokens which follow, are the arguments to that\n        /// instruction. The number and format of arguments vary by instruction type.\n        /// </remarks>\n        /// <param name=\"filename\">Full path of file to read.</param>\n        /// <param name=\"identity\">Identity of the file being read. This is modified to\n        /// include the current line number in case an exception is thrown.</param>\n        /// <returns>Element 0 is the line type identifier. The remaining elements are\n        /// arguments to the identifier's operation.</returns>\n        private IEnumerable<string[]> GetLineTokens(string filename)\n        {\n            // Open the file\n            using (StreamReader reader = new StreamReader(filename))\n            {\n                int lineNumber = 1;\n\n                // For each line of the file\n                while (!reader.EndOfStream)\n                {\n                    // Tokenize line by splitting on 1 more more whitespace character\n                    string[] lineTokens = Regex.Split(reader.ReadLine().Trim(), @\"\\s+\");\n\n                    // Skip blank lines and comments\n                    if (lineTokens.Length > 0 &&\n                        lineTokens[0] != String.Empty &&\n                        !lineTokens[0].StartsWith(\"#\"))\n                    {\n                        // Pass off the tokens of this line to be processed\n                        yield return lineTokens;\n                    }\n\n                    // Done with this line!\n                    lineNumber++;\n                }\n            }\n        }\n\n        /// <summary>\n        /// Parses and executes an individual line of an OBJ file.\n        /// </summary>\n        /// <param name=\"lineTokens\">Line to parse as tokens</param>\n        private void ParseObjLine(string[] lineTokens)\n        {\n            // Switch by line type\n            switch (lineTokens[0].ToLower())\n            {\n                // Positions\n                case \"v\":\n                    Vertexes.Add(ParseVector3(lineTokens));\n                    break;\n                // Normals\n                case \"vn\":\n                    Normals.Add(ParseVector3(lineTokens));\n                    break;\n                // Faces\n                case \"f\":\n                    // For each triangle vertex\n                    int[] indices = new int[3];\n                    for (int vertexIndex = 1; vertexIndex <= 3; vertexIndex++)\n                    {\n                        string[] characters = lineTokens[vertexIndex].Split('/');\n                        if (characters.Length > 0)\n                            indices[vertexIndex-1] = int.Parse(characters[0], CultureInfo.InvariantCulture);\n                    }\n                    Triangles.Add(new MyTriangleVertexIndices(indices[0]-1,indices[1]-1,indices[2]-1));\n                    break;\n                // Unsupported or invalid line types\n                default:\n                    break;\n            }\n        }\n\n        /// <summary>\n        /// Parses a Vector3 from tokens of an OBJ file line.\n        /// </summary>\n        /// <param name=\"lineTokens\">X,Y and Z coordinates in lineTokens[1 through 3].\n        /// </param>\n        private static Vector3 ParseVector3(string[] lineTokens)\n        {\n            return new Vector3(\n                float.Parse(lineTokens[1], CultureInfo.InvariantCulture),\n                float.Parse(lineTokens[2], CultureInfo.InvariantCulture),\n                float.Parse(lineTokens[3], CultureInfo.InvariantCulture));\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Models/MyModelOctree.cs",
    "content": "﻿using System.Collections.Generic;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Managers;\nusing SysUtils.Utils;\nusing MinerWars.AppCode.Physics.Collisions;\n\n//  This octreee can be used with MyModel to optimize line intersections.\n//  The idea of octree is that we have root node that has eight child nodes (by splitting the parent to eight boxes).\n//  When building the octree, we check if triangleVertexes can fully fit inside of any child. If yes, we add it to that\n//  child, but we also check if we can't fit the triangleVertexes into child's child...etc.\n//  So some triangles (especially large) will be in root node, some in child nodes, some child nodes will be empty, etc.\n\nnamespace MinerWars.AppCode.Game.Models\n{\n    //  This class represents whole octree structure (it is the root you can use to access content of a octree)\n    class MyModelOctree : IMyTriangePruningStructure\n    {\n        MyModel m_model;\n        MyModelOctreeNode m_rootNode;\n\n        //  We don't support default constructor for this class\n        private MyModelOctree() { }\n\n        //  Use this constructor to build the octree\n        public MyModelOctree(MyModel model)\n        {\n            // we can't use performance timer, because octree now loaded in parallel tasks\n            //MyPerformanceTimer.OctreeBuilding.Start();\n\n            m_model = model;\n\n            //  Bounding box for the root node - get it from model (we need to trust the model that it will be good)\n            m_rootNode = new MyModelOctreeNode(model.BoundingBox);            \n\n            //  Add model triangles into octree\n            for (int i = 0; i < m_model.Triangles.Length; i++)\n            {\n                //  Add triangleVertexes to octree\n                m_rootNode.AddTriangle(model, i, 0);\n            }\n\n            //  This method will look if node has all its childs null, and if yes, destroy childs array (saving memory + making traversal faster, because we don't need to traverse whole array)\n            m_rootNode.OptimizeChilds();\n\n            // we can't use performance timer, because octree now loaded in parallel tasks\n            //MyPerformanceTimer.OctreeBuilding.End();\n        }\n\n        //  Calculates intersection of line with any triangleVertexes in this model. Closest intersection and intersected triangleVertexes will be returned.\n        //  This method is fast, it uses octree.\n        public MyIntersectionResultLineTriangleEx? GetIntersectionWithLine(MyEntity physObject, ref MyLine line, IntersectionFlags flags)\n        {\n            BoundingSphere vol = physObject.WorldVolume;\n            //  Check if line intersects phys object's current bounding sphere, and if not, return 'no intersection'\n            if (MyUtils.IsLineIntersectingBoundingSphere(ref line, ref vol) == false) return null;\n\n            //  Transform line into 'model instance' local/object space. Bounding box of a line is needed!!\n            Matrix worldInv = physObject.GetWorldMatrixInverted();\n\n            return GetIntersectionWithLine(physObject, ref line, ref worldInv, flags);\n        }\n\n        public MyIntersectionResultLineTriangleEx? GetIntersectionWithLine(MyEntity physObject, ref MyLine line, ref Matrix customInvMatrix, IntersectionFlags flags)\n        {\n            MyLine lineInModelSpace = new MyLine(MyUtils.GetTransform(line.From, ref customInvMatrix), MyUtils.GetTransform(line.To, ref customInvMatrix), true);\n\n            MyIntersectionResultLineTriangleEx? ret = m_rootNode.GetIntersectionWithLine(physObject, m_model, ref lineInModelSpace, null, flags);\n\n            return ret;\n        }\n\n        //  Return list of triangles intersecting specified sphere. Angle between every triangleVertexes normal vector and 'referenceNormalVector'\n        //  is calculated, and if more than 'maxAngle', we ignore such triangleVertexes.\n        //  Triangles are returned in 'retTriangles', and this list must be preallocated!\n        //  IMPORTANT: Sphere must be in model space, so don't transform it!\n        public void GetTrianglesIntersectingSphere(ref BoundingSphere sphere, Vector3? referenceNormalVector, float? maxAngle, List<MyTriangle_Vertex_Normals> retTriangles, int maxNeighbourTriangles)\n        {\n            m_rootNode.GetTrianglesIntersectingSphere(m_model, ref sphere, referenceNormalVector, maxAngle, retTriangles, maxNeighbourTriangles);\n        }\n\n        //  Return true if object intersects specified sphere.\n        //  This method doesn't return exact point of intersection or any additional data.\n        //  We don't look for closest intersection - so we stop on first intersection found.\n        public bool GetIntersectionWithSphere(MyEntity physObject, ref BoundingSphere sphere)\n        {\n            //  Transform sphere from world space to object space\n            Matrix worldInv = physObject.GetWorldMatrixInverted();\n            Vector3 positionInObjectSpace = MyUtils.GetTransform(sphere.Center, ref worldInv);\n            BoundingSphere sphereInObjectSpace = new BoundingSphere(positionInObjectSpace, sphere.Radius);\n            \n            return m_rootNode.GetIntersectionWithSphere(m_model, ref sphereInObjectSpace);\n        }\n\n        //  Return list of triangles intersecting specified sphere. Angle between every triangleVertexes normal vector and 'referenceNormalVector'\n        //  is calculated, and if more than 'maxAngle', we ignore such triangleVertexes.\n        //  Triangles are returned in 'retTriangles', and this list must be preallocated!\n        //  IMPORTANT: Sphere must be in model space, so don't transform it!\n        public void GetTrianglesIntersectingSphere(ref BoundingSphere sphere, List<MyTriangle_Vertex_Normal> retTriangles, int maxNeighbourTriangles)\n        {\n            m_rootNode.GetTrianglesIntersectingSphere(m_model , ref sphere, null, null, retTriangles, maxNeighbourTriangles);\n        }\n\n        public void GetTrianglesIntersectingAABB(ref BoundingBox box, List<MyTriangle_Vertex_Normal> retTriangles, int maxNeighbourTriangles)\n        {\n            System.Diagnostics.Debug.Assert(false, \"Not implemented\");\n            //m_rootNode.ge .GetTrianglesIntersectingSphere(m_model, ref box, null, null, retTriangles, maxNeighbourTriangles);\n        }\n\n        public void Close()\n        {\n        }\n\n        public int Size\n        {\n            get\n            {\n                System.Diagnostics.Debug.Assert(false, \"Not implemented\");\n                return 0;\n            }\n        }\n\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Models/MyModelOctreeNode.cs",
    "content": "﻿using System.Collections.Generic;\nusing System.Diagnostics;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Physics;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils.Utils;\nusing MinerWars.AppCode.Physics.Collisions;\n\nnamespace MinerWars.AppCode.Game.Models\n{\n    //  This class represents one octree node\n    class MyModelOctreeNode\n    {\n        const int OCTREE_CHILDS_COUNT = 8;                      //  Each node has eight childs. This is the esence of octree, so don't change it.\n        const int MAX_RECURSIVE_LEVEL = 8;                      //  How deep in octree parent-child structure can we go.\n\n        /// <summary>\n        /// Expand child bounding boxex, expand by 30% on one side of each axis (child BB never get out of parents BB)\n        /// </summary>\n        const float CHILD_BOUNDING_BOX_EXPAND = 0.3f;\n\n        List<MyModelOctreeNode> m_childs;                           //  Reference to eight childs of this node\n        BoundingBox m_boundingBox;                              //  Node bounding box\n        BoundingBox m_realBoundingBox;\n        List<int> m_triangleIndices;                            //  List of triangles in this node (this are triangleVertexes indices, not vertex indices)\n        //byte m_currentLevel;                                    //  List level\n\n        //  We don't support default constructor for this class\n        private MyModelOctreeNode() { }\n\n        public MyModelOctreeNode(BoundingBox boundingBox) \n        {\n            //  Here we just allocate list of child nodes so during building octree it always has 8 childs. But after OptimizeChilds() it can be less.\n            m_childs = new List<MyModelOctreeNode>(OCTREE_CHILDS_COUNT);\n            for (int i = 0; i < OCTREE_CHILDS_COUNT; i++)\n            {\n                m_childs.Add(null);\n            }\n\n            m_boundingBox = boundingBox;\n            m_realBoundingBox = MyMath.CreateInvalidAABB();\n            m_triangleIndices = new List<int>();            \n        }\n\n        //  This method will look if node has all its childs null, and if yes, destroy childs array (saving memory + making traversal faster, because we don't need to traverse whole array)\n        public void OptimizeChilds()\n        {\n            // Current bounding box is real bounding box (calculated as bounding box of children and triangles)\n            m_boundingBox = m_realBoundingBox;\n\n            for (int i = 0; i < m_childs.Count; i++)\n            {\n                if (m_childs[i] != null)\n                {\n                    m_childs[i].OptimizeChilds();\n                }\n            }\n\n            //  Remove all childs that are null, thus empty for us\n            while (m_childs.Remove(null) == true)\n            {\n            }\n\n            // When has only one child\n            while (m_childs != null && m_childs.Count == 1)\n            {\n                // Add child triangles to self\n                foreach (var t in m_childs[0].m_triangleIndices)\n                {\n                    m_triangleIndices.Add(t);\n                }\n\n                // Replace current child with children of current child\n                m_childs = m_childs[0].m_childs;\n            }\n\n            //  If all childs are empty, we set this list to null so we save few value\n            if (m_childs != null && m_childs.Count == 0) m_childs = null;\n        }\n\n        //  Difference between GetIntersectionWithLine and GetIntersectionWithLineRecursive is that the later doesn't calculate\n        //  final result, but is better suited for recursive nature of octree. Don't call GetIntersectionWithLineRecursive() from\n        //  the outisde of this class, it's private method.\n        public MyIntersectionResultLineTriangleEx? GetIntersectionWithLine(MyEntity physObject, MyModel model, ref MyLine line, float? minDistanceUntilNow, IntersectionFlags flags)\n        {\n            MyIntersectionResultLineTriangle? foundTriangle = GetIntersectionWithLineRecursive(model, ref line, minDistanceUntilNow);\n\n            if (foundTriangle != null)\n            {\n                return new MyIntersectionResultLineTriangleEx(foundTriangle.Value, physObject, ref line);\n            }\n            else\n            {\n                return null;\n            }\n        }\n\n        //  Finds intersection between line and model, using octree for speedup the lookup.\n        //  Another speedup is, that first we check triangles that are directly in the node and then start\n        //  checking node's childs. But only if child node instersection is less than last know min distance.\n        MyIntersectionResultLineTriangle? GetIntersectionWithLineRecursive(MyModel model, ref MyLine line, float? minDistanceUntilNow)\n        {\n            //  Check if line intersects bounding box of this node and if distance to bounding box is less then last know min distance\n            float? distanceToBoundingBox = MyUtils.GetLineBoundingBoxIntersection(ref line, ref m_boundingBox);\n            if ((distanceToBoundingBox.HasValue == false) || ((minDistanceUntilNow != null) && (minDistanceUntilNow < distanceToBoundingBox.Value))) return null;\n\n            //  Triangles that are directly in this node\n            MyIntersectionResultLineTriangle? foundIntersection = null;\n\n            // temporary variable for storing tirngle boundingbox info\n            BoundingBox triangleBoundingBox = new BoundingBox();\n\n            MinerWars.AppCode.Game.Managers.MyPerformanceCounter.PerCameraDraw.RayCastTrianglesProcessed += m_triangleIndices.Count;\n\n            for (int i = 0; i < m_triangleIndices.Count; i++)\n            {\n                int triangleIndex = m_triangleIndices[i];\n\n                model.GetTriangleBoundingBox(triangleIndex, ref triangleBoundingBox);\n\n                //  First test intersection of triangleVertexes's bounding box with line's bounding box. And only if they overlap or intersect, do further intersection tests.\n                if (MyUtils.IsBoxIntersectingBox(triangleBoundingBox, ref line.BoundingBox) == true)\n                {\n                    //  See that we swaped vertex indices!!\n                    MyTriangle_Vertexes triangle;\n                    MyTriangleVertexIndices triangleIndices = model.Triangles[triangleIndex];\n                    triangle.Vertex0 = model.GetVertex(triangleIndices.I0);\n                    triangle.Vertex1 = model.GetVertex(triangleIndices.I2);\n                    triangle.Vertex2 = model.GetVertex(triangleIndices.I1);\n\n                    float? distance = MyUtils.GetLineTriangleIntersection(ref line, ref triangle);\n\n                    //  If intersection occured and if distance to intersection is closer to origin than any previous intersection\n                    if ((distance != null) && ((foundIntersection == null) || (distance.Value < foundIntersection.Value.Distance)))\n                    {\n                        Vector3 calculatedTriangleNormal = MyUtils.GetNormalVectorFromTriangle(ref triangle);\n\n                        //  We need to remember original triangleVertexes coordinates (not transformed by world matrix)\n                        foundIntersection = new MyIntersectionResultLineTriangle(ref triangle, ref calculatedTriangleNormal, distance.Value);\n                    }\n                }\n            }\n\n            //  Get intersection with childs of this node\n            if (m_childs != null)\n            {\n                for (int i = 0; i < m_childs.Count; i++)\n                {\n                    MyIntersectionResultLineTriangle? childIntersection = m_childs[i].GetIntersectionWithLineRecursive(model, ref line,\n                        (foundIntersection == null) ? (float?)null : foundIntersection.Value.Distance);\n\n                    //  If intersection occured and if distance to intersection is closer to origin than any previous intersection\n                    foundIntersection = MyIntersectionResultLineTriangle.GetCloserIntersection(ref foundIntersection, ref childIntersection);\n                }\n            }\n\n            return foundIntersection;\n        }\n\n        //  Return list of triangles intersecting specified sphere. Angle between every triangleVertexes normal vector and 'referenceNormalVector' \n        //  is calculated, and if more than 'maxAngle', we ignore such triangleVertexes.\n        //  Triangles are returned in 'retTriangles', and this list must be preallocated!\n        //  IMPORTANT: Sphere must be in model space, so don't transform it!\n        public void GetTrianglesIntersectingSphere(MyModel model, ref BoundingSphere sphere, Vector3? referenceNormalVector, float? maxAngle, List<MyTriangle_Vertex_Normal> retTriangles, int maxNeighbourTriangles)\n        {\n            //  Check if sphere intersects bounding box of this node\n            //if (m_boundingBox.Contains(sphere) == ContainmentType.Disjoint) return;\n            if (MyUtils.IsBoxIntersectingSphere(ref m_boundingBox, ref sphere) == false) return;\n\n            // temporary variable for storing tirngle boundingbox info\n            BoundingBox triangleBoundingBox = new BoundingBox();\n\n            //  Triangles that are directly in this node\n            for (int i = 0; i < m_triangleIndices.Count; i++)\n            {\n                //  If we reached end of the buffer of neighbour triangles, we stop adding new ones. This is better behavior than throwing exception because of array overflow.\n                if (retTriangles.Count == maxNeighbourTriangles) return;\n\n                int triangleIndex = m_triangleIndices[i];\n\n                model.GetTriangleBoundingBox(triangleIndex, ref triangleBoundingBox);\n\n                //  First test intersection of triangleVertexes's bounding box with bounding sphere. And only if they overlap or intersect, do further intersection tests.\n                if (MyUtils.IsBoxIntersectingSphere(triangleBoundingBox, ref sphere) == true)\n                {\n                    //if (m_triangleIndices[value] != ignoreTriangleWithIndex)\n                    {\n                        //  See that we swaped vertex indices!!\n                        MyTriangle_Vertexes triangle;\n\n                        MyTriangleVertexIndices triangleIndices = model.Triangles[triangleIndex];\n                        triangle.Vertex0 = model.GetVertex(triangleIndices.I0);\n                        triangle.Vertex1 = model.GetVertex(triangleIndices.I2);\n                        triangle.Vertex2 = model.GetVertex(triangleIndices.I1);\n                        Vector3 calculatedTriangleNormal = MyUtils.GetNormalVectorFromTriangle(ref triangle);\n\n                        MyPlane trianglePlane = new MyPlane(ref triangle);\n\n                        if (MyUtils.GetSphereTriangleIntersection(ref sphere, ref trianglePlane, ref triangle) != null)\n                        {\n                            Vector3 triangleNormal = MyUtils.GetNormalVectorFromTriangle(ref triangle);\n\n                            if ((referenceNormalVector.HasValue == false) || (maxAngle.HasValue == false) ||\n                                ((MyUtils.GetAngleBetweenVectors(referenceNormalVector.Value, triangleNormal) <= maxAngle)))\n                            {\n                                MyTriangle_Vertex_Normal retTriangle;\n                                retTriangle.Vertexes = triangle;\n                                retTriangle.Normal = calculatedTriangleNormal;\n\n                                retTriangles.Add(retTriangle);\n                            }\n                        }\n                    }\n                }\n            }\n\n            //  Get intersection with childs of this node\n            if (m_childs != null)\n            {\n                for (int i = 0; i < m_childs.Count; i++)\n                {\n                    //m_childs[value].GetTrianglesIntersectingSphere(physObject, ref sphere, referenceNormalVector, maxAngle, ignoreTriangleWithIndex, retTriangles, maxNeighbourTriangles);\n                    m_childs[i].GetTrianglesIntersectingSphere(model, ref sphere, referenceNormalVector, maxAngle, retTriangles, maxNeighbourTriangles);\n                }\n            }\n        }\n\n        public void GetTrianglesIntersectingSphere(MyModel model, ref BoundingSphere sphere, Vector3? referenceNormalVector, float? maxAngle, List<MyTriangle_Vertex_Normals> retTriangles, int maxNeighbourTriangles)\n        {\n            //  Check if sphere intersects bounding box of this node\n            //if (m_boundingBox.Contains(sphere) == ContainmentType.Disjoint) return;\n            if (MyUtils.IsBoxIntersectingSphere(ref m_boundingBox, ref sphere) == false) return;\n\n            // temporary variable for storing tirngle boundingbox info\n            BoundingBox triangleBoundingBox = new BoundingBox();\n\n            //  Triangles that are directly in this node\n            for (int i = 0; i < m_triangleIndices.Count; i++)\n            {\n                //  If we reached end of the buffer of neighbour triangles, we stop adding new ones. This is better behavior than throwing exception because of array overflow.\n                if (retTriangles.Count == maxNeighbourTriangles) return;\n\n                int triangleIndex = m_triangleIndices[i];\n\n                model.GetTriangleBoundingBox(triangleIndex, ref triangleBoundingBox);\n\n                //  First test intersection of triangleVertexes's bounding box with bounding sphere. And only if they overlap or intersect, do further intersection tests.\n                if (MyUtils.IsBoxIntersectingSphere(triangleBoundingBox, ref sphere) == true)\n                {\n                    //if (m_triangleIndices[value] != ignoreTriangleWithIndex)\n                    {\n                        //  See that we swaped vertex indices!!\n                        MyTriangle_Vertexes triangle;\n                        MyTriangle_Normals triangleNormals;\n                        MyTriangle_Normals triangleBinormals;\n                        MyTriangle_Normals triangleTangents;\n\n                        MyTriangleVertexIndices triangleIndices = model.Triangles[triangleIndex];\n                        triangle.Vertex0 = model.GetVertex(triangleIndices.I0);\n                        triangle.Vertex1 = model.GetVertex(triangleIndices.I2);\n                        triangle.Vertex2 = model.GetVertex(triangleIndices.I1);\n                        triangleNormals.Normal0 = model.GetVertexNormal(triangleIndices.I0);\n                        triangleNormals.Normal1 = model.GetVertexNormal(triangleIndices.I2);\n                        triangleNormals.Normal2 = model.GetVertexNormal(triangleIndices.I1);\n\n                        triangleBinormals.Normal0 = model.GetVertexBinormal(triangleIndices.I0);\n                        triangleBinormals.Normal1 = model.GetVertexBinormal(triangleIndices.I2);\n                        triangleBinormals.Normal2 = model.GetVertexBinormal(triangleIndices.I1);\n\n                        triangleTangents.Normal0 = model.GetVertexTangent(triangleIndices.I0);\n                        triangleTangents.Normal1 = model.GetVertexTangent(triangleIndices.I2);\n                        triangleTangents.Normal2 = model.GetVertexTangent(triangleIndices.I1);\n\n                        MyPlane trianglePlane = new MyPlane(ref triangle);\n\n                        if (MyUtils.GetSphereTriangleIntersection(ref sphere, ref trianglePlane, ref triangle) != null)\n                        {\n                            Vector3 triangleNormal = MyUtils.GetNormalVectorFromTriangle(ref triangle);\n\n                            if ((referenceNormalVector.HasValue == false) || (maxAngle.HasValue == false) ||\n                                ((MyUtils.GetAngleBetweenVectors(referenceNormalVector.Value, triangleNormal) <= maxAngle)))\n                            {\n                                MyTriangle_Vertex_Normals retTriangle;\n                                retTriangle.Vertexes = triangle;\n                                retTriangle.Normals = triangleNormals;\n                                retTriangle.Binormals = triangleBinormals;\n                                retTriangle.Tangents = triangleTangents;\n\n                                retTriangles.Add(retTriangle);\n                            }\n                        }\n                    }\n                }\n            }\n\n            //  Get intersection with childs of this node\n            if (m_childs != null)\n            {\n                for (int i = 0; i < m_childs.Count; i++)\n                {\n                    //m_childs[value].GetTrianglesIntersectingSphere(physObject, ref sphere, referenceNormalVector, maxAngle, ignoreTriangleWithIndex, retTriangles, maxNeighbourTriangles);\n                    m_childs[i].GetTrianglesIntersectingSphere(model, ref sphere, referenceNormalVector, maxAngle, retTriangles, maxNeighbourTriangles);\n                }\n            }\n        }\n\n        //  Return true if object intersects specified sphere.\n        //  This method doesn't return exact point of intersection or any additional data.\n        //  We don't look for closest intersection - so we stop on first intersection found.\n        //  IMPORTANT: Sphere must be in model space, so don't transform it!\n        public bool GetIntersectionWithSphere(MyModel model, ref BoundingSphere sphere)\n        {\n            //  Check if sphere intersects bounding box of this node\n            if (MyUtils.IsBoxIntersectingSphere(ref m_boundingBox, ref sphere) == false)\n            {\n                return false;         \n            }\n\n            // temporary variable for storing tirngle boundingbox info\n            BoundingBox triangleBoundingBox = new BoundingBox();\n\n            //  Triangles that are directly in this node\n            for (int i = 0; i < m_triangleIndices.Count; i++)\n            {\n                int triangleIndex = m_triangleIndices[i];\n\n                model.GetTriangleBoundingBox(triangleIndex, ref triangleBoundingBox);\n\n                //  First test intersection of triangleVertexes's bounding box with bounding sphere. And only if they overlap or intersect, do further intersection tests.\n                if (MyUtils.IsBoxIntersectingSphere(triangleBoundingBox, ref sphere) == true)\n                {\n                    //  See that we swaped vertex indices!!\n                    MyTriangle_Vertexes triangle;\n                    MyTriangleVertexIndices triangleIndices = model.Triangles[triangleIndex];\n                    triangle.Vertex0 = model.GetVertex(triangleIndices.I0);\n                    triangle.Vertex1 = model.GetVertex(triangleIndices.I2);\n                    triangle.Vertex2 = model.GetVertex(triangleIndices.I1);\n\n                    MyPlane trianglePlane = new MyPlane(ref triangle);\n\n                    if (MyUtils.GetSphereTriangleIntersection(ref sphere, ref trianglePlane, ref triangle) != null)\n                    {\n                        //  If we found intersection we can stop and dont need to look further\n                        return true;\n                    }                    \n                }\n            }\n\n            //  Get intersection with childs of this node\n            if (m_childs != null)\n            {\n                for (int i = 0; i < m_childs.Count; i++)\n                {\n                    if (m_childs[i].GetIntersectionWithSphere(model, ref sphere))\n                    {\n                        return true;\n                    }\n                }\n            }\n\n            return false;\n        }\n\n        //  Add triangleVertexes into this node or its child or child's child...\n        public void AddTriangle(MyModel model, int triangleIndex, int recursiveLevel)\n        {\n            BoundingBox triangleBoundingBox = new BoundingBox();\n            model.GetTriangleBoundingBox(triangleIndex, ref triangleBoundingBox);\n\n            if (recursiveLevel != MAX_RECURSIVE_LEVEL)\n            {\n                //  If we didn't reach max recursive level, we look for child where triangleVertexes can be completely contained\n                for (int i = 0; i < OCTREE_CHILDS_COUNT; i++)\n                {\n                    BoundingBox childBoundingBox = GetChildBoundingBox(m_boundingBox, i);\n\n                    //  If child completely contains the triangleVertexes, we add it to this child (or its child...child).\n                    if (childBoundingBox.Contains(triangleBoundingBox) == ContainmentType.Contains)\n                    {\n                        if (m_childs[i] == null) m_childs[i] = new MyModelOctreeNode(childBoundingBox);\n\n                        m_childs[i].AddTriangle(model, triangleIndex, recursiveLevel + 1);\n\n                        // Child completely contains triangle, so also current bounding box must contain that triangle\n                        m_realBoundingBox = m_realBoundingBox.Include(ref triangleBoundingBox.Min);\n                        m_realBoundingBox = m_realBoundingBox.Include(ref triangleBoundingBox.Max);\n                        return;\n                    }\n                }\n            }\n\n            //  If we get here, it was because we reached max recursive level or no child completely contained the triangleVertexes, so we add triangleVertexes to this node\n            m_triangleIndices.Add(triangleIndex);\n            m_realBoundingBox = m_realBoundingBox.Include(ref triangleBoundingBox.Min);\n            m_realBoundingBox = m_realBoundingBox.Include(ref triangleBoundingBox.Max);\n        }\n\n        //private static Stack<MyModelOctreeNode> m_nodeStack = new Stack<MyModelOctreeNode>(8*8*8*8*8*8*8*8);        \n\n        ////  Add triangleVertexes into this node or its child or child's child...\n        //public void AddTriangle(MyModel model, int triangleIndex, int recursiveLevel)\n        //{\n        //    BoundingBox triangleBoundingBox;\n        //    triangleBoundingBox = new BoundingBox();\n        //    model.GetTriangleBoundingBox(triangleIndex, ref triangleBoundingBox);\n        //    MyModelOctreeNode currentNode = null;        \n        //    m_nodeStack.Clear();\n        //    m_nodeStack.Push(this);                                \n        //    bool currentContains = false;\n\n        //    while(m_nodeStack.Count > 0)\n        //    {                                \n        //        currentContains = false;\n        //        currentNode = m_nodeStack.Pop();                                                                \n                \n        //        if (currentNode.m_currentLevel != MAX_RECURSIVE_LEVEL)\n        //        {                    \n        //            //  If we didn't reach max recursive level, we look for child where triangleVertexes can be completely contained\n        //            for (int i = 0; i < OCTREE_CHILDS_COUNT; i++)\n        //            {\n        //                BoundingBox childBoundingBox = currentNode.GetChildBoundingBox(currentNode.m_boundingBox, i);\n\n        //                //  If child completely contains the triangleVertexes, we add it to this child (or its child...child).\n        //                if (childBoundingBox.Contains(triangleBoundingBox) == ContainmentType.Contains)\n        //                {\n        //                    if (currentNode.m_childs[i] == null) currentNode.m_childs[i] = new MyModelOctreeNode(childBoundingBox, (byte)(currentNode.m_currentLevel + 1));\n                            \n        //                    Debug.Assert(currentNode.m_childs[i] != null);\n        //                    m_nodeStack.Push(currentNode.m_childs[i]);                            \n\n        //                    // Child completely contains triangle, so also current bounding box must contain that triangle\n        //                    currentNode.m_realBoundingBox = currentNode.m_realBoundingBox.Include(ref triangleBoundingBox.Min);\n        //                    currentNode.m_realBoundingBox = currentNode.m_realBoundingBox.Include(ref triangleBoundingBox.Max);\n        //                    currentContains = true;\n        //                    break;\n        //                }\n        //            }\n        //        }                \n                \n        //        if (!currentContains)\n        //        {\n        //            currentNode.m_triangleIndices.Add(triangleIndex);\n        //            currentNode.m_realBoundingBox = currentNode.m_realBoundingBox.Include(ref triangleBoundingBox.Min);\n        //            currentNode.m_realBoundingBox = currentNode.m_realBoundingBox.Include(ref triangleBoundingBox.Max);\n        //        }                                \n        //    }                        \n        //}\n\n        //  Calculate min/max coordinates of a child's bounding box\n        BoundingBox GetChildBoundingBox(BoundingBox parentBoundingBox, int childIndex)\n        {\n            //  Get child offset\n            Vector3 offset;\n            switch (childIndex)\n            {\n                case 0: offset = new Vector3(0, 0, 0); break;\n                case 1: offset = new Vector3(1, 0, 0); break;\n                case 2: offset = new Vector3(1, 0, 1); break;\n                case 3: offset = new Vector3(0, 0, 1); break;\n                case 4: offset = new Vector3(0, 1, 0); break;\n                case 5: offset = new Vector3(1, 1, 0); break;\n                case 6: offset = new Vector3(1, 1, 1); break;\n                case 7: offset = new Vector3(0, 1, 1); break;\n                default: throw new MyMwcExceptionApplicationShouldNotGetHere(); break;\n            }\n\n            //  Calc size of child's bounding box\n            Vector3 size = (parentBoundingBox.Max - parentBoundingBox.Min) / 2.0f;\n\n            BoundingBox ret = new BoundingBox();\n            ret.Min = parentBoundingBox.Min + offset * size;\n            ret.Max = ret.Min + size;\n\n            ret.Min -= size * CHILD_BOUNDING_BOX_EXPAND;\n            ret.Max += size * CHILD_BOUNDING_BOX_EXPAND;\n\n            // Make sure we stay in parent bounding box\n            ret.Min = Vector3.Max(ret.Min, parentBoundingBox.Min);\n            ret.Max = Vector3.Min(ret.Max, parentBoundingBox.Max);\n            \n            return ret;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Models/MyModelSubObjects.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing MinerWarsMath;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.Import;\n\n\n//  Here we define position and orientation of model subobjects like engine thrusts, reflector, machine gun, etc.\n//  This list contains sub-object for every model.\n//  All this position are relative to their models.\n\nnamespace MinerWars.AppCode.Game.Models\n{\n    class MyModelSubObject\n    {\n        public string Name;\n        public bool Enabled;                    //  If this sub-object is enabled\n        public Vector3 Position;\n        public Vector3? ForwardVector;\n        public Vector3? LeftVector;\n        public Vector3? UpVector;\n        public float? Scale;\n        public int AuxiliaryParam0;          //  This aux-param may be used for different purposes for each sub-object. Sometime it's radius of something, sometime length, etc\n        public Dictionary<string, object> CustomData;   // Custom data from dummies\n\n        public MyModelSubObject(string name, bool enabled, Vector3 position, Vector3? forward, Vector3? leftVector, Vector3? upVector, float? scale, int auxiliaryParam0, Dictionary<string, object> customData)\n        {\n            Name = name;\n            Enabled = enabled;\n            Position = position;\n            ForwardVector = forward;\n            LeftVector = leftVector;\n            UpVector = upVector;\n            Scale = scale;\n            AuxiliaryParam0 = auxiliaryParam0;\n            CustomData = customData;\n        }\n\n        public override string ToString()\n        {\n            return Name;\n        }\n    }\n    \n    static class MyModelSubObjects\n    {\n        //static MyModelSubObject[] m_subObjects;\n        static Dictionary<int, List<MyModelSubObject>> m_subObjectsMap = new Dictionary<int, List<MyModelSubObject>>();\n\n        public static void LoadContent()\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyModelSubobjects::LoadContent\");\n\n            m_subObjectsMap.Clear();\n\n            //Subobjects from dummies\n            AddSubObjectsFromModel(MyModelsEnum.Liberator);\n            AddSubObjectsFromModel(MyModelsEnum.Enforcer);\n            AddSubObjectsFromModel(MyModelsEnum.Kammler);\n            AddSubObjectsFromModel(MyModelsEnum.Gettysburg);\n            AddSubObjectsFromModel(MyModelsEnum.Virginia);\n            AddSubObjectsFromModel(MyModelsEnum.Baer);\n            AddSubObjectsFromModel(MyModelsEnum.Hewer);\n            AddSubObjectsFromModel(MyModelsEnum.Razorclaw);\n            AddSubObjectsFromModel(MyModelsEnum.Greiser);\n            AddSubObjectsFromModel(MyModelsEnum.Tracer);\n            AddSubObjectsFromModel(MyModelsEnum.SmallShip_Jacknife);\n            AddSubObjectsFromModel(MyModelsEnum.SmallShip_Doon);\n            AddSubObjectsFromModel(MyModelsEnum.SmallShip_Hammer);\n            AddSubObjectsFromModel(MyModelsEnum.SmallShip_YG_Closed);\n            AddSubObjectsFromModel(MyModelsEnum.SmallShip_ORG);\n            AddSubObjectsFromModel(MyModelsEnum.SmallShip_Hawk);\n            AddSubObjectsFromModel(MyModelsEnum.SmallShip_Phoenix);\n            AddSubObjectsFromModel(MyModelsEnum.SmallShip_Leviathan);\n            AddSubObjectsFromModel(MyModelsEnum.SmallShip_Rockheater);\n            AddSubObjectsFromModel(MyModelsEnum.SmallShip_SteelHead);\n            AddSubObjectsFromModel(MyModelsEnum.SmallShip_Talon);\n            AddSubObjectsFromModel(MyModelsEnum.SmallShip_Stanislav);\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        public static void UnloadContent()\n        {\n            MyMwcLog.WriteLine(\"MyModelSubObjects.UnloadContent - START\");\n            MyMwcLog.IncreaseIndent();\n\n            m_subObjectsMap.Clear();\n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyModelSubObjects.UnloadContent - END\");\n        }\n        static void AddSubObjectsFromModel(MyModelsEnum modelEnum)\n        {\n            MyModel model = MyModels.GetModelOnlyDummies(modelEnum);\n            string prefix = modelEnum.ToString() + \"_\";\n\n            List<MyModelSubObject> subObjectList;\n            m_subObjectsMap.TryGetValue((int)modelEnum, out subObjectList);\n            if (subObjectList == null)\n            {\n                subObjectList = new List<MyModelSubObject>();\n                m_subObjectsMap.Add((int)modelEnum, subObjectList);\n            }\n\n            foreach (KeyValuePair<string, MyModelDummy> pair in model.Dummies)\n            {\n                subObjectList.Add(new MyModelSubObject(pair.Key, true, pair.Value.Matrix.Translation, MyMwcUtils.Normalize(pair.Value.Matrix.Forward), MyMwcUtils.Normalize(pair.Value.Matrix.Left), MyMwcUtils.Normalize(pair.Value.Matrix.Up), pair.Value.Matrix.Forward.Length(), 0, pair.Value.CustomData)); \n            }\n        }\n\n        public static MyModelSubObject GetModelSubObject(MyModelsEnum modelEnum, string subObjectName)\n        {\n            List<MyModelSubObject> subObjectList;\n            m_subObjectsMap.TryGetValue((int)modelEnum, out subObjectList);\n            if (subObjectList == null)\n                return null;\n\n            return subObjectList.Find(x => x.Name == subObjectName);\n        }\n\n        public static List<MyModelSubObject> GetModelSubObjects(MyModelsEnum modelEnum) \n        {\n            List<MyModelSubObject> subObjectList;\n            m_subObjectsMap.TryGetValue((int)modelEnum, out subObjectList);\n            return subObjectList;\n    }\n}\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Models/MyModels.cs",
    "content": "﻿#define USE_SERIAL_MODEL_LOAD\n\nusing MinerWars.AppCode.Game.World;\nusing SysUtils.Utils;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing System.Collections.Generic;\nusing MinerWars.AppCode.Game.Entities;\nusing System.Threading.Tasks;\nusing System.Collections.Concurrent;\nusing System.Threading;\nusing System;\nusing MinerWars.AppCode.Game.Utils;\n\n\nnamespace MinerWars.AppCode.Game.Models\n{\n    static partial class MyModels\n    {\n        static MyModel[] m_models;\n        static Dictionary<string, MyModel> m_modelsByAssertName;\n\n        //Enables entity objects to do custom work after content is loaded (ie. device reset)\n        public delegate void ContentLoadedDelegate();\n        public static event ContentLoadedDelegate OnContentLoaded;\n\n        /// <summary>\n        /// Queue of textures to load.\n        /// </summary>\n        private static readonly ConcurrentQueue<MyModel> m_loadingQueue;\n\n        /// <summary>\n        /// Event that occures when some model needs to be loaded.\n        /// </summary>\n        private static readonly AutoResetEvent m_loadModelEvent;\n\n\n        static MyModels()\n        {\n            m_loadingQueue = new ConcurrentQueue<MyModel>();\n            m_loadModelEvent = new AutoResetEvent(false);\n            //Task.Factory.StartNew(BackgroundLoader, TaskCreationOptions.LongRunning);\n\n            InitModels();\n        }\n\n        /// <summary>\n        /// Backgrounds the loader.\n        /// </summary>\n        private static void BackgroundLoader()\n        {\n            while (true)\n            {\n                try\n                {\n                    MyModel modelToLoadInDraw;\n                    if (m_loadingQueue.TryDequeue(out modelToLoadInDraw))\n                    {\n                        modelToLoadInDraw.LoadInDraw(Managers.LoadingMode.Immediate);\n                    }\n                    else\n                    {\n                        m_loadModelEvent.WaitOne();\n                    }\n                }\n                catch (ObjectDisposedException)\n                {\n                    // NOTE: This will happend when game is disposed while loading so skip load of this model.\n                }\n            }\n        }\n\n        internal static void LoadModelInDrawInBackground(MyModel model)\n        {\n            if (MyFakes.LOAD_MODELS_IMMEDIATELY)\n            {\n                model.LoadInDraw(Managers.LoadingMode.Immediate);\n            }\n            else\n            {\n                m_loadingQueue.Enqueue(model);\n                m_loadModelEvent.Set();\n            }\n        }\n\n        public static void LoadData()\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyModels.LoadData\");\n            MyMwcLog.WriteLine(string.Format(\"MyModels.LoadData - START\"));\n\n            MyMwcLog.WriteLine(string.Format(\"MyModels.LoadData - END\"));\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n\n        public static void ReloadData()\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyModels.ReloadData\");\n            MyMwcLog.WriteLine(string.Format(\"MyModels.ReloadData - START\"));\n\n            if (m_models != null)\n            {\n                List<int> loadedModels = new List<int>();\n#if USE_SERIAL_MODEL_LOAD\n                for (int i = 0; i < m_models.Length; i++)\n                {\n                    if (m_models[i].UnloadData())\n                        loadedModels.Add(i);\n                }\n#else\n                Parallel.For(0, m_models.Length, i =>\n                {\n                    if (m_models[i].UnloadData())\n                        loadedModels.Add(i);\n                });\n#endif\n                //load only previously loaded models\n#if USE_SERIAL_MODEL_LOAD\n                foreach (int i in loadedModels)\n                {\n                    m_models[i].LoadData();\n                }\n#else\n                Parallel.ForEach(loadedModels, i =>\n                {\n                    m_models[i].LoadData();\n                });\n#endif\n            }\n\n            if (MyEntities.GetEntities() != null)\n            {\n                foreach (MyEntity entity in MyEntities.GetEntities())\n                {\n                    entity.InitDrawTechniques();\n                }\n            }\n\n            MyMwcLog.WriteLine(string.Format(\"MyModels.ReloadData - END\"));\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n\n        public static void ReloadContent()\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyModels.ReloadData\");\n            MyMwcLog.WriteLine(string.Format(\"MyModels.ReloadData - START\"));\n\n            if (m_models != null)\n            {\n                List<int> contentloadedModels = new List<int>();\n                for (int i = 0; i < m_models.Length; i++)\n                {\n                    if (m_models[i].LoadedContent)\n                        contentloadedModels.Add(i);\n                }\n\n                ReloadData();\n\n                foreach (int i in contentloadedModels)\n                {\n                    MyModel model = MyModels.GetModelForDraw((MyModelsEnum)i);\n                }\n            }\n\n            MyMwcLog.WriteLine(string.Format(\"MyModels.ReloadData - END\"));\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        public static void LoadContent()\n        {\n            MyMwcLog.WriteLine(\"MyModels.LoadContent() - START\");\n            MyMwcLog.IncreaseIndent();\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyModels::LoadContent\");\n\n            if (OnContentLoaded != null)\n                OnContentLoaded();\n\n            if (m_models != null)\n            {\n                for (int i = 0; i < m_models.Length; i++)\n                {\n                    if (m_models[i] != null)\n                    {\n                        m_models[i].LoadContent();\n                    }\n                }\n\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyModels.LoadContent() - END\");\n        }\n\n        public static void UnloadData()\n        {\n            if (m_models != null)\n            {\n                for (int i = 0; i < m_models.Length; i++)\n                {\n                    if (m_models[i] != null)\n                    {\n                        // Unload data which was previously loaded\n                        m_models[i].UnloadData();\n                    }\n                }\n            }\n        }\n\n        public static void UnloadContent()\n        {\n            if (m_models != null)\n            {\n                for (int i = 0; i < m_models.Length; i++)\n                {\n                    if (m_models[i] != null)\n                    {\n                        m_models[i].UnloadContent();\n                    }\n                }\n            }\n        }\n\n\n        //\tSpecial method that loads data into GPU, and can be called only from Draw method, never from LoadContent or from background thread.\n        //\tBecause that would lead to empty vertex/index buffers if they are filled/created while game is minimized \n        //  (remember the issue - alt-tab during loading screen)\n        public static void LoadInDraw()\n        {\n            MyMwcLog.WriteLine(\"MyModels.LoadInDraw - START\");\n            MyMwcLog.IncreaseIndent();\n\n            for (int i = 0; i < m_models.Length; i++)\n            {\n                //  Because this LoadInDraw will stop normal update calls, we might not be able to send keep alive\n                //  messages to server for some time. This will help it - it will make networking be up-to-date.\n                //MyClientServer.Update();\n\n                MyModel model = m_models[i];\n                if (model != null)\n                {\n                    //  We can call this on every model because MyModel.LoadInDraw checks if model's data\n                    //  were loaded, and that can happen only if some phys object used it for its initialization\n                    //  Summary: here only models that are used by some phys object are loaded\n                    model.LoadInDraw();\n                }\n            }\n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyModels.LoadInDraw - END\");\n        }\n\n        public static void UnloadExcept(HashSet<int> keepModels)\n        {\n            if (m_models != null)\n            {\n                for (int i = 0; i < m_models.Length; i++)\n                {\n                    if (m_models[i] != null /*&& !m_models[i].KeepInMemory*/ && !keepModels.Contains((int)m_models[i].ModelEnum))\n                    {\n                        // Unload data which was previously loaded\n                        m_models[i].UnloadContent();\n                        if(m_models[i].UnloadData())\n                        {\n                            MyMwcLog.WriteLine(\"Unloading model: \" + m_models[i].AssetName);\n                        }\n                    }\n                }\n            }\n        }\n\n        //  Lazy-loading and then returning reference to model\n        //  Doesn't load vertex/index shader and doesn't touch GPU. Use it when you need model data - vertex, triangles, octre...\n        public static MyModel GetModelOnlyData(MyModelsEnum modelEnum)\n        {\n            int modelInt = (int)modelEnum;\n            m_models[modelInt].LoadData();\n            return m_models[modelInt];\n        }\n\n        //  Lazy-loading and then returning reference to model\n        //  Doesn't load vertex/index shader and doesn't touch GPU. Use it when you need model data - vertex, triangles, octre...\n        public static MyModel GetModelOnlyDummies(MyModelsEnum modelEnum)\n        {\n            int modelInt = (int)modelEnum;\n            m_models[modelInt].LoadOnlyDummies();\n            return m_models[modelInt];\n        }\n\n        public static MyModel GetModelOnlyModelInfo(MyModelsEnum modelEnum)\n        {\n            int modelInt = (int)modelEnum;\n            m_models[modelInt].LoadOnlyModelInfo();\n            return m_models[modelInt];\n        }\n\n        //  Lazy-loading and then returning reference to model\n        //  IMPORTANT: Loads data into GPU, should be called only from Draw method on main thread\n        //\tSpecial method that loads data into GPU, and can be called only from Draw method, never from LoadContent or from background thread.\n        //\tBecause that would lead to empty vertex/index buffers if they are filled/created while game is minimized (remember the issue - alt-tab during loading screen)\n        public static MyModel GetModelForDraw(MyModelsEnum modelEnum)\n        {       /*\n            System.Collections.Generic.List<MyModel> mds = new System.Collections.Generic.List<MyModel>();\n            foreach (MyModel model in m_models)\n            {\n                if (model.Vertexes != null)\n                mds.Add(model);\n            }\n              */\n\n            int modelInt = (int)modelEnum;\n            m_models[modelInt].LoadData();\n            m_models[modelInt].LoadInDraw();\n            return m_models[modelInt];\n        }\n\n        // Returns asset name of model\n        public static string GetModelAssetName(MyModelsEnum modelEnum)\n        {\n            return m_models[(int)modelEnum].AssetName;\n        }\n\n        public static MyModel GetModel(MyModelsEnum modelEnum)\n        {\n            return m_models.Length > (int)modelEnum ? m_models[(int)modelEnum] : null;\n        }\n\n        //  Release textures, vertex buffer and all content related to this model. It's good to use it only\n        //  for models that have their own texture (texture not shared through many models). E.g. cockpit glass.\n        public static void ReleaseModel(MyModelsEnum modelEnum)\n        {\n            //  TODO!!!\n        }\n\n        public static MyModelsEnum GetModelEnumByAssetName(string assetName)\n        {\n            string correctAssetName = assetName.Replace(\".FBX\", string.Empty);\n            if (correctAssetName.StartsWith(\"\\\\\"))\n            {\n                correctAssetName = correctAssetName.Remove(0, 1);\n            }\n\n            return m_modelsByAssertName[correctAssetName].ModelEnum;\n        }\n\n        //for use in LogUsageInformationFunction\n        private static Dictionary<MyModelsEnum, int> m_counts;\n        private static List<WLentry> m_wrong_models;\n\n        private static void ParseEntityChildrensForLog(KeenSoftwareHouse.Library.Collections.ObservableCollection<MyEntity> entityCollection)\n        {\n            if (entityCollection == null) return;\n            foreach (MyEntity e in entityCollection)\n            {\n                if (MyModelsStatisticsConstants.MODEL_STATISTICS_WRONG_LODS_ONLY)\n                {\n                    if (e.ModelLod0 != null && e.ModelLod1 != null && e.ModelLod0.GetTrianglesCount() < e.ModelLod1.GetTrianglesCount() * 2)\n                    {\n                        bool founded = false;\n                        foreach (WLentry entry in m_wrong_models)\n                        {\n                            if (entry.lod1Asset == e.ModelLod1.AssetName && entry.lod0Asset == e.ModelLod0.AssetName)\n                            {\n                                founded = true;\n                                break;\n                            }\n                        }\n                        if (!founded)\n                        {\n                            WLentry entry = new WLentry();\n                            entry.lod1Asset = e.ModelLod1.AssetName;\n                            entry.lod1Triangles = MyModels.m_modelsByAssertName[e.ModelLod1.AssetName].GetTrianglesCount().ToString();\n                            entry.lod1Type = \"LOD1\";\n                            entry.lod0Asset = e.ModelLod0.AssetName;\n                            entry.lod0Triangles = MyModels.m_modelsByAssertName[e.ModelLod0.AssetName].GetTrianglesCount().ToString();\n                            entry.lod0Type = \"LOD0\";\n                            m_wrong_models.Add(entry);\n                        }\n                    }\n                    if (e.ModelLod1 != null && e.ModelLod2 != null && e.ModelLod1.GetTrianglesCount() < e.ModelLod2.GetTrianglesCount() * 2)\n                    {\n                        bool founded = false;\n                        foreach (WLentry entry in m_wrong_models)\n                        {\n                            if (entry.lod1Asset == e.ModelLod2.AssetName && entry.lod0Asset == e.ModelLod1.AssetName)\n                            {\n                                founded = true;\n                                break;\n                            }\n                        }\n                        if (!founded)\n                        {\n                            WLentry entry = new WLentry();\n                            entry.lod1Asset = e.ModelLod2.AssetName;\n                            entry.lod1Triangles = MyModels.m_modelsByAssertName[e.ModelLod2.AssetName].GetTrianglesCount().ToString();\n                            entry.lod1Type = \"LOD2\";\n                            entry.lod0Asset = e.ModelLod1.AssetName;\n                            entry.lod0Triangles = MyModels.m_modelsByAssertName[e.ModelLod1.AssetName].GetTrianglesCount().ToString();\n                            entry.lod0Type = \"LOD1\";\n                            m_wrong_models.Add(entry);\n                        }\n                    }\n                    if (e.ModelLod0 != null && e.ModelCollision != null && e.ModelLod0.GetTrianglesCount() < e.ModelCollision.GetTrianglesCount() * 2)\n                    {\n                        bool founded = false;\n                        foreach (WLentry entry in m_wrong_models)\n                        {\n                            if (entry.lod1Asset == e.ModelCollision.AssetName && entry.lod0Asset == e.ModelLod0.AssetName)\n                            {\n                                founded = true;\n                                break;\n                            }\n                        }\n                        if (!founded)\n                        {\n                            WLentry entry = new WLentry();\n                            entry.lod1Asset = e.ModelCollision.AssetName;\n                            entry.lod1Triangles = MyModels.m_modelsByAssertName[e.ModelCollision.AssetName].GetTrianglesCount().ToString();\n                            entry.lod1Type = \"COL\";\n                            entry.lod0Asset = e.ModelLod0.AssetName;\n                            entry.lod0Triangles = MyModels.m_modelsByAssertName[e.ModelLod0.AssetName].GetTrianglesCount().ToString();\n                            entry.lod0Type = \"LOD0\";\n                            m_wrong_models.Add(entry);\n                        }\n                    }\n                }\n                if (e.ModelLod0 != null)\n                {\n                    MyModelsEnum en = e.ModelLod0.ModelEnum;\n                    if (m_counts.ContainsKey(en)) ++m_counts[en];\n                    else m_counts[en] = 1;\n                }\n                if (e.ModelLod1 != null)\n                {\n                    MyModelsEnum en = e.ModelLod1.ModelEnum;\n                    if (m_counts.ContainsKey(en)) ++m_counts[en];\n                    else m_counts[en] = 1;\n                }\n                if (e.ModelLod2 != null)\n                {\n                    MyModelsEnum en = e.ModelLod2.ModelEnum;\n                    if (m_counts.ContainsKey(en)) ++m_counts[en];\n                    else m_counts[en] = 1;\n                }\n                if (e.ModelCollision != null)\n                {\n                    MyModelsEnum en = e.ModelCollision.ModelEnum;\n                    if (m_counts.ContainsKey(en)) ++m_counts[en];\n                    else m_counts[en] = 1;\n                }\n                ParseEntityChildrensForLog(e.Children);\n            }\n        }\n\n        public static void LogUsageInformation()\n        {\n            if (MinerWars.AppCode.Game.Missions.MyMissions.ActiveMission == null) return;\n            m_counts = new Dictionary<MyModelsEnum, int>();\n            m_wrong_models = new List<WLentry>();\n            foreach (MyEntity e in MyEntities.GetEntities())\n            {\n                if (MyModelsStatisticsConstants.MODEL_STATISTICS_WRONG_LODS_ONLY)\n                {\n                    if (e.ModelLod0 != null && e.ModelLod1 != null && e.ModelLod0.GetTrianglesCount() < e.ModelLod1.GetTrianglesCount() * 2)\n                    {\n                        bool founded = false;\n                        foreach (WLentry entry in m_wrong_models)\n                        {\n                            if (entry.lod1Asset == e.ModelLod1.AssetName && entry.lod0Asset == e.ModelLod0.AssetName)\n                            {\n                                founded = true;\n                                break;\n                            }\n                        }\n                        if (!founded)\n                        {\n                            WLentry entry = new WLentry();\n                            entry.lod1Asset = e.ModelLod1.AssetName;\n                            entry.lod1Triangles = MyModels.m_modelsByAssertName[e.ModelLod1.AssetName].GetTrianglesCount().ToString();\n                            entry.lod1Type = \"LOD1\";\n                            entry.lod0Asset = e.ModelLod0.AssetName;\n                            entry.lod0Triangles = MyModels.m_modelsByAssertName[e.ModelLod0.AssetName].GetTrianglesCount().ToString();\n                            entry.lod0Type = \"LOD0\";\n                            m_wrong_models.Add(entry);\n                        }\n                    }\n                    if (e.ModelLod1 != null && e.ModelLod2 != null && e.ModelLod1.GetTrianglesCount() < e.ModelLod2.GetTrianglesCount() * 2)\n                    {\n                        bool founded = false;\n                        foreach (WLentry entry in m_wrong_models)\n                        {\n                            if (entry.lod1Asset == e.ModelLod2.AssetName && entry.lod0Asset == e.ModelLod1.AssetName)\n                            {\n                                founded = true;\n                                break;\n                            }\n                        }\n                        if (!founded)\n                        {\n                            WLentry entry = new WLentry();\n                            entry.lod1Asset = e.ModelLod2.AssetName;\n                            entry.lod1Triangles = MyModels.m_modelsByAssertName[e.ModelLod2.AssetName].GetTrianglesCount().ToString();\n                            entry.lod1Type = \"LOD2\";\n                            entry.lod0Asset = e.ModelLod1.AssetName;\n                            entry.lod0Triangles = MyModels.m_modelsByAssertName[e.ModelLod1.AssetName].GetTrianglesCount().ToString();\n                            entry.lod0Type = \"LOD1\";\n                            m_wrong_models.Add(entry);\n                        }\n                    }\n                    if (e.ModelLod0 != null && e.ModelCollision != null && e.ModelLod0.GetTrianglesCount() < e.ModelCollision.GetTrianglesCount() * 2)\n                    {\n                        bool founded = false;\n                        foreach (WLentry entry in m_wrong_models)\n                        {\n                            if (entry.lod1Asset == e.ModelCollision.AssetName && entry.lod0Asset == e.ModelLod0.AssetName)\n                            {\n                                founded = true;\n                                break;\n                            }\n                        }\n                        if (!founded)\n                        {\n                            WLentry entry = new WLentry();\n                            entry.lod1Asset = e.ModelCollision.AssetName;\n                            entry.lod1Triangles = MyModels.m_modelsByAssertName[e.ModelCollision.AssetName].GetTrianglesCount().ToString();\n                            entry.lod1Type = \"COL\";\n                            entry.lod0Asset = e.ModelLod0.AssetName;\n                            entry.lod0Triangles = MyModels.m_modelsByAssertName[e.ModelLod0.AssetName].GetTrianglesCount().ToString();\n                            entry.lod0Type = \"LOD0\";\n                            m_wrong_models.Add(entry);\n                        }\n                    }\n                }\n                if (e.ModelLod0 != null)\n                {\n                    MyModelsEnum en = e.ModelLod0.ModelEnum;\n                    if (m_counts.ContainsKey(en)) ++m_counts[en];\n                    else m_counts[en] = 1;\n                }\n                if (e.ModelLod1 != null)\n                {\n                    MyModelsEnum en = e.ModelLod1.ModelEnum;\n                    if (m_counts.ContainsKey(en)) ++m_counts[en];\n                    else m_counts[en] = 1;\n                }\n                if (e.ModelLod2 != null)\n                {\n                    MyModelsEnum en = e.ModelLod2.ModelEnum;\n                    if (m_counts.ContainsKey(en)) ++m_counts[en];\n                    else m_counts[en] = 1;\n                }\n                if (e.ModelCollision != null)\n                {\n                    MyModelsEnum en = e.ModelCollision.ModelEnum;\n                    if (m_counts.ContainsKey(en)) ++m_counts[en];\n                    else m_counts[en] = 1;\n                }\n                ParseEntityChildrensForLog(e.Children);\n            }\n\n            foreach (MyModel m in MyModels.m_models)\n            {\n                if (!m_counts.ContainsKey(m.ModelEnum)) m_counts[m.ModelEnum] = 0;\n            }\n\n            string activeMissionName = MinerWars.AppCode.Game.Missions.MyMissions.ActiveMission != null ? MinerWars.AppCode.Game.Missions.MyMissions.ActiveMission.DebugName.ToString() : MyModelsStatisticsConstants.ACTUAL_MISSION_FOR_MODEL_STATISTICS.ToString();\n            activeMissionName = activeMissionName.Replace(' ', '-').ToString().ToLower();\n\n            if (MyModelsStatisticsConstants.MODEL_STATISTICS_WRONG_LODS_ONLY)\n            {\n                using (System.IO.StreamWriter output = new System.IO.StreamWriter(System.IO.File.Open(\"models-usage-statistics-WL_\" + activeMissionName + \".csv\", System.IO.FileMode.Create)))\n                {\n                    output.WriteLine(\"lodX AssetName\" + MyModelsStatisticsConstants.MODEL_STATISTICS_CSV_SEPARATOR + \"lodX Triangles\" + MyModelsStatisticsConstants.MODEL_STATISTICS_CSV_SEPARATOR + \"lodX Type\" + MyModelsStatisticsConstants.MODEL_STATISTICS_CSV_SEPARATOR + \"lodX-1 AssetName\" + MyModelsStatisticsConstants.MODEL_STATISTICS_CSV_SEPARATOR + \"lodX-1 Triangles\" + MyModelsStatisticsConstants.MODEL_STATISTICS_CSV_SEPARATOR + \"lodX-1 Type\");\n                    foreach (WLentry entry in m_wrong_models)\n                    {\n                        output.WriteLine(entry.lod1Asset + MyModelsStatisticsConstants.MODEL_STATISTICS_CSV_SEPARATOR + entry.lod1Triangles + MyModelsStatisticsConstants.MODEL_STATISTICS_CSV_SEPARATOR + entry.lod1Type + MyModelsStatisticsConstants.MODEL_STATISTICS_CSV_SEPARATOR + entry.lod0Asset + MyModelsStatisticsConstants.MODEL_STATISTICS_CSV_SEPARATOR + entry.lod0Triangles + MyModelsStatisticsConstants.MODEL_STATISTICS_CSV_SEPARATOR + entry.lod0Type);\n                    }\n                    output.Flush();\n                    output.Close();\n                }\n            }\n\n            using (System.IO.StreamWriter output = new System.IO.StreamWriter(System.IO.File.Open(\"models-usage-statistics-N_\" + activeMissionName + \".csv\", System.IO.FileMode.Create)))\n            {\n                output.WriteLine(\"Model name\" + MyModelsStatisticsConstants.MODEL_STATISTICS_CSV_SEPARATOR + \"Used X-times\" + MyModelsStatisticsConstants.MODEL_STATISTICS_CSV_SEPARATOR + \"VB size [MB]\" + MyModelsStatisticsConstants.MODEL_STATISTICS_CSV_SEPARATOR + \"IB size [MB]\" + MyModelsStatisticsConstants.MODEL_STATISTICS_CSV_SEPARATOR + \"LoadData/LoadContent\");\n                foreach (KeyValuePair<MyModelsEnum, int> kvp in m_counts)\n                {\n                    string assetName = MyModels.GetModelAssetName(kvp.Key);\n                    string LS;\n                    if (!MyModels.m_modelsByAssertName[assetName].LoadedData)\n                    {\n                        continue;\n                        LS = \"X\";\n                    }\n                    else\n                    {\n                        if (!MyModels.m_modelsByAssertName[assetName].LoadedContent)\n                        {\n                            LS = \"LD\";\n                        }\n                        else\n                        {\n                            LS = \"LC\";\n                        }\n                    }\n                    output.WriteLine(assetName + MyModelsStatisticsConstants.MODEL_STATISTICS_CSV_SEPARATOR + kvp.Value.ToString() + MyModelsStatisticsConstants.MODEL_STATISTICS_CSV_SEPARATOR + Math.Round(MyModels.m_modelsByAssertName[assetName].GetVBSize / 1024.0 / 1024.0, 4).ToString() + MyModelsStatisticsConstants.MODEL_STATISTICS_CSV_SEPARATOR + Math.Round(MyModels.m_modelsByAssertName[assetName].GetIBSize / 1024.0 / 1024.0, 4).ToString() + MyModelsStatisticsConstants.MODEL_STATISTICS_CSV_SEPARATOR + LS);\n                }\n                output.Flush();\n                output.Close();\n            }\n            m_counts = null;\n            GC.Collect();\n\n            if (MyModelsStatisticsConstants.GET_MODEL_STATISTICS_AUTOMATICALLY && MyModelsStatisticsConstants.MISSIONS_TO_GET_MODEL_STATISTICS_FROM.Length > (++MyModelsStatisticsConstants.ACTUAL_MISSION_FOR_MODEL_STATISTICS + 1))\n            {\n                GUI.MyGuiScreenMainMenu.StartMission(MyModelsStatisticsConstants.MISSIONS_TO_GET_MODEL_STATISTICS_FROM[MyModelsStatisticsConstants.ACTUAL_MISSION_FOR_MODEL_STATISTICS]);\n            }\n            else\n            {\n                MergeLogFiles();\n            }\n        }\n\n        struct WLentry\n        {\n            public string lod0Asset;\n            public string lod1Asset;\n            public string lod0Triangles;\n            public string lod1Triangles;\n            public string lod0Type;\n            public string lod1Type;\n        }\n\n        public static void MergeLogFiles()\n        {\n            List<WLentry> entriesList = new List<WLentry>();\n            string[] files = System.IO.Directory.GetFiles(System.IO.Path.GetDirectoryName(System.Windows.Forms.Application.ExecutablePath));\n            foreach (string file in files)\n            {\n                if (IsNeededFile(file))\n                {\n                    using (System.IO.StreamReader input = new System.IO.StreamReader(System.IO.File.Open(file, System.IO.FileMode.Open)))\n                    {\n                        bool firstLine = true;\n                        while (input.Peek() >= 0)\n                        {\n                            string line = input.ReadLine();\n                            if (firstLine)\n                            {\n                                firstLine = false;\n                                continue;\n                            }\n                            string[] collumns = line.Split(MyModelsStatisticsConstants.MODEL_STATISTICS_CSV_SEPARATOR);\n                            System.Diagnostics.Debug.Assert(collumns.Length == 6, \"Wrong columns count: \" + collumns.Length);\n                            bool founded = false;\n                            foreach (WLentry entry in entriesList)\n                            {\n                                if (entry.lod1Asset == collumns[0] && entry.lod0Asset == collumns[3])\n                                {\n                                    founded = true;\n                                    break;\n                                }\n                            }\n                            if (!founded)\n                            {\n                                WLentry newEntry = new WLentry();\n                                newEntry.lod1Asset = collumns[0];\n                                newEntry.lod1Triangles = collumns[1];\n                                newEntry.lod1Type = collumns[2];\n                                newEntry.lod0Asset = collumns[3];\n                                newEntry.lod0Triangles = collumns[4];\n                                newEntry.lod0Type = collumns[5];\n                                entriesList.Add(newEntry);\n                            }\n                        }\n                        input.Close();\n                    }\n                }\n            }\n\n            using (System.IO.StreamWriter output = new System.IO.StreamWriter(System.IO.File.Open(\"models-usage-statistics-WL_ALL-MISSIONS-MERGED.csv\", System.IO.FileMode.Create)))\n            {\n                output.WriteLine(\"lodX AssetName\" + MyModelsStatisticsConstants.MODEL_STATISTICS_CSV_SEPARATOR + \"lodX Triangles\" + MyModelsStatisticsConstants.MODEL_STATISTICS_CSV_SEPARATOR + \"lodX Type\" + MyModelsStatisticsConstants.MODEL_STATISTICS_CSV_SEPARATOR + \"lodX-1 AssetName\" + MyModelsStatisticsConstants.MODEL_STATISTICS_CSV_SEPARATOR + \"lodX-1 Triangles\" + MyModelsStatisticsConstants.MODEL_STATISTICS_CSV_SEPARATOR + \"lodX-1 Type\");\n                foreach (WLentry entry in entriesList)\n                {\n                    output.WriteLine(entry.lod1Asset + MyModelsStatisticsConstants.MODEL_STATISTICS_CSV_SEPARATOR + entry.lod1Triangles + MyModelsStatisticsConstants.MODEL_STATISTICS_CSV_SEPARATOR + entry.lod1Type + MyModelsStatisticsConstants.MODEL_STATISTICS_CSV_SEPARATOR + entry.lod0Asset + MyModelsStatisticsConstants.MODEL_STATISTICS_CSV_SEPARATOR + entry.lod0Triangles + MyModelsStatisticsConstants.MODEL_STATISTICS_CSV_SEPARATOR + entry.lod0Type);\n                }\n                output.Flush();\n                output.Close();\n            }\n        }\n\n        private static bool IsNeededFile(string file)\n        {\n            if (System.IO.Path.GetExtension(file) != \".csv\") return false;\n\n            string fileName = System.IO.Path.GetFileNameWithoutExtension(file);\n\n            string[] parts1 = fileName.Split('_');\n\n            if (parts1.Length != 2) return false;\n\n            string[] parts2 = parts1[0].Split('-');\n\n            if (parts2.Length != 4) return false;\n\n            return parts2[3] == \"WL\";\n        }\n\n        public static void CheckAllModels()\n        {\n            Dictionary<string, MyModel> modelsLod0 = new Dictionary<string, MyModel>();\n            Dictionary<string, MyModel> modelsLod1 = new Dictionary<string, MyModel>();\n            Dictionary<string, MyModel> modelsCol = new Dictionary<string, MyModel>();\n            foreach (MyModel model in m_models)\n            {\n                model.LoadOnlyModelInfo();\n                string smallAsset = model.AssetName;\n                if (smallAsset.EndsWith(\"_COL\"))\n                {\n                    modelsCol.Add(smallAsset.Substring(0, smallAsset.Length - 4), model);\n                }\n                else if (smallAsset.EndsWith(\"_LOD1\"))\n                {\n                    modelsLod1.Add(smallAsset.Substring(0, smallAsset.Length - 5), model);\n                }\n                else\n                {\n                    modelsLod0.Add(smallAsset, model);\n                }\n            }\n            using (System.IO.StreamWriter output = new System.IO.StreamWriter(System.IO.File.Open(\"All_models.csv\", System.IO.FileMode.Create)))\n            {\n                output.WriteLine(\"lod0 AssetName\" + MyModelsStatisticsConstants.MODEL_STATISTICS_CSV_SEPARATOR + \"LOD0 Triangles\" + MyModelsStatisticsConstants.MODEL_STATISTICS_CSV_SEPARATOR + \"LOD1 AssetName\" + MyModelsStatisticsConstants.MODEL_STATISTICS_CSV_SEPARATOR + \"LOD1 Triangles\" + MyModelsStatisticsConstants.MODEL_STATISTICS_CSV_SEPARATOR + \"COL AssetName\" + MyModelsStatisticsConstants.MODEL_STATISTICS_CSV_SEPARATOR + \"COL Triangles\");\n\n                foreach (KeyValuePair<string, MyModel> lod0 in modelsLod0)\n                {\n                    string part2 = MyModelsStatisticsConstants.MODEL_STATISTICS_CSV_SEPARATOR.ToString(), part3 = MyModelsStatisticsConstants.MODEL_STATISTICS_CSV_SEPARATOR.ToString();\n                    if (modelsLod1.ContainsKey(lod0.Key))\n                    {\n                        MyModel lod1 = modelsLod1[lod0.Key];\n                        if (lod0.Value.ModelInfo.TrianglesCount < lod1.ModelInfo.TrianglesCount * 4 && lod1.ModelInfo.TrianglesCount > 50)\n                        {\n                            part2 = lod1.AssetName + MyModelsStatisticsConstants.MODEL_STATISTICS_CSV_SEPARATOR + lod1.ModelInfo.TrianglesCount;\n                        }\n                    }\n                    if (modelsCol.ContainsKey(lod0.Key))\n                    {\n                        MyModel col = modelsCol[lod0.Key];\n                        if (lod0.Value.ModelInfo.TrianglesCount < col.ModelInfo.TrianglesCount * 4 && col.ModelInfo.TrianglesCount > 50)\n                        {\n                            part3 = col.AssetName + MyModelsStatisticsConstants.MODEL_STATISTICS_CSV_SEPARATOR + col.ModelInfo.TrianglesCount;\n                        }\n                    }\n\n                    if (part2 != MyModelsStatisticsConstants.MODEL_STATISTICS_CSV_SEPARATOR.ToString() || part3 != MyModelsStatisticsConstants.MODEL_STATISTICS_CSV_SEPARATOR.ToString())\n                    {\n                        output.WriteLine(lod0.Value.AssetName + MyModelsStatisticsConstants.MODEL_STATISTICS_CSV_SEPARATOR + lod0.Value.ModelInfo.TrianglesCount + MyModelsStatisticsConstants.MODEL_STATISTICS_CSV_SEPARATOR + part2 + MyModelsStatisticsConstants.MODEL_STATISTICS_CSV_SEPARATOR + part3);\n                    }\n                }\n                output.WriteLine();\n                foreach (KeyValuePair<string, MyModel> lod0 in modelsLod0)\n                {\n                    if ((!modelsLod1.ContainsKey(lod0.Key) || !modelsCol.ContainsKey(lod0.Key)) && lod0.Value.ModelInfo.TrianglesCount > 50)\n                    {\n                        if (lod0.Value.AssetName.Contains(\"Prefab\"))\n                        {\n                            output.WriteLine(lod0.Value.AssetName + MyModelsStatisticsConstants.MODEL_STATISTICS_CSV_SEPARATOR + lod0.Value.ModelInfo.TrianglesCount);\n                        }\n                    }\n                }\n                output.Flush();\n                output.Close();\n            }\n        }\n\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Models/MyModels_Data.cs",
    "content": "﻿using System;\nusing MinerWarsMath.Graphics;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils.Utils;\n\nusing SysUtils;\nusing KeenSoftwareHouse.Library.Extensions;\nusing System.Collections.Generic;\nusing System.IO;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.Import;\n\nnamespace MinerWars.AppCode.Game.Models\n{\n    public enum MyModelsEnum : int\n    {\n        MissileLauncher,\n        Autocannon_Barrel,\n        Autocannon_Base,\n        Liberator,\n        Enforcer,\n        Kammler,\n        Gettysburg,\n        Virginia,\n        Baer,\n        Hewer,\n        Razorclaw,\n        Greiser,\n        Tracer,\n        EAC02_Cockpit,\n        EAC02_Cockpit_glass,\n        EAC03_Cockpit,\n        EAC03_Cockpit_glass,\n        EAC04_Cockpit,\n        EAC04_Cockpit_glass,\n        EAC05_Cockpit,\n        EAC05_Cockpit_glass,\n        OmniCorp01_Cockpit,\n        OmniCorp01_Cockpit_glass,\n        OmniCorp03_Cockpit,\n        OmniCorp03_Cockpit_glass,\n        OmniCorp04_Cockpit,\n        OmniCorp04_Cockpit_glass,\n        OmniCorp_EAC01_Cockpit,\n        OmniCorp_EAC01_Cockpit_glass,\n        Cockpit_CN_03,\n        Cockpit_CN_03_glass,\n        Cockpit_SS_04,\n        Cockpit_SS_04_glass,\n        Cockpit_Razorclaw,\n        Cockpit_Razorclaw_glass,\n        //AnnaV,\n        Kai,\n        Kai_COL,\n        Kai_LOD1,\n        Missile,\n        ExplosionDebrisVoxel,\n        HarvestingTube,\n        Debris1, //Steel scrap\n        Debris2, //Cylindrical tripod\n        Debris3, //Wing scrap\n        Debris4, //steel gun scrap\n        Debris5, //ship wing ventilation scrap\n        Debris6, //wired parts\n        Debris7, //steel solid part\n        Debris8, //fat wires part\n        Debris9, //box cover \n        Debris10,//square steel plate\n        Debris11,//small tripod\n        Debris12,//exploded barrel\n        Debris13,//exploded tube\n        Debris14,//steel turbine or what\n        Debris15,//steel ribs\n        Debris16,//satelitte\n        Debris17,//chamfer cover box\n        Debris18,//Exploded pile\n        Debris19,//reflector or what\n        Debris20,//steel arm\n        Debris21,//old box\n        Debris22,//box with cables\n        Debris23,//lw debris\n        Debris24,//steel corner part\n        Debris25,//exploded dose\n        Debris26,//exploded tube\n        Debris27,//wired connected parts\n        Debris28,//rocket abandoned\n        Debris29,//circular tripod\n        Debris30,//christmas tree tripod\n        Debris31,//hook part\n        Debris32_pilot,\n        cistern,\n        pipe_bundle,\n        Standard_Container_1,\n        Standard_Container_2,\n        Standard_Container_3,\n        Standard_Container_4,\n        UtilityVehicle_1,\n        DebrisField,\n        HarvestingHead,\n        Drill_Base,\n        Drill_Gear1,\n        Drill_Gear2,\n        Drill_Gear3,\n        LaserDrill,\n        NuclearDrill,\n        NuclearDrillHead,\n        PressureDrill,\n        SawDrill,\n        ThermalDrill,\n        ThermalDrillHead,\n        MotherShipSaya,\n        MotherShipSaya_COL,\n        MotherShipSaya_LOD1,\n\n        //Small ships\n        SmallShip_Doon,\n        SmallShip_Doon_LOD1,\n        SmallShip_Jacknife,\n        SmallShip_Jacknife_LOD1,\n        SmallShip_Hammer,\n        SmallShip_Hammer_LOD1,\n        SmallShip_ORG,\n        SmallShip_ORG_LOD1,\n        SmallShip_ORG_NoPaint,\n        SmallShip_ORG_NoPaint_LOD1,\n        SmallShip_YG_Closed,\n        SmallShip_YG_Closed_LOD1,\n        SmallShip_Hawk,\n        SmallShip_Hawk_LOD1,\n        SmallShip_Phoenix,\n        SmallShip_Phoenix_LOD1,\n        SmallShip_Leviathan,\n        SmallShip_Leviathan_LOD1,\n        SmallShip_Rockheater,\n        SmallShip_Rockheater_LOD1,\n        SmallShip_SteelHead,\n        SmallShip_SteelHead_LOD1,\n        SmallShip_Talon,\n        SmallShip_Talon_LOD1,\n        SmallShip_Stanislav,\n        SmallShip_Stanislav_LOD1,\n        Liberator_LOD1,\n        Enforcer_LOD1,\n        Kammler_LOD1,\n        Gettysburg_LOD1,\n        Virginia_LOD1,\n        Baer_LOD1,\n        Hewer_LOD1,\n        Razorclaw_LOD1,\n        Greiser_LOD1,\n        Tracer_LOD1,\n\n        // Drones\n        DroneCN,\n        DroneSS,\n        DroneUS,\n\n        // Largeship weapons\n        LargeShipMachineGunBarrel,\n        LargeShipMachineGunBase,\n        LargeShipMachineGunBase_COL,\n        LargeShipMissileLauncher9Barrel,\n        LargeShipMissileLauncher9Base,\n        LargeShipMissileLauncher9Base_COL,\n        LargeShipMissileLauncher4Barrel,\n        LargeShipMissileLauncher4Base,\n        LargeShipMissileLauncher4Base_COL,\n        LargeShipMissileLauncher6Barrel,\n        LargeShipMissileLauncher6Base,\n        LargeShipMissileLauncher6Base_COL,\n        LargeShipCiwsBarrel,\n        LargeShipCiwsBase,\n        LargeShipCiwsBase_COL,\n        LargeShipAutocannonBarrel,\n        LargeShipAutocannonBase,\n        LargeShipAutocannonBase_COL,\n\n        StaticAsteroid10m_A_LOD0,\n        StaticAsteroid10m_A_LOD1,\n        StaticAsteroid10m_A_LOD2,\n        StaticAsteroid20m_A_LOD0,\n        StaticAsteroid20m_A_LOD1,\n        StaticAsteroid20m_A_LOD2,\n        StaticAsteroid30m_A_LOD0,\n        StaticAsteroid30m_A_LOD1,\n        StaticAsteroid30m_A_LOD2,\n        StaticAsteroid50m_A_LOD0,\n        StaticAsteroid50m_A_LOD1,\n        StaticAsteroid50m_A_LOD2,\n        StaticAsteroid100m_A_LOD0,\n        StaticAsteroid100m_A_LOD1,\n        StaticAsteroid100m_A_LOD2,\n        StaticAsteroid300m_A_LOD0,\n        StaticAsteroid300m_A_LOD1,\n        StaticAsteroid300m_A_LOD2,\n        StaticAsteroid500m_A_LOD0,\n        StaticAsteroid500m_A_LOD1,\n        StaticAsteroid500m_A_LOD2,\n        StaticAsteroid1000m_A_LOD0,\n        StaticAsteroid1000m_A_LOD1,\n        StaticAsteroid1000m_A_LOD2,\n        StaticAsteroid2000m_A_LOD0,\n        StaticAsteroid2000m_A_LOD1,\n        StaticAsteroid2000m_A_LOD2,\n        StaticAsteroid5000m_A_LOD0,\n        StaticAsteroid5000m_A_LOD1,\n        StaticAsteroid5000m_A_LOD2,\n        StaticAsteroid10000m_A_LOD0,\n        StaticAsteroid10000m_A_LOD1,\n        StaticAsteroid10000m_A_LOD2,\n        /*  Removed\n        StaticAsteroid40000m_A_LOD0,\n        StaticAsteroid40000m_A_LOD1,\n        StaticAsteroid40000m_A_LOD2,\n          */\n        StaticAsteroid10m_B_LOD0,\n        StaticAsteroid10m_B_LOD1,\n        StaticAsteroid10m_B_LOD2,\n        StaticAsteroid20m_B_LOD0,\n        StaticAsteroid20m_B_LOD1,\n        StaticAsteroid20m_B_LOD2,\n        StaticAsteroid30m_B_LOD0,\n        StaticAsteroid30m_B_LOD1,\n        StaticAsteroid30m_B_LOD2,\n        StaticAsteroid50m_B_LOD0,\n        StaticAsteroid50m_B_LOD1,\n        StaticAsteroid50m_B_LOD2,\n        StaticAsteroid100m_B_LOD0,\n        StaticAsteroid100m_B_LOD1,\n        StaticAsteroid100m_B_LOD2,\n        StaticAsteroid300m_B_LOD0,\n        StaticAsteroid300m_B_LOD1,\n        StaticAsteroid300m_B_LOD2,\n        StaticAsteroid500m_B_LOD0,\n        StaticAsteroid500m_B_LOD1,\n        StaticAsteroid500m_B_LOD2,\n        StaticAsteroid1000m_B_LOD0,\n        StaticAsteroid1000m_B_LOD1,\n        StaticAsteroid1000m_B_LOD2,\n        StaticAsteroid2000m_B_LOD0,\n        StaticAsteroid2000m_B_LOD1,\n        StaticAsteroid2000m_B_LOD2,\n        StaticAsteroid5000m_B_LOD0,\n        StaticAsteroid5000m_B_LOD1,\n        StaticAsteroid5000m_B_LOD2,\n        StaticAsteroid10000m_B_LOD0,\n        StaticAsteroid10000m_B_LOD1,\n        StaticAsteroid10000m_B_LOD2,\n                 /*    Removed\n        StaticAsteroid10m_C_LOD0,\n        StaticAsteroid10m_C_LOD1,\n        StaticAsteroid20m_C_LOD0,\n        StaticAsteroid20m_C_LOD1,\n        StaticAsteroid30m_C_LOD0,\n        StaticAsteroid30m_C_LOD1,\n        StaticAsteroid50m_C_LOD0,\n        StaticAsteroid50m_C_LOD1,\n        StaticAsteroid100m_C_LOD0,\n        StaticAsteroid100m_C_LOD1,\n        StaticAsteroid300m_C_LOD0,\n        StaticAsteroid300m_C_LOD1,\n        StaticAsteroid500m_C_LOD0,\n        StaticAsteroid500m_C_LOD1,\n        StaticAsteroid1000m_C_LOD0,\n        StaticAsteroid1000m_C_LOD1,\n        StaticAsteroid2000m_C_LOD0,\n        StaticAsteroid2000m_C_LOD1,\n        StaticAsteroid5000m_C_LOD0,\n        StaticAsteroid5000m_C_LOD1,\n        StaticAsteroid10000m_C_LOD0,\n        StaticAsteroid10000m_C_LOD1,\n\n        StaticAsteroid10m_D_LOD0,\n        StaticAsteroid10m_D_LOD1,\n        StaticAsteroid20m_D_LOD0,\n        StaticAsteroid20m_D_LOD1,\n        StaticAsteroid30m_D_LOD0,\n        StaticAsteroid30m_D_LOD1,\n        StaticAsteroid50m_D_LOD0,\n        StaticAsteroid50m_D_LOD1,\n        StaticAsteroid100m_D_LOD0,\n        StaticAsteroid100m_D_LOD1,\n        StaticAsteroid300m_D_LOD0,\n        StaticAsteroid300m_D_LOD1,\n        StaticAsteroid500m_D_LOD0,\n        StaticAsteroid500m_D_LOD1,\n        StaticAsteroid1000m_D_LOD0,\n        StaticAsteroid1000m_D_LOD1,\n        StaticAsteroid2000m_D_LOD0,\n        StaticAsteroid2000m_D_LOD1,\n        StaticAsteroid5000m_D_LOD0,\n        StaticAsteroid5000m_D_LOD1,\n        StaticAsteroid10000m_D_LOD0,\n        StaticAsteroid10000m_D_LOD1,\n\n        StaticAsteroid10m_E_LOD0,\n        StaticAsteroid10m_E_LOD1,\n        StaticAsteroid20m_E_LOD0,\n        StaticAsteroid20m_E_LOD1,\n        StaticAsteroid30m_E_LOD0,\n        StaticAsteroid30m_E_LOD1,\n        StaticAsteroid50m_E_LOD0,\n        StaticAsteroid50m_E_LOD1,\n        StaticAsteroid100m_E_LOD0,\n        StaticAsteroid100m_E_LOD1,\n        StaticAsteroid300m_E_LOD0,\n        StaticAsteroid300m_E_LOD1,\n        StaticAsteroid500m_E_LOD0,\n        StaticAsteroid500m_E_LOD1,\n        StaticAsteroid1000m_E_LOD0,\n        StaticAsteroid1000m_E_LOD1,\n        StaticAsteroid2000m_E_LOD0,\n        StaticAsteroid2000m_E_LOD1,\n        StaticAsteroid5000m_E_LOD0,\n        StaticAsteroid5000m_E_LOD1,\n        StaticAsteroid10000m_E_LOD0,\n        StaticAsteroid10000m_E_LOD1,\n             */\n        UniversalLauncher,\n        MineBasic,\n        MineSmart,\n        FlashBomb,\n        IlluminatingShell,\n        DecoyFlare,\n        SphereExplosive,\n        SmokeBomb,\n        AsteroidKiller,\n        DirectionalExplosive,\n        TimeBomb,\n        RemoteBomb,\n        GravityBomb,\n        Hologram,\n        RemoteCamera,\n        Rifle,\n        Sniper,\n        MachineGun,\n        Shotgun,\n        MinerShip_Generic_CockpitInterior,\n        MinerShip_Generic_CockpitGlass,\n        Ardant,\n        Ardant_COL,\n        Ardant_LOD1,\n        //PREFAB MODULES\n        GizmoTranslation,\n        GizmoRotation,\n        p430_a01_passage_10m,\n        p430_a01_passage_10m_LOD1,\n        p430_a01_passage_10m_COL,\n        p430_a02_passage_40m,\n        p430_a02_passage_40m_LOD1,\n        p430_a02_passage_40m_COL,\n        p424_a01_pipe_base,\n        p424_a01_pipe_base_COL,\n        p423_a01_pipe_junction,\n        p422_a01_pipe_turn_90,\n        p421_a01_pipe_straight_80m,\n        p421_a02_pipe_straight_40m,\n        p421_a03_pipe_straight_10m,\n        p413_g01_junction_6axes,\n        p413_g01_junction_6axes_COL,\n        p414_g02_entrance_60m,\n        p414_g02_entrance_60m_LOD1,\n        p414_g02_entrance_60m_COL,\n        p410_g01_turn_90_right_0m,\n        p410_g01_turn_90_right_0m_LOD1,\n        p410_g01_turn_90_right_0m_COL,\n        p411_g01_straight_1,\n        p411_g02_straight_2,\n        p411_g03_straight_3,\n        p411_g04_straight_4,\n        //p414_f02_entrance_60m,\n        p412_f21_turn_s_up,\n        p412_f21_turn_s_up_COL,\n        p412_f22_turn_s_left,\n        p412_f22_turn_s_left_COL,\n        p412_f23_turn_s_right,\n        p412_f23_turn_s_right_COL,\n        p412_f24_turn_s_down,\n        p412_f24_turn_s_down_COL,\n        p412_f01_turn_90_up_230m,\n        p412_f02_turn_90_left_230m,\n        p412_f02_turn_90_left_230m_COL,\n        p412_f02_turn_90_left_230m_LOD1,\n        p412_f03_turn_90_right_230m,\n        p412_f03_turn_90_right_230m_LOD1,\n        p412_f03_turn_90_right_230m_COL,\n        p412_f04_turn_90_down_230m,\n        p412_f04_turn_90_down_230m_COL,\n        p411_f01_straight_1,\n        p411_f02_straight_2,\n        p411_f03_straight_3,\n        p414_e01_entrance_60m,\n        p414_e01_entrance_60m_LOD1,\n        p414_e01_entrance_60m_COL,\n        p411_e01_straight_1,\n        p411_e02_straight_2,\n        p411_e03_straight_3,\n        p411_e04_straight_4,\n        p411_e05_straight_5,\n        p411_e01_straight_1_COL,\n        p411_e02_straight_2_COL,\n        p411_e03_straight_3_COL,\n        p411_e04_straight_4_COL,\n        p411_e05_straight_5_COL,\n        p415_d01_doorcase,\n        p415_d01_doorcase_COL,\n        p415_d02_door1,\n        p415_d03_door2_a,\n        p415_d03_door2_a_COL,\n        p415_d03_door2_b,\n        p415_d03_door2_b_COL,\n        p413_d01_junction_t_horizontal,\n        p413_d03_junction_x_horizontal,\n        p413_d03_junction_x_horizontal_COL,\n        p414_d01_entrance_60m,\n        p414_d01_entrance_60m_COL,\n        p411_d01_straight_10m,\n        p411_d01_straight_10m_LOD1,\n        p411_d01_straight_10m_COL,\n        p411_d02_straight_40m_with_hole,\n        p411_d03_straight_60m,\n        p411_d04_straight_120m,\n        p411_d05_straight_180m,\n        p415_c01_doorcase,\n        p415_c02_door1_right,\n        p415_c02_door1_right_COL,\n        p415_c02_door1_left,\n        p415_c02_door1_left_COL,\n        p415_c03_door2_a_left,\n        p415_c03_door2_a_right,\n        p415_c03_door2_b_left,\n        p415_c03_door2_b_right,\n        p415_c02_door1,\n        p415_c03_door2_a,\n        p415_c03_door2_b,\n        p415_c04_door3,\n        p413_c01_junction_t_horizontal,\n        p413_c01_junction_t_horizontal_LOD1,\n        p413_c01_junction_x_horizontal,\n        p413_c01_junction_x_horizontal_COL,\n        p413_c01_junction_x_horizontal_LOD1,\n        p414_c01_entrance_60m,\n        p414_c01_entrance_60m_COL,\n        p411_c01_straight_10m,\n        p411_c01_straight_10m_COL,\n        p411_c02_straight_40m_with_hole,\n        p411_c02_straight_40m_with_hole_COL,\n        p411_c02_straight_40m_with_hole_LOD1,\n        p411_c03_straight_60m,\n        p411_c03_straight_60m_LOD1,\n        p411_c03_straight_60m_COL,\n        p411_c04_straight_120m,\n        p411_c04_straight_120m_LOD1,\n        p411_c04_straight_120m_COL,\n        p411_c05_straight_180m,\n        p415_b01_doorcase,\n        p415_b01_doorcase_LOD1,\n        p415_b01_doorcase_COL,\n        //p415_b02_door,\n        p413_b01_junction_t_horizontal,\n        p413_b01_junction_t_horizontal_LOD1,\n        p413_b01_junction_t_horizontal_COL,\n        p413_b02_junction_t_vertical,\n        p413_b02_junction_t_vertical_LOD1,\n        p413_b02_junction_t_vertical_COL,\n        p414_b02_entrance_60m,\n        p412_b21_turn_s_up,\n        p412_b21_turn_s_up_COL,\n        p412_b22_turn_s_left,\n        p412_b23_turn_s_right,\n        p412_b23_turn_s_right_COL,\n        p412_b24_turn_s_down,\n        p412_b11_turn_90_up_160m,\n        p412_b12_turn_90_left_160m,\n        p412_b13_turn_90_right_160m,\n        p412_b13_turn_90_right_160m_COL,\n        p412_b14_turn_90_down_160m,\n        p412_b14_turn_90_down_160m_COL,\n        p412_b01_turn_90_up_80m,\n        p412_b01_turn_90_up_80m_COL,\n        p412_b02_turn_90_left_80m,\n        p412_b02_turn_90_left_80m_COL,\n        p412_b03_turn_90_right_80m,\n        p412_b03_turn_90_right_80m_COL,\n        p412_b04_turn_90_down_80m,\n        p412_b04_turn_90_down_80m_COL,\n        p411_b01_straight_10m,\n        p411_b01_straight_10m_LOD1,\n        p411_b01_straight_10m_COL,\n        p411_b02_straight_30m_yellow,\n        p411_b02_straight_30m_yellow_LOD1,\n        p411_b02_straight_30m_yellow_COL,\n        p411_b03_straight_320m,\n        p411_b03_straight_320m_LOD1,\n        p411_b03_straight_320m_COL,\n        p411_b04_straight_80m_with_side_grates,\n        p411_b04_straight_80m_with_side_grates_LOD1,\n        p411_b04_straight_80m_with_side_grates_COL,\n        p411_b05_straight_80m_with_side_open,\n        p411_b05_straight_80m_with_side_open_LOD1,\n        p411_b05_straight_80m_with_side_open_COL,\n        p411_b06_straight_180m_concrete,\n        p411_b06_straight_180m_concrete_LOD1,\n        p411_b06_straight_180m_concrete_COL,\n        p411_b06_straight_200m,\n        p411_b06_straight_200m_LOD1,\n        p411_b06_straight_200m_COL,\n        p411_b07_straight_180m_blue,\n        p411_b07_straight_180m_blue_LOD1,\n        p411_b07_straight_180m_blue_COL,\n        p411_b09_straight_30m_gray,\n        p411_b09_straight_30m_gray_LOD1,\n        p411_b09_straight_30m_gray_COL,\n        p411_b11_straight_220m,\n        p411_b11_straight_220m_LOD1,\n        p411_b11_straight_220m_COL,\n        p411_b12_straight_160m_dark_metal,\n        p411_b12_straight_160m_dark_metal_LOD1,\n        p411_b12_straight_160m_dark_metal_COL,\n        p411_b13_straight_100m_tube_inside,\n        p411_b13_straight_100m_tube_inside_LOD1,\n        p411_b13_straight_100m_tube_inside_COL,\n        p415_a01_doorcase,\n        p415_a01_doorcase_LOD1,\n        p415_a01_doorcase_COL,\n        p415_a02_door,\n        p415_a02_door_left,\n        p415_a02_door_left_COL,\n        p415_a02_door_right,\n        p415_a02_door_right_COL,\n        p413_a01_junction_t_horizontal,\n        p413_a01_junction_t_horizontal_LOD1,\n        p413_a01_junction_t_horizontal_COL,\n        p413_a02_junction_t_vertical,\n        p413_a02_junction_t_vertical_LOD1,\n        p413_a02_junction_t_vertical_COL,\n        //p414_a01_entrance_30m,\n        p414_a02_entrance_60m,\n        p414_a02_entrance_60m_LOD1,\n        p414_a02_entrance_60m_COL,\n        p412_a21_turn_s_up,\n        p412_a21_turn_s_up_LOD1,\n        p412_a21_turn_s_up_COL,\n        p412_a22_turn_s_left,\n        p412_a22_turn_s_left_LOD1,\n        p412_a22_turn_s_left_COL,\n        p412_a23_turn_s_right,\n        p412_a23_turn_s_right_LOD1,\n        p412_a23_turn_s_right_COL,\n        p412_a24_turn_s_down,\n        p412_a24_turn_s_down_LOD1,\n        p412_a24_turn_s_down_COL,\n        p412_a11_turn_90_up_160m,\n        p412_a11_turn_90_up_160m_LOD1,\n        p412_a11_turn_90_up_160m_COL,\n        p412_a12_turn_90_left_160m,\n        p412_a12_turn_90_left_160m_LOD1,\n        p412_a12_turn_90_left_160m_COL,\n        p412_a13_turn_90_right_160m,\n        p412_a13_turn_90_right_160m_LOD1,\n        p412_a13_turn_90_right_160m_COL,\n        p412_a14_turn_90_down_160m,\n        p412_a14_turn_90_down_160m_LOD1,\n        p412_a14_turn_90_down_160m_COL,\n        p412_a01_turn_90_up_80m,\n        p412_a01_turn_90_up_80m_LOD1,\n        p412_a01_turn_90_up_80m_COL,\n        p412_a02_turn_90_left_80m,\n        p412_a02_turn_90_left_80m_LOD1,\n        p412_a02_turn_90_left_80m_COL,\n        p412_a03_turn_90_right_80m,\n        p412_a03_turn_90_right_80m_LOD1,\n        p412_a03_turn_90_right_80m_COL,\n        p412_a04_turn_90_down_80m,\n        p412_a04_turn_90_down_80m_LOD1,\n        p412_a04_turn_90_down_80m_COL,\n        p411_a01_straight_10m,\n        p411_a01_straight_10m_LOD1,\n        p411_a01_straight_10m_COL,\n        p411_a02_straight_60m_with_hole,\n        p411_a02_straight_60m_with_hole_LOD1,\n        p411_a02_straight_60m_with_hole_COL,\n        p411_a03_straight_120m,\n        p411_a03_straight_120m_LOD1,\n        p411_a03_straight_120m_COL,\n        p411_a04_straight_80m,\n        p411_a04_straight_80m_LOD1,\n        p411_a04_straight_80m_COL,\n        p411_a05_straight_80m_with_extension,\n        p411_a05_straight_80m_with_extension_LOD1,\n        p411_a05_straight_80m_with_extension_COL,\n        p382_e01_bridge5,\n        p382_e01_bridge5_LOD1,\n        p382_d01_bridge4,\n        p382_d01_bridge4_COL,\n        p382_c01_bridge3,\n        p382_c01_bridge3_COL,\n        p382_b01_bridge2,\n        p382_a01_bridge1,\n        p382_a01_bridge1_COL,\n        p382_a01_bridge1_LOD1,\n        p381_c01_building3,\n        p381_c01_building3_COL,\n        p381_b01_building2,\n        p381_b01_building2_COL,\n        p381_a01_building1,\n        p381_a01_building1_COL,\n        //p361_a01_small_hangar,\n        //p361_a01_small_hangar_COL,\n        p362_a01_short_distance_antenna,\n        p362_a01_short_distance_antenna_COL,\n        p361_a01_long_distance_antenna,\n        p361_a01_long_distance_antenna_COL,\n        p351_a01_weapon_mount,\n        p351_a01_weapon_mount_COL,\n        p345_a01_refinery,\n        p345_a01_refinery_COL,\n        p344_a01_container_arm_filled,\n        p344_a01_container_arm_filled_LOD1,\n        p344_a01_container_arm_filled_COL,\n        p344_a02_container_arm_empty,\n        p344_a02_container_arm_empty_COL,\n        p344_a02_container_arm_empty_LOD1,\n        p343_a01_ore_storage,\n        p343_a01_ore_storage_LOD1,\n        p343_a01_ore_storage_COL,\n        p342_a01_loading_bay,\n        p342_a01_loading_bay_LOD1,\n        p342_a01_loading_bay_COL,\n        p341_b01_open_dock_variation1,\n        p341_b01_open_dock_variation1_LOD1,\n        p341_b01_open_dock_variation1_COL,\n        p341_b02_open_dock_variation2,\n        p341_b02_open_dock_variation2_LOD1,\n        p341_b02_open_dock_variation2_COL,\n        p341_a01_open_dock_variation1,\n        p341_a01_open_dock_variation1_LOD1,\n        p341_a01_open_dock_variation1_COL,\n        p341_a01_open_dock_variation1_doorleft,\n        p341_a01_open_dock_variation1_doorright,\n        p341_a02_open_dock_variation2,\n        p341_a02_open_dock_variation2_LOD1,\n        p341_a02_open_dock_variation2_COL,\n        p333_a01_hydroponic_building,\n        p333_a01_hydroponic_building_COL,\n        p332_a01_oxygen_storage,\n        p332_a01_oxygen_storage_LOD1,\n        p332_a01_oxygen_storage_COL,\n        p331_a01_oxygen_generator,\n        p331_a01_oxygen_generator_COL,\n        p324b01_fuel_storage_b,\n        p324a01_fuel_storage_a,\n        p323a01_fuel_generator,\n        p323a01_fuel_generator_COL,\n        p322a01_battery,\n        p322a01_battery_COL,\n        p321c01_inertia_generator,\n        p321c01_inertia_generator_COL,\n        p321c01_inertia_generator_center,\n        p321c01_inertia_generator_center_COL,\n        p321c01_inertia_generator_center_LOD1,\n        p321c01_inertia_generator_LOD1,\n        p321b01_nuclear_reactor,\n        //p321a01_solar_panel,\n        //p321a01_solar_panel_LOD1,\n        //p321a01_solar_panel_COL,\n        p312a01_short_term_thruster_latitude,\n        p312a01_short_term_thruster_latitude_COL,\n        p312a02_short_term_thruster_lateral,\n        p312a02_short_term_thruster_lateral_COL,\n        p311a01_long_term_thruster,\n        p231a01_armor,\n        p231a02_armor,\n        p231a03_armor,\n        p231a04_armor,\n        p231a05_armor,\n        p231a06_armor,\n        p231a07_armor,\n        p231a08_armor,\n        p231a09_armor,\n        p231a10_armor,\n        p231a11_armor,\n        p231a12_armor,\n        p231a13_armor,\n        p231a14_armor,\n        p231a15_armor,\n        p231a16_armor,\n        p231a17_armor,\n        p231a18_armor,\n\n        p221a01_chamber_v1,\n        p221a01_chamber_v1_LOD1,\n        p221a01_chamber_v1_COL,\n\n        p221b01_chamber_v1,\n        p221b01_chamber_v1_LOD1,\n\n        p221c01_chamber_v1,\n        p221c01_chamber_v1_LOD1,\n        p221c01_chamber_v1_COL,\n\n        p221d01_chamber_v1,\n        p221d01_chamber_v1_LOD1,\n        p221d01_chamber_v1_COL,\n\n        p221e01_chamber_v1,\n        p221e01_chamber_v1_LOD1,\n        p221e01_chamber_v1_COL,\n\n        p221f01_chamber_v1,\n        p221f01_chamber_v1_LOD1,\n        p221f01_chamber_v1_COL,\n\n        p221g01_chamber_v1,\n        p221g01_chamber_v1_LOD1,\n        p221g01_chamber_v1_COL,\n\n        p221h01_chamber_v1,\n        p221h01_chamber_v1_LOD1,\n        p221h01_chamber_v1_COL,\n\n        p221j01_chamber_v1,\n        p221j01_chamber_v1_LOD1,\n        p221j01_chamber_v1_COL,\n\n        p221k01_chamber_v1,\n        p221k01_chamber_v1_LOD1,\n\n\n\n\n        p211h01_panel_535mx130m,\n        p211h01_panel_535mx130m_COL,\n        p211h01_panel_535mx130m_LOD1,\n        p211g01_panel_120mx60m,\n        p211g02_panel_60mx60m,\n        p211g03_panel_60mx30m,\n        p211g03_panel_60mx30m_LOD1,\n        p211g03_panel_60mx30m_COL,\n        //p211g03_panel_60mx30m_COL,\n        p211f01_panel_120mx60m,\n        p211f01_panel_120mx60m_LOD1,\n        p211f01_panel_120mx60m_COL,\n        p211f02_panel_60mx60m,\n        p211f02_panel_60mx60m_LOD1,\n        p211f02_panel_60mx60m_COL,\n        p211f03_panel_60mx30m,\n        p211f03_panel_60mx30m_COL,\n        p211e01_panel_120mx60m,\n        p211e01_panel_120mx60m_LOD1,\n        p211e01_panel_120mx60m_COL,\n        p211e02_panel_60mx60m,\n        p211e02_panel_60mx60m_LOD1,\n        p211e02_panel_60mx60m_COL,\n        p211e03_panel_60mx30m,\n        p211e03_panel_60mx30m_LOD1,\n        p211e03_panel_60mx30m_COL,\n        p211d01_panel_120mx60m,\n        p211d01_panel_120mx60m_LOD1,\n        p211d01_panel_120mx60m_COL,\n        p211d02_panel_60mx60m,\n        p211d03_panel_60mx30m,\n        p211d03_panel_60mx30m_LOD1,\n        p211d03_panel_60mx30m_COL,\n        p211c01_panel_120mx60m,\n        p211c02_panel_60mx60m,\n        p211c02_panel_60mx60m_COL,\n        p211c03_panel_60mx30m,\n        p211b01_panel_120mx60m,\n        p211b01_panel_120mx60m_COL,\n        p211b02_panel_60mx60m,\n        p211b02_panel_60mx60m_COL,\n        p211b03_panel_60mx30m,\n        p211b03_panel_60mx30m_COL,\n        p211a01_panel_120mx60m,\n        p211a01_panel_120mx60m_COL,\n        p211a02_panel_60mx60m,\n        p211a02_panel_60mx60m_COL,\n        p211a03_panel_60mx30m,\n        p211a03_panel_60mx30m_COL,\n        p142b01_cage_empty,\n        p142b02_cage_halfcut,\n        p142b03_cage_with_corners,\n        p142b03_cage_with_corners_LOD1,\n        p142b03_cage_with_corners_COL,\n        p142b11_cage_pillar,\n        p142b11_cage_pillar_COL,\n        p142b12_cage_edge,\n        p142a01_cage_empty,\n        p142a01_cage_empty_COL,\n        p142a02_cage_halfcut,\n        p142a02_cage_halfcut_COL,\n        p142a03_cage_with_corners,\n        p142a03_cage_with_corners_COL,\n        p142a11_cage_pillar,\n        p142a12_cage_edge,\n        p141b01_thick_frame_straight_10m,\n        p141b02_thick_frame_straight_60m,\n        p141b02_thick_frame_straight_60m_COL,\n        p141b11_thick_frame_edge,\n        p141b12_thick_frame_corner,\n        p141b31_thick_frame_joint,\n        p141b31_thick_frame_joint_COL,\n        p141a01_thick_frame_straight_10m,\n        p141a01_thick_frame_straight_10m_COL,\n        p141a02_thick_frame_straight_60m,\n        p141a02_thick_frame_straight_60m_COL,\n        p141a11_thick_frame_edge,\n        p141a11_thick_frame_edge_COL,\n        p141a12_thick_frame_corner,\n        p141a31_thick_frame_joint,\n        p141a31_thick_frame_joint_COL,\n        p130j01_j_straight_30m,\n        p130j01_j_straight_30m_COL,\n        p130j02_j_straight_10m,\n        p130j02_j_straight_10m_COL,\n        p130i01_i_straight_30m,\n        p130i02_i_straight_10m,\n        p130i02_i_straight_10m_COL,\n        p130h01_h_straight_30m,\n        p130h01_h_straight_30m_COL,\n        p130h02_h_straight_10m,\n        p130h02_h_straight_10m_COL,\n        //p130g01_g_straight_30m,\n        //p130g02_g_straight_10m,\n        //p130f01_f_straight_30m,\n        //p130f02_f_straight_10m,\n        //p130e01_e_straight_30m,\n        //p130e02_e_straight_10m,\n        //p130d01_d_straight_30m,\n        ////p130d02_d_straight_10m,\n        //p130c01_c_straight_30m,\n        //p130c02_c_straight_10m,\n        //p130b01_b_straight_30m,\n        //p130b02_b_straight_10m,\n        //p130a01_a_straight_30m,\n        //p130a02_a_straight_10m,\n        p120d01_d_straight_10m,\n        p120d01_d_straight_10m_COL,\n        p120d02_d_straight_40m,\n        p120d02_d_straight_40m_COL,\n        p120c01_c_straight_10m,\n        p120c01_c_straight_10m_COL,\n        p120c02_c_straight_40m,\n        p120c02_c_straight_40m_COL,\n        p120b01_b_straight_10m,\n        p120b01_b_straight_10m_COL,\n        p120b02_b_straight_40m,\n        p120b02_b_straight_40m_COL,\n        p120a01_strong_lattice_straight_10m,\n        p120a01_strong_lattice_straight_10m_COL,\n        p120a02_strong_lattice_straight_60m,\n        p120a03_strong_lattice_straight_120m,\n        p120a21_strong_lattice_junction_t_strong,\n        p120a21_strong_lattice_junction_t_strong_COL,\n        p120a22_strong_lattice_junction_t_weak,\n        p120a23_strong_lattice_junction_t_rotated,\n        p120a23_strong_lattice_junction_t_rotated_COL,\n        p120a51_strong_to_weak_lattice_2to1,\n        p120a51_strong_to_weak_lattice_2to1_COL,\n        p120a52_strong_to_weak_lattice_1to2,\n        p120a61_weak_lattice_junction_t_rotated,\n        p120a61_weak_lattice_junction_t_rotated_COL,\n        p110b01_lattice_beam_straight_10m,\n        p110b02_lattice_beam_straight_30m,\n        p110b02_lattice_beam_straight_30m_COL,\n        p110b03_lattice_beam_straight_60m,\n        p110b04_lattice_beam_straight_60m_with_panels,\n        p110b21_lattice_beam_junction_t_strong,\n        p110b22_lattice_beam_junction_t_weak,\n        p110b31_lattice_beam_joint_horizontal,\n        p110b31_lattice_beam_joint_horizontal_COL,\n        p110b32_lattice_beam_joint_vertical,\n        p110b32_lattice_beam_joint_vertical_COL,\n        p110a01_solid_beam_straight_10m,\n        p110a01_solid_beam_straight_10m_COL,\n        p110a02_solid_beam_straight_20m,\n        p110a02_solid_beam_straight_20m_COL,\n        p110a03_solid_beam_straight_40m_with_hole,\n        p110a03_solid_beam_straight_40m_with_hole_COL,\n        p110a04_solid_beam_straight_40m_lattice,\n        p110a04_solid_beam_straight_40m_lattice_LOD1,\n        p110a04_solid_beam_straight_40m_lattice_COL,\n        p110a05_solid_beam_straight_80m,\n        p110a11_solid_beam_junction_x_strong,\n        p110a11_solid_beam_junction_x_strong_LOD1,\n        p110a11_solid_beam_junction_x_strong_COL,\n        p110a12_solid_beam_junction_x_weak,\n        p110a13_solid_beam_junction_x_rotated,\n        p110a13_solid_beam_junction_x_rotated_LOD1,\n        p110a13_solid_beam_junction_x_rotated_COL,\n        p110a21_solid_beam_junction_t_strong,\n        p110a21_solid_beam_junction_t_strong_COL,\n        p110a22_solid_beam_junction_t_weak,\n        p110a23_solid_beam_junction_t_rotated,\n        p110a23_solid_beam_junction_t_rotated_COL,\n        p110a31_solid_beam_joint_horizontal,\n        p110a31_solid_beam_joint_horizontal_COL,\n        p110a32_solid_beam_joint_vertical,\n        p110a32_solid_beam_joint_vertical_COL,\n        p110a33_solid_beam_joint_longitudinal,\n        p110a33_solid_beam_joint_longitudinal_COL,\n        p110a41_solid_beam_superjoint,\n        p110a41_solid_beam_superjoint_COL,\n\n        //Debug\n        plane_10_50,\n        plane_50_20,\n        plane_100_10,\n        plane_100_50,\n        plane_128_70,\n        plane_150_50,\n        plane_255_70,\n        plane_300_70,\n        plane_800_10,\n        plane_800_70,\n        sphere_smooth,\n\n        //Simple object draw\n        BoxLowRes,\n        BoxHiRes,\n        Sphere,\n        Sphere_low,\n        Cone,\n        Hemisphere,\n        Hemisphere_low,\n        Capsule,\n\n        //Lights\n        default_light_0,\n        default_light_0_COL,\n        p521_a01_light1,\n        p521_a01_light1_COL,\n        p521_a02_light2,\n        p521_a02_light2_COL,\n        p521_a03_light3,\n        p521_a03_light3_COL,\n        p521_a04_light4,\n        p521_a04_light4_COL,\n\n        //particles prefab\n        default_particlesprefab_0,\n        p551_a01_particles,\n        p551_b01_particles,\n        p551_c01_particles,\n        p551_d01_particles,\n\n        //sound prefab\n        default_soundprefab_0,\n        p561_a01_sound,\n        p561_b01_sound,\n        p561_c01_sound,\n        p561_d01_sound,\n\n        // billboard prefab:\n        p511_a01_billboard,\n        p511_a01_billboard_COL,\n        p511_a01_billboard_LOD1,\n        p511_a02_billboard,\n        p511_a02_billboard_COL,\n        p511_a02_billboard_LOD1,\n        p511_a03_billboard,\n        p511_a03_billboard_COL,\n        p511_a03_billboard_LOD1,\n        p511_a04_billboard,\n        p511_a04_billboard_COL,\n        p511_a04_billboard_LOD1,\n        p511_a05_billboard,\n        p511_a05_billboard_COL,\n        p511_a05_billboard_LOD1,\n        p511_a06_billboard,\n        p511_a06_billboard_COL,\n        p511_a06_billboard_LOD1,\n        p511_a07_billboard,\n        p511_a07_billboard_COL,\n        p511_a07_billboard_LOD1,\n        p511_a08_billboard,\n        p511_a08_billboard_COL,\n        p511_a08_billboard_LOD1,\n        p511_a09_billboard,\n        p511_a09_billboard_COL,\n        p511_a09_billboard_LOD1,\n        p511_a10_billboard,\n        p511_a10_billboard_COL,\n        p511_a10_billboard_LOD1,\n        p511_a11_billboard,\n        p511_a11_billboard_COL,\n        p511_a11_billboard_LOD1,\n        p511_a12_billboard,\n        p511_a12_billboard_COL,\n        p511_a12_billboard_LOD1,        \n        p511_a14_billboard,\n        //p511_a14_billboard_COL,\n        p511_a14_billboard_LOD1,\n        p511_a15_billboard,\n        p511_a15_billboard_COL,\n        p511_a15_billboard_LOD1,\n        p511_a16_billboard,\n        p511_a16_billboard_COL,\n        p511_a16_billboard_LOD1,\n\n        // sign prefabs:\n        p531_a01_sign1,\n        p531_a02_sign2,\n        p531_a03_sign3,\n        p531_a04_sign4,\n        p531_a05_sign5,\n        p531_a06_sign6,\n        p531_a07_sign7,\n        p531_a08_sign8,\n        p531_a09_sign9,\n        p531_a10_sign10,\n        p531_a11_sign11,\n        p531_a12_sign12,\n\n        p531_c_administrative_area,\n        p531_c_armory,\n        p531_c_arrow_L,\n        p531_c_arrow_R,\n        p531_c_arrow_str,\n        p531_c_cargo_bay,\n        p531_c_command_center,\n        p531_c_commercial_area,\n        p531_c_communications,\n        p531_c_defenses,\n        p531_c_docks,\n        p531_c_docks_COL,\n        p531_c_emergency_exit,\n        p531_c_engineering_area,\n        p531_c_engineering_area_COL,\n        p531_c_exit,\n        p531_c_experimental_labs,\n        p531_c_foundry,\n        p531_c_habitats,\n        p531_c_habitats_COL,\n        p531_c_hangars,\n        p531_c_hangars_COL,\n        p531_c_industrial_area,\n        p531_c_landing_bay,\n        p531_c_maintenance,\n        p531_c_maintenance_COL,\n        p531_c_military_area,\n        p531_c_mines,\n        p531_c_ore_processing,\n        p531_c_outer_area,\n        p531_c_prison,\n        p531_c_public_area,\n        p531_c_reactor,\n        p531_c_reactor_COL,\n        p531_c_research,\n        p531_c_restricted_area,\n        p531_c_security,\n        p531_c_sign,\n        p531_c_storage,\n        p531_c_storage_COL,\n        p531_c_technical_area,\n        p531_c_trade_port,\n\n        p221a02_chamber_v2,\n        p221a02_chamber_v2_LOD1,\n        p221a02_chamber_v2_COL,\n        p221b02_chamber_v2,\n        p221c02_chamber_v2,\n        p221c02_chamber_v2_LOD1,\n        p221c02_chamber_v2_COL,\n        p221d02_chamber_v2,\n        p221d02_chamber_v2_LOD1,\n        p221d02_chamber_v2_COL,\n        p221e02_chamber_v2,\n\n        p221b02_chamber_v2_LOD1,\n        p221e02_chamber_v2_LOD1,\n\n        // Prefabs Beams small:\n        p130a01_a_straight_10m,\n        p130a01_a_straight_10m_COL,\n        p130a02_a_straight_30m,\n        p130a02_a_straight_30m_LOD1,\n        p130a02_a_straight_30m_COL,\n        p130b01_b_straight_10m,\n        p130b01_b_straight_10m_COL,\n        p130b02_b_straight_30m,\n        p130b02_b_straight_30m_LOD1,\n        p130b02_b_straight_30m_COL,\n        p130c01_c_straight_10m,\n        p130c01_c_straight_10m_COL,\n        p130c02_c_straight_30m,\n        p130c02_c_straight_30m_LOD1,\n        p130c02_c_straight_30m_COL,\n        p130d01_d_straight_10m,\n        p130d01_d_straight_10m_COL,\n        p130d02_d_straight_30m,\n        p130d02_d_straight_30m_LOD1,\n        p130d02_d_straight_30m_COL,\n        p130e01_e_straight_10m,\n        p130e01_e_straight_10m_COL,\n        p130e02_e_straight_30m,\n        p130e02_e_straight_30m_LOD1,\n        p130e02_e_straight_30m_COL,\n\n        // Solar panels:\n        p321b01_solar_panel,\n        p321b01_solar_panel_LOD1,\n        p321b01_solar_panel_COL,\n        p321c01_solar_panel,\n        p321c01_solar_panel_COL,\n        p321c01_solar_panel_LOD1,\n\n        p413_d02_junction_t_vertical,\n        p413_d02_junction_t_vertical_LOD1,\n        p413_d02_junction_t_vertical_COL,\n        p413_d04_junction_x_vertical,\n        p413_d04_junction_x_vertical_LOD1,\n        p413_d04_junction_x_vertical_COL,\n\n        p412_f11_turn_90_up_230m,\n        p412_f11_turn_90_up_230m_COL,\n        p412_f11_turn_90_up_230m_LOD1,\n        p412_f12_turn_90_left_230m,\n        p412_f12_turn_90_left_230m_LOD1,\n        p412_f12_turn_90_left_230m_COL,\n        p412_f13_turn_90_right_230m,\n        p412_f13_turn_90_right_230m_LOD1,\n        p412_f13_turn_90_right_230m_COL,\n        p412_f14_turn_90_down_230m,\n        p412_f14_turn_90_down_230m_LOD1,\n        p412_f14_turn_90_down_230m_COL,\n\n        p411_f04_straight_4,\n        p411_f05_straight_5,\n        p411_g05_straight_5,\n        p414_f01_entrance_60m,\n        p414_f01_entrance_60m_LOD1,\n        p414_f01_entrance_60m_COL,\n        p414_g01_entrance_60m,\n        p414_g01_entrance_60m_LOD1,\n        p414_g01_entrance_60m_COL,\n\n        p571_a01_traffic_sign,\n        p571_a01_traffic_sign_COL,\n        p571_b01_traffic_sign,\n        p571_box01_traffic_sign,\n        p571_box01_traffic_sign_COL,\n        p571_box02_traffic_sign,\n        p571_c01_traffic_sign,\n        p571_c01_traffic_sign_COL,\n        p571_d01_traffic_sign,\n        p571_e01_traffic_sign,\n        p571_f01_traffic_sign,\n        p571_f01_traffic_sign_COL,\n        p571_g01_traffic_sign,\n        p571_h01_traffic_sign,\n        p571_i01_traffic_sign,\n        p571_i01_traffic_sign_COL,\n        p571_j01_traffic_sign,\n        p571_j01_traffic_sign_COL,\n        p571_k01_traffic_sign,\n        p571_k01_traffic_sign_COL,\n        p571_l01_traffic_sign,\n        p571_l01_traffic_sign_COL,\n\n        //Simple object to be replace by custom import\n        SimpleObject,\n        //AsteroidPrefabTest,\n        FoundationFactory,\n        FoundationFactory_COL,\n\n        // new prefabs\n        p385_a01_temple_900m,\n        p385_a01_temple_900m_COL,\n        p383_a01_church,\n        p383_a01_church_LOD1,\n        p383_a01_church_COL,\n        p334_a01_food_grow,\n        p334_a01_food_grow_COL,\n        p345_a01_bio_exp,\n        p345_a01_bio_mach_exp,\n        p345_a01_bio_mach_exp_COL,\n        p345_a01_recycle,\n        p345_a01_recycle_COL,\n        p345_a01_recycle_LOD1,\n\n        p541_escape_pod,\n        p541_escape_pod_LOD1,\n        p541_escape_pod_COL,\n        p541_escape_pod_base,\n        p541_escape_pod_base_LOD1,\n        p541_escape_pod_base_COL,\n        p541_ventilator_body,\n        p541_ventilator_body_LOD1,\n        p541_ventilator_body_COL,\n        p541_ventilator_propeller,\n        p541_ventilator_propeller_COL,\n\n        p349_a_tower,\n        p349_a_tower_LOD1,\n        p349_a_tower_COL,\n        p349_b_tower,\n        p349_b_tower_LOD1,\n        p349_b_tower_COL,\n        p349_c_tower,\n        p349_c_tower_LOD1,\n        p349_c_tower_COL,\n\n        //p361_a02_hangar_panel,\n\n        p531_b_faction,\n        p531_b_faction_COL,\n        p531_b_faction_holo,\n        p531_b_faction_holo_COL,\n        armor_hull,\n        armor_hull_LOD1,\n        armor_hull_COL,\n\n        FourthReichMothership,\n        FourthReichMothership_B,\n        FourthReichMothership_B_COL,\n        FourthReichMothership_LOD1,\n        FourthReichMothership_B_LOD1,\n        RusMothership,\n        RusMothership_COL,\n        RusMothership_LOD1,\n        Russian_Mothership_Hummer,\n        Russian_Mothership_Hummer_LOD1,\n        Russian_Mothership_Hummer_COL,\n\n        p231a01_armor_LOD01,\n        p231a02_armor_LOD01,\n        p231a03_armor_LOD01,\n        p231a04_armor_LOD01,\n        p231a05_armor_LOD01,\n        p231a06_armor_LOD01,\n        p231a07_armor_LOD01,\n        p231a08_armor_LOD01,\n        p231a09_armor_LOD01,\n        p231a10_armor_LOD01,\n        p231a11_armor_LOD01,\n        p231a12_armor_LOD01,\n        p231a13_armor_LOD01,\n        p231a14_armor_LOD01,\n        p231a15_armor_LOD01,\n        p231a16_armor_LOD01,\n        p231a17_armor_LOD01,\n        p231a18_armor_LOD01,\n\n        p311a01_long_term_thruster_LOD1,\n        p312a01_short_term_thruster_latitude_LOD1,\n        p312a02_short_term_thruster_lateral_LOD1,\n\n        p321d01_big_solar_panel,\n        p321d01_big_solar_panel_LOD1,\n        p321d01_big_solar_panel_COL,\n\n        p321b01_nuclear_reactor_LOD1,\n        //p321c01_inertia_generator_LOD1,\n        p322a01_battery_LOD1,\n        p323a01_fuel_generator_LOD1,\n        p324a01_fuel_storage_a_LOD1,\n        p324a01_fuel_storage_a_COL,\n        //p324b01_fuel_storage_b_LOD01,\n\n        p331_a01_oxygen_generator_LOD1,\n        p333_a01_hydroponic_building_LOD1,\n        p334_a01_food_grow_LOD01,\n\n        //p342_a01_loading_bay_LOD1,\n        p345_a01_refinery_LOD1,\n        p345_a01_bio_exp_LOD1,\n        p345_a01_bio_exp_COL,\n        p345_a01_bio_mach_exp_LOD1,\n        //p349_a_tower_LOD01,\n        //p349_b_tower_LOD01,\n        //p349_c_tower_LOD01,\n\n        p381_a01_building1_LOD1,\n        p381_b01_building2_LOD1,\n\n        p385_a01_temple_900m_LOD1,\n\n        p212a01_panel_large,\n        p212a01_panel_large_LOD1,\n        p212a01_panel_large_COL,\n        p212a01_panel_medium,\n        p212a01_panel_medium_COL,\n        p212a01_panel_medium_LOD1,\n        p212a01_panel_small,\n        p212a01_panel_small_COL,\n        p212b02_panel_medium,\n        p212b02_panel_medium_COL,\n        p212b02_panel_medium_LOD1,\n        p212b02_panel_small,\n        p212b02_panel_small_COL,\n        p212c03_panel_medium,\n        p212c03_panel_medium_LOD1,\n        p212c03_panel_medium_COL,\n        p212c03_panel_small,\n        p212c03_panel_small_COL,\n        p212d04_panel_medium,\n        p212d04_panel_medium_COL,\n        p212d04_panel_small,\n        p212d04_panel_small_COL,\n        p212e05_panel_medium,\n        p212e05_panel_medium_COL,\n        p212e05_panel_small,\n        p212e05_panel_small_COL,\n\n        p341_c01_closed_dock_v1,\n        p341_c01_closed_dock_v1_COL,\n        p341_c01_closed_dock_v1_LOD1,\n\n        MysteriousBox_matt_5m,\n        MysteriousBox_spec_5m,\n        MysteriousBox_mid_5m,\n\n        p212b02_panel_large,\n        p212b02_panel_large_COL,\n        p212b02_panel_large_LOD1,\n        p212c03_panel_large,\n        p212c03_panel_large_LOD1,\n        p212c03_panel_large_COL,\n        p212d04_panel_large,\n        p212d04_panel_large_LOD1,\n        p212d04_panel_large_COL,\n        p212e05_panel_large,\n        p212e05_panel_large_LOD1,\n        p212e05_panel_large_COL,\n        p212f01_panel_large,\n        p212f01_panel_large_COL,\n\n        Alien_gate,\n        Alien_gate_LOD1,\n\n        mship_body,\n        mship_body_LOD1,\n        mship_engine,\n        mship_engine_LOD1,\n        mship_shield_back_large_left,\n        mship_shield_back_large_left_LOD1,\n        mship_shield_back_large_right,\n        mship_shield_back_large_right_LOD1,\n        mship_shield_back_small_left,\n        mship_shield_back_small_left_LOD1,\n        mship_shield_back_small_right,\n        mship_shield_back_small_right_LOD1,\n        mship_shield_front_large_left,\n        mship_shield_front_large_left_LOD1,\n        mship_shield_front_large_right,\n        mship_shield_front_large_right_LOD1,\n        mship_shield_front_small_left,\n        mship_shield_front_small_left_LOD1,\n        mship_shield_front_small_right,\n        mship_shield_front_small_right_LOD1,\n        mship_shield_front_small02_left,\n        mship_shield_front_small02_left_LOD1,\n        mship_shield_front_small02_right,\n        mship_shield_front_small02_right_LOD1,\n\n        p411_d02_straight_40m_with_hole_COL,\n        p411_d03_straight_60m_COL,\n        p411_d04_straight_120m_COL,\n        p411_d05_straight_180m_COL,\n        p411_d02_straight_40m_with_hole_LOD1,\n        p411_d03_straight_60m_LOD1,\n        p411_d04_straight_120m_LOD1,\n        p411_d05_straight_180m_LOD1,\n        \n        p381_d03_hospital,\n        p381_d03_hospital_LOD1,\n        p381_d03_hospital_COL,  \n        p381_d05_food_grow,\n        p381_d05_food_grow_LOD1,                \n        p381_c01_building3_LOD1,\n        p381_c01_building4,\n        p381_c01_building4_COL,\n        p381_c01_building4_LOD1,\n\n        Cable_corner_25m,\n        Cable_corner_25m_COL,\n        Cable_S_45m,\n        Cable_S_45m_COL,\n        Cable_straight_180,\n        Cable_straight_180_COL,\n        Cable_straight_45,\n        Cable_straight_45_COL,\n        Cable_straight_90,\n        Cable_straight_90_COL,\n        Connection_box,\n        Connection_box_COL,\n\n        //p411_d02_straight_40m_with_hole_COL,\n        //p411_d02_straight_40m_with_hole_LOD1,\n        //p411_d03_straight_60m_COL,\n        //p411_d03_straight_60m_LOD1,\n        //p411_d04_straight_120m_COL,\n        //p411_d04_straight_120m_LOD1,\n        //p411_d05_straight_180m_COL,\n        //p411_d05_straight_180m_LOD1,\n\n        p411_f01_straight_1_COL,\n        p411_f02_straight_2_COL,\n        p411_f03_straight_3_COL,\n        p411_f04_straight_4_COL,\n        p411_f05_straight_5_COL,\n\n        p411_g02_straight_2_COL,\n        p411_g03_straight_3_COL,\n        p411_g04_straight_4_COL,\n        p411_g05_straight_5_COL,\n\n        cargo_box_1,\n        cargo_box_2,\n        cargo_box_3,\n        cargo_box_4,\n        cargo_box_5,\n        cargo_box_6,\n        cargo_box_7,\n        cargo_box_8,\n        cargo_box_9,\n        cargo_box_10,\n        cargo_box_small,\n        p541_security_hub,\n        p541_security_hub_LOD1,\n        p541_security_hub_COL,\n        Alarm,\n        Bank_node,\n        Bank_node_COL,\n        Cam,\n        Alarm_off,\n\n        p361_b01_long_distance_antenna_big,\n        p361_b01_long_distance_antenna_big_LOD1,\n        p361_b01_long_distance_antenna_big_COL,\n        p361_b01_long_distance_antenna_dish,\n        p361_b01_long_distance_antenna_dish_COL,\n        p361_b01_long_distance_antenna_dish_LOD1,\n        fourth_reich_wreck,\n        fourth_reich_wreck_LOD1,\n        fourth_reich_wreck_COL,\n        p344_a03_container,\n        p231b01_armor,\n        p231b01_armor_LOD1,\n        p231b01_armor_COL,\n        p231b01_armor_corner,\n        p231b01_armor_corner_LOD1,\n        p231b01_armor_corner_COL,\n        p231b01_armor_edge,\n        p231b01_armor_edge_COL,\n        p231b01_armor_edge_LOD1,\n        p231b01_armor_hole,\n        p231b01_armor_hole_LOD1,\n        p231b01_armor_hole_COL,\n\n        p150a03_shelf_1,\n        p150a03_shelf_1_LOD1,\n        p150a03_shelf_1_COL,\n        p150a02_shelf_1X2,\n        p150a02_shelf_1X2_LOD1,\n        p150a02_shelf_1X2_COL,\n        p150a01_shelf_1X3,\n        p150a01_shelf_1X3_LOD1,\n        p150a01_shelf_1X3_COL,\n        //LargeShipMachineGunBarrel_LOD1,\n        //LargeShipMachineGunBase_LOD1,\n        p221b01_chamber_v1_COL,\n        p221b02_chamber_v2_COL,\n        p221e02_chamber_v2_COL,\n        p382_d01_bridge4_LOD1,\n        p382_c01_bridge3_LOD1,\n        p382_b01_bridge2_LOD1,\n        p362_a01_short_distance_antenna_LOD1,\n        p361_a01_long_distance_antenna_LOD1,\n        p351_a01_weapon_mount_LOD1,\n        p411_e01_straight_1_LOD1,\n        p411_e02_straight_2_LOD1,\n        p411_e03_straight_3_LOD1,\n        p411_e04_straight_4_LOD1,\n        p411_e05_straight_5_LOD1,\n        p413_d01_junction_t_horizontal_LOD1,\n        p413_d03_junction_x_horizontal_LOD1,\n        p412_b21_turn_s_up_LOD1,\n        p412_b22_turn_s_left_LOD1,\n        p412_b23_turn_s_right_LOD1,\n        p412_b24_turn_s_down_LOD1,\n        p412_b11_turn_90_up_160m_LOD1,\n        p412_b12_turn_90_left_160m_LOD1,\n        p412_b13_turn_90_right_160m_LOD1,\n        p412_b14_turn_90_down_160m_LOD1,\n        p412_b01_turn_90_up_80m_LOD1,\n        p412_b02_turn_90_left_80m_LOD1,\n        p412_b03_turn_90_right_80m_LOD1,\n        p412_b04_turn_90_down_80m_LOD1,\n        p413_c01_junction_t_horizontal_COL,\n        p411_c05_straight_180m_COL,\n        p411_c05_straight_180m_LOD1,\n        p414_b02_entrance_60m_LOD1,\n\n        p611_asteroid_part_A,\n        p611_asteroid_part_A_LOD1,\n        p611_asteroid_part_B,\n        p611_asteroid_part_B_LOD1,\n        p363_a01_big_antenna_300m,\n        p363_a01_big_antenna_300m_LOD1,\n        p363_a01_big_antenna_300m_COL,\n        p130d02_d_straight_300m,\n        p130d02_d_straight_300m_COL,\n        p130d02_d_straight_300m_LOD1,\n        p130j01_j_straight_300m,\n        p130j01_j_straight_300m_LOD1,\n        p130j01_j_straight_300m_COL,\n        p120c02_c_straight_400m,\n        p120c02_c_straight_400m_LOD1,\n        p120c02_c_straight_400m_COL,\n        p110b03_lattice_beam_straight_420m,\n        p110b03_lattice_beam_straight_420m_COL,\n        p110b03_lattice_beam_straight_420m_LOD1,\n        p110b04_lattice_beam_straight_420m_with_panels,\n        p110b04_lattice_beam_straight_420m_with_panels_LOD1,\n        p110b04_lattice_beam_straight_420m_with_panels_COL,\n        p345_a01_bio_exp_center,\n        p345_a01_bio_exp_center_LOD1,\n        p345_a01_bio_exp_center_COL,\n        p345_a01_bio_exp_tanks,\n        p345_a01_bio_exp_tanks_LOD1,\n        p345_a01_bio_exp_tanks_COL,\n        p541_ventilator_body_standalone,\n        p541_ventilator_body_standalone_LOD1,\n        p541_ventilator_body_standalone_COL,\n        p541_ventilator_propeller_standalone,\n        p541_ventilator_propeller_standalone_COL,\n        p541_ventilator_propeller_standalone_LOD1,\n\n        p321c03_centrifuge,\n        p321c03_centrifuge_centre,\n        p321c03_centrifuge_centre_LOD1,\n        p321c03_centrifuge_centre_COL,\n        p321c03_centrifuge_COL,\n        p321c03_centrifuge_LOD1,\n        p321c04_box_generator,\n        p321c04_box_generator_COL,\n        p321c04_box_generator_LOD1,\n        p321c04_two_big_inertia,\n        p321c04_two_big_inertia_LOD1,\n        p321c05_centrifuge_big,\n        p321c05_centrifuge_big_COL,\n        p321c05_centrifuge_big_LOD1,\n        p321c05_centrifuge_centre_big,\n        p321c05_centrifuge_centre_big_LOD1,\n        p363_a01_big_antenna_1500m,\n        p363_a01_big_antenna_1500m_COL,\n        p363_a01_big_antenna_1500m_LOD1,\n        p541_ventilator_propeller_big,\n        p541_ventilator_propeller_big_COL,\n        p541_ventilator_propeller_big_LOD1,\n        p321c02_generator_wall_big,\n        p321c02_generator_wall_big_COL,\n        p321c02_generator_wall_big_LOD1,\n        p321c02_inertia_generator_center_big,\n        p321c02_inertia_generator_center_big_LOD1,\n        p321c02_inertia_generator_center_big_COL,\n        p321c02_inertia_generator_center_vert,\n        p321c02_inertia_generator_center_vert_LOD1,\n\n        p321c06_inertia_B_centre,\n        p321c06_inertia_B_centre_LOD1,\n        p321c06_inertia_B_centre_COL,\n        p321c06_inertia_generator_B,\n        p321c06_inertia_generator_B_COL,\n        p321c06_inertia_generator_B_LOD1,\n        p4221_a01_cooling_device_ventilator_1,\n        p4221_a01_cooling_device_ventilator_2,\n        p4221_a01_cooling_device_wall_340x400,\n        p4221_a01_cooling_device_wall_340x400_COL,\n        p4221_a01_cooling_device_wall_340x400_LOD1,\n        p4222_a01_pipes_connector,\n        p4222_a01_pipes_connector_center,\n        p4222_a01_pipes_connector_center_LOD1,\n        p4222_a01_pipes_connector_COL,\n        p4222_a01_pipes_connector_LOD1,\n        p4223_a01_open_pipe,\n        p4223_a01_open_pipe_COL,\n        p4223_a01_open_pipe_LOD1,\n        p311b01_long_term_thruster,\n        p311b01_long_term_thruster_LOD1,\n        p321c07_generator,\n        p321c07_generator_center,\n        p321c07_generator_center_LOD1,\n        p321c07_generator_COL,\n        p321c07_generator_LOD1,\n        p321c07_generator_propeller_1,\n        p321c07_generator_propeller_1_COL,\n        p321c07_generator_propeller_2,\n        p321c07_generator_propeller_2_COL,\n        p221k01_chamber_v2,\n        p221k01_chamber_v2_LOD1,\n\n        p581_a01_barrel_biohazard,\n        p581_a01_barrel_biohazard_2,\n        p581_a01_nuke_barrel,\n        p581_a01_red_barrel,\n        p581_a01_simple_barrel,\n        p581_a01_simple_barrel_2,\n        cargo_box_11,\n        cargo_box_12,\n        Barrel_prop_A,\n        Barrel_prop_B,\n        Barrel_prop_C,\n        //Barrel_prop_D,\n        //Barrel_prop_E,\n        CargoBox_prop_A,\n        CargoBox_prop_B,\n        CargoBox_prop_C,\n        CannonBall_Capsule_1,\n        CannonBall_Capsule_1_COL,\n        Missile_pack01,\n        Missile_pack01_COL,\n        Missile_pack02,\n        Missile_pack02_COL,\n        Missile_plazma01,\n        Missile_plazma01_COL,\n        Missile_stack_biochem01,\n        Missile_stack_biochem01_COL,\n\n        p231a01_armor_COL,\n        p231a02_armor_COL,\n        p231a03_armor_COL,\n        p231a04_armor_COL,\n        p231a05_armor_COL,\n        p231a06_armor_COL,\n        p231a07_armor_COL,\n        p231a08_armor_COL,\n        p231a09_armor_COL,\n        p231a10_armor_COL,\n        p231a11_armor_COL,\n        p231a12_armor_COL,\n        p231a13_armor_COL,\n        p231a14_armor_COL,\n        p231a15_armor_COL,\n        p231a16_armor_COL,\n        p231a17_armor_COL,\n        p231a18_armor_COL,\n        p110a12_solid_beam_junction_x_weak_COL,\n        p110a12_solid_beam_junction_x_weak_LOD1,\n        p110a22_solid_beam_junction_t_weak_COL,\n        p110a22_solid_beam_junction_t_weak_LOD1,\n        p110a05_solid_beam_straight_80m_COL,\n        p110a05_solid_beam_straight_80m_LOD1,\n        p110b01_lattice_beam_straight_10m_COL,\n        p110b01_lattice_beam_straight_10m_LOD1,\n        p110b04_lattice_beam_straight_60m_with_panels_COL,\n        p110b04_lattice_beam_straight_60m_with_panels_LOD1,\n        p110b21_lattice_beam_junction_t_strong_COL,\n        p110b21_lattice_beam_junction_t_strong_LOD1,\n        p110b03_lattice_beam_straight_60m_COL,\n        p110b03_lattice_beam_straight_60m_LOD1,\n        p110b22_lattice_beam_junction_t_weak_COL,\n        p110b22_lattice_beam_junction_t_weak_LOD1,\n        p142a11_cage_pillar_COL,\n        p142a11_cage_pillar_LOD1,\n        p211d02_panel_60mx60m_COL,\n        p211d02_panel_60mx60m_LOD1,\n        p211g01_panel_120mx60m_COL,\n        p211g01_panel_120mx60m_LOD1,\n        p211g02_panel_60mx60m_COL,\n        p211g02_panel_60mx60m_LOD1,\n        p344_a03_container_COL,\n        p344_a03_container_LOD1,\n        p415_c03_door2_a_left_COL,\n        p415_c03_door2_a_left_LOD1,\n        p415_c03_door2_a_right_COL,\n        p415_c03_door2_a_right_LOD1,\n        p415_c03_door2_b_right_COL,\n        p415_c03_door2_b_right_LOD1,\n        p415_c03_door2_b_left_COL,\n        p415_c03_door2_b_left_LOD1,\n        p415_c01_doorcase_COL,\n        p415_c01_doorcase_LOD1,\n        p421_a02_pipe_straight_40m_COL,\n        p421_a02_pipe_straight_40m_LOD1,\n        p421_a03_pipe_straight_10m_COL,\n        p421_a03_pipe_straight_10m_LOD1,\n        p421_a01_pipe_straight_80m_COL,\n        p421_a01_pipe_straight_80m_LOD1,\n        p423_a01_pipe_junction_COL,\n        p423_a01_pipe_junction_LOD1,\n        p422_a01_pipe_turn_90_COL,\n        p422_a01_pipe_turn_90_LOD1,\n        p120a22_strong_lattice_junction_t_weak_COL,\n        p120a22_strong_lattice_junction_t_weak_LOD1,\n        p120a02_strong_lattice_straight_60m_COL,\n        p120a02_strong_lattice_straight_60m_LOD1,\n        p120a03_strong_lattice_straight_120m_COL,\n        p120a03_strong_lattice_straight_120m_LOD1,\n        p411_g01_straight_1_COL,\n        p411_g01_straight_1_LOD1,\n        p324b01_fuel_storage_b_COL,\n        p324b01_fuel_storage_b_LOD1,\n        p581_a01_o2_barrel,\n        p581_a01_o2_barrel_COL,\n\n        p211a01_panel_120mx60m_LOD1,\n        p211a02_panel_60mx60m_LOD1,\n        p211a03_panel_60mx30m_LOD1,\n        p211c01_panel_120mx60m_LOD1,\n        p211c02_panel_60mx60m_LOD1,\n        p211c03_panel_60mx30m_LOD1,\n        p211b01_panel_120mx60m_LOD1,\n        p211b02_panel_60mx60m_LOD1,\n        p211b03_panel_60mx30m_LOD1,\n\n        Nuclear_Warhead_closed,\n        Nuclear_Warhead_closed_COL,\n        Nuclear_Warhead_open,\n        Nuclear_Warhead_open_COL,\n        CargoBox_prop_D,\n        p581_a01_nuke_barrel_1,\n        p581_a01_simple_barrel_3,\n        p221L01_chamber_v1,\n        p221L01_chamber_v1_LOD1,\n        p221L01_chamber_v1_COL,\n\n\n        p221m01_chamber_bottom_v1,\n        p221m01_chamber_bottom_v1_LOD1,\n        p221m01_chamber_bottom_v1_COL,\n        p221m01_chamber_center_v1,\n        p221m01_chamber_center_v1_LOD1,\n        p221m01_chamber_center_v1_COL,\n        p221m01_chamber_top_v1,\n        p221m01_chamber_top_v1_LOD1,\n        p221m01_chamber_top_v1_COL,\n        p321e01_solar_panel,\n        p321e01_solar_panel_LOD1,\n        p321e01_solar_panel_COL,\n        p110a06_solid_beam_straight_420m,\n\n        gattling_ammo_belt,\n        gattling_ammo_belt_COL,\n\n        p311b01_cut_thruster,\n        p311b01_cut_thruster_LOD1,\n        p311b01_cut_thruster_COL,\n        p312b01_cut_thruster_lateral,\n        p312b01_cut_thruster_lateral_LOD1,\n        p312b01_cut_thruster_lateral_COL,\n        p312b02_cut_thruster_latitude,\n        p312b02_cut_thruster_latitude_LOD1,\n        p312b02_cut_thruster_latitude_COL,\n        alien_detector_unit,\n        alien_detector_unit_COL,\n        p381_c01_building5,\n        p381_c01_building5_LOD1,\n        p381_c01_building5_COL,\n        p381_c01_building6,\n        p381_c01_building6_LOD1,\n        p381_c01_building6_COL,\n        p381_c01_building7,\n        p381_c01_building7_LOD1,\n        p381_c01_building7_COL,\n        p221n01_chamber_v1,\n        p221n01_chamber_v1_LOD1,\n        p221n01_chamber_v1_COL,\n        p531_d_medic_cross,\n        p531_d_medic_cross_COL,\n\n        p541_screen_A,\n        p541_screen_A_LOD1,\n        p541_screen_A_COL,\n        p541_screen_B,\n        p541_screen_B_COL,\n        p541_screen_B_LOD1,\n        p541_terminal_A,\n        p541_terminal_A_COL,\n        p541_terminal_A_LOD1,\n\n        alien_artefact,\n        alien_artefact_COL,\n\n        bomb,\n        bomb_COL,\n\n        p581_a01_universal_barrel_COL,\n        rail_gun,\n        rail_gun_COL,\n        rail_gun_LOD1,\n        p345_a01_recycle_sphere,\n        p345_a01_recycle_sphere_LOD1,\n        p345_a01_recycle_sphere_COL,\n        prison,\n        prison_COL,\n        vendor,\n        vendor_COL,\n        hangar_screen,\n        hangar_screen_COL,\n\n        ScannerPlane,        \n        ScannerRays,\n        Nuclear_Warhead_open_LOD1,\n        Nuclear_Warhead_closed_LOD1,\n\n        p511_a17_billboard_portrait_1,\n        p511_a17_billboard_portrait_1_COL,\n        p412_b24_turn_s_down_COL,\n        p414_b02_entrance_60m_COL,\n        p415_d01_doorcase_LOD1,\n        p411_g02_straight_2_LOD1,\n        p411_g03_straight_3_LOD1,\n        p411_g04_straight_4_LOD1,\n        p411_g05_straight_5_LOD1,\n        p511_a14_billboard_COL,\n        p413_g01_junction_6axes_LOD1,\n\n        p511_a18_billboard,\n        p511_a18_billboard_COL,\n        p511_a18_billboard_LOD1,\n\n        p511_a19_billboard,\n        p511_a19_billboard_COL,\n        p511_a19_billboard_LOD1,\n\n        p511_a17_billboard_portrait_2,\n    }\n\n    public enum MyModelTexturesEnum\n    {\n    };\n\n    static partial class MyModels\n    {\n        static void InitModels()\n        {\n            MyMwcLog.WriteLine(\"MyModels.InitModels - START\");\n            MyMwcLog.IncreaseIndent();\n\n            if (m_models != null)\n                return; //models already inited\n\n            m_models = new MyModel[Enum.GetValues(typeof(MyModelsEnum)).Length];\n            m_modelsByAssertName = new Dictionary<string, MyModel>();\n\n           \n            //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n            //  Static asteroids\n            //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n            // Indestructible_01: 10-20m\n            // Indestructible_02: 30-100m\n            // Indestructible_03: 300-5000m\n            // Indestructible_04: 10000m\n\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\10m\\\\StaticAsteroid10m_A_LOD0\", MyMeshDrawTechnique.MESH, MyModelsEnum.StaticAsteroid10m_A_LOD0, MyFakes.UNLOAD_OPTIMIZATION_KEEP_STATIC_ASTEROIDS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\10m\\\\StaticAsteroid10m_A_LOD1\", MyMeshDrawTechnique.MESH, MyModelsEnum.StaticAsteroid10m_A_LOD1, MyFakes.UNLOAD_OPTIMIZATION_KEEP_STATIC_ASTEROIDS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\10m\\\\StaticAsteroid10m_A_LOD2\", MyMeshDrawTechnique.MESH, MyModelsEnum.StaticAsteroid10m_A_LOD2, MyFakes.UNLOAD_OPTIMIZATION_KEEP_STATIC_ASTEROIDS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\20m\\\\StaticAsteroid20m_A_LOD0\", MyMeshDrawTechnique.MESH, MyModelsEnum.StaticAsteroid20m_A_LOD0, MyFakes.UNLOAD_OPTIMIZATION_KEEP_STATIC_ASTEROIDS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\20m\\\\StaticAsteroid20m_A_LOD1\", MyMeshDrawTechnique.MESH, MyModelsEnum.StaticAsteroid20m_A_LOD1, MyFakes.UNLOAD_OPTIMIZATION_KEEP_STATIC_ASTEROIDS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\20m\\\\StaticAsteroid20m_A_LOD2\", MyMeshDrawTechnique.MESH, MyModelsEnum.StaticAsteroid20m_A_LOD2, MyFakes.UNLOAD_OPTIMIZATION_KEEP_STATIC_ASTEROIDS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\30m\\\\StaticAsteroid30m_A_LOD0\", MyMeshDrawTechnique.MESH, MyModelsEnum.StaticAsteroid30m_A_LOD0, MyFakes.UNLOAD_OPTIMIZATION_KEEP_STATIC_ASTEROIDS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\30m\\\\StaticAsteroid30m_A_LOD1\", MyMeshDrawTechnique.MESH, MyModelsEnum.StaticAsteroid30m_A_LOD1, MyFakes.UNLOAD_OPTIMIZATION_KEEP_STATIC_ASTEROIDS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\30m\\\\StaticAsteroid30m_A_LOD2\", MyMeshDrawTechnique.MESH, MyModelsEnum.StaticAsteroid30m_A_LOD2, MyFakes.UNLOAD_OPTIMIZATION_KEEP_STATIC_ASTEROIDS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\50m\\\\StaticAsteroid50m_A_LOD0\", MyMeshDrawTechnique.MESH, MyModelsEnum.StaticAsteroid50m_A_LOD0, MyFakes.UNLOAD_OPTIMIZATION_KEEP_STATIC_ASTEROIDS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\50m\\\\StaticAsteroid50m_A_LOD1\", MyMeshDrawTechnique.MESH, MyModelsEnum.StaticAsteroid50m_A_LOD1, MyFakes.UNLOAD_OPTIMIZATION_KEEP_STATIC_ASTEROIDS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\50m\\\\StaticAsteroid50m_A_LOD2\", MyMeshDrawTechnique.MESH, MyModelsEnum.StaticAsteroid50m_A_LOD2, MyFakes.UNLOAD_OPTIMIZATION_KEEP_STATIC_ASTEROIDS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\100m\\\\StaticAsteroid100m_A_LOD0\", MyMeshDrawTechnique.MESH, MyModelsEnum.StaticAsteroid100m_A_LOD0, MyFakes.UNLOAD_OPTIMIZATION_KEEP_STATIC_ASTEROIDS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\100m\\\\StaticAsteroid100m_A_LOD1\", MyMeshDrawTechnique.MESH, MyModelsEnum.StaticAsteroid100m_A_LOD1, MyFakes.UNLOAD_OPTIMIZATION_KEEP_STATIC_ASTEROIDS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\100m\\\\StaticAsteroid100m_A_LOD2\", MyMeshDrawTechnique.MESH, MyModelsEnum.StaticAsteroid100m_A_LOD2, MyFakes.UNLOAD_OPTIMIZATION_KEEP_STATIC_ASTEROIDS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\300m\\\\StaticAsteroid300m_A_LOD0\", MyMeshDrawTechnique.MESH, MyModelsEnum.StaticAsteroid300m_A_LOD0, MyFakes.UNLOAD_OPTIMIZATION_KEEP_STATIC_ASTEROIDS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\300m\\\\StaticAsteroid300m_A_LOD1\", MyMeshDrawTechnique.MESH, MyModelsEnum.StaticAsteroid300m_A_LOD1, MyFakes.UNLOAD_OPTIMIZATION_KEEP_STATIC_ASTEROIDS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\300m\\\\StaticAsteroid300m_A_LOD2\", MyMeshDrawTechnique.MESH, MyModelsEnum.StaticAsteroid300m_A_LOD2, MyFakes.UNLOAD_OPTIMIZATION_KEEP_STATIC_ASTEROIDS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\500m\\\\StaticAsteroid500m_A_LOD0\", MyMeshDrawTechnique.MESH, MyModelsEnum.StaticAsteroid500m_A_LOD0, MyFakes.UNLOAD_OPTIMIZATION_KEEP_STATIC_ASTEROIDS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\500m\\\\StaticAsteroid500m_A_LOD1\", MyMeshDrawTechnique.MESH, MyModelsEnum.StaticAsteroid500m_A_LOD1, MyFakes.UNLOAD_OPTIMIZATION_KEEP_STATIC_ASTEROIDS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\500m\\\\StaticAsteroid500m_A_LOD2\", MyMeshDrawTechnique.MESH, MyModelsEnum.StaticAsteroid500m_A_LOD2, MyFakes.UNLOAD_OPTIMIZATION_KEEP_STATIC_ASTEROIDS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\1000m\\\\StaticAsteroid1000m_A_LOD0\", MyMeshDrawTechnique.MESH, MyModelsEnum.StaticAsteroid1000m_A_LOD0, MyFakes.UNLOAD_OPTIMIZATION_KEEP_STATIC_ASTEROIDS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\1000m\\\\StaticAsteroid1000m_A_LOD1\", MyMeshDrawTechnique.MESH, MyModelsEnum.StaticAsteroid1000m_A_LOD1, MyFakes.UNLOAD_OPTIMIZATION_KEEP_STATIC_ASTEROIDS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\1000m\\\\StaticAsteroid1000m_A_LOD2\", MyMeshDrawTechnique.MESH, MyModelsEnum.StaticAsteroid1000m_A_LOD2, MyFakes.UNLOAD_OPTIMIZATION_KEEP_STATIC_ASTEROIDS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\2000m\\\\StaticAsteroid2000m_A_LOD0\", MyMeshDrawTechnique.MESH, MyModelsEnum.StaticAsteroid2000m_A_LOD0, MyFakes.UNLOAD_OPTIMIZATION_KEEP_STATIC_ASTEROIDS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\2000m\\\\StaticAsteroid2000m_A_LOD1\", MyMeshDrawTechnique.MESH, MyModelsEnum.StaticAsteroid2000m_A_LOD1, MyFakes.UNLOAD_OPTIMIZATION_KEEP_STATIC_ASTEROIDS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\2000m\\\\StaticAsteroid2000m_A_LOD2\", MyMeshDrawTechnique.MESH, MyModelsEnum.StaticAsteroid2000m_A_LOD2, MyFakes.UNLOAD_OPTIMIZATION_KEEP_STATIC_ASTEROIDS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\5000m\\\\StaticAsteroid5000m_A_LOD0\", MyMeshDrawTechnique.MESH, MyModelsEnum.StaticAsteroid5000m_A_LOD0, MyFakes.UNLOAD_OPTIMIZATION_KEEP_STATIC_ASTEROIDS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\5000m\\\\StaticAsteroid5000m_A_LOD1\", MyMeshDrawTechnique.MESH, MyModelsEnum.StaticAsteroid5000m_A_LOD1, MyFakes.UNLOAD_OPTIMIZATION_KEEP_STATIC_ASTEROIDS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\5000m\\\\StaticAsteroid5000m_A_LOD2\", MyMeshDrawTechnique.MESH, MyModelsEnum.StaticAsteroid5000m_A_LOD2, MyFakes.UNLOAD_OPTIMIZATION_KEEP_STATIC_ASTEROIDS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\10000m\\\\StaticAsteroid10000m_A_LOD0\", MyMeshDrawTechnique.MESH, MyModelsEnum.StaticAsteroid10000m_A_LOD0, MyFakes.UNLOAD_OPTIMIZATION_KEEP_STATIC_ASTEROIDS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\10000m\\\\StaticAsteroid10000m_A_LOD1\", MyMeshDrawTechnique.MESH, MyModelsEnum.StaticAsteroid10000m_A_LOD1, MyFakes.UNLOAD_OPTIMIZATION_KEEP_STATIC_ASTEROIDS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\10000m\\\\StaticAsteroid10000m_A_LOD2\", MyMeshDrawTechnique.MESH, MyModelsEnum.StaticAsteroid10000m_A_LOD2, MyFakes.UNLOAD_OPTIMIZATION_KEEP_STATIC_ASTEROIDS));\n            //AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\40000m\\\\StaticAsteroid40000m_A_LOD0\", MyMeshDrawTechnique.MESH, MyModelsEnum.StaticAsteroid40000m_A_LOD0, MyFakes.UNLOAD_OPTIMIZATION_STATIC_ASTEROIDS));\n            //AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\40000m\\\\StaticAsteroid40000m_A_LOD1\", MyMeshDrawTechnique.MESH, MyModelsEnum.StaticAsteroid40000m_A_LOD1, MyFakes.UNLOAD_OPTIMIZATION_STATIC_ASTEROIDS));\n            //AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\40000m\\\\StaticAsteroid40000m_A_LOD2\", MyMeshDrawTechnique.MESH, MyModelsEnum.StaticAsteroid40000m_A_LOD2, MyFakes.UNLOAD_OPTIMIZATION_STATIC_ASTEROIDS));\n\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\10m\\\\StaticAsteroid10m_B_LOD0\", MyMeshDrawTechnique.MESH, MyModelsEnum.StaticAsteroid10m_B_LOD0, MyFakes.UNLOAD_OPTIMIZATION_KEEP_STATIC_ASTEROIDS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\10m\\\\StaticAsteroid10m_B_LOD1\", MyMeshDrawTechnique.MESH, MyModelsEnum.StaticAsteroid10m_B_LOD1, MyFakes.UNLOAD_OPTIMIZATION_KEEP_STATIC_ASTEROIDS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\10m\\\\StaticAsteroid10m_B_LOD2\", MyMeshDrawTechnique.MESH, MyModelsEnum.StaticAsteroid10m_B_LOD2, MyFakes.UNLOAD_OPTIMIZATION_KEEP_STATIC_ASTEROIDS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\20m\\\\StaticAsteroid20m_B_LOD0\", MyMeshDrawTechnique.MESH, MyModelsEnum.StaticAsteroid20m_B_LOD0, MyFakes.UNLOAD_OPTIMIZATION_KEEP_STATIC_ASTEROIDS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\20m\\\\StaticAsteroid20m_B_LOD1\", MyMeshDrawTechnique.MESH, MyModelsEnum.StaticAsteroid20m_B_LOD1, MyFakes.UNLOAD_OPTIMIZATION_KEEP_STATIC_ASTEROIDS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\20m\\\\StaticAsteroid20m_B_LOD2\", MyMeshDrawTechnique.MESH, MyModelsEnum.StaticAsteroid20m_B_LOD2, MyFakes.UNLOAD_OPTIMIZATION_KEEP_STATIC_ASTEROIDS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\30m\\\\StaticAsteroid30m_B_LOD0\", MyMeshDrawTechnique.MESH, MyModelsEnum.StaticAsteroid30m_B_LOD0, MyFakes.UNLOAD_OPTIMIZATION_KEEP_STATIC_ASTEROIDS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\30m\\\\StaticAsteroid30m_B_LOD1\", MyMeshDrawTechnique.MESH, MyModelsEnum.StaticAsteroid30m_B_LOD1, MyFakes.UNLOAD_OPTIMIZATION_KEEP_STATIC_ASTEROIDS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\30m\\\\StaticAsteroid30m_B_LOD2\", MyMeshDrawTechnique.MESH, MyModelsEnum.StaticAsteroid30m_B_LOD2, MyFakes.UNLOAD_OPTIMIZATION_KEEP_STATIC_ASTEROIDS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\50m\\\\StaticAsteroid50m_B_LOD0\", MyMeshDrawTechnique.MESH, MyModelsEnum.StaticAsteroid50m_B_LOD0, MyFakes.UNLOAD_OPTIMIZATION_KEEP_STATIC_ASTEROIDS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\50m\\\\StaticAsteroid50m_B_LOD1\", MyMeshDrawTechnique.MESH, MyModelsEnum.StaticAsteroid50m_B_LOD1, MyFakes.UNLOAD_OPTIMIZATION_KEEP_STATIC_ASTEROIDS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\50m\\\\StaticAsteroid50m_B_LOD2\", MyMeshDrawTechnique.MESH, MyModelsEnum.StaticAsteroid50m_B_LOD2, MyFakes.UNLOAD_OPTIMIZATION_KEEP_STATIC_ASTEROIDS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\100m\\\\StaticAsteroid100m_B_LOD0\", MyMeshDrawTechnique.MESH, MyModelsEnum.StaticAsteroid100m_B_LOD0, MyFakes.UNLOAD_OPTIMIZATION_KEEP_STATIC_ASTEROIDS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\100m\\\\StaticAsteroid100m_B_LOD1\", MyMeshDrawTechnique.MESH, MyModelsEnum.StaticAsteroid100m_B_LOD1, MyFakes.UNLOAD_OPTIMIZATION_KEEP_STATIC_ASTEROIDS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\100m\\\\StaticAsteroid100m_B_LOD2\", MyMeshDrawTechnique.MESH, MyModelsEnum.StaticAsteroid100m_B_LOD2, MyFakes.UNLOAD_OPTIMIZATION_KEEP_STATIC_ASTEROIDS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\300m\\\\StaticAsteroid300m_B_LOD0\", MyMeshDrawTechnique.MESH, MyModelsEnum.StaticAsteroid300m_B_LOD0, MyFakes.UNLOAD_OPTIMIZATION_KEEP_STATIC_ASTEROIDS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\300m\\\\StaticAsteroid300m_B_LOD1\", MyMeshDrawTechnique.MESH, MyModelsEnum.StaticAsteroid300m_B_LOD1, MyFakes.UNLOAD_OPTIMIZATION_KEEP_STATIC_ASTEROIDS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\300m\\\\StaticAsteroid300m_B_LOD2\", MyMeshDrawTechnique.MESH, MyModelsEnum.StaticAsteroid300m_B_LOD2, MyFakes.UNLOAD_OPTIMIZATION_KEEP_STATIC_ASTEROIDS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\500m\\\\StaticAsteroid500m_B_LOD0\", MyMeshDrawTechnique.MESH, MyModelsEnum.StaticAsteroid500m_B_LOD0, MyFakes.UNLOAD_OPTIMIZATION_KEEP_STATIC_ASTEROIDS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\500m\\\\StaticAsteroid500m_B_LOD1\", MyMeshDrawTechnique.MESH, MyModelsEnum.StaticAsteroid500m_B_LOD1, MyFakes.UNLOAD_OPTIMIZATION_KEEP_STATIC_ASTEROIDS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\500m\\\\StaticAsteroid500m_B_LOD2\", MyMeshDrawTechnique.MESH, MyModelsEnum.StaticAsteroid500m_B_LOD2, MyFakes.UNLOAD_OPTIMIZATION_KEEP_STATIC_ASTEROIDS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\1000m\\\\StaticAsteroid1000m_B_LOD0\", MyMeshDrawTechnique.MESH, MyModelsEnum.StaticAsteroid1000m_B_LOD0, MyFakes.UNLOAD_OPTIMIZATION_KEEP_STATIC_ASTEROIDS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\1000m\\\\StaticAsteroid1000m_B_LOD1\", MyMeshDrawTechnique.MESH, MyModelsEnum.StaticAsteroid1000m_B_LOD1, MyFakes.UNLOAD_OPTIMIZATION_KEEP_STATIC_ASTEROIDS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\1000m\\\\StaticAsteroid1000m_B_LOD2\", MyMeshDrawTechnique.MESH, MyModelsEnum.StaticAsteroid1000m_B_LOD2, MyFakes.UNLOAD_OPTIMIZATION_KEEP_STATIC_ASTEROIDS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\2000m\\\\StaticAsteroid2000m_B_LOD0\", MyMeshDrawTechnique.MESH, MyModelsEnum.StaticAsteroid2000m_B_LOD0, MyFakes.UNLOAD_OPTIMIZATION_KEEP_STATIC_ASTEROIDS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\2000m\\\\StaticAsteroid2000m_B_LOD1\", MyMeshDrawTechnique.MESH, MyModelsEnum.StaticAsteroid2000m_B_LOD1, MyFakes.UNLOAD_OPTIMIZATION_KEEP_STATIC_ASTEROIDS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\2000m\\\\StaticAsteroid2000m_B_LOD2\", MyMeshDrawTechnique.MESH, MyModelsEnum.StaticAsteroid2000m_B_LOD2, MyFakes.UNLOAD_OPTIMIZATION_KEEP_STATIC_ASTEROIDS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\5000m\\\\StaticAsteroid5000m_B_LOD0\", MyMeshDrawTechnique.MESH, MyModelsEnum.StaticAsteroid5000m_B_LOD0, MyFakes.UNLOAD_OPTIMIZATION_KEEP_STATIC_ASTEROIDS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\5000m\\\\StaticAsteroid5000m_B_LOD1\", MyMeshDrawTechnique.MESH, MyModelsEnum.StaticAsteroid5000m_B_LOD1, MyFakes.UNLOAD_OPTIMIZATION_KEEP_STATIC_ASTEROIDS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\5000m\\\\StaticAsteroid5000m_B_LOD2\", MyMeshDrawTechnique.MESH, MyModelsEnum.StaticAsteroid5000m_B_LOD2, MyFakes.UNLOAD_OPTIMIZATION_KEEP_STATIC_ASTEROIDS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\10000m\\\\StaticAsteroid10000m_B_LOD0\", MyMeshDrawTechnique.MESH, MyModelsEnum.StaticAsteroid10000m_B_LOD0, MyFakes.UNLOAD_OPTIMIZATION_KEEP_STATIC_ASTEROIDS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\10000m\\\\StaticAsteroid10000m_B_LOD1\", MyMeshDrawTechnique.MESH, MyModelsEnum.StaticAsteroid10000m_B_LOD1, MyFakes.UNLOAD_OPTIMIZATION_KEEP_STATIC_ASTEROIDS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\10000m\\\\StaticAsteroid10000m_B_LOD2\", MyMeshDrawTechnique.MESH, MyModelsEnum.StaticAsteroid10000m_B_LOD2, MyFakes.UNLOAD_OPTIMIZATION_KEEP_STATIC_ASTEROIDS));\n                                     /* Removed\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\10m\\\\StaticAsteroid10m_C_LOD0\", MyMeshDrawTechnique.VOXELS_STATIC_ASTEROID, MyModelsEnum.StaticAsteroid10m_C_LOD0));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\10m\\\\StaticAsteroid10m_C_LOD1\", MyMeshDrawTechnique.VOXELS_STATIC_ASTEROID, MyModelsEnum.StaticAsteroid10m_C_LOD1));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\20m\\\\StaticAsteroid20m_C_LOD0\", MyMeshDrawTechnique.VOXELS_STATIC_ASTEROID, MyModelsEnum.StaticAsteroid20m_C_LOD0));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\20m\\\\StaticAsteroid20m_C_LOD1\", MyMeshDrawTechnique.VOXELS_STATIC_ASTEROID, MyModelsEnum.StaticAsteroid20m_C_LOD1));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\30m\\\\StaticAsteroid30m_C_LOD0\", MyMeshDrawTechnique.VOXELS_STATIC_ASTEROID, MyModelsEnum.StaticAsteroid30m_C_LOD0));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\30m\\\\StaticAsteroid30m_C_LOD1\", MyMeshDrawTechnique.VOXELS_STATIC_ASTEROID, MyModelsEnum.StaticAsteroid30m_C_LOD1));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\50m\\\\StaticAsteroid50m_C_LOD0\", MyMeshDrawTechnique.VOXELS_STATIC_ASTEROID, MyModelsEnum.StaticAsteroid50m_C_LOD0));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\50m\\\\StaticAsteroid50m_C_LOD1\", MyMeshDrawTechnique.VOXELS_STATIC_ASTEROID, MyModelsEnum.StaticAsteroid50m_C_LOD1));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\100m\\\\StaticAsteroid100m_C_LOD0\", MyMeshDrawTechnique.VOXELS_STATIC_ASTEROID, MyModelsEnum.StaticAsteroid100m_C_LOD0));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\100m\\\\StaticAsteroid100m_C_LOD1\", MyMeshDrawTechnique.VOXELS_STATIC_ASTEROID, MyModelsEnum.StaticAsteroid100m_C_LOD1));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\300m\\\\StaticAsteroid300m_C_LOD0\", MyMeshDrawTechnique.VOXELS_STATIC_ASTEROID, MyModelsEnum.StaticAsteroid300m_C_LOD0));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\300m\\\\StaticAsteroid300m_C_LOD1\", MyMeshDrawTechnique.VOXELS_STATIC_ASTEROID, MyModelsEnum.StaticAsteroid300m_C_LOD1));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\500m\\\\StaticAsteroid500m_C_LOD0\", MyMeshDrawTechnique.VOXELS_STATIC_ASTEROID, MyModelsEnum.StaticAsteroid500m_C_LOD0));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\500m\\\\StaticAsteroid500m_C_LOD1\", MyMeshDrawTechnique.VOXELS_STATIC_ASTEROID, MyModelsEnum.StaticAsteroid500m_C_LOD1));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\1000m\\\\StaticAsteroid1000m_C_LOD0\", MyMeshDrawTechnique.VOXELS_STATIC_ASTEROID, MyModelsEnum.StaticAsteroid1000m_C_LOD0));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\1000m\\\\StaticAsteroid1000m_C_LOD1\", MyMeshDrawTechnique.VOXELS_STATIC_ASTEROID, MyModelsEnum.StaticAsteroid1000m_C_LOD1));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\2000m\\\\StaticAsteroid2000m_C_LOD0\", MyMeshDrawTechnique.VOXELS_STATIC_ASTEROID, MyModelsEnum.StaticAsteroid2000m_C_LOD0));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\2000m\\\\StaticAsteroid2000m_C_LOD1\", MyMeshDrawTechnique.VOXELS_STATIC_ASTEROID, MyModelsEnum.StaticAsteroid2000m_C_LOD1));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\5000m\\\\StaticAsteroid5000m_C_LOD0\", MyMeshDrawTechnique.VOXELS_STATIC_ASTEROID, MyModelsEnum.StaticAsteroid5000m_C_LOD0));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\5000m\\\\StaticAsteroid5000m_C_LOD1\", MyMeshDrawTechnique.VOXELS_STATIC_ASTEROID, MyModelsEnum.StaticAsteroid5000m_C_LOD1));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\10000m\\\\StaticAsteroid10000m_C_LOD0\", MyMeshDrawTechnique.VOXELS_STATIC_ASTEROID, MyModelsEnum.StaticAsteroid10000m_C_LOD0));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\10000m\\\\StaticAsteroid10000m_C_LOD1\", MyMeshDrawTechnique.VOXELS_STATIC_ASTEROID, MyModelsEnum.StaticAsteroid10000m_C_LOD1));\n\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\10m\\\\StaticAsteroid10m_D_LOD0\", MyMeshDrawTechnique.VOXELS_STATIC_ASTEROID, MyModelsEnum.StaticAsteroid10m_D_LOD0));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\10m\\\\StaticAsteroid10m_D_LOD1\", MyMeshDrawTechnique.VOXELS_STATIC_ASTEROID, MyModelsEnum.StaticAsteroid10m_D_LOD1));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\20m\\\\StaticAsteroid20m_D_LOD0\", MyMeshDrawTechnique.VOXELS_STATIC_ASTEROID, MyModelsEnum.StaticAsteroid20m_D_LOD0));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\20m\\\\StaticAsteroid20m_D_LOD1\", MyMeshDrawTechnique.VOXELS_STATIC_ASTEROID, MyModelsEnum.StaticAsteroid20m_D_LOD1));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\30m\\\\StaticAsteroid30m_D_LOD0\", MyMeshDrawTechnique.VOXELS_STATIC_ASTEROID, MyModelsEnum.StaticAsteroid30m_D_LOD0));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\30m\\\\StaticAsteroid30m_D_LOD1\", MyMeshDrawTechnique.VOXELS_STATIC_ASTEROID, MyModelsEnum.StaticAsteroid30m_D_LOD1));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\50m\\\\StaticAsteroid50m_D_LOD0\", MyMeshDrawTechnique.VOXELS_STATIC_ASTEROID, MyModelsEnum.StaticAsteroid50m_D_LOD0));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\50m\\\\StaticAsteroid50m_D_LOD1\", MyMeshDrawTechnique.VOXELS_STATIC_ASTEROID, MyModelsEnum.StaticAsteroid50m_D_LOD1));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\100m\\\\StaticAsteroid100m_D_LOD0\", MyMeshDrawTechnique.VOXELS_STATIC_ASTEROID, MyModelsEnum.StaticAsteroid100m_D_LOD0));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\100m\\\\StaticAsteroid100m_D_LOD1\", MyMeshDrawTechnique.VOXELS_STATIC_ASTEROID, MyModelsEnum.StaticAsteroid100m_D_LOD1));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\300m\\\\StaticAsteroid300m_D_LOD0\", MyMeshDrawTechnique.VOXELS_STATIC_ASTEROID, MyModelsEnum.StaticAsteroid300m_D_LOD0));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\300m\\\\StaticAsteroid300m_D_LOD1\", MyMeshDrawTechnique.VOXELS_STATIC_ASTEROID, MyModelsEnum.StaticAsteroid300m_D_LOD1));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\500m\\\\StaticAsteroid500m_D_LOD0\", MyMeshDrawTechnique.VOXELS_STATIC_ASTEROID, MyModelsEnum.StaticAsteroid500m_D_LOD0));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\500m\\\\StaticAsteroid500m_D_LOD1\", MyMeshDrawTechnique.VOXELS_STATIC_ASTEROID, MyModelsEnum.StaticAsteroid500m_D_LOD1));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\1000m\\\\StaticAsteroid1000m_D_LOD0\", MyMeshDrawTechnique.VOXELS_STATIC_ASTEROID, MyModelsEnum.StaticAsteroid1000m_D_LOD0));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\1000m\\\\StaticAsteroid1000m_D_LOD1\", MyMeshDrawTechnique.VOXELS_STATIC_ASTEROID, MyModelsEnum.StaticAsteroid1000m_D_LOD1));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\2000m\\\\StaticAsteroid2000m_D_LOD0\", MyMeshDrawTechnique.VOXELS_STATIC_ASTEROID, MyModelsEnum.StaticAsteroid2000m_D_LOD0));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\2000m\\\\StaticAsteroid2000m_D_LOD1\", MyMeshDrawTechnique.VOXELS_STATIC_ASTEROID, MyModelsEnum.StaticAsteroid2000m_D_LOD1));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\5000m\\\\StaticAsteroid5000m_D_LOD0\", MyMeshDrawTechnique.VOXELS_STATIC_ASTEROID, MyModelsEnum.StaticAsteroid5000m_D_LOD0));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\5000m\\\\StaticAsteroid5000m_D_LOD1\", MyMeshDrawTechnique.VOXELS_STATIC_ASTEROID, MyModelsEnum.StaticAsteroid5000m_D_LOD1));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\10000m\\\\StaticAsteroid10000m_D_LOD0\", MyMeshDrawTechnique.VOXELS_STATIC_ASTEROID, MyModelsEnum.StaticAsteroid10000m_D_LOD0));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\10000m\\\\StaticAsteroid10000m_D_LOD1\", MyMeshDrawTechnique.VOXELS_STATIC_ASTEROID, MyModelsEnum.StaticAsteroid10000m_D_LOD1));\n\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\10m\\\\StaticAsteroid10m_E_LOD0\", MyMeshDrawTechnique.VOXELS_STATIC_ASTEROID, MyModelsEnum.StaticAsteroid10m_E_LOD0));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\10m\\\\StaticAsteroid10m_E_LOD1\", MyMeshDrawTechnique.VOXELS_STATIC_ASTEROID, MyModelsEnum.StaticAsteroid10m_E_LOD1));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\20m\\\\StaticAsteroid20m_E_LOD0\", MyMeshDrawTechnique.VOXELS_STATIC_ASTEROID, MyModelsEnum.StaticAsteroid20m_E_LOD0));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\20m\\\\StaticAsteroid20m_E_LOD1\", MyMeshDrawTechnique.VOXELS_STATIC_ASTEROID, MyModelsEnum.StaticAsteroid20m_E_LOD1));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\30m\\\\StaticAsteroid30m_E_LOD0\", MyMeshDrawTechnique.VOXELS_STATIC_ASTEROID, MyModelsEnum.StaticAsteroid30m_E_LOD0));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\30m\\\\StaticAsteroid30m_E_LOD1\", MyMeshDrawTechnique.VOXELS_STATIC_ASTEROID, MyModelsEnum.StaticAsteroid30m_E_LOD1));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\50m\\\\StaticAsteroid50m_E_LOD0\", MyMeshDrawTechnique.VOXELS_STATIC_ASTEROID, MyModelsEnum.StaticAsteroid50m_E_LOD0));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\50m\\\\StaticAsteroid50m_E_LOD1\", MyMeshDrawTechnique.VOXELS_STATIC_ASTEROID, MyModelsEnum.StaticAsteroid50m_E_LOD1));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\100m\\\\StaticAsteroid100m_E_LOD0\", MyMeshDrawTechnique.VOXELS_STATIC_ASTEROID, MyModelsEnum.StaticAsteroid100m_E_LOD0));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\100m\\\\StaticAsteroid100m_E_LOD1\", MyMeshDrawTechnique.VOXELS_STATIC_ASTEROID, MyModelsEnum.StaticAsteroid100m_E_LOD1));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\300m\\\\StaticAsteroid300m_E_LOD0\", MyMeshDrawTechnique.VOXELS_STATIC_ASTEROID, MyModelsEnum.StaticAsteroid300m_E_LOD0));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\300m\\\\StaticAsteroid300m_E_LOD1\", MyMeshDrawTechnique.VOXELS_STATIC_ASTEROID, MyModelsEnum.StaticAsteroid300m_E_LOD1));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\500m\\\\StaticAsteroid500m_E_LOD0\", MyMeshDrawTechnique.VOXELS_STATIC_ASTEROID, MyModelsEnum.StaticAsteroid500m_E_LOD0));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\500m\\\\StaticAsteroid500m_E_LOD1\", MyMeshDrawTechnique.VOXELS_STATIC_ASTEROID, MyModelsEnum.StaticAsteroid500m_E_LOD1));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\1000m\\\\StaticAsteroid1000m_E_LOD0\", MyMeshDrawTechnique.VOXELS_STATIC_ASTEROID, MyModelsEnum.StaticAsteroid1000m_E_LOD0));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\1000m\\\\StaticAsteroid1000m_E_LOD1\", MyMeshDrawTechnique.VOXELS_STATIC_ASTEROID, MyModelsEnum.StaticAsteroid1000m_E_LOD1));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\2000m\\\\StaticAsteroid2000m_E_LOD0\", MyMeshDrawTechnique.VOXELS_STATIC_ASTEROID, MyModelsEnum.StaticAsteroid2000m_E_LOD0));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\2000m\\\\StaticAsteroid2000m_E_LOD1\", MyMeshDrawTechnique.VOXELS_STATIC_ASTEROID, MyModelsEnum.StaticAsteroid2000m_E_LOD1));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\5000m\\\\StaticAsteroid5000m_E_LOD0\", MyMeshDrawTechnique.VOXELS_STATIC_ASTEROID, MyModelsEnum.StaticAsteroid5000m_E_LOD0));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\5000m\\\\StaticAsteroid5000m_E_LOD1\", MyMeshDrawTechnique.VOXELS_STATIC_ASTEROID, MyModelsEnum.StaticAsteroid5000m_E_LOD1));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\10000m\\\\StaticAsteroid10000m_E_LOD0\", MyMeshDrawTechnique.VOXELS_STATIC_ASTEROID, MyModelsEnum.StaticAsteroid10000m_E_LOD0));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Asteroids\\\\10000m\\\\StaticAsteroid10000m_E_LOD1\", MyMeshDrawTechnique.VOXELS_STATIC_ASTEROID, MyModelsEnum.StaticAsteroid10000m_E_LOD1));\n                               */\n            //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n            //  Large ships\n            //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\n            AddEntityModels(\"Models2\\\\ObjectsStatic\\\\LargeShips\\\\LargeShip_Kai\", MyModelsEnum.Kai, MyModelsEnum.Kai_LOD1, MyModelsEnum.Kai_COL);\n\n            AddEntityModels(\"Models2\\\\ObjectsStatic\\\\LargeShips\\\\LargeShip_Saya\", MyModelsEnum.MotherShipSaya, MyModelsEnum.MotherShipSaya_LOD1, MyModelsEnum.MotherShipSaya_COL);\n\n            AddEntityModels(\"Models2\\\\ObjectsStatic\\\\LargeShips\\\\LargeShip_Ardant\", MyModelsEnum.Ardant, MyModelsEnum.Ardant_LOD1, MyModelsEnum.Ardant_COL);\n\n            //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n            //  Guns for mining ships\n            //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\n\n            //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n            //  Large debris fields\n            //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\n            //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n            //  Editor\n            //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\n            //////////////////////////////////////////////////////////////////////////\n            //*\n            //////////////////////////////////////////////////////////////////////////\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\03_Passage\\\\01\\\\01_Straight\\\\p430_a01_passage_10m\", MyModelsEnum.p430_a01_passage_10m, MyModelsEnum.p430_a01_passage_10m_LOD1, MyModelsEnum.p430_a01_passage_10m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\03_Passage\\\\01\\\\01_Straight\\\\p430_a02_passage_40m\", MyModelsEnum.p430_a02_passage_40m, MyModelsEnum.p430_a02_passage_40m_LOD1, MyModelsEnum.p430_a02_passage_40m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\02_Pipe\\\\01\\\\04_Base\\\\p424_a01_pipe_base\", MyModelsEnum.p424_a01_pipe_base, null, MyModelsEnum.p424_a01_pipe_base_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\02_Pipe\\\\01\\\\03_Junction\\\\p423_a01_pipe_junction\", MyModelsEnum.p423_a01_pipe_junction, MyModelsEnum.p423_a01_pipe_junction_LOD1, MyModelsEnum.p423_a01_pipe_junction_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\02_Pipe\\\\01\\\\02_Turn\\\\p422_a01_pipe_turn_90\", MyModelsEnum.p422_a01_pipe_turn_90, MyModelsEnum.p422_a01_pipe_turn_90_LOD1, MyModelsEnum.p422_a01_pipe_turn_90_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\02_Pipe\\\\01\\\\01_Straight\\\\p421_a01_pipe_straight_80m\", MyModelsEnum.p421_a01_pipe_straight_80m, MyModelsEnum.p421_a01_pipe_straight_80m_LOD1, MyModelsEnum.p421_a01_pipe_straight_80m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\02_Pipe\\\\01\\\\01_Straight\\\\p421_a02_pipe_straight_40m\", MyModelsEnum.p421_a02_pipe_straight_40m, MyModelsEnum.p421_a02_pipe_straight_40m_LOD1, MyModelsEnum.p421_a02_pipe_straight_40m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\02_Pipe\\\\01\\\\01_Straight\\\\p421_a03_pipe_straight_10m\", MyModelsEnum.p421_a03_pipe_straight_10m, MyModelsEnum.p421_a03_pipe_straight_10m_LOD1, MyModelsEnum.p421_a03_pipe_straight_10m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\07\\\\05_Junction\\\\p413_g01_junction_6axes\", MyModelsEnum.p413_g01_junction_6axes, MyModelsEnum.p413_g01_junction_6axes_LOD1, MyModelsEnum.p413_g01_junction_6axes_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\07\\\\04_Entrance\\\\p414_g02_entrance_60m\", MyModelsEnum.p414_g02_entrance_60m, MyModelsEnum.p414_g02_entrance_60m_LOD1, MyModelsEnum.p414_g02_entrance_60m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\07\\\\02_Turn90\\\\00_0m\\\\p410_g01_turn_90_right_0m\", MyModelsEnum.p410_g01_turn_90_right_0m, MyModelsEnum.p410_g01_turn_90_right_0m_LOD1, MyModelsEnum.p410_g01_turn_90_right_0m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\07\\\\01_Straight\\\\p411_g01_straight_1\", MyModelsEnum.p411_g01_straight_1, MyModelsEnum.p411_g01_straight_1_LOD1, MyModelsEnum.p411_g01_straight_1_COL);\n            //AddModel(new MyModel(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\07\\\\01_Straight\\\\p411_g02_straight_2\", MyMeshDrawTechnique.MESH, MyModelsEnum.p411_g02_straight_2));\n            //AddModel(new MyModel(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\07\\\\01_Straight\\\\p411_g03_straight_3\", MyMeshDrawTechnique.MESH, MyModelsEnum.p411_g03_straight_3));\n            //AddModel(new MyModel(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\07\\\\01_Straight\\\\p411_g04_straight_4\", MyMeshDrawTechnique.MESH, MyModelsEnum.p411_g04_straight_4));\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\07\\\\01_Straight\\\\p411_g02_straight_2\", MyModelsEnum.p411_g02_straight_2, MyModelsEnum.p411_g02_straight_2_LOD1, MyModelsEnum.p411_g02_straight_2_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\07\\\\01_Straight\\\\p411_g03_straight_3\", MyModelsEnum.p411_g03_straight_3, MyModelsEnum.p411_g03_straight_3_LOD1, MyModelsEnum.p411_g03_straight_3_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\07\\\\01_Straight\\\\p411_g04_straight_4\", MyModelsEnum.p411_g04_straight_4, MyModelsEnum.p411_g04_straight_4_LOD1, MyModelsEnum.p411_g04_straight_4_COL);\n            //AddModel(new MyModel(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\06\\\\04_Entrance\\\\p414_f02_entrance_60m\", MyMeshDrawTechnique.MESH, MyModelsEnum.p414_f02_entrance_60m));\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\06\\\\03_TurnS\\\\p412_f21_turn_s_up\", MyModelsEnum.p412_f21_turn_s_up, null, MyModelsEnum.p412_f21_turn_s_up_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\06\\\\03_TurnS\\\\p412_f22_turn_s_left\", MyModelsEnum.p412_f22_turn_s_left, null, MyModelsEnum.p412_f22_turn_s_left_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\06\\\\03_TurnS\\\\p412_f23_turn_s_right\", MyModelsEnum.p412_f23_turn_s_right, null, MyModelsEnum.p412_f23_turn_s_right_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\06\\\\03_TurnS\\\\p412_f24_turn_s_down\", MyModelsEnum.p412_f24_turn_s_down, null, MyModelsEnum.p412_f24_turn_s_down_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\06\\\\02_Turn90\\\\01_230m\\\\p412_f01_turn_90_up_230m\", MyModelsEnum.p412_f01_turn_90_up_230m, null, null);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\06\\\\02_Turn90\\\\01_230m\\\\p412_f02_turn_90_left_230m\", MyModelsEnum.p412_f02_turn_90_left_230m, MyModelsEnum.p412_f02_turn_90_left_230m_LOD1, MyModelsEnum.p412_f02_turn_90_left_230m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\06\\\\02_Turn90\\\\01_230m\\\\p412_f03_turn_90_right_230m\", MyModelsEnum.p412_f03_turn_90_right_230m, MyModelsEnum.p412_f03_turn_90_right_230m_LOD1, MyModelsEnum.p412_f03_turn_90_right_230m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\06\\\\02_Turn90\\\\01_230m\\\\p412_f04_turn_90_down_230m\", MyModelsEnum.p412_f04_turn_90_down_230m, null, MyModelsEnum.p412_f04_turn_90_down_230m_COL);\n            //AddModel(new MyModel(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\06\\\\01_Straight\\\\p411_f01_straight_1\", MyMeshDrawTechnique.MESH, MyModelsEnum.p411_f01_straight_1));\n            //AddModel(new MyModel(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\06\\\\01_Straight\\\\p411_f02_straight_2\", MyMeshDrawTechnique.MESH, MyModelsEnum.p411_f02_straight_2));\n            //AddModel(new MyModel(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\06\\\\01_Straight\\\\p411_f03_straight_3\", MyMeshDrawTechnique.MESH, MyModelsEnum.p411_f03_straight_3));\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\06\\\\01_Straight\\\\p411_f01_straight_1\", MyModelsEnum.p411_f01_straight_1, null, MyModelsEnum.p411_f01_straight_1_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\06\\\\01_Straight\\\\p411_f02_straight_2\", MyModelsEnum.p411_f02_straight_2, null, MyModelsEnum.p411_f02_straight_2_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\06\\\\01_Straight\\\\p411_f03_straight_3\", MyModelsEnum.p411_f03_straight_3, null, MyModelsEnum.p411_f03_straight_3_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\05\\\\04_Entrance\\\\p414_e01_entrance_60m\", MyModelsEnum.p414_e01_entrance_60m, MyModelsEnum.p414_e01_entrance_60m_LOD1, MyModelsEnum.p414_e01_entrance_60m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\05\\\\01_Straight\\\\p411_e01_straight_1\", MyModelsEnum.p411_e01_straight_1, MyModelsEnum.p411_e01_straight_1_LOD1, MyModelsEnum.p411_e01_straight_1_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\05\\\\01_Straight\\\\p411_e02_straight_2\", MyModelsEnum.p411_e02_straight_2, MyModelsEnum.p411_e02_straight_2_LOD1, MyModelsEnum.p411_e02_straight_2_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\05\\\\01_Straight\\\\p411_e03_straight_3\", MyModelsEnum.p411_e03_straight_3, MyModelsEnum.p411_e03_straight_3_LOD1, MyModelsEnum.p411_e03_straight_3_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\05\\\\01_Straight\\\\p411_e04_straight_4\", MyModelsEnum.p411_e04_straight_4, MyModelsEnum.p411_e04_straight_4_LOD1, MyModelsEnum.p411_e04_straight_4_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\05\\\\01_Straight\\\\p411_e05_straight_5\", MyModelsEnum.p411_e05_straight_5, MyModelsEnum.p411_e05_straight_5_LOD1, MyModelsEnum.p411_e05_straight_5_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\04\\\\06_Other\\\\01_Door\\\\p415_d01_doorcase\", MyModelsEnum.p415_d01_doorcase, MyModelsEnum.p415_d01_doorcase_LOD1, MyModelsEnum.p415_d01_doorcase_COL);\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\04\\\\06_Other\\\\01_Door\\\\p415_d02_door1\", MyMeshDrawTechnique.MESH, MyModelsEnum.p415_d02_door1));\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\04\\\\06_Other\\\\01_Door\\\\p415_d03_door2_a\", MyModelsEnum.p415_d03_door2_a, null, MyModelsEnum.p415_d03_door2_a_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\04\\\\06_Other\\\\01_Door\\\\p415_d03_door2_b\", MyModelsEnum.p415_d03_door2_b, null, MyModelsEnum.p415_d03_door2_b_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\04\\\\05_Junction\\\\p413_d01_junction_t_horizontal\", MyModelsEnum.p413_d01_junction_t_horizontal, MyModelsEnum.p413_d01_junction_t_horizontal_LOD1, null);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\04\\\\05_Junction\\\\p413_d03_junction_x_horizontal\", MyModelsEnum.p413_d03_junction_x_horizontal, MyModelsEnum.p413_d03_junction_x_horizontal_LOD1, MyModelsEnum.p413_d03_junction_x_horizontal_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\04\\\\04_Entrance\\\\p414_d01_entrance_60m\", MyModelsEnum.p414_d01_entrance_60m, null, MyModelsEnum.p414_d01_entrance_60m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\04\\\\01_Straight\\\\p411_d01_straight_10m\", MyModelsEnum.p411_d01_straight_10m, MyModelsEnum.p411_d01_straight_10m_LOD1, MyModelsEnum.p411_d01_straight_10m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\04\\\\01_Straight\\\\p411_d02_straight_40m_with_hole\", MyModelsEnum.p411_d02_straight_40m_with_hole, MyModelsEnum.p411_d02_straight_40m_with_hole_LOD1, MyModelsEnum.p411_d02_straight_40m_with_hole_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\04\\\\01_Straight\\\\p411_d03_straight_60m\", MyModelsEnum.p411_d03_straight_60m, MyModelsEnum.p411_d03_straight_60m_LOD1, MyModelsEnum.p411_d03_straight_60m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\04\\\\01_Straight\\\\p411_d04_straight_120m\", MyModelsEnum.p411_d04_straight_120m, MyModelsEnum.p411_d04_straight_120m_LOD1, MyModelsEnum.p411_d04_straight_120m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\04\\\\01_Straight\\\\p411_d05_straight_180m\", MyModelsEnum.p411_d05_straight_180m, MyModelsEnum.p411_d05_straight_180m_LOD1, MyModelsEnum.p411_d05_straight_180m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\03\\\\06_Other\\\\01_Door\\\\p415_c01_doorcase\", MyModelsEnum.p415_c01_doorcase, MyModelsEnum.p415_c01_doorcase_LOD1, MyModelsEnum.p415_c01_doorcase_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\03\\\\06_Other\\\\01_Door\\\\p415_c02_door1_right\", MyModelsEnum.p415_c02_door1_right, null, MyModelsEnum.p415_c02_door1_right_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\03\\\\06_Other\\\\01_Door\\\\p415_c02_door1_left\", MyModelsEnum.p415_c02_door1_left, null, MyModelsEnum.p415_c02_door1_left_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\03\\\\06_Other\\\\01_Door\\\\p415_c03_door2_a_left\", MyModelsEnum.p415_c03_door2_a_left, MyModelsEnum.p415_c03_door2_a_left_LOD1, MyModelsEnum.p415_c03_door2_a_left_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\03\\\\06_Other\\\\01_Door\\\\p415_c03_door2_a_right\", MyModelsEnum.p415_c03_door2_a_right, MyModelsEnum.p415_c03_door2_a_right_LOD1, MyModelsEnum.p415_c03_door2_a_right_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\03\\\\06_Other\\\\01_Door\\\\p415_c03_door2_b_left\", MyModelsEnum.p415_c03_door2_b_left, MyModelsEnum.p415_c03_door2_b_left_LOD1, MyModelsEnum.p415_c03_door2_b_left_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\03\\\\06_Other\\\\01_Door\\\\p415_c03_door2_b_right\", MyModelsEnum.p415_c03_door2_b_right, MyModelsEnum.p415_c03_door2_b_right_LOD1, MyModelsEnum.p415_c03_door2_b_right_COL);\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\03\\\\06_Other\\\\01_Door\\\\p415_c02_door1\", MyMeshDrawTechnique.MESH, MyModelsEnum.p415_c02_door1));\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\03\\\\06_Other\\\\01_Door\\\\p415_c03_door2_a\", MyMeshDrawTechnique.MESH, MyModelsEnum.p415_c03_door2_a));\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\03\\\\06_Other\\\\01_Door\\\\p415_c03_door2_b\", MyMeshDrawTechnique.MESH, MyModelsEnum.p415_c03_door2_b));\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\03\\\\06_Other\\\\01_Door\\\\p415_c04_door3\", MyMeshDrawTechnique.MESH, MyModelsEnum.p415_c04_door3));\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\03\\\\05_Junction\\\\p413_c01_junction_t_horizontal\", MyModelsEnum.p413_c01_junction_t_horizontal, MyModelsEnum.p413_c01_junction_t_horizontal_LOD1, MyModelsEnum.p413_c01_junction_t_horizontal_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\03\\\\05_Junction\\\\p413_c01_junction_x_horizontal\", MyModelsEnum.p413_c01_junction_x_horizontal, MyModelsEnum.p413_c01_junction_x_horizontal_LOD1, MyModelsEnum.p413_c01_junction_x_horizontal_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\03\\\\04_Entrance\\\\p414_c01_entrance_60m\", MyModelsEnum.p414_c01_entrance_60m, null, MyModelsEnum.p414_c01_entrance_60m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\03\\\\01_Straight\\\\p411_c01_straight_10m\", MyModelsEnum.p411_c01_straight_10m, null, MyModelsEnum.p411_c01_straight_10m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\03\\\\01_Straight\\\\p411_c02_straight_40m_with_hole\", MyModelsEnum.p411_c02_straight_40m_with_hole, MyModelsEnum.p411_c02_straight_40m_with_hole_LOD1, MyModelsEnum.p411_c02_straight_40m_with_hole_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\03\\\\01_Straight\\\\p411_c03_straight_60m\", MyModelsEnum.p411_c03_straight_60m, MyModelsEnum.p411_c03_straight_60m_LOD1, MyModelsEnum.p411_c03_straight_60m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\03\\\\01_Straight\\\\p411_c04_straight_120m\", MyModelsEnum.p411_c04_straight_120m, MyModelsEnum.p411_c04_straight_120m_LOD1, MyModelsEnum.p411_c04_straight_120m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\03\\\\01_Straight\\\\p411_c05_straight_180m\", MyModelsEnum.p411_c05_straight_180m, MyModelsEnum.p411_c05_straight_180m_LOD1, MyModelsEnum.p411_c05_straight_180m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\02\\\\06_Other\\\\01_Door\\\\p415_b01_doorcase\", MyModelsEnum.p415_b01_doorcase, MyModelsEnum.p415_b01_doorcase_LOD1, MyModelsEnum.p415_b01_doorcase_COL);\n            //AddModel(new MyModel(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\02\\\\06_Other\\\\01_Door\\\\p415_b02_door\", MyMeshDrawTechnique.MESH, MyModelsEnum.p415_b02_door));\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\02\\\\05_Junction\\\\p413_b01_junction_t_horizontal\", MyModelsEnum.p413_b01_junction_t_horizontal, MyModelsEnum.p413_b01_junction_t_horizontal_LOD1, MyModelsEnum.p413_b01_junction_t_horizontal_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\02\\\\05_Junction\\\\p413_b02_junction_t_vertical\", MyModelsEnum.p413_b02_junction_t_vertical, MyModelsEnum.p413_b02_junction_t_vertical_LOD1, MyModelsEnum.p413_b02_junction_t_vertical_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\02\\\\04_Entrance\\\\p414_b02_entrance_60m\", MyModelsEnum.p414_b02_entrance_60m, MyModelsEnum.p414_b02_entrance_60m_LOD1, MyModelsEnum.p414_b02_entrance_60m_COL);\n            //AddModel(new MyModel(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\02\\\\04_Entrance\\\\p414_b02_entrance_60m_LOD1\", MyMeshDrawTechnique.MESH, MyModelsEnum.p414_b02_entrance_60m_LOD1));\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\02\\\\03_TurnS\\\\p412_b21_turn_s_up\", MyModelsEnum.p412_b21_turn_s_up, MyModelsEnum.p412_b21_turn_s_up_LOD1, MyModelsEnum.p412_b21_turn_s_up_COL);\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\02\\\\03_TurnS\\\\p412_b22_turn_s_left\", MyMeshDrawTechnique.MESH, MyModelsEnum.p412_b22_turn_s_left));\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\02\\\\03_TurnS\\\\p412_b23_turn_s_right\", MyModelsEnum.p412_b23_turn_s_right, MyModelsEnum.p412_b23_turn_s_right_LOD1, MyModelsEnum.p412_b23_turn_s_right_COL);\n            //AddModel(new MyModel(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\02\\\\03_TurnS\\\\p412_b24_turn_s_down\", MyMeshDrawTechnique.MESH, MyModelsEnum.p412_b24_turn_s_down));\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\02\\\\03_TurnS\\\\p412_b22_turn_s_left_LOD1\", MyMeshDrawTechnique.MESH, MyModelsEnum.p412_b22_turn_s_left_LOD1));\n            //AddModel(new MyModel(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\02\\\\03_TurnS\\\\p412_b24_turn_s_down_LOD1\", MyMeshDrawTechnique.MESH, MyModelsEnum.p412_b24_turn_s_down_LOD1));\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\02\\\\03_TurnS\\\\p412_b24_turn_s_down\", MyModelsEnum.p412_b24_turn_s_down, MyModelsEnum.p412_b24_turn_s_down_LOD1, MyModelsEnum.p412_b24_turn_s_down_COL);\n\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\02\\\\02_Turn90\\\\02_160m\\\\p412_b11_turn_90_up_160m\", MyMeshDrawTechnique.MESH, MyModelsEnum.p412_b11_turn_90_up_160m));\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\02\\\\02_Turn90\\\\02_160m\\\\p412_b12_turn_90_left_160m\", MyModelsEnum.p412_b12_turn_90_left_160m, MyModelsEnum.p412_b12_turn_90_left_160m_LOD1, null);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\02\\\\02_Turn90\\\\02_160m\\\\p412_b13_turn_90_right_160m\", MyModelsEnum.p412_b13_turn_90_right_160m, MyModelsEnum.p412_b13_turn_90_right_160m_LOD1, MyModelsEnum.p412_b13_turn_90_right_160m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\02\\\\02_Turn90\\\\02_160m\\\\p412_b14_turn_90_down_160m\", MyModelsEnum.p412_b14_turn_90_down_160m, MyModelsEnum.p412_b14_turn_90_down_160m_LOD1, MyModelsEnum.p412_b14_turn_90_down_160m_COL);\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\02\\\\02_Turn90\\\\02_160m\\\\p412_b11_turn_90_up_160m_LOD1\", MyMeshDrawTechnique.MESH, MyModelsEnum.p412_b11_turn_90_up_160m_LOD1));\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\02\\\\02_Turn90\\\\01_80m\\\\p412_b01_turn_90_up_80m\", MyModelsEnum.p412_b01_turn_90_up_80m, MyModelsEnum.p412_b01_turn_90_up_80m_LOD1, MyModelsEnum.p412_b01_turn_90_up_80m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\02\\\\02_Turn90\\\\01_80m\\\\p412_b02_turn_90_left_80m\", MyModelsEnum.p412_b02_turn_90_left_80m, MyModelsEnum.p412_b02_turn_90_left_80m_LOD1, MyModelsEnum.p412_b02_turn_90_left_80m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\02\\\\02_Turn90\\\\01_80m\\\\p412_b03_turn_90_right_80m\", MyModelsEnum.p412_b03_turn_90_right_80m, MyModelsEnum.p412_b03_turn_90_right_80m_LOD1, MyModelsEnum.p412_b03_turn_90_right_80m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\02\\\\02_Turn90\\\\01_80m\\\\p412_b04_turn_90_down_80m\", MyModelsEnum.p412_b04_turn_90_down_80m, MyModelsEnum.p412_b04_turn_90_down_80m_LOD1, MyModelsEnum.p412_b04_turn_90_down_80m_COL);\n\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\02\\\\01_Straight\\\\p411_b01_straight_10m\", MyModelsEnum.p411_b01_straight_10m, MyModelsEnum.p411_b01_straight_10m_LOD1, MyModelsEnum.p411_b01_straight_10m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\02\\\\01_Straight\\\\p411_b02_straight_30m_yellow\", MyModelsEnum.p411_b02_straight_30m_yellow, MyModelsEnum.p411_b02_straight_30m_yellow_LOD1, MyModelsEnum.p411_b02_straight_30m_yellow_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\02\\\\01_Straight\\\\p411_b03_straight_320m\", MyModelsEnum.p411_b03_straight_320m, MyModelsEnum.p411_b03_straight_320m_LOD1, MyModelsEnum.p411_b03_straight_320m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\02\\\\01_Straight\\\\p411_b04_straight_80m_with_side_grates\", MyModelsEnum.p411_b04_straight_80m_with_side_grates, MyModelsEnum.p411_b04_straight_80m_with_side_grates_LOD1, MyModelsEnum.p411_b04_straight_80m_with_side_grates_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\02\\\\01_Straight\\\\p411_b05_straight_80m_with_side_open\", MyModelsEnum.p411_b05_straight_80m_with_side_open, MyModelsEnum.p411_b05_straight_80m_with_side_open_LOD1, MyModelsEnum.p411_b05_straight_80m_with_side_open_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\02\\\\01_Straight\\\\p411_b06_straight_180m_concrete\", MyModelsEnum.p411_b06_straight_180m_concrete, MyModelsEnum.p411_b06_straight_180m_concrete_LOD1, MyModelsEnum.p411_b06_straight_180m_concrete_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\02\\\\01_Straight\\\\p411_b06_straight_200m\", MyModelsEnum.p411_b06_straight_200m, MyModelsEnum.p411_b06_straight_200m_LOD1, MyModelsEnum.p411_b06_straight_200m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\02\\\\01_Straight\\\\p411_b07_straight_180m_blue\", MyModelsEnum.p411_b07_straight_180m_blue, MyModelsEnum.p411_b07_straight_180m_blue_LOD1, MyModelsEnum.p411_b07_straight_180m_blue_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\02\\\\01_Straight\\\\p411_b09_straight_30m_gray\", MyModelsEnum.p411_b09_straight_30m_gray, MyModelsEnum.p411_b09_straight_30m_gray_LOD1, MyModelsEnum.p411_b09_straight_30m_gray_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\02\\\\01_Straight\\\\p411_b11_straight_220m\", MyModelsEnum.p411_b11_straight_220m, MyModelsEnum.p411_b11_straight_220m_LOD1, MyModelsEnum.p411_b11_straight_220m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\02\\\\01_Straight\\\\p411_b12_straight_160m_dark_metal\", MyModelsEnum.p411_b12_straight_160m_dark_metal, MyModelsEnum.p411_b12_straight_160m_dark_metal_LOD1, MyModelsEnum.p411_b12_straight_160m_dark_metal_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\02\\\\01_Straight\\\\p411_b13_straight_100m_tube_inside\", MyModelsEnum.p411_b13_straight_100m_tube_inside, MyModelsEnum.p411_b13_straight_100m_tube_inside_LOD1, MyModelsEnum.p411_b13_straight_100m_tube_inside_COL);\n\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\01\\\\06_Other\\\\01_Door\\\\p415_a01_doorcase\", MyModelsEnum.p415_a01_doorcase, MyModelsEnum.p415_a01_doorcase_LOD1, MyModelsEnum.p415_a01_doorcase_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\01\\\\06_Other\\\\01_Door\\\\p415_a02_door_left\", MyModelsEnum.p415_a02_door_left, null, MyModelsEnum.p415_a02_door_left_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\01\\\\06_Other\\\\01_Door\\\\p415_a02_door_right\", MyModelsEnum.p415_a02_door_right, null, MyModelsEnum.p415_a02_door_right_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\01\\\\06_Other\\\\01_Door\\\\p415_a02_door\", MyModelsEnum.p415_a02_door, null, null);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\01\\\\05_Junction\\\\p413_a01_junction_t_horizontal\", MyModelsEnum.p413_a01_junction_t_horizontal, MyModelsEnum.p413_a01_junction_t_horizontal_LOD1, MyModelsEnum.p413_a01_junction_t_horizontal_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\01\\\\05_Junction\\\\p413_a02_junction_t_vertical\", MyModelsEnum.p413_a02_junction_t_vertical, MyModelsEnum.p413_a02_junction_t_vertical_LOD1, MyModelsEnum.p413_a02_junction_t_vertical_COL);\n            //AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\01\\\\04_Entrance\\\\p414_a01_entrance_30m\", MyModelsEnum.p414_a01_entrance_30m, null, null);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\01\\\\04_Entrance\\\\p414_a02_entrance_60m\", MyModelsEnum.p414_a02_entrance_60m, MyModelsEnum.p414_a02_entrance_60m_LOD1, MyModelsEnum.p414_a02_entrance_60m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\01\\\\03_TurnS\\\\p412_a21_turn_s_up\", MyModelsEnum.p412_a21_turn_s_up, MyModelsEnum.p412_a21_turn_s_up_LOD1, MyModelsEnum.p412_a21_turn_s_up_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\01\\\\03_TurnS\\\\p412_a22_turn_s_left\", MyModelsEnum.p412_a22_turn_s_left, MyModelsEnum.p412_a22_turn_s_left_LOD1, MyModelsEnum.p412_a22_turn_s_left_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\01\\\\03_TurnS\\\\p412_a23_turn_s_right\", MyModelsEnum.p412_a23_turn_s_right, MyModelsEnum.p412_a23_turn_s_right_LOD1, MyModelsEnum.p412_a23_turn_s_right_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\01\\\\03_TurnS\\\\p412_a24_turn_s_down\", MyModelsEnum.p412_a24_turn_s_down, MyModelsEnum.p412_a24_turn_s_down_LOD1, MyModelsEnum.p412_a24_turn_s_down_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\01\\\\02_Turn90\\\\02_160m\\\\p412_a11_turn_90_up_160m\", MyModelsEnum.p412_a11_turn_90_up_160m, MyModelsEnum.p412_a11_turn_90_up_160m_LOD1, MyModelsEnum.p412_a11_turn_90_up_160m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\01\\\\02_Turn90\\\\02_160m\\\\p412_a12_turn_90_left_160m\", MyModelsEnum.p412_a12_turn_90_left_160m, MyModelsEnum.p412_a12_turn_90_left_160m_LOD1, MyModelsEnum.p412_a12_turn_90_left_160m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\01\\\\02_Turn90\\\\02_160m\\\\p412_a13_turn_90_right_160m\", MyModelsEnum.p412_a13_turn_90_right_160m, MyModelsEnum.p412_a13_turn_90_right_160m_LOD1, MyModelsEnum.p412_a13_turn_90_right_160m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\01\\\\02_Turn90\\\\02_160m\\\\p412_a14_turn_90_down_160m\", MyModelsEnum.p412_a14_turn_90_down_160m, MyModelsEnum.p412_a14_turn_90_down_160m_LOD1, MyModelsEnum.p412_a14_turn_90_down_160m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\01\\\\02_Turn90\\\\01_80m\\\\p412_a01_turn_90_up_80m\", MyModelsEnum.p412_a01_turn_90_up_80m, MyModelsEnum.p412_a01_turn_90_up_80m_LOD1, MyModelsEnum.p412_a01_turn_90_up_80m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\01\\\\02_Turn90\\\\01_80m\\\\p412_a02_turn_90_left_80m\", MyModelsEnum.p412_a02_turn_90_left_80m, MyModelsEnum.p412_a02_turn_90_left_80m_LOD1, MyModelsEnum.p412_a02_turn_90_left_80m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\01\\\\02_Turn90\\\\01_80m\\\\p412_a03_turn_90_right_80m\", MyModelsEnum.p412_a03_turn_90_right_80m, MyModelsEnum.p412_a03_turn_90_right_80m_LOD1, MyModelsEnum.p412_a03_turn_90_right_80m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\01\\\\02_Turn90\\\\01_80m\\\\p412_a04_turn_90_down_80m\",  MyModelsEnum.p412_a04_turn_90_down_80m, MyModelsEnum.p412_a04_turn_90_down_80m_LOD1, MyModelsEnum.p412_a04_turn_90_down_80m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\01\\\\01_Straight\\\\p411_a01_straight_10m\", MyModelsEnum.p411_a01_straight_10m, MyModelsEnum.p411_a01_straight_10m_LOD1, MyModelsEnum.p411_a01_straight_10m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\01\\\\01_Straight\\\\p411_a02_straight_60m_with_hole\", MyModelsEnum.p411_a02_straight_60m_with_hole, MyModelsEnum.p411_a02_straight_60m_with_hole_LOD1, MyModelsEnum.p411_a02_straight_60m_with_hole_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\01\\\\01_Straight\\\\p411_a03_straight_120m\", MyModelsEnum.p411_a03_straight_120m, MyModelsEnum.p411_a03_straight_120m_LOD1,MyModelsEnum.p411_a03_straight_120m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\01\\\\01_Straight\\\\p411_a04_straight_80m\", MyModelsEnum.p411_a04_straight_80m, MyModelsEnum.p411_a04_straight_80m_LOD1, MyModelsEnum.p411_a04_straight_80m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\01\\\\01_Straight\\\\p411_a05_straight_80m_with_extension\", MyModelsEnum.p411_a05_straight_80m_with_extension, MyModelsEnum.p411_a05_straight_80m_with_extension_LOD1, MyModelsEnum.p411_a05_straight_80m_with_extension_COL);\n            \n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\03_Modules\\\\08_MannedObjects\\\\02_Bridge\\\\05\\\\p382_e01_bridge5\", MyMeshDrawTechnique.MESH, MyModelsEnum.p382_e01_bridge5));\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\03_Modules\\\\08_MannedObjects\\\\02_Bridge\\\\05\\\\p382_e01_bridge5_LOD1\", MyMeshDrawTechnique.MESH, MyModelsEnum.p382_e01_bridge5_LOD1));\n            AddEntityModels(\"Models2\\\\Prefabs\\\\03_Modules\\\\08_MannedObjects\\\\02_Bridge\\\\04\\\\p382_d01_bridge4\", MyModelsEnum.p382_d01_bridge4, MyModelsEnum.p382_d01_bridge4_LOD1, MyModelsEnum.p382_d01_bridge4_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\03_Modules\\\\08_MannedObjects\\\\02_Bridge\\\\03\\\\p382_c01_bridge3\", MyModelsEnum.p382_c01_bridge3, MyModelsEnum.p382_c01_bridge3_LOD1, MyModelsEnum.p382_c01_bridge3_COL);\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\03_Modules\\\\08_MannedObjects\\\\02_Bridge\\\\02\\\\p382_b01_bridge2\", MyMeshDrawTechnique.MESH, MyModelsEnum.p382_b01_bridge2));\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\03_Modules\\\\08_MannedObjects\\\\02_Bridge\\\\02\\\\p382_b01_bridge2_LOD1\", MyMeshDrawTechnique.MESH, MyModelsEnum.p382_b01_bridge2_LOD1));\n            AddEntityModels(\"Models2\\\\Prefabs\\\\03_Modules\\\\08_MannedObjects\\\\02_Bridge\\\\01\\\\p382_a01_bridge1\", MyModelsEnum.p382_a01_bridge1, MyModelsEnum.p382_a01_bridge1_LOD1, MyModelsEnum.p382_a01_bridge1_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\03_Modules\\\\08_MannedObjects\\\\01_LivingQuarters\\\\03\\\\p381_c01_building4\", MyModelsEnum.p381_c01_building4, MyModelsEnum.p381_c01_building4_LOD1, MyModelsEnum.p381_c01_building4_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\03_Modules\\\\08_MannedObjects\\\\01_LivingQuarters\\\\03\\\\p381_c01_building3\", MyModelsEnum.p381_c01_building3, MyModelsEnum.p381_c01_building3_LOD1, MyModelsEnum.p381_c01_building3_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\03_Modules\\\\08_MannedObjects\\\\01_LivingQuarters\\\\02\\\\p381_b01_building2\", MyModelsEnum.p381_b01_building2, MyModelsEnum.p381_b01_building2_LOD1, MyModelsEnum.p381_b01_building2_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\03_Modules\\\\08_MannedObjects\\\\01_LivingQuarters\\\\01\\\\p381_a01_building1\", MyModelsEnum.p381_a01_building1, MyModelsEnum.p381_a01_building1_LOD1, MyModelsEnum.p381_a01_building1_COL);\n            //AddEntityModels(\"Models2\\\\Prefabs\\\\03_Modules\\\\07_Hangars\\\\01_Small\\\\01\\\\p361_a01_small_hangar\", MyModelsEnum.p361_a01_small_hangar, null, MyModelsEnum.p361_a01_small_hangar_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\03_Modules\\\\06_Communications\\\\02_ShortDistanceAntenna\\\\p362_a01_short_distance_antenna\", MyModelsEnum.p362_a01_short_distance_antenna, MyModelsEnum.p362_a01_short_distance_antenna_LOD1, MyModelsEnum.p362_a01_short_distance_antenna_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\03_Modules\\\\06_Communications\\\\01_LongDistanceAntenna\\\\01\\\\p361_a01_long_distance_antenna\", MyModelsEnum.p361_a01_long_distance_antenna, MyModelsEnum.p361_a01_long_distance_antenna_LOD1, MyModelsEnum.p361_a01_long_distance_antenna_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\03_Modules\\\\05_Weaponry\\\\01_WeaponMount\\\\01\\\\p351_a01_weapon_mount\", MyModelsEnum.p351_a01_weapon_mount, MyModelsEnum.p351_a01_weapon_mount_LOD1, MyModelsEnum.p351_a01_weapon_mount_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\03_Modules\\\\04_Industry\\\\05_Refinery\\\\01\\\\p345_a01_refinery\", MyModelsEnum.p345_a01_refinery, MyModelsEnum.p345_a01_refinery_LOD1, MyModelsEnum.p345_a01_refinery_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\03_Modules\\\\04_Industry\\\\04_CargoStorage\\\\01\\\\p344_a01_container_arm_filled\", MyModelsEnum.p344_a01_container_arm_filled, MyModelsEnum.p344_a01_container_arm_filled_LOD1, MyModelsEnum.p344_a01_container_arm_filled_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\03_Modules\\\\04_Industry\\\\04_CargoStorage\\\\01\\\\p344_a02_container_arm_empty\", MyModelsEnum.p344_a02_container_arm_empty, MyModelsEnum.p344_a02_container_arm_empty_LOD1, MyModelsEnum.p344_a02_container_arm_empty_COL);\n            //AddModel(new MyModel(\"Models2\\\\Prefabs\\\\03_Modules\\\\04_Industry\\\\03_OreStorage\\\\01\\\\p343_a01_ore_storage\", MyMeshDrawTechnique.MESH, MyModelsEnum.p343_a01_ore_storage));\n            AddEntityModels(\"Models2\\\\Prefabs\\\\03_Modules\\\\04_Industry\\\\03_OreStorage\\\\01\\\\p343_a01_ore_storage\", MyModelsEnum.p343_a01_ore_storage, null, MyModelsEnum.p343_a01_ore_storage_COL);\n            //AddModel(new MyModel(\"Models2\\\\Prefabs\\\\03_Modules\\\\04_Industry\\\\02_LoadingBay\\\\01\\\\p342_a01_loading_bay\", MyMeshDrawTechnique.MESH, MyModelsEnum.p342_a01_loading_bay));\n            AddEntityModels(\"Models2\\\\Prefabs\\\\03_Modules\\\\04_Industry\\\\02_LoadingBay\\\\01\\\\p342_a01_loading_bay\", MyModelsEnum.p342_a01_loading_bay, null, MyModelsEnum.p342_a01_loading_bay_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\03_Modules\\\\04_Industry\\\\01_Docks\\\\02\\\\p341_b01_open_dock_variation1\", MyModelsEnum.p341_b01_open_dock_variation1, MyModelsEnum.p341_b01_open_dock_variation1_LOD1, MyModelsEnum.p341_b01_open_dock_variation1_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\03_Modules\\\\04_Industry\\\\01_Docks\\\\02\\\\p341_b02_open_dock_variation2\", MyModelsEnum.p341_b02_open_dock_variation2, MyModelsEnum.p341_b02_open_dock_variation2_LOD1, MyModelsEnum.p341_b02_open_dock_variation2_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\03_Modules\\\\04_Industry\\\\01_Docks\\\\01\\\\p341_a01_open_dock_variation1\", MyModelsEnum.p341_a01_open_dock_variation1, MyModelsEnum.p341_a01_open_dock_variation1_LOD1, MyModelsEnum.p341_a01_open_dock_variation1_COL);\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\03_Modules\\\\04_Industry\\\\01_Docks\\\\01\\\\p341_a01_open_dock_variation1_doorleft\", MyMeshDrawTechnique.MESH, MyModelsEnum.p341_a01_open_dock_variation1_doorleft));\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\03_Modules\\\\04_Industry\\\\01_Docks\\\\01\\\\p341_a01_open_dock_variation1_doorright\", MyMeshDrawTechnique.MESH, MyModelsEnum.p341_a01_open_dock_variation1_doorright));\n            AddEntityModels(\"Models2\\\\Prefabs\\\\03_Modules\\\\04_Industry\\\\01_Docks\\\\01\\\\p341_a02_open_dock_variation2\", MyModelsEnum.p341_a02_open_dock_variation2, MyModelsEnum.p341_a02_open_dock_variation2_LOD1, MyModelsEnum.p341_a02_open_dock_variation2_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\03_Modules\\\\03_LifeSupport\\\\03_HydroponicFarm\\\\01\\\\p333_a01_hydroponic_building\", MyModelsEnum.p333_a01_hydroponic_building, MyModelsEnum.p333_a01_hydroponic_building_LOD1, MyModelsEnum.p333_a01_hydroponic_building_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\03_Modules\\\\03_LifeSupport\\\\02_OxygenStorage\\\\01\\\\p332_a01_oxygen_storage\", MyModelsEnum.p332_a01_oxygen_storage, MyModelsEnum.p332_a01_oxygen_storage_LOD1, MyModelsEnum.p332_a01_oxygen_storage_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\03_Modules\\\\03_LifeSupport\\\\01_OxygenGeneration\\\\01\\\\p331_a01_oxygen_generator\", MyModelsEnum.p331_a01_oxygen_generator, MyModelsEnum.p331_a01_oxygen_generator_LOD1, MyModelsEnum.p331_a01_oxygen_generator_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\03_Modules\\\\02_Supply\\\\04_FuelStorage\\\\02\\\\p324b01_fuel_storage_b\", MyModelsEnum.p324b01_fuel_storage_b, MyModelsEnum.p324b01_fuel_storage_b_LOD1, MyModelsEnum.p324b01_fuel_storage_b_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\03_Modules\\\\02_Supply\\\\04_FuelStorage\\\\01\\\\p324a01_fuel_storage_a\", MyModelsEnum.p324a01_fuel_storage_a, MyModelsEnum.p324a01_fuel_storage_a_LOD1, MyModelsEnum.p324a01_fuel_storage_a_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\03_Modules\\\\02_Supply\\\\03_FuelGeneration\\\\01\\\\p323a01_fuel_generator\", MyModelsEnum.p323a01_fuel_generator, MyModelsEnum.p323a01_fuel_generator_LOD1, MyModelsEnum.p323a01_fuel_generator_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\03_Modules\\\\02_Supply\\\\02_PowerStorage\\\\01\\\\p322a01_battery\", MyModelsEnum.p322a01_battery, MyModelsEnum.p322a01_battery_LOD1, MyModelsEnum.p322a01_battery_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\03_Modules\\\\02_Supply\\\\01_PowerGeneration\\\\03\\\\p321c01_inertia_generator\", MyModelsEnum.p321c01_inertia_generator, MyModelsEnum.p321c01_inertia_generator_LOD1, MyModelsEnum.p321c01_inertia_generator_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\03_Modules\\\\02_Supply\\\\01_PowerGeneration\\\\03\\\\p321c01_inertia_generator_center\", MyModelsEnum.p321c01_inertia_generator_center, MyModelsEnum.p321c01_inertia_generator_center_LOD1, MyModelsEnum.p321c01_inertia_generator_center_COL);\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\03_Modules\\\\02_Supply\\\\01_PowerGeneration\\\\02\\\\p321b01_nuclear_reactor\", MyMeshDrawTechnique.MESH, MyModelsEnum.p321b01_nuclear_reactor));\n            //AddEntityModels(\"Models2\\\\Prefabs\\\\03_Modules\\\\02_Supply\\\\01_PowerGeneration\\\\01\\\\p321a01_solar_panel\", MyModelsEnum.p321a01_solar_panel, MyModelsEnum.p321a01_solar_panel_LOD1, MyModelsEnum.p321a01_solar_panel_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\03_Modules\\\\01_Flight\\\\02_ShortTermThruster\\\\01\\\\p312a01_short_term_thruster_latitude\", MyModelsEnum.p312a01_short_term_thruster_latitude, MyModelsEnum.p312a01_short_term_thruster_latitude_LOD1, MyModelsEnum.p312a01_short_term_thruster_latitude_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\03_Modules\\\\01_Flight\\\\02_ShortTermThruster\\\\01\\\\p312a02_short_term_thruster_lateral\", MyModelsEnum.p312a02_short_term_thruster_lateral, MyModelsEnum.p312a02_short_term_thruster_lateral_LOD1, MyModelsEnum.p312a02_short_term_thruster_lateral_COL);\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\03_Modules\\\\01_Flight\\\\01_LongTermThruster\\\\01\\\\p311a01_long_term_thruster\", MyMeshDrawTechnique.MESH, MyModelsEnum.p311a01_long_term_thruster));            \n            AddEntityModels(\"Models2\\\\Prefabs\\\\02_Shells\\\\03_Armor\\\\01\\\\p231a01_armor\", MyModelsEnum.p231a01_armor, MyModelsEnum.p231a01_armor_LOD01, MyModelsEnum.p231a01_armor_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\02_Shells\\\\03_Armor\\\\01\\\\p231a02_armor\", MyModelsEnum.p231a02_armor, MyModelsEnum.p231a02_armor_LOD01, MyModelsEnum.p231a02_armor_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\02_Shells\\\\03_Armor\\\\01\\\\p231a03_armor\", MyModelsEnum.p231a03_armor, MyModelsEnum.p231a03_armor_LOD01, MyModelsEnum.p231a03_armor_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\02_Shells\\\\03_Armor\\\\01\\\\p231a04_armor\", MyModelsEnum.p231a04_armor, MyModelsEnum.p231a04_armor_LOD01, MyModelsEnum.p231a04_armor_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\02_Shells\\\\03_Armor\\\\01\\\\p231a05_armor\", MyModelsEnum.p231a05_armor, MyModelsEnum.p231a05_armor_LOD01, MyModelsEnum.p231a05_armor_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\02_Shells\\\\03_Armor\\\\01\\\\p231a06_armor\", MyModelsEnum.p231a06_armor, MyModelsEnum.p231a06_armor_LOD01, MyModelsEnum.p231a06_armor_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\02_Shells\\\\03_Armor\\\\01\\\\p231a07_armor\", MyModelsEnum.p231a07_armor, MyModelsEnum.p231a07_armor_LOD01, MyModelsEnum.p231a07_armor_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\02_Shells\\\\03_Armor\\\\01\\\\p231a08_armor\", MyModelsEnum.p231a08_armor, MyModelsEnum.p231a08_armor_LOD01, MyModelsEnum.p231a08_armor_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\02_Shells\\\\03_Armor\\\\01\\\\p231a09_armor\", MyModelsEnum.p231a09_armor, MyModelsEnum.p231a09_armor_LOD01, MyModelsEnum.p231a09_armor_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\02_Shells\\\\03_Armor\\\\01\\\\p231a10_armor\", MyModelsEnum.p231a10_armor, MyModelsEnum.p231a10_armor_LOD01, MyModelsEnum.p231a10_armor_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\02_Shells\\\\03_Armor\\\\01\\\\p231a11_armor\", MyModelsEnum.p231a11_armor, MyModelsEnum.p231a11_armor_LOD01, MyModelsEnum.p231a11_armor_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\02_Shells\\\\03_Armor\\\\01\\\\p231a12_armor\", MyModelsEnum.p231a12_armor, MyModelsEnum.p231a12_armor_LOD01, MyModelsEnum.p231a12_armor_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\02_Shells\\\\03_Armor\\\\01\\\\p231a13_armor\", MyModelsEnum.p231a13_armor, MyModelsEnum.p231a13_armor_LOD01, MyModelsEnum.p231a13_armor_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\02_Shells\\\\03_Armor\\\\01\\\\p231a14_armor\", MyModelsEnum.p231a14_armor, MyModelsEnum.p231a14_armor_LOD01, MyModelsEnum.p231a14_armor_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\02_Shells\\\\03_Armor\\\\01\\\\p231a15_armor\", MyModelsEnum.p231a15_armor, MyModelsEnum.p231a15_armor_LOD01, MyModelsEnum.p231a15_armor_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\02_Shells\\\\03_Armor\\\\01\\\\p231a16_armor\", MyModelsEnum.p231a16_armor, MyModelsEnum.p231a16_armor_LOD01, MyModelsEnum.p231a16_armor_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\02_Shells\\\\03_Armor\\\\01\\\\p231a17_armor\", MyModelsEnum.p231a17_armor, MyModelsEnum.p231a17_armor_LOD01, MyModelsEnum.p231a17_armor_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\02_Shells\\\\03_Armor\\\\01\\\\p231a18_armor\", MyModelsEnum.p231a18_armor, MyModelsEnum.p231a18_armor_LOD01, MyModelsEnum.p231a18_armor_COL);\n            \n            AddEntityModels(\"Models2\\\\Prefabs\\\\02_Shells\\\\02_Chambers\\\\01\\\\p221a01_chamber_v1\", MyModelsEnum.p221a01_chamber_v1, MyModelsEnum.p221a01_chamber_v1_LOD1, MyModelsEnum.p221a01_chamber_v1_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\02_Shells\\\\02_Chambers\\\\02\\\\p221b01_chamber_v1\", MyModelsEnum.p221b01_chamber_v1, MyModelsEnum.p221b01_chamber_v1_LOD1, MyModelsEnum.p221b01_chamber_v1_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\02_Shells\\\\02_Chambers\\\\03\\\\p221c01_chamber_v1\", MyModelsEnum.p221c01_chamber_v1, MyModelsEnum.p221c01_chamber_v1_LOD1, MyModelsEnum.p221c01_chamber_v1_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\02_Shells\\\\02_Chambers\\\\04\\\\p221d01_chamber_v1\", MyModelsEnum.p221d01_chamber_v1, MyModelsEnum.p221d01_chamber_v1_LOD1, MyModelsEnum.p221d01_chamber_v1_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\02_Shells\\\\02_Chambers\\\\05\\\\p221e01_chamber_v1\", MyModelsEnum.p221e01_chamber_v1, MyModelsEnum.p221e01_chamber_v1_LOD1, MyModelsEnum.p221e01_chamber_v1_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\02_Shells\\\\02_Chambers\\\\06\\\\p221f01_chamber_v1\", MyModelsEnum.p221f01_chamber_v1, MyModelsEnum.p221f01_chamber_v1_LOD1, MyModelsEnum.p221f01_chamber_v1_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\02_Shells\\\\02_Chambers\\\\07\\\\p221g01_chamber_v1\", MyModelsEnum.p221g01_chamber_v1, MyModelsEnum.p221g01_chamber_v1_LOD1, MyModelsEnum.p221g01_chamber_v1_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\02_Shells\\\\02_Chambers\\\\08\\\\p221h01_chamber_v1\", MyModelsEnum.p221h01_chamber_v1, MyModelsEnum.p221h01_chamber_v1_LOD1, MyModelsEnum.p221h01_chamber_v1_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\02_Shells\\\\02_Chambers\\\\09\\\\p221j01_chamber_v1\", MyModelsEnum.p221j01_chamber_v1, MyModelsEnum.p221j01_chamber_v1_LOD1, MyModelsEnum.p221j01_chamber_v1_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\02_Shells\\\\02_Chambers\\\\10\\\\p221k01_chamber_v1\", MyModelsEnum.p221k01_chamber_v1, MyModelsEnum.p221k01_chamber_v1_LOD1, null);\n\n            AddEntityModels(\"Models2\\\\Prefabs\\\\02_Shells\\\\01_CagePanels\\\\08\\\\p211h01_panel_535mx130m\", MyModelsEnum.p211h01_panel_535mx130m, MyModelsEnum.p211h01_panel_535mx130m_LOD1, MyModelsEnum.p211h01_panel_535mx130m_COL);\n\n            AddEntityModels(\"Models2\\\\Prefabs\\\\02_Shells\\\\01_CagePanels\\\\07\\\\p211g01_panel_120mx60m\", MyModelsEnum.p211g01_panel_120mx60m, MyModelsEnum.p211g01_panel_120mx60m_LOD1, MyModelsEnum.p211g01_panel_120mx60m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\02_Shells\\\\01_CagePanels\\\\07\\\\p211g02_panel_60mx60m\", MyModelsEnum.p211g02_panel_60mx60m, MyModelsEnum.p211g02_panel_60mx60m_LOD1, MyModelsEnum.p211g02_panel_60mx60m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\02_Shells\\\\01_CagePanels\\\\07\\\\p211g03_panel_60mx30m\", MyModelsEnum.p211g03_panel_60mx30m, MyModelsEnum.p211g03_panel_60mx30m_LOD1, MyModelsEnum.p211g03_panel_60mx30m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\02_Shells\\\\01_CagePanels\\\\06\\\\p211f01_panel_120mx60m\", MyModelsEnum.p211f01_panel_120mx60m, MyModelsEnum.p211f01_panel_120mx60m_LOD1, MyModelsEnum.p211f01_panel_120mx60m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\02_Shells\\\\01_CagePanels\\\\06\\\\p211f02_panel_60mx60m\", MyModelsEnum.p211f02_panel_60mx60m, MyModelsEnum.p211f02_panel_60mx60m_LOD1, MyModelsEnum.p211f02_panel_60mx60m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\02_Shells\\\\01_CagePanels\\\\06\\\\p211f03_panel_60mx30m\", MyModelsEnum.p211f03_panel_60mx30m, null, MyModelsEnum.p211f03_panel_60mx30m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\02_Shells\\\\01_CagePanels\\\\05\\\\p211e01_panel_120mx60m\", MyModelsEnum.p211e01_panel_120mx60m, MyModelsEnum.p211e01_panel_120mx60m_LOD1, MyModelsEnum.p211e01_panel_120mx60m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\02_Shells\\\\01_CagePanels\\\\05\\\\p211e02_panel_60mx60m\", MyModelsEnum.p211e02_panel_60mx60m, MyModelsEnum.p211e02_panel_60mx60m_LOD1, MyModelsEnum.p211e02_panel_60mx60m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\02_Shells\\\\01_CagePanels\\\\05\\\\p211e03_panel_60mx30m\", MyModelsEnum.p211e03_panel_60mx30m, MyModelsEnum.p211e03_panel_60mx30m_LOD1, MyModelsEnum.p211e03_panel_60mx30m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\02_Shells\\\\01_CagePanels\\\\04\\\\p211d01_panel_120mx60m\", MyModelsEnum.p211d01_panel_120mx60m, MyModelsEnum.p211d01_panel_120mx60m_LOD1, MyModelsEnum.p211d01_panel_120mx60m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\02_Shells\\\\01_CagePanels\\\\04\\\\p211d02_panel_60mx60m\", MyModelsEnum.p211d02_panel_60mx60m, MyModelsEnum.p211d02_panel_60mx60m_LOD1, MyModelsEnum.p211d02_panel_60mx60m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\02_Shells\\\\01_CagePanels\\\\04\\\\p211d03_panel_60mx30m\", MyModelsEnum.p211d03_panel_60mx30m, MyModelsEnum.p211d03_panel_60mx30m_LOD1, MyModelsEnum.p211d03_panel_60mx30m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\02_Shells\\\\01_CagePanels\\\\03\\\\p211c01_panel_120mx60m\", MyModelsEnum.p211c01_panel_120mx60m, MyModelsEnum.p211c01_panel_120mx60m_LOD1, null);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\02_Shells\\\\01_CagePanels\\\\03\\\\p211c02_panel_60mx60m\", MyModelsEnum.p211c02_panel_60mx60m, MyModelsEnum.p211c02_panel_60mx60m_LOD1, MyModelsEnum.p211c02_panel_60mx60m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\02_Shells\\\\01_CagePanels\\\\03\\\\p211c03_panel_60mx30m\", MyModelsEnum.p211c03_panel_60mx30m, MyModelsEnum.p211c03_panel_60mx30m_LOD1, null);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\02_Shells\\\\01_CagePanels\\\\02\\\\p211b01_panel_120mx60m\", MyModelsEnum.p211b01_panel_120mx60m, MyModelsEnum.p211b01_panel_120mx60m_LOD1, MyModelsEnum.p211b01_panel_120mx60m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\02_Shells\\\\01_CagePanels\\\\02\\\\p211b02_panel_60mx60m\", MyModelsEnum.p211b02_panel_60mx60m, MyModelsEnum.p211b02_panel_60mx60m_LOD1, MyModelsEnum.p211b02_panel_60mx60m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\02_Shells\\\\01_CagePanels\\\\02\\\\p211b03_panel_60mx30m\", MyModelsEnum.p211b03_panel_60mx30m, MyModelsEnum.p211b03_panel_60mx30m_LOD1, MyModelsEnum.p211b03_panel_60mx30m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\02_Shells\\\\01_CagePanels\\\\01\\\\p211a01_panel_120mx60m\", MyModelsEnum.p211a01_panel_120mx60m, MyModelsEnum.p211a01_panel_120mx60m_LOD1, MyModelsEnum.p211a01_panel_120mx60m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\02_Shells\\\\01_CagePanels\\\\01\\\\p211a02_panel_60mx60m\", MyModelsEnum.p211a02_panel_60mx60m, MyModelsEnum.p211a02_panel_60mx60m_LOD1, MyModelsEnum.p211a02_panel_60mx60m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\02_Shells\\\\01_CagePanels\\\\01\\\\p211a03_panel_60mx30m\", MyModelsEnum.p211a03_panel_60mx30m, MyModelsEnum.p211a03_panel_60mx30m_LOD1, MyModelsEnum.p211a03_panel_60mx30m_COL);\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\01_Beams\\\\04_Frame\\\\02_Cage\\\\02\\\\p142b01_cage_empty\", MyMeshDrawTechnique.MESH, MyModelsEnum.p142b01_cage_empty));\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\01_Beams\\\\04_Frame\\\\02_Cage\\\\02\\\\p142b02_cage_halfcut\", MyMeshDrawTechnique.MESH, MyModelsEnum.p142b02_cage_halfcut));\n            AddEntityModels(\"Models2\\\\Prefabs\\\\01_Beams\\\\04_Frame\\\\02_Cage\\\\02\\\\p142b03_cage_with_corners\", MyModelsEnum.p142b03_cage_with_corners, MyModelsEnum.p142b03_cage_with_corners_LOD1, MyModelsEnum.p142b03_cage_with_corners_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\01_Beams\\\\04_Frame\\\\02_Cage\\\\02\\\\p142b11_cage_pillar\", MyModelsEnum.p142b11_cage_pillar, null, MyModelsEnum.p142b11_cage_pillar_COL);\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\01_Beams\\\\04_Frame\\\\02_Cage\\\\02\\\\p142b12_cage_edge\", MyMeshDrawTechnique.MESH, MyModelsEnum.p142b12_cage_edge));\n            AddEntityModels(\"Models2\\\\Prefabs\\\\01_Beams\\\\04_Frame\\\\02_Cage\\\\01\\\\p142a01_cage_empty\", MyModelsEnum.p142a01_cage_empty, null, MyModelsEnum.p142a01_cage_empty_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\01_Beams\\\\04_Frame\\\\02_Cage\\\\01\\\\p142a02_cage_halfcut\", MyModelsEnum.p142a02_cage_halfcut, null, MyModelsEnum.p142a02_cage_halfcut_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\01_Beams\\\\04_Frame\\\\02_Cage\\\\01\\\\p142a03_cage_with_corners\", MyModelsEnum.p142a03_cage_with_corners, null, MyModelsEnum.p142a03_cage_with_corners_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\01_Beams\\\\04_Frame\\\\02_Cage\\\\01\\\\p142a11_cage_pillar\", MyModelsEnum.p142a11_cage_pillar, MyModelsEnum.p142a11_cage_pillar_LOD1, MyModelsEnum.p142a11_cage_pillar_COL);\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\01_Beams\\\\04_Frame\\\\02_Cage\\\\01\\\\p142a12_cage_edge\", MyMeshDrawTechnique.MESH, MyModelsEnum.p142a12_cage_edge));\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\01_Beams\\\\04_Frame\\\\01_Frame\\\\02\\\\p141b01_thick_frame_straight_10m\", MyMeshDrawTechnique.MESH, MyModelsEnum.p141b01_thick_frame_straight_10m));\n            AddEntityModels(\"Models2\\\\Prefabs\\\\01_Beams\\\\04_Frame\\\\01_Frame\\\\02\\\\p141b02_thick_frame_straight_60m\", MyModelsEnum.p141b02_thick_frame_straight_60m, null, MyModelsEnum.p141b02_thick_frame_straight_60m_COL);\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\01_Beams\\\\04_Frame\\\\01_Frame\\\\02\\\\p141b11_thick_frame_edge\", MyMeshDrawTechnique.MESH, MyModelsEnum.p141b11_thick_frame_edge));\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\01_Beams\\\\04_Frame\\\\01_Frame\\\\02\\\\p141b12_thick_frame_corner\", MyMeshDrawTechnique.MESH, MyModelsEnum.p141b12_thick_frame_corner));\n            AddEntityModels(\"Models2\\\\Prefabs\\\\01_Beams\\\\04_Frame\\\\01_Frame\\\\02\\\\p141b31_thick_frame_joint\", MyModelsEnum.p141b31_thick_frame_joint, null, MyModelsEnum.p141b31_thick_frame_joint_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\01_Beams\\\\04_Frame\\\\01_Frame\\\\01\\\\p141a01_thick_frame_straight_10m\", MyModelsEnum.p141a01_thick_frame_straight_10m, null, MyModelsEnum.p141a01_thick_frame_straight_10m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\01_Beams\\\\04_Frame\\\\01_Frame\\\\01\\\\p141a02_thick_frame_straight_60m\", MyModelsEnum.p141a02_thick_frame_straight_60m, null, MyModelsEnum.p141a02_thick_frame_straight_60m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\01_Beams\\\\04_Frame\\\\01_Frame\\\\01\\\\p141a11_thick_frame_edge\", MyModelsEnum.p141a11_thick_frame_edge, null, MyModelsEnum.p141a11_thick_frame_edge_COL);\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\01_Beams\\\\04_Frame\\\\01_Frame\\\\01\\\\p141a12_thick_frame_corner\", MyMeshDrawTechnique.MESH, MyModelsEnum.p141a12_thick_frame_corner));\n            AddEntityModels(\"Models2\\\\Prefabs\\\\01_Beams\\\\04_Frame\\\\01_Frame\\\\01\\\\p141a31_thick_frame_joint\", MyModelsEnum.p141a31_thick_frame_joint, null, MyModelsEnum.p141a31_thick_frame_joint_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\01_Beams\\\\03_Small\\\\10\\\\p130j01_j_straight_30m\", MyModelsEnum.p130j01_j_straight_30m, null, MyModelsEnum.p130j01_j_straight_30m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\01_Beams\\\\03_Small\\\\10\\\\p130j02_j_straight_10m\", MyModelsEnum.p130j02_j_straight_10m, null, MyModelsEnum.p130j02_j_straight_10m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\01_Beams\\\\03_Small\\\\09\\\\p130i01_i_straight_30m\", MyModelsEnum.p130i01_i_straight_30m, null, null);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\01_Beams\\\\03_Small\\\\09\\\\p130i02_i_straight_10m\", MyModelsEnum.p130i02_i_straight_10m, null, MyModelsEnum.p130i02_i_straight_10m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\01_Beams\\\\03_Small\\\\08\\\\p130h01_h_straight_30m\", MyModelsEnum.p130h01_h_straight_30m, null, MyModelsEnum.p130h01_h_straight_30m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\01_Beams\\\\03_Small\\\\08\\\\p130h02_h_straight_10m\", MyModelsEnum.p130h02_h_straight_10m, null, MyModelsEnum.p130h02_h_straight_10m_COL);\n            //AddModel(new MyModel(\"Models2\\\\Prefabs\\\\01_Beams\\\\03_Small\\\\07\\\\p130g01_g_straight_30m\", MyMeshDrawTechnique.MESH, MyModelsEnum.p130g01_g_straight_30m));\n            //AddModel(new MyModel(\"Models2\\\\Prefabs\\\\01_Beams\\\\03_Small\\\\07\\\\p130g02_g_straight_10m\", MyMeshDrawTechnique.MESH, MyModelsEnum.p130g02_g_straight_10m));\n            //AddModel(new MyModel(\"Models2\\\\Prefabs\\\\01_Beams\\\\03_Small\\\\06\\\\p130f01_f_straight_30m\", MyMeshDrawTechnique.MESH, MyModelsEnum.p130f01_f_straight_30m));\n            //AddModel(new MyModel(\"Models2\\\\Prefabs\\\\01_Beams\\\\03_Small\\\\06\\\\p130f02_f_straight_10m\", MyMeshDrawTechnique.MESH, MyModelsEnum.p130f02_f_straight_10m));\n            //AddModel(new MyModel(\"Models2\\\\Prefabs\\\\01_Beams\\\\03_Small\\\\05\\\\p130e01_e_straight_30m\", MyMeshDrawTechnique.MESH, MyModelsEnum.p130e01_e_straight_30m));\n            //AddModel(new MyModel(\"Models2\\\\Prefabs\\\\01_Beams\\\\03_Small\\\\05\\\\p130e02_e_straight_10m\", MyMeshDrawTechnique.MESH, MyModelsEnum.p130e02_e_straight_10m));\n            //AddModel(new MyModel(\"Models2\\\\Prefabs\\\\01_Beams\\\\03_Small\\\\04\\\\p130d01_d_straight_30m\", MyMeshDrawTechnique.MESH, MyModelsEnum.p130d01_d_straight_30m));\n            //AddModel(new MyModel(\"Models2\\\\Prefabs\\\\01_Beams\\\\03_Small\\\\04\\\\p130d02_d_straight_10m\", MyMeshDrawTechnique.MESH, MyModelsEnum.p130d02_d_straight_10m));\n            //AddModel(new MyModel(\"Models2\\\\Prefabs\\\\01_Beams\\\\03_Small\\\\03\\\\p130c01_c_straight_30m\", MyMeshDrawTechnique.MESH, MyModelsEnum.p130c01_c_straight_30m));\n            //AddModel(new MyModel(\"Models2\\\\Prefabs\\\\01_Beams\\\\03_Small\\\\03\\\\p130c02_c_straight_10m\", MyMeshDrawTechnique.MESH, MyModelsEnum.p130c02_c_straight_10m));\n            //AddModel(new MyModel(\"Models2\\\\Prefabs\\\\01_Beams\\\\03_Small\\\\02\\\\p130b01_b_straight_30m\", MyMeshDrawTechnique.MESH, MyModelsEnum.p130b01_b_straight_30m));\n            //AddModel(new MyModel(\"Models2\\\\Prefabs\\\\01_Beams\\\\03_Small\\\\02\\\\p130b02_b_straight_10m\", MyMeshDrawTechnique.MESH, MyModelsEnum.p130b02_b_straight_10m));\n            //AddModel(new MyModel(\"Models2\\\\Prefabs\\\\01_Beams\\\\03_Small\\\\01\\\\p130a01_a_straight_30m\", MyMeshDrawTechnique.MESH, MyModelsEnum.p130a01_a_straight_30m));\n            //AddModel(new MyModel(\"Models2\\\\Prefabs\\\\01_Beams\\\\03_Small\\\\01\\\\p130a02_a_straight_10m\", MyMeshDrawTechnique.MESH, MyModelsEnum.p130a02_a_straight_10m));\n            AddEntityModels(\"Models2\\\\Prefabs\\\\01_Beams\\\\02_Medium\\\\04\\\\p120d01_d_straight_10m\", MyModelsEnum.p120d01_d_straight_10m, null, MyModelsEnum.p120d01_d_straight_10m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\01_Beams\\\\02_Medium\\\\04\\\\p120d02_d_straight_40m\", MyModelsEnum.p120d02_d_straight_40m, null, MyModelsEnum.p120d02_d_straight_40m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\01_Beams\\\\02_Medium\\\\03\\\\p120c01_c_straight_10m\", MyModelsEnum.p120c01_c_straight_10m, null, MyModelsEnum.p120c01_c_straight_10m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\01_Beams\\\\02_Medium\\\\03\\\\p120c02_c_straight_40m\", MyModelsEnum.p120c02_c_straight_40m, null, MyModelsEnum.p120c02_c_straight_40m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\01_Beams\\\\02_Medium\\\\02\\\\p120b01_b_straight_10m\", MyModelsEnum.p120b01_b_straight_10m, null, MyModelsEnum.p120b01_b_straight_10m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\01_Beams\\\\02_Medium\\\\02\\\\p120b02_b_straight_40m\", MyModelsEnum.p120b02_b_straight_40m, null, MyModelsEnum.p120b02_b_straight_40m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\01_Beams\\\\02_Medium\\\\01\\\\p120a01_strong_lattice_straight_10m\", MyModelsEnum.p120a01_strong_lattice_straight_10m, null, MyModelsEnum.p120a01_strong_lattice_straight_10m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\01_Beams\\\\02_Medium\\\\01\\\\p120a02_strong_lattice_straight_60m\", MyModelsEnum.p120a02_strong_lattice_straight_60m, MyModelsEnum.p120a02_strong_lattice_straight_60m_LOD1, MyModelsEnum.p120a02_strong_lattice_straight_60m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\01_Beams\\\\02_Medium\\\\01\\\\p120a03_strong_lattice_straight_120m\", MyModelsEnum.p120a03_strong_lattice_straight_120m, MyModelsEnum.p120a03_strong_lattice_straight_120m_LOD1, MyModelsEnum.p120a03_strong_lattice_straight_120m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\01_Beams\\\\02_Medium\\\\01\\\\p120a21_strong_lattice_junction_t_strong\", MyModelsEnum.p120a21_strong_lattice_junction_t_strong, null, MyModelsEnum.p120a21_strong_lattice_junction_t_strong_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\01_Beams\\\\02_Medium\\\\01\\\\p120a22_strong_lattice_junction_t_weak\", MyModelsEnum.p120a22_strong_lattice_junction_t_weak, MyModelsEnum.p120a22_strong_lattice_junction_t_weak_LOD1, MyModelsEnum.p120a22_strong_lattice_junction_t_weak_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\01_Beams\\\\02_Medium\\\\01\\\\p120a23_strong_lattice_junction_t_rotated\", MyModelsEnum.p120a23_strong_lattice_junction_t_rotated, null, MyModelsEnum.p120a23_strong_lattice_junction_t_rotated_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\01_Beams\\\\02_Medium\\\\01\\\\p120a51_strong_to_weak_lattice_2to1\", MyModelsEnum.p120a51_strong_to_weak_lattice_2to1, null, MyModelsEnum.p120a51_strong_to_weak_lattice_2to1_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\01_Beams\\\\02_Medium\\\\01\\\\p120a52_strong_to_weak_lattice_1to2\", MyModelsEnum.p120a52_strong_to_weak_lattice_1to2, null, null);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\01_Beams\\\\02_Medium\\\\01\\\\p120a61_weak_lattice_junction_t_rotated\", MyModelsEnum.p120a61_weak_lattice_junction_t_rotated, null, MyModelsEnum.p120a61_weak_lattice_junction_t_rotated_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\01_Beams\\\\01_Large\\\\02\\\\p110b01_lattice_beam_straight_10m\", MyModelsEnum.p110b01_lattice_beam_straight_10m, MyModelsEnum.p110b01_lattice_beam_straight_10m_LOD1, MyModelsEnum.p110b01_lattice_beam_straight_10m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\01_Beams\\\\01_Large\\\\02\\\\p110b02_lattice_beam_straight_30m\", MyModelsEnum.p110b02_lattice_beam_straight_30m, null, MyModelsEnum.p110b02_lattice_beam_straight_30m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\01_Beams\\\\01_Large\\\\02\\\\p110b03_lattice_beam_straight_60m\", MyModelsEnum.p110b03_lattice_beam_straight_60m, MyModelsEnum.p110b03_lattice_beam_straight_60m_LOD1, MyModelsEnum.p110b03_lattice_beam_straight_60m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\01_Beams\\\\01_Large\\\\02\\\\p110b04_lattice_beam_straight_60m_with_panels\", MyModelsEnum.p110b04_lattice_beam_straight_60m_with_panels, MyModelsEnum.p110b04_lattice_beam_straight_60m_with_panels_LOD1, MyModelsEnum.p110b04_lattice_beam_straight_60m_with_panels_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\01_Beams\\\\01_Large\\\\02\\\\p110b21_lattice_beam_junction_t_strong\", MyModelsEnum.p110b21_lattice_beam_junction_t_strong, MyModelsEnum.p110b21_lattice_beam_junction_t_strong_LOD1, MyModelsEnum.p110b21_lattice_beam_junction_t_strong_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\01_Beams\\\\01_Large\\\\02\\\\p110b22_lattice_beam_junction_t_weak\", MyModelsEnum.p110b22_lattice_beam_junction_t_weak, MyModelsEnum.p110b22_lattice_beam_junction_t_weak_LOD1, MyModelsEnum.p110b22_lattice_beam_junction_t_weak_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\01_Beams\\\\01_Large\\\\02\\\\p110b31_lattice_beam_joint_horizontal\", MyModelsEnum.p110b31_lattice_beam_joint_horizontal, null, MyModelsEnum.p110b31_lattice_beam_joint_horizontal_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\01_Beams\\\\01_Large\\\\02\\\\p110b32_lattice_beam_joint_vertical\", MyModelsEnum.p110b32_lattice_beam_joint_vertical, null, MyModelsEnum.p110b32_lattice_beam_joint_vertical_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\01_Beams\\\\01_Large\\\\01\\\\p110a01_solid_beam_straight_10m\", MyModelsEnum.p110a01_solid_beam_straight_10m, null, MyModelsEnum.p110a01_solid_beam_straight_10m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\01_Beams\\\\01_Large\\\\01\\\\p110a02_solid_beam_straight_20m\", MyModelsEnum.p110a02_solid_beam_straight_20m, null, MyModelsEnum.p110a02_solid_beam_straight_20m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\01_Beams\\\\01_Large\\\\01\\\\p110a03_solid_beam_straight_40m_with_hole\", MyModelsEnum.p110a03_solid_beam_straight_40m_with_hole, null, MyModelsEnum.p110a03_solid_beam_straight_40m_with_hole_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\01_Beams\\\\01_Large\\\\01\\\\p110a04_solid_beam_straight_40m_lattice\", MyModelsEnum.p110a04_solid_beam_straight_40m_lattice, MyModelsEnum.p110a04_solid_beam_straight_40m_lattice_LOD1, MyModelsEnum.p110a04_solid_beam_straight_40m_lattice_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\01_Beams\\\\01_Large\\\\01\\\\p110a05_solid_beam_straight_80m\", MyModelsEnum.p110a05_solid_beam_straight_80m, MyModelsEnum.p110a05_solid_beam_straight_80m_LOD1, MyModelsEnum.p110a05_solid_beam_straight_80m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\01_Beams\\\\01_Large\\\\01\\\\p110a11_solid_beam_junction_x_strong\", MyModelsEnum.p110a11_solid_beam_junction_x_strong, MyModelsEnum.p110a11_solid_beam_junction_x_strong_LOD1, MyModelsEnum.p110a11_solid_beam_junction_x_strong_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\01_Beams\\\\01_Large\\\\01\\\\p110a12_solid_beam_junction_x_weak\", MyModelsEnum.p110a12_solid_beam_junction_x_weak, MyModelsEnum.p110a12_solid_beam_junction_x_weak_LOD1, MyModelsEnum.p110a12_solid_beam_junction_x_weak_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\01_Beams\\\\01_Large\\\\01\\\\p110a13_solid_beam_junction_x_rotated\", MyModelsEnum.p110a13_solid_beam_junction_x_rotated, MyModelsEnum.p110a13_solid_beam_junction_x_rotated_LOD1, MyModelsEnum.p110a13_solid_beam_junction_x_rotated_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\01_Beams\\\\01_Large\\\\01\\\\p110a21_solid_beam_junction_t_strong\", MyModelsEnum.p110a21_solid_beam_junction_t_strong, null, MyModelsEnum.p110a21_solid_beam_junction_t_strong_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\01_Beams\\\\01_Large\\\\01\\\\p110a22_solid_beam_junction_t_weak\", MyModelsEnum.p110a22_solid_beam_junction_t_weak, MyModelsEnum.p110a22_solid_beam_junction_t_weak_LOD1, MyModelsEnum.p110a22_solid_beam_junction_t_weak_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\01_Beams\\\\01_Large\\\\01\\\\p110a23_solid_beam_junction_t_rotated\", MyModelsEnum.p110a23_solid_beam_junction_t_rotated, null, MyModelsEnum.p110a23_solid_beam_junction_t_rotated_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\01_Beams\\\\01_Large\\\\01\\\\p110a31_solid_beam_joint_horizontal\", MyModelsEnum.p110a31_solid_beam_joint_horizontal, null, MyModelsEnum.p110a31_solid_beam_joint_horizontal_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\01_Beams\\\\01_Large\\\\01\\\\p110a32_solid_beam_joint_vertical\", MyModelsEnum.p110a32_solid_beam_joint_vertical, null, MyModelsEnum.p110a32_solid_beam_joint_vertical_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\01_Beams\\\\01_Large\\\\01\\\\p110a33_solid_beam_joint_longitudinal\", MyModelsEnum.p110a33_solid_beam_joint_longitudinal, null, MyModelsEnum.p110a33_solid_beam_joint_longitudinal_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\01_Beams\\\\01_Large\\\\01\\\\p110a41_solid_beam_superjoint\", MyModelsEnum.p110a41_solid_beam_superjoint, null, MyModelsEnum.p110a41_solid_beam_superjoint_COL);\n\n            //////////////////////////////////////////////////////////////////////////\n            AddModel(new MyModel(\"Models2\\\\Weapons\\\\WeaponsSmall\\\\WeaponSmall_Autocannon_barrel\", MyMeshDrawTechnique.MESH, MyModelsEnum.Autocannon_Barrel, MyFakes.UNLOAD_OPTIMIZATION_KEEP_COMMON_MODELS));\n            AddModel(new MyModel(\"Models2\\\\Weapons\\\\WeaponsSmall\\\\WeaponSmall_Autocannon_base\", MyMeshDrawTechnique.MESH, MyModelsEnum.Autocannon_Base, MyFakes.UNLOAD_OPTIMIZATION_KEEP_COMMON_MODELS));\n            AddModel(new MyModel(\"Models2\\\\Weapons\\\\WeaponsSmall\\\\WeaponSmall_Rifle\", MyMeshDrawTechnique.MESH, MyModelsEnum.Rifle, MyFakes.UNLOAD_OPTIMIZATION_KEEP_COMMON_MODELS));\n            AddModel(new MyModel(\"Models2\\\\Weapons\\\\WeaponsSmall\\\\WeaponSmall_Shotgun\", MyMeshDrawTechnique.MESH, MyModelsEnum.Shotgun, MyFakes.UNLOAD_OPTIMIZATION_KEEP_COMMON_MODELS));\n            AddModel(new MyModel(\"Models2\\\\Weapons\\\\WeaponsSmall\\\\WeaponSmall_Sniper\", MyMeshDrawTechnique.MESH, MyModelsEnum.Sniper, MyFakes.UNLOAD_OPTIMIZATION_KEEP_COMMON_MODELS));\n            AddModel(new MyModel(\"Models2\\\\Weapons\\\\WeaponsSmall\\\\WeaponSmall_UniversalLauncher\", MyMeshDrawTechnique.MESH, MyModelsEnum.UniversalLauncher, MyFakes.UNLOAD_OPTIMIZATION_KEEP_COMMON_MODELS));\n            AddModel(new MyModel(\"Models2\\\\Weapons\\\\WeaponsSmall\\\\WeaponSmall_MissileLauncher\", MyMeshDrawTechnique.MESH, MyModelsEnum.MissileLauncher, MyFakes.UNLOAD_OPTIMIZATION_KEEP_COMMON_MODELS));\n            AddModel(new MyModel(\"Models2\\\\Weapons\\\\WeaponsSmall\\\\WeaponSmall_MachineGun\", MyMeshDrawTechnique.MESH, MyModelsEnum.MachineGun, MyFakes.UNLOAD_OPTIMIZATION_KEEP_COMMON_MODELS));\n\n            AddModel(new MyModel(\"Models2\\\\Weapons\\\\WeaponsLarge\\\\WeaponLarge_MachineGun_barrel\", MyMeshDrawTechnique.MESH, MyModelsEnum.LargeShipMachineGunBarrel, MyFakes.UNLOAD_OPTIMIZATION_KEEP_COMMON_MODELS));\n            AddEntityModels(\"Models2\\\\Weapons\\\\WeaponsLarge\\\\WeaponLarge_MachineGun_base\", MyModelsEnum.LargeShipMachineGunBase, null, MyModelsEnum.LargeShipMachineGunBase_COL, true);\n            AddModel(new MyModel(\"Models2\\\\Weapons\\\\WeaponsLarge\\\\WeaponLarge_MissileLauncher_9_barrel\", MyMeshDrawTechnique.MESH, MyModelsEnum.LargeShipMissileLauncher9Barrel, MyFakes.UNLOAD_OPTIMIZATION_KEEP_COMMON_MODELS));\n            AddEntityModels(\"Models2\\\\Weapons\\\\WeaponsLarge\\\\WeaponLarge_MissileLauncher_9_base\", MyModelsEnum.LargeShipMissileLauncher9Base, null, MyModelsEnum.LargeShipMissileLauncher9Base_COL, true);\n            AddModel(new MyModel(\"Models2\\\\Weapons\\\\WeaponsLarge\\\\WeaponLarge_MissileLauncher_4_barrel\", MyMeshDrawTechnique.MESH, MyModelsEnum.LargeShipMissileLauncher4Barrel, MyFakes.UNLOAD_OPTIMIZATION_KEEP_COMMON_MODELS));\n            AddEntityModels(\"Models2\\\\Weapons\\\\WeaponsLarge\\\\WeaponLarge_MissileLauncher_4_base\", MyModelsEnum.LargeShipMissileLauncher4Base, null, MyModelsEnum.LargeShipMissileLauncher4Base_COL, true);\n            AddModel(new MyModel(\"Models2\\\\Weapons\\\\WeaponsLarge\\\\WeaponLarge_MissileLauncher_6_barrel\", MyMeshDrawTechnique.MESH, MyModelsEnum.LargeShipMissileLauncher6Barrel, MyFakes.UNLOAD_OPTIMIZATION_KEEP_COMMON_MODELS));\n            AddEntityModels(\"Models2\\\\Weapons\\\\WeaponsLarge\\\\WeaponLarge_MissileLauncher_6_base\", MyModelsEnum.LargeShipMissileLauncher6Base, null, MyModelsEnum.LargeShipMissileLauncher6Base_COL, true);\n            AddModel(new MyModel(\"Models2\\\\Weapons\\\\WeaponsLarge\\\\WeaponLarge_Ciws_barrel\", MyMeshDrawTechnique.MESH, MyModelsEnum.LargeShipCiwsBarrel, MyFakes.UNLOAD_OPTIMIZATION_KEEP_COMMON_MODELS));\n            AddEntityModels(\"Models2\\\\Weapons\\\\WeaponsLarge\\\\WeaponLarge_Ciws_base\", MyModelsEnum.LargeShipCiwsBase, null, MyModelsEnum.LargeShipCiwsBase_COL, true);\n            AddModel(new MyModel(\"Models2\\\\Weapons\\\\WeaponsLarge\\\\WeaponLarge_Autocannon_barrel\", MyMeshDrawTechnique.MESH, MyModelsEnum.LargeShipAutocannonBarrel, MyFakes.UNLOAD_OPTIMIZATION_KEEP_COMMON_MODELS));\n            AddEntityModels(\"Models2\\\\Weapons\\\\WeaponsLarge\\\\WeaponLarge_Autocannon_base\", MyModelsEnum.LargeShipAutocannonBase, null, MyModelsEnum.LargeShipAutocannonBase_COL, true);\n\n            AddModel(new MyModel(\"Models2\\\\Weapons\\\\Projectiles\\\\Projectile_AsteroidKiller\", MyMeshDrawTechnique.MESH, MyModelsEnum.AsteroidKiller, MyFakes.UNLOAD_OPTIMIZATION_KEEP_COMMON_MODELS));\n            AddModel(new MyModel(\"Models2\\\\Weapons\\\\Projectiles\\\\Projectile_DecoyFlare\", MyMeshDrawTechnique.MESH, MyModelsEnum.DecoyFlare, MyFakes.UNLOAD_OPTIMIZATION_KEEP_COMMON_MODELS));\n            AddModel(new MyModel(\"Models2\\\\Weapons\\\\Projectiles\\\\Projectile_DirectionalExplosive\", MyMeshDrawTechnique.MESH, MyModelsEnum.DirectionalExplosive, MyFakes.UNLOAD_OPTIMIZATION_KEEP_COMMON_MODELS));\n            AddModel(new MyModel(\"Models2\\\\Weapons\\\\Projectiles\\\\Projectile_FlashBomb\", MyMeshDrawTechnique.MESH, MyModelsEnum.FlashBomb, MyFakes.UNLOAD_OPTIMIZATION_KEEP_COMMON_MODELS));\n            AddModel(new MyModel(\"Models2\\\\Weapons\\\\Projectiles\\\\Projectile_GravityBomb\", MyMeshDrawTechnique.MESH, MyModelsEnum.GravityBomb, MyFakes.UNLOAD_OPTIMIZATION_KEEP_COMMON_MODELS));\n            AddModel(new MyModel(\"Models2\\\\Weapons\\\\Projectiles\\\\Projectile_Hologram\", MyMeshDrawTechnique.MESH, MyModelsEnum.Hologram, MyFakes.UNLOAD_OPTIMIZATION_KEEP_COMMON_MODELS));\n            AddModel(new MyModel(\"Models2\\\\Weapons\\\\Projectiles\\\\Projectile_IlluminatingShell\", MyMeshDrawTechnique.MESH, MyModelsEnum.IlluminatingShell, MyFakes.UNLOAD_OPTIMIZATION_KEEP_COMMON_MODELS));\n            AddModel(new MyModel(\"Models2\\\\Weapons\\\\Projectiles\\\\Mine\", MyMeshDrawTechnique.MESH, MyModelsEnum.MineBasic, MyFakes.UNLOAD_OPTIMIZATION_KEEP_COMMON_MODELS));\n            AddModel(new MyModel(\"Models2\\\\Weapons\\\\Projectiles\\\\Mine_Homing\", MyMeshDrawTechnique.MESH, MyModelsEnum.MineSmart, MyFakes.UNLOAD_OPTIMIZATION_KEEP_COMMON_MODELS));\n            AddModel(new MyModel(\"Models2\\\\Weapons\\\\Projectiles\\\\Projectile_Missile01\", MyMeshDrawTechnique.MESH, MyModelsEnum.Missile, MyFakes.UNLOAD_OPTIMIZATION_KEEP_COMMON_MODELS));\n            AddModel(new MyModel(\"Models2\\\\Weapons\\\\Projectiles\\\\Projectile_RemoteBomb\", MyMeshDrawTechnique.MESH, MyModelsEnum.RemoteBomb, MyFakes.UNLOAD_OPTIMIZATION_KEEP_COMMON_MODELS));\n            AddModel(new MyModel(\"Models2\\\\Weapons\\\\Projectiles\\\\Projectile_RemoteCamera\", MyMeshDrawTechnique.MESH, MyModelsEnum.RemoteCamera, MyFakes.UNLOAD_OPTIMIZATION_KEEP_COMMON_MODELS));\n            AddModel(new MyModel(\"Models2\\\\Weapons\\\\Projectiles\\\\Projectile_SmokeBomb\", MyMeshDrawTechnique.MESH, MyModelsEnum.SmokeBomb, MyFakes.UNLOAD_OPTIMIZATION_KEEP_COMMON_MODELS));\n            AddModel(new MyModel(\"Models2\\\\Weapons\\\\Projectiles\\\\Projectile_SphereExplosive\", MyMeshDrawTechnique.MESH, MyModelsEnum.SphereExplosive, MyFakes.UNLOAD_OPTIMIZATION_KEEP_COMMON_MODELS));\n            AddModel(new MyModel(\"Models2\\\\Weapons\\\\Projectiles\\\\Projectile_TimeBomb\", MyMeshDrawTechnique.MESH, MyModelsEnum.TimeBomb, MyFakes.UNLOAD_OPTIMIZATION_KEEP_COMMON_MODELS));\n            AddModel(new MyModel(\"Models2\\\\Weapons\\\\Equipment\\\\DrillCrusher_base\", MyMeshDrawTechnique.MESH, MyModelsEnum.Drill_Base, MyFakes.UNLOAD_OPTIMIZATION_KEEP_COMMON_MODELS));\n            AddModel(new MyModel(\"Models2\\\\Weapons\\\\Equipment\\\\DrillCrusher_gear1\", MyMeshDrawTechnique.MESH, MyModelsEnum.Drill_Gear1, MyFakes.UNLOAD_OPTIMIZATION_KEEP_COMMON_MODELS));\n            AddModel(new MyModel(\"Models2\\\\Weapons\\\\Equipment\\\\DrillCrusher_gear2\", MyMeshDrawTechnique.MESH, MyModelsEnum.Drill_Gear2, MyFakes.UNLOAD_OPTIMIZATION_KEEP_COMMON_MODELS));\n            AddModel(new MyModel(\"Models2\\\\Weapons\\\\Equipment\\\\DrillCrusher_gear3\", MyMeshDrawTechnique.MESH, MyModelsEnum.Drill_Gear3, MyFakes.UNLOAD_OPTIMIZATION_KEEP_COMMON_MODELS));\n            AddModel(new MyModel(\"Models2\\\\Weapons\\\\Equipment\\\\DrillLaser\", MyMeshDrawTechnique.MESH, MyModelsEnum.LaserDrill));\n            AddModel(new MyModel(\"Models2\\\\Weapons\\\\Equipment\\\\DrillNuclear\", MyMeshDrawTechnique.MESH, MyModelsEnum.NuclearDrill));\n            AddModel(new MyModel(\"Models2\\\\Weapons\\\\Equipment\\\\DrillNuclearHead\", MyMeshDrawTechnique.MESH, MyModelsEnum.NuclearDrillHead));\n            AddModel(new MyModel(\"Models2\\\\Weapons\\\\Equipment\\\\DrillPressure\", MyMeshDrawTechnique.MESH, MyModelsEnum.PressureDrill));\n            AddModel(new MyModel(\"Models2\\\\Weapons\\\\Equipment\\\\DrillSaw\", MyMeshDrawTechnique.MESH, MyModelsEnum.SawDrill));\n            AddModel(new MyModel(\"Models2\\\\Weapons\\\\Equipment\\\\DrillThermal\", MyMeshDrawTechnique.MESH, MyModelsEnum.ThermalDrill));\n            AddModel(new MyModel(\"Models2\\\\Weapons\\\\Equipment\\\\DrillThermalHead\", MyMeshDrawTechnique.MESH, MyModelsEnum.ThermalDrillHead));\n            AddModel(new MyModel(\"Models2\\\\Weapons\\\\Equipment\\\\HarvestingDevice_nozzle\", MyMeshDrawTechnique.MESH, MyModelsEnum.HarvestingHead, MyFakes.UNLOAD_OPTIMIZATION_KEEP_COMMON_MODELS));\n            AddModel(new MyModel(\"Models2\\\\Weapons\\\\Equipment\\\\HarvestingDevice_tube\", MyMeshDrawTechnique.MESH, MyModelsEnum.HarvestingTube, MyFakes.UNLOAD_OPTIMIZATION_KEEP_COMMON_MODELS));\n\n            AddModel(new MyModel(\"Models2\\\\Ships\\\\Ships\\\\SmallShip_Jacknife\", MyMeshDrawTechnique.MESH, MyModelsEnum.SmallShip_Jacknife));\n            //AddModel(new MyModel(\"Models2\\\\Ships\\\\Ships\\\\SmallShip_Jacknife_LOD1\",  MyMeshDrawTechnique.MESH, MyModelsEnum.SmallShip_Jacknife_LOD1));\n            AddModel(new MyModel(\"Models2\\\\Ships\\\\Ships\\\\SmallShip_Doon\", MyMeshDrawTechnique.MESH, MyModelsEnum.SmallShip_Doon));\n            //AddModel(new MyModel(\"Models2\\\\Ships\\\\Ships\\\\SmallShip_Doon_LOD1\",  MyMeshDrawTechnique.MESH, MyModelsEnum.SmallShip_Doon_LOD1));\n            AddModel(new MyModel(\"Models2\\\\Ships\\\\Ships\\\\SmallShip_Hammer\", MyMeshDrawTechnique.MESH, MyModelsEnum.SmallShip_Hammer));\n            //AddModel(new MyModel(\"Models2\\\\Ships\\\\Ships\\\\SmallShip_Hammer_LOD1\",  MyMeshDrawTechnique.MESH, MyModelsEnum.SmallShip_Hammer_LOD1));\n            AddModel(new MyModel(\"Models2\\\\Ships\\\\Ships\\\\SmallShip_ORG\", MyMeshDrawTechnique.MESH, MyModelsEnum.SmallShip_ORG));\n            //AddModel(new MyModel(\"Models2\\\\Ships\\\\Ships\\\\SmallShip_ORG_LOD1\",  MyMeshDrawTechnique.MESH, MyModelsEnum.SmallShip_ORG_LOD1));\n            AddModel(new MyModel(\"Models2\\\\Ships\\\\Ships\\\\SmallShip_ORG_NoPaint\", MyMeshDrawTechnique.MESH, MyModelsEnum.SmallShip_ORG_NoPaint));\n            //AddModel(new MyModel(\"Models2\\\\Ships\\\\Ships\\\\SmallShip_ORG_NoPaint_LOD1\",  MyMeshDrawTechnique.MESH, MyModelsEnum.SmallShip_ORG_NoPaint_LOD1));\n            AddModel(new MyModel(\"Models2\\\\Ships\\\\Ships\\\\SmallShip_YG_Closed\", MyMeshDrawTechnique.MESH, MyModelsEnum.SmallShip_YG_Closed));\n            //AddModel(new MyModel(\"Models2\\\\Ships\\\\Ships\\\\SmallShip_YG_Closed_LOD1\",  MyMeshDrawTechnique.MESH, MyModelsEnum.SmallShip_YG_Closed_LOD1));\n\n            AddModel(new MyModel(\"Models2\\\\Ships\\\\Ships\\\\SmallShip_MinerShip02\", MyMeshDrawTechnique.MESH, MyModelsEnum.Enforcer));\n            AddModel(new MyModel(\"Models2\\\\Ships\\\\Ships\\\\SmallShip_MinerShip03\", MyMeshDrawTechnique.MESH, MyModelsEnum.Kammler));\n            AddModel(new MyModel(\"Models2\\\\Ships\\\\Ships\\\\SmallShip_MinerShip04\", MyMeshDrawTechnique.MESH, MyModelsEnum.Gettysburg));\n            AddModel(new MyModel(\"Models2\\\\Ships\\\\Ships\\\\SmallShip_MinerShip10\", MyMeshDrawTechnique.MESH, MyModelsEnum.Tracer));\n            AddModel(new MyModel(\"Models2\\\\Ships\\\\Cockpits\\\\Cockpit_Default\", MyMeshDrawTechnique.MESH, MyModelsEnum.MinerShip_Generic_CockpitInterior));\n            AddModel(new MyModel(\"Models2\\\\Ships\\\\Cockpits\\\\Cockpit_Default_glass\", MyMeshDrawTechnique.MESH, MyModelsEnum.MinerShip_Generic_CockpitGlass));\n            AddModel(new MyModel(\"Models2\\\\ObjectsStatic\\\\Debris\\\\DebrisField01\", MyMeshDrawTechnique.MESH, MyModelsEnum.DebrisField));\n            AddModel(new MyModel(\"Models2\\\\ObjectsFloating\\\\Container01a_Red\", MyMeshDrawTechnique.MESH, MyModelsEnum.Standard_Container_1, MyFakes.UNLOAD_OPTIMIZATION_KEEP_COMMON_MODELS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsFloating\\\\Container01b_Blue\", MyMeshDrawTechnique.MESH, MyModelsEnum.Standard_Container_2, MyFakes.UNLOAD_OPTIMIZATION_KEEP_COMMON_MODELS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsFloating\\\\Container01c_Grey\", MyMeshDrawTechnique.MESH, MyModelsEnum.Standard_Container_3, MyFakes.UNLOAD_OPTIMIZATION_KEEP_COMMON_MODELS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsFloating\\\\Container01d_White\", MyMeshDrawTechnique.MESH, MyModelsEnum.Standard_Container_4, MyFakes.UNLOAD_OPTIMIZATION_KEEP_COMMON_MODELS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsFloating\\\\RockDebris01\", MyMeshDrawTechnique.MESH, MyModelsEnum.ExplosionDebrisVoxel, MyFakes.UNLOAD_OPTIMIZATION_KEEP_COMMON_MODELS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsFloating\\\\Tank01\", MyMeshDrawTechnique.MESH, MyModelsEnum.cistern, MyFakes.UNLOAD_OPTIMIZATION_KEEP_COMMON_MODELS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsFloating\\\\TubeBundle01\", MyMeshDrawTechnique.MESH, MyModelsEnum.pipe_bundle, MyFakes.UNLOAD_OPTIMIZATION_KEEP_COMMON_MODELS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsFloating\\\\UtilityVehicle01\", MyMeshDrawTechnique.MESH, MyModelsEnum.UtilityVehicle_1, MyFakes.UNLOAD_OPTIMIZATION_KEEP_COMMON_MODELS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsFloating\\\\Debris\\\\Debris01\", MyMeshDrawTechnique.MESH, MyModelsEnum.Debris1, MyFakes.UNLOAD_OPTIMIZATION_KEEP_COMMON_MODELS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsFloating\\\\Debris\\\\Debris02\", MyMeshDrawTechnique.MESH, MyModelsEnum.Debris2, MyFakes.UNLOAD_OPTIMIZATION_KEEP_COMMON_MODELS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsFloating\\\\Debris\\\\Debris03\", MyMeshDrawTechnique.MESH, MyModelsEnum.Debris3, MyFakes.UNLOAD_OPTIMIZATION_KEEP_COMMON_MODELS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsFloating\\\\Debris\\\\Debris04\", MyMeshDrawTechnique.MESH, MyModelsEnum.Debris4, MyFakes.UNLOAD_OPTIMIZATION_KEEP_COMMON_MODELS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsFloating\\\\Debris\\\\Debris05\", MyMeshDrawTechnique.MESH, MyModelsEnum.Debris5, MyFakes.UNLOAD_OPTIMIZATION_KEEP_COMMON_MODELS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsFloating\\\\Debris\\\\Debris06\", MyMeshDrawTechnique.MESH, MyModelsEnum.Debris6, MyFakes.UNLOAD_OPTIMIZATION_KEEP_COMMON_MODELS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsFloating\\\\Debris\\\\Debris07\", MyMeshDrawTechnique.MESH, MyModelsEnum.Debris7, MyFakes.UNLOAD_OPTIMIZATION_KEEP_COMMON_MODELS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsFloating\\\\Debris\\\\Debris08\", MyMeshDrawTechnique.MESH, MyModelsEnum.Debris8, MyFakes.UNLOAD_OPTIMIZATION_KEEP_COMMON_MODELS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsFloating\\\\Debris\\\\Debris09\", MyMeshDrawTechnique.MESH, MyModelsEnum.Debris9, MyFakes.UNLOAD_OPTIMIZATION_KEEP_COMMON_MODELS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsFloating\\\\Debris\\\\Debris10\", MyMeshDrawTechnique.MESH, MyModelsEnum.Debris10, MyFakes.UNLOAD_OPTIMIZATION_KEEP_COMMON_MODELS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsFloating\\\\Debris\\\\Debris11\", MyMeshDrawTechnique.MESH, MyModelsEnum.Debris11, MyFakes.UNLOAD_OPTIMIZATION_KEEP_COMMON_MODELS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsFloating\\\\Debris\\\\Debris12\", MyMeshDrawTechnique.MESH, MyModelsEnum.Debris12, MyFakes.UNLOAD_OPTIMIZATION_KEEP_COMMON_MODELS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsFloating\\\\Debris\\\\Debris13\", MyMeshDrawTechnique.MESH, MyModelsEnum.Debris13, MyFakes.UNLOAD_OPTIMIZATION_KEEP_COMMON_MODELS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsFloating\\\\Debris\\\\Debris14\", MyMeshDrawTechnique.MESH, MyModelsEnum.Debris14, MyFakes.UNLOAD_OPTIMIZATION_KEEP_COMMON_MODELS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsFloating\\\\Debris\\\\Debris15\", MyMeshDrawTechnique.MESH, MyModelsEnum.Debris15, MyFakes.UNLOAD_OPTIMIZATION_KEEP_COMMON_MODELS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsFloating\\\\Debris\\\\Debris16\", MyMeshDrawTechnique.MESH, MyModelsEnum.Debris16, MyFakes.UNLOAD_OPTIMIZATION_KEEP_COMMON_MODELS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsFloating\\\\Debris\\\\Debris17\", MyMeshDrawTechnique.MESH, MyModelsEnum.Debris17, MyFakes.UNLOAD_OPTIMIZATION_KEEP_COMMON_MODELS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsFloating\\\\Debris\\\\Debris18\", MyMeshDrawTechnique.MESH, MyModelsEnum.Debris18, MyFakes.UNLOAD_OPTIMIZATION_KEEP_COMMON_MODELS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsFloating\\\\Debris\\\\Debris19\", MyMeshDrawTechnique.MESH, MyModelsEnum.Debris19, MyFakes.UNLOAD_OPTIMIZATION_KEEP_COMMON_MODELS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsFloating\\\\Debris\\\\Debris20\", MyMeshDrawTechnique.MESH, MyModelsEnum.Debris20, MyFakes.UNLOAD_OPTIMIZATION_KEEP_COMMON_MODELS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsFloating\\\\Debris\\\\Debris21\", MyMeshDrawTechnique.MESH, MyModelsEnum.Debris21, MyFakes.UNLOAD_OPTIMIZATION_KEEP_COMMON_MODELS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsFloating\\\\Debris\\\\Debris22\", MyMeshDrawTechnique.MESH, MyModelsEnum.Debris22, MyFakes.UNLOAD_OPTIMIZATION_KEEP_COMMON_MODELS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsFloating\\\\Debris\\\\Debris23\", MyMeshDrawTechnique.MESH, MyModelsEnum.Debris23, MyFakes.UNLOAD_OPTIMIZATION_KEEP_COMMON_MODELS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsFloating\\\\Debris\\\\Debris24\", MyMeshDrawTechnique.MESH, MyModelsEnum.Debris24, MyFakes.UNLOAD_OPTIMIZATION_KEEP_COMMON_MODELS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsFloating\\\\Debris\\\\Debris25\", MyMeshDrawTechnique.MESH, MyModelsEnum.Debris25, MyFakes.UNLOAD_OPTIMIZATION_KEEP_COMMON_MODELS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsFloating\\\\Debris\\\\Debris26\", MyMeshDrawTechnique.MESH, MyModelsEnum.Debris26, MyFakes.UNLOAD_OPTIMIZATION_KEEP_COMMON_MODELS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsFloating\\\\Debris\\\\Debris27\", MyMeshDrawTechnique.MESH, MyModelsEnum.Debris27, MyFakes.UNLOAD_OPTIMIZATION_KEEP_COMMON_MODELS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsFloating\\\\Debris\\\\Debris28\", MyMeshDrawTechnique.MESH, MyModelsEnum.Debris28, MyFakes.UNLOAD_OPTIMIZATION_KEEP_COMMON_MODELS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsFloating\\\\Debris\\\\Debris29\", MyMeshDrawTechnique.MESH, MyModelsEnum.Debris29, MyFakes.UNLOAD_OPTIMIZATION_KEEP_COMMON_MODELS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsFloating\\\\Debris\\\\Debris30\", MyMeshDrawTechnique.MESH, MyModelsEnum.Debris30, MyFakes.UNLOAD_OPTIMIZATION_KEEP_COMMON_MODELS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsFloating\\\\Debris\\\\Debris31\", MyMeshDrawTechnique.MESH, MyModelsEnum.Debris31, MyFakes.UNLOAD_OPTIMIZATION_KEEP_COMMON_MODELS));\n            AddModel(new MyModel(\"Models2\\\\ObjectsFloating\\\\Debris\\\\Debris32_Pilot\", MyMeshDrawTechnique.MESH, MyModelsEnum.Debris32_pilot, MyFakes.UNLOAD_OPTIMIZATION_KEEP_COMMON_MODELS));\n            AddModel(new MyModel(\"Models2\\\\Editor\\\\EditorGizmo_Rotation\", MyMeshDrawTechnique.MESH, MyModelsEnum.GizmoRotation, MyFakes.UNLOAD_OPTIMIZATION_KEEP_COMMON_MODELS));\n            AddModel(new MyModel(\"Models2\\\\Editor\\\\EditorGizmo_Translation\", MyMeshDrawTechnique.MESH, MyModelsEnum.GizmoTranslation, MyFakes.UNLOAD_OPTIMIZATION_KEEP_COMMON_MODELS));\n\n            AddModel(new MyModel(\"Models2\\\\Ships\\\\Cockpits\\\\Cockpit_EAC_02\", MyMeshDrawTechnique.MESH, MyModelsEnum.EAC02_Cockpit));\n            AddModel(new MyModel(\"Models2\\\\Ships\\\\Cockpits\\\\Cockpit_EAC_02_glass\", MyMeshDrawTechnique.MESH, MyModelsEnum.EAC02_Cockpit_glass));\n            AddModel(new MyModel(\"Models2\\\\Ships\\\\Cockpits\\\\Cockpit_EAC_03\", MyMeshDrawTechnique.MESH, MyModelsEnum.EAC03_Cockpit));\n            AddModel(new MyModel(\"Models2\\\\Ships\\\\Cockpits\\\\Cockpit_EAC_03_glass\", MyMeshDrawTechnique.MESH, MyModelsEnum.EAC03_Cockpit_glass));\n            AddModel(new MyModel(\"Models2\\\\Ships\\\\Cockpits\\\\Cockpit_EAC_04\", MyMeshDrawTechnique.MESH, MyModelsEnum.EAC04_Cockpit));\n            AddModel(new MyModel(\"Models2\\\\Ships\\\\Cockpits\\\\Cockpit_EAC_04_glass\", MyMeshDrawTechnique.MESH, MyModelsEnum.EAC04_Cockpit_glass));\n            AddModel(new MyModel(\"Models2\\\\Ships\\\\Cockpits\\\\Cockpit_EAC_05\", MyMeshDrawTechnique.MESH, MyModelsEnum.EAC05_Cockpit));\n            AddModel(new MyModel(\"Models2\\\\Ships\\\\Cockpits\\\\Cockpit_EAC_05_glass\", MyMeshDrawTechnique.MESH, MyModelsEnum.EAC05_Cockpit_glass));\n\n            AddModel(new MyModel(\"Models2\\\\Ships\\\\Cockpits\\\\Cockpit_OmniCorp_01\", MyMeshDrawTechnique.MESH, MyModelsEnum.OmniCorp01_Cockpit));\n            AddModel(new MyModel(\"Models2\\\\Ships\\\\Cockpits\\\\Cockpit_OmniCorp_01_glass\", MyMeshDrawTechnique.MESH, MyModelsEnum.OmniCorp01_Cockpit_glass));\n            AddModel(new MyModel(\"Models2\\\\Ships\\\\Cockpits\\\\Cockpit_OmniCorp_03\", MyMeshDrawTechnique.MESH, MyModelsEnum.OmniCorp03_Cockpit));\n            AddModel(new MyModel(\"Models2\\\\Ships\\\\Cockpits\\\\Cockpit_OmniCorp_03_glass\", MyMeshDrawTechnique.MESH, MyModelsEnum.OmniCorp03_Cockpit_glass));\n            AddModel(new MyModel(\"Models2\\\\Ships\\\\Cockpits\\\\Cockpit_OmniCorp_04\", MyMeshDrawTechnique.MESH, MyModelsEnum.OmniCorp04_Cockpit));\n            AddModel(new MyModel(\"Models2\\\\Ships\\\\Cockpits\\\\Cockpit_OmniCorp_04_glass\", MyMeshDrawTechnique.MESH, MyModelsEnum.OmniCorp04_Cockpit_glass));\n            AddModel(new MyModel(\"Models2\\\\Ships\\\\Cockpits\\\\Cockpit_OmniCorp_EAC_01\", MyMeshDrawTechnique.MESH, MyModelsEnum.OmniCorp_EAC01_Cockpit));\n            AddModel(new MyModel(\"Models2\\\\Ships\\\\Cockpits\\\\Cockpit_OmniCorp_EAC_glass_01\", MyMeshDrawTechnique.MESH, MyModelsEnum.OmniCorp_EAC01_Cockpit_glass));\n        \n            AddModel(new MyModel(\"Models2\\\\Ships\\\\Cockpits\\\\Cockpit_CN_03\", MyMeshDrawTechnique.MESH, MyModelsEnum.Cockpit_CN_03));\n            AddModel(new MyModel(\"Models2\\\\Ships\\\\Cockpits\\\\Cockpit_CN_03_glass\", MyMeshDrawTechnique.MESH, MyModelsEnum.Cockpit_CN_03_glass));\n\n            AddModel(new MyModel(\"Models2\\\\Ships\\\\Cockpits\\\\Cockpit_SS_04\", MyMeshDrawTechnique.MESH, MyModelsEnum.Cockpit_SS_04));\n            AddModel(new MyModel(\"Models2\\\\Ships\\\\Cockpits\\\\Cockpit_SS_04_glass\", MyMeshDrawTechnique.MESH, MyModelsEnum.Cockpit_SS_04_glass));\n            AddModel(new MyModel(\"Models2\\\\Ships\\\\Cockpits\\\\Cockpit_Razorclaw\", MyMeshDrawTechnique.MESH, MyModelsEnum.Cockpit_Razorclaw));\n            AddModel(new MyModel(\"Models2\\\\Ships\\\\Cockpits\\\\Cockpit_Razorclaw_glass\", MyMeshDrawTechnique.MESH, MyModelsEnum.Cockpit_Razorclaw_glass));\n\n            AddModel(new MyModel(\"Models2\\\\Ships\\\\Ships\\\\SmallShip_MinerShip01\", MyMeshDrawTechnique.MESH, MyModelsEnum.Liberator));\n            AddModel(new MyModel(\"Models2\\\\Ships\\\\Ships\\\\SmallShip_MinerShip05\", MyMeshDrawTechnique.MESH, MyModelsEnum.Virginia));\n            AddModel(new MyModel(\"Models2\\\\Ships\\\\Ships\\\\SmallShip_MinerShip06\", MyMeshDrawTechnique.MESH, MyModelsEnum.Baer));\n            AddModel(new MyModel(\"Models2\\\\Ships\\\\Ships\\\\SmallShip_MinerShip07\", MyMeshDrawTechnique.MESH, MyModelsEnum.Hewer));\n            AddModel(new MyModel(\"Models2\\\\Ships\\\\Ships\\\\SmallShip_MinerShip08\", MyMeshDrawTechnique.MESH, MyModelsEnum.Razorclaw));\n            AddModel(new MyModel(\"Models2\\\\Ships\\\\Ships\\\\SmallShip_MinerShip09\", MyMeshDrawTechnique.MESH, MyModelsEnum.Greiser));\n            AddModel(new MyModel(\"Models2\\\\Ships\\\\Ships\\\\SmallShip_Hawk\", MyMeshDrawTechnique.MESH, MyModelsEnum.SmallShip_Hawk));\n            AddModel(new MyModel(\"Models2\\\\Ships\\\\Ships\\\\SmallShip_Phoenix\", MyMeshDrawTechnique.MESH, MyModelsEnum.SmallShip_Phoenix));\n            AddModel(new MyModel(\"Models2\\\\Ships\\\\Ships\\\\SmallShip_Leviathan\", MyMeshDrawTechnique.MESH, MyModelsEnum.SmallShip_Leviathan));\n            AddModel(new MyModel(\"Models2\\\\Ships\\\\Ships\\\\SmallShip_Rockheater\", MyMeshDrawTechnique.MESH, MyModelsEnum.SmallShip_Rockheater));\n            AddModel(new MyModel(\"Models2\\\\Ships\\\\Ships\\\\SmallShip_SteelHead\", MyMeshDrawTechnique.MESH, MyModelsEnum.SmallShip_SteelHead));\n            AddModel(new MyModel(\"Models2\\\\Ships\\\\Ships\\\\SmallShip_Talon\", MyMeshDrawTechnique.MESH, MyModelsEnum.SmallShip_Talon));\n            AddModel(new MyModel(\"Models2\\\\Ships\\\\Ships\\\\SmallShip_Stanislav\", MyMeshDrawTechnique.MESH, MyModelsEnum.SmallShip_Stanislav));\n\n            //Debug models\n            AddModel(new MyModel(\"Models2\\\\Debug\\\\plane_10_50\", MyMeshDrawTechnique.MESH, MyModelsEnum.plane_10_50));\n            AddModel(new MyModel(\"Models2\\\\Debug\\\\plane_50_20\", MyMeshDrawTechnique.MESH, MyModelsEnum.plane_50_20));\n            AddModel(new MyModel(\"Models2\\\\Debug\\\\plane_100_10\", MyMeshDrawTechnique.MESH, MyModelsEnum.plane_100_10));\n            AddModel(new MyModel(\"Models2\\\\Debug\\\\plane_128_70\", MyMeshDrawTechnique.MESH, MyModelsEnum.plane_128_70));\n            AddModel(new MyModel(\"Models2\\\\Debug\\\\plane_100_50\", MyMeshDrawTechnique.MESH, MyModelsEnum.plane_100_50));\n            AddModel(new MyModel(\"Models2\\\\Debug\\\\plane_150_50\", MyMeshDrawTechnique.MESH, MyModelsEnum.plane_150_50));\n            AddModel(new MyModel(\"Models2\\\\Debug\\\\plane_255_70\", MyMeshDrawTechnique.MESH, MyModelsEnum.plane_255_70));\n            AddModel(new MyModel(\"Models2\\\\Debug\\\\plane_300_70\", MyMeshDrawTechnique.MESH, MyModelsEnum.plane_300_70));\n            AddModel(new MyModel(\"Models2\\\\Debug\\\\plane_800_10\", MyMeshDrawTechnique.MESH, MyModelsEnum.plane_800_10));\n            AddModel(new MyModel(\"Models2\\\\Debug\\\\plane_800_70\", MyMeshDrawTechnique.MESH, MyModelsEnum.plane_800_70));\n            AddModel(new MyModel(\"Models2\\\\Debug\\\\Sphere_smooth\", MyMeshDrawTechnique.MESH, MyModelsEnum.sphere_smooth));\n\n            AddModel(new MyModel(\"Models2\\\\Debug\\\\BoxHiRes\", MyMeshDrawTechnique.MESH, MyModelsEnum.BoxHiRes));\n            AddModel(new MyModel(\"Models2\\\\Debug\\\\BoxLowRes\", MyMeshDrawTechnique.MESH, MyModelsEnum.BoxLowRes));\n            AddModel(new MyModel(\"Models2\\\\Debug\\\\Sphere\", MyMeshDrawTechnique.MESH, MyModelsEnum.Sphere));\n            AddModel(new MyModel(\"Models2\\\\Debug\\\\Sphere_low\", MyMeshDrawTechnique.MESH, MyModelsEnum.Sphere_low));\n            AddModel(new MyModel(\"Models2\\\\Debug\\\\Cone\", MyMeshDrawTechnique.MESH, MyModelsEnum.Cone));\n            AddModel(new MyModel(\"Models2\\\\Debug\\\\Hemisphere\", MyMeshDrawTechnique.MESH, MyModelsEnum.Hemisphere));\n            AddModel(new MyModel(\"Models2\\\\Debug\\\\Hemisphere_low\", MyMeshDrawTechnique.MESH, MyModelsEnum.Hemisphere_low));\n            AddModel(new MyModel(\"Models2\\\\Debug\\\\Capsule\", MyMeshDrawTechnique.MESH, MyModelsEnum.Capsule));\n\n\n            AddEntityModels(\"Models2\\\\Prefabs\\\\05_Details\\\\02_Lights\\\\default_light_0\", MyModelsEnum.default_light_0, null, MyModelsEnum.default_light_0_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\05_Details\\\\02_Lights\\\\p521_a01_light1\", MyModelsEnum.p521_a01_light1, null, MyModelsEnum.p521_a01_light1_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\05_Details\\\\02_Lights\\\\p521_a02_light2\", MyModelsEnum.p521_a02_light2, null, MyModelsEnum.p521_a02_light2_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\05_Details\\\\02_Lights\\\\p521_a03_light3\", MyModelsEnum.p521_a03_light3, null, MyModelsEnum.p521_a03_light3_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\05_Details\\\\02_Lights\\\\p521_a04_light4\", MyModelsEnum.p521_a04_light4, null, MyModelsEnum.p521_a04_light4_COL);\n\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\05_Details\\\\05_Particles\\\\default_particles_0\", MyMeshDrawTechnique.MESH, MyModelsEnum.default_particlesprefab_0));\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\05_Details\\\\05_Particles\\\\p551_a01_particles\", MyMeshDrawTechnique.MESH, MyModelsEnum.p551_a01_particles));\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\05_Details\\\\05_Particles\\\\p551_b01_particles\", MyMeshDrawTechnique.MESH, MyModelsEnum.p551_b01_particles));\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\05_Details\\\\05_Particles\\\\p551_c01_particles\", MyMeshDrawTechnique.MESH, MyModelsEnum.p551_c01_particles));\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\05_Details\\\\05_Particles\\\\p551_d01_particles\", MyMeshDrawTechnique.MESH, MyModelsEnum.p551_d01_particles));\n\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\05_Details\\\\06_Sounds\\\\default_sound_0\", MyMeshDrawTechnique.MESH, MyModelsEnum.default_soundprefab_0));\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\05_Details\\\\06_Sounds\\\\p561_a01_sound\", MyMeshDrawTechnique.MESH, MyModelsEnum.p561_a01_sound));\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\05_Details\\\\06_Sounds\\\\p561_b01_sound\", MyMeshDrawTechnique.MESH, MyModelsEnum.p561_b01_sound));\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\05_Details\\\\06_Sounds\\\\p561_c01_sound\", MyMeshDrawTechnique.MESH, MyModelsEnum.p561_c01_sound));\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\05_Details\\\\06_Sounds\\\\p561_d01_sound\", MyMeshDrawTechnique.MESH, MyModelsEnum.p561_d01_sound));\n\n            AddEntityModels(\"Models2\\\\Prefabs\\\\05_Details\\\\01_Billboards\\\\511_a01_billboard\", MyModelsEnum.p511_a01_billboard, MyModelsEnum.p511_a01_billboard_LOD1, MyModelsEnum.p511_a01_billboard_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\05_Details\\\\01_Billboards\\\\511_a02_billboard\", MyModelsEnum.p511_a02_billboard, MyModelsEnum.p511_a02_billboard_LOD1, MyModelsEnum.p511_a02_billboard_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\05_Details\\\\01_Billboards\\\\511_a03_billboard\", MyModelsEnum.p511_a03_billboard, MyModelsEnum.p511_a03_billboard_LOD1, MyModelsEnum.p511_a03_billboard_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\05_Details\\\\01_Billboards\\\\511_a04_billboard\", MyModelsEnum.p511_a04_billboard, MyModelsEnum.p511_a04_billboard_LOD1, MyModelsEnum.p511_a04_billboard_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\05_Details\\\\01_Billboards\\\\511_a05_billboard\", MyModelsEnum.p511_a05_billboard, MyModelsEnum.p511_a05_billboard_LOD1, MyModelsEnum.p511_a05_billboard_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\05_Details\\\\01_Billboards\\\\511_a06_billboard\", MyModelsEnum.p511_a06_billboard, MyModelsEnum.p511_a06_billboard_LOD1, MyModelsEnum.p511_a06_billboard_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\05_Details\\\\01_Billboards\\\\511_a07_billboard\", MyModelsEnum.p511_a07_billboard, MyModelsEnum.p511_a07_billboard_LOD1, MyModelsEnum.p511_a07_billboard_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\05_Details\\\\01_Billboards\\\\511_a08_billboard\", MyModelsEnum.p511_a08_billboard, MyModelsEnum.p511_a08_billboard_LOD1, MyModelsEnum.p511_a08_billboard_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\05_Details\\\\01_Billboards\\\\511_a09_billboard\", MyModelsEnum.p511_a09_billboard, MyModelsEnum.p511_a09_billboard_LOD1, MyModelsEnum.p511_a09_billboard_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\05_Details\\\\01_Billboards\\\\511_a10_billboard\", MyModelsEnum.p511_a10_billboard, MyModelsEnum.p511_a10_billboard_LOD1, MyModelsEnum.p511_a10_billboard_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\05_Details\\\\01_Billboards\\\\511_a11_billboard\", MyModelsEnum.p511_a11_billboard, MyModelsEnum.p511_a11_billboard_LOD1, MyModelsEnum.p511_a11_billboard_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\05_Details\\\\01_Billboards\\\\511_a12_billboard\", MyModelsEnum.p511_a12_billboard, MyModelsEnum.p511_a12_billboard_LOD1, MyModelsEnum.p511_a12_billboard_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\05_Details\\\\01_Billboards\\\\511_a14_billboard\", MyModelsEnum.p511_a14_billboard, MyModelsEnum.p511_a14_billboard_LOD1, MyModelsEnum.p511_a14_billboard_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\05_Details\\\\01_Billboards\\\\511_a15_billboard\", MyModelsEnum.p511_a15_billboard, MyModelsEnum.p511_a15_billboard_LOD1, MyModelsEnum.p511_a15_billboard_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\05_Details\\\\01_Billboards\\\\511_a16_billboard\", MyModelsEnum.p511_a16_billboard, MyModelsEnum.p511_a16_billboard_LOD1, MyModelsEnum.p511_a16_billboard_COL);\n\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\05_Details\\\\03_Signs\\\\531_a01_sign1\", MyMeshDrawTechnique.MESH, MyModelsEnum.p531_a01_sign1));\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\05_Details\\\\03_Signs\\\\531_a02_sign2\", MyMeshDrawTechnique.MESH, MyModelsEnum.p531_a02_sign2));\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\05_Details\\\\03_Signs\\\\531_a03_sign3\", MyMeshDrawTechnique.MESH, MyModelsEnum.p531_a03_sign3));\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\05_Details\\\\03_Signs\\\\531_a04_sign4\", MyMeshDrawTechnique.MESH, MyModelsEnum.p531_a04_sign4));\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\05_Details\\\\03_Signs\\\\531_a05_sign5\", MyMeshDrawTechnique.MESH, MyModelsEnum.p531_a05_sign5));\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\05_Details\\\\03_Signs\\\\531_a06_sign6\", MyMeshDrawTechnique.MESH, MyModelsEnum.p531_a06_sign6));\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\05_Details\\\\03_Signs\\\\531_a07_sign7\", MyMeshDrawTechnique.MESH, MyModelsEnum.p531_a07_sign7));\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\05_Details\\\\03_Signs\\\\531_a08_sign8\", MyMeshDrawTechnique.MESH, MyModelsEnum.p531_a08_sign8));\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\05_Details\\\\03_Signs\\\\531_a09_sign9\", MyMeshDrawTechnique.MESH, MyModelsEnum.p531_a09_sign9));\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\05_Details\\\\03_Signs\\\\531_a10_sign10\", MyMeshDrawTechnique.MESH, MyModelsEnum.p531_a10_sign10));\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\05_Details\\\\03_Signs\\\\531_a11_sign11\", MyMeshDrawTechnique.MESH, MyModelsEnum.p531_a11_sign11));\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\05_Details\\\\03_Signs\\\\531_a12_sign12\", MyMeshDrawTechnique.MESH, MyModelsEnum.p531_a12_sign12));\n\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\05_Details\\\\03_Signs\\\\531_c_administrative_area\", MyMeshDrawTechnique.MESH, MyModelsEnum.p531_c_administrative_area));\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\05_Details\\\\03_Signs\\\\531_c_armory\", MyMeshDrawTechnique.MESH, MyModelsEnum.p531_c_armory));\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\05_Details\\\\03_Signs\\\\531_c_arrow_L\", MyMeshDrawTechnique.MESH, MyModelsEnum.p531_c_arrow_L));\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\05_Details\\\\03_Signs\\\\531_c_arrow_R\", MyMeshDrawTechnique.MESH, MyModelsEnum.p531_c_arrow_R));\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\05_Details\\\\03_Signs\\\\531_c_arrow_str\", MyMeshDrawTechnique.MESH, MyModelsEnum.p531_c_arrow_str));\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\05_Details\\\\03_Signs\\\\531_c_cargo_bay\", MyMeshDrawTechnique.MESH, MyModelsEnum.p531_c_cargo_bay));\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\05_Details\\\\03_Signs\\\\531_c_command_center\", MyMeshDrawTechnique.MESH, MyModelsEnum.p531_c_command_center));\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\05_Details\\\\03_Signs\\\\531_c_commercial_area\", MyMeshDrawTechnique.MESH, MyModelsEnum.p531_c_commercial_area));\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\05_Details\\\\03_Signs\\\\531_c_communications\", MyMeshDrawTechnique.MESH, MyModelsEnum.p531_c_communications));\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\05_Details\\\\03_Signs\\\\531_c_defenses\", MyMeshDrawTechnique.MESH, MyModelsEnum.p531_c_defenses));\n            AddEntityModels(\"Models2\\\\Prefabs\\\\05_Details\\\\03_Signs\\\\531_c_docks\", MyModelsEnum.p531_c_docks, null, MyModelsEnum.p531_c_docks_COL);\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\05_Details\\\\03_Signs\\\\531_c_emergency_exit\", MyMeshDrawTechnique.MESH, MyModelsEnum.p531_c_emergency_exit));\n            AddEntityModels(\"Models2\\\\Prefabs\\\\05_Details\\\\03_Signs\\\\531_c_engineering_area\", MyModelsEnum.p531_c_engineering_area, null, MyModelsEnum.p531_c_engineering_area_COL);\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\05_Details\\\\03_Signs\\\\531_c_exit\", MyMeshDrawTechnique.MESH, MyModelsEnum.p531_c_exit));\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\05_Details\\\\03_Signs\\\\531_c_experimental_labs\", MyMeshDrawTechnique.MESH, MyModelsEnum.p531_c_experimental_labs));\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\05_Details\\\\03_Signs\\\\531_c_foundry\", MyMeshDrawTechnique.MESH, MyModelsEnum.p531_c_foundry));\n            AddEntityModels(\"Models2\\\\Prefabs\\\\05_Details\\\\03_Signs\\\\531_c_habitats\", MyModelsEnum.p531_c_habitats, null, MyModelsEnum.p531_c_habitats_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\05_Details\\\\03_Signs\\\\531_c_hangars\", MyModelsEnum.p531_c_hangars, null, MyModelsEnum.p531_c_hangars_COL);\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\05_Details\\\\03_Signs\\\\531_c_industrial_area\", MyMeshDrawTechnique.MESH, MyModelsEnum.p531_c_industrial_area));\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\05_Details\\\\03_Signs\\\\531_c_landing_bay\", MyMeshDrawTechnique.MESH, MyModelsEnum.p531_c_landing_bay));\n            AddEntityModels(\"Models2\\\\Prefabs\\\\05_Details\\\\03_Signs\\\\531_c_maintenance\", MyModelsEnum.p531_c_maintenance, null, MyModelsEnum.p531_c_maintenance_COL);\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\05_Details\\\\03_Signs\\\\531_c_military_area\", MyMeshDrawTechnique.MESH, MyModelsEnum.p531_c_military_area));\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\05_Details\\\\03_Signs\\\\531_c_mines\", MyMeshDrawTechnique.MESH, MyModelsEnum.p531_c_mines));\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\05_Details\\\\03_Signs\\\\531_c_ore_processing\", MyMeshDrawTechnique.MESH, MyModelsEnum.p531_c_ore_processing));\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\05_Details\\\\03_Signs\\\\531_c_outer_area\", MyMeshDrawTechnique.MESH, MyModelsEnum.p531_c_outer_area));\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\05_Details\\\\03_Signs\\\\531_c_prison\", MyMeshDrawTechnique.MESH, MyModelsEnum.p531_c_prison));\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\05_Details\\\\03_Signs\\\\531_c_public_area\", MyMeshDrawTechnique.MESH, MyModelsEnum.p531_c_public_area));\n            AddEntityModels(\"Models2\\\\Prefabs\\\\05_Details\\\\03_Signs\\\\531_c_reactor\", MyModelsEnum.p531_c_reactor, null, MyModelsEnum.p531_c_reactor_COL);\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\05_Details\\\\03_Signs\\\\531_c_research\", MyMeshDrawTechnique.MESH, MyModelsEnum.p531_c_research));\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\05_Details\\\\03_Signs\\\\531_c_restricted_area\", MyMeshDrawTechnique.MESH, MyModelsEnum.p531_c_restricted_area));\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\05_Details\\\\03_Signs\\\\531_c_security\", MyMeshDrawTechnique.MESH, MyModelsEnum.p531_c_security));\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\05_Details\\\\03_Signs\\\\531_c_sign\", MyMeshDrawTechnique.MESH, MyModelsEnum.p531_c_sign));\n            AddEntityModels(\"Models2\\\\Prefabs\\\\05_Details\\\\03_Signs\\\\531_c_storage\", MyModelsEnum.p531_c_storage, null, MyModelsEnum.p531_c_storage_COL);\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\05_Details\\\\03_Signs\\\\531_c_technical_area\", MyMeshDrawTechnique.MESH, MyModelsEnum.p531_c_technical_area));\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\05_Details\\\\03_Signs\\\\531_c_trade_port\", MyMeshDrawTechnique.MESH, MyModelsEnum.p531_c_trade_port));\n\n\n            //AddModel(new MyModel(\"Models2\\\\Prefabs\\\\02_Shells\\\\02_Chambers\\\\01\\\\p221a02_chamber_v2\", MyMeshDrawTechnique.MESH, MyModelsEnum.p221a02_chamber_v2));\n            AddEntityModels(\"Models2\\\\Prefabs\\\\02_Shells\\\\02_Chambers\\\\01\\\\p221a02_chamber_v2\", MyModelsEnum.p221a02_chamber_v2, null, MyModelsEnum.p221a02_chamber_v2_COL);\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\02_Shells\\\\02_Chambers\\\\02\\\\p221b02_chamber_v2\", MyMeshDrawTechnique.MESH, MyModelsEnum.p221b02_chamber_v2));\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\02_Shells\\\\02_Chambers\\\\02\\\\p221b02_chamber_v2_COL\", MyMeshDrawTechnique.MESH, MyModelsEnum.p221b02_chamber_v2_COL));\n            \n            //Used col model from Arena prefab because of bad collision model of this one\n            //AddEntityModels(\"Models2\\\\Prefabs\\\\02_Shells\\\\02_Chambers\\\\03\\\\p221c02_chamber_v2\", MyModelsEnum.p221c02_chamber_v2, MyModelsEnum.p221c02_chamber_v2_LOD1, MyModelsEnum.p221c01_chamber_v1_COL);\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\02_Shells\\\\02_Chambers\\\\03\\\\p221c02_chamber_v2\", MyMeshDrawTechnique.MESH, MyModelsEnum.p221c02_chamber_v2));\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\02_Shells\\\\02_Chambers\\\\03\\\\p221c02_chamber_v2_LOD1\", MyMeshDrawTechnique.MESH, MyModelsEnum.p221c02_chamber_v2_LOD1));\n            m_models[(int)MyModelsEnum.p221c02_chamber_v2_COL] = m_models[(int)MyModelsEnum.p221c01_chamber_v1_COL]; \n            \n            AddEntityModels(\"Models2\\\\Prefabs\\\\02_Shells\\\\02_Chambers\\\\04\\\\p221d02_chamber_v2\", MyModelsEnum.p221d02_chamber_v2, MyModelsEnum.p221d02_chamber_v2_LOD1, MyModelsEnum.p221d02_chamber_v2_COL);\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\02_Shells\\\\02_Chambers\\\\05\\\\p221e02_chamber_v2\", MyMeshDrawTechnique.MESH, MyModelsEnum.p221e02_chamber_v2));\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\02_Shells\\\\02_Chambers\\\\05\\\\p221e02_chamber_v2_COL\", MyMeshDrawTechnique.MESH, MyModelsEnum.p221e02_chamber_v2_COL));\n\n            //AddModel(new MyModel(\"Models2\\\\Prefabs\\\\02_Shells\\\\02_Chambers\\\\01\\\\p221a01_chamber_v1_LOD1\",  MyMeshDrawTechnique.MESH, MyModelsEnum.p221a01_chamber_v1_LOD1));\n            //AddModel(new MyModel(\"Models2\\\\Prefabs\\\\02_Shells\\\\02_Chambers\\\\02\\\\p221b01_chamber_v1_LOD1\", MyMeshDrawTechnique.MESH, MyModelsEnum.p221b01_chamber_v1_LOD1));\n            //AddModel(new MyModel(\"Models2\\\\Prefabs\\\\02_Shells\\\\02_Chambers\\\\03\\\\p221c01_chamber_v1_LOD1\", MyMeshDrawTechnique.MESH, MyModelsEnum.p221c01_chamber_v1_LOD1));\n            //AddModel(new MyModel(\"Models2\\\\Prefabs\\\\02_Shells\\\\02_Chambers\\\\04\\\\p221d01_chamber_v1_LOD1\", MyMeshDrawTechnique.MESH, MyModelsEnum.p221d01_chamber_v1_LOD1));\n            //AddModel(new MyModel(\"Models2\\\\Prefabs\\\\02_Shells\\\\02_Chambers\\\\05\\\\p221e01_chamber_v1_LOD1\", MyMeshDrawTechnique.MESH, MyModelsEnum.p221e01_chamber_v1_LOD1));\n\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\02_Shells\\\\02_Chambers\\\\01\\\\p221a02_chamber_v2_LOD1\", MyMeshDrawTechnique.MESH, MyModelsEnum.p221a02_chamber_v2_LOD1));\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\02_Shells\\\\02_Chambers\\\\02\\\\p221b02_chamber_v2_LOD1\", MyMeshDrawTechnique.MESH, MyModelsEnum.p221b02_chamber_v2_LOD1));\n            //AddModel(new MyModel(\"Models2\\\\Prefabs\\\\02_Shells\\\\02_Chambers\\\\03\\\\p221c02_chamber_v2_LOD1\", MyMeshDrawTechnique.MESH, MyModelsEnum.p221c02_chamber_v2_LOD1));\n            //AddModel(new MyModel(\"Models2\\\\Prefabs\\\\02_Shells\\\\02_Chambers\\\\04\\\\p221d02_chamber_v2_LOD1\", MyMeshDrawTechnique.MESH, MyModelsEnum.p221d02_chamber_v2_LOD1));\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\02_Shells\\\\02_Chambers\\\\05\\\\p221e02_chamber_v2_LOD1\", MyMeshDrawTechnique.MESH, MyModelsEnum.p221e02_chamber_v2_LOD1));\n\n            AddEntityModels(\"Models2\\\\Prefabs\\\\01_Beams\\\\03_Small\\\\01\\\\p130a01_a_straight_10m\", MyModelsEnum.p130a01_a_straight_10m, null, MyModelsEnum.p130a01_a_straight_10m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\01_Beams\\\\03_Small\\\\01\\\\p130a02_a_straight_30m\", MyModelsEnum.p130a02_a_straight_30m, MyModelsEnum.p130a02_a_straight_30m_LOD1, MyModelsEnum.p130a02_a_straight_30m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\01_Beams\\\\03_Small\\\\02\\\\p130b01_b_straight_10m\", MyModelsEnum.p130b01_b_straight_10m, null, MyModelsEnum.p130b01_b_straight_10m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\01_Beams\\\\03_Small\\\\02\\\\p130b02_b_straight_30m\", MyModelsEnum.p130b02_b_straight_30m, MyModelsEnum.p130b02_b_straight_30m_LOD1, MyModelsEnum.p130b02_b_straight_30m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\01_Beams\\\\03_Small\\\\03\\\\p130c01_c_straight_10m\", MyModelsEnum.p130c01_c_straight_10m, null, MyModelsEnum.p130c01_c_straight_10m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\01_Beams\\\\03_Small\\\\03\\\\p130c02_c_straight_30m\", MyModelsEnum.p130c02_c_straight_30m, MyModelsEnum.p130c02_c_straight_30m_LOD1, MyModelsEnum.p130c02_c_straight_30m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\01_Beams\\\\03_Small\\\\04\\\\p130d01_d_straight_10m\", MyModelsEnum.p130d01_d_straight_10m, null, MyModelsEnum.p130d01_d_straight_10m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\01_Beams\\\\03_Small\\\\04\\\\p130d02_d_straight_30m\", MyModelsEnum.p130d02_d_straight_30m, MyModelsEnum.p130d02_d_straight_30m_LOD1, MyModelsEnum.p130d02_d_straight_30m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\01_Beams\\\\03_Small\\\\05\\\\p130e01_e_straight_10m\", MyModelsEnum.p130e01_e_straight_10m, null, MyModelsEnum.p130e01_e_straight_10m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\01_Beams\\\\03_Small\\\\05\\\\p130e02_e_straight_30m\", MyModelsEnum.p130e02_e_straight_30m, MyModelsEnum.p130e02_e_straight_30m_LOD1, MyModelsEnum.p130e02_e_straight_30m_COL);\n\n            AddEntityModels(\"Models2\\\\Prefabs\\\\03_Modules\\\\02_Supply\\\\01_PowerGeneration\\\\04\\\\p321d01_big_solar_panel\", MyModelsEnum.p321d01_big_solar_panel, MyModelsEnum.p321d01_big_solar_panel_LOD1, MyModelsEnum.p321d01_big_solar_panel_COL);\n            //AddModel(new MyModel(\"Models2\\\\Prefabs\\\\03_Modules\\\\02_Supply\\\\01_PowerGeneration\\\\04\\\\p321d01_big_solar_panel\", MyMeshDrawTechnique.MESH, MyModelsEnum.p321d01_big_solar_panel));\n\n            AddEntityModels(\"Models2\\\\Prefabs\\\\03_Modules\\\\02_Supply\\\\01_PowerGeneration\\\\01\\\\p321b01_solar_panel\", MyModelsEnum.p321b01_solar_panel, MyModelsEnum.p321b01_solar_panel_LOD1, MyModelsEnum.p321b01_solar_panel_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\03_Modules\\\\02_Supply\\\\01_PowerGeneration\\\\01\\\\p321c01_solar_panel\", MyModelsEnum.p321c01_solar_panel, MyModelsEnum.p321c01_solar_panel_LOD1, MyModelsEnum.p321c01_solar_panel_COL);\n\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\04\\\\05_Junction\\\\p413_d02_junction_t_vertical\", MyModelsEnum.p413_d02_junction_t_vertical, MyModelsEnum.p413_d02_junction_t_vertical_LOD1, MyModelsEnum.p413_d02_junction_t_vertical_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\04\\\\05_Junction\\\\p413_d04_junction_x_vertical\", MyModelsEnum.p413_d04_junction_x_vertical, MyModelsEnum.p413_d04_junction_x_vertical_LOD1, MyModelsEnum.p413_d04_junction_x_vertical_COL);\n\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\06\\\\02_Turn90\\\\01_230m\\\\p412_f11_turn_90_up_230m\", MyModelsEnum.p412_f11_turn_90_up_230m, MyModelsEnum.p412_f11_turn_90_up_230m_LOD1, MyModelsEnum.p412_f11_turn_90_up_230m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\06\\\\02_Turn90\\\\01_230m\\\\p412_f12_turn_90_left_230m\", MyModelsEnum.p412_f12_turn_90_left_230m, MyModelsEnum.p412_f12_turn_90_left_230m_LOD1, MyModelsEnum.p412_f12_turn_90_left_230m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\06\\\\02_Turn90\\\\01_230m\\\\p412_f13_turn_90_right_230m\", MyModelsEnum.p412_f13_turn_90_right_230m, MyModelsEnum.p412_f13_turn_90_right_230m_LOD1, MyModelsEnum.p412_f13_turn_90_right_230m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\06\\\\02_Turn90\\\\01_230m\\\\p412_f14_turn_90_down_230m\", MyModelsEnum.p412_f14_turn_90_down_230m, MyModelsEnum.p412_f14_turn_90_down_230m_LOD1, MyModelsEnum.p412_f14_turn_90_down_230m_COL);\n\n            //AddModel(new MyModel(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\06\\\\01_Straight\\\\p411_f04_straight_4\", MyMeshDrawTechnique.MESH, MyModelsEnum.p411_f04_straight_4));\n            //AddModel(new MyModel(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\06\\\\01_Straight\\\\p411_f05_straight_5\", MyMeshDrawTechnique.MESH, MyModelsEnum.p411_f05_straight_5));\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\06\\\\01_Straight\\\\p411_f04_straight_4\", MyModelsEnum.p411_f04_straight_4, null, MyModelsEnum.p411_f04_straight_4_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\06\\\\01_Straight\\\\p411_f05_straight_5\", MyModelsEnum.p411_f05_straight_5, null, MyModelsEnum.p411_f05_straight_5_COL);\n\n            //AddModel(new MyModel(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\07\\\\01_Straight\\\\p411_g05_straight_5\", MyMeshDrawTechnique.MESH, MyModelsEnum.p411_g05_straight_5));\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\07\\\\01_Straight\\\\p411_g05_straight_5\", MyModelsEnum.p411_g05_straight_5, MyModelsEnum.p411_g05_straight_5_LOD1, MyModelsEnum.p411_g05_straight_5_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\06\\\\04_Entrance\\\\p414_f01_entrance_60m\", MyModelsEnum.p414_f01_entrance_60m, MyModelsEnum.p414_f01_entrance_60m_LOD1, MyModelsEnum.p414_f01_entrance_60m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\01_Tunnel\\\\07\\\\04_Entrance\\\\p414_g01_entrance_60m\", MyModelsEnum.p414_g01_entrance_60m, MyModelsEnum.p414_g01_entrance_60m_LOD1, MyModelsEnum.p414_g01_entrance_60m_COL);\n\n            AddEntityModels(\"Models2\\\\Prefabs\\\\05_Details\\\\07_traffic_signs\\\\p571_a01_traffic_sign\", MyModelsEnum.p571_a01_traffic_sign, null, MyModelsEnum.p571_a01_traffic_sign_COL);\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\05_Details\\\\07_traffic_signs\\\\p571_b01_traffic_sign\", MyMeshDrawTechnique.MESH, MyModelsEnum.p571_b01_traffic_sign));\n            AddEntityModels(\"Models2\\\\Prefabs\\\\05_Details\\\\07_traffic_signs\\\\p571_box01_traffic_sign\", MyModelsEnum.p571_box01_traffic_sign, null, MyModelsEnum.p571_box01_traffic_sign_COL);\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\05_Details\\\\07_traffic_signs\\\\p571_box02_traffic_sign\", MyMeshDrawTechnique.MESH, MyModelsEnum.p571_box02_traffic_sign));\n            AddEntityModels(\"Models2\\\\Prefabs\\\\05_Details\\\\07_traffic_signs\\\\p571_c01_traffic_sign\", MyModelsEnum.p571_c01_traffic_sign, null, MyModelsEnum.p571_c01_traffic_sign_COL);\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\05_Details\\\\07_traffic_signs\\\\p571_d01_traffic_sign\", MyMeshDrawTechnique.MESH, MyModelsEnum.p571_d01_traffic_sign));\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\05_Details\\\\07_traffic_signs\\\\p571_e01_traffic_sign\", MyMeshDrawTechnique.MESH, MyModelsEnum.p571_e01_traffic_sign));\n            AddEntityModels(\"Models2\\\\Prefabs\\\\05_Details\\\\07_traffic_signs\\\\p571_f01_traffic_sign\", MyModelsEnum.p571_f01_traffic_sign, null, MyModelsEnum.p571_f01_traffic_sign_COL);\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\05_Details\\\\07_traffic_signs\\\\p571_g01_traffic_sign\", MyMeshDrawTechnique.MESH, MyModelsEnum.p571_g01_traffic_sign));\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\05_Details\\\\07_traffic_signs\\\\p571_h01_traffic_sign\", MyMeshDrawTechnique.MESH, MyModelsEnum.p571_h01_traffic_sign));\n            AddEntityModels(\"Models2\\\\Prefabs\\\\05_Details\\\\07_traffic_signs\\\\p571_i01_traffic_sign\", MyModelsEnum.p571_i01_traffic_sign, null, MyModelsEnum.p571_i01_traffic_sign_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\05_Details\\\\07_traffic_signs\\\\p571_j01_traffic_sign\", MyModelsEnum.p571_j01_traffic_sign, null, MyModelsEnum.p571_j01_traffic_sign_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\05_Details\\\\07_traffic_signs\\\\p571_k01_traffic_sign\", MyModelsEnum.p571_k01_traffic_sign, null, MyModelsEnum.p571_k01_traffic_sign_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\05_Details\\\\07_traffic_signs\\\\p571_l01_traffic_sign\", MyModelsEnum.p571_l01_traffic_sign, null, MyModelsEnum.p571_l01_traffic_sign_COL);\n\n            AddEntityModels(\"Models2\\\\Prefabs\\\\03_Modules\\\\08_MannedObjects\\\\05_Temple\\\\01\\\\p385_a01_temple_900m\", MyModelsEnum.p385_a01_temple_900m, MyModelsEnum.p385_a01_temple_900m_LOD1, MyModelsEnum.p385_a01_temple_900m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\03_Modules\\\\08_MannedObjects\\\\03_Church\\\\01\\\\p383_a01_church\", MyModelsEnum.p383_a01_church, MyModelsEnum.p383_a01_church_LOD1, MyModelsEnum.p383_a01_church_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\03_Modules\\\\03_LifeSupport\\\\04_FoodGrowing\\\\01\\\\p334_a01_food_grow\", MyModelsEnum.p334_a01_food_grow, MyModelsEnum.p334_a01_food_grow_LOD01, MyModelsEnum.p334_a01_food_grow_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\03_Modules\\\\04_Industry\\\\06_BioExperiment\\\\01\\\\p345_a01_bio_exp\",  MyModelsEnum.p345_a01_bio_exp, MyModelsEnum.p345_a01_bio_exp_LOD1, MyModelsEnum.p345_a01_bio_exp_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\03_Modules\\\\04_Industry\\\\06_BioExperiment\\\\01\\\\p345_a01_bio_exp_center\", MyModelsEnum.p345_a01_bio_exp_center, MyModelsEnum.p345_a01_bio_exp_center_LOD1, MyModelsEnum.p345_a01_bio_exp_center_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\03_Modules\\\\04_Industry\\\\06_BioExperiment\\\\01\\\\p345_a01_bio_exp_tanks\", MyModelsEnum.p345_a01_bio_exp_tanks, MyModelsEnum.p345_a01_bio_exp_tanks_LOD1, MyModelsEnum.p345_a01_bio_exp_tanks_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\03_Modules\\\\04_Industry\\\\07_BioMachine\\\\01\\\\p345_a01_bio_mach_exp\", MyModelsEnum.p345_a01_bio_mach_exp, MyModelsEnum.p345_a01_bio_mach_exp_LOD1, MyModelsEnum.p345_a01_bio_mach_exp_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\03_Modules\\\\04_Industry\\\\08_Recycle\\\\01\\\\p345_a01_recycle\", MyModelsEnum.p345_a01_recycle, MyModelsEnum.p345_a01_recycle_LOD1, MyModelsEnum.p345_a01_recycle_COL);\n\n            //AddModel(new MyModel(\"Models2\\\\Prefabs\\\\05_Details\\\\04_Other\\\\541_escape_pod\", MyMeshDrawTechnique.MESH, MyModelsEnum.p541_escape_pod));\n            AddEntityModels(\"Models2\\\\Prefabs\\\\05_Details\\\\04_Other\\\\541_escape_pod\", MyModelsEnum.p541_escape_pod, MyModelsEnum.p541_escape_pod_LOD1, MyModelsEnum.p541_escape_pod_COL);\n\n            AddEntityModels(\"Models2\\\\Prefabs\\\\05_Details\\\\04_Other\\\\541_escape_pod_base\", MyModelsEnum.p541_escape_pod_base, MyModelsEnum.p541_escape_pod_base_LOD1, MyModelsEnum.p541_escape_pod_base_COL);\n\n\n            //AddModel(new MyModel(\"Models2\\\\Prefabs\\\\05_Details\\\\04_Other\\\\541_ventilator_body\", MyMeshDrawTechnique.MESH, MyModelsEnum.p541_ventilator_body));\n            AddEntityModels(\"Models2\\\\Prefabs\\\\05_Details\\\\04_Other\\\\541_ventilator_body\", MyModelsEnum.p541_ventilator_body, MyModelsEnum.p541_ventilator_body_LOD1, MyModelsEnum.p541_ventilator_body_COL);\n\n            AddEntityModels(\"Models2\\\\Prefabs\\\\05_Details\\\\04_Other\\\\541_ventilator_propeller\", MyModelsEnum.p541_ventilator_propeller, null, MyModelsEnum.p541_ventilator_propeller_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\05_Details\\\\04_Other\\\\541_ventilator_propeller_big\", MyModelsEnum.p541_ventilator_propeller_big, MyModelsEnum.p541_ventilator_propeller_big_LOD1, MyModelsEnum.p541_ventilator_propeller_big_COL);            \n\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\06_Custom\\\\SimpleObject\", MyMeshDrawTechnique.MESH, MyModelsEnum.SimpleObject));\n            //AddModel(new MyModel(\"Models2\\\\Prefabs\\\\06_Custom\\\\asteroid_test\", MyMeshDrawTechnique.MESH, MyModelsEnum.AsteroidPrefabTest));            \n            AddEntityModels(\"Models2\\\\Prefabs\\\\FoundationFactory\", MyModelsEnum.FoundationFactory, null, MyModelsEnum.FoundationFactory_COL);\n\n            AddEntityModels(\"Models2\\\\Prefabs\\\\03_Modules\\\\04_Industry\\\\09_Tower\\\\p349_a_tower\", MyModelsEnum.p349_a_tower, MyModelsEnum.p349_a_tower_LOD1, MyModelsEnum.p349_a_tower_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\03_Modules\\\\04_Industry\\\\09_Tower\\\\p349_b_tower\", MyModelsEnum.p349_b_tower, MyModelsEnum.p349_b_tower_LOD1, MyModelsEnum.p349_b_tower_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\03_Modules\\\\04_Industry\\\\09_Tower\\\\p349_c_tower\", MyModelsEnum.p349_c_tower, MyModelsEnum.p349_c_tower_LOD1, MyModelsEnum.p349_c_tower_COL);\n\n            //AddModel(new MyModel(\"Models2\\\\Prefabs\\\\03_Modules\\\\07_Hangars\\\\01_Small\\\\01\\\\p361_a02_hangar_panel\", MyMeshDrawTechnique.MESH, MyModelsEnum.p361_a02_hangar_panel));\n\n            AddEntityModels(\"Models2\\\\Prefabs\\\\05_Details\\\\03_Signs\\\\p531_b_faction\", MyModelsEnum.p531_b_faction, null, MyModelsEnum.p531_b_faction_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\05_Details\\\\03_Signs\\\\p531_b_faction_holo\", MyModelsEnum.p531_b_faction_holo, null, MyModelsEnum.p531_b_faction_holo_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\02_Shells\\\\03_Armor\\\\01\\\\armor_hull\", MyModelsEnum.armor_hull, MyModelsEnum.armor_hull_LOD1, MyModelsEnum.armor_hull_COL);\n\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\02_Shells\\\\03_Armor\\\\01\\\\Fourth_Reich_mothership\", MyMeshDrawTechnique.MESH, MyModelsEnum.FourthReichMothership));\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\02_Shells\\\\03_Armor\\\\01\\\\Fourth_Reich_mothership_LOD1\", MyMeshDrawTechnique.MESH, MyModelsEnum.FourthReichMothership_LOD1));\n            AddEntityModels(\"Models2\\\\Prefabs\\\\02_Shells\\\\03_Armor\\\\01\\\\Fourth_Reich_mothership_B\", MyModelsEnum.FourthReichMothership_B, MyModelsEnum.FourthReichMothership_B_LOD1, MyModelsEnum.FourthReichMothership_B_COL);\n\n            AddEntityModels(\"Models2\\\\Prefabs\\\\02_Shells\\\\03_Armor\\\\01\\\\Rus_mothership\", MyModelsEnum.RusMothership, MyModelsEnum.RusMothership_LOD1, MyModelsEnum.RusMothership_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\02_Shells\\\\03_Armor\\\\01\\\\Rus_Mothership_Russian_Hummer\", MyModelsEnum.Russian_Mothership_Hummer, MyModelsEnum.Russian_Mothership_Hummer_LOD1, MyModelsEnum.Russian_Mothership_Hummer_COL);            \n\n\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\03_Modules\\\\01_Flight\\\\01_LongTermThruster\\\\01\\\\p311a01_long_term_thruster_LOD1\", MyMeshDrawTechnique.MESH, MyModelsEnum.p311a01_long_term_thruster_LOD1));\n\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\03_Modules\\\\02_Supply\\\\01_PowerGeneration\\\\02\\\\p321b01_nuclear_reactor_LOD1\", MyMeshDrawTechnique.MESH, MyModelsEnum.p321b01_nuclear_reactor_LOD1));\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\03_Modules\\\\04_Industry\\\\02_LoadingBay\\\\01\\\\p342_a01_loading_bay_LOD1\", MyMeshDrawTechnique.MESH, MyModelsEnum.p342_a01_loading_bay_LOD1));\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\03_Modules\\\\04_Industry\\\\03_OreStorage\\\\01\\\\p343_a01_ore_storage_LOD1\", MyMeshDrawTechnique.MESH, MyModelsEnum.p343_a01_ore_storage_LOD1));\n\n            AddModel(new MyModel(\"Models2\\\\Ships\\\\Ships\\\\SmallShip_Doon_LOD1\", MyMeshDrawTechnique.MESH, MyModelsEnum.SmallShip_Doon_LOD1));\n            AddModel(new MyModel(\"Models2\\\\Ships\\\\Ships\\\\SmallShip_Jacknife_LOD1\", MyMeshDrawTechnique.MESH, MyModelsEnum.SmallShip_Jacknife_LOD1));\n            AddModel(new MyModel(\"Models2\\\\Ships\\\\Ships\\\\SmallShip_Hammer_LOD1\", MyMeshDrawTechnique.MESH, MyModelsEnum.SmallShip_Hammer_LOD1));\n            AddModel(new MyModel(\"Models2\\\\Ships\\\\Ships\\\\SmallShip_ORG_LOD1\", MyMeshDrawTechnique.MESH, MyModelsEnum.SmallShip_ORG_LOD1));\n            AddModel(new MyModel(\"Models2\\\\Ships\\\\Ships\\\\SmallShip_ORG_NoPaint_LOD1\", MyMeshDrawTechnique.MESH, MyModelsEnum.SmallShip_ORG_NoPaint_LOD1));\n            AddModel(new MyModel(\"Models2\\\\Ships\\\\Ships\\\\SmallShip_YG_Closed_LOD1\", MyMeshDrawTechnique.MESH, MyModelsEnum.SmallShip_YG_Closed_LOD1));\n            AddModel(new MyModel(\"Models2\\\\Ships\\\\Ships\\\\SmallShip_Hawk_LOD1\", MyMeshDrawTechnique.MESH, MyModelsEnum.SmallShip_Hawk_LOD1));\n            AddModel(new MyModel(\"Models2\\\\Ships\\\\Ships\\\\SmallShip_Phoenix_LOD1\", MyMeshDrawTechnique.MESH, MyModelsEnum.SmallShip_Phoenix_LOD1));\n            AddModel(new MyModel(\"Models2\\\\Ships\\\\Ships\\\\SmallShip_Leviathan_LOD1\", MyMeshDrawTechnique.MESH, MyModelsEnum.SmallShip_Leviathan_LOD1));\n            AddModel(new MyModel(\"Models2\\\\Ships\\\\Ships\\\\SmallShip_Rockheater_LOD1\", MyMeshDrawTechnique.MESH, MyModelsEnum.SmallShip_Rockheater_LOD1));\n            AddModel(new MyModel(\"Models2\\\\Ships\\\\Ships\\\\SmallShip_SteelHead_LOD1\", MyMeshDrawTechnique.MESH, MyModelsEnum.SmallShip_SteelHead_LOD1));\n            AddModel(new MyModel(\"Models2\\\\Ships\\\\Ships\\\\SmallShip_Talon_LOD1\", MyMeshDrawTechnique.MESH, MyModelsEnum.SmallShip_Talon_LOD1));\n            AddModel(new MyModel(\"Models2\\\\Ships\\\\Ships\\\\SmallShip_Stanislav_LOD1\", MyMeshDrawTechnique.MESH, MyModelsEnum.SmallShip_Stanislav_LOD1));\n            AddModel(new MyModel(\"Models2\\\\Ships\\\\Ships\\\\SmallShip_MinerShip01_LOD1\", MyMeshDrawTechnique.MESH, MyModelsEnum.Liberator_LOD1));\n            AddModel(new MyModel(\"Models2\\\\Ships\\\\Ships\\\\SmallShip_MinerShip02_LOD1\", MyMeshDrawTechnique.MESH, MyModelsEnum.Enforcer_LOD1));\n            AddModel(new MyModel(\"Models2\\\\Ships\\\\Ships\\\\SmallShip_MinerShip03_LOD1\", MyMeshDrawTechnique.MESH, MyModelsEnum.Kammler_LOD1));\n            AddModel(new MyModel(\"Models2\\\\Ships\\\\Ships\\\\SmallShip_MinerShip04_LOD1\", MyMeshDrawTechnique.MESH, MyModelsEnum.Gettysburg_LOD1));\n            AddModel(new MyModel(\"Models2\\\\Ships\\\\Ships\\\\SmallShip_MinerShip05_LOD1\", MyMeshDrawTechnique.MESH, MyModelsEnum.Virginia_LOD1));\n            AddModel(new MyModel(\"Models2\\\\Ships\\\\Ships\\\\SmallShip_MinerShip06_LOD1\", MyMeshDrawTechnique.MESH, MyModelsEnum.Baer_LOD1));\n            AddModel(new MyModel(\"Models2\\\\Ships\\\\Ships\\\\SmallShip_MinerShip07_LOD1\", MyMeshDrawTechnique.MESH, MyModelsEnum.Hewer_LOD1));\n            AddModel(new MyModel(\"Models2\\\\Ships\\\\Ships\\\\SmallShip_MinerShip08_LOD1\", MyMeshDrawTechnique.MESH, MyModelsEnum.Razorclaw_LOD1));\n            AddModel(new MyModel(\"Models2\\\\Ships\\\\Ships\\\\SmallShip_MinerShip09_LOD1\", MyMeshDrawTechnique.MESH, MyModelsEnum.Greiser_LOD1));\n            AddModel(new MyModel(\"Models2\\\\Ships\\\\Ships\\\\SmallShip_MinerShip10_LOD1\", MyMeshDrawTechnique.MESH, MyModelsEnum.Tracer_LOD1));\n\n            // Drones\n            AddModel(new MyModel(\"Models2\\\\Ships\\\\Drones\\\\drone_CN\", MyMeshDrawTechnique.MESH, MyModelsEnum.DroneCN));\n            AddModel(new MyModel(\"Models2\\\\Ships\\\\Drones\\\\drone_SS\", MyMeshDrawTechnique.MESH, MyModelsEnum.DroneSS));\n            AddModel(new MyModel(\"Models2\\\\Ships\\\\Drones\\\\drone_US\", MyMeshDrawTechnique.MESH, MyModelsEnum.DroneUS));\n\n            AddEntityModels(\"Models2\\\\Prefabs\\\\02_Shells\\\\01_CagePanels\\\\08_bariers\\\\p212a01_panel_large\", MyModelsEnum.p212a01_panel_large, MyModelsEnum.p212a01_panel_large_LOD1, MyModelsEnum.p212a01_panel_large_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\02_Shells\\\\01_CagePanels\\\\08_bariers\\\\p212a01_panel_medium\", MyModelsEnum.p212a01_panel_medium, MyModelsEnum.p212a01_panel_medium_LOD1, MyModelsEnum.p212a01_panel_medium_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\02_Shells\\\\01_CagePanels\\\\08_bariers\\\\p212b02_panel_medium\", MyModelsEnum.p212b02_panel_medium, MyModelsEnum.p212b02_panel_medium_LOD1, MyModelsEnum.p212b02_panel_medium_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\02_Shells\\\\01_CagePanels\\\\08_bariers\\\\p212c03_panel_medium\", MyModelsEnum.p212c03_panel_medium, MyModelsEnum.p212c03_panel_medium_LOD1, MyModelsEnum.p212c03_panel_medium_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\02_Shells\\\\01_CagePanels\\\\08_bariers\\\\p212d04_panel_medium\", MyModelsEnum.p212d04_panel_medium, null, MyModelsEnum.p212d04_panel_medium_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\02_Shells\\\\01_CagePanels\\\\08_bariers\\\\p212e05_panel_medium\", MyModelsEnum.p212e05_panel_medium, null, MyModelsEnum.p212e05_panel_medium_COL);\n\n            AddEntityModels(\"Models2\\\\Prefabs\\\\02_Shells\\\\01_CagePanels\\\\08_bariers\\\\p212a01_panel_small\", MyModelsEnum.p212a01_panel_small, null, MyModelsEnum.p212a01_panel_small_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\02_Shells\\\\01_CagePanels\\\\08_bariers\\\\p212b02_panel_small\", MyModelsEnum.p212b02_panel_small, null, MyModelsEnum.p212b02_panel_small_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\02_Shells\\\\01_CagePanels\\\\08_bariers\\\\p212c03_panel_small\", MyModelsEnum.p212c03_panel_small, null, MyModelsEnum.p212c03_panel_small_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\02_Shells\\\\01_CagePanels\\\\08_bariers\\\\p212d04_panel_small\", MyModelsEnum.p212d04_panel_small, null, MyModelsEnum.p212d04_panel_small_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\02_Shells\\\\01_CagePanels\\\\08_bariers\\\\p212e05_panel_small\", MyModelsEnum.p212e05_panel_small, null, MyModelsEnum.p212e05_panel_small_COL);\n\n            AddModel(new MyModel(\"Models2\\\\ObjectsFloating\\\\Box_matt_5m\", MyMeshDrawTechnique.MESH, MyModelsEnum.MysteriousBox_matt_5m));\n            AddModel(new MyModel(\"Models2\\\\ObjectsFloating\\\\Box_spec_5m\", MyMeshDrawTechnique.MESH, MyModelsEnum.MysteriousBox_spec_5m));\n            AddModel(new MyModel(\"Models2\\\\ObjectsFloating\\\\Box_mid_5m\", MyMeshDrawTechnique.MESH, MyModelsEnum.MysteriousBox_mid_5m));\n\n\n            AddEntityModels(\"Models2\\\\Prefabs\\\\03_Modules\\\\04_Industry\\\\01_Docks\\\\03\\\\p341_c01_closed_dock_v1\", MyModelsEnum.p341_c01_closed_dock_v1, MyModelsEnum.p341_c01_closed_dock_v1_LOD1, MyModelsEnum.p341_c01_closed_dock_v1_COL);\n\n            AddEntityModels(\"Models2\\\\Prefabs\\\\02_Shells\\\\01_CagePanels\\\\08_bariers\\\\p212b02_panel_large\", MyModelsEnum.p212b02_panel_large, MyModelsEnum.p212b02_panel_large_LOD1, MyModelsEnum.p212b02_panel_large_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\02_Shells\\\\01_CagePanels\\\\08_bariers\\\\p212c03_panel_large\", MyModelsEnum.p212c03_panel_large, MyModelsEnum.p212c03_panel_large_LOD1, MyModelsEnum.p212c03_panel_large_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\02_Shells\\\\01_CagePanels\\\\08_bariers\\\\p212d04_panel_large\", MyModelsEnum.p212d04_panel_large, MyModelsEnum.p212d04_panel_large_LOD1, MyModelsEnum.p212d04_panel_large_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\02_Shells\\\\01_CagePanels\\\\08_bariers\\\\p212e05_panel_large\", MyModelsEnum.p212e05_panel_large, MyModelsEnum.p212e05_panel_large_LOD1, MyModelsEnum.p212e05_panel_large_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\02_Shells\\\\01_CagePanels\\\\08_bariers\\\\p212f01_panel_large\", MyModelsEnum.p212f01_panel_large, null, MyModelsEnum.p212f01_panel_large_COL);\n\n            AddEntityModels(\"Models2\\\\Prefabs\\\\03_Modules\\\\09_Alien\\\\01_Alien_Gate\\\\p391_Alien_Gate\", MyModelsEnum.Alien_gate, MyModelsEnum.Alien_gate_LOD1, null);\n\n            AddEntityModels(\"Models2\\\\ObjectsStatic\\\\LargeShips\\\\mship\\\\mship_body\", MyModelsEnum.mship_body, MyModelsEnum.mship_body_LOD1, null);\n            AddEntityModels(\"Models2\\\\ObjectsStatic\\\\LargeShips\\\\mship\\\\mship_engine\", MyModelsEnum.mship_engine, MyModelsEnum.mship_engine_LOD1, null);\n            AddEntityModels(\"Models2\\\\ObjectsStatic\\\\LargeShips\\\\mship\\\\mship_shield_back_large_left\", MyModelsEnum.mship_shield_back_large_left, MyModelsEnum.mship_shield_back_large_left_LOD1, null);\n            AddEntityModels(\"Models2\\\\ObjectsStatic\\\\LargeShips\\\\mship\\\\mship_shield_back_large_right\", MyModelsEnum.mship_shield_back_large_right, MyModelsEnum.mship_shield_back_large_right_LOD1, null);\n            AddEntityModels(\"Models2\\\\ObjectsStatic\\\\LargeShips\\\\mship\\\\mship_shield_back_small_left\", MyModelsEnum.mship_shield_back_small_left, MyModelsEnum.mship_shield_back_small_left_LOD1, null);\n            AddEntityModels(\"Models2\\\\ObjectsStatic\\\\LargeShips\\\\mship\\\\mship_shield_back_small_right\", MyModelsEnum.mship_shield_back_small_right, MyModelsEnum.mship_shield_back_small_right_LOD1, null);\n            AddEntityModels(\"Models2\\\\ObjectsStatic\\\\LargeShips\\\\mship\\\\mship_shield_front_large_left\", MyModelsEnum.mship_shield_front_large_left, MyModelsEnum.mship_shield_front_large_left_LOD1, null);\n            AddEntityModels(\"Models2\\\\ObjectsStatic\\\\LargeShips\\\\mship\\\\mship_shield_front_large_right\", MyModelsEnum.mship_shield_front_large_right, MyModelsEnum.mship_shield_front_large_right_LOD1, null);\n            AddEntityModels(\"Models2\\\\ObjectsStatic\\\\LargeShips\\\\mship\\\\mship_shield_front_small_left\", MyModelsEnum.mship_shield_front_small_left, MyModelsEnum.mship_shield_front_small_left_LOD1, null);\n            AddEntityModels(\"Models2\\\\ObjectsStatic\\\\LargeShips\\\\mship\\\\mship_shield_front_small_right\", MyModelsEnum.mship_shield_front_small_right, MyModelsEnum.mship_shield_front_small_right_LOD1, null);\n            AddEntityModels(\"Models2\\\\ObjectsStatic\\\\LargeShips\\\\mship\\\\mship_shield_front_small02_left\", MyModelsEnum.mship_shield_front_small02_left, MyModelsEnum.mship_shield_front_small02_left_LOD1, null);\n            AddEntityModels(\"Models2\\\\ObjectsStatic\\\\LargeShips\\\\mship\\\\mship_shield_front_small02_right\", MyModelsEnum.mship_shield_front_small02_right, MyModelsEnum.mship_shield_front_small02_right_LOD1, null);\n\n            AddEntityModels(\"Models2\\\\Prefabs\\\\03_Modules\\\\08_MannedObjects\\\\01_LivingQuarters\\\\04\\\\p381_d03_hospital\", MyModelsEnum.p381_d03_hospital, MyModelsEnum.p381_d03_hospital_LOD1, MyModelsEnum.p381_d03_hospital_COL);            \n            AddEntityModels(\"Models2\\\\Prefabs\\\\03_Modules\\\\08_MannedObjects\\\\01_LivingQuarters\\\\04\\\\p381_d05_food_grow\", MyModelsEnum.p381_d05_food_grow, MyModelsEnum.p381_d05_food_grow_LOD1, null);            \n\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\04_Cables\\\\Cable_corner_25m\", MyModelsEnum.Cable_corner_25m, null, MyModelsEnum.Cable_corner_25m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\04_Cables\\\\Cable_S_45m\", MyModelsEnum.Cable_S_45m, null, MyModelsEnum.Cable_S_45m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\04_Cables\\\\Cable_straight_180\", MyModelsEnum.Cable_straight_180, null, MyModelsEnum.Cable_straight_180_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\04_Cables\\\\Cable_straight_45\", MyModelsEnum.Cable_straight_45, null, MyModelsEnum.Cable_straight_45_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\04_Cables\\\\Cable_straight_90\", MyModelsEnum.Cable_straight_90, null, MyModelsEnum.Cable_straight_90_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\04_Cables\\\\Connection_box\", MyModelsEnum.Connection_box, null, MyModelsEnum.Connection_box_COL);\n\n            AddModel(new MyModel(\"Models2\\\\ObjectsFloating\\\\cargo_box\", MyMeshDrawTechnique.MESH, MyModelsEnum.cargo_box_1));\n            AddModel(new MyModel(\"Models2\\\\ObjectsFloating\\\\cargo_box_2\", MyMeshDrawTechnique.MESH, MyModelsEnum.cargo_box_2));\n            AddModel(new MyModel(\"Models2\\\\ObjectsFloating\\\\cargo_box_3\", MyMeshDrawTechnique.MESH, MyModelsEnum.cargo_box_3));\n            AddModel(new MyModel(\"Models2\\\\ObjectsFloating\\\\cargo_box_4\", MyMeshDrawTechnique.MESH, MyModelsEnum.cargo_box_4));\n            AddModel(new MyModel(\"Models2\\\\ObjectsFloating\\\\cargo_box_5\", MyMeshDrawTechnique.MESH, MyModelsEnum.cargo_box_5));\n            AddModel(new MyModel(\"Models2\\\\ObjectsFloating\\\\cargo_box_6\", MyMeshDrawTechnique.MESH, MyModelsEnum.cargo_box_6));\n            AddModel(new MyModel(\"Models2\\\\ObjectsFloating\\\\cargo_box_7\", MyMeshDrawTechnique.MESH, MyModelsEnum.cargo_box_7));\n            AddModel(new MyModel(\"Models2\\\\ObjectsFloating\\\\cargo_box_8\", MyMeshDrawTechnique.MESH, MyModelsEnum.cargo_box_8));\n            AddModel(new MyModel(\"Models2\\\\ObjectsFloating\\\\cargo_box_9\", MyMeshDrawTechnique.MESH, MyModelsEnum.cargo_box_9));\n            AddModel(new MyModel(\"Models2\\\\ObjectsFloating\\\\cargo_box_10\", MyMeshDrawTechnique.MESH, MyModelsEnum.cargo_box_10));\n            AddModel(new MyModel(\"Models2\\\\ObjectsFloating\\\\cargo_box_small\", MyMeshDrawTechnique.MESH, MyModelsEnum.cargo_box_small));\n            AddEntityModels(\"Models2\\\\Prefabs\\\\05_Details\\\\04_Other\\\\541_security_hub\", MyModelsEnum.p541_security_hub, MyModelsEnum.p541_security_hub_LOD1, MyModelsEnum.p541_security_hub_COL);\n            AddModel(new MyModel(\"Models2\\\\ObjectsFloating\\\\Alarm\", MyMeshDrawTechnique.MESH, MyModelsEnum.Alarm));\n            AddModel(new MyModel(\"Models2\\\\ObjectsFloating\\\\Alarm_off\", MyMeshDrawTechnique.MESH, MyModelsEnum.Alarm_off));\n            AddEntityModels(\"Models2\\\\ObjectsFloating\\\\Bank_node\", MyModelsEnum.Bank_node, null, MyModelsEnum.Bank_node_COL);\n            //AddEntityModels(\"Models2\\\\ObjectsFloating\\\\Bank_node\", MyModelsEnum.Bank_node, null, null);\n            AddModel(new MyModel(\"Models2\\\\ObjectsFloating\\\\Cam\", MyMeshDrawTechnique.MESH, MyModelsEnum.Cam));\n\n            AddEntityModels(\"Models2\\\\Prefabs\\\\03_Modules\\\\06_Communications\\\\01_LongDistanceAntenna\\\\01\\\\p361_b01_long_distance_antenna_big\", MyModelsEnum.p361_b01_long_distance_antenna_big, MyModelsEnum.p361_b01_long_distance_antenna_big_LOD1, MyModelsEnum.p361_b01_long_distance_antenna_big_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\03_Modules\\\\06_Communications\\\\01_LongDistanceAntenna\\\\01\\\\p361_b01_long_distance_antenna_dish\", MyModelsEnum.p361_b01_long_distance_antenna_dish, MyModelsEnum.p361_b01_long_distance_antenna_dish_LOD1, MyModelsEnum.p361_b01_long_distance_antenna_dish_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\05_Details\\\\04_Other\\\\4th_reich_wreck\", MyModelsEnum.fourth_reich_wreck, MyModelsEnum.fourth_reich_wreck_LOD1, MyModelsEnum.fourth_reich_wreck_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\03_Modules\\\\04_Industry\\\\04_CargoStorage\\\\01\\\\p344_a03_container\", MyModelsEnum.p344_a03_container, MyModelsEnum.p344_a03_container_LOD1, MyModelsEnum.p344_a03_container_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\02_Shells\\\\03_Armor\\\\01\\\\p231b01_armor\", MyModelsEnum.p231b01_armor, MyModelsEnum.p231b01_armor_LOD1, MyModelsEnum.p231b01_armor_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\02_Shells\\\\03_Armor\\\\01\\\\p231b01_armor_corner\", MyModelsEnum.p231b01_armor_corner, MyModelsEnum.p231b01_armor_corner_LOD1, MyModelsEnum.p231b01_armor_corner_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\02_Shells\\\\03_Armor\\\\01\\\\p231b01_armor_edge\", MyModelsEnum.p231b01_armor_edge, MyModelsEnum.p231b01_armor_edge_LOD1, MyModelsEnum.p231b01_armor_edge_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\02_Shells\\\\03_Armor\\\\01\\\\p231b01_armor_hole\", MyModelsEnum.p231b01_armor_hole, MyModelsEnum.p231b01_armor_hole_LOD1, MyModelsEnum.p231b01_armor_hole_COL);\n\n            AddEntityModels(\"Models2\\\\Prefabs\\\\01_Beams\\\\05_Shelf\\\\p150a03_shelf_1\", MyModelsEnum.p150a03_shelf_1, MyModelsEnum.p150a03_shelf_1_LOD1, MyModelsEnum.p150a03_shelf_1_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\01_Beams\\\\05_Shelf\\\\p150a02_shelf_1X2\", MyModelsEnum.p150a02_shelf_1X2, MyModelsEnum.p150a02_shelf_1X2_LOD1, MyModelsEnum.p150a02_shelf_1X2_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\01_Beams\\\\05_Shelf\\\\p150a01_shelf_1X3\", MyModelsEnum.p150a01_shelf_1X3, MyModelsEnum.p150a01_shelf_1X3_LOD1, MyModelsEnum.p150a01_shelf_1X3_COL);\n\n            AddEntityModels(\"Models2\\\\Prefabs\\\\01_Beams\\\\03_Small\\\\04\\\\p130d02_d_straight_300m\", MyModelsEnum.p130d02_d_straight_300m, MyModelsEnum.p130d02_d_straight_300m_LOD1, MyModelsEnum.p130d02_d_straight_300m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\01_Beams\\\\03_Small\\\\10\\\\p130j01_j_straight_300m\", MyModelsEnum.p130j01_j_straight_300m, MyModelsEnum.p130j01_j_straight_300m_LOD1, MyModelsEnum.p130j01_j_straight_300m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\01_Beams\\\\02_Medium\\\\03\\\\p120c02_c_straight_400m\", MyModelsEnum.p120c02_c_straight_400m, MyModelsEnum.p120c02_c_straight_400m_LOD1, MyModelsEnum.p120c02_c_straight_400m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\01_Beams\\\\01_Large\\\\02\\\\p110b03_lattice_beam_straight_420m\", MyModelsEnum.p110b03_lattice_beam_straight_420m, MyModelsEnum.p110b03_lattice_beam_straight_420m_LOD1, MyModelsEnum.p110b03_lattice_beam_straight_420m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\01_Beams\\\\01_Large\\\\02\\\\p110b04_lattice_beam_straight_420m_with_panels\", MyModelsEnum.p110b04_lattice_beam_straight_420m_with_panels, MyModelsEnum.p110b04_lattice_beam_straight_420m_with_panels_LOD1, MyModelsEnum.p110b04_lattice_beam_straight_420m_with_panels_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\03_Modules\\\\06_Communications\\\\03_BigAntenna\\\\p363_a01_big_antenna_300m\", MyModelsEnum.p363_a01_big_antenna_300m, MyModelsEnum.p363_a01_big_antenna_300m_LOD1, MyModelsEnum.p363_a01_big_antenna_300m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\06_Custom\\\\01_Asteroid_Prefabs\\\\p611_asteroid_part_A\", MyModelsEnum.p611_asteroid_part_A, MyModelsEnum.p611_asteroid_part_A_LOD1, null);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\06_Custom\\\\01_Asteroid_Prefabs\\\\p611_asteroid_part_B\", MyModelsEnum.p611_asteroid_part_B, MyModelsEnum.p611_asteroid_part_B_LOD1, null);\n\n            //AddModel(new MyModel(\"Models2\\\\Prefabs\\\\05_Details\\\\04_Other\\\\541_ventilator_body_standalone\", MyMeshDrawTechnique.MESH, MyModelsEnum.p541_ventilator_body_standalone));\n            AddEntityModels(\"Models2\\\\Prefabs\\\\05_Details\\\\04_Other\\\\541_ventilator_body_standalone\", MyModelsEnum.p541_ventilator_body_standalone, MyModelsEnum.p541_ventilator_body_standalone_LOD1, MyModelsEnum.p541_ventilator_body_standalone_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\05_Details\\\\04_Other\\\\541_ventilator_propeller_standalone\", MyModelsEnum.p541_ventilator_propeller_standalone, MyModelsEnum.p541_ventilator_propeller_standalone_LOD1, MyModelsEnum.p541_ventilator_propeller_standalone_COL);            \n                            \n            AddEntityModels(\"Models2\\\\Prefabs\\\\03_Modules\\\\02_Supply\\\\01_PowerGeneration\\\\03\\\\p321c03_centrifuge\", MyModelsEnum.p321c03_centrifuge, MyModelsEnum.p321c03_centrifuge_LOD1, MyModelsEnum.p321c03_centrifuge_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\03_Modules\\\\02_Supply\\\\01_PowerGeneration\\\\03\\\\p321c04_box_generator\", MyModelsEnum.p321c04_box_generator, MyModelsEnum.p321c04_box_generator_LOD1, MyModelsEnum.p321c04_box_generator_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\03_Modules\\\\02_Supply\\\\01_PowerGeneration\\\\03\\\\p321c05_centrifuge_big\", MyModelsEnum.p321c05_centrifuge_big, MyModelsEnum.p321c05_centrifuge_big_LOD1, MyModelsEnum.p321c05_centrifuge_big_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\03_Modules\\\\06_Communications\\\\03_BigAntenna\\\\p363_a01_big_antenna_1500m\", MyModelsEnum.p363_a01_big_antenna_1500m, MyModelsEnum.p363_a01_big_antenna_1500m_LOD1, MyModelsEnum.p363_a01_big_antenna_1500m_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\03_Modules\\\\02_Supply\\\\01_PowerGeneration\\\\03\\\\\\\\p321c02_generator_wall_big\", MyModelsEnum.p321c02_generator_wall_big, MyModelsEnum.p321c02_generator_wall_big_LOD1, MyModelsEnum.p321c02_generator_wall_big_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\03_Modules\\\\02_Supply\\\\01_PowerGeneration\\\\03\\\\p321c02_inertia_generator_center_big\", MyModelsEnum.p321c02_inertia_generator_center_big, MyModelsEnum.p321c02_inertia_generator_center_big_LOD1, MyModelsEnum.p321c02_inertia_generator_center_big_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\03_Modules\\\\02_Supply\\\\01_PowerGeneration\\\\03\\\\p321c02_inertia_generator_center_vert\", MyModelsEnum.p321c02_inertia_generator_center_vert, MyModelsEnum.p321c02_inertia_generator_center_vert_LOD1, null);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\03_Modules\\\\02_Supply\\\\01_PowerGeneration\\\\03\\\\p321c03_centrifuge_centre\", MyModelsEnum.p321c03_centrifuge_centre, MyModelsEnum.p321c03_centrifuge_centre_LOD1, MyModelsEnum.p321c03_centrifuge_centre_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\03_Modules\\\\02_Supply\\\\01_PowerGeneration\\\\03\\\\p321c04_two_big_inertia\", MyModelsEnum.p321c04_two_big_inertia, MyModelsEnum.p321c04_two_big_inertia_LOD1, null);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\03_Modules\\\\02_Supply\\\\01_PowerGeneration\\\\03\\\\p321c05_centrifuge_centre_big\", MyModelsEnum.p321c05_centrifuge_centre_big, MyModelsEnum.p321c05_centrifuge_centre_big_LOD1, null);\n\n            AddEntityModels(\"Models2\\\\Prefabs\\\\03_Modules\\\\02_Supply\\\\01_PowerGeneration\\\\03\\\\p321c06_inertia_B_centre\", MyModelsEnum.p321c06_inertia_B_centre, MyModelsEnum.p321c06_inertia_B_centre_LOD1, MyModelsEnum.p321c06_inertia_B_centre_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\03_Modules\\\\02_Supply\\\\01_PowerGeneration\\\\03\\\\p321c06_inertia_generator_B\", MyModelsEnum.p321c06_inertia_generator_B, MyModelsEnum.p321c06_inertia_generator_B_LOD1, MyModelsEnum.p321c06_inertia_generator_B_COL);\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\04_Connections\\\\02_Pipe\\\\02\\\\01_Cooling_Device_Wall\\\\p4221_a01_cooling_device_ventilator_1\", MyMeshDrawTechnique.MESH, MyModelsEnum.p4221_a01_cooling_device_ventilator_1));\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\04_Connections\\\\02_Pipe\\\\02\\\\01_Cooling_Device_Wall\\\\p4221_a01_cooling_device_ventilator_2\", MyMeshDrawTechnique.MESH, MyModelsEnum.p4221_a01_cooling_device_ventilator_2));\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\02_Pipe\\\\02\\\\01_Cooling_Device_Wall\\\\p4221_a01_cooling_device_wall_340x400\", MyModelsEnum.p4221_a01_cooling_device_wall_340x400, MyModelsEnum.p4221_a01_cooling_device_wall_340x400_LOD1, MyModelsEnum.p4221_a01_cooling_device_wall_340x400_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\02_Pipe\\\\02\\\\02_Pipes_Connector\\\\p4222_a01_pipes_connector_center\", MyModelsEnum.p4222_a01_pipes_connector_center, MyModelsEnum.p4222_a01_pipes_connector_center_LOD1, null);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\02_Pipe\\\\02\\\\02_Pipes_Connector\\\\p4222_a01_pipes_connector\", MyModelsEnum.p4222_a01_pipes_connector, MyModelsEnum.p4222_a01_pipes_connector_LOD1, MyModelsEnum.p4222_a01_pipes_connector_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\04_Connections\\\\02_Pipe\\\\02\\\\03_Open_Pipe\\\\p4223_a01_open_pipe\", MyModelsEnum.p4223_a01_open_pipe, MyModelsEnum.p4223_a01_open_pipe_LOD1, MyModelsEnum.p4223_a01_open_pipe_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\03_Modules\\\\01_Flight\\\\01_LongTermThruster\\\\01\\\\p311b01_long_term_thruster\", MyModelsEnum.p311b01_long_term_thruster, MyModelsEnum.p311b01_long_term_thruster_LOD1, null);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\03_Modules\\\\02_Supply\\\\01_PowerGeneration\\\\03\\\\p321c07_generator_center\", MyModelsEnum.p321c07_generator_center, MyModelsEnum.p321c07_generator_center_LOD1, null);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\03_Modules\\\\02_Supply\\\\01_PowerGeneration\\\\03\\\\p321c07_generator_propeller_1\", MyModelsEnum.p321c07_generator_propeller_1, null, MyModelsEnum.p321c07_generator_propeller_1_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\03_Modules\\\\02_Supply\\\\01_PowerGeneration\\\\03\\\\p321c07_generator_propeller_2\", MyModelsEnum.p321c07_generator_propeller_2, null, MyModelsEnum.p321c07_generator_propeller_2_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\03_Modules\\\\02_Supply\\\\01_PowerGeneration\\\\03\\\\p321c07_generator\", MyModelsEnum.p321c07_generator, MyModelsEnum.p321c07_generator_LOD1, MyModelsEnum.p321c07_generator_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\02_Shells\\\\02_Chambers\\\\10\\\\p221k01_chamber_v2\", MyModelsEnum.p221k01_chamber_v2, MyModelsEnum.p221k01_chamber_v2_LOD1, null);\n            \n\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\05_Details\\\\08_Barrels\\\\p581_a01_barrel_biohazard\", MyMeshDrawTechnique.MESH, MyModelsEnum.p581_a01_barrel_biohazard));\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\05_Details\\\\08_Barrels\\\\p581_a01_barrel_biohazard_2\", MyMeshDrawTechnique.MESH, MyModelsEnum.p581_a01_barrel_biohazard_2));\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\05_Details\\\\08_Barrels\\\\p581_a01_nuke_barrel\", MyMeshDrawTechnique.MESH, MyModelsEnum.p581_a01_nuke_barrel));\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\05_Details\\\\08_Barrels\\\\p581_a01_red_barrel\", MyMeshDrawTechnique.MESH, MyModelsEnum.p581_a01_red_barrel));\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\05_Details\\\\08_Barrels\\\\p581_a01_simple_barrel\", MyMeshDrawTechnique.MESH, MyModelsEnum.p581_a01_simple_barrel));\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\05_Details\\\\08_Barrels\\\\p581_a01_simple_barrel_2\", MyMeshDrawTechnique.MESH, MyModelsEnum.p581_a01_simple_barrel_2));\n            AddModel(new MyModel(\"Models2\\\\ObjectsFloating\\\\cargo_box_11\", MyMeshDrawTechnique.MESH, MyModelsEnum.cargo_box_11));\n            AddModel(new MyModel(\"Models2\\\\ObjectsFloating\\\\cargo_box_12\", MyMeshDrawTechnique.MESH, MyModelsEnum.cargo_box_12));\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\05_Details\\\\08_Barrels\\\\Barrel_prop_A\", MyMeshDrawTechnique.MESH, MyModelsEnum.Barrel_prop_A));\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\05_Details\\\\08_Barrels\\\\Barrel_prop_B\", MyMeshDrawTechnique.MESH, MyModelsEnum.Barrel_prop_B));\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\05_Details\\\\08_Barrels\\\\Barrel_prop_C\", MyMeshDrawTechnique.MESH, MyModelsEnum.Barrel_prop_C));\n            //AddModel(new MyModel(\"Models2\\\\Prefabs\\\\05_Details\\\\08_Barrels\\\\Barrel_prop_D\", MyMeshDrawTechnique.MESH, MyModelsEnum.Barrel_prop_D));\n            //AddModel(new MyModel(\"Models2\\\\Prefabs\\\\05_Details\\\\08_Barrels\\\\Barrel_prop_E\", MyMeshDrawTechnique.MESH, MyModelsEnum.Barrel_prop_E));\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\05_Details\\\\08_Barrels\\\\p581_a01_universal_barrel_COL\", MyMeshDrawTechnique.MESH, MyModelsEnum.p581_a01_universal_barrel_COL));\n            AddModel(new MyModel(\"Models2\\\\ObjectsFloating\\\\CargoBox_prop_A\", MyMeshDrawTechnique.MESH, MyModelsEnum.CargoBox_prop_A));\n            AddModel(new MyModel(\"Models2\\\\ObjectsFloating\\\\CargoBox_prop_B\", MyMeshDrawTechnique.MESH, MyModelsEnum.CargoBox_prop_B));\n            AddModel(new MyModel(\"Models2\\\\ObjectsFloating\\\\CargoBox_prop_C\", MyMeshDrawTechnique.MESH, MyModelsEnum.CargoBox_prop_C));\n            AddEntityModels(\"Models2\\\\Prefabs\\\\05_Details\\\\09_Ammo\\\\CannonBall_Capsule_1\", MyModelsEnum.CannonBall_Capsule_1, null, MyModelsEnum.CannonBall_Capsule_1_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\05_Details\\\\09_Ammo\\\\Gattling_ammo_belt\", MyModelsEnum.gattling_ammo_belt, null, MyModelsEnum.gattling_ammo_belt_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\05_Details\\\\09_Ammo\\\\Missile_pack01\", MyModelsEnum.Missile_pack01, null, MyModelsEnum.Missile_pack01_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\05_Details\\\\09_Ammo\\\\Missile_pack02\", MyModelsEnum.Missile_pack02, null, MyModelsEnum.Missile_pack02_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\05_Details\\\\09_Ammo\\\\Missile_plazma01\", MyModelsEnum.Missile_plazma01, null, MyModelsEnum.Missile_plazma01_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\05_Details\\\\09_Ammo\\\\Missile_stack_biochem01\", MyModelsEnum.Missile_stack_biochem01, null, MyModelsEnum.Missile_stack_biochem01_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\05_Details\\\\08_Barrels\\\\p581_a01_o2_barrel\", MyModelsEnum.p581_a01_o2_barrel, null, MyModelsEnum.p581_a01_o2_barrel_COL);\n\n            //AddModel(new MyModel(\"Models2\\\\Prefabs\\\\05_Details\\\\09_Ammo\\\\Nuclear_Warhead_closed\", MyMeshDrawTechnique.MESH, MyModelsEnum.Nuclear_Warhead_closed));\n            AddEntityModels(\"Models2\\\\Prefabs\\\\05_Details\\\\09_Ammo\\\\Nuclear_Warhead_closed\", MyModelsEnum.Nuclear_Warhead_closed, MyModelsEnum.Nuclear_Warhead_closed_LOD1, MyModelsEnum.Nuclear_Warhead_closed_COL);\n            //AddModel(new MyModel(\"Models2\\\\Prefabs\\\\05_Details\\\\09_Ammo\\\\Nuclear_Warhead_open\", MyMeshDrawTechnique.MESH, MyModelsEnum.Nuclear_Warhead_open));\n            AddEntityModels(\"Models2\\\\Prefabs\\\\05_Details\\\\09_Ammo\\\\Nuclear_Warhead_open\", MyModelsEnum.Nuclear_Warhead_open, MyModelsEnum.Nuclear_Warhead_open_LOD1, MyModelsEnum.Nuclear_Warhead_open_COL);\n            AddModel(new MyModel(\"Models2\\\\ObjectsFloating\\\\CargoBox_prop_D\", MyMeshDrawTechnique.MESH, MyModelsEnum.CargoBox_prop_D));\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\05_Details\\\\08_Barrels\\\\p581_a01_nuke_barrel_1\", MyMeshDrawTechnique.MESH, MyModelsEnum.p581_a01_nuke_barrel_1));\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\05_Details\\\\08_Barrels\\\\p581_a01_simple_barrel_3\", MyMeshDrawTechnique.MESH, MyModelsEnum.p581_a01_simple_barrel_3));\n            AddEntityModels(\"Models2\\\\Prefabs\\\\02_Shells\\\\02_Chambers\\\\11\\\\p221L01_chamber_v1\", MyModelsEnum.p221L01_chamber_v1, MyModelsEnum.p221L01_chamber_v1_LOD1, MyModelsEnum.p221L01_chamber_v1_COL);\n\n            AddEntityModels(\"Models2\\\\Prefabs\\\\02_Shells\\\\02_Chambers\\\\12\\\\p221M01_chamber_bottom_v1\", MyModelsEnum.p221m01_chamber_bottom_v1, MyModelsEnum.p221m01_chamber_bottom_v1_LOD1, MyModelsEnum.p221m01_chamber_bottom_v1_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\02_Shells\\\\02_Chambers\\\\12\\\\p221M01_chamber_center_v1\", MyModelsEnum.p221m01_chamber_center_v1, MyModelsEnum.p221m01_chamber_center_v1_LOD1, MyModelsEnum.p221m01_chamber_center_v1_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\02_Shells\\\\02_Chambers\\\\12\\\\p221M01_chamber_top_v1\", MyModelsEnum.p221m01_chamber_top_v1, MyModelsEnum.p221m01_chamber_top_v1_LOD1, MyModelsEnum.p221m01_chamber_top_v1_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\03_Modules\\\\02_Supply\\\\01_PowerGeneration\\\\04\\\\p321e01_solar_panel\", MyModelsEnum.p321e01_solar_panel, MyModelsEnum.p321e01_solar_panel_LOD1, MyModelsEnum.p321e01_solar_panel_COL);\n            AddModel(new MyModel(\"Models2\\\\Prefabs\\\\01_Beams\\\\01_Large\\\\01\\\\p110a06_solid_beam_straight_420m\", MyMeshDrawTechnique.MESH, MyModelsEnum.p110a06_solid_beam_straight_420m));\n\n            AddEntityModels(\"Models2\\\\Prefabs\\\\03_Modules\\\\01_Flight\\\\01_LongTermThruster\\\\02\\\\p311b01_cut_thruster\", MyModelsEnum.p311b01_cut_thruster, MyModelsEnum.p311b01_cut_thruster_LOD1, MyModelsEnum.p311b01_cut_thruster_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\03_Modules\\\\01_Flight\\\\02_ShortTermThruster\\\\02\\\\p312b01_cut_thruster_lateral\", MyModelsEnum.p312b01_cut_thruster_lateral, MyModelsEnum.p312b01_cut_thruster_lateral_LOD1, MyModelsEnum.p312b01_cut_thruster_lateral_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\03_Modules\\\\01_Flight\\\\02_ShortTermThruster\\\\02\\\\p312b02_cut_thruster_latitude\", MyModelsEnum.p312b02_cut_thruster_latitude, MyModelsEnum.p312b02_cut_thruster_latitude_LOD1, MyModelsEnum.p312b02_cut_thruster_latitude_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\05_Details\\\\04_Other\\\\alien_detector_unit\", MyModelsEnum.alien_detector_unit, null, MyModelsEnum.alien_detector_unit_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\03_Modules\\\\08_MannedObjects\\\\01_LivingQuarters\\\\03\\\\p381_c01_building5\", MyModelsEnum.p381_c01_building5, MyModelsEnum.p381_c01_building5_LOD1, MyModelsEnum.p381_c01_building5_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\03_Modules\\\\08_MannedObjects\\\\01_LivingQuarters\\\\03\\\\p381_c01_building6\", MyModelsEnum.p381_c01_building6, MyModelsEnum.p381_c01_building6_LOD1, MyModelsEnum.p381_c01_building6_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\03_Modules\\\\08_MannedObjects\\\\01_LivingQuarters\\\\03\\\\p381_c01_building7\", MyModelsEnum.p381_c01_building7, MyModelsEnum.p381_c01_building7_LOD1, MyModelsEnum.p381_c01_building7_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\02_Shells\\\\02_Chambers\\\\13\\\\p221n01_chamber_v1\", MyModelsEnum.p221n01_chamber_v1, MyModelsEnum.p221n01_chamber_v1_LOD1, MyModelsEnum.p221n01_chamber_v1_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\05_Details\\\\03_Signs\\\\531_d_medic_cross\", MyModelsEnum.p531_d_medic_cross, null, MyModelsEnum.p531_d_medic_cross_COL);\n\n            AddEntityModels(\"Models2\\\\Prefabs\\\\05_Details\\\\04_Other\\\\541_screen_A\", MyModelsEnum.p541_screen_A, MyModelsEnum.p541_screen_A_LOD1, MyModelsEnum.p541_screen_A_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\05_Details\\\\04_Other\\\\541_screen_B\", MyModelsEnum.p541_screen_B, MyModelsEnum.p541_screen_B_LOD1, MyModelsEnum.p541_screen_B_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\05_Details\\\\04_Other\\\\541_terminal_A\", MyModelsEnum.p541_terminal_A, MyModelsEnum.p541_terminal_A_LOD1, MyModelsEnum.p541_terminal_A_COL);\n\n            AddEntityModels(\"Models2\\\\Prefabs\\\\05_Details\\\\04_Other\\\\alien_artefact\", MyModelsEnum.alien_artefact, null, MyModelsEnum.alien_artefact_COL);\n\n            AddEntityModels(\"Models2\\\\Prefabs\\\\05_Details\\\\04_Other\\\\bomb\", MyModelsEnum.bomb, null, MyModelsEnum.bomb_COL);\n\n            AddEntityModels(\"Models2\\\\Prefabs\\\\02_Shells\\\\02_Chambers\\\\14\\\\rail_gun\", MyModelsEnum.rail_gun, MyModelsEnum.rail_gun_LOD1, MyModelsEnum.rail_gun_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\03_Modules\\\\04_Industry\\\\08_Recycle\\\\01\\\\p345_a01_recycle_sphere\", MyModelsEnum.p345_a01_recycle_sphere, MyModelsEnum.p345_a01_recycle_sphere_LOD1, MyModelsEnum.p345_a01_recycle_sphere_COL);\n\n            AddEntityModels(\"Models2\\\\Prefabs\\\\02_Shells\\\\02_Chambers\\\\15\\\\prison\", MyModelsEnum.prison, null, MyModelsEnum.prison_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\05_Details\\\\04_Other\\\\vendor\", MyModelsEnum.vendor, null, MyModelsEnum.vendor_COL);\n\n            AddEntityModels(\"Models2\\\\Prefabs\\\\05_Details\\\\04_Other\\\\hangar_screen\", MyModelsEnum.hangar_screen, null, MyModelsEnum.hangar_screen_COL);            \n\n            AddEntityModels(\"Models2\\\\Prefabs\\\\ScannerPlane\", MyModelsEnum.ScannerPlane, null, null);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\ScannerRays\", MyModelsEnum.ScannerRays, null, null);\n\n            AddEntityModels(\"Models2\\\\Prefabs\\\\05_Details\\\\01_Billboards\\\\511_a17_billboard_portrait_1\", MyModelsEnum.p511_a17_billboard_portrait_1, null, MyModelsEnum.p511_a17_billboard_portrait_1_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\05_Details\\\\01_Billboards\\\\511_a17_billboard_portrait_2\", MyModelsEnum.p511_a17_billboard_portrait_2, null, null);\n\n            AddEntityModels(\"Models2\\\\Prefabs\\\\05_Details\\\\01_Billboards\\\\511_a18_billboard\", MyModelsEnum.p511_a18_billboard, MyModelsEnum.p511_a18_billboard_LOD1, MyModelsEnum.p511_a18_billboard_COL);\n            AddEntityModels(\"Models2\\\\Prefabs\\\\05_Details\\\\01_Billboards\\\\511_a19_billboard\", MyModelsEnum.p511_a19_billboard, MyModelsEnum.p511_a19_billboard_LOD1, MyModelsEnum.p511_a19_billboard_COL);\n\n\n            //  Check if we didn't forget to load some model\n            foreach (int i in Enum.GetValues(typeof(MyModelsEnum)))\n            {\n                MyModel myModel = m_models[i];\n                MyModelsEnum modelEnum = (MyModelsEnum)i;\n                MyMwcLog.WriteLine(\"Checking model enum id [\" + i + \"] \" + modelEnum, LoggingOptions.ENUM_CHECKING);   //  Here we show model enum as a string. It won't work after obfuscation, but we need it only in debug (before obfuscation), so it's OK.\n                MyCommonDebugUtils.AssertRelease(myModel != null);\n            }\n\n            //FindMissingAndUnusedModels();\n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyModels.InitModels - END\");\n        }\n\n        /// <summary>\n        /// Used to find models that does not have LOD1 or COL set, and models that can have those models set\n        /// </summary>\n        private static void FindMissingAndUnusedModels()\n        {\n            string contentDirectory = @\"C:\\KeenSWH\\MinerWars\\Sources\\MinerWars\\Content\";\n\n            using (StreamWriter missing = new StreamWriter(File.OpenWrite(\"models-missing.csv\")), notused = new StreamWriter(File.OpenWrite(\"models-notused.csv\")))\n            {\n                missing.WriteLine(\"Model,Triangles,Volume,Missing\");\n                notused.WriteLine(\"Model,NotUsed\");\n                foreach (int i in Enum.GetValues(typeof(MyModelsEnum)))\n                {\n                    MyModel myModel = m_models[i];\n                    string firstAssetName = NormalizeAssetName(myModel.AssetName);\n\n                    if (!firstAssetName.EndsWith(\"LOD0\", StringComparison.InvariantCultureIgnoreCase))\n                        continue;\n\n                    bool hasLod1 = false;\n                    bool hasCol = false;\n                    foreach (int j in Enum.GetValues(typeof(MyModelsEnum)))\n                    {\n                        if (i == j)\n                            continue;\n\n                        MyModel secondModel = m_models[j];\n                        string assetName = NormalizeAssetName(secondModel.AssetName);\n\n                        if (RemoveModifier(firstAssetName) != RemoveModifier(assetName))\n                        {\n                            continue;\n                        }\n\n                        if (secondModel.AssetName.EndsWith(\"COL\", StringComparison.InvariantCultureIgnoreCase))\n                            hasCol = true;\n                        if (secondModel.AssetName.EndsWith(\"LOD1\", StringComparison.InvariantCultureIgnoreCase))\n                            hasLod1 = true;\n\n                        if (hasCol && hasLod1)\n                            break;\n                    }\n\n                    if (!hasLod1)\n                    {\n                        bool lod1Exists = File.Exists(Path.Combine(contentDirectory, RemoveModifier(myModel.AssetName) + \"_LOD1.fbx\"));\n                        if (lod1Exists)\n                        {\n                            notused.WriteLine(\"{0},LOD1\", myModel.AssetName);\n                        }\n                        myModel.LoadData();\n                        missing.WriteLine(\"{0},{1},{2},LOD1\", myModel.AssetName, myModel.GetTrianglesCount(), myModel.BoundingBox.Volume());\n                        myModel.UnloadData();\n                    }\n                    if (!hasCol)\n                    {\n                        bool colExists = File.Exists(Path.Combine(contentDirectory, RemoveModifier(myModel.AssetName) + \"_COL.fbx\"));\n                        if (colExists)\n                        {\n                            notused.WriteLine(\"{0},COL\", myModel.AssetName);\n                        }\n                        myModel.LoadData();\n                        missing.WriteLine(\"{0},{1},{2},COL\", myModel.AssetName, myModel.GetTrianglesCount(), myModel.BoundingBox.Volume());\n                        myModel.UnloadData();\n                    }\n                }\n                missing.Flush();\n                missing.Close();\n                notused.Flush();\n                notused.Close();\n            }\n        }\n\n        private static string NormalizeAssetName(string assetName)\n        {\n            if (!assetName.EndsWith(\"LOD1\", StringComparison.InvariantCultureIgnoreCase) && !assetName.EndsWith(\"COL\", StringComparison.InvariantCultureIgnoreCase))\n            {\n                if (!assetName.EndsWith(\"LOD0\", StringComparison.InvariantCultureIgnoreCase))\n                {\n                    assetName = assetName + \"_LOD0\";\n                }\n            }\n            return assetName;\n        }\n\n        private static string RemoveModifier(string assetName)\n        {\n            return assetName.Replace(\"_LOD0\", \"\").Replace(\"_LOD1\", \"\").Replace(\"_COL\", \"\");\n        }\n\n\n        static void AddModel(MyModel model)\n        {\n            //  If we already have an object in the array with this model id, then it means we are trying to load it twice (duplicity)\n            //  The idea is: every model is instantiated only once, and is also only once in m_models. No duplicities.\n            MyCommonDebugUtils.AssertRelease(m_models[(int)model.ModelEnum] == null);\n\n            m_models[(int)model.ModelEnum] = model;\n            m_modelsByAssertName.Add(model.AssetName, model);\n        }\n\n        static void AddEntityModels(string assetName, MyModelsEnum lod0, MyModelsEnum? lod1, MyModelsEnum? collision, bool keepInMemory = false)\n        {\n            AddModel(new MyModel(assetName, MyMeshDrawTechnique.MESH, lod0, keepInMemory));\n\n            if (lod1.HasValue)\n                AddModel(new MyModel(assetName + \"_LOD1\", MyMeshDrawTechnique.MESH, lod1.Value, keepInMemory));\n            if (collision.HasValue)\n                AddModel(new MyModel(assetName + \"_COL\", MyMeshDrawTechnique.MESH, collision.Value, keepInMemory));\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/MyOctree.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWarsMath.Graphics.PackedVector;\nusing SysUtils.Utils;\n\nnamespace MinerWars.AppCode.Game\n{\n    class MyOctree\n    {\n        // 73 nodes: 0 = root, 1+(0..7) = first level, 9+(0..63) = leaves\n        const int NODE_COUNT = 1 + 8 + 8 * 8;\n\n        byte[] m_childEmpty = new byte[1 + 8];  // default 0: all full\n        short[] m_firstTriangleIndex = new short[NODE_COUNT];\n        byte[] m_triangleCount = new byte[NODE_COUNT];  // default 0\n        Vector3 m_bbMin, m_bbInvScale;\n\n        /// <summary>\n        /// Initializes a new instance of the MyOctree class.\n        /// </summary>\n        /// <param name=\"triangles\">Input triangle array</param>\n        /// <param name=\"sortedTriangles\">Output triangle array (can be same as input triangle array)</param>\n        public MyOctree()\n        {\n        }\n\n        public void Init(ref MyVoxelVertex[] vertices, ref int vertexCount, ref MyVoxelTriangle[] triangles, ref int triangleCount, out MyVoxelTriangle[] sortedTriangles)\n        {\n            for (int i = 0; i < NODE_COUNT; i++)\n            {\n                m_firstTriangleIndex[i] = 0;\n                m_triangleCount[i] = 0;\n            }\n            for (int i = 0; i < 9; i++)\n            {\n                m_childEmpty[i] = 0;\n            }\n\n            // compute bounding box\n            {\n                BoundingBox bbox = BoundingBoxHelper.InitialBox;\n                for (int i = 0; i < vertexCount; i++)\n                    BoundingBoxHelper.AddPoint(vertices[i].Position, ref bbox);\n                m_bbMin = bbox.Min;\n                var scale = bbox.Max - bbox.Min;\n\n                m_bbInvScale = Vector3.One;  // minimum bounding box size = 1 (in each dimension)\n                if (scale.X > 1) m_bbInvScale.X = 1 / scale.X;\n                if (scale.Y > 1) m_bbInvScale.Y = 1 / scale.Y;\n                if (scale.Z > 1) m_bbInvScale.Z = 1 / scale.Z;\n            }\n\n            // compute triangle counts\n            for (int i = 0; i < triangleCount; i++)\n            {\n                var t = triangles[i];\n                BoundingBox bbox = BoundingBoxHelper.InitialBox;\n                BoundingBoxHelper.AddTriangle(ref bbox, vertices[t.VertexIndex0].Position, vertices[t.VertexIndex1].Position, vertices[t.VertexIndex2].Position);\n                short count = m_triangleCount[GetNode(ref bbox)]++;\n            }\n\n            // accumulate triangle counts\n            m_firstTriangleIndex[0] = m_triangleCount[0];\n            for (int i = 1; i < NODE_COUNT; i++)\n            {\n                m_firstTriangleIndex[i] = (short)(m_firstTriangleIndex[i - 1] + m_triangleCount[i]);\n            }\n            // m_firstTriangleIndex[i] now contains the first index AFTER where the node's triangles will be, e.g.:\n            //   m_triangleCount:      2 0 4 3\n            //   m_firstTriangleIndex: 2 2 6 9\n\n            // bucketsort triangles into the output array according to the nodes they're in\n            var newSortedTriangles = new MyVoxelTriangle[triangleCount];\n            for (int i = 0; i < triangleCount; i++)\n            {\n                var t = triangles[i];\n                BoundingBox bbox = BoundingBoxHelper.InitialBox;\n                BoundingBoxHelper.AddTriangle(ref bbox, vertices[t.VertexIndex0].Position, vertices[t.VertexIndex1].Position, vertices[t.VertexIndex2].Position);\n                newSortedTriangles[--m_firstTriangleIndex[GetNode(ref bbox)]] = t;\n            }\n            sortedTriangles = newSortedTriangles;  // \"out sortedTriangles\" may be the same as \"triangles\"\n\n            // find empty children\n            for (int i = NODE_COUNT - 1; i > 0; i--)\n                if (m_triangleCount[i] == 0 && (i > 8 || m_childEmpty[i] == 0xFF)) // no triangles AND (no children OR all children empty)\n                    m_childEmpty[i - 1 >> 3] |= (byte)(1 << (i - 1 & 7));\n        }\n\n        public void BoxQuery(ref BoundingBox bbox, List<int> triangleIndices)\n        {\n            BoundingBox transformedBox = new BoundingBox((bbox.Min - m_bbMin) * m_bbInvScale, (bbox.Max - m_bbMin) * m_bbInvScale);\n\n            bool result;\n\n            box[0].Intersects(ref transformedBox, out result);\n\n            if (result)\n            {\n                for (int k = 0; k < m_triangleCount[0]; k++)\n                    triangleIndices.Add(m_firstTriangleIndex[0] + k);\n\n                // children of root\n                for (int i = 1, mask = 1; i < 9; i++, mask <<= 1) if ((m_childEmpty[0] & mask) == 0)\n                {\n                    // first level\n                    box[i].Intersects(ref transformedBox, out result);\n                    if (result)\n                    {\n                        for (int k = 0; k < m_triangleCount[i]; k++)\n                            triangleIndices.Add(m_firstTriangleIndex[i] + k);\n\n                        // children of first level\n                        for (int j = i * 8 + 1, mask2 = 1; j < i * 8 + 9; j++, mask2 <<= 1) if ((m_childEmpty[i] & mask2) == 0)\n                        {\n                            // second level\n                            box[j].Intersects(ref transformedBox, out result);\n                            if (result)\n                            {\n                                for (int k = 0; k < m_triangleCount[j]; k++)\n                                    triangleIndices.Add(m_firstTriangleIndex[j] + k);\n                            }\n                        }\n                    }\n                }\n            }\n        }\n\n        public void GetIntersectionWithLine(ref Ray ray, List<int> triangleIndices)\n        {\n            Ray transformedRay = new Ray((ray.Position - m_bbMin) * m_bbInvScale, ray.Direction * m_bbInvScale);\n\n            float? result;\n\n            // root\n            box[0].Intersects(ref transformedRay, out result);\n            if (result.HasValue)\n            {\n                for (int k = 0; k < m_triangleCount[0]; k++)\n                    triangleIndices.Add(m_firstTriangleIndex[0] + k);\n\n                // children of root\n                for (int i = 1, mask = 1; i < 9; i++, mask <<= 1) if ((m_childEmpty[0] & mask) == 0)\n                {\n                    // first level\n                    box[i].Intersects(ref transformedRay, out result);\n                    if (result.HasValue)\n                    {\n                        for (int k = 0; k < m_triangleCount[i]; k++)\n                            triangleIndices.Add(m_firstTriangleIndex[i] + k);\n\n                        // children of first level\n                        for (int j = i * 8 + 1, mask2 = 1; j < i * 8 + 9; j++, mask2 <<= 1) if ((m_childEmpty[i] & mask2) == 0)\n                        {\n                            // second level\n                            box[j].Intersects(ref transformedRay, out result);\n                            if (result.HasValue)\n                            {\n                                for (int k = 0; k < m_triangleCount[j]; k++)\n                                    triangleIndices.Add(m_firstTriangleIndex[j] + k);\n                            }\n                        }\n                    }\n                }\n            }\n        }\n\n        #region Precomputed bounding boxes of nodes\n\n        const float CHILD_SIZE = 0.65f;\n\n        static readonly BoundingBox[] box;  // precomputed boxes for each node (as if it was in [0,1])\n        static MyOctree()\n        {\n            box = new BoundingBox[NODE_COUNT];\n\n            int node = 0;\n            for (int i = 0; i < 1; i++, node++)\n            {\n                box[node].Min = Vector3.Zero;\n                box[node].Max = Vector3.One;\n            }\n            for (int i = 0; i < 8; i++, node++)\n            {\n                if ((i & 4) == 0) { box[node].Min.Z = 0; box[node].Max.Z = CHILD_SIZE; }\n                else { box[node].Min.Z = 1 - CHILD_SIZE; box[node].Max.Z = 1; }\n                if ((i & 2) == 0) { box[node].Min.Y = 0; box[node].Max.Y = CHILD_SIZE; }\n                else { box[node].Min.Y = 1 - CHILD_SIZE; box[node].Max.Y = 1; }\n                if ((i & 1) == 0) { box[node].Min.X = 0; box[node].Max.X = CHILD_SIZE; }\n                else { box[node].Min.X = 1 - CHILD_SIZE; box[node].Max.X = 1; }\n            }\n            for (int i = 0; i < 8 * 8; i++, node++)\n            {\n                if ((i & 32) == 0) { box[node].Min.Z = 0; box[node].Max.Z = CHILD_SIZE; }\n                else { box[node].Min.Z = 1 - CHILD_SIZE; box[node].Max.Z = 1; }\n                if ((i & 16) == 0) { box[node].Min.Y = 0; box[node].Max.Y = CHILD_SIZE; }\n                else { box[node].Min.Y = 1 - CHILD_SIZE; box[node].Max.Y = 1; }\n                if ((i & 8) == 0) { box[node].Min.X = 0; box[node].Max.X = CHILD_SIZE; }\n                else { box[node].Min.X = 1 - CHILD_SIZE; box[node].Max.X = 1; }\n                if ((i & 4) == 0) { box[node].Max.Z = box[node].Min.Z + (box[node].Max.Z - box[node].Min.Z) * CHILD_SIZE; }\n                else { box[node].Min.Z = box[node].Min.Z + (box[node].Max.Z - box[node].Min.Z) * (1 - CHILD_SIZE); }\n                if ((i & 2) == 0) { box[node].Max.Y = box[node].Min.Y + (box[node].Max.Y - box[node].Min.Y) * CHILD_SIZE; }\n                else { box[node].Min.Y = box[node].Min.Y + (box[node].Max.Y - box[node].Min.Y) * (1 - CHILD_SIZE); }\n                if ((i & 1) == 0) { box[node].Max.X = box[node].Min.X + (box[node].Max.X - box[node].Min.X) * CHILD_SIZE; }\n                else { box[node].Min.X = box[node].Min.X + (box[node].Max.X - box[node].Min.X) * (1 - CHILD_SIZE); }\n            }\n        }\n\n        #endregion\n\n        #region Node corresponding to a bounding box\n\n        /// <summary>\n        /// Get the node id this triangle belongs to.\n        /// </summary>\n        private int GetNode(ref BoundingBox triangleAabb)\n        {\n            BoundingBox transformed = new BoundingBox((triangleAabb.Min - m_bbMin) * m_bbInvScale, (triangleAabb.Max - m_bbMin) * m_bbInvScale);\n\n            int node = 0;\n            for (int level = 0; level < 2; level++)\n            {\n                int next = node * 8 + 1;  // node in lower level with x=y=z=0\n\n                if (transformed.Min.X > box[next + 1].Min.X) next += 1;  // x++\n                else if (transformed.Max.X >= box[next].Max.X) break;  // overlaps both x children\n\n                if (transformed.Min.Y > box[next + 2].Min.Y) next += 2;  // y++\n                else if (transformed.Max.Y >= box[next].Max.Y) break;  // overlaps both y children\n\n                if (transformed.Min.Z > box[next + 4].Min.Z) next += 4;  // z++\n                else if (transformed.Max.Z >= box[next].Max.Z) break;  // overlaps both z children\n\n                node = next;\n            }\n            return node;\n        }\n\n        #endregion\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Networking/MyClientServer.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Net;\nusing System.Text;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Localization;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils;\n\nnamespace MinerWars.AppCode.Game.World\n{\n    static class MyClientServer\n    {\n        static MyClientServer()\n        {\n            ResetUser();\n        }\n\n        // TODO: Find better place and move LoggedPlayer there\n        // Local player (if logged in)\n        private static MyPlayerLocal m_loggedPlayer;\n        public static MyPlayerLocal LoggedPlayer\n        {\n            get { return m_loggedPlayer; }\n            set\n            {\n                bool playerChanged = m_loggedPlayer != value;\n                m_loggedPlayer = value;\n                if (playerChanged && OnLoggedPlayerChanged != null)\n                {\n                    OnLoggedPlayerChanged(null, EventArgs.Empty);\n                }\n            }\n        }\n\n        public static void Logout()\n        {\n            ResetUser();\n        }\n\n        private static void ResetUser()\n        {\n            if (MinerWars.AppCode.Networking.MySteam.IsActive)\n            {\n                LoggedPlayer = null;\n            }\n            else\n            {\n                LoggedPlayer = MyPlayerLocal.CreateOfflineDemoUser();\n            }\n        }\n\n        public static event EventHandler OnLoggedPlayerChanged;\n\n        public static bool IsMwAccount\n        {\n            get\n            {\n                return LoggedPlayer != null && LoggedPlayer.GetUserId() > 0 && LoggedPlayer.GetUserId() != MyPlayerLocal.OFFLINE_MODE_USERID;\n            }\n        }\n\n        public static bool HasFullGame\n        {\n            get\n            {\n                return LoggedPlayer != null && !LoggedPlayer.IsDemoUser();\n            }\n        }\n\n        public static bool MW25DEnabled\n        {\n            get\n            {\n                return LoggedPlayer != null && LoggedPlayer.GetCanAccess25d();\n            }\n        }\n\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Networking/MyPlayerBase.cs",
    "content": "﻿using System;\nusing System.Text;\nusing MinerWars.AppCode.Game.Entities;\n\nnamespace MinerWars.AppCode.Game.World\n{\n    abstract class MyPlayerBase\n    {\n        StringBuilder m_displayName;\n        int m_userId;\n\n        public MyPlayerStatistics Statistics;\n\n        private MyPlayerBase() { }\n\n        protected MyPlayerBase(StringBuilder displayName, int userId)\n        {\n            m_displayName = displayName;\n            m_userId = userId;\n        }\n\n        public StringBuilder GetDisplayName()\n        {\n            return m_displayName;\n        }\n\n        public void SetDisplayName(StringBuilder displayName)\n        {\n            m_displayName = displayName;\n        }\n\n        public void SetMultiplayerUserId(int userId)\n        {\n            m_userId = userId;\n        }\n\n        public int GetUserId()\n        {\n            return m_userId;\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Networking/MyPlayerLocal.cs",
    "content": "﻿using System.Text;\n\nnamespace MinerWars.AppCode.Game.World\n{\n    class MyPlayerLocal : MyPlayerBase\n    {\n        readonly bool m_canAccessDemo;\n        readonly bool m_canSave;\n        readonly bool m_canAccessEditorForStory;\n        readonly bool m_canAccessEditorForMMO;\n        readonly bool m_canUseCheats;\n        readonly bool m_canAccessMMO;\n        readonly bool m_canAccess25d;\n        bool m_hasAnyCheckpoints; // Changed when player saves the game\n\n        // Remember to use with WCF for subsequent logins\n        readonly StringBuilder m_userName;\n        readonly StringBuilder m_passwordHash;\n\n        public bool PlayingMMO;\n\n        public const int OFFLINE_MODE_USERID = 1;\n\n        public Networking.SectorService.MyAdditionalUserInfo AdditionalInfo { get; set; }\n\n        public MyPlayerLocal(StringBuilder displayName, int userId, bool canAccessDemo, bool canSave, bool canAccessEditorForStory, bool canAccessEditorForMMO, bool hasAnyCheckpoints, bool canUseCheats, bool canAccessMMO, StringBuilder userName, StringBuilder passwordHash, bool canAccess25d)\n            : base(displayName, userId)\n        {\n            m_canAccessDemo = canAccessDemo;\n            m_canSave = canSave;\n            m_canAccessEditorForStory = canAccessEditorForStory;\n            m_canAccessEditorForMMO = canAccessEditorForMMO;\n            m_hasAnyCheckpoints = hasAnyCheckpoints;\n            m_canUseCheats = canUseCheats;\n            m_canAccessMMO = canAccessMMO;\n            m_canAccess25d = canAccess25d;\n\n            m_userName = userName;\n            m_passwordHash = passwordHash;\n        }\n\n        public static MyPlayerLocal CreateOfflineDemoUser()\n        {\n            return new MyPlayerLocal(new StringBuilder(\"DEMO\"), OFFLINE_MODE_USERID, true, false, false, false, false, false, false, new StringBuilder(\"DEMO\"), new StringBuilder(), true)\n                {\n                    AdditionalInfo = new Networking.SectorService.MyAdditionalUserInfo()\n                };\n        }\n\n        public bool IsDemoUser()\n        {\n            return m_canAccessDemo && !m_canSave;\n        }\n\n        public bool GetCanAccessDemo()\n        {\n            return m_canAccessDemo;\n        }\n\n        public bool GetCanSave()\n        {\n            return m_canSave;\n        }\n\n        public bool GetCanAccessEditorForStory()\n        {\n            return m_canAccessEditorForStory;\n        }\n\n        public bool GetCanAccessEditorForMMO()\n        {\n            return m_canAccessEditorForMMO;\n        }\n\n        public bool GetCanAccessMMO()\n        {\n            return m_canAccessMMO;\n        }\n\n        public bool GetCanAccess25d()\n        {\n            return m_canAccess25d;\n        }\n\n        public bool GetUseCheats()\n        {\n            return m_canUseCheats;\n        }\n\n        public bool HasAnyCheckpoints\n        {\n            get { return m_hasAnyCheckpoints; }\n            set { m_hasAnyCheckpoints = value; }\n        }\n\n        public StringBuilder UserName\n        {\n            get\n            {\n                return m_userName;\n            }\n        }\n\n        public StringBuilder PasswordHash\n        {\n            get\n            {\n                return m_passwordHash;\n            }\n        }\n\n        public bool LoggedUsingSteam { get; set; }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Networking/MyPlayerRemote.cs",
    "content": "﻿using System.Text;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing System.Net;\nusing Lidgren.Network;\n\nnamespace MinerWars.AppCode.Game.World\n{\n    class MyPlayerRemote : MyPlayerBase\n    {\n        public NetConnection Connection;\n        public byte PlayerId;\n        public int UserId;\n        public MyMwcObjectBuilder_FactionEnum Faction;\n        public bool IsRelayed;\n\n        public MySmallShip Ship;\n\n        public MyPlayerRemote(StringBuilder displayName, int userId, byte playerId)\n            : base(displayName, userId)\n        {\n            PlayerId = playerId;\n            UserId = userId;\n            Statistics = new MyPlayerStatistics();\n            Faction = MyMwcObjectBuilder_FactionEnum.None;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Networking/MyPlayerStatistics.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Linq;\nusing System.Text;\nusing KeenSoftwareHouse.Library.Extensions;\nusing System.Reflection;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\n\nnamespace MinerWars.AppCode.Game.World\n{\n    class MyPlayerStatistics\n    {\n        public void Init(MyMwcObjectBuilder_PlayerStatistics playerStatisticsObjectBuilder)\n        {\n            Debug.Assert(playerStatisticsObjectBuilder != null); \n\n            BulletsShot = playerStatisticsObjectBuilder.BulletsShot;\n            FriendlyFire = playerStatisticsObjectBuilder.FriendlyFire;\n            GamePlayTime = playerStatisticsObjectBuilder.GamePlayTime;\n            HarvestedOre = playerStatisticsObjectBuilder.HarvestedOre;\n            OxygenSpent = playerStatisticsObjectBuilder.OxygenSpent;\n            PlayersKilled = playerStatisticsObjectBuilder.PlayersKilled;\n            RescuedPlayers = playerStatisticsObjectBuilder.RescuedPlayers;\n            TraveledDistance = playerStatisticsObjectBuilder.TraveledDistance;\n            TunnelsDug = playerStatisticsObjectBuilder.TunnelsDug;\n            Deaths = playerStatisticsObjectBuilder.Deaths;\n        }\n\n        public MyMwcObjectBuilder_PlayerStatistics GetObjectBuilder()\n        {\n            return new MyMwcObjectBuilder_PlayerStatistics(PlayersKilled, BulletsShot, HarvestedOre, TunnelsDug, TraveledDistance, RescuedPlayers, GamePlayTime, OxygenSpent, FriendlyFire, Deaths);\n        }\n\n        int m_deads;\n\n        public int Deaths\n        {\n            get { return m_deads; }\n            set { m_deads = value; }\n        }\n\n        int m_playersKilled;\n\n        public int PlayersKilled\n        {\n            get\n            {\n                return m_playersKilled;\n            }\n            set\n            {\n                m_playersKilled = value;\n            }\n        }\n\n        int m_bulletsShot;\n\n        public int BulletsShot\n        {\n            get\n            {\n                return m_bulletsShot;\n            }\n            set\n            {\n                m_bulletsShot = value;\n            }\n        }\n\n        int m_harvestedOre;\n\n        public int HarvestedOre\n        {\n            get\n            {\n                return m_harvestedOre;\n            }\n            set\n            {\n                m_harvestedOre = value;\n            }\n        }\n\n        int m_tunnelsDug;\n\n        public int TunnelsDug\n        {\n            get\n            {\n                return m_tunnelsDug;\n            }\n            set\n            {\n                m_tunnelsDug = value;\n            }\n        }\n\n\n        int m_traveledDistance;\n\n        public int TraveledDistance\n        {\n            get\n            {\n                return m_traveledDistance;\n            }\n            set\n            {\n                m_traveledDistance = value;\n            }\n        }\n\n        int m_rescuedPlayers;\n\n        public int RescuedPlayers\n        {\n            get\n            {\n                return m_rescuedPlayers;\n            }\n            set\n            {\n                m_rescuedPlayers = value;\n            }\n        }\n\n        float m_gamePlayTime;\n\n        public float GamePlayTime\n        {\n            get\n            {\n                return m_gamePlayTime;\n            }\n            set\n            {\n                m_gamePlayTime = value;\n            }\n        }\n\n        float m_oxygenSpent;\n\n        public float OxygenSpent\n        {\n            get\n            {\n                return m_oxygenSpent;\n            }\n            set\n            {\n                m_oxygenSpent = value;\n            }\n        }\n\n        int m_friendlyFire;\n\n        public int FriendlyFire\n        {\n            get\n            {\n                return m_friendlyFire;\n            }\n            set\n            {\n                m_friendlyFire = value;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Physics/MyContactEventExtensions.cs",
    "content": "using MinerWars.AppCode.Physics;\nusing MinerWars.AppCode.Game.Physics;\nusing MinerWars.AppCode.Game.Entities;\n\nnamespace MinerWars.AppCode.Game.Physics\n{\n    public static class MyContactEventExtensions\n    {\n        /// <summary>\n        /// Gets the other entity from contact.\n        /// </summary>\n        /// <param name=\"eventInfo\">The event info.</param>\n        /// <param name=\"sourceEntity\">Entity that we knows and for wich we want opposite entity.</param>\n        /// <returns></returns>\n        internal static MyEntity GetOtherEntity(this MyContactEventInfo eventInfo, MyEntity sourceEntity)\n        {\n            MyPhysicsBody ps1 = (MyPhysicsBody)eventInfo.m_RigidBody1.m_UserData;\n            MyPhysicsBody ps2 = (MyPhysicsBody)eventInfo.m_RigidBody2.m_UserData;\n\n            if (ps1.Entity == sourceEntity)\n            {\n                return ps2.Entity;\n            }\n\n            return ps1.Entity;\n        }\n\n        /// <summary>\n        /// Gets the other entity from contact.\n        /// </summary>\n        /// <param name=\"eventInfo\">The event info.</param>\n        /// <param name=\"sourceEntity\">Entity that we knows and for wich we want opposite entity.</param>\n        /// <returns></returns>\n        internal static MyEntity GetOtherEntity(this MyRBSolverConstraint eventInfo, MyEntity sourceEntity)\n        {\n            MyPhysicsBody ps1 = (MyPhysicsBody)eventInfo.m_SolverBody1.m_RigidBody.m_UserData;\n            MyPhysicsBody ps2 = (MyPhysicsBody)eventInfo.m_SolverBody2.m_RigidBody.m_UserData;\n\n            if (ps1.Entity == sourceEntity)\n            {\n                return ps2.Entity;\n            }\n\n            return ps1.Entity;\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Physics/MyPhysicsBody.cs",
    "content": "using System.Diagnostics;\nusing MinerWars.AppCode.Physics;\nusing MinerWars.AppCode.Game.Physics;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Managers;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Managers.EntityManager.Notifications;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing System.Linq;\nusing System.Collections.Generic;\n\nnamespace MinerWars.AppCode.Game.Physics\n{\n    /// <summary>\n    /// Abstract engine physics body object.\n    /// </summary>\n    internal class MyPhysicsBody : MyResource, IMyNotifyMotion, IMyNotifyContact, IMyNotifyEntityChanged, IMyContactModifyNotifications\n    {\n        #region Fields\n\n        private bool m_enabled;\n\n        /// <summary>\n        /// This was moved here from MyGameRigidBody.\n        /// </summary>\n        protected readonly AppCode.Physics.MyRigidBody rigidBody;\n\n        #endregion\n\n        #region Properties\n\n        /// <summary>\n        /// Gets the entity.\n        /// </summary>\n        public MyEntity Entity { get; private set; }\n\n        public MyRigidBody RigidBody { get { return rigidBody; } }\n\n        /// <summary>\n        /// Gets or sets a value indicating whether this <see cref=\"MyGameRigidBody\"/> is collideable.\n        /// </summary>\n        /// <value>\n        ///   <c>true</c> if collideable; otherwise, <c>false</c>.\n        /// </value>\n        public bool Collideable\n        {\n            get\n            {\n                return !this.rigidBody.ReadFlag(RigidBodyFlag.RBF_DISABLE_COLLISION_RESPONCE);\n            }\n            set\n            {\n                if (!value)\n                {\n                    this.rigidBody.RaiseFlag(RigidBodyFlag.RBF_DISABLE_COLLISION_RESPONCE);\n                }\n                else\n                {\n                    this.rigidBody.ClearFlag(RigidBodyFlag.RBF_DISABLE_COLLISION_RESPONCE);\n                }\n\n            }\n        }\n\n        /// <summary>\n        /// Gets or sets a value indicating whether this <see cref=\"MyGameRigidBody\"/> is static.\n        /// </summary>\n        /// <value>\n        ///   <c>true</c> if static; otherwise, <c>false</c>.\n        /// </value>\n        public bool Static\n        {\n            get\n            {\n                return this.rigidBody.IsStatic();\n            }\n            set\n            {\n                if (value)\n                {\n                    this.rigidBody.RaiseFlag(RigidBodyFlag.RBF_RBO_STATIC);\n                }\n                else\n                {\n                    this.rigidBody.ClearFlag(RigidBodyFlag.RBF_RBO_STATIC);\n                }\n\n            }\n        }\n\n        /// <summary>\n        /// Gets or sets a value indicating whether this <see cref=\"MyGameRigidBody\"/> is kinematic.\n        /// </summary>\n        /// <value>\n        ///   <c>true</c> if kinematic; otherwise, <c>false</c>.\n        /// </value>\n        public bool Kinematic\n        {\n            get\n            {\n                return this.rigidBody.IsKinematic();\n            }\n            set\n            {\n                if (value)\n                {\n                    this.rigidBody.RaiseFlag(RigidBodyFlag.RBF_KINEMATIC);\n                }\n                else\n                {\n                    this.rigidBody.ClearFlag(RigidBodyFlag.RBF_KINEMATIC);\n                }\n\n            }\n        }\n\n        /// <summary>\n        /// Gets or sets a value indicating whether this <see cref=\"MyPhysicsBody\"/> is enabled.\n        /// </summary>\n        /// <value>\n        ///   <c>true</c> if enabled; otherwise, <c>false</c>.\n        /// </value>\n        public bool Enabled\n        {\n            get\n            {\n                return this.m_enabled;\n            }\n            set\n            {\n                if (this.m_enabled != value)\n                {\n                    this.m_enabled = value;\n                    if (value) \n                        Activate();\n                    else \n                        Deactivate();\n                }\n            }\n        }\n\n        /// <summary>\n        /// Gets or sets a value indicating whether [play collision cue enabled].\n        /// </summary>\n        /// <value>\n        /// \t<c>true</c> if [play collision cue enabled]; otherwise, <c>false</c>.\n        /// </value>\n        public bool PlayCollisionCueEnabled { get; set; }\n\n        /// <summary>\n        /// Gets or sets the type of the material.\n        /// </summary>\n        /// <value>\n        /// The type of the material.\n        /// </value>\n        public MyMaterialType MaterialType { get; set; }\n\n\n        /// <summary>\n        /// Gets or sets the mass.\n        /// </summary>\n        /// <value>\n        /// The mass.\n        /// </value>\n        public float Mass\n        {\n            get\n            {\n                return this.rigidBody.GetMass();\n            }\n            set\n            {\n                this.rigidBody.SetMass(value, true);\n            }\n        }\n\n        /// <summary>\n        /// Gets or sets the linear velocity.\n        /// </summary>\n        /// <value>\n        /// The linear velocity.\n        /// </value>\n        public Vector3 LinearVelocity\n        {\n            get\n            {\n                return this.rigidBody.LinearVelocity;\n            }\n            set\n            {\n                MyUtils.AssertIsValid(value);\n                this.rigidBody.LinearVelocity = value;\n            }\n        }\n\n        /// <summary>\n        /// Gets or sets max linear velocity.\n        /// </summary>\n        /// <value>\n        /// The max linear velocity.\n        /// </value>\n        public float MaxLinearVelocity\n        {\n            get\n            {\n                return this.rigidBody.MaxLinearVelocity;\n            }\n            set\n            {\n                MyUtils.AssertIsValid(value);\n                this.rigidBody.MaxLinearVelocity = value;\n            }\n        }\n\n        /// <summary>\n        /// Gets or sets the linear acceleration.\n        /// </summary>\n        /// <value>\n        /// The linear acceleration.\n        /// </value>\n        public Vector3 LinearAcceleration\n        {\n            get\n            {\n                return rigidBody.LinearAcceleration;\n            }\n            set\n            {\n                Debug.Assert(!float.IsNaN(value.X));\n                this.rigidBody.LinearAcceleration = value;\n            }\n        }\n\n        /// <summary>\n        /// Gets or sets the linear damping.\n        /// </summary>\n        /// <value>\n        /// The linear damping.\n        /// </value>\n        public float LinearDamping\n        {\n            get\n            {\n                return this.rigidBody.LinearDamping;\n            }\n            set\n            {\n                Debug.Assert(!float.IsNaN(value));\n                this.rigidBody.LinearDamping = value;\n            }\n        }\n\n        /// <summary>\n        /// Gets or sets the angular damping.\n        /// </summary>\n        /// <value>\n        /// The angular damping.\n        /// </value>\n        public float AngularDamping\n        {\n            get\n            {\n                return this.rigidBody.AngularDamping;\n            }\n            set\n            {\n                Debug.Assert(!float.IsNaN(value));\n                this.rigidBody.AngularDamping = value;\n            }\n        }\n\n        /// <summary>\n        /// Gets or sets the angular velocity.\n        /// </summary>\n        /// <value>\n        /// The angular velocity.\n        /// </value>\n        public Vector3 AngularVelocity\n        {\n            get\n            {\n                return this.rigidBody.AngularVelocity;\n            }\n            set\n            {\n                Debug.Assert(!float.IsNaN(value.X));\n                this.rigidBody.AngularVelocity = value;\n            }\n        }\n\n        /// <summary>\n        /// Gets or sets the max angular velocity.\n        /// </summary>\n        public float MaxAngularVelocity\n        {\n            get\n            {\n                return this.rigidBody.MaxAngularVelocity;\n            }\n            set\n            {\n                MyUtils.AssertIsValid(value);\n                this.rigidBody.MaxAngularVelocity = value;\n            }\n        }\n\n        /// <summary>\n        /// Gets or sets the speed.\n        /// </summary>\n        /// <value>\n        /// The speed.\n        /// </value>\n        public float Speed\n        {\n            get\n            {\n                return this.rigidBody.LinearVelocity.Length();\n            }\n        }\n\n        /// <summary>\n        /// Gets or sets the group mask.\n        /// </summary>\n        /// <value>\n        /// The group mask.\n        /// </value>\n        public MyGroupMask GroupMask\n        {\n            set\n            {\n                this.rigidBody.SetGroupMask(value);\n            }\n            get\n            {\n                var elements = this.rigidBody.GetRBElementList();\n\n                if (elements.Count > 0)\n                {\n                    MyGroupMask groupMask = this.rigidBody.GetRBElementList()[0].GroupMask;\n\n                    Debug.Assert(elements.All(element => element.GroupMask == groupMask),\n                                 \"All elements should have same group mask!\");\n\n                    return groupMask;\n                }\n\n                return new MyGroupMask();\n            }\n        }\n\n        /// <summary>\n        /// Gets or sets the collision layer for all elements.\n        /// </summary>\n        /// <value>\n        /// The collision layer.\n        /// </value>\n        public ushort CollisionLayer\n        {\n            get\n            {\n                var elements = this.rigidBody.GetRBElementList();\n\n                if (elements.Count > 0)\n                    return elements[0].CollisionLayer;\n\n                return 0;\n            }\n            set\n            {\n                var elements = this.rigidBody.GetRBElementList();\n\n                foreach (MyRBElement el in elements)\n                {\n                    el.CollisionLayer = value;\n                }\n            }\n        }\n\n        /// <summary>\n        /// Gets or sets the type of rigid body.\n        /// </summary>\n        /// <value>\n        /// The type.\n        /// </value>\n        public ushort Type\n        {\n            get\n            {\n                return this.rigidBody.Type;\n            }\n            set\n            {\n                this.rigidBody.Type = value;\n            }\n        }\n\n        /// <summary>\n        /// Gets or sets a value indicating whether this <see cref=\"MyGameRigidBody\"/> is immovable.\n        /// </summary>\n        /// <value>\n        ///   <c>true</c> if immovable; otherwise, <c>false</c>.\n        /// </value>\n        public bool Immovable\n        {\n            get\n            {\n                return this.rigidBody.ReadFlag(RigidBodyFlag.RBF_RBO_STATIC);\n            }\n            set\n            {\n                if (value)\n                {\n                    this.rigidBody.RaiseFlag(RigidBodyFlag.RBF_RBO_STATIC);\n                }\n                else\n                {\n                    this.rigidBody.ClearFlag(RigidBodyFlag.RBF_RBO_STATIC);\n                }\n                MyPhysicsUtils.ComputeIntertiaTensor(this.rigidBody);\n            }\n        }\n\n        /// <summary>\n        /// Gets or sets a value indicating whether [no response].\n        /// </summary>\n        /// <value>\n        ///   <c>true</c> if [no response]; otherwise, <c>false</c>.\n        /// </value>\n        public bool NoResponse { get; set; }\n\n        #endregion\n\n        #region Methods\n\n        /// <summary>\n        /// Initializes a new instance of the <see cref=\"MyPhysicsBody\"/> class.\n        /// </summary>\n        /// <param name=\"entity\">The entity.</param>\n        public MyPhysicsBody(MyEntity entity, float mass, RigidBodyFlag flags)\n        {\n            Debug.Assert(entity != null);\n\n            this.m_enabled = false;\n            this.Entity = entity;\n\n            MyPhysicsObjects physobj = AppCode.Physics.MyPhysics.physicsSystem.GetPhysicsObjects();\n            MyRigidBodyDesc rboDesc = physobj.GetRigidBodyDesc();\n\n            rboDesc.SetToDefault();\n            rboDesc.m_Mass = mass;\n            rboDesc.m_Matrix = entity.WorldMatrix;\n            rboDesc.m_Flags |= flags;\n\n            this.rigidBody = physobj.CreateRigidBody(rboDesc);\n            this.rigidBody.m_UserData = this;\n        }\n\n        /// <summary>\n        /// Gets RB elements list\n        /// </summary>\n        public List<MyRBElement> GetRBElementList()\n        {\n            return this.rigidBody.GetRBElementList();\n        }\n\n        public void Close()\n        {\n\n            Debug.Assert(this.rigidBody != null);\n            MyPhysicsObjects physobj = AppCode.Physics.MyPhysics.physicsSystem.GetPhysicsObjects();\n\n            physobj.DestroyRigidBody(this.rigidBody);\n        }\n\n        /// <summary>\n        /// Applies external force to the physics object.\n        /// </summary>\n        /// <param name=\"type\">The type.</param>\n        /// <param name=\"force\">The force.</param>\n        /// <param name=\"position\">The position.</param>\n        /// <param name=\"torque\">The torque.</param>\n        public void AddForce(MyPhysicsForceType type, Vector3? force, Vector3? position, Vector3? torque)\n        {\n            MyUtils.AssertIsValid(force);\n            MyUtils.AssertIsValid(position);\n            MyUtils.AssertIsValid(torque);\n\n            switch (type)\n            {\n                case MyPhysicsForceType.ADD_BODY_FORCE_AND_BODY_TORQUE:\n                    {\n                        Matrix tempM = rigidBody.Matrix;\n                        tempM.Translation = Vector3.Zero;\n\n                        if (force != null && !MyMwcUtils.IsZero(force.Value))\n                        {\n                            Vector3 tmpForce = Vector3.Transform(force.Value, tempM);\n\n                            this.rigidBody.ApplyForce(tmpForce);\n                        }\n\n                        if (torque != null && !MyMwcUtils.IsZero(torque.Value))\n                        {\n                            Vector3 tmpTorque = Vector3.Transform(torque.Value, tempM);\n\n                            this.rigidBody.ApplyTorque(tmpTorque);\n                        }\n                    }\n                    break;\n                case MyPhysicsForceType.APPLY_WORLD_IMPULSE_AND_WORLD_ANGULAR_IMPULSE:\n                    {\n                        if (force.HasValue && position.HasValue)\n                        {\n                            this.rigidBody.ApplyImpulse(force.Value, position.Value);\n                        }\n\n                        if (torque.HasValue)\n                        {\n                            this.rigidBody.ApplyTorque(torque.Value);\n                        }\n                    }\n                    break;\n                default:\n                    {\n                        Debug.Fail(\"Unhandled enum!\");\n                    }\n                    break;\n            }\n        }\n\n        /// <summary>\n        /// Applies the impulse.\n        /// </summary>\n        /// <param name=\"dir\">The dir.</param>\n        /// <param name=\"pos\">The pos.</param>\n        public void ApplyImpulse(Vector3 dir, Vector3 pos)\n        {\n            MyUtils.AssertIsValid(dir);\n            MyUtils.AssertIsValid(pos);\n\n            this.rigidBody.ApplyImpulse(dir, pos);\n        }\n\n        /// <summary>\n        /// Wakes up rigid body.\n        /// </summary>\n        public void WakeUp()\n        {\n            this.rigidBody.WakeUp();\n        }\n\n        /// <summary>\n        /// Clear all current forces.\n        /// </summary>\n        public virtual void ClearForces()\n        {\n        }\n\n        /// <summary>\n        /// Clears the speeds.\n        /// </summary>\n        public void ClearSpeed()\n        {\n            rigidBody.Clear();\n            rigidBody.LinearAcceleration = Vector3.Zero;\n            rigidBody.LinearVelocity = Vector3.Zero;\n            rigidBody.AngularVelocity = Vector3.Zero;\n            rigidBody.AngularAcceleration = Vector3.Zero;\n        }\n\n        /// <summary>\n        /// Clear all dynamic values of physics object.\n        /// </summary>\n        public void Clear()\n        {\n            ClearForces();\n            ClearSpeed();\n        }\n\n        /// <summary>\n        /// Adds the skin element.\n        /// </summary>\n        /// <param name=\"element\">The element.</param>\n        /// <param name=\"b\">if set to <c>true</c> [b].</param>\n        public void AddElement(MyRBElement element, bool recomputeInertia)\n        {\n            Debug.Assert(element != null);\n\n            this.rigidBody.AddElement(element, recomputeInertia);\n\n        }\n\n        /// <summary>\n        /// Removes the elements.\n        /// </summary>\n        public void RemoveAllElements()\n        {\n            this.rigidBody.RemoveAllElements();\n        }\n\n        /// <summary>\n        /// Debug draw of this physics object.\n        /// </summary>\n        public void DebugDraw()\n        {\n            const float alpha = 0.3f;\n\n            if (!Enabled)\n                return;\n\n            foreach (var primitive in this.rigidBody.GetRBElementList())\n            {\n                MyRBElementType type = primitive.GetElementType();\n\n                switch (type)\n                {\n                    case MyRBElementType.ET_BOX:\n                        {\n                            var box = (MyRBBoxElement)primitive;\n\n                            MyDebugDraw.DrawHiresBoxWireframe(\n                                Matrix.CreateScale(box.Size) * box.GetGlobalTransformation(),\n                                Color.Green.ToVector3(), alpha);\n                        }\n                        break;\n                    case MyRBElementType.ET_SPHERE:\n                        {\n                            var sphere = (MyRBSphereElement)primitive;\n\n                            MyDebugDraw.DrawSphereWireframe(\n                                Matrix.CreateScale(sphere.Radius) * sphere.GetGlobalTransformation(),\n                                Color.Green.ToVector3(), alpha);\n                        }\n                        break;\n                    case MyRBElementType.ET_TRIANGLEMESH:\n                        {\n                            var triMesh = (MyRBTriangleMeshElement)primitive;\n                            var model = triMesh.Model;\n\n                            Matrix transformMatrix = this.rigidBody.Matrix;\n\n                            MyDebugDrawCachedLines.Clear();\n\n                            //  This is just a reserve\n                            const int numberOfAddTrianglesInLoop = 3;\n\n                            int triangleIndex = 0;\n                            while (true)\n                            {\n                                //bool finished = triangleIndex >= mesh.GetNumTriangles();\n                                bool finished = triangleIndex >= model.GetTrianglesCount();\n\n                                if ((MyDebugDrawCachedLines.IsFull(-numberOfAddTrianglesInLoop)) || (finished))\n                                {\n                                    MyDebugDrawCachedLines.DrawLines();\n                                    MyDebugDrawCachedLines.Clear();\n                                }\n\n                                if (finished)\n                                {\n                                    break;\n                                }\n\n                                MyTriangleVertexIndices triangle = model.Triangles[triangleIndex];\n\n                                //  We now transform the triangleVertexes into world space (we could keep leave the mesh alone\n                                //  but at this point 3 vector transforms is probably not a major slow down)\n                                Vector3 triVec0 = model.GetVertex(triangle.I0);\n                                Vector3 triVec1 = model.GetVertex(triangle.I2);\n                                Vector3 triVec2 = model.GetVertex(triangle.I1);\n\n                                // Move triangle into world space                        \n                                Vector3.Transform(ref triVec0, ref transformMatrix, out triVec0);\n                                Vector3.Transform(ref triVec1, ref transformMatrix, out triVec1);\n                                Vector3.Transform(ref triVec2, ref transformMatrix, out triVec2);\n                                                \n                                MyDebugDrawCachedLines.AddLine(triVec0, triVec1, Color.Green, Color.Green);\n                                MyDebugDrawCachedLines.AddLine(triVec1, triVec2, Color.Green, Color.Green);\n                                MyDebugDrawCachedLines.AddLine(triVec2, triVec0, Color.Green, Color.Green);\n                                   /*   \n                                MyTriangle_Vertexes tv = new MyTriangle_Vertexes();\n                                tv.Vertex0 = triVec0;\n                                tv.Vertex1 = triVec1;\n                                tv.Vertex2 = triVec2;\n                                Vector3 calculatedTriangleNormal = MyUtils.GetNormalVectorFromTriangle(ref tv);\n                                Vector3 center = (triVec0 + triVec1 + triVec2)/3.0f;\n                                MyDebugDrawCachedLines.AddLine(center, center + calculatedTriangleNormal * 5, Color.Red, Color.Red);\n                                     */   \n\n                                //MyDebugDraw.AddDrawTriangle(triVec0, triVec1, triVec2, new Color(0,0.8f, 0, 0.1f));\n\n                                triangleIndex++;\n                            }\n                        }\n                        break;\n                }\n            }\n        }\n\n        /// <summary>\n        /// Activates this rigid body in physics.\n        /// </summary>\n        protected void Activate()\n        {\n            MyPhysics.physicsSystem.GetRigidBodyModule().Insert(rigidBody);\n            rigidBody.Matrix = this.Entity.WorldMatrix;\n\n            this.rigidBody.NotifyMotionHandler = this;\n            this.rigidBody.NotifyContactHandler = this;\n            this.rigidBody.ContactModifyNotificationHandler = this;\n        }\n\n        /// <summary>\n        /// Deactivates this rigid body in physics.\n        /// </summary>\n        protected void Deactivate()\n        {\n            MyPhysics.physicsSystem.GetRigidBodyModule().Remove(rigidBody);\n\n            this.rigidBody.NotifyMotionHandler = null;\n            this.rigidBody.NotifyContactHandler = null;\n            this.rigidBody.ContactModifyNotificationHandler = null;\n        }\n\n        public void Update()\n        {\n        }\n\n        #endregion\n        \n        #region Implementation of IMyNotifyMotion\n\n        /// <summary>\n        /// Called when [motion].\n        /// </summary>\n        /// <param name=\"rbo\">The rbo.</param>\n        /// <param name=\"step\">The step.</param>\n        public void OnMotion(AppCode.Physics.MyRigidBody rbo, float step)\n        {\n            Debug.Assert(this.Entity.Physics == this, \"Fatal resorce inconsistancy! Now is time to implement real engine resource management.\");\n\n            if (this.NoResponse)\n            {\n                return;\n            }\n\n            this.Entity.SetWorldMatrix(this.rigidBody.Matrix, this);\n        }\n\n        #endregion\n\n        #region Implementation of IMyNotifyContact\n\n        /// <summary>\n        /// Called when [contact start].\n        /// </summary>\n        /// <param name=\"contactInfo\">The contact info.</param>\n        public virtual void OnContactStart(MyContactEventInfo contactInfo)\n        {\n            // Notify entity(script) about contact.\n            this.Entity.NotifyContactStart(contactInfo);\n        }\n\n        /// <summary>\n        /// Called when [contact end].\n        /// </summary>\n        /// <param name=\"contactInfo\">The contact info.</param>\n        public virtual void OnContactEnd(MyContactEventInfo contactInfo)\n        {\n            this.Entity.NotifyContactEnd(contactInfo);\n        }\n\n        /// <summary>\n        /// Called when [contact touch].\n        /// </summary>\n        /// <param name=\"contactInfo\">The contact info.</param>\n        public virtual void OnContactTouch(MyContactEventInfo contactInfo)\n        {\n            this.Entity.NotifyContactTouch(contactInfo);\n        }\n\n        /// <summary>\n        /// Called when contact\n        /// </summary>\n        /// <param name=\"constraint\"></param>\n        /// <returns>false if contact has to be refused</returns>\n        public virtual bool OnContact(ref MyRBSolverConstraint constraint)\n        {\n            return this.Entity.NotifyContact(ref constraint);\n        }\n\n        #endregion\n\n        #region Implementation of IMyNotifyEntityChanged\n\n        /// <summary>\n        /// Called when [world position changed].\n        /// </summary>\n        /// <param name=\"source\">The source object that caused this event.</param>\n        public void OnWorldPositionChanged(object source)\n        {\n            Debug.Assert(this != source, \"Recursion!\");\n\n            this.rigidBody.Matrix = this.Entity.WorldMatrix;// - pivot is not center of volume (CenterOfMass)\n        }    \n\n        #endregion\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Physics/MyPhysicsForceType.cs",
    "content": "﻿namespace MinerWars.AppCode.Game.Physics\n{\n    /// <summary>\n    /// Force type applied to physic object.\n    /// </summary>\n    internal enum MyPhysicsForceType : byte\n    {\n        /// <summary>\n        /// \n        /// </summary>\n        APPLY_WORLD_IMPULSE_AND_WORLD_ANGULAR_IMPULSE,\n\n        /// <summary>\n        /// \n        /// </summary>\n        ADD_BODY_FORCE_AND_BODY_TORQUE,\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Prefabs/Container/MyPrefabContainer.cs",
    "content": "﻿using System.Diagnostics;\nusing MinerWars.AppCode.Game.HUD;\nusing MinerWars.AppCode.Game.Inventory;\nusing MinerWars.AppCode.Game.Entities.FoundationFactory;\nusing MinerWars.AppCode.Physics;\nusing MinerWars.AppCode.Game.Physics;\n\nnamespace MinerWars.AppCode.Game.Entities\n{\n    using System;\n    using System.Collections.Generic;\n    using System.Text;\n    using CommonLIB.AppCode.ObjectBuilders;\n    using CommonLIB.AppCode.ObjectBuilders.Object3D;\n    using CommonLIB.AppCode.ObjectBuilders.SubObjects;\n    using CommonLIB.AppCode.Utils;\n    using Editor;\n    using MinerWarsMath;\n    using TransparentGeometry;\n    using Prefabs;\n    using SubObjects;\n    using Utils;\n    using MinerWars.AppCode.Game.Prefabs;\n    using MinerWars.AppCode.Game.GUI.Core;\n    using MinerWars.AppCode.App;\n    using MinerWars.AppCode.Game.Managers.Session;\n    using MinerWars.AppCode.Game.Audio;\n    using MinerWars.AppCode.Game.GUI.Prefabs;\n    using MinerWars.AppCode.Game.World.Global;\n    using MinerWars.AppCode.Game.Missions;\n    using MinerWars.AppCode.Game.Entities.Ships.AI;\n    using MinerWars.AppCode.Game.Render;\n    using MinerWars.AppCode.Game.GUI.Helpers;\n    using MinerWars.AppCode.Physics.Collisions;\n\n    delegate void OnPrefabContainerInitialized(MyPrefabContainer sender);\n    delegate void OnAlarmLaunchned(object sender, MyEntity entity);\n\n    /// <summary>\n    /// This phys object represents Prefab Container(it is like one big object created from many prefabs(lego components).\n    /// When interacting with prefab container in gameplay, it behaves as one object, but due to the fact, that its sub-components(prefabs)\n    /// can have some additional functionality(for example some prefabs are destructible, thus they can be destroyed during gameplay, or\n    /// some prefabs might be moving/closing/opening), it is necessary to keep track of all prefabs during gameplay. For that reason, container\n    /// keeps 2 lists of prefabs, one for commited prefabs, and second for working prefabs. Working prefabs are available when editing container and\n    /// are not visible to the outside-of-container world. Commited prefabs are visible to the outside-of-container worlds, \n    /// </summary>\n    class MyPrefabContainer : MyEntity, IMyInventory, IMyUseableEntity, IMyHasGuiControl\n    {\n        //List<MyEntity> m_commitedPrefabs;\n        //List<MyPrefab> m_workingPrefabs;\n        List<MyPrefabBase> m_prefabs;\n        List<MyPrefabBase> m_deactivatedPrefabs;\n\n        private bool m_editingActive; // indicates wheater we are inside editing container, or not\n\n        private int m_userID;\n\n        private BoundingBox m_selectionBox;  // this is a small box inside container, that is used as a selection control from editor\n        //MyRBBoxElement m_selectionBox;\n        public bool HighlightSelectionBox;\n        int m_lastCommitInMillis;\n\n        public MyRigidBody DynamicPrefabsRigidBody;\n\n        bool m_needUpdateAABB = false;\n\n        //@ key - entity, value - modification type //TODO not integrated listen on prefab moving/modifying\n        private Dictionary<MyPrefabBase, short> m_Modifications = new Dictionary<MyPrefabBase, short>();\n\n        public void SetEditState(bool editState)\n        {\n            m_editingActive = editState;\n        }\n        public bool HasEditState() { return m_editingActive; }\n\n        public event OnPrefabContainerInitialized OnPrefabContainerInitialized;\n\n        /// <summary>\n        /// Prefab container's inventory\n        /// </summary>\n        public MyInventory Inventory { get; set; }\n\n        private PrefabTypesFlagEnum m_prefabTypesFlag;\n        private int[] m_prefabTypeSingleFlagsCount;\n\n        private List<MyPrefabBase>[] m_prefabsByCategory;\n\n        private bool m_intializing;\n\n        public const int DEFAULT_REFILL_TIME_IN_SEC = 5 * 60;\n        private int m_lastRefillTime;\n        private int? m_refillTime;\n        public int? RefillTime \n        {\n            get { return m_refillTime; }\n            set \n            {\n                m_refillTime = value;\n                RecheckNeedsUpdateState();\n            }\n        }\n\n        // initialize container\n        public MyPrefabContainer()\n        {\n            m_prefabs = new List<MyPrefabBase>(MyPrefabContainerConstants.MAX_PREFABS_IN_CONTAINER+1);\n            m_deactivatedPrefabs = new List<MyPrefabBase>(MyPrefabContainerConstants.MAX_PREFABS_IN_CONTAINER + 1);\n\n            Inventory = new MyInventory(1000);\n            \n            m_prefabTypeSingleFlagsCount = new int[MyMwcUtils.GetMaxValueFromEnum<PrefabTypesFlagEnum>() + 1];\n\n            m_prefabsByCategory = new List<MyPrefabBase>[MyMwcUtils.GetMaxValueFromEnum<CategoryTypesEnum>() + 1];\n            foreach (ushort categoryTypeId in Enum.GetValues(typeof(CategoryTypesEnum)))\n            {\n                m_prefabsByCategory[categoryTypeId] = new List<MyPrefabBase>();\n            }\n        }\n\n        public virtual void Init(string hudLabelText, MyMwcObjectBuilder_PrefabContainer objectBuilder, Matrix matrix)\n        {\n            m_intializing = true;\n            StringBuilder hudLabelTextSb = (string.IsNullOrEmpty(hudLabelText) ? null : new StringBuilder(hudLabelText));\n\n            base.Init(hudLabelTextSb, null, null, null, null, objectBuilder);\n\n            DisplayName = objectBuilder.DisplayName;            \n\n            SetWorldMatrix(matrix);            \n\n            Flags |= EntityFlags.EditableInEditor;\n\n            this.Faction = objectBuilder.Faction;\n\n            //during container initialization, it is not necessary to check if prefab is outside boundaries, because it cannot be saved that way\n            foreach (MyMwcObjectBuilder_PrefabBase prefabBuilder in objectBuilder.Prefabs)\n            {\n                CreateAndAddPrefab(null, prefabBuilder);\n            }\n\n            // we must initialize inventory after prefabs, because some prefabs are registered on OnInventoryContentChanged event\n            if (objectBuilder.Inventory != null)\n            {\n                Inventory.Init(objectBuilder.Inventory, MyMwcUtils.GetRandomFloat(1.1f, 2f));                \n            }\n\n            //Commit();\n\n            UpdateAABBHr();\n\n            // ----- THIS PHYSICS IS NEEDED BECAUSE ENTITY DETECTOR -----                        \n            this.Physics = new MyPhysicsBody(this, 1.0f, UseKinematicPhysics ? RigidBodyFlag.RBF_KINEMATIC : RigidBodyFlag.RBF_RBO_STATIC) { MaterialType = MyMaterialType.METAL };\n            MyPhysicsObjects physobj = MyPhysics.physicsSystem.GetPhysicsObjects();\n            MyRBBoxElementDesc boxDesc = physobj.GetRBBoxElementDesc();\n            boxDesc.SetToDefault();\n            boxDesc.m_RBMaterial = MyMaterialsConstants.GetMaterialProperties(MyMaterialType.METAL).PhysicsMaterial;\n            boxDesc.m_Size = UseKinematicPhysics ? WorldAABBHr.Size() : Vector3.One;\n            boxDesc.m_CollisionLayer = UseKinematicPhysics ? MyConstants.COLLISION_LAYER_DEFAULT : MyConstants.COLLISION_LAYER_UNCOLLIDABLE;\n            MyRBBoxElement boxEl = (MyRBBoxElement)physobj.CreateRBElement(boxDesc);\n            this.Physics.AddElement(boxEl, true);\n            this.Physics.Enabled = true;\n            this.Physics.RigidBody.KinematicLinear = false;\n            // ----- THIS PHYSICS IS NEEDED BECAUSE ENTITY DETECTOR -----\n\n                /*\n            MyRBBoxElementDesc boxDesc = physobj.GetRBBoxElementDesc();\n            MyMaterialType materialType = MyMaterialType.METAL;\n            boxDesc.SetToDefault();\n            boxDesc.m_Size = Vector3.One;\n            boxDesc.m_CollisionLayer = MyConstants.COLLISION_LAYER_UNCOLLIDABLE;\n            boxDesc.m_RBMaterial = MyMaterialsConstants.GetMaterialProperties(materialType).PhysicsMaterial;\n              */\n            //m_selectionBox = (MyRBBoxElement)physobj.CreateRBElement(boxDesc);\n            m_selectionBox = new BoundingBox(-Vector3.One, Vector3.One);\n\n            // to be selectable in editor\n            //this.Physics.AddElement(m_selectionBox, true);\n\n            m_userID = objectBuilder.UserOwnerID;\n            m_faction = objectBuilder.Faction;\n\n            VisibleInGame = false;\n            // set here later on user id when firstly created object inserted into scene\n\n            //m_selectionBox = new BoundingBox(m_worldAABB.Min, m_worldAABB.Max);\n\n            if (OnPrefabContainerInitialized != null)\n            {\n                OnPrefabContainerInitialized(this);\n            }\n            \n            //StringBuilder displayName;\n            //if (!string.IsNullOrEmpty(DisplayName))\n            //{\n            //    MyHud.ChangeText(this, new StringBuilder(DisplayName), null, 0, MyHudIndicatorFlagsEnum.SHOW_TEXT | MyHudIndicatorFlagsEnum.SHOW_BORDER_INDICATORS | MyHudIndicatorFlagsEnum.SHOW_ONLY_IF_DETECTED_BY_RADAR);\n            //}\n            m_intializing = false;\n\n            UpdateGenerators();\n\n            UseProperties = new MyUseProperties(MyUseType.FromHUB, MyUseType.FromHUB);\n            if (objectBuilder.UseProperties == null)\n            {\n                UseProperties.Init(MyUseType.FromHUB, MyUseType.FromHUB, 3, 4000, false);\n            }\n            else\n            {                \n                UseProperties.Init(objectBuilder.UseProperties);\n            }\n\n            AlarmOn = objectBuilder.AlarmOn;\n            RefillTime = objectBuilder.RefillTime;\n\n            // check possible values\n            if (Inventory.TemplateType != null && RefillTime == null) \n            {\n                RefillTime = DEFAULT_REFILL_TIME_IN_SEC;\n            }\n            else if (Inventory.TemplateType == null && RefillTime != null) \n            {\n                RefillTime = null;\n            }\n        }\n\n        protected override void SetHudMarker()\n        {\n        }\n\n        //public void AssignToFoundationFactory(MyFoundationFactory foundationFactory)\n        //{\n        //    Debug.Assert(m_prefabTypeSingleFlagsCount[(int) PrefabTypesFlagEnum.FoundationFactory] == 0);\n\n        //    m_prefabTypesFlag = m_prefabTypesFlag | PrefabTypesFlagEnum.FoundationFactory;\n        //    m_prefabTypeSingleFlagsCount[(int)PrefabTypesFlagEnum.FoundationFactory]++;\n        //    if (MyEntities.Exist(this)) \n        //    {\n        //        MyEntities.Remove(this);\n        //    }\n\n        //    foundationFactory.AddChild(this, true);                        \n        //}\n\n        //  This method is responsible for adding new prefab modules into container\n        public MyEntity CreateAndAddPrefab(string hudLabelText, MyMwcObjectBuilder_PrefabBase prefabBuilder)\n        {\n            if (m_prefabs.Count + 1 >= m_prefabs.Capacity)\n                return null;\n\n            MyPrefabBase prefab = MyPrefabFactory.GetInstance().CreatePrefab(hudLabelText, this, prefabBuilder);\n\n            this.AddPrefab(prefab);\n            return (MyEntity) prefab;\n        }\n\n\n        // Removes prefab from this container working prefabs list\n        public void RemovePrefab(MyPrefabBase prefab)\n        {\n            this.Children.Remove(prefab);\n            m_prefabs.Remove(prefab);\n            UpdateAABB();\n\n            // update prefab type flags\n            foreach (PrefabTypesFlagEnum prefabTypeSingleFlag in MyPrefabTypesFlagHelper.ParseToSingleFlags(prefab.PrefabTypeFlag))\n            {\n                // if we remove last prefab of this type, then we update prefab types flag in prefab container\n                m_prefabTypeSingleFlagsCount[(int)prefabTypeSingleFlag]--;\n                if (m_prefabTypeSingleFlagsCount[(int)prefabTypeSingleFlag] == 0)\n                {\n                    m_prefabTypesFlag = m_prefabTypesFlag & (~prefabTypeSingleFlag);\n                }                \n            }\n\n            // remove prefab from categories dictionary\n            m_prefabsByCategory[(ushort)prefab.PrefabCategory].Remove(prefab);\n\n            m_deactivatedPrefabs.Remove(prefab);\n        }\n\n        private bool NeedsUpdateNow\n        {\n            get \n            {\n                return NeedsUpdateAlarm || m_needUpdateAABB || RefillTime != null;\n            }\n        }\n\n        private void RecheckNeedsUpdateState() \n        {\n            NeedsUpdate = NeedsUpdateNow;\n        }\n\n        private bool NeedsUpdateAlarm \n        {\n            get \n            {\n                return MyPrefabContainerConstants.MAX_ALARM_PLAYING_TIME_IN_MS > -1 &&\n                       m_alarmCue != null &&\n                       m_alarmCue.Value.IsPlaying;\n            }\n        }\n\n        public override void UpdateBeforeSimulation()\n        {\n            //Dont call this on children, set them NeedsUpdate personally\n            //base.UpdateBeforeSimulation();\n        }\n\n\n        public override void UpdateAfterSimulation()\n        {\n            //Dont call this on children, set them NeedsUpdate personally\n            //base.UpdateAfterSimulation();\n\n            if (m_needUpdateAABB)\n            {\n                UpdateAABBHr();\n                m_needUpdateAABB = false;\n                //NeedsUpdate = false;\n            }\n            if (NeedsUpdateAlarm) \n            {\n                HandleAlarm();\n            }\n            if (RefillTime != null) \n            {\n                HandleRefillInventory();\n            }\n            RecheckNeedsUpdateState();\n            //for (int i = 0; i < Children.Count; i++)\n            //{\n            //    var child = Children[i];\n            //    child.UpdateAfterSimulation();\n            //}\n        }\n\n        private void HandleRefillInventory() \n        {\n            if (MyMinerGame.TotalGamePlayTimeInMilliseconds - m_lastRefillTime > RefillTime.Value * 1000)\n            {\n                RefillInventory();\n            }\n        }\n\n        private void HandleAlarm() \n        {\n            if (MyMinerGame.TotalGamePlayTimeInMilliseconds - m_alarmCueStartPlaying > MyPrefabContainerConstants.MAX_ALARM_PLAYING_TIME_IN_MS)\n            {\n                StopAlarmCue();\n            }\n        }\n\n        public override bool Draw(MyRenderObject renderObject)\n        {\n            bool retval = true;\n            retval = base.Draw(renderObject);\n                 \n            return retval;\n        }\n\n\n        /// <summary>\n        /// DebugDrawBox\n        /// </summary>        \n        public override bool DebugDraw()\n        {\n            base.DebugDraw(); \n            \n            //DebugDrawAABBHr();\n            foreach (MyPrefabBase prefab in m_prefabs)\n            {\n                //This is not always called from Render because prefab does not need to have physics\n                prefab.DebugDraw();\n            }                \n            return true;\n        }\n\n        /// <summary>\n        /// DebugDrawBox\n        /// </summary>\n        /// <param name=\"color\"></param>\n        public void DrawSelectionBox(Vector4 color)\n        {\n            //@ Draw Sphere in the center\n            Matrix worldMat = this.WorldMatrix;\n            MySimpleObjectDraw.DrawTransparentSphere(ref worldMat, 2f, ref color, true, 12);\n\n            Matrix mat = Matrix.Identity;// .CreateTranslation(this.LocalVolumeOffset) * this.WorldMatrix;\n            BoundingBox bbox = WorldAABBHr;\n            MySimpleObjectDraw.DrawWireFramedBox(ref mat, ref bbox, ref color, 0.01f, 1);\n        }\n\n        public void DrawSelectionBoxAndBounding(bool selected, bool entered)\n        {\n            if (MyEditor.Static.IsEditingPrefabContainer() && m_editingActive == false) return;\n            //if (m_selectionBox == null) return;\n\n            // Calculate selection box size relatively to position of camera\n            Vector3 vLength = MySpectator.Position - GetPosition();\n            float screenScale = vLength.Length() / 30;\n            float maxDistanceFromCenter = MyPrefabContainerConstants.MAX_DISTANCE_FROM_CONTAINER_CENTER / 4;\n            float size = MathHelper.Clamp(screenScale, 1, maxDistanceFromCenter);\n            Vector3 selectionBox = new Vector3(size, size, size);\n\n            Vector4 defaultColor = new Vector4(0f, 0.95f, 0f, 0.1f);\n            Vector4 highLight = Vector4.Zero;\n            Vector4 selectColor = Vector4.Zero; \n            if (entered)\n                defaultColor = new Vector4(0.99f, 0.4f, 0f, 0.4f);\n\n            if (HighlightSelectionBox || selected)\n            {\n                float timeBlic = MyMinerGame.TotalGamePlayTimeInMilliseconds % 400;\n                if (timeBlic > 250)\n                    timeBlic = 400 - timeBlic;\n                timeBlic = MathHelper.Clamp(1 - timeBlic / 250, 0, 1);\n\n                if (selected)\n                {\n                    defaultColor = new Vector4(0.5f, 0.5f, 0.0f, 0.2f);\n                }\n\n                float colorR = MathHelper.Lerp(0f, /*0.8f*/defaultColor.X, timeBlic);\n                float colorG = MathHelper.Lerp(/*0.75f*/defaultColor.Y, 0f, timeBlic);\n                float colorB = MathHelper.Lerp(0f, /*0.8f*/defaultColor.Z, timeBlic);\n\n                highLight = new Vector4(colorR, colorG, colorB, 0.1f);\n            }\n\n            if (MyEditor.DisplayPrefabContainerAxis)\n            {\n                AddBoundingSelectionBillboard(entered, Vector3.Left, Vector3.Forward, Vector3.Up, new Vector3(-selectionBox.X, 0, 0), selectionBox.X, defaultColor + highLight + selectColor);\n                AddBoundingSelectionBillboard(entered, Vector3.Left, Vector3.Forward, Vector3.Up, new Vector3(selectionBox.X, 0, 0), selectionBox.X, defaultColor + highLight + selectColor);\n                AddBoundingSelectionBillboard(entered, Vector3.Left, Vector3.Forward, Vector3.Right, new Vector3(0, selectionBox.X, 0), selectionBox.X, defaultColor + highLight + selectColor);\n                AddBoundingSelectionBillboard(entered, Vector3.Left, Vector3.Forward, Vector3.Right, new Vector3(0, -selectionBox.X, 0), selectionBox.X, defaultColor + highLight + selectColor);\n                AddBoundingSelectionBillboard(entered, Vector3.Left, Vector3.Up, Vector3.Right, new Vector3(0, 0, selectionBox.X), selectionBox.X, defaultColor + highLight + selectColor);\n                AddBoundingSelectionBillboard(entered, Vector3.Left, Vector3.Up, Vector3.Right, new Vector3(0, 0, -selectionBox.X), selectionBox.X, defaultColor + highLight + selectColor);\n\n                AddSelectionBoxLineBillboard(entered, AxisTypesEnum.X, defaultColor + selectColor, screenScale);\n                AddSelectionBoxLineBillboard(entered, AxisTypesEnum.Y, defaultColor + selectColor, screenScale);\n                AddSelectionBoxLineBillboard(entered, AxisTypesEnum.Z, defaultColor + selectColor, screenScale);\n            }\n\n            if (MyEditor.DisplayPrefabContainerBounding == true)\n            {\n                //change texture here if we r in container. . . \n                float distanceFromCenter = MyPrefabContainerConstants.MAX_DISTANCE_FROM_CONTAINER_CENTER;\n                AddBoundingBillboard(entered, Vector3.Left, Vector3.Forward, Vector3.Up, new Vector3(-distanceFromCenter, 0, 0), distanceFromCenter, defaultColor + selectColor);\n                AddBoundingBillboard(entered, Vector3.Left, Vector3.Forward, Vector3.Up, new Vector3(distanceFromCenter, 0, 0), distanceFromCenter, defaultColor + selectColor);\n                AddBoundingBillboard(entered, Vector3.Left, Vector3.Forward, Vector3.Right, new Vector3(0, distanceFromCenter, 0), distanceFromCenter, defaultColor + selectColor);\n                AddBoundingBillboard(entered, Vector3.Left, Vector3.Forward, Vector3.Right, new Vector3(0, -distanceFromCenter, 0), distanceFromCenter, defaultColor + selectColor);\n                AddBoundingBillboard(entered, Vector3.Left, Vector3.Up, Vector3.Right, new Vector3(0, 0, distanceFromCenter), distanceFromCenter, defaultColor + selectColor);\n                AddBoundingBillboard(entered, Vector3.Left, Vector3.Up, Vector3.Right, new Vector3(0, 0, -distanceFromCenter), distanceFromCenter, defaultColor + selectColor);\n            }\n        }\n\n        void AddSelectionBoxLineBillboard(bool entered, AxisTypesEnum axis, Vector4 color, float scale)\n        {\n            int lineLength = 222;\n            int lineThickness = (int) MathHelper.Clamp(scale / 20, 3, 20);\n            \n            // Get position to start generating from\n            Vector3 startingPosition = Vector3.Zero;\n            if (axis == AxisTypesEnum.X)\n            {\n                startingPosition = this.GetPosition() - new Vector3(-MyPrefabContainerConstants.MAX_DISTANCE_FROM_CONTAINER_CENTER, 0, 0);\n            }\n            else if (axis == AxisTypesEnum.Y)\n            {\n                startingPosition = this.GetPosition() - new Vector3(0, MyPrefabContainerConstants.MAX_DISTANCE_FROM_CONTAINER_CENTER, 0);\n            }\n            else if (axis == AxisTypesEnum.Z)\n            {\n                startingPosition = this.GetPosition() - new Vector3(0, 0, -MyPrefabContainerConstants.MAX_DISTANCE_FROM_CONTAINER_CENTER);\n            }\n\n            for (int i = 0; i < MyPrefabContainerConstants.MAX_DISTANCE_FROM_CONTAINER_CENTER * 2; i += 200)\n            {\n                float delta = i;\n                if (i >= MyPrefabContainerConstants.MAX_DISTANCE_FROM_CONTAINER_CENTER * 2)\n                {\n                    break;\n                }\n\n                Matrix matrix = Matrix.Identity;\n\n                // Choose axis in which to generate selection box lines\n                Vector3 position = startingPosition;\n                Vector3 direction = Vector3.Zero;\n                if (axis == AxisTypesEnum.X)\n                {\n                    position.X -= delta;\n                    direction = this.WorldMatrix.Left;\n                }\n                else if (axis == AxisTypesEnum.Y)\n                {\n                    position.Y += delta;\n                    direction = this.WorldMatrix.Up;\n                }\n                else if (axis == AxisTypesEnum.Z)\n                {\n                    position.Z -= delta;\n                    direction = this.WorldMatrix.Forward;\n                }\n\n                Matrix localRot = Matrix.Identity;\n                matrix.Translation = Vector3.Transform(position - this.GetPosition(), this.WorldMatrix);\n                if(entered)\n                    MyTransparentGeometry.AddLineBillboard(MyTransparentMaterialEnum.DebrisTrailLine, color, matrix.Translation,\n                        direction, lineLength, lineThickness*2.5f);\n                else\n                    MyTransparentGeometry.AddLineBillboard(MyTransparentMaterialEnum.ProjectileTrailLine, color, matrix.Translation,\n                        direction, lineLength, lineThickness);\n            }\n        }\n\n        public override void DrawMouseOver(ref Vector3 highlightColor)\n        {\n            // When mouse over selection box, disallow to highlight any other components inside prefab container\n            if (HighlightSelectionBox == false)\n            {\n                base.DrawMouseOver(ref highlightColor);\n            }\n        }\n\n        private void AddBoundingSelectionBillboard(bool entered, Vector3 localForward, Vector3 localUp, Vector3 localRight, Vector3 localTranslation, float radius, Vector4 color)\n        {\n\n            Matrix localRot = Matrix.Identity;\n            localRot.Forward = localForward;\n            localRot.Up = localUp;\n            localRot.Right = localRight;\n            localRot.Translation = localTranslation;\n            Matrix matrix = localRot * this.GetOrientation();\n            matrix.Translation += this.GetPosition();\n\n\n            MyTransparentGeometry.AddBillboardOriented(\n                MyTransparentMaterialEnum.ContainerBorder, color,\n                    matrix.Translation, matrix.Left, matrix.Up, radius);\n        }\n\n        private void AddBoundingBillboard(bool entered, Vector3 localForward, Vector3 localUp, Vector3 localRight, Vector3 localTranslation, float radius, Vector4 color)\n        {\n\n            Matrix localRot = Matrix.Identity;\n            localRot.Forward = localForward;\n            localRot.Up = localUp;\n            localRot.Right = localRight;\n            localRot.Translation = localTranslation;\n            Matrix matrix = localRot * this.GetOrientation();\n            matrix.Translation += this.GetPosition();\n            \n            \n            MyTransparentGeometry.AddBillboardOriented(\n                MyTransparentMaterialEnum.ContainerBorderSelected, color,\n                    matrix.Translation, matrix.Left, matrix.Up, radius);\n        }\n\n        //return ID of user/palyer of this container\n        public int GetUserID()\n        {\n            return m_userID;\n        }\n\n        // Method that handles all changes required when moving from commited-2-editing or editing-2-commited state.\n        public void SwitchEditMode()\n        {\n            m_editingActive = !m_editingActive;\n        }\n\n        //  Helper method to retrieve center position of multiple phys objects\n        Vector3 GetPrefabsCenter(IEnumerable<MyEntity> prefabs)\n        {\n            Vector3 center = Vector3.Zero;\n            int i = 0;\n            foreach (MyEntity entity in prefabs)\n            {\n                center = center + entity.GetPosition();\n                i++;\n            }\n\n            return Vector3.Divide(center, i);\n        }\n\n        public bool GetIntersectionWithMaximumBoundingBox(ref BoundingSphere sphere)\n        {\n            Vector3 min = new Vector3(-MyPrefabContainerConstants.MAX_DISTANCE_FROM_CONTAINER_CENTER, -MyPrefabContainerConstants.MAX_DISTANCE_FROM_CONTAINER_CENTER, -MyPrefabContainerConstants.MAX_DISTANCE_FROM_CONTAINER_CENTER);\n            Vector3 max = new Vector3(MyPrefabContainerConstants.MAX_DISTANCE_FROM_CONTAINER_CENTER, MyPrefabContainerConstants.MAX_DISTANCE_FROM_CONTAINER_CENTER, MyPrefabContainerConstants.MAX_DISTANCE_FROM_CONTAINER_CENTER);\n\n            BoundingSphere newSphere = new BoundingSphere(this.GetPosition(), MyPrefabContainerConstants.MAX_DISTANCE_FROM_CONTAINER_CENTER);\n            BoundingBox bb = BoundingBox.CreateFromSphere(newSphere);\n            return bb.Intersects(sphere);\n        }\n\n        public override bool GetIntersectionWithSphere(ref BoundingSphere sphere)\n        {\n            return this.WorldAABB.Intersects(sphere);\n        }\n\n        public override bool GetIntersectionWithLine(ref MyLine line, out MyIntersectionResultLineTriangleEx? t, IntersectionFlags flags = IntersectionFlags.ALL_TRIANGLES)\n        {\n            t = null;\n            foreach (MyPrefabBase prefab in m_prefabs)\n            {\n                MyEntity entity = prefab as MyEntity;\n                MyIntersectionResultLineTriangleEx? prefabIntersectionResult;\n                entity.GetIntersectionWithLine(ref line, out prefabIntersectionResult);\n                t = MyIntersectionResultLineTriangleEx.GetCloserIntersection(ref t, ref prefabIntersectionResult);\n            }\n\n            return t != null;\n        }\n\n        public override bool GetIntersectionWithLine(ref MyLine line, out Vector3? v, bool useCollisionModel = true, IntersectionFlags flags = IntersectionFlags.ALL_TRIANGLES)\n        {\n            v = null;\n            BoundingBox box = BoundingBox.CreateFromSphere(new BoundingSphere(GetPosition(), m_selectionBox.Size().X));\n            float? dt = MyUtils.GetLineBoundingBoxIntersection(ref line, ref box);\n\n            if (dt == null)\n                return false;\n\n            v = line.From + line.Direction * dt;\n            return true;\n        }\n\n        public int GetWorkingPrefabsCount()\n        {\n            return m_prefabs.Count;\n        }\n\n\n        protected override MyMwcObjectBuilder_Base GetObjectBuilderInternal(bool getExactCopy)\n        {\n            List<MyMwcObjectBuilder_PrefabBase> prefabs = new List<MyMwcObjectBuilder_PrefabBase>(m_prefabs.Count);\n            MyMwcObjectBuilder_Inventory inventory = null;            \n            if (Inventory != null)\n            {\n                inventory = Inventory.GetObjectBuilder(getExactCopy);\n            }            \n            foreach (MyPrefabBase prefab in m_prefabs)\n            {\n                MyEntity entity = prefab;\n                if (MyEntities.IsMarkedForClose(entity))\n                    continue;\n\n                MyMwcObjectBuilder_PrefabBase prefabOld = entity.GetObjectBuilder(getExactCopy) as MyMwcObjectBuilder_PrefabBase;\n                prefabs.Add(prefabOld);\n            }\n            \n            MyMwcObjectBuilder_PrefabContainer objectBuilder \n                = new MyMwcObjectBuilder_PrefabContainer(null, MyMwcObjectBuilder_PrefabContainer_TypesEnum.INSTANCE, prefabs,\n                                                         GetUserID(), Faction, inventory);\n            objectBuilder.PositionAndOrientation.Position = this.GetPosition();\n            objectBuilder.PositionAndOrientation.Forward = this.GetOrientation().Forward;\n            objectBuilder.PositionAndOrientation.Up = this.GetOrientation().Up;\n            objectBuilder.DisplayName = DisplayName;\n            objectBuilder.UseProperties = UseProperties.GetObjectBuilder();\n            objectBuilder.AlarmOn = AlarmOn;\n            objectBuilder.RefillTime = RefillTime;\n            return objectBuilder;\n        }\n\n        public static MyMwcVector3Short GetRelativePositionInContainerCoords(Vector3 position)\n        {\n            return new MyMwcVector3Short(\n                (short)(position.X * MyPrefabContainerConstants.CONTAINER_CONVERSION_UNIT),\n                (short)(position.Y * MyPrefabContainerConstants.CONTAINER_CONVERSION_UNIT),\n                (short)(position.Z * MyPrefabContainerConstants.CONTAINER_CONVERSION_UNIT));\n        }\n\n        public static Vector3 GetRelativePositionInAbsoluteCoords(MyMwcVector3Short position)\n        {\n            return new Vector3(\n                (float)position.X / MyPrefabContainerConstants.CONTAINER_CONVERSION_UNIT,\n                (float)position.Y / MyPrefabContainerConstants.CONTAINER_CONVERSION_UNIT,\n                (float)position.Z / MyPrefabContainerConstants.CONTAINER_CONVERSION_UNIT);\n        }\n\n        // Each container has limited size which prefab positions cannot exceed, validate it in this method\n        // IMPORTANT! - it requires that prefab's relative position in container is provided(not world position)\n        public static bool IsPrefabOutOfContainerBounds(Vector3 prefabRelativePosition)\n        {\n            float x = prefabRelativePosition.X;\n            float y = prefabRelativePosition.Y;\n            float z = prefabRelativePosition.Z;\n\n            float maxDistance = MyPrefabContainerConstants.MAX_DISTANCE_FROM_CONTAINER_CENTER;\n\n            if (Math.Abs(x) < maxDistance && Math.Abs(y) < maxDistance && Math.Abs(z) < maxDistance)\n            {\n                return false;\n            }\n\n            return true;\n        }\n\n        //  Allows you to iterate through all working prefab objects\n        public IEnumerable<MyEntity> GetPrefabs()\n        {\n            foreach (var item in m_prefabs)\n            {\n                yield return (MyEntity) item;\n            }\n        }\n\n        public List<MyEntity> GetPrefabsInFrustum(ref BoundingFrustum boundingFrustum)\n        {\n            List<MyEntity> retList = null;\n            foreach (MyEntity entity in m_prefabs)\n            {\n                if (entity.GetIntersectionWithBoundingFrustum(ref boundingFrustum) == true)\n                {\n                    if (retList == null)\n                        retList = new List<MyEntity>();\n                    retList.Add(entity);\n                }\n            }\n\n            return retList;\n        }\n\n        \n        public bool IsEditingActive()\n        {\n            return m_editingActive;\n        }\n        \n\n        // close container\n        public override void Close()\n        {            \n            MyPrefabContainerManager.GetInstance().RemoveContainer(this);\n            Inventory.Close();\n            if (m_alarmCue != null && m_alarmCue.Value.IsPlaying) \n            {\n                m_alarmCue.Value.Stop(SharpDX.XACT3.StopFlags.Immediate);\n            }\n            \n            base.Close();\n        }\n\n        public override bool MoveAndRotate(Vector3 newPosition, Matrix newOrientation)\n        {\n            base.MoveAndRotate(newPosition, newOrientation);\n            UpdateAABB();\n            return true;\n        }\n\n        /// <summary>\n        /// UpdateAABB\n        /// </summary>\n        public void UpdateAABB()\n        {\n            m_needUpdateAABB = true;\n            NeedsUpdate = true;\n        }\n\n        /// <summary>\n        /// UpdateEditedNode\n        /// </summary>\n        /// <param name=\"entity\"></param>\n        public void UpdateEditedNode(MyEntity entity)\n        {\n            if (!(entity is MyPrefabBase))\n            {\n                //MyCommonDebugUtils.AssertDebug(false);\n                return;\n            }\n        }\n\n        /// <summary>\n        /// IsSelectabale\n        /// </summary>\n        /// <returns></returns>\n        public override bool IsSelectable()\n        {\n            return MyEntities.IsSelectable(this);\n        }\n\n        /// <summary>\n        /// Add prefab into container - reparenting,...\n        /// </summary>\n        /// <param name=\"prefab\"></param>\n        public void AddPrefab(MyPrefabBase prefab)\n        {\n            //@ Add prefab\n            //if (this.Children.Contains(prefab))\n            //{\n            //    prefab.SetVisible = true;\n            //}\n            //else\n            //{\n            //    this.Children.Add(prefab);\n            //    m_prefabs.Add(prefab);\n            //}\n\n            Debug.Assert(prefab.Parent == this);\n            if (!m_prefabs.Contains(prefab))\n            {\n                m_prefabs.Add(prefab);\n            }\n            else \n            {\n                prefab.Visible = true;\n            }\n            UpdateAABB();\n\n            // update prefab type flags\n            foreach (PrefabTypesFlagEnum prefabTypeSingleFlag in MyPrefabTypesFlagHelper.ParseToSingleFlags(prefab.PrefabTypeFlag))\n            {\n                // if we added first prefab of this type, then we update prefab types flag in prefab container\n                if (m_prefabTypeSingleFlagsCount[(int)prefabTypeSingleFlag] == 0)\n                {\n                    m_prefabTypesFlag = m_prefabTypesFlag | prefabTypeSingleFlag;\n                }\n                m_prefabTypeSingleFlagsCount[(int)prefabTypeSingleFlag]++;\n\n                if (prefabTypeSingleFlag == PrefabTypesFlagEnum.Vendor) \n                {\n                    Debug.Assert(m_prefabTypeSingleFlagsCount[(int)prefabTypeSingleFlag] <= 1, \"You can have max 1 vendor in prefab container!\");\n                }\n            }          \n  \n            // add prefab to categories dictionary\n            m_prefabsByCategory[(ushort)prefab.PrefabCategory].Add(prefab);\n\n            if (!m_intializing)\n            {\n                if (prefab is MyPrefabGenerator)\n                {\n                    UpdateGenerators();\n                }\n                else\n                {\n                    FindGeneratorsFor(prefab);\n                }\n            }\n        }        \n\n        public override void OnWorldPositionChanged(object source)\n        {\n            base.OnWorldPositionChanged(source);\n            UpdateAABB();\n        }\n\n        /// <summary>\n        /// IsEntityFromContainer\n        /// </summary>\n        /// <param name=\"entity\"></param>\n        /// <returns></returns>\n        public bool IsEntityFromContainer(MyEntity entity)\n        {\n            MyEntity tmpEntity = entity;\n            while (tmpEntity != null)\n            {\n                if (tmpEntity == this)\n                    return true;\n\n                tmpEntity = tmpEntity.Parent;\n            }\n\n            return false;\n        }\n\n        public override bool IsSelectableParentOnly()\n        {\n            return true;\n        }\n\n        /// <summary>\n        /// Called when [activated] which for entity means that was added to scene.\n        /// </summary>\n        /// <param name=\"source\"></param>\n        protected override void OnActivated(object source)\n        {\n            m_editingActive = false;\n            base.OnActivated(source);\n\n            MyPrefabContainerManager.GetInstance().AddContainer(this);\n        }\n\n        /// <summary>\n        /// Called when [deactivated] which for entity means that was removed from scene.\n        /// </summary>\n        /// <param name=\"source\"></param>\n        protected override void OnDeactivated(object source)\n        {\n            m_editingActive = !m_editingActive;\n            \n            MyPrefabContainerManager.GetInstance().RemoveContainer(this);\n\n            base.OnDeactivated(source);\n        }\n\n        public override MyMwcObjectBuilder_FactionEnum Faction\n        {\n            get\n            {\n                //Foundation factory\n                if (Parent != null)\n                    return Parent.Faction;\n\n                return base.Faction;\n            }\n        }        \n\n        public bool ContainsPrefab(PrefabTypesFlagEnum prefabTypeFlag)\n        {\n            return (m_prefabTypesFlag & prefabTypeFlag) != 0;\n        }\n\n        public List<MyPrefabBase> GetPrefabs(CategoryTypesEnum prefabCategory)\n        {\n            return m_prefabsByCategory[(int) prefabCategory];\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyPrefabContainer\";\n        }\n\n        /// <summary>\n        /// Update eletricity supply for each prefab\n        /// </summary>\n        public void UpdateGenerators()\n        {\n            foreach (var prefab in m_prefabs)\n            {\n                FindGeneratorsFor(prefab);\n            }\n\n            if (CanBeAlarmSignalized() && !m_alarmSignalized && AlarmOn) \n            {\n                StartAlarm();\n            }\n            else if (!CanBeAlarmSignalized() && m_alarmSignalized) \n            {\n                StopAlarm();\n            }\n        }\n\n        /// <summary>\n        /// Try find generator for prefab which will supply electricity\n        /// </summary>\n        public void FindGeneratorsFor(MyPrefabBase prefab)\n        {\n            int generatorsCount = 0;\n            foreach (var item in m_prefabs)\n            {\n                MyPrefabGenerator generator = item as MyPrefabGenerator;\n                if (generator != null && generator.IsWorking())\n                {\n                    float distanceSqr = generator.GetRange() + WorldVolume.Radius;\n                    distanceSqr *= distanceSqr;\n\n                    if(Vector3.DistanceSquared(prefab.GetPosition(), generator.GetPosition()) <= distanceSqr)\n                    {\n                        //prefab.Generator = generator;\n                        //return;\n                        generatorsCount++;\n                    }\n                }\n            }\n\n            //prefab.Generator = null;\n            prefab.GeneratorsCount = generatorsCount;\n        }\n\n        public event OnAlarmLaunchned OnAlarmLaunchned;\n\n        private MySoundCue? m_alarmCue;\n        private int m_alarmCueStartPlaying;\n\n        private bool m_alarmOn;\n        public bool AlarmOn \n        {\n            get \n            {\n                return m_alarmOn;\n            }\n            set \n            {\n                //bool changed = value != m_alarmOn;\n                m_alarmOn = value;                \n                //if (changed) \n                //{\n                //    NeedsUpdate = m_alarmOn;\n                //}\n                if (m_alarmOn && CanBeAlarmSignalized())\n                {\n                    StartAlarm();\n                }\n                else \n                {\n                    StopAlarm();\n                }\n            }\n        }\n\n        private bool m_alarmSignalized;\n\n        private bool CanBeAlarmSignalized()\n        {\n            // we can launch alarm, when prefab auto charging enabled\n            if (MyFakes.ENABLE_PREFABS_AUTO_CHARGING) \n            {\n                return true;\n            }\n\n            // we can launch alarm, when prefab container contains working generator\n            foreach (MyPrefabBase prefabGenerator in GetPrefabs(CategoryTypesEnum.GENERATOR)) \n            {\n                MyPrefabGenerator generator = prefabGenerator as MyPrefabGenerator;\n                if (generator.IsWorking()) \n                {\n                    return true;\n                }\n            }\n            // we can launch alarm, when prefab container contains alarm, which doesn't require energy\n            foreach (MyPrefabBase prefabAlarm in GetPrefabs(CategoryTypesEnum.ALARM)) \n            {\n                MyPrefabAlarm alarm = prefabAlarm as MyPrefabAlarm;\n                if (alarm.RequiresEnergy != null && !alarm.RequiresEnergy.Value) \n                {\n                    return true;\n                }\n            }\n            return false;\n        }\n\n        private void SetAlarmPrefabs(bool enabled) \n        {\n            foreach (MyPrefabBase prefab in GetPrefabs(CategoryTypesEnum.ALARM))\n            {\n                MyPrefabAlarm alarmPrefab = prefab as MyPrefabAlarm;\n                Debug.Assert(alarmPrefab != null);\n                alarmPrefab.Enabled = enabled;\n            }\n        }\n\n        private void StartAlarm() \n        {\n            SetAlarmPrefabs(true);\n            PlayAlarmCue();\n            m_alarmSignalized = true;\n        }\n\n        private void StopAlarm() \n        {\n            SetAlarmPrefabs(false);\n            StopAlarmCue();\n            m_alarmSignalized = false;\n        }\n\n        public void LaunchAlarm(object sender, MyEntity entity) \n        {\n            if (!AlarmOn)\n            {\n                if (OnAlarmLaunchned != null)\n                {\n                    OnAlarmLaunchned(sender, entity);\n                }\n                MyScriptWrapper.OnAlarmLaunched(this, entity);\n                AlarmOn = true;\n\n                AggroBots(entity);\n            }\n        }        \n\n        private void PlayAlarmCue() \n        {\n            if ((m_alarmCue == null) || !m_alarmCue.Value.IsPlaying)\n            {\n                m_alarmCue = MyAudio.AddCue2D(MySoundCuesEnum.SfxClaxonAlert);\n                m_alarmCueStartPlaying = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n            }\n            RecheckNeedsUpdateState();\n        }\n\n        private void StopAlarmCue() \n        {\n            if ((m_alarmCue != null) && m_alarmCue.Value.IsPlaying)\n            {\n                m_alarmCue.Value.Stop(SharpDX.XACT3.StopFlags.Release);\n                m_alarmCue = null;\n            }\n        }\n\n        private void AggroBots(MyEntity entity)\n        {\n            MySmallShip smallShip = entity as MySmallShip;\n            if (smallShip != null)\n            {\n                // Untested stealth mechanics, uncomment when needed\n\n                //UpdateAABBHr();\n                //BoundingBox aggroBox = new BoundingBox(WorldAABBHr.Min - Vector3.One*1000, WorldAABBHr.Max + Vector3.One*1000);\n                //MyDangerZones.Instance.Aggro(aggroBox, smallShip);\n            }\n        }\n\n        public override void DebugDrawDeactivated()\n        {\n            foreach (MyPrefabBase prefab in m_deactivatedPrefabs) \n            {\n                prefab.DebugDrawDeactivated();\n            }\n\n            if (!Activated && Visible) \n            {\n                DrawSelectionBoxAndBounding(false, true);\n            }\n        }\n\n        public void DeactivatePrefab(MyPrefabBase prefab) \n        {\n            if(!m_deactivatedPrefabs.Contains(prefab) && prefab.Parent == this)\n            {\n                m_deactivatedPrefabs.Add(prefab);\n            }\n        }\n\n        public void ActivatePrefab(MyPrefabBase prefab) \n        {            \n            m_deactivatedPrefabs.Remove(prefab);\n        }\n\n        public IEnumerable<MyPrefabBase> GetDeactivatedPrefabs() \n        {\n            return m_deactivatedPrefabs;\n        }\n\n        public void RefillInventory() \n        {\n            Debug.Assert(Inventory.TemplateType != null);\n            if (!MyGuiScreenInventoryManagerForGame.IsOtherSideInventory(Inventory))\n            {\n                Inventory.ClearInventoryItems(true);\n                MyInventoryTemplates.RefillInventory(Inventory);\n                m_lastRefillTime = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n            }\n        }\n\n        #region IMyUseablePrefab\n        public MyGuiControlEntityUse GetGuiControl(IMyGuiControlsParent parent)\n        {\n            return new MyGuiControlPrefabContainerUse(parent, this);\n        }\n\n        public MyEntity GetEntity()\n        {\n            return this;\n        }\n\n        public void Use(MySmallShip useBy)\n        {\n            MyGuiManager.AddScreen(new MyGuiScreenEntityUseSolo(this));\n        }\n\n        public void UseFromHackingTool(MySmallShip useBy, int hackingLevelDifference)\n        {\n            Use(useBy);\n        }\n\n        public bool CanBeUsed(MySmallShip usedBy)\n        {\n            return MyFactions.GetFactionsRelation(usedBy, this) == MyFactionRelationEnum.Friend;\n        }\n\n        public bool CanBeHacked(MySmallShip hackedBy)\n        {\n            return (MyFactions.GetFactionsRelation(hackedBy, this) == MyFactionRelationEnum.Neutral ||\n                MyFactions.GetFactionsRelation(hackedBy, this) == MyFactionRelationEnum.Enemy);\n        }\n\n        public MyUseProperties UseProperties\n        {\n            get;\n            set;\n        }\n        #endregion\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Prefabs/Container/MyPrefabContainerManager.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Debugging;\nusing MinerWars.AppCode.Toolkit.Input;\nusing MinerWars.AppCode.Game.Render;\nusing MinerWars.AppCode.Game.Editor;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.Localization;\nusing SysUtils.Utils;\n\nnamespace MinerWars.AppCode.Game.Entities.Prefabs\n{\n    class MyPrefabContainerManager\n    {\n        private static MyPrefabContainerManager m_Instance = null;\n        private List<MyPrefabContainer> m_containerList = new List<MyPrefabContainer>();\n        private bool m_debugDraw = false;\n        private bool m_enableAABBUnderMouse = false;\n        private Vector4 m_dbgColor = new Vector4(0.6f, 0.6f, 0.3f, 0.6f);\n        private Vector4 m_dbgColorNodes = new Vector4(1f, 0.5f, 0.1f, 0.6f);\n\n        private static Guid C_DBG_DRAW_ID = Guid.NewGuid();\n\n        //////////////////////////////////////////////////////////////////////////\n        private MyPrefabContainerManager() \n        {\n            short modifier = (short)MyShortcut.ModifierValue.Control + (short)MyShortcut.ModifierValue.Shift;\n            string category = \"MyPrefabContainerManager\";\n\n            //@ debug draw Container\n            MyShortcut shortcut = new MyShortcut(Keys.P, modifier);\n            MyDebugConsole.GetInstance().RegisterShortcut(MyDebugSystem.Editor, category, \"Debug draw container\", shortcut, OnToggleDebugDraw);\n            \n            //@ invalidate nodes\n            shortcut = new MyShortcut(Keys.L, modifier);\n            MyDebugConsole.GetInstance().RegisterShortcut(MyDebugSystem.Editor, category, \"ShowPhysicsAABBUnderCursor\", shortcut, OnShowPhysAABB);\n\n\n\n            MyRender.RegisterRenderModule(MyRenderModuleEnum.PrefabContainerManager, \"Prefab container manager\", DebugDraw, MyRenderStage.DebugDraw);\n            //@ check res if duplicity registration\n        }\n\n        public static MyPrefabContainerManager GetInstance()\n        {\n            if (m_Instance == null)\n                m_Instance = new MyPrefabContainerManager();\n\n            return m_Instance;\n        }\n\n\n        /// <summary>\n        /// Enable/Disable debugdraw called form debugConsole\n        /// </summary>\n        /// <param name=\"shortcut\"></param>\n        public void OnToggleDebugDraw(MyDebugConsole.MyDebugConsoleItem sender)\n        {\n            m_debugDraw = !m_debugDraw;\n            return;\n        }\n\n        /// <summary>\n        /// OnShowPhysAABB\n        /// </summary>\n        /// <param name=\"sender\"></param>\n        public void OnShowPhysAABB(MyDebugConsole.MyDebugConsoleItem sender)\n        {\n            m_enableAABBUnderMouse = !m_enableAABBUnderMouse;\n            MyEditor.Static.EnablePhysAABBUnderMouse(m_enableAABBUnderMouse);\n        }\n\n        /// <summary>\n        ///  returns cont number\n        /// </summary>\n        /// <returns></returns>\n        public int GetContainerCount()\n        {\n            return m_containerList.Count;\n        }\n\n        /// <summary>\n        /// AddContainer\n        /// </summary>\n        /// <param name=\"container\"></param>\n        public void AddContainer(MyPrefabContainer container)\n        {\n            m_containerList.Add(container);\n        }\n\n\n        /// <summary>\n        /// RemoveContainer\n        /// </summary>\n        /// <param name=\"container\"></param>\n        public void RemoveContainer(MyPrefabContainer container)\n        {\n            m_containerList.Remove(container);\n        }\n\n\n        /// <summary>\n        /// Clear\n        /// </summary>\n        public void Clear()\n        {\n            m_containerList.Clear();\n        }\n\n        /// <summary>\n        /// Draw bounding area of all containers(helps for overall orientation)\n        /// </summary>\n        public void DrawContainersBoundingArea()\n        {\n            if (MyEditor.Static.GetEditedPrefabContainer() == null)\n            {\n                foreach (MyPrefabContainer container in m_containerList)\n                {\n                    container.DrawSelectionBoxAndBounding(MyEditorGizmo.IsEntityOrItsParentSelected(container), false);\n\n                    /*\n                    if (MyEditor.DisplayPrefabContainerBounding == true)\n                        container.DrawContainerBounding();\n                    container.DrawSelectionBoxAndBounding(MyEditorGizmo.IsEntityOrItsParentSelected(container), false);\n                    */\n                }\n            }\n            else\n            {\n                MyEditor.Static.GetEditedPrefabContainer().DrawSelectionBoxAndBounding(false, true);\n                /*\n                MyEditor.Static.GetEditedPrefabContainer().DrawSelectionBox(false, true);\n                if (MyEditor.DisplayPrefabContainerBounding == true)\n                    MyEditor.Static.GetEditedPrefabContainer().DrawContainerBounding();\n                */\n            }\n        }\n\n        /// <summary>\n        /// \"Multi\"DebugDraw\n        /// </summary>\n        public void DebugDraw()\n        {\n            if (m_debugDraw)\n            {\n                foreach (MyPrefabContainer container in m_containerList)\n                {\n                    //@ TODO wrong -> need to rotate!\n                    container.UpdateAABBHr();\n                    BoundingBox aabb = container.WorldAABBHr;\n                    if (MyCamera.IsInFrustum(ref aabb) == true)\n                        container.DebugDraw();\n                }\n            }\n        }\n\n        /// <summary>\n        /// UnloadContent\n        /// </summary>\n        public void UnloadContent()\n        {\n            MyMwcLog.WriteLine(\"MyPrefabContainerManager.UnloadContent - START\");\n            MyMwcLog.IncreaseIndent();\n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyPrefabContainerManager.UnloadContent - END\");\n        }\n\n        /// <summary>\n        /// UnloadContent\n        /// </summary>\n        public void UnloadData()\n        {\n            foreach (MyPrefabContainer container in m_containerList)\n            {\n                //container.ClearSubCube();\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Prefabs/IMyUseableEntity.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.AppCode.Game.GUI.Prefabs;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing System.Diagnostics;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.Prefabs;\nusing MinerWars.AppCode.Game.Localization;\n\nnamespace MinerWars.AppCode.Game.Entities.Prefabs\n{\n    [Flags]\n    enum MyUseType \n    {\n        None = 0,\n        Solo = 1 << 0,\n        FromHUB = 1 << 1,        \n    }\n\n    interface IMyUseableEntity \n    {\n        MyUseProperties UseProperties { get; set; }\n        bool CanBeUsed(MySmallShip usedBy);\n        bool CanBeHacked(MySmallShip hackedBy);\n        void Use(MySmallShip useBy);\n        void UseFromHackingTool(MySmallShip useBy, int hackingLevelDifference);        \n    }\n\n    interface IMyHasGuiControl\n    {\n        MyGuiControlEntityUse GetGuiControl(IMyGuiControlsParent parent);\n        MyEntity GetEntity();\n    }\n\n    class MyUseProperties \n    {\n        private MyUseType m_useType;\n        public MyUseType UseType \n        {\n            get { return m_useType; }\n            set \n            {\n                m_useType = value & UseMask;\n            }\n        }\n        private MyUseType m_hackType;\n        public MyUseType HackType \n        {\n            get { return m_hackType; }\n            set \n            {\n                m_hackType = value & HackMask;\n            }\n        }\n\n        public int HackingLevel { get; set; }\n        public int HackingTime { get; set; }\n        public bool IsHacked { get; set; }\n\n        public MyUseType UseMask { get; private set; }\n        public MyUseType HackMask { get; private set; }\n\n        public MyTextsWrapperEnum? UseText { get; set; }\n\n        public MyUseProperties(MyUseType useMask, MyUseType hackMask, MyTextsWrapperEnum? useText = null) \n        {\n            UseMask = useMask;\n            HackMask = hackMask;\n            UseText = useText;\n        }        \n\n        public void Init(MyUseType useType, MyUseType hackType, int hackingLevel, int hackingTime, bool isHacked) \n        {\n            UseType = useType;\n            HackType = hackType;\n            HackingLevel = hackingLevel;\n            HackingTime = hackingTime;\n            IsHacked = isHacked;            \n        }\n\n        public void Init(MyMwcObjectBuilder_EntityUseProperties builder) \n        {\n            Init((MyUseType)builder.UseType, (MyUseType)builder.HackType, builder.HackingLevel, builder.HackingTime, builder.IsHacked);\n        }\n\n        public MyMwcObjectBuilder_EntityUseProperties GetObjectBuilder() \n        {\n            MyMwcObjectBuilder_EntityUseProperties builder = MyMwcObjectBuilder_Base.CreateNewObject(MyMwcObjectBuilderTypeEnum.EntityUseProperties, null) as MyMwcObjectBuilder_EntityUseProperties;\n\n            builder.UseType = (int)UseType;\n            builder.HackType = (int)HackType;\n            builder.HackingLevel = HackingLevel;\n            builder.HackingTime = HackingTime;\n            builder.IsHacked = IsHacked;\n\n            return builder;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Prefabs/MyPrefab.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Lights;\nusing MinerWars.AppCode.Game.Entities.SubObjects;\nusing MinerWars.AppCode.Game.Physics;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.AppCode.Physics;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.AppCode.Game.Prefabs;\nusing MinerWars.AppCode.Game.Explosions;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.AppCode.Game.TransparentGeometry.Particles;\nusing MinerWars.AppCode.Game.Voxels;\nusing MinerWars.AppCode.Game.Models;\nusing MinerWars.AppCode.Game.Decals;\nusing MinerWars.AppCode.Game.Editor;\nusing MinerWars.AppCode.Game.Gameplay;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing System.Diagnostics;\nusing MinerWars.AppCode.Game.Audio;\n\nusing MinerWars.AppCode.Game.Missions;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.World.Global;\n\nnamespace MinerWars.AppCode.Game.Entities.Prefabs\n{\n    #region old    \n    //class MyPrefab : MyEntity\n    //{\n    //    class MyPrefabLamp\n    //    {\n    //        const float BLIC_DURATON_IN_MILISECONDS = 30.0f;\n\n    //        public readonly Vector3 Position;\n    //        public readonly float RadiusMin;\n    //        public readonly float RadiusMax;\n    //        public readonly int TimerForBlic;\n    //        public readonly MyLight Light;\n\n    //        public MyPrefabLamp(Vector3 position, float radiusMin, float radiusMax, int timerForBlic)\n    //        {\n    //            Position = position;\n    //            RadiusMin = radiusMin;\n    //            RadiusMax = radiusMax;\n    //            TimerForBlic = timerForBlic;\n    //            Light = MyLights.AddLight();\n    //            Light.Start(MyLight.LightTypeEnum.PointLight, position, Vector4.One, 1, radiusMin);\n    //            Light.Intensity = 1;\n    //            Light.LightOn = true;\n    //        }\n\n    //        public void Draw()\n    //        {\n    //            Vector3 dir = MyMwcUtils.Normalize(MyCamera.Position - Position);\n\n    //            float timeBlic = MyMinerGame.TotalGamePlayTimeInMilliseconds % TimerForBlic;\n    //            if (timeBlic > BLIC_DURATON_IN_MILISECONDS) timeBlic = TimerForBlic - timeBlic;\n    //            timeBlic = MathHelper.Clamp(1 - timeBlic / BLIC_DURATON_IN_MILISECONDS, 0, 1);\n\n    //            float radius = MathHelper.Lerp(RadiusMin, RadiusMax, timeBlic);\n\n    //            MyTransparentGeometry.AddPointBillboard(MyTransparentMaterialEnum.ReflectorGlareAlphaBlended, Vector4.One, Position + dir * 5, radius, 0);\n    //            Light.Range = radius * 4;\n    //        }\n\n    //        public void Close()\n    //        {\n    //            MyLights.RemoveLight(Light);\n    //        }\n    //    }\n\n    //    private List<MyPrefabLamp> m_lamps;\n    //    private List<MyLight> m_lights;\n\n    //    protected MyPrefabConfiguration m_config;\n\n    //    protected MyPrefabContainer m_owner = null;  //owner container\n    //    private bool m_visible = true;\n    //    private bool m_isExploded = false;\n\n    //    public new bool IsVisible { get { return m_visible; } }\n    //    public bool SetVisible { set { m_visible = value; } }\n    //    //protected MyMwcObjectBuilder_Prefab_TypesEnum m_prefabTypeEnum;\n\n    //    public Matrix LocalOrientation;\n    //    public bool Modified;\n\n    //    public List<MyPrefabSnapPoint> SnapPoints { get; set; }\n\n    //    private Matrix[] m_smokeMatrices;\n    //    private MyParticleEffect[] m_smokeEffects;        \n\n    //    public MyPrefab(MyPrefabContainer owner)\n    //    {\n    //        m_owner = owner;\n    //        SnapPoints = new List<MyPrefabSnapPoint>();            \n    //    }\n\n    //    public virtual void Init(string displayName, Vector3 relativePosition, Matrix localOrientation, MyMwcObjectBuilder_PrefabBase objectBuilder, MyPrefabConfiguration prefabConfig)\n    //    {\n    //        StringBuilder displayNameSb = (displayName == null) ? null : new StringBuilder(displayName);\n    //        //StringBuilder hudLabelTextSb = new StringBuilder(Enum.GetName(typeof(MyModelsEnum), prefabConfig.ModelLod0Enum));\n\n    //        //TODO: Config.MaterialType \n    //        //m_prefabTypeEnum = prefabTypeEnum;\n    //        m_config = prefabConfig;\n\n    //        base.Init(displayNameSb, prefabConfig.ModelLod0Enum, prefabConfig.ModelLod1Enum, null, null, objectBuilder);\n\n    //        DisplayName = objectBuilder.DisplayName;\n\n    //        MaterialIndex = (ushort) objectBuilder.FactionAppearance;\n\n    //        this.LocalMatrix = Matrix.CreateWorld(relativePosition, localOrientation.Forward, localOrientation.Up);\n\n    //        //This solves bad saved values in DB   //this solves old prefabs max value\n    //        if (objectBuilder.PrefabMaxHealth == 0 || objectBuilder.PrefabMaxHealth == MyGameplayConstants.MAX_HEALTH_MAX)\n    //        {\n    //            objectBuilder.PrefabMaxHealth = m_gameplayProperties.MaxHealth;\n    //        }\n\n    //        //This solves bad saved values in DB   //this solves old prefabs max value\n    //        if (objectBuilder.PrefabHealth == 0 || objectBuilder.PrefabHealth == 500 ||\n    //            objectBuilder.PrefabHealth == MyGameplayConstants.HEALTH_MAX)\n    //        {\n    //            objectBuilder.PrefabHealth = m_gameplayProperties.MaxHealth;\n    //        }\n\n    //        MaxHealth = objectBuilder.PrefabMaxHealth;\n    //        Health = objectBuilder.PrefabHealth;\n\n    //        // create the box\n    //        MyPhysicsObjects physobj = MyPhysics.physicsSystem.GetPhysicsObjects();\n    //        MyRBTriangleMeshElementDesc trianglemeshDesc = physobj.GetRBTriangleMeshElementDesc();\n    //        MyMaterialType materialType = MyMaterialType.METAL;\n\n    //        trianglemeshDesc.SetToDefault();\n    //        trianglemeshDesc.m_Model = ModelLod0;\n    //        trianglemeshDesc.m_RBMaterial = MyMaterialsConstants.GetMaterialProperties(materialType).PhysicsMaterial;\n\n    //        MyRBTriangleMeshElement trEl = (MyRBTriangleMeshElement)physobj.CreateRBElement(trianglemeshDesc);\n\n\n    //        // Base rigid body is used to hold static prefabs\n    //        this.Physics = new PhysicsManager.Physics.MyGameRigidBody(this, 1.0f, RigidBodyFlag.RBF_RBO_STATIC) { MaterialType = materialType };\n    //        this.Physics.Enabled = true;\n    //        this.Physics.AddElement(trEl, true);\n\n    //        SnapPoints = GetSnapPoints(GetModelLod0(), this);\n\n    //        m_smokeMatrices = GetSmokePoints(GetModelLod0());\n    //        m_smokeEffects = new MyParticleEffect[m_smokeMatrices.Length];\n    //        Debug.Assert(m_smokeMatrices != null);\n    //        Debug.Assert(m_smokeEffects != null);\n\n    //        InitLampsAndLights();\n    //    }        \n\n    //    private void InitLampsAndLights()\n    //    {            \n    //        Matrix worldMatrix = Matrix.Multiply(m_owner.WorldMatrix, LocalMatrix);            \n\n    //        Dictionary<string, MyModelDummy> dummies = MyModels.GetModelOnlyData(ModelLod0.ModelEnum).Dummies;\n    //        foreach (KeyValuePair<string, MyModelDummy> dummy in dummies)\n    //        {\n    //            float scale = 4 * dummy.Value.Matrix.Left.Length();\n    //            if (dummy.Key.StartsWith(\"LAMP\"))\n    //            {\n    //                if (m_lamps == null)\n    //                {\n    //                    m_lamps = new List<MyPrefabLamp>();\n    //                }\n    //                m_lamps.Add(new MyPrefabLamp(dummy.Value.Matrix.Translation + worldMatrix.Translation, 5 * scale, 20 * scale, 980));\n    //            }\n    //            if (dummy.Key.Contains(\"LIGHT\"))\n    //            {\n    //                if (m_lights == null)\n    //                {             \n    //                    m_lights = new List<MyLight>();\n    //                }\n    //                MyLight light = MyLights.AddLight();\n    //                light.Start(MyLight.LightTypeEnum.PointLight, worldMatrix.Translation + dummy.Value.Matrix.Translation, new Vector4(0, 1, 0, 1), 2f, 25 * scale);\n    //                m_lights.Add(light);\n    //            }\n    //        }\n    //    }\n\n    //    private static Matrix[] GetSmokePoints(MyModel model)\n    //    {\n    //        return (from dummy in model.Dummies\n    //                where dummy.Key.StartsWith(\"destruction\", StringComparison.InvariantCultureIgnoreCase)\n    //                select dummy.Value.Matrix).ToArray();\n    //    }\n\n    //    public static List<MyPrefabSnapPoint> GetSnapPoints(MyModel model, MyPrefab prefab)\n    //    {\n    //        List<MyPrefabSnapPoint> snapPoints = new List<MyPrefabSnapPoint>();\n\n    //        foreach (var dummy in model.Dummies)\n    //        {\n    //            if (dummy.Key.StartsWith(\"SNAPPOINT\", StringComparison.InvariantCultureIgnoreCase))\n    //            {\n    //                var customData = dummy.Value.CustomData;\n    //                var snapPoint = new MyPrefabSnapPoint(prefab);\n\n    //                // Get rid of scale in rotation part\n    //                snapPoint.Matrix = Matrix.CreateWorld(dummy.Value.Matrix.Translation, dummy.Value.Matrix.Forward, dummy.Value.Matrix.Up);\n    //                snapPoint.SnapType = new MyPrefabSnapPoint.MyPrefabSnapPointType(\"OBJECT_\", \"\", dummy.Value.CustomData);\n    //                snapPoints.Add(snapPoint);\n\n    //                string targetPostfix = \"TARGET_BUILD_TYPE\";\n    //                foreach (var target in customData)\n    //                {\n    //                    if (target.Key.StartsWith(targetPostfix))\n    //                    {\n    //                        string postfix = target.Key.Substring(targetPostfix.Length);\n    //                        snapPoint.SnapTargets.Add(new MyPrefabSnapPoint.MyPrefabSnapPointType(\n    //                            \"TARGET_\",\n    //                            postfix,\n    //                            dummy.Value.CustomData));\n    //                    }\n    //                }\n    //            }\n    //        }\n\n    //        return snapPoints;\n    //    }\n\n    //    //////////////////////////////////////////////////////////////////////////\n    //    // IMyEntity INTERFACE\n    //    //////////////////////////////////////////////////////////////////////////\n\n    //    public MyPrefabContainer GetOwner()\n    //    {\n    //        return m_owner;\n    //    }\n\n    //    /// <summary>\n    //    /// Draw\n    //    /// </summary>\n    //    /// <returns></returns>\n    //    public override bool Draw()\n    //    {\n    //        if (!m_visible)\n    //            return false;\n\n    //        if (m_lamps != null)\n    //        {\n    //            for (int i = 0; i < m_lamps.Count; i++)\n    //            {\n    //                m_lamps[i].Draw();\n    //            }\n    //        }\n\n    //        return base.Draw();\n    //    }\n\n    //    public override bool DebugDraw()\n    //    {\n    //        //// For Debug purposes\n    //        //foreach (var snapPoint in SnapPoints)\n    //        //{\n    //        //    MyDebugDraw.DrawAxis(snapPoint.Matrix * WorldMatrix, 50, 1);\n    //        //}\n\n    //        //base.DebugDrawAABB();\n\n    //        return base.DebugDraw();\n    //    }\n\n    //    /// <summary>\n    //    /// Gets parent inverted matrix and test whether entity can move to target location\n    //    /// </summary>\n    //    /// <param name=\"moveIndicator\"></param>\n    //    /// <param name=\"parentWorldInv\"></param>\n    //    /// <returns></returns>\n    //    private bool PrepareMove(Vector3 moveIndicator, out Matrix parentWorldInv)\n    //    {\n    //        MyPrefabContainer container = Parent as MyPrefabContainer;\n    //        System.Diagnostics.Debug.Assert(container != null);\n\n    //        parentWorldInv = Parent.GetWorldMatrixInverted();\n    //        Matrix SubeCubeInv = parentWorldInv;\n\n    //        Vector3 relativePosTmp = MyUtils.GetRoundedVector3(MyUtils.GetTransform(moveIndicator, ref parentWorldInv), 1);\n    //        if (MyPrefabContainer.IsPrefabOutOfContainerBounds(relativePosTmp) == true)\n    //            return false;\n\n    //        return true;\n    //    }\n\n    //    public override bool MoveAndRotate(Vector3 moveIndicator, Matrix orientation)\n    //    {\n    //        Matrix parentWorldInv;\n    //        if (PrepareMove(moveIndicator, out parentWorldInv))\n    //        {\n    //            Vector3 relativePos = MyUtils.GetRoundedVector3(MyUtils.GetTransform(moveIndicator, ref parentWorldInv), 1);\n    //            Matrix localOrientation;\n    //            Matrix.Multiply(ref orientation, ref parentWorldInv, out localOrientation);\n    //            this.LocalMatrix = Matrix.CreateWorld(relativePos, localOrientation.Forward, localOrientation.Up);\n    //            LocalOrientation = localOrientation;\n    //            Modified = true;\n    //            return true;\n    //        }\n    //        return false;\n    //    }\n\n    //    public override bool CanMoveAndRotate(Vector3 moveIndicator, Matrix orientation)\n    //    {\n    //        Matrix parentMatrixInv;\n    //        return PrepareMove(moveIndicator, out parentMatrixInv);\n    //    }\n\n    //    protected override MyMwcObjectBuilder_Base GetObjectBuilderInternal(bool getExactCopy)\n    //    {\n    //        MyMwcObjectBuilder_Prefab objectBuilder = base.GetObjectBuilderInternal(getExactCopy) as MyMwcObjectBuilder_Prefab;\n    //        objectBuilder.PositionInContainer = MyPrefabContainer.GetRelativePositionInContainerCoords(this.LocalMatrix.Translation);\n\n    //        float yaw, pitch, roll;\n    //        Matrix rot = this.LocalMatrix;\n    //        rot.Translation = Vector3.Zero;\n    //        MyUtils.RotationMatrixToYawPitchRoll(ref rot, out yaw, out pitch, out roll);\n    //        objectBuilder.AnglesInContainer = new Vector3(yaw, pitch, roll);\n\n    //        if (MaxHealth == m_gameplayProperties.MaxHealth)\n    //        {\n    //            objectBuilder.PrefabMaxHealth = MyGameplayConstants.MAX_HEALTH_MAX;\n    //        }\n    //        else\n    //        {\n    //            objectBuilder.PrefabMaxHealth = MaxHealth;\n    //        }\n\n    //        if (Health == m_gameplayProperties.MaxHealth)\n    //            objectBuilder.PrefabHealth = MyGameplayConstants.HEALTH_MAX;\n    //        else\n    //            objectBuilder.PrefabHealth = Health;\n\n    //        objectBuilder.DisplayName = DisplayName;\n\n    //        return objectBuilder;\n    //    }\n\n\n    //    /// <summary>\n    //    /// Called when [activated] which for entity means that was added to scene.\n    //    /// </summary>\n    //    /// <param name=\"source\">The source of activation.</param>\n    //    protected override void OnActivated(object source)\n    //    {\n    //        base.OnActivated(source);\n\n    //        this.SetVisible = true;\n    //    }\n\n    //    /// <summary>\n    //    /// Called when [deactivated] which for entity means that was removed from scene.\n    //    /// </summary>\n    //    /// <param name=\"source\">The source of deactivation.</param>\n    //    protected override void OnDeactivated(object source)\n    //    {\n    //        this.SetVisible = false;\n\n    //        base.OnDeactivated(source);\n    //    }\n\n    //    public override bool IsSelectableAsChild()\n    //    {\n    //        return true;\n    //    }\n\n    //    public override void ResetRotation()\n    //    {\n    //        MoveAndRotate(this.GetPosition(), Parent.GetOrientation());\n    //    }\n\n    //    public override void Close()\n    //    {\n    //        MyScriptWrapper.OnEntityClose(this);\n\n    //        // Remove possible linked snap points from editor\n    //        MyEditor.Static.RemoveLinkedSnapPoints(this);\n\n    //        base.Close();\n\n    //        MyDecals.RemoveModelDecals(this);\n\n    //        // ((MyPrefabContainer)Parent).RemovePrefab(this); // Parent is null for some prefabs (e.g. some large ship weapons)\n\n    //        if (m_smokeEffects != null)\n    //        {\n    //            for (int i = 0; i < m_smokeEffects.Length; i++)\n    //            {\n    //                if (m_smokeEffects[i] != null)\n    //                {\n    //                    m_smokeEffects[i].Stop();\n    //                    MyParticlesManager.RemoveParticleEffect(m_smokeEffects[i]);\n    //                    m_smokeEffects[i] = null;\n    //                }\n    //            }\n    //        }\n\n    //        if (m_owner != null)\n    //            m_owner.RemovePrefab(this);\n\n    //        if (this.Physics != null)\n    //            this.Physics.RemoveAllElements();\n\n    //        if (m_lamps != null)\n    //        {\n    //            foreach (MyPrefabLamp prefabLamp in m_lamps)\n    //            {\n    //                prefabLamp.Close();\n    //            }\n    //        }\n    //        if (m_lights != null)\n    //        {\n    //            foreach (MyLight light in m_lights)\n    //            {\n    //                MyLights.RemoveLight(light);\n    //            }\n    //        }\n    //    }\n\n    //    /// <summary>\n    //    /// Generates explosion and debris.\n    //    /// </summary>\n    //    protected virtual void Explode()\n    //    {\n    //        DestroyPrefabsInside();\n\n    //        // only if prefab is big enough, make it explode and create debris))\n    //        if (WorldVolumeHr.Radius > MyExplosionsConstants.MIN_OBJECT_SIZE_TO_CAUSE_EXPLOSION_AND_CREATE_DEBRIS)\n    //        {\n    //            MyExplosion newExplosion = MyExplosions.AddExplosion();\n    //            if (newExplosion != null)\n    //            {\n    //                BoundingSphere explosionSphere = WorldVolumeHr;\n    //                explosionSphere.Radius *= 0.5f;\n    //                explosionSphere.Radius = MathHelper.Min(explosionSphere.Radius, MyExplosionsConstants.EXPLOSION_RADIUS_MAX);\n    //                //explosionSphere.Radius = MathHelper.Max(explosionSphere.Radius, MyExplosionsConstants.EXPLOSION_RANDOM_RADIUS_MIN);\n    //                MyVoxelMap voxelMap = MyVoxelMaps.GetOverlappingWithSphere(ref explosionSphere);\n    //                MyExplosionDebrisModel.CreateExplosionDebris(ref explosionSphere, MyGroupMask.Empty, this, voxelMap);\n    //                newExplosion.Start(.03f * WorldVolumeHr.Radius, MyExplosionTypeEnum.SMALL_SHIP_EXPLOSION, explosionSphere, MyExplosionsConstants.EXPLOSION_LIFESPAN);\n    //            }\n    //        }\n    //        else\n    //        {\n    //            var effect = MyParticlesManager.CreateParticleEffect((int)MyParticleEffectsIDEnum.Explosion_SmallPrefab);\n    //            effect.WorldMatrix = WorldMatrix;\n    //            effect.UserRadiusMultiplier = .1f * WorldVolumeHr.Radius;\n    //        }\n    //    }\n\n    //    /// <summary>\n    //    /// Using OBBs, detects prefabs that are COMPLETELY contained in this prefab's OBB (size multiplied by\n    //    /// MyPrefabConstants.EXPLOSION_DELETE_MULTIPLIER).\n    //    /// </summary>\n    //    private void DestroyPrefabsInside()\n    //    {\n    //        var obb = MyEditorBoundingOrientedBox.CreateFromBoundingBox(LocalAABB).Transform(WorldMatrix);\n    //        obb.HalfExtent *= MyPrefabConstants.EXPLOSION_DELETE_MULTIPLIER;\n\n    //        var bb = WorldAABBHr;\n    //        var intersecting = MyEntities.GetCollisionSkinsInIntersectingBoundingBox(ref bb);\n    //        foreach (var rbElement in intersecting)\n    //        {\n    //            var rb = rbElement.GetRigidBody();\n    //            if (rb == null)\n    //                continue;\n    //            var entity = ((MyGameRigidBody) rb.m_UserData).Entity;\n                \n    //            if (!(entity is MyPrefab) || entity == this)\n    //                continue;\n\n    //            var entityOBB = MyEditorBoundingOrientedBox.CreateFromBoundingBox(entity.LocalAABB).Transform(entity.WorldMatrix);\n    //            if (obb.Contains(ref entityOBB) == ContainmentType.Contains)\n    //            {\n    //                entity.Close();\n    //            }\n    //        }\n    //    }\n\n    //    public override void Update()\n    //    {\n    //        if (IsDead() && !m_isExploded)\n    //        {\n    //            m_isExploded = true;\n    //            Close();\n    //            Explode();\n    //        }\n\n    //        if (IsDamaged() && !m_isExploded) \n    //            DrawDestructionEffects(GetDamageRatio());\n\n    //        //UpdateAABBHr();\n\n    //        base.Update();\n    //    }\n\n    //    public override bool UpdateAfterIntegration()\n    //    {\n    //        var result = base.UpdateAfterIntegration();\n\n    //        if (m_smokeEffects != null)\n    //        {\n    //            if (m_smokeEffects.Length > 0)\n    //            {\n    //                UpdateSmokeEffects();\n    //            }\n    //        }\n\n    //        return result;\n    //    }\n\n    //    private void UpdateSmokeEffects()\n    //    {\n    //        float ratio = GetDamageRatio();\n    //        if (ratio < MyPrefabConstants.DAMAGED_HEALTH)\n    //        {\n    //            for (int i = 0; i < m_smokeEffects.Length; i++)\n    //            {\n    //                if (m_smokeEffects[i] != null)\n    //                {\n    //                    m_smokeEffects[i].Stop();\n    //                    m_smokeEffects[i] = null;\n    //                }\n    //            }\n    //        }\n    //        else\n    //        {\n    //            ratio = (ratio / MyPrefabConstants.DAMAGED_HEALTH) - 1;\n\n    //            int smokesActive = Convert.ToInt32(MathHelper.Lerp(1, m_smokeMatrices.Length, ratio));\n\n    //            // update active effects\n    //            for (int i = 0; i < smokesActive; i++)\n    //            {\n    //                var smokeEffect = m_smokeEffects[i];\n    //                if (smokeEffect == null)\n    //                {\n    //                    // alternate between 3 different effects\n    //                    smokeEffect = MyParticlesManager.CreateParticleEffect((int) MyParticleEffectsIDEnum.Damage_SmokeDirectionalA + (i % 3));\n    //                    smokeEffect.AutoDelete = false;\n\n    //                    m_smokeEffects[i] = smokeEffect;\n    //                }\n\n    //                smokeEffect.UserBirthMultiplier = 1;\n    //                smokeEffect.WorldMatrix = m_smokeMatrices[i] * WorldMatrix;\n    //            }\n\n    //            // turn off inactive smoke effects\n    //            for (int i = smokesActive; i < m_smokeEffects.Length; i++)\n    //            {\n    //                if (m_smokeEffects[i] != null)\n    //                {\n    //                    m_smokeEffects[i].UserBirthMultiplier = 0;\n    //                }\n    //            }\n    //        }\n    //    }\n\n    //    public override void OnWorldPositionChanged(object source)\n    //    {\n    //        UpdateAABBHr();\n    //        if (m_owner.WorldAABBHr.Contains(WorldAABBHr) != ContainmentType.Contains)\n    //        {\n    //            m_owner.UpdateAABB();\n    //        }\n\n    //        base.OnWorldPositionChanged(source);        \n    //    }\n\n    //    /// <summary>\n    //    /// IMPORTANT: this is not really 'render' method. It only manipulates particle effects.\n    //    /// </summary>\n    //    protected void DrawDestructionEffects(float damagedPercentage)\n    //    {\n    //        float heavyDamagePercentage = (damagedPercentage - MyExplosionsConstants.DAMAGE_SPARKS) / (1 - MyExplosionsConstants.DAMAGE_SPARKS);\n\n    //        if (heavyDamagePercentage < MyMwcMathConstants.EPSILON)\n    //            return;\n\n    //        MyModel model = GetModelLod0();\n\n    //        if (MyMwcUtils.GetRandomInt((int)(MyExplosionsConstants.FRAMES_PER_SPARK / (heavyDamagePercentage * System.Math.Min(model.BoundingSphere.Radius, 100) * 0.05f))) > 0)\n    //        //if (MyMwcUtils.GetRandomInt((int)(MyExplosionsConstants.FRAMES_PER_SPARK / heavyDamagePercentage)) > 0)\n    //            return;\n\n    //        int randomVertexIndex = MyMwcUtils.GetRandomInt(0, model.GetVerticesCount() - 1);\n    //        Vector3 randomVertex = model.Vertexes[randomVertexIndex];\n    //        var wMatrix = this.WorldMatrix;\n    //        Vector3 vertexInWorldSpace = MyUtils.GetTransform(randomVertex, ref wMatrix);\n    //        if (MyFakes.ENABLE_NEW_PARTICLES)\n    //        {\n    //            MyParticleEffect sparksEffect = MyParticlesManager.CreateParticleEffect((int)MyParticleEffectsIDEnum.Damage_Sparks);\n    //            sparksEffect.WorldMatrix = Matrix.CreateTranslation(vertexInWorldSpace);\n    //            sparksEffect.UserRadiusMultiplier = 0.003f * model.BoundingSphere.Radius;\n    //            MyAudio.AddCue3D(MySoundCuesEnum.SfxSpark, WorldMatrix.Translation, WorldMatrix.Forward, WorldMatrix.Up,\n    //                             Vector3.Zero);\n\n    //            MyLight light = MyLights.AddLight();\n    //            light.Start(MyLight.LightTypeEnum.PointLight, 1.0f);\n    //            light.PointOn = false;\n    //            light.Range = 1.0f;\n    //            sparksEffect.Tag = light;\n    //            sparksEffect.OnUpdate += new EventHandler(explosionEffect_OnUpdate);\n    //            sparksEffect.OnDelete += new EventHandler(explosionEffect_OnDelete);\n    //        }\n    //    }\n\n    //    static void explosionEffect_OnDelete(object sender, EventArgs e)\n    //    {\n    //        MyParticleEffect explosionEffect = sender as MyParticleEffect;\n    //        MyLights.RemoveLight(explosionEffect.Tag as MyLight);\n    //    }\n\n    //    static void explosionEffect_OnUpdate(object sender, EventArgs e)\n    //    {\n    //        MyParticleEffect explosionEffect = sender as MyParticleEffect;\n    //        MyLight light = explosionEffect.Tag as MyLight;\n    //        light.PointOn = true;\n    //        light.Position = explosionEffect.WorldMatrix.Translation;\n    //        light.Range = MathHelper.Clamp((float)explosionEffect.GetAABB().Size().Length() / 2.0f, 1.0f, MyLightsConstants.MAX_POINTLIGHT_RADIUS);\n    //        MyAnimatedPropertyVector4 animatedProperty; float time;\n    //        explosionEffect.GetGenerations()[3].Color.GetPreviousValue(0.0f, out animatedProperty, out time);\n    //        light.Intensity = 10 * MyMwcUtils.GetRandomFloat(0.6f, 0.9f);\n\n    //        Vector4 lightColor;\n    //        animatedProperty.GetInterpolatedValue<Vector4>(0.5f, out lightColor);\n    //        light.Color = lightColor;\n    //    }\n\n    //    public override MyMwcObjectBuilder_FactionEnum Faction\n    //    {\n    //        get\n    //        {\n    //            if (m_owner != null)\n    //            {\n    //                return m_owner.Faction;\n    //            }\n    //            return base.Faction;\n    //        }\n    //    }\n\n    //    //public MyMwcObjectBuilder_Prefab_TypesEnum PrefabType\n    //    //{\n    //    //    get { return m_prefabTypeEnum; }\n    //    //}\n\n    //    public CategoryTypesEnum PrefabCategory\n    //    {\n    //        get { return m_config.CategoryType; }\n    //    }\n\n    //    public SubCategoryTypesEnum? PrefabSubCategory\n    //    {\n    //        get { return m_config.SubCategoryType; }\n    //    }\n\n    //    public PrefabTypesFlagEnum PrefabTypeFlag\n    //    {\n    //        get { return m_config.PrefabTypeFlag; }\n    //    }        \n    //}\n    #endregion\n\n    class MyPrefab : MyPrefabBase\n    {        \n        public MyPrefab(MyPrefabContainer owner)\n            : base(owner)\n        {\n        }        \n\n        public MyMwcObjectBuilder_Prefab_TypesEnum PrefabType\n        {\n            get\n            {\n                return (MyMwcObjectBuilder_Prefab_TypesEnum) m_prefabId;\n            }\n            set\n            {\n                m_prefabId = (int) value;\n            }\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyPrefab\";\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Prefabs/MyPrefabAlarm.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Entities.Prefabs;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWarsMath;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.Prefabs;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.GUI.Prefabs;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.AppCode.Game.Lights;\nusing MinerWars.AppCode.Game.Models;\n\nusing System.Diagnostics;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.Render;\n\nnamespace MinerWars.AppCode.Game.Prefabs\n{\n    class MyPrefabAlarm : MyPrefabBase\n    {\n        protected override void WorkingChanged()\n        {\n            base.WorkingChanged();\n            if (IsWorking())\n            {\n                m_modelLod0 = m_modelLod0On;\n                m_modelLod1 = m_modelLod1On;\n            }\n            else \n            {\n                m_modelLod0 = m_modelLod0Off;\n                m_modelLod1 = m_modelLod1Off;\n            }\n            if (m_pointLight != null)\n            {\n                m_pointLight.LightOn = IsWorking();\n            }\n        }\n\n        private MyModel m_modelLod0On;        \n        private MyModel m_modelLod1On;\n        private MyModel m_modelLod0Off;\n        private MyModel m_modelLod1Off;\n\n        private MyLight m_pointLight;\n        private Matrix m_pointLocalMatrix;\n        private float m_intensityMax;\n        private int m_lastBlickChange;\n\n        public MyPrefabAlarm(MyPrefabContainer owner) \n            : base(owner)\n        {            \n            \n        }\n\n        protected override void InitPhysicsInternal()\n        {\n            InitBoxPhysics(MyMaterialType.METAL, ModelLod0, 1, 0, collisionLayer: (ushort)MyConstants.COLLISION_LAYER_PREFAB_ALARM, rbFlag: AppCode.Physics.RigidBodyFlag.RBF_RBO_STATIC);\n            Physics.Enabled = Activated;\n        }\n\n        protected override void InitPrefab(string displayName, Vector3 relativePosition, Matrix localOrientation, MyMwcObjectBuilder_PrefabBase objectBuilder, MyPrefabConfiguration prefabConfig)\n        {\n            MyMwcObjectBuilder_PrefabAlarm objectBuilderAlarm = objectBuilder as MyMwcObjectBuilder_PrefabAlarm;\n            MyPrefabConfigurationAlarm alarmConfig = prefabConfig as MyPrefabConfigurationAlarm;\n\n            m_modelLod0On = MyModels.GetModelOnlyData(alarmConfig.ModelLod0EnumOn);\n            if (alarmConfig.ModelLod1EnumOn != null)\n            {\n                m_modelLod1On = MyModels.GetModelOnlyData(alarmConfig.ModelLod1EnumOn.Value);\n            }\n            m_modelLod0Off = m_modelLod0;\n            m_modelLod1Off = m_modelLod1;\n\n            Flags |= EntityFlags.EditableInEditor;\n            InitLight();\n        }\n\n        private void InitLight()\n        {\n            m_pointLight = MyLights.AddLight();\n\n            m_pointLight.LightType = MyLight.LightTypeEnum.PointLight;\n\n            m_pointLight.Start(m_pointLight.LightType, 1);\n            m_pointLight.UseInForwardRender = true;\n\n\n            //grab first dummy and set it as point source\n            //since we dont support yet more lights in one prefab. add just the first one\n            MyModel model = MyModels.GetModelOnlyDummies(ModelLod0.ModelEnum);\n            m_pointLocalMatrix = Matrix.CreateTranslation(model.BoundingSphere.Center);            \n            \n            m_pointLight.Color = new Vector4(1f, 0f, 0f, 1f);\n            m_pointLight.ReflectorColor = Vector4.Zero;\n            m_pointLight.Falloff = 0.1f;\n            m_pointLight.ReflectorFalloff = 0.1f;\n            m_intensityMax = m_pointLight.Intensity = 10f;            \n            m_pointLight.ReflectorIntensity = 1f;            \n            m_pointLight.ReflectorRange = 1f;\n            m_pointLight.Range = 40f;\n            m_pointLight.PointLightOffset = 0f;\n\n            //to add reflector range to builders\n            m_pointLight.SpecularColor = new Vector3(1f, 0f, 0f);\n            m_pointLight.ReflectorConeDegrees = 0.1f;\n            m_lastBlickChange = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n\n            // here set the properties of glare for the prefab light            \n            m_pointLight.GlareOn = true;\n            m_pointLight.Glare.Type = MyLightGlare.GlareTypeEnum.Distant;            \n            m_pointLight.Glare.QuerySize = .8f;\n            UpdateLightWorldMatrix();\n        }\n\n        private void UpdateLightWorldMatrix()\n        {\n            if (m_pointLight != null)\n            {\n                Matrix newMat = m_pointLocalMatrix * base.WorldMatrix;\n\n                m_pointLight.SetPosition(newMat.Translation);\n                m_pointLight.ReflectorDirection = newMat.Down;\n                m_pointLight.ReflectorDirection = MyMwcUtils.Normalize(m_pointLight.ReflectorDirection);\n                m_pointLight.ReflectorUp = newMat.Right;\n                m_pointLight.ReflectorUp = MyMwcUtils.Normalize(m_pointLight.ReflectorUp);\n\n                // move the light outwards in the direction of the lamp, for purposes of glare\n                m_pointLight.SetPosition(m_pointLight.Position + 0.75f * m_pointLight.ReflectorDirection);\n            }\n        }\n\n        public override void OnWorldPositionChanged(object source)\n        {\n            base.OnWorldPositionChanged(source);\n\n            UpdateLightWorldMatrix();\n        }\n\n        protected override void UpdatePrefabBeforeSimulation()\n        {\n            base.UpdatePrefabBeforeSimulation();\n\n            m_pointLight.Intensity = 1.5f*m_intensityMax * ((1.0f +  (float)Math.Sin(2.60f*(float)Math.PI*(MyMinerGame.TotalGamePlayTimeInMilliseconds / 1000.0f)))*0.5f-0.3f);\n            //Debug.WriteLine(m_pointLight.Intensity);\n        }        \n\n        protected override MyMwcObjectBuilder_Base GetObjectBuilderInternal(bool getExactCopy)\n        {\n            MyMwcObjectBuilder_PrefabAlarm objectBuilder = base.GetObjectBuilderInternal(getExactCopy) as MyMwcObjectBuilder_PrefabAlarm;                     \n\n            return objectBuilder;\n        }\n\n        public override bool Draw(MyRenderObject renderObject)\n        {\n            return base.Draw(renderObject);\n        }\n\n        public MyMwcObjectBuilder_PrefabAlarm_TypesEnum PrefabAlarmType\n        {\n            get\n            {\n                return (MyMwcObjectBuilder_PrefabAlarm_TypesEnum)m_prefabId;\n            }\n            set\n            {\n                m_prefabId = (int)value;\n            }\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyPrefabAlarm\";\n        }\n\n        public override void Close()\n        {\n            MyLights.RemoveLight(m_pointLight);\n            m_pointLight = null;\n            base.Close();            \n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Prefabs/MyPrefabBankNode.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWarsMath;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.Prefabs;\nusing MinerWars.AppCode.Game.HUD;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.AppCode.Game.Entities.Prefabs;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.GUI.Core;\n\nnamespace MinerWars.AppCode.Game.Prefabs\n{\n    class MyPrefabBankNode : MyPrefabBase, IMyUseableEntity\n    {\n        public float Cash { get; private set; }\n\n        public MyPrefabBankNode(MyPrefabContainer owner) \n            : base(owner)\n        {            \n        }                \n\n        protected override void InitPrefab(string displayName, Vector3 relativePosition, Matrix localOrientation, MyMwcObjectBuilder_PrefabBase objectBuilder, MyPrefabConfiguration prefabConfig)\n        {\n            MyMwcObjectBuilder_PrefabBankNode objectBuilderBankNode = objectBuilder as MyMwcObjectBuilder_PrefabBankNode;\n            Cash = objectBuilderBankNode.Cash;\n            UseProperties = new MyUseProperties(MyUseType.None, MyUseType.Solo);\n            if (objectBuilderBankNode.UseProperties == null)\n            {\n                UseProperties.Init(MyUseType.None, MyUseType.Solo, 3, 4000, false);                \n            }\n            else\n            {                \n                UseProperties.Init(objectBuilderBankNode.UseProperties);\n            }\n            // some default cash for testing\n            if (!UseProperties.IsHacked)\n            {\n                Cash = 8000f;\n            }            \n        }\n\n        public override string GetCorrectDisplayName()\n        {\n            string displayName = DisplayName;\n\n            if (DisplayName == \"BankNode\")\n                displayName = MyTextsWrapper.Get(MyTextsWrapperEnum.BankNode).ToString();\n\n            return displayName;\n        }\n\n        protected override void SetHudMarker()\n        {\n            MyHud.ChangeText(this, new StringBuilder(DisplayName), MyGuitargetMode.Neutral, 0, MyHudIndicatorFlagsEnum.SHOW_TEXT | MyHudIndicatorFlagsEnum.SHOW_BORDER_INDICATORS | MyHudIndicatorFlagsEnum.SHOW_HEALTH_BARS | MyHudIndicatorFlagsEnum.SHOW_DISTANCE | MyHudIndicatorFlagsEnum.ALPHA_CORRECTION_BY_DISTANCE | MyHudIndicatorFlagsEnum.SHOW_MISSION_MARKER);            \n        }\n\n        protected override MyMwcObjectBuilder_Base GetObjectBuilderInternal(bool getExactCopy)\n        {\n            MyMwcObjectBuilder_PrefabBankNode objectBuilder = base.GetObjectBuilderInternal(getExactCopy) as MyMwcObjectBuilder_PrefabBankNode;\n\n            objectBuilder.Cash = Cash;\n            objectBuilder.UseProperties = UseProperties.GetObjectBuilder();\n\n            return objectBuilder;\n        }\n\n        public MyMwcObjectBuilder_PrefabBankNode_TypesEnum PrefabBankNodeType\n        {\n            get\n            {\n                return (MyMwcObjectBuilder_PrefabBankNode_TypesEnum)m_prefabId;\n            }\n            set\n            {\n                m_prefabId = (int)value;\n            }\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyPrefabBankNode\";\n        }\n\n        public MyUseProperties UseProperties\n        {\n            get; set;\n        }\n\n        public bool CanBeUsed(MySmallShip usedBy)\n        {\n            return false;\n        }\n\n        public bool CanBeHacked(MySmallShip hackedBy)\n        {\n            return IsWorking();\n        }\n\n        public void Use(MySmallShip useBy)\n        {\n            throw new NotImplementedException();\n        }\n\n        public void UseFromHackingTool(MySmallShip useBy, int hackingLevelDifference)\n        {\n            float cashMoveToPlayer = Cash * (0.5f + hackingLevelDifference * 0.1f);\n            MySession.Static.Player.Money += cashMoveToPlayer;\n            Cash -= cashMoveToPlayer;\n            MyHudNotification.AddNotification(\n                new MyHudNotification.MyNotification(MyTextsWrapperEnum.YouObtainNotification, MyGuiManager.GetFontMinerWarsGreen(), 5000, null, new object[] { MyMwcUtils.GetFormatedPriceForGame((decimal)cashMoveToPlayer) }));\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Prefabs/MyPrefabBase.cs",
    "content": "﻿#region Using\n\nusing System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.AppCode.Game.Decals;\nusing MinerWars.AppCode.Game.Editor;\nusing MinerWars.AppCode.Game.Explosions;\nusing MinerWars.AppCode.Game.Gameplay;\nusing MinerWars.AppCode.Game.Lights;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Entities.Prefabs;\nusing MinerWars.AppCode.Game.Entities.SubObjects;\nusing MinerWars.AppCode.Game.Entities.WayPoints;\nusing MinerWars.AppCode.Game.Physics;\nusing MinerWars.AppCode.Game.Missions;\nusing MinerWars.AppCode.Game.Models;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.AppCode.Game.TransparentGeometry.Particles;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Voxels;\nusing MinerWars.AppCode.Physics;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.Utils;\n\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.AppCode.Game.GUI;\nusing SysUtils.Utils;\nusing MinerWars.AppCode.Game.Render;\nusing MinerWars.AppCode.Game.HUD;\nusing KeenSoftwareHouse.Library.Memory;\nusing MinerWars.CommonLIB.AppCode.Import;\n\n#endregion\n\nnamespace MinerWars.AppCode.Game.Prefabs\n{\n    abstract class MyPrefabBase : MyEntity\n    {\n        public static float PrefabDamageMultiplier = 1.0f;\n\n        private List<Tuple<MyPrefabLamp, Matrix>> m_lamps;\n        private List<Tuple<MyLight, Matrix>> m_lights;\n        private List<MyParticleEffect> m_sparkEffects = new List<MyParticleEffect>();\n        private List<Tuple<MyParticleEffect, Matrix>> m_effects = new List<Tuple<MyParticleEffect, Matrix>>();\n        protected MyPrefabConfiguration m_config;\n\n        protected MyPrefabContainer m_owner = null;  //owner container\n\n        protected int m_prefabId;\n        EventHandler m_sparksEffectUpdateEvent;\n        EventHandler m_sparksEffectDeleteEvent;\n        public Matrix LocalOrientation;\n        public bool Modified;\n        protected bool m_isInitialized = false;\n\n        private bool? m_requiresEnergy = null;\n        public bool? RequiresEnergy\n        {\n            get\n            {\n                return m_requiresEnergy.HasValue ? m_requiresEnergy.Value : m_config.RequiresEnergy;\n            }\n            set\n            {\n                m_requiresEnergy = value;\n                WorkingChanged();\n            }\n        }\n\n        //public MyPrefabGenerator Generator { get; set; }\n        private int m_generatorsCount;\n        public int GeneratorsCount\n        {\n            get\n            {\n                return m_generatorsCount;\n            }\n            set\n            {\n                m_generatorsCount = value;\n                RecheckNeedsUpdate();\n            }\n        }\n        private float m_electricCapacity;\n        public float ElectricCapacity\n        {\n            get\n            {\n                return m_electricCapacity;\n            }\n            protected set\n            {\n                float oldValue = m_electricCapacity;\n                m_electricCapacity = value;\n                if (value > 0f && oldValue <= 0f ||\n                    value <= 0f && oldValue > 0f)\n                {\n                    WorkingChanged();\n                }\n                m_electricCapacity = MathHelper.Clamp(m_electricCapacity, m_config.MinElectricCapacity, m_config.MaxElectricCapacity);\n            }\n        }\n\n        public List<MyPrefabSnapPoint> SnapPoints { get; set; }\n\n        private Matrix[] m_smokeMatrices;\n        private MyParticleEffect[] m_smokeEffects;\n\n        protected List<MyPrefabKinematicPartBase> m_kinematicParts;\n\n        public IEnumerable<MyPrefabKinematicPartBase> GetKinematicParts()\n        {\n            return m_kinematicParts;\n        }\n\n        public override bool Enabled\n        {\n            set\n            {\n                bool changed = Enabled != value;\n                base.Enabled = value;\n                if (changed)\n                {\n                    WorkingChanged();\n                }\n            }\n        }\n        \n        protected bool m_needsUpdate = false;\n        private static List<MyElement> m_destroyHelper = new List<MyElement>();\n        private static List<MyPrefabBase> m_prefabsToDestroy = new List<MyPrefabBase>(128);\n        private static List<MyDummyPoint> m_particlesToStop = new List<MyDummyPoint>(128);\n\n        private bool? m_causesAlarm = null;\n        public bool CausesAlarm \n        {\n            get\n            {\n                return m_causesAlarm.HasValue ? m_causesAlarm.Value : m_config.CausesAlarm;\n            }\n        }\n\n        protected virtual void WorkingChanged()\n        {\n            RecheckNeedsUpdate();\n            UpdateKinematicParts();\n\n            m_enableEmissivity = IsWorking();\n        }\n\n        private void UpdateKinematicParts()\n        {\n            foreach (MyPrefabKinematicPartBase part in m_kinematicParts)\n            {\n                part.On = IsWorking();\n            }\n        }\n\n        public virtual bool IsWorking()\n        {\n            return Enabled && IsElectrified() && m_activated;\n        }\n\n        public virtual bool IsAbleToWork()\n        {\n            return IsElectrified() && m_activated;\n        }\n\n        public MyPrefabBase(MyPrefabContainer owner)\n        {\n            m_owner = owner;\n            SnapPoints = new List<MyPrefabSnapPoint>();\n            m_kinematicParts = new List<MyPrefabKinematicPartBase>();\n            Save = false;\n\n            m_sparksEffectUpdateEvent = sparksEffect_OnUpdate;\n            m_sparksEffectDeleteEvent = sparksEffect_OnDelete;\n        }\n\n        protected virtual void InitPrefab(string displayName, Vector3 relativePosition, Matrix localOrientation, MyMwcObjectBuilder_PrefabBase objectBuilder, MyPrefabConfiguration prefabConfig)\n        {\n\n        }\n\n        public virtual void Init(string displayName, Vector3 relativePosition, Matrix localOrientation, MyMwcObjectBuilder_PrefabBase objectBuilder, MyPrefabConfiguration prefabConfig)\n        {\n            Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyPrefabBase.Init\");\n\n            StringBuilder displayNameSb = GetDisplayNameSb(displayName);// (displayName == null) ? null : new StringBuilder(displayName);\n            //StringBuilder hudLabelTextSb = new StringBuilder(Enum.GetName(typeof(MyModelsEnum), prefabConfig.ModelLod0Enum));\n\n            //TODO: Config.MaterialType \n            //m_prefabTypeEnum = prefabTypeEnum;\n            m_prefabId = objectBuilder.GetObjectBuilderId().Value;\n            m_config = prefabConfig;\n\n            base.Init(displayNameSb, prefabConfig.ModelLod0Enum, prefabConfig.ModelLod1Enum, GetOwner(), null, objectBuilder, prefabConfig.ModelCollisionEnum);\n\n            m_needsUpdate = m_config.NeedsUpdate;\n            if (!string.IsNullOrEmpty(objectBuilder.DisplayName))\n            {\n                DisplayName = objectBuilder.DisplayName;\n            }\n\n            if (HasAvailableFactionMaterial(objectBuilder.FactionAppearance))\n            {\n                MaterialIndex = (ushort)objectBuilder.FactionAppearance;\n            }\n\n            this.LocalMatrix = Matrix.CreateWorld(relativePosition, localOrientation.Forward, localOrientation.Up);\n            \n            CastShadows = true;\n            \n            ////This solves bad saved values in DB   //this solves old prefabs max value\n            //if (objectBuilder.PrefabMaxHealth == 0 || objectBuilder.PrefabMaxHealth == MyGameplayConstants.MAX_HEALTH_MAX)\n            //{\n            //    objectBuilder.PrefabMaxHealth = m_gameplayProperties.MaxHealth;\n            //}\n\n            ////This solves bad saved values in DB   //this solves old prefabs max value\n            //if (objectBuilder.PrefabHealthRatio == 0 || objectBuilder.PrefabHealthRatio == 500 ||\n            //    objectBuilder.PrefabHealthRatio == MyGameplayConstants.HEALTH_MAX)\n            //{\n            //    objectBuilder.PrefabHealthRatio = m_gameplayProperties.MaxHealth;\n            //}            \n\n            Flags |= EntityFlags.EditableInEditor;\n\n            //MaxHealth = objectBuilder.PrefabMaxHealth;\n            //Health = objectBuilder.PrefabHealthRatio;\n            SetMaxHealth(objectBuilder.PrefabMaxHealth);\n            HealthRatio = objectBuilder.PrefabHealthRatio;\n\n            ElectricCapacity = objectBuilder.ElectricCapacity;\n\n            if (RequiresEnergy != null && RequiresEnergy.Value == false)\n            {   //We dont want these kind of prefabs to be charged every time sector is loaded\n                m_electricCapacity = m_config.MaxElectricCapacity;\n            }\n\n            m_causesAlarm = objectBuilder.CausesAlarm;\n            m_requiresEnergy = objectBuilder.RequiresEnergy;\n            AIPriority = objectBuilder.AIPriority;\n\n            if (m_config.InitPhysics)\n            {\n                InitPhysics();\n            }\n\n            SnapPoints = GetSnapPoints(GetModelLod0(), this);\n            InitKinematicParts();\n\n            m_smokeMatrices = GetSmokePoints(GetModelLod0());\n            m_smokeEffects = new MyParticleEffect[m_smokeMatrices.Length];\n            Debug.Assert(m_smokeMatrices != null);\n            Debug.Assert(m_smokeEffects != null);\n\n            InitLampsAndLights();\n            InitPrefab(displayName, relativePosition, localOrientation, objectBuilder, prefabConfig);\n            m_isInitialized = true;\n            \n            WorkingChanged();\n            Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        protected virtual StringBuilder GetDisplayNameSb(string displayName) \n        {\n            return (displayName == null) ? null : new StringBuilder(displayName);\n        }\n\n        /// <summary>\n        /// IMPORTANT!!! Don't override this in other prefabs, override SetPrefabHudMarker()\n        /// </summary>\n        protected override void SetHudMarker()\n        {\n            //SetPrefabHudMarker();\n            MyHud.ChangeText(this, new StringBuilder(this.DisplayName), MyGuitargetMode.Neutral);\n        }\n\n        //protected virtual void SetPrefabHudMarker() \n        //{\n        //    MyHud.ChangeText(this, new StringBuilder(this.DisplayName), MyGuitargetMode.Neutral);\n        //}\n\n        private void InitPhysics()\n        {\n            InitPhysicsInternal();\n        }\n\n        protected virtual void InitPhysicsInternal() \n        {\n            InitTrianglePhysics(MyMaterialType.METAL, 1.0f, ModelCollision, ModelLod0, collisionLayer: (ushort)MyConstants.COLLISION_LAYER_PREFAB);\n        }\n\n        private void InitKinematicParts()\n        {\n            // detect kinematic parts\n            // !!! now prepared only for kinematic rotating parts !!!\n            foreach (var dummyKVP in GetModelLod0().Dummies)\n            {\n                if (dummyKVP.Key.StartsWith(\"Dummy_Kinematic\"))\n                {\n                    MyModelDummy dummy = dummyKVP.Value;\n                    MyModelsEnum rotatingPartModel = MyModels.GetModelEnumByAssetName(dummy.CustomData[\"LINKEDMODEL\"].ToString());\n                    //TODO: read kinematic type, kinematic max velocity from dummies\n                    //TODO: read kinematic cues from config?\n                    MyPrefabKinematicRotatingPart rotatingPart = new MyPrefabKinematicRotatingPart(this.GetOwner());\n                    Vector3 rotationVector = new Vector3((float)Convert.ToDouble(dummy.CustomData[\"ROTATION.DIR.X\"]), -(float)Convert.ToDouble(dummy.CustomData[\"ROTATION.DIR.Z\"]), (float)Convert.ToDouble(dummy.CustomData[\"ROTATION.DIR.Y\"]));\n                    Matrix partMatrix = dummy.Matrix;\n                    rotatingPart.Init(this, rotatingPartModel, m_config.MaterialType, partMatrix, m_config.RotatingVelocity, m_config.LoopRotatingCue, m_config.LoopRotatingDamagedCue, m_config.StartRotatingCue, m_config.EndRotatingCue, rotationVector, Activated);\n                    m_kinematicParts.Add(rotatingPart);\n                }\n            }\n        }\n\n        private void InitLampsAndLights()\n        {\n            Matrix worldMatrix = Matrix.Multiply(m_owner.WorldMatrix, LocalMatrix);\n\n            Dictionary<string, MyModelDummy> dummies = MyModels.GetModelOnlyDummies(ModelLod0.ModelEnum).Dummies;\n            foreach (KeyValuePair<string, MyModelDummy> dummy in dummies)\n            {\n                float scale = 4 * dummy.Value.Matrix.Left.Length();\n                if (dummy.Key.StartsWith(\"LAMP\"))\n                {\n                    if (m_lamps == null)\n                    {\n                        m_lamps = new List<Tuple<MyPrefabLamp, Matrix>>();\n                    }\n                    m_lamps.Add(new Tuple<MyPrefabLamp, Matrix>(new MyPrefabLamp(dummy.Value.Matrix.Translation + worldMatrix.Translation, 5 * scale, 20 * scale, 980), dummy.Value.Matrix));\n                }\n                if (dummy.Key.Contains(\"LIGHT\") && (!dummy.Key.Contains(\"POINT_LIGHT_POS\")))\n                {\n                    if (m_lights == null)\n                    {\n                        m_lights = new List<Tuple<MyLight, Matrix>>();\n                    }\n                    MyLight light = MyLights.AddLight();\n                    light.Start(MyLight.LightTypeEnum.PointLight, worldMatrix.Translation + dummy.Value.Matrix.Translation, new Vector4(0, 1, 0, 1), 2f, 25 * scale);\n                    m_lights.Add(new Tuple<MyLight, Matrix>(light, dummy.Value.Matrix));\n                }\n                if (dummy.Key.ToUpper().Contains(\"PARTICLE\"))\n                {\n                    string particleIDString = dummy.Key.ToUpper().Replace(\"PARTICLE_\", \"\");\n                    if (particleIDString.Contains(\"_\"))\n                        particleIDString = particleIDString.Substring(0, particleIDString.IndexOf(\"_\"));\n                    int particleID = Convert.ToInt32(particleIDString);\n\n                    MyParticleEffect effect = MyParticlesManager.CreateParticleEffect(particleID, true);\n                    Matrix matrix = dummy.Value.Matrix * worldMatrix;\n                    effect.WorldMatrix = matrix;\n                    effect.AutoDelete = false;\n                    m_effects.Add(new Tuple<MyParticleEffect, Matrix>(effect, dummy.Value.Matrix));\n                }\n            }\n            UpdateChildrenPosition();\n        }\n\n        public void GetDefaultWaypointData(List<Vector3> positions, List<string> names = null, List<string> parentNames = null)\n        {\n            var dummies = ModelLod0 == null ? new Dictionary<string, MyModelDummy>() : MyModels.GetModelOnlyDummies(ModelLod0.ModelEnum).Dummies;\n\n            foreach (KeyValuePair<string, MyModelDummy> dummy in dummies)\n            {\n                if (dummy.Key.StartsWith(\"Waypoint\"))\n                {\n                    if (positions != null) positions.Add(Vector3.Transform(dummy.Value.Matrix.Translation, WorldMatrix));\n                    if (names != null) names.Add(dummy.Key);\n                    object parentName;\n                    string parentNameAsString = null;\n                    if (dummy.Value.CustomData.TryGetValue(\"ParentName\", out parentName))\n                        parentNameAsString = parentName as string;\n                    if (parentNames != null) parentNames.Add(parentNameAsString);\n                }\n            }\n\n        }\n\n        /// <summary>Add waypoints defined in the prefab (as dummy points with the name \"Waypoint...\").</summary>\n        /// <returns>A list of new waypoints.</returns>\n        public List<MyWayPoint> InitWaypoints()\n        {\n            var dummies = ModelLod0 == null ? new Dictionary<string, MyModelDummy>() : MyModels.GetModelOnlyDummies(ModelLod0.ModelEnum).Dummies;\n            var namedWayPoints = new Dictionary<string, MyWayPoint>();\n\n            // pass 1: create waypoints\n            foreach (KeyValuePair<string, MyModelDummy> dummy in dummies)\n            {\n                if (dummy.Key.StartsWith(\"Waypoint\"))\n                {\n                    Vector3 position = Vector3.Transform(dummy.Value.Matrix.Translation, WorldMatrix);\n                    namedWayPoints.Add(dummy.Key, MyWayPointGraph.CreateWaypoint(position, this));\n                }\n            }\n\n            // pass 2: connect waypoints that are very close\n            foreach (var v in namedWayPoints.Values)\n                foreach (var w in namedWayPoints.Values)\n                    if (v != w && MyWayPoint.Distance(v, w) < 0.5f)\n                        MyWayPoint.Connect(v, w);\n\n            // pass 3: connect waypoints to their parent waypoints\n            foreach (KeyValuePair<string, MyModelDummy> dummy in dummies)\n            {\n                if (dummy.Key.StartsWith(\"Waypoint\"))\n                {\n                    MyWayPoint wayPoint = namedWayPoints[dummy.Key];\n                    object parentName;\n                    if (dummy.Value.CustomData.TryGetValue(\"ParentName\", out parentName))\n                    {\n                        if (parentName is string)\n                        {\n                            MyWayPoint parentWayPoint;\n                            if (namedWayPoints.TryGetValue(parentName as string, out parentWayPoint))\n                                MyWayPoint.Connect(wayPoint, parentWayPoint);\n                        }\n                    }\n                }\n            }\n\n            // pass 4: all waypoints need to be in one connected component\n            System.Diagnostics.Debug.Assert(MyWayPoint.Connected(namedWayPoints.Values),\n                \"Prefab \" + (this is MyPrefab ? (this as MyPrefab).PrefabType.ToString() : \"id_\" + PrefabId.ToString()) + \" has separated waypoints.\");\n\n            return namedWayPoints.Values.ToList();\n        }\n\n        /// <summary>Get the waypoint that's a child of the current prefab and closest to the given position.</summary>\n        public MyWayPoint GetClosestWayPointTo(Vector3 position)\n        {\n            MyWayPoint best = null;\n            float bestDistance = float.PositiveInfinity;\n\n            foreach (var child in MyWayPoint.FilterWayPoints(Children))\n            {\n                float distance = Vector3.Distance(position, child.Position);\n                if (distance < bestDistance)\n                {\n                    bestDistance = distance;\n                    best = child;\n                }\n            }\n            return best;\n        }\n\n        private static Matrix[] GetSmokePoints(MyModel model)\n        {\n            return (from dummy in model.Dummies\n                    where dummy.Key.StartsWith(\"destruction\", StringComparison.InvariantCultureIgnoreCase)\n                    select dummy.Value.Matrix).ToArray();\n        }\n\n        public static List<MyPrefabSnapPoint> GetSnapPoints(MyModel model, MyPrefabBase prefab)\n        {\n            List<MyPrefabSnapPoint> snapPoints = new List<MyPrefabSnapPoint>();\n\n            foreach (var dummy in model.Dummies)\n            {\n                if (dummy.Key.StartsWith(\"SNAPPOINT\", StringComparison.InvariantCultureIgnoreCase))\n                {\n                    var customData = dummy.Value.CustomData;\n                    var snapPoint = new MyPrefabSnapPoint(prefab);\n\n                    // Get rid of scale in rotation part\n                    snapPoint.Matrix = Matrix.CreateWorld(dummy.Value.Matrix.Translation, dummy.Value.Matrix.Forward, dummy.Value.Matrix.Up);\n                    snapPoint.SnapType = new MyPrefabSnapPoint.MyPrefabSnapPointType(\"OBJECT_\", \"\", dummy.Value.CustomData);\n                    snapPoint.Name = dummy.Key;\n                    snapPoints.Add(snapPoint);\n\n                    string targetPostfix = \"TARGET_BUILD_TYPE\";\n                    foreach (var target in customData)\n                    {\n                        if (target.Key.StartsWith(targetPostfix))\n                        {\n                            string postfix = target.Key.Substring(targetPostfix.Length);\n                            snapPoint.SnapTargets.Add(new MyPrefabSnapPoint.MyPrefabSnapPointType(\n                                \"TARGET_\",\n                                postfix,\n                                dummy.Value.CustomData));\n                        }\n                    }\n                }\n            }\n\n            return snapPoints;\n        }\n\n        //////////////////////////////////////////////////////////////////////////\n        // IMyEntity INTERFACE\n        //////////////////////////////////////////////////////////////////////////\n\n        public MyPrefabContainer GetOwner()\n        {\n            return m_owner;\n        }\n\n        /// <summary>\n        /// Draw\n        /// </summary>\n        /// <returns></returns>\n        public override bool Draw(MyRenderObject renderObject)\n        {\n            if (base.Draw(renderObject))\n            {\n                if (m_lamps != null)\n                {\n                    for (int i = 0; i < m_lamps.Count; i++)\n                    {\n                        m_lamps[i].Item1.Draw();\n                    }\n                }\n\n                if (MyFakes.SHOW_UNPOWERED_PREFABS)\n                {\n                    m_diffuseColor = ElectricCapacity > 0 ? Vector3.One : Vector3.One * 0.3f;\n                }\n\n                /*  //Crashes in parallel update because object could have been deleted\n                foreach (MyParticleEffect sparkEffect in m_sparkEffects)\n                {\n                    //sparkEffect.WasVisibleLastFrame = LastFrameVisibilityEnum.VisibleLastFrame;\n                    sparkEffect.RenderCounter = MyRender.RenderCounter;\n                } */\n\n                foreach (var effect in m_effects)\n                {\n                    MyParticlesManager.CustomDraw(effect.Item1);\n                }\n                if (m_smokeEffects != null)\n                {\n                    foreach (var effect in m_smokeEffects)\n                    {\n                        if (effect != null)\n                        {\n                            MyParticlesManager.CustomDraw(effect);\n                        }\n                    }\n                }\n                return true;\n            }\n            return false;\n        }\n\n        public override bool DebugDraw()\n        {\n            //// For Debug purposes\n            //foreach (var snapPoint in SnapPoints)\n            //{\n            //    MyDebugDraw.DrawAxis(snapPoint.Matrix * WorldMatrix, 50, 1);\n            //}\n\n            //base.DebugDrawAABB();\n\n            return base.DebugDraw();\n        }\n\n        /// <summary>\n        /// Gets parent inverted matrix and test whether entity can move to target location\n        /// </summary>\n        /// <param name=\"moveIndicator\"></param>\n        /// <param name=\"parentWorldInv\"></param>\n        /// <returns></returns>\n        private bool PrepareMove(Vector3 moveIndicator, out Matrix parentWorldInv)\n        {\n            MyPrefabContainer container = Parent as MyPrefabContainer;\n            System.Diagnostics.Debug.Assert(container != null);\n\n            parentWorldInv = Parent.GetWorldMatrixInverted();\n            Matrix SubeCubeInv = parentWorldInv;\n\n            Vector3 relativePosTmp = MyUtils.GetRoundedVector3(MyUtils.GetTransform(moveIndicator, ref parentWorldInv), 1);\n            if (MyPrefabContainer.IsPrefabOutOfContainerBounds(relativePosTmp) == true)\n                return false;\n\n            return true;\n        }\n\n        public override bool MoveAndRotate(Vector3 moveIndicator, Matrix orientation)\n        {\n            Matrix parentWorldInv;\n            if (PrepareMove(moveIndicator, out parentWorldInv))\n            {\n                Matrix oldWorldMatrix = Matrix.Invert(this.WorldMatrix);\n                Vector3 oldPosition = this.GetPosition();\n\n                Vector3 relativePos = MyUtils.GetRoundedVector3(MyUtils.GetTransform(moveIndicator, ref parentWorldInv), 1);\n                Matrix localOrientation;\n                Matrix.Multiply(ref orientation, ref parentWorldInv, out localOrientation);\n                this.LocalMatrix = Matrix.CreateWorld(relativePos, localOrientation.Forward, localOrientation.Up);\n                LocalOrientation = localOrientation;\n                Modified = true;\n\n                return true;\n            }\n            return false;\n        }\n\n        public override bool CanMoveAndRotate(Vector3 moveIndicator, Matrix orientation)\n        {\n            Matrix parentMatrixInv;\n            return PrepareMove(moveIndicator, out parentMatrixInv);\n        }\n\n        protected override MyMwcObjectBuilder_Base GetObjectBuilderInternal(bool getExactCopy)\n        {\n            MyMwcObjectBuilder_PrefabBase objectBuilder = base.GetObjectBuilderInternal(getExactCopy) as MyMwcObjectBuilder_PrefabBase;\n            objectBuilder.PositionInContainer = MyPrefabContainer.GetRelativePositionInContainerCoords(this.LocalMatrix.Translation);\n\n            float yaw, pitch, roll;\n            Matrix rot = this.LocalMatrix;\n            rot.Translation = Vector3.Zero;\n            MyUtils.RotationMatrixToYawPitchRoll(ref rot, out yaw, out pitch, out roll);\n            objectBuilder.AnglesInContainer = new Vector3(yaw, pitch, roll);\n\n            Debug.Assert(MyUtils.IsValid(objectBuilder.AnglesInContainer), \"Invalid angles in container, look at matrix 'rot'!\");\n\n            //if (MaxHealth == m_gameplayProperties.MaxHealth)\n            //{\n            //    objectBuilder.PrefabMaxHealth = MyGameplayConstants.MAX_HEALTH_MAX;\n            //}\n            //else\n            //{\n            //    objectBuilder.PrefabMaxHealth = MaxHealth;\n            //}\n\n            //if (Health == m_gameplayProperties.MaxHealth)\n            //    objectBuilder.PrefabHealthRatio = MyGameplayConstants.HEALTH_MAX;\n            //else\n            //    objectBuilder.PrefabHealthRatio = Health;\n            objectBuilder.PrefabHealthRatio = HealthRatio;\n            objectBuilder.PrefabMaxHealth = GetMaxHealth();\n\n            objectBuilder.DisplayName = DisplayName;\n\n            objectBuilder.FactionAppearance = (MyMwcObjectBuilder_Prefab_AppearanceEnum)MaterialIndex;\n\n            objectBuilder.CausesAlarm = m_causesAlarm;\n            objectBuilder.RequiresEnergy = m_requiresEnergy;\n            objectBuilder.AIPriority = AIPriority;\n\n            return objectBuilder;\n        }\n\n\n        /// <summary>\n        /// Called when [activated] which for entity means that was added to scene.\n        /// </summary>\n        /// <param name=\"source\">The source of activation.</param>\n        protected override void OnActivated(object source)\n        {\n            base.OnActivated(source);\n            if (m_isInitialized)\n            {\n                WorkingChanged();\n            }\n            UpdateActivatedState();\n            //UpdateRenderobject(true);\n        }\n\n        /// <summary>\n        /// Called when [deactivated] which for entity means that was removed from scene.\n        /// </summary>\n        /// <param name=\"source\">The source of deactivation.</param>\n        protected override void OnDeactivated(object source)\n        {\n            base.OnDeactivated(source);\n            if (m_isInitialized)\n            {\n                WorkingChanged();\n            }\n            UpdateActivatedState();\n           // UpdateRenderobject(false);\n        }\n\n        private void UpdateActivatedState() \n        {\n            if (m_owner != null)\n            {\n                if (Activated)\n                {\n                    if (m_lamps != null)\n                    {\n                        foreach (var prefabLamp in m_lamps)\n                        {\n                            prefabLamp.Item1.Light.LightOn = true;\n                        }\n                    }\n                    if (m_lights != null)\n                    {\n                        foreach (var light in m_lights)\n                        {\n                            light.Item1.LightOn = true;\n                        }\n                    }\n\n                    m_owner.ActivatePrefab(this);\n                }\n                else\n                {            \n                    if (m_lamps != null)\n                    {\n                        foreach (var prefabLamp in m_lamps)\n                        {\n                            prefabLamp.Item1.Light.LightOn = false;\n                        }\n                    }\n                    if (m_lights != null)\n                    {\n                        foreach (var light in m_lights)\n                        {\n                            light.Item1.LightOn = false;\n                        }\n                    }\n\n                    m_owner.DeactivatePrefab(this);\n                }\n            }\n        }\n\n        public override bool IsSelectableAsChild()\n        {\n            return true;\n        }\n\n        public override void ResetRotation()\n        {\n            MoveAndRotate(this.GetPosition(), Parent.GetOrientation());\n        }\n\n        public override void Close()\n        {\n            // Remove possible linked snap points from editor\n            MyEditor.Static.RemoveLinkedSnapPoints(this);\n\n            foreach (var effect in m_effects)\n            {\n                MyParticlesManager.RemoveParticleEffect(effect.Item1);\n            }\n            m_effects.Clear();\n\n            base.Close();\n\n            // ((MyPrefabContainer)Parent).RemovePrefab(this); // Parent is null for some prefabs (e.g. some large ship weapons)\n\n            if (m_smokeEffects != null)\n            {\n                for (int i = 0; i < m_smokeEffects.Length; i++)\n                {\n                    if (m_smokeEffects[i] != null)\n                    {\n                        MyParticlesManager.RemoveParticleEffect(m_smokeEffects[i]);\n                    }\n                }\n                m_smokeEffects = null;\n            }\n\n            if (m_owner != null)\n            {\n                m_owner.RemovePrefab(this);\n            }\n\n            if (m_lamps != null)\n            {\n                foreach (var prefabLamp in m_lamps)\n                {\n                    prefabLamp.Item1.Close();\n                }\n            }\n            if (m_lights != null)\n            {\n                for (int i = 0; i < m_lights.Count; i++)\n                {\n                    MyLights.RemoveLight(m_lights[i].Item1); m_lights[i] = null;\n                }\n            }\n        }\n\n        /// <summary>\n        /// Generates explosion and debris.\n        /// </summary>\n        protected virtual void Explode()\n        {\n            //if (Physics.Enabled)\n            //{\n            //    Physics.Enabled = false;\n            //    Physics.Clear();\n            //}\n\n            // only if prefab is big enough, make it explode and create debris))\n            if (WorldVolumeHr.Radius > m_config.MinSizeForExplosion)\n            {\n                DestroyPrefabsInside();\n\n                MyExplosion newExplosion = MyExplosions.AddExplosion();\n                if (newExplosion != null)\n                {\n                    BoundingSphere explosionSphere = WorldVolumeHr;\n                    explosionSphere.Radius *= m_config.ExplosionRadiusMultiplier;\n\n                    float particleScale = 1;\n                   /* if (explosionSphere.Radius > MyExplosionsConstants.EXPLOSION_RADIUS_MAX)\n                    {\n                        particleScale = explosionSphere.Radius / MyExplosionsConstants.EXPLOSION_RADIUS_MAX;\n                        explosionSphere.Radius = MathHelper.Min(explosionSphere.Radius, MyExplosionsConstants.EXPLOSION_RADIUS_MAX);\n                    }\n                    else*/\n                    if (m_config.ExplosionType == MyExplosionTypeEnum.BOMB_EXPLOSION)\n                    {\n                        particleScale = MathHelper.Max(1, WorldVolumeHr.Radius * 0.2f);\n                    }\n                    if (m_config.ExplosionType == MyExplosionTypeEnum.SMALL_SHIP_EXPLOSION)\n                    {\n                        //Scaled by smallship size\n                        particleScale = MathHelper.Max(1, WorldVolumeHr.Radius / 20f);\n                    }\n                    if (m_config.ExplosionType == MyExplosionTypeEnum.LARGE_SHIP_EXPLOSION)\n                    {\n                        //Scaled by KAI size\n                        particleScale = MathHelper.Max(1, WorldVolumeHr.Radius / 300f);\n                    }\n\n                    MyVoxelMap voxelMap = MyVoxelMaps.GetOverlappingWithSphere(ref explosionSphere);\n                    MyExplosionDebrisModel.CreateExplosionDebris(ref explosionSphere, MyGroupMask.Empty, this, voxelMap);\n                    float voxelCutoutScale = 0.6f; // Prefabs do smaller voxel cutout\n\n                    MyExplosionInfo explosionInfo = new MyExplosionInfo()\n                    {\n                        PlayerDamage = 0,\n                        Damage = m_config.ExplosionDamage,\n                        EmpDamage = 0,\n                        ExplosionType = m_config.ExplosionType,\n                        ExplosionSphere = explosionSphere,\n                        LifespanMiliseconds = MyExplosionsConstants.EXPLOSION_LIFESPAN,\n                        VoxelCutoutScale = voxelCutoutScale,\n                        ParticleScale = particleScale * m_config.ExplosionParticleEffectScale,\n                        HitEntity = this,\n                        CheckIntersections = false,\n                        CreateDecals = false,\n                        CreateDebris = false,\n                        CreateParticleEffect = true,\n                        PlaySound = true,\n                    };\n\n                    newExplosion.Start(ref explosionInfo);\n                }\n            }\n            else\n            {\n                var effect = MyParticlesManager.CreateParticleEffect((int)MyParticleEffectsIDEnum.Explosion_SmallPrefab);\n                effect.WorldMatrix = Matrix.CreateWorld(WorldVolume.Center, WorldMatrix.Forward, WorldMatrix.Up);\n                //effect.UserRadiusMultiplier = .1f * WorldVolumeHr.Radius;\n                effect.UserScale = 0.05f * m_config.ExplosionRadiusMultiplier * m_config.ExplosionParticleEffectScale * WorldVolumeHr.Radius;\n            }\n        }\n\n        /// <summary>\n        /// Using OBBs, detects prefabs that are COMPLETELY contained in this prefab's OBB (size multiplied by\n        /// MyPrefabConstants.EXPLOSION_DELETE_MULTIPLIER).\n        /// </summary>\n        private void DestroyPrefabsInside()\n        {\n            DestroyPrefabsInsideHr();\n\n            foreach (var prefabToDestroy in m_prefabsToDestroy)\n            {\n                MyScriptWrapper.OnEntityDeath(prefabToDestroy, this);\n                prefabToDestroy.MarkForClose();\n            }\n\n            foreach (var particleToStop in m_particlesToStop)\n            {\n                particleToStop.DisableParticleEffect();\n            }\n\n            m_prefabsToDestroy.Clear();\n            m_particlesToStop.Clear();\n        }\n\n        private void DestroyPrefabsInsideHr()\n        {\n            MyOrientedBoundingBox largerOBB;\n            BoundingBox largerAABB;\n            GetEnlargedBoundingBoxes(out largerOBB, out largerAABB);\n\n            RemoveContainedPrefabs(largerOBB, largerAABB);\n\n            DisableContainedDummyParticles(largerOBB, largerAABB);\n        }\n\n        private void RemoveContainedPrefabs(MyOrientedBoundingBox largerOBB, BoundingBox largerAABB)\n        {\n            var intersectingElements = MyEntities.GetElementsInBox(ref largerAABB);\n\n            using (var intersectingElements2 = PoolList<MyRBElement>.Get())\n            {\n                intersectingElements2.AddRange(intersectingElements);\n                intersectingElements.Clear();\n\n                foreach (var rbElement in intersectingElements2)\n                {\n                    var rigidBody = rbElement.GetRigidBody();\n                    if (rigidBody == null)\n                        continue;\n                    var containedEntity = ((MyPhysicsBody)rigidBody.m_UserData).Entity;\n\n                    var candidateToDestroy = containedEntity.GetTopMostParent(typeof(MyPrefabBase)) as MyPrefabBase;\n\n                    if (candidateToDestroy != null && candidateToDestroy != this)\n                    {\n                        var position = candidateToDestroy.WorldVolumeHr.Center;\n\n                        // if contained entity can be destroyed, is smaller than me and has center inside me, close it\n                        if (WorldVolumeHr.Radius > candidateToDestroy.WorldVolumeHr.Radius &&\n                            largerOBB.Contains(ref position) &&\n                            candidateToDestroy.IsDestructible)\n                        {\n                            if (candidateToDestroy.m_isExploded)\n                                continue;\n\n                            candidateToDestroy.m_isExploded = true;\n                            m_prefabsToDestroy.Add(candidateToDestroy);\n\n                            candidateToDestroy.DestroyPrefabsInsideHr();\n                        }\n\n                        continue;\n                    }\n                }\n            }\n\n            intersectingElements.Clear();\n\n        }\n\n        private void DisableContainedDummyParticles(MyOrientedBoundingBox largerOBB, BoundingBox largerAABB)\n        {\n            MyRender.GetEntitiesFromPrunningStructure(ref largerAABB, m_destroyHelper);\n\n            foreach (var elem in m_destroyHelper)\n            {\n                var entity = ((MyRenderObject)elem).Entity;\n\n                var dummyPoint = entity as MyDummyPoint;\n                if (dummyPoint != null && !dummyPoint.CanSurvivePrefabDestruction())\n                {\n                    var position = dummyPoint.GetPosition();\n\n                    // if contained entity can be destroyed, is smaller than me and has center inside me, close it\n                    if (largerOBB.Contains(ref position))\n                    {\n                        m_particlesToStop.Add(dummyPoint);\n                    }\n\n                    continue;\n                }\n            }\n\n            m_destroyHelper.Clear();\n        }\n\n\n        private void GetEnlargedBoundingBoxes(out MyOrientedBoundingBox largerOBB, out BoundingBox largerAABBHr)\n        {\n            // compute larger OBB\n            var obb = MyOrientedBoundingBox.CreateFromBoundingBox(GetModelLod0().BoundingBox).Transform(WorldMatrix);\n\n            var averageHalfExtent = (obb.HalfExtent.X + obb.HalfExtent.Y + obb.HalfExtent.Z) / 3f;\n\n            float explosionDeleteMultiplier = MathHelper.Clamp(MyPrefabConstants.EXPLOSION_DELETE_MULTIPLIER_BY_SIZE * averageHalfExtent, 1.0f, 1.6f);\n\n            var obbHalfExtentIncrease = obb.HalfExtent * explosionDeleteMultiplier;\n            var obbHalfExtentIncreaseClamped = Vector3.Clamp(obbHalfExtentIncrease,\n                                                             MyPrefabConstants.MIN_SIZE_INCREASE_FOR_EXPLOSION,\n                                                             obbHalfExtentIncrease);\n            largerOBB = obb;\n            largerOBB.HalfExtent += obbHalfExtentIncreaseClamped;\n\n            // compute larger AABB\n            var minToMax = WorldAABBHr.Max - WorldAABBHr.Min;\n            minToMax *= explosionDeleteMultiplier;\n            minToMax += MyPrefabConstants.MIN_SIZE_INCREASE_FOR_EXPLOSION;\n            largerAABBHr = new BoundingBox(WorldAABBHr.Min - minToMax, WorldAABBHr.Max + minToMax);\n        }\n\n        public override void UpdateBeforeSimulation()\n        {\n            if (IsVisible() && IsDamaged() && !m_isExploded)\n                DrawDestructionEffects(GetDamageRatio());\n\n            //UpdateAABBHr();\n\n            //float electricityAddStep = MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS * (HasGenerator() ? 1f : -1f);\n            ElectricCapacity = (HasGenerator() ? ElectricCapacity + MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS : 0f);\n\n            RecheckNeedsUpdate();\n\n            //base.UpdateBeforeSimulation();\n            if (IsWorking())\n            {\n                UpdatePrefabBeforeSimulation();\n            }\n        }\n\n        protected virtual void UpdatePrefabBeforeSimulation()\n        {\n\n        }\n\n        /// <summary>\n        /// DoDamage on prefabs can be modified by cheats (FRIEND_NEUTRAL_CANT_DIE)\n        /// </summary>\n        protected override void DoDamageInternal(float playerDamage, float damage, float empDamage, MinerWars.AppCode.Game.Utils.MyDamageType damageType, MinerWars.AppCode.Game.Utils.MyAmmoType ammoType, MinerWars.AppCode.Game.Entities.MyEntity damageSource, bool justDeactivate)\n        {\n            if (MyFakes.INDESTRUCTIBLE_PREFABS)\n            {\n                return;\n            }\n\n            if (m_isExploded)\n                return;\n\n            if (MyGuiScreenGamePlay.Static != null && MySession.PlayerShip != null && damageSource != null)\n            {\n                var playerFactionRelation = MyFactions.GetFactionsRelation(this, damageSource);\n\n                // Disable damage on friendly prefabs when FRIEND_NEUTRAL_CANT_DIE cheat is enabled\n                if (playerFactionRelation == MyFactionRelationEnum.Friend &&\n                    MyGuiScreenGamePlay.Static.IsCheatEnabled(MyGameplayCheatsEnum.FRIEND_NEUTRAL_CANT_DIE))\n                {\n                    return;\n                }\n            }\n\n            damage *= PrefabDamageMultiplier;\n\n            base.DoDamageInternal(playerDamage, damage, empDamage, damageType, ammoType, damageSource, justDeactivate);\n            ElectricCapacity -= empDamage;\n\n            //NeedsUpdate = true;\n            RecheckNeedsUpdate();\n                    \n            if (IsDead() && !m_isExploded)\n            {\n                if (justDeactivate)\n                {\n                    //Activate(false);\n                    MarkForClose();\n                }\n                else\n                {\n                    MarkForClose();\n                    Explode();\n                }\n\n                MakeWaypointsFree();\n\n                m_isExploded = true;\n\n                if (CausesAlarm)\n                {\n                    m_owner.LaunchAlarm(this, damageSource);\n                }\n\n            }\n        }\n\n        /// <summary>\n        /// Take all waypoints under a prefab and put them in MyEntities (to make them survive prefab destruction).\n        /// </summary>\n        private void MakeWaypointsFree()\n        {\n            var list = new List<MyWayPoint>();\n\n            foreach (var child in Children)\n            {\n                var waypoint = child as MyWayPoint;\n                if (waypoint != null)\n                    list.Add(waypoint);\n            }\n\n            foreach (var waypoint in list)\n            {\n                RemoveChild(waypoint, true);\n                //waypoint.Activate(false, false);  // breaks ticket 5354\n                MyEntities.Add(waypoint);\n            }\n        }\n\n        public override void UpdateAfterSimulation()\n        {\n            //base.UpdateAfterSimulation();\n\n            if (IsVisible())\n            {\n                if (m_smokeEffects != null)\n                {\n                    if (m_smokeEffects.Length > 0)\n                    {\n                        UpdateSmokeEffects();\n                    }\n                }\n                if (IsWorking())\n                {\n                    UpdatePrefabAfterSimulation();\n                }\n            }\n        }\n\n        protected virtual void UpdatePrefabAfterSimulation()\n        {\n\n        }\n\n        private void UpdateSmokeEffects()\n        {\n            float ratio = GetDamageRatio();\n            if (ratio < MyPrefabConstants.DAMAGED_HEALTH)\n            {\n                for (int i = 0; i < m_smokeEffects.Length; i++)\n                {\n                    if (m_smokeEffects[i] != null)\n                    {\n                        m_smokeEffects[i].Stop();\n                        m_smokeEffects[i] = null;\n                    }\n                }\n            }\n            else\n            {\n                ratio = (ratio / MyPrefabConstants.DAMAGED_HEALTH) - 1;\n\n                int smokesActive = Convert.ToInt32(MathHelper.Lerp(1, m_smokeMatrices.Length, ratio));\n\n                // update active effects\n                for (int i = 0; i < smokesActive; i++)\n                {\n                    var smokeEffect = m_smokeEffects[i];\n                    if (smokeEffect == null)\n                    {\n                        // alternate between 3 different effects\n                        smokeEffect = MyParticlesManager.CreateParticleEffect((int)MyParticleEffectsIDEnum.Damage_SmokeDirectionalA + (i % 3), true);\n                        smokeEffect.AutoDelete = false;\n\n                        m_smokeEffects[i] = smokeEffect;\n                    }\n\n                    smokeEffect.UserBirthMultiplier = 1;\n                    smokeEffect.WorldMatrix = m_smokeMatrices[i] * WorldMatrix;\n                }\n            }\n        }\n\n        public override void OnWorldPositionChanged(object source)\n        {\n            //UpdateAABBHr(); //Do we need Hr version at all?\n            /*  //let owner/caller to handle this\n            if (m_owner.WorldAABBHr.Contains(WorldAABBHr) != ContainmentType.Contains)\n            {\n                m_owner.UpdateAABB();\n            } */\n\n            UpdateChildrenPosition();\n\n            base.OnWorldPositionChanged(source);\n        }\n\n        private void UpdateChildrenPosition()\n        {\n            foreach (var effectPair in m_effects)\n            {\n                effectPair.Item1.WorldMatrix = effectPair.Item2 * this.WorldMatrix;\n            }\n\n            if (m_lights != null)\n            {\n                foreach (var light in m_lights)\n                {\n                    light.Item1.SetPosition((light.Item2 * WorldMatrix).Translation);\n                }\n            }\n\n            if (m_lamps != null)\n            {\n                foreach (var lamp in m_lamps)\n                {\n                    lamp.Item1.MoveTo((lamp.Item2 * WorldMatrix).Translation);\n                }\n            }\n        }\n\n        /// <summary>\n        /// IMPORTANT: this is not really 'render' method. It only manipulates particle effects.\n        /// </summary>\n        protected void DrawDestructionEffects(float damagedPercentage)\n        {\n            float heavyDamagePercentage = (damagedPercentage - MyExplosionsConstants.DAMAGE_SPARKS) / (1 - MyExplosionsConstants.DAMAGE_SPARKS);\n\n            if (heavyDamagePercentage < MyMwcMathConstants.EPSILON)\n                return;\n\n            MyModel model = GetModelLod0();\n\n            if (MyMwcUtils.GetRandomInt((int)(MyExplosionsConstants.FRAMES_PER_SPARK / (heavyDamagePercentage * System.Math.Min(model.BoundingSphere.Radius, 100) * 0.005f))) > 0)\n                //if (MyMwcUtils.GetRandomInt((int)(MyExplosionsConstants.FRAMES_PER_SPARK / heavyDamagePercentage)) > 0)\n                return;\n\n            if (!MyCamera.IsInFrustum(this.WorldAABB))\n                return;\n\n            int randomVertexIndex = MyMwcUtils.GetRandomInt(0, model.GetVerticesCount() - 1);\n            Vector3 randomVertex = model.GetVertex(randomVertexIndex);\n            var wMatrix = this.WorldMatrix;\n            Vector3 vertexInWorldSpace = MyUtils.GetTransform(randomVertex, ref wMatrix);\n\n\n            MyLight light = MyLights.AddLight();\n            if (light != null)\n            {\n                light.Start(MyLight.LightTypeEnum.PointLight, 1.0f);\n                light.PointOn = false;\n                light.Range = 1.0f;\n            }\n\n            MyParticleEffect sparksEffect = MyParticlesManager.CreateParticleEffect((int)MyParticleEffectsIDEnum.Damage_Sparks);\n            if (sparksEffect != null)\n            {\n                sparksEffect.WorldMatrix = Matrix.CreateTranslation(vertexInWorldSpace);\n                sparksEffect.UserRadiusMultiplier = 0.003f * model.BoundingSphere.Radius;\n                sparksEffect.Tag = light;\n                sparksEffect.OnUpdate += m_sparksEffectUpdateEvent;\n                sparksEffect.OnDelete += m_sparksEffectDeleteEvent;\n                m_sparkEffects.Add(sparksEffect);\n            }\n            MyAudio.AddCue3D(MySoundCuesEnum.SfxSpark, WorldMatrix.Translation, WorldMatrix.Forward, WorldMatrix.Up, Vector3.Zero);\n        }\n\n        void sparksEffect_OnDelete(object sender, EventArgs e)\n        {\n            MyParticleEffect explosionEffect = sender as MyParticleEffect;\n            var light = explosionEffect.Tag as MyLight;\n\n            if (light != null)\n            {\n                MyLights.RemoveLight(light);\n            }\n\n            explosionEffect.Tag = null;\n            m_sparkEffects.Remove(explosionEffect);\n        }\n\n        static void sparksEffect_OnUpdate(object sender, EventArgs e)\n        {\n            MyParticleEffect explosionEffect = sender as MyParticleEffect;\n            MyLight light = explosionEffect.Tag as MyLight;\n\n            if (light != null)\n            {\n                light.PointOn = true;\n                light.SetPosition(explosionEffect.WorldMatrix.Translation);\n                light.Range = MathHelper.Clamp((float)explosionEffect.GetAABB().Size().Length() / 2.0f, 1.0f, MyLightsConstants.MAX_POINTLIGHT_RADIUS);\n                light.Intensity = 3 * MyMwcUtils.GetRandomFloat(0.6f, 0.9f);\n\n                MyAnimatedPropertyVector4 animatedProperty; float time;\n                explosionEffect.GetGenerations()[3].Color.GetPreviousValue(0.0f, out animatedProperty, out time);\n\n                Vector4 lightColor;\n                animatedProperty.GetInterpolatedValue<Vector4>(0.5f, out lightColor);\n                light.Color = lightColor;\n            }\n        }\n\n        public override MyMwcObjectBuilder_FactionEnum Faction\n        {\n            get\n            {\n                if (m_owner != null)\n                {\n                    return m_owner.Faction;\n                }\n                return base.Faction;\n            }\n            set\n            {\n                //  System.Diagnostics.Debug.Assert(false, \"Prefab always takes faction from container\");\n            }\n        }\n\n        //public MyMwcObjectBuilder_Prefab_TypesEnum PrefabType\n        //{\n        //    get { return m_prefabTypeEnum; }\n        //}\n\n        public CategoryTypesEnum PrefabCategory\n        {\n            get { return m_config.CategoryType; }\n        }\n\n        public SubCategoryTypesEnum? PrefabSubCategory\n        {\n            get { return m_config.SubCategoryType; }\n        }\n\n        public PrefabTypesFlagEnum PrefabTypeFlag\n        {\n            get { return m_config.PrefabTypeFlag; }\n        }\n\n        public int PrefabId\n        {\n            get { return m_prefabId; }\n        }\n\n        protected override bool CanBeAddedToRender()\n        {\n            return ModelLod0 != null;\n        }\n\n        /// <summary>\n        /// Returns true if this prefab has available textures for specific factions.\n        /// Large ship prefabs, large weapon prefabs and the CUSTOM object don't.\n        /// This is dependent on artists. Would be better if this was read\n        /// </summary>\n        public bool HasAvailableFactionMaterial(MyMwcObjectBuilder_Prefab_AppearanceEnum material)\n        {\n            var factionSpecific = m_config.FactionSpecific;\n\n            bool hasMaterialForAllFactions = !factionSpecific.HasValue;\n            return hasMaterialForAllFactions || factionSpecific.Value == material;\n        }\n\n        public MyPrefabConfiguration GetConfiguration()\n        {\n            return (MyPrefabConfiguration)m_config;\n        }\n\n        public bool IsElectrified()\n        {\n            return ElectricCapacity > 0;\n        }\n\n        public void RemoveKinematicPart(MyPrefabKinematicPartBase part)\n        {\n            m_kinematicParts.Remove(part);\n        }\n\n        protected bool HasGenerator()\n        {\n            return GeneratorsCount > 0 || (RequiresEnergy != null && !RequiresEnergy.Value) || PrefabCategory == CategoryTypesEnum.GENERATOR || MyFakes.ENABLE_PREFABS_AUTO_CHARGING;\n        }\n\n        protected void RecheckNeedsUpdate()\n        {\n            bool newNeedsUpdate =\n                    PrefabNeedsUpdateNow ||\n                    IsDamaged() ||\n                    //Nabijeni\n                    (ElectricCapacity < m_config.MaxElectricCapacity && HasGenerator())\n                    ||\n                    //Vybijeni\n                    (ElectricCapacity > m_config.MinElectricCapacity && !HasGenerator());\n\n            if (NeedsUpdate != newNeedsUpdate)\n            {\n                NeedsUpdate = newNeedsUpdate;\n            }\n        }\n\n        protected virtual bool PrefabNeedsUpdateNow\n        {\n            get { return Enabled && IsElectrified() && m_needsUpdate; }\n        }\n\n        public void SetCausesAlarm(bool? causesAlarm)\n        {\n            m_causesAlarm = causesAlarm;\n        }\n\n        public bool DefaultCausesAlarm()\n        {\n            return !m_causesAlarm.HasValue;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Prefabs/MyPrefabCamera.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Entities.Prefabs;\nusing MinerWarsMath;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.GUI.Prefabs;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.Prefabs;\n\nnamespace MinerWars.AppCode.Game.Prefabs\n{\n    class MyPrefabCamera : MyPrefabBase, IMyUseableEntity, IMyHasGuiControl\n    {\n        public float Yaw;\n        public float Pitch;\n\n        public const float YawLimit = 0.785398163f;\n        public const float PitchLimit = 0.785398163f;\n\n        public MyUseProperties UseProperties { get; set; }\n\n\n        public MyPrefabCamera(MyPrefabContainer owner)\n            : base(owner)\n        {\n        }              \n\n        protected override void InitPrefab(string displayName, Vector3 relativePosition, Matrix localOrientation, MyMwcObjectBuilder_PrefabBase objectBuilder, MyPrefabConfiguration prefabConfig)\n        {\n            UseProperties = new MyUseProperties(MyUseType.FromHUB | MyUseType.Solo, MyUseType.None);\n            if (objectBuilder.UseProperties == null)\n            {\n                UseProperties.Init(MyUseType.FromHUB | MyUseType.Solo, MyUseType.None, 0, 1, false);                \n            }\n            else\n            {                \n                UseProperties.Init(objectBuilder.UseProperties);\n            }            \n            \n            Enabled = true;\n        }\n\n        protected override MyMwcObjectBuilder_Base GetObjectBuilderInternal(bool getExactCopy)\n        {\n            MyMwcObjectBuilder_PrefabCamera objectBuilder = base.GetObjectBuilderInternal(getExactCopy) as MyMwcObjectBuilder_PrefabCamera;            \n            objectBuilder.UseProperties = UseProperties.GetObjectBuilder();\n\n            return objectBuilder;\n        }\n\n        public override string GetCorrectDisplayName()\n        {\n\n            return base.GetCorrectDisplayName();\n        }\n\n        public bool CanBeHacked(MySmallShip hackedBy)\n        {\n            return false;\n        }\n        public bool CanBeUsed(MySmallShip usedBy)\n        {\n            return IsWorking();\n        }\n\n        public void Use(MySmallShip useBy)\n        {\n            MyGuiScreenGamePlay.Static.TakeControlOfCamera(this);\n        }\n\n        public void UseFromHackingTool(MySmallShip useBy, int hackingLevelDifference)\n        {\n            throw new NotSupportedException();\n        }\n\n        public GUI.Prefabs.MyGuiControlEntityUse GetGuiControl(GUI.Core.IMyGuiControlsParent parent)\n        {\n            return new MyGuiControlPrefabCameraUse(parent, this);\n        }\n\n        public MyEntity GetEntity() \n        {\n            return this;\n        }\n\n        internal Matrix GetViewMatrix()\n        {\n            Matrix world = Matrix.CreateFromYawPitchRoll(MathHelper.Pi + Yaw, Pitch, 0) * Matrix.CreateTranslation(Vector3.Forward * -3) * WorldMatrix;\n\n            Matrix view = Matrix.Invert(world);\n\n            return view;\n        }\n\n        internal void HandleInput(Vector2 rotationIndicator)\n        {\n            rotationIndicator *= MyGuiConstants.PREFAB_CAMERA_ROTATION_SENSITIVITY;\n\n            Yaw -= rotationIndicator.Y;\n            Pitch -= rotationIndicator.X;\n\n            Yaw = MathHelper.Clamp(Yaw, -YawLimit, YawLimit);\n            Pitch = MathHelper.Clamp(Pitch, -PitchLimit, PitchLimit);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Prefabs/MyPrefabConstants.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing MinerWars.AppCode.Game.Explosions;\nusing MinerWars.AppCode.Game.GUI.Helpers;\nusing MinerWars.AppCode.Game.Models;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.Prefabs;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils;\nusing SysUtils.Utils;\n\n\nnamespace MinerWars.AppCode.Game.Prefabs\n{\n    using Audio;\n    using MinerWarsMath;\n\n    public enum AxisTypesEnum : byte\n    {\n        X = 1,\n        Y = 2,\n        Z = 3\n    }\n\n    public enum DamageTypesEnum : byte\n    {\n        USE_OWN=0,\n        SHARE_WITH_PARENT=1,\n    }\n\n    public enum BuildTypesEnum : byte\n    {\n        NONE = 0,\n        BEAMS = 1,\n        SHELLS = 2,\n        MODULES = 3,\n        CONNECTIONS = 4,\n        DETAILS = 5,\n        CUSTOM = 6, \n        LARGE_SHIPS = 7,        \n    }\n\n    public enum CategoryTypesEnum : ushort\n    {\n        LARGE = 1,\n        MEDIUM = 2,\n        SMALL = 3,\n        FRAME = 4,\n        PANELS = 5,\n        CHAMBERS = 6,\n        ARMORS = 7,\n        FLIGHT = 8,\n        SUPPLY = 9,\n        LIFE_SUPPORT = 10,\n        INDUSTRY = 11,\n        WEAPONRY = 12,\n        COMMUNICATIONS = 13,\n        HANGARS = 14,\n        MANNED_OBJECTS = 15,\n        TUNNELS = 16,\n        PIPES = 17,\n        PASSAGES = 18,\n        BILLBOARDS = 19,\n        LIGHTS = 20,\n        SIGNS = 21,\n        OTHER = 22,\n        SOUNDS = 23,\n        PARTICLES = 24,\n        TRAFFIC_SIGNS = 25,\n        DOORS = 26,\n        DOOR_CASES = 27,\n        LARGE_SHIPS = 28,\n        FOUNDATION_FACTORY = 29,\n        SECURITY_CONTROL_HUB = 30,\n        BANK_NODE = 31,\n        GENERATOR = 32,\n        SCANNER = 33,\n        ALARM = 34,\n        MSHIP = 35,\n        CABLES = 36,\n        CAMERA = 37,\n        SHELVES = 38,\n        BARRELS = 39,\n    }\n\n    public enum SubCategoryTypesEnum : ushort\n    {\n        LONG_TERM_THRUSTERS = 1,\n        SHORT_TERM_THRUSTERS = 2,\n        POWER_GENERATION = 3,\n        POWER_STORAGE = 4,\n        FUEL_GENERATION = 5,\n        FUEL_STORAGE = 6,\n        OXYGEN_GENERATION = 7,\n        OXYGEN_STORAGE = 8,\n        BIODOME = 9,\n        DOCKS = 10,\n        LOADING_UNLOADING = 11,\n        ORE_STORAGE = 12,\n        GAS_STORAGE = 13,\n        REFINERY = 14,\n        FACTORY = 15,\n        WEAPON_MOUNT = 16,\n        AMMUNITION_BOX = 17,\n        LONG_DISTANCE_ANTENNA = 18,\n        SHORT_DISTANCE_ANTENNA = 19,\n        SMALL = 20,\n        LARGE = 21,\n        ESCAPE_PODS = 22,\n        LIVING_QUARTERS = 23,\n        BRIDGE = 24,\n        PASSAGE = 25,\n        STRAIGHT = 26,\n        TURN = 27,\n        JUNCTION = 28,\n        OTHER = 29,        \n        WIRES = 30,\n        CONNECTION_BOXES = 31,\n        CABLE_HOLDERS = 32,\n    }\n\n    [Flags]\n    public enum PrefabTypesFlagEnum\n    {\n        Default = 1 << 0,\n        Generator = 1 << 1,\n        LargeShip = 1 << 2,\n        Trader = 1 << 3,\n        Hangar = 1 << 4,\n        FoundationFactory = 1 << 5,\n        Scanner = 1 << 6,\n        Alarm = 1 << 7,\n        Vendor = 1 << 8,\n    }\n\n    static class MyPrefabTypesFlagHelper\n    {\n        public static List<PrefabTypesFlagEnum> ParseToSingleFlags(PrefabTypesFlagEnum prefabTypesFlag)\n        {\n            List<PrefabTypesFlagEnum> prefabTypeSingleFlags = new List<PrefabTypesFlagEnum>();            \n            foreach (PrefabTypesFlagEnum prefabTypeFlag in Enum.GetValues(typeof(PrefabTypesFlagEnum)))\n            {\n                if ((prefabTypesFlag & prefabTypeFlag) != 0)\n                {\n                    prefabTypeSingleFlags.Add(prefabTypeFlag);\n                }\n            }            \n            return prefabTypeSingleFlags;\n        }\n    }\n\n    static class MyPrefabConstants\n    {\n        /// <summary>\n        /// Health ratio. Prefab starts smoking when damaged ratio is above this (and if dummy is defined).\n        /// Also, some rotating prefabs may change sound when below this ratio.\n        /// </summary>\n        public const float DAMAGED_HEALTH = 0.5f;\n\n        public const float SIZE_FOR_DOUBLE_MULTIPLIER = 300;\n        public const float EXPLOSION_DELETE_MULTIPLIER_BY_SIZE = 2 / SIZE_FOR_DOUBLE_MULTIPLIER;\n        public static Vector3 MIN_SIZE_INCREASE_FOR_EXPLOSION = new Vector3(8, 8, 8);\n\n        /// <summary>\n        /// The damage that a prefab deals to its surroundings when exploding\n        /// </summary>\n        public const float SMALL_PREFAB_DEAL_DAMAGE = 0f;\n        public const float PANEL_PREFAB_DEAL_DAMAGE = 5f;\n        public const float CHAMBER_PREFAB_DEAL_DAMAGE = 10f;\n        public const float TUNNEL_PREFAB_DEAL_DAMAGE = 10f;\n        public const float BARREL_PREFAB_DEAL_DAMAGE = 20f;\n        public const float GENERATOR_PREFAB_DEAL_DAMAGE = 100f;\n        public const float BIG_PREFAB_DEAL_DAMAGE = 150f;\n        public const float HUGE_PREFAB_DEAL_DAMAGE = 500f;\n\n        static private Dictionary<int, float> m_prefabDealthDamage = new Dictionary<int,float>();\n\n        //static Dictionary<MyMwcObjectBuilder_Prefab_TypesEnum, MyPrefabConfiguration> m_prefabConfigurations;\n        static readonly MyPrefabConfiguration[][] m_prefabConfigurations;\n\n        static MyPrefabConstants()\n        {\n            SysUtils.Utils.MyMwcLog.WriteLine(\"MyPrefabConstants - START\");\n            \n            m_prefabDealthDamage.Add((int)CategoryTypesEnum.ALARM, SMALL_PREFAB_DEAL_DAMAGE); \n            m_prefabDealthDamage.Add((int)CategoryTypesEnum.ARMORS, PANEL_PREFAB_DEAL_DAMAGE); \n            m_prefabDealthDamage.Add((int)CategoryTypesEnum.BANK_NODE, SMALL_PREFAB_DEAL_DAMAGE); \n            m_prefabDealthDamage.Add((int)CategoryTypesEnum.BARRELS, BARREL_PREFAB_DEAL_DAMAGE); \n            m_prefabDealthDamage.Add((int)CategoryTypesEnum.BILLBOARDS, SMALL_PREFAB_DEAL_DAMAGE); \n            m_prefabDealthDamage.Add((int)CategoryTypesEnum.CABLES, SMALL_PREFAB_DEAL_DAMAGE); \n            m_prefabDealthDamage.Add((int)CategoryTypesEnum.CAMERA, SMALL_PREFAB_DEAL_DAMAGE); \n            m_prefabDealthDamage.Add((int)CategoryTypesEnum.COMMUNICATIONS, SMALL_PREFAB_DEAL_DAMAGE); \n            m_prefabDealthDamage.Add((int)CategoryTypesEnum.DOOR_CASES, SMALL_PREFAB_DEAL_DAMAGE); \n            m_prefabDealthDamage.Add((int)CategoryTypesEnum.DOORS, SMALL_PREFAB_DEAL_DAMAGE); \n            m_prefabDealthDamage.Add((int)CategoryTypesEnum.FLIGHT, SMALL_PREFAB_DEAL_DAMAGE); \n            m_prefabDealthDamage.Add((int)CategoryTypesEnum.FOUNDATION_FACTORY, SMALL_PREFAB_DEAL_DAMAGE); \n            m_prefabDealthDamage.Add((int)CategoryTypesEnum.FRAME, SMALL_PREFAB_DEAL_DAMAGE); \n            m_prefabDealthDamage.Add((int)CategoryTypesEnum.GENERATOR, GENERATOR_PREFAB_DEAL_DAMAGE); \n            m_prefabDealthDamage.Add((int)CategoryTypesEnum.HANGARS, SMALL_PREFAB_DEAL_DAMAGE); \n            m_prefabDealthDamage.Add((int)CategoryTypesEnum.CHAMBERS, CHAMBER_PREFAB_DEAL_DAMAGE); \n            m_prefabDealthDamage.Add((int)CategoryTypesEnum.INDUSTRY, SMALL_PREFAB_DEAL_DAMAGE); \n            m_prefabDealthDamage.Add((int)CategoryTypesEnum.LARGE, BIG_PREFAB_DEAL_DAMAGE); \n            m_prefabDealthDamage.Add((int)CategoryTypesEnum.LARGE_SHIPS, HUGE_PREFAB_DEAL_DAMAGE); \n            m_prefabDealthDamage.Add((int)CategoryTypesEnum.LIFE_SUPPORT, BIG_PREFAB_DEAL_DAMAGE); \n            m_prefabDealthDamage.Add((int)CategoryTypesEnum.LIGHTS, SMALL_PREFAB_DEAL_DAMAGE); \n            m_prefabDealthDamage.Add((int)CategoryTypesEnum.MANNED_OBJECTS, BIG_PREFAB_DEAL_DAMAGE); \n            m_prefabDealthDamage.Add((int)CategoryTypesEnum.MEDIUM, CHAMBER_PREFAB_DEAL_DAMAGE); \n            m_prefabDealthDamage.Add((int)CategoryTypesEnum.MSHIP, BIG_PREFAB_DEAL_DAMAGE); \n            m_prefabDealthDamage.Add((int)CategoryTypesEnum.OTHER, SMALL_PREFAB_DEAL_DAMAGE); \n            m_prefabDealthDamage.Add((int)CategoryTypesEnum.PANELS, SMALL_PREFAB_DEAL_DAMAGE); \n            m_prefabDealthDamage.Add((int)CategoryTypesEnum.PARTICLES, SMALL_PREFAB_DEAL_DAMAGE); \n            m_prefabDealthDamage.Add((int)CategoryTypesEnum.PASSAGES, TUNNEL_PREFAB_DEAL_DAMAGE); \n            m_prefabDealthDamage.Add((int)CategoryTypesEnum.PIPES, TUNNEL_PREFAB_DEAL_DAMAGE); \n            m_prefabDealthDamage.Add((int)CategoryTypesEnum.SCANNER, SMALL_PREFAB_DEAL_DAMAGE); \n            m_prefabDealthDamage.Add((int)CategoryTypesEnum.SECURITY_CONTROL_HUB, SMALL_PREFAB_DEAL_DAMAGE); \n            m_prefabDealthDamage.Add((int)CategoryTypesEnum.SHELVES, SMALL_PREFAB_DEAL_DAMAGE); \n            m_prefabDealthDamage.Add((int)CategoryTypesEnum.SIGNS, SMALL_PREFAB_DEAL_DAMAGE); \n            m_prefabDealthDamage.Add((int)CategoryTypesEnum.SMALL, SMALL_PREFAB_DEAL_DAMAGE); \n            m_prefabDealthDamage.Add((int)CategoryTypesEnum.SOUNDS, SMALL_PREFAB_DEAL_DAMAGE); \n            m_prefabDealthDamage.Add((int)CategoryTypesEnum.SUPPLY, SMALL_PREFAB_DEAL_DAMAGE); \n            m_prefabDealthDamage.Add((int)CategoryTypesEnum.TRAFFIC_SIGNS, SMALL_PREFAB_DEAL_DAMAGE); \n            m_prefabDealthDamage.Add((int)CategoryTypesEnum.TUNNELS, TUNNEL_PREFAB_DEAL_DAMAGE); \n            m_prefabDealthDamage.Add((int)CategoryTypesEnum.WEAPONRY, BIG_PREFAB_DEAL_DAMAGE); \n\n\n            m_prefabConfigurations = new MyPrefabConfiguration[MyMwcUtils.GetMaxValueFromEnum<MyMwcObjectBuilderTypeEnum>() + 1][];\n\n\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P430_A01_PASSAGE_10M, new MyPrefabConfiguration(MyModelsEnum.p430_a01_passage_10m, MyModelsEnum.p430_a01_passage_10m_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.PASSAGES, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p430_a01_passage_10m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P430_A02_PASSAGE_40M, new MyPrefabConfiguration(MyModelsEnum.p430_a02_passage_40m, MyModelsEnum.p430_a02_passage_40m_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.PASSAGES, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p430_a02_passage_40m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P424_A01_PIPE_BASE, new MyPrefabConfiguration(MyModelsEnum.p424_a01_pipe_base, null, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.PIPES, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p424_a01_pipe_base_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P423_A01_PIPE_JUNCTION, new MyPrefabConfiguration(MyModelsEnum.p423_a01_pipe_junction, MyModelsEnum.p423_a01_pipe_junction_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.PIPES, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p423_a01_pipe_junction_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P422_A01_PIPE_TURN_90, new MyPrefabConfiguration(MyModelsEnum.p422_a01_pipe_turn_90, MyModelsEnum.p422_a01_pipe_turn_90_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.PIPES, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p422_a01_pipe_turn_90_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P421_A01_PIPE_STRAIGHT_80M, new MyPrefabConfiguration(MyModelsEnum.p421_a01_pipe_straight_80m, MyModelsEnum.p421_a01_pipe_straight_80m_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.PIPES, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p421_a01_pipe_straight_80m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P421_A02_PIPE_STRAIGHT_40M, new MyPrefabConfiguration(MyModelsEnum.p421_a02_pipe_straight_40m, MyModelsEnum.p421_a02_pipe_straight_40m_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.PIPES, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p421_a02_pipe_straight_40m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P421_A03_PIPE_STRAIGHT_10M, new MyPrefabConfiguration(MyModelsEnum.p421_a03_pipe_straight_10m, MyModelsEnum.p421_a03_pipe_straight_10m_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.PIPES, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p421_a03_pipe_straight_10m_COL));\n\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P413_G01_JUNCTION_6AXES, new MyPrefabConfiguration(MyModelsEnum.p413_g01_junction_6axes, null, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p413_g01_junction_6axes_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P414_G02_ENTRANCE_60M, new MyPrefabConfiguration(MyModelsEnum.p414_g02_entrance_60m, MyModelsEnum.p414_g02_entrance_60m_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p414_g02_entrance_60m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P410_G01_TURN_90_RIGHT_0M, new MyPrefabConfiguration(MyModelsEnum.p410_g01_turn_90_right_0m, MyModelsEnum.p410_g01_turn_90_right_0m_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p410_g01_turn_90_right_0m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_G01_STRAIGHT_1, new MyPrefabConfiguration(MyModelsEnum.p411_g01_straight_1, MyModelsEnum.p411_g01_straight_1_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p411_g01_straight_1_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_G02_STRAIGHT_2, new MyPrefabConfiguration(MyModelsEnum.p411_g02_straight_2, null, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, null, MyModelsEnum.p411_g02_straight_2_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_G03_STRAIGHT_3, new MyPrefabConfiguration(MyModelsEnum.p411_g03_straight_3, null, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, null, MyModelsEnum.p411_g03_straight_3_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_G04_STRAIGHT_4, new MyPrefabConfiguration(MyModelsEnum.p411_g04_straight_4, null, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, null, MyModelsEnum.p411_g04_straight_4_COL));\n            //AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P414_F02_ENTRANCE_60M, new MyPrefabConfiguration(MyModelsEnum.p414_f02_entrance_60m, null, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_F21_TURN_S_UP, new MyPrefabConfiguration(MyModelsEnum.p412_f21_turn_s_up, null, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p412_f21_turn_s_up_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_F22_TURN_S_LEFT, new MyPrefabConfiguration(MyModelsEnum.p412_f22_turn_s_left, null, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p412_f22_turn_s_left_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_F23_TURN_S_RIGHT, new MyPrefabConfiguration(MyModelsEnum.p412_f23_turn_s_right, null, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p412_f23_turn_s_right_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_F24_TURN_S_DOWN, new MyPrefabConfiguration(MyModelsEnum.p412_f24_turn_s_down, null, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p412_f24_turn_s_down_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_F01_TURN_90_UP_230M, new MyPrefabConfiguration(MyModelsEnum.p412_f01_turn_90_up_230m, null, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_F02_TURN_90_LEFT_230M, new MyPrefabConfiguration(MyModelsEnum.p412_f02_turn_90_left_230m, MyModelsEnum.p412_f02_turn_90_left_230m_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p412_f02_turn_90_left_230m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_F03_TURN_90_RIGHT_230M, new MyPrefabConfiguration(MyModelsEnum.p412_f03_turn_90_right_230m, MyModelsEnum.p412_f03_turn_90_right_230m_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p412_f03_turn_90_right_230m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_F04_TURN_90_DOWN_230M, new MyPrefabConfiguration(MyModelsEnum.p412_f04_turn_90_down_230m, null, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p412_f04_turn_90_down_230m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_F01_STRAIGHT_1, new MyPrefabConfiguration(MyModelsEnum.p411_f01_straight_1, null, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, null, MyModelsEnum.p411_f01_straight_1_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_F02_STRAIGHT_2, new MyPrefabConfiguration(MyModelsEnum.p411_f02_straight_2, null, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, null, MyModelsEnum.p411_f02_straight_2_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_F03_STRAIGHT_3, new MyPrefabConfiguration(MyModelsEnum.p411_f03_straight_3, null, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, null, MyModelsEnum.p411_f03_straight_3_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P414_E01_ENTRANCE_60M, new MyPrefabConfiguration(MyModelsEnum.p414_e01_entrance_60m, MyModelsEnum.p414_e01_entrance_60m_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p414_e01_entrance_60m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_E01_STRAIGHT_1, new MyPrefabConfiguration(MyModelsEnum.p411_e01_straight_1, MyModelsEnum.p411_e01_straight_1_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p411_e01_straight_1_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_E02_STRAIGHT_2, new MyPrefabConfiguration(MyModelsEnum.p411_e02_straight_2, MyModelsEnum.p411_e02_straight_2_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p411_e02_straight_2_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_E03_STRAIGHT_3, new MyPrefabConfiguration(MyModelsEnum.p411_e03_straight_3, MyModelsEnum.p411_e03_straight_3_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p411_e03_straight_3_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_E04_STRAIGHT_4, new MyPrefabConfiguration(MyModelsEnum.p411_e04_straight_4, MyModelsEnum.p411_e04_straight_4_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p411_e04_straight_4_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_E05_STRAIGHT_5, new MyPrefabConfiguration(MyModelsEnum.p411_e05_straight_5, MyModelsEnum.p411_e05_straight_5_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p411_e05_straight_5_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P415_D01_DOORCASE, new MyPrefabConfiguration(MyModelsEnum.p415_d01_doorcase, null, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.DOOR_CASES, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p415_d01_doorcase_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P415_D02_DOOR1, new MyPrefabConfiguration(MyModelsEnum.p415_d02_door1, null, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.DOORS, null, MyMaterialType.METAL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P415_D03_DOOR2_A, new MyPrefabConfiguration(MyModelsEnum.p415_d03_door2_a, null, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.DOORS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p415_d03_door2_a_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P415_D03_DOOR2_B, new MyPrefabConfiguration(MyModelsEnum.p415_d03_door2_b, null, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.DOORS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p415_d03_door2_b_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P413_D01_JUNCTION_T_HORIZONTAL, new MyPrefabConfiguration(MyModelsEnum.p413_d01_junction_t_horizontal, MyModelsEnum.p413_d01_junction_t_horizontal_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P413_D03_JUNCTION_X_HORIZONTAL, new MyPrefabConfiguration(MyModelsEnum.p413_d03_junction_x_horizontal, MyModelsEnum.p413_d03_junction_x_horizontal_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p413_d03_junction_x_horizontal_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P414_D01_ENTRANCE_60M, new MyPrefabConfiguration(MyModelsEnum.p414_d01_entrance_60m, null, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p414_d01_entrance_60m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_D01_STRAIGHT_10M, new MyPrefabConfiguration(MyModelsEnum.p411_d01_straight_10m, MyModelsEnum.p411_d01_straight_10m_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, null, MyModelsEnum.p411_d01_straight_10m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_D02_STRAIGHT_40M_WITH_HOLE, new MyPrefabConfiguration(MyModelsEnum.p411_d02_straight_40m_with_hole, MyModelsEnum.p411_d02_straight_40m_with_hole_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, null, MyModelsEnum.p411_d02_straight_40m_with_hole_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_D03_STRAIGHT_60M, new MyPrefabConfiguration(MyModelsEnum.p411_d03_straight_60m, MyModelsEnum.p411_d03_straight_60m_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, null, MyModelsEnum.p411_d03_straight_60m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_D04_STRAIGHT_120M, new MyPrefabConfiguration(MyModelsEnum.p411_d04_straight_120m, MyModelsEnum.p411_d04_straight_120m_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, null, MyModelsEnum.p411_d04_straight_120m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_D05_STRAIGHT_180M, new MyPrefabConfiguration(MyModelsEnum.p411_d05_straight_180m, MyModelsEnum.p411_d05_straight_180m_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, null, MyModelsEnum.p411_d05_straight_180m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P413_C01_JUNCTION_T_HORIZONTAL, new MyPrefabConfiguration(MyModelsEnum.p413_c01_junction_t_horizontal, MyModelsEnum.p413_c01_junction_t_horizontal_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p413_c01_junction_t_horizontal_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P413_C01_JUNCTION_X_HORIZONTAL, new MyPrefabConfiguration(MyModelsEnum.p413_c01_junction_x_horizontal, MyModelsEnum.p413_c01_junction_x_horizontal_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p413_c01_junction_x_horizontal_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P414_C01_ENTRANCE_60M, new MyPrefabConfiguration(MyModelsEnum.p414_c01_entrance_60m, null, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p414_c01_entrance_60m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_C01_STRAIGHT_10M, new MyPrefabConfiguration(MyModelsEnum.p411_c01_straight_10m, null, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p411_c01_straight_10m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_C02_STRAIGHT_40M_WITH_HOLE, new MyPrefabConfiguration(MyModelsEnum.p411_c02_straight_40m_with_hole, MyModelsEnum.p411_c02_straight_40m_with_hole_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p411_c02_straight_40m_with_hole_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_C03_STRAIGHT_60M, new MyPrefabConfiguration(MyModelsEnum.p411_c03_straight_60m, MyModelsEnum.p411_c03_straight_60m_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p411_c03_straight_60m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_C04_STRAIGHT_120M, new MyPrefabConfiguration(MyModelsEnum.p411_c04_straight_120m, MyModelsEnum.p411_c04_straight_120m_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p411_c04_straight_120m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_C05_STRAIGHT_180M, new MyPrefabConfiguration(MyModelsEnum.p411_c05_straight_180m, MyModelsEnum.p411_c05_straight_180m_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p411_c05_straight_180m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P415_B01_DOORCASE, new MyPrefabConfiguration(MyModelsEnum.p415_b01_doorcase, MyModelsEnum.p415_b01_doorcase_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.DOOR_CASES, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p415_b01_doorcase_COL));\n            //AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P415_B02_DOOR, new MyPrefabConfiguration(MyModelsEnum.p415_b02_door, null, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.DOORS, null, MyMaterialType.METAL, enabledInEditor: false));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P413_B01_JUNCTION_T_HORIZONTAL, new MyPrefabConfiguration(MyModelsEnum.p413_b01_junction_t_horizontal, MyModelsEnum.p413_b01_junction_t_horizontal_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p413_b01_junction_t_horizontal_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P413_B02_JUNCTION_T_VERTICAL, new MyPrefabConfiguration(MyModelsEnum.p413_b02_junction_t_vertical, MyModelsEnum.p413_b02_junction_t_vertical_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p413_b02_junction_t_vertical_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P414_B02_ENTRANCE_60M, new MyPrefabConfiguration(MyModelsEnum.p414_b02_entrance_60m, MyModelsEnum.p414_b02_entrance_60m_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_B21_TURN_S_UP, new MyPrefabConfiguration(MyModelsEnum.p412_b21_turn_s_up, MyModelsEnum.p412_b21_turn_s_up_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p412_b21_turn_s_up_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_B22_TURN_S_LEFT, new MyPrefabConfiguration(MyModelsEnum.p412_b22_turn_s_left, MyModelsEnum.p412_b22_turn_s_left_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_B23_TURN_S_RIGHT, new MyPrefabConfiguration(MyModelsEnum.p412_b23_turn_s_right, MyModelsEnum.p412_b23_turn_s_right_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p412_b23_turn_s_right_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_B24_TURN_S_DOWN, new MyPrefabConfiguration(MyModelsEnum.p412_b24_turn_s_down, MyModelsEnum.p412_b24_turn_s_down_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_B11_TURN_90_UP_160M, new MyPrefabConfiguration(MyModelsEnum.p412_b11_turn_90_up_160m, null, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_B12_TURN_90_LEFT_160M, new MyPrefabConfiguration(MyModelsEnum.p412_b12_turn_90_left_160m, MyModelsEnum.p412_b12_turn_90_left_160m_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_B13_TURN_90_RIGHT_160M, new MyPrefabConfiguration(MyModelsEnum.p412_b13_turn_90_right_160m, MyModelsEnum.p412_b13_turn_90_right_160m_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p412_b13_turn_90_right_160m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_B14_TURN_90_DOWN_160M, new MyPrefabConfiguration(MyModelsEnum.p412_b14_turn_90_down_160m, MyModelsEnum.p412_b14_turn_90_down_160m_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p412_b14_turn_90_down_160m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_B01_TURN_90_UP_80M, new MyPrefabConfiguration(MyModelsEnum.p412_b01_turn_90_up_80m, MyModelsEnum.p412_b01_turn_90_up_80m_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p412_b01_turn_90_up_80m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_B02_TURN_90_LEFT_80M, new MyPrefabConfiguration(MyModelsEnum.p412_b02_turn_90_left_80m, MyModelsEnum.p412_b02_turn_90_left_80m_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, previewAngle: MyPreviewPointOfViewEnum.Left, collisionModelEnum: MyModelsEnum.p412_b02_turn_90_left_80m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_B03_TURN_90_RIGHT_80M, new MyPrefabConfiguration(MyModelsEnum.p412_b03_turn_90_right_80m, MyModelsEnum.p412_b03_turn_90_right_80m_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p412_b03_turn_90_right_80m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_B04_TURN_90_DOWN_80M, new MyPrefabConfiguration(MyModelsEnum.p412_b04_turn_90_down_80m, MyModelsEnum.p412_b04_turn_90_down_80m_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p412_b04_turn_90_down_80m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_B01_STRAIGHT_10M, new MyPrefabConfiguration(MyModelsEnum.p411_b01_straight_10m, MyModelsEnum.p411_b01_straight_10m_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, null, MyModelsEnum.p411_b01_straight_10m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.p411_B02_STRAIGHT_30M_YELLOW, new MyPrefabConfiguration(MyModelsEnum.p411_b02_straight_30m_yellow, MyModelsEnum.p411_b02_straight_30m_yellow_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, null, MyModelsEnum.p411_b02_straight_30m_yellow_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.p411_B03_STRAIGHT_320M, new MyPrefabConfiguration(MyModelsEnum.p411_b03_straight_320m, MyModelsEnum.p411_b03_straight_320m_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, null, MyModelsEnum.p411_b03_straight_320m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.p411_B04_STRAIGHT_80M_WITH_SIDE_GRATES, new MyPrefabConfiguration(MyModelsEnum.p411_b04_straight_80m_with_side_grates, MyModelsEnum.p411_b04_straight_80m_with_side_grates_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, null, MyModelsEnum.p411_b04_straight_80m_with_side_grates_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.p411_B05_STRAIGHT_80M_WITH_SIDE_OPEN, new MyPrefabConfiguration(MyModelsEnum.p411_b05_straight_80m_with_side_open, MyModelsEnum.p411_b05_straight_80m_with_side_open_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, null, MyModelsEnum.p411_b05_straight_80m_with_side_open_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.p411_B06_STRAIGHT_180M_CONCRETE, new MyPrefabConfiguration(MyModelsEnum.p411_b06_straight_180m_concrete, MyModelsEnum.p411_b06_straight_180m_concrete_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, null, MyModelsEnum.p411_b06_straight_180m_concrete_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.p411_B06_STRAIGHT_200M, new MyPrefabConfiguration(MyModelsEnum.p411_b06_straight_200m, MyModelsEnum.p411_b06_straight_200m_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, null, MyModelsEnum.p411_b06_straight_200m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.p411_B07_STRAIGHT_180M_BLUE, new MyPrefabConfiguration(MyModelsEnum.p411_b07_straight_180m_blue, MyModelsEnum.p411_b07_straight_180m_blue_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, null, MyModelsEnum.p411_b07_straight_180m_blue_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.p411_B09_STRAIGHT_30M_GRAY, new MyPrefabConfiguration(MyModelsEnum.p411_b09_straight_30m_gray, MyModelsEnum.p411_b09_straight_30m_gray_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, null, MyModelsEnum.p411_b09_straight_30m_gray_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.p411_B11_STRAIGHT_220M, new MyPrefabConfiguration(MyModelsEnum.p411_b11_straight_220m, MyModelsEnum.p411_b11_straight_220m_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, null, MyModelsEnum.p411_b11_straight_220m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.p411_B12_STRAIGHT_160M_DARK_METAL, new MyPrefabConfiguration(MyModelsEnum.p411_b12_straight_160m_dark_metal, MyModelsEnum.p411_b12_straight_160m_dark_metal_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, null, MyModelsEnum.p411_b12_straight_160m_dark_metal_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.p411_B13_STRAIGHT_100M_TUBE_INSIDE, new MyPrefabConfiguration(MyModelsEnum.p411_b13_straight_100m_tube_inside, MyModelsEnum.p411_b13_straight_100m_tube_inside_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, null, MyModelsEnum.p411_b13_straight_100m_tube_inside_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P413_A01_JUNCTION_T_HORIZONTAL, new MyPrefabConfiguration(MyModelsEnum.p413_a01_junction_t_horizontal, MyModelsEnum.p413_a01_junction_t_horizontal_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, null, MyModelsEnum.p413_a01_junction_t_horizontal_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P413_A02_JUNCTION_T_VERTICAL, new MyPrefabConfiguration(MyModelsEnum.p413_a02_junction_t_vertical, MyModelsEnum.p413_a02_junction_t_vertical_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, null, MyModelsEnum.p413_a02_junction_t_vertical_COL));\n            //AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P414_A01_ENTRANCE_30M, new MyPrefabConfiguration(MyModelsEnum.p414_a01_entrance_30m, null, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P414_A02_ENTRANCE_60M, new MyPrefabConfiguration(MyModelsEnum.p414_a02_entrance_60m, MyModelsEnum.p414_a02_entrance_60m_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, null, MyModelsEnum.p414_a02_entrance_60m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_A21_TURN_S_UP, new MyPrefabConfiguration(MyModelsEnum.p412_a21_turn_s_up, MyModelsEnum.p412_a21_turn_s_up_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, null, MyModelsEnum.p412_a21_turn_s_up_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_A22_TURN_S_LEFT, new MyPrefabConfiguration(MyModelsEnum.p412_a22_turn_s_left, MyModelsEnum.p412_a22_turn_s_left_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, null, MyModelsEnum.p412_a22_turn_s_left_COL, previewAngle: MyPreviewPointOfViewEnum.RearLeft));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_A23_TURN_S_RIGHT, new MyPrefabConfiguration(MyModelsEnum.p412_a23_turn_s_right, MyModelsEnum.p412_a23_turn_s_right_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, null, MyModelsEnum.p412_a23_turn_s_right_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_A24_TURN_S_DOWN, new MyPrefabConfiguration(MyModelsEnum.p412_a24_turn_s_down, MyModelsEnum.p412_a24_turn_s_down_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, null, MyModelsEnum.p412_a24_turn_s_down_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_A11_TURN_90_UP_160M, new MyPrefabConfiguration(MyModelsEnum.p412_a11_turn_90_up_160m, MyModelsEnum.p412_a11_turn_90_up_160m_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, null, MyModelsEnum.p412_a11_turn_90_up_160m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_A12_TURN_90_LEFT_160M, new MyPrefabConfiguration(MyModelsEnum.p412_a12_turn_90_left_160m, MyModelsEnum.p412_a12_turn_90_left_160m_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, null, MyModelsEnum.p412_a12_turn_90_left_160m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_A13_TURN_90_RIGHT_160M, new MyPrefabConfiguration(MyModelsEnum.p412_a13_turn_90_right_160m, MyModelsEnum.p412_a13_turn_90_right_160m_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, null, MyModelsEnum.p412_a13_turn_90_right_160m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_A14_TURN_90_DOWN_160M, new MyPrefabConfiguration(MyModelsEnum.p412_a14_turn_90_down_160m, MyModelsEnum.p412_a14_turn_90_down_160m_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, null, MyModelsEnum.p412_a14_turn_90_down_160m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_A01_TURN_90_UP_80M, new MyPrefabConfiguration(MyModelsEnum.p412_a01_turn_90_up_80m, MyModelsEnum.p412_a01_turn_90_up_80m_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, null, MyModelsEnum.p412_a01_turn_90_up_80m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_A02_TURN_90_LEFT_80M, new MyPrefabConfiguration(MyModelsEnum.p412_a02_turn_90_left_80m, MyModelsEnum.p412_a02_turn_90_left_80m_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, null, MyModelsEnum.p412_a02_turn_90_left_80m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_A03_TURN_90_RIGHT_80M, new MyPrefabConfiguration(MyModelsEnum.p412_a03_turn_90_right_80m, MyModelsEnum.p412_a03_turn_90_right_80m_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, null, MyModelsEnum.p412_a03_turn_90_right_80m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_A04_TURN_90_DOWN_80M, new MyPrefabConfiguration(MyModelsEnum.p412_a04_turn_90_down_80m, MyModelsEnum.p412_a04_turn_90_down_80m_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, null, MyModelsEnum.p412_a04_turn_90_down_80m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_A01_STRAIGHT_10M, new MyPrefabConfiguration(MyModelsEnum.p411_a01_straight_10m, MyModelsEnum.p411_a01_straight_10m_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, null, MyModelsEnum.p411_a01_straight_10m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_A02_STRAIGHT_60M_WITH_HOLE, new MyPrefabConfiguration(MyModelsEnum.p411_a02_straight_60m_with_hole, MyModelsEnum.p411_a02_straight_60m_with_hole_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, null, MyModelsEnum.p411_a02_straight_60m_with_hole_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_A03_STRAIGHT_120M, new MyPrefabConfiguration(MyModelsEnum.p411_a03_straight_120m, MyModelsEnum.p411_a03_straight_120m_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, null, MyModelsEnum.p411_a03_straight_120m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_A04_STRAIGHT_80M, new MyPrefabConfiguration(MyModelsEnum.p411_a04_straight_80m, MyModelsEnum.p411_a04_straight_80m_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, null, MyModelsEnum.p411_a04_straight_80m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_A05_STRAIGHT_80M_WITH_EXTENSION, new MyPrefabConfiguration(MyModelsEnum.p411_a05_straight_80m_with_extension, MyModelsEnum.p411_a05_straight_80m_with_extension_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, null, MyModelsEnum.p411_a05_straight_80m_with_extension_COL));\n\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P413_D02_JUNCTION_T_VERTICAL, new MyPrefabConfiguration(MyModelsEnum.p413_d02_junction_t_vertical, MyModelsEnum.p413_d02_junction_t_vertical_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p413_d02_junction_t_vertical_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P413_D04_JUNCTION_X_VERTICAL, new MyPrefabConfiguration(MyModelsEnum.p413_d04_junction_x_vertical, MyModelsEnum.p413_d04_junction_x_vertical_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p413_d04_junction_x_vertical_COL));\n\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_F11_TURN_90_UP_230M, new MyPrefabConfiguration(MyModelsEnum.p412_f11_turn_90_up_230m, MyModelsEnum.p412_f11_turn_90_up_230m_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p412_f11_turn_90_up_230m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_F12_TURN_90_LEFT_230M, new MyPrefabConfiguration(MyModelsEnum.p412_f12_turn_90_left_230m, MyModelsEnum.p412_f12_turn_90_left_230m_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p412_f12_turn_90_left_230m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_F13_TURN_90_RIGHT_230M, new MyPrefabConfiguration(MyModelsEnum.p412_f13_turn_90_right_230m, MyModelsEnum.p412_f13_turn_90_right_230m_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p412_f13_turn_90_right_230m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_F14_TURN_90_DOWN_230M, new MyPrefabConfiguration(MyModelsEnum.p412_f14_turn_90_down_230m, MyModelsEnum.p412_f14_turn_90_down_230m_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p412_f14_turn_90_down_230m_COL));\n\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_F04_STRAIGHT_4, new MyPrefabConfiguration(MyModelsEnum.p411_f04_straight_4, null, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, null, MyModelsEnum.p411_f04_straight_4_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_F05_STRAIGHT_5, new MyPrefabConfiguration(MyModelsEnum.p411_f05_straight_5, null, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, null, MyModelsEnum.p411_f05_straight_5_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_G05_STRAIGHT_5, new MyPrefabConfiguration(MyModelsEnum.p411_g05_straight_5, null, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, null, MyModelsEnum.p411_g05_straight_5_COL));\n\n            \n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabKinematicPart, (int)MyMwcObjectBuilder_PrefabKinematicPart_TypesEnum.P415_A02_DOOR_LEFT,\n                new MyPrefabConfigurationKinematicPart((int)MyMwcObjectBuilder_PrefabKinematicPart_TypesEnum.P415_A02_DOOR_LEFT, MyModelsEnum.p415_a02_door_left, \"door_left_open\", \"door_left_close\", BuildTypesEnum.NONE, CategoryTypesEnum.DOORS, null, MyMaterialType.METAL, DamageTypesEnum.USE_OWN, collisionModelEnum: MyModelsEnum.p415_a02_door_left_COL));\n\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabKinematicPart, (int)MyMwcObjectBuilder_PrefabKinematicPart_TypesEnum.P415_A02_DOOR_RIGHT,\n                new MyPrefabConfigurationKinematicPart((int)MyMwcObjectBuilder_PrefabKinematicPart_TypesEnum.P415_A02_DOOR_LEFT, MyModelsEnum.p415_a02_door_right, \"door_right_open\", \"door_right_close\", BuildTypesEnum.NONE, CategoryTypesEnum.DOORS, null, MyMaterialType.METAL, DamageTypesEnum.USE_OWN, collisionModelEnum: MyModelsEnum.p415_a02_door_right_COL));\n\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabKinematic, (int)MyMwcObjectBuilder_PrefabKinematic_TypesEnum.P415_A01_DOORCASE, \n                new MyPrefabConfigurationKinematic(\n                MyModelsEnum.p415_a01_doorcase, MyModelsEnum.p415_a01_doorcase_LOD1,\n                new List<MyPrefabConfigurationKinematicPart>() {\n                    (MyPrefabConfigurationKinematicPart)GetPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabKinematicPart, (int)MyMwcObjectBuilder_PrefabKinematicPart_TypesEnum.P415_A02_DOOR_LEFT), \n                    (MyPrefabConfigurationKinematicPart)GetPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabKinematicPart, (int)MyMwcObjectBuilder_PrefabKinematicPart_TypesEnum.P415_A02_DOOR_RIGHT)\n                },\n                MySoundCuesEnum.MovDoor1AOpen, null, MySoundCuesEnum.MovDoor1AClose,//soundhere\n                1.6f, 1.4f,\n                BuildTypesEnum.CONNECTIONS,\n                CategoryTypesEnum.DOOR_CASES, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p415_a01_doorcase_COL));\n\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabKinematicPart, (int)MyMwcObjectBuilder_PrefabKinematicPart_TypesEnum.P415_C02_DOOR1_LEFT,\n                new MyPrefabConfigurationKinematicPart((int)MyMwcObjectBuilder_PrefabKinematicPart_TypesEnum.P415_C02_DOOR1_LEFT, MyModelsEnum.p415_c02_door1_left, \"door_left_open\", \"door_left_close\", BuildTypesEnum.NONE, CategoryTypesEnum.DOORS, null, MyMaterialType.METAL, DamageTypesEnum.USE_OWN, collisionModelEnum: MyModelsEnum.p415_c02_door1_left_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabKinematicPart, (int)MyMwcObjectBuilder_PrefabKinematicPart_TypesEnum.P415_C02_DOOR1_RIGHT,\n                new MyPrefabConfigurationKinematicPart((int)MyMwcObjectBuilder_PrefabKinematicPart_TypesEnum.P415_C02_DOOR1_LEFT, MyModelsEnum.p415_c02_door1_right, \"door_right_open\", \"door_right_close\", BuildTypesEnum.NONE, CategoryTypesEnum.DOORS, null, MyMaterialType.METAL, DamageTypesEnum.USE_OWN, collisionModelEnum: MyModelsEnum.p415_c02_door1_right_COL));\n\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabKinematic, (int)MyMwcObjectBuilder_PrefabKinematic_TypesEnum.P415_C01_DOOR1, new MyPrefabConfigurationKinematic(\n                MyModelsEnum.p415_c01_doorcase, MyModelsEnum.p415_c01_doorcase_LOD1,\n                new List<MyPrefabConfigurationKinematicPart>() {\n                    (MyPrefabConfigurationKinematicPart)GetPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabKinematicPart, (int)MyMwcObjectBuilder_PrefabKinematicPart_TypesEnum.P415_C02_DOOR1_LEFT), \n                    (MyPrefabConfigurationKinematicPart)GetPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabKinematicPart, (int)MyMwcObjectBuilder_PrefabKinematicPart_TypesEnum.P415_C02_DOOR1_RIGHT) \n                },\n                MySoundCuesEnum.MovDoor1BOpen, null, MySoundCuesEnum.MovDoor1BClose,//soundhere\n                1.6f, 1.4f,\n                BuildTypesEnum.CONNECTIONS,\n                CategoryTypesEnum.DOOR_CASES, null, MyMaterialType.METAL, MyModelsEnum.p415_c01_doorcase_COL));\n\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabKinematicPart, (int)MyMwcObjectBuilder_PrefabKinematicPart_TypesEnum.P415_C03_DOOR2_A,\n                new MyPrefabConfigurationKinematicPart((int)MyMwcObjectBuilder_PrefabKinematicPart_TypesEnum.P415_C03_DOOR2_A, MyModelsEnum.p415_c03_door2_a, \"door_left_open\", \"door_left_close\", BuildTypesEnum.NONE, CategoryTypesEnum.DOORS, null, MyMaterialType.METAL, DamageTypesEnum.USE_OWN));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabKinematicPart, (int)MyMwcObjectBuilder_PrefabKinematicPart_TypesEnum.P415_C03_DOOR2_B,\n                new MyPrefabConfigurationKinematicPart((int)MyMwcObjectBuilder_PrefabKinematicPart_TypesEnum.P415_C03_DOOR2_B, MyModelsEnum.p415_c03_door2_b, \"door_right_open\", \"door_right_close\", BuildTypesEnum.NONE, CategoryTypesEnum.DOORS, null, MyMaterialType.METAL, DamageTypesEnum.USE_OWN));\n\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabKinematicPart, (int)MyMwcObjectBuilder_PrefabKinematicPart_TypesEnum.P415_C03_DOOR2_B_LEFT,\n                new MyPrefabConfigurationKinematicPart((int)MyMwcObjectBuilder_PrefabKinematicPart_TypesEnum.P415_C03_DOOR2_B_LEFT, MyModelsEnum.p415_c03_door2_b_left, \"door_left_open\", \"door_left_close\", BuildTypesEnum.NONE, CategoryTypesEnum.DOORS, null, MyMaterialType.METAL, DamageTypesEnum.USE_OWN, MyModelsEnum.p415_c03_door2_b_left_LOD1, MyModelsEnum.p415_c03_door2_b_left_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabKinematicPart, (int)MyMwcObjectBuilder_PrefabKinematicPart_TypesEnum.P415_C03_DOOR2_B_RIGHT,\n                new MyPrefabConfigurationKinematicPart((int)MyMwcObjectBuilder_PrefabKinematicPart_TypesEnum.P415_C03_DOOR2_B_RIGHT, MyModelsEnum.p415_c03_door2_b_right, \"door_right_open\", \"door_right_close\", BuildTypesEnum.NONE, CategoryTypesEnum.DOORS, null, MyMaterialType.METAL, DamageTypesEnum.USE_OWN, MyModelsEnum.p415_c03_door2_b_right_LOD1, MyModelsEnum.p415_c03_door2_b_right_COL));\n\n\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabKinematic, (int)MyMwcObjectBuilder_PrefabKinematic_TypesEnum.P415_C01_DOOR2, new MyPrefabConfigurationKinematic(\n                MyModelsEnum.p415_c01_doorcase, null,\n                new List<MyPrefabConfigurationKinematicPart>() {\n                    (MyPrefabConfigurationKinematicPart)GetPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabKinematicPart, (int)MyMwcObjectBuilder_PrefabKinematicPart_TypesEnum.P415_C03_DOOR2_B_LEFT), \n                    (MyPrefabConfigurationKinematicPart)GetPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabKinematicPart, (int)MyMwcObjectBuilder_PrefabKinematicPart_TypesEnum.P415_C03_DOOR2_B_RIGHT) \n                },\n                MySoundCuesEnum.MovDoor2AOpen, null, MySoundCuesEnum.MovDoor2AClose,//soundhere\n                2.5f, 2.7f,\n                BuildTypesEnum.CONNECTIONS,\n                CategoryTypesEnum.DOOR_CASES, null, MyMaterialType.METAL, MyModelsEnum.p415_c01_doorcase_COL));\n\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabKinematicPart, (int)MyMwcObjectBuilder_PrefabKinematicPart_TypesEnum.P415_C03_DOOR2_A_LEFT,\n                new MyPrefabConfigurationKinematicPart((int)MyMwcObjectBuilder_PrefabKinematicPart_TypesEnum.P415_C03_DOOR2_A_LEFT, MyModelsEnum.p415_c03_door2_a_left, \"door_left_open\", \"door_left_close\", BuildTypesEnum.NONE, CategoryTypesEnum.DOORS, null, MyMaterialType.METAL, DamageTypesEnum.USE_OWN, MyModelsEnum.p415_c03_door2_a_left_LOD1, MyModelsEnum.p415_c03_door2_a_left_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabKinematicPart, (int)MyMwcObjectBuilder_PrefabKinematicPart_TypesEnum.P415_C03_DOOR2_A_RIGHT,\n                new MyPrefabConfigurationKinematicPart((int)MyMwcObjectBuilder_PrefabKinematicPart_TypesEnum.P415_C03_DOOR2_A_RIGHT, MyModelsEnum.p415_c03_door2_a_right, \"door_right_open\", \"door_right_close\", BuildTypesEnum.NONE, CategoryTypesEnum.DOORS, null, MyMaterialType.METAL, DamageTypesEnum.USE_OWN, MyModelsEnum.p415_c03_door2_a_right_LOD1, MyModelsEnum.p415_c03_door2_a_right_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabKinematic, (int)MyMwcObjectBuilder_PrefabKinematic_TypesEnum.P415_C01_DOOR3, new MyPrefabConfigurationKinematic(\n                MyModelsEnum.p415_c01_doorcase, null,\n                new List<MyPrefabConfigurationKinematicPart>() {\n                    (MyPrefabConfigurationKinematicPart)GetPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabKinematicPart, (int)MyMwcObjectBuilder_PrefabKinematicPart_TypesEnum.P415_C03_DOOR2_A_LEFT), \n                    (MyPrefabConfigurationKinematicPart)GetPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabKinematicPart, (int)MyMwcObjectBuilder_PrefabKinematicPart_TypesEnum.P415_C03_DOOR2_A_RIGHT) \n                },\n                MySoundCuesEnum.MovDoor2BOpen, null, MySoundCuesEnum.MovDoor2BClose,//soundhere\n                3.0f, 4.0f,\n                BuildTypesEnum.CONNECTIONS,\n                CategoryTypesEnum.DOOR_CASES, null, MyMaterialType.METAL, MyModelsEnum.p415_c01_doorcase_COL));\n\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabKinematic, (int)MyMwcObjectBuilder_PrefabKinematic_TypesEnum.P415_C01_DOOR4, new MyPrefabConfigurationKinematic(\n                MyModelsEnum.p415_c01_doorcase, null,\n                new List<MyPrefabConfigurationKinematicPart>() {\n                    (MyPrefabConfigurationKinematicPart)GetPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabKinematicPart, (int)MyMwcObjectBuilder_PrefabKinematicPart_TypesEnum.P415_C03_DOOR2_B_LEFT), \n                    (MyPrefabConfigurationKinematicPart)GetPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabKinematicPart, (int)MyMwcObjectBuilder_PrefabKinematicPart_TypesEnum.P415_C03_DOOR2_B_RIGHT) \n                },\n                MySoundCuesEnum.MovDoor3AOpen, null, MySoundCuesEnum.MovDoor3AClose,//soundhere\n                3.5f, 3.0f,\n                BuildTypesEnum.CONNECTIONS,\n                CategoryTypesEnum.DOOR_CASES, null, MyMaterialType.METAL, MyModelsEnum.p415_c01_doorcase_COL));\n\n            //AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_A05_STRAIGHT_80M_WITH_EXTENSION, new MyPrefabConfiguration(MyModelsEnum.p411_a05_straight_80m_with_extension, MyModelsEnum.p411_a05_straight_80m_with_extension_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, null, MyModelsEnum.p411_a05_straight_80m_with_extension_COL));\n            //AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P341_A01_OPEN_DOCK_VARIATION1, new MyPrefabConfiguration(MyModelsEnum.p341_a01_open_dock_variation1, null, BuildTypesEnum.MODULES, CategoryTypesEnum.INDUSTRY, null, MyMaterialType.METAL, null, MyModelsEnum.p341_a01_open_dock_variation1_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabKinematicPart, (int)MyMwcObjectBuilder_PrefabKinematicPart_TypesEnum.P341_A01_OPEN_DOCK_VARIATION1_DOORLEFT,\n                new MyPrefabConfigurationKinematicPart((int)MyMwcObjectBuilder_PrefabKinematicPart_TypesEnum.P341_A01_OPEN_DOCK_VARIATION1_DOORLEFT, MyModelsEnum.p341_a01_open_dock_variation1_doorleft, \"door_left_open\", \"door_left_close\", BuildTypesEnum.NONE, CategoryTypesEnum.DOORS, null, MyMaterialType.METAL, DamageTypesEnum.USE_OWN));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabKinematicPart, (int)MyMwcObjectBuilder_PrefabKinematicPart_TypesEnum.P341_A01_OPEN_DOCK_VARIATION1_DOORRIGHT,\n                new MyPrefabConfigurationKinematicPart((int)MyMwcObjectBuilder_PrefabKinematicPart_TypesEnum.P341_A01_OPEN_DOCK_VARIATION1_DOORRIGHT, MyModelsEnum.p341_a01_open_dock_variation1_doorright, \"door_right_open\", \"door_right_close\", BuildTypesEnum.NONE, CategoryTypesEnum.DOORS, null, MyMaterialType.METAL, DamageTypesEnum.USE_OWN));\n\n\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabKinematic, (int)MyMwcObjectBuilder_PrefabKinematic_TypesEnum.P341_A01_OPEN_DOCK_VARIATION1, new MyPrefabConfigurationKinematic(\n                MyModelsEnum.p341_a01_open_dock_variation1, MyModelsEnum.p341_a01_open_dock_variation1_LOD1,\n                new List<MyPrefabConfigurationKinematicPart>() {\n                    (MyPrefabConfigurationKinematicPart)GetPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabKinematicPart, (int)MyMwcObjectBuilder_PrefabKinematicPart_TypesEnum.P341_A01_OPEN_DOCK_VARIATION1_DOORLEFT), \n                    (MyPrefabConfigurationKinematicPart)GetPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabKinematicPart, (int)MyMwcObjectBuilder_PrefabKinematicPart_TypesEnum.P341_A01_OPEN_DOCK_VARIATION1_DOORRIGHT) \n                },\n                MySoundCuesEnum.MovDoor1AOpen, null, MySoundCuesEnum.MovDoor1AClose,//soundhere\n                1.6f, 1.4f,\n                BuildTypesEnum.MODULES,\n                CategoryTypesEnum.INDUSTRY, null, MyMaterialType.METAL, MyModelsEnum.p341_a01_open_dock_variation1_COL));\n\n\n\n\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P382_E01_BRIDGE5, new MyPrefabConfiguration(MyModelsEnum.p382_e01_bridge5, MyModelsEnum.p382_e01_bridge5_LOD1, BuildTypesEnum.MODULES, CategoryTypesEnum.MANNED_OBJECTS, null, MyMaterialType.METAL, explosionParticleEffectScale: 1f));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P382_D01_BRIDGE4, new MyPrefabConfiguration(MyModelsEnum.p382_d01_bridge4, MyModelsEnum.p382_d01_bridge4_LOD1, BuildTypesEnum.MODULES, CategoryTypesEnum.MANNED_OBJECTS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p382_d01_bridge4_COL, explosionParticleEffectScale: 1f));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P382_C01_BRIDGE3, new MyPrefabConfiguration(MyModelsEnum.p382_c01_bridge3, MyModelsEnum.p382_c01_bridge3_LOD1, BuildTypesEnum.MODULES, CategoryTypesEnum.MANNED_OBJECTS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p382_c01_bridge3_COL, explosionParticleEffectScale: 1f));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P382_B01_BRIDGE2, new MyPrefabConfiguration(MyModelsEnum.p382_b01_bridge2, null, BuildTypesEnum.MODULES, CategoryTypesEnum.MANNED_OBJECTS, null, MyMaterialType.METAL, explosionParticleEffectScale: 1f));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P382_A01_BRIDGE1, new MyPrefabConfiguration(MyModelsEnum.p382_a01_bridge1, MyModelsEnum.p382_a01_bridge1_LOD1, BuildTypesEnum.MODULES, CategoryTypesEnum.MANNED_OBJECTS, null, MyMaterialType.METAL, explosionParticleEffectScale: 1f, collisionModelEnum: MyModelsEnum.p382_a01_bridge1_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P381_C01_BUILDING4, new MyPrefabConfiguration(MyModelsEnum.p381_c01_building4, MyModelsEnum.p381_c01_building4_LOD1, BuildTypesEnum.MODULES, CategoryTypesEnum.MANNED_OBJECTS, null, MyMaterialType.METAL, explosionParticleEffectScale: 1f, collisionModelEnum: MyModelsEnum.p381_c01_building4_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P381_C01_BUILDING3, new MyPrefabConfiguration(MyModelsEnum.p381_c01_building3, MyModelsEnum.p381_c01_building3_LOD1, BuildTypesEnum.MODULES, CategoryTypesEnum.MANNED_OBJECTS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p381_c01_building3_COL, explosionParticleEffectScale: 1f));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P381_B01_BUILDING2, new MyPrefabConfiguration(MyModelsEnum.p381_b01_building2, MyModelsEnum.p381_b01_building2_LOD1, BuildTypesEnum.MODULES, CategoryTypesEnum.MANNED_OBJECTS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p381_b01_building2_COL, explosionParticleEffectScale: 1f));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P381_A01_BUILDING1, new MyPrefabConfiguration(MyModelsEnum.p381_a01_building1, MyModelsEnum.p381_a01_building1_LOD1, BuildTypesEnum.MODULES, CategoryTypesEnum.MANNED_OBJECTS, null, MyMaterialType.METAL, explosionParticleEffectScale: 1f, collisionModelEnum: MyModelsEnum.p381_a01_building1_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabHangar, (int)MyMwcObjectBuilder_PrefabHangar_TypesEnum.VENDOR, new MyPrefabConfigurationHangar(MyModelsEnum.vendor, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.OTHER, null, MyMaterialType.METAL, PrefabTypesFlagEnum.Vendor, collisionModel: MyModelsEnum.vendor_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabHangar, (int)MyMwcObjectBuilder_PrefabHangar_TypesEnum.HANGAR, new MyPrefabConfigurationHangar(MyModelsEnum.hangar_screen, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.OTHER, null, MyMaterialType.METAL, collisionModel: MyModelsEnum.hangar_screen_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P362_A01_SHORT_DISTANCE_ANTENNA, new MyPrefabConfiguration(MyModelsEnum.p362_a01_short_distance_antenna, MyModelsEnum.p362_a01_short_distance_antenna_LOD1, BuildTypesEnum.MODULES, CategoryTypesEnum.COMMUNICATIONS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p362_a01_short_distance_antenna_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P361_A01_LONG_DISTANCE_ANTENNA, new MyPrefabConfiguration(MyModelsEnum.p361_a01_long_distance_antenna, MyModelsEnum.p361_a01_long_distance_antenna_LOD1, BuildTypesEnum.MODULES, CategoryTypesEnum.COMMUNICATIONS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p361_a01_long_distance_antenna_COL, explosionParticleEffectScale: 1.6f));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P351_A01_WEAPON_MOUNT, new MyPrefabConfiguration(MyModelsEnum.p351_a01_weapon_mount, MyModelsEnum.p351_a01_weapon_mount_LOD1, BuildTypesEnum.MODULES, CategoryTypesEnum.WEAPONRY, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p351_a01_weapon_mount_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P345_A01_REFINERY, new MyPrefabConfiguration(MyModelsEnum.p345_a01_refinery, MyModelsEnum.p345_a01_refinery_LOD1, BuildTypesEnum.MODULES, CategoryTypesEnum.INDUSTRY, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p345_a01_refinery_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P344_A01_CONTAINER_ARM_FILLED, new MyPrefabConfiguration(MyModelsEnum.p344_a01_container_arm_filled, MyModelsEnum.p344_a01_container_arm_filled_LOD1, BuildTypesEnum.MODULES, CategoryTypesEnum.INDUSTRY, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p344_a01_container_arm_filled_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P344_A02_CONTAINER_ARM_EMPTY, new MyPrefabConfiguration(MyModelsEnum.p344_a02_container_arm_empty, MyModelsEnum.p344_a02_container_arm_empty_LOD1, BuildTypesEnum.MODULES, CategoryTypesEnum.INDUSTRY, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p344_a02_container_arm_empty_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P343_A01_ORE_STORAGE, new MyPrefabConfiguration(MyModelsEnum.p343_a01_ore_storage, MyModelsEnum.p343_a01_ore_storage_LOD1, BuildTypesEnum.MODULES, CategoryTypesEnum.INDUSTRY, null, MyMaterialType.METAL, null, MyModelsEnum.p343_a01_ore_storage_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P342_A01_LOADING_BAY, new MyPrefabConfiguration(MyModelsEnum.p342_a01_loading_bay, MyModelsEnum.p342_a01_loading_bay_LOD1, BuildTypesEnum.MODULES, CategoryTypesEnum.INDUSTRY, null, MyMaterialType.METAL, null, MyModelsEnum.p342_a01_loading_bay_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P341_B01_OPEN_DOCK_VARIATION1, new MyPrefabConfiguration(MyModelsEnum.p341_b01_open_dock_variation1, MyModelsEnum.p341_b01_open_dock_variation1_LOD1, BuildTypesEnum.MODULES, CategoryTypesEnum.INDUSTRY, null, MyMaterialType.METAL, null, MyModelsEnum.p341_b01_open_dock_variation1_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P341_B02_OPEN_DOCK_VARIATION2, new MyPrefabConfiguration(MyModelsEnum.p341_b02_open_dock_variation2, MyModelsEnum.p341_b02_open_dock_variation2_LOD1, BuildTypesEnum.MODULES, CategoryTypesEnum.INDUSTRY, null, MyMaterialType.METAL, null, MyModelsEnum.p341_b02_open_dock_variation2_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P341_A02_OPEN_DOCK_VARIATION2, new MyPrefabConfiguration(MyModelsEnum.p341_a02_open_dock_variation2, MyModelsEnum.p341_a02_open_dock_variation2_LOD1, BuildTypesEnum.MODULES, CategoryTypesEnum.INDUSTRY, null, MyMaterialType.METAL, null, MyModelsEnum.p341_a02_open_dock_variation2_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P333_A01_HYDROPONIC_BUILDING, new MyPrefabConfiguration(MyModelsEnum.p333_a01_hydroponic_building, MyModelsEnum.p333_a01_hydroponic_building_LOD1, BuildTypesEnum.MODULES, CategoryTypesEnum.LIFE_SUPPORT, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p333_a01_hydroponic_building_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P332_A01_OXYGEN_STORAGE, new MyPrefabConfiguration(MyModelsEnum.p332_a01_oxygen_storage, null, BuildTypesEnum.MODULES, CategoryTypesEnum.LIFE_SUPPORT, null, MyMaterialType.METAL, null, MyModelsEnum.p332_a01_oxygen_storage_COL, explosionType: MyExplosionTypeEnum.SMALL_EXPLOSION));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P331_A01_OXYGEN_GENERATOR, new MyPrefabConfiguration(MyModelsEnum.p331_a01_oxygen_generator, MyModelsEnum.p331_a01_oxygen_generator_LOD1, BuildTypesEnum.MODULES, CategoryTypesEnum.LIFE_SUPPORT, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p331_a01_oxygen_generator_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P324B01_FUEL_STORAGE_B, new MyPrefabConfiguration(MyModelsEnum.p324b01_fuel_storage_b, MyModelsEnum.p324b01_fuel_storage_b_LOD1, BuildTypesEnum.MODULES, CategoryTypesEnum.SUPPLY, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p324b01_fuel_storage_b_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P324A01_FUEL_STORAGE_A, new MyPrefabConfiguration(MyModelsEnum.p324a01_fuel_storage_a, MyModelsEnum.p324a01_fuel_storage_a_LOD1, BuildTypesEnum.MODULES, CategoryTypesEnum.SUPPLY, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p324a01_fuel_storage_a_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P323A01_FUEL_GENERATOR, new MyPrefabConfiguration(MyModelsEnum.p323a01_fuel_generator, MyModelsEnum.p323a01_fuel_generator_LOD1, BuildTypesEnum.MODULES, CategoryTypesEnum.SUPPLY, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p323a01_fuel_generator_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P322A01_BATTERY, new MyPrefabConfiguration(MyModelsEnum.p322a01_battery, MyModelsEnum.p322a01_battery_LOD1, BuildTypesEnum.MODULES, CategoryTypesEnum.SUPPLY, null, MyMaterialType.METAL, explosionType: MyExplosionTypeEnum.EMP_EXPLOSION, collisionModelEnum: MyModelsEnum.p322a01_battery_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P321B01_NUCLEAR_REACTOR, new MyPrefabConfiguration(MyModelsEnum.p321b01_nuclear_reactor, MyModelsEnum.p321b01_nuclear_reactor_LOD1, BuildTypesEnum.MODULES, CategoryTypesEnum.SUPPLY, null, MyMaterialType.METAL, explosionType: MyExplosionTypeEnum.NUCLEAR_EXPLOSION));\n            //AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P321A01_SOLAR_PANEL, new MyPrefabConfiguration(MyModelsEnum.p321a01_solar_panel, MyModelsEnum.p321a01_solar_panel_LOD1, BuildTypesEnum.MODULES, CategoryTypesEnum.SUPPLY, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p321a01_solar_panel_COL));\n            //AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P321_D01_BIG_SOLAR_PANEL, new MyPrefabConfiguration(MyModelsEnum.p321d01_big_solar_panel, MyModelsEnum.p321d01_big_solar_panel_LOD1, BuildTypesEnum.MODULES, CategoryTypesEnum.SUPPLY, null, MyMaterialType.METAL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P312A01_SHORT_TERM_THRUSTER_LATITUDE, new MyPrefabConfiguration(MyModelsEnum.p312a01_short_term_thruster_latitude, MyModelsEnum.p312a01_short_term_thruster_latitude_LOD1, BuildTypesEnum.MODULES, CategoryTypesEnum.FLIGHT, null, MyMaterialType.METAL, explosionType: MyExplosionTypeEnum.PLASMA_EXPLOSION, collisionModelEnum: MyModelsEnum.p312a01_short_term_thruster_latitude_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P312A02_SHORT_TERM_THRUSTER_LATERAL, new MyPrefabConfiguration(MyModelsEnum.p312a02_short_term_thruster_lateral, MyModelsEnum.p312a02_short_term_thruster_lateral_LOD1, BuildTypesEnum.MODULES, CategoryTypesEnum.FLIGHT, null, MyMaterialType.METAL, explosionType: MyExplosionTypeEnum.PLASMA_EXPLOSION, collisionModelEnum: MyModelsEnum.p312a02_short_term_thruster_lateral_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P311A01_LONG_TERM_THRUSTER, new MyPrefabConfiguration(MyModelsEnum.p311a01_long_term_thruster, MyModelsEnum.p311a01_long_term_thruster_LOD1, BuildTypesEnum.MODULES, CategoryTypesEnum.FLIGHT, null, MyMaterialType.METAL, explosionType: MyExplosionTypeEnum.PLASMA_EXPLOSION));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P231A01_ARMOR, new MyPrefabConfiguration(MyModelsEnum.p231a01_armor, MyModelsEnum.p231a01_armor_LOD01, BuildTypesEnum.SHELLS, CategoryTypesEnum.ARMORS, null, MyMaterialType.METAL, previewAngle:MyPreviewPointOfViewEnum.RearLeft, collisionModelEnum: MyModelsEnum.p231a01_armor_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P231A02_ARMOR, new MyPrefabConfiguration(MyModelsEnum.p231a02_armor, MyModelsEnum.p231a02_armor_LOD01, BuildTypesEnum.SHELLS, CategoryTypesEnum.ARMORS, null, MyMaterialType.METAL, previewAngle: MyPreviewPointOfViewEnum.RearLeft, collisionModelEnum: MyModelsEnum.p231a02_armor_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P231A03_ARMOR, new MyPrefabConfiguration(MyModelsEnum.p231a03_armor, MyModelsEnum.p231a03_armor_LOD01, BuildTypesEnum.SHELLS, CategoryTypesEnum.ARMORS, null, MyMaterialType.METAL, previewAngle: MyPreviewPointOfViewEnum.RearLeftLeft, collisionModelEnum: MyModelsEnum.p231a03_armor_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P231A04_ARMOR, new MyPrefabConfiguration(MyModelsEnum.p231a04_armor, MyModelsEnum.p231a04_armor_LOD01, BuildTypesEnum.SHELLS, CategoryTypesEnum.ARMORS, null, MyMaterialType.METAL, previewAngle: MyPreviewPointOfViewEnum.RearLeftLeft, collisionModelEnum: MyModelsEnum.p231a04_armor_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P231A05_ARMOR, new MyPrefabConfiguration(MyModelsEnum.p231a05_armor, MyModelsEnum.p231a05_armor_LOD01, BuildTypesEnum.SHELLS, CategoryTypesEnum.ARMORS, null, MyMaterialType.METAL, previewAngle: MyPreviewPointOfViewEnum.RearLeft, collisionModelEnum: MyModelsEnum.p231a05_armor_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P231A06_ARMOR, new MyPrefabConfiguration(MyModelsEnum.p231a06_armor, MyModelsEnum.p231a06_armor_LOD01, BuildTypesEnum.SHELLS, CategoryTypesEnum.ARMORS, null, MyMaterialType.METAL, previewAngle: MyPreviewPointOfViewEnum.RearLeft, collisionModelEnum: MyModelsEnum.p231a06_armor_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P231A07_ARMOR, new MyPrefabConfiguration(MyModelsEnum.p231a07_armor, MyModelsEnum.p231a07_armor_LOD01, BuildTypesEnum.SHELLS, CategoryTypesEnum.ARMORS, null, MyMaterialType.METAL, previewAngle: MyPreviewPointOfViewEnum.RearLeft, collisionModelEnum: MyModelsEnum.p231a07_armor_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P231A08_ARMOR, new MyPrefabConfiguration(MyModelsEnum.p231a08_armor, MyModelsEnum.p231a08_armor_LOD01, BuildTypesEnum.SHELLS, CategoryTypesEnum.ARMORS, null, MyMaterialType.METAL, previewAngle: MyPreviewPointOfViewEnum.RearLeft, collisionModelEnum: MyModelsEnum.p231a08_armor_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P231A09_ARMOR, new MyPrefabConfiguration(MyModelsEnum.p231a09_armor, MyModelsEnum.p231a09_armor_LOD01, BuildTypesEnum.SHELLS, CategoryTypesEnum.ARMORS, null, MyMaterialType.METAL, previewAngle: MyPreviewPointOfViewEnum.RearLeft, collisionModelEnum: MyModelsEnum.p231a09_armor_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P231A10_ARMOR, new MyPrefabConfiguration(MyModelsEnum.p231a10_armor, MyModelsEnum.p231a10_armor_LOD01, BuildTypesEnum.SHELLS, CategoryTypesEnum.ARMORS, null, MyMaterialType.METAL, previewAngle: MyPreviewPointOfViewEnum.RearLeft, collisionModelEnum: MyModelsEnum.p231a10_armor_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P231A11_ARMOR, new MyPrefabConfiguration(MyModelsEnum.p231a11_armor, MyModelsEnum.p231a11_armor_LOD01, BuildTypesEnum.SHELLS, CategoryTypesEnum.ARMORS, null, MyMaterialType.METAL, previewAngle: MyPreviewPointOfViewEnum.FrontLeft, collisionModelEnum: MyModelsEnum.p231a11_armor_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P231A12_ARMOR, new MyPrefabConfiguration(MyModelsEnum.p231a12_armor, MyModelsEnum.p231a12_armor_LOD01, BuildTypesEnum.SHELLS, CategoryTypesEnum.ARMORS, null, MyMaterialType.METAL, previewAngle: MyPreviewPointOfViewEnum.FrontLeft, collisionModelEnum: MyModelsEnum.p231a12_armor_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P231A13_ARMOR, new MyPrefabConfiguration(MyModelsEnum.p231a13_armor, MyModelsEnum.p231a13_armor_LOD01, BuildTypesEnum.SHELLS, CategoryTypesEnum.ARMORS, null, MyMaterialType.METAL, previewAngle: MyPreviewPointOfViewEnum.FrontLeft, collisionModelEnum: MyModelsEnum.p231a13_armor_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P231A14_ARMOR, new MyPrefabConfiguration(MyModelsEnum.p231a14_armor, MyModelsEnum.p231a14_armor_LOD01, BuildTypesEnum.SHELLS, CategoryTypesEnum.ARMORS, null, MyMaterialType.METAL, previewAngle: MyPreviewPointOfViewEnum.Top, collisionModelEnum: MyModelsEnum.p231a14_armor_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P231A15_ARMOR, new MyPrefabConfiguration(MyModelsEnum.p231a15_armor, MyModelsEnum.p231a15_armor_LOD01, BuildTypesEnum.SHELLS, CategoryTypesEnum.ARMORS, null, MyMaterialType.METAL, previewAngle: MyPreviewPointOfViewEnum.FrontLeft, collisionModelEnum: MyModelsEnum.p231a15_armor_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P231A16_ARMOR, new MyPrefabConfiguration(MyModelsEnum.p231a16_armor, MyModelsEnum.p231a16_armor_LOD01, BuildTypesEnum.SHELLS, CategoryTypesEnum.ARMORS, null, MyMaterialType.METAL, previewAngle: MyPreviewPointOfViewEnum.RearLeft, collisionModelEnum: MyModelsEnum.p231a16_armor_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P231A17_ARMOR, new MyPrefabConfiguration(MyModelsEnum.p231a17_armor, MyModelsEnum.p231a17_armor_LOD01, BuildTypesEnum.SHELLS, CategoryTypesEnum.ARMORS, null, MyMaterialType.METAL, previewAngle: MyPreviewPointOfViewEnum.RearLeft, collisionModelEnum: MyModelsEnum.p231a17_armor_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P231A18_ARMOR, new MyPrefabConfiguration(MyModelsEnum.p231a18_armor, MyModelsEnum.p231a18_armor_LOD01, BuildTypesEnum.SHELLS, CategoryTypesEnum.ARMORS, null, MyMaterialType.METAL, previewAngle: MyPreviewPointOfViewEnum.RearLeft, collisionModelEnum: MyModelsEnum.p231a18_armor_COL));\n\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P221A01_CHAMBER_V1, new MyPrefabConfiguration(MyModelsEnum.p221a01_chamber_v1, MyModelsEnum.p221a01_chamber_v1_LOD1, BuildTypesEnum.SHELLS, CategoryTypesEnum.CHAMBERS, null, MyMaterialType.METAL, null, MyModelsEnum.p221a01_chamber_v1_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P221B01_CHAMBER_V1, new MyPrefabConfiguration(MyModelsEnum.p221b01_chamber_v1, MyModelsEnum.p221b01_chamber_v1_LOD1, BuildTypesEnum.SHELLS, CategoryTypesEnum.CHAMBERS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p221b01_chamber_v1_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P221C01_CHAMBER_V1, new MyPrefabConfiguration(MyModelsEnum.p221c01_chamber_v1, MyModelsEnum.p221c01_chamber_v1_LOD1, BuildTypesEnum.SHELLS, CategoryTypesEnum.CHAMBERS, null, MyMaterialType.METAL, null, MyModelsEnum.p221c01_chamber_v1_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P221D01_CHAMBER_V1, new MyPrefabConfiguration(MyModelsEnum.p221d01_chamber_v1, MyModelsEnum.p221d01_chamber_v1_LOD1, BuildTypesEnum.SHELLS, CategoryTypesEnum.CHAMBERS, null, MyMaterialType.METAL, null, MyModelsEnum.p221d01_chamber_v1_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P221E01_CHAMBER_V1, new MyPrefabConfiguration(MyModelsEnum.p221e01_chamber_v1, MyModelsEnum.p221e01_chamber_v1_LOD1, BuildTypesEnum.SHELLS, CategoryTypesEnum.CHAMBERS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p221e01_chamber_v1_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P221F01_CHAMBER_V1, new MyPrefabConfiguration(MyModelsEnum.p221f01_chamber_v1, MyModelsEnum.p221f01_chamber_v1_LOD1, BuildTypesEnum.SHELLS, CategoryTypesEnum.CHAMBERS, null, MyMaterialType.METAL, null, MyModelsEnum.p221f01_chamber_v1_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P221G01_CHAMBER_V1, new MyPrefabConfiguration(MyModelsEnum.p221g01_chamber_v1, MyModelsEnum.p221g01_chamber_v1_LOD1, BuildTypesEnum.SHELLS, CategoryTypesEnum.CHAMBERS, null, MyMaterialType.METAL, null, MyModelsEnum.p221g01_chamber_v1_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P221H01_CHAMBER_V1, new MyPrefabConfiguration(MyModelsEnum.p221h01_chamber_v1, MyModelsEnum.p221h01_chamber_v1_LOD1, BuildTypesEnum.SHELLS, CategoryTypesEnum.CHAMBERS, null, MyMaterialType.METAL, null, MyModelsEnum.p221h01_chamber_v1_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P221J01_CHAMBER_V1, new MyPrefabConfiguration(MyModelsEnum.p221j01_chamber_v1, MyModelsEnum.p221j01_chamber_v1_LOD1, BuildTypesEnum.SHELLS, CategoryTypesEnum.CHAMBERS, null, MyMaterialType.METAL, null, MyModelsEnum.p221j01_chamber_v1_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P221K01_CHAMBER_V1, new MyPrefabConfiguration(MyModelsEnum.p221k01_chamber_v1, MyModelsEnum.p221k01_chamber_v1_LOD1, BuildTypesEnum.SHELLS, CategoryTypesEnum.CHAMBERS, null, MyMaterialType.METAL, null, null));\n\n\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P211H01_PANEL_535MX130M, new MyPrefabConfiguration(MyModelsEnum.p211h01_panel_535mx130m, null, BuildTypesEnum.SHELLS, CategoryTypesEnum.PANELS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p211h01_panel_535mx130m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P211G01_PANEL_120MX60M, new MyPrefabConfiguration(MyModelsEnum.p211g01_panel_120mx60m, MyModelsEnum.p211g01_panel_120mx60m_LOD1, BuildTypesEnum.SHELLS, CategoryTypesEnum.PANELS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p211g01_panel_120mx60m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P211G02_PANEL_60MX60M, new MyPrefabConfiguration(MyModelsEnum.p211g02_panel_60mx60m, MyModelsEnum.p211g02_panel_60mx60m_LOD1, BuildTypesEnum.SHELLS, CategoryTypesEnum.PANELS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p211g02_panel_60mx60m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P211G03_PANEL_60MX30M, new MyPrefabConfiguration(MyModelsEnum.p211g03_panel_60mx30m, null, BuildTypesEnum.SHELLS, CategoryTypesEnum.PANELS, null, MyMaterialType.METAL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P211F01_PANEL_120MX60M, new MyPrefabConfiguration(MyModelsEnum.p211f01_panel_120mx60m, MyModelsEnum.p211f01_panel_120mx60m_LOD1, BuildTypesEnum.SHELLS, CategoryTypesEnum.PANELS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p211f01_panel_120mx60m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P211F02_PANEL_60MX60M, new MyPrefabConfiguration(MyModelsEnum.p211f02_panel_60mx60m, MyModelsEnum.p211f02_panel_60mx60m_LOD1, BuildTypesEnum.SHELLS, CategoryTypesEnum.PANELS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p211f02_panel_60mx60m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P211F03_PANEL_60MX30M, new MyPrefabConfiguration(MyModelsEnum.p211f03_panel_60mx30m, null, BuildTypesEnum.SHELLS, CategoryTypesEnum.PANELS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p211f03_panel_60mx30m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P211E01_PANEL_120MX60M, new MyPrefabConfiguration(MyModelsEnum.p211e01_panel_120mx60m, MyModelsEnum.p211e01_panel_120mx60m_LOD1, BuildTypesEnum.SHELLS, CategoryTypesEnum.PANELS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p211e01_panel_120mx60m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P211E02_PANEL_60MX60M, new MyPrefabConfiguration(MyModelsEnum.p211e02_panel_60mx60m, MyModelsEnum.p211e02_panel_60mx60m_LOD1, BuildTypesEnum.SHELLS, CategoryTypesEnum.PANELS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p211e02_panel_60mx60m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P211E03_PANEL_60MX30M, new MyPrefabConfiguration(MyModelsEnum.p211e03_panel_60mx30m, MyModelsEnum.p211e03_panel_60mx30m_LOD1, BuildTypesEnum.SHELLS, CategoryTypesEnum.PANELS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p211e03_panel_60mx30m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P211D01_PANEL_120MX60M, new MyPrefabConfiguration(MyModelsEnum.p211d01_panel_120mx60m, MyModelsEnum.p211d01_panel_120mx60m_LOD1, BuildTypesEnum.SHELLS, CategoryTypesEnum.PANELS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p211d01_panel_120mx60m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P211D02_PANEL_60MX60M, new MyPrefabConfiguration(MyModelsEnum.p211d02_panel_60mx60m, MyModelsEnum.p211d02_panel_60mx60m_LOD1, BuildTypesEnum.SHELLS, CategoryTypesEnum.PANELS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p211d02_panel_60mx60m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P211D03_PANEL_60MX30M, new MyPrefabConfiguration(MyModelsEnum.p211d03_panel_60mx30m, MyModelsEnum.p211d03_panel_60mx30m_LOD1, BuildTypesEnum.SHELLS, CategoryTypesEnum.PANELS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p211d03_panel_60mx30m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P211C01_PANEL_120MX60M, new MyPrefabConfiguration(MyModelsEnum.p211c01_panel_120mx60m, MyModelsEnum.p211c01_panel_120mx60m_LOD1, BuildTypesEnum.SHELLS, CategoryTypesEnum.PANELS, null, MyMaterialType.METAL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P211C02_PANEL_60MX60M, new MyPrefabConfiguration(MyModelsEnum.p211c02_panel_60mx60m, MyModelsEnum.p211c02_panel_60mx60m_LOD1, BuildTypesEnum.SHELLS, CategoryTypesEnum.PANELS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p211c02_panel_60mx60m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P211C03_PANEL_60MX30M, new MyPrefabConfiguration(MyModelsEnum.p211c03_panel_60mx30m, MyModelsEnum.p211c03_panel_60mx30m_LOD1, BuildTypesEnum.SHELLS, CategoryTypesEnum.PANELS, null, MyMaterialType.METAL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P211B01_PANEL_120MX60M, new MyPrefabConfiguration(MyModelsEnum.p211b01_panel_120mx60m, MyModelsEnum.p211b01_panel_120mx60m_LOD1, BuildTypesEnum.SHELLS, CategoryTypesEnum.PANELS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p211b01_panel_120mx60m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P211B02_PANEL_60MX60M, new MyPrefabConfiguration(MyModelsEnum.p211b02_panel_60mx60m, MyModelsEnum.p211b02_panel_60mx60m_LOD1, BuildTypesEnum.SHELLS, CategoryTypesEnum.PANELS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p211b02_panel_60mx60m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P211B03_PANEL_60MX30M, new MyPrefabConfiguration(MyModelsEnum.p211b03_panel_60mx30m, MyModelsEnum.p211b03_panel_60mx30m_LOD1, BuildTypesEnum.SHELLS, CategoryTypesEnum.PANELS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p211b03_panel_60mx30m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P211A01_PANEL_120MX60M, new MyPrefabConfiguration(MyModelsEnum.p211a01_panel_120mx60m, MyModelsEnum.p211a01_panel_120mx60m_LOD1, BuildTypesEnum.SHELLS, CategoryTypesEnum.PANELS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p211a01_panel_120mx60m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P211A02_PANEL_60MX60M, new MyPrefabConfiguration(MyModelsEnum.p211a02_panel_60mx60m, MyModelsEnum.p211a02_panel_60mx60m_LOD1, BuildTypesEnum.SHELLS, CategoryTypesEnum.PANELS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p211a02_panel_60mx60m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P211A03_PANEL_60MX30M, new MyPrefabConfiguration(MyModelsEnum.p211a03_panel_60mx30m, MyModelsEnum.p211a03_panel_60mx30m_LOD1, BuildTypesEnum.SHELLS, CategoryTypesEnum.PANELS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p211a03_panel_60mx30m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P142B01_CAGE_EMPTY, new MyPrefabConfiguration(MyModelsEnum.p142b01_cage_empty, null, BuildTypesEnum.BEAMS, CategoryTypesEnum.FRAME, null, MyMaterialType.METAL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P142B02_CAGE_HALFCUT, new MyPrefabConfiguration(MyModelsEnum.p142b02_cage_halfcut, null, BuildTypesEnum.BEAMS, CategoryTypesEnum.FRAME, null, MyMaterialType.METAL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P142B03_CAGE_WITH_CORNERS, new MyPrefabConfiguration(MyModelsEnum.p142b03_cage_with_corners, MyModelsEnum.p142b03_cage_with_corners_LOD1, BuildTypesEnum.BEAMS, CategoryTypesEnum.FRAME, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p142b03_cage_with_corners_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P142B11_CAGE_PILLAR, new MyPrefabConfiguration(MyModelsEnum.p142b11_cage_pillar, null, BuildTypesEnum.BEAMS, CategoryTypesEnum.FRAME, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p142b11_cage_pillar_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P142B12_CAGE_EDGE, new MyPrefabConfiguration(MyModelsEnum.p142b12_cage_edge, null, BuildTypesEnum.BEAMS, CategoryTypesEnum.FRAME, null, MyMaterialType.METAL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P142A01_CAGE_EMPTY, new MyPrefabConfiguration(MyModelsEnum.p142a01_cage_empty, null, BuildTypesEnum.BEAMS, CategoryTypesEnum.FRAME, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p142a01_cage_empty_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P142A02_CAGE_HALFCUT, new MyPrefabConfiguration(MyModelsEnum.p142a02_cage_halfcut, null, BuildTypesEnum.BEAMS, CategoryTypesEnum.FRAME, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p142a02_cage_halfcut_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P142A03_CAGE_WITH_CORNERS, new MyPrefabConfiguration(MyModelsEnum.p142a03_cage_with_corners, null, BuildTypesEnum.BEAMS, CategoryTypesEnum.FRAME, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p142a03_cage_with_corners_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P142A11_CAGE_PILLAR, new MyPrefabConfiguration(MyModelsEnum.p142a11_cage_pillar, MyModelsEnum.p142a11_cage_pillar_LOD1, BuildTypesEnum.BEAMS, CategoryTypesEnum.FRAME, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p142a11_cage_pillar_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P142A12_CAGE_EDGE, new MyPrefabConfiguration(MyModelsEnum.p142a12_cage_edge, null, BuildTypesEnum.BEAMS, CategoryTypesEnum.FRAME, null, MyMaterialType.METAL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P141B01_THICK_FRAME_STRAIGHT_10M, new MyPrefabConfiguration(MyModelsEnum.p141b01_thick_frame_straight_10m, null, BuildTypesEnum.BEAMS, CategoryTypesEnum.FRAME, null, MyMaterialType.METAL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P141B02_THICK_FRAME_STRAIGHT_60M, new MyPrefabConfiguration(MyModelsEnum.p141b02_thick_frame_straight_60m, null, BuildTypesEnum.BEAMS, CategoryTypesEnum.FRAME, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p141b02_thick_frame_straight_60m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P141B11_THICK_FRAME_EDGE, new MyPrefabConfiguration(MyModelsEnum.p141b11_thick_frame_edge, null, BuildTypesEnum.BEAMS, CategoryTypesEnum.FRAME, null, MyMaterialType.METAL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P141B12_THICK_FRAME_CORNER, new MyPrefabConfiguration(MyModelsEnum.p141b12_thick_frame_corner, null, BuildTypesEnum.BEAMS, CategoryTypesEnum.FRAME, null, MyMaterialType.METAL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P141B31_THICK_FRAME_JOINT, new MyPrefabConfiguration(MyModelsEnum.p141b31_thick_frame_joint, null, BuildTypesEnum.BEAMS, CategoryTypesEnum.FRAME, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p141b31_thick_frame_joint_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P141A01_THICK_FRAME_STRAIGHT_10M, new MyPrefabConfiguration(MyModelsEnum.p141a01_thick_frame_straight_10m, null, BuildTypesEnum.BEAMS, CategoryTypesEnum.FRAME, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p141a01_thick_frame_straight_10m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P141A02_THICK_FRAME_STRAIGHT_60M, new MyPrefabConfiguration(MyModelsEnum.p141a02_thick_frame_straight_60m, null, BuildTypesEnum.BEAMS, CategoryTypesEnum.FRAME, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p141a02_thick_frame_straight_60m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P141A11_THICK_FRAME_EDGE, new MyPrefabConfiguration(MyModelsEnum.p141a11_thick_frame_edge, null, BuildTypesEnum.BEAMS, CategoryTypesEnum.FRAME, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p141a11_thick_frame_edge_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P141A12_THICK_FRAME_CORNER, new MyPrefabConfiguration(MyModelsEnum.p141a12_thick_frame_corner, null, BuildTypesEnum.BEAMS, CategoryTypesEnum.FRAME, null, MyMaterialType.METAL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P141A31_THICK_FRAME_JOINT, new MyPrefabConfiguration(MyModelsEnum.p141a31_thick_frame_joint, null, BuildTypesEnum.BEAMS, CategoryTypesEnum.FRAME, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p141a31_thick_frame_joint_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P120J01_J_STRAIGHT_30M, new MyPrefabConfiguration(MyModelsEnum.p130j01_j_straight_30m, null, BuildTypesEnum.BEAMS, CategoryTypesEnum.SMALL, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p130j01_j_straight_30m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P130J02_J_STRAIGHT_10M, new MyPrefabConfiguration(MyModelsEnum.p130j02_j_straight_10m, null, BuildTypesEnum.BEAMS, CategoryTypesEnum.SMALL, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p130j02_j_straight_10m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P120I01_I_STRAIGHT_30M, new MyPrefabConfiguration(MyModelsEnum.p130i01_i_straight_30m, null, BuildTypesEnum.BEAMS, CategoryTypesEnum.SMALL, null, MyMaterialType.METAL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P130I02_I_STRAIGHT_10M, new MyPrefabConfiguration(MyModelsEnum.p130i02_i_straight_10m, null, BuildTypesEnum.BEAMS, CategoryTypesEnum.SMALL, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p130i02_i_straight_10m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P120H01_H_STRAIGHT_30M, new MyPrefabConfiguration(MyModelsEnum.p130h01_h_straight_30m, null, BuildTypesEnum.BEAMS, CategoryTypesEnum.SMALL, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p130h01_h_straight_30m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P130H02_H_STRAIGHT_10M, new MyPrefabConfiguration(MyModelsEnum.p130h02_h_straight_10m, null, BuildTypesEnum.BEAMS, CategoryTypesEnum.SMALL, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p130h02_h_straight_10m_COL));\n            //AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P120G01_G_STRAIGHT_30M, new MyPrefabConfiguration(MyModelsEnum.p130g01_g_straight_30m, null, BuildTypesEnum.BEAMS, CategoryTypesEnum.SMALL, null, MyMaterialType.METAL));\n            //AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P130G02_G_STRAIGHT_10M, new MyPrefabConfiguration(MyModelsEnum.p130g02_g_straight_10m, null, BuildTypesEnum.BEAMS, CategoryTypesEnum.SMALL, null, MyMaterialType.METAL));\n            //AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P120F01_F_STRAIGHT_30M, new MyPrefabConfiguration(MyModelsEnum.p130f01_f_straight_30m, null, BuildTypesEnum.BEAMS, CategoryTypesEnum.SMALL, null, MyMaterialType.METAL));\n            //AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P130F02_F_STRAIGHT_10M, new MyPrefabConfiguration(MyModelsEnum.p130f02_f_straight_10m, null, BuildTypesEnum.BEAMS, CategoryTypesEnum.SMALL, null, MyMaterialType.METAL));\n            //AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P120E01_E_STRAIGHT_30M, new MyPrefabConfiguration(MyModelsEnum.p130e01_e_straight_30m, null, BuildTypesEnum.BEAMS, CategoryTypesEnum.SMALL, null, MyMaterialType.METAL));\n            //AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P130E02_E_STRAIGHT_10M, new MyPrefabConfiguration(MyModelsEnum.p130e02_e_straight_10m, null, BuildTypesEnum.BEAMS, CategoryTypesEnum.SMALL, null, MyMaterialType.METAL));\n            //AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P120D01_D_STRAIGHT_30M, new MyPrefabConfiguration(MyModelsEnum.p130d01_d_straight_30m, null, BuildTypesEnum.BEAMS, CategoryTypesEnum.SMALL, null, MyMaterialType.METAL));\n            //AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P130D02_D_STRAIGHT_10M, new MyPrefabConfiguration(MyModelsEnum.p130d02_d_straight_10m, null, BuildTypesEnum.BEAMS, CategoryTypesEnum.SMALL, null, MyMaterialType.METAL));\n            //AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P120C01_C_STRAIGHT_30M, new MyPrefabConfiguration(MyModelsEnum.p130c01_c_straight_30m, null, BuildTypesEnum.BEAMS, CategoryTypesEnum.SMALL, null, MyMaterialType.METAL));\n            //AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P130C02_C_STRAIGHT_10M, new MyPrefabConfiguration(MyModelsEnum.p130c02_c_straight_10m, null, BuildTypesEnum.BEAMS, CategoryTypesEnum.SMALL, null, MyMaterialType.METAL));\n            //AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P120B01_B_STRAIGHT_30M, new MyPrefabConfiguration(MyModelsEnum.p130b01_b_straight_30m, null, BuildTypesEnum.BEAMS, CategoryTypesEnum.SMALL, null, MyMaterialType.METAL));\n            //AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P130B02_B_STRAIGHT_10M, new MyPrefabConfiguration(MyModelsEnum.p130b02_b_straight_10m, null, BuildTypesEnum.BEAMS, CategoryTypesEnum.SMALL, null, MyMaterialType.METAL));\n            //AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P120A01_A_STRAIGHT_30M, new MyPrefabConfiguration(MyModelsEnum.p130a01_a_straight_30m, null, BuildTypesEnum.BEAMS, CategoryTypesEnum.SMALL, null, MyMaterialType.METAL));\n            //AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P130A02_A_STRAIGHT_10M, new MyPrefabConfiguration(MyModelsEnum.p130a02_a_straight_10m, null, BuildTypesEnum.BEAMS, CategoryTypesEnum.SMALL, null, MyMaterialType.METAL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P120D01_D_STRAIGHT_10M, new MyPrefabConfiguration(MyModelsEnum.p120d01_d_straight_10m, null, BuildTypesEnum.BEAMS, CategoryTypesEnum.MEDIUM, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p120d01_d_straight_10m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P120D02_D_STRAIGHT_40M, new MyPrefabConfiguration(MyModelsEnum.p120d02_d_straight_40m, null, BuildTypesEnum.BEAMS, CategoryTypesEnum.MEDIUM, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p120d02_d_straight_40m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P120C01_C_STRAIGHT_10M, new MyPrefabConfiguration(MyModelsEnum.p120c01_c_straight_10m, null, BuildTypesEnum.BEAMS, CategoryTypesEnum.MEDIUM, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p120c01_c_straight_10m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P120C02_C_STRAIGHT_40M, new MyPrefabConfiguration(MyModelsEnum.p120c02_c_straight_40m, null, BuildTypesEnum.BEAMS, CategoryTypesEnum.MEDIUM, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p120c02_c_straight_40m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P120B01_B_STRAIGHT_10M, new MyPrefabConfiguration(MyModelsEnum.p120b01_b_straight_10m, null, BuildTypesEnum.BEAMS, CategoryTypesEnum.MEDIUM, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p120b01_b_straight_10m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P120B02_B_STRAIGHT_40M, new MyPrefabConfiguration(MyModelsEnum.p120b02_b_straight_40m, null, BuildTypesEnum.BEAMS, CategoryTypesEnum.MEDIUM, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p120b02_b_straight_40m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P120A01_STRONG_LATTICE_STRAIGHT_10M, new MyPrefabConfiguration(MyModelsEnum.p120a01_strong_lattice_straight_10m, null, BuildTypesEnum.BEAMS, CategoryTypesEnum.MEDIUM, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p120a01_strong_lattice_straight_10m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P120A02_STRONG_LATTICE_STRAIGHT_60M, new MyPrefabConfiguration(MyModelsEnum.p120a02_strong_lattice_straight_60m, MyModelsEnum.p120a02_strong_lattice_straight_60m_LOD1, BuildTypesEnum.BEAMS, CategoryTypesEnum.MEDIUM, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p120a02_strong_lattice_straight_60m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P120A03_STRONG_LATTICE_STRAIGHT_120M, new MyPrefabConfiguration(MyModelsEnum.p120a03_strong_lattice_straight_120m, MyModelsEnum.p120a03_strong_lattice_straight_120m_LOD1, BuildTypesEnum.BEAMS, CategoryTypesEnum.MEDIUM, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p120a03_strong_lattice_straight_120m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P120A21_STRONG_LATTICE_JUNCTION_T_STRONG, new MyPrefabConfiguration(MyModelsEnum.p120a21_strong_lattice_junction_t_strong, null, BuildTypesEnum.BEAMS, CategoryTypesEnum.MEDIUM, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p120a21_strong_lattice_junction_t_strong_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P120A22_STRONG_LATTICE_JUNCTION_T_WEAK, new MyPrefabConfiguration(MyModelsEnum.p120a22_strong_lattice_junction_t_weak, MyModelsEnum.p120a22_strong_lattice_junction_t_weak_LOD1, BuildTypesEnum.BEAMS, CategoryTypesEnum.MEDIUM, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p120a22_strong_lattice_junction_t_weak_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P120A23_STRONG_LATTICE_JUNCTION_T_ROTATED, new MyPrefabConfiguration(MyModelsEnum.p120a23_strong_lattice_junction_t_rotated, null, BuildTypesEnum.BEAMS, CategoryTypesEnum.MEDIUM, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p120a23_strong_lattice_junction_t_rotated_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P120A51_STRONG_TO_WEAK_LATTICE_2TO1, new MyPrefabConfiguration(MyModelsEnum.p120a51_strong_to_weak_lattice_2to1, null, BuildTypesEnum.BEAMS, CategoryTypesEnum.MEDIUM, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p120a51_strong_to_weak_lattice_2to1_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P120A52_STRONG_TO_WEAK_LATTICE_1TO2, new MyPrefabConfiguration(MyModelsEnum.p120a52_strong_to_weak_lattice_1to2, null, BuildTypesEnum.BEAMS, CategoryTypesEnum.MEDIUM, null, MyMaterialType.METAL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P120A61_WEAK_LATTICE_JUNCTION_T_ROTATED, new MyPrefabConfiguration(MyModelsEnum.p120a61_weak_lattice_junction_t_rotated, null, BuildTypesEnum.BEAMS, CategoryTypesEnum.MEDIUM, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p120a61_weak_lattice_junction_t_rotated_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P110B01_LATTICE_BEAM_STRAIGHT_10M, new MyPrefabConfiguration(MyModelsEnum.p110b01_lattice_beam_straight_10m, MyModelsEnum.p110b01_lattice_beam_straight_10m_LOD1, BuildTypesEnum.BEAMS, CategoryTypesEnum.LARGE, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p110b01_lattice_beam_straight_10m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P110B02_LATTICE_BEAM_STRAIGHT_30M, new MyPrefabConfiguration(MyModelsEnum.p110b02_lattice_beam_straight_30m, null, BuildTypesEnum.BEAMS, CategoryTypesEnum.LARGE, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p110b02_lattice_beam_straight_30m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P110B03_LATTICE_BEAM_STRAIGHT_60M, new MyPrefabConfiguration(MyModelsEnum.p110b03_lattice_beam_straight_60m, MyModelsEnum.p110b03_lattice_beam_straight_60m_LOD1, BuildTypesEnum.BEAMS, CategoryTypesEnum.LARGE, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p110b03_lattice_beam_straight_60m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P110B04_LATTICE_BEAM_STRAIGHT_60M_WITH_PANELS, new MyPrefabConfiguration(MyModelsEnum.p110b04_lattice_beam_straight_60m_with_panels, MyModelsEnum.p110b04_lattice_beam_straight_60m_with_panels_LOD1, BuildTypesEnum.BEAMS, CategoryTypesEnum.LARGE, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p110b04_lattice_beam_straight_60m_with_panels_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P110B21_LATTICE_BEAM_JUNCTION_T_STRONG, new MyPrefabConfiguration(MyModelsEnum.p110b21_lattice_beam_junction_t_strong, MyModelsEnum.p110b21_lattice_beam_junction_t_strong_LOD1, BuildTypesEnum.BEAMS, CategoryTypesEnum.LARGE, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p110b21_lattice_beam_junction_t_strong_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P110B22_LATTICE_BEAM_JUNCTION_T_WEAK, new MyPrefabConfiguration(MyModelsEnum.p110b22_lattice_beam_junction_t_weak, MyModelsEnum.p110b22_lattice_beam_junction_t_weak_LOD1, BuildTypesEnum.BEAMS, CategoryTypesEnum.LARGE, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p110b22_lattice_beam_junction_t_weak_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P110B31_LATTICE_BEAM_JOINT_HORIZONTAL, new MyPrefabConfiguration(MyModelsEnum.p110b31_lattice_beam_joint_horizontal, null, BuildTypesEnum.BEAMS, CategoryTypesEnum.LARGE, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p110b31_lattice_beam_joint_horizontal_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P110B32_LATTICE_BEAM_JOINT_VERTICAL, new MyPrefabConfiguration(MyModelsEnum.p110b32_lattice_beam_joint_vertical, null, BuildTypesEnum.BEAMS, CategoryTypesEnum.LARGE, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p110b32_lattice_beam_joint_vertical_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P110A01_SOLID_BEAM_STRAIGHT_10M, new MyPrefabConfiguration(MyModelsEnum.p110a01_solid_beam_straight_10m, null, BuildTypesEnum.BEAMS, CategoryTypesEnum.LARGE, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p110a01_solid_beam_straight_10m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P110A02_SOLID_BEAM_STRAIGHT_20M, new MyPrefabConfiguration(MyModelsEnum.p110a02_solid_beam_straight_20m, null, BuildTypesEnum.BEAMS, CategoryTypesEnum.LARGE, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p110a02_solid_beam_straight_20m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P110A03_SOLID_BEAM_STRAIGHT_40M_WITH_HOLE, new MyPrefabConfiguration(MyModelsEnum.p110a03_solid_beam_straight_40m_with_hole, null, BuildTypesEnum.BEAMS, CategoryTypesEnum.LARGE, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p110a03_solid_beam_straight_40m_with_hole_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P110A04_SOLID_BEAM_STRAIGHT_40M_LATTICE, new MyPrefabConfiguration(MyModelsEnum.p110a04_solid_beam_straight_40m_lattice, MyModelsEnum.p110a04_solid_beam_straight_40m_lattice_LOD1, BuildTypesEnum.BEAMS, CategoryTypesEnum.LARGE, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p110a04_solid_beam_straight_40m_lattice_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P110A05_SOLID_BEAM_STRAIGHT_80M, new MyPrefabConfiguration(MyModelsEnum.p110a05_solid_beam_straight_80m, MyModelsEnum.p110a05_solid_beam_straight_80m_LOD1, BuildTypesEnum.BEAMS, CategoryTypesEnum.LARGE, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p110a05_solid_beam_straight_80m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P110A11_SOLID_BEAM_JUNCTION_X_STRONG, new MyPrefabConfiguration(MyModelsEnum.p110a11_solid_beam_junction_x_strong, MyModelsEnum.p110a11_solid_beam_junction_x_strong_LOD1, BuildTypesEnum.BEAMS, CategoryTypesEnum.LARGE, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p110a11_solid_beam_junction_x_strong_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P110A12_SOLID_BEAM_JUNCTION_X_WEAK, new MyPrefabConfiguration(MyModelsEnum.p110a12_solid_beam_junction_x_weak, MyModelsEnum.p110a12_solid_beam_junction_x_weak_LOD1, BuildTypesEnum.BEAMS, CategoryTypesEnum.LARGE, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p110a12_solid_beam_junction_x_weak_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P110A13_SOLID_BEAM_JUNCTION_X_ROTATED, new MyPrefabConfiguration(MyModelsEnum.p110a13_solid_beam_junction_x_rotated, MyModelsEnum.p110a13_solid_beam_junction_x_rotated_LOD1, BuildTypesEnum.BEAMS, CategoryTypesEnum.LARGE, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p110a13_solid_beam_junction_x_rotated_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P110A21_SOLID_BEAM_JUNCTION_T_STRONG, new MyPrefabConfiguration(MyModelsEnum.p110a21_solid_beam_junction_t_strong, null, BuildTypesEnum.BEAMS, CategoryTypesEnum.LARGE, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p110a21_solid_beam_junction_t_strong_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P110A22_SOLID_BEAM_JUNCTION_T_WEAK, new MyPrefabConfiguration(MyModelsEnum.p110a22_solid_beam_junction_t_weak, MyModelsEnum.p110a22_solid_beam_junction_t_weak_LOD1, BuildTypesEnum.BEAMS, CategoryTypesEnum.LARGE, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p110a22_solid_beam_junction_t_weak_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P110A23_SOLID_BEAM_JUNCTION_T_ROTATED, new MyPrefabConfiguration(MyModelsEnum.p110a23_solid_beam_junction_t_rotated, null, BuildTypesEnum.BEAMS, CategoryTypesEnum.LARGE, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p110a23_solid_beam_junction_t_rotated_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P110A31_SOLID_BEAM_JOINT_HORIZONTAL, new MyPrefabConfiguration(MyModelsEnum.p110a31_solid_beam_joint_horizontal, null, BuildTypesEnum.BEAMS, CategoryTypesEnum.LARGE, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p110a31_solid_beam_joint_horizontal_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P110A32_SOLID_BEAM_JOINT_VERTICAL, new MyPrefabConfiguration(MyModelsEnum.p110a32_solid_beam_joint_vertical, null, BuildTypesEnum.BEAMS, CategoryTypesEnum.LARGE, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p110a32_solid_beam_joint_vertical_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P110A33_SOLID_BEAM_JOINT_LONGITUDINAL, new MyPrefabConfiguration(MyModelsEnum.p110a33_solid_beam_joint_longitudinal, null, BuildTypesEnum.BEAMS, CategoryTypesEnum.LARGE, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p110a33_solid_beam_joint_longitudinal_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P110A41_SOLID_BEAM_SUPERJOINT, new MyPrefabConfiguration(MyModelsEnum.p110a41_solid_beam_superjoint, null, BuildTypesEnum.BEAMS, CategoryTypesEnum.LARGE, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p110a41_solid_beam_superjoint_COL));\n            //@ Lights\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabLight, (int)MyMwcObjectBuilder_PrefabLight_TypesEnum.DEFAULT_LIGHT_0, new MyPrefabConfigurationLight(MyModelsEnum.default_light_0, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.LIGHTS, null, MyMaterialType.METAL, MyLightPrefabTypeEnum.POINT_LIGHT, MyModelsEnum.default_light_0_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabLight, (int)MyMwcObjectBuilder_PrefabLight_TypesEnum.P521_A01_LIGHT1, new MyPrefabConfigurationLight(MyModelsEnum.p521_a01_light1, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.LIGHTS, null, MyMaterialType.METAL, MyLightPrefabTypeEnum.POINT_LIGHT, MyModelsEnum.p521_a01_light1_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabLight, (int)MyMwcObjectBuilder_PrefabLight_TypesEnum.P521_A02_LIGHT2, new MyPrefabConfigurationLight(MyModelsEnum.p521_a02_light2, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.LIGHTS, null, MyMaterialType.METAL, MyLightPrefabTypeEnum.POINT_LIGHT, MyModelsEnum.p521_a02_light2_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabLight, (int)MyMwcObjectBuilder_PrefabLight_TypesEnum.P521_A03_LIGHT3, new MyPrefabConfigurationLight(MyModelsEnum.p521_a03_light3, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.LIGHTS, null, MyMaterialType.METAL, MyLightPrefabTypeEnum.POINT_LIGHT, MyModelsEnum.p521_a03_light3_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabLight, (int)MyMwcObjectBuilder_PrefabLight_TypesEnum.P521_A04_LIGHT4, new MyPrefabConfigurationLight(MyModelsEnum.p521_a04_light4, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.LIGHTS, null, MyMaterialType.METAL, MyLightPrefabTypeEnum.POINT_LIGHT, MyModelsEnum.p521_a04_light4_COL));\n            //@ Particles\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabParticles, (int)MyMwcObjectBuilder_PrefabParticles_TypesEnum.DEFAULT_PARTICLE_PREFAB_0, new MyPrefabConfigurationParticles(MyModelsEnum.default_light_0, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.PARTICLES, null, MyMaterialType.METAL, MyParticleEffectsIDEnum.Prefab_LeakingSteamGrey));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabParticles, (int)MyMwcObjectBuilder_PrefabParticles_TypesEnum.P551_A01_PARTICLES, new MyPrefabConfigurationParticles(MyModelsEnum.p551_a01_particles, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.PARTICLES, null, MyMaterialType.METAL, MyParticleEffectsIDEnum.Prefab_LeakingSteamWhite));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabParticles, (int)MyMwcObjectBuilder_PrefabParticles_TypesEnum.P551_B01_PARTICLES, new MyPrefabConfigurationParticles(MyModelsEnum.p551_b01_particles, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.PARTICLES, null, MyMaterialType.METAL, MyParticleEffectsIDEnum.Prefab_LeakingSteamGrey));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabParticles, (int)MyMwcObjectBuilder_PrefabParticles_TypesEnum.P551_C01_PARTICLES, new MyPrefabConfigurationParticles(MyModelsEnum.p551_c01_particles, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.PARTICLES, null, MyMaterialType.METAL, MyParticleEffectsIDEnum.Prefab_LeakingSteamBlack));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabParticles, (int)MyMwcObjectBuilder_PrefabParticles_TypesEnum.P551_D01_PARTICLES, new MyPrefabConfigurationParticles(MyModelsEnum.p551_d01_particles, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.PARTICLES, null, MyMaterialType.METAL, MyParticleEffectsIDEnum.Prefab_DustyArea));\n            //@ Sounds\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabSound, (int)MyMwcObjectBuilder_PrefabSound_TypesEnum.DEFAULT_SOUND_PREFAB_0, new MyPrefabConfigurationSound(MyModelsEnum.default_light_0, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.SOUNDS, null, MyMaterialType.METAL, MySoundCuesEnum.VehShipaEngineHigh3d));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabSound, (int)MyMwcObjectBuilder_PrefabSound_TypesEnum.P561_A01_SOUND, new MyPrefabConfigurationSound(MyModelsEnum.p561_a01_sound, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.SOUNDS, null, MyMaterialType.METAL, MySoundCuesEnum.VehShipaEngineHigh3d));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabSound, (int)MyMwcObjectBuilder_PrefabSound_TypesEnum.P561_B01_SOUND, new MyPrefabConfigurationSound(MyModelsEnum.p561_b01_sound, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.SOUNDS, null, MyMaterialType.METAL, MySoundCuesEnum.VehShipaEngineHigh3d));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabSound, (int)MyMwcObjectBuilder_PrefabSound_TypesEnum.P561_C01_SOUND, new MyPrefabConfigurationSound(MyModelsEnum.p561_c01_sound, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.SOUNDS, null, MyMaterialType.METAL, MySoundCuesEnum.VehShipaEngineHigh3d));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabSound, (int)MyMwcObjectBuilder_PrefabSound_TypesEnum.P561_D01_SOUND, new MyPrefabConfigurationSound(MyModelsEnum.p561_d01_sound, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.SOUNDS, null, MyMaterialType.METAL, MySoundCuesEnum.VehShipaEngineHigh3d));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabSound, (int)MyMwcObjectBuilder_PrefabSound_TypesEnum.MOTHERSHIP_SOUND, new MyPrefabConfigurationSound(MyModelsEnum.p561_a01_sound, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.SOUNDS, null, MyMaterialType.METAL, MySoundCuesEnum.VehLoopLargeShip));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabSound, (int)MyMwcObjectBuilder_PrefabSound_TypesEnum.MADELINE_MOTHERSHIP_SOUND, new MyPrefabConfigurationSound(MyModelsEnum.p561_a01_sound, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.SOUNDS, null, MyMaterialType.METAL, MySoundCuesEnum.VehLoopLargeShipMadelyn));\n            //@ Weapons\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabLargeWeapon, (int)MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A01_LARGESHIP_AUTOCANNON, new MyPrefabConfigurationLargeWeapon(BuildTypesEnum.MODULES, CategoryTypesEnum.WEAPONRY, null, MyMaterialType.METAL, MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A01_LARGESHIP_AUTOCANNON, MyMwcObjectBuilder_Prefab_AppearanceEnum.None));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabLargeWeapon, (int)MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A01_LARGESHIP_MACHINEGUN, new MyPrefabConfigurationLargeWeapon(BuildTypesEnum.MODULES, CategoryTypesEnum.WEAPONRY, null, MyMaterialType.METAL, MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A01_LARGESHIP_CIWS, MyMwcObjectBuilder_Prefab_AppearanceEnum.None));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabLargeWeapon, (int)MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A01_LARGESHIP_CIWS, new MyPrefabConfigurationLargeWeapon(BuildTypesEnum.MODULES, CategoryTypesEnum.WEAPONRY, null, MyMaterialType.METAL, MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A01_LARGESHIP_MACHINEGUN, MyMwcObjectBuilder_Prefab_AppearanceEnum.None));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabLargeWeapon, (int)MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A01_LARGESHIP_MISSILE_BASIC4, new MyPrefabConfigurationLargeWeapon(BuildTypesEnum.MODULES, CategoryTypesEnum.WEAPONRY, null, MyMaterialType.METAL, MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A01_LARGESHIP_MISSILE_BASIC4, MyMwcObjectBuilder_Prefab_AppearanceEnum.None));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabLargeWeapon, (int)MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A01_LARGESHIP_MISSILE_BASIC6, new MyPrefabConfigurationLargeWeapon(BuildTypesEnum.MODULES, CategoryTypesEnum.WEAPONRY, null, MyMaterialType.METAL, MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A01_LARGESHIP_MISSILE_BASIC6, MyMwcObjectBuilder_Prefab_AppearanceEnum.None));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabLargeWeapon, (int)MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A01_LARGESHIP_MISSILE_BASIC9, new MyPrefabConfigurationLargeWeapon(BuildTypesEnum.MODULES, CategoryTypesEnum.WEAPONRY, null, MyMaterialType.METAL, MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A01_LARGESHIP_MISSILE_BASIC9, MyMwcObjectBuilder_Prefab_AppearanceEnum.None));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabLargeWeapon, (int)MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A02_LARGESHIP_MISSILE_GUIDED4, new MyPrefabConfigurationLargeWeapon(BuildTypesEnum.MODULES, CategoryTypesEnum.WEAPONRY, null, MyMaterialType.METAL, MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A02_LARGESHIP_MISSILE_GUIDED4, MyMwcObjectBuilder_Prefab_AppearanceEnum.None));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabLargeWeapon, (int)MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A02_LARGESHIP_MISSILE_GUIDED6, new MyPrefabConfigurationLargeWeapon(BuildTypesEnum.MODULES, CategoryTypesEnum.WEAPONRY, null, MyMaterialType.METAL, MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A02_LARGESHIP_MISSILE_GUIDED6, MyMwcObjectBuilder_Prefab_AppearanceEnum.None));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabLargeWeapon, (int)MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A02_LARGESHIP_MISSILE_GUIDED9, new MyPrefabConfigurationLargeWeapon(BuildTypesEnum.MODULES, CategoryTypesEnum.WEAPONRY, null, MyMaterialType.METAL, MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A02_LARGESHIP_MISSILE_GUIDED9, MyMwcObjectBuilder_Prefab_AppearanceEnum.None));\n            //@ Billboards:\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P511_A01_BILLBOARD, new MyPrefabConfiguration(MyModelsEnum.p511_a01_billboard, MyModelsEnum.p511_a01_billboard_LOD1, BuildTypesEnum.DETAILS, CategoryTypesEnum.BILLBOARDS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p511_a01_billboard_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P511_A02_BILLBOARD, new MyPrefabConfiguration(MyModelsEnum.p511_a02_billboard, MyModelsEnum.p511_a02_billboard_LOD1, BuildTypesEnum.DETAILS, CategoryTypesEnum.BILLBOARDS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p511_a02_billboard_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P511_A03_BILLBOARD, new MyPrefabConfiguration(MyModelsEnum.p511_a03_billboard, MyModelsEnum.p511_a03_billboard_LOD1, BuildTypesEnum.DETAILS, CategoryTypesEnum.BILLBOARDS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p511_a03_billboard_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P511_A04_BILLBOARD, new MyPrefabConfiguration(MyModelsEnum.p511_a04_billboard, MyModelsEnum.p511_a04_billboard_LOD1, BuildTypesEnum.DETAILS, CategoryTypesEnum.BILLBOARDS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p511_a04_billboard_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P511_A05_BILLBOARD, new MyPrefabConfiguration(MyModelsEnum.p511_a05_billboard, MyModelsEnum.p511_a05_billboard_LOD1, BuildTypesEnum.DETAILS, CategoryTypesEnum.BILLBOARDS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p511_a05_billboard_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P511_A06_BILLBOARD, new MyPrefabConfiguration(MyModelsEnum.p511_a06_billboard, MyModelsEnum.p511_a06_billboard_LOD1, BuildTypesEnum.DETAILS, CategoryTypesEnum.BILLBOARDS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p511_a06_billboard_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P511_A07_BILLBOARD, new MyPrefabConfiguration(MyModelsEnum.p511_a07_billboard, MyModelsEnum.p511_a07_billboard_LOD1, BuildTypesEnum.DETAILS, CategoryTypesEnum.BILLBOARDS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p511_a07_billboard_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P511_A08_BILLBOARD, new MyPrefabConfiguration(MyModelsEnum.p511_a08_billboard, MyModelsEnum.p511_a08_billboard_LOD1, BuildTypesEnum.DETAILS, CategoryTypesEnum.BILLBOARDS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p511_a08_billboard_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P511_A09_BILLBOARD, new MyPrefabConfiguration(MyModelsEnum.p511_a09_billboard, MyModelsEnum.p511_a09_billboard_LOD1, BuildTypesEnum.DETAILS, CategoryTypesEnum.BILLBOARDS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p511_a09_billboard_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P511_A10_BILLBOARD, new MyPrefabConfiguration(MyModelsEnum.p511_a10_billboard, MyModelsEnum.p511_a10_billboard_LOD1, BuildTypesEnum.DETAILS, CategoryTypesEnum.BILLBOARDS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p511_a10_billboard_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P511_A11_BILLBOARD, new MyPrefabConfiguration(MyModelsEnum.p511_a11_billboard, MyModelsEnum.p511_a11_billboard_LOD1, BuildTypesEnum.DETAILS, CategoryTypesEnum.BILLBOARDS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p511_a11_billboard_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P511_A12_BILLBOARD, new MyPrefabConfiguration(MyModelsEnum.p511_a12_billboard, MyModelsEnum.p511_a12_billboard_LOD1, BuildTypesEnum.DETAILS, CategoryTypesEnum.BILLBOARDS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p511_a12_billboard_COL));            \n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P511_A14_BILLBOARD, new MyPrefabConfiguration(MyModelsEnum.p511_a14_billboard, MyModelsEnum.p511_a14_billboard_LOD1, BuildTypesEnum.DETAILS, CategoryTypesEnum.BILLBOARDS, null, MyMaterialType.METAL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P511_A15_BILLBOARD, new MyPrefabConfiguration(MyModelsEnum.p511_a15_billboard, MyModelsEnum.p511_a15_billboard_LOD1, BuildTypesEnum.DETAILS, CategoryTypesEnum.BILLBOARDS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p511_a15_billboard_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P511_A16_BILLBOARD, new MyPrefabConfiguration(MyModelsEnum.p511_a16_billboard, MyModelsEnum.p511_a16_billboard_LOD1, BuildTypesEnum.DETAILS, CategoryTypesEnum.BILLBOARDS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p511_a16_billboard_COL));\n\n            //@ Signs:\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_A01_SIGN1, new MyPrefabConfiguration(MyModelsEnum.p531_a01_sign1, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.SIGNS, null, MyMaterialType.METAL, previewAngle: MyPreviewPointOfViewEnum.Top));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_A02_SIGN2, new MyPrefabConfiguration(MyModelsEnum.p531_a02_sign2, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.SIGNS, null, MyMaterialType.METAL, previewAngle: MyPreviewPointOfViewEnum.Top));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_A03_SIGN3, new MyPrefabConfiguration(MyModelsEnum.p531_a03_sign3, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.SIGNS, null, MyMaterialType.METAL, previewAngle: MyPreviewPointOfViewEnum.Top));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_A04_SIGN4, new MyPrefabConfiguration(MyModelsEnum.p531_a04_sign4, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.SIGNS, null, MyMaterialType.METAL, previewAngle: MyPreviewPointOfViewEnum.Top));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_A05_SIGN5, new MyPrefabConfiguration(MyModelsEnum.p531_a05_sign5, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.SIGNS, null, MyMaterialType.METAL, previewAngle: MyPreviewPointOfViewEnum.Top));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_A06_SIGN6, new MyPrefabConfiguration(MyModelsEnum.p531_a06_sign6, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.SIGNS, null, MyMaterialType.METAL, previewAngle: MyPreviewPointOfViewEnum.Top));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_A07_SIGN7, new MyPrefabConfiguration(MyModelsEnum.p531_a07_sign7, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.SIGNS, null, MyMaterialType.METAL, previewAngle: MyPreviewPointOfViewEnum.Top));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_A08_SIGN8, new MyPrefabConfiguration(MyModelsEnum.p531_a08_sign8, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.SIGNS, null, MyMaterialType.METAL, previewAngle: MyPreviewPointOfViewEnum.Top));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_A09_SIGN9, new MyPrefabConfiguration(MyModelsEnum.p531_a09_sign9, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.SIGNS, null, MyMaterialType.METAL, previewAngle: MyPreviewPointOfViewEnum.Top));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_A10_SIGN10, new MyPrefabConfiguration(MyModelsEnum.p531_a10_sign10, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.SIGNS, null, MyMaterialType.METAL, previewAngle: MyPreviewPointOfViewEnum.Top));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_A11_SIGN11, new MyPrefabConfiguration(MyModelsEnum.p531_a11_sign11, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.SIGNS, null, MyMaterialType.METAL, previewAngle: MyPreviewPointOfViewEnum.Top));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_A12_SIGN12, new MyPrefabConfiguration(MyModelsEnum.p531_a12_sign12, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.SIGNS, null, MyMaterialType.METAL, previewAngle: MyPreviewPointOfViewEnum.Top));\n\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_ADMINISTRATIVE_AREA, new MyPrefabConfiguration(MyModelsEnum.p531_c_administrative_area, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.SIGNS, null, MyMaterialType.METAL, previewAngle: MyPreviewPointOfViewEnum.Front));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_ARMORY, new MyPrefabConfiguration(MyModelsEnum.p531_c_armory, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.SIGNS, null, MyMaterialType.METAL, previewAngle: MyPreviewPointOfViewEnum.Front));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_ARROW_L, new MyPrefabConfiguration(MyModelsEnum.p531_c_arrow_L, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.SIGNS, null, MyMaterialType.METAL, previewAngle: MyPreviewPointOfViewEnum.Front));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_ARROW_R, new MyPrefabConfiguration(MyModelsEnum.p531_c_arrow_R, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.SIGNS, null, MyMaterialType.METAL, previewAngle: MyPreviewPointOfViewEnum.Front));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_ARROW_STR, new MyPrefabConfiguration(MyModelsEnum.p531_c_arrow_str, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.SIGNS, null, MyMaterialType.METAL, previewAngle: MyPreviewPointOfViewEnum.Front));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_CARGO_BAY, new MyPrefabConfiguration(MyModelsEnum.p531_c_cargo_bay, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.SIGNS, null, MyMaterialType.METAL, previewAngle: MyPreviewPointOfViewEnum.Front));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_COMMAND_CENTER, new MyPrefabConfiguration(MyModelsEnum.p531_c_command_center, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.SIGNS, null, MyMaterialType.METAL, previewAngle: MyPreviewPointOfViewEnum.Front));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_COMMERCIAL_AREA, new MyPrefabConfiguration(MyModelsEnum.p531_c_commercial_area, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.SIGNS, null, MyMaterialType.METAL, previewAngle: MyPreviewPointOfViewEnum.Front));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_COMMUNICATIONS, new MyPrefabConfiguration(MyModelsEnum.p531_c_communications, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.SIGNS, null, MyMaterialType.METAL, previewAngle: MyPreviewPointOfViewEnum.Front));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_DEFENSES, new MyPrefabConfiguration(MyModelsEnum.p531_c_defenses, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.SIGNS, null, MyMaterialType.METAL, previewAngle: MyPreviewPointOfViewEnum.Front));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_DOCKS, new MyPrefabConfiguration(MyModelsEnum.p531_c_docks, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.SIGNS, null, MyMaterialType.METAL, previewAngle: MyPreviewPointOfViewEnum.Front, collisionModelEnum: MyModelsEnum.p531_c_docks_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_EMERGENCY_EXIT, new MyPrefabConfiguration(MyModelsEnum.p531_c_emergency_exit, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.SIGNS, null, MyMaterialType.METAL, previewAngle: MyPreviewPointOfViewEnum.Front));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_ENGINEERING_AREA, new MyPrefabConfiguration(MyModelsEnum.p531_c_engineering_area, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.SIGNS, null, MyMaterialType.METAL, previewAngle: MyPreviewPointOfViewEnum.Front, collisionModelEnum: MyModelsEnum.p531_c_engineering_area_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_EXIT, new MyPrefabConfiguration(MyModelsEnum.p531_c_exit, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.SIGNS, null, MyMaterialType.METAL, previewAngle: MyPreviewPointOfViewEnum.Front));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_EXPERIMENTAL_LABS, new MyPrefabConfiguration(MyModelsEnum.p531_c_experimental_labs, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.SIGNS, null, MyMaterialType.METAL, previewAngle: MyPreviewPointOfViewEnum.Front));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_FOUNDRY, new MyPrefabConfiguration(MyModelsEnum.p531_c_foundry, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.SIGNS, null, MyMaterialType.METAL, previewAngle: MyPreviewPointOfViewEnum.Front));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_HABITATS, new MyPrefabConfiguration(MyModelsEnum.p531_c_habitats, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.SIGNS, null, MyMaterialType.METAL, previewAngle: MyPreviewPointOfViewEnum.Front, collisionModelEnum: MyModelsEnum.p531_c_habitats_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_HANGARS, new MyPrefabConfiguration(MyModelsEnum.p531_c_hangars, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.SIGNS, null, MyMaterialType.METAL, previewAngle: MyPreviewPointOfViewEnum.Front, collisionModelEnum: MyModelsEnum.p531_c_hangars_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_INDUSTRIAL_AREA, new MyPrefabConfiguration(MyModelsEnum.p531_c_industrial_area, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.SIGNS, null, MyMaterialType.METAL, previewAngle: MyPreviewPointOfViewEnum.Front));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_LANDING_BAY, new MyPrefabConfiguration(MyModelsEnum.p531_c_landing_bay, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.SIGNS, null, MyMaterialType.METAL, previewAngle: MyPreviewPointOfViewEnum.Front));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_MAINTENANCE, new MyPrefabConfiguration(MyModelsEnum.p531_c_maintenance, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.SIGNS, null, MyMaterialType.METAL, previewAngle: MyPreviewPointOfViewEnum.Front, collisionModelEnum: MyModelsEnum.p531_c_maintenance_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_MILITARY_AREA, new MyPrefabConfiguration(MyModelsEnum.p531_c_military_area, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.SIGNS, null, MyMaterialType.METAL, previewAngle: MyPreviewPointOfViewEnum.Front));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_MINES, new MyPrefabConfiguration(MyModelsEnum.p531_c_mines, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.SIGNS, null, MyMaterialType.METAL, previewAngle: MyPreviewPointOfViewEnum.Front));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_ORE_PROCESSING, new MyPrefabConfiguration(MyModelsEnum.p531_c_ore_processing, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.SIGNS, null, MyMaterialType.METAL, previewAngle: MyPreviewPointOfViewEnum.Front));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_OUTER_AREA, new MyPrefabConfiguration(MyModelsEnum.p531_c_outer_area, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.SIGNS, null, MyMaterialType.METAL, previewAngle: MyPreviewPointOfViewEnum.Front));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_PRISON, new MyPrefabConfiguration(MyModelsEnum.p531_c_prison, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.SIGNS, null, MyMaterialType.METAL, previewAngle: MyPreviewPointOfViewEnum.Front));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_PUBLIC_AREA, new MyPrefabConfiguration(MyModelsEnum.p531_c_public_area, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.SIGNS, null, MyMaterialType.METAL, previewAngle: MyPreviewPointOfViewEnum.Front));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_REACTOR, new MyPrefabConfiguration(MyModelsEnum.p531_c_reactor, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.SIGNS, null, MyMaterialType.METAL, previewAngle: MyPreviewPointOfViewEnum.Front, collisionModelEnum: MyModelsEnum.p531_c_reactor_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_RESEARCH, new MyPrefabConfiguration(MyModelsEnum.p531_c_research, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.SIGNS, null, MyMaterialType.METAL, previewAngle: MyPreviewPointOfViewEnum.Front));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_RESTRICTED_AREA, new MyPrefabConfiguration(MyModelsEnum.p531_c_restricted_area, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.SIGNS, null, MyMaterialType.METAL, previewAngle: MyPreviewPointOfViewEnum.Front));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_SECURITY, new MyPrefabConfiguration(MyModelsEnum.p531_c_security, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.SIGNS, null, MyMaterialType.METAL, previewAngle: MyPreviewPointOfViewEnum.Front));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_SIGN, new MyPrefabConfiguration(MyModelsEnum.p531_c_sign, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.SIGNS, null, MyMaterialType.METAL, previewAngle: MyPreviewPointOfViewEnum.Front));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_STORAGE, new MyPrefabConfiguration(MyModelsEnum.p531_c_storage, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.SIGNS, null, MyMaterialType.METAL, previewAngle: MyPreviewPointOfViewEnum.Front, collisionModelEnum: MyModelsEnum.p531_c_storage_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_TECHNICAL_AREA, new MyPrefabConfiguration(MyModelsEnum.p531_c_technical_area, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.SIGNS, null, MyMaterialType.METAL, previewAngle: MyPreviewPointOfViewEnum.Front));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_TRADE_PORT, new MyPrefabConfiguration(MyModelsEnum.p531_c_trade_port, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.SIGNS, null, MyMaterialType.METAL, previewAngle: MyPreviewPointOfViewEnum.Front));\n\n\n            // @ chambers:\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P221_A02_CHAMBER_V2, new MyPrefabConfiguration(MyModelsEnum.p221a02_chamber_v2, MyModelsEnum.p221a02_chamber_v2_LOD1, BuildTypesEnum.SHELLS, CategoryTypesEnum.CHAMBERS, null, MyMaterialType.METAL, null, MyModelsEnum.p221a02_chamber_v2_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P221_B02_CHAMBER_V2, new MyPrefabConfiguration(MyModelsEnum.p221b02_chamber_v2, MyModelsEnum.p221b02_chamber_v2_LOD1, BuildTypesEnum.SHELLS, CategoryTypesEnum.CHAMBERS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p221b02_chamber_v2_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P221_C02_CHAMBER_V2, new MyPrefabConfiguration(MyModelsEnum.p221c02_chamber_v2, MyModelsEnum.p221c02_chamber_v2_LOD1, BuildTypesEnum.SHELLS, CategoryTypesEnum.CHAMBERS, null, MyMaterialType.METAL, null, MyModelsEnum.p221c02_chamber_v2_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P221_D02_CHAMBER_V2, new MyPrefabConfiguration(MyModelsEnum.p221d02_chamber_v2, MyModelsEnum.p221d02_chamber_v2_LOD1, BuildTypesEnum.SHELLS, CategoryTypesEnum.CHAMBERS, null, MyMaterialType.METAL, null, MyModelsEnum.p221d02_chamber_v2_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P221_E02_CHAMBER_V2, new MyPrefabConfiguration(MyModelsEnum.p221e02_chamber_v2, MyModelsEnum.p221e02_chamber_v2_LOD1, BuildTypesEnum.SHELLS, CategoryTypesEnum.CHAMBERS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p221e02_chamber_v2_COL));\n\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P130_A01_STRAIGHT_10M, new MyPrefabConfiguration(MyModelsEnum.p130a01_a_straight_10m, null, BuildTypesEnum.BEAMS, CategoryTypesEnum.SMALL, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p130a01_a_straight_10m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P130_A02_STRAIGHT_30M, new MyPrefabConfiguration(MyModelsEnum.p130a02_a_straight_30m, MyModelsEnum.p130a02_a_straight_30m_LOD1, BuildTypesEnum.BEAMS, CategoryTypesEnum.SMALL, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p130a02_a_straight_30m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P130_B01_STRAIGHT_10M, new MyPrefabConfiguration(MyModelsEnum.p130b01_b_straight_10m, null, BuildTypesEnum.BEAMS, CategoryTypesEnum.SMALL, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p130b01_b_straight_10m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P130_B02_STRAIGHT_30M, new MyPrefabConfiguration(MyModelsEnum.p130b02_b_straight_30m, MyModelsEnum.p130b02_b_straight_30m_LOD1, BuildTypesEnum.BEAMS, CategoryTypesEnum.SMALL, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p130b02_b_straight_30m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P130_C01_STRAIGHT_10M, new MyPrefabConfiguration(MyModelsEnum.p130c01_c_straight_10m, null, BuildTypesEnum.BEAMS, CategoryTypesEnum.SMALL, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p130c01_c_straight_10m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P130_C02_STRAIGHT_30M, new MyPrefabConfiguration(MyModelsEnum.p130c02_c_straight_30m, MyModelsEnum.p130c02_c_straight_30m_LOD1, BuildTypesEnum.BEAMS, CategoryTypesEnum.SMALL, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p130c02_c_straight_30m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P130_D01_STRAIGHT_10M, new MyPrefabConfiguration(MyModelsEnum.p130d01_d_straight_10m, null, BuildTypesEnum.BEAMS, CategoryTypesEnum.SMALL, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p130d01_d_straight_10m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P130_D02_STRAIGHT_30M, new MyPrefabConfiguration(MyModelsEnum.p130d02_d_straight_30m, MyModelsEnum.p130d02_d_straight_30m_LOD1, BuildTypesEnum.BEAMS, CategoryTypesEnum.SMALL, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p130d02_d_straight_30m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P130_E01_STRAIGHT_10M, new MyPrefabConfiguration(MyModelsEnum.p130e01_e_straight_10m, null, BuildTypesEnum.BEAMS, CategoryTypesEnum.SMALL, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p130e01_e_straight_10m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P130_E02_STRAIGHT_30M, new MyPrefabConfiguration(MyModelsEnum.p130e02_e_straight_30m, MyModelsEnum.p130e02_e_straight_30m_LOD1, BuildTypesEnum.BEAMS, CategoryTypesEnum.SMALL, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p130e02_e_straight_30m_COL));\n\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P321_B01_SOLAR_PANEL, new MyPrefabConfiguration(MyModelsEnum.p321b01_solar_panel, MyModelsEnum.p321b01_solar_panel_LOD1, BuildTypesEnum.MODULES, CategoryTypesEnum.SUPPLY, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p321b01_solar_panel_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P321_C01_SOLAR_PANEL, new MyPrefabConfiguration(MyModelsEnum.p321c01_solar_panel, MyModelsEnum.p321c01_solar_panel_LOD1, BuildTypesEnum.MODULES, CategoryTypesEnum.SUPPLY, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p321c01_solar_panel_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P321_D01_BIG_SOLAR_PANEL, new MyPrefabConfiguration(MyModelsEnum.p321d01_big_solar_panel, MyModelsEnum.p321d01_big_solar_panel_LOD1, BuildTypesEnum.MODULES, CategoryTypesEnum.SUPPLY, null, MyMaterialType.METAL));\n\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P571_A01_TRAFFIC_SIGN, new MyPrefabConfiguration(MyModelsEnum.p571_a01_traffic_sign, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.TRAFFIC_SIGNS, null, MyMaterialType.METAL, previewAngle: MyPreviewPointOfViewEnum.Bottom, collisionModelEnum: MyModelsEnum.p571_a01_traffic_sign_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P571_B01_TRAFFIC_SIGN, new MyPrefabConfiguration(MyModelsEnum.p571_b01_traffic_sign, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.TRAFFIC_SIGNS, null, MyMaterialType.METAL, previewAngle: MyPreviewPointOfViewEnum.Bottom));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P571_BOX01_TRAFFIC_SIGN, new MyPrefabConfiguration(MyModelsEnum.p571_box01_traffic_sign, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.TRAFFIC_SIGNS, null, MyMaterialType.METAL, previewAngle: MyPreviewPointOfViewEnum.Bottom, collisionModelEnum: MyModelsEnum.p571_box01_traffic_sign_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P571_BOX02_TRAFFIC_SIGN, new MyPrefabConfiguration(MyModelsEnum.p571_box02_traffic_sign, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.TRAFFIC_SIGNS, null, MyMaterialType.METAL, previewAngle: MyPreviewPointOfViewEnum.Bottom));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P571_C01_TRAFFIC_SIGN, new MyPrefabConfiguration(MyModelsEnum.p571_c01_traffic_sign, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.TRAFFIC_SIGNS, null, MyMaterialType.METAL, previewAngle: MyPreviewPointOfViewEnum.Bottom, collisionModelEnum: MyModelsEnum.p571_c01_traffic_sign_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P571_D01_TRAFFIC_SIGN, new MyPrefabConfiguration(MyModelsEnum.p571_d01_traffic_sign, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.TRAFFIC_SIGNS, null, MyMaterialType.METAL, previewAngle: MyPreviewPointOfViewEnum.Bottom));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P571_E01_TRAFFIC_SIGN, new MyPrefabConfiguration(MyModelsEnum.p571_e01_traffic_sign, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.TRAFFIC_SIGNS, null, MyMaterialType.METAL, previewAngle: MyPreviewPointOfViewEnum.Bottom));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P571_F01_TRAFFIC_SIGN, new MyPrefabConfiguration(MyModelsEnum.p571_f01_traffic_sign, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.TRAFFIC_SIGNS, null, MyMaterialType.METAL, previewAngle: MyPreviewPointOfViewEnum.Bottom, collisionModelEnum: MyModelsEnum.p571_f01_traffic_sign_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P571_G01_TRAFFIC_SIGN, new MyPrefabConfiguration(MyModelsEnum.p571_g01_traffic_sign, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.TRAFFIC_SIGNS, null, MyMaterialType.METAL, previewAngle: MyPreviewPointOfViewEnum.Bottom));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P571_H01_TRAFFIC_SIGN, new MyPrefabConfiguration(MyModelsEnum.p571_h01_traffic_sign, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.TRAFFIC_SIGNS, null, MyMaterialType.METAL, previewAngle: MyPreviewPointOfViewEnum.Bottom));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P571_I01_TRAFFIC_SIGN, new MyPrefabConfiguration(MyModelsEnum.p571_i01_traffic_sign, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.TRAFFIC_SIGNS, null, MyMaterialType.METAL, previewAngle: MyPreviewPointOfViewEnum.Bottom, collisionModelEnum: MyModelsEnum.p571_i01_traffic_sign_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P571_J01_TRAFFIC_SIGN, new MyPrefabConfiguration(MyModelsEnum.p571_j01_traffic_sign, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.TRAFFIC_SIGNS, null, MyMaterialType.METAL, previewAngle: MyPreviewPointOfViewEnum.Bottom, collisionModelEnum: MyModelsEnum.p571_j01_traffic_sign_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P571_K01_TRAFFIC_SIGN, new MyPrefabConfiguration(MyModelsEnum.p571_k01_traffic_sign, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.TRAFFIC_SIGNS, null, MyMaterialType.METAL, previewAngle: MyPreviewPointOfViewEnum.Bottom, collisionModelEnum: MyModelsEnum.p571_k01_traffic_sign_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P571_L01_TRAFFIC_SIGN, new MyPrefabConfiguration(MyModelsEnum.p571_l01_traffic_sign, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.TRAFFIC_SIGNS, null, MyMaterialType.METAL, previewAngle: MyPreviewPointOfViewEnum.Bottom, collisionModelEnum: MyModelsEnum.p571_l01_traffic_sign_COL));\n\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P414_F01_ENTRANCE_60M, new MyPrefabConfiguration(MyModelsEnum.p414_f01_entrance_60m, MyModelsEnum.p414_f01_entrance_60m_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p414_f01_entrance_60m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P414_G01_ENTRANCE_60M, new MyPrefabConfiguration(MyModelsEnum.p414_g01_entrance_60m, MyModelsEnum.p414_g01_entrance_60m_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.TUNNELS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p414_g01_entrance_60m_COL));\n\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P385_A01_TEMPLE_900M, new MyPrefabConfiguration(MyModelsEnum.p385_a01_temple_900m, MyModelsEnum.p385_a01_temple_900m_LOD1, BuildTypesEnum.MODULES, CategoryTypesEnum.MANNED_OBJECTS, null, MyMaterialType.METAL, explosionParticleEffectScale: 1f, collisionModelEnum: MyModelsEnum.p385_a01_temple_900m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P383_A01_CHURCH, new MyPrefabConfiguration(MyModelsEnum.p383_a01_church, MyModelsEnum.p383_a01_church_LOD1, BuildTypesEnum.MODULES, CategoryTypesEnum.MANNED_OBJECTS, null, MyMaterialType.METAL, explosionParticleEffectScale: 1f, collisionModelEnum: MyModelsEnum.p383_a01_church_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P334_A01_FOOD_GROW, new MyPrefabConfiguration(MyModelsEnum.p334_a01_food_grow, MyModelsEnum.p334_a01_food_grow_LOD01, BuildTypesEnum.MODULES, CategoryTypesEnum.LIFE_SUPPORT, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p334_a01_food_grow_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P345_A01_BIO_EXP, new MyPrefabConfiguration(MyModelsEnum.p345_a01_bio_exp, MyModelsEnum.p345_a01_bio_exp_LOD1, BuildTypesEnum.MODULES, CategoryTypesEnum.INDUSTRY, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p345_a01_bio_exp_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P345_A01_BIO_MACH_EXP, new MyPrefabConfiguration(MyModelsEnum.p345_a01_bio_mach_exp, MyModelsEnum.p345_a01_bio_mach_exp_LOD1, BuildTypesEnum.MODULES, CategoryTypesEnum.INDUSTRY, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p345_a01_bio_mach_exp_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P345_A01_RECYCLE, new MyPrefabConfiguration(MyModelsEnum.p345_a01_recycle, MyModelsEnum.p345_a01_recycle_LOD1, BuildTypesEnum.MODULES, CategoryTypesEnum.INDUSTRY, null, MyMaterialType.METAL, explosionParticleEffectScale: 1.5f, collisionModelEnum: MyModelsEnum.p345_a01_recycle_COL));\n\n            //@ large ships\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabLargeShip, (int)MyMwcObjectBuilder_PrefabLargeShip_TypesEnum.LARGESHIP_KAI, new MyPrefabConfigurationLargeShip(MyModelsEnum.Kai, MyModelsEnum.Kai_LOD1, BuildTypesEnum.LARGE_SHIPS, CategoryTypesEnum.LARGE_SHIPS, null, MyMaterialType.METAL, MyMwcObjectBuilder_Prefab_AppearanceEnum.None, explosionType: MyExplosionTypeEnum.LARGE_SHIP_EXPLOSION, particleScale: 0.3f, collisionModelEnum: MyModelsEnum.Kai_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabLargeShip, (int)MyMwcObjectBuilder_PrefabLargeShip_TypesEnum.LARGESHIP_SAYA, new MyPrefabConfigurationLargeShip(MyModelsEnum.MotherShipSaya, MyModelsEnum.MotherShipSaya_LOD1, BuildTypesEnum.LARGE_SHIPS, CategoryTypesEnum.LARGE_SHIPS, null, MyMaterialType.METAL, MyMwcObjectBuilder_Prefab_AppearanceEnum.None, explosionType: MyExplosionTypeEnum.LARGE_SHIP_EXPLOSION, particleScale: 0.3f, collisionModelEnum: MyModelsEnum.MotherShipSaya_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabLargeShip, (int)MyMwcObjectBuilder_PrefabLargeShip_TypesEnum.LARGESHIP_ARDANT, new MyPrefabConfigurationLargeShip(MyModelsEnum.Ardant, MyModelsEnum.Ardant_LOD1, BuildTypesEnum.LARGE_SHIPS, CategoryTypesEnum.LARGE_SHIPS, null, MyMaterialType.METAL, MyMwcObjectBuilder_Prefab_AppearanceEnum.None, explosionType: MyExplosionTypeEnum.LARGE_SHIP_EXPLOSION, particleScale: 0.3f, collisionModelEnum: MyModelsEnum.Ardant_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabLargeShip, (int)MyMwcObjectBuilder_PrefabLargeShip_TypesEnum.FOURTH_REICH_MOTHERSHIP, new MyPrefabConfigurationLargeShip(MyModelsEnum.FourthReichMothership, MyModelsEnum.FourthReichMothership_LOD1, BuildTypesEnum.LARGE_SHIPS, CategoryTypesEnum.LARGE_SHIPS, null, MyMaterialType.METAL, MyMwcObjectBuilder_Prefab_AppearanceEnum.FourthReich, explosionType: MyExplosionTypeEnum.LARGE_SHIP_EXPLOSION, particleScale: 0.3f));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabLargeShip, (int)MyMwcObjectBuilder_PrefabLargeShip_TypesEnum.FOURTH_REICH_MOTHERSHIP_B, new MyPrefabConfigurationLargeShip(MyModelsEnum.FourthReichMothership_B, MyModelsEnum.FourthReichMothership_B_LOD1, BuildTypesEnum.LARGE_SHIPS, CategoryTypesEnum.LARGE_SHIPS, null, MyMaterialType.METAL, MyMwcObjectBuilder_Prefab_AppearanceEnum.FourthReich, explosionType: MyExplosionTypeEnum.LARGE_SHIP_EXPLOSION, particleScale: 0.3f, collisionModelEnum: MyModelsEnum.FourthReichMothership_B_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabLargeShip, (int)MyMwcObjectBuilder_PrefabLargeShip_TypesEnum.RUS_MOTHERSHIP, new MyPrefabConfigurationLargeShip(MyModelsEnum.RusMothership, MyModelsEnum.RusMothership_LOD1, BuildTypesEnum.LARGE_SHIPS, CategoryTypesEnum.LARGE_SHIPS, null, MyMaterialType.METAL, MyMwcObjectBuilder_Prefab_AppearanceEnum.Russian, collisionModelEnum: MyModelsEnum.RusMothership_COL, explosionType: MyExplosionTypeEnum.LARGE_SHIP_EXPLOSION, particleScale: 0.3f));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabLargeShip, (int)MyMwcObjectBuilder_PrefabLargeShip_TypesEnum.RUSSIAN_MOTHERSHIP_HUMMER, new MyPrefabConfigurationLargeShip(MyModelsEnum.Russian_Mothership_Hummer, MyModelsEnum.Russian_Mothership_Hummer_LOD1, BuildTypesEnum.LARGE_SHIPS, CategoryTypesEnum.LARGE_SHIPS, null, MyMaterialType.METAL, MyMwcObjectBuilder_Prefab_AppearanceEnum.Russian, collisionModelEnum: MyModelsEnum.Russian_Mothership_Hummer_COL, explosionType: MyExplosionTypeEnum.LARGE_SHIP_EXPLOSION, particleScale: 0.3f));\n\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabLargeShip, (int)MyMwcObjectBuilder_PrefabLargeShip_TypesEnum.MSHIP_BODY, new MyPrefabConfigurationLargeShip(MyModelsEnum.mship_body, MyModelsEnum.mship_body_LOD1, BuildTypesEnum.LARGE_SHIPS, CategoryTypesEnum.MSHIP, null, MyMaterialType.METAL, MyMwcObjectBuilder_Prefab_AppearanceEnum.Euroamerican));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabLargeShip, (int)MyMwcObjectBuilder_PrefabLargeShip_TypesEnum.MSHIP_ENGINE, new MyPrefabConfigurationLargeShip(MyModelsEnum.mship_engine, MyModelsEnum.mship_engine_LOD1, BuildTypesEnum.LARGE_SHIPS, CategoryTypesEnum.MSHIP, null, MyMaterialType.METAL, MyMwcObjectBuilder_Prefab_AppearanceEnum.Euroamerican));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabLargeShip, (int)MyMwcObjectBuilder_PrefabLargeShip_TypesEnum.MSHIP_SHIELD_BACK_LARGE_LEFT, new MyPrefabConfigurationLargeShip(MyModelsEnum.mship_shield_back_large_left, MyModelsEnum.mship_shield_back_large_left_LOD1, BuildTypesEnum.LARGE_SHIPS, CategoryTypesEnum.MSHIP, null, MyMaterialType.METAL, MyMwcObjectBuilder_Prefab_AppearanceEnum.Euroamerican));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabLargeShip, (int)MyMwcObjectBuilder_PrefabLargeShip_TypesEnum.MSHIP_SHIELD_BACK_LARGE_RIGHT, new MyPrefabConfigurationLargeShip(MyModelsEnum.mship_shield_back_large_right, MyModelsEnum.mship_shield_back_large_right_LOD1, BuildTypesEnum.LARGE_SHIPS, CategoryTypesEnum.MSHIP, null, MyMaterialType.METAL, MyMwcObjectBuilder_Prefab_AppearanceEnum.Euroamerican));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabLargeShip, (int)MyMwcObjectBuilder_PrefabLargeShip_TypesEnum.MSHIP_SHIELD_BACK_SMALL_LEFT, new MyPrefabConfigurationLargeShip(MyModelsEnum.mship_shield_back_small_left, MyModelsEnum.mship_shield_back_small_left_LOD1, BuildTypesEnum.LARGE_SHIPS, CategoryTypesEnum.MSHIP, null, MyMaterialType.METAL, MyMwcObjectBuilder_Prefab_AppearanceEnum.Euroamerican));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabLargeShip, (int)MyMwcObjectBuilder_PrefabLargeShip_TypesEnum.MSHIP_SHIELD_BACK_SMALL_RIGHT, new MyPrefabConfigurationLargeShip(MyModelsEnum.mship_shield_back_small_right, MyModelsEnum.mship_shield_back_small_right_LOD1, BuildTypesEnum.LARGE_SHIPS, CategoryTypesEnum.MSHIP, null, MyMaterialType.METAL, MyMwcObjectBuilder_Prefab_AppearanceEnum.Euroamerican));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabLargeShip, (int)MyMwcObjectBuilder_PrefabLargeShip_TypesEnum.MSHIP_SHIELD_FRONT_LARGE_LEFT, new MyPrefabConfigurationLargeShip(MyModelsEnum.mship_shield_front_large_left, MyModelsEnum.mship_shield_front_large_left_LOD1, BuildTypesEnum.LARGE_SHIPS, CategoryTypesEnum.MSHIP, null, MyMaterialType.METAL, MyMwcObjectBuilder_Prefab_AppearanceEnum.Euroamerican));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabLargeShip, (int)MyMwcObjectBuilder_PrefabLargeShip_TypesEnum.MSHIP_SHIELD_FRONT_LARGE_RIGHT, new MyPrefabConfigurationLargeShip(MyModelsEnum.mship_shield_front_large_right, MyModelsEnum.mship_shield_front_large_right_LOD1, BuildTypesEnum.LARGE_SHIPS, CategoryTypesEnum.MSHIP, null, MyMaterialType.METAL, MyMwcObjectBuilder_Prefab_AppearanceEnum.Euroamerican));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabLargeShip, (int)MyMwcObjectBuilder_PrefabLargeShip_TypesEnum.MSHIP_SHIELD_FRONT_SMALL_LEFT, new MyPrefabConfigurationLargeShip(MyModelsEnum.mship_shield_front_small_left, MyModelsEnum.mship_shield_front_small_left_LOD1, BuildTypesEnum.LARGE_SHIPS, CategoryTypesEnum.MSHIP, null, MyMaterialType.METAL, MyMwcObjectBuilder_Prefab_AppearanceEnum.Euroamerican));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabLargeShip, (int)MyMwcObjectBuilder_PrefabLargeShip_TypesEnum.MSHIP_SHIELD_FRONT_SMALL_RIGHT, new MyPrefabConfigurationLargeShip(MyModelsEnum.mship_shield_front_small_right, MyModelsEnum.mship_shield_front_small_right_LOD1, BuildTypesEnum.LARGE_SHIPS, CategoryTypesEnum.MSHIP, null, MyMaterialType.METAL, MyMwcObjectBuilder_Prefab_AppearanceEnum.Euroamerican));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabLargeShip, (int)MyMwcObjectBuilder_PrefabLargeShip_TypesEnum.MSHIP_SHIELD_FRONT_SMALL02_LEFT, new MyPrefabConfigurationLargeShip(MyModelsEnum.mship_shield_front_small02_left, MyModelsEnum.mship_shield_front_small02_left_LOD1, BuildTypesEnum.LARGE_SHIPS, CategoryTypesEnum.MSHIP, null, MyMaterialType.METAL, MyMwcObjectBuilder_Prefab_AppearanceEnum.Euroamerican));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabLargeShip, (int)MyMwcObjectBuilder_PrefabLargeShip_TypesEnum.MSHIP_SHIELD_FRONT_SMALL02_RIGHT, new MyPrefabConfigurationLargeShip(MyModelsEnum.mship_shield_front_small02_right, MyModelsEnum.mship_shield_front_small02_right_LOD1, BuildTypesEnum.LARGE_SHIPS, CategoryTypesEnum.MSHIP, null, MyMaterialType.METAL, MyMwcObjectBuilder_Prefab_AppearanceEnum.Euroamerican));\n\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.SimpleObject, new MyPrefabConfiguration(MyModelsEnum.SimpleObject, null, BuildTypesEnum.CUSTOM, CategoryTypesEnum.OTHER, null, MyMaterialType.METAL, MyMwcObjectBuilder_Prefab_AppearanceEnum.None));\n            //AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.AsteroidPrefabTest, new MyPrefabConfiguration(MyModelsEnum.AsteroidPrefabTest, null, BuildTypesEnum.CUSTOM, CategoryTypesEnum.OTHER, null, MyMaterialType.METAL, MyMwcObjectBuilder_Prefab_AppearanceEnum.None));\n\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P541_ESCAPE_POD, new MyPrefabConfiguration(MyModelsEnum.p541_escape_pod, MyModelsEnum.p541_escape_pod_LOD1, BuildTypesEnum.DETAILS, CategoryTypesEnum.OTHER, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p541_escape_pod_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P541_ESCAPE_POD_BASE, new MyPrefabConfiguration(MyModelsEnum.p541_escape_pod_base, MyModelsEnum.p541_escape_pod_base_LOD1, BuildTypesEnum.DETAILS, CategoryTypesEnum.OTHER, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p541_escape_pod_base_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P541_VENTILATOR_BODY, new MyPrefabConfiguration(MyModelsEnum.p541_ventilator_body_standalone, MyModelsEnum.p541_ventilator_body_standalone_LOD1, BuildTypesEnum.DETAILS, CategoryTypesEnum.OTHER, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p541_ventilator_body_standalone_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P541_VENTILATOR_PROPELLER, new MyPrefabConfiguration(MyModelsEnum.p541_ventilator_propeller_standalone, MyModelsEnum.p541_ventilator_propeller_standalone_LOD1, BuildTypesEnum.DETAILS, CategoryTypesEnum.OTHER, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p541_ventilator_propeller_standalone_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P541_VENTILATOR, new MyPrefabConfiguration(MyModelsEnum.p541_ventilator_body, MyModelsEnum.p541_ventilator_body_LOD1, BuildTypesEnum.DETAILS, CategoryTypesEnum.OTHER, null, MyMaterialType.METAL, loopRotatingCue: MySoundCuesEnum.Amb3D_FanMediumNormal, loopRotatingDamagedCue: MySoundCuesEnum.Amb3D_FanMediumDamaged, collisionModelEnum: MyModelsEnum.p541_ventilator_body_COL));\n\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P349_A_TOWER, new MyPrefabConfiguration(MyModelsEnum.p349_a_tower, MyModelsEnum.p349_a_tower_LOD1, BuildTypesEnum.MODULES, CategoryTypesEnum.INDUSTRY, null, MyMaterialType.METAL, null, MyModelsEnum.p349_a_tower_COL, explosionParticleEffectScale: 1));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P349_B_TOWER, new MyPrefabConfiguration(MyModelsEnum.p349_b_tower, MyModelsEnum.p349_b_tower_LOD1, BuildTypesEnum.MODULES, CategoryTypesEnum.INDUSTRY, null, MyMaterialType.METAL, null, MyModelsEnum.p349_b_tower_COL, explosionParticleEffectScale: 1));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P349_C_TOWER, new MyPrefabConfiguration(MyModelsEnum.p349_c_tower, MyModelsEnum.p349_c_tower_LOD1, BuildTypesEnum.MODULES, CategoryTypesEnum.INDUSTRY, null, MyMaterialType.METAL, null, MyModelsEnum.p349_c_tower_COL, explosionParticleEffectScale: 1));\n\n            //AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabHangar, (int)MyMwcObjectBuilder_PrefabHangar_TypesEnum.P361_A02_HANGAR_PANEL, new MyPrefabConfigurationHangar(MyModelsEnum.p361_a02_hangar_panel, null, BuildTypesEnum.MODULES, CategoryTypesEnum.HANGARS, null, MyMaterialType.METAL));\n\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_B_FACTION, new MyPrefabConfiguration(MyModelsEnum.p531_b_faction, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.SIGNS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p531_b_faction_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_B_FACTION_HOLO, new MyPrefabConfiguration(MyModelsEnum.p531_b_faction_holo, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.SIGNS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p531_b_faction_holo_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.ARMOR_HULL, new MyPrefabConfiguration(MyModelsEnum.armor_hull, MyModelsEnum.armor_hull_LOD1, BuildTypesEnum.SHELLS, CategoryTypesEnum.ARMORS, null, MyMaterialType.METAL, previewAngle: MyPreviewPointOfViewEnum.RearLeft, collisionModelEnum: MyModelsEnum.armor_hull_COL));\n\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabFoundationFactory, (int)MyMwcObjectBuilder_PrefabFoundationFactory_TypesEnum.DEFAULT, new MyPrefabConfigurationFoundationFactory(MyModelsEnum.FoundationFactory, null, BuildTypesEnum.CUSTOM, CategoryTypesEnum.FOUNDATION_FACTORY, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.FoundationFactory_COL));\n\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P212A01_PANEL_LARGE, new MyPrefabConfiguration(MyModelsEnum.p212a01_panel_large, MyModelsEnum.p212a01_panel_large_LOD1, BuildTypesEnum.SHELLS, CategoryTypesEnum.PANELS, null, MyMaterialType.METAL, null, MyModelsEnum.p212a01_panel_large_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P212A01_PANEL_SMALL, new MyPrefabConfiguration(MyModelsEnum.p212a01_panel_small, null, BuildTypesEnum.SHELLS, CategoryTypesEnum.PANELS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p212a01_panel_small_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P212A01_PANEL_MEDIUM, new MyPrefabConfiguration(MyModelsEnum.p212a01_panel_medium, MyModelsEnum.p212a01_panel_medium_LOD1, BuildTypesEnum.SHELLS, CategoryTypesEnum.PANELS, null, MyMaterialType.METAL, null, MyModelsEnum.p212a01_panel_medium_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P212B02_PANEL_MEDIUM, new MyPrefabConfiguration(MyModelsEnum.p212b02_panel_medium, MyModelsEnum.p212b02_panel_medium_LOD1, BuildTypesEnum.SHELLS, CategoryTypesEnum.PANELS, null, MyMaterialType.METAL, null, MyModelsEnum.p212b02_panel_medium_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P212B02_PANEL_SMALL, new MyPrefabConfiguration(MyModelsEnum.p212b02_panel_small, null, BuildTypesEnum.SHELLS, CategoryTypesEnum.PANELS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p212b02_panel_small_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P212C03_PANEL_MEDIUM, new MyPrefabConfiguration(MyModelsEnum.p212c03_panel_medium, MyModelsEnum.p212c03_panel_medium_LOD1, BuildTypesEnum.SHELLS, CategoryTypesEnum.PANELS, null, MyMaterialType.METAL, null, MyModelsEnum.p212c03_panel_medium_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P212C03_PANEL_SMALL, new MyPrefabConfiguration(MyModelsEnum.p212c03_panel_small, null, BuildTypesEnum.SHELLS, CategoryTypesEnum.PANELS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p212c03_panel_small_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P212D04_PANEL_MEDIUM, new MyPrefabConfiguration(MyModelsEnum.p212d04_panel_medium, null, BuildTypesEnum.SHELLS, CategoryTypesEnum.PANELS, null, MyMaterialType.METAL, null, MyModelsEnum.p212d04_panel_medium_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P212D04_PANEL_SMALL, new MyPrefabConfiguration(MyModelsEnum.p212d04_panel_small, null, BuildTypesEnum.SHELLS, CategoryTypesEnum.PANELS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p212d04_panel_small_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P212E05_PANEL_MEDIUM, new MyPrefabConfiguration(MyModelsEnum.p212e05_panel_medium, null, BuildTypesEnum.SHELLS, CategoryTypesEnum.PANELS, null, MyMaterialType.METAL, null, MyModelsEnum.p212e05_panel_medium_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P212E05_PANEL_SMALL, new MyPrefabConfiguration(MyModelsEnum.p212e05_panel_small, null, BuildTypesEnum.SHELLS, CategoryTypesEnum.PANELS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p212e05_panel_small_COL));\n\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabSecurityControlHUB, (int)MyMwcObjectBuilder_PrefabSecurityControlHUB_TypesEnum.DEFAULT, new MyPrefabConfigurationSecurityControlHUB(MyModelsEnum.p541_security_hub, MyModelsEnum.p541_security_hub_LOD1, BuildTypesEnum.CUSTOM, CategoryTypesEnum.SECURITY_CONTROL_HUB, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p541_security_hub_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabSecurityControlHUB, (int)MyMwcObjectBuilder_PrefabSecurityControlHUB_TypesEnum.P541_SCREEN_A, new MyPrefabConfigurationSecurityControlHUB(MyModelsEnum.p541_screen_A, MyModelsEnum.p541_screen_A_LOD1, BuildTypesEnum.CUSTOM, CategoryTypesEnum.SECURITY_CONTROL_HUB, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p541_screen_A_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabSecurityControlHUB, (int)MyMwcObjectBuilder_PrefabSecurityControlHUB_TypesEnum.P541_SCREEN_B, new MyPrefabConfigurationSecurityControlHUB(MyModelsEnum.p541_screen_B, MyModelsEnum.p541_screen_B_LOD1, BuildTypesEnum.CUSTOM, CategoryTypesEnum.SECURITY_CONTROL_HUB, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p541_screen_B_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabSecurityControlHUB, (int)MyMwcObjectBuilder_PrefabSecurityControlHUB_TypesEnum.P541_TERMINAL_A, new MyPrefabConfigurationSecurityControlHUB(MyModelsEnum.p541_terminal_A, MyModelsEnum.p541_terminal_A_LOD1, BuildTypesEnum.CUSTOM, CategoryTypesEnum.SECURITY_CONTROL_HUB, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p541_terminal_A_COL));\n\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabBankNode, (int)MyMwcObjectBuilder_PrefabBankNode_TypesEnum.DEFAULT, new MyPrefabConfigurationBankNode(MyModelsEnum.Bank_node, null, BuildTypesEnum.CUSTOM, CategoryTypesEnum.BANK_NODE, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.Bank_node_COL));\n            //AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabBankNode, (int)MyMwcObjectBuilder_PrefabBankNode_TypesEnum.DEFAULT, new MyPrefabConfigurationBankNode(MyModelsEnum.Bank_node, null, BuildTypesEnum.CUSTOM, CategoryTypesEnum.BANK_NODE, null, MyMaterialType.METAL));\n\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabGenerator, (int)MyMwcObjectBuilder_PrefabGenerator_TypesEnum.P321C01_INERTIA_GENERATOR, new MyPrefabConfigurationGenerator(MyModelsEnum.p321c01_inertia_generator, null, BuildTypesEnum.CUSTOM, CategoryTypesEnum.GENERATOR, null, MyMaterialType.METAL, 1500f, MyPrefabConfiguration.DEFAULT_ROTATING_VELOCITY * 0.8f, modelCol: MyModelsEnum.p321c01_inertia_generator_COL, explosionParticleEffectScale: 2.1f));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabGenerator, (int)MyMwcObjectBuilder_PrefabGenerator_TypesEnum.P321C03_CENTRIFUGE, new MyPrefabConfigurationGenerator(MyModelsEnum.p321c03_centrifuge, MyModelsEnum.p321c03_centrifuge_LOD1, BuildTypesEnum.CUSTOM, CategoryTypesEnum.GENERATOR, null, MyMaterialType.METAL, 1500f, MyPrefabConfiguration.DEFAULT_ROTATING_VELOCITY * 0.5f, modelCol: MyModelsEnum.p321c03_centrifuge_COL, explosionParticleEffectScale: 1.7f));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabGenerator, (int)MyMwcObjectBuilder_PrefabGenerator_TypesEnum.P321C04_BOX_GENERATOR, new MyPrefabConfigurationGenerator(MyModelsEnum.p321c04_box_generator, MyModelsEnum.p321c04_box_generator_LOD1, BuildTypesEnum.CUSTOM, CategoryTypesEnum.GENERATOR, null, MyMaterialType.METAL, 1500f, MyPrefabConfiguration.DEFAULT_ROTATING_VELOCITY * 0.8f, modelCol: MyModelsEnum.p321c04_box_generator_COL, explosionParticleEffectScale: 2.5f));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabGenerator, (int)MyMwcObjectBuilder_PrefabGenerator_TypesEnum.P321C05_CENTRIFUGE_BIG, new MyPrefabConfigurationGenerator(MyModelsEnum.p321c05_centrifuge_big, MyModelsEnum.p321c05_centrifuge_big_LOD1, BuildTypesEnum.CUSTOM, CategoryTypesEnum.GENERATOR, null, MyMaterialType.METAL, 1500f, MyPrefabConfiguration.DEFAULT_ROTATING_VELOCITY * 0.5f, modelCol: MyModelsEnum.p321c05_centrifuge_big_COL, explosionParticleEffectScale: 1.7f));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabGenerator, (int)MyMwcObjectBuilder_PrefabGenerator_TypesEnum.P321C02_GENERATOR_WALL_BIG, new MyPrefabConfigurationGenerator(MyModelsEnum.p321c02_generator_wall_big, MyModelsEnum.p321c02_generator_wall_big_LOD1, BuildTypesEnum.CUSTOM, CategoryTypesEnum.GENERATOR, null, MyMaterialType.METAL, 1500f, MyPrefabConfiguration.DEFAULT_ROTATING_VELOCITY * 0.8f, modelCol: MyModelsEnum.p321c02_generator_wall_big_COL, explosionParticleEffectScale: 1.7f));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabGenerator, (int)MyMwcObjectBuilder_PrefabGenerator_TypesEnum.P321C06_INERTIA_GENERATOR_B, new MyPrefabConfigurationGenerator(MyModelsEnum.p321c06_inertia_generator_B, MyModelsEnum.p321c06_inertia_generator_B_LOD1, BuildTypesEnum.CUSTOM, CategoryTypesEnum.GENERATOR, null, MyMaterialType.METAL, 1500f, MyPrefabConfiguration.DEFAULT_ROTATING_VELOCITY * 0.8f, modelCol: MyModelsEnum.p321c06_inertia_generator_B_COL, explosionParticleEffectScale: 1.7f));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabGenerator, (int)MyMwcObjectBuilder_PrefabGenerator_TypesEnum.P321C07_GENERATOR, new MyPrefabConfigurationGenerator(MyModelsEnum.p321c07_generator, MyModelsEnum.p321c07_generator_LOD1, BuildTypesEnum.CUSTOM, CategoryTypesEnum.GENERATOR, null, MyMaterialType.METAL, 1500f, MyPrefabConfiguration.DEFAULT_ROTATING_VELOCITY * 0.8f, MyModelsEnum.p321c07_generator_COL));\n\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P341_C01_CLOSED_DOCK_V1, new MyPrefabConfiguration(MyModelsEnum.p341_c01_closed_dock_v1, MyModelsEnum.p341_c01_closed_dock_v1_LOD1, BuildTypesEnum.MODULES, CategoryTypesEnum.INDUSTRY, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p341_c01_closed_dock_v1_COL));\n\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P212B02_PANEL_LARGE, new MyPrefabConfiguration(MyModelsEnum.p212b02_panel_large, MyModelsEnum.p212b02_panel_large_LOD1, BuildTypesEnum.SHELLS, CategoryTypesEnum.PANELS, null, MyMaterialType.METAL, null, MyModelsEnum.p212b02_panel_large_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P212C03_PANEL_LARGE, new MyPrefabConfiguration(MyModelsEnum.p212c03_panel_large, MyModelsEnum.p212c03_panel_large_LOD1, BuildTypesEnum.SHELLS, CategoryTypesEnum.PANELS, null, MyMaterialType.METAL, null, MyModelsEnum.p212c03_panel_large_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P212D04_PANEL_LARGE, new MyPrefabConfiguration(MyModelsEnum.p212d04_panel_large, MyModelsEnum.p212d04_panel_large_LOD1, BuildTypesEnum.SHELLS, CategoryTypesEnum.PANELS, null, MyMaterialType.METAL, null, MyModelsEnum.p212d04_panel_large_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P212E05_PANEL_LARGE, new MyPrefabConfiguration(MyModelsEnum.p212e05_panel_large, MyModelsEnum.p212e05_panel_large_LOD1, BuildTypesEnum.SHELLS, CategoryTypesEnum.PANELS, null, MyMaterialType.METAL, null, MyModelsEnum.p212e05_panel_large_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P212F01_PANEL_LARGE, new MyPrefabConfiguration(MyModelsEnum.p212f01_panel_large, null, BuildTypesEnum.SHELLS, CategoryTypesEnum.PANELS, null, MyMaterialType.METAL, null, MyModelsEnum.p212f01_panel_large_COL));\n\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P381_D03_HOSPITAL, new MyPrefabConfiguration(MyModelsEnum.p381_d03_hospital, MyModelsEnum.p381_d03_hospital_LOD1, BuildTypesEnum.MODULES, CategoryTypesEnum.MANNED_OBJECTS, null, MyMaterialType.METAL, explosionParticleEffectScale: 2.5f));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P381_D05_FOOD_GROW, new MyPrefabConfiguration(MyModelsEnum.p381_d05_food_grow, MyModelsEnum.p381_d05_food_grow_LOD1, BuildTypesEnum.MODULES, CategoryTypesEnum.LIFE_SUPPORT, null, MyMaterialType.METAL));            \n\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.CABLE_CORNER_25M, new MyPrefabConfiguration(MyModelsEnum.Cable_corner_25m, null, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.CABLES, SubCategoryTypesEnum.WIRES, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.Cable_corner_25m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.CABLE_S_45M, new MyPrefabConfiguration(MyModelsEnum.Cable_S_45m, null, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.CABLES, SubCategoryTypesEnum.WIRES, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.Cable_S_45m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.CABLE_STRAIGHT_180, new MyPrefabConfiguration(MyModelsEnum.Cable_straight_180, null, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.CABLES, SubCategoryTypesEnum.WIRES, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.Cable_straight_180_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.CABLE_STRAIGHT_45, new MyPrefabConfiguration(MyModelsEnum.Cable_straight_45, null, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.CABLES, SubCategoryTypesEnum.WIRES, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.Cable_straight_45_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.CABLE_STRAIGHT_90, new MyPrefabConfiguration(MyModelsEnum.Cable_straight_90, null, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.CABLES, SubCategoryTypesEnum.WIRES, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.Cable_straight_90_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.CONNECTION_BOX, new MyPrefabConfiguration(MyModelsEnum.Connection_box, null, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.CABLES, SubCategoryTypesEnum.CONNECTION_BOXES, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.Connection_box_COL));\n\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P361_B01_LONG_DISTANCE_ANTENNA_BIG, new MyPrefabConfiguration(MyModelsEnum.p361_b01_long_distance_antenna_big, MyModelsEnum.p361_b01_long_distance_antenna_big_LOD1, BuildTypesEnum.MODULES, CategoryTypesEnum.COMMUNICATIONS, SubCategoryTypesEnum.LONG_DISTANCE_ANTENNA, MyMaterialType.METAL, rotatingVelocity: MyPrefabConfiguration.DEFAULT_ROTATING_VELOCITY * 0.3f, collisionModelEnum: MyModelsEnum.p361_b01_long_distance_antenna_big_COL, explosionParticleEffectScale: 2.2f));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.FOURTH_REICH_WRECK, new MyPrefabConfiguration(MyModelsEnum.fourth_reich_wreck, MyModelsEnum.fourth_reich_wreck_LOD1, BuildTypesEnum.CUSTOM, CategoryTypesEnum.FLIGHT, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.fourth_reich_wreck_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P344_A03_CONTAINER, new MyPrefabConfiguration(MyModelsEnum.p344_a03_container, MyModelsEnum.p344_a03_container_LOD1, BuildTypesEnum.MODULES, CategoryTypesEnum.INDUSTRY, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p344_a03_container_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P231B01_ARMOR, new MyPrefabConfiguration(MyModelsEnum.p231b01_armor, MyModelsEnum.p231b01_armor_LOD1, BuildTypesEnum.SHELLS, CategoryTypesEnum.ARMORS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p231b01_armor_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P231B01_ARMOR_CORNER, new MyPrefabConfiguration(MyModelsEnum.p231b01_armor_corner, MyModelsEnum.p231b01_armor_corner_LOD1, BuildTypesEnum.SHELLS, CategoryTypesEnum.ARMORS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p231b01_armor_corner_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P231B01_ARMOR_EDGE, new MyPrefabConfiguration(MyModelsEnum.p231b01_armor_edge, MyModelsEnum.p231b01_armor_edge_LOD1, BuildTypesEnum.SHELLS, CategoryTypesEnum.ARMORS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p231b01_armor_edge_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P231B01_ARMOR_HOLE, new MyPrefabConfiguration(MyModelsEnum.p231b01_armor_hole, MyModelsEnum.p231b01_armor_hole_LOD1, BuildTypesEnum.SHELLS, CategoryTypesEnum.ARMORS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p231b01_armor_hole_COL));\n\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P150A03_SHELF_1, new MyPrefabConfiguration(MyModelsEnum.p150a03_shelf_1, MyModelsEnum.p150a03_shelf_1_LOD1, BuildTypesEnum.BEAMS, CategoryTypesEnum.SHELVES, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p150a03_shelf_1_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P150A02_SHELF_1X2, new MyPrefabConfiguration(MyModelsEnum.p150a02_shelf_1X2, MyModelsEnum.p150a02_shelf_1X2_LOD1, BuildTypesEnum.BEAMS, CategoryTypesEnum.SHELVES, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p150a02_shelf_1X2_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P150A01_SHELF_1X3, new MyPrefabConfiguration(MyModelsEnum.p150a01_shelf_1X3, MyModelsEnum.p150a01_shelf_1X3_LOD1, BuildTypesEnum.BEAMS, CategoryTypesEnum.SHELVES, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p150a01_shelf_1X3_COL));\n\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P611_ASTEROID_PART_A, new MyPrefabConfiguration(MyModelsEnum.p611_asteroid_part_A, MyModelsEnum.p611_asteroid_part_A_LOD1, BuildTypesEnum.CUSTOM, CategoryTypesEnum.OTHER, null, MyMaterialType.METAL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P611_ASTEROID_PART_B, new MyPrefabConfiguration(MyModelsEnum.p611_asteroid_part_B, MyModelsEnum.p611_asteroid_part_B_LOD1, BuildTypesEnum.CUSTOM, CategoryTypesEnum.OTHER, null, MyMaterialType.METAL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P363_A01_BIG_ANTENNA_300M, new MyPrefabConfiguration(MyModelsEnum.p363_a01_big_antenna_300m, MyModelsEnum.p363_a01_big_antenna_300m_LOD1, BuildTypesEnum.MODULES, CategoryTypesEnum.COMMUNICATIONS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p363_a01_big_antenna_300m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P130D02_D_STRAIGHT_300M, new MyPrefabConfiguration(MyModelsEnum.p130d02_d_straight_300m, MyModelsEnum.p130d02_d_straight_300m_LOD1, BuildTypesEnum.BEAMS, CategoryTypesEnum.SMALL, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p130d02_d_straight_300m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P130J01_J_STRAIGHT_300M, new MyPrefabConfiguration(MyModelsEnum.p130j01_j_straight_300m, MyModelsEnum.p130j01_j_straight_300m_LOD1, BuildTypesEnum.BEAMS, CategoryTypesEnum.SMALL, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p130j01_j_straight_300m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P120C02_C_STRAIGHT_400M, new MyPrefabConfiguration(MyModelsEnum.p120c02_c_straight_400m, MyModelsEnum.p120c02_c_straight_400m_LOD1, BuildTypesEnum.BEAMS, CategoryTypesEnum.MEDIUM, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p120c02_c_straight_400m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P110B03_LATTICE_BEAM_STRAIGHT_420M, new MyPrefabConfiguration(MyModelsEnum.p110b03_lattice_beam_straight_420m, MyModelsEnum.p110b03_lattice_beam_straight_420m_LOD1, BuildTypesEnum.BEAMS, CategoryTypesEnum.LARGE, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p110b03_lattice_beam_straight_420m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P110B04_LATTICE_BEAM_STRAIGHT_420M_WITH_PANELS, new MyPrefabConfiguration(MyModelsEnum.p110b04_lattice_beam_straight_420m_with_panels, MyModelsEnum.p110b04_lattice_beam_straight_420m_with_panels_LOD1, BuildTypesEnum.BEAMS, CategoryTypesEnum.LARGE, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p110b04_lattice_beam_straight_420m_with_panels_COL));\n\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P363_A01_BIG_ANTENNA_1500M, new MyPrefabConfiguration(MyModelsEnum.p363_a01_big_antenna_1500m, MyModelsEnum.p363_a01_big_antenna_1500m_LOD1, BuildTypesEnum.MODULES, CategoryTypesEnum.COMMUNICATIONS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p363_a01_big_antenna_1500m_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P4221_A01_COOLING_DEVICE_WALL_340X400, new MyPrefabConfiguration(MyModelsEnum.p4221_a01_cooling_device_wall_340x400, MyModelsEnum.p4221_a01_cooling_device_wall_340x400_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.PIPES, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p4221_a01_cooling_device_wall_340x400_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P4222_A01_PIPES_CONNECTOR, new MyPrefabConfiguration(MyModelsEnum.p4222_a01_pipes_connector, MyModelsEnum.p4222_a01_pipes_connector_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.PIPES, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p4222_a01_pipes_connector_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P4223_A01_OPEN_PIPE, new MyPrefabConfiguration(MyModelsEnum.p4223_a01_open_pipe, MyModelsEnum.p4223_a01_open_pipe_LOD1, BuildTypesEnum.CONNECTIONS, CategoryTypesEnum.PIPES, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p4223_a01_open_pipe_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P311B01_LONG_TERM_THRUSTER, new MyPrefabConfiguration(MyModelsEnum.p311b01_long_term_thruster, MyModelsEnum.p311b01_long_term_thruster_LOD1, BuildTypesEnum.MODULES, CategoryTypesEnum.FLIGHT, null, MyMaterialType.METAL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P221K01_CHAMBER_V2, new MyPrefabConfiguration(MyModelsEnum.p221k01_chamber_v2, MyModelsEnum.p221k01_chamber_v2_LOD1, BuildTypesEnum.SHELLS, CategoryTypesEnum.CHAMBERS, null, MyMaterialType.METAL));\n\n            const float barrelExplosionMultiplier = 2;\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P581_A01_BARREL_BIOHAZARD, new MyPrefabConfiguration(MyModelsEnum.p581_a01_barrel_biohazard, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.BARRELS, null, MyMaterialType.METAL, explosionType: MyExplosionTypeEnum.BIOCHEM_EXPLOSION, minSizeForExplosion: 0f, explosionRadiusMultiplier: barrelExplosionMultiplier, collisionModelEnum: MyModelsEnum.p581_a01_universal_barrel_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P581_A01_BARREL_BIOHAZARD_2, new MyPrefabConfiguration(MyModelsEnum.p581_a01_barrel_biohazard_2, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.BARRELS, null, MyMaterialType.METAL, explosionType: MyExplosionTypeEnum.BIOCHEM_EXPLOSION, minSizeForExplosion: 0f, explosionRadiusMultiplier: barrelExplosionMultiplier, collisionModelEnum: MyModelsEnum.p581_a01_universal_barrel_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P581_A01_NUKE_BARREL, new MyPrefabConfiguration(MyModelsEnum.p581_a01_nuke_barrel, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.BARRELS, null, MyMaterialType.METAL, explosionType: MyExplosionTypeEnum.NUCLEAR_EXPLOSION, minSizeForExplosion: 0f, explosionRadiusMultiplier: barrelExplosionMultiplier, collisionModelEnum: MyModelsEnum.p581_a01_universal_barrel_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P581_A01_RED_BARREL, new MyPrefabConfiguration(MyModelsEnum.p581_a01_red_barrel, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.BARRELS, null, MyMaterialType.METAL, minSizeForExplosion: 0f, explosionRadiusMultiplier: barrelExplosionMultiplier, collisionModelEnum: MyModelsEnum.p581_a01_universal_barrel_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P581_A01_SIMPLE_BARREL, new MyPrefabConfiguration(MyModelsEnum.p581_a01_simple_barrel, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.BARRELS, null, MyMaterialType.METAL, minSizeForExplosion: 0f, explosionRadiusMultiplier: barrelExplosionMultiplier, collisionModelEnum: MyModelsEnum.p581_a01_universal_barrel_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P581_A01_SIMPLE_BARREL_2, new MyPrefabConfiguration(MyModelsEnum.p581_a01_simple_barrel_2, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.BARRELS, null, MyMaterialType.METAL, minSizeForExplosion: 0f, explosionRadiusMultiplier: barrelExplosionMultiplier, collisionModelEnum: MyModelsEnum.p581_a01_universal_barrel_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.BARREL_PROP_A, new MyPrefabConfiguration(MyModelsEnum.Barrel_prop_A, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.BARRELS, null, MyMaterialType.METAL, minSizeForExplosion: 0f, explosionRadiusMultiplier: barrelExplosionMultiplier, collisionModelEnum: MyModelsEnum.p581_a01_universal_barrel_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.BARREL_PROP_B, new MyPrefabConfiguration(MyModelsEnum.Barrel_prop_B, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.BARRELS, null, MyMaterialType.METAL, explosionType: MyExplosionTypeEnum.BIOCHEM_EXPLOSION, minSizeForExplosion: 0f, explosionRadiusMultiplier: barrelExplosionMultiplier, collisionModelEnum: MyModelsEnum.p581_a01_universal_barrel_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.BARREL_PROP_C, new MyPrefabConfiguration(MyModelsEnum.Barrel_prop_C, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.BARRELS, null, MyMaterialType.METAL, minSizeForExplosion: 0f, explosionRadiusMultiplier: barrelExplosionMultiplier, collisionModelEnum: MyModelsEnum.p581_a01_universal_barrel_COL));\n            //AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.BARREL_PROP_D, new MyPrefabConfiguration(MyModelsEnum.Barrel_prop_D, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.BARRELS, null, MyMaterialType.METAL, minSizeForExplosion: 0f, explosionRadiusMultiplier: barrelExplosionMultiplier));\n            //AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.BARREL_PROP_E, new MyPrefabConfiguration(MyModelsEnum.Barrel_prop_E, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.BARRELS, null, MyMaterialType.METAL, minSizeForExplosion: 0f, explosionRadiusMultiplier: barrelExplosionMultiplier));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.CANNONBALL_CAPSULE_1, new MyPrefabConfiguration(MyModelsEnum.CannonBall_Capsule_1, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.OTHER, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.CannonBall_Capsule_1_COL, explosionType: MyExplosionTypeEnum.BLASTER_EXPLOSION, minSizeForExplosion: 0f, explosionRadiusMultiplier: barrelExplosionMultiplier));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.GATTLING_AMMO_BELT, new MyPrefabConfiguration(MyModelsEnum.gattling_ammo_belt, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.OTHER, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.gattling_ammo_belt_COL, explosionType: MyExplosionTypeEnum.BLASTER_EXPLOSION, minSizeForExplosion: 0f, explosionRadiusMultiplier: barrelExplosionMultiplier));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.MISSILE_PACK01, new MyPrefabConfiguration(MyModelsEnum.Missile_pack01, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.OTHER, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.Missile_pack01_COL, explosionType: MyExplosionTypeEnum.NUCLEAR_EXPLOSION, minSizeForExplosion: 0f, explosionRadiusMultiplier: barrelExplosionMultiplier));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.MISSILE_PACK02, new MyPrefabConfiguration(MyModelsEnum.Missile_pack02, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.OTHER, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.Missile_pack02_COL, explosionType: MyExplosionTypeEnum.NUCLEAR_EXPLOSION, minSizeForExplosion: 0f, explosionRadiusMultiplier: barrelExplosionMultiplier));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.MISSILE_PLAZMA01, new MyPrefabConfiguration(MyModelsEnum.Missile_plazma01, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.OTHER, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.Missile_plazma01_COL, explosionType: MyExplosionTypeEnum.PLASMA_EXPLOSION, minSizeForExplosion: 0f, explosionRadiusMultiplier: barrelExplosionMultiplier));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.MISSILE_STACK_BIOCHEM01, new MyPrefabConfiguration(MyModelsEnum.Missile_stack_biochem01, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.OTHER, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.Missile_stack_biochem01_COL, explosionType: MyExplosionTypeEnum.BIOCHEM_EXPLOSION, minSizeForExplosion: 0f, explosionRadiusMultiplier: barrelExplosionMultiplier));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P581_A01_O2_BARREL, new MyPrefabConfiguration(MyModelsEnum.p581_a01_o2_barrel, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.BARRELS, null, MyMaterialType.METAL, explosionType: MyExplosionTypeEnum.BIOCHEM_EXPLOSION, minSizeForExplosion: 0f, explosionRadiusMultiplier: barrelExplosionMultiplier, collisionModelEnum: MyModelsEnum.p581_a01_o2_barrel_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.NUCLEAR_WARHEAD_CLOSED, new MyPrefabConfiguration(MyModelsEnum.Nuclear_Warhead_closed, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.OTHER, null, MyMaterialType.METAL, explosionType: MyExplosionTypeEnum.NUCLEAR_EXPLOSION, minSizeForExplosion: 0f, explosionRadiusMultiplier: barrelExplosionMultiplier, explosionParticleEffectScale: 3.0f, collisionModelEnum: MyModelsEnum.Nuclear_Warhead_closed_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.NUCLEAR_WARHEAD_OPEN, new MyPrefabConfiguration(MyModelsEnum.Nuclear_Warhead_open, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.OTHER, null, MyMaterialType.METAL, explosionType: MyExplosionTypeEnum.NUCLEAR_EXPLOSION, minSizeForExplosion: 0f, explosionRadiusMultiplier: barrelExplosionMultiplier, explosionParticleEffectScale: 3.0f, collisionModelEnum: MyModelsEnum.Nuclear_Warhead_open_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P581_A01_NUKE_BARREL_1, new MyPrefabConfiguration(MyModelsEnum.p581_a01_nuke_barrel_1, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.BARRELS, null, MyMaterialType.METAL, explosionType: MyExplosionTypeEnum.BIOCHEM_EXPLOSION, minSizeForExplosion: 0f, explosionRadiusMultiplier: barrelExplosionMultiplier, collisionModelEnum: MyModelsEnum.p581_a01_universal_barrel_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P581_A01_SIMPLE_BARREL_3, new MyPrefabConfiguration(MyModelsEnum.p581_a01_simple_barrel_3, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.BARRELS, null, MyMaterialType.METAL, explosionType: MyExplosionTypeEnum.BIOCHEM_EXPLOSION, minSizeForExplosion: 0f, explosionRadiusMultiplier: barrelExplosionMultiplier, collisionModelEnum: MyModelsEnum.p581_a01_universal_barrel_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P221L01_CHAMBER_V1, new MyPrefabConfiguration(MyModelsEnum.p221L01_chamber_v1, MyModelsEnum.p221L01_chamber_v1_LOD1, BuildTypesEnum.SHELLS, CategoryTypesEnum.CHAMBERS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p221L01_chamber_v1_COL));\n\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P221M01_CHAMBER_BOTTOM_V1, new MyPrefabConfiguration(MyModelsEnum.p221m01_chamber_bottom_v1, MyModelsEnum.p221m01_chamber_bottom_v1_LOD1, BuildTypesEnum.SHELLS, CategoryTypesEnum.CHAMBERS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p221m01_chamber_bottom_v1_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P221M01_CHAMBER_CENTER_V1, new MyPrefabConfiguration(MyModelsEnum.p221m01_chamber_center_v1, MyModelsEnum.p221m01_chamber_center_v1_LOD1, BuildTypesEnum.SHELLS, CategoryTypesEnum.CHAMBERS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p221m01_chamber_center_v1_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P221M01_CHAMBER_TOP_V1, new MyPrefabConfiguration(MyModelsEnum.p221m01_chamber_top_v1, MyModelsEnum.p221m01_chamber_top_v1_LOD1, BuildTypesEnum.SHELLS, CategoryTypesEnum.CHAMBERS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p221m01_chamber_top_v1_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P321E01_SOLAR_PANEL, new MyPrefabConfiguration(MyModelsEnum.p321e01_solar_panel, MyModelsEnum.p321e01_solar_panel_LOD1, BuildTypesEnum.MODULES, CategoryTypesEnum.SUPPLY, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p321e01_solar_panel_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P110A06_SOLID_BEAM_STRAIGHT_420M, new MyPrefabConfiguration(MyModelsEnum.p110a06_solid_beam_straight_420m, null, BuildTypesEnum.BEAMS, CategoryTypesEnum.LARGE, null, MyMaterialType.METAL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P311B01_CUT_THRUSTER, new MyPrefabConfiguration(MyModelsEnum.p311b01_cut_thruster, MyModelsEnum.p311b01_cut_thruster_LOD1, BuildTypesEnum.MODULES, CategoryTypesEnum.FLIGHT, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p311b01_cut_thruster_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P312B01_CUT_THRUSTER_LATERAL, new MyPrefabConfiguration(MyModelsEnum.p312b01_cut_thruster_lateral, MyModelsEnum.p312b01_cut_thruster_lateral_LOD1, BuildTypesEnum.MODULES, CategoryTypesEnum.FLIGHT, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p312b01_cut_thruster_lateral_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P312B02_CUT_THRUSTER_LATITUDE, new MyPrefabConfiguration(MyModelsEnum.p312b02_cut_thruster_latitude, MyModelsEnum.p312b02_cut_thruster_latitude_LOD1, BuildTypesEnum.MODULES, CategoryTypesEnum.FLIGHT, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p312b02_cut_thruster_latitude_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.ALIEN_DETECTOR_UNIT, new MyPrefabConfiguration(MyModelsEnum.alien_detector_unit, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.OTHER, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.alien_detector_unit_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P381_C01_BUILDING5, new MyPrefabConfiguration(MyModelsEnum.p381_c01_building5, MyModelsEnum.p381_c01_building5_LOD1, BuildTypesEnum.MODULES, CategoryTypesEnum.MANNED_OBJECTS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p381_c01_building5_COL, explosionParticleEffectScale: 1f));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P381_C01_BUILDING6, new MyPrefabConfiguration(MyModelsEnum.p381_c01_building6, MyModelsEnum.p381_c01_building6_LOD1, BuildTypesEnum.MODULES, CategoryTypesEnum.MANNED_OBJECTS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p381_c01_building6_COL, explosionParticleEffectScale: 1f));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P381_C01_BUILDING7, new MyPrefabConfiguration(MyModelsEnum.p381_c01_building7, MyModelsEnum.p381_c01_building7_LOD1, BuildTypesEnum.MODULES, CategoryTypesEnum.MANNED_OBJECTS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p381_c01_building7_COL, explosionParticleEffectScale: 1f));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P221N01_CHAMBER_V1, new MyPrefabConfiguration(MyModelsEnum.p221n01_chamber_v1, MyModelsEnum.p221n01_chamber_v1_LOD1, BuildTypesEnum.SHELLS, CategoryTypesEnum.CHAMBERS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p221n01_chamber_v1_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_D_MEDIC_CROSS, new MyPrefabConfiguration(MyModelsEnum.p531_d_medic_cross, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.SIGNS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p531_d_medic_cross_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.ALIEN_ARTEFACT, new MyPrefabConfiguration(MyModelsEnum.alien_artefact, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.OTHER, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.alien_artefact_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.BOMB, new MyPrefabConfiguration(MyModelsEnum.bomb, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.OTHER, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.bomb_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.RAIL_GUN, new MyPrefabConfiguration(MyModelsEnum.rail_gun, MyModelsEnum.rail_gun_LOD1, BuildTypesEnum.SHELLS, CategoryTypesEnum.CHAMBERS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.rail_gun_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P345_A01_RECYCLE_SPHERE, new MyPrefabConfiguration(MyModelsEnum.p345_a01_recycle_sphere, MyModelsEnum.p345_a01_recycle_sphere_LOD1, BuildTypesEnum.MODULES, CategoryTypesEnum.INDUSTRY, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p345_a01_recycle_sphere_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.PRISON, new MyPrefabConfiguration(MyModelsEnum.prison, null, BuildTypesEnum.SHELLS, CategoryTypesEnum.CHAMBERS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.prison_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P511_A17_BILLBOARD_PORTRAIT_1, new MyPrefabConfiguration(MyModelsEnum.p511_a17_billboard_portrait_1, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.BILLBOARDS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p511_a17_billboard_portrait_1_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P511_A17_BILLBOARD_PORTRAIT_2, new MyPrefabConfiguration(MyModelsEnum.p511_a17_billboard_portrait_2, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.BILLBOARDS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p511_a17_billboard_portrait_1_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P511_A18_BILLBOARD, new MyPrefabConfiguration(MyModelsEnum.p511_a18_billboard, MyModelsEnum.p511_a18_billboard_LOD1, BuildTypesEnum.DETAILS, CategoryTypesEnum.BILLBOARDS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p511_a18_billboard_COL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P511_A19_BILLBOARD, new MyPrefabConfiguration(MyModelsEnum.p511_a19_billboard, MyModelsEnum.p511_a19_billboard_LOD1, BuildTypesEnum.DETAILS, CategoryTypesEnum.BILLBOARDS, null, MyMaterialType.METAL, collisionModelEnum: MyModelsEnum.p511_a19_billboard_COL));\n\n\t\t\t//Scanners\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabScanner, (int)MyMwcObjectBuilder_PrefabScanner_TypesEnum.Plane, new MyPrefabConfigurationScanner(MyModelsEnum.ScannerPlane, null, BuildTypesEnum.CUSTOM, CategoryTypesEnum.SCANNER, null, MyMaterialType.METAL));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabScanner, (int)MyMwcObjectBuilder_PrefabScanner_TypesEnum.Rays, new MyPrefabConfigurationScanner(MyModelsEnum.ScannerRays, null, BuildTypesEnum.CUSTOM, CategoryTypesEnum.SCANNER, null, MyMaterialType.METAL));\n\n            // Camera\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabCamera, (int)MyMwcObjectBuilder_PrefabCamera_TypesEnum.DEFAULT, new MyPrefabConfigurationCamera(MyModelsEnum.Cam, null, BuildTypesEnum.CUSTOM, CategoryTypesEnum.CAMERA, null, MyMaterialType.METAL));\n\n            //Aliens\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P391_ALIEN_GATE, new MyPrefabConfiguration(MyModelsEnum.Alien_gate, MyModelsEnum.Alien_gate_LOD1, BuildTypesEnum.MODULES, CategoryTypesEnum.MANNED_OBJECTS, null, MyMaterialType.METAL, explosionParticleEffectScale: 2f));\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.Prefab, (ushort)MyMwcObjectBuilder_Prefab_TypesEnum.DEAD_PILOT, new MyPrefabConfiguration(MyModelsEnum.Debris32_pilot, null, BuildTypesEnum.DETAILS, CategoryTypesEnum.OTHER, null, MyMaterialType.METAL));\n\n            //Alarms\n            AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabAlarm, (int)MyMwcObjectBuilder_PrefabAlarm_TypesEnum.DEFAULT, new MyPrefabConfigurationAlarm(MyModelsEnum.Alarm_off, null, MyModelsEnum.Alarm, null, BuildTypesEnum.CUSTOM, CategoryTypesEnum.ALARM, null, MyMaterialType.METAL));\n\n            SysUtils.Utils.MyMwcLog.WriteLine(\"All configurations added\");\n\n            Array a = MyGuiPrefabHelpers.MyMwcPrefabTypesEnumValues;\n            if (a != null)\n            {\n                foreach (MyMwcObjectBuilderTypeEnum prefabType in MyGuiPrefabHelpers.MyMwcPrefabTypesEnumValues)\n                {\n                    foreach (int prefabId in MyMwcObjectBuilder_Base.GetObjectBuilderIDs(prefabType))\n                    {\n                        MyPrefabConfiguration prefabConfiguration = GetPrefabConfiguration(prefabType, prefabId);\n                        MyMwcLog.WriteLine(\"Prefab configuration type: \" + (ushort)prefabType + \" id:\" + prefabId, LoggingOptions.ENUM_CHECKING);\n                        MyCommonDebugUtils.AssertDebug(prefabConfiguration != null);\n                    }\n                }\n\n\n                foreach (MyMwcObjectBuilderTypeEnum prefabType in MyGuiPrefabHelpers.MyMwcPrefabTypesEnumValues)\n                {\n                    foreach (int prefabId in MyMwcObjectBuilder_Base.GetObjectBuilderIDs(prefabType))\n                    {\n                        MyPrefabConfiguration prefabConfiguration = GetPrefabConfiguration(prefabType, prefabId);\n                        prefabConfiguration.ExplosionDamage = m_prefabDealthDamage[(int)prefabConfiguration.CategoryType];\n\n                        if ((prefabConfiguration.CategoryType == CategoryTypesEnum.CHAMBERS) ||\n                            (prefabConfiguration.CategoryType == CategoryTypesEnum.MANNED_OBJECTS))\n                            prefabConfiguration.ExplosionType = MyExplosionTypeEnum.ASTEROID_EXPLOSION;\n\n                        if ((prefabConfiguration.CategoryType == CategoryTypesEnum.TUNNELS) ||\n                            (prefabConfiguration.CategoryType == CategoryTypesEnum.INDUSTRY) ||\n                            (prefabConfiguration.CategoryType == CategoryTypesEnum.PASSAGES))\n                            prefabConfiguration.ExplosionType = MyExplosionTypeEnum.MEDIUM_PREFAB_EXPLOSION;\n                    }\n                }\n\n            }\n\n            SysUtils.Utils.MyMwcLog.WriteLine(\"MyPrefabConstants - END\");\n        }\n\n        // this method is there because we need load and check asserts when the game started\n        public static void Check()\n        {\n            MyMwcLog.WriteLine(\"MyPrefabConstants.Check()\");\n        }\n\n        static void AddPrefabConfiguration(MyMwcObjectBuilderTypeEnum prefabType, ushort prefabId, MyPrefabConfiguration prefabConfiguration)\n        {\n            ushort prefabTypeInt = (ushort)prefabType;\n            if (m_prefabConfigurations[prefabTypeInt] == null)\n            {\n                m_prefabConfigurations[prefabTypeInt] = new MyPrefabConfiguration[MyMwcObjectBuilder_Base.GetObjectBuilderIDs(prefabType).Max() + 1];\n            }\n            m_prefabConfigurations[prefabTypeInt][prefabId] = prefabConfiguration;\n        }\n\n        public static MyPrefabConfiguration GetPrefabConfiguration(MyMwcObjectBuilderTypeEnum prefabType, int prefabId)\n        {\n            MyPrefabConfiguration prefabConfiguration = null;\n            try\n            {\n                prefabConfiguration = m_prefabConfigurations[(ushort)prefabType][prefabId];\n            }\n            catch\n            {\n            }\n            return prefabConfiguration;            \n        }\n\n        public static MyPrefabConfiguration GetPrefabConfiguration(MyMwcObjectBuilder_PrefabBase prefabObjectBuilder)\n        {\n            return GetPrefabConfiguration(prefabObjectBuilder.GetObjectBuilderType(), prefabObjectBuilder.GetObjectBuilderId().Value);\n        }\n\n        //static void AddPrefabConfiguration(MyMwcObjectBuilder_Prefab_TypesEnum prefabTypeEnum, MyPrefabConfiguration prefabConfiguration)\n        //{\n        //    m_prefabConfigurations.Add(prefabTypeEnum, prefabConfiguration);            \n        //}\n\n        //public static MyPrefabConfiguration GetPrefabConfiguration(MyMwcObjectBuilder_Prefab_TypesEnum prefabType)\n        //{\n        //    return m_prefabConfigurations[prefabType];\n        //}\n\n        public static IEnumerable<MyPrefabConfiguration> GetPrefabConfigurations()\n        {\n            foreach (var item in m_prefabConfigurations)\n            {\n                //yield return item.Value;\n                foreach (MyPrefabConfiguration prefabConfiguration in item)\n                {\n                    yield return prefabConfiguration;\n                }\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Prefabs/MyPrefabFactory.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Entities.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.AppCode.Game.Prefabs;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Editor;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.Prefabs;\nusing MinerWars.AppCode.Game.Gameplay;\n\nnamespace MinerWars.AppCode.Game.Entities.Prefabs\n{\n    /// <summary>\n    /// MyPrefabFactory\n    /// </summary>\n    class MyPrefabFactory\n    {\n        private static MyPrefabFactory m_Instance = null;\n\n        private MyPrefabFactory() \n        { \n        }\n\n        public static MyPrefabFactory GetInstance()\n        {\n            if (m_Instance == null)\n                m_Instance = new MyPrefabFactory();\n\n            return m_Instance;\n        }\n\n        /// <summary>\n        /// CreatePrefab\n        /// </summary>\n        /// <param name=\"hudLabelText\"></param>\n        /// <param name=\"objBuilder\"></param>\n        /// <returns></returns>\n        public MyPrefabBase CreatePrefab(string hudLabelText, MyPrefabContainer prefabContainer, MyMwcObjectBuilder_PrefabBase prefabBuilder)\n        {\n            Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyPrefabFactory.CreatePrefab\");\n\n            MyPrefabConfiguration config = MyPrefabConstants.GetPrefabConfiguration(prefabBuilder.GetObjectBuilderType(), prefabBuilder.GetObjectBuilderId().Value);\n            Vector3 relativePosition = MyPrefabContainer.GetRelativePositionInAbsoluteCoords(prefabBuilder.PositionInContainer);\n            Matrix prefabLocalOrientation = Matrix.CreateFromYawPitchRoll(prefabBuilder.AnglesInContainer.X, prefabBuilder.AnglesInContainer.Y, prefabBuilder.AnglesInContainer.Z);\n\n            MyPrefabBase prefab = null;\n            if (config is MyPrefabConfigurationKinematic)\n            {\n                prefab = new MyPrefabKinematic(prefabContainer);                \n            }\n            else if (config is MyPrefabConfigurationLight)\n            {\n                prefab = new MyPrefabLight(prefabContainer);                \n            }\n            else if (config is MyPrefabConfigurationLargeWeapon)\n            {\n                prefab = new MyPrefabLargeWeapon(prefabContainer);                \n            }\n            else if (config is MyPrefabConfigurationSound)\n            {\n                prefab = new MyPrefabSound(prefabContainer);                \n            }\n            else if (config is MyPrefabConfigurationParticles)\n            {\n                prefab = new MyPrefabParticles(prefabContainer);                \n            }\n            else if (config is MyPrefabConfigurationLargeShip)\n            {\n                prefab = new MyPrefabLargeShip(prefabContainer);                \n            }\n            else if (config is MyPrefabConfigurationHangar)\n            {\n                prefab = new MyPrefabHangar(prefabContainer);                \n            }\n            else if(config is MyPrefabConfigurationFoundationFactory)\n            {\n                prefab = new MyPrefabFoundationFactory(prefabContainer);                \n            }\n            else if (config is MyPrefabConfigurationSecurityControlHUB) \n            {\n                prefab = new MyPrefabSecurityControlHUB(prefabContainer);                \n            }\n            else if (config is MyPrefabConfigurationBankNode) \n            {\n                prefab = new MyPrefabBankNode(prefabContainer);                \n            }\n            else if (config is MyPrefabConfigurationGenerator) \n            {\n                prefab = new MyPrefabGenerator(prefabContainer);                \n            }\n            else if (config is MyPrefabConfigurationScanner) \n            {\n                prefab = new MyPrefabScanner(prefabContainer);\n            }\n            else if (config is MyPrefabConfigurationCamera)\n            {\n                prefab = new MyPrefabCamera(prefabContainer);\n            }\n            else if (config is MyPrefabConfigurationAlarm)\n            {\n                prefab = new MyPrefabAlarm(prefabContainer);\n            }            \n            else\n            {\n                prefab = new MyPrefab(prefabContainer);\n                //prefab.Init(hudLabelText, relativePosition, prefabLocalOrientation, prefabBuilder, config);\n            }\n            prefab.Init(hudLabelText, relativePosition, prefabLocalOrientation, prefabBuilder, config);\n\n            Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            return prefab;\n        }\n\n\n\n        /// <summary>\n        /// CreatePrefabObjectBuilder\n        /// </summary>\n        /// <param name=\"prefabCategory\"></param>\n        /// <returns></returns>\n        public MyMwcObjectBuilder_PrefabBase CreatePrefabObjectBuilder(MyMwcObjectBuilderTypeEnum prefabType, int prefabId, MyMwcObjectBuilder_Prefab_AppearanceEnum textureEnum)\n        {\n            MyGameplayProperties gameplayProperties = MyGameplayConstants.GetGameplayProperties(prefabType, prefabId, MyMwcObjectBuilder_FactionEnum.Euroamerican);\n            MyPrefabConfiguration prefabConfig = MyPrefabConstants.GetPrefabConfiguration(prefabType, prefabId);\n            MyMwcVector3Short pos = new MyMwcVector3Short(0, 0, 0);\n\n            MyMwcObjectBuilder_PrefabBase objBuilder = MyMwcObjectBuilder_Base.CreateNewObject(prefabType, prefabId) as MyMwcObjectBuilder_PrefabBase;\n            objBuilder.PositionInContainer = pos;\n            objBuilder.AnglesInContainer = Vector3.Zero;\n            objBuilder.PrefabHealthRatio = MyGameplayConstants.HEALTH_RATIO_MAX;\n            objBuilder.PrefabMaxHealth = null;\n            objBuilder.FactionAppearance = textureEnum;\n            objBuilder.IsDestructible = gameplayProperties.IsDestructible;\n            if (prefabConfig.DisplayHud)\n            {\n                objBuilder.PersistentFlags |= MyPersistentEntityFlags.DisplayOnHud;\n            }\n            \n            return objBuilder;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Prefabs/MyPrefabFoundationFactory.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.HUD;\nusing MinerWars.AppCode.Game.Inventory;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Entities.FoundationFactory;\nusing MinerWars.AppCode.Game.Entities.Tools;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Models;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.World;\nusing MinerWars.AppCode.Physics;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.Prefabs;\n\nnamespace MinerWars.AppCode.Game.Prefabs\n{\n    internal delegate void OnBuildingComplete(MyPrefabFoundationFactory sender, MyObjectToBuild buildedObject);\n\n    class MyPrefabFoundationFactory : MyPrefabBase\n    {\n        #region Fields\n        private int m_buildingTimeFromStart;          // elapsed time from when building started\n        private bool m_isBuilding;                      // is building now                \n        #endregion                        \n\n        #region Properties\n        /// <summary>\n        /// Owner of foundation factory\n        /// </summary>\n        public MyPlayer Player { get; private set; }\n\n        /// <summary>\n        /// Build objects collection\n        /// </summary>\n        public List<MyObjectToBuild> BuildObjects { get; private set; }\n\n        /// <summary>\n        /// Building queue\n        /// </summary>\n        public List<MyObjectToBuild> BuildingQueue { get; private set; }\n\n        /// <summary>\n        /// Actual building object\n        /// </summary>\n        public MyObjectToBuild BuildingObject { get; private set; }\n\n        /// <summary>\n        /// Prefab container of foundation factory\n        /// </summary>\n        public MyPrefabContainer PrefabContainer\n        {\n            get\n            {\n                return m_owner;\n            }\n        }\n\n        /// <summary>\n        /// Is building enabled\n        /// </summary>\n        public bool IsBuilding\n        {\n            get { return m_isBuilding; }\n            private set\n            {\n                bool changed = m_isBuilding != value;\n                m_isBuilding = value;\n                if (changed) \n                {\n                    RecheckNeedsUpdate();\n                }\n            }\n        }\n\n        /// <summary>\n        /// Time left to complete building\n        /// </summary>\n        public int TimeToCompleteBuldingLeft\n        {\n            get\n            {\n                if(IsBuilding)\n                {\n                    return BuildingObject.BuildingSpecification.BuildingTime - m_buildingTimeFromStart;\n                } \n                else\n                {\n                    return 0;\n                }\n            }\n        }\n\n        /// <summary>\n        /// How much is building complete\n        /// </summary>\n        public float BuildingPercentageComplete\n        {\n            get\n            {\n                if(IsBuilding)\n                {\n                    if (BuildingObject.BuildingSpecification.BuildingTime > 0)\n                    {\n                        return (float)m_buildingTimeFromStart/BuildingObject.BuildingSpecification.BuildingTime;\n                    }\n                    else\n                    {\n                        return 1f;\n                    }\n                }\n                else\n                {\n                    return 0f;\n                }\n            }\n        }\n\n        public MyMwcObjectBuilder_PrefabFoundationFactory_TypesEnum FoundationFactoryType\n        {\n            get\n            {\n                return (MyMwcObjectBuilder_PrefabFoundationFactory_TypesEnum)m_prefabId;\n            }\n            set\n            {\n                m_prefabId = (int)value;\n            }\n        }\n        #endregion\n\n        #region Events\n        /// <summary>\n        /// Call when building complete\n        /// </summary>\n        public event OnBuildingComplete BuildingComplete;        \n        #endregion\n\n        #region Ctors\n        /// <summary>\n        /// Creates new instance of foundation factory prefab\n        /// </summary>\n        /// <param name=\"owner\">Owner</param>\n        public MyPrefabFoundationFactory(MyPrefabContainer owner)\n            : base(owner)\n        {\n            Player = MySession.Static.Player;\n            BuildObjects = new List<MyObjectToBuild>();\n            BuildingQueue = new List<MyObjectToBuild>();\n            BuildingObject = null;            \n\n            m_buildingTimeFromStart = 0;\n            IsBuilding = false;\n        }        \n        #endregion\n\n        #region Methods\n        /// <summary>\n        /// Starts building\n        /// </summary>\n        public void StartBuilding()\n        {\n            if (IsBuilding)\n            {\n                throw new Exception(\"Building is already started\");\n            }\n\n            if (BuildingObject == null)\n            {\n                if (BuildingQueue.Count == 0)\n                {\n                    throw new Exception(\"There are nothing to build\");\n                }\n                \n                SetBuildingNextObject();\n                m_buildingTimeFromStart = 0;\n            }\n\n            IsBuilding = true;\n        }\n\n        /// <summary>\n        /// Stops building\n        /// </summary>\n        public void StopBuilding()\n        {\n            if (!IsBuilding)\n            {\n                throw new Exception(\"Building is not running\");\n            }\n\n            IsBuilding = false;\n        }\n\n        /// <summary>\n        /// Cancels actual building object\n        /// </summary>\n        public void CancelBuilding()\n        {\n            if (!IsBuilding)\n            {\n                throw new Exception(\"Building is not running\");\n            }\n\n            ChangeInventoryItemsAmount(false, MyFoundationFactoryConstants.RETURN_AMOUNT_RATIO * m_buildingTimeFromStart / BuildingObject.BuildingSpecification.BuildingTime, BuildingObject);\n            if (BuildingQueue.Count > 0)\n            {\n                SetBuildingNextObject();\n            } \n            else\n            {\n                BuildingObject = null;\n                IsBuilding = false;\n            }\n\n            m_buildingTimeFromStart = 0;            \n        }\n\n        /// <summary>\n        /// Adds object to building queue\n        /// </summary>\n        /// <param name=\"objectToBuild\">Object to build</param>\n        public void AddToBuildingQueue(MyObjectToBuild objectToBuild)\n        {            \n            if(!objectToBuild.BuildingSpecification.CanBuild(this))\n            {\n                throw new Exception(\"You can't build this!\");\n            }\n\n            BuildingQueue.Add(objectToBuild);\n            ChangeInventoryItemsAmount(true, 1f, objectToBuild);            \n\n            if(!IsBuilding)\n            {\n                StartBuilding();\n            }            \n        }\n\n        /// <summary>\n        /// Removes object from building queue\n        /// </summary>\n        /// <param name=\"objectToBuild\">Object to build</param>\n        public void RemoveFromBuildingQueue(MyObjectToBuild objectToBuild)\n        {\n            int indexOfLastObjectToBuild = BuildingQueue.FindLastIndex(x => x == objectToBuild);\n            if(indexOfLastObjectToBuild >= 0)\n            {\n                BuildingQueue.RemoveAt(indexOfLastObjectToBuild);\n            }            \n            ChangeInventoryItemsAmount(false, MyFoundationFactoryConstants.RETURN_AMOUNT_RATIO, objectToBuild);            \n        }\n\n        /// <summary>\n        /// Removes build object from build objects collection\n        /// </summary>\n        /// <param name=\"objectToBuild\">Build object</param>\n        public void RemoveFromBuildObjects(MyObjectToBuild objectToBuild)\n        {\n            BuildObjects.Remove(objectToBuild);\n        }                        \n\n        /// <summary>\n        /// Sets next object from building queue to building\n        /// </summary>\n        private void SetBuildingNextObject()\n        {\n            if(BuildingQueue.Count == 0)\n            {\n                throw new Exception(\"There is no object to build in building queue\");\n            }\n            \n            BuildingObject = BuildingQueue[0];\n            BuildingQueue.RemoveAt(0);            \n        }\n\n        /// <summary>\n        /// Changes inventory item's amount. When add/remove object to/from building queue\n        /// </summary>\n        /// <param name=\"remove\">Remove = true, Add = false</param>\n        /// <param name=\"ratio\">Ratio of item's amount</param>\n        /// <param name=\"objectToBuild\">Object to build</param>\n        private void ChangeInventoryItemsAmount(bool remove, float ratio, MyObjectToBuild objectToBuild)\n        {\n            foreach (IMyBuildingRequirement buildingRequirement in objectToBuild.BuildingSpecification.BuildingRequirements)\n            {\n                MyBuildingRequirementInventoryItem buildingRequirementInventoryItem = buildingRequirement as MyBuildingRequirementInventoryItem;\n                if (buildingRequirementInventoryItem != null)\n                {\n                    if (buildingRequirementInventoryItem.RemoveAfterBuild)\n                    {\n                        if (remove)\n                        {                            \n                            Player.Ship.Inventory.RemoveInventoryItemAmount(buildingRequirementInventoryItem.ObjectBuilderType,\n                                                            buildingRequirementInventoryItem.ObjectBuilderId,\n                                                            buildingRequirementInventoryItem.Amount * ratio);\n                        } \n                        else\n                        {\n                            Player.Ship.Inventory.AddInventoryItem(buildingRequirementInventoryItem.ObjectBuilderType,\n                                                            buildingRequirementInventoryItem.ObjectBuilderId,\n                                                            buildingRequirementInventoryItem.Amount * ratio, false);\n                        }\n                    }\n                }\n            }\n        }\n\n        /// <summary>\n        /// Completes actual building\n        /// </summary>\n        private void CompleteBuilding()\n        {\n            MyObjectToBuild buildObject = BuildingObject;\n            PrefabContainer.Inventory.AddInventoryItem(buildObject.ObjectBuilder, buildObject.Amount, false, true);            \n\n            if(BuildingQueue.Count != 0)\n            {\n                SetBuildingNextObject();\n            } \n            else\n            {\n                BuildingObject = null;\n                IsBuilding = false;                \n            }\n\n            m_buildingTimeFromStart = 0;\n\n            if (BuildingComplete != null)\n            {\n                BuildingComplete(this, buildObject);\n            }\n        }\n\n        /// <summary>\n        /// Creates new foundation factory from player's inventory. When player has no foundation factory in inventory, then returns result false.\n        /// </summary>        \n        /// <param name=\"result\">Result of foundation factory creation</param>\n        /// <returns>Instance of new foundation factory</returns>\n        public static MyPrefabFoundationFactory TryCreateFoundationFactory(MyPlayer player, out bool result)\n        {\n            MyPrefabFoundationFactory foundationFactory = null;            \n            MyInventoryItem foundationFactoryItem = player.Ship.Inventory.GetInventoryItem(MyMwcObjectBuilderTypeEnum.PrefabFoundationFactory, (int)MyMwcObjectBuilder_PrefabFoundationFactory_TypesEnum.DEFAULT);\n            if (foundationFactoryItem == null) \n            {\n                foundationFactoryItem = player.Ship.Inventory.GetInventoryItem(MyMwcObjectBuilderTypeEnum.FoundationFactory, null);\n            }\n            if (foundationFactoryItem == null)\n            {\n                result = false;                \n            }\n            else\n            {\n                MyMwcObjectBuilder_PrefabFoundationFactory foundationFactoryBuilder =\n                    MyMwcObjectBuilder_Base.CreateNewObject(MyMwcObjectBuilderTypeEnum.PrefabFoundationFactory, (int)MyMwcObjectBuilder_PrefabFoundationFactory_TypesEnum.DEFAULT) as MyMwcObjectBuilder_PrefabFoundationFactory;\n                MyMwcObjectBuilder_PrefabContainer prefabContainerBuilder = new MyMwcObjectBuilder_PrefabContainer(\n                    null, MyMwcObjectBuilder_PrefabContainer_TypesEnum.INSTANCE, new List<MyMwcObjectBuilder_PrefabBase>(), MyClientServer.LoggedPlayer.GetUserId(),\n                    player.Faction, new MyMwcObjectBuilder_Inventory(new List<MyMwcObjectBuilder_InventoryItem>(), 1000));\n\n                Matrix ffWorld = Matrix.Identity;\n                ffWorld.Translation = player.Ship.WorldMatrix.Translation + player.Ship.WorldMatrix.Forward * 20;\n\n                MyPrefabContainer prefabContainer = new MyPrefabContainer();\n                prefabContainer.Init(null, prefabContainerBuilder, ffWorld);\n                MyEntities.Add(prefabContainer);\n\n                MyPrefabConfiguration ffConfiguration = MyPrefabConstants.GetPrefabConfiguration(MyMwcObjectBuilderTypeEnum.PrefabFoundationFactory, (int)MyMwcObjectBuilder_PrefabFoundationFactory_TypesEnum.DEFAULT);\n                \n                foundationFactory = new MyPrefabFoundationFactory(prefabContainer);\n                foundationFactory.Init(null, new Vector3(0f, 0f, 0f), Matrix.Identity, foundationFactoryBuilder, ffConfiguration);                \n                prefabContainer.AddPrefab(foundationFactory);\n                \n                player.Ship.Inventory.RemoveInventoryItemAmount(ref foundationFactoryItem, 1f);\n                                \n                result = true;\n            }\n            return foundationFactory;\n        }                        \n\n        #endregion\n\n        #region Overriden methods        \n        protected override void InitPrefab(string displayName, Vector3 relativePosition, Matrix localOrientation, MyMwcObjectBuilder_PrefabBase objectBuilder, MyPrefabConfiguration prefabConfig)\n        {\n            MyMwcObjectBuilder_PrefabFoundationFactory objectBuilderFF = objectBuilder as MyMwcObjectBuilder_PrefabFoundationFactory;                        \n\n            IsBuilding = objectBuilderFF.IsBuilding;\n            m_buildingTimeFromStart = objectBuilderFF.BuildingTimeFromStart;\n            if (objectBuilderFF.BuildingObject != null)\n            {\n                BuildingObject = MyObjectToBuild.CreateFromObjectBuilder(objectBuilderFF.BuildingObject.ObjectBuilder, objectBuilderFF.BuildingObject.Amount);\n            }\n            if (objectBuilderFF.BuildingQueue != null)\n            {\n                foreach (MyMwcObjectBuilder_ObjectToBuild buildingQueue in objectBuilderFF.BuildingQueue)\n                {\n                    BuildingQueue.Add(MyObjectToBuild.CreateFromObjectBuilder(buildingQueue.ObjectBuilder, buildingQueue.Amount));\n                }\n            }                                    \n        }\n\n        protected override void SetHudMarker()\n        {\n            MyHud.ChangeText(this, new StringBuilder(DisplayName), MyGuitargetMode.Neutral, 0, MyHudIndicatorFlagsEnum.SHOW_TEXT | MyHudIndicatorFlagsEnum.SHOW_BORDER_INDICATORS | MyHudIndicatorFlagsEnum.SHOW_ONLY_IF_DETECTED_BY_RADAR | MyHudIndicatorFlagsEnum.SHOW_HEALTH_BARS | MyHudIndicatorFlagsEnum.SHOW_DISTANCE | MyHudIndicatorFlagsEnum.ALPHA_CORRECTION_BY_DISTANCE | MyHudIndicatorFlagsEnum.SHOW_MISSION_MARKER);\n        }\n\n        protected override StringBuilder GetDisplayNameSb(string displayName)\n        {\n            StringBuilder displayNameSb;\n            if (!string.IsNullOrEmpty(displayName))\n            {\n                displayNameSb = base.GetDisplayNameSb(displayName);\n            }\n            else \n            {\n                if (!string.IsNullOrEmpty(m_owner.DisplayName))\n                {\n                    displayNameSb = new StringBuilder(m_owner.DisplayName);\n                    displayNameSb.Append(\" (\");\n                    displayNameSb.Append(MyTextsWrapper.Get(MyTextsWrapperEnum.FoundationFactory));\n                    displayNameSb.Append(\")\");\n                }\n                else\n                {\n                    displayNameSb = MyTextsWrapper.Get(MyTextsWrapperEnum.FoundationFactory);\n                }\n            }\n            return displayNameSb;\n        }\n\n        protected override void UpdatePrefabBeforeSimulation()\n        {\n            base.UpdatePrefabBeforeSimulation();\n\n            if (IsBuilding)\n            {\n                m_buildingTimeFromStart += MyConstants.PHYSICS_STEP_SIZE_IN_MILLISECONDS;\n                if (m_buildingTimeFromStart >= BuildingObject.BuildingSpecification.BuildingTime)\n                {\n                    CompleteBuilding();\n                }\n            }            \n        }\n\n        protected override MyMwcObjectBuilder_Base GetObjectBuilderInternal(bool getExactCopy)\n        {            \n            MyMwcObjectBuilder_PrefabFoundationFactory ffBuilder = base.GetObjectBuilderInternal(getExactCopy) as MyMwcObjectBuilder_PrefabFoundationFactory;            \n            ffBuilder.BuildingObject = BuildingObject != null ? new MyMwcObjectBuilder_ObjectToBuild(BuildingObject.ObjectBuilder, BuildingObject.Amount) : null;\n            ffBuilder.IsBuilding = IsBuilding;\n            ffBuilder.BuildingTimeFromStart = m_buildingTimeFromStart;                \n            ffBuilder.BuildingQueue = new List<MyMwcObjectBuilder_ObjectToBuild>();                \n            foreach (MyObjectToBuild objectToBuild in BuildingQueue)\n            {\n                ffBuilder.BuildingQueue.Add(new MyMwcObjectBuilder_ObjectToBuild(objectToBuild.ObjectBuilder, objectToBuild.Amount));\n            }                                            \n            return ffBuilder;\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyPrefabFoundationFactory\";\n        }\n\n        protected override bool PrefabNeedsUpdateNow\n        {\n            get\n            {\n                return base.PrefabNeedsUpdateNow && IsBuilding;\n            }\n        }\n\n        #endregion\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Prefabs/MyPrefabGenerator.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWarsMath;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.Prefabs;\nusing MinerWars.AppCode.Game.HUD;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.AppCode.Game.Entities.Prefabs;\nusing MinerWars.AppCode.Game.GUI.Prefabs;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Editor;\nusing MinerWars.AppCode.Game.World.Global;\n\nnamespace MinerWars.AppCode.Game.Prefabs\n{\n    class MyPrefabGenerator : MyPrefabBase, IMyUseableEntity, IMyHasGuiControl\n    {\n        public MyPrefabGenerator(MyPrefabContainer owner)\n            : base(owner)\n        {\n        }        \n\n        protected override void InitPrefab(string displayName, Vector3 relativePosition, Matrix localOrientation, MyMwcObjectBuilder_PrefabBase objectBuilder, MyPrefabConfiguration prefabConfig)\n        {\n            MyMwcObjectBuilder_PrefabGenerator objectBuilderGenerator = objectBuilder as MyMwcObjectBuilder_PrefabGenerator;\n            UseProperties = new MyUseProperties(MyUseType.FromHUB | MyUseType.Solo, MyUseType.FromHUB | MyUseType.Solo);\n            if (objectBuilder.UseProperties == null)\n            {\n                UseProperties.Init(MyUseType.FromHUB | MyUseType.Solo, MyUseType.FromHUB | MyUseType.Solo, 1, 4000, false);                \n            }\n            else\n            {\n                UseProperties.Init(objectBuilder.UseProperties);\n            }\n        }\n\n        protected override void SetHudMarker()\n        {\n            MyHud.ChangeText(this, new StringBuilder(DisplayName), MyGuitargetMode.Neutral, 0, MyHudIndicatorFlagsEnum.SHOW_TEXT | MyHudIndicatorFlagsEnum.SHOW_BORDER_INDICATORS | MyHudIndicatorFlagsEnum.SHOW_HEALTH_BARS | MyHudIndicatorFlagsEnum.SHOW_DISTANCE | MyHudIndicatorFlagsEnum.ALPHA_CORRECTION_BY_DISTANCE | MyHudIndicatorFlagsEnum.SHOW_MISSION_MARKER);\n        }\n\n        protected override void WorkingChanged()\n        {\n            base.WorkingChanged();\n            m_owner.UpdateGenerators();\n        }\n\n        protected override MyMwcObjectBuilder_Base GetObjectBuilderInternal(bool getExactCopy)\n        {\n            MyMwcObjectBuilder_PrefabGenerator objectBuilder = base.GetObjectBuilderInternal(getExactCopy) as MyMwcObjectBuilder_PrefabGenerator;\n            objectBuilder.UseProperties = UseProperties.GetObjectBuilder();\n            return objectBuilder;\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyPrefabGenerator\";\n        }\n\n        public float GetRange()\n        {\n            var config = m_config as MyPrefabConfigurationGenerator;\n            return config != null ? config.Range : 0;\n        }\n\n        public override bool MoveAndRotate(Vector3 moveIndicator, Matrix orientation)\n        {\n            if (m_owner != null)\n            {\n                m_owner.UpdateGenerators();\n            }\n\n            return base.MoveAndRotate(moveIndicator, orientation);\n        }\n\n        public override void Close()\n        {\n            base.Close();\n\n            if (m_owner != null)\n            {\n                m_owner.UpdateGenerators();\n            }\n\n        }        \n\n        public void DebugDrawRange()\n        {\n            Matrix world = Matrix.CreateWorld(WorldMatrix.Translation, WorldMatrix.Forward, WorldMatrix.Up);\n            Vector4 color = Color.Blue.ToVector4();\n            color.W *= 0.1f;\n            MySimpleObjectDraw.DrawTransparentSphere(ref world, GetRange(), ref color, true, 24);         \n        }\n\n        public MyGuiControlEntityUse GetGuiControl(IMyGuiControlsParent parent)\n        {\n            return new MyGuiControlPrefabUse(parent, this);\n        }\n\n        public MyEntity GetEntity()\n        {\n            return this;\n        }\n\n        public MyUseProperties UseProperties { get; set; }\n\n        public bool CanBeUsed(MySmallShip usedBy)\n        {\n            return MyFactions.GetFactionsRelation(usedBy, this) == MyFactionRelationEnum.Friend || UseProperties.IsHacked;\n        }\n\n        public bool CanBeHacked(MySmallShip hackedBy)\n        {\n            return MyFactions.GetFactionsRelation(hackedBy, this) == MyFactionRelationEnum.Neutral ||\n                MyFactions.GetFactionsRelation(hackedBy, this) == MyFactionRelationEnum.Enemy;\n        }\n\n        public void Use(MySmallShip useBy)\n        {\n            MyGuiManager.AddScreen(new MyGuiScreenEntityUseSolo(this));\n        }\n\n        public void UseFromHackingTool(MySmallShip useBy, int hackingLevelDifference)\n        {\n            Use(useBy);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Prefabs/MyPrefabHangar.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.HUD;\nusing MinerWars.AppCode.Game.Inventory;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Entities.Prefabs;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Missions;\nusing MinerWars.AppCode.Game.Prefabs;\nusing MinerWars.AppCode.Game.Render;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.AppCode.Physics;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.Prefabs;\nusing SysUtils.Utils;\nusing MinerWars.AppCode.Game.TransparentGeometry;\n\nnamespace MinerWars.AppCode.Game.Entities.Prefabs\n{\n    class MyPrefabHangar : MyPrefabBase, IMyInventory, IMyUseableEntity\n    {        \n        //private BoundingBox m_localBoundingBox;\n\n        public MyPrefabHangar(MyPrefabContainer owner) \n            : base(owner)\n        {                        \n        }                \n\n        protected override void InitPrefab(string displayName, Vector3 relativePosition, Matrix localOrientation, MyMwcObjectBuilder_PrefabBase objectBuilder, MyPrefabConfiguration prefabConfig)\n        {\n            //Physics.RemoveAllElements();\n\n            //float raidus = ModelLod0.BoundingSphere.Radius;\n            //Vector3 min = new Vector3(-raidus, -raidus, -raidus);\n            //Vector3 max = new Vector3(raidus, raidus, raidus);\n            //m_localBoundingBox = new BoundingBox(min, max);            \n\n            UseProperties = new MyUseProperties(MyUseType.None, MyUseType.Solo);\n            if (objectBuilder.UseProperties == null)\n            {\n                UseProperties.Init(MyUseType.None, MyUseType.None, 3, 8000, false);\n            }\n            else\n            {\n                UseProperties.Init(objectBuilder.UseProperties);\n            }\n        }\n\n        public override string GetCorrectDisplayName()\n        {\n            string displayName = DisplayName;\n\n            if (DisplayName == \"Mixed Merchant\")\n            {\n                displayName = MyTextsWrapper.Get(MyTextsWrapperEnum.MerchantMixed).ToString();\n            }\n\n\n            return displayName;\n        }\n\n        protected override void SetHudMarker()\n        {\n            MyHudIndicatorFlagsEnum hudFlags = MyHudIndicatorFlagsEnum.SHOW_TEXT | MyHudIndicatorFlagsEnum.SHOW_BORDER_INDICATORS | MyHudIndicatorFlagsEnum.SHOW_HEALTH_BARS | MyHudIndicatorFlagsEnum.SHOW_DISTANCE | MyHudIndicatorFlagsEnum.SHOW_MISSION_MARKER;\n            MyGuitargetMode? guiTargetMode = MyGuitargetMode.Neutral;\n            if(PrefabHangarType == MyMwcObjectBuilder_PrefabHangar_TypesEnum.HANGAR && \n               MyFactions.GetFactionsRelation(this.m_owner, MySession.PlayerShip) == MyFactionRelationEnum.Friend)\n            {\n                guiTargetMode = MyGuitargetMode.Friend;\n            }\n            else\n            {\n                hudFlags |= MyHudIndicatorFlagsEnum.SHOW_ONLY_IF_DETECTED_BY_RADAR | MyHudIndicatorFlagsEnum.ALPHA_CORRECTION_BY_DISTANCE;\n            }\n\n\n            MyHud.ChangeText(this, new StringBuilder(GetCorrectDisplayName()), guiTargetMode, 0, hudFlags); \n        }\n\n        protected override StringBuilder GetDisplayNameSb(string displayName)\n        {\n            StringBuilder displayNameSb = null;\n            if (!string.IsNullOrEmpty(displayName))\n            {\n                displayNameSb = base.GetDisplayNameSb(displayName);\n            }\n            else \n            {\n                if (!string.IsNullOrEmpty(m_owner.DisplayName))\n                {\n                    displayNameSb = new StringBuilder(m_owner.DisplayName);\n                    //displayNameSb.Append(\" (\");\n                    //displayNameSb.Append(MyTextsWrapper.Get(MyTextsWrapperEnum.vendor));\n                    //displayNameSb.Append(\")\");\n                }\n                else\n                {\n                    if (PrefabHangarType == MyMwcObjectBuilder_PrefabHangar_TypesEnum.HANGAR)\n                    {\n                        displayNameSb = MyTextsWrapper.Get(MyTextsWrapperEnum.Hangar);\n                    }\n                    else if(PrefabHangarType == MyMwcObjectBuilder_PrefabHangar_TypesEnum.VENDOR)\n                    {\n                        displayNameSb = MyTextsWrapper.Get(MyTextsWrapperEnum.Merchant);\n                    }                    \n                }\n            }\n            return displayNameSb;\n        }\n\n        protected override MyMwcObjectBuilder_Base GetObjectBuilderInternal(bool getExactCopy)\n        {\n            MyMwcObjectBuilder_PrefabHangar objectBuilder = base.GetObjectBuilderInternal(getExactCopy) as MyMwcObjectBuilder_PrefabHangar;\n            objectBuilder.UseProperties = UseProperties.GetObjectBuilder();\n\n            return objectBuilder;\n        }\n\n        public override float GetHUDDamageRatio()\n        {\n            List<MyPrefabBase> largeShips = GetOwner().GetPrefabs(CategoryTypesEnum.LARGE_SHIPS);\n            if (largeShips.Count > 0)\n            {\n                return largeShips[0].GetHUDDamageRatio();\n            }\n            else \n            {\n                return base.GetHUDDamageRatio();\n            }            \n        }\n\n        public override bool Draw(MyRenderObject renderObject)\n        {\n            if (!base.Draw(renderObject))\n                return false;\n\n            //if (IsWorking())\n            /*{\n                Matrix world = Matrix.CreateWorld(WorldMatrix.Translation + ModelLod0.BoundingSphere.Center, WorldMatrix.Forward, WorldMatrix.Up);\n                MyTransparentMaterialEnum? faceMaterial;\n                MyTransparentMaterialEnum? lineMaterial;\n                Vector4 color;\n                SetTransparentParameters(out color, out faceMaterial, out lineMaterial);\n                if (faceMaterial.HasValue)\n                {\n                    BoundingBox localBoundingBox = m_localBoundingBox;\n                    MySimpleObjectDraw.DrawTransparentBox(ref world, ref localBoundingBox, ref color, true, 1, faceMaterial, lineMaterial);\n                }\n            }*/\n\n            return true;\n        }\n\n        private void SetTransparentParameters(out Vector4 color, out MyTransparentMaterialEnum? faceMaterial, out MyTransparentMaterialEnum? lineMaterial)\n        {\n            if (Game.Editor.MyEditor.Static.IsActive())\n            {\n                faceMaterial = MyTransparentMaterialEnum.ObjectiveDummyFace;\n                lineMaterial = MyTransparentMaterialEnum.ObjectiveDummyLine;\n            }\n            else \n            {\n                faceMaterial = null;\n                lineMaterial = null;\n            }\n\n            if(MyMissions.IsMissionEntity(this))\n            {                \n                color = MyHudConstants.MISSION_CUBE_COLOR;\n            }\n            else\n            {\n                MyFactionRelationEnum status = MyFactions.GetFactionsRelation(this, MySession.PlayerShip);\n                switch(status) {\n                    case MyFactionRelationEnum.Friend:\n                        color = MyHudConstants.FRIEND_CUBE_COLOR;\n                        break;\n                    case MyFactionRelationEnum.Enemy:\n                        color = MyHudConstants.ENEMY_CUBE_COLOR;\n                        break;\n                    case MyFactionRelationEnum.Neutral:\n                        color = MyHudConstants.NEUTRAL_CUBE_COLOR;\n                        break;\n                    default:\n                        throw new MyMwcExceptionApplicationShouldNotGetHere();\n                }                \n            }\n        }        \n\n        public MyInventory Inventory\n        {\n            get\n            {\n                return m_owner.Inventory;\n            }            \n        }\n\n        public MyMwcObjectBuilder_PrefabHangar_TypesEnum PrefabHangarType\n        {\n            get\n            {\n                return (MyMwcObjectBuilder_PrefabHangar_TypesEnum)m_prefabId;\n            }\n            set\n            {\n                m_prefabId = (int)value;\n            }\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyPrefabHangar\";\n        }\n\n        public bool CanBeHacked(MySmallShip hackedBy)\n        {\n            return IsWorking() && \n                   PrefabHangarType == MyMwcObjectBuilder_PrefabHangar_TypesEnum.VENDOR &&\n                   MyFactions.GetFactionsRelation(hackedBy, this) == MyFactionRelationEnum.Enemy;\n        }\n        public bool CanBeUsed(MySmallShip usedBy)\n        {\n            return false;\n        }\n\n        public void Use(MySmallShip useBy)\n        {\n            throw new NotSupportedException();\n        }\n\n        public void UseFromHackingTool(MySmallShip useBy, int hackingLevelDifference)\n        {\n            return;\n        }\n\n        public MyUseProperties UseProperties { get; set; }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Prefabs/MyPrefabKinematic.cs",
    "content": "﻿using MinerWars.AppCode.Game.Entities.Prefabs;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Prefabs;\nusing System.Text;\nusing MinerWars.AppCode.Game.Models;\nusing System;\nusing MinerWars.AppCode.Game.TransparentGeometry.Particles;\nusing MinerWars.AppCode.Physics;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing System.Collections.Generic;\nusing KeenSoftwareHouse.Library.Trace;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Audio;\n\nusing MinerWars.AppCode.Game.Physics;\nusing SysUtils.Utils;\nusing MinerWars.AppCode.Game.Explosions;\nusing MinerWars.AppCode.Game.Voxels;\n\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.Prefabs;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.Gameplay;\nusing MinerWars.AppCode.Game.GUI.Prefabs;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.AppCode.Game.HUD;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing System.Diagnostics;\nusing MinerWars.AppCode.Game.Entities.WayPoints;\nusing KeenSoftwareHouse.Library.Extensions;\nusing MinerWars.CommonLIB.AppCode.Import;\nusing MinerWars.AppCode.Game.Localization;\n\nnamespace MinerWars.AppCode.Game.Entities.SubObjects\n{\n    public enum KinematicPrefabStateEnum\n    {\n        Closing,\n        Opening,\n        Sleeping,\n    };\n\n\n    class MyPrefabKinematic : MyPrefabBase, IMyUseableEntity, IMyHasGuiControl\n    {\n        private const float DETECT_RADIUS = 200f;\n        private static readonly float? DETECTION_ANGLE = 0.6f;\n\n        private MyPrefabKinematicPart[] m_parts;\n\n        MySensor m_sensor;\n        MyPrefabKinematicSensor m_sensorHandler;\n        long m_transformationTimeInMillis; // how long should animation last, thus movement will be interpolated based on this\n        MySoundCue? m_loopSound;\n        MySoundCue? m_startSound;\n        MySoundCue? m_endSound;\n\n        MyGroupMask m_groupMask;\n\n        private List<Tuple<MyWayPoint, MyWayPoint>> m_edges;\n\n        public override bool Enabled\n        {\n            set\n            {\n                base.Enabled = value;\n                UpdateHudAndCloseStatus();\n            }\n        }\n\n        private void UpdateHudAndCloseStatus() \n        {\n            if (Enabled || GetPrefabPartsCount() == 0)\n            {\n                RemoveLockedHud();\n            }\n            // when we disabled doors (lock) we want close them and display health bar\n            else\n            {\n                AddLockedHud();\n                OrderToClose();\n            }\n        }\n\n        private void LoadWaypointEdges() \n        {\n            m_edges.Clear();\n            \n            BoundingBox bb = BoundingBoxHelper.InitialBox;\n            foreach(var part in m_parts)\n            {\n                if(part != null)\n                {\n                    BoundingBoxHelper.AddBBox(part.WorldAABB, ref bb);\n                }\n            }\n\n            m_edges.AddRange(MyWayPointGraph.GetAllEdgesInBox(ref bb));\n        }\n\n        private void UpdateBlockedEdges() \n        {\n            if (IsWorking())\n            {\n                foreach (var edge in m_edges)\n                {\n                    MyWayPoint.RemoveBlockedEdgesForBots(edge);\n                    MyWayPoint.RemoveBlockedEdgesForPlayer(edge);\n                }\n            }\n            else\n            {\n                foreach (var edge in m_edges)\n                {\n                    MyWayPoint.AddBlockedEdgesForBots(edge);\n\n                    if (!IsDestructible)\n                    {\n                        bool isDestructible = false;\n                        foreach (var par in m_parts)\n                        {\n                            if (par != null && par.IsDestructible)\n                            {\n                                isDestructible = true;\n                                break;\n                            }\n                        }\n\n                        if (!isDestructible)\n                        {\n                            MyWayPoint.AddBlockedEdgesForPlayer(edge);\n                        }\n                    }\n                }\n            }\n        }\n\n        public override string GetCorrectDisplayName()\n        {\n            string displayName = base.GetCorrectDisplayName();\n\n            if (displayName == \"Left Door\")\n            {\n                displayName = MyTextsWrapper.Get(MyTextsWrapperEnum.LeftDoor).ToString();\n            }\n\n            if (displayName == \"Right Door\")\n            {\n                displayName = MyTextsWrapper.Get(MyTextsWrapperEnum.RightDoor).ToString();\n            }\n\n            return displayName;\n        }\n\n        private void AddLockedHud() \n        {\n            DisplayOnHud = true;\n            MyHud.ChangeText(this, MyTextsWrapper.Get(MyTextsWrapperEnum.DoorsLocked), MyGuitargetMode.Enemy, 200f, MyHudIndicatorFlagsEnum.SHOW_BORDER_INDICATORS | MyHudIndicatorFlagsEnum.SHOW_DISTANCE | MyHudIndicatorFlagsEnum.SHOW_TEXT | MyHudIndicatorFlagsEnum.SHOW_HEALTH_BARS | MyHudIndicatorFlagsEnum.SHOW_MISSION_MARKER);\n        }\n\n        private void RemoveLockedHud() \n        {\n            MyHud.RemoveText(this);\n        }\n\n        protected override void SetHudMarker()\n        {\n            UpdateHudAndCloseStatus();\n        }\n\n        protected override void DoDamageInternal(float playerDamage, float damage, float empDamage, MyDamageType damageType, MyAmmoType ammoType, MyEntity damageSource, bool justDeactivate)\n        {\n            base.DoDamageInternal(playerDamage, damage, empDamage, damageType, ammoType, damageSource, justDeactivate);\n            if (damage > 0)\n            {\n                OrderOpenAndClose();\n            }\n        }\n\n        public override float GetHUDDamageRatio()\n        {                        \n            float healtRatioTotal = 0f;            \n            foreach (var kinematicPart in Parts) \n            {\n                if (kinematicPart != null)\n                {\n                    healtRatioTotal += kinematicPart.HealthRatio;                    \n                }\n            }\n            return 1f - (healtRatioTotal / ((MyPrefabConfigurationKinematic)m_config).KinematicParts.Count);\n        }\n\n        //public override void  UpdateBeforeSimulation()\n        //{\n        //    base.UpdateBeforeSimulation();\n        //    if (IsWorking()) \n        //    {\n        //        if (m_sensorHandler.GetDetectedEntitiesCount() > 0)\n        //        {\n        //            OrderToOpen();\n        //        }\n        //        else \n        //        {\n        //            OrderToClose();\n        //        }                \n        //    }\n        //    UpdateBlockedEdges();\n        //}\n        \n        protected override void WorkingChanged()\n        {\n            base.WorkingChanged();\n            if (IsWorking()) \n            {\n                if (m_sensorHandler.GetDetectedEntitiesCount() > 0)\n                {\n                    OrderToOpen();\n                }\n                else \n                {\n                    OrderToClose();\n                }                \n            }\n            UpdateBlockedEdges();\n        }\n\n        //private bool m_canOpen = true;\n        //public bool CanOpen \n        //{\n        //    get { return m_canOpen; }\n        //    set\n        //    {\n        //        m_canOpen = value;\n        //        if (value && m_sensorHandler.GetDetectedEntitiesCount() > 0)\n        //        {\n        //            OrderToOpen();\n        //        }\n        //    }\n        //}\n\n        private EventHandler m_onGameLoaded;        \n\n        public MyPrefabKinematic(MyPrefabContainer owner)\n            : base(owner)\n        {\n            m_onGameLoaded = new EventHandler(MyGuiScreenGamePlay_OnGameLoaded);\n            MyGuiScreenGamePlay.OnGameLoaded += m_onGameLoaded;\n            m_parts = new MyPrefabKinematicPart[MyMwcObjectBuilder_PrefabKinematic.MAX_KINEMATIC_PARTS];\n            m_edges = new List<Tuple<MyWayPoint, MyWayPoint>>();\n        }\n\n        void MyGuiScreenGamePlay_OnGameLoaded(object sender, EventArgs e)\n        {            \n            MyGuiScreenGamePlay.OnGameLoaded -= m_onGameLoaded;            \n            LoadWaypointEdges();\n            UpdateBlockedEdges();\n        }        \n\n        protected override void InitPrefab(string displayName, Vector3 relativePosition, Matrix localOrientation, MyMwcObjectBuilder_PrefabBase objectBuilder, MyPrefabConfiguration prefabConfig)\n        {\n            MyPrefabConfigurationKinematic prefabKinematicConfig = (MyPrefabConfigurationKinematic)prefabConfig;\n            MyMwcObjectBuilder_PrefabKinematic kinematicBuilder = objectBuilder as MyMwcObjectBuilder_PrefabKinematic;                        \n\n            MyModel model = MyModels.GetModelOnlyDummies(m_config.ModelLod0Enum);\n\n            for (int i = 0; i < prefabKinematicConfig.KinematicParts.Count; i++)\n            {\n                MyPrefabConfigurationKinematicPart kinematicPart = prefabKinematicConfig.KinematicParts[i];\n                MyModelDummy open, close;\n                if (model.Dummies.TryGetValue(kinematicPart.m_open, out open) && model.Dummies.TryGetValue(kinematicPart.m_close, out close))\n                {\n                    float? kinematicPartHealth = kinematicBuilder.KinematicPartsHealth[i];\n                    float? kinematicPartMaxHealth = kinematicBuilder.KinematicPartsMaxHealth[i];\n                    uint? kinematicPartEntityId = kinematicBuilder.KinematicPartsEntityId[i];\n\n                    // if health is not set or not destroyed, then create part\n                    if (kinematicPartHealth == null || kinematicPartHealth != 0)\n                    {\n                        MyPrefabKinematicPart newPart = new MyPrefabKinematicPart(m_owner);\n                        if (kinematicPartEntityId.HasValue)\n                        {\n                            newPart.EntityId = new MyEntityIdentifier(kinematicPartEntityId.Value);\n                        }\n                        Parts[i] = newPart;\n                        newPart.Init(this, kinematicPart, prefabKinematicConfig.m_openTime, prefabKinematicConfig.m_closeTime, (MyModelsEnum)kinematicPart.m_modelMovingEnum, open.Matrix, close.Matrix, prefabKinematicConfig.MaterialType, prefabKinematicConfig.m_soundLooping, prefabKinematicConfig.m_soundOpening, prefabKinematicConfig.m_soundClosing/*, m_groupMask*/, kinematicPartHealth, kinematicPartMaxHealth, Activated);\n                    }\n                }\n            }                        \n\n            //make handler\n            m_sensorHandler = new MyPrefabKinematicSensor(this);\n            MySphereSensorElement sensorEl = new MySphereSensorElement();\n            sensorEl.Radius = DETECT_RADIUS;\n            sensorEl.LocalPosition = new Vector3(0, 0, 0);\n            sensorEl.DetectRigidBodyTypes = MyConstants.RIGIDBODY_TYPE_SHIP;            \n            sensorEl.SpecialDetectingAngle = DETECTION_ANGLE;\n            MySensorDesc senDesc = new MySensorDesc();\n            senDesc.m_Element = sensorEl;\n            senDesc.m_Matrix = WorldMatrix;\n            senDesc.m_SensorEventHandler = m_sensorHandler;\n            m_sensor = new MySensor();\n            m_sensor.LoadFromDesc(senDesc);\n            MyPhysics.physicsSystem.GetSensorModule().AddSensor(m_sensor);\n\n            GetOwner().UpdateAABB();\n\n            UseProperties = new MyUseProperties(MyUseType.FromHUB | MyUseType.Solo, MyUseType.FromHUB);\n            if (kinematicBuilder.UseProperties == null)\n            {\n                UseProperties.Init(MyUseType.FromHUB, MyUseType.FromHUB, 3, 4000, false);\n            }\n            else\n            {\n                UseProperties.Init(kinematicBuilder.UseProperties);\n            }\n            UpdateHudAndCloseStatus();\n        }\n\n        public override void OnWorldPositionChanged(object source)\n        {\n            if (m_sensor != null)\n            {\n                m_sensor.Matrix = base.WorldMatrix;\n            }\n            base.OnWorldPositionChanged(source);\n        }\n\n        public void OrderToOpen()\n        {\n            if (IsWorking())\n            {\n                foreach (MyPrefabKinematicPart part in Parts)\n                {\n                    if (part != null)\n                    {\n                        part.StartOpening();\n                    }\n                }\n            }\n        }\n\n        public void OrderToClose()\n        {\n            if (IsWorking() || !Enabled)\n            {\n                foreach (MyPrefabKinematicPart part in Parts)\n                {\n                    if (part != null)\n                    {\n                        part.StartClosing();\n                    }\n                }\n            }\n        }\n\n        public void OrderOpenAndClose() \n        {\n            OrderToOpen();\n            if (m_sensorHandler.GetDetectedEntitiesCount() <= 0)\n            {\n                OrderToClose();\n            }\n        }\n\n        public override void Close()\n        {\n            MyGuiScreenGamePlay.OnGameLoaded -= m_onGameLoaded;\n            if (m_sensor != null) \n            {\n                //m_sensor.GetElement().ProxyData = MyElement.PROXY_UNASSIGNED;\n                m_sensor.MarkForClose();\n                MyPhysics.physicsSystem.GetSensorModule().RemoveSensor(m_sensor);\n                m_sensor = null;\n            }\n\n            foreach (var part in Parts)\n            {\n                if (part != null && part.EntityId.HasValue)\n                {\n                    MyEntities.Remove(part);\n                }\n            }\n\n            base.Close();\n        }\n\n\n        public void LoadContent()\n        {\n\n        }\n\n        public void UnloadContent()\n        {\n\n        }                      \n\n        protected override MyMwcObjectBuilder_Base GetObjectBuilderInternal(bool getExactCopy)\n        {\n            MyMwcObjectBuilder_PrefabKinematic objectBuilder = base.GetObjectBuilderInternal(getExactCopy) as MyMwcObjectBuilder_PrefabKinematic;            \n            MyPrefabConfigurationKinematic kinematicConfig = GetConfiguration() as MyPrefabConfigurationKinematic;\n\n            for (int i = 0; i < kinematicConfig.KinematicParts.Count; i++) \n            {\n                // part is destroyed\n                if (Parts[i] == null)\n                {\n                    objectBuilder.KinematicPartsHealth[i] = 0f;\n                    objectBuilder.KinematicPartsMaxHealth[i] = null;\n                    objectBuilder.KinematicPartsEntityId[i] = null; // Won't transfer\n                }\n                else \n                {\n                    objectBuilder.KinematicPartsHealth[i] = Parts[i].Health;\n                    objectBuilder.KinematicPartsMaxHealth[i] = Parts[i].GetMaxHealth();\n                    objectBuilder.KinematicPartsEntityId[i] = MyEntityIdentifier.ToNullableInt(Parts[i].EntityId);\n                }\n            }\n            objectBuilder.UseProperties = UseProperties.GetObjectBuilder();\n\n            return objectBuilder;\n        }        \n\n        public void RemovePart(MyPrefabKinematicPart part)\n        {\n            int partsCount = 0;\n            for (int i = 0; i < MyMwcObjectBuilder_PrefabKinematic.MAX_KINEMATIC_PARTS; i++) \n            {\n                if (Parts[i] == part) \n                {\n                    Parts[i] = null;\n                }\n                if (Parts[i] != null) \n                {\n                    partsCount++;\n                }\n            }\n            if (partsCount == 0) \n            {\n                RemoveLockedHud();\n            }\n        }\n\n        private int GetPrefabPartsCount() \n        {\n            int partsCount = 0;\n            for (int i = 0; i < MyMwcObjectBuilder_PrefabKinematic.MAX_KINEMATIC_PARTS; i++)\n            {                \n                if (Parts[i] != null)\n                {\n                    partsCount++;\n                }\n            }\n            return partsCount;\n        }\n\n        public MyMwcObjectBuilder_PrefabKinematic_TypesEnum PrefabKinematicType\n        {\n            get\n            {\n                return (MyMwcObjectBuilder_PrefabKinematic_TypesEnum)m_prefabId;\n            }\n            set\n            {\n                m_prefabId = (int)value;\n            }\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyPrefabKinematic\";\n        }\n\n        public static bool DRAW_DEBUG_INFORMATION = false;\n\n        private StringBuilder m_debugDrawSb = new StringBuilder();\n        public override bool DebugDraw()\n        {\n            if (!base.DebugDraw()) \n            {\n                return false;\n            }\n\n            if (DRAW_DEBUG_INFORMATION)\n            {\n                m_debugDrawSb.Clear();\n\n                m_debugDrawSb.Append(\"Is working:\");\n                m_debugDrawSb.Append(IsWorking());\n                m_debugDrawSb.AppendLine();\n\n                m_debugDrawSb.Append(\"Enabled:\");\n                m_debugDrawSb.Append(Enabled);\n                m_debugDrawSb.AppendLine();\n\n                m_debugDrawSb.Append(\"Detected entities:\");\n                m_debugDrawSb.AppendInt32(m_sensorHandler.GetDetectedEntitiesCount());\n                m_debugDrawSb.AppendLine();\n\n                m_debugDrawSb.Append(\"Sensor interactions:\");\n                m_debugDrawSb.AppendInt32(m_sensor.m_Interactions.Count);\n                m_debugDrawSb.AppendLine();\n\n                KinematicPrefabStateEnum? state = null;\n                bool? isOpened = null;\n                bool? isClosed = null;\n                foreach (var part in Parts)\n                {\n                    if (part != null)\n                    {\n                        Debug.Assert(state == null || state.Value == part.GetState());\n                        Debug.Assert(isOpened == null || isOpened.Value == part.IsOpened());\n                        Debug.Assert(isClosed == null || isClosed.Value == part.IsClosed());\n                        state = part.GetState();\n                        isOpened = part.IsOpened();\n                        isClosed = part.IsClosed();\n                    }\n                }\n                if (state != null && isOpened != null && isClosed != null)\n                {\n                    m_debugDrawSb.Append(\"State:\");\n                    switch (state.Value)\n                    {\n                        case KinematicPrefabStateEnum.Closing:\n                            m_debugDrawSb.Append(\"Closing\");\n                            break;\n                        case KinematicPrefabStateEnum.Opening:\n                            m_debugDrawSb.Append(\"Opening\");\n                            break;\n                        case KinematicPrefabStateEnum.Sleeping:\n                            m_debugDrawSb.Append(\"Sleeping\");\n                            break;\n                    }\n                    m_debugDrawSb.AppendLine();\n                    m_debugDrawSb.Append(\"IsOpened:\");\n                    m_debugDrawSb.Append(isOpened.Value);\n                    m_debugDrawSb.AppendLine();\n                    m_debugDrawSb.Append(\"IsClosed:\");\n                    m_debugDrawSb.Append(isClosed.Value);                    \n                }\n\n\n                MyDebugDraw.DrawText(WorldVolume.Center, m_debugDrawSb, Color.White, 0.5f);\n\n                float radius = DETECTION_ANGLE != null ? DETECT_RADIUS * 0.5f : DETECT_RADIUS;\n                MyDebugDraw.DrawSphereWireframe(WorldVolume.Center, radius, new Vector3(0f, 1f, 0f), 0.5f);\n                if (DETECTION_ANGLE != null)\n                {\n                    float radius2 = (float)Math.Tan(DETECTION_ANGLE.Value) * DETECT_RADIUS;\n                    Color color = Color.Red;\n                    color.A = 55;\n                    MyDebugDraw.DrawCone(WorldVolume.Center, WorldVolume.Center + WorldMatrix.Forward * DETECT_RADIUS, radius2, color);\n                    MyDebugDraw.DrawCone(WorldVolume.Center, WorldVolume.Center + WorldMatrix.Backward * DETECT_RADIUS, radius2, color);\n                    //MyDebugDraw.DrawSphereWireframe(WorldVolume.Center, DETECT_RADIUS, color.ToVector3(), 0.3f);\n                }\n            }\n\n            return true;\n        }\n\n        #region IMyUseablePrefab\n        public MyGuiControlEntityUse GetGuiControl(IMyGuiControlsParent parent)\n        {\n            return new MyGuiControlPrefabUse(parent, this);\n        }\n\n        public MyEntity GetEntity()\n        {\n            return this;\n        }\n\n        public void Use(MySmallShip useBy)\n        {\n            MyGuiManager.AddScreen(new MyGuiScreenEntityUseSolo(this));\n        }\n\n        public void UseFromHackingTool(MySmallShip useBy, int hackingLevelDifference)\n        {\n            Use(useBy);\n        }\n\n        public bool CanBeUsed(MySmallShip usedBy)\n        {\n            return IsAbleToWork() && (MyFactions.GetFactionsRelation(usedBy, this) == MyFactionRelationEnum.Friend || UseProperties.IsHacked);\n        }\n\n        public bool CanBeHacked(MySmallShip hackedBy)\n        {\n            return IsWorking() && (MyFactions.GetFactionsRelation(hackedBy, this) == MyFactionRelationEnum.Neutral ||\n                MyFactions.GetFactionsRelation(hackedBy, this) == MyFactionRelationEnum.Enemy);\n        }\n\n        public MyUseProperties UseProperties\n        {\n            get;\n            set;\n        }\n\n        public MyPrefabKinematicPart[] Parts\n        {\n            get { return m_parts; }\n        }\n\n        #endregion\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Prefabs/MyPrefabKinematicPart.cs",
    "content": "﻿using System;\nusing System.Text;\nusing MinerWarsMath;\n\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.AppCode.Game.Explosions;\nusing MinerWars.AppCode.Game.Entities.Prefabs;\nusing MinerWars.AppCode.Game.Physics;\nusing MinerWars.AppCode.Game.Models;\nusing MinerWars.AppCode.Game.TransparentGeometry.Particles;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Voxels;\nusing MinerWars.AppCode.Physics;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.AppCode.Game.Prefabs;\nusing MinerWars.AppCode.Game.Render;\n\nnamespace MinerWars.AppCode.Game.Entities.SubObjects\n{\n    class MyPrefabKinematicPart : MyPrefabBase\n    {\n        static readonly float MIN_RADIAL_STATE_TRESHOLD = (float)Math.PI * 0.1f;\n        static readonly float MAX_RADIAL_STATE_TRESHOLD = (float)Math.PI * 0.9f;\n        static readonly float MIN_RADIAL_STATE = 0.0f;\n        static readonly float MAX_RADIAL_STATE = (float)Math.PI;\n        const int WAIT_TIME_TO_CLOSE = 2000;     // in ms\n        const int WAIT_TIME_TO_OPEN = 0;     // in ms\n\n        MyPrefabKinematic m_ownerKinematic;\n\n        // TODO group mask used for avoiding collisions with debris from destroyed other parts. It does not work though.\n        //MyGroupMask m_groupMask;\n\n        Vector3 m_openLocalPosition;\n\n        KinematicPrefabStateEnum m_direction;\n\n        float m_radialState;       //<0;PI>, position  0 == closed, anything between is cos interpolated, PI == opened\n        \n        float m_openTime;\n        float m_closeTime;\n\n        float m_lastUpdateTime;\n        float m_lastStateChangedTime;        \n\n        bool m_looping;\n        bool m_closeAfterFullOpen;\n        \n        bool m_playedCloseSound;\n        bool m_playedOpenSound;\n        // lets play sound for each part\n\n        MySoundCue? m_loopSound = null;\n        MySoundCue? m_startSound = null;\n        MySoundCue? m_endSound = null;\n\n        MySoundCuesEnum? m_loopSoundCue;\n        MySoundCuesEnum? m_startSoundCue;\n        MySoundCuesEnum? m_endSoundCue;        \n\n        public MyPrefabKinematicPart(MyPrefabContainer owner) : base(owner) { }\n\n        public void Init(MyPrefabKinematic owner, MyPrefabConfigurationKinematicPart config, float openTime, float closeTime, MyModelsEnum modelEnum, Matrix open, Matrix close, MyMaterialType matType, MySoundCuesEnum? loopSound, MySoundCuesEnum? startSound, MySoundCuesEnum? endSound/*, MyGroupMask grpMask*/, float? health, float? maxHealth, bool activated)\n        {\n            m_needsUpdate = config.NeedsUpdate;\n            m_openTime = openTime * 1000;\n            m_closeTime = closeTime * 1000;\n            m_radialState = MAX_RADIAL_STATE;// 0;\n            m_config = config;\n\n            m_loopSoundCue = loopSound;\n            m_startSoundCue = startSound;\n            m_endSoundCue = endSound;\n\n            m_openLocalPosition = open.Translation - close.Translation;\n            \n            m_looping = false;\n\n            m_ownerKinematic = owner;\n            m_lastUpdateTime = 0;\n\n            MyMwcObjectBuilder_Base objbuilder = MyMwcObjectBuilder_Base.CreateNewObject(MyMwcObjectBuilderTypeEnum.PrefabKinematicPart, config.PrefabId);\n            objbuilder.EntityId = MyEntityIdentifier.ToNullableInt(EntityId);\n\n            StringBuilder hudLabelTextSb = null;\n\n            base.Init(hudLabelTextSb, modelEnum, null, owner, null, objbuilder);\n            if (maxHealth != null) \n            {\n                MaxHealth = maxHealth.Value;\n            }\n            if (health != null)\n            {\n                Health = health.Value;\n            }\n\n            //LocalMatrix = Matrix.Invert(MyMath.NormalizeMatrix(close));\n            LocalMatrix = Matrix.CreateTranslation(Vector3.Zero);\n\n            InitTrianglePhysics(matType, 1.0f, ModelLod0, null, MyConstants.COLLISION_LAYER_PREFAB_KINEMATIC_PART);\n\n            SetState(KinematicPrefabStateEnum.Sleeping);\n\n            if (activated)\n            {\n                PersistentFlags &= ~MyPersistentEntityFlags.Deactivated;\n            }\n            else\n            {\n                PersistentFlags |= MyPersistentEntityFlags.Deactivated;\n            }\n            //StartClosing();\n        }\n\n        protected override void InitPrefab(string displayName, Vector3 relativePosition, Matrix localOrientation, MyMwcObjectBuilder_PrefabBase objectBuilder, MyPrefabConfiguration prefabConfig)\n        {            \n        }\n\n        protected override void WorkingChanged()\n        {\n            base.WorkingChanged();\n            m_lastUpdateTime = 0;\n        }\n\n        private void UpdateSoundPositions()\n        {\n            if (m_loopSound != null && m_loopSound.Value.IsPlaying)\n                MyAudio.UpdateCuePosition(m_loopSound, m_ownerKinematic.WorldMatrix.Translation, m_ownerKinematic.WorldMatrix.Forward, m_ownerKinematic.WorldMatrix.Up, new Vector3(0, 0, 0));\n            if (m_startSound != null && m_startSound.Value.IsPlaying)\n                MyAudio.UpdateCuePosition(m_startSound, m_ownerKinematic.WorldMatrix.Translation, m_ownerKinematic.WorldMatrix.Forward, m_ownerKinematic.WorldMatrix.Up, new Vector3(0, 0, 0));\n            if (m_endSound != null && m_endSound.Value.IsPlaying)\n                MyAudio.UpdateCuePosition(m_endSound, m_ownerKinematic.WorldMatrix.Translation, m_ownerKinematic.WorldMatrix.Forward, m_ownerKinematic.WorldMatrix.Up, new Vector3(0, 0, 0));\n        }\n\n        public KinematicPrefabStateEnum GetState() \n        {\n            return m_direction;\n        }\n\n        public override void Close()\n        {\n            StopAllSounds();            \n            m_ownerKinematic.RemovePart(this);\n            base.Close();\n        }\n\n        public override bool Draw(MyRenderObject renderObject)\n        {\n            return base.Draw(renderObject);\n        }\n                  /*\n        protected override void Explode()\n        {\n            if (WorldVolumeHr.Radius > MyExplosionsConstants.MIN_OBJECT_SIZE_TO_CAUSE_EXPLOSION_AND_CREATE_DEBRIS)\n            {\n                MyExplosion newExplosion = MyExplosions.AddExplosion();\n                if (newExplosion != null)\n                {\n                    //float radius = MyMwcUtils.GetRandomFloat(MyExplosionsConstants.EXPLOSION_RANDOM_RADIUS_MIN, MyExplosionsConstants.EXPLOSION_RANDOM_RADIUS_MAX);\n                    BoundingSphere explosionSphere = WorldVolumeHr;\n                    explosionSphere.Radius *= m_config.ExplosionRadiusMultiplier;\n                    //explosionSphere.Radius = MathHelper.Max(explosionSphere.Radius, MyExplosionsConstants.EXPLOSION_RANDOM_RADIUS_MIN);\n                    MyVoxelMap voxelMap = MyVoxelMaps.GetOverlappingWithSphere(ref explosionSphere);\n                    MyExplosionDebrisModel.CreateExplosionDebris(ref explosionSphere, MyGroupMask.Empty, this, voxelMap);\n                    newExplosion.Start(0, m_config.ExplosionDamageMultiplier * MyPrefabConstants.VOLUME_DAMAGE_MULTIPLIER * WorldVolumeHr.Radius, 0, m_config.ExplosionType, explosionSphere, MyExplosionsConstants.EXPLOSION_LIFESPAN);\n                }\n            }\n            else\n            {\n                var effect = MyParticlesManager.CreateParticleEffect((int) MyParticleEffectsIDEnum.Explosion_SmallPrefab);\n                var positionInWorldSpace = WorldVolumeHr.Center;\n                effect.WorldMatrix = Matrix.CreateTranslation(positionInWorldSpace);\n            }\n        }           */\n\n        private void StopAllSounds()\n        {\n\n            if (m_loopSound != null && m_loopSound.Value.IsPlaying)\n                m_loopSound.Value.Stop(SharpDX.XACT3.StopFlags.Immediate);\n            if (m_startSound != null && m_startSound.Value.IsPlaying)\n                m_startSound.Value.Stop(SharpDX.XACT3.StopFlags.Immediate);\n            if (m_endSound != null && m_endSound.Value.IsPlaying)\n                m_endSound.Value.Stop(SharpDX.XACT3.StopFlags.Immediate);\n\n            m_loopSound = null;\n            m_endSound = null;\n            m_startSound = null;\n        }\n\n        private void PlayStartSound(bool killOther)\n        {\n\n            if (m_endSound != null && m_endSound.Value.IsPlaying && killOther)\n            {\n                m_endSound.Value.Stop(SharpDX.XACT3.StopFlags.Immediate);\n                m_endSound = null;\n            }\n            if (m_loopSound != null && m_loopSound.Value.IsPlaying && killOther)\n            {\n                m_loopSound.Value.Stop(SharpDX.XACT3.StopFlags.Immediate);\n                m_loopSound = null;\n            }\n            if (m_startSound == null || !m_startSound.Value.IsPlaying)\n                m_startSound = MyAudio.AddCue3D(m_startSoundCue.Value, m_ownerKinematic.WorldMatrix.Translation, m_ownerKinematic.WorldMatrix.Forward, m_ownerKinematic.WorldMatrix.Up, new Vector3(0, 0, 0));\n        }\n\n        private void PlayLoopingSound(bool killOther)\n        {\n            if (m_startSound != null && m_startSound.Value.IsPlaying && killOther)\n            {\n                m_startSound.Value.Stop(SharpDX.XACT3.StopFlags.Immediate);\n                m_startSound = null;\n            }\n            if (m_endSound != null && m_endSound.Value.IsPlaying && killOther)\n            {\n                m_endSound.Value.Stop(SharpDX.XACT3.StopFlags.Immediate);\n                m_endSound = null;\n            }\n            if (m_loopSound == null || !m_loopSound.Value.IsPlaying)\n                m_loopSound = MyAudio.AddCue3D(m_loopSoundCue.Value, m_ownerKinematic.WorldMatrix.Translation, m_ownerKinematic.WorldMatrix.Forward, m_ownerKinematic.WorldMatrix.Up, new Vector3(0, 0, 0));\n        }\n\n        private void PlayEndSound(bool killOther)\n        {\n            if (m_loopSound != null && m_loopSound.Value.IsPlaying && killOther)\n            {\n                m_loopSound.Value.Stop(SharpDX.XACT3.StopFlags.Immediate);\n                m_loopSound = null;\n            }\n            if (m_startSound != null && m_startSound.Value.IsPlaying && killOther)\n            {\n                m_startSound.Value.Stop(SharpDX.XACT3.StopFlags.Immediate);\n                m_startSound = null;\n            }\n            if (m_endSound == null || !m_endSound.Value.IsPlaying)\n                m_endSound = MyAudio.AddCue3D(m_endSoundCue.Value, m_ownerKinematic.WorldMatrix.Translation, m_ownerKinematic.WorldMatrix.Forward, m_ownerKinematic.WorldMatrix.Up, new Vector3(0, 0, 0));\n        }\n\n        public void StartOpening()\n        {\n            SetState(KinematicPrefabStateEnum.Opening);\n            m_lastUpdateTime = time;\n            m_closeAfterFullOpen = false;\n        }\n\n        public void StartClosing()\n        {\n            if (m_direction != KinematicPrefabStateEnum.Opening)\n            {\n                StartClosingNow();\n            }\n            else\n            {\n                m_closeAfterFullOpen = true;\n            }\n        }\n\n        public void StartClosingNow() \n        {\n            if (m_direction != KinematicPrefabStateEnum.Closing)\n            {\n                SetState(KinematicPrefabStateEnum.Closing);\n                m_lastUpdateTime = time;\n                m_closeAfterFullOpen = false;\n            }\n        }\n\n        public void Sleep()\n        {\n            SetState(KinematicPrefabStateEnum.Sleeping);\n            //StopAllSounds();            \n        }\n\n        private void SetState(KinematicPrefabStateEnum state) \n        {\n            m_direction = state;\n            m_lastStateChangedTime = time;\n            RecheckNeedsUpdate();\n        }\n\n        public bool IsClosed() \n        {\n            return m_radialState >= MAX_RADIAL_STATE;\n        }\n\n        public bool IsOpened() \n        {\n            return m_radialState <= MIN_RADIAL_STATE;\n        }\n\n        private float time;\n        protected override void UpdatePrefabAfterSimulation()\n        {\n            time += MyConstants.PHYSICS_STEP_SIZE_IN_MILLISECONDS;\n\n            float speed = 0; //(float)Math.PI / (float)m_periodTime;\n            float deltaT = time - m_lastUpdateTime;\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"UpdateSoundPositions\");\n            UpdateSoundPositions();\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"PlayStartSound\");\n            if (m_direction == KinematicPrefabStateEnum.Opening && time - m_lastStateChangedTime >= WAIT_TIME_TO_OPEN)\n            {\n                speed = (float)Math.PI / (float)m_openTime;\n\n                if (m_loopSoundCue != null && m_startSoundCue != null && m_endSoundCue != null)\n                {\n                    if (MAX_RADIAL_STATE > m_radialState && m_radialState > MIN_RADIAL_STATE_TRESHOLD)\n                    {\n                        PlayStartSound(true);\n                        //play starting sound\n                    }\n                    if (MAX_RADIAL_STATE_TRESHOLD > m_radialState && m_radialState > MIN_RADIAL_STATE_TRESHOLD)\n                    {\n                        PlayLoopingSound(true);\n                        //play looping sound\n                    }\n                    if (MIN_RADIAL_STATE_TRESHOLD > m_radialState && m_radialState > MIN_RADIAL_STATE)\n                    {\n                        PlayEndSound(true);\n                        //end sound\n                    }\n                }\n                else if (m_startSoundCue != null)\n                {\n                    if (!m_playedOpenSound)\n                    {\n                        PlayStartSound(true);\n                        m_playedOpenSound = true;\n                    }\n                }\n                m_playedCloseSound = false;\n                m_radialState -= deltaT * speed;\n\n                if (IsOpened())\n                {                                              \n                    m_radialState = MIN_RADIAL_STATE;\n                    if (m_closeAfterFullOpen)\n                    {\n                        StartClosingNow();\n                    }\n                    else \n                    {\n                        Sleep();\n                    }\n                }\n            }\n            if (m_direction == KinematicPrefabStateEnum.Closing && time - m_lastStateChangedTime >= WAIT_TIME_TO_CLOSE)\n            {\n                speed = (float)Math.PI / (float)m_closeTime;\n                if (m_loopSoundCue != null && m_startSoundCue != null && m_endSoundCue != null)\n                {\n                    if (MIN_RADIAL_STATE < m_radialState && m_radialState < MIN_RADIAL_STATE_TRESHOLD)\n                    {\n                        PlayStartSound(true);\n                        //play starting sound\n                    }\n                    if (MIN_RADIAL_STATE_TRESHOLD < m_radialState && m_radialState < MAX_RADIAL_STATE_TRESHOLD)\n                    {\n                        PlayLoopingSound(true);\n                        //play looping sound\n                    }\n                    if (MAX_RADIAL_STATE_TRESHOLD < m_radialState && m_radialState < MAX_RADIAL_STATE)\n                    {\n                        PlayEndSound(true);\n                        //end sound\n                    }\n                }\n                else if (m_endSoundCue != null)\n                {\n                    if (!m_playedCloseSound)\n                    {\n                        PlayEndSound(true);\n                        m_playedCloseSound = true;\n                    }\n                }\n                m_playedOpenSound = false;\n                m_radialState += deltaT * speed;\n\n                if (IsClosed())\n                {\n                    Sleep();\n                    m_radialState = MAX_RADIAL_STATE;\n                }\n            }\n\n            \n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"others\");\n\n            if (m_looping && m_direction == KinematicPrefabStateEnum.Closing && m_radialState >= MAX_RADIAL_STATE)\n            {\n                StartOpening();\n            }\n\n            if (m_looping && m_direction == KinematicPrefabStateEnum.Opening && m_radialState <= MIN_RADIAL_STATE)\n            {\n                StartClosing();\n            }\n\n            m_radialState = MathHelper.Clamp(m_radialState, MIN_RADIAL_STATE, MAX_RADIAL_STATE);\n            m_lastUpdateTime = time;\n\n            float relPos = (1 + (float)Math.Cos(m_radialState)) / 2.0f;\n            Vector3 interpolatedPosition = m_openLocalPosition * relPos;\n            this.LocalMatrix = Matrix.CreateTranslation(interpolatedPosition);\n\n            base.UpdatePrefabAfterSimulation();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        protected override void DoDamageInternal(float playerDamage, float damage, float empDamage, MyDamageType damageType, MyAmmoType ammoType, MyEntity damageSource, bool justDeactivate)\n        {\n            if (damage > 0)\n            {\n                m_ownerKinematic.OrderOpenAndClose();\n            }\n            if (m_ownerKinematic.IsDestructible)\n            {\n                if (((MyPrefabConfigurationKinematicPart)m_config).m_damageType == DamageTypesEnum.SHARE_WITH_PARENT)\n                {\n                    m_ownerKinematic.DoDamage(playerDamage, damage, empDamage, damageType, ammoType, damageSource);\n                    return;\n                }\n\n                base.DoDamageInternal(playerDamage, damage, empDamage, damageType, ammoType, damageSource, justDeactivate);\n            }\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyPrefabKinematicPart\";\n        }\n\n        public override bool IsWorking()\n        {\n            return (m_ownerKinematic.IsWorking() || !m_ownerKinematic.Enabled) && m_direction != KinematicPrefabStateEnum.Sleeping;\n        }\n\n        protected override bool PrefabNeedsUpdateNow\n        {\n            get\n            {\n                return IsWorking();\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Prefabs/MyPrefabKinematicPartBase.cs",
    "content": "﻿using System;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Models;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.AppCode.Physics;\nusing MinerWars.AppCode.Game.Utils;\n\n\nnamespace MinerWars.AppCode.Game.Prefabs\n{\n    abstract class MyPrefabKinematicPartBase : MyPrefabBase\n    {\n        protected float m_kinematicStart = 0.0f;     // in sec\n        protected float m_kinematicEnd = 0.0f;       // in sec\n\n        protected Matrix m_kinematicLocalMatrix;\n        protected float m_kinematicVelocityMax;\n        MyPrefabBase m_kinematicPartOwner;\n\n        protected bool m_on;\n\n        protected MySoundCue? m_loopSound = null;\n        protected MySoundCue? m_loopDamagedSound = null;\n        protected MySoundCue? m_startSound = null;\n        protected MySoundCue? m_endSound = null;\n\n        protected MySoundCuesEnum? m_loopSoundCue;\n        protected MySoundCuesEnum? m_loopDamagedSoundCue;\n        protected MySoundCuesEnum? m_startSoundCue;\n        protected MySoundCuesEnum? m_endSoundCue;\n\n        protected int m_lastUpdate;\n        private int m_time;\n\n        public MyPrefabKinematicPartBase(MyPrefabContainer owner)\n            : base(owner)\n        {\n            Flags |= EntityFlags.NeedsId;\n        }\n\n        public void Init(MyPrefabBase kinematicPartOwner, MyMwcObjectBuilderTypeEnum prefabKinematicPartBuilderType, int? prefabKinematicPartBuilderId, MyModelsEnum modelEnum, MyMaterialType materialType, Matrix kinematicLocalMatrix, float kinematicVelocityMax, MySoundCuesEnum? loopSound, MySoundCuesEnum? loopDamagedSound, MySoundCuesEnum? startSound, MySoundCuesEnum? endSound, float kinematicStart, float kinematicEnd) \n        {\n            m_needsUpdate = true;\n            m_kinematicPartOwner = kinematicPartOwner;                        \n            m_kinematicLocalMatrix = kinematicLocalMatrix;\n            m_kinematicVelocityMax = kinematicVelocityMax;            \n            m_kinematicStart = kinematicStart;\n            m_kinematicEnd = kinematicEnd;\n\n            m_loopSoundCue = loopSound;\n            m_loopDamagedSoundCue = loopDamagedSound;\n            m_startSoundCue = startSound;\n            m_endSoundCue = endSound;\n\n            MyMwcObjectBuilder_Base objbuilder = MyMwcObjectBuilder_Base.CreateNewObject(prefabKinematicPartBuilderType, prefabKinematicPartBuilderId);\n\n            m_config = m_kinematicPartOwner.GetConfiguration();\n            base.Init(null, modelEnum, null, kinematicPartOwner, null, objbuilder);            \n            LocalMatrix = Matrix.Identity;\n\n            MaterialIndex = m_kinematicPartOwner.MaterialIndex;\n\n            \n            //InitTrianglePhysics(materialType, 1.0f, ModelLod0, null, MyConstants.COLLISION_LAYER_PREFAB_KINEMATIC_PART);\n            InitBoxPhysics(materialType, ModelLod0, 100, 0, MyConstants.COLLISION_LAYER_PREFAB_KINEMATIC_PART, RigidBodyFlag.RBF_RBO_STATIC);\n            Physics.Enabled = true;\n            \n            m_kinematicPartOwner.OnPositionChanged += OwnerPositionChanged;\n        }\n\n        void OwnerPositionChanged(object sender, EventArgs eventArgs)\n        {\n            if (m_loopSound != null && m_loopSound.Value.IsPlaying)\n            {\n                MyAudio.UpdateCuePosition(m_loopSound, m_kinematicPartOwner.WorldMatrix.Translation, Vector3.Forward, Vector3.Forward, Vector3.Zero);\n            }\n\n            if (m_loopDamagedSound != null && m_loopDamagedSound.Value.IsPlaying)\n            {\n                MyAudio.UpdateCuePosition(m_loopDamagedSound, m_kinematicPartOwner.WorldMatrix.Translation, Vector3.Forward, Vector3.Forward, Vector3.Zero);\n            }\n        }\n\n        protected override void SetHudMarker() \n        {\n        }\n\n        public bool On \n        {\n            get { return m_on; }\n            set \n            { \n                m_on = value;\n                m_lastUpdate = m_time;\n                RecheckNeedsUpdate();\n            }\n        }\n\n        protected float KinematicVelocityMaxAbs \n        {\n            get { return Math.Abs(m_kinematicVelocityMax); }\n        }\n\n        protected abstract bool IsKinematicActive();\n\n        protected abstract void UpdateAfterSimulationKinematic(float dt);\n\n        protected override void UpdatePrefabAfterSimulation()\n        {\n            m_time += MyConstants.PHYSICS_STEP_SIZE_IN_MILLISECONDS;\n\n            float dt = (m_time - m_lastUpdate) / 1000f;                        \n            UpdateAfterSimulationKinematic(dt);\n            m_lastUpdate = m_time;\n\n            base.UpdatePrefabAfterSimulation();\n        }\n\n        protected void StopKinematicSounds(MySoundCue? except = null)\n        {\n            StopSound(ref m_startSound, except);\n            StopSound(ref m_loopSound, except);\n            StopSound(ref m_loopDamagedSound, except);\n            StopSound(ref m_endSound, except);\n        }\n\n        protected void StopSound(ref MySoundCue? soundToStop, MySoundCue? except) \n        {\n            bool stopSound = soundToStop != null && (except == null || except.Value.IsSame(soundToStop.Value));\n            if (stopSound) \n            {\n                if (soundToStop.Value.IsPlaying) \n                {\n                    soundToStop.Value.Stop(SharpDX.XACT3.StopFlags.Immediate);                    \n                }\n                soundToStop = null;\n            }\n        }\n\n        protected void PlayKinematicStartSound()\n        {\n            if (m_startSound == null || !m_startSound.Value.IsPlaying)\n            {\n                if (m_startSoundCue.HasValue)\n                {\n                    m_startSound = MyAudio.AddCue3D(m_startSoundCue.Value, m_kinematicPartOwner.WorldMatrix.Translation, m_kinematicPartOwner.WorldMatrix.Forward, m_kinematicPartOwner.WorldMatrix.Up, new Vector3(0, 0, 0));\n                }\n            }\n            StopKinematicSounds(m_startSound);\n        }\n\n        bool m_starting;\n        bool m_playing;\n\n        protected void PlayKinematicLoopingSound()\n        {\n            if (m_kinematicPartOwner.HealthRatio > MyPrefabConstants.DAMAGED_HEALTH || !HasSoundForDamagedState)\n            {\n                PlayLoopSound(ref m_loopSound, m_loopSoundCue);\n                StopKinematicSounds(m_loopSound);\n                MyAudio.UpdateCuePosition(m_loopSound, this.GetPosition(), Vector3.Forward, Vector3.Up, Vector3.Zero);\n            }\n            else\n            {\n                PlayLoopSound(ref m_loopDamagedSound, m_loopDamagedSoundCue);\n                StopKinematicSounds(m_loopDamagedSound);\n                MyAudio.UpdateCuePosition(m_loopSound, this.GetPosition(), Vector3.Forward, Vector3.Up, Vector3.Zero);\n            }\n        }\n\n        bool HasSoundForDamagedState\n        {\n            get { return m_loopDamagedSoundCue != null; }\n        }\n\n        void PlayLoopSound(ref MySoundCue? sound, MySoundCuesEnum? soundCue)\n        {\n            if (soundCue != null)\n            {\n                if (m_starting && sound.HasValue && sound.Value.IsPlaying)\n                {\n                    m_starting = false;\n                    m_playing = true;\n                }\n                if (sound == null || (m_playing && !sound.Value.IsPlaying))\n                {\n                    m_playing = false;\n\n                    sound = MyAudio.AddCue3D(\n                        soundCue.Value,\n                        m_kinematicPartOwner.WorldMatrix.Translation,\n                        Vector3.Forward,\n                        Vector3.Forward,\n                        Vector3.Zero);\n\n                    m_starting = sound != null;\n                }\n            }\n        }\n\n        protected void PlayKinematicEndSound()\n        {\n            if (m_endSound == null || !m_endSound.Value.IsPlaying)\n            {\n                if (m_endSoundCue.HasValue)\n                {\n                    m_endSound = MyAudio.AddCue3D(m_endSoundCue.Value, m_kinematicPartOwner.WorldMatrix.Translation, m_kinematicPartOwner.WorldMatrix.Forward, m_kinematicPartOwner.WorldMatrix.Up, new Vector3(0, 0, 0));\n                }\n            }\n            StopKinematicSounds(m_endSound);\n        }        \n\n        public override void Close()\n        {\n            StopKinematicSounds();\n            m_kinematicPartOwner.RemoveKinematicPart(this);\n            base.Close();\n        }\n\n        protected override void DoDamageInternal(float playerDamage, float damage, float empDamage, MyDamageType damageType, MyAmmoType ammoType, MyEntity damageSource, bool justDeactivate)\n        {\n            if (Parent != null) //Because in objects got for explosion damage can be parent and children together\n            {\n                Parent.DoDamage(playerDamage, damage, empDamage, damageType, ammoType, damageSource, justDeactivate);\n            }\n        }\n\n        public override bool IsWorking()\n        {\n            return IsKinematicActive() || On;\n        }\n\n        protected override bool PrefabNeedsUpdateNow\n        {\n            get\n            {\n                return IsWorking();\n            }\n        }\n\n        public override MyEntity GetBaseEntity()\n        {\n            return m_kinematicPartOwner;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Prefabs/MyPrefabKinematicRotating.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Managers.EntityManager.Entities;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.AppCode.Physics;\nusing MinerWars.AppCode.Game.Models;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Managers.PhysicsManager.Physics;\nusing MinerWarsCustomContentImporters;\n\nnamespace MinerWars.AppCode.Game.Prefabs\n{\n    class MyPrefabKinematicRotating : MyPrefabBase\n    {\n        private List<MyPrefabKinematicRotatingPart> m_parts;\n\n        //private bool m_on;\n\n        //public bool On \n        //{\n        //    get { return m_on; }\n        //    set \n        //    {\n        //        m_on = value;\n        //        foreach (MyPrefabKinematicRotatingPart part in m_parts) \n        //        {\n        //            part.On = value;\n        //        }\n        //    }\n        //}\n\n        protected override void EnabledChanged()\n        {\n            base.EnabledChanged();\n            foreach (MyPrefabKinematicRotatingPart part in m_parts)\n            {\n                part.On = Enabled;\n            }\n        }\n\n        public MyPrefabKinematicRotating(MyPrefabContainer owner) \n            : base(owner)\n        {\n            m_parts = new List<MyPrefabKinematicRotatingPart>();\n        }\n\n        public override void Init(string displayName, Microsoft.Xna.Framework.Vector3 relativePosition, Microsoft.Xna.Framework.Matrix localOrientation, MyMwcObjectBuilder_PrefabBase objectBuilder, MyPrefabConfiguration prefabConfig)\n        {                        \n            m_config = prefabConfig;\n            MyPrefabConfigurationKinematicRotating config = (MyPrefabConfigurationKinematicRotating)prefabConfig;                        \n\n            base.Init(displayName, relativePosition, localOrientation, objectBuilder, prefabConfig);\n            Physics.RemoveAllElements();                                         \n\n            // create the box\n            MyPhysicsObjects physobj = MyPhysics.physicsSystem.GetPhysicsObjects();\n            MyRBTriangleMeshElementDesc trianglemeshDesc = physobj.GetRBTriangleMeshElementDesc();\n\n            trianglemeshDesc.SetToDefault();\n            trianglemeshDesc.m_Model = ModelLod0;\n            trianglemeshDesc.m_RBMaterial = MyMaterialsConstants.GetMaterialProperties(config.MaterialType).PhysicsMaterial; ;\n\n\n            MyRBTriangleMeshElement trEl = (MyRBTriangleMeshElement)physobj.CreateRBElement(trianglemeshDesc);\n\n            this.Physics = new MyPhysicsBody(this, 1.0f, RigidBodyFlag.RBF_RBO_STATIC) { MaterialType = config.MaterialType };\n            this.Physics.Enabled = true;            \n            this.Physics.CollisionLayer = MyConstants.COLLISION_LAYER_PREFAB_KINEMATIC;\n            this.Physics.AddElement(trEl, true);\n\n            MyModel model = MyModels.GetModelOnlyDummies(m_config.ModelLod0Enum);\n\n            foreach (var dummyKVP in model.Dummies) \n            {\n                if (dummyKVP.Key.StartsWith(\"Dummy\")) \n                {\n                    MyModelDummy dummy = dummyKVP.Value;\n                    MyModelsEnum rotatingPartModel = MyModels.GetModelEnumByAssetName(dummy.CustomData[\"LINKEDMODEL\"].ToString());\n                    MyPrefabKinematicRotatingPart rotatingPart = new MyPrefabKinematicRotatingPart(this.GetOwner());\n                    rotatingPart.Init(this, rotatingPartModel, config.MaterialType, dummy.Matrix, config.RotatingVelocity, true, config.SoundLooping, config.SoundOpening, config.SoundClosing);\n                    m_parts.Add(rotatingPart);\n                }\n            }\n            \n            AppCode.Physics.MyPhysics.physicsSystem.GetRigidBodyModule().EnableCollisionInLayers(MyConstants.COLLISION_LAYER_PREFAB_KINEMATIC, MyConstants.COLLISION_LAYER_MISSILE, true);\n            AppCode.Physics.MyPhysics.physicsSystem.GetRigidBodyModule().EnableCollisionInLayers(MyConstants.COLLISION_LAYER_PREFAB_KINEMATIC, MyConstants.COLLISION_LAYER_ALL, true);\n            AppCode.Physics.MyPhysics.physicsSystem.GetRigidBodyModule().EnableCollisionInLayers(MyConstants.COLLISION_LAYER_PREFAB_KINEMATIC, MyConstants.COLLISION_LAYER_MODEL_DEBRIS, true);\n            AppCode.Physics.MyPhysics.physicsSystem.GetRigidBodyModule().EnableCollisionInLayers(MyConstants.COLLISION_LAYER_PREFAB_KINEMATIC, MyConstants.COLLISION_LAYER_VOXEL_DEBRIS, true);\n            AppCode.Physics.MyPhysics.physicsSystem.GetRigidBodyModule().EnableCollisionInLayers(MyConstants.COLLISION_LAYER_PREFAB_KINEMATIC, MyConstants.COLLISION_LAYER_PREFAB_KINEMATIC_PART, false);                        \n\n            NeedsUpdate = false;\n            EnabledChanged();\n            //Enabled = true;\n        }\n\n        public void RemovePart(MyPrefabKinematicRotatingPart part) \n        {\n            m_parts.Remove(part);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Prefabs/MyPrefabKinematicRotatingPart.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Models;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.AppCode.Physics;\nusing MinerWars.AppCode.Game.Physics;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.Prefabs;\n\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Managers.Session;\n\nnamespace MinerWars.AppCode.Game.Prefabs\n{\n    class MyPrefabKinematicRotatingPart : MyPrefabKinematicPartBase\n    {        \n        private float m_rotatingVelocity;\n        private float m_rotatingAngle;\n        private Vector3 m_rotationVector;\n\n        private const float SoundDistanceSquared = 650 * 650;\n\n        public MyPrefabKinematicRotatingPart(MyPrefabContainer owner)\n            : base(owner)\n        {\n        \n        }\n\n        public void Init(MyPrefabBase rotatingOwner, MyModelsEnum modelEnum, MyMaterialType matType, Matrix rotatingLocal, float rotatingVelocityMax, MySoundCuesEnum? loopSound, MySoundCuesEnum? loopDamagedSound, MySoundCuesEnum? startSound, MySoundCuesEnum? endSound, Vector3 rotationVector, bool activated) \n        {\n            m_rotationVector = rotationVector;\n            base.Init(rotatingOwner, MyMwcObjectBuilderTypeEnum.PrefabKinematicRotatingPart, (int)MyMwcObjectBuilder_PrefabKinematicRotatingPart_TypesEnum.DEFAULT,\n                modelEnum, matType, rotatingLocal, rotatingVelocityMax, loopSound, loopDamagedSound, startSound, endSound, 1f, 1f);\n            if (activated)\n            {\n                PersistentFlags &= ~MyPersistentEntityFlags.Deactivated;\n            }\n            else \n            {\n                PersistentFlags |= MyPersistentEntityFlags.Deactivated;\n            }\n        }\n\n        protected override bool IsKinematicActive()\n        {\n            return RotatingVelocityAbs > 0f;\n        }\n\n        protected float RotatingVelocityAbs\n        {\n            get { return Math.Abs(m_rotatingVelocity); }\n        }\n\n        protected override void UpdateAfterSimulationKinematic(float dt)\n        {\n            float previousVelocity = m_rotatingVelocity;\n\n            if (On)\n            {\n                m_rotatingVelocity = m_rotatingVelocity + (m_kinematicVelocityMax / m_kinematicStart) * dt;\n            }\n            else\n            {\n                m_rotatingVelocity = m_rotatingVelocity - (m_kinematicVelocityMax / m_kinematicEnd) * dt;\n            }\n            if (m_kinematicVelocityMax >= 0f)\n            {\n                m_rotatingVelocity = MathHelper.Clamp(m_rotatingVelocity, 0f, m_kinematicVelocityMax);\n            }\n            else \n            {\n                m_rotatingVelocity = MathHelper.Clamp(m_rotatingVelocity, m_kinematicVelocityMax, 0f);\n            }\n            m_rotatingAngle += m_rotatingVelocity * dt;\n            \n            if (Math.Abs(m_rotatingAngle) > Math.PI * 2)\n            {\n                m_rotatingAngle = 0f;\n            }\n\n            if (previousVelocity == 0f && RotatingVelocityAbs > 0f)\n            {\n                PlayKinematicStartSound();\n            }\n            else if (previousVelocity == m_kinematicVelocityMax && RotatingVelocityAbs < KinematicVelocityMaxAbs)\n            {\n                PlayKinematicEndSound();\n            }\n            else if (m_rotatingVelocity == m_kinematicVelocityMax)\n            {\n                if (MySession.PlayerShip != null && (Vector3.DistanceSquared(MySession.PlayerShip.GetPosition(), this.m_owner.GetPosition()) < SoundDistanceSquared))\n                {\n                    PlayKinematicLoopingSound();\n                }\n                else\n                {\n                    StopKinematicSounds();\n                }\n                \n            }\n\n            if (RotatingVelocityAbs > 0f)\n            {\n                Matrix rotMatrix = Matrix.CreateFromAxisAngle(m_rotationVector, m_rotatingAngle);\n                Matrix tranMatrix = Matrix.CreateTranslation(-m_kinematicLocalMatrix.Translation);                \n                Matrix localMatrix = Matrix.Multiply(tranMatrix, rotMatrix);\n                localMatrix.Translation += m_kinematicLocalMatrix.Translation;\n                LocalMatrix = localMatrix;\n            } \n        }                \n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Prefabs/MyPrefabKinematicSensor.cs",
    "content": "﻿using MinerWars.AppCode.Physics;\nusing System.Diagnostics;\nusing MinerWars.AppCode.Game.Physics;\n\nnamespace MinerWars.AppCode.Game.Entities.SubObjects\n{\n    class MyPrefabKinematicSensor : IMySensorEventHandler\n    {\n        int m_counter = 0;\n        MyPrefabKinematic m_owner;\n\n        /// <summary>\n        /// Called when rigid body enters sensor.\n        /// </summary>\n        /// <param name=\"rbo\">Rigid body that entered.</param>\n        public void OnEnter(MySensor sensor, MyRigidBody rbo, MyRBElement rbElement)\n        {\n            //smallship\n            var userData = rbo.m_UserData;\n            var physicsBody = userData as MyPhysicsBody;\n            if (physicsBody != null && physicsBody.Entity is MySmallShip)\n            {\n                m_counter++;\n                if (m_counter > 0)\n                    m_owner.OrderToOpen();\n            }\n        }\n\n        /// <summary>\n        /// Called when rigid body leaves sensor.\n        /// </summary>\n        /// <param name=\"rbo\">Rigid body that left.</param>\n        public void OnLeave(MySensor sensor, MyRigidBody rbo, MyRBElement rbElement)\n        {\n            ////TODO: Temporary solution - there must not be rbo==null, fix the error and change to assert\n            //if (rbo == null)\n            //    return;\n            Debug.Assert(rbo != null);\n            //smallship\n            var userData = rbo.m_UserData;\n            var physicsBody = userData as MyPhysicsBody;\n            if (physicsBody != null && physicsBody.Entity is MySmallShip)\n            {\n                m_counter--;\n                if (m_counter <= 0)\n                    m_owner.OrderToClose();\n            }\n        }\n\n        public MyPrefabKinematicSensor(MyPrefabKinematic owner)\n        {\n            m_owner = owner;\n            m_counter = 0;\n        }\n\n        public int GetDetectedEntitiesCount()\n        {\n            return m_counter;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Prefabs/MyPrefabLamp.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Lights;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.Utils;\n\nnamespace MinerWars.AppCode.Game.Prefabs\n{\n    class MyPrefabLamp\n    {\n        const float BLIC_DURATON_IN_MILISECONDS = 30.0f;\n\n        public Vector3 Position;\n        public readonly float RadiusMin;\n        public readonly float RadiusMax;\n        public readonly int TimerForBlic;\n        public readonly MyLight Light;\n\n        public MyPrefabLamp(Vector3 position, float radiusMin, float radiusMax, int timerForBlic)\n        {\n            Position = position;\n            RadiusMin = radiusMin;\n            RadiusMax = radiusMax;\n            TimerForBlic = timerForBlic;\n            Light = MyLights.AddLight();\n            Light.Start(MyLight.LightTypeEnum.PointLight, position, Vector4.One, 1, radiusMin);\n            Light.Intensity = 1;\n            Light.LightOn = true;\n        }\n\n        public void Draw()\n        {\n            Vector3 dir = MyMwcUtils.Normalize(MyCamera.Position - Position);\n\n            float timeBlic = MyMinerGame.TotalGamePlayTimeInMilliseconds % TimerForBlic;\n            if (timeBlic > BLIC_DURATON_IN_MILISECONDS) timeBlic = TimerForBlic - timeBlic;\n            timeBlic = MathHelper.Clamp(1 - timeBlic / BLIC_DURATON_IN_MILISECONDS, 0, 1);\n\n            float radius = MathHelper.Lerp(RadiusMin, RadiusMax, timeBlic);\n\n            MyTransparentGeometry.AddPointBillboard(MyTransparentMaterialEnum.ReflectorGlareAlphaBlended, Vector4.One, Position + dir, radius, 0);\n            Light.Range = radius * 4;\n        }\n\n        public void Close()\n        {\n            MyLights.RemoveLight(Light);\n        }\n\n        internal void MoveTo(Vector3 position)\n        {\n            Position = position;\n            Light.SetPosition(position);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Prefabs/MyPrefabLargeShip.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing MinerWarsMath;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Lights;\nusing MinerWars.AppCode.Game.Entities.Prefabs;\nusing MinerWars.AppCode.Game.Entities.Tools;\nusing MinerWars.AppCode.Game.Models;\nusing MinerWars.AppCode.Game.Prefabs;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.Prefabs;\nusing MinerWars.CommonLIB.AppCode.Utils;\n\nusing MinerWars.AppCode.Game.Gameplay;\nusing MinerWars.AppCode.Game.Localization;\nusing System.Text;\nusing MinerWars.AppCode.Game.Inventory;\nusing MinerWars.AppCode.Game.HUD;\nusing MinerWars.AppCode.Game.Render;\nusing MinerWars.AppCode.Game.Audio;\n\nnamespace MinerWars.AppCode.Game.Entities.Prefabs\n{\n    class MyPrefabLargeShip : MyPrefabBase\n    {\n        private MyNanoRepairToolEntity m_nanoRepairTool;\n\n        public MyPrefabLargeShip(MyPrefabContainer owner) : \n            base(owner) { }\n        \n        public override void Init(string hudLabelText, Vector3 relativePosition, Matrix localOrientation, MyMwcObjectBuilder_PrefabBase objectBuilder, MyPrefabConfiguration prefabConfig)\n        {\n            MyMwcObjectBuilder_PrefabLargeShip objectBuilderLargeShip = objectBuilder as MyMwcObjectBuilder_PrefabLargeShip;            \n            \n            m_owner.Inventory.OnInventoryContentChange += OnInventoryContentChanged;\n\n            Name = objectBuilderLargeShip.Name;\n\n            base.Init(Name, relativePosition, localOrientation, objectBuilder, prefabConfig);\n        }\n\n        protected override void InitPrefab(string displayName, Vector3 relativePosition, Matrix localOrientation, MyMwcObjectBuilder_PrefabBase objectBuilder, MyPrefabConfiguration prefabConfig)\n        {\n        }\n\n        public override void Close()\n        {\n            base.Close();\n            m_owner.Inventory.OnInventoryContentChange -= OnInventoryContentChanged;\n        }\n\n        protected override MyMwcObjectBuilder_Base GetObjectBuilderInternal(bool getExactCopy)\n        {\n            MyMwcObjectBuilder_PrefabLargeShip objectBuilder = base.GetObjectBuilderInternal(getExactCopy) as MyMwcObjectBuilder_PrefabLargeShip;\n            \n            objectBuilder.Name = Name;\n\n            return objectBuilder;\n        }\n\n        public override bool Draw(MyRenderObject renderObject)\n        {\n            if (!base.Draw(renderObject))\n                return false;            \n\n            return true;\n        }\n\n        private void OnInventoryContentChanged(MyInventory sender)\n        {\n            if (sender.Contains(MyMwcObjectBuilderTypeEnum.SmallShip_Tool, (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.NANO_REPAIR_TOOL))\n            {\n                if (m_nanoRepairTool == null)\n                {\n                    m_nanoRepairTool = new MyNanoRepairToolEntity(this);                    \n                }\n            }\n            else\n            {\n                m_nanoRepairTool = null;                \n            }\n            RecheckNeedsUpdate();\n        }\n\n        protected override void UpdatePrefabBeforeSimulation()\n        {\n            base.UpdatePrefabBeforeSimulation();\n\n            if (m_nanoRepairTool != null)\n            {\n                m_nanoRepairTool.Use();\n            }\n        }\n\n        public override void UpdateAfterSimulation()\n        {\n            base.UpdateAfterSimulation();\n        }\n\n        public MyMwcObjectBuilder_PrefabLargeShip_TypesEnum PrefabLargeShipType\n        {\n            get\n            {\n                return (MyMwcObjectBuilder_PrefabLargeShip_TypesEnum)m_prefabId;\n            }\n            set\n            {\n                m_prefabId = (int)value;\n            }\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyPrefabLargeShip\";\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Prefabs/MyPrefabLargeWeapon.cs",
    "content": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Decals;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Utils;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Physics;\nusing MinerWarsMath;\n\n\nnamespace MinerWars.AppCode.Game.Entities.SubObjects\n{\n    using Audio;\n    using CommonLIB.AppCode.ObjectBuilders.SubObjects;\n    using GUI;\n    using MinerWarsMath;\n    using Models;\n    using Physics;\n    using Prefabs;\n    using Utils;\n    using MinerWars.AppCode.Game.Prefabs;\n    using MinerWars.AppCode.Game.Entities;\n    using CommonLIB.AppCode.ObjectBuilders;\n    using CommonLIB.AppCode.ObjectBuilders.SubObjects.Prefabs;\n    using CommonLIB.AppCode.Utils;\n    using System;\n    using Render;\n    using System.Text;\n    using SubObjects;\n    using MinerWars.AppCode.Game.Entities.Weapons;\n    using MinerWars.AppCode.Game.Explosions;\n    using MinerWars.AppCode.Game.Voxels;\n    using MinerWars.AppCode.Game.GUI.Core;\n    using MinerWars.AppCode.Game.GUI.Prefabs;\n    using MinerWars.AppCode.Game.World.Global;\n    using MinerWars.AppCode.Game.Managers.Session;\n    using MinerWars.AppCode.Game.Entities.EntityDetector;\n    using MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\n    using MinerWars.AppCode.Game.HUD;\n    using MinerWars.AppCode.Game.Gameplay;\nusing MinerWars.AppCode.Game.Audio.Dialogues;\n    using MinerWars.AppCode.Physics.Collisions;\n    using MinerWars.AppCode.Game.Localization;\n\n    class MyPrefabLargeWeapon : MyPrefabBase, IMyUseableEntity, IMyHasGuiControl\n    {\n        private MyLargeShipGunBase m_gun;\n        private MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum weaponType;\n        private MyPrefabConfigurationLargeWeapon prefabConfiguration;\n\n        private MyEntityDetector m_targetsDetector;\n        private MyEntityDetector m_potentialTargetsDetector;\n        private bool m_foundSmallShipsPositionChange = false;\n        private List<IMyEntityDetectorCriterium> m_targetDetectorCriterias = new List<IMyEntityDetectorCriterium>();\n        private List<IMyEntityDetectorCriterium> m_potentialTargetDetectorCriterias = new List<IMyEntityDetectorCriterium>();\n        //private List<MySmallShip> m_foundSmallShips = new List<MySmallShip>();\n        private MySmallShip m_target;\n        private MySmallShip m_potentialTarget;\n\n        protected override void WorkingChanged()\n        {\n            base.WorkingChanged();\n            if (m_gun != null)\n            {\n                m_gun.Enabled = IsWorking();\n            }\n            m_targetsDetector.TrySetStatus(IsWorking());\n            m_potentialTargetsDetector.TrySetStatus(IsWorking());\n        }\n\n        public MyLargeShipGunBase GetGun() \n        {\n            return m_gun;\n        }\n\n        public override MyMwcObjectBuilder_FactionEnum Faction\n        {\n            get\n            {\n                return MyGuiScreenGamePlay.Static.IsControlledByPlayer(this) ? MySession.Static.Player.Faction : base.Faction;\n            }\n            set\n            {\n                base.Faction = value;\n            }\n        }\n\n        public MyPrefabLargeWeapon(MyPrefabContainer owner) : base(owner) \n        {\n            CheckExplosionObstacles = false;\n        }        \n\n        protected override void InitPrefab(string displayName, Vector3 relativePosition, Matrix localOrientation, MyMwcObjectBuilder_PrefabBase objectBuilder, MyPrefabConfiguration prefabConfig)\n        {            \n            prefabConfiguration = prefabConfig as MyPrefabConfigurationLargeWeapon;\n            MyMwcObjectBuilder_PrefabLargeWeapon largeWeaponBuilder = objectBuilder as MyMwcObjectBuilder_PrefabLargeWeapon;\n            weaponType = largeWeaponBuilder.PrefabLargeWeaponType;\n\n            UseProperties = new MyUseProperties(MyUseType.FromHUB | MyUseType.Solo, MyUseType.FromHUB);\n            if (largeWeaponBuilder.UseProperties == null)\n            {\n                UseProperties.Init(MyUseType.FromHUB | MyUseType.Solo, MyUseType.FromHUB, 1, 4000, false);\n            }\n            else\n            {                \n                UseProperties.Init(largeWeaponBuilder.UseProperties);\n            }            \n\n            // create & initialize weapon:\n            MyLargeShipGunBase.CreateAloneWeapon(ref m_gun, displayName, Vector3.Zero, Matrix.Identity, largeWeaponBuilder, Activated);\n            AddChild(m_gun);\n\n            m_gun.PrefabParent = this;\n            m_gun.Enabled = IsWorking();\n            m_gun.SetRandomRotation();\n\n           // if (largeWeaponBuilder.SearchingDistance == 2000)\n             //   largeWeaponBuilder.SearchingDistance = 1000;\n\n            this.LocalMatrix = Matrix.CreateWorld(relativePosition, localOrientation.Forward, localOrientation.Up);\n            m_searchingDistance = MathHelper.Clamp(largeWeaponBuilder.SearchingDistance, MyLargeShipWeaponsConstants.MIN_SEARCHING_DISTANCE, MyLargeShipWeaponsConstants.MAX_SEARCHING_DISTANCE); \n            m_targetDetectorCriterias.Add(new MyEntityDetectorCriterium<MySmallShip>(1, IsPossibleTarget, true));\n            m_targetsDetector = new MyEntityDetector(true);\n            \n            m_potentialTargetsDetector = new MyEntityDetector(true);\n            m_potentialTargetDetectorCriterias.Add(new MyEntityDetectorCriterium<MySmallShip>(1, IsPotentialTarget, true));\n            //m_targetsDetector.OnEntityEnter += OnTargetDetected;\n            //m_targetsDetector.OnEntityLeave += OnTargetLost;\n            m_targetsDetector.OnNearestEntityChange += OnNearestTargetChange;\n            m_potentialTargetsDetector.OnNearestEntityChange += OnNearestPotentialTargetChange;\n            //m_targetsDetector.OnEntityPositionChange += OnTargetPositionChanged;\n            InitDetector(Activated);\n        }\n\n        protected override void SetHudMarker()\n        {\n            MyHud.ChangeText(this, new StringBuilder(), null, SearchingDistance, HUD.MyHudIndicatorFlagsEnum.SHOW_BORDER_INDICATORS | HUD.MyHudIndicatorFlagsEnum.SHOW_HEALTH_BARS | HUD.MyHudIndicatorFlagsEnum.SHOW_DISTANCE | HUD.MyHudIndicatorFlagsEnum.ALPHA_CORRECTION_BY_DISTANCE | MyHudIndicatorFlagsEnum.SHOW_FACTION_RELATION_MARKER | MyHudIndicatorFlagsEnum.SHOW_MISSION_MARKER | MyHudIndicatorFlagsEnum.SHOW_ONLY_IF_DETECTED_BY_RADAR, new HUD.MyHudDisplayFactionRelation(false, false, true));\n        }\n\n        private float m_searchingDistance;\n        public float SearchingDistance \n        {\n            get { return m_searchingDistance; }\n            set \n            {\n                value = MathHelper.Clamp(value, MyLargeShipWeaponsConstants.MIN_SEARCHING_DISTANCE, MyLargeShipWeaponsConstants.MAX_SEARCHING_DISTANCE);\n                bool changed = m_searchingDistance != value;\n                m_searchingDistance = value;\n                if (changed) \n                {\n                    m_targetsDetector.Size = new Vector3(SearchingDistance * 2f, 0f, 0f);\n                    m_potentialTargetsDetector.Size = new Vector3(SearchingDistance * 2f, 0f, 0f);\n                }\n            }\n        }\n\n        //private void OnTargetDetected(MyEntityDetector sender, MyEntity entity, int criterias)\n        //{\n        //    m_foundSmallShips.Add(entity as MySmallShip);\n        //    m_foundSmallShipsPositionChange = true;\n        //}\n\n        //private void OnTargetLost(MyEntityDetector sender, MyEntity entity)\n        //{\n        //    m_foundSmallShips.Remove(entity as MySmallShip);\n        //}\n\n        //private void OnTargetPositionChanged(MyEntityDetector sender, MyEntity entity, Vector3 position)\n        //{\n        //    m_foundSmallShipsPositionChange = true;\n        //}\n\n        private void OnNearestTargetChange(MyEntityDetector sender, MyEntity oldNearestEntity, MyEntity newNearestEntity)\n        {\n            m_target = newNearestEntity as MySmallShip;\n            if (m_target != null)\n            {\n            }\n\n        }\n\n        private void OnNearestPotentialTargetChange(MyEntityDetector sender, MyEntity oldNearestEntity, MyEntity newNearestEntity)\n        {\n            m_potentialTarget = newNearestEntity as MySmallShip;\n        }\n\n        private bool IsPossibleTarget(MySmallShip smallShip, params object[] args)\n        {\n            if (!IsPotentialTarget(smallShip, args))\n                return false;\n\n            MyLine testRay = new MyLine(m_gun.GetBarell().GetPosition(), smallShip.GetPosition(), false);\n            Vector3? result = MyEntities.GetAnyIntersectionWithLine(ref testRay, this, smallShip, true, true, false, true);\n            //smallShip.GetIntersectionWithLine(ref testRay, out result);\n            return result == null;\n        }\n\n        private bool IsPotentialTarget(MySmallShip smallShip, params object[] args)\n        {\n            if (MyFactions.GetFactionsRelation(GetOwner(), smallShip) != MyFactionRelationEnum.Enemy)\n            {\n                return false;\n            }\n            \n            if (smallShip == MySession.PlayerShip && (Vector3.DistanceSquared(smallShip.GetPosition(), this.GetPosition()) > MyGameplayConstants.GameplayDifficultyProfile.LargeWeaponMaxAttackingDistanceForPlayer * MyGameplayConstants.GameplayDifficultyProfile.LargeWeaponMaxAttackingDistanceForPlayer))\n                return false;\n              \n            return true;\n        }\n\n        public bool IsGuided() \n        {\n            return PrefabLargeWeaponType == MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A02_LARGESHIP_MISSILE_GUIDED4 ||\n                   PrefabLargeWeaponType == MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A02_LARGESHIP_MISSILE_GUIDED6 ||\n                   PrefabLargeWeaponType == MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A02_LARGESHIP_MISSILE_GUIDED9;\n        }\n\n        public void InitDetector(bool activated)\n        {\n            m_targetsDetector.Init(null, new MyMwcObjectBuilder_EntityDetector(new Vector3(SearchingDistance * 2f, 0f, 0f), MyMwcObjectBuilder_EntityDetector_TypesEnum.Sphere), this, WorldMatrix, m_targetDetectorCriterias);\n            m_targetsDetector.SetSensorDetectRigidBodyTypes(MyConstants.RIGIDBODY_TYPE_SHIP);\n            m_targetsDetector.TrySetStatus(Enabled);\n            if (activated)\n            {\n                m_targetsDetector.PersistentFlags &= ~MyPersistentEntityFlags.Deactivated;\n            }\n            else\n            {\n                m_targetsDetector.PersistentFlags |= MyPersistentEntityFlags.Deactivated;\n            }\n\n            m_potentialTargetsDetector.Init(null, new MyMwcObjectBuilder_EntityDetector(new Vector3(SearchingDistance * 2f, 0f, 0f), MyMwcObjectBuilder_EntityDetector_TypesEnum.Sphere), this, WorldMatrix, m_potentialTargetDetectorCriterias);\n            m_potentialTargetsDetector.SetSensorDetectRigidBodyTypes(MyConstants.RIGIDBODY_TYPE_SHIP);\n            m_potentialTargetsDetector.TrySetStatus(Enabled);\n            if (activated)\n            {\n                m_potentialTargetsDetector.PersistentFlags &= ~MyPersistentEntityFlags.Deactivated;\n            }\n            else\n            {\n                m_potentialTargetsDetector.PersistentFlags |= MyPersistentEntityFlags.Deactivated;\n            }\n        }\n\n        //public void CloseDetector()\n        //{\n        //    m_targetsDetector.Close();            \n        //}\n\n        public override void Close()\n        {\n            MyDecals.RemoveModelDecals(m_gun);\n            base.Close();\n        }\n\n        public void GetClosestSmallShipInSearchDistance(out MySmallShip closestShip)\n        {\n            closestShip = m_target;\n        }\n\n        public void GetClosestPotentialSmallShipInSearchDistance(out MySmallShip closestShip)\n        {\n            closestShip = m_potentialTarget;\n        }\n\n        protected override MyMwcObjectBuilder_Base GetObjectBuilderInternal(bool getExactCopy)\n        {\n            MyMwcObjectBuilder_PrefabLargeWeapon objectBuilderWeapon = (MyMwcObjectBuilder_PrefabLargeWeapon)base.GetObjectBuilderInternal(getExactCopy);\n\n            //This is duplicate from MyPrefab\n            objectBuilderWeapon.PositionInContainer = MyPrefabContainer.GetRelativePositionInContainerCoords(this.LocalMatrix.Translation);\n\n            float yaw, pitch, roll;\n            Matrix rot = this.LocalMatrix;\n            rot.Translation = Vector3.Zero;\n\n            MyUtils.RotationMatrixToYawPitchRoll(ref rot, out yaw, out pitch, out roll);\n            objectBuilderWeapon.AnglesInContainer = new Vector3(yaw, pitch, roll);\n            //end of duplicate from  MyPrefab\n\n            objectBuilderWeapon.PrefabLargeWeaponType = weaponType;\n            //objectBuilderWeapon.PrefabHealthRatio = Health;\n\n            objectBuilderWeapon.UseProperties = UseProperties.GetObjectBuilder();\n            objectBuilderWeapon.SearchingDistance = SearchingDistance;\n            objectBuilderWeapon.AimingDistance = 0;\n\n            return objectBuilderWeapon;\n        }\n\n        public override MyModel GetModelLod0()\n        {\n            //return m_gun == null ? null : m_gun.GetModelLod0();\n            if (ModelLod0 == null) \n            {\n                return m_gun == null ? null : m_gun.GetModelLod0();\n            }\n            return base.GetModelLod0();\n        }\n\n        public override MyModel GetModelLod1()\n        {\n            //return m_gun == null ? null : m_gun.GetModelLod1();\n            if (ModelLod1 == null)\n            {\n                return m_gun == null ? null : m_gun.GetModelLod1();\n            }\n            return base.GetModelLod1();\n        }\n\n        public override bool Draw(MyRenderObject renderObject)\n        {\n            // Nothing, visible parts are GunBase and Barrel\n            return true;\n        }\n\n        public void DebugDrawRange() \n        {         /*\n            Matrix world = Matrix.CreateWorld(WorldMatrix.Translation, WorldMatrix.Forward, WorldMatrix.Up);\n            Vector4 color = Color.Blue.ToVector4();\n            color.W *= 0.1f;\n            MySimpleObjectDraw.DrawTransparentSphere(ref world, SearchingDistance, ref color, true, 24);\n                    */\n                   \n            float distance = 5000;\n            float minSearchDistance = 5000;\n\n            if ((Vector3.Distance(MyCamera.Position, this.GetPosition()) < distance)\n                && (SearchingDistance < minSearchDistance))\n            {\n                Matrix world = Matrix.CreateWorld(WorldMatrix.Translation, WorldMatrix.Forward, WorldMatrix.Up);\n                Vector3 color = Color.Blue.ToVector3();\n                MyDebugDraw.DrawSphereWireframe(world.Translation, SearchingDistance, color, 1f);\n            }        \n            \n        }\n                      /*\n        protected override void Explode()\n        {\n            MyExplosion newExplosion = MyExplosions.AddExplosion();\n            if (newExplosion != null)\n            {\n                BoundingSphere explosionSphere = WorldVolumeHr;\n                explosionSphere.Radius *= m_config.ExplosionRadiusMultiplier;\n                MyVoxelMap voxelMap = MyVoxelMaps.GetOverlappingWithSphere(ref explosionSphere);\n                MyExplosionDebrisModel.CreateExplosionDebris(ref explosionSphere, MyGroupMask.Empty, this, voxelMap);\n                newExplosion.Start(0, MyPrefabConstants.VOLUME_DAMAGE_MULTIPLIER * m_config.ExplosionDamageMultiplier * WorldVolumeHr.Radius, 0, m_config.ExplosionType, explosionSphere, MyExplosionsConstants.EXPLOSION_LIFESPAN);\n            }\n        }               */\n\n        public override bool GetIntersectionWithLine(ref MyLine line, out MyIntersectionResultLineTriangleEx? t, IntersectionFlags flags = IntersectionFlags.ALL_TRIANGLES)\n        {\n            return m_gun.GetIntersectionWithLine(ref line, out t);\n        }\n\n        public override bool GetIntersectionWithLine(ref MyLine line, out Vector3? v, bool useCollisionModel = true, IntersectionFlags flags = IntersectionFlags.ALL_TRIANGLES)\n        {\n            return m_gun.GetIntersectionWithLine(ref line, out v, useCollisionModel);\n        }\n\n        public MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum PrefabLargeWeaponType\n        {\n            get\n            {\n                return (MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum)m_prefabId;\n            }\n            set\n            {\n                m_prefabId = (int)value;\n            }\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyPrefabLargeWeapon\";\n        }\n\n        public MyGuiControlEntityUse GetGuiControl(IMyGuiControlsParent parent)\n        {\n            return new MyGuiControlPrefabLargeWeaponUse(parent, this);\n        }\n\n        public override string GetCorrectDisplayName()\n        {\n            string displayName = base.GetCorrectDisplayName();\n\n            if (displayName == \"Front Turret\")\n            {\n                displayName = MyTextsWrapper.Get(MyTextsWrapperEnum.FrontTurret).ToString();\n            }\n\n            if (displayName == \"Back Turret\")\n            {\n                displayName = MyTextsWrapper.Get(MyTextsWrapperEnum.BackTurret).ToString();\n            }\n\n            if (displayName == \"Bottom Turret\")\n            {\n                displayName = MyTextsWrapper.Get(MyTextsWrapperEnum.BottomTurret).ToString();\n            }\n\n            return displayName;\n        }\n\n        public MyEntity GetEntity()\n        {\n            return this;\n        }\n\n        public void Use(MySmallShip useBy)\n        {\n            MyGuiManager.AddScreen(new MyGuiScreenEntityUseSolo(this));\n        }\n\n        public void UseFromHackingTool(MySmallShip useBy, int hackingLevelDifference)\n        {\n            Use(useBy);\n        }\n\n        public bool CanBeUsed(MySmallShip usedBy)\n        {\n            return IsWorking() && (MyFactions.GetFactionsRelation(usedBy, this) == MyFactionRelationEnum.Friend || UseProperties.IsHacked);\n        }\n\n        public bool CanBeHacked(MySmallShip hackedBy)\n        {\n            return IsWorking() && (MyFactions.GetFactionsRelation(hackedBy, this) == MyFactionRelationEnum.Neutral ||\n                MyFactions.GetFactionsRelation(hackedBy, this) == MyFactionRelationEnum.Enemy);\n        }\n\n        public MyUseProperties UseProperties\n        {\n            get;\n            set;\n        }\n\n        public void Fire()\n        {\n            m_gun.Fire();\n        }\n\n        public void StopFire()\n        {\n            m_gun.StopFire();\n        }\n\n        public void MoveAndRotate(Vector3 moveIndicator, Vector2 rotationIndicator, float rollIndicator, bool afterburner)\n        {\n            m_gun.MoveAndRotate(moveIndicator, rotationIndicator, rollIndicator, afterburner);\n        }\n\n        public Matrix GetViewMatrix()\n        {\n            return m_gun.GetViewMatrix();\n        }\n\n        public override Vector3 GetHUDMarkerPosition()\n        {\n            return m_gun.GetHUDMarkerPosition();\n        }\n\n        public bool IsDamagedForWarnignAlert()\n        {\n            return HealthRatio <= MyLargeShipWeaponsConstants.WARNING_DAMAGE_ALERT_LEVEL;\n        }\n\n        public MyLine GetLine()\n        {\n            return m_gun.GetBarell().GetLine();\n        }\n\n        public void StopAimingSound()\n        {\n            m_gun.StopAimingSound();\n        }\n\n        protected override void DoDamageInternal(float playerDamage, float damage, float empDamage, MyDamageType damageType, MyAmmoType ammoType, MyEntity damageSource, bool justDeactivate)\n        {\n            if (damageSource != null && damageSource == MySession.PlayerShip)\n            {\n                var factionRelation = MyFactions.GetFactionsRelation(damageSource.Faction, Faction);\n                if ((factionRelation == MyFactionRelationEnum.Friend || factionRelation == MyFactionRelationEnum.Neutral) &&\n                    !MyGuiScreenGamePlay.Static.IsCheatEnabled(MyGameplayCheatsEnum.FRIEND_NEUTRAL_CANT_DIE) &&\n                    !MyFakes.INDESTRUCTIBLE_PREFABS)\n                {\n                    MySession.PlayerShip.AddFriendlyFireDamage(this, damage);\n                    return;\n                }\n            }\n\n            base.DoDamageInternal(playerDamage, damage, empDamage, damageType, ammoType, damageSource, justDeactivate);\n        }\n\n        public void SetRotation(float angle, float elevation)\n        {\n            m_gun.SetRotation(angle, elevation);\n        }        \n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Prefabs/MyPrefabLight.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing MinerWarsMath;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Lights;\nusing MinerWars.AppCode.Game.Models;\nusing MinerWars.AppCode.Game.Prefabs;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.Prefabs;\nusing MinerWars.CommonLIB.AppCode.Utils;\n\nusing MinerWars.AppCode.Game.Localization;\nusing System.Text;\nusing System.Diagnostics;\nusing MinerWars.AppCode.Game.Render;\nusing MinerWars.CommonLIB.AppCode.Import;\n\nnamespace MinerWars.AppCode.Game.Entities.SubObjects\n{\n    class MyPrefabLight : MyPrefabBase\n    {\n        MyLight m_light; //here beter to use base light class then fixed light type... when we add more light types\n        Matrix m_pointLocalMatrix;\n        //public MyLightPrefabTypeEnum m_Type = MyLightPrefabTypeEnum.NOT_ASSIGNED;\n\n        // Offsets flashing of light\n        public float FlashOffset;\n\n        MyLightEffectTypeEnum m_effect;\n        public MyLightEffectTypeEnum Effect\n        {\n            get { return m_effect; }\n            set\n            {\n                m_effect = value;\n                UpdateEffect();\n                RecheckNeedsUpdate();\n            }\n        }\n\n\n\n\n        public void UpdateEffect()\n        {\n            switch (m_effect)\n            {\n                case MyLightEffectTypeEnum.NORMAL:\n                    m_light.Intensity = m_IntensityMax;\n                    m_light.Glare.Intensity = null;\n                    m_light.Glare.Type = MyLightGlare.GlareTypeEnum.Normal;\n                    m_light.ReflectorIntensity = ReflectorIntensityMax;\n                    break;\n                case MyLightEffectTypeEnum.CONSTANT_FLASHING:\n                case MyLightEffectTypeEnum.RANDOM_FLASHING:                    \n                    m_light.Glare.Type = MyLightGlare.GlareTypeEnum.Normal;\n                    break;\n                case MyLightEffectTypeEnum.DISTANT_GLARE:\n                    m_light.Glare.Intensity = 1;                 \n                    m_light.GlareOn = true;\n                    m_light.Glare.Type = MyLightGlare.GlareTypeEnum.Distant;\n\n                    break;\n                case MyLightEffectTypeEnum.DISTANT_GLARE_FLASHING:\n                case MyLightEffectTypeEnum.DISTANT_GLARE_RANDOM_FLASHING:                    \n                    m_light.GlareOn = true;\n                    m_light.Glare.Type = MyLightGlare.GlareTypeEnum.Distant;\n\n                    break;\n                default:\n                    throw new ArgumentOutOfRangeException();\n            }\n        }\n\n\n        public float m_IntensityMax; //fore effects\n        public float ReflectorIntensityMax;\n        int m_lastBlickChange;\n        int m_lastSpotBlickChange;\n        MyPrefabConfigurationLight m_prefabLightConfig;\n\n        private const float WITHOUT_ELECTRICITY_INTENSITY_MULTIPLICATOR = 0.1f;\n\n        public MyPrefabLight(MyPrefabContainer owner): base(owner) { }\n\n        public MyLight GetLight()\n        {\n            return m_light;\n        }\n\n        protected override void WorkingChanged()\n        {\n            base.WorkingChanged();\n            if (m_light != null)\n            {\n                //m_light.LightOn = IsWorking();\n                m_light.LightOn = Enabled;\n                if (IsElectrified())\n                {\n                    m_light.Intensity = m_IntensityMax;\n                    //m_light.ReflectorIntensity = ReflectorIntensityMax;\n                    //m_light.Glare.Intensity = m_IntensityMax;\n                }\n                else \n                {\n                    m_light.Intensity = m_IntensityMax * WITHOUT_ELECTRICITY_INTENSITY_MULTIPLICATOR;\n                    //m_light.ReflectorIntensity = ReflectorIntensityMax * WITHOUT_ELECTRICITY_INTENSITY_MULTIPLICATOR;\n                    //m_light.Glare.Intensity = m_IntensityMax * WITHOUT_ELECTRICITY_INTENSITY_MULTIPLICATOR;\n                }\n            }\n        }\n\n        public static StringBuilder GetStringFromMyLightEffectTypeEnum(MyLightEffectTypeEnum t)\n        {\n            switch (t)\n            {\n                case MyLightEffectTypeEnum.NORMAL:\n                    return MyTextsWrapper.Get(MyTextsWrapperEnum.Normal);\n                case MyLightEffectTypeEnum.CONSTANT_FLASHING:\n                    return MyTextsWrapper.Get(MyTextsWrapperEnum.ConstantFlashing);\n                case MyLightEffectTypeEnum.RANDOM_FLASHING:\n                    return MyTextsWrapper.Get(MyTextsWrapperEnum.RandomFlashing);\n                case MyLightEffectTypeEnum.DISTANT_GLARE:\n                    return MyTextsWrapper.Get(MyTextsWrapperEnum.DistantGlare);\n                case MyLightEffectTypeEnum.DISTANT_GLARE_FLASHING:\n                    return MyTextsWrapper.Get(MyTextsWrapperEnum.DistantGlareFlashing);\n                case MyLightEffectTypeEnum.DISTANT_GLARE_RANDOM_FLASHING:\n                    return MyTextsWrapper.Get(MyTextsWrapperEnum.DistantGlareRandomFlashing);\n                default:\n                    throw new IndexOutOfRangeException();\n            }\n        }\n\n\n        public static StringBuilder GetStringFromMyLightPrefabTypeEnum(MyLightPrefabTypeEnum t)\n        {\n            switch (t)\n            {\n                case MyLightPrefabTypeEnum.NOT_ASSIGNED:\n                    return MyTextsWrapper.Get(MyTextsWrapperEnum.None);\n                case MyLightPrefabTypeEnum.POINT_LIGHT:\n                    return MyTextsWrapper.Get(MyTextsWrapperEnum.PointLight);\n                case MyLightPrefabTypeEnum.SPOT_LIGHT:\n                    return MyTextsWrapper.Get(MyTextsWrapperEnum.SpotLight);\n                case MyLightPrefabTypeEnum.HEMISPHERIC_LIGHT:\n                    return MyTextsWrapper.Get(MyTextsWrapperEnum.HemisphericLight);\n                default:\n                    System.Diagnostics.Debug.Assert(false);\n                    return new StringBuilder();\n            }\n        }        \n\n        protected override void InitPrefab(string displayName, Vector3 relativePosition, Matrix localOrientation, MyMwcObjectBuilder_PrefabBase objectBuilder, MyPrefabConfiguration prefabConfig)\n        {\n\n            m_prefabLightConfig = prefabConfig as MyPrefabConfigurationLight;\n            MyMwcObjectBuilder_PrefabLight objectBuilderLight = objectBuilder as MyMwcObjectBuilder_PrefabLight;            \n\n            m_light = MyLights.AddLight();\n\n            m_light.LightType = (MyLight.LightTypeEnum)objectBuilderLight.LightType;\n\n            m_light.Start(m_light.LightType, 1);\n            m_light.UseInForwardRender = true;\n\n\n            //grab first dummy and set it as point source\n            //since we dont support yet more lights in one prefab. add just the first one\n            MyModel model = MyModels.GetModelOnlyDummies(m_prefabLightConfig.ModelLod0Enum);\n\n            m_pointLocalMatrix = Matrix.Identity;\n            bool dummyFound = false;\n            foreach (KeyValuePair<string, MyModelDummy> pair in model.Dummies)\n            {\n                if (pair.Key.StartsWith(\"Dummy\", StringComparison.InvariantCultureIgnoreCase))\n                {\n                    m_pointLocalMatrix = pair.Value.Matrix;\n                    dummyFound = true;\n                    break;\n                }\n            }\n            Debug.Assert(dummyFound, \"Dummy 'POINT_LIGHT_POS' not found in light prefab model: \" + model.AssetName);\n\n            m_light.Color = objectBuilderLight.PointColor;\n            m_light.ReflectorColor = objectBuilderLight.SpotColor;\n            m_light.Falloff = objectBuilderLight.PointFalloff;\n            m_light.ReflectorFalloff = objectBuilderLight.SpotFalloff;\n            m_IntensityMax = m_light.Intensity = objectBuilderLight.PointIntensity;\n            m_light.ReflectorIntensity = ReflectorIntensityMax = objectBuilderLight.SpotIntensity;\n            m_light.ReflectorRange = MathHelper.Clamp(objectBuilderLight.SpotRange, 1, MyLightsConstants.MAX_SPOTLIGHT_RANGE);\n            m_light.Range = MathHelper.Clamp(objectBuilderLight.PointRange, 1, MyLightsConstants.MAX_POINTLIGHT_RADIUS);\n            m_light.PointLightOffset = objectBuilderLight.PointOffset;\n            this.FlashOffset = objectBuilderLight.FlashOffset;\n\n            //to add reflector range to builders\n            m_light.SpecularColor = objectBuilderLight.PointSpecular;\n            m_light.ReflectorConeDegrees = objectBuilderLight.SpotAgle;\n            m_effect = objectBuilderLight.Effect;\n            //m_light.LightOn = true;\n            m_lastBlickChange = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n\n            // here set the properties of glare for the prefab light\n            m_light.GlareOn = true;\n            m_light.Glare.Type = MyLightGlare.GlareTypeEnum.Normal;\n            m_light.Glare.QuerySize = .8f;\n            m_light.ShadowDistance = objectBuilderLight.ShadowsDistance;\n            m_light.Glare.Intensity = m_light.Intensity;\n            UpdateEffect();\n\n            CastShadows = false;\n            UpdateLightWorldMatrix();            \n        }\n\n\n        protected override void InitPhysicsInternal()\n        {\n            InitBoxPhysics(MyMaterialType.METAL, ModelLod0, 1, 0, collisionLayer: (ushort)MyConstants.COLLISION_LAYER_LIGHT, rbFlag: AppCode.Physics.RigidBodyFlag.RBF_RBO_STATIC);\n            Physics.Enabled = Activated;\n        }\n\n        protected override MyMwcObjectBuilder_Base GetObjectBuilderInternal(bool getExactCopy)\n        {\n            MyMwcObjectBuilder_PrefabLight objectBuilder = base.GetObjectBuilderInternal(getExactCopy) as MyMwcObjectBuilder_PrefabLight;\n\n            objectBuilder.PointColor = m_light.Color;\n            objectBuilder.PointFalloff = m_light.Falloff;\n            objectBuilder.PointIntensity = m_IntensityMax;//we use this local value because intenisty in mpoint light may change due to effects\n            objectBuilder.PointRange = m_light.Range;\n            objectBuilder.PointOffset = m_light.PointLightOffset;\n            objectBuilder.SpotAgle = m_light.ReflectorConeDegrees;\n            objectBuilder.SpotSpecular = objectBuilder.PointSpecular = m_light.SpecularColor;\n            objectBuilder.PointEnabled = m_light.PointOn;\n            objectBuilder.Effect = m_effect;\n            objectBuilder.LightType = (MyLightPrefabTypeEnum) m_light.LightType;\n            objectBuilder.FlashOffset = this.FlashOffset;\n\n            objectBuilder.SpotColor = m_light.ReflectorColor;\n            objectBuilder.SpotFalloff = m_light.ReflectorFalloff;\n            objectBuilder.SpotIntensity = ReflectorIntensityMax;//we use this local value because intenisty in mpoint light may change due to effects\n            objectBuilder.SpotRange = m_light.ReflectorRange;\n            objectBuilder.SpotEnabled = m_light.ReflectorOn;\n            objectBuilder.ShadowsDistance = m_light.ShadowDistance;\n\n            return objectBuilder;\n        }\n\n\n        //\n        public override void OnWorldPositionChanged(object source)\n        {\n\n            base.OnWorldPositionChanged(source);\n\n            UpdateLightWorldMatrix();\n        }\n\n        private void UpdateLightWorldMatrix() \n        {\n            if (m_light != null)\n            {\n                Matrix newMat = m_pointLocalMatrix * base.WorldMatrix;\n\n                m_light.SetPosition(newMat.Translation);\n                m_light.ReflectorDirection = newMat.Down;\n                m_light.ReflectorDirection = MyMwcUtils.Normalize(m_light.ReflectorDirection);\n                m_light.ReflectorUp = newMat.Right;\n                m_light.ReflectorUp = MyMwcUtils.Normalize(m_light.ReflectorUp);\n\n                // move the light outwards in the direction of the lamp, for purposes of glare\n                m_light.SetPosition(m_light.Position + 0.75f * m_light.ReflectorDirection);\n            }\n        }\n\n        /// <summary>\n        /// Every object must have this method, but not every phys object must necessarily have something to cleanup\n        /// </summary>\n        public override void Close()\n        {\n            MyLights.RemoveLight(m_light);\n            m_light = null;\n            base.Close();\n        }\n\n        /// <summary>\n        /// udpate flashing\n        /// </summary>\n        protected override void UpdatePrefabBeforeSimulation()\n        {\n            base.UpdatePrefabBeforeSimulation();\n\n            switch (m_effect)\n            {\n                case MyLightEffectTypeEnum.CONSTANT_FLASHING:\n                case MyLightEffectTypeEnum.DISTANT_GLARE_FLASHING:\n                    {\n                        m_light.Intensity = m_IntensityMax * MathHelper.Clamp(1.5f + 1.5f * (float)Math.Sin(6.0f * (float)MyMinerGame.TotalGamePlayTimeInMilliseconds / 1000.0f + MathHelper.TwoPi * this.FlashOffset), 0.0f, 1.0f);\n                        m_light.ReflectorIntensity = ReflectorIntensityMax * MathHelper.Clamp(1.5f + 1.5f * (float)Math.Sin(6.0f * (float)MyMinerGame.TotalGamePlayTimeInMilliseconds / 1000.0f + MathHelper.TwoPi * this.FlashOffset), 0.0f, 1.0f);\n\n                        m_light.Glare.Intensity = MathHelper.Max(m_light.Intensity / m_IntensityMax,\n                                                                 m_light.ReflectorIntensity / ReflectorIntensityMax);\n                        break;\n                    }\n                case MyLightEffectTypeEnum.RANDOM_FLASHING:\n                case MyLightEffectTypeEnum.DISTANT_GLARE_RANDOM_FLASHING:\n                    {\n                        int period = 100;//in ms\n                        if (MyMinerGame.TotalGamePlayTimeInMilliseconds - m_lastBlickChange > period)\n                        {\n                            m_lastBlickChange = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n\n                            float size = MyMwcUtils.GetRandomFloat(-1.00f, 1.00f);\n\n                            m_light.Intensity = MathHelper.Clamp(m_light.Intensity +  size * m_IntensityMax/ 2.0f, 0, m_IntensityMax);\n                            m_light.ReflectorIntensity = MathHelper.Clamp(m_light.ReflectorIntensity + size*ReflectorIntensityMax / 2.0f, 0, ReflectorIntensityMax);\n\n                            m_light.Glare.Intensity = MathHelper.Max(m_light.Intensity / m_IntensityMax,\n                                                                     m_light.ReflectorIntensity / ReflectorIntensityMax);\n                        }\n\n                        break;\n                    }\n                case MyLightEffectTypeEnum.NORMAL:\n                case MyLightEffectTypeEnum.DISTANT_GLARE:\n                    {\n                        m_light.Intensity = m_IntensityMax;\n                        m_light.ReflectorIntensity = ReflectorIntensityMax;\n\n                        //m_light.Glare.Intensity = m_light.Intensity;\n                        m_light.Glare.Intensity = 1f;\n                        break;\n                    }\n            }\n\n        }\n\n        /// <summary>\n        /// \n        /// </summary>\n        /// <returns></returns>\n        public override bool Draw(MyRenderObject renderObject)\n        {\n            if (base.Draw(renderObject) == false)\n                return false;\n\n            return true;\n        }\n\n        public override bool DebugDraw()\n        {\n            //MyDebugDraw.DrawLine3D(m_light.Position, m_light.Position + m_light.Range * m_light.ReflectorDirection, new Color(1, 0, 1, .5f), new Color(1, 0, 1, .5f));\n\n            return base.DebugDraw();\n        }\n\n        public void SetAllColors(Color newColor)\n        {\n            m_light.Color = newColor.ToVector4();\n            m_light.ReflectorColor = newColor.ToVector4();\n            m_light.SpecularColor = newColor.ToVector3();\n        }\n\n        public MyMwcObjectBuilder_PrefabLight_TypesEnum PrefabLightType\n        {\n            get\n            {\n                return (MyMwcObjectBuilder_PrefabLight_TypesEnum)m_prefabId;\n            }\n            set\n            {\n                m_prefabId = (int)value;\n            }\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyPrefabLight\";\n        }\n\n        protected override bool PrefabNeedsUpdateNow\n        {\n            get\n            {\n                return base.PrefabNeedsUpdateNow && \n                       (m_effect == MyLightEffectTypeEnum.CONSTANT_FLASHING ||\n                       m_effect == MyLightEffectTypeEnum.DISTANT_GLARE_FLASHING ||\n                       m_effect == MyLightEffectTypeEnum.DISTANT_GLARE_RANDOM_FLASHING ||\n                       m_effect == MyLightEffectTypeEnum.RANDOM_FLASHING);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Prefabs/MyPrefabParticles.cs",
    "content": "﻿using MinerWarsMath;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.AppCode.Game.Prefabs;\nusing MinerWars.AppCode.Game.TransparentGeometry.Particles;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.Prefabs;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Models;\nusing System.Collections.Generic;\nusing MinerWars.AppCode.Game.Entities.Prefabs;\nusing System.Text;\nusing System;\nusing MinerWars.AppCode.Physics;\n\nusing MinerWars.AppCode.Game.Render;\nusing MinerWars.CommonLIB.AppCode.Import;\n\nnamespace MinerWars.AppCode.Game.Entities.SubObjects\n{\n    class MyPrefabParticles : MyPrefabBase\n    {\n        //MyParticle m_particle;\n        int m_lastTimeParticle;\n        Matrix m_pointLocalMatrix;\n        MyParticleEffect m_particleEffect;\n\n        public MyPrefabParticles(MyPrefabContainer owner) : base(owner) { ; }        \n\n        protected override void InitPrefab(string displayName, Vector3 relativePosition, Matrix localOrientation, MyMwcObjectBuilder_PrefabBase objectBuilder, MyPrefabConfiguration prefabConfig)\n        {            \n            MyPrefabConfigurationParticles prefabParticleConfig = prefabConfig as MyPrefabConfigurationParticles;\n            \n            m_lastTimeParticle = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n            MyModel model = MyModels.GetModelOnlyDummies(prefabParticleConfig.ModelLod0Enum);\n            m_pointLocalMatrix = Matrix.Identity;\n            foreach (KeyValuePair<string, MyModelDummy> pair in model.Dummies)\n            {\n                m_pointLocalMatrix = pair.Value.Matrix;\n            }\n\n            m_particleEffect = MyParticlesManager.CreateParticleEffect((int)prefabParticleConfig.EffectID, true);\n            m_particleEffect.AutoDelete = false;\n            m_particleEffect.WorldMatrix = WorldMatrix;\n        }\n\n        protected override MyMwcObjectBuilder_Base GetObjectBuilderInternal(bool getExactCopy)\n        {\n            MyMwcObjectBuilder_PrefabParticles objectBuilder = base.GetObjectBuilderInternal(getExactCopy) as MyMwcObjectBuilder_PrefabParticles;\n\n            //TODO fill up parameters\n            return objectBuilder;\n        }\n\n        //\n        //\n        //\n        public override void OnWorldPositionChanged(object source)\n        {\n            base.OnWorldPositionChanged(source);\n            if (m_particleEffect != null)\n                m_particleEffect.WorldMatrix = WorldMatrix;\n        }\n\n        /// <summary>\n        /// \n        /// </summary>\n        /// <returns></returns>\n        public override bool Draw(MyRenderObject renderObject)\n        {\n\n            bool drawOk = base.Draw(renderObject);\n            \n            if (drawOk)\n            {\n                if (m_particleEffect != null)\n                    MyParticlesManager.CustomDraw(m_particleEffect);\n            }\n            \n            return drawOk;\n        }\n\n        public override void Close()\n        {\n            base.Close();\n\n            if (m_particleEffect != null)\n            {\n                MyParticlesManager.RemoveParticleEffect(m_particleEffect);\n                m_particleEffect = null;\n            }\n        }\n\n        public MyMwcObjectBuilder_PrefabParticles_TypesEnum PrefabParticleType\n        {\n            get\n            {\n                return (MyMwcObjectBuilder_PrefabParticles_TypesEnum)m_prefabId;\n            }\n            set\n            {\n                m_prefabId = (int)value;\n            }\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyPrefabParticles\";\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Prefabs/MyPrefabScanner.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWarsMath;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.Prefabs;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Entities.EntityDetector;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing ParallelTasks;\nusing System.Diagnostics;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.Entities.Prefabs;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.GUI.Prefabs;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.AppCode.Game.Render;\nusing MinerWars.AppCode.Game.Audio;\n\nusing MinerWars.AppCode.Physics.Collisions;\n\nnamespace MinerWars.AppCode.Game.Prefabs\n{\n    delegate void OnEntityScanned(MyPrefabScanner sender, MyEntity scannedEntity);\n\n    class MyPrefabScanner : MyPrefabBase, IMyUseableEntity, IMyHasGuiControl\n    {\n        protected override void WorkingChanged()\n        {\n            base.WorkingChanged();\n            m_offsetCurrent = 0f;\n            m_scannerForward = true;\n            m_scanningPart.SetOn(IsWorking());\n\n            if (!IsWorking()) \n            {\n                StopSound();\n            }\n        }\n\n        public Color Color { get; set; }\n\n        private Vector3 _size;\n        public Vector3 Size\n        {\n            get\n            {\n                return _size;           \n            }\n            set\n            {\n                _size = value;\n                var size = new Vector3(Math.Max(1, _size.X), Math.Max(1, _size.Y), Math.Max(1, _size.Z));\n                m_localAABB = new BoundingBox((_size*-2), _size*2);\n            }\n        }\n\n        public float ScanningSpeed { get; set; }\n\n        private MyPrefabScanningPartBase m_scanningPart;\n        private List<MyEntity> m_scannedEntities;\n        \n        private float m_offsetCurrent = 0f;         // in m\n        private bool m_scannerForward = true;       // scanner part move direction\n\n        private MySoundCue? m_scannerSound;\n\n        public MyPrefabScanner(MyPrefabContainer owner) \n            : base(owner)\n        {            \n            m_scannedEntities = new List<MyEntity>();\n            OnEntityScanned += m_owner.LaunchAlarm;\n        }\n\n        public event OnEntityScanned OnEntityScanned;\n\n        public void NotifyEntityScanned(MyEntity scannedEntity)\n        {\n            if (!m_scannedEntities.Contains(scannedEntity)) \n            {\n                m_scannedEntities.Add(scannedEntity);\n                if (OnEntityScanned != null)                 \n                {\n                    OnEntityScanned(this, scannedEntity);\n                }\n            }\n        }\n\n        public static bool CanBeScannedCriterium(MyEntity entity, params object[] args)\n        {\n            MyPrefabScanningPartBase scanningPart = args[0] as MyPrefabScanningPartBase;\n            return entity is MySmallShip && MyFactions.GetFactionsRelation(scanningPart.GetScanner(), entity) == MyFactionRelationEnum.Enemy;\n        }        \n\n        protected override void InitPrefab(string displayName, Vector3 relativePosition, Matrix localOrientation, MyMwcObjectBuilder_PrefabBase objectBuilder, MyPrefabConfiguration prefabConfig)\n        {\n            MyMwcObjectBuilder_PrefabScanner objectBuilderScanner = objectBuilder as MyMwcObjectBuilder_PrefabScanner;\n\n            UseProperties = new MyUseProperties(MyUseType.FromHUB, MyUseType.FromHUB | MyUseType.Solo);\n            if (objectBuilderScanner.UseProperties == null)\n            {\n                UseProperties.Init(MyUseType.FromHUB | MyUseType.Solo, MyUseType.FromHUB | MyUseType.Solo, 3, 4000, false);\n            }\n            else\n            {                \n                UseProperties.Init(objectBuilderScanner.UseProperties);\n            }\n\n            Size = objectBuilderScanner.Size;\n            Color = objectBuilderScanner.Color;\n            ScanningSpeed = objectBuilderScanner.ScanningSpeed;\n            InitScanningPart();\n\n            Flags |= EntityFlags.EditableInEditor;            \n        }\n\n        public void InitScanningPart() \n        {\n            if (PrefabScannerType == MyMwcObjectBuilder_PrefabScanner_TypesEnum.Plane)\n            {\n                m_scanningPart = new MyPrefabScanningPartPlane(this);\n            }\n            else if (PrefabScannerType == MyMwcObjectBuilder_PrefabScanner_TypesEnum.Rays)\n            {\n                m_scanningPart = new MyPrefabScanningPartRays(this);\n            }\n            m_scanningPart.Init();\n        }\n\n        public void ReinitScanningPart() \n        {\n            //m_scanningPart.Close();\n            //m_scanningPart.Init();\n            m_scanningPart.Reinit();\n        }\n\n        protected override MyMwcObjectBuilder_Base GetObjectBuilderInternal(bool getExactCopy)\n        {\n            MyMwcObjectBuilder_PrefabScanner objectBuilder = base.GetObjectBuilderInternal(getExactCopy) as MyMwcObjectBuilder_PrefabScanner;\n            objectBuilder.Color = Color;\n            objectBuilder.Size = Size;\n            objectBuilder.ScanningSpeed = ScanningSpeed;            \n            objectBuilder.UseProperties = UseProperties.GetObjectBuilder();\n\n            return objectBuilder;\n        }\n\n        protected override void UpdatePrefabBeforeSimulation()\n        {\n            base.UpdatePrefabBeforeSimulation();            \n            UpdateScanningPart();\n\n            if (m_scanningPart.IntersectsWithControlledEntity())\n            {\n                PlaySound();\n            }\n            else \n            {\n                StopSound();\n            }\n        }        \n\n        private void PlaySound() \n        {\n            if (m_scannerSound == null || !m_scannerSound.Value.IsPlaying) \n            {\n                m_scannerSound = MyAudio.AddCue2D(MySoundCuesEnum.SfxScanner);\n            }\n        }\n\n        private void StopSound() \n        {\n            if (m_scannerSound != null && m_scannerSound.Value.IsPlaying) \n            {\n                m_scannerSound.Value.Stop(SharpDX.XACT3.StopFlags.Release);                \n            }\n            m_scannerSound = null;\n        }\n\n        private void UpdateScanningPart() \n        {\n            m_offsetCurrent += (m_scannerForward ? 1 : -1) * ScanningSpeed * MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS;\n            if (m_offsetCurrent > Size.Z)\n            {\n                m_offsetCurrent = Size.Z;\n                m_scannerForward = false;\n            }\n            if (m_offsetCurrent < 0f)\n            {\n                m_offsetCurrent = 0f;\n                m_scannerForward = true;\n            }\n            m_scanningPart.SetOffset(m_offsetCurrent);            \n\n            m_scanningPart.Update();\n        }\n\n        public override bool Draw(MyRenderObject renderObject)\n        {\n            var s = base.WorldAABB.Size();\n            if (!MyGuiScreenGamePlay.Static.IsGameActive())\n            {\n                Matrix world = Matrix.CreateWorld(WorldMatrix.Translation, WorldMatrix.Forward, WorldMatrix.Up);\n                Vector4 color = Color.Green.ToVector4();\n                color.W *= 0.3f;\n                BoundingBox localBoundingBox = new BoundingBox(-Size / 2f, Size / 2f);\n                MySimpleObjectDraw.DrawTransparentBox(ref world, ref localBoundingBox, ref color, true, 1);\n            }\n            //base.Draw();\n\n            if (IsWorking())\n            {\n                m_scanningPart.Draw();\n            }\n            return true;\n        }                                    \n\n        public MyMwcObjectBuilder_PrefabScanner_TypesEnum PrefabScannerType\n        {\n            get\n            {\n                return (MyMwcObjectBuilder_PrefabScanner_TypesEnum)m_prefabId;\n            }\n            set\n            {\n                m_prefabId = (int)value;\n            }\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyPrefabScanner\";\n        }\n\n        public override void Close()\n        {\n            OnEntityScanned -= m_owner.LaunchAlarm;\n            base.Close();\n            if (m_scanningPart != null)\n            {\n                m_scanningPart.Close();\n                m_scanningPart = null;\n            }\n            m_scannedEntities.Clear();\n            m_scannedEntities = null;\n        }\n\n        public override bool GetIntersectionWithLine(ref MyLine line, out Vector3? v, bool useCollisionModel = true, IntersectionFlags flags = IntersectionFlags.ALL_TRIANGLES)\n        {\n            v = null;\n            Ray ray = new Ray(line.From, line.Direction);\n            float? ds = null;\n            BoundingBox boundingBox = new BoundingBox(WorldMatrix.Translation - Size / 2f, WorldMatrix.Translation + Size / 2f);\n            ds = ray.Intersects(boundingBox);            \n\n            if (ds == null)\n                return false;\n\n            v = line.From + line.Direction * ds;\n            return true;\n        }\n\n        public override bool GetIntersectionWithSphere(ref BoundingSphere sphere)\n        {\n            BoundingBox boundingBox = new BoundingBox(WorldMatrix.Translation - Size / 2f, WorldMatrix.Translation + Size / 2f);\n            return boundingBox.Intersects(sphere);\n        }\n\n        #region IMyUseablePrefab\n        public MyGuiControlEntityUse GetGuiControl(IMyGuiControlsParent parent)\n        {\n            return new MyGuiControlPrefabUse(parent, this);\n        }\n\n        public MyEntity GetEntity()\n        {\n            return this;\n        }\n\n        public void Use(MySmallShip useBy)\n        {\n            MyGuiManager.AddScreen(new MyGuiScreenEntityUseSolo(this));\n        }\n\n        public void UseFromHackingTool(MySmallShip useBy, int hackingLevelDifference)\n        {\n            Use(useBy);\n        }\n\n        public bool CanBeUsed(MySmallShip usedBy)\n        {\n            return IsWorking() && (MyFactions.GetFactionsRelation(usedBy, this) == MyFactionRelationEnum.Friend || UseProperties.IsHacked);\n        }\n\n        public bool CanBeHacked(MySmallShip hackedBy)\n        {\n            return IsWorking() && (MyFactions.GetFactionsRelation(hackedBy, this) == MyFactionRelationEnum.Neutral ||\n                MyFactions.GetFactionsRelation(hackedBy, this) == MyFactionRelationEnum.Enemy);\n        }\n\n        public MyUseProperties UseProperties\n        {\n            get;\n            set;\n        }\n        #endregion\n    }\n    \n    abstract class MyPrefabScanningPartBase\n    {\n        protected MyPrefabScanner m_scanner;        \n\n        protected float m_offset;\n        private Vector3 m_size;\n        protected Vector3 Size\n        {\n            get\n            {\n                return m_size;\n            }\n            set \n            {\n                m_size = value;                \n\n                Vector3 extents = new Vector3(m_size.X / 2f, m_size.Y / 2f, Math.Min(m_size.X, m_size.Y) / 2f);            \n                m_bbForSoundDetection = new BoundingBox(-extents, extents);\n            }\n        }\n        protected bool m_on;\n\n        private BoundingBox m_bbForSoundDetection;\n\n        public MyPrefabScanningPartBase(MyPrefabScanner scanner)\n        {\n            m_scanner = scanner;\n        }\n\n        public Matrix WorldMatrix \n        {\n            get \n            {\n                Vector3 localOffset = Vector3.Backward * (-m_scanner.Size.Z / 2f + m_offset);\n                Vector3 position = Vector3.Transform(localOffset, m_scanner.WorldMatrix);\n                return Matrix.CreateWorld(position, m_scanner.WorldMatrix.Forward, m_scanner.WorldMatrix.Up);\n            }\n        }\n\n        protected virtual float ColorMultiplicator\n        {\n            get { return 0.1f; }\n        }\n\n        protected Vector4 Color \n        {\n            get \n            {\n                Color color = m_scanner.Color;\n                Vector4 vctColor = color.ToVector4() * ColorMultiplicator;\n                return vctColor;\n            }\n        }\n\n        public abstract void Draw();\n\n        public abstract void Update();\n\n        public virtual void Init() \n        {\n            Debug.Assert(!m_on);\n            Size = new Vector3(m_scanner.Size.X, m_scanner.Size.Y, 0.1f);\n        }\n\n        public virtual void Reinit() \n        {\n            Debug.Assert(!m_on);\n            Size = new Vector3(m_scanner.Size.X, m_scanner.Size.Y, 0.1f);\n        }\n\n        public virtual void Close() \n        {\n\n        }\n\n        public virtual void SetOffset(float offset)\n        {\n            m_offset = offset;\n        }\n\n        public virtual void SetOn(bool value) \n        {\n            m_on = value;\n        }\n\n        public MyPrefabScanner GetScanner() \n        {\n            return m_scanner;\n        }\n\n        public bool IntersectsWithControlledEntity()\n        {\n            Matrix worldMatrix = WorldMatrix;\n            MyEntity controlledEntity = MyGuiScreenGamePlay.Static.ControlledEntity;\n            if (Vector3.DistanceSquared(worldMatrix.Translation, controlledEntity.GetPosition()) > m_bbForSoundDetection.Size().LengthSquared()) \n            {\n                return false;\n            }\n            Matrix invMatrix = Matrix.Invert(WorldMatrix);\n            Vector3 localPlayerBSCenter = Vector3.Transform(MyGuiScreenGamePlay.Static.ControlledEntity.WorldVolume.Center, invMatrix);\n            BoundingSphere localPlayerBS = new BoundingSphere(localPlayerBSCenter, MyGuiScreenGamePlay.Static.ControlledEntity.WorldVolume.Radius);\n                     \n            return m_bbForSoundDetection.Intersects(localPlayerBS);\n        }\n    }\n\n    class MyPrefabScanningPartPlane : MyPrefabScanningPartBase\n    {\n        private MyEntityDetector m_entityDetector;\n        private List<IMyEntityDetectorCriterium> m_scannerCriterias = new List<IMyEntityDetectorCriterium>();\n\n        public MyPrefabScanningPartPlane(MyPrefabScanner scanner)\n            : base(scanner)\n        {            \n            m_scannerCriterias.Add(new MyEntityDetectorCriterium<MyEntity>(1, MyPrefabScanner.CanBeScannedCriterium, true, this));\n            m_entityDetector = new MyEntityDetector();            \n            m_entityDetector.OnEntityEnter += OnEntityEnter;            \n            m_scanner.OnPositionChanged += OnScannerPositionChanged;\n        }\n\n        public override void Init()\n        {\n            base.Init();\n            MyMwcObjectBuilder_EntityDetector detectorBuilder = new MyMwcObjectBuilder_EntityDetector(Size, MyMwcObjectBuilder_EntityDetector_TypesEnum.Box);\n            m_entityDetector.Init(null, detectorBuilder, null, WorldMatrix, m_scannerCriterias);\n        }\n\n        private void OnScannerPositionChanged(object sender, EventArgs e)\n        {\n            UpdateEntityDetectorPosition();\n        }\n\n        private void OnEntityEnter(MyEntityDetector sender, MyEntity entity, int meetCriterias)\n        {\n            m_scanner.NotifyEntityScanned(entity);            \n        }\n\n        public override void SetOffset(float offset)\n        {\n            base.SetOffset(offset);\n            UpdateEntityDetectorPosition();\n        }\n\n        private void UpdateEntityDetectorPosition() \n        {\n            if (m_entityDetector != null) \n            {\n                m_entityDetector.SetWorldMatrix(WorldMatrix);\n            }            \n        }\n\n        private float uvOffset = 0f;\n        public override void Draw()\n        {\n            if (m_on)\n            {\n                Matrix world = WorldMatrix;\n                MyTransparentGeometry.AddBillboardOriented(MyTransparentMaterialEnum.scanner_01, Color, world.Translation, world.Left, world.Up, Size.X / 2f, Size.Y / 2f, new Vector2(uvOffset, uvOffset), 0, true);                \n            }\n        }\n\n        public override void SetOn(bool value)\n        {\n            base.SetOn(value);\n            if (m_on && !m_entityDetector.IsOn())\n            {\n                m_entityDetector.On();\n            }\n            else if (!m_on && m_entityDetector.IsOn())\n            {\n                m_entityDetector.Off();\n            }\n        }\n\n        public override void Update() \n        {\n            uvOffset += 0.01f;       \n        }\n\n        public override void Close()\n        {\n            base.Close();\n            if (m_entityDetector != null) \n            {\n                m_entityDetector.Close();\n                m_entityDetector = null;\n            }\n        }\n\n        public override void Reinit()\n        {\n            base.Reinit();\n            m_entityDetector.Size = Size;\n        }\n    }\n\n    class MyPrefabScanningPartRays : MyPrefabScanningPartBase\n    {\n        class BackgroundScan : IWork\n        {\n            private MyEntity m_scannedEntity;\n            private MyLine m_line;\n            private MyPrefabScanner m_owner;\n            private static readonly Type[] m_typesToScan = new Type[] { typeof(MySmallShip) };\n\n            public BackgroundScan(MyPrefabScanner owner)\n            {\n                m_owner = owner;\n            }\n\n            public MyEntity GetScannedEntity()\n            {\n                return m_scannedEntity;\n            }\n\n            public void Init(MyLine line)\n            {\n                m_scannedEntity = null;\n                m_line = line;\n            }\n\n            public void DoWork()\n            {\n                m_scannedEntity = null;\n                var result = MyEntities.GetIntersectionWithLine_IgnoreOtherThanSpecifiedClass(ref m_line, m_typesToScan, true);\n                if (result != null)\n                {\n                    m_scannedEntity = result.Value.Entity;\n                }\n                else \n                {\n                    m_scannedEntity = null;\n                }\n                //m_scannedEntity = MyEntities.GetAllIntersectionWithLine(ref m_line, m_owner, null, true, true);\n            }\n\n            public WorkOptions Options\n            {\n                get { return new WorkOptions() { MaximumThreads = 1 }; }\n            }\n        }\n        \n        private const float SPACE_BETWEEN_RAYS = 2.8f;      // in meters\n        private const float RAY_THICKNESS = 0.1f;           // in meters\n\n        private BackgroundScan m_work;\n        private Task m_task;\n        private bool m_running = false;\n        private List<Vector3> m_raysStartPositions;\n        private int m_currentIndex = 0;\n\n        public MyPrefabScanningPartRays(MyPrefabScanner scanner)\n            : base(scanner)\n        {\n            m_work = new BackgroundScan(scanner);\n            m_raysStartPositions = new List<Vector3>();\n        }\n\n        public override void Init()\n        {\n            base.Init();\n            InitRays();\n        }\n\n        public override void Reinit()\n        {\n            base.Reinit();\n            InitRays();\n        }\n\n        public override void Close()\n        {\n            base.Close();\n            m_raysStartPositions.Clear();\n            m_raysStartPositions = null;\n            m_work = null;\n        }\n\n        private void InitRays() \n        {\n            m_raysStartPositions.Clear();\n            int raysCount = GetRaysCount();\n            Debug.Assert(raysCount >= 0);\n            float raysHeight = raysCount * RAY_THICKNESS + Math.Max(0, raysCount - 2) * SPACE_BETWEEN_RAYS;\n            float rayY = (RAY_THICKNESS - raysHeight) / 2f;\n            for (int i = 0; i < raysCount; i++)\n            {\n                Vector3 rayPosition = new Vector3(-Size.X / 2f, rayY + i * SPACE_BETWEEN_RAYS, 0f);\n                m_raysStartPositions.Add(rayPosition);\n            }            \n        }\n\n        private int GetRaysCount() \n        {\n            int raysCount = 0;\n            float heightLeft = Size.Y;\n\n            while (heightLeft >= RAY_THICKNESS) \n            {\n                raysCount++;\n                heightLeft -= RAY_THICKNESS;\n                heightLeft -= SPACE_BETWEEN_RAYS;\n            }\n\n            return raysCount;\n        }\n\n        protected override float ColorMultiplicator\n        {\n            get\n            {\n                return 5f;\n            }\n        }\n        \n        public override void SetOffset(float offset)\n        {\n            base.SetOffset(offset);            \n        }        \n\n        public override void Draw()\n        {\n            if (m_on)\n            {\n                Matrix world = WorldMatrix;\n                for (int i = 0; i < m_raysStartPositions.Count; i++)\n                {\n                    Vector3 rayPosition = m_raysStartPositions[i];\n                    Vector3 rayStart = Vector3.Transform(rayPosition, world);                    \n                    MyTransparentGeometry.AddLineBillboard(MyTransparentMaterialEnum.LightRay, Color, rayStart, world.Right, Size.X, RAY_THICKNESS);\n                }\n            }\n        }\n\n        public override void Update()\n        {\n            if (m_on)\n            {\n                if (!m_running)\n                {\n                    if (m_currentIndex >= m_raysStartPositions.Count)\n                    {\n                        m_currentIndex = 0;\n                    }\n                    Matrix world = WorldMatrix;\n                    Vector3 rayPosition = m_raysStartPositions[m_currentIndex];\n                    Vector3 rayStart = Vector3.Transform(rayPosition, world);\n                    Vector3 rayEnd = rayStart + world.Right * Size.X;\n                    MyLine rayLine = new MyLine(rayStart, rayEnd, true);\n                    m_work.Init(rayLine);\n                    m_task = Parallel.Start(m_work);\n                    m_running = true;\n                    m_currentIndex++;\n                }\n\n                if (m_running && m_task.IsComplete)\n                {\n                    MyEntity scannedEntity = m_work.GetScannedEntity();\n                    if (scannedEntity != null && MyPrefabScanner.CanBeScannedCriterium(scannedEntity, this))\n                    {\n                        m_scanner.NotifyEntityScanned(scannedEntity);\n                    }\n                    m_running = false;\n                }\n            }\n        }\n    }    \n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Prefabs/MyPrefabSecurityControlHUB.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.Prefabs;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.AppCode.Game.HUD;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.AppCode.Game.Entities.Prefabs;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing System.Diagnostics;\nusing MinerWars.Resources;\nusing MinerWars.AppCode.Game.Localization;\n\nnamespace MinerWars.AppCode.Game.Prefabs\n{\n    enum MyConnectEntityOperation\n    {\n        Success,\n        NotExists,\n        NotSupported,\n        AlreadyConnected,\n    }\n\n    class MyPrefabSecurityControlHUB : MyPrefabBase, IMyUseableEntity\n    {\n        private static Dictionary<int, List<MySoundCuesEnum>> m_radioChattersForFactions;\n\n        static MyPrefabSecurityControlHUB() \n        {\n            m_radioChattersForFactions = new Dictionary<int, List<MySoundCuesEnum>>();\n            var russianChatters = new List<MySoundCuesEnum>() { MySoundCuesEnum.Amb3D_RadioChatterRussian01_04, MySoundCuesEnum.Amb3D_RadioChatterRussian05_08, MySoundCuesEnum.Amb3D_RadioChatterRussian09_12, MySoundCuesEnum.Amb3D_RadioChatterRussian13_16 };\n            var chineseChatters = new List<MySoundCuesEnum>() { MySoundCuesEnum.Amb3D_RadioChatterChinese01_04, MySoundCuesEnum.Amb3D_RadioChatterChinese05_08, MySoundCuesEnum.Amb3D_RadioChatterChinese09_12, MySoundCuesEnum.Amb3D_RadioChatterChinese13_16 };\n            var alliedChatters = new List<MySoundCuesEnum>() { MySoundCuesEnum.Amb3D_RadioChatterAllied01_04, MySoundCuesEnum.Amb3D_RadioChatterAllied05_08, MySoundCuesEnum.Amb3D_RadioChatterAllied09_12, MySoundCuesEnum.Amb3D_RadioChatterAllied13_16 };\n            foreach (MyMwcObjectBuilder_FactionEnum faction in Enum.GetValues(typeof(MyMwcObjectBuilder_FactionEnum))) \n            {\n                if(faction == MyMwcObjectBuilder_FactionEnum.China || \n                   faction == MyMwcObjectBuilder_FactionEnum.Japan || \n                   faction == MyMwcObjectBuilder_FactionEnum.FreeAsia)\n                {\n                    m_radioChattersForFactions.Add((int)faction, chineseChatters);\n                }\n                else if(faction == MyMwcObjectBuilder_FactionEnum.Russian || \n                   faction == MyMwcObjectBuilder_FactionEnum.Russian_KGB || \n                   faction == MyMwcObjectBuilder_FactionEnum.CSR)\n                {\n                    m_radioChattersForFactions.Add((int)faction, russianChatters);\n                } \n                else\n                {\n                    m_radioChattersForFactions.Add((int)faction, alliedChatters);\n                }                \n            }\n        }\n\n        //const int NUMBER_OF_CHATTER_SOUNDS_PER_FACTION = 4;\n        const int MAX_CHATTER_DISTANCE = 300;\n        const float MAX_CHATTER_DISTANCE_SQUARED = MAX_CHATTER_DISTANCE * MAX_CHATTER_DISTANCE;\n\n        //private List<uint> m_connetectedEntitiesIds = new List<uint>();\n        private List<IMyUseableEntity> m_connectedEntities = new List<IMyUseableEntity>();\n        MySoundCue? chatterCue;\n        private Action<MyEntity> m_onEntityClosingHandler;\n\n        public event Action<IMyUseableEntity> OnEntityConnected;\n        public event Action<IMyUseableEntity> OnEntityDisconnected;\n\n        public MyPrefabSecurityControlHUB(MyPrefabContainer owner)\n            : base(owner)\n        {\n            m_onEntityClosingHandler = OnEntityClosingHandler;\n        }\n\n        protected override void InitPrefab(string displayName, Vector3 relativePosition, Matrix localOrientation, MyMwcObjectBuilder_PrefabBase objectBuilder, MyPrefabConfiguration prefabConfig)\n        {\n            MyMwcObjectBuilder_PrefabSecurityControlHUB objectBuilderSecurityControlHUB = (MyMwcObjectBuilder_PrefabSecurityControlHUB) objectBuilder;\n            //m_connetectedEntitiesIds.AddRange(objectBuilderSecurityControlHUB.ConnectedEntities);\n\n            UseProperties = new MyUseProperties(MyUseType.Solo, MyUseType.Solo);\n            if (objectBuilderSecurityControlHUB.UseProperties == null)\n            {\n                UseProperties.Init(MyUseType.Solo, MyUseType.Solo, 1, 4000, false);\n            }\n            else\n            {\n                UseProperties.Init(objectBuilderSecurityControlHUB.UseProperties);\n            }\n\n            UpdateSound();\n\n            m_needsUpdate = true;\n        }\n\n        public override void Link()\n        {\n            base.Link();\n            MyMwcObjectBuilder_PrefabSecurityControlHUB hubBuilder = base.GetObjectBuilderInternal(true) as MyMwcObjectBuilder_PrefabSecurityControlHUB;\n            foreach (uint connectedEntityId in hubBuilder.ConnectedEntities)\n            {\n                ConnectEntity(connectedEntityId);\n            }\n        }\n\n        private void OnEntityClosingHandler(MyEntity entity) \n        {\n            Debug.Assert(entity.EntityId != null);\n            DisconnetEntity(entity.EntityId.Value.NumericValue);\n        }        \n\n        public override void OnWorldPositionChanged(object source)\n        {\n            base.OnWorldPositionChanged(source);\n\n            if (chatterCue.HasValue && chatterCue.Value.IsPlaying)\n            {\n                MyAudio.UpdateCuePosition(chatterCue, this.GetPosition(), this.GetForward(), this.GetUp(), Vector3.Zero);\n            }\n        }\n\n        void UpdateSound()\n        {\n            var distanceSquared = Vector3.DistanceSquared(MyCamera.Position, this.GetPosition());\n            bool closeEnough = distanceSquared < MAX_CHATTER_DISTANCE_SQUARED;\n            if (IsWorking() && closeEnough)\n            {\n                if (!chatterCue.HasValue || !chatterCue.Value.IsPlaying)\n                {\n                    var soundCueEnum = GetRandomChatterCueForMyFaction();\n                    chatterCue = MyAudio.AddCue3D(\n                        soundCueEnum,\n                        this.GetPosition(),\n                        this.GetForward(),\n                        this.GetUp(),\n                        Vector3.Zero);\n                }\n            }\n            else\n            {\n                StopChatterCue();\n            }\n        }\n\n        public override void UpdateBeforeSimulation()\n        {\n            base.UpdateBeforeSimulation();\n\n            UpdateSound();\n        }\n\n        MySoundCuesEnum GetRandomChatterCueForMyFaction()\n        {            \n            List<MySoundCuesEnum> chattersForFaction = m_radioChattersForFactions[(int)Faction];\n            return chattersForFaction[MyMwcUtils.GetRandomInt(0, chattersForFaction.Count - 1)];\n        }\n\n\n        public override string GetCorrectDisplayName()\n        {\n            string displayName = DisplayName;\n\n            if (DisplayName == \"Camera HUB\")\n            {\n                displayName = MyTextsWrapper.Get(MyTextsWrapperEnum.CameraHUB).ToString();\n            }\n\n            if (DisplayName == \"Weapon Control\")\n            {\n                displayName = MyTextsWrapper.Get(MyTextsWrapperEnum.WeaponControl).ToString();\n            }\n\n                  \n            return displayName;\n        }\n\n        protected override void SetHudMarker()\n        {\n\n            MyHud.ChangeText(this, new StringBuilder(GetCorrectDisplayName()), MyGuitargetMode.Neutral, 0, MyHudIndicatorFlagsEnum.SHOW_TEXT | MyHudIndicatorFlagsEnum.SHOW_BORDER_INDICATORS | MyHudIndicatorFlagsEnum.SHOW_HEALTH_BARS | MyHudIndicatorFlagsEnum.SHOW_DISTANCE | MyHudIndicatorFlagsEnum.ALPHA_CORRECTION_BY_DISTANCE | MyHudIndicatorFlagsEnum.SHOW_MISSION_MARKER);            \n        }\n\n        protected override MyMwcObjectBuilder_Base GetObjectBuilderInternal(bool getExactCopy)\n        {\n            var objectBuilder = (MyMwcObjectBuilder_PrefabSecurityControlHUB) base.GetObjectBuilderInternal(getExactCopy);\n\n            if (objectBuilder.ConnectedEntities == null)\n            {\n                objectBuilder.ConnectedEntities = new List<uint>();\n            }\n            else \n            { \n                objectBuilder.ConnectedEntities.Clear(); \n            }\n            foreach (IMyUseableEntity connectedEntity in m_connectedEntities) \n            {\n                MyEntity entity = connectedEntity as MyEntity;\n                Debug.Assert(entity != null);\n                Debug.Assert(entity.EntityId != null);\n                objectBuilder.ConnectedEntities.Add(entity.EntityId.Value.NumericValue);\n            }\n            objectBuilder.UseProperties = UseProperties.GetObjectBuilder();\n\n            return objectBuilder;\n        }\n\n        public List<IMyUseableEntity> ConnectedEntities\n        {\n            get { return m_connectedEntities; }\n        }\n\n        public MyConnectEntityOperation ConnectEntity(uint entityId)\n        {\n            MyConnectEntityOperation result;\n\n            MyEntity entityById = MyEntities.GetEntityByIdOrNull(new MyEntityIdentifier(entityId));\n            if (entityById == null)\n            {\n                result = MyConnectEntityOperation.NotExists;\n            }\n            else\n            {\n                IMyUseableEntity connectableEntity = entityById as IMyUseableEntity;\n                if (connectableEntity == null || (connectableEntity.UseProperties.UseType & MyUseType.FromHUB) == 0 || !(connectableEntity is IMyHasGuiControl))\n                {\n                    result = MyConnectEntityOperation.NotSupported;\n                }\n                else\n                {\n                    if (m_connectedEntities.Contains(connectableEntity))\n                    {\n                        result = MyConnectEntityOperation.AlreadyConnected;\n                    }\n                    else\n                    {\n                        entityById.OnClosing += m_onEntityClosingHandler;\n                        m_connectedEntities.Add(connectableEntity);\n                        result = MyConnectEntityOperation.Success;\n\n                        if (OnEntityConnected != null) \n                        {\n                            OnEntityConnected(connectableEntity);\n                        }\n                    }\n                }\n            }\n\n            return result;\n        }\n\n        public MyConnectEntityOperation DisconnetEntity(uint entityId) \n        {\n            MyEntity entity = MyEntities.GetEntityByIdOrNull(new MyEntityIdentifier(entityId));\n            Debug.Assert(entity != null);\n            IMyUseableEntity useableEntity = entity as IMyUseableEntity;\n            Debug.Assert(useableEntity != null);\n            if (entity != null)\n            {\n                entity.OnClosing -= m_onEntityClosingHandler;\n            }\n            bool removed = m_connectedEntities.Remove(useableEntity);\n            \n            if (removed && OnEntityDisconnected != null) \n            {\n                OnEntityDisconnected(useableEntity);\n            }\n\n            var result = removed ? MyConnectEntityOperation.Success : MyConnectEntityOperation.NotExists;\n\n            return result;\n        }\n\n        public void DisconnectAllEntities() \n        {\n            while (m_connectedEntities.Count > 0) \n            {\n                MyEntity entity = m_connectedEntities[0] as MyEntity;\n                Debug.Assert(entity.EntityId != null);\n                DisconnetEntity(entity.EntityId.Value.NumericValue);\n            }\n            Debug.Assert(m_connectedEntities.Count == 0);\n        }\n\n        public MyMwcObjectBuilder_PrefabSecurityControlHUB_TypesEnum PrefabSecurityControlHUBType\n        {\n            get\n            {\n                return (MyMwcObjectBuilder_PrefabSecurityControlHUB_TypesEnum)m_prefabId;\n            }\n            set\n            {\n                m_prefabId = (int)value;\n            }\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyPrefabSecurityControlHUB\";\n        }\n\n        public void Use(MySmallShip useBy)\n        {\n            //if (ConnectedEntityIds.Any())\n            //{\n            //    MyGuiManager.AddScreen(new MyGuiScreenSecurityControlHUB(useBy, this));\n            //}\n            var screenSecurityControlHUB = new MyGuiScreenSecurityControlHUB(useBy, this);\n            MyGuiScreenGamePlay.Static.DisplaySecurityHubScreen(screenSecurityControlHUB);\n        }\n\n        public void UseFromHackingTool(MySmallShip useBy, int hackingLevelDifference) \n        {\n            if (ConnectedEntities.Count > 0)\n            {\n                Use(useBy);\n            }\n        }\n\n        public bool CanBeUsed(MySmallShip usedBy)\n        {\n            return (ConnectedEntities.Count > 0) && IsWorking() && (MyFactions.GetFactionsRelation(usedBy, this) == MyFactionRelationEnum.Friend || UseProperties.IsHacked);\n        }\n\n        public bool CanBeHacked(MySmallShip hackedBy)\n        {\n            return IsWorking() && (MyFactions.GetFactionsRelation(hackedBy, this) == MyFactionRelationEnum.Neutral ||\n                MyFactions.GetFactionsRelation(hackedBy, this) == MyFactionRelationEnum.Enemy);\n        }\n\n        public MyUseProperties UseProperties { get; set; }\n\n        protected override void WorkingChanged()\n        {\n            base.WorkingChanged();\n            UpdateSound();\n        }\n\n        public override void Close()\n        {\n            StopChatterCue();\n            DisconnectAllEntities();\n            base.Close();\n        }\n\n        void StopChatterCue()\n        {\n            if (chatterCue.HasValue && chatterCue.Value.IsPlaying)\n            {\n                chatterCue.Value.Stop(SharpDX.XACT3.StopFlags.Release);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Prefabs/MyPrefabSnapPoint.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Entities.Prefabs;\nusing MinerWarsMath;\n\nnamespace MinerWars.AppCode.Game.Prefabs\n{\n    /// <summary>\n    /// Snap point\n    /// </summary>\n    class MyPrefabSnapPoint\n    {\n        /// <summary>\n        /// Helper class for snap point type and contraints\n        /// </summary>\n        public class MyPrefabSnapPointType\n        {\n            public BuildTypesEnum? BuildType;\n            public CategoryTypesEnum? CategoryType;\n            public SubCategoryTypesEnum? SubCategoryType;\n\n            /// <summary>\n            /// Only when BuildType is null, true means all, false means none\n            /// </summary>\n            public bool AllBuildTypes;\n\n            /// <summary>\n            /// Only when CategoryType is null, true means all, false means none\n            /// </summary>\n            public bool AllCategoryTypes;\n\n            /// <summary>\n            /// Only when SubCategoryType is null, true means all, false means none\n            /// </summary>\n            public bool AllSubCategoryTypes;\n\n            public MyPrefabSnapPointType(string prefix, string postfix, Dictionary<string, object> customData)\n            {\n                string buildTypeKey = prefix + \"BUILD_TYPE\" + postfix;\n                string categoryTypeKey = prefix + \"CATEGORY\" + postfix;\n                string subCategoryTypeKey = prefix + \"SUBCATEGORY\" + postfix;\n\n                GetEnumValue(GetValue(customData, buildTypeKey), out BuildType, out AllBuildTypes);\n                GetEnumValue(GetValue(customData, categoryTypeKey), out CategoryType, out AllCategoryTypes);\n                GetEnumValue(GetValue(customData, subCategoryTypeKey), out SubCategoryType, out AllSubCategoryTypes);\n            }\n\n            private object GetValue(Dictionary<string, object> customData, string key)\n            {\n                foreach (var item in customData)\n                {\n                    if (string.Compare(item.Key, key, true) == 0)\n                    {\n                        return item.Value;\n                    }\n                }\n\n                throw new NotImplementedException();\n            }\n\n            private void GetEnumValue<T>(object objectValue, out T? enumValue, out bool all) where T : struct\n            {\n                string stringValue = objectValue == null ? null : objectValue.ToString();\n                T value;\n                if (!string.IsNullOrEmpty(stringValue) && Enum.TryParse<T>(stringValue, true, out value))\n                {\n                    enumValue = value;\n                    all = false;\n                }\n                else\n                {\n                    enumValue = null;\n                    all = string.Compare(\"ANY\", stringValue, true) == 0;\n                }\n            }\n\n            /// <summary>\n            /// True, if this snap point can be atached to specified snap point\n            /// </summary>\n            public bool CanAttachTo(MyPrefabSnapPointType to)\n            {\n                return\n                    (to.AllBuildTypes || to.BuildType == BuildType) &&\n                    (to.AllCategoryTypes || to.CategoryType == CategoryType) &&\n                    (to.AllSubCategoryTypes || to.SubCategoryType == SubCategoryType);\n            }\n        }\n\n        /// <summary>\n        /// Snap point can't be selected and is not rendered if invisible\n        /// </summary>\n        public bool Visible { get; set; }\n\n        /// <summary>\n        /// Name of Snap Point (from dummy dictionary)\n        /// </summary>\n        public string Name;\n\n        /// <summary>\n        /// Snap Point Parent\n        /// </summary>\n        public MyPrefabBase Prefab { get; set; }\n\n        /// <summary>\n        /// Dummy matrix\n        /// </summary>\n        public Matrix Matrix { get; set; }\n\n        /// <summary>\n        /// Type of Snap Point\n        /// </summary>\n        public MyPrefabSnapPointType SnapType { get; set; }\n\n        /// <summary>\n        /// Supported  Snap Points\n        /// </summary>\n        public List<MyPrefabSnapPointType> SnapTargets { get; set; }\n\n        /// <summary>\n        /// Constructor\n        /// </summary>\n        public MyPrefabSnapPoint(MyPrefabBase prefab)\n        {\n            Visible = true;\n            Prefab = prefab;\n            SnapTargets = new List<MyPrefabSnapPointType>();\n        }\n\n        /// <summary>\n        /// Returns snap point size in screen coordinates (depends on screen reslution)\n        /// </summary>\n        public static float GetFixedSnapSize()\n        {\n            return MyGuiManager.GetScreenSizeFromNormalizedSize(new Vector2(0.015f, 0.015f)).Y;\n        }\n\n        /// <summary>\n        /// Returns snap point size (see GetFixedSnapSize)\n        /// </summary>\n        public static float GetRealSnapSize()\n        {\n            return 5.0f;\n        }\n\n        /// <summary>\n        /// True if this snap point can attach to specified snapPoint\n        /// </summary>\n        public bool CanAttachTo(MyPrefabSnapPoint snapPoint)\n        {\n            return Prefab != snapPoint.Prefab && snapPoint.SnapTargets.Exists(a => SnapType.CanAttachTo(a));\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Prefabs/MyPrefabSound.cs",
    "content": "﻿using MinerWarsMath;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.AppCode.Game.Entities.SubObjects;\nusing MinerWars.AppCode.Game.Prefabs;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.Prefabs;\nusing MinerWars.AppCode.Game.Models;\nusing System.Collections.Generic;\n\nusing System.Text;\nusing MinerWars.AppCode.Physics;\nusing System;\nusing MinerWars.CommonLIB.AppCode.Import;\n\n\nnamespace MinerWars.AppCode.Game.Entities.Prefabs\n{\n    class MyPrefabSound : MyPrefabBase\n    {\n        MySoundCuesEnum m_cueEnum;\n        MySoundCue? m_cue;\n        Matrix m_pointLocalMatrix;\n        MyPrefabConfigurationSound m_prefabSoundConfig;\n\n        protected override void WorkingChanged()\n        {\n            base.WorkingChanged();\n            if (IsWorking())\n            {\n                PlaySound();\n            }\n            else \n            {\n                StopSound();\n            }\n        }\n\n        public MyPrefabSound(MyPrefabContainer owner) \n            : base(owner)\n        {            \n        }        \n\n        protected override void InitPrefab(string displayName, Vector3 relativePosition, Matrix localOrientation, MyMwcObjectBuilder_PrefabBase objectBuilder, MyPrefabConfiguration prefabConfig)\n        {\n            m_prefabSoundConfig = prefabConfig as MyPrefabConfigurationSound;            \n\n            MyModel model = MyModels.GetModelOnlyDummies(m_prefabSoundConfig.ModelLod0Enum);\n            m_pointLocalMatrix = Matrix.Identity;\n            m_cueEnum = m_prefabSoundConfig.Sound;\n            foreach (KeyValuePair<string, MyModelDummy> pair in model.Dummies)\n            {\n                m_pointLocalMatrix = pair.Value.Matrix;\n            }\n\n            if (IsWorking())\n            {\n                PlaySound();\n            }\n        }\n\n        public override void UpdateBeforeSimulation()\n        {\n            base.UpdateBeforeSimulation();\n\n            if (Parent == null) return;\n\n            if (m_cue == null || !m_cue.Value.IsPlaying) return;\n\n            MyAudio.UpdateCuePosition(m_cue, Vector3.Transform(m_pointLocalMatrix.Translation, base.WorldMatrix), WorldMatrix.Forward, WorldMatrix.Up, Parent.Physics.LinearVelocity);\n        }\n\n        private void PlaySound() \n        {\n            if (m_cue == null || !m_cue.Value.IsPlaying)\n            {\n                m_cue = MyAudio.AddCue3D(m_cueEnum, Vector3.Transform(m_pointLocalMatrix.Translation, base.WorldMatrix), WorldMatrix.Forward, WorldMatrix.Up, Physics.LinearVelocity);\n            }\n        }\n\n        private void StopSound() \n        {\n            if (m_cue != null && m_cue.Value.IsPlaying)\n            {\n                m_cue.Value.Stop(SharpDX.XACT3.StopFlags.Immediate);\n            }\n            m_cue = null;\n        }\n\n        protected override MyMwcObjectBuilder_Base GetObjectBuilderInternal(bool getExactCopy)\n        {\n            MyMwcObjectBuilder_PrefabSound objectBuilder = base.GetObjectBuilderInternal(getExactCopy) as MyMwcObjectBuilder_PrefabSound;\n            \n            return objectBuilder;\n        }\n\n        protected override void UpdatePrefabAfterSimulation()\n        {\n            base.UpdatePrefabAfterSimulation();\n            /*\n            if (m_cue != null && m_cue.Value.IsPlaying)\n            {\n                MyAudio.CalculateOcclusion(m_cue.Value, m_cue.Value.Center);\n            }\n            */            \n\n            PlaySound();\n            if (m_cue != null && m_cue.Value.IsPlaying)\n            {\n                MyAudio.UpdateCuePosition(m_cue, Vector3.Transform(m_pointLocalMatrix.Translation, base.WorldMatrix), WorldMatrix.Forward, WorldMatrix.Up, Physics.LinearVelocity);\n            }\n        }\n\n        public override void Close()\n        {\n            base.Close();\n            StopSound();            \n        }\n\n        public MyMwcObjectBuilder_PrefabSound_TypesEnum PrefabSoundType\n        {\n            get\n            {\n                return (MyMwcObjectBuilder_PrefabSound_TypesEnum)m_prefabId;\n            }\n            set\n            {\n                m_prefabId = (int)value;\n            }\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyPrefabSound\";\n        }        \n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Prefabs/PrefabConfigurations/MyPrefabConfiguration.cs",
    "content": "﻿using System;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Explosions;\nusing MinerWars.AppCode.Game.Models;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.AppCode.Game.Gameplay;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.AppCode.Game.Utils;\n\nnamespace MinerWars.AppCode.Game.Prefabs\n{\n    class MyPrefabConfiguration\n    {\n        public const float DEFAULT_ROTATING_VELOCITY = (float)(Math.PI * 2);   // in rad/sec\n\n        private readonly MyModelsEnum m_modelLod0Enum;\n        private readonly MyModelsEnum? m_modelLod1Enum;   //if lod m_modelLod1Enum is same as Lod0 -> entity has no lod1\n        private readonly MyModelsEnum? m_collisionModelEnum; //collision model for prefab\n\n        public readonly BuildTypesEnum BuildType;\n        public readonly CategoryTypesEnum CategoryType;\n        public readonly SubCategoryTypesEnum? SubCategoryType;\n        public readonly MyMaterialType MaterialType;\n        public readonly PrefabTypesFlagEnum PrefabTypeFlag;\n\n        /// <summary>\n        /// If not null, indicates the faction for which this prefab is exclusive.\n        /// </summary>\n        public readonly MyMwcObjectBuilder_Prefab_AppearanceEnum? FactionSpecific;\n\n        /// <summary>\n        /// Indicates if the prefab type can be added from the editor.\n        /// </summary>\n        public readonly bool EnabledInEditor;\n\n        /// <summary>\n        /// Indicates whether the preview image for this prefab should be from a different angle than normal.\n        /// Use for flat objects that have incorrect default previews (such as signs).\n        /// </summary>\n        public readonly MyPreviewPointOfView PreviewPointOfView;\n\n        /// <summary>\n        /// Indicates what explosion type the prefab generates after it is destroyed.\n        /// </summary>\n        public MyExplosionTypeEnum ExplosionType;\n\n        /// <summary>\n        /// The multiplier for the radius of the destruction explosion effect.\n        /// </summary>\n        public readonly float ExplosionRadiusMultiplier;\n\n        /// <summary>\n        /// The multiplier for the damaged caused by the explosion of the prefab.\n        /// </summary>\n        public float ExplosionDamage;\n\n        /// <summary>\n        /// The multiplier for the scale of the particle effect created when the prefab explodes.\n        /// </summary>\n        public readonly float ExplosionParticleEffectScale;\n\n        /// <summary>\n        /// Min object's size for create explosion\n        /// </summary>\n        public readonly float MinSizeForExplosion;\n\n        /// <summary>\n        /// True if destroying of this prefab raises alarm in container\n        /// </summary>\n        public readonly bool CausesAlarm;\n\n        /// <summary>\n        /// True if prefab requires energy to operate\n        /// </summary>\n        public readonly bool? RequiresEnergy;\n\n        public MyModelsEnum ModelLod0Enum { get { return m_modelLod0Enum; } }\n        public MyModelsEnum? ModelLod1Enum { get { return m_modelLod1Enum; } }\n        public MyModelsEnum? ModelCollisionEnum { get { return m_collisionModelEnum; } }\n\n        /// <summary>\n        /// Minimum electric capacity, emp weapons limit\n        /// </summary>\n        public readonly float MinElectricCapacity;\n        public readonly float MaxElectricCapacity;\n\n        public readonly bool NeedsUpdate;\n        public readonly bool InitPhysics;\n        public readonly float RotatingVelocity;\n\n        // These are used only when prefab has rotating parts.\n        public readonly MySoundCuesEnum? StartRotatingCue;\n        public readonly MySoundCuesEnum? LoopRotatingCue;\n        public readonly MySoundCuesEnum? LoopRotatingDamagedCue;\n        public readonly MySoundCuesEnum? EndRotatingCue;\n\n        public readonly bool DisplayHud;\n\n        /// <summary>\n        /// Creates new instance of prefab configuration\n        /// </summary>\n        /// <param name=\"modelLod0Enum\">Model LOD0</param>\n        /// <param name=\"modelLod1Enum\">Model LOD2</param>\n        /// <param name=\"buildType\">Build type</param>\n        /// <param name=\"categoryType\">Category type</param>\n        /// <param name=\"subCategoryType\">Subcategory type</param>\n        /// <param name=\"materialType\">Material type</param>\n        /// <param name=\"prefabTypeFlag\">Prefab type flags</param>\n        protected MyPrefabConfiguration(\n            MyModelsEnum modelLod0Enum,\n            MyModelsEnum? modelLod1Enum,\n            BuildTypesEnum buildType,\n            CategoryTypesEnum categoryType,\n            SubCategoryTypesEnum? subCategoryType,\n            MyMaterialType materialType,\n            PrefabTypesFlagEnum prefabTypeFlag,\n            MyModelsEnum? collisionModelEnum = null,\n            MyMwcObjectBuilder_Prefab_AppearanceEnum? factionSpecific = null,\n            bool needsUpdate = false,\n            bool initPhysics = true,\n            bool enabledInEditor = true,\n            float rotatingVelocity = DEFAULT_ROTATING_VELOCITY,\n            MySoundCuesEnum? startRotatingCue = null,\n            MySoundCuesEnum? loopRotatingCue = null,\n            MySoundCuesEnum? loopRotatingDamagedCue = null,\n            MySoundCuesEnum? endRotatingCue = null,\n            MyPreviewPointOfViewEnum previewAngle = MyPreviewPointOfViewEnum.Front,\n            float minElectricCapacity = MyGameplayConstants.DEFAULT_MIN_ELECTRIC_CAPACITY,\n            float maxElectricCapacity = MyGameplayConstants.DEFAULT_MAX_ELECTRIC_CAPACITY,\n            MyExplosionTypeEnum explosionType = MyExplosionTypeEnum.SMALL_SHIP_EXPLOSION,\n            float explosionRadiusMultiplier = 1,\n            float explosionDamage = 1,\n            float minSizeForExplosion = MyExplosionsConstants.MIN_OBJECT_SIZE_TO_CAUSE_EXPLOSION_AND_CREATE_DEBRIS,\n            bool causesAlarm = false,\n            bool requiresEnergy = false,\n            float explosionParticleEffectScale = 1,\n            bool displayHud = false)\n            : this(buildType, categoryType, subCategoryType, materialType, prefabTypeFlag, factionSpecific, needsUpdate, initPhysics, enabledInEditor, rotatingVelocity, \n            startRotatingCue, loopRotatingCue, loopRotatingDamagedCue, endRotatingCue,\n            previewAngle, minElectricCapacity, maxElectricCapacity, explosionType, explosionRadiusMultiplier, explosionDamage, minSizeForExplosion, causesAlarm, requiresEnergy: requiresEnergy, explosionParticleEffectScale: explosionParticleEffectScale, displayHud: displayHud)\n        {\n            m_modelLod0Enum = modelLod0Enum;\n            m_modelLod1Enum = modelLod1Enum;\n            m_collisionModelEnum = collisionModelEnum;\n        }\n\n        /// <summary>\n        /// Creates new instance of prefab configuration with default prefab type flags\n        /// </summary>\n        /// <param name=\"modelLod0Enum\">Model LOD0</param>\n        /// <param name=\"modelLod1Enum\">Model LOD2</param>\n        /// <param name=\"buildType\">Build type</param>\n        /// <param name=\"categoryType\">Category type</param>\n        /// <param name=\"subCategoryType\">Subcategory type</param>\n        /// <param name=\"materialType\">Material type</param>\n        /// <param name=\"factionSpecific\">To which faction is this prefab specific. Null if prefab is for all factions. Used for material (texture) set availability. </param>     \n        public MyPrefabConfiguration(\n            MyModelsEnum modelLod0Enum,\n            MyModelsEnum? modelLod1Enum,\n            BuildTypesEnum buildType,\n            CategoryTypesEnum categoryType,\n            SubCategoryTypesEnum? subCategoryType,\n            MyMaterialType materialType,\n            MyMwcObjectBuilder_Prefab_AppearanceEnum? factionSpecific = null,\n            MyModelsEnum? collisionModelEnum = null,\n            bool needsUpdate = false,\n            bool initPhysics = true,\n            bool enabledInEditor = true,\n            float rotatingVelocity = DEFAULT_ROTATING_VELOCITY,\n            MySoundCuesEnum? startRotatingCue = null,\n            MySoundCuesEnum? loopRotatingCue = null,\n            MySoundCuesEnum? loopRotatingDamagedCue = null,\n            MySoundCuesEnum? endRotatingCue = null,\n            MyPreviewPointOfViewEnum previewAngle = MyPreviewPointOfViewEnum.Front,\n            MyExplosionTypeEnum explosionType = MyExplosionTypeEnum.SMALL_SHIP_EXPLOSION,\n            float explosionRadiusMultiplier = 1,\n            float explosionDamageMultiplier = 1,\n            float minSizeForExplosion = MyExplosionsConstants.MIN_OBJECT_SIZE_TO_CAUSE_EXPLOSION_AND_CREATE_DEBRIS,\n            bool causesAlarm = false,\n            bool requiresEnergy = false,\n            float explosionParticleEffectScale = 1,\n            bool displayHud = false)\n            : this(modelLod0Enum, modelLod1Enum, buildType, categoryType, subCategoryType, materialType, PrefabTypesFlagEnum.Default, collisionModelEnum, factionSpecific, needsUpdate, initPhysics, enabledInEditor, rotatingVelocity,\n            startRotatingCue, loopRotatingCue, loopRotatingDamagedCue, endRotatingCue,\n            previewAngle, explosionType: explosionType, explosionRadiusMultiplier: explosionRadiusMultiplier, explosionDamage: explosionDamageMultiplier, minSizeForExplosion: minSizeForExplosion, causesAlarm: causesAlarm, requiresEnergy: requiresEnergy, explosionParticleEffectScale: explosionParticleEffectScale, displayHud: displayHud)\n        {\n            System.Diagnostics.Debug.Assert(modelLod0Enum != modelLod1Enum, \"LOD0 and LOD1 models are the same!\");\n            if (collisionModelEnum != null)\n            {\n                System.Diagnostics.Debug.Assert(modelLod0Enum != collisionModelEnum, \"LOD0 and COL models are the same!\");\n                System.Diagnostics.Debug.Assert(modelLod1Enum != collisionModelEnum, \"LOD1 and COL models are the same!\");\n            }\n        }\n\n        /// <summary>\n        /// Creates new instance of prefab configuration without model\n        /// </summary>\n        /// <param name=\"buildType\">Build type</param>\n        /// <param name=\"categoryType\">Category type</param>\n        /// <param name=\"subCategoryType\">Subcategory type</param>\n        /// <param name=\"materialType\">Material type</param>\n        /// <param name=\"prefabTypeFlag\">Prefab type flags</param>\n        /// <param name=\"factionSpecific\">To which faction is this prefab specific. Null if prefab is for all factions. Used for material (texture) set availability. </param>\n        /// <param name=\"previewPointOfView\">Indicates whether the preview image for this prefab should be from a different angle than normal. Use for flat objects that have incorrect default previews (such as signs). </param>\n        protected MyPrefabConfiguration(\n            BuildTypesEnum buildType,\n            CategoryTypesEnum categoryType,\n            SubCategoryTypesEnum? subCategoryType,\n            MyMaterialType materialType,\n            PrefabTypesFlagEnum prefabTypeFlag,\n            MyMwcObjectBuilder_Prefab_AppearanceEnum? factionSpecific = null,\n            bool needsUpdate = false,\n            bool initPhysics = true,\n            bool enabledInEditor = true,\n            float rotatingVelocity = DEFAULT_ROTATING_VELOCITY,\n            MySoundCuesEnum? startRotatingCue = null,\n            MySoundCuesEnum? loopRotatingCue = null,\n            MySoundCuesEnum? loopRotatingDamagedCue = null,\n            MySoundCuesEnum? endRotatingCue = null,\n            MyPreviewPointOfViewEnum previewPointOfView = MyPreviewPointOfViewEnum.Front,\n            float minElectricCapacity = MyGameplayConstants.DEFAULT_MIN_ELECTRIC_CAPACITY,\n            float maxElectricCapacity = MyGameplayConstants.DEFAULT_MAX_ELECTRIC_CAPACITY,\n            MyExplosionTypeEnum explosionType = MyExplosionTypeEnum.SMALL_SHIP_EXPLOSION,\n            float explosionRadiusMultiplier = 1.5f,\n            float explosionDamageMultiplier = 1,\n            float minSizeForExplosion = MyExplosionsConstants.MIN_OBJECT_SIZE_TO_CAUSE_EXPLOSION_AND_CREATE_DEBRIS,\n            bool causesAlarm = false,\n            bool requiresEnergy = false,\n            float explosionParticleEffectScale = 1,\n            bool displayHud = false)\n        {\n            //m_modelLod0Enum = null;\n            m_modelLod1Enum = null;\n\n            BuildType = buildType;\n            CategoryType = categoryType;\n            SubCategoryType = subCategoryType;\n            MaterialType = materialType;\n            PrefabTypeFlag = prefabTypeFlag;\n            FactionSpecific = factionSpecific;\n            EnabledInEditor = enabledInEditor;\n            RotatingVelocity = rotatingVelocity;\n            StartRotatingCue = startRotatingCue;\n            LoopRotatingCue = loopRotatingCue;\n            LoopRotatingDamagedCue = loopRotatingDamagedCue;\n            EndRotatingCue = endRotatingCue;\n            PreviewPointOfView = new MyPreviewPointOfView(previewPointOfView);\n            MinElectricCapacity = minElectricCapacity;\n            MaxElectricCapacity = maxElectricCapacity;\n            NeedsUpdate = needsUpdate;\n            InitPhysics = initPhysics;\n            ExplosionType = explosionType;\n            ExplosionRadiusMultiplier = explosionRadiusMultiplier;\n            ExplosionDamage = explosionDamageMultiplier;\n            ExplosionParticleEffectScale = explosionParticleEffectScale;\n            MinSizeForExplosion = minSizeForExplosion;\n            CausesAlarm = causesAlarm;\n            RequiresEnergy = requiresEnergy;\n            DisplayHud = displayHud;\n        }\n    }\n\n    public enum MyPreviewPointOfViewEnum\n    {\n        Front,\n        Top,\n        Bottom,\n        FrontLeft,\n        Left,\n        BottomLeft,\n        RearLeft,\n        RearLeftLeft\n    }\n\n    public struct MyPreviewPointOfView\n    {\n        private readonly MyPreviewPointOfViewEnum m_pointOfView;\n\n        private readonly Matrix m_transform;\n\n        public Matrix Transform\n        {\n            get { return m_transform; }\n        }\n\n        public MyPreviewPointOfView(MyPreviewPointOfViewEnum pointOfView)\n        {\n            m_pointOfView = pointOfView;\n\n            switch (pointOfView)\n            {\n                case MyPreviewPointOfViewEnum.Front:\n                    m_transform = Matrix.Identity;\n                    break;\n                case MyPreviewPointOfViewEnum.Top:\n                    m_transform = Matrix.CreateRotationX(MathHelper.PiOver2);\n                    break;\n                case MyPreviewPointOfViewEnum.Bottom:\n                    m_transform = Matrix.CreateRotationX(MathHelper.PiOver2);\n                    m_transform *= Matrix.CreateRotationY(MathHelper.Pi);\n                    break;\n                case MyPreviewPointOfViewEnum.FrontLeft:\n                    m_transform = Matrix.CreateRotationX(MathHelper.ToRadians(10));\n                    m_transform *= Matrix.CreateRotationY(MathHelper.ToRadians(15));\n                    break;\n                case MyPreviewPointOfViewEnum.Left:\n                    m_transform = Matrix.CreateRotationY(MathHelper.ToRadians(45));\n                    break;\n                case MyPreviewPointOfViewEnum.BottomLeft:\n                    m_transform = Matrix.CreateRotationX(MathHelper.PiOver2);\n                    m_transform *= Matrix.CreateRotationY(MathHelper.PiOver4);\n                    break;\n                case MyPreviewPointOfViewEnum.RearLeft:\n                    m_transform = Matrix.CreateRotationY(-MathHelper.PiOver2);\n                    break;\n                case MyPreviewPointOfViewEnum.RearLeftLeft:\n                    m_transform = Matrix.CreateRotationY(MathHelper.ToRadians(67));\n                    break;\n                default:\n                    throw new ArgumentOutOfRangeException(\"pointOfView\");\n            }\n        }\n\n        public override string ToString()\n        {\n            return m_pointOfView.ToString();\n        }\n    }\n\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Prefabs/PrefabConfigurations/MyPrefabConfigurationAlarm.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Models;\n\nnamespace MinerWars.AppCode.Game.Prefabs\n{\n    class MyPrefabConfigurationAlarm : MyPrefabConfiguration\n    {\n        public MyModelsEnum ModelLod0EnumOn;\n        public MyModelsEnum? ModelLod1EnumOn;\n\n        public MyPrefabConfigurationAlarm(MyModelsEnum modelLod0Enum, MyModelsEnum? modelLod1Enum, MyModelsEnum modelLod0EnumOn, MyModelsEnum? modelLod1EnumOn, BuildTypesEnum buildType, CategoryTypesEnum categoryType,\n            SubCategoryTypesEnum? subCategoryType, MyMaterialType materialType)\n            : this(modelLod0Enum, modelLod1Enum, modelLod0EnumOn, modelLod1EnumOn, buildType, categoryType, subCategoryType, materialType, PrefabTypesFlagEnum.Alarm)\n        {\n        }\n\n        public MyPrefabConfigurationAlarm(MyModelsEnum modelLod0Enum, MyModelsEnum? modelLod1Enum, MyModelsEnum modelLod0EnumOn, MyModelsEnum? modelLod1EnumOn, BuildTypesEnum buildType, CategoryTypesEnum categoryType,\n            SubCategoryTypesEnum? subCategoryType, MyMaterialType materialType, PrefabTypesFlagEnum prefabTypeFlag)\n            : base(modelLod0Enum, modelLod1Enum, buildType, categoryType, subCategoryType, materialType, prefabTypeFlag, needsUpdate: true, requiresEnergy: false)\n        {\n            ModelLod0EnumOn = modelLod0EnumOn;\n            ModelLod1EnumOn = modelLod1EnumOn;\n        }    \n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Prefabs/PrefabConfigurations/MyPrefabConfigurationBankNode.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Models;\n\nnamespace MinerWars.AppCode.Game.Prefabs\n{\n    class MyPrefabConfigurationBankNode : MyPrefabConfiguration\n    {\n        public MyPrefabConfigurationBankNode(MyModelsEnum modelLod0Enum, MyModelsEnum? modelLod1Enum, BuildTypesEnum buildType, CategoryTypesEnum categoryType,\n            SubCategoryTypesEnum? subCategoryType, MyMaterialType materialType, MyModelsEnum? collisionModelEnum = null)\n            : this(modelLod0Enum, modelLod1Enum, buildType, categoryType, subCategoryType, materialType, PrefabTypesFlagEnum.Default, collisionModelEnum)\n        {\n        }\n\n        public MyPrefabConfigurationBankNode(MyModelsEnum modelLod0Enum, MyModelsEnum? modelLod1Enum, BuildTypesEnum buildType, CategoryTypesEnum categoryType,\n            SubCategoryTypesEnum? subCategoryType, MyMaterialType materialType, PrefabTypesFlagEnum prefabTypeFlag, MyModelsEnum? collisionModelEnum = null)\n            : base(modelLod0Enum, modelLod1Enum, buildType, categoryType, subCategoryType, materialType, prefabTypeFlag, collisionModelEnum: collisionModelEnum, requiresEnergy: true, displayHud: true)\n        {\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Prefabs/PrefabConfigurations/MyPrefabConfigurationCamera.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Models;\n\nnamespace MinerWars.AppCode.Game.Prefabs\n{\n    class MyPrefabConfigurationCamera : MyPrefabConfiguration\n    {\n\n        public MyPrefabConfigurationCamera(MyModelsEnum modelLod0Enum, MyModelsEnum? modelLod1Enum, BuildTypesEnum buildType, CategoryTypesEnum categoryType,\n            SubCategoryTypesEnum? subCategoryType, MyMaterialType materialType)\n            : this(modelLod0Enum, modelLod1Enum, buildType, categoryType, subCategoryType, materialType, PrefabTypesFlagEnum.Scanner)\n        {\n        }\n\n        public MyPrefabConfigurationCamera(MyModelsEnum modelLod0Enum, MyModelsEnum? modelLod1Enum, BuildTypesEnum buildType, CategoryTypesEnum categoryType,\n                SubCategoryTypesEnum? subCategoryType, MyMaterialType materialType, PrefabTypesFlagEnum prefabTypeFlag)\n            : base(modelLod0Enum, modelLod1Enum, buildType, categoryType, subCategoryType, materialType, prefabTypeFlag, requiresEnergy: true)\n        {\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Prefabs/PrefabConfigurations/MyPrefabConfigurationFoundationFactory.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Models;\n\nnamespace MinerWars.AppCode.Game.Prefabs\n{\n    class MyPrefabConfigurationFoundationFactory : MyPrefabConfiguration\n    {\n        public MyPrefabConfigurationFoundationFactory(MyModelsEnum modelLod0Enum, MyModelsEnum? modelLod1Enum, BuildTypesEnum buildType, CategoryTypesEnum categoryType,\n            SubCategoryTypesEnum? subCategoryType, MyMaterialType materialType, MyModelsEnum? collisionModelEnum = null)\n            : this(modelLod0Enum, modelLod1Enum, buildType, categoryType, subCategoryType, materialType, PrefabTypesFlagEnum.FoundationFactory, collisionModelEnum)\n        {\n        }\n\n        public MyPrefabConfigurationFoundationFactory(MyModelsEnum modelLod0Enum, MyModelsEnum? modelLod1Enum, BuildTypesEnum buildType, CategoryTypesEnum categoryType,\n            SubCategoryTypesEnum? subCategoryType, MyMaterialType materialType, PrefabTypesFlagEnum prefabTypeFlag, MyModelsEnum? collisionModelEnum = null)\n            : base(modelLod0Enum, modelLod1Enum, buildType, categoryType, subCategoryType, materialType, prefabTypeFlag, needsUpdate: true, displayHud: true, collisionModelEnum: collisionModelEnum)\n        {\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Prefabs/PrefabConfigurations/MyPrefabConfigurationGenerator.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Models;\nusing MinerWars.AppCode.Game.Gameplay;\nusing MinerWars.AppCode.Game.Audio;\n\nnamespace MinerWars.AppCode.Game.Prefabs\n{\n    class MyPrefabConfigurationGenerator : MyPrefabConfiguration\n    {\n        public float Range { get; set; }\n\n        public MyPrefabConfigurationGenerator(MyModelsEnum modelLod0Enum, MyModelsEnum? modelLod1Enum, BuildTypesEnum buildType, CategoryTypesEnum categoryType,\n            SubCategoryTypesEnum? subCategoryType, MyMaterialType materialType, float range, float rotatingVelocity = DEFAULT_ROTATING_VELOCITY, MyModelsEnum? modelCol = null,\n            float explosionParticleEffectScale = 1)\n            : this(modelLod0Enum, modelLod1Enum, buildType, categoryType, subCategoryType, materialType, PrefabTypesFlagEnum.Generator, range, rotatingVelocity,\n            MySoundCuesEnum.Amb3D_GenXstart, MySoundCuesEnum.Amb3D_GenXloop, MySoundCuesEnum.Amb3D_GenXend, modelCol, explosionParticleEffectScale:explosionParticleEffectScale)\n        {\n\n        }\n\n        public MyPrefabConfigurationGenerator(MyModelsEnum modelLod0Enum, MyModelsEnum? modelLod1Enum, BuildTypesEnum buildType, CategoryTypesEnum categoryType,\n            SubCategoryTypesEnum? subCategoryType, MyMaterialType materialType, PrefabTypesFlagEnum prefabTypeFlag, float range, float rotatingVelocity = DEFAULT_ROTATING_VELOCITY,\n            MySoundCuesEnum? startRotatingCue = MySoundCuesEnum.Amb3D_GenXstart, MySoundCuesEnum? looptRotatingCue = MySoundCuesEnum.Amb3D_GenXloop, MySoundCuesEnum? endRotatingCue = MySoundCuesEnum.Amb3D_GenXend, MyModelsEnum? modelCol = null,\n            float explosionParticleEffectScale = 1)\n            : base(modelLod0Enum, modelLod1Enum, buildType, categoryType, subCategoryType, materialType, prefabTypeFlag, minElectricCapacity: MyGameplayConstants.DEFAULT_MAX_ELECTRIC_CAPACITY, rotatingVelocity: rotatingVelocity, collisionModelEnum: modelCol,\n            startRotatingCue: startRotatingCue, loopRotatingCue: looptRotatingCue, endRotatingCue: endRotatingCue, displayHud: true, explosionParticleEffectScale:explosionParticleEffectScale)\n        {\n            Range = range;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Prefabs/PrefabConfigurations/MyPrefabConfigurationHangar.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Models;\n\nnamespace MinerWars.AppCode.Game.Prefabs\n{    \n    class MyPrefabConfigurationHangar : MyPrefabConfiguration\n    {\n        public MyPrefabConfigurationHangar(MyModelsEnum modelLod0Enum, MyModelsEnum? modelLod1Enum, BuildTypesEnum buildType, CategoryTypesEnum categoryType,\n            SubCategoryTypesEnum? subCategoryType, MyMaterialType materialType, MyModelsEnum? collisionModel = null)\n            : this(modelLod0Enum, modelLod1Enum, buildType, categoryType, subCategoryType, materialType, PrefabTypesFlagEnum.Hangar, collisionModel: collisionModel)\n        {\n        }\n\n        public MyPrefabConfigurationHangar(MyModelsEnum modelLod0Enum, MyModelsEnum? modelLod1Enum, BuildTypesEnum buildType, CategoryTypesEnum categoryType,\n            SubCategoryTypesEnum? subCategoryType, MyMaterialType materialType, PrefabTypesFlagEnum prefabTypeFlag, MyModelsEnum? collisionModel = null)\n            : base(modelLod0Enum, modelLod1Enum, buildType, categoryType, subCategoryType, materialType, prefabTypeFlag, displayHud: true, collisionModelEnum: collisionModel)\n        {\n        }\n    } \n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Prefabs/PrefabConfigurations/MyPrefabConfigurationKinematic.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing MinerWars.AppCode.Game.Models;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.Prefabs;\nusing SysUtils.Utils;\n\n\nnamespace MinerWars.AppCode.Game.Prefabs\n{\n    using Audio;\n\n    class MyPrefabConfigurationKinematic : MyPrefabConfiguration\n    {\n        public MySoundCuesEnum? m_soundOpening; public MySoundCuesEnum? m_soundLooping; public MySoundCuesEnum? m_soundClosing;\n        public float m_openTime;\n        public float m_closeTime;\n\n        public List<MyPrefabConfigurationKinematicPart> KinematicParts { get; private set; }\n\n        public MyPrefabConfigurationKinematic(MyModelsEnum modelBaseLod0Enum, MyModelsEnum? modelBaseLod1Enum, \n                List<MyPrefabConfigurationKinematicPart> kinematicParts, MySoundCuesEnum? soundOpening, MySoundCuesEnum? soundLooping, \n                MySoundCuesEnum? soundClosing, float openTime, float closeTime, BuildTypesEnum buildType, CategoryTypesEnum categoryType,\n                SubCategoryTypesEnum? subCategoryType, MyMaterialType materialType, PrefabTypesFlagEnum prefabTypeFlag, MyModelsEnum? collisionModelEnum = null)\n            : base(modelBaseLod0Enum, modelBaseLod1Enum, buildType, categoryType, subCategoryType, materialType, prefabTypeFlag, collisionModelEnum: collisionModelEnum, displayHud: true)\n        {\n            m_openTime = openTime;\n            m_closeTime = closeTime;\n            KinematicParts = kinematicParts;\n            m_soundOpening = soundOpening;\n            m_soundLooping = soundLooping;\n            m_soundClosing = soundClosing;\n        }\n\n        public MyPrefabConfigurationKinematic(MyModelsEnum modelBaseLod0Enum, MyModelsEnum? modelBaseLod1Enum,\n                List<MyPrefabConfigurationKinematicPart> kinematicParts, MySoundCuesEnum? soundOpening, MySoundCuesEnum? soundLooping, \n                MySoundCuesEnum? soundClosing, float openTime, float closeTime, BuildTypesEnum buildType, CategoryTypesEnum categoryType,\n                SubCategoryTypesEnum? subCategoryType, MyMaterialType materialType, MyModelsEnum? collisionModelEnum = null)\n            : this(modelBaseLod0Enum, modelBaseLod1Enum, kinematicParts, soundOpening, soundLooping, soundClosing, openTime, closeTime,\n                   buildType, categoryType, subCategoryType, materialType, PrefabTypesFlagEnum.Default, collisionModelEnum)\n        {\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Prefabs/PrefabConfigurations/MyPrefabConfigurationKinematicPart.cs",
    "content": "﻿using MinerWars.AppCode.Game.Models;\n\nnamespace MinerWars.AppCode.Game.Prefabs\n{\n    class MyPrefabConfigurationKinematicPart : MyPrefabConfiguration\n    {\n        public MyModelsEnum? m_modelMovingEnum;\n        public string m_open;\n        public string m_close;\n        public DamageTypesEnum m_damageType;\n        public int PrefabId { get; private set; }\n\n        public MyPrefabConfigurationKinematicPart(int prefabId, MyModelsEnum modelMovingEnum, string open, string close, BuildTypesEnum buildType,\n            CategoryTypesEnum categoryType, SubCategoryTypesEnum? subCategoryType, MyMaterialType materialType, DamageTypesEnum damageType, MyModelsEnum? modelLod1 = null, MyModelsEnum? collisionModelEnum = null)\n            : base(modelMovingEnum, modelLod1, buildType, categoryType, subCategoryType, materialType,\n                                                                   //0.5 because of door parts, to not take also second part\n                   PrefabTypesFlagEnum.Default, needsUpdate: true, explosionRadiusMultiplier: 0.5f, explosionDamage: 0.33f, collisionModelEnum: collisionModelEnum, explosionParticleEffectScale: 2.0f)\n        {\n            m_modelMovingEnum = modelMovingEnum;\n            m_open = open;\n            m_close = close;\n            m_damageType = damageType;\n            PrefabId = prefabId;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Prefabs/PrefabConfigurations/MyPrefabConfigurationKinematicRotating.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.AppCode.Game.Models;\n\nnamespace MinerWars.AppCode.Game.Prefabs\n{\n    class MyPrefabConfigurationKinematicRotating : MyPrefabConfiguration\n    {\n        public MySoundCuesEnum? SoundOpening; \n        public MySoundCuesEnum? SoundLooping; \n        public MySoundCuesEnum? SoundClosing;\n        public float RotatingVelocity;   \n\n        public MyPrefabConfigurationKinematicRotating(MyModelsEnum modelBaseLod0Enum, MyModelsEnum? modelBaseLod1Enum, \n                MySoundCuesEnum? soundOpening, MySoundCuesEnum? soundLooping, \n                MySoundCuesEnum? soundClosing, float rotatingVelocity, BuildTypesEnum buildType, CategoryTypesEnum categoryType,\n                SubCategoryTypesEnum? subCategoryType, MyMaterialType materialType, PrefabTypesFlagEnum prefabTypeFlag)\n            : base(modelBaseLod0Enum, modelBaseLod1Enum, buildType, categoryType, subCategoryType, materialType, prefabTypeFlag)\n        {\n            SoundOpening = soundOpening;\n            SoundLooping = soundLooping;\n            SoundClosing = soundClosing;\n            RotatingVelocity = rotatingVelocity;\n        }\n\n        public MyPrefabConfigurationKinematicRotating(MyModelsEnum modelBaseLod0Enum, MyModelsEnum? modelBaseLod1Enum,\n                MySoundCuesEnum? soundOpening, MySoundCuesEnum? soundLooping, \n                MySoundCuesEnum? soundClosing, float rotatingVelocity, BuildTypesEnum buildType, CategoryTypesEnum categoryType,\n                SubCategoryTypesEnum? subCategoryType, MyMaterialType materialType)\n            : this(modelBaseLod0Enum, modelBaseLod1Enum, soundOpening, soundLooping, soundClosing, rotatingVelocity, \n                   buildType, categoryType, subCategoryType, materialType, PrefabTypesFlagEnum.Default)\n        {\n        }    \n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Prefabs/PrefabConfigurations/MyPrefabConfigurationKinematicRotatingPart.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Models;\n\nnamespace MinerWars.AppCode.Game.Prefabs.PrefabConfigurations\n{\n    //class MyPrefabConfigurationKinematicRotatingPart : MyPrefabConfiguration\n    //{\n    //    public MyModelsEnum? m_modelMovingEnum; \n    //    public string m_open; \n    //    public string m_close;\n    //    public DamageTypesEnum m_damageType;\n    //    public int PrefabId { get; private set; }\n\n    //    public MyPrefabConfigurationKinematicPart(int prefabId, MyModelsEnum modelMovingEnum, string open, string close, BuildTypesEnum buildType, CategoryTypesEnum categoryType, \n    //        SubCategoryTypesEnum? subCategoryType, MyMaterialType materialType, DamageTypesEnum damageType, PrefabTypesFlagEnum prefabTypeFlag)\n    //        : base(modelMovingEnum, modelMovingEnum, buildType, categoryType, subCategoryType, materialType, prefabTypeFlag)\n    //    {\n    //        m_modelMovingEnum = modelMovingEnum;\n    //        m_open = open;\n    //        m_close = close;\n    //        m_damageType = damageType;\n    //        PrefabId = prefabId;\n    //    }\n\n    //    public MyPrefabConfigurationKinematicPart(int prefabId, MyModelsEnum modelMovingEnum, string open, string close, BuildTypesEnum buildType,\n    //        CategoryTypesEnum categoryType, SubCategoryTypesEnum? subCategoryType, MyMaterialType materialType, DamageTypesEnum damageType)\n    //        : this(prefabId, modelMovingEnum, open, close, buildType, categoryType, subCategoryType, materialType, damageType, PrefabTypesFlagEnum.Default)\n    //    {            \n    //    }\n    //}\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Prefabs/PrefabConfigurations/MyPrefabConfigurationLargeShip.cs",
    "content": "﻿using MinerWars.AppCode.Game.Models;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.AppCode.Game.Explosions;\n\nnamespace MinerWars.AppCode.Game.Prefabs\n{\n    class MyPrefabConfigurationLargeShip : MyPrefabConfiguration\n    {\n        public MyPrefabConfigurationLargeShip(\n            MyModelsEnum modelLod0Enum,\n            MyModelsEnum? modelLod1Enum,\n            BuildTypesEnum buildType,\n            CategoryTypesEnum categoryType,\n            SubCategoryTypesEnum? subCategoryType,\n            MyMaterialType materialType,\n            MyMwcObjectBuilder_Prefab_AppearanceEnum? factionSpecific = null,\n            MyModelsEnum? collisionModelEnum = null,\n            MyExplosionTypeEnum explosionType = MyExplosionTypeEnum.BOMB_EXPLOSION,\n            float particleScale = 1)\n\n            : base(modelLod0Enum, modelLod1Enum, buildType, categoryType, subCategoryType, materialType, PrefabTypesFlagEnum.LargeShip, factionSpecific: factionSpecific, needsUpdate: true, collisionModelEnum: collisionModelEnum, explosionType: explosionType, explosionParticleEffectScale: particleScale)\n        {\n        }\n    }   \n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Prefabs/PrefabConfigurations/MyPrefabConfigurationLargeWeapon.cs",
    "content": "﻿using MinerWars.AppCode.Game.Explosions;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.Prefabs;\n\nnamespace MinerWars.AppCode.Game.Prefabs\n{\n    class MyPrefabConfigurationLargeWeapon : MyPrefabConfiguration\n    {\n        public MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum WeaponType { get; private set; }\n\n        public MyPrefabConfigurationLargeWeapon(\n            BuildTypesEnum buildType,\n            CategoryTypesEnum categoryType,\n            SubCategoryTypesEnum? subCategoryType,\n            MyMaterialType materialType, \n            MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum weaponType,\n            MyMwcObjectBuilder_Prefab_AppearanceEnum? factionSpecific = null,\n            MyExplosionTypeEnum explosionType = MyExplosionTypeEnum.SMALL_SHIP_EXPLOSION,\n            float explosionRadiusMultiplier = 5,\n            float explosionDamageMultiplier = 300)\n            : base(buildType, categoryType, subCategoryType, materialType, PrefabTypesFlagEnum.Default, factionSpecific: factionSpecific, explosionType: explosionType, explosionRadiusMultiplier: explosionRadiusMultiplier, explosionDamageMultiplier: explosionDamageMultiplier, requiresEnergy: true, displayHud: true)\n        {\n            WeaponType = weaponType;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Prefabs/PrefabConfigurations/MyPrefabConfigurationLight.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing MinerWars.AppCode.Game.Models;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.Prefabs;\nusing SysUtils.Utils;\n\n\nnamespace MinerWars.AppCode.Game.Prefabs\n{\n    using Audio;\n  \n    class MyPrefabConfigurationLight : MyPrefabConfiguration\n    {\n        public MyLightPrefabTypeEnum LightType { get; private set; }\n\n        public MyPrefabConfigurationLight(MyModelsEnum modelLod0Enum, MyModelsEnum? modelLod1Enum, BuildTypesEnum buildType, CategoryTypesEnum categoryType,\n            SubCategoryTypesEnum? subCategoryType, MyMaterialType materialType, MyLightPrefabTypeEnum type, MyModelsEnum? collisionModelEnum = null)\n            : this(modelLod0Enum, modelLod1Enum, buildType, categoryType, subCategoryType, materialType, type, PrefabTypesFlagEnum.Default, collisionModelEnum)\n        {            \n        }\n\n        public MyPrefabConfigurationLight(MyModelsEnum modelLod0Enum, MyModelsEnum? modelLod1Enum, BuildTypesEnum buildType, CategoryTypesEnum categoryType,\n            SubCategoryTypesEnum? subCategoryType, MyMaterialType materialType, MyLightPrefabTypeEnum type, PrefabTypesFlagEnum prefabTypesFlag, MyModelsEnum? collisionModelEnum = null)\n            : base(modelLod0Enum, modelLod1Enum, buildType, categoryType, subCategoryType, materialType, prefabTypesFlag, previewAngle: MyPreviewPointOfViewEnum.Bottom, needsUpdate: true, collisionModelEnum: collisionModelEnum)\n        {\n            LightType = type;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Prefabs/PrefabConfigurations/MyPrefabConfigurationParticles.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing MinerWars.AppCode.Game.Models;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.Prefabs;\nusing SysUtils.Utils;\n\n\nnamespace MinerWars.AppCode.Game.Prefabs\n{\n    using Audio;\n\n    class MyPrefabConfigurationParticles : MyPrefabConfiguration\n    {\n        public MyParticleEffectsIDEnum EffectID { get; private set; }\n\n        public MyPrefabConfigurationParticles(MyModelsEnum modelLod0Enum, MyModelsEnum? modelLod1Enum, BuildTypesEnum buildType, CategoryTypesEnum categoryType,\n            SubCategoryTypesEnum? subCategoryType, MyMaterialType materialType, MyParticleEffectsIDEnum effectID, PrefabTypesFlagEnum prefabTypeFlag)\n            : base(modelLod0Enum, modelLod1Enum, buildType, categoryType, subCategoryType, materialType, prefabTypeFlag)\n        {\n            EffectID = effectID;\n        }\n\n        public MyPrefabConfigurationParticles(MyModelsEnum modelLod0Enum, MyModelsEnum? modelLod1Enum, BuildTypesEnum buildType, CategoryTypesEnum categoryType,\n            SubCategoryTypesEnum? subCategoryType, MyMaterialType materialType, MyParticleEffectsIDEnum effectID)\n            : this(modelLod0Enum, modelLod1Enum, buildType, categoryType, subCategoryType, materialType, effectID, PrefabTypesFlagEnum.Default)\n        {            \n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Prefabs/PrefabConfigurations/MyPrefabConfigurationScanner.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Models;\n\nnamespace MinerWars.AppCode.Game.Prefabs\n{\n    class MyPrefabConfigurationScanner : MyPrefabConfiguration\n    {\n        public MyPrefabConfigurationScanner(MyModelsEnum modelLod0Enum, MyModelsEnum? modelLod1Enum, BuildTypesEnum buildType, CategoryTypesEnum categoryType,\n            SubCategoryTypesEnum? subCategoryType, MyMaterialType materialType)\n            : this(modelLod0Enum, modelLod1Enum, buildType, categoryType, subCategoryType, materialType, PrefabTypesFlagEnum.Scanner)\n        {\n        }\n\n        public MyPrefabConfigurationScanner(MyModelsEnum modelLod0Enum, MyModelsEnum? modelLod1Enum, BuildTypesEnum buildType, CategoryTypesEnum categoryType,\n            SubCategoryTypesEnum? subCategoryType, MyMaterialType materialType, PrefabTypesFlagEnum prefabTypeFlag)\n            : base(modelLod0Enum, modelLod1Enum, buildType, categoryType, subCategoryType, materialType, prefabTypeFlag, needsUpdate: true, initPhysics: false, requiresEnergy: true)\n        {\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Prefabs/PrefabConfigurations/MyPrefabConfigurationSecurityControlHUB.cs",
    "content": "﻿using System; \nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Models;\n\nnamespace MinerWars.AppCode.Game.Prefabs\n{\n    class MyPrefabConfigurationSecurityControlHUB : MyPrefabConfiguration\n    {\n        public MyPrefabConfigurationSecurityControlHUB(MyModelsEnum modelLod0Enum, MyModelsEnum? modelLod1Enum, BuildTypesEnum buildType, CategoryTypesEnum categoryType,\n            SubCategoryTypesEnum? subCategoryType, MyMaterialType materialType, MyModelsEnum? collisionModelEnum = null)\n            : this(modelLod0Enum, modelLod1Enum, buildType, categoryType, subCategoryType, materialType, PrefabTypesFlagEnum.Default, collisionModelEnum)\n        {\n        }\n\n        public MyPrefabConfigurationSecurityControlHUB(MyModelsEnum modelLod0Enum, MyModelsEnum? modelLod1Enum, BuildTypesEnum buildType, CategoryTypesEnum categoryType,\n            SubCategoryTypesEnum? subCategoryType, MyMaterialType materialType, PrefabTypesFlagEnum prefabTypeFlag, MyModelsEnum? collisionModelEnum = null)\n            : base(modelLod0Enum, modelLod1Enum, buildType, categoryType, subCategoryType, materialType, prefabTypeFlag, requiresEnergy: true, collisionModelEnum: collisionModelEnum, displayHud: true)\n        {\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Prefabs/PrefabConfigurations/MyPrefabConfigurationSound.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing MinerWars.AppCode.Game.Models;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.Prefabs;\nusing SysUtils.Utils;\n\n\nnamespace MinerWars.AppCode.Game.Prefabs\n{\n    using Audio;\n \n    class MyPrefabConfigurationSound : MyPrefabConfiguration\n    {\n\n        public MySoundCuesEnum Sound { get; private set; }\n\n        public MyPrefabConfigurationSound(MyModelsEnum modelLod0Enum, MyModelsEnum? modelLod1Enum, BuildTypesEnum buildType, CategoryTypesEnum categoryType,\n            SubCategoryTypesEnum? subCategoryType, MyMaterialType materialType, MySoundCuesEnum sound, PrefabTypesFlagEnum prefabTypesFlag)\n            : base(modelLod0Enum, modelLod1Enum, buildType, categoryType, subCategoryType, materialType, prefabTypesFlag, needsUpdate: true)\n        {\n            Sound = sound;\n        }\n\n        public MyPrefabConfigurationSound(MyModelsEnum modelLod0Enum, MyModelsEnum? modelLod1Enum, BuildTypesEnum buildType, CategoryTypesEnum categoryType,\n            SubCategoryTypesEnum? subCategoryType, MyMaterialType materialType, MySoundCuesEnum sound)\n            : this(modelLod0Enum, modelLod1Enum, buildType, categoryType, subCategoryType, materialType, sound, PrefabTypesFlagEnum.Default)\n        {            \n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Prefabs/Renderer/MyPrefabRenderer.cs",
    "content": "﻿using System;\n\nusing Microsoft.Xna.Framework.Graphics;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.AppCode.App;\nusing Microsoft.Xna.Framework;\nusing MinerWars.AppCode.Game.Managers.EntityManager.Entities.Weapons;\nusing MinerWars.AppCode.Game.Render;\nusing MinerWars.AppCode.Game.Effects;\nusing MinerWars.AppCode.Game.Models;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.GUI;\nusing System.Collections.Generic;\nusing MinerWars.AppCode.Game.Lights;\nusing MinerWarsCustomContentImporters;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing System.IO;\nusing MinerWars.AppCode.Game.GUI.Helpers;\nusing System.Diagnostics;\nusing MinerWars.AppCode.Game.Managers.Session;\n\nnamespace MinerWars.AppCode.Game.Prefabs\n{\n    /// <summary>\n    /// Used for rendering prefabs for thumbnail previews. \n    /// Uses three lights to light prefabs:\n    /// 1. Key light - directional (sun)\n    /// 2. Fill light - point\n    /// 3. Back light - point\n    /// </summary>\n    class MyPrefabRenderer\n    {\n        readonly MyRender.MyRenderSetup m_setup = new MyRender.MyRenderSetup();\n        RenderTarget2D m_fullSizeRT;\n\n        public MyPrefabRenderer()\n        {\n            SetRenderSetup();\n        }\n\n        public void SetRenderTarget(RenderTarget2D fullSizeRT)\n        {\n            m_setup.RenderTargets[0] = new RenderTargetBinding(fullSizeRT);\n            m_fullSizeRT = fullSizeRT;\n        }\n\n        private void SetRenderSetup()\n        {\n            m_setup.RenderTargets = new RenderTargetBinding[1];\n\n            m_setup.DisabledModules.Add(\"Cockpit\");\n            m_setup.DisabledModules.Add(\"Cockpit glass\");\n            m_setup.DisabledModules.Add(\"Sun glow\");\n            m_setup.DisabledModules.Add(\"Sun glare and lens flare\");\n            m_setup.DisabledModules.Add(\"Update occlusions\");\n            m_setup.DisabledModules.Add(\"Transparent geometry\");\n\n            m_setup.SkippedRenderStages.Add(MyRenderStage.AlphaBlendPreHDR);\n            m_setup.SkippedRenderStages.Add(MyRenderStage.AlphaBlend);\n            m_setup.SkippedRenderStages.Add(MyRenderStage.DebugDraw);\n            m_setup.SkippedRenderStages.Add(MyRenderStage.PrepareForDraw);\n\n            m_setup.DisabledPostprocesses.Add(\"Flashes\");\n            m_setup.DisabledPostprocesses.Add(\"Volumetric SSAO 2\");\n            m_setup.DisabledPostprocesses.Add(\"Antialiasing\");\n\n            m_setup.BackgroundColor = new Color(0.17f, 0.18f, .25f, .5f);\n\n            m_setup.EnableHDR = false;\n            m_setup.EnableSun = true;\n            m_setup.EnableSunShadows = true;\n            m_setup.EnableSmallLights = true;\n            m_setup.EnableDebugHelpers = false;\n            m_setup.EnableEnvironmentMapping = false;\n\n            m_setup.RenderElementsToDraw = new List<MyRender.MyRenderElement>();\n            m_setup.TransparentRenderElementsToDraw = new List<MyRender.MyRenderElement>();\n            m_setup.LightsToUse = new List<MyLight>();\n            MyLight light = new MyLight();\n            light.Start(MyLight.LightTypeEnum.PointLight, new Vector4(1, 0.95f, 0.8f, 1), 1, 119); // fill light\n            m_setup.LightsToUse.Add(light);\n            light = new MyLight();\n            light.Start(MyLight.LightTypeEnum.PointLight, new Vector4(1, 0.9f, 0.6f, 1), 1, 119); // back light\n            m_setup.LightsToUse.Add(light);\n        }\n\n        /// <summary>\n        /// IMPORTANT: using Lod1Normals here, since this is done in a separate time to normal rendering\n        /// </summary>\n        public RenderTarget2D RenderPreview(MyMwcObjectBuilder_Prefab_TypesEnum enumValue, MyPrefabConfiguration config, int width, int height)\n        {\n            m_fullSizeRT = MyRender.GetRenderTarget(MyRenderTargets.Lod1Normals);\n\n            if (m_fullSizeRT == null || MyGuiScreenGamePlay.Static == null)\n                return null;\n\n            m_setup.RenderTargets[0] = new RenderTargetBinding(m_fullSizeRT);\n\n            if (MySession.PlayerShip != null)\n            {\n                MySession.PlayerShip.Visible = false;\n            }\n\n            GraphicsDevice device = MyMinerGame.Static.GraphicsDevice;\n\n            RenderTarget2D renderTarget = new RenderTarget2D(device, width, height, true, SurfaceFormat.Color, DepthFormat.Depth24, 0, RenderTargetUsage.DiscardContents);\n\n            m_setup.RenderElementsToDraw.Clear();\n            m_setup.TransparentRenderElementsToDraw.Clear();\n\n            // make actual viewport one pixel larger in order to remove the deformed border caused by antialiasing\n            m_setup.Viewport = new Viewport(0, 0, 2 * renderTarget.Width, 2 * renderTarget.Height);\n            m_setup.AspectRatio = 1;\n            m_setup.Fov = MathHelper.ToRadians(70);\n\n            MyRender.Sun.Direction = new Vector3(.5f, -.3f, -1);\n            MyRender.Sun.Direction.Normalize();\n            MyRender.Sun.Color = Vector4.One;\n            MyRender.EnableSun = true;\n            float previousSunIntensityMultiplier = MyRender.SunIntensityMultiplier;\n            MyRender.SunIntensityMultiplier = 1.2f;\n\n            if (config.BuildType == BuildTypesEnum.MODULES && config.CategoryType == CategoryTypesEnum.WEAPONRY)\n            {\n                MyModel baseModel = null;\n                MyModel barrelModel = null;\n                Matrix baseMatrix = Matrix.Identity;\n                Matrix barrelMatrix = Matrix.Identity;\n\n                bool result = MyLargeShipGunBase.GetVisualPreviewData(enumValue, ref baseModel, ref barrelModel, ref baseMatrix, ref barrelMatrix);\n\n                if (result)\n                {\n                    m_setup.ViewMatrix = Matrix.Identity;\n\n                    setupRenderElement(baseModel, baseMatrix);\n                    setupRenderElement(barrelModel, barrelMatrix);\n\n                    setupLights(baseModel);\n\n                    MyRender.PushRenderSetup(m_setup);\n                    MyRender.Draw();\n                    MyRender.PopRenderSetup();\n\n                    BlitToThumbnail(device, renderTarget);\n                }\n            }\n            else\n            {\n                //load new model from prefab config\n                MyModel model = MyModels.GetModelForDraw(config.ModelLod0Enum);\n\n                float distance = 1.85f;\n\n                Matrix viewMatrix = Matrix.Identity;\n                m_setup.ViewMatrix = viewMatrix;\n\n                //generate world matrix\n                Matrix worldMatrix = Matrix.Identity;\n                worldMatrix.Translation = -model.BoundingSphere.Center;\n                worldMatrix *= Matrix.CreateRotationY(-.85f * MathHelper.PiOver4);\n                worldMatrix *= Matrix.CreateRotationX(.35f * MathHelper.PiOver4);\n                worldMatrix.Translation += new Vector3(0, 0, -model.BoundingSphere.Radius * distance);\n\n                setupRenderElement(model, worldMatrix);\n\n                setupLights(model);\n\n                MyRender.PushRenderSetup(m_setup);\n                MyRender.Draw();\n                MyRender.PopRenderSetup();\n\n                BlitToThumbnail(device, renderTarget);\n            }\n\n            MyRender.SunIntensityMultiplier = previousSunIntensityMultiplier;\n\n            if (MySession.PlayerShip != null)\n            {\n                MySession.PlayerShip.Visible = true;\n            }\n\n            return renderTarget;\n        }\n\n        private void setupLights(MyModel baseModel)\n        {\n            m_setup.LightsToUse[0].Position = new Vector3(baseModel.BoundingSphere.Radius, -0.4f * baseModel.BoundingSphere.Radius, baseModel.BoundingSphere.Radius);\n            m_setup.LightsToUse[0].Position += baseModel.BoundingSphere.Center;\n            m_setup.LightsToUse[1].Position = new Vector3(1.3f * baseModel.BoundingSphere.Radius, 0, -baseModel.BoundingSphere.Radius);\n            m_setup.LightsToUse[1].Position += baseModel.BoundingSphere.Center;\n        }\n\n        private void BlitToThumbnail(GraphicsDevice device, RenderTarget2D renderTarget)\n        {\n            device.SetRenderTarget(renderTarget);\n            var screenEffect = MyRender.GetEffect(MyEffects.Scale) as MyEffectScale;\n            Debug.Assert(screenEffect != null);\n            screenEffect.SetTechnique(MyEffectScale.Technique.HWScalePrefabPreviews);\n            screenEffect.SetSourceTextureMod(m_fullSizeRT);\n            screenEffect.SetScale(2f * new Vector2(renderTarget.Width / (float)m_fullSizeRT.Width, renderTarget.Height / (float)m_fullSizeRT.Height));\n            MyGuiManager.GetFullscreenQuad().Draw(screenEffect);\n            device.SetRenderTarget(null);\n        }\n\n        private void setupRenderElement(MyModel model, Matrix worldMatrix)\n        {\n            model.LoadInDraw();\n\n            foreach (MyMesh mesh in model.GetMeshList())\n            {\n                MyRender.MyRenderElement renderElement =\n                    mesh.GetMaterial().DrawTechnique == MyMeshDrawTechnique.HOLO ?\n                    MyRender.AddTransparentRenderElement(m_setup.TransparentRenderElementsToDraw) :\n                    MyRender.AddRenderElement(m_setup.RenderElementsToDraw);\n                if (renderElement == null)\n                    return;\n\n                renderElement.Entity = null;\n                renderElement.DebugName = \"\";\n\n                renderElement.VertexBuffer = model.VertexBuffer;\n                renderElement.IndexBuffer = mesh.IndexBuffer;\n\n                renderElement.WorldMatrixForDraw = worldMatrix;\n                renderElement.WorldMatrix = worldMatrix;\n\n                renderElement.BoundingBox = model.BoundingBox.Transform(renderElement.WorldMatrix);\n\n                renderElement.Material = mesh.GetMaterial();\n            }\n        }\n\n        /// <summary>\n        /// Create all prefab previews as dds files\n        /// Filename is derived from MyMwcObjectBuilder_Prefab_TypesEnum\n        /// </summary>\n        public void CreatePreviewsToFiles(string path, int sizeInPixels)\n        {\n            var directoryInfo = Directory.CreateDirectory(path);\n\n            CreateDDSFiles(sizeInPixels, directoryInfo);\n\n            // compress using nvDXT.exe to DXT1:\n            CompressDDSFiles(directoryInfo);\n        }\n\n        public static string GetPreviewFileName(MyPrefabConfiguration config, MyMwcObjectBuilder_Prefab_TypesEnum enumValue)\n        {\n            if (config.BuildType == BuildTypesEnum.MODULES && config.CategoryType == CategoryTypesEnum.WEAPONRY)\n            {\n                MyModelsEnum baseModelEnum, barelModelEnum;\n                if (MyLargeShipGunBase.GetModelEnums(enumValue, out baseModelEnum, out barelModelEnum))\n                {\n                    return Path.GetFileName(MyModels.GetModelAssetName(baseModelEnum));\n                }\n            }\n\n            return Path.GetFileName(MyModels.GetModelAssetName(config.ModelLod0Enum));\n        }\n\n        private void CreateDDSFiles(int sizeInPixels, DirectoryInfo directoryInfo)\n        {\n            int index = 1;\n            foreach (MyMwcObjectBuilder_Prefab_TypesEnum enumValue in MyGuiPrefabHelpers.MyMwcPrefabTypesEnumValues)\n            {\n                Debug.WriteLine(string.Format(\"Exporting Prefab Preview {0}/{1} ..\", index++,\n                                              MyGuiPrefabHelpers.MyMwcPrefabTypesEnumValues.Length));\n\n                MyPrefabConfiguration config = MyPrefabConstants.GetPrefabConfiguration(enumValue);\n                string lod0Name = GetPreviewFileName(config, enumValue);\n\n                var result = RenderPreview(enumValue, config, sizeInPixels, sizeInPixels);\n                string fileName = Path.Combine(directoryInfo.FullName, string.Format(\"{0}.dds\", lod0Name));\n                if (File.Exists(fileName))\n                {\n                    File.Delete(fileName);\n                }\n\n                MyDDSFile.DDSToFile(fileName, true, result, false);\n            }\n        }\n\n        private static void CompressDDSFiles(DirectoryInfo directoryInfo)\n        {\n            Process nvDXT = new Process();\n            try\n            {\n                nvDXT.StartInfo.FileName = Path.Combine(@\"C:\\KeenSWH\\MinerWars\\MediaDevelopment\\Tools\\\", \"nvdxt.exe\");\n                nvDXT.StartInfo.Arguments = @\"-all -dxt3\";\n                nvDXT.StartInfo.WorkingDirectory = directoryInfo.FullName;\n                nvDXT.StartInfo.CreateNoWindow = true;\n                Debug.WriteLine(\"Now compressing DDS files to DXT3.\");\n                nvDXT.Start();\n                nvDXT.WaitForExit();\n\n                // now trim the trailing underscore that nvDXT generates and move back to parent dir\n                String[] oldFileNames = Directory.GetFiles(directoryInfo.FullName, \"*_.dds\");\n                foreach (var oldName in oldFileNames)\n                {\n                    var fileNameWithoutExtension = Path.GetFileNameWithoutExtension(oldName);\n                    var trimmedWithExtension = fileNameWithoutExtension.TrimEnd('_') + \".dds\";\n                    var newName = Path.Combine(directoryInfo.FullName, trimmedWithExtension);\n\n                    if (File.Exists(newName))\n                        File.Delete(newName);\n                    File.Move(oldName, newName);\n                }\n            }\n            catch (IOException)\n            {\n                Debug.WriteLine(\"Did not succeed in writing DXT1-compressed files. IO error.\");\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Radar/MyAllKnowingRadar.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Managers.EntityManager.Entities;\nusing MinerWars.AppCode.Game.Managers.EntityManager.Entities.Weapons;\nusing MinerWars.AppCode.Game.Prefabs;\nusing MinerWars.AppCode.Game.Voxels;\nusing MinerWars.AppCode.Game.Managers.EntityManager.Entities.Prefabs;\nusing MinerWars.CommonLIB.AppCode.Networking;\n\nnamespace MinerWars.AppCode.Game.Radar\n{\n    class MyAllKnowingRadar : MyDetectorBase\n    {\n        public MyAllKnowingRadar()\n            : base()\n        {\n        }\n\n        protected override bool IsObjectMeetDetectCriterium(IMyObjectToDetect objectToDetect)\n        {            \n            return true;\n        }\n\n        protected override bool CanBeDetected(IMyObjectToDetect objectToDetect)\n        {\n            //return objectToDetect is MyEntity || objectToDetect is MyMwcVoxelMaterialsEnum;\n            return objectToDetect is MyShip ||\n                   objectToDetect is MyPrefabFoundationFactory ||\n                   objectToDetect is MyPrefabHangar || \n                   objectToDetect is MyAmmoBase ||\n                   objectToDetect is MyVoxelMapOreDepositCell;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Radar/MyDefaultDetector.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Managers.EntityManager.Entities;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Missions;\nusing MinerWars.AppCode.Game.Prefabs;\nusing MinerWars.AppCode.Game.World;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.AppCode.Game.Managers.EntityManager.Entities.Prefabs;\n\nnamespace MinerWars.AppCode.Game.Radar\n{\n    class MyDefaultDetector : MyDetectorBase\n    {\n        public MyDefaultDetector() \n            : base()\n        {\n        }        \n\n        protected override bool IsObjectMeetDetectCriterium(IMyObjectToDetect objectToDetect)\n        {            \n            MyEntity entity = objectToDetect as MyEntity;            \n            // TODO: temporary disable displaying mission entities on radar\n            /*// we detect all mission entities\n            if(MyMissions.IsMissionEntity(entity))\n            {\n                return true;\n            }\n            // we detect all friendly ship, foundation factories and hangars\n            else */if(entity is MyShip || entity is MyPrefabFoundationFactory || entity is MyPrefabHangar)\n            {\n                return MyFactions.GetFactionsRelation(m_ship, entity) == MyFactionRelationEnum.Friend;\n            }\n            return false;\n        }\n\n        protected override bool CanBeDetected(IMyObjectToDetect objectToDetect)\n        {\n            //return objectToDetect is MyShip || objectToDetect is MyPrefabContainer;\n            return objectToDetect is MyEntity;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Radar/MyDetectedObject.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\n\nnamespace MinerWars.AppCode.Game.Radar\n{\n    //class MyDetectedObject\n    //{\n    //    public IMyObjectToDetect Object { get; set; }\n    //    public Vector3 Position { get; set; }        \n\n    //    public MyDetectedObject()\n    //    {            \n    //    }\n\n    //    public void Start(IMyObjectToDetect obj)\n    //    {\n    //        Object = obj;\n    //    }\n\n    //    public void AddDetected(Vector3 actualPosition)\n    //    {\n    //        Position = actualPosition;\n    //    }\n    //}\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Radar/MyDetectorBase.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing Microsoft.Xna.Framework;\nusing MinerWars.AppCode.Game.Managers.EntityManager.Entities;\nusing MinerWars.AppCode.Game.Managers.EntityManager.Entities.FoundationFactory;\nusing MinerWars.AppCode.Game.Managers.EntityManager.Entities.Prefabs;\nusing MinerWars.AppCode.Game.Prefabs;\n\nnamespace MinerWars.AppCode.Game.Radar\n{\n    enum MyDetectorType\n    {\n        DefaultDetector = 0,\n        EngineDetector = 1,\n        MovementDetector = 2,\n        OreDetector = 3,\n        RadarDetector = 4,\n        PulseDetector = 5,\n        AllKnowingRadar = 6\n    }    \n\n    // I must remove abstract things because, detector is used in objects pool\n    abstract class MyDetectorBase\n    {        \n        private int m_timeFromLastDetect;\n        private bool m_isActive;\n        private int m_detectInterval;\n        private MyDetectorType m_detectorType;\n\n        protected MySmallShip m_ship;\n        \n        public float Range { get; private set; }        \n        public bool CanBeDisabledByRadarJammer { get; private set; }\n\n        protected MyDetectorBase()\n        {\n            \n        }\n\n        public virtual void Start(MySmallShip ship, MyDetectorConfiguration configuration) \n        {\n            m_ship = ship;\n            m_detectInterval = configuration.DetectInterval;\n            m_timeFromLastDetect = 0;\n            m_isActive = false;\n            m_detectorType = configuration.DetectorType;\n\n            Range = configuration.Range;\n            CanBeDisabledByRadarJammer = configuration.CanBeDisabledByRadarJammer;\n        }\n\n        public void UpdateTime(int deltaTime)\n        {\n            m_timeFromLastDetect += deltaTime;\n            if (m_timeFromLastDetect >= m_detectInterval)\n            {\n                m_timeFromLastDetect = 0;\n                m_isActive = true;\n            }\n            else\n            {\n                m_isActive = false;\n            }\n        }\n\n        public bool IsActive()\n        {\n            return m_isActive;\n        }\n\n        public bool IsDetected(Vector3 radarPosition, IMyObjectToDetect objectToDetect)\n        {\n            //if (objectToDetect is MyFoundationFactory)\n            //{\n            //    return false;\n            //}\n\n            //// we don't want detect prefab containers with hagnars\n            //if (objectToDetect is MyPrefabContainer && ((MyPrefabContainer)objectToDetect).ContainsPrefab(PrefabTypesFlagEnum.Hangar))\n            //{\n            //    return false;\n            //}\n\n            if (!CanBeDetected(objectToDetect))\n            {\n                return false;\n            }\n\n            BoundingSphere detectingSphere = new BoundingSphere(radarPosition, Range);\n            if (!detectingSphere.Intersects(objectToDetect.WorldAABB))\n            {\n                return false;\n            }\n\n            return IsObjectMeetDetectCriterium(objectToDetect);\n        }\n\n        public MyDetectorType GetDetectorType() \n        {\n            return m_detectorType;\n        }\n\n        protected abstract bool IsObjectMeetDetectCriterium(IMyObjectToDetect objectToDetect);        \n        protected abstract bool CanBeDetected(IMyObjectToDetect objectToDetect);\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Radar/MyEngineDetector.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Managers.EntityManager.Entities;\nusing MinerWars.AppCode.Game.Managers.EntityManager.Entities.Prefabs;\nusing MinerWars.AppCode.Game.Prefabs;\n\nnamespace MinerWars.AppCode.Game.Radar\n{\n    class MyEngineDetector : MyDetectorBase\n    {\n        public MyEngineDetector()\n            : base()\n        {\n        }\n\n        protected override bool IsObjectMeetDetectCriterium(IMyObjectToDetect objectToDetect)\n        {            \n            if(objectToDetect is MySmallShip)\n            {\n                MySmallShip smallShip = objectToDetect as MySmallShip;\n                return smallShip.Config.Engine.On;\n            }\n                        \n            if (objectToDetect is MyPrefabBase)\n            {\n                MyPrefabBase prefab = objectToDetect as MyPrefabBase;\n                return prefab.GetOwner().ContainsPrefab(PrefabTypesFlagEnum.LargeShip);\n            }\n\n            return false;\n        }\n\n        protected override bool CanBeDetected(IMyObjectToDetect objectToDetect)\n        {\n            return objectToDetect is MySmallShip || \n                   objectToDetect is MyPrefabFoundationFactory || \n                   objectToDetect is MyPrefabHangar;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Radar/MyMovementDetector.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Managers.EntityManager.Entities;\nusing MinerWars.AppCode.Game.Managers.EntityManager.Entities.Prefabs;\nusing MinerWars.AppCode.Game.Managers.EntityManager.Entities.Weapons;\nusing MinerWars.AppCode.Game.Prefabs;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\n\nnamespace MinerWars.AppCode.Game.Radar\n{\n    class MyMovementDetector : MyDetectorBase\n    {\n        public MyMovementDetector()\n            : base()\n        {\n        }        \n\n        protected override bool IsObjectMeetDetectCriterium(IMyObjectToDetect objectToDetect)\n        {            \n            MyEntity entity = objectToDetect as MyEntity;            \n            if(entity.Physics == null)\n            {\n                return false;\n            }\n            return entity.Physics.Speed > MyHudConstants.RADAR_MOVEMENT_DETECTOR_MIN_SPEED_TO_DETECT;\n        }\n\n        protected override bool CanBeDetected(IMyObjectToDetect objectToDetect)\n        {\n            //return objectToDetect is MyEntity &&\n            //    !(objectToDetect is MySmallDebris || objectToDetect is MyExplosionDebrisBase || objectToDetect is MyLargeDebrisField) &&\n            //    !(objectToDetect is MyPrefabBase);\n            return objectToDetect is MyShip || objectToDetect is MyAmmoBase;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Radar/MyObjectToDetect.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Entities;\n\nnamespace MinerWars.AppCode.Game.Radar\n{\n    interface IMyObjectToDetect\n    {\n        BoundingBox WorldAABB { get; }\n        Vector3 GetPosition();\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Radar/MyOreDetector.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing Microsoft.Xna.Framework;\nusing MinerWars.AppCode.Game.Managers.EntityManager.Entities;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Voxels;\nusing MinerWars.CommonLIB.AppCode.Networking;\n\nnamespace MinerWars.AppCode.Game.Radar\n{\n    class MyOreDetector : MyDetectorBase\n    {\n        private MyMwcVoxelMaterialsEnum m_oreMaterial;\n\n        public MyOreDetector()\n            : base()\n        {\n            \n        }\n\n        public override void Start(MySmallShip ship, MyDetectorConfiguration configuration) \n        {\n            base.Start(ship, configuration);\n            m_oreMaterial = (MyMwcVoxelMaterialsEnum)configuration.Parameters[0];\n        }        \n\n        public MyMwcVoxelMaterialsEnum OreMaterial\n        {\n            get\n            {\n                return m_oreMaterial;\n            }\n        }\n\n        protected override bool IsObjectMeetDetectCriterium(IMyObjectToDetect objectToDetect)\n        {\n            MyVoxelMapOreDepositCell oreDeposit = (MyVoxelMapOreDepositCell)objectToDetect;\n            return oreDeposit.GetOreContent(m_oreMaterial) > 0;\n        }\n\n        protected override bool CanBeDetected(IMyObjectToDetect objectToDetect)\n        {\n            return objectToDetect is MyVoxelMapOreDepositCell;\n        }        \n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Radar/MyPulseDetector.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Managers.EntityManager.Entities;\nusing MinerWars.AppCode.Game.Managers.EntityManager.Entities.Weapons;\nusing MinerWars.AppCode.Game.Prefabs;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Voxels;\nusing MinerWars.AppCode.Game.Managers.EntityManager.Entities.Prefabs;\nusing MinerWars.CommonLIB.AppCode.Networking;\n\nnamespace MinerWars.AppCode.Game.Radar\n{\n    class MyPulseDetector : MyDetectorBase\n    {\n        public MyPulseDetector()\n            : base()\n        {\n        }        \n\n        protected override bool IsObjectMeetDetectCriterium(IMyObjectToDetect objectToDetect)\n        {            \n            // entity movement, prefabcontainer or ship detect\n            if(objectToDetect is MyEntity)\n            {\n                MyEntity entity = objectToDetect as MyEntity;\n\n                if (entity.Physics != null && entity.Physics.Speed > MyHudConstants.RADAR_MOVEMENT_DETECTOR_MIN_SPEED_TO_DETECT)\n                {\n                    return true;\n                }\n                else\n                {\n                    if(entity is MyShip || entity is MyPrefabBase)\n                    {\n                        return true;                    \n                    }                    \n                }                \n            }\n            // ore detect\n            else if (objectToDetect is MyVoxelMapOreDepositCell)\n            {\n                return true;\n            }\n            return false;\n        }\n\n        protected override bool CanBeDetected(IMyObjectToDetect objectToDetect)\n        {\n            //return objectToDetect is MyEntity || objectToDetect is MyMwcVoxelMaterialsEnum;\n            return objectToDetect is MyShip ||\n                   objectToDetect is MyPrefabFoundationFactory ||\n                   objectToDetect is MyPrefabHangar || \n                   objectToDetect is MyAmmoBase ||\n                   objectToDetect is MyVoxelMapOreDepositCell;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Radar/MyRadar.cs",
    "content": "﻿#region Using\n\nusing System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Physics;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Renders;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Voxels;\nusing MinerWars.AppCode.Physics;\nusing MinerWars.CommonLIB.AppCode.Generics;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.Gameplay;\nusing System.Threading.Tasks;\nusing System.Threading;\nusing MinerWars.AppCode.Game.Entities.Prefabs;\nusing MinerWars.AppCode.Game.Prefabs;\nusing MinerWars.AppCode.Game.Entities.Weapons;\nusing SysUtils.Utils;\nusing MinerWars.AppCode.Game.Entities.SubObjects;\nusing KeenSoftwareHouse.Library.Parallelization.Threading;\nusing MinerWars.AppCode.Game.TransparentGeometry;\n\n#endregion\n\nnamespace MinerWars.AppCode.Game.Radar\n{\n\n    static class MyRadar\n    {\n        public struct MySharedHashSet : IDisposable\n        {\n            FastResourceLock m_lockObject;\n            HashSet<IMyObjectToDetect> m_hashSet;\n\n            public MySharedHashSet(FastResourceLock lockObject, HashSet<IMyObjectToDetect> hashSet)\n            {\n                m_lockObject = lockObject;\n                m_hashSet = hashSet;\n                m_lockObject.AcquireShared();\n            }\n\n            public void Dispose()\n            {\n                m_lockObject.ReleaseShared();\n            }\n\n            public HashSet<IMyObjectToDetect> Collection\n            {\n                get { return m_hashSet; }\n            }\n        }\n\n        private static bool m_isInRadarJammerRange;\n        private static bool m_isInSunWindRange;\n        private static bool m_isNearSunWindRange;\n\n        private static bool m_clearDetectedObjects;\n\n        private static List<IMyObjectToDetect> m_objectsToDetect;\n        private static List<IMyObjectToDetect> m_detectedObjectsHelperCollection;\n\n        private static HashSet<IMyObjectToDetect> m_detectedObjects;\n        private static HashSet<IMyObjectToDetect> m_detectedBotsAndLargeWeapons;\n\n        private static List<MyRBElement> m_objectsInDetectingArea;\n\n        public static bool On\n        {\n            get\n            {\n                return MyGuiScreenGamePlay.Static != null &&\n                       MyGuiScreenGamePlay.Static.IsGameActive() &&\n                       MyGuiScreenGamePlay.Static.ControlledEntity != null &&\n                       !MyGuiScreenGamePlay.Static.ControlledEntity.IsDead() &&\n                       MyGuiScreenGamePlay.Static.ControlledEntity.Activated;\n            }\n        }\n\n        private static float DefaultRadarRange = MySmallShipConstants.MAX_HUD_DISTANCE;\n\n        private static readonly AutoResetEvent m_updateRadarEvent;\n        private static volatile bool m_updateCompleted = true;\n\n        private static FastResourceLock m_detectedObjectsLock = new FastResourceLock();\n\n        private static bool Multithreaded = true;\n\n        static MyRadar()\n        {\n            m_objectsToDetect = new List<IMyObjectToDetect>();\n\n            m_detectedObjectsHelperCollection = new List<IMyObjectToDetect>();\n            m_detectedObjects = new HashSet<IMyObjectToDetect>();\n            m_detectedBotsAndLargeWeapons = new HashSet<IMyObjectToDetect>();\n            m_objectsInDetectingArea = new List<MyRBElement>();\n\n            MyEntities.OnEntityRemove += new Action<MyEntity>(MyEntities_OnEntityRemove);\n            MyVoxelMaps.OnRemoveOreCell += new Action<MyVoxelMapOreDepositCell>(MyVoxelMaps_OnRemoveOreCell);\n\n#if RENDER_PROFILING\n            Multithreaded = false;\n#endif\n\n            if (Multithreaded)\n            {\n                m_updateRadarEvent = new AutoResetEvent(false);\n                Task.Factory.StartNew(UpdateInBackground, TaskCreationOptions.PreferFairness);\n            }\n        }\n\n        static void MyVoxelMaps_OnRemoveOreCell(MyVoxelMapOreDepositCell cell)\n        {\n            RemoveClosedObject(cell);\n        }\n\n        public static void Update()\n        {\n            if (!Multithreaded)\n            {\n                ClearCollections();\n                if (!On)\n                {\n                    return;\n                }\n\n                Detect();\n            }\n        }\n\n\n        static void MyEntities_OnEntityRemove(MyEntity obj)\n        {\n            RemoveClosedObject(obj);\n        }\n\n        private static void RemoveClosedObject(IMyObjectToDetect obj)\n        {\n            using (m_detectedObjectsLock.AcquireExclusiveUsing())\n            {\n                m_detectedObjects.Remove(obj);\n                m_detectedBotsAndLargeWeapons.Remove(obj);\n                m_detectedObjectsHelperCollection.Remove(obj);\n                m_objectsToDetect.Remove(obj);\n            }\n        }\n\n        private static void UpdateInBackground()\n        {\n            while (true)\n            {\n                Debug.Assert(m_updateCompleted);\n                ClearCollections();\n\n                //m_updateRadarEvent.WaitOne();\n                m_updateRadarEvent.WaitOne(300);\n\n                if (!On)\n                {\n                    continue;\n                }\n\n                Detect();\n            }\n        }\n\n        private static void ClearCollections()\n        {\n            m_objectsInDetectingArea.Clear();\n\n            if (m_clearDetectedObjects)\n            {\n                using (m_detectedObjectsLock.AcquireExclusiveUsing())\n                {\n                    m_detectedObjects.Clear();\n                    m_detectedBotsAndLargeWeapons.Clear();\n                }\n                m_clearDetectedObjects = false;\n            }\n        }\n\n        public static bool IsNearRadarJammerOrSunWind()\n        {\n            return IsNearSunWind() || IsNearRadarJammer();\n        }\n\n        public static bool IsNearSunWind()\n        {\n            return m_isNearSunWindRange;\n        }\n\n        public static bool IsNearRadarJammer()\n        {\n            return m_isInRadarJammerRange;\n        }\n\n        public static bool IsInSunWind()\n        {\n            return m_isInSunWindRange;\n        }\n\n        static MyEntity GetOwner()\n        {\n            return MyGuiScreenGamePlay.Static.ControlledEntity;\n        }\n\n        static Vector3 GetRadarPosition()\n        {\n            if (MyGuiScreenGamePlay.Static != null && MyGuiScreenGamePlay.Static.ControlledEntity != null)\n            {\n                return MyGuiScreenGamePlay.Static.ControlledEntity.WorldVolume.Center;\n            }\n            return Vector3.Zero;\n        }\n\n        static bool CanBeDetected(IMyObjectToDetect objectToDetect)\n        {\n            if (objectToDetect is MyVoxelMapOreDepositCell)\n            {\n                MyVoxelMapOreDepositCell oreDeposit = objectToDetect as MyVoxelMapOreDepositCell;\n                return oreDeposit.GetTotalRareOreContent() > 0;\n            }\n            //return objectToDetect is MyEntity || objectToDetect is MyMwcVoxelMaterialsEnum;\n            return objectToDetect is MyShip ||\n                   objectToDetect is MyPrefabFoundationFactory ||\n                   objectToDetect is MyPrefabHangar ||\n                   objectToDetect is MyPrefabLargeWeapon ||\n                   objectToDetect is MyAmmoBase /*||\n                   objectToDetect is MyVoxelMapOreDepositCell*/;\n        }\n\n        private static void Detect()\n        {\n            m_updateCompleted = false;\n            if (MySunWind.IsActive)\n            {\n                float distanceFromSunWind = Vector3.Distance(MySunWind.Position, MyGuiScreenGamePlay.Static.ControlledEntity.WorldVolume.Center);\n                m_isInSunWindRange = distanceFromSunWind <= MyHudConstants.RADAR_JAM_FROM_SUN_WIND_RADIUS;\n                m_isNearSunWindRange = distanceFromSunWind >= MyHudConstants.RADAR_JAM_FROM_SUN_WIND_RADIUS &&\n                                       distanceFromSunWind <= MyHudConstants.RADAR_JAM_FROM_SUN_WIND_RADIUS +\n                                                              MyHudConstants.RADAR_BLINKING_RANGE;\n            }\n            else\n            {\n                m_isInSunWindRange = false;\n                m_isNearSunWindRange = false;\n            }\n\n            // get objects to detect and detect if we are in radar jammer's range                        \n            GetObjectsToDetect();\n\n            // check criterias for objects in detected range\n            GetDetectedObjects();\n\n            // fill detected objects collections from helper collection\n            UpdateDetectedObjects();\n            m_updateCompleted = true;\n        }\n\n        private static void UpdateDetectedObjects()\n        {\n            using (MyEntities.EntityCloseLock.AcquireSharedUsing())\n            {\n                using (m_detectedObjectsLock.AcquireExclusiveUsing())\n                {\n                    m_detectedObjects.Clear();\n                    m_detectedBotsAndLargeWeapons.Clear();\n\n                    foreach (IMyObjectToDetect detectedObject in m_detectedObjectsHelperCollection)\n                    {\n                        m_detectedObjects.Add(detectedObject);\n                        if (detectedObject is MySmallShipBot || detectedObject is MyPrefabLargeWeapon)\n                        {\n                            m_detectedBotsAndLargeWeapons.Add(detectedObject);\n                        }\n                    }\n\n                    m_detectedObjectsHelperCollection.Clear();\n                }\n            }\n        }\n\n        private static void GetDetectedObjects()\n        {\n            using (MyEntities.EntityCloseLock.AcquireSharedUsing())\n            {\n                using (m_detectedObjectsLock.AcquireSharedUsing())\n                {\n                    Debug.Assert(m_detectedObjectsHelperCollection.Count == 0);\n                    foreach (IMyObjectToDetect obj in m_objectsToDetect)\n                    {\n\n                        // if we are in radar jammer's range or in sun wind jam range, then we detect only friends\n                        if (IsNearRadarJammerOrSunWind() && obj is MyEntity && (MyFactions.GetFactionsRelation(GetOwner().Faction, ((MyEntity)obj).Faction) == MyFactionRelationEnum.Enemy))\n                        {\n                            continue;\n                        }\n\n                        //activeDetector.IsDetected(GetRadarPosition(), objectToDetect)\n                        if (!CanBeDetected(obj))\n                        {\n                            continue;\n                        }\n\n                        BoundingSphere detectingSphere = new BoundingSphere(GetOwner().GetPosition(), DefaultRadarRange);\n                        if (!detectingSphere.Intersects(obj.WorldAABB))\n                        {\n                            continue;\n                        }\n\n                        m_detectedObjectsHelperCollection.Add(obj);\n                    }\n                    m_objectsToDetect.Clear();\n                }\n            }\n        }\n\n        private static void GetObjectsToDetect()\n        {\n            m_isInRadarJammerRange = false;\n            Debug.Assert(m_objectsToDetect.Count == 0);\n\n            if (MyGuiScreenGamePlay.Static == null)\n                return;\n            if (MyGuiScreenGamePlay.Static.ControlledEntity == null)\n                return;\n\n            using (MyEntities.EntityCloseLock.AcquireSharedUsing())\n            {\n                // find all objects in detecting area                \n                using (MyEntities.UnloadDataLock.AcquireSharedUsing())\n                {\n                    if (MyEntities.IsLoaded)\n                    {\n                        FindObjectsInDetectingArea();\n                    }\n                }\n\n                GetObjectsToDetectInDetectingArea();\n            }\n        }\n\n        private static void GetObjectsToDetectInDetectingArea()\n        {\n            foreach (MyRBElement rbElement in m_objectsInDetectingArea)\n            {\n                if (rbElement.GetRigidBody() == null)\n                    continue;\n\n                if (rbElement.GetRigidBody().m_UserData == null)\n                    continue;\n\n                MyEntity physObject = ((MyPhysicsBody)rbElement.GetRigidBody().m_UserData).Entity;\n                if (physObject == null)\n                    continue;\n\n                // try detect if we are in radar jammer's range\n                MySmallShip smallShip = physObject as MySmallShip;\n                if (smallShip != null)\n                {\n                    if (smallShip.IsEngineTurnedOff())\n                        continue;\n\n                    if (smallShip.HasRadarJammerActive())\n                    {\n                        float distanceFromRadarJammer = Vector3.Distance(GetRadarPosition(), smallShip.WorldVolume.Center);\n                        if (distanceFromRadarJammer <= MyHudConstants.RADAR_JAMMER_RANGE)\n                        {\n                            m_isInRadarJammerRange = true;\n                        }\n                    }\n                }\n\n                if (MyGuiScreenGamePlay.Static != null &&\n                    MyGuiScreenGamePlay.Static.ControlledEntity == physObject)\n                {\n                    continue;\n                }\n\n                // because ore deposit is not a entity, so we must use this\n                if (physObject is MyVoxelMap)\n                {\n                    MyVoxelMap voxelMap = physObject as MyVoxelMap;\n                    using (voxelMap.OreDepositsLock.AcquireSharedUsing())\n                    {\n                        foreach (MyVoxelMapOreDepositCell oreDeposit in voxelMap.OreDepositCellsContainsOre)\n                        {\n                            Debug.Assert(oreDeposit != null);\n                            m_objectsToDetect.Add(oreDeposit);\n                        }\n                    }\n                }\n                else\n                {\n                    Debug.Assert(physObject != null);\n                    m_objectsToDetect.Add(physObject);\n                }\n            }\n        }\n\n        private static void FindObjectsInDetectingArea()\n        {\n            // find max detector's range\n            float range = Math.Max(DefaultRadarRange, MyHudConstants.RADAR_JAMMER_RANGE);\n            Debug.Assert(m_objectsInDetectingArea.Count == 0);\n            BoundingSphere sphereToDetecting = new BoundingSphere(GetRadarPosition(), range);\n            BoundingBox radarBoundingBox = BoundingBoxHelper.InitialBox;\n            BoundingBoxHelper.AddSphere(ref sphereToDetecting, ref radarBoundingBox);\n            MyEntities.GetElementsInBox(ref radarBoundingBox, m_objectsInDetectingArea);\n        }\n\n\n        private static bool CanSeeAll()\n        {\n            return\n                MyGuiScreenGamePlay.Static != null &&\n                MyGuiScreenGamePlay.Static.IsGameActive() &&\n                MyGuiScreenGamePlay.Static.IsCheatEnabled(MyGameplayCheatsEnum.SEE_ALL);\n        }\n\n        internal static void UnloadData()\n        {\n            m_clearDetectedObjects = true;\n        }\n\n        public static void GetDetectedObjects(ref List<IMyObjectToDetect> detectedObjects)\n        {\n            detectedObjects.Clear();\n            using (m_detectedObjectsLock.AcquireSharedUsing())\n            {\n                foreach (var detectedObject in m_detectedObjects)\n                    detectedObjects.Add(detectedObject);\n            }\n        }\n\n        public static void GetDetectedObjects(ref HashSet<IMyObjectToDetect> detectedObjects)\n        {\n            detectedObjects.Clear();\n            using (m_detectedObjectsLock.AcquireSharedUsing())\n            {\n                foreach (var detectedObject in m_detectedObjects)\n                    detectedObjects.Add(detectedObject);\n            }\n        }\n\n        public static void GetDetectedBotsAndLargeWeapons(ref List<IMyObjectToDetect> detectedObjects)\n        {\n            detectedObjects.Clear();\n            using (m_detectedObjectsLock.AcquireSharedUsing())\n            {\n                foreach (var detectedObject in m_detectedBotsAndLargeWeapons)\n                    detectedObjects.Add(detectedObject);\n            }\n        }\n\n        public static MySharedHashSet DetectedObjects\n        {\n            get { return new MySharedHashSet(m_detectedObjectsLock, m_detectedObjects); }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Radar/MyRadarDetector.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Managers.EntityManager.Entities;\nusing MinerWars.AppCode.Game.Managers.EntityManager.Entities.Prefabs;\nusing MinerWars.AppCode.Game.Prefabs;\n\nnamespace MinerWars.AppCode.Game.Radar\n{\n    class MyRadarDetector : MyDetectorBase\n    {\n        public MyRadarDetector()\n            : base()\n        {\n        }        \n\n        protected override bool IsObjectMeetDetectCriterium(IMyObjectToDetect objectToDetect)\n        {\n            if (objectToDetect is MySmallShip)\n            {\n                MySmallShip smallShip = objectToDetect as MySmallShip;\n                return smallShip.Radar != null;\n            }            \n            if(objectToDetect is MyPrefabBase)\n            {\n                MyPrefabBase prefab = objectToDetect as MyPrefabBase;\n                return prefab.GetOwner().ContainsPrefab(PrefabTypesFlagEnum.LargeShip);\n            }\n            return false;\n        }\n\n        protected override bool CanBeDetected(IMyObjectToDetect objectToDetect)\n        {\n            return objectToDetect is MySmallShip || \n                   objectToDetect is MyPrefabFoundationFactory || \n                   objectToDetect is MyPrefabHangar;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Render/EnvironmentMap/MyEnvironmentMap.cs",
    "content": "﻿using System;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.App;\nusing MinerWars.CommonLIB.AppCode.Utils;\n\n//using MinerWarsMath.Graphics;\nusing MinerWarsMath;\n\nusing SharpDX;\nusing SharpDX.Direct3D9;\nusing SharpDX.Toolkit;\nusing SharpDX.Toolkit.Graphics;\n\n\nnamespace MinerWars.AppCode.Game.Render.EnvironmentMap\n{\n    using Vector2 = MinerWarsMath.Vector2;\n    using Vector3 = MinerWarsMath.Vector3;\n    using Rectangle = MinerWarsMath.Rectangle;\n    using Matrix = MinerWarsMath.Matrix;\n    using Color = MinerWarsMath.Color;\n    using BoundingBox = MinerWarsMath.BoundingBox;\n    using BoundingSphere = MinerWarsMath.BoundingSphere;\n    using BoundingFrustum = MinerWarsMath.BoundingFrustum;\n\n    class MyEnvironmentMap\n    {\n        static MyEnvironmentMap()\n        {\n            MyMinerGame.GraphicsDeviceManager.DeviceReset += delegate { Reset(); };\n            MyRenderConstants.OnRenderQualityChange += delegate { Reset(); };\n        }\n\n        static MyEnvironmentMapRenderer m_environmentMapRendererMain = new MyEnvironmentMapRenderer();\n        static MyEnvironmentMapRenderer m_environmentMapRendererAux = new MyEnvironmentMapRenderer();\n\n        static bool m_renderInstantly = true;\n\n        /// <summary>\n        /// Maximal distance MainMap from MainMapPosition where MainMap is rendered.\n        /// Further than this distance, AuxMap is set as MainMap.\n        /// </summary>\n        public static float MainMapMaxDistance = 400;\n\n        /// <summary>\n        /// When camera moves more than this distance, cube map is refreshed in one frame to prevent blinking when \"teleporting\" camera or moving extremelly fast\n        /// </summary>\n        public static float InstantRefreshDistance = MainMapMaxDistance * 1.5f;\n\n        /// <summary>\n        /// Distance from MainMapPosition where MainMap begins to blend with AuxMap.\n        /// </summary>\n        public static float BlendDistance = MainMapMaxDistance / 2 + 1;\n\n        public static float Hysteresis = 40;\n\n        public static float NearDistance\n        {\n            get\n            {\n                return m_environmentMapRendererMain.NearDistance;\n            }\n            set\n            {\n                if (value < 50) value = 50;\n                m_environmentMapRendererMain.NearDistance = value;\n                m_environmentMapRendererAux.NearDistance = value;\n                Reset();\n            }\n        }\n\n        public static float FarDistance\n        {\n            get\n            {\n                return m_environmentMapRendererMain.FarDistance;\n            }\n            set\n            {\n                if (value < 50) value = 50;\n                if (value < NearDistance) value = NearDistance;\n                m_environmentMapRendererMain.FarDistance = value;\n                m_environmentMapRendererAux.FarDistance = value;\n                Reset();\n            }\n        }\n\n        public static Vector3? MainMapPosition { get; private set; }\n        public static CubeTexture EnvironmentMainMap\n        {\n            get\n            {\n                return m_environmentMapRendererMain.Environment;\n            }\n        }\n\n        public static Vector3? AuxMapPosition { get; private set; }\n        public static CubeTexture EnvironmentAuxMap\n        {\n            get\n            {\n                return m_environmentMapRendererAux.Environment;\n            }\n        }\n\n        public static CubeTexture AmbientMainMap\n        {\n            get\n            {\n                return m_environmentMapRendererMain.Ambient;\n            }\n        }\n\n        public static CubeTexture AmbientAuxMap\n        {\n            get\n            {\n                return m_environmentMapRendererAux.Ambient;\n            }\n        }\n\n        /// <summary>\n        /// Gets or sets the BlendFactor, value is between 0.0f and 1.0f, 0.0f means show only MainMap, 1.0f means show only AuxMap\n        /// </summary>\n        public static float BlendFactor { get; private set; }\n\n        /// <summary>\n        /// Gets or sets duration of last update in miliseconds\n        /// </summary>\n        public static float LastUpdateTime { get; private set; }\n\n        public static void SetSize(int size)\n        {\n            MyRender.CreateEnvironmentMapsRT(size);\n            Reset();\n        }\n\n        public static void SetRenderTargets(CubeTexture envMain, CubeTexture envAux, CubeTexture ambMain, CubeTexture ambAux, Texture fullSizeRT)\n        {\n            m_environmentMapRendererMain.SetRenderTarget(envMain, ambMain, fullSizeRT);\n            m_environmentMapRendererAux.SetRenderTarget(envAux, ambAux, fullSizeRT);\n        }\n\n        /// <summary>\n        /// Causes maps to be recreated immediately\n        /// </summary>\n        public static void Reset()\n        {\n            MainMapPosition = null;\n            AuxMapPosition = null;\n            m_renderInstantly = true;\n        }\n\n\n\n        public static void Update()\n        {\n            //TODO: use only for profiling\n            /*\n            long startTime;\n            MyWindowsAPIWrapper.QueryPerformanceCounter(out startTime);\n              */\n\n            bool renderEnviromentMaps = MyRender.EnableLights && MyRender.EnableLightsRuntime && MyRender.EnableSun && (MyRender.EnableEnvironmentMapAmbient || MyRender.EnableEnvironmentMapReflection);\n\n            if (!renderEnviromentMaps)\n            {\n                return;\n            }\n\n            if (BlendDistance > MainMapMaxDistance)\n            {\n                throw new InvalidOperationException(\"BlendDistance must be lower than MainMapMaxDistance\");\n            }\n\n            MyRender.RenderOcclusionsImmediatelly = true;\n\n            Vector3 cameraPos = MyCamera.Position;\n\n            if (MainMapPosition.HasValue && (cameraPos - MainMapPosition.Value).Length() > InstantRefreshDistance)\n            {\n                m_renderInstantly = true;\n            }\n            \n            // Makes evironment camera pos 300m in front of real camera\n            //cameraPos += Vector3.Normalize(MyCamera.ForwardVector) * 300\n\n            if (MainMapPosition == null)\n            {\n                LastUpdateTime = 0;\n                MainMapPosition = cameraPos;\n                m_environmentMapRendererMain.StartUpdate(MainMapPosition.Value, m_renderInstantly);\n                m_renderInstantly = false;\n\n                BlendFactor = 0.0f;\n            }\n            else\n            {\n                float mainMapDistance = (MainMapPosition.Value - cameraPos).Length();\n\n                // When behind blend distance\n                if (mainMapDistance > BlendDistance)\n                {\n                    // Create AuxMap if not created\n                    if (AuxMapPosition == null)\n                    {\n                        LastUpdateTime = 0;\n                        AuxMapPosition = cameraPos;\n                        m_environmentMapRendererAux.StartUpdate(AuxMapPosition.Value, m_renderInstantly);\n                        m_renderInstantly = false;\n                    }\n\n                    // Wait till rendering done before blending\n                    if (m_environmentMapRendererAux.IsDone())\n                    {\n                        // Set proper blend factor\n                        BlendFactor = (mainMapDistance - BlendDistance) / (MainMapMaxDistance - BlendDistance);\n                    }\n                }\n                else if ((mainMapDistance + Hysteresis) < BlendDistance)\n                {\n                    AuxMapPosition = null;\n                }\n\n                // If MainMap should not be even displayed...swap aux and main and display\n                if (mainMapDistance > MainMapMaxDistance && m_environmentMapRendererAux.IsDone())\n                {\n                    var tmp = m_environmentMapRendererAux;\n                    m_environmentMapRendererAux = m_environmentMapRendererMain;\n                    m_environmentMapRendererMain = tmp;\n                    MainMapPosition = cameraPos + MyMwcUtils.Normalize(MainMapPosition.Value - cameraPos) * BlendDistance;\n                    AuxMapPosition = null;\n                    BlendFactor = 0.0f;\n                }\n            }\n\n            m_environmentMapRendererMain.ContinueUpdate();\n            m_environmentMapRendererAux.ContinueUpdate();\n\n            MyRender.RenderOcclusionsImmediatelly = false;\n\n            /*\n            long frq;\n            MyWindowsAPIWrapper.QueryPerformanceFrequency(out frq);\n\n            long stopTime;\n            MyWindowsAPIWrapper.QueryPerformanceCounter(out stopTime);\n\n            float updateTime = ((float)(stopTime - startTime)) / frq * 1000.0f;\n            if(updateTime > LastUpdateTime)\n            {\n                LastUpdateTime = updateTime;\n            }\n             * */\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Render/EnvironmentMap/MyEnvironmentMapRenderer.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Effects;\n\nusing MinerWarsMath;\n//using MinerWarsMath.Graphics;\n\nusing SharpDX;\nusing SharpDX.Direct3D9;\nusing SharpDX.Toolkit;\nusing SharpDX.Toolkit.Graphics;\n\n\n\nnamespace MinerWars.AppCode.Game.Render.EnvironmentMap\n{\n    using Vector2 = MinerWarsMath.Vector2;\n    using Vector3 = MinerWarsMath.Vector3;\n    using Rectangle = MinerWarsMath.Rectangle;\n    using Matrix = MinerWarsMath.Matrix;\n    using Color = MinerWarsMath.Color;\n    using BoundingBox = MinerWarsMath.BoundingBox;\n    using BoundingSphere = MinerWarsMath.BoundingSphere;\n    using BoundingFrustum = MinerWarsMath.BoundingFrustum;\n\n    public class MyEnvironmentMapRenderer \n    {\n        const float NEAR_CLIP_FOR_INSTANT = 120;\n\n        CubeTexture m_environmentRT;\n        CubeTexture m_ambientRT;\n        Texture m_fullSizeRT;\n\n        MyRender.MyRenderSetup m_setup;\n        MyRender.MyRenderSetup m_backup = new MyRender.MyRenderSetup();\n\n        BaseTexture[] m_bindings = new BaseTexture[1];\n\n        float NearClip = MyCamera.NEAR_PLANE_DISTANCE;\n\n        public float NearDistance \n        {\n            get\n            {\n                return m_setup.LodTransitionNear.Value; \n            }\n            set \n            { \n                m_setup.LodTransitionNear = value;\n                m_setup.LodTransitionFar = value;\n            }\n        }\n\n        public float FarDistance \n        {\n            get \n            { \n                return m_setup.LodTransitionBackgroundStart.Value; \n            } \n            set \n            { \n                m_setup.LodTransitionBackgroundStart = value;\n                m_setup.LodTransitionBackgroundEnd = value;\n            }\n        }\n\n        public MyEnvironmentMapRenderer()\n        {\n            SetRenderSetup();\n            MyRenderConstants.OnRenderQualityChange += new EventHandler(MyRenderConstants_OnRenderQualityChange);\n        }\n\n        void MyRenderConstants_OnRenderQualityChange(object sender, EventArgs e)\n        {\n            SetRenderSetup();\n        }\n\n        public void SetRenderTarget(CubeTexture environmentRT, CubeTexture ambientRT, Texture fullSizeRT)\n        {\n            m_setup.RenderTargets[0] = fullSizeRT;\n\n            m_environmentRT = environmentRT;\n            m_ambientRT = ambientRT;\n            m_fullSizeRT = fullSizeRT;\n        }\n\n        Matrix CreateViewMatrix(CubeMapFace cubeMapFace, Vector3 position)\n        {\n            Matrix viewMatrix = Matrix.Identity;\n            Vector3 pos = position;\n            switch (cubeMapFace)\n            {\n                // Face index 0\n                case CubeMapFace.PositiveX:\n                    viewMatrix = Matrix.CreateLookAt(pos, pos + Vector3.Left, -Vector3.Up);\n                    break;\n\n                // Face index 1\n                case CubeMapFace.NegativeX:\n                    viewMatrix = Matrix.CreateLookAt(pos, pos + Vector3.Right, -Vector3.Up);\n                    break;\n\n                // Face index 2\n                case CubeMapFace.PositiveY:\n                    viewMatrix = Matrix.CreateLookAt(pos, pos + Vector3.Down, Vector3.Backward);\n                    break;\n\n                // Face index 3\n                case CubeMapFace.NegativeY:\n                    viewMatrix = Matrix.CreateLookAt(pos, pos + Vector3.Up, Vector3.Forward);\n                    break;\n\n                // Face index 4\n                case CubeMapFace.PositiveZ:\n                    viewMatrix = Matrix.CreateLookAt(pos, pos + Vector3.Forward, -Vector3.Up);\n                    break;\n\n                // Face index 5\n                case CubeMapFace.NegativeZ:\n                    viewMatrix = Matrix.CreateLookAt(pos, pos + Vector3.Backward, -Vector3.Up);\n                    break;\n            }\n            return viewMatrix;\n        }\n\n        public CubeTexture Environment\n        {\n            get\n            {\n                return m_environmentRT;\n            }\n        }\n\n        public CubeTexture Ambient\n        {\n            get\n            {\n                return m_ambientRT;\n            }\n        }\n\n        int currentIndex = -1;\n        Vector3 position;\n\n        // If render now is true, all face are rendered instantly\n        public void StartUpdate(Vector3 position, bool renderNow = false)\n        {\n            this.position = position;\n            currentIndex = 0;\n\n            if (renderNow)\n            {\n                // When rendering all in one frame, make sure no close objects bother us\n                var old = NearClip;\n                NearClip = NEAR_CLIP_FOR_INSTANT;\n\n                for (int i = 0; i < 12; i++)\n                {\n                    ContinueUpdate();\n                }\n\n                NearClip = old;\n            }\n        }\n\n        public void ContinueUpdate()\n        {\n            if (currentIndex >= 0 && currentIndex <= 5)\n            {\n                // We use rendered scene in cube map for both environment and ambient;\n                if (MyRender.EnableEnvironmentMapReflection || MyRender.EnableEnvironmentMapAmbient)\n                {\n                    UpdateFace(position, currentIndex);\n                }\n                currentIndex++;\n                //currentIndex = 6; // Only render one side\n            }\n            else if (currentIndex >= 6 && currentIndex <= 11)\n            {\n                // Precalculate ambient to be used as lookup texture (cumulation)\n                if (MyRender.EnableEnvironmentMapAmbient)\n                {\n                    UpdateAmbient(currentIndex - 6);\n                }\n                currentIndex++;\n                //currentIndex = 12; // Only blur one side\n            }\n        }\n\n        public bool IsDone()\n        {\n            return currentIndex == 12;\n        }\n\n        private void SetRenderSetup()\n        {\n            m_setup = new MyRender.MyRenderSetup();\n            m_setup.CallerID = MyRenderCallerEnum.EnvironmentMap;\n\n            m_setup.RenderTargets = new Texture[1];\n           \n            //m_setup.EnabledModules.Remove(MyRenderModuleEnum.Cockpit);\n            //m_setup.EnabledModules.Remove(MyRenderModuleEnum.CockpitGlass);\n            //m_setup.EnabledModules.Remove(MyRenderModuleEnum.SunGlareAndLensFlare);\n            //m_setup.EnabledModules.Remove(MyRenderModuleEnum.UpdateOcclusions);\n                                   \n            //m_setup.EnabledModules.Remove(MyRenderModuleEnum.AnimatedParticlesPrepare);\n            //m_setup.EnabledModules.Remove(MyRenderModuleEnum.TransparentGeometry);\n            //m_setup.EnabledModules.Remove(MyRenderModuleEnum.ParticlesDustField);\n            //m_setup.EnabledModules.Remove(MyRenderModuleEnum.VoxelHand);\n            //m_setup.EnabledModules.Remove(MyRenderModuleEnum.DistantImpostors);\n            //m_setup.EnabledModules.Remove(MyRenderModuleEnum.Decals);\n            //m_setup.EnabledModules.Remove(MyRenderModuleEnum.CockpitWeapons);\n\n            m_setup.EnabledModules = new HashSet<MyRenderModuleEnum>();\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.SunGlow);\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.SectorBorder);\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.DrawSectorBBox);\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.DrawCoordSystem);\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.Explosions);\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.BackgroundCube);\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.GPS);\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.TestField);\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.AnimatedParticles);\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.Lights);\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.TransparentGeometryForward);\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.Projectiles);\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.DebrisField);\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.ThirdPerson);\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.Editor);\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.SolarObjects);\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.SolarMapGrid);\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.PrunningStructure);\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.SunWind);\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.IceStormWind);\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.PrefabContainerManager);\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.PhysicsPrunningStructure);\n\n            m_setup.EnabledRenderStages = new HashSet<MyRenderStage>();\n            m_setup.EnabledRenderStages.Add(MyRenderStage.PrepareForDraw);\n            m_setup.EnabledRenderStages.Add(MyRenderStage.Background);\n            m_setup.EnabledRenderStages.Add(MyRenderStage.LODDrawStart);\n            m_setup.EnabledRenderStages.Add(MyRenderStage.LODDrawEnd);\n\n            m_setup.EnabledPostprocesses = new HashSet<MyPostProcessEnum>();\n//            m_setup.EnabledPostprocesses.Add(MyPostProcessEnum.VolumetricFog);\n            m_setup.FogMultiplierMult = 1.0f; //increases fog to imitate missing particle dust\n\n            m_setup.EnableHDR = false;\n            m_setup.EnableSun = false;\n            m_setup.EnableSmallLights = false;\n            m_setup.EnableDebugHelpers = false;\n            m_setup.EnableEnvironmentMapping = false;\n            m_setup.EnableOcclusionQueries = false;\n            m_setup.EnableNear = false;\n\n            m_setup.LodTransitionNear = MyRenderConstants.RenderQualityProfile.EnvironmentLodTransitionDistance;\n            m_setup.LodTransitionFar = MyRenderConstants.RenderQualityProfile.EnvironmentLodTransitionDistance;\n            m_setup.LodTransitionBackgroundStart = MyRenderConstants.RenderQualityProfile.EnvironmentLodTransitionDistanceBackground;\n            m_setup.LodTransitionBackgroundEnd = MyRenderConstants.RenderQualityProfile.EnvironmentLodTransitionDistanceBackground;\n        }\n\n        public void UpdateFace(Vector3 position, int faceIndex)\n        {\n           // SetRenderSetup();\n\n            CubeMapFace face = (CubeMapFace)faceIndex;\n\n            // New setup\n            m_setup.CameraPosition = position;\n            m_setup.AspectRatio = 1.0f;\n            m_setup.Viewport = new Viewport(0, 0, (int)m_environmentRT.GetLevelDescription(0).Width, (int)m_environmentRT.GetLevelDescription(0).Width);\n            m_setup.ViewMatrix = CreateViewMatrix(face, position);\n            m_setup.Fov = MathHelper.PiOver2;\n            m_setup.ProjectionMatrix = Matrix.CreatePerspectiveFieldOfView(m_setup.Fov.Value, m_setup.AspectRatio.Value, NearClip, m_setup.LodTransitionBackgroundEnd.Value);\n            m_setup.DepthToAlpha = true;\n\n            MyRender.GetRenderProfiler().StartProfilingBlock(\"Draw environmental maps\");\n\n            MyRender.PushRenderSetupAndApply(m_setup, ref m_backup);\n            MyRender.Draw(false);\n\n            MyRender.GetRenderProfiler().EndProfilingBlock();\n                                        \n            Surface cubeSurface = m_environmentRT.GetCubeMapSurface(face, 0);                 \n            MyMinerGame.Static.GraphicsDevice.SetRenderTarget(0, cubeSurface);\n\n            var screenEffect = MyRender.GetEffect(MyEffects.Screenshot) as MyEffectScreenshot;\n            screenEffect.SetTechnique(MyEffectScreenshot.ScreenshotTechniqueEnum.Default);\n            screenEffect.SetSourceTexture(m_fullSizeRT);\n            screenEffect.SetScale(new Vector2(m_environmentRT.GetLevelDescription(0).Width / (float)m_fullSizeRT.GetLevelDescription(0).Width * 0.968f, 0.982f * m_environmentRT.GetLevelDescription(0).Width / (float)m_fullSizeRT.GetLevelDescription(0).Height));\n            MyGuiManager.GetFullscreenQuad().Draw(screenEffect);\n            screenEffect.SetScale(new Vector2(1, 1));\n\n            cubeSurface.Dispose();    \n\n            MyRender.PopRenderSetupAndRevert(m_backup);\n        }\n\n        public void UpdateAmbient(int index)\n        {                             \n            CubeMapFace face = (CubeMapFace)index;\n            Surface cubeSurface = m_ambientRT.GetCubeMapSurface(face, 0);\n            MyMinerGame.Static.GraphicsDevice.SetRenderTarget(0, cubeSurface);\n            BlendState.Opaque.Apply();\n\n            MyEffectAmbientPrecalculation precalc = MyRender.GetEffect(MyEffects.AmbientMapPrecalculation) as MyEffectAmbientPrecalculation;\n            precalc.SetEnvironmentMap(this.m_environmentRT);\n            precalc.SetFaceMatrix(CreateViewMatrix(face, Vector3.Zero));\n            precalc.SetRandomTexture(MyRender.GetRandomTexture());\n            precalc.SetIterationCount(14);\n            precalc.SetMainVectorWeight(1.0f);\n            precalc.SetBacklightColorAndIntensity(new Vector3(MyRender.Sun.BackColor.X, MyRender.Sun.BackColor.Y, MyRender.Sun.BackColor.Z), MyRender.Sun.BackIntensity);\n            MyGuiManager.GetFullscreenQuad().Draw(precalc);\n\n            MyMinerGame.SetRenderTarget(null, null);\n            cubeSurface.Dispose();  \n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Render/MyRender-Content.cs",
    "content": "﻿#region Using\n\nusing System;\nusing System.Collections.Generic;\n\nusing SysUtils.Utils;\n\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Physics;\nusing MinerWars.AppCode.Game.Effects;\nusing MinerWars.AppCode.Game.Utils;\nusing System.Diagnostics;\nusing MinerWars.AppCode.Game.Render.EnvironmentMap;\nusing MinerWars.AppCode.Game.Render.Shadows;\nusing MinerWars.AppCode.Game.Utils.VertexFormats;\nusing System.Linq;\n\n//using MinerWarsMath.Graphics;\n\nusing SharpDX;\nusing SharpDX.Direct3D9;\nusing SharpDX.Toolkit;\nusing SharpDX.Toolkit.Graphics;\n\n#endregion\n\nnamespace MinerWars.AppCode.Game.Render\n{\n    using Vector3 = MinerWarsMath.Vector3;\n    using BoundingBox = MinerWarsMath.BoundingBox;\n\n    static partial class MyRender\n    {\n        #region Content load\n        public static void LoadContent()\n        {\n            MyMwcLog.WriteLine(\"MyRender.LoadContent - START\");\n            MyMwcLog.IncreaseIndent();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyRender::LoadContent\");\n            UnloadContent(false); //Because XNA does not do this automatically\n\n            m_device = MyMinerGame.Static.GraphicsDevice;\n\n            CreateRenderTargets();\n            CreateEnvironmentMapsRT(MyRenderConstants.ENVIRONMENT_MAP_SIZE);\n\n            MyMwcLog.WriteLine(\"CreateRandomTexture\");\n\n            m_randomTexture = CreateRandomTexture();\n\n            MyShadowRendererBase.LoadContent();\n\n            MyOcclusionQueries.LoadContent(m_device);\n\n            LoadEffects();\n\n            MyMwcLog.WriteLine(\"MyShadowRenderer\");\n\n            if (m_shadowRenderer == null)\n            {\n#if RENDER_PROFILING\n                //m_shadowRenderer = new MyShadowRenderer(GetShadowCascadeSize(), MyRenderTargets.ShadowMap, false);\n                m_shadowRenderer = new MyShadowRenderer(GetShadowCascadeSize(), MyRenderTargets.ShadowMap, MyRenderTargets.ShadowMapZBuffer, true);\n#else\n                m_shadowRenderer = new MyShadowRenderer(GetShadowCascadeSize(), MyRenderTargets.ShadowMap, MyRenderTargets.ShadowMapZBuffer, true);\n#endif\n            }\n\n            MyMwcLog.WriteLine(\"SpotShadowRenderer\");\n\n            if (m_spotShadowRenderer == null)\n                m_spotShadowRenderer = new MySpotShadowRenderer();\n\n            MyMwcLog.WriteLine(\"InitQueries\");\n\n            List<MyElement> list = new List<MyElement>();\n            BoundingBox aabb = new BoundingBox(new Vector3(float.MinValue), new Vector3(float.MaxValue));\n            m_cullingStructure.OverlapAllBoundingBox(ref aabb, list);\n            foreach (MyCullableRenderObject element in list)\n            {\n                element.InitQueries();\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyRender.LoadContent - END\");\n        }\n\n        private static int GetShadowCascadeSize()\n        {\n            return System.Math.Min(MyMinerGame.GraphicsDeviceManager.MaxTextureSize / MyShadowRenderer.NumSplits, MyRenderConstants.RenderQualityProfile.ShadowMapCascadeSize);\n        }\n\n        public static void UnloadContent(bool removeObjects = true)\n        {\n            MyMwcLog.WriteLine(\"MyRender.UnloadContent - START\");\n            MyMwcLog.IncreaseIndent();\n\n            MyShadowRendererBase.UnloadContent();\n\n            for (int i = 0; i < m_renderTargets.GetLength(0); i++)\n            {\n                DisposeRenderTarget((MyRenderTargets)i);\n            }\n\n            DisposeSpotShadowRT();\n\n            if (m_randomTexture != null)\n            {\n                m_randomTexture.Dispose();\n                m_randomTexture = null;\n            }\n\n            MyOcclusionQueries.UnloadContent();\n\n            UnloadEffects();\n\n            Clear();\n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyRender.UnloadContent - END\");\n        }\n\n        public static void UnloadData()\n        {\n            AssertStructuresEmpty();\n\n            List<MyElement> list = new List<MyElement>();\n            BoundingBox aabb = new BoundingBox(new Vector3(float.MinValue), new Vector3(float.MaxValue));\n            m_cullingStructure.OverlapAllBoundingBox(ref aabb, list);\n            foreach (MyCullableRenderObject element in list)\n            {\n                element.DestroyQueries();\n            }\n\n            m_prunningStructure.Clear();\n            m_cullingStructure.Clear();\n            m_shadowPrunningStructure.Clear();\n        }\n\n        public static void Clear()\n        {\n            m_renderOcclusionQueries.Clear();\n\n\n            m_spotLightRenderElements.Clear();\n            m_spotLightsPool.DeallocateAll();\n\n            m_renderObjectsToDraw.Clear();\n            m_entitiesToDebugDraw.Clear();\n\n            foreach (MyRenderElement renderElement in m_renderElementsPool)\n            {\n                renderElement.Entity = null;\n                //renderElement.MaskTexture = null;\n                renderElement.Material = null;\n                renderElement.IndexBuffer = null;\n                renderElement.VertexBuffer = null;\n            }\n\n            m_renderElementIndex = 0;\n            m_renderElements.Clear();\n            m_transparentRenderElements.Clear();\n            m_cullObjectListForDraw.Clear();\n            m_cullObjectListForDrawMain.Clear();\n            m_renderObjectListForDraw.Clear();\n            m_renderObjectListForDrawMain.Clear();\n            m_renderObjectListForIntersections.Clear();\n        }\n\n        [Conditional(\"DEBUG\")]\n        public static void AssertStructuresEmpty()\n        {\n            BoundingBox testAABB = new BoundingBox(new Vector3(float.MinValue), new Vector3(float.MaxValue));\n            m_prunningStructure.OverlapAllBoundingBox(ref testAABB, m_renderObjectListForDraw);\n            Debug.Assert(m_renderObjectListForDraw.Count == 0, \"There are some objects in render prunning structure which are not removed on unload!\");\n\n            m_shadowPrunningStructure.OverlapAllBoundingBox(ref testAABB, m_renderObjectListForDraw);\n            Debug.Assert(m_renderObjectListForDraw.Count == 0, \"There are some objects in shadow prunning structure which are not removed on unload!\");\n\n            m_cullingStructure.OverlapAllBoundingBox(ref testAABB, m_cullObjectListForDraw);\n            int count = 0;\n            foreach (var obj in m_cullObjectListForDraw)\n            {\n                count += ((MyCullableRenderObject)obj).EntitiesContained;\n                Debug.Assert(((MyCullableRenderObject)obj).EntitiesContained == 0, \"There are some objects in culling structure which are not removed on unload!\");\n\n               // ((MyCullableRenderObject)obj).CulledObjects.OverlapAllBoundingBox(ref testAABB, m_renderObjectListForDraw);\n\n            }\n        }\n\n        #endregion\n\n        #region Render targets\n\n        public static void CreateRenderTargets()\n        {\n            if (MyRenderConstants.RenderQualityProfile.ForwardRender)\n                return;\n\n            MyMwcLog.WriteLine(\"MyRender.CreateRenderTargets - START\");\n\n            int forwardRTWidth = (int)(MyCamera.ForwardViewport.Width);\n            int forwardRTHeight = (int)(MyCamera.ForwardViewport.Height);\n            int forwardRTHalfWidth = (int)(MyCamera.ForwardViewport.Width / 2);\n            int forwardRTHalfHeight = (int)(MyCamera.ForwardViewport.Height / 2);\n            int forwardRT4Width = (int)(MyCamera.ForwardViewport.Width / 4);\n            int forwardRT4Height = (int)(MyCamera.ForwardViewport.Height / 4);\n            int forwardRT8Width = (int)(MyCamera.ForwardViewport.Width / 8);\n            int forwardRT8Height = (int)(MyCamera.ForwardViewport.Height / 8);\n\n            int secondaryShadowMapSize = MyRenderConstants.RenderQualityProfile.SecondaryShadowMapCascadeSize;\n\n            //Largest RT\n#if COLOR_SHADOW_MAP_FORMAT\n            CreateRenderTarget(MyRenderTargets.ShadowMap, MyShadowRenderer.NumSplits * GetShadowCascadeSize(), GetShadowCascadeSize(), SurfaceFormat.Color, DepthFormat.Depth24Stencil8);\n            CreateRenderTarget(MyRenderTargets.SecondaryShadowMap, MyShadowRenderer.NumSplits * secondaryShadowMapSize, secondaryShadowMapSize, SurfaceFormat.Color, DepthFormat.Depth24Stencil8);\n#else\n            CreateRenderTarget(MyRenderTargets.ShadowMap, MyShadowRenderer.NumSplits * GetShadowCascadeSize(), GetShadowCascadeSize(), Format.R32F);\n            CreateRenderTarget(MyRenderTargets.ShadowMapZBuffer, MyShadowRenderer.NumSplits * GetShadowCascadeSize(), GetShadowCascadeSize(), Format.D24S8, Usage.DepthStencil);\n\n            CreateRenderTarget(MyRenderTargets.SecondaryShadowMap, MyShadowRenderer.NumSplits * secondaryShadowMapSize, secondaryShadowMapSize, Format.R32F);\n            CreateRenderTarget(MyRenderTargets.SecondaryShadowMapZBuffer, MyShadowRenderer.NumSplits * secondaryShadowMapSize, secondaryShadowMapSize, Format.D24S8, Usage.DepthStencil);\n#endif\n\n            //Full viewport RTs\n            CreateRenderTarget(MyRenderTargets.Auxiliary0, forwardRTWidth, forwardRTHeight, Format.A8R8G8B8);\n            CreateRenderTarget(MyRenderTargets.Auxiliary1, forwardRTWidth, forwardRTHeight, Format.A16B16G16R16F);\n            CreateRenderTarget(MyRenderTargets.Auxiliary2, forwardRTWidth, forwardRTHeight, Format.A8R8G8B8);\n\n            CreateRenderTarget(MyRenderTargets.Normals, forwardRTWidth, forwardRTHeight, Format.A8R8G8B8, Usage.RenderTarget | Usage.AutoGenerateMipMap);\n            CreateRenderTarget(MyRenderTargets.Diffuse, forwardRTWidth, forwardRTHeight, Format.A8R8G8B8, Usage.RenderTarget | Usage.AutoGenerateMipMap);\n            CreateRenderTarget(MyRenderTargets.Depth, forwardRTWidth, forwardRTHeight, Format.A8R8G8B8, Usage.RenderTarget | Usage.AutoGenerateMipMap);\n            CreateRenderTarget(MyRenderTargets.ZBuffer, forwardRTWidth, forwardRTHeight, Format.D24S8, Usage.DepthStencil);\n\n            CreateRenderTarget(MyRenderTargets.EnvironmentMap, forwardRTWidth, forwardRTHeight, Format.A8R8G8B8);\n\n            //Half viewport RTs\n            CreateRenderTarget(MyRenderTargets.AuxiliaryHalf0, forwardRTHalfWidth, forwardRTHalfHeight, Format.A8R8G8B8);\n            CreateRenderTarget(MyRenderTargets.AuxiliaryHalf1010102, forwardRTHalfWidth, forwardRTHalfHeight, Format.A2R10G10B10);\n\n            CreateRenderTarget(MyRenderTargets.DepthHalf, forwardRTHalfWidth, forwardRTHalfHeight, Format.A8R8G8B8);\n            CreateRenderTarget(MyRenderTargets.SSAO, forwardRTHalfWidth, forwardRTHalfHeight, Format.A8R8G8B8);\n            CreateRenderTarget(MyRenderTargets.SSAOBlur, forwardRTHalfWidth, forwardRTHalfHeight, Format.A8R8G8B8);\n\n            //Quarter viewport RTs\n            CreateRenderTarget(MyRenderTargets.AuxiliaryQuarter0, forwardRT4Width, forwardRT4Height, Format.A8R8G8B8);\n\n            if (MyPostProcessHDR.RenderHDR())\n            {\n                CreateRenderTarget(MyRenderTargets.HDR4, forwardRT4Width, forwardRT4Height, Format.A2R10G10B10);\n                CreateRenderTarget(MyRenderTargets.HDR4Threshold, forwardRT4Width, forwardRT4Height, Format.A2R10G10B10);\n            }\n\n            //Low size RTs\n            CreateRenderTarget(MyRenderTargets.SecondaryCamera, MyCamera.BackwardViewport.Width, MyCamera.BackwardViewport.Height, Format.A8R8G8B8);\n            CreateRenderTarget(MyRenderTargets.SecondaryCameraZBuffer, MyCamera.BackwardViewport.Width, MyCamera.BackwardViewport.Height, Format.D24S8, Usage.DepthStencil);\n            CreateSpotShadowRT();\n\n            SetEnvironmentRenderTargets();\n\n\n            m_GBufferDefaultBinding = new Texture[] { (Texture)MyRender.GetRenderTarget(MyRenderTargets.Normals), (Texture)MyRender.GetRenderTarget(MyRenderTargets.Diffuse), (Texture)MyRender.GetRenderTarget(MyRenderTargets.Depth) };\n            m_aux0Binding = new Texture[] { (Texture)MyRender.GetRenderTarget(MyRenderTargets.Auxiliary0) };\n\n            MyMwcLog.WriteLine(\"MyRender.CreateRenderTargets - END\");\n        }\n\n        public static void CreateSpotShadowRT()\n        {\n            MyMwcLog.WriteLine(\"MyRender.CreateSpotShadowRT - START\");\n\n            DisposeSpotShadowRT();\n\n            for (int i = 0; i < MyRenderConstants.SPOT_SHADOW_RENDER_TARGET_COUNT; i++)\n            {\n                if (MySpotShadowRenderer.SpotShadowMapSize <= 0 || MySpotShadowRenderer.SpotShadowMapSize <= 0) // may happen when creatting in load content\n                    return;\n\n                m_spotShadowRenderTargets[i] = new Texture(m_device, MySpotShadowRenderer.SpotShadowMapSize, MySpotShadowRenderer.SpotShadowMapSize, 0, Usage.RenderTarget, Format.R32F, Pool.Default);\n                m_spotShadowRenderTargets[i].DebugName = \"SpotShadowRT\" + i;\n                m_spotShadowRenderTargetsZBuffers[i] = new Texture(m_device, MySpotShadowRenderer.SpotShadowMapSize, MySpotShadowRenderer.SpotShadowMapSize, 0, Usage.DepthStencil, Format.D24S8, Pool.Default);\n                m_spotShadowRenderTargetsZBuffers[i].DebugName = \"SpotShadowDepthRT\" + i;\n            }\n\n            MyMwcLog.WriteLine(\"MyRender.CreateSpotShadowRT - END\");\n        }\n\n        // Create environment map render targets for both cube textures\n        public static void CreateEnvironmentMapsRT(int environmentMapSize)\n        {\n            if (MyRenderConstants.RenderQualityProfile.ForwardRender)\n                return;\n\n\n            MyMwcLog.WriteLine(\"MyRender.CreateEnvironmentMapsRT - START\");\n\n            CreateRenderTargetCube(MyRenderTargets.EnvironmentCube, environmentMapSize, Format.A8R8G8B8);\n            CreateRenderTargetCube(MyRenderTargets.EnvironmentCubeAux, environmentMapSize, Format.A8R8G8B8);\n\n            CreateRenderTargetCube(MyRenderTargets.AmbientCube, environmentMapSize, Format.A8R8G8B8);\n            CreateRenderTargetCube(MyRenderTargets.AmbientCubeAux, environmentMapSize, Format.A8R8G8B8);\n\n            CreateRenderTarget(MyRenderTargets.EnvironmentFaceAux, environmentMapSize, environmentMapSize, Format.A8R8G8B8);\n            CreateRenderTarget(MyRenderTargets.EnvironmentFaceAux2, environmentMapSize, environmentMapSize, Format.A8R8G8B8);\n\n            SetEnvironmentRenderTargets();\n\n            MyMwcLog.WriteLine(\"MyRender.CreateEnvironmentMapsRT - END\");\n        }\n\n        /// <summary>\n        /// Sets the environment render targets.\n        /// </summary>\n        private static void SetEnvironmentRenderTargets()\n        {\n            var rt1 = MyRender.GetRenderTargetCube(MyRenderTargets.EnvironmentCube);\n            var rt2 = MyRender.GetRenderTargetCube(MyRenderTargets.EnvironmentCubeAux);\n            var rt3 = MyRender.GetRenderTargetCube(MyRenderTargets.AmbientCube);\n            var rt4 = MyRender.GetRenderTargetCube(MyRenderTargets.AmbientCubeAux);\n            var rt5 = MyRender.GetRenderTarget(MyRenderTargets.EnvironmentMap);\n\n            MyEnvironmentMap.SetRenderTargets((CubeTexture)rt1, (CubeTexture)rt2, (CubeTexture)rt3, (CubeTexture)rt4, (Texture)rt5);\n        }\n\n        static void CreateRenderTargetCube(MyRenderTargets renderTarget, int size, Format surfaceFormat)\n        {\n            MyMwcLog.WriteLine(\"MyRender.CreateRenderTargetCube - START\");\n\n            DisposeRenderTarget(renderTarget);\n            if (size <= 0)\n            {\n                return;\n            }\n\n            m_renderTargets[(int)renderTarget] = new CubeTexture(m_device, size, 0, Usage.RenderTarget, surfaceFormat, Pool.Default);\n            m_renderTargets[(int)renderTarget].DebugName = renderTarget.ToString();\n            m_renderTargets[(int)renderTarget].Tag = new Vector2(size, size);\n\n            MyMwcLog.WriteLine(\"MyRender.CreateRenderTargetCube - END\");\n        }\n\n        static void CreateRenderTarget(MyRenderTargets renderTarget, int width, int height, Format preferredFormat, Usage usage = Usage.RenderTarget /*| Usage.AutoGenerateMipMap*/)\n        {\n            //  Dispose render target - this happens e.g. after video resolution change\n            DisposeRenderTarget(renderTarget);\n            if (width <= 0 || height <= 0) // may happen when creatting in load content\n                return;\n\n            //  Create new render target, no anti-aliasing\n            m_renderTargets[(int)renderTarget] = new Texture(m_device, width, height, 0, usage, preferredFormat, Pool.Default);\n            m_renderTargets[(int)renderTarget].DebugName = renderTarget.ToString();\n            m_renderTargets[(int)renderTarget].Tag = new Vector2(width, height);\n        }\n\n        static void DisposeRenderTarget(MyRenderTargets renderTarget)\n        {\n            if (m_renderTargets[(int)renderTarget] != null)\n            {\n                m_renderTargets[(int)renderTarget].Dispose();\n                m_renderTargets[(int)renderTarget] = null;\n            }\n        }\n\n        static void DisposeSpotShadowRT()\n        {\n            for (int i = 0; i < MyRenderConstants.SPOT_SHADOW_RENDER_TARGET_COUNT; i++)\n            {\n                if (m_spotShadowRenderTargets[i] != null)\n                {\n                    m_spotShadowRenderTargets[i].Dispose();\n                    m_spotShadowRenderTargets[i] = null;\n                }\n\n                if (m_spotShadowRenderTargetsZBuffers[i] != null)\n                {\n                    m_spotShadowRenderTargetsZBuffers[i].Dispose();\n                    m_spotShadowRenderTargetsZBuffers[i] = null;\n                }\n            }\n        }\n\n        internal static Texture GetRenderTarget(MyRenderTargets renderTarget)\n        {\n            return (Texture)m_renderTargets[(int)renderTarget];\n        }\n\n        internal static CubeTexture GetRenderTargetCube(MyRenderTargets renderTarget)\n        {\n            return (CubeTexture)m_renderTargets[(int)renderTarget];\n        }\n\n        #endregion\n\n        #region Effects\n\n        public static void LoadEffects()\n        {\n            MyMwcLog.WriteLine(\"MyRender.LoadEffects - START\");\n\n            //Post process effects\n            //m_effects[(int)MyEffects.LodTransition2] = new MyEffectLodTransition2();\n            m_effects[(int)MyEffects.ClearGBuffer] = new MyEffectClearGbuffer();\n            m_effects[(int)MyEffects.ShadowMap] = new MyEffectShadowMap();\n            //m_effects[(int)MyEffects.ShadowOcclusion] = new MyEffectShadowOcclusion();\n            m_effects[(int)MyEffects.TransparentGeometry] = new MyEffectTransparentGeometry();\n            //m_effects[(int)MyEffects.HudSectorBorder] = new MyEffectHudSectorBorder();\n            m_effects[(int)MyEffects.Decals] = new MyEffectDecals();\n            m_effects[(int)MyEffects.PointLight] = new MyEffectPointLight();\n            m_effects[(int)MyEffects.DirectionalLight] = new MyEffectDirectionalLight();\n            m_effects[(int)MyEffects.BlendLights] = new MyEffectBlendLights();\n            m_effects[(int)MyEffects.VolumetricSSAO] = new MyEffectVolumetricSSAO2();\n            m_effects[(int)MyEffects.SSAOBlur] = new MyEffectSSAOBlur2();\n            m_effects[(int)MyEffects.GaussianBlur] = new MyEffectGaussianBlur();\n            m_effects[(int)MyEffects.DownsampleForSSAO] = new MyEffectDownsampleDepthForSSAO();\n            m_effects[(int)MyEffects.AntiAlias] = new MyEffectAntiAlias();\n            m_effects[(int)MyEffects.Screenshot] = new MyEffectScreenshot();\n            m_effects[(int)MyEffects.Scale] = new MyEffectScale();\n            m_effects[(int)MyEffects.Threshold] = new MyEffectThreshold();\n            m_effects[(int)MyEffects.HDR] = new MyEffectHDR();\n            m_effects[(int)MyEffects.Luminance] = new MyEffectLuminance();\n            m_effects[(int)MyEffects.Contrast] = new MyEffectContrast();\n            m_effects[(int)MyEffects.VolumetricFog] = new MyEffectVolumetricFog();\n            m_effects[(int)MyEffects.GodRays] = new MyEffectGodRays();\n\n            //Model effects\n            m_effects[(int)MyEffects.Gizmo] = new MyEffectRenderGizmo();\n            m_effects[(int)MyEffects.ModelDNS] = new MyEffectModelsDNS();\n            m_effects[(int)MyEffects.ModelDiffuse] = new MyEffectModelsDiffuse();\n            m_effects[(int)MyEffects.VoxelDebrisMRT] = new MyEffectVoxelsDebris();\n            m_effects[(int)MyEffects.VoxelsMRT] = new MyEffectVoxels();\n            m_effects[(int)MyEffects.VoxelStaticAsteroidMRT] = new MyEffectVoxelsStaticAsteroid();\n            m_effects[(int)MyEffects.OcclusionQueryDrawMRT] = new MyEffectOcclusionQueryDraw();\n            m_effects[(int)MyEffects.VideoSpriteEffects] = new MyEffectSpriteBatchShader();//prejmenovat enum..\n            m_effects[(int)MyEffects.AmbientMapPrecalculation] = new MyEffectAmbientPrecalculation();\n\n            //Background\n            m_effects[(int)MyEffects.DistantImpostors] = new MyEffectDistantImpostors();\n            m_effects[(int)MyEffects.BackgroundCube] = new MyEffectBackgroundCube();\n\n            //HUD\n            m_effects[(int)MyEffects.HudRadar] = new MyEffectHudRadar();\n            m_effects[(int)MyEffects.Hud] = new MyEffectHud();\n            m_effects[(int)MyEffects.CockpitGlass] = new MyEffectCockpitGlass();\n\n            //SolarSystemMap\n            m_effects[(int)MyEffects.SolarMapGrid] = new MyEffectSolarMapGrid();   \n\n\n            Debug.Assert(m_effects.All(effect => effect != null));\n\n            MyMwcLog.WriteLine(\"MyRender.LoadEffects - END\");\n        }\n\n        static void UnloadEffects()\n        {\n            MyMwcLog.WriteLine(\"MyRender.UnloadEffects - START\");\n\n            for (int i = 0; i < Enum.GetValues(typeof(MyEffects)).GetLength(0); i++)\n            {\n                MyEffectBase effect = m_effects[i];\n                if (effect != null)\n                {\n                    effect.Dispose();\n                    m_effects[i] = null;\n                }\n            }\n\n            MyMwcLog.WriteLine(\"MyRender.UnloadEffects - END\");\n        }\n\n        static Texture CreateRandomTexture()\n        {\n            Random r = new Random();\n            int size = 256;\n            float[] rnd = new float[size];\n            for (int i = 0; i < size; i++)\n            {\n                rnd[i] = MyMwcUtils.GetRandomFloat(-1, 1);\n            }\n\n            var result = new Texture(MyMinerGame.GraphicsDeviceManager.GraphicsDevice, size, 1, 0, Usage.None, Format.R32F, Pool.Managed);\n            DataStream ds;\n            result.LockRectangle(0, LockFlags.None, out ds);\n            ds.WriteRange(rnd);\n            result.UnlockRectangle(0);\n\n            return result;\n        }\n\n        public static Texture GetRandomTexture()\n        {\n            return m_randomTexture;\n        }\n\n        internal static MyEffectBase GetEffect(MyEffects effect)\n        {\n            return m_effects[(int)effect];\n        }\n\n        internal static MyPostProcessBase GetPostProcess(MyPostProcessEnum name)\n        {\n            return m_postProcesses.Find(x => x.Name == name);\n        }\n\n        internal static IEnumerable<MyPostProcessBase> GetPostProcesses()\n        {\n            return m_postProcesses;\n        }\n\n        #endregion\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Render/MyRender-Debug.cs",
    "content": "﻿#region Using\n\nusing System.Collections.Generic;\nusing SysUtils.Utils;\n\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Textures;\nusing System.Linq;\n\nusing SharpDX;\nusing SharpDX.Direct3D9;\nusing SharpDX.Toolkit;\nusing SharpDX.Toolkit.Graphics;\n\n#endregion\n\nnamespace MinerWars.AppCode.Game.Render\n{\n    using Vector2 = MinerWarsMath.Vector2;\n    using Vector3 = MinerWarsMath.Vector3;\n    using Vector4 = MinerWarsMath.Vector4;\n    using Rectangle = MinerWarsMath.Rectangle;\n    using Matrix = MinerWarsMath.Matrix;\n    using Color = MinerWarsMath.Color;\n    using BoundingBox = MinerWarsMath.BoundingBox;\n    using BoundingSphere = MinerWarsMath.BoundingSphere;\n    using BoundingFrustum = MinerWarsMath.BoundingFrustum;\n\n    static partial class MyRender\n    {\n        #region Debug render\n\n        public static void EntitiesDebugDraw()\n        {\n            //if (MyMwcFinalBuildConstants.DrawHelperPrimitives)\n            {\n                foreach (MyEntity entity in m_entitiesToDebugDraw)\n                {\n                    entity.DebugDraw();\n                }\n            }\n        }\n\n        internal static void DrawDebugEnvironmentRenderTargets()\n        {\n            BlendState.Opaque.Apply();\n\n            int cubeSize = GetRenderTargetCube(MyRenderTargets.EnvironmentCube).GetLevelDescription(0).Width;\n            cubeSize = 128;\n\n            MyMwcVector2Int delta = new MyMwcVector2Int((int)(MyCamera.Viewport.Height * 0.07f), (int)(MyCamera.Viewport.Height * 0.015f));\n            MyMwcVector2Int size = new MyMwcVector2Int(cubeSize, cubeSize);\n\n            int heightOffset = size.Y + delta.Y;\n\n            for (int i = 0; i < 6; i++)\n            {\n                //var back = MyTextureManager.GetTexture<MyTextureCube>(\"Textures\\\\BackgroundCube\\\\Final\\\\TestCube\", null, MinerWars.AppCode.Game.Managers.LoadingMode.Immediate);\n                MyGuiManager.DrawSpriteFast(GetRenderTargetCube(MyRenderTargets.EnvironmentCube), (CubeMapFace)i, delta.X + size.X * i, delta.Y, size.X, size.Y, Color.White);\n                MyGuiManager.DrawSpriteFast(GetRenderTargetCube(MyRenderTargets.EnvironmentCubeAux), (CubeMapFace)i, delta.X + size.X * i, delta.Y + heightOffset, size.X, size.Y, Color.White);\n                MyGuiManager.DrawSpriteFast(GetRenderTargetCube(MyRenderTargets.AmbientCube), (CubeMapFace)i, delta.X + size.X * i, delta.Y + heightOffset * 2, size.X, size.Y, Color.White);\n                MyGuiManager.DrawSpriteFast(GetRenderTargetCube(MyRenderTargets.AmbientCubeAux), (CubeMapFace)i, delta.X + size.X * i, delta.Y + heightOffset * 3, size.X, size.Y, Color.White);\n            }\n        }\n\n        internal static void DrawDebugBlendedRenderTargets()\n        {\n            BlendState.Opaque.Apply();\n\n            //  All RT should be of same size, so for size we can use any of them we just pick up depthRT\n            float renderTargetAspectRatio = (float)MyCamera.Viewport.Width / (float)MyCamera.Viewport.Height;\n\n            float normalizedSizeY = 0.40f;\n            //float normalizedSizeY = MyCamera.Viewport.Height / 1920f;\n            float normalizedSizeX = normalizedSizeY * renderTargetAspectRatio;\n\n            MyMwcVector2Int delta = new MyMwcVector2Int((int)(MyCamera.Viewport.Height * 0.015f), (int)(MyCamera.Viewport.Height * 0.015f));\n            MyMwcVector2Int size = new MyMwcVector2Int((int)(MyCamera.Viewport.Height * normalizedSizeX), (int)(MyCamera.Viewport.Height * normalizedSizeY));\n\n            MyGuiManager.DrawSpriteFast(MyRender.GetRenderTarget(MyRenderTargets.Diffuse), delta.X, delta.Y, size.X, size.Y, Color.White);\n            MyGuiManager.DrawSpriteFast(MyRender.GetRenderTarget(MyRenderTargets.Normals), delta.X + size.X + delta.X, delta.Y, size.X, size.Y, Color.White);\n        }\n\n        internal static void DrawDebugHDRRenderTargets()\n        {\n            BlendState.Opaque.Apply();\n\n            //  All RT should be of same size, so for size we can use any of them we just pick up depthRT\n            float renderTargetAspectRatio = (float)MyCamera.Viewport.Width / (float)MyCamera.Viewport.Height;\n\n            float normalizedSizeY = 0.40f;\n            float normalizedSizeX = normalizedSizeY * renderTargetAspectRatio;\n\n            MyMwcVector2Int delta = new MyMwcVector2Int((int)(MyCamera.Viewport.Height * 0.015f), (int)(MyCamera.Viewport.Height * 0.015f));\n            MyMwcVector2Int size = new MyMwcVector2Int((int)(MyCamera.Viewport.Height * normalizedSizeX), (int)(MyCamera.Viewport.Height * normalizedSizeY));\n\n            //MyGuiManager.DrawSpriteFast(MyRender.GetRenderTarget(MyRenderTargets.Diffuse), delta.X, delta.Y, size.X, size.Y, Color.White);\n            //MyGuiManager.DrawSpriteFast(MyRender.GetRenderTarget(MyRenderTargets.Normals), delta.X + size.X + delta.X, delta.Y, size.X, size.Y, Color.White);\n        }\n\n        internal static void DrawDebug()\n        {\n            m_renderProfiler.StartProfilingBlock(\"Draw entity debug\");\n\n            RasterizerState.CullNone.Apply();\n            DepthStencilState.Default.Apply();\n            //DepthStencilState.None.Apply();\n            BlendState.Opaque.Apply();\n\n            EntitiesDebugDraw();\n\n            GetShadowRenderer().DebugDraw();\n\n            if (ShowEnhancedRenderStatsEnabled)\n                ShowEnhancedRenderStats();\n            //if (ShowResourcesStatsEnabled)\n              //  MyMinerGame.GraphicsDeviceManager.DebugDrawStatistics();\n            //if (ShowTexturesStatsEnabled)\n              //  MyTextureManager.DebugDrawStatistics();\n\n            m_renderProfiler.EndProfilingBlock();\n        }\n\n        class MyTypeStats\n        {\n            public int Count;\n            public int Tris;\n            public object UserData;\n            public string UserString;\n        }\n\n        static Dictionary<string, MyTypeStats> m_prefabStats = new Dictionary<string, MyTypeStats>();\n        static Dictionary<string, MyTypeStats> m_typesStats = new Dictionary<string, MyTypeStats>();\n\n        public static void ClearEnhancedStats()\n        {\n            m_typesStats.Clear();\n            m_prefabStats.Clear();\n        }\n\n        static private void ShowEnhancedRenderStats()\n        {\n            ClearEnhancedStats();\n\n            //m_renderObjectListForDraw.Clear();\n            //m_shadowPrunningStructure.OverlapAllFrustum(ref m_cameraFrustum, m_renderObjectListForDraw);\n            //m_cameraFrustumBox = new BoundingBox(new Vector3(float.NegativeInfinity), new Vector3(float.PositiveInfinity));\n            //m_shadowPrunningStructure.OverlapAllBoundingBox(ref m_cameraFrustumBox, m_renderObjectListForDraw);\n\n            foreach (MyRenderObject ro in m_renderObjectListForDraw)\n            {\n                string ts = ro.Entity.GetType().Name.ToString();\n                if (!m_typesStats.ContainsKey(ts))\n                    m_typesStats.Add(ts, new MyTypeStats());\n                m_typesStats[ts].Count++;\n            }\n            \n\n            float topOffset = 100;\n            Vector2 offset = new Vector2(100, topOffset);\n            MyDebugDraw.DrawText(offset, new System.Text.StringBuilder(\"Detailed render statistics\"), Color.Yellow, 2);\n\n            float scale = 0.7f;\n            offset.Y += 50;\n            MyDebugDraw.DrawText(offset, new System.Text.StringBuilder(\"Prepared entities for draw:\"), Color.Yellow, scale);\n            offset.Y += 30;\n            foreach (var pair in SortByCount(m_typesStats))\n            {\n                MyDebugDraw.DrawText(offset, new System.Text.StringBuilder(pair.Key + \": \" + pair.Value.Count.ToString() + \"x\"), Color.Yellow, scale);\n                offset.Y += 20;\n            }\n\n            offset = new Vector2(400, topOffset + 50);\n            scale = 0.6f;\n            MyDebugDraw.DrawText(offset, new System.Text.StringBuilder(\"Prepared prefabs for draw:\"), Color.Yellow, 0.7f);\n            offset.Y += 30;\n            foreach (var pair in SortByCount(m_prefabStats))\n            {\n                MyDebugDraw.DrawText(offset, new System.Text.StringBuilder(pair.Key + \": \" + pair.Value.Count.ToString() + \"x\"), Color.Yellow, scale);\n                offset.Y += 14;\n            }\n\n\n            ClearEnhancedStats();\n            foreach (MyRenderObject ro in m_debugRenderObjectListForDrawLOD0)\n            {\n                string pt = ro.Entity.GetType().Name.ToString();\n                if (!m_prefabStats.ContainsKey(pt))\n                    m_prefabStats.Add(pt, new MyTypeStats());\n\n                m_prefabStats[pt].Count++;\n                m_prefabStats[pt].Tris += ro.Entity.ModelLod0.GetTrianglesCount();\n            }\n\n            offset = new Vector2(800, topOffset + 50);\n            scale = 0.6f;\n            MyDebugDraw.DrawText(offset, new System.Text.StringBuilder(\"Prepared entities for LOD0:\"), Color.Yellow, 0.7f);\n            offset.Y += 30;\n            foreach (var pair in SortByCount(m_prefabStats))\n            {\n                MyDebugDraw.DrawText(offset, new System.Text.StringBuilder(pair.Key + \": \" + pair.Value.Count.ToString() + \"x [\" + pair.Value.Tris.ToString() + \" tris]\"), Color.Yellow, scale);\n                offset.Y += 14;\n            }\n\n            ClearEnhancedStats();\n            foreach (MyRenderObject ro in m_debugRenderObjectListForDrawLOD1)\n            {\n                string pt = ro.Entity.GetType().Name.ToString();\n                if (!m_prefabStats.ContainsKey(pt))\n                    m_prefabStats.Add(pt, new MyTypeStats());\n\n                m_prefabStats[pt].Count++;\n                if (ro.Entity.ModelLod1 != null)\n                {\n                    m_prefabStats[pt].Tris += ro.Entity.ModelLod1.GetTrianglesCount();\n                }\n            }\n\n            offset = new Vector2(1200, topOffset + 50);\n            scale = 0.6f;\n            MyDebugDraw.DrawText(offset, new System.Text.StringBuilder(\"Prepared entities for LOD1:\"), Color.Yellow, 0.7f);\n            offset.Y += 30;\n            foreach (var pair in SortByCount(m_prefabStats))\n            {\n                MyDebugDraw.DrawText(offset, new System.Text.StringBuilder(pair.Key + \": \" + pair.Value.Count.ToString() + \"x [\" + pair.Value.Tris.ToString() + \" tris]\"), Color.Yellow, scale);\n                offset.Y += 14;\n            }\n\n        }\n\n        static public void DumpAllEntities()\n        {\n            m_typesStats.Clear();\n\n            MyMwcLog.WriteLine(\"Dump of all loaded prefabs\");\n            MyMwcLog.WriteLine(\"\");\n\n            foreach (MyEntity entity in MyEntities.GetEntities())\n            {\n                MyPrefabContainer container = entity as MyPrefabContainer;\n\n                if (container != null)\n                {\n                    foreach (var prefab in container.GetPrefabs())\n                    {\n                        string ts = prefab.ModelLod0.AssetName.ToString();\n                        if (!m_typesStats.ContainsKey(ts))\n                            m_typesStats.Add(ts, new MyTypeStats());\n                        m_typesStats[ts].Count++;\n                        m_typesStats[ts].Tris += prefab.ModelLod0.Triangles.Length;\n                        m_typesStats[ts].UserData = prefab;\n                        m_typesStats[ts].UserString += prefab.EntityId.Value.NumericValue + \" \";\n                    }\n                }\n            }\n\n\n            foreach (var po in SortByCount(m_typesStats))\n            {\n                var prefab = ((MinerWars.AppCode.Game.Prefabs.MyPrefabBase)po.Value.UserData);\n                int verticesSize = prefab.ModelLod0.GetVBSize + prefab.ModelLod0.GetIBSize;\n\n                MyMwcLog.WriteLine(po.Key + \",\" + po.Value.Count + \",\" + po.Value.Tris + \",\" + verticesSize + \",\" + prefab.ModelLod0.GetBVHSize() + \",\" + po.Value.UserString);\n            }\n        }\n\n        static public List<KeyValuePair<string, int>> SortByValue(Dictionary<string, int> stats)\n        {\n            List<KeyValuePair<string, int>> statsList = stats.ToList();\n            statsList.Sort(\n                delegate(KeyValuePair<string, int> firstPair,\n                KeyValuePair<string, int> nextPair)\n                {\n                    return nextPair.Value.CompareTo(firstPair.Value);\n                }\n            );\n\n            return statsList;\n        }\n\n        static List<KeyValuePair<string, MyTypeStats>> SortByCount(Dictionary<string, MyTypeStats> stats)\n        {\n            List<KeyValuePair<string, MyTypeStats>> statsList = stats.ToList();\n            statsList.Sort(\n                delegate(KeyValuePair<string, MyTypeStats> firstPair,\n                KeyValuePair<string, MyTypeStats> nextPair)\n                {\n                    return nextPair.Value.Count.CompareTo(firstPair.Value.Count);\n                }\n            );\n\n            return statsList;\n        }\n\n\n        #endregion\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Render/MyRender-Draw.cs",
    "content": "﻿#region Using\n\nusing System.Collections.Generic;\n\nusing SysUtils;\nusing SysUtils.Utils;\n\n\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Effects;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Managers;\nusing MinerWars.AppCode.Game.Models;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Physics;\nusing KeenSoftwareHouse.Library.Extensions;\nusing System.Diagnostics;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.Voxels;\nusing MinerWars.AppCode.Game.Utils.VertexFormats;\nusing System.Linq;\n\nusing SharpDX;\nusing SharpDX.Direct3D9;\nusing SharpDX.Toolkit;\nusing SharpDX.Toolkit.Graphics;\n\n#endregion\n\nnamespace MinerWars.AppCode.Game.Render\n{\n    using Vector2 = MinerWarsMath.Vector2;\n    using Vector3 = MinerWarsMath.Vector3;\n    using Vector4 = MinerWarsMath.Vector4;\n    using Rectangle = MinerWarsMath.Rectangle;\n    using Matrix = MinerWarsMath.Matrix;\n    using Color = MinerWarsMath.Color;\n    using BoundingBox = MinerWarsMath.BoundingBox;\n    using BoundingSphere = MinerWarsMath.BoundingSphere;\n    using BoundingFrustum = MinerWarsMath.BoundingFrustum;\n    using MinerWars.CommonLIB.AppCode.Import;\n\n    static partial class MyRender\n    {\n        #region Draw\n\n        internal static void DrawScene()\n        {\n            m_renderProfiler.StartProfilingBlock(\"Draw scene Part1\");\n\n            m_transparentRenderElements.Clear();\n\n            // Renders into aux0\n            DrawBackground(m_aux0Binding);\n\n                /*\n            MyMinerGameDX.SetRenderTarget(null);\n            BlendState.Opaque.Apply();\n            Blit(GetRenderTarget(MyRenderTargets.Auxiliary0), false, MyEffectScreenshot.ScreenshotTechniqueEnum.Color);\n                  */\n\n            //return;\n\n            m_sortedElements.Clear();\n\n            // Prepare entities for draw\n            PrepareRenderObjectsForDraw();\n\n            //  Draw LOD0 scene, objects\n            DrawScene_OneLodLevel(MyLodTypeEnum.LOD0);\n\n            //  Draw LOD1 scene, objects\n            DrawScene_OneLodLevel(MyLodTypeEnum.LOD1);\n\n            m_renderProfiler.StartProfilingBlock(\"AllGeometryRendered\");\n            DrawRenderModules(MyRenderStage.AllGeometryRendered);\n            m_renderProfiler.EndProfilingBlock();\n\n            // Draw transparent models (non LODed, to be fully lit, not sorted)\n            DrawScene_Transparent();\n\n            // Issue occlusion queries\n            IssueOcclusionQueries();\n              \n            // Render post processes, there's no source and target in this stage\n            RenderPostProcesses(PostProcessStage.LODBlend, null, null, GetRenderTarget(MyRenderTargets.Auxiliary1), false);\n\n            // Take screenshots if required\n            //TakeLODScreenshots();\n\n            m_renderProfiler.EndProfilingBlock();   //Draw scene Part1\n\n            m_renderProfiler.StartProfilingBlock(\"Draw scene Part2\");\n\n            if (EnableLights && EnableLightsRuntime && MyRender.CurrentRenderSetup.EnableLights.Value)\n            {\n                //Render shadows to Lod0Diffuse\n                if (EnableSun && EnableShadows && CurrentRenderSetup.EnableSun.Value)\n                {\n                    m_renderProfiler.StartProfilingBlock(\"Render shadows\");\n\n                    GetShadowRenderer().Render();\n\n                    m_renderProfiler.EndProfilingBlock();\n                }\n                else\n                {\n                    // Set our targets\n                    MyMinerGame.SetRenderTarget(MyRender.GetRenderTarget(MyRenderTargets.ShadowMap), MyRender.GetRenderTarget(MyRenderTargets.ShadowMapZBuffer));\n                    m_device.Clear(ClearFlags.ZBuffer, new ColorBGRA(1.0f), 1.0f, 0);\n\n                    MyMinerGame.SetRenderTarget(MyRender.GetRenderTarget(MyRenderTargets.SecondaryShadowMap), MyRender.GetRenderTarget(MyRenderTargets.SecondaryShadowMapZBuffer));\n                    m_device.Clear(ClearFlags.ZBuffer, new ColorBGRA(1.0f), 1.0f, 0);\n                }\n\n                //Render all lights to Lod0Depth (LDR or HDR-part1) and Lod0Diffuse (HDR-part2)\n                RenderLights();\n            }\n            else\n            { \n                MyMinerGame.SetRenderTarget(GetRenderTarget(MyRenderTargets.Auxiliary1), null);\n                BlendState.Opaque.Apply();\n                RasterizerState.CullNone.Apply();\n                DepthStencilState.None.Apply();\n                Blit(GetRenderTarget(MyRenderTargets.Diffuse), false, MyEffectScreenshot.ScreenshotTechniqueEnum.Color);\n            }\n\n                       /*    \n          MyMinerGameDX.SetRenderTarget(null, null, SetDepthTargetEnum.RestoreDefault);\n          BlendState.Opaque.Apply();\n          RasterizerState.CullNone.Apply();\n          DepthStencilState.None.Apply();\n          Blit(GetRenderTarget(MyRenderTargets.Auxiliary0), false, MyEffectScreenshot.ScreenshotTechniqueEnum.Color);\n          Blit(GetRenderTarget(MyRenderTargets.Diffuse), false, MyEffectScreenshot.ScreenshotTechniqueEnum.Color);\n          return;\n                         */   \n\n            RenderPostProcesses(PostProcessStage.PostLighting, null, null, GetRenderTarget(MyRenderTargets.EnvironmentMap), false);\n\n            m_renderProfiler.StartProfilingBlock(\"AlphaBlendPreHDR\");\n            DrawRenderModules(MyRenderStage.AlphaBlendPreHDR);\n            m_renderProfiler.EndProfilingBlock();\n\n            TakeScreenshot(\"Blended_lights\", GetRenderTarget(MyRenderTargets.Auxiliary1), MyEffectScreenshot.ScreenshotTechniqueEnum.Color);\n\n            m_renderProfiler.EndProfilingBlock();   //Draw scene part 2\n\n            m_renderProfiler.StartProfilingBlock(\"Draw scene Part3 \");\n\n            //MyMinerGameDX.SetRenderTarget(null, null);\n\n            // Render post processes\n            RenderPostProcesses(PostProcessStage.HDR, GetRenderTarget(MyRenderTargets.Auxiliary1), m_aux0Binding, GetRenderTarget(MyRenderTargets.Auxiliary2), true, true);\n           /* \n            MyMinerGameDX.SetRenderTarget(GetRenderTarget(MyRenderTargets.Auxiliary0), null, SetDepthTargetEnum.RestoreDefault);\n            SetCorrectViewportSize();\n            BlendState.Opaque.Apply();\n            RasterizerState.CullNone.Apply();\n            DepthStencilState.None.Apply();\n            Blit(GetRenderTarget(MyRenderTargets.Auxiliary1), false, MyEffectScreenshot.ScreenshotTechniqueEnum.Default);\n                   */\n            TakeScreenshot(\"HDR_down4_blurred\", MyRender.GetRenderTarget(MyRenderTargets.HDR4Threshold), MyEffectScreenshot.ScreenshotTechniqueEnum.HDR);\n\n            m_renderProfiler.EndProfilingBlock();   //Draw scene Part2\n\n            m_renderProfiler.StartProfilingBlock(\"Draw scene Part4\");\n            //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n            //  Only one render target - where we draw final LOD scene\n            MyMinerGame.SetRenderTargets(m_aux0Binding, null);\n            SetCorrectViewportSize();\n\n\n            if (ShowBlendedScreens && CurrentRenderSetup.EnableDebugHelpers.Value)\n            {\n                DrawDebugBlendedRenderTargets();\n            }\n\n            m_renderProfiler.StartProfilingBlock(\"Alphablend\");\n            DrawRenderModules(MyRenderStage.AlphaBlend);\n            m_renderProfiler.EndProfilingBlock();\n\n\n\n            // Render post processes\n            RenderPostProcesses(PostProcessStage.AlphaBlended, GetRenderTarget(MyRenderTargets.Auxiliary0), CurrentRenderSetup.RenderTargets, GetRenderTarget(MyRenderTargets.Auxiliary1), true, true);\n\n            /*  \n            MyMinerGame.SetRenderTargets(CurrentRenderSetup.RenderTargets, CurrentRenderSetup.DepthTarget);\n            BlendState.Opaque.Apply();\n            RasterizerState.CullNone.Apply();\n            DepthStencilState.None.Apply();\n            Blit(GetRenderTarget(MyRenderTargets.Auxiliary0), false, MyEffectScreenshot.ScreenshotTechniqueEnum.Default);\n              */\n\n            MyMinerGame.SetRenderTargets(CurrentRenderSetup.RenderTargets, CurrentRenderSetup.DepthTarget);\n            SetCorrectViewportSize();\n\n            if (m_currentSetup.DepthToAlpha)\n            {\n                Blit(GetRenderTarget(MyRenderTargets.Depth), true, MyEffectScreenshot.ScreenshotTechniqueEnum.DepthToAlpha);\n            }\n              /*\n            if (ShowLODScreens && CurrentRenderSetup.EnableDebugHelpers.Value)\n            {\n                DrawDebugLODRenderTargets();\n            }   */\n\n\n            if (ShowEnvironmentScreens && CurrentRenderSetup.EnableDebugHelpers.Value)\n            {\n                DrawDebugEnvironmentRenderTargets();\n            }\n\n            m_renderProfiler.EndProfilingBlock();   //Draw scene Part3\n        }\n\n        internal static void DrawSceneForward()\n        {\n            bool HWOcclusionQueries = EnableHWOcclusionQueries;\n            bool HWOcclusionQueriesForShadows = EnableHWOcclusionQueriesForShadows;\n\n            //EnableHWOcclusionQueries = false;\n            EnableHWOcclusionQueriesForShadows = false;\n\n\n            m_transparentRenderElements.Clear();\n\n            m_device.Clear(ClearFlags.Target | ClearFlags.ZBuffer | ClearFlags.Stencil, new ColorBGRA(0), 1, 0);\n\n            // Forward render into screen\n            DrawBackground(CurrentRenderSetup.RenderTargets);\n\n            m_sortedElements.Clear();\n\n            // Prepare entities for draw\n            PrepareRenderObjectsForDraw();\n\n            UpdateForwardLights();\n\n            DrawScene_OneLodLevel_Forward(MyLodTypeEnum.LOD0);\n\n            DrawScene_OneLodLevel_Forward(MyLodTypeEnum.LOD1);\n\n            DrawScene_Transparent();\n\n            if (MyGuiManager.GetScreenshot() == null)\n            {\n                IssueOcclusionQueries();\n            }\n\n            m_renderProfiler.StartProfilingBlock(\"AlphaBlendPreHDR\");\n            DrawRenderModules(MyRenderStage.AlphaBlendPreHDR);\n            m_renderProfiler.EndProfilingBlock();\n\n            m_renderProfiler.StartProfilingBlock(\"AlphaBlend\");\n            DrawRenderModules(MyRenderStage.AlphaBlend);\n            m_renderProfiler.EndProfilingBlock();\n\n            EnableHWOcclusionQueries = HWOcclusionQueries;\n            EnableHWOcclusionQueriesForShadows = HWOcclusionQueriesForShadows;\n        }\n\n\n        #region Screenshot\n\n\n        internal static void TakeLODScreenshots()\n        {\n            if (MyGuiManager.GetScreenshot() != null)\n            {\n                MyRender.TakeScreenshot(\"Blended_Diffuse\", MyRender.GetRenderTarget(MyRenderTargets.Diffuse), MyEffectScreenshot.ScreenshotTechniqueEnum.Color);\n                MyRender.TakeScreenshot(\"Blended_SpecularIntensity\", MyRender.GetRenderTarget(MyRenderTargets.Diffuse), MyEffectScreenshot.ScreenshotTechniqueEnum.Alpha);\n\n                MyRender.TakeScreenshot(\"Blended_Normals\", MyRender.GetRenderTarget(MyRenderTargets.Normals), MyEffectScreenshot.ScreenshotTechniqueEnum.Color);\n                MyRender.TakeScreenshot(\"Blended_SpecularPower\", MyRender.GetRenderTarget(MyRenderTargets.Normals), MyEffectScreenshot.ScreenshotTechniqueEnum.Alpha);\n\n                MyRender.TakeScreenshot(\"Blended_Depth\", MyRender.GetRenderTarget(MyRenderTargets.Depth), MyEffectScreenshot.ScreenshotTechniqueEnum.Color);\n                MyRender.TakeScreenshot(\"Blended_Emissive\", MyRender.GetRenderTarget(MyRenderTargets.Depth), MyEffectScreenshot.ScreenshotTechniqueEnum.Alpha);\n            }\n        }\n\n\n        public static void TakeScreenshot(Texture rt, string name = \"last\")\n        {\n            MyMinerGame.SetRenderTarget(null, null);\n       //     MyScreenshot.SaveScreenshot(rt, name + \".png\");\n        }\n\n        public static void TakeScreenshot(MyRenderTargets rt)\n        {\n            TakeScreenshot(GetRenderTarget(rt), rt.ToString());\n        }\n       \n        internal static void TakeScreenshot(string name, BaseTexture target, MyEffectScreenshot.ScreenshotTechniqueEnum technique)\n        {\n            if (ScreenshotOnlyFinal && name != \"FinalScreen\")\n                return;\n\n            //  Screenshot object survives only one DRAW after created. We delete it immediatelly. So if 'm_screenshot'\n            //  is not null we know we have to take screenshot and set it to null.\n            if (MyGuiManager.GetScreenshot() != null)\n            {\n                if (target is Texture)\n                {\n                    Texture renderTarget = target as Texture;\n                    Texture rt = new Texture(m_device, renderTarget.GetLevelDescription(0).Width, renderTarget.GetLevelDescription(0).Height, 0, Usage.RenderTarget, Format.A8R8G8B8, Pool.Default);\n                    MyMinerGame.SetRenderTarget(rt, null);\n                    BlendState.NonPremultiplied.Apply();\n\n                    MyEffectScreenshot ssEffect = GetEffect(MyEffects.Screenshot) as MyEffectScreenshot;\n                    ssEffect.SetSourceTexture(renderTarget);\n                    ssEffect.SetTechnique(technique);\n                    MyGuiManager.GetFullscreenQuad().Draw(ssEffect);\n\n                    MyMinerGame.SetRenderTarget(null, null);\n                    MyGuiManager.GetScreenshot().SaveTexture2D(rt, name);\n                    rt.Dispose();\n                }\n                else if (target is CubeTexture)\n                {\n                    string filename = MyGuiManager.GetScreenshot().GetFilename(name + \".dds\");\n                    CubeTexture.ToFile(target, filename, ImageFileFormat.Dds);\n                    //MyDDSFile.DDSToFile(filename, true, target, false);\n                }\n            }  \n        }\n\n        #endregion\n\n        #region Draw\n\n\n        public static MyLodTypeEnum GetCurrentLodDrawPass()\n        {\n            return m_currentLodDrawPass;\n        }\n\n        private static void DrawModelsLod(MyLodTypeEnum lodTypeEnum, bool drawUsingStencil, bool collectTransparentElements)\n        {\n            m_renderElements.Clear();\n\n            // Call draw for all entities, they push wanted render models to the list\n            m_renderObjectsToDraw.Clear();\n\n            m_renderProfiler.StartProfilingBlock(\"LODDrawStart\");\n            DrawRenderModules(MyRenderStage.LODDrawStart);\n            m_renderProfiler.EndProfilingBlock();\n\n            m_renderProfiler.StartProfilingBlock(\"entity.Draw\");\n\n\n            if (lodTypeEnum == MyLodTypeEnum.LOD_NEAR)\n            {\n                foreach (MyRenderObject renderObject in m_nearObjects)\n                {\n                    MyEntity entity = renderObject.Entity;\n                    entity.Draw(renderObject);\n                }\n            }\n            else\n            {        \n                //  Iterate over all objects that intersect the frustum (objects and voxel maps)\n                foreach (MyRenderObject renderObject in m_renderObjectListForDraw)\n                {\n                    MyEntity entity = renderObject.Entity;\n                    entity.Draw(renderObject);\n                }      \n            }\n\n\n            m_renderProfiler.EndProfilingBlock();\n\n            switch (lodTypeEnum)\n            {\n                case MyLodTypeEnum.LOD_NEAR:\n                    m_renderProfiler.StartProfilingBlock(\"CollectElements LOD_NEAR\");\n                    break;\n                case MyLodTypeEnum.LOD0:\n                    m_renderProfiler.StartProfilingBlock(\"CollectElements LOD0\");\n                    break;\n                case MyLodTypeEnum.LOD1:\n                    m_renderProfiler.StartProfilingBlock(\"CollectElements LOD1\");\n                    break;\n            }\n\n            CollectElements(lodTypeEnum, collectTransparentElements);\n\n            m_renderProfiler.EndProfilingBlock();\n\n            switch (lodTypeEnum)\n            {\n                case MyLodTypeEnum.LOD_NEAR:\n                    m_renderProfiler.StartProfilingBlock(\"m_renderElements.Sort LOD_NEAR\");\n                    break;\n                case MyLodTypeEnum.LOD0:\n                    m_renderProfiler.StartProfilingBlock(\"m_renderElements.Sort LOD0\");\n                    break;\n                case MyLodTypeEnum.LOD1:\n                    m_renderProfiler.StartProfilingBlock(\"m_renderElements.Sort LOD1\");\n                    break;\n            }\n\n            //Sort render elements by their model and drawtechnique. We spare a lot of device state changes      \n            //MyPerformanceCounter.PerCameraDraw.RestartTimer(lodTypeEnum == MyLodTypeEnum.LOD0 ? \"SortLOD0\" : lodTypeEnum == MyLodTypeEnum.LOD1 ? \"SortLOD1\" : \"SortLODNEAR\");\n            if (AlternativeSort)\n            {\n                m_sortedElements.Add(lodTypeEnum, m_renderElements);\n            }\n            else\n            {\n                m_renderElements.Sort(m_renderElementsComparer);\n            }\n            //MyPerformanceCounter.PerCameraDraw.SaveTimer(lodTypeEnum == MyLodTypeEnum.LOD0 ? \"SortLOD0\" : lodTypeEnum == MyLodTypeEnum.LOD1 ? \"SortLOD1\" : \"SortLODNEAR\");\n            m_renderProfiler.EndProfilingBlock();\n\n            //Draw sorted render elements\n            switch (lodTypeEnum)\n            {\n                case MyLodTypeEnum.LOD_NEAR:\n                    m_renderProfiler.StartProfilingBlock(\"DrawRenderElements LOD_NEAR\");\n                    break;\n                case MyLodTypeEnum.LOD0:\n                    m_renderProfiler.StartProfilingBlock(\"DrawRenderElements LOD0\");\n                    break;\n                case MyLodTypeEnum.LOD1:\n                    m_renderProfiler.StartProfilingBlock(\"DrawRenderElements LOD1\");\n                    break;\n            }\n            int ibChangesStats;\n\n            //MyPerformanceCounter.PerCameraDraw.RestartTimer(lodTypeEnum == MyLodTypeEnum.LOD0 ? \"DrawLOD0\" : lodTypeEnum == MyLodTypeEnum.LOD1 ? \"DrawLOD1\" : \"DrawLODNEAR\");\n            if (AlternativeSort)\n            {\n                DrawRenderElementsAlternative(lodTypeEnum, drawUsingStencil, out ibChangesStats);\n            }\n            else\n            {\n                DrawRenderElements(m_renderElements, drawUsingStencil, out ibChangesStats);\n            }\n            //MyPerformanceCounter.PerCameraDraw.SaveTimer(lodTypeEnum == MyLodTypeEnum.LOD0 ? \"DrawLOD0\" : lodTypeEnum == MyLodTypeEnum.LOD1 ? \"DrawLOD1\" : \"DrawLODNEAR\");\n\n            MyPerformanceCounter.PerCameraDraw.RenderElementsIBChanges += ibChangesStats;\n\n            m_renderProfiler.EndProfilingBlock();\n\n            m_renderProfiler.StartProfilingBlock(\"DrawRenderElements Near\");\n\n            if (lodTypeEnum == MyLodTypeEnum.LOD_NEAR)  //We cannot render near transparent elements later\n            {\n                if (!drawUsingStencil)\n                {   //Only near objects while LOD0 rendering\n                    int ibStateChanges;\n                    DrawRenderElements(m_transparentRenderElements, drawUsingStencil, out ibStateChanges);\n                    m_transparentRenderElements.Clear();\n                }\n            }\n\n            MyPerformanceCounter.PerCameraDraw.RenderElementsInFrustum += m_renderElements.Count;\n\n            m_renderProfiler.EndProfilingBlock();\n        }\n\n        public static void AddRenderObjectToDraw(MyRenderObject renderObject)\n        {\n            m_renderObjectsToDraw.Add(renderObject);\n            m_entitiesToDebugDraw.Add(renderObject.Entity);\n        }\n\n        private static void CollectElements(MyLodTypeEnum lodTypeEnum, bool collectTransparentElements)\n        {\n            if (m_renderObjectsToDraw.Count <= 0)\n                return;\n\n            float farLodDistance = MyRenderConstants.RenderQualityProfile.ForwardRender ? (MyRender.CurrentRenderSetup.LodTransitionFar.Value + MyRender.CurrentRenderSetup.LodTransitionNear.Value) / 2 : MyRender.CurrentRenderSetup.LodTransitionFar.Value;\n            float nearLodDistance = MyRenderConstants.RenderQualityProfile.ForwardRender ? farLodDistance : MyRender.CurrentRenderSetup.LodTransitionNear.Value;\n            float backEndLodDistance = MyRenderConstants.RenderQualityProfile.ForwardRender ? farLodDistance : MyRender.CurrentRenderSetup.LodTransitionBackgroundEnd.Value;\n\n            // Gather all render elements from entities, sort them later\n            for (int i = 0; i < m_renderObjectsToDraw.Count; i++)\n            {\n                MyRenderObject renderObject = m_renderObjectsToDraw[i];\n                MyEntity entity = renderObject.Entity;\n\n                MyVoxelMap voxelMap = entity as MyVoxelMap;\n                if (voxelMap != null)\n                {\n                    voxelMap.GetRenderElements(m_renderElements, renderObject.RenderCellCoord.Value, lodTypeEnum);\n                    continue;\n                }\n\n                MyModel currentModel = null;\n\n                if (lodTypeEnum == MyLodTypeEnum.LOD_NEAR)\n                {\n                    if (entity.NearFlag)\n                    {\n                        currentModel = entity.ModelLod0;\n                    }\n                    else\n                    {\n                        continue;\n                    }\n                }\n                else if (lodTypeEnum == MyLodTypeEnum.LOD0)\n                {\n                    //m_renderProfiler.StartProfilingBlock(\"GetSmallestDistanceBetweenCameraAndBoundingSphere\");\n\n                    float distanceForLod0 = MyRenderConstants.RenderQualityProfile.ForwardRender ? Vector3.Distance(MyCamera.Position, entity.GetPosition()) / 2 : entity.GetSmallestDistanceBetweenCameraAndBoundingSphere();\n                    distanceForLod0 = MyCamera.GetDistanceWithFOV(distanceForLod0);\n\n                    //m_renderProfiler.EndProfilingBlock();\n\n                    if (distanceForLod0 <= farLodDistance)\n                    {\n                        if (entity.Lod1ForcedDistance.HasValue && entity.Lod1ForcedDistance.Value <= distanceForLod0)\n                        {\n                            currentModel = entity.ModelLod1;\n                        }\n\n                        if (currentModel == null)\n                            currentModel = entity.ModelLod0;\n                    }\n                    else\n                    {\n                        continue;\n                    }\n                }\n                else if (lodTypeEnum == MyLodTypeEnum.LOD1)\n                {\n                    //m_renderProfiler.StartProfilingBlock(\"GetLargestDistanceBetweenCameraAndBoundingSphere\");\n\n                    float distanceForLod1 = MyRenderConstants.RenderQualityProfile.ForwardRender ? Vector3.Distance(MyCamera.Position, entity.GetPosition()) / 2 : entity.GetLargestDistanceBetweenCameraAndBoundingSphere();\n                    float distanceForBackground = MyRenderConstants.RenderQualityProfile.ForwardRender ? Vector3.Distance(MyCamera.Position, entity.GetPosition()) / 2 : entity.GetDistanceBetweenCameraAndBoundingSphere();\n\n                    //m_renderProfiler.EndProfilingBlock();\n\n                    if (MyRenderConstants.RenderQualityProfile.ForwardRender)\n                    {\n                        if (distanceForBackground > MyCamera.GetLodTransitionDistanceBackgroundEnd() / 2)\n                        {\n                            continue;\n                        }\n                        //Vector3.Distance(MyCamera.Position, entity.GetPosition())\n                    }\n\n                    if ((distanceForLod1 >= nearLodDistance\n                        &&\n                        (distanceForBackground <= MyRender.CurrentRenderSetup.LodTransitionBackgroundEnd.Value)\n                        )\n                        && (entity.ModelLod1 != null))\n                    {\n                        currentModel = entity.ModelLod1;\n\n                        if ((distanceForLod1 > (farLodDistance + backEndLodDistance) * 0.5f) && (entity.ModelLod2 != null))// && entity.WorldVolume.Radius < 500)\n                        //if (entity.ModelLod2 != null)\n                        {\n                            currentModel = entity.ModelLod2;\n                        }\n                    }\n                    else\n                    {\n                        continue;\n                    }\n                }\n                else\n                {\n                    throw new MyMwcExceptionApplicationShouldNotGetHere();\n                }\n\n                if (currentModel == null)\n                    continue;\n\n                //////////////////////////////////////////////////////////////////////////\n                //@ Collect Statistics\n                if (lodTypeEnum == MyLodTypeEnum.LOD0)\n                {\n                    if (ShowEnhancedRenderStatsEnabled)\n                    {\n                        m_debugRenderObjectListForDrawLOD0.Add(entity.RenderObjects[0]);\n                    }\n\n                    MyPerformanceCounter.PerCameraDraw.ModelTrianglesInFrustum_LOD0 += currentModel.GetTrianglesCount();\n                }\n                else\n                    if (lodTypeEnum == MyLodTypeEnum.LOD1)\n                    {\n                        if (ShowEnhancedRenderStatsEnabled)\n                        {\n                            m_debugRenderObjectListForDrawLOD1.Add(entity.RenderObjects[0]);\n                        }\n\n                        MyPerformanceCounter.PerCameraDraw.ModelTrianglesInFrustum_LOD1 += currentModel.GetTrianglesCount();\n                    }\n\n                MyPerformanceCounter.PerCameraDraw.EntitiesRendered++;\n\n                //   m_renderProfiler.StartNextBlock(\"Collect render elements\");\n                CollectRenderElements(m_renderElements, m_transparentRenderElements, entity, currentModel, collectTransparentElements);\n                //   m_renderProfiler.EndProfilingBlock();\n            }\n        }\n\n\n        public static void AllocateRenderElement(out MyRenderElement renderElement)\n        {\n            lock (m_renderElementsPool)\n            {\n                renderElement = m_renderElementsPool[m_renderElementIndex++];\n            }\n            IsRenderOverloaded = m_renderElementIndex >= (MyRenderConstants.MAX_RENDER_ELEMENTS_COUNT - 4096);\n        }\n\n        public static void CollectRenderElements(List<MyRenderElement> renderElements, List<MyRenderElement> transparentRenderElements, MyEntity entity, MyModel model, bool collectTransparentElements)\n        {\n            // MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"LoadInDraw\");\n            if (model.LoadState == LoadState.Unloaded)\n            {\n                //model.LoadInDraw(LoadingMode.Background);\n                model.LoadInDraw(LoadingMode.Immediate);\n                return;\n            }\n            if (model.LoadState == LoadState.Loading)\n                return;\n\n            // MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n            var drawMatrix = entity.GetWorldMatrixForDraw();\n\n\n            int meshCount = model.GetMeshList().Count;\n            for (int i = 0; i < meshCount; i++)\n            {\n                MyMesh mesh = model.GetMeshList()[i];\n                // MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Add render element\");\n\n                //if (mesh.Materials[entity.MaterialIndex].DrawTechnique == MyMeshDrawTechnique.DECAL ||\n                //    mesh.Materials[entity.MaterialIndex].DrawTechnique == MyMeshDrawTechnique.HOLO)\n                //    continue;\n\n                MyMeshMaterial material = entity.GetMaterial(mesh);\n\n                bool createElement = true;\n\n                if (createElement)\n                {\n                    MyRenderElement renderElement;\n                    AllocateRenderElement(out renderElement);\n\n                    //renderElement.DebugName = entity.Name;\n                    renderElement.Entity = entity;\n\n                    renderElement.VertexBuffer = model.VertexBuffer;\n                    renderElement.IndexBuffer = model.IndexBuffer;\n                    renderElement.VertexCount = model.GetVerticesCount();\n                    renderElement.VertexDeclaration = model.GetVertexDeclaration();\n                    renderElement.VertexStride = model.GetVertexStride();\n\n                    renderElement.IndexStart = mesh.IndexStart;\n                    renderElement.TriCount = mesh.TriCount;\n\n                    //renderElement.UseChannels = model.UseChannels;\n                    //renderElement.MaskTexture = model.MaskTexture;\n\n                    renderElement.WorldMatrixForDraw = drawMatrix;\n\n                    renderElement.WorldMatrix = entity.WorldMatrix;\n\n                    renderElement.Material = material;\n                    renderElement.DrawTechnique = material.DrawTechnique;\n                    renderElement.VoxelBatch = null;\n\n                    Debug.Assert(renderElement.VertexBuffer != null, \"Vertex buffer cannot be null!\");\n                    Debug.Assert(renderElement.IndexBuffer != null, \"Index buffer cannot be null!\");\n\n                    if (material.DrawTechnique == MyMeshDrawTechnique.HOLO)\n                    {\n                        if (collectTransparentElements)\n                            transparentRenderElements.Add(renderElement);\n                    }\n                    else\n                    {\n\n                        renderElements.Add(renderElement);\n                    }\n                }\n\n                //MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n            }\n        }\n\n        public static void CollectRenderElementsForShadowmap(List<MyRenderElement> renderElements, List<MyRenderElement> transparentRenderElements, MyEntity entity, MyModel model)\n        {\n            if (!EnableAsteroidShadows && (entity is MyStaticAsteroid && ((entity as MyStaticAsteroid).IsGenerated)))\n                return;\n\n            if (model.LoadState != LoadState.Loaded)\n                return;\n\n            model.LoadInDraw();\n\n            MyRenderElement renderElement;\n            CreateRenderElementShadow(renderElements, entity, model, out renderElement);\n        }\n\n        private static void CreateRenderElementShadow(List<MyRenderElement> renderElements, MyEntity entity, MyModel model, out MyRenderElement renderElement)\n        {\n            //AddRenderElement(renderElements, out renderElement);\n            AllocateRenderElement(out renderElement);\n\n            if (!IsRenderOverloaded)\n            {\n                renderElement.Entity = entity;\n\n                renderElement.VertexBuffer = model.VertexBuffer;\n                renderElement.IndexBuffer = model.IndexBuffer;\n                renderElement.VertexCount = model.GetVerticesCount();\n                renderElement.VertexDeclaration = model.GetVertexDeclaration();\n                renderElement.VertexStride = model.GetVertexStride();\n\n\n                renderElement.IndexStart = 0;\n                if (renderElement.IndexBuffer != null)\n                {\n                    renderElement.TriCount = model.GetTrianglesCount();\n                }       \n\n                //renderElement.DebugName = entity.Name;\n                renderElement.WorldMatrix = entity.WorldMatrix;\n\n                renderElements.Add(renderElement);\n            }\n        }\n\n        struct ShaderContext\n        {\n            public bool ApplyStencil;\n\n            public MyEntity CurrentEntity;\n            public VertexBuffer CurrentVertexBuffer;\n\n            public MyVoxelCacheCellRenderBatch CurrentVoxelBatch;\n            public MyMeshMaterial CurrentMaterial;\n\n            public MyEffectBase CurrentShader;\n            public byte CurrentDrawTechnique;\n\n            public int IBChangesStats;\n        }\n\n\n        private static MyMeshMaterial m_emptyMaterial = new MyMeshMaterial(\"\", \"\", null, null);\n\n        private static void DrawRenderElements(List<MyRenderElement> renderElements, bool applyStencil, out int ibChangesStats)\n        {\n            ShaderContext shaderContext;\n            shaderContext.ApplyStencil = applyStencil;\n            shaderContext.CurrentEntity = null;\n            shaderContext.CurrentShader = null;\n            shaderContext.CurrentDrawTechnique = 255;\n            shaderContext.CurrentVoxelBatch = null;\n            shaderContext.CurrentVertexBuffer = null;\n            shaderContext.CurrentMaterial = m_emptyMaterial;\n            shaderContext.IBChangesStats = 0;\n\n            BlendState.Opaque.Apply(); //set by default, blend elements are at the end. \n\n            //Compare last and current model or entity to change device states as little as possible\n            for (int i = 0; i < renderElements.Count; i++)\n            {\n                MyRenderElement renderElement = renderElements[i];\n\n                m_renderProfiler.StartProfilingBlock(\"PrepareDeviceForRender\");\n                PrepareDeviceForRender(ref shaderContext, ref renderElement);\n                m_renderProfiler.EndProfilingBlock();\n\n                m_renderProfiler.StartProfilingBlock(\"DrawIndexedPrimitives\");\n                m_device.DrawIndexedPrimitive(PrimitiveType.TriangleList, 0, 0, renderElement.VertexCount, renderElement.IndexStart, renderElement.TriCount);\n                MyPerformanceCounter.PerCameraDraw.TotalDrawCalls++;\n                m_renderProfiler.EndProfilingBlock();\n            }\n\n\n            m_renderProfiler.StartProfilingBlock(\"shaderContext.CurrentShader.End\");\n            if (shaderContext.CurrentShader != null)\n                shaderContext.CurrentShader.End();\n            m_renderProfiler.EndProfilingBlock();\n\n\n            ibChangesStats = shaderContext.IBChangesStats;\n        }\n\n        private static void PrepareDeviceForRender(ref ShaderContext shaderContext, ref MyRenderElement renderElement)\n        {\n            //    m_renderProfiler.StartProfilingBlock(\"PrepareDeviceForRender\");\n\n            int lod = (int)m_currentLodDrawPass;\n\n            System.Diagnostics.Debug.Assert(renderElement.Entity != null);\n\n            bool needBegin = false;\n\n            //Material change\n            bool voxelMaterialChanged = shaderContext.CurrentVoxelBatch == null && renderElement.VoxelBatch != null;\n            bool voxelTechniqueChanged = false;\n            \n            if (renderElement.VoxelBatch != null && shaderContext.CurrentVoxelBatch != null) \n            {\n                voxelMaterialChanged = renderElement.VoxelBatch.SortOrder != shaderContext.CurrentVoxelBatch.SortOrder;\n                voxelTechniqueChanged = renderElement.VoxelBatch.Type != shaderContext.CurrentVoxelBatch.Type;\n            }\n            if ((shaderContext.CurrentMaterial.GetHashCode() != renderElement.Material.GetHashCode())\n                || voxelMaterialChanged || voxelTechniqueChanged)\n            {\n                MyPerformanceCounter.PerCameraDraw.MaterialChanges[lod]++;\n                shaderContext.CurrentMaterial = renderElement.Material;\n                shaderContext.CurrentVoxelBatch = renderElement.VoxelBatch;\n\n                MyEffectBase oldShader = shaderContext.CurrentShader;\n                shaderContext.CurrentShader = MyRender.SetupShaderForMaterial(renderElement.Material, renderElement.VoxelBatch);\n\n                if (shaderContext.CurrentDrawTechnique != (byte)renderElement.DrawTechnique || voxelTechniqueChanged)\n                {\n                    if (oldShader != null)\n                        oldShader.End();\n                    \n                    needBegin = true;\n                    \n                    MyPerformanceCounter.PerCameraDraw.TechniqueChanges[lod]++;\n\n                    shaderContext.CurrentDrawTechnique = (byte)renderElement.DrawTechnique;\n\n                    MyRender.SetupShaderPerDraw(shaderContext.CurrentShader, renderElement.DrawTechnique);\n                }\n            }\n\n            //VB change\n            if (!object.ReferenceEquals(shaderContext.CurrentVertexBuffer, renderElement.VertexBuffer))\n            {\n                MyPerformanceCounter.PerCameraDraw.VertexBufferChanges[lod]++;\n\n                //Now we have IB+VB 1:1 everywhere, subsets are done through offsets\n                shaderContext.CurrentVertexBuffer = renderElement.VertexBuffer;\n                m_device.Indices = renderElement.IndexBuffer;\n\n                m_device.SetStreamSource(0, renderElement.VertexBuffer, 0, renderElement.VertexStride);\n                m_device.VertexDeclaration = renderElement.VertexDeclaration;\n\n                shaderContext.IBChangesStats++;\n            }\n\n            //Entity changed\n            if (shaderContext.CurrentEntity != renderElement.Entity)\n            {\n                MyPerformanceCounter.PerCameraDraw.EntityChanges[lod]++;\n\n                shaderContext.CurrentEntity = renderElement.Entity;\n\n                SetupShaderForEntity(shaderContext.CurrentShader, renderElement);\n            }\n\n            if (needBegin)\n            {\n                BeginShader(shaderContext.CurrentShader, ref renderElement);\n                shaderContext.CurrentShader.Begin();\n            }\n            else\n                shaderContext.CurrentShader.D3DEffect.CommitChanges();\n\n            //    m_renderProfiler.EndProfilingBlock();\n        }\n\n        private static void GetShaderParameters(MyEntity entity, out Vector3 diffuseColor, out float emisivity, out Vector3 highlightColor)\n        {\n            diffuseColor = Vector3.One;\n            highlightColor = Vector3.Zero;\n\n            emisivity = 0;\n\n            if (entity != null)\n            {\n                if (entity.GetDiffuseColor().HasValue)\n                    diffuseColor = entity.GetDiffuseColor().Value;\n\n                highlightColor = entity.GetHighlightColor();\n            }\n        }\n\n        private static void SetupShaderPerDraw(MyEffectBase shader, MyMeshDrawTechnique technique)\n        {\n            //  m_renderProfiler.StartProfilingBlock(\"SetupShaderPerDraw\");\n\n            MyCamera.SetupBaseEffect(shader, m_currentSetup.FogMultiplierMult);\n\n            if (m_currentLodDrawPass == MyLodTypeEnum.LOD_NEAR)\n                shader.SetProjectionMatrix(ref MyCamera.ProjectionMatrixForNearObjects);\n            else\n                shader.SetProjectionMatrix(ref MyCamera.ProjectionMatrix);\n\n            shader.SetViewMatrix(ref MyCamera.ViewMatrixAtZero);\n\n            switch (technique)\n            {\n                case MyMeshDrawTechnique.DECAL:\n                    {\n                        MyStateObjects.Static_Decals_BlendState.Apply();\n                        MyStateObjects.BiasedRasterizer_StaticDecals.Apply();\n                        MyStateObjects.DepthStencil_TestFarObject_DepthReadOnly.Apply();\n                    }\n                    break;\n                case MyMeshDrawTechnique.HOLO:\n                    {\n                        RasterizerState.CullNone.Apply();\n                        MyStateObjects.Holo_BlendState.Apply();\n\n                        MyEffectModelsDNS dnsShader = shader as MyEffectModelsDNS;\n\n                        dnsShader.SetHalfPixel(MyCamera.ForwardViewport.Width, MyCamera.ForwardViewport.Height);\n                        dnsShader.SetScale(GetScaleForViewport(GetRenderTarget(MyRenderTargets.Depth)));\n\n                        if (m_currentLodDrawPass != MyLodTypeEnum.LOD_NEAR && !MyRenderConstants.RenderQualityProfile.ForwardRender)\n                        {\n                            //m_device.DepthStencilState = DepthStencilState.DepthRead;\n                            \n                            MyStateObjects.DepthStencil_TestFarObject_DepthReadOnly.Apply();\n                            MyStateObjects.HoloRasterizerState.Apply();\n                            /*dnsShader.SetDepthTextureNear(GetRenderTarget(MyRenderTargets.Lod0Depth));\n                            dnsShader.SetDepthTextureFar(GetRenderTarget(MyRenderTargets.Lod1Depth));\n                             */\n\n                        }\n                        else\n                        {\n                            DepthStencilState.DepthRead.Apply();\n                        }\n                    }\n                    break;\n                case MyMeshDrawTechnique.ALPHA_MASKED:\n                    {\n                        if (!Wireframe)\n                            RasterizerState.CullCounterClockwise.Apply();\n                        else\n                            MyStateObjects.WireframeRasterizerState.Apply();\n\n\n                        BlendState.Opaque.Apply();\n                    }\n                    break;\n                case MyMeshDrawTechnique.VOXEL_MAP:\n                    {\n                        if (!Wireframe)\n                            RasterizerState.CullCounterClockwise.Apply();\n                        else\n                            MyStateObjects.WireframeRasterizerState.Apply();\n\n                        break;\n                    }\n                case MyMeshDrawTechnique.VOXELS_STATIC_ASTEROID:\n                    {\n                        if (!Wireframe)\n                            RasterizerState.CullNone.Apply();\n                        else\n                            MyStateObjects.WireframeRasterizerState.Apply();\n\n                        break;\n                    }\n                default:\n                    {\n                        if (!Wireframe)\n                            RasterizerState.CullCounterClockwise.Apply();\n                        else\n                            MyStateObjects.WireframeRasterizerState.Apply();\n\n                    }\n                    break;\n            }\n\n            // m_renderProfiler.EndProfilingBlock();\n        }\n\n        private static void BeginShader(MyEffectBase shader, ref MyRenderElement renderElement)\n        {\n            switch (renderElement.DrawTechnique)\n            {\n                case MyMeshDrawTechnique.DECAL:\n                    {\n                        if (shader is MyEffectModelsDNS)\n                        {\n                            (shader as MyEffectModelsDNS).BeginBlended();\n                        }\n                    }\n                    break;\n                case MyMeshDrawTechnique.HOLO:\n                    {\n                        if (m_currentLodDrawPass != MyLodTypeEnum.LOD_NEAR && !MyRenderConstants.RenderQualityProfile.ForwardRender)\n                        {\n                            (shader as MyEffectModelsDNS).ApplyHolo(false);\n                        }\n                        else\n                        {\n                            (shader as MyEffectModelsDNS).ApplyHolo(true);\n                        }\n                    }\n                    break;\n                case MyMeshDrawTechnique.ALPHA_MASKED:\n                    {\n                        (shader as MyEffectModelsDNS).ApplyMasked();\n                    }\n                    break;\n                case MyMeshDrawTechnique.VOXEL_MAP:\n                    {\n                        MyEffectVoxels effectVoxels = shader as MyEffectVoxels;\n                        if (renderElement.VoxelBatch.Type == MyVoxelCacheCellRenderBatchType.SINGLE_MATERIAL)\n                        {\n                            effectVoxels.Apply();\n                        }\n                        else if (renderElement.VoxelBatch.Type == MyVoxelCacheCellRenderBatchType.MULTI_MATERIAL)\n                        {\n                            effectVoxels.ApplyMultimaterial();\n                        }\n                        break;\n                    }\n                case MyMeshDrawTechnique.VOXELS_STATIC_ASTEROID:\n                    {\n                        ((MyEffectVoxelsStaticAsteroid)shader).Apply();\n                    }\n                    break;\n                case MyMeshDrawTechnique.MESH:\n                    {\n                        ((MyEffectModelsDNS)shader).SetTechnique(MyRenderConstants.RenderQualityProfile.ModelsRenderTechnique);\n                    }\n                    break;\n                case MyMeshDrawTechnique.VOXELS_DEBRIS:\n                    {\n                        ((MyEffectVoxelsDebris)shader).SetTechnique(MyRenderConstants.RenderQualityProfile.VoxelsRenderTechnique);\n                    }\n                    break;\n                default:\n                    {\n                        System.Diagnostics.Debug.Assert(false);\n                    }\n                    break;\n            }\n        }\n\n        private static void SetupShaderForEntity(MyEffectBase shader, MyRenderElement renderElement)\n        {\n            // m_renderProfiler.StartProfilingBlock(\"SetupShaderForEntity\");\n\n            MyEffectBase currRenderEffect = null;\n\n            Vector3 diffuseColor = Vector3.One;\n            Vector3 highlightColor = Vector3.Zero;\n            float emisivity = 0;\n\n            MyEntity entity = renderElement.Entity;\n\n            if (entity.GetDiffuseColor().HasValue)\n                diffuseColor = entity.GetDiffuseColor().Value;\n\n            highlightColor = entity.GetHighlightColor();\n\n            switch (renderElement.DrawTechnique)\n            {\n                case MyMeshDrawTechnique.MESH:\n                case MyMeshDrawTechnique.DECAL:\n                case MyMeshDrawTechnique.HOLO:\n                case MyMeshDrawTechnique.ALPHA_MASKED:\n                    {\n                        MyEffectModelsDNS effectDNS = shader as MyEffectModelsDNS;\n\n                        effectDNS.SetWorldMatrix(renderElement.WorldMatrixForDraw);\n                        effectDNS.SetDiffuseColor(diffuseColor);\n                        effectDNS.SetEmissivity(emisivity);\n                        effectDNS.SetHighlightColor(highlightColor);\n                    }\n                    break;\n\n                case MyMeshDrawTechnique.VOXELS_DEBRIS:\n                    {\n                        //m_renderProfiler.StartProfilingBlock(\"VOXELD\");\n\n                        MyEffectVoxelsDebris effectVoxelsDebris = shader as MyEffectVoxelsDebris;\n\n                        MyExplosionDebrisVoxel explosionDebrisVoxel = entity as MyExplosionDebrisVoxel;\n\n                        //  Random texture coord scale and per-object random texture coord offset\n                        effectVoxelsDebris.SetTextureCoordRandomPositionOffset(explosionDebrisVoxel.GetRandomizedTextureCoordRandomPositionOffset());\n                        effectVoxelsDebris.SetTextureCoordScale(explosionDebrisVoxel.GetRandomizedTextureCoordScale());\n                        effectVoxelsDebris.SetDiffuseTextureColorMultiplier(explosionDebrisVoxel.GetRandomizedDiffuseTextureColorMultiplier());\n                        effectVoxelsDebris.SetViewWorldScaleMatrix(renderElement.WorldMatrixForDraw * MyCamera.ViewMatrixAtZero);\n                        effectVoxelsDebris.SetWorldMatrix(ref renderElement.WorldMatrixForDraw);\n                        effectVoxelsDebris.SetDiffuseColor(diffuseColor);\n                        effectVoxelsDebris.SetHighlightColor(highlightColor);\n                        effectVoxelsDebris.SetEmissivity(0);\n\n                        effectVoxelsDebris.UpdateVoxelTextures(explosionDebrisVoxel.VoxelMaterial);\n\n                        currRenderEffect = effectVoxelsDebris;\n\n                        //m_renderProfiler.EndProfilingBlock();\n                    }\n                    break;\n\n                case MyMeshDrawTechnique.VOXEL_MAP:\n                    {\n                        //m_renderProfiler.StartProfilingBlock(\"VOXMAP\");\n\n                        MyVoxelMap voxelMap = entity as MyVoxelMap;\n\n                        MyEffectVoxels effectVoxels = shader as MyEffectVoxels;\n\n                        effectVoxels.SetVoxelMapPosition(voxelMap.PositionLeftBottomCorner - MyCamera.Position);\n\n                        effectVoxels.SetDiffuseColor(diffuseColor);\n                        effectVoxels.SetHighlightColor(highlightColor);\n                        effectVoxels.EnablePerVertexAmbient(EnablePerVertexVoxelAmbient);\n\n                        //m_renderProfiler.EndProfilingBlock();\n                    }\n                    break;\n\n                case MyMeshDrawTechnique.VOXELS_STATIC_ASTEROID:\n                    {\n                        // m_renderProfiler.StartProfilingBlock(\"STATA\");\n\n                        MyEffectVoxelsStaticAsteroid effectVoxelsStaticAsteroid = shader as MyEffectVoxelsStaticAsteroid;\n                        var asteroid = ((MyStaticAsteroid)entity);\n                        //effectVoxelsStaticAsteroid.UpdateVoxelTextures(((MyStaticAsteroid)entity).VoxelMaterial);\n                        //effectVoxelsStaticAsteroid.UpdateVoxelMultiTextures(((MyStaticAsteroid)entity).VoxelMaterial, ((MyStaticAsteroid)entity).VoxelMaterial1, null);\n\n                        if (asteroid.VoxelMaterial1 == null || MyRenderConstants.RenderQualityProfile.ForwardRender)\n                        {\n                            effectVoxelsStaticAsteroid.UpdateVoxelTextures(asteroid.VoxelMaterial);\n                        }\n                        else\n                        {\n                            Debug.Assert(asteroid.FieldDir != null);\n\n                            effectVoxelsStaticAsteroid.SetEmissivityPower1(3f);\n                            effectVoxelsStaticAsteroid.SetTime(MyMinerGame.TotalGamePlayTimeInMilliseconds);\n                            effectVoxelsStaticAsteroid.SetFieldDir(asteroid.FieldDir.Value);\n                            effectVoxelsStaticAsteroid.UpdateVoxelMultiTextures(asteroid.VoxelMaterial, asteroid.VoxelMaterial1, null);\n                        }\n\n                        effectVoxelsStaticAsteroid.SetWorldMatrix(ref renderElement.WorldMatrixForDraw);\n                        effectVoxelsStaticAsteroid.SetDiffuseColor(diffuseColor);\n                        effectVoxelsStaticAsteroid.SetHighlightColor(highlightColor);\n                        effectVoxelsStaticAsteroid.SetEmissivity(0);\n\n                        //m_renderProfiler.EndProfilingBlock();\n                    }\n                    break;\n\n                default:\n                    {\n                        throw new MyMwcExceptionApplicationShouldNotGetHere();\n                    }\n            }\n\n            //   m_renderProfiler.EndProfilingBlock();\n        }\n\n        internal static MyTexture2D GetDebugTexture()\n        {\n            LazyLoadDebugTextures();\n            return m_debugTexture;\n        }\n\n        internal static MyTexture2D GetDebugNormalTexture()\n        {\n            LazyLoadDebugTextures();\n            return m_debugNormalTexture;\n        }\n\n        internal static MyTexture2D GetDebugNormalTextureBump()\n        {\n            LazyLoadDebugTextures();\n            return m_debugNormalTextureBump;\n        }\n\n        /// <summary>\n        /// SetupShader\n        /// </summary>\n        /// <param name=\"shader\"></param>\n        public static MyEffectBase SetupShaderForMaterial(MyMeshMaterial material, MyVoxelCacheCellRenderBatch voxelBatch)\n        {\n            switch (material.DrawTechnique)\n            {\n                case MyMeshDrawTechnique.MESH:\n                case MyMeshDrawTechnique.DECAL:\n                case MyMeshDrawTechnique.HOLO:\n                case MyMeshDrawTechnique.ALPHA_MASKED:\n                    {\n                        MyEffectModelsDNS shader = GetEffect(MyEffects.ModelDNS) as MyEffectModelsDNS;\n\n                        if (material != null)\n                        {\n                            shader.SetTextureDiffuse(material.DiffuseTexture);\n                            shader.SetTextureNormal(material.NormalTexture);\n\n                            //Do we need this? Graphicians dont use this\n                            //shader.SetDiffuseColor(material.DiffuseColor);\n\n                            shader.SetSpecularIntensity(material.SpecularIntensity);\n                            shader.SetSpecularPower(material.SpecularPower);\n\n                            shader.SetDiffuseUVAnim(material.DiffuseUVAnim);\n                            shader.SetEmissivityUVAnim(material.EmissiveUVAnim);\n\n                            shader.SetEmissivityOffset(material.EmissivityOffset);\n\n                            if (material.DrawTechnique == MyMeshDrawTechnique.HOLO)\n                            {\n                                shader.SetEmissivity(material.HoloEmissivity);\n                            }\n\n                            // Commented due 856 - graphicians have to reexport white diffuse colors from MAX\n                            //shader.SetDiffuseColor(material.DiffuseColor);\n                        }\n                        else\n                        {\n                            shader.SetTextureDiffuse(null);\n                            shader.SetTextureNormal(null);\n\n                            shader.SetSpecularPower(1);\n                            shader.SetSpecularIntensity(1);\n\n                            //this value is set from object if not from material\n                            //shader.SetDiffuseColor(material.DiffuseColor);\n                        }\n\n                        if (CheckDiffuseTextures)\n                        {\n                            if (!shader.IsTextureDiffuseSet())\n                            {\n                                LazyLoadDebugTextures();\n\n                                shader.SetTextureDiffuse(m_debugTexture);\n                                shader.SetDiffuseColor(Vector3.One);\n                                shader.SetEmissivity(1);\n                            }\n                            else\n                            {\n                                if (material.DrawTechnique != MyMeshDrawTechnique.HOLO)\n                                {\n                                    shader.SetEmissivity(0);\n                                }\n                            }\n                        }\n                        if (CheckNormalTextures)\n                        {\n                            if (!shader.IsTextureNormalSet())\n                            {\n                                LazyLoadDebugTextures();\n\n                                shader.SetTextureDiffuse(m_debugTexture);\n                                shader.SetEmissivity(1);\n                            }\n                            else\n                            {\n                                shader.SetTextureDiffuse(material.NormalTexture);\n                                //shader.SetTextureDiffuse(m_debugNormalTexture);\n                                shader.SetEmissivity(0);\n                            }\n                        }\n\n                        if (!shader.IsTextureNormalSet())\n                        {\n                            LazyLoadDebugTextures();\n                            shader.SetTextureNormal(m_debugTexture);\n                        }\n\n\n                        return shader;\n                    }\n                    break;\n\n                case MyMeshDrawTechnique.VOXELS_DEBRIS:\n                    {\n                        MyEffectVoxelsDebris effectVoxelsDebris = GetEffect(MyEffects.VoxelDebrisMRT) as MyEffectVoxelsDebris;\n                        return effectVoxelsDebris;\n                    }\n                    break;\n\n                case MyMeshDrawTechnique.VOXEL_MAP:\n                    {\n                        MyEffectVoxels effectVoxels = MyRender.GetEffect(MyEffects.VoxelsMRT) as MyEffectVoxels;\n\n                        if (voxelBatch.Type == MyVoxelCacheCellRenderBatchType.SINGLE_MATERIAL)\n                        {\n                            effectVoxels.UpdateVoxelTextures(OverrideVoxelMaterial ?? voxelBatch.Material0);\n                        }\n                        else if (voxelBatch.Type == MyVoxelCacheCellRenderBatchType.MULTI_MATERIAL)\n                        {\n                            effectVoxels.UpdateVoxelMultiTextures(OverrideVoxelMaterial ?? voxelBatch.Material0, OverrideVoxelMaterial ?? voxelBatch.Material1, OverrideVoxelMaterial ?? voxelBatch.Material2);\n                        }\n\n                        return effectVoxels;\n                    }\n                    break;\n\n                case MyMeshDrawTechnique.VOXELS_STATIC_ASTEROID:\n                    {\n                        MyEffectVoxelsStaticAsteroid effectVoxelsStaticAsteroid = GetEffect(MyEffects.VoxelStaticAsteroidMRT) as MyEffectVoxelsStaticAsteroid;\n                        return effectVoxelsStaticAsteroid;\n                    }\n                    break;\n\n                default:\n                    {\n                        throw new MyMwcExceptionApplicationShouldNotGetHere();\n                    }\n            }\n\n            return null;\n        }\n\n        static void LazyLoadDebugTextures()\n        {\n            if (m_debugTexture == null)\n            {\n                m_debugTexture = MyTextureManager.GetTexture<MyTexture2D>(\"Textures2\\\\Models\\\\Debug\\\\debug_d\");\n            }\n            if (m_debugNormalTexture == null)\n            {\n                m_debugNormalTexture = MyTextureManager.GetTexture<MyTexture2D>(\"Textures2\\\\Models\\\\fake_ns\");\n            }\n            if (m_debugNormalTextureBump == null)\n            {\n                m_debugNormalTextureBump = MyTextureManager.GetTexture<MyTexture2D>(\"Textures2\\\\Models\\\\Debug\\\\debug_n\");\n            }\n        }\n\n        internal static void Draw(bool applyBackupStack = true)\n        {\n            if (!Enabled)\n            {\n                return;\n            }\n             /*\n            if (!MyRenderConstants.RenderQualityProfile.ForwardRender)\n            {\n                System.Diagnostics.Debug.Assert(GetShadowRenderer().m_prepareForDrawCompleted == true);\n            }  */\n\n            ApplySetupStack(m_backupSetup);\n\n            m_renderProfiler.StartProfilingBlock(\"Draw total\");\n\n            if (m_currentSetup.CallerID.Value == MyRenderCallerEnum.Main)\n                m_renderCounter++;\n\n            m_renderElementIndex = 0;\n            GetShadowRenderer().UpdateFrustumCorners();\n            if (!MyRenderConstants.RenderQualityProfile.ForwardRender)\n            {\n                if (EnableLights && EnableLightsRuntime && MyRender.CurrentRenderSetup.EnableLights.Value && EnableSun && EnableShadows && CurrentRenderSetup.EnableSun.Value)\n                    GetShadowRenderer().PrepareFrame();\n            }\n            \n            //Updates dependent on draw\n            m_renderProfiler.StartProfilingBlock(\"PrepareForDraw\");\n            DrawRenderModules(MyRenderStage.PrepareForDraw);\n            m_renderProfiler.EndProfilingBlock();\n               \n            //Scene rendering\n\n            if (MyRenderConstants.RenderQualityProfile.ForwardRender)\n                DrawSceneForward();\n            else\n                DrawScene();\n\n            if (MyMwcFinalBuildConstants.EnableDebugDraw && MyRender.CurrentRenderSetup.EnableDebugHelpers.Value)\n            {\n                //Debug draw\n                DrawDebug();\n\n                m_device.Clear(ClearFlags.ZBuffer, new ColorBGRA(0), 1, 0);\n\n                m_renderProfiler.StartProfilingBlock(\"DebugDraw\");\n                DrawRenderModules(MyRenderStage.DebugDraw);\n                m_renderProfiler.EndProfilingBlock();\n            }\n\n            if (applyBackupStack)\n            {\n                ApplySetup(m_backupSetup);\n            }\n\n            if (m_currentSetup.CallerID.Value == MyRenderCallerEnum.Main)\n            {\n                // Debug draw\n                if (MyFakes.DEBUG_DRAW_COLLIDING_ENTITIES)\n                {\n                    MyDebugDrawCachedLines.DrawLines();\n                    MyDebugDrawCachedLines.Clear();\n                }\n\n                MyDebugDraw.TextBatch.Draw();\n            }\n\n\n            //if (!MyRenderConstants.RenderQualityProfile.ForwardRender)\n              //  System.Diagnostics.Debug.Assert(GetShadowRenderer().m_prepareForDrawCompleted == true);\n\n            //Profiling data\n            m_renderProfiler.EndProfilingBlock();\n        }\n\n        /// <summary>\n        /// Renders the source from parameter to the current device's render target.\n        /// It just copies one RT into another (but by a rendering pass - so it's probably redundant).\n        /// </summary>\n        /// <param name=\"source\"></param>\n        public static void Blit(Texture source, bool scaleToTarget, MyEffectScreenshot.ScreenshotTechniqueEnum technique = MyEffectScreenshot.ScreenshotTechniqueEnum.Default)\n        {\n            var screenEffect = m_effects[(int)MyEffects.Screenshot] as MyEffectScreenshot;\n            screenEffect.SetSourceTexture(source);\n\n            //For case that source is bigger then camera viewport (back camera etc.)\n            Vector2 scale = Vector2.One;\n\n            if (scaleToTarget)\n            {\n                scale = GetScaleForViewport(source);\n            }\n\n\n            screenEffect.SetScale(scale);\n            screenEffect.SetTechnique(technique);\n\n\n            BlendState bs = BlendState.Current;\n            if (technique == MyEffectScreenshot.ScreenshotTechniqueEnum.DepthToAlpha)\n            {\n                MyStateObjects.AlphaChannels_BlendState.Apply();\n            }\n\n            MyGuiManager.GetFullscreenQuad().Draw(screenEffect);\n\n            if (technique == MyEffectScreenshot.ScreenshotTechniqueEnum.DepthToAlpha)\n            {\n                bs.Apply();\n            }\n        }\n\n        internal static Vector2 GetScaleForViewport(Texture source)\n        {\n            return m_scaleToViewport;\n            //return new Vector2(((float)MyCamera.ForwardViewport.Width / source.Width), ((float)MyCamera.ForwardViewport.Height / source.Height));\n            //Vector2 scale = new Vector2(((float)source.Width / MyCamera.ForwardViewport.Width), ((float)source.Height / MyCamera.ForwardViewport.Height));\n        }\n\n        internal static void RenderPostProcesses(PostProcessStage postProcessStage, Texture source, Texture[] target, Texture availableRT, bool copyToTarget = true, bool scaleToTarget = false)\n        {\n            Texture lastSurface = source;\n\n            m_renderProfiler.StartProfilingBlock(\"Render Post process: \" + postProcessStage.ToString());\n\n            {\n                (MyRender.GetEffect(MyEffects.BlendLights) as MyEffectBlendLights).DefaultTechnique = MyEffectBlendLights.Technique.LightsEnabled;\n                (MyRender.GetEffect(MyEffects.BlendLights) as MyEffectBlendLights).CopyEmissivityTechnique = MyEffectBlendLights.Technique.CopyEmissivity;\n\n                MyEffectDirectionalLight directionalLight = MyRender.GetEffect(MyEffects.DirectionalLight) as MyEffectDirectionalLight;\n                directionalLight.DefaultTechnique = MyEffectDirectionalLight.Technique.Default;\n                directionalLight.DefaultWithoutShadowsTechnique = MyEffectDirectionalLight.Technique.WithoutShadows;\n                directionalLight.DefaultNoLightingTechnique = MyEffectDirectionalLight.Technique.NoLighting;\n\n                MyEffectPointLight pointLight = MyRender.GetEffect(MyEffects.PointLight) as MyEffectPointLight;\n                pointLight.DefaultTechnique = MyEffectPointLight.MyEffectPointLightTechnique.Default;\n                pointLight.DefaultPointTechnique = MyEffectPointLight.MyEffectPointLightTechnique.Default;\n                pointLight.DefaultHemisphereTechnique = MyEffectPointLight.MyEffectPointLightTechnique.Default;\n                pointLight.DefaultReflectorTechnique = MyEffectPointLight.MyEffectPointLightTechnique.Reflector;\n                pointLight.DefaultSpotTechnique = MyEffectPointLight.MyEffectPointLightTechnique.Spot;\n                pointLight.DefaultSpotShadowTechnique = MyEffectPointLight.MyEffectPointLightTechnique.SpotShadows;\n            }\n\n\n            foreach (MyPostProcessBase postProcess in m_postProcesses)\n            {\n                if (postProcess.Enabled && (MyRender.CurrentRenderSetup.EnabledPostprocesses == null || MyRender.CurrentRenderSetup.EnabledPostprocesses.Contains(postProcess.Name)))\n                {\n                    var currSurface = postProcess.Render(postProcessStage, lastSurface, availableRT);\n\n                    // Effect used availableRT as target, so lastSurface is available now\n                    if (currSurface != lastSurface && lastSurface != null)\n                    {\n                        availableRT = lastSurface;\n                    }\n                    lastSurface = currSurface;\n                }\n            }\n\n            m_renderProfiler.EndProfilingBlock();\n\n            if (lastSurface != null && copyToTarget)\n            {\n                MyMinerGame.SetRenderTargets(target, null);\n\n                if (scaleToTarget)\n                    SetCorrectViewportSize();\n\n                //m_device.BlendState = BlendState.Opaque;\n                BlendState.Opaque.Apply();\n\n                Blit(lastSurface, scaleToTarget);\n\n                //SpriteBlit(lastSurface);\n            }\n        }\n\n        public static void SetCorrectViewportSize()\n        {\n            if (((Texture)MyRender.GetRenderTarget(MyRenderTargets.Depth)).GetLevelDescription(0).Width != MyCamera.ForwardViewport.Width)\n            {   //missile camera, remote camera, back camera etc\n                MyMinerGame.Static.GraphicsDevice.Viewport = MyCamera.ForwardViewport;\n            }\n        }\n\n        \n        /// <summary>\n        /// Draw background of the scene\n        /// </summary>\n        internal static void DrawBackground(Texture[] targets)\n        {\n            m_renderProfiler.StartProfilingBlock(\"Draw background\");\n\n            if (targets != null)\n            {\n                var rt = targets[0];\n                var targetWidth = rt.GetLevelDescription(0).Width;\n                var targetHeight = rt.GetLevelDescription(0).Height;\n                m_scaleToViewport = new Vector2(((float)MyCamera.ForwardViewport.Width / targetWidth), ((float)MyCamera.ForwardViewport.Height / targetHeight));\n            }\n            else\n            {\n                m_scaleToViewport = Vector2.One;\n            }\n\n            //Render background\n            MyMinerGame.SetRenderTargets(targets, null);\n            MyMinerGame.Static.SetDeviceViewport(MyCamera.Viewport);\n\n            RasterizerState.CullNone.Apply();\n            DepthStencilState.None.Apply();\n            BlendState.Opaque.Apply();\n\n\n            if (ShowGreenBackground)\n            {\n                m_device.Clear(ClearFlags.Target, new ColorBGRA(1.0f), 1, 0);\n            }\n            else\n            {\n                m_renderProfiler.StartProfilingBlock(\"Background\");\n                DrawRenderModules(MyRenderStage.Background);\n                m_renderProfiler.EndProfilingBlock();\n            }\n\n            m_renderProfiler.EndProfilingBlock();\n        }\n\n\n\n        /// <summary>\n        /// Draw one LOD level of the scene\n        /// </summary>\n        /// <param name=\"currentLodDrawPass\"></param>\n        /// <param name=\"drawCockpitInterior\"></param>\n        internal static void DrawScene_OneLodLevel(MyLodTypeEnum currentLodDrawPass)\n        {\n            m_renderProfiler.StartProfilingBlock(currentLodDrawPass.ToString());\n\n            m_currentLodDrawPass = currentLodDrawPass;\n\n            switch (currentLodDrawPass)\n            {\n                case MyLodTypeEnum.LOD0:\n                    MyMinerGame.SetRenderTargets(m_GBufferDefaultBinding, null);\n                    break;\n            }\n\n            MyMinerGame.Static.SetDeviceViewport(MyCamera.Viewport);\n\n            //  We don't need depth buffer for clearing Gbuffer\n            DepthStencilState.None.Apply();\n            BlendState.Opaque.Apply();\n            RasterizerState.CullCounterClockwise.Apply();\n\n\n            if (currentLodDrawPass == MyLodTypeEnum.LOD0)\n            {\n                //  Clear depth buffer + stencil because that should be faster than just clearing depth buffer (HW thing...)\n                m_device.Clear(ClearFlags.Target | ClearFlags.ZBuffer | ClearFlags.Stencil, new ColorBGRA(1.0f,0,0,1), 1, 0);\n                //  Clear Gbuffer\n                MyGuiManager.GetFullscreenQuad().Draw(MyRender.GetEffect(MyEffects.ClearGBuffer));\n            }\n\n            //  This compare function \"less\" is better when drawing normal and LOD1 cells, then z-fighting isn't so visible.\n            DepthStencilState.Default.Apply();\n\n            if (!Wireframe)\n                RasterizerState.CullCounterClockwise.Apply();\n            else\n                MyStateObjects.WireframeRasterizerState.Apply();\n\n            m_renderProfiler.StartProfilingBlock(\"MyRenderStage.LODDrawStart\");\n            // Render registered modules for this stage\n            m_renderProfiler.EndProfilingBlock();\n\n            bool drawNear = !SkipLOD_NEAR && m_currentSetup.EnableNear.HasValue && m_currentSetup.EnableNear.Value;\n\n            if (currentLodDrawPass == MyLodTypeEnum.LOD0) // LOD0\n            {\n                m_renderProfiler.StartProfilingBlock(\"DrawNearObjects\");\n                if (drawNear/* && MyRender.EnableLODBlending*/)\n                {\n                    DrawScene_OneLodLevel_DrawNearObjects(ShowStencilOptimization, true);\n                }\n                m_renderProfiler.EndProfilingBlock();\n\n                m_renderProfiler.StartProfilingBlock(\"Draw(false);\");\n                m_currentLodDrawPass = MyLodTypeEnum.LOD0;\n                if (!SkipLOD_0)\n                {\n                    DrawScene_OneLodLevel_Draw(false, true);\n                }\n                m_renderProfiler.EndProfilingBlock();\n            }\n            else // LOD1\n            {\n                /*\n                if (EnableStencilOptimizationLOD1 && drawNear)\n                {\n                    DrawScene_OneLodLevel_DrawNearObjects(true, false);\n                }\n                 */\n                         /*\n                if (drawNear && !MyRender.EnableLODBlending)\n                {\n                    DrawScene_OneLodLevel_DrawNearObjects(ShowStencilOptimization, true);\n                }          */\n\n                //if (!MyRender.EnableLODBlending)\n                {\n                    //m_device.DepthStencilState = MyStateObjects.DepthStencil_TestFarObject;\n                    MyStateObjects.DepthStencil_TestFarObject.Apply();\n                }\n\n                m_currentLodDrawPass = MyLodTypeEnum.LOD1;\n                if (!SkipLOD_1)\n                {\n                    DrawScene_OneLodLevel_Draw(false, true);\n                }\n\n                m_renderProfiler.StartProfilingBlock(\"DrawNearObjects 2\");\n                /*if (drawNear && !MyRender.EnableLODBlending)\n                {\n                    DrawScene_OneLodLevel_DrawNearObjects(ShowStencilOptimization, true);\n                } */\n                m_renderProfiler.EndProfilingBlock();\n            }\n\n            //m_device.RasterizerState = RasterizerState.CullCounterClockwise;\n            RasterizerState.CullCounterClockwise.Apply();\n\n            // Render registered modules for this stage\n            m_renderProfiler.StartProfilingBlock(\"MyRenderStage.LODDrawEnd\");\n            DrawRenderModules(MyRenderStage.LODDrawEnd);\n            m_renderProfiler.EndProfilingBlock();\n\n            m_renderProfiler.EndProfilingBlock();\n        }\n\n        internal static void DrawScene_OneLodLevel_Forward(MyLodTypeEnum currentLodDrawPass)\n        {\n            m_renderProfiler.StartProfilingBlock(currentLodDrawPass.ToString());\n\n            m_currentLodDrawPass = currentLodDrawPass;\n\n            MyMinerGame.Static.SetDeviceViewport(MyCamera.Viewport);\n\n            BlendState.Opaque.Apply();\n            DepthStencilState.Default.Apply();\n\n            if (currentLodDrawPass == MyLodTypeEnum.LOD0)\n            {\n                //                 //  Clear depth buffer + stencil because that should be faster than just clearing depth buffer (HW thing...)\n                //                 m_device.Clear(ClearOptions.DepthBuffer | ClearOptions.Stencil, new Color(0, 0, 0, 0), 1, 0);\n                m_renderElementIndex = 0;\n            }\n\n            if (!Wireframe)\n                RasterizerState.CullCounterClockwise.Apply();\n            else\n                MyStateObjects.WireframeRasterizerState.Apply();\n\n            // Render registered modules for this stage\n            m_renderProfiler.StartProfilingBlock(\"MyRenderStage.LODDrawStart\");\n            DrawRenderModules(MyRenderStage.LODDrawStart);\n            m_renderProfiler.EndProfilingBlock();\n\n            if (currentLodDrawPass == MyLodTypeEnum.LOD0) // LOD0\n            {\n                m_renderProfiler.StartProfilingBlock(\"DrawNearObjects\");\n                if (!SkipLOD_NEAR && m_currentSetup.EnableNear.HasValue && m_currentSetup.EnableNear.Value)\n                {\n                    DrawScene_OneLodLevel_DrawNearObjects(ShowStencilOptimization, true);\n                }\n                m_renderProfiler.EndProfilingBlock();\n\n                m_renderProfiler.StartProfilingBlock(\"Draw(false);\");\n                m_currentLodDrawPass = MyLodTypeEnum.LOD0;\n                if (!SkipLOD_0)\n                {\n                    DrawScene_OneLodLevel_Draw(false, true);\n                }\n                m_renderProfiler.EndProfilingBlock();\n            }\n            else // LOD1\n            {\n                m_currentLodDrawPass = MyLodTypeEnum.LOD1;\n                if (!SkipLOD_1)\n                {\n                    DrawScene_OneLodLevel_Draw(false, true);\n                }\n            }\n\n            RasterizerState.CullCounterClockwise.Apply();\n\n            // Render registered modules for this stage\n            m_renderProfiler.StartProfilingBlock(\"MyRenderStage.LODDrawEnd\");\n            DrawRenderModules(MyRenderStage.LODDrawEnd);\n            m_renderProfiler.EndProfilingBlock();\n\n            m_renderProfiler.EndProfilingBlock();\n        }\n\n        private static void DrawScene_OneLodLevel_DrawNearObjects(bool drawStencilTechnique, bool collectTransparentElements)\n        {\n            if (EnableStencilOptimization && !MyRenderConstants.RenderQualityProfile.ForwardRender)\n            {\n                MyStateObjects.DepthStencil_WriteNearObject.Apply();\n            }\n            /*else if (!MyRender.EnableLODBlending)\n            {\n                MyMinerGame.GraphicsDeviceManager.GraphicsDevice.DepthStencilState = DepthStencilState.None;\n            }   */\n            else if (ShowStencilOptimization)\n            {\n                DepthStencilState.None.Apply();\n            }\n\n            m_currentLodDrawPass = MyLodTypeEnum.LOD_NEAR;\n\n            //if (!MyRenderConstants.RenderQualityProfile.ForwardRender)\n            //    MyCamera.SetNearObjectsClipPlanes(true);\n\n            DrawScene_OneLodLevel_Draw(drawStencilTechnique, collectTransparentElements);\n            \n            if (!MyRenderConstants.RenderQualityProfile.ForwardRender)\n            {\n                //MyCamera.ResetClipPlanes(true);\n\n                // Need to clear only depth\n                //m_device.Clear(ClearFlags.ZBuffer, new ColorBGRA(0), 1, 0);\n            }\n            else\n            {\n                BlendState.Opaque.Apply();\n            }\n            DepthStencilState.Default.Apply();\n        }\n\n        private static void DrawScene_OneLodLevel_Draw(bool drawStencilTechnique, bool collectTransparentElements)\n        {\n            if (CurrentRenderSetup.RenderElementsToDraw != null)\n            {\n                //Draw render elements\n                m_renderProfiler.StartProfilingBlock(\"CurrentRenderSetup.RenderElementsToDraw\");\n                int ibChangesStats;\n                DrawRenderElements(CurrentRenderSetup.RenderElementsToDraw, false, out ibChangesStats);\n                m_renderProfiler.EndProfilingBlock();\n            }\n            else\n            {\n                // Render are models listed for draw\n                m_renderProfiler.StartProfilingBlock(\"DrawModels()\");\n                DrawModelsLod(GetCurrentLodDrawPass(), drawStencilTechnique, collectTransparentElements);\n                m_renderProfiler.EndProfilingBlock();\n            }\n        }\n\n        internal static void DrawScene_Transparent()\n        {\n            int ibChangesStats;\n            //Draw sorted render elements\n            if (CurrentRenderSetup.TransparentRenderElementsToDraw != null)\n                DrawRenderElements(CurrentRenderSetup.TransparentRenderElementsToDraw, false, out ibChangesStats);\n            else\n                DrawRenderElements(m_transparentRenderElements, false, out ibChangesStats);\n        }\n\n        #endregion\n\n        #region Modules\n\n        /// <summary>\n        /// Register renderer event handler to make specific behaviour in several render stage\n        /// </summary>\n        /// <param name=\"displayName\"></param>\n        /// <param name=\"handler\"></param>\n        /// <param name=\"renderStage\"></param>\n        /// <param name=\"priority\"></param>\n        public static void RegisterRenderModule(MyRenderModuleEnum module, string displayName, DrawEventHandler handler, MyRenderStage renderStage)\n        {\n            RegisterRenderModule(module, displayName, handler, renderStage, MyRenderConstants.DEFAULT_RENDER_MODULE_PRIORITY, true);\n        }\n\n        public static void RegisterRenderModule(MyRenderModuleEnum module, string displayName, DrawEventHandler handler, MyRenderStage renderStage, bool enabled)\n        {\n            RegisterRenderModule(module, displayName, handler, renderStage, MyRenderConstants.DEFAULT_RENDER_MODULE_PRIORITY, enabled);\n        }\n\n        /// <summary>\n        /// Register renderer event handler to make specific behaviour in several render stage\n        /// </summary>\n        /// <param name=\"displayName\"></param>\n        /// <param name=\"handler\"></param>\n        /// <param name=\"renderStage\"></param>\n        /// <param name=\"priority\">0 - first item, higher number means lower priority</param>\n        public static void RegisterRenderModule(MyRenderModuleEnum module, string displayName, DrawEventHandler handler, MyRenderStage renderStage, int priority, bool enabled)\n        {\n            Debug.Assert(!m_renderModules[(int)renderStage].Any(x => x.Name == module));\n\n            m_renderModules[(int)renderStage].Add(new MyRenderModuleItem { Name = module, DisplayName = displayName, Priority = priority, Handler = handler, Enabled = enabled });\n            m_renderModules[(int)renderStage].Sort((p1, p2) => p1.Priority.CompareTo(p2.Priority));\n        }\n\n        /// <summary>\n        /// Removes render module from the list\n        /// </summary>\n        /// <param name=\"name\"></param>\n        public static void UnregisterRenderModule(MyRenderModuleEnum name)\n        {\n            for (int i = 0; i < m_renderModules.Length; i++)\n            {\n                List<MyRenderModuleItem> modules = m_renderModules[i];\n                foreach (MyRenderModuleItem module in modules)\n                {\n                    if (module.Name == name)\n                    {\n                        modules.Remove(module);\n                        return;\n                    }\n                }\n            }\n        }\n\n        /// <summary>\n        /// Returns enumerator for render modules of current render stage\n        /// </summary>\n        /// <param name=\"renderStage\"></param>\n        /// <returns></returns>\n        public static List<MyRenderModuleItem> GetRenderModules(MyRenderStage renderStage)\n        {\n            return m_renderModules[(int)renderStage];\n        }\n\n\n        public static bool IsModuleEnabled(MyRenderStage stage, MyRenderModuleEnum module)\n        {\n            if (!(CurrentRenderSetup.EnabledRenderStages == null || CurrentRenderSetup.EnabledRenderStages.Contains(stage)))\n                return false;\n\n            List<MyRenderModuleItem> renderModules = m_renderModules[(int)stage];\n            if (!(CurrentRenderSetup.EnabledModules == null || CurrentRenderSetup.EnabledModules.Contains(module)))\n                return false;\n\n            foreach (var moduleItem in renderModules)\n            {\n                if (moduleItem.Name == module)\n                {\n                    return moduleItem.Enabled;\n                }\n            }\n            return false;\n        }\n\n        private static void DrawRenderModules(MyRenderStage renderStage)\n        {\n            if (CurrentRenderSetup.EnabledRenderStages == null || CurrentRenderSetup.EnabledRenderStages.Contains(renderStage))\n            {\n                List<MyRenderModuleItem> renderModules = m_renderModules[(int)renderStage];\n                foreach (MyRenderModuleItem moduleItem in renderModules)\n                {\n                    if (moduleItem.Enabled && (CurrentRenderSetup.EnabledModules == null || CurrentRenderSetup.EnabledModules.Contains(moduleItem.Name)))\n                    {\n                        m_renderProfiler.StartProfilingBlock(moduleItem.DisplayName);\n                        moduleItem.Handler();\n                        m_renderProfiler.EndProfilingBlock();\n                    }\n                }\n            }\n        }\n\n\n        #endregion\n\n        #region Prepare for draw\n\n        static int OCCLUSION_INTERVAL = 4;\n\n        internal static void PrepareRenderObjectsForDraw()\n        {\n            if (CurrentRenderSetup.RenderElementsToDraw != null)\n                return;\n\n            m_entitiesToDebugDraw.Clear();\n            m_debugRenderObjectListForDrawLOD0.Clear();\n            m_debugRenderObjectListForDrawLOD1.Clear();\n\n            //TODO: Temporary solution, will be removed when rendering will have its own subdivision.\n            //For now it is needed because of smallship reflectors (billboards)\n            //Comment by Marek: I think we need to increase bbox of ship (due to reflectors) and not bbox of camera.\n            //m_cameraFrustum = MyCamera.BoundingBox;\n            //m_cameraFrustum.Max += Vector3.One * MyReflectorConstants.LONG_REFLECTOR_BILLBOARD_LENGTH;\n            //m_cameraFrustum.Min -= Vector3.One * MyReflectorConstants.LONG_REFLECTOR_BILLBOARD_LENGTH;\n\n\n            Matrix optProjection = Matrix.CreatePerspectiveFieldOfView(MyCamera.FovWithZoom, MyCamera.AspectRatio, MyCamera.NEAR_PLANE_DISTANCE, CurrentRenderSetup.LodTransitionBackgroundEnd.Value);\n            m_cameraFrustum.Matrix = MyCamera.ViewMatrix * optProjection;\n            m_cameraFrustumBox = new BoundingBox(new Vector3(float.PositiveInfinity), new Vector3(float.NegativeInfinity));\n            BoundingBoxHelper.AddFrustum(ref m_cameraFrustum, ref m_cameraFrustumBox);\n            m_cameraPosition = MyCamera.Position;\n            m_cameraZoomDivider = MyCamera.ZoomDivider;\n\n            m_cameraFrustumBox.Max += Vector3.One * MyReflectorConstants.LONG_REFLECTOR_BILLBOARD_LENGTH;\n            m_cameraFrustumBox.Min -= Vector3.One * MyReflectorConstants.LONG_REFLECTOR_BILLBOARD_LENGTH;\n\n            if (EnableEntitiesPrepareInBackground && m_currentSetup.CallerID.Value == MyRenderCallerEnum.Main)\n            {\n                WaitUntilEntitiesPrepared();\n\n                m_renderObjectListForDraw.Clear();\n                m_renderObjectListForDraw.AddRange(m_renderObjectListForDrawMain);\n                \n                m_cullObjectListForDraw.Clear();\n                m_cullObjectListForDraw.AddRange(m_cullObjectListForDrawMain);\n                \n                m_renderOcclusionQueries.Clear();\n                m_renderOcclusionQueries.AddRange(m_renderOcclusionQueriesMain);\n            }\n            else\n            {\n                MyPerformanceCounter.PerCameraDraw.EntitiesOccluded = 0;\n                PrepareEntitiesForDraw(ref m_cameraFrustum, m_cameraPosition, m_cameraZoomDivider, MyOcclusionQueryID.MAIN_RENDER, m_renderObjectListForDraw, m_cullObjectListForDraw, m_renderOcclusionQueries, ref MyPerformanceCounter.PerCameraDraw.EntitiesOccluded);\n            }\n        }\n\n\n        internal static void PrepareEntitiesForDraw(ref BoundingBox box, MyOcclusionQueryID queryID, List<MyElement> renderObjectListForDraw, List<MyOcclusionQueryIssue> renderOcclusionQueries, ref int occludedItemsStats)\n        {\n            m_renderProfiler.StartProfilingBlock(\"PrepareEntitiesForDraw()\");\n\n            //Process only big cull object for queries\n            renderOcclusionQueries.Clear();\n\n            m_cullingStructure.OverlapAllBoundingBox(ref box, m_cullObjectListForDraw);\n\n            PrepareObjectQueries(queryID, m_cullObjectListForDraw, renderOcclusionQueries, ref occludedItemsStats);\n\n            renderObjectListForDraw.Clear();\n\n            m_renderProfiler.StartProfilingBlock(\"m_prunningStructure.OverlapAllBoundingBox\");\n            m_prunningStructure.OverlapAllBoundingBox(ref box, renderObjectListForDraw);\n\n            foreach (MyCullableRenderObject cullableObject in m_cullObjectListForDraw)\n            {\n                cullableObject.CulledObjects.OverlapAllBoundingBox(ref box, renderObjectListForDraw, 0, false);\n            }\n\n            m_renderProfiler.EndProfilingBlock();\n\n            m_renderProfiler.EndProfilingBlock();\n        }\n\n\n        internal static void PrepareEntitiesForDraw(ref BoundingFrustum frustum, Vector3 cameraPosition, float cameraZoomDivider, MyOcclusionQueryID queryID, List<MyElement> renderObjectListForDraw, List<MyElement> cullObjectListForDraw, List<MyOcclusionQueryIssue> renderOcclusionQueries, ref int occludedItemsStats)\n        {\n            m_renderProfiler.StartProfilingBlock(\"PrepareEntitiesForDrawFr()\");\n                 \n            if (queryID != MyOcclusionQueryID.MAIN_RENDER)\n            {\n                m_shadowPrunningStructure.OverlapAllFrustum(ref frustum, renderObjectListForDraw);\n                m_renderProfiler.EndProfilingBlock();\n                return;\n            }      \n\n            m_renderProfiler.StartProfilingBlock(\"m_cullingStructure.OverlapAllFrustum\");\n            m_cullingStructure.OverlapAllFrustum(ref frustum, cullObjectListForDraw);\n            m_renderProfiler.EndProfilingBlock();\n\n            if (renderOcclusionQueries != null)\n            {\n                //Process only big cull object for queries\n                renderOcclusionQueries.Clear();\n\n                m_renderProfiler.StartProfilingBlock(\"PrepareObjectQueries\");\n                PrepareObjectQueries(queryID, cullObjectListForDraw, renderOcclusionQueries, ref occludedItemsStats);\n                m_renderProfiler.EndProfilingBlock();\n            }\n\n            renderObjectListForDraw.Clear();\n\n            m_renderProfiler.StartProfilingBlock(\"m_prunningStructure.OverlapAllFrustum\");\n            m_prunningStructure.OverlapAllFrustum(ref frustum, renderObjectListForDraw);\n            //AssertRenderObjects(renderObjectListForDraw);\n            m_renderProfiler.EndProfilingBlock();\n\n\n            m_renderProfiler.StartProfilingBlock(\"Get from cullobjects - part 1\");\n\n            //int i = 1;\n\n            if (queryID == MyOcclusionQueryID.MAIN_RENDER)\n            {\n                foreach (MyCullableRenderObject cullableObject in cullObjectListForDraw)\n                {\n                    if (frustum.Contains(cullableObject.GetWorldSpaceAABB()) == MinerWarsMath.ContainmentType.Contains)\n                    {\n                        cullableObject.CulledObjects.GetAll(renderObjectListForDraw, false);\n                    }\n                    else\n                    {\n                        cullableObject.CulledObjects.OverlapAllFrustum(ref frustum, renderObjectListForDraw, false);\n                      //  i++;\n                    } \n\n\n\n\n                    //AssertRenderObjects(renderObjectListForDraw);\n                    //BoundingBox aabb = new BoundingBox(new Vector3(float.MinValue), new Vector3(float.MaxValue));\n                    //cullableObject.CulledObjects.OverlapAllBoundingBox(ref aabb, renderObjectListForDraw, false);\n                    //cullableObject.CulledObjects.GetAll(renderObjectListForDraw, false);                \n                }\n            }\n            else\n            {\n                foreach (MyCullableRenderObject cullableObject in cullObjectListForDraw)\n                {\n                    if (frustum.Contains(cullableObject.GetWorldSpaceAABB()) == MinerWarsMath.ContainmentType.Contains)\n                    {\n                        cullableObject.CulledObjects.GetAll(renderObjectListForDraw, false);\n                    }\n                    else\n                    {\n                        cullableObject.CulledObjects.OverlapAllFrustum(ref frustum, renderObjectListForDraw, false);\n                    }\n\n                    //cullableObject.CulledObjects.OverlapAllFrustum(ref frustum, renderObjectListForDraw, false);\n                    //cullableObject.CulledObjects.GetAll(renderObjectListForDraw, false);                \n                }\n            }\n\n            m_renderProfiler.EndProfilingBlock();\n\n            m_renderProfiler.StartProfilingBlock(\"Get from cullobjects - part 2\");\n                \n            int c = 0;\n\n            if (queryID == MyOcclusionQueryID.MAIN_RENDER)\n            {\n                //int ii = 0;\n                while (c < renderObjectListForDraw.Count)\n                {\n                    MyRenderObject ro = renderObjectListForDraw[c] as MyRenderObject;\n                    if (!ro.SkipIfTooSmall)\n                    {\n                        c++;\n                        continue;\n                    }\n                          \n                    Vector3 entityPosition = ro.Entity.GetPosition();\n                    \n                    Vector3.Distance(ref cameraPosition, ref entityPosition, out ro.Distance);\n                    ro.Distance = MyCamera.GetDistanceWithFOV(ro.Distance);\n\n                    float cullRatio = ro.Entity is MyStaticAsteroid ? 75 : MyRenderConstants.DISTANCE_CULL_RATIO;\n\n                    if (ro.Entity is MinerWars.AppCode.Game.Entities.SubObjects.MyPrefabLargeWeapon ||\n                        ro.Entity is MinerWars.AppCode.Game.Entities.Weapons.MyLargeShipBarrelBase ||\n                        ro.Entity is MinerWars.AppCode.Game.Entities.Weapons.MyLargeShipGunBase)\n                    {\n                        cullRatio = 250;\n                    }\n\n                    if (ro.Entity.WorldVolume.Radius < ro.Distance / cullRatio)\n                    {\n                        renderObjectListForDraw.RemoveAtFast(c);\n                        continue;\n                    } \n\n\n                                      \n                    //float f = ro.Distance / (2 * (float)Math.Tan(Math.PI * MyCamera.FieldOfView));\n\n                    //if (f > ro.Entity.LocalVolume.Radius * 100)\n                    //{\n                    //    renderObjectListForDraw.RemoveAtFast(c);\n                    //    continue;\n                    //}\n\n                    c++;\n                }\n            }\n\n            m_renderProfiler.EndProfilingBlock();\n\n            m_renderProfiler.EndProfilingBlock();\n        }\n\n        [Conditional(\"DEBUG\")]\n        static void AssertRenderObjects(List<MyElement> elements)\n        {\n            foreach (var ro in elements)\n            {\n                Debug.Assert(!(ro as MyRenderObject).Entity.NearFlag);\n            }\n        }\n\n        static void PrepareObjectQueries(MyOcclusionQueryID queryID, List<MyElement> cullObjectListForDraw, List<MyOcclusionQueryIssue> renderOcclusionQueries, ref int occludedItemsStats)\n        {\n            if (queryID != MyOcclusionQueryID.MAIN_RENDER)\n                return;\n\n            if (!EnableHWOcclusionQueries)\n                return;\n\n            if (!m_currentSetup.EnableOcclusionQueries)\n                return;\n\n            int c = 0;\n            while (c < cullObjectListForDraw.Count)\n            {\n                MyCullableRenderObject cullableRenderObject = (MyCullableRenderObject)cullObjectListForDraw[c];\n\n                bool isVisibleFromQuery = false;\n                MyOcclusionQueryIssue query = cullableRenderObject.GetQuery(queryID);\n                if (query.OcclusionQueryIssued)\n                {\n                    isVisibleFromQuery = query.OcclusionQueryVisible;\n\n                    bool isComplete = query.OcclusionQuery.IsComplete;\n                    \n                    if (isComplete)\n                    {\n                        query.OcclusionQueryIssued = false;\n\n                        isVisibleFromQuery = query.OcclusionQuery.PixelCount > 0;\n\n                        //Holy ATI shit\n                        if (query.OcclusionQuery.PixelCount < 0)\n                        {\n                            isVisibleFromQuery = true;\n                        }\n\n                        query.OcclusionQueryVisible = isVisibleFromQuery;\n\n                        \n                        //if (m_renderCounter % OCCLUSION_INTERVAL == cullableRenderObject.RenderCounter)\n                        if (!query.OcclusionQueryVisible)\n                        {\n                            renderOcclusionQueries.Add(query);\n                        } \n                    }\n\n                    if (!isVisibleFromQuery)\n                    {\n                        occludedItemsStats += cullableRenderObject.EntitiesContained;\n                        cullObjectListForDraw.RemoveAtFast(c);\n                        continue;\n                    }\n                }\n                else\n                {\n                    if (query.OcclusionQueryVisible && m_renderCounter % OCCLUSION_INTERVAL == cullableRenderObject.RenderCounter)\n                    {\n                        renderOcclusionQueries.Add(cullableRenderObject.GetQuery(queryID));\n                    }\n\n                    if (!query.OcclusionQueryVisible)\n                    {\n                        renderOcclusionQueries.Add(cullableRenderObject.GetQuery(queryID));\n\n                        occludedItemsStats += cullableRenderObject.EntitiesContained;\n                        cullObjectListForDraw.RemoveAtFast(c);\n                        continue;\n                    }\n                }\n\n                c++;\n            }\n        }\n\n        #endregion\n\n        #endregion\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Render/MyRender-Lights.cs",
    "content": "﻿#region Using\n\nusing System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\n\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Effects;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Lights;\nusing MinerWars.AppCode.Game.Managers;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Render.EnvironmentMap;\n\nusing SharpDX;\nusing SharpDX.Direct3D9;\nusing SharpDX.Toolkit;\nusing SharpDX.Toolkit.Graphics;\n\n#endregion\n\nnamespace MinerWars.AppCode.Game.Render\n{\n    using Vector2 = MinerWarsMath.Vector2;\n    using Vector3 = MinerWarsMath.Vector3;\n    using Vector4 = MinerWarsMath.Vector4;\n    using Rectangle = MinerWarsMath.Rectangle;\n    using Matrix = MinerWarsMath.Matrix;\n    using Color = MinerWarsMath.Color;\n    using BoundingBox = MinerWarsMath.BoundingBox;\n    using BoundingSphere = MinerWarsMath.BoundingSphere;\n    using BoundingFrustum = MinerWarsMath.BoundingFrustum;\n\n    static partial class MyRender\n    {\n        #region Lights\n\n        static public void UpdateForwardLights()\n        {\n            const float RADIUS_FOR_LIGHTS = 400;\n\n            BoundingSphere sphere = new BoundingSphere(MyCamera.Position, RADIUS_FOR_LIGHTS);\n\n            GetRenderProfiler().StartProfilingBlock(\"Setup lights\");\n\n            MyEffectModelsDNS effectDNS = (MyEffectModelsDNS)GetEffect(MyEffects.ModelDNS);\n            MyLights.UpdateEffect(effectDNS.DynamicLights, ref sphere, true);\n            MyLights.UpdateEffectReflector(effectDNS.Reflector, true);\n\n            MyEffectVoxels effectVoxels = (MyEffectVoxels)GetEffect(MyEffects.VoxelsMRT);\n            MyLights.UpdateEffect(effectVoxels.DynamicLights, ref sphere, true);\n            MyLights.UpdateEffectReflector(effectVoxels.Reflector, true);\n\n            MyEffectDecals effectDecals = (MyEffectDecals)GetEffect(MyEffects.Decals);\n            MyLights.UpdateEffect(effectDecals.DynamicLights, ref sphere, true);\n            MyLights.UpdateEffectReflector(effectDecals.Reflector, true);\n\n            GetRenderProfiler().EndProfilingBlock(); //Setup lights\n        }\n\n\n        static void RenderSpotLight(MyLightRenderElement lightElement, MyEffectPointLight effectPointLight)\n        {\n            MyLight light = lightElement.Light;\n\n            Matrix lightViewProjectionShadow = Matrix.Identity;\n\n            // Always cull clockwise (render inner parts of object), depth test is done in PS using light radius and cone angle\n            RasterizerState.CullClockwise.Apply();\n            DepthStencilState.None.Apply();\n\n            //m_device.BlendState = BlendState.Additive;\n            //Need to use max because of overshinning places where multiple lights shine\n            MyStateObjects.Light_Combination_BlendState.Apply();\n\n            if (lightElement.RenderShadows && lightElement.ShadowMap != null)\n            {\n                m_spotShadowRenderer.SetupSpotShadowBaseEffect(effectPointLight, lightElement.ShadowLightViewProjection, lightElement.ShadowMap);\n            }\n            effectPointLight.SetNearSlopeBiasDistance(4);\n\n            effectPointLight.SetLightPosition(light.Position);\n            effectPointLight.SetLightIntensity(light.Intensity);\n            effectPointLight.SetSpecularLightColor(light.SpecularColor);\n            effectPointLight.SetFalloff(light.Falloff);\n\n            effectPointLight.SetLightViewProjection(lightElement.View * lightElement.Projection);\n            effectPointLight.SetReflectorDirection(light.ReflectorDirection);\n            effectPointLight.SetReflectorConeMaxAngleCos(1 - light.ReflectorConeMaxAngleCos);\n            effectPointLight.SetReflectorColor(light.ReflectorColor);\n            effectPointLight.SetReflectorRange(light.ReflectorRange);\n            effectPointLight.SetReflectorIntensity(light.ReflectorIntensity);\n            effectPointLight.SetReflectorTexture(light.ReflectorTexture);\n            effectPointLight.SetReflectorFalloff(light.ReflectorFalloff);\n\n            if (lightElement.RenderShadows)\n                effectPointLight.SetTechnique(effectPointLight.DefaultSpotShadowTechnique);\n            else\n                effectPointLight.SetTechnique(effectPointLight.DefaultSpotTechnique);\n\n            MySimpleObjectDraw.DrawConeForLight(effectPointLight, lightElement.World);\n        }\n\n\n        static void RenderSpotLights(List<MyLightRenderElement> spotLightElements, MyEffectPointLight effectPointLight)\n        {\n            if (spotLightElements.Count == 0)\n            {\n                return;\n            }\n\n            spotLightElements.Sort(MyLightRenderElement.SpotComparer); // Sort by texture\n            var lastTexture = spotLightElements[0].Light.ReflectorTexture;\n\n            m_renderProfiler.StartProfilingBlock(\"RenderSpotLightList\");\n            foreach (var spotElement in spotLightElements)\n            {\n                RenderSpotLight(spotElement, effectPointLight);\n                lastTexture = spotElement.Light.ReflectorTexture;\n            }\n            m_renderProfiler.EndProfilingBlock();\n        }\n\n        private static void AddSpotLightRenderElement(MyLight light)\n        {\n            float cosAngle = 1 - light.ReflectorConeMaxAngleCos;\n\n            // Near clip is 5 to prevent cockpit bugs\n            float nearClip = 5;\n            float c = nearClip / cosAngle;\n\n            // 'a' is \"screen size\" at near clip (a, c and nearclip makes right triangle)\n            float a = (float)Math.Sqrt(c * c - nearClip * nearClip);\n            if (nearClip < light.ReflectorRange)\n            {\n                Matrix lightView = Matrix.CreateLookAt(light.Position, light.Position + light.ReflectorDirection, light.ReflectorUp);\n\n                float distanceSquared = Vector3.DistanceSquared(MyCamera.Position, light.Position);\n\n                bool drawShadows = DrawPlayerLightShadow || (PlayerLight != light);\n                drawShadows &= distanceSquared < light.ShadowDistance * light.ShadowDistance * MyRenderConstants.RenderQualityProfile.SpotShadowsMaxDistanceMultiplier;\n\n                //drawShadows &= distanceSquared < 200*200 * MyRenderConstants.RenderQualityProfile.SpotShadowsMaxDistanceMultiplier;\n\n                Matrix lightProjection = Matrix.CreatePerspectiveOffCenter(-a, a, -a, a, nearClip, light.ReflectorRange);\n\n                bool renderShadows = EnableSpotShadows && MyRender.CurrentRenderSetup.EnableSmallLightShadows.Value && drawShadows ;\n\n                MyLightRenderElement lightElement = null;\n                lightElement = m_spotLightsPool.Allocate(true);\n                Debug.Assert(lightElement != null, \"Out of lights, increase pool\");\n                if (lightElement != null)\n                {\n                    lightElement.Light = light;\n                    lightElement.World = light.SpotWorld;\n                    lightElement.View = lightView;\n                    lightElement.Projection = lightProjection;\n                    lightElement.RenderShadows = renderShadows;\n                    lightElement.BoundingBox = light.SpotBoundingBox;\n                    lightElement.UseReflectorTexture = (light.LightOwner == MyLight.LightOwnerEnum.SmallShip);\n\n                    if (renderShadows)\n                    {\n                        Matrix lightViewProjectionShadow = m_spotShadowRenderer.CreateViewProjectionMatrix(lightView, a, nearClip, light.ReflectorRange);\n                        lightElement.ShadowLightViewProjection = lightViewProjectionShadow;\n                    }\n                    m_spotLightRenderElements.Add(lightElement);\n                }\n            }\n        }\n\n        private static void PrepareLights()\n        {\n            m_renderProfiler.StartProfilingBlock(\"Prepare lights\");\n\n            // Select small lights and do frustum check\n            if (MyRender.CurrentRenderSetup.EnableSmallLights.Value)\n            {\n                List<MyLight> usedLights = null;\n                if (CurrentRenderSetup.LightsToUse == null)\n                {\n                    var frustum = MyCamera.GetBoundingFrustum();\n                    MyLights.UpdateSortedLights(ref frustum);\n                    usedLights = MyLights.GetSortedLights();\n                }\n                else\n                {\n                    usedLights = CurrentRenderSetup.LightsToUse;\n                }\n\n                m_pointLights.Clear();\n                m_hemiLights.Clear();\n                m_spotLightRenderElements.Clear();\n                m_spotLightsPool.DeallocateAll();\n                foreach (var light in usedLights)\n                {\n                    if (light.LightOn) // Light is on\n                    {\n                        if ((light.LightType & MyLight.LightTypeEnum.PointLight) != 0 && (light.LightType & MyLight.LightTypeEnum.Hemisphere) == 0) // Light is point\n                        {\n                            if (light.IsPointLightInFrustum())\n                            {\n                                m_pointLights.Add(light);\n                            }\n                        }\n                        if ((light.LightType & MyLight.LightTypeEnum.Hemisphere) != 0) // Light is hemi\n                        {\n                            if (light.IsPointLightInFrustum())\n                            {\n                                m_hemiLights.Add(light);\n                            }\n                        }\n                        if ((light.LightType & MyLight.LightTypeEnum.Spotlight) != 0 && light.ReflectorOn) // Light is spot\n                        {\n                            if (light.IsSpotLightInFrustum())\n                            {\n                                AddSpotLightRenderElement(light);\n                            }\n                        }\n                    }\n                }\n            }\n\n            m_renderProfiler.EndProfilingBlock();\n        }\n\n        private static void RenderSpotShadows()\n        {\n            // Render spot shadows (for first n spot lights, lights are sorted by camera distance)\n            if (MyRender.CurrentRenderSetup.EnableSmallLights.Value && MyRender.EnableSpotShadows)\n            {\n                m_renderProfiler.StartProfilingBlock(\"Render spot shadows\");\n                int currentShadowTarget = 0;\n                foreach (var spotElement in m_spotLightRenderElements)\n                {\n                    if (currentShadowTarget >= m_spotShadowRenderTargets.Length)\n                    {\n                        spotElement.ShadowMap = null;\n                        continue;\n                    }\n                    if (spotElement.RenderShadows)\n                    {\n                        Texture shadowMapRt = (Texture)m_spotShadowRenderTargets[currentShadowTarget];\n                        Texture shadowMapDepthRt = (Texture)m_spotShadowRenderTargetsZBuffers[currentShadowTarget];\n                        m_spotShadowRenderer.RenderForLight(spotElement.ShadowLightViewProjection, ref spotElement.BoundingBox, shadowMapRt, shadowMapDepthRt, currentShadowTarget);\n                        spotElement.ShadowMap = shadowMapRt;\n                        currentShadowTarget++;\n                    }\n                }\n                m_renderProfiler.EndProfilingBlock();\n            }\n        }\n\n        internal static void RenderLights()\n        {\n            PrepareLights();\n\n            RenderSpotShadows();\n\n            m_renderProfiler.StartProfilingBlock(\"Render lights\");\n            MyMinerGame.SetRenderTarget(GetRenderTarget(MyRenderTargets.Auxiliary1), null, SetDepthTargetEnum.RestoreDefault);\n            MyMinerGame.Static.GraphicsDevice.Clear(ClearFlags.Target, new ColorBGRA(0.0f), 1, 0);\n\n            SetCorrectViewportSize();\n\n            if (MyRender.CurrentRenderSetup.EnableSmallLights.Value)\n            {\n                MyEffectPointLight effectPointLight = (MyEffectPointLight) MyRender.GetEffect(MyEffects.PointLight);\n                Texture diffuseRT = MyRender.GetRenderTarget(MyRenderTargets.Diffuse);\n                effectPointLight.SetNormalsRT(MyRender.GetRenderTarget(MyRenderTargets.Normals));\n                effectPointLight.SetDiffuseRT(diffuseRT);\n                effectPointLight.SetDepthsRT(MyRender.GetRenderTarget(MyRenderTargets.Depth));\n                effectPointLight.SetHalfPixel(diffuseRT.GetLevelDescription(0).Width, diffuseRT.GetLevelDescription(0).Height);\n                effectPointLight.SetScale(GetScaleForViewport(diffuseRT));\n\n                Matrix invViewProjMatrix = Matrix.Invert(MyCamera.ViewProjectionMatrix);\n                Matrix invViewMatrix = Matrix.Invert(MyCamera.ViewMatrix);\n\n                effectPointLight.SetCameraPosition(MyCamera.Position);\n                effectPointLight.SetViewMatrix(MyCamera.ViewMatrix);\n                effectPointLight.SetInvViewMatrix(invViewMatrix);\n\n                DepthStencilState.None.Apply();\n                MyStateObjects.Light_Combination_BlendState.Apply();\n\n                //Render each light with a model specific to the light\n                m_renderProfiler.StartProfilingBlock(\"PointLight\");\n\n                var cullRationSq = MyRenderConstants.DISTANCE_LIGHT_CULL_RATIO * MyRenderConstants.DISTANCE_LIGHT_CULL_RATIO;\n                          \n                effectPointLight.SetTechnique(effectPointLight.DefaultTechnique);\n                foreach (MyLight light in m_pointLights)\n                {\n                    float distanceSq = Vector3.DistanceSquared(MyCamera.Position, light.PositionWithOffset);\n                    var hasVolumetricGlare = light.GlareOn && light.Glare.Type == MyLightGlare.GlareTypeEnum.Distant;\n                    var isTooFarAway = (light.Range * light.Range) < (distanceSq / cullRationSq);\n\n                    if (!isTooFarAway)\n                    {\n                        // Always cull clockwise (render inner parts of object), depth test is done is PS using light radius\n                        RasterizerState.CullClockwise.Apply();\n\n                        effectPointLight.SetLightPosition(light.PositionWithOffset);\n                        effectPointLight.SetLightIntensity(light.Intensity);\n                        effectPointLight.SetSpecularLightColor(light.SpecularColor);\n                        effectPointLight.SetFalloff(light.Falloff);\n\n                        effectPointLight.SetLightRadius(light.Range);\n                        effectPointLight.SetReflectorTexture(light.ReflectorTexture);\n                        effectPointLight.SetLightColor(new Vector3(light.Color.X, light.Color.Y, light.Color.Z));\n                        effectPointLight.SetTechnique(effectPointLight.DefaultTechnique);\n                        MySimpleObjectDraw.DrawSphereForLight(effectPointLight, ref light.PositionWithOffset, light.Range, ref MyMath.Vector3One, 1);\n                        MyPerformanceCounter.PerCameraDraw.LightsCount++;\n                    }\n                    if(!isTooFarAway || hasVolumetricGlare)\n                        light.Draw();\n                }\n\n\n                m_renderProfiler.EndProfilingBlock();\n\n\n                m_renderProfiler.StartProfilingBlock(\"Hemisphere\");\n\n                foreach (MyLight light in m_hemiLights)\n                {\n                    // compute bounding box\n                    //Vector3 center = light.Position;// - light.Range * new Vector3(0,1,0);\n                    //Vector3 extend = new Vector3(light.Range, light.Range, light.Range);\n                    //m_lightBoundingBox.Min = center - extend;\n                    //m_lightBoundingBox.Max = center + extend;\n                    // Always cull clockwise (render inner parts of object), depth test is done is PS using light radius\n                    if (Vector3.Dot(light.ReflectorDirection, MyCamera.Position - light.Position) > 0 && light.PointBoundingSphere.Contains(MyCamera.Position) == MinerWarsMath.ContainmentType.Contains)\n                    {\n                        RasterizerState.CullNone.Apply(); //zevnitr\n                    }\n                    else\n                    {\n                        RasterizerState.CullCounterClockwise.Apply(); //zvenku\n                    }\n\n                    effectPointLight.SetLightPosition(light.Position);\n                    effectPointLight.SetLightIntensity(light.Intensity);\n                    effectPointLight.SetSpecularLightColor(light.SpecularColor);\n                    effectPointLight.SetFalloff(light.Falloff);\n\n                    effectPointLight.SetLightRadius(light.Range);\n                    effectPointLight.SetReflectorTexture(light.ReflectorTexture);\n                    effectPointLight.SetLightColor(new Vector3(light.Color.X, light.Color.Y, light.Color.Z));\n                    effectPointLight.SetTechnique(effectPointLight.DefaultHemisphereTechnique);\n\n                    Matrix world = Matrix.CreateScale(light.Range) * Matrix.CreateWorld(light.Position, light.ReflectorDirection, light.ReflectorUp);\n                    MySimpleObjectDraw.DrawHemisphereForLight(effectPointLight, ref world, ref MyMath.Vector3One, 1);\n                    light.Draw();\n\n                    MyPerformanceCounter.PerCameraDraw.LightsCount++;\n                }                \n                m_renderProfiler.EndProfilingBlock();\n\n\n                m_renderProfiler.StartProfilingBlock(\"Spotlight\");\n                RenderSpotLights(m_spotLightRenderElements, effectPointLight);\n\n                m_renderProfiler.EndProfilingBlock();\n\n                if (EnableSpectatorReflector && DrawSpectatorReflector && SpectatorReflector != null && SpectatorReflector.LightOn && SpectatorReflector.ReflectorOn)\n                {\n                    SpectatorReflector.ReflectorDirection = MyCamera.ForwardVector;\n                    SpectatorReflector.ReflectorUp = MyCamera.UpVector;\n                    SpectatorReflector.SetPosition(MyCamera.Position);\n\n                    effectPointLight.SetLightPosition(SpectatorReflector.Position);\n                    effectPointLight.SetReflectorTexture(null);\n                    effectPointLight.SetReflectorDirection(SpectatorReflector.ReflectorDirection);\n                    effectPointLight.SetReflectorConeMaxAngleCos(1 - SpectatorReflector.ReflectorConeMaxAngleCos);\n                    effectPointLight.SetReflectorColor(SpectatorReflector.ReflectorColor);\n                    effectPointLight.SetReflectorRange(SpectatorReflector.ReflectorRange);\n                    effectPointLight.SetCameraPosition(MyCamera.Position);\n\n                    // Special case, for camera reflector\n                    effectPointLight.SetReflectorIntensity(MyMinerShipConstants.MINER_SHIP_NEAR_REFLECTOR_INTENSITY * MySmallShip.ReflectorIntensityMultiplier);\n                    effectPointLight.SetReflectorFalloff(MyMinerShipConstants.MINER_SHIP_NEAR_REFLECTOR_FALLOFF);\n\n                    effectPointLight.SetTechnique(effectPointLight.DefaultSpotTechnique);\n                    MySimpleObjectDraw.DrawConeForLight(effectPointLight, SpectatorReflector.SpotWorld);\n\n\n                    // Always cull clockwise (render inner parts of object), depth test is done is PS using light radius\n                    RasterizerState.CullClockwise.Apply();\n\n                    effectPointLight.SetLightIntensity(MyMinerShipConstants.MINER_SHIP_NEAR_LIGHT_INTENSITY);\n                    effectPointLight.SetSpecularLightColor(Color.White.ToVector3());\n                    effectPointLight.SetFalloff(1.0f);\n\n                    effectPointLight.SetLightRadius(MyMinerShipConstants.MINER_SHIP_NEAR_LIGHT_RANGE);\n                    effectPointLight.SetLightColor(new Color(MyReflectorConstants.SHORT_REFLECTOR_LIGHT_COLOR).ToVector3());\n                    effectPointLight.SetTechnique(effectPointLight.DefaultSpotTechnique);\n\n                    MySimpleObjectDraw.DrawSphereForLight(effectPointLight, ref MyCamera.Position, MyMinerShipConstants.MINER_SHIP_NEAR_LIGHT_RANGE, ref MyMath.Vector3One, 1);\n                    MyPerformanceCounter.PerCameraDraw.LightsCount++;\n\n                }\n            }\n             \n            DepthStencilState.None.Apply();\n            RasterizerState.CullCounterClockwise.Apply();\n            \n            MyStateObjects.Sun_Combination_BlendState.Apply();\n\n            m_renderProfiler.StartProfilingBlock(\"Sun light\");\n\n            if (EnableSun && CurrentRenderSetup.EnableSun.Value)\n            {\n                //Sun light\n                MyEffectDirectionalLight effectDirectionalLight = MyRender.GetEffect(MyEffects.DirectionalLight) as MyEffectDirectionalLight;\n                Texture diffuseRTSun = MyRender.GetRenderTarget(MyRenderTargets.Diffuse);\n                effectDirectionalLight.SetNormalsRT(MyRender.GetRenderTarget(MyRenderTargets.Normals));\n                effectDirectionalLight.SetDiffuseRT(diffuseRTSun);\n                effectDirectionalLight.SetDepthsRT(MyRender.GetRenderTarget(MyRenderTargets.Depth));\n                effectDirectionalLight.SetHalfPixelAndScale(diffuseRTSun.GetLevelDescription(0).Width, diffuseRTSun.GetLevelDescription(0).Height, GetScaleForViewport(diffuseRTSun));\n\n                effectDirectionalLight.SetCameraMatrix(Matrix.Invert(MyCamera.ViewMatrix));\n\n                effectDirectionalLight.SetAmbientMinimumAndIntensity(new Vector4(AmbientColor * AmbientMultiplier, EnvAmbientIntensity));\n                effectDirectionalLight.SetTextureEnvironmentMain(MyEnvironmentMap.EnvironmentMainMap);\n                effectDirectionalLight.SetTextureEnvironmentAux(MyEnvironmentMap.EnvironmentAuxMap);\n                effectDirectionalLight.SetTextureAmbientMain(MyEnvironmentMap.AmbientMainMap);\n                effectDirectionalLight.SetTextureAmbientAux(MyEnvironmentMap.AmbientAuxMap);\n                effectDirectionalLight.SetTextureEnvironmentBlendFactor(MyEnvironmentMap.BlendFactor);\n                effectDirectionalLight.SetCameraPosition(MyCamera.Position);\n\n                //Set distance where no slope bias will be applied (because of cockpit artifacts)\n                effectDirectionalLight.SetNearSlopeBiasDistance(3);\n\n                effectDirectionalLight.ShowSplitColors(ShowCascadeSplits);\n                effectDirectionalLight.SetShadowBias(0.0001f * MyRenderConstants.RenderQualityProfile.ShadowBiasMultiplier);\n                effectDirectionalLight.SetSlopeBias(0.00002f);\n                effectDirectionalLight.SetSlopeCascadeMultiplier(20.0f); //100 makes artifacts in prefabs\n\n                MyRender.GetShadowRenderer().SetupShadowBaseEffect(effectDirectionalLight);\n\n                effectDirectionalLight.SetLightDirection(-m_sun.Direction); //*-1 because of shader opts\n                effectDirectionalLight.SetLightColorAndIntensity(new Vector3(m_sun.Color.X, m_sun.Color.Y, m_sun.Color.Z), m_sun.Intensity);\n                effectDirectionalLight.SetBacklightColorAndIntensity(new Vector3(m_sun.BackColor.X, m_sun.BackColor.Y, m_sun.BackColor.Z), m_sun.BackIntensity);\n                //m_sun.SpecularColor = {X:0,9137255 Y:0,6078432 Z:0,2078431} //nice yellow\n                effectDirectionalLight.SetSpecularLightColor(m_sun.SpecularColor);\n                effectDirectionalLight.EnableCascadeBlending(MyRenderConstants.RenderQualityProfile.EnableCascadeBlending);\n\n                effectDirectionalLight.SetFrustumCorners(MyRender.GetShadowRenderer().GetFrustumCorners());\n\n                effectDirectionalLight.SetEnableAmbientEnvironment(EnableEnvironmentMapAmbient && MyRenderConstants.RenderQualityProfile.EnableEnvironmentals && CurrentRenderSetup.EnableEnvironmentMapping.Value);\n                effectDirectionalLight.SetEnableReflectionEnvironment(EnableEnvironmentMapReflection && MyRenderConstants.RenderQualityProfile.EnableEnvironmentals && CurrentRenderSetup.EnableEnvironmentMapping.Value);\n\n                if (EnableShadows && MyRender.CurrentRenderSetup.ShadowRenderer != null)\n                    effectDirectionalLight.SetTechnique(effectDirectionalLight.DefaultTechnique);\n                else\n                    effectDirectionalLight.SetTechnique(effectDirectionalLight.DefaultWithoutShadowsTechnique);\n\n                MyGuiManager.GetFullscreenQuad().Draw(effectDirectionalLight);\n            }\n            m_renderProfiler.EndProfilingBlock();\n\n            // Blend in background\n            if (true) // blend background\n            {                  \n                m_renderProfiler.StartProfilingBlock(\"Blend background\");\n                if (MyFakes.RENDER_PREVIEWS_WITH_CORRECT_ALPHA)\n                {\n                    // for some reason the other option does not give 0 alpha for the background when rendering gui preview images\n                    MyStateObjects.Additive_NoAlphaWrite_BlendState.Apply();\n                }\n                else\n                {\n                    MyStateObjects.NonPremultiplied_NoAlphaWrite_BlendState.Apply();\n                    //BlendState.NonPremultiplied.Apply();\n                }\n                DepthStencilState.None.Apply();\n                RasterizerState.CullCounterClockwise.Apply();\n                         \n                MyEffectBlendLights effectBlendLights = MyRender.GetEffect(MyEffects.BlendLights) as MyEffectBlendLights;\n                Texture diffuseRT = GetRenderTarget(MyRenderTargets.Diffuse);\n                MyCamera.SetupBaseEffect(effectBlendLights, m_currentSetup.FogMultiplierMult);\n                effectBlendLights.SetDiffuseTexture(diffuseRT);\n                effectBlendLights.SetNormalTexture(GetRenderTarget(MyRenderTargets.Normals));\n                effectBlendLights.SetDepthTexture(GetRenderTarget(MyRenderTargets.Depth));\n                effectBlendLights.SetHalfPixel(diffuseRT.GetLevelDescription(0).Width, diffuseRT.GetLevelDescription(0).Height);\n                effectBlendLights.SetScale(GetScaleForViewport(diffuseRT));\n                effectBlendLights.SetBackgroundTexture(GetRenderTarget(MyRenderTargets.Auxiliary0));\n\n                effectBlendLights.SetTechnique(effectBlendLights.DefaultTechnique);\n\n                MyGuiManager.GetFullscreenQuad().Draw(effectBlendLights);\n                m_renderProfiler.EndProfilingBlock();\n\n                // Blend in emissive light, overwrite emissivity (alpha)\n                m_renderProfiler.StartProfilingBlock(\"Copy emisivity\");\n\n                if (MyPostProcessHDR.RenderHDRThisFrame())\n                    MyStateObjects.AddEmissiveLight_BlendState.Apply();\n                else\n                    MyStateObjects.AddEmissiveLight_NoAlphaWrite_BlendState.Apply();\n\n                effectBlendLights.SetTechnique(effectBlendLights.CopyEmissivityTechnique);\n                MyGuiManager.GetFullscreenQuad().Draw(effectBlendLights);\n\n\n                bool showDebugLighting = false;\n\n                if (ShowSpecularIntensity)\n                {\n                    effectBlendLights.SetTechnique(MyEffectBlendLights.Technique.OnlySpecularIntensity);\n                    showDebugLighting = true;\n                }\n                else\n                    if (ShowSpecularPower)\n                    {\n                        effectBlendLights.SetTechnique(MyEffectBlendLights.Technique.OnlySpecularPower);\n                        showDebugLighting = true;\n                    }\n                    else\n                        if (ShowEmissivity)\n                        {\n                            effectBlendLights.SetTechnique(MyEffectBlendLights.Technique.OnlyEmissivity);\n                            showDebugLighting = true;\n                        }\n                        else\n                            if (ShowReflectivity)\n                            {\n                                effectBlendLights.SetTechnique(MyEffectBlendLights.Technique.OnlyReflectivity);\n                                showDebugLighting = true;\n                            }\n\n                if (showDebugLighting)\n                {\n                    BlendState.Opaque.Apply();\n                    MyGuiManager.GetFullscreenQuad().Draw(effectBlendLights);\n                }\n\n                m_renderProfiler.EndProfilingBlock();\n            }\n\n            //TakeScreenshot(\"Accumulated_lights\", GetRenderTarget(MyRenderTargets.Lod0Depth), MyEffectScreenshot.ScreenshotTechniqueEnum.Default);\n            /*TakeScreenshot(\"EnvironmentMap_1\", GetRenderTargetCube(MyRenderTargets.EnvironmentCube), MyEffectScreenshot.ScreenshotTechniqueEnum.Default);\n            TakeScreenshot(\"EnvironmentMap_2\", GetRenderTargetCube(MyRenderTargets.EnvironmentCubeAux), MyEffectScreenshot.ScreenshotTechniqueEnum.Default);\n            TakeScreenshot(\"AmbientMap_1\", GetRenderTargetCube(MyRenderTargets.AmbientCube), MyEffectScreenshot.ScreenshotTechniqueEnum.Default);\n            TakeScreenshot(\"AmbientMap_2\", GetRenderTargetCube(MyRenderTargets.AmbientCubeAux), MyEffectScreenshot.ScreenshotTechniqueEnum.Default);\n              */\n            m_renderProfiler.EndProfilingBlock();\n        }\n\n        #endregion\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Render/MyRender-Management.cs",
    "content": "﻿#region Using\n\nusing System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Linq;\n//using System.Threading;\n\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Physics;\nusing MinerWars.AppCode.Game.Managers;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Utils;\nusing ParallelTasks;\n\nusing SharpDX;\nusing SharpDX.Direct3D9;\nusing SharpDX.Toolkit;\nusing SharpDX.Toolkit.Graphics;\n\n#endregion\n\nnamespace MinerWars.AppCode.Game.Render\n{\n    using Vector2 = MinerWarsMath.Vector2;\n    using Vector3 = MinerWarsMath.Vector3;\n    using Vector4 = MinerWarsMath.Vector4;\n    using Rectangle = MinerWarsMath.Rectangle;\n    using Matrix = MinerWarsMath.Matrix;\n    using Color = MinerWarsMath.Color;\n    using BoundingBox = MinerWarsMath.BoundingBox;\n    using BoundingSphere = MinerWarsMath.BoundingSphere;\n    using BoundingFrustum = MinerWarsMath.BoundingFrustum;\n\n    static partial class MyRender\n    {\n\n        #region Render object management\n\n        public static void PushRenderSetupAndApply(MyRenderSetup setup, ref MyRenderSetup storePreviousSetup)\n        {\n            PushRenderSetup(setup);\n            ApplySetupStack(storePreviousSetup);\n        }\n\n        public static void PopRenderSetupAndRevert(MyRenderSetup previousSetup)\n        {\n            PopRenderSetup();\n            ApplySetup(previousSetup);\n        }\n\n        public static void PushRenderSetup(MyRenderSetup setup)\n        {\n            m_renderSetupStack.Add(setup);\n        }\n\n        public static void PopRenderSetup()\n        {\n            m_renderSetupStack.RemoveAt(m_renderSetupStack.Count - 1);\n        }\n\n        public static void ApplyBackupSetup()\n        {\n            ApplySetup(m_backupSetup);\n        }\n\n        private static void ApplySetup(MyRenderSetup setup)\n        {\n            MyCamera.EnableZoom = setup.EnableZoom;\n            if (setup.CameraPosition.HasValue)\n            {\n                MyCamera.SetPosition(setup.CameraPosition.Value);\n            }\n            if (setup.AspectRatio.HasValue)\n            {\n                MyCamera.ForwardAspectRatio = setup.AspectRatio.Value;\n            }\n            if (setup.Fov.HasValue && MyCamera.FieldOfView != setup.Fov.Value)\n            {\n                MyCamera.FieldOfView = setup.Fov.Value;\n            }\n            if (setup.ViewMatrix.HasValue && setup.ViewMatrix != MyUtils.ZeroMatrix)\n            {\n                MyCamera.SetViewMatrix(setup.ViewMatrix.Value);\n            }\n            if (setup.Viewport.HasValue)\n            {\n                MyCamera.ForwardViewport = setup.Viewport.Value;\n            }\n            if (setup.Fov.HasValue && MyCamera.FieldOfView != setup.Fov.Value)\n            {\n                // When custom FOV set, zoom will be disabled\n                MyCamera.ChangeFov(setup.Fov.Value);\n            }\n            if (setup.ProjectionMatrix.HasValue)\n            {\n                MyCamera.SetCustomProjection(setup.ProjectionMatrix.Value);\n            }\n\n            if (setup.RenderTargets != null && setup.RenderTargets.Length > 0)\n            {\n                Texture rt = setup.RenderTargets[0];\n                if (rt != null)\n                {\n                    MyMinerGame.SetRenderTarget(rt, setup.DepthTarget);\n                }\n                 else\n                    MyMinerGame.SetRenderTarget(null, null);\n            }\n            else\n                MyMinerGame.SetRenderTarget(null, null);\n\n            m_currentSetup.RenderTargets = setup.RenderTargets;\n\n            MyCamera.EnableForward();\n        }\n\n        private static void ApplySetupStack(MyRenderSetup storeBackup)\n        {\n            if (storeBackup != null)\n            {\n                if (MyCamera.ViewMatrix.Left != Vector3.Zero)\n                {\n                    storeBackup.CameraPosition = MyCamera.Position;\n                    storeBackup.AspectRatio = MyCamera.ForwardAspectRatio;\n                    storeBackup.Fov = MyCamera.FieldOfView;\n                    storeBackup.ViewMatrix = MyCamera.ViewMatrix;\n                    storeBackup.ProjectionMatrix = MyCamera.ProjectionMatrix;\n                    storeBackup.Viewport = MyCamera.ForwardViewport;\n                    storeBackup.EnableZoom = MyCamera.EnableZoom;\n                    storeBackup.RenderTargets = m_currentSetup.RenderTargets;\n                }\n            }\n\n            if (MyCamera.ViewMatrix.Left != Vector3.Zero)\n            {\n                m_currentSetup.ViewMatrix = MyCamera.ViewMatrix;\n\n            }\n\n            // Set default values\n            m_currentSetup.CallerID = MyRenderCallerEnum.Main;\n\n            m_currentSetup.RenderTargets = null;\n\n            m_currentSetup.CameraPosition = MyCamera.Position;\n            m_currentSetup.AspectRatio = MyCamera.ForwardAspectRatio;\n            m_currentSetup.Fov = null;\n            m_currentSetup.Viewport = MyCamera.ForwardViewport;\n            m_currentSetup.ProjectionMatrix = null;\n            m_currentSetup.EnableZoom = true;\n            m_currentSetup.FogMultiplierMult = 1;\n            m_currentSetup.DepthToAlpha = false;\n\n            m_currentSetup.LodTransitionNear = MyCamera.GetLodTransitionDistanceNear();\n            m_currentSetup.LodTransitionFar = MyCamera.GetLodTransitionDistanceFar();\n            m_currentSetup.LodTransitionBackgroundStart = MyCamera.GetLodTransitionDistanceBackgroundStart();\n            m_currentSetup.LodTransitionBackgroundEnd = MyCamera.GetLodTransitionDistanceBackgroundEnd();\n\n            m_currentSetup.EnableHDR = true;\n            m_currentSetup.EnableLights = true;\n            m_currentSetup.EnableSun = true;\n            m_currentSetup.ShadowRenderer = m_shadowRenderer; // Default shadow render\n            m_currentSetup.EnableShadowInterleaving = ShadowInterleaving;\n            m_currentSetup.EnableSmallLights = true;\n            m_currentSetup.EnableSmallLightShadows = true;\n            m_currentSetup.EnableDebugHelpers = true;\n            m_currentSetup.EnableEnvironmentMapping = true;\n            m_currentSetup.EnableNear = true;\n            m_currentSetup.EnableOcclusionQueries = true;\n\n            m_currentSetup.BackgroundColor = null;\n\n            m_currentSetup.EnabledModules = null;\n            m_currentSetup.EnabledPostprocesses = null;\n            m_currentSetup.EnabledRenderStages = null;\n\n            m_currentSetup.LightsToUse = null;\n            m_currentSetup.RenderElementsToDraw = null;\n            m_currentSetup.TransparentRenderElementsToDraw = null;\n\n            foreach (var setup in m_renderSetupStack)\n            {\n                AggregateSetup(setup);\n            }\n\n            ApplySetup(m_currentSetup);\n        }\n\n        private static void AggregateSetup(MyRenderSetup setup)\n        {\n            if (setup.CallerID != null)\n            {\n                m_currentSetup.CallerID = setup.CallerID;\n            }\n            else\n            {\n                Debug.Assert(false, \"CallerID has to be set in render setup.\");\n            }\n\n            if (setup.RenderTargets != null)\n            {\n                m_currentSetup.RenderTargets = setup.RenderTargets;\n            }\n\n            if (setup.CameraPosition.HasValue)\n            {\n                m_currentSetup.CameraPosition = setup.CameraPosition;\n            }\n\n            if (setup.ViewMatrix.HasValue)\n            {\n                m_currentSetup.ViewMatrix = setup.ViewMatrix;\n            }\n\n            if (setup.ProjectionMatrix.HasValue)\n            {\n                m_currentSetup.ProjectionMatrix = setup.ProjectionMatrix;\n            }\n\n            if (setup.Fov.HasValue)\n            {\n                m_currentSetup.Fov = setup.Fov;\n            }\n\n            if (setup.AspectRatio.HasValue)\n            {\n                m_currentSetup.AspectRatio = setup.AspectRatio;\n            }\n\n            if (setup.Viewport.HasValue)\n            {\n                m_currentSetup.Viewport = setup.Viewport;\n            }\n\n            if (setup.LodTransitionNear.HasValue)\n            {\n                m_currentSetup.LodTransitionNear = setup.LodTransitionNear;\n            }\n\n            if (setup.LodTransitionFar.HasValue)\n            {\n                m_currentSetup.LodTransitionFar = setup.LodTransitionFar;\n            }\n\n            if (setup.LodTransitionBackgroundStart.HasValue)\n            {\n                m_currentSetup.LodTransitionBackgroundStart = setup.LodTransitionBackgroundStart;\n            }\n\n            if (setup.LodTransitionBackgroundEnd.HasValue)\n            {\n                m_currentSetup.LodTransitionBackgroundEnd = setup.LodTransitionBackgroundEnd;\n            }\n\n            if (setup.EnableHDR.HasValue)\n            {\n                m_currentSetup.EnableHDR = setup.EnableHDR;\n            }\n\n            if (setup.EnableLights.HasValue)\n            {\n                m_currentSetup.EnableLights = setup.EnableLights;\n            }\n\n            if (setup.EnableSun.HasValue)\n            {\n                m_currentSetup.EnableSun = setup.EnableSun;\n            }\n\n            // Special case...when no shadow render specified, no shadows are rendered\n            m_currentSetup.ShadowRenderer = setup.ShadowRenderer;\n            m_currentSetup.FogMultiplierMult = setup.FogMultiplierMult;\n            m_currentSetup.DepthToAlpha = setup.DepthToAlpha;\n\n            if (setup.EnableShadowInterleaving.HasValue)\n            {\n                m_currentSetup.EnableShadowInterleaving = setup.EnableShadowInterleaving;\n            }\n\n            if (setup.EnableSmallLights.HasValue)\n            {\n                m_currentSetup.EnableSmallLights = setup.EnableSmallLights;\n            }\n\n            if (setup.EnableSmallLightShadows.HasValue)\n            {\n                m_currentSetup.EnableSmallLightShadows = setup.EnableSmallLightShadows;\n            }\n\n            if (setup.EnableDebugHelpers.HasValue)\n            {\n                m_currentSetup.EnableDebugHelpers = setup.EnableDebugHelpers;\n            }\n\n            if (setup.EnableEnvironmentMapping.HasValue)\n            {\n                m_currentSetup.EnableEnvironmentMapping = setup.EnableEnvironmentMapping;\n            }\n\n            if (setup.EnableNear.HasValue)\n            {\n                m_currentSetup.EnableNear = setup.EnableNear;\n            }\n\n            if (setup.BackgroundColor.HasValue)\n            {\n                m_currentSetup.BackgroundColor = setup.BackgroundColor;\n            }\n\n            if (setup.RenderElementsToDraw != null)\n            {\n                m_currentSetup.RenderElementsToDraw = setup.RenderElementsToDraw;\n            }\n\n            if (setup.TransparentRenderElementsToDraw != null)\n            {\n                m_currentSetup.TransparentRenderElementsToDraw = setup.TransparentRenderElementsToDraw;\n            }\n\n            if (setup.LightsToUse != null)\n            {\n                m_currentSetup.LightsToUse = setup.LightsToUse;\n            }\n\n            m_currentSetup.EnableOcclusionQueries = setup.EnableOcclusionQueries;\n            m_currentSetup.EnableZoom = setup.EnableZoom;\n\n            if (setup.EnabledModules != null)\n            {\n                if (m_currentSetup.EnabledModules == null)\n                {\n                    m_currentSetup.EnabledModules = setup.EnabledModules;\n                }\n                else\n                {\n                    m_currentSetup.EnabledModules.IntersectWith(setup.EnabledModules);\n                }\n            }\n\n            if (setup.EnabledPostprocesses != null)\n            {\n                if (m_currentSetup.EnabledPostprocesses == null)\n                {\n                    m_currentSetup.EnabledPostprocesses = setup.EnabledPostprocesses;\n                }\n                else\n                {\n                    m_currentSetup.EnabledPostprocesses.IntersectWith(setup.EnabledPostprocesses);\n                }\n            }\n\n            if (setup.EnabledRenderStages != null)\n            {\n                if (m_currentSetup.EnabledRenderStages == null)\n                {\n                    m_currentSetup.EnabledRenderStages = setup.EnabledRenderStages;\n                }\n                else\n                {\n                    m_currentSetup.EnabledRenderStages.IntersectWith(setup.EnabledRenderStages);\n                }\n            }\n\n            //m_currentSetup.RenderTargets = setup.RenderTargets;\n        }\n\n        #endregion\n\n        #region Prunning structure\n\n        static int m_renderObjectIncrementalCounter = 0;\n\n        public static void AddRenderObject(MyRenderObject renderObject, bool rebalance = true)\n        {\n            if (renderObject.Entity is MyVoxelMap)\n            {\n            }\n\n            if (renderObject.Entity != null && renderObject.Entity.NearFlag && !m_nearObjects.Contains(renderObject))\n            {\n                m_nearObjects.Add(renderObject);\n            }\n            else if (renderObject.ProxyData == MyElement.PROXY_UNASSIGNED)\n            {\n                BoundingBox aabb = renderObject.GetWorldSpaceAABB();\n                renderObject.SetDirty();\n\n                if (renderObject is MyCullableRenderObject)\n                {\n                    MyCullableRenderObject cullableObject = renderObject as MyCullableRenderObject;\n\n                    renderObject.ProxyData = m_cullingStructure.AddProxy(ref aabb, renderObject, 0);\n\n                    //Move all existing included proxies to cull objects\n                    m_prunningStructure.OverlapAllBoundingBox(ref aabb, m_renderObjectListForDraw);\n\n                    foreach (MyRenderObject ro in m_renderObjectListForDraw)\n                    {\n                        System.Diagnostics.Debug.Assert(!(ro is MyCullableRenderObject));\n                        Debug.Assert(!ro.Entity.NearFlag);\n\n                        BoundingBox roAABB = ro.GetWorldSpaceAABB();\n\n                        if (ro.CullObject == null && aabb.Contains(roAABB) == MinerWarsMath.ContainmentType.Contains)\n                        {\n                            RemoveRenderObject(ro, false);\n                            ro.ProxyData = cullableObject.CulledObjects.AddProxy(ref roAABB, ro, 0);\n                            cullableObject.EntitiesContained++;\n                            ro.CullObject = cullableObject;\n                        }\n                    }\n\n                    System.Diagnostics.Debug.Assert(cullableObject.GetQuery(MyOcclusionQueryID.MAIN_RENDER).OcclusionQuery == null);\n                    cullableObject.InitQueries();\n\n                    cullableObject.RenderCounter = m_renderObjectIncrementalCounter % OCCLUSION_INTERVAL;\n                    m_renderObjectIncrementalCounter++;\n                }\n                else\n                {\n                    m_renderProfiler.StartProfilingBlock(\"Overlap\");\n                    //find potential cull objects and move render object to it if it is fully included\n                    m_cullingStructure.OverlapAllBoundingBox(ref aabb, m_cullObjectListForDraw);\n                    m_renderProfiler.EndProfilingBlock();\n                    bool contained = false;\n                    MyCullableRenderObject mostSuitableCO = null;\n                    float minVolume = float.MaxValue;\n                    foreach (MyCullableRenderObject co in m_cullObjectListForDraw)\n                    {\n                        if (co.GetWorldSpaceAABB().Contains(aabb) == MinerWarsMath.ContainmentType.Contains)\n                        {\n                            float volume = co.GetWorldSpaceAABB().Volume();\n                            if (volume < minVolume)\n                            {\n                                minVolume = volume;\n                                mostSuitableCO = co;\n                            }\n                        }\n                    }\n\n                    if (mostSuitableCO != null)\n                    {\n                        m_renderProfiler.StartProfilingBlock(\"AddProxy\");\n                        renderObject.ProxyData = mostSuitableCO.CulledObjects.AddProxy(ref aabb, renderObject, 0, rebalance);\n                        m_renderProfiler.EndProfilingBlock();\n                        mostSuitableCO.EntitiesContained++;\n                        renderObject.CullObject = mostSuitableCO;\n                        contained = true;\n                    }\n\n                    if (!contained)\n                    {\n                        renderObject.ProxyData = m_prunningStructure.AddProxy(ref aabb, renderObject, 0, rebalance);\n                        renderObject.CullObject = null;\n                    }\n\n                    if (renderObject.Entity.CastShadows)\n                        AddShadowRenderObject(renderObject, rebalance);\n                }\n            }\n        }\n\n        public static void AddShadowRenderObject(MyRenderObject renderObject, bool rebalance = true)\n        {\n            if (renderObject.ShadowProxyData != MyElement.PROXY_UNASSIGNED)\n                RemoveShadowRenderObject(renderObject);\n\n            if (renderObject.ShadowProxyData == MyElement.PROXY_UNASSIGNED && renderObject.Entity != null && renderObject.Entity.CastShadows)\n            {\n                BoundingBox aabb = renderObject.GetWorldSpaceAABB();\n                renderObject.SetDirty();\n\n                renderObject.ShadowProxyData = m_shadowPrunningStructure.AddProxy(ref aabb, renderObject, 0, rebalance);\n            }\n        }\n\n        public static void RemoveRenderObject(MyRenderObject renderObject, bool includeShadowObject = true)\n        {\n            if (m_nearObjects.Contains(renderObject))\n            {\n                m_nearObjects.Remove(renderObject);\n            }\n            else if (renderObject.ProxyData != MyElement.PROXY_UNASSIGNED)\n            {\n                if (renderObject is MyCullableRenderObject)\n                {\n                    MyCullableRenderObject cullableObject = renderObject as MyCullableRenderObject;\n\n                    //Move all existing included objects to render prunning structure\n                    BoundingBox aabb = new BoundingBox(new Vector3(float.MinValue), new Vector3(float.MaxValue));\n                    cullableObject.CulledObjects.OverlapAllBoundingBox(ref aabb, m_renderObjectListForDraw);\n                    foreach (MyRenderObject ro in m_renderObjectListForDraw)\n                    {\n                        Debug.Assert(!ro.Entity.NearFlag);\n                        cullableObject.CulledObjects.RemoveProxy(ro.ProxyData);\n                        BoundingBox roAABB = ro.GetWorldSpaceAABB();\n                        ro.ProxyData = m_prunningStructure.AddProxy(ref roAABB, ro, 0);\n                        ro.CullObject = null;\n                    }\n\n                    //destroy cull object\n                    m_cullingStructure.RemoveProxy(cullableObject.ProxyData);\n                    cullableObject.ProxyData = MyElement.PROXY_UNASSIGNED;\n\n                    //return query to pool\n                    cullableObject.DestroyQueries();\n                }\n                else\n                {\n                    if (renderObject.CullObject != null)\n                    {\n                        renderObject.CullObject.CulledObjects.RemoveProxy(renderObject.ProxyData);\n                        renderObject.CullObject.EntitiesContained--;\n                        renderObject.ProxyData = MyElement.PROXY_UNASSIGNED;\n                        renderObject.CullObject = null;\n                    }\n                    else\n                    {\n                        m_prunningStructure.RemoveProxy(renderObject.ProxyData);\n                        renderObject.ProxyData = MyElement.PROXY_UNASSIGNED;\n                    }\n                }\n            }\n\n            if (includeShadowObject)\n                RemoveShadowRenderObject(renderObject);\n        }\n\n        public static void RemoveShadowRenderObject(MyRenderObject renderObject)\n        {\n            if (renderObject.ShadowProxyData != MyElement.PROXY_UNASSIGNED)\n            {\n                m_shadowPrunningStructure.RemoveProxy(renderObject.ShadowProxyData);\n                renderObject.ShadowProxyData = MyElement.PROXY_UNASSIGNED;\n            }\n        }\n\n        public static void MoveRenderObject(MyRenderObject renderObject)\n        {\n            /*\n            if (renderObject.ProxyData != MyElement.PROXY_UNASSIGNED)\n            {\n                BoundingBox aabb = renderObject.GetWorldSpaceAABB();\n                m_prunningStructure.MoveProxy(renderObject.ProxyData, ref aabb, Vector3.Zero);\n            } */\n\n            System.Diagnostics.Debug.Assert(renderObject.ProxyData != MyElement.PROXY_UNASSIGNED);\n\n            BoundingBox aabb = renderObject.GetWorldSpaceAABB();\n\n            if (renderObject is MyCullableRenderObject)\n            {\n                m_cullingStructure.MoveProxy(renderObject.ProxyData, ref aabb, Vector3.Zero);\n            }\n            else\n            {\n\n                if (renderObject.CullObject != null)\n                {\n                    //Cannot use move because cullobject aabb then does not fit\n                    //renderObject.CullObject.CulledObjects.MoveProxy(renderObject.ProxyData, ref aabb, Vector3.Zero);\n                    RemoveRenderObject(renderObject, false);\n\n                    renderObject.SetDirty();\n                    renderObject.ProxyData = m_prunningStructure.AddProxy(ref aabb, renderObject, 0, true);\n                    renderObject.CullObject = null;\n                }\n                else\n                {\n                    m_prunningStructure.MoveProxy(renderObject.ProxyData, ref aabb, Vector3.Zero);\n                }\n\n                if (renderObject.ShadowProxyData != MyElement.PROXY_UNASSIGNED)\n                {\n                    m_shadowPrunningStructure.MoveProxy(renderObject.ShadowProxyData, ref aabb, Vector3.Zero);\n                }\n            }\n        }\n\n#if RENDER_PROFILING\n        public static int RenderObjectUpdatesCounter = 0;\n#endif \n\n        public static void UpdateRenderObject(MyRenderObject renderObject, bool sortIntoCullobjects = false)\n        {\n            /*\n            if (!renderObject.Entity.EntityId.HasValue)\n                return;\n\n            string ts = renderObject.Entity.EntityId.Value.NumericValue.ToString() + \" \" + renderObject.Entity.GetType().Name.ToString();\n            if (!m_typesStats.ContainsKey(ts))\n                m_typesStats.Add(ts, 0);\n            m_typesStats[ts]++;\n\n            if (renderObject.Entity is MyPrefab)\n            {\n                MyPrefab prefab = renderObject.Entity as MyPrefab;\n\n                string pt = prefab.PrefabType.ToString();\n                if (!m_prefabStats.ContainsKey(pt))\n                    m_prefabStats.Add(pt, 0);\n                m_prefabStats[pt]++;\n            }\n                */\n\n            m_renderProfiler.StartProfilingBlock(\"UpdateRenderObject\");\n            if (renderObject.ProxyData != MyElement.PROXY_UNASSIGNED)\n            {\n#if RENDER_PROFILING\n                RenderObjectUpdatesCounter++;\n#endif\n\n\n                if (sortIntoCullobjects)\n                {\n                    m_renderProfiler.StartProfilingBlock(\"RemoveRenderObject\");\n                    RemoveRenderObject(renderObject);\n                    m_renderProfiler.EndProfilingBlock();\n                    m_renderProfiler.StartProfilingBlock(\"AddRenderObject\");\n                    AddRenderObject(renderObject, false);\n                    m_renderProfiler.EndProfilingBlock();\n                }\n                else\n                {\n                    m_renderProfiler.StartProfilingBlock(\"MoveRenderObject\");\n                    MoveRenderObject(renderObject);\n                    m_renderProfiler.EndProfilingBlock();\n                }\n                             \n#if RENDER_PROFILING\n                m_renderProfiler.ProfileCustomValue(\"Updated objects count\", RenderObjectUpdatesCounter);\n#endif\n            }\n\n            m_renderProfiler.EndProfilingBlock();\n        }        \n\n        private static void DebugDrawPrunning()\n        {\n/*\n            return;\n            BoundingBox aabb = new BoundingBox(new Vector3(float.MinValue), new Vector3(float.MaxValue));\n            List<MyElement> list = new List<MyElement>();\n            ((MyDynamicAABBTree)MyPhysics.physicsSystem.GetRigidBodyModule().GetPruningStructure()).Rebalance(256);\n            MinerWars.AppCode.Physics.MyPhysics.physicsSystem.GetRigidBodyModule().GetPruningStructure().OverlapAllBoundingBox(ref aabb, list, true);\n            \n            foreach (Physics.MyElement element in list)\n            {\n                BoundingBox elementAABB = element.GetWorldSpaceAABB();\n\n                Vector4 color = Vector4.One;\n                MyDebugDraw.DrawAABBLowRes(ref elementAABB, ref color, 1.0f);\n            }\n*/\n            \n            List<MyElement> list = new List<MyElement>();\n            List<MyElement> list2 = new List<MyElement>();\n            BoundingBox aabb = new BoundingBox(new Vector3(float.MinValue), new Vector3(float.MaxValue));            \n            m_prunningStructure.OverlapAllBoundingBox(ref aabb, list);\n                  \n            if (true)\n            {\n                foreach (MyElement element in list)\n                {\n                    BoundingBox elementAABB;                    \n                    m_prunningStructure.GetFatAABB(element.ProxyData, out elementAABB);\n                    //BoundingBox elementAABB = element.GetWorldSpaceAABB();\n\n                    Vector4 color = Vector4.One;\n                    MyDebugDraw.DrawAABBLine(ref elementAABB, ref color, 1.0f);\n                    //MyDebugDraw.DrawText(elementAABB.GetCenter(), new System.Text.StringBuilder(((MyRenderObject)element).Entity.DisplayName), Color.White, 0.7f);\n                }\n            }\n                \n            return;\n\n            m_cullingStructure.OverlapAllBoundingBox(ref aabb, list);\n\n            float i = 0;\n            foreach (MyElement element in list)\n            {\n                BoundingBox elementAABB = element.GetWorldSpaceAABB();\n                i++;\n                //if (i % 16 != 0) continue;\n\n                float r = (i * 0.6234890156176f) % 1.0f * 0.5f, g = (i * 0.7234890156176f) % 1.0f * 0.5f;\n                Vector4 randColor = new Vector4(r, g, 0.5f - 0.5f*(r+g), 0.5f);\n                Vector4 color = randColor * 2;\n\n                //if (Vector3.Distance(MyCamera.Position, elementAABB.GetCenter()) < 3000)\n                {\n                    m_cullingStructure.GetFatAABB(element.ProxyData, out elementAABB);\n                   // MyDebugDraw.DrawAABBLine(ref elementAABB, ref color, 1.0f);\n                    //m_prunningStructure.GetFatAABB(element.ProxyData, out elementAABB);\n\n                    //MyDebugDraw.DrawAABBLine(ref elementAABB, ref color, 1.0f);\n                    //MyDebugDraw.DrawText(elementAABB.GetCenter(), new System.Text.StringBuilder(((MyRenderObject)element).Entity.DisplayName), Color.White, 0.7f);\n\n                    MyCullableRenderObject cullObject = (MyCullableRenderObject)element;\n                    cullObject.CulledObjects.OverlapAllBoundingBox(ref aabb, list2);\n\n                    \n\n                    if (true)\n                    {\n                        foreach (MyElement element2 in list2)\n                        {\n                            //elementAABB = element2.GetWorldSpaceAABB();\n                            \n                            \n\n                            //if (Vector3.Distance(MyCamera.Position, elementAABB.GetCenter()) < 3000)\n                            if (((MyRenderObject)element2).Entity is MyVoxelMap)\n                            {\n                                MyDebugDraw.DrawAABBLine(ref elementAABB, ref color, 1.0f);\n                                MyDebugDraw.DrawText(elementAABB.GetCenter(), new System.Text.StringBuilder(list2.Count.ToString()), new Color(randColor * 2), 0.7f);\n\n                                cullObject.CulledObjects.GetFatAABB(element2.ProxyData, out elementAABB);\n                                if (!cullObject.GetQuery(MyOcclusionQueryID.MAIN_RENDER).OcclusionQueryVisible)\n                                    color = Vector4.One;\n                                else\n                                    color = randColor * 1.5f;\n                                MyDebugDraw.DrawAABBLine(ref elementAABB, ref color, 1.0f);\n                            }\n                        }\n                    }\n                }\n            }\n             \n        }\n\n\n        static MyEntity GetEntityFromPrunningStructure(MyDynamicAABBTree tree, ref MyLine line, ref BoundingBox boundingBox, MyEntity currentEntity, ref Vector3? ret, MyEntity ignorePhysObject0, MyEntity ignorePhysObject1, bool ignoreSelectable, List<MyElement> elementList)\n        {\n            tree.OverlapAllBoundingBox(ref boundingBox, elementList);\n\n            foreach (MyElement element in elementList)\n            {\n                MyEntity entity = ((MyRenderObject)element).Entity;\n\n                Debug.Assert(!entity.NearFlag);\n                Debug.Assert(entity.Visible);\n\n                //  Objects to ignore\n                if ((entity == ignorePhysObject0) || (entity == ignorePhysObject1))\n                    continue;\n\n                if (entity is MinerWars.AppCode.Game.Entities.VoxelHandShapes.MyVoxelHandShape)\n                    continue;\n\n                if (!ignoreSelectable && !entity.IsSelectable())\n                    continue;\n                 \n                Vector3? testResultEx;\n                entity.GetIntersectionWithLine(ref line, out testResultEx);\n\n                if (testResultEx != null)\n                {\n                    Vector3 dir = line.Direction;\n\n                    if (Vector3.Dot((testResultEx.Value - line.From), dir) > 0)\n                    {\n                        if (ret == null)\n                        {\n                            ret = testResultEx;\n                            currentEntity = entity;\n                        }\n\n                        if ((testResultEx.Value - line.From).Length() < (ret.Value - line.From).Length())\n                        {\n                            ret = testResultEx;\n                            currentEntity = entity;\n                        }\n                    }\n                }\n            }\n\n            return currentEntity;\n        }\n\n\n        public static void GetEntitiesFromPrunningStructure(ref BoundingBox boundingBox, List<MyElement> list)\n        {\n            list.Clear();\n\n            GetEntitiesFromPrunningStructure(m_prunningStructure, ref boundingBox, list);\n\n            m_cullingStructure.OverlapAllBoundingBox(ref boundingBox, m_cullObjectListForDraw, 0, false);\n\n            foreach (MyElement element in m_cullObjectListForDraw)\n            {\n                MyCullableRenderObject cullObject = (MyCullableRenderObject)element;\n\n                GetEntitiesFromPrunningStructure(cullObject.CulledObjects, ref boundingBox, list);\n            }\n        }\n\n        public static void GetEntitiesFromShadowStructure(ref BoundingBox boundingBox, List<MyElement> list)\n        {\n            list.Clear();\n\n            GetEntitiesFromPrunningStructure(m_shadowPrunningStructure, ref boundingBox, list);\n        }\n\n        static void GetEntitiesFromPrunningStructure(MyDynamicAABBTree tree, ref BoundingBox boundingBox, List<MyElement> list)\n        {\n            tree.OverlapAllBoundingBox(ref boundingBox, list, 0, false);\n        }\n\n        static void AddCullingObjects(List<BoundingBox> bbs)\n        {\n            // create culling objects (bbox with smallest surface area first)\n            foreach (var bb in bbs.OrderBy(a => a.SurfaceArea()))\n            {\n                AddRenderObject(new MyCullableRenderObject(bb));\n            }\n        }\n\n        public static float CullingStructureWorstAllowedBalance = 0.05f;\n        public static float CullingStructureCutBadness = 20;  // Don't cut boxes.\n        public static float CullingStructureImbalanceBadness = 0.15f;  // Be close to the median.\n        public static float CullingStructureOffsetBadness = 0.1f;  // Be close to the geometric center (more so for initial splits).\n\n        public static void RebuildCullingStructure()\n        {\n            var list = new List<MyElement>();\n            var everything = new BoundingBox(new Vector3(float.MinValue), new Vector3(float.MaxValue));\n            var resultDivision = new List<BoundingBox>();\n\n            // Clear old culling nodes\n            m_cullingStructure.OverlapAllBoundingBox(ref everything, list);\n            foreach (MyRenderObject ro in list)\n            {\n                RemoveRenderObject(ro);\n            }\n\n            // Split by type\n            var roList = new List<MyRenderObject>();\n            var prefabRoList = new List<MyRenderObject>();\n            var voxelRoList = new List<MyRenderObject>();\n\n            m_prunningStructure.OverlapAllBoundingBox(ref everything, list);\n            foreach (MyRenderObject o in list)\n            {\n                if (o is MyCullableRenderObject) continue;\n\n                if (MyFakes.CULL_EVERY_RENDER_CELL)\n                {\n                    if (o.Entity is MinerWars.AppCode.Game.Prefabs.MyPrefabBase)\n                    {\n                        roList.Add(o);\n                        prefabRoList.Add(o);\n                    }\n                    else if (o.Entity is MyVoxelMap)\n                    {\n                        resultDivision.Add(o.GetWorldSpaceAABB());\n                    }\n                    else\n                        roList.Add(o);\n                }\n                else\n                {\n                    if (o.Entity is MinerWars.AppCode.Game.Prefabs.MyPrefabBase)\n                    {\n                        roList.Add(o);\n                        prefabRoList.Add(o);\n                    }\n                    else if (o.Entity is MyVoxelMap)\n                    {\n                        roList.Add(o);\n                        voxelRoList.Add(o);\n                    }\n                    else\n                        roList.Add(o);\n                }\n            }\n\n            // Divide\n            AddDivisionForCullingStructure(roList, Math.Max(MyRenderConstants.MIN_OBJECTS_IN_CULLING_STRUCTURE, (int)(roList.Count / MyRenderConstants.MAX_CULLING_OBJECTS * 1.5f)), resultDivision);\n\n            AddDivisionForCullingStructure(\n                prefabRoList,\n                Math.Max(MyRenderConstants.MIN_PREFAB_OBJECTS_IN_CULLING_STRUCTURE, (int)(prefabRoList.Count / (MyRenderConstants.MAX_CULLING_PREFAB_OBJECTS * MyRenderConstants.m_maxCullingPrefabObjectMultiplier) * 1.5f)),\n                resultDivision\n            );\n\n            AddDivisionForCullingStructure(\n                voxelRoList,\n                Math.Max(MyRenderConstants.MIN_VOXEL_RENDER_CELLS_IN_CULLING_STRUCTURE, (int)(voxelRoList.Count / (MyRenderConstants.MAX_CULLING_VOXEL_RENDER_CELLS) * 1.5f)),\n                resultDivision\n            );\n\n            AddCullingObjects(resultDivision);\n        }\n\n\n        public static void RebuildCullingStructureCullEveryPrefab()\n        {\n            var list = new List<MyElement>();\n            var everything = new BoundingBox(new Vector3(float.MinValue), new Vector3(float.MaxValue));\n            var resultDivision = new List<BoundingBox>();\n\n            // Clear old culling nodes\n            m_cullingStructure.OverlapAllBoundingBox(ref everything, list);\n            foreach (MyRenderObject ro in list)\n            {\n                RemoveRenderObject(ro);\n            }\n\n            // Split by type\n            var roList = new List<MyRenderObject>();\n\n            m_prunningStructure.OverlapAllBoundingBox(ref everything, list);\n            foreach (MyRenderObject o in list)\n            {\n                if (o is MyCullableRenderObject) continue;\n\n                roList.Add(o);\n                if (o.Entity is MinerWars.AppCode.Game.Prefabs.MyPrefabBase)  // every prefab will be culled on its own\n                    resultDivision.Add(o.GetWorldSpaceAABB());\n            }\n\n            // Divide\n            AddDivisionForCullingStructure(roList, Math.Max(MyRenderConstants.MIN_OBJECTS_IN_CULLING_STRUCTURE, (int)(roList.Count / MyRenderConstants.MAX_CULLING_OBJECTS * 1.5f)), resultDivision);\n\n            AddCullingObjects(resultDivision);\n        }\n\n\n        // Compute a division and add it to resultDivision.\n        public static void AddDivisionForCullingStructure(List<MyRenderObject> roList, int objectCountLimit, List<BoundingBox> resultDivision)\n        {\n            List<List<MyRenderObject>> resultList = new List<List<MyRenderObject>>();\n\n            // Have a stack of boxes to split; the initial box contains the whole sector\n            Stack<List<MyRenderObject>> stackToDivide = new Stack<List<MyRenderObject>>();\n            stackToDivide.Push(roList);\n            int maxDivides = MyRenderConstants.MAX_CULLING_OBJECTS * 1000;  // sanity check\n\n            while (stackToDivide.Count > 0 && maxDivides-- > 0)\n            {\n                // take the next box\n                List<MyRenderObject> llist = stackToDivide.Pop();\n\n                // if the object count is small, add it to the result list\n                if (llist.Count <= objectCountLimit)\n                {\n                    resultList.Add(llist);\n                    continue;\n                }\n\n                // get the tightest bounding box containing all objects\n                BoundingBox caabb = MyMath.CreateInvalidAABB();\n                foreach (MyRenderObject lro in llist)\n                {\n                    caabb = lro.GetWorldSpaceAABB().Include(ref caabb);\n                }\n\n                // we'll optimize split badness\n                float bestPlanePos = 0;\n                int bestAxis = 0;\n                float bestBadness = float.MaxValue;\n\n                // find the longest axis\n                // nice to have (not needed): forbid an axis if it didn't work in the last split\n                float longestAxisSpan = float.MinValue;\n                for (int axis = 0; axis <= 2; axis++)\n                {\n                    float axisSpan = caabb.Max.GetDim(axis) - caabb.Min.GetDim(axis);\n                    if (axisSpan > longestAxisSpan)\n                    {\n                        longestAxisSpan = axisSpan;\n                        bestAxis = axis;\n                        bestPlanePos = 0.5f * (caabb.Max.GetDim(axis) + caabb.Min.GetDim(axis));  // sanity check: if nothing works, split in the middle\n                    }\n                }\n\n                // find the best split perpendicular to the longest axis (nicest results)\n                // nice to have (not needed): try all three axes\n                for (int axis = bestAxis; axis <= bestAxis; axis++)\n                {\n                    float axisSpan = caabb.Max.GetDim(axis) - caabb.Min.GetDim(axis);\n                    float axisCenter = 0.5f * (caabb.Max.GetDim(axis) + caabb.Min.GetDim(axis));\n\n                    // lo = bounding box mins, hi = bounding box maxes; add a sentinel at the end\n                    var lo = new List<float>(); lo.Add(float.MaxValue);\n                    var hi = new List<float>(); hi.Add(float.MaxValue);\n                    foreach (var ro in llist)\n                    {\n                        lo.Add(ro.GetWorldSpaceAABB().Min.GetDim(axis));\n                        hi.Add(ro.GetWorldSpaceAABB().Max.GetDim(axis));\n                    }\n                    lo.Sort();\n                    hi.Sort();\n\n                    // find the dividing plane that minimizes split badness\n                    int leftCount = 0, cutCount = 0, rightCount = llist.Count;\n\n                    for (int l = 0, h = 0; h < hi.Count - 1; )  // don't put everything on one side, that would be silly\n                    {\n                        // find split interval\n                        float thisEventPos;\n                        if (lo[l] < hi[h])\n                        {\n                            thisEventPos = lo[l];\n                            rightCount--; cutCount++; l++;\n                        }\n                        else\n                        {\n                            thisEventPos = hi[h];\n                            cutCount--; leftCount++; h++;\n                        }\n                        float nextEventPos = Math.Min(lo[l], hi[h]);  // nice to know\n\n                        // if the split isn't too imbalanced\n                        if (leftCount + cutCount >= CullingStructureWorstAllowedBalance * llist.Count &&\n                            rightCount + cutCount >= CullingStructureWorstAllowedBalance * llist.Count)\n                        {\n                            // the split could be anywhere in (thisEventPos, nextEventPos); find the closest point in this interval to the geometric center\n                            float closestSplitToCenter = axisCenter < thisEventPos ? thisEventPos : axisCenter > nextEventPos ? nextEventPos : axisCenter;\n\n                            // compute badness\n                            float badness =\n                                cutCount * CullingStructureCutBadness  // Don't cut boxes.\n                                + Math.Abs(leftCount - rightCount) * CullingStructureImbalanceBadness  // Be close to the median.\n                                + Math.Abs(axisCenter - closestSplitToCenter) * CullingStructureOffsetBadness;  // Be close to the geometric center (more so for initial splits).\n\n                            // found the best split?\n                            if (badness < bestBadness)\n                            {\n                                bestBadness = badness;\n                                bestAxis = axis;\n                                bestPlanePos = 0.5f * (thisEventPos + nextEventPos);  // put the split plane between this and the next event\n                            }\n                        }\n                    }\n                }\n\n                // split objects between left, right and cut\n                var left = new List<MyRenderObject>();\n                var right = new List<MyRenderObject>();\n                var cut = new List<MyRenderObject>();\n\n                foreach (MyRenderObject ro in llist)\n                {\n                    if (ro.GetWorldSpaceAABB().Max.GetDim(bestAxis) <= bestPlanePos)\n                        left.Add(ro);\n                    else if (ro.GetWorldSpaceAABB().Min.GetDim(bestAxis) >= bestPlanePos)\n                        right.Add(ro);\n                    else\n                        cut.Add(ro);\n                }\n\n                // add cut boxes to the side with fewer boxes\n                (left.Count < right.Count ? left : right).AddRange(cut);\n\n                if (left.Count == 0)\n                {\n                    resultList.Add(right);  // can't be cut better\n                    continue;\n                }\n                else if (right.Count == 0)\n                {\n                    resultList.Add(left);  // can't be cut better\n                    continue;\n                }\n                else\n                {\n                    stackToDivide.Push(left);\n                    stackToDivide.Push(right);\n                }\n            }\n\n            // add bounding boxes to the resulting division\n            foreach (var xList in resultList)\n            {\n                BoundingBox caabb = MyMath.CreateInvalidAABB();\n                foreach (MyRenderObject ro in xList)\n                    caabb = ro.GetWorldSpaceAABB().Include(ref caabb);\n                resultDivision.Add(caabb);\n            }\n        }\n\n\n        // Detects intersection for all entities\n        public static MyEntity GetClosestIntersectionWithLine(ref MyLine line, MyEntity ignorePhysObject0, MyEntity ignorePhysObject1, bool ignoreSelectable = false)\n        {\n            //  Get collision skins near the line's bounding box (use sweep-and-prune, so we iterate only close objects)\n            BoundingBox boundingBox = BoundingBoxHelper.InitialBox;\n            BoundingBoxHelper.AddLine(ref line, ref boundingBox);\n\n            MyEntity retEntity = null;\n            Vector3? ret = null;\n            retEntity = GetEntityFromPrunningStructure(m_prunningStructure, ref line, ref boundingBox, retEntity, ref ret, ignorePhysObject0, ignorePhysObject1, ignoreSelectable, m_renderObjectListForIntersections);\n\n            m_cullingStructure.OverlapAllBoundingBox(ref boundingBox, m_cullObjectListForIntersections);\n\n            foreach (MyElement element in m_cullObjectListForIntersections)\n            {\n                MyCullableRenderObject cullObject = (MyCullableRenderObject)element;\n\n                retEntity = GetEntityFromPrunningStructure(cullObject.CulledObjects, ref line, ref boundingBox, retEntity, ref ret, ignorePhysObject0, ignorePhysObject1, ignoreSelectable, m_renderObjectListForIntersections);\n            }\n\n            // retEntity = GetEntityFromPrunningStructure(m_cullingStructure, ref line, ref boundingBox, retEntity, ignorePhysObject0, ignorePhysObject1);\n\n            return retEntity;\n        }\n\n\n        public static MyIntersectionResultLineTriangleEx? GetAnyIntersectionWithLine(ref MyLine line, MyEntity ignorePhysObject0, MyEntity ignorePhysObject1, bool ignoreSelectable)\n        {\n            //  Get collision skins near the line's bounding box (use sweep-and-prune, so we iterate only close objects)\n            BoundingBox boundingBox = BoundingBoxHelper.InitialBox;\n            BoundingBoxHelper.AddLine(ref line, ref boundingBox);\n\n            MyEntity retEntity = null;\n            Vector3? ret = null;\n            MyIntersectionResultLineTriangleEx? result = null;\n            retEntity = GetEntityFromPrunningStructure(m_prunningStructure, ref line, ref boundingBox, retEntity, ref ret, ignorePhysObject0, ignorePhysObject1, ignoreSelectable, m_renderObjectListForIntersections);\n            if (retEntity != null)\n            {\n                retEntity.GetIntersectionWithLine(ref line, out result);\n                if (result.HasValue)\n                    return result;\n            }\n\n            m_cullingStructure.OverlapAllBoundingBox(ref boundingBox, m_cullObjectListForIntersections);\n\n            foreach (MyElement element in m_cullObjectListForIntersections)\n            {\n                MyCullableRenderObject cullObject = (MyCullableRenderObject)element;\n\n                retEntity = GetEntityFromPrunningStructure(cullObject.CulledObjects, ref line, ref boundingBox, retEntity, ref ret, ignorePhysObject0, ignorePhysObject1, ignoreSelectable, m_renderObjectListForIntersections);\n\n                if (retEntity != null)\n                {\n                    retEntity.GetIntersectionWithLine(ref line, out result);\n                    if (result.HasValue)\n                        return result;\n                }\n            }\n\n            return result;\n        }\n        #endregion\n\n        #region Occlusion queries\n\n        static void IssueOcclusionQueries()\n        {\n            if (!m_currentSetup.EnableOcclusionQueries || !EnableHWOcclusionQueries)\n                return;\n\n            //     return;\n            m_renderProfiler.StartProfilingBlock(\"IssueOcclusionQueries\");\n\n            m_renderProfiler.StartProfilingBlock(\"BlendState\");\n\n            bool showQueries = false;// ShowHWOcclusionQueries;\n\n            BlendState oldBlendState = BlendState.Current;\n\n            //generate and draw bounding box of our renderCell in occlusion query \n            if (showQueries)\n                BlendState.Opaque.Apply();\n            else\n            {\n                MyStateObjects.DisabledColorChannels_BlendState.Apply();\n                MyMinerGame.SetRenderTarget(null, null);\n            }\n\n            Vector3 campos = MyCamera.Position;\n\n            m_renderProfiler.EndProfilingBlock();\n\n            RasterizerState oldRasterizeState = RasterizerState.Current;\n\n            RasterizerState.CullNone.Apply();\n\n            if (MyRenderConstants.RenderQualityProfile.ForwardRender)\n                DepthStencilState.DepthRead.Apply();\n            else\n                DepthStencilState.None.Apply();\n\n            MySimpleObjectDraw.PrepareFastOcclusionBoundingBoxDraw();\n\n            MyPerformanceCounter.PerCameraDraw.QueriesCount += m_renderOcclusionQueries.Count;\n\n\n            foreach (MyOcclusionQueryIssue queryIssue in m_renderOcclusionQueries)\n            {\n                //System.Diagnostics.Debug.Assert(!queryIssue.OcclusionQueryIssued);\n\n                BoundingBox aabbExtended = new BoundingBox(queryIssue.CullObject.GetWorldSpaceAABB().Min - new Vector3(20.0f), queryIssue.CullObject.GetWorldSpaceAABB().Max + new Vector3(20.0f));\n\n                if (!EnableHWOcclusionQueries || MyMath.Intersects(aabbExtended, ref campos))\n                {\n                    queryIssue.OcclusionQueryIssued = false;\n                    queryIssue.OcclusionQueryVisible = true;\n                    continue;\n                }\n\n                //m_renderProfiler.StartProfilingBlock(\"OcclusionQuery.Begin\");\n\n                queryIssue.OcclusionQueryIssued = !showQueries;\n                //renderObject.OcclusionQueryVisible = true;\n                if (queryIssue.OcclusionQuery == null)\n                {\n                    m_renderProfiler.EndProfilingBlock();\n                    return;\n                }\n\n                bool isCompleted = queryIssue.OcclusionQuery.IsComplete;\n\n                BoundingBox aabbExtendedForOC = new BoundingBox(queryIssue.CullObject.GetWorldSpaceAABB().Min - new Vector3(10.0f), queryIssue.CullObject.GetWorldSpaceAABB().Max + new Vector3(10.0f));\n\n                if (!showQueries)\n                {\n                    //    renderObject.OcclusionQuery = new OcclusionQuery(m_device);\n                    queryIssue.OcclusionQuery.Begin();\n                }\n                //m_renderProfiler.EndProfilingBlock();\n\n                //m_renderProfiler.StartProfilingBlock(\"DrawOcclusionBoundingBox\");\n                MySimpleObjectDraw.FastOcclusionBoundingBoxDraw(aabbExtendedForOC, 1.0f);\n                //m_renderProfiler.EndProfilingBlock();\n\n\n                //m_renderProfiler.StartProfilingBlock(\"OcclusionQuery.End\");\n\n                if (!showQueries)\n                    queryIssue.OcclusionQuery.End();\n                //m_renderProfiler.EndProfilingBlock();\n            }\n\n            m_renderProfiler.StartProfilingBlock(\"oldBlendState\");\n\n            oldBlendState.Apply();\n\n            m_renderProfiler.EndProfilingBlock();\n\n            m_renderProfiler.EndProfilingBlock();\n        }\n\n        #endregion\n\n        #region Preload\n\n\n        public static void PreloadTexturesInRadius(float radius)\n        {\n            BoundingBox box = BoundingBox.CreateFromSphere(new BoundingSphere(MyCamera.Position, radius * 2));\n\n            m_cullingStructure.OverlapAllBoundingBox(ref box, m_cullObjectListForDraw);\n            m_prunningStructure.OverlapAllBoundingBox(ref box, m_renderObjectListForDraw);\n\n            foreach (MyCullableRenderObject cullableObject in m_cullObjectListForDraw)\n            {\n                cullableObject.CulledObjects.OverlapAllBoundingBox(ref box, m_renderObjectListForDraw, 0, false);\n            }\n\n            foreach (MyRenderObject ro in m_renderObjectListForDraw)\n            {\n                ro.Entity.PreloadTextures();\n            }\n\n        }\n\n        private static void PreloadEntityForDraw(MyEntity entity, Action BusyAction)\n        {\n            Stopwatch stopwatch = new Stopwatch();\n            double msElapsed = 0;\n\n            entity.PreloadForDraw();\n\n            foreach (MyEntity child in entity.Children)\n            {\n                stopwatch.Start();\n\n                PreloadEntityForDraw(child, BusyAction);\n\n\n                stopwatch.Stop();\n\n                msElapsed += stopwatch.Elapsed.TotalMilliseconds;\n\n                stopwatch.Reset();\n\n                if (msElapsed >= MyGuiConstants.LOADING_THREAD_DRAW_SLEEP_IN_MILISECONDS)\n                {\n                    msElapsed = 0;\n                    BusyAction();\n                }\n            }\n        }\n\n        public static void PreloadEntitiesInRadius(float radius, Action BusyAction)\n        {\n            //Cannot use prunning structure because of deactivated entities which are not there\n            /*\n            BoundingBox box = BoundingBox.CreateFromSphere(new BoundingSphere(MyCamera.Position, radius * 2));\n\n            m_cullingStructure.OverlapAllBoundingBox(ref box, m_cullObjectListForDraw);\n            m_prunningStructure.OverlapAllBoundingBox(ref box, m_renderObjectListForDraw);\n\n            foreach (MyCullableRenderObject cullableObject in m_cullObjectListForDraw)\n            {\n                cullableObject.CulledObjects.OverlapAllBoundingBox(ref box, m_renderObjectListForDraw, false);\n            }\n\n            Stopwatch stopwatch = new Stopwatch();\n            double msElapsed = 0;\n\n            foreach (MyRenderObject ro in m_renderObjectListForDraw)\n            {\n                stopwatch.Start();\n\n                ro.Entity.PreloadForDraw();\n\n                stopwatch.Stop();\n\n                msElapsed += stopwatch.Elapsed.TotalMilliseconds;\n\n                stopwatch.Reset();\n\n                if (msElapsed >= MyGuiConstants.LOADING_THREAD_DRAW_SLEEP_IN_MILISECONDS)\n                {\n                    msElapsed = 0;\n                    MyGuiScreenGamePlay.Static.DrawLoadAnimation();\n                }\n            }\n           */\n\n            \n\n            foreach (MyEntity entity in MyEntities.GetEntities())\n            {\n                PreloadEntityForDraw(entity, BusyAction);\n            }\n        }\n\n        #endregion\n\n        #region Entities prepare background worker\n\n        //private static readonly AutoResetEvent m_prepareEntitiesEvent;\n        //private static volatile bool m_prepareEntitiesCompleted = true;\n        static Task m_prepareEntitiesTask;\n\n        internal static void PrepareEntitiesForDrawStart()\n        {\n            if (!EnableEntitiesPrepareInBackground)\n                return;\n\n            WaitUntilEntitiesPrepared();\n\n            if (MyCamera.GetLodTransitionDistanceBackgroundEnd() < 1)\n            {\n                return;\n            }      \n\n            Matrix optProjection = Matrix.CreatePerspectiveFieldOfView(MyCamera.FovWithZoom, MyCamera.AspectRatio, MyCamera.NEAR_PLANE_DISTANCE, MyCamera.GetLodTransitionDistanceBackgroundEnd());\n            m_cameraFrustumMain.Matrix = MyCamera.ViewMatrix * optProjection;\n            m_cameraPositionMain = MyCamera.Position;\n            m_cameraZoomDivider = MyCamera.ZoomDivider;\n            m_cameraZoomDividerMain = MyCamera.ZoomDivider;\n\n            m_prepareEntitiesTask = Parallel.Start(PrepareEntitiesForDrawBackground);\n        }\n\n        private static void WaitUntilEntitiesPrepared()\n        {\n            m_prepareEntitiesTask.Wait();\n        }\n\n        private static void PrepareEntitiesForDrawBackground()\n        {\n            m_renderObjectListForDrawMain.Clear();\n            m_cullObjectListForDrawMain.Clear();\n            m_renderOcclusionQueriesMain.Clear();\n            MyPerformanceCounter.PerCameraDraw.EntitiesOccluded = 0;\n\n            PrepareEntitiesForDraw(ref m_cameraFrustumMain, m_cameraPositionMain, m_cameraZoomDividerMain, MyOcclusionQueryID.MAIN_RENDER, m_renderObjectListForDrawMain, m_cullObjectListForDrawMain, m_renderOcclusionQueriesMain, ref MyPerformanceCounter.PerCameraDraw.EntitiesOccluded);\n        }\n\n        #endregion\n\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Render/MyRender.Alternative.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing SharpDX.Toolkit.Graphics;\nusing MinerWars.AppCode.Game.Managers;\nusing SharpDX.Direct3D9;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.Import;\nusing MinerWars.AppCode.Game.Effects;\nusing SysUtils.Utils;\nusing MinerWars.AppCode.Game.Voxels;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Models;\nusing MinerWarsMath;\nusing MinerWars.CommonLIB.AppCode.Networking;\n\nnamespace MinerWars.AppCode.Game.Render\n{\n    static partial class MyRender\n    {\n        private static void DrawRenderElementsAlternative(MyLodTypeEnum lod, bool applyStencil, out int ibChangesStats)\n        {\n            m_currentLodDrawPass = lod;\n\n            ibChangesStats = 0;\n\n            BlendState.Opaque.Apply(); //set by default, blend elements are at the end. \n            DrawVoxels(lod, MyVoxelCacheCellRenderBatchType.SINGLE_MATERIAL, ref ibChangesStats);\n            DrawVoxels(lod, MyVoxelCacheCellRenderBatchType.MULTI_MATERIAL, ref ibChangesStats);\n\n            BlendState.Opaque.Apply(); //set by default, blend elements are at the end. \n            DrawModels(lod, ref ibChangesStats);\n        }\n\n        private static void DrawVoxels(MyLodTypeEnum lod, MyVoxelCacheCellRenderBatchType batchType, ref int ibChangesStats)\n        {\n            int index = m_sortedElements.GetVoxelIndex(lod, batchType);\n            var matDict = m_sortedElements.Voxels[index];\n\n            if (matDict.RenderElementCount == 0)\n                return;\n\n            // Technique start\n            var shader = GetShader(MyMeshDrawTechnique.VOXEL_MAP);\n            SetupShaderPerDraw(shader, MyMeshDrawTechnique.VOXEL_MAP);\n            BeginShaderAlternative(shader, MyMeshDrawTechnique.VOXEL_MAP, batchType);\n            shader.Begin();\n\n            MyPerformanceCounter.PerCameraDraw.TechniqueChanges[(int)lod]++;\n\n            foreach (var mat in matDict.Voxels)\n            {\n                var firstElement = mat.Value.FirstOrDefault();\n                if (firstElement == null)\n                    continue;\n\n                // Setup material\n                SetupShaderForMaterialAlternative(shader, batchType, firstElement.VoxelBatch.Material0, firstElement.VoxelBatch.Material1, firstElement.VoxelBatch.Material2);\n                MyPerformanceCounter.PerCameraDraw.MaterialChanges[(int)lod]++;\n                \n                MyEntity lastEntity = null;\n                VertexBuffer lastVertexBuffer = null;\n\n                foreach (var renderElement in mat.Value)\n                {\n                    if (!object.ReferenceEquals(lastVertexBuffer, renderElement.VertexBuffer))\n                    {\n                        lastVertexBuffer = renderElement.VertexBuffer;\n                        m_device.Indices = renderElement.IndexBuffer;\n                        m_device.SetStreamSource(0, renderElement.VertexBuffer, 0, renderElement.VertexStride);\n                        m_device.VertexDeclaration = renderElement.VertexDeclaration;\n                        MyPerformanceCounter.PerCameraDraw.VertexBufferChanges[(int)lod]++;\n                        ibChangesStats++;\n                    }\n\n                    if (lastEntity != renderElement.Entity)\n                    {\n                        lastEntity = renderElement.Entity;\n                        MyPerformanceCounter.PerCameraDraw.EntityChanges[(int)lod]++;\n                        SetupShaderForEntity(shader, renderElement);\n                        shader.D3DEffect.CommitChanges();\n                    }\n\n                    m_renderProfiler.StartProfilingBlock(\"DrawIndexedPrimitives\");\n                    m_device.DrawIndexedPrimitive(PrimitiveType.TriangleList, 0, 0, renderElement.VertexCount, renderElement.IndexStart, renderElement.TriCount);\n                    MyPerformanceCounter.PerCameraDraw.TotalDrawCalls++;\n                    m_renderProfiler.EndProfilingBlock();\n                }\n            }\n\n            shader.End();\n            // Technique End\n        }\n\n        private static void DrawModels(MyLodTypeEnum lod, ref int ibChangesStats)\n        {\n            for (int i = 0; i < MySortedElements.DrawTechniqueCount; i++)\n            {\n                var technique = (MyMeshDrawTechnique)i;\n                int index = m_sortedElements.GetModelIndex(lod, technique);\n                var matDict = m_sortedElements.Models[index];\n\n                if (matDict.RenderElementCount == 0)\n                    continue;\n\n                // Technique start\n                var shader = GetShader(technique);\n                SetupShaderPerDraw(shader, technique);\n                BeginShaderAlternative(shader, technique, MyVoxelCacheCellRenderBatchType.SINGLE_MATERIAL /* doesn't care at all */);\n                shader.Begin();\n\n                MyPerformanceCounter.PerCameraDraw.TechniqueChanges[(int)lod]++;\n\n                foreach (var mat in matDict.Models)\n                {\n                    if (mat.Value.RenderElementCount == 0)\n                        continue;\n\n                    // Setup material\n                    SetupShaderForMaterialAlternative(shader, mat.Key);\n                    MyPerformanceCounter.PerCameraDraw.MaterialChanges[(int)lod]++;\n\n                    foreach (var vb in mat.Value.Models)\n                    {\n                        // Set vb\n                        var firstElement = vb.Value.FirstOrDefault();\n                        if (firstElement == null)\n                            continue;\n\n                        m_device.Indices = firstElement.IndexBuffer;\n                        m_device.SetStreamSource(0, firstElement.VertexBuffer, 0, firstElement.VertexStride);\n                        m_device.VertexDeclaration = firstElement.VertexDeclaration;\n                        MyPerformanceCounter.PerCameraDraw.VertexBufferChanges[(int)lod]++;\n                        ibChangesStats++;\n\n                        MyEntity lastEntity = null;\n\n                        foreach (var renderElement in vb.Value)\n                        {\n                            if (lastEntity != renderElement.Entity)\n                            {\n                                lastEntity = renderElement.Entity;\n                                MyPerformanceCounter.PerCameraDraw.EntityChanges[(int)lod]++;\n                                SetupShaderForEntity(shader, renderElement);\n                                shader.D3DEffect.CommitChanges();\n                            }\n\n                            m_renderProfiler.StartProfilingBlock(\"DrawIndexedPrimitives\");\n                            m_device.DrawIndexedPrimitive(PrimitiveType.TriangleList, 0, 0, renderElement.VertexCount, renderElement.IndexStart, renderElement.TriCount);\n                            MyPerformanceCounter.PerCameraDraw.TotalDrawCalls++;\n                            m_renderProfiler.EndProfilingBlock();\n                        }\n                    }\n                }\n\n                shader.End();\n                // Technique End\n            }\n        }\n\n        static MyEffectBase GetShader(MyMeshDrawTechnique technique)\n        {\n            switch (technique)\n            {\n                case MyMeshDrawTechnique.MESH:\n                case MyMeshDrawTechnique.DECAL:\n                case MyMeshDrawTechnique.HOLO:\n                case MyMeshDrawTechnique.ALPHA_MASKED:\n                    return GetEffect(MyEffects.ModelDNS) as MyEffectModelsDNS;\n\n                case MyMeshDrawTechnique.VOXELS_DEBRIS:\n                    return GetEffect(MyEffects.VoxelDebrisMRT) as MyEffectVoxelsDebris;\n\n                case MyMeshDrawTechnique.VOXEL_MAP:\n                    return MyRender.GetEffect(MyEffects.VoxelsMRT) as MyEffectVoxels;\n\n                case MyMeshDrawTechnique.VOXELS_STATIC_ASTEROID:\n                    return GetEffect(MyEffects.VoxelStaticAsteroidMRT) as MyEffectVoxelsStaticAsteroid;\n\n                default:\n                    throw new MyMwcExceptionApplicationShouldNotGetHere();\n            }\n        }\n\n        static void SetupShaderForMaterialAlternative(MyEffectBase shader, MyVoxelCacheCellRenderBatchType batchType, MyMwcVoxelMaterialsEnum m0, MyMwcVoxelMaterialsEnum? m1, MyMwcVoxelMaterialsEnum? m2)\n        {\n            MyEffectVoxels effectVoxels = shader as MyEffectVoxels;\n\n            if (batchType == MyVoxelCacheCellRenderBatchType.SINGLE_MATERIAL)\n            {\n                effectVoxels.UpdateVoxelTextures(OverrideVoxelMaterial ?? m0);\n            }\n            else if (batchType == MyVoxelCacheCellRenderBatchType.MULTI_MATERIAL)\n            {\n                effectVoxels.UpdateVoxelMultiTextures(OverrideVoxelMaterial ?? m0, OverrideVoxelMaterial ?? m1, OverrideVoxelMaterial ?? m2);\n            }\n        }\n\n        static void SetupShaderForMaterialAlternative(MyEffectBase shader, MyMeshMaterial material)\n        {\n            switch (material.DrawTechnique)\n            {\n                case MyMeshDrawTechnique.MESH:\n                case MyMeshDrawTechnique.DECAL:\n                case MyMeshDrawTechnique.HOLO:\n                case MyMeshDrawTechnique.ALPHA_MASKED:\n                    {\n                        if (material != null)\n                        {\n                            shader.SetTextureDiffuse(material.DiffuseTexture);\n                            shader.SetTextureNormal(material.NormalTexture);\n\n                            //Do we need this? Graphicians dont use this\n                            //shader.SetDiffuseColor(material.DiffuseColor);\n\n                            shader.SetSpecularIntensity(material.SpecularIntensity);\n                            shader.SetSpecularPower(material.SpecularPower);\n\n                            shader.SetDiffuseUVAnim(material.DiffuseUVAnim);\n                            shader.SetEmissivityUVAnim(material.EmissiveUVAnim);\n\n                            shader.SetEmissivityOffset(material.EmissivityOffset);\n\n                            if (material.DrawTechnique == MyMeshDrawTechnique.HOLO)\n                            {\n                                shader.SetEmissivity(material.HoloEmissivity);\n                            }\n\n                            // Commented due 856 - graphicians have to reexport white diffuse colors from MAX\n                            //shader.SetDiffuseColor(material.DiffuseColor);\n                        }\n                        else\n                        {\n                            shader.SetTextureDiffuse(null);\n                            shader.SetTextureNormal(null);\n\n                            shader.SetSpecularPower(1);\n                            shader.SetSpecularIntensity(1);\n\n                            //this value is set from object if not from material\n                            //shader.SetDiffuseColor(material.DiffuseColor);\n                        }\n\n                        if (CheckDiffuseTextures)\n                        {\n                            if (!shader.IsTextureDiffuseSet())\n                            {\n                                LazyLoadDebugTextures();\n\n                                shader.SetTextureDiffuse(m_debugTexture);\n                                shader.SetDiffuseColor(Vector3.One);\n                                shader.SetEmissivity(1);\n                            }\n                            else\n                            {\n                                if (material.DrawTechnique != MyMeshDrawTechnique.HOLO)\n                                {\n                                    shader.SetEmissivity(0);\n                                }\n                            }\n                        }\n                        if (CheckNormalTextures)\n                        {\n                            if (!shader.IsTextureNormalSet())\n                            {\n                                LazyLoadDebugTextures();\n\n                                shader.SetTextureDiffuse(m_debugTexture);\n                                shader.SetEmissivity(1);\n                            }\n                            else\n                            {\n                                shader.SetTextureDiffuse(material.NormalTexture);\n                                //shader.SetTextureDiffuse(m_debugNormalTexture);\n                                shader.SetEmissivity(0);\n                            }\n                        }\n\n                        if (!shader.IsTextureNormalSet())\n                        {\n                            LazyLoadDebugTextures();\n                            shader.SetTextureNormal(m_debugTexture);\n                        }\n\n                    }\n                    break;\n\n                case MyMeshDrawTechnique.VOXELS_STATIC_ASTEROID:\n                case MyMeshDrawTechnique.VOXELS_DEBRIS:\n                    break;\n\n                default:\n                    {\n                        throw new MyMwcExceptionApplicationShouldNotGetHere();\n                    }\n            }\n        }\n\n        static void BeginShaderAlternative(MyEffectBase shader, MyMeshDrawTechnique technique, MyVoxelCacheCellRenderBatchType batchType)\n        {\n            switch (technique)\n            {\n                case MyMeshDrawTechnique.DECAL:\n                    {\n                        if (shader is MyEffectModelsDNS)\n                        {\n                            (shader as MyEffectModelsDNS).BeginBlended();\n                        }\n                    }\n                    break;\n                case MyMeshDrawTechnique.HOLO:\n                    {\n                        if (m_currentLodDrawPass != MyLodTypeEnum.LOD_NEAR && !MyRenderConstants.RenderQualityProfile.ForwardRender)\n                        {\n                            (shader as MyEffectModelsDNS).ApplyHolo(false);\n                        }\n                        else\n                        {\n                            (shader as MyEffectModelsDNS).ApplyHolo(true);\n                        }\n                    }\n                    break;\n                case MyMeshDrawTechnique.ALPHA_MASKED:\n                    {\n                        (shader as MyEffectModelsDNS).ApplyMasked();\n                    }\n                    break;\n                case MyMeshDrawTechnique.VOXEL_MAP:\n                    {\n                        MyEffectVoxels effectVoxels = shader as MyEffectVoxels;\n                        if (batchType == MyVoxelCacheCellRenderBatchType.SINGLE_MATERIAL)\n                        {\n                            effectVoxels.Apply();\n                        }\n                        else if (batchType == MyVoxelCacheCellRenderBatchType.MULTI_MATERIAL)\n                        {\n                            effectVoxels.ApplyMultimaterial();\n                        }\n                        break;\n                    }\n                case MyMeshDrawTechnique.VOXELS_STATIC_ASTEROID:\n                    {\n                        ((MyEffectVoxelsStaticAsteroid)shader).Apply();\n                    }\n                    break;\n                case MyMeshDrawTechnique.MESH:\n                    {\n                        ((MyEffectModelsDNS)shader).SetTechnique(MyRenderConstants.RenderQualityProfile.ModelsRenderTechnique);\n                    }\n                    break;\n                case MyMeshDrawTechnique.VOXELS_DEBRIS:\n                    {\n                        ((MyEffectVoxelsDebris)shader).SetTechnique(MyRenderConstants.RenderQualityProfile.VoxelsRenderTechnique);\n                    }\n                    break;\n                default:\n                    {\n                        System.Diagnostics.Debug.Assert(false);\n                    }\n                    break;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Render/MyRender.cs",
    "content": "﻿#region Using\n\nusing System;\nusing System.Collections.Generic;\n\nusing MinerWars.CommonLIB.AppCode.Generics;\n\nusing MinerWars.AppCode.Game.Effects;\nusing MinerWars.AppCode.Game.Lights;\nusing MinerWars.AppCode.Game.Models;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Utils;\n\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.Render.EnvironmentMap;\nusing MinerWars.AppCode.Game.Render.Shadows;\nusing MinerWars.AppCode.Game.Voxels;\n//using System.Threading;\n//using System.Threading.Tasks;\n\nusing MinerWars.AppCode.Physics;\nusing MinerWars.AppCode.Game.Physics;\nusing MinerWars.CommonLIB.AppCode.Networking;\n\nusing MinerWarsMath;\n//using MinerWarsMath.Graphics;\n\nusing SharpDX;\nusing SharpDX.Direct3D9;\nusing SharpDX.Toolkit;\nusing SharpDX.Toolkit.Graphics;\n\n#endregion\n\nnamespace MinerWars.AppCode.Game.Render\n{\n    using Vector2 = MinerWarsMath.Vector2;\n    using Vector3 = MinerWarsMath.Vector3;\n    using Rectangle = MinerWarsMath.Rectangle;\n    using Matrix = MinerWarsMath.Matrix;\n    using Color = MinerWarsMath.Color;\n    using BoundingBox = MinerWarsMath.BoundingBox;\n    using BoundingSphere = MinerWarsMath.BoundingSphere;\n    using BoundingFrustum = MinerWarsMath.BoundingFrustum;\n    using MinerWars.CommonLIB.AppCode.Import;\n\n    #region Enums\n    public enum MyRenderTargets\n    {\n        Normals,\n        Diffuse,\n        Depth,\n        DepthHalf,\n        ZBuffer,\n\n        SSAO,\n        SSAOBlur,\n\n        Auxiliary0,\n        Auxiliary1,\n        Auxiliary2,\n        AuxiliaryHalf0,\n        AuxiliaryQuarter0,\n        AuxiliaryHalf1010102,\n\n        HDR4,\n        HDR4Threshold,\n\n        ShadowMap,\n        ShadowMapZBuffer,\n        SecondaryShadowMap,\n        SecondaryShadowMapZBuffer,\n\n        // Environment map 2D texture - for rendering one face of cube texture\n        EnvironmentMap,\n\n        // Environment map cube texture - rendered cube texture (small size 6x128x128 or similar)\n        EnvironmentCube,\n        EnvironmentCubeAux,\n\n        // Ambient map cube texture - precalculated ambient from cube (small size 6x128x128 or similar)\n        AmbientCube,\n        AmbientCubeAux,\n\n        // Environment map aux texture (size of one face - to apply effects)\n        EnvironmentFaceAux,\n        EnvironmentFaceAux2,\n\n        SecondaryCamera,\n        SecondaryCameraZBuffer,\n    }\n\n    public enum MyEffects\n    {\n        //Rendering\n        PointLight,\n        DirectionalLight,\n        BlendLights,\n        //LodTransition2,\n        ClearGBuffer,\n        ShadowMap,\n        //ShadowOcclusion,\n        TransparentGeometry,\n        //HudSectorBorder,\n        Decals,\n\n        //Post process effects\n        SSAOBlur,\n        VolumetricSSAO,\n        GaussianBlur,\n        DownsampleForSSAO,\n        AntiAlias,\n        Screenshot,\n        Scale,\n        Threshold,\n        HDR,\n        Luminance,\n        Contrast,\n        VolumetricFog,\n        GodRays,\n\n        //Model effects\n        ModelDNS,\n        ModelDiffuse,\n        VoxelDebrisMRT,\n        VoxelsMRT,\n        VoxelStaticAsteroidMRT,\n        Gizmo,\n\n        //Occlusion queries\n        OcclusionQueryDrawMRT,\n\n        //Sprite Effects\n        VideoSpriteEffects,\n\n        //Ambient map\n        AmbientMapPrecalculation,\n\n        //Background\n        DistantImpostors,\n        BackgroundCube,\n        //DebugDrawBillboards,\n\n        //HUD\n        HudRadar,\n        Hud,\n        CockpitGlass,\n\n        //SolarSystemMap\n        SolarMapGrid\n    }\n\n    public enum MyRenderStage\n    {\n        PrepareForDraw,\n        Background,\n        LODDrawStart,\n        LODDrawEnd,\n        AllGeometryRendered,\n        AlphaBlendPreHDR,\n        AlphaBlend,\n        DebugDraw\n    }\n\n    /// <summary>\n    /// This enum should contain an identificator for anything that uses the MyRender pipeline.\n    /// </summary>\n    public enum MyRenderCallerEnum\n    {\n        Main,\n        EnvironmentMap,\n        SolarMap,\n        SecondaryCamera,\n        GUIPreview,\n    }\n    public enum MyPostProcessEnum\n    {\n        VolumetricSSAO2,\n        HDR,\n        Contrast,\n        VolumetricFog,\n        FXAA,\n        GodRays\n\n    }\n    public enum MyRenderModuleEnum\n    {\n        Cockpit,\n        CockpitGlass,\n        SunGlareAndLensFlare,\n        UpdateOcclusions,\n        AnimatedParticlesPrepare,\n        TransparentGeometry,\n        ParticlesDustField,\n        VoxelHand,\n        DistantImpostors,\n        Decals,\n        CockpitWeapons,\n        SunGlow,\n        SectorBorder,\n        DrawSectorBBox, // SectorBorderRendering\n        DrawCoordSystem,\n        Explosions,\n        BackgroundCube,\n        GPS,\n        TestField,\n        AnimatedParticles,\n        Lights,\n        TransparentGeometryForward,\n        Projectiles,\n        DebrisField,\n        ThirdPerson,\n        Editor,\n        SolarObjects,\n        SolarMapGrid,\n        PrunningStructure,\n        SunWind,\n        IceStormWind,\n        PrefabContainerManager,\n        InfluenceSpheres,\n        SolarAreaBorders,\n        PhysicsPrunningStructure,\n        NuclearExplosion,\n        AttackingBots,\n    }\n    #endregion\n\n    static partial class MyRender\n    {\n        \n\n        #region Delegates\n\n        public delegate void DrawEventHandler();\n\n        #endregion\n\n        #region Nested classes\n\n\n        public class MyRenderSetup\n        {\n            /// <summary>\n            /// Holds information about who is calling the MyRender.Draw() method.\n            /// This information is mandatory.\n            /// </summary>\n            public MyRenderCallerEnum? CallerID;\n\n            public Texture[] RenderTargets;\n            public Texture DepthTarget;\n\n            public Vector3? CameraPosition;\n\n            Matrix? m_viewMatrix;\n\n            public Matrix? ViewMatrix\n            {\n                get { return m_viewMatrix; }\n\n                set\n                {\n                    m_viewMatrix = value;\n                    if (m_viewMatrix != null)\n                    {\n                        MyUtils.AssertIsValid(m_viewMatrix.Value);\n                    }\n                }\n            }\n            public Matrix? ProjectionMatrix;\n            public float? AspectRatio;\n            public float? Fov;\n            public Viewport? Viewport;\n\n            public float? LodTransitionNear; // Used\n            public float? LodTransitionFar; // Used\n            public float? LodTransitionBackgroundStart; // Used\n            public float? LodTransitionBackgroundEnd; // Used\n\n            public bool? EnableHDR; // Used\n            public bool? EnableLights; // Used\n            public bool? EnableSun; // Used\n            public MyShadowRenderer ShadowRenderer; // Used - null for no shadows\n            public bool? EnableShadowInterleaving;\n            public bool? EnableSmallLights; // Used\n            public bool? EnableSmallLightShadows; // Used\n            public bool? EnableDebugHelpers; // Used\n            public bool? EnableEnvironmentMapping;\n            public bool? EnableNear;\n            public bool EnableOcclusionQueries; //Used\n            public bool EnableZoom;\n            public float FogMultiplierMult; //Used\n            public bool DepthToAlpha;\n\n            // If background color is set, background cube is replaced by color\n            public Color? BackgroundColor;\n\n            public HashSet<MyRenderModuleEnum> EnabledModules; // Used\n            public HashSet<MyPostProcessEnum> EnabledPostprocesses; // Used\n            public HashSet<MyRenderStage> EnabledRenderStages; // Used\n\n            public List<MyLight> LightsToUse; // if null, MyLights.GetLights() will be used\n            public List<MyRenderElement> RenderElementsToDraw; // if null, MyEntities.Draw() will be used\n            public List<MyRenderElement> TransparentRenderElementsToDraw; // if null, MyEntities.Draw() will be used\n\n            public void Clear()\n            {\n                CallerID = null;\n\n                RenderTargets = null;\n                CameraPosition = null;\n                ViewMatrix = null;\n                ProjectionMatrix = null;\n                AspectRatio = null;\n                Fov = null;\n                Viewport = null;\n\n                LodTransitionNear = null;\n                LodTransitionFar = null;\n                LodTransitionBackgroundStart = null;\n                LodTransitionBackgroundEnd = null;\n\n                EnableHDR = null;\n                EnableLights = null;\n                EnableSun = null;\n                ShadowRenderer = null;\n                EnableShadowInterleaving = null;\n                EnableSmallLights = null;\n                EnableSmallLightShadows = null;\n                EnableDebugHelpers = null;\n                EnableEnvironmentMapping = null;\n                EnableNear = null;\n\n                BackgroundColor = null;\n\n                EnableOcclusionQueries = true;\n                EnableZoom = true;\n                FogMultiplierMult = 1.0f;\n                DepthToAlpha = false;\n\n                EnabledModules = null;\n                EnabledPostprocesses = null;\n                EnabledRenderStages = null;\n            }\n        }\n\n        public class MyRenderModuleItem\n        {\n            public string DisplayName;\n            public MyRenderModuleEnum Name;\n            public int Priority; // Lower is higher priority\n            public DrawEventHandler Handler;\n            public bool Enabled;\n\n\n            public override string ToString()\n            {\n                return DisplayName;\n            }\n        }\n\n        internal class MyRenderElement\n        {\n            public MyMeshDrawTechnique DrawTechnique;\n            public MyMeshMaterial Material;\n\n            //Debug\n            //public string DebugName;\n            public MyEntity Entity;\n\n            //Element members\n            public VertexBuffer VertexBuffer;\n            public IndexBuffer IndexBuffer;\n            public int IndexStart;\n            public int TriCount;\n            public int VertexCount;\n            public VertexDeclaration VertexDeclaration;\n            public int VertexStride;\n\n            public Matrix WorldMatrix;\n            public Matrix WorldMatrixForDraw;\n\n            //public bool UseChannels;\n            //public MyTexture2D MaskTexture;\n\n\n            public MyVoxelCacheCellRenderBatch VoxelBatch;\n\n            public override string ToString()\n            {\n                return \"DrawTechnique: \" + DrawTechnique.ToString() + \" IB:\" + IndexBuffer.GetHashCode().ToString();\n            }\n        }\n\n        internal class MyLightRenderElement\n        {\n            public class MySpotComparer : IComparer<MyLightRenderElement>\n            {\n                public int Compare(MyLightRenderElement x, MyLightRenderElement y)\n                {\n                    var result = x.RenderShadows.CompareTo(y.RenderShadows);\n                    if (result == 0)\n                    {\n                        var xHash = x.Light.ReflectorTexture != null ? x.Light.ReflectorTexture.GetHashCode() : 0;\n                        var yHash = y.Light.ReflectorTexture != null ? y.Light.ReflectorTexture.GetHashCode() : 0;\n                        result = xHash.CompareTo(yHash);\n                    }\n                    return result;\n                }\n            }\n\n            public static MySpotComparer SpotComparer = new MySpotComparer();\n\n            public MyLight Light;\n            public Matrix World;\n            public Matrix View;\n            public Matrix Projection;\n            public Matrix ShadowLightViewProjection;\n            public Texture ShadowMap;\n            public BoundingBox BoundingBox;\n            public bool RenderShadows;\n            public bool UseReflectorTexture; // If we should use reflector texture for spot light\n        }\n\n        //  Used to sort render elements by their properties to spare switching render states\n        class MyRenderElementsComparer : IComparer<MyRenderElement>\n        {\n            public int Compare(MyRenderElement x, MyRenderElement y)\n            {\n                MyMeshDrawTechnique xDrawTechnique = x.DrawTechnique;\n                MyMeshDrawTechnique yDrawTechnique = y.DrawTechnique;\n\n                if (xDrawTechnique == yDrawTechnique)\n                {\n                    if (x.VoxelBatch != null && y.VoxelBatch != null)\n                    {\n                        return ((short)x.VoxelBatch.SortOrder).CompareTo((short)y.VoxelBatch.SortOrder);\n                    }\n\n                    int xMat = x.Material.GetHashCode();\n                    int yMat = y.Material.GetHashCode();\n\n                    if (xMat == yMat)\n                    {\n                        // This is right and slightly faster, static get hash code returns instance identifier\n                        return System.Runtime.CompilerServices.RuntimeHelpers.GetHashCode(x.VertexBuffer).CompareTo(System.Runtime.CompilerServices.RuntimeHelpers.GetHashCode(y.VertexBuffer));\n                    }\n                    else\n                    {\n                        return xMat.CompareTo(yMat);\n                    }\n                }\n\n                return ((int)xDrawTechnique).CompareTo((int)yDrawTechnique);\n            }\n        }\n\n        #endregion\n\n        #region Public Members\n\n        public static bool AlternativeSort = true;\n\n        public static bool ScreenshotOnlyFinal = true;\n\n        public static bool ShowHWOcclusionQueries = false;\n        public static bool EnableHWOcclusionQueries = true;\n        public static bool EnableHWOcclusionQueriesForShadows = false;\n\n        public static uint RenderCounter { get { return m_renderCounter; } }\n        public static readonly Vector3 PrunningExtension = new Vector3(10, 10, 10);\n\n        public static bool SkipLOD_NEAR = false;\n        public static bool SkipLOD_0 = false;\n        public static bool SkipLOD_1 = false;\n\n        public static bool SkipVoxels = false;\n\n        public static bool DebugDiffuseTexture = false;\n        public static bool DebugNormalTexture = false;\n\n\n        public static Vector3 AmbientColor;\n        public static float AmbientMultiplier;\n        public static float EnvAmbientIntensity;\n\n        //Debug properties\n        //public static bool ShowLODScreens = false;\n        public static bool ShowEnvironmentScreens = false;\n        public static bool ShowBlendedScreens = false;\n        //public static bool EnableLODBlending = true;\n        public static bool ShowGreenBackground = false;\n        public static bool ShowLod1WithRedOverlay = false;\n        \n        //TODO\n        public static bool EnableLights = true;\n        public static bool EnableLightsRuntime = true;\n        public static bool ShowEnhancedRenderStatsEnabled = false;\n        public static bool ShowResourcesStatsEnabled = false;\n        public static bool ShowTexturesStatsEnabled = false;\n\n        public static bool EnableSun = true;\n        public static bool EnableShadows = true;\n        public static bool EnableAsteroidShadows = false;\n        public static bool EnableFog = true;\n\n        public static bool EnableEnvironmentMapAmbient\n        {\n            get { return m_enableEnvironmentMapAmbient; }\n            set { m_enableEnvironmentMapAmbient = value; if (value) MyEnvironmentMap.Reset(); }\n        }\n\n        public static bool EnableEnvironmentMapReflection\n        {\n            get { return m_enableEnvironmentMapReflection; }\n            set { m_enableEnvironmentMapReflection = value; if (value) MyEnvironmentMap.Reset(); }\n        }\n\n        public static bool EnablePerVertexVoxelAmbient = true;\n        public static bool ShowCascadeSplits = false;\n\n        //blinkg moving asteroids\n        public static bool ShadowInterleaving = true;\n\n        public static bool[] FreezeCascade = new bool[4];\n        public static bool FreezeCascade0 { get { return FreezeCascade[0]; } set { FreezeCascade[0] = value; } }\n        public static bool FreezeCascade1 { get { return FreezeCascade[1]; } set { FreezeCascade[1] = value; } }\n        public static bool FreezeCascade2 { get { return FreezeCascade[2]; } set { FreezeCascade[2] = value; } }\n        public static bool FreezeCascade3 { get { return FreezeCascade[3]; } set { FreezeCascade[3] = value; } }\n\n        public static bool Wireframe = false;\n        public static bool EnableStencilOptimization = true;\n        public static bool EnableStencilOptimizationLOD1 = true;\n        public static bool ShowStencilOptimization = false;\n\n        public static bool CheckDiffuseTextures = true;\n        public static bool CheckNormalTextures = false;\n\n        public static bool ShowSpecularIntensity = false;\n        public static bool ShowSpecularPower = false;\n        public static bool ShowEmissivity = false;\n        public static bool ShowReflectivity = false;\n\n        public static bool EnableSpotShadows = true;\n\n        public static bool EnableSpectatorReflector = true;\n        public static bool DrawSpectatorReflector = false;\n        public static MyLight SpectatorReflector;\n\n        public static bool DrawPlayerLightShadow = false;\n        public static MyLight PlayerLight;\n\n        public static MyMwcVoxelMaterialsEnum? OverrideVoxelMaterial = null;\n\n\n#if RENDER_PROFILING\n        public static bool EnableEntitiesPrepareInBackground = true;\n#else\n        public static bool EnableEntitiesPrepareInBackground = true;\n#endif\n       \n\n        // When no render setup on stack, we're rendering main fullscreen scene (no mirror, env.map etc)\n        public static bool MainRendering\n        {\n            get\n            {\n                return m_renderSetupStack.Count == 0;\n            }\n        }\n\n        /// <summary>\n        /// Current render setup, it's safe to get value from any field, all nullable fields has value.\n        /// Do not write to this, use Push/Pop functions\n        /// </summary>\n        public static MyRenderSetup CurrentRenderSetup\n        {\n            get\n            {\n                return m_currentSetup;\n            }\n        }\n\n        //Temporary debug for occ queris\n        public static bool RenderOcclusionsImmediatelly = false;\n\n        //Too much render elements\n        public static bool IsRenderOverloaded = false;\n\n\n        #endregion\n\n        #region Members\n\n\n        private static MyRenderSetup m_currentSetup = new MyRenderSetup();\n        private static List<MyRenderSetup> m_renderSetupStack = new List<MyRenderSetup>(10);\n        private static MyRenderSetup m_backupSetup = new MyRenderSetup();\n\n        private static List<MyTexture2D> m_textures = new List<MyTexture2D>(5);\n        private static List<MyLight> m_lightsToRender = new List<MyLight>(20);\n        private static List<MyLight> m_pointLights = new List<MyLight>(50); // just references\n        private static List<MyLight> m_hemiLights = new List<MyLight>(50); // just references\n\n\n        private static bool m_enableEnvironmentMapAmbient = true;\n        private static bool m_enableEnvironmentMapReflection = true;\n\n        static readonly BaseTexture[] m_renderTargets = new BaseTexture[Enum.GetValues(typeof(MyRenderTargets)).GetLength(0)];\n        static readonly BaseTexture[] m_spotShadowRenderTargets = new BaseTexture[MyRenderConstants.SPOT_SHADOW_RENDER_TARGET_COUNT];\n        static readonly BaseTexture[] m_spotShadowRenderTargetsZBuffers = new BaseTexture[MyRenderConstants.SPOT_SHADOW_RENDER_TARGET_COUNT];\n\n        static readonly List<MyLightRenderElement> m_spotLightRenderElements = new List<MyLightRenderElement>(MyRenderConstants.SPOT_SHADOW_RENDER_TARGET_COUNT);\n        static MyObjectsPool<MyLightRenderElement> m_spotLightsPool = new MyObjectsPool<MyLightRenderElement>(400); // Maximum number of spotlights allowed\n\n        static readonly MyEffectBase[] m_effects = new MyEffectBase[Enum.GetValues(typeof(MyEffects)).GetLength(0)];\n        static readonly List<MyRenderModuleItem>[] m_renderModules = new List<MyRenderModuleItem>[Enum.GetValues(typeof(MyRenderStage)).GetLength(0)];\n\n        static MyLodTypeEnum m_currentLodDrawPass;\n        static List<MyRenderObject> m_renderObjectsToDraw = new List<MyRenderObject>(MyModelsConstants.MAX_ENTITIES_TO_DRAW);\n        static HashSet<MyEntity> m_entitiesToDebugDraw = new HashSet<MyEntity>();\n        static List<MyPostProcessBase> m_postProcesses = new List<MyPostProcessBase>();\n\n        //static MyObjectsPool<MyRenderElement> m_renderElementsPool = new MyObjectsPool<MyRenderElement>(MyRenderConstants.MAX_RENDER_ELEMENTS_COUNT);\n        static MyRenderElement[] m_renderElementsPool = new MyRenderElement[MyRenderConstants.MAX_RENDER_ELEMENTS_COUNT];\n        static int m_renderElementIndex = 0;\n        static MyRenderElementsComparer m_renderElementsComparer = new MyRenderElementsComparer();\n        static List<MyRenderElement> m_renderElements = new List<MyRenderElement>(MyRenderConstants.MAX_RENDER_ELEMENTS_COUNT);\n        static List<MyRenderElement> m_transparentRenderElements = new List<MyRenderElement>(MyRenderConstants.MAX_RENDER_ELEMENTS_COUNT);\n        static BoundingSphere m_lightBoundigSphere = new BoundingSphere();\n        static BoundingBox m_lightBoundingBox = new BoundingBox();\n        static Vector2 m_scaleToViewport = Vector2.One;\n\n        static MySortedElements m_sortedElements = new MySortedElements();\n\n        static Texture[] m_GBufferDefaultBinding;\n        //static RenderTargetBinding[] m_GBufferLOD0Binding;\n        //static RenderTargetBinding[] m_GBufferLOD1Binding;\n        //static RenderTargetBinding[] m_GBufferLOD0ExBinding;\n        //static RenderTargetBinding[] m_GBufferAux1Lod1DiffBinding;\n        static Texture[] m_aux0Binding;\n\n        //Texture for debug rendering\n        static MyTexture2D m_debugTexture;\n        static MyTexture2D m_debugNormalTexture;\n        static MyTexture2D m_debugNormalTextureBump;\n        //static RenderTarget2D m_screenshot;\n\n        // Struct for getting statistics of render object\n        static MyRenderStatistics m_renderStatistics;\n\n        // Profiling of render\n        static MyRenderProfiler m_renderProfiler = new MyRenderProfiler();\n\n        //Shadows rendering\n        static MyShadowRenderer m_shadowRenderer;\n\n        // Spol light shadows \n        static MySpotShadowRenderer m_spotShadowRenderer;\n\n        static Texture m_randomTexture = null;\n\n        //Enabled renderer\n        private static bool m_enabled = true;\n        private static uint m_renderCounter = 0;\n        \n\n        static HashSet<MyRenderObject> m_nearObjects = new HashSet<MyRenderObject>();\n\n        \n        static MyDynamicAABBTree m_prunningStructure = new MyDynamicAABBTree(PrunningExtension);\n        static MyDynamicAABBTree m_cullingStructure = new MyDynamicAABBTree(PrunningExtension);\n        static MyDynamicAABBTree m_shadowPrunningStructure = new MyDynamicAABBTree(PrunningExtension);\n        static List<MyElement> m_renderObjectListForDraw = new List<MyElement>(16384); // for draw method, using separate list, so that it cannot be impacted by concurrent modification\n        static List<MyElement> m_renderObjectListForDrawMain = new List<MyElement>(16384); // for draw method, using separate list, so that it cannot be impacted by concurrent modification\n        static List<MyElement> m_cullObjectListForDraw = new List<MyElement>(16384); // for draw method, using separate list, so that it cannot be impacted by concurrent modification\n        static List<MyElement> m_cullObjectListForDrawMain = new List<MyElement>(16384); // for draw method, using separate list, so that it cannot be impacted by concurrent modification\n        static List<MyElement> m_renderObjectListForIntersections = new List<MyElement>(128); \n        static List<MyElement> m_cullObjectListForIntersections = new List<MyElement>(128);\n        static List<MyOcclusionQueryIssue> m_renderOcclusionQueries = new List<MyOcclusionQueryIssue>(256); // for draw method, using separate list, so that it cannot be impacted by concurrent modification\n        static List<MyOcclusionQueryIssue> m_renderOcclusionQueriesMain = new List<MyOcclusionQueryIssue>(256); // for draw method, using separate list, so that it cannot be impacted by concurrent modification\n        static MyPhysObjectVoxelMapByDistanceComparer m_sortedVoxelMapsByDistanceComparer = new MyPhysObjectVoxelMapByDistanceComparer();\n        static BoundingBox m_cameraFrustumBox;\n        static BoundingFrustum m_cameraFrustum = new BoundingFrustum(Matrix.Identity);\n        static BoundingFrustum m_cameraFrustumMain = new BoundingFrustum(Matrix.Identity);\n        static Vector3 m_cameraPosition;\n        static Vector3 m_cameraPositionMain;\n        static float m_cameraZoomDivider;\n        static float m_cameraZoomDividerMain;\n\n        static List<MyRenderObject> m_debugRenderObjectListForDrawLOD0 = new List<MyRenderObject>();\n        static List<MyRenderObject> m_debugRenderObjectListForDrawLOD1 = new List<MyRenderObject>();\n\n        static Device m_device;\n        //Sun\n        static Lights.MyDirectionalLight m_sun = new MyDirectionalLight();\n        static Vector3[] frustumCorners = new Vector3[8];\n\n      \n        #endregion\n\n        #region Init\n\n        static MyRender()\n        {\n            //Initialize post processes\n            m_postProcesses.Add(new MyPostProcessHDR());\n            m_postProcesses.Add(new MyPostProcessAntiAlias());\n            m_postProcesses.Add(new MyPostProcessVolumetricSSAO2());\n            //m_postProcesses.Add(new MyPostProcessContrast());\n            m_postProcesses.Add(new MyPostProcessVolumetricFog());\n\n            m_postProcesses.Add(new MyPostProcessGodRays());\n\n            //Initialize for event registration\n            for (int i = 0; i < Enum.GetValues(typeof(MyRenderStage)).GetLength(0); i++)\n            {\n                m_renderModules[i] = new List<MyRenderModuleItem>();\n            }\n\n            for (int i = 0; i < MyRenderConstants.MAX_RENDER_ELEMENTS_COUNT; i++)\n            {\n                m_renderElementsPool[i] = new MyRenderElement();\n            }\n\n            m_sun.Start();\n\n            //m_prepareEntitiesEvent = new AutoResetEvent(false);\n            //Task.Factory.StartNew(PrepareEntitiesForDrawBackground, TaskCreationOptions.PreferFairness);\n\n            MyRender.RegisterRenderModule(MyRenderModuleEnum.PrunningStructure, \"Prunning structure\", DebugDrawPrunning, MyRenderStage.DebugDraw, 250, false);\n            MyRender.RegisterRenderModule(MyRenderModuleEnum.PhysicsPrunningStructure, \"Physics prunning structure\", MyPhysics.DebugDrawPhysicsPrunning, MyRenderStage.DebugDraw, 250, false);\n\n            MyRenderConstants.OnRenderQualityChange += new EventHandler(MyRenderConstants_OnRenderQualityChange);\n        }\n\n        static void MyRenderConstants_OnRenderQualityChange(object sender, EventArgs e)\n        {\n            //Recreate render targets with size depending on render quality\n            if (m_shadowRenderer != null)\n            {   //Test if content was already loaded\n                m_shadowRenderer.ChangeSize(GetShadowCascadeSize());\n                //CreateRenderTargets();\n            }\n        }\n\n        /// <summary>\n        /// Resets the render states.\n        /// </summary>\n        public static void ResetStates()\n        {\n            /*\n            //m_device.SetSamplerState(0, SharpDX.Direct3D9.SamplerState.MagFilter, TextureFilter.Point);\n            m_device.VertexSamplerStates[0] = SamplerState.PointClamp;\n            m_device.VertexSamplerStates[1] = SamplerState.PointClamp;\n            m_device.VertexSamplerStates[2] = SamplerState.PointClamp;\n            m_device.VertexSamplerStates[3] = SamplerState.PointClamp;\n\n            m_device.SamplerStates[0] = MyStateObjects.PointTextureFilter;\n            m_device.SamplerStates[1] = MyStateObjects.PointTextureFilter;\n            m_device.SamplerStates[2] = MyStateObjects.PointTextureFilter;\n            m_device.SamplerStates[3] = MyStateObjects.PointTextureFilter;\n            m_device.SamplerStates[4] = MyStateObjects.PointTextureFilter;\n            m_device.SamplerStates[5] = MyStateObjects.PointTextureFilter;\n            m_device.SamplerStates[6] = MyStateObjects.PointTextureFilter;\n            m_device.SamplerStates[7] = MyStateObjects.PointTextureFilter;\n             */\n        }\n\n        #endregion\n\n        #region Properties\n\n\n        internal static MyShadowRenderer GetShadowRenderer()\n        {\n            return m_currentSetup.ShadowRenderer != null ? m_currentSetup.ShadowRenderer : m_shadowRenderer;\n        }\n\n        public static MyDirectionalLight Sun\n        {\n            get { return m_sun; }\n        }\n\n        internal static MyRenderProfiler GetRenderProfiler()\n        {\n            return m_renderProfiler;\n        }\n\n        internal static bool Enabled\n        {\n            get { return m_enabled; }\n            set\n            {\n                m_enabled = value;\n            }\n        }\n\n        //  Resolve back buffer into texture. This method doesn't belong to GUI manager but I don't know about better place. It doesn't belong\n        //  to utils too, because it's too XNA specific.\n        \n        public static Texture GetBackBufferAsTexture()\n        {\n            //TODO\n            //return (new MyResolveBackBuffer(m_device)).RenderTarget;\n            return null;\n        } \n\n        #endregion\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Render/MyRenderConstants.cs",
    "content": "﻿using System;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.Effects;\n\nnamespace MinerWars.AppCode.Game.Render\n{\n    enum MyRenderQualityEnum\n    {\n        NORMAL = 0,\n        HIGH = 1,\n        EXTREME = 2,\n        LOW = 3\n    }\n\n    class MyRenderQualityProfile\n    {\n        public MyRenderQualityEnum RenderQuality;\n\n        //LODs\n        public float LodTransitionDistanceNear;\n        public float LodTransitionDistanceFar;\n        public float LodTransitionDistanceBackgroundStart;\n        public float LodTransitionDistanceBackgroundEnd;\n\n        // LODs for Environment maps\n        public float EnvironmentLodTransitionDistance;\n        public float EnvironmentLodTransitionDistanceBackground;\n            \n        //Textures\n        public TextureQuality TextureQuality;\n\n        //Voxels\n        public MyEffectVoxels.MyEffectVoxelsTechniqueEnum VoxelsRenderTechnique;\n\n        //Models\n        public MyEffectModelsDNS.MyEffectModelsDNSTechniqueEnum ModelsRenderTechnique;\n        public MyEffectModelsDNS.MyEffectModelsDNSTechniqueEnum ModelsBlendedRenderTechnique;\n        public MyEffectModelsDNS.MyEffectModelsDNSTechniqueEnum ModelsMaskedRenderTechnique;\n        public MyEffectModelsDNS.MyEffectModelsDNSTechniqueEnum ModelsHoloRenderTechnique;\n        //public MyEffectModelsDNS.MyEffectModelsDNSTechniqueEnum ModelsChannelsTechnique;\n        public MyEffectModelsDNS.MyEffectModelsDNSTechniqueEnum ModelsStencilTechnique;\n        //public MyEffectModelsDNS.MyEffectModelsDNSTechniqueEnum ModelsStencilTechniqueInstanced;\n        //public MyEffectModelsDNS.MyEffectModelsDNSTechniqueEnum ModelsInstancedTechnique;\n\n        //Shadows\n        /// <summary>\n        /// Determines last index of cascade, which will use LOD0 objects. Lower cascade index means\n        /// closer cascade to camera. Ie. 0 means all cascaded will use LOD1 models (worst shadow quality),\n        /// 5 means best quality, because all cascades will use LOD0 objects (we have 4 cascades currently);\n        /// </summary>\n        public int ShadowCascadeLODTreshold;\n        \n        /// <summary>\n        /// Size in pixels for one shadow map cascade (of 4 total). Be carefull, we are limited by 8192 in texture size on PC.\n        /// </summary>\n        public int ShadowMapCascadeSize;\n        public int SecondaryShadowMapCascadeSize; // For back camera\n\n        public int ShadowBiasMultiplier;\n        public bool EnableCascadeBlending;\n\n        //HDR\n        public bool EnableHDR;\n\n        //SSAO\n        public bool EnableSSAO;\n\n        //FXAA\n        public bool EnableFXAA;\n                        \n        //Environmentals\n        public bool EnableEnvironmentals;\n\n        //GodRays\n        public bool EnableGodRays;\n\n        //Geometry quality\n        public bool UseNormals;\n        public bool NeedReloadContent;\n\n        // Use additional channel textures on models (dirt, rust, etc...)\n        public bool UseChannels; \n\n        // Spot shadow max distance multiplier \n        public float SpotShadowsMaxDistanceMultiplier;\n\n        // Forward render\n        public bool ForwardRender;\n\n        // Low resolution particles\n        public bool LowResParticles;\n\n        // Distant impostors\n        public bool EnableDistantImpostors;\n\n        // Flying debris\n        public bool EnableFlyingDebris;\n\n        // Decals\n        public bool EnableDecals;\n\n        //Explosion voxel debris\n        public float ExplosionDebrisCountMultiplier;\n    }\n\n    static class MyRenderConstants\n    {\n        /// <summary>\n        /// Maximum distance for which a light uses occlusion an occlusion query.\n        /// </summary>\n        public const float MAX_GPU_OCCLUSION_QUERY_DISTANCE = 150;\n\n        public static readonly int MAX_RENDER_ELEMENTS_COUNT = 32768;\n        public static readonly int DEFAULT_RENDER_MODULE_PRIORITY = 100;\n        public static readonly int SPOT_SHADOW_RENDER_TARGET_COUNT = 4;\n        public static readonly int ENVIRONMENT_MAP_SIZE = 128;\n                \n        public static readonly int MIN_OBJECTS_IN_CULLING_STRUCTURE = 128;\n        public static readonly int MAX_CULLING_OBJECTS = 64;\n        \n        public static readonly int MIN_PREFAB_OBJECTS_IN_CULLING_STRUCTURE = 32;\n        public static readonly int MAX_CULLING_PREFAB_OBJECTS = 256;\n\n        public static readonly int MIN_VOXEL_RENDER_CELLS_IN_CULLING_STRUCTURE = 2;\n        public static readonly int MAX_CULLING_VOXEL_RENDER_CELLS = 128;\n\n        public static float m_maxCullingPrefabObjectMultiplier = 1.0f;\n\n        public static readonly float DISTANCE_CULL_RATIO = 100; //in meters, how far must be 1m radius object to be culled by distance\n        public static readonly float DISTANCE_LIGHT_CULL_RATIO = 40;\n\n        static readonly MyRenderQualityProfile[] m_renderQualityProfiles = new MyRenderQualityProfile[Enum.GetValues(typeof(MyRenderQualityEnum)).Length];\n\n        public static MyRenderQualityProfile RenderQualityProfile { get; private set; }\n        public static event EventHandler OnRenderQualityChange = null;\n\n        static MyRenderConstants()\n        {\n            m_renderQualityProfiles[(int)MyRenderQualityEnum.NORMAL] = new MyRenderQualityProfile()\n            {\n                RenderQuality = MyRenderQualityEnum.NORMAL,\n\n                //LODs\n                LodTransitionDistanceNear = 1500,\n                LodTransitionDistanceFar = 2000,\n                LodTransitionDistanceBackgroundStart = 10000,\n                LodTransitionDistanceBackgroundEnd = 11000,\n\n                // No need to set, env maps enabled only on high and extreme\n                EnvironmentLodTransitionDistance = 200,\n                EnvironmentLodTransitionDistanceBackground = 300,\n\n                //Textures\n                TextureQuality = TextureQuality.Half,\n            \n                //Voxels\n                VoxelsRenderTechnique = MyEffectVoxelsBase.MyEffectVoxelsTechniqueEnum.Normal,\n\n                //Models\n                ModelsRenderTechnique = MyEffectModelsDNS.MyEffectModelsDNSTechniqueEnum.Normal,\n                ModelsBlendedRenderTechnique = MyEffectModelsDNS.MyEffectModelsDNSTechniqueEnum.NormalBlended,\n                ModelsMaskedRenderTechnique = MyEffectModelsDNS.MyEffectModelsDNSTechniqueEnum.NormalMasked,\n                ModelsHoloRenderTechnique = MyEffectModelsDNS.MyEffectModelsDNSTechniqueEnum.Holo,\n                //ModelsChannelsTechnique = MyEffectModelsDNS.MyEffectModelsDNSTechniqueEnum.Normal, // Do not use channels on normal\n                ModelsStencilTechnique = MyEffectModelsDNS.MyEffectModelsDNSTechniqueEnum.Stencil,\n                //ModelsStencilTechniqueInstanced = MyEffectModelsDNS.MyEffectModelsDNSTechniqueEnum.StencilInstanced,\n                //ModelsInstancedTechnique = MyEffectModelsDNS.MyEffectModelsDNSTechniqueEnum.Normalnstanced,\n\n                //Shadows\n                ShadowCascadeLODTreshold = 2,\n                ShadowMapCascadeSize = 1024,\n                SecondaryShadowMapCascadeSize = 64,\n                ShadowBiasMultiplier = 5,\n                EnableCascadeBlending = false,\n                \n                //HDR\n                EnableHDR = false,\n\n                //SSAO\n                EnableSSAO = false,\n\n                //FXAA\n                EnableFXAA = false,\n\n                //Environmentals\n                EnableEnvironmentals = false,\n\n                //GodRays\n                EnableGodRays = false,\n\n\n                //Geometry quality\n                UseNormals = true,\n                NeedReloadContent = true, //because normal->high and vertex channels\n                UseChannels = false,\n\n                // Spot shadow max distance multiplier \n                SpotShadowsMaxDistanceMultiplier = 1.0f,\n\n                // Forward render\n                ForwardRender = false,\n\n                // Low res particles\n                LowResParticles = true,\n\n                // Distant impostors\n                EnableDistantImpostors = false,\n\n                // Flying debris\n                EnableFlyingDebris = false,\n\n                // Decals\n                EnableDecals = false,\n\n                //Explosion voxel debris\n                ExplosionDebrisCountMultiplier = 0.5f,\n            };\n\n            m_renderQualityProfiles[(int)MyRenderQualityEnum.LOW] = new MyRenderQualityProfile()\n            {\n                RenderQuality = MyRenderQualityEnum.LOW,\n\n                //LODs\n                LodTransitionDistanceNear = 600,\n                LodTransitionDistanceFar = 800,\n                LodTransitionDistanceBackgroundStart = 3000,\n                LodTransitionDistanceBackgroundEnd = 3500,\n\n                // No need to set, env maps enabled only on high and extreme\n                EnvironmentLodTransitionDistance = 100,\n                EnvironmentLodTransitionDistanceBackground = 200,\n\n                //Textures\n                TextureQuality = TextureQuality.OneFourth,\n\n                //Voxels\n                VoxelsRenderTechnique = MyEffectVoxelsBase.MyEffectVoxelsTechniqueEnum.Low,\n\n                //Models\n                ModelsRenderTechnique = MyEffectModelsDNS.MyEffectModelsDNSTechniqueEnum.Low,\n                ModelsBlendedRenderTechnique = MyEffectModelsDNS.MyEffectModelsDNSTechniqueEnum.LowBlended,\n                ModelsMaskedRenderTechnique = MyEffectModelsDNS.MyEffectModelsDNSTechniqueEnum.LowMasked,\n                ModelsHoloRenderTechnique = MyEffectModelsDNS.MyEffectModelsDNSTechniqueEnum.HoloForward,\n                //ModelsChannelsTechnique = MyEffectModelsDNS.MyEffectModelsDNSTechniqueEnum.Low, // Do not use channels on low\n                ModelsStencilTechnique = MyEffectModelsDNS.MyEffectModelsDNSTechniqueEnum.StencilLow,\n                //ModelsStencilTechniqueInstanced = MyEffectModelsDNS.MyEffectModelsDNSTechniqueEnum.StencilLowInstanced,\n                //ModelsInstancedTechnique = MyEffectModelsDNS.MyEffectModelsDNSTechniqueEnum.LowInstanced,\n\n                //Shadows\n                ShadowCascadeLODTreshold = 2,\n                ShadowMapCascadeSize = 512,\n                SecondaryShadowMapCascadeSize = 32,\n                ShadowBiasMultiplier = 10,\n                EnableCascadeBlending = false,\n\n                //HDR\n                EnableHDR = false,\n\n                //SSAO\n                EnableSSAO = false,\n\n                //FXAA\n                EnableFXAA = false,   \n    \n                //Environmentals\n                EnableEnvironmentals = false,\n\n                //GodRays\n                EnableGodRays = false,\n\n                //Geometry quality\n                UseNormals = false,\n                NeedReloadContent = true,\n                UseChannels = false,\n\n                // Spot shadow max distance multiplier \n                SpotShadowsMaxDistanceMultiplier = 0.0f,\n\n                // Forward render\n                ForwardRender = true,\n\n                // Low res particles\n                LowResParticles = false,\n\n                // Distant impostors\n                EnableDistantImpostors = false,\n\n                // Flying debris\n                EnableFlyingDebris = false,\n\n                // Decals\n                EnableDecals = false,\n\n                //Explosion voxel debris\n                ExplosionDebrisCountMultiplier = 0,\n            };\n\n            m_renderQualityProfiles[(int)MyRenderQualityEnum.HIGH] = new MyRenderQualityProfile()\n            {\n                RenderQuality = MyRenderQualityEnum.HIGH,\n\n                //LODs\n                LodTransitionDistanceNear = 2000,\n                LodTransitionDistanceFar = 2500,\n                LodTransitionDistanceBackgroundStart = 18000,\n                LodTransitionDistanceBackgroundEnd = 20000,\n\n                EnvironmentLodTransitionDistance = 400,\n                EnvironmentLodTransitionDistanceBackground = 800,\n\n                //Textures\n                TextureQuality = TextureQuality.Full,\n\n                //Voxels\n                VoxelsRenderTechnique = MyEffectVoxelsBase.MyEffectVoxelsTechniqueEnum.High,\n\n                //Models\n                ModelsRenderTechnique = MyEffectModelsDNS.MyEffectModelsDNSTechniqueEnum.High,\n                ModelsBlendedRenderTechnique = MyEffectModelsDNS.MyEffectModelsDNSTechniqueEnum.HighBlended,\n                ModelsMaskedRenderTechnique = MyEffectModelsDNS.MyEffectModelsDNSTechniqueEnum.HighMasked,\n                ModelsHoloRenderTechnique = MyEffectModelsDNS.MyEffectModelsDNSTechniqueEnum.Holo,\n                //ModelsChannelsTechnique = MyEffectModelsDNS.MyEffectModelsDNSTechniqueEnum.HighChannels,\n                ModelsStencilTechnique = MyEffectModelsDNS.MyEffectModelsDNSTechniqueEnum.Stencil,\n                //ModelsStencilTechniqueInstanced = MyEffectModelsDNS.MyEffectModelsDNSTechniqueEnum.StencilInstanced,\n                //ModelsInstancedTechnique = MyEffectModelsDNS.MyEffectModelsDNSTechniqueEnum.HighInstanced,\n\n                //Shadows\n                ShadowCascadeLODTreshold = 2,\n                ShadowMapCascadeSize = 1024,\n                SecondaryShadowMapCascadeSize = 64,\n                ShadowBiasMultiplier = 2,\n                EnableCascadeBlending = true,\n\n                //HDR\n                EnableHDR = true,\n\n                //SSAO\n                EnableSSAO = true,\n\n                //FXAA\n                EnableFXAA = true,\n\n                //Environmentals\n                EnableEnvironmentals = true,\n\n                //GodRays\n                EnableGodRays = true,\n\n                //Geometry quality\n                UseNormals = true,\n                NeedReloadContent = true,\n                UseChannels = true,\n\n                // Spot shadow max distance multiplier \n                SpotShadowsMaxDistanceMultiplier = 2.5f,\n\n                // Forward render\n                ForwardRender = false,\n\n                // Low res particles\n                LowResParticles = false,\n\n                // Distant impostors\n                EnableDistantImpostors = true,\n\n                // Flying debris\n                EnableFlyingDebris = true,\n\n                // Decals\n                EnableDecals = true,\n\n                //Explosion voxel debris\n                ExplosionDebrisCountMultiplier = 0.8f,\n            };\n\n            m_renderQualityProfiles[(int)MyRenderQualityEnum.EXTREME] = new MyRenderQualityProfile()\n            {\n                RenderQuality = MyRenderQualityEnum.EXTREME,\n\n                //LODs\n                LodTransitionDistanceNear = 10000,\n                LodTransitionDistanceFar = 11000,\n                LodTransitionDistanceBackgroundStart = 42000,\n                LodTransitionDistanceBackgroundEnd = 50000,\n\n                EnvironmentLodTransitionDistance = 500,\n                EnvironmentLodTransitionDistanceBackground = 1000,\n\n                //Textures\n                TextureQuality = TextureQuality.Full,\n\n                //Voxels\n                VoxelsRenderTechnique = MyEffectVoxelsBase.MyEffectVoxelsTechniqueEnum.Extreme,\n\n                //Models\n                ModelsRenderTechnique = MyEffectModelsDNS.MyEffectModelsDNSTechniqueEnum.Extreme,\n                ModelsBlendedRenderTechnique = MyEffectModelsDNS.MyEffectModelsDNSTechniqueEnum.ExtremeBlended,\n                ModelsMaskedRenderTechnique = MyEffectModelsDNS.MyEffectModelsDNSTechniqueEnum.ExtremeMasked,\n                ModelsHoloRenderTechnique = MyEffectModelsDNS.MyEffectModelsDNSTechniqueEnum.Holo,\n                //ModelsChannelsTechnique = MyEffectModelsDNS.MyEffectModelsDNSTechniqueEnum.ExtremeChannels,\n                ModelsStencilTechnique = MyEffectModelsDNS.MyEffectModelsDNSTechniqueEnum.Stencil,\n                //ModelsStencilTechniqueInstanced = MyEffectModelsDNS.MyEffectModelsDNSTechniqueEnum.StencilInstanced,\n                //ModelsInstancedTechnique = MyEffectModelsDNS.MyEffectModelsDNSTechniqueEnum.ExtremeInstanced,\n\n                //Shadows\n                ShadowCascadeLODTreshold = 4,\n                ShadowMapCascadeSize = 2048,\n                SecondaryShadowMapCascadeSize = 128,\n                ShadowBiasMultiplier = 2,\n                EnableCascadeBlending = true,\n\n                //HDR\n                EnableHDR = true,\n\n                //SSAO\n                EnableSSAO = true,\n\n                //FXAA\n                EnableFXAA = true,\n\n                //Environmentals\n                EnableEnvironmentals = true,\n\n                //GodRays\n                EnableGodRays = true,\n\n                //Geometry quality\n                UseNormals = true,\n                NeedReloadContent = true,\n                UseChannels = true,\n\n                // Spot shadow max distance multiplier \n                SpotShadowsMaxDistanceMultiplier = 3.0f,\n\n                // Forward render\n                ForwardRender = false,\n\n                // Low res particles\n                LowResParticles = false,\n\n                // Distant impostors\n                EnableDistantImpostors = true,\n\n                // Flying debris\n                EnableFlyingDebris = true,\n\n                // Decals\n                EnableDecals = true,\n\n                //Explosion voxel debris\n                ExplosionDebrisCountMultiplier = 3.0f,\n            };\n\n            //Default value\n            RenderQualityProfile = m_renderQualityProfiles[(int)MyRenderQualityEnum.NORMAL];\n        }\n\n        public static void SwitchRenderQuality(MyRenderQualityEnum renderQuality)\n        {\n            RenderQualityProfile = m_renderQualityProfiles[(int)renderQuality];\n\n            if (OnRenderQualityChange != null)\n                OnRenderQualityChange(renderQuality, null);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Render/MySortedElements.Comparers.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Models;\nusing SharpDX.Direct3D9;\n\nnamespace MinerWars.AppCode.Game.Render\n{\n    partial class MySortedElements\n    {\n        class MeshMaterialComparer : IEqualityComparer<MyMeshMaterial>\n        {\n            public bool Equals(MyMeshMaterial x, MyMeshMaterial y)\n            {\n                // Can't compare members, that would kill performance.\n                // On hash collision, we're screwed (render artifacts)\n                // Solution would be to use global list of unique materials and then we can do object.ReferenceEquals\n                return x.HashCode == y.HashCode;\n            }\n\n            public int GetHashCode(MyMeshMaterial obj)\n            {\n                return obj.HashCode;\n            }\n        }\n\n        class VertexBufferComparer : IEqualityComparer<VertexBuffer>\n        {\n            public bool Equals(VertexBuffer x, VertexBuffer y)\n            {\n                return object.ReferenceEquals(x, y);\n            }\n\n            public int GetHashCode(VertexBuffer obj)\n            {\n                return System.Runtime.CompilerServices.RuntimeHelpers.GetHashCode(obj);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Render/MySortedElements.Models.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Models;\nusing SharpDX.Direct3D9;\n\nnamespace MinerWars.AppCode.Game.Render\n{\n    partial class MySortedElements\n    {\n        public class ModelSet\n        {\n            public const int AproxUsedMeshMaterials = 100;\n\n            public int RenderElementCount = 0;\n\n            // We can save 0.2ms (in scene with 2800 models) when using global mesh material table and access materials only by index (dictionary replaced by array)\n            public Dictionary<MyMeshMaterial, ModelMaterialSet> Models = new Dictionary<MyMeshMaterial, ModelMaterialSet>(AproxUsedMeshMaterials , m_meshMaterialComparer);\n        }\n\n        public class ModelMaterialSet\n        {\n            public const int AproxSameVertexBuffersPerMaterial = 10;\n\n            public int RenderElementCount = 0;\n\n            // Sorting by VertexBuffer is necessary, because there is often large number of same models\n            public Dictionary<VertexBuffer, List<MyRender.MyRenderElement>> Models = new Dictionary<VertexBuffer, List<MyRender.MyRenderElement>>(AproxSameVertexBuffersPerMaterial, m_vertexBufferComparer);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Render/MySortedElements.Voxels.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace MinerWars.AppCode.Game.Render\n{\n    partial class MySortedElements\n    {\n        public class VoxelSet\n        {\n            public const int AproxVoxelMaterials = 40; // Combinations of voxel (multi)materials in sector\n\n            public int RenderElementCount = 0;\n\n            public Dictionary<int, List<MyRender.MyRenderElement>> Voxels = new Dictionary<int, List<MyRender.MyRenderElement>>(AproxVoxelMaterials);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Render/MySortedElements.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.CommonLIB.AppCode.Import;\nusing MinerWars.AppCode.Game.Models;\nusing MinerWars.AppCode.Game.Voxels;\nusing SharpDX.Direct3D9;\n\nnamespace MinerWars.AppCode.Game.Render\n{\n    partial class MySortedElements\n    {\n        public static readonly int LodCount = MyMwcUtils.GetMaxValueFromEnum<MyLodTypeEnum>() + 1;\n        public static readonly int DrawTechniqueCount = MyMwcUtils.GetMaxValueFromEnum<MyMeshDrawTechnique>() + 1;\n        public static readonly int VoxelTechniqueCount = MyMwcUtils.GetMaxValueFromEnum<MyVoxelCacheCellRenderBatchType>() + 1;\n\n        static VertexBufferComparer m_vertexBufferComparer = new VertexBufferComparer();\n        static MeshMaterialComparer m_meshMaterialComparer = new MeshMaterialComparer();\n\n        // For further improvement...use global material index instead of MyMeshMaterial key (dictionary -> array)\n        // Are vertex buffers necessary?...for what...multiple MeshParts? (probably can be replaced by mesh/mesh part id)\n        public ModelSet[] Models = new ModelSet[LodCount * DrawTechniqueCount];\n\n        // For further improvement (removing dictinary), there can be array of voxel materials instead. It's 38^3 combinations (about 50K) which equals array size of 200 KB\n        public VoxelSet[] Voxels = new VoxelSet[LodCount * VoxelTechniqueCount];\n\n        public MySortedElements()\n        {\n            CreateRootDictionaries();\n        }\n\n        private void CreateRootDictionaries()\n        {\n            for (int i = 0; i < Models.Length; i++)\n            {\n                Models[i] = new ModelSet();\n            }\n\n            for (int i = 0; i < Voxels.Length; i++)\n            {\n                Voxels[i] = new VoxelSet();\n            }\n        }\n\n        internal void Add(MyLodTypeEnum lod, List<MyRender.MyRenderElement> m_renderElements)\n        {\n            foreach (var el in m_renderElements)\n            {\n                Add(lod, el);\n            }\n        }\n\n        public void Add(MyLodTypeEnum lod, MyRender.MyRenderElement renderElement)\n        {\n            if (renderElement.DrawTechnique == MyMeshDrawTechnique.VOXEL_MAP)\n                AddVoxel(lod, renderElement);\n            else\n                AddModel(lod, renderElement);\n        }\n\n        public void AddModel(MyLodTypeEnum lod, MyRender.MyRenderElement renderElement)\n        {\n            var matDict = Models[GetModelIndex(lod, renderElement.DrawTechnique)];\n            ModelMaterialSet vbDict;\n            if (!matDict.Models.TryGetValue(renderElement.Material, out vbDict))\n            {\n                vbDict = new ModelMaterialSet();\n                matDict.Models[renderElement.Material] = vbDict;\n            }\n\n            List<MyRender.MyRenderElement> elements;\n            if (!vbDict.Models.TryGetValue(renderElement.VertexBuffer, out elements))\n            {\n                elements = new List<MyRender.MyRenderElement>(20);\n                vbDict.Models[renderElement.VertexBuffer] = elements;\n            }\n\n            matDict.RenderElementCount++;\n            vbDict.RenderElementCount++;\n\n            elements.Add(renderElement);\n        }\n\n        public void AddVoxel(MyLodTypeEnum lod, MyRender.MyRenderElement renderElement)\n        {\n            var matDict = Voxels[GetVoxelIndex(lod, renderElement.VoxelBatch.Type)];\n            List<MyRender.MyRenderElement> elements;\n            if (!matDict.Voxels.TryGetValue(renderElement.VoxelBatch.MaterialId, out elements))\n            {\n                elements = new List<MyRender.MyRenderElement>(20);\n                matDict.Voxels[renderElement.VoxelBatch.MaterialId] = elements;\n            }\n            matDict.RenderElementCount++;\n            elements.Add(renderElement);\n        }\n\n        public void Clear()\n        {\n            foreach (var set in Models)\n            {\n                set.RenderElementCount = 0;\n                foreach (var dict in set.Models)\n                {\n                    dict.Value.RenderElementCount = 0;\n                    foreach (var list in dict.Value.Models)\n                    {\n                        list.Value.Clear();\n                    }\n                }\n            }\n\n            foreach (var set in Voxels)\n            {\n                set.RenderElementCount = 0;\n                foreach (var list in set.Voxels)\n                {\n                    list.Value.Clear();\n                }\n            }\n        }\n\n        public void ClearAndCompact()\n        {\n            CreateRootDictionaries();\n        }\n\n        public int GetModelIndex(MyLodTypeEnum lod, MyMeshDrawTechnique technique)\n        {\n            return ((byte)lod * DrawTechniqueCount) + (int)technique;\n        }\n\n        public int GetVoxelIndex(MyLodTypeEnum lod, MyVoxelCacheCellRenderBatchType technique)\n        {\n            return ((byte)lod * VoxelTechniqueCount) + (int)technique;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Render/PostProcesses/MyPostProcessAntiAlias.cs",
    "content": "﻿#region Using\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Effects;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing SysUtils;\n\nusing SharpDX.Toolkit.Graphics;\nusing SharpDX.Direct3D9;\n\n#endregion\n\nnamespace MinerWars.AppCode.Game.Render\n{\n    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n    //  Antialiasing\n    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n    class MyPostProcessAntiAlias : MyPostProcessBase\n    {\n\n        /// <summary>\n        /// Name of the post process\n        /// </summary>\n        public override MyPostProcessEnum Name { get { return MyPostProcessEnum.FXAA; } }\n        public override string DisplayName { get { return \"FXAA\"; } }\n\n        /// <summary>\n        /// Render method is called directly by renderer. Depending on stage, post process can do various things \n        /// </summary>\n        /// <param name=\"postProcessStage\">Stage indicating in which part renderer currently is.</param>public override void RenderAfterBlendLights()\n        public override Texture Render(PostProcessStage postProcessStage, Texture source, Texture availableRenderTarget)\n        {\n            switch (postProcessStage)\n            {\n                case PostProcessStage.AlphaBlended:\n                    {\n                        BlendState.Opaque.Apply();\n                        DepthStencilState.None.Apply();\n                        RasterizerState.CullCounterClockwise.Apply();\n\n                        MyMinerGame.SetRenderTarget(availableRenderTarget, null);\n\n                        MyEffectAntiAlias effectAntiAlias = MyRender.GetEffect(MyEffects.AntiAlias) as MyEffectAntiAlias;\n                        effectAntiAlias.SetDiffuseTexture(source);\n                        effectAntiAlias.SetHalfPixel(source.GetLevelDescription(0).Width, source.GetLevelDescription(0).Height);\n\n                        if (MyMwcFinalBuildConstants.EnableFxaa && MyRenderConstants.RenderQualityProfile.EnableFXAA)\n                            effectAntiAlias.ApplyFxaa();\n                        else\n                            return source; // Nothing to do, return source\n\n                        MyGuiManager.GetFullscreenQuad().Draw(effectAntiAlias);\n                        return availableRenderTarget;\n                    }\n                    break;\n            }\n            return source;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Render/PostProcesses/MyPostProcessBase.cs",
    "content": "﻿#region Using\nusing SharpDX.Direct3D9;\n#endregion\n\nnamespace MinerWars.AppCode.Game.Render\n{\n    public enum PostProcessStage\n    {\n        /// <summary>\n        /// Stage right after LOD blend. Render target is unknown. You can modify content of GBuffer here\n        /// (Diffuse, Normal and Depth targets), these target are then used in lighting process\n        /// Do not read or write source (it's null), use availableRT (is parameter of Render()) for anything you need. \n        /// RT returned as result from post proccess is not taken into account. You could modify diffuse or anything else.\n        /// </summary>\n        LODBlend,\n\n        /// <summary>\n        /// This stage is right after lighting, volumetric fog is done here.\n        /// Render target is HdrBlendable. DO NOT CHANGE RT! JUST BLEND IN ANYTHING YOU NEED!\n        /// Do not read or write source (it's null), use availableRT (is parameter of Render()) for anything you need. \n        /// RT returned as result from post proccess is not taken into account. You could modify diffuse or anything else.\n        /// </summary>\n        PostLighting,\n\n        /// <summary>\n        /// HDR stage. HDR is done as first in this stage (or should be). It is called also if Lighting is disabled.\n        /// Use availableRT (is parameter of Render()) to anything you need. Return RT with result from Render() (could be source or availableRT)\n        /// </summary>\n        HDR,\n\n        /// <summary>\n        /// Stage right after alpha blended objects (particles, glass). Do not change render target here.\n        /// Use availableRT (is parameter of Render()) to anything you need. Return RT with result from Render() (could be source or availableRT)\n        /// </summary>\n        AlphaBlended\n    }\n\n    abstract class MyPostProcessBase\n    {\n        public MyPostProcessBase()\n        {\n            Enabled = true;\n        }\n\n        /// <summary>\n        /// Enables this post process\n        /// </summary>\n        public virtual bool Enabled { set; get; }\n\n        /// <summary>\n        /// Name of the post process\n        /// </summary>\n        public abstract MyPostProcessEnum Name { get; }\n\n        public abstract string DisplayName { get; }\n\n        /// <summary>\n        /// Render method is called directly by renderer. Depending on stage, post process can do various things \n        /// </summary>\n        /// <param name=\"postProcessStage\">Stage indicating in which part renderer currently is.</param>\n        /// <param name=\"source\">Render target where is current scene.</param>\n        /// <param name=\"availableRenderTarget\">Render target for use in shader, can be used as output or not.</param>\n        /// <returns>Returns render target with output, must be source or availableRenderTarget</returns>\n        public abstract Texture Render(PostProcessStage postProcessStage, Texture source, Texture availableRenderTarget);\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Render/PostProcesses/MyPostProcessContrast.cs",
    "content": "﻿#region Using\n\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Effects;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Utils;\n\nusing SharpDX.Direct3D9;\n\n#endregion\n\nnamespace MinerWars.AppCode.Game.Render\n{\n    class MyPostProcessContrast : MyPostProcessBase\n    {\n\n        /// <summary>\n        /// Name of the post process\n        /// </summary>\n        public override MyPostProcessEnum Name { get { return MyPostProcessEnum.Contrast; } }\n        public override string DisplayName { get { return \"Contrast\"; } }\n\n        public float Contrast = 0.0f;\n        public float Hue = 0.0f;\n        public float Saturation = 0.0f;\n\n        /// <summary>\n        /// Enable state of post process\n        /// </summary>\n        public override bool Enabled\n        {\n            get\n            {\n                return base.Enabled;\n            }\n            set\n            {\n                base.Enabled = value;\n            }\n        }\n\n        /// <summary>\n        /// Render method is called directly by renderer. Depending on stage, post process can do various things \n        /// </summary>\n        /// <param name=\"postProcessStage\">Stage indicating in which part renderer currently is.</param>public override void RenderAfterBlendLights()\n        public override Texture Render(PostProcessStage postProcessStage, Texture source, Texture availableRenderTarget)\n        {\n            switch (postProcessStage)\n            {\n                case PostProcessStage.HDR:\n                    {\n                        MyMinerGame.SetRenderTarget(availableRenderTarget, null);\n                        MyEffectContrast effectContrast = MyRender.GetEffect(MyEffects.Contrast) as MyEffectContrast;\n\n\n                        effectContrast.SetDiffuseTexture(source);\n                        effectContrast.SetHalfPixel(MyUtils.GetHalfPixel(source.GetLevelDescription(0).Width, source.GetLevelDescription(0).Height));\n                        effectContrast.SetContrast(Contrast);\n                        effectContrast.SetHue(Hue);\n                        effectContrast.SetSaturation(Saturation);\n\n                        MyGuiManager.GetFullscreenQuad().Draw(effectContrast);\n\n                        return availableRenderTarget;\n                    }\n                    break;\n            }\n\n            return source;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Render/PostProcesses/MyPostProcessGodRays.cs",
    "content": "﻿#region Using\n\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Effects;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.World;\n\nusing SharpDX.Direct3D9;\nusing SharpDX.Toolkit.Graphics;\n\n#endregion\n\nnamespace MinerWars.AppCode.Game.Render\n{\n    using Vector2 = MinerWarsMath.Vector2;\n    using Vector3 = MinerWarsMath.Vector3;\n    using Vector4 = MinerWarsMath.Vector4;\n    using Color = MinerWarsMath.Color;\n\n    class MyPostProcessGodRays : MyPostProcessBase\n    {\n        public MyPostProcessGodRays()\n        {\n            ApplyBlur = false;\n        }\n\n        /// <summary>\n        /// Name of the post process\n        /// </summary>\n        public override MyPostProcessEnum Name { get { return MyPostProcessEnum.GodRays; } }\n        public override string DisplayName { get { return \"GodRays\"; } }\n\n        public float Density = 0.34f;  //0.097\n        public float Weight = 1.27f;   //0.522\n        public float Decay = 0.97f;    //0.992\n        public float Exposition = 0.077f; //0.343\n\n        public bool ApplyBlur;\n\n        /// <summary>\n        /// Enable state of post process\n        /// </summary>\n        public override bool Enabled\n        {\n            get\n            {\n                return base.Enabled && (MyRenderConstants.RenderQualityProfile.EnableGodRays && MySector.GodRaysProperties.Enabled);\n            }\n            set\n            {\n                base.Enabled = value;\n            }\n        }\n\n        /// <summary>\n        /// Render method is called directly by renderer. Depending on stage, post process can do various things \n        /// </summary>\n        /// <param name=\"postProcessStage\">Stage indicating in which part renderer currently is.</param>public override void RenderAfterBlendLights()\n        public override Texture Render(PostProcessStage postProcessStage, Texture source, Texture availableRenderTarget)\n        {\n            switch (postProcessStage)\n            {\n                case PostProcessStage.AlphaBlended:\n                    {\n                        Density = MySector.GodRaysProperties.Density;\n                        Weight = MySector.GodRaysProperties.Weight;\n                        Decay = MySector.GodRaysProperties.Decay;\n                        Exposition = MySector.GodRaysProperties.Exposition;\n\n                                    \n                        var halfRT = MyRender.GetRenderTarget(MyRenderTargets.AuxiliaryHalf0);\n\n                        MyMinerGame.SetRenderTarget(halfRT, null);\n                        BlendState.Opaque.Apply();\n                        RasterizerState.CullNone.Apply();\n                        DepthStencilState.None.Apply();\n                        \n                        MyEffectGodRays effectGodRays = MyRender.GetEffect(MyEffects.GodRays) as MyEffectGodRays;\n\n                        effectGodRays.SetDiffuseTexture(source);\n                        effectGodRays.SetDepthTexture(MyRender.GetRenderTarget(MyRenderTargets.Depth));\n                        effectGodRays.SetFrustumCorners(MyRender.GetShadowRenderer().GetFrustumCorners());\n                        effectGodRays.SetView(MyCamera.ViewMatrix);\n                        effectGodRays.SetWorldViewProjection(MyCamera.ViewProjectionMatrix);\n                        effectGodRays.SetDensity(Density);\n                        effectGodRays.SetDecay(Decay);\n                        effectGodRays.SetWeight(Weight * (1 - MySector.FogProperties.FogMultiplier));\n                        effectGodRays.SetExposition(Exposition);\n                        //effectGodRays.LightPosition.SetValue(1500f * -MySunGlare.GetSunDirection() * MySunConstants.RENDER_SUN_DISTANCE);\n                        effectGodRays.SetLightPosition(1500f * -MyRender.Sun.Direction * MySunConstants.RENDER_SUN_DISTANCE);\n                        effectGodRays.SetLightDirection(MyRender.Sun.Direction);\n                        effectGodRays.SetCameraPos(MyCamera.Position);\n                        \n                        MyGuiManager.GetFullscreenQuad().Draw(effectGodRays);\n                        \n                        if (ApplyBlur)\n                        {\n                            var auxTarget = MyRender.GetRenderTarget(MyRenderTargets.AuxiliaryHalf1010102);\n\n                            var blurEffect = MyRender.GetEffect(MyEffects.GaussianBlur) as MyEffectGaussianBlur;\n                            blurEffect.SetHalfPixel(halfRT.GetLevelDescription(0).Width, halfRT.GetLevelDescription(0).Height);\n\n                            // Apply vertical gaussian blur\n                            MyMinerGame.SetRenderTarget(auxTarget, null);\n                            blurEffect.BlurAmount = 1;\n                            blurEffect.SetSourceTexture(halfRT);\n                            blurEffect.SetHeightForVerticalPass(halfRT.GetLevelDescription(0).Height);\n                            MyGuiManager.GetFullscreenQuad().Draw(blurEffect);\n\n                            // Apply horizontal gaussian blur\n                            MyMinerGame.SetRenderTarget(halfRT, null);\n                            blurEffect.BlurAmount = 1;\n                            blurEffect.SetSourceTexture(auxTarget);\n                            blurEffect.SetWidthForHorisontalPass(auxTarget.GetLevelDescription(0).Width);\n                            MyGuiManager.GetFullscreenQuad().Draw(blurEffect);\n                        }\n                                \n                        // Additive\n                        MyMinerGame.SetRenderTarget(availableRenderTarget, null);\n                        //MyMinerGame.Static.GraphicsDevice.Clear(ClearFlags.All, new SharpDX.ColorBGRA(0), 1, 0);\n                        BlendState.Opaque.Apply();\n                        MyRender.Blit(source, true);\n\n                        var upscaleEffect = MyRender.GetEffect(MyEffects.Scale) as MyEffectScale;\n                        upscaleEffect.SetScale(new Vector2(2));\n                        upscaleEffect.SetTechnique(MyEffectScale.Technique.HWScale);\n                        MyStateObjects.Additive_NoAlphaWrite_BlendState.Apply();\n\n                        upscaleEffect.SetSourceTextureMod(halfRT);\n                        MyGuiManager.GetFullscreenQuad().Draw(upscaleEffect);\n                                     \n                                        /*\n                        MyMinerGame.SetRenderTarget(availableRenderTarget, null);\n                        var upscaleEffect = MyRender.GetEffect(MyEffects.Scale) as MyEffectScale;\n                        upscaleEffect.SetScale(new Vector2(2));\n                        upscaleEffect.SetTechnique(MyEffectScale.Technique.HWScale);\n                        //MyStateObjects.Additive_NoAlphaWrite_BlendState.Apply();\n                        BlendState.Opaque.Apply();\n\n                        upscaleEffect.SetSourceTextureMod(halfRT);\n                        MyGuiManager.GetFullscreenQuad().Draw(upscaleEffect);\n                                          */\n                        return availableRenderTarget;\n                    }\n                    break;\n            }\n\n            return source;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Render/PostProcesses/MyPostProcessHDR.cs",
    "content": "﻿#region Using\n\nusing System;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Effects;\nusing MinerWars.AppCode.Game.GUI.Core;\n\nusing SharpDX.Direct3D9;\nusing SharpDX.Toolkit.Graphics;\n\n#endregion\n\nnamespace MinerWars.AppCode.Game.Render\n{\n    class MyPostProcessHDR : MyPostProcessBase\n    {\n        public override MyPostProcessEnum Name { get { return MyPostProcessEnum.HDR; } }\n        public override string DisplayName { get { return \"HDR\"; } }\n\n        readonly Texture[] m_thresholdTargets;\n\n        public float Exposure { get; set; }\n        public float Threshold { get; set; }\n        public float BloomIntensity { get; set; }\n        public float BloomIntensityBackground { get; set; }\n        public float VerticalBlurAmount { get; set; }\n        public float HorizontalBlurAmount { get; set; }\n        public float NumberOfBlurPasses { get; set; }\n\n        public static bool DebugHDRChecked { get; set; }\n\n        public MyPostProcessHDR()\n        {\n            DebugHDRChecked = true;\n\n            Exposure = 2.0f;\n            Threshold = 1.0f;\n            BloomIntensity = 2.0f;\n            BloomIntensityBackground = 0.4f;\n            VerticalBlurAmount = 2.5f;\n            HorizontalBlurAmount = 2.5f;\n            NumberOfBlurPasses = 1;\n\n            m_thresholdTargets = new Texture[2];\n        }\n\n        /// <summary>\n        /// Render method is called directly by renderer. Depending on stage, post process can do various things \n        /// </summary>\n        /// <param name=\"postProcessStage\">Stage indicating in which part renderer currently is.</param>public override void RenderAfterBlendLights()\n        public override Texture Render(PostProcessStage postProcessStage, Texture source, Texture availableRenderTarget)\n        {\n            switch (postProcessStage)\n            {\n                case PostProcessStage.LODBlend:\n                    {\n                        //if (RenderHDRThisFrame())\n                        //{\n                        //    (MyRender.GetEffect(MyEffects.BlendLights) as MyEffectBlendLights).CopyEmissivityTechnique = MyEffectBlendLights.Technique.CopyEmissivityHDR;\n                        //    (MyRender.GetEffect(MyEffects.BlendLights) as MyEffectBlendLights).DefaultTechnique = MyEffectBlendLights.Technique.HDR;\n                        //    (MyRender.GetEffect(MyEffects.DirectionalLight) as MyEffectDirectionalLight).DefaultTechnique = MyEffectDirectionalLight.Technique.DefaultHDR;\n                        //    (MyRender.GetEffect(MyEffects.DirectionalLight) as MyEffectDirectionalLight).DefaultWithoutShadowsTechnique = MyEffectDirectionalLight.Technique.WithoutShadowsHDR;\n                        //    (MyRender.GetEffect(MyEffects.DirectionalLight) as MyEffectDirectionalLight).DefaultNoLightingTechnique = MyEffectDirectionalLight.Technique.NoLightingHDR;\n\n                        //    (MyRender.GetEffect(MyEffects.PointLight) as MyEffectPointLight).DefaultTechnique = MyEffectPointLight.MyEffectPointLightTechnique.DefaultHDR;\n                        //    (MyRender.GetEffect(MyEffects.PointLight) as MyEffectPointLight).DefaultPointTechnique = MyEffectPointLight.MyEffectPointLightTechnique.DefaultHDR;\n                        //    (MyRender.GetEffect(MyEffects.PointLight) as MyEffectPointLight).DefaultHemisphereTechnique = MyEffectPointLight.MyEffectPointLightTechnique.DefaultHDR;\n                        //    (MyRender.GetEffect(MyEffects.PointLight) as MyEffectPointLight).DefaultReflectorTechnique = MyEffectPointLight.MyEffectPointLightTechnique.ReflectorHDR; // unused, dont have instancing\n                        //    (MyRender.GetEffect(MyEffects.PointLight) as MyEffectPointLight).DefaultSpotTechnique = MyEffectPointLight.MyEffectPointLightTechnique.SpotHDR;\n                        //    (MyRender.GetEffect(MyEffects.PointLight) as MyEffectPointLight).DefaultSpotShadowTechnique = MyEffectPointLight.MyEffectPointLightTechnique.SpotShadowsHDR;\n\n                        //    (MyRender.GetEffect(MyEffects.PointLight) as MyEffectPointLight).DefaultPointInstancedTechnique = MyEffectPointLight.MyEffectPointLightTechnique.PointHDR_Instanced;\n                        //    (MyRender.GetEffect(MyEffects.PointLight) as MyEffectPointLight).DefaultHemisphereInstancedTechnique = MyEffectPointLight.MyEffectPointLightTechnique.HemisphereHDR_Instanced;\n                        //    (MyRender.GetEffect(MyEffects.PointLight) as MyEffectPointLight).DefaultSpotInstancedTechnique = MyEffectPointLight.MyEffectPointLightTechnique.SpotHDR_Instanced;\n                        //}\n                        break;\n                    }\n                case PostProcessStage.HDR:\n                    {\n                        // if HDR is disabled or some debug rendering display\n                        // is enabled then skip HDR post process\n                        if (!RenderHDRThisFrame())\n                            return source;\n\n                        BlendState.Opaque.Apply();\n                        DepthStencilState.None.Apply();\n                       // RasterizerState.CullNone.Apply(MyMinerGameDX.Static.GraphicsDevice);\n\n                        m_thresholdTargets[0] = MyRender.GetRenderTarget(MyRenderTargets.Normals);\n                        m_thresholdTargets[1] = availableRenderTarget;\n\n                        // 1. threshold\n                        GenerateThreshold(\n                            source,\n                            MyRender.GetRenderTarget(MyRenderTargets.Diffuse),\n                            m_thresholdTargets,\n                            MyRender.GetEffect(MyEffects.Threshold) as MyEffectThreshold,\n                            Threshold, BloomIntensity, BloomIntensityBackground, Exposure);\n\n                                   /*\n                        MyMinerGame.SetRenderTarget(null, null,  SetDepthTargetEnum.RestoreDefault);\n                        MyMinerGame.SetRenderTarget(availableRenderTarget, null, SetDepthTargetEnum.RestoreDefault);\n                        MyEffectScreenshot ssEffect = MyRender.GetEffect(MyEffects.Screenshot) as MyEffectScreenshot;\n                        ssEffect.SetSourceTexture(m_thresholdTargets[0]);\n                        ssEffect.SetScale(MinerWarsMath.Vector2.One);\n                        ssEffect.SetTechnique(MyEffectScreenshot.ScreenshotTechniqueEnum.Default);\n                        MyGuiManager.GetFullscreenQuad().Draw(ssEffect);\n                        return availableRenderTarget;\n                                            */\n                                    \n\n                        // 2. downscale HDR1 -> Downscaled8\n                        // !! IMPORTANT !! you cannot just switch the function call if you want different downscale\n                        // Also changing the RTs is necessary (they have fixed dimensions).\n                        GenerateDownscale4(\n                            MyRender.GetRenderTarget(MyRenderTargets.Normals),\n                            MyRender.GetRenderTarget(MyRenderTargets.Depth),\n                            MyRender.GetRenderTarget(MyRenderTargets.HDR4Threshold),\n                            MyRender.GetEffect(MyEffects.Scale) as MyEffectScale);\n\n                        /*\n                        // 3?. avg luminance\n                        float dt = (MyMinerGame.TotalGamePlayTimeInMilliseconds - lastTime) / 1000.0f;\n                        lastTime = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n                        CalculateAverageLuminance(\n                            MyRender.GetRenderTarget(MyRenderTargets.Downscaled8),\n                            MyRender.GetRenderTarget(MyRenderTargets.Downscaled8Threshold),\n                            MyRender.GetEffect(MyEffects.Luminance) as MyEffectLuminance,\n                            MyRender.GetEffect(MyEffects.Scale) as MyEffectScale,\n                            dt, 0.5f);\n                        */\n\n                        // 4. blur\n                        Blur(MyRender.GetRenderTarget(MyRenderTargets.HDR4Threshold),\n                            MyRender.GetRenderTarget(MyRenderTargets.HDR4),\n                            MyRender.GetEffect(MyEffects.GaussianBlur) as MyEffectGaussianBlur,\n                            VerticalBlurAmount, HorizontalBlurAmount);\n\n                        // 5. scale blurred to halfsize\n                        Upscale4To2(\n                            MyRender.GetRenderTarget(MyRenderTargets.HDR4Threshold),\n                            MyRender.GetRenderTarget(MyRenderTargets.AuxiliaryHalf1010102),\n                            MyRender.GetEffect(MyEffects.Scale) as MyEffectScale);\n\n                        MyMinerGame.SetRenderTarget(availableRenderTarget, null, SetDepthTargetEnum.RestoreDefault);\n\n                        // 6. tonemap + apply bloom\n                        HDR(\n                            source,\n                            MyRender.GetRenderTarget(MyRenderTargets.Diffuse),\n                            MyRender.GetRenderTarget(MyRenderTargets.AuxiliaryHalf1010102),\n                            MyRender.GetEffect(MyEffects.HDR) as MyEffectHDR,\n                            0.6f, Exposure);\n\n                        return availableRenderTarget;\n\n                        //RenderTarget2D temp = currentFrameAdaptedLuminance;\n                        //currentFrameAdaptedLuminance = lastFrameAdaptedLuminance;\n                        //lastFrameAdaptedLuminance = temp;\n                    }\n            }\n            return source;\n        }\n\n        public static bool RenderHDR()\n        {\n            return MyRenderConstants.RenderQualityProfile.EnableHDR && MyMinerGame.GraphicsDeviceManager.HDRSupported;\n        }\n\n        public static bool RenderHDRThisFrame()\n        {\n            return MyRender.CurrentRenderSetup.EnableLights != null &&\n                (MyRender.CurrentRenderSetup.EnableHDR != null &&\n                (MyRenderConstants.RenderQualityProfile.EnableHDR &&\n                MyMinerGame.GraphicsDeviceManager.HDRSupported &&\n                DebugHDRChecked &&\n                MyRender.CurrentRenderSetup.EnableHDR.Value &&\n                MyRender.EnableLights &&\n                MyRender.EnableLightsRuntime && \n                MyRender.CurrentRenderSetup.EnableLights.Value &&\n                !MyRender.ShowSpecularIntensity &&\n                !MyRender.ShowSpecularPower &&\n                !MyRender.ShowEmissivity &&\n                !MyRender.ShowReflectivity));\n        }\n\n        /*\n        private void CalculateAverageLuminance(RenderTarget2D source, RenderTarget2D destination, MyEffectLuminance luminanceEffect, MyEffectScale scalingEffect, float dt, float tau)\n        {\n            // Calculate the initial luminance\n            luminanceEffect.SetTechniqueLuminance();\n            PostProcess(source, destination, luminanceEffect);\n\n            //// Repeatedly downscale    \n            //scalingEffect.SetTechniqueDownscale();\n            //for (int i = 1; i < luminanceChain.Length; i++)\n            //{\n            //    scalingEffect.SetSourceDimensions(luminanceChain[i - 1].Width, luminanceChain[i - 1].Height);\n            //    PostProcess(luminanceChain[i - 1], luminanceChain[i], scalingEffect);\n            //}\n\n            //// Final downscale           \n            //scalingEffect.SetTechniqueDownscaleLuminance();\n            //scalingEffect.SetSourceDimensions(luminanceChain[luminanceChain.Length - 1].Width, luminanceChain[luminanceChain.Length - 1].Height);\n            //PostProcess(luminanceChain[luminanceChain.Length - 1], currentFrameLuminance, scalingEffect);\n\n            // Final downscale\n            luminanceEffect.SetTechniqueLuminanceMipmap();\n            float size = MathHelper.Min(MyCamera.ForwardViewport.Width, MyCamera.ForwardViewport.Height);\n            // TODO check if mipmap level is correct\n            int mipLevel = (int)Math.Floor(Math.Log(size / 8.0f, 2));\n            //int mipLevel = (int)Math.Ceiling(Math.Log(size / 8.0f, 2));\n            luminanceEffect.SetMipLevel(mipLevel);\n            PostProcess(destination, currentFrameLuminance, luminanceEffect);\n\n            // Adapt the luminance, to simulate slowly adjust exposure\n            MyMinerGame.Static.GraphicsDevice.SetRenderTarget(currentFrameAdaptedLuminance);\n            luminanceEffect.SetTechniqueAdaptedLuminance();\n            luminanceEffect.SetDT(dt);\n            luminanceEffect.SetTau(tau);\n            luminanceEffect.SetSourceTexture(currentFrameLuminance);\n            luminanceEffect.SetSourceTexture2(lastFrameAdaptedLuminance);\n            luminanceEffect.SetHalfPixel(source.Width, source.Height);\n            MyGuiManager.GetFullscreenQuad().Draw(luminanceEffect);\n        }\n        */\n\n        private void HDR(Texture sourceMod, Texture sourceDiv, Texture bloomSource, MyEffectHDR effect, float middleGrey, float exposure)\n        {\n            effect.SetSourceTextureMod(sourceMod);\n            effect.SetSourceTextureDiv(sourceDiv);\n            effect.SetBloomTexture(bloomSource);\n            //effect.SetLumTexture(currentFrameAdaptedLuminance);\n            //effect.SetLumTexture(currentFrameLuminance);\n            effect.SetHalfPixel(sourceMod.GetLevelDescription(0).Width, sourceMod.GetLevelDescription(0).Height);\n            //effect.SetMiddleGrey(middleGrey);\n            effect.SetExposure(exposure);\n\n            MyGuiManager.GetFullscreenQuad().Draw(effect);\n        }\n\n        private void Upscale8To2(Texture down8, Texture down4, Texture down2, MyEffectScale effect)\n        {\n            effect.SetTechnique(MyEffectScale.Technique.HWScale);\n\n            PostProcess(down8, down4, effect);\n\n            PostProcess(down4, down2, effect);\n        }\n\n        private void Upscale4To2(Texture down4, Texture down2, MyEffectScale effect)\n        {\n            effect.SetTechnique(MyEffectScale.Technique.HWScale);\n\n            PostProcess(down4, down2, effect);\n        }\n\n        private void Blur(Texture sourceAndDestination, Texture aux, MyEffectGaussianBlur effect, float verticalBlurAmount, float horizontalBlurAmount)\n        {\n            effect.SetHalfPixel(sourceAndDestination.GetLevelDescription(0).Width, sourceAndDestination.GetLevelDescription(0).Height);\n\n            int numberOfBlurPasses = Convert.ToInt32(Math.Floor(NumberOfBlurPasses));\n            for (int i = 0; i < numberOfBlurPasses; i++)\n            {\n                // Apply vertical gaussian blur\n                MyMinerGame.SetRenderTarget(aux, null);\n                effect.BlurAmount = verticalBlurAmount;\n                effect.SetSourceTexture(sourceAndDestination);\n                //effect.SetWidthForHorisontalPass(sourceAndDestination.Width);\n                effect.SetHeightForVerticalPass(sourceAndDestination.GetLevelDescription(0).Height);\n                MyGuiManager.GetFullscreenQuad().Draw(effect);\n\n                // Apply horizontal gaussian blur\n                MyMinerGame.SetRenderTarget(sourceAndDestination, null);\n                effect.BlurAmount = horizontalBlurAmount;\n                effect.SetSourceTexture(aux);\n                //effect.SetHeightForVerticalPass(sourceAndDestination.Height);\n                effect.SetWidthForHorisontalPass(aux.GetLevelDescription(0).Width);\n                MyGuiManager.GetFullscreenQuad().Draw(effect);\n            }\n        }\n\n        /// <summary>\n        /// Downscales the source to 1/8th size, using mipmaps\n        /// !! IMPORTANT !! you cannot just switch function call. Also changing RTs is necessary.\n        /// </summary>\n        protected void GenerateDownscale8(Texture sourceMod, Texture sourceDiv, Texture destination, MyEffectScale effect)\n        {\n            effect.SetTechnique(MyEffectScale.Technique.Downscale8);\n\n            MyMinerGame.SetRenderTarget(destination, null);\n\n            effect.SetSourceTextureMod(sourceMod);\n            effect.SetSourceTextureDiv(sourceDiv);\n            //effect.SetLumTexture(currentFrameAdaptedLuminance);\n            effect.SetHalfPixel(sourceMod.GetLevelDescription(0).Width, sourceMod.GetLevelDescription(0).Height);\n\n            MyGuiManager.GetFullscreenQuad().Draw(effect);\n        }\n\n        /// <summary>\n        /// Downscales the source to 1/4th size, using mipmaps\n        /// !! IMPORTANT !! you cannot just switch function call. Also changing RTs is necessary.\n        /// </summary>\n        protected void GenerateDownscale4(Texture sourceMod, Texture sourceDiv, Texture destination, MyEffectScale effect)\n        {\n            effect.SetTechnique(MyEffectScale.Technique.Downscale4);\n\n            MyMinerGame.SetRenderTarget(destination, null);\n\n            effect.SetSourceTextureMod(sourceMod);\n            effect.SetSourceTextureDiv(sourceDiv);\n            //effect.SetLumTexture(currentFrameAdaptedLuminance);\n            effect.SetHalfPixel(sourceMod.GetLevelDescription(0).Width, sourceMod.GetLevelDescription(0).Height);\n\n            MyGuiManager.GetFullscreenQuad().Draw(effect);\n        }\n\n        protected void PostProcess(Texture source, Texture destination, MyEffectHDRBase effect)\n        {\n            MyMinerGame.SetRenderTarget(destination, null);\n\n            effect.SetHalfPixel(source.GetLevelDescription(0).Width, source.GetLevelDescription(0).Height);\n            effect.SetSourceTextureMod(source);\n\n            MyGuiManager.GetFullscreenQuad().Draw(effect);\n        }\n\n        private void GenerateThreshold(Texture sourceMod, Texture sourceDiv, Texture[] destination, MyEffectThreshold effect, float threshold, float bloomIntensity, float bloomIntensityBackground, float exposure)\n        {\n            MyMinerGame.SetRenderTargets(destination, null);\n\n            effect.SetSourceTextureMod(sourceMod);\n            effect.SetSourceTextureDiv(sourceDiv);\n            //effect.SetLumTexture(currentFrameAdaptedLuminance);\n            effect.SetHalfPixel(sourceMod.GetLevelDescription(0).Width, sourceMod.GetLevelDescription(0).Height);\n            effect.SetThreshold(threshold);\n            effect.SetBloomIntensity(bloomIntensity);\n            effect.SetBloomIntensityBackground(bloomIntensityBackground);\n            effect.SetExposure(exposure);\n\n            MyGuiManager.GetFullscreenQuad().Draw(effect);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Render/PostProcesses/MyPostProcessVolumetricFog.cs",
    "content": "﻿#region Using\n\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Effects;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.World;\n\nusing SharpDX.Direct3D9;\nusing SharpDX.Toolkit.Graphics;\n\n#endregion\n\nnamespace MinerWars.AppCode.Game.Render\n{\n    using Vector2 = MinerWarsMath.Vector2;\n    using Vector3 = MinerWarsMath.Vector3;\n    using Vector4 = MinerWarsMath.Vector4;\n    using Rectangle = MinerWarsMath.Rectangle;\n    using Matrix = MinerWarsMath.Matrix;\n    using Color = MinerWarsMath.Color;\n    using BoundingBox = MinerWarsMath.BoundingBox;\n    using BoundingSphere = MinerWarsMath.BoundingSphere;\n    using BoundingFrustum = MinerWarsMath.BoundingFrustum;\n\n    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n    //  Volumetric SSAO 2\n    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n    class MyPostProcessVolumetricFog : MyPostProcessBase\n    {\n        /// <summary>\n        /// Name of the post process\n        /// </summary>\n        public override MyPostProcessEnum Name { get { return MyPostProcessEnum.VolumetricFog; } }\n        public override string DisplayName { get { return \"Volumetric Fog\"; } }\n\n        /// <summary>\n        /// Enable state of post process\n        /// </summary>\n        public override bool Enabled\n        {\n            get\n            {\n                return base.Enabled;\n            }\n            set\n            {\n                base.Enabled = value;\n            }\n        }\n\n        /// <summary>\n        /// Render method is called directly by renderer. Depending on stage, post process can do various things \n        /// </summary>\n        /// <param name=\"postProcessStage\">Stage indicating in which part renderer currently is.</param>public override void RenderAfterBlendLights()\n        public override Texture Render(PostProcessStage postProcessStage, Texture source, Texture availableRenderTarget)\n        {             \n            switch (postProcessStage)\n            {\n                case PostProcessStage.PostLighting:\n                    {\n                        if (MySector.FogProperties.FogMultiplier <= 0.0f)\n                            return source;\n\n                        //MyMinerGame.Static.GraphicsDevice.SetRenderTarget(availableRenderTarget);\n\n                        //MyMinerGame.Static.GraphicsDevice.BlendState = BlendState.NonPremultiplied;\n                        MyStateObjects.VolumetricFogBlend.Apply();\n\n                    //    MyMinerGame.Static.GraphicsDevice.RasterizerState = RasterizerState.CullClockwise;\n\n                        MyEffectVolumetricFog volumetricFog = MyRender.GetEffect(MyEffects.VolumetricFog) as MyEffectVolumetricFog;\n\n                        int width = MyRender.GetRenderTarget(MyRenderTargets.Normals).GetLevelDescription(0).Width;\n                        int height = MyRender.GetRenderTarget(MyRenderTargets.Normals).GetLevelDescription(0).Height;\n\n                        volumetricFog.SetSourceRT(source);\n                        volumetricFog.SetDepthsRT(MyRender.GetRenderTarget(MyRenderTargets.Depth));\n                        volumetricFog.SetNormalsTexture(MyRender.GetRenderTarget(MyRenderTargets.Normals));\n                        volumetricFog.SetHalfPixel(width, height);\n                        volumetricFog.SetViewProjectionMatrix(MyCamera.ViewProjectionMatrix);\n                        volumetricFog.SetCameraPosition(MyCamera.Position);\n                        volumetricFog.SetCameraMatrix(Matrix.Invert(MyCamera.ViewMatrix));\n                        volumetricFog.SetFrustumCorners(MyRender.GetShadowRenderer().GetFrustumCorners());\n                        MyCamera.SetupBaseEffect(volumetricFog);\n\n                        //volumetricFog.SetWorldMatrix(Matrix.CreateScale(1000) * Matrix.CreateTranslation(MyCamera.Position));\n                        if (MyFakes.MWBUILDER)\n                            volumetricFog.SetTechnique(MyEffectVolumetricFog.TechniqueEnum.SkipBackground);\n                        else\n                            volumetricFog.SetTechnique(MyEffectVolumetricFog.TechniqueEnum.Default);\n\n                        MyGuiManager.GetFullscreenQuad().Draw(volumetricFog);\n\n                      //  MyMinerGame.Static.GraphicsDevice.RasterizerState = RasterizerState.CullCounterClockwise;\n                      //  MyMinerGame.Static.GraphicsDevice.BlendState = BlendState.AlphaBlend;\n                    }\n                    break;\n            }        \n            return source;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Render/PostProcesses/MyPostProcessVolumetricSSAO2.cs",
    "content": "﻿#region Using\n\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Effects;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Utils;\n\nusing SharpDX.Direct3D9;\nusing SharpDX.Toolkit.Graphics;\n\n#endregion\n\nnamespace MinerWars.AppCode.Game.Render\n{\n    using Vector2 = MinerWarsMath.Vector2;\n    using Vector3 = MinerWarsMath.Vector3;\n    using Vector4 = MinerWarsMath.Vector4;\n    using Rectangle = MinerWarsMath.Rectangle;\n    using Matrix = MinerWarsMath.Matrix;\n    using Color = MinerWarsMath.Color;\n    using BoundingBox = MinerWarsMath.BoundingBox;\n    using BoundingSphere = MinerWarsMath.BoundingSphere;\n    using BoundingFrustum = MinerWarsMath.BoundingFrustum;\n\n    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n    //  Volumetric SSAO 2\n    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n    class MyPostProcessVolumetricSSAO2 : MyPostProcessBase\n    {\n        public float MinRadius = 1.554f; \n        public float MaxRadius = 400; \n        public float RadiusGrowZScale = 10.0f;\n        public float CameraZFar = 70294;   //71500  //70294\n\n        public float Bias = 0.35f; \n        public float Falloff = 0.12f; \n        public float NormValue = 1.0f;   //1\n        public float Contrast = 4f;  //4\n\n        // SSAOParams.x = minRadius\n// SSAOParams.y = maxRadius\n// SSAOParams.z = radiusGrowZscale\n// SSAOParams.w = camera zfar\n\n// SSAOParams2.x = bias\n// SSAOParams2.y = fallof\n// SSAOParams2.z = occlusion samples normalization value * color scale\n//uniform float4\tSSAOParams2;\n\n\n        /// <summary>\n        /// Name of the post process\n        /// </summary>\n        public override MyPostProcessEnum Name { get { return MyPostProcessEnum.VolumetricSSAO2; } }\n        public override string DisplayName { get { return \"Volumetric SSAO 2\"; } } \n\n        /// <summary>\n        /// Enable state of post process\n        /// </summary>\n        public override bool Enabled\n        {\n            get\n            {\n                return base.Enabled && MyRenderConstants.RenderQualityProfile.EnableSSAO;\n            }\n            set\n            {\n                base.Enabled = value;\n            }\n        }\n\n        /// <summary>\n        /// Render method is called directly by renderer. Depending on stage, post process can do various things \n        /// </summary>\n        /// <param name=\"postProcessStage\">Stage indicating in which part renderer currently is.</param>public override void RenderAfterBlendLights()\n        public override Texture Render(PostProcessStage postProcessStage, Texture source, Texture availableRenderTarget)\n        {           \n            switch (postProcessStage)\n            {\n                case PostProcessStage.LODBlend:\n                    {\n                       \n\n                        MyEffectVolumetricSSAO2 volumetricSsao = MyRender.GetEffect(MyEffects.VolumetricSSAO) as MyEffectVolumetricSSAO2;\n\n                        int width = MyRender.GetRenderTarget(MyRenderTargets.Normals).GetLevelDescription(0).Width;\n                        int height = MyRender.GetRenderTarget(MyRenderTargets.Normals).GetLevelDescription(0).Height;\n                        int halfWidth = width / 2;\n                        int halfHeight = height / 2;\n\n                        //Render SSAO\n                        MyMinerGame.SetRenderTarget(MyRender.GetRenderTarget(MyRenderTargets.SSAO), null);\n\n                        MyMinerGame.Static.GraphicsDevice.Clear(ClearFlags.Target, new SharpDX.ColorBGRA(0), 1, 0);\n                        DepthStencilState.None.Apply();\n                        BlendState.Opaque.Apply();\n\n                        Vector4 ssaoParams = new Vector4(MinRadius, MaxRadius, RadiusGrowZScale, CameraZFar);\n                        Vector4 ssaoParams2 = new Vector4(Bias, Falloff, NormValue, 0);\n\n                        volumetricSsao.SetDepthsRT(MyRender.GetRenderTarget(MyRenderTargets.Depth));\n                        volumetricSsao.SetNormalsTexture(MyRender.GetRenderTarget(MyRenderTargets.Normals));\n                        volumetricSsao.SetHalfPixel(width, height);\n\n                        volumetricSsao.SetFrustumCorners(MyRender.GetShadowRenderer().GetFrustumCorners());\n\n                        volumetricSsao.SetViewMatrix(MyCamera.ViewMatrixAtZero);\n\n                        volumetricSsao.SetParams1(ssaoParams);\n                        volumetricSsao.SetParams2(ssaoParams2);\n\n                        volumetricSsao.SetProjectionMatrix(MyCamera.ProjectionMatrix);\n\n                        volumetricSsao.SetContrast(Contrast);\n\n\n                        MyGuiManager.GetFullscreenQuad().Draw(volumetricSsao);\n                                  \n                        if (volumetricSsao.UseBlur)\n                        {\n                            //SSAO Blur\n                            MyMinerGame.SetRenderTarget(availableRenderTarget, null);\n                            MyEffectSSAOBlur2 effectSsaoBlur = MyRender.GetEffect(MyEffects.SSAOBlur) as MyEffectSSAOBlur2;\n                            effectSsaoBlur.SetDepthsRT(MyRender.GetRenderTarget(MyRenderTargets.Depth));\n                            //effectSsaoBlur.SetNormalsRT(MyRender.GetRenderTarget(MyRenderTargets.Normals));\n                            effectSsaoBlur.SetHalfPixel(width, height);\n                            effectSsaoBlur.SetSSAOHalfPixel(halfWidth, halfHeight);\n                            effectSsaoBlur.SetSsaoRT(MyRender.GetRenderTarget(MyRenderTargets.SSAO));\n                            effectSsaoBlur.SetBlurDirection(new Vector2(0, 1f / (float)halfHeight));\n                            //effectSsaoBlur.SetBlurDirection(new Vector2(1 / (float)halfWidth, 1f / (float)halfHeight));\n\n                            MyGuiManager.GetFullscreenQuad().Draw(effectSsaoBlur);\n\n                            MyMinerGame.SetRenderTarget(MyRender.GetRenderTarget(MyRenderTargets.SSAOBlur), null);\n                            effectSsaoBlur.SetSsaoRT(availableRenderTarget);\n                            effectSsaoBlur.SetBlurDirection(new Vector2(1f / (float)halfWidth, 0));\n                            MyGuiManager.GetFullscreenQuad().Draw(effectSsaoBlur);\n                        }\n\n                        //Bake it into diffuse\n                        /*\n                        MyEffectScreenshot ssEffect = MyRender.GetEffect(MyEffects.Screenshot) as MyEffectScreenshot;     \n                        MyMinerGame.SetRenderTarget(availableRenderTarget, null);\n                        ssEffect.SetSourceTexture(MyRender.GetRenderTarget(MyRenderTargets.Diffuse));\n                        ssEffect.SetScale(Vector2.One);\n                        ssEffect.SetTechnique(MyEffectScreenshot.ScreenshotTechniqueEnum.Default);\n                        \n                        MyGuiManager.GetFullscreenQuad().Draw(ssEffect);\n                                          \n                                         */ \n                        MyMinerGame.SetRenderTarget(MyRender.GetRenderTarget(MyRenderTargets.Diffuse), null);\n                        /*\n                        ssEffect.SetSourceTexture(availableRenderTarget);\n                        ssEffect.SetTechnique(MyEffectScreenshot.ScreenshotTechniqueEnum.Default);\n                        ssEffect.SetScale(Vector2.One);\n                        MyGuiManager.GetFullscreenQuad().Draw(ssEffect);\n                                          */\n                        MyEffectVolumetricSSAO2 effectVolumetricSsao = MyRender.GetEffect(MyEffects.VolumetricSSAO) as MyEffectVolumetricSSAO2;\n\n                        //Blend with SSAO together\n                        DepthStencilState.None.Apply();\n                        \n                        if (!effectVolumetricSsao.ShowOnlySSAO)\n                        {\n                            MyStateObjects.SSAO_BlendState.Apply();\n                        }\n                        else\n                        {\n                            MyRender.CurrentRenderSetup.EnableLights = false;\n                            MyMinerGame.Static.GraphicsDevice.Clear(ClearFlags.Target, new SharpDX.ColorBGRA(1.0f), 1, 0);\n                            MyStateObjects.SSAO_BlendState.Apply();\n                        }\n\n\n                        if (effectVolumetricSsao.UseBlur)\n                            MyGuiManager.DrawSpriteFast(MyRender.GetRenderTarget(MyRenderTargets.SSAOBlur), 0, 0, MyCamera.Viewport.Width, MyCamera.Viewport.Height, Color.White);\n                        else\n                            MyGuiManager.DrawSpriteFast(MyRender.GetRenderTarget(MyRenderTargets.SSAO), 0, 0, MyCamera.Viewport.Width, MyCamera.Viewport.Height, Color.White);\n \n                    }\n                    break;\n            }       \n            return source;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Render/PostProcesses/TODO/MyBloomPostprocess.cs",
    "content": "﻿using System;\nusing Microsoft.Xna.Framework;\nusing Microsoft.Xna.Framework.Graphics;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.Managers;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.VideoMode;\n\nnamespace MinerWars.AppCode.Game.Renders\n{\n    static class MyBloomPostprocess\n    {\n        /*static bool m_loaded;\n\n        // Controls how bright a pixel needs to be before it will bloom.\n        // Zero makes everything bloom equally, while higher values select\n        // only brighter colors. Somewhere between 0.25 and 0.5 is good.\n        static float m_bloomThreshold;\n\n        // Controls how much blurring is applied to the bloom image.\n        // The typical range is from 1 up to 10 or so.\n        static float m_blurAmount;\n\n        // Controls the amount of the bloom and base images that\n        // will be mixed into the final scene. Range 0 to 1.\n        static float m_bloomIntensity;\n        static float m_baseIntensity;\n\n        // Independently control the color saturation of the bloom and\n        // base images. Zero is totally desaturated, 1.0 leaves saturation\n        // unchanged, while higher values increase the saturation level.\n        static float m_bloomSaturation;\n        static float m_baseSaturation;\n\n        static SpriteBatch m_spriteBatch;\n\n        static MyEffectBloomExtract m_bloomExtractEffect;\n        static MyEffectBloomCombine m_bloomCombineEffect;\n        static MyEffectGaussianBlur m_gaussianBlurEffect;\n\n        static ResolveTexture2D m_resolveTarget;\n        static RenderTarget2D m_renderTarget1;\n        static RenderTarget2D m_renderTarget2;\n\n        static EffectParameter m_weightsParameter, m_offsetsParameter;\n        static float[] m_sampleWeights;\n        static Vector2[] m_sampleOffsets;\n        static int m_sampleCount;\n\n        // Optionally displays one of the intermediate buffers used\n        // by the bloom postprocess, so you can see exactly what is\n        // being drawn into each rendertarget.\n        public enum IntermediateBuffer\n        {\n            PreBloom,\n            BlurredHorizontally,\n            BlurredBothWays,\n            FinalResult,\n        }\n\n        public static IntermediateBuffer ShowBuffer { get; set; }\n\n        public static void Init()\n        {\n            //Init(0.25f, 4, 1.25f, 1, 1, 1);     //  Default\n            //Init(0,      3,   1,     1,    1,       1);     //  Soft\n            //Init(0.5f,   8,   2,     1,    0,       1);     //  Desaturated\n            //Init(0.25f,  4,   2,     1,    2,       0);     //  Saturated\n            //Init(0,      2,   1,     0.1f, 1,       1);     //  Blurry\n            Change(0, 0.5f, 1, 0.1f, 1, 1);     //  Blurry less\n            //Init(0.5f, 2, 1, 1, 1, 1);     //  Subtle - this looked good, but bloom without real HDR isn't very OK\n            //Init(0, 0, 0, 1, 1, 1);     //  Bloom:OFF            \n        }\n\n        public static void Change(float bloomThreshold, float blurAmount, float bloomIntensity, float baseIntensity, float bloomSaturation, float baseSaturation)\n        {\n            m_bloomThreshold = bloomThreshold;\n            m_blurAmount = blurAmount;\n            m_bloomIntensity = bloomIntensity;\n            m_baseIntensity = baseIntensity;\n            m_bloomSaturation = bloomSaturation;\n            m_baseSaturation = baseSaturation;            \n        }\n\n        public static void ChangeBlurAmount(float blurAmount)\n        {\n            m_blurAmount = blurAmount;\n        }\n\n        //  Load content does nothing special, because we really create all buffers and stuff in LoadInDraw\n        public static void LoadContent()\n        {\n            m_loaded = false;\n        }\n        \n        public static void UnloadContent()\n        {\n            if (m_spriteBatch != null) m_spriteBatch.Dispose();\n            if (m_resolveTarget != null) m_resolveTarget.Dispose();\n            if (m_renderTarget1 != null) m_renderTarget1.Dispose();\n            if (m_renderTarget2 != null) m_renderTarget2.Dispose();\n            m_loaded = false;\n        }\n\n        //  This one must be called at application start and also after every video options change\n        //  It will dispose and then load all effects/buffers needed by cinematic (of course, only if cinematic is enabled)\n        //\tSpecial method that loads data into GPU, and can be called only from Draw method, never from LoadContent or from background thread.\n        //\tBecause that would lead to empty vertex/index buffers if they are filled/created while game is minimized (remember the issue - alt-tab during loading screen)\n        public static void LoadInDraw()\n        {\n            if (m_loaded) return;\n\n            //  Load if cinematic is enabled and we aren't right now unloading the application and there is already a gameplay screen\n            if ((MyVideoModeManager.GetCinematic() == true) && (MyGuiScreenGamePlay.Static != null))\n            {\n                GraphicsDevice graphicsDevice = MyMinerGame.Static.GraphicsDevice;\n\n                ShowBuffer = IntermediateBuffer.FinalResult;\n\n                m_spriteBatch = new SpriteBatch(graphicsDevice);\n\n                m_bloomExtractEffect = new MyEffectBloomExtract(MyGuiScreenGamePlay.Static.GameBaseContentManager, \"Effects\\\\BloomPostprocess\\\\MyBloomExtract\");\n                m_bloomCombineEffect = new MyEffectBloomCombine(MyGuiScreenGamePlay.Static.GameBaseContentManager, \"Effects\\\\BloomPostprocess\\\\MyBloomCombine\");\n                m_gaussianBlurEffect = new MyEffectGaussianBlur(MyGuiScreenGamePlay.Static.GameBaseContentManager, \"Effects\\\\BloomPostprocess\\\\MyGaussianBlur\");\n\n                // Look up the sample weight and offset effect parameters.\n                m_weightsParameter = m_gaussianBlurEffect.SampleWeights;\n                m_offsetsParameter = m_gaussianBlurEffect.SampleOffsets;\n\n                // Look up how many samples our gaussian blur effect supports.\n                m_sampleCount = m_weightsParameter.Elements.Count;\n\n                // Create temporary arrays for computing our filter settings.\n                m_sampleWeights = new float[m_sampleCount];\n                m_sampleOffsets = new Vector2[m_sampleCount];\n\n                // Look up the resolution and format of our main backbuffer.\n                PresentationParameters pp = graphicsDevice.PresentationParameters;\n\n                int width = pp.BackBufferWidth;\n                int height = pp.BackBufferHeight;\n\n                SurfaceFormat format = pp.BackBufferFormat;\n\n                // Create a texture for reading back the backbuffer contents.\n                m_resolveTarget = new ResolveTexture2D(graphicsDevice, width, height, 1, format);\n\n                // Create two rendertargets for the bloom processing. These are half the\n                // size of the backbuffer, in order to minimize fillrate costs. Reducing\n                // the resolution in this way doesn't hurt quality, because we are going\n                // to be blurring the bloom images in any case.\n                width /= 2;\n                height /= 2;\n\n                if (MyVideoModeManager.GetAntiAliasing() == MyAntiAliasingEnum.OFF)\n                {\n                    m_renderTarget1 = new RenderTarget2D(graphicsDevice, width, height, 1, format);\n                    m_renderTarget2 = new RenderTarget2D(graphicsDevice, width, height, 1, format);\n                }\n                else\n                {\n                    m_renderTarget1 = new RenderTarget2D(graphicsDevice, width, height, 1, format, pp.MultiSampleType, pp.MultiSampleQuality);\n                    m_renderTarget2 = new RenderTarget2D(graphicsDevice, width, height, 1, format, pp.MultiSampleType, pp.MultiSampleQuality);\n                }\n            }\n\n            m_loaded = true;\n        }\n\n        //  This is where it all happens. Grabs a scene that has already been rendered,\n        //  and uses postprocess magic to add a glowing bloom effect over the top of it.\n        public static void Draw()\n        {\n            if (MyVideoModeManager.GetCinematic() == false) return;\n\n            LoadInDraw();\n\n            GraphicsDevice graphicsDevice = MyMinerGame.Static.GraphicsDevice;\n\n            // Resolve the scene into a texture, so we can\n            // use it as input data for the bloom processing.\n            graphicsDevice.ResolveBackBuffer(m_resolveTarget);\n\n            // Pass 1: draw the scene into rendertarget 1, using a\n            // shader that extracts only the brightest parts of the image.\n            m_bloomExtractEffect.BloomThreshold.SetValue(m_bloomThreshold);\n\n            DrawFullscreenQuad(m_resolveTarget, m_renderTarget1, m_bloomExtractEffect, IntermediateBuffer.PreBloom);\n\n            // Pass 2: draw from rendertarget 1 into rendertarget 2,\n            // using a shader to apply a horizontal gaussian blur filter.\n            SetBlurEffectParameters(1.0f / (float)m_renderTarget1.Width, 0);\n\n            DrawFullscreenQuad(m_renderTarget1, m_renderTarget2, m_gaussianBlurEffect, IntermediateBuffer.BlurredHorizontally);\n\n            // Pass 3: draw from rendertarget 2 back into rendertarget 1,\n            // using a shader to apply a vertical gaussian blur filter.\n            SetBlurEffectParameters(0, 1.0f / (float)m_renderTarget1.Height);\n\n            DrawFullscreenQuad(m_renderTarget2, m_renderTarget1, m_gaussianBlurEffect, IntermediateBuffer.BlurredBothWays);\n\n            // Pass 4: draw both rendertarget 1 and the original scene\n            // image back into the main backbuffer, using a shader that\n            // combines them to produce the final bloomed result.\n            graphicsDevice.SetRenderTarget(0, null);\n\n            m_bloomCombineEffect.BloomIntensity.SetValue(m_bloomIntensity);\n            m_bloomCombineEffect.BaseIntensity.SetValue(m_baseIntensity);\n            m_bloomCombineEffect.BloomSaturation.SetValue(m_bloomSaturation);\n            m_bloomCombineEffect.BaseSaturation.SetValue(m_baseSaturation);\n\n            m_bloomCombineEffect.Timer.SetValue((float)(Environment.TickCount % 10000));\n\n            graphicsDevice.Textures[1] = m_resolveTarget;\n\n            Viewport viewport = graphicsDevice.Viewport;\n\n            DrawFullscreenQuad(m_renderTarget1,\n                               viewport.Width, viewport.Height,\n                               m_bloomCombineEffect,\n                               IntermediateBuffer.FinalResult);\n        }\n\n        //  Helper for drawing a texture into a rendertarget, using\n        //  a custom shader to apply postprocessing effects.\n        static void DrawFullscreenQuad(Texture2D texture, RenderTarget2D renderTarget, MyEffect effect, IntermediateBuffer currentBuffer)\n        {\n            GraphicsDevice graphicsDevice = MyMinerGame.Static.GraphicsDevice;\n            graphicsDevice.SetRenderTarget(0, renderTarget);\n            DrawFullscreenQuad(texture, renderTarget.Width, renderTarget.Height, effect, currentBuffer);\n            graphicsDevice.SetRenderTarget(0, null);\n        }\n\n        //  Helper for drawing a texture into the current rendertarget,\n        //  using a custom shader to apply postprocessing effects.\n        static void DrawFullscreenQuad(Texture2D texture, int width, int height, MyEffect effect, IntermediateBuffer currentBuffer)\n        {\n            m_spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.Opaque);\n\n            // Begin the custom effect, if it is currently enabled. If the user\n            // has selected one of the show intermediate buffer options, we still\n            // draw the quad to make sure the image will end up on the screen,\n            // but might need to skip applying the custom pixel shader.\n            if (ShowBuffer >= currentBuffer)\n            {\n                effect.Effect.Begin();\n                effect.Effect.CurrentTechnique.Passes[0].Begin();\n            }\n\n            // Draw the quad.\n            m_spriteBatch.Draw(texture, new Rectangle(0, 0, width, height), Color.White);\n            m_spriteBatch.End();\n\n            MyRenderStatePool.RestoreAfterSpriteBatch();\n\n            // End the custom effect.\n            if (ShowBuffer >= currentBuffer)\n            {\n                effect.Effect.CurrentTechnique.Passes[0].End();\n                effect.Effect.End();\n            }\n        }\n\n        //  Computes sample weightings and texture coordinate offsets\n        //  for one pass of a separable gaussian blur filter.\n        static void SetBlurEffectParameters(float dx, float dy)\n        {\n            // The first sample always has a zero offset.\n            m_sampleWeights[0] = ComputeGaussian(0);\n            m_sampleOffsets[0] = new Vector2(0);\n\n            // Maintain a sum of all the weighting values.\n            float totalWeights = m_sampleWeights[0];\n\n            // Add pairs of additional sample taps, positioned\n            // along a line in both directions from the center.\n            for (int i = 0; i < m_sampleCount / 2; i++)\n            {\n                // Store weights for the positive and negative taps.\n                float weight = ComputeGaussian(i + 1);\n\n                m_sampleWeights[i * 2 + 1] = weight;\n                m_sampleWeights[i * 2 + 2] = weight;\n\n                totalWeights += weight * 2;\n\n                // To get the maximum amount of blurring from a limited number of\n                // pixel shader samples, we take advantage of the bilinear filtering\n                // hardware inside the texture fetch unit. If we position our texture\n                // coordinates exactly halfway between two texels, the filtering unit\n                // will average them for us, giving two samples for the price of one.\n                // This allows us to step in units of two texels per sample, rather\n                // than just one at a time. The 1.5 offset kicks things off by\n                // positioning us nicely in between two texels.\n                float sampleOffset = i * 2 + 1.5f;\n\n                Vector2 delta = new Vector2(dx, dy) * sampleOffset;\n\n                // Store texture coordinate offsets for the positive and negative taps.\n                m_sampleOffsets[i * 2 + 1] = delta;\n                m_sampleOffsets[i * 2 + 2] = -delta;\n            }\n\n            // Normalize the list of sample weightings, so they will always sum to one.\n            for (int i = 0; i < m_sampleWeights.Length; i++)\n            {\n                m_sampleWeights[i] /= totalWeights;\n            }\n\n            // Tell the effect about our new filter settings.\n            m_weightsParameter.SetValue(m_sampleWeights);\n            m_offsetsParameter.SetValue(m_sampleOffsets);\n        }\n\n        //  Evaluates a single point on the gaussian falloff curve.\n        //  Used for setting up the blur filter weightings.\n        static float ComputeGaussian(float n)\n        {\n            float theta = m_blurAmount;\n            return (float)((1.0 / Math.Sqrt(2 * Math.PI * theta)) * Math.Exp(-(n * n) / (2 * theta * theta)));\n        }*/\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Render/Scene/MyCullableRenderObject.cs",
    "content": "﻿#region Using Statements\n\nusing System.Collections.Generic;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Physics;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing System;\nusing MinerWars.AppCode.App;\n\n#endregion\n\nnamespace MinerWars.AppCode.Game.Render\n{\n    public enum MyOcclusionQueryID\n    {\n        MAIN_RENDER = 0,\n        CASCADE_1 = 1,\n        CASCADE_2 = 2,\n        CASCADE_3 = 3,\n        CASCADE_4 = 4,\n    }\n\n    public enum MyOcclusionQueryRenderType\n    {\n        HWDepth,\n        CustomDepth\n    }\n\n    internal class MyOcclusionQueryIssue\n    {\n        public MyOcclusionQueryIssue(MyCullableRenderObject cullObject)\n        {\n            CullObject = cullObject;\n        }\n\n        public MyCullableRenderObject CullObject { get; private set; }\n        public MyOcclusionQuery OcclusionQuery { get; set; }\n        public bool OcclusionQueryVisible { get; set; }\n        public bool OcclusionQueryIssued { get; set; }\n        public MyOcclusionQueryRenderType RenderType { get; set; }\n\n    }\n\n    /// <summary>\n    /// Sensor element used for sensors\n    /// </summary>\n    internal class MyCullableRenderObject : MyRenderObject\n    {\n        MyOcclusionQueryIssue[] m_queries = new MyOcclusionQueryIssue[Enum.GetValues(typeof(MyOcclusionQueryID)).Length];\n        \n        public int EntitiesContained { get; set; }\n\n        public MyDynamicAABBTree CulledObjects { get; private set; }\n\n        public MyCullableRenderObject(MyEntity entity) : base (entity, null)\n        {\n            CulledObjects = new MyDynamicAABBTree(MyRender.PrunningExtension);\n            EntitiesContained = 0;\n\n            for (int i = 0; i < Enum.GetValues(typeof(MyOcclusionQueryID)).Length; i++)\n            {\n                m_queries[i] = new MyOcclusionQueryIssue(this);\n                m_queries[i].RenderType = MyOcclusionQueryRenderType.HWDepth;\n            }\n\n            m_queries[(int)MyOcclusionQueryID.MAIN_RENDER].RenderType = MyOcclusionQueryRenderType.CustomDepth;\n        }\n\n        public MyCullableRenderObject(BoundingBox aabb)\n            : this(null)\n        {\n            m_AABB = aabb;\n        }\n\n        public override void UpdateAABB()\n        {\n            if (Entity != null)\n            {\n                base.UpdateAABB();\n            }\n        }\n\n        public MyOcclusionQueryIssue GetQuery(MyOcclusionQueryID id)\n        {\n            return m_queries[(int)id];\n        }\n\n        public void InitQueries()\n        {\n            for (int i = 0; i < Enum.GetValues(typeof(MyOcclusionQueryID)).Length; i++)\n            {\n                MyOcclusionQuery occlusionQuery = MyOcclusionQueries.Get();\n\n                m_queries[i].OcclusionQueryIssued = false;\n                m_queries[i].OcclusionQueryVisible = true;\n\n                m_queries[i].OcclusionQuery = occlusionQuery;\n            }\n        }\n\n        public void DestroyQueries()\n        {\n            for (int i = 0; i < Enum.GetValues(typeof(MyOcclusionQueryID)).Length; i++)\n            {\n                m_queries[i].OcclusionQueryIssued = false;\n                if (m_queries[i].OcclusionQuery != null)\n                {\n                    MyOcclusionQueries.Return(m_queries[i].OcclusionQuery);\n                    m_queries[i].OcclusionQuery = null;\n                }\n            }\n\n            if (CulledObjects != null)\n            {\n                CulledObjects.Clear();\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Render/Scene/MyOcclusionQuery.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Reflection;\n\nusing SharpDX;\nusing SharpDX.Direct3D9;\nusing SharpDX.Toolkit.Graphics;\n\nnamespace MinerWars.AppCode.Game.Render\n{\n    using Vector2 = MinerWarsMath.Vector2;\n    using Vector3 = MinerWarsMath.Vector3;\n    using Vector4 = MinerWarsMath.Vector4;\n    using Rectangle = MinerWarsMath.Rectangle;\n    using Matrix = MinerWarsMath.Matrix;\n    using Color = MinerWarsMath.Color;\n    using BoundingBox = MinerWarsMath.BoundingBox;\n    using BoundingSphere = MinerWarsMath.BoundingSphere;\n    using BoundingFrustum = MinerWarsMath.BoundingFrustum;\n    using MathHelper = MinerWarsMath.MathHelper;\n    using SysUtils.Utils;\n\n    static class MyOcclusionQueries\n    {\n\n        /*internal class Friend\n        {\n            public void Add(MyOcclusionQuery query)\n            {\n                MyOcclusionQueries.Add(query);\n            }\n\n            public void Remove(MyOcclusionQuery query)\n            {\n                MyOcclusionQueries.Remove(query);\n            }\n        } */\n\n        static HashSet<MyOcclusionQuery> m_existingQueries = new HashSet<MyOcclusionQuery>(); \n        static Stack<MyOcclusionQuery> m_queriesStack = new Stack<MyOcclusionQuery>(256);\n        static Device m_device;\n\n        public static MyOcclusionQuery Get()\n        {\n            MyOcclusionQuery query = null;\n            if (m_queriesStack.Count > 0)\n            {\n                query = m_queriesStack.Pop();\n            }\n            else\n            {\n                query = MyOcclusionQuery.CreateQuery();\n                query.LoadContent(m_device);\n                m_existingQueries.Add(query);\n            }\n\n            return query;\n        }\n\n        public static void Return(MyOcclusionQuery query)\n        {\n            m_queriesStack.Push(query);\n        }\n\n        public static void LoadContent(Device device)\n        {\n            MyMwcLog.WriteLine(\"MyOcclusionQueries.UnloadEffects - START\");\n\n            m_device = device;\n            m_queriesStack.Clear();\n\n            foreach (var q in m_existingQueries)\n            {\n                q.LoadContent(device);\n                m_queriesStack.Push(q);\n            }\n\n            MyMwcLog.WriteLine(\"MyOcclusionQueries.UnloadEffects - END\");\n        }\n\n        public static void UnloadContent()\n        {\n            m_queriesStack.Clear();\n\n            foreach (var q in m_existingQueries)\n            {\n                q.UnloadContent();\n            }\n\n            m_device = null;\n        }\n    }\n\n\n    class MyOcclusionQuery :/* MyOcclusionQueries.Friend,*/ IDisposable\n    {\n        Query dxQuery;\n\n        // Because Xna OcclusionQuery returns IsComplete = false when query not started\n        bool started = false;\n\n\n        public static MyOcclusionQuery CreateQuery()\n        {\n            return new MyOcclusionQuery();\n        }\n\n        private MyOcclusionQuery()\n        {\n        }\n\n        public void Begin()\n        {\n            started = true;\n            dxQuery.Issue(Issue.Begin);\n        }\n\n        public void End()\n        {\n            dxQuery.Issue(Issue.End);\n        }\n\n        public void LoadContent(Device device)\n        {\n            System.Diagnostics.Debug.Assert(dxQuery == null);\n            dxQuery = new Query(device, QueryType.Occlusion);\n        }\n\n        public void UnloadContent()\n        {\n            if (dxQuery != null && !dxQuery.IsDisposed)\n            {\n                dxQuery.Dispose();\n                dxQuery = null;\n            }\n        }\n\n        public int PixelCount\n        {\n            get\n            {\n                if (!started) return 0;\n                int pixels = 0;\n\n                if (dxQuery.GetData<int>(out pixels, false))\n                    return pixels;\n\n                return 0;\n            }\n        }\n\n        public bool IsComplete\n        {\n            get\n            {\n                if (!started) return true; // Because of XNA\n                return CheckStatus(false);\n            }\n        }\n\n        private bool CheckStatus(bool flush)\n        {\n            int data;\n            if (dxQuery != null) //TODO:can be called from PrepareEntitiesTask...\n                return dxQuery.GetData<int>(out data, flush);\n\n            return false;\n        }\n\n        public object Tag { get; set; }\n\n        public void Dispose()\n        {\n            UnloadContent();\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Render/Scene/MyRenderObject.cs",
    "content": "﻿#region Using Statements\n\nusing System.Collections.Generic;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Physics;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWarsMath.Graphics;\nusing System;\nusing ParallelTasks;\nusing MinerWars.CommonLIB.AppCode.Utils;\n\n#endregion\n\nnamespace MinerWars.AppCode.Game.Render\n{\n    /// <summary>\n    /// Sensor element used for sensors\n    /// </summary>\n    class MyRenderObject : MyElement\n    {\n\n        #region Enums\n\n        /// <summary>\n        /// Entity flags.\n        /// </summary>\n        [Flags]\n        public enum RenderFlags\n        {\n            /// <summary>\n            /// Skip the object in render if detected that it is too small\n            /// </summary>\n            SkipIfTooSmall = 1 << 0,\n\n            /// <summary>\n            /// Needs resolve cast shadows flag (done by parallel raycast to sun)\n            /// </summary>\n            NeedsResolveCastShadow = 1 << 1,\n\n            /// <summary>\n            /// Tells if this object is visible from sun. If not, it does not casts shadows\n            /// </summary>\n            CastShadow = 1 << 2,\n\n            /// <summary>\n            /// Casts only one raycast to determine shadow casting\n            /// </summary>\n            FastCastShadowResolve = 1 << 3,\n        }\n\n        #endregion\n\n        RenderFlags m_renderFlags;\n        \n        public int RenderCounter;\n        public int ShadowCastUpdateInterval; //frames count to refresh visibility from sun\n        public MyCullableRenderObject CullObject;\n        public MyEntity Entity;\n        public Task CastShadowTask;\n        public MyCastShadowJob CastShadowJob;\n        public float Distance; //if object was in frustum, distance is uptodate\n        public MyMwcVector3Int? RenderCellCoord; //Render cell coordinate if voxel\n \n\n\n        public MyRenderObject(MyEntity entity, MyMwcVector3Int? renderCellCoord)\n        {\n            Entity = entity;\n            Flags = MyElementFlag.EF_AABB_DIRTY;\n            m_renderFlags = RenderFlags.SkipIfTooSmall | RenderFlags.NeedsResolveCastShadow;\n            RenderCellCoord = renderCellCoord;\n        }\n\n        public void SetDirty()\n        {\n            Flags |= MyElementFlag.EF_AABB_DIRTY;\n        }\n\n        public override void UpdateAABB()\n        {\n            if (RenderCellCoord != null)\n            {\n                MyMwcVector3Int renderCellCoord = RenderCellCoord.Value;\n                ((MyVoxelMap)Entity).GetRenderCellBoundingBox(ref renderCellCoord, out m_AABB);\n\n                //m_AABB.Max += MinerWars.AppCode.Game.Utils.MyVoxelConstants.VOXEL_DATA_CELL_SIZE_HALF_VECTOR_IN_METRES;\n                //m_AABB.Min -= MinerWars.AppCode.Game.Utils.MyVoxelConstants.VOXEL_DATA_CELL_SIZE_HALF_VECTOR_IN_METRES;\n            }\n            else\n            {\n                m_AABB = Entity.WorldAABB;\n            }\n            base.UpdateAABB();\n        }\n\n        public bool SkipIfTooSmall\n        {\n            get { return (m_renderFlags & RenderFlags.SkipIfTooSmall) > 0; }\n            set \n            { \n                if (value)\n                    m_renderFlags |= RenderFlags.SkipIfTooSmall; \n                else\n                    m_renderFlags &= ~RenderFlags.SkipIfTooSmall; \n            }\n        }\n\n        public bool NeedsResolveCastShadow\n        {\n            get { return (m_renderFlags & RenderFlags.NeedsResolveCastShadow) > 0; }\n            set\n            {\n                if (value)\n                    m_renderFlags |= RenderFlags.NeedsResolveCastShadow;\n                else\n                    m_renderFlags &= ~RenderFlags.NeedsResolveCastShadow;\n            }\n        }\n\n        public bool FastCastShadowResolve\n        {\n            get { return (m_renderFlags & RenderFlags.FastCastShadowResolve) > 0; }\n            set\n            {\n                if (value)\n                    m_renderFlags |= RenderFlags.FastCastShadowResolve;\n                else\n                    m_renderFlags &= ~RenderFlags.FastCastShadowResolve;\n            }\n        }\n\n        public bool CastShadow\n        {\n            get { return (m_renderFlags & RenderFlags.CastShadow) > 0; }\n            set\n            {\n                if (value)\n                    m_renderFlags |= RenderFlags.CastShadow;\n                else\n                    m_renderFlags &= ~RenderFlags.CastShadow;\n            }\n        }\n\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Render/SecondaryCamera/MySecondaryCameraRenderer.cs",
    "content": "﻿using System;\n//using MinerWarsMath;\n//using MinerWarsMath.Graphics;\nusing MinerWars.AppCode.Game.Utils;\n\nusing SharpDX;\nusing SharpDX.Direct3D9;\nusing SharpDX.Toolkit;\nusing SharpDX.Toolkit.Graphics;\n\n\nnamespace MinerWars.AppCode.Game.Render.SecondaryCamera\n{\n    using Vector2 = MinerWarsMath.Vector2;\n    using Vector3 = MinerWarsMath.Vector3;\n    using Vector4 = MinerWarsMath.Vector4;\n    using Rectangle = MinerWarsMath.Rectangle;\n    using Matrix = MinerWarsMath.Matrix;\n    using Color = MinerWarsMath.Color;\n    using BoundingBox = MinerWarsMath.BoundingBox;\n    using BoundingSphere = MinerWarsMath.BoundingSphere;\n    using BoundingFrustum = MinerWarsMath.BoundingFrustum;\n    using MathHelper = MinerWarsMath.MathHelper;\n\n\n    /// <summary>\n    /// Singleton class for rendering game to texture, for things such as missile camera, drone camera, rear mirror.\n    /// </summary>\n    internal class MySecondaryCameraRenderer\n    {\n        private readonly MyRender.MyRenderSetup m_setup = new MyRender.MyRenderSetup();\n        MyRender.MyRenderSetup m_backup = new MyRender.MyRenderSetup();\n\n        public Matrix ViewMatrix { get; set; }\n        public Matrix ProjectionMatrix { get; set; }\n\n        private static MySecondaryCameraRenderer m_instance;\n        public static MySecondaryCameraRenderer Instance\n        {\n            get\n            {\n                if (m_instance == null)\n                {\n                    m_instance = new MySecondaryCameraRenderer();\n                }\n                return m_instance;\n            }\n        }\n\n        private MySecondaryCameraRenderer()\n        {\n            SetRenderSetup();\n        }\n\n        public Texture GetRenderedTexture()\n        {\n            return MyRender.GetRenderTarget(MyRenderTargets.SecondaryCamera);\n        }\n\n        private void SetRenderSetup()\n        {       \n            m_setup.CallerID = MyRenderCallerEnum.SecondaryCamera;\n\n            m_setup.RenderTargets = new Texture[1];\n            m_setup.EnabledModules = new System.Collections.Generic.HashSet<MyRenderModuleEnum>();\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.SunGlareAndLensFlare);\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.UpdateOcclusions);\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.AnimatedParticlesPrepare);\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.TransparentGeometry);\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.SunGlow);\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.SectorBorder);\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.DrawSectorBBox);\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.DrawCoordSystem);\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.Explosions);\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.BackgroundCube);\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.GPS);\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.TestField);\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.AnimatedParticles);\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.AnimatedParticlesPrepare);\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.Lights);\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.TransparentGeometryForward);\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.Projectiles);\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.DebrisField);\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.ThirdPerson);\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.Editor);\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.SolarObjects);\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.SolarMapGrid);\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.PrunningStructure);\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.SunWind);\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.IceStormWind);\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.PrefabContainerManager);\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.PhysicsPrunningStructure);\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.ParticlesDustField);\n\n            m_setup.EnabledPostprocesses = new System.Collections.Generic.HashSet<MyPostProcessEnum>();\n            m_setup.EnabledPostprocesses.Add(MyPostProcessEnum.FXAA);\n            m_setup.EnabledPostprocesses.Add(MyPostProcessEnum.VolumetricFog);\n\n            m_setup.EnableDebugHelpers = false;\n            m_setup.EnableOcclusionQueries = false;\n            m_setup.EnableHDR = false;\n            m_setup.EnableNear = false;\n\n            m_setup.EnableSun = true;\n            m_setup.ShadowRenderer = new MyShadowRenderer(MyRenderConstants.RenderQualityProfile.SecondaryShadowMapCascadeSize, MyRenderTargets.SecondaryShadowMap, MyRenderTargets.SecondaryCameraZBuffer, false);\n            m_setup.EnableLights = true;\n\n            // LOW render distances\n            m_setup.LodTransitionNear = 1500;\n            m_setup.LodTransitionFar = 2000;\n            m_setup.LodTransitionBackgroundStart = 6000;\n            m_setup.LodTransitionBackgroundEnd = 6500;\n\n            m_setup.EnableZoom = false;\n            m_setup.FogMultiplierMult = 2.5f; //increases fog in back camera to imitate missing particle dust\n\n            MyRenderConstants.OnRenderQualityChange += MyRenderConstants_OnRenderQualityChange;\n        }\n\n        void MyRenderConstants_OnRenderQualityChange(object sender, EventArgs e)\n        {\n            m_setup.ShadowRenderer.ChangeSize(MyRenderConstants.RenderQualityProfile.SecondaryShadowMapCascadeSize);\n        }\n\n        public void Render()\n        {\n            Texture cameraRT = MyRender.GetRenderTarget(MyRenderTargets.SecondaryCamera);\n            m_setup.RenderTargets[0] = cameraRT;\n\n            //SetRenderSetup();\n\n            // Adjust render setup\n            m_setup.AspectRatio = cameraRT.GetLevelDescription(0).Width / (float)cameraRT.GetLevelDescription(0).Height;\n            m_setup.Viewport = new Viewport(0, 0, cameraRT.GetLevelDescription(0).Width, cameraRT.GetLevelDescription(0).Height);\n            m_setup.ViewMatrix = ViewMatrix;\n            m_setup.CameraPosition = ViewMatrix.Translation;\n            m_setup.Fov = MathHelper.ToRadians(MySecondaryCameraConstants.FIELD_OF_VIEW);\n\n            m_setup.ProjectionMatrix = Matrix.CreatePerspectiveFieldOfView(m_setup.Fov.Value,\n                                                                           m_setup.AspectRatio.Value,\n                                                                           MySecondaryCameraConstants.NEAR_PLANE_DISTANCE,\n                                                                           //m_setup.LodTransitionBackgroundEnd.Value);\n                                                                           MyCamera.FAR_PLANE_DISTANCE);\n            ProjectionMatrix = m_setup.ProjectionMatrix.Value;\n            MyCamera.Viewport = m_setup.Viewport.Value;\n\n            // render to fullsize texture\n            MyRender.PushRenderSetupAndApply(m_setup, ref m_backup);\n            MyRender.Draw(false);\n            MyRender.PopRenderSetupAndRevert(m_backup);\n\n            //MySession.PlayerShip.Weapons.Visible = true; \n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Render/Shadows/MyCastShadowJob.cs",
    "content": "﻿#region Using Statements\n\nusing System.Collections.Generic;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Physics;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWarsMath.Graphics;\nusing System;\nusing ParallelTasks;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.Utils;\n\n#endregion\n\nnamespace MinerWars.AppCode.Game.Render\n{\n    /// <summary>\n    /// Sensor element used for sensors\n    /// </summary>\n    class MyCastShadowJob : IWork\n    {\n        MyEntity m_entity;\n\n        public bool VisibleFromSun;\n\n        public MyCastShadowJob(MyEntity entity)\n        {\n            m_entity = entity;\n            VisibleFromSun = false;\n            m_entity.OnClose += m_entity_OnMarkForClose;\n        }\n\n        void m_entity_OnMarkForClose(MyEntity obj)\n        {\n            m_entity = null;\n        }\n\n        public void DoWork()\n        {\n            try\n            {\n                MyEntities.EntityCloseLock.AcquireShared();\n\n                if (m_entity == null)\n                    return;\n\n                //if (m_entity.EntityId.HasValue && m_entity.EntityId.Value.NumericValue == 119150)\n               // {\n              //  }\n\n              //  if (m_entity == MinerWars.AppCode.Game.Managers.Session.MySession.PlayerShip)\n              //  {\n              //  }\n\n                Vector3 directionToSunNormalized = MyGuiScreenGamePlay.Static.GetDirectionToSunNormalized();\n\n                VisibleFromSun = false;\n\n                MyLine line2 = new MyLine(m_entity.WorldAABB.GetCenter(), m_entity.WorldAABB.GetCenter() + directionToSunNormalized * MyShadowRenderer.SHADOW_MAX_OFFSET * 0.5f, true);\n                var result2 = MyEntities.GetIntersectionWithLine(ref line2, m_entity, null, true, true, true);\n                VisibleFromSun |= IsVisibleFromSun(result2);\n\n                if (m_entity.RenderObjects != null && m_entity.RenderObjects[0].FastCastShadowResolve)\n                    return;\n\n                Vector3[] corners = new Vector3[8];\n                m_entity.LocalAABB.GetCorners(corners);\n                for (int i = 0; i < 8; i++)\n                {\n                    corners[i] = Vector3.Transform(corners[i], m_entity.WorldMatrix);\n                }\n\n                for (int i = 0; i < 8; i++)\n                {\n                    MyLine line = new MyLine(corners[i], corners[i] + directionToSunNormalized * MyShadowRenderer.SHADOW_MAX_OFFSET * 0.5f, true);\n                    var result = MyEntities.GetIntersectionWithLine(ref line, m_entity, null, true, true, true);\n\n                    VisibleFromSun |= IsVisibleFromSun(result);\n\n                    if (VisibleFromSun)\n                        break;\n                }\n            }\n            finally\n            {\n                if (m_entity != null)\n                {\n                    m_entity.OnClose -= m_entity_OnMarkForClose;\n                }\n\n                MyEntities.EntityCloseLock.ReleaseShared();\n            }\n        }\n\n        private bool IsVisibleFromSun(MyIntersectionResultLineTriangleEx? result)\n        {\n            if (!MyRender.EnableAsteroidShadows)\n            {\n                if (result.HasValue && (result.Value.Entity is MyStaticAsteroid) && (result.Value.Entity as MyStaticAsteroid).IsGenerated)\n                    return true;\n                else\n                    return !result.HasValue;\n            }\n            else\n                return !result.HasValue;\n        }\n\n        public WorkOptions Options\n        {\n            get { return new WorkOptions() { MaximumThreads = 1 }; }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Render/Shadows/MyOrthographicCamera.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing System.Diagnostics;\n\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Utils;\n\nnamespace MinerWars.AppCode.Game.Render\n{\n    /// <summary>\n    /// Camera that uses an orthographic projection\n    /// </summary>\n    public class MyOrthographicCamera : MyRenderCamera\n    {\n        float m_width;\n        float m_height;\n\n        float m_xMin;\n        float m_xMax;\n        float m_yMin;\n        float m_yMax;\n\n        BoundingFrustum m_unscaledFrustum = new BoundingFrustum(Matrix.Identity);\n        public Matrix CameraSubfrustum;\n        Vector3[] m_unscaledCorners = new Vector3[8];\n        BoundingBox m_unscaledBoundingBox = new BoundingBox();\n        BoundingBox m_boundingBox = new BoundingBox();\n        List<MyRender.MyRenderElement> m_castingRenderElements = new List<MyRender.MyRenderElement>(1024);\n\n        internal List<MyRender.MyRenderElement> CastingRenderElements\n        {\n            set\n            {\n                m_castingRenderElements.Clear();\n                for (int i = 0; i < value.Count; i++)\n                {\n                    MyRender.MyRenderElement element = value[i];\n                    m_castingRenderElements.Add(element);\n                }\n            }\n\n            get\n            {\n                return m_castingRenderElements;\n            }\n        }\n\n\n        public float Width\n        {\n            get { return m_width; }\n        }\n\n        public float Height\n        {\n            get { return m_height; }\n        }\n\n        public float XMin\n        {\n            get { return m_xMin; }\n            set\n            {\n                m_xMin = value;\n                m_width = m_xMax - m_xMin;\n                Matrix.CreateOrthographicOffCenter(m_xMin, m_xMax, m_yMin, m_yMax, m_nearClip, m_farClip, out m_projectionMatrix);\n                Update();\n            }\n        }\n\n        public float XMax\n        {\n            get { return m_xMax; }\n            set\n            {\n                m_xMax = value;\n                m_width = m_xMax - m_xMin;\n                Matrix.CreateOrthographicOffCenter(m_xMin, m_xMax, m_yMin, m_yMax, m_nearClip, m_farClip, out m_projectionMatrix);\n                Update();\n            }\n        }\n\n        public float YMin\n        {\n            get { return m_xMin; }\n            set\n            {\n                m_yMin = value;\n                m_height = m_yMax - m_yMin;\n                Matrix.CreateOrthographicOffCenter(m_xMin, m_xMax, m_yMin, m_yMax, m_nearClip, m_farClip, out m_projectionMatrix);\n                Update();\n            }\n        }\n\n        public float YMax\n        {\n            get { return m_xMin; }\n            set\n            {\n                m_yMax = value;\n                m_height = m_yMax - m_yMin;\n                Matrix.CreateOrthographicOffCenter(m_xMin, m_xMax, m_yMin, m_yMax, m_nearClip, m_farClip, out m_projectionMatrix);\n                Update();\n            }\n        }\n\n        public override float NearClip\n        {\n            get { return m_nearClip; }\n            set\n            {\n                m_nearClip = value;\n                Matrix.CreateOrthographicOffCenter(m_xMin, m_xMax, m_yMin, m_yMax, m_nearClip, m_farClip, out m_projectionMatrix);\n                Update();\n            }\n        }\n\n        public override float FarClip\n        {\n            get { return m_farClip; }\n            set\n            {\n                m_farClip = value;\n                Matrix.CreateOrthographicOffCenter(m_xMin, m_xMax, m_yMin, m_yMax, m_nearClip, m_farClip, out m_projectionMatrix);\n                Update();\n            }\n        }\n\n        /// <summary>\n        /// Creates a camera using an orthographic projection\n        /// </summary>\n        /// <param name=\"width\">Width of the projection volume</param>\n        /// <param name=\"height\">Height of the projection volume</param>\n        /// <param name=\"nearClip\">Distance to near clip plane</param>\n        /// <param name=\"farClip\">Distance to far clip plane</param>\n        public MyOrthographicCamera(float width, float height, float nearClip, float farClip)\n            : base()\n        {\n            this.m_width = width;\n            this.m_height = height;\n            this.m_nearClip = nearClip;\n            this.m_farClip = farClip;\n            this.m_xMax = width / 2;\n            this.m_yMax = height / 2;\n            this.m_xMin = -width / 2;\n            this.m_yMin = -height / 2;\n            Matrix.CreateOrthographic(width, height, nearClip, farClip, out m_projectionMatrix);\n            Update();\n        }\n\n        public MyOrthographicCamera(float xMin, float xMax, float yMin, float yMax, float nearClip, float farClip)\n            : base()\n        {\n            Update(xMin, xMax, yMin, yMax, nearClip, farClip);\n        }\n\n        public void Update(float xMin, float xMax, float yMin, float yMax, float nearClip, float farClip)\n        {\n            this.m_xMin = xMin;\n            this.m_yMin = yMin;\n            this.m_xMax = xMax;\n            this.m_yMax = yMax;\n            this.m_width = xMax - xMin;\n            this.m_height = yMax - yMin;\n            this.m_nearClip = nearClip;\n            this.m_farClip = farClip;\n            Matrix.CreateOrthographicOffCenter(xMin, xMax, yMin, yMax, nearClip, farClip, out m_projectionMatrix);\n            Update();\n\n            Debug.Assert(xMax > xMin && yMax > yMin, \"Invalid ortho camera params\");\n        }\n\n        public void UpdateUnscaled(float xMin, float xMax, float yMin, float yMax, float nearClip, float farClip)\n        {\n            this.m_xMin = xMin;\n            this.m_yMin = yMin;\n            this.m_xMax = xMax;\n            this.m_yMax = yMax;\n            this.m_width = xMax - xMin;\n            this.m_height = yMax - yMin;\n            this.m_nearClip = nearClip;\n            this.m_farClip = farClip;\n            Matrix.CreateOrthographicOffCenter(xMin, xMax, yMin, yMax, nearClip, farClip, out m_unscaledProjectionMatrix);\n\n            Debug.Assert(xMax > xMin && yMax > yMin, \"Invalid ortho camera params\");\n        }\n\n\n        protected void UpdateUnscaled()\n        {\n            // Make our view matrix\n            Matrix.Invert(ref m_worldMatrix, out m_viewMatrix);\n\n            // Create the combined view-projection matrix\n            Matrix.Multiply(ref m_viewMatrix, ref m_unscaledProjectionMatrix, out m_viewProjMatrix);\n\n            // Create the bounding frustum\n            m_unscaledFrustum.Matrix = m_viewProjMatrix;\n        }\n\n        public void SetViewMatrixUnscaled(ref Matrix viewMatrix)\n        {\n            this.m_viewMatrix = viewMatrix;\n            Matrix.Invert(ref viewMatrix, out m_worldMatrix);\n            UpdateUnscaled();\n        }\n\n        public BoundingFrustum UnscaledBoundingFrustum\n        {\n            get { return m_unscaledFrustum; }\n        }\n\n        public BoundingBox UnscaledBoundingBox\n        {\n            get\n            {\n                UnscaledBoundingFrustum.GetCorners(m_unscaledCorners);\n                m_unscaledBoundingBox = m_unscaledBoundingBox.CreateInvalid();\n                foreach (Vector3 corner in m_unscaledCorners)\n                {\n                    Vector3 cornerInst = corner;\n                    m_unscaledBoundingBox = m_unscaledBoundingBox.Include(ref cornerInst);\n                }\n\n                return m_unscaledBoundingBox;\n            }\n        }\n\n\n        public BoundingBox BoundingBox\n        {\n            get\n            {\n                BoundingFrustum.GetCorners(m_unscaledCorners);\n                m_boundingBox = m_boundingBox.CreateInvalid();\n                foreach (Vector3 corner in m_unscaledCorners)\n                {\n                    Vector3 cornerInst = corner;\n                    m_boundingBox = m_boundingBox.Include(ref cornerInst);\n                }\n\n                return m_boundingBox;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Render/Shadows/MyPerspectiveCamera.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing System.Diagnostics;\n\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Utils;\n\nnamespace MinerWars.AppCode.Game.Render\n{\n    /// <summary>\n    /// Camera using a perspective projection\n    /// </summary>\n    public class MyPerspectiveCamera : MyRenderCamera\n    {\n        protected float m_fieldOfView;\n        protected float m_aspectRatio;\n\n        public float FieldOfView\n        {\n            get { return m_fieldOfView; }\n            set\n            {\n                m_fieldOfView = value;\n                Matrix.CreatePerspectiveFieldOfView(m_fieldOfView, m_aspectRatio, m_nearClip, m_farClip, out m_projectionMatrix);\n                Update();\n            }\n        }\n\n        public float AspectRatio\n        {\n            get { return m_aspectRatio; }\n            set\n            {\n                m_aspectRatio = value;\n                Matrix.CreatePerspectiveFieldOfView(m_fieldOfView, m_aspectRatio, m_nearClip, m_farClip, out m_projectionMatrix);\n                Update();\n            }\n        }\n\n        public override float NearClip\n        {\n            get { return m_nearClip; }\n            set\n            {\n                m_nearClip = value;\n                Matrix.CreatePerspectiveFieldOfView(m_fieldOfView, m_aspectRatio, m_nearClip, m_farClip, out m_projectionMatrix);\n                Update();\n            }\n        }\n\n        public override float FarClip\n        {\n            get { return m_farClip; }\n            set\n            {\n                m_farClip = value;\n                Matrix.CreatePerspectiveFieldOfView(m_fieldOfView, m_aspectRatio, m_nearClip, m_farClip, out m_projectionMatrix);\n                Update();\n            }\n        }\n\n        public MyPerspectiveCamera()\n            : base()\n        {\n            this.m_fieldOfView = 1.0f;\n            this.m_aspectRatio = 1.0f;\n            this.m_nearClip = 50;\n            this.m_farClip = 100;\n        }\n\n        /// <summary>\n        /// Creates a camera using a perspective projection\n        /// </summary>\n        /// <param name=\"fieldOfView\">The vertical field of view</param>\n        /// <param name=\"aspectRatio\">Aspect ratio of the projection</param>\n        /// <param name=\"nearClip\">Distance to near clipping plane</param>\n        /// <param name=\"farClip\">Distance to far clipping plane</param>\n        public MyPerspectiveCamera(float fieldOfView, float aspectRatio, float nearClip, float farClip)\n            : base()\n        {\n            this.m_fieldOfView = fieldOfView;\n            this.m_aspectRatio = aspectRatio;\n            this.m_nearClip = nearClip;\n            this.m_farClip = farClip;\n            Matrix.CreatePerspectiveFieldOfView(fieldOfView, aspectRatio, nearClip, farClip, out m_projectionMatrix);\n            Update();\n        }\n\n    }\n\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Render/Shadows/MyRenderCamera.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing System.Diagnostics;\n\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Utils;\n\nnamespace MinerWars.AppCode.Game.Render\n{\n    /// <summary>\n    /// Abstract base class for all camera types\n    /// </summary>\n    public abstract class MyRenderCamera\n    {\n        protected Matrix m_viewMatrix = Matrix.Identity;\n        protected Matrix m_worldMatrix = Matrix.Identity;\n        protected Matrix m_projectionMatrix = Matrix.Identity;\n        protected Matrix m_unscaledProjectionMatrix = Matrix.Identity;\n        protected Matrix m_viewProjMatrix = Matrix.Identity;\n\n        protected BoundingFrustum m_boundingFrustum;\n      \n        protected float m_nearClip;\n        protected float m_farClip;\n\n        public void GetWorldMatrix(out Matrix worldMatrix)\n        {\n            worldMatrix = this.m_worldMatrix;\n        }\n\n        public void SetWorldMatrix(ref Matrix worldMatrix)\n        {\n            this.m_worldMatrix = worldMatrix;\n            Update();\n        }\n\n        public void GetViewMatrix(out Matrix viewMatrix)\n        {\n            viewMatrix = this.m_viewMatrix;\n        }\n\n        public void SetViewMatrix(ref Matrix viewMatrix)\n        {\n            this.m_viewMatrix = viewMatrix;\n            Matrix.Invert(ref viewMatrix, out m_worldMatrix);\n            Update();\n        }\n\n        public void GetProjectionMatrix(out Matrix projectionMatrix)\n        {\n            projectionMatrix = this.m_projectionMatrix;\n        }\n\n        public void GetViewProjMatrix(out Matrix viewProjMatrix)\n        {\n            viewProjMatrix = this.m_viewProjMatrix;\n        }\n\n        public Matrix WorldMatrix\n        {\n            get { return m_worldMatrix; }\n            set\n            {\n                m_worldMatrix = value;\n                Update();\n            }\n        }\n\n        public Matrix ViewMatrix\n        {\n            get { return m_viewMatrix; }\n            set\n            {\n                m_viewMatrix = value;\n                Matrix.Invert(ref m_viewMatrix, out m_worldMatrix);\n                Update();\n            }\n        }\n\n        public Matrix ProjectionMatrix\n        {\n            get { return m_projectionMatrix; }\n            set { m_projectionMatrix = value; }\n        }\n\n        public Matrix ViewProjectionMatrix\n        {\n            get { return m_viewProjMatrix; }\n            set { m_viewProjMatrix = value; }\n        }\n\n        public virtual float NearClip\n        {\n            get { return m_nearClip; }\n            set { }\n        }\n\n        public virtual float FarClip\n        {\n            get { return m_farClip; }\n            set { }\n        }\n\n        public Vector3 Position\n        {\n            get { return m_worldMatrix.Translation; }\n            set\n            {\n                m_worldMatrix.Translation = value;\n                Update();\n            }\n        }\n\n        public BoundingFrustum BoundingFrustum\n        {\n            get { return m_boundingFrustum; }\n        }\n\n        public Quaternion Orientation\n        {\n            get\n            {\n                Quaternion orientation;\n                Quaternion.CreateFromRotationMatrix(ref m_worldMatrix, out orientation);\n                return orientation;\n            }\n            set\n            {\n                Quaternion orientation = value;\n                Vector3 position = m_worldMatrix.Translation;\n                Matrix.CreateFromQuaternion(ref orientation, out m_worldMatrix);\n                m_worldMatrix.Translation = position;\n                Update();\n            }\n        }\n\n        public Matrix FrustumProjectionMatrix;\n\n        /// <summary>\n        /// Base constructor\n        /// </summary>\n        public MyRenderCamera()\n        {\n            m_boundingFrustum = new BoundingFrustum(m_viewProjMatrix);\n            m_worldMatrix = Matrix.Identity;\n            m_viewMatrix = Matrix.Identity;\n        }\n\n        /// <summary>\n        /// Applies a transform to the camera's world matrix,\n        /// with the new transform applied first\n        /// </summary>\n        /// <param name=\"transform\">The transform to be applied</param>\n        public void PreTransform(ref Matrix transform)\n        {\n            Matrix.Multiply(ref transform, ref m_worldMatrix, out m_worldMatrix);\n            Update();\n        }\n\n        /// <summary>\n        /// Applies a transform to the camera's world matrix,\n        /// with the new transform applied second\n        /// </summary>\n        /// <param name=\"transform\">The transform to be applied</param>\n        public void PostTransform(ref Matrix transform)\n        {\n            Matrix.Multiply(ref m_worldMatrix, ref transform, out m_worldMatrix);\n            Update();\n        }\n\n        /// <summary>\n        /// Updates the view-projection matrix and frustum coordinates based on\n        /// the current camera position/orientation and projection parameters.\n        /// </summary>\n        protected void Update()\n        {\n            // Make our view matrix\n            Matrix.Invert(ref m_worldMatrix, out m_viewMatrix);\n\n            // Create the combined view-projection matrix\n            Matrix.Multiply(ref m_viewMatrix, ref m_projectionMatrix, out m_viewProjMatrix);\n\n            // Create the bounding frustum\n            m_boundingFrustum.Matrix = m_viewProjMatrix;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Render/Shadows/MyShadowRenderer.cs",
    "content": "#region Using\n\nusing System;\nusing System.Collections.Generic;\nusing System.Text;\n\nusing MinerWars.AppCode.Game.Prefabs;\nusing MinerWars.AppCode.Game.Render;\nusing MinerWars.AppCode.Game.Effects;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Managers;\nusing MinerWars.AppCode.Game.Utils.VertexFormats;\nusing System.Diagnostics;\nusing ParallelTasks;\nusing KeenSoftwareHouse.Library.Extensions;\nusing MinerWars.AppCode.Game.Managers.Session;\n\nusing SharpDX;\nusing SharpDX.Direct3D9;\nusing SharpDX.Toolkit.Graphics;\n\n#endregion\n\nnamespace MinerWars.AppCode.Game.Render\n{\n    using Vector2 = MinerWarsMath.Vector2;\n    using Vector3 = MinerWarsMath.Vector3;\n    using Vector4 = MinerWarsMath.Vector4;\n    using Rectangle = MinerWarsMath.Rectangle;\n    using Matrix = MinerWarsMath.Matrix;\n    using Color = MinerWarsMath.Color;\n    using BoundingBox = MinerWarsMath.BoundingBox;\n    using BoundingSphere = MinerWarsMath.BoundingSphere;\n    using BoundingFrustum = MinerWarsMath.BoundingFrustum;\n    using MathHelper = MinerWarsMath.MathHelper;\n\n\n    class MyShadowRenderer : MyShadowRendererBase, IWork\n    {\n        public static bool RespectCastShadowsFlags = true;\n\n        #region Members\n\n        public const int NumSplits = 4;\n        public static readonly float SHADOW_MAX_OFFSET = 10000.0f; //how far we are going to render objects behind cascade box\n        private int m_shadowMapCascadeSize;\n        private Vector2 m_shadowMapCascadeSizeInv;\n\n        public int ShadowMapCascadeSize\n        {\n            get\n            {\n                return m_shadowMapCascadeSize;\n            }\n            private set\n            {\n                m_shadowMapCascadeSize = value;\n                m_shadowMapCascadeSizeInv.X = 1.0f / ((float)NumSplits * value);\n                m_shadowMapCascadeSizeInv.Y = 1.0f / value;\n            }\n        }\n\n        \n\n        Vector3[] m_frustumCornersVS = new Vector3[8];\n        Vector3[] m_frustumCornersWS = new Vector3[8];\n        Vector3[] m_frustumCornersLS = new Vector3[8];\n        Vector3[] m_farFrustumCornersVS = new Vector3[4];\n        Vector3[] m_splitFrustumCornersVS = new Vector3[8];\n        MyOrthographicCamera[] m_lightCameras = new MyOrthographicCamera[NumSplits];\n        Matrix[] m_lightViewProjectionMatrices = new Matrix[NumSplits];\n        Vector2[] m_lightClipPlanes = new Vector2[NumSplits];\n        List<MyOcclusionQueryIssue>[] m_occlusionQueriesLists = new List<MyOcclusionQueryIssue>[NumSplits];\n        float[] m_splitDepths = new float[NumSplits + 1];\n\n        Vector3 m_sunLightDirection;\n        Vector3 m_sunPosition;\n        MyPerspectiveCamera m_camera = new MyPerspectiveCamera();\n\n        public MyOcclusionQueryIssue[] m_cascadeQueries = new MyOcclusionQueryIssue[NumSplits];\n\n        int m_frameIndex;\n        bool[] m_skip = new bool[NumSplits];\n        bool[] m_interleave = new bool[NumSplits];\n        bool[] m_visibility = new bool[NumSplits];\n\n        MyRenderTargets m_shadowRenderTarget;\n        MyRenderTargets m_shadowDepthTarget;\n\n        /// <summary>\n        /// Event that occures when we want prepare shadows for draw\n        /// </summary>\n        public bool MultiThreaded = false;\n        Task m_prepareForDrawTask;\n\n\n        #endregion\n\n        #region Properties\n\n        public Vector3 SunLightDirection\n        {\n            get { return m_sunLightDirection; }\n            set { m_sunLightDirection = value; }\n        }\n\n        public Vector3 SunPosition\n        {\n            get { return m_sunPosition; }\n            set { m_sunPosition = value; }\n        }\n\n        #endregion\n\n        /// <summary>\n        /// Creates the renderer\n        /// </summary>\n        /// <param name=\"graphicsDevice\">The GraphicsDevice to use for rendering</param>\n        /// <param name=\"contentManager\">The MyCustomContentManager to use for loading content</param>\n        public MyShadowRenderer(int shadowMapSize, MyRenderTargets renderTarget, MyRenderTargets depthTarget, bool multiThreaded)\n        {\n            ShadowMapCascadeSize = shadowMapSize;\n            m_shadowRenderTarget = renderTarget;\n            m_shadowDepthTarget = depthTarget;\n\n            for (int i = 0; i < NumSplits; i++)\n            {\n                m_lightCameras[i] = new MyOrthographicCamera(1, 1, 1, 10);\n                // Occ queries for shadows are disabled, so save memory by commenting this\n                //m_occlusionQueriesLists[i] = new List<MyOcclusionQueryIssue>(1024);\n                m_cascadeQueries[i] = new MyOcclusionQueryIssue(null);\n                m_visibility[i] = true;\n            }\n\n            MultiThreaded = multiThreaded;\n\n            if (MyRenderConstants.RenderQualityProfile.ForwardRender)\n                MultiThreaded = false;\n        }\n\n        public void ChangeSize(int newSize)\n        {\n            ShadowMapCascadeSize = newSize;\n        }\n\n        public void UpdateFrustumCorners()\n        {\n            //Set camera data\n            m_camera.FarClip = 1000.0f;\n            m_camera.NearClip = 1.0f;\n            m_camera.AspectRatio = MyCamera.AspectRatio;\n            m_camera.FieldOfView = MyCamera.FovWithZoom;\n\n            //camera.WorldMatrix = Matrix.CreateWorld(MyCamera.Position, MyCamera.ForwardVector, MyCamera.UpVector);\n            m_camera.ViewMatrix = MyCamera.ViewMatrix;\n            m_camera.ProjectionMatrix = MyCamera.ProjectionMatrix;\n\n            // Get corners of the main camera's bounding frustum\n            Matrix cameraTransform, viewMatrix;\n            m_camera.GetWorldMatrix(out cameraTransform);\n            m_camera.GetViewMatrix(out viewMatrix);\n            m_camera.BoundingFrustum.GetCorners(m_frustumCornersWS);\n            Vector3.Transform(m_frustumCornersWS, ref viewMatrix, m_frustumCornersVS);\n            for (int i = 0; i < 4; i++)\n                m_farFrustumCornersVS[i] = m_frustumCornersVS[i + 4];\n        }\n\n        public void PrepareFrame()\n        {\n            m_frameIndex++;\n            m_frameIndex %= NumSplits;\n\n            // Need both interleave and skip (interleave is required for occ queries\n            m_skip[0] = m_interleave[0] = MyRender.FreezeCascade[0];\n            m_skip[1] = m_interleave[1] = MyRender.FreezeCascade[1] || (MyRender.ShadowInterleaving && m_frameIndex % 2 != 0); // on frames 0, 2\n            m_skip[2] = m_interleave[2] = MyRender.FreezeCascade[2] || (MyRender.ShadowInterleaving && m_frameIndex % 2 == 0); // on frames 1, 3\n            m_skip[3] = m_interleave[3] = MyRender.FreezeCascade[3] || (MyRender.ShadowInterleaving && m_frameIndex % 2 == 0); // on frames 1, 3\n\n            PrepareForDraw();\n        }\n\n        void PrepareForDraw()\n        {\n            if (MultiThreaded)\n            {\n                if (m_prepareForDrawTask.IsComplete)\n                {\n                    m_prepareForDrawTask = ParallelTasks.Parallel.Start(this);\n                }\n            }\n        }\n \n        public void DoWork()\n        {\n            PrepareCascadesForDraw();\n        }\n\n        public WorkOptions Options\n        {\n            get { return new WorkOptions() { MaximumThreads = 1 }; }\n        }\n\n        public void WaitUntilPrepareForDrawCompleted()\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"WaitUntilPrepareForDrawCompleted\");\n\n            m_prepareForDrawTask.Wait();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        void PrepareCascadesForDraw()\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"UpdateFrustums\");\n\n            SunLightDirection = -MyGuiScreenGamePlay.Static.GetDirectionToSunNormalized();\n            SunPosition = 100000 * -SunLightDirection;\n            UpdateFrustums();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            // Set casting shadows geometry\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"update entities\");\n\n            int frustumIndex = 0;\n\n            foreach (MyOrthographicCamera lightCamera in m_lightCameras)\n            {\n                if (m_skip[frustumIndex])\n                {\n                    frustumIndex++;\n                    continue;\n                }\n\n                m_renderElementsForShadows.Clear();\n                m_transparentRenderElementsForShadows.Clear();\n                m_castingRenderObjectsUnique.Clear();\n\n                MyRender.GetRenderProfiler().StartProfilingBlock(\"OverlapAllBoundingBox\");\n         \n\n                BoundingBox castersBox = lightCamera.BoundingBox; //Cannot use unscaled - incorrect result because of different cascade viewport size\n                BoundingFrustum castersFrustum = lightCamera.BoundingFrustum;//Cannot use unscaled - incorrect result because of different cascade viewport size\n                //MyRender.PrepareEntitiesForDraw(ref castersBox, (MyOcclusionQueryID)(frustumIndex + 1), m_castingRenderObjects, m_occlusionQueriesLists[frustumIndex], ref MyPerformanceCounter.PerCameraDraw.ShadowEntitiesOccluded[frustumIndex]);\n                MyRender.PrepareEntitiesForDraw(ref castersFrustum, lightCamera.Position, 1, (MyOcclusionQueryID)(frustumIndex + 1), m_castingRenderObjects, m_castingCullObjects, null, ref MyPerformanceCounter.PerCameraDraw.ShadowEntitiesOccluded[frustumIndex]);\n\n                MyRender.GetRenderProfiler().EndProfilingBlock();\n\n                MyRender.GetRenderProfiler().StartProfilingBlock(\"m_castingRenderObjects\");\n\n                int c = 0;\n                int skipped = 0;\n\n                while (c < m_castingRenderObjects.Count)\n                {\n                    MyRenderObject renderObject = (MyRenderObject)m_castingRenderObjects[c];\n                    MyEntity entity = renderObject.Entity;\n\n                    //TODO: Appears in Chinese Escape when reloaded several times\n                    //System.Diagnostics.Debug.Assert(!entity.NearFlag);\n\n                    if (RespectCastShadowsFlags)\n                    {\n                        System.Diagnostics.Debug.Assert(!(entity is MyDummyPoint) && !(entity is MinerWars.AppCode.Game.Entities.WayPoints.MyWayPoint));\n\n                        if ((renderObject.ShadowCastUpdateInterval > 0) && ((MyRender.RenderCounter % renderObject.ShadowCastUpdateInterval) == 0))\n                        {\n                            renderObject.NeedsResolveCastShadow = true;\n                            //We have to leave last value, because true when not casting shadow make radiation to ship\n                           // renderObject.CastShadow = true;\n                        }\n\n                        if (renderObject.NeedsResolveCastShadow)\n                        { //Resolve raycast to sun\n                            if (renderObject.CastShadowJob == null)\n                            {\n                                renderObject.CastShadowJob = new MyCastShadowJob(entity);\n                                renderObject.CastShadowTask = ParallelTasks.Parallel.Start(renderObject.CastShadowJob);\n                            }\n                            else\n                                if (renderObject.CastShadowTask.IsComplete)\n                                {\n                                    renderObject.CastShadow = renderObject.CastShadowJob.VisibleFromSun;\n                                    renderObject.CastShadowTask = new ParallelTasks.Task();\n                                    renderObject.CastShadowJob = null;\n                                    renderObject.NeedsResolveCastShadow = false;\n                                }\n                        }\n\n                        if (!renderObject.NeedsResolveCastShadow && !renderObject.CastShadow)\n                        {\n                            m_castingRenderObjects.RemoveAtFast(c);\n                            skipped++;\n                            continue;\n                        }\n                    }\n                    else\n                    {\n                        renderObject.NeedsResolveCastShadow = true;\n                    }\n                     \n                    /*\n                    //Skip object depending on their size and cascade\n                    if (entity.WorldVolume.Radius < (frustumIndex + 1) * 5)\n                    {\n                        m_castingRenderObjects.RemoveAtFast(c);\n                        continue;\n                    }  \n                                        */\n                \n                    if (entity != null)\n                    {\n                        if (!m_castingRenderObjectsUnique.Contains(renderObject))\n                        {\n                            m_castingRenderObjectsUnique.Add(renderObject);\n\n                            if (frustumIndex < MyRenderConstants.RenderQualityProfile.ShadowCascadeLODTreshold)\n                            {\n                                if (entity is MyVoxelMap)\n                                {\n                                    //(entity as MyVoxelMap).GetRenderElementsForShadowmap(m_renderElementsForShadows, ref castersBox, castersFrustum, MyLodTypeEnum.LOD0, true);\n                                    (entity as MyVoxelMap).GetRenderElementsForShadowmap(m_renderElementsForShadows, renderObject.RenderCellCoord.Value, MyLodTypeEnum.LOD0, true);\n                                }\n\n                                else\n                                    if (entity.ModelLod0 != null)\n                                        MyRender.CollectRenderElementsForShadowmap(m_renderElementsForShadows, m_transparentRenderElementsForShadows,\n                                            entity, entity.ModelLod0);\n\n                            }\n                            else\n                            {\n\n                                if (entity is MyVoxelMap)\n                                {\n                                    (entity as MyVoxelMap).GetRenderElementsForShadowmap(m_renderElementsForShadows, renderObject.RenderCellCoord.Value, MyLodTypeEnum.LOD1, true);\n                                }\n                                else\n                                    if (entity.ModelLod1 != null)\n                                        MyRender.CollectRenderElementsForShadowmap(m_renderElementsForShadows, m_transparentRenderElementsForShadows,\n                                            entity, entity.ModelLod1);\n                            }\n                        }\n                    }\n\n                    c++;\n                }\n\n                MyRender.GetRenderProfiler().EndProfilingBlock();\n\n                //Sorting VBs to minimize VB switches\n                m_renderElementsForShadows.Sort(m_shadowElementsComparer);\n\n                lightCamera.CastingRenderElements = m_renderElementsForShadows;\n\n                MyPerformanceCounter.PerCameraDraw.RenderElementsInShadows += m_renderElementsForShadows.Count;\n\n                frustumIndex++;\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        void UpdateFrustums()\n        {\n            //Calculate cascade splits\n            m_splitDepths[0] = 1;\n            m_splitDepths[1] = 200;\n            m_splitDepths[2] = 500;\n            m_splitDepths[3] = 2000;\n            m_splitDepths[4] = 10000;\n\n            // Calculate data to each split of the cascade\n            for (int i = 0; i < NumSplits; i++)\n            {\n                if (m_skip[i])\n                {\n                    if (!m_interleave[i])\n                    {\n                        MyPerformanceCounter.PerCameraDraw.ShadowEntitiesOccluded[i] += m_lightCameras[i].CastingRenderElements.Count;\n                    }\n                    continue;\n                }\n\n                float minZ = m_splitDepths[i];\n                float maxZ = m_splitDepths[i + 1];\n\n                if (CalculateFrustum(m_lightCameras[i], m_camera, minZ, maxZ) == null)\n                {\n                    //Shadow map caching\n                    //m_skip[i] = true;                   \n                }\n            }\n\n            // We'll use these clip planes to determine which split a pixel belongs to\n            for (int i = 0; i < NumSplits; i++)\n            {            \n                m_lightClipPlanes[i].X = -m_splitDepths[i];\n                m_lightClipPlanes[i].Y = -m_splitDepths[i + 1];\n\n                m_lightCameras[i].GetViewProjMatrix(out m_lightViewProjectionMatrices[i]);\n                m_lightViewProjectionMatrices[i] = Matrix.CreateWorld(MyCamera.Position, MyCamera.ForwardVector, MyCamera.UpVector) * m_lightViewProjectionMatrices[i];\n            }\n        }\n\n        /// <summary>\n        /// Renders a list of models to the shadow map, and returns a surface \n        /// containing the shadow occlusion factor\n        /// </summary>\n        public void Render()\n        {\n            int shadowBlock = -1;\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyShadowRenderer::Render\", ref shadowBlock);\n\n            if (MultiThreaded)\n            {\n                WaitUntilPrepareForDrawCompleted();\n            }\n            else\n            {\n                //PrepareFrame();\n                PrepareCascadesForDraw();\n            }\n\n            IssueQueriesForCascades();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Set & Clear RT\");\n\n            // Set our targets\n            MyMinerGame.SetRenderTarget(MyRender.GetRenderTarget(m_shadowRenderTarget), MyRender.GetRenderTarget(m_shadowDepthTarget));\n            //MyMinerGameDX.Static.GraphicsDevice.Clear(ClearOptions.Target | ClearOptions.DepthBuffer, Color.White, 1.0f, 0);\n            MyMinerGame.Static.GraphicsDevice.Clear(ClearFlags.ZBuffer, new ColorBGRA(1.0f), 1.0f, 0);\n\n            DepthStencilState.Default.Apply();\n            RasterizerState.CullCounterClockwise.Apply();\n            BlendState.Opaque.Apply();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Render 4 ShadowMaps\");\n\n            // Render our scene geometry to each split of the cascade\n            for (int i = 0; i < NumSplits; i++)\n            {\n                if (m_skip[i]) continue;\n                if (!m_visibility[i]) continue;\n\n                RenderShadowMap(i);\n                //IssueQueriesForShadowMap(i);\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            //   MyGuiManager.TakeScreenshot();\n            MyRender.TakeScreenshot(\"ShadowMap\", MyRender.GetRenderTarget(m_shadowRenderTarget), MyEffectScreenshot.ScreenshotTechniqueEnum.Color);\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock(shadowBlock);\n        }\n\n        /// <summary>\n        /// Determines the size of the frustum needed to cover the viewable area,\n        /// then creates an appropriate orthographic projection.\n        /// </summary>\n        /// <param name=\"light\">The directional light to use</param>\n        /// <param name=\"mainCamera\">The camera viewing the scene</param>\n        protected MyOrthographicCamera CalculateFrustum(MyOrthographicCamera lightCamera, MyPerspectiveCamera mainCamera, float minZ, float maxZ)\n        {\n            // Shorten the view frustum according to the shadow view distance\n            Matrix cameraMatrix;\n            mainCamera.GetWorldMatrix(out cameraMatrix);\n\n            Matrix.CreatePerspectiveFieldOfView(mainCamera.FieldOfView, mainCamera.AspectRatio, minZ, maxZ, out lightCamera.CameraSubfrustum);\n            Matrix wma;\n            mainCamera.GetViewMatrix(out wma);\n            lightCamera.CameraSubfrustum = MyCamera.ViewMatrix * lightCamera.CameraSubfrustum;\n\n            for (int i = 0; i < 4; i++)\n                m_splitFrustumCornersVS[i] = m_frustumCornersVS[i + 4] * (minZ / mainCamera.FarClip);\n\n            for (int i = 4; i < 8; i++)\n                m_splitFrustumCornersVS[i] = m_frustumCornersVS[i] * (maxZ / mainCamera.FarClip);\n\n            Vector3.Transform(m_splitFrustumCornersVS, ref cameraMatrix, m_frustumCornersWS);\n\n            // Position the shadow-caster camera so that it's looking at the centroid,\n            // and backed up in the direction of the sunlight\n\n            //Toto se nemeni per frame!\n            Matrix viewMatrix = Matrix.CreateLookAt(Vector3.Zero - (m_sunLightDirection * mainCamera.FarClip), Vector3.Zero, new Vector3(0, 1, 0));\n\n            // Determine the position of the frustum corners in light space\n            Vector3.Transform(m_frustumCornersWS, ref viewMatrix, m_frustumCornersLS);\n\n            // Calculate an orthographic projection by sizing a bounding box\n            // to the frustum coordinates in light space\n            Vector3 mins = m_frustumCornersLS[0];\n            Vector3 maxes = m_frustumCornersLS[0];\n            for (int i = 0; i < 8; i++)\n            {\n                if (m_frustumCornersLS[i].X > maxes.X)\n                    maxes.X = m_frustumCornersLS[i].X;\n                else if (m_frustumCornersLS[i].X < mins.X)\n                    mins.X = m_frustumCornersLS[i].X;\n                if (m_frustumCornersLS[i].Y > maxes.Y)\n                    maxes.Y = m_frustumCornersLS[i].Y;\n                else if (m_frustumCornersLS[i].Y < mins.Y)\n                    mins.Y = m_frustumCornersLS[i].Y;\n                if (m_frustumCornersLS[i].Z > maxes.Z)\n                    maxes.Z = m_frustumCornersLS[i].Z;\n                else if (m_frustumCornersLS[i].Z < mins.Z)\n                    mins.Z = m_frustumCornersLS[i].Z;\n            }\n\n            // Update an orthographic camera for collision detection\n            lightCamera.UpdateUnscaled(mins.X, maxes.X, mins.Y, maxes.Y, -maxes.Z - SHADOW_MAX_OFFSET, -mins.Z);\n            lightCamera.SetViewMatrixUnscaled(ref viewMatrix);\n\n            // We snap the camera to 1 pixel increments so that moving the camera does not cause the shadows to jitter.\n            // This is a matter of integer dividing by the world space size of a texel\n            float diagonalLength = (m_frustumCornersWS[0] - m_frustumCornersWS[6]).Length();\n\n            //Make bigger box - ensure rotation and movement stabilization\n            diagonalLength = MyMath.GetNearestBiggerPowerOfTwo(diagonalLength);\n\n            float worldsUnitsPerTexel = diagonalLength / (float)ShadowMapCascadeSize;\n\n            Vector3 vBorderOffset = (new Vector3(diagonalLength, diagonalLength, diagonalLength) - (maxes - mins)) * 0.5f;\n            maxes += vBorderOffset;\n            mins -= vBorderOffset;\n\n            mins /= worldsUnitsPerTexel;\n            mins.X = (float)Math.Floor(mins.X);\n            mins.Y = (float)Math.Floor(mins.Y);\n            mins.Z = (float)Math.Floor(mins.Z);\n            mins *= worldsUnitsPerTexel;\n\n            maxes /= worldsUnitsPerTexel;\n            maxes.X = (float)Math.Floor(maxes.X);\n            maxes.Y = (float)Math.Floor(maxes.Y);\n            maxes.Z = (float)Math.Floor(maxes.Z);\n            maxes *= worldsUnitsPerTexel;\n\n\n            /*\n            Matrix proj;\n            Matrix.CreateOrthographicOffCenter(mins.X, maxes.X, mins.Y, maxes.Y, -maxes.Z - SHADOW_MAX_OFFSET, -mins.Z, out proj);\n            \n            if (MyUtils.IsEqual(lightCamera.ProjectionMatrix, proj))\n            {   //cache\n                return null;\n            } */\n\n\n            // Update an orthographic camera for use as a shadow caster\n            lightCamera.Update(mins.X, maxes.X, mins.Y, maxes.Y, -maxes.Z - SHADOW_MAX_OFFSET, -mins.Z);\n\n\n            lightCamera.SetViewMatrix(ref viewMatrix);\n\n            return lightCamera;\n        }\n\n\n        void PrepareViewportForCascade(int splitIndex)\n        {\n            // Set the viewport for the current split   \n            Viewport splitViewport = new Viewport();\n            splitViewport.MinDepth = 0;\n            splitViewport.MaxDepth = 1;\n            splitViewport.Width = ShadowMapCascadeSize;\n            splitViewport.Height = ShadowMapCascadeSize;\n            splitViewport.X = splitIndex * ShadowMapCascadeSize;\n            splitViewport.Y = 0;\n            //Must be here because otherwise it crasher after resolution change\n            MyMinerGame.Static.SetDeviceViewport(splitViewport);\n        }\n\n\n        /// <summary>\n        /// Renders the shadow map using the orthographic camera created in\n        /// CalculateFrustum.\n        /// </summary>\n        /// <param name=\"modelList\">The list of models to be rendered</param>        \n        protected void RenderShadowMap(int splitIndex)\n        {\n            PrepareViewportForCascade(splitIndex);\n\n            // Set up the effect\n            MyEffectShadowMap shadowMapEffect = MyRender.GetEffect(MyEffects.ShadowMap) as MinerWars.AppCode.Game.Effects.MyEffectShadowMap;\n\n            // Clear shadow map\n            shadowMapEffect.SetTechnique(MyEffectShadowMap.ShadowTechnique.Clear);\n            MyGuiManager.GetFullscreenQuad().Draw(shadowMapEffect);\n\n            shadowMapEffect.SetViewProjMatrix(m_lightCameras[splitIndex].ViewProjectionMatrix);\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"draw elements\");\n            // Draw the models\n            DrawElements(m_lightCameras[splitIndex].CastingRenderElements, shadowMapEffect, false, splitIndex);\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        Vector3[] frustum = new Vector3[8];\n        BoundingFrustum cameraFrustum = new BoundingFrustum(Matrix.Identity);\n\n        public void IssueQueriesForCascades()\n        {             /*\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyShadowRenderer::IssueQueriesForCascades\");\n\n            bool useOccQueries = MyRender.EnableHWOcclusionQueriesForShadows && MyRender.CurrentRenderSetup.EnableOcclusionQueries;\n\n            if (!useOccQueries)\n            {\n                for (int i = 0; i < NumSplits; i++)\n                {\n                    m_visibility[i] = true;\n                }\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n                return;\n            }\n\n            Device device = MyMinerGame.Static.GraphicsDevice;\n            BlendState oldBlendState = BlendState.Current;\n            MyStateObjects.DisabledColorChannels_BlendState.Apply();\n\n            //generate and draw bounding box of our renderCell in occlusion query \n            //device.BlendState = MyStateObjects.DisabledColorChannels_BlendState;\n            MyMinerGame.SetRenderTarget(MyRender.GetRenderTarget(MyRenderTargets.Auxiliary0), null);\n\n            Vector3 campos = MyCamera.Position;\n\n            RasterizerState.CullNone.Apply();\n\n            if (MyRenderConstants.RenderQualityProfile.ForwardRender)\n                DepthStencilState.DepthRead.Apply();\n            else\n                DepthStencilState.None.Apply();\n\n            for (int i = 1; i < NumSplits; i++)\n            {\n                if (m_interleave[i]) continue;\n\n                MyPerformanceCounter.PerCameraDraw.QueriesCount++;\n\n                var queryIssue = m_cascadeQueries[i];\n\n                if (queryIssue.OcclusionQueryIssued)\n                {\n                    if (queryIssue.OcclusionQuery.IsComplete)\n                    {\n                        m_visibility[i] = queryIssue.OcclusionQuery.PixelCount > 0;\n                        queryIssue.OcclusionQueryIssued = false;\n                    }\n                    continue;\n                }\n\n                queryIssue.OcclusionQueryIssued = true;\n\n                if (queryIssue.OcclusionQuery == null) \n                    queryIssue.OcclusionQuery = new MyOcclusionQuery(device);\n\n                cameraFrustum.Matrix = m_lightCameras[i].CameraSubfrustum;\n\n                cameraFrustum.GetCorners(frustum);\n\n                var tmp = frustum[3];\n                frustum[3] = frustum[2];\n                frustum[2] = tmp;\n\n                queryIssue.OcclusionQuery.Begin();\n                MySimpleObjectDraw.OcclusionPlaneDraw(frustum);\n                queryIssue.OcclusionQuery.End();\n            }\n\n            oldBlendState.Apply();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();*/\n        }\n\n\n        public void SetupShadowBaseEffect(MyEffectShadowBase effect)\n        {\n            //Matrix cameraTransform = Matrix.Invert(MyCamera.ViewMatrix);\n            //effect.SetInvViewMatrix(cameraTransform);\n\n            effect.SetLightViewProjMatrices(m_lightViewProjectionMatrices);\n            effect.SetClipPlanes(m_lightClipPlanes);\n\n            effect.SetShadowMapSize(new Vector4(ShadowMapCascadeSize * NumSplits, ShadowMapCascadeSize, m_shadowMapCascadeSizeInv.X, m_shadowMapCascadeSizeInv.Y));\n            effect.SetShadowMap(MyRender.GetRenderTarget(m_shadowRenderTarget));\n        }\n\n        public Vector3[] GetFrustumCorners()\n        {\n            return m_farFrustumCornersVS;\n        }\n\n        void DebugDrawFrustum(Matrix camera, Color color)\n        {\n            BoundingFrustum frustum = new BoundingFrustum(camera);\n            MyDebugDraw.DrawBoundingFrustum(frustum, color);\n        }\n\n        static readonly Color[] frustumColors = new Color[]\n        {\n            new Color(1.0f,0.0f,0.0f),\n            new Color(0.0f,1.0f,0.0f),\n            new Color(0.0f,0.0f,1.0f),\n            new Color(1.0f,1.0f,0.0f),\n        };\n\n        Matrix[] frustumMatrices = new Matrix[4];\n        Matrix mainCamera;\n\n        public void DebugDraw()\n        {        \n            return;\n            MyStateObjects.WireframeRasterizerState.Apply();\n            for (int i = 0; i < NumSplits; i++)\n            {\n                cameraFrustum.Matrix = m_lightCameras[i].CameraSubfrustum;\n                cameraFrustum.GetCorners(frustum);\n\n                var tmp = frustum[3];\n                frustum[3] = frustum[2];\n                frustum[2] = tmp;\n\n                //MyDebugDraw.DrawBoundingFrustum(cameraFrustum, frustumColors[i]);\n                MySimpleObjectDraw.OcclusionPlaneDraw(frustum);\n                //MyDebugDraw.DrawTriangle(frustum[0], frustum[1], frustum[2], frustumColors[i], frustumColors[i], frustumColors[i]);\n                //MyDebugDraw.DrawTriangle(frustum[1], frustum[2], frustum[3], frustumColors[i], frustumColors[i], frustumColors[i]);\n            }\n\n            return;\n                   \n            bool update = false;\n\n            if (MyRender.CurrentRenderSetup.CallerID.Value == MyRenderCallerEnum.Main)\n            {\n                if (update)\n                {\n                    mainCamera = MyCamera.GetBoundingFrustum().Matrix;\n                }\n\n                for (int i = 0; i < NumSplits; i++)\n                {\n                    if (update)\n                    {\n                        Vector4 c = frustumColors[i].ToVector4();\n\n                        //MyDebugDraw.DrawAABBLowRes(ref box, ref c, 1);\n                        //BoundingFrustum bf = new BoundingFrustum();\n\n                        //frustumMatrices[i] = m_lightCameras[i].CameraSubfrustum;\n                        frustumMatrices[i] = m_lightCameras[i].BoundingFrustum.Matrix;\n                    }\n\n                    DebugDrawFrustum(frustumMatrices[i], frustumColors[i]);\n\n\n                    Vector4 cc = frustumColors[i].ToVector4();\n\n                    BoundingFrustum frma = new BoundingFrustum(frustumMatrices[i]);\n                    MyRender.PrepareEntitiesForDraw(ref frma, Vector3.Zero, 0, (MyOcclusionQueryID)(i + 1), m_castingRenderObjects, m_castingCullObjects, m_occlusionQueriesLists[i], ref MyPerformanceCounter.PerCameraDraw.ShadowEntitiesOccluded[i]);\n                    BoundingBox aabbFr = new BoundingBox();\n                    aabbFr = aabbFr.CreateInvalid();\n                    foreach (MyRenderObject ro in m_castingRenderObjects)\n                    {\n                        BoundingBox vv = ro.GetWorldSpaceAABB();\n                        //MyDebugDraw.DrawAABBLowRes(ref vv, ref cc, 1);\n                        aabbFr = aabbFr.Include(ref vv);\n                    }\n\n\n                    //MyDebugDraw.DrawAABBLowRes(ref aabbFr, ref cc, 1);\n                }\n\n                // DebugDrawFrustum(mainCamera, new Color(1.0f, 1.0f, 1.0f));\n            }\n\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Render/Shadows/MyShadowRendererBase.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Effects;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Utils.VertexFormats;\nusing MinerWars.AppCode.App;\nusing MinerWarsMath.Graphics;\nusing System.Diagnostics;\nusing MinerWars.AppCode.Physics;\nusing MinerWars.AppCode.Game.Render;\nusing MinerWars.AppCode.Game.Managers;\n\nnamespace MinerWars.AppCode.Game.Render\n{\n    \n\n    class MyShadowRendererBase\n    {\n        static protected List<MyElement> m_castingRenderObjects = new List<MyElement>();\n        static protected HashSet<MyRenderObject> m_castingRenderObjectsUnique = new HashSet<MyRenderObject>();\n        static protected List<MyElement> m_castingCullObjects = new List<MyElement>();\n        static protected List<MyRender.MyRenderElement> m_renderElementsForShadows = new List<MyRender.MyRenderElement>();\n        static protected List<MyRender.MyRenderElement> m_transparentRenderElementsForShadows = new List<MyRender.MyRenderElement>();\n\n        //  Used to sort render elements by their properties to spare switching render states\n        public class MyShadowRenderElementsComparer : IComparer<MyRender.MyRenderElement>\n        {\n            public int Compare(MyRender.MyRenderElement x, MyRender.MyRenderElement y)\n            {\n                return x.VertexBuffer.GetHashCode().CompareTo(y.VertexBuffer.GetHashCode());\n            }\n        }\n\n\n        public static void LoadContent()\n        {\n        }\n\n        public static void UnloadContent()\n        {\n            m_castingRenderObjects.Clear();\n            m_castingRenderObjectsUnique.Clear();\n            m_castingCullObjects.Clear();\n            m_renderElementsForShadows.Clear();\n            m_transparentRenderElementsForShadows.Clear();\n        }\n\n        protected static MyShadowRenderElementsComparer m_shadowElementsComparer = new MyShadowRenderElementsComparer();\n\n        protected static void DrawElements(List<MyRender.MyRenderElement> elements, MyEffectShadowMap effect, bool relativeCamera, int perfCounterIndex)\n        {\n            \n            // Draw shadows.\n            effect.SetTechnique(MyEffectShadowMap.ShadowTechnique.GenerateShadow);\n            DrawShadowsForElements(effect, relativeCamera, elements, false, perfCounterIndex);\n\n            effect.SetTechnique(MyEffectShadowMap.ShadowTechnique.GenerateShadowForVoxels);\n            DrawShadowsForElements(effect, relativeCamera, elements, true, perfCounterIndex);\n        }\n\n        private static void DrawShadowsForElements(MyEffectShadowMap effect, bool relativeCamera, List<MyRender.MyRenderElement> elements, bool voxelShadows, int perfCounterIndex)\n        {\n            effect.Begin();\n\n            long lastVertexBuffer = 0;\n\n            for (int i = 0; i < elements.Count; i++)\n            {\n                MyRender.MyRenderElement renderElement = elements[i];\n\n                if ((renderElement.Entity is MyVoxelMap) != voxelShadows ||\n                    renderElement.VertexBuffer.IsDisposed ||\n                    renderElement.IndexBuffer.IsDisposed)\n                    continue;\n\n                long currentVertexBuffer = renderElement.VertexBuffer.GetHashCode();\n                if (lastVertexBuffer != currentVertexBuffer)\n                {\n                    lastVertexBuffer = currentVertexBuffer;\n\n                    MyMinerGame.Static.GraphicsDevice.SetStreamSource(0, renderElement.VertexBuffer, 0, renderElement.VertexStride);\n                    MyMinerGame.Static.GraphicsDevice.VertexDeclaration = renderElement.VertexDeclaration;\n                    MyMinerGame.Static.GraphicsDevice.Indices = renderElement.IndexBuffer;\n\n                    System.Diagnostics.Debug.Assert(renderElement.IndexBuffer != null);\n                }\n\n                effect.SetWorldMatrix(relativeCamera ? renderElement.WorldMatrixForDraw : renderElement.WorldMatrix);\n\n                MyPerformanceCounter.PerCameraDraw.ShadowDrawCalls[perfCounterIndex]++;\n\n                effect.D3DEffect.CommitChanges();\n                MyMinerGame.Static.GraphicsDevice.DrawIndexedPrimitive(SharpDX.Direct3D9.PrimitiveType.TriangleList, 0, 0, renderElement.VertexCount, renderElement.IndexStart, renderElement.TriCount);\n\n                MyPerformanceCounter.PerCameraDraw.TotalDrawCalls++;\n            }\n\n            effect.End();\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Render/Shadows/MySpotShadowRenderer.cs",
    "content": "﻿using System.Collections.Generic;\n\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Lights;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Physics;\nusing MinerWars.AppCode.Game.Effects;\nusing MinerWars.AppCode.Game.Managers;\n\nusing SharpDX;\nusing SharpDX.Direct3D9;\nusing SharpDX.Toolkit;\nusing SharpDX.Toolkit.Graphics;\n\n\nnamespace MinerWars.AppCode.Game.Render.Shadows\n{\n    using Vector2 = MinerWarsMath.Vector2;\n    using Vector3 = MinerWarsMath.Vector3;\n    using Vector4 = MinerWarsMath.Vector4;\n    using Rectangle = MinerWarsMath.Rectangle;\n    using Matrix = MinerWarsMath.Matrix;\n    using Color = MinerWarsMath.Color;\n    using BoundingBox = MinerWarsMath.BoundingBox;\n    using BoundingSphere = MinerWarsMath.BoundingSphere;\n    using BoundingFrustum = MinerWarsMath.BoundingFrustum;\n\n    class MySpotShadowRenderer : MyShadowRendererBase\n    {\n        public const int SpotShadowMapSize = 64;\n\n        List<MyRender.MyRenderElement> m_culledElements = new List<MyRender.MyRenderElement>();\n        private BoundingFrustum m_spotFrustum = new BoundingFrustum(Matrix.Identity);\n\n        public void RenderForLight(Matrix lightViewProjection, ref BoundingBox lightBoundingBox, Texture shadowRenderTarget, Texture shadowDepth, int spotIndex)\n        {\n            m_renderElementsForShadows.Clear();\n            m_castingRenderObjectsUnique.Clear();\n            \n            m_spotFrustum.Matrix = lightViewProjection;\n            \n            //MyRender.GetEntitiesFromPrunningStructure(ref lightBoundingBox, m_castingRenderObjects);\n            MyRender.GetEntitiesFromShadowStructure(ref lightBoundingBox, m_castingRenderObjects);\n\n            foreach (MyElement element in m_castingRenderObjects)\n            {\n                MyRenderObject renderObject = (MyRenderObject)element;\n                MyEntity entity = ((MyRenderObject)element).Entity;\n\n                if (entity != null)\n                {\n                    if (entity is MyVoxelMap)\n                    {\n                        // Changed m_castersBox to lightBoundingBox, should work\n                        //(entity as MyVoxelMap).GetRenderElementsForShadowmap(m_renderElementsForShadows, ref lightBoundingBox, m_spotFrustum, MyLodTypeEnum.LOD0, false);\n                        (entity as MyVoxelMap).GetRenderElementsForShadowmap(m_renderElementsForShadows, renderObject.RenderCellCoord.Value, MyLodTypeEnum.LOD0, false);\n                    }\n                    else\n                    {\n                        if (entity.ModelLod0 != null)\n                        {\n                            MyRender.CollectRenderElementsForShadowmap(m_renderElementsForShadows, m_transparentRenderElementsForShadows, entity, entity.ModelLod0);\n                        }\n                    }\n                }\n            }\n\n            // Set our targets\n            MyMinerGame.SetRenderTarget(shadowRenderTarget, shadowDepth);\n            MyMinerGame.Static.GraphicsDevice.Clear(ClearFlags.All, new ColorBGRA(1.0f), 1.0f, 0);\n\n            DepthStencilState.Default.Apply();\n            RasterizerState.CullNone.Apply();\n            BlendState.Opaque.Apply();\n\n            RenderShadowMap(lightViewProjection);\n\n            MyRender.TakeScreenshot(\"ShadowMapSpot\", shadowRenderTarget, MyEffectScreenshot.ScreenshotTechniqueEnum.Color);\n        }\n\n        protected void RenderShadowMap(Matrix lightViewProjection)\n        {\n            // Set up the effect\n            MyEffectShadowMap shadowMapEffect = MyRender.GetEffect(MyEffects.ShadowMap) as MinerWars.AppCode.Game.Effects.MyEffectShadowMap;\n            shadowMapEffect.SetViewProjMatrix(lightViewProjection);\n                      /*\n            m_culledElements.Clear();\n            foreach (MyRender.MyRenderElement element in m_renderElementsForShadows)\n            {\n                m_culledElements.Add(element);\n            }\n                        */\n            // Draw the models\n            DrawElements(m_renderElementsForShadows, shadowMapEffect, false, MyPerformanceCounter.NoSplit);\n        }\n\n        public Matrix CreateViewProjectionMatrix(Matrix lightView, float halfSize, float nearClip, float farClip)\n        {\n            float a = halfSize;\n\n            Matrix lightShadowProjection = Matrix.CreatePerspectiveOffCenter(-a, a, -a, a, nearClip, farClip);\n\n            return lightView * lightShadowProjection;\n        }\n\n        public void SetupSpotShadowBaseEffect(MyEffectSpotShadowBase effect, Matrix lightViewProjectionShadow, Texture shadowRenderTarget)\n        {\n            // Set shadow properties\n            var shadowMap = shadowRenderTarget;\n            effect.SetShadowMap(shadowMap);\n            effect.SetShadowMapSize(new Vector2(shadowMap.GetLevelDescription(0).Width, shadowMap.GetLevelDescription(0).Height));\n            effect.SetShadowBias(0.005f);\n            effect.SetSlopeBias(0.02f);\n            effect.SetLightViewProjectionShadow(lightViewProjectionShadow);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Render/Statistics/MyRenderProfiler.cs",
    "content": "﻿#region Using\n\nusing System;\nusing System.Text;\nusing System.Collections.Generic;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Managers;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWarsMath.Graphics;\nusing MinerWars.AppCode.App;\nusing SysUtils.Utils;\nusing KeenSoftwareHouse.Library.Profiler;\nusing MinerWars.AppCode.Toolkit.Input;\nusing System.Diagnostics;\nusing MinerWars.AppCode.Game.GUI;\nusing System.Threading;\n\n#endregion\n\n\nnamespace MinerWars.AppCode.Game.Render\n{\n    class MyRenderProfiler\n    {\n        static KeenSoftwareHouse.Library.Profiler.MyProfiler.MyProfilerBlock m_fpsBlock = new KeenSoftwareHouse.Library.Profiler.MyProfiler.MyProfilerBlock(\"FPS\");\n        \n        static Color[] m_colors = { Color.Aqua, Color.Orange, Color.BlueViolet, Color.BurlyWood, Color.Chartreuse,\n                                  Color.CornflowerBlue, Color.Cyan, Color.ForestGreen, Color.Fuchsia,\n                                  Color.Gold, Color.GreenYellow, Color.LightBlue, Color.LightGreen, Color.LimeGreen,\n                                  Color.Magenta, Color.Navy, Color.Orchid, Color.PeachPuff, Color.Purple };\n\n        public static bool Paused = false;\n\n        static Dictionary<Thread, MyProfiler> m_threadProfilers = new Dictionary<Thread, MyProfiler>();\n        static MyProfiler m_selectedProfiler;\n        static int m_selectedProfilerIndex = -1;\n        static Thread m_selectedThread;\n\n        static MyLineBatch m_lineBatch = null;\n        static bool m_enabled = false;\n        static int m_index = 0;     // Index of newest frame, so we know where to add new values.\n        static int m_selectedFrame = 0;   // Index of selected frame. It will be showed in text legend.\n        static int m_levelLimit = -1;\n        static bool m_useCustomFrame = false;\n\n        \n\n        static float memoryRange = 0.001f; // cca. 1KB\n        static float m_milisecondRange = 25;\n\n        static float m_stackCheckingDuration = 0;\n\n        static object m_lock = new object();\n\n        static Color UintToColor(uint number)\n        {\n            Color color = new Color();\n            color.PackedValue = number;\n            return color;\n        }\n\n        public void DrawPerfEvents()\n        {    \n            Vector3 v0 = Vector3.Zero;\n            Vector3 v1 = Vector3.Zero;\n\n            float x_start = 0.5f;\n            float y_start = 0;\n            float x_scale = (2f - x_start) / 2f;\n            float y_scale = 0.9f;\n                    \n            float invMilisecondRange = 1f / m_milisecondRange;\n            \n            // Draw graphs for selected events\n            foreach (MyProfiler.MyProfilerBlock profilerBlock in m_selectedProfiler.ProfilingBlocks.Values)\n            {\n                if (!profilerBlock.DrawGraph)\n                    continue;\n\n                for (int i = 1; i < MyProfiler.MAX_FRAMES; i++)\n                {\n                    v0.X = -1.0f + x_start + x_scale * (i - 1) / 512.0f;\n                    v0.Y = profilerBlock.Miliseconds[i - 1] * y_scale * invMilisecondRange;\n                    v0.Z = 0;\n\n                    v1.X = -1.0f + x_start + x_scale * i / 512.0f;\n                    v1.Y = profilerBlock.Miliseconds[i] * y_scale * invMilisecondRange;\n                    v1.Z = 0;\n\n                    if (v0.Y > 1e-3f || v1.Y > 1e-3f)\n                        m_lineBatch.DrawOnScreenLine(v0, v1, UintToColor(profilerBlock.color));\n                }\n            }         \n\n                     \n            // Draw legend\n            float x_legend_start = x_start - 0.1f;\n            float x_legend_ms_size = 0.01f;\n            m_lineBatch.DrawOnScreenLine(new Vector3(-1.0f + x_legend_start, 0, 0), new Vector3(-1.0f + x_legend_start, y_scale, 0), Color.Silver);\n\n            const int legendMsCount = 5;\n\n            StringBuilder text = new StringBuilder(10);\n\n            float viewportWidth = MinerWars.AppCode.App.MyMinerGame.Static.GraphicsDevice.Viewport.Width;\n            float viewportHeight = MinerWars.AppCode.App.MyMinerGame.Static.GraphicsDevice.Viewport.Height;\n\n            for (int i = 0; i <= legendMsCount; i++)\n            {\n                m_lineBatch.DrawOnScreenLine(new Vector3(-1.0f + x_legend_start, y_scale * (float)i / legendMsCount, 0),\n                                            new Vector3(-1.0f + x_legend_start + x_legend_ms_size, y_scale * (float)i / legendMsCount, 0), Color.Silver);\n\n                // Miliseconds legend\n                text.Clear();\n                text.Append((i * m_milisecondRange / legendMsCount).ToString());\n                MyDebugDraw.DrawText(new Vector2(0.5f * viewportWidth * x_legend_start - 25f + 3 * x_legend_ms_size, -10 + 0.5f * viewportHeight - y_scale * 0.5f * viewportHeight * ((float)i / legendMsCount)), text, Color.Silver, 0.7f);\n            }\n\n            text.Clear();\n            text.Append(\"[ms]\");\n            MyDebugDraw.DrawText(new Vector2(0.5f * viewportWidth * x_legend_start - 25f + 3 * x_legend_ms_size, -10 + 0.5f * viewportHeight - y_scale * 0.5f * viewportHeight * 1.05f), text, Color.Silver, 0.7f);\n\n            // Memory legend\n            x_legend_start = x_start + 1.48f;\n            x_start = 0.5f;\n            y_start = -0.7f;\n            x_scale = (2f - x_start) / 2f;\n            \n            x_legend_ms_size = -0.01f;\n            y_scale = 0.6f;\n\n            for (int i = 0; i <= legendMsCount; i++)\n            {\n                text.Clear();\n                text.Append((i * memoryRange / legendMsCount).ToString(\"#,###.###000\"));\n                MyDebugDraw.DrawText(new Vector2(0.5f * viewportWidth * x_legend_start - 25f + 3 * x_legend_ms_size,\n                    -10 + 0.85f * viewportHeight - y_scale * 0.5f * viewportHeight * ((float)i / legendMsCount)), \n                    text, Color.Yellow, 0.7f);\n\n                if (i == 0)\n                {\n                    text.Clear();\n                    text.Append(\"[MB]\");\n                    MyDebugDraw.DrawText(new Vector2(0.5f * viewportWidth * x_legend_start - 25f + 3 * x_legend_ms_size,\n                        -30 + 0.85f * viewportHeight - y_scale * 0.5f * viewportHeight * ((float)i / legendMsCount)),\n                        text, Color.Yellow, 0.7f);\n                }\n            }\n\n            float invMemoryRange = 1f / memoryRange;\n            \n            foreach (MyProfiler.MyProfilerBlock profilerBlock in m_selectedProfiler.ProfilingBlocks.Values)\n            {\n                if (!profilerBlock.DrawGraph)\n                    continue;\n\n                // process memory\n                Color processColor = UintToColor(profilerBlock.color);\n\n#if MEMORY_PROFILING\n                for (int i = 1; i < MyProfiler.MAX_FRAMES; i++)\n                {\n                    v0.X = -1.0f + x_start + x_scale * (i - 1) / 512.0f;\n                    v0.Y = y_start + profilerBlock.ProcessMemory[i - 1] * y_scale * invMemoryRange;\n                    v0.Z = 0;\n\n                    v1.X = -1.0f + x_start + x_scale * i / 512.0f;\n                    v1.Y = y_start + profilerBlock.ProcessMemory[i] * y_scale * invMemoryRange;\n                    v1.Z = 0;\n\n                    if (v0.Y - y_start > 1e-3f || v1.Y - y_start > 1e-3f)\n                        lineBatch.DrawOnScreenLine(v0, v1, processColor);\n                }\n#else \n                \n\n                // managed memory\n                Color managedColor = UintToColor(profilerBlock.color);\n                for (int i = 1; i < MyProfiler.MAX_FRAMES; i++)\n                {\n                    v0.X = -1.0f + x_start + x_scale * (i - 1) / 512.0f;\n                    v0.Y = y_start + profilerBlock.ManagedMemory[i - 1] * y_scale * invMemoryRange;\n                    v0.Z = 0;\n\n                    v1.X = -1.0f + x_start + x_scale * i / 512.0f;\n                    v1.Y = y_start + profilerBlock.ManagedMemory[i] * y_scale * invMemoryRange;\n                    v1.Z = 0;\n\n                    //if (v0.Y - y_start > 1e-3f || v1.Y - y_start > 1e-3f)\n                    m_lineBatch.DrawOnScreenLine(v0, v1, managedColor);\n                }\n#endif\n\n            }\n\n            // Draw selected frame\n            if (m_useCustomFrame)\n            {\n                if (m_selectedFrame >= 0 && m_selectedFrame < MyProfiler.MAX_FRAMES)\n                {\n                    v0.X = -1.0f + x_start + x_scale * (m_selectedFrame) / 512.0f;\n                    v0.Y = y_start;\n                    v0.Z = 0;\n\n                    v1.X = v0.X;\n                    v1.Y = 0.9f;\n                    v1.Z = 0;\n\n                    m_lineBatch.DrawOnScreenLine(v0, v1, Color.Yellow);\n                }\n            }     \n        }\n\n        public static void HandleInput(MyGuiInput input)\n        {\n            if (input.IsAnyAltPress())\n            {\n                for (int i = 0; i <= 9; i++)\n                {\n                    var key = (Keys)((int)Keys.NumPad0 + i);\n                    if (input.IsNewKeyPress(key))\n                    {\n                        PressedKey(key, input.IsAnyCtrlKeyPressed());\n                    }\n                }\n\n                if (input.IsNewKeyPress(Keys.Add))\n                    PressedKey(Keys.Add);\n\n                if (input.IsNewKeyPress(Keys.Subtract))\n                    PressedKey(Keys.Subtract);\n\n                if (input.IsNewKeyPress(Keys.Enter))\n                    PressedKey(Keys.Enter);\n\n                if (input.IsNewKeyPress(Keys.Delete))\n                    PressedKey(Keys.Delete);\n\n                if (input.IsKeyPress(Keys.PageDown))\n                    MyRenderProfiler.PreviousFrame();\n\n                if (input.IsKeyPress(Keys.PageUp))\n                    MyRenderProfiler.NextFrame();\n\n                if (input.IsKeyPress(Keys.Multiply))\n                    PressedKey(Keys.Multiply);\n\n                if (input.IsKeyPress(Keys.Divide))\n                    PressedKey(Keys.Divide);\n\n                if ((((input.IsKeyPress(Keys.PageDown)) ||\n                    (input.IsKeyPress(Keys.PageUp))) && input.IsAnyCtrlKeyPressed())\n                    ||\n                    (input.IsKeyPress(Keys.Multiply) || input.IsKeyPress(Keys.Divide))\n                    )\n\n                {\n                    System.Threading.Thread.Sleep(100);\n                }\n            }\n        }\n\n\n        public static void PressedKey(Keys key, bool isCtrlPressed = false)\n        {\n            int index = key - Keys.NumPad0;\n            if (index >= 0 && index <= 9)\n            {\n                if (isCtrlPressed)\n                    index += 10;\n\n                // Enable or Disable profiler drawing\n                if (m_enabled && m_selectedProfiler.SelectedRoot == null)\n                {\n                    if (index == 0)\n                    {\n                        m_enabled = false;\n                        m_useCustomFrame = false;\n                        return;\n                    }\n                }\n                else if (!m_enabled && index == 0)\n                {\n                    m_enabled = true;\n                    return;\n                }\n\n                // Enter child node\n                if (index >= 1 && index <= 19)\n                {\n                    if (m_selectedProfiler.SelectedRoot == null)\n                    {\n                        int cnt = 0;\n                        foreach (MyProfiler.MyProfilerBlock profilerBlock in m_selectedProfiler.ProfilingBlocks.Values)\n                        {\n                            if (profilerBlock.Parent == null)\n                            {\n                                cnt++;\n\n                                if (index == cnt)\n                                {\n                                    m_selectedProfiler.SelectedRoot = profilerBlock;\n                                    return;\n                                }\n                            }\n                        }\n                    }\n                    else if (m_selectedProfiler.SelectedRoot.Children.Count >= index)\n                    {\n                        int cnt = 0;\n                        int flagIndex = 0;\n                        foreach (MyProfiler.MyProfilerBlock profilerBlock in m_selectedProfiler.SelectedRoot.Children)\n                        {\n                            cnt++;\n                            //if ((profilerBlock.flag & (int)filterMask) != 0)\n                            {\n                                flagIndex++;\n                                if (index == flagIndex)\n                                {\n//                                     m_selectedRoot = profilerBlock;\n//                                     return;\n\n                                    m_selectedProfiler.SelectedRoot = m_selectedProfiler.SelectedRoot.Children[cnt - 1];\n                                    return;\n                                }\n                            }\n                        }\n                        \n                    }\n                }\n\n                // Go to parent node\n                if (index == 0 && m_selectedProfiler.SelectedRoot != null)\n                {\n                    m_selectedProfiler.SelectedRoot = m_selectedProfiler.SelectedRoot.Parent;\n                }\n            }\n\n            if (key == Keys.Enter)\n            {\n                Paused = !Paused;\n                m_useCustomFrame = false; // Turf-off custom frame after ALT + ENTER\n            }\n\n            if(key == Keys.Delete)\n            {\n                // This will enable stack checking for StartProfilingblock and EndProfilingblock for some period of time.\n                // It will check whether the StartProfilingblock and EndProfilingblock is called within the same function.\n                \n                m_stackCheckingDuration = 1;    // set duration to 1s \n            }\n\n            if (key == Keys.Add)\n            {\n                List<MyProfiler> profilers = new List<MyProfiler>();\n                foreach (var t in m_threadProfilers.Values)\n                {\n                    profilers.Add(t);\n                }\n\n                int profilerIndex = profilers.IndexOf(m_selectedProfiler);\n                profilerIndex++;\n                if (profilerIndex >= profilers.Count)\n                    profilerIndex = 0;\n\n                int i = 0;\n                foreach (var t in m_threadProfilers)\n                {\n                    if (i == profilerIndex)\n                    {\n                        m_selectedProfiler = t.Value;\n                        m_selectedThread = t.Key;\n                        m_selectedProfilerIndex = i;\n                        break;\n                    }\n                    i++;\n                }\n            }\n\n            if (key == Keys.Subtract)\n            {\n                List<MyProfiler> profilers = new List<MyProfiler>();\n                foreach (var t in m_threadProfilers.Values)\n                {\n                    profilers.Add(t);\n                }\n\n                int profilerIndex = profilers.IndexOf(m_selectedProfiler);\n                profilerIndex--;\n                if (profilerIndex < 0)\n                    profilerIndex = profilers.Count - 1;\n\n                int i = 0;\n                foreach (var t in m_threadProfilers)\n                {\n                    if (i == profilerIndex)\n                    {\n                        m_selectedProfiler = t.Value;\n                        m_selectedThread = t.Key;\n                        m_selectedProfilerIndex = i;\n                        break;\n                    }\n                    i++;\n                }\n            }\n\n            if (key == Keys.Multiply)\n            {\n                m_levelLimit++;\n            }\n\n            if (key == Keys.Divide)\n            {\n                m_levelLimit--;\n                if (m_levelLimit < -1)\n                    m_levelLimit = -1;\n            }\n        }\n\n        static public void PreviousFrame()\n        {\n            m_useCustomFrame = true;\n\n            m_selectedFrame--;\n            if (m_selectedFrame < 0)\n                m_selectedFrame = MyProfiler.MAX_FRAMES - 1;\n        }\n\n        static public void NextFrame()\n        {\n            m_useCustomFrame = true;\n\n            m_selectedFrame++;\n            if (m_selectedFrame >= MyProfiler.MAX_FRAMES)\n                m_selectedFrame = 0;\n        }\n\n        public void DrawEvent(int textOffsetY, MyProfiler.MyProfilerBlock profilerBlock, int index = -1)\n        {\n            float Y_TEXT_POSITION = MyMinerGame.Static.GraphicsDevice.Viewport.Height / 2;\n\n            float textScale = 0.7f;\n\n            StringBuilder text = new StringBuilder(100);\n            text.Clear();\n            text.Append((textOffsetY + 1).ToString(\"0 \"));\n            text.Append(profilerBlock.Name);\n\n            MyDebugDraw.DrawText(new Vector2(20, Y_TEXT_POSITION + textOffsetY * 20), text, UintToColor(profilerBlock.color), textScale);\n\n            float length = 500;\n\n            text.Clear();\n            text.Append(profilerBlock.Children.Count.ToString(\"(0) \"));\n            MyDebugDraw.DrawText(new Vector2(20 + length, Y_TEXT_POSITION + textOffsetY * 20), text, UintToColor(profilerBlock.color), textScale);\n            length += 50 * textScale;\n\n            text.Clear();\n            //text.Append(((index != -1 ? profilerBlock.TimePercentage[index] : profilerBlock.averagePctg)).ToString(\"#,#0.0%\"));\n            //MyDebugDraw.DrawText(new Vector2(20 + length, Y_TEXT_POSITION + textOffsetY * 20), text, UintToColor(profilerBlock.color), textScale);\n            length += 155 * textScale;\n\n            text.Clear();\n            text.Append((index != -1 ? profilerBlock.Miliseconds[index] : profilerBlock.averageMiliseconds).ToString(\"#,##0.00ms\"));\n            MyDebugDraw.DrawText(new Vector2(20 + length, Y_TEXT_POSITION + textOffsetY * 20), text, UintToColor(profilerBlock.color), textScale);\n            length += 155 * textScale;\n\n            text.Clear();\n            text.Append((index != -1 ? profilerBlock.ManagedMemory[index] : profilerBlock.TotalManagedMB).ToString(\"#,###0.000 GC\"));\n            MyDebugDraw.DrawText(new Vector2(20 + length, Y_TEXT_POSITION + textOffsetY * 20), text, UintToColor(profilerBlock.color), textScale);\n            length += 40 + 158 * textScale;\n\n            text.Clear();\n#if MEMORY_PROFILING\n            text.Append((index != -1 ? profilerBlock.ProcessMemory[index] : profilerBlock.totalProcessMB).ToString(\"#,###0.000 MB\"));\n            MyDebugDraw.DrawText(new Vector2(20 + length, Y_TEXT_POSITION + textOffsetY * 20), text, UintToColor(profilerBlock.color), textScale);\n            length += 158 * textScale;\n\n            text.Clear();\n#endif\n\n            length += 40 + 40 * textScale;\n            text.Append(profilerBlock.NumCallsArray[index != -1 ? index : 0].ToString());\n            text.Append(profilerBlock.NumCalls.ToString(\" calls\"));\n            MyDebugDraw.DrawText(new Vector2(20 + length, Y_TEXT_POSITION + textOffsetY * 20), text, UintToColor(profilerBlock.color), textScale);\n\n            length += 150 * textScale;\n            text.Clear();\n            text.Append(\"Custom: \");\n            text.Append((index != -1 ? profilerBlock.CustomValues[index] : profilerBlock.CustomValue).ToString(\"#,###0.000\"));\n            MyDebugDraw.DrawText(new Vector2(20 + length, Y_TEXT_POSITION + textOffsetY * 20), text, UintToColor(profilerBlock.color), textScale);\n            \n\n\n\n//             if (profilerBlock.NumCalls > 1)\n//                 text.Append(\"s\");\n\n            length += MyDebugDraw.DrawText(new Vector2(20 + length, Y_TEXT_POSITION + textOffsetY * 20), text, UintToColor(profilerBlock.color), textScale);\n        }\n\n        [Conditional(\"RENDER_PROFILING\")]\n        public void Draw()\n        {\n            if (!m_enabled)\n                return;\n\n            if (MyProfiler.EnableAsserts)\n                MyCommonDebugUtils.AssertDebug(m_selectedProfiler.CurrentProfilingStack.Count == 0, \"Stack size must be 0!\");\n\n            // Init linebatch\n            if (m_lineBatch == null)\n            {            \n                SharpDX.Direct3D9.Device device = MyMinerGame.Static.GraphicsDevice;\n                m_lineBatch = new MyLineBatch(\n                    Matrix.Identity,\n                    Matrix.CreateOrthographicOffCenter(0.0F, device.Viewport.Width, device.Viewport.Height, 0.0F, 0.0F, -1.0F),\n                    50000);\n                           \n                m_fpsBlock.Stopwatch.Start();\n            }\n\n\n            // Handle FPS timer\n            m_fpsBlock.End(false);\n\n            float elapsedTime = (float)m_fpsBlock.Stopwatch.Elapsed.TotalSeconds;\n            float invElapsedTime = elapsedTime > 0 ? 1 / elapsedTime : 0;\n            m_fpsBlock.averagePctg = 0.9f * m_fpsBlock.averagePctg + 0.1f * invElapsedTime;\n\n#if MEMORY_PROFILING\n            // Handle memory usage for frame\n            float processDeltaMB = m_fpsBlock.ProcessDeltaMB;\n            m_fpsBlock.ProcessMemory[m_index] = processDeltaMB;\n#endif\n\n            float managedDeltaMB = m_fpsBlock.ManagedDeltaMB;\n            m_fpsBlock.ManagedMemory[m_index] = managedDeltaMB;\n            m_fpsBlock.CustomValues[m_index] = m_fpsBlock.CustomValue;\n\n            m_fpsBlock.Stopwatch.Reset();\n            \n            m_fpsBlock.Start(false);\n\n            int numCalls = 0;  // number of calls of StartProfilingBlock\n\n            // Add new measured time to each graph\n            if (!Paused)\n            {\n                foreach (MyProfiler.MyProfilerBlock profilerBlock in m_selectedProfiler.ProfilingBlocks.Values)\n                {\n                    float dt;\n\n                    profilerBlock.ManagedMemory[m_index] = profilerBlock.ManagedDeltaMB;\n#if MEMORY_PROFILING\n                    profilerBlock.ProcessMemory[m_index] = profilerBlock.ProcessDeltaMB;\n#endif\n                    profilerBlock.NumCallsArray[m_index] = profilerBlock.NumCalls;\n                    profilerBlock.CustomValues[m_index] = profilerBlock.CustomValue;\n\n                    dt = (float)profilerBlock.Stopwatch.Elapsed.TotalSeconds * 1000f;\n\n                    profilerBlock.Miliseconds[m_index] = (float)profilerBlock.Stopwatch.Elapsed.TotalMilliseconds;\n                    float pctg = (0.001f * dt) * invElapsedTime;\n                    profilerBlock.averagePctg = 0.9f * profilerBlock.averagePctg + (0.1f * pctg);\n                    profilerBlock.averagePctg = System.Math.Min(profilerBlock.averagePctg, 1.0f); // block cannot take more than 100% of elapsed fram time\n                    profilerBlock.averageMiliseconds = 0.9f * profilerBlock.averageMiliseconds + 0.1f * (float)profilerBlock.Stopwatch.Elapsed.TotalMilliseconds;\n                    profilerBlock.Stopwatch.Reset();\n\n                    if (profilerBlock.ManagedDeltaMB > memoryRange)\n                        memoryRange = 2 * profilerBlock.ManagedDeltaMB;\n\n#if MEMORY_PROFILING\n                    if (profilerBlock.ProcessDeltaMB > memoryRange)\n                    {\n                        memoryRange = 2 * profilerBlock.ProcessDeltaMB;\n                    }\n#endif\n                    numCalls += profilerBlock.NumCalls;\n                    profilerBlock.NumChildCalls = profilerBlock.GetNumChildCalls();\n                }\n            }\n\n            if (m_enabled)\n            {\n                // Draw events as text \n                float Y_TEXT_POSITION = MyMinerGame.Static.GraphicsDevice.Viewport.Height / 2;\n                StringBuilder text = new StringBuilder(100);\n                int textOffsetY = 0;\n\n                if (m_selectedProfiler.SelectedRoot == null)\n                {\n                    foreach (MyProfiler.MyProfilerBlock profilerBlock in m_selectedProfiler.ProfilingBlocks.Values)\n                    {\n                        if (profilerBlock.Parent != null)\n                            continue;\n\n                        profilerBlock.color = textOffsetY < m_colors.Length ? m_colors[textOffsetY].PackedValue : Color.Green.PackedValue;\n\n                        if (profilerBlock.NumCalls == 0)\n                            profilerBlock.Cooldown--;\n                        else\n                            profilerBlock.Cooldown = 1000;\n\n                        profilerBlock.DrawGraph = true;\n\n                        if(m_useCustomFrame)\n                            DrawEvent(textOffsetY, profilerBlock, m_selectedFrame);\n                        else\n                            DrawEvent(textOffsetY, profilerBlock, Paused ? (m_selectedFrame - 1) % MyProfiler.MAX_FRAMES : m_selectedFrame);\n\n                        textOffsetY++;\n                    }\n                }\n                else\n                {\n                    for (int i = 0; i < m_selectedProfiler.SelectedRoot.Children.Count; i++)\n                    {\n                        MyProfiler.MyProfilerBlock profilerBlock = m_selectedProfiler.SelectedRoot.Children[i];\n\n                        profilerBlock.color = i < m_colors.Length ? m_colors[i].PackedValue : Color.Green.PackedValue;\n\n                        if (profilerBlock.NumCalls == 0)\n                            profilerBlock.Cooldown--;\n                        else\n                            profilerBlock.Cooldown = 1000;\n\n                        profilerBlock.DrawGraph = true;\n\n                        if (m_useCustomFrame)\n                            DrawEvent(textOffsetY, profilerBlock, m_selectedFrame);\n                        else\n                            DrawEvent(textOffsetY, profilerBlock);\n                        textOffsetY++;\n                    }\n                }\n\n                // Draw thread name\n                text.Clear();\n                text.Append(\"Thread (\" + m_selectedProfilerIndex + \"/\" + m_threadProfilers.Count + \"): \" + m_selectedThread.Name);\n                text.Append(\", Level limit: \" + m_levelLimit.ToString());\n                MyDebugDraw.DrawText(new Vector2(20, Y_TEXT_POSITION + (-2) * 20), text, Color.Gray, 1);\n\n                // Draw fps\n                text.Clear();\n                text.Append(m_fpsBlock.Name);\n                if (m_useCustomFrame && m_selectedFrame >= 0 && m_selectedFrame < MyProfiler.MAX_FRAMES)\n                {\n                    //text.Append(m_fpsBlock.TimePercentage[SelectedFrame].ToString(\" #,###0.000\"));\n                    MyDebugDraw.DrawText(new Vector2(20, Y_TEXT_POSITION + (-1) * 20), text, Color.Red, 1);\n                }\n                else\n                {\n                    text.Append(m_fpsBlock.averagePctg.ToString(\" #,###0.000\"));\n                    MyDebugDraw.DrawText(new Vector2(20, Y_TEXT_POSITION + (-1) * 20), text, Color.Red, 1);\n                }\n                \n\n                // Total calls\n                text.Clear();\n                text.Append(numCalls.ToString(\"Total calls 0\"));\n                MyDebugDraw.DrawText(new Vector2(20, Y_TEXT_POSITION + (textOffsetY) * 20), text, Color.Red, 1);\n\n                if (m_useCustomFrame)\n                {\n                    text.Clear();\n                    text.Append(m_selectedFrame.ToString(\"Selected frame: 0\"));\n                    MyDebugDraw.DrawText(new Vector2(20, Y_TEXT_POSITION + 2*(textOffsetY) * 20), text, Color.Yellow, 1);\n                }\n\n                // Handle stack checking\n                if (m_stackCheckingDuration > 0)\n                {\n                    text.Clear();\n                    text.Append(\"Checking Profiler Stack\");\n                    MyDebugDraw.DrawText(new Vector2(20, Y_TEXT_POSITION + (-3) * 20), text, Color.Orange, 1);\n\n                    m_stackCheckingDuration -= elapsedTime;\n                    m_stackCheckingDuration = Math.Max(m_stackCheckingDuration, 0);\n\n                    MyProfiler.StackChecking = true;   // enable checking for next frame\n                }\n                else\n                    MyProfiler.StackChecking = false;\n                \n                                    \n                // Draw graphs\n                m_lineBatch.Begin();\n                DrawPerfEvents();\n                m_lineBatch.End();\n            }\n\n            // Update horizontal offset\n            if (!Paused)\n            {\n                m_index = (++m_index) % MyProfiler.MAX_FRAMES;\n\n                if (!m_useCustomFrame)\n                    m_selectedFrame = m_index;\n            }\n\n            // Reset childs before next run\n            foreach (MyProfiler.MyProfilerBlock profilerBlock in m_selectedProfiler.ProfilingBlocks.Values)\n            {\n                profilerBlock.StackChildren.Clear();\n                profilerBlock.StackParent = null;\n                profilerBlock.Stopwatch.Reset();\n                profilerBlock.DrawGraph = false;\n                profilerBlock.NumCalls = 0;\n                profilerBlock.NumChildCalls = -1; // -1 means it needs to be computed first.\n\n                profilerBlock.StartManagedMB = 0;\n                profilerBlock.EndManagedMB = 0;\n                profilerBlock.DeltaManagedB = 0;\n\n#if MEMORY_PROFILING\n                profilerBlock.startProcessMB = 0;\n                profilerBlock.endProcessMB = 0;\n                profilerBlock.deltaProcessB = 0;\n#endif\n\n                profilerBlock.CustomValue = 0;\n            }\n        }\n\n        [Conditional(\"RENDER_PROFILING\")]\n        public void StartProfilingBlock(string name)\n        {\n            int blockId = -1;\n            StartProfilingBlock(name, ref blockId);\n        }\n\n        [Conditional(\"RENDER_PROFILING\")]\n        public void StartProfilingBlock(string name, ref int blockId)\n        {\n            lock (m_lock)\n            {\n                if (!m_threadProfilers.ContainsKey(Thread.CurrentThread))\n                    m_threadProfilers.Add(Thread.CurrentThread, new MyProfiler());\n\n                MyProfiler currentProfiler = m_threadProfilers[Thread.CurrentThread];\n\n                if (m_selectedProfiler == null)\n                {\n                    m_selectedProfiler = currentProfiler;\n                    m_selectedThread = Thread.CurrentThread;\n                    m_selectedProfilerIndex = 0;\n                }\n\n                if (m_levelLimit != -1 && currentProfiler.CurrentProfilingStack.Count >= m_levelLimit)\n                {\n                    currentProfiler.LevelSkipCount++;\n                    return;\n                }\n\n#if MEMORY_PROFILING\n                blockId = currentProfiler.StartMyProfilingBlock(name, true);\n#else\n                blockId = currentProfiler.StartMyProfilingBlock(name, false);\n#endif\n            }\n        }\n\n        [Conditional(\"RENDER_PROFILING\")]\n        public void EndProfilingBlock(int id = -1)\n        {\n            lock (m_lock)\n            {\n#if MEMORY_PROFILING\n                m_threadProfilers[Thread.CurrentThread].EndMyProfilingBlock(id, true);\n#else\n                m_threadProfilers[Thread.CurrentThread].EndMyProfilingBlock(id, false);\n#endif\n            }\n        }\n\n        // same as EndProfilingBlock(); StartProfilingBlock(string name);\n        [Conditional(\"RENDER_PROFILING\")]\n        public void StartNextBlock(string name)\n        {\n            lock (m_lock)\n            {\n#if MEMORY_PROFILING\n                EndMyProfilingBlock(-1, true);\n                StartMyProfilingBlock(name, true);\n#else\n                EndProfilingBlock();\n                StartProfilingBlock(name);\n#endif\n            }\n        }\n\n        [Conditional(\"RENDER_PROFILING\")]\n        public void InitMemoryHack(string name)\n        {\n            lock (m_lock)\n            {\n                StartProfilingBlock(name);\n                EndProfilingBlock();\n\n                MyProfiler.MyProfilerBlock profilingBlock;\n                if (m_threadProfilers[Thread.CurrentThread].ProfilingBlocks.TryGetValue(name.GetHashCode(), out profilingBlock))\n                {\n                    profilingBlock.StartManagedMB = 0;\n                    profilingBlock.EndManagedMB = System.GC.GetTotalMemory(true);\n\n#if MEMORY_PROFILING\n                    profilingBlock.startProcessMB = 0;\n                    profilingBlock.endProcessMB = System.Environment.WorkingSet;\n#endif\n                }\n            }\n        }\n\n        [Conditional(\"RENDER_PROFILING\")]\n        public void ProfileCustomValue(string name, float value)\n        {\n            if (!m_threadProfilers.ContainsKey(Thread.CurrentThread))\n                m_threadProfilers.Add(Thread.CurrentThread, new MyProfiler());\n\n            if (m_levelLimit != -1)\n            {\n                return;\n            }\n\n#if MEMORY_PROFILING\n            MyProfileCustomValue(name, value, true);\n#else\n            m_threadProfilers[Thread.CurrentThread].MyProfileCustomValue(name, value, false);\n#endif\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Render/Statistics/MyRenderStatistics.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace MinerWars.AppCode.Game.Render\n{\n    struct MyRenderStatistics\n    {\n        public int TrianglesCount { get; set; }\n        public int EntitiesCount { get; set; }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Sessions/Multiplayer/MyMultiplayer.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.World;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing System.Net;\nusing SysUtils;\nusing MinerWars.AppCode.App;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing System.Diagnostics;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.Gameplay;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing System.Threading;\nusing MinerWars.AppCode.Game.Managers.EntityManager.Entities;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.Networking.Multiplayer;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Managers.EntityManager.Entities.Weapons;\nusing Microsoft.Xna.Framework;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Managers.PhysicsManager.Physics;\nusing MinerWars.AppCode.Game.HUD;\nusing MinerWars.AppCode.Game.Managers.EntityManager;\nusing System.IO;\nusing Lidgren.Network;\nusing MinerWars.AppCode.Game.World.Global;\nusing KeenSoftwareHouse.Library.Trace;\nusing MinerWars.AppCode.Game.Sessions.Multiplayer;\nusing MinerWars.AppCode.Game.Localization;\nusing SysUtils.Utils;\nusing MinerWars.AppCode.Game.Managers.EntityManager.Entities.Prefabs;\nusing MinerWars.AppCode.Game.Prefabs;\n\nnamespace MinerWars.AppCode.Game.Sessions\n{\n    // File was too large, split into multiple files\n    partial class MyMultiplayer\n    {\n        private static MyMultiplayer m_instance;\n\n        public static MyMultiplayer Static\n        {\n            get\n            {\n                if (m_instance == null)\n                {\n                    m_instance = new MyMultiplayer();\n                }\n                return m_instance;\n            }\n        }\n\n        public MyMultiplayerPeers Peers = MyMultiplayerPeers.Static;\n\n        public Action<MyTextsWrapperEnum, object[]> OnNotification;\n\n        List<MyEntity> m_spawnPoints = new List<MyEntity>(100);\n        object[] m_textArgs = new object[4];\n\n\n        void Log(string message)\n        {\n            MyTrace.Send(TraceWindow.Multiplayer, message);\n            MyMwcLog.WriteLine(\"MP - \" + message);\n        }\n\n        private void Notify(MyTextsWrapperEnum text, object[] args)\n        {\n            var handler = OnNotification;\n            if (handler != null)\n            {\n                handler(text, args);\n            }\n        }\n\n        private void Notify(MyTextsWrapperEnum text, object arg0 = null, object arg1 = null, object arg2 = null, object arg3 = null)\n        {\n            var handler = OnNotification;\n            if (handler != null)\n            {\n                m_textArgs[0] = arg0;\n                m_textArgs[1] = arg1;\n                m_textArgs[2] = arg2;\n                m_textArgs[3] = arg3;\n\n                handler(text, m_textArgs);\n            }\n        }\n\n\n        // Sends and receives messages\n        public static void Update()\n        {\n            if (MyMultiplayer.m_instance != null)\n            {\n                m_instance.UpdateInternal();\n            }\n        }\n\n        private void UpdateInternal()\n        {\n            UpdateLobby();\n            MyMultiplayerPeers.Static.Receive();\n        }\n\n        void Alert(string alertFormat, IPEndPoint endpoint, MyEventEnum eventType)\n        {\n            AlertVerbose(alertFormat, endpoint, eventType);\n        }\n\n        [Conditional(\"DEBUG\")]\n        void AlertVerbose(string alertFormat, IPEndPoint endpoint, MyEventEnum eventType)\n        {\n            var player = MyMultiplayerPeers.Static[endpoint];\n            string playerInfo = String.Format(\" UserId: {0}, GameUserId: {1}, EndPoint: {2}\", player.UserId, player.GameId, player.EndPoint);\n            MyTrace.Send(TraceWindow.MultiplayerAlerts, eventType.ToString() + \": \" + alertFormat + playerInfo);\n        }\n\n        internal static void Shutdown()\n        {\n            MyMultiplayerPeers.Static.Shutdown();\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Sessions/Multiplayer/MyMultiplayerConfiguration.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace MinerWars.AppCode.Game.Sessions\n{\n    class MyMultiplayerConfiguration\n    {\n        public TimeSpan RespawnTime = TimeSpan.FromSeconds(5);\n        \n        /// <summary>\n        /// Number of position updates per second.\n        /// Minimum value - position is not updated less times per second, than this value\n        /// </summary>\n        public int PositionTickRateMin = 2;\n\n        /// <summary>\n        /// Number of position updates per second\n        /// Maximum value - position is not updated more times per second, than this value\n        /// </summary>\n        public int PositionTickRateMax = 20;\n\n        public float RotationTickRate = 20;\n\n        /// <summary>\n        /// Number of projectile position updates\n        /// </summary>\n        public int ProjectilesTickRate = 20;\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Sessions/Multiplayer/MyMultiplayerExtensions.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing Lidgren.Network;\nusing MinerWars.AppCode.Game.World;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\n\nnamespace MinerWars.AppCode.Game.Sessions\n{\n    static class MyMultiplayerExtensions\n    {\n        public static readonly string CoopPlayerPrefix = \"MP_CoopPlayer_\";\n\n        public static StringBuilder EmptyStringBuilder = new StringBuilder(String.Empty);\n\n        public static MyPlayerRemote GetPlayer(this NetConnection connection)\n        {\n            return (connection != null && connection.Tag is MyPlayerRemote) ? ((MyPlayerRemote)connection.Tag) : null;\n        }\n\n        public static StringBuilder GetPlayerName(this NetConnection connection)\n        {\n            var player = connection.GetPlayer();\n            return player != null ? player.GetDisplayName() : EmptyStringBuilder;\n        }\n\n        public static MyMwcObjectBuilder_Player LoadCoopPlayer(this MyMwcObjectBuilder_Checkpoint checkpoint, string displayName)\n        {\n            string name = CoopPlayerPrefix + displayName;\n            if (checkpoint != null && checkpoint.InventoryObjectBuilder != null && checkpoint.InventoryObjectBuilder.InventoryItems != null)\n            {\n                var result = checkpoint.InventoryObjectBuilder.InventoryItems.Select(s => s.ItemObjectBuilder).OfType<MyMwcObjectBuilder_Player>().FirstOrDefault(s => s.Name == name);\n                if (result != null)\n                {\n                    result.Name = displayName;\n                    return result;\n                }\n            }\n            return null;\n        }\n\n        public static void CopyCoopPlayers(this MyMwcObjectBuilder_Checkpoint loadFrom, MyMwcObjectBuilder_Checkpoint copyTo)\n        {\n            if (loadFrom != null && loadFrom.InventoryObjectBuilder != null && loadFrom.InventoryObjectBuilder.InventoryItems != null)\n            {\n                var result = loadFrom.InventoryObjectBuilder.InventoryItems.Select(s => s.ItemObjectBuilder).OfType<MyMwcObjectBuilder_Player>().Where(s => s.Name.StartsWith(CoopPlayerPrefix));\n                foreach(var pl in result.ToArray())\n                {\n                    copyTo.StoreCoopPlayer((MyMwcObjectBuilder_Player) pl.Clone());\n                }\n            }\n        }\n\n        public static void StoreCoopPlayer(this MyMwcObjectBuilder_Checkpoint checkpoint, MyMwcObjectBuilder_Player playerBuilder, string displayName)\n        {\n            playerBuilder.Name = CoopPlayerPrefix + displayName;\n            StoreCoopPlayer(checkpoint, playerBuilder);\n        }\n\n        private static void StoreCoopPlayer(this MyMwcObjectBuilder_Checkpoint checkpoint, MyMwcObjectBuilder_Player playerBuilder)\n        {\n            if (checkpoint != null)\n            {\n                if (checkpoint.InventoryObjectBuilder == null)\n                    checkpoint.InventoryObjectBuilder = (MyMwcObjectBuilder_Inventory)MyMwcObjectBuilder_Base.CreateNewObject(MyMwcObjectBuilderTypeEnum.Inventory, null);\n\n                // Remove old and add new\n                checkpoint.InventoryObjectBuilder.InventoryItems.RemoveAll(new Predicate<MyMwcObjectBuilder_InventoryItem>(s => s.ItemObjectBuilder.Name == playerBuilder.Name));\n                checkpoint.InventoryObjectBuilder.InventoryItems.Add(new MyMwcObjectBuilder_InventoryItem(playerBuilder, 1));\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Sessions/Multiplayer/MyMultiplayerGameplay.Entity.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Entities.Weapons;\nusing System.Diagnostics;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.CommonLIB.AppCode.Networking.Multiplayer;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing Lidgren.Network;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Gameplay;\nusing MinerWars.AppCode.Game.Physics;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Explosions;\nusing MinerWars.AppCode.Game.World;\nusing MinerWars.AppCode.Game.Entities.SubObjects;\nusing MinerWars.CommonLIB.AppCode.Utils;\n\nnamespace MinerWars.AppCode.Game.Sessions\n{\n    partial class MyMultiplayerGameplay\n    {\n        public void Shoot(MyEntity entity, Matrix shooterMatrix, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum weapon, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum ammo, MyEntity target, MyEntityIdentifier? projectileId)\n        {\n            if (!IsControlledByMe(entity))\n            {\n                return;\n            }\n\n            MyEventShoot msg = new MyEventShoot();\n            msg.Position = new MyMwcPositionAndOrientation(shooterMatrix);\n            msg.ShooterEntityId = entity.EntityId.Value.NumericValue;\n            msg.ProjectileEntityId = MyEntityIdentifier.ToNullableInt(projectileId);\n            msg.Ammo = ammo;\n            msg.TargetEntityId = (target != null && target.EntityId.HasValue) ? target.EntityId.Value.NumericValue : (uint?)null;\n            msg.Weapon = weapon;\n\n            Peers.SendToAll(ref msg, NetDeliveryMethod.ReliableUnordered);\n        }\n\n        void OnShoot(ref MyEventShoot msg)\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Shoot\");\n            MyEntity parent;\n            if (MyEntities.TryGetEntityById(new MyEntityIdentifier(msg.ShooterEntityId), out parent))\n            {\n                if (parent is MySmallShip)\n                {\n                    var ship = (MySmallShip)parent;\n                    ship.InitGroupMaskIfNeeded();\n                    ship.WorldMatrix = msg.Position.GetMatrix();\n                    if (msg.TargetEntityId.HasValue)\n                    {\n                        ship.TargetEntity = MyEntityIdentifier.GetEntityByIdOrNull(new MyEntityIdentifier(msg.TargetEntityId.Value));\n                    }\n                    var msgWeapon = msg.Weapon;\n                    var weapon = GetWeapon(ship, msgWeapon);\n                    if (weapon == null)\n                    {\n                        weapon = ship.Weapons.AddWeapon(new MyMwcObjectBuilder_SmallShip_Weapon(msg.Weapon));\n                    }\n                    Debug.Assert(weapon.Parent != null, \"Weapon parent is null, something is wrong\");\n                    weapon.IsDummy = true;\n                    weapon.Shot(new MyMwcObjectBuilder_SmallShip_Ammo(msg.Ammo));\n                    MyEntity projectile;\n                    if (msg.ProjectileEntityId.HasValue && weapon.LastShotId.HasValue && MyEntities.TryGetEntityById(weapon.LastShotId.Value, out projectile))\n                    {\n                        MyEntityIdentifier.RemoveEntity(weapon.LastShotId.Value);\n                        projectile.EntityId = new MyEntityIdentifier(msg.ProjectileEntityId.Value);\n                        if (!MyEntityIdentifier.ExistsById(projectile.EntityId.Value))\n                        {\n                            MyEntityIdentifier.AddEntityWithId(projectile);\n                        }\n                    }\n                }\n                else if (parent is MyPrefabLargeWeapon)\n                {\n                    var gun = ((MyPrefabLargeWeapon)parent).GetGun();\n                    if (msg.TargetEntityId.HasValue)\n                    {\n                        var target = MyEntityIdentifier.GetEntityByIdOrNull(new MyEntityIdentifier(msg.TargetEntityId.Value));\n                        gun.SetTarget(target);\n                    }\n                    \n                    gun.GetBarell().IsDummy = true;\n                    gun.RotateImmediately(gun.GetPosition() + msg.Position.GetMatrix().Forward * 5000);\n                    gun.IsDummy = true;\n                    gun.Shot(new MyMwcObjectBuilder_SmallShip_Ammo(msg.Ammo));\n                    MyEntity projectile;\n                    if (msg.ProjectileEntityId.HasValue && gun.LastShotId.HasValue && MyEntities.TryGetEntityById(gun.LastShotId.Value, out projectile))\n                    {\n                        MyEntityIdentifier.RemoveEntity(gun.LastShotId.Value);\n                        projectile.EntityId = new MyEntityIdentifier(msg.ProjectileEntityId.Value);\n                        if (!MyEntityIdentifier.ExistsById(projectile.EntityId.Value))\n                        {\n                            MyEntityIdentifier.AddEntityWithId(projectile);\n                        }\n                    }\n                }\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        private static MySmallShipGunBase GetWeapon(MySmallShip ship, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum msgWeapon)\n        {\n            return MyMwcUtils.GetRandomItemOrNull(ship.Weapons.GetMountedWeaponsWithHarvesterAndDrill().Where((s) => s.WeaponType == msgWeapon).ToList());\n        }\n\n        public void ExplodeAmmo(MyAmmoBase ammo)\n        {\n            // Explode only my missiles to prevent circullar SEND/RECEIVE\n            if (IsControlledByMe(ammo))\n            {\n                var msg = new MyEventAmmoExplosion();\n                msg.AmmoBaseEntityId = ammo.EntityId.Value.NumericValue;\n                msg.Position = new MyMwcPositionAndOrientation(ammo.WorldMatrix);\n                Peers.SendToAll(ref msg, NetDeliveryMethod.ReliableUnordered);\n            }\n        }\n\n        void OnAmmoExplosion(ref MyEventAmmoExplosion msg)\n        {\n            MyEntity ammoBase;\n            if (MyEntities.TryGetEntityById(new MyEntityIdentifier(msg.AmmoBaseEntityId), out ammoBase) && ammoBase is MyAmmoBase)\n            {\n                var ammo = (MyAmmoBase)ammoBase;\n                ammo.WorldMatrix = msg.Position.GetMatrix();\n                ammo.IsDummy = false;\n                ammo.Explode();\n            }\n        }\n\n        public void DoDamage(MyEntity target, float player, float normal, float emp, MyDamageType damageType, MyAmmoType ammoType, MyEntity source, float newHealthRatio)\n        {\n            if (IsControlledByMe(target))\n            {\n                MyEventDoDamage msg = new MyEventDoDamage();\n                msg.TargetEntityId = target.EntityId.Value.NumericValue;\n                msg.PlayerDamage = player;\n                msg.Damage = normal;\n                msg.EmpDamage = emp;\n                msg.DamageType = (byte)damageType;\n                msg.AmmoType = (byte)ammoType;\n                msg.DamageSource = source != null ? MyEntityIdentifier.ToNullableInt(source.EntityId) : null;\n                msg.NewHealthRatio = newHealthRatio;\n                Peers.SendToAll(ref msg, NetDeliveryMethod.ReliableUnordered);\n            }\n        }\n\n        void OnDoDamage(ref MyEventDoDamage msg)\n        {\n            MyEntity target;\n            if (MyEntities.TryGetEntityById(new MyEntityIdentifier(msg.TargetEntityId), out target) && CheckSenderId(msg, msg.TargetEntityId))\n            {\n                MyEntity source;\n                if (!msg.DamageSource.HasValue || !MyEntities.TryGetEntityById(new MyEntityIdentifier(msg.DamageSource.Value), out source))\n                {\n                    source = null;\n                }\n\n                Debug.Assert(target.IsDummy);\n                target.IsDummy = false;\n                // This is stupid, but necessary, DoDamage should be fixed\n                if (msg.NewHealthRatio <= 0)\n                {\n                    target.HealthRatio = 0.0001f;\n                    target.DoDamage(msg.PlayerDamage, msg.Damage, msg.EmpDamage, (MyDamageType)msg.DamageType, (MyAmmoType)msg.AmmoType, source);\n\n                    //Closes entity \n                    target.UpdateBeforeSimulation();\n                }\n                else\n                {\n                    target.HealthRatio = 100.0f;\n                    target.DoDamage(msg.PlayerDamage, msg.Damage, msg.EmpDamage, (MyDamageType)msg.DamageType, (MyAmmoType)msg.AmmoType, source);\n                    target.HealthRatio = msg.NewHealthRatio;\n                }\n                target.IsDummy = true;\n            }\n            else\n            {\n                Alert(\"Call 'OnDamage' on invalid entity\", msg.SenderEndpoint, msg.EventType);\n            }\n        }\n\n        public void ProjectileHit(MyEntity target, Vector3 position, Vector3 direction, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum ammoType, MyEntity source)\n        {\n            if (target.EntityId.HasValue)\n            {\n                MyEventProjectileHit msg = new MyEventProjectileHit();\n                msg.TargetEntityId = target.EntityId.Value.NumericValue;\n                msg.Position = position;\n                msg.Direction = direction;\n                msg.AmmoType = ammoType;\n\n                msg.SourceEntityId = source != null ? MyEntityIdentifier.ToNullableInt(source.EntityId) : null;\n                Peers.SendToAll(ref msg, NetDeliveryMethod.ReliableUnordered);\n            }\n\n        }\n\n        void OnProjectileHit(ref MyEventProjectileHit msg)\n        {\n            MyEntity target;\n            if (MyEntities.TryGetEntityById(new MyEntityIdentifier(msg.TargetEntityId), out target))\n            {\n                MyEntity source;\n                if (!msg.SourceEntityId.HasValue || !MyEntities.TryGetEntityById(new MyEntityIdentifier(msg.SourceEntityId.Value), out source))\n                {\n                    source = null;\n                }\n                var ammo = MyAmmoConstants.GetAmmoProperties(msg.AmmoType);\n\n                target.DoDamage(ammo.HealthDamage, ammo.ShipDamage, ammo.EMPDamage, ammo.DamageType, ammo.AmmoType, source);\n                MyProjectile.ApplyProjectileForce(target, msg.Position, Vector3.Normalize(msg.Direction), !(target is MySmallShipBot));\n            }\n        }\n\n        public void UpdateAmmo(MyAmmoBase ammo)\n        {\n            Debug.Assert(ammo.EntityId.HasValue, \"All guided projectiles must have entity ID, this type hasn't: \" + ammo.GetType().Name);\n            if (ammo.EntityId.Value.PlayerId == MyEntityIdentifier.CurrentPlayerId) // Make sure to update only my ammo\n            {\n                MyEventAmmoUpdate msg = new MyEventAmmoUpdate();\n                msg.EntityId = ammo.EntityId.Value.NumericValue;\n                msg.Velocity = ammo.Physics.LinearVelocity;\n                msg.Position = new MyMwcPositionAndOrientation(ammo.WorldMatrix);\n                Peers.SendToAll(ref msg, ammo.EntityId.Value, m_multiplayerConfig.ProjectilesTickRate, NetDeliveryMethod.Unreliable);\n            }\n        }\n\n        public void OnAmmoUpdate(ref MyEventAmmoUpdate msg)\n        {\n            var player = (MyPlayerRemote)msg.SenderConnection.Tag;\n            if (player != null)\n            {\n                MyEntity projectile;\n                if (MyEntityIdentifier.TryGetEntity(new MyEntityIdentifier(msg.EntityId), out projectile))\n                {\n                    projectile.WorldMatrix = msg.Position.GetMatrix();\n                    projectile.Physics.LinearVelocity = msg.Velocity;\n                }\n            }\n        }\n\n        public void SpeacialWeaponEvent(MySpecialWeaponEventEnum eventType, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum weapon)\n        {\n            MyEventSpeacialWeapon msg = new MyEventSpeacialWeapon();\n            msg.ShipEntityId = MySession.PlayerShip.EntityId.Value.NumericValue;\n            msg.Weapon = weapon;\n            msg.WeaponEvent = eventType;\n\n            Peers.SendToAll(ref msg, NetDeliveryMethod.ReliableUnordered);\n        }\n\n        public void OnSpecialWeaponEvent(ref MyEventSpeacialWeapon msg)\n        {\n            var player = (MyPlayerRemote)msg.SenderConnection.Tag;\n            if (player != null)\n            {\n                MyEntity entity;\n                if (MyEntityIdentifier.TryGetEntity(new MyEntityIdentifier(msg.ShipEntityId), out entity) && entity is MySmallShip)\n                {\n                    MySmallShip ship = (MySmallShip)entity;\n\n                    switch (msg.WeaponEvent)\n                    {\n                        case MySpecialWeaponEventEnum.HARVESTER_FIRE:\n                            OnFireHarvester(msg.Weapon, ship);\n                            break;\n\n                        case MySpecialWeaponEventEnum.DRILL_ACTIVATED:\n                            EnsureDrill(msg.Weapon, ship).CurrentState = MyDrillStateEnum.Activated;\n                            break;\n\n                        case MySpecialWeaponEventEnum.DRILL_DEACTIVATED:\n                            EnsureDrill(msg.Weapon, ship).CurrentState = MyDrillStateEnum.Deactivated;\n                            break;\n\n                        case MySpecialWeaponEventEnum.DRILL_DRILLING:\n                            {\n                                var drill = EnsureDrill(msg.Weapon, ship);\n                                drill.Shot(null);\n                                drill.CurrentState = MyDrillStateEnum.Drilling;\n                            }\n                            break;\n\n                        default:\n                            break;\n                    }\n                }\n            }\n        }\n\n        private static MyDrillBase EnsureDrill(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum weapon, MySmallShip ship)\n        {\n            var drill = ship.Weapons.GetMountedDrill();\n            if (drill == null || drill.WeaponType != weapon)\n            {\n                ship.Weapons.RemoveDrill();\n                ship.Weapons.AddDrill(new MyMwcObjectBuilder_SmallShip_Weapon(weapon));\n                drill = ship.Weapons.GetMountedDrill();\n            }\n            drill.IsDummy = true;\n            return drill;\n        }\n\n        private static void OnFireHarvester(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum weapon, MySmallShip ship)\n        {\n            var harvester = ship.Weapons.GetMountedHarvestingDevice();\n            if (harvester == null || harvester.WeaponType != weapon)\n            {\n                ship.Weapons.RemoveHarvestingDevice();\n                ship.Weapons.AddHarvestingDevice(new MyMwcObjectBuilder_SmallShip_Weapon(weapon));\n                harvester = ship.Weapons.GetMountedHarvestingDevice();\n            }\n            harvester.IsDummy = true;\n            ship.Weapons.FireHarvester();\n        }\n\n        public void ResetEntity(MyEntity entity)\n        {\n            Debug.Assert(entity.EntityId.HasValue);\n\n            if(IsControlledByMe(entity))\n            {\n                MyEventEntityReset msg = new MyEventEntityReset();\n                msg.EntityId = entity.EntityId.Value.NumericValue;\n                Peers.SendToAll(ref msg);\n            }\n        }\n\n        private void OnReset(ref MyEventEntityReset msg)\n        {\n            MyEntity entity;\n            if(MyEntities.TryGetEntityById(new MyEntityIdentifier(msg.EntityId), out entity) && entity.IsDummy)\n            {\n                var resetableEntity = entity as IResetable;\n                entity.IsDummy = false;\n                resetableEntity.Reset();\n                entity.IsDummy = true;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Sessions/Multiplayer/MyMultiplayerGameplay.Join.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.Networking.Multiplayer;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.World;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Entities.Weapons;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing Lidgren.Network;\nusing MinerWars.AppCode.Game.GUI.Helpers;\nusing MinerWars.AppCode.Game.Sessions.Multiplayer;\nusing System.Diagnostics;\nusing KeenSoftwareHouse.Library.Trace;\nusing SysUtils.Utils;\nusing MinerWars.AppCode.Game.Missions;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.World.Global;\n\nnamespace MinerWars.AppCode.Game.Sessions\n{\n    partial class MyMultiplayerGameplay\n    {\n        private List<MyPlayerInfo> m_playerListToSend = new List<MyPlayerInfo>(16);\n        private List<MyEntity> m_entitiesToTransfer = new List<MyEntity>(64);\n\n        private byte m_lastPlayerId = 0;\n\n\n        private MyMwcObjectBuilder_Checkpoint GetCheckpoint()\n        {\n            var checkpoint = MySession.Static.GetCheckpointBuilder(true);\n\n            MyGuiScreenGamePlay.Static.Checkpoint.CopyCoopPlayers(checkpoint);\n\n            var ship = CreateShip(MySession.PlayerShip.ShipType, MySession.Static.Player.Faction);\n            ship.PositionAndOrientation = new MyMwcPositionAndOrientation(MySession.PlayerShip.WorldMatrix);\n            ship.EntityId = MySession.PlayerShip.EntityId.Value.NumericValue;\n            ship.DisplayName = MyClientServer.LoggedPlayer.GetDisplayName().ToString();\n            ship.ShipHealthRatio = MySession.PlayerShip.HealthRatio;\n            ship.Inventory = GetInventory(MySession.PlayerShip, true);\n            ship.PersistentFlags = MySession.PlayerShip.PersistentFlags;\n            checkpoint.SectorObjectBuilder.SectorObjects.Add(ship);\n\n            foreach (var player in Peers.Players)\n            {\n                if (player.Ship != null)\n                {\n                    var builder = player.Ship.GetObjectBuilder(true);\n                    checkpoint.SectorObjectBuilder.SectorObjects.Add(builder);\n                }\n            }\n\n            return checkpoint;\n        }\n        \n        public void ReloadCheckpoint()\n        {\n            Log(\"ReloadCheckpoint\");\n            Debug.Assert(IsHost);\n\n            foreach (var player in Peers.Players)\n            {\n                SendCheckpoint(player.Connection);\n            }\n        }\n\n        void SendCheckpoint(NetConnection sendTo)\n        {\n            Log(\"SendCheckpoint\");\n            var checkpointEvent = new MyEventCheckpoint();\n            checkpointEvent.Checkpoint = GetCheckpoint();\n\n            Peers.NetworkClient.Send(ref checkpointEvent, sendTo, NetDeliveryMethod.ReliableOrdered, 0, 1024 * 1024);\n\n            // Send missiles, cannon shots etc.\n            m_entitiesToTransfer.Clear();\n            MyEntities.FindEntities(AmmoEntitiesPredicate, m_entitiesToTransfer);\n            foreach (var e in m_entitiesToTransfer)\n            {\n                var ammo = (MyAmmoBase)e;\n\n                var weapon = MyGuiSmallShipHelpers.GetFirstWeaponType(ammo.AmmoType);\n                if (!weapon.HasValue) continue;\n\n                MyEventShoot shootMsg = new MyEventShoot();\n                shootMsg.Ammo = ammo.AmmoType;\n                shootMsg.Position = new MyMwcPositionAndOrientation(ammo.WorldMatrix);\n                shootMsg.ProjectileEntityId = MyEntityIdentifier.ToNullableInt(ammo.EntityId);\n                shootMsg.ShooterEntityId = (ammo.OwnerEntity != null && ammo.OwnerEntity.EntityId.HasValue) ? ammo.OwnerEntity.EntityId.Value.NumericValue : 0;\n                shootMsg.TargetEntityId = null;\n                shootMsg.Weapon = weapon.Value;\n                Peers.NetworkClient.Send(ref shootMsg, sendTo, NetDeliveryMethod.ReliableOrdered, 0);\n            }\n        }\n\n        public event Action NewPlayer;\n        void OnNewPlayer(ref MyEventNewPlayer msg)\n        {\n            Log(\"OnNewPlayer\");\n\n            if (NewPlayer != null)\n            {\n                NewPlayer();\n            }\n\n            if (IsHost)\n            {\n                SendCheckpoint(msg.SenderConnection);\n\n                var playerLeftMsg = new MyEventPlayerStateChanged();\n                playerLeftMsg.UserId = msg.PlayerInfo.UserId;\n                playerLeftMsg.NewState = MyMultiplayerStateEnum.Playing;\n                Peers.SendServer(ref playerLeftMsg);\n\n                UpdateMission();\n            }\n            else\n            {\n                var player = new MyPlayerRemote(new StringBuilder(msg.PlayerInfo.DisplayName), msg.PlayerInfo.UserId, msg.PlayerInfo.PlayerId);\n                player.Connection = msg.SenderConnection;\n                player.Connection.Tag = player;\n                Peers.Players.Add(player);\n                Notify(MyTextsWrapperEnum.MP_XHasJoined, msg.PlayerInfo.DisplayName);\n            }\n            LogPlayers();\n        }\n\n        [Conditional(\"DEBUG\")]\n        void LogPlayers()\n        {\n            MyMwcLog.WriteLine(\"PLAYER LOG:\");\n            foreach (var player in Peers.Players)\n            {\n                string message = String.Format(\"User: {0,4} - {1,15}, GameId: {2,3}, EP: {3}, {4}\", player.UserId, player.GetDisplayName(), player.PlayerId, player.Connection.RemoteEndpoint, player.Faction);\n                MyTrace.Send(TraceWindow.MultiplayerAlerts, message);\n                MyMwcLog.WriteLine(message);\n            }\n        }\n\n        bool AmmoEntitiesPredicate(MyEntity entity)\n        {\n            return entity is MyAmmoBase;\n        }\n\n\n        byte GeneratePlayerId()\n        {\n            bool exists = true;\n            while (exists)\n            {\n                unchecked\n                {\n                    m_lastPlayerId++;\n                }\n                if (m_lastPlayerId == 0)\n                    m_lastPlayerId++;\n\n                exists = false;\n                foreach (var p in Peers.Players)\n                {\n                    if (p.PlayerId == m_lastPlayerId)\n                    {\n                        exists = true;\n                        break;\n                    }\n                }\n            }\n            return m_lastPlayerId;\n        }\n\n        // Client is joining to ME and I'm host\n        private void OnEnterGame(ref MyEventEnterGame msg)\n        {\n            Log(\"OnEnterGame\");\n\n            if (JoinMode == MyJoinMode.Open)\n            {\n                AllowEnter(ref msg);\n            }\n            else if (JoinMode == MyJoinMode.Closed)\n            {\n                DenyEnter(ref msg);\n            }\n\n        }\n\n        public void DenyEnter(ref MyEventEnterGame msg)\n        {\n            var response = new MyEventEnterGameResponse();\n            response.Allowed = false;\n            Peers.NetworkClient.Send(ref response, msg.SenderConnection, NetDeliveryMethod.ReliableOrdered, 0);\n        }\n\n        public void AllowEnter(ref MyEventEnterGame msg)\n        {\n            var playerList = msg.ConnectedPlayers;\n            bool allConnected = MyMultiplayerPeers.Static.Players.All(s => playerList.Contains(s.UserId));\n            if (allConnected)\n            {\n                // Generate game user id and send back\n                var response = new MyEventEnterGameResponse();\n                response.Allowed = true;\n                response.PlayerId = GeneratePlayerId();\n\n                var newPlayer = new MyPlayerRemote(new StringBuilder(msg.PlayerInfo.DisplayName), msg.PlayerInfo.UserId, response.PlayerId);\n                newPlayer.Connection = msg.SenderConnection;\n                msg.SenderConnection.Tag = newPlayer;\n                newPlayer.Faction = MyMwcObjectBuilder_FactionEnum.None;\n\n                MyMultiplayerPeers.Static.Players.Add(newPlayer);\n\n                Peers.NetworkClient.Send(ref response, msg.SenderConnection, NetDeliveryMethod.ReliableOrdered, 0);\n            }\n            else\n            {\n                SendPlayerList(msg.SenderConnection);\n            }\n        }\n\n        // Client wants player list\n        private void OnGetPlayerList(ref MyEventGetPlayerList msg)\n        {\n            SendPlayerList(msg.SenderConnection);\n        }\n\n        private void SendPlayerList(NetConnection connection)\n        {\n            var response = new MyEventGetPlayerListResponse();\n            response.PlayerList = new List<MyPlayerInfo>(MyMultiplayerPeers.Static.Players.Select(s => RemotePlayerToInfo(s)));\n\n            var me = new MyPlayerInfo()\n            {\n                DisplayName = MyClientServer.LoggedPlayer.GetDisplayName().ToString(),\n                Faction = MySession.Static.Player.Faction,\n                PlayerId = MyEntityIdentifier.CurrentPlayerId,\n                UserId = MyClientServer.LoggedPlayer.GetUserId(),\n            };\n            response.PlayerList.Add(me);\n\n            LogPlayerList(ref response);\n\n            Peers.NetworkClient.Send(ref response, connection, NetDeliveryMethod.ReliableOrdered, 0);\n        }\n\n        [Conditional(\"DEBUG\")]\n        public static void LogPlayerList(ref MyEventGetPlayerListResponse msg)\n        {\n            for (int i = 0; i < msg.PlayerList.Count; i++)\n            {\n                var p = msg.PlayerList[i];\n                Log(String.Format(\"PlayerList[0] {0}, UserId: {3}, PlayerId: {2}, Faction: {1}\", p.DisplayName, MyFactionConstants.GetFactionProperties(p.Faction).Name, p.PlayerId, p.UserId));\n            }\n        }\n\n        private MyPlayerInfo RemotePlayerToInfo(MyPlayerRemote player)\n        {\n            return new MyPlayerInfo()\n            {\n                DisplayName = player.GetDisplayName().ToString(),\n                PlayerId = player.PlayerId,\n                UserId = player.UserId,\n                Faction = player.Faction,\n            };\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Sessions/Multiplayer/MyMultiplayerGameplay.Locking.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Entities.Weapons;\nusing System.Diagnostics;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.CommonLIB.AppCode.Networking.Multiplayer;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing Lidgren.Network;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Gameplay;\nusing MinerWars.AppCode.Game.Physics;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Explosions;\nusing MinerWars.AppCode.Game.World;\nusing KeenSoftwareHouse.Library.Parallelization.Threading;\n\nnamespace MinerWars.AppCode.Game.Sessions\n{\n    delegate void LockResponseHandler(MyEntity entity, bool success);\n\n    partial class MyMultiplayerGameplay\n    {\n        private Dictionary<uint, byte> m_lockedEntities = new Dictionary<uint, byte>();\n        public LockResponseHandler LockReponse;\n        private FastResourceLock m_lockedEntitiesLock = new FastResourceLock();\n\n        private Action<MyEntity> m_unlockOnClosing;\n\n        public bool IsLockedByMe(MyEntity entity)\n        {\n            byte playerId;\n            return entity.EntityId.HasValue && m_lockedEntities.TryGetValue(entity.EntityId.Value.NumericValue, out playerId) && playerId == MyEntityIdentifier.CurrentPlayerId;\n        }\n        \n        public bool IsLockedByOtherPlayer(MyEntity entity)\n        {\n            byte playerId;\n            return entity.EntityId.HasValue && m_lockedEntities.TryGetValue(entity.EntityId.Value.NumericValue, out playerId) && playerId != MyEntityIdentifier.CurrentPlayerId;\n        }\n\n        public bool IsLockedByAny(MyEntity entity)\n        {\n            byte playerId;\n            return entity.EntityId.HasValue && m_lockedEntities.TryGetValue(entity.EntityId.Value.NumericValue, out playerId);\n        }\n\n        public void ClearLocks(byte playerId)\n        {\n            foreach (var l in m_lockedEntities.ToArray())\n            {\n                if (l.Value == playerId)\n                {\n                    m_lockedEntities.Remove(l.Key);\n\n                    // Announce to all\n                    MyEventLock unlockMsg = new MyEventLock();\n                    unlockMsg.EntityId = l.Key;\n                    unlockMsg.LockType = MyLockEnum.UNLOCK;\n                    Peers.SendToAll(ref unlockMsg);\n                }\n            }\n        }\n\n        public void Lock(MyEntityIdentifier entityId, bool enable)\n        {\n            if (IsHost)\n            {\n                // Host just sends lock to all\n                bool success = TryLockEntity(entityId.NumericValue, MyEntityIdentifier.CurrentPlayerId, enable);\n\n                if (success)\n                {\n                    LogDevelop(MyEntities.GetEntityById(entityId).Name + \" \" + (enable ? \"LOCKED\" : \"UNLOCKED\"));\n                }\n\n                MyEntity entity;\n                if (enable && MyEntities.TryGetEntityById(entityId, out entity))\n                {\n                    RaiseLockResponse(entity, success);\n                }\n            }\n            else\n            {\n                // Send request to host\n                MyEventLock msg = new MyEventLock();\n                msg.EntityId = entityId.NumericValue;\n                msg.LockType = enable ? MyLockEnum.LOCK : MyLockEnum.UNLOCK;\n\n                // Sometimes can be called after host already disconnected (closing screens etc)\n                Peers.TrySendHost(ref msg);\n            }\n        }\n\n        public void Lock(MyEntity entity, bool enable)\n        {\n            Debug.Assert(entity.EntityId.HasValue);\n            Lock(entity.EntityId.Value, enable);\n        }\n\n        private void OnLock(ref MyEventLock msg)\n        {\n            var player = (MyPlayerRemote)msg.SenderConnection.Tag;\n            if (player != null)\n            {\n                if (IsHost)\n                {\n                    // Someone wants to lock entity\n                    TryLockEntity(msg.EntityId, player.PlayerId, msg.LockType == MyLockEnum.LOCK);\n                }\n                else if (player.UserId == Peers.HostUserId)\n                {\n                    using (m_lockedEntitiesLock.AcquireExclusiveUsing())\n                    {\n                        if (msg.LockType == MyLockEnum.LOCK)\n                        {\n                            // Locked by host, just accept it\n                            m_lockedEntities[msg.EntityId] = 0;\n                        }\n                        else\n                        {\n                            // Unlocked by host\n                            m_lockedEntities.Remove(msg.EntityId);\n                        }\n                    }\n                }\n                else\n                {\n                    Alert(\"Lock came from other player than host\", msg.SenderEndpoint, msg.EventType);\n                }\n            }\n        }\n\n        private void OnLockResult(ref MyEventLockResult msg)\n        {\n            if (msg.IsSuccess)\n            {\n                m_lockedEntities[msg.EntityId] = MyEntityIdentifier.CurrentPlayerId;\n            }\n\n            MyEntity entity;\n            if (MyEntities.TryGetEntityById(new MyEntityIdentifier(msg.EntityId), out entity))\n            {\n                RaiseLockResponse(entity, msg.IsSuccess);\n            }\n        }\n\n        private void RaiseLockResponse(MyEntity entity, bool success)\n        {\n            LogDevelop(\"Raised lock response: \" + entity.Name);\n\n            var handler = LockReponse;\n            if (handler != null)\n            {\n                handler(entity, success);\n            }\n        }\n\n        /// <summary>\n        /// Try lock entity and announce to other players (runs only on host)\n        /// </summary>\n        bool TryLockEntity(uint entityId, byte playerId, bool enable)\n        {\n            bool success = true;\n            if (enable)\n            {\n                using (m_lockedEntitiesLock.AcquireExclusiveUsing())\n                {\n                    success = !m_lockedEntities.ContainsKey(entityId);\n\n                    if (success)\n                    {\n                        m_lockedEntities[entityId] = playerId;\n                        MyEntities.GetEntityById(entityId.ToEntityId()).OnClosing += m_unlockOnClosing;\n                    }\n                }\n            }\n            else\n            {\n                using (m_lockedEntitiesLock.AcquireExclusiveUsing())\n                {\n                    success = m_lockedEntities.Remove(entityId);\n                    MyEntity entity;\n                    if (MyEntities.TryGetEntityById(entityId.ToEntityId(), out entity))\n                    {\n                        entity.OnClosing -= m_unlockOnClosing;\n                    }\n                }\n            }\n\n            if (success)\n            {\n                // Send lock to all\n                MyEventLock response = new MyEventLock();\n                response.EntityId = entityId;\n                response.LockType = enable ? MyLockEnum.LOCK : MyLockEnum.UNLOCK;\n                Peers.SendToAll(ref response, NetDeliveryMethod.ReliableOrdered, 0);\n            }\n\n            if (enable)\n            {\n                // Send response to player\n                MyPlayerRemote player;\n                if (Peers.TryGetPlayer(playerId, out player))\n                {\n                    MyEventLockResult response = new MyEventLockResult();\n                    response.EntityId = entityId;\n                    response.IsSuccess = success;\n                    Peers.NetworkClient.Send(ref response, player.Connection, NetDeliveryMethod.ReliableOrdered, 0);\n                }\n            }\n\n            return success;\n        }\n\n        void UnlockOnClosing(MyEntity entity)\n        {\n            Lock(entity, false);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Sessions/Multiplayer/MyMultiplayerGameplay.Misc.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Entities.Weapons;\nusing System.Diagnostics;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.CommonLIB.AppCode.Networking.Multiplayer;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing Lidgren.Network;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWarsMath;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.AppCode.Game.HUD;\nusing MinerWars.AppCode.Game.World;\nusing MinerWars.AppCode.Game.Gameplay;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Decals;\nusing MinerWars.AppCode.Game.Voxels;\nusing MinerWars.AppCode.Game.Missions;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.AppCode.Game.Renders;\nusing System.Net;\n\nnamespace MinerWars.AppCode.Game.Sessions\n{\n    partial class MyMultiplayerGameplay\n    {\n        #region CHAT\n        public void SendChatMessageToTeam(string message, MyMwcObjectBuilder_FactionEnum? senderFaction)\n        {\n            SendChatMessage(message, senderFaction);\n        }\n\n        public void SendChatMessage(string message)\n        {\n            SendChatMessage(message, null);\n        }\n\n        private void SendChatMessage(string message, MyMwcObjectBuilder_FactionEnum? senderFaction)\n        {\n            MyEventChat msg = new MyEventChat();\n            msg.Message = message;\n            if (senderFaction.HasValue)\n            {\n                Peers.SendToTeam(ref msg, senderFaction.Value, NetDeliveryMethod.ReliableUnordered);\n            }\n            else\n            {\n                Peers.SendToAll(ref msg, NetDeliveryMethod.ReliableUnordered);\n            }\n        }\n\n        void OnChatMessage(ref MyEventChat msg)\n        {\n            var player = (MyPlayerRemote)msg.SenderConnection.Tag;\n            if (player != null)\n            {\n                MyGuiScreenGamePlay.Static.AddChatMessage(player.UserId, msg.Message);\n            }\n        }\n        #endregion\n\n        #region STATS\n        public void UpdateStats()\n        {\n            MyEventStatsUpdate msg = new MyEventStatsUpdate();\n            msg.StatsBuilder = PlayerStatistics.GetObjectBuilder();\n            Peers.SendToAll(ref msg, NetDeliveryMethod.Unreliable);\n        }\n\n        void OnStatsUpdate(ref MyEventStatsUpdate msg)\n        {\n            MyPlayerRemote sender = (MyPlayerRemote)msg.SenderConnection.Tag;\n            if (sender != null)\n            {\n                sender.Statistics = new MyPlayerStatistics();\n                sender.Statistics.Init(msg.StatsBuilder);\n            }\n        }\n        #endregion\n\n        #region FACTION\n        public void SendFaction(MyMwcObjectBuilder_FactionEnum faction)\n        {\n            Log(\"Set faction: \" + MyFactionConstants.GetFactionProperties(faction).Name);\n            var factionMsg = new MyEventSetFaction();\n            factionMsg.Faction = faction;\n            Peers.SendToAll(ref factionMsg, NetDeliveryMethod.ReliableOrdered);\n        }\n\n        public static void OnSetFaction(ref MyEventSetFaction msg)\n        {\n            Log(\"On set faction for : \" + msg.SenderConnection.GetPlayerName() + \", faction: \" + MyFactionConstants.GetFactionProperties(msg.Faction).Name);\n\n            // Change only player faction, his ship can't change faction until respawn\n            var player = (MyPlayerRemote)msg.SenderConnection.Tag;\n            player.Faction = msg.Faction;\n\n            if (IsStory())\n            {\n                MySession.Static.Player.Faction = msg.Faction;\n            }\n        }\n\n        public void RequestFaction(MyMwcObjectBuilder_FactionEnum preferredFaction)\n        {\n            Log(\"Choose faction\");\n\n            var msg = new MyEventChooseFaction();\n            msg.PreferredFaction = preferredFaction;\n            Peers.SendHost(ref msg);\n        }\n\n        private void OnChooseFaction(ref MyEventChooseFaction msg)\n        {\n            var response = new MyEventChooseFactionResponse();\n            response.AssignedFaction = ChooseFaction(msg.PreferredFaction);\n\n            Log(\"On choose faction for: \" + msg.SenderConnection.GetPlayerName() + \", chosen faction: \" + MyFactionConstants.GetFactionProperties(response.AssignedFaction).Name);\n\n            Peers.NetworkClient.Send(ref response, msg.SenderConnection, NetDeliveryMethod.ReliableOrdered, 0);\n        }\n\n        private void OnChooseFactionResponse(ref MyEventChooseFactionResponse msg)\n        {\n            Log(\"On choose faction response, faction: \" + MyFactionConstants.GetFactionProperties(msg.AssignedFaction).Name);\n\n            //            if (MySession.Static.Player.Faction != msg.AssignedFaction)\n            {\n                MySession.Static.Player.Faction = msg.AssignedFaction;\n                SendFaction(msg.AssignedFaction);\n            }\n        }\n        #endregion\n\n        #region NOTIFICATIONS\n        void OnNotify(ref MyEventNotification msg)\n        {\n            var handler = OnNotification;\n            if (handler != null)\n            {\n                handler(msg.Type, (MyTextsWrapperEnum)msg.Text, new object[] { msg.Arg0, msg.Arg1, msg.Arg2, msg.Arg3 });\n            }\n        }\n\n        public void SendNotification(MyNotificationType type, MyTextsWrapperEnum text, string arg0 = null, string arg1 = null, string arg2 = null, string arg3 = null)\n        {\n            var msg = new MyEventNotification();\n            msg.Text = (int)text;\n            msg.Type = type;\n            msg.Arg0 = arg0;\n            msg.Arg1 = arg1;\n            msg.Arg2 = arg2;\n            msg.Arg3 = arg3;\n            Peers.SendToAll(ref msg, NetDeliveryMethod.ReliableOrdered);\n        }\n        #endregion\n\n        #region CUT_OUT\n        public void CutOut(MyVoxelMap voxelMap, ref BoundingSphere cutOutSphere)\n        {\n            Debug.Assert(voxelMap.EntityId.HasValue);\n\n            var msg = new MyEventCutOut();\n            msg.Position = cutOutSphere.Center;\n            msg.Radius = cutOutSphere.Radius;\n            msg.VoxelMapEntityId = voxelMap.EntityId.Value.NumericValue;\n\n            Peers.SendToAll(ref msg, NetDeliveryMethod.ReliableOrdered, 0);\n        }\n\n        void OnCutOut(ref MyEventCutOut msg)\n        {\n            MyVoxelMap voxelMap;\n            if (MyEntities.TryGetEntityById<MyVoxelMap>(msg.VoxelMapEntityId.ToEntityId(), out voxelMap))\n            {\n                var sphere = new BoundingSphere(msg.Position, msg.Radius);\n\n                //remove decals\n                MyDecals.HideTrianglesAfterExplosion(voxelMap, ref sphere);\n\n                //cut off \n                MyVoxelGenerator.CutOutSphereFast(voxelMap, sphere);\n            }\n        }\n        #endregion\n\n        #region FLAGS\n        public void UpdateFlags(MyEntity entity, MyFlagsEnum flag, bool param = false)\n        {\n            Debug.Assert(entity.EntityId.HasValue, \"Entity ID must have value!\");\n            LogDevelop(\"UPDATE FLAGS\");\n\n            if (!entity.EntityId.HasValue) return; // Nothing to report\n\n            var msg = new MyEventFlags();\n            msg.Flag = flag;\n            msg.EntityId = entity.EntityId.Value.NumericValue;\n            msg.Param = param;\n\n            if (IsHost)\n            {\n                Peers.SendToAll(ref msg, NetDeliveryMethod.ReliableOrdered, 0);\n            }\n            else\n            {\n                Peers.SendHost(ref msg);\n            }\n        }\n\n        void OnUpdateFlags(ref MyEventFlags msg)\n        {\n            LogDevelop(\"ON FLAGS\");\n\n            MyEntity entity;\n            if (MyEntities.TryGetEntityById(msg.EntityId.ToEntityId(), out entity))\n            {\n                var old = entity.IsDummy;\n                entity.IsDummy = true;\n                ProcessFlag(entity, msg.Flag, msg.Param);\n                entity.IsDummy = old;\n            }\n\n            if (IsHost)\n            {\n                Peers.SendToAll(ref msg, NetDeliveryMethod.ReliableOrdered, 0);\n            }\n        }\n\n        void ProcessFlag(MyEntity entity, MyFlagsEnum flag, bool param)\n        {\n            switch (flag)\n            {\n                case MyFlagsEnum.ENABLE:\n                    entity.Enabled = true;\n                    break;\n\n                case MyFlagsEnum.DISABLE:\n                    entity.Enabled = false;\n                    break;\n\n                case MyFlagsEnum.HIDE:\n                    entity.Activate(false, param);\n                    break;\n\n                case MyFlagsEnum.UNHIDE:\n                    entity.Activate(true, param);\n                    break;\n\n                case MyFlagsEnum.PARK_SHIP:\n                    {\n                        var ship = entity as MySmallShip;\n                        if (ship != null)\n                        {\n                            ship.SetParked(param);\n                        }\n                    }\n                    break;\n\n                case MyFlagsEnum.CLOSE:\n                    MyScriptWrapper.CloseEntity(entity);\n                    break;\n\n                case MyFlagsEnum.PARTICLE:\n                    MyScriptWrapper.SetParticleEffect(entity, param);\n                    break;\n\n                case MyFlagsEnum.NUCLEAR_EXPLOSION:\n                    MyScriptWrapper.MakeNuclearExplosion(entity);\n                    break;\n\n                case MyFlagsEnum.INDESTRUCTIBLE:\n                    entity.IsDestructible = false;\n                    break;\n\n                case MyFlagsEnum.DESTRUCTIBLE:\n                    entity.IsDestructible = true;\n                    break;\n\n                case MyFlagsEnum.PREPARE_MOVE:\n                    MyScriptWrapper.PrepareMotherShipForMove(entity);\n                    break;\n\n                case MyFlagsEnum.RETURN_FROM_MOVE:\n                    MyScriptWrapper.ReturnMotherShipFromMove(entity);\n                    break;\n\n                default:\n                    Debug.Fail(\"Unknown flag\");\n                    break;\n            }\n        }\n        #endregion\n\n        #region NewEntity\n        public void NewEntity(MyMwcObjectBuilder_Base objectBuilder, Matrix matrix)\n        {\n            Debug.Assert(objectBuilder.EntityId.HasValue, \"EntityId must be set\");\n\n            var msg = new MyEventNewEntity();\n            msg.ObjectBuilder = objectBuilder;\n            msg.Position = new MyMwcPositionAndOrientation(matrix);\n            Peers.SendToAll(ref msg, NetDeliveryMethod.ReliableOrdered, 0, DEFAULT_LARGE_MESSAGE_SIZE);\n        }\n\n        void OnNewEntity(ref MyEventNewEntity msg)\n        {\n            var entityId = msg.ObjectBuilder.EntityId.ToEntityId();\n            if (entityId.HasValue && MyEntities.GetEntityByIdOrNull(entityId.Value) != null)\n            {\n                return;\n            }\n\n            var entity = MyEntities.CreateFromObjectBuilderAndAdd(null, msg.ObjectBuilder, msg.Position.GetMatrix());\n            HookEntity(entity);\n        }\n        #endregion\n\n        #region MISSION_VARS\n        public void UpdateMissionVars()\n        {\n            if (MyMissions.ActiveMission != null)\n            {\n                foreach (var objective in MyMissions.ActiveMission.ActiveObjectives)\n                {\n                    // Objective timer, update once per 3s\n                    var msg = new MyEventMissionUpdateVars();\n                    msg.ElapsedTime = (int)objective.MissionTimer.GetElapsedTime().TotalMilliseconds;\n                    msg.MissionId = (int)MyMissions.ActiveMission.ID;\n                    Peers.SendToAll(ref msg, Multiplayer.MyUpdateTypeId.Mission, (uint)objective.ID, 0.33f, NetDeliveryMethod.ReliableOrdered);\n                }\n\n                // Mission timer, update once per 10s\n                var msgMission = new MyEventMissionUpdateVars();\n                msgMission.ElapsedTime = (int)MyMissions.ActiveMission.MissionTimer.GetElapsedTime().TotalMilliseconds;\n                msgMission.MissionId = (int)MyMissions.ActiveMission.ID;\n                Peers.SendToAll(ref msgMission, Multiplayer.MyUpdateTypeId.Mission, (uint)MyMissions.ActiveMission.ID, 0.1f, NetDeliveryMethod.ReliableOrdered);\n            }\n        }\n\n        void OnMissionUpdateVars(ref MyEventMissionUpdateVars msg)\n        {\n            var missionId = (MyMissionID)msg.MissionId;\n            if (!MyMwcEnums.IsValidValue<MyMissionID>(missionId))\n            {\n                Alert(\"Invalid mission id!\", msg.SenderEndpoint, msg.EventType);\n                return;\n            }\n\n            var mission = MyMissions.GetMissionByID((MyMissionID)msg.MissionId);\n            mission.MissionTimer.SetElapsedTime(TimeSpan.FromMilliseconds(msg.ElapsedTime));\n        }\n        #endregion\n\n        #region COUNTDOWN\n        public void SendCountdown(TimeSpan countdown, bool forceSend = false)\n        {\n            MyEventCountdown msg = new MyEventCountdown();\n            msg.Timespan = countdown;\n\n            if (forceSend)\n            {\n                Peers.SendToAll(ref msg, NetDeliveryMethod.ReliableOrdered);\n            }\n            else\n            {\n                Peers.SendToAll(ref msg, Multiplayer.MyUpdateTypeId.MissionTimer, 0, 1.2f, NetDeliveryMethod.ReliableOrdered);\n            }\n        }\n\n        MyHudNotification.MyNotification m_countdownNotification;\n\n        void OnCountdown(ref MyEventCountdown msg)\n        {\n            ClearCountdownNotification();\n            if (msg.Timespan.Ticks > 0)\n            {\n                m_countdownNotification = new MyHudNotification.MyNotification(MyTextsWrapperEnum.Countdown, MyGuiManager.GetFontMinerWarsBlue());\n                m_countdownNotification.SetTextFormatArguments(new object[] { String.Format(\"{0:00}\", msg.Timespan.Minutes) + \":\" + String.Format(\"{0:00}\", msg.Timespan.Seconds) });\n                MyHudNotification.AddNotification(m_countdownNotification);\n            }\n        }\n\n        void ClearCountdownNotification()\n        {\n            if (m_countdownNotification != null)\n            {\n                m_countdownNotification.Disappear();\n                m_countdownNotification = null;\n            }\n        }\n        #endregion\n\n        #region FRIENDLY_FIRE\n\n        public void FriendlyFire(MyFriendlyFireEnum type)\n        {\n            var msg = new MyEventFriendlyFire();\n            msg.FriendlyFireType = type;\n\n            Peers.SendToAll(ref msg, NetDeliveryMethod.ReliableOrdered, 0);\n        }\n\n        void OnFriendlyFire(ref MyEventFriendlyFire msg)\n        {\n            switch(msg.FriendlyFireType)\n            {\n                case MyFriendlyFireEnum.AGGRO:\n                    MyFriendlyFire.MakeEnemy(MySession.Static.Player.Faction);\n                    MyFriendlyFire.StartGameoverTimer();\n                    break;\n\n                case MyFriendlyFireEnum.GAME_FAILED:\n                    MyFriendlyFire.Fail();\n                    break;\n\n                default:\n                    Alert(\"Unknown friendly fire type\", msg.SenderEndpoint, msg.EventType);\n                    break;\n            }\n        }\n\n        #endregion\n\n        #region EVENTS\n\n        public void SendEvent(Vector3 position, MyGlobalEventEnum eventType, int seed)\n        {\n            SendEvent(position, eventType, seed, Vector3.Up, Vector3.Forward);\n        }\n\n        public void SendEvent(Vector3 position, MyGlobalEventEnum eventType, int seed, Vector3 up, Vector3 forward)\n        {\n            var msg = new MyEventEvent();\n            msg.Position = new MyMwcPositionAndOrientation(position, forward, up);\n            msg.EventTypeEnum = (int)eventType;\n            msg.Seed = seed;\n\n            Peers.SendToAll(ref msg, NetDeliveryMethod.ReliableOrdered);\n        }\n\n        void OnEvent(ref MyEventEvent msg)\n        {\n            var eventType = (MyGlobalEventEnum)msg.EventTypeEnum;\n            if (!MyMwcEnums.IsValidValue(eventType))\n            {\n                Alert(\"Invalid global event type\", msg.SenderEndpoint, msg.EventType);\n            }\n\n            // TODO: When required, add position and seed\n            MyGlobalEvents.StartGlobalEvent(eventType);\n        }\n\n        #endregion\n\n        #region GLOBAL_FLAGS\n        public void SendGlobalFlag(MyGlobalFlagsEnum eventFlag)\n        {\n            var msg = new MyEventGlobalFlag();\n            msg.Flag = eventFlag;\n\n            Peers.SendToAll(ref msg, NetDeliveryMethod.ReliableOrdered);\n        }\n\n        private void OnGlobalFlag(ref MyEventGlobalFlag msg)\n        {\n            switch(msg.Flag)\n            {\n                case MyGlobalFlagsEnum.REGENERATE_WAYPOINTS:\n                    MyScriptWrapper.RegenerateWaypointGraph();\n                    break;\n\n                case MyGlobalFlagsEnum.REQUEST_INFO:\n                    if(MySession.Static != null && MySession.Static.Player.Faction != MyMwcObjectBuilder_FactionEnum.None)\n                    {\n                        SendFaction(MySession.Static.Player.Faction);\n                        UpdateStats();\n                    }\n                    break;\n\n                default:\n                    Alert(\"Unknown global flag\", msg.SenderEndpoint, msg.EventType);\n                    break;\n            }\n        }\n        #endregion\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Sessions/Multiplayer/MyMultiplayerGameplay.Scripts.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Entities.Weapons;\nusing System.Diagnostics;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.CommonLIB.AppCode.Networking.Multiplayer;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing Lidgren.Network;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWarsMath;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.AppCode.Game.HUD;\nusing MinerWars.AppCode.Game.World;\nusing MinerWars.AppCode.Game.Gameplay;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Decals;\nusing MinerWars.AppCode.Game.Voxels;\nusing MinerWars.AppCode.Game.Missions;\nusing MinerWars.AppCode.Game.Explosions;\n\nnamespace MinerWars.AppCode.Game.Sessions\n{\n    partial class MyMultiplayerGameplay\n    {\n        public void AddExplosion(Vector3 position, MyExplosionTypeEnum explosionType, float damage, float radius, bool forceDebris, bool createDecals)\n        {\n            var msg = new MyEventAddExplosion();\n            msg.CreateDecals = createDecals;\n            msg.ForceDebris = forceDebris;\n            msg.Damage = damage;\n            msg.Position = position;\n            msg.EntityId = null;\n            msg.ExplosionType = (byte)explosionType;\n            msg.Radius = radius;\n            Peers.SendToAll(ref msg, NetDeliveryMethod.ReliableOrdered);\n        }\n\n        public void AddExplosion(MyEntity entity, MyExplosionTypeEnum explosionType, float damage, float radius, bool forceDebris, bool createDecals, MyParticleEffectsIDEnum? particleIDOverride = null)\n        {\n            Debug.Assert(entity != null && entity.EntityId.HasValue);\n\n            var msg = new MyEventAddExplosion();\n            msg.Damage = damage;\n            msg.EntityId = entity.EntityId.Value.NumericValue;\n            msg.ExplosionType = (byte)explosionType;\n            msg.Radius = radius;\n            msg.ParticleIDOverride = (int?)particleIDOverride;\n            msg.CreateDecals = createDecals;\n            msg.ForceDebris = forceDebris;\n\n            Peers.SendToAll(ref msg, NetDeliveryMethod.ReliableOrdered);\n        }\n\n        void OnAddExplosion(ref MyEventAddExplosion msg)\n        {\n            if (!MyMwcEnums.IsValidValue(msg.ExplosionFlags))\n            {\n                Alert(\"Invalid explosion\", msg.SenderEndpoint, msg.EventType);\n                return;\n            }\n\n            MyEntity entity;\n            if (msg.EntityId.HasValue && MyEntities.TryGetEntityById(msg.EntityId.Value.ToEntityId(), out entity))\n            {\n                MyScriptWrapper.AddExplosion(entity, (MyExplosionTypeEnum)msg.ExplosionType, msg.Damage, msg.Radius, msg.ForceDebris, msg.CreateDecals, (MyParticleEffectsIDEnum?)msg.ParticleIDOverride);\n            }\n            else if (msg.Position.HasValue)\n            {\n                MyScriptWrapper.AddExplosion(msg.Position.Value, (MyExplosionTypeEnum)msg.ExplosionType, msg.Radius, msg.Damage, msg.ForceDebris, msg.CreateDecals);\n            }\n            else\n            {\n                Alert(\"Invalid explosion\", msg.SenderEndpoint, msg.EventType);\n            }\n        }\n\n        public void UpdateDummyFlags(MyDummyPoint dummyPoint)\n        {\n            Debug.Assert(dummyPoint.EntityId.HasValue);\n\n            var msg = new MyEventDummyFlags();\n            msg.Flags = dummyPoint.DummyFlags;\n            msg.EntityId = dummyPoint.EntityId.Value.NumericValue;\n        }\n\n        void OnUpdateDummyFlags(ref MyEventDummyFlags msg)\n        {\n            MyDummyPoint dummy;\n            if (MyEntities.TryGetEntityById<MyDummyPoint>(msg.EntityId.ToEntityId(), out dummy))\n            {\n                dummy.DummyFlags = msg.Flags;\n            }\n            else\n            {\n                Alert(\"Update dummy flags, but no dummy found\", msg.SenderEndpoint, msg.EventType);\n            }\n        }\n\n        public void AddVoxelHand(uint voxelMapId, uint entityId, float radius, MyMwcVoxelHandModeTypeEnum handMode, MyMwcVoxelMaterialsEnum? material)\n        {\n            var msg = new MyEventAddVoxelHand();\n            msg.EntityId = entityId;\n            msg.Radius = radius;\n            msg.HandMode = handMode;\n            msg.VoxelMaterial = material;\n            msg.VoxelMapEntityId = voxelMapId;\n\n            Peers.SendToAll(ref msg, NetDeliveryMethod.ReliableOrdered, 0);\n        }\n\n        void OnAddVoxelHand(ref MyEventAddVoxelHand msg)\n        {\n            MyScriptWrapper.AddVoxelHand(msg.VoxelMapEntityId, msg.EntityId, msg.Radius, msg.VoxelMaterial, msg.HandMode);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Sessions/Multiplayer/MyMultiplayerGameplay.SmallShip.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Entities.Weapons;\nusing System.Diagnostics;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.CommonLIB.AppCode.Networking.Multiplayer;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing Lidgren.Network;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWarsMath;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.AppCode.Game.HUD;\nusing MinerWars.AppCode.Game.World;\nusing MinerWars.AppCode.Game.Gameplay;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Physics;\nusing SysUtils;\nusing KeenSoftwareHouse.Library.Trace;\nusing MinerWars.AppCode.Game.Entities.Weapons.Ammo;\nusing MinerWars.AppCode.Game.Inventory;\nusing MinerWars.AppCode.Game.Missions;\nusing MinerWars.AppCode.Game.Entities.WayPoints;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Cockpit;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Entities.SubObjects;\nusing MinerWars.AppCode.Game.World.Global;\n\nnamespace MinerWars.AppCode.Game.Sessions\n{\n    partial class MyMultiplayerGameplay\n    {\n        static Dictionary<int, List<MyMwcObjectBuilder_SmallShip_TypesEnum>> m_factionShips;\n\n        int m_respawnTime;\n        DieHandler m_onEntityDie;\n\n        Action<MySmallShip> m_onConfigChanged;\n        Action<MyShip> m_onInventoryChanged;\n        DateTime m_lastPositionUpdate;\n        bool m_positionDirty;\n\n        MyMwcObjectBuilder_ShipConfig m_lastConfig;\n        List<MyMwcObjectBuilder_AssignmentOfAmmo> m_lastAmmoAssignment;\n\n        MyCameraAttachedToEnum m_lastCamera = MyCameraAttachedToEnum.PlayerMinerShip;\n\n        static void InitFactionShipTypes()\n        {\n            m_factionShips = new Dictionary<int, List<MyMwcObjectBuilder_SmallShip_TypesEnum>>();\n            m_factionShips[(int)MyMwcObjectBuilder_FactionEnum.Euroamerican] = new List<MyMwcObjectBuilder_SmallShip_TypesEnum>()\n            {\n                MyMwcObjectBuilder_SmallShip_TypesEnum.HAMMER,\n                MyMwcObjectBuilder_SmallShip_TypesEnum.LIBERATOR,\n                MyMwcObjectBuilder_SmallShip_TypesEnum.GETTYSBURG,\n                MyMwcObjectBuilder_SmallShip_TypesEnum.VIRGINIA,\n                MyMwcObjectBuilder_SmallShip_TypesEnum.TRACER,\n            };\n\n            m_factionShips[(int)MyMwcObjectBuilder_FactionEnum.Russian] = new List<MyMwcObjectBuilder_SmallShip_TypesEnum>()\n            {\n                MyMwcObjectBuilder_SmallShip_TypesEnum.ORG,\n                MyMwcObjectBuilder_SmallShip_TypesEnum.YG,\n                MyMwcObjectBuilder_SmallShip_TypesEnum.LEVIATHAN,\n                MyMwcObjectBuilder_SmallShip_TypesEnum.STEELHEAD,\n                MyMwcObjectBuilder_SmallShip_TypesEnum.STANISLAV,\n            };\n            m_factionShips[(int)MyMwcObjectBuilder_FactionEnum.Russian_KGB] = m_factionShips[(int)MyMwcObjectBuilder_FactionEnum.Russian];\n            m_factionShips[(int)MyMwcObjectBuilder_FactionEnum.China] = m_factionShips[(int)MyMwcObjectBuilder_FactionEnum.Russian];\n\n            m_factionShips[(int)MyMwcObjectBuilder_FactionEnum.FourthReich] = new List<MyMwcObjectBuilder_SmallShip_TypesEnum>()\n            {\n                MyMwcObjectBuilder_SmallShip_TypesEnum.FEDER,\n                MyMwcObjectBuilder_SmallShip_TypesEnum.KAMMLER,\n                MyMwcObjectBuilder_SmallShip_TypesEnum.BAER,\n                MyMwcObjectBuilder_SmallShip_TypesEnum.HEWER,\n                MyMwcObjectBuilder_SmallShip_TypesEnum.GREISER,\n            };\n\n            m_factionShips[(int)MyMwcObjectBuilder_FactionEnum.Omnicorp] = new List<MyMwcObjectBuilder_SmallShip_TypesEnum>()\n            {\n                MyMwcObjectBuilder_SmallShip_TypesEnum.HAWK,\n                MyMwcObjectBuilder_SmallShip_TypesEnum.PHOENIX,\n                MyMwcObjectBuilder_SmallShip_TypesEnum.ENFORCER,\n            };\n\n            m_factionShips[(int)MyMwcObjectBuilder_FactionEnum.Templars] = new List<MyMwcObjectBuilder_SmallShip_TypesEnum>()\n            {\n                MyMwcObjectBuilder_SmallShip_TypesEnum.RAZORCLAW,\n            };\n\n            m_factionShips[(int)MyMwcObjectBuilder_FactionEnum.Freelancers] = new List<MyMwcObjectBuilder_SmallShip_TypesEnum>()\n            {\n                MyMwcObjectBuilder_SmallShip_TypesEnum.DOON,\n                MyMwcObjectBuilder_SmallShip_TypesEnum.HAMMER,\n                MyMwcObjectBuilder_SmallShip_TypesEnum.HAWK,\n                MyMwcObjectBuilder_SmallShip_TypesEnum.JACKNIFE,\n                MyMwcObjectBuilder_SmallShip_TypesEnum.LEVIATHAN,\n                MyMwcObjectBuilder_SmallShip_TypesEnum.LIBERATOR,                \n                MyMwcObjectBuilder_SmallShip_TypesEnum.ENFORCER,\n                MyMwcObjectBuilder_SmallShip_TypesEnum.KAMMLER,\n                MyMwcObjectBuilder_SmallShip_TypesEnum.GETTYSBURG,\n                MyMwcObjectBuilder_SmallShip_TypesEnum.VIRGINIA,\n                MyMwcObjectBuilder_SmallShip_TypesEnum.BAER,\n                MyMwcObjectBuilder_SmallShip_TypesEnum.HEWER,\n                MyMwcObjectBuilder_SmallShip_TypesEnum.RAZORCLAW,\n                MyMwcObjectBuilder_SmallShip_TypesEnum.GREISER,\n                MyMwcObjectBuilder_SmallShip_TypesEnum.TRACER,\n                MyMwcObjectBuilder_SmallShip_TypesEnum.ORG,\n                MyMwcObjectBuilder_SmallShip_TypesEnum.PHOENIX,\n                MyMwcObjectBuilder_SmallShip_TypesEnum.ROCKHEATER,\n                MyMwcObjectBuilder_SmallShip_TypesEnum.STANISLAV,\n                MyMwcObjectBuilder_SmallShip_TypesEnum.STEELHEAD,\n                MyMwcObjectBuilder_SmallShip_TypesEnum.FEDER,\n                MyMwcObjectBuilder_SmallShip_TypesEnum.YG,\n            };\n\n            // Default ships for all other factions\n            m_factionShips[(int)MyMwcObjectBuilder_FactionEnum.None] = new List<MyMwcObjectBuilder_SmallShip_TypesEnum>()\n            {\n                MyMwcObjectBuilder_SmallShip_TypesEnum.JACKNIFE,\n                MyMwcObjectBuilder_SmallShip_TypesEnum.DOON,\n                MyMwcObjectBuilder_SmallShip_TypesEnum.ROCKHEATER,\n            };\n        }\n\n        static MyMwcObjectBuilder_SmallShip_TypesEnum GetFactionShip(MyMwcObjectBuilder_FactionEnum faction)\n        {\n            Debug.Assert(m_factionShips.ContainsKey((int)MyMwcObjectBuilder_FactionEnum.None));\n            List<MyMwcObjectBuilder_SmallShip_TypesEnum> shipList;\n            if (!m_factionShips.TryGetValue((int)faction, out shipList))\n            {\n                shipList = m_factionShips[(int)MyMwcObjectBuilder_FactionEnum.None];\n            }\n            Debug.Assert(shipList.Count > 0);\n            return MyMwcUtils.GetRandomItem(shipList);\n        }\n\n        void TestRespawn()\n        {\n            // Can't respawn until game is ready\n            if (!MyMinerGame.IsGameReady)\n            {\n                return;\n            }\n\n            if (!IsStory() && MySession.PlayerShip.Faction == MyMwcObjectBuilder_FactionEnum.None)\n            {\n                // Faction not assigned, wait for set faction event\n                return;\n            }\n\n            if (MyMinerGame.TotalGamePlayTimeInMilliseconds > m_respawnTime)\n            {\n                Respawn();\n                m_respawnTime = Int32.MaxValue;\n            }\n        }\n\n        /// <summary>\n        /// \n        /// </summary>\n        /// <returns>Return false when all players are dead</returns>\n        public bool GetSafeRespawnPositionNearPlayer(MyMwcObjectBuilder_SmallShip_TypesEnum shipType, out MyMwcPositionAndOrientation positionAndOrientation)\n        {\n            foreach (var player in Peers.Players)\n            {\n                if (player.Ship != null && !player.Ship.IsDead())\n                {\n                    Vector3 position;\n                    if (GetSafeRespawnPositionNearEntity(shipType, player.Ship, out position))\n                    {\n                        positionAndOrientation = new MyMwcPositionAndOrientation(position, player.Ship.GetForward(), player.Ship.GetUp());\n                        return true;\n                    }\n                    else\n                    {\n                        // Inside ship\n                        positionAndOrientation = new MyMwcPositionAndOrientation(player.Ship.GetPosition(), player.Ship.GetForward(), player.Ship.GetUp());\n                        return true;\n                    }\n                }\n            }\n\n            positionAndOrientation = default(MyMwcPositionAndOrientation);\n            return false;\n        }\n\n        private bool GetSafeRespawnPositionNearEntity(MyMwcObjectBuilder_SmallShip_TypesEnum shipType, MyEntity entity, out Vector3 position)\n        {\n            float dist = entity.WorldVolume.Radius * 2;\n\n            for (int c = 15; c-- != 0; )\n            {\n                Vector3 randomPointInSphere = MyMwcUtils.GetRandomVector3Normalized() * MyMwcUtils.GetRandomFloat(0, 1) * dist; // Random point in sphere\n                Vector3 newTestPos = entity.GetPosition() + randomPointInSphere;\n\n                var shipRadius = MinerWars.AppCode.Game.Models.MyModels.GetModelOnlyData(MyShipTypeConstants.GetShipTypeProperties(shipType).Visual.ModelLod0Enum).BoundingSphere.Radius;\n\n                BoundingSphere bsphere = new BoundingSphere(newTestPos, shipRadius);\n                MyEntity col = MyEntities.GetIntersectionWithSphere(ref bsphere);\n\n                MyLine line = new MyLine(entity.GetPosition(), newTestPos);\n\n                if (col == null && MyEntities.GetAnyIntersectionWithLine(ref line, entity, null, false, true, false, false) == null)\n                {\n                    position = newTestPos;\n                    return true;\n                }\n            }\n            position = default(Vector3);\n            return false;\n        }\n\n        public void Respawn(MyMwcObjectBuilder_SmallShip shipBuilder, Matrix respawnPosition)\n        {\n            Log(\"Respawn faction: \" + MyFactionConstants.GetFactionProperties(MySession.PlayerShip.Faction).Name);\n\n            int oldPriority = 0;\n\n            if (m_lastConfig == null && MySession.PlayerShip != null)\n            {\n                m_lastConfig = MySession.PlayerShip.Config.GetObjectBuilder();\n            }\n\n            if (MySession.PlayerShip != null)\n            {\n                oldPriority = MySession.PlayerShip.AIPriority;\n                if (MySession.PlayerShip.IsDummy || MySession.PlayerShip.IsExploded())\n                {\n                    MySession.PlayerShip.Activate(false, false);\n                    MySession.PlayerShip.MarkForClose();\n                    MySession.PlayerShip = null;\n                }\n            }\n\n            MySession.Static.Player.RestoreHealth();\n\n            // To proper respawn\n            shipBuilder.ShipHealthRatio = MathHelper.Clamp(shipBuilder.ShipHealthRatio, 0.2f, 1.0f);\n            shipBuilder.Oxygen = MathHelper.Clamp(shipBuilder.Oxygen, 100.0f, float.MaxValue);\n\n            //Debug.Assert(!shipBuilder.EntityId.HasValue);\n            var playership = (MySmallShip)MyEntities.CreateFromObjectBuilderAndAdd(MyClientServer.LoggedPlayer.GetDisplayName().ToString(), shipBuilder, respawnPosition);\n            playership.AIPriority = oldPriority; // Restore bot priority\n\n            if (IsSandBox())\n            {\n                if (m_lastConfig != null)\n                {\n                    playership.Config.Init(m_lastConfig);\n                }\n            }\n            else\n            {\n                if (MyGuiScreenGamePlay.Static.Checkpoint.PlayerObjectBuilder.ShipConfigObjectBuilder != null)\n                {\n                    playership.Config.Init(MyGuiScreenGamePlay.Static.Checkpoint.PlayerObjectBuilder.ShipConfigObjectBuilder);\n                }\n            }\n\n            playership.ConfigChanged += m_onConfigChanged;\n            playership.OnDie += m_onEntityDie;\n            playership.Activate(true);\n            MyCockpitGlassDecals.Clear();\n\n            var respawnMsg = new MyEventRespawn();\n            respawnMsg.EntityId = playership.EntityId.Value.NumericValue;\n            respawnMsg.Position = new MyMwcPositionAndOrientation(playership.WorldMatrix);\n            respawnMsg.Inventory = GetInventory(playership, true);\n            respawnMsg.ShipType = playership.ShipType;\n            respawnMsg.Faction = playership.Faction;\n\n            float ratio = (IsStory() && StoredShip != null) ? 0.2f : 1.0f;\n            playership.ArmorHealth = MathHelper.Clamp(playership.ArmorHealth, playership.MaxArmorHealth * ratio, playership.MaxArmorHealth);\n            playership.Fuel = MathHelper.Clamp(playership.Fuel, playership.MaxFuel * ratio, playership.MaxFuel);\n            playership.HealthRatio = MathHelper.Clamp(playership.HealthRatio, ratio, 1.0f);\n            playership.Oxygen = MathHelper.Clamp(playership.Oxygen, playership.MaxOxygen * ratio, playership.MaxOxygen);\n\n            MySession.Static.Player.RestoreHealth();\n            playership.PilotHealth = MySession.Static.Player.MaxHealth;\n\n            if (MyMultiplayerGameplay.IsSandBox())\n            {\n                MakeInventoryItemsNontradeable(playership);\n            }\n\n            if (m_lastAmmoAssignment != null)\n            {\n                playership.Weapons.AmmoAssignments.Init(m_lastAmmoAssignment);\n            }\n\n            // As last to prevent many changes when doing something\n            playership.InventoryChanged += m_onInventoryChanged;\n\n            LogDevelop(\"RESPAWN end\");\n            Peers.SendToAll(ref respawnMsg, NetDeliveryMethod.ReliableOrdered);\n        }\n\n        void Respawn()\n        {\n            Log(\"Respawn\");\n\n            MyGuiScreenGamePlay.Static.CameraAttachedTo = MySession.Is25DSector ? MyCameraAttachedToEnum.PlayerMinerShip_ThirdPersonDynamic : m_lastCamera;\n\n            Matrix respawnPosition = Matrix.Identity;\n\n            MyMwcObjectBuilder_SmallShip shipBuilder;\n\n            if (IsStory())\n            {\n                shipBuilder = StoredShip ?? MyGuiScreenGamePlay.Static.Checkpoint.PlayerObjectBuilder.ShipObjectBuilder;\n\n                MyMwcPositionAndOrientation positionAndOrientation;\n                if (GetSafeRespawnPositionNearPlayer(shipBuilder.ShipType, out positionAndOrientation))\n                {\n                    respawnPosition = positionAndOrientation.GetMatrix();\n                }\n                else // When return false, it means, no player alive\n                {\n                    MySession.Static.GameOver();\n                    return;\n                }\n            }\n            else\n            {\n                Debug.Assert(MySession.Static.Player.Faction != MyMwcObjectBuilder_FactionEnum.None, \"Invalid faction! Faction can't be NONE\");\n                shipBuilder = CreateDeathmatchShip(MySession.Static.Player.Faction);\n\n                List<MyDummyPoint> respawnPointList;\n\n                if (m_respawnPoints.TryGetValue((int)MySession.Static.Player.Faction, out respawnPointList) && respawnPointList.Count > 0)\n                {\n                    int index = MyMwcUtils.GetRandomInt(respawnPointList.Count);\n                    respawnPosition = respawnPointList[index].WorldMatrix;\n                }\n            }\n\n            Respawn(shipBuilder, respawnPosition);\n        }\n\n        private static void MakeInventoryItemsNontradeable(MySmallShip playership)\n        {\n            MyMwcObjectBuilder_SmallShip ship = (MyMwcObjectBuilder_SmallShip)playership.GetObjectBuilder(true);\n            if (ship.Engine != null)\n            {\n                ship.Engine.PersistentFlags |= MyPersistentEntityFlags.NotTradeable;\n            }\n            if (ship.Armor != null)\n            {\n                ship.Armor.PersistentFlags |= MyPersistentEntityFlags.NotTradeable;\n            }\n            foreach (var weapon in playership.Weapons.GetMountedWeaponsWithHarvesterAndDrill())\n            {\n                weapon.PersistentFlags |= MyPersistentEntityFlags.NotTradeable;\n                weapon.GetObjectBuilder(true).PersistentFlags |= MyPersistentEntityFlags.NotTradeable;\n            }\n            foreach (var item in playership.Inventory.GetInventoryItems())\n            {\n                item.GetInventoryItemObjectBuilder(false).PersistentFlags |= MyPersistentEntityFlags.NotTradeable;\n            }\n        }\n\n        public static void MakeInventoryItemsTradeable(MySmallShip playership)\n        {\n            MyMwcObjectBuilder_SmallShip ship = (MyMwcObjectBuilder_SmallShip)playership.GetObjectBuilder(true);\n            if (ship.Engine != null)\n            {\n                ship.Engine.PersistentFlags &= ~MyPersistentEntityFlags.NotTradeable;\n            }\n            if (ship.Armor != null)\n            {\n                ship.Armor.PersistentFlags &= ~MyPersistentEntityFlags.NotTradeable;\n            }\n            foreach (var weapon in playership.Weapons.GetMountedWeaponsWithHarvesterAndDrill())\n            {\n                weapon.PersistentFlags &= ~MyPersistentEntityFlags.NotTradeable;\n                weapon.GetObjectBuilder(true).PersistentFlags &= ~MyPersistentEntityFlags.NotTradeable;\n            }\n            foreach (var item in playership.Inventory.GetInventoryItems())\n            {\n                item.GetInventoryItemObjectBuilder(false).PersistentFlags &= ~MyPersistentEntityFlags.NotTradeable;\n            }\n        }\n\n\n        void Playership_InventoryChanged(MyShip ship)\n        {\n            UpdateInventory(ship, true);\n            m_savePlayer = true;\n        }\n\n        private void OnRespawn(ref MyEventRespawn msg)\n        {\n            var player = (MyPlayerRemote)msg.SenderConnection.Tag;\n            if (player != null)\n            {\n                player.Faction = msg.Faction;\n\n                MySmallShip playerShip;\n                MyEntityIdentifier.TryGetEntity<MySmallShip>(new MyEntityIdentifier(msg.EntityId), out playerShip);\n\n                // Close old player ship\n                if (player.Ship != null)\n                {\n                    player.Ship.MarkForClose();\n                    player.Ship = null;\n                }\n\n                // If ship exists\n                if (playerShip != null)\n                {\n                    Log(\"OnRespawn: \" + player.GetDisplayName().ToString() + \", ship exists, faction: \" + MyFactionConstants.GetFactionProperties(player.Faction).Name);\n\n                    player.Ship = playerShip;\n                    OnNewPlayerShip(player.Ship);\n                }\n                else\n                {\n                    Log(\"OnRespawn: \" + player.GetDisplayName().ToString() + \", new ship, faction: \" + MyFactionConstants.GetFactionProperties(player.Faction).Name);\n\n                    var ship = CreateShip(ChooseShip(player.Faction), player.Faction);\n                    ship.EntityId = msg.EntityId;\n                    ship.DisplayName = player.GetDisplayName().ToString();\n                    ship.Inventory = msg.Inventory;\n                    ship.ShipType = msg.ShipType;\n                    player.Ship = (MySmallShip)MyEntities.CreateFromObjectBuilderAndAdd(player.GetDisplayName().ToString(), ship, msg.Position.GetMatrix());\n                    OnNewPlayerShip(player.Ship);\n                }\n\n                // Don't save, when sending checkpoint to other players, ingame ships are added manually\n                player.Ship.Save = false;\n\n                // When I'm host, set AI priority for respawned player same as I have\n                if (IsStory() && IsHost)\n                {\n                    player.Ship.AIPriority = MySession.PlayerShip.AIPriority;\n                }\n\n                UpdateCoopTarget();\n            }\n            else\n            {\n                Log(\"ON RESPAWN, UNKNOWN PLAYER: \" + msg.SenderEndpoint.ToString());\n            }\n        }\n\n        private void OnNewPlayerShip(MySmallShip ship)\n        {\n            ship.Physics.GroupMask = MyGroupMask.Empty;\n            if (ship.Health > 0)\n            {\n                ship.IsDestructible = false;\n            }\n            ship.OnClose += m_playerShipClose;\n\n            if (IsStory())\n            {\n                MySession.PlayerFriends.Add(ship);\n            }\n        }\n\n        public void PilotDie(MySmallShip deadPilotEntity, MyEntity killer)\n        {\n            Debug.Assert(deadPilotEntity.EntityId.HasValue);\n\n            Log(\"Pilot died: \" + deadPilotEntity.DisplayName);\n\n            MyEventPilotDie msg = new MyEventPilotDie();\n            msg.EntityId = deadPilotEntity.EntityId.Value.NumericValue;\n            msg.KillerId = killer != null && killer.EntityId != null ? killer.EntityId.Value.PlayerId : (byte?)null;\n            m_respawnTime = MyMinerGame.TotalGamePlayTimeInMilliseconds + (int)m_multiplayerConfig.RespawnTime.TotalMilliseconds;\n            Peers.SendToAll(ref msg, NetDeliveryMethod.ReliableOrdered);\n\n            if (deadPilotEntity == MySession.PlayerShip)\n            {\n                MyHudWarnings.Remove(deadPilotEntity);\n                OnMeDied(msg.KillerId);\n            }\n\n            if (!deadPilotEntity.IsPilotDead())\n            {\n                deadPilotEntity.DisplayName = MyClientServer.LoggedPlayer.GetDisplayName() + \" (dead)\";\n            }\n            \n            deadPilotEntity.PilotHealth = 0;\n\n            // Send inventory on die to allow looting\n            if (deadPilotEntity is IMyInventory)\n            {\n                Inventory_OnInventoryContentChange(((IMyInventory)deadPilotEntity).Inventory, deadPilotEntity);\n            }\n\n            deadPilotEntity.InventoryChanged += new Action<MyShip>(s => Inventory_OnInventoryContentChange(s.Inventory, s));\n        }\n\n        public void OnPilotDie(ref MyEventPilotDie msg)\n        {\n            MyPlayerRemote sender = (MyPlayerRemote)msg.SenderConnection.Tag;\n\n            MyEntity deadPilotEntity;\n            if (MyEntities.TryGetEntityById(msg.EntityId.ToEntityId(), out deadPilotEntity) && deadPilotEntity is MySmallShip)\n            {\n                Log(\"On pilot died: \" + deadPilotEntity.DisplayName);\n\n                var ship = (MySmallShip)deadPilotEntity;\n\n                if (!ship.IsPilotDead())\n                {\n                    ship.DisplayName += \" (dead)\";\n                }\n\n                ship.PilotHealth = 0;\n\n                ship.InventoryChanged += new Action<MyShip>(s => Inventory_OnInventoryContentChange(s.Inventory, s));\n\n                if (sender.Ship == deadPilotEntity)\n                {\n                    OnPeerDied(sender, msg.KillerId);\n                }\n            }\n            else\n            {\n                Alert(\"Dead pilot entity not found\", msg.SenderEndpoint, msg.EventType);\n            }\n        }\n\n        public void Die(MyEntity deadEntity, MyEntity killer)\n        {\n            Debug.Assert(deadEntity != null && deadEntity.EntityId.HasValue);\n\n            Log(\"Died: \" + deadEntity.DisplayName);\n\n            var msg = new MyEventDie();\n            msg.EntityId = deadEntity.EntityId.Value.NumericValue;\n            msg.Position = new MyMwcPositionAndOrientation(deadEntity.WorldMatrix);\n            msg.KillerId = killer != null && killer.EntityId != null ? killer.EntityId.Value.PlayerId : (byte?)null;\n            Peers.SendToAll(ref msg, NetDeliveryMethod.ReliableOrdered);\n\n            deadEntity.OnDie -= m_onEntityDie;\n\n            if (deadEntity == MySession.PlayerShip)\n            {\n                OnMeDied(msg.KillerId);\n            }\n        }\n\n        void OnDie(ref MyEventDie msg)\n        {\n            MyPlayerRemote senderPlayer = (MyPlayerRemote)msg.SenderConnection.Tag;\n\n            MyEntity deadEntity;\n            if (MyEntities.TryGetEntityById(msg.EntityId.ToEntityId(), out deadEntity))\n            {\n                Log(\"On Die: \" + deadEntity.DisplayName);\n                deadEntity.IsDestructible = true;\n                deadEntity.Kill(null);\n\n                if (deadEntity == senderPlayer.Ship)\n                {\n                    OnPeerDied(senderPlayer, msg.KillerId);\n                }\n            }\n            else\n            {\n                Log(\"ON DIE, UNKNOWN ENTITY, \" + msg.SenderEndpoint.ToString() + \", ENTITY ID: \" + msg.EntityId);\n            }\n        }\n\n        void OnMeDied(byte? killerId)\n        {\n            if (IsStory())\n            {\n                // Player has same ship and inventory, with minimum of 20% armor, health, oxygen...\n                StoredShip = MySession.PlayerShip.GetObjectBuilder(false) as MyMwcObjectBuilder_SmallShip;\n                StoredShip.ClearEntityId();\n            }\n\n            m_lastConfig = MySession.PlayerShip.Config.GetObjectBuilder();\n            m_lastAmmoAssignment = MySession.PlayerShip.Weapons.AmmoAssignments.GetObjectBuilder();\n            m_lastCamera = MyGuiScreenGamePlay.Static.CameraAttachedTo;\n            if (m_lastCamera != MyCameraAttachedToEnum.PlayerMinerShip\n                && m_lastCamera != MyCameraAttachedToEnum.PlayerMinerShip_ThirdPersonDynamic\n                && m_lastCamera != MyCameraAttachedToEnum.PlayerMinerShip_ThirdPersonFollowing\n                && m_lastCamera != MyCameraAttachedToEnum.PlayerMinerShip_ThirdPersonStatic)\n            {\n                m_lastCamera = MyCameraAttachedToEnum.PlayerMinerShip;\n            }\n\n            PlayerStatistics.Deaths++;\n            UpdateStats();\n\n            DisplayDeathNotification(killerId);\n\n            // This is really SICK!\n            MyGuiManager.CloseIngameScreens();\n\n            m_respawnTime = MyMinerGame.TotalGamePlayTimeInMilliseconds + (int)m_multiplayerConfig.RespawnTime.TotalMilliseconds;\n            Log(\"DIE, respawn in: \" + m_multiplayerConfig.RespawnTime.TotalMilliseconds + \" ms\");\n        }\n\n        void OnPeerDied(MyPlayerRemote deadPlayer, byte? killerId)\n        {\n            deadPlayer.Ship.SetAfterburner(false);\n            deadPlayer.Ship = null;\n\n            if (IsHost)\n            {\n                ClearLocks(deadPlayer.PlayerId);\n            }\n\n            if (killerId == MyEntityIdentifier.CurrentPlayerId)\n            {\n                PlayerStatistics.PlayersKilled++;\n                UpdateStats();\n            }\n\n            DisplayKillNotification(deadPlayer, killerId);\n        }\n\n        void DisplayDeathNotification(byte? killerId)\n        {\n            MyPlayerRemote killerPlayer;\n            if (killerId.HasValue && Peers.TryGetPlayer(killerId.Value, out killerPlayer))\n            {\n                Notify(Localization.MyTextsWrapperEnum.MP_YouHaveBeenKilledByX, killerPlayer.GetDisplayName());\n            }\n            else if (killerId == MyEntityIdentifier.CurrentPlayerId)\n            {\n                // Until entity ids fixed\n                //Notify(Localization.MyTextsWrapperEnum.MP_YouHaveKilledYourself);\n                Notify(Localization.MyTextsWrapperEnum.MP_YouHaveBeenKilled);\n            }\n            else\n            {\n                Notify(Localization.MyTextsWrapperEnum.MP_YouHaveBeenKilled);\n            }\n        }\n\n        void DisplayKillNotification(MyPlayerRemote deadPlayer, byte? killerId)\n        {\n            MyPlayerRemote killer;\n\n            if (killerId == MyEntityIdentifier.CurrentPlayerId)\n            {\n                Notify(Localization.MyTextsWrapperEnum.MP_YouHaveKilledX, deadPlayer.GetDisplayName());\n            }\n            else if (killerId == deadPlayer.PlayerId)\n            {\n                // Until entity ids fixed\n                //Notify(Localization.MyTextsWrapperEnum.MP_XKilledHimself, deadPlayer.GetDisplayName());\n                Notify(Localization.MyTextsWrapperEnum.MP_XKilled, deadPlayer.GetDisplayName());\n            }\n            else if (killerId.HasValue && killerId != 0 && Peers.TryGetPlayer(killerId.Value, out killer))\n            {\n                Notify(Localization.MyTextsWrapperEnum.MP_XHasBeenKilledByY, deadPlayer.GetDisplayName(), killer.GetDisplayName());\n            }\n            else\n            {\n                Notify(Localization.MyTextsWrapperEnum.MP_XKilled, deadPlayer.GetDisplayName());\n            }\n        }\n\n        public void UpdatePosition(MyEntity entity, Matrix worldMatrix, Vector3 velocity, Vector3 acceleration)\n        {\n            Debug.Assert(entity != null);\n            Debug.Assert(!entity.Closed);\n\n            var posMsg = new MyEventUpdatePosition();\n            posMsg.EntityId = entity.EntityId.Value.NumericValue;\n            posMsg.Position = new MyMwcPositionAndOrientation(worldMatrix);\n            posMsg.Velocity = velocity;\n            posMsg.Acceleration = acceleration;\n            Peers.SendToAll(ref posMsg, entity.EntityId.Value, m_multiplayerConfig.PositionTickRateMax, NetDeliveryMethod.UnreliableSequenced, 1);\n        }\n\n        public void UpdatePosition(MyEntity entity)\n        {\n            Debug.Assert(entity != null);\n            Debug.Assert(!entity.Closed);\n\n            var posMsg = new MyEventUpdatePosition();\n            MyEntity.FillMessage(entity, ref posMsg);\n            Peers.SendToAll(ref posMsg, entity.EntityId.Value, m_multiplayerConfig.PositionTickRateMax, NetDeliveryMethod.UnreliableSequenced, 1);\n        }\n\n        void OnUpdatePosition(ref MyEventUpdatePosition msg)\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Update position\");\n            MyEntityIdentifier entityId = new MyEntityIdentifier(msg.EntityId);\n\n            if (!CheckSenderId(msg, msg.EntityId))\n            {\n                Alert(\"Player is updating entity which is not his\", msg.SenderEndpoint, MyEventEnum.UPDATE_POSITION);\n                return;\n            }\n\n            MyEntity entity;\n            if (MyEntities.TryGetEntityById(entityId, out entity))\n            {\n                entity.WorldMatrix = msg.Position.GetMatrix();\n                if (entity.Physics != null)\n                {\n                    entity.Physics.LinearVelocity = msg.Velocity;\n                    entity.Physics.LinearAcceleration = msg.Acceleration;\n                }\n                entity.Physics.AngularVelocity = Vector3.Zero;\n                //FixPlayerPosition(entity);\n            }\n            else\n            {\n                Alert(\"Entity to update not found\", msg.SenderEndpoint, MyEventEnum.UPDATE_POSITION);\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        public void UpdatePositionFast(MyEntity entity, Vector3 position, Vector3? up = null, Vector3? forward = null)\n        {\n            Debug.Assert(entity != null);\n            Debug.Assert(!entity.Closed);\n\n            var posMsg = new MyEventUpdatePositionFast();\n            posMsg.EntityId = entity.EntityId.Value.NumericValue;\n            posMsg.Position = position;\n            posMsg.Up = up;\n            posMsg.Forward = forward;\n            Peers.SendToAll(ref posMsg, NetDeliveryMethod.ReliableSequenced, 2);\n        }\n\n        void OnUpdatePositionFast(ref MyEventUpdatePositionFast msg)\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Update position fast\");\n            MyPlayerRemote player = (MyPlayerRemote)msg.SenderConnection.Tag;\n            MyEntityIdentifier entityId = new MyEntityIdentifier(msg.EntityId);\n\n            if (!CheckSenderId(msg, msg.EntityId))\n            {\n                Alert(\"Player is updating entity which is not his\", msg.SenderEndpoint, msg.EventType);\n                return;\n            }\n\n            MyEntity entity;\n            if (MyEntities.TryGetEntityById(entityId, out entity))\n            {\n                var m = entity.WorldMatrix;\n                m.Translation = msg.Position;\n                if (msg.Up != null)\n                    m.Up = msg.Up.Value;\n                if (msg.Forward != null)\n                    m.Forward = msg.Forward.Value;\n                entity.WorldMatrix = m;\n            }\n            else\n            {\n                Alert(\"Entity to update not found\", msg.SenderEndpoint, msg.EventType);\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        public void UpdateRotationFast(MyEntity entity, Vector3 rotation)\n        {\n            Debug.Assert(entity != null);\n            Debug.Assert(!entity.Closed);\n            Debug.Assert(entity.EntityId.HasValue);\n\n            var posMsg = new MyEventUpdateRotationFast();\n            posMsg.EntityId = entity.EntityId.Value.NumericValue;\n            posMsg.Rotation = rotation;\n            Peers.SendToAll(ref posMsg, entity.EntityId.Value, m_multiplayerConfig.RotationTickRate, NetDeliveryMethod.ReliableSequenced, 4);\n        }\n\n        void OnUpdateRotationFast(ref MyEventUpdateRotationFast msg)\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Update rotation fast\");\n            MyPlayerRemote player = (MyPlayerRemote)msg.SenderConnection.Tag;\n            MyEntityIdentifier entityId = new MyEntityIdentifier(msg.EntityId);\n\n            if (!CheckSenderId(msg, msg.EntityId))\n            {\n                Alert(\"Player is updating entity which is not his\", msg.SenderEndpoint, msg.EventType);\n                return;\n            }\n\n            MyEntity entity;\n            if (MyEntities.TryGetEntityById(entityId, out entity))\n            {\n                if (entity is MyPrefabLargeWeapon)\n                {\n                    var gun = ((MyPrefabLargeWeapon)entity).GetGun();\n                    gun.SetRotationAndElevation(msg.Rotation);\n                }\n            }\n            else\n            {\n                Alert(\"Entity to update not found\", msg.SenderEndpoint, msg.EventType);\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        /// <summary>\n        /// When other player sends position update, and is in collision with player ship,\n        /// player ship is moved away from collision (iteratively).\n        /// Physics definitelly needs to handle collisions properly (when 2 objects collide, move them away)\n        /// </summary>\n        void FixPlayerPosition(MyEntity collidingEntity)\n        {\n            MyEntities.CollisionsElements.Clear();\n            MyEntities.GetCollisionListForElement(collidingEntity.Physics.GetRBElementList()[0]);\n            foreach (var e in MyEntities.CollisionsElements)\n            {\n                var playerShip = ((MinerWars.AppCode.Game.Physics.MyPhysicsBody)e.GetRigidBody().m_UserData).Entity;\n                if (playerShip == MySession.PlayerShip)\n                {\n                    var dir = playerShip.WorldMatrix.Translation - collidingEntity.WorldMatrix.Translation;\n                    if (!MyMwcUtils.HasValidLength(dir))\n                    {\n                        dir = Vector3.Up; // any vector\n                    }\n                    dir = Vector3.Normalize(dir);\n\n                    do\n                    {\n                        var matrix = playerShip.WorldMatrix;\n                        matrix.Translation += dir * 0.1f; // Move away from collision by 10cm\n                        playerShip.WorldMatrix = matrix;\n                    } while (MyPhysics.physicsSystem.GetRBInteractionModule().DoStaticTestInteraction(collidingEntity.Physics.GetRBElementList()[0], playerShip.Physics.GetRBElementList()[0]));\n                }\n            }\n        }\n\n        public void SpawnBot(MySpawnPoint spawnPoint, MySmallShipBot bot, int botsIdx, Vector3 spawnPosition)\n        {\n            MyEventSpawnBot msg = new MyEventSpawnBot();\n            msg.SpawnPointId = (uint)spawnPoint.EntityId.Value.NumericValue;\n            msg.DesiredBotId = (uint)bot.EntityId.Value.NumericValue;\n            msg.BotsIdx = botsIdx;\n            msg.SpawnPosition = spawnPosition;\n\n            LogDevelop(string.Format(\"SpawnBot(SpawnPointId = {0}, DesiredBotId = {1}, BotsIdx = {2})\", msg.SpawnPointId, msg.DesiredBotId, msg.BotsIdx));\n\n            Peers.SendToAll(ref msg, NetDeliveryMethod.ReliableOrdered);\n        }\n\n        public void OnSpawnBot(ref MyEventSpawnBot msg)\n        {\n            LogDevelop(string.Format(\"OnSpawnBot(SpawnPointId = {0}, DesiredBotId = {1}, BotsIdx = {2})\", msg.SpawnPointId, msg.DesiredBotId, msg.BotsIdx));\n\n            MySpawnPoint spawnPoint;\n            if (!MyEntityIdentifier.TryGetEntity<MySpawnPoint>(new MyEntityIdentifier(msg.SpawnPointId), out spawnPoint))\n            {\n                Alert(\"Spawn point not found\", msg.SenderEndpoint, MyEventEnum.SPAWN_BOT);\n                return;\n            }\n\n            MyEntity existingEntity;\n            if (MyEntities.TryGetEntityById(msg.DesiredBotId.ToEntityId(), out existingEntity))\n            {\n                Debug.Fail(\"Spawning bot, but another entity with same id already exists\");\n            }\n            else\n            {\n                spawnPoint.SpawnShip(msg.BotsIdx, msg.SpawnPosition, msg.DesiredBotId);\n            }\n\n        }\n\n        #region SHIP_CONFIG\n        void Config_ConfigChanged(MySmallShip ship)\n        {\n            UpdateConfig(ship);\n        }\n\n        void UpdateConfig(MySmallShip ship)\n        {\n            Debug.Assert(ship.EntityId.HasValue);\n\n            MyEventShipConfigUpdate msg = new MyEventShipConfigUpdate();\n            msg.ShipId = ship.EntityId.Value.NumericValue;\n            msg.Autoleveling = ship.Config.AutoLeveling.On;\n            msg.EngineOn = ship.Config.Engine.On;\n            msg.ReflectorLongRange = ship.Config.ReflectorLongRange.On;\n            msg.ReflectorOn = ship.Config.ReflectorLight.On;\n            msg.Slowdown = ship.Config.MovementSlowdown.On;\n            msg.TimeBombTimer = ship.Config.TimeBombTimer.CurrentValue;\n            msg.RadarJammer = ship.Config.RadarJammer.On;\n\n            Peers.SendToAll(ref msg, NetDeliveryMethod.ReliableOrdered, 0);\n        }\n\n        void OnUpdateConfig(ref MyEventShipConfigUpdate msg)\n        {\n            var ship = (MySmallShip)MyEntities.GetEntityByIdOrNull(new MyEntityIdentifier(msg.ShipId));\n            if (ship != null && CheckSenderId(msg, msg.ShipId))\n            {\n                ship.Config.AutoLeveling.SetValue(msg.Autoleveling);\n                ship.Config.Engine.SetValue(msg.EngineOn);\n                ship.Config.ReflectorLongRange.SetValue(msg.ReflectorLongRange);\n                ship.Config.ReflectorLight.SetValue(msg.ReflectorOn);\n                ship.Config.MovementSlowdown.SetValue(msg.Slowdown);\n                ship.Config.TimeBombTimer.SetValue(msg.TimeBombTimer);\n                ship.Config.RadarJammer.SetValue(msg.RadarJammer);\n            }\n            else\n            {\n                Alert(\"Updating config, but ship not found or is invalid\", msg.SenderEndpoint, msg.EventType);\n            }\n        }\n        #endregion\n\n        #region INVENTORY\n\n        void UpdateInventory(MyEntity entity, bool gameMechanicsItemsOnly)\n        {\n            Debug.Assert(entity is IMyInventory);\n            Debug.Assert(entity.EntityId.HasValue);\n\n            var inventoryEntity = (IMyInventory)entity;\n            if (inventoryEntity.Inventory.IsDummy) return;\n\n            var msg = new MyEventInventoryUpdate();\n            msg.EntityId = entity.EntityId.Value.NumericValue;\n            msg.InventoryBuilder = GetInventory(inventoryEntity, gameMechanicsItemsOnly);\n            Peers.SendToAll(ref msg, NetDeliveryMethod.ReliableOrdered, 0, DEFAULT_LARGE_MESSAGE_SIZE);\n        }\n\n        /// <summary>\n        /// Gets inventory, only items which affect multiplayer\n        /// </summary>\n        MyMwcObjectBuilder_Inventory GetInventory(IMyInventory ship, bool gameMechanicsItemsOnly)\n        {\n            var builder = ship.Inventory.GetObjectBuilder(false);\n            builder.InventoryItems.RemoveAll(ItemPredicateRemoveShips);\n            if (gameMechanicsItemsOnly)\n            {\n                builder.InventoryItems.RemoveAll(ItemPredicateRemove);\n            }\n            return builder;\n        }\n\n        bool ItemPredicateRemoveShips(MyMwcObjectBuilder_InventoryItem item)\n        {\n            return item.ItemObjectBuilder != null && item.ItemObjectBuilder is MyMwcObjectBuilder_Ship;\n        }\n\n        bool ItemPredicateRemove(MyMwcObjectBuilder_InventoryItem item)\n        {\n            bool isJammer = item.ItemObjectBuilder.GetObjectBuilderType() == MyMwcObjectBuilderTypeEnum.SmallShip_Tool && item.ItemObjectBuilder.GetObjectBuilderId() == (int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.RADAR_JAMMER;\n            return !isJammer;\n        }\n\n        void OnInventoryUpdate(ref MyEventInventoryUpdate msg)\n        {\n            var inventory = MyEntities.GetEntityByIdOrNull(new MyEntityIdentifier(msg.EntityId)) as IMyInventory;\n            if (inventory != null)\n            {\n                inventory.Inventory.IsDummy = true;\n                inventory.Inventory.Init(msg.InventoryBuilder);\n                inventory.Inventory.IsDummy = false;\n            }\n        }\n\n        void SavePlayer()\n        {\n            if (!IsHost && GameType == MyGameTypes.Story)\n            {\n                MyEventSavePlayer msg = new MyEventSavePlayer();\n                msg.PlayerObjectBuilder = MySession.Static.Player.GetObjectBuilder(false);\n\n                // It's called in shutdown\n                Peers.TrySendHost(ref msg, MyMultiplayerGameplay.DEFAULT_LARGE_MESSAGE_SIZE);\n            }\n        }\n\n        void OnSavePlayer(ref MyEventSavePlayer msg)\n        {\n            var player = (MyPlayerRemote)msg.SenderConnection.Tag;\n            if (player != null)\n            {\n                MyGuiScreenGamePlay.Static.Checkpoint.StoreCoopPlayer(msg.PlayerObjectBuilder, player.GetDisplayName().ToString());\n            }\n        }\n        #endregion\n\n        #region UTILITY\n        private static MyMwcObjectBuilder_SmallShip_TypesEnum ChooseShip(MyMwcObjectBuilder_FactionEnum faction)\n        {\n            return GetFactionShip(faction);\n        }\n        #endregion\n\n        #region SHIP_TEMPLATES\n        private MyMwcObjectBuilder_SmallShip CreateShip(MyMwcObjectBuilder_SmallShip_TypesEnum shipType, MyMwcObjectBuilder_FactionEnum faction)\n        {\n            var ship = new MyMwcObjectBuilder_SmallShip(shipType, new MyMwcObjectBuilder_Inventory(new List<MyMwcObjectBuilder_InventoryItem>()\n                {\n                    new MyMwcObjectBuilder_InventoryItem(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_Armor_Piercing_Incendiary), 10000),\n                    new MyMwcObjectBuilder_InventoryItem(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_Basic), 10000),\n                    new MyMwcObjectBuilder_InventoryItem(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Guided_Missile_Visual_Detection), 10000)\n                }, 100),\n                new List<MyMwcObjectBuilder_SmallShip_Weapon>()\n                {\n                    new MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Autocanon),\n                    new MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Autocanon),\n                    new MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Missile_Launcher),\n                }\n                , new CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools.MyMwcObjectBuilder_SmallShip_Engine(CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools.MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.PowerCells_1),\n                new List<CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools.MyMwcObjectBuilder_AssignmentOfAmmo>()\n                {\n                    new MyMwcObjectBuilder_AssignmentOfAmmo(MyMwcObjectBuilder_FireKeyEnum.Primary, MyMwcObjectBuilder_AmmoGroupEnum.Bullet, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_Basic),\n                    new MyMwcObjectBuilder_AssignmentOfAmmo(MyMwcObjectBuilder_FireKeyEnum.Secondary, MyMwcObjectBuilder_AmmoGroupEnum.Missile, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Guided_Missile_Visual_Detection),\n                }\n                , new CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools.MyMwcObjectBuilder_SmallShip_Armor(CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools.MyMwcObjectBuilder_SmallShip_Armor_TypesEnum.Basic),\n                null, 1000, 1, 100, 100, 100, true, false, 50, 0);\n            ship.Faction = faction;\n            ship.IsDummy = true;\n            return ship;\n        }\n\n        public static MyMwcObjectBuilder_SmallShip_Player CreateDeathmatchShip(MyMwcObjectBuilder_FactionEnum faction)\n        {\n            List<MyMwcObjectBuilder_SmallShip_Weapon> weapons = new List<MyMwcObjectBuilder_SmallShip_Weapon>();\n            List<MyMwcObjectBuilder_SmallShip_Ammo> ammo = new List<MyMwcObjectBuilder_SmallShip_Ammo>();\n            List<MyMwcObjectBuilder_AssignmentOfAmmo> assignments = new List<MyMwcObjectBuilder_AssignmentOfAmmo>(\n                new MyMwcObjectBuilder_AssignmentOfAmmo[]\n            {\n                new MyMwcObjectBuilder_AssignmentOfAmmo(MyMwcObjectBuilder_FireKeyEnum.Primary, MyMwcObjectBuilder_AmmoGroupEnum.Bullet, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_Basic),\n                new MyMwcObjectBuilder_AssignmentOfAmmo(MyMwcObjectBuilder_FireKeyEnum.Secondary, MyMwcObjectBuilder_AmmoGroupEnum.Missile, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Missile_Basic),\n                new MyMwcObjectBuilder_AssignmentOfAmmo(MyMwcObjectBuilder_FireKeyEnum.Third, MyMwcObjectBuilder_AmmoGroupEnum.Cannon, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_Basic),\n                new MyMwcObjectBuilder_AssignmentOfAmmo(MyMwcObjectBuilder_FireKeyEnum.Fourth, MyMwcObjectBuilder_AmmoGroupEnum.UniversalLauncherFront, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Mine_Basic),\n                new MyMwcObjectBuilder_AssignmentOfAmmo(MyMwcObjectBuilder_FireKeyEnum.Fifth, MyMwcObjectBuilder_AmmoGroupEnum.UniversalLauncherBack, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Mine_Basic),\n            }\n            );\n\n            weapons.Add(new MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Autocanon));\n            weapons.Add(new MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Autocanon));\n            weapons.Add(new MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Missile_Launcher));\n            weapons.Add(new MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Cannon));\n            weapons.Add(new MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Shotgun));\n            //weapons.Add(new MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Crusher));\n            weapons.Add(new MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Nuclear));\n            weapons.Add(new MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Universal_Launcher_Front));\n            weapons.Add(new MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Harvesting_Device));\n            ammo.Add(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_Basic));\n            ammo.Add(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_BioChem));\n            ammo.Add(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Automatic_Rifle_With_Silencer_High_Speed));\n            ammo.Add(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_High_Speed));\n            ammo.Add(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_Basic));\n            ammo.Add(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Missile_Basic));\n            ammo.Add(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Shotgun_Basic));\n            ammo.Add(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Mine_Basic));\n\n            MyMwcObjectBuilder_Inventory inventory = new MyMwcObjectBuilder_Inventory(new List<MyMwcObjectBuilder_InventoryItem>(), 1000);\n            foreach (MyMwcObjectBuilder_SmallShip_Ammo ammoItem in ammo)\n            {\n                inventory.InventoryItems.Add(new MyMwcObjectBuilder_InventoryItem(ammoItem, 1000));\n            }\n            inventory.InventoryItems.Add(new MyMwcObjectBuilder_InventoryItem(new MyMwcObjectBuilder_SmallShip_Radar(MyMwcObjectBuilder_SmallShip_Radar_TypesEnum.Radar_1), 1));\n            var ship = new MyMwcObjectBuilder_SmallShip_Player(\n                ChooseShip(faction),\n                inventory,\n                weapons,\n                new MyMwcObjectBuilder_SmallShip_Engine(MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.PowerCells_1),\n                assignments,\n                null,\n                new MyMwcObjectBuilder_SmallShip_Radar(MyMwcObjectBuilder_SmallShip_Radar_TypesEnum.Radar_1),\n                null,\n                MyGameplayConstants.HEALTH_RATIO_MAX,\n                100f,\n                float.MaxValue,\n                float.MaxValue,\n                float.MaxValue,\n                true, false, MyLightsConstants.MAX_SPOTLIGHT_SHADOW_RANGE, 0);\n\n            ship.Faction = faction;\n            return ship;\n        }\n        #endregion\n\n        #region HEALTH\n        public void UpdateHealth(MyEntity entity, float newHealthRatio)\n        {\n            if (!IsControlledByMe(entity)) return;\n\n            Debug.Assert(entity.EntityId.HasValue);\n            MyEventHealthUpdate msg = new MyEventHealthUpdate();\n            msg.EntityId = entity.EntityId.Value.NumericValue;\n            msg.NewHealthRatio = entity.HealthRatio;\n\n            Peers.SendToAll(ref msg, NetDeliveryMethod.ReliableOrdered, 0);\n        }\n\n        private void OnHealthUpdate(ref MyEventHealthUpdate msg)\n        {\n            MyEntity entity;\n            if (MyEntities.TryGetEntityById(new MyEntityIdentifier(msg.EntityId), out entity))\n            {\n                entity.HealthRatio = msg.NewHealthRatio;\n            }\n            else\n            {\n                Alert(\"Update health on nonexistent entity\", msg.SenderEndpoint, msg.EventType);\n            }\n        }\n        #endregion\n\n        #region AFTERBURNER\n        public void Afterburner(bool enabled)\n        {\n            Debug.Assert(MySession.PlayerShip.EntityId.HasValue);\n\n            var msg = new MyEventAfterburner();\n            msg.EntityId = MySession.PlayerShip.EntityId.Value.NumericValue;\n            msg.Enabled = enabled;\n            Peers.SendToAll(ref msg);\n        }\n\n        void OnAfterburner(ref MyEventAfterburner msg)\n        {\n            MyEntity entity;\n            if (MyEntities.TryGetEntityById(msg.EntityId.ToEntityId(), out entity) && entity is MySmallShip)\n            {\n                var ship = (MySmallShip)entity;\n                ship.SetAfterburner(msg.Enabled);\n            }\n        }\n        #endregion\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Sessions/Multiplayer/MyMultiplayerGameplay.Story.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Entities.Weapons;\nusing System.Diagnostics;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.CommonLIB.AppCode.Networking.Multiplayer;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing Lidgren.Network;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWarsMath;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.AppCode.Game.HUD;\nusing MinerWars.AppCode.Game.World;\nusing MinerWars.AppCode.Game.Gameplay;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Physics;\nusing SysUtils;\nusing KeenSoftwareHouse.Library.Trace;\nusing MinerWars.AppCode.Game.Entities.Weapons.Ammo;\nusing MinerWars.AppCode.Game.Inventory;\nusing MinerWars.AppCode.Game.Missions;\nusing MinerWars.AppCode.Game.Audio.Dialogues;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.AppCode.Game.Localization;\n\nnamespace MinerWars.AppCode.Game.Sessions\n{\n\n    partial class MyMultiplayerGameplay\n    {\n        public void UpdateCoopTarget()\n        {\n            if (IsHost)\n                return;\n\n            MyPlayerRemote host;\n            if(Peers.TryGetPlayer(Peers.HostUserId, out host))\n            {\n                var ship = host.Ship;\n                if (IsStory() && ship != null && m_followMission != null)\n                {\n                    m_followMission.MainObjective.Location = new MyMissionBase.MyMissionLocation(MyGuiScreenGamePlay.Static.GetSectorIdentifier().Position, ship.EntityId.Value.NumericValue);\n                    m_followMission.MainObjective.SetLocationVisibility(true);\n                }\n            }\n        }\n\n        public void UpdateMission()\n        {\n            if (IsHost && IsStory())\n            {\n                if (MyMissions.ActiveMission != null && MyMissions.ActiveMission.ActiveObjectives.Count > 0)\n                {\n                    SendMissionProgress(MyMissions.ActiveMission.ActiveObjectives[0], MyMissionProgressType.NewObjective);\n                }\n                else\n                {\n                    SendMissionProgress(null, MyMissionProgressType.NewObjective);\n                }\n            }\n        }\n\n        public void SendMissionProgress(MyMissionBase mission, MyMissionProgressType progressType, MyTextsWrapperEnum? messageEnum = null)\n        {\n            MyEventMissionProgress message = new MyEventMissionProgress();\n            message.MissionId = mission != null ? (int)mission.ID : (int?)null;\n            message.ProgressType = progressType;\n            message.MessageEnum = messageEnum.HasValue ? (int)messageEnum.Value : (int?)null;\n\n            Peers.SendToAll(ref message, NetDeliveryMethod.ReliableOrdered);\n        }\n\n        public void OnMissionProgress(ref MyEventMissionProgress msg)\n        {\n            if (IsStory() && !IsHost)\n            {\n                ClearCountdownNotification();\n\n                Debug.Assert(m_followMission != null);\n\n                switch (msg.ProgressType)\n                {\n                    case MyMissionProgressType.Success:\n                        MyMission.ShowObjectiveCompleted();\n                        m_followMission.SetObjectives(null);\n                        break;\n                    case MyMissionProgressType.Fail:\n                        {\n                            MyTextsWrapperEnum? message = null;\n                            if (msg.MessageEnum.HasValue)\n                            {\n                                message = (MyTextsWrapperEnum)msg.MessageEnum.Value;\n                                if (!MyMwcEnums.IsValidValue(message.Value))\n                                {\n                                    message = null;\n                                }\n                            }\n                            MySession.Static.GameOver(message);\n                        }\n                        break;\n                    case MyMissionProgressType.NewObjective:\n                        m_followMission.SetObjectives(msg.MissionId);\n                        break;\n                    default:\n                        Debug.Fail(\"Unknown MyMissionProgressType\");\n                        break;\n                }\n            }\n        }\n\n        public void SendPlayDialogue(MyDialogueEnum id)\n        {\n            var msg = new MyEventPlayDialogue();\n            msg.DialogueEnum = (int)id;\n\n            Peers.SendToAll(ref msg, NetDeliveryMethod.ReliableOrdered);\n        }\n\n        void OnPlayDialogue(ref MyEventPlayDialogue msg)\n        {\n            if (!MyMwcEnums.IsValidValue((MyDialogueEnum)msg.DialogueEnum))\n            {\n                Alert(\"Invalid dialogue enum\", msg.SenderEndpoint, msg.EventType);\n                return;\n            }\n\n            MyScriptWrapper.PlayDialogue((MyDialogueEnum)msg.DialogueEnum);\n        }\n\n        public void SendApplyTransition(MyMusicTransitionEnum transitionEnum, int priority, string category, bool loop)\n        {\n            SendMusicTransition(MyMusicEventEnum.APPLY_TRANSITION, priority, transitionEnum, category, loop);\n        }\n\n        public void SendStopMusic()\n        {\n            SendMusicTransition(MyMusicEventEnum.STOP_MUSIC, null, null, null, false);\n        }\n\n        public void SendStopTransition(int priority)\n        {\n            SendMusicTransition(MyMusicEventEnum.STOP_TRANSITION, priority, null, null, false);\n        }\n\n        private void SendMusicTransition(MyMusicEventEnum musicEventType, int? priority, MyMusicTransitionEnum? transitionEnum, string category, bool loop)\n        {\n            var msg = new MyEventMusicTransition();\n            msg.MusicEventType = musicEventType;\n            msg.TransitionEnum = transitionEnum.HasValue ? (int)transitionEnum.Value : 0;\n            msg.Priority = priority ?? 0;\n            msg.Category = category;\n            msg.Loop = loop;\n\n            Peers.SendToAll(ref msg, NetDeliveryMethod.ReliableOrdered);\n        }\n\n        void OnMusicTransition(ref MyEventMusicTransition msg)\n        {\n            switch (msg.MusicEventType)\n            {\n                case MyMusicEventEnum.STOP_MUSIC:\n                    MyScriptWrapper.StopMusic();\n                    break;\n\n                case MyMusicEventEnum.STOP_TRANSITION:\n                    MyScriptWrapper.StopTransition(msg.Priority);\n                    break;\n\n                case MyMusicEventEnum.APPLY_TRANSITION:\n                    {\n                        var transition = (MyMusicTransitionEnum)msg.TransitionEnum;\n\n                        if (!MyMwcEnums.IsValidValue(transition))\n                        {\n                            Alert(\"Invalid MyMusicTransitionEnum\", msg.SenderEndpoint, msg.EventType);\n                            return;\n                        }\n\n                        MyScriptWrapper.ApplyTransition(transition, msg.Priority, msg.Category);\n                    }\n                    break;\n\n                default:\n                    Alert(\"Unknown music transition type\", msg.SenderEndpoint, msg.EventType);\n                    break;\n            }\n        }\n\n        public void SendPlaySound(Vector3? position, MySoundCuesEnum id)\n        {\n            var msg = new MyEventPlaySound();\n            msg.Position = position;\n            msg.SoundEnum = (int)id;\n\n            Peers.SendToAll(ref msg, NetDeliveryMethod.ReliableOrdered);\n        }\n\n        void OnPlaySound(ref MyEventPlaySound msg)\n        {\n            if (!MyMwcEnums.IsValidValue((MySoundCuesEnum)msg.SoundEnum))\n            {\n                Alert(\"Invalid sound enum\", msg.SenderEndpoint, msg.EventType);\n                return;\n            }\n\n            if (msg.Position.HasValue)\n            {\n                MyScriptWrapper.PlaySound3D(msg.Position.Value, (MySoundCuesEnum)msg.SoundEnum);\n            }\n            else\n            {\n                MyScriptWrapper.PlaySound2D((MySoundCuesEnum)msg.SoundEnum);\n            }\n        }\n\n        public void SendHeadshake(float amount)\n        {\n            var msg = new MyEventHeadshake();\n            msg.Amount = amount;\n\n            Peers.SendToAll(ref msg, NetDeliveryMethod.ReliableSequenced, 3);\n        }\n\n        void OnHeadshake(ref MyEventHeadshake msg)\n        {\n            MyScriptWrapper.IncreaseHeadShake(msg.Amount);\n        }\n\n        public void SendSetEntityFaction(MyEntity entity, MyMwcObjectBuilder_FactionEnum faction)\n        {\n            Debug.Assert(entity.EntityId.HasValue, \"Entity must have id\");\n\n            var msg = new MyEventSetEntityFaction();\n            msg.Faction = faction;\n            msg.EntityId = entity.EntityId.Value.NumericValue;\n\n            Peers.SendToAll(ref msg, NetDeliveryMethod.ReliableOrdered);\n        }\n\n        void OnSetEntityFaction(ref MyEventSetEntityFaction msg)\n        {\n            MyEntity entity;\n            if (MyEntities.TryGetEntityById(msg.EntityId.ToEntityId(), out entity))\n            {\n                entity.Faction = msg.Faction;\n            }\n            else\n            {\n                Alert(\"Entity not found: \" + msg.EntityId, msg.SenderEndpoint, msg.EventType);\n            }\n        }\n\n        public void SendSetActorFaction(MyActorEnum actor, MyMwcObjectBuilder_FactionEnum faction)\n        {\n            var msg = new MyEventSetActorFaction();\n            msg.ActorId = (int)actor;\n            msg.Faction = faction;\n\n            Peers.SendToAll(ref msg, NetDeliveryMethod.ReliableOrdered);\n        }\n\n        void OnSetActorFaction(ref MyEventSetActorFaction msg)\n        {\n            var actorEnum = (MyActorEnum)msg.ActorId;\n            if (MyMwcEnums.IsValidValue(actorEnum))\n            {\n                MyScriptWrapper.SetActorFaction(actorEnum, msg.Faction);\n            }\n            else\n            {\n                Alert(\"Actor enum invalid\", msg.SenderEndpoint, msg.EventType);\n            }\n        }\n\n        public void SendSetFactionRelation(MyMwcObjectBuilder_FactionEnum factionA, MyMwcObjectBuilder_FactionEnum factionB, float relation)\n        {\n            var msg = new MyEventSetFactionRelation();\n            msg.FactionA = factionA;\n            msg.FactionB = factionB;\n            msg.Relation = relation;\n\n            Peers.SendToAll(ref msg, NetDeliveryMethod.ReliableOrdered);\n        }\n\n        void OnSetFactionRelation(ref MyEventSetFactionRelation msg)\n        {\n            MyScriptWrapper.SetFactionRelation(msg.FactionA, msg.FactionB, msg.Relation);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Sessions/Multiplayer/MyMultiplayerGameplay.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.Networking.Multiplayer;\nusing MinerWars.AppCode.Game.Gameplay;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Localization;\nusing KeenSoftwareHouse.Library.Trace;\nusing MinerWars.AppCode.Game.World;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.AppCode.Game.Prefabs;\nusing SysUtils.Utils;\nusing System.Diagnostics;\nusing System.Net;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing Lidgren.Network;\nusing MinerWars.AppCode.Game.Sessions.Multiplayer;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.Entities.CargoBox;\nusing MinerWars.AppCode.Game.Inventory;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Networking.SectorService;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.AppCode.Game.Missions;\nusing MinerWars.AppCode.Game.Missions.SinglePlayer;\nusing MinerWars.AppCode.Game.HUD;\nusing SysUtils;\nusing MinerWars.AppCode.Game.GUI.Core;\n\nnamespace MinerWars.AppCode.Game.Sessions\n{\n    partial class MyMultiplayerGameplay\n    {\n        public static bool IsWaiting { get; set; }\n\n        public const int DEFAULT_LARGE_MESSAGE_SIZE = 16 * 1024;\n        public static int MaxPlayers = 16;\n\n        public static bool CanPauseGame\n        {\n            get\n            {\n                return !OtherPlayersConnected || IsWaiting;\n            }\n        }\n\n        public static bool OtherPlayersConnected\n        {\n            get\n            {\n                return (Peers != null && Peers.Players.Count > 0);\n            }\n        }\n        public static bool IsRunning { get; private set; }\n\n        public static bool IsHosting\n        {\n            get\n            {\n                return IsRunning && Static.IsHost;\n            }\n        }\n\n        private bool m_savePlayer = false;\n\n        private static MyMultiplayerGameplay m_static;\n        public static MyMultiplayerGameplay Static\n        {\n            get { return m_static ?? (m_static = new MyMultiplayerGameplay()); }\n        }\n\n        public bool IsHost;\n        public MyJoinMode JoinMode;\n        public MyEventCreateGame LastCreateGameRequest;\n\n        public MyPlayerStatistics PlayerStatistics\n        {\n            get\n            {\n                return MyClientServer.LoggedPlayer.Statistics;\n            }\n        }\n\n        public static MyMultiplayerPeers Peers\n        {\n            get { return MyMultiplayerPeers.Static; }\n        }\n\n        public Action<MyNotificationType, MyTextsWrapperEnum, object[]> OnNotification;\n        public Action OnShutdown;\n\n        MyMultiplayerConfiguration m_multiplayerConfig; // private so far\n        Dictionary<int, List<MyDummyPoint>> m_respawnPoints = new Dictionary<int, List<MyDummyPoint>>(100);\n        Dictionary<int, int> m_factions = new Dictionary<int, int>(4);\n        List<int> m_possibleFactionCache = new List<int>(4);\n        Action<MyEntity> m_playerShipClose;\n\n        object[] m_textArgs = new object[4];\n        public static MyMwcObjectBuilder_SmallShip StoredShip;\n\n        bool m_processingBuffer = false;\n\n        MyFollowHostMission m_followMission;\n\n        static MyMultiplayerGameplay()\n        {\n            InitFactionShipTypes();\n        }\n\n        public MyMultiplayerGameplay()\n        {\n            Init();\n        }\n\n        private void Init()\n        {\n            m_multiplayerConfig = new MyMultiplayerConfiguration();\n            m_onEntityDie = new DieHandler(Die);\n            m_onConfigChanged = new Action<MySmallShip>(Config_ConfigChanged);\n            m_onInventoryChanged = new Action<MyShip>(Playership_InventoryChanged);\n            m_unlockOnClosing = new Action<MyEntity>(UnlockOnClosing);\n            IsRunning = false;\n            IsHost = true;\n            IsWaiting = false;\n        }\n\n        public static MyGameTypes GameType\n        {\n            get\n            {\n                switch (MyGuiScreenGamePlay.Static.GetSessionType())\n                {\n                    case MyMwcStartSessionRequestTypeEnum.SANDBOX_RANDOM:\n                    case MyMwcStartSessionRequestTypeEnum.SANDBOX_OWN:\n                    case MyMwcStartSessionRequestTypeEnum.SANDBOX_FRIENDS:\n                    case MyMwcStartSessionRequestTypeEnum.JOIN_SANDBOX_FRIEND:\n                        return MyGameTypes.Deathmatch;\n                        break;\n\n                    case MyMwcStartSessionRequestTypeEnum.JOIN_FRIEND_STORY:\n                    case MyMwcStartSessionRequestTypeEnum.LOAD_CHECKPOINT:\n                    case MyMwcStartSessionRequestTypeEnum.NEW_STORY:\n                        return MyGameTypes.Story;\n                        break;\n                    case MyMwcStartSessionRequestTypeEnum.EDITOR_MMO:\n                    case MyMwcStartSessionRequestTypeEnum.EDITOR_SANDBOX:\n                    case MyMwcStartSessionRequestTypeEnum.EDITOR_STORY:\n                    case MyMwcStartSessionRequestTypeEnum.MMO:\n                    default:\n                        return MyGameTypes.Deathmatch;\n                        break;\n                }\n            }\n        }\n\n        public void UpdateGameInfo()\n        {\n            MyEventUpdateGame msg = new MyEventUpdateGame();\n\n            msg.Name = MyGuiScreenGamePlay.Static.GetGameName(GameType, MyGameplayConstants.GetGameplayDifficulty());\n            msg.Password = null;\n            msg.JoinMode = JoinMode;\n\n            //if (JoinMode == MyJoinMode.Open)\n            //{\n            //    MyEventCreateGame createGameRequest = new MyEventCreateGame();\n            //    createGameRequest.SectorName = msg.Name;\n            //    createGameRequest.Password = String.Empty;\n            //    createGameRequest.Type = GameType;\n            //    createGameRequest.JoinMode = JoinMode;\n            //    createGameRequest.Difficulty = MyGameplayConstants.GetGameplayDifficulty();\n            //    Peers.SendServer(ref createGameRequest);\n            //}\n\n            Peers.SendServer(ref msg);\n        }\n\n        public void Suspend()\n        {\n            if (MyMultiplayerGameplay.IsRunning && IsHost)\n            {\n                MyMultiplayerGameplay.Static.SendNotification(MyNotificationType.WaitStart, MyTextsWrapperEnum.NotificationHostLoadingSector);\n            }\n\n            MyGuiManager.CloseIngameScreens();\n\n            //if (IsHost)\n            {\n                foreach (var player in Peers.Players)\n                {\n                    player.Ship = null;\n                }\n            }\n\n            if (!IsHost)\n            {\n                StartBufferingGameEvents();\n            }\n            else\n            {\n                UnregisterCallbacks();\n                Peers.NetworkClient.RegisterBuffering<MyEventGetPlayerList>();\n            }\n        }\n\n        public void Resume()\n        {\n            if (MyFakes.MULTIPLAYER_DISABLED)\n                return;\n\n            IsWaiting = false;\n\n            if (!IsHost)\n            {\n                // When host is disconnected in resume, he disconnected in load, so shutdown MP\n                MyPlayerRemote host;\n                if (!Peers.TryGetPlayer(Peers.HostUserId, out host))\n                {\n                    var handler = OnShutdown;\n                    if (handler != null)\n                    {\n                        handler();\n                    }\n                    return;\n                }\n            }\n\n            if (!IsHost)\n            {\n                MyGlobalEvents.DisableAllGlobalEvents();\n            }\n\n            if (!IsHost || OtherPlayersConnected) //TODO: remove\n            {\n                RemoveUnsupportedEntities();\n            }\n\n            if (!IsHost)\n            {\n                MakeAllEntitiesDummy();\n            }\n\n            if (IsSandBox())\n            {\n                LoadRespawnPoints();\n            }\n\n            RegisterCallbacks();\n\n            if (!IsHost)\n            {\n                foreach (var p in Peers.Players)\n                {\n                    if (p.Ship == null) // Ship can be already assigned (player has respawned before we finished loading)\n                    {\n                        var newShip = FindPlayerShip(p.PlayerId);\n                        if (newShip != null)\n                        {\n                            p.Ship = newShip;\n                            p.Faction = newShip.Faction;\n                            OnNewPlayerShip(p.Ship);\n                        }\n                    }\n                }\n            }\n\n            if (!IsHost)\n            {\n                if (IsStory())\n                {\n                    MyMissions.Unload();\n                    m_followMission = MyMissions.GetMissionByID(MyMissionID.COOP_FOLLOW_HOST) as MyFollowHostMission;\n                    if (m_followMission == null)\n                    {\n                        m_followMission = new MyFollowHostMission();\n                        m_followMission.Location = new MyMissionBase.MyMissionLocation(MyGuiScreenGamePlay.Static.GetSectorIdentifier().Position, 0);\n                        MyMissions.AddMission(m_followMission);\n                    }\n                    m_followMission.SetHudName(Peers[Peers.HostUserId].GetDisplayName());\n                    UpdateCoopTarget();\n                    m_followMission.Accept();\n                }\n            }\n\n            m_processingBuffer = true;\n            Peers.NetworkClient.ProcessBuffered();\n            m_processingBuffer = false;\n\n            if (IsSandBox())\n            {\n                if (IsHost)\n                {\n                    MySession.Static.Player.Faction = ChooseFaction();\n                }\n            }\n\n            //DisableCheats();\n\n            if (!IsHost)\n            {\n                if (IsSandBox())\n                {\n                    // No faction, prevents respawn until server assigns faction\n                    MySession.Static.Player.Faction = MyMwcObjectBuilder_FactionEnum.None;\n                }\n                RequestFaction(MyMwcObjectBuilder_FactionEnum.None);\n            }\n\n            if (!IsStory() || !IsHost)\n            {\n                // Player's ship is dummy\n                MySession.PlayerShip.IsDummy = true;\n                m_respawnTime = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n            }\n            else\n            {\n                m_respawnTime = Int32.MaxValue;\n            }\n\n            if (IsHost)\n            {\n                // Why is this set only for host?\n                MySession.PlayerShip.ConfigChanged += m_onConfigChanged;\n                MySession.PlayerShip.OnDie += m_onEntityDie;\n                MySession.PlayerShip.InventoryChanged += m_onInventoryChanged;\n            }\n\n            // Hook entities (hook required events)\n            foreach (var entity in MyEntities.GetEntities().OfType<MyCargoBox>())\n            {\n                HookEntity(entity);\n            }\n            foreach (var entity in MyEntities.GetEntities().OfType<MyPrefabContainer>())\n            {\n                HookEntity(entity);\n            }\n\n            SendGlobalFlag(MyGlobalFlagsEnum.REQUEST_INFO);\n        }\n\n        MySmallShip FindPlayerShip(byte playerId)\n        {\n            var ships = MyEntities.GetEntities().OfType<MySmallShip>().Where(s => (!(s is MySmallShipBot)) && s.EntityId.HasValue && s.EntityId.Value.PlayerId == playerId && !s.IsHologram);\n            Debug.Assert(ships.Count() <= 1, \"There's multiple possible playerships in the scene!\");\n            return ships.FirstOrDefault();\n        }\n\n        public void Shutdown()\n        {\n            Debug.Assert(IsRunning);\n\n            SavePlayer();\n\n            OnShutdown = null;\n\n            IsHost = false;\n            ClearCountdownNotification();\n            UnregisterCallbacks();\n            Peers.Shutdown();\n            NewPlayer -= MyMultiplayerGameplay_NewPlayer;\n            MyEntityIdentifier.CurrentPlayerId = 0;\n\n            m_lastAmmoAssignment = null;\n\n            StoredShip = null;\n\n            Init();\n        }\n\n        public static void Log(string message)\n        {\n            MyTrace.Send(TraceWindow.Multiplayer, message);\n            MyMwcLog.WriteLine(\"MP - \" + message);\n        }\n\n        public static void LogDevelop(string message)\n        {\n            if (MyMwcFinalBuildConstants.IS_DEVELOP)\n                Log(message);\n        }\n\n        MyHudNotification.MyNotification m_timer;\n\n        private void Notify(MyTextsWrapperEnum text, object[] args, MyNotificationType notificationType = MyNotificationType.Text)\n        {\n            var handler = OnNotification;\n            if (handler != null)\n            {\n                handler(notificationType, text, args);\n            }\n        }\n\n        private void Notify(MyTextsWrapperEnum text, object arg0 = null, object arg1 = null, object arg2 = null, object arg3 = null, MyNotificationType notificationType = MyNotificationType.Text)\n        {\n            var handler = OnNotification;\n            if (handler != null)\n            {\n                m_textArgs[0] = arg0;\n                m_textArgs[1] = arg1;\n                m_textArgs[2] = arg2;\n                m_textArgs[3] = arg3;\n\n                handler(notificationType, text, m_textArgs);\n            }\n        }\n\n        private bool IsEntityUnsupported(MyEntity entity, Type[] disabledTypes)\n        {\n            var entityType = entity.GetType();\n            return disabledTypes.Any(s => s.IsAssignableFrom(entityType));\n        }\n\n        private void RemoveUnsupportedEntities()\n        {\n            CategoryTypesEnum[] disabledCategories = new CategoryTypesEnum[]\n            {\n                //CategoryTypesEnum.DOORS,\n                //CategoryTypesEnum.DOOR_CASES,\n                //CategoryTypesEnum.ALARM,\n                // Damage enabled, so barrels too\n                //CategoryTypesEnum.BARRELS,\n                //CategoryTypesEnum.BANK_NODE,\n                //CategoryTypesEnum.CAMERA,\n                //CategoryTypesEnum.FOUNDATION_FACTORY,\n                //CategoryTypesEnum.SCANNER,\n                //CategoryTypesEnum.SECURITY_CONTROL_HUB,\n            };\n\n            Type[] disabledEntityTypes = new Type[]\n            {\n\n            };\n\n            foreach (var entity in MyEntities.GetEntities())\n            {\n                if (IsEntityUnsupported(entity, disabledEntityTypes))\n                {\n                    entity.MarkForClose();\n                }\n                else if (entity is MyPrefabContainer)\n                {\n                    foreach (var e in ((MyPrefabContainer)entity).GetPrefabs())\n                    {\n                        var category = ((MyPrefabBase)e).PrefabCategory;\n                        // We don't want indestructible doors and barrels, so close them\n                        if (disabledCategories.Contains(category))\n                        {\n                            e.MarkForClose();\n                        }\n                        // Damage enabled, prefabs are destructible\n                        //else\n                        //{\n                        //    e.IsDestructible = false;\n                        //}\n                    }\n                }\n            }\n        }\n\n        public static bool IsStory()\n        {\n            return MyGuiScreenGamePlay.Static.GetSessionType() == MyMwcStartSessionRequestTypeEnum.NEW_STORY || MyGuiScreenGamePlay.Static.GetSessionType() == MyMwcStartSessionRequestTypeEnum.JOIN_FRIEND_STORY || MyGuiScreenGamePlay.Static.GetSessionType() == MyMwcStartSessionRequestTypeEnum.LOAD_CHECKPOINT;\n        }\n        public static bool IsEditor()\n        {\n            return MyGuiScreenGamePlay.Static.GetSessionType() == MyMwcStartSessionRequestTypeEnum.EDITOR_STORY || MyGuiScreenGamePlay.Static.GetSessionType() == MyMwcStartSessionRequestTypeEnum.EDITOR_SANDBOX;\n        }\n        public static bool IsSandBox()\n        {\n            return MyGuiScreenGamePlay.Static.GetSessionType() == MyMwcStartSessionRequestTypeEnum.SANDBOX_OWN || MyGuiScreenGamePlay.Static.GetSessionType() == MyMwcStartSessionRequestTypeEnum.SANDBOX_FRIENDS || MyGuiScreenGamePlay.Static.GetSessionType() == MyMwcStartSessionRequestTypeEnum.SANDBOX_RANDOM;\n        }\n\n        // Player is in sector, everything loaded, can process messages\n        public void Start()\n        {\n            if (MyFakes.MULTIPLAYER_DISABLED)\n                return;\n\n            Debug.Assert(MyGuiScreenGamePlay.Static != null);\n            Debug.Assert(!IsRunning);\n\n            if (IsEditor())\n            {\n                return;\n            }\n\n            MyMwcLog.WriteLine(\"MyMultiplayerGameplay.Start - START\");\n            MyMwcLog.IncreaseIndent();\n\n            m_lastPlayerId = 0;\n\n            m_lastConfig = null;\n            m_lastAmmoAssignment = null;\n            m_lastCamera = MyCameraAttachedToEnum.PlayerMinerShip;\n\n            IsRunning = true;\n\n\n            if (IsSandBox())\n            {\n                // Everybody is enemy to every other faction\n                var values = Enum.GetValues(typeof(MyMwcObjectBuilder_FactionEnum));\n                foreach (MyMwcObjectBuilder_FactionEnum f1 in values)\n                {\n                    foreach (MyMwcObjectBuilder_FactionEnum f2 in values)\n                    {\n                        // Traders are neutral to all\n                        if (f1 == MyMwcObjectBuilder_FactionEnum.Traders || f2 == MyMwcObjectBuilder_FactionEnum.Traders)\n                        {\n                            MyFactions.SetFactionStatus(f1, f2, MyFactions.RELATION_NEUTRAL, false);\n                        }\n                        else if (f1 != f2 && f1 != MyMwcObjectBuilder_FactionEnum.None)\n                        {\n                            MyFactions.SetFactionStatus(f1, f2, MyFactions.RELATION_WORST, false);\n                        }\n                    }\n                }\n\n                // Freelancers are enemies to self, it allows classic deathmatch\n                MyFactions.SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Freelancers, MyMwcObjectBuilder_FactionEnum.Freelancers, MyFactions.RELATION_WORST, false);\n            }\n\n            if (IsHost)\n            {\n                MyEntityIdentifier.CurrentPlayerId = GeneratePlayerId();\n\n                // Make playership proper id\n                MyEntityIdentifier.RemoveEntity(MySession.PlayerShip.EntityId.Value);\n                MySession.PlayerShip.EntityId = MyEntityIdentifier.AllocatePlayershipId();\n                MyEntityIdentifier.AddEntityWithId(MySession.PlayerShip);\n\n                NewPlayer += MyMultiplayerGameplay_NewPlayer;\n            }\n\n\n            MyClientServer.LoggedPlayer.Statistics = new MyPlayerStatistics();\n            Peers.PlayerDisconnected += Peers_PlayerDisconnected;\n\n            Resume();\n\n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyMultiplayerGameplay.Start - END\");\n        }\n\n        void Inventory_OnInventoryContentChange(MyInventory sender, MyEntity entity)\n        {\n            UpdateInventory(entity, false);\n        }\n\n        private void MakeAllEntitiesDummy()\n        {\n            foreach (var e in MyEntities.GetEntities())\n            {\n                MakeDummy(e);\n            }\n        }\n\n        void MakeDummy(MyEntity e)\n        {\n            e.IsDummy = true;\n            foreach (var c in e.Children)\n            {\n                MakeDummy(c);\n            }\n        }\n\n        void MyMultiplayerGameplay_NewPlayer()\n        {\n            if (!m_removedUnsupportedEntities)\n            {\n                RemoveUnsupportedEntities();\n                m_removedUnsupportedEntities = true;\n            }\n        }\n\n        bool m_removedUnsupportedEntities = false;\n\n\n\n        private void LoadRespawnPoints()\n        {\n            Debug.Assert(IsSandBox()); // Respawn points are only in sandbox, in coop players respawn near other players\n\n            m_respawnPoints.Clear();\n\n            foreach (var e in MyEntities.GetEntities())\n            {\n                var dummy = e as MyDummyPoint;\n                if (dummy != null && ((dummy.DummyFlags & MyDummyPointFlags.RESPAWN_POINT) != 0))\n                {\n                    if (dummy.RespawnPointFaction == MyMwcObjectBuilder_FactionEnum.None)\n                    {\n                        // Respawn points with faction 'none' are not allowed\n                        Debug.Fail(\"Faction cannot be none, fix it in editor\");\n                        continue;\n                    }\n\n                    var factionNum = (int)dummy.RespawnPointFaction;\n                    if (!m_respawnPoints.ContainsKey(factionNum))\n                    {\n                        m_respawnPoints.Add(factionNum, new List<MyDummyPoint>(100));\n                    }\n                    m_respawnPoints[factionNum].Add(dummy);\n                }\n            }\n        }\n\n        bool PlayerStartPredicate(MyEntity entity)\n        {\n            var dummy = entity as MyDummyPoint;\n            return dummy != null && ((dummy.DummyFlags & MyDummyPointFlags.RESPAWN_POINT) != 0);\n        }\n\n        public void HookEntity(MyEntity entity)\n        {\n            if (entity is MyCargoBox)\n            {\n                var box = (MyCargoBox)entity;\n                HookInventoryChange(box, box.Inventory);\n                box.IsDummy = !IsHost;\n                box.RespawnTime = TimeSpan.FromSeconds(30);\n            }\n            else if (entity is MyPrefabContainer)\n            {\n                var container = (MyPrefabContainer)entity;\n                HookInventoryChange(container, container.Inventory);\n                container.IsDummy = true;\n            }\n            else if (entity is MyMeteor)\n            {\n                // Controlled by host\n                entity.IsDummy = !IsHost;\n            }\n        }\n\n        private void HookInventoryChange(MyEntity entity, MyInventory inventory)\n        {\n            inventory.OnInventoryContentChange += (i) => Inventory_OnInventoryContentChange(i, entity);\n        }\n\n        public static void StartBufferingGameEvents()\n        {\n            // Called before loading game\n            // Here's messages which makes permanent changes to world, it needs to be buffered\n            Peers.NetworkClient.RegisterBuffering<MyEventNewPlayer>();\n            Peers.NetworkClient.RegisterBuffering<MyEventRespawn>();\n            Peers.NetworkClient.RegisterBuffering<MyEventShoot>();\n            Peers.NetworkClient.RegisterBuffering<MyEventAmmoExplosion>();\n            Peers.NetworkClient.RegisterBuffering<MyEventDoDamage>();\n            Peers.NetworkClient.RegisterBuffering<MyEventProjectileHit>();\n            Peers.NetworkClient.RegisterBuffering<MyEventDie>();\n            Peers.NetworkClient.RegisterBuffering<MyEventSetFaction>();\n            Peers.NetworkClient.RegisterBuffering<MyEventShipConfigUpdate>();\n            Peers.NetworkClient.RegisterBuffering<MyEventSpeacialWeapon>();\n            Peers.NetworkClient.RegisterBuffering<MyEventInventoryUpdate>();\n            Peers.NetworkClient.RegisterBuffering<MyEventMissionProgress>();\n            Peers.NetworkClient.RegisterBuffering<MyEventLock>();\n            Peers.NetworkClient.RegisterBuffering<MyEventHealthUpdate>();\n            Peers.NetworkClient.RegisterBuffering<MyEventSpawnBot>();\n            Peers.NetworkClient.RegisterBuffering<MyEventAfterburner>();\n            Peers.NetworkClient.RegisterBuffering<MyEventPilotDie>();\n            Peers.NetworkClient.RegisterBuffering<MyEventNotification>();\n            Peers.NetworkClient.RegisterBuffering<MyEventCutOut>();\n            Peers.NetworkClient.RegisterBuffering<MyEventFlags>();\n            Peers.NetworkClient.RegisterBuffering<MyEventNewEntity>();\n            Peers.NetworkClient.RegisterBuffering<MyEventMissionUpdateVars>();\n            Peers.NetworkClient.RegisterBuffering<MyEventAddExplosion>();\n            Peers.NetworkClient.RegisterBuffering<MyEventDummyFlags>();\n            Peers.NetworkClient.RegisterBuffering<MyEventUpdatePositionFast>();\n            Peers.NetworkClient.RegisterBuffering<MyEventAddVoxelHand>();\n            Peers.NetworkClient.RegisterBuffering<MyEventSetActorFaction>();\n            Peers.NetworkClient.RegisterBuffering<MyEventSetFactionRelation>();\n            Peers.NetworkClient.RegisterBuffering<MyEventUpdateRotationFast>();\n            Peers.NetworkClient.RegisterBuffering<MyEventFriendlyFire>();\n            Peers.NetworkClient.RegisterBuffering<MyEventSetEntityFaction>();\n            Peers.NetworkClient.RegisterBuffering<MyEventMusicTransition>();\n            Peers.NetworkClient.RegisterBuffering<MyEventEvent>();\n            Peers.NetworkClient.RegisterBuffering<MyEventGlobalFlag>();\n        }\n\n        private void RegisterCallbacks()\n        {\n            Peers.NetworkClient.RegisterCallback<MyEventNewPlayer>(OnNewPlayer);\n            Peers.NetworkClient.RegisterCallback<MyEventUpdatePosition>(OnUpdatePosition);\n            Peers.NetworkClient.RegisterCallback<MyEventUpdatePositionFast>(OnUpdatePositionFast);\n            Peers.NetworkClient.RegisterCallback<MyEventRespawn>(OnRespawn);\n            Peers.NetworkClient.RegisterCallback<MyEventShoot>(OnShoot);\n            Peers.NetworkClient.RegisterCallback<MyEventAmmoExplosion>(OnAmmoExplosion);\n            Peers.NetworkClient.RegisterCallback<MyEventDoDamage>(OnDoDamage);\n            Peers.NetworkClient.RegisterCallback<MyEventProjectileHit>(OnProjectileHit);\n            Peers.NetworkClient.RegisterCallback<MyEventDie>(OnDie);\n            Peers.NetworkClient.RegisterCallback<MyEventStatsUpdate>(OnStatsUpdate);\n            Peers.NetworkClient.RegisterCallback<MyEventSetFaction>(OnSetFaction);\n            Peers.NetworkClient.RegisterCallback<MyEventAmmoUpdate>(OnAmmoUpdate);\n            Peers.NetworkClient.RegisterCallback<MyEventSpeacialWeapon>(OnSpecialWeaponEvent);\n            Peers.NetworkClient.RegisterCallback<MyEventChat>(OnChatMessage);\n            Peers.NetworkClient.RegisterCallback<MyEventChooseFactionResponse>(OnChooseFactionResponse);\n            Peers.NetworkClient.RegisterCallback<MyEventShipConfigUpdate>(OnUpdateConfig);\n            Peers.NetworkClient.RegisterCallback<MyEventInventoryUpdate>(OnInventoryUpdate);\n            Peers.NetworkClient.RegisterCallback<MyEventLock>(OnLock);\n            Peers.NetworkClient.RegisterCallback<MyEventLockResult>(OnLockResult);\n            Peers.NetworkClient.RegisterCallback<MyEventHealthUpdate>(OnHealthUpdate);\n            Peers.NetworkClient.RegisterCallback<MyEventAfterburner>(OnAfterburner);\n            Peers.NetworkClient.RegisterCallback<MyEventPilotDie>(OnPilotDie);\n            Peers.NetworkClient.RegisterCallback<MyEventNotification>(OnNotify);\n            Peers.NetworkClient.RegisterCallback<MyEventCutOut>(OnCutOut);\n            Peers.NetworkClient.RegisterCallback<MyEventFlags>(OnUpdateFlags);\n            Peers.NetworkClient.RegisterCallback<MyEventNewEntity>(OnNewEntity);\n            Peers.NetworkClient.RegisterCallback<MyEventAddExplosion>(OnAddExplosion);\n            Peers.NetworkClient.RegisterCallback<MyEventDummyFlags>(OnUpdateDummyFlags);\n            Peers.NetworkClient.RegisterCallback<MyEventAddVoxelHand>(OnAddVoxelHand);\n            Peers.NetworkClient.RegisterCallback<MyEventPlayDialogue>(OnPlayDialogue);\n            Peers.NetworkClient.RegisterCallback<MyEventPlaySound>(OnPlaySound);\n            Peers.NetworkClient.RegisterCallback<MyEventHeadshake>(OnHeadshake);\n            Peers.NetworkClient.RegisterCallback<MyEventSetActorFaction>(OnSetActorFaction);\n            Peers.NetworkClient.RegisterCallback<MyEventSetFactionRelation>(OnSetFactionRelation);\n            Peers.NetworkClient.RegisterCallback<MyEventUpdateRotationFast>(OnUpdateRotationFast);\n            Peers.NetworkClient.RegisterCallback<MyEventFriendlyFire>(OnFriendlyFire);\n            Peers.NetworkClient.RegisterCallback<MyEventSetEntityFaction>(OnSetEntityFaction);\n            Peers.NetworkClient.RegisterCallback<MyEventMusicTransition>(OnMusicTransition);\n            Peers.NetworkClient.RegisterCallback<MyEventEvent>(OnEvent);\n            Peers.NetworkClient.RegisterCallback<MyEventGlobalFlag>(OnGlobalFlag);\n\n            if (!IsHost) // Messages only send by host\n            {\n                Peers.NetworkClient.RegisterCallback<MyEventSpawnBot>(OnSpawnBot);\n                Peers.NetworkClient.RegisterCallback<MyEventMissionProgress>(OnMissionProgress);\n                Peers.NetworkClient.RegisterCallback<MyEventMissionUpdateVars>(OnMissionUpdateVars);\n                Peers.NetworkClient.RegisterCallback<MyEventCountdown>(OnCountdown);\n            }\n\n            if (IsHost) // Messages only received by host\n            {\n                Peers.NetworkClient.RegisterCallback<MyEventEnterGame>(OnEnterGame);\n                Peers.NetworkClient.RegisterCallback<MyEventGetPlayerList>(OnGetPlayerList);\n                Peers.NetworkClient.RegisterCallback<MyEventChooseFaction>(OnChooseFaction);\n                Peers.NetworkClient.RegisterCallback<MyEventSavePlayer>(OnSavePlayer);\n            }\n        }\n\n        private void UnregisterCallbacks()\n        {\n            Peers.NetworkClient.RemoveCallback<MyEventNewPlayer>();\n            Peers.NetworkClient.RemoveCallback<MyEventUpdatePosition>();\n            Peers.NetworkClient.RemoveCallback<MyEventUpdatePositionFast>();\n            Peers.NetworkClient.RemoveCallback<MyEventRespawn>();\n            Peers.NetworkClient.RemoveCallback<MyEventShoot>();\n            Peers.NetworkClient.RemoveCallback<MyEventAmmoExplosion>();\n            Peers.NetworkClient.RemoveCallback<MyEventDoDamage>();\n            Peers.NetworkClient.RemoveCallback<MyEventProjectileHit>();\n            Peers.NetworkClient.RemoveCallback<MyEventDie>();\n            Peers.NetworkClient.RemoveCallback<MyEventStatsUpdate>();\n            Peers.NetworkClient.RemoveCallback<MyEventSetFaction>();\n            Peers.NetworkClient.RemoveCallback<MyEventAmmoUpdate>();\n            Peers.NetworkClient.RemoveCallback<MyEventSpeacialWeapon>();\n            Peers.NetworkClient.RemoveCallback<MyEventChat>();\n            Peers.NetworkClient.RemoveCallback<MyEventChooseFactionResponse>();\n            Peers.NetworkClient.RemoveCallback<MyEventShipConfigUpdate>();\n            Peers.NetworkClient.RemoveCallback<MyEventInventoryUpdate>();\n            Peers.NetworkClient.RemoveCallback<MyEventLock>();\n            Peers.NetworkClient.RemoveCallback<MyEventLockResult>();\n            Peers.NetworkClient.RemoveCallback<MyEventHealthUpdate>();\n            Peers.NetworkClient.RemoveCallback<MyEventAfterburner>();\n            Peers.NetworkClient.RemoveCallback<MyEventPilotDie>();\n            Peers.NetworkClient.RemoveCallback<MyEventNotification>();\n            Peers.NetworkClient.RemoveCallback<MyEventCutOut>();\n            Peers.NetworkClient.RemoveCallback<MyEventFlags>();\n            Peers.NetworkClient.RemoveCallback<MyEventNewEntity>();\n            Peers.NetworkClient.RemoveCallback<MyEventAddExplosion>();\n            Peers.NetworkClient.RemoveCallback<MyEventDummyFlags>();\n            Peers.NetworkClient.RemoveCallback<MyEventAddVoxelHand>();\n            Peers.NetworkClient.RemoveCallback<MyEventPlayDialogue>();\n            Peers.NetworkClient.RemoveCallback<MyEventPlaySound>();\n            Peers.NetworkClient.RemoveCallback<MyEventHeadshake>();\n            Peers.NetworkClient.RemoveCallback<MyEventSetActorFaction>();\n            Peers.NetworkClient.RemoveCallback<MyEventSetFactionRelation>();\n            Peers.NetworkClient.RemoveCallback<MyEventUpdateRotationFast>();\n            Peers.NetworkClient.RemoveCallback<MyEventFriendlyFire>();\n            Peers.NetworkClient.RemoveCallback<MyEventSetEntityFaction>();\n            Peers.NetworkClient.RemoveCallback<MyEventMusicTransition>();\n            Peers.NetworkClient.RemoveCallback<MyEventEvent>();\n            Peers.NetworkClient.RemoveCallback<MyEventGlobalFlag>();\n\n            if (!IsHost)\n            {\n                Peers.NetworkClient.RemoveCallback<MyEventSpawnBot>();\n                Peers.NetworkClient.RemoveCallback<MyEventMissionUpdateVars>();\n                Peers.NetworkClient.RemoveCallback<MyEventMissionProgress>();\n                Peers.NetworkClient.RemoveCallback<MyEventCountdown>();\n            }\n            if (IsHost)\n            {\n                Peers.NetworkClient.RemoveCallback<MyEventEnterGame>();\n                Peers.NetworkClient.RemoveCallback<MyEventGetPlayerList>();\n                Peers.NetworkClient.RemoveCallback<MyEventChooseFaction>();\n                Peers.NetworkClient.RemoveCallback<MyEventSavePlayer>();\n            }\n        }\n\n        void Peers_PlayerDisconnected(MyPlayerRemote player)\n        {\n            if (player.UserId == Peers.HostUserId)\n            {\n                // TODO: Connection to host lost, shutdown\n                var handler = OnShutdown;\n                if (handler != null)\n                {\n                    handler();\n                }\n            }\n            else\n            {\n                // Close all entities of disconnected player\n                foreach (var e in MyEntities.GetEntities())\n                {\n                    if (e.EntityId.HasValue && e.EntityId.Value.PlayerId == player.PlayerId)\n                    {\n                        e.MarkForClose();\n                    }\n                }\n            }\n\n            if (player.Ship != null)\n            {\n                player.Ship.MarkForClose();\n                player.Ship = null;\n            }            \n\n            if (IsHost)\n            {\n                ClearLocks(player.PlayerId);\n\n                var playerLeftMsg = new MyEventPlayerStateChanged();\n                playerLeftMsg.UserId = player.UserId;\n                playerLeftMsg.NewState = MyMultiplayerStateEnum.Disconnected;\n                Peers.SendServer(ref playerLeftMsg);\n            }\n\n            Notify(MyTextsWrapperEnum.MP_XHasLeft, player.GetDisplayName());\n        }\n\n        private void DisableCheats()\n        {\n            foreach (var c in MyGameplayCheats.AllCheats)\n            {\n                MyGameplayCheats.EnableCheat(c.CheatEnum, false);\n            }\n        }\n\n        // Sends and receives messages\n        public void Update()\n        {\n            Debug.Assert(MyGuiScreenGamePlay.Static != null);\n\n            if (IsRunning)\n            {\n                TestRespawn();\n                UpdateMissionVars();\n                SetPriority();\n                AnnounceGame();\n\n                if (m_savePlayer)\n                {\n                    SavePlayer();\n                    m_savePlayer = false;\n                }\n            }\n        }\n\n        private void AnnounceGame()\n        {\n            if (!Peers.IsConnectedToServer)\n            {\n                try\n                {\n                    Peers.NetworkClient.RemoveCallback<MyEventLoginResponse>();\n                    Peers.NetworkClient.RemoveCallback<MyEventCreateGameResponse>();\n                    LastCreateGameRequest.JoinMode = JoinMode;\n                    LastCreateGameRequest.SectorName = MyGuiScreenGamePlay.Static.GetGameName(GameType, MyGameplayConstants.GetGameplayDifficulty());\n                    Peers.SendServer(ref LastCreateGameRequest);\n                }\n                catch\n                {\n                }\n            }\n        }\n\n        private void SetPriority()\n        {\n            // All players in coop has same priority as host\n            if (IsHost && IsStory() && MySession.PlayerShip != null)\n            {\n                foreach (var peer in Peers.Players)\n                {\n                    if (peer.Ship != null)\n                    {\n                        peer.Ship.AIPriority = MySession.PlayerShip.AIPriority;\n                    }\n                }\n            }\n        }\n\n        public int GetFactionPlayerCount(MyMwcObjectBuilder_FactionEnum faction)\n        {\n            int count = 0;\n            foreach (var p in Peers.Players)\n            {\n                if (p.Faction == faction)\n                    count++;\n            }\n            if (MySession.Static.Player.Faction == faction) count++;\n            return count;\n        }\n\n        public MyMwcObjectBuilder_FactionEnum ChooseFaction(MyMwcObjectBuilder_FactionEnum preferredFaction = MyMwcObjectBuilder_FactionEnum.None)\n        {\n            if (IsStory())\n            {\n                Debug.Assert(IsHost);\n                return MySession.Static.Player.Faction;\n            }\n            else\n            {\n                m_factions.Clear();\n\n                foreach (var k in m_respawnPoints)\n                {\n                    m_factions[k.Key] = 0;\n                }\n\n                foreach (var p in Peers.Players)\n                {\n                    if (m_factions.ContainsKey((int)p.Faction))\n                    {\n                        m_factions[(int)p.Faction]++;\n                    }\n                }\n                if (m_factions.ContainsKey((int)MySession.Static.Player.Faction))\n                {\n                    m_factions[(int)MySession.Static.Player.Faction]++;\n                }\n\n                m_possibleFactionCache.Clear();\n\n                int minFactionCount = int.MaxValue;\n                foreach (var f in m_factions)\n                {\n                    if (f.Value < minFactionCount)\n                    {\n                        m_possibleFactionCache.Clear();\n                        m_possibleFactionCache.Add(f.Key);\n                        minFactionCount = f.Value;\n                    }\n                    else if (f.Value == minFactionCount)\n                    {\n                        m_possibleFactionCache.Add(f.Key);\n                    }\n                }\n\n                if (m_possibleFactionCache.Contains((int)preferredFaction))\n                    return preferredFaction;\n                else if (m_possibleFactionCache.Count > 0)\n                    return (MyMwcObjectBuilder_FactionEnum)MyMwcUtils.GetRandomItem(m_possibleFactionCache);\n                else\n                    return MyMwcObjectBuilder_FactionEnum.Euroamerican; // Default faction\n            }\n        }\n\n        bool IsControlledByMe(MyEntity entity)\n        {\n            if (entity == null || !entity.EntityId.HasValue)\n                return false;\n\n            bool hasMyId = entity.EntityId.Value.PlayerId == MyEntityIdentifier.CurrentPlayerId || (entity.EntityId.Value.PlayerId == 0 && IsHost);\n            bool isLockedByMe = IsLockedByMe(entity);\n            bool isLockedByOther = IsLockedByOtherPlayer(entity);\n\n            return (hasMyId && !isLockedByOther) || isLockedByMe;\n        }\n\n        bool CheckSenderId<T>(T msg, uint id)\n            where T : struct, IMyEvent\n        {\n            if (msg.SenderConnection == null)\n            {\n                return false;\n            }\n\n            var senderPlayer = (MyPlayerRemote)msg.SenderConnection.Tag;\n            var entityId = new MyEntityIdentifier(id);\n\n            if (senderPlayer.UserId == Peers.HostUserId && entityId.PlayerId == 0)\n                return true;\n\n            if (m_lockedEntities.ContainsKey(id))\n            {\n                return true;\n            }\n\n            MyPlayerRemote ownerPlayer;\n            bool playerExists = Peers.TryGetPlayer(entityId.PlayerId, out ownerPlayer);\n            if (!playerExists)\n            {\n                Alert(\"Owner of this entity does not exist!\", msg.SenderEndpoint, msg.EventType);\n                return false;\n            }\n\n            if (entityId.PlayerId == 0 && Peers.HostUserId != ownerPlayer.UserId)\n            {\n                Alert(\"Only host can update neutral entities!\", msg.SenderEndpoint, msg.EventType);\n                return false;\n            }\n\n            if (senderPlayer.PlayerId != entityId.PlayerId)\n            {\n                Alert(\"Entity Id send by sender is not his!\", msg.SenderEndpoint, msg.EventType);\n                return false;\n            }\n\n            return true;\n        }\n\n        void Alert(string alertFormat, IPEndPoint endpoint, MyEventEnum eventType)\n        {\n            AlertVerbose(alertFormat, endpoint, eventType);\n        }\n\n        [Conditional(\"DEBUG\")]\n        void AlertVerbose(string alertFormat, IPEndPoint endpoint, MyEventEnum eventType)\n        {\n            var player = Peers.Players.FirstOrDefault(p => p.Connection.RemoteEndpoint == endpoint);\n            if (player != null)\n            {\n                string playerInfo = String.Format(\" UserId: {0}, GameUserId: {1}, EndPoint: {2}\", player.UserId, player.PlayerId, player.Connection.RemoteEndpoint);\n                MyTrace.Send(TraceWindow.MultiplayerAlerts, eventType.ToString() + \": \" + alertFormat + playerInfo);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Sessions/Multiplayer/MyMultiplayerLobby.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.Networking.Multiplayer;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing Lidgren.Network;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing System.Net;\nusing SysUtils;\nusing MinerWars.AppCode.Game.World;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.AppCode.Game.Entities.Weapons;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.AppCode.Game.GUI.Helpers;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Sessions.Multiplayer;\nusing KeenSoftwareHouse.Library.Trace;\nusing SysUtils.Utils;\nusing System.Diagnostics;\nusing System.Timers;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Networking.SectorService;\n\nnamespace MinerWars.AppCode.Game.Sessions\n{\n    delegate void GameCreatedHandler(MyResultCodeEnum resultCode);\n    delegate void GameListReceivedHandler(List<MyGameInfo> games);\n    delegate void GameJoinedHandler(MyGameInfo game, MyResultCodeEnum resultCode, MyMwcObjectBuilder_Checkpoint checkpointBuilder);\n\n    class MyMultiplayerLobby\n    {\n        private GameCreatedHandler m_createGameAction;\n        private GameListReceivedHandler m_gameListReceivedAction;\n        private GameJoinedHandler m_gameJoinedAction;\n        private Action m_gameEnterDisallowedAction;\n        private Action m_gameDownloadingSector;\n\n        private MyNatIntroduction m_natIntroduction;\n\n        private MyMwcObjectBuilder_FactionEnum m_faction;\n\n        private int m_introductionTryCount = 0;\n        private Timer m_introductionTimer = new Timer();\n        private Timer m_hostTimer = new Timer();\n\n        private static MyMultiplayerLobby m_instance;\n\n        private MyGameInfo m_game;\n\n        private object m_syncRoot = new object();\n\n        public static MyMultiplayerLobby Static\n        {\n            get\n            {\n                return m_instance ?? (m_instance = new MyMultiplayerLobby());\n            }\n        }\n\n        public void HostGame(string sectorName, string password, MyGameTypes gameType, GameCreatedHandler onGameCreated, MyJoinMode joinMode, MyGameplayDifficultyEnum difficulty)\n        {\n            Debug.Assert(!MyMultiplayerGameplay.IsRunning);\n\n            MyMultiplayerPeers.Static.Restart();\n            m_introductionTimer.Dispose();\n            m_hostTimer.Dispose();\n\n            m_createGameAction = onGameCreated;\n\n            MyEventCreateGame createGameRequest = new MyEventCreateGame();\n            createGameRequest.SectorName = sectorName;\n            createGameRequest.Password = password;\n            createGameRequest.Type = gameType;\n            createGameRequest.JoinMode = joinMode;\n            createGameRequest.Difficulty = difficulty;\n            MyMultiplayerGameplay.Static.JoinMode = joinMode;\n            SetCallback<MyEventCreateGameResponse>(OnCreateGameResponse);\n            MyMultiplayerPeers.Static.NetworkClient.RegisterCallback<MyEventLoginResponse>(OnLoginResponse);\n\n            m_hostTimer = new Timer();\n            m_hostTimer.AutoReset = false;\n            m_hostTimer.Elapsed += new ElapsedEventHandler(m_hostTimer_Elapsed);\n            m_hostTimer.Interval = 10000;\n            m_hostTimer.Start();\n\n            MyMultiplayerGameplay.Static.LastCreateGameRequest = createGameRequest;\n            MyMultiplayerPeers.Static.SendServer(ref createGameRequest);\n        }\n\n        void m_hostTimer_Elapsed(object sender, ElapsedEventArgs e)\n        {\n            m_hostTimer.Dispose();\n\n            var handler = m_createGameAction;\n            if (handler != null)\n            {\n                handler(MyResultCodeEnum.TIMEOUT);\n            }\n        }\n\n        public void GetGames(GameListReceivedHandler onGameListReceived, string filter, MyGameTypes gameTypeFilter)\n        {\n            MyMultiplayerPeers.Static.Restart();\n            m_introductionTimer.Dispose();\n            m_hostTimer.Dispose();\n\n            m_gameListReceivedAction = onGameListReceived;\n\n            MyEventGetGames gamesRequest = new MyEventGetGames();\n            gamesRequest.NameFilter = filter;\n            gamesRequest.GameTypeFilter = gameTypeFilter;\n            SetCallback<MyEventGetGamesResponse>(OnGetGamesResponse);\n\n            MyMultiplayerPeers.Static.SendServer(ref gamesRequest);\n        }\n\n        public void CancelGetGames()\n        {\n            m_gameListReceivedAction = null;\n        }\n\n        public void OnLoginResponse(ref MyEventLoginResponse msg)\n        {\n            if (msg.MultiplayerUserId != 0)\n            {\n                MyMwcLog.WriteLine(\"Setting multiplayer user id: \" + msg.MultiplayerUserId);\n                MyClientServer.LoggedPlayer.SetMultiplayerUserId(msg.MultiplayerUserId);\n            }\n        }\n\n        public void JoinGame(MyGameInfo gameInfo, string password, GameJoinedHandler onGameJoined, Action onGameEnterDisallowed, Action onDownloadingSector)\n        {\n            MyMultiplayerPeers.Static.Restart();\n            m_introductionTimer.Dispose();\n            m_hostTimer.Dispose();\n\n            MyMultiplayerPeers.Static.HostUserId = -1;\n            m_game = gameInfo;\n\n            m_gameJoinedAction = onGameJoined;\n            m_gameDownloadingSector = onDownloadingSector;\n            m_gameEnterDisallowedAction = onGameEnterDisallowed;\n            MyMultiplayerPeers.Static.NetworkClient.ClearCallbacks();\n            MyMultiplayerPeers.Static.DisconnectExceptServer();\n\n            MyMultiplayerPeers.Static.Players.Clear();\n\n            MyEventJoinGame joinRequest = new MyEventJoinGame();\n            joinRequest.GameId = gameInfo.GameId;\n            joinRequest.Password = password;\n\n            SetCallback<MyEventJoinGameResponse>(OnJoinGameResponse);\n            MyMultiplayerPeers.Static.NetworkClient.RegisterCallback<MyEventLoginResponse>(OnLoginResponse);\n\n            MyMultiplayerPeers.Static.NetworkClient.NatIntroductionSuccess = NetworkClient_NatIntroductionSuccess;\n\n            m_natIntroduction = new MyNatIntroduction(MyMultiplayerPeers.Static.NetworkClient);\n            MyMultiplayerPeers.Static.NetworkClient.PeerConnected += new Action<NetConnection>(NetworkClient_PeerConnected);\n            MyMultiplayerPeers.Static.SendServer(ref joinRequest);\n\n            MyMultiplayerGameplay.Log(\"JOIN 1. - Join game\");\n        }\n\n        void NetworkClient_PeerConnected(NetConnection obj)\n        {\n            MyMultiplayerGameplay.Log(\"Connection successful, EP: \" + obj.RemoteEndpoint.ToString());\n            UpdateLobby();\n        }\n\n        #region CALLBACKS\n        private void ClearCallbacks()\n        {\n            MyMultiplayerPeers.Static.NetworkClient.RemoveCallback<MyEventCreateGameResponse>();\n            MyMultiplayerPeers.Static.NetworkClient.RemoveCallback<MyEventGetGamesResponse>();\n            MyMultiplayerPeers.Static.NetworkClient.RemoveCallback<MyEventJoinGameResponse>();\n            MyMultiplayerPeers.Static.NetworkClient.RemoveCallback<MyEventGetPlayerListResponse>();\n            MyMultiplayerPeers.Static.NetworkClient.RemoveCallback<MyEventEnterGameResponse>();\n            MyMultiplayerPeers.Static.NetworkClient.RemoveCallback<MyEventCheckpoint>();\n        }\n\n        private void SetCallback<T>(EventCallback<T> callback)\n            where T : struct, IMyEvent\n        {\n            ClearCallbacks();\n            MyMultiplayerPeers.Static.NetworkClient.RegisterCallback<T>(callback);\n        }\n\n        private void OnCreateGameResponse(ref MyEventCreateGameResponse msg)\n        {\n            m_hostTimer.Dispose();\n\n            var handler = m_createGameAction;\n            if (handler != null)\n            {\n                handler(MyResultCodeEnum.OK);\n            }\n        }\n\n        private void OnGetGamesResponse(ref MyEventGetGamesResponse msg)\n        {\n            var handler = m_gameListReceivedAction;\n            if (handler != null)\n            {\n                handler(msg.Games);\n            }\n        }\n\n        private void OnJoinGameResponse(ref MyEventJoinGameResponse msg)\n        {\n            // Report errors\n            if (msg.ResultCode != MyResultCodeEnum.OK)\n            {\n                var handler = m_gameJoinedAction;\n                if (handler != null)\n                {\n                    handler(m_game, msg.ResultCode, null);\n                }\n                return;\n            }\n\n            MyMultiplayerGameplay.Log(\"JOIN 2.a - Join game success (#JoinGameResponse)\");\n\n            MyMultiplayerPeers.Static.NetworkClient.NatIntroductionSuccess = NetworkClient_NatIntroductionSuccessHost;\n            MyMultiplayerPeers.Static.HostUserId = msg.HostUserId;\n\n            lock (m_syncRoot)\n            {\n                m_introductionTryCount = 0;\n                m_introductionTimer = new Timer();\n                m_introductionTimer.AutoReset = true;\n                m_introductionTimer.Elapsed += new ElapsedEventHandler(m_hostIntroductionTimer_Elapsed);\n                m_introductionTimer.Interval = 900; // 900ms\n                m_introductionTimer.Start();\n            }\n\n            RequestHostIntroduction(m_game.GameId, false);\n        }\n\n        void m_hostIntroductionTimer_Elapsed(object sender, ElapsedEventArgs e)\n        {\n            lock (m_syncRoot)\n            {\n                m_introductionTryCount++;\n                if (m_introductionTryCount > 5)\n                {\n                    m_introductionTimer.Dispose();\n\n                    if (MyFakes.ENABLE_MULTIPLAYER_RELAY)\n                    {\n                        // Use relaying, need to get host public EP first\n                        MyMultiplayerPeers.Static.NetworkClient.NatIntroductionSuccess = null;\n                        MyMultiplayerPeers.Static.NetworkClient.RegisterCallback<MyEventDirectIntroductionResponse>(OnHostDirectIntroduction);\n                        RequestHostIntroduction(m_game.GameId, true);\n                    }\n                }\n                else\n                {\n                    RequestHostIntroduction(m_game.GameId, false);\n                }\n            }\n        }\n\n        void RequestHostIntroduction(uint gameId, bool relay)\n        {\n            // Allow only relayed introduction\n            if (MyFakes.MULTIPLAYER_RELAY_TEST && !relay)\n                return;\n\n            var introRequest = new MyEventRequestIntroduction();\n            introRequest.GameId = gameId;\n            introRequest.UserList = new List<int>();\n            introRequest.RelayIntroduction = relay;\n            MyMultiplayerPeers.Static.SendServer(ref introRequest);\n\n            MyMultiplayerGameplay.Log(\"JOIN 2.b - Requesting NAT introduction to host, try no: \" + m_introductionTryCount);\n        }\n\n        void NetworkClient_NatIntroductionSuccessHost(IPEndPoint endpoint, string token)\n        {\n            int userId;\n            if (!int.TryParse(token, out userId))\n                return;\n\n            if (userId == MyMultiplayerPeers.Static.HostUserId)\n            {\n                // NAT intro from host received\n                m_introductionTimer.Dispose();\n\n                MyMultiplayerPeers.Static.NetworkClient.NatIntroductionSuccess = NetworkClient_NatIntroductionSuccess;\n\n                MyEventGetPlayerList msg = new MyEventGetPlayerList();\n                SetCallback<MyEventGetPlayerListResponse>(OnGetPlayerListResponse);\n                MyMultiplayerPeers.Static.NetworkClient.Connect(endpoint, ref msg);\n                MyMultiplayerGameplay.Log(\"JOIN 3. - Host NAT introduction success, sending player list request\");\n            }\n        }\n\n        void OnHostDirectIntroduction(ref MyEventDirectIntroductionResponse msg)\n        {\n            MyMultiplayerPeers.Static.NetworkClient.NatIntroductionSuccess = NetworkClient_NatIntroductionSuccess;\n            MyEventGetPlayerList getPlayersMsg = new MyEventGetPlayerList();\n            SetCallback<MyEventGetPlayerListResponse>(OnGetPlayerListResponse);\n\n            var hostRelayConnection = MyMultiplayerPeers.Static.NetworkClient.GetRelayedConnection(msg.EndPoint);\n            MyMultiplayerPeers.Static.NetworkClient.Send(ref getPlayersMsg, hostRelayConnection, NetDeliveryMethod.ReliableOrdered, 0);\n\n            MyMultiplayerGameplay.Log(\"JOIN 3. - Host NAT introduction failure, RELAYING, sending player list request\");\n        }\n\n        void OnGetPlayerListResponse(ref MyEventGetPlayerListResponse msg)\n        {\n            MyMultiplayerGameplay.LogPlayerList(ref msg);\n\n            // Disconnect from players (connection to host is not dropped)\n            foreach (var player in MyMultiplayerPeers.Static.Players)\n            {\n                if (player.UserId != MyMultiplayerPeers.Static.HostUserId)\n                {\n                    player.Connection.Disconnect(String.Empty);\n                }\n            }\n            MyMultiplayerPeers.Static.Players.Clear();\n\n            // Start connecting players again\n            foreach (var playerInfo in msg.PlayerList)\n            {\n                var playerRemote = new MyPlayerRemote(new StringBuilder(playerInfo.DisplayName), playerInfo.UserId, playerInfo.PlayerId);\n                if (playerRemote.UserId == MyMultiplayerPeers.Static.HostUserId)\n                {\n                    playerRemote.Connection = msg.SenderConnection;\n                    msg.SenderConnection.Tag = playerRemote;\n                }\n                MyMultiplayerPeers.Static.Players.Add(playerRemote);\n            }\n\n            MyMultiplayerGameplay.Log(\"JOIN 4.a - Player list received (#OnGetPlayerListResponse)\");\n\n            m_natIntroduction = new MyNatIntroduction(MyMultiplayerPeers.Static.NetworkClient);\n            m_natIntroduction.SetRequiredPlayers(MyMultiplayerPeers.Static.Players);\n\n            ClearCallbacks();\n\n            var userListCopy = MyMultiplayerPeers.Static.Players.Where(s => s != null).Select(s => s.UserId).ToList();\n\n            StartClientIntroductionTimer(userListCopy);\n            RequestPlayerIntroduction(userListCopy, false);\n            UpdateLobby();\n        }\n\n        private void StartClientIntroductionTimer(List<int> userList)\n        {\n            lock (m_syncRoot)\n            {\n                m_introductionTryCount = 0;\n                m_introductionTimer = new Timer();\n                m_introductionTimer.AutoReset = true;\n                m_introductionTimer.Elapsed += new ElapsedEventHandler((sender, e) => m_clientIntroductionTimer_Elapsed(sender, e, userList));\n                m_introductionTimer.Interval = 900; // 900ms\n                m_introductionTimer.Start();\n            }\n        }\n\n        void m_clientIntroductionTimer_Elapsed(object sender, ElapsedEventArgs e, List<int> userList)\n        {\n            lock (m_syncRoot)\n            {\n                m_introductionTryCount++;\n                if (m_introductionTryCount > 5)\n                {\n                    m_introductionTimer.Dispose();\n\n                    if (MyFakes.ENABLE_MULTIPLAYER_RELAY)\n                    {\n                        // Use relaying, need to get player public EP first\n                        MyMultiplayerPeers.Static.NetworkClient.NatIntroductionSuccess = null;\n                        MyMultiplayerPeers.Static.NetworkClient.RegisterCallback<MyEventDirectIntroductionResponse>(OnClientDirectIntroduction);\n                        RequestPlayerIntroduction(userList, true);\n                    }\n                }\n                else\n                {\n                    RequestPlayerIntroduction(userList, false);\n                }\n            }\n        }\n\n        void RequestPlayerIntroduction(List<int> userList, bool relay)\n        {\n            // Allow only relayed introduction\n            if (MyFakes.MULTIPLAYER_RELAY_TEST && !relay)\n                return;\n\n            MyEventRequestIntroduction request = new MyEventRequestIntroduction();\n            request.GameId = m_game.GameId;\n            request.UserList = userList;\n            request.RelayIntroduction = relay;\n            MyMultiplayerPeers.Static.SendServer(ref request);\n\n            MyMultiplayerGameplay.Log(\"JOIN 4.b - Requesting player introduction from server, try no: \" + m_introductionTryCount);\n        }\n\n        void NetworkClient_NatIntroductionSuccess(IPEndPoint endpoint, string token)\n        {\n            int userId;\n            if (!int.TryParse(token, out userId))\n                return;\n\n            if (m_natIntroduction != null && userId != MyMultiplayerPeers.Static.HostUserId)\n            {\n                m_natIntroduction.OnIntroduce(endpoint, token);\n                MyMultiplayerGameplay.Log(\"JOIN 4.c - Nat introduced to \" + token + \", EP: \" + endpoint.ToString());\n            }\n        }\n\n        private void OnClientDirectIntroduction(ref MyEventDirectIntroductionResponse msg)\n        {\n            if (m_natIntroduction != null && msg.UserId != MyMultiplayerPeers.Static.HostUserId)\n            {\n                m_natIntroduction.OnDirectIntroduce(msg.UserId, MyMultiplayerPeers.Static.NetworkClient.GetRelayedConnection(msg.EndPoint));\n                MyMultiplayerGameplay.Log(\"JOIN 4.c - RELAYED, Directly introduced to \" + msg.UserId + \", EP: \" + msg.EndPoint);\n            }\n            UpdateLobby();\n        }\n\n        private void UpdateLobby()\n        {\n            if (m_natIntroduction != null && m_natIntroduction.IsAllConnected())\n            {\n                OnAllPeersConnected();\n                m_natIntroduction = null;\n            }\n        }\n\n        private void OnAllPeersConnected()\n        {\n            m_introductionTimer.Dispose();\n\n            ClearCallbacks();\n            // When somebody was faster, I can receive new player list\n            MyMultiplayerPeers.Static.NetworkClient.RegisterCallback<MyEventGetPlayerListResponse>(OnGetPlayerListResponse);\n            MyMultiplayerPeers.Static.NetworkClient.RegisterCallback<MyEventEnterGameResponse>(OnEnterGameResponse);\n\n            var msg = new MyEventEnterGame();\n            msg.ConnectedPlayers = MyMultiplayerPeers.Static.Players.Select(s => s.UserId).ToList();\n            msg.PlayerInfo = new MyPlayerInfo()\n            {\n                DisplayName = MyClientServer.LoggedPlayer.GetDisplayName().ToString(),\n                UserId = MyClientServer.LoggedPlayer.GetUserId(),\n                Faction = MyMwcObjectBuilder_FactionEnum.None,\n                PlayerId = 0, // Host will assign\n            };\n\n            MyMultiplayerPeers.Static.SendHost(ref msg);\n            MyMultiplayerGameplay.Log(\"JOIN 5. - All peers connected, entering game (#EnterGame)\");\n        }\n\n        private void OnGameEnterDisallowed()\n        {\n            ClearCallbacks();\n            MyMultiplayerGameplay.Log(\"JOIN 6b. - Game enter disallowed (#EnterGameResponse)\");\n\n            if (m_gameEnterDisallowedAction != null)\n                m_gameEnterDisallowedAction();\n        }\n\n        private void OnEnterGameResponse(ref MyEventEnterGameResponse msg)\n        {\n            SetCallback<MyEventCheckpoint>(OnReceiveCheckpoint);\n\n            if (!msg.Allowed)\n            {\n                OnGameEnterDisallowed();\n                return;\n            }\n\n            MyEntityIdentifier.CurrentPlayerId = msg.PlayerId;\n\n            var newPlayerEvent = new MyEventNewPlayer();\n            newPlayerEvent.PlayerInfo = new MyPlayerInfo()\n            {\n                DisplayName = MyClientServer.LoggedPlayer.GetDisplayName().ToString(),\n                UserId = MyClientServer.LoggedPlayer.GetUserId(),\n                Faction = MyMwcObjectBuilder_FactionEnum.None,\n                PlayerId = msg.PlayerId,\n            };\n\n            MyMultiplayerPeers.Static.SendToAll(ref newPlayerEvent, NetDeliveryMethod.ReliableOrdered, 0);\n            MyMultiplayerGameplay.Log(\"JOIN 6. - Game entered (#EnterGameResponse), sending NewPlayer, requesting sector\");\n            MyMultiplayerGameplay.Log(\"MTU: \" + msg.SenderConnection.GetMTU());\n\n            var handler = m_gameDownloadingSector;\n            if (handler != null)\n            {\n                handler();\n            }\n        }\n\n        private void OnReceiveCheckpoint(ref MyEventCheckpoint sectorData)\n        {\n            MyMultiplayerGameplay.Log(\"JOIN 7. - Checkpoint received (#SectorData), join completed, loading\");\n            MyMultiplayerGameplay.Log(\"MTU: \" + sectorData.SenderConnection.GetMTU());\n            if (MySession.PlayerShip != null)\n            {\n                MyMultiplayerGameplay.StoredShip = (MyMwcObjectBuilder_SmallShip)MySession.PlayerShip.GetObjectBuilder(false);\n            }\n\n            var loadedPlayer = sectorData.Checkpoint.LoadCoopPlayer(MyClientServer.LoggedPlayer.GetDisplayName().ToString());\n            if (loadedPlayer != null)\n            {\n                var faction = sectorData.Checkpoint.PlayerObjectBuilder.ShipObjectBuilder.Faction;\n                sectorData.Checkpoint.PlayerObjectBuilder = loadedPlayer;\n                sectorData.Checkpoint.PlayerObjectBuilder.ShipObjectBuilder = new MyMwcObjectBuilder_SmallShip_Player(sectorData.Checkpoint.PlayerObjectBuilder.ShipObjectBuilder);\n                sectorData.Checkpoint.PlayerObjectBuilder.ShipObjectBuilder.Faction = faction;\n            }\n            else\n            {\n                // Set default values for playership (coop)\n                sectorData.Checkpoint.PlayerObjectBuilder.ShipConfigObjectBuilder = null;\n                sectorData.Checkpoint.PlayerObjectBuilder.ShipObjectBuilder.ReflectorLight = true;\n                sectorData.Checkpoint.PlayerObjectBuilder.ShipObjectBuilder.ReflectorLongRange = false;\n                sectorData.Checkpoint.PlayerObjectBuilder.ShipObjectBuilder.IsDummy = false;\n            }\n\n            if (sectorData.Checkpoint.CurrentSector.SectorType == MyMwcSectorTypeEnum.SANDBOX && !MinerWars.AppCode.Networking.MySteam.IsActive)\n            {\n                sectorData.Checkpoint.PlayerObjectBuilder.Money = (float)MySectorServiceClient.GetCheckedInstance().GetGameMoney();\n                MySectorServiceClient.SafeClose();\n            }\n            else\n            {\n                // Keep money\n                sectorData.Checkpoint.PlayerObjectBuilder.Money = MySession.Static != null ? MySession.Static.Player.Money : 0;\n            }\n\n            MyMultiplayerGameplay.StartBufferingGameEvents();\n\n            var handler = m_gameJoinedAction;\n            if (handler != null)\n            {\n                handler(m_game, MyResultCodeEnum.OK, sectorData.Checkpoint); // Will handle sector loading\n            }\n        }\n        \n        #endregion\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Sessions/Multiplayer/MyMultiplayerPeers.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing Lidgren.Network;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.World;\nusing MinerWars.AppCode.Game.Entities;\nusing System.Net;\nusing System.Threading;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing SysUtils;\nusing MinerWars.CommonLIB.AppCode.Networking.Multiplayer;\nusing MinerWars.AppCode.Game.Utils;\nusing System.Diagnostics;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.AppCode.Networking;\n\nnamespace MinerWars.AppCode.Game.Sessions.Multiplayer\n{\n    delegate void ConnectionHandler(NetConnection connection);\n    delegate void PlayerHandler(MyPlayerRemote player);\n\n    enum MyUpdateTypeId\n    {\n        Mission = 1,\n        MissionTimer = 2,\n    }\n\n    class MyMultiplayerPeers\n    {\n        private static MyMultiplayerPeers m_instance;\n\n        public static MyMultiplayerPeers Static\n        {\n            get\n            {\n                if (m_instance == null)\n                {\n                    m_instance = new MyMultiplayerPeers();\n                }\n                return m_instance;\n            }\n        }\n\n        public readonly List<MyPlayerRemote> Players = new List<MyPlayerRemote>();\n\n        public MyLidgrenPeer NetworkClient\n        {\n            get { return m_peer; }\n        }\n\n        public int HostUserId { get; set; }\n\n        public bool IsStarted\n        {\n            get\n            {\n                return m_peer != null;\n            }\n        }\n\n        public bool IsConnectedToServer\n        {\n            get\n            {\n                return m_serverConnection != null && m_serverConnection.Status != NetConnectionStatus.Disconnected && m_serverConnection.Status != NetConnectionStatus.None;\n            }\n        }\n\n        NetConnection m_serverConnection;\n\n        NetPeerConfiguration m_netConfig;\n        MyLidgrenPeer m_peer;\n        IPAddress m_localIp;\n\n        List<Action> m_bufferedMessages = new List<Action>();\n        List<NetConnection> m_playerConnections = new List<NetConnection>(32);\n        Dictionary<UInt64, DateTime> m_lastUpdates = new Dictionary<UInt64, DateTime>(128);\n\n        public event ConnectionHandler ServerConnected;\n        public event ConnectionHandler ServerDisconnected;\n\n        public event PlayerHandler PlayerDisconnected;\n\n        public MyMultiplayerPeers()\n        {\n            IPAddress mask;\n            m_localIp = NetUtility.GetMyAddress(out mask);\n\n            m_netConfig = new NetPeerConfiguration(MyMwcNetworkingConstants.NETWORKING_MULTIPLAYER_ID);\n            m_netConfig.Port = MyMwcNetworkingConstants.NETWORKING_PORT_MULTIPLAYER_PEER;\n            m_netConfig.AcceptIncomingConnections = true;\n            m_netConfig.SetMessageTypeEnabled(NetIncomingMessageType.NatIntroductionSuccess, true);\n            m_netConfig.SetMessageTypeEnabled(NetIncomingMessageType.UnconnectedData, true); // For NAT punch\n            m_netConfig.MaximumTransmissionUnit = 1350; // just to be sure\n            if (MyFakes.MULTIPLAYER_LONG_TIMEOUT)\n            {\n                m_netConfig.PingInterval = 60 * 10 - 2;\n                m_netConfig.ConnectionTimeout = 60 * 10;\n            }\n\n// Because of lidgren\n#if DEBUG\n            if (MyFakes.MULTIPLAYER_SIMULATE_LAGS)\n            {\n                m_netConfig.SimulatedMinimumLatency = 0.1f; // 100ms minimum lag\n                m_netConfig.SimulatedRandomLatency = 0.2f; // +/-200ms lag\n                m_netConfig.SimulatedLoss = 0.05f; // 5% loss\n                m_netConfig.SimulatedDuplicatesChance = 0.03f; // 3% duplicates\n            }\n#endif\n        }\n\n        public void Start()\n        {\n            Debug.Assert(m_peer == null, \"Already started!\");\n            m_peer = new MyLidgrenPeer(m_netConfig);\n            //m_peer.LogAll();\n            m_peer.Log(MyEventEnum.MISSION_PROGRESS, MyLoggingTypeEnum.NAME);\n            m_peer.MessageFilter = new MessageFilterHandler(MessageFilter);\n            m_peer.Start();\n            m_peer.PeerConnected += new Action<NetConnection>(m_peer_PeerConnected);\n            m_peer.PeerDisconnected += new Action<NetConnection>(m_peer_PeerDisconnected);\n        }\n\n        /// <summary>\n        /// Shuts down multiplayer networking (game, lobby, everything)\n        /// </summary>\n        /// <param name=\"waitForCompletion\">Wait for completion (close socket). When you will initialize instance again immediatelly, set to true to prevent \"Socket already bound exception\".</param>\n        public void Shutdown(bool waitForCompletion = false)\n        {\n            if (m_peer != null)\n            {\n                m_peer.Close();\n            }\n\n            if (m_peer != null && m_peer.Status != NetPeerStatus.ShutdownRequested && m_peer.Status != NetPeerStatus.NotRunning)\n            {\n                m_peer.Shutdown(String.Empty);\n\n                if (waitForCompletion)\n                {\n                    m_peer.WaitForStatusCleared(NetPeerStatus.ShutdownRequested, TimeSpan.FromMilliseconds(200));\n                }\n            }\n            m_bufferedMessages.Clear();\n            ServerConnected = null;\n            ServerDisconnected = null;\n            PlayerDisconnected = null;\n            m_serverConnection = null;\n            m_peer = null;\n        }\n\n        internal void Restart()\n        {\n            HostUserId = -1;\n            Shutdown(true);\n            MyMultiplayerPeers.Static.Players.Clear();\n            Start();\n        }\n\n        /// <summary>\n        /// Connects to server\n        /// </summary>\n        private void ConnectServer()\n        {\n            if (m_serverConnection != null)\n            {\n                if (m_serverConnection.Status == NetConnectionStatus.Connected || m_serverConnection.Status == NetConnectionStatus.InitiatedConnect || m_serverConnection.Status == NetConnectionStatus.RespondedConnect)\n                {\n                    return; // Connection OK\n                }\n                // When disconnecting, wait\n                m_serverConnection.WaitForStatusCleared(NetConnectionStatus.Disconnecting);\n            }\n\n            Debug.Assert(m_peer.Status == NetPeerStatus.Running, \"Invalid networking state\");\n\n            var host = MyMwcFinalBuildConstants.MULTIPLAYER_HOST_ADDRESS ?? MyMwcFinalBuildConstants.MASTER_SERVER_ADDRESS;\n\n            if (MySteam.IsActive)\n            {\n                var loginMsg = new MyEventLoginSteam();\n                loginMsg.AppVersion = MyMwcFinalBuildConstants.SERVER_PROTOCOL_VERSION;\n                loginMsg.DisplayName = MySteam.UserName;\n                loginMsg.SteamTicket = MySteam.SessionTicket;\n                loginMsg.SteamUserId = MySteam.UserId;\n                loginMsg.InternalEndpoint = new IPEndPoint(m_localIp, ((IPEndPoint)m_peer.Socket.LocalEndPoint).Port);\n                m_serverConnection = m_peer.Connect(host, MyMwcNetworkingConstants.NETWORKING_PORT_MASTER_SERVER, ref loginMsg);\n            }\n            else\n            {\n                var loginMsg = new MyEventLogin();\n                loginMsg.AppVersion = MyMwcFinalBuildConstants.SERVER_PROTOCOL_VERSION;\n                loginMsg.Username = MyClientServer.LoggedPlayer.UserName.ToString();\n                loginMsg.PasswordHash = MyClientServer.LoggedPlayer.PasswordHash.ToString();\n                loginMsg.InternalEndpoint = new IPEndPoint(m_localIp, ((IPEndPoint)m_peer.Socket.LocalEndPoint).Port);\n                m_serverConnection = m_peer.Connect(host, MyMwcNetworkingConstants.NETWORKING_PORT_MASTER_SERVER, ref loginMsg);\n            }\n        }\n\n        /// <summary>\n        /// Disconnects from server\n        /// </summary>\n        public void DisconnectServer()\n        {\n            m_serverConnection.Disconnect(String.Empty);\n            m_serverConnection = null;\n        }\n\n        public void DisconnectExceptServer()\n        {\n            foreach (var c in m_peer.Connections)\n            {\n                if (c != m_serverConnection && c.Status != NetConnectionStatus.Disconnected && c.Status != NetConnectionStatus.Disconnecting && c.Status != NetConnectionStatus.None)\n                {\n                    c.Disconnect(String.Empty);\n                }\n            }\n        }\n\n        public void RemovePlayer(int userId)\n        {\n            var player = Players.FirstOrDefault(p => p.UserId == userId);\n            if (player != null)\n            {\n                Players.Remove(player);\n            }\n        }\n\n        public MyPlayerRemote this[int userId]\n        {\n            get\n            {\n                return Players.First(p => p.GetUserId() == userId);\n            }\n        }\n\n        public MyPlayerRemote this[byte playerId]\n        {\n            get\n            {\n                return Players.First(p => p.PlayerId == playerId);\n            }\n        }\n\n        public bool TryGetPlayer(byte playerId, out MyPlayerRemote player)\n        {\n            player = Players.FirstOrDefault(p => p.PlayerId == playerId);\n            return player != null;\n        }\n\n        public bool TryGetPlayer(int userId, out MyPlayerRemote player)\n        {\n            player = Players.FirstOrDefault(p => p.UserId == userId);\n            return player != null;\n        }\n\n        /// <summary>\n        /// Sends message to server, when not connected, it connects.\n        /// Register ServerDisconnected to handle connection errors.\n        /// Register ServerConnected to handle connection success.\n        /// </summary>\n        public NetSendResult SendServer<T>(ref T multiplayerEvent)\n            where T : struct, IMyEvent\n        {\n            ConnectServer();\n            if (m_serverConnection != null)\n            {\n                return m_peer.Send(ref multiplayerEvent, m_serverConnection, NetDeliveryMethod.ReliableOrdered, 0);\n            }\n            return NetSendResult.FailedNotConnected;\n        }\n\n        public NetSendResult SendHost<T>(ref T multiplayerEvent, int maxSize = MyLidgrenPeer.DEFAULT_MAX_SIZE)\n            where T : struct, IMyEvent\n        {\n            var hostConnection = this[HostUserId].Connection;\n            return m_peer.Send(ref multiplayerEvent, hostConnection, NetDeliveryMethod.ReliableOrdered, 0, maxSize);\n        }\n\n        public NetSendResult TrySendHost<T>(ref T multiplayerEvent, int maxSize = MyLidgrenPeer.DEFAULT_MAX_SIZE)\n            where T : struct, IMyEvent\n        {\n            MyPlayerRemote host;\n            if (TryGetPlayer(HostUserId, out host))\n            {\n                return m_peer.Send(ref multiplayerEvent, host.Connection, NetDeliveryMethod.ReliableOrdered, 0, maxSize);\n            }\n            return NetSendResult.FailedNotConnected;\n        }\n\n        //public NetSendResult SendHostRelayed<T>(ref T multiplayerEvent, NetDeliveryMethod delivery = NetDeliveryMethod.Unreliable, int sequenceChannel = 0, int maxSize = 512)\n        //    where T : struct, IMyEvent\n        //{\n        //    ConnectServer();\n        //    return m_peer.SendRelayed(ref multiplayerEvent, HostUserId, m_serverConnection, delivery, sequenceChannel, maxSize);\n        //}\n\n        public void SendToAll<T>(ref T multiplayerEvent, NetDeliveryMethod delivery = NetDeliveryMethod.Unreliable, int sequenceChannel = 0, int maxSize = 512)\n            where T : struct, IMyEvent\n        {\n            m_playerConnections.Clear();\n            foreach (var p in Players)\n            {\n                var connection = p.Connection;\n                if (connection != null)\n                {\n                    if (connection is MyRelayedConnection)\n                    {\n                        m_peer.Send(ref multiplayerEvent, connection, delivery, sequenceChannel, maxSize);\n                    }\n                    else\n                    {\n                        m_playerConnections.Add(connection);\n                    }\n                }\n            }\n            if (m_playerConnections.Count > 0)\n            {\n                m_peer.SendToAll(ref multiplayerEvent, m_playerConnections, delivery, sequenceChannel, maxSize);\n            }\n        }\n\n        public void SendToTeam<T>(ref T multiplayerEvent, MyMwcObjectBuilder_FactionEnum senderFaction, NetDeliveryMethod delivery = NetDeliveryMethod.Unreliable, int sequenceChannel = 0, int maxSize = 512)\n            where T : struct, IMyEvent\n        {\n            m_playerConnections.Clear();\n            foreach (var p in Players)\n            {\n                var connection = p.Connection;\n                if (connection != null && MyFactions.GetFactionsRelation(p.Faction, senderFaction) == MyFactionRelationEnum.Friend)\n                {\n                    if (connection is MyRelayedConnection)\n                    {\n                        m_peer.Send(ref multiplayerEvent, connection, delivery, sequenceChannel, maxSize);\n                    }\n                    else\n                    {\n                        m_playerConnections.Add(connection);\n                    }\n                }\n            }\n            if (m_playerConnections.Count > 0)\n            {\n                m_peer.SendToAll(ref multiplayerEvent, m_playerConnections, delivery, sequenceChannel);\n            }\n        }\n\n        public void Update()\n        {\n            if (IsStarted)\n            {\n                // Slowly clear update dictionary\n                var now = DateTime.Now;\n                UInt64? keyToRemove = null;\n                foreach (var pair in m_lastUpdates)\n                {\n                    if ((now - pair.Value).TotalSeconds > 1)\n                    {\n                        keyToRemove = pair.Key;\n                    }\n                }\n                if (keyToRemove.HasValue)\n                {\n                    m_lastUpdates.Remove(keyToRemove.Value);\n                }\n\n                m_peer.Receive();\n            }\n        }\n\n        /// <summary>\n        /// Sends message to all players, but only when it does not exceed maxSendRate.\n        /// MaxSendRate is number of updates of this entity per second.\n        /// Note: MessageId is no taken into account\n        /// </summary>\n        public void SendToAll<T>(ref T multiplayerEvent, MyEntityIdentifier entityId, float maxSendRate, NetDeliveryMethod delivery = NetDeliveryMethod.Unreliable, int sequenceChannel = 0)\n            where T : struct, IMyEvent\n        {\n            if (CanUpdate(entityId.NumericValue, null, maxSendRate))\n            {\n                SendToAll(ref multiplayerEvent, delivery, sequenceChannel);\n            }\n        }\n\n        /// <summary>\n        /// Sends message to all players, but only when it does not exceed maxSendRate.\n        /// MaxSendRate is number of updates of this entity per second.\n        /// Note: MessageId is no taken into account\n        /// </summary>\n        public void SendToAll<T>(ref T multiplayerEvent, MyUpdateTypeId updateTypeId, uint internalId, float maxSendRate, NetDeliveryMethod delivery = NetDeliveryMethod.Unreliable, int sequenceChannel = 0)\n            where T : struct, IMyEvent\n        {\n            if (CanUpdate(internalId, updateTypeId, maxSendRate))\n            {\n                SendToAll(ref multiplayerEvent, delivery, sequenceChannel);\n            }\n        }\n\n        /// <summary>\n        /// True when message should be passed to handler.\n        /// False to prevent handler.\n        /// </summary>\n        bool MessageFilter(NetConnection connection, IPEndPoint endpoint, MyEventEnum eventType)\n        {\n            MyPlayerRemote player = connection.Tag as MyPlayerRemote;\n            if (player != null)\n            {\n                // Accept known players\n                return true;\n            }\n            else if (connection == m_serverConnection)\n            {\n                // Accept server messages\n                return true;\n            }\n            else if (connection != null && (eventType == MyEventEnum.NEW_PLAYER || eventType == MyEventEnum.ENTER_GAME || eventType == MyEventEnum.GET_PLAYER_LIST || eventType == MyEventEnum.GET_PLAYER_LIST_RESPONSE))\n            {\n                // Accept incoming new players\n                return true;\n            }\n            return false;\n        }\n\n        UInt64 PackKey(uint? entityId, MyUpdateTypeId? lastUpdateId)\n        {\n            UInt64 id = entityId ?? 0;\n            id *= UInt32.MaxValue;\n            id += (uint)(lastUpdateId ?? 0);\n            return id;\n        }\n\n        bool CanUpdate(uint? entityId, MyUpdateTypeId? updateId, float updateRate = 20)\n        {\n            float minTimespanMs = 1000.0f / updateRate;\n\n            var key = PackKey(entityId, updateId);\n\n            DateTime now = DateTime.Now;\n            DateTime lastUpdate;\n            if (m_lastUpdates.TryGetValue(key, out lastUpdate))\n            {\n                if ((now - lastUpdate).TotalMilliseconds > minTimespanMs)\n                {\n                    m_lastUpdates[key] = now;\n                    return true;\n                }\n                return false;\n            }\n            else\n            {\n                m_lastUpdates[key] = now;\n                return true;\n            }\n        }\n\n        void m_peer_PeerConnected(NetConnection obj)\n        {\n            if (obj == m_serverConnection)\n            {\n                NetworkClient.RelayServerConnection = m_serverConnection;\n\n                var handler = ServerConnected;\n                if (handler != null)\n                {\n                    handler(obj);\n                }\n            }\n        }\n\n        void m_peer_PeerDisconnected(NetConnection connection)\n        {\n            if (connection == null) return;\n\n            MyPlayerRemote player = connection.Tag as MyPlayerRemote;\n\n            if (connection == m_serverConnection)\n            {\n                NetworkClient.RelayServerConnection = null;\n                var handler = ServerDisconnected;\n                if (handler != null)\n                {\n                    handler(connection);\n                }\n            }\n            else if (player != null && Players.Contains(player))\n            {\n                Players.Remove(player);\n\n                var handler = PlayerDisconnected;\n                if (handler != null)\n                {\n                    handler(player);\n                }\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Sessions/Multiplayer/MyNatIntroduction.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.Networking.Multiplayer;\nusing Lidgren.Network;\nusing System.Net;\nusing MinerWars.AppCode.Game.Sessions.Multiplayer;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.Game.World;\nusing System.Diagnostics;\n\nnamespace MinerWars.AppCode.Game.Sessions\n{\n    class MyNatIntroduction\n    {\n        class NatInfo\n        {\n            public IPEndPoint IntroductionEndpoint;\n            public NetConnection Connection;\n        }\n\n        public MyNatIntroduction(MyLidgrenPeer peer)\n        {\n            m_peer = peer;\n        }\n\n        private MyLidgrenPeer m_peer;\n        private Dictionary<int, MyPlayerRemote> m_playersToIntroduce;\n\n        public void SetRequiredPlayers(List<MyPlayerRemote> requiredPlayers)\n        {\n            m_playersToIntroduce = requiredPlayers.ToDictionary(s => s.UserId, s => s);\n        }\n\n        public void OnIntroduce(IPEndPoint endpoint, string token)\n        {\n            Debug.Assert(m_playersToIntroduce != null);\n\n            int userId;\n            MyPlayerRemote player;\n            if (int.TryParse(token, out userId) && m_playersToIntroduce.TryGetValue(userId, out player))\n            {\n                if (player.Connection == null)\n                {\n                    player.Connection = m_peer.Connect(endpoint);\n                    player.Connection.Tag = player;\n                }\n            }\n        }\n\n        public void OnDirectIntroduce(int userId, MyRelayedConnection relayedConnection)\n        {\n            Debug.Assert(m_playersToIntroduce != null);\n\n            MyPlayerRemote player;\n            if(m_playersToIntroduce.TryGetValue(userId, out player))\n            {\n                if(player.Connection == null)\n                {\n                    player.Connection = relayedConnection;\n                    player.Connection.Tag = player;\n                }\n            }\n        }\n        \n        public bool IsAllConnected()\n        {\n            if (m_playersToIntroduce == null)\n                return false;\n\n            return m_playersToIntroduce.All(s => s.Value.Connection != null && (s.Value.Connection.Status == NetConnectionStatus.Connected || s.Value.Connection is MyRelayedConnection));\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Sessions/MyDataCorruptedException.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace MinerWars.AppCode.Game.Sessions\n{\n    class MyDataCorruptedException: ApplicationException\n    {\n        public MyDataCorruptedException()\n            :base()\n        {\n        }\n\n        public MyDataCorruptedException(string message)\n            : base(message)\n        {\n        }\n\n        public MyDataCorruptedException(string message, Exception innerException)\n            : base(message, innerException)\n        {\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Sessions/MyMasterServerAction.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Networking.SectorService;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing SysUtils.Utils;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.HUD;\nusing System.Diagnostics;\nusing MinerWars.AppCode.Networking.MasterService;\n\nnamespace MinerWars.AppCode.Game\n{\n    class MyMasterServerAction : MyGuiScreenMasterServiceCallProgress\n    {\n        public MyMasterServerAction(MyTextsWrapperEnum progressText)\n            : base(progressText, false)\n        {\n        }\n\n        public MyTextsWrapperEnum RetryCaptionText;\n        public MyTextsWrapperEnum RetryMessageText;\n        public MyTextsWrapperEnum RetryButtonText = MyTextsWrapperEnum.ButtonRetry;\n        public MyTextsWrapperEnum RetryCancelText = MyTextsWrapperEnum.Cancel;\n\n        public MyTextsWrapperEnum ErrorCaptionText = MyTextsWrapperEnum.MessageBoxNetworkErrorCaption;\n        public MyTextsWrapperEnum ErrorMessageText = MyTextsWrapperEnum.PleaseTryAgain;\n\n        public Func<MyMasterServiceClient, IAsyncResult> BeginAction;\n        public Action<MyMasterServiceClient, IAsyncResult> EndAction;\n        public Func<MyMasterServiceClient, IAsyncResult, MyServerAction> EndActionWait;\n\n        public MyTextsWrapperEnum? BackgroundNotification;\n\n        public bool Background = false;\n\n        public bool ShowErrorMessage = true;\n        public bool OnErrorReturnToMainMenu = true;\n        public bool EnableRetry = false;\n        public TimeSpan Timeout { get; set; }\n\n        public event Action<Exception> ActionFailed;\n        public event Action ActionSuccess;\n\n        private MyGuiScreenBase m_retryScreen;\n\n        public void Start()\n        {\n            MyGuiManager.AddScreen(this);\n\n            if (Background && BackgroundNotification.HasValue)\n            {\n                var notification = new MyHudNotification.MyNotification(BackgroundNotification.Value);\n                MyHudNotification.AddNotification(notification);\n                this.Closed += (screen) => notification.Disappear();\n            }\n        }\n\n        protected override void ServiceProgressStart(MyMasterServiceClient client)\n        {\n            AddAction(BeginAction(client));\n        }\n\n        protected override void OnActionCompleted(IAsyncResult asyncResult, MyMasterServiceClient client)\n        {\n            Debug.Assert((EndAction != null && EndActionWait == null) || (EndAction == null && EndActionWait != null), \"Set only one of EndAction, EndActionWait\");\n\n            if (EndActionWait != null)\n            {\n                var innerAction = EndActionWait(client, asyncResult);\n                if (innerAction != null)\n                {\n                    innerAction.ActionSuccess += RaiseActionSuccess;\n                    innerAction.ActionFailed += RaiseActionFailed;\n                }\n                else\n                {\n                    RaiseActionSuccess();\n                }\n            }\n            else if (EndAction != null)\n            {\n                // When error occures, OnError is called\n                EndAction(client, asyncResult);\n                RaiseActionSuccess();\n            }\n            CloseScreen();\n        }\n\n        private void RaiseActionSuccess()\n        {\n            var handler = ActionSuccess;\n            if (handler != null)\n            {\n                handler();\n            }\n        }\n\n        protected override void OnError(Exception exception, MyMasterServiceClient client)\n        {\n            MyMwcLog.WriteLine(exception); // log exception\n\n            if (EnableRetry)\n            {\n                ShowRetryDialog(exception);\n            }\n            else\n            {\n                RaiseActionFailed(exception);\n                if (ShowErrorMessage)\n                {\n                    MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, ErrorMessageText, ErrorCaptionText, MyTextsWrapperEnum.Ok, null));\n                }\n                CloseScreen();\n                if (OnErrorReturnToMainMenu)\n                {\n                    MyGuiManager.BackToMainMenu();\n                }\n            }\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyServerAction\";\n        }\n\n        private void ShowRetryDialog(Exception exception)\n        {\n            var messageBoxCaption = MyTextsWrapper.Get(RetryCaptionText);\n            var messageBoxMessage = MyTextsWrapper.Get(RetryMessageText);\n\n            Vector2 buttonSize = new Vector2(MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE.X * 2.4f, MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE.Y);\n            m_retryScreen = new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyMessageBoxButtonsType.YES_NO, messageBoxMessage, messageBoxCaption, null, RetryButtonText,\n                    RetryCancelText, (callbackReturn) => MessageBoxCallback(exception, callbackReturn), false, buttonSize);\n\n            MyGuiManager.AddScreen(m_retryScreen);\n        }\n\n        private void MessageBoxCallback(Exception exception, MyGuiScreenMessageBoxCallbackEnum callbackReturn)\n        {\n            m_retryScreen.CloseScreenNow();\n            m_retryScreen = null;\n\n            // retry\n            if (callbackReturn == MyGuiScreenMessageBoxCallbackEnum.YES)\n            {\n                Retry();\n            }\n            // continue without saving\n            else if (callbackReturn == MyGuiScreenMessageBoxCallbackEnum.NO)\n            {\n                RaiseActionFailed(exception);\n                CloseScreen();\n            }\n        }\n\n        private void RaiseActionFailed(Exception exception)\n        {\n            var handler = ActionFailed;\n            if (handler != null)\n            {\n                handler(exception);\n            }\n        }\n\n        public override bool Update(bool hasFocus)\n        {\n            if (base.Update(hasFocus) == false) return false;\n\n            if (Background && m_state != MyGuiScreenState.HIDING && m_state != MyGuiScreenState.HIDDEN)\n            {\n                HideScreen();\n            }\n\n            return GetState() == MyGuiScreenState.OPENED;\n        }\n\n        public override bool Draw(float backgroundFadeAlpha)\n        {\n            if (Background)\n                return true;\n\n            return base.Draw(backgroundFadeAlpha);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Sessions/MyMotherShipPosition.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.GUI;\nusing System.Diagnostics;\nusing SysUtils.Utils;\n\nnamespace MinerWars.AppCode.Game.Sessions\n{\n    class MyMotherShipPosition \n    {\n        public const string MADELYN_NAME = \"MDHangar\";\n        private const string MADELYN_DISPLAY_NAME = \"Madelyn's Sapho\";\n        private const string MADELYN_POSITION_DICTIONARY_KEY = \"MadelynPosition\";\n\n        private StringBuilder m_madelynName = new StringBuilder(MADELYN_DISPLAY_NAME);\n        public StringBuilder Name \n        { \n            get \n            { \n                return m_madelynName; \n            } \n        }\n\n        private MyMwcVector3Int? m_sectorPosition;\n        private MyMwcVector3Int? SectorPosition \n        {\n            get \n            {\n                return m_sectorPosition;\n            }\n            set \n            {\n                if (m_sectorPosition != value) \n                {\n                    m_sectorPosition = value;\n                    m_hudPositionDirty = true;\n                }\n            }\n        }\n\n        private Vector3? m_positionInSector;\n        private Vector3? PositionInSector \n        {\n            get \n            {\n                return m_positionInSector;\n            }\n            set \n            {\n                if (m_positionInSector != value) \n                {\n                    m_positionInSector = value;\n                    m_hudPositionDirty = true;\n                }\n            }\n        }\n\n        private bool m_hudPositionDirty;\n        private Vector3 m_hudPosition;\n        public Vector3 HudPosition\n        {\n            get \n            {\n                if (m_hudPositionDirty)\n                {\n                    Debug.Assert(Exist);\n\n                    MyMwcVector3Int currentSectorPosition = MyGuiScreenGamePlay.Static.GetSectorIdentifier().Position;\n                    Vector3 sectorPositionVector =\n                        new Vector3(\n                            SectorPosition.Value.X - currentSectorPosition.X,\n                            SectorPosition.Value.Y - currentSectorPosition.Y,\n                            SectorPosition.Value.Z - currentSectorPosition.Z) * MyMwcSectorConstants.SECTOR_SIZE;\n\n                    m_hudPosition = sectorPositionVector + PositionInSector.Value;\n                    m_hudPositionDirty = false;\n                }\n                return m_hudPosition;\n            }\n        }\n\n        public bool Exist \n        {\n            get \n            {\n                return SectorPosition != null && PositionInSector != null;\n            }\n        }\n\n        private MyEntity m_madelynEntity;\n\n        public MyMotherShipPosition() \n        {\n            MyEntities.OnEntityNameSet += MyEntities_OnEntityNameSet;\n            m_hudPositionDirty = true;\n        }\n\n        public void Load(Dictionary<string, string> checkpointDictionary)\n        {\n            if(checkpointDictionary.ContainsKey(MADELYN_POSITION_DICTIONARY_KEY))\n            {\n                Deserialize(checkpointDictionary[MADELYN_POSITION_DICTIONARY_KEY]);\n            }\n            m_hudPositionDirty = true;\n        }\n\n        public void Save(Dictionary<string, string> checkpointDictionary)\n        {\n            if (Exist)\n            {\n                checkpointDictionary[MADELYN_POSITION_DICTIONARY_KEY] = Serialize();\n            }\n            else \n            {\n                checkpointDictionary.Remove(MADELYN_POSITION_DICTIONARY_KEY);\n            }\n        }\n\n        public void Update() \n        {\n            if (m_madelynEntity != null) \n            {\n                SectorPosition = MyGuiScreenGamePlay.Static.GetSectorIdentifier().Position;\n                PositionInSector = m_madelynEntity.GetPosition();\n            }\n        }\n\n        public bool IsNotInSameSector() \n        {\n            Debug.Assert(Exist);\n            MyMwcVector3Int currentSector = MyGuiScreenGamePlay.Static.GetSectorIdentifier().Position;\n            return SectorPosition.Value.X != currentSector.X ||\n                   SectorPosition.Value.Y != currentSector.Y ||\n                   SectorPosition.Value.Z != currentSector.Z;\n        }\n\n        // serialization format: spx,spy,spz;pisx,pisy,pisz\n        private void Deserialize(string serialize) \n        {\n            try\n            {\n                string[] positions = serialize.Split(';');\n                // sector positions\n                string[] sectorPositions = positions[0].Split(',');\n                MyMwcVector3Int sectorPosition = new MyMwcVector3Int(int.Parse(sectorPositions[0]), int.Parse(sectorPositions[1]), int.Parse(sectorPositions[2]));\n\n                // positions in sector\n                string[] positionsInSector = positions[1].Split(',');\n                Vector3 positionInSector = new Vector3(int.Parse(positionsInSector[0]), int.Parse(positionsInSector[1]), int.Parse(positionsInSector[2]));\n\n                SectorPosition = sectorPosition;\n                PositionInSector = positionInSector;\n            }\n            catch (Exception ex)\n            {\n                MyMwcLog.WriteLine(\"Wrong madelyn's position deserialization! value:\" + serialize + \" \" + ex.Message);\n                Debug.Fail(\"Wrong madelyn's position deserialization!\");\n            }\n        }\n\n        private string Serialize() \n        {\n            Debug.Assert(Exist);\n            string serializeValue = string.Empty;\n            serializeValue += SectorPosition.Value.X + \",\" + SectorPosition.Value.Y + \",\" + SectorPosition.Value.Z + \";\" +\n                              ((int)PositionInSector.Value.X) + \",\" + ((int)PositionInSector.Value.Y) + \",\" + ((int)PositionInSector.Value.Z);\n            return serializeValue;\n        }\n            \n        void MyEntities_OnEntityNameSet(MyEntity entity, string oldName, string newName)\n        {\n            if (newName == MADELYN_NAME) \n            {\n                if (m_madelynEntity == null)\n                {\n                    m_madelynEntity = entity;\n                    m_madelynEntity.OnClose += m_madelynEntity_OnClose;\n                }\n            }\n            else if (oldName == MADELYN_NAME) \n            {\n                if (m_madelynEntity != null)\n                {\n                    m_madelynEntity.OnClose -= m_madelynEntity_OnClose;\n                    m_madelynEntity = null;\n                }\n            }\n        }\n\n        void m_madelynEntity_OnClose(MyEntity obj)\n        {\n            m_madelynEntity.OnClose -= m_madelynEntity_OnClose;\n            m_madelynEntity = null;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Sessions/MySandboxSession.cs",
    "content": "﻿namespace MinerWars.AppCode.Game.Managers.Session\n{\n\n    /// <summary>\n    /// Represent sandbox session.\n    /// </summary>\n    internal sealed class MySandboxSession: MySession\n    {\n        /// <summary>\n        /// Initializes a new instance of the <see cref=\"MySession\"/> class.\n        /// </summary>\n        public MySandboxSession()\n        {\n        }\n\n        public override void Update()\n        {\n            base.Update();\n        }\n\n        public override void Init()\n        {\n            base.Init();\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Sessions/MyServerAction.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Networking.SectorService;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing SysUtils.Utils;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.HUD;\nusing System.Diagnostics;\n\nnamespace MinerWars.AppCode.Game\n{\n    class MyServerAction : MyGuiScreenSectorServiceCallProgress\n    {\n        public MyServerAction(MyTextsWrapperEnum progressText)\n            : base(progressText, false)\n        {\n        }\n\n        public MyServerAction(MyTextsWrapperEnum progressText, TimeSpan operationTimeout)\n            : base(progressText, false, operationTimeout)\n        {\n        }\n\n        public MyTextsWrapperEnum RetryCaptionText;\n        public MyTextsWrapperEnum RetryMessageText;\n        public MyTextsWrapperEnum RetryButtonText = MyTextsWrapperEnum.ButtonRetry;\n        public MyTextsWrapperEnum RetryCancelText = MyTextsWrapperEnum.Cancel;\n\n        public MyTextsWrapperEnum ErrorCaptionText = MyTextsWrapperEnum.MessageBoxNetworkErrorCaption;\n        public MyTextsWrapperEnum ErrorMessageText = MyTextsWrapperEnum.PleaseTryAgain;\n\n        public Func<MySectorServiceClient, IAsyncResult> BeginAction;\n        public Action<MySectorServiceClient, IAsyncResult> EndAction;\n        public Func<MySectorServiceClient, IAsyncResult, MyServerAction> EndActionWait;\n\n        public MyTextsWrapperEnum? BackgroundNotification;\n\n        public bool Background = false;\n\n        public bool ShowErrorMessage = true;\n        public bool OnErrorReturnToMainMenu = true;\n        public bool EnableRetry = false;\n        public TimeSpan Timeout { get; set; }\n\n        public event Action<Exception> ActionFailed;\n        public event Action ActionSuccess;\n\n        private MyGuiScreenBase m_retryScreen;\n\n        public void Start()\n        {\n            MyGuiManager.AddScreen(this);\n\n            if (Background && BackgroundNotification.HasValue)\n            {\n                var notification = new MyHudNotification.MyNotification(BackgroundNotification.Value);\n                MyHudNotification.AddNotification(notification);\n                this.Closed += (screen) => notification.Disappear();\n            }\n        }\n\n        protected override void ServiceProgressStart(MySectorServiceClient client)\n        {\n            AddAction(BeginAction(client));\n        }\n\n        protected override void OnActionCompleted(IAsyncResult asyncResult, MySectorServiceClient client)\n        {\n            Debug.Assert((EndAction != null && EndActionWait == null) || (EndAction == null && EndActionWait != null), \"Set only one of EndAction, EndActionWait\");\n\n            if (EndActionWait != null)\n            {\n                var innerAction = EndActionWait(client, asyncResult);\n                if (innerAction != null)\n                {\n                    innerAction.ActionSuccess += RaiseActionSuccess;\n                    innerAction.ActionFailed += RaiseActionFailed;\n                }\n                else\n                {\n                    RaiseActionSuccess();\n                }\n            }\n            else if (EndAction != null)\n            {\n                // When error occures, OnError is called\n                EndAction(client, asyncResult);\n                RaiseActionSuccess();\n            }\n            CloseScreen();\n        }\n\n        private void RaiseActionSuccess()\n        {\n            var handler = ActionSuccess;\n            if (handler != null)\n            {\n                handler();\n            }\n        }\n\n        protected override void OnError(Exception exception, MySectorServiceClient client)\n        {\n            MyMwcLog.WriteLine(exception); // log exception\n\n            if (EnableRetry)\n            {\n                ShowRetryDialog(exception);\n            }\n            else\n            {\n                RaiseActionFailed(exception);\n                if (ShowErrorMessage)\n                {\n                    MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, ErrorMessageText, ErrorCaptionText, MyTextsWrapperEnum.Ok, null));\n                }\n                CloseScreen();\n                if (OnErrorReturnToMainMenu)\n                {\n                    MyGuiManager.BackToMainMenu();\n                }\n            }\n        }\n\n        public override string GetFriendlyName()\n        {\n            return \"MyServerAction\";\n        }\n\n        private void ShowRetryDialog(Exception exception)\n        {\n            var messageBoxCaption = MyTextsWrapper.Get(RetryCaptionText);\n            var messageBoxMessage = MyTextsWrapper.Get(RetryMessageText);\n\n            Vector2 buttonSize = new Vector2(MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE.X * 2.4f, MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE.Y);\n            m_retryScreen = new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyMessageBoxButtonsType.YES_NO, messageBoxMessage, messageBoxCaption, null, RetryButtonText,\n                    RetryCancelText, (callbackReturn) => MessageBoxCallback(exception, callbackReturn), false, buttonSize);\n\n            MyGuiManager.AddScreen(m_retryScreen);\n        }\n\n        private void MessageBoxCallback(Exception exception, MyGuiScreenMessageBoxCallbackEnum callbackReturn)\n        {\n            m_retryScreen.CloseScreenNow();\n            m_retryScreen = null;\n\n            // retry\n            if (callbackReturn == MyGuiScreenMessageBoxCallbackEnum.YES)\n            {\n                Retry();\n            }\n            // continue without saving\n            else if (callbackReturn == MyGuiScreenMessageBoxCallbackEnum.NO)\n            {\n                RaiseActionFailed(exception);\n                CloseScreen();\n            }\n        }\n\n        private void RaiseActionFailed(Exception exception)\n        {\n            var handler = ActionFailed;\n            if (handler != null)\n            {\n                handler(exception);\n            }\n        }\n\n        public override bool Update(bool hasFocus)\n        {\n            if (base.Update(hasFocus) == false) return false;\n\n            if (Background && m_state != MyGuiScreenState.HIDING && m_state != MyGuiScreenState.HIDDEN)\n            {\n                HideScreen();\n            }\n\n            return GetState() == MyGuiScreenState.OPENED;\n        }\n\n        public override bool Draw(float backgroundFadeAlpha)\n        {\n            if (Background)\n                return true;\n\n            return base.Draw(backgroundFadeAlpha);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Sessions/MySession.cs",
    "content": "﻿#region Using\nusing System;\nusing System.Linq;\nusing MinerWars.AppCode.Game.Journal;\nusing MinerWars.AppCode.Game.Editor;\nusing MinerWars.AppCode.Game.Entities.FoundationFactory;\nusing MinerWars.AppCode.Game.Missions.SinglePlayer;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Voxels;\nusing System.Collections.Generic;\nusing MinerWarsMath;\nusing System.Reflection;\nusing KeenSoftwareHouse.Library.Extensions;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.World;\nusing System.Runtime.Serialization;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Missions;\nusing MinerWars.AppCode.Game.Inventory;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Voxels;\nusing MinerWars.AppCode.Game.Entities.WayPoints;\nusing System.Diagnostics;\nusing MinerWars.AppCode.Game.HUD;\nusing MinerWars.AppCode.Networking.SectorService;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Gameplay;\nusing SysUtils.Utils;\nusing MinerWars.AppCode.Game.Sessions;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.CommonLIB.AppCode.Networking.Multiplayer;\nusing SysUtils;\nusing System.Text;\n#endregion\n\nnamespace MinerWars.AppCode.Game.Managers.Session\n{\n    /// <summary>\n    /// Base class for all session types (single, coop, mmo, sandbox)\n    /// </summary>\n    internal abstract class MySession : MyResource, IMyInventory\n    {\n        public static MySession Static { get; set; }\n\n        /// <summary>\n        /// Gets or sets player's inventory (now use for ship's hangar)\n        /// </summary>\n        public MyInventory Inventory { get; set; }\n\n        /// <summary>\n        /// Gets or sets the player\n        /// </summary>\n        /// <value>\n        /// The player.\n        /// </value>\n        public MyPlayer Player { get; private set; }\n\n        public DateTime GameDateTime { get; set; }\n\n        public static MySmallShip PlayerShip { get; set; }\n\n        public static bool IsPlayerShip(MyEntity entity)\n        {\n            if (entity == null)\n                return false;\n            if (!(entity is MySmallShip))\n                return false;\n            if (PlayerShip == entity)\n                return true;\n            if (MyMultiplayerGameplay.IsRunning)\n            {\n                foreach (var player in MinerWars.AppCode.Game.Sessions.Multiplayer.MyMultiplayerPeers.Static.Players)\n                {\n                    if (player.Ship == entity)\n                    {\n                        return true;\n                    }\n                }\n            }\n            return false;\n        }\n\n        public static MyPlayerFriends PlayerFriends { get; set; }\n\n        public MyEventLog EventLog { get; protected set; }\n\n        public string CheckpointName { get; private set; }\n\n        public MyFactionRelationChanges FactionRelationChanges { get; private set; }\n\n        public MyMotherShipPosition MotherShipPosition { get; private set; }\n\n        /// <summary>\n        /// Occures when all entities are loaded and are ready to be linked together (references).\n        /// </summary>\n        public event Action LinkEntities;\n\n\n        public bool Is2DSector;\n\n        /// <summary>\n        /// Initializes a new instance of the <see cref=\"MySession\"/> class.\n        /// </summary>\n        protected MySession()\n        {\n            GameDateTime = new DateTime(2081, 1, 1);\n            //EventLog = new MyEventLog();\n        }\n\n        public virtual void Init()\n        {\n            //Create player if it was not loaded from DB\n            if (Player == null)\n            {\n                Player = new MyPlayer();\n            }\n\n            //Create player if it was not loaded from DB\n            if (EventLog == null)\n            {\n                EventLog = new MyEventLog();\n            }\n\n            if (FactionRelationChanges == null)\n            {\n                FactionRelationChanges = new MyFactionRelationChanges();\n            }\n\n            GameDateTime = new DateTime(2081, 1, 1);\n\n            if (Inventory == null)\n            {\n                Inventory = new MyInventory();\n            }\n\n            if (PlayerFriends == null)\n            {\n                PlayerFriends = new MyPlayerFriends();\n            }\n\n            if (MotherShipPosition == null)\n            {\n                MotherShipPosition = new MyMotherShipPosition();\n            }\n\n            Is2DSector = false;\n\n            ////Create playership if it was not loaded from DB\n            //if (Player.Ship == null)\n            //{\n            //    Player.Ship = new MySmallShip(1.0f, MyClientServer.LoggedPlayer.GetDisplayName().ToString());\n            //    Player.Ship.Init(\"MyShip\", MySmallShip.CreateDefaultSmallShipObjectBuilder(Matrix.CreateWorld(Vector3.Zero, Vector3.Forward, Vector3.Up)));\n            //    //Player.Ship.WorldMatrix = Matrix.CreateTranslation(0, 0, 0);\n            //    Player.Ship.Inventory.MaxItems = 1500;\n            //    Player.Ship.Inventory.FillInventoryWithAllItems();\n            //}            \n        }\n\n        public void BeforeLoad(MyMwcObjectBuilder_Checkpoint checkpoint)\n        {\n            MyEntityIdentifier.AllocationSuspended = true;\n\n            //if (MyMultiplayerGameplay.IsRunning && !MyMultiplayerGameplay.IsHost)\n            //{\n            //    MyMwcPositionAndOrientation position = MyMultiplayerGameplay.Static.GetSafeRespawnPositionNearPlayer(checkpoint.PlayerObjectBuilder.ShipObjectBuilder.ShipType);\n            //    checkpoint.PlayerObjectBuilder.ShipObjectBuilder.PositionAndOrientation = position;\n            //    return;\n            //}\n\n            // Try find player start location and set player location\n            if (checkpoint.SectorObjectBuilder != null && checkpoint.SectorObjectBuilder.SectorObjects != null)\n            {\n                int playerStartsCount = 0;\n                foreach (var builder in checkpoint.SectorObjectBuilder.SectorObjects)\n                {\n                    MyMwcObjectBuilder_DummyPoint dummyBuilder = builder as MyMwcObjectBuilder_DummyPoint;\n                    if (dummyBuilder != null)\n                    {\n                        if ((dummyBuilder.DummyFlags & MyDummyPointFlags.PLAYER_START) > 0)\n                        {\n                            checkpoint.PlayerObjectBuilder.ShipObjectBuilder.PositionAndOrientation = dummyBuilder.PositionAndOrientation;\n                            playerStartsCount++;\n                        }\n                    }\n                }\n            }\n\n            MotherShipPosition.Load(checkpoint.Dictionary);\n        }\n\n        /// <summary>\n        /// This method is called when sector and all entities are loaded (created from object builder - or generated other way).\n        /// It raises LinkEntities event, and calls method MyEntities.Link.\n        /// </summary>\n        public void AfterLoad(MyMwcObjectBuilder_Checkpoint checkpoint)\n        {\n            CheckpointName = checkpoint.CheckpointName;\n\n            MyEntityIdentifier.AllocationSuspended = false;\n\n            var handler = LinkEntities;\n            if (handler != null)\n            {\n                handler();\n            }\n\n            MyEntities.Link();\n            MyWayPointGraph.DeleteNullVerticesFromPaths();\n            MyWayPointGraph.RemoveWaypointsAroundLargeStaticObjects();\n            FactionRelationChanges.Init(checkpoint.FactionRelationChangesBuilder);\n            //  GPS waypoints must be created after the first physics pass: see end of MyGuiScreenGamePlay.Update()\n        }\n\n        // Calculates squared distance from entity to closest player or player friend\n        public float DistanceToPlayersSquared(MyEntity entity)\n        {\n            float dist = Vector3.DistanceSquared(MinerWars.AppCode.Game.GUI.MyGuiScreenGamePlay.Static.ControlledEntity.GetPosition(), entity.GetPosition());\n\n            for (int i = 0; i < PlayerFriends.Count; i++)\n            {\n                var friend = PlayerFriends[i];\n                float newdist = Vector3.DistanceSquared(friend.GetPosition(), entity.GetPosition());\n                if (newdist < dist)\n                {\n                    dist = newdist;\n                }\n            }\n\n            return dist;\n        }\n\n        public float DistanceToPlayers(MyEntity entity)\n        {\n            return (float)Math.Sqrt(DistanceToPlayersSquared(entity));\n        }\n\n        /// <summary>\n        /// Updates resource.\n        /// </summary>\n        public virtual void Update()\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyMissions.Update\");\n            MyMissions.Update();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"MyGlobalEvents.Update()\");\n            //Update global events in the game. This should be driven and synchronized\n            //by sector server\n            World.Global.MyGlobalEvents.Update();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"RefreshAvailableMissions\");\n\n            // update global game time\n            GameDateTime = GameDateTime + new TimeSpan(0, 0, 0, 0, MyConstants.PHYSICS_STEP_SIZE_IN_MILLISECONDS);\n\n            // check if some new mission are available (because time has advanced)\n            MyMissions.RefreshAvailableMissions();\n            MotherShipPosition.Update();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        public bool CanSaveAndLoadSessionInventory\n        {\n            get\n            {\n                if (MyGuiScreenGamePlay.Static != null)\n                {\n                    var gameType = MyGuiScreenGamePlay.Static.GetGameType();\n                    return gameType == MyGuiScreenGamePlayType.EDITOR_STORY || gameType == MyGuiScreenGamePlayType.GAME_STORY;\n                }\n                return false;\n            }\n        }\n\n        public static bool CanBeSaved(bool asTemplate, MyMwcSectorIdentifier sectorId, bool fromEditor)\n        {\n            bool isLogged = MyClientServer.LoggedPlayer != null; // Must be logged\n            bool isNotDemo = !MyClientServer.LoggedPlayer.IsDemoUser(); // Cannot be demo user\n            bool sectorCanBeSaved = sectorId.CanBeCheckpointSaved(); // Sector must be savable (for story only zero plane)\n            bool canSaveObjectives = MyMissions.CanSaveObjectives();\n\n            // Story sectors can be only on \"zero\" plane (Y coordinate is 0)\n            return\n                isLogged && isNotDemo && sectorCanBeSaved && canSaveObjectives\n                && (asTemplate == false || MyClientServer.LoggedPlayer.GetCanAccessEditorForStory()) // When saving story template, must have story editor access\n                && (fromEditor == false || sectorId.SectorType != MyMwcSectorTypeEnum.STORY || MyClientServer.LoggedPlayer.GetCanAccessEditorForStory()); // To save STORY sector from editor, it's necessary to have rights\n        }\n\n        public MyGuiScreenEditorSaveProgress SaveCheckpointTemplate(string checkpointTemplateName)\n        {\n            return Save(true, checkpointTemplateName, true, false, false);\n        }\n\n        /// <summary>\n        /// Creates checkpoint\n        /// </summary>\n        public MyGuiScreenEditorSaveProgress Save(bool saveSector = true, bool saveVisible = false, bool pause = false)\n        {\n            return Save(saveSector, CheckpointName, false, saveVisible, pause);\n        }\n\n        private MyGuiScreenEditorSaveProgress Save(bool saveSector, string checkpointName, bool asTemplate, bool visibleSave, bool pause)\n        {\n            MyMwcSectorIdentifier sectorId = MyGuiScreenGamePlay.Static.GetSectorIdentifier();\n            bool isEditor = MyGuiScreenGamePlay.Static.IsEditorActive();\n\n            if (CanBeSaved(asTemplate, sectorId, isEditor))\n            {\n                MyMwcObjectBuilder_Checkpoint checkpoint = GetCheckpointBuilder(saveSector);\n                checkpoint.CheckpointName = checkpointName;\n\n                // Need to store actual checkpoint...because when we travel, we receive only sector, not checkpoint\n                MyGuiScreenGamePlay.Static.AddEnterSectorResponse(checkpoint, null);\n\n                bool savePlayerShip = MyGuiScreenGamePlay.Static.GetGameType() == MyGuiScreenGamePlayType.EDITOR_STORY ? MyEditor.SavePlayerShip : true;\n\n                if (savePlayerShip && saveSector)\n                {\n                    UpdatePlayerStartDummy(checkpoint);\n                }\n\n                MyHudNotification.MyNotification notification = null;\n                if (!visibleSave)\n                {\n                    notification = new MyHudNotification.MyNotification(Localization.MyTextsWrapperEnum.SavingSectorToServer, 2500);\n                    MyHudNotification.AddNotification(notification);\n                }\n\n                StringBuilder errors = null;\n                if (isEditor)\n                {\n                    errors = CheckMissingObject(checkpoint);\n                }\n\n                MyGuiScreenEditorSaveProgress screen = new MyGuiScreenEditorSaveProgress(sectorId, checkpoint, savePlayerShip, visibleSave, pause);\n                //screen.Closed += new MyGuiScreenBase.ScreenHandler((s) => { if (notification != null) notification.Disappear(); });\n\n                CheckErrors(errors, screen);\n                return screen;\n            }\n\n            return null;\n        }\n\n        private static void CheckErrors(StringBuilder errors, MyGuiScreenEditorSaveProgress screen)\n        {\n            if (errors != null)\n            {\n                var caption = new StringBuilder(\"Please check missing entities (full list in log). Really save?\");\n                MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.MESSAGE, errors, caption, MyTextsWrapperEnum.Yes, MyTextsWrapperEnum.No, (result) =>\n                {\n                    if (result == MyGuiScreenMessageBoxCallbackEnum.YES)\n                    {\n                        MyGuiManager.AddScreen(screen);\n                    }\n                    else\n                    {\n                        screen.CloseScreenNow();\n                    }\n                }));\n            }\n            else\n            {\n                MyGuiManager.AddScreen(screen);\n            }\n        }\n\n        /// <summary>\n        /// Checks missing objects, returns true when save sector, false when abort saving\n        /// </summary>\n        StringBuilder CheckMissingObject(MyMwcObjectBuilder_Checkpoint checkpoint)\n        {\n            if (MyMwcFinalBuildConstants.IS_DEVELOP && (MyFakes.DUMP_MISSING_OBJECTS || MyFakes.SHOW_MISSING_OBJECTS))\n            {\n                var missing = MyGuiScreenGamePlay.FindMissingObjectBuilders(checkpoint);\n                if (MyFakes.DUMP_MISSING_OBJECTS)\n                {\n                    DumpMissingObjects(missing);\n                }\n                if (MyFakes.SHOW_MISSING_OBJECTS)\n                {\n                    return GetMissingObjects(missing); // false to abort saving\n                }\n            }\n            return null;\n        }\n\n        void DumpMissingObjects(List<MyMwcObjectBuilder_Base> missingObjects)\n        {\n            if (missingObjects.Count > 0)\n            {\n                MyMwcLog.WriteLine(\"MISSING OBJECTS DUMP: \");\n            }\n\n            foreach (var obj in missingObjects)\n            {\n                MyMwcLog.WriteLine(String.Format(\"  EntityID: {0}, Name: {1}, Type: {2}\", obj.EntityId.Value, obj.Name, obj.GetType().Name));\n            }\n        }\n\n        /// <summary>\n        /// Shows missing objects, returns true when save sector, false when abort saving\n        /// </summary>\n        StringBuilder GetMissingObjects(List<MyMwcObjectBuilder_Base> missingObjects)\n        {\n            if (missingObjects.Count == 0)\n            {\n                return null;\n            }\n\n            StringBuilder text = new StringBuilder();\n\n            foreach (var obj in missingObjects.Take(20))\n            {\n                text.AppendFormat(\"  EntityID: {0}, Name: {1}, Type: {2}\", obj.EntityId.Value, obj.Name, obj.GetType().Name);\n                text.AppendLine();\n            }\n            return text;\n        }\n\n        private static void UpdatePlayerStartDummy(MyMwcObjectBuilder_Checkpoint checkpoint)\n        {\n            var dummyBuilder = checkpoint.SectorObjectBuilder.SectorObjects.OfType<MyMwcObjectBuilder_DummyPoint>().FirstOrDefault(s => (s.DummyFlags & MyDummyPointFlags.PLAYER_START) > 0);\n            if (dummyBuilder == null)\n            {\n                dummyBuilder = MyMwcObjectBuilder_Base.CreateNewObject(MyMwcObjectBuilderTypeEnum.DummyPoint, null) as MyMwcObjectBuilder_DummyPoint;\n                dummyBuilder.DummyFlags = MyDummyPointFlags.PLAYER_START;\n                checkpoint.SectorObjectBuilder.SectorObjects.Add(dummyBuilder);\n\n                var dummyEntity = new MyDummyPoint();\n                dummyEntity.Init(String.Empty, dummyBuilder, MySession.PlayerShip.WorldMatrix);\n                MyEntities.Add(dummyEntity);\n            }\n\n            MyGuiScreenGamePlay.Static.ClampPlayerToBorderSafeArea();\n\n            dummyBuilder.PositionAndOrientation.Position = MySession.PlayerShip.WorldMatrix.Translation;\n            dummyBuilder.PositionAndOrientation.Forward = MySession.PlayerShip.WorldMatrix.Forward;\n            dummyBuilder.PositionAndOrientation.Up = MySession.PlayerShip.WorldMatrix.Up;\n        }\n\n        private void CheckEntityIds(MyMwcObjectBuilder_Checkpoint checkpoint)\n        {\n            if (checkpoint.SectorObjectBuilder == null)\n                return;\n\n            foreach (var builder in checkpoint.SectorObjectBuilder.SectorObjects)\n            {\n                if (builder.EntityId.HasValue)\n                {\n                    if (builder.EntityId.Value == checkpoint.PlayerObjectBuilder.ShipObjectBuilder.EntityId\n                        || checkpoint.PlayerObjectBuilder.ShipObjectBuilder.Inventory.InventoryItems.Select(s => s.EntityId).Any(id => id == builder.EntityId))\n                    {\n                        Debug.Fail(\"Entity ID of object is same as playership or something in playership inventory\");\n                    }\n                }\n            }\n        }\n\n        protected virtual MyMwcObjectBuilder_Session GetObjectBuilder()\n        {\n            return null;\n        }\n\n        /// <summary>\n        /// This method is used to gather all object builders of all objects in sector\n        /// </summary>\n        /// <returns></returns>\n        List<MyMwcObjectBuilder_Base> GetSectorObjectBuilders()\n        {\n            return MyEntities.Save() ?? new List<MyMwcObjectBuilder_Base>();\n        }\n\n\n        public MyMwcObjectBuilder_Checkpoint GetCheckpointBuilder(bool includeSector)\n        {\n            MyMwcObjectBuilder_Checkpoint checkpoint = new MyMwcObjectBuilder_Checkpoint();\n\n            if (includeSector)\n            {\n                checkpoint.SectorObjectBuilder = new MyMwcObjectBuilder_Sector();\n\n                List<MyMwcObjectBuilder_Base> sectorObjectBuilders = GetSectorObjectBuilders();\n                foreach (MyMwcObjectBuilder_Base objectBuilder in sectorObjectBuilders)\n                {\n                    System.Diagnostics.Debug.Assert(objectBuilder != null, \"If object is not to be saved, unset his EntityFlags::Save!\");\n                }\n                checkpoint.SectorObjectBuilder.SectorObjects = sectorObjectBuilders;\n                checkpoint.SectorObjectBuilder.ObjectGroups = MyEditor.Static.ObjectGroups.ConvertAll(a => a.GetObjectBuilder());\n                checkpoint.SectorObjectBuilder.SnapPointLinks = MyEditor.Static.GetSnapPointLinkBuilders();\n                if (MyGuiScreenGamePlay.Static.Checkpoint.SectorObjectBuilder != null)\n                {\n                    checkpoint.SectorObjectBuilder.Name = MyGuiScreenGamePlay.Static.Checkpoint.SectorObjectBuilder.Name;\n                    checkpoint.SectorObjectBuilder.Position = MyGuiScreenGamePlay.Static.Checkpoint.SectorObjectBuilder.Position;\n                }\n            }\n\n            checkpoint.CurrentSector = MyGuiScreenGamePlay.Static.GetSectorIdentifier();\n            checkpoint.CheckpointName = null;\n            checkpoint.PlayerObjectBuilder = MySession.Static.Player.GetObjectBuilder(true);\n            checkpoint.SessionObjectBuilder = GetObjectBuilder();\n            checkpoint.EventLogObjectBuilder = EventLog.GetObjectBuilder();\n            checkpoint.FactionRelationChangesBuilder = FactionRelationChanges.GetObjectBuilders();\n            checkpoint.GameTime = GameDateTime;\n            checkpoint.ActiveMissionID = MyMissions.ActiveMission == null ? -1 : (int)MyMissions.ActiveMission.ID;\n            if (CanSaveAndLoadSessionInventory)\n            {\n                checkpoint.InventoryObjectBuilder = Inventory.GetObjectBuilder(true);\n            }\n            else\n            {\n                checkpoint.InventoryObjectBuilder = new MyMwcObjectBuilder_Inventory(new List<MyMwcObjectBuilder_InventoryItem>(), MyInventory.DEFAULT_MAX_ITEMS);\n            }\n            MotherShipPosition.Save(checkpoint.Dictionary);\n\n            if (MyMultiplayerGameplay.GameType == MyGameTypes.Story)\n            {\n                MyGuiScreenGamePlay.Static.Checkpoint.CopyCoopPlayers(checkpoint);\n            }\n\n            CheckEntityIds(checkpoint);\n            return checkpoint;\n        }\n\n        public void GameOver()\n        {\n            GameOver(MyTextsWrapperEnum.MP_YouHaveBeenKilled);\n        }\n\n\n        public void GameOver(MyTextsWrapperEnum? customMessage)\n        {\n            if (!MyGuiManager.IsScreenOfTypeOpen(typeof(MyGuiScreenGameOver)))\n            {\n                MyGuiManager.AddScreen(new MyGuiScreenGameOver(1.0f, customMessage));\n            }\n        }\n\n        ///////////////////// NEW STUFF //////////////////////////\n        #region NEW_GAME\n\n        /// <summary>\n        /// Initializes a new single player session and start new game\n        /// </summary>\n        public static MyServerAction StartNewGame(MyGameplayDifficultyEnum difficulty, MyMissionID startMission = MyMissionID.EAC_SURVEY_SITE)\n        {\n            MySession.Static = new MySinglePlayerSession(difficulty);\n            MySession.Static.Init();\n            return MySession.Static.NewGame(startMission);\n        }\n\n        private static void TryPause()\n        {\n            if (!MyMinerGame.IsPaused() && MyGuiScreenGamePlay.Static != null)\n            {\n                MyMinerGame.SwitchPause();\n            }\n        }\n\n        public MyServerAction NewGame(MyMissionID startMission = MyMissionID.EAC_SURVEY_SITE)\n        {\n            TryPause();\n\n            MyMwcVector3Int? startSector = null;\n            startSector = MyMissions.GetMissionByID(startMission).Location.Sector;\n\n            var checkpoint = MyLocalCache.NewGameCheckpoint();\n            if (checkpoint == null)\n            {\n                throw new MyDataCorruptedException(\"Checkpoint cannot be loaded from content\");\n            }\n            // Set proper start sector\n            checkpoint.CurrentSector.Position = startSector.Value;\n\n            NewGameStarted(checkpoint, startMission);\n            return null; // Finished synchronously\n        }\n\n        private MyServerAction NewGameStarted(MyMwcObjectBuilder_Checkpoint checkpoint, MyMissionID missionId)\n        {\n            MyLocalCache.ClearCurrentSave();\n            MyClientServer.LoggedPlayer.HasAnyCheckpoints = false;\n\n            Debug.Assert(checkpoint.CurrentSector.UserId == null, \"New game checkpoint.CurrentSector must be story sector\");\n\n            var cachedSector = MyLocalCache.LoadSector(checkpoint.CurrentSector);\n            if (cachedSector != null)\n            {\n                checkpoint.SectorObjectBuilder = cachedSector;\n                checkpoint.CurrentSector.UserId = MyClientServer.LoggedPlayer.GetUserId();\n                ReloadGameplayNewGame(checkpoint, missionId);\n                return null;\n            }\n            throw new MyDataCorruptedException(\"New game story checkpoint does not contain first sector!\");\n        }\n\n        private void NewGameSectorLoaded(MyMwcObjectBuilder_Checkpoint checkpoint, byte[] sectorData, MyMissionID missionId)\n        {\n            checkpoint.SectorObjectBuilder = MyMwcObjectBuilder_Base.FromBytes<MyMwcObjectBuilder_Sector>(sectorData);\n\n            // Save sector to cache\n            MyLocalCache.Save(null, checkpoint.SectorObjectBuilder, checkpoint.CurrentSector);\n\n            checkpoint.CurrentSector.UserId = MyClientServer.LoggedPlayer.GetUserId(); //TODO: should this be send by server?\n            ReloadGameplayNewGame(checkpoint, missionId);\n        }\n\n        private void ReloadGameplayNewGame(MyMwcObjectBuilder_Checkpoint checkpoint, MyMissionID missionId)\n        {\n            MyGuiScreenGamePlay.ReloadGameplayScreen(checkpoint, MyMwcStartSessionRequestTypeEnum.NEW_STORY, MyGuiScreenGamePlayType.GAME_STORY, missionId, MyMwcTravelTypeEnum.SOLAR);\n        }\n\n        #endregion\n\n        #region LOAD_GAME\n\n        /// <summary>\n        /// Initialized new single player session and loads load checkpoint\n        /// </summary>\n        public static MyServerAction StartLastCheckpoint()\n        {\n            if (MyClientServer.LoggedPlayer.IsDemoUser())\n            {\n                return MySession.StartNewGame(MyGameplayConstants.GameplayDifficultyProfile.GameplayDifficulty);\n            }\n            else\n            {\n                // Difficulty doesn't matter, will be rewritten by checkpoint\n                MySession.Static = new MySinglePlayerSession(MyGameplayDifficultyEnum.NORMAL);\n                MySession.Static.Init();\n                try\n                {\n                    return MySession.Static.LoadLastCheckpoint();\n                }\n                catch (MyDataCorruptedException)\n                {\n                    var screen = new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.SaveCorruptedText, MyTextsWrapperEnum.SaveCorruptedCaption, MyTextsWrapperEnum.Ok, OnErrorClick);\n                    MyGuiManager.AddScreen(screen);\n                    return null;\n                }\n            }\n        }\n\n        private static void OnErrorClick(MyGuiScreenMessageBoxCallbackEnum result)\n        {\n            MyGuiManager.BackToMainMenu();\n        }\n\n        public MyServerAction LoadLastCheckpoint()\n        {\n            TryPause();\n\n            var checkpoint = MyLocalCache.LoadCheckpoint();\n            if (checkpoint != null)\n            {\n                CheckpointLoaded(checkpoint);\n            }\n            else\n            {\n                throw new MyDataCorruptedException(\"Last checkpoint corrupted\");\n            }\n            return null;\n        }\n\n\n        public static MyGuiScreenLoading StartJoinMultiplayerSession(MyGameTypes gameType, MyGameplayDifficultyEnum difficulty, MyMwcObjectBuilder_Checkpoint checkpoint)\n        {\n            // Temporary\n            MySession.Static = new MySinglePlayerSession(difficulty);\n            MySession.Static.Init();\n            return MySession.Static.JoinMultiplayerSession(gameType, checkpoint);\n        }\n\n        private MyGuiScreenLoading JoinMultiplayerSession(MyGameTypes gameType, MyMwcObjectBuilder_Checkpoint checkpoint)\n        {\n            MyMultiplayerGameplay.Static.IsHost = false;\n            //var checkpoint = MyMwcObjectBuilder_Base.CreateNewObject(MyMwcObjectBuilderTypeEnum.Checkpoint, null) as MyMwcObjectBuilder_Checkpoint;\n\n            // This is just dummy ship for load\n            //var ship = MyMwcObjectBuilder_SmallShip_Player.CreateDefaultShip(MyMwcObjectBuilder_SmallShip_TypesEnum.GETTYSBURG, MySession.Static.Player.Faction);\n            MySession.Static.Player.Faction = checkpoint.PlayerObjectBuilder.ShipObjectBuilder.Faction;\n\n            MyGuiManager.CloseAllScreensExcept(MyGuiScreenGamePlay.Static);\n\n            MyGuiScreenGamePlayType? gameplayType = null;\n            MyMwcStartSessionRequestTypeEnum? sessionType = null;\n            switch (gameType)\n            {\n                case MyGameTypes.Story:\n                    gameplayType = MyGuiScreenGamePlayType.GAME_STORY;\n                    sessionType = MyMwcStartSessionRequestTypeEnum.JOIN_FRIEND_STORY;\n                    break;\n                case MyGameTypes.Deathmatch:\n                    gameplayType = MyGuiScreenGamePlayType.GAME_SANDBOX;\n                    sessionType = MyMwcStartSessionRequestTypeEnum.SANDBOX_FRIENDS;\n                    break;\n                default:\n                    break;\n            }\n\n            return MyGuiScreenGamePlay.ReloadGameplayScreen(checkpoint, sessionType, gameplayType);\n        }\n\n        private MyServerAction CheckpointLoaded(MyMwcObjectBuilder_Checkpoint checkpoint)\n        {\n            MyGameplayConstants.SetGameplayDifficulty(checkpoint.SessionObjectBuilder.Difficulty);\n\n            Debug.Assert((checkpoint.CheckpointName == null && checkpoint.CurrentSector.UserId != null) || (checkpoint.CheckpointName != null && checkpoint.CurrentSector.UserId == null));\n\n            var cacheSector = MyLocalCache.LoadSector(checkpoint.CurrentSector);\n            if (cacheSector != null)\n            {\n                checkpoint.SectorObjectBuilder = cacheSector;\n                MyGuiScreenGamePlay.ReloadGameplayScreen(checkpoint, MyMwcStartSessionRequestTypeEnum.LOAD_CHECKPOINT, MyGuiScreenGamePlayType.GAME_STORY);\n                return null;\n            }\n            else\n            {\n                // Checkpoint and sector is stored on filesystem\n                throw new MyDataCorruptedException(\"Last checkpoint sector corrupted\");\n\n                //MyServerAction loadAction = new MyServerAction(MyTextsWrapperEnum.EnterSectorInProgressPleaseWait);\n                //loadAction.BeginAction = c => c.BeginLoadSector(null, c);\n                //loadAction.EndAction = (c, r) => LastCheckpointSectorLoaded(checkpoint, c.EndLoadSector(r));\n                //loadAction.Start();\n                //return loadAction;\n            }\n        }\n\n        private void LastCheckpointSectorLoaded(MyMwcObjectBuilder_Checkpoint checkpoint, byte[] sectorData)\n        {\n            checkpoint.SectorObjectBuilder = MyMwcObjectBuilder_Base.FromBytes<MyMwcObjectBuilder_Sector>(sectorData);\n            MyGuiScreenGamePlay.ReloadGameplayScreen(checkpoint, MyMwcStartSessionRequestTypeEnum.LOAD_CHECKPOINT, MyGuiScreenGamePlayType.GAME_STORY);\n        }\n\n        // This method works on foreground, on current thread\n        public MyMwcObjectBuilder_SectorObjectGroups LoadSectorGroups(MyMwcVector3Int sectorPosition)\n        {\n            var sectorId = new MyMwcSectorIdentifier(MyMwcSectorTypeEnum.STORY, null, sectorPosition, String.Empty);\n            var sector = MyLocalCache.LoadSector(sectorId);\n            int? version = sector != null ? (int?)sector.Version : null;\n\n            var groupBuilder = MyMwcObjectBuilder_Base.CreateNewObject(MyMwcObjectBuilderTypeEnum.SectorObjectGroups, null) as MyMwcObjectBuilder_SectorObjectGroups;\n\n            if (sector == null)\n            {\n                throw new MyDataCorruptedException(\"Sector cannot be loaded\");\n            }\n\n            // Server said: use cache\n            groupBuilder.Generated = sector.Generated;\n            groupBuilder.Entities = sector.SectorObjects;\n            groupBuilder.Groups = sector.ObjectGroups;\n            return groupBuilder;\n        }\n\n        #endregion\n\n        #region TRAVEL\n\n        public MyServerAction Travel(MyMwcTravelTypeEnum travelType, MyMwcSectorIdentifier targetSector)\n        {\n            Debug.Assert(targetSector.SectorType == MyMwcSectorTypeEnum.STORY, \"Travel is allowed only in story\");\n\n            TryPause();\n\n            var sector = MyLocalCache.LoadSector(targetSector);\n\n            if (sector == null)\n            {\n                var storySectorId = targetSector;\n                storySectorId.UserId = null;\n                sector = MyLocalCache.LoadSector(storySectorId);\n            }\n\n            if (sector != null)\n            {\n                TravelSectorLoaded(travelType, targetSector.Position, null, sector);\n                return null;\n            }\n            else // Not using server...so sector is \"from generator\"\n            {\n                TravelSectorLoaded(travelType, targetSector.Position, null, MyMwcObjectBuilder_Sector.UseGenerator());\n                return null;\n            }\n        }\n\n        private void TravelSectorLoaded(MyMwcTravelTypeEnum travelType, MyMwcVector3Int targetSector, byte[] sectorDataResponse, MyMwcObjectBuilder_Sector cachedSector)\n        {\n            var checkpoint = GetCheckpointBuilder(false);\n            checkpoint.SectorObjectBuilder = cachedSector;\n\n            // Overwrite current sector\n            checkpoint.CurrentSector.Position = targetSector;\n            UpdatePlayerPosition(travelType, ref checkpoint.PlayerObjectBuilder.ShipObjectBuilder.PositionAndOrientation.Position);\n\n            if (sectorDataResponse != null)\n            {\n                checkpoint.SectorObjectBuilder = MyMwcObjectBuilder_Base.FromBytes<MyMwcObjectBuilder_Sector>(sectorDataResponse);\n                MyLocalCache.Save(null, checkpoint.SectorObjectBuilder, checkpoint.CurrentSector);\n            }\n\n            // Change NEW_STORY to LOAD_CHECKPOINT, because it's necessary, travel is never new story\n            MyMwcStartSessionRequestTypeEnum? sessionStart = null;\n            if (MyGuiScreenGamePlay.Static != null)\n            {\n                sessionStart = MyGuiScreenGamePlay.Static.GetSessionType();\n                if (sessionStart.HasValue && sessionStart.Value == MyMwcStartSessionRequestTypeEnum.NEW_STORY)\n                {\n                    sessionStart = MyMwcStartSessionRequestTypeEnum.LOAD_CHECKPOINT;\n                }\n            }\n\n            MyGuiScreenGamePlay.ReloadGameplayScreen(checkpoint, sessionStart, null, null, travelType);\n        }\n\n        private void UpdatePlayerPosition(MyMwcTravelTypeEnum travelType, ref Vector3 position)\n        {\n            switch (travelType)\n            {\n                case MyMwcTravelTypeEnum.SOLAR:\n                    position = new Vector3(0, 0, 0);\n                    break;\n\n                case MyMwcTravelTypeEnum.NEIGHBOUR:\n                    position = MyMwcUtils.GetNeighbourSectorShipPosition(position);\n                    break;\n\n                default:\n                    throw new MyMwcExceptionApplicationShouldNotGetHere();\n            }\n        }\n\n        #endregion\n\n        #region SAVE_GAME\n\n        public MyServerAction SaveLastCheckpoint(bool createChapter = false)\n        {\n            if (MyMultiplayerGameplay.IsRunning && !MyMultiplayerGameplay.Static.IsHost)\n                return null;\n\n            var lastChapterTime = MyLocalCache.GetLastChapterTimestamp();\n            var nextChapterTime = lastChapterTime + TimeSpan.FromHours(3);\n\n            if (MyMissions.ActiveMission == null && DateTime.Now > nextChapterTime)\n            {\n                createChapter = true;\n            }\n\n            MyMwcSectorIdentifier sectorId = MyGuiScreenGamePlay.Static.GetSectorIdentifier();\n\n            if (CanBeSaved(false, sectorId, false))\n            {\n                var notification = new MyHudNotification.MyNotification(Localization.MyTextsWrapperEnum.SavingSectorToServer, 2500);\n                MyHudNotification.AddNotification(notification);\n\n                var checkpoint = GetCheckpointBuilder(true);\n                checkpoint.CurrentSector.UserId = MyClientServer.LoggedPlayer.GetUserId(); // Saving players checkpoint\n                \n                if (MySession.PlayerShip != null && checkpoint.PlayerObjectBuilder.ShipObjectBuilder != null)\n                {\n                    float refilRatio = 0.5f;\n\n                    var ship = checkpoint.PlayerObjectBuilder.ShipObjectBuilder;\n                    ship.ArmorHealth = MathHelper.Clamp(ship.ArmorHealth, refilRatio * MySession.PlayerShip.MaxArmorHealth, MySession.PlayerShip.MaxArmorHealth);\n                    ship.ShipHealthRatio = MathHelper.Clamp(ship.ShipHealthRatio, refilRatio, 1.0f);\n                    ship.Fuel = MathHelper.Clamp(ship.Fuel, refilRatio * MySession.PlayerShip.MaxFuel, MySession.PlayerShip.MaxFuel);\n                    ship.Oxygen = MathHelper.Clamp(ship.Oxygen, refilRatio * MySession.PlayerShip.MaxOxygen, MySession.PlayerShip.MaxOxygen);\n                    checkpoint.PlayerObjectBuilder.Health = MathHelper.Clamp(checkpoint.PlayerObjectBuilder.Health, refilRatio * 100, 100);\n                }\n\n                // Need to store actual checkpoint...because when we travel, we receive only sector, not checkpoint\n                MyGuiScreenGamePlay.Static.AddEnterSectorResponse(checkpoint, null);\n\n                Debug.Assert(checkpoint.CurrentSector.UserId != null, \"Saving last checkpoint as story\");\n                UpdatePlayerStartDummy(checkpoint);\n                \n                MyLocalCache.SaveCheckpoint(checkpoint, createChapter);\n                checkpoint.SectorObjectBuilder = null; // Don't save sector\n            }\n            return null;\n        }\n\n        #endregion\n\n        #region SANDBOX\n        public static MyServerAction StartSandbox(MyMwcVector3Int position, int? userId)\n        {\n            MySession.Static = new MySinglePlayerSession(MyGameplayDifficultyEnum.NORMAL);\n            MySession.Static.Init();\n            return MySession.Static.LoadSandbox(position, userId);\n        }\n\n        public static MyServerAction StartSandboxMission(MyMissionID startMission)\n        {\n            MySession.Static = new MySinglePlayerSession(MyGameplayDifficultyEnum.NORMAL);\n            MySession.Static.Init();\n            return MySession.Static.LoadSandboxMission(startMission);\n        }\n\n        public MyServerAction LoadSandbox(MyMwcVector3Int position, int? userId)\n        {\n            return LoadSandbox(position, userId, null);\n        }\n\n        public MyServerAction LoadSandboxMission(MyMissionID startMission)\n        {\n            var startSector = MyMissions.GetMissionByID(startMission).Location.Sector;\n            return LoadSandbox(startSector, null, startMission);\n        }\n\n        private MyServerAction LoadSandbox(MyMwcVector3Int position, int? userId, MyMissionID? startMission)\n        {\n            var sectorId = new MyMwcSectorIdentifier(MyMwcSectorTypeEnum.SANDBOX, userId, position, null);\n            var sector = MyLocalCache.LoadSector(sectorId);\n            int? version = sector != null ? (int?)sector.Version : null;\n\n            MyMwcStartSessionRequestTypeEnum startSessionType = userId == MyClientServer.LoggedPlayer.GetUserId() ? MyMwcStartSessionRequestTypeEnum.SANDBOX_OWN : MyMwcStartSessionRequestTypeEnum.SANDBOX_FRIENDS;\n\n            if (userId != null)\n            {\n                MyServerAction loadAction = new MyServerAction(MyTextsWrapperEnum.EnterSectorInProgressPleaseWait, TimeSpan.FromSeconds(360));\n                loadAction.BeginAction = c => c.BeginLoadSandbox(position, userId, version, null, c);\n                loadAction.EndAction = (c, r) => SandboxSectorLoaded(position, MyMwcObjectBuilder_Base.FromBytes<MyMwcObjectBuilder_Checkpoint>(c.EndLoadSandbox(r)), sector, startSessionType, startMission);\n                loadAction.Start();\n                return loadAction;\n            }\n            else if (sector != null)\n            {\n                var checkpoint = MyLocalCache.MultiplayerCheckpoint();\n                if (checkpoint == null)\n                {\n                    throw new MyDataCorruptedException(\"Cannot load MP checkpoint\");\n                }\n\n                if (!MySteam.IsActive && MyClientServer.IsMwAccount)\n                {\n                    checkpoint.PlayerObjectBuilder.Money = (float)MySectorServiceClient.GetCheckedInstance().GetGameMoney();\n                    MySectorServiceClient.SafeClose();\n                }\n\n                checkpoint.SectorObjectBuilder = sector;\n                SandboxSectorLoaded(position, checkpoint, sector, startSessionType, startMission);\n                return null;\n            }\n            else\n            {\n                throw new MyDataCorruptedException(\"Cannot load sandbox/MP sector\");\n            }\n        }\n\n        private void SandboxSectorLoaded(MyMwcVector3Int targetSector, MyMwcObjectBuilder_Checkpoint checkpoint, MyMwcObjectBuilder_Sector cachedSector, MyMwcStartSessionRequestTypeEnum startSessionType, MyMissionID? startMission)\n        {\n            if (checkpoint.SectorObjectBuilder == null) // Server said, use cache\n            {\n                checkpoint.SectorObjectBuilder = cachedSector;\n            }\n            else\n            {\n                MyLocalCache.SaveCheckpoint(checkpoint);\n            }\n\n            MyGuiScreenGamePlay.ReloadGameplayScreen(checkpoint, startSessionType, MyGuiScreenGamePlayType.GAME_SANDBOX, startMission);\n        }\n\n        public static bool Is25DSector\n        {\n            get\n            {\n                return MyClientServer.MW25DEnabled && (Static != null) && Static.Is2DSector;\n            }\n        }\n\n\n        #endregion\n\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Sessions/MySinglePlayerSession.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing MinerWars.AppCode.Game.Journal;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils;\nusing MinerWars.AppCode.Game.Gameplay;\n\nnamespace MinerWars.AppCode.Game.Managers.Session\n{\n    using MinerWars.AppCode.App;\n    using MinerWars.AppCode.Game.Missions;\n    using System.Reflection;\n    using KeenSoftwareHouse.Library.Extensions;\n    using MinerWars.AppCode.Game.GUI.Core;\n    using MinerWars.AppCode.Game.GUI;\n    using MinerWars.AppCode.Game.World.Global;\n\n\n    public enum MySingleplayeSessionState\n    {\n        Init,\n        ChooseDifficulty,\n        Running\n    }\n\n    /// <summary>\n    /// Represent single player game session\n    /// </summary>\n    internal sealed class MySinglePlayerSession : MySession\n    {\n        /// <summary>\n        /// Initializes a new instance of the <see cref=\"MySession\"/> class.\n        /// </summary>\n        public MySinglePlayerSession(MyGameplayDifficultyEnum difficulty)\n        {\n            MyGameplayConstants.SetGameplayDifficulty(difficulty);\n        }\n     \n        #region Overrides of MySession\n\n\n        protected override MyMwcObjectBuilder_Session GetObjectBuilder()\n        {\n            return new MyMwcObjectBuilder_Session(MyGameplayConstants.GameplayDifficultyProfile.GameplayDifficulty);\n        }\n\n        /// <summary>\n        /// Updates resource.\n        /// </summary>\n        public override void Update()\n        {\n            base.Update();\n        }\n\n        #endregion\n\n        public override void Init()\n        {\n            base.Init();\n\n            MyMissions.Unload();\n            if (MyMissions.ActiveMission != null)\n                MyMissions.ActiveMission.Load();\n\n            EventLog = new MyEventLog();\n            MyMissions.RefreshAvailableMissions();\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/SolarSystem/MySectorGenerator.cs",
    "content": "﻿#region Using\n\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.Generics;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Voxels;\nusing MinerWars.AppCode.Game.Voxels;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.AppCode.Game.Gameplay;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.Prefabs;\nusing MinerWars.AppCode.Networking.SectorService;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.World;\nusing MinerWars.AppCode.Physics;\nusing MinerWars.AppCode.Game.Physics;\n\n#endregion\n\nnamespace MinerWars.AppCode.Game.SolarSystem\n{\n\n    enum MySectorObjectType\n    {\n        Voxel512, Voxel256, Voxel128, Voxel64, StaticAsteroidLarge, StaticAsteroidMedium, StaticAsteroidSmall, Motherships, DebrisFields\n    }\n\n    struct MyObjectInfo\n    {\n        public MySolarSystemEntityEnum EntityType { get; set; }\n        public float SizeInMeters { get; set; } //Diameter\n        public float ObjectCount { get; set; }\n    }\n\n    class MySectorObjectCounts\n    {\n        public const float LargeAsteroidSize = 10000;\n        public const float MediumAsteroidSize = 1000;\n        public const float SmallAsteroidSize = 100;\n\n        public MyStaticAsteroidTypeSetEnum StaticAsteroidTypeset = MyStaticAsteroidTypeSetEnum.A | MyStaticAsteroidTypeSetEnum.B;\n\n        public Dictionary<int, float> Values { get; private set; }\n\n        public float this[MySectorObjectType objectType]\n        {\n            get\n            {\n                int key = (int)objectType;\n                float count;\n                if (!Values.TryGetValue(key, out count))\n                {\n                    count = 0; // Default count is zero\n                }\n                return count;\n            }\n            set\n            {\n                Values[(int)objectType] = value;\n            }\n        }\n\n        /// <summary>\n        /// Key is voxel size in voxels, value is asteroid count\n        /// </summary>\n        public IEnumerable<KeyValuePair<int, float>> VoxelsAsteroids\n        {\n            get\n            {\n                yield return new KeyValuePair<int, float>(512, this[MySectorObjectType.Voxel512]);\n                yield return new KeyValuePair<int, float>(256, this[MySectorObjectType.Voxel256]);\n                yield return new KeyValuePair<int, float>(128, this[MySectorObjectType.Voxel128]);\n                yield return new KeyValuePair<int, float>(64, this[MySectorObjectType.Voxel64]);\n            }\n        }\n\n        /// <summary>\n        /// Key is asteroid size in meters, value is asteroid count\n        /// </summary>\n        public IEnumerable<KeyValuePair<float, float>> StaticAsteroids\n        {\n            get\n            {\n                yield return new KeyValuePair<float, float>(LargeAsteroidSize, this[MySectorObjectType.StaticAsteroidLarge]);\n                yield return new KeyValuePair<float, float>(MediumAsteroidSize, this[MySectorObjectType.StaticAsteroidMedium]);\n                yield return new KeyValuePair<float, float>(SmallAsteroidSize, this[MySectorObjectType.StaticAsteroidSmall]);\n            }\n        }\n\n        /// <summary>\n        /// All asteroids, key is size in meters, value is asteroid count\n        /// </summary>\n        public IEnumerable<MyObjectInfo> AllObjects\n        {\n            get\n            {\n                var voxelInfo = VoxelsAsteroids.Select(s => new MyObjectInfo() { SizeInMeters = s.Key * MyVoxelConstants.VOXEL_SIZE_IN_METRES, ObjectCount = s.Value, EntityType = MySolarSystemEntityEnum.VoxelAsteroid });\n                var asteroidInfo = StaticAsteroids.Select(s => new MyObjectInfo() { SizeInMeters = s.Key, EntityType = MySolarSystemEntityEnum.StaticAsteroid, ObjectCount = s.Value });\n                var otherInfo = new MyObjectInfo[]\n                {\n                    new MyObjectInfo() { ObjectCount = Motherships, EntityType = MySolarSystemEntityEnum.LargeShip, SizeInMeters = 500},\n                    new MyObjectInfo() { ObjectCount = StaticDebrisFields, EntityType = MySolarSystemEntityEnum.DebrisField, SizeInMeters = 50},\n                };\n                return voxelInfo.Union(asteroidInfo).Union(otherInfo).OrderByDescending(s => s.SizeInMeters);\n            }\n        }\n\n        public float Voxels512 { get { return this[MySectorObjectType.Voxel512]; } set { this[MySectorObjectType.Voxel512] = value; } }\n        public float Voxels256 { get { return this[MySectorObjectType.Voxel256]; } set { this[MySectorObjectType.Voxel256] = value; } }\n        public float Voxels128 { get { return this[MySectorObjectType.Voxel128]; } set { this[MySectorObjectType.Voxel128] = value; } }\n        public float Voxels64 { get { return this[MySectorObjectType.Voxel64]; } set { this[MySectorObjectType.Voxel64] = value; } }\n\n        public float StaticAsteroidLarge { get { return this[MySectorObjectType.StaticAsteroidLarge]; } set { this[MySectorObjectType.StaticAsteroidLarge] = value; } }\n        public float StaticAsteroidMedium { get { return this[MySectorObjectType.StaticAsteroidMedium]; } set { this[MySectorObjectType.StaticAsteroidMedium] = value; } }\n        public float StaticAsteroidSmall { get { return this[MySectorObjectType.StaticAsteroidSmall]; } set { this[MySectorObjectType.StaticAsteroidSmall] = value; } }\n\n        public float Motherships { get { return this[MySectorObjectType.Motherships]; } set { this[MySectorObjectType.Motherships] = value; } }\n        public float StaticDebrisFields { get { return this[MySectorObjectType.DebrisFields]; } set { this[MySectorObjectType.DebrisFields] = value; } }\n\n        public MySectorObjectCounts()\n        {\n            Values = new Dictionary<int, float>(Enum.GetValues(typeof(MySectorObjectType)).Length);\n        }\n\n        /// <param name=\"interpolator\">1 means use other object</param>\n        public MySectorObjectCounts InterpolateWith(MySectorObjectCounts otherObject, float interpolator)\n        {\n            var result = new MySectorObjectCounts();\n            // This function assumes that both collection contains all types of objects\n            foreach (var kv in Values)\n            {\n                float currentValue = kv.Value;\n                float otherValue = otherObject.Values[kv.Key];\n                result.Values[kv.Key] = MathHelper.Lerp(currentValue, otherValue, interpolator);\n            }\n\n            StaticAsteroidTypeset = interpolator > 0.5f ? StaticAsteroidTypeset : otherObject.StaticAsteroidTypeset;\n\n            return result;\n        }\n    }\n\n    class MySectorGenerator\n    {\n        int m_seed;\n\n        /// <summary>\n        /// Deviation of vein in every step.\n        /// Higher value means vein will be more curved.\n        /// </summary>\n        const float VeinAngleDeviation = MathHelper.Pi / 8; // 22.5 degrees\n\n        /// <summary>\n        /// Maximum level of vein subdivision\n        /// </summary>\n        const int MaxLevel = 1;\n\n        /// <summary>\n        /// Base thickness of secondary material vein.\n        /// </summary>\n        const float BaseSecondaryMaterialThickness = 40;\n\n        /// <summary>\n        /// Defines how many times we try find not colliding position for entity\n        /// </summary>\n        const int MaxCollisionsTestsForEntity = 100;\n\n        /// <summary>\n        /// Safe areas, where no generated object will collide (in 1000km units)!!!!\n        /// </summary>\n        private List<BoundingSphere> m_safeAreas;\n\n        Dictionary<MyMwcVector3Int, MySolarSystemAreaEnum> m_customSectors = new Dictionary<MyMwcVector3Int, MySolarSystemAreaEnum>();\n\n\n        public MySectorGenerator(int seed)\n            : this(seed, new List<BoundingSphere>())\n        {\n        }\n\n        public MySectorGenerator(int seed, List<BoundingSphere> safeAreas)\n        {\n            m_seed = seed;\n            m_safeAreas = safeAreas;\n\n            //Fragile\n            m_customSectors.Add(new MyMwcVector3Int(88, 0, -58), MySolarSystemAreaEnum.Laika);\n            //Arabian Border\n            m_customSectors.Add(new MyMwcVector3Int(18, 0, 96), MySolarSystemAreaEnum.Junkyard);\n            //Military Outpost\n            m_customSectors.Add(new MyMwcVector3Int(-66, 0, -44), MySolarSystemAreaEnum.Mercury);\n            //CKD Mothership Facility            \n            m_customSectors.Add(new MyMwcVector3Int(93, 0, 73), MySolarSystemAreaEnum.RussianTransmitter);\n            //Nearby Stations\n            m_customSectors.Add(new MyMwcVector3Int(19, 0, -92), MySolarSystemAreaEnum.Junkyard);\n            //Research Vessel\n            m_customSectors.Add(new MyMwcVector3Int(-100, 0, 20), MySolarSystemAreaEnum.Nebula);\n            //Uranite Mines\n            m_customSectors.Add(new MyMwcVector3Int(64, 0, -20), MySolarSystemAreaEnum.RussianTransmitter);\n            //Warehouse Deathmatch\n            m_customSectors.Add(new MyMwcVector3Int(-30, 0, -61), MySolarSystemAreaEnum.SlaversBase2);\n            //Hall of fame\n            m_customSectors.Add(new MyMwcVector3Int(53, 0, 84), MySolarSystemAreaEnum.Hall);\n            //Rift Station Deathmatch\n            m_customSectors.Add(new MyMwcVector3Int(-93, 0, 46), MySolarSystemAreaEnum.NearSun);\n            //New NYC Deathmatch\n            m_customSectors.Add(new MyMwcVector3Int(-78, 0, 35), MySolarSystemAreaEnum.Uranus);    \n\n            //Military Area (2.5D)\n            m_customSectors.Add(new MyMwcVector3Int(-79, 0, 70), MySolarSystemAreaEnum.Junkyard);            \n            //Miner Outpost (2.5D)\n            m_customSectors.Add(new MyMwcVector3Int(-8, 0, -5), MySolarSystemAreaEnum.Uranus);\n            //City fight (2.5D)\n            m_customSectors.Add(new MyMwcVector3Int(93, 0, 14), MySolarSystemAreaEnum.RussianTransmitter);\n            //Plain (2.5D)\n            m_customSectors.Add(new MyMwcVector3Int(-43, 0, 86), MySolarSystemAreaEnum.Venus);\n            //gates of Hell (2.5D)\n            m_customSectors.Add(new MyMwcVector3Int(-38, 0, 71), MySolarSystemAreaEnum.Hell25D);\n            //Junkyard (2.5D)\n            m_customSectors.Add(new MyMwcVector3Int(-15, 0, -42), MySolarSystemAreaEnum.Junkyard);\n            //Asteroid Field (2.5D)\n            m_customSectors.Add(new MyMwcVector3Int(17, 0, 67), MySolarSystemAreaEnum.Neptune);\n\n            //Sky (Builder)\n            m_customSectors.Add(new MyMwcVector3Int(16, 16, 16), MySolarSystemAreaEnum.Sky);\n            m_customSectors.Add(new MyMwcVector3Int(17, 17, 17), MySolarSystemAreaEnum.Sky);\n            m_customSectors.Add(new MyMwcVector3Int(18, 18, 18), MySolarSystemAreaEnum.Sky);  \n        }\n\n        public static bool IsSectorInForbiddenArea(MyMwcVector3Int sector)\n        {\n            return ((sector.X <= MyGuiConstants.SOLAR_SYSTEM_FORBIDDEN_AREA.X) && (sector.Y <= MyGuiConstants.SOLAR_SYSTEM_FORBIDDEN_AREA.Y) && (sector.Z <= MyGuiConstants.SOLAR_SYSTEM_FORBIDDEN_AREA.Z)\n             && (sector.X >= -MyGuiConstants.SOLAR_SYSTEM_FORBIDDEN_AREA.X) && (sector.Y >= -MyGuiConstants.SOLAR_SYSTEM_FORBIDDEN_AREA.Y) && (sector.Z >= -MyGuiConstants.SOLAR_SYSTEM_FORBIDDEN_AREA.Z));\n        }\n\n        private bool IsSectorCustom(MyMwcVector3Int sector)\n        {\n            return MyGuiScreenGamePlay.Static.Checkpoint.CurrentSector.SectorType == MyMwcSectorTypeEnum.SANDBOX && m_customSectors.ContainsKey(sector);\n        }\n\n        private MySolarSystemAreaEnum GetCustomSectorArea(MyMwcVector3Int sector)\n        {\n            return m_customSectors[sector];\n        }\n\n        /// <summary>\n        /// Generates sector with entities from SolarMap and SectorId\n        /// </summary>\n        /// <param name=\"solarData\">SolarMap data.</param>\n        /// <param name=\"sector\">Sector to generate.</param>\n        /// <param name=\"minimalEntitySize\">Minimal entity size. When far from sector, no need to display all entities.</param>\n        /// <returns>MySolarSystemMapSectorData - collection of sector entities.</returns>\n        public MySolarSystemMapSectorData GenerateSectorEntities(MySolarSystemMapData solarData, MyMwcVector3Int sector, float minimalEntitySize, int maxEntityCount, bool onlyStaticAsteroids)\n        {\n            MySolarSystemAreaEnum? customArea = null;\n            if (IsSectorCustom(sector))\n            {\n                customArea = GetCustomSectorArea(sector);\n            }\n            else\n            if (IsSectorInForbiddenArea(sector))\n            {\n                sector = MySolarSystemUtils.MillionKmToSectors(MyBgrCubeConsts.EARTH_POSITION);\n            }\n\n            MySolarSystemMapSectorData data;\n            if (!solarData.SectorData.TryGetValue(sector, out data) || data.MinimalEntitySize > minimalEntitySize)\n            {\n                data = new MySolarSystemMapSectorData(sector, minimalEntitySize);\n                solarData.SectorData[sector] = data;\n            }\n\n            // Apply all areas to sector, area tests whether it influents sector or not\n            if (!customArea.HasValue)\n            {\n                foreach (var areaEnum in solarData.Areas)\n                {\n                    var area = MySolarSystemConstants.Areas[areaEnum];\n\n                    var interpolator = area.GetSectorInterpolator(data.SectorPosition);\n\n                    if (interpolator > 0 && interpolator > data.AreaInfluenceMultiplier)\n                    {\n                        data.Area = areaEnum;\n                        data.AreaInfluenceMultiplier = interpolator;\n                    }\n                }\n            }\n            else\n            {\n                data.Area = customArea.Value;\n                data.AreaInfluenceMultiplier = 1;\n            }\n\n            AddSectorEntities(data, minimalEntitySize, maxEntityCount, onlyStaticAsteroids);\n\n            return data;\n        }\n\n\n        public MyMwcObjectBuilder_Sector GenerateObjectBuilders(MyMwcVector3Int sectorPosition, MySectorObjectCounts sectorObjectCounts, bool onlyStaticAsteroids)\n        {\n            Random rnd = new Random(m_seed);\n            List<MySolarSystemMapEntity> entities = new List<MySolarSystemMapEntity>();\n            AddSectorEntities(sectorObjectCounts, sectorPosition, rnd, 0, int.MaxValue, entities, onlyStaticAsteroids);\n\n            List<MyMwcObjectBuilder_Base> sectorObjects = new List<MyMwcObjectBuilder_Base>();\n\n            MyWeightDictionary<MyMwcVoxelMaterialsEnum> primaryMaterials = new MyWeightDictionary<MyMwcVoxelMaterialsEnum>(MySolarSystemConstants.DefaultAsteroidMaterials);\n            MyWeightDictionary<MyMwcVoxelMaterialsEnum> secondaryMaterials = new MyWeightDictionary<MyMwcVoxelMaterialsEnum>(MySolarSystemConstants.DefaultSecondaryMaterials);\n\n            GenerateSectorObjectBuildersFromSolarEntities(entities, sectorObjects, rnd, primaryMaterials, secondaryMaterials, sectorObjectCounts.StaticAsteroidTypeset);\n\n            return new MyMwcObjectBuilder_Sector()\n            {\n                SectorObjects = sectorObjects,\n            };\n        }\n\n        public void GenerateSectorObjectBuildersFromSolarEntities(List<MySolarSystemMapEntity> entities, List<MyMwcObjectBuilder_Base> addToList, Random rnd, MyWeightDictionary<MyMwcVoxelMaterialsEnum> primaryMaterials, MyWeightDictionary<MyMwcVoxelMaterialsEnum> secondaryMaterials, MyStaticAsteroidTypeSetEnum staticAsteroidTypesets, MyMwcVoxelMaterialsEnum? fieldMaterial = null, MySolarSystemArea.AreaEnum? areaType = null)\n        {\n            List<MyMwcObjectBuilder_StaticAsteroid_TypesEnum> asteroids = new List<MyMwcObjectBuilder_StaticAsteroid_TypesEnum>(5);\n            List<MyMwcVoxelFilesEnum> voxelAsteroids = new List<MyMwcVoxelFilesEnum>(10);\n\n            int count = addToList.Count;\n\n            foreach (var e in entities)\n            {\n                if (e.EntityType == MySolarSystemEntityEnum.VoxelAsteroid)\n                {\n                    int voxelAsteroidSize = FindAsteroidSize(e.Radius, MyVoxelMap.AsteroidSizes);\n\n                    int rndIndex = rnd.Next(0, voxelAsteroids.Count);\n\n                    MyVoxelMap.GetAsteroidsBySizeInMeters(voxelAsteroidSize, voxelAsteroids, false);\n\n                    MyMwcObjectBuilder_VoxelMap builder = GenerateVoxelMap(voxelAsteroidSize, e.PositionInSector, rnd, voxelAsteroids, primaryMaterials, secondaryMaterials);\n\n                    addToList.Add(builder);\n                }\n                else if (e.EntityType == MySolarSystemEntityEnum.StaticAsteroid)\n                {\n                    float radius = 100;\n                    if (e.Radius == 10000)\n                        radius = rnd.Next(2000, 11000);\n                    if (e.Radius == 1000)\n                        radius = rnd.Next(100, 1100);\n                    if (e.Radius == 100)\n                        radius = rnd.Next(10, 100);\n\n\n                    MyMwcVoxelMaterialsEnum asteroidMaterial = MyMwcVoxelMaterialsEnum.Stone_01;\n                    if (primaryMaterials.Count > 0)\n                        primaryMaterials.GetRandomItem(rnd);\n\n                    MyStaticAsteroidTypeSetEnum asteroidType = MyStaticAsteroidTypeSetEnum.A;\n\n                    //for (int i = 0; i < 40000000; i++)\n                    {\n                        asteroidType = (MyStaticAsteroidTypeSetEnum)rnd.Item(Enum.GetValues(typeof(MyStaticAsteroidTypeSetEnum)));\n                    }\n\n                    if ((staticAsteroidTypesets & MyStaticAsteroidTypeSetEnum.A) == MyStaticAsteroidTypeSetEnum.A)\n                        asteroidType = MyStaticAsteroidTypeSetEnum.A;\n                    if ((staticAsteroidTypesets & MyStaticAsteroidTypeSetEnum.B) == MyStaticAsteroidTypeSetEnum.B)\n                        asteroidType = MyStaticAsteroidTypeSetEnum.B;\n                    if ((staticAsteroidTypesets & MyStaticAsteroidTypeSetEnum.All) == MyStaticAsteroidTypeSetEnum.All)\n                        asteroidType = rnd.Float(0, 1) > 0.5f ? MyStaticAsteroidTypeSetEnum.A : MyStaticAsteroidTypeSetEnum.B;\n\n                    var builder = GenerateStaticAsteroid(radius, asteroidType, asteroidMaterial, e.PositionInSector, rnd, asteroids);\n\n  \n                    builder.AsteroidMaterial1 = fieldMaterial;\n                    if (areaType == MySolarSystemArea.AreaEnum.Sun)\n                    {\n                        builder.FieldDir = MinerWars.AppCode.Game.GUI.MyGuiScreenGamePlay.Static.GetDirectionToSunNormalized();\n                    }\n\n                    builder.Generated = true;\n                    addToList.Add(builder);\n\n                 \n                    //MyEntity ent = MyEntities.CreateFromObjectBuilderAndAdd(null, new MyMwcObjectBuilder_StaticAsteroid(asteroids[rndIndex], mat),\n                    //    Matrix.CreateWorld(e.PositionInSector, rnd.Vector(1), rnd.Vector(1)));\n                }\n                else if (e.EntityType == MySolarSystemEntityEnum.LargeShip)\n                {\n                    var shipType = rnd.Enum<MyMwcObjectBuilder_PrefabLargeShip_TypesEnum>();\n                    MyMwcObjectBuilder_Prefab_AppearanceEnum appearance = rnd.Enum<MyMwcObjectBuilder_Prefab_AppearanceEnum>();\n\n                    var ship = new MyMwcObjectBuilder_PrefabLargeShip(shipType, appearance, new MyMwcVector3Short(0, 0, 0), rnd.Vector(1), null, rnd.FloatNormal(), \"Abandoned large ship\", 0, false, 0);                    \n                    var gamePlayProperties = MyGameplayConstants.GetGameplayProperties(MyMwcObjectBuilderTypeEnum.PrefabLargeShip, (int)shipType, MyMwcObjectBuilder_FactionEnum.Euroamerican);\n                    ship.PrefabHealthRatio = MyGameplayConstants.HEALTH_RATIO_MAX;\n                    ship.PrefabMaxHealth = gamePlayProperties.MaxHealth;\n                    var prefabs = new List<MyMwcObjectBuilder_PrefabBase>();\n                    prefabs.Add(ship);\n                    var container = new MyMwcObjectBuilder_PrefabContainer(0, MyMwcObjectBuilder_PrefabContainer_TypesEnum.INSTANCE, prefabs, 0, rnd.Enum<MyMwcObjectBuilder_FactionEnum>(), null);\n                    container.PositionAndOrientation = new MyMwcPositionAndOrientation(e.PositionInSector, Vector3.Forward, Vector3.Up);\n                    addToList.Add(container);\n                }\n                else if (e.EntityType == MySolarSystemEntityEnum.DebrisField)\n                {\n                    MyMwcObjectBuilder_LargeDebrisField objectBuilder = new MyMwcObjectBuilder_LargeDebrisField(MyMwcObjectBuilder_LargeDebrisField_TypesEnum.Debris84);\n                    objectBuilder.PositionAndOrientation = new MyMwcPositionAndOrientation(e.PositionInSector, rnd.Vector(1), rnd.Vector(1));\n                    addToList.Add(objectBuilder);\n                }\n            }\n        }\n\n        public MySolarSystemMapSectorData GenerateSectorObjectBuilders(MyMwcVector3Int sector, MySolarSystemMapData solarData, List<MyMwcObjectBuilder_Base> addToList, bool onlyStaticAsteroids)\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"GenerateSectorEntities\");\n            var sectorData = GenerateSectorEntities(solarData, sector, 0, int.MaxValue, onlyStaticAsteroids);\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            MyDynamicAABBTree prunningStructure = new MyDynamicAABBTree(Vector3.Zero);\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Misc\");\n\n            MyWeightDictionary<MyMwcVoxelMaterialsEnum> primaryMaterials;\n            MyWeightDictionary<MyMwcVoxelMaterialsEnum> secondaryMaterials;\n\n            MyMwcObjectBuilder_Sector sectorBuilder = addToList.FirstOrDefault(s => s.GetObjectBuilderType() == MyMwcObjectBuilderTypeEnum.Sector) as MyMwcObjectBuilder_Sector;\n\n            if (sectorBuilder == null)\n            {\n                sectorBuilder = GetSectorBuilder(sectorData);\n                addToList.Add(sectorBuilder);\n            }\n            //if (sectorBuilder != null)\n            //{\n            //    Vector3 kms = MySolarSystemUtils.SectorsToKm(sectorData.SectorPosition);\n            //    sectorBuilder.SunDistance = kms.Length();\n            //}\n\n            MySector.Area = sectorData.Area;\n\n            MinerWars.AppCode.Game.SolarSystem.MySolarSystemArea.AreaEnum? areaType = null;\n            MyMwcVoxelMaterialsEnum? secondaryAsteroidMaterial = null;\n            if (sectorData.Area.HasValue && sectorBuilder != null)\n            {\n                var area = MySolarSystemConstants.Areas[sectorData.Area.Value];\n                areaType = area.AreaType;\n                secondaryAsteroidMaterial = area.SecondaryStaticAsteroidMaterial;\n                primaryMaterials = new MyWeightDictionary<MyMwcVoxelMaterialsEnum>(area.SectorData.PrimaryAsteroidMaterials);\n                secondaryMaterials = new MyWeightDictionary<MyMwcVoxelMaterialsEnum>(area.SectorData.SecondaryAsteroidMaterials);\n            }\n            else\n            {\n                primaryMaterials = new MyWeightDictionary<MyMwcVoxelMaterialsEnum>(MySolarSystemConstants.DefaultAsteroidMaterials);\n                secondaryMaterials = new MyWeightDictionary<MyMwcVoxelMaterialsEnum>(MySolarSystemConstants.DefaultSecondaryMaterials);\n            }\n\n            Random rnd = new Random(m_seed);\n\n            MyStaticAsteroidTypeSetEnum staticAsteroidsTypeset = MyStaticAsteroidTypeSetEnum.A | MyStaticAsteroidTypeSetEnum.B;\n\n            var realSizes = sectorData.Entities.GroupBy(s => s.Radius).Select(s => new { Key = s.Key, Count = s.Count() }).ToArray();\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"GenerateSectorObjectBuildersFromSolarEntities\");\n            GenerateSectorObjectBuildersFromSolarEntities(sectorData.Entities, addToList, rnd, primaryMaterials, secondaryMaterials, staticAsteroidsTypeset, secondaryAsteroidMaterial, areaType);\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            if (!onlyStaticAsteroids)\n            {\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"GenerateStations\");\n                GenerateStations(sector, solarData, sectorData, addToList, rnd, prunningStructure);\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"GenerateBots\");\n                GenerateBots(sectorData, addToList, rnd, prunningStructure);\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n            }\n\n            return sectorData;\n        }\n\n\n        static List<MyElement> m_elements = new List<MyElement>(256);\n\n        /// <summary>\n        /// \n        /// </summary>\n        /// <param name=\"existingEntities\"></param>\n        /// <param name=\"rnd\"></param>\n        /// <param name=\"radius\"></param>\n        /// <param name=\"positionMultiplier\">How far from offset shoud be position generated</param>\n        /// <param name=\"spacing\"></param>\n        /// <param name=\"offset\"></param>\n        /// <returns></returns>\n        private Vector3? FindEntityPosition(MyDynamicAABBTree existingEntities, Random rnd, float radius, float positionMultiplier = 0.8f, float spacing = 1.0f, Vector3 offset = new Vector3())\n        {\n            bool collide = true;\n            Vector3 pos = new Vector3();\n            int testCount = 0;\n\n            //collide = false;\n            Vector3 halfSize = MyMwcSectorConstants.SECTOR_SIZE / 2.0f * new Vector3(positionMultiplier);\n            halfSize -= new Vector3(radius);\n\n            while (collide && testCount < MaxCollisionsTestsForEntity)\n            {\n                pos = offset + rnd.Vector(halfSize);\n                testCount++;\n\n                collide = false;\n                // try detect collisions with safe areas\n              //  collide = IsEntityCollideWithSafeAreas(pos, radius);\n                //if (collide)\n                  //  continue;\n\n                /*\n                foreach (var e in existingEntities)\n                {\n                    if ((e.PositionInSector - pos).Length() < (e.Radius + radius) * spacing)\n                    {\n                        collide = true;\n                        break;\n                    }\n                } */\n\n                BoundingBox bb = new BoundingBox(pos - new Vector3(radius) * spacing, pos + new Vector3(radius) * spacing);\n                existingEntities.OverlapAllBoundingBox(ref bb, m_elements);\n                if (m_elements.Count > 0)\n                {\n                    collide = true;\n                    continue;\n                }\n            }\n            return !collide ? (Vector3?)pos : null;\n        }\n\n        public static MyMwcObjectBuilder_SectorObjectGroups LoadSectorGroups(MyMwcVector3Int sectorPosition)\n        {\n            var builder = new MyMwcObjectBuilder_SectorObjectGroups();\n            var sector = MinerWars.AppCode.Networking.MyLocalCache.LoadSector(new MyMwcSectorIdentifier(MyMwcSectorTypeEnum.STORY, null, sectorPosition, String.Empty));\n            builder.Groups = sector.ObjectGroups;\n            builder.Entities = sector.SectorObjects;\n            return builder;\n        }\n\n        private MyMwcObjectBuilder_SectorObjectGroups LoadObjectGroups(MyMwcVector3Int sectorPosition)\n        {\n            try\n            {\n                return LoadSectorGroups(sectorPosition);               \n            }\n            catch (Exception e)\n            {\n                MyMwcLog.WriteLine(\"Cannot LoadObjectGroups, sector generator won't insert stations into scene\");\n                MyMwcLog.WriteLine(e);\n                MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.PleaseTryAgain, MyTextsWrapperEnum.MessageBoxNetworkErrorCaption, MyTextsWrapperEnum.Ok, null));\n                MyGuiManager.BackToMainMenu();\n                return null;\n            }\n        }\n\n        private void GenerateStations(MyMwcVector3Int sector, MySolarSystemMapData solarData, MySolarSystemMapSectorData sectorData, List<MyMwcObjectBuilder_Base> addToList, Random rnd, MyDynamicAABBTree prunningStructure)\n        {\n            Dictionary<MyMwcVector3Int, MyMwcObjectBuilder_SectorObjectGroups> groupCache = new Dictionary<MyMwcVector3Int, MyMwcObjectBuilder_SectorObjectGroups>();\n\n            //List<MyImportantSolarObject>\n            var objects = solarData.ImportantObjects.Where(o => o.NavigationMark.Sector.Equals(sector));\n\n            foreach(var obj in objects)\n            {\n                var size = MyPrefabContainerConstants.MAX_DISTANCE_FROM_CONTAINER_CENTER / 1000;\n                Vector3? pos = FindEntityPosition(prunningStructure, rnd, size);\n                if (pos.HasValue)\n                {\n                    var templateSector = MyTemplateGroups.GetGroupSector(obj.TemplateGroup);\n                    MyMwcObjectBuilder_SectorObjectGroups groups;\n                    if (!groupCache.TryGetValue(templateSector, out groups))\n                    {\n                        groups = LoadObjectGroups(templateSector);\n                        if (groups == null)\n                        {\n                            return;\n                        }\n                        groupCache.Add(templateSector, groups);\n                    }\n\n                    sectorData.Entities.Add(new MySolarSystemMapEntity(sector, pos.Value, size, \"\", MySolarSystemEntityEnum.OutpostIcon));\n\n                    var group = rnd.Item(groups.Groups);\n                    IEnumerable<MyMwcObjectBuilder_PrefabBase> prefabs = group.GetPrefabBuilders(groups.Entities);\n                    IEnumerable<MyMwcObjectBuilder_Base> rootObjects = group.GetRootBuilders(groups.Entities);\n                    var objects3d = rootObjects.OfType<MyMwcObjectBuilder_Object3dBase>();\n\n                    var faction = MyFactions.GetFactionBySector(sector);\n\n                    var objectPos = pos.Value;\n                    if (objects3d.Any())\n                    {\n                        var firstPos = objects3d.First().PositionAndOrientation.Position;\n                        var offset = objectPos - firstPos;\n\n                        foreach (var o in objects3d)\n                        {\n                            // Clone\n                            var clone = o.Clone() as MyMwcObjectBuilder_Object3dBase;\n                            clone.PositionAndOrientation.Position += offset;\n                            clone.ClearEntityId();\n                            if (clone is MyMwcObjectBuilder_PrefabContainer)\n                            {\n                                ((MyMwcObjectBuilder_PrefabContainer)clone).Faction = faction;\n                            }\n                            if (clone is MyMwcObjectBuilder_SpawnPoint)\n                            {\n                                ((MyMwcObjectBuilder_SpawnPoint)clone).Faction = faction;\n                            }\n                            addToList.Add(clone);\n                        }\n                    }\n                    else if(prefabs.Any())\n                    {\n                        MyMwcObjectBuilder_PrefabContainer container = new MyMwcObjectBuilder_PrefabContainer(null, MyMwcObjectBuilder_PrefabContainer_TypesEnum.INSTANCE,\n                            prefabs.ToList(), 0, faction, null);\n\n                        var clone = container.Clone() as MyMwcObjectBuilder_PrefabContainer; // To clone children easily\n                        clone.ClearEntityId(); // Clear childs ids\n                        clone.PositionAndOrientation = new MyMwcPositionAndOrientation(objectPos, Vector3.Forward, Vector3.Up);\n                        addToList.Add(clone);\n                    }\n                } //end of station generation\n\n                if (pos.HasValue && rnd.Float(0, 1) < 0.5f)\n                { //Create mysterious cube at 1% of stations\n                    var sizeMyst = size * 1.5f;\n                    Vector3? posMyst = FindEntityPosition(prunningStructure, rnd, sizeMyst, 1.0f, 1.0f, pos.Value);\n                    if (posMyst.HasValue)\n                    {\n                        CreateMysteriousCubes(posMyst.Value, addToList, rnd);\n                    }\n\n                    //Create some more\n                    int count = rnd.Next(5);\n                    for (int i = 0; i < count; i++)\n                    {\n                        var size2 = MyMwcSectorConstants.SECTOR_SIZE / 2;\n                        Vector3? pos2 = FindEntityPosition(prunningStructure, rnd, size2);\n                        if (pos2.HasValue)\n                        {\n                            CreateMysteriousCubes(pos2.Value, addToList, rnd);\n                        }\n                    }\n                }\n            }\n        }\n\n\n        private void CreateMysteriousCubes(Vector3 posMyst, List<MyMwcObjectBuilder_Base> addToList, Random rnd)\n        {\n            int maxCubesInGroup = rnd.Next(5);\n            float offset = 0;\n\n            while (maxCubesInGroup > 0)\n            {\n                maxCubesInGroup--;\n\n                CreateMysteriousCube(posMyst + Vector3.Right * offset, addToList, rnd);\n\n                offset += 5;\n            }\n        }\n\n        private void CreateMysteriousCube(Vector3 posMyst, List<MyMwcObjectBuilder_Base> addToList, Random rnd)\n        {\n            MyMwcObjectBuilder_MysteriousCube mysteriousCube = new MyMwcObjectBuilder_MysteriousCube(\n            new MyMwcPositionAndOrientation(posMyst, Vector3.Forward, Vector3.Up)\n            );\n\n            MyMwcObjectBuilder_MysteriousCube_TypesEnum cubeType = (MyMwcObjectBuilder_MysteriousCube_TypesEnum)rnd.Item(Enum.GetValues(typeof(MyMwcObjectBuilder_MysteriousCube_TypesEnum)));\n            mysteriousCube.MysteriousCubeType = cubeType;\n            addToList.Add(mysteriousCube);\n        }\n\n\n        private void GenerateBots(MySolarSystemMapSectorData sectorData, List<MyMwcObjectBuilder_Base> addToList, Random rnd, MyDynamicAABBTree prunningStructure)\n        {\n            int spawnPt = (int)(rnd.Float(0, 50) /** sectorData.AreaInfluenceMultiplier*/  );\n            float radius = 100;\n            for (int i = 0; i < spawnPt; i++)\n            {\n                Vector3? pos = FindEntityPosition(prunningStructure, rnd, radius, 0.8f, 0.8f);\n\n                if (pos.HasValue)\n                {\n                    //MyMwcObjectBuilder_FactionEnum faction = MyMwcObjectBuilder_FactionEnum.None;\n                    var faction = MyFactions.GetFactionBySector(sectorData.SectorPosition);\n\n                    //var builder = new MyMwcObjectBuilder_;\n                    MyMwcObjectBuilder_SpawnPoint spobj = MyMwcObjectBuilder_Base.CreateNewObject(MyMwcObjectBuilderTypeEnum.SpawnPoint, null) as MyMwcObjectBuilder_SpawnPoint;\n                    spobj.BoundingRadius = radius;\n                    spobj.RespawnTimer = 1;\n                    spobj.SpawnCount = 5;\n                    spobj.PositionAndOrientation.Position = pos.Value;\n                    spobj.PositionAndOrientation.Forward = Vector3.Forward;\n                    spobj.PositionAndOrientation.Up = Vector3.Up;\n                    spobj.Faction = faction;\n\n                    List<MyMwcObjectBuilder_SmallShip_Weapon> weapons = new List<MyMwcObjectBuilder_SmallShip_Weapon>();\n                    List<MyMwcObjectBuilder_SmallShip_Ammo> ammo = new List<MyMwcObjectBuilder_SmallShip_Ammo>();\n                    List<MyMwcObjectBuilder_AssignmentOfAmmo> assignments = new List<MyMwcObjectBuilder_AssignmentOfAmmo>();\n\n                    weapons.Add(new MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Autocanon));\n                    weapons.Add(new MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Autocanon));\n                    weapons.Add(new MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Cannon));\n                    weapons.Add(new MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Cannon));\n                    weapons.Add(new MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Shotgun));\n                    weapons.Add(new MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Crusher));\n                    weapons.Add(new MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Universal_Launcher_Front));\n                    assignments.Add(new MyMwcObjectBuilder_AssignmentOfAmmo(MyMwcObjectBuilder_FireKeyEnum.Primary, MyMwcObjectBuilder_AmmoGroupEnum.Bullet, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_Basic));\n                    assignments.Add(new MyMwcObjectBuilder_AssignmentOfAmmo(MyMwcObjectBuilder_FireKeyEnum.Secondary, MyMwcObjectBuilder_AmmoGroupEnum.Cannon, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_Basic));\n\n                    List<MyMwcObjectBuilder_InventoryItem> inventoryItems = new List<MyMwcObjectBuilder_InventoryItem>();\n                    inventoryItems.Add(new MyMwcObjectBuilder_InventoryItem(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_Basic), 1000f));\n                    inventoryItems.Add(new MyMwcObjectBuilder_InventoryItem(new MyMwcObjectBuilder_SmallShip_Ammo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_Basic), 25));                \n\n                    //spobj.m_shipTemplates.Add(\n                    int numships = rnd.Next(1, 10);\n                    for (int x = 0; x < numships; x++)\n                    {\n                        spobj.ShipTemplates.Add(\n                            //new MyMwcObjectBuilder_SmallShip_Bot(\n                            //    MyMwcObjectBuilder_SmallShip_TypesEnum.LIBERATOR,\n                            //    weapons,\n                            //    new MyMwcObjectBuilder_SmallShip_Engine(MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.Chemical_1),\n                            //    ammo,\n                            //    assignments,\n                            //    null,\n                            //    faction\n                            //    ) as MyMwcObjectBuilder_SmallShip_Bot\n                            new MyMwcObjectBuilder_SmallShip_Bot(\n                                MyMwcObjectBuilder_SmallShip_TypesEnum.LIBERATOR,\n                                new MyMwcObjectBuilder_Inventory(inventoryItems, 32),\n                                weapons,\n                                new MyMwcObjectBuilder_SmallShip_Engine(MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.Chemical_1),\n                                assignments,\n                                null,\n                                null,\n                                null,\n                                MyGameplayConstants.HEALTH_RATIO_MAX,\n                                100f,\n                                float.MaxValue,\n                                float.MaxValue,\n                                true,\n                                false,\n                                faction,\n                                MyAITemplateEnum.DEFAULT,\n                                0,\n                                1000,\n                                1000,\n                                MyPatrolMode.CYCLE,\n                                null,\n                                BotBehaviorType.IDLE,\n                                MyLightsConstants.MAX_SPOTLIGHT_SHADOW_RANGE,\n                                0, false, true) as MyMwcObjectBuilder_SmallShip_Bot\n                            );\n                    }\n\n                    addToList.Add(spobj);\n\n                    /*\n                    MySolarSystemMapEntity entity = new MySolarSystemMapEntity(sectorData.SectorPosition, pos, size, \"Asteroid\", MySolarSystemEntityEnum.Asteroid);\n                    sectorData.Entities.Add(entity);\n                    */\n                }\n            }\n        }\n\n        public static MyMwcObjectBuilder_Sector GetSectorBuilder(MySolarSystemMapSectorData sectorData)\n        {\n            MyMwcObjectBuilder_Sector sectorBuilder;\n            sectorBuilder = MyMwcObjectBuilder_Base.CreateNewObject(MyMwcObjectBuilderTypeEnum.Sector, null) as MyMwcObjectBuilder_Sector;\n            sectorBuilder.AreaTemplate = sectorData.Area;\n            sectorBuilder.AreaMultiplier = sectorData.AreaInfluenceMultiplier;\n            return sectorBuilder;\n        }\n\n        private bool IsEntityCollideWithSafeAreas(Vector3 entityPosition, float radius)\n        {\n            foreach (BoundingSphere boundingSphere in m_safeAreas)\n            {\n                if ((boundingSphere.Center - entityPosition).Length() <= boundingSphere.Radius + radius)\n                {\n                    return true;\n                }\n            }\n            return false;\n        }\n\n        private void AddSpawnPoint(MySolarSystemMapSectorData sectorData, float entityMinimalSize)\n        {\n            Random random = new Random(sectorData.SectorPosition.X ^ sectorData.SectorPosition.Y ^ sectorData.SectorPosition.Z ^ m_seed);\n        }\n\n        private MySectorObjectCounts ApplyAreaInfluence(MySectorObjectCounts objectCounts, float areaInfluence)\n        {\n            MySectorObjectCounts result = new MySectorObjectCounts();\n            foreach (var item in objectCounts.Values)\n            {\n                result.Values[item.Key] = item.Value * areaInfluence;\n            }\n            return result;\n        }\n\n        private void EnsureMinimalAsteroidCounts(MySectorObjectCounts asteroidCounts)\n        {\n            foreach (var pair in MySolarSystemConstants.MinimumObjectsProperties.Values)\n            {\n                float value;\n                if (!asteroidCounts.Values.TryGetValue(pair.Key, out value) || value < pair.Value)\n                {\n                    asteroidCounts.Values[pair.Key] = pair.Value;\n                }\n            }\n        }\n\n        private static int GetSeed(MyMwcVector3Int sectorPosition, int globalSeed)\n        {\n            return sectorPosition.X ^ sectorPosition.Y ^ sectorPosition.Z ^ globalSeed;\n        }\n\n        public static bool IsOutsideSector(Vector3 position, float radius)\n        {\n            BoundingSphere bs = new BoundingSphere(position, radius);\n            if (MyMwcSectorConstants.SECTOR_SIZE_BOUNDING_BOX.Contains(bs) == ContainmentType.Disjoint)\n            {\n                return true;\n            }\n\n            return false;\n        }\n\n        private void AddSectorEntities(MySectorObjectCounts asteroidCounts, MyMwcVector3Int sectorPosition, Random random, float entityMinimalSize, int maxEntityCount,  List<MySolarSystemMapEntity> entities, bool onlyStaticAsteroids)\n        {\n                      \n            // Space around asteroid should be at least 1.2x - 2x it's size\n            float asteroidSpacingCoeficient = 0.7f;\n\n            // Asteroid count mean is 40%\n            float asteroidCountMean = 0.4f;\n\n            Dictionary<int, int> entityCounts = new Dictionary<int, int>();\n            foreach (MySolarSystemEntityEnum t in Enum.GetValues(typeof(MySolarSystemEntityEnum)))\n            {\n                entityCounts.Add((int)t, 0);\n            }\n\n            MyDynamicAABBTree prunningStructure = new MyDynamicAABBTree(Vector3.Zero);\n\n            foreach (BoundingSphere boundingSphere in m_safeAreas)\n            {\n                BoundingBox bb = BoundingBox.CreateFromSphere(boundingSphere);\n                prunningStructure.AddProxy(ref bb, new Render.MyRenderObject(null, null), 0);\n            }\n\n\n            // Generate asteroids, check collisions (order asteroids by size)\n            //var asteroids = GetAsteroids(asteroidCounts, entityMinimalSize);\n            var asteroids = GetAsteroids(asteroidCounts, entityMinimalSize);\n\n            foreach (var info in asteroids)\n            {\n                if (info.EntityType != MySolarSystemEntityEnum.StaticAsteroid && onlyStaticAsteroids)\n                    continue;\n\n                float radius = info.SizeInMeters / 2;\n                float count = info.ObjectCount;\n                float positionOffset = 1.3f;\n                count = (float)Math.Round(count * random.Float(1 - asteroidCountMean, 1 + asteroidCountMean));\n\n                if (info.EntityType == MySolarSystemEntityEnum.VoxelAsteroid)\n                {\n                    positionOffset = 0.6f; //generate voxels more in center\n                }\n\n                while (entityCounts[(int)info.EntityType] < count && entityCounts[(int)info.EntityType] < maxEntityCount)\n                {\n                    Vector3? pos = FindEntityPosition(prunningStructure, random, radius, positionOffset, asteroidSpacingCoeficient);\n\n                    if (pos.HasValue)\n                    {\n                        MySolarSystemMapEntity entity = new MySolarSystemMapEntity(sectorPosition, pos.Value, info.SizeInMeters, info.EntityType.ToString(), info.EntityType);\n                        entities.Add(entity);\n\n                        if (!MySectorGenerator.IsOutsideSector(pos.Value, radius))\n                        {\n                            entityCounts[(int)info.EntityType]++;\n                        }\n                        \n                        BoundingBox bb = new BoundingBox(pos.Value - new Vector3(radius), pos.Value + new Vector3(radius));\n                        prunningStructure.AddProxy(ref bb, new Render.MyRenderObject(null, null), 0);\n                    }\n                    else\n                        entityCounts[(int)info.EntityType]++;\n                }\n            }\n        }\n\n        private static IEnumerable<MyObjectInfo> GetAsteroids(MySectorObjectCounts asteroidCounts, float entityMinimalSize)\n        {\n            var asteroids = asteroidCounts.AllObjects.Where(s => s.SizeInMeters > entityMinimalSize);\n            return asteroids;\n        }\n\n        private void AddSectorEntities(MySolarSystemMapSectorData sectorData, float entityMinimalSize, int maxEntityCount, bool onlyStaticAsteroids)\n        {\n            Random random = new Random(GetSeed(sectorData.SectorPosition, m_seed));\n\n            MySectorObjectCounts asteroidCounts;\n            if (sectorData.Area.HasValue)\n            {\n                var area = MySolarSystemConstants.Areas[sectorData.Area.Value];\n\n                asteroidCounts = ApplyAreaInfluence(area.SectorData.SectorObjectsCounts, sectorData.AreaInfluenceMultiplier);\n            }\n            else\n            {\n                asteroidCounts = MySolarSystemConstants.DefaultObjectsProperties;\n            }\n\n            EnsureMinimalAsteroidCounts(asteroidCounts);\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"AddSectorEntities\");\n            AddSectorEntities(asteroidCounts, sectorData.SectorPosition, random,  entityMinimalSize, maxEntityCount, sectorData.Entities, onlyStaticAsteroids);\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        public static MyMwcObjectBuilder_StaticAsteroid GenerateStaticAsteroid(float sizeInMeters, MyStaticAsteroidTypeSetEnum typeSet, MyMwcVoxelMaterialsEnum material, Vector3 position, Random rnd, List<MyMwcObjectBuilder_StaticAsteroid_TypesEnum> asteroids)\n        {\n            int size = FindAsteroidSize(sizeInMeters, MyMwcObjectBuilder_StaticAsteroid.AsteroidSizes);\n            asteroids.Clear();\n            MyMwcObjectBuilder_StaticAsteroid.GetAsteroids(size, typeSet, asteroids);\n            int rndIndex = rnd.Next(0, asteroids.Count);\n            \n            var builder = new MyMwcObjectBuilder_StaticAsteroid(asteroids[rndIndex], material);\n            builder.PositionAndOrientation.Position = position;\n            builder.PositionAndOrientation.Forward = rnd.Vector(1);\n            builder.PositionAndOrientation.Up = rnd.Vector(1);\n            builder.IsDestructible = false;\n\n            return builder;\n        }\n\n        private static MyMwcObjectBuilder_StaticAsteroid CloneStaticAsteroid(MyMwcObjectBuilder_StaticAsteroid source)\n        {\n            MyMwcObjectBuilder_StaticAsteroid clone = new MyMwcObjectBuilder_StaticAsteroid(source.AsteroidType, source.AsteroidMaterial, source.AsteroidMaterial1);\n            clone.PositionAndOrientation = source.PositionAndOrientation;\n\n            return clone;\n        }\n\n        private MyMwcObjectBuilder_VoxelMap GenerateVoxelMap(int sizeInVoxels, Vector3 positionInSector, Random rnd, List<MyMwcVoxelFilesEnum> voxelAsteroids, MyWeightDictionary<MyMwcVoxelMaterialsEnum> primaryMaterials, MyWeightDictionary<MyMwcVoxelMaterialsEnum> secondaryMaterials)\n        {\n            int sizeInMeters = sizeInVoxels;// (int)(sizeInVoxels * MyVoxelConstants.VOXEL_SIZE_IN_METRES);\n            voxelAsteroids.Clear();\n            MyVoxelMap.GetAsteroidsBySizeInMeters(sizeInMeters, voxelAsteroids, false);\n            int rndIndex = rnd.Next(0, voxelAsteroids.Count);\n\n            MyMwcVoxelMaterialsEnum mainMat = MyMwcVoxelMaterialsEnum.Stone_01;\n            if (primaryMaterials.Count > 0)\n            {\n                primaryMaterials.GetRandomItem(rnd);\n            }\n\n            MyMwcObjectBuilder_VoxelMap builder = MyMwcObjectBuilder_Base.CreateNewObject(MyMwcObjectBuilderTypeEnum.VoxelMap, null) as MyMwcObjectBuilder_VoxelMap;\n            builder.VoxelFile = rnd.Item(voxelAsteroids);\n            builder.VoxelMaterial = mainMat;\n            builder.PositionAndOrientation = new MyMwcPositionAndOrientation(positionInSector, Vector3.Forward, Vector3.Up);\n\n            AddMergeContent(rnd, voxelAsteroids, sizeInMeters, builder);\n            AddVeins(secondaryMaterials, rnd, positionInSector, 2, sizeInMeters, builder, VeinAngleDeviation, MaxLevel, BaseSecondaryMaterialThickness);\n\n            return builder;\n        }\n\n        public static int FindAsteroidSize(float radius, List<int> sizes)\n        {\n            for (int i = 0; i < sizes.Count; i++)\n            {\n                if (radius < sizes[i])\n                {\n                    int prev = i - 1;\n                    if (prev >= 0)\n                    {\n                        if (sizes[i] - radius > radius - sizes[prev])\n                        {\n                            return sizes[prev];\n                        }\n                        else\n                        {\n                            return sizes[i];\n                        }\n                    }\n                    else\n                    {\n                        return sizes[i];\n                    }\n                }\n            }\n            return sizes[sizes.Count - 1];\n        }\n\n        public static void AddMergeContent(Random rnd, List<MyMwcVoxelFilesEnum> voxelAsteroids, int voxelAsteroidSize, MyMwcObjectBuilder_VoxelMap builder)\n        {\n            if (voxelAsteroidSize > (int)(64 * MyVoxelConstants.VOXEL_SIZE_IN_METRES))\n            {\n                int mergeSize = voxelAsteroidSize / 2;\n                int numMerges = rnd.Next(0, 3);\n                //numMerges = 1;\n                for (int i = 0; i < numMerges; i++)\n                {\n                    voxelAsteroids.Clear();\n\n                    MyMwcVoxelMapMergeTypeEnum mergeType;\n                    int maxPos = (int)(mergeSize / MyVoxelConstants.VOXEL_SIZE_IN_METRES) / 2;\n                    int mergeTypeIndex = rnd.Next(0, 2);\n                    //mergeTypeIndex = 0;\n                    if (mergeTypeIndex == 0)\n                    {\n                        mergeType = MyMwcVoxelMapMergeTypeEnum.ADD;\n                        MyVoxelMap.GetAsteroidsBySizeInMeters(mergeSize, voxelAsteroids, true);\n                        maxPos /= 2;\n                    }\n                    else\n                    {\n                        // Subtract merge works with bigger asteroids\n                        mergeType = MyMwcVoxelMapMergeTypeEnum.INVERSE_AND_SUBTRACT;\n                        MyVoxelMap.GetAsteroidsBySizeInMeters(mergeSize, voxelAsteroids, false);\n                        MyVoxelMap.GetAsteroidsBySizeInMeters(mergeSize * 2, voxelAsteroids, false);\n                    }\n\n                    int mergeIndex = rnd.Next(0, voxelAsteroids.Count);\n\n                    MyMwcVector3Short offset = new MyMwcVector3Short((short)rnd.Next(0, maxPos), (short)rnd.Next(0, maxPos), (short)rnd.Next(0, maxPos));\n\n                    builder.MergeContents.Add(new MyMwcObjectBuilder_VoxelMap_MergeContent(offset, voxelAsteroids[mergeIndex], mergeType));\n                }\n            }\n        }\n\n        public static void AddVeins(MyWeightDictionary<MyMwcVoxelMaterialsEnum> secondaryMaterials, Random rnd, Vector3 positionInSector, int veinCount, int voxelAsteroidSize, MyMwcObjectBuilder_VoxelMap builder, float veinAngleDev, int maxLevel, float baseThickness)\n        {\n            MyMwcVoxelMaterialsEnum material = MyMwcVoxelMaterialsEnum.Magnesium_01;\n\n            if (secondaryMaterials.Count > 0)\n            {\n                material = secondaryMaterials.GetRandomItem(rnd);\n            }\n\n            for (int i = 0; i < veinCount; i++)\n            {\n                Vector3 position = positionInSector + new Vector3(voxelAsteroidSize / 2);\n                position += rnd.Vector(voxelAsteroidSize / 3);\n                AddVein(builder, baseThickness, position, rnd, material, veinAngleDev, maxLevel);\n            }\n        }\n\n        public static void AddVein(MyMwcObjectBuilder_VoxelMap builder, float thickness, Vector3 position, Random rnd, MyMwcVoxelMaterialsEnum material, float veinAngleDev, int maxLevel, int level = 0)\n        {\n            int numSplits = 2;// rnd.Next(2, 4);\n\n            List<Vector3> targets = new List<Vector3>(numSplits);\n\n            float handDist = thickness * 1.5f;\n\n            for (int iSplit = 0; iSplit < numSplits; iSplit++)\n            {\n                // Hands per line\n                int numHands = rnd.Next(8, 12);\n\n                Vector3 direction = rnd.Direction();\n                Vector3 target = position;\n                for (int i = 0; i < numHands; i++)\n                {\n                    direction = rnd.Direction(direction, veinAngleDev);\n                    target += direction * handDist;\n\n                    // TODO: uncomment this to see material better (shown as tunnels, not only as voxel material)\n                    //var voxelHand = new MyMwcObjectBuilder_VoxelHand_Sphere(target, thickness - 1, MyMwcVoxelHandModeTypeEnum.SUBTRACT);\n                    //voxelHand.VoxelHandMaterial = material;\n                    //builder.VoxelHandShapes.Add(voxelHand);\n\n                    var voxelHand2 = new MyMwcObjectBuilder_VoxelHand_Sphere(new MyMwcPositionAndOrientation(target, Vector3.Forward, Vector3.Up), thickness, MyMwcVoxelHandModeTypeEnum.SET_MATERIAL);\n                    voxelHand2.VoxelHandMaterial = material;\n                    builder.VoxelHandShapes.Add(voxelHand2);\n                }\n                targets.Add(target);\n            }\n\n            if (level < maxLevel)\n            {\n                foreach (var t in targets)\n                {\n                    AddVein(builder, thickness * 0.7f, t, rnd, material, veinAngleDev, maxLevel, level + 1);\n                }\n            }\n        }\n\n\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/SolarSystem/MySectorProperties.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.CommonLIB.AppCode.Networking;\n\nnamespace MinerWars.AppCode.Game.SolarSystem\n{\n    class MySunProperties\n    {\n        // Sun & ambient\n        public float SunIntensity;\n        public Vector3 SunDiffuse;\n        public Vector3 SunSpecular;\n\n        public float BackSunIntensity;\n        public Vector3 BackSunDiffuse;\n\n        public Vector3 AmbientColor;\n        public float AmbientMultiplier;\n        public float EnvironmentAmbientIntensity;\n        public float SunSizeMultiplier = 1;\n\n        public Vector3 BackgroundColor = Vector3.One;\n        public float SunRadiationDamagePerSecond = 0;\n\n\n        /// <param name=\"interpolator\">0 - use this object, 1 - use other object</param>\n        public MySunProperties InterpolateWith(MySunProperties otherProperties, float interpolator)\n        {\n            var result = new MySunProperties();\n\n            result.SunDiffuse = Vector3.Lerp(SunDiffuse, otherProperties.SunDiffuse, interpolator);\n            result.SunIntensity = MathHelper.Lerp(SunIntensity, otherProperties.SunIntensity, interpolator);\n            result.SunSpecular = Vector3.Lerp(SunSpecular, otherProperties.SunSpecular, interpolator);\n\n            result.BackSunIntensity = MathHelper.Lerp(BackSunIntensity, otherProperties.BackSunIntensity, interpolator);\n            result.BackSunDiffuse = Vector3.Lerp(BackSunDiffuse, otherProperties.BackSunDiffuse, interpolator);\n\n            result.AmbientColor = Vector3.Lerp(AmbientColor, otherProperties.AmbientColor, interpolator);\n            result.AmbientMultiplier = MathHelper.Lerp(AmbientMultiplier, otherProperties.AmbientMultiplier, interpolator);\n            result.EnvironmentAmbientIntensity = MathHelper.Lerp(EnvironmentAmbientIntensity, otherProperties.EnvironmentAmbientIntensity, interpolator);\n            result.SunSizeMultiplier = MathHelper.Lerp(SunSizeMultiplier, otherProperties.SunSizeMultiplier, interpolator);\n\n            result.BackgroundColor = Vector3.Lerp(BackgroundColor, otherProperties.BackgroundColor, interpolator);\n            result.SunRadiationDamagePerSecond = MathHelper.Lerp(SunRadiationDamagePerSecond, otherProperties.SunRadiationDamagePerSecond, interpolator);\n \n            return result;\n        }\n    }\n\n    class MyFogProperties\n    {\n        // Fog\n        public float FogNear;\n        public float FogFar;\n        public float FogMultiplier;\n        public float FogBacklightMultiplier;\n        public Vector3 FogColor;\n\n        /// <param name=\"interpolator\">0 - use this object, 1 - use other object</param>\n        public MyFogProperties InterpolateWith(MyFogProperties otherProperties, float interpolator)\n        {\n            var result = new MyFogProperties();\n            result.FogNear = MathHelper.Lerp(FogNear, otherProperties.FogNear, interpolator);\n            result.FogFar = MathHelper.Lerp(FogFar, otherProperties.FogFar, interpolator);\n            result.FogMultiplier = MathHelper.Lerp(FogMultiplier, otherProperties.FogMultiplier, interpolator);\n            result.FogBacklightMultiplier = MathHelper.Lerp(FogBacklightMultiplier, otherProperties.FogBacklightMultiplier, interpolator);\n            result.FogColor = Vector3.Lerp(FogColor, otherProperties.FogColor, interpolator);\n            return result;\n        }\n    }\n\n    class MyImpostorProperties\n    {\n        public bool Enabled = true;\n        public MinerWars.AppCode.Game.BackgroundCube.MyVoxelMapImpostors.MyImpostorType ImpostorType;\n        public MyTransparentMaterialEnum? Material;\n        public int ImpostorsCount;\n        public float MinDistance;\n        public float MaxDistance;\n        public float MinRadius;\n        public float MaxRadius;\n        public Vector4 AnimationSpeed;\n        public Vector3 Color;\n        public float Intensity;\n        public float Contrast;\n\n        // Gets or sets both MinRadius and MaxRadius\n        // Always returns MaxRadius\n        public float Radius\n        {\n            get\n            {\n                return MaxRadius;\n            }\n            set\n            {\n                MinRadius = value;\n                MaxRadius = value;\n            }\n        }\n\n        public float Anim1 { get { return AnimationSpeed.X; } set { AnimationSpeed.X = value; } }\n        public float Anim2 { get { return AnimationSpeed.Y; } set { AnimationSpeed.Y = value; } }\n        public float Anim3 { get { return AnimationSpeed.Z; } set { AnimationSpeed.Z = value; } }\n        public float Anim4 { get { return AnimationSpeed.W; } set { AnimationSpeed.W = value; } }\n    }\n\n    class MyDebrisProperties\n    {\n        // Debris\n        public bool Enabled = true;\n        public float DistanceBetween = 1;\n        public float CountInDirectionHalf = 0;\n        public float MaxDistance = 1;\n        public float FullScaleDistance = 1;\n        public Array DebrisEnumValues = new MyMwcObjectBuilder_SmallDebris_TypesEnum[]\n            {\n                MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris1,\n                MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris2,\n                MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris3,\n                MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris4,\n                MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris5,\n                MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris6,\n                MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris7,\n                MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris8,\n                MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris9,\n                MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris10,\n                MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris11,\n                MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris12,\n                MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris13,\n                MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris14,\n                MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris15,\n                MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris16,\n                MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris17,\n                MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris18,\n                MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris19,\n                MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris20,\n                MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris21,\n                MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris22,\n                MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris23,\n                MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris24,\n                MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris25,\n                MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris26,\n                MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris27,\n                MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris28,\n                MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris29,\n                MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris30,\n                MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris31,\n            };\n\n        public Array DebrisVoxelMaterials = new MyMwcVoxelMaterialsEnum[] { MyMwcVoxelMaterialsEnum.Indestructible_01 };\n\n        /// <param name=\"interpolator\">0 - use this object, 1 - use other object</param>\n        public MyDebrisProperties InterpolateWith(MyDebrisProperties otherProperties, float interpolator)\n        {\n            var result = new MyDebrisProperties();\n            result.DistanceBetween = MathHelper.Lerp(DistanceBetween, otherProperties.DistanceBetween, interpolator);\n            result.CountInDirectionHalf = MathHelper.Lerp(CountInDirectionHalf, otherProperties.CountInDirectionHalf, interpolator);\n            result.MaxDistance = MathHelper.Lerp(MaxDistance, otherProperties.MaxDistance, interpolator);\n            result.FullScaleDistance = MathHelper.Lerp(FullScaleDistance, otherProperties.FullScaleDistance, interpolator);\n            result.DebrisEnumValues = DebrisEnumValues;\n            result.DebrisVoxelMaterials = DebrisVoxelMaterials;\n            return result;\n        }\n    }\n\n    class MyParticleDustProperties\n    {\n        public bool Enabled = false;\n        public float DustBillboardRadius = 3;\n        public float DustFieldCountInDirectionHalf = 5;\n        public float DistanceBetween = 180;\n        public float AnimSpeed = 0.004f;\n        public Color Color = Color.White;\n        public MyTransparentMaterialEnum Texture = MyTransparentMaterialEnum.Dust;\n\n        /// <param name=\"interpolator\">0 - use this object, 1 - use other object</param>\n        public MyParticleDustProperties InterpolateWith(MyParticleDustProperties otherProperties, float interpolator)\n        {\n            var result = new MyParticleDustProperties();\n            result.DustFieldCountInDirectionHalf = MathHelper.Lerp(DustFieldCountInDirectionHalf, otherProperties.DustFieldCountInDirectionHalf, interpolator);\n            result.DistanceBetween = MathHelper.Lerp(DistanceBetween, otherProperties.DistanceBetween, interpolator);\n            result.AnimSpeed = MathHelper.Lerp(AnimSpeed, otherProperties.AnimSpeed, interpolator);\n            result.Color = Color.Lerp(Color, otherProperties.Color, interpolator);\n            result.Enabled = MathHelper.Lerp(Enabled ? 1 : 0, otherProperties.Enabled ? 1 : 0, interpolator) > 0.5f;\n            result.DustBillboardRadius = interpolator <= 0.5f ? DustBillboardRadius : otherProperties.DustBillboardRadius;\n            result.Texture = interpolator <= 0.5f ? Texture : otherProperties.Texture;\n            return result;\n        }\n    }\n\n    class MyGodRaysProperties\n    {\n        public bool Enabled = false;\n        public float Density = 0.34f;\n        public float Weight = 1.27f;\n        public float Decay = 0.97f;\n        public float Exposition = 0.077f;\n\n        /// <param name=\"interpolator\">0 - use this object, 1 - use other object</param>\n        public MyGodRaysProperties InterpolateWith(MyGodRaysProperties otherProperties, float interpolator)\n        {\n            var result = new MyGodRaysProperties();\n            result.Density = MathHelper.Lerp(Density, otherProperties.Density, interpolator);\n            result.Weight = MathHelper.Lerp(Weight, otherProperties.Weight, interpolator);\n            result.Decay = MathHelper.Lerp(Decay, otherProperties.Decay, interpolator);\n            result.Exposition = MathHelper.Lerp(Exposition, otherProperties.Exposition, interpolator);\n            result.Enabled = MathHelper.Lerp(Enabled ? 1 : 0, otherProperties.Enabled ? 1 : 0, interpolator) > 0.5f;\n            return result;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/SolarSystem/MySolarSystemArea.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWarsMath;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\n\nnamespace MinerWars.AppCode.Game.SolarSystem\n{\n    class MySolarSectorData\n    {\n        public MySunProperties SunProperties = MySolarSystemConstants.DefaultSunProperties;\n        public MyFogProperties FogProperties = MySolarSystemConstants.DefaultFogProperties;\n        public MyDebrisProperties DebrisProperties = MySolarSystemConstants.DefaultDebrisProperties;\n        public MyParticleDustProperties ParticleDustProperties = MySolarSystemConstants.DefaultParticleDustProperties;\n        public MyGodRaysProperties GodRaysProperties = MySolarSystemConstants.DefaultGodRaysProperties;\n        public MyImpostorProperties[] ImpostorProperties = MySolarSystemConstants.DefaultImpostorsProperties;\n        public string BackgroundTexture = \"BackgroundCube\";\n\n        public string AreaName;\n\n        /// <summary>\n        /// Key is asteroid material, value is weight (sum of weights do not need to be 1)\n        /// </summary>\n        public Dictionary<MyMwcVoxelMaterialsEnum, float> PrimaryAsteroidMaterials = new Dictionary<MyMwcVoxelMaterialsEnum, float>();\n\n        /// <summary>\n        /// Secondary materials (added to voxels using voxel hand)\n        /// </summary>\n        public Dictionary<MyMwcVoxelMaterialsEnum, float> SecondaryAsteroidMaterials = new Dictionary<MyMwcVoxelMaterialsEnum, float>();\n\n\n        /// <summary>\n        /// Allowed voxel materials in area\n        /// </summary>\n        public List<MyMwcVoxelMaterialsEnum> AllowedAsteroidMaterials = new List<MyMwcVoxelMaterialsEnum>();\n\n        /// <summary>\n        /// Key is size in km, value number of asteroids per sector (in areas with highest density)\n        /// Mean is applied to values when generating sector\n        /// </summary>\n        public MySectorObjectCounts SectorObjectsCounts = new MySectorObjectCounts();\n\n\n        /// <summary>\n        /// Interpolates dictionary which contains weights\n        /// </summary>\n        /// <param name=\"interpolator\">1 means use second</param>\n        private Dictionary<TKey, float> InterpolateDictionary<TKey>(Dictionary<TKey, float> first, Dictionary<TKey, float> second, float interpolator)\n        {\n            var result = new Dictionary<TKey, float>();\n            var keys = first.Keys.Union(second.Keys).Distinct();\n            foreach (var k in keys)\n            {\n                float firstValue;\n                float secondValue;\n                if (!first.TryGetValue(k, out firstValue))\n                {\n                    firstValue = 0;\n                }\n                if (!second.TryGetValue(k, out secondValue))\n                {\n                    secondValue = 0;\n                }\n                result[k] = MathHelper.Lerp(firstValue, secondValue, interpolator);\n            }\n            return result;\n        }\n\n        /// <param name=\"interpolator\">0 - use this object, 1 - use other object</param>\n        public MySolarSectorData InterpolateWith(MySolarSectorData otherProperties, float interpolator)\n        {\n            var result = new MySolarSectorData();\n            result.AreaName = this.AreaName; // Area name cannot be interpolated, use current\n            result.BackgroundTexture = this.BackgroundTexture;\n            \n            result.SunProperties = this.SunProperties.InterpolateWith(otherProperties.SunProperties, interpolator);\n            result.FogProperties = this.FogProperties.InterpolateWith(otherProperties.FogProperties, interpolator);\n            result.SectorObjectsCounts = this.SectorObjectsCounts.InterpolateWith(otherProperties.SectorObjectsCounts, interpolator);\n            result.DebrisProperties = this.DebrisProperties.InterpolateWith(otherProperties.DebrisProperties, interpolator);\n            result.ParticleDustProperties = this.ParticleDustProperties.InterpolateWith(otherProperties.ParticleDustProperties, interpolator);\n            result.GodRaysProperties = this.GodRaysProperties.InterpolateWith(otherProperties.GodRaysProperties, interpolator);\n            result.PrimaryAsteroidMaterials = InterpolateDictionary(this.PrimaryAsteroidMaterials, otherProperties.PrimaryAsteroidMaterials, interpolator);\n            result.SecondaryAsteroidMaterials = InterpolateDictionary(this.SecondaryAsteroidMaterials, otherProperties.SecondaryAsteroidMaterials, interpolator);\n            result.AllowedAsteroidMaterials = this.AllowedAsteroidMaterials;\n            if (interpolator > 0.5f)\n            {\n                result.ImpostorProperties = otherProperties.ImpostorProperties;\n            }\n            else\n            {\n                result.ImpostorProperties = this.ImpostorProperties;\n            }\n            return result;\n        }\n    }\n\n    class MyTemplateGroupInfo\n    {\n        /// <summary>\n        /// 1 = full importance, show always\n        /// 0.5 = half importance, show at half zoom\n        /// 0 = no importance, show only at full zoom\n        /// </summary>\n        public float Importance;\n\n        /// <summary>\n        /// \n        /// </summary>\n        public float Count;\n\n        /// <summary>\n        /// From which group load asteroids\n        /// </summary>\n        public MyTemplateGroupEnum TemplateGroup;\n    }\n\n    class MySolarMapData\n    {\n        public Vector3 DustColor { get; set; }\n        public Vector4 DustColorVariability { get; set; }\n        public MyTemplateGroupInfo[] TemplateGroups { get; set; }\n    }\n\n    class MySolarSystemArea\n    {\n        [Flags]\n        public enum AreaEnum\n        {\n            None = 0x00,\n            PostPlanet = 0x02,\n            Sun = 0x04,\n        }\n\n        public string Name;\n        public AreaEnum AreaType;\n\n\n        public MySolarMapData SolarMapData = new MySolarMapData(); // For drawing solar dust field, can be null (no dust field)\n        public MySolarSectorData SectorData = new MySolarSectorData();\n\n        public MyMwcVoxelMaterialsEnum? SecondaryStaticAsteroidMaterial;\n\n        /// <summary>\n        /// Returns how much is sector influented by area\n        /// </summary>\n        /// <param name=\"sectorPosition\">Position of sector</param>\n        /// <returns>Zero when sector is not influented, one when sector is fully influented, number between 0 and 1 when partially influented.</returns>\n        public virtual float GetSectorInterpolator(MyMwcVector3Int sectorPosition)\n        {\n            return 0;\n        }\n\n        /// <summary>\n        /// Add universe entities, like dust field billboard, asteroid field billboards etc\n        /// </summary>\n        /// <param name=\"entities\"></param>\n        public virtual void AddUniverseEntities(MySolarSystemMapData data)\n        {\n             // Do nothing \n        }\n\n        /// <summary>\n        /// Position in km\n        /// </summary>\n        /// <returns></returns>\n        public virtual Vector3 GetCenter()\n        {\n            return new Vector3(0, 0, 0);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/SolarSystem/MySolarSystemAreaCircle.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.CommonLIB.AppCode.Utils;\n\nnamespace MinerWars.AppCode.Game.SolarSystem\n{\n    class MySolarSystemAreaCircle: MySolarSystemArea\n    {\n        public Vector3 Position = Vector3.Zero;\n        public float Radius = 0;\n\n        public override float GetSectorInterpolator(MyMwcVector3Int sectorPosition)\n        {\n            Vector3 sectorPos = MySolarSystemUtils.SectorsToKm(sectorPosition);\n            Vector3 fromSectorToCenter = sectorPos - Position;\n            float fromSectorToCenterDist = fromSectorToCenter.Length();\n            if (fromSectorToCenterDist > Radius)\n            {\n                // Out of circle zone\n                return 0;\n            }\n\n            float cubicInterpolator = MathHelper.SmoothStep(0, 1, fromSectorToCenterDist / Radius);\n            return cubicInterpolator;\n        }\n\n        public override void AddUniverseEntities(MySolarSystemMapData data)\n        {\n            throw new NotImplementedException();\n        }\n\n        public override Vector3 GetCenter()\n        {\n            return Position;\n        }\n\n        public bool IsSectorInArea(MyMwcVector3Int sectorPosition)\n        {\n            Vector3 sectorPos = MySolarSystemUtils.SectorsToKm(sectorPosition);\n            Vector3 fromSectorToCenter = sectorPos - Position;\n            float fromSectorToCenterDist = fromSectorToCenter.Length();\n            return fromSectorToCenterDist <= Radius;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/SolarSystem/MySolarSystemAreaOrbit.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.SolarSystem;\nusing MinerWars.AppCode.Game.Missions;\n\nnamespace MinerWars.AppCode.Game.SolarSystem\n{\n    class MyOrbitProperties\n    {\n        public Vector3 OrbitCenter; // Km\n        public Vector3 AreaCenter; // Km\n        public float MaxDistanceFromOrbitLow; // Km\n        public float MaxDistanceFromOrbitHigh; // Km\n        public float LongSpread; // between 0.0f and 1.0f\n    }\n\n    class MySolarSystemAreaOrbit: MySolarSystemArea\n    {\n        public float HalfAngle\n        {\n            get\n            {\n                return MathHelper.Clamp(MathHelper.TwoPi / 2 * OrbitProperties.LongSpread, 0, MathHelper.TwoPi / 2); \n            }\n        }\n\n        public MyOrbitProperties OrbitProperties;\n\n        public override float GetSectorInterpolator(MyMwcVector3Int sectorPosition)\n        {\n            //Sem ja\n            Vector3 sectorPos = MySolarSystemUtils.SectorsToKm(sectorPosition);\n            //vzdalenost od stredu vesmiru ke mne  //stred vesmiru\n            Vector3 centerToSector = sectorPos - OrbitProperties.OrbitCenter;\n            float sectorToCenterDist = centerToSector.Length();\n\n                                 //Stred pulmesice            //stred vesmiru\n            Vector3 centerToZone = OrbitProperties.AreaCenter - OrbitProperties.OrbitCenter;\n            float orbitRadius = centerToZone.Length();\n\n\n            //vzdalenost mezi orbitama\n            float distFromOrbit = Math.Abs(orbitRadius - sectorToCenterDist);\n            if (distFromOrbit > OrbitProperties.MaxDistanceFromOrbitHigh)\n            {\n                // Not in area (not on ring)\n                return 0;\n            }\n\n            //\n            //float baseAngle = MyMath.AngleTo(centerToZone, Vector3.UnitZ).Y;\n            //float angle = MyMath.AngleTo(centerToZone, centerToSector).Y;\n            float angle = MyMath.AngleBetween(centerToSector, centerToZone);\n            if (Math.Abs(angle) > HalfAngle)\n            {\n                // Not in area (other part of orbit)\n                return 0;\n            }\n\n            float angleInterpolator = angle / HalfAngle;\n            float maxDistFromOrbitAtAngle = MathHelper.SmoothStep(OrbitProperties.MaxDistanceFromOrbitHigh, OrbitProperties.MaxDistanceFromOrbitLow, angleInterpolator);\n            if (distFromOrbit > maxDistFromOrbitAtAngle)\n            {\n                // Not in area (not in shape of zone)\n                return 0;\n            }\n\n            float interpolator = distFromOrbit / maxDistFromOrbitAtAngle;\n            interpolator = 1 - (float)Math.Pow(interpolator, 3);\n            return interpolator;\n        }\n\n        private float CalculateStep(float maxDistanceFromOrbit)\n        {\n            float orbitRadius = OrbitProperties.AreaCenter.Length();\n            float len = HalfAngle / 2 * orbitRadius;\n            float stepCount = len / maxDistanceFromOrbit;\n            const float overlap = 1;\n            return HalfAngle / stepCount / overlap;\n        }\n\n        // Gets random position with normal distribution - most object in center, few objects on borders\n        private Vector3 GetRandomPosition(Random rnd)\n        {\n            float baseAngle = MyMath.AngleTo(OrbitProperties.AreaCenter, Vector3.UnitZ).Y;\n            float randNumber = MathHelper.Clamp(rnd.FloatNormal(0, 0.4f), -1, 1);\n            float angleOffset = (randNumber) * HalfAngle;\n            float angle = baseAngle + angleOffset;\n            float interpolator = 1 - Math.Abs(angleOffset / HalfAngle);\n            float maxDistFromOrbitAtAngle = MathHelper.SmoothStep(OrbitProperties.MaxDistanceFromOrbitLow, OrbitProperties.MaxDistanceFromOrbitHigh, interpolator);\n            Vector2 distFromOrbit = Vector2.Normalize(new Vector2(rnd.FloatNormal(0, 0.2f), rnd.FloatNormal(0, 0.2f)));\n            distFromOrbit *= maxDistFromOrbitAtAngle;\n            float orbitRadius = OrbitProperties.AreaCenter.Length();\n            float dist = orbitRadius + distFromOrbit.X;\n\n            float x = (float)Math.Sin(angle) * dist;\n            float z = (float)Math.Cos(angle) * dist;\n            float y = 0;\n            return OrbitProperties.OrbitCenter + new Vector3(x, y, z);\n        }\n\n        public void AddTemplateGroups(MySolarSystemMapData data)\n        {\n            return; // Template groups in solar map are disabled\n            if (SolarMapData.TemplateGroups == null) return;\n\n            Random rnd = new Random(0);\n            foreach (var g in SolarMapData.TemplateGroups)\n            {\n                for (int i = 0; i < g.Count; i++)\n                {\n                    var pos = GetRandomPosition(rnd);\n                    Vector3 offset;\n                    MyMwcVector3Int sector = MySolarSystemUtils.KmToSectors(pos, out offset);\n\n                    var mark = new MySolarSystemMapNavigationMark(sector, \"\", null, Color.White, TransparentGeometry.MyTransparentMaterialEnum.SolarMapOutpost);\n                    mark.Importance = g.Importance;\n                    mark.DrawVerticalLine = false;\n                    data.NavigationMarks.Add(mark);\n                    data.ImportantObjects.Add(new MyImportantSolarObject() { NavigationMark = mark, TemplateGroup = g.TemplateGroup });\n                    //entities.Add(new MySolarSystemMapEntity(sector, offset, 0, \"\", MySolarSystemEntityEnum.OutpostIcon));\n                }\n            }\n        }\n\n        public override void AddUniverseEntities(MySolarSystemMapData data)\n        {\n            if (MyMissions.ActiveMission == null && MyMissions.GetAvailableMissions().Count == 0)\n            {\n                AddTemplateGroups(data);\n            }\n\n            const float maxObjCenterFromOrbit = 0.25f;\n\n            Random rnd = new Random(0);\n            float orbitRadius = OrbitProperties.AreaCenter.Length();\n            float baseAngle = MyMath.AngleTo(OrbitProperties.AreaCenter, Vector3.UnitZ).Y;\n\n            //count of groups per orbit side \n            float step = CalculateStep((OrbitProperties.MaxDistanceFromOrbitHigh + OrbitProperties.MaxDistanceFromOrbitLow) / 2);\n\n            int testMaxCount = 0;\n\n            for (float i = baseAngle - HalfAngle; i < baseAngle + HalfAngle; i += step)\n            {\n                float interpolator = 1 - Math.Abs((i - baseAngle) / HalfAngle); // (i + halfLen) / halfLen / 2;\n                float maxDistFromOrbitAtAngle = MathHelper.SmoothStep(OrbitProperties.MaxDistanceFromOrbitLow, OrbitProperties.MaxDistanceFromOrbitHigh, interpolator);\n\n                step = CalculateStep((OrbitProperties.MaxDistanceFromOrbitHigh + maxDistFromOrbitAtAngle) / 2);\n\n                //Vector3 centerPos = new Vector3((float)Math.Sin(i) * distance, 0, (float)Math.Cos(i) * distance);\n\n                //5 = billboards count in smaller group\n                for (int j = 0; j < 2; j++)\n                {\n                    Vector2 distFromOrbit = Vector2.Normalize(new Vector2(rnd.Float(-1, 1), rnd.Float(-1, 1)));\n                    //distFromOrbit = new Vector2();\n                    distFromOrbit *= maxDistFromOrbitAtAngle * maxObjCenterFromOrbit;\n                    float dist = orbitRadius + distFromOrbit.X;\n\n                    float i2 = i + rnd.FloatCubic(-step * maxObjCenterFromOrbit, step * maxObjCenterFromOrbit);\n\n                    float x = (float)Math.Sin(i2) * dist;\n                    float z = (float)Math.Cos(i2) * dist;\n                    float y = distFromOrbit.Y;\n                    Vector3 pos = OrbitProperties.OrbitCenter + new Vector3(x, y, z);\n\n                    Vector3 offset;\n                    MyMwcVector3Int sector = MySolarSystemUtils.KmToSectors(pos, out offset);\n\n                    float size = maxDistFromOrbitAtAngle * (1 - maxObjCenterFromOrbit);\n\n                    if (this.SolarMapData != null)\n                    {\n                        Vector4 clr = new Vector4(this.SolarMapData.DustColor, 1.0f);\n                        Color color = rnd.Color(new Color(clr - this.SolarMapData.DustColorVariability), new Color(clr + this.SolarMapData.DustColorVariability));\n\n                        data.Entities.Add(new MySolarSystemMapEntity(sector, offset, 2 * size, \"Dust\", MySolarSystemEntityEnum.DustField, color));\n                        testMaxCount++;\n                    }\n                    if ((AreaType & AreaEnum.PostPlanet) != 0 && j % 2 == 0)\n                    {\n                        data.Entities.Add(new MySolarSystemMapEntity(sector, offset, size * (1 - maxObjCenterFromOrbit), \"Asteroids\", MySolarSystemEntityEnum.AsteroidField, Color.White));\n                        testMaxCount++;\n                    }\n\n                    //AddEntity(m_data, pos, radius * wide * 4, name + \" dust\", MySolarSystemEntityEnum.Test1_Dust, rnd.Color(baseColor, colorVariation));\n                }\n            }\n\n            //Do not allow to solar area to add more than 1000 objects\n            //System.Diagnostics.Debug.Assert(testMaxCount < 3000);\n\n            MySolarAreaBorderLine newLine = new MySolarAreaBorderLine();\n            newLine.AreaCenter = OrbitProperties.AreaCenter;\n            newLine.DistanceHigh = OrbitProperties.MaxDistanceFromOrbitHigh;\n            newLine.DistanceLow = OrbitProperties.MaxDistanceFromOrbitLow;\n            newLine.Spread = OrbitProperties.LongSpread;\n            newLine.col = new Vector4(SolarMapData.DustColor, 1f);\n            data.AreasBorderLines.Add(newLine);\n        }\n\n        private Vector3 DirectionFromPointOnOrbit(Vector3 point)\n        {\n            Vector3 ret = point;\n            ret.Normalize();\n            return ret;\n        }\n\n        public override Vector3 GetCenter()\n        {\n            //We agreed that everything in our solar area is in plane\n            System.Diagnostics.Debug.Assert(MyMwcUtils.IsZero(OrbitProperties.AreaCenter.Y));\n            return OrbitProperties.AreaCenter;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/SolarSystem/MySolarSystemConstants.cs",
    "content": "﻿using System.Collections.Generic;\nusing MinerWarsMath;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.AppCode.Game.BackgroundCube;\n\nnamespace MinerWars.AppCode.Game.SolarSystem\n{\n    partial class MySolarSystemConstants\n    {\n        public static Dictionary<MySolarSystemAreaEnum, MySolarSystemArea> Areas { get; private set; }\n\n        public readonly static MySectorObjectCounts MinimumObjectsProperties = new MySectorObjectCounts()\n        {\n            Voxels512 = 0,\n            Voxels256 = 0,\n            Voxels128 = 0,\n            Voxels64 = 0,\n            StaticAsteroidLarge = 0,\n            StaticAsteroidMedium = 0,\n            StaticAsteroidSmall = 0,\n            Motherships = 0,\n            StaticDebrisFields = 0\n        };\n\n        public readonly static MySectorObjectCounts DefaultObjectsProperties = new MySectorObjectCounts()\n        {\n            Voxels512 = 0,\n            Voxels256 = 5,\n            Voxels128 = 10,\n            Voxels64 = 10,\n            StaticAsteroidLarge = 4,\n            StaticAsteroidMedium = 5000,\n            StaticAsteroidSmall = 0,\n            Motherships = 0,\n            StaticDebrisFields = 500\n        };\n\n        public readonly static MySectorObjectCounts ManyObjectsProperties = new MySectorObjectCounts()\n        {\n            Voxels512 = 0,\n            Voxels256 = 5,\n            Voxels128 = 10,\n            Voxels64 = 10,\n            StaticAsteroidLarge = 40,\n            StaticAsteroidMedium = 7000,\n            StaticAsteroidSmall = 0,\n            Motherships = 10,\n            StaticDebrisFields = 500\n        };\n\n        public readonly static Dictionary<MyMwcVoxelMaterialsEnum, float> DefaultAsteroidMaterials = new Dictionary<MyMwcVoxelMaterialsEnum, float>()\n        {            \n        };\n\n        public readonly static Dictionary<MyMwcVoxelMaterialsEnum, float> DefaultSecondaryMaterials = new Dictionary<MyMwcVoxelMaterialsEnum, float>()\n        {\n        };\n\n        public static List<MyMwcVoxelMaterialsEnum> CreateAllowedMaterials(Dictionary<MyMwcVoxelMaterialsEnum, float> primary, Dictionary<MyMwcVoxelMaterialsEnum, float> secondary)\n        {\n            List<MyMwcVoxelMaterialsEnum> list = new List<MyMwcVoxelMaterialsEnum>();\n            if (primary != null)\n            {\n                foreach (var pair in primary)\n                {\n                    if (pair.Value > 0)\n                        list.Add(pair.Key);\n                }\n            }\n            if (secondary != null)\n            {\n                foreach (var pair in secondary)\n                {\n                    if (pair.Value > 0)\n                        list.Add(pair.Key);\n                }\n            }\n            return list;\n        }\n\n\n        public readonly static MyImpostorProperties[] ManyImpostorsProperties = new MyImpostorProperties[]\n        {\n                   new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Billboards,\n                      Material = MyTransparentMaterialEnum.Impostor_StaticAsteroid20m_A,\n                      ImpostorsCount = 5000,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 5,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 10,\n                      MinRadius = 1000,\n                      MaxRadius = 2000,\n                      AnimationSpeed = new Vector4(0.00009f,0,0,0),\n                      Color = Vector3.One\n                  },\n\n                  new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Billboards,\n                      Material = MyTransparentMaterialEnum.Impostor_StaticAsteroid20m_C,\n                      ImpostorsCount = 5000,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 10.1f,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 11,\n                      MinRadius = 1000,\n                      MaxRadius = 2000,\n                      AnimationSpeed = new Vector4(-0.0001f,0,0,0),\n                      Color = Vector3.One\n                  },\n\n                  new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Billboards,\n                      Material = MyTransparentMaterialEnum.Impostor_StaticAsteroid50m_D,\n                      ImpostorsCount = 1000,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 10.1f,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 11,\n                      MinRadius = 5000,\n                      MaxRadius = 8000,\n                      AnimationSpeed = Vector4.Zero,\n                      Color = Vector3.One\n                  },\n\n                  new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Billboards,\n                      Material = MyTransparentMaterialEnum.Impostor_StaticAsteroid50m_E,\n                      ImpostorsCount = 1000,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 1.9f,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 2.0f,\n                      MinRadius = 500,\n                      MaxRadius = 800,\n                      AnimationSpeed = Vector4.Zero,\n                      Color = Vector3.One\n                  },\n\n                  new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Nebula,\n                      Material = null,\n                      ImpostorsCount = 0,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 1.0f,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 1.3f,\n                      MinRadius = 1.0f,\n                      MaxRadius = 1.0f,\n                      AnimationSpeed = new Vector4(0.001f, 0.001f,0.003f, 0),\n                      Color = new Vector3(0.4f, 0.9f, 0.4f)\n                  },\n        };\n\n        public readonly static MyImpostorProperties[] DefaultImpostorsProperties = new MyImpostorProperties[]\n        {\n                   new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Billboards,\n                      Material = MyTransparentMaterialEnum.Impostor_StaticAsteroid20m_A,\n                      ImpostorsCount = 1000,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 5,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 10,\n                      MinRadius = 1000,\n                      MaxRadius = 2000,\n                      AnimationSpeed = new Vector4(0.00009f,0,0,0),\n                      Color = Vector3.One\n                  },\n\n                  new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Billboards,\n                      Material = MyTransparentMaterialEnum.Impostor_StaticAsteroid20m_C,\n                      ImpostorsCount = 1000,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 10.1f,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 11,\n                      MinRadius = 1000,\n                      MaxRadius = 2000,\n                      AnimationSpeed = new Vector4(-0.0001f,0,0,0),\n                      Color = Vector3.One\n                  },\n\n                  new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Nebula,\n                      Material = null,\n                      ImpostorsCount = 0,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 1.0f,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 1.3f,\n                      MinRadius = 1.0f,\n                      MaxRadius = 1.0f,\n                      AnimationSpeed = new Vector4(0.001f, 0.001f,0.003f, 0),\n                      Color = new Vector3(0.4f, 0.9f, 0.4f)\n                  },\n        };\n\n        public static readonly MySunProperties DefaultSunProperties = new MySunProperties()\n        {\n            SunDiffuse = new Vector3(1.0f, 1.0f, 0.8f),\n            SunIntensity = MySolarSystemConstants.SunIntensityFromPosition(MyBgrCubeConsts.EARTH_POSITION),\n            SunSpecular = new Vector3(0.9137255f, 0.6078432f, 0.2078431f),\n            BackSunDiffuse = new Vector3(0.0627451f, 0.04313726f, 0.03529412f),\n            BackSunIntensity = 1.357f,\n            AmbientColor = new Vector3(0.14f),\n            AmbientMultiplier = 0.2f,\n            EnvironmentAmbientIntensity = 1.6f,\n            SunSizeMultiplier = 1.0f,\n        };\n        \n        public static readonly MyFogProperties DefaultFogProperties = new MyFogProperties()\n        {\n            FogColor = new Vector3(30 / 255.0f, 36 / 255.0f, 51 / 255.0f),\n            FogNear = 3000,\n            FogFar = 3633,\n            FogMultiplier = 0.0f,\n        };\n\n        public static readonly MyDebrisProperties DefaultDebrisProperties = new MyDebrisProperties()\n        {\n            MaxDistance = 200,\n            CountInDirectionHalf = 2,\n            FullScaleDistance = 70,\n            DistanceBetween = 50.0f,\n        };\n\n        public static readonly MyDebrisProperties ManyDebrisProperties = new MyDebrisProperties()\n        {\n            MaxDistance = 200,\n            CountInDirectionHalf = 5,\n            FullScaleDistance = 70,\n            DistanceBetween = 50.0f,\n        };\n\n        public static readonly MyParticleDustProperties DefaultParticleDustProperties = new MyParticleDustProperties()\n        {\n        };\n\n        public static readonly MyGodRaysProperties DefaultGodRaysProperties = new MyGodRaysProperties()\n        {\n        };\n\n        static MySolarSystemConstants()\n        {\n            CreateAreas();\n        }\n\n        /// <summary>\n        /// \n        /// </summary>\n        /// <param name=\"position\">Position in million km</param>\n        /// <returns></returns>\n        public static float SunIntensityFromPosition(Vector3 positionInMillKm)\n        {\n            float baseIntensity = MyBgrCubeConsts.EARTH_POSITION.Length();\n            float length = positionInMillKm.Length();\n            return MathHelper.Clamp(baseIntensity / (length), 0.3f, 5f);\n        }\n\n        public static MySolarSystemArea GetDefaultArea()\n        {\n            CreateAreas();\n            return Areas[MySolarSystemAreaEnum.Earth];\n        }\n\n        /// <summary>\n        /// Rebuild the areas\n        /// </summary>\n        public static void CreateAreas()\n        {\n            Areas = new Dictionary<MySolarSystemAreaEnum, MySolarSystemArea>(KeenSoftwareHouse.Library.Collections.Comparers.EnumComparer<MySolarSystemAreaEnum>.Instance);\n\n            CreateMercuryArea();\n            CreateVenusArea();\n            CreateEarthArea();\n            CreateMarsArea();\n            CreateJupiterArea();\n            CreateSaturnArea();\n            CreateUranArea();\n            CreateNeptunArea();\n\n\n            CreateAsteroidBeltArea();\n            CreateAsteroidBelt2Area();\n            CreateNearSunArea();\n            CreateLaikaArea();\n            CreateJupiterBorderArea();\n            \n            CreateMars2Area();\n\n            CreateSlaverBaseArea();\n             \n            CreateNebulaArea();\n            \n            CreateMars3Area();\n            CreateJupiter2Area();\n            CreateMars3Area();\n            CreateChinesePowerPlantArea();\n            CreateMedina622Area();\n            CreateSmallPirateBase2Area();\n            CreateSlaversBase2Area();\n            CreateRussianTransmitterArea();    \n\n            CreateJunkyardArea();\n\n            CreateRimeArea();\n            CreateChineseRafinaryArea();\n            CreateChineseMinesArea();\n\n            CreateValiantArea();\n\n            Create3rdTransmitterArea();\n            CreateChineseTransmitterArea();\n\n            CreateHallArea();\n            CreateHell25DArea();\n            CreateSkyArea();\n\n            foreach (var area in Areas)\n            {\n                area.Value.SectorData.AllowedAsteroidMaterials = CreateAllowedMaterials(area.Value.SectorData.PrimaryAsteroidMaterials, area.Value.SectorData.SecondaryAsteroidMaterials);\n            }\n\n            Areas[MySolarSystemAreaEnum.Earth].SectorData.AllowedAsteroidMaterials.Clear();\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/SolarSystem/MySolarSystemGenerator.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.AppCode.Game.Missions;\nusing MinerWars.AppCode.Game.Localization;\n\nnamespace MinerWars.AppCode.Game.SolarSystem\n{\n    class MySolarSystemGenerator\n    {\n        private Random rnd;\n        private MySolarSystemMapData m_data;\n\n        public MySolarSystemGenerator(int seed)\n        {\n            rnd = new Random(seed);\n        }\n\n        public MySolarSystemMapData SolarSystemData\n        {\n            get\n            {\n                return m_data;\n            }\n        }\n\n        private void AddEntity(MySolarSystemMapData data, Vector3 posMillKm, float radiusMillKm, string name, MySolarSystemEntityEnum entityType, Color color, object entityData = null)\n        {\n            float radius = radiusMillKm * MyBgrCubeConsts.MILLION_KM;\n            Vector3 offset;\n            MyMwcVector3Int sector = MySolarSystemUtils.MillionKmToSectors(posMillKm, out offset);\n            var entity = new MySolarSystemMapEntity(sector, offset, radius, name, entityType, color);\n            entity.EntityData = entityData;\n            data.Entities.Add(entity);\n        }\n\n        public void Generate(int sectorCacheCapacity)\n        {\n            m_data = new MySolarSystemMapData(sectorCacheCapacity);\n            \n            // Sun\n            AddEntity(m_data, Vector3.Zero, MyBgrCubeConsts.SUN_RADIUS, MyTextsWrapper.Get(MyTextsWrapperEnum.Sun).ToString(), MySolarSystemEntityEnum.Sun, Color.White);\n\n            // Orbits (just orbit lines)\n            AddEntity(m_data, Vector3.Zero, MyBgrCubeConsts.MERCURY_POSITION.Length(), \"Mercury orbit\", MySolarSystemEntityEnum.Orbit, Color.White);\n            AddEntity(m_data, Vector3.Zero, MyBgrCubeConsts.VENUS_POSITION.Length(), \"Venus orbit\", MySolarSystemEntityEnum.Orbit, Color.White);\n            AddEntity(m_data, Vector3.Zero, MyBgrCubeConsts.EARTH_POSITION.Length(), \"Earth orbit\", MySolarSystemEntityEnum.Orbit, Color.White);\n            AddEntity(m_data, Vector3.Zero, MyBgrCubeConsts.MARS_POSITION.Length(), \"Mars orbit\", MySolarSystemEntityEnum.Orbit, Color.White);\n            AddEntity(m_data, Vector3.Zero, MyBgrCubeConsts.JUPITER_POSITION.Length(), \"Jupiter orbit\", MySolarSystemEntityEnum.Orbit, Color.White);\n            AddEntity(m_data, Vector3.Zero, MyBgrCubeConsts.SATURN_POSITION.Length(), \"Saturn orbit\", MySolarSystemEntityEnum.Orbit, Color.White);\n            AddEntity(m_data, Vector3.Zero, MyBgrCubeConsts.URANUS_POSITION.Length(), \"Uranus orbit\", MySolarSystemEntityEnum.Orbit, Color.White);\n            AddEntity(m_data, Vector3.Zero, MyBgrCubeConsts.NEPTUNE_POSITION.Length(), \"Neptune orbit\", MySolarSystemEntityEnum.Orbit, Color.White);\n\n            foreach (var a in MySolarSystemConstants.Areas)\n            {\n                a.Value.AddUniverseEntities(m_data);\n                m_data.Areas.Add(a.Key);\n            }\n\n            if (MyFakes.ENABLE_RANDOM_STATIONS_IN_SOLAR_SYSTEM && \n                MyMissions.ActiveMission == null && \n                MyMissions.GetAvailableMissions().Count == 0)\n            {\n                foreach (var a in MyFactions.FactionAreas)\n                {\n                    if (a.Key == CommonLIB.AppCode.ObjectBuilders.MyMwcObjectBuilder_FactionEnum.CSR)\n                        continue;\n                    foreach (var circle in a.Value)\n                    {\n                        Random r = new Random(circle.Position.GetHashCode() ^ circle.Radius.GetHashCode());\n\n                        var radius = circle.Radius / 100000000;\n\n                        float count = MathHelper.Pi * radius * radius;\n                        count = MathHelper.Clamp(count, 0, 10);\n                        if (count < 1)\n                        {\n                            count = r.Next(0, 2);\n                        }\n                        for (int i = 0; i < count; i++)\n                        {\n                            float dist = rnd.Float() * circle.Radius;\n                            float angle = (float)(rnd.NextDouble() * 2 * MathHelper.Pi);\n                            float x = (float)Math.Sin(angle) * dist;\n                            float z = (float)Math.Cos(angle) * dist;\n\n                            var pos = circle.GetCenter() + new Vector3(x, 0, z);\n                            //pos = circle.GetCenter();\n\n                            Vector3 offset;\n                            MyMwcVector3Int sector = MySolarSystemUtils.KmToSectors(pos, out offset);\n                            var mark = new MySolarSystemMapNavigationMark(sector, \"\", null, Color.White, MyTransparentMaterialEnum.SolarMapOutpost);\n                            mark.Importance = rnd.Next(2, 5) / 4.0f;\n                            mark.DrawVerticalLine = false;\n                            m_data.NavigationMarks.Add(mark);\n                            m_data.ImportantObjects.Add(new MyImportantSolarObject() { NavigationMark = mark, TemplateGroup = MyTemplateGroupEnum.RandomStations });\n                        }\n                    }\n                }\n            }\n            \n            // Filip resize solar map\n            const float factionMapScale = 1.75f;\n\n            // Faction map - size of map is same as saturn orbit\n            AddEntity(m_data, Vector3.Zero, MyBgrCubeConsts.SATURN_POSITION.Length() / factionMapScale, \"Faction map\", MySolarSystemEntityEnum.FactionMap, Color.White);\n\n            AddEntity(m_data, new Vector3(-352, 0, -40), 0, MyTextsWrapper.Get(MyTextsWrapperEnum.FactionRussian).ToString(), MySolarSystemEntityEnum.FactionInfo, Color.IndianRed, MyTransparentMaterialEnum.FactionRussia);\n            AddEntity(m_data, new Vector3(-432, 0, -628), 0, MyTextsWrapper.Get(MyTextsWrapperEnum.FactionRussian).ToString(), MySolarSystemEntityEnum.FactionInfo, Color.IndianRed, MyTransparentMaterialEnum.FactionRussia);\n            AddEntity(m_data, new Vector3(0, 0, 300), 0, MyTextsWrapper.Get(MyTextsWrapperEnum.FactionChineseShort).ToString(), MySolarSystemEntityEnum.FactionInfo, Color.Brown, MyTransparentMaterialEnum.FactionChina);\n            AddEntity(m_data, new Vector3(-150, 0, 95), 0, MyTextsWrapper.Get(MyTextsWrapperEnum.FactionJapan).ToString(), MySolarSystemEntityEnum.FactionInfo, Color.DeepSkyBlue, MyTransparentMaterialEnum.FactionJapan);\n            AddEntity(m_data, new Vector3(300, 0, 108), 0, MyTextsWrapper.Get(MyTextsWrapperEnum.FactionFreeAsia).ToString(), MySolarSystemEntityEnum.FactionInfo, Color.HotPink, MyTransparentMaterialEnum.FactionFreeAsia);\n            AddEntity(m_data, new Vector3(300, 0, -40), 0, MyTextsWrapper.Get(MyTextsWrapperEnum.FactionSaudiShort).ToString(), MySolarSystemEntityEnum.FactionInfo, Color.Gold, MyTransparentMaterialEnum.FactionSaudi);\n            AddEntity(m_data, new Vector3(220, 0, -180), 0, MyTextsWrapper.Get(MyTextsWrapperEnum.FactionEuroamericanShort).ToString(), MySolarSystemEntityEnum.FactionInfo, Color.CornflowerBlue, MyTransparentMaterialEnum.FactionEAC);\n            //AddEntity(m_data, new Vector3(65, 0, -135), 0, \"CSR\", MySolarSystemEntityEnum.FactionInfo, Color.DarkKhaki, MyTransparentMaterialEnum.FactionCSR);\n            AddEntity(m_data, new Vector3(37, 0, -160), 0, MyTextsWrapper.Get(MyTextsWrapperEnum.FactionIndia).ToString(), MySolarSystemEntityEnum.FactionInfo, Color.SandyBrown, MyTransparentMaterialEnum.FactionIndia);\n            AddEntity(m_data, new Vector3(-30, 0, -160), 0, MyTextsWrapper.Get(MyTextsWrapperEnum.FactionChurchShort).ToString(), MySolarSystemEntityEnum.FactionInfo, Color.Yellow, MyTransparentMaterialEnum.FactionChurch);\n            AddEntity(m_data, new Vector3(-85, 0, -150), 0, MyTextsWrapper.Get(MyTextsWrapperEnum.FactionOmnicorpShort).ToString(), MySolarSystemEntityEnum.FactionInfo, Color.LightGreen, MyTransparentMaterialEnum.FactionOmnicorp);\n            AddEntity(m_data, new Vector3(-108, 0, -358), 0, MyTextsWrapper.Get(MyTextsWrapperEnum.FactionFourthReichShort).ToString(), MySolarSystemEntityEnum.FactionInfo, Color.LightSteelBlue, MyTransparentMaterialEnum.FactionFourthReich);\n\n            // Some navigation marks for testing            \n            //AddNavigationMark(m_data, new MyMwcVector3Int(1000000, 0, 1000000), \"Mark1\");\n            //AddNavigationMark(m_data, new MyMwcVector3Int(3000000, 0, -1500000), \"Mark2\");\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/SolarSystem/MySolarSystemMapCamera.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Utils;\n\nnamespace MinerWars.AppCode.Game.SolarSystem\n{\n    class MySolarSystemMapCamera\n    {\n        Vector3 m_position;\n        MyMwcVector3Int m_positionSector;\n\n        Matrix m_baseRotation;\n\n        Vector3 m_target;\n        MyMwcVector3Int m_targetSector;\n\n        Vector3 m_cameraToTarget;\n\n        float m_cameraDistance;\n\n        public float CameraDistance\n        {\n            get { return m_cameraDistance; }\n        }\n\n        Vector2 m_rotation;\n\n        public const float SECTOR_SIZE_GAMEUNITS = 0.0001f;\n\n        public float PitchMin = MathHelper.ToRadians(-89.999f);\n        public float PitchMax = MathHelper.ToRadians(-10);\n        public float MinDistanceToTarget = 16;\n        public float MaxDistanceToTarget = 15e6f;\n\n        /// <summary>\n        /// Maximal sector number.\n        /// For solar system 1000 x 1000 sectors it will be 1000.\n        /// </summary>\n        public int MaxSector;\n\n        private MySolarSystemMapCamera() { }\n\n        public Vector3 Forward { get; private set; }\n        public Vector3 Up { get; private set; }\n        public Vector3 Left { get; private set; }\n\n        public MySolarSystemMapCamera(Vector3 target, float distanceFromTarget)\n        {\n            m_target = target;\n            m_cameraDistance = distanceFromTarget;\n            m_rotation = new Vector2(MathHelper.ToRadians(-30), 0);\n            UpdateRotation();\n        }\n\n        public void Move(Vector3 target)\n        {\n            m_target = target;\n            m_targetSector = new MyMwcVector3Int(0, 0, 0);\n            UpdateRotation();\n        }\n\n        public void MoveToSector(MyMwcVector3Int targetSector)\n        {\n            var target = new Vector3(targetSector.X * SECTOR_SIZE_GAMEUNITS, targetSector.Y * SECTOR_SIZE_GAMEUNITS, targetSector.Z * SECTOR_SIZE_GAMEUNITS);\n            Move(target);\n        }\n\n        void Modulo(ref double x, ref double y, ref double z, double modulo)\n        {\n            x %= modulo;\n            y %= modulo;\n            z %= modulo;\n        }\n\n        /// <summary>\n        /// Need to calculate position modulo to move grid.\n        /// Everything must be in doubles and each part separate.\n        /// </summary>\n        /// <param name=\"modulo\"></param>\n        /// <returns></returns>\n        public Vector3 CalculatePositionModulo(double modulo)\n        {\n            double tx = m_target.X;\n            double ty = m_target.Y;\n            double tz = m_target.Z;\n            Modulo(ref tx, ref ty, ref tz, modulo);\n\n            double tsx = m_targetSector.X;\n            double tsy = m_targetSector.Y;\n            double tsz = m_targetSector.Z;\n            Modulo(ref tsx, ref tsy, ref tsz, modulo / SECTOR_SIZE_GAMEUNITS);\n            tsx *= SECTOR_SIZE_GAMEUNITS;\n            tsy *= SECTOR_SIZE_GAMEUNITS;\n            tsz *= SECTOR_SIZE_GAMEUNITS;\n\n            double rx = m_baseRotation.Forward.X * m_cameraDistance;\n            double ry = m_baseRotation.Forward.Y * m_cameraDistance;\n            double rz = m_baseRotation.Forward.Z * m_cameraDistance;\n            Modulo(ref rx, ref ry, ref rz, modulo);\n\n            double x = rx - (tx + tsx);\n            double y = ry - (ty + tsy);\n            double z = rz - (tz + tsz);\n            Modulo(ref x, ref y, ref z, modulo);\n\n            return new Vector3((float)x, (float)y, (float)z);\n        }\n        \n        /// <summary>\n        /// Need to update position from target, camera direction and distance.\n        /// Calculation must be done in doubles.\n        /// </summary>\n        void UpdatePosition()\n        {\n            m_cameraToTarget = m_baseRotation.Forward * m_cameraDistance;\n\n            // Absolute target position\n            double tx = m_targetSector.X * (double)SECTOR_SIZE_GAMEUNITS;\n            double ty = m_targetSector.Y * (double)SECTOR_SIZE_GAMEUNITS;\n            double tz = m_targetSector.Z * (double)SECTOR_SIZE_GAMEUNITS;\n\n            tx += m_target.X;\n            ty += m_target.Y;\n            tz += m_target.Z;\n\n            double rx = m_baseRotation.Forward.X * (double)m_cameraDistance;\n            double ry = m_baseRotation.Forward.Y * (double)m_cameraDistance;\n            double rz = m_baseRotation.Forward.Z * (double)m_cameraDistance;\n\n            double px = tx - rx;\n            double py = ty - ry;\n            double pz = tz - rz;\n            \n            m_positionSector.X = (int)(px / (double)SECTOR_SIZE_GAMEUNITS);\n            m_positionSector.Y = (int)(py / (double)SECTOR_SIZE_GAMEUNITS);\n            m_positionSector.Z = (int)(pz / (double)SECTOR_SIZE_GAMEUNITS);\n\n            m_position.X = (float)(px % (double)SECTOR_SIZE_GAMEUNITS);\n            m_position.Y = (float)(py % (double)SECTOR_SIZE_GAMEUNITS);\n            m_position.Z = (float)(pz % (double)SECTOR_SIZE_GAMEUNITS);\n        }\n\n        /// <summary>\n        /// Update rotation AND position\n        /// Camera rotation changes position\n        /// </summary>\n        void UpdateRotation()\n        {\n            m_rotation.X = MathHelper.Clamp(m_rotation.X, PitchMin, PitchMax);\n            m_baseRotation = Matrix.CreateFromYawPitchRoll(m_rotation.Y, m_rotation.X, 0);\n\n            Forward = Vector3.Transform(Vector3.Forward, m_baseRotation);\n            Up = Vector3.Transform(Vector3.Up, m_baseRotation);\n            Left = Vector3.Transform(Vector3.Left, m_baseRotation);\n\n            // Rotation always updates position, because camera is locked to target and rotates around, therefore it's changing position\n            UpdatePosition(); \n        }\n\n        public void Zoom(float zoomIndicator)\n        {\n            if (zoomIndicator != 0)\n            {\n                const float zoomMult = -120 * 2;\n                zoomIndicator /= zoomMult;\n\n                float val = 1 + Math.Abs(zoomIndicator);\n\n                // zoom in\n                if(zoomIndicator < 0)\n                {\n                    val = 1 / val;\n                }\n                m_cameraDistance *= val;\n\n                m_cameraDistance = MathHelper.Clamp(m_cameraDistance, MinDistanceToTarget, MaxDistanceToTarget);\n\n                UpdatePosition();\n            }\n        }\n\n        public Vector3 Position\n        {\n            get\n            {\n                return m_position;\n            }\n        }\n\n        public MyMwcVector3Int PositionSector\n        {\n            get\n            {\n                return m_positionSector;\n            }\n        }\n\n        public Vector3 Target\n        {\n            get\n            {\n                return m_target;\n            }\n        }\n\n        public MyMwcVector3Int TargetSector \n        { \n            get\n            {\n                return m_targetSector;\n            }\n        }\n\n        public Vector3 CameraToTarget\n        {\n            get\n            {\n                return m_baseRotation.Forward * m_cameraDistance;\n            }\n        }\n\n        private void UpdateSector(ref Vector3 sectorOffset, ref MyMwcVector3Int sector)\n        {\n            MyMwcVector3Int offset;\n            offset.X = (int)Math.Round(sectorOffset.X / SECTOR_SIZE_GAMEUNITS);\n            offset.Y = (int)Math.Round(sectorOffset.Y / SECTOR_SIZE_GAMEUNITS);\n            offset.Z = (int)Math.Round(sectorOffset.Z / SECTOR_SIZE_GAMEUNITS);\n\n            sectorOffset.X -= offset.X * SECTOR_SIZE_GAMEUNITS;\n            sectorOffset.Y -= offset.Y * SECTOR_SIZE_GAMEUNITS;\n            sectorOffset.Z -= offset.Z * SECTOR_SIZE_GAMEUNITS;\n\n            sector.X += offset.X;\n            sector.Y += offset.Y;\n            sector.Z += offset.Z;\n        }\n\n        private void ClampTargetSector()\n        {\n            if (m_targetSector.X < -MaxSector) m_targetSector.X = -MaxSector;\n            if (m_targetSector.Y < -MaxSector) m_targetSector.Y = -MaxSector;\n            if (m_targetSector.Z < -MaxSector) m_targetSector.Z = -MaxSector;\n\n            if (m_targetSector.X > MaxSector) m_targetSector.X = MaxSector;\n            if (m_targetSector.Y > MaxSector) m_targetSector.Y = MaxSector;\n            if (m_targetSector.Z > MaxSector) m_targetSector.Z = MaxSector;\n        }\n\n        //  Moves and rotates player by specified vector and angles\n        public void MoveAndRotate(Vector3 moveIndicator, Vector2 rotationIndicator, float rollIndicator, float afterburner)\n        {\n            //  Physical movement and rotation is based on constant time, therefore is indepedent of time delta\n            //  This formulas works even if FPS is low or high, or if step size is 1/10 or 1/10000\n            float amountOfMovement = MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS * 1;\n            float amountOfRotation = 0.0025f;\n            \n            if (rotationIndicator.Y != 0)\n            {\n                m_rotation.Y += rotationIndicator.Y * amountOfRotation;\n                UpdateRotation();\n            }\n\n            if (rotationIndicator.X != 0)\n            {\n                m_rotation.X += rotationIndicator.X * amountOfRotation;\n                UpdateRotation();\n            }\n            \n            moveIndicator.Y = 0;\n\n            Matrix yRotation = Matrix.CreateFromAxisAngle(Vector3.Up, m_rotation.Y);\n            Vector3 moveVector = Vector3.Transform(moveIndicator, yRotation) * amountOfMovement * m_cameraDistance;\n\n            m_position += moveVector;\n            m_target += moveVector;\n\n            UpdateSector(ref m_target, ref m_targetSector);\n            UpdateSector(ref m_position, ref m_positionSector);\n            ClampTargetSector();\n        }\n\n        public Matrix GetViewMatrixAtZero()\n        {\n            return Matrix.CreateLookAt(Vector3.Zero, Forward, Up);\n        }\n\n        public Matrix GetProjectionMatrix()\n        {\n            float nearClip = 0.1f * MySolarSystemMapCamera.SECTOR_SIZE_GAMEUNITS;\n            float farClip = 100000000 * MySolarSystemMapCamera.SECTOR_SIZE_GAMEUNITS;\n            return Matrix.CreatePerspectiveFieldOfView(MyCamera.FieldOfView, MyCamera.ForwardAspectRatio, nearClip, farClip);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/SolarSystem/MySolarSystemMapData.cs",
    "content": "﻿using System.Collections;\nusing System.Collections.Generic;\nusing System.Linq;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Utils;\nusing KeenSoftwareHouse.Library.Collections;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.AppCode.Game.Missions;\nusing SharpDX.Toolkit;\n\nnamespace MinerWars.AppCode.Game.SolarSystem\n{\n    abstract class MySolarSystemMapEntityBase\n    {\n    }\n\n    enum MySolarSystemEntityEnum\n    {\n        Sun,\n        Orbit,\n\n        // Important objects\n        StaticAsteroid, // Important asteroid\n        VoxelAsteroid, // Important voxel asteroid\n        Player,\n        LargeShipIcon, // Important large ship\n        OutpostIcon, // Important outpost\n\n        LargeShip,\n\n        DustField,\n        AsteroidField,\n        DebrisField,\n\n        FactionMap,\n        FactionInfo,\n        AreaBorderLine,\n    }\n\n    class MySolarSystemMapEntity : MySolarSystemMapEntityBase\n    {\n        public MyMwcVector3Int Sector { get; private set; }\n\n        // Position in sector [km]\n        public Vector3 PositionInSector { get; private set; }\n\n        // Entity radius [km]\n        public float Radius { get; private set; }\n\n        public string Name { get; private set; }\n        public Color Color { get; private set; }\n\n        public MySolarSystemEntityEnum EntityType { get; private set; }\n\n        public object EntityData { get; set; }\n\n        public MySolarSystemMapEntity(MyMwcVector3Int sector, Vector3 positionInSector, float radius, string name, MySolarSystemEntityEnum entityType, Color color)\n        {\n            //System.Diagnostics.Debug.Assert(Math.Abs(positionInSector.X) <= MyBgrCubeConsts.SECTOR_SIZE / 2 && Math.Abs(positionInSector.Y) <= MyBgrCubeConsts.SECTOR_SIZE / 2 && Math.Abs(positionInSector.Z) <= MyBgrCubeConsts.SECTOR_SIZE / 2, \"Position is out of sector!\");\n            MinerWars.AppCode.Game.Utils.MyUtils.AssertIsValid(positionInSector);\n            Sector = sector;\n            PositionInSector = positionInSector;\n            Radius = radius;\n            Name = name;\n            Color = color;\n            EntityType = entityType;\n        }\n\n        public MySolarSystemMapEntity(MyMwcVector3Int sector, Vector3 positionInSector, float radius, string name, MySolarSystemEntityEnum entityType)\n            : this(sector, positionInSector, radius, name, entityType, Color.White)\n        {\n        }\n    }\n\n    class MySolarSystemMapNavigationMark\n    {\n        public const float RADIUS = 40f;\n        public const float SCALE_DISTANCE_FROM = 1000f;\n\n        public MyMwcVector3Int Sector { get; private set; }        \n        public string Name { get; private set; }        \n        public Color Color { get; private set; }\n        public MyMissionID? MissionID { get; private set; }\n        public MyTransparentMaterialEnum Texture { get; private set; }\n        public bool DrawVerticalLine { get; set; }\n        public float Importance { get; set; }\n        public bool Visible { get; set; }\n        public Vector4 VerticalLineColor;\n        public string Description;\n\n        private bool m_isMouseOverPrevious;\n        private bool m_isMouseOver;\n        private Vector3 m_worldPosition;\n        private float m_actualRenderedSize;\n        private Vector2 m_screenPosition;\n        private int m_offsetIndex;\n        public HUD.MyHudTexturesEnum DirectionalTexture;\n        public bool IsBlinking;\n        public string Text;\n        public float TextSize = 0.7f;\n        public bool Highlight;\n        public Vector3 Offset;\n        public MyGuiFont Font;\n\n        public MySolarSystemMapNavigationMark(MyMwcVector3Int sector, string name, MyMissionID? missionID, Color color, MyTransparentMaterialEnum texture)\n        {\n            Sector = sector;            \n            Name = name;            \n            Color = color;\n            Texture = texture;\n            Importance = 1;\n            DrawVerticalLine = true;\n            MissionID = missionID;\n            Font = MyGuiManager.GetFontMinerWarsWhite();\n        }\n\n        public MySolarSystemMapNavigationMark(MyMwcVector3Int sector, string name) :\n            this(sector, name, null, MyHudConstants.MISSION_MARKER_COLOR, MyTransparentMaterialEnum.SolarMapNavigationMark)\n        {\n        }\n\n        private bool IsVisible(float distance)\n        {\n            if (Importance >= 1) return true;\n\n            float visibilityDistance = Importance * 180;\n            return visibilityDistance > distance;\n        }\n\n        public void Update(MySolarSystemMapCamera camera)\n        {\n            m_isMouseOverPrevious = m_isMouseOver;\n            m_isMouseOver = false;\n\n            UpdateWorldPosition(camera);\n\n            Vector3 objToCamera = m_worldPosition;\n            float dist = objToCamera.Length();\n            Visible = IsVisible(dist);\n\n            if (Vector3.Dot(camera.Forward, objToCamera) >= 0 && Visible)\n            {\n                UpdateRenderedSizeAndOffsetPosition();\n                // we must use offset, because we need mark to be upper to other icons\n                //m_worldPosition += camera.Up * m_actualRenderedSize * 4 * m_offsetIndex;                \n                m_worldPosition += new Vector3(0f, 1f, 0f) * m_actualRenderedSize * 4 * m_offsetIndex;                \n\n                m_screenPosition = GetScreenPosition(camera, m_worldPosition);\n                Vector2 topLeft = GetScreenPosition(camera, m_worldPosition + camera.Left * m_actualRenderedSize + camera.Up * m_actualRenderedSize);\n                Vector2 bottomRight = GetScreenPosition(camera, m_worldPosition - camera.Left * m_actualRenderedSize - camera.Up * m_actualRenderedSize);\n\n\n                m_isMouseOver = MyGuiManager.MouseCursorPosition.X >= topLeft.X && MyGuiManager.MouseCursorPosition.X <= bottomRight.X &&\n                                MyGuiManager.MouseCursorPosition.Y >= topLeft.Y && MyGuiManager.MouseCursorPosition.Y <= bottomRight.Y;\n            }\n\n            if (m_isMouseOverPrevious != m_isMouseOver)\n            {\n                MyAudio.AddCue2D(MySoundCuesEnum.GuiMouseOver);\n            }\n        }\n\n        public bool IsMouseOver()\n        {\n            return m_isMouseOver;\n        }\n\n        public Vector3 WorldPosition\n        {\n            get { return m_worldPosition; } \n        }\n\n        public Vector2 ScreenPosition\n        {\n            get { return m_screenPosition; } \n        }\n\n        public float RenderedSize\n        {\n            get { return m_actualRenderedSize; }\n        }\n\n        public void UpdateOffsetIndex(int offsetIndex)\n        {\n            m_offsetIndex = offsetIndex;\n        }\n\n        private void UpdateWorldPosition(MySolarSystemMapCamera camera)\n        {\n            MyMwcVector3Int sectorOffset;\n            sectorOffset.X = Sector.X - camera.TargetSector.X;\n            sectorOffset.Y = Sector.Y - camera.TargetSector.Y;\n            sectorOffset.Z = Sector.Z - camera.TargetSector.Z;\n\n            m_worldPosition = MySolarMapRenderer.MillionKmToGameUnits(MySolarSystemUtils.SectorsToMillionKm(sectorOffset)) +\n                /*new Vector3(0f, RADIUS * m_offsetIndex, 0f) + */camera.CameraToTarget - camera.Target;\n        }\n\n        private Vector2 GetScreenPosition(MySolarSystemMapCamera camera, Vector3 worldPosition)\n        {\n            Vector3 target = SharpDXHelper.ToXNA(MyCamera.Viewport.Project(SharpDXHelper.ToSharpDX(worldPosition), SharpDXHelper.ToSharpDX(camera.GetProjectionMatrix()), SharpDXHelper.ToSharpDX(camera.GetViewMatrixAtZero()), SharpDXHelper.ToSharpDX(Matrix.Identity)));\n            Vector2 projected2Dpoint = new Vector2(target.X, target.Y);\n            return MyGuiManager.GetNormalizedCoordinateFromScreenCoordinate(projected2Dpoint);\n        }\n\n        private void UpdateRenderedSizeAndOffsetPosition()\n        {\n            m_actualRenderedSize = MySolarSystemUtils.CalculateDistanceUnscalingTo(\n                m_worldPosition, MySolarSystemMapNavigationMark.RADIUS, MySolarSystemMapNavigationMark.SCALE_DISTANCE_FROM);            \n        }\n    }\n\n    class MySolarSystemMapNavigationMarks : IEnumerable<KeyValuePair<MyMwcVector3Int, List<MySolarSystemMapNavigationMark>>>\n    {\n        private Dictionary<MyMwcVector3Int, List<MySolarSystemMapNavigationMark>> m_navigationMarks;\n\n        public MySolarSystemMapNavigationMarks()\n        {\n            m_navigationMarks = new Dictionary<MyMwcVector3Int, List<MySolarSystemMapNavigationMark>>();            \n        }\n\n        public void Add(MySolarSystemMapNavigationMark navigationMark)\n        {\n            if (!m_navigationMarks.ContainsKey(navigationMark.Sector))\n            {\n                m_navigationMarks[navigationMark.Sector] = new List<MySolarSystemMapNavigationMark>();\n            }\n            m_navigationMarks[navigationMark.Sector].Add(navigationMark);\n            UpdateOffsetsInSector(navigationMark.Sector);\n\n            Sort();\n        }\n\n        private void Sort()\n        {\n            m_navigationMarks = m_navigationMarks.OrderBy(n => n.Value.Max(i => i.Importance)).ToDictionary(k => k.Key, e => e.Value);\n        }\n\n        public void Remove(MySolarSystemMapNavigationMark navigationMark)\n        {\n            if (m_navigationMarks.ContainsKey(navigationMark.Sector))\n            {\n                m_navigationMarks[navigationMark.Sector].Remove(navigationMark);\n                UpdateOffsetsInSector(navigationMark.Sector);\n            }            \n        }\n\n        private void UpdateOffsetsInSector(MyMwcVector3Int sector)\n        {\n            for (int i = 0; i < m_navigationMarks[sector].Count; i++)\n            {\n                m_navigationMarks[sector][i].UpdateOffsetIndex(i);\n            }\n        }\n        public MySolarSystemMapNavigationMark GetMostImportant()\n        {\n            return m_navigationMarks.Values.SelectMany(n => n).OrderByDescending(n => n.Importance).FirstOrDefault();\n        }\n        public IEnumerator<KeyValuePair<MyMwcVector3Int, List<MySolarSystemMapNavigationMark>>> GetEnumerator()\n        {\n            return m_navigationMarks.GetEnumerator();\n        }\n\n        IEnumerator IEnumerable.GetEnumerator()\n        {\n            return GetEnumerator();\n        }\n\n        public bool Contains(MyMwcVector3Int sector)\n        {\n            return m_navigationMarks.ContainsKey(sector);\n        }\n    }\n\n    class MySolarSystemMapSectorData\n    {\n        public MyMwcVector3Int SectorPosition;\n\n        // Areas define occurence of entities\n        // For now, sector can have only one area\n        public MySolarSystemAreaEnum? Area;\n\n        // Should be 1 in the center of area. On area border should be close to 0\n        public float AreaInfluenceMultiplier = 0;\n\n        // Generated entities (no need to be there all - for solar map, there could be only very large asteroids)\n        public List<MySolarSystemMapEntity> Entities;\n\n        /// <summary>\n        /// Minimal entity size, smaller entities weren't generated.\n        /// Sector may not contain all entities (especially small onces).\n        /// </summary>\n        public float MinimalEntitySize { get; private set; }\n\n        public MySolarSystemMapSectorData(MyMwcVector3Int sectorPosition, float fromEntitySize)\n        {\n            SectorPosition = sectorPosition;\n            Entities = new List<MySolarSystemMapEntity>();\n            //AreaData = new MySolarSystemAreaData();\n            MinimalEntitySize = fromEntitySize;\n        }\n    }\n\n    class MyImportantSolarObject\n    {\n        public MyTemplateGroupEnum TemplateGroup;\n        public MySolarSystemMapNavigationMark NavigationMark;\n    }\n\n    class MySolarSystemMapData\n    {\n        public List<MySolarSystemMapEntity> Entities { get; private set; }\n        public List<MySolarSystemAreaEnum> Areas { get; private set; }\n        public MySolarSystemMapNavigationMarks NavigationMarks { get; private set; }\n\n        public List<MyImportantSolarObject> ImportantObjects { get; private set; }\n\n        public LRUCache<MyMwcVector3Int, MySolarSystemMapSectorData> SectorData { get; private set; }\n\n        public List<MySolarAreaBorderLine> AreasBorderLines { get; private set; }\n\n        public MySolarSystemMapData(int sectorCacheCapacity)\n        {\n            Entities = new List<MySolarSystemMapEntity>();\n            Areas = new List<MySolarSystemAreaEnum>();\n            SectorData = new LRUCache<MyMwcVector3Int, MySolarSystemMapSectorData>(sectorCacheCapacity);\n            NavigationMarks = new MySolarSystemMapNavigationMarks();\n            ImportantObjects = new List<MyImportantSolarObject>();\n            AreasBorderLines = new List<MySolarAreaBorderLine>();\n        }\n    }\n\n    struct MySolarAreaBorderLine\n    {\n        public Vector3 AreaCenter;\n        public float DistanceHigh;\n        public float DistanceLow;\n        public float Spread;\n        public Vector4 col;\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/SolarSystem/MySolarSystemRandomExtensions.cs",
    "content": "﻿\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.CommonLIB.AppCode.Utils;\n\nnamespace MinerWars.AppCode.Game.SolarSystem\n{\n    public static class MySolarSystemRandomExtensions\n    {\n        /// <summary>\n        /// Return random value from 0 to 1 in normal distribution\n        /// </summary>\n        /// <param name=\"random\"></param>\n        /// <returns></returns>\n        //public static float FloatNormal(this Random random)\n        //{\n          //  return MyMwcUtils.NormalDistribution(random.Float());\n        //}\n\n        public static float Float(this Random random)\n        {\n            return (float)random.NextDouble();\n        }\n\n        public static float Float(this Random random, float min, float max)\n        {\n            return MathHelper.Lerp(min, max, (float)random.NextDouble());\n        }\n\n        public static Vector3 Direction(this Random random)\n        {\n            return MyMwcUtils.Normalize(new Vector3(Float(random, -1, 1), Float(random, -1, 1), Float(random, -1, 1)));\n        }\n\n        /// <typeparam name=\"T\">Must be enum</typeparam>\n        public static T Enum<T>(this Random random)\n        {\n            var values = System.Enum.GetValues(typeof(T));\n            return (T)random.Item(values);\n        }\n\n        public static object Item(this Random random, Array array)\n        {\n            int i = random.Next(0, array.Length);\n            \n            //This is BUG in .NET? It happens once in 50000000 tries\n            if (i == array.Length)\n                i -= 1;\n\n            return array.GetValue(i);\n        }\n\n        public static T Item<T>(this Random random, List<T> list)\n        {\n            int i = random.Next(0, list.Count);\n            //This is BUG in .NET? It happens once in 50000000 tries\n            if (i == list.Count)\n                i -= 1;\n\n            return list[i];\n        }\n\n        /// <summary>\n        /// Get random direction near base direction\n        /// </summary>\n        /// <param name=\"random\"></param>\n        /// <param name=\"baseDirection\"></param>\n        /// <param name=\"maxAngleDeviation\">Max angle deviation in radians PI/2 is right angle</param>\n        /// <returns></returns>\n        public static Vector3 Direction(this Random random, Vector3 baseDirection, float maxAngleDeviation)\n        {\n            Vector3 otherDir = Vector3.Up;\n            if (baseDirection == otherDir || baseDirection == -otherDir)\n            {\n                otherDir = Vector3.Left;\n            }\n\n            Vector3 planar1 = Vector3.Cross(baseDirection, otherDir);\n            Vector3 planar2 = Vector3.Cross(baseDirection, planar1);\n            float maxDist = (float) Math.Tan(maxAngleDeviation);\n\n            return MyMwcUtils.Normalize(baseDirection + planar1 * random.Float(-maxDist, maxDist) + planar2 * random.Float(-maxDist, maxDist));\n        }\n\n        public static float FloatCubic(this Random random, float min, float max)\n        {\n            return MathHelper.SmoothStep(min, max, (float)random.NextDouble());\n        }\n\n        public static Vector3 Vector(this Random random, float halfSize)\n        {\n            return random.Vector(new Vector3(halfSize, halfSize, halfSize));\n        }\n\n        public static Vector3 Vector(this Random random, Vector3 halfSize)\n        {\n            return random.Vector(-halfSize, halfSize);\n        }\n\n        public static Vector3 Vector(this Random random, Vector3 min, Vector3 max)\n        {\n            float x = MathHelper.Lerp(min.X, max.X, random.Float());\n            float y = MathHelper.Lerp(min.Y, max.Y, random.Float());\n            float z = MathHelper.Lerp(min.Z, max.Z, random.Float());\n            return new Vector3(x, y, z);\n        }\n\n        public static Color Color(this Random random, Color min, Color max)\n        {\n            Color c = new Color();\n            c.R = (byte)MathHelper.Lerp(min.R, max.R, Float(random));\n            c.G = (byte)MathHelper.Lerp(min.G, max.G, Float(random));\n            c.B = (byte)MathHelper.Lerp(min.B, max.B, Float(random));\n            c.A = (byte)MathHelper.Lerp(min.A, max.A, Float(random));\n            return c;\n        }\n\n        public static Color Color(this Random random, Color baseColor, float variation)\n        {\n            Vector3 min = baseColor.ToVector3() * (1 - variation);\n            Vector3 max = baseColor.ToVector3() * (1 + variation);\n\n            return Color(random, new Color(min), new Color(max));\n        }\n\n        public static Vector3 PointInSphere(this Random random, Vector3 center, float radius)\n        {\n            return center + Direction(random) * radius * Float(random);\n        }\n\n        public static Vector3 PointOnOrbit(this Random random, float orbitRadius, float orbitRadiusDev, float angleRad, float angleRadDev)\n        {\n            float ang = MathHelper.Lerp(angleRad - angleRadDev, angleRad + angleRadDev, Float(random));\n            Vector3 orbitPoint = new Vector3((float)Math.Sin(ang) * orbitRadius, 0, (float)Math.Cos(ang) * orbitRadius);\n            Vector3 toOrbit = MyMwcUtils.Normalize(orbitPoint);\n            return orbitPoint + MyMwcUtils.Normalize(toOrbit * Float(random, -1, 1) + Vector3.Up * Float(random, -1, 1)) * orbitRadiusDev * Float(random);\n        }\n\n        /// <summary>\n        /// Each element of array contains chance to be selected, sum of elements must be 1\n        /// </summary>\n        /// <param name=\"percentageArray\"></param>\n        /// <returns>index</returns>\n        public static int PercentageIndex(this Random random, float[] percentageArray)\n        {\n            float rnd = random.Float();\n            float sum = 0;\n            for (int i = 0; i < percentageArray.Length; i++)\n            {\n                sum += percentageArray[i];\n                if (sum > rnd)\n                    return i;\n            }\n            return percentageArray.Length - 1;\n        }\n\n        public static T PercentageIndex<T>(this Random random, Dictionary<T, float> percentage)\n        {\n            float rnd = random.Float();\n            float sum = 0;\n            foreach (var i in percentage)\n            {\n                sum += i.Value;\n                if (sum >= rnd)\n                {\n                    return i.Key;\n                }\n            }\n            System.Diagnostics.Debug.Assert(true, \"Percentage sum is not 1\");\n            return default(T);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/SolarSystem/MySolarSystemUtils.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWarsMath;\nusing MinerWars.CommonLIB.AppCode.Utils;\n\nnamespace MinerWars.AppCode.Game.SolarSystem\n{\n    static class MySolarSystemUtils\n    {\n        #region SECTORS_KM\n\n        public static float SectorsToKm(int sector)\n        {\n            return sector * MyBgrCubeConsts.SECTOR_SIZE;\n        }\n\n        public static Vector3 SectorsToKm(MyMwcVector3Int sector)\n        {\n            return new Vector3(SectorsToKm(sector.X), SectorsToKm(sector.Y), SectorsToKm(sector.Z));\n        }\n\n        public static int KmToSectors(float position)\n        {\n            return (int)Math.Round(position / MyBgrCubeConsts.SECTOR_SIZE);\n        }\n\n        public static MyMwcVector3Int KmToSectors(Vector3 positionKm)\n        {\n            return new MyMwcVector3Int(KmToSectors(positionKm.X), KmToSectors(positionKm.Y), KmToSectors(positionKm.Z));\n        }\n\n        public static MyMwcVector3Int KmToSectors(Vector3 positionKm, out Vector3 offsetKm)\n        {\n            MyMwcVector3Int sector = KmToSectors(positionKm);\n            offsetKm = (positionKm - SectorsToKm(sector));\n\n            // This is necessary due to float rounding errors\n            offsetKm = Vector3.Clamp(offsetKm, new Vector3(-MyMwcSectorConstants.SECTOR_SIZE_HALF / 1000), new Vector3(MyMwcSectorConstants.SECTOR_SIZE_HALF / 1000));\n\n            return sector;\n        }\n\n        #endregion\n\n        #region SECTORS_MILLION_KM\n\n        public static float SectorsToMillionKm(int sector)\n        {\n            return SectorsToKm(sector) / MyBgrCubeConsts.MILLION_KM;\n        }\n\n        public static Vector3 SectorsToMillionKm(MyMwcVector3Int sector)\n        {\n            return new Vector3(SectorsToMillionKm(sector.X), SectorsToMillionKm(sector.Y), SectorsToMillionKm(sector.Z));\n        }\n\n        public static int MillionKmToSectors(float positionMillKm)\n        {\n            return KmToSectors(positionMillKm * MyBgrCubeConsts.MILLION_KM);\n        }\n\n        public static MyMwcVector3Int MillionKmToSectors(Vector3 positionMillKm)\n        {\n            return new MyMwcVector3Int(MillionKmToSectors(positionMillKm.X), MillionKmToSectors(positionMillKm.Y), MillionKmToSectors(positionMillKm.Z));\n        }\n\n        public static MyMwcVector3Int MillionKmToSectors(Vector3 positionMillKm, out Vector3 offsetKm)\n        {\n            MyMwcVector3Int sector = MillionKmToSectors(positionMillKm);\n            offsetKm = (positionMillKm - SectorsToMillionKm(sector)) * MyBgrCubeConsts.MILLION_KM;\n\n            // This is necessary due to float rounding errors\n            offsetKm = Vector3.Clamp(offsetKm, new Vector3(-MyMwcSectorConstants.SECTOR_SIZE_HALF / 1000), new Vector3(MyMwcSectorConstants.SECTOR_SIZE_HALF / 1000));\n\n            return sector;\n        }\n\n        #endregion\n\n        #region UNSCALING DISTANCE RADIUS\n        public static float CalculateDistanceUnscaling(Vector3 origin, float radiusWhen1mFromCamera)\n        {\n            return (origin).Length() * radiusWhen1mFromCamera;\n        }\n\n        public static float CalculateDistanceUnscalingFrom(Vector3 origin, float radius, float fixedSizeDistance)\n        {\n            float cameraDist = (origin).Length();\n            if (cameraDist > fixedSizeDistance)\n            {\n                radius *= cameraDist / fixedSizeDistance;\n            }\n            return radius;\n        }\n\n        public static float CalculateDistanceUnscalingTo(Vector3 origin, float radius, float fixedSizeDistance)\n        {\n            float cameraDist = (origin).Length();\n            if (cameraDist < fixedSizeDistance)\n            {\n                radius *= cameraDist / fixedSizeDistance;\n            }\n            return radius;\n        }\n        #endregion\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/SolarSystem/MyStaticSectorGenerator.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Voxels;\nusing MinerWars.AppCode.Game.Managers.EntityManager.Entities;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.Generics;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing Microsoft.Xna.Framework;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing SysUtils.Utils;\nusing MinerWars.AppCode.Game.Voxels;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.Prefabs;\nusing MinerWars.AppCode.Game.Gameplay;\nusing MinerWars.AppCode.Game.World.Global;\n\nnamespace MinerWars.AppCode.Game.SolarSystem\n{\n    /*\n   \n\n\n\n    // Generates sector data based on inserted values, ignores solar areas\n    class MyStaticSectorGenerator\n    {\n        /// <summary>\n        /// Deviation of vein in every step.\n        /// Higher value means vein will be more curved.\n        /// </summary>\n        public const float VeinAngleDeviation = MathHelper.Pi / 8; // 22.5 degrees\n\n        /// <summary>\n        /// Maximum level of vein subdivision\n        /// </summary>\n        public const int MaxLevel = 1;\n\n        /// <summary>\n        /// Base thickness of secondary material vein.\n        /// </summary>\n        public const float BaseSecondaryMaterialThickness = 40;\n\n        /// <summary>\n        /// Defines how many times we try find not colliding position for entity\n        /// </summary>\n        public const int MaxCollisionsTestsForEntity = 20;\n\n        Random m_rnd;\n        \n        List<Tuple<float, Vector3>> m_entities = new List<Tuple<float, Vector3>>();\n\n        static List<int> m_sizes;\n        \n\n        List<MyMwcObjectBuilder_Base> m_sectorObjects = new List<MyMwcObjectBuilder_Base>();\n\n        \n\n        static MyStaticSectorGenerator()\n        {\n            m_sizes = new List<int>(15);\n            //m_asteroids = new List<MyMwcObjectBuilder_StaticAsteroid_TypesEnum>(5);\n            MyMwcObjectBuilder_StaticAsteroid.GetAsteroidSizes(m_sizes);\n        }\n\n        public MyStaticSectorGenerator(int seed)\n        {\n            m_rnd = new Random(seed);\n        }\n                        \n        public MyMwcObjectBuilder_Sector GenerateObjectBuilders(MySectorObjectCounts sectorObjects)\n        {\n            m_sectorObjects.Clear();\n            m_entities.Clear();\n\n            // Large objects first\n            for (int i = 0; i < sectorObjects.Voxels512; i++) AddVoxelAsteroid(512);\n            for (int i = 0; i < sectorObjects.StaticAsteroidLarge; i++) AddStaticAsteroid(m_rnd.Next(2000, 11000));\n            for (int i = 0; i < sectorObjects.Voxels256; i++) AddVoxelAsteroid(256);\n            for (int i = 0; i < sectorObjects.StaticAsteroidMedium; i++) AddStaticAsteroid(m_rnd.Next(100, 1100));\n            for (int i = 0; i < sectorObjects.Voxels128; i++) AddVoxelAsteroid(128);\n            for (int i = 0; i < sectorObjects.Voxels64; i++) AddVoxelAsteroid(64);\n            for (int i = 0; i < sectorObjects.StaticAsteroidSmall; i++) AddStaticAsteroid(m_rnd.Next(10, 60));\n\n            for (int i = 0; i < sectorObjects.Motherships; i++) AddMothership();\n            for (int i = 0; i < sectorObjects.StaticDebrisFields; i++) AddDebrisField();\n\n            return new MyMwcObjectBuilder_Sector()\n            {\n                SectorObjects = m_sectorObjects,\n            };\n        }\n\n                          \n        public MyMwcObjectBuilder_Sector GenerateEntities(MySectorObjectCounts sectorObjects, List<MySolarSystemMapEntity> entities)\n        {\n            m_sectorObjects.Clear();\n            m_entities.Clear();\n\n            // Large objects first\n            for (int i = 0; i < sectorObjects.Voxels512; i++) AddVoxelAsteroid(512);\n            for (int i = 0; i < sectorObjects.StaticAsteroidLarge; i++) AddStaticAsteroid(m_rnd.Next(2000, 11000));\n            for (int i = 0; i < sectorObjects.Voxels256; i++) AddVoxelAsteroid(256);\n            for (int i = 0; i < sectorObjects.StaticAsteroidMedium; i++) AddStaticAsteroid(m_rnd.Next(100, 1100));\n            for (int i = 0; i < sectorObjects.Voxels128; i++) AddVoxelAsteroid(128);\n            for (int i = 0; i < sectorObjects.Voxels64; i++) AddVoxelAsteroid(64);\n            for (int i = 0; i < sectorObjects.StaticAsteroidSmall; i++) AddStaticAsteroid(m_rnd.Next(10, 60));\n\n            for (int i = 0; i < sectorObjects.Motherships; i++) AddMothership();\n            for (int i = 0; i < sectorObjects.StaticDebrisFields; i++) AddDebrisField();\n\n            return new MyMwcObjectBuilder_Sector()\n            {\n                SectorObjects = m_sectorObjects,\n            };\n        }         \n\n        public Vector3? FindObjectPosition(int sizeInMeters)\n        {\n            Vector3 halfSize = new Vector3(MyMwcSectorConstants.SECTOR_SIZE / 2.0f - sizeInMeters);\n            bool collide = true;\n            int tryCount = 0;\n            Vector3 positionInSector = new Vector3();\n            while (collide && tryCount < MaxCollisionsTestsForEntity)\n            {\n                positionInSector = m_rnd.Vector(halfSize);\n                collide = Collide(positionInSector, sizeInMeters);\n                tryCount++;\n            }\n            return collide ? null : (Vector3?)positionInSector;\n        }\n\n        private void AddMothership()\n        {\n            const int size = 500;\n            var pos = FindObjectPosition(size);\n            if (pos.HasValue)\n            {\n                var shipType = m_rnd.Enum<MyMwcObjectBuilder_PrefabLargeShip_TypesEnum>();\n                MyMwcObjectBuilder_Prefab_AppearanceEnum appearance = m_rnd.Enum<MyMwcObjectBuilder_Prefab_AppearanceEnum>();\n\n                var ship = new MyMwcObjectBuilder_PrefabLargeShip(shipType, appearance, new MyMwcVector3Short(0, 0, 0), m_rnd.Vector(1), MyGameplayConstants.MAX_HEALTH_MAX, m_rnd.FloatNormal() * MyGameplayConstants.MAX_HEALTH_MAX, \"Abandoned large ship\", 0);\n                var prefabs = new List<MyMwcObjectBuilder_PrefabBase>();\n                prefabs.Add(ship);\n                var container = new MyMwcObjectBuilder_PrefabContainer(0, MyMwcObjectBuilder_PrefabContainer_TypesEnum.INSTANCE, prefabs, 0, m_rnd.Enum<MyMwcObjectBuilder_FactionEnum>(), null);\n                container.PositionAndOrientation = new MyMwcPositionAndOrientation(pos.Value, Vector3.Forward, Vector3.Up);\n                m_sectorObjects.Add(container);\n                m_entities.Add(new Tuple<float, Vector3>(size, pos.Value));\n            }\n\n\n            //MyMwcObjectBuilder_PrefabLargeShip builder = new MyMwcObjectBuilder_PrefabLargeShip(MyMwcObjectBuilder_PrefabLargeShip_TypesEnum.FOURTH_REICH_MOTHERSHIP, MyMwcObjectBuilder_Prefab_AppearanceEnum.\n            //MyMwcObjectBuilder_PrefabContainer container = new MyMwcObjectBuilder_PrefabContainer(0, MyMwcObjectBuilder_PrefabContainer_TypesEnum.INSTANCE, \n\n            //MyMwcObjectBuilder_LargeShip objectBuilder = new MyMwcObjectBuilder_LargeShip();\n            //objectBuilder.ShipType = GetRandomLargeShipType();\n        }\n\n        private void AddDebrisField()\n        {\n            const int size = 50;\n            var pos = FindObjectPosition(size);\n            if (pos.HasValue)\n            {\n                MyMwcObjectBuilder_LargeDebrisField objectBuilder = new MyMwcObjectBuilder_LargeDebrisField(MyMwcObjectBuilder_LargeDebrisField_TypesEnum.Debris84);\n                objectBuilder.PositionAndOrientation = new MyMwcPositionAndOrientation(pos.Value, m_rnd.Vector(1), m_rnd.Vector(1));\n\n                m_sectorObjects.Add(objectBuilder);\n                m_entities.Add(new Tuple<float, Vector3>(size, pos.Value));\n            }\n        }\n\n        public bool Collide( Vector3 position, float sizeInMeters, float spacing = 1.0f)\n        {\n            foreach (var e in m_entities)\n            {\n                if ((e.Item2 - position).Length() < (e.Item1 + sizeInMeters) * spacing)\n                {\n                    return true;\n                }\n            }\n            return false;\n        }\n\n   \n    }\n*/\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/SolarSystem/MyTemplateGroups.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.Utils;\n\nnamespace MinerWars.AppCode.Game.SolarSystem\n{\n    enum MyTemplateGroupEnum\n    {\n        RandomStations, \n        MiningStations,\n        Madelyn\n    }\n\n    class MyTemplateGroups\n    {\n        static Dictionary<int, MyMwcVector3Int> TemplateGroups = new Dictionary<int, MyMwcVector3Int>();\n\n        static MyTemplateGroups()\n        {\n            TemplateGroups.Add((int)MyTemplateGroupEnum.RandomStations, new MyMwcVector3Int(0, 0, 0));\n            TemplateGroups.Add((int)MyTemplateGroupEnum.MiningStations, new MyMwcVector3Int(0, 0, 1));\n            TemplateGroups.Add((int)MyTemplateGroupEnum.Madelyn, new MyMwcVector3Int(1, 0, 1));\n        }\n\n        public static MyMwcVector3Int GetGroupSector(MyTemplateGroupEnum group)\n        {\n            return TemplateGroups[(int)group];\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/SolarSystem/Renderer/MySolarMapRenderer.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.SolarSystem;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.AppCode.Game.Textures;\nusing SysUtils.Utils;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Models;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.HUD;\nusing MinerWars.CommonLIB.AppCode.Generics;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.VideoMode;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.AppCode.Game.Effects;\nusing MinerWars.AppCode.Game.Render;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.AppCode.Game.Managers;\n\nusing SharpDX.Direct3D9;\nusing MinerWars.AppCode.Game.Utils.VertexFormats;\nusing SharpDX.Toolkit.Graphics;\nusing SharpDX.Toolkit;\n\nnamespace MinerWars.AppCode.Game.SolarSystem\n{\n    class MySolarMapRenderer\n    {\n        MyRender.MyRenderSetup m_setup = new MyRender.MyRenderSetup();\n        MyRender.MyRenderSetup m_backup = new MyRender.MyRenderSetup();\n        bool m_loaded = false;\n\n        VertexBuffer m_gridVertexBuffer;\n        VertexBuffer m_highlightVertexBuffer;\n        MyTexture2D m_texture;\n\n        MySolarSystemMapCamera m_currentCamera;\n        MySolarSystemMapData m_currentSolarMapData;\n\n        /// <summary>\n        /// How many sectors render near camera target\n        /// </summary>\n        const float SECTOR_RENDER_HALFSIZE = 2;\n        const int MAX_SOLAR_TEXTS = 512;\n        MyObjectsPoolSimple<MyHudText> m_texts = new MyObjectsPoolSimple<MyHudText>(MAX_SOLAR_TEXTS);\n\n        public MyMwcVector3Int? PlayerSector { get; set; }\n\n        /// <summary>\n        /// Sector size in game units\n        /// </summary>\n        //public const float SECTOR_SIZE_GAMEUNITS = 0.0001f;\n        public const int SECTORS_PER_QUAD = 1001;\n\n        // Dont draw object to close to camera\n        const float minDistFromCamera = 0.0001f;\n\n        public static float SectorToGameUnits(float sector)\n        {\n            return sector * MySolarSystemMapCamera.SECTOR_SIZE_GAMEUNITS;\n        }\n\n        public static Vector3 SectorToGameUnits(MyMwcVector3Int sector)\n        {\n            return new Vector3(sector.X * MySolarSystemMapCamera.SECTOR_SIZE_GAMEUNITS, sector.Y * MySolarSystemMapCamera.SECTOR_SIZE_GAMEUNITS, sector.Z * MySolarSystemMapCamera.SECTOR_SIZE_GAMEUNITS);\n        }\n\n        public static Vector3 SectorToMillionKm(MyMwcVector3Int sector)\n        {\n            return MySolarMapRenderer.GameUnitsToMillionKm(MySolarMapRenderer.SectorToGameUnits(sector));\n        }\n\n        public static Vector3 SectorToKm(MyMwcVector3Int sector)\n        {\n            return SectorToMillionKm(sector) * MyBgrCubeConsts.MILLION_KM;\n        }\n\n        public static float GameUnitsToSector(float gameUnits)\n        {\n            return (float)Math.Round(gameUnits / MySolarSystemMapCamera.SECTOR_SIZE_GAMEUNITS);\n        }\n\n        public static MyMwcVector3Int GameUnitsToSector(Vector3 gameUnits)\n        {\n            return new MyMwcVector3Int((int)GameUnitsToSector(gameUnits.X), (int)GameUnitsToSector(gameUnits.Y), (int)GameUnitsToSector(gameUnits.Z));\n        }\n\n        public static float GameUnitsToKm(float gameUnits)\n        {\n            return gameUnits * MyBgrCubeConsts.SECTOR_SIZE / MySolarSystemMapCamera.SECTOR_SIZE_GAMEUNITS;\n        }\n\n        public static float MillionKmToGameUnits(float millionKm)\n        {\n            return millionKm * MyBgrCubeConsts.MILLION_KM / MyBgrCubeConsts.SECTOR_SIZE * MySolarSystemMapCamera.SECTOR_SIZE_GAMEUNITS;\n        }\n\n        public static float GameUnitsToMillionKm(float gameUnits)\n        {\n            return gameUnits / (MyBgrCubeConsts.MILLION_KM / MyBgrCubeConsts.SECTOR_SIZE * MySolarSystemMapCamera.SECTOR_SIZE_GAMEUNITS);\n        }\n\n        public static float KmToGameUnits(float km)\n        {\n            return km / MyBgrCubeConsts.SECTOR_SIZE * MySolarSystemMapCamera.SECTOR_SIZE_GAMEUNITS;\n        }\n\n        public static Vector3 KmToGameUnits(Vector3 positionInKm)\n        {\n            return new Vector3(KmToGameUnits(positionInKm.X), KmToGameUnits(positionInKm.Y), KmToGameUnits(positionInKm.Z));\n        }\n\n        public static Vector3 MillionKmToGameUnits(Vector3 millionKm)\n        {\n            return new Vector3(MillionKmToGameUnits(millionKm.X), MillionKmToGameUnits(millionKm.Y), MillionKmToGameUnits(millionKm.Z));\n        }\n\n        public static Vector3 GameUnitsToMillionKm(Vector3 gameUnits)\n        {\n            return new Vector3(GameUnitsToMillionKm(gameUnits.X), GameUnitsToMillionKm(gameUnits.Y), GameUnitsToMillionKm(gameUnits.Z));\n        }\n\n        static Vector3 EntityPosition(MyMwcVector3Int sector, Vector3 positionInSector, MySolarSystemMapCamera camera)\n        {\n            MyMwcVector3Int sectorOffset;\n            sectorOffset.X = sector.X - camera.TargetSector.X;\n            sectorOffset.Y = sector.Y - camera.TargetSector.Y;\n            sectorOffset.Z = sector.Z - camera.TargetSector.Z;\n\n            return MillionKmToGameUnits(MySolarSystemUtils.SectorsToMillionKm(sectorOffset)) + KmToGameUnits(positionInSector) + camera.CameraToTarget - camera.Target;\n        }\n\n        static Vector3 EntityPosition(MySolarSystemMapEntity entity, MySolarSystemMapCamera camera)\n        {\n            return EntityPosition(entity.Sector, entity.PositionInSector, camera);            \n        }\n\n        private static Vector3[] GRID_HEIGHT_COLORS = new Vector3[]\n        {\n            new Vector3(0.95f, 0.85f, 0.1f),\n\t        new Vector3(1f, 0.5f, 0f),\n\t        new Vector3(1f, 0.1f, 0f),\n\t        new Vector3(0.6f, 0.35f, 1f),\n\t        new Vector3(0.05f, 0.9f, 0.95f), // 10.000 sectorsf, light blue\n        };\n\n        public MySolarMapRenderer()\n        {\n            SetRenderSetup();\n        }\n\n        static MySolarMapRenderer()\n        {\n            MyRender.RegisterRenderModule(MyRenderModuleEnum.SolarAreaBorders, \"Show Solar areas borders\", DrawHandler, MyRenderStage.DebugDraw, false);\n        }\n\n        public static void DrawHandler() { }\n\n        void SetRenderSetup()\n        {\n            m_setup.CallerID = MyRenderCallerEnum.SolarMap;\n\n            m_setup.EnabledModules = new HashSet<MyRenderModuleEnum>();\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.AnimatedParticlesPrepare);\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.TransparentGeometry);\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.DrawCoordSystem);\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.BackgroundCube);\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.TestField);\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.AnimatedParticles);\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.Lights);\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.TransparentGeometryForward);\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.Projectiles);\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.DebrisField);\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.SolarObjects);\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.SolarAreaBorders);\n            m_setup.EnabledModules.Add(MyRenderModuleEnum.SolarMapGrid);\n            \n\n            m_setup.EnabledPostprocesses = new HashSet<MyPostProcessEnum>();\n\n\n            m_setup.EnableHDR = false;\n            m_setup.EnableSun = false;\n            m_setup.EnableSmallLights = false;\n            m_setup.EnableEnvironmentMapping = false;\n\n            m_setup.RenderElementsToDraw = new List<MyRender.MyRenderElement>();\n            m_setup.TransparentRenderElementsToDraw = new List<MyRender.MyRenderElement>();\n        }\n\n        public void LoadContent()\n        {\n            MyMwcLog.WriteLine(\"MyHudSectorBorder.LoadContent() - START\");\n            MyMwcLog.IncreaseIndent();\n\n            m_loaded = false;\n\n            m_texture = MyTextureManager.GetTexture<MyTexture2D>(\"Textures2\\\\Models\\\\Prefabs\\\\v01\\\\v01_holo_grid_orange_de\");\n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyHudSectorBorder.LoadContent() - END\");\n        }\n\n        public void UnloadContent()\n        {\n            if (m_gridVertexBuffer != null)\n            {\n                m_gridVertexBuffer.Dispose();\n                m_gridVertexBuffer = null;\n            }\n            if (m_highlightVertexBuffer != null)\n            {\n                m_highlightVertexBuffer.Dispose();\n                m_highlightVertexBuffer = null;\n            }\n            m_loaded = false;\n        }\n\n        /// <summary>\n        /// Calculates linear interpolated blend\n        /// </summary>\n        /// <param name=\"lower\">When value is lower or equal to lower, blend is 0</param>\n        /// <param name=\"upper\">When value is higher or equal to upper, blend is 1</param>\n        /// <param name=\"value\">Value to interpolate</param>\n        /// <returns>Alpha from 0.0 to 1.0</returns>\n        private float CalculateBlend(float lower, float upper, float value)\n        {\n            float val = (value - lower) / (upper - lower);\n            if (val > 1)\n                val = 1;\n            else if (val < 0)\n                val = 0;\n\n            return val;\n        }\n\n        /// <summary>\n        /// Adds the test.\n        /// </summary>\n        /// <param name=\"position\">Position in game units.</param>\n        /// <param name=\"str\"></param>\n        /// <param name=\"alignment\"></param>\n        /// <param name=\"scale\"></param>\n        /// <param name=\"offset\"></param>\n        private void AddText(Vector3 position, string str, MyGuiDrawAlignEnum alignment, float scale, Color color, MyGuiFont font, Vector2 offset = new Vector2())\n        {\n            if (String.IsNullOrWhiteSpace(str))\n            {\n                return;\n            }\n                 \n            Vector3 objToCamera = position - MyCamera.Position;\n            if (Vector3.Dot(MyCamera.ForwardVector, objToCamera) < 0)\n            {\n                return;\n            }\n\n            Vector3 target = SharpDXHelper.ToXNA(MyCamera.Viewport.Project(SharpDXHelper.ToSharpDX(position), SharpDXHelper.ToSharpDX(MyCamera.ProjectionMatrix), SharpDXHelper.ToSharpDX(MyCamera.ViewMatrix), SharpDXHelper.ToSharpDX(Matrix.Identity)));\n            Vector2 projectedPoint2D = new Vector2(target.X, target.Y) + offset / 1080 * MyGuiManager.GetFullscreenRectangle().Height;\n\n            MyHudText text = m_texts.Allocate();\n            if (text != null)\n            {\n                text.Start(font, projectedPoint2D, color, scale * 1.0f, alignment);\n                text.Append(str);\n            }      \n        }        \n\n        private void AddPointBillboardUnscaling(MyTransparentMaterialEnum material, Vector4 color, Vector3 origin, float radiusWhen1mFromCamera, float angle, int priority = 0, bool colorize = true)\n        {\n            float radius = MySolarSystemUtils.CalculateDistanceUnscaling(origin, radiusWhen1mFromCamera);\n            MyTransparentGeometry.AddPointBillboard(material, color, origin, radius, angle, priority, colorize);\n        }\n\n        private void AddPointBillboardOrientedUnscaling(MyTransparentMaterialEnum material, Vector4 color, Vector3 origin, Vector3 left, Vector3 up, float radiusWhen1mFromCamera, float angle, int priority = 0)\n        {\n            float radius = MySolarSystemUtils.CalculateDistanceUnscaling(origin, radiusWhen1mFromCamera);\n            MyTransparentGeometry.AddBillboardOriented(material, color, origin, left, up, radius, priority);\n        }\n\n        /// <summary>\n        /// Adds point billboard, when billboard is far from camera, it stops shrinking.\n        /// </summary>\n        private void AddPointBillboardUnscalingFromDistance(MyTransparentMaterialEnum material, Vector4 color, Vector3 origin, float radius, float angle, float fixedSizeDistance, int priority = 0, bool colorize = true)\n        {\n            colorize = false;\n            radius = MySolarSystemUtils.CalculateDistanceUnscalingFrom(origin, radius, fixedSizeDistance);\n            MyTransparentGeometry.AddPointBillboard(material, color, origin, radius, angle, priority, colorize);\n        }\n\n        private void AddLineBillboardUnscaling(MyTransparentMaterialEnum material,\n            Vector4 color, Vector3 origin, Vector3 directionNormalized, float length, float thicknessWhen1mFromCamera, float minDistFromCamera, int priority = 0)\n        {\n            Vector3 linePtB = origin + directionNormalized * length;\n            Vector3 cameraPos = Vector3.Zero;\n\n            float dist = MyUtils.GetPointLineDistance(ref origin, ref linePtB, ref cameraPos);\n            if (dist < minDistFromCamera)\n            {\n                return;\n            }\n\n            //float thickness = (m_setup.CameraPosition.Value - origin).Length() * thicknessWhen1mFromCamera;\n            float thickness = dist * thicknessWhen1mFromCamera;\n            thickness = Math.Max(0.0000005f, thickness);\n            MyTransparentGeometry.AddLineBillboard(material, color, origin, directionNormalized, length, thickness, priority);\n        }\n\n        Vector3 GetPositionRelativeToCamera(double x, double y, double z)\n        {\n            x -= m_currentCamera.TargetSector.X * (double)MySolarSystemMapCamera.SECTOR_SIZE_GAMEUNITS;\n            y -= m_currentCamera.TargetSector.Y * (double)MySolarSystemMapCamera.SECTOR_SIZE_GAMEUNITS;\n            z -= m_currentCamera.TargetSector.Z * (double)MySolarSystemMapCamera.SECTOR_SIZE_GAMEUNITS;\n\n            x -= m_currentCamera.Target.X;\n            y -= m_currentCamera.Target.Y;\n            z -= m_currentCamera.Target.Z;\n\n            Vector3 result = new Vector3((float)x, (float)y, (float)z);\n            result += m_currentCamera.CameraToTarget;\n            return result;\n        }\n\n        void AddOrbit(float distFromSunInKm)\n        {\n            AddOrbit(distFromSunInKm, Color.Turquoise.ToVector4());\n        }\n\n        void AddOrbit(float distFromSunInKm, Vector4 color)\n        {\n            float distFromSunInSolarMapUnits = KmToGameUnits(distFromSunInKm);\n            int stepCount = 157; // FastSin depends on this value\n            float step = MathHelper.TwoPi / stepCount;\n\n            double x = MyMath.FastSin(0) * distFromSunInSolarMapUnits;\n            double z = MyMath.FastCos(0) * distFromSunInSolarMapUnits;\n            Vector3 prevPos = GetPositionRelativeToCamera(x, 0, z);\n\n            for (int i = 1; i <= stepCount; i++)\n            {\n                float angle = MathHelper.TwoPi / stepCount * i;\n\n                x = MyMath.FastSin(angle) * distFromSunInSolarMapUnits;\n                z = MyMath.FastCos(angle) * distFromSunInSolarMapUnits;\n                Vector3 pos = GetPositionRelativeToCamera(x, 0, z);\n\n                if (MyMwcUtils.HasValidLength(pos - prevPos))\n                    DrawLine(prevPos, pos, 0.002f, color);\n                //float dist = (pos - prevPos).Length();\n                //AddLineBillboardUnscaling(MyTransparentMaterialEnum.SolarMapOrbitLine, color, prevPos, MyMwcUtils.Normalize(pos - prevPos), dist, 0.002f, minDistFromCamera, 1);\n                prevPos = pos;\n            }\n        }\n\n        void AddSun(MySolarSystemMapEntity entity)\n        {\n            // Size of billboard is 2.85x bigger than sun in it's center\n            const float billboardSizeRatio = 1.85f;\n\n            Vector3 pos = EntityPosition(entity, m_currentCamera);\n\n            // Sun billboard size won't decrease when further than 150 million km\n            float sunDistanceMinSize = MillionKmToGameUnits(150);\n            AddPointBillboardUnscalingFromDistance(MyTransparentMaterialEnum.SolarMapSun, Vector4.One, pos, KmToGameUnits(entity.Radius) * billboardSizeRatio, 0, sunDistanceMinSize, 0, false);\n            AddText(pos, entity.Name, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_TOP, 0.6f, Color.Yellow, MyGuiManager.GetFontMinerWarsWhite());\n        }\n\n        void AddVerticalMarker(Vector3 position, Vector4 color)\n        {\n            //const float verticalMarkerLength = 10000;\n            //const float minDist = 0;\n\n            //AddLineBillboardUnscaling(MyTransparentMaterialEnum.SolarMapZeroPlaneLine, color, position, Vector3.Up, verticalMarkerLength, 0.005f, minDist, 3);\n            //AddLineBillboardUnscaling(MyTransparentMaterialEnum.SolarMapZeroPlaneLine, color * Color.Turquoise.ToVector4() * 0.4f, position, -Vector3.Up, verticalMarkerLength, 0.005f, minDist, -5);\n        }\n\n        //void AddPlayerMarker()\n        //{\n        //    if (PlayerSector.HasValue)\n        //    {\n        //        Vector3 pos = EntityPosition(PlayerSector.Value, Vector3.Zero, m_currentCamera);\n\n        //        AddVerticalMarker(pos);\n        //        AddIcon(pos, 30, MyTransparentMaterialEnum.SolarMapSmallShip, Color.White, MySession.PlayerShip.Name, 1000);\n        //    }\n        //}\n\n        private void AddLargeShip(MySolarSystemMapEntity entity)\n        {\n            Vector3 pos = EntityPosition(entity, m_currentCamera);\n            const float radius = 30;\n            AddIcon(pos, radius, MyTransparentMaterialEnum.SolarMapLargeShip, Color.White, entity.Name, null, 1000, false, Vector3.Zero);\n        }\n\n        private void AddOutpost(MySolarSystemMapEntity entity)\n        {\n            Vector3 pos = EntityPosition(entity, m_currentCamera);\n            const float radius = 30;\n            AddIcon(pos, radius, MyTransparentMaterialEnum.SolarMapOutpost, Color.White, entity.Name, null, 1000, false, Vector3.Zero);\n        }\n\n        void AddAsteroidField(MySolarSystemMapEntity entity)\n        {\n            Vector3 areaPos = EntityPosition(entity, m_currentCamera);\n            float areaRadius = KmToGameUnits(entity.Radius);\n\n            float blendSizeLower = SectorToGameUnits(10000);\n            float blendSizeUpper = SectorToGameUnits(150000);\n            float minAsteroidFieldDist = SectorToGameUnits(20000);\n            float maxAsteroidFieldDist = SectorToGameUnits(200000);\n\n            // Size of billboards in fraction of whole size\n            const float billboardSizeRatio = 0.2f;\n            const int billboardsPerAsteroidField = 25;\n\n            float radius = billboardSizeRatio * areaRadius;\n\n            Random rnd = new Random(entity.Sector.X ^ entity.Sector.Y ^ entity.Sector.Z ^ (int)entity.PositionInSector.X ^ (int)entity.PositionInSector.Y ^ (int)entity.PositionInSector.Z);\n\n            for (int i = 0; i < billboardsPerAsteroidField; i++)\n            {\n                Vector3 dir = rnd.Direction();\n                float maxDist = areaRadius - radius;\n                Vector3 pos = areaPos + dir * maxDist;\n                float dist = pos.Length();\n\n                float alphaLower = CalculateBlend(minAsteroidFieldDist, minAsteroidFieldDist + blendSizeLower, dist);\n                float alphaUpper = 1 - CalculateBlend(maxAsteroidFieldDist, maxAsteroidFieldDist + blendSizeUpper, dist);\n                float alpha = alphaLower * alphaUpper;\n                if (alpha < float.Epsilon)\n                {\n                    return;\n                }\n                Vector4 color = entity.Color.ToVector4();\n                color *= alpha;\n                //color.W = alpha;\n                \n                /*if (dist < minAsteroidFieldDist || dist > maxAsteroidFieldDist)\n                {\n                    return;\n                }*/\n\n                MyTransparentGeometry.AddBillboardOriented(MyTransparentMaterialEnum.SolarMapAsteroidField, color, pos, m_currentCamera.Up, m_currentCamera.Left, radius, -2);\n            }\n        }\n\n        void AddAreaTexts(List<MySolarSystemAreaEnum> areas)\n        {\n            if (!MyRender.IsModuleEnabled(MyRenderStage.DebugDraw, MyRenderModuleEnum.SolarAreaBorders)) return;\n            foreach (var areaEnum in areas)\n            {\n                var area = MySolarSystemConstants.Areas[areaEnum];\n                Vector3 position = EntityPosition(new MyMwcVector3Int(), area.GetCenter(), m_currentCamera);\n                AddText(position, area.Name, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, 0.6f, Color.White, MyGuiManager.GetFontMinerWarsWhite());\n            }\n        }\n\n        void AddDustField(MySolarSystemMapEntity entity)\n        {\n            Vector3 pos = EntityPosition(entity, m_currentCamera);\n            float radius = KmToGameUnits(entity.Radius);\n            \n            MyTransparentGeometry.AddBillboardOriented(MyTransparentMaterialEnum.SolarMapDust, entity.Color.ToVector4() * 0.3f, pos, m_currentCamera.Up, m_currentCamera.Left, radius, -2, true);\n        }\n\n        void AddFactionMap(MySolarSystemMapEntity entity)\n        {\n            Vector3 pos = EntityPosition(entity, m_currentCamera);\n            float radius = KmToGameUnits(entity.Radius);\n\n            float height = Math.Abs(pos.Y);\n            float lower = 2 * MySolarSystemMapCamera.SECTOR_SIZE_GAMEUNITS;\n            float upper = 1000 * MySolarSystemMapCamera.SECTOR_SIZE_GAMEUNITS;\n            float blend = CalculateBlend(lower, upper, height);\n\n            //pos.Y = 0; // MillionKmToGameUnits(0.1f);\n            Vector4 c = entity.Color.ToVector4();\n            c.W = blend;\n            c *= c.W;\n            c.W *= 0.5f;\n            MyTransparentGeometry.AddBillboardOriented(MyTransparentMaterialEnum.SolarMapFactionMap, c, pos, Vector3.Forward, Vector3.Left, radius, -3);\n        }\n\n        void AddIcon(Vector3 pos, float radius, MyTransparentMaterialEnum texture, Vector4 color, string textDown, string textUp, float textSize, bool highlight, Vector3 offset, MyGuiFont font = null, float? importance = null)\n        {\n            AddIcon(pos, radius, texture, new Color(color), textDown, textUp, textSize, highlight, offset, font, importance);\n        }\n\n        void AddIcon(Vector3 pos, float radius, MyTransparentMaterialEnum texture, Color color, string textDown, string textUp, float textSize, bool highlight, Vector3 offset, MyGuiFont font = null, float? importance = null)\n        {\n            if (font == null)\n                font = MyGuiManager.GetFontMinerWarsWhite();\n\n            float scaledRadius = MySolarSystemUtils.CalculateDistanceUnscalingTo(pos, radius, MySolarSystemMapNavigationMark.SCALE_DISTANCE_FROM);\n\n            float textScale = 1 / MySolarSystemUtils.CalculateDistanceUnscalingFrom(pos, 1 / 0.7f, MySolarSystemMapNavigationMark.SCALE_DISTANCE_FROM);// 1;// radius / scaledRadius / 2;\n\n            Vector4 iconColor = Vector4.One;\n            if (highlight)\n            {\n                iconColor *= 1.5f;\n            }\n\n            textSize = 1.35f;\n            var position = pos + offset * scaledRadius + Vector3.Up / 2 * scaledRadius;\n            MyTransparentGeometry.AddBillboardOriented(texture, iconColor, position, m_currentCamera.Up, m_currentCamera.Left, scaledRadius, 0200 + (int)importance);\n\n            if (textUp != null)\n            {\n                AddText(position, textUp, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_TOP, textSize * textScale, color, font, new Vector2(0, -90) * textScale);\n            }\n\n            if (textDown != null)\n            {\n                AddText(position, textDown, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_TOP, textSize * textScale, color, font, new Vector2(0, -60) * textScale);\n            }\n        }\n\n        void AddFactionInfo(MySolarSystemMapEntity entity)\n        {\n            Vector3 pos = EntityPosition(entity, m_currentCamera);\n            const float radius = 20; // hard coded radius\n\n            MyTransparentMaterialEnum texture = (MyTransparentMaterialEnum)entity.EntityData;\n\n            AddIcon(pos, radius, texture, entity.Color, entity.Name, null, 0.7f, false, new Vector3(0,1,0));\n        }\n\n        void AddAsteroid(MySolarSystemMapEntity entity)\n        {\n            Vector3 pos = EntityPosition(entity, m_currentCamera);\n            float radius = KmToGameUnits(entity.Radius);\n            \n            float dist = GameUnitsToKm((pos).Length());\n            \n            const float dist1km = 3000;\n            float distForSize = entity.Radius * dist1km;\n\n            const float dist1kmBlendStart = 2000;\n            float distForSizeBlendStart = entity.Radius * dist1kmBlendStart;\n            \n            if (dist > distForSize || dist < minDistFromCamera)\n            {\n                //return;\n            }\n\n            float alpha = MathHelper.Clamp(1 - ((dist - distForSizeBlendStart) / (distForSize - distForSizeBlendStart)), 0, 1);\n\n            float distToTarget = (pos - m_currentCamera.CameraToTarget).Length();\n            alpha *= CalculateBlend(SectorToGameUnits(SECTOR_RENDER_HALFSIZE), SectorToGameUnits(1), distToTarget);\n\n            if (alpha <= float.Epsilon)\n            {\n                return;\n            }\n\n            float asteroidSize = radius / MySolarSystemMapCamera.SECTOR_SIZE_GAMEUNITS / 2 + 0.01f;\n            AddIcon(pos, asteroidSize / 10000, MyTransparentMaterialEnum.SolarMapAsteroid, new Vector4(Vector3.One * alpha, alpha), null, null, 0.0001f, false, Vector3.Zero);\n\n            double absY = pos.Y + m_currentCamera.Position.Y + m_currentCamera.PositionSector.Y * MySolarSystemMapCamera.SECTOR_SIZE_GAMEUNITS;\n\n            Vector4 color = Vector4.One;\n            if (absY < 0)\n            {\n                color = Color.Brown.ToVector4();\n            }\n\n            // Make alpha to power of 2 to make lines fade better\n            alpha *= alpha;\n            color *= alpha;\n            color.W = alpha;\n\n            if (absY != 0)\n            {\n                AddLineBillboardUnscaling(MyTransparentMaterialEnum.SolarMapZeroPlaneLine, color, pos, Vector3.Up, Math.Abs((float)-absY), 0.002f, 0);\n            }\n        }\n\n        void AddDirectionNavigator(MyHudTexturesEnum texture, Vector3 position, string text, Vector4 color)\n        {         \n            Vector3 cameraToObject = position - MyCamera.Position;\n            Vector2 projectedPoint2D;\n            Vector3 target = SharpDXHelper.ToXNA(MyCamera.Viewport.Project(SharpDXHelper.ToSharpDX(position), SharpDXHelper.ToSharpDX(MyCamera.ProjectionMatrix), SharpDXHelper.ToSharpDX(MyCamera.ViewMatrix), SharpDXHelper.ToSharpDX(Matrix.Identity)));\n\n            // if the target is behind the camera, flip coordinates along center of the screen\n            if (Vector3.Dot(MyCamera.ForwardVector, cameraToObject) <= 0)\n            {\n                projectedPoint2D.X = MyMinerGame.ScreenSize.X / 2 - (target.X - MyMinerGame.ScreenSize.X / 2);\n                projectedPoint2D.Y = MyMinerGame.ScreenSize.Y / 2 - (target.Y - MyMinerGame.ScreenSize.Y / 2);\n            }\n            else\n            {\n                projectedPoint2D.X = target.X;\n                projectedPoint2D.Y = target.Y;\n            }\n\n            // if the position is visible, don't draw the direction navigator\n            if (projectedPoint2D.X >= 0f &&\n                projectedPoint2D.X <= MyMinerGame.ScreenSize.X &&\n                projectedPoint2D.Y >= 0f &&\n                projectedPoint2D.Y <= MyMinerGame.ScreenSize.Y)\n            {\n                return;\n            }\n\n            var textureCoords = MyHud.GetTextureCoord(texture);\n            Vector2 textureSize = new Vector2(MyHud.Texture.Width, MyHud.Texture.Height);\n\n            var sourceRectangle = new Rectangle((int)(textureCoords.Offset.X * textureSize.X), (int)(textureCoords.Offset.Y * textureSize.Y), (int)(textureCoords.Size.X * textureSize.X), (int)(textureCoords.Size.Y * textureSize.Y));\n\n\n            // calculate direction from nonfixed coords\n            MyTexture2D directionTexture = MyHud.Texture;\n            Vector2 origin = new Vector2(sourceRectangle.Height / 2f, sourceRectangle.Width / 2f);\n            Vector2 direction = Vector2.Normalize(projectedPoint2D - new Vector2(MyMinerGame.ScreenSizeHalf.X, MyMinerGame.ScreenSizeHalf.Y));\n\n            // clip direction indicator position to screen coord            \n            if (projectedPoint2D.X < 0f + origin.X) projectedPoint2D.X = 0f + origin.X;\n            if (projectedPoint2D.X > MyMinerGame.ScreenSize.X - origin.X) projectedPoint2D.X = MyMinerGame.ScreenSize.X - origin.X;\n            if (projectedPoint2D.Y < 0f + origin.Y) projectedPoint2D.Y = 0f + origin.Y;\n            if (projectedPoint2D.Y > MyMinerGame.ScreenSize.Y - origin.Y) projectedPoint2D.Y = MyMinerGame.ScreenSize.Y - origin.Y;\n\n            // calculate rotation of direciton texture\n            double rotation = Math.Atan2(direction.Y, direction.X) + MathHelper.PiOver2;\n\n            MyGuiManager.DrawSpriteBatch(directionTexture, projectedPoint2D, sourceRectangle, new Color(color), (float)rotation, origin, 1f, SharpDX.Toolkit.Graphics.SpriteEffects.None, 0f);\n\n            // draw text\n            Vector2 normalizedProjectedPoint2D = MyGuiManager.GetNormalizedCoordinateFromScreenCoordinate(projectedPoint2D);\n            Vector2 textOffset = new Vector2(0, 0.05f);\n            MyGuiManager.DrawString(MyGuiManager.GetFontMinerWarsWhite(), new StringBuilder(text),\n                                    normalizedProjectedPoint2D + textOffset, 0.7f, new Color(color),\n                                    MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER);   \n        }\n\n        void AddNavigationMark(MySolarSystemMapNavigationMark navigationMark)\n        {\n            if (navigationMark.Visible)\n            {\n                Vector4 color = navigationMark.IsMouseOver() || navigationMark.Highlight ?\n                                    navigationMark.Color.ToVector4() * 1.5f:\n                                    navigationMark.Color.ToVector4();\n\n                if (navigationMark.DrawVerticalLine)\n                {\n                    AddVerticalMarker(navigationMark.WorldPosition, navigationMark.VerticalLineColor);\n                }\n\n\n                bool showIcon = true;\n                if (navigationMark.IsBlinking)\n                {\n                    if (MyMinerGame.TotalTimeInMilliseconds % 800 < 80 || (MyMinerGame.TotalTimeInMilliseconds % 800 > 160 && MyMinerGame.TotalTimeInMilliseconds % 800 < 160 + 80))\n                    {\n                        showIcon = false;\n                    }\n                }\n\n                if (showIcon)\n                {\n                    AddIcon(navigationMark.WorldPosition, MySolarSystemMapNavigationMark.RADIUS, navigationMark.Texture, color, navigationMark.Name, navigationMark.Text, navigationMark.TextSize, navigationMark.Highlight || navigationMark.IsMouseOver(), navigationMark.Offset, navigationMark.Font, navigationMark.Importance);\n                }\n            \n                if (navigationMark.DrawVerticalLine)\n                {\n                    AddDirectionNavigator(navigationMark.DirectionalTexture, navigationMark.WorldPosition, navigationMark.Name, color);\n                }\n            }\n        }\n\n        void AddNavigationMarks(MySolarSystemMapNavigationMarks navigationMarks)\n        {\n            foreach (var sectorNavigationMarksKvp in navigationMarks)\n            {\n                foreach (var navigationMark in sectorNavigationMarksKvp.Value)\n                {\n                    AddNavigationMark(navigationMark);\n                }\n            }            \n        }\n\n        void AddAreasBorders(List<MySolarAreaBorderLine> lines)\n        {\n            if (!MyRender.IsModuleEnabled(MyRenderStage.DebugDraw, MyRenderModuleEnum.SolarAreaBorders)) return;\n            foreach (MySolarAreaBorderLine line in lines)\n            {\n                //calculate area border lines\n                float stepSize = MathHelper.TwoPi / 157f;\n\n                Vector3 lastPosClockHigh, lastPosCounterHigh, lastPosClockLow, lastPosCounterLow, lastPosCounterOrbit, lastPosClockOrbit;\n                Vector3 PosClockHigh, PosClockLow, PosClockOrbit, PosCounterLow, PosCounterOrbit, PosCounterHigh;\n                if (line.Spread < 1)\n                {\n                    int stepsCount = (int)(157 * line.Spread / 2f);\n                    float r = KmToGameUnits(line.AreaCenter.Length());\n\n                    float initAngle = (float)Math.Atan2(KmToGameUnits(line.AreaCenter).Z, -KmToGameUnits(line.AreaCenter).X) - MathHelper.PiOver2;\n\n                    double x = MyMath.FastSin(initAngle) * r;\n                    double z = MyMath.FastCos(initAngle) * r;\n                    lastPosClockOrbit = lastPosCounterOrbit = GetPositionRelativeToCamera(x, 0, z);\n                    lastPosClockHigh = new Vector3((float)x, 0f, (float)z) * ((KmToGameUnits(line.DistanceHigh) / r) + 1); lastPosClockHigh = GetPositionRelativeToCamera(lastPosClockHigh.X, lastPosClockHigh.Y, lastPosClockHigh.Z);\n                    lastPosClockLow = new Vector3((float)x, 0f, (float)z) * (-(KmToGameUnits(line.DistanceLow) / r) + 1); lastPosClockLow = GetPositionRelativeToCamera(lastPosClockLow.X, lastPosClockLow.Y, lastPosClockLow.Z);\n                    lastPosCounterHigh = lastPosClockHigh;\n                    lastPosCounterLow = lastPosClockLow;\n\n                    float cos = MyMath.FastCos(stepSize);\n                    float sin = MyMath.FastSin(stepSize);\n                    float cosN = MyMath.FastCos(-stepSize);\n                    float sinN = MyMath.FastSin(-stepSize);\n\n\n                    for (int stepI = 1; stepI <= stepsCount; stepI++)\n                    {\n                        float angle = initAngle + stepI * -stepSize;\n                        x = MyMath.FastSin(angle) * r;\n                        z = MyMath.FastCos(angle) * r;\n                        PosClockOrbit = GetPositionRelativeToCamera(x, 0, z);\n                        //clockwise\n                        //PosClockOrbit = new Vector3(lastPosClockOrbit.X * cos - lastPosClockOrbit.Y * sin, 0, lastPosClockOrbit.X * sin + lastPosClockOrbit.Y * cos);\n                        PosClockHigh = new Vector3((float)x, 0f, (float)z) * (((KmToGameUnits(line.DistanceHigh) / r) * (stepsCount - stepI) / stepsCount) + 1); PosClockHigh = GetPositionRelativeToCamera(PosClockHigh.X, PosClockHigh.Y, PosClockHigh.Z);\n                        PosClockLow = new Vector3((float)x, 0f, (float)z) * (-((KmToGameUnits(line.DistanceLow) / r) * (stepsCount - stepI) / stepsCount) + 1); PosClockLow = GetPositionRelativeToCamera(PosClockLow.X, PosClockLow.Y, PosClockLow.Z);\n                        //DrawLine(lastPosClockOrbit, PosClockOrbit, 0.004f, line.col);\n                        //draw line from lastPos to Pos (low & high)\n                        if(MyMwcUtils.HasValidLength(KmToGameUnits(PosClockHigh) - KmToGameUnits(lastPosClockHigh)))\n                            DrawLine(KmToGameUnits(lastPosClockHigh), KmToGameUnits(PosClockHigh), 0.003f, line.col);\n                        if(MyMwcUtils.HasValidLength(KmToGameUnits(PosClockLow) - KmToGameUnits(lastPosClockLow)))\n                            DrawLine(KmToGameUnits(lastPosClockLow), KmToGameUnits(PosClockLow), 0.003f, line.col);\n\n                        lastPosClockHigh = PosClockHigh;\n                        lastPosClockLow = PosClockLow;\n                        lastPosClockOrbit = PosClockOrbit;\n\n                        \n                        //counter-clockwise\n                        angle = initAngle + stepI * stepSize;\n                        x = MyMath.FastSin(angle) * r;\n                        z = MyMath.FastCos(angle) * r;\n                        PosCounterOrbit = GetPositionRelativeToCamera(x, 0, z);\n                        //clockwise\n                        //PosClockOrbit = new Vector3(lastPosClockOrbit.X * cos - lastPosClockOrbit.Y * sin, 0, lastPosClockOrbit.X * sin + lastPosClockOrbit.Y * cos);\n                        PosCounterHigh = new Vector3((float)x, 0f, (float)z) * (((KmToGameUnits(line.DistanceHigh) / r) * (stepsCount - stepI) / stepsCount) + 1); PosCounterHigh = GetPositionRelativeToCamera(PosCounterHigh.X, PosCounterHigh.Y, PosCounterHigh.Z);\n                        PosCounterLow = new Vector3((float)x, 0f, (float)z) * (-((KmToGameUnits(line.DistanceLow) / r) * (stepsCount - stepI) / stepsCount) + 1); PosCounterLow = GetPositionRelativeToCamera(PosCounterLow.X, PosCounterLow.Y, PosCounterLow.Z);\n                        //DrawLine(lastPosCounterOrbit, PosCounterOrbit, 0.004f, line.col);\n                        //draw line from lastPos to Pos (low & high)\n                        if (MyMwcUtils.HasValidLength(KmToGameUnits(PosCounterHigh) - KmToGameUnits(lastPosCounterHigh)))\n                            DrawLine(KmToGameUnits(lastPosCounterHigh), KmToGameUnits(PosCounterHigh), 0.003f, line.col);\n                        if (MyMwcUtils.HasValidLength(KmToGameUnits(PosCounterLow) - KmToGameUnits(lastPosCounterLow)))\n                            DrawLine(KmToGameUnits(lastPosCounterLow), KmToGameUnits(PosCounterLow), 0.003f, line.col);\n\n                        lastPosCounterHigh = PosCounterHigh;\n                        lastPosCounterLow = PosCounterLow;\n                        lastPosCounterOrbit = PosCounterOrbit;\n                    }\n                }\n                else\n                {\n                    AddOrbit(line.AreaCenter.Length() + line.DistanceHigh, line.col);\n                    AddOrbit(line.AreaCenter.Length() - line.DistanceLow, line.col);\n                }\n            }\n        }\n\n        private void DrawLine(Vector3 pos1, Vector3 pos2, float thickness, Vector4 color){\n            float dist = (pos2 - pos1).Length();\n            AddLineBillboardUnscaling(MyTransparentMaterialEnum.SolarMapZeroPlaneLine, color, pos1, MyMwcUtils.Normalize(pos2 - pos1), dist, thickness, 0, 1);\n        }\n\n        void AddBillboards(List<MySolarSystemMapEntity> entities)\n        {\n            const float maxAsteroidsPerSector = 64;\n            int numAsteroids = 0;\n            int numDustFields = 0;\n            int numAsteroidFields = 0;\n            //m_asteroidRandom = new Random(0);\n\n            BoundingFrustum frustum = new BoundingFrustum(m_setup.ViewMatrix.Value * m_setup.ProjectionMatrix.Value);\n\n            foreach (var e in entities)\n            {\n                if (e.EntityType != MySolarSystemEntityEnum.FactionMap && e.EntityType != MySolarSystemEntityEnum.Orbit)\n                {\n                    Vector3 pos = EntityPosition(e, m_currentCamera);\n\n                    var distance = Vector3.Distance(m_currentCamera.Target, pos);\n                    if (e.EntityType == MySolarSystemEntityEnum.DustField || e.EntityType == MySolarSystemEntityEnum.AsteroidField)\n                    {\n                        if (distance > 2000)\n                        {\n                            continue;\n                        }\n                    }\n\n                    if (frustum.Contains(pos) != ContainmentType.Contains)\n                    {\n                        continue;\n                    }\n                }\n\n                switch (e.EntityType)\n                {\n                    case MySolarSystemEntityEnum.Sun:\n                        AddSun(e);\n                        break;\n\n                    case MySolarSystemEntityEnum.Orbit:\n                        AddOrbit(e.Radius);\n                        break;\n\n                    case MySolarSystemEntityEnum.DustField:\n                        AddDustField(e);\n                        numDustFields++;\n                        break;\n\n                    case MySolarSystemEntityEnum.AsteroidField:\n                        AddAsteroidField(e);\n                        numAsteroidFields++;\n                        break;\n\n                    case MySolarSystemEntityEnum.StaticAsteroid:\n                        if(numAsteroids < maxAsteroidsPerSector)\n                        {\n                            numAsteroids++;\n                            AddAsteroid(e);\n                        }\n                        break;\n\n                    case MySolarSystemEntityEnum.FactionMap:\n                        AddFactionMap(e);\n                        break;\n\n                    //case MySolarSystemEntityEnum.FactionInfo:\n                    //    AddFactionInfo(e);\n                    //    break;\n\n                    case MySolarSystemEntityEnum.LargeShipIcon:\n                        AddLargeShip(e);\n                        break;\n\n                    case MySolarSystemEntityEnum.OutpostIcon:\n                        AddOutpost(e);\n                        break;\n                }\n            }\n        }\n\n        public void Draw(MySolarSystemMapCamera camera, MySolarSystemMapData solarData)\n        {\n            MyTransparentGeometry.ClearBillboards();\n            \n            m_currentCamera = camera;\n            m_currentSolarMapData = solarData;\n            m_setup.ViewMatrix = camera.GetViewMatrixAtZero();\n            //m_setup.ViewMatrix *= Matrix.CreateTranslation(camera.Position);\n            m_setup.CameraPosition = camera.Position;\n            float nearClip = 0.1f * MySolarSystemMapCamera.SECTOR_SIZE_GAMEUNITS;\n            float farClip = 100000000 * MySolarSystemMapCamera.SECTOR_SIZE_GAMEUNITS;\n            m_setup.ProjectionMatrix = Matrix.CreatePerspectiveFieldOfView(MyCamera.FieldOfView, MyCamera.ForwardAspectRatio, nearClip, farClip);\n            //m_setup.ProjectionMatrix = camera.GetProjectionMatrix();\n\n            MyTransparentGeometry.EnableColorize = true;\n            MyTransparentGeometry.ColorizeColor = new Color(0.8f, 0.8f, 0.8f, 0.0f);\n            MyTransparentGeometry.ColorizePlaneDistance = m_currentCamera.Position.Y + m_currentCamera.PositionSector.Y * MySolarSystemMapCamera.SECTOR_SIZE_GAMEUNITS;\n            MyTransparentGeometry.ColorizePlaneNormal = Vector3.UnitY;\n            MyRender.RegisterRenderModule(MyRenderModuleEnum.SolarMapGrid, \"Solar map grid\", DrawGrid, MyRenderStage.AlphaBlendPreHDR);\n            MyRender.PushRenderSetupAndApply(m_setup, ref m_backup);\n\n            m_texts.ClearAllAllocated();\n\n            AddBillboards(m_currentSolarMapData.Entities);\n            AddAreasBorders(m_currentSolarMapData.AreasBorderLines);\n            AddAreaTexts(m_currentSolarMapData.Areas);\n            { //Add available missions\n                AddNavigationMarks(m_currentSolarMapData.NavigationMarks);\n            }\n\n            if (MyFakes.DRAW_FACTION_AREAS_IN_SOLAR_MAP)\n            {\n                DrawFactionsDebug();\n                DrawEditedFactionDebug();\n            }\n\n            MyHudText text = m_texts.Allocate();\n            if (text != null)\n            {\n                text.Start(MyGuiManager.GetFontMinerWarsWhite(), new Vector2(\n                    MyGuiManager.GetSafeFullscreenRectangle().X + MyGuiManager.GetSafeFullscreenRectangle().Width,\n                    MyGuiManager.GetSafeFullscreenRectangle().Y + MyGuiManager.GetSafeFullscreenRectangle().Height),\n                    Color.White, 1.0f, MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_BOTTOM);\n                text.Append(m_currentCamera.TargetSector.ToString());\n            }\n\n            Vector3 pos = new Vector3(m_currentCamera.TargetSector.X, m_currentCamera.TargetSector.Y, m_currentCamera.TargetSector.Z);\n            int dist = (int)Math.Ceiling(SECTOR_RENDER_HALFSIZE);\n            for (int x = (int)pos.X - dist; x <= (int)pos.X + dist; x++)\n            {\n                int y = 0;\n                //for (int y = (int)pos.Y - dist; y <= (int)pos.Y + dist; y++)\n                {\n                    for (int z = (int)pos.Z - dist; z <= (int)pos.Z + dist; z++)\n                    {\n                        var sectorPos = new MyMwcVector3Int(x, y, z);\n                        //float minSize = (x == pos.X && y == pos.Y && z == pos.Z) ? 1.5f : 3;\n                        //float minSize = 1.5f;                        \n                        int maxEntityCount = (x == pos.X && y == pos.Y && z == pos.Z) ? 150 : 100;                        \n\n                        //MySolarSystemMapSectorData sectorData;\n                        //if (!m_currentSolarMapData.SectorData.TryGetValue(sectorPos, out sectorData))\n                        //{                            \n                        //    var g = new MySectorGenerator(MyGuiScreenSolarSystemMap.UNIVERSE_SEED);\n                        //    sectorData = g.GenerateSectorEntities(m_currentSolarMapData, sectorPos, 0, maxEntityCount);\n                        //    m_currentSolarMapData.SectorData[sectorPos] = sectorData;\n                        //}\n                        //AddBillboards(sectorData.Entities);                        \n                    }\n                }\n            }\n            \n            MyRender.Draw();\n            DrawTexts();\n            //DrawSolarDebug();\n\n            MyRender.PopRenderSetupAndRevert(m_backup);\n            MyRender.UnregisterRenderModule(MyRenderModuleEnum.SolarMapGrid);\n            //MyRender.UnregisterRenderModule(SOLAR_DEBUG_DRAW);\n            MyRender.UnregisterRenderModule(MyRenderModuleEnum.SolarObjects);\n            MyTransparentGeometry.EnableColorize = false;\n        }\n\n        private void DrawTexts()\n        {\n            if (m_texts.GetAllocatedCount() <= 0) return;\n\n            for (int i = 0; i < m_texts.GetAllocatedCount(); i++)\n            {\n                MyHudText text = m_texts.GetAllocatedItem(i);\n\n                //  Fix the scale for screen resolution\n                float fixedScale = text.Scale * MyGuiManager.GetSafeScreenScale();\n                Vector2 sizeInPixelsScaled = text.Font.MeasureString(text.GetStringBuilder(), fixedScale);\n                Vector2 screenCoord = MyGuiManager.GetAlignedCoordinate(text.Position, sizeInPixelsScaled, text.Alignement);\n\n                text.Font.DrawString(screenCoord, text.Color, text.GetStringBuilder(), fixedScale/*, text.Rotation*/);\n            }\n        }\n\n        private void DrawSunDebug(MySolarSystemMapEntity entity)\n        {\n            Matrix world = Matrix.CreateScale(KmToGameUnits(entity.Radius));\n            MyDebugDraw.DrawSphereWireframe(world, Color.Yellow.ToVector3(), 1.0f);\n        }\n\n        private void DrawSolarDebug()\n        {\n            foreach (var e in m_currentSolarMapData.Entities)\n            {\n                switch (e.EntityType)\n                {\n                    case MySolarSystemEntityEnum.Sun:\n                        DrawSunDebug(e);\n                        break;\n                }\n            }\n        }\n\n\n        void DrawEditedFactionDebug()\n        {\n            float radiusInSMU = KmToGameUnits((MySolarSystemUtils.SectorsToKm(MySolarMapAreaInput.center) - MySolarSystemUtils.SectorsToKm(MySolarMapAreaInput.point)).Length());\n            if (radiusInSMU <= 0.001)\n            {\n                return;\n            }\n            Vector3 center = KmToGameUnits(MySolarSystemUtils.SectorsToKm(MySolarMapAreaInput.center));\n\n            int stepCount = 157; // FastSin depends on this value\n            float step = MathHelper.TwoPi / stepCount;\n\n            double x = MyMath.FastSin(0) * radiusInSMU;\n            double z = MyMath.FastCos(0) * radiusInSMU;\n            Vector3 prevPos = GetPositionRelativeToCamera(x + center.X, 0, z + center.Z);\n\n            for (int i = 1; i <= stepCount; i++)\n            {\n                float angle = MathHelper.TwoPi / stepCount * i;\n\n                x = MyMath.FastSin(angle) * radiusInSMU;\n                z = MyMath.FastCos(angle) * radiusInSMU;\n                Vector3 pos = GetPositionRelativeToCamera(x + center.X, 0, z + center.Z);\n                float dist = (pos - prevPos).Length();\n                AddLineBillboardUnscaling(MyTransparentMaterialEnum.SolarMapOrbitLine, Color.Green.ToVector4(), prevPos, MyMwcUtils.Normalize(pos - prevPos), dist, 0.002f, minDistFromCamera, 1);\n                prevPos = pos;\n            }\n        }\n\n        void DrawFactionsDebug()\n        {\n            foreach (var faction in MyFactions.FactionAreas)\n            {\n                foreach (var area in faction.Value)\n                {\n                    float radiusInSMU = KmToGameUnits(area.Radius);\n                    Vector3 center = KmToGameUnits(area.Position);\n\n                    int stepCount = 157; // FastSin depends on this value\n                    float step = MathHelper.TwoPi / stepCount;\n\n                    double x = MyMath.FastSin(0) * radiusInSMU;\n                    double z = MyMath.FastCos(0) * radiusInSMU;\n                    Vector3 prevPos = GetPositionRelativeToCamera(x + center.X, 0, z + center.Z);\n\n                    for (int i = 1; i <= stepCount; i++)\n                    {\n                        float angle = MathHelper.TwoPi / stepCount * i;\n\n                        x = MyMath.FastSin(angle) * radiusInSMU;\n                        z = MyMath.FastCos(angle) * radiusInSMU;\n                        Vector3 pos = GetPositionRelativeToCamera(x + center.X, 0, z + center.Z);\n                        float dist = (pos - prevPos).Length();\n                        AddLineBillboardUnscaling(MyTransparentMaterialEnum.SolarMapOrbitLine, Color.Red.ToVector4(), prevPos, MyMwcUtils.Normalize(pos - prevPos), dist, 0.002f, minDistFromCamera, 1);\n                        prevPos = pos;\n                    }\n                }\n            }\n        }\n\n        private void DrawSolarObjects()\n        {\n            //MyRender.DrawModel(MyModels.GetModelForDraw(MySession.PlayerShip.CockpitInteriorModelEnum), m_currentCamera.GetViewMatrix(), null);\n        }\n\n        /// <summary>\n        /// \n        /// </summary>\n        /// <param name=\"scale\"></param>\n        /// <param name=\"blendInHeight\"></param>\n        /// <param name=\"blendOutHeight\">When camera height bigger than blendOutHeight, then alpha is 0</param>\n        /// <param name=\"color\"></param>\n        private void DrawGridLevel(float scale, float blendInHeight, float blendOutHeight, Vector3 color, float absHeight)\n        {       \n            const float maxGridAlpha = 0.2f;\n            float alphaIn = MathHelper.Clamp((absHeight - blendInHeight) / blendInHeight * 2, 0.0f, 1.0f);\n            float alphaOut = MathHelper.Clamp((blendOutHeight - absHeight) / blendOutHeight * 2, 0.0f, 1.0f);\n            float finalAlpha = alphaIn * alphaOut;\n\n            if (finalAlpha > 0)\n            {\n                // Draw grid\n                double s = (double)scale * MySolarSystemMapCamera.SECTOR_SIZE_GAMEUNITS;\n\n                Vector3 posSector;\n                posSector.X = m_currentCamera.PositionSector.X;\n                posSector.Y = m_currentCamera.PositionSector.Y;\n                posSector.Z = m_currentCamera.PositionSector.Z;\n                \n                Vector3 offset = m_currentCamera.CalculatePositionModulo(s);\n                offset.Y = -m_currentCamera.Position.Y - posSector.Y * MySolarSystemMapCamera.SECTOR_SIZE_GAMEUNITS;\n\n                // Near clip is not calculated exactly, just aproximately, this value is than corrected to make sure there's no clipping problems\n                const float safeCoef = 1.2f;\n\n                Matrix world = Matrix.CreateScale(scale, 1, scale) * Matrix.CreateTranslation(offset);\n                Matrix projection = Matrix.CreatePerspectiveFieldOfView(MyCamera.FieldOfView, MyCamera.ForwardAspectRatio, blendInHeight * MySolarSystemMapCamera.SECTOR_SIZE_GAMEUNITS / safeCoef, blendOutHeight * MySolarSystemMapCamera.SECTOR_SIZE_GAMEUNITS);\n\n                MyEffectSolarMapGrid effect = (MyEffectSolarMapGrid)MyRender.GetEffect(MyEffects.SolarMapGrid);\n                effect.SetWorldMatrix(world);\n                effect.SetViewProjectionMatrix(m_currentCamera.GetViewMatrixAtZero() * projection);\n\n                effect.SetColorA(color);\n                effect.SetAlpha(finalAlpha * maxGridAlpha);\n\n                effect.Begin();\n                MyMinerGame.Static.GraphicsDevice.SetStreamSource(0, m_gridVertexBuffer, 0, MyVertexFormatPositionTexture.Stride);\n                MyMinerGame.Static.GraphicsDevice.VertexDeclaration = MyVertexFormatPositionTexture.VertexDeclaration;\n                MyMinerGame.Static.GraphicsDevice.DrawPrimitives(PrimitiveType.TriangleList, 0, 2);\n\n                effect.End();\n                MyPerformanceCounter.PerCameraDraw.TotalDrawCalls++;\n\n                // Draw highlight\n                effect.SetColorA(Color.White.ToVector3());\n                effect.SetAlpha(finalAlpha);\n\n                Vector3 pos = -m_currentCamera.Position - posSector * MySolarSystemMapCamera.SECTOR_SIZE_GAMEUNITS;\n\n                double tx = m_currentCamera.Target.X + m_currentCamera.TargetSector.X * (double)MySolarSystemMapCamera.SECTOR_SIZE_GAMEUNITS;\n                double tz = m_currentCamera.Target.Z + m_currentCamera.TargetSector.Z * (double)MySolarSystemMapCamera.SECTOR_SIZE_GAMEUNITS;\n\n                tx = MyMwcUtils.Round(tx, s);\n                tz = MyMwcUtils.Round(tz, s);\n\n                double px = m_currentCamera.Position.X + posSector.X * (double)MySolarSystemMapCamera.SECTOR_SIZE_GAMEUNITS;\n                double py = m_currentCamera.Position.Y + posSector.Y * (double)MySolarSystemMapCamera.SECTOR_SIZE_GAMEUNITS;\n                double pz = m_currentCamera.Position.Z + posSector.Z * (double)MySolarSystemMapCamera.SECTOR_SIZE_GAMEUNITS;\n\n                double mx = tx - px;\n                double my = 0 - py;\n                double mz = tz - pz;\n\n                Vector3 move = new Vector3((float)mx, (float)my, (float)mz);\n                offset.Y = 0;\n                move = m_currentCamera.CameraToTarget;\n                move -= offset;\n                move.X = (float)MyMwcUtils.Round(move.X, s);\n                move.Z = (float)MyMwcUtils.Round(move.Z, s);\n                move += offset;\n\n                Matrix targetWorld = Matrix.CreateScale(scale, 1, scale) * Matrix.CreateTranslation(move);\n                effect.SetWorldMatrix(targetWorld);\n\n                effect.Begin();\n                MyMinerGame.Static.GraphicsDevice.SetStreamSource(0, m_highlightVertexBuffer, 0, MyVertexFormatPositionTexture.Stride);\n                MyMinerGame.Static.GraphicsDevice.VertexDeclaration = MyVertexFormatPositionTexture.VertexDeclaration;\n                MyMinerGame.Static.GraphicsDevice.DrawPrimitives(PrimitiveType.TriangleList, 0, 2);\n                effect.End();\n                MyPerformanceCounter.PerCameraDraw.TotalDrawCalls++;\n            }  \n        }\n\n        /// <summary>\n        /// One game unit is one sector (200km) and one grid cell when zoomed in to most detailed grid\n        /// </summary>\n        private void DrawGrid()\n        {\n            LoadInDraw();\n                          \n            Device device = MyMinerGame.Static.GraphicsDevice;\n            DepthStencilState.None.Apply();\n            RasterizerState.CullNone.Apply();\n            BlendState.Additive.Apply();\n\n            MyEffectSolarMapGrid effect = (MyEffectSolarMapGrid)MyRender.GetEffect(MyEffects.SolarMapGrid);\n            effect.SetGridTexture(m_texture);\n\n            int gridTileCount = 5;\n            int maxLevel = (int)Math.Ceiling(10.0f / gridTileCount * 7.0f);\n\n            float absHeight = Math.Abs(m_currentCamera.PositionSector.Y) + Math.Abs(m_currentCamera.Position.Y) / MySolarSystemMapCamera.SECTOR_SIZE_GAMEUNITS;\n            float scale = absHeight;\n            int level = (int)Math.Log(scale, gridTileCount);\n            if (level < 2)\n            {\n                level = 2;\n            }\n            else if (level > maxLevel)\n            {\n                level = maxLevel;\n            }\n\n            if (scale > 0)\n            {\n                scale = (float)Math.Pow(gridTileCount, level); // Round to logaritm (base 10), so values are 1, 10, 100 or 1000...\n            }\n\n            float blendInHeight = scale;\n            float blendOutHeight = scale * 200;\n\n\n\n            Vector3 color = GRID_HEIGHT_COLORS[level % GRID_HEIGHT_COLORS.Length] * 0.6f;\n            Vector3 color2 = GRID_HEIGHT_COLORS[(level - 1) % GRID_HEIGHT_COLORS.Length] * 0.6f;\n            Vector3 color3 = GRID_HEIGHT_COLORS[(level - 2) % GRID_HEIGHT_COLORS.Length] * 0.6f;\n\n            DrawGridLevel(scale, blendInHeight, blendOutHeight, color, absHeight);\n\n            if (level <= 2) // At least draw two bottom grids\n            {\n                blendInHeight = 0.1f;\n            }\n\n            DrawGridLevel(scale / gridTileCount, blendInHeight / gridTileCount, blendOutHeight / gridTileCount, color2, absHeight);\n            DrawGridLevel(scale / (gridTileCount * gridTileCount), blendInHeight / (gridTileCount * gridTileCount), blendOutHeight / (gridTileCount * gridTileCount), color3, absHeight);\n                            \n        }\n\n        private VertexBuffer LoadVertexBuffer(Vector3 position, float sectorsPerQuad)\n        {      \n            System.Diagnostics.Debug.Assert(sectorsPerQuad % 2 == 1, \"Sectors per quad must be odd number - vectors are centered\");\n\n            float halfSize = sectorsPerQuad * MySolarSystemMapCamera.SECTOR_SIZE_GAMEUNITS / 2;\n\n            Vector3 bottomLeft = new Vector3(position.X - halfSize, 0, position.Z - halfSize);\n            Vector3 bottomRight = new Vector3(position.X + halfSize, 0, position.Z - halfSize);\n            Vector3 topLeft = new Vector3(position.X - halfSize, 0, position.Z + halfSize);\n            Vector3 topRight = new Vector3(position.X + halfSize, 0, position.Z + halfSize);\n\n            Vector2 textureTopLeft = new Vector2(1f, 0.0f) * sectorsPerQuad;\n            Vector2 textureTopRight = new Vector2(0.0f, 0.0f) * sectorsPerQuad;\n            Vector2 textureBottomLeft = new Vector2(1f, 1f) * sectorsPerQuad;\n            Vector2 textureBottomRight = new Vector2(0.0f, 1f) * sectorsPerQuad;\n\n            MyVertexFormatPositionTexture[] verts = new MyVertexFormatPositionTexture[6];\n            verts[0] = new MyVertexFormatPositionTexture(topLeft, textureTopLeft);\n            verts[1] = new MyVertexFormatPositionTexture(topRight, textureTopRight);\n            verts[2] = new MyVertexFormatPositionTexture(bottomLeft, textureBottomLeft);\n            verts[3] = new MyVertexFormatPositionTexture(bottomLeft, textureBottomLeft);\n            verts[4] = new MyVertexFormatPositionTexture(topRight, textureTopRight);\n            verts[5] = new MyVertexFormatPositionTexture(bottomRight, textureBottomRight);\n\n            VertexBuffer vertexBuffer = new VertexBuffer(MyMinerGame.Static.GraphicsDevice,  MyVertexFormatPositionTexture.Stride * verts.Length, Usage.WriteOnly, VertexFormat.None, Pool.Default);\n            vertexBuffer.Lock(0, verts.Length * MyVertexFormatPositionTexture.Stride, LockFlags.None).WriteRange(verts);\n            vertexBuffer.Unlock();\n            return vertexBuffer;          \n        }\n\n        private void LoadInDraw()\n        {\n            if (m_loaded) return;\n\n            m_gridVertexBuffer = LoadVertexBuffer(Vector3.Zero, SECTORS_PER_QUAD);\n            m_highlightVertexBuffer = LoadVertexBuffer(Vector3.Zero, 1);\n\n            m_loaded = true;\n        }\n\n        public MyMwcVector3Int GetTargetSector()\n        {\n            return m_currentCamera.TargetSector;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/SolarSystem/SolarAreas/MySolarSystem3rdTransmitterConstants.cs",
    "content": "﻿using System.Collections.Generic;\nusing MinerWarsMath;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.AppCode.Game.BackgroundCube;\n\nnamespace MinerWars.AppCode.Game.SolarSystem\n{\n    partial class MySolarSystemConstants\n    {\n        static MySectorObjectCounts ThirdTransmitterObjectsProperties = new MySectorObjectCounts()\n        {\n            Voxels512 = 0,\n            Voxels256 = 10,\n            Voxels128 = 10,\n            Voxels64 = 10,\n            StaticAsteroidLarge = 71,\n            StaticAsteroidMedium = 4000,\n            StaticAsteroidSmall = 0,\n            Motherships = 0,\n            StaticDebrisFields = 0\n        };\n\n        public readonly static MyImpostorProperties[] ThirdTransmitterImpostorsProperties = new MyImpostorProperties[]\n        {\n                   new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Billboards,\n                      Material = MyTransparentMaterialEnum.Impostor_StaticAsteroid20m_A,\n                      ImpostorsCount = 1000,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 5,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 10,\n                      MinRadius = 1000,\n                      MaxRadius = 2000,\n                      AnimationSpeed = new Vector4(0.00009f,0,0,0),\n                      Color = Vector3.One\n                  },\n\n                  new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Billboards,\n                      Material = MyTransparentMaterialEnum.Impostor_StaticAsteroid20m_C,\n                      ImpostorsCount = 1000,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 10.1f,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 11,\n                      MinRadius = 1000,\n                      MaxRadius = 2000,\n                      AnimationSpeed = new Vector4(-0.0001f,0,0,0),\n                      Color = Vector3.One\n                  },\n                        \n                  new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Nebula,\n                      Material = null,\n                      ImpostorsCount = 0,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 1.0f,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 1.3f,\n                      MinRadius = 0.9f,\n                      MaxRadius = 0.9f,\n                      AnimationSpeed = new Vector4(-0.003f, 0.02f, 0.014f, 0),\n                      Color = new Vector3(146 / 255.0f, 0 / 255.0f, 211 / 255.0f),\n                      Contrast = 1.052f,\n                      Intensity = 0.337f\n                  },  \n        };\n\n\n        public static readonly MySunProperties ThirdTransmitterSunProperties = new MySunProperties()\n        {\n            SunDiffuse = new Vector3(215 / 255.0f, 191 / 255.0f, 216 / 255.0f),\n            SunIntensity = 2.250f,\n            SunSpecular = new Vector3(144 / 255.0f, 101 / 255.0f, 104 / 255.0f),\n            BackSunDiffuse = new Vector3(148 / 255.0f, 192 / 255.0f, 211 / 255.0f),\n            BackSunIntensity = 0.04f,\n            AmbientColor = new Vector3(37 / 255.0f, 37 / 255.0f, 35 / 255.0f),\n            AmbientMultiplier = 0.765f,\n            EnvironmentAmbientIntensity = 0.261f,\n        };\n\n\n        public static readonly MyFogProperties ThirdTransmitterFogProperties = new MyFogProperties()\n        {\n            FogColor = new Vector3(137 / 255.0f, 44 / 255.0f, 225 / 255.0f),\n            FogNear = 4073,\n            FogFar = 4726,\n            FogMultiplier = 0.133f,\n            FogBacklightMultiplier = 1.037f,  \n        };\n\n        public static readonly MyParticleDustProperties ThirdTransmitterDustProperties = new MyParticleDustProperties()\n        {\n            Enabled = true,\n            DustBillboardRadius = 123.574f,\n            DustFieldCountInDirectionHalf = 6.021f,\n            DistanceBetween = 123.123f,\n            Color = new Color(0 / 255.0f, 0 / 255.0f, 0 / 255.0f),\n        };\n\n        public readonly static Dictionary<MyMwcVoxelMaterialsEnum, float> ThirdTransmitterAsteroidMaterials = new Dictionary<MyMwcVoxelMaterialsEnum, float>()\n        {\n            { MyMwcVoxelMaterialsEnum.Stone_03, 1},            \n            { MyMwcVoxelMaterialsEnum.Stone_04, 1},            \n        };\n\n        public readonly static Dictionary<MyMwcVoxelMaterialsEnum, float> ThirdTransmitterSecondaryAsteroidMaterials = new Dictionary<MyMwcVoxelMaterialsEnum, float>()\n        {\n          { MyMwcVoxelMaterialsEnum.Helium4_01, 0.5f},\n          { MyMwcVoxelMaterialsEnum.Magnesium_01, 0.5f},\n        };\n\n        /// <summary>\n        /// Rebuild the areas\n        /// </summary>\n        public static void Create3rdTransmitterArea()\n        {\n            Areas[MySolarSystemAreaEnum.ThirdTransmitter] = new MySolarSystemAreaOrbit()\n            {\n                Name = \"Around 3rd transmitter\",\n                AreaType = MySolarSystemArea.AreaEnum.PostPlanet,\n                OrbitProperties = new MyOrbitProperties()\n                {\n                    OrbitCenter = Vector3.Zero,\n                    AreaCenter = MySolarMapRenderer.SectorToKm(new MyMwcVector3Int(3818505, 0, -4273800)),\n                    LongSpread = 0.05f,\n                    MaxDistanceFromOrbitLow = MyBgrCubeConsts.JUPITER_RADIUS * MyBgrCubeConsts.MILLION_KM * 100,\n                    MaxDistanceFromOrbitHigh = MyBgrCubeConsts.JUPITER_RADIUS * MyBgrCubeConsts.MILLION_KM * 300,\n                },\n                SolarMapData = new MySolarMapData()\n                {\n                    DustColor = new Vector3(0.7f, 0.50f, 0.37f),\n                    DustColorVariability = new Vector4(0.15f),\n                    TemplateGroups = new MyTemplateGroupInfo[]\n                    {\n                        new MyTemplateGroupInfo{ Importance = 1, Count = 5, TemplateGroup = MyTemplateGroupEnum.RandomStations},\n                        new MyTemplateGroupInfo{ Importance = 0.5f, Count = 20, TemplateGroup = MyTemplateGroupEnum.RandomStations},\n                    }\n                },\n                SectorData = new MySolarSectorData()\n                {\n                    BackgroundTexture = \"BackgroundCube\",\n                    SunProperties = ThirdTransmitterSunProperties,\n                    FogProperties = ThirdTransmitterFogProperties,\n                    ImpostorProperties = ThirdTransmitterImpostorsProperties,\n                    DebrisProperties = DefaultDebrisProperties,\n\n                    SectorObjectsCounts = ThirdTransmitterObjectsProperties,\n                    PrimaryAsteroidMaterials = ThirdTransmitterAsteroidMaterials,\n                    SecondaryAsteroidMaterials = ThirdTransmitterSecondaryAsteroidMaterials,\n\n                    ParticleDustProperties = ThirdTransmitterDustProperties,                   \n                },\n            };\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/SolarSystem/SolarAreas/MySolarSystemAfterMarsConstants.cs",
    "content": "﻿using MinerWarsMath;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.AppCode.Game.BackgroundCube;\n\nnamespace MinerWars.AppCode.Game.SolarSystem\n{                      \n    partial class MySolarSystemConstants\n    {\n        static MySectorObjectCounts AfterMarsObjectsProperties = new MySectorObjectCounts()\n        {\n            Voxels512 = 0,\n            Voxels256 = 10,\n            Voxels128 = 5,\n            Voxels64 = 10,\n            StaticAsteroidLarge = 10,\n            StaticAsteroidMedium = 300,\n            StaticAsteroidSmall = 1000,\n            Motherships = 0,\n            StaticDebrisFields = 0\n        };\n        \n        public readonly static MyImpostorProperties[] AfterMarsImpostorsProperties = new MyImpostorProperties[]\n        {\n                  new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Billboards,\n                      Material = MyTransparentMaterialEnum.Impostor_StaticAsteroid20m_C,\n                      ImpostorsCount = 1000,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 10.1f,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 11,\n                      MinRadius = 1000,\n                      MaxRadius = 2000,\n                      AnimationSpeed = new Vector4(-0.0001f,0,0,0),\n                      Color = Vector3.One\n                  },\n\n                  new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Nebula,\n                      Material = null,\n                      ImpostorsCount = 0,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 1.0f,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 1.3f,\n                      MinRadius = 2.3f,\n                      MaxRadius = 2.3f,\n                      AnimationSpeed = new Vector4(0.006f, 0.005f,0.007f, 0),\n                      Color = new Vector3(146 / 255.0f, 239 / 255.0f, 255 / 255.0f),\n                      Contrast = 2.490f,\n                      Intensity = 0.36f\n                  },\n        };\n\n\n        public static readonly MySunProperties AfterMarsSunProperties = new MySunProperties()\n        {\n            SunDiffuse = new Vector3(156 / 255.0f, 232 / 255.0f, 208 / 255.0f),\n            SunIntensity = MySolarSystemConstants.SunIntensityFromPosition(MyBgrCubeConsts.MARS_POSITION) * 2,\n            SunSpecular = new Vector3(141 / 255.0f, 176 / 255.0f, 154 / 255.0f),\n            BackSunDiffuse = new Vector3(95 / 255.0f, 132 / 255.0f, 149 / 255.0f),\n            BackSunIntensity = 0.59f,\n            AmbientColor = new Vector3(36 / 255.0f),\n            AmbientMultiplier = 0.2f,\n            EnvironmentAmbientIntensity = 0.820f,\n        };\n\n\n        public static readonly MyFogProperties AfterMarsFogProperties = new MyFogProperties()\n        {\n            FogColor = new Vector3(102 / 255.0f, 168 / 255.0f, 255 / 255.0f),\n            FogNear = 36000,\n            FogFar = 60000,\n            FogMultiplier = 0.114f,\n            FogBacklightMultiplier = 0.188f,\n        };\n\n        public static readonly MyParticleDustProperties AfterMarsDustProperties = new MyParticleDustProperties()\n        {\n            DustBillboardRadius = 55.96f,\n            DustFieldCountInDirectionHalf = 7.199f,\n            DistanceBetween = 76.900f,\n            Color = new Color(60 / 255.0f, 20 / 255.0f, 0 / 255.0f, 1f),\n            Enabled = false,\n        };\n        \n\n\n\n        /// <summary>\n        /// Rebuild the areas\n        /// </summary>\n        public static void CreateMars2Area()\n        {\n            Areas[MySolarSystemAreaEnum.Mars2] = new MySolarSystemAreaOrbit()\n            {\n                Name = \"Mars area\",\n                AreaType = MySolarSystemArea.AreaEnum.PostPlanet,\n                OrbitProperties = new MyOrbitProperties()\n                {\n                    OrbitCenter = Vector3.Zero,\n                    AreaCenter = MyBgrCubeConsts.MARS2_POSITION * MyBgrCubeConsts.MILLION_KM,\n                    LongSpread = 0.2f,\n                    MaxDistanceFromOrbitLow = MyBgrCubeConsts.MARS_RADIUS * MyBgrCubeConsts.MILLION_KM * 200,\n                    MaxDistanceFromOrbitHigh = MyBgrCubeConsts.MARS_RADIUS * MyBgrCubeConsts.MILLION_KM * 400,\n                },\n                SolarMapData = new MySolarMapData()\n                {\n                    DustColor = new Vector3(122 / 255.0f, 139 / 255.0f, 139 / 255.0f),\n                    DustColorVariability = new Vector4(0.05f),\n                    TemplateGroups = new MyTemplateGroupInfo[]\n                    {\n                        new MyTemplateGroupInfo{ Importance = 0.2f, Count = 3, TemplateGroup = MyTemplateGroupEnum.RandomStations},\n                        new MyTemplateGroupInfo{ Importance = 0.3f, Count = 8, TemplateGroup = MyTemplateGroupEnum.RandomStations},\n                    }\n                },\n                SectorData = new MySolarSectorData()\n                {\n                    SunProperties = AfterMarsSunProperties,\n                    FogProperties = AfterMarsFogProperties,\n                    ImpostorProperties = AfterMarsImpostorsProperties,\n                    DebrisProperties = DefaultDebrisProperties,\n\n                    SectorObjectsCounts = AfterMarsObjectsProperties,\n                    PrimaryAsteroidMaterials = DefaultAsteroidMaterials,\n                    SecondaryAsteroidMaterials = DefaultSecondaryMaterials,\n\n                    ParticleDustProperties = AfterMarsDustProperties,\n                },\n            };\n        }\n    }\n                         \n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/SolarSystem/SolarAreas/MySolarSystemAsteroidBelt2Constants.cs",
    "content": "﻿using MinerWarsMath;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.Utils;\n\nnamespace MinerWars.AppCode.Game.SolarSystem\n{\n    partial class MySolarSystemConstants\n    {\n       \n\n        \n        /// <summary>\n        /// Rebuild the areas\n        /// </summary>\n        public static void CreateAsteroidBelt2Area()\n        {\n            Areas[MySolarSystemAreaEnum.AsteroidBelt2] = new MySolarSystemAreaOrbit()\n              {\n                  Name = \"Asteroid belt 2\",\n                  AreaType = MySolarSystemArea.AreaEnum.PostPlanet,\n                  OrbitProperties = new MyOrbitProperties()\n                  {\n                      OrbitCenter = Vector3.Zero,\n                      AreaCenter = MySolarMapRenderer.SectorToKm(new MyMwcVector3Int(-2371982, 0, -971832)), //player start position\n\n                      LongSpread = 0.5f,\n                      MaxDistanceFromOrbitLow = MyBgrCubeConsts.VENUS_RADIUS * MyBgrCubeConsts.MILLION_KM * 300,\n                      MaxDistanceFromOrbitHigh = MyBgrCubeConsts.VENUS_RADIUS * MyBgrCubeConsts.MILLION_KM * 1200,\n                  },\n                  SolarMapData = new MySolarMapData()\n                  {\n                      DustColor = new Vector3(0.278f, 0.5f, 0.21f),\n                      DustColorVariability = new Vector4(0.15f),\n                  },\n                  SectorData = new MySolarSectorData()\n                  {\n                      SectorObjectsCounts = DefaultObjectsProperties,\n                      PrimaryAsteroidMaterials = DefaultAsteroidMaterials,\n                      SunProperties = DefaultSunProperties,\n                      ImpostorProperties = DefaultImpostorsProperties,\n                      FogProperties = DefaultFogProperties,\n                      DebrisProperties = DefaultDebrisProperties\n                  },\n              };\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/SolarSystem/SolarAreas/MySolarSystemAsteroidBeltConstants.cs",
    "content": "﻿using MinerWarsMath;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.AppCode.Game.BackgroundCube;\n\nnamespace MinerWars.AppCode.Game.SolarSystem\n{\n    partial class MySolarSystemConstants\n    {\n\n        static MySectorObjectCounts AsteroidBeltObjectsProperties = new MySectorObjectCounts()\n        {\n            Voxels512 = 0,\n            Voxels256 = 20,\n            Voxels128 = 20,\n            Voxels64 = 20,\n            StaticAsteroidLarge = 41,\n            StaticAsteroidMedium = 4000,\n            StaticAsteroidSmall = 5000,\n            Motherships = 0,\n            StaticDebrisFields = 0\n        };\n\n        public readonly static MyImpostorProperties[] AsteroidBeltImpostorsProperties = new MyImpostorProperties[]\n        {\n                   new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Billboards,\n                      Material = MyTransparentMaterialEnum.Impostor_StaticAsteroid20m_A,\n                      ImpostorsCount = 10000,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 5,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 10,\n                      MinRadius = 1000,\n                      MaxRadius = 2000,\n                      AnimationSpeed = new Vector4(0.00009f,0,0,0),\n                      Color = Vector3.One\n                  },\n\n                  new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Billboards,\n                      Material = MyTransparentMaterialEnum.Impostor_StaticAsteroid20m_C,\n                      ImpostorsCount = 1000,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 10.1f,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 11,\n                      MinRadius = 1000,\n                      MaxRadius = 2000,\n                      AnimationSpeed = new Vector4(-0.0001f,0,0,0),\n                      Color = Vector3.One\n                  },\n\n                  new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Nebula,\n                      Material = null,\n                      ImpostorsCount = 0,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 1.0f,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 1.3f,\n                      MinRadius = 3.543f,\n                      MaxRadius = 3.643f,\n                      AnimationSpeed = new Vector4(0.004f, 0.001f,0.003f, 0),\n                      Color = MyMath.VectorFromColor(165, 196, 225),\n                      Contrast = 1.560f,\n                      Intensity = 0.350f\n                  },\n        };\n\n        public static readonly MySunProperties AsteroidBeltSunProperties = new MySunProperties()\n        {\n            SunDiffuse = MyMath.VectorFromColor(220, 220, 165),\n            SunIntensity = MySolarSystemConstants.SunIntensityFromPosition(MyBgrCubeConsts.ASTEROID_BELT_POSITION)*3,\n            SunSpecular = MyMath.VectorFromColor(152, 96, 23),\n            BackSunDiffuse = MyMath.VectorFromColor(23, 43, 69),\n            BackSunIntensity = 0.75f,\n            AmbientColor = new Vector3(0.14f),\n            AmbientMultiplier = 0.95f,\n            EnvironmentAmbientIntensity = 0.95f,\n        };\n\n        public static readonly MyFogProperties AsteroidBeltFogProperties = new MyFogProperties()\n        {\n            FogColor = MyMath.VectorFromColor(23, 70, 90),\n            FogNear = 3000,\n            FogFar = 7000,\n            FogMultiplier = 0.35f,\n            FogBacklightMultiplier = 1.0f,\n        };\n\n        public static readonly MyParticleDustProperties AsteroidBeltDustProperties = new MyParticleDustProperties()\n        {\n            Enabled = false,\n            DustBillboardRadius = 30f,\n            DustFieldCountInDirectionHalf = 5f,\n            DistanceBetween = 28f,\n            Color = new Color(94, 149, 170, 64),\n        };\n\n\n        /// <summary>\n        /// Rebuild the areas\n        /// </summary>\n        public static void CreateAsteroidBeltArea()\n        {\n            Areas[MySolarSystemAreaEnum.AsteroidBelt] = new MySolarSystemAreaOrbit()\n            {\n                Name = \"Asteroid belt\",\n                AreaType = MySolarSystemArea.AreaEnum.PostPlanet,\n                OrbitProperties = new MyOrbitProperties()\n                {\n                    OrbitCenter = Vector3.Zero,\n                    AreaCenter = MyBgrCubeConsts.ASTEROID_BELT_POSITION * MyBgrCubeConsts.MILLION_KM,\n                    LongSpread = 1,\n                    MaxDistanceFromOrbitLow = MyBgrCubeConsts.EARTH_RADIUS * MyBgrCubeConsts.MILLION_KM * 10000,\n                    MaxDistanceFromOrbitHigh = MyBgrCubeConsts.EARTH_RADIUS * MyBgrCubeConsts.MILLION_KM * 10000,\n                },\n                SolarMapData = new MySolarMapData()\n                {\n                    DustColor = new Vector3(0.3f, 0.3f, 0.3f),\n                    DustColorVariability = new Vector4(0.07f),\n                    TemplateGroups = new MyTemplateGroupInfo[]\n                    {\n                        new MyTemplateGroupInfo{ Importance = 1, Count = 20, TemplateGroup = MyTemplateGroupEnum.RandomStations},\n                        new MyTemplateGroupInfo{ Importance = 0.7f, Count = 60, TemplateGroup = MyTemplateGroupEnum.RandomStations},\n                    }\n                },\n                SectorData = new MySolarSectorData()\n                {\n                    SectorObjectsCounts = AsteroidBeltObjectsProperties,\n                    PrimaryAsteroidMaterials = DefaultAsteroidMaterials,\n                    SecondaryAsteroidMaterials = DefaultSecondaryMaterials,\n                    SunProperties = AsteroidBeltSunProperties,\n                    FogProperties = AsteroidBeltFogProperties,\n\n                    ImpostorProperties = AsteroidBeltImpostorsProperties,\n                    ParticleDustProperties = AsteroidBeltDustProperties\n                },\n\n            };\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/SolarSystem/SolarAreas/MySolarSystemChineseMinesConstants.cs",
    "content": "﻿using System.Collections.Generic;\nusing MinerWarsMath;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.AppCode.Game.BackgroundCube;\n\nnamespace MinerWars.AppCode.Game.SolarSystem\n{\n    partial class MySolarSystemConstants\n    {\n        static MySectorObjectCounts ChineseMinesObjectsProperties = new MySectorObjectCounts()\n        {\n            Voxels512 = 0,\n            Voxels256 = 10,\n            Voxels128 = 10,\n            Voxels64 = 10,\n            StaticAsteroidLarge = 0,\n            StaticAsteroidMedium = 5000,\n            StaticAsteroidSmall = 0,\n            Motherships = 0,\n            StaticDebrisFields = 0\n        };\n\n        public readonly static MyImpostorProperties[] ChineseMinesImpostorsProperties = new MyImpostorProperties[]\n        {\n                   new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Billboards,\n                      Material = MyTransparentMaterialEnum.Impostor_StaticAsteroid20m_A,\n                      ImpostorsCount = 1000,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 5,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 10,\n                      MinRadius = 1000,\n                      MaxRadius = 2000,\n                      AnimationSpeed = new Vector4(0.00009f,0,0,0),\n                      Color = Vector3.One\n                  },\n\n                  new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Billboards,\n                      Material = MyTransparentMaterialEnum.Impostor_StaticAsteroid20m_C,\n                      ImpostorsCount = 1000,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 10.1f,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 11,\n                      MinRadius = 1000,\n                      MaxRadius = 2000,\n                      AnimationSpeed = new Vector4(-0.0001f,0,0,0),\n                      Color = Vector3.One\n                  },\n\n                  new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Nebula,\n                      Material = null,\n                      ImpostorsCount = 0,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 1.0f,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 1.3f,\n                      MinRadius = 1.328f,\n                      MaxRadius = 1.328f,\n                      AnimationSpeed = new Vector4(0.005f, 0.001f, 0.003f, 0),\n                      Color = MyMath.VectorFromColor(170, 255, 35),\n                      Contrast = 2.664f,\n                      Intensity = 0.604f\n                  },\n        };\n\n\n        public static readonly MySunProperties ChineseMinesSunProperties = new MySunProperties()\n        {\n            SunDiffuse = new Vector3(175 / 255.0f, 255 / 255.0f, 13 / 255.0f),\n            SunIntensity = 0f,\n            SunSpecular = new Vector3(187 / 255.0f, 82 / 255.0f, 50 / 255.0f),\n            BackSunDiffuse = new Vector3(203 / 255.0f, 255 / 255.0f, 0 / 255.0f),\n            BackSunIntensity = 1.197f,\n            AmbientColor = new Vector3(36 / 255.0f, 36 / 255.0f, 36 / 255.0f),\n            AmbientMultiplier = 0.2f,\n            EnvironmentAmbientIntensity = 0.441f,\n        };\n\n\n        public static readonly MyFogProperties ChineseMinesFogProperties = new MyFogProperties()\n        {\n            FogColor = new Vector3(179 / 255.0f, 161 / 255.0f, 0 / 255.0f),\n            FogNear = 3000,\n            FogFar = 7338,\n            FogMultiplier = 0.226f,\n            FogBacklightMultiplier = 0.851f,\n        };\n\n        public static readonly MyParticleDustProperties ChineseMinesDustProperties = new MyParticleDustProperties()\n        {\n            Enabled = true,\n            DustBillboardRadius = 103.054f,\n            DustFieldCountInDirectionHalf = 8.072f,\n            DistanceBetween = 123.123f,\n            Color = new Color(151 / 255.0f, 201 / 255.0f, 49 / 255.0f),\n        };\n\n\n        public static readonly MyDebrisProperties ChineseMinesDebrisProperties = new MyDebrisProperties()\n        {\n            Enabled = false,\n            MaxDistance = 200,\n            CountInDirectionHalf = 4,\n            FullScaleDistance = 70,\n            DistanceBetween = 30.0f,\n            //DebrisEnumValues = MyMwcObjectBuilder_SmallDebris_TypesEnum.\n        };\n\n\n        public readonly static Dictionary<MyMwcVoxelMaterialsEnum, float> ChineseMinesAsteroidMaterials = new Dictionary<MyMwcVoxelMaterialsEnum, float>()\n        {        \n            {  MyMwcVoxelMaterialsEnum.Stone_07, 1},\n            {  MyMwcVoxelMaterialsEnum.Stone_03, 1},\n            {  MyMwcVoxelMaterialsEnum.Indestructible_02, 1},\n            {  MyMwcVoxelMaterialsEnum.Indestructible_03, 1},\n\n        };\n\n        public readonly static Dictionary<MyMwcVoxelMaterialsEnum, float> ChineseMinesSecondaryMaterials = new Dictionary<MyMwcVoxelMaterialsEnum, float>()\n        {\n            {  MyMwcVoxelMaterialsEnum.Iron_01, 1},\n            {  MyMwcVoxelMaterialsEnum.Iron_02, 1},\n        };\n\n        /// <summary>\n        /// Rebuild the areas\n        /// </summary>\n        public static void CreateChineseMinesArea()\n        {\n            Areas[MySolarSystemAreaEnum.ChineseMines] = new MySolarSystemAreaOrbit()\n            {\n                Name = \"Chinese Mines\",\n                AreaType = MySolarSystemArea.AreaEnum.PostPlanet,\n                OrbitProperties = new MyOrbitProperties()\n                {\n                    OrbitCenter = Vector3.Zero,\n                    AreaCenter = MySolarSystemUtils.SectorsToKm(MyBgrCubeConsts.CHINESEMINES_SECTOR),\n                    LongSpread = 0.1f,\n                    MaxDistanceFromOrbitLow = 2.1f * MyBgrCubeConsts.MILLION_KM,\n                    MaxDistanceFromOrbitHigh = 8.4f * MyBgrCubeConsts.MILLION_KM,\n                },\n                SolarMapData = new MySolarMapData()\n                {\n                    DustColor = new Vector3(0.78f, 0.23f, 0.78f),\n                    DustColorVariability = new Vector4(0.15f),\n                    TemplateGroups = new MyTemplateGroupInfo[]\n                    {\n                        new MyTemplateGroupInfo{ Importance = 1, Count = 0, TemplateGroup = MyTemplateGroupEnum.RandomStations},\n                        new MyTemplateGroupInfo{ Importance = 0.5f, Count = 0, TemplateGroup = MyTemplateGroupEnum.RandomStations},\n                    }\n                },\n                SectorData = new MySolarSectorData()\n                {\n                    SunProperties = ChineseMinesSunProperties,\n                    FogProperties = ChineseMinesFogProperties,\n                    ImpostorProperties = ChineseMinesImpostorsProperties,\n                    DebrisProperties = DefaultDebrisProperties,\n\n                    SectorObjectsCounts = ChineseMinesObjectsProperties,\n                    PrimaryAsteroidMaterials = ChineseMinesAsteroidMaterials,\n                    SecondaryAsteroidMaterials = ChineseMinesSecondaryMaterials,\n\n                    ParticleDustProperties = ChineseMinesDustProperties,\n                },\n            };\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/SolarSystem/SolarAreas/MySolarSystemChineseRafineryConstants.cs",
    "content": "﻿using System.Collections.Generic;\nusing MinerWarsMath;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.AppCode.Game.BackgroundCube;\n\nnamespace MinerWars.AppCode.Game.SolarSystem\n{\n    partial class MySolarSystemConstants\n    {\n        static MySectorObjectCounts ChineseRafinaryObjectsProperties = new MySectorObjectCounts()\n        {\n            Voxels512 = 0,\n            Voxels256 = 10,\n            Voxels128 = 10,\n            Voxels64 = 10,\n            StaticAsteroidLarge = 0,\n            StaticAsteroidMedium = 3000,\n            StaticAsteroidSmall = 0,\n            Motherships = 0,\n            StaticDebrisFields = 0\n        };\n\n        public readonly static MyImpostorProperties[] ChineseRafinaryImpostorsProperties = new MyImpostorProperties[]\n        {\n                   new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Billboards,\n                      Material = MyTransparentMaterialEnum.Impostor_StaticAsteroid20m_A,\n                      ImpostorsCount = 1000,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 5,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 10,\n                      MinRadius = 1000,\n                      MaxRadius = 2000,\n                      AnimationSpeed = new Vector4(0.00009f,0,0,0),\n                      Color = Vector3.One\n                  },\n\n                  new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Billboards,\n                      Material = MyTransparentMaterialEnum.Impostor_StaticAsteroid20m_C,\n                      ImpostorsCount = 1000,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 10.1f,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 11,\n                      MinRadius = 1000,\n                      MaxRadius = 2000,\n                      AnimationSpeed = new Vector4(-0.0001f,0,0,0),\n                      Color = Vector3.One\n                  },\n\n                  new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Nebula,\n                      Material = null,\n                      ImpostorsCount = 0,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 1.0f,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 1.3f,\n                      MinRadius = 0.930f,\n                      MaxRadius = 0.930f,\n                      AnimationSpeed = new Vector4(0.003f, 0.001f,0.003f, 0),\n                      Color = MyMath.VectorFromColor(255, 13, 0),\n                      Contrast = 1.537f,\n                      Intensity = 0.320f\n                  },\n        };\n\n\n        public static readonly MySunProperties ChineseRafinarySunProperties = new MySunProperties()\n        {\n            SunDiffuse = MyMath.VectorFromColor(255, 166, 72),\n            SunIntensity = 1.242f,\n            SunSpecular = MyMath.VectorFromColor(187, 89, 50),\n            BackSunDiffuse = MyMath.VectorFromColor(163, 144, 95),\n            BackSunIntensity = 3.395f,\n            AmbientColor = MyMath.VectorFromColor(36, 36, 36),\n            AmbientMultiplier = 0.765f,\n            EnvironmentAmbientIntensity = 0.261f,\n        };\n\n\n        public static readonly MyFogProperties ChineseRafinaryFogProperties = new MyFogProperties()\n        {\n            FogColor = MyMath.VectorFromColor(255, 0, 0),\n            FogNear = 4073.413f,\n            FogFar = 4867.492f,\n            FogMultiplier = 0.151f,\n            FogBacklightMultiplier = 1.643f,\n        };\n\n        public static readonly MyParticleDustProperties ChineseRafinaryDustProperties = new MyParticleDustProperties()\n        {\n            Enabled = true,\n            DustBillboardRadius = 121.709f,\n            DustFieldCountInDirectionHalf = 6.610f,\n            DistanceBetween = 128.358f,\n            Color = new Color(0, 0, 0),\n        };\n\n\n        public static readonly MyDebrisProperties ChineseRafinaryDebrisProperties = new MyDebrisProperties()\n        {\n            Enabled = false,\n            MaxDistance = 200,\n            CountInDirectionHalf = 4,\n            FullScaleDistance = 70,\n            DistanceBetween = 30.0f,\n            //DebrisEnumValues = MyMwcObjectBuilder_SmallDebris_TypesEnum.\n        };\n\n        public readonly static Dictionary<MyMwcVoxelMaterialsEnum, float> ChineseRafinaryAsteroidMaterials = new Dictionary<MyMwcVoxelMaterialsEnum, float>()\n        {        \n            {  MyMwcVoxelMaterialsEnum.Stone_05, 1},\n            {  MyMwcVoxelMaterialsEnum.Stone_06, 1},\n            {  MyMwcVoxelMaterialsEnum.Stone_07, 1},\n            {  MyMwcVoxelMaterialsEnum.Stone_13_Wall_01, 1},\n        };\n\n        public readonly static Dictionary<MyMwcVoxelMaterialsEnum, float> ChineseRafinarySecondaryMaterials = new Dictionary<MyMwcVoxelMaterialsEnum, float>()\n        {\n            {  MyMwcVoxelMaterialsEnum.Nickel_01, 1},\n            {  MyMwcVoxelMaterialsEnum.Platinum_01, 1},\n        };\n\n\n        /// <summary>\n        /// Rebuild the areas\n        /// </summary>\n        public static void CreateChineseRafinaryArea()\n        {\n            Areas[MySolarSystemAreaEnum.ChineseRafinary] = new MySolarSystemAreaOrbit()\n            {\n                Name = \"Chinese Rafinary\",\n                AreaType = MySolarSystemArea.AreaEnum.PostPlanet,\n                OrbitProperties = new MyOrbitProperties()\n                {\n                    OrbitCenter = Vector3.Zero,\n                    AreaCenter = MySolarSystemUtils.SectorsToKm(MyBgrCubeConsts.CHINESERAFINARY_SECTOR),\n                    LongSpread = 0.15f,\n                    MaxDistanceFromOrbitLow = 4.1f * MyBgrCubeConsts.MILLION_KM,\n                    MaxDistanceFromOrbitHigh = 9.4f * MyBgrCubeConsts.MILLION_KM,\n                },\n                SolarMapData = new MySolarMapData()\n                {\n                    DustColor = new Vector3(0.32f, 0.71f, 0.18f),\n                    DustColorVariability = new Vector4(0.15f),\n                    TemplateGroups = new MyTemplateGroupInfo[]\n                    {\n                        new MyTemplateGroupInfo{ Importance = 1, Count = 0, TemplateGroup = MyTemplateGroupEnum.RandomStations},\n                        new MyTemplateGroupInfo{ Importance = 0.5f, Count = 0, TemplateGroup = MyTemplateGroupEnum.RandomStations},\n                    }\n                },\n                SectorData = new MySolarSectorData()\n                {\n                    SunProperties = ChineseRafinarySunProperties,\n                    FogProperties = ChineseRafinaryFogProperties,\n                    ImpostorProperties = ChineseRafinaryImpostorsProperties,\n                    DebrisProperties = DefaultDebrisProperties,\n\n                    SectorObjectsCounts = ChineseRafinaryObjectsProperties,\n                    PrimaryAsteroidMaterials = ChineseRafinaryAsteroidMaterials,\n                    SecondaryAsteroidMaterials = ChineseRafinarySecondaryMaterials,\n\n                    ParticleDustProperties = ChineseRafinaryDustProperties,\n                },\n            };\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/SolarSystem/SolarAreas/MySolarSystemChineseSolarPlantConstants.cs",
    "content": "﻿using MinerWarsMath;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.AppCode.Game.BackgroundCube;\n\nnamespace MinerWars.AppCode.Game.SolarSystem\n{\n    partial class MySolarSystemConstants\n    {\n        static MySectorObjectCounts ChinesePowerPlantObjectsProperties = new MySectorObjectCounts()\n        {\n            Voxels512 = 0,\n            Voxels256 = 10,\n            Voxels128 = 10,\n            Voxels64 = 10,\n            StaticAsteroidLarge = 0,\n            StaticAsteroidMedium = 1000,\n            StaticAsteroidSmall = 0,\n            Motherships = 0,\n            StaticDebrisFields = 0\n        };\n\n        public readonly static MyImpostorProperties[] ChinesePowerPlantImpostorsProperties = new MyImpostorProperties[]\n        {\n                   new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Billboards,\n                      Material = MyTransparentMaterialEnum.Impostor_StaticAsteroid20m_A,\n                      ImpostorsCount = 1000,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 5,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 10,\n                      MinRadius = 1000,\n                      MaxRadius = 2000,\n                      AnimationSpeed = new Vector4(0.00009f,0,0,0),\n                      Color = Vector3.One\n                  },\n\n                  new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Billboards,\n                      Material = MyTransparentMaterialEnum.Impostor_StaticAsteroid20m_C,\n                      ImpostorsCount = 1000,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 10.1f,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 11,\n                      MinRadius = 1000,\n                      MaxRadius = 2000,\n                      AnimationSpeed = new Vector4(-0.0001f,0,0,0),\n                      Color = Vector3.One\n                  },\n\n                  new MyImpostorProperties()\n                  {     \n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Nebula,\n                      Material = null,\n                      ImpostorsCount = 0,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 1.0f,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 1.3f,\n                      MinRadius = 0.9f,\n                      MaxRadius = 0.9f,\n                      AnimationSpeed = new Vector4(-0.005f, -0.008f, -0.003f, 0),\n                      Color = new Vector3(255 / 255.0f, 255 / 255.0f, 146 / 255.0f),\n                      Contrast = 2.6f,\n                      Intensity = 0.8f\n                  },\n        };\n\n\n        public static readonly MySunProperties ChinesePowerPlantSunProperties = new MySunProperties()\n        {\n            SunDiffuse = new Vector3(150 / 255.0f, 205 / 255.0f, 208 / 255.0f),\n            SunIntensity = MySolarSystemConstants.SunIntensityFromPosition(MyBgrCubeConsts.JUPITER_POSITION) * 2,\n            SunSpecular = new Vector3(233 / 255.0f, 219 / 255.0f, 29 / 255.0f),\n            BackSunDiffuse = new Vector3(178 / 255.0f, 96 / 255.0f, 40 / 255.0f),\n            BackSunIntensity = 0.351f,\n            AmbientColor = new Vector3(36 / 255.0f),\n            AmbientMultiplier = 0.2f,\n            EnvironmentAmbientIntensity = 0.82f,\n        };\n\n\n        public static readonly MyFogProperties ChinesePowerPlantFogProperties = new MyFogProperties()\n        {\n            FogColor = new Vector3(255 / 255.0f, 255 / 255.0f, 225 / 255.0f),\n            FogNear = 1200,\n            FogFar = 70000,\n            FogMultiplier = 0f,\n        };\n\n        public static readonly MyParticleDustProperties ChinesePowerPlantDustProperties = new MyParticleDustProperties()\n        {\n            Enabled = false,\n            DustBillboardRadius = 11.417f,\n            DustFieldCountInDirectionHalf = 6.680f,\n            DistanceBetween = 44.400f,\n            Color = new Color(5 / 255.0f, 10 / 255.0f, 30 / 255.0f, 1f),\n        };\n        \n        /// <summary>\n        /// Rebuild the areas\n        /// </summary>\n        public static void CreateChinesePowerPlantArea()\n        {\n            Areas[MySolarSystemAreaEnum.ChineseArea] = new MySolarSystemAreaOrbit()\n            {\n                Name = \"Chinese area\",\n                AreaType = MySolarSystemArea.AreaEnum.PostPlanet,\n                OrbitProperties = new MyOrbitProperties()\n                {\n                    OrbitCenter = Vector3.Zero,\n                    AreaCenter = MyBgrCubeConsts.CHINESE_POSITION * MyBgrCubeConsts.MILLION_KM,\n                    LongSpread = 0.3f,\n                    MaxDistanceFromOrbitLow = MyBgrCubeConsts.JUPITER_RADIUS * MyBgrCubeConsts.MILLION_KM * 100,\n                    MaxDistanceFromOrbitHigh = MyBgrCubeConsts.JUPITER_RADIUS * MyBgrCubeConsts.MILLION_KM * 100,\n                },\n                SolarMapData = new MySolarMapData()\n                {\n                    DustColor = new Vector3(255 / 255.0f, 193 / 255.0f, 193 / 255.0f),\n                    DustColorVariability = new Vector4(0.15f),\n                    TemplateGroups = new MyTemplateGroupInfo[]\n                    {\n                        new MyTemplateGroupInfo{ Importance = 1, Count = 5, TemplateGroup = MyTemplateGroupEnum.RandomStations},\n                        new MyTemplateGroupInfo{ Importance = 0.5f, Count = 20, TemplateGroup = MyTemplateGroupEnum.RandomStations},\n                    }\n                },\n                SectorData = new MySolarSectorData()\n                {\n                    SunProperties = ChinesePowerPlantSunProperties,\n                    FogProperties = ChinesePowerPlantFogProperties,\n                    ImpostorProperties = ChinesePowerPlantImpostorsProperties,\n                    DebrisProperties = DefaultDebrisProperties,\n\n                    SectorObjectsCounts = ChinesePowerPlantObjectsProperties,\n                    PrimaryAsteroidMaterials = DefaultAsteroidMaterials,\n                    SecondaryAsteroidMaterials = DefaultSecondaryMaterials,\n\n                    ParticleDustProperties = ChinesePowerPlantDustProperties,\n                   },\n            };\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/SolarSystem/SolarAreas/MySolarSystemChineseTransmitterConstants.cs",
    "content": "﻿using System.Collections.Generic;\nusing MinerWarsMath;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.AppCode.Game.BackgroundCube;\n\nnamespace MinerWars.AppCode.Game.SolarSystem\n{\n    partial class MySolarSystemConstants\n    {\n        static MySectorObjectCounts ChineseTransmitterObjectsProperties = new MySectorObjectCounts()\n        {\n            Voxels512 = 0,\n            Voxels256 = 10,\n            Voxels128 = 10,\n            Voxels64 = 10,\n            StaticAsteroidLarge = 71,\n            StaticAsteroidMedium = 4000,\n            StaticAsteroidSmall = 0,\n            Motherships = 0,\n            StaticDebrisFields = 0\n        };\n\n        public readonly static MyImpostorProperties[] ChineseTransmitterImpostorsProperties = new MyImpostorProperties[]\n        {\n                   new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Billboards,\n                      Material = MyTransparentMaterialEnum.Impostor_StaticAsteroid20m_A,\n                      ImpostorsCount = 1000,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 5,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 10,\n                      MinRadius = 1000,\n                      MaxRadius = 2000,\n                      AnimationSpeed = new Vector4(0.00009f,0,0,0),\n                      Color = Vector3.One\n                  },\n\n                  new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Billboards,\n                      Material = MyTransparentMaterialEnum.Impostor_StaticAsteroid20m_C,\n                      ImpostorsCount = 1000,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 10.1f,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 11,\n                      MinRadius = 1000,\n                      MaxRadius = 2000,\n                      AnimationSpeed = new Vector4(-0.0001f,0,0,0),\n                      Color = Vector3.One\n                  },\n                        \n                  new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Nebula,\n                      Material = null,\n                      ImpostorsCount = 0,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 1.0f,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 1.3f,\n                      MinRadius = 0.930f,\n                      MaxRadius = 0.830f,\n                      AnimationSpeed = new Vector4(0.003f, 0.001f,0.003f, 0),\n                      Color = new Vector3(0 / 255.0f, 127 / 255.0f, 255 / 255.0f),\n                      Contrast = 1.537f,\n                      Intensity = 0.351f\n                  },  \n        };\n\n\n        public static readonly MySunProperties ChineseTransmitterSunProperties = new MySunProperties()\n        {\n            SunDiffuse = new Vector3(255 / 255.0f, 192 / 255.0f, 87 / 255.0f),\n            SunIntensity = 1.890f,\n            SunSpecular = new Vector3(189 / 255.0f, 211 / 255.0f, 130 / 255.0f),\n            BackSunDiffuse = new Vector3(163 / 255.0f, 211 / 255.0f, 142 / 255.0f),\n            BackSunIntensity = 2.098f,\n            AmbientColor = new Vector3(36 / 255.0f, 36 / 255.0f, 36 / 255.0f),\n            AmbientMultiplier = 0.765f,\n            EnvironmentAmbientIntensity = 0.261f,\n        };\n\n\n        public static readonly MyFogProperties ChineseTransmitterFogProperties = new MyFogProperties()\n        {\n            FogColor = new Vector3(34 / 255.0f, 193 / 255.0f, 125 / 255.0f),\n            FogNear = 4073,\n            FogFar = 4726,\n            FogMultiplier = 0.161f,\n            FogBacklightMultiplier = 1.177f,\n        };\n\n        public static readonly MyParticleDustProperties ChineseTransmitterDustProperties = new MyParticleDustProperties()\n        {\n            Enabled = true,\n            DustBillboardRadius = 121.709f,\n            DustFieldCountInDirectionHalf = 6.654f,\n            DistanceBetween = 128.4f,\n            Color = new Color(0 / 255.0f, 0 / 255.0f, 0 / 255.0f),\n        };\n\n        public readonly static Dictionary<MyMwcVoxelMaterialsEnum, float> ChineseTransmitterAsteroidMaterials = new Dictionary<MyMwcVoxelMaterialsEnum, float>()\n        {\n            { MyMwcVoxelMaterialsEnum.Stone_03, 1},            \n            { MyMwcVoxelMaterialsEnum.Stone_04, 1},            \n        };\n\n        public readonly static Dictionary<MyMwcVoxelMaterialsEnum, float> ChineseTransmitterSecondaryAsteroidMaterials = new Dictionary<MyMwcVoxelMaterialsEnum, float>()\n        {\n          { MyMwcVoxelMaterialsEnum.Helium4_01, 0.5f},\n          { MyMwcVoxelMaterialsEnum.Magnesium_01, 0.5f},\n        };\n\n        /// <summary>\n        /// Rebuild the areas\n        /// </summary>\n        public static void CreateChineseTransmitterArea()\n        {\n            Areas[MySolarSystemAreaEnum.ChineseTransmitter] = new MySolarSystemAreaOrbit()\n            {\n                Name = \"Around Chinese Transmitter\",\n                AreaType = MySolarSystemArea.AreaEnum.PostPlanet,\n                OrbitProperties = new MyOrbitProperties()\n                {\n                    OrbitCenter = Vector3.Zero,\n                    AreaCenter = MySolarMapRenderer.SectorToKm(new MyMwcVector3Int(2329559, 0, 4612446)),\n                    LongSpread = 0.05f,\n                    MaxDistanceFromOrbitLow = MyBgrCubeConsts.JUPITER_RADIUS * MyBgrCubeConsts.MILLION_KM * 100,\n                    MaxDistanceFromOrbitHigh = MyBgrCubeConsts.JUPITER_RADIUS * MyBgrCubeConsts.MILLION_KM * 300,\n                },\n                SolarMapData = new MySolarMapData()\n                {\n                    DustColor = new Vector3(0.7f, 0.50f, 0.37f),\n                    DustColorVariability = new Vector4(0.15f),\n                    TemplateGroups = new MyTemplateGroupInfo[]\n                    {\n                        new MyTemplateGroupInfo{ Importance = 1, Count = 5, TemplateGroup = MyTemplateGroupEnum.RandomStations},\n                        new MyTemplateGroupInfo{ Importance = 0.5f, Count = 20, TemplateGroup = MyTemplateGroupEnum.RandomStations},\n                    }\n                },\n                SectorData = new MySolarSectorData()\n                {\n                    BackgroundTexture = \"BackgroundCube\",\n                    SunProperties = ChineseTransmitterSunProperties,\n                    FogProperties = ChineseTransmitterFogProperties,\n                    ImpostorProperties = ChineseTransmitterImpostorsProperties,\n                    DebrisProperties = DefaultDebrisProperties,\n\n                    SectorObjectsCounts = ChineseTransmitterObjectsProperties,\n                    PrimaryAsteroidMaterials = ChineseTransmitterAsteroidMaterials,\n                    SecondaryAsteroidMaterials = ChineseTransmitterSecondaryAsteroidMaterials,\n\n                    ParticleDustProperties = ChineseTransmitterDustProperties,                   \n                },\n            };\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/SolarSystem/SolarAreas/MySolarSystemEarthConstants.cs",
    "content": "﻿using System.Collections.Generic;\nusing MinerWarsMath;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.AppCode.Game.BackgroundCube;\n\nnamespace MinerWars.AppCode.Game.SolarSystem\n{\n    partial class MySolarSystemConstants\n    {\n        static MySectorObjectCounts EarthObjectsProperties = new MySectorObjectCounts()\n        {\n            Voxels512 = 0,\n            Voxels256 = 10,\n            Voxels128 = 10,\n            Voxels64 = 10,\n            StaticAsteroidLarge = 3,\n            StaticAsteroidMedium = 1000,\n            StaticAsteroidSmall = 0,\n            Motherships = 0,\n            StaticDebrisFields = 0\n        };\n\n        public readonly static MyImpostorProperties[] EarthImpostorsProperties = new MyImpostorProperties[]\n        {\n                   new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Billboards,\n                      Material = MyTransparentMaterialEnum.Impostor_StaticAsteroid20m_A,\n                      ImpostorsCount = 1000,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 5,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 10,\n                      MinRadius = 1000,\n                      MaxRadius = 2000,\n                      AnimationSpeed = new Vector4(0.00009f,0,0,0),\n                      Color = Vector3.One\n                  },\n\n                  new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Billboards,\n                      Material = MyTransparentMaterialEnum.Impostor_StaticAsteroid20m_C,\n                      ImpostorsCount = 1000,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 10.1f,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 11,\n                      MinRadius = 1000,\n                      MaxRadius = 2000,\n                      AnimationSpeed = new Vector4(-0.0001f,0,0,0),\n                      Color = Vector3.One\n                  },\n\n                  new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Nebula,\n                      Material = null,\n                      ImpostorsCount = 0,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 1.0f,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 1.3f,\n                      MinRadius = 0.93f,\n                      MaxRadius = 0.93f,\n                      AnimationSpeed = new Vector4(0.003f, 0.001f,0.003f, 0),\n                      Color = new Vector3(15 / 255.0f, 48 / 255.0f, 83 / 255.0f),\n                      Contrast = 2.644f,\n                      Intensity = 0.344f\n                  },\n        };\n\n\n        public static readonly MySunProperties EarthSunProperties = new MySunProperties()\n        {\n            SunDiffuse = new Vector3(150 / 255.0f, 205 / 255.0f, 208 / 255.0f),\n            SunIntensity = MySolarSystemConstants.SunIntensityFromPosition(MyBgrCubeConsts.EARTH_POSITION),\n            SunSpecular = new Vector3(233 / 255.0f, 130 / 255.0f, 29 / 255.0f),\n            BackSunDiffuse = new Vector3(155 / 255.0f, 96 / 255.0f, 40 / 255.0f),\n            BackSunIntensity = 0.2f,\n            AmbientColor = new Vector3(0.14f),\n            AmbientMultiplier = 0.2f,\n            EnvironmentAmbientIntensity = 0.820f,\n            BackgroundColor = Vector3.One\n        };\n\n\n        public static readonly MyFogProperties EarthFogProperties = new MyFogProperties()\n        {\n            FogColor = new Vector3(12 / 255.0f, 38 / 255.0f, 29 / 255.0f),\n            FogNear = 3000,\n            FogFar = 6000,\n            FogMultiplier = 0.58f,\n        };\n\n        public static readonly MyParticleDustProperties EarthDustProperties = new MyParticleDustProperties()\n        {\n            DustBillboardRadius = 30.0f,\n            DustFieldCountInDirectionHalf = 4.0f,\n            DistanceBetween = 30.3f,\n            Color = new Color(5 / 255.0f, 10 / 255.0f, 30 / 255.0f, 1f),\n            Texture = MyTransparentMaterialEnum.Dust,\n        };\n\n\n\n        public readonly static Dictionary<MyMwcVoxelMaterialsEnum, float> EarthAsteroidMaterials = new Dictionary<MyMwcVoxelMaterialsEnum, float>()\n        {\n            { MyMwcVoxelMaterialsEnum.Stone_01, 1},            \n            { MyMwcVoxelMaterialsEnum.Stone_03, 1},            \n            { MyMwcVoxelMaterialsEnum.Stone_04, 1},    \n        };\n\n        public readonly static Dictionary<MyMwcVoxelMaterialsEnum, float> EarthSecondaryMaterials = new Dictionary<MyMwcVoxelMaterialsEnum, float>()\n        {\n            { MyMwcVoxelMaterialsEnum.Magnesium_01, 1},            \n        };\n\n\n\n\n        /// <summary>\n        /// Rebuild the areas\n        /// </summary>\n        public static void CreateEarthArea()\n        {\n            Areas[MySolarSystemAreaEnum.Earth] = new MySolarSystemAreaOrbit()\n            {\n                Name = \"Post Earth\",\n                AreaType = MySolarSystemArea.AreaEnum.PostPlanet,\n                OrbitProperties = new MyOrbitProperties()\n                {\n                    OrbitCenter = Vector3.Zero,\n                    AreaCenter = MyBgrCubeConsts.EARTH_POSITION * MyBgrCubeConsts.MILLION_KM,\n                    LongSpread = 0.3f,\n                    MaxDistanceFromOrbitLow = MyBgrCubeConsts.EARTH_RADIUS * MyBgrCubeConsts.MILLION_KM * 300,\n                    MaxDistanceFromOrbitHigh = MyBgrCubeConsts.EARTH_RADIUS * MyBgrCubeConsts.MILLION_KM * 1200,\n                },\n                SolarMapData = new MySolarMapData()\n                {\n                    DustColor = new Vector3(0.8f, 0.35f, 0.16f),\n                    DustColorVariability = new Vector4(0.15f),\n                    TemplateGroups = new MyTemplateGroupInfo[]\n                    {\n                        new MyTemplateGroupInfo{ Importance = 1, Count = 5, TemplateGroup = MyTemplateGroupEnum.RandomStations},\n                        new MyTemplateGroupInfo{ Importance = 0.5f, Count = 20, TemplateGroup = MyTemplateGroupEnum.RandomStations},\n                    }\n                },\n                SectorData = new MySolarSectorData()\n                {\n                    SunProperties = EarthSunProperties,\n                    FogProperties = EarthFogProperties,\n                    ImpostorProperties = EarthImpostorsProperties,\n                    DebrisProperties = DefaultDebrisProperties,\n\n                    SectorObjectsCounts = EarthObjectsProperties,\n                    PrimaryAsteroidMaterials = EarthAsteroidMaterials,\n                    SecondaryAsteroidMaterials = EarthSecondaryMaterials,\n\n                    ParticleDustProperties = EarthDustProperties,\n                },\n            };\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/SolarSystem/SolarAreas/MySolarSystemFortValiantConstants.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing Microsoft.Xna.Framework;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing System.Diagnostics;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Render.SolarMap;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.AppCode.Game.BackgroundCube;\n\nnamespace MinerWars.AppCode.Game.SolarSystem\n{\n    partial class MySolarSystemConstants\n    {\n        static MySectorObjectCounts ValiantObjectsProperties = new MySectorObjectCounts()\n        {\n            Voxels512 = 0,\n            Voxels256 = 0,\n            Voxels128 = 0,\n            Voxels64 = 0,\n            StaticAsteroidLarge = 300,\n            StaticAsteroidMedium = 5000,\n            StaticAsteroidSmall = 0,\n            Motherships = 0,\n            StaticDebrisFields = 0\n        };\n\n        public readonly static MyImpostorProperties[] ValiantImpostorsProperties = new MyImpostorProperties[]\n        {\n                   new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Billboards,\n                      Material = MyTransparentMaterialEnum.Impostor_StaticAsteroid20m_A,\n                      ImpostorsCount = 1000,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 5,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 10,\n                      MinRadius = 1000,\n                      MaxRadius = 2000,\n                      AnimationSpeed = new Vector4(0.00009f,0,0,0),\n                      Color = Vector3.One\n                  },\n\n                  new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Billboards,\n                      Material = MyTransparentMaterialEnum.Impostor_StaticAsteroid20m_C,\n                      ImpostorsCount = 1000,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 10.1f,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 11,\n                      MinRadius = 1000,\n                      MaxRadius = 2000,\n                      AnimationSpeed = new Vector4(-0.0001f,0,0,0),\n                      Color = Vector3.One\n                  },\n\n                  new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Nebula,\n                      Material = null,\n                      ImpostorsCount = 0,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 1.0f,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 1.3f,\n                      MinRadius = 0.472f,\n                      MaxRadius = 0.472f,\n                      AnimationSpeed = new Vector4(0.004f, 0.001f,0.003f, 0),\n                      Color = new Vector3(255 / 255.0f, 255 / 255.0f, 255 / 255.0f),\n                      Contrast = 6.170f,\n                      Intensity = 1.135f\n                  },\n        };\n\n\n        public static readonly MySunProperties ValiantSunProperties = new MySunProperties()\n        {\n            SunDiffuse = new Vector3(255 / 255.0f, 200 / 255.0f, 127 / 255.0f),\n            SunIntensity = MySolarSystemConstants.SunIntensityFromPosition(MyBgrCubeConsts.VALIANT_POSITION) * 1.5f,\n            SunSpecular = new Vector3(232 / 255.0f, 132 / 255.0f, 29 / 255.0f),\n            BackSunDiffuse = new Vector3(70 / 255.0f, 129 / 255.0f, 181 / 255.0f),\n            BackSunIntensity = 1.39f,\n            AmbientColor = new Vector3(36 / 255.0f, 36 / 255.0f, 36 / 255.0f),\n            AmbientMultiplier = 0.2f,\n            EnvironmentAmbientIntensity = 0.516f,\n        };\n\n\n        public static readonly MyFogProperties ValiantFogProperties = new MyFogProperties()\n        {\n            FogColor = new Vector3(68 / 255.0f, 205 / 255.0f, 255 / 255.0f),\n            FogNear = 5318,\n            FogFar = 10691,\n            FogMultiplier = 0.383f,\n        };\n\n        public static readonly MyParticleDustProperties ValiantDustProperties = new MyParticleDustProperties()\n        {\n            DustBillboardRadius = 102.96f,\n            DustFieldCountInDirectionHalf = 4.477f,\n            DistanceBetween = 112.900f,\n            Color = new Color(117 / 255.0f, 166 / 255.0f, 198 / 40.0f, 1f),\n        };\n\n        public static readonly MyDebrisProperties ValiantDebrisProperties = new MyDebrisProperties()\n        {\n            MaxDistance = 200,\n            CountInDirectionHalf = 2,\n            FullScaleDistance = 70,\n            DistanceBetween = 50.0f,\n            //DebrisEnumValues = MyMwcObjectBuilder_SmallDebris_TypesEnum.\n        };\n\n        public readonly static Dictionary<MyMwcVoxelMaterialsEnum, float> ValiantAsteroidMaterials = new Dictionary<MyMwcVoxelMaterialsEnum, float>()\n        {\n            { MyMwcVoxelMaterialsEnum.Stone_03, 1},\n        };\n\n\n        /// <summary>\n        /// Rebuild the areas\n        /// </summary>\n        public static void CreateValiantArea()\n        {\n            Areas[MySolarSystemAreaEnum.FortValiant] = new MySolarSystemAreaOrbit()\n            {\n                Name = \"Fort Valiant Belt\",\n                AreaType = MySolarSystemArea.AreaEnum.PostPlanet,\n                OrbitProperties = new MyOrbitProperties()\n                {\n                    OrbitCenter = Vector3.Zero,\n                    AreaCenter = MyBgrCubeConsts.VALIANT_POSITION * MyBgrCubeConsts.MILLION_KM,\n                    LongSpread = 0.1f,\n                    MaxDistanceFromOrbitLow = 0.5f * MyBgrCubeConsts.MILLION_KM * 200,\n                    MaxDistanceFromOrbitHigh = 0.6f * MyBgrCubeConsts.MILLION_KM * 200,\n                },\n                SolarMapData = new MySolarMapData()\n                {\n                    DustColor = new Vector3(0.8f, 0.35f, 0.16f),\n                    DustColorVariability = new Vector4(0.15f),\n                    TemplateGroups = new MyTemplateGroupInfo[]\n                    {\n                        new MyTemplateGroupInfo{ Importance = 1, Count = 5, TemplateGroup = MyTemplateGroupEnum.RandomStations},\n                        new MyTemplateGroupInfo{ Importance = 0.5f, Count = 20, TemplateGroup = MyTemplateGroupEnum.RandomStations},\n                    }\n                },\n                SectorData = new MySolarSectorData()\n                {\n                    SunProperties = ValiantSunProperties,\n                    FogProperties = ValiantFogProperties,\n                    ImpostorProperties = ValiantImpostorsProperties,\n                    DebrisProperties = ValiantDebrisProperties,\n\n                    SectorObjectsCounts = ValiantObjectsProperties,\n                    PrimaryAsteroidMaterials = ValiantAsteroidMaterials,\n                    SecondaryAsteroidMaterials = new Dictionary<MyMwcVoxelMaterialsEnum, float>()\n                    {\n                        { MyMwcVoxelMaterialsEnum.Uranite_01, 0.5f},\n                        { MyMwcVoxelMaterialsEnum.Gold_01, 0.5f},\n                        { MyMwcVoxelMaterialsEnum.Ice_01, 0.5f},\n                    },\n\n                    ParticleDustProperties = ValiantDustProperties,\n                },\n            };\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/SolarSystem/SolarAreas/MySolarSystemHallConstants.cs",
    "content": "﻿using MinerWarsMath;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.AppCode.Game.BackgroundCube;\n\nnamespace MinerWars.AppCode.Game.SolarSystem\n{\n    partial class MySolarSystemConstants\n    {\n        static MySectorObjectCounts HallObjectsProperties = new MySectorObjectCounts()\n        {\n            Voxels512 = 0,\n            Voxels256 = 10,\n            Voxels128 = 10,\n            Voxels64 = 10,\n            StaticAsteroidLarge = 50,\n            StaticAsteroidMedium = 2500,\n            StaticAsteroidSmall = 4000,\n            Motherships = 0,\n            StaticDebrisFields = 0\n        };\n\n        public readonly static MyImpostorProperties[] HallImpostorsProperties = new MyImpostorProperties[]\n        {\n                   new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Billboards,\n                      Material = MyTransparentMaterialEnum.Impostor_StaticAsteroid20m_A,\n                      ImpostorsCount = 1000,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 5,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 10,\n                      MinRadius = 1000,\n                      MaxRadius = 2000,\n                      AnimationSpeed = new Vector4(0.00009f,0,0,0),\n                      Color = Vector3.One\n                  },\n\n                  new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Billboards,\n                      Material = MyTransparentMaterialEnum.Impostor_StaticAsteroid20m_C,\n                      ImpostorsCount = 1000,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 10.1f,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 11,\n                      MinRadius = 1000,\n                      MaxRadius = 2000,\n                      AnimationSpeed = new Vector4(-0.0001f,0,0,0),\n                      Color = Vector3.One\n                  },\n\n                  new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Nebula,\n                      Material = null,\n                      ImpostorsCount = 0,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 1.0f,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 1.3f,\n                      MinRadius = 0.93f,\n                      MaxRadius = 0.93f,\n                      AnimationSpeed = new Vector4(0.003f, 0.001f,0.003f, 0),\n                      Color = new Vector3(222 / 255.0f, 195 / 255.0f, 225 / 255.0f),\n                      Contrast = 2.644f,\n                      Intensity = 0.65f\n                  },\n        };\n\n\n        public static readonly MySunProperties HallSunProperties = new MySunProperties()\n        {\n            SunDiffuse = new Vector3(150 / 255.0f, 205 / 255.0f, 208 / 255.0f),\n            SunIntensity = MySolarSystemConstants.SunIntensityFromPosition(MyBgrCubeConsts.EARTH_POSITION),\n            SunSpecular = new Vector3(219 / 255.0f, 220 / 255.0f, 165 / 255.0f),\n            BackSunDiffuse = new Vector3(155 / 255.0f, 96 / 255.0f, 40 / 255.0f),\n            BackSunIntensity = 1.159f,\n            AmbientColor = new Vector3(0.14f),\n            AmbientMultiplier = 0.942f,\n            EnvironmentAmbientIntensity = 0.942f,\n            BackgroundColor = Vector3.One\n        };\n\n\n        public static readonly MyFogProperties HallFogProperties = new MyFogProperties()\n        {\n            FogColor = new Vector3(23 / 255.0f, 70 / 255.0f, 89 / 255.0f),\n            FogNear = 5600,\n            FogFar = 12400,\n            FogMultiplier = 0.189f,\n            FogBacklightMultiplier = 0.825f,\n        };\n\n        public static readonly MyParticleDustProperties HallDustProperties = new MyParticleDustProperties()\n        {\n            DustBillboardRadius = 40.0f,\n            DustFieldCountInDirectionHalf = 6.0f,\n            DistanceBetween = 42.3f,\n            Color = new Color(146 / 255.0f, 184 / 255.0f, 198 / 255.0f, 1f),\n            Texture = MyTransparentMaterialEnum.Dust,\n        };\n\n\n        /// <summary>\n        /// Rebuild the areas\n        /// </summary>\n        public static void CreateHallArea()\n        {\n            Areas[MySolarSystemAreaEnum.Hall] = new MySolarSystemAreaOrbit()\n            {\n                Name = \"Hall area\",\n                AreaType = MySolarSystemArea.AreaEnum.PostPlanet,\n                OrbitProperties = new MyOrbitProperties()\n                {\n                    OrbitCenter = Vector3.Zero,\n                    AreaCenter = new Vector3(11, 0, -511) * MyBgrCubeConsts.MILLION_KM,\n                    LongSpread = 0.3f,\n                    MaxDistanceFromOrbitLow = MyBgrCubeConsts.EARTH_RADIUS * MyBgrCubeConsts.MILLION_KM * 300,\n                    MaxDistanceFromOrbitHigh = MyBgrCubeConsts.EARTH_RADIUS * MyBgrCubeConsts.MILLION_KM * 400,\n                },\n                SolarMapData = new MySolarMapData()\n                {\n                    DustColor = new Vector3(0.8f, 0.35f, 0.16f),\n                    DustColorVariability = new Vector4(0.15f),\n                    TemplateGroups = new MyTemplateGroupInfo[]\n                    {\n                        new MyTemplateGroupInfo{ Importance = 1, Count = 5, TemplateGroup = MyTemplateGroupEnum.RandomStations},\n                        new MyTemplateGroupInfo{ Importance = 0.5f, Count = 20, TemplateGroup = MyTemplateGroupEnum.RandomStations},\n                    }\n                },\n                SectorData = new MySolarSectorData()\n                {\n                    SunProperties = HallSunProperties,\n                    FogProperties = HallFogProperties,\n                    ImpostorProperties = HallImpostorsProperties,\n                    DebrisProperties = DefaultDebrisProperties,\n\n                    SectorObjectsCounts = HallObjectsProperties,\n                    PrimaryAsteroidMaterials = DefaultAsteroidMaterials,\n                    SecondaryAsteroidMaterials = DefaultSecondaryMaterials,\n\n                    ParticleDustProperties = HallDustProperties,\n                },\n            };\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/SolarSystem/SolarAreas/MySolarSystemHell25DConstants.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing System.Diagnostics;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.AppCode.Game.BackgroundCube;\n\nnamespace MinerWars.AppCode.Game.SolarSystem\n{\n    partial class MySolarSystemConstants\n    {\n        public readonly static Dictionary<MyMwcVoxelMaterialsEnum, float> Hell25PrimaryAsteroidMaterials = new Dictionary<MyMwcVoxelMaterialsEnum, float>()\n        {\n            { MyMwcVoxelMaterialsEnum.Sandstone_01, 1},\n            { MyMwcVoxelMaterialsEnum.Stone_03, 1},\n        };\n\n        public readonly static Dictionary<MyMwcVoxelMaterialsEnum, float> Hell25SecondaryAsteroidMaterials = new Dictionary<MyMwcVoxelMaterialsEnum, float>()\n        {\n            { MyMwcVoxelMaterialsEnum.Lava_01, 1},\n            { MyMwcVoxelMaterialsEnum.Treasure_01, 1},\n        };\n\n        /// <summary>\n        /// Rebuild the areas\n        /// </summary>\n        public static void CreateHell25DArea()\n        {\n            Areas[MySolarSystemAreaEnum.Hell25D] = new MySolarSystemAreaOrbit()\n            {\n                Name = \"Hell 25D\",\n                AreaType = MySolarSystemArea.AreaEnum.PostPlanet,\n                OrbitProperties = new MyOrbitProperties()\n                {\n                    OrbitCenter = Vector3.Zero,\n                    AreaCenter = MyBgrCubeConsts.LAIKA_POSITION * MyBgrCubeConsts.MILLION_KM * 1000,\n                    LongSpread = 0.001f,\n                    MaxDistanceFromOrbitLow = MyBgrCubeConsts.MERCURY_RADIUS * MyBgrCubeConsts.MILLION_KM * 100,\n                    MaxDistanceFromOrbitHigh = MyBgrCubeConsts.MERCURY_RADIUS * MyBgrCubeConsts.MILLION_KM * 200,\n                },\n                SolarMapData = new MySolarMapData()\n                {\n                    DustColor = new Vector3(0.9f, 0.60f, 0.37f),\n                    DustColorVariability = new Vector4(0.15f),\n                    TemplateGroups = new MyTemplateGroupInfo[]\n                    {\n                        new MyTemplateGroupInfo{ Importance = 1, Count = 5, TemplateGroup = MyTemplateGroupEnum.RandomStations},\n                        new MyTemplateGroupInfo{ Importance = 0.5f, Count = 20, TemplateGroup = MyTemplateGroupEnum.RandomStations},\n                    }\n                },\n                SectorData = new MySolarSectorData()\n                {\n                    BackgroundTexture = \"BackgroundCube\",\n                    SunProperties = LaikaSunProperties,\n                    FogProperties = LaikaFogProperties,\n                    ImpostorProperties = LaikaImpostorsProperties,\n                    DebrisProperties = LaikaDebrisProperties,\n\n                    SectorObjectsCounts = LaikaObjectsProperties,\n                    PrimaryAsteroidMaterials = Hell25PrimaryAsteroidMaterials,\n                    SecondaryAsteroidMaterials = Hell25SecondaryAsteroidMaterials,\n\n                    ParticleDustProperties = LaikaDustProperties,\n                },\n            };\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/SolarSystem/SolarAreas/MySolarSystemJunkyardConstants.cs",
    "content": "﻿using System.Collections.Generic;\nusing MinerWarsMath;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.AppCode.Game.BackgroundCube;\n\nnamespace MinerWars.AppCode.Game.SolarSystem\n{\n    partial class MySolarSystemConstants\n    {\n        static MySectorObjectCounts JunkyardObjectsProperties = new MySectorObjectCounts()\n        {\n            Voxels512 = 0,\n            Voxels256 = 10,\n            Voxels128 = 10,\n            Voxels64 = 10,\n            StaticAsteroidLarge = 0,\n            StaticAsteroidMedium = 5000,\n            StaticAsteroidSmall = 0,\n            Motherships = 0,\n            StaticDebrisFields = 0\n        };\n\n        public readonly static MyImpostorProperties[] JunkyardImpostorsProperties = new MyImpostorProperties[]\n        {\n                   new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Billboards,\n                      Material = MyTransparentMaterialEnum.Impostor_StaticAsteroid20m_A,\n                      ImpostorsCount = 1000,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 5,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 10,\n                      MinRadius = 1000,\n                      MaxRadius = 2000,\n                      AnimationSpeed = new Vector4(0.00009f,0,0,0),\n                      Color = Vector3.One\n                  },\n\n                  new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Billboards,\n                      Material = MyTransparentMaterialEnum.Impostor_StaticAsteroid20m_C,\n                      ImpostorsCount = 1000,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 10.1f,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 11,\n                      MinRadius = 1000,\n                      MaxRadius = 2000,\n                      AnimationSpeed = new Vector4(-0.0001f,0,0,0),\n                      Color = Vector3.One\n                  },\n\n                  new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Nebula,\n                      Material = null,\n                      ImpostorsCount = 0,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 1.0f,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 1.3f,\n                      MinRadius = 1.328f,\n                      MaxRadius = 1.328f,\n                      AnimationSpeed = new Vector4(0.005f, 0.001f,0.003f, 0),\n                      Color = new Vector3(255 / 255.0f, 251 / 255.0f, 208 / 255.0f),\n                      Contrast = 2.664f,\n                      Intensity = 0.604f\n                  },\n        };\n\n\n        public static readonly MySunProperties JunkyardSunProperties = new MySunProperties()\n        {\n            SunDiffuse = new Vector3(0 / 255.0f, 0 / 255.0f, 0 / 255.0f),\n            SunIntensity = 0,\n            SunSpecular = new Vector3(187 / 255.0f, 82 / 255.0f, 50 / 255.0f),\n            BackSunDiffuse = new Vector3(255 / 255.0f, 246 / 255.0f, 239 / 255.0f),\n            BackSunIntensity = 0.477f,\n            AmbientColor = new Vector3(36 / 255.0f, 36 / 255.0f, 36 / 255.0f),\n            AmbientMultiplier = 0.2f,\n            EnvironmentAmbientIntensity = 0.441f,\n        };\n\n\n        public static readonly MyFogProperties JunkyardFogProperties = new MyFogProperties()\n        {\n            FogColor = new Vector3(139 / 255.0f, 134 / 255.0f, 130 / 255.0f),\n            FogNear = 3000,\n            FogFar = 7338,\n            FogMultiplier = 0.226f,\n            FogBacklightMultiplier = 0.851f,\n        };\n\n        public static readonly MyParticleDustProperties JunkyardDustProperties = new MyParticleDustProperties()\n        {\n            Enabled = true,\n            DustBillboardRadius = 103.054f,\n            DustFieldCountInDirectionHalf = 8.072f,\n            DistanceBetween = 127.778f,\n            Color = new Color(205 / 255.0f, 197 / 255.0f, 170 / 255.0f),\n        };\n\n\n        public static readonly MyDebrisProperties JunkyardDebrisProperties = new MyDebrisProperties()\n        {\n            Enabled = true,\n            MaxDistance = 200,\n            CountInDirectionHalf = 4,\n            FullScaleDistance = 70,\n            DistanceBetween = 30.0f,\n            //DebrisEnumValues = MyMwcObjectBuilder_SmallDebris_TypesEnum.\n        };\n\n        public readonly static Dictionary<MyMwcVoxelMaterialsEnum, float> JunkyardAsteroidMaterials = new Dictionary<MyMwcVoxelMaterialsEnum, float>()\n        {        \n            {  MyMwcVoxelMaterialsEnum.Stone_05, 1},\n            {  MyMwcVoxelMaterialsEnum.Ice_01, 1},\n             {  MyMwcVoxelMaterialsEnum.Sandstone_01, 1},\n              {  MyMwcVoxelMaterialsEnum.Gold_01, 1},\n        };\n\n        public readonly static Dictionary<MyMwcVoxelMaterialsEnum, float> JunkyardSecondaryMaterials = new Dictionary<MyMwcVoxelMaterialsEnum, float>()\n        {\n            {  MyMwcVoxelMaterialsEnum.Lava_01, 1},\n            {  MyMwcVoxelMaterialsEnum.Uranite_01, 1},\n            {  MyMwcVoxelMaterialsEnum.Cobalt_01, 1},\n            {  MyMwcVoxelMaterialsEnum.Helium3_01, 1},\n        };\n\n\n\n        /// <summary>\n        /// Rebuild the areas\n        /// </summary>\n        public static void CreateJunkyardArea()\n        {\n            Areas[MySolarSystemAreaEnum.Junkyard] = new MySolarSystemAreaOrbit()\n            {\n                Name = \"Junkyard\",\n                AreaType = MySolarSystemArea.AreaEnum.PostPlanet,\n                OrbitProperties = new MyOrbitProperties()\n                {\n                    OrbitCenter = Vector3.Zero,\n                    AreaCenter = MySolarSystemUtils.SectorsToKm(MyBgrCubeConsts.JUNKYARD_SECTOR),\n                    LongSpread = 0.1f,\n                    MaxDistanceFromOrbitLow = 2.1f * MyBgrCubeConsts.MILLION_KM,\n                    MaxDistanceFromOrbitHigh = 8.4f * MyBgrCubeConsts.MILLION_KM,\n                },\n                SolarMapData = new MySolarMapData()\n                {\n                    DustColor = new Vector3(0.2f, 0.21f, 0.18f),\n                    DustColorVariability = new Vector4(0.15f),\n                    TemplateGroups = new MyTemplateGroupInfo[]\n                    {\n                        new MyTemplateGroupInfo{ Importance = 1, Count = 0, TemplateGroup = MyTemplateGroupEnum.RandomStations},\n                        new MyTemplateGroupInfo{ Importance = 0.5f, Count = 0, TemplateGroup = MyTemplateGroupEnum.RandomStations},\n                    }\n                },\n                SectorData = new MySolarSectorData()\n                {\n                    SunProperties = JunkyardSunProperties,\n                    FogProperties = JunkyardFogProperties,\n                    ImpostorProperties = JunkyardImpostorsProperties,\n                    DebrisProperties = DefaultDebrisProperties,\n\n                    SectorObjectsCounts = JunkyardObjectsProperties,\n                    PrimaryAsteroidMaterials = JunkyardAsteroidMaterials,\n                    SecondaryAsteroidMaterials = JunkyardSecondaryMaterials,\n\n                    ParticleDustProperties = JunkyardDustProperties,\n                },\n            };\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/SolarSystem/SolarAreas/MySolarSystemJupiter2Constants.cs",
    "content": "﻿using MinerWarsMath;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.AppCode.Game.BackgroundCube;\n\nnamespace MinerWars.AppCode.Game.SolarSystem\n{ \n    partial class MySolarSystemConstants\n    {\n        static MySectorObjectCounts Jupiter2ObjectsProperties = new MySectorObjectCounts()\n        {\n            Voxels512 = 0,\n            Voxels256 = 10,\n            Voxels128 = 10,\n            Voxels64 = 10,\n            StaticAsteroidLarge = 30,\n            StaticAsteroidMedium = 1000,\n            StaticAsteroidSmall = 0,\n            Motherships = 0,\n            StaticDebrisFields = 0\n        };\n\n        public readonly static MyImpostorProperties[] Jupiter2ImpostorsProperties = new MyImpostorProperties[]\n        {\n                   new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Billboards,\n                      Material = MyTransparentMaterialEnum.Impostor_StaticAsteroid20m_A,\n                      ImpostorsCount = 1000,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 5,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 10,\n                      MinRadius = 1000,\n                      MaxRadius = 2000,\n                      AnimationSpeed = new Vector4(0.00009f,0,0,0),\n                      Color = Vector3.One\n                  },\n\n                  new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Billboards,\n                      Material = MyTransparentMaterialEnum.Impostor_StaticAsteroid20m_C,\n                      ImpostorsCount = 1000,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 10.1f,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 11,\n                      MinRadius = 1000,\n                      MaxRadius = 2000,\n                      AnimationSpeed = new Vector4(-0.0001f,0,0,0),\n                      Color = Vector3.One\n                  },\n\n                  new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Nebula,\n                      Material = null,\n                      ImpostorsCount = 0,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 1.0f,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 1.3f,\n                      MinRadius = 2f,\n                      MaxRadius = 2f,\n                      AnimationSpeed = new Vector4(0.002f, 0.005f,0.003f, 0),\n                      Color = new Vector3(53 / 255.0f, 45 / 255.0f, 33 / 255.0f),\n                      Contrast = 6.670f,\n                      Intensity = 2.931f,\n                      Enabled = false\n                  },\n        };\n\n\n        public static readonly MySunProperties Jupiter2SunProperties = new MySunProperties()\n        {\n            SunDiffuse = new Vector3(255 / 255.0f, 166 / 255.0f, 72 / 255.0f),\n            SunIntensity = MySolarSystemConstants.SunIntensityFromPosition(MyBgrCubeConsts.JUPITER2_POSITION) * 2,\n            SunSpecular = new Vector3(187 / 255.0f, 82 / 255.0f, 50 / 255.0f),\n            BackSunDiffuse = new Vector3(56 / 255.0f, 46 / 255.0f, 36 / 255.0f),\n            BackSunIntensity = 1.39f,\n            AmbientColor = new Vector3(0.14f),\n            AmbientMultiplier = 0.2f,\n            EnvironmentAmbientIntensity = 0.450f,\n        };\n\n\n        public static readonly MyFogProperties Jupiter2FogProperties = new MyFogProperties()\n        {\n            FogColor = new Vector3(56 / 255.0f, 23 / 255.0f, 6 / 255.0f),\n            FogNear = 3000,\n            FogFar = 20000,\n            FogMultiplier = 0.73f,\n            FogBacklightMultiplier = 2.9f,\n        };\n\n        public static readonly MyParticleDustProperties Jupiter2DustProperties = new MyParticleDustProperties()\n        {\n            DustBillboardRadius = 117.96f,\n            DustFieldCountInDirectionHalf = 6.477f,\n            DistanceBetween = 91.900f,\n            Color = new Color(7 / 255.0f, 11 / 255.0f, 15 / 255.0f, 1f),\n        };\n\n\n\n\n\n        /// <summary>\n        /// Rebuild the areas\n        /// </summary>\n        public static void CreateJupiter2Area()\n        {\n            Areas[MySolarSystemAreaEnum.Jupiter2] = new MySolarSystemAreaOrbit()\n            {\n                Name = \"Jupiter area 2\",\n                AreaType = MySolarSystemArea.AreaEnum.PostPlanet,\n                OrbitProperties = new MyOrbitProperties()\n                {\n                    OrbitCenter = Vector3.Zero,\n                    AreaCenter = MyBgrCubeConsts.JUPITER2_POSITION * MyBgrCubeConsts.MILLION_KM,\n                    LongSpread = 0.1f,\n                    MaxDistanceFromOrbitLow = MyBgrCubeConsts.JUPITER2_RADIUS * MyBgrCubeConsts.MILLION_KM * 300,\n                    MaxDistanceFromOrbitHigh = MyBgrCubeConsts.JUPITER2_RADIUS * MyBgrCubeConsts.MILLION_KM * 800,\n                },\n                SolarMapData = new MySolarMapData()\n                {\n                    DustColor = new Vector3(0.8f, 0.35f, 0.16f),\n                    DustColorVariability = new Vector4(0.15f),\n                    TemplateGroups = new MyTemplateGroupInfo[]\n                    {\n                        new MyTemplateGroupInfo{ Importance = 1, Count = 5, TemplateGroup = MyTemplateGroupEnum.RandomStations},\n                        new MyTemplateGroupInfo{ Importance = 0.5f, Count = 20, TemplateGroup = MyTemplateGroupEnum.RandomStations},\n                    }\n                },\n                SectorData = new MySolarSectorData()\n                {\n                    SunProperties = Jupiter2SunProperties,\n                    FogProperties = Jupiter2FogProperties,\n                    ImpostorProperties = Jupiter2ImpostorsProperties,\n                    DebrisProperties = DefaultDebrisProperties,\n\n                    SectorObjectsCounts = Jupiter2ObjectsProperties,\n                    PrimaryAsteroidMaterials = DefaultAsteroidMaterials,\n                    SecondaryAsteroidMaterials = DefaultSecondaryMaterials,\n\n                    ParticleDustProperties = Jupiter2DustProperties,\n                },\n            };\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/SolarSystem/SolarAreas/MySolarSystemJupiterBorderConstants.cs",
    "content": "﻿using System.Collections.Generic;\nusing MinerWarsMath;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.AppCode.Game.BackgroundCube;\n\nnamespace MinerWars.AppCode.Game.SolarSystem\n{\n    partial class MySolarSystemConstants\n    {\n        static MySectorObjectCounts JupiterBorderObjectsProperties = new MySectorObjectCounts()\n        {\n            Voxels512 = 0,\n            Voxels256 = 10,\n            Voxels128 = 10,\n            Voxels64 = 10,\n            StaticAsteroidLarge = 0,\n            StaticAsteroidMedium = 5000,\n            StaticAsteroidSmall = 0,\n            Motherships = 0,\n            StaticDebrisFields = 0\n        };\n\n        public readonly static MyImpostorProperties[] JupiterBorderImpostorsProperties = new MyImpostorProperties[]\n        {\n                   new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Billboards,\n                      Material = MyTransparentMaterialEnum.Impostor_StaticAsteroid20m_A,\n                      ImpostorsCount = 1000,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 5,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 10,\n                      MinRadius = 1000,\n                      MaxRadius = 2000,\n                      AnimationSpeed = new Vector4(0.00009f,0,0,0),\n                      Color = Vector3.One\n                  },\n\n                  new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Billboards,\n                      Material = MyTransparentMaterialEnum.Impostor_StaticAsteroid20m_C,\n                      ImpostorsCount = 1000,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 10.1f,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 11,\n                      MinRadius = 1000,\n                      MaxRadius = 2000,\n                      AnimationSpeed = new Vector4(-0.0001f,0,0,0),\n                      Color = Vector3.One\n                  },\n\n                  new MyImpostorProperties()\n                  {     \n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Nebula,\n                      Material = null,\n                      ImpostorsCount = 0,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 1.0f,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 1.3f,\n                      MinRadius = 1.515f,\n                      MaxRadius = 1.515f,\n                      AnimationSpeed = new Vector4(0.001f, 0.002f, 0.003f, 0),\n                      Color = new Vector3(255 / 255.0f, 251 / 255.0f, 255 / 255.0f),\n                      Contrast = 1.037f,\n                      Intensity = 0.437f\n                  },\n        };\n\n\n        public static readonly MySunProperties JupiterBorderSunProperties = new MySunProperties()\n        {\n            SunDiffuse = new Vector3(155 / 255.0f, 205 / 255.0f, 255 / 255.0f),\n            SunIntensity = 2.337f,\n            SunSpecular = new Vector3(21 / 255.0f, 11 / 255.0f, 3 / 255.0f),\n            BackSunDiffuse = new Vector3(18 / 255.0f, 165 / 255.0f, 255 / 255.0f),\n            BackSunIntensity = 0.945f,\n            AmbientColor = new Vector3(3 / 255.0f, 3 / 255.0f, 3 / 255.0f),\n            AmbientMultiplier = 1.446f,\n            EnvironmentAmbientIntensity = 0.820f,\n        };\n\n\n        public static readonly MyFogProperties JupiterBorderFogProperties = new MyFogProperties()\n        {\n            FogColor = new Vector3(13 / 255.0f, 132 / 255.0f, 255 / 255.0f),\n            FogNear = 1928,\n            FogFar = 9004,\n            FogMultiplier = 0.177f,\n            FogBacklightMultiplier = 0.942f,\n        };\n\n        public static readonly MyParticleDustProperties JupiterBorderDustProperties = new MyParticleDustProperties()\n        {\n            Enabled = true,\n            DustBillboardRadius = 95.592f,\n            DustFieldCountInDirectionHalf = 1.033f,\n            DistanceBetween = 109.159f,\n            Color = new Color(51 / 255.0f, 134 / 255.0f, 235 / 255.0f, 1f),\n        };\n        \n        public static readonly MyGodRaysProperties JupiterBorderGodRaysProperties = new MyGodRaysProperties()\n        {\n            Density = 0.21f,\n            Weight = 1.161f,\n            Decay = 0.937f,\n            Exposition = 0.077f,\n            Enabled = true,\n        };\n\n        public readonly static Dictionary<MyMwcVoxelMaterialsEnum, float> JupiterBorderAsteroidMaterials = new Dictionary<MyMwcVoxelMaterialsEnum, float>()\n        {\n            { MyMwcVoxelMaterialsEnum.Stone_10, 1 },\n            { MyMwcVoxelMaterialsEnum.Stone_13_Wall_01, 1 },\n        };\n\n        public readonly static Dictionary<MyMwcVoxelMaterialsEnum, float> JupiterBorderSecondaryMaterials = new Dictionary<MyMwcVoxelMaterialsEnum, float>()\n        {\n            { MyMwcVoxelMaterialsEnum.Silicon_01, 1 },\n            { MyMwcVoxelMaterialsEnum.Gold_01, 1 },\n        };\n\n\n        /// <summary>\n        /// Rebuild the areas\n        /// </summary>\n        public static void CreateJupiterBorderArea()\n        {\n            Areas[MySolarSystemAreaEnum.PostJupiterBorder] = new MySolarSystemAreaOrbit()\n            {\n                Name = \"Jupiter border\",\n                AreaType = MySolarSystemArea.AreaEnum.PostPlanet,\n                OrbitProperties = new MyOrbitProperties()\n                {\n                    OrbitCenter = Vector3.Zero,\n                    AreaCenter = MyBgrCubeConsts.JUPITERBORDER_POSITION * MyBgrCubeConsts.MILLION_KM * 1.13f,\n                    LongSpread = 0.1f,\n                    MaxDistanceFromOrbitLow = MyBgrCubeConsts.JUPITER_RADIUS * MyBgrCubeConsts.MILLION_KM * 30,\n                    MaxDistanceFromOrbitHigh = MyBgrCubeConsts.JUPITER_RADIUS * MyBgrCubeConsts.MILLION_KM * 180,\n                },\n                SolarMapData = new MySolarMapData()\n                {\n                    DustColor = new Vector3(255 / 255.0f, 193 / 255.0f, 193 / 255.0f),\n                    DustColorVariability = new Vector4(0.15f),\n                    TemplateGroups = new MyTemplateGroupInfo[]\n                    {\n                        new MyTemplateGroupInfo{ Importance = 1, Count = 5, TemplateGroup = MyTemplateGroupEnum.RandomStations},\n                        new MyTemplateGroupInfo{ Importance = 0.5f, Count = 20, TemplateGroup = MyTemplateGroupEnum.RandomStations},\n                    }\n                },\n                SectorData = new MySolarSectorData()\n                {\n                    SunProperties = JupiterBorderSunProperties,\n                    FogProperties = JupiterBorderFogProperties,\n                    ImpostorProperties = JupiterBorderImpostorsProperties,\n                    DebrisProperties = DefaultDebrisProperties,\n\n                    SectorObjectsCounts = JupiterBorderObjectsProperties,\n                    PrimaryAsteroidMaterials = JupiterBorderAsteroidMaterials,\n                    SecondaryAsteroidMaterials = JupiterBorderSecondaryMaterials,\n\n                   ParticleDustProperties = JupiterBorderDustProperties,\n                   GodRaysProperties = JupiterBorderGodRaysProperties,\n                },\n            };\n        }\n    }\n      \n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/SolarSystem/SolarAreas/MySolarSystemJupiterConstants.cs",
    "content": "﻿using MinerWarsMath;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.AppCode.Game.BackgroundCube;\n\nnamespace MinerWars.AppCode.Game.SolarSystem\n{\n    partial class MySolarSystemConstants\n    {\n        static MySectorObjectCounts JupiterObjectsProperties = new MySectorObjectCounts()\n        {\n            Voxels512 = 0,\n            Voxels256 = 0,\n            Voxels128 = 0,\n            Voxels64 = 0,\n            StaticAsteroidLarge = 300,\n            StaticAsteroidMedium = 5000,\n            StaticAsteroidSmall = 0,\n            Motherships = 0,\n            StaticDebrisFields = 0\n        };\n\n        public readonly static MyImpostorProperties[] JupiterImpostorsProperties = new MyImpostorProperties[]\n        {\n                   new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Billboards,\n                      Material = MyTransparentMaterialEnum.Impostor_StaticAsteroid20m_A,\n                      ImpostorsCount = 1000,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 5,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 10,\n                      MinRadius = 1000,\n                      MaxRadius = 2000,\n                      AnimationSpeed = new Vector4(0.00009f,0,0,0),\n                      Color = Vector3.One\n                  },\n\n                  new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Billboards,\n                      Material = MyTransparentMaterialEnum.Impostor_StaticAsteroid20m_C,\n                      ImpostorsCount = 1000,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 10.1f,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 11,\n                      MinRadius = 1000,\n                      MaxRadius = 2000,\n                      AnimationSpeed = new Vector4(-0.0001f,0,0,0),\n                      Color = Vector3.One\n                  },\n\n                  new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Nebula,\n                      Material = null,\n                      ImpostorsCount = 0,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 1.0f,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 1.3f,\n                      MinRadius = 3.5f,\n                      MaxRadius = 3.5f,\n                      AnimationSpeed = new Vector4(0.004f, 0.001f,0.003f, 0),\n                      Color = new Vector3(95 / 255.0f, 63 / 255.0f, 42 / 255.0f),\n                      Contrast = 6.170f,\n                      Intensity = 0.431f\n                  },\n        };\n\n\n        public static readonly MySunProperties JupiterSunProperties = new MySunProperties()\n        {\n            SunDiffuse = new Vector3(255 / 255.0f, 166 / 255.0f, 72 / 255.0f),\n            SunIntensity = MySolarSystemConstants.SunIntensityFromPosition(MyBgrCubeConsts.JUPITER_POSITION) * 2,\n            SunSpecular = new Vector3(187 / 255.0f, 82 / 255.0f, 50 / 255.0f),\n            BackSunDiffuse = new Vector3(16 / 255.0f, 144 / 255.0f, 95 / 255.0f),\n            BackSunIntensity = 1.39f,\n            AmbientColor = new Vector3(0.14f),\n            AmbientMultiplier = 0.2f,\n            EnvironmentAmbientIntensity = 0.450f,\n        };\n\n\n        public static readonly MyFogProperties JupiterFogProperties = new MyFogProperties()\n        {\n            FogColor = new Vector3(105 / 255.0f, 82 / 255.0f, 38 / 255.0f),\n            FogNear = 3000,\n            FogFar = 20000,\n            FogMultiplier = 0.65f,\n        };\n\n        public static readonly MyParticleDustProperties JupiterDustProperties = new MyParticleDustProperties()\n        {\n            DustBillboardRadius = 102.96f,\n            DustFieldCountInDirectionHalf = 4.477f,\n            DistanceBetween = 112.900f,\n            Color = new Color(200 / 255.0f, 110 / 255.0f, 0 / 40.0f, 1f),\n        };\n\n\n\n\n\n        /// <summary>\n        /// Rebuild the areas\n        /// </summary>\n        public static void CreateJupiterArea()\n        {\n            Areas[MySolarSystemAreaEnum.Jupiter] = new MySolarSystemAreaOrbit()\n            {\n                Name = \"Post Jupiter\",\n                AreaType = MySolarSystemArea.AreaEnum.PostPlanet,\n                OrbitProperties = new MyOrbitProperties()\n                {\n                    OrbitCenter = Vector3.Zero,\n                    AreaCenter = MyBgrCubeConsts.JUPITER_POSITION * MyBgrCubeConsts.MILLION_KM,\n                    LongSpread = 0.3f,\n                    MaxDistanceFromOrbitLow = MyBgrCubeConsts.JUPITER_RADIUS * MyBgrCubeConsts.MILLION_KM * 300,\n                    MaxDistanceFromOrbitHigh = MyBgrCubeConsts.JUPITER_RADIUS * MyBgrCubeConsts.MILLION_KM * 1200,\n                },\n                SolarMapData = new MySolarMapData()\n                {\n                    DustColor = new Vector3(0.8f, 0.35f, 0.16f),\n                    DustColorVariability = new Vector4(0.15f),\n                    TemplateGroups = new MyTemplateGroupInfo[]\n                    {\n                        new MyTemplateGroupInfo{ Importance = 1, Count = 5, TemplateGroup = MyTemplateGroupEnum.RandomStations},\n                        new MyTemplateGroupInfo{ Importance = 0.5f, Count = 20, TemplateGroup = MyTemplateGroupEnum.RandomStations},\n                    }\n                },\n                SectorData = new MySolarSectorData()\n                {\n                    SunProperties = JupiterSunProperties,\n                    FogProperties = JupiterFogProperties,\n                    ImpostorProperties = JupiterImpostorsProperties,\n                    DebrisProperties = DefaultDebrisProperties,\n\n                    SectorObjectsCounts = JupiterObjectsProperties,\n                    PrimaryAsteroidMaterials = DefaultAsteroidMaterials,\n                    SecondaryAsteroidMaterials = DefaultSecondaryMaterials,\n\n                    ParticleDustProperties = JupiterDustProperties,\n                },\n            };\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/SolarSystem/SolarAreas/MySolarSystemLaikaConstants.cs",
    "content": "﻿using System.Collections.Generic;\nusing MinerWarsMath;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.AppCode.Game.BackgroundCube;\n\nnamespace MinerWars.AppCode.Game.SolarSystem\n{\n    partial class MySolarSystemConstants\n    {\n        static MySectorObjectCounts LaikaObjectsProperties = new MySectorObjectCounts()\n        {\n            Voxels512 = 0,\n            Voxels256 = 10,\n            Voxels128 = 10,\n            Voxels64 = 10,\n            StaticAsteroidLarge = 3,\n            StaticAsteroidMedium = 1700,\n            StaticAsteroidSmall = 0,\n            Motherships = 0,\n            StaticDebrisFields = 0\n        };\n\n        public readonly static MyImpostorProperties[] LaikaImpostorsProperties = new MyImpostorProperties[]\n        {\n                   new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Billboards,\n                      Material = MyTransparentMaterialEnum.Impostor_StaticAsteroid20m_A,\n                      ImpostorsCount = 1000,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 5,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 10,\n                      MinRadius = 1000,\n                      MaxRadius = 2000,\n                      AnimationSpeed = new Vector4(0.00009f,0,0,0),\n                      Color = Vector3.One\n                  },\n\n                  new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Billboards,\n                      Material = MyTransparentMaterialEnum.Impostor_StaticAsteroid20m_C,\n                      ImpostorsCount = 1000,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 10.1f,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 11,\n                      MinRadius = 1000,\n                      MaxRadius = 2000,\n                      AnimationSpeed = new Vector4(-0.0001f,0,0,0),\n                      Color = Vector3.One\n                  }, \n                   new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Nebula,\n                      Material = null,\n                      ImpostorsCount = 0,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 1.0f,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 1.3f,\n                      MinRadius = 0.472f,\n                      MaxRadius = 0.472f,\n                      AnimationSpeed = new Vector4(0.000f, 0.001f,0.001f, 0),\n                      Color = new Vector3(241 / 255.0f, 66 / 255.0f, 0 / 255.0f),\n                      Contrast = 6.170f,\n                      Intensity = 0.460f\n                  },\n        };\n\n\n        public static readonly MySunProperties LaikaSunProperties = new MySunProperties()\n        {\n            SunDiffuse = new Vector3(255 / 255.0f, 112 / 255.0f, 29 / 255.0f),\n            SunIntensity = 2.0f, //MySolarSystemConstants.SunIntensityFromPosition(MyBgrCubeConsts.LAIKA_POSITION),\n            SunSpecular = new Vector3(255 / 255.0f, 206 / 255.0f, 138 / 255.0f),\n            BackSunDiffuse = new Vector3(29 / 255.0f, 29 / 255.0f, 29 / 255.0f),\n            BackSunIntensity = 0.923f,\n            AmbientColor = new Vector3(41 / 255.0f, 29 / 255.0f, 36 / 255.0f),\n            AmbientMultiplier = 0.992f,\n            EnvironmentAmbientIntensity = 0.85f,\n            BackgroundColor = new Vector3(142 / 255.0f, 35 / 255.0f, 35 / 255.0f),\n        };\n\n\n        public static readonly MyFogProperties LaikaFogProperties = new MyFogProperties()\n        {\n            FogColor = new Vector3(255 / 255.0f, 0 / 255.0f, 0 / 255.0f),\n            FogNear = 2631,\n            FogFar = 6606,\n            FogMultiplier = 0.120f,\n            FogBacklightMultiplier = 1.179f, \n        };\n\n        public static readonly MyParticleDustProperties LaikaDustProperties = new MyParticleDustProperties()\n        {\n            Enabled = true,\n            DustBillboardRadius = 111.142f,\n            DustFieldCountInDirectionHalf = 3.43f,\n            DistanceBetween = 72.4f,\n            Color = new Color(20 / 255.0f, 0 / 255.0f, 0 / 255.0f, 30 / 255f),\n        };\n\n\n        public static readonly MyDebrisProperties LaikaDebrisProperties = new MyDebrisProperties()\n        {\n            MaxDistance = 200,\n            CountInDirectionHalf = 2,\n            FullScaleDistance = 70,\n            DistanceBetween = 80.0f,\n            //DebrisEnumValues = MyMwcObjectBuilder_SmallDebris_TypesEnum.\n        };\n\n        public readonly static Dictionary<MyMwcVoxelMaterialsEnum, float> LaikaAsteroidMaterials = new Dictionary<MyMwcVoxelMaterialsEnum, float>()\n        {\n        };\n\n        /// <summary>\n        /// Rebuild the areas\n        /// </summary>\n        public static void CreateLaikaArea()\n        {\n            Areas[MySolarSystemAreaEnum.Laika] = new MySolarSystemAreaOrbit()\n            {\n                Name = \"Mars belt end\",\n                AreaType = MySolarSystemArea.AreaEnum.PostPlanet,\n                OrbitProperties = new MyOrbitProperties()\n                {\n                    OrbitCenter = Vector3.Zero,\n                    AreaCenter = MyBgrCubeConsts.LAIKA_POSITION * MyBgrCubeConsts.MILLION_KM,\n                    LongSpread = 0.1f,\n                    MaxDistanceFromOrbitLow = MyBgrCubeConsts.MERCURY_RADIUS * MyBgrCubeConsts.MILLION_KM * 500,\n                    MaxDistanceFromOrbitHigh = MyBgrCubeConsts.MERCURY_RADIUS * MyBgrCubeConsts.MILLION_KM * 800,\n                },\n                SolarMapData = new MySolarMapData()\n                {\n                    DustColor = new Vector3(0.9f, 0.60f, 0.37f),\n                    DustColorVariability = new Vector4(0.15f),\n                    TemplateGroups = new MyTemplateGroupInfo[]\n                    {\n                        new MyTemplateGroupInfo{ Importance = 1, Count = 5, TemplateGroup = MyTemplateGroupEnum.RandomStations},\n                        new MyTemplateGroupInfo{ Importance = 0.5f, Count = 20, TemplateGroup = MyTemplateGroupEnum.RandomStations},\n                    }\n                },\n                SectorData = new MySolarSectorData()\n                {\n                    BackgroundTexture = \"BackgroundCube\",\n                    SunProperties = LaikaSunProperties,\n                    FogProperties = LaikaFogProperties,\n                    ImpostorProperties = LaikaImpostorsProperties,\n                    DebrisProperties = LaikaDebrisProperties,\n\n                    SectorObjectsCounts = LaikaObjectsProperties,\n                    PrimaryAsteroidMaterials = LaikaAsteroidMaterials,\n                    SecondaryAsteroidMaterials = DefaultSecondaryMaterials,\n\n                    ParticleDustProperties = LaikaDustProperties,\n                },\n            };\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/SolarSystem/SolarAreas/MySolarSystemMars3Constants.cs",
    "content": "﻿using MinerWarsMath;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.AppCode.Game.BackgroundCube;\n\nnamespace MinerWars.AppCode.Game.SolarSystem\n{\n    partial class MySolarSystemConstants\n    {\n        static MySectorObjectCounts Mars3ObjectsProperties = new MySectorObjectCounts()\n        {\n            Voxels512 = 0,\n            Voxels256 = 10,\n            Voxels128 = 10,\n            Voxels64 = 10,\n            StaticAsteroidLarge = 30,\n            StaticAsteroidMedium = 2000,\n            StaticAsteroidSmall = 0,\n            Motherships = 0,\n            StaticDebrisFields = 0\n        };\n\n        public readonly static MyImpostorProperties[] Mars3ImpostorsProperties = new MyImpostorProperties[]\n        {\n                   new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Billboards,\n                      Material = MyTransparentMaterialEnum.Impostor_StaticAsteroid20m_A,\n                      ImpostorsCount = 1000,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 5,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 10,\n                      MinRadius = 1000,\n                      MaxRadius = 2000,\n                      AnimationSpeed = new Vector4(0.00009f,0,0,0),\n                      Color = Vector3.One\n                  },\n\n                  new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Billboards,\n                      Material = MyTransparentMaterialEnum.Impostor_StaticAsteroid20m_C,\n                      ImpostorsCount = 1000,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 10.1f,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 11,\n                      MinRadius = 1000,\n                      MaxRadius = 2000,\n                      AnimationSpeed = new Vector4(-0.0001f,0,0,0),\n                      Color = Vector3.One\n                  },\n\n                  new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Nebula,\n                      Material = null,\n                      ImpostorsCount = 0,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 1.0f,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 1.3f,\n                      MinRadius = 1.3f,\n                      MaxRadius = 1.3f,\n                      AnimationSpeed = new Vector4(0.006f, 0.005f,0.007f, 0),\n                      Color = new Vector3(32 / 255.0f, 33 / 255.0f, 31 / 255.0f),\n                      Contrast = 12.490f,\n                      Intensity = 2.644f\n                  },\n        };\n\n\n        public static readonly MySunProperties Mars3SunProperties = new MySunProperties()\n        {\n            SunDiffuse = new Vector3(255 / 255.0f, 71 / 255.0f, 17 / 255.0f),\n            SunIntensity = MySolarSystemConstants.SunIntensityFromPosition(MyBgrCubeConsts.MARS_POSITION) * 2,\n            SunSpecular = new Vector3(233 / 255.0f, 203 / 255.0f, 103 / 255.0f),\n            BackSunDiffuse = new Vector3(15 / 255.0f, 117 / 255.0f, 95 / 255.0f),\n            BackSunIntensity = 0.95f,\n            AmbientColor = new Vector3(0.14f),\n            AmbientMultiplier = 0.2f,\n            EnvironmentAmbientIntensity = 0.620f,\n        };\n\n\n        public static readonly MyFogProperties Mars3FogProperties = new MyFogProperties()\n        {\n            FogColor = new Vector3(56 / 255.0f, 119 / 255.0f, 89 / 255.0f),\n            FogNear = 3000,\n            FogFar = 38000,\n            FogMultiplier = 0.6f,\n        };\n\n        public static readonly MyParticleDustProperties Mars3DustProperties = new MyParticleDustProperties()\n        {\n            DustBillboardRadius = 55.96f,\n            DustFieldCountInDirectionHalf = 7.199f,\n            DistanceBetween = 76.900f,\n            Color = new Color(60 / 255.0f, 20 / 255.0f, 0 / 255.0f, 1f),\n        };\n\n\n\n\n\n        /// <summary>\n        /// Rebuild the areas\n        /// </summary>\n        public static void CreateMars3Area()\n        {\n            Areas[MySolarSystemAreaEnum.Mars3] = new MySolarSystemAreaOrbit()\n            {\n                Name = \"Mars area 3\",\n                AreaType = MySolarSystemArea.AreaEnum.PostPlanet,\n                OrbitProperties = new MyOrbitProperties()\n                {\n                    OrbitCenter = Vector3.Zero,\n                    AreaCenter = MyBgrCubeConsts.MARS3_POSITION * MyBgrCubeConsts.MILLION_KM,\n                    LongSpread = 0.1f,\n                    MaxDistanceFromOrbitLow = MyBgrCubeConsts.MARS3_RADIUS * MyBgrCubeConsts.MILLION_KM * 100,\n                    MaxDistanceFromOrbitHigh = MyBgrCubeConsts.MARS3_RADIUS * MyBgrCubeConsts.MILLION_KM * 800,\n                },\n                SolarMapData = new MySolarMapData()\n                {\n                    DustColor = new Vector3(0.8f, 0.35f, 0.16f),\n                    DustColorVariability = new Vector4(0.15f),\n                    TemplateGroups = new MyTemplateGroupInfo[]\n                    {\n                        new MyTemplateGroupInfo{ Importance = 1, Count = 5, TemplateGroup = MyTemplateGroupEnum.RandomStations},\n                        new MyTemplateGroupInfo{ Importance = 0.5f, Count = 20, TemplateGroup = MyTemplateGroupEnum.RandomStations},\n                    }\n                },\n                SectorData = new MySolarSectorData()\n                {\n                    SunProperties = Mars3SunProperties,\n                    FogProperties = Mars3FogProperties,\n                    ImpostorProperties = Mars3ImpostorsProperties,\n                    DebrisProperties = DefaultDebrisProperties,\n\n                    SectorObjectsCounts = Mars3ObjectsProperties,\n                    PrimaryAsteroidMaterials = DefaultAsteroidMaterials,\n                    SecondaryAsteroidMaterials = DefaultSecondaryMaterials,\n\n                    ParticleDustProperties = Mars3DustProperties,\n                },\n            };\n        }\n    }  \n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/SolarSystem/SolarAreas/MySolarSystemMarsConstants.cs",
    "content": "﻿using MinerWarsMath;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.AppCode.Game.BackgroundCube;\n\nnamespace MinerWars.AppCode.Game.SolarSystem\n{\n    partial class MySolarSystemConstants\n    {\n        static MySectorObjectCounts MarsObjectsProperties = new MySectorObjectCounts()\n        {\n            Voxels512 = 0,\n            Voxels256 = 10,\n            Voxels128 = 10,\n            Voxels64 = 10,\n            StaticAsteroidLarge = 300,\n            StaticAsteroidMedium = 5000,\n            StaticAsteroidSmall = 6000,\n            Motherships = 0,\n            StaticDebrisFields = 0\n        };\n\n        public readonly static MyImpostorProperties[] MarsImpostorsProperties = new MyImpostorProperties[]\n        {\n                   new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Billboards,\n                      Material = MyTransparentMaterialEnum.Impostor_StaticAsteroid20m_A,\n                      ImpostorsCount = 1000,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 5,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 10,\n                      MinRadius = 1000,\n                      MaxRadius = 2000,\n                      AnimationSpeed = new Vector4(0.00009f,0,0,0),\n                      Color = Vector3.One\n                  },\n\n                  new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Billboards,\n                      Material = MyTransparentMaterialEnum.Impostor_StaticAsteroid20m_C,\n                      ImpostorsCount = 1000,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 10.1f,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 11,\n                      MinRadius = 1000,\n                      MaxRadius = 2000,\n                      AnimationSpeed = new Vector4(-0.0001f,0,0,0),\n                      Color = Vector3.One\n                  },\n\n                  new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Nebula,\n                      Material = null,\n                      ImpostorsCount = 0,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 1.0f,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 1.3f,\n                      MinRadius = 2.3f,\n                      MaxRadius = 2.3f,\n                      AnimationSpeed = new Vector4(0.006f, 0.005f,0.007f, 0),\n                      Color = new Vector3(29 / 255.0f, 13 / 255.0f, 0 / 255.0f),\n                      Contrast = 2.490f,\n                      Intensity = 0.644f\n                  },\n        };\n\n\n        public static readonly MySunProperties MarsSunProperties = new MySunProperties()\n        {\n            SunDiffuse = new Vector3(255 / 255.0f, 71 / 255.0f, 17 / 255.0f),\n            SunIntensity = MySolarSystemConstants.SunIntensityFromPosition(MyBgrCubeConsts.MARS_POSITION) * 2,\n            SunSpecular = new Vector3(233 / 255.0f, 203 / 255.0f, 103 / 255.0f),\n            BackSunDiffuse = new Vector3(15 / 255.0f, 117 / 255.0f, 95 / 255.0f),\n            BackSunIntensity = 0.95f,\n            AmbientColor = new Vector3(0.14f),\n            AmbientMultiplier = 0.2f,\n            EnvironmentAmbientIntensity = 0.620f,\n        };\n\n\n        public static readonly MyFogProperties MarsFogProperties = new MyFogProperties()\n        {\n            FogColor = new Vector3(87 / 255.0f, 15 / 255.0f, 3 / 255.0f),\n            FogNear = 3000,\n            FogFar = 38000,\n            FogMultiplier = 0.6f,\n        };\n\n        public static readonly MyParticleDustProperties MarsDustProperties = new MyParticleDustProperties()\n        {\n            DustBillboardRadius = 55.96f,\n            DustFieldCountInDirectionHalf = 7.199f,\n            DistanceBetween = 76.900f,\n            Color = new Color(60 / 255.0f, 20 / 255.0f, 0 / 255.0f, 1f),\n        };\n\n\n\n\n\n        /// <summary>\n        /// Rebuild the areas\n        /// </summary>\n        public static void CreateMarsArea()\n        {\n            Areas[MySolarSystemAreaEnum.Mars] = new MySolarSystemAreaOrbit()\n            {\n                Name = \"Post Mars\",\n                AreaType = MySolarSystemArea.AreaEnum.PostPlanet,\n                OrbitProperties = new MyOrbitProperties()\n                {\n                    OrbitCenter = Vector3.Zero,\n                    AreaCenter = MyBgrCubeConsts.MARS_POSITION * MyBgrCubeConsts.MILLION_KM,\n                    LongSpread = 0.3f,\n                    MaxDistanceFromOrbitLow = MyBgrCubeConsts.MARS_RADIUS * MyBgrCubeConsts.MILLION_KM * 300,\n                    MaxDistanceFromOrbitHigh = MyBgrCubeConsts.MARS_RADIUS * MyBgrCubeConsts.MILLION_KM * 1200,\n                },\n                SolarMapData = new MySolarMapData()\n                {\n                    DustColor = new Vector3(0.8f, 0.35f, 0.16f),\n                    DustColorVariability = new Vector4(0.15f),\n                    TemplateGroups = new MyTemplateGroupInfo[]\n                    {\n                        new MyTemplateGroupInfo{ Importance = 1, Count = 5, TemplateGroup = MyTemplateGroupEnum.RandomStations},\n                        new MyTemplateGroupInfo{ Importance = 0.5f, Count = 20, TemplateGroup = MyTemplateGroupEnum.RandomStations},\n                    }\n                },\n                SectorData = new MySolarSectorData()\n                {\n                    SunProperties = MarsSunProperties,\n                    FogProperties = MarsFogProperties,\n                    ImpostorProperties = MarsImpostorsProperties,\n                    DebrisProperties = DefaultDebrisProperties,\n\n                    SectorObjectsCounts = MarsObjectsProperties,\n                    PrimaryAsteroidMaterials = DefaultAsteroidMaterials,\n                    SecondaryAsteroidMaterials = DefaultSecondaryMaterials,\n\n                    ParticleDustProperties = MarsDustProperties,\n                },\n            };\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/SolarSystem/SolarAreas/MySolarSystemMedina622Constants.cs",
    "content": "﻿using MinerWarsMath;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.AppCode.Game.BackgroundCube;\n\nnamespace MinerWars.AppCode.Game.SolarSystem\n{\n    partial class MySolarSystemConstants\n    {\n        static MySectorObjectCounts Medina622ObjectsProperties = new MySectorObjectCounts()\n        {\n            Voxels512 = 0,\n            Voxels256 = 10,\n            Voxels128 = 10,\n            Voxels64 = 10,\n            StaticAsteroidLarge = 0,\n            StaticAsteroidMedium = 3000,\n            StaticAsteroidSmall = 0,\n            Motherships = 0,\n            StaticDebrisFields = 0\n        };\n\n        public readonly static MyImpostorProperties[] Medina622ImpostorsProperties = new MyImpostorProperties[]\n        {\n                   new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Billboards,\n                      Material = MyTransparentMaterialEnum.Impostor_StaticAsteroid20m_A,\n                      ImpostorsCount = 1000,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 5,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 10,\n                      MinRadius = 1000,\n                      MaxRadius = 2000,\n                      AnimationSpeed = new Vector4(0.00009f,0,0,0),\n                      Color = Vector3.One\n                  },\n\n                  new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Billboards,\n                      Material = MyTransparentMaterialEnum.Impostor_StaticAsteroid20m_C,\n                      ImpostorsCount = 1000,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 10.1f,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 11,\n                      MinRadius = 1000,\n                      MaxRadius = 2000,\n                      AnimationSpeed = new Vector4(-0.0001f,0,0,0),\n                      Color = Vector3.One\n                  },\n\n                  new MyImpostorProperties()\n                  {     \n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Nebula,\n                      Material = null,\n                      ImpostorsCount = 0,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 1.0f,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 1.3f,\n                      MinRadius = 0.7f,\n                      MaxRadius = 0.7f,\n                      AnimationSpeed = new Vector4(0.004f, 0.002f, 0.003f, 0),\n                      Color = new Vector3(235 / 255.0f, 199 / 255.0f, 157 / 255.0f),\n                      Contrast = 11.2f,\n                      Intensity = 1.7f\n                  },\n        };\n\n\n        public static readonly MySunProperties Medina622SunProperties = new MySunProperties()\n        {\n            SunDiffuse = new Vector3(255 / 255.0f, 167 / 255.0f, 0 / 255.0f),\n            SunIntensity = MySolarSystemConstants.SunIntensityFromPosition(MyBgrCubeConsts.JUPITER_POSITION) * 2,\n            SunSpecular = new Vector3(255 / 255.0f, 167 / 255.0f, 0 / 255.0f),\n            BackSunDiffuse = new Vector3(205 / 255.0f, 127 / 255.0f, 50 / 255.0f),\n            BackSunIntensity = 0.6f,\n            AmbientColor = new Vector3(36 / 255.0f),\n            AmbientMultiplier = 0f,\n            EnvironmentAmbientIntensity = 1f,\n        };\n\n\n        public static readonly MyFogProperties Medina622FogProperties = new MyFogProperties()\n        {\n            FogColor = new Vector3(255 / 255.0f, 179 / 255.0f, 16 / 255.0f),\n            FogNear = 1200,\n            FogFar = 4600,\n            FogMultiplier = 0.25f,\n        };\n\n        public static readonly MyParticleDustProperties Medina622DustProperties = new MyParticleDustProperties()\n        {\n            Enabled = false,\n            DustBillboardRadius = 11.417f,\n            DustFieldCountInDirectionHalf = 6.680f,\n            DistanceBetween = 44.400f,\n            Color = new Color(5 / 255.0f, 10 / 255.0f, 30 / 255.0f, 1f),\n        };\n        \n        /// <summary>\n        /// Rebuild the areas\n        /// </summary>\n        public static void CreateMedina622Area()\n        {\n            Areas[MySolarSystemAreaEnum.Medina622] = new MySolarSystemAreaOrbit()\n            {\n                Name = \"Arab border\",\n                AreaType = MySolarSystemArea.AreaEnum.PostPlanet,\n                OrbitProperties = new MyOrbitProperties()\n                {\n                    OrbitCenter = Vector3.Zero,\n                    AreaCenter = MyBgrCubeConsts.MEDINA622_POSITION * MyBgrCubeConsts.MILLION_KM,\n                    LongSpread = 0.05f,\n                    MaxDistanceFromOrbitLow = MyBgrCubeConsts.JUPITER_RADIUS * MyBgrCubeConsts.MILLION_KM * 100,\n                    MaxDistanceFromOrbitHigh = MyBgrCubeConsts.JUPITER_RADIUS * MyBgrCubeConsts.MILLION_KM * 300,\n                },\n                SolarMapData = new MySolarMapData()\n                {\n                    DustColor = new Vector3(255 / 255.0f, 193 / 255.0f, 193 / 255.0f),\n                    DustColorVariability = new Vector4(0.15f),\n                    TemplateGroups = new MyTemplateGroupInfo[]\n                    {\n                        new MyTemplateGroupInfo{ Importance = 1, Count = 5, TemplateGroup = MyTemplateGroupEnum.RandomStations},\n                        new MyTemplateGroupInfo{ Importance = 0.5f, Count = 20, TemplateGroup = MyTemplateGroupEnum.RandomStations},\n                    }\n                },\n                SectorData = new MySolarSectorData()\n                {\n                    SunProperties = Medina622SunProperties,\n                    FogProperties = Medina622FogProperties,\n                    ImpostorProperties = Medina622ImpostorsProperties,\n                    DebrisProperties = DefaultDebrisProperties,\n\n                    SectorObjectsCounts = Medina622ObjectsProperties,\n                    PrimaryAsteroidMaterials = DefaultAsteroidMaterials,\n                    SecondaryAsteroidMaterials = DefaultSecondaryMaterials,\n\n                    ParticleDustProperties = Medina622DustProperties,\n                   },\n            };\n        }\n    }    \n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/SolarSystem/SolarAreas/MySolarSystemMercuryConstants.cs",
    "content": "﻿using System.Collections.Generic;\nusing MinerWarsMath;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.AppCode.Game.BackgroundCube;\n\nnamespace MinerWars.AppCode.Game.SolarSystem\n{\n    partial class MySolarSystemConstants\n    {\n        static MySectorObjectCounts MercuryObjectsProperties = new MySectorObjectCounts()\n        {\n            Voxels512 = 0,\n            Voxels256 = 5,\n            Voxels128 = 10,\n            Voxels64 = 10,\n            StaticAsteroidLarge = 71,\n            StaticAsteroidMedium = 4000,\n            StaticAsteroidSmall = 0,\n            Motherships = 0,\n            StaticDebrisFields = 0\n        };\n\n        public readonly static MyImpostorProperties[] MercuryImpostorsProperties = new MyImpostorProperties[]\n        {\n                   new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Billboards,\n                      Material = MyTransparentMaterialEnum.Impostor_StaticAsteroid20m_A,\n                      ImpostorsCount = 1000,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 5,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 10,\n                      MinRadius = 1000,\n                      MaxRadius = 2000,\n                      AnimationSpeed = new Vector4(0.00009f,0,0,0),\n                      Color = Vector3.One\n                  },\n\n                  new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Billboards,\n                      Material = MyTransparentMaterialEnum.Impostor_StaticAsteroid20m_C,\n                      ImpostorsCount = 1000,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 10.1f,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 11,\n                      MinRadius = 1000,\n                      MaxRadius = 2000,\n                      AnimationSpeed = new Vector4(-0.0001f,0,0,0),\n                      Color = Vector3.One\n                  },\n                        /*\n                  new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Nebula,\n                      Material = null,\n                      ImpostorsCount = 0,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 1.0f,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 1.3f,\n                      MinRadius = 9.143f,\n                      MaxRadius = 9.143f,\n                      AnimationSpeed = new Vector4(0.017f, 0.001f,0.003f, 0),\n                      Color = new Vector3(0.8f, 0.1f, 0.0f),\n                      Contrast = 0.644f,\n                      Intensity = 0.644f\n                  },  */\n        };\n\n\n        public static readonly MySunProperties MercurySunProperties = new MySunProperties()\n        {\n            SunDiffuse = new Vector3(1.0f, 0.5f, 0.1f),\n            SunIntensity = MySolarSystemConstants.SunIntensityFromPosition(MyBgrCubeConsts.MERCURY_POSITION),\n            SunSpecular = new Vector3(0.9137255f, 0.5078432f, 0.1078431f),\n            //BackSunDiffuse = new Vector3(234 / 255.0f, 130 / 255.0f, 28 / 255.0f),\n            BackSunDiffuse = new Vector3(229/ 255.0f, 131/ 255.0f, 27/ 255.0f),\n            BackSunIntensity = 0.837f,\n            AmbientColor = new Vector3(0.14f),\n            AmbientMultiplier = 0.2f,\n            EnvironmentAmbientIntensity = 0.45f,\n        };\n\n        \n        public static readonly MyFogProperties MercuryFogProperties = new MyFogProperties()\n        {\n            FogColor = new Vector3(99 / 255.0f, 36 / 255.0f, 3 / 255.0f),\n            FogNear = 3000,\n            FogFar = 13633,\n            FogMultiplier = 0.383f,\n        };\n\n        public static readonly MyParticleDustProperties MercuryDustProperties = new MyParticleDustProperties()\n        {\n            Enabled = false,\n            DustBillboardRadius = 105.76f,\n            DustFieldCountInDirectionHalf = 7.2f,\n            DistanceBetween = 128.4f,\n            Color = new Color(99 / 255.0f, 36 / 255.0f, 3 / 255.0f, 1 / 255f),\n        };\n\n        public readonly static Dictionary<MyMwcVoxelMaterialsEnum, float> MercuryAsteroidMaterials = new Dictionary<MyMwcVoxelMaterialsEnum, float>()\n        {\n            { MyMwcVoxelMaterialsEnum.Stone_03, 1},            \n            { MyMwcVoxelMaterialsEnum.Stone_04, 1},            \n            { MyMwcVoxelMaterialsEnum.Stone_10, 1},            \n            { MyMwcVoxelMaterialsEnum.Silver_01, 1},            \n        };\n\n        public readonly static Dictionary<MyMwcVoxelMaterialsEnum, float> MercurySecondaryAsteroidMaterials = new Dictionary<MyMwcVoxelMaterialsEnum, float>()\n        {\n          { MyMwcVoxelMaterialsEnum.Helium4_01, 0.5f},\n          { MyMwcVoxelMaterialsEnum.Magnesium_01, 0.5f},\n        };\n\n        /// <summary>\n        /// Rebuild the areas\n        /// </summary>\n        public static void CreateMercuryArea()\n        {\n            Areas[MySolarSystemAreaEnum.Mercury] = new MySolarSystemAreaOrbit()\n            {\n                Name = \"Post Mercury\",\n                AreaType = MySolarSystemArea.AreaEnum.Sun,\n                OrbitProperties = new MyOrbitProperties()\n                {\n                    OrbitCenter = Vector3.Zero,\n                    AreaCenter = MyBgrCubeConsts.MERCURY_POSITION * MyBgrCubeConsts.MILLION_KM,\n                    LongSpread = 0.9f,\n                    MaxDistanceFromOrbitLow = MyBgrCubeConsts.MERCURY_RADIUS * MyBgrCubeConsts.MILLION_KM * 300,\n                    MaxDistanceFromOrbitHigh = MyBgrCubeConsts.MERCURY_RADIUS * MyBgrCubeConsts.MILLION_KM * 1200,\n                },\n                SolarMapData = new MySolarMapData()\n                {\n                    DustColor = new Vector3(0.7f, 0.50f, 0.37f),\n                    DustColorVariability = new Vector4(0.15f),\n                    TemplateGroups = new MyTemplateGroupInfo[]\n                    {\n                        new MyTemplateGroupInfo{ Importance = 1, Count = 5, TemplateGroup = MyTemplateGroupEnum.RandomStations},\n                        new MyTemplateGroupInfo{ Importance = 0.5f, Count = 20, TemplateGroup = MyTemplateGroupEnum.RandomStations},\n                    }\n                },\n                SectorData = new MySolarSectorData()\n                {\n                    BackgroundTexture = \"BackgroundCube\",\n                    SunProperties = MercurySunProperties,\n                    FogProperties = MercuryFogProperties,\n                    ImpostorProperties = MercuryImpostorsProperties,\n                    DebrisProperties = DefaultDebrisProperties,\n\n                    SectorObjectsCounts = MercuryObjectsProperties,\n                    PrimaryAsteroidMaterials = MercuryAsteroidMaterials,\n                    SecondaryAsteroidMaterials = MercurySecondaryAsteroidMaterials,\n\n                    ParticleDustProperties = MercuryDustProperties,                   \n                },\n            };\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/SolarSystem/SolarAreas/MySolarSystemNearSunConstants.cs",
    "content": "﻿using System.Collections.Generic;\nusing MinerWarsMath;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.AppCode.Game.BackgroundCube;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\n\nnamespace MinerWars.AppCode.Game.SolarSystem\n{\n    partial class MySolarSystemConstants\n    {\n        static MySectorObjectCounts NearSunObjectsProperties = new MySectorObjectCounts()\n        {\n            Voxels512 = 0,\n            Voxels256 = 10,\n            Voxels128 = 10,\n            Voxels64 = 10,\n            StaticAsteroidLarge = 0,\n            StaticAsteroidMedium = 1500,\n            StaticAsteroidSmall = 0,\n            Motherships = 0,\n            StaticDebrisFields = 0\n        };\n\n        public readonly static MyImpostorProperties[] NearSunImpostorsProperties = new MyImpostorProperties[]\n        {\n                   new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Billboards,\n                      Material = MyTransparentMaterialEnum.Impostor_StaticAsteroid20m_A,\n                      ImpostorsCount = 1000,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 5,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 10,\n                      MinRadius = 1000,\n                      MaxRadius = 2000,\n                      AnimationSpeed = new Vector4(0.00009f,0,0,0),\n                      Color = Vector3.One\n                  },\n\n                  new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Billboards,\n                      Material = MyTransparentMaterialEnum.Impostor_StaticAsteroid20m_A,\n                      ImpostorsCount = 1000,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 10.1f,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 11,\n                      MinRadius = 1000,\n                      MaxRadius = 2000,\n                      AnimationSpeed = new Vector4(-0.0001f,0,0,0),\n                      Color = Vector3.One\n                  },\n\n                  new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Nebula,\n                      Material = null,\n                      ImpostorsCount = 0,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 1.0f,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 1.3f,\n                      MinRadius = 0.266f,\n                      MaxRadius = 0.266f,\n                      AnimationSpeed = new Vector4(0.009f, 0.000f,0.000f, 0),\n                      Color = new Vector3(255 / 255.0f, 255 / 255.0f, 145 / 255.0f),\n                      Contrast = 4.000f,\n                      Intensity = 0.924f\n                  },\n        };\n\n\n        public static readonly MySunProperties NearSunSunProperties = new MySunProperties()\n        {\n            SunDiffuse = new Vector3(255 / 255.0f, 226 / 255.0f, 87 / 255.0f),\n            SunIntensity = MySolarSystemConstants.SunIntensityFromPosition(MyBgrCubeConsts.EARTH_POSITION) * 10, // max?\n            SunSpecular = new Vector3(255 / 255.0f, 203 / 255.0f, 103 / 255.0f),\n            BackSunDiffuse = new Vector3(228 / 255.0f, 96 / 255.0f, 40 / 255.0f),\n            BackSunIntensity = 0.544f,\n            AmbientColor = new Vector3(59 / 255.0f, 33 / 255.0f, 29 / 255.0f),\n            AmbientMultiplier = 0.2f,\n            EnvironmentAmbientIntensity = 0.820f,\n            SunSizeMultiplier = 20,\n            SunRadiationDamagePerSecond = 5,\n        };\n\n\n        public static readonly MyFogProperties NearSunFogProperties = new MyFogProperties()\n        {\n            FogColor = new Vector3(224 / 255.0f, 87 / 255.0f, 0 / 255.0f),\n            FogNear = 1000,\n            FogFar = 2500,\n            FogMultiplier = 0.375f,\n            FogBacklightMultiplier = 0.703f,\n        };\n\n\n        public static readonly MyDebrisProperties NearSunDebrisProperties = new MyDebrisProperties()\n        {\n            MaxDistance = 200,\n            CountInDirectionHalf = 2,\n            FullScaleDistance = 70,\n            DistanceBetween = 50.0f,\n            DebrisEnumValues = new MyMwcObjectBuilder_SmallDebris_TypesEnum[] { \n                MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris1,\n                MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris3,\n                MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris4, \n                MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris5,\n                MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris8,\n                MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris9,\n                MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris30,\n                MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris32_pilot },\n\n            DebrisVoxelMaterials = new MyMwcVoxelMaterialsEnum[] { MyMwcVoxelMaterialsEnum.Lava_01, MyMwcVoxelMaterialsEnum.Stone_03 },\n        };\n\n        public static readonly MyParticleDustProperties NearSunDustProperties = new MyParticleDustProperties()\n        {\n            DustBillboardRadius = 90.00f,  \n            DustFieldCountInDirectionHalf = 4.6f, \n            DistanceBetween = 166.3f, \n            Color = new Color(255 / 255.0f, 79 / 255.0f, 12 / 255.0f, 1f),\n        };\n\n        public static readonly MyGodRaysProperties NearSunGodRaysProperties = new MyGodRaysProperties()\n        {\n            Density = 0.097f,\n            Weight = 0.522f,\n            Decay = 0.992f,\n            Exposition = 0.343f,\n            Enabled = true,\n        };\n\n        public readonly static Dictionary<MyMwcVoxelMaterialsEnum, float> NearSunAsteroidMaterials = new Dictionary<MyMwcVoxelMaterialsEnum, float>()\n        {\n            {  MyMwcVoxelMaterialsEnum.Stone_03, 1 },\n            {  MyMwcVoxelMaterialsEnum.Indestructible_01, 1 },            \n        };\n\n        public readonly static Dictionary<MyMwcVoxelMaterialsEnum, float> NearSunSecondaryMaterials = new Dictionary<MyMwcVoxelMaterialsEnum, float>()\n        {\n            {  MyMwcVoxelMaterialsEnum.Uranite_01, 1 },\n            {  MyMwcVoxelMaterialsEnum.Lava_01, 1 },\n        };\n\n\n\n        /// <summary>\n        /// Rebuild the areas\n        /// </summary>\n        public static void CreateNearSunArea()\n        {\n            Areas[MySolarSystemAreaEnum.NearSun] = new MySolarSystemAreaOrbit()\n            {\n                Name = \"Near Sun area\",\n                AreaType = MySolarSystemArea.AreaEnum.Sun,\n                SecondaryStaticAsteroidMaterial = MyMwcVoxelMaterialsEnum.Lava_01,\n                OrbitProperties = new MyOrbitProperties()\n                {\n                    OrbitCenter = Vector3.Zero,\n                    AreaCenter = new Vector3(0,0,3) * MyBgrCubeConsts.MILLION_KM,\n                    LongSpread = 1,\n                    MaxDistanceFromOrbitLow = MyBgrCubeConsts.SUN_RADIUS * MyBgrCubeConsts.MILLION_KM * 13000,\n                    MaxDistanceFromOrbitHigh = MyBgrCubeConsts.SUN_RADIUS * MyBgrCubeConsts.MILLION_KM * 2000,\n                },\n                SolarMapData = new MySolarMapData()\n                {\n                    DustColor = new Vector3(0.8f, 0.35f, 0.16f),\n                    DustColorVariability = new Vector4(0.15f),\n                    TemplateGroups = new MyTemplateGroupInfo[]\n                    {\n                        new MyTemplateGroupInfo{ Importance = 1, Count = 5, TemplateGroup = MyTemplateGroupEnum.RandomStations},\n                        new MyTemplateGroupInfo{ Importance = 0.5f, Count = 20, TemplateGroup = MyTemplateGroupEnum.RandomStations},\n                    }\n                },\n                SectorData = new MySolarSectorData()\n                {\n                    SunProperties = NearSunSunProperties,\n                    FogProperties = NearSunFogProperties,\n                    ImpostorProperties = NearSunImpostorsProperties,\n                    DebrisProperties = NearSunDebrisProperties,\n\n                    SectorObjectsCounts = NearSunObjectsProperties,\n                    PrimaryAsteroidMaterials = NearSunAsteroidMaterials,\n                    SecondaryAsteroidMaterials = NearSunSecondaryMaterials,\n\n                    ParticleDustProperties = NearSunDustProperties,\n                    GodRaysProperties = NearSunGodRaysProperties,\n                },\n            };\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/SolarSystem/SolarAreas/MySolarSystemNebulaConstants.cs",
    "content": "﻿using System.Collections.Generic;\nusing MinerWarsMath;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.AppCode.Game.BackgroundCube;\n\nnamespace MinerWars.AppCode.Game.SolarSystem\n{\n    partial class MySolarSystemConstants\n    {\n        static MySectorObjectCounts NebulaObjectsProperties = new MySectorObjectCounts()\n        {\n            Voxels512 = 0,\n            Voxels256 = 10,\n            Voxels128 = 10,\n            Voxels64 = 10,\n            StaticAsteroidLarge = 60,\n            StaticAsteroidMedium = 2000,\n            StaticAsteroidSmall = 0,\n            Motherships = 0,\n            StaticDebrisFields = 0\n        };\n\n        public readonly static MyImpostorProperties[] NebulaImpostorsProperties = new MyImpostorProperties[]\n        {\n                   new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Billboards,\n                      Material = MyTransparentMaterialEnum.Impostor_StaticAsteroid20m_A,\n                      ImpostorsCount = 1000,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 5,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 10,\n                      MinRadius = 1000,\n                      MaxRadius = 2000,\n                      AnimationSpeed = new Vector4(0.00009f,0,0,0),\n                      Color = Vector3.One\n                  },\n\n                  new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Billboards,\n                      Material = MyTransparentMaterialEnum.Impostor_StaticAsteroid20m_C,\n                      ImpostorsCount = 1000,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 10.1f,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 11,\n                      MinRadius = 1000,\n                      MaxRadius = 2000,\n                      AnimationSpeed = new Vector4(-0.0001f,0,0,0),\n                      Color = Vector3.One\n                  },\n\n                  new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Nebula,\n                      Material = null,\n                      ImpostorsCount = 0,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 1.0f,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 1.3f,\n                      MinRadius = 0.395f,\n                      MaxRadius = 0.395f,\n                      AnimationSpeed = new Vector4(0.001f, -0.004f, -0.006f,0),\n                      Color = new Vector3(25 / 255.0f, 187 / 255.0f, 255 / 255.0f),\n                      Contrast = 2.469f,\n                      Intensity = 1.037f\n                  },\n        };\n\n\n        public static readonly MySunProperties NebulaSunProperties = new MySunProperties()\n        {\n            SunDiffuse = new Vector3(255 / 255.0f, 255 / 255.0f, 255 / 255.0f),\n            SunIntensity = 1.458f,\n            SunSpecular = new Vector3(46 / 255.0f, 46 / 255.0f, 46 / 255.0f),\n            BackSunDiffuse = new Vector3(25 / 255.0f, 187 / 255.0f, 255 / 255.0f),\n            BackSunIntensity = 0.673f,\n            AmbientColor = new Vector3 (0 / 255.0f, 0 / 255.0f, 0 / 255.0f),\n            AmbientMultiplier = 0f,\n            EnvironmentAmbientIntensity = 0.200f,\n        };\n\n\n        public static readonly MyFogProperties NebulaFogProperties = new MyFogProperties()\n        {\n            FogColor = new Vector3(58 / 255.0f, 134 / 255.0f, 255 / 255.0f),\n            FogNear = 6032.194f,\n            FogFar = 9296.925f,\n            FogMultiplier = 0.186f,\n            FogBacklightMultiplier = 0.380f,\n        };\n\n        public static readonly MyParticleDustProperties NebulaDustProperties = new MyParticleDustProperties()\n        {\n            DustBillboardRadius = 200.3f,\n            DustFieldCountInDirectionHalf = 6.953f,\n            DistanceBetween = 206.906f,\n            Color = new Color(25 / 255.0f, 111 / 255.0f, 192 / 255.0f, 1f),\n        };\n\n        public readonly static Dictionary<MyMwcVoxelMaterialsEnum, float> NebulaAsteroidMaterials = new Dictionary<MyMwcVoxelMaterialsEnum, float>()\n        {\n            { MyMwcVoxelMaterialsEnum.Stone_10, 1},\n        };\n\n        public readonly static Dictionary<MyMwcVoxelMaterialsEnum, float> NebulaSecondaryMaterials = new Dictionary<MyMwcVoxelMaterialsEnum, float>()\n        {\n            { MyMwcVoxelMaterialsEnum.Helium3_01, 1},\n        };\n\n\n\n\n        /// <summary>\n        /// Rebuild the areas\n        /// </summary>\n        public static void CreateNebulaArea()\n        {\n            Areas[MySolarSystemAreaEnum.Nebula] = new MySolarSystemAreaOrbit()\n            {\n                Name = \"Nebula\",\n                AreaType = MySolarSystemArea.AreaEnum.PostPlanet,\n                OrbitProperties = new MyOrbitProperties()\n                {\n                    OrbitCenter = Vector3.Zero,\n                    AreaCenter = MyBgrCubeConsts.NEBULA_POSITION * MyBgrCubeConsts.MILLION_KM,\n                    LongSpread = 0.05f,\n                    MaxDistanceFromOrbitLow = MyBgrCubeConsts.NEBULA_RADIUS * MyBgrCubeConsts.MILLION_KM * 300,\n                    MaxDistanceFromOrbitHigh = MyBgrCubeConsts.NEBULA_RADIUS * MyBgrCubeConsts.MILLION_KM * 700,\n                },\n                SolarMapData = new MySolarMapData()\n                {\n                    DustColor = new Vector3(28 / 255.0f, 113 / 255.0f, 179 / 255.0f),\n                    DustColorVariability = new Vector4(0.15f),\n                    TemplateGroups = new MyTemplateGroupInfo[]\n                    {\n                        new MyTemplateGroupInfo{ Importance = 1, Count = 5, TemplateGroup = MyTemplateGroupEnum.RandomStations},\n                        new MyTemplateGroupInfo{ Importance = 0.5f, Count = 20, TemplateGroup = MyTemplateGroupEnum.RandomStations},\n                    }\n                },\n                SectorData = new MySolarSectorData()\n                {\n                    SunProperties = NebulaSunProperties,\n                    FogProperties = NebulaFogProperties,\n                    ImpostorProperties = NebulaImpostorsProperties,\n                    DebrisProperties = DefaultDebrisProperties,\n\n                    SectorObjectsCounts = NebulaObjectsProperties,\n                    PrimaryAsteroidMaterials = NebulaAsteroidMaterials,\n                    SecondaryAsteroidMaterials = NebulaSecondaryMaterials,\n\n                    ParticleDustProperties = NebulaDustProperties,\n                },\n            };\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/SolarSystem/SolarAreas/MySolarSystemNeptunConstants.cs",
    "content": "﻿using MinerWarsMath;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.AppCode.Game.BackgroundCube;\n\nnamespace MinerWars.AppCode.Game.SolarSystem\n{\n    partial class MySolarSystemConstants\n    {\n        static MySectorObjectCounts NeptunObjectsProperties = new MySectorObjectCounts()\n        {\n            Voxels512 = 0,\n            Voxels256 = 0,\n            Voxels128 = 0,\n            Voxels64 = 0,\n            StaticAsteroidLarge = 250,\n            StaticAsteroidMedium = 5000,\n            StaticAsteroidSmall = 3386,\n            Motherships = 0,\n            StaticDebrisFields = 0\n        };\n\n        public readonly static MyImpostorProperties[] NeptunImpostorsProperties = new MyImpostorProperties[]\n        {\n                   new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Billboards,\n                      Material = MyTransparentMaterialEnum.Impostor_StaticAsteroid20m_A,\n                      ImpostorsCount = 1000,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 5,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 10,\n                      MinRadius = 1000,\n                      MaxRadius = 2000,\n                      AnimationSpeed = new Vector4(0.00009f,0,0,0),\n                      Color = Vector3.One\n                  },\n\n                  new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Billboards,\n                      Material = MyTransparentMaterialEnum.Impostor_StaticAsteroid20m_C,\n                      ImpostorsCount = 1000,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 10.1f,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 11,\n                      MinRadius = 1000,\n                      MaxRadius = 2000,\n                      AnimationSpeed = new Vector4(-0.0001f,0,0,0),\n                      Color = Vector3.One\n                  },\n\n                  new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Nebula,\n                      Material = null,\n                      ImpostorsCount = 0,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 1.0f,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 1.3f,\n                      MinRadius = 3.1f,\n                      MaxRadius = 3.5f,\n                      AnimationSpeed = new Vector4(0.005f, 0.001f,0.003f, 0),\n                      Color = new Vector3(0 / 255.0f, 28 / 255.0f, 84 / 255.0f),\n                      Contrast = 2.70f,\n                      Intensity = 0.646f\n                  },\n        };\n\n\n        public static readonly MySunProperties NeptunSunProperties = new MySunProperties()\n        {\n            SunDiffuse = new Vector3(49 / 255.0f, 196 / 255.0f, 214 / 255.0f),\n            SunIntensity = MySolarSystemConstants.SunIntensityFromPosition(MyBgrCubeConsts.NEPTUNE_POSITION) * 8,\n            SunSpecular = new Vector3(78 / 255.0f, 228 / 255.0f, 217 / 255.0f),\n            BackSunDiffuse = new Vector3(17 / 255.0f, 204 / 255.0f, 197 / 255.0f),\n            BackSunIntensity = 0.69f,\n            AmbientColor = new Vector3(0.14f),\n            AmbientMultiplier = 0.2f,\n            EnvironmentAmbientIntensity = 0.455f,\n        };\n\n\n        public static readonly MyFogProperties NeptunFogProperties = new MyFogProperties()\n        {\n            FogColor = new Vector3(0 / 255.0f, 120 / 255.0f, 155 / 255.0f),\n            FogNear = 3000,\n            FogFar = 13000,\n            FogMultiplier = 0.39f,\n        };\n\n        public static readonly MyParticleDustProperties NeptunDustProperties = new MyParticleDustProperties()\n        {\n            DustBillboardRadius = 82.96f,\n            DustFieldCountInDirectionHalf = 4.277f,\n            DistanceBetween = 128.900f,\n            Color = new Color(0 / 255.0f, 120 / 255.0f, 140 / 255.0f, 1f),\n        };\n\n\n\n\n\n        /// <summary>\n        /// Rebuild the areas\n        /// </summary>\n        public static void CreateNeptunArea()\n        {\n            Areas[MySolarSystemAreaEnum.Neptune] = new MySolarSystemAreaOrbit()\n            {\n                Name = \"Post Neptun\",\n                AreaType = MySolarSystemArea.AreaEnum.PostPlanet,\n                OrbitProperties = new MyOrbitProperties()\n                {\n                    OrbitCenter = Vector3.Zero,\n                    AreaCenter = MyBgrCubeConsts.NEPTUNE_POSITION * MyBgrCubeConsts.MILLION_KM,\n                    LongSpread = 0.3f,\n                    MaxDistanceFromOrbitLow = MyBgrCubeConsts.NEPTUNE_RADIUS * MyBgrCubeConsts.MILLION_KM * 300,\n                    MaxDistanceFromOrbitHigh = MyBgrCubeConsts.NEPTUNE_RADIUS * MyBgrCubeConsts.MILLION_KM * 1200,\n                },\n                SolarMapData = new MySolarMapData()\n                {\n                    DustColor = new Vector3(0.8f, 0.35f, 0.16f),\n                    DustColorVariability = new Vector4(0.15f),\n                    TemplateGroups = new MyTemplateGroupInfo[]\n                    {\n                        new MyTemplateGroupInfo{ Importance = 1, Count = 5, TemplateGroup = MyTemplateGroupEnum.RandomStations},\n                        new MyTemplateGroupInfo{ Importance = 0.5f, Count = 20, TemplateGroup = MyTemplateGroupEnum.RandomStations},\n                    }\n                },\n                SectorData = new MySolarSectorData()\n                {\n                    SunProperties = NeptunSunProperties,\n                    FogProperties = NeptunFogProperties,\n                    ImpostorProperties = NeptunImpostorsProperties,\n                    DebrisProperties = DefaultDebrisProperties,\n\n                    SectorObjectsCounts = NeptunObjectsProperties,\n                    PrimaryAsteroidMaterials = DefaultAsteroidMaterials,\n                    SecondaryAsteroidMaterials = DefaultSecondaryMaterials,\n\n                    ParticleDustProperties = NeptunDustProperties,\n                },\n            };\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/SolarSystem/SolarAreas/MySolarSystemRimeConstants.cs",
    "content": "﻿using MinerWarsMath;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.AppCode.Game.BackgroundCube;\n\nnamespace MinerWars.AppCode.Game.SolarSystem\n{\n    partial class MySolarSystemConstants\n    {\n        static MySectorObjectCounts RimeObjectsProperties = new MySectorObjectCounts()\n        {\n            Voxels512 = 0,\n            Voxels256 = 0,\n            Voxels128 = 0,\n            Voxels64 = 0,\n            StaticAsteroidLarge = 0,\n            StaticAsteroidMedium = 1000.090f,\n            StaticAsteroidSmall = 0,\n            Motherships = 0,\n            StaticDebrisFields = 0\n        };\n\n        public readonly static MyImpostorProperties[] RimeImpostorsProperties = new MyImpostorProperties[]\n        {\n                   new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Billboards,\n                      Material = MyTransparentMaterialEnum.Impostor_StaticAsteroid20m_A,\n                      ImpostorsCount = 1000,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 5,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 10,\n                      MinRadius = 1000,\n                      MaxRadius = 2000,\n                      AnimationSpeed = new Vector4(0.00009f,0,0,0),\n                      Color = Vector3.One\n                  },\n\n                  new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Billboards,\n                      Material = MyTransparentMaterialEnum.Impostor_StaticAsteroid20m_C,\n                      ImpostorsCount = 1000,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 10.1f,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 11,\n                      MinRadius = 1000,\n                      MaxRadius = 2000,\n                      AnimationSpeed = new Vector4(-0.0001f,0,0,0),\n                      Color = Vector3.One\n                  },\n\n                  /*new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Nebula,\n                      Material = null,\n                      ImpostorsCount = 0,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 1.0f,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 1.3f,\n                      MinRadius = 0.302f,\n                      MaxRadius = 0.302f,\n                      AnimationSpeed = new Vector4(0.014f, -0.019f, -0.010f, 0),\n                      Color = MyMath.VectorFromColor(255, 255, 255),\n                      Contrast = 2.664f,\n                      Intensity = 0.05f\n                  },*/\n        };\n\n\n        public static readonly MySunProperties RimeSunProperties = new MySunProperties()\n        {\n            SunDiffuse = MyMath.VectorFromColor(236, 222, 125),\n            SunIntensity = 1.674f,\n            SunSpecular = MyMath.VectorFromColor(255, 255, 255),\n            BackSunDiffuse = MyMath.VectorFromColor(236, 222, 125),\n            BackSunIntensity = 0.189f,\n            AmbientColor = MyMath.VectorFromColor(146, 187, 142),\n            AmbientMultiplier = 0.2f,\n            EnvironmentAmbientIntensity = 0.820f,\n        };\n\n        \n        public static readonly MyFogProperties RimeFogProperties = new MyFogProperties()\n        {\n            FogColor = MyMath.VectorFromColor(101, 0, 28),\n            FogNear = 1000,\n            FogFar = 13867,\n            FogMultiplier = 0.068f,\n            FogBacklightMultiplier = 0.939f,\n        };\n\n        public static readonly MyParticleDustProperties RimeDustProperties = new MyParticleDustProperties()\n        {\n            Enabled = false,\n            DustBillboardRadius = 0.010f,\n            DustFieldCountInDirectionHalf = 2.105f,\n            DistanceBetween = 244.141f,\n            Color = new Color(255, 255, 255),\n        };\n\n        public static readonly MyGodRaysProperties RimeGodRaysProperties = new MyGodRaysProperties()\n        {\n            Density = 0.116f,\n            Weight = 1.665f,\n            Decay = 0.937f,\n            Exposition = 0.077f,\n            Enabled = true,\n        };\n\n        public static readonly MyDebrisProperties RimeDebrisProperties = new MyDebrisProperties()\n        {\n            Enabled = false,\n            MaxDistance = 0,\n            CountInDirectionHalf = 0,\n            FullScaleDistance = 70,\n            DistanceBetween = 30.0f,\n            //DebrisEnumValues = MyMwcObjectBuilder_SmallDebris_TypesEnum.\n        };\n\n\n\n        /// <summary>\n        /// Rebuild the areas\n        /// </summary>\n        public static void CreateRimeArea()\n        {\n            Areas[MySolarSystemAreaEnum.Rime] = new MySolarSystemAreaOrbit()\n            {\n                Name = \"Rime\",\n                AreaType = MySolarSystemArea.AreaEnum.PostPlanet,\n                OrbitProperties = new MyOrbitProperties()\n                {\n                    OrbitCenter = Vector3.Zero,\n                    AreaCenter = MySolarSystemUtils.SectorsToKm(MyBgrCubeConsts.RIME_SECTOR),\n                    LongSpread = 0.05f,\n                    MaxDistanceFromOrbitLow = 2.1f * MyBgrCubeConsts.MILLION_KM,\n                    MaxDistanceFromOrbitHigh = 8.4f * MyBgrCubeConsts.MILLION_KM,\n                },\n                SolarMapData = new MySolarMapData()\n                {\n                    DustColor = new Vector3(0.8f, 0.11f, 0.08f),\n                    DustColorVariability = new Vector4(0.15f),\n                    TemplateGroups = new MyTemplateGroupInfo[]\n                    {\n                        new MyTemplateGroupInfo{ Importance = 1, Count = 0, TemplateGroup = MyTemplateGroupEnum.RandomStations},\n                        new MyTemplateGroupInfo{ Importance = 0.5f, Count = 0, TemplateGroup = MyTemplateGroupEnum.RandomStations},\n                    }\n                },\n                SectorData = new MySolarSectorData()\n                {\n                    SunProperties = RimeSunProperties,\n                    FogProperties = RimeFogProperties,\n                    ImpostorProperties = RimeImpostorsProperties,\n                    GodRaysProperties =RimeGodRaysProperties,\n                    DebrisProperties = DefaultDebrisProperties,\n\n                    SectorObjectsCounts = RimeObjectsProperties,\n                    PrimaryAsteroidMaterials = DefaultAsteroidMaterials,\n                    SecondaryAsteroidMaterials = DefaultAsteroidMaterials,\n\n                    ParticleDustProperties = RimeDustProperties,\n                },\n            };\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/SolarSystem/SolarAreas/MySolarSystemRussianTransmitterConstants.cs",
    "content": "﻿using System.Collections.Generic;\nusing MinerWarsMath;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.AppCode.Game.BackgroundCube;\n\nnamespace MinerWars.AppCode.Game.SolarSystem\n{ \n    partial class MySolarSystemConstants\n    {\n        static MySectorObjectCounts RussianTransmitterObjectsProperties = new MySectorObjectCounts()\n        {\n            Voxels512 = 0,\n            Voxels256 = 10,\n            Voxels128 = 10,\n            Voxels64 = 10,\n            StaticAsteroidLarge = 20,\n            StaticAsteroidMedium =6500,\n            StaticAsteroidSmall = 5500,\n            Motherships = 0,\n            StaticDebrisFields = 0\n        };\n\n        public readonly static MyImpostorProperties[] RussianTransmitterImpostorsProperties = new MyImpostorProperties[]\n        {\n                   new MyImpostorProperties()\n                  {\n                      Enabled = false,\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Billboards,\n                      Material = MyTransparentMaterialEnum.Impostor_StaticAsteroid20m_A,\n                      ImpostorsCount = 1000,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 5,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 10,\n                      MinRadius = 1000,\n                      MaxRadius = 2000,\n                      AnimationSpeed = new Vector4(0.00009f,0,0,0),\n                      Color = Vector3.One\n                  },\n\n                  new MyImpostorProperties()\n                  {\n                      Enabled = false,\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Billboards,\n                      Material = MyTransparentMaterialEnum.Impostor_StaticAsteroid20m_C,\n                      ImpostorsCount = 1000,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 10.1f,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 11,\n                      MinRadius = 1000,\n                      MaxRadius = 2000,\n                      AnimationSpeed = new Vector4(-0.0001f,0,0,0),\n                      Color = Vector3.One\n                  },\n\n                  new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Nebula,\n                      Material = null,\n                      ImpostorsCount = 0,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 1.0f,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 1.3f,\n                      MinRadius = 0f,\n                      MaxRadius = 0f,\n                      AnimationSpeed = new Vector4(0.014f, 0.010f,0.014f, 0),\n                      Color = new Vector3(255 / 255.0f, 0 / 255.0f, 219 / 255.0f),\n                      Contrast = 0f,\n                      Intensity = 0f\n                  },\n        };\n\n\n        public static readonly MySunProperties RussianTransmitterSunProperties = new MySunProperties()\n        {\n            SunDiffuse = new Vector3(255 / 255.0f, 130 / 255.0f, 0 / 255.0f),\n            SunIntensity = 2.322f,\n            SunSpecular = new Vector3(0 / 255.0f, 0 / 255.0f, 0 / 255.0f),\n            BackSunDiffuse = new Vector3(170 / 255.0f, 175 / 255.0f, 75 / 255.0f),\n            BackSunIntensity = 0.909f,\n            AmbientColor = new Vector3(36 / 255.0f, 36 / 255.0f, 36 / 255.0f),\n            AmbientMultiplier = 0.2f,\n            EnvironmentAmbientIntensity = 0.620f,\n        };\n\n\n        public static readonly MyFogProperties RussianTransmitterFogProperties = new MyFogProperties()\n        {\n            FogColor = new Vector3(217 / 255.0f, 184 / 255.0f, 251 / 255.0f),\n            FogNear = 1,\n            FogFar = 11255.76f,\n            FogMultiplier = 0f,\n        };\n\n        public static readonly MyParticleDustProperties RussianTransmitterDustProperties = new MyParticleDustProperties()\n        {\n            DustBillboardRadius = 130f,\n            DustFieldCountInDirectionHalf = 6,\n            DistanceBetween = 218f,\n            Color = new Color(94 / 255.0f, 113 / 255.0f, 70 / 207.0f, 1f),\n        };\n\n\n        public readonly static Dictionary<MyMwcVoxelMaterialsEnum, float> RussianTransmitterAsteroidMaterials = new Dictionary<MyMwcVoxelMaterialsEnum, float>()\n        {\n            { MyMwcVoxelMaterialsEnum.Stone_10, 1},\n            { MyMwcVoxelMaterialsEnum.Stone_04, 1},\n            { MyMwcVoxelMaterialsEnum.Stone_06, 1},\n            { MyMwcVoxelMaterialsEnum.Stone_07, 1},\n        };\n\n        public readonly static Dictionary<MyMwcVoxelMaterialsEnum, float> RussianTransmitterSecondaryMaterials = new Dictionary<MyMwcVoxelMaterialsEnum, float>()\n        {\n            { MyMwcVoxelMaterialsEnum.Stone_13_Wall_01, 1},\n            { MyMwcVoxelMaterialsEnum.Stone_03, 1},\n            { MyMwcVoxelMaterialsEnum.Uranite_01, 1},\n            { MyMwcVoxelMaterialsEnum.Gold_01, 1},\n        };\n\n      \n\n        /// <summary>\n        /// Rebuild the areas\n        /// </summary>\n        public static void CreateRussianTransmitterArea()\n        {\n            Areas[MySolarSystemAreaEnum.RussianTransmitter] = new MySolarSystemAreaOrbit()\n            {\n                Name = \"Russian area\",\n                AreaType = MySolarSystemArea.AreaEnum.PostPlanet,\n                OrbitProperties = new MyOrbitProperties()\n                {\n                    OrbitCenter = Vector3.Zero,\n                    AreaCenter = MyBgrCubeConsts.RUSSIAN_POSITION * MyBgrCubeConsts.MILLION_KM,\n                    LongSpread = 0.1f,\n                    MaxDistanceFromOrbitLow = MyBgrCubeConsts.RUSSIANTRANSMITTER_RADIUS * MyBgrCubeConsts.MILLION_KM * 200,\n                    MaxDistanceFromOrbitHigh = MyBgrCubeConsts.RUSSIANTRANSMITTER_RADIUS * MyBgrCubeConsts.MILLION_KM * 400,\n                },\n                SolarMapData = new MySolarMapData()\n                {\n                    DustColor = new Vector3(0.8f, 0.35f, 0.16f),\n                    DustColorVariability = new Vector4(0.15f),\n                    TemplateGroups = new MyTemplateGroupInfo[]\n                    {\n                        new MyTemplateGroupInfo{ Importance = 1, Count = 5, TemplateGroup = MyTemplateGroupEnum.RandomStations},\n                        new MyTemplateGroupInfo{ Importance = 0.5f, Count = 20, TemplateGroup = MyTemplateGroupEnum.RandomStations},\n                    }\n                },\n                SectorData = new MySolarSectorData()\n                {\n                    SunProperties = RussianTransmitterSunProperties,\n                    FogProperties = RussianTransmitterFogProperties,\n                    ImpostorProperties = RussianTransmitterImpostorsProperties,\n                    DebrisProperties = DefaultDebrisProperties,\n\n                    SectorObjectsCounts = RussianTransmitterObjectsProperties,\n                    PrimaryAsteroidMaterials = RussianTransmitterAsteroidMaterials,\n                    SecondaryAsteroidMaterials = RussianTransmitterSecondaryMaterials,\n\n                    ParticleDustProperties = RussianTransmitterDustProperties,\n                },\n            };\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/SolarSystem/SolarAreas/MySolarSystemSaturnConstants.cs",
    "content": "﻿using System.Collections.Generic;\nusing MinerWarsMath;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.AppCode.Game.BackgroundCube;\n\nnamespace MinerWars.AppCode.Game.SolarSystem\n{\n    partial class MySolarSystemConstants\n    {\n        static MySectorObjectCounts SaturnObjectsProperties = new MySectorObjectCounts()\n        {\n            Voxels512 = 0,\n            Voxels256 = 10,\n            Voxels128 = 10,\n            Voxels64 = 10,\n            StaticAsteroidLarge = 150,\n            StaticAsteroidMedium = 5000,\n            StaticAsteroidSmall = 0,\n            Motherships = 0,\n            StaticDebrisFields = 0\n        };\n\n        public readonly static MyImpostorProperties[] SaturnImpostorsProperties = new MyImpostorProperties[]\n        {\n                   new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Billboards,\n                      Material = MyTransparentMaterialEnum.Impostor_StaticAsteroid20m_A,\n                      ImpostorsCount = 1000,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 5,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 10,\n                      MinRadius = 1000,\n                      MaxRadius = 2000,\n                      AnimationSpeed = new Vector4(0.00009f,0,0,0),\n                      Color = Vector3.One\n                  },\n\n                  new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Billboards,\n                      Material = MyTransparentMaterialEnum.Impostor_StaticAsteroid20m_C,\n                      ImpostorsCount = 1000,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 10.1f,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 11,\n                      MinRadius = 1000,\n                      MaxRadius = 2000,\n                      AnimationSpeed = new Vector4(-0.0001f,0,0,0),\n                      Color = Vector3.One\n                  },\n\n                  new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Nebula,\n                      Material = null,\n                      ImpostorsCount = 0,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 1.0f,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 1.3f,\n                      MinRadius = 0.376f,\n                      MaxRadius = 0.376f,\n                      AnimationSpeed = new Vector4(0.005f, 0.001f,0.003f, 0),\n                      Color = new Vector3(190 / 255.0f, 222 / 255.0f, 255 / 255.0f),\n                      Contrast = 20.000f,\n                      Intensity = 1.327f\n                  },\n        };\n\n\n        public static readonly MySunProperties SaturnSunProperties = new MySunProperties()\n        {\n            SunDiffuse = new Vector3(112 / 255.0f, 154 / 255.0f, 203 / 255.0f),\n            SunIntensity = MySolarSystemConstants.SunIntensityFromPosition(MyBgrCubeConsts.SATURN_POSITION) * 5,\n            SunSpecular = new Vector3(255 / 255.0f, 255 / 255.0f, 255 / 255.0f),\n            BackSunDiffuse = new Vector3(0 / 255.0f, 127 / 255.0f, 254 / 255.0f),\n            BackSunIntensity = 1.576f,\n            AmbientColor = new Vector3(0 / 255.0f, 0 / 255.0f, 156 / 255.0f),\n            AmbientMultiplier = 0.2f,\n            EnvironmentAmbientIntensity = 0.221f,\n        };\n\n\n        public static readonly MyFogProperties SaturnFogProperties = new MyFogProperties()\n        {\n            FogColor = new Vector3(0 / 255.0f, 127 / 255.0f, 255 / 255.0f),\n            FogNear = 3000,\n            FogFar = 12928,\n            FogMultiplier = 0.277f,\n            FogBacklightMultiplier = 0.000f,\n        };\n\n        public static readonly MyParticleDustProperties SaturnDustProperties = new MyParticleDustProperties()\n        {\n            Enabled = true,\n            DustBillboardRadius = 36.542f,\n            DustFieldCountInDirectionHalf = 6.123f,\n            DistanceBetween = 30.703f,\n            Color = new Color(82 / 255.0f, 176 / 255.0f, 255 / 255.0f, 1f),\n        };\n\n\n        public readonly static Dictionary<MyMwcVoxelMaterialsEnum, float> SaturnAsteroidMaterials = new Dictionary<MyMwcVoxelMaterialsEnum, float>()\n        {\n            {  MyMwcVoxelMaterialsEnum.Stone_03, 1.0f },\n            {  MyMwcVoxelMaterialsEnum.Snow_01, 1.0f },\n            {  MyMwcVoxelMaterialsEnum.Ice_01, 1.0f }\n        };\n\n        public readonly static Dictionary<MyMwcVoxelMaterialsEnum, float> SaturnSecondaryMaterials = new Dictionary<MyMwcVoxelMaterialsEnum, float>()\n        {\n            {  MyMwcVoxelMaterialsEnum.Silver_01, 1.0f },\n            {  MyMwcVoxelMaterialsEnum.Silicon_01, 1.0f }\n        };\n\n        /// <summary>\n        /// Rebuild the areas\n        /// </summary>\n        public static void CreateSaturnArea()\n        {\n            Areas[MySolarSystemAreaEnum.Saturn] = new MySolarSystemAreaOrbit()\n            {\n                Name = \"Post Saturn\",\n                AreaType = MySolarSystemArea.AreaEnum.PostPlanet,\n                OrbitProperties = new MyOrbitProperties()\n                {\n                    OrbitCenter = Vector3.Zero,\n                    AreaCenter = MyBgrCubeConsts.SATURN_POSITION * MyBgrCubeConsts.MILLION_KM,\n                    LongSpread = 0.3f,\n                    MaxDistanceFromOrbitLow = MyBgrCubeConsts.SATURN_RADIUS * MyBgrCubeConsts.MILLION_KM * 300,\n                    MaxDistanceFromOrbitHigh = MyBgrCubeConsts.SATURN_RADIUS * MyBgrCubeConsts.MILLION_KM * 1200,\n                },\n                SolarMapData = new MySolarMapData()\n                {\n                    DustColor = new Vector3(0.8f, 0.35f, 0.16f),\n                    DustColorVariability = new Vector4(0.15f),\n                    TemplateGroups = new MyTemplateGroupInfo[]\n                    {\n                        new MyTemplateGroupInfo{ Importance = 1, Count = 5, TemplateGroup = MyTemplateGroupEnum.RandomStations},\n                        new MyTemplateGroupInfo{ Importance = 0.5f, Count = 20, TemplateGroup = MyTemplateGroupEnum.RandomStations},\n                    }\n                },\n                SectorData = new MySolarSectorData()\n                {\n                    SunProperties = SaturnSunProperties,\n                    FogProperties = SaturnFogProperties,\n                    ImpostorProperties = SaturnImpostorsProperties,\n                    DebrisProperties = DefaultDebrisProperties,\n\n                    SectorObjectsCounts = SaturnObjectsProperties,\n                    PrimaryAsteroidMaterials = SaturnAsteroidMaterials,\n                    SecondaryAsteroidMaterials = SaturnSecondaryMaterials,\n\n                    ParticleDustProperties = SaturnDustProperties,\n                },\n            };\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/SolarSystem/SolarAreas/MySolarSystemSkyConstants.cs",
    "content": "﻿using MinerWarsMath;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.AppCode.Game.TransparentGeometry;\n\nnamespace MinerWars.AppCode.Game.SolarSystem\n{\n    partial class MySolarSystemConstants\n    {\n        static MySectorObjectCounts SkyObjectsProperties = new MySectorObjectCounts()\n        {\n            Voxels512 = 0,\n            Voxels256 = 0,\n            Voxels128 = 0,\n            Voxels64 = 0,\n            StaticAsteroidLarge = 0,\n            StaticAsteroidMedium = 0,\n            StaticAsteroidSmall = 0,\n            Motherships = 0,\n            StaticDebrisFields = 0\n        };\n\n        public readonly static MyImpostorProperties[] SkyImpostorsProperties = new MyImpostorProperties[]\n        {               /*\n                   new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Billboards,\n                      Material = MyTransparentMaterialEnum.smoke_field,\n                      ImpostorsCount = 1000,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 5,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 10,\n                      MinRadius = 1000,\n                      MaxRadius = 2000,\n                      AnimationSpeed = new Vector4(0.00009f,0,0,0),\n                      Color = Vector3.One\n                  },\n\n                  new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Billboards,\n                      Material = MyTransparentMaterialEnum.Impostor_StaticAsteroid20m_C,\n                      ImpostorsCount = 1000,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 10.1f,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 11,\n                      MinRadius = 1000,\n                      MaxRadius = 2000,\n                      AnimationSpeed = new Vector4(-0.0001f,0,0,0),\n                      Color = Vector3.One\n                  },\n\n                  new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Nebula,\n                      Material = null,\n                      ImpostorsCount = 0,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 1.0f,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 1.3f,\n                      MinRadius = 0.93f,\n                      MaxRadius = 0.93f,\n                      AnimationSpeed = new Vector4(0.003f, 0.001f,0.003f, 0),\n                      Color = new Vector3(15 / 255.0f, 48 / 255.0f, 83 / 255.0f),\n                      Contrast = 2.644f,\n                      Intensity = 0.344f\n                  },  */\n        };\n\n\n        public static readonly MySunProperties SkySunProperties = new MySunProperties()\n        {\n            SunDiffuse = new Vector3(150 / 255.0f, 205 / 255.0f, 208 / 255.0f),\n            SunIntensity = 5,\n            SunSpecular = new Vector3(233 / 255.0f, 130 / 255.0f, 29 / 255.0f),\n            BackSunDiffuse = new Vector3(155 / 255.0f, 96 / 255.0f, 40 / 255.0f),\n            BackSunIntensity = 0.1f,\n            AmbientColor = new Vector3(0.14f),\n            AmbientMultiplier = 0.1f,\n            EnvironmentAmbientIntensity = 0.6f,\n            BackgroundColor = new Vector3(5, 5, 16),\n        };\n\n\n        public static readonly MyFogProperties SkyFogProperties = new MyFogProperties()\n        {\n            FogColor = new Vector3(180 / 255.0f, 180 / 255.0f, 180 / 255.0f),\n            FogNear = 126,\n            FogFar = 521,\n            FogMultiplier = 0.5f,            \n        };\n\n        public static readonly MyParticleDustProperties SkyDustProperties = new MyParticleDustProperties()\n        {\n            Enabled = false,\n            DustBillboardRadius = 30.0f,\n            DustFieldCountInDirectionHalf = 4.0f,\n            DistanceBetween = 30.3f,\n            Color = new Color(120 / 255.0f, 120 / 255.0f, 30 / 255.0f, 1f),\n            Texture = MyTransparentMaterialEnum.Dust,\n            AnimSpeed = 0,\n        };\n\n\n        public static readonly MyDebrisProperties SkyDebrisProperties = new MyDebrisProperties()\n        {\n            MaxDistance = 200,\n            CountInDirectionHalf = 0,\n            FullScaleDistance = 70,\n            DistanceBetween = 50.0f,\n            //DebrisEnumValues = MyMwcObjectBuilder_SmallDebris_TypesEnum.\n        };\n\n\n\n\n        /// <summary>\n        /// Rebuild the areas\n        /// </summary>\n        public static void CreateSkyArea()\n        {\n            Areas[MySolarSystemAreaEnum.Sky] = new MySolarSystemAreaOrbit()\n            {\n                Name = \"Sky\",\n                AreaType = MySolarSystemArea.AreaEnum.PostPlanet,\n                OrbitProperties = new MyOrbitProperties()\n                {\n                    OrbitCenter = Vector3.Zero,\n                    AreaCenter = Vector3.Zero,\n                    LongSpread = 0,\n                    MaxDistanceFromOrbitLow = 0,\n                    MaxDistanceFromOrbitHigh = 0,\n                },\n                SolarMapData = new MySolarMapData()\n                {\n                    DustColor = new Vector3(0.7f, 0.7f, 0.16f),\n                    DustColorVariability = new Vector4(0.15f),\n                    TemplateGroups = new MyTemplateGroupInfo[]\n                    {\n                    }\n                },\n                SectorData = new MySolarSectorData()\n                {\n                    SunProperties = SkySunProperties,\n                    FogProperties = SkyFogProperties,\n                    ImpostorProperties = SkyImpostorsProperties,\n                    DebrisProperties = SkyDebrisProperties,\n\n                    SectorObjectsCounts = SkyObjectsProperties,\n                    PrimaryAsteroidMaterials = DefaultAsteroidMaterials,\n                    SecondaryAsteroidMaterials = DefaultSecondaryMaterials,\n\n                    ParticleDustProperties = SkyDustProperties,\n                },\n            };\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/SolarSystem/SolarAreas/MySolarSystemSlaverBaseConstants.cs",
    "content": "﻿using MinerWarsMath;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.AppCode.Game.BackgroundCube;\n\nnamespace MinerWars.AppCode.Game.SolarSystem\n{\n    partial class MySolarSystemConstants\n    {\n        static MySectorObjectCounts SlaverBaseObjectsProperties = new MySectorObjectCounts()\n        {\n            Voxels512 = 0,\n            Voxels256 = 10,\n            Voxels128 = 10,\n            Voxels64 = 10,\n            StaticAsteroidLarge = 55,\n            StaticAsteroidMedium = 1110,\n            StaticAsteroidSmall = 900,\n            Motherships = 0,\n            StaticDebrisFields = 0\n        };\n\n        public readonly static MyImpostorProperties[] SlaverBaseImpostorsProperties = new MyImpostorProperties[]\n        {\n                   new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Billboards,\n                      Material = MyTransparentMaterialEnum.Impostor_StaticAsteroid20m_A,\n                      ImpostorsCount = 1000,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 5,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 10,\n                      MinRadius = 1000,\n                      MaxRadius = 2000,\n                      AnimationSpeed = new Vector4(0.00009f,0,0,0),\n                      Color = Vector3.One\n                  },\n\n                  new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Billboards,\n                      Material = MyTransparentMaterialEnum.Impostor_StaticAsteroid20m_C,\n                      ImpostorsCount = 1000,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 10.1f,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 11,\n                      MinRadius = 1000,\n                      MaxRadius = 2000,\n                      AnimationSpeed = new Vector4(-0.0001f,0,0,0),\n                      Color = Vector3.One\n                  },\n                  /*\n                  new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Nebula,\n                      Material = null, \n                      ImpostorsCount = 0,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 1.0f,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 1.3f,\n                      MinRadius = 0.475f,\n                      MaxRadius = 0.475f,\n                      AnimationSpeed = new Vector4(0.001f, 0.001f,0.001f, 0),\n                      Color = new Vector3(241 / 255.0f, 66 / 255.0f, 0 / 255.0f),\n                      Contrast = 0.604f,\n                      Intensity = 0.630f\n                  },*/\n        };\n\n\n        public static readonly MySunProperties SlaverBaseSunProperties = new MySunProperties()\n        {\n            SunDiffuse = new Vector3(235 / 255.0f, 129 / 255.0f, 63 / 255.0f),\n            SunIntensity = 2.058f,\n            SunSpecular = new Vector3(251 / 255.0f, 123 / 255.0f, 28 / 255.0f),\n            BackSunDiffuse = new Vector3(212 / 255.0f, 108 / 255.0f, 8 / 255.0f),\n            BackSunIntensity = 0.169f,\n            AmbientColor = new Vector3(40 / 255.0f, 29 / 255.0f, 36 / 255.0f),\n            AmbientMultiplier = 0.921f,\n            EnvironmentAmbientIntensity = 0.46f,\n        };\n\n        /*\n        public static readonly MyFogProperties SlaverBaseFogProperties = new MyFogProperties()\n        {\n            FogColor = new Vector3(172 / 255.0f, 13 / 255.0f, 10 / 255.0f),\n            FogNear = 569.399f,\n            FogFar = 10259,\n            FogMultiplier = 0.235f,\n            FogBacklightMultiplier = 0.968f,\n        };*/\n        /*\n        public static readonly MyParticleDustProperties SlaverBaseDustProperties = new MyParticleDustProperties()\n        {\n            DustBillboardRadius = 123.574f,\n            DustFieldCountInDirectionHalf = 6.394f,\n            DistanceBetween = 155.705f,\n            Color = new Color(166 / 255.0f, 37 / 255.0f, 0 / 207.0f, 1f),\n        };*/\n\n\n\n\n\n        /// <summary>\n        /// Rebuild the areas\n        /// </summary>\n        public static void CreateSlaverBaseArea()\n        {\n            Areas[MySolarSystemAreaEnum.SlaverBase] = new MySolarSystemAreaOrbit()\n            {\n                Name = \"Slavers area\",\n                AreaType = MySolarSystemArea.AreaEnum.PostPlanet,\n                OrbitProperties = new MyOrbitProperties()\n                {\n                    OrbitCenter = Vector3.Zero,\n                    AreaCenter = MyBgrCubeConsts.SLAVERS_POSITION * MyBgrCubeConsts.MILLION_KM * 1.001f,\n                    LongSpread = 0.1f,\n                    MaxDistanceFromOrbitLow = MyBgrCubeConsts.SLAVERBASE_RADIUS * MyBgrCubeConsts.MILLION_KM * 200,\n                    MaxDistanceFromOrbitHigh = MyBgrCubeConsts.SLAVERBASE_RADIUS * MyBgrCubeConsts.MILLION_KM * 500,\n                },\n                SolarMapData = new MySolarMapData()\n                {\n                    DustColor = new Vector3(0.8f, 0.35f, 0.16f),\n                    DustColorVariability = new Vector4(0.15f),\n                    TemplateGroups = new MyTemplateGroupInfo[]\n                    {\n                        new MyTemplateGroupInfo{ Importance = 1, Count = 5, TemplateGroup = MyTemplateGroupEnum.RandomStations},\n                        new MyTemplateGroupInfo{ Importance = 0.5f, Count = 20, TemplateGroup = MyTemplateGroupEnum.RandomStations},\n                    }\n                },\n                SectorData = new MySolarSectorData()\n                {\n                    SunProperties = SlaverBaseSunProperties,\n                    FogProperties = DefaultFogProperties,\n                    ImpostorProperties = SlaverBaseImpostorsProperties,\n                    DebrisProperties = DefaultDebrisProperties,\n\n                    SectorObjectsCounts = SlaverBaseObjectsProperties,\n                    PrimaryAsteroidMaterials = DefaultAsteroidMaterials,\n                    SecondaryAsteroidMaterials = DefaultSecondaryMaterials,\n\n                    ParticleDustProperties = DefaultParticleDustProperties,\n                },\n            };\n        }\n    }  \n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/SolarSystem/SolarAreas/MySolarSystemSlaversBase2Constants.cs",
    "content": "﻿using System.Collections.Generic;\nusing MinerWarsMath;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.AppCode.Game.BackgroundCube;\n\nnamespace MinerWars.AppCode.Game.SolarSystem\n{                  \n    partial class MySolarSystemConstants\n    {\n        static MySectorObjectCounts SlaversBase2ObjectsProperties = new MySectorObjectCounts()\n        {\n            Voxels512 = 0,\n            Voxels256 = 10,\n            Voxels128 = 10,\n            Voxels64 = 10,\n            StaticAsteroidLarge = 30,\n            StaticAsteroidMedium = 2000,\n            StaticAsteroidSmall = 0,\n            Motherships = 0,\n            StaticDebrisFields = 0\n        };\n\n        public readonly static MyImpostorProperties[] SlaversBase2ImpostorsProperties = new MyImpostorProperties[]\n        {\n                   new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Billboards,\n                      Material = MyTransparentMaterialEnum.Impostor_StaticAsteroid20m_A,\n                      ImpostorsCount = 1000,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 5,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 10,\n                      MinRadius = 1000,\n                      MaxRadius = 2000,\n                      AnimationSpeed = new Vector4(0.00009f,0,0,0),\n                      Color = Vector3.One\n                  },\n\n                  new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Billboards,\n                      Material = MyTransparentMaterialEnum.Impostor_StaticAsteroid20m_C,\n                      ImpostorsCount = 1000,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 10.1f,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 11,\n                      MinRadius = 1000,\n                      MaxRadius = 2000,\n                      AnimationSpeed = new Vector4(-0.0001f,0,0,0),\n                      Color = Vector3.One\n                  },\n\n                  new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Nebula,\n                      Material = null,\n                      ImpostorsCount = 0,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 1.0f,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 1.3f,\n                      MinRadius = 0.93f,\n                      MaxRadius = 0.93f,\n                      AnimationSpeed = new Vector4(0.003f, 0.001f,0.003f, 0),\n                      Color = new Vector3(65 / 255.0f, 225 / 255.0f, 208 / 255.0f),\n                      Contrast = 1.537f,\n                      Intensity = 0.44f\n                  },\n        };\n\n\n        public static readonly MySunProperties SlaversBase2SunProperties = new MySunProperties()\n        {\n            SunDiffuse = new Vector3(176 / 255.0f, 238 / 255.0f, 238 / 255.0f),\n            SunIntensity = 2.106f,\n            SunSpecular = new Vector3(32 / 255.0f, 56 / 255.0f, 42 / 255.0f),\n            BackSunDiffuse = new Vector3(27 / 255.0f, 153 / 255.0f, 225 / 255.0f),\n            BackSunIntensity = 2.206f,\n            AmbientColor = new Vector3(36 / 255.0f, 36 / 255.0f, 36 / 255.0f),\n            AmbientMultiplier = 0.765f,\n            EnvironmentAmbientIntensity = 0.261f,\n        };\n\n\n        public static readonly MyFogProperties SlaversBase2FogProperties = new MyFogProperties()\n        {\n            FogColor = new Vector3(0 / 255.0f, 0 / 255.0f, 205 / 255.0f),\n            FogNear = 4073,\n            FogFar = 4726,\n            FogMultiplier = 0.161f,\n            FogBacklightMultiplier = 1.177f,\n        };\n\n        public static readonly MyParticleDustProperties SlaversBase2DustProperties = new MyParticleDustProperties()\n        {\n            DustBillboardRadius = 108.650f,\n            DustFieldCountInDirectionHalf = 5.835f,\n            DistanceBetween = 128.44f,\n            Color = new Color(0 / 255.0f, 0 / 255.0f, 0 / 255.0f, 1f),\n        };\n\n                      //Not worth of limiting, it is used in multiplayer maps where is everything..\n        public readonly static Dictionary<MyMwcVoxelMaterialsEnum, float> SlaversBase2AsteroidMaterials = new Dictionary<MyMwcVoxelMaterialsEnum, float>()\n        {     /*   \n            {  MyMwcVoxelMaterialsEnum.Stone_05, 1},\n            {  MyMwcVoxelMaterialsEnum.Stone_06, 1},\n            {  MyMwcVoxelMaterialsEnum.Stone_10, 1},\n            {  MyMwcVoxelMaterialsEnum.Stone_01, 1},   //because of Junkyard mines in multiplayer\n           */\n        };\n\n        public readonly static Dictionary<MyMwcVoxelMaterialsEnum, float> SlaversBase2SecondaryMaterials = new Dictionary<MyMwcVoxelMaterialsEnum, float>()\n        {     /*\n            {  MyMwcVoxelMaterialsEnum.Helium3_01, 1},\n            {  MyMwcVoxelMaterialsEnum.Ice_01, 1}, //because of Ice cave in multiplayer\n            {  MyMwcVoxelMaterialsEnum.Uranite_01, 1}, //because of Plutonium mines in multiplayer\n            {  MyMwcVoxelMaterialsEnum.Indestructible_01, 1},   //because of Junkyard mines in multiplayer\n            {  MyMwcVoxelMaterialsEnum.Cobalt_01, 1},   //because of Junkyard mines in multiplayer\n            {  MyMwcVoxelMaterialsEnum.Lava_01, 1},   //because of Junkyard mines in multiplayer\n            {  MyMwcVoxelMaterialsEnum.Treasure_01, 1},   //because of Junkyard mines in multiplayer\n               */ \n        };             \n                      \n\n\n        /// <summary>\n        /// Rebuild the areas\n        /// </summary>\n        public static void CreateSlaversBase2Area()\n        {\n            Areas[MySolarSystemAreaEnum.SlaversBase2] = new MySolarSystemAreaOrbit()\n            {\n                Name = \"Slavers area 2\",\n                AreaType = MySolarSystemArea.AreaEnum.PostPlanet,\n                OrbitProperties = new MyOrbitProperties()\n                {\n                    OrbitCenter = Vector3.Zero,\n                    AreaCenter = MyBgrCubeConsts.SLAVERS2_POSITION * MyBgrCubeConsts.MILLION_KM,\n                    LongSpread = 0.1f,\n                    MaxDistanceFromOrbitLow = MyBgrCubeConsts.SLAVERSBASE2_RADIUS * MyBgrCubeConsts.MILLION_KM * 200,\n                    MaxDistanceFromOrbitHigh = MyBgrCubeConsts.SLAVERSBASE2_RADIUS * MyBgrCubeConsts.MILLION_KM * 1400,\n                },\n                SolarMapData = new MySolarMapData()\n                {\n                    DustColor = new Vector3(0.8f, 0.35f, 0.16f),\n                    DustColorVariability = new Vector4(0.15f),\n                    TemplateGroups = new MyTemplateGroupInfo[]\n                    {\n                        new MyTemplateGroupInfo{ Importance = 1, Count = 5, TemplateGroup = MyTemplateGroupEnum.RandomStations},\n                        new MyTemplateGroupInfo{ Importance = 0.5f, Count = 20, TemplateGroup = MyTemplateGroupEnum.RandomStations},\n                    }\n                },\n                SectorData = new MySolarSectorData()\n                {\n                    SunProperties = SlaversBase2SunProperties,\n                    FogProperties = SlaversBase2FogProperties,\n                    ImpostorProperties = SlaversBase2ImpostorsProperties,\n                    DebrisProperties = DefaultDebrisProperties,\n\n                    SectorObjectsCounts = SlaversBase2ObjectsProperties,\n                    PrimaryAsteroidMaterials = SlaversBase2AsteroidMaterials,\n                    SecondaryAsteroidMaterials = SlaversBase2SecondaryMaterials,\n\n                    ParticleDustProperties = SlaversBase2DustProperties,\n                },\n            };\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/SolarSystem/SolarAreas/MySolarSystemSmallPirateBase2Constants.cs",
    "content": "﻿using MinerWarsMath;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.AppCode.Game.BackgroundCube;\n\nnamespace MinerWars.AppCode.Game.SolarSystem\n{                         \n    partial class MySolarSystemConstants\n    {\n        static MySectorObjectCounts SmallPirateBase2ObjectsProperties = new MySectorObjectCounts()\n        {\n            Voxels512 = 0,\n            Voxels256 = 10,\n            Voxels128 = 10,\n            Voxels64 = 10,\n            StaticAsteroidLarge = 30,\n            StaticAsteroidMedium = 2000,\n            StaticAsteroidSmall = 0,\n            Motherships = 0,\n            StaticDebrisFields = 0\n        };\n\n        public readonly static MyImpostorProperties[] SmallPirateBase2ImpostorsProperties = new MyImpostorProperties[]\n        {\n                   new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Billboards,\n                      Material = MyTransparentMaterialEnum.Impostor_StaticAsteroid20m_A,\n                      ImpostorsCount = 1000,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 5,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 10,\n                      MinRadius = 1000,\n                      MaxRadius = 2000,\n                      AnimationSpeed = new Vector4(0.00009f,0,0,0),\n                      Color = Vector3.One\n                  },\n\n                  new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Billboards,\n                      Material = MyTransparentMaterialEnum.Impostor_StaticAsteroid20m_C,\n                      ImpostorsCount = 1000,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 10.1f,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 11,\n                      MinRadius = 1000,\n                      MaxRadius = 2000,\n                      AnimationSpeed = new Vector4(-0.0001f,0,0,0),\n                      Color = Vector3.One\n                  },\n\n                  new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Nebula,\n                      Material = null,\n                      ImpostorsCount = 0,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 1.0f,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 1.3f,\n                      MinRadius = 0.8f,\n                      MaxRadius = 0.8f,\n                      AnimationSpeed = new Vector4(0.004f, 0.001f,0.003f, 0),\n                      Color = new Vector3(180 / 255.0f, 91 / 255.0f, 18 / 255.0f),\n                      Contrast = 6.872f,\n                      Intensity = 3.962f\n                  },\n        };\n\n\n        public static readonly MySunProperties SmallPirateBase2SunProperties = new MySunProperties()\n        {\n            SunDiffuse = new Vector3(255 / 255.0f, 166 / 255.0f, 72 / 255.0f),\n            SunIntensity = MySolarSystemConstants.SunIntensityFromPosition(MyBgrCubeConsts.PIRATES2_POSITION) * 2,\n            SunSpecular = new Vector3(187 / 255.0f, 82 / 255.0f, 50 / 255.0f),\n            BackSunDiffuse = new Vector3(56 / 255.0f, 46 / 255.0f, 36 / 255.0f),\n            BackSunIntensity = 1.39f,\n            AmbientColor = new Vector3(0.14f),\n            AmbientMultiplier = 0.2f,\n            EnvironmentAmbientIntensity = 0.450f,\n        };\n\n\n        public static readonly MyFogProperties SmallPirateBase2FogProperties = new MyFogProperties()\n        {\n            FogColor = new Vector3(44 / 255.0f, 11 / 255.0f, 15 / 255.0f),\n            FogNear = 3000,\n            FogFar = 20000,\n            FogMultiplier = 0.59f,\n            FogBacklightMultiplier = 0.25f,\n        };\n\n        public static readonly MyParticleDustProperties SmallPirateBase2DustProperties = new MyParticleDustProperties()\n        {\n            DustBillboardRadius = 102.96f,\n            DustFieldCountInDirectionHalf = 6.677f,\n            DistanceBetween = 119.900f,\n            Color = new Color(5 / 255.0f, 10 / 255.0f, 30 / 255.0f, 1f),\n        };\n\n\n\n\n\n        /// <summary>\n        /// Rebuild the areas\n        /// </summary>\n        public static void CreateSmallPirateBase2Area()\n        {\n            Areas[MySolarSystemAreaEnum.SmallPirateBase2] = new MySolarSystemAreaOrbit()\n            {\n                Name = \"Pirates area\",\n                AreaType = MySolarSystemArea.AreaEnum.PostPlanet,\n                OrbitProperties = new MyOrbitProperties()\n                {\n                    OrbitCenter = Vector3.Zero,\n                    AreaCenter = MyBgrCubeConsts.PIRATES2_POSITION * MyBgrCubeConsts.MILLION_KM,\n                    LongSpread = 0.1f,\n                    MaxDistanceFromOrbitLow = MyBgrCubeConsts.SMALLPIRATEBASE2_RADIUS * MyBgrCubeConsts.MILLION_KM * 100,\n                    MaxDistanceFromOrbitHigh = MyBgrCubeConsts.SMALLPIRATEBASE2_RADIUS * MyBgrCubeConsts.MILLION_KM * 800,\n                },\n                SolarMapData = new MySolarMapData()\n                {\n                    DustColor = new Vector3(0.8f, 0.35f, 0.16f),\n                    DustColorVariability = new Vector4(0.15f),\n                    TemplateGroups = new MyTemplateGroupInfo[]\n                    {\n                        new MyTemplateGroupInfo{ Importance = 1, Count = 5, TemplateGroup = MyTemplateGroupEnum.RandomStations},\n                        new MyTemplateGroupInfo{ Importance = 0.5f, Count = 20, TemplateGroup = MyTemplateGroupEnum.RandomStations},\n                    }\n                },\n                SectorData = new MySolarSectorData()\n                {\n                    SunProperties = SmallPirateBase2SunProperties,\n                    FogProperties = SmallPirateBase2FogProperties,\n                    ImpostorProperties = SmallPirateBase2ImpostorsProperties,\n                    DebrisProperties = DefaultDebrisProperties,\n\n                    SectorObjectsCounts = SmallPirateBase2ObjectsProperties,\n                    PrimaryAsteroidMaterials = DefaultAsteroidMaterials,\n                    SecondaryAsteroidMaterials = DefaultSecondaryMaterials,\n\n                    ParticleDustProperties = SmallPirateBase2DustProperties,\n                },\n            };\n        }\n    }                           \n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/SolarSystem/SolarAreas/MySolarSystemUranConstants.cs",
    "content": "﻿using System.Collections.Generic;\nusing MinerWarsMath;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.AppCode.Game.BackgroundCube;\n\nnamespace MinerWars.AppCode.Game.SolarSystem\n{\n    partial class MySolarSystemConstants\n    {\n        static MySectorObjectCounts UranObjectsProperties = new MySectorObjectCounts()\n        {\n            Voxels512 = 0,\n            Voxels256 = 10,\n            Voxels128 = 10,\n            Voxels64 = 10,\n            StaticAsteroidLarge = 150,\n            StaticAsteroidMedium = 5000,\n            StaticAsteroidSmall = 0,\n            Motherships = 0,\n            StaticDebrisFields = 0\n        };\n\n        public readonly static MyImpostorProperties[] UranImpostorsProperties = new MyImpostorProperties[]\n        {\n                   new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Billboards,\n                      Material = MyTransparentMaterialEnum.Impostor_StaticAsteroid20m_A,\n                      ImpostorsCount = 1000,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 5,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 10,\n                      MinRadius = 1000,\n                      MaxRadius = 2000,\n                      AnimationSpeed = new Vector4(0.00009f,0,0,0),\n                      Color = Vector3.One\n                  },\n\n                  new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Billboards,\n                      Material = MyTransparentMaterialEnum.Impostor_StaticAsteroid20m_C,\n                      ImpostorsCount = 1000,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 10.1f,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 11,\n                      MinRadius = 1000,\n                      MaxRadius = 2000,\n                      AnimationSpeed = new Vector4(-0.0001f,0,0,0),\n                      Color = Vector3.One\n                  },\n\n                  new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Nebula,\n                      Material = null,\n                      ImpostorsCount = 0,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 1.0f,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 1.3f,\n                      MinRadius = 1.9f,\n                      MaxRadius = 1.9f,\n                      AnimationSpeed = new Vector4(0.005f, 0.001f,0.003f, 0),\n                      Color = new Vector3(17 / 255.0f, 95 / 255.0f, 110 / 255.0f),\n                      Contrast = 19.170f,\n                      Intensity = 0.656f\n                  },\n        };\n\n\n        public static readonly MySunProperties UranSunProperties = new MySunProperties()\n        {\n            SunDiffuse = new Vector3(179 / 255.0f, 160 / 255.0f, 127 / 255.0f),\n            SunIntensity = MySolarSystemConstants.SunIntensityFromPosition(MyBgrCubeConsts.URANUS_POSITION) * 5,\n            SunSpecular = new Vector3(57 / 255.0f, 136 / 255.0f, 192 / 255.0f),\n            BackSunDiffuse = new Vector3(254 / 255.0f, 254 / 255.0f, 254 / 255.0f),\n            BackSunIntensity = 1.05f,\n            AmbientColor = new Vector3(0.14f),\n            AmbientMultiplier = 0.2f,\n            EnvironmentAmbientIntensity = 0.45f,\n        };\n\n\n        public static readonly MyFogProperties UranFogProperties = new MyFogProperties()\n        {\n            FogColor = new Vector3(52 / 255.0f, 99 / 255.0f, 73 / 129.0f),\n            FogNear = 3000,\n            FogFar = 13000,\n            FogMultiplier = 0.65f,\n        };\n\n        public static readonly MyParticleDustProperties UranDustProperties = new MyParticleDustProperties()\n        {\n            DustBillboardRadius = 125.96f,\n            DustFieldCountInDirectionHalf = 5.177f,\n            DistanceBetween = 176.900f,\n            Color = new Color(0 / 255.0f, 90 / 255.0f, 90 / 255.0f, 1f),\n        };\n        \n        public readonly static Dictionary<MyMwcVoxelMaterialsEnum, float> UranAsteroidMaterials = new Dictionary<MyMwcVoxelMaterialsEnum, float>()\n        {\n            {  MyMwcVoxelMaterialsEnum.Stone_03, 1.0f },\n            {  MyMwcVoxelMaterialsEnum.Stone_13_Wall_01, 1.0f },\n        };\n\n        public readonly static Dictionary<MyMwcVoxelMaterialsEnum, float> UranSecondaryMaterials = new Dictionary<MyMwcVoxelMaterialsEnum, float>()\n        {\n            {  MyMwcVoxelMaterialsEnum.Stone_03, 1.0f },\n            {  MyMwcVoxelMaterialsEnum.Stone_13_Wall_01, 1.0f },\n            {  MyMwcVoxelMaterialsEnum.Snow_01, 1.0f },\n            {  MyMwcVoxelMaterialsEnum.Helium4_01, 1.0f },\n        };\n\n        /// <summary>\n        /// Rebuild the areas\n        /// </summary>\n        public static void CreateUranArea()\n        {\n            Areas[MySolarSystemAreaEnum.Uranus] = new MySolarSystemAreaOrbit()\n            {\n                Name = \"Post Uranus\",\n                AreaType = MySolarSystemArea.AreaEnum.PostPlanet,\n                OrbitProperties = new MyOrbitProperties()\n                {\n                    OrbitCenter = Vector3.Zero,\n                    AreaCenter = MyBgrCubeConsts.URANUS_POSITION * MyBgrCubeConsts.MILLION_KM,\n                    LongSpread = 0.3f,\n                    MaxDistanceFromOrbitLow = MyBgrCubeConsts.URANUS_RADIUS * MyBgrCubeConsts.MILLION_KM * 300,\n                    MaxDistanceFromOrbitHigh = MyBgrCubeConsts.URANUS_RADIUS * MyBgrCubeConsts.MILLION_KM * 1200,\n                },\n                SolarMapData = new MySolarMapData()\n                {\n                    DustColor = new Vector3(0.8f, 0.35f, 0.16f),\n                    DustColorVariability = new Vector4(0.15f),\n                    TemplateGroups = new MyTemplateGroupInfo[]\n                    {\n                        new MyTemplateGroupInfo{ Importance = 1, Count = 5, TemplateGroup = MyTemplateGroupEnum.RandomStations},\n                        new MyTemplateGroupInfo{ Importance = 0.5f, Count = 20, TemplateGroup = MyTemplateGroupEnum.RandomStations},\n                    }\n                },\n                SectorData = new MySolarSectorData()\n                {\n                    SunProperties = UranSunProperties,\n                    FogProperties = UranFogProperties,\n                    ImpostorProperties = UranImpostorsProperties,\n                    DebrisProperties = DefaultDebrisProperties,\n\n                    SectorObjectsCounts = UranObjectsProperties,\n                    PrimaryAsteroidMaterials = UranAsteroidMaterials,\n                    SecondaryAsteroidMaterials = UranSecondaryMaterials,\n\n                    ParticleDustProperties = UranDustProperties,\n                },\n            };\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/SolarSystem/SolarAreas/MySolarSystemValiantConstants.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing System.Diagnostics;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.AppCode.Game.BackgroundCube;\n\nnamespace MinerWars.AppCode.Game.SolarSystem\n{\n    partial class MySolarSystemConstants\n    {\n        static MySectorObjectCounts ValiantObjectsProperties = new MySectorObjectCounts()\n        {\n            Voxels512 = 0,\n            Voxels256 = 10,\n            Voxels128 = 10,\n            Voxels64 = 10,\n            StaticAsteroidLarge = 300,\n            StaticAsteroidMedium = 5000,\n            StaticAsteroidSmall = 0,\n            Motherships = 0,\n            StaticDebrisFields = 0\n        };\n\n        public readonly static MyImpostorProperties[] ValiantImpostorsProperties = new MyImpostorProperties[]\n        {\n                   new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Billboards,\n                      Material = MyTransparentMaterialEnum.Impostor_StaticAsteroid20m_A,\n                      ImpostorsCount = 1000,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 5,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 10,\n                      MinRadius = 1000,\n                      MaxRadius = 2000,\n                      AnimationSpeed = new Vector4(0.00009f,0,0,0),\n                      Color = Vector3.One\n                  },\n\n                  new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Billboards,\n                      Material = MyTransparentMaterialEnum.Impostor_StaticAsteroid20m_C,\n                      ImpostorsCount = 1000,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 10.1f,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 11,\n                      MinRadius = 1000,\n                      MaxRadius = 2000,\n                      AnimationSpeed = new Vector4(-0.0001f,0,0,0),\n                      Color = Vector3.One\n                  },\n\n                  new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Nebula,\n                      Material = null,\n                      ImpostorsCount = 0,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 1.0f,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 1.3f,\n                      MinRadius = 0.472f,\n                      MaxRadius = 0.472f,\n                      AnimationSpeed = new Vector4(0.004f, 0.001f,0.003f, 0),\n                      Color = new Vector3(255 / 255.0f, 255 / 255.0f, 255 / 255.0f),\n                      Contrast = 6.170f,\n                      Intensity = 1.135f\n                  },\n        };\n\n\n        public static readonly MySunProperties ValiantSunProperties = new MySunProperties()\n        {\n            SunDiffuse = new Vector3(255 / 255.0f, 200 / 255.0f, 127 / 255.0f),\n            SunIntensity = MySolarSystemConstants.SunIntensityFromPosition(new Vector3(-29f, 0.0f, -171.6f)) * 1.1f,\n            SunSpecular = new Vector3(232 / 255.0f, 132 / 255.0f, 29 / 255.0f),\n            BackSunDiffuse = new Vector3(70 / 255.0f, 129 / 255.0f, 181 / 255.0f),\n            BackSunIntensity = 1.39f,\n            AmbientColor = new Vector3(36 / 255.0f, 36 / 255.0f, 36 / 255.0f),\n            AmbientMultiplier = 0.2f,\n            EnvironmentAmbientIntensity = 0.516f,\n        };\n\n\n        public static readonly MyFogProperties ValiantFogProperties = new MyFogProperties()\n        {\n            FogColor = new Vector3(68 / 255.0f, 205 / 255.0f, 255 / 255.0f),\n            FogNear = 5318,\n            FogFar = 10691,\n            FogMultiplier = 0.383f,\n        };\n\n        public static readonly MyParticleDustProperties ValiantDustProperties = new MyParticleDustProperties()\n        {\n            DustBillboardRadius = 102.96f,\n            DustFieldCountInDirectionHalf = 4.477f,\n            DistanceBetween = 112.900f,\n            Color = new Color(117.0f / 255.0f, 166.0f / 255.0f, 198.0f / 255.0f),\n        };\n\n        public static readonly MyDebrisProperties ValiantDebrisProperties = new MyDebrisProperties()\n        {\n            MaxDistance = 200,\n            CountInDirectionHalf = 2,\n            FullScaleDistance = 70,\n            DistanceBetween = 50.0f,\n            //DebrisEnumValues = MyMwcObjectBuilder_SmallDebris_TypesEnum.\n        };\n        \n        public readonly static Dictionary<MyMwcVoxelMaterialsEnum, float> ValiantAsteroidMaterials = new Dictionary<MyMwcVoxelMaterialsEnum, float>()\n        {\n            {  MyMwcVoxelMaterialsEnum.Stone_03, 1.0f },\n            {  MyMwcVoxelMaterialsEnum.Indestructible_02, 1.0f },\n            {  MyMwcVoxelMaterialsEnum.Concrete_01, 1.0f },\n        };\n\n        public readonly static Dictionary<MyMwcVoxelMaterialsEnum, float> ValiantSecondaryMaterials = new Dictionary<MyMwcVoxelMaterialsEnum, float>()\n        {\n            {  MyMwcVoxelMaterialsEnum.Treasure_01, 1.0f },\n            {  MyMwcVoxelMaterialsEnum.Uranite_01, 1.0f }\n        };\n\n        /// <summary>\n        /// Rebuild the areas\n        /// </summary>\n        public static void CreateValiantArea()\n        {\n            Areas[MySolarSystemAreaEnum.Valiant] = new MySolarSystemAreaOrbit()\n            {\n                Name = \"Valiant\",\n                AreaType = MySolarSystemArea.AreaEnum.PostPlanet,\n                OrbitProperties = new MyOrbitProperties()\n                {\n                    OrbitCenter = Vector3.Zero,\n                    AreaCenter = new Vector3(-29f, 0.0f, -171.6f) * MyBgrCubeConsts.MILLION_KM,\n                    LongSpread = 0.1f,\n                    MaxDistanceFromOrbitLow = MyBgrCubeConsts.JUPITER_RADIUS * MyBgrCubeConsts.MILLION_KM * 30,\n                    MaxDistanceFromOrbitHigh = MyBgrCubeConsts.JUPITER_RADIUS * MyBgrCubeConsts.MILLION_KM * 180,\n                },\n                SolarMapData = new MySolarMapData()\n                {\n                    DustColor = new Vector3(0.8f, 0.35f, 0.16f),\n                    DustColorVariability = new Vector4(0.15f),\n                    TemplateGroups = new MyTemplateGroupInfo[]\n                    {\n                        new MyTemplateGroupInfo{ Importance = 1, Count = 5, TemplateGroup = MyTemplateGroupEnum.RandomStations},\n                        new MyTemplateGroupInfo{ Importance = 0.5f, Count = 20, TemplateGroup = MyTemplateGroupEnum.RandomStations},\n                    }\n                },\n                SectorData = new MySolarSectorData()\n                {\n                    SunProperties = ValiantSunProperties,\n                    FogProperties = ValiantFogProperties,\n                    ImpostorProperties = ValiantImpostorsProperties,\n                    DebrisProperties = ValiantDebrisProperties,\n\n                    SectorObjectsCounts = ValiantObjectsProperties,\n                    PrimaryAsteroidMaterials = ValiantAsteroidMaterials,\n                    SecondaryAsteroidMaterials = ValiantSecondaryMaterials,\n\n                    ParticleDustProperties = ValiantDustProperties,\n                },\n            };\n        }\n    }\n\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/SolarSystem/SolarAreas/MySolarSystemVenusConstants.cs",
    "content": "﻿using System.Collections.Generic;\nusing MinerWarsMath;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.AppCode.Game.BackgroundCube;\n\nnamespace MinerWars.AppCode.Game.SolarSystem\n{\n    partial class MySolarSystemConstants\n    {\n        static MySectorObjectCounts VenusObjectsProperties = new MySectorObjectCounts()\n        {\n            Voxels512 = 0,\n            Voxels256 = 10,\n            Voxels128 = 10,\n            Voxels64 = 10,\n            StaticAsteroidLarge = 190,\n            StaticAsteroidMedium = 5000,\n            StaticAsteroidSmall = 0,\n            Motherships = 0,\n            StaticDebrisFields = 0\n        };\n\n        public readonly static MyImpostorProperties[] VenusImpostorsProperties = new MyImpostorProperties[]\n        {\n                   new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Billboards,\n                      Material = MyTransparentMaterialEnum.Impostor_StaticAsteroid20m_A,\n                      ImpostorsCount = 1000,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 5,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 10,\n                      MinRadius = 1000,\n                      MaxRadius = 2000,\n                      AnimationSpeed = new Vector4(0.00009f,0,0,0),\n                      Color = Vector3.One\n                  },\n\n                  new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Billboards,\n                      Material = MyTransparentMaterialEnum.Impostor_StaticAsteroid20m_C,\n                      ImpostorsCount = 1000,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 10.1f,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 11,\n                      MinRadius = 1000,\n                      MaxRadius = 2000,\n                      AnimationSpeed = new Vector4(-0.0001f,0,0,0),\n                      Color = Vector3.One\n                  },\n\n                  new MyImpostorProperties()\n                  {\n                      ImpostorType = MyVoxelMapImpostors.MyImpostorType.Nebula,\n                      Material = null,\n                      ImpostorsCount = 0,\n                      MinDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 1.0f,\n                      MaxDistance = MyMwcSectorConstants.SECTOR_SIZE_HALF * 1.3f,\n                      MinRadius = 0.76f,\n                      MaxRadius = 0.76f,\n                      AnimationSpeed = new Vector4(0.003f, 0.002f,0.000f, 0),\n                      Color = new Vector3(255 / 255.0f, 141 / 255.0f, 0 / 255.0f),\n                      Contrast = 0.954f,\n                      Intensity = 0.560f\n                  },\n        };\n\n\n        public static readonly MySunProperties VenusSunProperties = new MySunProperties()\n        {\n            SunDiffuse = new Vector3(252 / 255.0f, 178 / 255.0f, 51 / 255.0f),\n            SunIntensity = MySolarSystemConstants.SunIntensityFromPosition(MyBgrCubeConsts.VENUS_POSITION),\n            SunSpecular = new Vector3(198 / 255.0f, 114 / 255.0f, 5 / 255.0f),\n            BackSunDiffuse = new Vector3(92 / 255.0f, 51 / 255.0f, 24 / 255.0f),\n            BackSunIntensity = 0.69f,\n            AmbientColor = new Vector3(87 / 255.0f, 51 / 255.0f, 24 / 255.0f),\n            AmbientMultiplier = 0.2f,\n            EnvironmentAmbientIntensity = 1.029f,\n        };\n\n\n        public static readonly MyFogProperties VenusFogProperties = new MyFogProperties()\n        {\n            FogColor = new Vector3(210 / 255.0f, 51 / 255.0f, 22 / 255.0f),\n            FogNear = 9347.831f,\n            FogFar = 13000,\n            FogMultiplier = 0.402f,\n            FogBacklightMultiplier = 0.860f,\n        };\n\n        public static readonly MyParticleDustProperties VenusDustProperties = new MyParticleDustProperties()\n        {\n            DustBillboardRadius = 72.76f,\n            DustFieldCountInDirectionHalf = 5.2f,\n            DistanceBetween = 104.3f,\n            Color = new Color(107 / 255.0f, 54 / 255.0f, 4 / 255.0f, 1f),\n        };\n\n        public readonly static Dictionary<MyMwcVoxelMaterialsEnum, float> VenusPrimaryAsteroidMaterials = new Dictionary<MyMwcVoxelMaterialsEnum, float>()\n        {\n            { MyMwcVoxelMaterialsEnum.Stone_03, 1.0f },\n            { MyMwcVoxelMaterialsEnum.Stone_04, 1.0f },\n        };\n\n\n        public readonly static Dictionary<MyMwcVoxelMaterialsEnum, float> VenusSecondaryAsteroidMaterials = new Dictionary<MyMwcVoxelMaterialsEnum, float>()\n        {\n            { MyMwcVoxelMaterialsEnum.Magnesium_01, 1.0f },\n            { MyMwcVoxelMaterialsEnum.Indestructible_01, 0.0f }\n        };\n\n        \n        /// <summary>\n        /// Rebuild the areas\n        /// </summary>\n        public static void CreateVenusArea()\n        {\n            Areas[MySolarSystemAreaEnum.Venus] = new MySolarSystemAreaOrbit()\n            {\n                Name = \"Post Venus\",\n                AreaType = MySolarSystemArea.AreaEnum.PostPlanet,\n                OrbitProperties = new MyOrbitProperties()\n                {\n                    OrbitCenter = Vector3.Zero,\n                    AreaCenter = MyBgrCubeConsts.VENUS_POSITION * MyBgrCubeConsts.MILLION_KM,\n                    LongSpread = 0.3f,\n                    MaxDistanceFromOrbitLow = MyBgrCubeConsts.VENUS_RADIUS * MyBgrCubeConsts.MILLION_KM * 300,\n                    MaxDistanceFromOrbitHigh = MyBgrCubeConsts.VENUS_RADIUS * MyBgrCubeConsts.MILLION_KM * 1200,\n                },\n                SolarMapData = new MySolarMapData()\n                {\n                    DustColor = new Vector3(0.8f, 0.35f, 0.16f),\n                    DustColorVariability = new Vector4(0.15f),\n                    TemplateGroups = new MyTemplateGroupInfo[]\n                    {\n                        new MyTemplateGroupInfo{ Importance = 1, Count = 5, TemplateGroup = MyTemplateGroupEnum.RandomStations},\n                        new MyTemplateGroupInfo{ Importance = 0.5f, Count = 20, TemplateGroup = MyTemplateGroupEnum.RandomStations},\n                    }\n                },\n                SectorData = new MySolarSectorData()\n                {\n                    SunProperties = VenusSunProperties,\n                    FogProperties = VenusFogProperties,\n                    ImpostorProperties = VenusImpostorsProperties,\n                    DebrisProperties = DefaultDebrisProperties,\n\n                    SectorObjectsCounts = VenusObjectsProperties,\n                    PrimaryAsteroidMaterials = VenusPrimaryAsteroidMaterials,\n                    SecondaryAsteroidMaterials = VenusSecondaryAsteroidMaterials,\n\n                    ParticleDustProperties = VenusDustProperties,\n                },\n            };\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Textures/MyTexture.cs",
    "content": "﻿using System;\nusing System.Diagnostics;\nusing System.IO;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Managers;\nusing SysUtils.Utils;\nusing KeenSoftwareHouse.Library.Parallelization.Threading;\n\n//using MinerWarsMath.Graphics;\nusing SharpDX.Direct3D9;\n\nnamespace MinerWars.AppCode.Game.Textures\n{\n    /// <summary>\n    /// Loading flags\n    /// </summary>\n    [Flags]\n    public enum TextureFlags\n    {\n        /// <summary>\n        /// No flags\n        /// </summary>\n        None = 1 << 0,\n\n        /// <summary>\n        /// Texture will ignore any quality override and always will use TextureQuality.Full \n        /// </summary>\n        IgnoreQuality = 1 << 1,\n    }\n\n    /// <summary>\n    /// The load method for a texture.\n    /// </summary>\n    internal enum LoadMethod\n    {\n        /// <summary>\n        /// Someone else loads me.\n        /// </summary>\n        External,\n\n        /// <summary>\n        /// I load myself synchronously when needed for the first time.\n        /// </summary>\n        Lazy,\n\n        /// <summary>\n        /// I start loading myself asynchronously when needed for the first time.\n        /// </summary>\n        LazyBackground,\n    }\n\n    /// <summary>\n    /// \n    /// </summary>\n    /// <param name=\"texture\">The texture.</param>\n    internal delegate void TextureLoadedHandler(MyTexture texture);\n\n    /// <summary>\n    /// \n    /// </summary>\n    internal abstract class MyTexture : MyResource\n    {\n        #region Fields\n\n        /// <summary>\n        /// XNA internl texture.\n        /// </summary>\n        protected SharpDX.Direct3D9.BaseTexture texture;\n\n        /// <summary>\n        /// Texture flags setting\n        /// </summary>\n        protected readonly TextureFlags flags;\n\n        /// <summary>\n        /// State of loading.\n        /// </summary>\n        private volatile LoadState loadState;\n\n        #endregion\n\n        #region Events\n\n        /// <summary>\n        /// Occurs when [texture loaded].\n        /// </summary>\n        public event TextureLoadedHandler TextureLoaded;\n\n        #endregion\n\n        #region Properties\n\n        public int Width { get; private set; }\n        public int Height { get; private set; }\n        public Format Format { get; private set; }\n\n        /// <summary>\n        /// Gets the level count.\n        /// </summary>\n        public int LevelCount\n        {\n            get\n            {\n                if (RequestAccess())\n                {\n                    return this.texture.LevelCount;\n                }\n\n                return 0;\n            }\n        }\n\n\n        /// <summary>\n        /// Gets a value indicating whether this instance is valid.\n        /// </summary>\n        /// <value>\n        ///   <c>true</c> if this instance is valid; otherwise, <c>false</c>.\n        /// </value>\n        public bool IsValid\n        {\n            get\n            {                                                           //alocation!\n                return this.texture != null && !this.texture.IsDisposed /*&& !this.texture.Device.IsDisposed*/;\n            }\n        }\n\n        /// <summary>\n        /// Gets or sets the state of the load.\n        /// </summary>\n        /// <value>\n        /// The state of the load.\n        /// </value>\n        public LoadState LoadState\n        {\n            get\n            {\n                return this.loadState;\n            }\n            internal set\n            {\n                this.loadState = value;\n            }\n        }\n\n        protected void UpdateProperties(BaseTexture texture)\n        {\n            SurfaceDescription desc;\n            Texture tex = texture as Texture;\n            if (tex != null)\n                desc = tex.GetLevelDescription(0);\n            else\n            {\n                CubeTexture ctex = texture as CubeTexture;\n                desc = ctex.GetLevelDescription(0);\n            }\n\n            Width = desc.Width;\n            Height = desc.Height;\n            Format = desc.Format;\n        }\n\n        /// <summary>\n        /// Gets the size of texture in MB.\n        /// </summary>\n        public abstract float Memory { get; }\n\n        #endregion\n\n        #region Methods\n\n        /// <summary>\n        /// Initializes a new instance of the <see cref=\"MyTexture\"/> class.\n        /// </summary>\n        /// <param name=\"path\">The path.</param>\n        /// <param name=\"manager\">The manager.</param>\n        /// <param name=\"loadMethod\">The load method. See <code>LoadMethod</code> enum.</param>\n        /// <param name=\"flags\">The flags.</param>\n        protected MyTexture(string path, LoadMethod loadMethod, TextureFlags flags)\n        {\n            this.flags = flags;\n            this.Name = path;\n            //  this.Manager = manager;\n            switch (loadMethod)\n            {\n                case LoadMethod.External:\n                    this.LoadState = LoadState.Pending;\n                    break;\n                case LoadMethod.Lazy:\n                    this.LoadState = LoadState.LoadYourself;\n                    break;\n                case LoadMethod.LazyBackground:\n                    this.LoadState = LoadState.LoadYourselfBackground;\n                    break;\n                default:\n                    throw new ArgumentOutOfRangeException(\"loadMethod\");\n            }\n        }\n\n        /// <summary>\n        /// Releases unmanaged resources and performs other cleanup operations before the\n        /// <see cref=\"MyTexture\"/> is reclaimed by garbage collection.\n        /// </summary>\n        ~MyTexture()\n        {\n            //This storkovina crashes with multiple VSync changes\n           // MyTextureManager.UnloadTexture(this);\n        }\n\n        public bool IgnoreQuality\n        {\n            get\n            {\n                return flags.HasFlag(TextureFlags.IgnoreQuality);\n            }\n        }\n\n        /// <summary>\n        /// Reloads this instance.\n        /// </summary>\n        internal bool Load(TextureQuality quality = 0)\n        {\n            Debug.Assert(this.LoadState != LoadState.Loaded);\n\n            MyMwcLog.WriteLine(string.Format(\"Loading texture {0} ...\", this.Name), SysUtils.LoggingOptions.LOADING_TEXTURES);\n\n            var ddsTexture = new FileInfo(MyMinerGame.Static.RootDirectory + \"\\\\\" + this.Name + \".dds\");\n           // System.Diagnostics.Debug.Assert(ddsTexture.Exists);\n            if (ddsTexture.Exists)\n            {\n                this.texture = LoadDDSTexture(ddsTexture.FullName, quality);// : LoadXNATexture(this.Name);\n            }\n            else\n            {\n                var pngTexture = new FileInfo(MyMinerGame.Static.RootDirectory + \"\\\\\" + this.Name + \".png\");\n                if (pngTexture.Exists)\n                {\n                    this.texture = LoadPNGTexture(pngTexture.FullName);// : LoadXNATexture(this.Name);\n                }\n                else\n                {\n                    this.LoadState = LoadState.Error;\n                    string s = \"Texture \" + this.Name + \" is missing.\";\n                    System.Diagnostics.Debug.Assert(pngTexture.Exists, s);\n                    return false;\n                }\n            }\n\n            if (this.texture == null)\n            {\n                this.LoadState = LoadState.Error;\n\n                return false;\n            }\n\n            this.texture.DebugName = this.Name;\n            this.LoadState = LoadState.Loaded;\n\n         //   if (Name.Contains(\"Textures\\\\GUI\\\\Loading\"))\n          //  {\n            //}\n\n            UpdateProperties(texture);\n\n            MyMwcLog.WriteLine(string.Format(\"Texture {0} loaded\", this.Name), SysUtils.LoggingOptions.LOADING_TEXTURES);\n\n            OnLoaded();\n\n            return true;\n        }\n\n\n        /// <summary>\n        /// Unloads this instance.\n        /// </summary>\n        internal void Unload()\n        {\n            Debug.Assert(this.loadState == LoadState.Loaded);\n\n            OnUnloading();\n\n            this.texture.Dispose();\n            this.texture = null;\n\n            this.LoadState = LoadState.Unloaded;\n\n#if DETECT_LEAKS\n            var o = SharpDX.Diagnostics.ObjectTracker.FindActiveObjects();\n            foreach (var ob in o)\n            {\n                if (ob.IsAlive)\n                {\n                    Texture t = ob.Object.Target as Texture;\n                    if (t != null)\n                    {\n                        System.Diagnostics.Debug.Assert(t.DebugName != Name);\n                    }\n                }\n            }\n#endif\n            //slowdown\n            //Debug.WriteLine(string.Format(\"Texture {0} unloaded.\", this.Name));\n        }\n\n        /// <summary>\n        /// Loads the DDS texture.\n        /// </summary>\n        /// <param name=\"name\">The name.</param>\n        /// <param name=\"quality\"></param>\n        /// <returns></returns>\n        protected abstract SharpDX.Direct3D9.BaseTexture LoadDDSTexture(string name, TextureQuality quality);\n\n        protected abstract SharpDX.Direct3D9.BaseTexture LoadPNGTexture(string name);\n\n        /// <summary>\n        /// Request access to xna texture.\n        /// </summary>\n        /// <returns>true if data from texture can be readed.</returns>\n        protected bool RequestAccess()\n        {\n            switch (this.LoadState)\n            {\n                case LoadState.Loaded:\n                    if (IsValid)\n                    {\n                        return true;\n                    }\n                    else\n                    {\n                        using (MyTextureManager.TexturesLock.AcquireExclusiveUsing())\n                        {\n                            Unload();\n                            return Load();\n                        }\n                    }\n\n                case LoadState.Unloaded:\n                case LoadState.LoadYourself:\n                    using (MyTextureManager.TexturesLock.AcquireExclusiveUsing())\n                    {\n                        return Load();\n                    }\n\n                case LoadState.LoadYourselfBackground:\n                    {\n                        bool immediate = MyTextureManager.OverrideLoadingMode.HasValue && MyTextureManager.OverrideLoadingMode.Value == LoadingMode.Immediate;\n\n                        if (immediate)\n                        {\n                            using (MyTextureManager.TexturesLock.AcquireExclusiveUsing())\n                            {\n                                return Load();\n                            }\n                        }\n                        else\n                        {\n                            MyTextureManager.LoadTextureInBackground(this);\n                            loadState = LoadState.Pending;\n                            return false;\n                        }\n                    }\n\n                case LoadState.Pending:\n                case LoadState.Error:\n                    return false;\n\n                default:\n                    throw new MyMwcExceptionApplicationShouldNotGetHere();\n            }\n\n        }\n\n        /// <summary>\n        /// Called when [loaded].\n        /// </summary>\n        protected virtual void OnLoaded()\n        {\n            if (this.TextureLoaded != null)\n            {\n                this.TextureLoaded(this);\n            }\n\n            //var textureManager = this.Manager as MyTextureManager;\n\n            //TODO: This is incredibly slow, solve better\n            //textureManager.DbgUpdateStats();\n        }\n\n        /// <summary>\n        /// Called when [unloading].\n        /// </summary>\n        protected virtual void OnUnloading()\n        {\n            // var textureManager = this.Manager as MyTextureManager;\n\n            //TODO: This is incredibly slow, solve better\n            //textureManager.DbgUpdateStats();\n        }\n\n        #endregion\n\n        /// <summary>\n        /// Performs an implicit conversion from <see cref=\"MinerWars.AppCode.Game.Managers.Graphics.Buffers.MyVertexBuffer\"/> to <see cref=\"MinerWarsMath.Graphics.VertexBuffer\"/>.\n        /// </summary>\n        /// <param name=\"right\">The right.</param>\n        /// <returns>\n        /// The result of the conversion.\n        /// </returns>\n        public static implicit operator SharpDX.Direct3D9.BaseTexture(MyTexture right)\n        {\n            if (right == null)\n            {\n                return null;\n            }\n\n            right.RequestAccess();\n\n            return right.texture;\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Textures/MyTexture2D.cs",
    "content": "﻿using System;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Managers;\nusing MinerWars.AppCode.Game.Utils;\nusing SysUtils.Utils;\n\nusing MinerWarsMath;\n//\n//using MinerWarsMath.Graphics;\n\nusing SharpDX.Direct3D9;\n\nnamespace MinerWars.AppCode.Game.Textures\n{\n    /// <summary>\n    /// \n    /// </summary>\n    internal class MyTexture2D : MyTexture\n    {\n        #region Properties\n\n        /// <summary>\n        /// Gets the bounds.\n        /// </summary>\n        public Rectangle Bounds\n        {\n            get\n            {\n                return new Rectangle(0,0, Width, Height);\n            }\n        }\n\n\n        /// <summary>\n        /// Gets the size of texture in MB.\n        /// </summary>\n        public override float Memory\n        {\n            get\n            {\n                if (this.LoadState == LoadState.Loaded)\n                {\n                    return (float)MyUtils.GetTextureSizeInMb(this);\n                }\n\n                return 0f;\n            }\n        }\n\n        #endregion\n\n        \n        /// <summary>\n        /// Initializes a new instance of the <see cref=\"MyTexture2D\"/> class.\n        /// </summary>\n        private MyTexture2D(Texture right)\n            : base(string.Empty, LoadMethod.Lazy, TextureFlags.None)\n        {\n            this.texture = right;\n            this.LoadState = LoadState.Loaded;\n        } \n\n        /// <summary>\n        /// Initializes a new instance of the <see cref=\"MyTexture2D\"/> class.\n        /// </summary>\n        /// <param name=\"path\">The path.</param>\n        /// <param name=\"manager\">The manager.</param>\n        /// <param name=\"loadMethod\">if set to <c>true</c> [external load].</param>\n        /// <param name=\"flags\">The flags.</param>\n        public MyTexture2D(string path, LoadMethod loadMethod, TextureFlags flags)\n            : base(path, loadMethod, flags)\n        {\n        }\n\n        protected override BaseTexture LoadPNGTexture(string fileName)\n        {\n            return Texture.FromFile(MyMinerGame.Static.GraphicsDevice, fileName);\n        }\n\n        /// <summary>\n        /// Loads the DDS texture.\n        /// </summary>\n        /// <param name=\"fileName\">The name.</param>\n        /// <param name=\"quality\"></param>\n        /// <returns></returns>\n        protected override BaseTexture LoadDDSTexture(string fileName, TextureQuality quality)\n        {\n            var device = MyMinerGame.Static.GraphicsDevice;\n            if (device == null || device.IsDisposed)\n            {\n                return null;\n            }\n\n            //cannot use profiler because of multithreading\n            //int loadDDSTextureBlock = -1;\n            //MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyTexture2D.LoadDDSTexture\", ref loadDDSTextureBlock);\n\n            MyMwcLog.WriteLine(string.Format(\"Loading DDS texture {0} ...\", fileName), SysUtils.LoggingOptions.LOADING_TEXTURES);\n\n            Texture loadedTexture = null;\n\n            if (this.flags.HasFlag(TextureFlags.IgnoreQuality))\n            {\n                quality = TextureQuality.Full;\n            }\n\n            MyDDSFile.DDSFromFile(fileName, device, true, (int)quality, out loadedTexture);\n            loadedTexture.Tag = this;\n\n            if (!MyUtils.IsPowerOfTwo(loadedTexture.GetLevelDescription(0).Width) || !MyUtils.IsPowerOfTwo(loadedTexture.GetLevelDescription(0).Height))\n            {\n                throw new FormatException(\"Size must be power of two!\");\n            }\n\n            //cannot use profiler because of multithreading\n            //MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock(loadDDSTextureBlock);\n            return loadedTexture;\n        }\n\n\n        /// <summary>\n        /// Called when [loaded].\n        /// </summary>\n        protected override void OnLoaded()\n        {\n            base.OnLoaded();\n            if (MyUtils.IsTextureMipMapped(this) == false)\n            {\n                //MyMwcLog.IncreaseIndent();\n                MyMwcLog.WriteLine(\"TextureNotMipMapped \" + this.Name.ToString());\n                //MyMwcLog.DecreaseIndent();\n            }\n            if (MyUtils.IsTextureDxtCompressed(this) == false)\n            {\n                MyPerformanceCounter.PerAppLifetime.NonDxtCompressedTexturesCount++;\n                //MyMwcLog.IncreaseIndent();\n                MyMwcLog.WriteLine(\"TextureNotCompressed \" + this.Name.ToString());\n                //MyMwcLog.DecreaseIndent();\n            }\n        }\n\n        protected override void OnUnloading()\n        {\n            base.OnUnloading();\n        }\n\n        #region Operators\n                \n        public static implicit operator MyTexture2D(Texture right)\n        {\n            if (right == null)\n            {\n                return null;\n            }\n\n            return new MyTexture2D(right);\n        }     \n\n        /// <summary>\n        /// Performs an implicit conversion from <see cref=\"MinerWars.AppCode.Game.Textures.MyTexture2D\"/> to <see cref=\"MinerWarsMath.Graphics.Texture2D\"/>.\n        /// </summary>\n        /// <param name=\"right\">The right.</param>\n        /// <returns>\n        /// The result of the conversion.\n        /// </returns>\n        public static implicit operator SharpDX.Direct3D9.Texture(MyTexture2D right)\n        {\n            if (right == null || !right.RequestAccess())\n            {\n                return null;\n            }\n\n            return (SharpDX.Direct3D9.Texture)right.texture;\n        }\n\n        #endregion\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Textures/MyTextureCube.cs",
    "content": "﻿using System.Diagnostics;\nusing System.IO;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Managers;\nusing MinerWars.AppCode.Game.Utils;\n\nusing SharpDX.Direct3D9;\nusing System;\n\nnamespace MinerWars.AppCode.Game.Textures\n{\n    /// <summary>\n    /// \n    /// </summary>\n    internal class MyTextureCube: MyTexture\n    {\n        #region Properties\n\n        /// <summary>\n        /// Gets the size in pixels.\n        /// </summary>\n        public int Size \n        { \n            get\n            {\n                if (RequestAccess())\n                {\n                    return ((SharpDX.Direct3D9.CubeTexture)this.texture).GetLevelDescription(0).Width;\n                }\n\n                return 0;\n            }\n        }\n\n        /// <summary>\n        /// Gets the memory used by texture in MB.\n        /// </summary>\n        public override float Memory\n        {\n            get\n            {\n                if (this.LoadState == LoadState.Loaded)\n                {\n                    return (float)MyUtils.GetTextureSizeInMb(this);\n                }\n\n                return 0f;\n            }\n        }\n\n        #endregion\n\n\n        /// <summary>\n        /// Initializes a new instance of the <see cref=\"MyTexture2D\"/> class.\n        /// </summary>\n        /// <param name=\"path\">The path.</param>\n        /// <param name=\"manager\">The manager.</param>\n        /// <param name=\"loadMethod\">if set to <c>true</c> [external load].</param>\n        /// <param name=\"flags\">The flags.</param>\n        public MyTextureCube(string path, LoadMethod loadMethod, TextureFlags flags)\n            : base(path, loadMethod, flags)\n        {\n        }\n\n\n\n        protected override SharpDX.Direct3D9.BaseTexture LoadPNGTexture(string fileName)\n        {\n            return null;\n        }\n\n        /// <summary>\n        /// Loads the DDS texture.\n        /// </summary>\n        /// <param name=\"name\">The name.</param>\n        /// <param name=\"quality\"></param>\n        /// <returns></returns>\n        protected override SharpDX.Direct3D9.BaseTexture LoadDDSTexture(string name, TextureQuality quality)\n        {\n            try\n            {\n                var device = MyMinerGame.Static.GraphicsDevice;\n                if (device == null || device.IsDisposed)\n                {\n                    return null;\n                }\n\n                if (this.flags.HasFlag(TextureFlags.IgnoreQuality))\n                {\n                    quality = TextureQuality.Full;\n                }\n\n                CubeTexture loadedTexture;\n                MyDDSFile.DDSFromFile(name, device, true, (int)quality, out loadedTexture);\n                loadedTexture.Tag = this;\n\n                return loadedTexture;\n            }\n            catch (FileNotFoundException)\n            {\n                \n            }\n            catch (Exception ddsException)\n            {\n                Debug.WriteLine(string.Format(\"W:Texture Cube (DDS) {0}\", ddsException.Message));\n            }\n\n            return null;\n        }\n\n        #region Operators\n          \n\n        /// <summary>\n        /// Performs an implicit conversion from <see cref=\"MinerWars.AppCode.Game.Textures.MyTextureCube\"/> to <see cref=\"MinerWarsMath.Graphics.Texture\"/>.\n        /// </summary>\n        /// <param name=\"right\">The right.</param>\n        /// <returns>\n        /// The result of the conversion.\n        /// </returns>\n        public static implicit operator SharpDX.Direct3D9.CubeTexture(MyTextureCube right)\n        {\n            if (right == null)\n            {\n                return null;\n            }\n\n            right.RequestAccess();\n\n            return (SharpDX.Direct3D9.CubeTexture)right.texture;\n        }\n\n        #endregion\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Textures/MyTextureManager.cs",
    "content": "﻿using System;\nusing System.Collections.Concurrent;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Linq;\nusing System.Timers;\nusing KeenSoftwareHouse.Library.Trace;\nusing MinerWars.AppCode.Game.Managers;\nusing MinerWars.AppCode.Game.Utils;\nusing SysUtils.Utils;\nusing Timer = System.Timers.Timer;\nusing KeenSoftwareHouse.Library.Parallelization.Threading;\n\nnamespace MinerWars.AppCode.Game.Textures\n{\n    /// <summary>\n    /// Reresent loading quality for textures.\n    /// This works only for dds textures with mipmaps. Other textures will retains their original properties.\n    /// </summary>\n    internal enum TextureQuality\n    {\n        /// <summary>\n        /// Full quality.\n        /// </summary>\n        Full,\n\n        /// <summary>\n        /// 1/2 quality.\n        /// </summary>\n        Half,\n\n        /// <summary>\n        /// 1/4 quality\n        /// </summary>\n        OneFourth,\n\n        /// <summary>\n        /// 1/8 quality\n        /// </summary>\n        OneEighth,\n\n        /// <summary>\n        /// 1/16 quality\n        /// </summary>\n        OneSixteenth,\n    }\n\n    /// <summary>\n    /// Represent texture manager that handles all texture usage.\n    /// </summary>\n    internal static class MyTextureManager //: MyManager\n    {\n        /// <summary>\n        /// Collection of managed texture.\n        /// </summary>\n        private static readonly Dictionary<string, MyTexture> m_textures;\n\n        /// <summary>\n        /// Queue of textures to load.\n        /// </summary>\n        private static readonly ConcurrentQueue<MyTexture> m_loadingQueue;\n\n        /// <summary>\n        /// Dbg watch send timer\n        /// </summary>\n        private static readonly Timer m_dbgSendTimer;\n\n        /// <summary>\n        /// Gets or sets the quality of loaded texturs. Selecting diffrent mipmaps as base level.\n        /// </summary>\n        /// <value>\n        /// The quality.\n        /// </value>\n        public static TextureQuality Quality { get; set; }\n\n        static ParallelTasks.Task m_loadTextureTask;\n\n\n        static bool Enabled;\n        public static LoadingMode? OverrideLoadingMode = null;\n\n        public static FastResourceLock TexturesLock = new FastResourceLock();\n\n        /// <summary>\n        /// Initializes a new instance of the <see cref=\"T:System.Object\"/> class.\n        /// </summary>\n        static MyTextureManager() \n        {\n            Quality = TextureQuality.Half;\n            m_textures = new Dictionary<string, MyTexture>();\n            m_loadingQueue = new ConcurrentQueue<MyTexture>();\n            m_dbgSendTimer = new Timer(1500);\n            m_dbgSendTimer.Elapsed += DbgWatchLoadedTexturesDelayed;\n            Enabled = true;\n            \n            //Task.Factory.StartNew(BackgroundLoader, TaskCreationOptions.LongRunning);\n        }\n\n        /// <summary>\n        /// Gets and loads the texture.\n        /// Texture is unloaded when nobody is using it.\n        /// </summary>\n        /// <typeparam name=\"T\">MyTexture2D or MyTextureCube</typeparam>\n        /// <param name=\"path\">The path.</param>\n        /// <param name=\"loadedCallback\">Callback that is invoked when texture is really loaded and ready for use.</param>\n        /// <param name=\"loadingMode\">The loading mode viz. LoadingMode.</param>\n        /// <param name=\"flags\">The flags.</param>\n        /// <returns></returns>\n        public static T GetTexture<T>(string path, TextureLoadedHandler loadedCallback = null, LoadingMode loadingMode = (MyFakes.LOAD_TEXTURES_IMMEDIATELY ? LoadingMode.Immediate : LoadingMode.Lazy)\n            , TextureFlags flags = TextureFlags.None) where T : MyTexture\n        {\n            if (OverrideLoadingMode != null)\n                loadingMode = OverrideLoadingMode.Value;\n            \n            MyTexture texture;\n\n            TexturesLock.AcquireShared();\n            \n            if (!m_textures.TryGetValue(path, out texture))\n            {\n                TexturesLock.ReleaseShared();\n                return LoadTexture<T>(path, loadedCallback, loadingMode, flags);\n            }\n            TexturesLock.ReleaseShared();\n\n            DbgWatchLoadedTextures();\n\n            return (T) texture;\n        }\n\n        /// <summary>\n        /// Loads the texture.\n        /// </summary>\n        /// <typeparam name=\"T\"></typeparam>\n        /// <param name=\"path\">The path.</param>\n        /// <param name=\"loadedCallback\">The loaded callback.</param>\n        /// <param name=\"loadingMode\">The loading mode.</param>\n        /// <param name=\"flags\">The flags.</param>\n        /// <returns></returns>\n        private static T LoadTexture<T>(string path, TextureLoadedHandler loadedCallback, LoadingMode loadingMode, TextureFlags flags) where T : MyTexture\n        {\n            using (TexturesLock.AcquireExclusiveUsing())\n            {\n                MyTexture texture;\n                if (typeof(T) == typeof(MyTexture2D))\n                {\n                    texture = new MyTexture2D(path, GetLoadMethod(loadingMode), flags);\n                }\n                else if (typeof(T) == typeof(MyTextureCube))\n                {\n                    texture = new MyTextureCube(path, GetLoadMethod(loadingMode), flags);\n                }\n                else\n                {\n                    throw new ArgumentException(\"Unsupported texture type\", \"T\");\n                }\n\n                if (loadedCallback != null)\n                {\n                    texture.TextureLoaded += loadedCallback;\n                }\n\n                switch (loadingMode)\n                {\n                    case LoadingMode.Immediate:\n                        {\n                            if (!texture.Load(Quality))\n                            {\n                                return null;\n                            }\n\n                            break;\n                        }\n                    case LoadingMode.Background:\n                        {\n                            LoadTextureInBackground(texture);\n                        }\n                        break;\n                }\n\n\n\n                if (m_textures.ContainsKey(path))\n                {\n                    m_textures[path] = texture;\n                }\n                else\n                {\n                    m_textures.Add(path, texture);\n                }\n\n                DbgWatchLoadedTextures();\n\n                return (T)texture;\n            }\n        }\n\n        private static LoadMethod GetLoadMethod(LoadingMode loadingMode)\n        {\n            LoadMethod loadMethod;\n            switch (loadingMode)\n            {\n                case LoadingMode.Lazy:\n                    loadMethod = LoadMethod.Lazy;\n                    break;\n                case LoadingMode.LazyBackground:\n                    loadMethod = LoadMethod.LazyBackground;\n                    break;\n                default:\n                    loadMethod = LoadMethod.External;\n                    break;\n            }\n            return loadMethod;\n        }\n\n        internal static void LoadTextureInBackground(MyTexture texture)\n        {\n            m_loadingQueue.Enqueue(texture);\n            //m_loadTextureEvent.Set();\n\n            ParallelTasks.Parallel.Start(LoadTextureInBackground);\n        }\n\n\n        static void LoadTextureInBackground()\n        {\n            MyTexture textureToLoad;\n            if (m_loadingQueue.TryDequeue(out textureToLoad))\n            {\n                textureToLoad.Load(Quality);\n            }\n        }\n\n        /// <summary>\n        /// Reloads the textures.\n        /// </summary>\n        internal static void ReloadTextures(bool keepValidTextures = true)\n        {\n            MyMwcLog.WriteLine(\"ReloadTextures - START\");\n\n            if (!Enabled)\n            {\n                MyMwcLog.WriteLine(\"!Enabled - END\");\n                return;\n            }\n\n            \n            using (TexturesLock.AcquireExclusiveUsing())            \n            {\n                List<MyTexture> texturesToLoad = new List<MyTexture>();\n\n                foreach (var loadedTexture in m_textures)\n                {\n                    var texture = (MyTexture) loadedTexture.Value;\n\n                    if (texture == null)\n                    {\n                        continue;\n                    }\n\n                    if (texture.LoadState != LoadState.Loaded)\n                        continue;\n\n                    if (keepValidTextures && texture.IgnoreQuality && texture.IsValid)\n                    {\n                        continue;\n                    } \n\n                    texture.Unload();\n\n                    texturesToLoad.Add(texture);\n                }\n\n                GC.Collect();\n\n                foreach (var textureToLoad in texturesToLoad)\n                {\n                    textureToLoad.Load(Quality);\n                }\n            }\n\n            DbgWatchLoadedTextures();\n\n            MyMwcLog.WriteLine(\"ReloadTextures - END\");\n        }\n\n        /// <summary>\n        /// Unloads the texture.\n        /// </summary>\n        /// <param name=\"texture\">The texture.</param>\n        internal static void UnloadTexture(MyTexture texture)\n        {\n            try\n            {\n                using (TexturesLock.AcquireExclusiveUsing())\n                {\n                    if (texture.LoadState == LoadState.Loaded)\n                    {\n                        texture.Unload();\n                    }\n                }\n            }\n            finally\n            {\n                DbgWatchLoadedTextures();\n            }\n        }\n\n        /// <summary>\n        /// DBGs Send loaded textures watch.\n        /// </summary>\n        [Conditional(\"DEBUGING_TEXTURE\")]\n        private static void DbgWatchLoadedTextures()\n        {\n            try\n            {\n                m_dbgSendTimer.Stop();\n                m_dbgSendTimer.Start();\n            }\n            catch (ObjectDisposedException) {}\n        }\n\n        /// <summary>\n        /// DBGs the update stats.\n        /// </summary>\n        [Conditional(\"DEBUG\")]\n        internal static void DbgUpdateStats()\n        {\n            MyMwcLog.WriteLine(\"MyTextureManager::DbgUpdateStats - START\");\n\n            MyPerformanceCounter.PerAppLifetime.Textures2DCount = 0;\n            MyPerformanceCounter.PerAppLifetime.Textures2DSizeInPixels = 0;\n            MyPerformanceCounter.PerAppLifetime.Textures2DSizeInMb = 0;\n            MyPerformanceCounter.PerAppLifetime.NonMipMappedTexturesCount = 0;\n            MyPerformanceCounter.PerAppLifetime.NonDxtCompressedTexturesCount = 0;\n            MyPerformanceCounter.PerAppLifetime.DxtCompressedTexturesCount = 0;\n            MyPerformanceCounter.PerAppLifetime.TextureCubesCount = 0;\n            MyPerformanceCounter.PerAppLifetime.TextureCubesSizeInPixels = 0;\n            MyPerformanceCounter.PerAppLifetime.TextureCubesSizeInMb = 0;\n\n            lock (m_textures)\n            {\n                foreach (var loadedTexture in m_textures)\n                {\n                    var texture = (MyTexture) loadedTexture.Value;\n\n                    if (texture == null || !texture.IsValid || texture.LoadState != LoadState.Loaded)\n                    {\n                        continue;\n                    }\n\n                    var texture2D = texture as MyTexture2D;\n                    if (texture2D != null)\n                    {\n                        MyPerformanceCounter.PerAppLifetime.Textures2DCount++;\n                        MyPerformanceCounter.PerAppLifetime.Textures2DSizeInPixels += texture2D.Width*texture2D.Height;\n                        MyPerformanceCounter.PerAppLifetime.Textures2DSizeInMb += (decimal) texture2D.Memory;\n\n                        if (MyUtils.IsTextureMipMapped(texture2D) == false)\n                        {\n                            MyPerformanceCounter.PerAppLifetime.NonMipMappedTexturesCount++;\n                        }\n\n                        if (MyUtils.IsTextureDxtCompressed(texture2D) == false)\n                        {\n                            MyPerformanceCounter.PerAppLifetime.NonDxtCompressedTexturesCount++;\n                        }\n                        else\n                        {\n                            MyPerformanceCounter.PerAppLifetime.DxtCompressedTexturesCount++;\n                        }\n                    }\n\n                    var textureCube = texture as MyTextureCube;\n                    if (textureCube != null)\n                    {\n                        MyPerformanceCounter.PerAppLifetime.TextureCubesCount++;\n                        MyPerformanceCounter.PerAppLifetime.TextureCubesSizeInPixels += textureCube.Size * textureCube.Size;\n                        MyPerformanceCounter.PerAppLifetime.TextureCubesSizeInMb += (decimal)textureCube.Memory;\n                    }\n                }\n            }\n\n            MyMwcLog.WriteLine(\"MyTextureManager::DbgUpdateStats - END\");\n        }\n\n        /// <summary>\n        /// DBGs Send loaded textures watch (delayed)\n        /// </summary>\n        /// <param name=\"sender\">The sender.</param>\n        /// <param name=\"e\">The <see cref=\"System.Timers.ElapsekdEventArgs\"/> instance containing the event data.</param>\n        private static void DbgWatchLoadedTexturesDelayed(object sender, ElapsedEventArgs e)\n        {\n            lock (m_textures)\n            {\n                float size = 0;\n                foreach (var loadedTexture in m_textures)\n                {\n                    var texture = (MyTexture)loadedTexture.Value;\n\n                    if (texture == null)\n                    {\n                        continue;\n                    }\n\n                    size += texture.Memory;\n                }\n\n                MyTrace.SendWatch(\"Textures size (MB)\", size);\n                MyTrace.SendWatch(\"Loaded textures\", m_textures, 4);\n            }\n            \n            m_dbgSendTimer.Stop();\n        }\n\n        [Conditional(\"DEBUG\")]\n        public static void DbgDumpLoadedTextures(bool orderedBySize = false)\n        {\n            lock (m_textures)\n            {\n                List<MyTexture> dump = new List<MyTexture>();\n                float totalMemory = 0f;\n\n                foreach (var loadedTexture in m_textures)\n                {\n                    var texture = (MyTexture)loadedTexture.Value;\n\n                    if (texture == null)\n                    {\n                        continue;\n                    }\n\n                    dump.Add(texture);\n                }\n                \n                if (orderedBySize)\n                {\n                    dump = dump.OrderByDescending(ri => ri.Memory).ToList();\n                }\n               \n                foreach (var texture in dump)\n                {\n                    Debug.WriteLine(string.Format(\"{0} size: {1}MB\", texture.Name, texture.Memory));\n                    totalMemory += texture.Memory;\n                }\n                Debug.WriteLine(\"Total memory: \" + totalMemory);\n            }\n        }\n\n\n        static List<MyTexture> SortByMemory(List<MyTexture> stats)\n        {\n            return stats.OrderByDescending(ri => ri.Memory).ToList();\n        }\n\n        [Conditional(\"DEBUG\")]\n        public static void DbgDumpLoadedTexturesBetter(bool orderedBySize = false)\n        {\n            lock (m_textures)\n            {\n                List<MyTexture> dump = new List<MyTexture>();\n\n                foreach (var loadedTexture in m_textures)\n                {\n                    var texture = (MyTexture)loadedTexture.Value;\n\n                    if (texture == null)\n                    {\n                        continue;\n                    }\n                    if (texture.LoadState == LoadState.Loaded)\n                    {\n                        dump.Add(texture);\n                    }\n                }\n\n                if (orderedBySize)\n                {\n                    dump = SortByMemory(dump);\n                }\n\n                foreach (var texture in dump)\n                {\n                    MyMwcLog.WriteLine(string.Format(\"{0} size: {1}MB\", texture.Name, texture.Memory));\n                }\n            }\n        }\n\n        /*\n        public static void DebugDrawStatistics()\n        {\n            lock (m_textures)\n            {\n                List<MyTexture> dump = new List<MyTexture>();\n\n                foreach (var loadedTexture in m_textures)\n                {\n                    var texture = (MyTexture)loadedTexture.Value.Target;\n\n                    if (texture == null)\n                    {\n                        continue;\n                    }\n                    if (texture.LoadState == LoadState.Loaded)\n                    {\n                        dump.Add(texture);\n                    }\n                }\n\n                dump = SortByMemory(dump);\n\n                float totalMem = 0;\n                List<MyTexture> voxels = new List<MyTexture>();\n                foreach (var texture in dump)\n                {\n                    if (texture.Name.ToLower().Contains(\"voxels\"))\n                    {\n                        voxels.Add(texture);\n                        totalMem += texture.Memory;\n                    }\n                }\n                dump = voxels;\n\n                float topOffset = 70;\n                int itemsInRow = 35;\n                Vector2 offset = new Vector2(100, topOffset);\n                MyDebugDraw.DrawText(offset, new System.Text.StringBuilder(\"Textures statistics [\" + voxels.Count + \"x] \" + totalMem +\" MB\"), Color.Yellow, 1.5f);\n\n                float scale = 0.5f;\n                offset.Y += 50;\n                for (int i = 0; i < Math.Min(itemsInRow, dump.Count); i++)\n                {\n                    var texture = dump[i];\n                    MyDebugDraw.DrawText(offset, new System.Text.StringBuilder(texture.Name + \": \" + texture.Memory + \" MB\"), Color.Yellow, scale);\n                    offset.Y += 20;\n                }\n\n                offset = new Vector2(550, topOffset + 50);\n                for (int i = itemsInRow; i < Math.Min(2*itemsInRow, dump.Count); i++)\n                {\n                    var texture = dump[i];\n                    MyDebugDraw.DrawText(offset, new System.Text.StringBuilder(texture.Name + \": \" + texture.Memory + \" MB\"), Color.Yellow, scale);\n                    offset.Y += 20;\n                }\n\n                offset = new Vector2(1000, topOffset + 50);\n                for (int i = 2*itemsInRow; i < Math.Min(3 * itemsInRow, dump.Count); i++)\n                {\n                    var texture = dump[i];\n                    MyDebugDraw.DrawText(offset, new System.Text.StringBuilder(texture.Name + \": \" + texture.Memory + \" MB\"), Color.Yellow, scale);\n                    offset.Y += 20;\n                }\n\n            }         \n        }    */\n\n        internal static void UnloadContent()\n        {\n            MyMwcLog.WriteLine(\"MyTextureManager.UnloadContent - START\");\n\n            if (!Enabled)\n            {\n                MyMwcLog.WriteLine(\"!Enabled - END\");\n                return;\n            }\n\n            using (TexturesLock.AcquireExclusiveUsing())\n            {\n                foreach (var loadedTexture in m_textures)\n                {\n                    var texture = (MyTexture)loadedTexture.Value;\n\n                    if (texture == null)\n                    {\n                        continue;\n                    }\n\n                    if (texture.LoadState != LoadState.Loaded)\n                        continue;\n\n                    texture.Unload();\n                }\n\n                GC.Collect();\n            }\n\n            MyMwcLog.WriteLine(\"MyTextureManager.UnloadContent - END\");\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Trailer/MyTrailerLoad.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Utils;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing SysUtils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing System.Linq;\n\n//  This class runs whole trailer (loads maps, object paths, shots, etc)\n\nnamespace MinerWars.AppCode.Game.Trailer\n{\n    public enum MyTrailerGunsShotTypeEnum : byte\n    {\n        PROJECTILE,\n        MISSILE,\n        MISSILE_GUIDED,\n        HARVESTING_ORE,\n        DRILLING_DEVICE\n    }\n\n    static class MyTrailerLoad\n    {\n        public static MyTrailerXmlAnimation TrailerAnimation = null;              //  Reference to trailer animation - load world based on it if trailer active\n        public static MyTrailerXmlAnimation[] Animations;\n        public static bool AnimationSelectedFromMenu;\n        //  Every object we track stores here its per-frame data\n        static Dictionary<MyEntity, Dictionary<int, MyPhysObjectTrackedTickData>> m_attachedPhysObjects;\n\n        static int m_activeTick;\n        static int m_fromTick;\n        static int m_toTick;\n        static bool m_isEnabled;\n\n        static readonly int m_fadeInOutInTicks = MillisecondsToTick(4000);\n\n\n        public static void LoadAnimation()\n        {\n            MyMwcLog.WriteLine(\"MyTrailerLoad.LoadContent() - START\");\n            MyMwcLog.IncreaseIndent();\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyTrailerLoad::LoadAnimation\");\n\n            if (!AnimationSelectedFromMenu)\n            {\n                MyTrailerXml res = LoadTrailerXml();\n                Animations = res.Animation;\n\n                if (MyGuiScreenGamePlay.Static.IsMainMenuActive())\n                {\n                    SetTrailerAnimation(res.MainMenuAnimation);\n                }\n                else if (MyGuiScreenGamePlay.Static.IsGameActive())\n                {\n                    SetTrailerAnimation(res.GameAnimation);\n                }\n                else if (MyGuiScreenGamePlay.Static.IsFlyThroughActive())\n                {\n                    if (string.IsNullOrEmpty(res.FlyThroughOrCreditsAnimation))\n                    {\n                        //  Pick random animation\n                        if ((res.Animation != null) && (Animations.Length > 0))\n                        {\n                            TrailerAnimation = res.Animation[MyMwcUtils.GetRandomInt(0, Animations.Length)];\n                        }\n                    }\n                    else\n                    {\n                        SetTrailerAnimation(res.FlyThroughOrCreditsAnimation);\n                    }\n                }\n            }\n            AnimationSelectedFromMenu = false;\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyTrailerLoad.LoadContent() - END\");\n        }\n\n        static void SetTrailerAnimation(string animationToPlay)\n        {\n            if (string.IsNullOrEmpty(animationToPlay))\n            {\n                TrailerAnimation = null;\n            }\n            else\n            {\n                //  Find animation by name\n                if (Animations != null)\n                {\n                    foreach (MyTrailerXmlAnimation tempAnimation in Animations)\n                    {\n                        if (tempAnimation.Name == animationToPlay)\n                        {\n                            TrailerAnimation = tempAnimation;\n                        }\n                    }\n                }\n            }\n        }\n\n        public static void LoadFromUserFolder(out string nextFreeName, out Matrix? lastShipPos)\n        {\n            if (m_attachedPhysObjects == null) // When triler was not loaded\n            {\n                m_attachedPhysObjects = new Dictionary<MyEntity, Dictionary<int, MyPhysObjectTrackedTickData>>();\n            }\n\n            foreach (var obj in m_attachedPhysObjects)\n            {\n                var entity = obj.Key;\n                if (MyEntities.GetEntities().Contains(entity))\n                {\n                    obj.Key.MarkForClose();\n                }\n            }\n            m_attachedPhysObjects.Clear();\n\n            lastShipPos = null;\n\n            var path = Path.Combine(MyFileSystemUtils.GetApplicationUserDataFolder(), \"Trailer\");\n            if (!Directory.Exists(path))\n            {\n                Directory.CreateDirectory(path);\n            }\n\n            int maxFileName = 0;\n\n            var files = Directory.GetFiles(path, \"*.tracked\");\n            for (int i = 0; i < files.Length; i++)\n            {\n                string fileWithoutExt = Path.GetFileNameWithoutExtension(files[i]);\n                int num;\n                if (int.TryParse(fileWithoutExt, out num) && num > maxFileName)\n                {\n                    maxFileName = num;\n                }\n\n                var smallShip = MyGuiScreenGamePlay.Static.CreateFakeMinerShip(null, MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D.MyMwcObjectBuilder_SmallShip_TypesEnum.GETTYSBURG, new Vector3((i * 100) + 10000, (i * 100) + 10000, (i * 100) + 10000), false, 1.0f);\n                AttachPhysObjectFullPath(smallShip, files[i]);\n            }\n\n            if(m_attachedPhysObjects.Count > 0)\n            {\n                var firstTick = m_attachedPhysObjects.Values.Last().First().Value;\n                var m = firstTick.Orientation;\n                m.Translation = firstTick.Position;\n                lastShipPos = m;\n            }\n\n            m_isEnabled = true;\n\n            m_fromTick = MillisecondsToTick(0); // start now\n            m_toTick = MillisecondsToTick(1000 * 1000); // max length 20min\n            m_activeTick = m_fromTick;\n\n            nextFreeName = (maxFileName + 1).ToString(\"D3\");\n        }\n\n        //  Trailer will play from specified time (fromMillisecond) to specified time (toMillisecond) and then rewind again to beggining (fromMillisecond)\n        public static void LoadContent()\n        {\n            MyMwcLog.WriteLine(\"MyTrailerLoad.LoadContent - START\");\n            MyMwcLog.IncreaseIndent();\n\n            m_isEnabled = (TrailerAnimation != null) && \n                (\n                (MyGuiScreenGamePlay.Static.IsFlyThroughActive()) || \n                (MyGuiScreenGamePlay.Static.IsMainMenuActive()) || \n                ((MyGuiScreenGamePlay.Static.IsGameActive()) && (MyMwcFinalBuildConstants.ENABLE_TRAILER_ANIMATION_IN_GAMEPLAY_SCREEN))\n                );\n            MyMwcLog.WriteLine(\"m_isEnabled: \" + m_isEnabled.ToString(), LoggingOptions.TRAILERS);\n            if (m_isEnabled == false) return;\n\n            if (m_isEnabled == true)\n            {\n                MyMwcLog.WriteLine(\"Animation Name: \" + TrailerAnimation.Name, LoggingOptions.TRAILERS);\n\n                if (TrailerAnimation == null)\n                {\n                    //  If we didn't find choosen animation we can't load trailer\n                    m_isEnabled = false;\n                }\n                else\n                {\n                    m_fromTick = MillisecondsToTick(TrailerAnimation.TimeStartInMilliseconds);\n                    m_toTick = MillisecondsToTick(TrailerAnimation.TimeEndInMilliseconds);\n\n                    m_activeTick = m_fromTick;\n\n                    //  Add ships\n                    if (TrailerAnimation.Ship == null)\n                    {\n                        //  If we didn't find choosen animation we can't load trailer\n                        m_isEnabled = false;\n                    }\n                    else\n                    {\n                        m_attachedPhysObjects = new Dictionary<MyEntity, Dictionary<int, MyPhysObjectTrackedTickData>>();\n                        for (int i = 0; i < TrailerAnimation.Ship.Length; i++)\n                        {\n                            MyTrailerXmlAnimationShip ship = TrailerAnimation.Ship[i];\n\n                            MySmallShip smallShip;\n                            if (((MyGuiScreenGamePlay.Static.IsFlyThroughActive()) || (MyGuiScreenGamePlay.Static.IsMainMenuActive())) && (i == (TrailerAnimation.Ship.Length - 1)))\n                            {\n                                //  In fly-through, last loaded ship is always player's ship, so it serves as camera\n                                smallShip = MySession.PlayerShip;\n                                if (smallShip.Light != null)\n                                    smallShip.Light.LightOn = false;\n                            }\n                            else\n                            {\n                                //smallShip = MyGuiScreenGamePlay.Static.CreateFakeMinerShip(\"TrailerShip \" + i.ToString(), MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D.MyMwcObjectBuilder_SmallShip_TypesEnum.GETTYSBURG, new Vector3((i * 100) + 10000, (i * 100) + 10000, (i * 100) + 10000), false, 1.0f);\n                                smallShip = MyGuiScreenGamePlay.Static.CreateFakeMinerShip(null, MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D.MyMwcObjectBuilder_SmallShip_TypesEnum.GETTYSBURG, new Vector3((i * 100) + 10000, (i * 100) + 10000, (i * 100) + 10000), false, 1.0f);\n                                //smallShip.Light.ReflectorEnabled = true;\n                            }\n\n                            \n\n                            AttachPhysObject(smallShip, ship.Filepath);\n                        }\n                    }\n                }\n            }\n\n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyTrailerLoad.LoadContent - END\");\n        }\n\n        static MyTrailerXml LoadTrailerXml()\n        {\n            MyTrailerXml res = null;\n            StreamReader str = null;\n\n            try\n            {\n                //  Filename ends with \"xmlx\" because \"xml\" is already used by XNA content pipeline\n                str = new StreamReader(MyMinerGame.Static.RootDirectory + \"\\\\Trailer\\\\Trailer.xmlx\");\n                System.Xml.Serialization.XmlSerializer xSerializer = new System.Xml.Serialization.XmlSerializer(typeof(MyTrailerXml));\n                res = (MyTrailerXml)xSerializer.Deserialize(str);\n            }\n            catch (Exception ex)\n            {\n                //  Log this exception, but game will continue. Of course no trailer animation can run.\n                MyMwcLog.WriteLine(\"Exception during reading and deserializing xml: \" + ex.ToString());\n                m_isEnabled = false;\n            }\n            finally\n            {\n                if (str != null) str.Close();\n            }\n\n            return res;\n        }\n\n        public static bool IsEnabled()\n        {\n            return m_isEnabled;\n        }\n\n        static int MillisecondsToTick(int millisecond)\n        {\n            return (millisecond * (int)MyConstants.PHYSICS_STEPS_PER_SECOND) / 1000;\n        }\n\n        static int TicksToMilliseconds(int ticks)\n        {\n            return (ticks * 1000) / (int)MyConstants.PHYSICS_STEPS_PER_SECOND;\n        }\n\n        //  Fading in/out at the beginning and at the end of trailer\n        public static float GetBackgroundFadeAlpha()\n        {\n            MyCommonDebugUtils.AssertDebug(m_isEnabled == true);\n\n            int fromFade = m_fromTick + m_fadeInOutInTicks;\n            int toFade = m_toTick - m_fadeInOutInTicks;\n\n            if (m_activeTick <= fromFade)\n            {\n                return (float)(fromFade - m_activeTick) / (float)m_fadeInOutInTicks;\n            }\n            else if (m_activeTick >= toFade)\n            {\n                return (float)(m_activeTick - toFade) / (float)m_fadeInOutInTicks;\n            }\n            else\n            {\n                return 0;\n            }\n        }\n\n        //  This must be called as last thing in main update method\n        static void IncreaseActiveTick()\n        {\n            m_activeTick++;\n\n            if (m_activeTick >= m_toTick)\n            {\n                m_activeTick = m_fromTick;\n            }\n        }\n\n        static void AttachPhysObjectFullPath(MyEntity physObject, string fullPath)\n        {\n            MyMwcLog.WriteLine(\"MyTrailedLoad.AttachPhysObject - START\", LoggingOptions.TRAILERS);\n            MyMwcLog.IncreaseIndent(LoggingOptions.TRAILERS);\n\n            Dictionary<int, MyPhysObjectTrackedTickData> ticks = new Dictionary<int, MyPhysObjectTrackedTickData>(MyTrailerConstants.MAX_TRACKED_TICKS);\n\n            MyMwcLog.WriteLine(\"File: \" + fullPath, LoggingOptions.TRAILERS);\n\n            //  Open file, BinaryReader must use ASCII encoding, otherwise PeekChar will have problems when trying to convert some values to chars\n            using (FileStream fs = File.OpenRead(fullPath))\n            {\n                using (BinaryReader br = new BinaryReader(fs, Encoding.ASCII))\n                {\n                    int tickIndex = 0;\n                    while (br.PeekChar() != -1)\n                    {\n                        MyPhysObjectTrackedTickData tickData = new MyPhysObjectTrackedTickData();\n\n                        MyUtils.BinaryRead(br, ref tickData.Position);\n                        MyUtils.BinaryRead(br, ref tickData.Orientation);\n                        tickData.ReflectorLevel = br.ReadSingle();\n                        tickData.EngineLevel = br.ReadSingle();\n\n                        int gunShot = br.ReadInt32();\n                        if (gunShot == -1)\n                        {\n                            tickData.GunShot = null;\n                        }\n                        else\n                        {\n                            tickData.GunShot = (MyTrailerGunsShotTypeEnum)gunShot;\n                        }\n\n                        ticks.Add(tickIndex, tickData);\n                        tickIndex++;\n                    }\n\n                    MyMwcLog.WriteLine(\"Ticks: \" + ticks.Count, LoggingOptions.TRAILERS);\n                    MyMwcLog.WriteLine(\"Milliseconds: \" + TicksToMilliseconds(ticks.Count), LoggingOptions.TRAILERS);\n                }\n            }\n\n            m_attachedPhysObjects.Add(physObject, ticks);\n\n            MyMwcLog.DecreaseIndent(LoggingOptions.TRAILERS);\n            MyMwcLog.WriteLine(\"MyTrailedLoad.AttachPhysObject - END\", LoggingOptions.TRAILERS);\n        }\n\n        //  Attachs phys object to tracked data from a file, so this class updates position/orientation and even shots exactly as object in the file did \n        static void AttachPhysObject(MyEntity physObject, string file)\n        {\n            AttachPhysObjectFullPath(physObject, MyMinerGame.Static.RootDirectory + \"\\\\Trailer\\\\\" + file);\n        }\n\n        public static void Update()\n        {\n            if (m_isEnabled == false) return;\n\n            foreach (KeyValuePair<MyEntity, Dictionary<int, MyPhysObjectTrackedTickData>> kvp in m_attachedPhysObjects)\n            {\n                MyEntity physObject = kvp.Key;\n\n                Dictionary<int, MyPhysObjectTrackedTickData> ticks = kvp.Value;\n\n                MyPhysObjectTrackedTickData tickData;\n\n                //  Check if thick is in the dictionary, because if not, our trailer is probably running longer then tracked data and we don't want to throw exception\n                //  So object just stops receiving data from here and start behaving normaly\n                if (ticks.TryGetValue(m_activeTick, out tickData) == true)\n                {\n                    MySmallShip minerShip = (MySmallShip)physObject;\n\n                    if (minerShip.IsDead())\n                    {\n                        continue;\n                    }\n\n                    Matrix tickMatrix = tickData.Orientation;\n                    tickMatrix.Translation = tickData.Position;\n                    minerShip.Physics.LinearVelocity = (minerShip.WorldMatrix.Translation - tickData.Position) / MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS;\n\n                    minerShip.SetWorldMatrix(tickMatrix);\n                    minerShip.TrailerUpdate(tickData.ReflectorLevel, tickData.EngineLevel);\n\n                    if (tickData.GunShot != null)\n                    {\n                        MyMwcObjectBuilder_FireKeyEnum fireKey = MyMwcObjectBuilder_FireKeyEnum.Primary;\n                        switch (tickData.GunShot.Value)\n                        {\n                            case MyTrailerGunsShotTypeEnum.PROJECTILE:\n                                fireKey = MyMwcObjectBuilder_FireKeyEnum.Primary;\n                                break;\n                            case MyTrailerGunsShotTypeEnum.MISSILE:\n                                fireKey = MyMwcObjectBuilder_FireKeyEnum.Secondary;\n                                break;\n                            case MyTrailerGunsShotTypeEnum.MISSILE_GUIDED:\n                                fireKey = MyMwcObjectBuilder_FireKeyEnum.Third;\n                                break;\n                            case MyTrailerGunsShotTypeEnum.DRILLING_DEVICE:\n                                fireKey = MyMwcObjectBuilder_FireKeyEnum.Fourth;\n                                break;\n                            case MyTrailerGunsShotTypeEnum.HARVESTING_ORE:\n                                fireKey = MyMwcObjectBuilder_FireKeyEnum.Fifth;\n                                break;\n\n                            default:\n                                throw new MyMwcExceptionApplicationShouldNotGetHere();\n                                break;\n                        }\n\n                        minerShip.Weapons.Fire(fireKey);\n                    }\n                }\n            }\n\n            IncreaseActiveTick();\n        }\n\n        public static void RemoveFromTrailer(MyEntity entity)\n        {\n            if (m_attachedPhysObjects.ContainsKey(entity))\n            {\n                m_attachedPhysObjects.Remove(entity);\n            }\n        }\n\n        public static bool IsTrailerShip(MyEntity entity)\n        {\n            return m_attachedPhysObjects.ContainsKey(entity);\n        }\n\n        /*public static void GenerateFakeExplosionParticles(BoundingSphere explosionSphere, Vector3 dirToCamera)\n        {\n            //  Explosion particles\n            for (int i = 0; i < 100; i++)\n            {\n                MyParticle newParticle = MyParticles.AddParticle();\n\n                if (newParticle != null)\n                {\n                    float startColor = MyMwcUtils.GetRandomFloat(1.0f, 1.0f);\n                    float endColor = MyMwcUtils.GetRandomFloat(1.0f, 1.0f);\n                    float startAlpha = MyMwcUtils.GetRandomFloat(0.8f, 1.0f);\n                    float endAlpha = MyMwcUtils.GetRandomFloat(0.8f, 1.0f);\n\n                    Vector3 randomDirection = MyUtilRandomVector3ByDeviatingVector.GetRandom(dirToCamera, MathHelper.ToRadians(20));// MyMwcUtils.GetRandomVector3HemisphereNormalized(dirToCamera); //MyMwcUtils.GetRandomVector3Normalized();\n\n                    Vector3 offset = randomDirection * MyMwcUtils.GetRandomFloat(explosionSphere.Radius * 0.2f, explosionSphere.Radius * 0.5f);\n\n                    float radius = MathHelper.Lerp(explosionSphere.Radius * 0.1f, explosionSphere.Radius * 0.01f, MathHelper.Clamp(offset.Length() / (explosionSphere.Radius * 0.5f), 0, 1));\n                    \n                    newParticle.StartPointParticle(\n                        MyParticleTexturesEnum.Explosion,\n                        MyParticleBlendType.Additive, false,\n                        1000 * 1000 * 1000,\n                        explosionSphere.Center + offset,\n                        Vector3.Zero,\n                        new Vector4(startColor, startColor, startColor, startAlpha),\n                        new Vector4(endColor, endColor, endColor, endAlpha),\n                        MyMwcUtils.GetRandomFloat(MathHelper.Pi * -2.0f, MathHelper.Pi * 2.0f),\n                        radius,\n                        radius,\n                        MyMwcUtils.GetRandomFloat(MathHelper.Pi * -0.3f, MathHelper.Pi * 0.3f), \n                        true);\n                }\n            }\n\n            //  Dust particles\n            for (int i = 0; i < 100; i++)\n            {\n                MyParticle newParticle = MyParticles.AddParticle();\n\n                if (newParticle != null)\n                {\n                    //  This are small dust particles scattered all around, but we make them only in direction where camera can see them.\n\n                    Vector3 randomDirection = MyUtilRandomVector3ByDeviatingVector.GetRandom(dirToCamera, MathHelper.ToRadians(20));// MyMwcUtils.GetRandomVector3HemisphereNormalized(dirToCamera); //MyMwcUtils.GetRandomVector3Normalized();\n                    float randomOffset = MyMwcUtils.GetRandomFloat(explosionSphere.Radius * 0.5f, explosionSphere.Radius * 0.9f);\n                    Vector3 randomVelocity = Vector3.Zero;\n\n                    Vector3 newPosition = explosionSphere.Center + randomDirection * randomOffset;\n\n                    float startColor = 0.35f * MathHelper.Lerp(0.2f, 0.5f, MathHelper.Clamp(Vector3.Distance(newPosition, explosionSphere.Center) / explosionSphere.Radius, 0, 1));\n                    float endColor = startColor;\n\n                    float radius = explosionSphere.Radius * 0.05f;//MathHelper.Lerp(explosionSphere.Radius * 0.05f, explosionSphere.Radius * 0.01f, MathHelper.Clamp(offset.Length() / (explosionSphere.Radius * 0.9f), 0, 1));\n\n                    newParticle.StartPointParticle(\n                        MyParticleTexturesEnum.Smoke,\n                        MyParticleBlendType.AlphaBlended, true,\n                        1000 * 1000 * 1000,\n                        newPosition,\n                        Vector3.Zero,\n                        new Vector4(startColor, startColor, startColor, 0.5f),\n                        new Vector4(endColor, endColor, endColor, 0.5f),\n                        MyMwcUtils.GetRandomFloat(MathHelper.Pi * -2.0f, MathHelper.Pi * 2.0f),\n                        radius,\n                        radius,\n                        MyMwcUtils.GetRandomFloat(MathHelper.Pi * -0.5f, MathHelper.Pi * 0.5f), \n                        true);\n                }\n            }\n\n\n            //  Explosion debris line particles\n            for (int i = 0; i < 100; i++)\n            {\n                MyParticle newParticle = MyParticles.AddParticle();\n\n                if (newParticle != null)\n                {\n                    float startAlpha = MyMwcUtils.GetRandomFloat(0.8f, 1.0f);\n                    float endAlpha = startAlpha;\n\n                    Vector3 randomDirection = MyUtilRandomVector3ByDeviatingVector.GetRandom(dirToCamera, MathHelper.ToRadians(20));// MyMwcUtils.GetRandomVector3HemisphereNormalized(dirToCamera);\n                    float randomOffset = MyMwcUtils.GetRandomFloat(explosionSphere.Radius * 0.3f, explosionSphere.Radius * 0.5f);\n\n                    float startLength = MyMwcUtils.GetRandomFloat(explosionSphere.Radius * 0.3f, explosionSphere.Radius * 0.9f);\n                    float endLength = startLength + MyMwcUtils.GetRandomFloat(explosionSphere.Radius * 0.1f, explosionSphere.Radius * 0.2f);\n\n                    newParticle.StartLineParticle(\n                        MyParticleTexturesEnum.Explosion,\n                        MyParticleBlendType.Additive, false,\n                        1000 * 1000 * 1000,\n                        explosionSphere.Center + randomDirection * randomOffset,\n                        Vector3.Zero,\n                        new Vector4(1, 1, 1, startAlpha),\n                        new Vector4(1, 1, 1, endAlpha),\n                        randomDirection,\n                        MyMwcUtils.GetRandomFloat(0.04f, 0.2f),\n                        startLength,\n                        endLength,\n                        true);\n                }\n            }\n\n            //  Smoke debris line particles\n            for (int i = 0; i < 100; i++)\n            {\n                MyParticle newParticle = MyParticles.AddParticle();\n\n                if (newParticle != null)\n                {\n                    float startAlpha = MyMwcUtils.GetRandomFloat(0.5f, 0.8f);\n                    float endAlpha = startAlpha - 0.3f;\n\n                    Vector3 randomDirection = MyUtilRandomVector3ByDeviatingVector.GetRandom(dirToCamera, MathHelper.ToRadians(20));// MyMwcUtils.GetRandomVector3HemisphereNormalized(dirToCamera);\n                    float randomOffset = MyMwcUtils.GetRandomFloat(explosionSphere.Radius * 0.6f, explosionSphere.Radius * 1.0f);\n\n                    float startColor = MyMwcUtils.GetRandomFloat(0.5f, 1.0f);\n                    float endColor = startColor - MyMwcUtils.GetRandomFloat(0.1f, 0.3f);\n\n                    float startLength = MyMwcUtils.GetRandomFloat(0.9f, 1f);\n                    float endLength = startLength + MyMwcUtils.GetRandomFloat(0.1f, 0.2f);\n\n                    newParticle.StartLineParticle(\n                        MyParticleTexturesEnum.ExplosionSmokeDebrisLine,\n                        MyParticleBlendType.AlphaBlended, true,\n                        1000 * 1000 * 1000,\n                        explosionSphere.Center + randomDirection * randomOffset,\n                        Vector3.Zero,\n                        new Vector4(startColor, startColor, startColor, startAlpha),\n                        new Vector4(endColor, endColor, endColor, endAlpha),\n                        randomDirection,\n                        MyMwcUtils.GetRandomFloat(0.2f, 0.3f),\n                        startLength,\n                        endLength,\n                        true);\n                }\n            }\n        }*/\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Trailer/MyTrailerSave.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils.Utils;\n\n//  This save the scene so it can be later played as a trailer. It loads correct voxel maps, textures, ships paths and camera path.\n\nnamespace MinerWars.AppCode.Game.Trailer\n{\n    //  This class represents state of one phys object at one update call\n    class MyPhysObjectTrackedTickData\n    {\n        public Vector3 Position;\n        public Matrix Orientation;\n        public MyTrailerGunsShotTypeEnum? GunShot;\n        public float ReflectorLevel;\n        public float EngineLevel;\n    }\n\n    static class MyTrailerSave\n    {\n        class MyTrailerSaveObjectHolder\n        {\n            public string Name;\n            public Dictionary<int, MyPhysObjectTrackedTickData> Ticks;\n\n            private MyTrailerSaveObjectHolder() { }\n\n            public MyTrailerSaveObjectHolder(string name)\n            {\n                Name = name;\n                Ticks = new Dictionary<int, MyPhysObjectTrackedTickData>(MyTrailerConstants.MAX_TRACKED_TICKS);\n            }            \n        }\n\n        //  Every object we track stores here its per-frame data\n        static Dictionary<MyEntity, MyTrailerSaveObjectHolder> m_trackedPhysObjects;\n        static Dictionary<string, string> m_uniqueNameDictionary;\n\n        static int m_activeTick;\n        \n\n        public static void LoadContent()\n        {\n            m_activeTick = 0;\n            m_trackedPhysObjects = new Dictionary<MyEntity, MyTrailerSaveObjectHolder>();\n            m_uniqueNameDictionary = new Dictionary<string, string>();\n        }\n\n        //  Add objects to the list so we start tracking him\n        public static void AttachPhysObject(string name, MyEntity physObject)\n        {\n            //  Check if name is unique\n            string getName;\n            if (m_uniqueNameDictionary.TryGetValue(name, out getName) == true)\n            {\n                throw new Exception(\"Name of object attached to TrailerSave must be unique!\");\n            }\n\n            //  Add to list\n            m_trackedPhysObjects.Add(physObject, new MyTrailerSaveObjectHolder(name));\n        }\n\n        public static void UpdatePositionsAndOrientations()\n        {\n            foreach (KeyValuePair<MyEntity, MyTrailerSaveObjectHolder> kvp in m_trackedPhysObjects)\n            {\n                MyPhysObjectTrackedTickData tickData = InsertActiveTick(kvp.Key);\n                tickData.Position = kvp.Key.GetPosition();\n                tickData.Orientation = kvp.Key.WorldMatrix;\n                tickData.ReflectorLevel = ((MySmallShip)kvp.Key).Config.ReflectorLight.Level;\n                tickData.EngineLevel = ((MySmallShip)kvp.Key).Config.Engine.Level;\n            }            \n        }\n        \n        public static void UpdateGunShot(MyEntity physObject, MyTrailerGunsShotTypeEnum gunShot)\n        {\n            //  This method will be called even on not-tracker objects, so here we check if we need to store data about this one\n            MyPhysObjectTrackedTickData tickData = InsertActiveTick(physObject);\n            if (tickData != null)\n            {\n                tickData.GunShot = gunShot;\n            }\n        }\n\n        //  This must be called as last thing in main update method\n        public static void IncreaseActiveTick()\n        {\n            m_activeTick++;\n        }\n\n        //  Adds data for active tick into the list. First we check if data for this thick doesn't exist and if not, add it.\n        static MyPhysObjectTrackedTickData InsertActiveTick(MyEntity physObject)\n        {\n            MyTrailerSaveObjectHolder ticks;\n\n            //  This method will be called even on not-tracker objects, so here we check if we need to store data about this one\n            if (m_trackedPhysObjects.TryGetValue(physObject, out ticks) == true)\n            {\n                MyPhysObjectTrackedTickData tickData;\n\n                if (ticks.Ticks.TryGetValue(m_activeTick, out tickData) == true)\n                {\n                    return tickData;\n                }\n\n                tickData = new MyPhysObjectTrackedTickData();\n                ticks.Ticks.Add(m_activeTick, tickData);\n                return tickData;\n            }\n\n            return null;\n        }\n\n        public static void RemoveTrackedObjects()\n        {\n            m_trackedPhysObjects.Clear();\n        }\n\n        public static void ResetTicks()\n        {\n            LoadContent();\n        }\n\n        //  Save tracked data to files\n        public static void Save()\n        {\n            if (m_trackedPhysObjects == null) return;\n\n            foreach (KeyValuePair<MyEntity, MyTrailerSaveObjectHolder> kvp in m_trackedPhysObjects)\n            {\n                var path = Path.Combine(MyFileSystemUtils.GetApplicationUserDataFolder(), \"Trailer\");\n                if (!Directory.Exists(path))\n                {\n                    Directory.CreateDirectory(path);\n                }\n\n                //  Name is unique, that's preserved by Add() method\n                using (FileStream fs = File.Create(Path.Combine(path, kvp.Value.Name + \".tracked\")))\n                {\n                    using (BinaryWriter bw = new BinaryWriter(fs))\n                    {\n                        foreach (KeyValuePair<int, MyPhysObjectTrackedTickData> kvpTicks in kvp.Value.Ticks)\n                        {\n                            MyUtils.BinaryWrite(bw, ref kvpTicks.Value.Position);\n                            MyUtils.BinaryWrite(bw, ref kvpTicks.Value.Orientation);\n                            bw.Write(kvpTicks.Value.ReflectorLevel);\n                            bw.Write(kvpTicks.Value.EngineLevel);\n\n                            if (kvpTicks.Value.GunShot == null)\n                            {\n                                bw.Write((int) -1);\n                            }\n                            else\n                            {\n                                bw.Write((int) kvpTicks.Value.GunShot.Value);\n                            }\n                        }\n                    }\n                }\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Trailer/MyTrailerXml.cs",
    "content": "﻿//------------------------------------------------------------------------------\n// <auto-generated>\n//     This code was generated by a tool.\n//     Runtime Version:2.0.50727.4200\n//\n//     Changes to this file may cause incorrect behavior and will be lost if\n//     the code is regenerated.\n// </auto-generated>\n//------------------------------------------------------------------------------\n\n// \n// This source code was auto-generated by xsd, Version=2.0.50727.1432.\n// \nnamespace MinerWars.AppCode.Game.Trailer {\n    /// <remarks/>\n    [System.CodeDom.Compiler.GeneratedCodeAttribute(\"xsd\", \"2.0.50727.1432\")]\n    [System.SerializableAttribute()]\n    [System.Diagnostics.DebuggerStepThroughAttribute()]\n    [System.ComponentModel.DesignerCategoryAttribute(\"code\")]\n    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]\n    [System.Xml.Serialization.XmlRootAttribute(Namespace=\"\", IsNullable=false)]\n    public partial class MyTrailerXml\n    {\n        \n        private string gameAnimationField;\n        \n        private string flyThroughOrCreditsAnimationField;\n\n        private string mainMenuField;\n        \n        private MyTrailerXmlAnimation[] animationField;\n        \n        /// <remarks/>\n        [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]\n        public string GameAnimation {\n            get {\n                return this.gameAnimationField;\n            }\n            set {\n                this.gameAnimationField = value;\n            }\n        }\n        \n        /// <remarks/>\n        [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]\n        public string FlyThroughOrCreditsAnimation {\n            get {\n                return this.flyThroughOrCreditsAnimationField;\n            }\n            set {\n                this.flyThroughOrCreditsAnimationField = value;\n            }\n        }\n\n        /// <remarks/>\n        [System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]\n        public string MainMenuAnimation {\n            get\n            {\n                return this.mainMenuField;\n            }\n            set\n            {\n                this.mainMenuField = value;\n            }\n        }\n        \n        /// <remarks/>\n        [System.Xml.Serialization.XmlElementAttribute(\"Animation\", Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]\n        public MyTrailerXmlAnimation[] Animation {\n            get {\n                return this.animationField;\n            }\n            set {\n                this.animationField = value;\n            }\n        }\n    }\n    \n    /// <remarks/>\n    [System.CodeDom.Compiler.GeneratedCodeAttribute(\"xsd\", \"2.0.50727.1432\")]\n    [System.SerializableAttribute()]\n    [System.Diagnostics.DebuggerStepThroughAttribute()]\n    [System.ComponentModel.DesignerCategoryAttribute(\"code\")]\n    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]\n    public partial class MyTrailerXmlAnimation {\n        \n        private string nameField;\n\n        private bool benchmarkAnimationField;\n        \n        private int timeStartInMillisecondsField;\n        \n        private bool timeStartInMillisecondsFieldSpecified;\n        \n        private int timeEndInMillisecondsField;\n        \n        private bool timeEndInMillisecondsFieldSpecified;\n        \n        private MyTrailerXmlAnimationShip[] shipField;\n        \n        /// <remarks/>\n        [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]\n        public string Name {\n            get {\n                return this.nameField;\n            }\n            set {\n                this.nameField = value;\n            }\n        }\n\n        /// <remarks/>\n        [System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]\n        public bool BenchmarkAnimation\n        {\n            get\n            {\n                return this.benchmarkAnimationField;\n            }\n            set\n            {\n                this.benchmarkAnimationField = value;\n            }\n        }\n        \n        /// <remarks/>\n        [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]\n        public int TimeStartInMilliseconds {\n            get {\n                return this.timeStartInMillisecondsField;\n            }\n            set {\n                this.timeStartInMillisecondsField = value;\n            }\n        }\n        \n        /// <remarks/>\n        [System.Xml.Serialization.XmlIgnoreAttribute()]\n        public bool TimeStartInMillisecondsSpecified {\n            get {\n                return this.timeStartInMillisecondsFieldSpecified;\n            }\n            set {\n                this.timeStartInMillisecondsFieldSpecified = value;\n            }\n        }\n        \n        /// <remarks/>\n        [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]\n        public int TimeEndInMilliseconds {\n            get {\n                return this.timeEndInMillisecondsField;\n            }\n            set {\n                this.timeEndInMillisecondsField = value;\n            }\n        }\n        \n        /// <remarks/>\n        [System.Xml.Serialization.XmlIgnoreAttribute()]\n        public bool TimeEndInMillisecondsSpecified {\n            get {\n                return this.timeEndInMillisecondsFieldSpecified;\n            }\n            set {\n                this.timeEndInMillisecondsFieldSpecified = value;\n            }\n        }\n        \n        /// <remarks/>\n        [System.Xml.Serialization.XmlElementAttribute(\"Ship\", Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]\n        public MyTrailerXmlAnimationShip[] Ship {\n            get {\n                return this.shipField;\n            }\n            set {\n                this.shipField = value;\n            }\n        }\n    }\n    \n    /// <remarks/>\n    [System.CodeDom.Compiler.GeneratedCodeAttribute(\"xsd\", \"2.0.50727.1432\")]\n    [System.SerializableAttribute()]\n    [System.Diagnostics.DebuggerStepThroughAttribute()]\n    [System.ComponentModel.DesignerCategoryAttribute(\"code\")]\n    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]\n    public partial class MyTrailerXmlAnimationShip {\n        \n        private string filepathField;\n        \n        /// <remarks/>\n        [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]\n        public string Filepath {\n            get {\n                return this.filepathField;\n            }\n            set {\n                this.filepathField = value;\n            }\n        }\n    }\n    \n    /// <remarks/>\n    [System.CodeDom.Compiler.GeneratedCodeAttribute(\"xsd\", \"2.0.50727.1432\")]\n    [System.SerializableAttribute()]\n    [System.Diagnostics.DebuggerStepThroughAttribute()]\n    [System.ComponentModel.DesignerCategoryAttribute(\"code\")]\n    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]\n    [System.Xml.Serialization.XmlRootAttribute(Namespace=\"\", IsNullable=false)]\n    public partial class NewDataSet {\n        \n        private MyTrailerXml[] itemsField;\n        \n        /// <remarks/>\n        [System.Xml.Serialization.XmlElementAttribute(\"MyTrailerXml\")]\n        public MyTrailerXml[] Items {\n            get {\n                return this.itemsField;\n            }\n            set {\n                this.itemsField = value;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/TransparentGeometry/MyBillboard.cs",
    "content": "﻿using System;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Utils;\nusing System.Collections.Generic;\n\nnamespace MinerWars.AppCode.Game.TransparentGeometry\n{\n    //  This class is used for storing and sorting particle billboards\n    public class MyBillboard : IComparable\n    {\n        public MyTransparentMaterialEnum MaterialEnum;\n        public float BlendTextureRatio;\n        public MyTransparentMaterialEnum BlendMaterial;\n        \n        //  Use these members only for readonly acces. Change them only by calling Init()\n        public Vector3 Position0;\n        public Vector3 Position1;\n        public Vector3 Position2;\n        public Vector3 Position3;\n        public Vector4 Color;\n        public Vector2 UVOffset;\n\n        //  Distance to camera, for sorting\n        public float DistanceSquared;\n        public float Size;\n\n        public bool EnableColorize = false;\n        public bool Near = false;\n        public bool Lowres = false;\n\n        // Used for sorting\n        public int Priority;\n\n        public List<MyBillboard> ContainedBillboards = new List<MyBillboard>();\n\n        public void Start(ref MyQuad quad, MyTransparentMaterialEnum materialEnum,\n            ref Vector4 color, ref Vector3 origin, bool colorize = false, bool near = false, bool lowres = false)\n        {\n            Start(ref quad, materialEnum, MyTransparentMaterialEnum.Test, 0, ref color, ref origin, colorize, near, lowres);\n        }\n\n        public void Start(ref MyQuad quad, MyTransparentMaterialEnum materialEnum,\n            ref Vector4 color, ref Vector3 origin, Vector2 uvOffset, bool colorize = false, bool near = false, bool lowres = false)\n        {\n            Start(ref quad, materialEnum, MyTransparentMaterialEnum.Test, 0, ref color, ref origin, uvOffset, colorize, near, lowres);\n        }\n\n        public void Start(ref MyQuad quad, MyTransparentMaterialEnum materialEnum, MyTransparentMaterialEnum blendMaterial, float textureBlendRatio,\n        ref Vector4 color, ref Vector3 origin, bool colorize = false, bool near = false, bool lowres = false)\n        {\n            Start(ref quad, materialEnum, blendMaterial, textureBlendRatio, ref color, ref origin, Vector2.Zero, colorize, near, lowres);\n        }\n\n        //  This method is like a constructor (which we can't use because billboards are allocated from a pool).\n        //  It starts/initializes a billboard. Refs used only for optimalization\n        public void Start(ref MyQuad quad, MyTransparentMaterialEnum materialEnum, MyTransparentMaterialEnum blendMaterial, float textureBlendRatio,\n        ref Vector4 color, ref Vector3 origin, Vector2 uvOffset, bool colorize = false, bool near = false, bool lowres = false)\n        {\n            MaterialEnum = materialEnum;\n            BlendMaterial = blendMaterial;\n            BlendTextureRatio = textureBlendRatio;\n\n            MyUtils.AssertIsValid(quad.Point0);\n            MyUtils.AssertIsValid(quad.Point1);\n            MyUtils.AssertIsValid(quad.Point2);\n            MyUtils.AssertIsValid(quad.Point3);\n            \n\n            //  Billboard vertexes\n            Position0 = quad.Point0;\n            Position1 = quad.Point1;\n            Position2 = quad.Point2;\n            Position3 = quad.Point3;\n\n            UVOffset = uvOffset;\n\n            EnableColorize = colorize;\n\n            if (EnableColorize)\n                Size = (Position0 - Position2).Length();\n\n            //  Distance for sorting\n            //  IMPORTANT: Must be calculated before we do color and alpha misting, because we need distance there\n            DistanceSquared = Vector3.DistanceSquared(MyCamera.Position, origin);\n\n            //  Color\n            Color = color;\n\n            Near = near;\n            Lowres = lowres;\n\n            //  Alpha depends on distance to camera. Very close bilboards are more transparent, so player won't see billboard errors or rotating billboards\n            var mat = MyTransparentMaterialConstants.GetMaterialProperties(MaterialEnum);\n            if (mat.AlphaMistingEnable)\n                Color *= MathHelper.Clamp(((float)Math.Sqrt(DistanceSquared) - mat.AlphaMistingStart) / (mat.AlphaMistingEnd - mat.AlphaMistingStart), 0, 1);\n\n            ContainedBillboards.Clear();\n        }\n\n        //  For sorting particles back-to-front (so bigger distance is first in the list)\n        public int CompareTo(object compareToObject)\n        {\n            var compareToParticle = (MyBillboard)compareToObject;\n            return Priority == compareToParticle.Priority ?\n                compareToParticle.DistanceSquared.CompareTo(this.DistanceSquared) :\n                Priority.CompareTo(compareToParticle.Priority);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/TransparentGeometry/MyDebrisField.cs",
    "content": "﻿using System;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.Renders;\nusing MinerWars.AppCode.Game.Utils;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Entities.InfluenceSpheres;\nusing System.Collections.Generic;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.AppCode.Physics;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.Game.World;\nusing MinerWars.AppCode.Game.Models;\nusing MinerWars.AppCode.Game.Voxels;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Render;\n\n//  This class manages virtual dust field surounding the camera. Field doesn't exist, it's generated every draw call.\n//  It's variance is random, but persistent.\n\nnamespace MinerWars.AppCode.Game.TransparentGeometry\n{\n    static class MyDebrisField\n    {\n        static float[][][] m_random;\n        static BoundingSphere m_helperBoundingSphere;\n        static List<MyRBElement> m_list = new List<MyRBElement>();\n        static List<MyMwcVector3Int> m_entitiesToRemove = new List<MyMwcVector3Int>(128);\n\n        //  Color+Alpha based on distance to camera (we use pre-multiplied alpha)\n\n        public static float DustFieldCountInDirectionHalf { get { return MySector.DebrisProperties.CountInDirectionHalf; } }\n        public static float DistanceBetween { get { return MySector.DebrisProperties.DistanceBetween; } }\n        public static float FullScaleDistance { get { return MySector.DebrisProperties.FullScaleDistance; } }\n        public static float MaxDistance { get { return MySector.DebrisProperties.MaxDistance; } }\n\n        private static int DustFieldCountInDirection\n        {\n            get\n            {\n                return (int)MySector.DebrisProperties.CountInDirectionHalf * 2 + 1;\n            }\n        }\n\n        private static float DistanceBetweenHalf\n        {\n            get\n            {\n                return MySector.DebrisProperties.DistanceBetween * 0.5f;\n            }\n        }\n\n        private static float lastDustFieldCountInDirectionHalf;\n        private static float lastDistanceBetween;\n\n        static Dictionary<MyMwcVector3Int, MyEntity> m_usedCoords = new Dictionary<MyMwcVector3Int, MyEntity>();\n\n        static MyDebrisField()\n        {\n            Render.MyRender.RegisterRenderModule(MyRenderModuleEnum.DebrisField, \"Debris field\", Draw, Render.MyRenderStage.PrepareForDraw);\n            Render.MyRender.RegisterRenderModule(MyRenderModuleEnum.DebrisField, \"Debris field\", DebugDraw, Render.MyRenderStage.DebugDraw);\n        }\n\n        public static void LoadData()\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyDebrisField.LoadData\");\n\n            MyMwcLog.WriteLine(\"MyDebrisField.LoadContent() - START\");\n            MyMwcLog.IncreaseIndent();\n\n            Array DebrisEnumValues = Enum.GetValues(typeof(MyMwcObjectBuilder_SmallDebris_TypesEnum));\n            foreach (MyMwcObjectBuilder_SmallDebris_TypesEnum debrisEnum in DebrisEnumValues)\n            {\n                MyModelsEnum modelEnum = MySmallDebris.GetModelForType(debrisEnum);\n                MyModel model = MyModels.GetModelForDraw(modelEnum); //Loads model data\n                model.PreloadTextures(Managers.LoadingMode.Immediate);\n            }\n\n            MyEntities.OnCloseAll += MyEntities_OnCloseAll;\n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyDebrisField.LoadContent() - END\");\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        public static void LoadContent()\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyDebrisField.LoadContent\");\n\n            MyVoxelMaterial voxelMaterial = MyVoxelMaterials.Get(MyMwcVoxelMaterialsEnum.Indestructible_01);\n            MyVoxelMaterialTextures voxelTexture = voxelMaterial.GetTextures();\n\n         \n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        public static void UnloadData()\n        {\n            m_usedCoords.Clear();\n            m_entitiesToRemove.Clear();\n            m_list.Clear();\n            MyEntities.OnCloseAll -= MyEntities_OnCloseAll;\n        }\n\n        static void MyEntities_OnCloseAll()\n        {\n            UnloadData();\n        }\n\n\n        public static void Update()\n        {\n                                    /*\n            foreach (var pair in m_usedCoords)\n            {\n                pair.Value.MarkForClose();\n            }\n\n            m_usedCoords.Clear(); */\n            if (!MySector.DebrisProperties.Enabled || !MinerWars.AppCode.Game.Render.MyRenderConstants.RenderQualityProfile.EnableFlyingDebris)\n                return;\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyDebrisField.Update\");\n\n            if ((lastDustFieldCountInDirectionHalf != DustFieldCountInDirectionHalf)\n            ||\n                (lastDistanceBetween != DistanceBetween))\n            {\n                lastDistanceBetween = DistanceBetween;\n                lastDustFieldCountInDirectionHalf = DustFieldCountInDirectionHalf;\n\n                //  Fill 3D array with random values from interval <0..1>\n                m_random = new float[DustFieldCountInDirection][][];\n                for (int x = 0; x < m_random.Length; x++)\n                {\n                    m_random[x] = new float[DustFieldCountInDirection][];\n\n                    for (int y = 0; y < m_random.Length; y++)\n                    {\n                        m_random[x][y] = new float[DustFieldCountInDirection];\n\n                        for (int z = 0; z < m_random.Length; z++)\n                        {\n                            m_random[x][y][z] = MyMwcUtils.GetRandomFloat(0, 1);\n                        }\n                    }\n                }\n            }\n\n            //  Update helper frustum and then its bounding box\n            m_helperBoundingSphere = new BoundingSphere(MySession.PlayerShip.GetPosition(), MaxDistance);\n            BoundingBox helperBoundingBox = BoundingBox.CreateFromSphere(m_helperBoundingSphere);\n\n            MyMwcVector3Int minCoord = GetMetersToDustFieldCoord(ref helperBoundingBox.Min);\n            MyMwcVector3Int maxCoord = GetMetersToDustFieldCoord(ref helperBoundingBox.Max);\n\n            m_entitiesToRemove.Clear();\n            m_entitiesToRemove.AddRange(m_usedCoords.Keys);\n\n            BoundingSphere collisionBoundingSphere = new BoundingSphere(MySession.PlayerShip.GetPosition(), MaxDistance / 3);\n            BoundingBox helperCollisionBoundingBox = BoundingBox.CreateFromSphere(m_helperBoundingSphere);\n\n\n            MyEntities.GetCollisionsInBoundingBox(ref helperCollisionBoundingBox, m_list);\n\n            bool newDebrisAllowed = true;\n            foreach (MyRBElement element in m_list)\n            {\n                MyEntity entity = ((MinerWars.AppCode.Game.Physics.MyPhysicsBody)element.GetRigidBody().m_UserData).Entity;\n                if ((entity is MyVoxelMap)\n                    ||\n                    (entity is MinerWars.AppCode.Game.Prefabs.MyPrefabBase))\n                    newDebrisAllowed = false;\n            }\n\n            MyMwcVector3Int tempCoord;\n            for (tempCoord.X = minCoord.X; tempCoord.X <= maxCoord.X; tempCoord.X++)\n            {\n                for (tempCoord.Y = minCoord.Y; tempCoord.Y <= maxCoord.Y; tempCoord.Y++)\n                {\n                    for (tempCoord.Z = minCoord.Z; tempCoord.Z <= maxCoord.Z; tempCoord.Z++)\n                    {\n                        //  Position of this particle\n                        Vector3 position;\n                        position.X = tempCoord.X * DistanceBetween;\n                        position.Y = tempCoord.Y * DistanceBetween;\n                        position.Z = tempCoord.Z * DistanceBetween;\n\n\n                        //  Get pseudo-random number. It's randomness is based on 3D position, so values don't change between draw calls.\n                        float pseudoRandomVariationMod = m_random[Math.Abs(tempCoord.X) % m_random.Length][Math.Abs(tempCoord.Y) % m_random.Length][Math.Abs(tempCoord.Z) % m_random.Length];\n\n                        //  Alter position by randomness\n                        position.X += MathHelper.Lerp(-DistanceBetweenHalf, +DistanceBetweenHalf, pseudoRandomVariationMod);\n                        position.Y += MathHelper.Lerp(-DistanceBetweenHalf, +DistanceBetweenHalf, pseudoRandomVariationMod);\n                        position.Z += MathHelper.Lerp(-DistanceBetweenHalf, +DistanceBetweenHalf, pseudoRandomVariationMod);\n\n                        //  Distance to particle\n                        float distance;\n                        Vector3 center = MySession.PlayerShip.GetPosition();\n\n                        Vector3.Distance(ref center, ref position, out distance);\n\n                        if (distance > MaxDistance)\n                            continue;\n\n                        //  Pseudo-random color and alpha\n                        float pseudoRandomColor = MathHelper.Lerp(0.1f, 0.2f, pseudoRandomVariationMod); //MathHelper.Lerp(0.2f, 0.3f, pseudoRandomVariationMod);\n                        //float pseudoRandomAlpha = 0.5f; //0.4f;  // 0.2f;// MathHelper.Lerp(0.2f, 0.3f, pseudoRandomVariationMod);\n\n\n                        //Remove only entities outside distance, not frustum (looks better)\n                        m_entitiesToRemove.Remove(tempCoord);\n\n                        if (MyCamera.GetBoundingFrustum().Contains(position) == ContainmentType.Disjoint)\n                            continue;\n\n                        float alpha = 0;\n\n                        if (distance < FullScaleDistance)\n                        {\n                            alpha = 1;\n                        }\n                        else if ((distance >= FullScaleDistance) && (distance < MaxDistance))\n                        {\n                            alpha = 1 - MathHelper.Clamp((distance - FullScaleDistance) / (MaxDistance - FullScaleDistance), 0, 1);\n                        }\n                        else\n                        {\n                            alpha = 0;\n                        }\n\n                        MyEntity entity;\n                        m_usedCoords.TryGetValue(tempCoord, out entity);\n\n                        float scale = MathHelper.Lerp(0.2f, 1.0f, alpha);\n\n                        if (entity == null)\n                        {\n                            if (!newDebrisAllowed)\n                                continue;\n\n                            if (alpha > 0.2f)\n                                continue;  //it would be popping\n\n                            MinerWars.CommonLIB.AppCode.ObjectBuilders.MyMwcObjectBuilder_Base debrisBuilder = null;\n\n                            if (MyMwcUtils.GetRandomInt(2) % 2 == 0)\n                            {\n                                entity = MyExplosionDebrisVoxel.Allocate();\n                                if (entity == null)\n                                    continue;\n\n                                int voxelMatEnumIndex = (int)MyMwcUtils.GetRandomShort((short)0, (short)(MySector.DebrisProperties.DebrisVoxelMaterials.Length));\n                                MyMwcVoxelMaterialsEnum voxelMatEnum = (MyMwcVoxelMaterialsEnum)MySector.DebrisProperties.DebrisVoxelMaterials.GetValue(voxelMatEnumIndex);\n\n                                ((MyExplosionDebrisVoxel)entity).Start(position, 1, voxelMatEnum, MyGroupMask.Empty, false);\n                                MyEntities.Add(entity);\n                            }\n                            else\n                            {\n                                int debrisEnumIndex = (int)MyMwcUtils.GetRandomShort((short)0, (short)(MySector.DebrisProperties.DebrisEnumValues.Length));\n                                MyMwcObjectBuilder_SmallDebris_TypesEnum debrisEnum = (MyMwcObjectBuilder_SmallDebris_TypesEnum)MySector.DebrisProperties.DebrisEnumValues.GetValue(debrisEnumIndex);\n\n                                debrisBuilder = new MyMwcObjectBuilder_SmallDebris(debrisEnum, true, 0);\n                                //MyMwcObjectBuilder_SmallDebris debrisBuilder = new MyMwcObjectBuilder_SmallDebris(MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris32_pilot, true, 0);\n                                entity = MyEntities.CreateFromObjectBuilderAndAdd(null, debrisBuilder, Matrix.CreateWorld(position, MyMwcUtils.GetRandomVector3Normalized(), MyMwcUtils.GetRandomVector3Normalized()));\n                            }\n\n                            entity.Save = false;\n                            entity.CastShadows = false;\n\n                            m_usedCoords.Add(tempCoord, entity);\n                        }\n\n\n                        if (entity.Physics != null && entity.Physics.Enabled == true)\n                            entity.Physics.Enabled = false;\n\n\n                        /*\n                        if (!(entity is MyExplosionDebrisVoxel) && (distance < FullScaleDistance / 2.0f))\n                        {\n                            if (entity.Physics == null)\n                            {\n                                entity.InitBoxPhysics(MyMaterialType.METAL, entity.ModelCollision, 500, 0, MyConstants.COLLISION_LAYER_MODEL_DEBRIS, RigidBodyFlag.RBF_DEFAULT);\n                            }\n                            if (entity.Physics.Enabled == false)\n                            {\n                                entity.Physics.Clear();\n                                entity.Physics.Enabled = true;\n                            }\n                        }*/\n                            /*\n                        else\n                        {\n                            if (entity.Physics != null && entity.Physics.Enabled)\n                            {\n                                entity.Physics.Enabled = false;\n                            }\n                        }     */\n\n\n                        if (entity is MyExplosionDebrisVoxel)\n                        {\n                            scale *= 0.08f;\n                        }\n\n                        entity.Scale = scale;\n\n                        /*\n                        if (entity.Physics == null && distance < FullScaleDistance / 3)\n                        {\n                            entity.InitBoxPhysics(MyMaterialType.METAL, entity.ModelLod0, 100, MyPhysicsConfig.DefaultAngularDamping, MyConstants.COLLISION_LAYER_ALL, RigidBodyFlag.RBF_DEFAULT);\n                            entity.Physics.Enabled = true;\n                        } */\n                    }\n                }\n            }\n\n\n            foreach (MyMwcVector3Int positionToRemove in m_entitiesToRemove)\n            {\n                MyEntity entity = m_usedCoords[positionToRemove];\n                /*\n                if (entity.Physics != null && entity.Physics.LinearVelocity.LengthSquared() > 0.1f)\n                {\n                    //  Particles.MyParticleEffect effect = Particles.MyParticlesManager.CreateParticleEffect((int)MyParticleEffectsIDEnum.Explosion_Missile);\n                    //  effect.WorldMatrix = entity.WorldMatrix;\n                } */\n\n                entity.MarkForClose();\n\n                m_usedCoords.Remove(positionToRemove);\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        static MyMwcVector3Int GetMetersToDustFieldCoord(ref Vector3 position)\n        {\n            return new MyMwcVector3Int(\n                (int)(position.X / DistanceBetween),\n                (int)(position.Y / DistanceBetween),\n                (int)(position.Z / DistanceBetween));\n        }\n\n        //  This method doesn't really draw. It just creates billboards that are later drawn in MyParticles.Draw()\n        public static void Draw()\n        {\n\n        }\n\n        public static void DebugDraw()\n        {\n            return;\n            //  Update helper frustum and then its bounding box\n            m_helperBoundingSphere = new BoundingSphere(MySession.PlayerShip.GetPosition(), MaxDistance);\n            BoundingBox helperBoundingBox = BoundingBox.CreateFromSphere(m_helperBoundingSphere);\n\n            MyMwcVector3Int minCoord = GetMetersToDustFieldCoord(ref helperBoundingBox.Min);\n            MyMwcVector3Int maxCoord = GetMetersToDustFieldCoord(ref helperBoundingBox.Max);\n\n            List<MyMwcVector3Int> entitiesToRemove = new List<MyMwcVector3Int>(m_usedCoords.Keys);\n\n            MyMwcVector3Int tempCoord;\n            for (tempCoord.X = minCoord.X; tempCoord.X <= maxCoord.X; tempCoord.X++)\n            {\n                for (tempCoord.Y = minCoord.Y; tempCoord.Y <= maxCoord.Y; tempCoord.Y++)\n                {\n                    for (tempCoord.Z = minCoord.Z; tempCoord.Z <= maxCoord.Z; tempCoord.Z++)\n                    {\n                        //  Position of this particle\n                        Vector3 position;\n                        position.X = tempCoord.X * DistanceBetween;\n                        position.Y = tempCoord.Y * DistanceBetween;\n                        position.Z = tempCoord.Z * DistanceBetween;\n\n                        float distance;\n                        Vector3 center = MySession.PlayerShip.GetPosition();\n                        //Vector3 center = new Vector3(m_random[0][0][0], m_random[0][0][1], m_random[0][0][2]);\n\n                        Vector3.Distance(ref center, ref position, out distance);\n\n                        if (distance > MaxDistance)\n                            continue;\n\n                        /*\n                        BoundingBox bbox = new BoundingBox(position - new Vector3(DistanceBetweenHalf),position + new Vector3(DistanceBetweenHalf));\n                        Vector4 color = new Vector4(0,1,0,1);\n                        MyDebugDraw.DrawAABBLowRes(ref bbox, ref color, 1.0f);*/\n\n                        MyDebugDraw.DrawSphereWireframe(position, 1, Vector3.One, 1);\n                    }\n                }\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/TransparentGeometry/MyFlashes.cs",
    "content": "﻿#region Using\nusing System;\nusing System.Collections.Generic;\nusing System.Threading;\nusing MinerWarsMath;\n\n\nusing MinerWarsMath.Graphics;\nusing MinerWars.AppCode.Toolkit.Input;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Physics;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.AppCode.Game.BackgroundCube;\nusing MinerWars.AppCode.Game.Cockpit;\nusing MinerWars.AppCode.Game.Decals;\nusing MinerWars.AppCode.Game.Editor;\nusing MinerWars.AppCode.Game.Effects;\nusing MinerWars.AppCode.Game.Explosions;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.HUD;\nusing MinerWars.AppCode.Game.Lights;\nusing MinerWars.AppCode.Game.Managers;\nusing MinerWars.AppCode.Game.Models;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Entities.Weapons;\nusing MinerWars.AppCode.Game.Entities.Weapons.UniversalLauncher;\nusing MinerWars.AppCode.Game.Renders;\nusing MinerWars.AppCode.Game.Trailer;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Voxels;\nusing MinerWars.AppCode.Game.World;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.AppCode.Game.Prefabs;\nusing SysUtils;\nusing MinerWars.AppCode.Game.Render;\nusing MinerWars.AppCode.Game.Localization;\n#endregion\n\n\nnamespace MinerWars.AppCode.Game.TransparentGeometry\n{\n    static class MyFlashes \n    {\n        enum FlashState\n        {\n            INACTIVE,\n            FADE_IN,\n            FLASH,\n            FADE_OUT\n        }\n\n        static int m_StartMilliseconds;\n        static float m_flashIntensity; //0-1\n        static FlashState m_State = FlashState.INACTIVE;\n\n        public static void MakeFlash()\n        {\n            if (m_State == FlashState.INACTIVE || m_State == FlashState.FADE_OUT)\n            {\n                m_StartMilliseconds = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n                m_State = FlashState.FADE_IN;\n            }\n            else\n            if (m_State == FlashState.FLASH)\n            {\n                m_StartMilliseconds = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n            }\n        }\n\n        /// <summary>\n        /// Render method is called directly by renderer. Depending on stage, post process can do various things \n        /// </summary>\n        /// <param name=\"postProcessStage\">Stage indicating in which part renderer currently is.</param>public override void RenderAfterBlendLights()\n        public static void Draw()\n        {   //TODO   \n            /*\n            switch (m_State)\n            {\n                case FlashState.FADE_IN:\n                    m_flashIntensity = (MyMinerGame.TotalGamePlayTimeInMilliseconds - m_StartMilliseconds) / (float)MyFlashBombConstants.FADE_IN_TIME;\n                    if (m_flashIntensity >= 1.0f)\n                    {\n                        m_State = FlashState.FLASH;\n                        m_StartMilliseconds = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n                    }\n                    break;\n\n                case FlashState.FLASH:\n                    m_flashIntensity = 1.0f;\n                    if (MyMinerGame.TotalGamePlayTimeInMilliseconds > (m_StartMilliseconds + (float)MyFlashBombConstants.FLASH_TIME))\n                    {\n                        m_StartMilliseconds = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n                        m_State = FlashState.FADE_OUT;\n                    }\n                    break;\n\n                case FlashState.FADE_OUT:\n                    m_flashIntensity = 1.0f - ((MyMinerGame.TotalGamePlayTimeInMilliseconds - m_StartMilliseconds) / (float)MyFlashBombConstants.FADE_OUT_TIME);\n                    if (m_flashIntensity <= 0.0f)\n                    {\n                        m_State = FlashState.INACTIVE;\n                    }\n                    break;\n            }\n\n            if (m_State != FlashState.INACTIVE)\n            {\n                BlendState bs = MyMinerGame.Static.GraphicsDevice.BlendState;\n                MyMinerGame.Static.GraphicsDevice.BlendState = BlendState.NonPremultiplied;\n\n                int flashIntensityInt = (int)(m_flashIntensity * 255.0f);\n                MyGuiManager.DrawSpriteFast(MyGuiManager.GetBlankTexture(), 0, 0, MyCamera.Viewport.Width, MyCamera.Viewport.Height, new Color(flashIntensityInt, flashIntensityInt, flashIntensityInt, flashIntensityInt));\n\n                //  Revert alpha-blending\n                MyMinerGame.Static.GraphicsDevice.BlendState = bs;\n            }   */\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/TransparentGeometry/MyIceComet.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.App;\n\nnamespace MinerWars.AppCode.Game.Renders\n{\n    static class MyIceComet\n    {\n        public static bool IsActive;\n        private static int m_maxTime = (int)TimeSpan.FromSeconds(60).TotalMilliseconds;\n        private static int m_startTime;\n\n        private static List<MyMwcVoxelMaterialsEnum> m_iceMeteorMaterials = new List<MyMwcVoxelMaterialsEnum>\n        {\n            MyMwcVoxelMaterialsEnum.Snow_01,\n        };\n\n        private const int m_frontDistance = 1000;\n        private const int m_sideDistance = 5000;\n\n        private const int m_sizeMin = 800;\n        private const int m_sizeMax = 900;\n\n\n        internal static void Start()\n        {\n            IsActive = true;\n            m_startTime = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n\n            const int meteorsCount = 3;\n\n            const int minSpeed = 1200;\n            const int maxSpeed = 1400;\n\n            Vector3 sphereCenter = MyCamera.Position + MyCamera.ForwardVector * m_frontDistance - MyCamera.LeftVector * m_sideDistance;\n            Vector3 windForwardDirection = MyCamera.LeftVector;\n\n            for (int i = 0; i < meteorsCount; i++)\n            {\n\n                Vector3 meteorDirection = (windForwardDirection + (MyMwcUtils.GetRandomVector3Normalized() * 0.001f)) * MyMwcUtils.GetRandomInt(minSpeed, maxSpeed);\n                float distance = MyMwcUtils.GetRandomFloat(1000, 1500);\n\n                CreateComet(sphereCenter + MyMwcUtils.GetRandomVector3Normalized() * new Vector3(distance, distance, distance), meteorDirection);\n            }\n        }\n\n        //private static void Clear()\n        //{\n        //    for (int i = 0; i < m_comets.Count; i++)\n        //    {\n        //        if (m_comets[i] != null)\n        //        {\n        //            if (m_comets[i].Physics != null)\n        //            {\n        //                if (m_comets[i].Physics.Enabled) // Editor can disable physics\n        //                {\n        //                    m_comets[i].Physics.Enabled = false;\n        //                }\n        //                m_comets[i].Physics.RemoveAllElements();\n        //            }\n        //            m_comets[i].MarkForClose();\n        //        }\n        //    }\n\n        //    m_comets.Clear();\n        //}\n\n        public static void Update()\n        {\n            if (IsActive == false)\n                return;\n\n        }\n\n        public static MyMeteor CreateComet(Vector3 position, Vector3 direction)\n        {\n            float size = MyMwcUtils.GetRandomInt(m_sizeMin, m_sizeMax);\n\n            Matrix worldMatrix = Matrix.CreateFromAxisAngle(MyMwcUtils.GetRandomVector3Normalized(), MyMwcUtils.GetRandomFloat(0, MathHelper.Pi));\n            worldMatrix.Translation = position;\n\n            MyMeteor meteor = MyMeteor.GenerateMeteor(size, worldMatrix, position, m_iceMeteorMaterials[MyMwcUtils.GetRandomInt(0, m_iceMeteorMaterials.Count)]);\n            meteor.Start(direction, 953);\n\n            return meteor;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/TransparentGeometry/MyIceStorm.cs",
    "content": "using System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Linq;\nusing MinerWarsMath;\n\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Render;\nusing MinerWars.AppCode.Game.SolarSystem;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.AppCode.Game.TransparentGeometry.Particles;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing SysUtils.Utils;\n\nnamespace MinerWars.AppCode.Game.Renders\n{\n    internal static class MyIceStorm\n    {\n        public const int MaxTimeMs = 40000;\n        public const int FadeOutTimeMs = 6000;\n        public const int FadeInTimeMs = 10000;\n        private const int MaxSoundDistance = 200;\n        public const float CenterBias = 8f;\n        public const int MaxSparkCount = 8;\n        public const float MaxAmbientVolume = 0.6f;\n        public const float MaxSmokeAlpha = 0.5f;\n        public const int SmokeCount = 200;\n        public const int MaxIceCount = 20;\n        public const int IceEveryMs = 1500;\n        public const int SparkEveryMs = 1000;\n        public const int SmokeSphereRadius = 5000;\n        public static bool IsActive;\n        private static MySoundCue? ambientSound;\n\n\n        private static readonly List<SmokeParticle> smokeParticles = new List<SmokeParticle>();\n        private static readonly List<IceParticle> iceParticles = new List<IceParticle>();\n        private static readonly List<ElectricStorm> storms = new List<ElectricStorm>();\n\n\n        private static int startTime;\n        private static Vector3 sphereCenter;\n        private static int lastUpdateMs;\n        private static readonly Random random = new Random();\n\n        private static readonly List<MyMwcObjectBuilder_StaticAsteroid_TypesEnum> asteroidTypes =\n            new List<MyMwcObjectBuilder_StaticAsteroid_TypesEnum>(10);\n\n        static MyIceStorm()\n        {\n            MyRender.RegisterRenderModule(MyRenderModuleEnum.IceStormWind, \"IceStorm wind\", Draw, MyRenderStage.PrepareForDraw);\n        }\n\n        //  Random vector distributed over the circle about normal. \n        //  Returns random vector that always lies on circle\n        public static Vector3 GetRandomVector3CircleNormalizedFixed(Vector3 normal)\n        {\n            return MyMwcUtils.GetRandomVector3Normalized()*normal;\n        }\n\n        public static void Draw()\n        {\n            if (!IsActive) return;\n\n            // main smoke\n            foreach (SmokeParticle part in smokeParticles)\n            {\n                MyTransparentGeometry.AddPointBillboard(MyTransparentMaterialEnum.Smoke, part.Color, part.Pos, 900,\n                                                        part.Angle, 0, true);\n            }\n\n            float darkeningPhase;\n            float dt;\n            GetDarkeningPhase(out darkeningPhase, out dt);\n\n            // small pieces of debris\n            if (darkeningPhase > 0.2)\n            {\n                var color = new Vector4(1, 1, 1, darkeningPhase);\n\n                for (int i = 0; i < 100; i++)\n                {\n                    Vector3 pos = MyCamera.Position +\n                                  GetRandomVector3CircleNormalizedFixed(MyCamera.ForwardVector)*\n                                  MyMwcUtils.GetRandomFloat(0, 500) + MyCamera.ForwardVector*20;\n                    MyTransparentGeometry.AddPointBillboard(MyTransparentMaterialEnum.particle_stone, color, pos,\n                                                            MyMwcUtils.GetRandomFloat(0.008f, 0.05f),\n                                                            MyMwcUtils.GetRandomRadian());\n                }\n\n                for (int i = 0; i < 100; i++)\n                {\n                    Vector3 pos = MyCamera.Position +\n                                  GetRandomVector3CircleNormalizedFixed(MyCamera.ForwardVector)*\n                                  MyMwcUtils.GetRandomFloat(0, 500) + MyCamera.ForwardVector*20;\n                    MyTransparentGeometry.AddPointBillboard(MyTransparentMaterialEnum.Sparks_b, color, pos,\n                                                            MyMwcUtils.GetRandomFloat(0.008f, 0.05f),\n                                                            MyMwcUtils.GetRandomRadian());\n                }\n            }\n\n            // storm aftersparks\n            foreach (ElectricStorm storm in storms)\n            {\n                MyTransparentGeometry.AddPointBillboard(MyTransparentMaterialEnum.Sparks_a, new Vector4(1f, 1f, 1f, 1f),\n                                                        storm.Position +\n                                                        MyMwcUtils.GetRandomVector3Normalized()*\n                                                        MyMwcUtils.GetRandomFloat(0, 50),\n                                                        MyMwcUtils.GetRandomFloat(10, 20), MyMwcUtils.GetRandomRadian());\n            }\n        }\n\n\n        private static void Clear()\n        {\n            IsActive = false;\n            foreach (IceParticle icePart in iceParticles)\n            {\n                icePart.AsteroidEntity.MarkForClose();\n                MyParticlesManager.RemoveParticleEffect(icePart.TrailEffect);\n                StopCue(icePart.Sound);\n            }\n            iceParticles.Clear();\n            smokeParticles.Clear();\n\n            foreach (ElectricStorm storm in storms)\n            {\n                // MyParticlesManager.RemoveParticleEffect(storm.Effect); autoclear\n                StopCue(storm.Sound);\n            }\n\n            storms.Clear();\n            StopCue(ambientSound);\n        }\n\n        private static void StopCue(MySoundCue? cue)\n        {\n            if ((cue != null) && cue.Value.IsPlaying)\n            {\n                cue.Value.Stop(SharpDX.XACT3.StopFlags.Immediate);\n            }\n        }\n\n\n        public static void Start()\n        {\n            Clear();\n\n            IsActive = true;\n            startTime = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n            ambientSound = MyAudio.AddCue3D(MySoundCuesEnum.SfxSolarWind,\n                                            MyCamera.Position + MyCamera.ForwardVector*MaxSoundDistance, Vector3.Forward,\n                                            Vector3.Up, Vector3.Zero, 0);\n\n\n            sphereCenter = MyCamera.Position + MyCamera.ForwardVector*400;\n\n\n            for (int i = 0; i < SmokeCount; i++)\n            {\n                Vector3 pos = sphereCenter +\n                              MyMwcUtils.GetRandomVector3Normalized()*MyMwcUtils.GetRandomFloat(0, SmokeSphereRadius);\n                var smokePart = new SmokeParticle\n                                    {\n                                        Angle = MyMwcUtils.GetRandomRadian(),\n                                        Color = Vector4.Zero,\n                                        AngularVelocity = MyMwcUtils.GetRandomFloat(-0.15f, 0.15f),\n                                        Pos = pos,\n                                        Velocity =\n                                            MyMwcUtils.GetRandomVector3Normalized()*MyMwcUtils.GetRandomFloat(0, 30f)\n                                    };\n                smokeParticles.Add(smokePart);\n            }\n        }\n\n        public static void LoadContent()\n        {\n        }\n\n        public static void UnloadContent()\n        {\n            MyMwcLog.WriteLine(\"MyIceStorm.UnloadContent - START\");\n            MyMwcLog.IncreaseIndent();\n\n            Clear();\n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyIceStorm.UnloadContent - END\");\n        }\n\n        static List<IceParticle> m_iceList = new List<IceParticle>();\n\n        public static void Update()\n        {\n            //  Update only if sun wind is active\n            if (IsActive == false) return;\n\n            float darkeningPhase;\n            float dt;\n            int relTime = GetDarkeningPhase(out darkeningPhase, out dt);\n\n            if (relTime > MaxTimeMs)\n            {\n                Clear();\n                return;\n            }\n\n\n            MyAudio.UpdateCuePosition(ambientSound,\n                                      MyCamera.Position + MyCamera.ForwardVector*-MaxSoundDistance*(1 - darkeningPhase),\n                                      MyCamera.ForwardVector, MyCamera.UpVector, Vector3.Zero);\n            MyAudio.UpdateCueVolume(ambientSound, darkeningPhase*MaxAmbientVolume);\n\n            // update smoke \n            foreach (SmokeParticle part in smokeParticles)\n            {\n                Vector3 toCamera = (MyCamera.Position - part.Pos);\n                toCamera.Normalize();\n                float alpha = darkeningPhase*MaxSmokeAlpha;\n                part.Color = new Vector4(alpha, alpha, alpha, alpha);\n                //part.Color.W = darkeningPhase;\n                part.Pos += part.Velocity*dt + toCamera*CenterBias*dt;\n                part.Angle += part.AngularVelocity*dt;\n            }\n\n\n            // remove old ice and sparks\n\n            m_iceList.Clear();\n            foreach (IceParticle particle in iceParticles)\n            {\n                if (particle.StartTime + 4000 < relTime)\n                    m_iceList.Add(particle);\n            }\n\n            foreach (IceParticle ice in m_iceList)\n            {\n                ice.AsteroidEntity.MarkForClose();\n                Debug.Assert(ice.TrailEffect != null, \"ice.TrailEffect != null\");\n                ice.TrailEffect.Stop();\n                ice.TrailEffect = null;\n                StopCue(ice.Sound);\n                iceParticles.Remove(ice);\n            }\n\n            int c = 0;\n            while (c < storms.Count)\n            {\n                ElectricStorm storm = storms[c];\n                if (storm.StartTime + 1500 < relTime)\n                {\n                    storms.RemoveAt(c);\n                    continue;\n                }\n                c++;\n            }\n\n\n\n            // if its dark add new sparks and ice balls\n            if (darkeningPhase >= 1)\n            {\n                if (storms.Count < MaxSparkCount && MyMwcUtils.GetRandomInt(SparkEveryMs) < dt*1000.0f)\n                {\n                    var storm = new ElectricStorm\n                                    {\n                                        Position =\n                                            MyCamera.Position + MyCamera.ForwardVector*250 +\n                                            MyMwcUtils.GetRandomVector3HemisphereNormalized(MyCamera.ForwardVector)*\n                                            MyMwcUtils.GetRandomFloat(0, 300),\n                                        StartTime = relTime,\n                                        Effect =\n                                            MyParticlesManager.CreateParticleEffect(\n                                                (int) MyParticleEffectsIDEnum.Damage_Sparks),\n                                    };\n                    storm.Effect.WorldMatrix = Matrix.CreateTranslation(storm.Position);\n                    storm.Effect.AutoDelete = true;\n                    storm.Effect.UserScale = 2;\n                    storm.Sound = MyAudio.AddCue2D(MySoundCuesEnum.SfxSpark);\n                    storms.Add(storm);\n                }\n\n\n                if (iceParticles.Count < MaxIceCount && MyMwcUtils.GetRandomInt(IceEveryMs) < dt*1000.0f)\n                {\n                    Vector3 dir = MyMwcUtils.GetRandomVector3HemisphereNormalized(MyCamera.ForwardVector);\n                    Vector3 pos = MyCamera.Position + MyCamera.ForwardVector*250 +\n                                  MyMwcUtils.GetRandomVector3Normalized()*MyMwcUtils.GetRandomFloat(0, 200) +\n                                  dir*MyMwcUtils.GetRandomFloat(0, 500);\n                    MyMwcObjectBuilder_StaticAsteroid rockModel =\n                        MySectorGenerator.GenerateStaticAsteroid(MyMwcUtils.GetRandomFloat(0.1f, 2f),\n                                                                 MyStaticAsteroidTypeSetEnum.A,\n                                                                 MyMwcVoxelMaterialsEnum.Ice_01, pos, random,\n                                                                 asteroidTypes);\n                    Matrix matrix = Matrix.CreateFromAxisAngle(MyMwcUtils.GetRandomVector3Normalized(),\n                                                               MyMwcUtils.GetRandomFloat(0, MathHelper.Pi));\n                    matrix.Translation = pos;\n                    MyEntity asteroid = MyEntities.CreateFromObjectBuilderAndAdd(null, rockModel, matrix);\n                    asteroid.Physics.Enabled = false;\n                    asteroid.CastShadows = false;\n\n                    MyParticleEffect effect =\n                        MyParticlesManager.CreateParticleEffect((int) MyParticleEffectsIDEnum.Smoke_CannonShot);\n                    Vector3 velocity = -dir*MyMwcUtils.GetRandomInt(150, 400);\n                    iceParticles.Add(new IceParticle\n                                         {\n                                             StartTime = relTime,\n                                             Position = pos,\n                                             Direction = -dir,\n                                             AsteroidEntity = asteroid,\n                                             TrailEffect = effect,\n                                             RotAxis = MyMwcUtils.GetRandomVector3Normalized(),\n                                             RotAngle = MyMwcUtils.GetRandomRadian(),\n                                             AngularVelocity = MyMwcUtils.GetRandomFloat(0.2f, 10f),\n                                             Velocity = velocity,\n                                             Sound =\n                                                 MyAudio.AddCue3D(MySoundCuesEnum.WepSniperHighFire2d, pos, dir,\n                                                                  dir*-dir, velocity)\n                                         });\n                }\n            }\n\n            // update ice parts\n            foreach (IceParticle particle in iceParticles)\n            {\n                particle.RotAngle += particle.AngularVelocity * dt;\n                particle.Position += particle.Velocity * dt;\n                Matrix matrix = Matrix.CreateFromAxisAngle(particle.RotAxis, particle.RotAngle);\n                matrix.Translation = particle.Position;\n                particle.AsteroidEntity.SetWorldMatrix(matrix);\n                Matrix trans = Matrix.CreateTranslation(-particle.Direction * 10);\n                particle.TrailEffect.WorldMatrix = matrix * trans;\n                MyAudio.UpdateCuePosition(particle.Sound, particle.Position, particle.Direction,\n                                          particle.Direction * -particle.Direction, particle.Velocity);\n            }\n\n\n\n            lastUpdateMs = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n        }\n\n        private static int GetDarkeningPhase(out float darkeningPhase, out float dt)\n        {\n            int time = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n            int relTime = time - startTime;\n            dt = (time - (float) lastUpdateMs)/1000.0f;\n\n            darkeningPhase = relTime/(float) FadeInTimeMs;\n            if (relTime > MaxTimeMs - FadeOutTimeMs) darkeningPhase = (MaxTimeMs - relTime)/(float) FadeOutTimeMs;\n            if (darkeningPhase > 1) darkeningPhase = 1;\n            if (darkeningPhase < 0) darkeningPhase = 0;\n            return relTime;\n        }\n\n        #region Nested type: ElectricStorm\n\n        public class ElectricStorm\n        {\n            public MyParticleEffect Effect;\n            public Vector3 Position;\n            public MySoundCue? Sound;\n            public int StartTime;\n        }\n\n        #endregion\n\n        #region Nested type: IceParticle\n\n        public class IceParticle\n        {\n            public float AngularVelocity;\n            public MyEntity AsteroidEntity;\n            public Vector3 Direction;\n            public Vector3 Position;\n            public float RotAngle;\n            public Vector3 RotAxis;\n            public MySoundCue? Sound;\n            public int StartTime;\n            public MyParticleEffect TrailEffect;\n            public Vector3 Velocity;\n        }\n\n        #endregion\n\n        #region Nested type: SmokeParticle\n\n        public class SmokeParticle\n        {\n            public float Angle;\n            public float AngularVelocity;\n            public Vector4 Color;\n            public Vector3 Pos;\n            public Vector3 Velocity;\n        }\n\n        #endregion\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/TransparentGeometry/MyLightGlare.cs",
    "content": "﻿using System;\nusing MinerWars.AppCode.Game.Lights;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Render;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.App;\nusing System.Diagnostics;\nusing ParallelTasks;\n\nusing SharpDX;\nusing SharpDX.Direct3D9;\nusing SharpDX.Toolkit.Graphics;\n\nnamespace MinerWars.AppCode.Game.TransparentGeometry\n{\n    using Vector2 = MinerWarsMath.Vector2;\n    using Vector3 = MinerWarsMath.Vector3;\n    using Vector4 = MinerWarsMath.Vector4;\n    using Rectangle = MinerWarsMath.Rectangle;\n    using Matrix = MinerWarsMath.Matrix;\n    using Color = MinerWarsMath.Color;\n    using BoundingBox = MinerWarsMath.BoundingBox;\n    using BoundingSphere = MinerWarsMath.BoundingSphere;\n    using BoundingFrustum = MinerWarsMath.BoundingFrustum;\n    using MathHelper = MinerWarsMath.MathHelper;\n\n    class MyLightGlare : IDisposable\n    {\n        public static bool EnableLightGlares = true;\n        public const float MAX_GLARE_DISTANCE = 2000;\n\n        #region Enums\n\n        public enum State\n        {\n            IssueOcc,\n            IssueMeasure,\n            WaitOcc,\n            WaitOcc1,\n            WaitOcc2,\n            WaitOcc3,\n            WaitMeasure,\n            WaitMeasure1,\n            WaitMeasure2,\n            WaitMeasure3,\n            CheckOcc,\n            CheckMeasure\n        }\n\n        public enum SizeFunctionEnum\n        {\n            NoChange,\n            IncreasingWithDistance,\n        }\n\n        public enum GlareTypeEnum\n        {\n            /// <summary>\n            /// This is the glare that is dependent on occlusion queries.\n            /// Physically, this phenomenon originates in the lens.\n            /// </summary>\n            Normal,\n\n            /// <summary>\n            /// This is the glare that you see even if the light itself is occluded.\n            /// It gives the impression of scattering in a medium (like fog).\n            /// </summary>\n            Distant,\n        }\n\n        #endregion\n\n        #region Private fields\n\n        private readonly MyLight m_parent;\n\n        // An occlusion query is used to detect when the light source is hidden behind scenery.\n        // !IMPORTANT! Every other frame (m_occlusionMeasurement), we render the occlusion box without depth testing in order to find the\n        // pixelCount (m_occlusionMeasurementResult) for a fully unoccluded object. When doing the actual occlusion test with depth\n        // testing turned on, we divide the final pixel count by m_occlusionMeasurementResult to find out the occlusion ratio.\n        private MyOcclusionQuery m_occlusionQuery;\n        private MyOcclusionQuery m_measurementQuery;\n        private State m_state = State.IssueOcc;\n        private BoundingBox m_occlusionBox;\n        private float m_occlusionRatio = 1; // 0 - fully occluded, 1 - fully visible\n\n        MyRayCastOcclusionJob m_rayCastOcclusionJob = new MyRayCastOcclusionJob();\n        bool m_castingRay;\n\n        public float? Intensity;\n\n        #endregion\n\n        #region Properties\n\n        public Vector3 Position { get { return m_parent.Position; } }\n\n        public GlareTypeEnum Type { get; set; }\n\n        //public bool UseOcclusionQuery { get { return Type == GlareTypeEnum.Normal; } }\n        public bool UseOcclusionQuery { get { return true; } }\n\n        /// <summary>\n        /// Size of the object used for the occlusion query.\n        /// </summary>\n        public float QuerySize { get; set; }\n\n        #endregion\n\n        public MyLightGlare(MyLight light)\n        {\n            m_parent = light;\n            m_occlusionBox = new BoundingBox();\n\n            m_occlusionQuery = MyOcclusionQueries.Get();\n            m_measurementQuery = MyOcclusionQueries.Get();\n        }\n\n        #region Creating and disposing\n\n        public void Dispose()\n        {\n            MyOcclusionQueries.Return(m_occlusionQuery);\n            MyOcclusionQueries.Return(m_measurementQuery);\n        }\n\n        #endregion\n\n        public void Start()\n        {\n            m_castingRay = false;\n        }\n\n        public void Clear()\n        {\n            m_rayCastOcclusionJob.Clear();\n            m_castingRay = false;\n        }\n\n        public void Draw()\n        {\n            if (!EnableLightGlares)\n            {\n                return;\n            }\n\n            Vector3 position = this.Position;\n            Vector3 cameraToLight = MyCamera.Position - position;\n            float distance = cameraToLight.Length();\n            const float maxDistance = MyRenderConstants.MAX_GPU_OCCLUSION_QUERY_DISTANCE;\n\n            bool canBeDiscardedIfTooFar = Type != GlareTypeEnum.Distant;\n            if (canBeDiscardedIfTooFar && distance > maxDistance)\n            {\n                return;\n            }\n\n            // This is absolute maximum for light glares\n            if (distance > MAX_GLARE_DISTANCE)\n            {\n                return;\n            }\n\n            if (UseOcclusionQuery)\n            {\n                float querySizeMultiplier = distance < maxDistance ? 1 : distance / maxDistance;\n\n                bool isFar = distance > maxDistance;\n\n                // Occlusion is calculated only when closer than 200m, further visibility is handled by depth test\n                if(!isFar)\n                {\n                    MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Light glare update occlusion\");\n                    UpdateOcclusion(querySizeMultiplier * QuerySize, isFar);\n                    MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n                }\n            }\n\n            switch (Type)\n            {\n                case GlareTypeEnum.Normal:\n                    DrawNormalGlare(distance, maxDistance, position, cameraToLight);\n                    break;\n                case GlareTypeEnum.Distant:\n                    DrawVolumetricGlare(distance, position);\n                    break;\n                default:\n                    throw new ArgumentOutOfRangeException();\n            }\n        }\n\n        private void DrawNormalGlare(float distance, float maxDistance, Vector3 position, Vector3 cameraToLight)\n        {\n            if (m_occlusionRatio <= MyMwcMathConstants.EPSILON)\n                return;\n\n            var intensity = GetIntensity();\n\n            float alpha = m_occlusionRatio * intensity;\n\n            const int minGlareRadius = 20;\n            const int maxGlareRadius = 40;\n            float radius = MathHelper.Clamp(m_parent.Range, minGlareRadius, maxGlareRadius);\n\n            float drawingRadius = radius;\n\n            cameraToLight = (1.0f / distance) * cameraToLight;\n            float dot = Vector3.Dot(cameraToLight, m_parent.ReflectorDirection);\n            alpha *= MathHelper.Min(1, 6 * dot);\n\n            if (alpha <= MyMwcMathConstants.EPSILON)\n                return;\n\n            if (distance > maxDistance * .5f)\n            {\n                // distance falloff\n                float falloff = (distance - .5f * maxDistance) / (.5f * maxDistance);\n                falloff = 1 - falloff;\n                if (falloff < 0)\n                    falloff = 0;\n                drawingRadius *= falloff;\n                alpha *= falloff;\n            }\n\n            if (drawingRadius <= float.Epsilon)\n                return;\n\n            drawingRadius *= 0.01f * distance;\n            if (drawingRadius < radius)\n                drawingRadius = radius;\n\n            var color = m_parent.Color;\n            color.W = 0;\n\n            MyTransparentGeometry.AddBillboardOriented(\n                MyTransparentMaterialEnum.LightGlare, color * alpha, position,\n                MyCamera.LeftVector, MyCamera.UpVector, drawingRadius);\n        }\n\n        private void DrawVolumetricGlare(float distance, Vector3 position)\n        {\n            var intensity = GetIntensity();\n\n            float alpha = m_occlusionRatio * intensity;\n\n            if (alpha < MyMwcMathConstants.EPSILON)\n                return;\n\n            const int minGlareRadius = 5;\n            const int maxGlareRadius = 150;\n            float radius = MathHelper.Clamp(m_parent.Range, minGlareRadius, maxGlareRadius);\n\n            float drawingRadius = radius;\n\n            Debug.Assert(MyRender.CurrentRenderSetup.LodTransitionBackgroundStart != null, \"lod transition is not set in render setup\");\n            var startFadeout = MyRender.CurrentRenderSetup.LodTransitionBackgroundStart.Value;\n\n            Debug.Assert(MyRender.CurrentRenderSetup.LodTransitionBackgroundEnd != null, \"lod transition is not set in render setup\");\n            var endFadeout = MyRender.CurrentRenderSetup.LodTransitionBackgroundEnd.Value;\n\n            if (distance > startFadeout)\n            {\n                var fade = (distance - startFadeout) / (endFadeout - startFadeout);\n                alpha *= (1 - fade);\n            }\n\n            if (alpha < MyMwcMathConstants.EPSILON)\n                return;\n\n            var color = m_parent.Color;\n            color.W = 0;\n\n            var material = distance > MyRenderConstants.MAX_GPU_OCCLUSION_QUERY_DISTANCE ? MyTransparentMaterialEnum.LightGlare_WithDepth : MyTransparentMaterialEnum.LightGlare;\n\n            MyTransparentGeometry.AddBillboardOriented(\n                material, color * alpha, position,\n                MyCamera.LeftVector, MyCamera.UpVector, drawingRadius);\n        }\n\n        private float GetIntensity()\n        {\n            float intensity;\n\n            if (Intensity.HasValue)\n            {\n                intensity = MathHelper.Clamp(Intensity.Value, 0, 1);\n            }\n            else\n            {\n                var maxParentIntensity = 0.5f * MathHelper.Max(m_parent.Intensity, m_parent.ReflectorIntensity);\n                intensity = MathHelper.Clamp(maxParentIntensity, 0, 1);\n            }\n            return intensity;\n        }\n\n        private void UpdateOcclusion(float querySize, bool rayCast)\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"update occ 1\");\n\n            if (rayCast)\n            {\n                UpdateRayCastOcclusion();\n            }\n            else\n            {\n                m_castingRay = false;\n                UpdateGpuOcclusion(querySize);\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        private void UpdateRayCastOcclusion()\n        {\n            if (!m_castingRay)\n            {\n                Debug.Assert(MyRender.CurrentRenderSetup.CameraPosition != null, \"camera position is not set in render setup\");\n\n                m_rayCastOcclusionJob.Start(\n                    this,\n                    MyRender.CurrentRenderSetup.CameraPosition.Value,\n                    GUI.MyGuiScreenGamePlay.Static.CameraAttachedTo == GUI.MyCameraAttachedToEnum.PlayerMinerShip\n                        ? MySession.PlayerShip\n                        : null,\n                    null\n                    );\n\n                Parallel.Start(m_rayCastOcclusionJob);\n                m_castingRay = true;\n            }\n            else if (m_rayCastOcclusionJob.IsDone)\n            {\n                m_castingRay = false;\n                m_occlusionRatio = m_rayCastOcclusionJob.Visible ? 1 : 0;\n                m_rayCastOcclusionJob.Clear();\n            } \n        }\n\n        private void UpdateGpuOcclusion(float querySize)\n        {\n            switch (m_state)\n            {\n                case State.IssueOcc:\n                    m_occlusionBox.Min = this.Position - new Vector3(querySize);\n                    m_occlusionBox.Max = this.Position + new Vector3(querySize);\n                    IssueOcclusionQuery(m_occlusionQuery, true);\n                    m_state = State.IssueMeasure;\n                    break;\n\n                case State.IssueMeasure:\n                    IssueOcclusionQuery(m_measurementQuery, false);\n                    m_state = State.WaitOcc;\n                    break;\n\n                case State.WaitOcc:\n                    m_state = State.WaitMeasure;\n                    break;\n\n                case State.WaitMeasure:\n                    m_state = State.CheckOcc;\n                    break;\n\n                case State.CheckOcc:\n                    if (m_occlusionQuery.IsComplete)\n                    {\n                        m_state = State.CheckMeasure;\n                    }\n                    break;\n\n                case State.CheckMeasure:\n                    if (m_measurementQuery.IsComplete)\n                    {\n                        m_state = State.IssueOcc;\n                        m_occlusionRatio = CalcRatio();\n                    }\n                    break;\n            }\n        }\n\n        private void IssueOcclusionQuery(MyOcclusionQuery query, bool depthTest)\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Issue query\");\n\n            BlendState previousBlendState = BlendState.Current; ;\n            MyStateObjects.DisabledColorChannels_BlendState.Apply();\n            RasterizerState.CullNone.Apply();\n            DepthStencilState.None.Apply();\n\n            query.Begin();\n\n            //generate and draw bounding box of our renderCell in occlusion query \n            MySimpleObjectDraw.DrawOcclusionBoundingBox(m_occlusionBox, 1.0f, depthTest);\n\n            previousBlendState.Apply();\n\n            query.End();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        private float CalcRatio()\n        {\n            float measPixels = m_measurementQuery.PixelCount;\n            if (measPixels <= 0) measPixels = 1;\n\n            return Math.Min(m_occlusionQuery.PixelCount / measPixels, 1);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/TransparentGeometry/MyMeteorWind.cs",
    "content": "﻿using System;\nusing MinerWarsMath;\n\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.Prefabs;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Utils;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing System.Diagnostics;\nusing MinerWars.AppCode.Game.Entities.Prefabs;\nusing MinerWars.AppCode.Game.World;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing System.Collections.Generic;\nusing MinerWars.AppCode.Game.SolarSystem;\nusing MinerWars.AppCode.Game.TransparentGeometry.Particles;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.AppCode.Game.Explosions;\nusing MinerWars.AppCode.Physics;\nusing MinerWars.AppCode.Game.Models;\n\nnamespace MinerWars.AppCode.Game.Renders\n{\n\n    static class MyMeteorWind\n    {\n        public static bool IsActive;\n        static MySoundCue? m_burningCue;\n\n        private const int minSize = 50;\n        private const int maxSize = 500;\n\n        static MyMeteorWind()\n        {\n            //Render.MyRender.RegisterRenderModule(\"Meteor wind\", Draw, Render.MyRenderStage.PrepareForDraw);\n        }\n\n        public static void LoadInDraw()\n        {\n            MyMwcLog.WriteLine(\"MyMeteorWind.LoadInDraw() - START\");\n            MyMwcLog.IncreaseIndent();\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyMeteorWind::LoadInDraw\");\n\n            List<MyMwcObjectBuilder_StaticAsteroid_TypesEnum> asteroids = new List<MyMwcObjectBuilder_StaticAsteroid_TypesEnum>();\n\n            List<int> sizes = new List<int>();\n            foreach (int size in MyMwcObjectBuilder_StaticAsteroid.AsteroidSizes)\n\t        {\n                if (size >= minSize && size <= maxSize)\n                {\n                    sizes.Add(size);\n                }\n\t        }\n            foreach (int size in sizes)\n            {\n                MyMwcObjectBuilder_Meteor.GetAsteroids(size, MyStaticAsteroidTypeSetEnum.A, asteroids);\n            }\n\n            foreach (var asteroid in asteroids)\n\t        {\n                MyStaticAsteroid.MyStaticAsteroidModels models = MyMeteor.GetModelsFromType(asteroid);\n                PreloadModels(models);\n\t        }\n            \n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyMeteorWind.LoadInDraw() - END\");\n        }\n\n        private static void PreloadModels(MyStaticAsteroid.MyStaticAsteroidModels models)\n        {\n            PreloadModel(models.LOD0);\n            PreloadModel(models.LOD1);\n            PreloadModel(models.LOD2);\n        }\n\n        private static void PreloadModel(MyModelsEnum? myModelsEnum)\n        {\n            if (myModelsEnum == null)\n                return;\n\n            MyModel model = MyModels.GetModelOnlyData(myModelsEnum.Value);\n            model.LoadInDraw();\n            model.PreloadTextures(Managers.LoadingMode.Immediate);\n        }\n\n        public static List<MyMwcVoxelMaterialsEnum> m_fireMeteorMaterials = new List<MyMwcVoxelMaterialsEnum>\n        {\n            //MyMwcVoxelMaterialsEnum.Indestructible_01,\n            //MyMwcVoxelMaterialsEnum.Indestructible_02,\n            //MyMwcVoxelMaterialsEnum.Indestructible_03,\n            //MyMwcVoxelMaterialsEnum.Indestructible_04,\n                        MyMwcVoxelMaterialsEnum.Lava_01,\n        };\n\n\n        public static void UnloadContent()\n        {\n            MyMwcLog.WriteLine(\"MyMeteorWind.UnloadContent - START\");\n            MyMwcLog.IncreaseIndent();\n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyMeteorWind.UnloadContent - END\");\n            // IsActive = false;\n        }\n\n        //  This method will start sun wind. Or if there is one coming, this will reset it so it will start again.\n        public static void Start()\n        {\n            IsActive = true;\n            \n            //m_burningCue = MyAudio.AddCue3D(MySoundCuesEnum.SfxSolarWind, m_initialSunWindPosition, m_directionFromSunNormalized, Vector3.Up, Vector3.Zero);\n\n            const int meteorsCount = 5;\n            //const int frontDistance = 1000;\n            //const int sideDistance = 3000;\n\n            const int minSpeed = 1000;\n            const int maxSpeed = 4000;\n\n            //Vector3 sphereCenter = MyCamera.Position + MyCamera.ForwardVector * frontDistance - MyCamera.LeftVector * sideDistance;\n            Vector3 sphereCenter = MyCamera.Position + MyGuiScreenGamePlay.Static.GetDirectionToSunNormalized() * 10000;\n            //Vector3 windForwardDirection = MyCamera.LeftVector ;\n            \n            int i = 0;\n            while (i < meteorsCount)\n            {\n                //float distance = MyMwcUtils.GetRandomFloat(0, sphereRadius);\n                //Vector3 position = sphereCenter + MyMwcUtils.GetRandomVector3Normalized() * new Vector3(distance, distance, distance);\n                \n                //Vector3 meteorDirection = (windForwardDirection + (MyMwcUtils.GetRandomVector3Normalized() * 0.05f)) * MyMwcUtils.GetRandomInt(minSpeed, maxSpeed);\n                //Vector3 meteorDirection = -MyGuiScreenGamePlay.Static.GetDirectionToSunNormalized();// MyMwcUtils.GetRandomVector3HemisphereNormalized(-MyGuiScreenGamePlay.Static.GetDirectionToSunNormalized());\n                Vector3 meteorDirection = MyMwcUtils.GetRandomVector3HemisphereNormalized(-MyGuiScreenGamePlay.Static.GetDirectionToSunNormalized());\n                Vector3 position = sphereCenter + meteorDirection * MyMwcUtils.GetRandomInt(100, 5000);\n\n                //float normalizedDistance = distance / sphereRadius;\n\n                float size = MyMwcUtils.GetRandomInt(minSize, maxSize);\n\n\n                MyLine line = new MyLine(position, position + meteorDirection * 100);\n                MyIntersectionResultLineBoundingSphere? result = MyEntities.GetIntersectionWithLineAndBoundingSphere(ref line, null, null, 1, null, true);\n                if (result != null)\n                {   //Do not create meteors colliding with base\n                    if (!(result.Value.PhysObject is MyMeteor))\n                       continue;\n                }\n\n                Matrix worldMatrix = Matrix.CreateFromAxisAngle(MyMwcUtils.GetRandomVector3Normalized(), MyMwcUtils.GetRandomFloat(0, MathHelper.Pi));\n                worldMatrix.Translation = position;\n\n                MyMeteor meteor = MyMeteor.GenerateMeteor(size, worldMatrix, position, m_fireMeteorMaterials[MyMwcUtils.GetRandomInt(0, m_fireMeteorMaterials.Count)]);\n\n\n                float speed = MyMwcUtils.GetRandomInt(minSpeed, maxSpeed);\n\n\n                meteor.Start(meteorDirection * speed, MyMwcUtils.GetRandomFloat(0, 1) > 0.92f ? 101 : 100);\n\n                i++;\n            }\n        }\n\n\n\n        public static void Update()\n        {\n            //  Update only if sun wind is active\n            if (IsActive == false) return;\n        }\n\n\n\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/TransparentGeometry/MyNuclearExplosion.cs",
    "content": "﻿#region Using\nusing System;\nusing System.Collections.Generic;\nusing MinerWarsMath;\n\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.World;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Render;\nusing MinerWars.CommonLIB.AppCode.Generics;\n#endregion\n\n\nnamespace MinerWars.AppCode.Game.TransparentGeometry\n{\n    static class MyNuclearExplosion\n    {\n        class ExplosionLine\n        {\n            public int ActualTime;\n            public Vector3 ActualDir;\n\n            public int TotalTime;\n            public Vector3 StartDir;\n            public Vector3 EndDir;\n        }\n\n        enum NuclearState\n        {\n            INACTIVE,\n            FADE_IN,\n            FLASH,\n            FLASH_IN,\n            FADE_OUT,\n        }\n\n        public static event Action OnExplosionMax;\n        public static event Action OnExplosionDone;\n\n        static readonly float FADE_IN_TIME = 15000;\n        static readonly float FLASH_TIME = 1000;\n        static readonly float FLASH_IN_TIME = 5000;\n        static readonly float FADE_OUT_TIME = 2000;\n        static readonly float MAX_FLASH_INTENSITY = 10;\n\n        static int m_StartMilliseconds;\n        static float m_flashIntensity; //0-1\n        static NuclearState m_State = NuclearState.INACTIVE;\n\n        static Vector3 m_explosionCenter;\n        static MySoundCue? m_burningCue;\n        static float m_radius;\n        static bool m_godRaysState;\n\n        static MyObjectsPool<ExplosionLine> m_preallocatedExplosionLines = new MyObjectsPool<ExplosionLine>(20);   \n\n        static MyNuclearExplosion()\n        {\n            MyRender.RegisterRenderModule(MyRenderModuleEnum.NuclearExplosion, \"Nuclear explosion\", Draw, MyRenderStage.PrepareForDraw, true);\n        }\n\n        public static void MakeExplosion(Vector3 explosionCenter)\n        {\n            m_explosionCenter = explosionCenter;\n\n            if (m_State == NuclearState.INACTIVE || m_State == NuclearState.FLASH_IN)\n            {\n                m_StartMilliseconds = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n                m_State = NuclearState.FADE_IN;\n\n                m_burningCue = MyAudio.AddCue3D(MySoundCuesEnum.SfxSolarWind, m_explosionCenter, -MyCamera.ForwardVector, Vector3.Up, Vector3.Zero);\n                MyAudio.AddCue3D(MySoundCuesEnum.SfxNuclearExplosion, m_explosionCenter, -MyCamera.ForwardVector, Vector3.Up, Vector3.Zero);\n                m_radius = 100;\n\n                MinerWars.AppCode.Game.TransparentGeometry.Particles.MyParticleEffect explosion = MinerWars.AppCode.Game.TransparentGeometry.Particles.MyParticlesManager.CreateParticleEffect((int)MyParticleEffectsIDEnum.Explosion_Huge);\n                explosion.WorldMatrix = Matrix.CreateWorld(m_explosionCenter, MyCamera.ForwardVector, MyCamera.UpVector);\n                explosion.UserScale = 3;\n                explosion.AutoDelete = true;\n\n                MyPostProcessGodRays godRays = (MyPostProcessGodRays)MyRender.GetPostProcess(MyPostProcessEnum.GodRays);\n                m_godRaysState = godRays.Enabled;\n                godRays.Enabled = true;\n                MySector.GodRaysProperties.Enabled = true;\n            }\n            else\n            if (m_State == NuclearState.FLASH)\n            {\n                m_StartMilliseconds = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n            }\n        }\n\n\n        /// <summary>\n        /// Render method is called directly by renderer. Depending on stage, post process can do various things \n        /// </summary>\n        /// <param name=\"postProcessStage\">Stage indicating in which part renderer currently is.</param>public override void RenderAfterBlendLights()\n        public static void Draw()\n        {\n            switch (m_State)\n            {\n                case NuclearState.FADE_IN:\n                    m_flashIntensity = (MyMinerGame.TotalGamePlayTimeInMilliseconds - m_StartMilliseconds) / FADE_IN_TIME;\n                    if (m_flashIntensity >= 1.0f)\n                    {\n                        m_State = NuclearState.FLASH;\n                        m_StartMilliseconds = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n                    }\n                    break;\n\n                case NuclearState.FLASH:\n                    m_flashIntensity = 1.0f;\n                    if (MyMinerGame.TotalGamePlayTimeInMilliseconds > (m_StartMilliseconds + FLASH_TIME))\n                    {\n                        m_StartMilliseconds = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n                        m_State = NuclearState.FLASH_IN;\n                    }\n                    break;\n\n                case NuclearState.FLASH_IN:\n                    //m_flashIntensity = 1.0f - ((MyMinerGame.TotalGamePlayTimeInMilliseconds - m_StartMilliseconds) / 2000.0f/*MyFlashBombConstants.FADE_OUT_TIME*/);\n                    m_flashIntensity = 1 + 10*(MyMinerGame.TotalGamePlayTimeInMilliseconds - m_StartMilliseconds) / FLASH_IN_TIME;\n                    if (m_flashIntensity >= 11.0f)\n                    {\n                        if (m_burningCue != null && m_burningCue.Value.IsPlaying)\n                        {\n                            m_burningCue.Value.Stop(SharpDX.XACT3.StopFlags.Release);\n                        }\n\n                        if (OnExplosionMax != null)\n                        {\n                            OnExplosionMax();\n                        }\n\n                        m_State = NuclearState.FADE_OUT;\n                        m_StartMilliseconds = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n                    }\n                    break;\n\n                case NuclearState.FADE_OUT:\n                    m_flashIntensity = 1 + MAX_FLASH_INTENSITY * (1.0f - ((MyMinerGame.TotalGamePlayTimeInMilliseconds - m_StartMilliseconds) /  FADE_OUT_TIME));\n                    if (m_flashIntensity <= 0)\n                    {\n                        m_StartMilliseconds = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n                        m_State = NuclearState.INACTIVE;\n\n                        MyPostProcessGodRays godRays = (MyPostProcessGodRays)MyRender.GetPostProcess(MyPostProcessEnum.GodRays);\n                        godRays.Enabled = m_godRaysState;\n                        MySector.GodRaysProperties.Enabled = false;\n\n                        m_preallocatedExplosionLines.DeallocateAll();\n                        m_flashIntensity = 0;\n\n                        if (OnExplosionDone != null)\n                            OnExplosionDone();\n                    }\n                    break;\n            }\n\n            if (m_State != NuclearState.INACTIVE)\n            {\n                MyRender.Sun.Direction = Vector3.Normalize(MyCamera.Position - m_explosionCenter);\n                MyRender.Sun.Intensity = 10 * m_flashIntensity;\n                MyRender.Sun.Color = Vector4.One;\n\n                MinerWars.AppCode.Game.Managers.Session.MySession.PlayerShip.DoDamage(m_flashIntensity * MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS, 0, 0, MyDamageType.Radioactivity, MyAmmoType.None, null);\n                MinerWars.AppCode.Game.Managers.Session.MySession.PlayerShip.IncreaseHeadShake(MathHelper.Clamp(2f * m_flashIntensity, 3, 10));\n                \n                UpdateExplosionLines();\n\n                MyTransparentGeometry.AddPointBillboard(MyTransparentMaterialEnum.SunDisk, Vector4.One, m_explosionCenter, Math.Max(m_flashIntensity * 5000, 1), 0);\n\n                foreach (LinkedListNode<ExplosionLine> explosionLine in m_preallocatedExplosionLines)\n                {\n                    MyTransparentGeometry.AddLineBillboard(MyTransparentMaterialEnum.Smoke_square_unlit, Vector4.One, m_explosionCenter, explosionLine.Value.ActualDir, 10000, 100);\n                }\n\n                MySector.GodRaysProperties.Exposition = 0.5f * m_flashIntensity; //0.077f\n                MySector.GodRaysProperties.Weight = 2.5f * m_flashIntensity;      //1.27f\n            }\n        }\n\n        static void UpdateExplosionLines()\n        {\n            foreach (LinkedListNode<ExplosionLine> explosionLine in m_preallocatedExplosionLines)\n            {\n                explosionLine.Value.ActualTime += MyConstants.PHYSICS_STEP_SIZE_IN_MILLISECONDS;\n                if (explosionLine.Value.ActualTime > explosionLine.Value.TotalTime)\n                {\n                    m_preallocatedExplosionLines.MarkForDeallocate(explosionLine);\n                    continue;\n                }\n\n                explosionLine.Value.ActualDir = Vector3.Lerp(explosionLine.Value.StartDir, explosionLine.Value.EndDir, explosionLine.Value.ActualTime / (float)explosionLine.Value.TotalTime);\n            }\n\n            m_preallocatedExplosionLines.DeallocateAllMarked();\n            if (m_State == NuclearState.FADE_IN && MyMwcUtils.GetRandomFloat(0, 1) > 0.75f)\n            {\n                ExplosionLine line = m_preallocatedExplosionLines.Allocate(true);\n                if (line != null)\n                {\n                    line.TotalTime = 5000;\n                    line.ActualTime = 0;\n                    line.StartDir = MyMwcUtils.GetRandomVector3Normalized();\n\n                    Vector3 rotDir = MyMwcUtils.GetRandomVector3Normalized();\n                    Matrix rotMatrix = Matrix.CreateFromAxisAngle(rotDir, 0.3f);\n                    line.EndDir = Vector3.Transform(line.StartDir, rotMatrix);\n                }\n            }\n        }\n\n        public static void Unload()\n        {\n            m_State = NuclearState.INACTIVE;\n            m_preallocatedExplosionLines.DeallocateAll();\n            m_flashIntensity = 0;\n        }\n\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/TransparentGeometry/MyParticle.cs",
    "content": "﻿using MinerWarsMath;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils.Utils;\nusing KeenSoftwareHouse.Library.Trace;\nusing System;\n\n//  This is unified particle class. It can be used for point/billboard particles, or for line/polyline particles.\n//  Reason I put it into one class is that their are similar but most important is, that I need to have only\n//  one preallocated list of particles. Ofcourse I will waste a lot of value per particle by storing parameters I\n//  don't need for that particular particle, but at the end, having two or three buffers can be bigger wasting.\n\nnamespace MinerWars.AppCode.Game.TransparentGeometry\n{\n    enum MyParticleType : byte\n    {\n        POINT_PARTICLE,\n        LINE_PARTICLE,\n        POINT_PARTICLE_RELATIVE_TO_PHYS_OBJECT,\n        LINE_PARTICLE_RELATIVE_TO_PHYS_OBJECT_COCKPIT_GLASS,\n        LINE_PARTICLE_RELATIVE_TO_PHYS_OBJECT\n    }\n\n    class MyParticle\n    {\n        //  Parameters common for all type of particles\n        int m_lifespanInMiliseconds;            //  This is the time particle will live (in miliseconds)\n        Vector4 m_startColor;\n        Vector4 m_endColor;\n        MyParticleType m_type;\n        MyTransparentMaterialEnum m_materialEnum;\n        Vector3 m_velocity;\n        Vector3 m_startPosition;\n        int m_timeStarted;\n        \n        //  Parameters specific for point-particles\n        float m_pointSpecific_startAngle;\n        float m_pointSpecific_rotationSpeed;\n        float m_pointSpecific_startRadius;\n        float m_pointSpecific_endRadius;\n\n        //  Parameters specific for line-particles\n        Vector3 m_lineSpecific_directionNormalized;\n        float m_lineSpecific_thickness;\n        float m_lineSpecific_startLength;\n        float m_lineSpecific_endLength;\n\n        //  Parameters specific for 'relative to phys object' particles (line or point)\n        MyEntity m_physObject;\n\n\n        //  Parameter-less constructor - because particles are stored in object pool\n        public MyParticle()\n        {\n            //  IMPORTANT: This class isn't realy inicialized by constructor, but by Start()\n            //  So don't initialize members here, do it in Start()\n        }\n\n        //  This method initializes parameters common for all type of particle\n        void Start(MyTransparentMaterialEnum material, int lifespanInMiliseconds,\n            Vector3 startPosition, Vector3 velocity, Vector4 startColor, Vector4 endColor)\n        {\n            m_timeStarted = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n            m_lifespanInMiliseconds = lifespanInMiliseconds;\n            m_startPosition = startPosition;\n            m_velocity = velocity;\n            m_startColor = startColor;\n            m_endColor = endColor;\n            m_materialEnum = material;\n        }\n\n        //  This method realy initiates/starts the particle\n        //  IMPORTANT: Direction vector must be normalized!\n        public void StartPointParticle(\n            MyTransparentMaterialEnum material, int lifespanInMiliseconds, Vector3 startPosition, Vector3 velocity, \n            Vector4 startColor, Vector4 endColor, float startAngle, float startRadius, float endRadius, float rotationSpeed)\n        {\n            Start(material, lifespanInMiliseconds, startPosition, velocity, startColor, endColor);\n\n            m_type = MyParticleType.POINT_PARTICLE;\n            m_pointSpecific_startAngle = startAngle;\n            m_pointSpecific_startRadius = startRadius;\n            m_pointSpecific_endRadius = endRadius;\n            m_pointSpecific_rotationSpeed = rotationSpeed;\n        }\n        \n        //  This method realy initiates/starts the particle\n        //  IMPORTANT: Direction vector must be normalized!\n        public void StartPointParticleRelativeToPhysObject(\n            MyTransparentMaterialEnum material, int lifespanInMiliseconds, Vector3 startPosition, Vector3 velocity, \n            Vector4 startColor, Vector4 endColor, float startAngle, float startRadius, float endRadius, float rotationSpeed, \n            MyEntity physObject)\n        {\n            Start(material, lifespanInMiliseconds, startPosition, velocity, startColor, endColor);\n\n            m_type = MyParticleType.POINT_PARTICLE_RELATIVE_TO_PHYS_OBJECT;\n            m_pointSpecific_startAngle = startAngle;\n            m_pointSpecific_startRadius = startRadius;\n            m_pointSpecific_endRadius = endRadius;\n            m_pointSpecific_rotationSpeed = rotationSpeed;\n\n            m_physObject = physObject;\n        }\n\n        //  This method realy initiates/starts the particle\n        //  IMPORTANT: Direction vector must be normalized!\n        public void StartLineParticle(\n            MyTransparentMaterialEnum material, int lifespanInMiliseconds, Vector3 startPosition, Vector3 velocity, \n            Vector4 startColor, Vector4 endColor, Vector3 directionNormalized, float thickness, float startLength, float endLength)\n        {\n            Start(material, lifespanInMiliseconds, startPosition, velocity, startColor, endColor);\n\n            m_type = MyParticleType.LINE_PARTICLE;\n            m_lineSpecific_directionNormalized = directionNormalized;\n            m_lineSpecific_thickness = thickness;\n            m_lineSpecific_startLength = startLength;\n            m_lineSpecific_endLength = endLength;\n        }\n\n        //  This method realy initiates/starts the particle\n        //  IMPORTANT: Direction vector must be normalized!\n        public void StartLineParticleRelativeToPhysObjectCockpitGlass(\n            MyTransparentMaterialEnum material, int lifespanInMiliseconds, Vector3 startPosition, Vector3 velocity, \n            Vector4 startColor, Vector4 endColor, Vector3 directionNormalized, float thickness, float startLength, float endLength,  \n            MyEntity physObject)\n        {\n            Start(material, lifespanInMiliseconds, startPosition, velocity, startColor, endColor);\n\n            m_type = MyParticleType.LINE_PARTICLE_RELATIVE_TO_PHYS_OBJECT_COCKPIT_GLASS;\n            m_lineSpecific_directionNormalized = directionNormalized;\n            m_lineSpecific_thickness = thickness;\n            m_lineSpecific_startLength = startLength;\n            m_lineSpecific_endLength = endLength;\n            m_physObject = physObject;\n        }\n\n        //  This method realy initiates/starts the particle\n        //  IMPORTANT: Direction vector must be normalized!\n        public void StartLineParticleRelativeToPhysObject(\n            MyTransparentMaterialEnum material, int lifespanInMiliseconds, Vector3 startPosition, Vector3 velocity,\n            Vector4 startColor, Vector4 endColor, Vector3 directionNormalized, float thickness, float startLength, float endLength,  \n            MyEntity physObject)\n        {\n            Start(material, lifespanInMiliseconds, startPosition, velocity, startColor, endColor);\n\n            m_type = MyParticleType.LINE_PARTICLE_RELATIVE_TO_PHYS_OBJECT;\n            m_lineSpecific_directionNormalized = directionNormalized;\n            m_lineSpecific_thickness = thickness;\n            m_lineSpecific_startLength = startLength;\n            m_lineSpecific_endLength = endLength;\n            m_physObject = physObject;\n        }\n\n        public MyParticleType GetParticleType()\n        {\n            return m_type;\n        }\n\n        //  Update position, check collisions, etc. and draw if particle still lives.\n        //  Return false if particle dies/timeouts in this tick.\n        public bool Draw(MyBillboard billboard)\n        {\n            //  Check for timeout\n            int elapsedMiliseconds = MyMinerGame.TotalGamePlayTimeInMilliseconds - m_timeStarted;\n            if (elapsedMiliseconds >= m_lifespanInMiliseconds) return false;\n\n            //  This time is scaled according to planned lifespan of the particle\n            float normalizedTimeElapsed = (float)elapsedMiliseconds / (float)m_lifespanInMiliseconds;\n\n            MyQuad quad = new MyQuad();\n            Vector3 actualPosition;\n\n            if (m_type == MyParticleType.LINE_PARTICLE)\n            {\n                actualPosition = m_startPosition;\n                actualPosition += m_velocity * ((float)elapsedMiliseconds / 1000.0f);\n            }\n            else if (m_type == MyParticleType.LINE_PARTICLE_RELATIVE_TO_PHYS_OBJECT)\n            {\n                Matrix worldMatrix = m_physObject.WorldMatrix;\n                actualPosition = MyUtils.GetTransform(ref m_startPosition, ref worldMatrix);\n                actualPosition += m_velocity * ((float)elapsedMiliseconds / 1000.0f);\n            }\n            else if (m_type == MyParticleType.LINE_PARTICLE_RELATIVE_TO_PHYS_OBJECT_COCKPIT_GLASS)\n            {\n                actualPosition = MyUtils.GetTransform(ref m_startPosition, ref ((MySmallShip)m_physObject).PlayerHeadForCockpitInteriorWorldMatrix);\n                actualPosition += m_velocity * ((float)elapsedMiliseconds / 1000.0f);\n            }            \n            else if (m_type == MyParticleType.POINT_PARTICLE)\n            {\n                actualPosition = m_startPosition + m_velocity * ((float)elapsedMiliseconds / 1000.0f);\n            }\n            else if (m_type == MyParticleType.POINT_PARTICLE_RELATIVE_TO_PHYS_OBJECT)\n            {\n                Matrix worldMatrix = m_physObject.WorldMatrix;\n                actualPosition = MyUtils.GetTransform(ref m_startPosition, ref worldMatrix);\n                actualPosition += m_velocity * ((float)elapsedMiliseconds / 1000.0f);\n            }\n            else\n            {\n                throw new MyMwcExceptionApplicationShouldNotGetHere();\n            }\n\n            // Distance for sorting\n            Vector3 campos = MyCamera.Position;\n            Vector3.DistanceSquared(ref campos, ref actualPosition, out billboard.DistanceSquared);\n\n            // If distance to camera is really small don't draw it.\n            if (billboard.DistanceSquared <= MyMwcMathConstants.EPSILON)\n            {\n                return true;\n            }\n\n            if ((m_type == MyParticleType.LINE_PARTICLE) ||\n                (m_type == MyParticleType.LINE_PARTICLE_RELATIVE_TO_PHYS_OBJECT) ||\n                (m_type == MyParticleType.LINE_PARTICLE_RELATIVE_TO_PHYS_OBJECT_COCKPIT_GLASS))\n            {\n                float actualLength = MathHelper.Lerp(m_lineSpecific_startLength, m_lineSpecific_endLength, normalizedTimeElapsed);\n\n                MyPolyLine polyLine;\n                polyLine.LineDirectionNormalized = m_lineSpecific_directionNormalized;\n                polyLine.Point0 = actualPosition;\n                polyLine.Point1 = actualPosition + polyLine.LineDirectionNormalized * actualLength;\n                polyLine.Thickness = m_lineSpecific_thickness;\n\n                //  Billboard vertexes\n                MyUtils.GetPolyLineQuad(out quad, ref polyLine);\n            }\n            else if ((m_type == MyParticleType.POINT_PARTICLE) || (m_type == MyParticleType.POINT_PARTICLE_RELATIVE_TO_PHYS_OBJECT))\n            {\n                //  Billboard vertexes\n                float actualRadius = MathHelper.Lerp(m_pointSpecific_startRadius, m_pointSpecific_endRadius, normalizedTimeElapsed);\n                float angle = m_pointSpecific_startAngle + normalizedTimeElapsed * m_pointSpecific_rotationSpeed;\n                MyUtils.GetBillboardQuadRotated(billboard, ref actualPosition, actualRadius, angle);\n            }\n            else\n            {\n                throw new MyMwcExceptionApplicationShouldNotGetHere();\n            }\n\n            //  Color and alpha depend on time\n            Vector4 color;\n            color.X = MathHelper.Lerp(m_startColor.X, m_endColor.X, normalizedTimeElapsed);\n            color.Y = MathHelper.Lerp(m_startColor.Y, m_endColor.Y, normalizedTimeElapsed);\n            color.Z = MathHelper.Lerp(m_startColor.Z, m_endColor.Z, normalizedTimeElapsed);\n            color.W = MathHelper.Lerp(m_startColor.W, m_endColor.W, normalizedTimeElapsed);\n            //billboard.Color.W *= 1.0f - normalizedTimeElapsed;\n            //billboard.Color.W *= 1 - (float)Math.Pow(normalizedTimeElapsed, 2);            \n            //billboard.Color.W *= normalizedTimeElapsed * (1 - normalizedTimeElapsed) * (1 - normalizedTimeElapsed) * 6.7f;\n\n            billboard.Start(ref quad, m_materialEnum, ref color, ref m_startPosition);\n\n            //  Yes, draw this particle\n            return true;\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/TransparentGeometry/MyParticleEffects.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Physics;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Explosions;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Entities.Weapons;\nusing MinerWars.AppCode.Game.TransparentGeometry.Particles;\n\nnamespace MinerWars.AppCode.Game.TransparentGeometry\n{\n    static class MyParticleEffects\n    {\n        static Dictionary<MyEntity, Dictionary<int, MyParticleEffect>> m_hitParticles = new Dictionary<MyEntity, Dictionary<int, MyParticleEffect>>(64);\n\n\n        public static readonly MyCustomHitParticlesMethod DelegateForCreateExplosiveHitParticles = CreateExplosiveHitParticles;\n        public static readonly MyCustomHitParticlesMethod DelegateForCreateBiochemHitParticles = CreateBiochemHitParticles;\n        public static readonly MyCustomHitParticlesMethod DelegateForCreateEMPHitParticles = CreateEMPHitParticles;\n        public static readonly MyCustomHitParticlesMethod DelegateForCreateBasicHitParticles = CreateBasicHitParticles;\n        public static readonly MyCustomHitParticlesMethod DelegateForCreatePiercingHitParticles = CreatePiercingHitParticles;\n\n        public static readonly MyCustomHitParticlesMethod DelegateForCreateAutocannonBasicHitParticles = CreateBasicHitAutocannonParticles;\n        public static readonly MyCustomHitParticlesMethod DelegateForCreateAutocannonBiochemHitParticles = CreateChemicalHitAutocannonParticles;\n        public static readonly MyCustomHitParticlesMethod DelegateForCreateAutocannonEMPHitParticles = CreateEMPHitAutocannonParticles;\n        public static readonly MyCustomHitParticlesMethod DelegateForCreateAutocannonExplosiveHitParticles = CreateExplosiveHitAutocannonParticles;\n        public static readonly MyCustomHitParticlesMethod DelegateForCreateAutocannonPiercingHitParticles = CreatePiercingHitAutocannonParticles;\n        public static readonly MyCustomHitParticlesMethod DelegateForCreateAutocannonHighSpeedHitParticles = CreateHighSpeedHitAutocannonParticles;\n\n        public static readonly MyCustomHitMaterialMethod DelegateForCreateHitMaterialParticles = CreateHitMaterialParticles;\n        public static readonly MyCustomHitMaterialMethod DelegateForCreateAutocannonHitMaterialParticles = CreateAutocannonHitMaterialParticles;\n\n        public static void GenerateMuzzleFlash(Vector3 position, Vector3 dir, float radius, float length, bool near = false)\n        {\n            float angle = MyMwcUtils.GetRandomFloat(0, MathHelper.PiOver2);\n\n            float colorComponent = 1.3f;\n            Vector4 color = new Vector4(colorComponent, colorComponent, colorComponent, 1);\n\n            MyTransparentGeometry.AddLineBillboard(MyTransparentMaterialEnum.MuzzleFlashMachineGunSide, color, position,\n                dir, length * 2, 0.3f, 0, near);\n            MyTransparentGeometry.AddPointBillboard(MyTransparentMaterialEnum.MuzzleFlashMachineGunFront, color, position, radius, angle, 0, false, near);\n        }\n\n        //  Create smoke and debris particle at the place of voxel/model hit\n        public static void CreateCollisionParticles(Vector3 hitPoint, Vector3 direction, bool doSmoke, bool doSparks)\n        {\n            Matrix dirMatrix = MyMath.MatrixFromDir(direction);\n            if (doSmoke)\n            {\n                MyParticleEffect effect = MyParticlesManager.CreateParticleEffect((int)MyParticleEffectsIDEnum.Collision_Smoke);\n                effect.WorldMatrix = Matrix.CreateWorld(hitPoint, dirMatrix.Forward, dirMatrix.Up);\n            }\n            if (doSparks)\n            {\n                MyParticleEffect effect = MyParticlesManager.CreateParticleEffect((int)MyParticleEffectsIDEnum.Collision_Sparks);\n                effect.WorldMatrix = Matrix.CreateWorld(hitPoint, dirMatrix.Forward, dirMatrix.Up);\n            }\n        }\n\n        //  Create smoke and debris particle at the place of voxel/model hit\n        static void CreateBasicHitParticles(ref Vector3 hitPoint, ref Vector3 normal, ref Vector3 direction, MyEntity physObject, MyEntity weapon, MyEntity ownerEntity = null)\n        {\n            Vector3 reflectedDirection = Vector3.Reflect(direction, normal);\n            MyUtilRandomVector3ByDeviatingVector randomVector = new MyUtilRandomVector3ByDeviatingVector(reflectedDirection);\n\n            if (MyCamera.GetDistanceWithFOV(hitPoint) < 200)\n            {\n                MyParticleEffect effect = MyParticlesManager.CreateParticleEffect((int)MyParticleEffectsIDEnum.Hit_BasicAmmo);\n                Matrix dirMatrix = MyMath.MatrixFromDir(reflectedDirection);\n                effect.WorldMatrix = Matrix.CreateWorld(hitPoint, dirMatrix.Forward, dirMatrix.Up);\n            }\n        }\n\n        static MyParticleEffect GetEffectForWeapon(MyEntity weapon, int effectID)\n        {\n            Dictionary<int, MyParticleEffect> effects;\n            m_hitParticles.TryGetValue(weapon, out effects);\n            if (effects == null)\n            {\n                effects = new Dictionary<int, MyParticleEffect>();\n                m_hitParticles.Add(weapon, effects);\n            }\n\n            MyParticleEffect effect;\n            effects.TryGetValue(effectID, out effect);\n\n            if (effect == null)\n            {\n                effect = MyParticlesManager.CreateParticleEffect(effectID);\n                effects.Add(effectID, effect);\n                effect.Tag = weapon;\n                effect.OnDelete += new EventHandler(effect_OnDelete);\n            }\n            else\n            {\n                effect.Restart();\n            }\n\n            return effect;\n        }\n\n        static void effect_OnDelete(object sender, EventArgs e)\n        {\n            MyParticleEffect effect = (MyParticleEffect)sender;\n            MyEntity weapon = (MyEntity)effect.Tag;\n            Dictionary<int, MyParticleEffect> effects = m_hitParticles[weapon];\n            effects.Remove(effect.GetID());\n            if (effects.Count == 0)\n                m_hitParticles.Remove(weapon);\n        }\n\n        //  Create smoke and debris particle at the place of voxel/model hit\n        static void CreateBasicHitAutocannonParticles(ref Vector3 hitPoint, ref Vector3 normal, ref Vector3 direction, MyEntity physObject, MyEntity weapon, MyEntity ownerEntity = null)\n        {\n            MyParticleEffect effect = GetEffectForWeapon(weapon, (int)MyParticleEffectsIDEnum.Hit_AutocannonBasicAmmo);\n\n            Vector3 reflectedDirection = Vector3.Reflect(direction, normal);\n            MyUtilRandomVector3ByDeviatingVector randomVector = new MyUtilRandomVector3ByDeviatingVector(reflectedDirection);\n            Matrix dirMatrix = MyMath.MatrixFromDir(reflectedDirection);\n            effect.WorldMatrix = Matrix.CreateWorld(hitPoint, dirMatrix.Forward, dirMatrix.Up);\n        }       \n\n        //  Create smoke and debris particle at the place of voxel/model hit\n        static void CreateHighSpeedHitAutocannonParticles(ref Vector3 hitPoint, ref Vector3 normal, ref Vector3 direction, MyEntity physObject, MyEntity weapon, MyEntity ownerEntity = null)\n        {\n            Vector3 reflectedDirection = Vector3.Reflect(direction, normal);\n            MyUtilRandomVector3ByDeviatingVector randomVector = new MyUtilRandomVector3ByDeviatingVector(reflectedDirection);\n\n            MyParticleEffect effect = GetEffectForWeapon(weapon, (int)MyParticleEffectsIDEnum.Hit_AutocannonHighSpeedAmmo);\n\n            Matrix dirMatrix = MyMath.MatrixFromDir(reflectedDirection);\n            effect.WorldMatrix = Matrix.CreateWorld(hitPoint, dirMatrix.Forward, dirMatrix.Up);\n        }\n\n        //  Create smoke and debris particle at the place of voxel/model hit\n        static void CreateExplosiveHitAutocannonParticles(ref Vector3 hitPoint, ref Vector3 normal, ref Vector3 direction, MyEntity physObject, MyEntity weapon, MyEntity ownerEntity = null)\n        {\n            Vector3 reflectedDirection = Vector3.Reflect(direction, normal);\n            MyUtilRandomVector3ByDeviatingVector randomVector = new MyUtilRandomVector3ByDeviatingVector(reflectedDirection);\n\n            MyParticleEffect effect = GetEffectForWeapon(weapon, (int)MyParticleEffectsIDEnum.Hit_AutocannonExplosiveAmmo);\n\n            Matrix dirMatrix = MyMath.MatrixFromDir(reflectedDirection);\n            effect.WorldMatrix = Matrix.CreateWorld(hitPoint, dirMatrix.Forward, dirMatrix.Up);\n        }\n\n        //  Create smoke and debris particle at the place of voxel/model hit\n        static void CreateChemicalHitAutocannonParticles(ref Vector3 hitPoint, ref Vector3 normal, ref Vector3 direction, MyEntity physObject, MyEntity weapon, MyEntity ownerEntity = null)\n        {\n            Vector3 reflectedDirection = Vector3.Reflect(direction, normal);\n            MyUtilRandomVector3ByDeviatingVector randomVector = new MyUtilRandomVector3ByDeviatingVector(reflectedDirection);\n\n            MyParticleEffect effect = GetEffectForWeapon(weapon, (int)MyParticleEffectsIDEnum.Hit_AutocannonChemicalAmmo);\n            Matrix dirMatrix = MyMath.MatrixFromDir(reflectedDirection);\n            effect.WorldMatrix = Matrix.CreateWorld(hitPoint, dirMatrix.Forward, dirMatrix.Up);\n        }\n\n        //  Create smoke and debris particle at the place of voxel/model hit\n        static void CreateEMPHitAutocannonParticles(ref Vector3 hitPoint, ref Vector3 normal, ref Vector3 direction, MyEntity physObject, MyEntity weapon, MyEntity ownerEntity = null)\n        {\n            Vector3 reflectedDirection = Vector3.Reflect(direction, normal);\n            MyUtilRandomVector3ByDeviatingVector randomVector = new MyUtilRandomVector3ByDeviatingVector(reflectedDirection);\n\n            MyParticleEffect effect = GetEffectForWeapon(weapon, (int)MyParticleEffectsIDEnum.Hit_AutocannonEMPAmmo);\n            Matrix dirMatrix = MyMath.MatrixFromDir(reflectedDirection);\n            effect.WorldMatrix = Matrix.CreateWorld(hitPoint, dirMatrix.Forward, dirMatrix.Up);\n        }\n\n        //  Create smoke and debris particle at the place of voxel/model hit\n        static void CreatePiercingHitAutocannonParticles(ref Vector3 hitPoint, ref Vector3 normal, ref Vector3 direction, MyEntity physObject, MyEntity weapon, MyEntity ownerEntity = null)\n        {\n            Vector3 reflectedDirection = Vector3.Reflect(direction, normal);\n            MyUtilRandomVector3ByDeviatingVector randomVector = new MyUtilRandomVector3ByDeviatingVector(reflectedDirection);\n\n            MyParticleEffect effect = GetEffectForWeapon(weapon, (int)MyParticleEffectsIDEnum.Hit_AutocannonPiercingAmmo);\n            Matrix dirMatrix = MyMath.MatrixFromDir(reflectedDirection);\n            effect.WorldMatrix = Matrix.CreateWorld(hitPoint, dirMatrix.Forward, dirMatrix.Up);\n        }\n\n        //  Create smoke and debris particle at the place of voxel/model hit\n        static void CreatePiercingHitParticles(ref Vector3 hitPoint, ref Vector3 normal, ref Vector3 direction, MyEntity physObject, MyEntity weapon, MyEntity ownerEntity = null)\n        {\n            Vector3 reflectedDirection = Vector3.Reflect(direction, normal);\n            MyUtilRandomVector3ByDeviatingVector randomVector = new MyUtilRandomVector3ByDeviatingVector(reflectedDirection);\n\n            MyParticleEffect effect = GetEffectForWeapon(weapon, (int)MyParticleEffectsIDEnum.Hit_PiercingAmmo);\n            Matrix dirMatrix = MyMath.MatrixFromDir(reflectedDirection);\n            effect.WorldMatrix = Matrix.CreateWorld(hitPoint, dirMatrix.Forward, dirMatrix.Up);\n        }\n\n        //  Create smoke and debris particle at the place of voxel/model hit from explosive projectil\n        static void CreateExplosiveHitParticles(ref Vector3 hitPoint, ref Vector3 normal, ref Vector3 direction, MyEntity physObject, MyEntity weapon, MyEntity ownerEntity = null)\n        {\n            if (MyMwcUtils.GetRandomFloat(0.0f, 1.0f) > MyShotgunConstants.EXPLOSIVE_PROJECTILE_RELIABILITY)\n            { //this projectile failed to explode\n\n                Vector3 reflectedDirection = Vector3.Reflect(direction, normal);\n                MyUtilRandomVector3ByDeviatingVector randomVector = new MyUtilRandomVector3ByDeviatingVector(reflectedDirection);\n\n                MyParticleEffect effect = GetEffectForWeapon(weapon, (int)MyParticleEffectsIDEnum.Hit_ExplosiveAmmo);\n                Matrix dirMatrix = MyMath.MatrixFromDir(reflectedDirection);\n                effect.WorldMatrix = Matrix.CreateWorld(hitPoint, dirMatrix.Forward, dirMatrix.Up);\n            }\n            else\n            {  //this projectile exploded\n                MyExplosion newExplosion = MyExplosions.AddExplosion();\n                if (newExplosion != null)\n                {\n                    float radius = MyMwcUtils.GetRandomFloat(5, 20);\n                    newExplosion.Start(0, 0, 0, MyExplosionTypeEnum.AMMO_EXPLOSION, new BoundingSphere(hitPoint, radius), 1, MyExplosionForceDirection.EXPLOSION, MyGroupMask.Empty, false,ownerEntity: ownerEntity, hitEntity: physObject);\n                }\n            }\n        }\n\n        //  Create smoke and debris particle at the place of voxel/model hit\n        static void CreateBiochemHitParticles(ref Vector3 hitPoint, ref Vector3 normal, ref Vector3 direction, MyEntity physObject, MyEntity weapon, MyEntity ownerEntity = null)\n        {\n            Vector3 reflectedDirection = Vector3.Reflect(direction, normal);\n            MyUtilRandomVector3ByDeviatingVector randomVector = new MyUtilRandomVector3ByDeviatingVector(reflectedDirection);\n\n            MyParticleEffect effect = GetEffectForWeapon(weapon, (int)MyParticleEffectsIDEnum.Hit_ChemicalAmmo);\n            Matrix dirMatrix = MyMath.MatrixFromDir(reflectedDirection);\n            effect.WorldMatrix = Matrix.CreateWorld(hitPoint, dirMatrix.Forward, dirMatrix.Up);\n        }\n        \n        //  Create smoke and debris particle at the place of voxel/model hit\n        static void CreateEMPHitParticles(ref Vector3 hitPoint, ref Vector3 normal, ref Vector3 direction, MyEntity physObject, MyEntity weapon, MyEntity ownerEntity = null)\n        {\n            Vector3 reflectedDirection = Vector3.Reflect(direction, normal);\n            MyUtilRandomVector3ByDeviatingVector randomVector = new MyUtilRandomVector3ByDeviatingVector(reflectedDirection);\n\n            MyParticleEffect effect = GetEffectForWeapon(weapon, (int)MyParticleEffectsIDEnum.Hit_EMPAmmo);\n            Matrix dirMatrix = MyMath.MatrixFromDir(reflectedDirection);\n            effect.WorldMatrix = Matrix.CreateWorld(hitPoint, dirMatrix.Forward, dirMatrix.Up);\n        }\n\n        static void CreateHitMaterialParticles(ref Vector3 hitPoint, ref Vector3 normal, ref Vector3 direction, MyEntity physObject, MySurfaceImpactEnum surfaceImpact, MyEntity weapon)\n        {\n            Vector3 reflectedDirection = Vector3.Reflect(direction, normal);\n\n            MyParticleEffect effect = null;\n            switch (surfaceImpact)\n            {\n                case MySurfaceImpactEnum.METAL:\n                    effect = GetEffectForWeapon(weapon, (int)MyParticleEffectsIDEnum.MaterialHit_Metal);\n                    break;\n                case MySurfaceImpactEnum.DESTRUCTIBLE:\n                    effect = GetEffectForWeapon(weapon, (int)MyParticleEffectsIDEnum.MaterialHit_Destructible);\n                    break;\n                case MySurfaceImpactEnum.INDESTRUCTIBLE:\n                    effect = GetEffectForWeapon(weapon, (int)MyParticleEffectsIDEnum.MaterialHit_Indestructible);\n                    break;\n                default:\n                    System.Diagnostics.Debug.Assert(false);\n                    break;\n            }\n            Matrix dirMatrix = MyMath.MatrixFromDir(reflectedDirection);\n            effect.WorldMatrix = Matrix.CreateWorld(hitPoint, dirMatrix.Forward, dirMatrix.Up);\n        }\n\n        static void CreateAutocannonHitMaterialParticles(ref Vector3 hitPoint, ref Vector3 normal, ref Vector3 direction, MyEntity physObject, MySurfaceImpactEnum surfaceImpact, MyEntity weapon)\n        {\n            Vector3 reflectedDirection = Vector3.Reflect(direction, normal);\n\n            MyParticleEffect effect = null;\n            switch (surfaceImpact)\n            {\n                case MySurfaceImpactEnum.METAL:\n                    effect = GetEffectForWeapon(weapon, (int)MyParticleEffectsIDEnum.MaterialHit_Autocannon_Metal);\n                    break;\n                case MySurfaceImpactEnum.DESTRUCTIBLE:\n                    effect = GetEffectForWeapon(weapon, (int)MyParticleEffectsIDEnum.MaterialHit_Autocannon_Destructible);\n                    break;\n                case MySurfaceImpactEnum.INDESTRUCTIBLE:\n                    effect = GetEffectForWeapon(weapon, (int)MyParticleEffectsIDEnum.MaterialHit_Autocannon_Indestructible);\n                    break;\n                default:\n                    System.Diagnostics.Debug.Assert(false);\n                    break;\n            }\n            Matrix dirMatrix = MyMath.MatrixFromDir(reflectedDirection);\n            effect.WorldMatrix = Matrix.CreateWorld(hitPoint, dirMatrix.Forward, dirMatrix.Up);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/TransparentGeometry/MyParticlesDustField.cs",
    "content": "﻿using System;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.Renders;\nusing MinerWars.AppCode.Game.Utils;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Entities.InfluenceSpheres;\nusing MinerWars.AppCode.Game.World;\nusing MinerWars.AppCode.Game.Render;\n\n//  This class manages virtual dust field surounding the camera. Field doesn't exist, it's generated every draw call.\n//  It's variance is random, but persistent.\n\nnamespace MinerWars.AppCode.Game.TransparentGeometry\n{\n    static class MyParticlesDustField\n    {\n        static float[][][] m_random;\n        static Matrix m_helperProjectionMatrix;\n        static BoundingFrustum m_helperBoundingFrustum;\n\n        static float animXSpeed = 0.1f;\n\n        static int m_lastDustFieldCountInDirectionHalf = 0;\n        static float m_lastDustBillboardRadius = 0;\n\n        static int m_dustFieldCountInDirection;\n        static float m_distanceBetweenHalf;\n\n        public static Color? CustomColor = null;\n\n        //public static float DUST_BILLBOARD_RADIUS = 3;\n\n\n        static MyParticlesDustField()\n        {\n            Render.MyRender.RegisterRenderModule(MyRenderModuleEnum.ParticlesDustField, \"Particles dust field\", Draw, Render.MyRenderStage.PrepareForDraw, true);\n        }\n\n        public static void LoadData()\n        {\n            MyRender.GetRenderProfiler().StartProfilingBlock(\"MyParticlesDustField.LoadData\");\n\n            MyMwcLog.WriteLine(\"MyParticlesDustField.LoadContent() - START\");\n            MyMwcLog.IncreaseIndent();\n\n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyParticlesDustField.LoadContent() - END\");\n            MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        static MyMwcVector3Int GetMetersToDustFieldCoord(ref Vector3 position)\n        {\n            return new MyMwcVector3Int(\n                (int)(position.X / MySector.ParticleDustProperties.DistanceBetween),\n                (int)(position.Y / MySector.ParticleDustProperties.DistanceBetween),\n                (int)(position.Z / MySector.ParticleDustProperties.DistanceBetween));\n        }\n\n        //  This method doesn't really draw. It just creates billboards that are later drawn in MyParticles.Draw()\n        public static void Draw()\n        {\n            if (!MySector.ParticleDustProperties.Enabled)\n                return;\n            if (MinerWars.AppCode.Game.Render.MyRenderConstants.RenderQualityProfile.ForwardRender)\n                return;\n           // if (MyRender.CurrentRenderSetup.CallerID.Value != MyRenderCallerEnum.Main)\n             //   return;\n            if ((int)MySector.ParticleDustProperties.DustFieldCountInDirectionHalf == 0)\n                return;\n\n            MyRender.GetRenderProfiler().StartProfilingBlock(\"Dust changed\");\n\n            if ((m_lastDustBillboardRadius != MySector.ParticleDustProperties.DustBillboardRadius)\n                ||\n                m_lastDustFieldCountInDirectionHalf != (int)MySector.ParticleDustProperties.DustFieldCountInDirectionHalf)\n            {\n                m_lastDustBillboardRadius = MySector.ParticleDustProperties.DustBillboardRadius;\n                m_lastDustFieldCountInDirectionHalf = (int)MySector.ParticleDustProperties.DustFieldCountInDirectionHalf;\n                m_distanceBetweenHalf = MySector.ParticleDustProperties.DistanceBetween / 2.0f;\n                m_dustFieldCountInDirection = (int)MySector.ParticleDustProperties.DustFieldCountInDirectionHalf * 2 + 1;\n\n                //  Bounding frustum is based on camer's bounding frustun, but far plane isn't in such distance, because then bounding box is too large\n                //  IMPORTANT: Near plane can't be 0.001 or something small like that. Because than bounding box is weird.\n                m_helperProjectionMatrix = Matrix.CreatePerspectiveFieldOfView(MyCamera.FieldOfView, MyCamera.ForwardAspectRatio,\n                    MyCamera.NEAR_PLANE_DISTANCE,\n                    Math.Max(MySector.ParticleDustProperties.DistanceBetween * MySector.ParticleDustProperties.DustFieldCountInDirectionHalf, MyCamera.NEAR_PLANE_DISTANCE + 0.01f));\n                m_helperBoundingFrustum = new BoundingFrustum(Matrix.Identity);\n\n\n\n                //  Fill 3D array with random values from interval <0..1>\n                m_random = new float[m_dustFieldCountInDirection][][];\n                for (int x = 0; x < m_random.Length; x++)\n                {\n                    m_random[x] = new float[m_dustFieldCountInDirection][];\n\n                    for (int y = 0; y < m_random.Length; y++)\n                    {\n                        m_random[x][y] = new float[m_dustFieldCountInDirection];\n\n                        for (int z = 0; z < m_random.Length; z++)\n                        {\n                            m_random[x][y][z] = MyMwcUtils.GetRandomFloat(0, 1);\n                        }\n                    }\n                }\n            }\n\n            MyRender.GetRenderProfiler().StartNextBlock(\"computations\");\n\n            //  If sun wind is active, we make particle dust more transparent\n            float alphaBecauseSunWind = (MySunWind.IsActive == true) ? MySunWind.GetParticleDustFieldAlpha() : 1;\n\n            Vector3 center = MyCamera.Position;\n            //Vector3 center = MySession.PlayerShip.GetPosition();\n\n            MyMwcVector3Int cameraCoord = GetMetersToDustFieldCoord(ref center);\n            MyMwcVector3Int minCoord = new MyMwcVector3Int(cameraCoord.X - (int)MySector.ParticleDustProperties.DustFieldCountInDirectionHalf, cameraCoord.Y - (int)MySector.ParticleDustProperties.DustFieldCountInDirectionHalf, cameraCoord.Z - (int)MySector.ParticleDustProperties.DustFieldCountInDirectionHalf);\n            MyMwcVector3Int maxCoord = new MyMwcVector3Int(cameraCoord.X + (int)MySector.ParticleDustProperties.DustFieldCountInDirectionHalf, cameraCoord.Y + (int)MySector.ParticleDustProperties.DustFieldCountInDirectionHalf, cameraCoord.Z + (int)MySector.ParticleDustProperties.DustFieldCountInDirectionHalf);\n\n            //  Update helper frustum and then its bounding box\n            //  Bounding frustum is based on camer's bounding frustun, but far plane isn't in such distance, because then bounding box is too large\n            m_helperBoundingFrustum.Matrix = MyCamera.ViewMatrix * m_helperProjectionMatrix;\n            BoundingBox helperBoundingBox = BoundingBoxHelper.InitialBox;\n            //BoundingBoxHelper.AddFrustum(ref m_helperBoundingFrustum, ref helperBoundingBox);\n            BoundingBoxHelper.AddSphere(new BoundingSphere(MyCamera.Position, 1000), ref helperBoundingBox);\n            MyMwcVector3Int frustumBoundingBoxMinCoord = GetMetersToDustFieldCoord(ref helperBoundingBox.Min);\n            MyMwcVector3Int frustumBoundingBoxMaxCoord = GetMetersToDustFieldCoord(ref helperBoundingBox.Max);\n            //MyMwcVector3Int frustumBoundingBoxMinCoord = GetMetersToDustFieldCoord(ref MyCamera.BoundingBox.Min);\n            //MyMwcVector3Int frustumBoundingBoxMaxCoord = GetMetersToDustFieldCoord(ref MyCamera.BoundingBox.Max);\n\n            //  This is fix for particles that will be near the frustum boundary (or on its other side, but still should be visible)\n            //  Think about it like this: particle is defined by its center, but it overlaps spherical area, so we are interested\n            //  in particles that are outisde of the frustum (but near it)\n            frustumBoundingBoxMinCoord.X--;\n            frustumBoundingBoxMinCoord.Y--;\n            frustumBoundingBoxMinCoord.Z--;\n            frustumBoundingBoxMaxCoord.X++;\n            frustumBoundingBoxMaxCoord.Y++;\n            frustumBoundingBoxMaxCoord.Z++;\n\n            //  Fix min/max coordinates, so only billboards in frustum are traversed and drawn\n            if (minCoord.X < frustumBoundingBoxMinCoord.X) minCoord.X = frustumBoundingBoxMinCoord.X;\n            if (minCoord.Y < frustumBoundingBoxMinCoord.Y) minCoord.Y = frustumBoundingBoxMinCoord.Y;\n            if (minCoord.Z < frustumBoundingBoxMinCoord.Z) minCoord.Z = frustumBoundingBoxMinCoord.Z;\n            if (maxCoord.X > frustumBoundingBoxMaxCoord.X) maxCoord.X = frustumBoundingBoxMaxCoord.X;\n            if (maxCoord.Y > frustumBoundingBoxMaxCoord.Y) maxCoord.Y = frustumBoundingBoxMaxCoord.Y;\n            if (maxCoord.Z > frustumBoundingBoxMaxCoord.Z) maxCoord.Z = frustumBoundingBoxMaxCoord.Z;\n\n            Matrix rotationMatrix = Matrix.CreateRotationY(animXSpeed);\n            animXSpeed += MySector.ParticleDustProperties.AnimSpeed;\n\n            MyRender.GetRenderProfiler().StartNextBlock(\"for for for + draw\");\n\n            MyMwcVector3Int tempCoord;\n            for (tempCoord.X = minCoord.X; tempCoord.X <= maxCoord.X; tempCoord.X++)\n            {\n                for (tempCoord.Y = minCoord.Y; tempCoord.Y <= maxCoord.Y; tempCoord.Y++)\n                {\n                    for (tempCoord.Z = minCoord.Z; tempCoord.Z <= maxCoord.Z; tempCoord.Z++)\n                    {\n                        //  Position of this particle\n                        Vector3 position;\n                        position.X = tempCoord.X * MySector.ParticleDustProperties.DistanceBetween;\n                        position.Y = tempCoord.Y * MySector.ParticleDustProperties.DistanceBetween;\n                        position.Z = tempCoord.Z * MySector.ParticleDustProperties.DistanceBetween;\n\n                        //  Get pseudo-random number. It's randomness is based on 3D position, so values don't change between draw calls.\n                        float pseudoRandomVariationMod = m_random[Math.Abs(tempCoord.X) % m_random.Length][Math.Abs(tempCoord.Y) % m_random.Length][Math.Abs(tempCoord.Z) % m_random.Length];\n\n                        //  Alter position by randomness\n                        position.X += MathHelper.Lerp(-m_distanceBetweenHalf, +m_distanceBetweenHalf, pseudoRandomVariationMod);\n                        position.Y += MathHelper.Lerp(-m_distanceBetweenHalf, +m_distanceBetweenHalf, pseudoRandomVariationMod);\n                        position.Z += MathHelper.Lerp(-m_distanceBetweenHalf, +m_distanceBetweenHalf, pseudoRandomVariationMod);\n\n                        //  Distance to particle\n                        float distance;\n                        Vector3.Distance(ref center, ref position, out distance);\n\n\n                        Vector3 delta = position - MyCamera.Position;\n\n                        // delta = Vector3.Transform(delta, rotationMatrix);\n                        position = MyCamera.Position + delta;\n\n                        //  Pseudo-random color and alpha\n                        float pseudoRandomColor = MathHelper.Lerp(0.1f, 0.2f, pseudoRandomVariationMod); //MathHelper.Lerp(0.2f, 0.3f, pseudoRandomVariationMod);\n                        //float pseudoRandomAlpha = 0.5f; //0.4f;  // 0.2f;// MathHelper.Lerp(0.2f, 0.3f, pseudoRandomVariationMod);\n\n                        //  Dust color\n                        var sectorDustColor = CustomColor.HasValue ? CustomColor.Value : MySector.ParticleDustProperties.Color;\n\n                        //if (MyGuiScreenGamePlay.Static.ResultDustColor != Vector4.Zero)\n                        //{\n                        //    sectorDustColor = MyGuiScreenGamePlay.Static.ResultDustColor;\n                        //}\n\n                        Vector4 color = sectorDustColor.ToVector4();\n                        /*              \n                    Vector4 color = new Vector4(\n                        pseudoRandomColor * sectorDustColor.X,\n                        pseudoRandomColor * sectorDustColor.Y,\n                        pseudoRandomColor * sectorDustColor.Z,\n                        sectorDustColor.W);\n                             */\n                        //color = Vector4.One; new Vector4(0.0f, 0.0f, 0.0f, 1.0f);\n\n                        //color = new Vector4(MinerWars.AppCode.Game.World.MySector.FogProperties.FogColor.X, MinerWars.AppCode.Game.World.MySector.FogProperties.FogColor.Y, MinerWars.AppCode.Game.World.MySector.FogProperties.FogColor.Z, 1);\n\n                        //  Color+Alpha based on distance to camera (we use pre-multiplied alpha)\n                        float maxDistance = MySector.ParticleDustProperties.DustFieldCountInDirectionHalf * MySector.ParticleDustProperties.DistanceBetween;\n                        float DistanceAlpha1 = 0.7f * maxDistance;\n                        float DistanceAlpha2 = 0.85f * maxDistance;\n                        float DistanceAlpha3 = 1.0f * maxDistance;\n                        if (distance < DistanceAlpha1)\n                        {\n                            color *= 0;\n                        }\n                        else if ((distance >= DistanceAlpha1) && (distance < DistanceAlpha2))\n                        {\n                            color *= MathHelper.Clamp((distance - DistanceAlpha1) / (DistanceAlpha2 - DistanceAlpha1), 0, 1);\n                        }\n                        else if ((distance >= DistanceAlpha2) && (distance < DistanceAlpha3))\n                        {\n                            color *= 1 - MathHelper.Clamp((distance - DistanceAlpha2) / (DistanceAlpha3 - DistanceAlpha2), 0, 1);\n                        }\n                        else\n                        {\n                            color *= 0;\n                        }\n\n                        //  Sun wind influence\n                        color *= alphaBecauseSunWind;\n\n                        //  Do not draw totaly transparent particles\n                        if ((color.X <= 0) && (color.Y <= 0) && (color.Z <= 0) && (color.W <= 0))\n                            continue;\n\n                        //if (color.W <= 0) continue;\n\n                        //  Radius\n                        //float radius = DUST_BILLBOARD_RADIUS;\n                        //float radius = MathHelper.Lerp(1, 30, pseudoRandomVariationMod);\n                        float radius = MySector.ParticleDustProperties.DustBillboardRadius;// MathHelper.Lerp(100, 200, pseudoRandomVariationMod);\n\n                        //  Angle - see comments, I tried to do some rotation based on time\n                        //angle += pseudoRandomVariationMod * ((MyMinerGame.TotalGamePlayTimeInMilliseconds % 10000.0f) / 1000.0f);\n                        //angle += pseudoRandomVariationMod * (MyMinerGame.TotalGamePlayTimeInMilliseconds / 10000.0f);\n                        float angle = pseudoRandomVariationMod + animXSpeed;\n\n                        color *= 2;\n\n                        //color = Vector4.One;\n\n                        //MyTransparentGeometry.AddPointBillboard(MyTransparentMaterialEnum.Stardust, color, position, radius, angle);\n                        MyTransparentGeometry.AddPointBillboard(MySector.ParticleDustProperties.Texture, color, position, radius, angle, 0, false, false, true);\n                    }\n                }\n            }\n\n            MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/TransparentGeometry/MyRayCastOcclusionJob.cs",
    "content": "﻿using KeenSoftwareHouse.Library.Memory;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Entities.Prefabs;\nusing MinerWars.AppCode.Game.Entities.SubObjects;\nusing MinerWars.AppCode.Game.Physics;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.AppCode.Physics;\nusing MinerWars.AppCode.Physics.Collisions;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing ParallelTasks;\nusing MinerWars.AppCode.Game.Render;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing KeenSoftwareHouse.Library.Parallelization.Threading;\n\nnamespace MinerWars.AppCode.Game.TransparentGeometry\n{\n    class MyRayCastOcclusionJob: IWork\n    {\n        MyLightGlare m_glare;\n        Vector3 m_cameraPosition;\n        MyEntity m_ignoreEntity1;\n        MyEntity m_ignoreEntity2;\n\n        public bool Visible { get; private set; }\n\n        public bool IsDone { get; set; }\n\n        public void Start(MyLightGlare glare, Vector3 cameraPosition, MyEntity ignoreEntity1 = null, MyEntity ignoreEntity2 = null)\n        {\n            m_glare = glare;\n            m_cameraPosition = cameraPosition;\n\n            m_ignoreEntity1 = ignoreEntity1;\n            m_ignoreEntity2 = ignoreEntity2;\n\n            IsDone = false;\n        }\n\n        public void Clear()\n        {\n            m_glare = null;\n            m_ignoreEntity1 = null;\n            m_ignoreEntity2 = null;\n            IsDone = false;\n        }\n\n        public void DoWork()\n        {\n            var glare = m_glare; // we copy variable because other thread can null it\n            if (glare == null)\n                return;\n\n            if (Vector3.DistanceSquared(glare.Position, m_cameraPosition) < MyMwcMathConstants.EPSILON)\n                return;\n\n            var directLine = new MyLine(glare.Position, m_cameraPosition);\n            m_helperCollection.Clear();\n\n            using (MyEntities.EntityCloseLock.AcquireSharedUsing())\n            {\n\n                var intersectionResult = MyEntities.GetIntersectionWithLine(ref directLine, m_ignoreEntity1, m_ignoreEntity2, false, false, false, false, true);\n\n                //var intersectionResult = MyRender.GetAnyIntersectionWithLine(ref directLine, m_ignoreEntity1, m_ignoreEntity2, true);\n\n                if (intersectionResult == null)\n                {\n                    if (MySession.PlayerShip == null || MySession.PlayerShip.Weapons == null)\n                    {\n                        IsDone = true;\n                        m_helperCollection.Clear();\n                        return;\n                    }\n\n                    MyIntersectionResultLineTriangleEx? cockpitIntersection = GetIntersectionInNearSpace(MySession.PlayerShip.GetShipCockpit(), ref directLine, true);\n                    Visible = !cockpitIntersection.HasValue;\n\n                    Debug.Assert(m_helperCollection.Count == 0);\n                    m_helperCollection.AddRange(MySession.PlayerShip.Weapons.GetMountedWeaponsWithHarvesterAndDrill());\n                    foreach (var weapon in m_helperCollection)\n                    {\n                        MyIntersectionResultLineTriangleEx? intersection = GetIntersectionInNearSpace(weapon, ref directLine, true);\n                        if (intersection.HasValue)\n                        {\n                            Visible = false;\n                            IsDone = true;\n                            m_helperCollection.Clear();\n                            return;\n                        }\n                    }\n                }\n                else\n                {\n                    Visible = false;\n                }\n\n                IsDone = true;\n\n                m_ignoreEntity1 = null;\n                m_ignoreEntity2 = null;\n                m_glare = null;\n            }\n        }\n\n        void ConvertLineToNearWorldCoordinates(ref MyLine worldLine)\n        {\n            Matrix commonCameraMatrix = MyCamera.ViewMatrixAtZero * MyCamera.ProjectionMatrix;\n            Vector3 from2 = worldLine.From - MyCamera.Position;\n            Vector4 fromPositionByNear = Vector4.Transform(new Vector4(from2.X, from2.Y, from2.Z, 1), commonCameraMatrix);\n            Matrix normalCam = MyCamera.ViewMatrixAtZero * MyCamera.ProjectionMatrixForNearObjects;\n            normalCam = Matrix.Invert(normalCam);\n            Vector4 fromInWorldNear4 = Vector4.Transform(fromPositionByNear, normalCam);\n            Vector3 fromInWorldNear = new Vector3(fromInWorldNear4.X, fromInWorldNear4.Y, fromInWorldNear4.Z) / fromInWorldNear4.W;\n\n            Vector3 to = worldLine.To - MyCamera.Position;\n            Vector4 toPositionByNear = Vector4.Transform(new Vector4(to.X, to.Y, to.Z, 1), commonCameraMatrix);\n            Vector4 toInWorldNear4 = Vector4.Transform(toPositionByNear, normalCam);\n            Vector3 toInWorldNear = new Vector3(toInWorldNear4.X, toInWorldNear4.Y, toInWorldNear4.Z) / toInWorldNear4.W;\n\n            worldLine.From = fromInWorldNear + MyCamera.Position;\n            worldLine.To = toInWorldNear + MyCamera.Position;\n        }\n\n        public MyIntersectionResultLineTriangleEx? GetIntersectionInNearSpace(MyEntity entity, ref MyLine worldLine, bool convertLine)\n        {\n            if (!entity.IsVisible())\n                 return null;\n\n            MyLine line = worldLine;\n\n            if (convertLine)\n            {\n                ConvertLineToNearWorldCoordinates(ref line);\n            }\n\n            Matrix drawMatrix = entity.GetWorldMatrixForDraw();\n            drawMatrix.Translation += MyCamera.Position;\n            Matrix worldInv = Matrix.Invert(drawMatrix);\n\n            MyIntersectionResultLineTriangleEx? ret = entity.ModelLod0.GetTrianglePruningStructure().GetIntersectionWithLine(entity, ref line, ref worldInv, IntersectionFlags.ALL_TRIANGLES);\n            if (ret == null)\n            {\n                foreach (MyEntity child in entity.Children)\n                {\n                    if (!child.IsVisible())\n                        continue;\n\n                    drawMatrix = child.GetWorldMatrixForDraw();\n                    drawMatrix.Translation += MyCamera.Position;\n                    worldInv = Matrix.Invert(drawMatrix);\n\n                    System.Diagnostics.Debug.Assert(!float.IsNaN(worldInv.M11));\n\n                    ret = child.ModelLod0.GetTrianglePruningStructure().GetIntersectionWithLine(child, ref line, ref worldInv, IntersectionFlags.ALL_TRIANGLES);\n                    if (ret != null)\n                        return ret;\n                }\n            }\n\n            return ret;\n        }\n        private readonly WorkOptions m_workOptions = new WorkOptions { MaximumThreads = 1 };\n        public WorkOptions Options { get { return m_workOptions; } }\n        private List<MyEntity> m_helperCollection = new List<MyEntity>(20);\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/TransparentGeometry/MySunGlare.cs",
    "content": "﻿#region Using\n\nusing System;\nusing System.Diagnostics;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.Render;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils.Utils;\nusing MinerWars.AppCode.Game.World;\n\nusing SharpDX;\nusing SharpDX.Direct3D9;\nusing SharpDX.Toolkit;\nusing SharpDX.Toolkit.Graphics;\n\n#endregion\n\nnamespace MinerWars.AppCode.Game.TransparentGeometry\n{\n    using Vector2 = MinerWarsMath.Vector2;\n    using Vector3 = MinerWarsMath.Vector3;\n    using Vector4 = MinerWarsMath.Vector4;\n    using Rectangle = MinerWarsMath.Rectangle;\n    using Matrix = MinerWarsMath.Matrix;\n    using Color = MinerWarsMath.Color;\n    using BoundingBox = MinerWarsMath.BoundingBox;\n    using BoundingSphere = MinerWarsMath.BoundingSphere;\n    using BoundingFrustum = MinerWarsMath.BoundingFrustum;\n    using MathHelper = MinerWarsMath.MathHelper;\n   \n\n\n    /// <summary>\n    /// Reusable component for drawing a lensflare effect over the top of a 3D scene.\n    /// Copied from XNA's Lens Flare example.\n    /// </summary>\n    static class MySunGlare\n    {\n        /// <summary>\n        /// The lensflare effect is made up from several individual flare graphics,\n        /// which move across the screen depending on the position of the sun. This\n        /// helper class keeps track of the position, size, and color for each flare.\n        /// </summary>\n        class MyFlare\n        {\n            public MyFlare(float position, float scale, Color color, string textureName)\n            {\n                Position = position;\n                Scale = scale;\n                Color = color;\n                Texture = MyTextureManager.GetTexture<MyTexture2D>(textureName);\n            }\n\n            public float Position;\n            public float Scale;\n            public Color Color;\n            public MyTexture2D Texture;\n        }\n\n        private static readonly int[] m_allowedCallers = { (int) MyRenderCallerEnum.Main, (int) MyRenderCallerEnum.SecondaryCamera };\n\n        static float m_screenScale;\n\n        //  How big a rectangle should we examine when issuing our occlusion queries?\n        //  Increasing this makes the flares fade out more gradually when the sun goes\n        //  behind scenery, while smaller query areas cause sudden on/off transitions.\n        static float m_querySize;\n\n        /// <summary>\n        /// Set by the main game to tell us the position of the camera and sun.\n        /// </summary>\n        static Matrix m_view;\n\n        /// <summary>\n        /// Set by the main game to tell us the position of the camera and sun.\n        /// </summary>\n        static Matrix m_projection;\n\n        //  Graphics objects.\n        static MyTexture2D m_glareSprite;\n        static MyTexture2D m_glowSprite;\n        static MyTexture2D m_glowSprite2;\n        static SpriteBatch m_spriteBatch;\n\n        //  An occlusion query is used to detect when the sun is hidden behind scenery. We have separate queries for different callers.\n        static readonly MyOcclusionQuery[] m_occlusionQueries = new MyOcclusionQuery[m_allowedCallers.Length];\n\n        static readonly MyOcclusionQuery[] m_measurementOcclusionQueries = new MyOcclusionQuery[m_allowedCallers.Length];\n        static readonly float[] m_occlusionMeasurementResults = new float[m_allowedCallers.Length];\n\n        static MyLightGlare.State[] m_occlusionStates = new MyLightGlare.State[m_allowedCallers.Length];\n\n\n        static BoundingBox m_occlusionBox;\n        static readonly float[] m_visibilityRatios = new float[m_allowedCallers.Length]; // 0 - fully occluded, 1 - fully visible\n\n        // Array describes the position, size, color, and texture for each individual\n        // flare graphic. The position value lies on a line between the sun and the\n        // center of the screen. Zero places a flare directly over the top of the sun,\n        // one is exactly in the middle of the screen, fractional positions lie in\n        // between these two points, while negative values or positions greater than\n        // one will move the flares outward toward the edge of the screen. Changing\n        // the number of flares, or tweaking their positions and colors, can produce\n        // a wide range of different lensflare effects without altering any other code.\n        static MyFlare[] m_flares;\n\n        static Vector2 m_lightPosition = Vector2.Zero;\n        private static Vector3 m_directionToSunNormalized = Vector3.Zero;\n        private static float m_distanceToSun = -1;\n\n\n        static MySunGlare()\n        {                                                            \n            MyRender.RegisterRenderModule(MyRenderModuleEnum.SunGlow, \"Sun glow\", DrawGlow, MyRenderStage.AlphaBlendPreHDR, 50, true);\n            MyRender.RegisterRenderModule(MyRenderModuleEnum.SunGlow, \"Sun glare and lens flare\", DrawGlareAndFlare, MyRenderStage.AlphaBlend, 250, true);\n        }\n\n        public static void UpdateScreenSize()\n        {\n            //  This hardcoded values are here because Len's flare example used pixels and I want screen resolution independence.\n            //  So here I get screen scale and then fix all sizes and positions from pixel to <0..1> resolution.\n\n            //  Height is better because tripple-monitor could make mess with width if not calculated properly\n            m_screenScale = MyMinerGame.ScreenSize.Y / 1000f;\n        }\n\n        //  IMPORTANT: This load content can be called only once in application - at the application start. Not for every game-play screen start.\n        //  Reason is that OcclusionQuery will stop work if two or more instances are created, even if previous was Disposed. I don't know if \n        //  it's error or feature... I will just follow above rule.\n        public static void LoadContent()\n        {\n            MyMwcLog.WriteLine(\"MySunGlare.LoadContent() - START\");\n            MyMwcLog.IncreaseIndent();\n                          \n            // Load the glow, ray and flare textures.\n            m_glareSprite = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\SunGlare\\\\SunGlare\");\n            m_glowSprite = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\SunGlare\\\\sun_glow_main\");\n            m_glowSprite2 = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\SunGlare\\\\sun_glow_ray\");\n\n            m_flares = new[] {\n                new MyFlare(-0.5f, 0.7f, new Color( 30,  40,  50), \"Textures\\\\SunGlare\\\\flare1\"),\n                new MyFlare(0.3f, 0.4f, new Color(155, 165, 180), \"Textures\\\\SunGlare\\\\flare1\"),\n                new MyFlare(1.2f, 1.0f, new Color(40,  50,  50), \"Textures\\\\SunGlare\\\\flare1\"),\n                new MyFlare(1.5f, 1.5f, new Color( 80, 90,  100), \"Textures\\\\SunGlare\\\\flare1\"),\n                new MyFlare(-0.3f, 0.7f, new Color(140,  150,  160), \"Textures\\\\SunGlare\\\\flare2\"),\n                new MyFlare(0.6f, 0.9f, new Color( 85, 95,  100), \"Textures\\\\SunGlare\\\\flare2\"),\n                new MyFlare(0.7f, 0.4f, new Color( 130, 150, 170), \"Textures\\\\SunGlare\\\\flare2\"),\n                new MyFlare(-0.7f, 0.7f, new Color( 60, 60,  80), \"Textures\\\\SunGlare\\\\flare3\"),\n                new MyFlare(0.0f, 0.6f, new Color( 20,  25,  30), \"Textures\\\\SunGlare\\\\flare3\"),\n                new MyFlare(2.0f, 1.4f, new Color( 70,  85, 110), \"Textures\\\\SunGlare\\\\flare3\"),\n            };\n\n            // Create a SpriteBatch for drawing the glow and flare sprites.\n            m_spriteBatch = new SpriteBatch(MyMinerGame.Static.GraphicsDevice, \"SunGlare\");\n\n            // Create the occlusion query object. But only first time! Then just reuse it.\n            for (int i = 0; i < m_occlusionQueries.Length; i++)\n            {\n                m_occlusionQueries[i] = MyOcclusionQueries.Get();\n                m_occlusionStates[i] = MyLightGlare.State.IssueMeasure;\n            }\n            for (int i = 0; i < m_measurementOcclusionQueries.Length; i++)\n            {\n                m_measurementOcclusionQueries[i] = MyOcclusionQueries.Get();\n            }\n                    \n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MySunGlare.LoadContent() - END\");\n        }\n\n        public static void UnloadContent()\n        {\n            if (m_spriteBatch != null)\n            {\n                m_spriteBatch.Dispose();\n                m_spriteBatch = null;\n            }\n\n            // Create the occlusion query object. But only first time! Then just reuse it.\n            for (int i = 0; i < m_occlusionQueries.Length; i++)\n            {\n                MyOcclusionQueries.Return(m_occlusionQueries[i]);\n            }\n            for (int i = 0; i < m_measurementOcclusionQueries.Length; i++)\n            {\n                MyOcclusionQueries.Return(m_measurementOcclusionQueries[i]);\n            }\n        }\n\n        public static Vector3 GetSunPosition()\n        {\n            return MyCamera.Position + .5f * m_directionToSunNormalized * MySunConstants.RENDER_SUN_DISTANCE;\n        }\n\n        public static Vector3 GetSunDirection()\n        {\n            return -m_directionToSunNormalized;\n        }\n\n        private static void DrawGlow()\n        {\n            // this should be computed every time the sector is changed. If it is not initialized, calculate now:\n            m_distanceToSun = MyGuiScreenGamePlay.Static.GetPositionInMillionsOfKm().Length();\n\n            m_directionToSunNormalized = MyGuiScreenGamePlay.Static.GetDirectionToSunNormalized();\n\n            float radius = 100000 * MySunConstants.SUN_SIZE_MULTIPLIER * MySunConstants.RENDER_SUN_DISTANCE / m_distanceToSun;\n            radius = Math.Max(MySunConstants.MIN_SUN_SIZE * MySector.SunProperties.SunSizeMultiplier, radius);\n            radius = Math.Min(MySunConstants.MAX_SUN_SIZE * MySector.SunProperties.SunSizeMultiplier, radius);\n\n            float sunColorMultiplier = 3;\n\n            sunColorMultiplier *= (1 - MySector.FogMultiplierForSun);\n\n            m_querySize = .5f * radius;\n\n            Vector3 sunPosition = GetSunPosition();\n            radius *= .5f;\n            var color = new Vector4(.95f * sunColorMultiplier, .65f * sunColorMultiplier, .35f * sunColorMultiplier, 1);\n            //var color = new Vector4(sunColorMultiplier * MySector.SunColorWithFog, 1);\n            MyTransparentGeometry.AddPointBillboard(MyTransparentMaterialEnum.SunDisk, color, sunPosition, radius, 0);\n        }\n\n        //  Mesures how much of the sun is visible, by drawing a small rectangle,\n        //  centered on the sun, but with the depth set to as far away as possible,\n        //  and using an occlusion query to measure how many of these very-far-away\n        //  pixels are not hidden behind the terrain.\n        //\n        //  The problem with occlusion queries is that the graphics card runs in\n        //  parallel with the CPU. When you issue drawing commands, they are just\n        //  stored in a buffer, and the graphics card can be as much as a frame delayed\n        //  in getting around to processing the commands from that buffer. This means\n        //  that even after we issue our occlusion query, the occlusion results will\n        //  not be available until later, after the graphics card finishes processing\n        //  these commands.\n        //\n        //  It would slow our game down too much if we waited for the graphics card,\n        //  so instead we delay our occlusion processing by one frame. Each time\n        //  around the game loop, we read back the occlusion results from the previous\n        //  frame, then issue a new occlusion query ready for the next frame to read\n        //  its result. This keeps the data flowing smoothly between the CPU and GPU,\n        //  but also causes our data to be a frame out of date: we are deciding\n        //  whether or not to draw our lensflare effect based on whether it was\n        //  visible in the previous frame, as opposed to the current one! Fortunately,\n        //  the camera tends to move slowly, and the lensflare fades in and out\n        //  smoothly as it goes behind the scenery, so this out-by-one-frame error\n        //  is not too noticeable in practice.\n\n        static void UpdateOcclusion(int indexOfQuery)\n        {\n\n            switch (m_occlusionStates[indexOfQuery])\n            {\n                case MyLightGlare.State.IssueMeasure:\n                    {\n                        MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyLightGlare.State.IssueMeasure\");\n\n                        IssueQueries(indexOfQuery);\n                        IssueOcclusionQuery(m_measurementOcclusionQueries[indexOfQuery], false);\n                        m_occlusionStates[indexOfQuery] = MyLightGlare.State.WaitMeasure;\n\n                        MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n                    }\n                    break;\n                case MyLightGlare.State.WaitMeasure:\n                    {\n                        m_occlusionStates[indexOfQuery] = MyLightGlare.State.WaitMeasure1;\n                    }\n                    break;\n                case MyLightGlare.State.WaitMeasure1:\n                    {\n                        m_occlusionStates[indexOfQuery] = MyLightGlare.State.WaitMeasure2;\n                    }\n                    break;\n                case MyLightGlare.State.WaitMeasure2:\n                    {\n                        m_occlusionStates[indexOfQuery] = MyLightGlare.State.WaitMeasure3;\n                    }\n                    break;\n                case MyLightGlare.State.WaitMeasure3:\n                    {\n                        m_occlusionStates[indexOfQuery] = MyLightGlare.State.CheckMeasure;\n                    }\n                    break;\n                case MyLightGlare.State.CheckMeasure:\n                    {\n                        MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyLightGlare.State.CheckMeasure\");\n\n                        if (m_measurementOcclusionQueries[indexOfQuery].IsComplete)\n                        {\n\n                            int measuredPixels = m_measurementOcclusionQueries[indexOfQuery].PixelCount;\n\n                            //ATI\n                            if (measuredPixels <= 0)\n                                measuredPixels = 1;\n\n                            m_occlusionMeasurementResults[indexOfQuery] = measuredPixels;\n                            m_occlusionStates[indexOfQuery] = MyLightGlare.State.IssueOcc;\n                        }\n                        else\n                        {\n                        }\n\n                        MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n                    }\n                    break;\n\n                case MyLightGlare.State.IssueOcc:\n                    {\n                        MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyLightGlare.State.IssueOcc\");\n\n                        IssueQueries(indexOfQuery);\n                        IssueOcclusionQuery(m_occlusionQueries[indexOfQuery], true);\n                        m_occlusionStates[indexOfQuery] = MyLightGlare.State.WaitOcc;\n\n                        MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n                    }\n                    break;\n                case MyLightGlare.State.WaitOcc:\n                    {\n                        m_occlusionStates[indexOfQuery] = MyLightGlare.State.WaitOcc1;\n                    }\n                    break;\n                case MyLightGlare.State.WaitOcc1:\n                    {\n                        m_occlusionStates[indexOfQuery] = MyLightGlare.State.WaitOcc2;\n                    }\n                    break;\n                case MyLightGlare.State.WaitOcc2:\n                    {\n                        m_occlusionStates[indexOfQuery] = MyLightGlare.State.WaitOcc3;\n                    }\n                    break;\n                case MyLightGlare.State.WaitOcc3:\n                    {\n                        m_occlusionStates[indexOfQuery] = MyLightGlare.State.CheckOcc;\n                    }\n                    break;\n                case MyLightGlare.State.CheckOcc:\n                    {\n                        MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyLightGlare.State.CheckOcc\");\n\n                        if ((m_occlusionQueries[indexOfQuery].IsComplete))\n                        {\n                            int occPixels = m_occlusionQueries[indexOfQuery].PixelCount;\n                            //ATI\n                            if (occPixels < 0)\n                                occPixels = 0;\n                            //if (occPixels < MySunConstants.MAX_SUNGLARE_PIXELS)\n                            {\n                                m_visibilityRatios[indexOfQuery] = MathHelper.Clamp(occPixels / (float)m_occlusionMeasurementResults[indexOfQuery], 0, 1);\n                            }\n\n                            m_occlusionStates[indexOfQuery] = MyLightGlare.State.IssueMeasure;\n                        }\n\n                        MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n                    }\n                    break;\n                default:\n                    System.Diagnostics.Debug.Assert(false);\n                    break;\n            }\n        }\n\n        private static void IssueQueries(int indexOfQuery)\n        {\n            Vector3 directionToSunNormalized = MyGuiScreenGamePlay.Static.GetDirectionToSunNormalized();\n            Vector3 sunPosition = MyCamera.Position + directionToSunNormalized * MySunConstants.RENDER_SUN_DISTANCE;// MyRender.CurrentRenderSetup.LodTransitionBackgroundEnd.Value;\n\n            m_occlusionBox.Min = sunPosition - new Vector3(MathHelper.Max(m_querySize, MySunConstants.MIN_QUERY_SIZE));\n            m_occlusionBox.Max = sunPosition + new Vector3(MathHelper.Max(m_querySize, MySunConstants.MIN_QUERY_SIZE));\n\n            \n        }\n\n        private static void IssueOcclusionQuery(MyOcclusionQuery query, bool depthTest)\n        {     \n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"IssueOcclusionQuery\");\n            BlendState previousBlendState = BlendState.Current;\n            MyStateObjects.DisabledColorChannels_BlendState.Apply();\n            RasterizerState.CullNone.Apply();\n\n            if (MyRenderConstants.RenderQualityProfile.ForwardRender)\n                DepthStencilState.DepthRead.Apply();\n            else\n                DepthStencilState.None.Apply();\n\n            query.Begin();\n\n            //generate and draw bounding box of our renderCell in occlusion query \n            MySimpleObjectDraw.DrawOcclusionBoundingBox(m_occlusionBox, 1.0f, depthTest, true);\n\n            query.End();\n\n            previousBlendState.Apply();\n                        \n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        /// <summary>\n        /// Reads and issues occlusions queries and draws sun glare and flare effects based on\n        /// the result of the queries.\n        /// </summary>\n        public static void DrawGlareAndFlare()\n        {\n            Vector3 projectedPosition = CalculateProjectedPosition();\n\n            m_lightPosition = new Vector2(projectedPosition.X,\n                                                projectedPosition.Y);\n\n            // determine caller index and if the caller is allowed\n            Debug.Assert(MyRender.CurrentRenderSetup.CallerID != null, \"MyRender.CurrentRenderSetup.CallerID cannot be null\");\n            int callerIndex = Array.IndexOf(m_allowedCallers, (int) MyRender.CurrentRenderSetup.CallerID);\n            if (callerIndex < 0)\n            {\n                Debug.Assert(false, \"Sun Glare is called by an unallowed caller.\");\n            }\n\n            // Check whether the light is hidden behind the scenery.\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"UpdateOcclusion\");\n            UpdateOcclusion(callerIndex);\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            if (m_visibilityRatios[callerIndex] < MyMwcMathConstants.EPSILON)\n                return;\n\n            float sizeInv = 1f / MathHelper.Max(m_querySize, MySunConstants.MIN_QUERY_SIZE);\n            float viewportScale = 0.5f * (MyRender.GetScaleForViewport(null).X + MyRender.GetScaleForViewport(null).Y);\n            var borderFactor = (50f / viewportScale) * sizeInv * (float) Math.Sqrt(m_occlusionMeasurementResults[callerIndex]);\n            float borderFactorClamped = MathHelper.Clamp(borderFactor, 0, 1);\n\n            // If it is visible, draw the flare effect.\n            if (m_visibilityRatios[callerIndex] > 0 && borderFactorClamped > 0)\n            {\n                DrawGlare(borderFactorClamped, m_visibilityRatios[callerIndex]);\n                DrawFlares(borderFactorClamped, m_visibilityRatios[callerIndex]);\n            }\n        }\n\n        private static void DrawGlare(float occlusionFactor, float visibilityRatio)\n        {\n            //Dont draw glare if there are godrays, it is overexposed then\n            if (MyRenderConstants.RenderQualityProfile.EnableGodRays && MySector.GodRaysProperties.Enabled)\n                return;\n\n            var zoom = MyRender.CurrentRenderSetup.EnableZoom ? MyCamera.Zoom.GetZoomLevel() : 1;\n            zoom = MathHelper.Clamp(zoom, 0.1f, 1);\n\n            float glowSize = 0.1f * m_querySize / zoom;\n\n            float occlusionRatio = occlusionFactor * visibilityRatio;\n\n            Vector2 origin = new Vector2(m_glowSprite.Width, m_glowSprite.Height) / 2;\n\n            float viewportScale = 0.5f * (MyRender.GetScaleForViewport(null).X + MyRender.GetScaleForViewport(null).Y);\n            float scale = glowSize * 2.0f / m_glowSprite.Width * viewportScale;\n\n            m_directionToSunNormalized = MyGuiScreenGamePlay.Static.GetDirectionToSunNormalized();\n            float dot = Vector3.Dot(m_directionToSunNormalized, MyCamera.ForwardVector);\n\n            float glareIntensity;\n            if (dot > 0.9f)\n                glareIntensity = dot * (1 + MySunConstants.MAX_GLARE_MULTIPLIER * (dot - 0.9f));\n            else\n                glareIntensity = .9f;\n\n\n            m_spriteBatch.Begin(SpriteSortMode.Deferred, MyStateObjects.Additive_NoAlphaWrite_BlendState, SharpDX.Toolkit.Graphics.SamplerState.LinearClamp, DepthStencilState.None, RasterizerState.Current);\n\n            Matrix rot = MyCamera.ViewMatrix;\n            rot.Translation = Vector3.Zero;\n            float yaw, pitch, roll;\n            MyUtils.RotationMatrixToYawPitchRoll(ref rot, out yaw, out pitch, out roll);\n\n            // ----- small colored glares (bleeding, complements bloom): -----\n            // this one isn't rotating with camera:\n            float glare1Alpha = occlusionRatio * occlusionRatio * (1 - MySector.FogProperties.FogMultiplier);\n            float glare1Size = scale;\n            Color color1 = new Color(new Vector4(MySector.SunProperties.SunDiffuse, MathHelper.Clamp(glare1Alpha,0, 0.1f)));\n            m_spriteBatch.Draw(m_glowSprite, SharpDXHelper.ToSharpDX(m_lightPosition), null, SharpDXHelper.ToSharpDX(color1), -pitch, SharpDXHelper.ToSharpDX(origin), glare1Size, SpriteEffects.None, 0);\n\n            // rays glare - this one is rotating with camera\n            float glare2Alpha = 0.6f * glareIntensity * glareIntensity * occlusionRatio * occlusionRatio * (1 - MySector.FogProperties.FogMultiplier);\n            float glare2Size = 1.5f * glareIntensity * scale;\n            Color color2 = new Color(new Vector4(MySector.SunProperties.SunDiffuse, glare2Alpha));\n            m_spriteBatch.Draw(m_glowSprite2, SharpDXHelper.ToSharpDX(m_lightPosition), null, SharpDXHelper.ToSharpDX(color2), 0, SharpDXHelper.ToSharpDX(origin), glare2Size, SpriteEffects.None, 0);\n\n            // large white glare - blinding effect\n            float glare3Size = 40 * scale;\n            m_spriteBatch.Draw(m_glareSprite, SharpDXHelper.ToSharpDX(m_lightPosition), null, new SharpDX.Color(1, 0, 1, glareIntensity * occlusionRatio * 0.3f), 0, SharpDXHelper.ToSharpDX(origin), glare3Size, SpriteEffects.None, 0);\n\n            m_spriteBatch.End();\n        }\n\n        //  Draws the lensflare sprites, computing the position\n        //  of each one based on the current angle of the sun.\n        static void DrawFlares(float occlusionFactor, float visibilityRatio)\n        {          \n            Viewport viewport = MyMinerGame.Static.GraphicsDevice.Viewport;\n\n            // Lensflare sprites are positioned at intervals along a line that\n            // runs from the 2D light position toward the center of the screen.\n            Vector2 screenCenter = new Vector2(viewport.Width, viewport.Height) / 2;\n\n            Vector2 flareVector = screenCenter - m_lightPosition;\n\n            // Draw the flare sprites using additive blending.\n            m_spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.Additive);\n\n            foreach (MyFlare flare in m_flares)\n            {\n                // Compute the position of this flare sprite.\n                Vector2 flarePosition = m_lightPosition + flareVector * flare.Position * m_screenScale;\n\n                // Set the flare alpha based on the previous occlusion query result.\n                Vector4 flareColor = flare.Color.ToVector4();\n\n                flareColor.W *= occlusionFactor * visibilityRatio * visibilityRatio * (1 - MySector.FogMultiplierForSun);\n                flareColor.W *= (1 - MySector.FogProperties.FogMultiplier);\n\n                // Center the sprite texture.\n                Vector2 flareOrigin = new Vector2(flare.Texture.Width,\n                                                  flare.Texture.Height) / 2;\n\n                // Draw the flare.\n                m_spriteBatch.Draw(flare.Texture, SharpDXHelper.ToSharpDX(flarePosition), null,\n                                 new SharpDX.Color(flareColor.X, flareColor.Y, flareColor.Z, flareColor.W), 1, SharpDXHelper.ToSharpDX(flareOrigin),\n                                 flare.Scale * m_screenScale, SpriteEffects.None, 0);\n            }\n\n            m_spriteBatch.End();   \n        }\n\n        static Vector3 CalculateProjectedPosition()\n        {                               \n            Vector3 directionFromSunNormalized = -MyGuiScreenGamePlay.Static.GetDirectionToSunNormalized();\n\n            // Tell the lensflare component where our camera is positioned.\n            m_view = MyCamera.ViewMatrix;\n            m_projection = MyCamera.ProjectionMatrix;\n\n            // The sun is infinitely distant, so it should not be affected by the\n            // position of the camera. Floating point math doesn't support infinitely\n            // distant vectors, but we can get the same result by making a copy of our\n            // view matrix, then resetting the view translation to zero. Pretending the\n            // camera has not moved position gives the same result as if the camera\n            // was moving, but the light was infinitely far away. If our flares came\n            // from a local object rather than the sun, we would use the original view\n            // matrix here.\n            Matrix infiniteView = m_view;\n\n            infiniteView.Translation = Vector3.Zero;\n\n            // Project the light position into 2D screen space.\n            Viewport viewport = MyMinerGame.Static.GraphicsDevice.Viewport;\n\n            Vector3 projectedPosition = SharpDXHelper.ToXNA( viewport.Project(SharpDXHelper.ToSharpDX(-directionFromSunNormalized), SharpDXHelper.ToSharpDX(m_projection), SharpDXHelper.ToSharpDX(infiniteView), SharpDXHelper.ToSharpDX(Matrix.Identity)));\n            return projectedPosition; \n            return Vector3.Zero;\n        }\n\n        /// <summary>\n        /// Should be called when player changes sectors.\n        /// </summary>\n        internal static void UpdateSectorInfo()\n        {\n            m_distanceToSun = MyGuiScreenGamePlay.Static.GetPositionInMillionsOfKm().Length() * 1e6f;\n        }\n    }\n\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/TransparentGeometry/MySunWind.cs",
    "content": "﻿using System;\nusing MinerWarsMath;\n\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.Prefabs;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Utils;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing System.Diagnostics;\nusing MinerWars.AppCode.Game.Entities.Prefabs;\nusing MinerWars.AppCode.Game.World;\nusing MinerWars.AppCode.Game.Render;\nusing System.Collections.Generic;\nusing KeenSoftwareHouse.Library.Extensions;\n\n//  This class render \"sun wind\" coming from the sun. It works for sun in any direction (don't have to be parallel with one of the axis) - though I haven't tested it.\n//  There are large and small billboards. Large are because I don't want draw a lot of small billboards on edge, where player won't see anything. \n//  Important are small. These are only close to camera. We check on them how far they can reach (at start of sun wind) and they will go only there.\n//  Only voxels and large ships can stop small billboards. Other objects are ignored.\n//\n//  Sound of sun wind is not exactly point sound source, because it lies on a line. So we hear it coming, then we are in the sound and then we hear it comint out.\n\n\nnamespace MinerWars.AppCode.Game.TransparentGeometry\n{\n    static class MySunWind\n    {\n        //  This isn't particle as we know it in MyParticles. It just stores information about one individual sun win billboard.\n        class MySunWindBillboard\n        {\n            public Vector4 Color;\n            public float Radius;\n            public float InitialAngle;\n            public float RotationSpeed;\n            public Vector3 InitialAbsolutePosition;\n        }\n\n        //  This isn't particle as we know it in MyParticles. It just stores information about one individual sun win billboard.\n        class MySunWindBillboardSmall : MySunWindBillboard\n        {            \n            public float MaxDistance;\n            public int TailBillboardsCount;\n            public float TailBillboardsDistance;\n\n            public float[] RadiusScales;\n        }\n\n        //  True if sun wind is comming, otherwise false\n        public static bool IsActive = false;\n        public static bool IsVisible = true;\n\n        // Actual position of sun wind\n        public static Vector3 Position;\n\n        //  Center of sun wind particles or wall of particles\n        static Vector3 m_initialSunWindPosition;\n\n        //  Direction which sun wind is coming from (from sun to camera)\n        static Vector3 m_directionFromSunNormalized;\n\n        //  These parameters are updated each UPDATE\n        static MyPlane m_planeMiddle;\n        static MyPlane m_planeFront;\n        static MyPlane m_planeBack;\n        static float m_distanceToSunWind;\n        static Vector3 m_positionOnCameraLine;\n\n        static int m_timeLastUpdate;\n\n        //  Speed of sun wind, in meters per second\n        static float m_speed;\n\n        //  Vectors that define plane of sun wind\n        static Vector3 m_rightVector;\n        static Vector3 m_downVector;\n\n        //  Strength of sun wind, in interval <0..1>. This will determine strength of sun color and other values.\n        static float m_strength;\n\n        //  When checking if how far small billboard can reach, we will check only objects of these type\n        public static Type[] DoNotIgnoreTheseTypes = new Type[] { typeof(MyVoxelMap), typeof(MyPrefabBase), typeof(MyPrefab), typeof(MyPrefabLargeShip), typeof(MyStaticAsteroid) };\n\n        static MySunWindBillboard[][] m_largeBillboards;\n        \n        static MySunWindBillboardSmall[][] m_smallBillboards;\n        static bool m_smallBillboardsStarted;\n\n        static MySoundCue? m_burningCue;\n\n        static List<MyEntity> m_sunwindEntities = new List<MyEntity>(100);\n\n        // MaxDistance values for SmallBillboards are computed in more updates\n        // Small Billboards are ready when m_computedMaxDistances == SMALL_BILLBOARDS_SIZE.X * SMALL_BILLBOARDS_SIZE.Y\n        static int m_computedMaxDistances;\n\n        static MySunWind()\n        {\n            Render.MyRender.RegisterRenderModule(MyRenderModuleEnum.SunWind, \"Sun wind\", Draw, Render.MyRenderStage.PrepareForDraw);\n        }\n\n        public static void LoadContent()\n        {\n            MyMwcLog.WriteLine(\"MySunWind.LoadContent() - START\");\n            MyMwcLog.IncreaseIndent();\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MySunwind::LoadContent\");\n\n            //  Large billboards\n            m_largeBillboards = new MySunWindBillboard[MySunWindConstants.LARGE_BILLBOARDS_SIZE.X][];\n            for (int x = 0; x < MySunWindConstants.LARGE_BILLBOARDS_SIZE.X; x++)\n            {\n                m_largeBillboards[x] = new MySunWindBillboard[MySunWindConstants.LARGE_BILLBOARDS_SIZE.Y];\n                for (int y = 0; y < MySunWindConstants.LARGE_BILLBOARDS_SIZE.Y; y++)\n                {\n                    m_largeBillboards[x][y] = new MySunWindBillboard();\n                    MySunWindBillboard billboard = m_largeBillboards[x][y];\n\n                    billboard.Radius = MyMwcUtils.GetRandomFloat(MySunWindConstants.LARGE_BILLBOARD_RADIUS_MIN, MySunWindConstants.LARGE_BILLBOARD_RADIUS_MAX);\n                    billboard.InitialAngle = MyMwcUtils.GetRandomRadian();\n                    billboard.RotationSpeed = MyMwcUtils.GetRandomSign() * MyMwcUtils.GetRandomFloat(MySunWindConstants.LARGE_BILLBOARD_ROTATION_SPEED_MIN, MySunWindConstants.LARGE_BILLBOARD_ROTATION_SPEED_MAX);\n\n                    //billboard.Color = MySunWindConstants.BILLBOARD_COLOR;\n                    //billboard.Color.X = MyMwcUtils.GetRandomFloat(0.5f, 3);\n                    //billboard.Color.Y = MyMwcUtils.GetRandomFloat(0.5f, 2);\n                    //billboard.Color.Z = MyMwcUtils.GetRandomFloat(0.5f, 2);\n                    //billboard.Color.W = MyMwcUtils.GetRandomFloat(0.5f, 2);\n                    billboard.Color.X = MyMwcUtils.GetRandomFloat(0.5f, 3);\n                    billboard.Color.Y = MyMwcUtils.GetRandomFloat(0.5f, 1);\n                    billboard.Color.Z = MyMwcUtils.GetRandomFloat(0.5f, 1);\n                    billboard.Color.W = MyMwcUtils.GetRandomFloat(0.5f, 1);\n                }\n            }\n\n            //  Small billboards\n            m_smallBillboards = new MySunWindBillboardSmall[MySunWindConstants.SMALL_BILLBOARDS_SIZE.X][];\n            for (int x = 0; x < MySunWindConstants.SMALL_BILLBOARDS_SIZE.X; x++)\n            {\n                m_smallBillboards[x] = new MySunWindBillboardSmall[MySunWindConstants.SMALL_BILLBOARDS_SIZE.Y];\n                for (int y = 0; y < MySunWindConstants.SMALL_BILLBOARDS_SIZE.Y; y++)\n                {\n                    m_smallBillboards[x][y] = new MySunWindBillboardSmall();\n                    MySunWindBillboardSmall billboard = m_smallBillboards[x][y];\n\n                    billboard.Radius = MyMwcUtils.GetRandomFloat(MySunWindConstants.SMALL_BILLBOARD_RADIUS_MIN, MySunWindConstants.SMALL_BILLBOARD_RADIUS_MAX);\n                    billboard.InitialAngle = MyMwcUtils.GetRandomRadian();\n                    billboard.RotationSpeed = MyMwcUtils.GetRandomSign() * MyMwcUtils.GetRandomFloat(MySunWindConstants.SMALL_BILLBOARD_ROTATION_SPEED_MIN, MySunWindConstants.SMALL_BILLBOARD_ROTATION_SPEED_MAX);\n\n                    //billboard.Color = MySunWindConstants.BILLBOARD_COLOR;\n                    billboard.Color.X = MyMwcUtils.GetRandomFloat(0.5f, 1);\n                    billboard.Color.Y = MyMwcUtils.GetRandomFloat(0.2f, 0.5f);\n                    billboard.Color.Z = MyMwcUtils.GetRandomFloat(0.2f, 0.5f);\n                    billboard.Color.W = MyMwcUtils.GetRandomFloat(0.1f, 0.5f);\n\n                    billboard.TailBillboardsCount = MyMwcUtils.GetRandomInt(MySunWindConstants.SMALL_BILLBOARD_TAIL_COUNT_MIN, MySunWindConstants.SMALL_BILLBOARD_TAIL_COUNT_MAX);\n                    billboard.TailBillboardsDistance = MyMwcUtils.GetRandomFloat(MySunWindConstants.SMALL_BILLBOARD_TAIL_DISTANCE_MIN, MySunWindConstants.SMALL_BILLBOARD_TAIL_DISTANCE_MAX);\n\n                    billboard.RadiusScales = new float[billboard.TailBillboardsCount];\n                    for (int i = 0; i < billboard.TailBillboardsCount; i++)\n                    {\n                        billboard.RadiusScales[i] = MyMwcUtils.GetRandomFloat(0.7f, 1.0f);\n                    }\n                }\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MySunWind.LoadContent() - END\");\n        }\n\n        public static void UnloadContent()\n        {\n            MyMwcLog.WriteLine(\"MySunWind.UnloadContent - START\");\n            MyMwcLog.IncreaseIndent();\n\n            IsActive = false;\n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MySunWind.UnloadContent - END\");            \n        }\n\n        static float m_deltaTime;\n        \n        \n        //  This method will start sun wind. Or if there is one coming, this will reset it so it will start again.\n        public static void Start()\n        {\n            //  Activate sun wind\n            IsActive = true;\n\n            m_smallBillboardsStarted = false;\n\n            m_timeLastUpdate = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n\n            //  Place sun wind at farest possible negative Z position\n            //Vector3 directionToSunNormalized = MyMwcUtils.Normalize(MyGuiScreenGameBase.Static.SunPosition - MyCamera.Position); MyMwcSectorGroups.Get(MyGuiScreenGameBase.Static.Sector.SectorGroup).GetDirectionToSunNormalized();\n            Vector3 directionToSunNormalized = MyGuiScreenGamePlay.Static.GetDirectionToSunNormalized();\n            m_initialSunWindPosition = MyCamera.Position + directionToSunNormalized * MySunWindConstants.SUN_WIND_LENGTH_HALF;\n            m_directionFromSunNormalized = -directionToSunNormalized;\n\n            //  Start the sound of burning (looping)\n            StopCue();\n            m_burningCue = MyAudio.AddCue3D(MySoundCuesEnum.SfxSolarWind, m_initialSunWindPosition, m_directionFromSunNormalized, Vector3.Up, Vector3.Zero);\n            //MySounds.UpdateCuePitch(m_burningCue, MyMwcUtils.GetRandomFloat(-1, +1));\n\n            m_speed = MyMwcUtils.GetRandomFloat(MySunWindConstants.SPEED_MIN, MySunWindConstants.SPEED_MAX);\n            \n            m_strength = MyMwcUtils.GetRandomFloat(0, 1);\n\n            MyUtils.GetPerpendicularVector(ref m_directionFromSunNormalized, out m_rightVector);\n            m_downVector = MyMwcUtils.Normalize(Vector3.Cross(m_directionFromSunNormalized, m_rightVector));\n\n            StartBillboards();\n            \n            // Reinit computed max distances, they'll be computed in update\n            m_computedMaxDistances = 0;\n\n            m_deltaTime = 0;\n\n            // Collect entities\n            m_sunwindEntities.Clear();\n            foreach (var entity in MyEntities.GetEntities())\n            {\n                if (!(entity is MySmallShip)) continue;\n\n                // Do not move with indestructibles (NPCs etc)\n                if (!entity.IsDestructible)\n                    continue;\n\n                m_sunwindEntities.Add(entity);\n            }\n        }\n\n        \n        public static void Update()\n        {\n            //  Update only if sun wind is active\n            if (IsActive == false) return;\n\n            //?\n            float dT = ((float)MyMinerGame.TotalGamePlayTimeInMilliseconds - (float)m_timeLastUpdate) / 1000.0f;\n            m_timeLastUpdate = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n\n            if((MyGuiScreenGamePlay.Static.IsEditorActive() && !MyGuiScreenGamePlay.Static.IsIngameEditorActive()) || MyMinerGame.IsPaused())\n                return;\n\n            m_deltaTime += dT;\n\n            float traveledDistance = m_speed * m_deltaTime;\n\n            //  If sun wind finished its way, we will turn it off\n            if (traveledDistance >= MySunWindConstants.SUN_WIND_LENGTH_TOTAL)\n            {\n                IsActive = false;\n                StopCue();\n                return;\n            }\n\n            Vector3 campos = MyCamera.Position;\n\n            //  This is plane that goes through sun wind, it's in its middle\n            m_planeMiddle = new MyPlane(m_initialSunWindPosition + m_directionFromSunNormalized * traveledDistance, m_directionFromSunNormalized);\n            m_distanceToSunWind = MyUtils.GetDistanceFromPointToPlane(ref campos, ref m_planeMiddle);\n\n            //  We make sure that sound moves always on line that goes through camera. So it's not in the middle of sun wind, more like middle where is camera.\n            //  Reason is that I want the sound always go through camera.            \n            m_positionOnCameraLine = MyCamera.Position - m_directionFromSunNormalized * m_distanceToSunWind;\n\n            Vector3 positionFront = m_positionOnCameraLine + m_directionFromSunNormalized * 5000;\n            Vector3 positionBack = m_positionOnCameraLine + m_directionFromSunNormalized * -5000;\n\n            m_planeFront = new MyPlane(ref positionFront, ref m_directionFromSunNormalized);\n            m_planeBack = new MyPlane(ref positionBack, ref m_directionFromSunNormalized);\n\n            float distanceToFrontPlane = MyUtils.GetDistanceFromPointToPlane(ref campos, ref m_planeFront);\n            float distanceToBackPlane = MyUtils.GetDistanceFromPointToPlane(ref campos, ref m_planeBack);\n\n\n            Vector3 positionOfSound;\n            if ((distanceToFrontPlane <= 0) && (distanceToBackPlane >= 0))\n            {\n                positionOfSound = MyCamera.Position;\n            }\n            else if (distanceToFrontPlane > 0)\n            {\n                positionOfSound = positionFront;\n            }\n            else\n            {\n                positionOfSound = positionBack;\n            }\n\n            //  Update position of sound. It works like this: we hear coming sound, then we are in the sound and then we hear it coming out.\n            MyAudio.UpdateCuePosition(m_burningCue, positionOfSound, m_directionFromSunNormalized, -m_downVector, m_directionFromSunNormalized * m_speed);\n            //MySounds.UpdateCuePosition(m_burningCue, positionOfSound, m_directionFromSunNormalized, Vector3.Up, Vector3.Zero);\n\n            //MyLogManager.WriteLine(\"positionOfSound: \" + MyUtils.GetFormatedVector3(positionOfSound, 3));\n            //MyLogManager.WriteLine(\"m_directionFromSunNormalized: \" + MyUtils.GetFormatedVector3(m_directionFromSunNormalized, 3));\n            //MyLogManager.WriteLine(\"m_downVector: \" + MyUtils.GetFormatedVector3(m_downVector, 3));\n\n            Position = positionOfSound;\n\n            //  Shake player's head\n            float distanceToSound;\n            Vector3.Distance(ref positionOfSound, ref campos, out distanceToSound);\n            float shake = 1 - MathHelper.Clamp(distanceToSound / 1000, 0, 1);\n            if (MySession.PlayerShip != null)\n            {\n                MySession.PlayerShip.IncreaseHeadShake(\n                    MathHelper.Lerp(MyHeadShakeConstants.HEAD_SHAKE_AMOUNT_DURING_SUN_WIND_MIN,\n                                    MyHeadShakeConstants.HEAD_SHAKE_AMOUNT_DURING_SUN_WIND_MAX, shake));\n            }\n\n            for (int i = 0; i < m_sunwindEntities.Count;)\n\t\t\t{\n                if (m_sunwindEntities[i].Closed)\n                {\n                    m_sunwindEntities.RemoveAtFast(i);\n                }\n                else\n                {\n                    i++;\n                }\n            }\n\n            //  Apply force to all objects that aren't static and are hit by sun wind (ignoring voxels and large ships)\n            MyEntities.ApplySunWindForce(m_sunwindEntities, ref m_planeFront, ref m_planeBack, DoNotIgnoreTheseTypes, ref m_directionFromSunNormalized);\n\n            //  Start small billboards\n            if (m_distanceToSunWind <= MySunWindConstants.SWITCH_LARGE_AND_SMALL_BILLBOARD_DISTANCE)\n            {\n                Debug.Assert(m_computedMaxDistances == MySunWindConstants.SMALL_BILLBOARDS_SIZE.X * MySunWindConstants.SMALL_BILLBOARDS_SIZE.Y, \"Not all small billboard MaxDistances are computed!\");\n                m_smallBillboardsStarted = true;\n            }\n\n            ComputeMaxDistances();\n        }\n\n        public static bool IsActiveForHudWarning()\n        {            \n            if (!IsActive || MySession.PlayerShip == null)\n            {\n                return false;\n            }\n\n            Vector3 playerToSunwind = MySession.PlayerShip.GetPosition() - Position;\n            Vector3 directionToPlayerNormalize = Vector3.Normalize(playerToSunwind);\n            float dot = Vector3.Dot(m_directionFromSunNormalized, directionToPlayerNormalize);\n            // if sun wind before player, always display hud warning\n            if (dot >= 0f)\n            {\n                return true;\n            }\n\n            // if sun wind behind player, display hud waring only up to 1000m\n            return playerToSunwind.LengthSquared() <= MySmallShipConstants.WARNING_SUN_WIND_MAX_DISTANCE_BEHIND_PLAYER_SQR;\n        }\n\n        static void StopCue()\n        {\n            if ((m_burningCue != null) && (m_burningCue.Value.IsPlaying == true))\n            {\n                m_burningCue.Value.Stop(SharpDX.XACT3.StopFlags.Immediate);\n            }            \n        }\n\n        //  When sun wind is approaching camera position, we have to make sun color more bright\n        public static Vector4 GetSunColor()\n        {\n            //  Increase sun color only if sun wind is really close\n            float multiply = 1 - MathHelper.Clamp(Math.Abs(m_distanceToSunWind) / MySunWindConstants.SUN_COLOR_INCREASE_DISTANCE, 0, 1);\n            multiply *= MathHelper.Lerp(MySunWindConstants.SUN_COLOR_INCREASE_STRENGTH_MIN, MySunWindConstants.SUN_COLOR_INCREASE_STRENGTH_MAX, m_strength);\n\n            return new Vector4(MySector.SunProperties.SunDiffuse, 1.0f) * (1 + multiply);\n        }\n\n        //  When sun wind is approaching camera position, we have to make particle dust more transparent (or invisible), because it doesn't look when mixed with sun wind billboards\n        public static float GetParticleDustFieldAlpha()\n        {\n            return (float)Math.Pow(MathHelper.Clamp(Math.Abs(m_distanceToSunWind) / MySunWindConstants.PARTICLE_DUST_DECREAS_DISTANCE, 0, 1), 4);\n        }\n\n        //  This method doesn't really draw. It just creates billboards that are later drawn in MyParticles.Draw()\n        public static void Draw()\n        {\n            if (IsActive == false) return;\n            if (IsVisible == false) return;\n\n            //float deltaTime = ((float)MyMinerGame.TotalGamePlayTimeInMilliseconds - (float)m_timeStarted) / 1000.0f;\n            float traveledDistance = m_speed * m_deltaTime;\n            Vector3 deltaPosition = m_directionFromSunNormalized * traveledDistance;\n\n            //  Draw LARGE billboards\n            for (int x = 0; x < MySunWindConstants.LARGE_BILLBOARDS_SIZE.X; x++)\n            {\n                for (int y = 0; y < MySunWindConstants.LARGE_BILLBOARDS_SIZE.Y; y++)\n                {\n                    MySunWindBillboard billboard = m_largeBillboards[x][y];\n\n                    Vector3 actualPosition = billboard.InitialAbsolutePosition + deltaPosition;\n\n                    float distanceToCamera;\n                    Vector3 campos = MyCamera.Position;\n                    Vector3.Distance(ref actualPosition, ref campos, out distanceToCamera);\n                    float alpha = 1 - MathHelper.Clamp(distanceToCamera / MySunWindConstants.LARGE_BILLBOARD_DISAPEAR_DISTANCE, 0, 1);\n\n                    float distanceToCenterOfSunWind;\n                    Vector3.Distance(ref actualPosition, ref campos, out distanceToCenterOfSunWind);\n\n                    if (distanceToCenterOfSunWind < MySunWindConstants.SWITCH_LARGE_AND_SMALL_BILLBOARD_RADIUS)\n                    {\n                        alpha *= MathHelper.Clamp(distanceToCamera / MySunWindConstants.SWITCH_LARGE_AND_SMALL_BILLBOARD_DISTANCE, 0, 1);\n                    }\n\n                    //billboard.Color *= alpha;\n\n                    MyTransparentGeometry.AddPointBillboard(\n                        MyTransparentMaterialEnum.Explosion,\n                        new Vector4(billboard.Color.X * alpha, billboard.Color.Y * alpha, billboard.Color.Z * alpha, alpha),\n                        actualPosition,\n                        billboard.Radius,\n                        billboard.InitialAngle + billboard.RotationSpeed * m_deltaTime);\n                }\n            }\n\n            //  Draw SMALL billboards\n            //if (m_distanceToSunWind <= MySunWindConstants.SWITCH_LARGE_AND_SMALL_BILLBOARD_DISTANCE)\n            //{\n            //    if (m_smallBillboardsStarted == false)\n            //    {\n            //        StartSmallBillboards();\n            //        m_smallBillboardsStarted = true;\n            //    }\n\n            if (m_smallBillboardsStarted == true)\n            {\n                for (int x = 0; x < MySunWindConstants.SMALL_BILLBOARDS_SIZE.X; x++)\n                {\n                    for (int y = 0; y < MySunWindConstants.SMALL_BILLBOARDS_SIZE.Y; y++)\n                    {\n                        MySunWindBillboardSmall billboard = m_smallBillboards[x][y];\n\n                        Vector3 actualPosition = billboard.InitialAbsolutePosition + deltaPosition;\n\n                        for (int z = 0; z < billboard.TailBillboardsCount; z++)\n                        {\n                            Vector3 tempPosition = actualPosition - m_directionFromSunNormalized * (z - billboard.TailBillboardsCount / 2) * billboard.TailBillboardsDistance;\n\n                            float distanceToCamera;\n                            Vector3 campos = MyCamera.Position;\n                            Vector3.Distance(ref tempPosition, ref campos, out distanceToCamera);\n\n                            //distanceToCamera = Math.Abs(Vector3.Dot(tempPosition - campos, m_directionFromSunNormalized));\n\n                            float alpha = 1 - MathHelper.Clamp((distanceToCamera) / (MySunWindConstants.SWITCH_LARGE_AND_SMALL_BILLBOARD_DISTANCE_HALF), 0, 1);\n\n                            if (alpha > 0)\n                            {\n                                float distanceFromOrigin;\n                                Vector3.Distance(ref tempPosition, ref billboard.InitialAbsolutePosition, out distanceFromOrigin);\n                                if (distanceFromOrigin < billboard.MaxDistance)\n                                {\n                                    MyTransparentGeometry.AddPointBillboard(\n                                        MyTransparentMaterialEnum.Explosion,\n                                        new Vector4(billboard.Color.X * alpha, billboard.Color.Y * alpha, billboard.Color.Z * alpha, billboard.Color.W * alpha),\n                                        tempPosition,\n                                        billboard.Radius * billboard.RadiusScales[z],\n                                        billboard.InitialAngle + billboard.RotationSpeed * m_deltaTime);\n                                }\n                            }\n                        }\n                    }\n                }\n            }\n        }\n\n        static void StartBillboards()\n        {\n            //  Initialize LARGE billboards\n            for (int x = 0; x < MySunWindConstants.LARGE_BILLBOARDS_SIZE.X; x++)\n            {\n                for (int y = 0; y < MySunWindConstants.LARGE_BILLBOARDS_SIZE.Y; y++)\n                {\n                    MySunWindBillboard billboard = m_largeBillboards[x][y];\n\n                    Vector3 positionRandomDelta = new Vector3(\n                        MyMwcUtils.GetRandomFloat(MySunWindConstants.LARGE_BILLBOARD_POSITION_DELTA_MIN, MySunWindConstants.LARGE_BILLBOARD_POSITION_DELTA_MAX),\n                        MyMwcUtils.GetRandomFloat(MySunWindConstants.LARGE_BILLBOARD_POSITION_DELTA_MIN, MySunWindConstants.LARGE_BILLBOARD_POSITION_DELTA_MAX),\n                        MyMwcUtils.GetRandomFloat(MySunWindConstants.LARGE_BILLBOARD_POSITION_DELTA_MIN, MySunWindConstants.LARGE_BILLBOARD_POSITION_DELTA_MAX));\n\n                    Vector3 positionRelative = new Vector3(\n                        (x - MySunWindConstants.LARGE_BILLBOARDS_SIZE_HALF.X) * MySunWindConstants.LARGE_BILLBOARD_DISTANCE,\n                        (y - MySunWindConstants.LARGE_BILLBOARDS_SIZE_HALF.Y) * MySunWindConstants.LARGE_BILLBOARD_DISTANCE,\n                        (x - MySunWindConstants.LARGE_BILLBOARDS_SIZE_HALF.X) * MySunWindConstants.LARGE_BILLBOARD_DISTANCE * 0.2f);\n\n                    billboard.InitialAbsolutePosition =\n                        m_initialSunWindPosition +\n                        m_rightVector * (positionRandomDelta.X + positionRelative.X) +\n                        m_downVector * (positionRandomDelta.Y + positionRelative.Y) +\n                        -1 * m_directionFromSunNormalized * (positionRandomDelta.Z + positionRelative.Z);\n                }\n            }\n\n            Vector3 initialPositionOnCameraLine = MyCamera.Position - m_directionFromSunNormalized * MySunWindConstants.SUN_WIND_LENGTH_HALF;\n\n            for (int x = 0; x < MySunWindConstants.SMALL_BILLBOARDS_SIZE.X; x++)\n            {\n                for (int y = 0; y < MySunWindConstants.SMALL_BILLBOARDS_SIZE.Y; y++)\n                {\n                    MySunWindBillboardSmall billboard = m_smallBillboards[x][y];\n\n                    Vector2 positionRandomDelta = new Vector2(\n                        MyMwcUtils.GetRandomFloat(MySunWindConstants.SMALL_BILLBOARD_POSITION_DELTA_MIN, MySunWindConstants.SMALL_BILLBOARD_POSITION_DELTA_MAX),\n                        MyMwcUtils.GetRandomFloat(MySunWindConstants.SMALL_BILLBOARD_POSITION_DELTA_MIN, MySunWindConstants.SMALL_BILLBOARD_POSITION_DELTA_MAX));\n\n                    Vector2 positionRelative = new Vector2(\n                        (x - MySunWindConstants.SMALL_BILLBOARDS_SIZE_HALF.X) * MySunWindConstants.SMALL_BILLBOARD_DISTANCE,\n                        (y - MySunWindConstants.SMALL_BILLBOARDS_SIZE_HALF.Y) * MySunWindConstants.SMALL_BILLBOARD_DISTANCE);\n\n                    billboard.InitialAbsolutePosition =\n                        initialPositionOnCameraLine +\n                        m_rightVector * (positionRandomDelta.X + positionRelative.X) +\n                        m_downVector * (positionRandomDelta.Y + positionRelative.Y);\n                }\n            }\n        }\n\n        /// <summary>\n        /// Compute MaxDistances for uninitialized SmallBillboards\n        /// </summary>\n        private static void ComputeMaxDistances()\n        {\n            int smallBillBoardsCount = MySunWindConstants.SMALL_BILLBOARDS_SIZE.X * MySunWindConstants.SMALL_BILLBOARDS_SIZE.Y;\n            if (m_computedMaxDistances < smallBillBoardsCount)\n            {\n                int cnt = (int)(smallBillBoardsCount / MySunWindConstants.SECONDS_FOR_SMALL_BILLBOARDS_INITIALIZATION / MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS);\n                while (m_computedMaxDistances < smallBillBoardsCount && cnt > 0)\n                {\n                    int x = m_computedMaxDistances % MySunWindConstants.SMALL_BILLBOARDS_SIZE.Y;\n                    int y = m_computedMaxDistances / MySunWindConstants.SMALL_BILLBOARDS_SIZE.X;\n\n                    var billBoard = m_smallBillboards[x][y];\n\n                    ComputeMaxDistance(billBoard);\n\n                    ++m_computedMaxDistances;\n                    --cnt;\n                }\n            }\n        }\n\n        private static void ComputeMaxDistance(MySunWindBillboardSmall billboard)\n        {\n            Vector3 sunWindVector = m_directionFromSunNormalized * MySunWindConstants.SUN_WIND_LENGTH_HALF;\n            var offset = (-m_directionFromSunNormalized * MySunWindConstants.RAY_CAST_DISTANCE);\n            //  This line start where billboard starts and end at place that is farest possible place billboard can reach\n            //  If intersection found, we will mark that place as small billboard's destination. It can't go further.\n            MyLine line = new MyLine((sunWindVector + billboard.InitialAbsolutePosition) + offset, billboard.InitialAbsolutePosition + m_directionFromSunNormalized * MySunWindConstants.SUN_WIND_LENGTH_TOTAL, true);\n            MyIntersectionResultLineTriangleEx? intersection = MyEntities.GetIntersectionWithLine_IgnoreOtherThanSpecifiedClass(ref line, DoNotIgnoreTheseTypes);\n            billboard.MaxDistance = (intersection != null) ?\n                (intersection.Value.Triangle.Distance - billboard.Radius) :\n                MySunWindConstants.SUN_WIND_LENGTH_TOTAL;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/TransparentGeometry/MyTransparentGeometry.cs",
    "content": "﻿#region Using\n\nusing System.Collections.Generic;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Effects;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.Managers;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Utils.VertexFormats;\nusing MinerWars.AppCode.Game.Render;\nusing MinerWars.CommonLIB.AppCode.Generics;\nusing SysUtils.Utils;\nusing ParallelTasks;\nusing MinerWarsMath.Graphics.PackedVector;\nusing System.Runtime.InteropServices;\nusing MinerWars.AppCode.Game.Lights;\nusing MinerWars.AppCode.Game.TransparentGeometry.Particles;\nusing System;\nusing MinerWars.AppCode.Game.Textures;\nusing SysUtils;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing System.Diagnostics;\nusing MinerWars.AppCode.Game.Managers.Session;\n\n//using MinerWarsMath;\n//using MinerWarsMath.Graphics;\n\nusing SharpDX;\nusing SharpDX.Direct3D9;\nusing SharpDX.Toolkit;\nusing SharpDX.Toolkit.Graphics;\n\n\n\n#endregion\n\n//  Use this STATIC class to create new particle and draw all living particles.\n//  Particle is drawn as billboard or poly-line facing the camera. All particles lie on same texture atlas.\n//  We use only pre-multiplied alpha particles. Here is the principle:\n//      texture defines:\n//          RGB - how much color adds/contributes the object to the scene\n//          A   - how much it obscures whatever is behind it (0 = opaque, 1 = transparent ... but RGB is also important because it's additive)\n//\n//  Pre-multiplied alpha ----> blend(source, dest)  =  source.rgb + (dest.rgb * (1 - source.a))\n//\n//  In this world, RGB and alpha are linked. To make an object transparent you must reduce both its RGB (to contribute less color) and also its \n//  alpha (to obscure less of whatever is behind it). Fully transparent objects no longer have any RGB color, so there is only one value that \n//  represents 100% transparency (RGB and alpha all zero).\n//\n//  Billboards can be affected (lighted, attenuated) by other lights (player reflector, dynamic lights, etc) if 'CanBeAffectedByOtherLights = true'.\n//  This is usefull for example when you want to have dust particle lighted by reflector, but don't want it for explosions or ship engine thrusts.\n//  Drawing is always in back-to-front order.\n//  If you set particle color higher than 1.0, it will shine more. It's cheap HDR effect.\n\nnamespace MinerWars.AppCode.Game.TransparentGeometry\n{\n    using Vector2 = MinerWarsMath.Vector2;\n    using Vector3 = MinerWarsMath.Vector3;\n    using Vector4 = MinerWarsMath.Vector4;\n    using Rectangle = MinerWarsMath.Rectangle;\n    using Matrix = MinerWarsMath.Matrix;\n    using Color = MinerWarsMath.Color;\n    using BoundingBox = MinerWarsMath.BoundingBox;\n    using BoundingSphere = MinerWarsMath.BoundingSphere;\n    using BoundingFrustum = MinerWarsMath.BoundingFrustum;\n\n\n    static class MyTransparentGeometry\n    {\n        #region Fields\n\n        static MyObjectsPool<MyAnimatedParticle> m_animatedParticles = new MyObjectsPool<MyAnimatedParticle>(MyTransparentGeometryConstants.MAX_NEW_PARTICLES_COUNT);\n\n        static MyObjectsPoolSimple<MyBillboard> m_preallocatedBillboards = new MyObjectsPoolSimple<MyBillboard>(MyTransparentGeometryConstants.MAX_TRANSPARENT_GEOMETRY_COUNT / 2);   //  Billboards that survive only 1 draw call (dust, reflector, ...)\n        static MyObjectsPoolSimple<MyBillboard> m_preallocatedParticleBillboards = new MyObjectsPoolSimple<MyBillboard>(MyTransparentGeometryConstants.MAX_TRANSPARENT_GEOMETRY_COUNT / 2);   //  Billboards that survive only 1 draw call (dust, reflector, ...)\n\n        static List<MyBillboard> m_sortedTransparentGeometry = new List<MyBillboard>(MyTransparentGeometryConstants.MAX_TRANSPARENT_GEOMETRY_COUNT); //  Used for drawing sorted particles\n        static List<MyBillboard> m_preparedTransparentGeometry = new List<MyBillboard>(MyTransparentGeometryConstants.MAX_TRANSPARENT_GEOMETRY_COUNT);\n        static List<MyBillboard> m_lowresTransparentGeometry = new List<MyBillboard>(MyTransparentGeometryConstants.MAX_TRANSPARENT_GEOMETRY_COUNT);\n\n        const int RENDER_BUFFER_SIZE = 4096;\n\n        //  For drawing particle billboards using vertex buffer\n        static MyTexture2D[] m_textures = new MyTexture2D[Enum.GetValues(typeof(MyTransparentGeometryTexturesEnum)).Length];\n        static MyVertexFormatTransparentGeometry[] m_vertices = new MyVertexFormatTransparentGeometry[MyTransparentGeometryConstants.MAX_TRANSPARENT_GEOMETRY_COUNT * MyTransparentGeometryConstants.VERTICES_PER_TRANSPARENT_GEOMETRY];\n\n        // This can be freed, but it would create holes in LOH, so let is allocated\n        static int[] m_indices = new int[MyTransparentGeometryConstants.MAX_TRANSPARENT_GEOMETRY_INDICES];\n\n        static MyTexture2D m_atlasTexture;\n\n        static VertexBuffer m_vertexBuffer;\n        static IndexBuffer m_indexBuffer;\n        static int m_startOffsetInVertexBuffer;\n        static int m_endOffsetInVertexBuffer;\n        \n        //Bounding sphere used to calculate nearby lights\n        static BoundingSphere m_boundingSphereForLights = new BoundingSphere();\n\n        //interpolated property used to calculate color for particles overdraw layer\n        static TransparentGeometry.Particles.MyAnimatedPropertyVector4 m_overDrawColorsAnim;\n        const int PARTICLES_OVERDRAW_MAX = 100;\n        static Viewport m_halfViewport = new Viewport();\n\n        public static Color ColorizeColor { get; set; }\n        public static Vector3 ColorizePlaneNormal { get; set; }\n        public static float ColorizePlaneDistance { get; set; }\n        public static bool EnableColorize { get; set; }\n        public static bool VisualiseOverdraw = false;  //must be public field because of obfuscation problems\n\n        static bool IsEnabled\n        {\n            get\n            {\n                return MyRender.IsModuleEnabled(MyRenderStage.AlphaBlend, MyRenderModuleEnum.TransparentGeometry) \n                    || MyRender.IsModuleEnabled(MyRenderStage.AlphaBlendPreHDR, MyRenderModuleEnum.TransparentGeometry)\n                    || MyRender.IsModuleEnabled(MyRenderStage.AlphaBlend, MyRenderModuleEnum.TransparentGeometryForward);\n            }\n        }\n\n        #endregion\n\n        #region Constructor\n\n        static MyTransparentGeometry()\n        {\n            MyRender.RegisterRenderModule(MyRenderModuleEnum.TransparentGeometry, \"Transparent geometry\", Draw, MyRenderStage.AlphaBlendPreHDR, 150, true);\n            \n            //MyRender.RegisterRenderModule(MyRenderModuleEnum.TransparentGeometryForward, \"Transparent geometry forward\", DrawForward, MyRenderStage.AlphaBlend, 150, true);\n            \n            MyParticlesLibrary.Init();\n\n            int v = 0;\n            for (int i = 0; i < m_indices.Length; i += 6)\n            {\n                m_indices[i + 0] = v + 0;\n                m_indices[i + 1] = v + 1;\n                m_indices[i + 2] = v + 2;\n\n                m_indices[i + 3] = v + 0;\n                m_indices[i + 4] = v + 2;\n                m_indices[i + 5] = v + 3;\n\n                v += MyTransparentGeometryConstants.VERTICES_PER_TRANSPARENT_GEOMETRY;\n            }   \n        }\n\n        #endregion\n\n        #region Load/unload content\n\n        public static void LoadData()\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyTransparentGeometry.LoadData\");\n\n            MyMwcLog.WriteLine(string.Format(\"MyTransparentGeometry.LoadData - START\"));\n\n            m_animatedParticles.DeallocateAll();\n            m_preallocatedBillboards.ClearAllAllocated();\n            m_preallocatedParticleBillboards.ClearAllAllocated();\n\n            m_sortedTransparentGeometry.Clear();\n\n            m_preparedTransparentGeometry.Clear();\n            m_lowresTransparentGeometry.Clear();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        /// <summary>\n        /// Loads the content.\n        /// </summary>\n        public static void LoadContent()\n        {                 \n            MyMwcLog.WriteLine(\"TransparentGeometry.LoadContent() - START\");\n            MyMwcLog.IncreaseIndent();\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"TransparentGeometry.LoadContent\");\n\n            //  Max count of all particles should be less or equal than max count of billboards\n            MyCommonDebugUtils.AssertRelease(MyTransparentGeometryConstants.MAX_PARTICLES_COUNT <= MyTransparentGeometryConstants.MAX_TRANSPARENT_GEOMETRY_COUNT);\n            MyCommonDebugUtils.AssertRelease(MyTransparentGeometryConstants.MAX_COCKPIT_PARTICLES_COUNT <= MyTransparentGeometryConstants.MAX_TRANSPARENT_GEOMETRY_COUNT);\n\n            //Prepare data for atlas\n            List<string> atlasTextures = new List<string>();\n            Dictionary<MyTransparentMaterialEnum, int> atlasMaterials = new Dictionary<MyTransparentMaterialEnum, int>();\n            foreach (MyTransparentMaterialEnum materialEnum in Enum.GetValues(typeof(MyTransparentMaterialEnum)))\n            {\n                MyTransparentMaterialProperties materialProperties = MyTransparentMaterialConstants.GetMaterialProperties(materialEnum);\n                if (materialProperties.UseAtlas)\n                {\n                    int i = (int)materialProperties.Texture;\n                    string texturePath = \"Textures\\\\\" + MyEnumsToStrings.Particles[i];\n                    if (!atlasTextures.Contains(texturePath))\n                        atlasTextures.Add(texturePath);\n                    atlasMaterials.Add(materialEnum, atlasTextures.IndexOf(texturePath));\n                }\n            }\n            string[] atlasTexturesArray = atlasTextures.ToArray();\n            MyAtlasTextureCoordinate[] m_textureCoords;\n            //Load atlas\n            MyUtils.LoadTextureAtlas(atlasTexturesArray, \"Textures\\\\Particles\\\\\", MyMinerGame.Static.RootDirectory + \"\\\\Textures\\\\Particles\\\\ParticlesAtlas.tai\", out m_atlasTexture, out m_textureCoords);\n            \n            //Assign atlas coordinates to materials UV\n            foreach(KeyValuePair<MyTransparentMaterialEnum, int> pair in atlasMaterials)\n            {\n                MyTransparentMaterialEnum materialEnum = pair.Key;\n                MyTransparentMaterialProperties materialProperties = MyTransparentMaterialConstants.GetMaterialProperties(materialEnum);\n\n                materialProperties.UVOffset = m_textureCoords[pair.Value].Offset;\n                materialProperties.UVSize = m_textureCoords[pair.Value].Size;\n            }\n\n            m_vertexBuffer = new VertexBuffer(MyMinerGame.Static.GraphicsDevice, MyVertexFormatTransparentGeometry.Stride * MyTransparentGeometryConstants.MAX_TRANSPARENT_GEOMETRY_COUNT * MyTransparentGeometryConstants.VERTICES_PER_TRANSPARENT_GEOMETRY, Usage.WriteOnly | Usage.Dynamic, VertexFormat.None, Pool.Default);\n            m_startOffsetInVertexBuffer = 0;\n            m_endOffsetInVertexBuffer = 0;\n            m_vertexBuffer.DebugName = \"TransparentGeometry\";\n\n            m_indexBuffer = new IndexBuffer(MyMinerGame.Static.GraphicsDevice, MyTransparentGeometryConstants.MAX_TRANSPARENT_GEOMETRY_INDICES * sizeof(int), Usage.WriteOnly, Pool.Default, false);\n            m_indexBuffer.Lock(0, 0, LockFlags.None).WriteRange(m_indices);\n            m_indexBuffer.Unlock();\n\n            for (int i = 0; i < m_textures.GetLength(0); i++)\n            {\n                string toRemoveFromAtlas = \"Textures\\\\\" + MyEnumsToStrings.Particles[i];\n                if (!atlasTextures.Contains(toRemoveFromAtlas))\n                {\n                    string contentPath = \"Textures\\\\Particles\\\\\" + MyEnumsToStrings.Particles[i].Remove(MyEnumsToStrings.Particles[i].Length - 4);\n                    m_textures[i] = MyTextureManager.GetTexture<MyTexture2D>(contentPath);\n                }\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"TransparentGeometry.LoadContent() - END\");  \n        }\n\n        /// <summary>\n        /// Unloads the content.\n        /// </summary>\n        public static void UnloadContent()\n        {\n            MyMwcLog.WriteLine(\"TransparentGeometry.UnloadContent - START\");\n            MyMwcLog.IncreaseIndent();\n\n            \n            if (m_indexBuffer != null)\n            {\n                m_indexBuffer.Dispose();\n                m_indexBuffer = null;\n            }\n\n            if (m_vertexBuffer != null)\n            {\n                m_vertexBuffer.Dispose();\n                m_vertexBuffer = null;\n            }\n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"TransparentGeometry.UnloadContent - END\");\n\n        }\n\n\n        #endregion\n\n        #region Adding billboards/particles\n\n        public static MyAnimatedParticle AddAnimatedParticle()\n        {\n            return m_animatedParticles.Allocate(true);\n        }\n\n        public static void DeallocateAnimatedParticle(MyAnimatedParticle particle)\n        {\n            m_animatedParticles.Deallocate(particle);\n        }\n\n        //  Add billboard for one frame only. This billboard isn't particle (it doesn't survive this frame, doesn't have update/draw methods, etc).\n        //  It's used by other classes when they want to draw some billboard (e.g. rocket thrusts, reflector glare).\n        public static void AddLineBillboard(MyTransparentMaterialEnum materialEnum,\n            Vector4 color, Vector3 origin, Vector3 directionNormalized, float length, float thickness, int priority = 0, bool near = false)\n        {\n            if (!IsEnabled) return;\n\n            MyUtils.AssertIsValid(origin);\n            MyUtils.AssertIsValid(length);\n            MyCommonDebugUtils.AssertDebug(length > 0);\n            MyCommonDebugUtils.AssertDebug(thickness > 0);\n\n            MyBillboard billboard = m_preallocatedBillboards.Allocate();\n            if (billboard == null)\n                return;\n\n            billboard.Priority = priority;\n\n            MyPolyLine polyLine;\n            polyLine.LineDirectionNormalized = directionNormalized;\n            polyLine.Point0 = origin;\n            polyLine.Point1 = origin + directionNormalized * length;\n            polyLine.Thickness = thickness;\n\n            MyQuad quad;\n            MyUtils.GetPolyLineQuad(out quad, ref polyLine);\n\n            billboard.Start(ref quad, materialEnum, ref color, ref origin, false, near);\n        }\n\n        public static void AddLineBillboard2(MyTransparentMaterialEnum materialEnum,\n          Vector4 color, Vector3 start, Vector3 end, float thickness, int priority = 0, bool near = false)\n        {\n            if (!IsEnabled) return;\n\n            Vector3 dir = end - start;\n            float length = dir.Length();\n            dir.Normalize();\n\n            AddLineBillboard(materialEnum, color,\n                start, dir, length, thickness, priority, near);\n        }\n\n        //  Add billboard for one frame only. This billboard isn't particle (it doesn't survive this frame, doesn't have update/draw methods, etc).\n        //  It's used by other classes when they want to draw some billboard (e.g. rocket thrusts, reflector glare).\n        public static void AddPointBillboard(MyTransparentMaterialEnum materialEnum,\n            Vector4 color, Vector3 origin, float radius, float angle, int priority = 0, bool colorize = false, bool near = false, bool lowres = false)\n        {\n            if (!IsEnabled) return;\n\n            MyUtils.AssertIsValid(origin);\n            MyUtils.AssertIsValid(angle);\n\n            MyQuad quad;\n            if (MyUtils.GetBillboardQuadAdvancedRotated(out quad, origin, radius, angle, MyCamera.Position) != false)\n            {\n                MyBillboard billboard = m_preallocatedBillboards.Allocate();\n                if (billboard == null)\n                    return;\n\n                billboard.Priority = priority;\n                billboard.Start(ref quad, materialEnum, ref color, ref origin, colorize, near, lowres);\n            }\n        }\n\n        //  Add billboard for one frame only. This billboard isn't particle (it doesn't survive this frame, doesn't have update/draw methods, etc).\n        //  This billboard isn't facing the camera. It's always oriented in specified direction. May be used as thrusts, or inner light of reflector.\n        //  It's used by other classes when they want to draw some billboard (e.g. rocket thrusts, reflector glare).\n        public static void AddBillboardOriented(MyTransparentMaterialEnum materialEnum,\n            Vector4 color, Vector3 origin, Vector3 leftVector, Vector3 upVector, float radius, int priority = 0, bool colorize = false)\n        {\n            if (!IsEnabled) return;\n\n            MyUtils.AssertIsValid(origin);\n            MyUtils.AssertIsValid(leftVector);\n            MyUtils.AssertIsValid(upVector);\n            MyUtils.AssertIsValid(radius);\n            MyCommonDebugUtils.AssertDebug(radius > 0);\n\n\n            MyBillboard billboard = m_preallocatedBillboards.Allocate();\n            if (billboard == null)\n                return;\n\n            billboard.Priority = priority;\n\n            MyQuad quad;\n            MyUtils.GetBillboardQuadOriented(out quad, ref origin, radius, ref leftVector, ref upVector);\n\n            billboard.Start(ref quad, materialEnum, ref color, ref origin, colorize);\n        }\n\n        //  Add billboard for one frame only. This billboard isn't particle (it doesn't survive this frame, doesn't have update/draw methods, etc).\n        //  This billboard isn't facing the camera. It's always oriented in specified direction. May be used as thrusts, or inner light of reflector.\n        //  It's used by other classes when they want to draw some billboard (e.g. rocket thrusts, reflector glare).\n        public static void AddBillboardOriented(MyTransparentMaterialEnum materialEnum,\n            Vector4 color, Vector3 origin, Vector3 leftVector, Vector3 upVector, float width, float height, int priority = 0, bool colorize = false)\n        {\n            AddBillboardOriented(materialEnum, color, origin, leftVector, upVector, width, height, Vector2.Zero, priority, colorize);\n        }\n\n        public static void AddBillboardOriented(MyTransparentMaterialEnum materialEnum,\n            Vector4 color, Vector3 origin, Vector3 leftVector, Vector3 upVector, float width, float height, Vector2 uvOffset, int priority = 0, bool colorize = false)\n        {\n            if (!IsEnabled) return;\n\n            MyBillboard billboard = m_preallocatedBillboards.Allocate();\n            if (billboard == null)\n                return;\n\n            billboard.Priority = priority;\n\n            MyQuad quad;\n            MyUtils.GetBillboardQuadOriented(out quad, ref origin, width, height, ref leftVector, ref upVector);\n\n            billboard.Start(ref quad, materialEnum, ref color, ref origin, uvOffset, colorize);\n        }\n\n        public static bool AddQuad(MyTransparentMaterialEnum materialEnum, ref MyQuad quad, ref Vector4 color, ref Vector3 vctPos, int priority = 0)\n        {\n            if (!IsEnabled) return false;\n\n            MyUtils.AssertIsValid(quad.Point0);\n            MyUtils.AssertIsValid(quad.Point1);\n            MyUtils.AssertIsValid(quad.Point2);\n            MyUtils.AssertIsValid(quad.Point3);\n\n            MyBillboard billboard = m_preallocatedBillboards.Allocate();\n            if (billboard == null)\n                return false;\n\n            billboard.Priority = priority;\n\n            billboard.Start(ref quad, materialEnum, ref color, ref vctPos);\n            return true;\n        }\n\n        //  Call this at the start of every Draw() call. It will not delete one-time billboards.\n        public static void ClearBillboards()\n        {\n            m_preallocatedBillboards.ClearAllAllocated();\n            m_preallocatedParticleBillboards.ClearAllAllocated();\n        }\n\n\n        public static MyBillboard AddBillboardParticle(MyAnimatedParticle particle, MyBillboard effectBillboard, bool sort)\n        {\n            MyBillboard billboard = m_preallocatedParticleBillboards.Allocate();\n            if (billboard != null)\n            {\n                MyTransparentGeometry.StartParticleProfilingBlock(\"item.Value.Draw\");\n                if (particle.Draw(billboard) == true)\n                {\n                    if (sort)\n                    {\n                        //  m_sortedTransparentGeometry.Add(billboard);\n                    }\n                    else\n                        effectBillboard.ContainedBillboards.Add(billboard);\n\n                    MyPerformanceCounter.PerCameraDraw.NewParticlesCount++;\n                }\n\n                MyTransparentGeometry.EndParticleProfilingBlock();\n            }\n\n            return billboard;\n        }\n\n        public static void AddBillboardToSortingList(MyBillboard billboard)\n        {\n            if (!IsEnabled) return;\n\n            m_sortedTransparentGeometry.Add(billboard);\n        }\n\n        public static MyBillboard AddBillboardEffect(MyParticleEffect effect)\n        {\n            MyBillboard billboard = m_preallocatedParticleBillboards.Allocate();\n            if (billboard != null)\n            {\n                billboard.ContainedBillboards.Clear();\n\n                MyTransparentGeometry.StartParticleProfilingBlock(\"AddBillboardEffect\");\n\n                billboard.DistanceSquared = Vector3.DistanceSquared(MyCamera.Position, effect.WorldMatrix.Translation);\n\n                billboard.Lowres = effect.LowRes || MyRenderConstants.RenderQualityProfile.LowResParticles;\n\n                MyTransparentGeometry.EndParticleProfilingBlock();\n            }\n            return billboard;\n        }\n\n        \n        #endregion\n\n        #region Background worker\n\n        static void PrepareVertexBuffer()\n        {\n            //  Billboards by distance to camera (back-to-front)\n            m_sortedTransparentGeometry.Clear();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"CopyBillboardsToSortingList sorted\");\n            CopyBillboardsToSortingList(m_preallocatedBillboards, true);\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"CopyAnimatedParticlesToSortingList\");\n            CopyAnimatedParticlesToSortingList(m_animatedParticles);\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Sort\");\n            m_sortedTransparentGeometry.Sort();\n\n            MyPerformanceCounter.PerCameraDraw.BillboardsSorted = m_sortedTransparentGeometry.Count;\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"CopyBillboardsToSortingList unsorted\");\n            CopyBillboardsToSortingList(m_preallocatedBillboards, false);\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"ProcessSortedBillboards\");\n            ProcessSortedBillboards();\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        #endregion \n\n        #region Draw\n\n        public static void DrawForward()\n        {\n            if (!MyRenderConstants.RenderQualityProfile.ForwardRender)\n                return;\n\n            Draw();\n        }\n\n        public static void Draw()\n        {   \n            MyStateObjects.AlphaBlend_NoAlphaWrite_BlendState.Apply();\n\n            MyTransparentGeometry.Draw(Render.MyRender.GetRenderTarget(Render.MyRenderTargets.Depth));\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().ProfileCustomValue(\"Particles count\", MyPerformanceCounter.PerCameraDraw.NewParticlesCount);\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().ProfileCustomValue(\"Billboard drawcalls\", MyPerformanceCounter.PerCameraDraw.BillboardsDrawCalls);\n        }\n\n\n        //  Draws and updates active particles. If particle dies/timeouts, remove it from the list.\n        //  This method is in fact update+draw.\n        //  If drawNormalParticles = true, then normal particles are drawn. If drawNormalParticles=false, then in-cockpit particles are drawn.\n        static void Draw(Texture depthForParticlesRT)\n        {        \n            PrepareVertexBuffer();\n\n            bool setClipPlanes = !MyRenderConstants.RenderQualityProfile.ForwardRender && MyRender.CurrentRenderSetup.CallerID.Value == MyRenderCallerEnum.Main;\n            if (setClipPlanes)\n                MyCamera.SetParticleClipPlanes(true);\n                 \n            if (!VisualiseOverdraw && (!MyRenderConstants.RenderQualityProfile.ForwardRender))\n            {\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"CopyToVertexBuffer Lowres\");\n                CopyToVertexBuffer(m_lowresTransparentGeometry);\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"DrawVertexBuffer Lowres\");\n\n                MyRenderTargets lowresTarget = MyRenderTargets.AuxiliaryHalf0;\n                MyMinerGame.SetRenderTarget(MyRender.GetRenderTarget(lowresTarget), null);\n                MyMinerGame.Static.GraphicsDevice.Clear(ClearFlags.All, new ColorBGRA(0), 1, 0);\n\n                m_halfViewport.Width = MyRender.GetRenderTarget(lowresTarget).GetLevelDescription(0).Width;\n                m_halfViewport.Height = MyRender.GetRenderTarget(lowresTarget).GetLevelDescription(0).Height;\n                MyMinerGame.Static.SetDeviceViewport(m_halfViewport);\n\n                //  Pre-multiplied alpha\n                BlendState.AlphaBlend.Apply();\n                DrawVertexBuffer(MyRender.GetRenderTarget(MyRenderTargets.Depth), m_lowresTransparentGeometry);\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n                MyRender.TakeScreenshot(\"LowresParticles\", MyRender.GetRenderTarget(lowresTarget), MyEffectScreenshot.ScreenshotTechniqueEnum.Default);\n\n                MyMinerGame.SetRenderTarget(MyRender.GetRenderTarget(MyRenderTargets.Auxiliary1), null);\n                MyMinerGame.Static.SetDeviceViewport(MyCamera.Viewport);\n\n                MyStateObjects.AlphaBlend_NoAlphaWrite_BlendState.Apply();\n                MyRender.Blit(MyRender.GetRenderTarget(lowresTarget), false, MyEffectScreenshot.ScreenshotTechniqueEnum.LinearScale);\n\n                \n            }   \n                \n\n            //  Render\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"CopyToVertexBuffer\");\n            CopyToVertexBuffer(m_preparedTransparentGeometry);\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"DrawVertexBuffer\");\n            //  Pre-multiplied alpha with disabled alpha write\n            MyStateObjects.AlphaBlend_NoAlphaWrite_BlendState.Apply();\n            DrawVertexBuffer(depthForParticlesRT, m_preparedTransparentGeometry);\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n                        \n\n            BlendState.Opaque.Apply();\n            if (setClipPlanes)\n                MyCamera.ResetClipPlanes(true);\n\n            //Now we dont need billboards anymore and we can clear them\n            ClearBillboards();  \n        }\n\n\n        static void ProcessSortedBillboards()\n        {\n            //replace contained billboards, move lowres billboards\n            int c = 0;\n            m_lowresTransparentGeometry.Clear();\n            m_preparedTransparentGeometry.Clear();\n            while (c < m_sortedTransparentGeometry.Count)\n            {\n                MyBillboard billboard = m_sortedTransparentGeometry[c];\n\n                if (billboard.Lowres)\n                {\n                    if (billboard.ContainedBillboards.Count > 0)\n                    {\n                        m_lowresTransparentGeometry.AddRange(billboard.ContainedBillboards);\n                    }\n                    else\n                    {\n                        m_lowresTransparentGeometry.Add(billboard);\n                    }\n                }\n                else\n                {\n                    if (billboard.ContainedBillboards.Count > 0)\n                    {\n                        m_preparedTransparentGeometry.AddRange(billboard.ContainedBillboards);\n                    }\n                    else\n                    {\n                        m_preparedTransparentGeometry.Add(billboard);\n                    }\n                }\n                \n                c++;\n            }\n        }\n\n        static void CopyBillboardsToSortingList(MyObjectsPoolSimple<MyBillboard> billboards, bool sortedMaterials)\n        {\n            for (int i = 0; i < billboards.GetAllocatedCount(); i++)\n            {\n                MyBillboard billboard = billboards.GetAllocatedItem(i);\n                MyTransparentMaterialProperties materialProperties = MyTransparentMaterialConstants.GetMaterialProperties(billboard.MaterialEnum);\n                if ((materialProperties.NeedSort && sortedMaterials)\n                    ||\n                    (!materialProperties.NeedSort && !sortedMaterials))\n                    m_sortedTransparentGeometry.Add(billboard);\n            }\n        }\n\n       \n        static void CopyAnimatedParticlesToSortingList(MyObjectsPool<MyAnimatedParticle> particles)\n        {\n            if (!MyParticlesManager.Enabled)\n            {\n                m_preallocatedBillboards.ClearAllAllocated();\n                return;\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyParticlesManager.Draw()\");\n\n            //MyParticlesManager.PrepareForDraw();\n            MyParticlesManager.Draw();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n\n        /// <summary>\n        /// Copies to vertex buffer.\n        /// </summary>\n        static void CopyToVertexBuffer(List<MyBillboard> billboards)\n        {\n            // Loop over in parallel tasks\n            //Parallel.For(0, m_sortedTransparentGeometry.Count, m_copyGeometryToVertexBuffer);\n\n            int verticesCount = billboards.Count * MyTransparentGeometryConstants.VERTICES_PER_TRANSPARENT_GEOMETRY;\n\n            LockFlags lockFlags = LockFlags.NoOverwrite;\n\n            if (verticesCount + m_endOffsetInVertexBuffer > MyTransparentGeometryConstants.MAX_TRANSPARENT_GEOMETRY_VERTICES)\n            {\n                m_startOffsetInVertexBuffer = 0;\n                lockFlags = LockFlags.Discard;\n            }\n            else\n                m_startOffsetInVertexBuffer = m_endOffsetInVertexBuffer;\n\n            for (int i = 0; i < billboards.Count; i++)\n            {\n                CopyBillboardToVertices(i, billboards[i]);\n            }\n\n            if (billboards.Count > 0)\n            {\n                m_vertexBuffer.Lock(m_startOffsetInVertexBuffer * MyVertexFormatTransparentGeometry.Stride, verticesCount * MyVertexFormatTransparentGeometry.Stride, lockFlags).WriteRange(m_vertices, 0, verticesCount);\n                m_vertexBuffer.Unlock();\n            }\n            m_endOffsetInVertexBuffer = m_startOffsetInVertexBuffer + verticesCount;\n            //m_startOffsetInVertexBuffer = 0;\n        }\n\n        /// <summary>\n        /// Copies the billboard to vertex buffer.\n        /// </summary>\n        /// <param name=\"billboarIdx\">The billboar idx.</param>\n        static void CopyBillboardToVertices(int billboarIdx, MyBillboard billboard)\n        {\n            int startIndex = (billboarIdx) * MyTransparentGeometryConstants.VERTICES_PER_TRANSPARENT_GEOMETRY;\n            HalfVector4 colorHalf = new HalfVector4(billboard.Color);\n            MyTransparentMaterialProperties materialProperties = MyTransparentMaterialConstants.GetMaterialProperties(billboard.MaterialEnum);\n\n            MyUtils.AssertIsValid(billboard.Position0);\n            MyUtils.AssertIsValid(billboard.Position1);\n            MyUtils.AssertIsValid(billboard.Position2);\n            MyUtils.AssertIsValid(billboard.Position3);\n\n            m_vertices[startIndex + 0].Position = billboard.Position0;\n            m_vertices[startIndex + 0].Color = colorHalf;\n            m_vertices[startIndex + 0].TexCoord = new HalfVector4(materialProperties.UVOffset.X + billboard.UVOffset.X, materialProperties.UVOffset.Y + billboard.UVOffset.Y, billboard.BlendTextureRatio, materialProperties.Emissivity);\n            \n            m_vertices[startIndex + 1].Position = billboard.Position1;\n            m_vertices[startIndex + 1].Color = colorHalf;\n            m_vertices[startIndex + 1].TexCoord = new HalfVector4(materialProperties.UVOffset.X + materialProperties.UVSize.X + billboard.UVOffset.X, materialProperties.UVOffset.Y + billboard.UVOffset.Y, billboard.BlendTextureRatio, materialProperties.Emissivity);\n            \n            m_vertices[startIndex + 2].Position = billboard.Position2;\n            m_vertices[startIndex + 2].Color = colorHalf;\n            m_vertices[startIndex + 2].TexCoord = new HalfVector4(materialProperties.UVOffset.X + materialProperties.UVSize.X + billboard.UVOffset.X, materialProperties.UVOffset.Y + materialProperties.UVSize.Y + billboard.UVOffset.Y, billboard.BlendTextureRatio, materialProperties.Emissivity);\n            \n            m_vertices[startIndex + 3].Position = billboard.Position3;\n            m_vertices[startIndex + 3].Color = colorHalf;\n            m_vertices[startIndex + 3].TexCoord = new HalfVector4(materialProperties.UVOffset.X + billboard.UVOffset.X, materialProperties.UVOffset.Y + materialProperties.UVSize.Y + billboard.UVOffset.Y, billboard.BlendTextureRatio, materialProperties.Emissivity);\n            \n            if (billboard.BlendTextureRatio > 0)\n            {\n                MyTransparentMaterialProperties blendMaterialProperties = MyTransparentMaterialConstants.GetMaterialProperties(billboard.BlendMaterial);\n                m_vertices[startIndex + 0].TexCoord2 = new HalfVector2(blendMaterialProperties.UVOffset.X + billboard.UVOffset.X, blendMaterialProperties.UVOffset.Y + billboard.UVOffset.Y);\n                m_vertices[startIndex + 1].TexCoord2 = new HalfVector2(blendMaterialProperties.UVOffset.X + blendMaterialProperties.UVSize.X + billboard.UVOffset.X, blendMaterialProperties.UVOffset.Y + billboard.UVOffset.Y);\n                m_vertices[startIndex + 2].TexCoord2 = new HalfVector2(blendMaterialProperties.UVOffset.X + blendMaterialProperties.UVSize.X + billboard.UVOffset.X , blendMaterialProperties.UVOffset.Y + blendMaterialProperties.UVSize.Y + billboard.UVOffset.Y);\n                m_vertices[startIndex + 3].TexCoord2 = new HalfVector2(blendMaterialProperties.UVOffset.X + billboard.UVOffset.X, blendMaterialProperties.UVOffset.Y + blendMaterialProperties.UVSize.Y + billboard.UVOffset.Y);\n            }\n\n            /*\n            m_vertices[startIndex + 3].Position = billboard.Position0;\n            m_vertices[startIndex + 3].Color = colorHalf;\n            m_vertices[startIndex + 3].TexCoord = new HalfVector4(0, 0, billboard.BlendTextureRatio, 0);\n\n            m_vertices[startIndex + 4].Position = billboard.Position2;\n            m_vertices[startIndex + 4].Color = colorHalf;\n            m_vertices[startIndex + 4].TexCoord = new HalfVector4(1, 1, billboard.BlendTextureRatio, 0);\n\n            m_vertices[startIndex + 5].Position = billboard.Position3;\n            m_vertices[startIndex + 5].Color = colorHalf;\n            m_vertices[startIndex + 5].TexCoord = new HalfVector4(0, 1, billboard.BlendTextureRatio, 0);\n             * */\n        }\n\n\n        static void DrawBuffer(int firstIndex, int primitivesCount)\n        {\n            //baseVertexIndex - start of part VB which ATI copy to internal buffer\n            //minVertexIndex - relative value each index is decremented do get correct index to internal VB buffer part\n            MyMinerGame.Static.GraphicsDevice.DrawIndexedPrimitive(PrimitiveType.TriangleList, m_startOffsetInVertexBuffer, firstIndex / 3 * 2, primitivesCount * MyTransparentGeometryConstants.VERTICES_PER_TRIANGLE, firstIndex, primitivesCount);\n            MyPerformanceCounter.PerCameraDraw.TotalDrawCalls++;\n        }\n\n\n\n        static void DrawVertexBuffer(Texture depthForParticlesRT, List<MyBillboard> billboards)\n        {    \n            //  This is important for optimalization (although I don't know when it can happen to have zero billboards), but\n            //  also that loop below needs it - as it assumes we are rendering at least one billboard.\n            if (billboards.Count == 0)\n                return;\n\n            Device device = MyMinerGame.Static.GraphicsDevice;\n            Surface oldTargets = null;\n\n            if (VisualiseOverdraw)\n            {\n                oldTargets = device.GetRenderTarget(0);\n\n                //We borrow lod0normals to render stencil\n                MyMinerGame.SetRenderTarget(MyRender.GetRenderTarget(MyRenderTargets.Auxiliary0), null);\n                device.Clear(ClearFlags.Target | ClearFlags.Stencil, new ColorBGRA(0), 1.0f, 0);\n\n                MyStateObjects.StencilMask_AlwaysIncrement_DepthStencilState.Apply();\n            }\n            else\n            {\n                if (MyRenderConstants.RenderQualityProfile.ForwardRender)\n                    DepthStencilState.DepthRead.Apply();\n                else\n                    DepthStencilState.None.Apply();\n            }\n\n            //  Draw particles without culling. It's because how we calculate left/up vector, we can have problems in back camera. (yes, that can be solved, but why bother...)\n            //  Also I guess that drawing without culling may be faster - as GPU doesn't have to check it\n            RasterizerState.CullNone.Apply();\n\n            MyEffectTransparentGeometry effect = MyRender.GetEffect(MyEffects.TransparentGeometry) as MyEffectTransparentGeometry;\n\n            effect.SetWorldMatrix(Matrix.Identity);\n\n            effect.SetViewMatrix(ref MyCamera.ViewMatrix);\n\n            effect.SetProjectionMatrix(ref MyCamera.ProjectionMatrix);\n\n            //MyMinerGame.Static.GraphicsDevice.Viewport = MyCamera.ForwardViewport;\n\n            if (!MyRenderConstants.RenderQualityProfile.ForwardRender)\n            {\n                effect.SetDepthsRT(depthForParticlesRT);\n                effect.SetHalfPixel(depthForParticlesRT.GetLevelDescription(0).Width, depthForParticlesRT.GetLevelDescription(0).Height);\n                effect.SetScale(MyRender.GetScaleForViewport(depthForParticlesRT));\n            }\n\n\n            //For struct size checks\n            //int stride = MyVertexFormatTransparentGeometry.VertexDeclaration.VertexStride;\n            //int s = Marshal.SizeOf(new MyVertexFormatTransparentGeometry());\n\n\n            //  We iterate over all sorted billboards, and seach for when texture/shader has changed.\n            //  We try to draw as many billboards as possible (using the same texture), but because we are rendering billboards\n            //  sorted by depth, we still need to switch sometimes. Btw: I have observed, that most time consuming when drawing particles\n            //  is device.DrawUserPrimitives(), even if I call it for the whole list of billboards (without this optimization). I think, it's\n            //  because particles are pixel-bound (I do a lot of light calculation + there is blending, which is always slow).\n            MyTransparentMaterialEnum? lastMaterialEnum = billboards[0].MaterialEnum;\n\n            MyTransparentMaterialProperties materialProperties = MyTransparentMaterialConstants.GetMaterialProperties(lastMaterialEnum.Value);\n            MyBillboard lastBillboard = billboards[0];\n            MyTransparentMaterialEnum lastBlendMaterial = lastBillboard.BlendMaterial;\n\n            // 0.05% of billboard is blended\n            const float softColorizeSize = 0.05f;\n\n            device.VertexDeclaration = MyVertexFormatTransparentGeometry.VertexDeclaration;\n            device.SetStreamSource(0, m_vertexBuffer, 0, MyVertexFormatTransparentGeometry.Stride);\n            device.Indices = m_indexBuffer;\n\n            MyRender.GetShadowRenderer().SetupShadowBaseEffect(effect);\n\n            MyEffectTransparentGeometry effect2 = MyRender.GetEffect(MyEffects.TransparentGeometry) as MyEffectTransparentGeometry;\n            effect2.SetShadowBias(0.001f);\n            MyLights.UpdateEffectReflector(effect2.Reflector, false);\n            m_boundingSphereForLights.Center = MyCamera.Position;\n            m_boundingSphereForLights.Radius = 200;\n            MyLights.UpdateEffect(effect2, ref m_boundingSphereForLights, false);\n\n\n            int geomCount = billboards.Count;\n            int it = 0;\n            int cnt = 0;\n            \n            while (geomCount > 0)\n            {\n                if (geomCount > RENDER_BUFFER_SIZE)\n                {\n                    geomCount -= RENDER_BUFFER_SIZE;\n                    cnt = RENDER_BUFFER_SIZE;\n                }\n                else\n                {\n                    cnt = geomCount;\n                    geomCount = 0;\n                }\n\n                int indexFrom = it * RENDER_BUFFER_SIZE + 1;\n                cnt = cnt + indexFrom - 1;\n                for (int i = indexFrom; i <= cnt; i++)\n                {\n                    //  We need texture from billboard that's before the current billboard (because we always render \"what was\")\n                    MyBillboard billboard = billboards[i - 1];\n                    MyTransparentMaterialProperties blendMaterialProperties = MyTransparentMaterialConstants.GetMaterialProperties(billboard.BlendMaterial);\n                    MyTransparentMaterialProperties lastBlendMaterialProperties = MyTransparentMaterialConstants.GetMaterialProperties(lastBlendMaterial);\n\n                    bool colorizeChanged = EnableColorize && lastBillboard.EnableColorize != billboard.EnableColorize;\n                    bool nearChanged = lastBillboard.Near != billboard.Near;\n                    bool sizeChanged = EnableColorize && billboard.EnableColorize && lastBillboard.Size != billboard.Size;\n                    bool blendTextureChanged = false;\n\n                    if (lastBlendMaterial != billboard.BlendMaterial && billboard.BlendTextureRatio > 0)\n                    {\n                        if ((lastBlendMaterialProperties.UseAtlas) && (blendMaterialProperties.UseAtlas))\n                            blendTextureChanged = false;\n                        else\n                            blendTextureChanged = true;\n                    }\n\n                    //bool blendTextureChanged = lastBlendTexture != billboard.BlendTexture;\n                    bool billboardChanged = colorizeChanged || sizeChanged || blendTextureChanged || nearChanged;\n\n                    MyTransparentMaterialProperties actMaterialProperties = MyTransparentMaterialConstants.GetMaterialProperties(billboard.MaterialEnum);\n                    MyTransparentMaterialProperties lastMaterialProperties = MyTransparentMaterialConstants.GetMaterialProperties(lastMaterialEnum.Value);\n\n                    billboardChanged |= (actMaterialProperties.CanBeAffectedByOtherLights != lastMaterialProperties.CanBeAffectedByOtherLights)\n                                    || (actMaterialProperties.IgnoreDepth != lastMaterialProperties.IgnoreDepth);\n\n\n                    if (!billboardChanged)\n                    {\n                        if (billboard.MaterialEnum != lastMaterialEnum)\n                        {\n                            if (actMaterialProperties.UseAtlas && lastMaterialProperties.UseAtlas)\n                                billboardChanged = false;\n                            else\n                                billboardChanged = true;\n                        }\n                    }\n\n                    //  If texture is different than the last one, or if we reached end of billboards\n                    if ((i == cnt) || billboardChanged)\n                    {\n                        //  We don't need to do this when we reach end of billboards - it's needed only if we do next iteration of possible billboards\n                        if ((i != cnt) || billboardChanged)\n                        {\n                            if ((i - indexFrom) > 0)\n                            {\n                                int firstIndex = (indexFrom - 1) * MyTransparentGeometryConstants.INDICES_PER_TRANSPARENT_GEOMETRY; //MyTransparentGeometryConstants.VERTICES_PER_TRANSPARENT_GEOMETRY;\n                              \n                                SetupEffect(ref materialProperties, lastBlendMaterialProperties, MyCamera.Position, EnableColorize && lastBillboard.EnableColorize, lastBillboard.Size * softColorizeSize, lastBillboard.Near);\n                                   \n                                if (lastBillboard.Near)\n                                    effect.SetProjectionMatrix(ref MyCamera.ProjectionMatrixForNearObjects);\n                                else\n                                    effect.SetProjectionMatrix(ref MyCamera.ProjectionMatrix);\n\n                                effect.Begin();\n                                DrawBuffer(firstIndex, (i - indexFrom) * MyTransparentGeometryConstants.TRIANGLES_PER_TRANSPARENT_GEOMETRY);\n                                effect.End();\n                                       \n                                MyPerformanceCounter.PerCameraDraw.BillboardsDrawCalls++;\n                            }\n\n                            lastMaterialEnum = billboard.MaterialEnum;\n                            lastBillboard = billboard;\n                            lastBlendMaterial = billboard.BlendMaterial;\n\n                            materialProperties = MyTransparentMaterialConstants.GetMaterialProperties(lastMaterialEnum.Value);\n                            indexFrom = i;\n                        }\n\n\n                        if ((i == cnt) && (i - indexFrom + 1 != 0))\n                        {\n                            materialProperties = MyTransparentMaterialConstants.GetMaterialProperties(lastBillboard.MaterialEnum);\n                            blendMaterialProperties = MyTransparentMaterialConstants.GetMaterialProperties(lastBillboard.BlendMaterial);\n                            int firstIndex = (indexFrom - 1) * MyTransparentGeometryConstants.INDICES_PER_TRANSPARENT_GEOMETRY;\n\n                            SetupEffect(ref materialProperties, blendMaterialProperties, MyCamera.Position, EnableColorize && billboard.EnableColorize, lastBillboard.Size * softColorizeSize, lastBillboard.Near);\n\n                            effect.Begin();\n                            DrawBuffer(firstIndex, (i - indexFrom + 1) * MyTransparentGeometryConstants.TRIANGLES_PER_TRANSPARENT_GEOMETRY);\n                            effect.End();\n\n                            MyPerformanceCounter.PerCameraDraw.BillboardsDrawCalls++;\n                        }\n                    }\n                }\n\n                it++;\n            }\n\n\n\n\n            device.SetStreamSource(0, null, 0, 0);\n\n            MyPerformanceCounter.PerCameraDraw.BillboardsInFrustum += billboards.Count;\n\n            // Visualize overdraw of particles. More overdraws = bigger performance issue.\n            if (VisualiseOverdraw)\n            {\n                if (m_overDrawColorsAnim == null)\n                {\n                    m_overDrawColorsAnim = new MyAnimatedPropertyVector4();\n                    m_overDrawColorsAnim.AddKey(0.0f, new Vector4(0.0f, 1.0f, 0.0f, 1.0f));\n                    m_overDrawColorsAnim.AddKey(0.25f, new Vector4(1.0f, 1.0f, 0.0f, 1.0f));\n                    m_overDrawColorsAnim.AddKey(0.75f, new Vector4(0.0f, 0.0f, 1.0f, 1.0f));\n                    m_overDrawColorsAnim.AddKey(1.0f, new Vector4(1.0f, 0.0f, 0.0f, 1.0f));\n                }\n\n                //Space without particles is black\n                device.Clear(ClearFlags.Target, new ColorBGRA(0) , 1.0f, 0);\n\n                for (int referenceStencil = 1; referenceStencil < PARTICLES_OVERDRAW_MAX; referenceStencil++)\n                {\n                    DepthStencilState ds = new DepthStencilState()\n                    {\n                        StencilEnable = true,\n                        ReferenceStencil = referenceStencil,\n                        StencilFunction =  Compare.LessEqual,\n                        DepthBufferEnable = false,\n                    };\n\n                    ds.Apply();\n\n                    float diff = (float)(referenceStencil - 1) / (PARTICLES_OVERDRAW_MAX - 1);\n                    Vector4 referenceColorV4;\n                    m_overDrawColorsAnim.GetInterpolatedValue<Vector4>(diff, out referenceColorV4);\n                    Color referenceColor = new Color(referenceColorV4);\n\n                    Game.GUI.Core.MyGuiManager.DrawSpriteFast(Game.GUI.Core.MyGuiManager.GetBlankTexture(), 0, 0, MyCamera.Viewport.Width, MyCamera.Viewport.Height, referenceColor);\n                }\n\n                DepthStencilState.None.Apply();\n\n                int leftStart = MyCamera.Viewport.Width / 4;\n                int topStart = (int)(MyCamera.Viewport.Height * 0.75f);\n\n                int size = MyCamera.Viewport.Width - 2 * leftStart;\n                int sizeY = (int)(MyCamera.Viewport.Width / 32.0f);\n                int sizeStep = size / PARTICLES_OVERDRAW_MAX;\n\n                for (int i = 0; i < PARTICLES_OVERDRAW_MAX; i++)\n                {\n                    float diff = (float)(i - 1) / (PARTICLES_OVERDRAW_MAX - 1);\n                    Vector4 referenceColorV4;\n                    m_overDrawColorsAnim.GetInterpolatedValue<Vector4>(diff, out referenceColorV4);\n                    Color referenceColor = new Color(referenceColorV4);\n\n                    Game.GUI.Core.MyGuiManager.DrawSpriteFast(Game.GUI.Core.MyGuiManager.GetBlankTexture(), leftStart + i * sizeStep, topStart, sizeStep, sizeY, referenceColor);\n                }\n\n                MyDebugDraw.DrawText(new Vector2((float)leftStart, (float)(topStart + sizeY)), new System.Text.StringBuilder(\"1\"), Color.White, 1.0f);\n                MyDebugDraw.DrawText(new Vector2((float)leftStart + size, (float)(topStart + sizeY)), new System.Text.StringBuilder(\">\" + PARTICLES_OVERDRAW_MAX.ToString()), Color.White, 1.0f);\n\n                device.SetRenderTarget(0, oldTargets);\n                oldTargets.Dispose();\n\n                MyRender.Blit(MyRender.GetRenderTarget(MyRenderTargets.Auxiliary0), false);\n            }\n\n            //  Restore to 'opaque', because that's the usual blend state\n            BlendState.Opaque.Apply();     \n        }\n\n        public static MyTexture2D GetTexture(MyTransparentMaterialEnum material)\n        {\n            var materialProperties = MyTransparentMaterialConstants.GetMaterialProperties(material);\n            return GetTexture(ref materialProperties);\n        }\n\n        public static MyTexture2D GetTexture(ref MyTransparentMaterialProperties materialProperties)\n        {\n            MyTexture2D texture = materialProperties.UseAtlas ? m_atlasTexture : m_textures[(int)materialProperties.Texture];\n            System.Diagnostics.Debug.Assert(texture != null, \"Null particle texture - probably already loaded from atlas, check it\");\n            return texture;\n        }\n\n        private static void SetupEffect(ref MyTransparentMaterialProperties materialProperties, MyTransparentMaterialProperties blendMaterialProperties, Vector3 position, bool colorize, float colorizeSoftDist, bool near)\n        {      \n            if (MyRenderConstants.RenderQualityProfile.ForwardRender)\n                DepthStencilState.DepthRead.Apply();\n\n            MyEffectTransparentGeometry effect = MyRender.GetEffect(MyEffects.TransparentGeometry) as MyEffectTransparentGeometry;\n\n            effect.SetBillboardTexture(GetTexture(ref materialProperties));\n            effect.SetBillboardBlendTexture(GetTexture(ref blendMaterialProperties));\n\n            effect.SetSoftParticleDistanceScale(materialProperties.SoftParticleDistanceScale);\n\n            effect.SetAlphaMultiplierAndSaturation(1, materialProperties.AlphaSaturation);\n\n            if (near)\n                effect.SetProjectionMatrix(ref MyCamera.ProjectionMatrixForNearObjects);\n            else\n                effect.SetProjectionMatrix(ref MyCamera.ProjectionMatrix);\n\n            if (VisualiseOverdraw)\n            {\n                effect.SetTechnique(MyEffectTransparentGeometry.Technique.VisualizeOverdraw);\n            }\n            else\n            {\n                if (colorize)\n                {\n                    effect.SetColorizeSoftDistance(colorizeSoftDist);\n                    effect.SetColorizeColor(ColorizeColor);\n                    effect.SetColorizePlane(ColorizePlaneNormal, ColorizePlaneDistance);\n                    effect.SetTechnique(MyEffectTransparentGeometry.Technique.ColorizeHeight);\n                }\n                else if (materialProperties.IgnoreDepth)\n                {\n                    if (MyRenderConstants.RenderQualityProfile.ForwardRender)\n                        DepthStencilState.None.Apply();\n\n                    effect.SetTechnique(MyEffectTransparentGeometry.Technique.IgnoreDepth);\n                }\n                else if (materialProperties.CanBeAffectedByOtherLights)\n                {     \n                    if (MyRenderConstants.RenderQualityProfile.ForwardRender)\n                        effect.SetTechnique(MyEffectTransparentGeometry.Technique.UnlitForward);\n                    else\n                    {\n                        effect.SetTechnique(MyEffectTransparentGeometry.Technique.Lit);\n                    }   \n                }\n                else\n                {\n                    if (MyRenderConstants.RenderQualityProfile.ForwardRender)\n                        effect.SetTechnique(MyEffectTransparentGeometry.Technique.UnlitForward);\n                    else\n                    {\n                        effect.SetTechnique(MyEffectTransparentGeometry.Technique.Unlit);\n                    }\n                }\n            }     \n        }\n\n        [Conditional(\"PARTICLE_PROFILING\")]\n        public static void StartParticleProfilingBlock(string name)\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(name);\n        }\n\n        [Conditional(\"PARTICLE_PROFILING\")]\n        public static void EndParticleProfilingBlock()\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        #endregion      \n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/TransparentGeometry/MyTransparentMaterialConstants.cs",
    "content": "﻿using System.Collections.Generic;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWarsMath;\n\nnamespace MinerWars.AppCode.Game.TransparentGeometry\n{\n    //  This enums must have same name as source texture files used to create texture atlas\n    //  And only \".tga\" files are supported.\n    //  IMPORTANT: If you change order or names in this enum, update it also in MyEnumsToStrings\n    public enum MyTransparentGeometryTexturesEnum : byte\n    {\n        Explosion = 0,\n        ExplosionSmokeDebrisLine,\n        Smoke,\n        Test,\n        EngineThrustMiddle,\n        ReflectorCone,\n        ReflectorGlareAdditive,\n        ReflectorGlareAlphaBlended,\n        MuzzleFlashMachineGunFront,\n        MuzzleFlashMachineGunSide,\n        ProjectileTrailLine,\n        ContainerBorder,\n        Dust,\n        Crosshair,\n        Sun,\n        LightRay,\n        LightGlare,\n\n        SolarMapOrbitLine,\n        SolarMapSun,\n        SolarMapAsteroidField,\n        SolarMapFactionMap,\n        SolarMapAsteroid,\n        SolarMapZeroPlaneLine,\n        SolarMapSmallShip,\n        SolarMapLargeShip,\n        SolarMapOutpost,\n\n        Grid,\n        ContainerBorderSelected,\n\n        FactionRussia,\n        FactionChina,\n        FactionJapan,\n        FactionUnitedKorea,\n        FactionFreeAsia,\n        FactionSaudi,\n        FactionEAC,\n        FactionCSR,\n        FactionIndia,\n        FactionChurch,\n        FactionOmnicorp,\n        FactionFourthReich,\n        FactionSlavers,\n\n        Smoke_b,\n        Smoke_c,\n        Sparks_a,\n        Sparks_b,\n        particle_stone,\n        Stardust,\n        particle_trash_a,\n        particle_trash_b,\n        particle_glare,\n        smoke_field,\n        Explosion_pieces,\n        particle_laser,\n        particle_nuclear,\n        Explosion_line,\n        particle_flash_a,\n        particle_flash_b,\n        particle_flash_c,\n        snap_point,\n\n        SolarMapNavigationMark,\n\n        Impostor_StaticAsteroid20m_A,\n        Impostor_StaticAsteroid20m_C,\n        Impostor_StaticAsteroid50m_D,\n        Impostor_StaticAsteroid50m_E,\n\n        GPS,\n        GPSBack,\n\n        ShotgunParticle,\n\n        ObjectiveDummyFace,\n        ObjectiveDummyLine,\n\n        SunDisk,\n\n        scanner_01,\n        Smoke_square,\n        Smoke_lit,\n\n        SolarMapSideMission,\n        SolarMapStoryMission,\n        SolarMapTemplateMission,\n        SolarMapPlayer,\n    }\n\n    public class MyTransparentMaterialProperties\n    {\n        public MyTransparentMaterialProperties \n            (\n                MyTransparentGeometryTexturesEnum Texture,\n                float SoftParticleDistanceScale,\n                bool CanBeAffectedByOtherLights,\n                bool AlphaMistingEnable,\n                bool IgnoreDepth = false,\n                bool NeedSort = true,\n                bool UseAtlas = false,\n                float Emissivity = 0,\n                float AlphaMistingStart = 1,\n                float AlphaMistingEnd = 4,\n                float AlphaSaturation = 1\n            ) \n        {\n            this.Texture = Texture;\n            this.SoftParticleDistanceScale = SoftParticleDistanceScale;\n            this.CanBeAffectedByOtherLights = CanBeAffectedByOtherLights;\n            this.AlphaMistingEnable = AlphaMistingEnable;\n            this.IgnoreDepth = IgnoreDepth;\n            this.NeedSort = NeedSort;\n            this.UseAtlas = UseAtlas;\n            this.Emissivity = Emissivity;\n            this.AlphaMistingStart = AlphaMistingStart;\n            this.AlphaMistingEnd = AlphaMistingEnd;\n            this.AlphaSaturation = AlphaSaturation;\n\n            UVOffset = new Vector2(0, 0);\n            UVSize = new Vector2(1, 1);\n        }\n\n        public MyTransparentGeometryTexturesEnum Texture { get; private set; }\n\n        //  If true, then we calculate sun shadow value for a particle, and also per-pixel lighting. Set it to true only if really unneceserary as it\n        //  will slow down the rendering.\n        public bool CanBeAffectedByOtherLights;\n\n        public bool AlphaMistingEnable;\n        public bool IgnoreDepth;\n        public bool NeedSort;\n        public bool UseAtlas;\n\n        public float AlphaMistingStart;\n        public float AlphaMistingEnd;\n\n        public Vector2 UVOffset;\n        public Vector2 UVSize;\n\n        public float SoftParticleDistanceScale;\n\n        public float Emissivity;\n\n        public float AlphaSaturation;\n    }\n\n    public enum MyTransparentMaterialEnum\n    {\n        Explosion = 0,\n        ExplosionSmokeDebrisLine = 1,\n        Smoke = 2,\n        CockpitSmoke = 3,\n        GunSmoke = 4,\n        Test = 5,\n        EngineThrustMiddle = 6,\n        ReflectorCone = 7,\n        ReflectorGlareAdditive = 8,\n        ReflectorGlareAlphaBlended = 9,\n        IlluminatingShell = 10,\n        MuzzleFlashMachineGunFront = 11,\n        MuzzleFlashMachineGunSide = 12,\n        ProjectileTrailLine = 13,\n        DebrisTrailLine = 14,\n        ContainerBorder = 15,\n        Dust = 16,\n        Crosshair = 17,\n        Sun = 18,\n        LightRay = 19,\n        LightGlare = 20,\n\n        // This is objects for solar map, all must ignore depth\n        SolarMapOrbitLine = 21,\n        SolarMapSun = 22,\n        SolarMapAsteroidField = 23,\n        SolarMapFactionMap = 24,\n        SolarMapAsteroid = 25,\n        SolarMapZeroPlaneLine = 26,\n        SolarMapSmallShip = 27,\n        SolarMapLargeShip = 28,\n        SolarMapOutpost = 29,\n\n        Grid = 30,\n        ContainerBorderSelected = 31,\n\n        // Factions\n        FactionRussia = 32,\n        FactionChina = 33,\n        FactionJapan = 34,\n        FactionUnitedKorea = 35,\n        FactionFreeAsia = 36,\n        FactionSaudi = 37,\n        FactionEAC = 38,\n        FactionCSR = 39,\n        FactionIndia = 40,\n        FactionChurch = 41,\n        FactionOmnicorp = 42,\n        FactionFourthReich = 43,\n\n\n        Smoke_b = 44,\n        Smoke_c = 45,\n        Sparks_a = 46,\n        Sparks_b = 47,\n        particle_stone = 48,\n        Stardust = 49,\n        particle_trash_a = 50,\n        particle_trash_b = 51,\n        particle_glare = 52,\n        smoke_field = 53,\n        Explosion_pieces = 54,\n        particle_laser = 55,\n        particle_nuclear = 56,\n        Explosion_line = 57,\n        particle_flash_a = 58,\n        particle_flash_b = 59,\n        particle_flash_c = 60,\n        snap_point = 61,\n\n        MissileGlare = 62,\n        SolarMapNavigationMark = 63,\n        DecalGlare = 64,\n\n        Impostor_StaticAsteroid20m_A = 65,\n        Impostor_StaticAsteroid20m_C = 66,\n        Impostor_StaticAsteroid50m_D = 67,\n        Impostor_StaticAsteroid50m_E = 68,\n\n        GPS = 69,\n        GPSBack = 70,\n\n        ShotgunParticle = 71,\n        snap_point_depth = 72,\n\n        ObjectiveDummyFace = 73,\n        ObjectiveDummyLine = 74,\n\n        FactionSlavers = 75,\n        SunDisk = 76,\n\n        VolumetricGlare = 77,\n\n        SolarMapDust = 78,\n        scanner_01 = 79,\n        Smoke_square = 80,\n        Smoke_lit = 81,\n        Smoke_square_unlit = 83,\n\n        SolarMapTemplateMission = 86,\n        SolarMapSideMission = 87,\n        SolarMapStoryMission = 88,\n        SolarMapPlayer = 89,\n\n        Smoke_Ignore_Depth = 90,\n\n        LightGlare_WithDepth = 91,\n    }    \n\n    public static class MyTransparentMaterialConstants\n    {\n        static Dictionary<int, MyTransparentMaterialProperties> MaterialProperties = new Dictionary<int, MyTransparentMaterialProperties>();\n\n        public static string[] MyTransparentMaterialStrings =\n        {\n            \"Explosion\",\n            \"ExplosionSmokeDebrisLine\",\n            \"Smoke\",\n            \"CockpitSmoke\",\n            \"GunSmoke\",\n            \"Test\",\n            \"EngineThrustMiddle\",\n            \"ReflectorCone\",\n            \"ReflectorGlareAdditive\",\n            \"ReflectorGlareAlphaBlended\",\n            \"IlluminatingShell\",\n            \"MuzzleFlashMachineGunFront\",\n            \"MuzzleFlashMachineGunSide\",\n            \"ProjectileTrailLine\",\n            \"DebrisTrailLine\",\n            \"ContainerBorder\",\n            \"Dust\",\n            \"Crosshair\",\n            \"Sun\",\n            \"LightRay\",\n            \"LightGlare\",\n\n            \"SolarMapOrbitLine\",\n            \"SolarMapSun\",\n            \"SolarMapAsteroidField\",\n            \"SolarMapFactionMap\",\n            \"SolarMapAsteroid\",\n            \"SolarMapZeroPlaneLine\",\n            \"SolarMapSmallShip\",\n            \"SolarMapLargeShip\",\n            \"SolarMapOutpost\",\n\n            \"Grid\",\n            \"ContainerBorderSelected\",\n\n            \"FactionRussia\",\n            \"FactionChina\",\n            \"FactionJapan\",\n            \"FactionUnitedKorea\",\n            \"FactionFreeAsia\",\n            \"FactionSaudi\",\n            \"FactionEAC\",\n            \"FactionCSR\",\n            \"FactionIndia\",\n            \"FactionChurch\",\n            \"FactionOmnicorp\",\n            \"FactionFourthReich\",\n            \"Smoke_b\",\n            \"Smoke_c\",\n            \"Sparks_a\",\n            \"Sparks_b\",\n            \"particle_stone\",\n            \"Stardust\",\n            \"particle_trash_a\",\n            \"particle_trash_b\",\n            \"particle_glare\",\n            \"smoke_field\",\n            \"Explosion_pieces\",\n            \"particle_laser\",\n            \"particle_nuclear\",\n            \"Explosion_line\",\n            \"particle_flash_a\",\n            \"particle_flash_b\",\n            \"particle_flash_c\",\n            \"snap_point\",\n\n            \"MissileGlare\",\n\n            \"SolarMapNavigationMark\",\n\n            \"DecalGlare\",\n\n            \"Impostor_StaticAsteroid20m_A\",\n            \"Impostor_StaticAsteroid20m_C\",\n            \"Impostor_StaticAsteroid50m_D\",\n            \"Impostor_StaticAsteroid50m_E\",\n\n            \"GPS\",\n            \"GPSBack\",\n\n            \"ShotgunParticle\",\n            \"snap_point_depth\",\n\n            \"ObjectiveDummyFace\",\n            \"ObjectiveDummyLine\",\n            \n            \"FactionSlavers\",\n\n            \"SunDisk\",\n\n            \"VolumetricGlare\",\n\n            \"SolarMapDust\",\n\n            \"scanner_01\",\n            \"Smoke_square\",\n            \"Smoke_lit\",\n            \"Smoke_square_unlit\",\n\n            \"SolarMapTemplateMission\",\n            \"SolarMapSideMission\",\n            \"SolarMapStoryMission\",\n            \"SolarMapPlayer\",\n\n            \"Smoke_Ignore_Depth\",\n            \"LightGlare_WithDepth\",\n        };\n\n        static MyTransparentMaterialConstants()\n        {\n            System.Diagnostics.Debug.Assert(System.Enum.GetValues(typeof(MyTransparentMaterialEnum)).Length == MyTransparentMaterialStrings.Length);\n\n            //Explosion material\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.Explosion, new MyTransparentMaterialProperties(\n                Texture: MyTransparentGeometryTexturesEnum.Explosion,\n                SoftParticleDistanceScale: MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_SCALE_DEFAULT_VALUE,\n                CanBeAffectedByOtherLights: false,\n                AlphaMistingEnable: true,\n                IgnoreDepth: false,\n                UseAtlas: true\n           ));\n\n            //Explosion debris line material\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.ExplosionSmokeDebrisLine, new MyTransparentMaterialProperties(\n                Texture: MyTransparentGeometryTexturesEnum.ExplosionSmokeDebrisLine,\n                CanBeAffectedByOtherLights: true,\n                AlphaMistingEnable: true,\n                SoftParticleDistanceScale: MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_SCALE_DEFAULT_VALUE,\n                UseAtlas: true\n            ));\n\n            //Smoke\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.Smoke, new MyTransparentMaterialProperties(\n                Texture: MyTransparentGeometryTexturesEnum.Smoke,\n                CanBeAffectedByOtherLights: true,\n                AlphaMistingEnable:  true,\n                SoftParticleDistanceScale:  MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_SCALE_DEFAULT_VALUE,\n                UseAtlas: true\n            ));\n\n            //Cockpit smoke\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.CockpitSmoke, new MyTransparentMaterialProperties(\n                Texture: MyTransparentGeometryTexturesEnum.Smoke,\n                CanBeAffectedByOtherLights: false,\n                AlphaMistingEnable: false,\n                SoftParticleDistanceScale: MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_SCALE_FOR_HARD_PARTICLES,\n                UseAtlas: true\n            ));\n\n            //Gun smoke\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.GunSmoke, new MyTransparentMaterialProperties(\n                Texture:  MyTransparentGeometryTexturesEnum.Smoke,\n                CanBeAffectedByOtherLights:  true,\n                AlphaMistingEnable:  true,\n                SoftParticleDistanceScale:  MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_SCALE_DEFAULT_VALUE,\n                UseAtlas: true\n            ));\n\n            //Test\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.Test, new MyTransparentMaterialProperties(\n                Texture: MyTransparentGeometryTexturesEnum.Test,\n                CanBeAffectedByOtherLights: true,\n                AlphaMistingEnable: false,\n                SoftParticleDistanceScale: MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_SCALE_FOR_HARD_PARTICLES\n            ));\n\n            //Engine thrust middle\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.EngineThrustMiddle, new MyTransparentMaterialProperties(\n                Texture: MyTransparentGeometryTexturesEnum.EngineThrustMiddle,\n                CanBeAffectedByOtherLights: false,\n                AlphaMistingEnable: false,\n                SoftParticleDistanceScale: MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_SCALE_FOR_HARD_PARTICLES,\n                NeedSort: false\n            ));\n\n            //Reflector Cone\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.ReflectorCone, new MyTransparentMaterialProperties(\n                Texture: MyTransparentGeometryTexturesEnum.ReflectorCone,\n                CanBeAffectedByOtherLights: false,\n                AlphaMistingEnable: false,\n                SoftParticleDistanceScale: 0.1f // Special value for reflector cone to look good and quite soft\n            ));\n\n            //Reflector Glare Additive\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.ReflectorGlareAdditive, new MyTransparentMaterialProperties(\n                Texture: MyTransparentGeometryTexturesEnum.ReflectorGlareAdditive,\n                CanBeAffectedByOtherLights: false,\n                AlphaMistingEnable: false,\n                Emissivity: 0.15f,\n                SoftParticleDistanceScale: 0.5f, // Special value for this 'circle' billboard\n                UseAtlas: true\n            ));\n\n            //Reflector Glare Blended\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.ReflectorGlareAlphaBlended, new MyTransparentMaterialProperties(\n                Texture: MyTransparentGeometryTexturesEnum.ReflectorGlareAlphaBlended,\n                CanBeAffectedByOtherLights: false,\n                AlphaMistingEnable: false,\n                SoftParticleDistanceScale: MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_SCALE_FOR_HARD_PARTICLES,\n                UseAtlas: true\n            ));\n\n            //Illuminating shell\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.IlluminatingShell, new MyTransparentMaterialProperties(\n                Texture: MyTransparentGeometryTexturesEnum.ReflectorGlareAlphaBlended,\n                CanBeAffectedByOtherLights: false,\n                AlphaMistingEnable: false,\n                SoftParticleDistanceScale: MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_SCALE_DEFAULT_VALUE,\n                UseAtlas: true\n            ));\n\n            //Muzzle Flash Machine Gun Front\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.MuzzleFlashMachineGunFront, new MyTransparentMaterialProperties(\n                Texture: MyTransparentGeometryTexturesEnum.MuzzleFlashMachineGunFront,\n                CanBeAffectedByOtherLights: false,\n                AlphaMistingEnable: false,\n                SoftParticleDistanceScale: MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_SCALE_FOR_HARD_PARTICLES,\n                NeedSort: false,\n                UseAtlas: true\n            ));\n\n            //Muzzle Flash Machine Gun Side\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.MuzzleFlashMachineGunSide, new MyTransparentMaterialProperties(\n                Texture: MyTransparentGeometryTexturesEnum.MuzzleFlashMachineGunSide,\n                CanBeAffectedByOtherLights: false,\n                AlphaMistingEnable: false,\n                SoftParticleDistanceScale: MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_SCALE_FOR_HARD_PARTICLES\n            ));\n\n            //Projectile Trail Line\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.ProjectileTrailLine, new MyTransparentMaterialProperties(\n                Texture: MyTransparentGeometryTexturesEnum.ProjectileTrailLine,\n                CanBeAffectedByOtherLights: false,\n                AlphaMistingEnable: false,\n                IgnoreDepth: false,\n                SoftParticleDistanceScale: MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_SCALE_FOR_HARD_PARTICLES,\n                NeedSort: false\n            ));\n\n            //Debris Trail Line\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.DebrisTrailLine, new MyTransparentMaterialProperties(\n                Texture: MyTransparentGeometryTexturesEnum.ProjectileTrailLine,\n                CanBeAffectedByOtherLights: false,\n                AlphaMistingEnable: true,\n                SoftParticleDistanceScale: MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_SCALE_FOR_HARD_PARTICLES\n            ));\n\n            //Container Border\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.ContainerBorder, new MyTransparentMaterialProperties(\n                Texture: MyTransparentGeometryTexturesEnum.ContainerBorder,\n                CanBeAffectedByOtherLights: false,\n                AlphaMistingEnable: false,\n                SoftParticleDistanceScale: MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_SCALE_FOR_HARD_PARTICLES\n            ));\n\n            //Dust\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.Dust, new MyTransparentMaterialProperties(\n                Texture: MyTransparentGeometryTexturesEnum.Dust,\n                CanBeAffectedByOtherLights: false,\n                AlphaMistingEnable: true,\n                SoftParticleDistanceScale: MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_SCALE_DEFAULT_VALUE,\n                UseAtlas: true,\n                Emissivity: 0,\n                NeedSort: false\n            ));\n\n            //Crosshair (Third person view)\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.Crosshair, new MyTransparentMaterialProperties(\n                Texture: MyTransparentGeometryTexturesEnum.Crosshair,\n                CanBeAffectedByOtherLights: false,\n                AlphaMistingEnable: false,\n                IgnoreDepth: true,\n                SoftParticleDistanceScale: MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_SCALE_DEFAULT_VALUE,\n                NeedSort: false                \n            ));\n\n            //Sun Glare\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.Sun, new MyTransparentMaterialProperties(\n                Texture: MyTransparentGeometryTexturesEnum.Sun,\n                CanBeAffectedByOtherLights: false,\n                AlphaMistingEnable: false,\n                IgnoreDepth: false,\n                SoftParticleDistanceScale: MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_SCALE_FOR_HARD_PARTICLES\n            ));\n\n            //Light Ray\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.LightRay, new MyTransparentMaterialProperties(\n                Texture: MyTransparentGeometryTexturesEnum.LightRay,\n                CanBeAffectedByOtherLights: false,\n                AlphaMistingEnable: false,\n                IgnoreDepth: false,\n                SoftParticleDistanceScale: MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_SCALE_FOR_HARD_PARTICLES,\n                UseAtlas: false //problems with DXT1\n            ));\n\n            //Light Glare\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.LightGlare, new MyTransparentMaterialProperties(\n                Texture: MyTransparentGeometryTexturesEnum.LightGlare,\n                CanBeAffectedByOtherLights: false,\n                AlphaMistingEnable: false,\n                IgnoreDepth: true,\n                SoftParticleDistanceScale: MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_SCALE_FOR_HARD_PARTICLES,\n                UseAtlas: false, //problems with DXT1\n                AlphaSaturation: 0.85f\n            ));\n\n            //Light Glare With depth (distant glares can hide just by depth\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.LightGlare_WithDepth, new MyTransparentMaterialProperties(\n                Texture: MyTransparentGeometryTexturesEnum.LightGlare,\n                CanBeAffectedByOtherLights: false,\n                AlphaMistingEnable: false,\n                IgnoreDepth: false,\n                SoftParticleDistanceScale: MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_SCALE_FOR_HARD_PARTICLES,\n                UseAtlas: false, //problems with DXT1\n                AlphaSaturation: 0.85f\n            ));\n\n            //MissileGlare\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.MissileGlare, new MyTransparentMaterialProperties(\n                Texture: MyTransparentGeometryTexturesEnum.LightGlare,\n                CanBeAffectedByOtherLights: false,\n                AlphaMistingEnable: false,\n                IgnoreDepth: false,\n                SoftParticleDistanceScale: MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_SCALE_FOR_HARD_PARTICLES,\n                UseAtlas: false //problems with DXT1\n            ));\n\n            //Solar map orbit line\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.SolarMapOrbitLine, new MyTransparentMaterialProperties(\n                Texture: MyTransparentGeometryTexturesEnum.SolarMapOrbitLine,\n                CanBeAffectedByOtherLights: false,\n                AlphaMistingEnable: false,\n                IgnoreDepth: true,\n                SoftParticleDistanceScale: MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_SCALE_FOR_HARD_PARTICLES\n            ));\n\n            //Solar map sun\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.SolarMapSun, new MyTransparentMaterialProperties(\n                Texture: MyTransparentGeometryTexturesEnum.SolarMapSun,\n                CanBeAffectedByOtherLights: false,\n                AlphaMistingEnable: false,\n                IgnoreDepth: false,\n                SoftParticleDistanceScale: MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_SCALE_FOR_HARD_PARTICLES\n            ));\n\n            //Solar map asteroid field\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.SolarMapAsteroidField, new MyTransparentMaterialProperties(\n                Texture: MyTransparentGeometryTexturesEnum.SolarMapAsteroidField,\n                CanBeAffectedByOtherLights: false,\n                AlphaMistingEnable: false,\n                IgnoreDepth: false,\n                SoftParticleDistanceScale: MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_SCALE_FOR_HARD_PARTICLES\n            ));\n\n            //Solar map faction area\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.SolarMapFactionMap, new MyTransparentMaterialProperties(\n                Texture: MyTransparentGeometryTexturesEnum.SolarMapFactionMap,\n                CanBeAffectedByOtherLights: false,\n                AlphaMistingEnable: false,\n                IgnoreDepth: false,\n                SoftParticleDistanceScale: MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_SCALE_FOR_HARD_PARTICLES\n            ));\n\n            //Solar map asteroid\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.SolarMapAsteroid, new MyTransparentMaterialProperties(\n                Texture: MyTransparentGeometryTexturesEnum.SolarMapAsteroid,\n                CanBeAffectedByOtherLights: false,\n                AlphaMistingEnable: false,\n                IgnoreDepth: false,\n                SoftParticleDistanceScale: MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_SCALE_FOR_HARD_PARTICLES\n            ));\n\n            //Solar map zero plane line\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.SolarMapZeroPlaneLine, new MyTransparentMaterialProperties(\n                Texture: MyTransparentGeometryTexturesEnum.SolarMapZeroPlaneLine,\n                CanBeAffectedByOtherLights: false,\n                AlphaMistingEnable: false,\n                IgnoreDepth: false,\n                SoftParticleDistanceScale: MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_SCALE_FOR_HARD_PARTICLES\n            ));\n\n            //Solar small ship\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.SolarMapSmallShip, new MyTransparentMaterialProperties(\n                Texture: MyTransparentGeometryTexturesEnum.SolarMapSmallShip,\n                CanBeAffectedByOtherLights: false,\n                AlphaMistingEnable: false,\n                IgnoreDepth: false,\n                SoftParticleDistanceScale: MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_SCALE_FOR_HARD_PARTICLES\n            ));\n\n            //Solar map large ship\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.SolarMapLargeShip, new MyTransparentMaterialProperties(\n                Texture: MyTransparentGeometryTexturesEnum.SolarMapLargeShip,\n                CanBeAffectedByOtherLights: false,\n                AlphaMistingEnable: false,\n                IgnoreDepth: false,\n                SoftParticleDistanceScale: MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_SCALE_FOR_HARD_PARTICLES\n            ));\n\n            //Solar map outpost\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.SolarMapOutpost, new MyTransparentMaterialProperties(\n                Texture: MyTransparentGeometryTexturesEnum.SolarMapOutpost,\n                CanBeAffectedByOtherLights: false,\n                AlphaMistingEnable: false,\n                IgnoreDepth: false,\n                SoftParticleDistanceScale: MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_SCALE_FOR_HARD_PARTICLES\n            ));\n\n            //Solar map grid\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.Grid, new MyTransparentMaterialProperties(\n                Texture: MyTransparentGeometryTexturesEnum.Grid,\n                CanBeAffectedByOtherLights: false,\n                AlphaMistingEnable: false,\n                IgnoreDepth: false,\n                SoftParticleDistanceScale: MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_SCALE_FOR_HARD_PARTICLES\n            ));\n\n            //Solar map navigation mark\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.SolarMapNavigationMark, new MyTransparentMaterialProperties(\n                Texture: MyTransparentGeometryTexturesEnum.SolarMapNavigationMark,\n                CanBeAffectedByOtherLights: false,\n                AlphaMistingEnable: false,\n                IgnoreDepth: false,\n                SoftParticleDistanceScale: MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_SCALE_FOR_HARD_PARTICLES\n            ));\n\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.SolarMapSideMission, new MyTransparentMaterialProperties(\n                Texture: MyTransparentGeometryTexturesEnum.SolarMapSideMission,\n                CanBeAffectedByOtherLights: false,\n                AlphaMistingEnable: false,\n                IgnoreDepth: false,\n                SoftParticleDistanceScale: MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_SCALE_FOR_HARD_PARTICLES\n            ));\n\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.SolarMapStoryMission, new MyTransparentMaterialProperties(\n                Texture: MyTransparentGeometryTexturesEnum.SolarMapStoryMission,\n                CanBeAffectedByOtherLights: false,\n                AlphaMistingEnable: false,\n                IgnoreDepth: false,\n                SoftParticleDistanceScale: MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_SCALE_FOR_HARD_PARTICLES\n            ));\n\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.SolarMapTemplateMission, new MyTransparentMaterialProperties(\n                Texture: MyTransparentGeometryTexturesEnum.SolarMapTemplateMission,\n                CanBeAffectedByOtherLights: false,\n                AlphaMistingEnable: false,\n                IgnoreDepth: false,\n                SoftParticleDistanceScale: MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_SCALE_FOR_HARD_PARTICLES\n            ));\n\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.SolarMapPlayer, new MyTransparentMaterialProperties(\n                Texture: MyTransparentGeometryTexturesEnum.SolarMapPlayer,\n                CanBeAffectedByOtherLights: false,\n                AlphaMistingEnable: false,\n                IgnoreDepth: false,\n                SoftParticleDistanceScale: MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_SCALE_FOR_HARD_PARTICLES\n            ));\n\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.Smoke_Ignore_Depth, new MyTransparentMaterialProperties(\n                Texture: MyTransparentGeometryTexturesEnum.Smoke,\n                CanBeAffectedByOtherLights: true,\n                AlphaMistingEnable: false,\n                IgnoreDepth: true,\n                UseAtlas: true,\n                SoftParticleDistanceScale: MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_SCALE_FOR_HARD_PARTICLES\n            ));\n\n            //entered selected container bounding box\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.ContainerBorderSelected, new MyTransparentMaterialProperties(\n                Texture: MyTransparentGeometryTexturesEnum.ContainerBorderSelected,\n                CanBeAffectedByOtherLights: false,\n                AlphaMistingEnable: false,\n                IgnoreDepth: false,\n                SoftParticleDistanceScale: MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_SCALE_FOR_HARD_PARTICLES\n            ));\n\n            // FactionChina\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.FactionChina, new MyTransparentMaterialProperties(\n                Texture: MyTransparentGeometryTexturesEnum.FactionChina,\n                CanBeAffectedByOtherLights: false,\n                AlphaMistingEnable: false,\n                IgnoreDepth: false,\n                SoftParticleDistanceScale: MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_SCALE_FOR_HARD_PARTICLES\n            ));\n\n            // FactionChurch\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.FactionChurch, new MyTransparentMaterialProperties(\n            \n                Texture: MyTransparentGeometryTexturesEnum.FactionChurch,\n                CanBeAffectedByOtherLights: false,\n                AlphaMistingEnable: false,\n                IgnoreDepth: false,\n                SoftParticleDistanceScale: MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_SCALE_FOR_HARD_PARTICLES\n            ));\n\n            // FactionCSR\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.FactionCSR, new MyTransparentMaterialProperties(\n            \n                Texture: MyTransparentGeometryTexturesEnum.FactionCSR,\n                CanBeAffectedByOtherLights: false,\n                AlphaMistingEnable: false,\n                IgnoreDepth: false,\n                SoftParticleDistanceScale: MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_SCALE_FOR_HARD_PARTICLES\n            ));\n\n            // FactionEAC\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.FactionEAC, new MyTransparentMaterialProperties(\n            \n                Texture: MyTransparentGeometryTexturesEnum.FactionEAC,\n                CanBeAffectedByOtherLights: false,\n                AlphaMistingEnable: false,\n                IgnoreDepth: false,\n                SoftParticleDistanceScale: MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_SCALE_FOR_HARD_PARTICLES\n            ));\n\n            // FactionFourthReich\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.FactionFourthReich, new MyTransparentMaterialProperties(\n            \n                Texture: MyTransparentGeometryTexturesEnum.FactionFourthReich,\n                CanBeAffectedByOtherLights: false,\n                AlphaMistingEnable: false,\n                IgnoreDepth: false,\n                SoftParticleDistanceScale: MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_SCALE_FOR_HARD_PARTICLES\n            ));\n\n            // FactionFreeAsia\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.FactionFreeAsia, new MyTransparentMaterialProperties(\n            \n                Texture: MyTransparentGeometryTexturesEnum.FactionFreeAsia,\n                CanBeAffectedByOtherLights: false,\n                AlphaMistingEnable: false,\n                IgnoreDepth: false,\n                SoftParticleDistanceScale: MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_SCALE_FOR_HARD_PARTICLES\n            ));\n\n            // FactionIndia\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.FactionIndia, new MyTransparentMaterialProperties(\n            \n                Texture: MyTransparentGeometryTexturesEnum.FactionIndia,\n                CanBeAffectedByOtherLights: false,\n                AlphaMistingEnable: false,\n                IgnoreDepth: false,\n                SoftParticleDistanceScale: MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_SCALE_FOR_HARD_PARTICLES\n            ));\n\n            // FactionJapan\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.FactionJapan, new MyTransparentMaterialProperties(\n            \n                Texture: MyTransparentGeometryTexturesEnum.FactionJapan,\n                CanBeAffectedByOtherLights: false,\n                AlphaMistingEnable: false,\n                IgnoreDepth: false,\n                SoftParticleDistanceScale: MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_SCALE_FOR_HARD_PARTICLES\n            ));\n\n            // FactionOmnicorp\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.FactionOmnicorp, new MyTransparentMaterialProperties(\n            \n                Texture: MyTransparentGeometryTexturesEnum.FactionOmnicorp,\n                CanBeAffectedByOtherLights: false,\n                AlphaMistingEnable: false,\n                IgnoreDepth: false,\n                SoftParticleDistanceScale: MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_SCALE_FOR_HARD_PARTICLES\n            ));\n\n            // FactionRussia\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.FactionRussia, new MyTransparentMaterialProperties(\n            \n                Texture: MyTransparentGeometryTexturesEnum.FactionRussia,\n                CanBeAffectedByOtherLights: false,\n                AlphaMistingEnable: false,\n                IgnoreDepth: false,\n                SoftParticleDistanceScale: MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_SCALE_FOR_HARD_PARTICLES\n            ));\n\n            // FactionRussia\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.FactionSlavers, new MyTransparentMaterialProperties(\n\n                Texture: MyTransparentGeometryTexturesEnum.FactionSlavers,\n                CanBeAffectedByOtherLights: false,\n                AlphaMistingEnable: false,\n                IgnoreDepth: false,\n                SoftParticleDistanceScale: MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_SCALE_FOR_HARD_PARTICLES\n            ));\n\n            // FactionSaudi\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.FactionSaudi, new MyTransparentMaterialProperties(\n            \n                Texture: MyTransparentGeometryTexturesEnum.FactionSaudi,\n                CanBeAffectedByOtherLights: false,\n                AlphaMistingEnable: false,\n                IgnoreDepth: false,\n                SoftParticleDistanceScale: MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_SCALE_FOR_HARD_PARTICLES\n            ));\n\n            // FactionUnitedKorea\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.FactionUnitedKorea, new MyTransparentMaterialProperties(\n            \n                Texture: MyTransparentGeometryTexturesEnum.FactionUnitedKorea,\n                CanBeAffectedByOtherLights: false,\n                AlphaMistingEnable: false,\n                IgnoreDepth: false,\n                SoftParticleDistanceScale: MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_SCALE_FOR_HARD_PARTICLES\n            ));\n\n            //Smoke_b\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.Smoke_b, new MyTransparentMaterialProperties(\n            \n                Texture: MyTransparentGeometryTexturesEnum.Smoke_b,\n                CanBeAffectedByOtherLights: true,\n                AlphaMistingEnable: true,\n                SoftParticleDistanceScale: MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_SCALE_DEFAULT_VALUE,\n                UseAtlas: true\n            ));\n\n            //Smoke_c\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.Smoke_c, new MyTransparentMaterialProperties(\n            \n                Texture: MyTransparentGeometryTexturesEnum.Smoke_c,\n                CanBeAffectedByOtherLights: true,\n                AlphaMistingEnable: true,\n                SoftParticleDistanceScale: MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_SCALE_DEFAULT_VALUE,\n                UseAtlas: true\n            ));\n\n            //Sparks_a\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.Sparks_a, new MyTransparentMaterialProperties(\n            \n                Texture: MyTransparentGeometryTexturesEnum.Sparks_a,\n                CanBeAffectedByOtherLights: false,\n                AlphaMistingEnable: false,\n                SoftParticleDistanceScale: MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_SCALE_FOR_HARD_PARTICLES,\n                UseAtlas: true\n            ));\n            //Sparks_b\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.Sparks_b, new MyTransparentMaterialProperties(\n            \n                Texture: MyTransparentGeometryTexturesEnum.Sparks_b,\n                CanBeAffectedByOtherLights: false,\n                AlphaMistingEnable: false,\n                SoftParticleDistanceScale: MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_SCALE_FOR_HARD_PARTICLES,\n                UseAtlas: true\n            ));\n            //particle_stone\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.particle_stone, new MyTransparentMaterialProperties(\n            \n                Texture: MyTransparentGeometryTexturesEnum.particle_stone,\n                CanBeAffectedByOtherLights: false,\n                AlphaMistingEnable: false,\n                IgnoreDepth: false,\n                SoftParticleDistanceScale: MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_SCALE_FOR_HARD_PARTICLES\n            ));\n            //Stardust\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.Stardust, new MyTransparentMaterialProperties(\n            \n                Texture: MyTransparentGeometryTexturesEnum.Stardust,\n                CanBeAffectedByOtherLights: true,\n                AlphaMistingEnable: true,\n                SoftParticleDistanceScale: MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_SCALE_DEFAULT_VALUE,\n                NeedSort: false,\n                Emissivity: 0\n            ));\n            //particle_trash_a\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.particle_trash_a, new MyTransparentMaterialProperties(\n            \n                Texture: MyTransparentGeometryTexturesEnum.particle_trash_a,\n                CanBeAffectedByOtherLights: false,\n                AlphaMistingEnable: false,\n                IgnoreDepth: false,\n                SoftParticleDistanceScale: MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_SCALE_FOR_HARD_PARTICLES,\n                UseAtlas: true\n            ));\n            //particle_trash_b\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.particle_trash_b, new MyTransparentMaterialProperties(\n            \n                Texture: MyTransparentGeometryTexturesEnum.particle_trash_b,\n                CanBeAffectedByOtherLights: false,\n                AlphaMistingEnable: false,\n                IgnoreDepth: false,\n                SoftParticleDistanceScale: MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_SCALE_FOR_HARD_PARTICLES,\n                UseAtlas: true\n            ));\n            //particle_glare\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.particle_glare, new MyTransparentMaterialProperties(\n            \n                Texture: MyTransparentGeometryTexturesEnum.particle_glare,\n                CanBeAffectedByOtherLights: false,\n                AlphaMistingEnable: true,\n                SoftParticleDistanceScale: MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_SCALE_DEFAULT_VALUE,\n                UseAtlas: false\n            ));\n            //smoke_field\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.smoke_field, new MyTransparentMaterialProperties(\n            \n                Texture: MyTransparentGeometryTexturesEnum.smoke_field,\n                CanBeAffectedByOtherLights: true,\n                AlphaMistingEnable: true,\n                SoftParticleDistanceScale: MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_SCALE_DEFAULT_VALUE,\n                UseAtlas: true\n            ));\n            //Explosion_pieces\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.Explosion_pieces, new MyTransparentMaterialProperties(\n            \n                Texture: MyTransparentGeometryTexturesEnum.Explosion_pieces,\n                CanBeAffectedByOtherLights: false,\n                AlphaMistingEnable: true,\n                SoftParticleDistanceScale: MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_SCALE_DEFAULT_VALUE,\n                UseAtlas: true\n            ));\n            //particle_laser\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.particle_laser, new MyTransparentMaterialProperties(\n            \n                Texture: MyTransparentGeometryTexturesEnum.particle_laser,\n                CanBeAffectedByOtherLights: false,\n                AlphaMistingEnable: true,\n                SoftParticleDistanceScale: MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_SCALE_DEFAULT_VALUE\n            ));\n\n            //particle_nuclear\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.particle_nuclear, new MyTransparentMaterialProperties(\n            \n                Texture: MyTransparentGeometryTexturesEnum.particle_nuclear,\n                CanBeAffectedByOtherLights: false,\n                AlphaMistingEnable: false,\n                SoftParticleDistanceScale: MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_SCALE_DEFAULT_VALUE\n            ));\n\n            //Explosion_line\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.Explosion_line, new MyTransparentMaterialProperties(\n            \n                Texture: MyTransparentGeometryTexturesEnum.Explosion_line,\n                CanBeAffectedByOtherLights: false,\n                AlphaMistingEnable: true,\n                SoftParticleDistanceScale: MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_SCALE_DEFAULT_VALUE,\n                UseAtlas: true\n            ));\n            //snap_point\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.snap_point, new MyTransparentMaterialProperties(\n            \n                Texture: MyTransparentGeometryTexturesEnum.snap_point,\n                CanBeAffectedByOtherLights: false,\n                AlphaMistingEnable: false,\n                IgnoreDepth: true,\n                SoftParticleDistanceScale: MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_SCALE_DEFAULT_VALUE\n            ));\n\n            //particle_flash_a\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.particle_flash_a, new MyTransparentMaterialProperties(\n            \n                Texture: MyTransparentGeometryTexturesEnum.particle_flash_a,\n                CanBeAffectedByOtherLights: false,\n                AlphaMistingEnable: true,\n                SoftParticleDistanceScale: MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_SCALE_DEFAULT_VALUE,\n                UseAtlas: true\n            ));\n\n            //particle_flash_b\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.particle_flash_b, new MyTransparentMaterialProperties(\n            \n                Texture: MyTransparentGeometryTexturesEnum.particle_flash_b,\n                CanBeAffectedByOtherLights: false,\n                AlphaMistingEnable: true,\n                SoftParticleDistanceScale: MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_SCALE_DEFAULT_VALUE,\n                UseAtlas: true\n            ));\n\n            //particle_flash_c\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.particle_flash_c, new MyTransparentMaterialProperties(\n            \n                Texture: MyTransparentGeometryTexturesEnum.particle_flash_c,\n                CanBeAffectedByOtherLights: false,\n                AlphaMistingEnable: true,\n                SoftParticleDistanceScale: MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_SCALE_DEFAULT_VALUE,\n                UseAtlas: true\n            ));\n\n\n            //Decal Glare\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.DecalGlare, new MyTransparentMaterialProperties(\n            \n                Texture: MyTransparentGeometryTexturesEnum.LightGlare,\n                CanBeAffectedByOtherLights: false,\n                AlphaMistingEnable: false,\n                IgnoreDepth: false,\n                SoftParticleDistanceScale: MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_DECAL_PARTICLES,\n                UseAtlas: false //problems with DXT1\n            ));\n\n            //Impostor material\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.Impostor_StaticAsteroid20m_A, new MyTransparentMaterialProperties(\n                Texture: MyTransparentGeometryTexturesEnum.Impostor_StaticAsteroid20m_A,\n                CanBeAffectedByOtherLights: false,\n                AlphaMistingEnable: false,\n                IgnoreDepth: false,\n                SoftParticleDistanceScale: MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_SCALE_FOR_HARD_PARTICLES,\n                UseAtlas: false\n            ));\n\n            //Impostor material\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.Impostor_StaticAsteroid20m_C, new MyTransparentMaterialProperties(\n                Texture: MyTransparentGeometryTexturesEnum.Impostor_StaticAsteroid20m_C,\n                CanBeAffectedByOtherLights: false,\n                AlphaMistingEnable: false,\n                IgnoreDepth: false,\n                SoftParticleDistanceScale: MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_SCALE_FOR_HARD_PARTICLES,\n                UseAtlas: false\n            ));\n\n            //Impostor materials\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.Impostor_StaticAsteroid50m_D, new MyTransparentMaterialProperties(\n                Texture: MyTransparentGeometryTexturesEnum.Impostor_StaticAsteroid50m_D,\n                CanBeAffectedByOtherLights: false,\n                AlphaMistingEnable: false,\n                IgnoreDepth: false,\n                SoftParticleDistanceScale: MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_SCALE_FOR_HARD_PARTICLES,\n                UseAtlas: false\n            ));\n\n            //Impostor materials\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.Impostor_StaticAsteroid50m_E, new MyTransparentMaterialProperties(\n                Texture: MyTransparentGeometryTexturesEnum.Impostor_StaticAsteroid50m_E,\n                CanBeAffectedByOtherLights: false,\n                AlphaMistingEnable: false,\n                IgnoreDepth: false,\n                SoftParticleDistanceScale: MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_SCALE_FOR_HARD_PARTICLES,\n                UseAtlas: false\n            ));\n\n            //GPS\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.GPS, new MyTransparentMaterialProperties(\n                Texture: MyTransparentGeometryTexturesEnum.GPS,\n                CanBeAffectedByOtherLights: false,\n                AlphaMistingEnable: true,\n                SoftParticleDistanceScale: MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_SCALE_FOR_HARD_PARTICLES,\n                UseAtlas: false,\n                NeedSort: false,\n                Emissivity: 0.15f,\n                AlphaMistingStart: 10,\n                AlphaMistingEnd: 80\n            ));\n\n            //GPSBack\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.GPSBack, new MyTransparentMaterialProperties(\n                Texture: MyTransparentGeometryTexturesEnum.GPSBack,\n                CanBeAffectedByOtherLights: false,\n                AlphaMistingEnable: true,\n                SoftParticleDistanceScale: MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_SCALE_FOR_HARD_PARTICLES,\n                UseAtlas: false,\n                NeedSort: false,\n                Emissivity: 0.15f,\n                AlphaMistingStart: 10,\n                AlphaMistingEnd: 80\n            ));\n\n            //ShotgunParticle\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.ShotgunParticle, new MyTransparentMaterialProperties(\n                Texture: MyTransparentGeometryTexturesEnum.ShotgunParticle,\n                CanBeAffectedByOtherLights: false,\n                AlphaMistingEnable: false,\n                SoftParticleDistanceScale: MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_SCALE_FOR_HARD_PARTICLES,\n                UseAtlas: false,\n                NeedSort: false,\n                Emissivity: 0.0f,\n                AlphaMistingStart: 10,\n                AlphaMistingEnd: 80\n            ));\n            //snap_point_depth\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.snap_point_depth, new MyTransparentMaterialProperties(\n                Texture: MyTransparentGeometryTexturesEnum.snap_point,\n                CanBeAffectedByOtherLights: false,\n                AlphaMistingEnable: false,\n                IgnoreDepth: false,\n                SoftParticleDistanceScale: MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_SCALE_DEFAULT_VALUE\n            ));\n            // Objective cube face\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.ObjectiveDummyFace, new MyTransparentMaterialProperties(\n                Texture: MyTransparentGeometryTexturesEnum.ObjectiveDummyFace,\n                CanBeAffectedByOtherLights: false,\n                AlphaMistingEnable: false,\n                SoftParticleDistanceScale: MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_SCALE_FOR_HARD_PARTICLES\n            ));\n            // Objective cube line\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.ObjectiveDummyLine, new MyTransparentMaterialProperties(\n                Texture: MyTransparentGeometryTexturesEnum.ObjectiveDummyLine,\n                CanBeAffectedByOtherLights: false,\n                AlphaMistingEnable: false,\n                IgnoreDepth: false,\n                SoftParticleDistanceScale: MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_SCALE_FOR_HARD_PARTICLES,\n                NeedSort: false\n            ));\n\n            //Sun Disk\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.SunDisk, new MyTransparentMaterialProperties(\n                Texture: MyTransparentGeometryTexturesEnum.SunDisk,\n                CanBeAffectedByOtherLights: false,\n                AlphaMistingEnable: false,\n                Emissivity: 0f,\n                SoftParticleDistanceScale: MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_SCALE_FOR_HARD_PARTICLES\n            ));\n\n            // Volumetric glare (not affected by occlusion)\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.VolumetricGlare, new MyTransparentMaterialProperties(\n                Texture: MyTransparentGeometryTexturesEnum.LightGlare,\n                CanBeAffectedByOtherLights: false,\n                AlphaMistingEnable: false,\n                IgnoreDepth: false,\n                SoftParticleDistanceScale: 0.2f\n            ));\n\n            //Solar map dust\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.SolarMapDust, new MyTransparentMaterialProperties(\n                Texture: MyTransparentGeometryTexturesEnum.Smoke,\n                CanBeAffectedByOtherLights: false,\n                AlphaMistingEnable: false,\n                SoftParticleDistanceScale: MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_SCALE_FOR_HARD_PARTICLES,\n                UseAtlas: true\n            ));\n\n            // Scanner 01\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.scanner_01, new MyTransparentMaterialProperties(\n                Texture: MyTransparentGeometryTexturesEnum.scanner_01,\n                CanBeAffectedByOtherLights: false,\n                AlphaMistingEnable: false,\n                SoftParticleDistanceScale: MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_SCALE_FOR_HARD_PARTICLES,                \n                Emissivity: 0.15f\n            ));\n\n            //Smoke  square\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.Smoke_square, new MyTransparentMaterialProperties(\n                Texture: MyTransparentGeometryTexturesEnum.Smoke_square,\n                CanBeAffectedByOtherLights: true,\n                AlphaMistingEnable: true,\n                SoftParticleDistanceScale: MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_SCALE_DEFAULT_VALUE,\n                UseAtlas: false\n            ));\n\n            //Smoke  lit\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.Smoke_lit, new MyTransparentMaterialProperties(\n                Texture: MyTransparentGeometryTexturesEnum.Smoke_lit,\n                CanBeAffectedByOtherLights: true,\n                AlphaMistingEnable: true,\n                SoftParticleDistanceScale: MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_SCALE_DEFAULT_VALUE,\n                UseAtlas: false\n            ));\n\n            //Smoke  square unlit\n            MaterialProperties.Add((int)MyTransparentMaterialEnum.Smoke_square_unlit, new MyTransparentMaterialProperties(\n                Texture: MyTransparentGeometryTexturesEnum.Smoke_square,\n                CanBeAffectedByOtherLights: false,\n                AlphaMistingEnable: true,\n                SoftParticleDistanceScale: MyTransparentGeometryConstants.SOFT_PARTICLE_DISTANCE_SCALE_DEFAULT_VALUE,\n                UseAtlas: false\n            ));\n        }\n\n        public static MyTransparentMaterialProperties GetMaterialProperties(MyTransparentMaterialEnum materialType)\n        {\n            return MaterialProperties[(int)materialType];\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/TransparentGeometry/Particles/MyAnimatedParticle.cs",
    "content": "﻿using System;\nusing MinerWarsMath;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils.Utils;\nusing System.Runtime.InteropServices;\nusing MinerWars.AppCode.Game.Render;\n\n//  This is unified particle class. It can be used for point/billboard particles, or for line/polyline particles.\n//  Reason I put it into one class is that their are similar but most important is, that I need to have only\n//  one preallocated list of particles. Ofcourse I will waste a lot of value per particle by storing parameters I\n//  don't need for that particular particle, but at the end, having two or three buffers can be bigger wasting.\n\nnamespace MinerWars.AppCode.Game.TransparentGeometry.Particles\n{\n    public enum MyParticleTypeEnum : byte\n    {\n        Point = 0,\n        Line = 1, \n        Trail = 2,\n    }\n\n\n    class MyAnimatedParticle\n    {\n        [System.Flags]\n        public enum ParticleFlags : byte\n        {\n            BlendTextures = 1 << 0,\n            IsInFrustum =   1 << 1\n        }\n\n        public object Tag;\n\n        float m_elapsedTime;  //secs\n        \n\n        MyParticleGeneration m_generation;\n\n        public MyParticleTypeEnum Type;\n\n        public MyQuad Quad = new MyQuad();\n\n        //Start values\n        public Vector3 StartPosition;\n        public Vector3 Velocity;\n        public float Life;  //secs\n        public float Angle;\n        public float RotationSpeed;\n        public float Thickness;\n        public ParticleFlags Flags;\n\n        //Per life values\n        public MyAnimatedPropertyFloat Radius = new MyAnimatedPropertyFloat();\n        public MyAnimatedPropertyVector4 Color = new MyAnimatedPropertyVector4();\n        public MyAnimatedPropertyInt Material = new MyAnimatedPropertyInt();\n\n        Vector3 m_actualPosition;\n        float m_actualAngle;\n\n        float m_elapsedTimeDivider;\n        float m_normalizedTime;\n\n        //  Parameter-less constructor - because particles are stored in object pool\n        public MyAnimatedParticle()\n        {\n            //  IMPORTANT: This class isn't realy inicialized by constructor, but by Start()\n            //  So don't initialize members here, do it in Start()\n        }\n\n        public void Start(MyParticleGeneration generation)\n        {\n            System.Diagnostics.Debug.Assert(Life > 0);\n\n            m_elapsedTime = 0;\n            m_normalizedTime = 0.0f;\n            m_elapsedTimeDivider = MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS / Life;\n            m_generation = generation;\n\n            MyUtils.AssertIsValid(StartPosition);\n            MyUtils.AssertIsValid(Angle);\n            MyUtils.AssertIsValid(Velocity);\n            MyUtils.AssertIsValid(RotationSpeed);            \n\n            m_actualPosition = StartPosition;\n            m_actualAngle = Angle;\n        }\n\n        public bool Update()\n        {\n            m_elapsedTime += MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS;\n\n            if (m_elapsedTime >= Life)\n                return false;\n\n            m_normalizedTime += m_elapsedTimeDivider;\n\n            m_actualPosition.X += Velocity.X * MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS;\n            m_actualPosition.Y += Velocity.Y * MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS;\n            m_actualPosition.Z += Velocity.Z * MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS;\n\n            m_actualAngle += RotationSpeed * MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS;\n\n            MyUtils.AssertIsValid(m_actualPosition);\n            MyUtils.AssertIsValid(m_actualAngle);\n\n            return true;\n        }\n\n\n\n        //  Update position, check collisions, etc. and draw if particle still lives.\n        //  Return false if particle dies/timeouts in this tick.\n        public bool Draw(MyBillboard billboard)\n        {\n            \n            MyTransparentGeometry.StartParticleProfilingBlock(\"Distance calculation\");\n            //  This time is scaled according to planned lifespan of the particle\n\n            // Distance for sorting\n            Vector3 campos = MyCamera.Position;\n            Vector3.DistanceSquared(ref campos, ref m_actualPosition, out billboard.DistanceSquared);\n\n            MyTransparentGeometry.EndParticleProfilingBlock();\n\n            // If distance to camera is really small don't draw it.\n            if (billboard.DistanceSquared <= 1)\n            {\n                return false;\n            }\n\n            MyTransparentGeometry.StartParticleProfilingBlock(\"Quad calculation\");\n\n            MyTransparentGeometry.StartParticleProfilingBlock(\"actualRadius\");\n            float actualRadius = 1;\n            Radius.GetInterpolatedValue<float>(m_normalizedTime, out actualRadius);\n            MyTransparentGeometry.EndParticleProfilingBlock();\n\n            billboard.ContainedBillboards.Clear();\n\n            billboard.Near = m_generation.GetEffect().Near;\n            billboard.Lowres = m_generation.GetEffect().LowRes || MyRenderConstants.RenderQualityProfile.LowResParticles;\n\n            float alpha = 1;\n\n            if (Type == MyParticleTypeEnum.Point)\n            {\n                MyTransparentGeometry.StartParticleProfilingBlock(\"GetBillboardQuadRotated\");\n                MyUtils.GetBillboardQuadRotated(billboard, ref m_actualPosition, actualRadius, m_actualAngle);\n                MyTransparentGeometry.EndParticleProfilingBlock();\n            }\n            else if (Type == MyParticleTypeEnum.Line)\n            {\n                if (MyMwcUtils.IsZero(Velocity.LengthSquared()))\n                    Velocity = MyMwcUtils.GetRandomVector3Normalized();\n\n                MyQuad quad = new MyQuad();\n\n                MyPolyLine polyLine = new MyPolyLine();\n                polyLine.LineDirectionNormalized = MyMwcUtils.Normalize(Velocity);\n\n                if (m_actualAngle > 0)\n                {\n                    polyLine.LineDirectionNormalized = Vector3.TransformNormal(polyLine.LineDirectionNormalized, Matrix.CreateRotationY(MathHelper.ToRadians(m_actualAngle)));\n                }\n\n                polyLine.Point0 = m_actualPosition;\n                polyLine.Point1.X = m_actualPosition.X + polyLine.LineDirectionNormalized.X * actualRadius;\n                polyLine.Point1.Y = m_actualPosition.Y + polyLine.LineDirectionNormalized.Y * actualRadius;\n                polyLine.Point1.Z = m_actualPosition.Z + polyLine.LineDirectionNormalized.Z * actualRadius;\n\n                if (m_actualAngle > 0)\n                { //centerize\n                    polyLine.Point0.X = polyLine.Point0.X - polyLine.LineDirectionNormalized.X * actualRadius * 0.5f;\n                    polyLine.Point0.Y = polyLine.Point0.Y - polyLine.LineDirectionNormalized.Y * actualRadius * 0.5f;\n                    polyLine.Point0.Z = polyLine.Point0.Z - polyLine.LineDirectionNormalized.Z * actualRadius * 0.5f;\n                    polyLine.Point1.X = polyLine.Point1.X - polyLine.LineDirectionNormalized.X * actualRadius * 0.5f;\n                    polyLine.Point1.Y = polyLine.Point1.Y - polyLine.LineDirectionNormalized.Y * actualRadius * 0.5f;\n                    polyLine.Point1.Z = polyLine.Point1.Z - polyLine.LineDirectionNormalized.Z * actualRadius * 0.5f;\n                }\n\n                polyLine.Thickness = Thickness;\n                MyUtils.GetPolyLineQuad(out quad, ref polyLine);\n\n                if (this.m_generation.AlphaAnisotropic)\n                {\n                    float angle = 1 - Math.Abs(Vector3.Dot(MyMwcUtils.Normalize(MyCamera.ForwardVector), polyLine.LineDirectionNormalized));\n                    float alphaCone = (float)Math.Pow(angle, 0.5f);\n                    alpha = alphaCone;\n                }\n\n                billboard.Position0 = quad.Point0;\n                billboard.Position1 = quad.Point1;\n                billboard.Position2 = quad.Point2;\n                billboard.Position3 = quad.Point3;\n            }\n            else if (Type == MyParticleTypeEnum.Trail)\n            {\n                if (Quad.Point0 == Quad.Point2) //not moving particle\n                    return false;\n                if (Quad.Point1 == Quad.Point3) //not moving particle was previous one\n                    return false;\n                if (Quad.Point0 == Quad.Point3) //not moving particle was previous one\n                    return false;\n\n                billboard.Position0 = Quad.Point0;\n                billboard.Position1 = Quad.Point1;\n                billboard.Position2 = Quad.Point2;\n                billboard.Position3 = Quad.Point3;\n\n                //if (this.m_generation.AlphaAnisotropic)\n             /*   { //Trails are anisotropic by default (nobody wants them to see ugly)\n                    Vector3 lineDir = Vector3.Normalize(Quad.Point1 - Quad.Point0);\n                    float angle = 1 - Math.Abs(Vector3.Dot(MyMwcUtils.Normalize(MyCamera.ForwardVector), lineDir));\n                    float alphaCone = (float)Math.Pow(angle, 0.3f);\n                    alpha = alphaCone;\n                }*/\n            }\n            else\n            {\n                throw new NotSupportedException(Type + \" is not supported particle type\");\n            }\n\n            MyTransparentGeometry.EndParticleProfilingBlock();\n\n            MyTransparentGeometry.StartParticleProfilingBlock(\"Material calculation\");\n\n            Vector4 color;\n            Color.GetInterpolatedValue<Vector4>(m_normalizedTime, out color);\n\n            int material1 = (int)MyTransparentMaterialEnum.Test;\n            int material2 = (int)MyTransparentMaterialEnum.Test;\n            float textureBlendRatio = 0;\n            if ((Flags & ParticleFlags.BlendTextures) != 0)\n            {\n                float prevTime, nextTime, difference;\n                Material.GetPreviousValue(m_normalizedTime, out material1, out prevTime);\n                Material.GetNextValue(m_normalizedTime, out material2, out nextTime, out difference);\n\n                if (prevTime != nextTime)\n                    textureBlendRatio = (m_normalizedTime - prevTime) * difference;\n            }\n            else\n            {\n                Material.GetInterpolatedValue<int>(m_normalizedTime, out material1);\n            }\n\n            MyTransparentGeometry.EndParticleProfilingBlock();\n                     \n            //This gets 0.44ms for 2000 particles\n            MyTransparentGeometry.StartParticleProfilingBlock(\"billboard.Start\");\n\n\n            billboard.MaterialEnum = (MyTransparentMaterialEnum)material1;\n            billboard.BlendMaterial = (MyTransparentMaterialEnum)material2;\n            billboard.BlendTextureRatio = textureBlendRatio;\n            billboard.EnableColorize = false;\n\n            billboard.Color = color * alpha * m_generation.GetEffect().UserColorMultiplier;\n\n            MyTransparentGeometry.EndParticleProfilingBlock();\n\n            return true;\n        }\n\n        public void AddMotionInheritance(ref float motionInheritance, ref Matrix deltaMatrix)\n        {\n            Vector3 newPosition = Vector3.Transform(m_actualPosition, deltaMatrix);\n\n            m_actualPosition = m_actualPosition + (newPosition - m_actualPosition) * motionInheritance;\n\n            Velocity = Vector3.TransformNormal(Velocity, deltaMatrix);\n        }\n\n        public Vector3 ActualPosition\n        {\n            get { return m_actualPosition; }\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/TransparentGeometry/Particles/MyAnimatedProperty.cs",
    "content": "﻿#region Using\n\nusing System;\nusing System.Collections;\nusing System.Collections.Generic;\nusing System.Xml;\nusing System.Linq;\nusing System.Globalization;\n\nusing MinerWars.AppCode.Game.Utils;\n\nusing MinerWarsMath;\nusing MinerWars.CommonLIB.AppCode.Utils;\n\n\n#endregion\n\nnamespace MinerWars.AppCode.Game.TransparentGeometry.Particles\n{\n    #region Interfaces\n\n    public interface IMyAnimatedProperty : IMyConstProperty\n    {\n        void GetInterpolatedValue(float time, out object value);\n        void AddKey(float time, object val);\n        void RemoveKey(float time);\n        //IEnumerable GetKeys();\n        void ClearKeys();\n    }\n\n    public interface IMyAnimatedProperty<T> : IMyAnimatedProperty\n    {\n        void GetInterpolatedValue<U>(float time, out U value) where U : T;\n        void AddKey<U>(float time, U val) where U : T;\n    }\n\n    #endregion\n\n    #region Interpolators\n\n    static class MyIntInterpolator\n    {\n        public static void Lerp(ref int val1, ref int val2, float time, out int value)\n        {\n            value = val1  + (int)((val2 - val1) * time);// (int)MathHelper.Lerp(val1, val2, time);\n        }\n        public static void Switch(ref int val1, ref int val2, float time, out int value)\n        {\n            value = time < 0.5f ? val1 : val2;\n        }\n    }\n\n    static class MyFloatInterpolator\n    {\n        public static void Lerp(ref float val1, ref float val2, float time, out float value)\n        {\n           // value = 0;// MathHelper.Lerp(val1, val2, time);\n            value = val1 + (val2 - val1) * time;\n        }\n    }\n\n    static class MyVector3Interpolator\n    {\n        public static void Lerp(ref Vector3 val1, ref Vector3 val2, float time, out Vector3 value)\n        {\n            //value = Vector3.Zero;// Vector3.Lerp(ref val1, ref val2, time, out value);\n            value.X = val1.X + (val2.X - val1.X) * time;\n            value.Y = val1.Y + (val2.Y - val1.Y) * time;\n            value.Z = val1.Z + (val2.Z - val1.Z) * time;\n        }\n    }\n\n    static class MyVector4Interpolator\n    {\n        public static void Lerp(ref Vector4 val1, ref Vector4 val2, float time, out Vector4 value)\n        {\n            //value = Vector4.Zero;// Vector4.Lerp(ref val1, ref val2, time, out value);\n            value.X = val1.X + (val2.X - val1.X) * time;\n            value.Y = val1.Y + (val2.Y - val1.Y) * time;\n            value.Z = val1.Z + (val2.Z - val1.Z) * time;\n            value.W = val1.W + (val2.W - val1.W) * time;\n        }\n    }\n\n    #endregion\n\n\n    #region MyAnimatedProperty generic\n\n    public class MyAnimatedProperty<T> : IMyAnimatedProperty<T>\n    {\n        public struct ValueHolder\n        {\n            public ValueHolder(float time, T value, float diff)\n            {\n                Time = time;\n                Value = value;\n                PrecomputedDiff = diff;\n            }\n\n            public T Value;\n            public float PrecomputedDiff;\n            public float Time;\n        }\n\n        #region Comparer\n\n        class MyKeysComparer : IComparer<MyAnimatedProperty<T>.ValueHolder>\n        {\n            public int Compare(MyAnimatedProperty<T>.ValueHolder x, MyAnimatedProperty<T>.ValueHolder y)\n            {\n                return x.Time.CompareTo(y.Time);\n            }\n        }\n\n        #endregion\n\n        //protected SortedList<float, ValueHolder> m_keys = new SortedList<float, ValueHolder>(16);\n        protected List<ValueHolder> m_keys = new List<ValueHolder>(); //cannot preinit space, because it would grow the animatedparticle pool mych\n        public delegate void InterpolatorDelegate(ref T previousValue, ref T nextValue, float time, out T value);\n        public InterpolatorDelegate Interpolator;\n        string m_name;\n        static MyKeysComparer m_keysComparer = new MyKeysComparer();\n\n        public MyAnimatedProperty()\n        {\n            Init();\n        }\n\n        public MyAnimatedProperty(string name, InterpolatorDelegate interpolator)\n            : this()\n        {\n            m_name = name;\n            if (interpolator != null)\n                Interpolator = interpolator;\n        }\n\n        public string Name\n        {\n            get { return m_name; }\n        }\n\n        protected virtual void Init()\n        {\n        }\n\n        public void SetValue(object val)\n        {\n        }\n\n        public void SetValue(T val)\n        {\n        }\n\n        public object GetValue()\n        {\n            return null;\n        }\n\n        public U GetValue<U>()\n        {\n            return default(U);\n        }\n\n        public void GetInterpolatedValue(float time, out object value)\n        {\n            T valueT;\n            GetInterpolatedValue<T>(time, out valueT);\n            value = valueT;\n        }\n\n        public void GetInterpolatedValue<U>(float time, out U value) where U : T \n        {\n            if (m_keys.Count == 0)\n            {\n                value = default(U);\n                return;\n            }\n\n            if (m_keys.Count == 1)\n            {\n                value = (U)m_keys[0].Value;\n                return;\n            }\n\n            if (time > m_keys[m_keys.Count - 1].Time)\n            {\n                value = (U)m_keys[m_keys.Count - 1].Value;\n                return;\n            }\n\n            T previousValue, nextValue;\n            float previousTime, nextTime, difference;\n\n         //   MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartParticleProfilingBlock(\"GetPreviousValue\");\n            GetPreviousValue(time, out previousValue, out previousTime);\n         //   MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndParticleProfilingBlock();\n\n         //   MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartParticleProfilingBlock(\"GetNextValue\");\n            GetNextValue(time, out nextValue, out nextTime, out difference);\n          //  MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndParticleProfilingBlock();\n\n            if (nextTime == previousTime)\n                value = (U)previousValue;\n            else\n            {\n                T val;\n                Interpolator(ref previousValue, ref nextValue, (time - previousTime) * difference, out val);\n\n                value = (U)val;\n            }\n        }\n\n\n        public void GetPreviousValue(float time, out T previousValue, out float previousTime)\n        {\n            previousValue = default(T);\n            previousTime = 0;\n\n            if (m_keys.Count > 0)\n            {\n                previousTime = m_keys[0].Time;\n                previousValue = m_keys[0].Value;\n            }      \n\n            for(int i = 1; i < m_keys.Count; i++)\n            {\n                if (m_keys[i].Time >= time)\n                    break;\n                    \n                previousTime = m_keys[i].Time;\n                previousValue = m_keys[i].Value;\n            }\n        }\n\n        public void GetNextValue(float time, out T nextValue, out float nextTime, out float difference)\n        {\n            nextValue = default(T);\n            nextTime = -1;\n            difference = 0;\n\n            for (int i = 0; i < m_keys.Count; i++)\n            {\n                nextTime = m_keys[i].Time;\n                nextValue = m_keys[i].Value;\n                difference = m_keys[i].PrecomputedDiff;\n\n                if (nextTime >= time)\n                    break;\n            }\n        }\n\n\n        public void AddKey(ValueHolder val) \n        {\n            m_keys.Add(val);\n        }\n\n        public void AddKey<U>(float time, U val)  where U : T\n        {\n            //if (m_keys.ContainsKey(time))\n              //  m_keys.Remove(time);\n            RemoveKey(time);\n\n            m_keys.Add(new ValueHolder(time, (T)val, 0));\n            m_keys.Sort(m_keysComparer);\n\n            int index = 0;\n            for (index = 0; index < m_keys.Count; index++)\n            {\n                if (m_keys[index].Time == time)\n                {\n                    break;\n                }\n            }\n\n            if (index > 0)\n            {\n                //Calculate relative difference with previous value to faster calculation of interpolated values\n                //(time - prevtime) / (nexttime - prevtime)\n                UpdateDiff(index);    \n            }              \n        }\n\n        private void UpdateDiff(int index)\n        {\n            //Calculate relative difference with previous value to faster calculation of interpolated values\n            //(time - prevtime) / (nexttime - prevtime)\n            if (index == 0 || index >= m_keys.Count)\n                return;\n\n            float time = m_keys[index].Time;\n            float prevTime = m_keys[index - 1].Time;\n            m_keys[index] = new ValueHolder(time, (T)m_keys[index].Value, 1.0f / (time - prevTime));\n        }\n\n        public void AddKey(float time, object val)\n        {\n            AddKey(time, (T)val);\n        }\n\n        public void RemoveKey(float time)\n        {\n            for (int i = 0; i < m_keys.Count; i++)\n            {\n                if (m_keys[i].Time == time)\n                {\n                    RemoveKey(i);\n                    break;\n                }\n            }\n        }\n\n        void RemoveKey(int index)\n        {\n            m_keys.RemoveAt(index);\n            UpdateDiff(index);\n        }\n\n        public void ClearKeys()\n        {\n            m_keys.Clear();\n        }\n\n        public void GetKey(int index, out float time, out T value)\n        {\n            time = m_keys[index].Time;\n            value = m_keys[index].Value;\n        }\n\n        public int GetKeysCount()\n        {\n            return m_keys.Count;\n        }\n\n        public virtual IMyConstProperty Duplicate()\n        {\n            System.Diagnostics.Debug.Assert(false);\n            return null;\n        }\n\n        protected virtual void Duplicate(IMyConstProperty targetProp)\n        {\n            MyAnimatedProperty<T> animatedTargetProp = targetProp as MyAnimatedProperty<T>;\n            System.Diagnostics.Debug.Assert(animatedTargetProp != null);\n\n            animatedTargetProp.Interpolator = Interpolator;\n            animatedTargetProp.ClearKeys();\n\n            foreach (ValueHolder pair in m_keys)\n            {\n                animatedTargetProp.AddKey(pair);\n            } \n        }\n\n        #region Serialization\n\n        public virtual void Serialize(XmlWriter writer)\n        {\n            writer.WriteStartElement(this.GetType().Name);\n            writer.WriteAttributeString(\"name\", Name);\n\n            writer.WriteStartElement(\"Keys\");\n            foreach (ValueHolder key in m_keys)\n            {\n                writer.WriteStartElement(\"Key\");\n\n                writer.WriteElementString(\"Time\", key.Time.ToString(CultureInfo.InvariantCulture));\n            \n                writer.WriteStartElement(\"Value\");\n                SerializeValue(writer, key.Value);\n                writer.WriteEndElement(); //Value\n\n                writer.WriteEndElement(); //Key\n            }\n            writer.WriteEndElement(); //Keys\n\n            writer.WriteEndElement(); //Typename\n        }\n\n       \n        public virtual void Deserialize(XmlReader reader)\n        {\n            m_name = reader.GetAttribute(\"name\");\n            reader.ReadStartElement(); // Type\n\n            m_keys.Clear();\n\n            bool isEmpty = reader.IsEmptyElement;\n\n            reader.ReadStartElement(); // Keys\n\n            while (reader.NodeType != XmlNodeType.EndElement)\n            {\n                reader.ReadStartElement(); // Key\n\n                float time = reader.ReadElementContentAsFloat();\n\n                reader.ReadStartElement(); // Value\n                object value;\n                DeserializeValue(reader, out value);\n                reader.ReadEndElement(); //Value\n\n                AddKey<T>(time, (T)value);\n\n                reader.ReadEndElement(); //Key\n            }\n\n            //RemoveRedundantKeys();\n\n            if (!isEmpty)\n                reader.ReadEndElement(); //Keys\n\n            reader.ReadEndElement(); // Type\n        }\n\n        void RemoveRedundantKeys()\n        {\n            //remove redundant keys\n            int i = 0;\n            bool previousDifferent = true;\n            while (i < m_keys.Count - 1)\n            {\n                object value1 = m_keys[i].Value;\n                object value2 = m_keys[i + 1].Value;\n\n                bool same = EqualsValues(value1, value2);\n                if (same && (previousDifferent == false))\n                {\n                    RemoveKey(i);\n                    MyParticlesLibrary.RedundancyDetected++;\n                    continue;\n                }\n\n                previousDifferent = !same;\n\n                i++;\n            }\n\n            if (m_keys.Count == 2)\n            {\n                object value1 = m_keys[0].Value;\n                object value2 = m_keys[1].Value;\n\n                bool same = EqualsValues(value1, value2);\n                if (same)\n                {\n                    RemoveKey(i);\n                    MyParticlesLibrary.RedundancyDetected++;\n                }\n            }\n        }\n\n        public virtual void SerializeValue(XmlWriter writer, object value)\n        {\n        }\n\n        public virtual void DeserializeValue(XmlReader reader, out object value)\n        {\n            value = reader.Value;\n            reader.Read();\n        }\n\n        protected virtual bool EqualsValues(object value1, object value2)\n        {\n            return false;\n        }\n\n        #endregion\n    }\n\n    #endregion\n\n    #region Derived animation properties\n\n    public class MyAnimatedPropertyFloat : MyAnimatedProperty<float>\n    {\n        public MyAnimatedPropertyFloat()\n        { }\n\n        public MyAnimatedPropertyFloat(string name)\n            : this(name, null)\n        { }\n\n        public MyAnimatedPropertyFloat(string name, InterpolatorDelegate interpolator)\n            : base(name, interpolator)\n        {\n        }\n\n        protected override void Init()\n        {\n            Interpolator = MyFloatInterpolator.Lerp;\n            base.Init();\n        }\n\n        public override IMyConstProperty Duplicate()\n        {\n            MyAnimatedPropertyFloat prop = new MyAnimatedPropertyFloat(Name);\n            Duplicate(prop);\n            return prop;\n        }\n\n        public override void SerializeValue(XmlWriter writer, object value)\n        {\n            writer.WriteValue(((float)value).ToString(CultureInfo.InvariantCulture));\n        }\n\n        public override void DeserializeValue(XmlReader reader, out object value)\n        {\n            base.DeserializeValue(reader, out value);\n            value = Convert.ToSingle(value, CultureInfo.InvariantCulture);\n        }\n\n        protected override bool EqualsValues(object value1, object value2)\n        {\n            return MyMwcUtils.IsZero((float)value1 - (float)value2);\n        }\n    }\n\n    public class MyAnimatedPropertyVector3 : MyAnimatedProperty<Vector3>\n    {\n        public MyAnimatedPropertyVector3()\n        { }\n\n        public MyAnimatedPropertyVector3(string name)\n            : this(name, null)\n        { }\n\n        public MyAnimatedPropertyVector3(string name, InterpolatorDelegate interpolator)\n            : base(name, interpolator)\n        {\n        }\n\n        protected override void Init()\n        {\n            Interpolator = MyVector3Interpolator.Lerp;\n            base.Init();\n        }\n\n        public override IMyConstProperty Duplicate()\n        {\n            MyAnimatedPropertyVector3 prop = new MyAnimatedPropertyVector3(Name);\n            Duplicate(prop);\n            return prop;\n        }\n\n        public override void SerializeValue(XmlWriter writer, object value)\n        {\n            Vector3 v = (Vector3)value;\n            writer.WriteValue(v.X.ToString(CultureInfo.InvariantCulture) + \" \" + v.Y.ToString(CultureInfo.InvariantCulture) + \" \" + v.Z.ToString(CultureInfo.InvariantCulture));\n        }\n\n        public override void DeserializeValue(XmlReader reader, out object value)\n        {\n            Vector3 v;\n            MyUtils.DeserializeValue(reader, out v);\n            value = v;\n        }\n\n        protected override bool EqualsValues(object value1, object value2)\n        {\n            return MyMwcUtils.IsZero((Vector3)value1 - (Vector3)value2);\n        }\n    }\n\n    public class MyAnimatedPropertyVector4 : MyAnimatedProperty<Vector4>\n    {\n        public MyAnimatedPropertyVector4() { }\n\n        public MyAnimatedPropertyVector4(string name)\n            : this(name, null)\n        {\n        }\n\n        public MyAnimatedPropertyVector4(string name, InterpolatorDelegate interpolator)\n        : base(name, interpolator)\n        {\n        }\n\n        protected override void Init()\n        {\n            Interpolator = MyVector4Interpolator.Lerp;\n            base.Init();\n        }\n\n        public override IMyConstProperty Duplicate()\n        {\n            MyAnimatedPropertyVector4 prop = new MyAnimatedPropertyVector4(Name);\n            Duplicate(prop);\n            return prop;\n        }\n\n        public override void SerializeValue(XmlWriter writer, object value)\n        {\n            Vector4 v = (Vector4)value;\n            writer.WriteValue(v.X.ToString(CultureInfo.InvariantCulture) + \" \" + v.Y.ToString(CultureInfo.InvariantCulture) + \" \" + v.Z.ToString(CultureInfo.InvariantCulture) + \" \" + v.W.ToString(CultureInfo.InvariantCulture));\n        }\n\n        public override void DeserializeValue(XmlReader reader, out object value)\n        {\n            Vector4 v;\n            MyUtils.DeserializeValue(reader, out v);\n            value = v;\n        }\n\n        protected override bool EqualsValues(object value1, object value2)\n        {\n            return MyMwcUtils.IsZero((Vector4)value1 - (Vector4)value2);\n        }\n    }\n\n    public class MyAnimatedPropertyInt : MyAnimatedProperty<int>\n    {\n        public MyAnimatedPropertyInt() { }\n\n        public MyAnimatedPropertyInt(string name)\n            : this(name, null)\n        { }\n\n        public MyAnimatedPropertyInt(string name, InterpolatorDelegate interpolator)\n            : base(name, interpolator)\n        {\n        }\n\n        protected override void Init()\n        {\n            Interpolator = MyIntInterpolator.Lerp;\n            base.Init();\n        }\n\n        public override IMyConstProperty Duplicate()\n        {\n            MyAnimatedPropertyInt prop = new MyAnimatedPropertyInt(Name);\n            Duplicate(prop);\n            return prop;\n        }\n\n        public override void SerializeValue(XmlWriter writer, object value)\n        {\n            writer.WriteValue(((int)value).ToString(CultureInfo.InvariantCulture));\n        }\n\n        public override void DeserializeValue(XmlReader reader, out object value)\n        {\n            base.DeserializeValue(reader, out value);\n            value = Convert.ToInt32(value);\n        }\n\n        protected override bool EqualsValues(object value1, object value2)\n        {\n            return (int)value1 == (int)value2;\n        }\n    }\n\n    public class MyAnimatedPropertyEnum : MyAnimatedPropertyInt\n    {\n        Type m_enumType;\n        List<string> m_enumStrings;\n\n        public MyAnimatedPropertyEnum() { }\n\n        public MyAnimatedPropertyEnum(string name)\n            : this(name, null, null)\n        { }\n\n        public MyAnimatedPropertyEnum(string name, Type enumType, List<string> enumStrings)\n            : this(name, null, enumType, enumStrings)\n        { }\n\n        public MyAnimatedPropertyEnum(string name, InterpolatorDelegate interpolator, Type enumType, List<string> enumStrings)\n            : base(name, interpolator)\n        {\n            m_enumType = enumType;\n            m_enumStrings = enumStrings;\n        }\n\n        public Type GetEnumType()\n        {\n            return m_enumType;\n        }\n\n        public List<string> GetEnumStrings()\n        {\n            return m_enumStrings;\n        }\n\n        public override IMyConstProperty Duplicate()\n        {\n            MyAnimatedPropertyEnum prop = new MyAnimatedPropertyEnum(Name);\n            Duplicate(prop);\n            prop.m_enumType = m_enumType;\n            prop.m_enumStrings = m_enumStrings;\n            return prop;\n        }\n    }\n\n    #endregion \n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/TransparentGeometry/Particles/MyAnimatedProperty2D.cs",
    "content": "﻿#region Using\n\nusing System;\nusing System.Collections;\nusing System.Collections.Generic;\nusing System.Xml;\nusing System.Globalization;\n\nusing MinerWarsMath;\nusing MinerWars.CommonLIB.AppCode.Utils;\n\n#endregion\n\nnamespace MinerWars.AppCode.Game.TransparentGeometry.Particles\n{\n    #region Interfaces\n\n    public interface IMyAnimatedProperty2D : IMyAnimatedProperty\n    {\n        IMyAnimatedProperty CreateEmptyKeys();\n        void GetInterpolatedKeys(float overallTime, float multiplier, IMyAnimatedProperty interpolatedKeys);\n    }\n\n    public interface IMyAnimatedProperty2D<T, V, W> : IMyAnimatedProperty2D\n    {\n        X GetInterpolatedValue<X>(float overallTime, float time) where X : V;\n        void GetInterpolatedKeys(float overallTime, W variance, float multiplier, IMyAnimatedProperty interpolatedKeys);\n    }\n\n\n    #endregion\n\n    #region MyAnimatedProperty2D generic\n\n    public class MyAnimatedProperty2D<T, V, W> : MyAnimatedProperty<T>, IMyAnimatedProperty2D<T, V, W> where T : MyAnimatedProperty<V>, new()\n    {   //List<0 - effect time> of list<0-1> of keys\n\n        protected MyAnimatedProperty<V>.InterpolatorDelegate m_interpolator2;\n\n        public MyAnimatedProperty2D()\n        { }\n\n        public MyAnimatedProperty2D(string name, MyAnimatedProperty<V>.InterpolatorDelegate interpolator)\n            : base(name, null)\n        {\n            m_interpolator2 = interpolator;\n        }\n\n        public X GetInterpolatedValue<X>(float overallTime, float time) where X : V\n        {\n            T previousKeys, nextKeys;\n            float previousTime, nextTime, difference;\n            GetPreviousValue(overallTime, out previousKeys, out previousTime);\n            GetNextValue(overallTime, out nextKeys, out nextTime, out difference);\n\n            V prevValue, nextValue;\n            previousKeys.GetInterpolatedValue<V>(time, out prevValue);\n            nextKeys.GetInterpolatedValue<V>(time, out nextValue);\n\n            V interpolatedValue;\n            previousKeys.Interpolator(ref prevValue, ref nextValue, (overallTime - previousTime) * difference, out interpolatedValue);\n\n            return (X)interpolatedValue;\n        }\n\n        public void GetInterpolatedKeys(float overallTime, float multiplier, IMyAnimatedProperty interpolatedKeys)\n        {\n            GetInterpolatedKeys(overallTime, default(W), multiplier, interpolatedKeys);\n        }\n\n        public void GetInterpolatedKeys(float overallTime, W variance, float multiplier, IMyAnimatedProperty interpolatedKeysOb)\n        {\n            T previousKeys, nextKeys;\n            float previousTime, nextTime, difference;\n            GetPreviousValue(overallTime, out previousKeys, out previousTime);\n            GetNextValue(overallTime, out nextKeys, out nextTime, out difference);\n\n            T interpolatedKeys = interpolatedKeysOb as T;\n            interpolatedKeys.ClearKeys();\n            if (m_interpolator2 != null)\n                interpolatedKeys.Interpolator = m_interpolator2;\n\n            for (int i = 0; i < previousKeys.GetKeysCount(); i++)\n            {\n                float key; V value;\n                previousKeys.GetKey(i, out key, out value);\n\n                V prevValue, nextValue;\n                previousKeys.GetInterpolatedValue<V>(key, out prevValue);\n                nextKeys.GetInterpolatedValue<V>(key, out nextValue);\n\n                V interpolatedValue = prevValue;\n                         \n                if (nextTime != previousTime)\n                    interpolatedKeys.Interpolator(ref prevValue, ref nextValue, (overallTime - previousTime) * difference, out interpolatedValue);\n                         \n                ApplyVariance(ref interpolatedValue, ref variance, multiplier, out interpolatedValue);\n\n                interpolatedKeys.AddKey(key, interpolatedValue);\n            }\n        }\n\n        public virtual void ApplyVariance(ref V interpolatedValue, ref W variance, float multiplier, out V value)\n        {\n            System.Diagnostics.Debug.Assert(false);\n            value = default(V);\n        }\n\n        public IMyAnimatedProperty CreateEmptyKeys()\n        {\n            return new T();\n        }\n\n        public override void SerializeValue(XmlWriter writer, object value)\n        {\n            IMyAnimatedProperty prop = value as IMyAnimatedProperty;\n            prop.Serialize(writer);\n        }\n\n        public override IMyConstProperty Duplicate()\n        {\n            System.Diagnostics.Debug.Assert(false);\n            return null;\n        }\n\n        protected override void Duplicate(IMyConstProperty targetProp)\n        {\n            MyAnimatedProperty2D<T, V, W> animatedTargetProp = targetProp as MyAnimatedProperty2D<T, V, W>;\n            System.Diagnostics.Debug.Assert(animatedTargetProp != null);\n\n            animatedTargetProp.Interpolator = Interpolator;\n            animatedTargetProp.m_interpolator2 = m_interpolator2;\n\n            animatedTargetProp.ClearKeys();\n\n            foreach (ValueHolder key in m_keys)\n            {\n                animatedTargetProp.AddKey(key);\n            } \n        }\n    }\n\n    #endregion\n\n    #region Derived 2D animation properties\n\n    public class MyAnimatedProperty2DFloat : MyAnimatedProperty2D<MyAnimatedPropertyFloat, float, float>\n    {\n        public MyAnimatedProperty2DFloat(string name)\n            : this(name, null)\n        { }\n\n        public MyAnimatedProperty2DFloat(string name, MyAnimatedProperty<float>.InterpolatorDelegate interpolator)\n            : base(name, interpolator)\n        {\n        }\n\n        public override void DeserializeValue(XmlReader reader, out object value)\n        {\n            MyAnimatedPropertyFloat prop = new MyAnimatedPropertyFloat(this.Name, m_interpolator2);\n            prop.Deserialize(reader);\n            value = prop;\n        }\n\n        public override IMyConstProperty Duplicate()\n        {\n            MyAnimatedProperty2DFloat prop = new MyAnimatedProperty2DFloat(Name);\n            Duplicate(prop);\n            return prop;\n        }\n\n        public override void ApplyVariance(ref float interpolatedValue, ref float variance, float multiplier, out float value) \n        {\n            if ((variance != 0) || (multiplier != 1))\n            {\n                interpolatedValue = MyMwcUtils.GetRandomFloat(interpolatedValue - variance, interpolatedValue + variance) * multiplier;\n            }\n\n            value = interpolatedValue;\n        }\n    }\n\n    public class MyAnimatedProperty2DInt : MyAnimatedProperty2D<MyAnimatedPropertyInt, int, int>\n    {\n        public MyAnimatedProperty2DInt(string name)\n            : this(name, null)\n        { }\n\n        public MyAnimatedProperty2DInt(string name, MyAnimatedProperty<int>.InterpolatorDelegate interpolator)\n            : base(name, interpolator)\n        {\n        }\n\n        public override void DeserializeValue(XmlReader reader, out object value)\n        {\n            MyAnimatedPropertyInt prop = new MyAnimatedPropertyInt(this.Name, m_interpolator2);\n            prop.Deserialize(reader);\n            value = prop;\n        }\n\n        public override IMyConstProperty Duplicate()\n        {\n            MyAnimatedProperty2DInt prop = new MyAnimatedProperty2DInt(Name);\n            Duplicate(prop);\n            return prop;\n        }\n\n        public override void ApplyVariance(ref int interpolatedValue, ref int variance, float multiplier, out int value)\n        {\n            if ((variance != 0) || (multiplier != 1))\n            {\n                interpolatedValue = (int)(MyMwcUtils.GetRandomInt(interpolatedValue - variance, interpolatedValue + variance) * multiplier);\n            }\n\n            value = interpolatedValue;\n        }\n    }\n\n    public class MyAnimatedProperty2DEnum : MyAnimatedProperty2DInt\n    {\n        Type m_enumType;\n        List<string> m_enumStrings;\n\n        public MyAnimatedProperty2DEnum(string name)\n            : this(name, null, null)\n        { }\n\n        public MyAnimatedProperty2DEnum(string name, Type enumType, List<string> enumStrings)\n            : this(name, null, enumType, enumStrings)\n        { }\n\n        public MyAnimatedProperty2DEnum(string name, MyAnimatedProperty<int>.InterpolatorDelegate interpolator, Type enumType, List<string> enumStrings)\n            : base(name, interpolator)\n        {\n            m_enumType = enumType;\n            m_enumStrings = enumStrings;\n        }\n\n        public override void DeserializeValue(XmlReader reader, out object value)\n        {\n            MyAnimatedPropertyInt prop = new MyAnimatedPropertyInt(this.Name, m_interpolator2);\n            prop.Deserialize(reader);\n            value = prop;\n        }\n\n        public Type GetEnumType()\n        {\n            return m_enumType;\n        }\n\n        public List<string> GetEnumStrings()\n        {\n            return m_enumStrings;\n        }\n\n        public override IMyConstProperty Duplicate()\n        {\n            MyAnimatedProperty2DEnum prop = new MyAnimatedProperty2DEnum(Name);\n            Duplicate(prop);\n            prop.m_enumType = m_enumType;\n            prop.m_enumStrings = m_enumStrings;\n            return prop;\n        }\n    }\n\n    public class MyAnimatedProperty2DVector3 : MyAnimatedProperty2D<MyAnimatedPropertyVector3, Vector3, Vector3>\n    {\n        public MyAnimatedProperty2DVector3(string name)\n            : this(name, null)\n        { }\n\n        public MyAnimatedProperty2DVector3(string name, MyAnimatedProperty<Vector3>.InterpolatorDelegate interpolator)\n            : base(name, interpolator)\n        {\n        }\n\n        public override void DeserializeValue(XmlReader reader, out object value)\n        {\n            MyAnimatedPropertyVector3 prop = new MyAnimatedPropertyVector3(this.Name, m_interpolator2);\n            prop.Deserialize(reader);\n            value = prop;\n        }\n\n        public override IMyConstProperty Duplicate()\n        {\n            MyAnimatedProperty2DVector3 prop = new MyAnimatedProperty2DVector3(Name);\n            Duplicate(prop);\n            return prop;\n        }\n\n        public override void ApplyVariance(ref Vector3 interpolatedValue, ref Vector3 variance, float multiplier, out Vector3 value)\n        {\n            if ((variance != Vector3.Zero) || (multiplier != 1))\n            {\n                value.X = MyMwcUtils.GetRandomFloat(interpolatedValue.X - variance.X, interpolatedValue.X + variance.X) * multiplier;\n                value.Y = MyMwcUtils.GetRandomFloat(interpolatedValue.Y - variance.Y, interpolatedValue.Y + variance.Y) * multiplier;\n                value.Z = MyMwcUtils.GetRandomFloat(interpolatedValue.Z - variance.Z, interpolatedValue.Z + variance.Z) * multiplier;\n            }\n\n            value = interpolatedValue;\n        }\n    }\n\n    public class MyAnimatedProperty2DVector4 : MyAnimatedProperty2D<MyAnimatedPropertyVector4, Vector4, float>\n    {\n        public MyAnimatedProperty2DVector4(string name)\n            : this(name, null)\n        { }\n\n        public MyAnimatedProperty2DVector4(string name, MyAnimatedProperty<Vector4>.InterpolatorDelegate interpolator)\n            : base(name, null)\n        {\n        }\n\n        public override void DeserializeValue(XmlReader reader, out object value)\n        {\n            MyAnimatedPropertyVector4 prop = new MyAnimatedPropertyVector4(this.Name, m_interpolator2);\n            prop.Deserialize(reader);\n            value = prop;\n        }\n\n        public override IMyConstProperty Duplicate()\n        {\n            MyAnimatedProperty2DVector4 prop = new MyAnimatedProperty2DVector4(Name);\n            Duplicate(prop);\n            return prop;\n        }\n\n        public override void ApplyVariance(ref Vector4 interpolatedValue, ref float variance, float multiplier, out Vector4 value)\n        {\n            float rnd = MyMwcUtils.GetRandomFloat(1 - variance, 1 + variance);\n\n            value.X = interpolatedValue.X * rnd;\n            value.Y = interpolatedValue.Y * rnd;\n            value.Z = interpolatedValue.Z * rnd;\n            value.W = interpolatedValue.W * rnd;\n        }\n    }\n\n    #endregion\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/TransparentGeometry/Particles/MyConstProperty.cs",
    "content": "﻿#region Using\n\nusing System;\nusing System.Collections;\nusing System.Collections.Generic;\nusing System.Xml;\nusing System.Globalization;\n\nusing MinerWars.AppCode.Game.Utils;\n\nusing MinerWarsMath;\n\n#endregion\n\nnamespace MinerWars.AppCode.Game.TransparentGeometry.Particles\n{\n    #region Interfaces\n\n    public interface IMyConstProperty\n    {\n        string Name { get; }\n        void Serialize(XmlWriter writer);\n        void Deserialize(XmlReader reader);\n        void SerializeValue(XmlWriter writer, object value);\n        void DeserializeValue(XmlReader reader, out object value);\n\n        void SetValue(object val);\n        //object GetValue();\n        IMyConstProperty Duplicate();\n    }\n\n    #endregion\n\n    #region MyConstProperty generic\n\n    public class MyConstProperty<T> : IMyConstProperty\n    {\n        string m_name;\n        T m_value;\n\n        public MyConstProperty()\n        {\n            Init();\n        }\n\n        public MyConstProperty(string name)\n            : this()\n        {\n            m_name = name;\n        }\n\n        public string Name\n        {\n            get { return m_name; }\n        }\n\n        protected virtual void Init()\n        {\n        }\n                      /*\n        public object GetValue()\n        {\n            return m_value;\n        }               */\n\n        public U GetValue<U>() where U : T\n        {\n            return (U)m_value;\n        }\n\n        public void SetValue(object val)\n        {\n            SetValue((T)val);\n        }\n\n        public void SetValue(T val)\n        {\n            m_value = val;\n        }\n\n        public virtual IMyConstProperty Duplicate()\n        {\n            System.Diagnostics.Debug.Assert(false);\n            return null;\n        }\n\n        protected virtual void Duplicate(IMyConstProperty targetProp)\n        {\n            targetProp.SetValue(GetValue<T>());\n        }\n\n        #region Serialization\n\n        public virtual void Serialize(XmlWriter writer)\n        {\n            writer.WriteStartElement(this.GetType().Name);\n            writer.WriteAttributeString(\"name\", Name);\n\n            SerializeValue(writer, m_value);\n\n            writer.WriteEndElement(); //Typename\n        }\n\n        public virtual void Deserialize(XmlReader reader)\n        {\n            m_name = reader.GetAttribute(\"name\");\n            reader.ReadStartElement(); // Type\n\n            object v;\n            DeserializeValue(reader, out v);\n            m_value = (T)v;\n\n            reader.ReadEndElement(); // Type\n        }\n\n        public virtual void SerializeValue(XmlWriter writer, object value)\n        {\n        }\n\n        public virtual void DeserializeValue(XmlReader reader, out object value)\n        {\n            value = reader.Value;\n            reader.Read();\n        }\n\n        #endregion\n    }\n\n    #endregion\n\n    #region Derived const properties\n\n    public class MyConstPropertyFloat : MyConstProperty<float>\n    {\n        public MyConstPropertyFloat()\n        { }\n\n        public MyConstPropertyFloat(string name)\n            : base(name)\n        { }\n\n        public override void SerializeValue(XmlWriter writer, object value)\n        {\n            writer.WriteValue(((float)value).ToString(CultureInfo.InvariantCulture));\n        }\n\n        public override void DeserializeValue(XmlReader reader, out object value)\n        {\n            base.DeserializeValue(reader, out value);\n            value = Convert.ToSingle(value, CultureInfo.InvariantCulture);\n        }\n\n        public override IMyConstProperty Duplicate()\n        {\n            MyConstPropertyFloat prop = new MyConstPropertyFloat(Name);\n            Duplicate(prop);\n            return prop;\n        }\n\n        #region Implicit and explicit conversions\n\n        static public implicit operator float(MyConstPropertyFloat f)\n        {\n            return f.GetValue<float>();\n        }\n\n        #endregion\n    }\n\n    public class MyConstPropertyVector3 : MyConstProperty<Vector3>\n    {\n        public MyConstPropertyVector3()\n        { }\n\n        public MyConstPropertyVector3(string name)\n            : base(name)\n        { }\n\n        public override void SerializeValue(XmlWriter writer, object value)\n        {\n            MyUtils.SerializeValue(writer, (Vector3)value);\n        }\n\n        public override void DeserializeValue(XmlReader reader, out object value)\n        {\n            Vector3 v;\n            MyUtils.DeserializeValue(reader, out v);\n            value = v;\n        }\n\n        public override IMyConstProperty Duplicate()\n        {\n            MyConstPropertyVector3 prop = new MyConstPropertyVector3(Name);\n            Duplicate(prop);\n            return prop;\n        }\n\n        #region Implicit and explicit conversions\n\n        static public implicit operator Vector3(MyConstPropertyVector3 f)\n        {\n            return f.GetValue<Vector3>();\n        }\n\n        #endregion\n    }\n\n    public class MyConstPropertyVector4 : MyConstProperty<Vector4>\n    {\n        public MyConstPropertyVector4() { }\n\n        public MyConstPropertyVector4(string name)\n            : base(name)\n        {  }\n\n        public override void SerializeValue(XmlWriter writer, object value)\n        {\n            MyUtils.SerializeValue(writer, (Vector4)value);\n        }\n\n        public override void DeserializeValue(XmlReader reader, out object value)\n        {\n            Vector4 v;\n            MyUtils.DeserializeValue(reader, out v);\n            value = v;\n        }\n\n        public override IMyConstProperty Duplicate()\n        {\n            MyConstPropertyVector4 prop = new MyConstPropertyVector4(Name);\n            Duplicate(prop);\n            return prop;\n        }\n\n        #region Implicit and explicit conversions\n\n        static public implicit operator Vector4(MyConstPropertyVector4 f)\n        {\n            return f.GetValue<Vector4>();\n        }\n\n        #endregion\n    }\n\n    public class MyConstPropertyInt : MyConstProperty<int>\n    {\n        public MyConstPropertyInt() { }\n\n        public MyConstPropertyInt(string name)\n            : base(name)\n        { }\n\n        public override void SerializeValue(XmlWriter writer, object value)\n        {\n            writer.WriteValue(((int)value).ToString(CultureInfo.InvariantCulture));\n        }\n\n        public override void DeserializeValue(XmlReader reader, out object value)\n        {\n            base.DeserializeValue(reader, out value);\n            value = Convert.ToInt32(value);\n        }\n\n        public override IMyConstProperty Duplicate()\n        {\n            MyConstPropertyInt prop = new MyConstPropertyInt(Name);\n            Duplicate(prop);\n            return prop;\n        }\n\n        #region Implicit and explicit conversions\n\n        static public implicit operator int(MyConstPropertyInt f)\n        {\n            return f.GetValue<int>();\n        }\n\n        #endregion\n    }\n\n    public class MyConstPropertyEnum : MyConstPropertyInt\n    {\n        Type m_enumType;\n        List<string> m_enumStrings;\n\n        public MyConstPropertyEnum() { }\n\n        public MyConstPropertyEnum(string name)\n            : this(name, null, null)\n        {\n        }\n\n        public MyConstPropertyEnum(string name, Type enumType, List<string> enumStrings)\n            : base(name)\n        {\n            m_enumType = enumType;\n            m_enumStrings = enumStrings;\n        }\n\n        public override void SerializeValue(XmlWriter writer, object value)\n        {\n            writer.WriteValue(((int)value).ToString(CultureInfo.InvariantCulture));\n        }\n\n        public override void DeserializeValue(XmlReader reader, out object value)\n        {\n            base.DeserializeValue(reader, out value);\n            value = Convert.ToInt32(value);\n        }\n\n        public Type GetEnumType()\n        {\n            return m_enumType;\n        }\n\n        public List<string> GetEnumStrings()\n        {\n            return m_enumStrings;\n        }   \n  \n        public override IMyConstProperty Duplicate()\n        {\n            MyConstPropertyEnum prop = new MyConstPropertyEnum(Name);\n            Duplicate(prop);\n            prop.m_enumType = m_enumType;\n            prop.m_enumStrings = m_enumStrings;\n            return prop;\n        }\n    }\n\n    public class MyConstPropertyGenerationIndex : MyConstPropertyInt\n    {\n        public MyConstPropertyGenerationIndex() { }\n\n        public MyConstPropertyGenerationIndex(string name)\n            : base(name)\n        {\n        }\n\n        public override void SerializeValue(XmlWriter writer, object value)\n        {\n            writer.WriteValue(((int)value).ToString(CultureInfo.InvariantCulture));\n        }\n\n        public override void DeserializeValue(XmlReader reader, out object value)\n        {\n            base.DeserializeValue(reader, out value);\n            value = Convert.ToInt32(value);\n        }\n\n        public override IMyConstProperty Duplicate()\n        {\n            MyConstPropertyGenerationIndex prop = new MyConstPropertyGenerationIndex(Name);\n            Duplicate(prop);\n            return prop;\n        }\n    }\n\n    public class MyConstPropertyBool : MyConstProperty<bool>\n    {\n        public MyConstPropertyBool() { }\n\n        public MyConstPropertyBool(string name)\n            : base(name)\n        { }\n\n        public override void SerializeValue(XmlWriter writer, object value)\n        {\n            writer.WriteValue((bool)value);\n        }\n\n        public override void DeserializeValue(XmlReader reader, out object value)\n        {\n            base.DeserializeValue(reader, out value);\n            value = Convert.ToBoolean(value);\n        }\n\n        public override IMyConstProperty Duplicate()\n        {\n            MyConstPropertyBool prop = new MyConstPropertyBool(Name);\n            Duplicate(prop);\n            return prop;\n        }\n\n        #region Implicit and explicit conversions\n\n        static public implicit operator bool(MyConstPropertyBool f)\n        {\n            return f.GetValue<bool>();\n        }\n\n        #endregion\n    }\n\n    #endregion\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/TransparentGeometry/Particles/MyParticleEffect.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Xml;\nusing System.Globalization;\n\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWarsMath;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Render;\nusing MinerWars.AppCode.Game.Managers;\n\nnamespace MinerWars.AppCode.Game.TransparentGeometry.Particles\n{\n    public enum LastFrameVisibilityEnum\n    {\n        AlwaysVisible,\n        NotVisibleLastFrame,\n        VisibleLastFrame\n    }\n\n    public class MyParticleEffect\n    {\n        public static readonly uint FRAMES_TO_SKIP = 20;\n\n        public event EventHandler OnDelete = null;\n        public event EventHandler OnUpdate = null;\n\n        #region Members\n\n        //Version of the effect for serialization\n        static readonly int Version = 0;\n\n        int m_particleID; //ID of the particle stored in particles library\n        float m_elapsedTime = 0; //Time elapsed from start of the effect\n        string m_name; //Name of the effect\n        float m_length = 90; //Length of the effect in seconds\n        float m_preload; //Time in seconds to preload\n        bool m_isPreloading;\n        bool m_wasPreloaded;\n\n        float m_birthRate = 0;\n        bool m_hasShownSomething = false;\n        bool m_isStopped = false;\n\n        Matrix m_worldMatrix;\n        Matrix m_lastWorldMatrix;\n        int m_particlesCount;\n        float m_distance;\n\n        List<MyParticleGeneration> m_generations = new List<MyParticleGeneration>();\n        List<MyParticleGeneration> m_sortedGenerations = new List<MyParticleGeneration>();\n        List<MyParticleEffect> m_instances;\n        BoundingBox m_AABB = new BoundingBox();\n\n\n        public bool AutoDelete;\n        public bool Enabled;\n        public bool EnableLods;\n        public float UserEmitterScale;\n        public float UserBirthMultiplier;\n        public float UserRadiusMultiplier;\n        public float UserScale;\n        public Vector4 UserColorMultiplier;\n        public bool UserDraw;\n\n        public bool IsInFrustum { get; private set; }\n        public bool CalculateDeltaMatrix;\n        public bool Near;\n        public Matrix DeltaMatrix;\n        //public LastFrameVisibilityEnum WasVisibleLastFrame = LastFrameVisibilityEnum.AlwaysVisible;\n        public uint RenderCounter = 0;\n        public bool LowRes;\n        \n        #endregion\n\n        #region Start & Close\n\n        public MyParticleEffect()\n        {\n            Enabled = true;\n        }\n\n        public void Start(int particleID)\n        {\n            System.Diagnostics.Debug.Assert(m_particlesCount == 0);\n            System.Diagnostics.Debug.Assert(m_elapsedTime == 0);\n\n            m_particleID = particleID;\n            m_name = \"ParticleEffect\";\n\n            m_isPreloading = false;\n            m_wasPreloaded = false;\n            m_isStopped = false;\n            m_hasShownSomething = false;\n            m_distance = 0;\n\n            UserEmitterScale = 1.0f;\n            UserBirthMultiplier = 1.0f;\n            UserRadiusMultiplier = 1.0f;\n            UserScale = 1.0f;\n            UserColorMultiplier = Vector4.One;\n            UserDraw = false;\n            LowRes = false;\n\n            Enabled = true;\n            AutoDelete = true;\n            EnableLods = true;\n            Near = false;\n\n            //For assigment check\n            WorldMatrix = MyUtils.ZeroMatrix;\n            DeltaMatrix = Matrix.Identity;\n            CalculateDeltaMatrix = false;\n            RenderCounter = 0;\n        }\n\n        public void Restart()\n        {\n            m_elapsedTime = 0;\n        }\n\n        public void Close(bool done)\n        {\n            if (!done && OnDelete != null)\n                OnDelete(this, null);\n\n            Clear();\n\n            m_name = \"ParticleEffect\";\n\n            foreach (MyParticleGeneration generation in m_generations)\n            {\n                if (done)\n                    generation.Done();\n                else\n                    generation.Close();\n                MyParticlesManager.GenerationsPool.Deallocate(generation);\n            }\n\n            m_generations.Clear();\n\n            if (m_instances != null)\n            {\n                while (m_instances.Count > 0)\n                {\n                    MyParticlesManager.RemoveParticleEffect(m_instances[0]);\n                }\n            }\n\n            OnDelete = null;\n            OnUpdate = null;\n\n            Tag = null;\n        }\n\n        public void Clear()\n        {\n            m_elapsedTime = 0;\n            m_birthRate = 0;\n            m_particlesCount = 0;\n            m_wasPreloaded = false;\n            m_hasShownSomething = false;\n\n            foreach (MyParticleGeneration generation in m_generations)\n            {\n                generation.Clear();\n            }\n\n            if (m_instances != null)\n            {\n                foreach (MyParticleEffect effect in m_instances)\n                {\n                    effect.Clear();\n                }\n            }\n        }\n\n        public MyParticleEffect CreateInstance()\n        {\n            MyParticleEffect effect = MyParticlesManager.EffectsPool.Allocate();\n            effect.Start(m_particleID);\n\n            effect.Name = Name;\n            effect.Enabled = Enabled;\n            effect.SetLength(GetLength());\n            effect.SetPreload(GetPreload());\n            effect.LowRes = LowRes;\n\n            foreach (MyParticleGeneration generation in m_generations)\n            {\n                MyParticleGeneration gen = generation.CreateInstance(effect);\n                if (gen != null)\n                {\n                    effect.AddGeneration(gen);\n                }\n            }\n\n            if (m_instances == null)\n                m_instances = new List<MyParticleEffect>();\n\n            m_instances.Add(effect);\n\n            return effect;\n        }\n\n        /// <summary>\n        /// This methods stops generating any new particles\n        /// </summary>\n        public void Stop(bool autodelete = true)\n        {\n            m_isStopped = true;\n            AutoDelete = autodelete ? true : AutoDelete;\n        }\n\n        public void RemoveInstance(MyParticleEffect effect)\n        {\n            if (m_instances != null)\n            {\n                if (m_instances.Contains(effect))\n                    m_instances.Remove(effect);\n            }\n        }\n\n        public List<MyParticleEffect> GetInstances()\n        {\n            return m_instances;\n        }\n\n        public MyParticleEffect Duplicate()\n        {\n            MyParticleEffect effect = MyParticlesManager.EffectsPool.Allocate();\n            effect.Start(0);\n\n            effect.Name = Name;\n            effect.m_preload = m_preload;\n            effect.m_length = m_length;\n\n            foreach (MyParticleGeneration generation in m_generations)\n            {\n                MyParticleGeneration duplicatedGeneration = generation.Duplicate(effect);\n                effect.AddGeneration(duplicatedGeneration);\n            }\n\n            return effect;\n        }\n\n        #endregion\n\n        #region Update\n\n        public bool Update()\n        {\n            if (!Enabled)\n                return AutoDelete; //efect is not enabled at all and must be deleted\n\n            System.Diagnostics.Debug.Assert(WorldMatrix != MyUtils.ZeroMatrix, \"Effect world matrix was not set!\");\n\n            if (!m_isPreloading && !m_wasPreloaded && m_preload > 0)\n            {\n                m_isPreloading = true;\n\n                // TODO: Optimize (preload causes lags, depending on preload size, it's from 0 ms to 85 ms)\n                //while (m_elapsedTime < m_preload)\n                //{\n                //    Update();\n                //}\n\n                m_isPreloading = false;\n                m_wasPreloaded = true;\n            }\n\n            MyRender.GetRenderProfiler().StartProfilingBlock(\"ParticleEffect-Update\");\n\n            if (!m_isPreloading && IsInFrustum)\n                MyPerformanceCounter.PerCameraDraw.ParticleEffectsDrawn++; \n\n            MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            MyRender.GetRenderProfiler().StartProfilingBlock(\"ParticleEffect-UpdateGen\");\n\n            m_elapsedTime += MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS;\n            m_distance = MyCamera.GetDistanceWithFOV(WorldMatrix.Translation) / (UserScale * 1000.0f);\n            m_particlesCount = 0;\n            m_birthRate = 0;\n            m_AABB = m_AABB.CreateInvalid();\n\n\n            if (CalculateDeltaMatrix)\n            {\n                DeltaMatrix = Matrix.Invert(m_lastWorldMatrix) * m_worldMatrix;\n            }\n\n            if (RenderCounter == 0 || ((MyRender.RenderCounter - RenderCounter) < FRAMES_TO_SKIP)) //more than FRAMES_TO_SKIP frames consider effect as invisible\n            {\n                foreach (MyParticleGeneration generation in m_generations)\n                {\n                    generation.EffectMatrix = WorldMatrix;\n                    generation.Update();\n                    m_particlesCount += generation.GetParticlesCount();\n                    m_birthRate += generation.GetBirthRate();\n\n                    BoundingBox bbox = generation.GetAABB();\n                    m_AABB = m_AABB.Include(ref bbox);\n                }\n                m_lastWorldMatrix = m_worldMatrix;\n\n\n                if (m_particlesCount > 0)\n                    m_hasShownSomething = true;\n\n                IsInFrustum = MyCamera.IsInFrustum(ref m_AABB);\n            }\n\n            MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            if (((m_particlesCount == 0 && HasShownSomething())\n                || (m_particlesCount == 0 && m_birthRate == 0.0f))\n                && AutoDelete && !m_isPreloading)\n            {   //Effect was played and has to be deleted\n                return true;\n            }\n\n            if (!m_isPreloading && OnUpdate != null)\n                OnUpdate(this, null);\n\n            return false;\n        }\n\n        #endregion\n\n        #region Properties\n\n        public float GetElapsedTime()\n        {\n            return m_elapsedTime;\n        }\n\n        public int GetID()\n        {\n            return m_particleID;\n        }\n\n        public int GetParticlesCount()\n        {\n            return m_particlesCount;\n        }\n\n        public void SetID(int id)\n        {\n            m_particleID = id;\n        }\n\n        public string GetName()\n        {\n            return m_name;\n        }\n\n        public void SetName(string name)\n        {\n            m_name = name;\n        }\n\n        public float GetLength()\n        {\n            return m_length;\n        }\n\n        public void SetLength(float length)\n        {\n            m_length = length;\n        }\n\n        public bool HasShownSomething()\n        {\n            return m_hasShownSomething;\n        } \n\n        public Matrix WorldMatrix\n        {\n            get { return m_worldMatrix; }\n            set { m_worldMatrix = value; }\n        }\n\n        public string Name\n        {\n            get { return m_name; }\n            set { m_name = value; }\n        }\n\n        public float GetPreload()\n        {\n            return m_preload;\n        }\n\n        public void SetPreload(float preload)\n        {\n            m_preload = preload;\n\n            if (m_instances != null)\n            {\n                foreach (MyParticleEffect effect in m_instances)\n                {\n                    effect.SetPreload(preload);\n                }\n            }\n        }\n\n        public float Distance\n        {\n            get { return m_distance; }\n        }\n\n        public object Tag { get; set; }\n\n        #endregion\n\n        #region Generations\n\n        public void AddGeneration(MyParticleGeneration generation)\n        {\n            m_generations.Add(generation);\n\n            if (m_instances != null)\n            {\n                foreach (MyParticleEffect effect in m_instances)\n                {\n                    effect.AddGeneration(generation.CreateInstance(effect));\n                }\n            }\n        }\n\n        public void RemoveGeneration(int index)\n        {\n            MyParticleGeneration generation = m_generations[index];\n            m_generations.Remove(generation);\n\n            generation.Close();\n            MyParticlesManager.GenerationsPool.Deallocate(generation);\n\n            if (m_instances != null)\n            {\n                foreach (MyParticleEffect effect in m_instances)\n                {\n                    effect.RemoveGeneration(index);\n                }\n            }\n        }\n\n        public void RemoveGeneration(MyParticleGeneration generation)\n        {\n            int index = m_generations.IndexOf(generation);\n            RemoveGeneration(index);\n        }\n\n        public List<MyParticleGeneration> GetGenerations()\n        {\n            return m_generations;\n        }\n\n        public bool IsStopped\n        {\n            get { return m_isStopped; }\n        }\n\n        public BoundingBox GetAABB()\n        {\n            return m_AABB;\n        }\n    \n\n        #endregion\n        \n        #region Serialization\n\n        public void Serialize(XmlWriter writer)\n        {\n            writer.WriteStartElement(\"ParticleEffect\");\n            writer.WriteAttributeString(\"name\", Name);\n            writer.WriteAttributeString(\"version\", Version.ToString(CultureInfo.InvariantCulture));\n\n            writer.WriteElementString(\"ID\", m_particleID.ToString(CultureInfo.InvariantCulture));\n\n            writer.WriteElementString(\"Length\", m_length.ToString(CultureInfo.InvariantCulture));\n\n            writer.WriteElementString(\"Preload\", m_preload.ToString(CultureInfo.InvariantCulture));\n\n            writer.WriteElementString(\"LowRes\", LowRes.ToString(CultureInfo.InvariantCulture).ToLower());\n            \n            writer.WriteStartElement(\"Generations\");\n\n            foreach (MyParticleGeneration generation in m_generations)\n            {\n                generation.Serialize(writer);\n            }\n\n            writer.WriteEndElement(); //Generations\n\n            writer.WriteEndElement(); //ParticleEffect\n        }\n\n        public void Deserialize(XmlReader reader)\n        {\n            m_name = reader.GetAttribute(\"name\");\n            int version = Convert.ToInt32(reader.GetAttribute(\"version\"));\n\n            reader.ReadStartElement(); //ParticleEffect\n            \n            m_particleID = reader.ReadElementContentAsInt();\n\n            m_length = reader.ReadElementContentAsFloat();\n\n            m_preload = reader.ReadElementContentAsFloat();\n\n            if (reader.Name == \"LowRes\")\n                LowRes = reader.ReadElementContentAsBoolean();\n\n            bool isEmpty = reader.IsEmptyElement;\n            reader.ReadStartElement(); //Generations\n\n            while (reader.NodeType != XmlNodeType.EndElement)\n            {\n                MyParticleGeneration generation = MyParticlesManager.GenerationsPool.Allocate();\n                generation.Start(this);\n                generation.Init();\n\n                generation.Deserialize(reader);\n\n                AddGeneration(generation);\n            }\n\n            if (!isEmpty)\n                reader.ReadEndElement(); //Generations\n\n            reader.ReadEndElement(); //ParticleEffect\n        }\n\n        #endregion\n\n        #region Draw\n\n        public void PrepareForDraw()\n        {\n            //if (WasVisibleLastFrame != LastFrameVisibilityEnum.NotVisibleLastFrame)\n            if (RenderCounter == 0 || ((MyRender.RenderCounter - RenderCounter) < FRAMES_TO_SKIP)) //more than FRAMES_TO_SKIP frames consider effect as invisible\n            {\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Sort generations\");\n                m_sortedGenerations.Clear();\n\n                foreach (MyParticleGeneration generation in m_generations)\n                {\n                    m_sortedGenerations.Add(generation);\n                }\n\n                m_sortedGenerations.Sort();\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n                MyBillboard effectBillboard = null;\n\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"PrepareForDraw generations\");\n                foreach (MyParticleGeneration generation in m_sortedGenerations)\n                {\n                    generation.PrepareForDraw(ref effectBillboard);\n                }\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n            }\n        }\n\n        public void Draw()\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Draw generations\");\n            foreach (MyParticleGeneration generation in m_sortedGenerations)\n            {\n                generation.Draw();\n            }\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        #endregion\n\n        #region DebugDraw\n\n        public void DebugDraw()\n        {\n            MyDebugDraw.DrawAxis(WorldMatrix, 1.0f, 1.0f);\n            MyDebugDraw.DrawSphereWireframe(WorldMatrix.Translation, 0.1f, Vector3.One, 1.0f);\n\n            foreach (MyParticleGeneration generation in m_generations)\n            {\n                generation.DebugDraw();\n            }\n\n            Color color = !m_isStopped ? Color.White : Color.Red;\n            MyDebugDraw.DrawText(WorldMatrix.Translation, new System.Text.StringBuilder(GetID().ToString() + \" [\" + GetParticlesCount().ToString() + \"]\") , color, 1.0f);\n\n            // Vector4 colorV = color.ToVector4();\n            // MyDebugDraw.DrawAABB(ref m_AABB, ref colorV, 1.0f);\n        }\n\n        #endregion\n    }\n\n\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/TransparentGeometry/Particles/MyParticleEmitter.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Xml;\nusing System.Linq;\nusing System.Globalization;\n\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.Utils;\n\nnamespace MinerWars.AppCode.Game.TransparentGeometry.Particles\n{\n    public enum MyParticleEmitterType\n    {\n        Point,\n        Line,\n        Box,\n        Sphere,\n        Hemisphere,\n        Circle,\n    }\n\n    public class MyParticleEmitter\n    {\n        static string[] MyParticleEmitterTypeStrings =\n        {\n            \"Point\",\n            \"Line\",\n            \"Box\",\n            \"Sphere\",\n            \"Hemisphere\",\n            \"Circle\",\n        };\n\n        static List<string> s_emitterTypeStrings = MyParticleEmitterTypeStrings.ToList<string>();\n\n        //Version of the emitter for serialization\n        static readonly int Version = 0;\n\n        private enum MyEmitterPropertiesEnum\n        {\n            Type,\n            Offset,\n            Size,\n            RadiusMin,\n            RadiusMax,\n            DirToCamera\n        }\n\n        IMyConstProperty[] m_properties = new IMyConstProperty[Enum.GetValues(typeof(MyEmitterPropertiesEnum)).Length];\n\n        /// <summary>\n        /// Public members to easy access\n        /// </summary>\n        public MyParticleEmitterType Type\n        {\n            get { return (MyParticleEmitterType)(int)(m_properties[(int)MyEmitterPropertiesEnum.Type] as MyConstPropertyEnum); }\n            private set { m_properties[(int)MyEmitterPropertiesEnum.Type].SetValue((int)value); }\n        }\n\n        public MyAnimatedPropertyVector3 Offset\n        {\n            get { return m_properties[(int)MyEmitterPropertiesEnum.Offset] as MyAnimatedPropertyVector3; }\n            private set { m_properties[(int)MyEmitterPropertiesEnum.Offset] = value; }\n        }\n\n        public MyAnimatedPropertyFloat Size\n        {\n            get { return m_properties[(int)MyEmitterPropertiesEnum.Size] as MyAnimatedPropertyFloat; }\n            private set { m_properties[(int)MyEmitterPropertiesEnum.Size] = value; }\n        }\n\n        public MyConstPropertyFloat RadiusMin\n        {\n            get { return m_properties[(int)MyEmitterPropertiesEnum.RadiusMin] as MyConstPropertyFloat; }\n            private set { m_properties[(int)MyEmitterPropertiesEnum.RadiusMin] = value; }\n        }\n\n        public MyConstPropertyFloat RadiusMax\n        {\n            get { return m_properties[(int)MyEmitterPropertiesEnum.RadiusMax] as MyConstPropertyFloat; }\n            private set { m_properties[(int)MyEmitterPropertiesEnum.RadiusMax] = value; }\n        }\n\n        public MyConstPropertyBool DirToCamera\n        {\n            get { return m_properties[(int)MyEmitterPropertiesEnum.DirToCamera] as MyConstPropertyBool; }\n            private set { m_properties[(int)MyEmitterPropertiesEnum.DirToCamera] = value; }\n        }\n\n\n        public MyParticleEmitter(MyParticleEmitterType type)\n        {\n        }\n\n        public void Init()\n        {\n            AddProperty(MyEmitterPropertiesEnum.Type, new MyConstPropertyEnum(\"Type\", typeof(MyParticleEmitterType), s_emitterTypeStrings));\n            AddProperty(MyEmitterPropertiesEnum.Offset, new MyAnimatedPropertyVector3(\"Offset\"));\n            AddProperty(MyEmitterPropertiesEnum.Size, new MyAnimatedPropertyFloat(\"Size\"));\n            AddProperty(MyEmitterPropertiesEnum.RadiusMin, new MyConstPropertyFloat(\"RadiusMin\"));\n            AddProperty(MyEmitterPropertiesEnum.RadiusMax, new MyConstPropertyFloat(\"RadiusMax\"));\n            AddProperty(MyEmitterPropertiesEnum.DirToCamera, new MyConstPropertyBool(\"DirToCamera\"));\n\n            Offset.AddKey(0, new Vector3(0, 0, 0));\n            Size.AddKey(0, 1.0f);\n            RadiusMin.SetValue(1.0f);\n            RadiusMax.SetValue(1.0f);\n            DirToCamera.SetValue(false);\n        }\n\n        public void Done()\n        {\n            for (int i = 0; i < GetProperties().Length; i++)\n            {\n                if (m_properties[i] is IMyAnimatedProperty)\n                    (m_properties[i] as IMyAnimatedProperty).ClearKeys();\n            }\n\n            Close();\n        }\n\n        public void Start()\n        {\n            System.Diagnostics.Debug.Assert(Offset == null);\n        }\n\n        public void Close()\n        {\n            for (int i = 0; i < m_properties.Length; i++)\n            {\n                m_properties[i] = null;\n            }\n        }\n\n        T AddProperty<T>(MyEmitterPropertiesEnum e, T property) where T : IMyConstProperty\n        {\n            m_properties[(int)e] = property;\n            return property;\n        }\n\n        public void CalculateStartPosition(float elapsedTime, Matrix worldMatrix, float userScale, out Vector3 startOffset, out Vector3 startPosition)\n        {\n            Vector3 currentOffsetUntransformed;\n            Offset.GetInterpolatedValue<Vector3>(elapsedTime, out currentOffsetUntransformed);\n\n            float currentSize;\n            Size.GetInterpolatedValue<float>(elapsedTime, out currentSize);\n            currentSize *= MyMwcUtils.GetRandomFloat(RadiusMin, RadiusMax) * userScale;\n\n            Vector3 localPos = Vector3.Zero;\n            Vector3 worldOffset;\n            Vector3.Transform(ref currentOffsetUntransformed, ref worldMatrix, out worldOffset);\n\n            switch (Type)\n            {\n                case MyParticleEmitterType.Point:\n                    localPos = Vector3.Zero;\n                    break;\n\n                case MyParticleEmitterType.Line:\n                    localPos = Vector3.Forward * MyMwcUtils.GetRandomFloat(0.0f, currentSize);\n                    break;\n\n                case MyParticleEmitterType.Sphere:\n                    localPos = MyMwcUtils.GetRandomVector3Normalized() * currentSize;\n                    break;\n\n                case MyParticleEmitterType.Box:\n                    float currentSizeHalf = currentSize * 0.5f;\n                    localPos =  \n                        new Vector3(\n                            MinerWars.CommonLIB.AppCode.Utils.MyMwcUtils.GetRandomFloat(-currentSizeHalf, currentSizeHalf),\n                            MinerWars.CommonLIB.AppCode.Utils.MyMwcUtils.GetRandomFloat(-currentSizeHalf, currentSizeHalf),\n                            MinerWars.CommonLIB.AppCode.Utils.MyMwcUtils.GetRandomFloat(-currentSizeHalf, currentSizeHalf)\n                            );\n                    break;\n\n                case MyParticleEmitterType.Hemisphere:\n                    localPos = MyMwcUtils.GetRandomVector3HemisphereNormalized(Vector3.Forward) * currentSize;\n                    break;\n\n                case MyParticleEmitterType.Circle:\n                    localPos = MyMwcUtils.GetRandomVector3CircleNormalized() * currentSize;\n                    break;\n\n                default:\n                    System.Diagnostics.Debug.Assert(false);\n                    break;\n            }\n\n            Vector3 worldPos;\n\n            if (DirToCamera)\n            {\n                Matrix WorldView = worldMatrix * MyCamera.ViewMatrix;\n                WorldView.Translation += currentOffsetUntransformed;\n                Matrix newWorld = WorldView * Matrix.Invert(MyCamera.ViewMatrix);\n\n                Vector3 dir = MyCamera.Position - newWorld.Translation;\n                dir.Normalize();\n\n                Matrix matrix = MyMath.MatrixFromDir(dir);\n                matrix.Translation = newWorld.Translation;\n\n                Vector3.Transform(ref localPos, ref matrix, out worldPos);\n\n                startOffset = newWorld.Translation;\n                startPosition = worldPos;\n            }\n            else\n            {\n                Vector3.TransformNormal(ref localPos, ref worldMatrix, out worldPos);\n\n                startOffset = worldOffset;\n                startPosition = worldOffset + worldPos;\n            }\n        }\n\n        public void CreateInstance(MyParticleEmitter emitter)\n        {\n            for (int i = 0; i < m_properties.Length; i++)\n            {\n                m_properties[i] = emitter.m_properties[i];\n            }\n        }\n\n        public IMyConstProperty[] GetProperties()\n        {\n            return m_properties;\n        }\n\n        public void Duplicate(MyParticleEmitter targetEmitter)\n        {\n            for (int i = 0; i < m_properties.Length; i++)\n            {\n                targetEmitter.m_properties[i] = m_properties[i].Duplicate();\n            }\n        }\n\n        #region Serialization\n\n        public void Serialize(XmlWriter writer)\n        {\n            writer.WriteStartElement(\"ParticleEmitter\");\n            writer.WriteAttributeString(\"version\", Version.ToString(CultureInfo.InvariantCulture));\n\n            foreach (IMyConstProperty property in m_properties)\n            {\n                property.Serialize(writer);\n            }\n\n            writer.WriteEndElement(); //ParticleEmitter\n        }\n\n        public void Deserialize(XmlReader reader)\n        {\n            int version = Convert.ToInt32(reader.GetAttribute(\"version\"));\n            reader.ReadStartElement(); //ParticleEmitter\n\n            foreach (IMyConstProperty property in m_properties)\n            {\n                property.Deserialize(reader);\n            }\n\n            reader.ReadEndElement(); //ParticleEmitter\n        }\n\n        #endregion\n\n        #region DebugDraw\n\n        public void DebugDraw(float elapsedTime, Matrix worldMatrix)\n        {\n            Vector3 currentOffsetUntransformed, currentOffset;\n            Offset.GetInterpolatedValue<Vector3>(elapsedTime, out currentOffsetUntransformed);\n            Vector3.Transform(ref currentOffsetUntransformed, ref worldMatrix, out currentOffset);\n            float currentSize;\n            Size.GetInterpolatedValue<float>(elapsedTime, out currentSize);\n\n            switch (Type)\n            {\n                case MyParticleEmitterType.Point:\n                    {\n                        MyDebugDraw.DrawSphereWireframe(currentOffset, 0.1f, new Vector3(1, 1, 0), 1.0f);\n                    }\n                    break;\n\n                case MyParticleEmitterType.Line:\n                    {\n                        if (DirToCamera)\n                        {\n                            Vector3 dir = MyCamera.Position - currentOffset;\n                            dir.Normalize();\n                            Matrix matrix = Matrix.CreateScale(currentSize) * MyMath.MatrixFromDir(dir);\n                            Vector3 currentOffsetScaled = Vector3.TransformNormal(Vector3.Forward, matrix);\n                            MyDebugDraw.DrawLine3D(worldMatrix.Translation, worldMatrix.Translation + currentOffsetScaled, Color.Yellow, Color.Yellow);\n                        }\n                        else\n                        {\n                            Vector3 currentOffsetScaled = Vector3.Transform(Vector3.Up * currentSize, worldMatrix);\n                            MyDebugDraw.DrawLine3D(worldMatrix.Translation, currentOffsetScaled, Color.Yellow, Color.Yellow);\n                        }\n                    }\n                    break;\n\n                case MyParticleEmitterType.Sphere:\n                    {\n                        MyDebugDraw.DrawSphereWireframe(currentOffset, currentSize, new Vector3(1, 1, 0), 1.0f);\n                    }\n                    break;\n\n                case MyParticleEmitterType.Box:\n                    {\n                        Matrix matrix = Matrix.CreateScale(currentSize) * Matrix.CreateTranslation(currentOffsetUntransformed) * worldMatrix;\n                        MyDebugDraw.DrawLowresBoxWireframe(matrix, new Vector3(1, 1, 0), 1.0f);\n                    }\n                    break;\n\n                case MyParticleEmitterType.Hemisphere:\n                    {\n                        Vector3 worldPos = currentOffset;\n\n                        Matrix matrix;\n\n                        if (DirToCamera)\n                        {\n                            Matrix WorldView = worldMatrix * MyCamera.ViewMatrix;\n                            WorldView.Translation += currentOffsetUntransformed;\n                            Matrix newWorld = WorldView * Matrix.Invert(MyCamera.ViewMatrix);\n\n                            Vector3 dir = MyCamera.Position - newWorld.Translation;\n                            dir.Normalize();\n\n                            matrix = Matrix.CreateScale(currentSize) * Matrix.CreateRotationX(MathHelper.PiOver2) * MyMath.MatrixFromDir(dir);\n                            matrix.Translation = newWorld.Translation;\n                        }\n                        else\n                        {\n                            matrix = Matrix.CreateScale(currentSize) * Matrix.CreateTranslation(currentOffsetUntransformed) * worldMatrix;\n                        }\n\n                        MyDebugDraw.DrawHemisphereWireframe(matrix, new Vector3(1, 1, 0), 1.0f);\n                    }\n                    break;\n\n                case MyParticleEmitterType.Circle:\n                    {\n                        //No debug draw\n                    }\n                    break;\n\n                default:\n                    System.Diagnostics.Debug.Assert(false);\n                    break;\n            }\n\n        }\n\n        #endregion\n\n    }\n\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/TransparentGeometry/Particles/MyParticleFactory.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace MinerWars.AppCode.Game.TransparentGeometry.Particles\n{\n    static class MyParticleFactory\n    {\n        private static Dictionary<string, Type> m_registeredTypes = new Dictionary<string, Type>();\n\n        static void RegisterTypes()\n        {\n            RegisterType(typeof(MyParticleEffect));\n            RegisterType(typeof(MyParticleGeneration));\n            RegisterType(typeof(MyParticleEmitter));\n\n            RegisterType(typeof(MyAnimatedPropertyFloat));\n            RegisterType(typeof(MyAnimatedPropertyVector3));\n            RegisterType(typeof(MyAnimatedPropertyVector4));\n\n            RegisterType(typeof(MyAnimatedProperty2DFloat));\n            RegisterType(typeof(MyAnimatedProperty2DVector3));\n            RegisterType(typeof(MyAnimatedProperty2DVector4));\n        }\n\n        public static void RegisterType(Type type)\n        {\n            m_registeredTypes.Add(type.Name, type);\n        }\n\n        public static object CreateObject(string typeName)\n        {\n            Type type = m_registeredTypes[typeName];\n\n            return Activator.CreateInstance(type);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/TransparentGeometry/Particles/MyParticleGeneration.cs",
    "content": "﻿#region Using\n\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Xml;\nusing System.Globalization;\n\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.Utils;\n\nusing MinerWarsMath;\nusing KeenSoftwareHouse.Library.Parallelization.Threading;\n\n#endregion\n\nnamespace MinerWars.AppCode.Game.TransparentGeometry.Particles\n{\n    public enum MyVelocityDirEnum\n    {\n        Default,\n        FromEmitterCenter\n    }\n\n\n\n    public class MyParticleGeneration : IComparable\n    {\n        #region Static\n\n        static string[] MyVelocityDirStrings =\n        {\n            \"Default\",\n            \"FromEmitterCenter\"\n        };\n\n        static string[] MyParticleTypeStrings =\n        {\n            \"Point\",\n            \"Line\",\n            \"Trail\"\n        };\n\n        static List<string> s_velocityDirStrings = MyVelocityDirStrings.ToList<string>();\n        static List<string> s_particleTypeStrings = MyParticleTypeStrings.ToList<string>();\n        static List<string> s_materialStrings = MyTransparentMaterialConstants.MyTransparentMaterialStrings.ToList<string>();\n\n        #endregion\n\n        #region Members\n\n        static readonly int Version = 0;\n        string m_name;\n\n        MyParticleEffect m_effect;\n        MyParticleEmitter m_emitter;\n        float m_particlesToCreate = 0;\n        float m_birthRate = 0;\n        List<MyAnimatedParticle> m_particles = new List<MyAnimatedParticle>(64);\n        private Vector3? m_lastEffectPosition;\n\n        FastResourceLock ParticlesLock = new FastResourceLock(); \n\n        BoundingBox m_AABB = new BoundingBox();\n\n        private enum MyGenerationPropertiesEnum\n        {\n            Birth,\n            BirthVar,\n\n            Life,\n            LifeVar,\n\n            Velocity,\n            VelocityDir,\n\n            Angle,\n            AngleVar,\n\n            RotationSpeed,\n            RotationSpeedVar,\n\n            Radius,\n            RadiusVar,\n\n            Color,\n            ColorVar,\n\n            Material,\n\n            ParticleType,\n            Thickness,\n            Enabled,\n            BlendTextures,\n\n            EnableCustomRadius,\n            EnableCustomVelocity,\n            EnableCustomBirth,\n\n            OnDie,\n            OnLife,\n\n            LODBirth,\n            LODRadius,\n\n            MotionInheritance,\n\n            UseLayerSorting,\n            SortLayer,\n\n            AlphaAnisotropic,\n        }\n\n        IMyConstProperty[] m_properties = new IMyConstProperty[Enum.GetValues(typeof(MyGenerationPropertiesEnum)).Length];\n        \n\n        /// <summary>\n        /// Public members to easy access\n        /// </summary>\n        public MyAnimatedPropertyFloat Birth \n        {\n            get { return (MyAnimatedPropertyFloat)m_properties[(int)MyGenerationPropertiesEnum.Birth]; }\n            private set { m_properties[(int)MyGenerationPropertiesEnum.Birth] = value; }\n        }\n\n        public MyConstPropertyFloat BirthVar\n        {\n            get { return (MyConstPropertyFloat)m_properties[(int)MyGenerationPropertiesEnum.BirthVar]; }\n            private set { m_properties[(int)MyGenerationPropertiesEnum.BirthVar] = value; }\n        }\n\n        public MyAnimatedPropertyFloat Life\n        {\n            get { return (MyAnimatedPropertyFloat)m_properties[(int)MyGenerationPropertiesEnum.Life]; }\n            private set { m_properties[(int)MyGenerationPropertiesEnum.Life] = value; }\n        }\n\n        public MyConstPropertyFloat LifeVar\n        {\n            get { return (MyConstPropertyFloat)m_properties[(int)MyGenerationPropertiesEnum.LifeVar]; }\n            private set { m_properties[(int)MyGenerationPropertiesEnum.LifeVar] = value; }\n        }\n\n        public MyAnimatedPropertyVector3 Velocity\n        {\n            get { return (MyAnimatedPropertyVector3)m_properties[(int)MyGenerationPropertiesEnum.Velocity]; }\n            private set { m_properties[(int)MyGenerationPropertiesEnum.Velocity] = value; }\n        }\n\n        public MyVelocityDirEnum VelocityDir\n        {\n            get { return (MyVelocityDirEnum)(int)((MyConstPropertyInt)m_properties[(int)MyGenerationPropertiesEnum.VelocityDir]); }\n            private set { m_properties[(int)MyGenerationPropertiesEnum.VelocityDir].SetValue((int)value); }\n        }\n\n        public MyAnimatedPropertyFloat Angle\n        {\n            get { return (MyAnimatedPropertyFloat)m_properties[(int)MyGenerationPropertiesEnum.Angle]; }\n            private set { m_properties[(int)MyGenerationPropertiesEnum.Angle] = value; }\n        }\n\n        public MyConstPropertyFloat AngleVar\n        {\n            get { return (MyConstPropertyFloat)m_properties[(int)MyGenerationPropertiesEnum.AngleVar]; }\n            private set { m_properties[(int)MyGenerationPropertiesEnum.AngleVar] = value; }\n        }\n\n        public MyAnimatedPropertyFloat RotationSpeed\n        {\n            get { return (MyAnimatedPropertyFloat)m_properties[(int)MyGenerationPropertiesEnum.RotationSpeed]; }\n            private set { m_properties[(int)MyGenerationPropertiesEnum.RotationSpeed] = value; }\n        }\n\n        public MyConstPropertyFloat RotationSpeedVar\n        {\n            get { return (MyConstPropertyFloat)m_properties[(int)MyGenerationPropertiesEnum.RotationSpeedVar]; }\n            private set { m_properties[(int)MyGenerationPropertiesEnum.RotationSpeedVar] = value; }\n        }\n\n        public MyAnimatedProperty2DFloat Radius\n        {\n            get { return (MyAnimatedProperty2DFloat)m_properties[(int)MyGenerationPropertiesEnum.Radius]; }\n            private set { m_properties[(int)MyGenerationPropertiesEnum.Radius] = value; }\n        }\n\n        public MyAnimatedPropertyFloat RadiusVar\n        {\n            get { return (MyAnimatedPropertyFloat)m_properties[(int)MyGenerationPropertiesEnum.RadiusVar]; }\n            private set { m_properties[(int)MyGenerationPropertiesEnum.RadiusVar] = value; }\n        }\n\n        public MyAnimatedProperty2DVector4 Color\n        {\n            get { return (MyAnimatedProperty2DVector4)m_properties[(int)MyGenerationPropertiesEnum.Color]; }\n            private set { m_properties[(int)MyGenerationPropertiesEnum.Color] = value; }\n        }\n\n        public MyAnimatedPropertyFloat ColorVar\n        {\n            get { return (MyAnimatedPropertyFloat)m_properties[(int)MyGenerationPropertiesEnum.ColorVar]; }\n            private set { m_properties[(int)MyGenerationPropertiesEnum.ColorVar] = value; }\n        }\n\n        public MyAnimatedProperty2DEnum Material\n        {\n            get { return (MyAnimatedProperty2DEnum)m_properties[(int)MyGenerationPropertiesEnum.Material]; }\n            private set { m_properties[(int)MyGenerationPropertiesEnum.Material] = value; }\n        }\n\n        public MyConstPropertyEnum ParticleType\n        {\n            get { return (MyConstPropertyEnum)m_properties[(int)MyGenerationPropertiesEnum.ParticleType]; }\n            private set { m_properties[(int)MyGenerationPropertiesEnum.ParticleType] = value; }\n        }\n\n        public MyAnimatedPropertyFloat Thickness\n        {\n            get { return (MyAnimatedPropertyFloat)m_properties[(int)MyGenerationPropertiesEnum.Thickness]; }\n            private set { m_properties[(int)MyGenerationPropertiesEnum.Thickness] = value; }\n        }\n\n        public MyConstPropertyBool Enabled\n        {\n            get { return (MyConstPropertyBool)m_properties[(int)MyGenerationPropertiesEnum.Enabled]; }\n            private set { m_properties[(int)MyGenerationPropertiesEnum.Enabled] = value; }\n        }\n\n        public MyConstPropertyBool BlendTextures\n        {\n            get { return (MyConstPropertyBool)m_properties[(int)MyGenerationPropertiesEnum.BlendTextures]; }\n            private set { m_properties[(int)MyGenerationPropertiesEnum.BlendTextures] = value; }\n        }\n\n        public MyConstPropertyBool EnableCustomRadius\n        {\n            get { return (MyConstPropertyBool)m_properties[(int)MyGenerationPropertiesEnum.EnableCustomRadius]; }\n            private set { m_properties[(int)MyGenerationPropertiesEnum.EnableCustomRadius] = value; }\n        }\n\n        public MyConstPropertyBool EnableCustomBirth\n        {\n            get { return (MyConstPropertyBool)m_properties[(int)MyGenerationPropertiesEnum.EnableCustomBirth]; }\n            private set { m_properties[(int)MyGenerationPropertiesEnum.EnableCustomBirth] = value; }\n        }\n\n        public MyConstPropertyGenerationIndex OnDie\n        {\n            get { return (MyConstPropertyGenerationIndex)m_properties[(int)MyGenerationPropertiesEnum.OnDie]; }\n            private set { m_properties[(int)MyGenerationPropertiesEnum.OnDie] = value; }\n        }\n\n        public MyConstPropertyGenerationIndex OnLife\n        {\n            get { return (MyConstPropertyGenerationIndex)m_properties[(int)MyGenerationPropertiesEnum.OnLife]; }\n            private set { m_properties[(int)MyGenerationPropertiesEnum.OnLife] = value; }\n        }\n\n        public MyAnimatedPropertyFloat LODBirth\n        {\n            get { return (MyAnimatedPropertyFloat)m_properties[(int)MyGenerationPropertiesEnum.LODBirth]; }\n            private set { m_properties[(int)MyGenerationPropertiesEnum.LODBirth] = value; }\n        }\n\n        public MyAnimatedPropertyFloat LODRadius\n        {\n            get { return (MyAnimatedPropertyFloat)m_properties[(int)MyGenerationPropertiesEnum.LODRadius]; }\n            private set { m_properties[(int)MyGenerationPropertiesEnum.LODRadius] = value; }\n        }\n\n        public MyAnimatedPropertyFloat MotionInheritance\n        {\n            get { return (MyAnimatedPropertyFloat)m_properties[(int)MyGenerationPropertiesEnum.MotionInheritance]; }\n            private set { m_properties[(int)MyGenerationPropertiesEnum.MotionInheritance] = value; }\n        }\n\n        public MyConstPropertyBool UseLayerSorting\n        {\n            get { return (MyConstPropertyBool)m_properties[(int)MyGenerationPropertiesEnum.UseLayerSorting]; }\n            private set { m_properties[(int)MyGenerationPropertiesEnum.UseLayerSorting] = value; }\n        }\n\n        public MyConstPropertyInt SortLayer\n        {\n            get { return (MyConstPropertyInt)m_properties[(int)MyGenerationPropertiesEnum.SortLayer]; }\n            private set { m_properties[(int)MyGenerationPropertiesEnum.SortLayer] = value; }\n        }\n\n        public MyConstPropertyBool AlphaAnisotropic\n        {\n            get { return (MyConstPropertyBool)m_properties[(int)MyGenerationPropertiesEnum.AlphaAnisotropic]; }\n            private set { m_properties[(int)MyGenerationPropertiesEnum.AlphaAnisotropic] = value; }\n        }\n\n        //////////////////////////////\n\n        #endregion\n\n        #region Constructor & Init\n\n        public MyParticleGeneration()\n        {\n            m_emitter = new MyParticleEmitter(MyParticleEmitterType.Point);\n        }\n\n        public void Init()\n        {\n            System.Diagnostics.Debug.Assert(Birth == null);\n\n            AddProperty(MyGenerationPropertiesEnum.Birth, new MyAnimatedPropertyFloat(\"Birth\"));\n            AddProperty(MyGenerationPropertiesEnum.BirthVar, new MyConstPropertyFloat(\"Birth var\"));\n\n            AddProperty(MyGenerationPropertiesEnum.Life, new MyAnimatedPropertyFloat(\"Life\"));\n            AddProperty(MyGenerationPropertiesEnum.LifeVar, new MyConstPropertyFloat(\"Life var\"));\n\n            AddProperty(MyGenerationPropertiesEnum.Velocity, new MyAnimatedPropertyVector3(\"Velocity\"));\n            AddProperty(MyGenerationPropertiesEnum.VelocityDir, new MyConstPropertyEnum(\"Velocity dir\", typeof(MyVelocityDirEnum) ,s_velocityDirStrings));\n\n            AddProperty(MyGenerationPropertiesEnum.Angle, new MyAnimatedPropertyFloat(\"Angle\"));\n            AddProperty(MyGenerationPropertiesEnum.AngleVar, new MyConstPropertyFloat(\"Angle var\")); \n\n            AddProperty(MyGenerationPropertiesEnum.RotationSpeed, new MyAnimatedPropertyFloat(\"Rotation speed\"));\n            AddProperty(MyGenerationPropertiesEnum.RotationSpeedVar, new MyConstPropertyFloat(\"Rotation speed var\"));\n\n            AddProperty(MyGenerationPropertiesEnum.Radius, new MyAnimatedProperty2DFloat(\"Radius\"));\n            AddProperty(MyGenerationPropertiesEnum.RadiusVar, new MyAnimatedPropertyFloat(\"Radius var\"));\n\n            AddProperty(MyGenerationPropertiesEnum.Color, new MyAnimatedProperty2DVector4(\"Color\"));\n            AddProperty(MyGenerationPropertiesEnum.ColorVar, new MyAnimatedPropertyFloat(\"Color var\"));\n\n            AddProperty(MyGenerationPropertiesEnum.Material, new MyAnimatedProperty2DEnum(\"Material\", MyIntInterpolator.Switch, typeof(MyTransparentMaterialEnum), s_materialStrings));\n\n            AddProperty(MyGenerationPropertiesEnum.ParticleType, new MyConstPropertyEnum(\"Particle type\", typeof(MyParticleTypeEnum), s_particleTypeStrings));\n\n            AddProperty(MyGenerationPropertiesEnum.Thickness, new MyAnimatedPropertyFloat(\"Thickness\"));\n\n            AddProperty(MyGenerationPropertiesEnum.Enabled, new MyConstPropertyBool(\"Enabled\"));\n            Enabled.SetValue(true);\n\n            AddProperty(MyGenerationPropertiesEnum.BlendTextures, new MyConstPropertyBool(\"Blend textures\"));\n            BlendTextures.SetValue(true);\n\n            AddProperty(MyGenerationPropertiesEnum.EnableCustomRadius, new MyConstPropertyBool(\"Enable custom radius\"));\n            AddProperty(MyGenerationPropertiesEnum.EnableCustomVelocity, new MyConstPropertyBool(\"Enable custom velocity\"));\n            AddProperty(MyGenerationPropertiesEnum.EnableCustomBirth, new MyConstPropertyBool(\"Enable custom birth\"));\n\n            AddProperty(MyGenerationPropertiesEnum.OnDie, new MyConstPropertyGenerationIndex(\"OnDie\"));\n            OnDie.SetValue(-1);\n            AddProperty(MyGenerationPropertiesEnum.OnLife, new MyConstPropertyGenerationIndex(\"OnLife\"));\n            OnLife.SetValue(-1);\n\n            AddProperty(MyGenerationPropertiesEnum.LODBirth, new MyAnimatedPropertyFloat(\"LODBirth\"));\n            AddProperty(MyGenerationPropertiesEnum.LODRadius, new MyAnimatedPropertyFloat(\"LODRadius\"));\n\n            AddProperty(MyGenerationPropertiesEnum.MotionInheritance, new MyAnimatedPropertyFloat(\"Motion inheritance\"));\n\n            AddProperty(MyGenerationPropertiesEnum.UseLayerSorting, new MyConstPropertyBool(\"Use layer sorting\"));\n            AddProperty(MyGenerationPropertiesEnum.SortLayer, new MyConstPropertyInt(\"Sort layer\"));\n            AddProperty(MyGenerationPropertiesEnum.AlphaAnisotropic, new MyConstPropertyBool(\"Alpha anisotropic\"));\n\n            Thickness.AddKey(0, 1.0f);\n\n            LODBirth.AddKey(0, 1.0f);\n            LODRadius.AddKey(0, 1.0f);\n\n            UseLayerSorting.SetValue(false);\n            SortLayer.SetValue(-1);\n\n            m_emitter.Init();\n        }\n\n        public void Done()\n        {\n            for (int i = 0; i < m_properties.Length; i++)\n            {\n                if (m_properties[i] is IMyAnimatedProperty)\n                    (m_properties[i] as IMyAnimatedProperty).ClearKeys();\n            }\n\n            m_emitter.Done();\n           \n            Close();\n        }\n\n        public void Start(MyParticleEffect effect)\n        {\n            System.Diagnostics.Debug.Assert(m_effect == null);\n            System.Diagnostics.Debug.Assert(m_particles.Count == 0);\n            System.Diagnostics.Debug.Assert(Birth == null);\n\n            m_effect = effect;\n            m_name = \"ParticleGeneration\";\n\n            m_emitter.Start();\n\n            m_lastEffectPosition = null;\n            IsInherited = false;\n            m_birthRate = 0.0f;\n            m_particlesToCreate = 0.0f;\n            m_AABB = m_AABB.CreateInvalid();\n      }\n\n        public void Close()\n        {\n            Clear();\n\n            for (int i = 0; i < m_properties.Length; i++)\n            {\n                m_properties[i] = null;\n            }\n\n            m_emitter.Close();\n\n            m_effect = null;\n        }\n\n        /// <summary>\n        /// Only for some testing values\n        /// </summary>\n        public void InitDefault()\n        {\n            Birth.AddKey(0, 1.0f);\n            Life.AddKey(0, 10.0f);\n            Thickness.AddKey(0, 1.0f);\n            Velocity.AddKey(0, new Vector3(0, 1, 0));\n\n\n            MyAnimatedPropertyVector4 colorKey = new MyAnimatedPropertyVector4(Color.Name);\n            colorKey.AddKey(0, new Vector4(1, 0, 0, 1));\n            colorKey.AddKey(1, new Vector4(0, 0, 1, 1));\n            Color.AddKey(0, colorKey);\n\n            MyAnimatedPropertyFloat radiusKey = new MyAnimatedPropertyFloat(Radius.Name);\n            radiusKey.AddKey(0, 1.0f);\n            Radius.AddKey(0, radiusKey);\n\n            MyAnimatedPropertyInt materialKey = new MyAnimatedPropertyInt(Material.Name);\n            materialKey.AddKey(0, (int)MyTransparentMaterialEnum.Smoke);\n            Material.AddKey(0, materialKey);\n\n            LODBirth.AddKey(0, 1.0f);\n            LODRadius.AddKey(0, 1.0f);\n\n            UseLayerSorting.SetValue(false);\n            SortLayer.SetValue(-1);\n        }\n\n        #endregion\n\n        #region Member properties\n\n        T AddProperty<T>(MyGenerationPropertiesEnum e, T property) where T : IMyConstProperty\n        {\n            System.Diagnostics.Debug.Assert(m_properties[(int)e] == null, \"Property already assigned!\");\n\n            m_properties[(int)e] = property;\n            return property;\n        }\n\n        public IEnumerable<IMyConstProperty> GetProperties()\n        {\n            return m_properties;\n        }\n\n        #endregion\n\n        #region Update\n\n\n        private void UpdateParticlesLife()\n        {\n            int counter = 0;\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"ParticleGeneration-UpdateParticlesLife\");\n\n            MyParticleGeneration inheritedGeneration = null;\n            Vector3 previousParticlePosition = m_effect.WorldMatrix.Translation;\n            float particlesToCreate = 0;\n            m_AABB = m_AABB.CreateInvalid();\n            m_AABB = m_AABB.Include(ref previousParticlePosition);\n\n            if (OnDie.GetValue<int>() != -1)\n            {\n                inheritedGeneration = GetInheritedGeneration(OnDie.GetValue<int>());\n\n                if (inheritedGeneration == null)\n                {\n                    OnDie.SetValue(-1);\n                }\n                else\n                {\n                    inheritedGeneration.IsInherited = true;\n                    particlesToCreate = inheritedGeneration.m_particlesToCreate;\n                }\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"ParticleGeneration-Update01\");\n\n            Vector3 previousTrail0 = previousParticlePosition;\n            Vector3 previousTrail1 = previousParticlePosition;\n\n            using (ParticlesLock.AcquireExclusiveUsing())\n            {\n                while (counter < m_particles.Count)\n                {\n                    float motionInheritance;\n                    MotionInheritance.GetInterpolatedValue(m_effect.GetElapsedTime(), out motionInheritance);\n\n                    MyAnimatedParticle particle = m_particles[counter];\n\n                    if (motionInheritance > 0)\n                    {\n                        m_effect.CalculateDeltaMatrix = true;\n\n                    }\n\n                    if (particle.Update())\n                    {\n                        if (motionInheritance > 0)\n                        {\n                            particle.AddMotionInheritance(ref motionInheritance, ref m_effect.DeltaMatrix);\n                        }\n\n                        if (counter == 0)\n                        {\n                            previousParticlePosition = particle.ActualPosition;\n                            previousTrail0 = particle.Quad.Point1;\n                            previousTrail1 = particle.Quad.Point2;\n                            particle.Quad.Point0 = particle.ActualPosition;\n                            particle.Quad.Point2 = particle.ActualPosition;\n                        }\n\n                        counter++;\n\n\n                        if (particle.Type == MyParticleTypeEnum.Trail)\n                        {\n                            if (particle.ActualPosition == previousParticlePosition)\n                            {\n                                particle.Quad.Point0 = particle.ActualPosition;\n                                particle.Quad.Point1 = particle.ActualPosition;\n                                particle.Quad.Point2 = particle.ActualPosition;\n                                particle.Quad.Point3 = particle.ActualPosition;\n                            }\n                            else\n                            {\n                                MyPolyLine polyLine = new MyPolyLine();\n                                polyLine.Thickness = particle.Thickness;\n                                polyLine.Point0 = particle.ActualPosition;\n                                polyLine.Point1 = previousParticlePosition;\n\n                                Vector3 direction = polyLine.Point1 - polyLine.Point0;\n                                Vector3 normalizedDirection = MyMwcUtils.Normalize(polyLine.Point1 - polyLine.Point0);\n\n\n                                polyLine.Point1 = polyLine.Point0 + (polyLine.Point1 - polyLine.Point0);\n\n                                polyLine.LineDirectionNormalized = normalizedDirection;\n                                MyUtils.GetPolyLineQuad(out particle.Quad, ref polyLine);\n\n                                particle.Quad.Point0 = previousTrail0 + direction * 0.15f;\n                                particle.Quad.Point3 = previousTrail1 + direction * 0.15f;\n                                previousTrail0 = particle.Quad.Point1;\n                                previousTrail1 = particle.Quad.Point2;\n                            }\n                        }\n\n                        previousParticlePosition = particle.ActualPosition;\n\n                        m_AABB = m_AABB.Include(ref previousParticlePosition);\n                        particle.Flags = GetEffect().IsInFrustum ? particle.Flags | MyAnimatedParticle.ParticleFlags.IsInFrustum : particle.Flags & ~MyAnimatedParticle.ParticleFlags.IsInFrustum;\n                        continue;\n                    }\n\n                    if (inheritedGeneration != null)\n                    {\n                        inheritedGeneration.m_particlesToCreate = particlesToCreate;\n                        inheritedGeneration.EffectMatrix = Matrix.CreateWorld(particle.ActualPosition, Vector3.Normalize(particle.Velocity), Vector3.Cross(Vector3.Left, particle.Velocity));\n                        inheritedGeneration.UpdateParticlesCreation();\n                    }\n\n                    m_particles.Remove(particle);\n                    MyTransparentGeometry.DeallocateAnimatedParticle(particle);\n                }\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        private void UpdateParticlesCreation()\n        {\n            if (!Enabled.GetValue<bool>())\n                return;\n\n            //particles to create in this update\n            if (!m_effect.IsStopped)\n            {\n                float lodBirth = 1.0f;\n                if (GetEffect().EnableLods)\n                {\n                    LODBirth.GetInterpolatedValue<float>(GetEffect().Distance, out lodBirth);\n                }\n\n                Birth.GetInterpolatedValue<float>(m_effect.GetElapsedTime(), out m_birthRate);\n                m_birthRate *=\n                    MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS  \n                    * (EnableCustomBirth ? m_effect.UserBirthMultiplier : 1.0f)\n                    * MyParticlesManager.BirthMultiplierOverall\n                    * lodBirth;\n\n                m_particlesToCreate += m_birthRate;\n            }\n\n            //If speed of effect is too high, there would be created bunches\n            //of particles each frame. By interpolating position, we create\n            //seamless particle creation.\n            Vector3 positionDelta = Vector3.Zero;\n\n            if (!m_lastEffectPosition.HasValue)\n                m_lastEffectPosition = EffectMatrix.Translation;\n\n            //Position delta interpolates particle position at fast flying objects, dont do that while motion inheritance\n            if (m_particlesToCreate > 1.0f && !m_effect.CalculateDeltaMatrix)\n            {\n                positionDelta = (EffectMatrix.Translation - m_lastEffectPosition.Value) / (int)m_particlesToCreate;\n            }\n\n            //MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"CreateParticle\");\n\n\n            using (ParticlesLock.AcquireExclusiveUsing())\n            {\n                int maxParticles = 40;\n                while (m_particlesToCreate >= 1.0f && maxParticles-- > 0)\n                {\n                    if (m_effect.CalculateDeltaMatrix)\n                        CreateParticle(EffectMatrix.Translation);\n                    else\n                        CreateParticle(m_lastEffectPosition.Value + positionDelta * (int)m_particlesToCreate);\n\n                    m_particlesToCreate -= 1.0f;\n                }\n            }\n\n         //   MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"OnLife\");\n\n            if (OnLife.GetValue<int>() != -1)\n            {\n                MyParticleGeneration inheritedGeneration = GetInheritedGeneration(OnLife.GetValue<int>());\n\n                if (inheritedGeneration == null)\n                {\n                    OnLife.SetValue(-1);\n                }\n                else\n                {\n                    inheritedGeneration.IsInherited = true;\n\n                    float particlesToCreate = inheritedGeneration.m_particlesToCreate;\n\n                    using (ParticlesLock.AcquireSharedUsing())\n                    {\n                        foreach (MyAnimatedParticle particle in m_particles)\n                        {\n                            inheritedGeneration.m_particlesToCreate = particlesToCreate;\n                            inheritedGeneration.EffectMatrix = Matrix.CreateWorld(particle.ActualPosition, particle.Velocity, Vector3.Cross(Vector3.Left, particle.Velocity));\n                            inheritedGeneration.UpdateParticlesCreation();\n                        }\n                    }\n                }\n            }\n\n          //  MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            m_lastEffectPosition = EffectMatrix.Translation;\n        }\n\n\n        public void Update()\n        {\n            m_birthRate = 0.0f;\n\n            UpdateParticlesLife();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"ParticleGeneration-UpdateCreation\");\n            if (!IsInherited)               \n                UpdateParticlesCreation();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        private MyParticleGeneration GetInheritedGeneration(int generationIndex)\n        {\n             if (generationIndex >= m_effect.GetGenerations().Count || generationIndex == m_effect.GetGenerations().IndexOf(this))\n                 return null;\n\n             return m_effect.GetGenerations()[generationIndex];\n        }\n\n        #endregion\n\n        #region Clear & Create\n\n        public void Clear()\n        {\n            using (ParticlesLock.AcquireExclusiveUsing())\n            {\n                int counter = 0;\n                while (counter < m_particles.Count)\n                {\n                    MyAnimatedParticle particle = m_particles[counter];\n                    m_particles.Remove(particle);\n                    MyTransparentGeometry.DeallocateAnimatedParticle(particle);\n                }\n            }\n\n            m_particlesToCreate = 0;\n            m_lastEffectPosition = m_effect.WorldMatrix.Translation;\n        }\n\n        private void CreateParticle(Vector3 interpolatedEffectPosition)\n        {\n            MyAnimatedParticle particle = MyTransparentGeometry.AddAnimatedParticle();\n\n            if (particle == null)\n                return;\n\n            particle.Type = (MyParticleTypeEnum)ParticleType.GetValue<int>();\n\n            MyUtils.AssertIsValid(m_effect.WorldMatrix);\n\n            Vector3 startOffset;\n            m_emitter.CalculateStartPosition(m_effect.GetElapsedTime(), Matrix.CreateWorld(interpolatedEffectPosition, m_effect.WorldMatrix.Forward, m_effect.WorldMatrix.Up), m_effect.UserEmitterScale * m_effect.UserScale, out startOffset, out particle.StartPosition);\n            //particle.StartPosition = m_emitter.CalculateStartPosition(m_effect.GetElapsedTime(), m_effect.WorldMatrix, m_effect.UserEmitterScale, out startOffset);\n\n            Vector3 particlePosition = particle.StartPosition;\n            m_AABB = m_AABB.Include(ref particlePosition);\n\n            Life.GetInterpolatedValue<float>(m_effect.GetElapsedTime(), out particle.Life);\n            float lifeVar = LifeVar;\n            if (lifeVar > 0)\n            {\n                particle.Life = MathHelper.Max(MyMwcUtils.GetRandomFloat(particle.Life - lifeVar, particle.Life + lifeVar), 0.1f);\n            }\n\n            Velocity.GetInterpolatedValue<Vector3>(m_effect.GetElapsedTime(), out particle.Velocity);\n            particle.Velocity.X *= m_effect.UserScale;\n            particle.Velocity.Y *= m_effect.UserScale;\n            particle.Velocity.Z *= m_effect.UserScale;\n\n            if (VelocityDir == MyVelocityDirEnum.FromEmitterCenter)\n            {\n                if (!MinerWars.CommonLIB.AppCode.Utils.MyMwcUtils.IsZero(startOffset - particle.StartPosition))\n                {\n                    float length = particle.Velocity.Length();\n                    particle.Velocity = MinerWars.CommonLIB.AppCode.Utils.MyMwcUtils.Normalize(particle.StartPosition - startOffset) * length;\n                }\n            }\n            particle.Velocity = Vector3.TransformNormal(particle.Velocity, GetEffect().WorldMatrix);\n\n            Angle.GetInterpolatedValue<float>(m_effect.GetElapsedTime(), out particle.Angle);\n            float angleVar = AngleVar;\n            if (angleVar > 0)\n            {\n                particle.Angle = MyMwcUtils.GetRandomFloat(particle.Angle - AngleVar, particle.Angle + AngleVar);\n            }\n\n            RotationSpeed.GetInterpolatedValue<float>(m_effect.GetElapsedTime(), out particle.RotationSpeed);\n            float rotationSpeedVar = RotationSpeedVar;\n            if (rotationSpeedVar > 0)\n            {\n                particle.RotationSpeed = MyMwcUtils.GetRandomFloat(particle.RotationSpeed - RotationSpeedVar, particle.RotationSpeed + RotationSpeedVar);\n            }\n\n            float radiusVar;\n            RadiusVar.GetInterpolatedValue<float>(m_effect.GetElapsedTime(), out radiusVar);\n            float lodRadius = 1.0f;\n            if (GetEffect().EnableLods)\n            {\n                LODRadius.GetInterpolatedValue<float>(GetEffect().Distance, out lodRadius);\n            }\n            \n            Radius.GetInterpolatedKeys(m_effect.GetElapsedTime(), \n                radiusVar, \n                (EnableCustomRadius.GetValue<bool>() ? m_effect.UserRadiusMultiplier : 1.0f)\n                * lodRadius\n                * GetEffect().UserScale, \n                particle.Radius);\n                    \n            if (particle.Type != MyParticleTypeEnum.Point)\n                Thickness.GetInterpolatedValue<float>(m_effect.GetElapsedTime(), out particle.Thickness);\n\n            float colorVar;\n            ColorVar.GetInterpolatedValue<float>(m_effect.GetElapsedTime(), out colorVar);\n            Color.GetInterpolatedKeys(m_effect.GetElapsedTime(), colorVar, 1.0f, particle.Color);\n\n            Material.GetInterpolatedKeys(m_effect.GetElapsedTime(), 0, 1.0f, particle.Material);\n\n            particle.Flags = 0;\n            particle.Flags |= BlendTextures.GetValue<bool>() ? MyAnimatedParticle.ParticleFlags.BlendTextures : 0;\n            particle.Flags |= GetEffect().IsInFrustum ? MyAnimatedParticle.ParticleFlags.IsInFrustum : 0;\n\n            particle.Start(this);\n                 \n            m_particles.Add(particle);\n        }\n\n        public MyParticleGeneration CreateInstance(MyParticleEffect effect)\n        {\n            MyParticleGeneration generation = MyParticlesManager.GenerationsPool.Allocate(true);\n            if (generation == null)\n                return null;\n\n            generation.Start(effect);\n\n            generation.Name = Name;\n\n            for (int i = 0; i < m_properties.Length; i++)\n            {\n                generation.m_properties[i] = m_properties[i];\n            }\n\n            generation.m_emitter.CreateInstance(m_emitter);\n\n            return generation;\n        }\n\n        public MyParticleGeneration Duplicate(MyParticleEffect effect)\n        {\n            MyParticleGeneration generation = MyParticlesManager.GenerationsPool.Allocate();\n            generation.Start(effect);\n\n            generation.Name = Name;\n\n            for (int i = 0; i < m_properties.Length; i++)\n            {\n                generation.m_properties[i] = m_properties[i].Duplicate();\n            }\n\n            m_emitter.Duplicate(generation.m_emitter);\n\n            return generation;\n        }\n\n        #endregion\n\n        #region Properties\n\n        public MyParticleEmitter GetEmitter()\n        {\n            return m_emitter;\n        }\n\n        public MyParticleEffect GetEffect()\n        {\n            return m_effect;\n        }\n\n        public string Name\n        {\n            get { return m_name; }\n            set { m_name = value; }\n        }\n\n        public int GetParticlesCount()\n        {\n            return m_particles.Count;\n        }\n\n        public float GetBirthRate()\n        {\n            return m_birthRate;\n        }\n\n        public Matrix EffectMatrix { get; set; }\n\n        public bool IsInherited { get; set; }\n\n        public BoundingBox GetAABB()\n        {\n            return m_AABB;\n        }\n\n        #endregion\n\n        #region Serialization\n\n        public void Serialize(XmlWriter writer)\n        {\n            writer.WriteStartElement(\"ParticleGeneration\");\n            writer.WriteAttributeString(\"name\", Name);\n            writer.WriteAttributeString(\"version\", Version.ToString(CultureInfo.InvariantCulture));\n\n            foreach (IMyConstProperty property in m_properties)\n            {\n                property.Serialize(writer);\n            }\n\n            writer.WriteStartElement(\"Emitter\");\n            m_emitter.Serialize(writer);\n            writer.WriteEndElement();\n\n            writer.WriteEndElement(); //ParticleGeneration\n        }\n\n        public void Deserialize(XmlReader reader)\n        {\n            m_name = reader.GetAttribute(\"name\");\n            int version = Convert.ToInt32(reader.GetAttribute(\"version\"));\n\n            reader.ReadStartElement(); //ParticleGeneration\n\n            foreach (IMyConstProperty property in m_properties)\n            {\n                if (reader.Name == \"Emitter\")\n                    break; //we added new property which is not in xml yet\n\n                property.Deserialize(reader);\n            }\n\n            reader.ReadStartElement();\n            m_emitter.Deserialize(reader);\n            reader.ReadEndElement();\n\n            reader.ReadEndElement(); //ParticleGeneration\n\n            //Disable texture blending if it is set but unneccessary\n            if (BlendTextures)\n            {\n                bool someMaterialKeysDifferent = false;\n                for (int j = 0; j < Material.GetKeysCount(); j++)\n                {\n                    MyAnimatedPropertyInt key;\n                    float time;\n                    Material.GetKey(j, out time, out key);\n\n                    int previousMaterial = -1;\n                    for (int i = 0; i < key.GetKeysCount(); i++)\n                    {\n                        float timeMat;\n                        int material;\n                        key.GetKey(i, out timeMat, out material);\n\n                        if (previousMaterial != -1 && (previousMaterial != material))\n                        {\n                            MyTransparentMaterialProperties prevMaterialProperties = MyTransparentMaterialConstants.GetMaterialProperties((MyTransparentMaterialEnum)previousMaterial);\n                            MyTransparentMaterialProperties materialProperties = MyTransparentMaterialConstants.GetMaterialProperties((MyTransparentMaterialEnum)material);\n                            if (prevMaterialProperties.Texture != materialProperties.Texture)\n                            {\n                                someMaterialKeysDifferent = true;\n                                break;\n                            }\n                        }\n                        previousMaterial = material;\n                    }\n\n                    if (someMaterialKeysDifferent)\n                        break;\n                }\n\n                if (!someMaterialKeysDifferent)\n                {\n                    BlendTextures.SetValue(false);\n                }\n            }\n\n        }\n\n        #endregion\n\n        #region Draw\n\n        List<MyBillboard> m_billboards = new List<MyBillboard>();\n\n        public void PrepareForDraw(ref MyBillboard effectBillboard)\n        {\n            m_billboards.Clear();\n\n            if (m_particles.Count == 0)\n                return;\n\n            if (UseLayerSorting && effectBillboard == null)\n            {\n                effectBillboard = MyTransparentGeometry.AddBillboardEffect(m_effect);\n                if (effectBillboard != null)\n                {\n                    m_billboards.Add(effectBillboard);\n                }\n            }\n\n            using (ParticlesLock.AcquireSharedUsing())\n            {\n                foreach (MyAnimatedParticle particle in m_particles)\n                {\n                    MyTransparentGeometry.StartParticleProfilingBlock(\"m_preallocatedBillboards.Allocate()\");\n\n                    MyBillboard billboard = MyTransparentGeometry.AddBillboardParticle(particle, effectBillboard, !UseLayerSorting);\n                    if (billboard != null)\n                    {\n                        if (!UseLayerSorting)\n                            m_billboards.Add(billboard);\n                    }\n                    MyTransparentGeometry.EndParticleProfilingBlock();\n                    if (billboard == null)\n                        break;\n                }\n            }\n        }\n\n        public void Draw()\n        {\n            foreach (MyBillboard billboard in m_billboards)\n            {\n                MyTransparentGeometry.AddBillboardToSortingList(billboard);\n            }\n\n            m_billboards.Clear();\n        }\n\n        //  For sorting generations if needed\n        public int CompareTo(object compareToObject)\n        {\n            MyParticleGeneration compareToGeneration = (MyParticleGeneration)compareToObject;\n\n            if (UseLayerSorting && compareToGeneration.UseLayerSorting)\n                return SortLayer.GetValue<int>().CompareTo(compareToGeneration.SortLayer.GetValue<int>());\n\n            return 0;\n        }\n\n        #endregion\n\n        #region DebugDraw\n        \n        public void DebugDraw()\n        {\n            m_emitter.DebugDraw(m_effect.GetElapsedTime(), m_effect.WorldMatrix);\n        }\n\n        #endregion\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/TransparentGeometry/Particles/MyParticlesLibrary.cs",
    "content": "﻿#region Using\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Xml;\nusing System.IO;\nusing System.Globalization;\n\nusing MinerWarsMath;\n\nusing MinerWars.AppCode.Game.Render;\nusing MinerWars.AppCode.Game.Utils;\nusing SysUtils.Utils;\n\n#endregion\n\nnamespace MinerWars.AppCode.Game.TransparentGeometry.Particles\n{\n    class MyParticlesLibrary\n    {\n        static Dictionary<int, MyParticleEffect> m_libraryEffects = new Dictionary<int, MyParticleEffect>();\n        static readonly int Version = 0;\n\n        static MyParticlesLibrary()\n        {\n            MyMwcLog.WriteLine(string.Format(\"MyParticlesLibrary.ctor - START\"));\n            InitDefault();\n            MyMwcLog.WriteLine(string.Format(\"MyParticlesLibrary.ctor - END\"));\n        }\n\n        public static void Init()\n        {\n            MyRender.RegisterRenderModule(MyRenderModuleEnum.AnimatedParticles, \"Animated particles\", DebugDraw, MyRenderStage.DebugDraw, 200, false);\n        }\n\n        public static void InitDefault()\n        {\n            Deserialize(\"Content\\\\Particles\\\\MyParticlesLibrary.mwl\");\n\n            /*\n            MyParticleEffect effect = MyParticlesManager.EffectsPool.Allocate();\n            effect.Start(666);\n\n            m_libraryEffects.Add(effect.GetID(), effect);\n            \n            MyParticleGeneration generation = MyParticlesManager.GenerationsPool.Allocate();\n            generation.Start(effect);\n            generation.Init();\n            generation.InitDefault();\n            effect.AddGeneration(generation);*/\n        }\n\n        public static void AddParticleEffect(MyParticleEffect effect)\n        {\n            m_libraryEffects.Add(effect.GetID(), effect);\n        }\n\n        public static void UpdateParticleEffectID(int ID)\n        {\n            MyParticleEffect effect;\n            m_libraryEffects.TryGetValue(ID, out effect);\n            if (effect != null)\n            {\n                m_libraryEffects.Remove(ID);\n                m_libraryEffects.Add(effect.GetID(), effect);\n            }\n        }\n\n        public static void RemoveParticleEffect(int ID)\n        {\n            MyParticleEffect effect;\n            m_libraryEffects.TryGetValue(ID, out effect);\n            if (effect != null)\n            {\n                effect.Close(true);\n                MyParticlesManager.EffectsPool.Deallocate(effect);\n            }\n\n            m_libraryEffects.Remove(ID);\n        }\n\n        public static void RemoveParticleEffect(MyParticleEffect effect)\n        {\n            RemoveParticleEffect(effect.GetID());\n        }\n\n        public static IEnumerable<MyParticleEffect> GetParticleEffects()\n        {\n            return m_libraryEffects.Values;\n        }\n\n        #region Serialization\n\n        static public void Serialize(string file)\n        {\n            FileStream fs = File.Create(file);\n            XmlWriterSettings settings = new XmlWriterSettings\n            {\n                Indent = true,\n            };\n            XmlWriter writer = XmlWriter.Create(fs, settings);\n\n            Serialize(writer);\n\n            writer.Flush();\n\n            fs.Dispose();\n        }\n\n        static public void Deserialize(string file)\n        {\n            FileStream fs = File.Open(file, FileMode.Open, FileAccess.Read);\n            XmlReaderSettings settings = new XmlReaderSettings()\n            {\n                IgnoreWhitespace = true,\n            };\n            XmlReader reader = XmlReader.Create(fs, settings);\n\n            Deserialize(reader);\n\n            fs.Dispose();\n        }\n\n\n        static public void Serialize(XmlWriter writer)\n        {\n            writer.WriteStartElement(\"MinerWarsParticlesLibrary\");\n\n            writer.WriteElementString(\"Version\", Version.ToString(CultureInfo.InvariantCulture));\n\n            writer.WriteStartElement(\"ParticleEffects\");\n\n            foreach (KeyValuePair<int, MyParticleEffect> pair in m_libraryEffects)\n            {\n                pair.Value.Serialize(writer);\n            }\n\n            writer.WriteEndElement(); //ParticleEffects\n\n            writer.WriteEndElement(); //root\n        }\n\n        static void Close()\n        {\n            foreach (MyParticleEffect effect in m_libraryEffects.Values)\n            {\n                effect.Close(true);\n                MyParticlesManager.EffectsPool.Deallocate(effect);\n            }\n            \n            m_libraryEffects.Clear();\n        }\n\n        public static int RedundancyDetected = 0;\n\n        static public void Deserialize(XmlReader reader)\n        {\n            Close();\n            RedundancyDetected = 0;\n\n            reader.ReadStartElement(); //MinerWarsParticlesLibrary\n\n            int version = reader.ReadElementContentAsInt();\n\n            reader.ReadStartElement(); //ParticleEffects\n\n            while (reader.NodeType != XmlNodeType.EndElement)\n            {\n                MyParticleEffect effect = MyParticlesManager.EffectsPool.Allocate();\n                effect.Deserialize(reader);\n                m_libraryEffects.Add(effect.GetID(), effect);\n            }\n\n            reader.ReadEndElement(); //ParticleEffects\n\n            reader.ReadEndElement(); //root\n        }\n\n        #endregion\n\n        static public MyParticleEffect CreateParticleEffect(int id)\n        {\n            return m_libraryEffects[id].CreateInstance();\n        }\n\n        static public void RemoveParticleEffectInstance(MyParticleEffect effect)\n        {\n            effect.Close(false);\n            //if (effect.Enabled)\n            {\n                if (m_libraryEffects[effect.GetID()].GetInstances().Contains(effect))\n                {\n                    MyParticlesManager.EffectsPool.Deallocate(effect);\n                    m_libraryEffects[effect.GetID()].RemoveInstance(effect);\n                }\n                else\n                {\n                    System.Diagnostics.Debug.Assert(false, \"Effect deleted twice!\");\n                }\n            }\n        }\n\n        static public void DebugDraw()\n        {\n           // if (MinerWars.AppCode.ExternalEditor.MyEditorBase.IsEditorActive)\n            {\n                foreach (MyParticleEffect effect in m_libraryEffects.Values)\n                {\n                    List<MyParticleEffect> instances = effect.GetInstances();\n                    if (instances != null)\n                    {\n                        foreach (MyParticleEffect instance in instances)\n                        {\n                            instance.DebugDraw();\n                        }\n                    }\n                }\n            }\n        }\n\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/TransparentGeometry/Particles/MyParticlesManager.cs",
    "content": "﻿#region Using\n\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nusing MinerWarsMath;\n\nusing MinerWars.AppCode.Game.Managers;\nusing MinerWars.AppCode.Game.Render;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.Generics;\nusing KeenSoftwareHouse.Library.Trace;\nusing ParallelTasks;\n\n#endregion\n\nnamespace MinerWars.AppCode.Game.TransparentGeometry.Particles\n{                       \n    internal static class MyParticlesManager \n    {\n        public static bool Enabled;\n        public static event EventHandler OnDraw = null;\n\n        public static float BirthMultiplierOverall = 1.0f;\n\n        static List<MyParticleEffect> m_effectsToDelete = new List<MyParticleEffect>();\n\n        /// <summary>\n        /// Event that occures when we want update particles\n        /// </summary>\n        //private static readonly AutoResetEvent m_updateParticlesEvent;\n        //private static volatile bool m_updateCompleted = true;\n        private static bool MultithreadedPrepareForDraw = true;\n        static Task m_prepareForDrawTask;\n\n\n        #region Pools\n\n        public static MyObjectsPool<MyParticleGeneration> GenerationsPool = new MyObjectsPool<MyParticleGeneration>(4096);\n        public static MyObjectsPool<MyParticleEffect> EffectsPool = new MyObjectsPool<MyParticleEffect>(2048);\n\n\n        #endregion\n\n        static List<MyParticleEffect> m_particleEffectsForUpdate = new List<MyParticleEffect>();\n        static List<MyParticleEffect> m_particleEffectsAll = new List<MyParticleEffect>();\n\n        /// <summary>\n        /// Event that occures when we want update particles\n        /// </summary>\n        //private static readonly AutoResetEvent m_prepareForDrawEvent;\n        //private static volatile bool m_prepareForDrawCompleted = true;\n        private static bool MultithreadedUpdater = true;\n        static Task m_updaterTask;\n\n        static ActionWork m_updateEffectsWork = new ActionWork(UpdateEffects);\n        static ActionWork m_prepareEffectsWork = new ActionWork(PrepareEffectsForDraw);\n\n        static MyParticlesManager() \n        {\n            Enabled = true;\n\n#if RENDER_PROFILING\n            MultithreadedUpdater = false;\n#endif\n\n            if (MultithreadedUpdater)\n            {\n                //m_updateParticlesEvent = new AutoResetEvent(false);\n                //Task.Factory.StartNew(BackgroundUpdater, TaskCreationOptions.PreferFairness);\n            }\n\n            MyRender.RegisterRenderModule(MyRenderModuleEnum.AnimatedParticlesPrepare, \"Animated particles prepare\", PrepareForDraw, MyRenderStage.PrepareForDraw, 0, true);\n\n#if RENDER_PROFILING\n            MultithreadedPrepareForDraw = false;\n#endif\n\n            if (MultithreadedPrepareForDraw)\n            {\n                //m_prepareForDrawEvent = new AutoResetEvent(false);\n                //Task.Factory.StartNew(PrepareForDrawBackground, TaskCreationOptions.PreferFairness);\n            }\n        }\n\n        public static MyParticleEffect CreateParticleEffect(int id, bool userDraw = false)\n        {\n            //Because XNA can call Update() more times per frame\n            WaitUntilUpdateCompleted();\n\n            MyParticleEffect effect = MyParticlesLibrary.CreateParticleEffect(id);\n\n            // This could more likely be caused by empty generation pool (which is allowed) then error in xml\n            //System.Diagnostics.Debug.Assert(effect.GetGenerations().Count > 0);\n\n            if (effect != null)\n            {\n                System.Diagnostics.Debug.Assert(m_updaterTask.IsComplete == true);\n\n                if (!userDraw)\n                {\n                    m_particleEffectsForUpdate.Add(effect);\n                }\n                else\n                {\n                    effect.AutoDelete = false;\n                }\n\n                effect.UserDraw = userDraw;\n\n                m_particleEffectsAll.Add(effect);\n            }\n            \n            return effect;\n        }\n\n        public static void RemoveParticleEffect(MyParticleEffect effect, bool fromBackground = false)\n        {\n            //System.Diagnostics.Debug.Assert(m_updateCompleted == true);\n\n            //Because XNA can call Update() more times per frame\n            if (!fromBackground)\n                WaitUntilUpdateCompleted();\n\n            if (!effect.UserDraw /*&& effect.Enabled*/)\n            {\n                System.Diagnostics.Debug.Assert(m_particleEffectsForUpdate.Contains(effect));\n                m_particleEffectsForUpdate.Remove(effect);\n            }\n\n            m_particleEffectsAll.Remove(effect);\n\n            MyParticlesLibrary.RemoveParticleEffectInstance(effect);\n        }\n\n        public static void CloseAll()\n        {\n            System.Diagnostics.Debug.Assert(m_updaterTask.IsComplete == true);\n\n            WaitUntilUpdateCompleted();\n\n            foreach (MyParticleEffect effect in m_particleEffectsForUpdate)\n            {\n                m_effectsToDelete.Add(effect);\n            }\n\n            foreach (MyParticleEffect effect in m_effectsToDelete)\n            {\n                RemoveParticleEffect(effect);\n            }\n            m_effectsToDelete.Clear();\n\n            System.Diagnostics.Debug.Assert(m_particleEffectsAll.Count == 0);\n        }\n\n        public static void Update()\n        {\n            if (App.MyMinerGame.IsPaused())\n                return;\n            MyPerformanceCounter.PerCameraDraw.ParticleEffectsTotal = 0;\n            MyPerformanceCounter.PerCameraDraw.ParticleEffectsDrawn = 0;\n\n            if (MultithreadedUpdater)\n            {\n                WaitUntilUpdateCompleted();\n\n                m_updaterTask = Parallel.Start(m_updateEffectsWork, null);\n            }\n            else\n            {\n                UpdateEffects();\n            }\n        }\n\n        private static void UpdateEffects()\n        {\n            foreach (MyParticleEffect effect in m_particleEffectsForUpdate)\n            {\n                MyPerformanceCounter.PerCameraDraw.ParticleEffectsTotal++;\n\n                if (effect.Update())\n                    m_effectsToDelete.Add(effect);\n            }\n\n            foreach (MyParticleEffect effect in m_effectsToDelete)\n            {\n                RemoveParticleEffect(effect, true);\n            }\n            m_effectsToDelete.Clear();\n        }\n\n        public static void WaitUntilUpdateCompleted()\n        {\n            m_updaterTask.Wait();\n        }\n\n        public static void PrepareForDraw()\n        {\n            m_effectsForCustomDraw.Clear();\n\n            if (MultithreadedPrepareForDraw)\n            {\n                m_prepareForDrawTask = Parallel.Start(m_prepareEffectsWork);\n\n                //m_prepareForDrawCompleted = false;\n                //m_prepareForDrawEvent.Set();\n            }\n            else\n            {\n                PrepareEffectsForDraw();\n            }\n        }\n\n         private static void PrepareEffectsForDraw()\n        {\n            WaitUntilUpdateCompleted();\n\n            foreach (MyParticleEffect effect in m_particleEffectsForUpdate)\n            {\n                effect.PrepareForDraw();\n            }\n        }\n\n        private static void WaitUntilPrepareForDrawCompleted()\n        {\n            m_prepareForDrawTask.Wait();\n        }\n\n\n        public static void Draw()\n        {\n            //MyTrace.Send(TraceWindow.ParallelParticles, \"BEGIN MyParticlesManager Draw()\");\n            WaitUntilPrepareForDrawCompleted();\n            //MyTrace.Send(TraceWindow.ParallelParticles, \"PrepareForDrawCompleted\");\n\n            foreach (MyParticleEffect effect in m_particleEffectsForUpdate)\n            {\n                effect.Draw();\n            }\n\n            if (!App.MyMinerGame.IsPaused())\n            {\n                foreach (MyParticleEffect effect in m_effectsForCustomDraw)\n                {\n                    effect.Update();\n                    effect.PrepareForDraw();\n                    effect.Draw();\n                }\n\n                m_effectsForCustomDraw.Clear();\n            }\n\n            if (OnDraw != null)\n                OnDraw(null, null);\n\n           // MyTrace.Send(TraceWindow.ParallelParticles, \"DONE MyParticlesManager Draw()\");\n            System.Diagnostics.Debug.Assert(m_prepareForDrawTask.IsComplete);\n        }\n\n\n        static List<MyParticleEffect> m_effectsForCustomDraw = new List<MyParticleEffect>();\n\n        public static void CustomDraw(MyParticleEffect effect)\n        {\n            System.Diagnostics.Debug.Assert(effect != null);\n\n            m_effectsForCustomDraw.Add(effect);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Utils/MyBotDebugUtils.cs",
    "content": "﻿using System;\nusing MinerWarsMath;\nusing MinerWarsMath.Graphics;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils;\nusing MinerWars.AppCode.Game.Managers.Session;\n\nnamespace MinerWars.AppCode.Game.Utils\n{\n    /// <summary>\n    /// This is for all the debug junk needed to develop the bot logic and behavior. This stuff is all extra\n    /// debugging code just to visualize what the bot is planning and doing and is not actually used by the bot\n    /// in order to function. The idea is to separate out the stuff that is just for debugging so that the bot\n    /// code itself (MyPhysObjectBot.cs) is fairly clean and what is there is just the stuff that is actually \n    /// required for the bot to work.\n    /// </summary>\n    static class MyBotDebugUtils\n    {\n        /// <summary>\n        /// For debugging, draw the local forward axis (-Z) of the bot.\n        /// </summary>\n        public static void DrawForward( Matrix worldMatrix )\n        {\n            Vector3 forward = worldMatrix.Forward * 100.0f;\n            MyDebugDraw.DrawLine3D(worldMatrix.Translation, (worldMatrix.Translation + forward), Color.White, Color.White);\n        }\n\n        /// <summary>\n        /// For debugging, and to cross-check our data for where the player is, draw a sphere at that position.\n        /// </summary>\n        /// <param name=\"pos\">Target position</param>\n        public static void DrawTargetPosition(Vector3 pos)\n        {\n            Vector3 diffuseColor = new Vector3(50, 0, 0);\n            float alpha = 0.0f;\n            MyDebugDraw.DrawSphereSmooth(pos, 0.25f, diffuseColor, alpha);\n        }\n\n        /// <summary>\n        /// Draw the world axes, at the specified current position.\n        /// </summary>\n        /// <param name=\"pos\"></param> \n        /// <param name=\"length\">Default: 15f</param>\n        public static void DrawWorldCoordinatesAtBot( Vector3 pos, float length  )\n        {\n            // Draw red X, green Y, and blue Z world axes.\n            const float axisLength = 15;\n            MyDebugDraw.DrawLine3D(pos, (pos + new Vector3(axisLength, 0, 0)), Color.Red, Color.Red);\n            MyDebugDraw.DrawLine3D(pos, (pos + new Vector3(0, axisLength, 0)), Color.Green, Color.Green);\n            MyDebugDraw.DrawLine3D(pos, (pos + new Vector3(0, 0, axisLength)), Color.Blue, Color.Blue);\n        }\n\n        /// <summary>\n        /// Draw axes of the bot's local coordinate system.\n        /// </summary>\n        public static void DrawLocalCoordinateAxes( Matrix worldMatrix )\n        {\n            // Short-hand references.\n            Matrix botWorld = worldMatrix;\n            Vector3 botPos = worldMatrix.Translation;\n\n            // Draw red X, green Y, and blue Z world axes.\n            const float axisLength = 15;\n\n            // X\n            Vector3 startX = botPos;\n            Vector3 endX = botPos + (botWorld.Right * axisLength);\n            MyDebugDraw.DrawLine3D(startX, endX, Color.Red, Color.Red);\n\n            // Y \n            Vector3 startY = botPos;\n            Vector3 endY = botPos + (botWorld.Up * axisLength);\n            MyDebugDraw.DrawLine3D(startY, endY, Color.Green, Color.Green);\n\n            // Z\n            Vector3 startZ = botPos;\n            Vector3 endZ = botPos + (botWorld.Backward * axisLength);\n            MyDebugDraw.DrawLine3D(startZ, endZ, Color.Blue, Color.Blue);\n        }\n\n        /// <summary>\n        /// Get the bot debug mode preference. Since we don't want to add a bunch of the bot-specific\n        /// debug info to the debug screen that everyone sees, we're only showing it for the bot AI\n        /// developer (Adam Kane). Since it is a programmatic check, there's no risk of me forgetting\n        /// to disable the bot debug mode before doing a code checkin.\n        /// </summary>\n        /// <returns>Debug preference.</returns>\n        public static bool GetDebugModeBasedOnUserName()\n        {\n            // By default, debug info about bots is not written to the debug screen.\n            bool debugMode = false;\n\n            // Figure out if we're running on Adam Kane's machine, who is working on the bot code. \n            bool isAdamKanesMachine = (Environment.UserName == \"Adam\" && Environment.MachineName == \"XPS730\");\n\n            // If, and only if we're on Adam's machine, enable debug mode.\n            if (isAdamKanesMachine)\n            {\n                debugMode = true;\n            }\n\n            // Return our conclusion.\n            return debugMode;\n        }\n\n        /// <summary>\n        /// \n        /// </summary>\n        /// <param name=\"message\"></param>\n        public static void Write ( string message ) {\n            System.Diagnostics.Debug.WriteLine( message );\n        }\n\n        /// <summary>\n        /// This is a helper method which is here so that we can get a nice view of how the bots are moving\n        /// in relationship to the player. For example, we want to be able to observe a friendly bot \n        /// hovering around player in a nice natural-looking way. What this method does is sets the spectator \n        /// position such that we just behind and above the miner ship.  This is turn will result in the \n        /// requested third person camera delta. Here's the logic that the ThirdPersonFollowing cam uses:\n        /// m_thirdPersonCameraDelta = MySpectator.Position - MyGuiScreenGameBase.Static.PlayerShip.GetPosition();\n        /// </summary>\n        /// <param name=\"foo\"></param>\n        public static void ThirdPersonCameraDelta(Vector3 desiredCameraOffset)\n        {\n            //\n            Matrix playerMatrix = MySession.PlayerShip.WorldMatrix;\n\n            //            \n            MySpectator.Position = playerMatrix.Translation + desiredCameraOffset;\n            MySpectator.Target = MySpectator.Position + playerMatrix.Forward;\n        }\n\n        /// <summary>\n        /// For debugging, add text to the debug screen which details the state of this bot.\n        /// TODO: Move this to MyGuiScreenDebugBot. That class is specific to bot so this stuff could/should go there.\n        /// </summary>\n        /// <param name=\"bot\">Computer-controlled ship.</param>\n        /// <param name=\"player\">The bot's target.</param>\n        public static void AddToFrameDebugText(MySmallShipBot bot, MySmallShip player)\n        {\n            // Get a reference to the debug screen.\n            MyGuiScreenDebugBot debugScreen = MyGuiManager.GetScreenDebugBot();\n            \n            if (debugScreen != null)\n            {\n                // Here's the bot info we're adding to the debug screen text.\n                debugScreen.AddToFrameDebugText(\"MyPhysObjectBot\");\n\n                // Hello.\n                debugScreen.AddToFrameDebugText(\"   Message: Hello!\");\n\n                // Position.\n                debugScreen.AddToFrameDebugText(\"   Player.Position: \" + MyUtils.GetFormatedVector3(player.GetPosition(), 0));\n\n                // Offest between bot and player.\n                Vector3 playerPos = player.GetPosition();\n                Vector3 botPos = bot.GetPosition();\n                Vector3 botToPlayer = botPos - playerPos;\n                debugScreen.AddToFrameDebugText(\"   BotToPlayer: \" + botToPlayer.ToString());\n\n                // Offest between player and bot.\n                Vector3 playerToBot = playerPos - botPos;\n                debugScreen.AddToFrameDebugText(\"   PlayerToBot: \" + playerToBot.ToString());\n\n                // Bot forward\n                Vector3 forward = bot.WorldMatrix.Forward;\n                debugScreen.AddToFrameDebugText(\"   Bot.WorldMatrix.Forward: \" + MyUtils.GetFormatedVector3(forward, 0));\n\n                // m_playersRelativePosition\n                //debugScreen.AddToFrameDebugText(\"   Bot.m_playersRelativePosition: \" + MyUtils.GetFormatedVector3(bot.Behavior.TargetsRelativePosition, 0));\n\n                // Aimed at player?\n                //debugScreen.AddToFrameDebugText(\"   Bot.IsAimedAtPlayer: \" + bot.IsBotPrettyMuchAimedAtPlayer());\n\n                // Distance to player.\n                //debugScreen.AddToFrameDebugText(\"   Bot.DistanceToPlayer: \" + ((int)(bot.DistanceTo(bot.Decision.Target))).ToString());\n\n                // Rotation indicator.\n                //debugScreen.AddToFrameDebugText(\"   Bot.RotationIndicator: \" + MyUtils.GetFormatedVector2(bot.RotationIndicator, 1));\n\n                // Blank line.\n                debugScreen.AddToFrameDebugText(\" \");\n            }\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Utils/MyCamera.cs",
    "content": "﻿using System;\nusing MinerWarsMath;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.VideoMode;\nusing MinerWars.AppCode.Game.Effects;\nusing MinerWars.AppCode.Game.Render;\nusing SysUtils.Utils;\nusing MinerWars.AppCode.Game.World;\nusing System.Diagnostics;\n\nusing SharpDX;\n\nnamespace MinerWars.AppCode.Game.Utils\n{\n    using Vector2 = MinerWarsMath.Vector2;\n    using Vector3 = MinerWarsMath.Vector3;\n    using Vector4 = MinerWarsMath.Vector4;\n    using Rectangle = MinerWarsMath.Rectangle;\n    using Matrix = MinerWarsMath.Matrix;\n    using Color = MinerWarsMath.Color;\n    using BoundingBox = MinerWarsMath.BoundingBox;\n    using BoundingSphere = MinerWarsMath.BoundingSphere;\n    using BoundingFrustum = MinerWarsMath.BoundingFrustum;\n\n    //  IMPORTANT: If you change this enum, don't forget to change it also in MyEnumsToStrings\n    enum MyCameraDirection : byte\n    {\n        FORWARD,\n        SHIP_CUSTOMIZATION_SCREEN\n    }\n\n    static class MyCamera\n    {\n        //  This is camera position we use to remove floating point precision problems. The idea is this: 32bit floats\n        //  are precise when positions are less then 100.000 meters. After that, calculation error start to be noticeable.\n        //  Less in physics, but MORE in depth buffer. Result is that close surface start z-fighting. I solved this problem\n        //  by moving all phys objetcs, voxels and particles near to camera, so from DirectX point of view, camera is always\n        //  in point zero (0, 0, 0). Thanks to this, we don't send large positions to GPU and therefore not to depth buffer.\n        //  But physics and rest of the code uses absolute and high numbers. Physics seems to have tolerable precision up to 200 km \n        //  (graphic only 25 km).\n        //  E.g. when players reaches position (100 km, 0, 0) - his camera is at that position, before we sent real/absolute world\n        //  matrix and camera position to GPU, we subtract camera position from it, so in this case if there will be object at\n        //  position (105 km, 0, 0), we will say its world matrix is in position (5 km, 0, 0) - because we subtracted (100 km, 0, 0).\n        //  Also light positions are subtracted.\n        public static readonly Vector3 PositionZero = Vector3.Zero;\n\n        //  Original was 0.5, but I changed it to 0.35 so in extreme-wide screen resolution cockpit glass isn't truncated!\n        // Previous distance was 0.35, changed to 0.27 so fov 100 degrees is displayed properly (otherwise cockpit would be truncated)\n        // Lowered even more to 0.13 to solve near clip problems with cockpit in triple-head\n        public static float NEAR_PLANE_DISTANCE = 2.0f;\n        //  Two times bigger than sector's diameter because we want to draw impostor voxel maps in surrounding sectors\n        //  According to information from xna creators site, far plane distance doesn't have impact on depth buffer precission, but near plane has.\n        //  Therefore far plane distance can be any large number, but near plane distance can't be too small.\n        public static float FAR_PLANE_DISTANCE = 70000;\n\n        // Near clip plane for \"near\" objects, near objects are cockpit, cockpit glass and weapons\n        public static float NEAR_PLANE_FOR_NEAR_OBJECTS = 0.08f;\n\n        // For 3rd person camera to be able to zoom in (closer to ship)\n        public static float NEAR_PLANE_FOR_3RD_PERSON = 0.5f;\n\n        // Far clip plane for \"near\" objects, near objects are cockpit, cockpit glass and weapons\n        public static float FAR_PLANE_FOR_NEAR_OBJECTS = 100.0f;\n\n        public static float NEAR_PLANE_FOR_PARTICLES = NEAR_PLANE_FOR_NEAR_OBJECTS;\n        public static float FAR_PLANE_FOR_PARTICLES = 50000;\n\n        // When LOD transition distances are more than FAR PLANE, it must be adjusted in way where LOD near < LOD far < background start < background end\n        // these distances must have different values in depth buffer, this threshold make sure they will\n        public static readonly float FAR_DISTANCE_THRESHOLD = 100;\n\n        //  This are ACTUAL public properties of a camera. If we are looking forward, it contains related values.\n        public static Vector3 Position;\n        public static void SetPosition(Vector3 value)\n        {\n            MyUtils.AssertIsValid(value);\n            Position = value;\n        }\n\n\n        public static Vector3 ForwardVector = Vector3.Forward;\n        public static Vector3 LeftVector = Vector3.Left;\n        public static Vector3 UpVector = Vector3.Up;\n        public static Vector3 Velocity;\n        public static Vector3 PreviousPosition;\n        public static Viewport Viewport;                    //  Current viewport\n        public static Matrix InversePositionTranslationMatrix;  //  This is: Matrix.CreateTranslation(-MyCamera.Position);\n        public static Matrix ViewMatrix;                    //  This is view matrix when camera in real position\n        public static Matrix ViewMatrixAtZero;              //  This is view matrix when camera at zero position [0,0,0]\n        public static Matrix ProjectionMatrix;\n        public static Matrix ProjectionMatrixForNearObjects;\n        public static Matrix ViewProjectionMatrix;          //  This is view-projection matrix when camera in real position\n        public static Matrix ViewProjectionMatrixAtZero;    //  This is view-projection matrix when camera at zero position [0,0,0]\n        public static BoundingBox BoundingBox;              //    Bounding box calculated from bounding frustum, updated every draw\n        public static BoundingSphere BoundingSphere;        //    Bounding sphere calculated from bounding frustum, updated every draw\n        public static float AspectRatio;\n        public static Vector3 CornerFrustum;\n\n        public static float FieldOfView = (float)(Math.PI / 2.0);\n        public static float FieldOfViewForNearObjects = (float)(MathHelper.ToRadians(70));\n\n        public static float FieldOfViewAngle\n        {\n            get \n            {\n                return MathHelper.ToDegrees(FieldOfView);\n            }\n            set\n            {\n                FieldOfView = MathHelper.ToRadians(value);\n            }\n        }\n\n        public static MyCameraDirection ActualCameraDirection;      //  This will tell us if right now camera is looking forward or backward (thus drawing backward camera)\n\n        public static Viewport ForwardViewport;\n        public static Viewport BackwardViewport;\n        public static Viewport HudViewport;\n        public static Viewport FullscreenHudViewport;\n\n        public static MyCameraZoomProperties Zoom;\n\n        //  Calculated or constants parameters of this camera\n        public static float ForwardAspectRatio;\n\n        static Matrix m_forwardViewMatrix;\n        static Matrix m_forwardProjectionMatrix;\n        static Matrix m_forwardProjectionMatrixForNearObjects;\n\n        static float m_lodTransitionDistanceNear;\n        static float m_lodTransitionDistanceFar;\n        static float m_lodTransitionDistanceBackgroundStart;\n        static float m_lodTransitionDistanceBackgroundEnd;\n        static float m_lodTransitionDistanceBackgroundStartWithoutZoom;\n        static float m_lodTransitionDistanceBackgroundEndWithoutZoom;\n\n        private static BoundingFrustum BoundingFrustum;\n        private static float m_zoomDivider = 1.0f;\n\n        public static bool EnableZoom = true;\n\n        public static Matrix? backupMatrix = null;\n\n        /// <summary>\n        /// Gets current fov with considering if zoom is enabled\n        /// </summary>\n        public static float FovWithZoom\n        {\n            get\n            {\n                return EnableZoom ? Zoom.GetFOV() : MyCamera.FieldOfView;\n            }\n        }\n\n        /// <summary>\n        /// Gets current fov with considering if zoom is enabled\n        /// </summary>\n        public static float FovWithZoomForNearObjects\n        {\n            get\n            {\n                return EnableZoom ? Zoom.GetFOVForNearObjects() : MyCamera.FieldOfViewForNearObjects;\n            }   \n        }\n\n        /// <summary>\n        /// Return zoom divider with considering if zoom is enabled\n        /// </summary>\n        public static float ZoomDivider\n        {\n            get\n            {\n                return EnableZoom ? m_zoomDivider : 1.0f;\n            }\n        }\n\n        /// <summary>\n        /// GetBoundingFrustum\n        /// </summary>\n        /// <returns></returns>\n        public static BoundingFrustum GetBoundingFrustum()\n        {\n            return BoundingFrustum;\n        }\n\n\n        public static void LoadContent()\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyCamera::LoadContent\");\n            Zoom = new MyCameraZoomProperties();\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        public static void Update()\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyCamera-Update\");\n            Zoom.Update();\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        public static void UpdateScreenSize()\n        {\n            ForwardViewport = MyMinerGame.Static.GraphicsDevice.Viewport;\n            BackwardViewport = MyGuiManager.GetBackwardViewport();\n            HudViewport = MyGuiManager.GetHudViewport();\n            FullscreenHudViewport = MyGuiManager.GetFullscreenHudViewport();\n\n            PreviousPosition = Vector3.Zero;\n            BoundingFrustum = new BoundingFrustum(Matrix.Identity);\n\n            ForwardAspectRatio = (float)ForwardViewport.Width / (float)ForwardViewport.Height;\n\n            if (MyGuiManager.GetScreenshot() != null)\n            {\n                ForwardViewport = ScaleViewport(ForwardViewport, MyGuiManager.GetScreenshot().SizeMultiplier);\n                BackwardViewport = ScaleViewport(BackwardViewport, MyGuiManager.GetScreenshot().SizeMultiplier);\n                HudViewport.Y = (int)(HudViewport.Y * MyGuiManager.GetScreenshot().SizeMultiplier);\n                HudViewport.Height = (int)(HudViewport.Height * MyGuiManager.GetScreenshot().SizeMultiplier);\n                FullscreenHudViewport = ScaleViewport(FullscreenHudViewport, MyGuiManager.GetScreenshot().SizeMultiplier);\n            }\n        }\n\n        private static Viewport ScaleViewport(Viewport viewport, float scale)\n        {\n            return new Viewport((int)(viewport.X * scale), (int)(viewport.Y * scale), (int)(viewport.Width * scale), (int)(viewport.Height * scale));\n        }\n\n        public static void SetViewMatrix(Matrix value)\n        {\n            m_forwardViewMatrix = value;\n\n            Matrix invertedViewMatrix;\n            Matrix.Invert(ref m_forwardViewMatrix, out invertedViewMatrix);\n            SetPosition(invertedViewMatrix.Translation);\n            InversePositionTranslationMatrix = Matrix.CreateTranslation(-Position);\n            \n            Velocity = (Position - PreviousPosition) / MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS;\n\n            PreviousPosition = Position;\n\n            //  Projection matrix according to zoom level\n            m_forwardProjectionMatrix = Matrix.CreatePerspectiveFieldOfView(FovWithZoom, ForwardAspectRatio,\n                GetSafeNear(),\n                MyCamera.FAR_PLANE_DISTANCE);\n\n            //  Projection matrix according to zoom level\n            float near = System.Math.Min(MyCamera.NEAR_PLANE_DISTANCE, MyCamera.NEAR_PLANE_FOR_NEAR_OBJECTS / ZoomDivider); //minimum cockpit distance \n            m_forwardProjectionMatrixForNearObjects = Matrix.CreatePerspectiveFieldOfView(FovWithZoomForNearObjects, ForwardAspectRatio,\n                near,\n                MyCamera.FAR_PLANE_FOR_NEAR_OBJECTS);\n\n        }\n\n        /// <summary>\n        /// Changes FOV for ForwardCamera (updates projection matrix)\n        /// SetViewMatrix overwrites this changes\n        /// </summary>\n        /// <param name=\"fov\"></param>\n        public static void ChangeFov(float fov)\n        {\n            //  Projection matrix according to zoom level\n            m_forwardProjectionMatrix = Matrix.CreatePerspectiveFieldOfView(fov, ForwardAspectRatio,\n                GetSafeNear(),\n                MyCamera.FAR_PLANE_DISTANCE);\n        }\n\n        public static void ChangeClipPlanes(float near, float far, bool applyNow = false)\n        {\n            Debug.Assert(!backupMatrix.HasValue, \"Reset clip planes before changing clip planes again\");\n            backupMatrix = m_forwardProjectionMatrix;\n            m_forwardProjectionMatrix = Matrix.CreatePerspectiveFieldOfView(FovWithZoom, ForwardAspectRatio, near, far);\n            if (applyNow)\n            {\n                EnableForward();\n            }\n        }\n\n        public static void SetParticleClipPlanes(bool applyNow = false)\n        {\n            float near = System.Math.Min(MyCamera.NEAR_PLANE_DISTANCE, MyCamera.NEAR_PLANE_FOR_PARTICLES / ZoomDivider); //minimum cockpit distance            \n            ChangeClipPlanes(near, MyCamera.FAR_PLANE_FOR_PARTICLES, applyNow);\n        }\n\n        public static void SetNearObjectsClipPlanes(bool applyNow = false)\n        {\n            float near = System.Math.Min(MyCamera.NEAR_PLANE_DISTANCE, MyCamera.NEAR_PLANE_FOR_NEAR_OBJECTS / ZoomDivider); //minimum cockpit distance            \n            ChangeClipPlanes(near, MyCamera.FAR_PLANE_FOR_NEAR_OBJECTS, applyNow);\n        }\n\n        static float GetSafeNear()\n        {\n            if (MyRenderConstants.RenderQualityProfile.ForwardRender)\n                return System.Math.Min(4, MyCamera.NEAR_PLANE_FOR_NEAR_OBJECTS / ZoomDivider); //minimum cockpit distance            \n\n            if (MinerWars.AppCode.Game.GUI.MyGuiScreenGamePlay.Static != null && MinerWars.AppCode.Game.GUI.MyGuiScreenGamePlay.Static.CameraAttachedTo == MinerWars.AppCode.Game.GUI.MyCameraAttachedToEnum.PlayerMinerShip_ThirdPersonDynamic)\n                return System.Math.Min(4, MyCamera.NEAR_PLANE_FOR_3RD_PERSON / ZoomDivider); //minimum cockpit distance\n            else\n                return System.Math.Min(4, MyCamera.NEAR_PLANE_DISTANCE / ZoomDivider); //minimum cockpit distance            \n        }\n\n        public static void ResetClipPlanes(bool applyNow = false)\n        {\n            Debug.Assert(backupMatrix.HasValue, \"Nothing to reset, use change clip planes first\");\n            m_forwardProjectionMatrix = backupMatrix.Value;\n            backupMatrix = null;\n            if (applyNow)\n            {\n                EnableForward();\n            }\n            //ChangeClipPlanes(GetSafeNear(), MyCamera.FAR_PLANE_DISTANCE, applyNow);\n        }\n\n        public static void SetCustomProjection(Matrix projection)\n        {\n            m_forwardProjectionMatrix = projection;\n        }\n\n        //  Distances for LOD transition, near and far. Zoom is applied only of forward camera.\n        static void UpdateLodTransitionDistances()\n        {\n            m_lodTransitionDistanceNear = MyRenderConstants.RenderQualityProfile.LodTransitionDistanceNear;\n            m_lodTransitionDistanceFar = MyRenderConstants.RenderQualityProfile.LodTransitionDistanceFar;\n            m_lodTransitionDistanceBackgroundStart = MyRenderConstants.RenderQualityProfile.LodTransitionDistanceBackgroundStart;\n            m_lodTransitionDistanceBackgroundEnd = MyRenderConstants.RenderQualityProfile.LodTransitionDistanceBackgroundEnd;\n\n            if (ActualCameraDirection == MyCameraDirection.FORWARD)\n            {\n                m_lodTransitionDistanceNear /= ZoomDivider;\n                m_lodTransitionDistanceFar /= ZoomDivider;\n                m_lodTransitionDistanceBackgroundStartWithoutZoom = m_lodTransitionDistanceBackgroundStart;\n                m_lodTransitionDistanceBackgroundEndWithoutZoom = m_lodTransitionDistanceBackgroundEnd;\n                m_lodTransitionDistanceBackgroundStart /= ZoomDivider;\n                m_lodTransitionDistanceBackgroundEnd /= ZoomDivider;\n\n                // Make sure all distances are smaller than FAR_PLANE_DISTANCE (otherwise it would broke LOD transition effect and background blending)\n                if (m_lodTransitionDistanceBackgroundEnd > FAR_PLANE_DISTANCE)\n                {\n                    m_lodTransitionDistanceBackgroundEnd = FAR_PLANE_DISTANCE - FAR_DISTANCE_THRESHOLD;\n\n                    if (m_lodTransitionDistanceBackgroundStart > m_lodTransitionDistanceBackgroundEnd)\n                    {\n                        m_lodTransitionDistanceBackgroundStart = m_lodTransitionDistanceBackgroundEnd - FAR_DISTANCE_THRESHOLD;\n\n                        if (m_lodTransitionDistanceFar > m_lodTransitionDistanceBackgroundStart)\n                        {\n                            m_lodTransitionDistanceFar = m_lodTransitionDistanceBackgroundStart - FAR_DISTANCE_THRESHOLD;\n\n                            if (m_lodTransitionDistanceNear > m_lodTransitionDistanceFar)\n                            {\n                                m_lodTransitionDistanceNear = m_lodTransitionDistanceFar - FAR_DISTANCE_THRESHOLD;\n                            }\n                        }\n                    }\n                }\n            }\n        }\n\n        //  Call before drawing forward look\n        public static void EnableForward()\n        {\n            EnableCamera(MyCameraDirection.FORWARD, ForwardViewport, ForwardAspectRatio, m_forwardViewMatrix, m_forwardProjectionMatrix);\n        }\n\n        static void EnableCamera(MyCameraDirection cameraDirection, Viewport viewport, float aspectRatio, Matrix viewMatrix, Matrix projectionMatrix)\n        {\n            ActualCameraDirection = cameraDirection;\n            Viewport = viewport;\n            MyMinerGame.Static.SetDeviceViewport(viewport);\n            AspectRatio = aspectRatio;\n            ViewMatrix = viewMatrix;\n            ProjectionMatrix = projectionMatrix;\n            ProjectionMatrixForNearObjects = m_forwardProjectionMatrixForNearObjects;\n            ViewProjectionMatrix = ViewMatrix * ProjectionMatrix;\n\n            UpdateVectors();\n            UpdateBoundingFrustum();\n\n            ViewMatrixAtZero = Matrix.CreateLookAt(Vector3.Zero, ForwardVector, UpVector);\n            \n            ViewProjectionMatrixAtZero = ViewMatrixAtZero * ProjectionMatrix;\n\n            UpdateLodTransitionDistances();\n            CornerFrustum = CalculateCornerFrustum();\n        }\n\n        //  Call before drawing HUD\n        public static void EnableHud()\n        {\n            MyMinerGame.Static.SetDeviceViewport(MyGuiManager.FullscreenHudEnabled ? FullscreenHudViewport : HudViewport);\n        }\n\n        static void UpdateVectors()\n        {\n            m_zoomDivider = System.Math.Max(0.01f,(FovWithZoom - MyConstants.FIELD_OF_VIEW_MIN) / (MyCamera.FieldOfView - MyConstants.FIELD_OF_VIEW_MIN));\n            //System.Diagnostics.Debug.Assert(m_zoomDivider > 0 && m_zoomDivider <= 1.0f, \"Zoom divider cannot move objects far (just closer)\");\n\n            Matrix invertedViewMatrix;\n            Matrix.Invert(ref ViewMatrix, out invertedViewMatrix);\n            ForwardVector = invertedViewMatrix.Forward;\n            LeftVector = invertedViewMatrix.Left;\n            UpVector = invertedViewMatrix.Up;\n        }\n\n        static void UpdateBoundingFrustum()\n        {\n            //  Update frustum\n            BoundingFrustum.Matrix = ViewProjectionMatrix;\n\n            //  Update bounding box\n            BoundingBox = new BoundingBox(new Vector3(float.PositiveInfinity), new Vector3(float.NegativeInfinity));            \n            BoundingBoxHelper.AddFrustum(ref BoundingFrustum, ref BoundingBox);\n\n            //  Update bounding sphere\n            BoundingSphere = MyUtils.GetBoundingSphereFromBoundingBox(ref BoundingBox);\n        }\n\n        //  Checks if specified bounding box is in actual bounding frustum\n        //  IMPORTANT: If you observe bad result of this test, check how you transform your bounding box.\n        //  Don't use BoundingBox.Transform. Instead transform box manualy and then create new box.\n        public static bool IsInFrustum(ref BoundingBox boundingBox)\n        {\n            MinerWarsMath.ContainmentType result;\n            BoundingFrustum.Contains(ref boundingBox, out result);\n            return result != MinerWarsMath.ContainmentType.Disjoint;\n        }\n\n        public static bool IsInFrustum(BoundingBox boundingBox)\n        {\n            return IsInFrustum(ref boundingBox);\n        }\n\n        //  Checks if specified bounding sphere is in actual bounding frustum\n        //  IMPORTANT: If you observe bad result of this test, check how you transform your bounding sphere.\n        //  Don't use BoundingSphere.Transform. Instead transform sphere center manualy and then create new sphere.\n        public static bool IsInFrustum(ref BoundingSphere boundingSphere)\n        {\n            MinerWarsMath.ContainmentType result;\n            BoundingFrustum.Contains(ref boundingSphere, out result);\n            return result != MinerWarsMath.ContainmentType.Disjoint;\n        }\n\n        //  Checks if specified Vector3 is in actual bounding frustum\n        public static bool IsInFrustum(ref Vector3 point)\n        {\n            MinerWarsMath.ContainmentType result;\n            BoundingFrustum.Contains(ref point, out result);\n            return result != MinerWarsMath.ContainmentType.Disjoint;\n        }\n\n        // Should not be used elsewhere than MyRender.ApplySetups, others should use MyRender.CurrentRenderSetup...\n        public static float GetLodTransitionDistanceNear()\n        {\n            return m_lodTransitionDistanceNear;\n        }\n\n        // Should not be used elsewhere than MyRender.ApplySetups, others should use MyRender.CurrentRenderSetup...\n        public static float GetLodTransitionDistanceFar()\n        {\n            return m_lodTransitionDistanceFar;\n        }\n\n        // Should not be used elsewhere than MyRender.ApplySetups, others should use MyRender.CurrentRenderSetup...\n        public static float GetLodTransitionDistanceBackgroundStart()\n        {\n            return m_lodTransitionDistanceBackgroundStart;\n        }\n\n        // Should not be used elsewhere than MyRender.ApplySetups, others should use MyRender.CurrentRenderSetup...\n        public static float GetLodTransitionDistanceBackgroundEnd()\n        {\n            return m_lodTransitionDistanceBackgroundEnd;\n        }\n\n        public static float GetLodTransitionDistanceBackgroundStartWithoutZoom()\n        {\n            return m_lodTransitionDistanceBackgroundStartWithoutZoom;\n        }\n\n        public static float GetLodTransitionDistanceBackgroundEndWithoutZoom()\n        {\n            return m_lodTransitionDistanceBackgroundEndWithoutZoom;\n        }\n\n        static Vector3 CalculateCornerFrustum()\n        {\n            float farY = (float)Math.Tan(Math.PI / 3.0 / 2.0) * MyCamera.FAR_PLANE_DISTANCE;\n            float farX = farY * AspectRatio;\n            return new Vector3(farX, farY, MyCamera.FAR_PLANE_DISTANCE);\n        }\n\n        public static void SetupBaseEffect(MyEffectBase effect, float fogMultiplierMult = 1.0f)\n        {\n            if (MyRender.EnableFog)\n            {\n                effect.SetFogDistanceFar(MySector.FogProperties.FogFar);\n                effect.SetFogDistanceNear(MySector.FogProperties.FogNear);\n                effect.SetFogColor(MySector.FogProperties.FogColor);\n                effect.SetFogMultiplier(MySector.FogProperties.FogMultiplier * fogMultiplierMult);\n                effect.SetFogBacklightMultiplier(MySector.FogProperties.FogBacklightMultiplier);\n            }\n            else\n            {\n                effect.SetFogMultiplier(0);\n            }\n\n            //if (MyRenderConstants.RenderQualityProfile.ForwardRender || !MyRender.EnableLODBlending)\n            {\n                if (MyRender.GetCurrentLodDrawPass() == MyLodTypeEnum.LOD0)\n                    effect.SetLodCut((GetLodTransitionDistanceFar() + GetLodTransitionDistanceNear()) / 2.0f);\n                else\n                   if (MyRender.GetCurrentLodDrawPass() == MyLodTypeEnum.LOD1)\n                    effect.SetLodCut(-(GetLodTransitionDistanceFar() + GetLodTransitionDistanceNear()) / 2.0f);\n                   else\n                       effect.SetLodCut(0);\n\n                effect.SetLodBackgroundCut(GetLodTransitionDistanceBackgroundEnd());\n            }\n\n            /*\n            if (!MyRenderConstants.RenderQualityProfile.ForwardRender && MyRender.EnableLODBlending)\n            {\n                if (MyRender.GetCurrentLodDrawPass() == MyLodTypeEnum.LOD1)\n                {\n                    //effect.SetLodCut(-(GetLodTransitionDistanceFar() + GetLodTransitionDistanceNear()) / 2.0f);\n                    //effect.SetLodCut(-(GetLodTransitionDistanceFar() + GetLodTransitionDistanceNear()) / 2.0f);\n                    effect.SetLodCut(0);\n                }\n                else\n                {\n                    effect.SetLodCut(0);\n                }\n            }  */\n        }\n\n        public static float GetDistanceWithFOV(Vector3 position)\n        {\n            return GetDistanceWithFOV(Vector3.Distance(Position, position));\n        }\n\n        public static float GetDistanceWithFOV(float distance)\n        {\n            return distance * ZoomDivider;\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Utils/MyCameraZoomProperties.cs",
    "content": "﻿using System;\nusing MinerWarsMath;\n\nusing MinerWars.AppCode.Game.Audio;\n\nnamespace MinerWars.AppCode.Game.Utils\n{\n    enum MyCameraZoomOperationType\n    {\n        ZoomOut = 1,\n        ZoomIn = -1,\n        NoZoom = 0\n    }\n\n    //  Zooming \n    class MyCameraZoomProperties\n    {\n        float m_zoomTime; //    Zoom time\n        MyCameraZoomOperationType m_zoomType = MyCameraZoomOperationType.NoZoom;\n        float m_FOV; // Current fov\n        float m_FOVForNearObjects;\n        float m_zoomLevel; //    Fov ratio\n        //float m_slowDownFactor; //  Slow down factor when zoom is ending\n        MySoundCue? m_zoomRelCue; //  Zoom release sound\n        MySoundCue? m_zoomALoopCue;    //  Attack and Loop zoom sound\n        bool m_zoomReachedEnd;   //  Infomration for sound cues!\n\n        //  Some basic options\n        public MyCameraZoomProperties()\n        {\n            m_zoomTime = 90.0f;\n            m_zoomLevel = 1.0f;\n            //m_slowDownFactor = 0.2f;\n            m_zoomReachedEnd = false;\n            Update();\n        }\n\n        //  Update!\n        public void Update()\n        {\n            if (m_zoomType != MyCameraZoomOperationType.NoZoom)\n            {\n                float tmp = (1 / m_zoomTime);\n                float cur_time = MathHelper.Lerp(0, m_zoomTime, m_zoomLevel);\n                float mod_time = Math.Abs(cur_time - 45);\n                tmp = (1 / (m_zoomTime + mod_time)) * (int)m_zoomType;\n\n                m_zoomLevel += tmp;\n\n                ResumeCue(m_zoomALoopCue);\n                ResumeCue(m_zoomRelCue);                \n\n                if (m_zoomLevel > 1)\n                {\n                    m_zoomLevel = 1;\n                    m_zoomType = MyCameraZoomOperationType.NoZoom;\n                    StopZoomingALoopSound();\n                    m_zoomReachedEnd = true;\n\n                }\n                else if (m_zoomLevel < 0)\n                {\n                    m_zoomLevel = 0;\n                    m_zoomType = MyCameraZoomOperationType.NoZoom;\n                    StopZoomingALoopSound();\n                    m_zoomReachedEnd = true;\n                }\n                else\n                    m_zoomReachedEnd = false;\n            }\n\n            m_FOV = MathHelper.Lerp(MyConstants.FIELD_OF_VIEW_MIN, MyCamera.FieldOfView, m_zoomLevel);\n            m_FOVForNearObjects = MathHelper.Lerp(MyConstants.FIELD_OF_VIEW_MIN, MyCamera.FieldOfViewForNearObjects, m_zoomLevel);\n        }\n\n        //reset zoom\n        public void ResetZoom()\n        {\n            StopZoomingALoopSound();\n            m_zoomReachedEnd = true;\n            m_zoomLevel = 1;\n        }\n\n        //  Set zoom : 1 - zoom in, 0 - no zoom, -1 - zoom out\n        public void SetZoom(MyCameraZoomOperationType inZoomType)\n        {\n            // we don't want call zoom, if we can't zoom\n            if (inZoomType == MyCameraZoomOperationType.ZoomOut && GetZoomLevel() >= 1.0f ||\n               inZoomType == MyCameraZoomOperationType.ZoomIn && GetZoomLevel() <= 0.0f)\n            {\n                return;\n            }\n            m_zoomType = inZoomType;\n            PlaySound(inZoomType);\n        }\n\n        //  Return zoom level. 0 = 100% zoom in, 1 = no zoom;\n        public float GetZoomLevel()\n        {\n            return m_zoomLevel;\n        }\n\n        public float GetFOV()\n        {\n            return m_FOV;\n        }\n\n        public float GetFOVForNearObjects()\n        {\n            return m_FOVForNearObjects;\n        }\n\n        public bool IsZooming()\n        {\n            return m_zoomType != MyCameraZoomOperationType.NoZoom;\n        }\n\n        public void PauseZoomCue()\n        {\n            PauseCue(m_zoomALoopCue);\n            PauseCue(m_zoomRelCue);            \n        }\n\n        void PauseCue(MySoundCue? cue)\n        {\n            if (cue != null && cue.Value.IsPlaying)\n            {\n                cue.Value.Pause();\n            }\n        }\n\n        void ResumeCue(MySoundCue? cue)\n        {\n            if (cue != null && cue.Value.IsValid && cue.Value.IsPaused)\n            {\n                cue.Value.Resume();\n            }\n        }\n\n        //  Will stop zooming loop sound and play zooming rel sound\n        void StopZoomingALoopSound()\n        {\n            if ((m_zoomALoopCue != null) && (m_zoomALoopCue.Value.IsPlaying == true))\n            {\n                m_zoomALoopCue.Value.Stop(SharpDX.XACT3.StopFlags.Immediate);\n                PlayZoomingRelSound();\n            }\n        }\n\n        void PlayZoomingALoopSound()\n        {\n            if ((m_zoomALoopCue == null) || (m_zoomALoopCue.Value.IsPlaying == false))\n            {\n                m_zoomALoopCue = MyAudio.AddCue2D(MySoundCuesEnum.WepSniperScopeZoomALoop);\n            }\n        }\n\n        void PlayZoomingRelSound()\n        {\n            if ((m_zoomRelCue == null) || (m_zoomRelCue.Value.IsPlaying == false))\n            {\n                m_zoomRelCue = MyAudio.AddCue2D(MySoundCuesEnum.WepSniperScopeZoomRel);\n            }\n        }\n\n        //  Plays correct sound\n        void PlaySound(MyCameraZoomOperationType inZoomType)\n        {\n            switch (inZoomType)\n            {\n                case MyCameraZoomOperationType.ZoomIn:\n                    //if (!m_zoomReachedEnd)\n                    //{\n                        PlayZoomingALoopSound();\n                    //}\n                    break;\n                case MyCameraZoomOperationType.ZoomOut:\n                    //if (!m_zoomReachedEnd)\n                    //{\n                        PlayZoomingALoopSound();\n                    //}\n                    break;\n                case MyCameraZoomOperationType.NoZoom:\n                    StopZoomingALoopSound();\n                    break;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Utils/MyConfig.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Globalization;\nusing System.IO;\nusing System.Xml;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Render;\nusing MinerWars.AppCode.Game.VideoMode;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils;\nusing SysUtils.Utils;\nusing MinerWars.AppCode.App;\n\n//  This class encapsulated read/write access to our config file - MinerWars.cfg - stored in user's local files\n//  It assumes that config file may be non existing, or that some values may be missing or in wrong format - this class can handle it\n//  and in such case will offer default values -> BUT YOU HAVE TO HELP IT... HOW? -> when writing getter from a new property,\n//  you have to return default value in case it's null or empty or invalid!!\n//  IMPORTANT: Never call get/set on this class properties from real-time code (during gameplay), e.g. don't do AddCue2D(cueEnum, MyConfig.VolumeMusic)\n//  IMPORTANT: Only from loading and initialization methods.\n\nnamespace MinerWars.AppCode.Game.Utils\n{\n    static class MyConfig\n    {\n        //  Here we store parameter name (dictionary key) in its value (dictionary value)\n        static readonly Dictionary<string, string> m_values = new Dictionary<string, string>();\n\n        //  Constants for mapping between our get/set properties and parameters inside the config file\n        static readonly string USERNAME = \"Username\";\n        static readonly string PASSWORD = \"Password\";\n        static readonly string LAST_LOGIN_WAS_SUCCESSFUL = \"LastLoginWasSuccessful\";\n        static readonly string REMEBER_USERNAME_AND_PASSWORD = \"RememberUsernameAndPassword\";\n        static readonly string AUTOLOGIN = \"Autologin\";\n        static readonly string RENDER_QUALITY = \"RenderQuality\";\n        static readonly string FIELD_OF_VIEW = \"FieldOfView\";\n        static readonly string FIELD_OF_VIEW2 = \"FieldOfView2\";\n        static readonly string SCREEN_WIDTH = \"ScreenWidth\";\n        static readonly string SCREEN_HEIGHT = \"ScreenHeight\";\n        static readonly string FULL_SCREEN = \"FullScreen\";\n        static readonly string VIDEO_ADAPTER = \"VideoAdapter\";\n        static readonly string VERTICAL_SYNC = \"VerticalSync\";\n        static readonly string HARDWARE_CURSOR = \"HardwareCursor\";\n        static readonly string GAME_VOLUME = \"GameVolume\";\n        static readonly string MUSIC_VOLUME = \"MusicVolume\";\n        static readonly string LANGUAGE = \"Language\";\n        static readonly string SUBTITLES = \"Subtitles\";\n        static readonly string NOTIFICATIONS = \"Notifications\";\n        static readonly string CONTROLS_GENERAL = \"ControlsGeneral\";\n        static readonly string CONTROLS_BUTTONS = \"ControlsButtons\";\n        static readonly string EDITOR_CONTROLS_BUTTONS = \"EditorControlsButtons\";\n        static readonly string DISPLAY_UNSELECTED_BOUNDING = \"DisplayUnselectedBounding\";\n        static readonly string USE_CAMERA_CROSSHAIR = \"UseCameraCrosshair\";\n        //static readonly string DISPLAY_PREFAB_CONTAINER_BOUNDING = \"DisplayPrefabContainerBounding\";\n        static readonly string LOCKED_PREFAB_90_DEGREES_ROTATION = \"LockedPrefab90DegreesRotation\";\n        static readonly string SCREENSHOT_SIZE_MULTIPLIER = \"ScreenshotSizeMultiplier\";\n        static readonly string LAST_FRIEND_NAME = \"LastFriendSectorName\";\n        static readonly string LAST_FRIEND_SECTOR_USER_ID = \"LastFriendSectorUserId\";\n        static readonly string LAST_FRIEND_SECTOR_POSITION = \"LastFriendSectorPosition\";\n        static readonly string LAST_MY_SANDBOX_SECTOR = \"LastMySandboxSector\";\n        static readonly string NEED_SHOW_HELPSCREEN = \"NeedShowHelpScreen\";\n        //static readonly string NEED_SHOW_PERFWARNING = \"NeedShowPerfWarning\";\n\n        static readonly string EDITOR_HIDDEN_WAYPOINT = \"EditorHiddenWayPoint\";\n        static readonly string EDITOR_SELECTABLE_WAYPOINT = \"EditorSelectableWayPoint\";\n        static readonly string EDITOR_HIDDEN_PREFABBASE = \"EditorHiddenPrefabBase\";\n        static readonly string EDITOR_SELECTABLE_PREFABBASE = \"EditorSelectablePrefabBase\";\n        static readonly string EDITOR_HIDDEN_DUMMYPOINT = \"EditorHiddenDummyPoint\";\n        static readonly string EDITOR_SELECTABLE_DUMMYPOINT = \"EditorSelectableDummyPoint\";\n        static readonly string EDITOR_HIDDEN_VOXELMAP = \"EditorHiddenVoxelMap\";\n        static readonly string EDITOR_SELECTABLE_VOXELMAP = \"EditorSelectableVoxelMap\";\n        static readonly string EDITOR_WAYPOINTS_IGNORE_DEPTH = \"EditorWaypointsIgnoreDepth\";\n        static readonly string EDITOR_HIDDEN_SPAWNPOINT = \"EditorHiddenSpawnPoint\";\n        static readonly string EDITOR_SELECTABLE_SPAWNPOINT = \"EditorSelectableSpawnPoint\";\n        static readonly string EDITOR_HIDDEN_INFLUENCESPHERE = \"EditorHiddenInfluenceSphere\";\n        static readonly string EDITOR_SELECTABLE_INFLUENCESPHERE = \"EditorSelectableInfluenceSphere\";\n\n        static readonly string EDITOR_SHOW_SAFE_AREAS = \"EditorShowSafeAreas\";\n        static readonly string EDITOR_SELECTABLE_SAFE_AREAS = \"EditorSelectableSafeAreas\";\n        static readonly string EDITOR_SHOW_DETECTORS = \"EditorShowDetectors\";\n        static readonly string EDITOR_SELECTABLE_DETECTORS = \"EditorSelectableDetectors\";\n        static readonly string EDITOR_SHOW_PARTICLE_EFFECTS = \"EditorShowParticleEffects\";\n        static readonly string EDITOR_SELECTABLE_PARTICLE_EFFECTS = \"EditorSelectableParticleEffects\";\n\n        static readonly string EDITOR_ENABLE_LIGHTS_IN_EDITOR = \"EditorEnableLightsInEditor\";\n        static readonly string EDITOR_DISPLAY_PREFAB_CONTAINER_BOUNDING = \"EditorDisplayPrefabContainerBounding\";\n        static readonly string EDITOR_DISPLAY_PREFAB_CONTAINER_AXIS = \"EditorDisplayPrefabContainerAxis\";\n        static readonly string EDITOR_EDITOR_SNAP_POINT_FILTER = \"EditorSnapPointFilter\";\n        static readonly string EDITOR_SAVE_PLAYER_SHIP = \"EditorSavePlayerShip\";\n        static readonly string EDITOR_FIXED_SIZE_SNAP_POINTS = \"EditorFixedSizeSnapPoints\";\n        static readonly string EDITOR_ENABLE_OBJECT_PIVOT = \"EditorEnableObjectPivot\";\n        static readonly string EDITOR_SHOW_SNAP_POINTS = \"EditorShowSnapPoints\";\n        static readonly string EDITOR_DISPLAY_VOXEL_BOUNDING = \"EditorDisplayVoxelBounding\";\n        static readonly string EDITOR_SHOW_GENERATORS_RANGE = \"EditorShowGeneratorsRange\";\n        static readonly string EDITOR_SHOW_LARGE_WEAPONS_RANGE = \"EditorShowLargeWeaponsRange\";\n        static readonly string EDITOR_SHOW_DEACTIVATED_ENTITIES = \"EditorShowDeactivatedEntities\";\n        static readonly string EDITOR_ENABLE_TEXTS_DRAWING = \"EditorEnableTextsDrawing\";\n\n        static readonly string EDITOR_ENABLE_GRID = \"EditorEnableGrid\";\n\n        static MyConfig()\n        {\n        }\n\n        public static bool EditorShowDeactivatedEntities\n        {\n            get\n            {\n                return MyMwcUtils.GetBoolFromString(GetParameterValue(EDITOR_SHOW_DEACTIVATED_ENTITIES), true);\n            }\n\n            set\n            {\n                SetParameterValue(EDITOR_SHOW_DEACTIVATED_ENTITIES, value);\n            }\n        }\n        public static bool EditorShowLargeWeaponsRange\n        {\n            get\n            {\n                return MyMwcUtils.GetBoolFromString(GetParameterValue(EDITOR_SHOW_LARGE_WEAPONS_RANGE), true);\n            }\n\n            set\n            {\n                SetParameterValue(EDITOR_SHOW_LARGE_WEAPONS_RANGE, value);\n            }\n        }\n        public static bool EditorShowGeneratorsRange \n        {\n            get\n            {\n                return MyMwcUtils.GetBoolFromString(GetParameterValue(EDITOR_SHOW_GENERATORS_RANGE), true);\n            }\n\n            set\n            {\n                SetParameterValue(EDITOR_SHOW_GENERATORS_RANGE, value);\n            }\n        }\n        public static bool EditorShowSnapPoints\n        {\n            get\n            {\n                return MyMwcUtils.GetBoolFromString(GetParameterValue(EDITOR_SHOW_SNAP_POINTS), true);\n            }\n\n            set\n            {\n                SetParameterValue(EDITOR_SHOW_SNAP_POINTS, value);\n            }\n        }\n        public static bool EditorEnableTextsDrawing\n        {\n            get\n            {\n                return MyMwcUtils.GetBoolFromString(GetParameterValue(EDITOR_ENABLE_TEXTS_DRAWING), true);\n            }\n\n            set\n            {\n                SetParameterValue(EDITOR_ENABLE_TEXTS_DRAWING, value);\n            }\n        }\n        public static bool EditorShowSafeAreas\n        {\n            get\n            {\n                return MyMwcUtils.GetBoolFromString(GetParameterValue(EDITOR_SHOW_SAFE_AREAS), true);\n            }\n\n            set\n            {\n                SetParameterValue(EDITOR_SHOW_SAFE_AREAS, value);\n            }\n        }\n        public static bool EditorSelectableSafeAreas\n        {\n            get\n            {\n                return MyMwcUtils.GetBoolFromString(GetParameterValue(EDITOR_SELECTABLE_SAFE_AREAS), true);\n            }\n\n            set\n            {\n                SetParameterValue(EDITOR_SELECTABLE_SAFE_AREAS, value);\n            }\n        }\n\n        public static bool EditorShowDetectors\n        {\n            get\n            {\n                return MyMwcUtils.GetBoolFromString(GetParameterValue(EDITOR_SHOW_DETECTORS), true);\n            }\n\n            set\n            {\n                SetParameterValue(EDITOR_SHOW_DETECTORS, value);\n            }\n        }\n        public static bool EditorSelectableDetectors\n        {\n            get\n            {\n                return MyMwcUtils.GetBoolFromString(GetParameterValue(EDITOR_SELECTABLE_DETECTORS), true);\n            }\n\n            set\n            {\n                SetParameterValue(EDITOR_SELECTABLE_DETECTORS, value);\n            }\n        }\n        public static bool EditorShowParticleEffects\n        {\n            get\n            {\n                return MyMwcUtils.GetBoolFromString(GetParameterValue(EDITOR_SHOW_PARTICLE_EFFECTS), true);\n            }\n\n            set\n            {\n                SetParameterValue(EDITOR_SHOW_PARTICLE_EFFECTS, value);\n            }\n        }\n        public static bool EditorSelectableParticleEffects\n        {\n            get\n            {\n                return MyMwcUtils.GetBoolFromString(GetParameterValue(EDITOR_SELECTABLE_PARTICLE_EFFECTS), true);\n            }\n\n            set\n            {\n                SetParameterValue(EDITOR_SELECTABLE_PARTICLE_EFFECTS, value);\n            }\n        }\n\n        public static bool EditorEnableGrid\n        {\n            get\n            {\n                return MyMwcUtils.GetBoolFromString(GetParameterValue(EDITOR_ENABLE_GRID), true);\n            }\n\n            set\n            {\n                SetParameterValue(EDITOR_ENABLE_GRID, value);\n            }\n        }\n        \n        public static bool EditorEnableLightsInEditor\n        {\n            get\n            {\n                return MyMwcUtils.GetBoolFromString(GetParameterValue(EDITOR_ENABLE_LIGHTS_IN_EDITOR), true);\n            }\n\n            set\n            {\n                SetParameterValue(EDITOR_ENABLE_LIGHTS_IN_EDITOR, value);\n            }\n        }\n        public static bool EditorDisplayPrefabContainerBounding\n        {\n            get\n            {\n                return MyMwcUtils.GetBoolFromString(GetParameterValue(EDITOR_DISPLAY_PREFAB_CONTAINER_BOUNDING), true);\n            }\n\n            set\n            {\n                SetParameterValue(EDITOR_DISPLAY_PREFAB_CONTAINER_BOUNDING, value);\n            }\n        }\n        public static bool EditorDisplayPrefabContainerAxis\n        {\n            get\n            {\n                return MyMwcUtils.GetBoolFromString(GetParameterValue(EDITOR_DISPLAY_PREFAB_CONTAINER_AXIS), true);\n            }\n\n            set\n            {\n                SetParameterValue(EDITOR_DISPLAY_PREFAB_CONTAINER_AXIS, value);\n            }\n        }        \n        public static bool EditorDisplayVoxelBounding\n        {\n            get\n            {\n                return MyMwcUtils.GetBoolFromString(GetParameterValue(EDITOR_DISPLAY_VOXEL_BOUNDING), true);\n            }\n\n            set\n            {\n                SetParameterValue(EDITOR_DISPLAY_VOXEL_BOUNDING, value);\n            }\n        }\n        public static bool EditorSnapPointFilter\n        {\n            get\n            {\n                return MyMwcUtils.GetBoolFromString(GetParameterValue(EDITOR_EDITOR_SNAP_POINT_FILTER), true);\n            }\n\n            set\n            {\n                SetParameterValue(EDITOR_EDITOR_SNAP_POINT_FILTER, value);\n            }\n        }\n        public static bool EditorFixedSizeSnapPoints\n        {\n            get\n            {\n                return MyMwcUtils.GetBoolFromString(GetParameterValue(EDITOR_FIXED_SIZE_SNAP_POINTS), true);\n            }\n\n            set\n            {\n                SetParameterValue(EDITOR_FIXED_SIZE_SNAP_POINTS, value);\n            }\n        }\n        public static bool EditorEnableObjectPivot\n        {\n            get\n            {\n                return MyMwcUtils.GetBoolFromString(GetParameterValue(EDITOR_ENABLE_OBJECT_PIVOT), true);\n            }\n\n            set\n            {\n                SetParameterValue(EDITOR_ENABLE_OBJECT_PIVOT, value);\n            }\n        }\n\n        public static MyMwcVector3Int LastSandboxSector\n        {\n            get\n            {\n                return GetParameterValueMyMwcVector3Int(LAST_MY_SANDBOX_SECTOR);\n            }\n            set\n            {\n                LastFriendSectorUserId = null;\n                SetParameterValue(LAST_MY_SANDBOX_SECTOR, value);\n            }\n        }\n\n        public static string LastFriendName\n        {\n            get\n            {\n                return GetParameterValue(LAST_FRIEND_NAME);\n            }\n            set\n            {\n                SetParameterValue(LAST_FRIEND_NAME, value);\n            }\n        }\n\n        public static MyMwcVector3Int LastFriendSectorPosition\n        {\n            get\n            {\n                return GetParameterValueMyMwcVector3Int(LAST_FRIEND_SECTOR_POSITION);\n            }\n            set\n            {\n                SetParameterValue(LAST_FRIEND_SECTOR_POSITION, value);\n            }\n        }\n\n        public static int? LastFriendSectorUserId\n        {\n            get\n            {\n                int result;\n                if(int.TryParse(GetParameterValue(LAST_FRIEND_SECTOR_USER_ID), out result))\n                {\n                    return result;\n                }\n                else\n                {\n                    return null;\n                }\n            }\n            set\n            {\n                SetParameterValue(LAST_FRIEND_SECTOR_USER_ID, value);\n            }\n        }\n\n        public static bool NeedShowHelpScreen\n        {\n            get\n            {\n                return MyMwcUtils.GetBoolFromString(GetParameterValue(NEED_SHOW_HELPSCREEN), true);\n            }\n\n            set\n            {\n                SetParameterValue(NEED_SHOW_HELPSCREEN, value);\n            }\n        }\n\n        /*\n        public static bool NeedShowPerfWarning\n        {\n            get\n            {\n                return MyMwcUtils.GetBoolFromString(GetParameterValue(NEED_SHOW_PERFWARNING), true);\n            }\n\n            set\n            {\n                SetParameterValue(NEED_SHOW_PERFWARNING, value);\n            }\n        } */\n\n        public static string Username\n        {\n            get\n            {\n                return GetParameterValue(USERNAME);\n            }\n\n            set\n            {\n                SetParameterValue(USERNAME, value);\n            }\n        }\n\n        //  This property accepts password in a decrypted form, but then stores it in memory and file in an encrypted form\n        //  It also returns password in a decrypted form.\n        public static string Password\n        {\n            get\n            {\n                return MyMwcEncryptionSymmetricRijndael.DecryptString(GetParameterValue(PASSWORD), MyConfigConstants.SYMMETRIC_PASSWORD);\n            }\n\n            set\n            {\n                SetParameterValue(PASSWORD, MyMwcEncryptionSymmetricRijndael.EncryptString(value, MyConfigConstants.SYMMETRIC_PASSWORD));\n            }\n        }\n\n        public static bool LastLoginWasSuccessful\n        {\n            get\n            {\n                return MyMwcUtils.GetBoolFromString(GetParameterValue(LAST_LOGIN_WAS_SUCCESSFUL), false);\n            }\n\n            set\n            {\n                SetParameterValue(LAST_LOGIN_WAS_SUCCESSFUL, value);\n            }\n        }\n\n        public static bool RememberUsernameAndPassword\n        {\n            get\n            {\n                return MyMwcUtils.GetBoolFromString(GetParameterValue(REMEBER_USERNAME_AND_PASSWORD), true);\n            }\n\n            set\n            {\n                SetParameterValue(REMEBER_USERNAME_AND_PASSWORD, value);\n            }\n        }\n\n        public static bool Autologin\n        {\n            get\n            {\n                return MyMwcUtils.GetBoolFromString(GetParameterValue(AUTOLOGIN), true);\n            }\n\n            set\n            {\n                SetParameterValue(AUTOLOGIN, value);\n            }\n        }\n\n        public static MyRenderQualityEnum RenderQuality\n        {\n            get\n            {\n                int? retInt = MyMwcUtils.GetIntFromString(GetParameterValue(RENDER_QUALITY));\n                if ((retInt.HasValue == false) || (Enum.IsDefined(typeof(MyRenderQualityEnum), retInt) == false))\n                {\n                    return MyRenderQualityEnum.HIGH;\n                }\n                else\n                {\n                    return (MyRenderQualityEnum)retInt.Value;\n                }\n            }\n\n            set\n            {\n                SetParameterValue(RENDER_QUALITY, (int)value);\n            }\n        }\n\n        public static float FieldOfView\n        {\n            get\n            {\n                float? ret = MyMwcUtils.GetFloatFromString(GetParameterValue(FIELD_OF_VIEW2));\n                if (ret.HasValue)\n                {\n                    // Loading value - load degrees and convert to radians\n                    return MinerWarsMath.MathHelper.ToRadians(ret.Value);\n                }\n                else\n                {\n                    // In radians\n                    return MyConstants.FIELD_OF_VIEW_CONFIG_DEFAULT;\n                }\n            }\n            set\n            {\n                // Saving value - save as degrees\n                SetParameterValue(FIELD_OF_VIEW2, MinerWarsMath.MathHelper.ToDegrees(value));\n            }\n        }\n\n        //  Reads height and width from config file, and finds corresponding \"video mode object\". If not possible, then uses fall-back object/resolution.\n        public static MyVideoModeEx VideoMode\n        {\n            get\n            {\n                int? width = MyMwcUtils.GetInt32FromString(GetParameterValue(SCREEN_WIDTH));\n                int? height = MyMwcUtils.GetInt32FromString(GetParameterValue(SCREEN_HEIGHT));\n\n                MyVideoModeEx ret = null;\n\n                //  If not specified in config, we must find recommended aspect ratio. It will be aspect ration that is closest to actual Windows desktop aspect ratio.\n                if ((width == null) || (height == null))\n                {\n                    MyMwcLog.WriteLine(\"Resolution not found in config\");\n\n                    ret = MyVideoModeManager.GetDefaultVideoModeForEmptyConfig(MyMinerGame.GraphicsDeviceManager.GraphicsAdapter.AdapterOrdinal);\n                    if (ret != null)\n                    {\n                        MyMwcLog.WriteLine(\"Screen Width and/or Height not found in config, therefore using primary Screen Width and Height based on windows desktop: \" + ret.Width + \" x \" + ret.Height);\n                    }\n                    else\n                    {\n                        ret = MyVideoModeManager.GetDefaultVideoModeForEmptyConfigWithClosestAspectRatio(MyMinerGame.GraphicsDeviceManager.GraphicsAdapter.AdapterOrdinal, MyVideoModeManager.GetRecommendedAspectRatio(MyMinerGame.GraphicsDeviceManager.GraphicsAdapter.AdapterOrdinal).AspectRatioNumber);\n                        if (ret != null)\n                        {\n                            MyMwcLog.WriteLine(\"Screen Width and/or Height not found in config, therefore using recommended Screen Width and Height based on windows desktop: \" + ret.Width + \" x \" + ret.Height);\n                        }\n                        else\n                        {\n                            MyMwcLog.WriteLine(\"Screen Width and/or Height not found in config, cannot determine widows desktop resolution, using 800x600\");\n                        }\n                    }\n                }\n                else\n                {\n                    ret = MyVideoModeManager.GetVideoModeByWidthAndHeight(MyMinerGame.GraphicsDeviceManager.GraphicsAdapter.AdapterOrdinal, width.Value, height.Value);\n                }\n\n                if ((ret == null) || (MyVideoModeManager.IsSupportedDisplayMode(ret.Width, ret.Height, FullScreen) == false))\n                {\n                    ret = MyVideoModeManager.DEFAULT_FALL_BACK_4_3_800_600;\n                }\n\n                return ret;\n            }\n\n            set\n            {\n                SetParameterValue(SCREEN_WIDTH, value.Width);\n                SetParameterValue(SCREEN_HEIGHT, value.Height);\n            }\n        }\n\n        public static int VideoAdapter\n        {\n            get\n            {\n                return MyMwcUtils.GetIntFromString(GetParameterValue(VIDEO_ADAPTER), 0);\n            }\n\n            set\n            {\n                SetParameterValue(VIDEO_ADAPTER, value);\n            }\n        }\n\n        public static bool FullScreen\n        {\n            get\n            {\n                return MyMwcUtils.GetBoolFromString(GetParameterValue(FULL_SCREEN), true);\n            }\n\n            set\n            {\n                SetParameterValue(FULL_SCREEN, value);\n            }\n        }\n\n        public static bool VerticalSync\n        {\n            get\n            {\n                return MyMwcUtils.GetBoolFromString(GetParameterValue(VERTICAL_SYNC), false);\n            }\n\n            set\n            {\n                SetParameterValue(VERTICAL_SYNC, value);\n            }\n        }\n\n        public static bool HardwareCursor\n        {\n            get\n            {\n                // Hardware cursor is always disabled for OnLive\n                return MyMwcFinalBuildConstants.IS_CLOUD_GAMING ? false : MyMwcUtils.GetBoolFromString(GetParameterValue(HARDWARE_CURSOR), false);\n            }\n\n            set\n            {\n                SetParameterValue(HARDWARE_CURSOR, value);\n            }\n        }\n\n        public static float GameVolume\n        {\n            get\n            {\n                return MyMwcUtils.GetFloatFromString(GetParameterValue(GAME_VOLUME), MyAudioConstants.GAME_MASTER_VOLUME_MAX);\n            }\n\n            set\n            {\n                SetParameterValue(GAME_VOLUME, value);\n            }\n        }\n\n        public static float MusicVolume\n        {\n            get\n            {\n                return MyMwcUtils.GetFloatFromString(GetParameterValue(MUSIC_VOLUME), MyAudioConstants.MUSIC_MASTER_VOLUME_MAX);\n            }\n            set\n            {\n                SetParameterValue(MUSIC_VOLUME, value);\n            }\n        }\n\n        public static bool Subtitles\n        {\n            get\n            {\n                return MyMwcUtils.GetBoolFromString(GetParameterValue(SUBTITLES), true);\n            }\n            set\n            {\n                SetParameterValue(SUBTITLES, value);\n            }\n        }\n\n        public static bool Notifications\n        {\n            get\n            {\n                return MyMwcUtils.GetBoolFromString(GetParameterValue(NOTIFICATIONS), true);\n            }\n            set\n            {\n                SetParameterValue(NOTIFICATIONS, value);\n            }\n        }\n\n        public static bool EditorDisplayUnselectedBounding\n        {\n            get\n            {\n                return MyMwcUtils.GetBoolFromString(GetParameterValue(DISPLAY_UNSELECTED_BOUNDING), false);\n            }\n\n            set\n            {\n                SetParameterValue(DISPLAY_UNSELECTED_BOUNDING, value);\n            }\n        }\n\n        public static bool EditorUseCameraCrosshair\n        {\n            get\n            {\n                return MyMwcUtils.GetBoolFromString(GetParameterValue(USE_CAMERA_CROSSHAIR), false);\n            }\n\n            set\n            {\n                SetParameterValue(USE_CAMERA_CROSSHAIR, value);\n            }\n        }\n\n        public static bool EditorLockedPrefab90DegreesRotation\n        {\n            get\n            {\n                return MyMwcUtils.GetBoolFromString(GetParameterValue(LOCKED_PREFAB_90_DEGREES_ROTATION), false);\n            }\n\n            set\n            {\n                SetParameterValue(LOCKED_PREFAB_90_DEGREES_ROTATION, value);\n            }\n        }\n\n        public static float ScreenshotSizeMultiplier\n        {\n            get\n            {\n                if (string.IsNullOrEmpty(GetParameterValue(SCREENSHOT_SIZE_MULTIPLIER)))\n                {\n                    SetParameterValue(SCREENSHOT_SIZE_MULTIPLIER, 1.0f);\n                    Save();\n                }\n\n                return MyMwcUtils.GetFloatFromString(GetParameterValue(SCREENSHOT_SIZE_MULTIPLIER), 1.0f);\n            }\n\n            set\n            {\n                SetParameterValue(SCREENSHOT_SIZE_MULTIPLIER, value);\n            }\n        }\n\n        public static MyLanguagesEnum Language\n        {\n            get\n            {\n                byte? retByte = MyMwcUtils.GetByteFromString(GetParameterValue(LANGUAGE));\n\n                if ((retByte.HasValue == false) || (Enum.IsDefined(typeof(MyLanguagesEnum), retByte) == false))\n                {\n                    return MyLanguagesEnum.English;\n                }\n                else\n                {\n                    return (MyLanguagesEnum)retByte.Value;\n                }\n            }\n\n            set\n            {\n                SetParameterValue(LANGUAGE, (byte)value);\n            }\n        }\n\n        public static string ControlsGeneral\n        {\n            get\n            {\n                return GetParameterValue(CONTROLS_GENERAL);\n            }\n\n            set\n            {\n                SetParameterValue(CONTROLS_GENERAL, value);\n            }\n        }\n\n        public static string ControlsButtons\n        {\n            get\n            {\n                return GetParameterValue(CONTROLS_BUTTONS);\n            }\n\n            set\n            {\n                SetParameterValue(CONTROLS_BUTTONS, value);\n            }\n        }\n\n        public static string EditorControlsButtons\n        {\n            get\n            {\n                return GetParameterValue(EDITOR_CONTROLS_BUTTONS);\n            }\n\n            set\n            {\n                SetParameterValue(EDITOR_CONTROLS_BUTTONS, value);\n            }\n        }\n\n\n\n        public static bool EditorHiddenWayPoint\n        {\n            get\n            {\n                return MyMwcUtils.GetBoolFromString(GetParameterValue(EDITOR_HIDDEN_WAYPOINT), false);\n            }\n\n            set\n            {\n                SetParameterValue(EDITOR_HIDDEN_WAYPOINT, value);\n            }\n        }\n        public static bool EditorSelectableWayPoint\n        {\n            get\n            {\n                return MyMwcUtils.GetBoolFromString(GetParameterValue(EDITOR_SELECTABLE_WAYPOINT), true);\n            }\n\n            set\n            {\n                SetParameterValue(EDITOR_SELECTABLE_WAYPOINT, value);\n            }\n        }\n        public static bool EditorHiddenVoxelMap\n        {\n            get\n            {\n                return MyMwcUtils.GetBoolFromString(GetParameterValue(EDITOR_HIDDEN_VOXELMAP), false);\n            }\n\n            set\n            {\n                SetParameterValue(EDITOR_HIDDEN_VOXELMAP, value);\n            }\n        }\n        public static bool EditorSelectableVoxelMap\n        {\n            get\n            {\n                return MyMwcUtils.GetBoolFromString(GetParameterValue(EDITOR_SELECTABLE_VOXELMAP), true);\n            }\n\n            set\n            {\n                SetParameterValue(EDITOR_SELECTABLE_VOXELMAP, value);\n            }\n        }\n        public static bool EditorHiddenDummyPoint\n        {\n            get\n            {\n                return MyMwcUtils.GetBoolFromString(GetParameterValue(EDITOR_HIDDEN_DUMMYPOINT), false);\n            }\n\n            set\n            {\n                SetParameterValue(EDITOR_HIDDEN_DUMMYPOINT, value);\n            }\n        }\n        public static bool EditorSelectableDummyPoint        \n        {\n            get\n            {\n                return MyMwcUtils.GetBoolFromString(GetParameterValue(EDITOR_SELECTABLE_DUMMYPOINT), true);\n            }\n\n            set\n            {\n                SetParameterValue(EDITOR_SELECTABLE_DUMMYPOINT, value);\n            }\n        }\n        public static bool EditorHiddenPrefabBase\n        {\n            get\n            {\n                return MyMwcUtils.GetBoolFromString(GetParameterValue(EDITOR_HIDDEN_PREFABBASE), false);\n            }\n\n            set\n            {\n                SetParameterValue(EDITOR_HIDDEN_PREFABBASE, value);\n            }\n        }\n\n        public static bool EditorSelectablePrefabBase\n        {\n            get\n            {\n                return MyMwcUtils.GetBoolFromString(GetParameterValue(EDITOR_SELECTABLE_PREFABBASE), true);\n            }\n\n            set\n            {\n                SetParameterValue(EDITOR_SELECTABLE_PREFABBASE, value);\n            }\n        }\n\n        public static bool EditorHiddenSpawnPoint\n        {\n            get\n            {\n                return MyMwcUtils.GetBoolFromString(GetParameterValue(EDITOR_HIDDEN_SPAWNPOINT), false);\n            }\n\n            set\n            {\n                SetParameterValue(EDITOR_HIDDEN_SPAWNPOINT, value);\n            }\n        }\n\n        public static bool EditorSelectableSpawnPoint\n        {\n            get\n            {\n                return MyMwcUtils.GetBoolFromString(GetParameterValue(EDITOR_SELECTABLE_SPAWNPOINT), true);\n            }\n\n            set\n            {\n                SetParameterValue(EDITOR_SELECTABLE_SPAWNPOINT, value);\n            }\n        }\n\n        public static bool EditorHiddenInfluenceSphere\n        {\n            get\n            {\n                return MyMwcUtils.GetBoolFromString(GetParameterValue(EDITOR_HIDDEN_INFLUENCESPHERE), false);\n            }\n\n            set\n            {\n                SetParameterValue(EDITOR_HIDDEN_INFLUENCESPHERE, value);\n            }\n        }\n\n        public static bool EditorSelectableInfluenceSphere\n        {\n            get\n            {\n                return MyMwcUtils.GetBoolFromString(GetParameterValue(EDITOR_SELECTABLE_INFLUENCESPHERE), true);\n            }\n\n            set\n            {\n                SetParameterValue(EDITOR_SELECTABLE_INFLUENCESPHERE, value);\n            }\n        }\n        public static bool EditorWaypointsIgnoreDepth\n        {\n            get\n            {\n                return MyMwcUtils.GetBoolFromString(GetParameterValue(EDITOR_WAYPOINTS_IGNORE_DEPTH), true);\n            }\n\n            set\n            {\n                SetParameterValue(EDITOR_WAYPOINTS_IGNORE_DEPTH, value);\n            }\n        }\n\n        //  Return parameter value from memory. If not found, empty string is returned.\n        static string GetParameterValue(string parameterName)\n        {\n            string outValue;\n            if (m_values.TryGetValue(parameterName, out outValue) == false)\n            {\n                outValue = \"\";\n            }\n            return outValue;\n        }\n\n        static MyMwcVector3Int GetParameterValueMyMwcVector3Int(string parameterName)\n        {\n            var parts = GetParameterValue(parameterName).Split(new char[] { ',', ' ' }, StringSplitOptions.RemoveEmptyEntries);\n            int x, y, z;\n            if (parts.Length == 3 && int.TryParse(parts[0], out x) && int.TryParse(parts[1], out y) && int.TryParse(parts[2], out z))\n            {\n                return new MyMwcVector3Int(x, y, z);\n            }\n            else\n            {\n                return new MyMwcVector3Int(0, 0, 0);\n            }\n        }\n\n        //  Change parameter's value in memory. It doesn't matter if this parameter was loaded. If was, it will be overwritten. If wasn't loaded, we will just set it.\n        static void SetParameterValue(string parameterName, string value)\n        {\n            m_values[parameterName] = value;\n        }\n\n        //  Change parameter's value in memory. It doesn't matter if this parameter was loaded. If was, it will be overwritten. If wasn't loaded, we will just set it.\n        static void SetParameterValue(string parameterName, float value)\n        {\n            m_values[parameterName] = value.ToString(CultureInfo.InvariantCulture.NumberFormat);\n        }\n\n        //  Change parameter's value in memory. It doesn't matter if this parameter was loaded. If was, it will be overwritten. If wasn't loaded, we will just set it.\n        static void SetParameterValue(string parameterName, bool value)\n        {\n            m_values[parameterName] = value.ToString(CultureInfo.InvariantCulture.NumberFormat);\n        }\n\n        //  Change parameter's value in memory. It doesn't matter if this parameter was loaded. If was, it will be overwritten. If wasn't loaded, we will just set it.\n        static void SetParameterValue(string parameterName, int value)\n        {\n            m_values[parameterName] = value.ToString(CultureInfo.InvariantCulture.NumberFormat);\n        }\n\n        //  Change parameter's value in memory. It doesn't matter if this parameter was loaded. If was, it will be overwritten. If wasn't loaded, we will just set it.\n        static void SetParameterValue(string parameterName, int? value)\n        {\n            m_values[parameterName] = value == null ? \"\" : value.Value.ToString(CultureInfo.InvariantCulture.NumberFormat);\n        }\n\n        static void SetParameterValue(string parameterName, MyMwcVector3Int value)\n        {\n            SetParameterValue(parameterName, String.Format(\"{0}, {1}, {2}\", value.X, value.Y, value.Z));\n        }\n\n        //  Save all values from config file\n        public static void Save()\n        {\n            MyMwcLog.WriteLine(\"MyConfig.Save() - START\");\n            MyMwcLog.IncreaseIndent();\n\n            string path = GetFilePath();\n            MyMwcLog.WriteLine(\"Path: \" + path, LoggingOptions.CONFIG_ACCESS);\n\n            try\n            {\n                using (FileStream fs = new FileStream(path, FileMode.Create))\n                {\n                    XmlWriterSettings settings = new XmlWriterSettings()\n                    {\n                        Indent = true,\n                        NewLineHandling = NewLineHandling.Replace\n                    };\n\n                    using (XmlWriter xmlWriter = XmlWriter.Create(fs, settings))\n                    {\n                        xmlWriter.WriteStartDocument();\n                        xmlWriter.WriteStartElement(\"Parameters\");\n\n                        foreach (KeyValuePair<string, string> kvp in m_values)\n                        {\n                            xmlWriter.WriteStartElement(kvp.Key);\n                            xmlWriter.WriteAttributeString(\"Value\", kvp.Value);\n                            xmlWriter.WriteEndElement();\n\n                            MyMwcLog.WriteLine(kvp.Key + \": \" + kvp.Value, LoggingOptions.CONFIG_ACCESS);\n                        }\n\n                        xmlWriter.WriteEndDocument();\n                        xmlWriter.Flush();\n                    }\n                }\n            }\n            catch (Exception exc)\n            {\n                //  Write exception to log, but continue as if nothing wrong happened\n                MyMwcLog.WriteLine(\"Exception occured, but application is continuing. Exception: \" + exc);\n            }\n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyConfig.Save() - END\");\n        }\n\n        //  Loads all values from config file\n        //  Result of this method is \"m_values\" filled with individual values.\n        //  If anything fails during loading, we ignore log it, but continue - because damaged cfg file must not stop this game\n        public static void Load()\n        {\n            MyMwcLog.WriteLine(\"MyConfig.Load() - START\");\n            MyMwcLog.IncreaseIndent();\n\n            string path = GetFilePath();\n            MyMwcLog.WriteLine(\"Path: \" + path, LoggingOptions.CONFIG_ACCESS);\n\n            //  If anything fails during loading, we ignore log it, but continue - because damaged cfg file must not stop this game\n            string xmlTextOriginal = \"\";\n            try\n            {\n                if (MyFileSystemUtils.FileExists(path) == false)\n                {\n                    MyMwcLog.WriteLine(\"Config file not found! \" + path);\n                }\n                else\n                {\n                    xmlTextOriginal = File.ReadAllText(path);\n                    string xmlText = xmlTextOriginal.Replace('\\0', ' '); // Sometimes there's null chars in config\n\n                    using (var textReader = new StringReader(xmlText))\n                    {\n                        using (XmlReader xmlReader = XmlReader.Create(textReader))\n                        {\n                            while (xmlReader.Read())\n                            {\n                                if (xmlReader.NodeType == XmlNodeType.Element)\n                                {\n                                    if (xmlReader.HasAttributes)\n                                    {\n                                        for (int i = 0; i < xmlReader.AttributeCount; i++)\n                                        {\n                                            m_values[xmlReader.Name] = xmlReader.GetAttribute(i);\n                                        }\n                                    }\n                                }\n                            }\n                        }\n                    }\n                }\n            }\n            catch (Exception exc)\n            {\n                //  Write exception to log, but continue as if nothing wrong happened\n                MyMwcLog.WriteLine(\"Exception occured, but application is continuing. Exception: \" + exc);\n                MyMwcLog.WriteLine(\"Config:\");\n                MyMwcLog.WriteLine(xmlTextOriginal);\n            }\n\n            foreach (KeyValuePair<string, string> kvp in m_values)\n            {\n                MyMwcLog.WriteLine(kvp.Key + \": \" + kvp.Value, LoggingOptions.CONFIG_ACCESS);\n            }\n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyConfig.Load() - END\");\n        }\n\n        static string GetFilePath()\n        {\n            string postFix = MyMwcFinalBuildConstants.GetValueForBuildType(\"\", \"_TEST_BUILD\", \"_DEVELOP_BUILD\");\n            return Path.Combine(MyFileSystemUtils.GetApplicationUserDataFolder(), \"MinerWars\" + postFix + \".cfg\");\n        }\n\n        \n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Utils/MyConstants.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.AppCode.Game.Cockpit;\nusing MinerWars.AppCode.Game.Decals;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.Gameplay;\nusing MinerWars.AppCode.Game.HUD;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.AppCode.Game.VideoMode;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils.Utils;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing SysUtils;\nusing MinerWars.AppCode.Game.Missions;\nusing MinerWars.AppCode.Game.World;\nusing MinerWars.AppCode.Physics;\n\nnamespace MinerWars.AppCode.Game.Utils\n{\n    static class MyConstants\n    {\n        //  Place here all asserts related to consts\n        static MyConstants()\n        {\n            MyCommonDebugUtils.AssertRelease(MyAutocanonConstants.SMOKES_MIN < MyAutocanonConstants.SMOKES_MAX);\n            MyCommonDebugUtils.AssertRelease(MyExplosionsConstants.EXPLOSION_RANDOM_RADIUS_MAX <= MyExplosionsConstants.EXPLOSION_RADIUS_MAX);\n        }\n\n        // Maximum number of inventory items in objects pool\n        public static readonly int INVENTORY_ITEM_POOL = 8192;\n\n        //  This is recommended or preferred anti-aliasing\n        public const MyAntiAliasingEnum PREFERRED_ANTI_ALIASING = MyAntiAliasingEnum.FOUR_SAMPLES;\n\n        //public static readonly Vector3 REFLECTOR_POSITION_DELTA = (new Vector3(0, -1, 10));\n        public static readonly Vector3 REFLECTOR_POSITION_DELTA = (new Vector3(0, 2, 2));\n\n        // Size of preallocated buffers.\n        // NEVER increase this from 20000 without discussing it first.\n        public const int MAX_ENTITIES = 20000;\n\n        //  If this is true, JLX make sphere vs. voxel map collision detection using voxel values and not triangles (it is faster).\n        //  If false, it uses triangles.\n        public static bool SPHERE_VOXELMAP_COLDET_THROUGH_VOXELS = true;\n\n        //  How many physical forces (body, world, impulse, etc) can be applied to one physical object in one update call\n        public const int MAX_EXTERNAL_FORCES_PER_PHYSICAL_OBJECT = 10;\n\n        //  Phys object created near/inside the external 'explosion force' are making JLX freeze, so we don't create debris too close to the center of explosion\n        //  This applies to every add force, because we can't be sure we aren't adding force to objects that are already in place.\n        public const float SAFE_DISTANCE_FOR_ADD_WORLD_FORCE_JLX = 0.05f;\n\n        // Sun visibility check is not performed more often then specified by this interval\n        public static TimeSpan VISIBLE_FROM_SUN_MIN_CHECK_INTERVAL = TimeSpan.FromMilliseconds(500);\n\n        //  Camera\n        //  Lucky thing about XNA's Matrix.CreatePerspectiveFieldOfView() method is that it creates good perspective matrix for any resolution, and still calculates good FOV.\n        //  So I don't have to change this angle. I am assuming that this FOV is vertical angle, and above method calculates horizontal angle on aspect ratio. Thus users with\n        //  wider aspect ratio (e.g. 3x16:10) will see bigger horizontal FOV, but same vertical FOV. And that's good.\n        public static readonly float FIELD_OF_VIEW_CONFIG_MIN = MathHelper.ToRadians(40);\n        public static readonly float FIELD_OF_VIEW_CONFIG_MAX = MathHelper.ToRadians(90);\n        public static readonly float FIELD_OF_VIEW_CONFIG_DEFAULT = MathHelper.ToRadians(60);\n        public static readonly float FIELD_OF_VIEW_CONFIG_MAX_DUAL_HEAD = MathHelper.ToRadians(80);\n        public static readonly float FIELD_OF_VIEW_CONFIG_MAX_TRIPLE_HEAD = MathHelper.ToRadians(70);\n\n        // FIELD_OF_VIEW_MAX replaced by MyCamera.FieldOfView (could be changed in video options)\n        //public static readonly float FIELD_OF_VIEW_MAX = MathHelper.ToRadians(70);\n        public static readonly float FIELD_OF_VIEW_MIN = MathHelper.ToRadians(5);\n\n        //  Two times bigger than sector's diameter because we want to draw impostor voxel maps in surrounding sectors\n        //  According to information from xna creators site, far plane distance doesn't have impact on depth buffer precission, but near plane has.\n        //  Therefore far plane distance can be any large number, but near plane distance can't be too small.\n\n        //  This value is 60 seconds in the past. It used to setup 'last time' values during initialization to some time that is far in the past.\n        //  I can't set it to int.MinValue, because than I will get overflow problems.\n        public const int FAREST_TIME_IN_PAST = -60 * 1000;\n\n        //  Physics\n        public const float PHYSICS_STEPS_PER_SECOND = 60;       //  Looks like if I set it bellow 100 (e.g. to 60), mouse rotation seems not-seamless...\n        public const float PHYSICS_STEP_SIZE_IN_SECONDS = 1.0f / PHYSICS_STEPS_PER_SECOND;\n        public const int PHYSICS_STEP_SIZE_IN_MILLISECONDS = (int)(1000.0f / PHYSICS_STEPS_PER_SECOND);\n\n        public const float PHYSICS_STANDARD_DYNAMIC_FRICTION = 0.65f;\n        public const float PHYSICS_STANDARD_STATIC_FRICTION = 0.65f;\n        public const float PHYSICS_STANDARD_RESTITUTION = 0.4f;\n        public const float PHYSICS_AMMO_RESTITUTION = 0.01f;\n        public const float PHYSICS_BOT_RESTITUTION = 0.1f;\n\n        //RigidBody types for collision events\n        public const ushort RIGIDBODY_TYPE_DEFAULT = 0;\n        public const ushort RIGIDBODY_TYPE_SHIP = 1;\n\n        //  Ambient light coming from stars, not from sun. \n        //  This value must be used for all drawing: voxels, models, particles, glasses, etc.\n        //  If you change it here, change it also in MyCommonEffect.fx in constant: AmbientColor\n        public const float AMBIENT_COLOR = 0.07f;\n\n        //  Vector2 default values\n        public static readonly Vector2 VECTOR2_X0_Y0 = Vector2.Zero;\n        public static readonly Vector2 VECTOR2_X1_Y0 = new Vector2(1, 0);\n        public static readonly Vector2 VECTOR2_X0_Y1 = new Vector2(0, 1);\n        public static readonly Vector2 VECTOR2_X1_Y1 = new Vector2(1, 1);\n\n        //  Vector3 constants needed for \"ref\" optimizations (because XNA's default (e.g. Vector3.Zero) have no setter so we can't use them with 'ref')\n        public static Vector3 VECTOR3_UP = Vector3.Up;\n\n        public const int DEFAULT_SPECTATOR_SPEED = 30;\n\n        public static readonly Vector3 GAME_PRUNING_STRUCTURE_AABB_EXTENSION = new Vector3(3.0f);\n        public const int GAME_PRUNING_STRUCTURE_PROXY_ID_NOT_INSERTED = -1;\n\n\n        //Collion layers for enabling/disabling collisions per type\n        public const ushort COLLISION_LAYER_DEFAULT = 0;\n        public const ushort COLLISION_LAYER_UNCOLLIDABLE = 1;\n        public const ushort COLLISION_LAYER_MISSILE = 2;\n        public const ushort COLLISION_LAYER_VOXEL_DEBRIS = 3;\n        public const ushort COLLISION_LAYER_MODEL_DEBRIS = 4;\n        public const ushort COLLISION_LAYER_PREFAB = 5;\n        public const ushort COLLISION_LAYER_PREFAB_KINEMATIC_PART = 6;\n        public const ushort COLLISION_LAYER_METEOR = 7;\n        public const ushort COLLISION_LAYER_PREFAB_ALARM = 8;\n        public const ushort COLLISION_LAYER_SMALL_SHIP = 9;\n        public const ushort COLLISION_LAYER_LIGHT = 10;\n\n        internal static void InitializeCollisionLayers()\n        {\n            MyPhysics.physicsSystem.GetRigidBodyModule().EnableCollisionInLayers(MyConstants.COLLISION_LAYER_DEFAULT, true);\n            MyPhysics.physicsSystem.GetRigidBodyModule().EnableCollisionInLayers(MyConstants.COLLISION_LAYER_SMALL_SHIP, true);\n            MyPhysics.physicsSystem.GetRigidBodyModule().EnableCollisionInLayers(MyConstants.COLLISION_LAYER_MISSILE, true);\n            MyPhysics.physicsSystem.GetRigidBodyModule().EnableCollisionInLayers(MyConstants.COLLISION_LAYER_METEOR, true);\n            MyPhysics.physicsSystem.GetRigidBodyModule().EnableCollisionInLayers(MyConstants.COLLISION_LAYER_MODEL_DEBRIS, true);\n            MyPhysics.physicsSystem.GetRigidBodyModule().EnableCollisionInLayers(MyConstants.COLLISION_LAYER_VOXEL_DEBRIS, true);\n            MyPhysics.physicsSystem.GetRigidBodyModule().EnableCollisionInLayers(MyConstants.COLLISION_LAYER_PREFAB_ALARM, true);\n            MyPhysics.physicsSystem.GetRigidBodyModule().EnableCollisionInLayers(MyConstants.COLLISION_LAYER_PREFAB, true);\n            MyPhysics.physicsSystem.GetRigidBodyModule().EnableCollisionInLayers(MyConstants.COLLISION_LAYER_PREFAB_KINEMATIC_PART, true);\n            MyPhysics.physicsSystem.GetRigidBodyModule().EnableCollisionInLayers(MyConstants.COLLISION_LAYER_LIGHT, true);\n\n\n            MyPhysics.physicsSystem.GetRigidBodyModule().EnableCollisionInLayers(MyConstants.COLLISION_LAYER_UNCOLLIDABLE, false);\n            MyPhysics.physicsSystem.GetRigidBodyModule().EnableCollisionInLayers(MyConstants.COLLISION_LAYER_METEOR, MyConstants.COLLISION_LAYER_VOXEL_DEBRIS, false);\n            MyPhysics.physicsSystem.GetRigidBodyModule().EnableCollisionInLayers(MyConstants.COLLISION_LAYER_METEOR, MyConstants.COLLISION_LAYER_METEOR, false);\n            MyPhysics.physicsSystem.GetRigidBodyModule().EnableCollisionInLayers(MyConstants.COLLISION_LAYER_MODEL_DEBRIS, MyConstants.COLLISION_LAYER_MODEL_DEBRIS, false);\n            MyPhysics.physicsSystem.GetRigidBodyModule().EnableCollisionInLayers(MyConstants.COLLISION_LAYER_MODEL_DEBRIS, MyConstants.COLLISION_LAYER_MISSILE, false);\n            MyPhysics.physicsSystem.GetRigidBodyModule().EnableCollisionInLayers(MyConstants.COLLISION_LAYER_MODEL_DEBRIS, MyConstants.COLLISION_LAYER_SMALL_SHIP, false);\n            MyPhysics.physicsSystem.GetRigidBodyModule().EnableCollisionInLayers(MyConstants.COLLISION_LAYER_VOXEL_DEBRIS, MyConstants.COLLISION_LAYER_VOXEL_DEBRIS, false);\n            MyPhysics.physicsSystem.GetRigidBodyModule().EnableCollisionInLayers(MyConstants.COLLISION_LAYER_VOXEL_DEBRIS, MyConstants.COLLISION_LAYER_MODEL_DEBRIS, false);\n            MyPhysics.physicsSystem.GetRigidBodyModule().EnableCollisionInLayers(MyConstants.COLLISION_LAYER_VOXEL_DEBRIS, MyConstants.COLLISION_LAYER_SMALL_SHIP, false);\n            MyPhysics.physicsSystem.GetRigidBodyModule().EnableCollisionInLayers(MyConstants.COLLISION_LAYER_VOXEL_DEBRIS, MyConstants.COLLISION_LAYER_MISSILE, false);\n            MyPhysics.physicsSystem.GetRigidBodyModule().EnableCollisionInLayers(MyConstants.COLLISION_LAYER_PREFAB_KINEMATIC_PART, MyConstants.COLLISION_LAYER_PREFAB, false);\n            MyPhysics.physicsSystem.GetRigidBodyModule().EnableCollisionInLayers(MyConstants.COLLISION_LAYER_PREFAB, MyConstants.COLLISION_LAYER_PREFAB_KINEMATIC_PART, false);\n            MyPhysics.physicsSystem.GetRigidBodyModule().EnableCollisionInLayers(MyConstants.COLLISION_LAYER_PREFAB_ALARM, MyConstants.COLLISION_LAYER_DEFAULT, false);\n            MyPhysics.physicsSystem.GetRigidBodyModule().EnableCollisionInLayers(MyConstants.COLLISION_LAYER_PREFAB_ALARM, MyConstants.COLLISION_LAYER_PREFAB_KINEMATIC_PART, false);\n            MyPhysics.physicsSystem.GetRigidBodyModule().EnableCollisionInLayers(MyConstants.COLLISION_LAYER_PREFAB_ALARM, MyConstants.COLLISION_LAYER_SMALL_SHIP, false);\n            MyPhysics.physicsSystem.GetRigidBodyModule().EnableCollisionInLayers(MyConstants.COLLISION_LAYER_SMALL_SHIP, MyConstants.COLLISION_LAYER_MODEL_DEBRIS, false);\n            MyPhysics.physicsSystem.GetRigidBodyModule().EnableCollisionInLayers(MyConstants.COLLISION_LAYER_SMALL_SHIP, MyConstants.COLLISION_LAYER_LIGHT, false);\n        }\n    }\n\n    //  These are texts that I don't want or I can't have in localized text wrapper. They are pure system messages.\n    public static class MyTextConstants\n    {\n        public const string APP_NAME = \"Miner Wars\";\n        public const string APP_ERROR_CAPTION = \"Miner Wars - Application Error\";\n        public const string APP_ERROR_MESSAGE = \"Miner Wars - application error occured. For more information please see application log at {0} \" + MyStringUtils.C_CRLF + MyStringUtils.C_CRLF +\n            \"If you want to help us make Miner Wars a better game, please send the application log to support@minerwars.com\" + MyStringUtils.C_CRLF + MyStringUtils.C_CRLF +\n                \"Thank You!\" + MyStringUtils.C_CRLF +\n                    \"Keen Software House\";\n        public const string NOT_LAUNCHED_FROM_LAUNCHER = \"Please run Miner Wars only from the Miner Wars Launcher, not MinerWars.exe directly.\";\n        public const string ON_NO_SUITABLE_GRAPHICS_DEVICE_EXCEPTION = \"Miner Wars requires graphic adapter that supports Pixel Shader / Vertex Shader 3.0 or higher. Please make sure DirectX 9.0c or higher is installed and your video drivers are up to date.\";\n        public const string REQUIRE_PIXEL_SHADER_3 = \"Miner Wars requires graphic adapter that supports Pixel Shader 3.0 or higher. Please make sure DirectX 9.0c or higher is installed and your video drivers are up to date.\";\n        public const string REQUIRE_VERTEX_SHADER_3 = \"Miner Wars requires graphic adapter that supports Vertex Shader 3.0 or higher. Please make sure DirectX 9.0c or higher is installed and your video drivers are up to date.\";\n    }\n\n    static class MyTrailerConstants\n    {\n        //  We store max 10 minutes\n        public const int MAX_TRACKED_TICKS = 10 * 60 * (int)MyConstants.PHYSICS_STEPS_PER_SECOND;\n        //Make sure that names of these animations are same as in Trailer.xmlx file!\n        public const string SHIP_ATTACK_ANIMATION = \"ShipAttack\";\n        public const string RACE_ANIMATION = \"RaceInTheTunnels\";\n        public const string FIGHT_ANIMATION = \"Fight\";\n        public const string ICEFIGHT_ANIMATION = \"IceFight\";\n        public const string MENU_ANIMATION = \"Menu\";\n\n        public static readonly MyMwcSectorIdentifier DEFAULT_SECTOR_IDENTIFIER = new MyMwcSectorIdentifier(\n            MyMwcSectorTypeEnum.STORY, null, new MyMwcVector3Int(0, 0, 0), null);\n\n        public static readonly int DEFAULT_SECTOR_VERSION = 0;\n    }\n\n    static class MyGuiConstants\n    {\n        // General gui constants\n        public const int GAME_PLAY_SCREEN_FADEIN_IN_MILLISECONDS = 50;\n        public const float MOUSE_CURSOR_SPEED_MULTIPLIER = 1.3f;\n        public const int VIDEO_OPTIONS_CONFIRMATION_TIMEOUT_IN_MILISECONDS = 60 * 1000;\n        public static readonly Vector2 SHADOW_OFFSET = new Vector2(0.000f, 0.000f);//new Vector2(0.0045f, 0.005f);//new Vector2(0.003f, 0.003f);\n        public static readonly Vector2 SHADOW_SIZE = new Vector2(1.05f, 1.05f);\n        public static readonly Vector2 CONTROL_SHADOW_OFFSET = new Vector2(0.000f, 0.000f);//new Vector2(0.0045f, 0.005f);//new Vector2(0.003f, 0.003f);\n        public static readonly Vector2 CONTROL_SHADOW_SIZE = new Vector2(1.02f, 1.09f);\n        //public static readonly Vector4 CONTROL_MOUSE_OVER_BACKGROUND_COLOR_MULTIPLIER = new Vector4(1.67f, 0.64f, 0.0f, 1.0f);\n        public static readonly Vector4 CONTROL_MOUSE_OVER_BACKGROUND_COLOR_MULTIPLIER = new Vector4(1.2f, 1.2f, 1.2f, 1.2f);\n        public static readonly Vector4 CONTROL_MOUSE_OVER_BACKGROUND_COLOR_MULTIPLIER_SOLAR_MAP = new Vector4(2f, 2f, 2f, 1.0f);\n        public static readonly Vector2 CONTROLS_DELTA = new Vector2(0, 0.0525f);\n        public static readonly Vector4 ROTATING_WHEEL_COLOR = Vector4.One;\n        public const float ROTATING_WHEEL_DEFAULT_SCALE = 0.54f;\n        public static readonly int SHOW_CONTROL_TOOLTIP_DELAY = 300; //in milliseconds - after this period, show tooltip on control\n        public static readonly float TOOLTIP_DISTANCE_FROM_BORDER = 0.003f; //in normalized coordinates\n        public static Color DEFAULT_CONTROL_FOREGROUND_COLOR = new Color(0.77f, 0.97f, 0.99f, 0.8f);\n        public static readonly Vector4 DEFAULT_CONTROL_BACKGROUND_COLOR = new Vector4(0.9f, 0.9f, 0.9f, 0.95f);/*new Vector4(0.65f, 0.65f, 0.65f, 0.7f);*///new Vector4(0.5f, 0.5f, 0.5f, 0.7f);\n        public static readonly Vector4 DEFAULT_CONTROL_NONACTIVE_COLOR = new Vector4(0.9f, 0.9f, 0.9f, 0.95f);\n        public static readonly Vector4 DEFAULT_CONTROL_HIGHLIGHT_TEXT_COLOR = new Vector4(1f, 1f, 1f, 1f);\n        public static readonly Vector4 DEFAULT_CONTROL_NONACTIVE_COLOR_HALF = new Vector4(0.25f, 0.35f, 0.375f, 0.9f);\n        public static Color DISABLED_BUTTON_COLOR = new Color(87, 127, 147, 210);\n        public static Vector4 DISABLED_BUTTON_COLOR_VECTOR = new Vector4(0.52f, 0.6f, 0.63f, 0.9f);//0.43,0,0,0.824f\n        public static Vector4 DISABLED_BUTTON_TEXT_COLOR = new Vector4(0.4f, 0.47f, 0.5f, 0.8f);//new Vector4(0.6f, 0.0f, 0.0f, 1.0f);//Color.Red.ToVector4();\n        public static Vector4 DISABLED_BUTTON_NON_RED_MULTIPLIER = new Vector4(0.7f, 0.7f, 0.7f, 1);\n        public static float LOCKBUTTON_SIZE_MODIFICATION = 0.85f;\n\n        public static MyGuiFont DEFAULT_CONTROL_FONT \n        {\n            get { return MyGuiManager.GetFontMinerWarsWhite(); }\n        }\n\n        public const float APP_VERSION_TEXT_SCALE = 0.95f;\n        public const float APP_GLOBAL_TEXT_SCALE = 0.90f;\n        public const float LOGED_PLAYER_NAME_TEXT_SCALE = 0.90f;\n\n        public static readonly Vector2 HUD_FREE_SPACE = new Vector2(0.01f, 0.01f);\n\n        public static readonly MyMwcVector3Int SOLAR_SYSTEM_FORBIDDEN_AREA = new MyMwcVector3Int(100, 100, 100);\n\n        // Inline text colors\n        public static readonly Color INLINE_TEXT_COLOR_1 = new Color(1.0f, 1.0f, 1.0f, 1.0f);  // White\n        public static readonly Color INLINE_TEXT_COLOR_2 = new Color(1.0f, 0.647f, 0.0f, 1.0f);// Orange\n        public static readonly Color INLINE_TEXT_COLOR_3 = new Color(1.0f, 0.0f, 0.0f, 1.0f);  // Red\n        public static readonly Color INLINE_TEXT_COLOR_4 = new Color(1.0f, 1.0f, 0.0f, 1.0f);  // Yellow\n        public static readonly Color INLINE_TEXT_COLOR_5 = new Color(0.0f, 1.0f, 0.0f, 1.0f);  // Green\n        public static readonly Color INLINE_TEXT_COLOR_6 = new Color(0.0f, 1.0f, 1.0f, 1.0f);  // Cyan\n        public static readonly Color INLINE_TEXT_COLOR_7 = new Color(0.0f, 0.0f, 1.0f, 1.0f);  // Blue\n        public static readonly Color INLINE_TEXT_COLOR_8 = new Color(1.0f, 0.0f, 1.0f, 1.0f);  // Magenta\n\n        // Screen gui constants\n        public const float SCREEN_CAPTION_TEXT_SCALE = 0.95f;\n        public static readonly Vector4 SCREEN_CAPTION_TEXT_COLOR = Vector4.One;//new Vector4(0.77f, 0.97f, 0.97f, 1); //new Vector4(0.65f, 0.675f, 0.7f, 1);\n        public static readonly Vector4 SCREEN_BACKGROUND_FADE_BLANK_DARK = new Vector4(0.03f, 0.04f, 0.05f, 0.7f);\n        public static readonly Vector4 SCREEN_BACKGROUND_TRANSPARENT = new Vector4(0.00f, 0.00f, 0.00f, 0.0f);\n        public static readonly Vector4 SCREEN_BACKGROUND_FADE_BLANK_DARK_PROGRESS_SCREEN = new Vector4(0.03f, 0.04f, 0.05f, 0.4f);\n        public static readonly Vector4 SCREEN_BACKGROUND_FADE_BLANK_DARK_LIGHT_PROGRESS_SCREEN = new Vector4(0.03f, 0.04f, 0.05f, 0.2f);\n        public static readonly float SCREEN_CAPTION_DELTA_Y = 0.05f;\n        public static readonly Vector4 SCREEN_BACKGROUND_COLOR = Vector4.One;\n        //  This is screen height we use as reference, so all fonts, textures, etc are made for it and if this height resolution used, it will be 1.0\n        //  If e.g. we use vertical resolution 600, then averything must by scaled by 600 / 1200 = 0.5\n        public const float REFERENCE_SCREEN_HEIGHT = 1080;\n        //public static readonly Vector4 SCREEN_BACKGROUND_FADE_DIRT_DEFAULT = new Vector4(0.0f, 0.0f, 0.0f, 0.1f);//new Vector4(0.0f, 0.0f, 0.0f, 0.5f);//Vector4.One;// new Vector4(0.03f, 0.04f, 0.05f, 1f);\n        //public static readonly Vector4 SCREEN_BACKGROUND_FADE_BLANK_FROM = Vector4.Zero;\n        //public static readonly Vector2 SCREEN_CAPTION_DELTA = new Vector2(0.05f, 0.04f);\n\n        public const float LOADING_PLEASE_WAIT_SCALE = 1.1f;\n        public static readonly Vector2 LOADING_PLEASE_WAIT_POSITION = new Vector2(0.5f, 0.95f);\n        //public static readonly Vector4 LOADING_PLEASE_WAIT_COLOR = LABEL_TEXT_COLOR;\n        public static readonly Vector4 LOADING_PLEASE_WAIT_COLOR = Vector4.One;\n\n        // Textbox gui constants\n        public const int TEXTBOX_MOVEMENT_DELAY = 100;\n        //  Delay between we accept same key press (e.g. when user holds left key, or X key for a longer period)\n        public const int TEXTBOX_CHANGE_DELAY = 500;\n        public const string TEXTBOX_FALLBACK_CHARACTER = \"#\";\n        public static readonly Vector2 TEXTBOX_TEXT_OFFSET = new Vector2(0.015f, 0);\n\n        public static readonly Vector2 TEXTBOX_SMALL_SIZE = new Vector2(0.225f, 0.04f);\n        public static readonly Vector2 TEXTBOX_MEDIUM_SIZE = new Vector2(404f / 1600f, 66f / 1200f);\n        public static readonly Vector2 TEXTBOX_MEDIUM_LONG_SIZE = new Vector2(808f / 1600f, 66f / 1200f);\n        public static readonly Vector2 TEXTBOX_LARGE_SIZE = TEXTBOX_MEDIUM_SIZE;\n        public static readonly Vector4 TEXTBOX_BACKGROUND_COLOR = DEFAULT_CONTROL_BACKGROUND_COLOR;\n\n        // Checkbox gui constants\n        public static readonly Vector2 CHECKBOX_SIZE = new Vector2(0.03f, 0.04f) * 0.85f;\n        public static readonly Vector2 CHECKBOX_WITH_GLOW_SIZE = CHECKBOX_SIZE * 1.5f;\n        public static readonly Vector4 CHECKBOX_BACKGROUND_COLOR = new Vector4(0.85f,0.85f,0.85f,1.0f);\n\n        // RadioButton gui constants\n        public static readonly Vector2 RADIOBUTTON_SIZE = new Vector2(0.03f, 0.04f) * 0.85f;\n        public static readonly Vector4 RADIOBUTTON_BACKGROUND_COLOR = DEFAULT_CONTROL_BACKGROUND_COLOR;\n\n        // Label gui constants\n        public const float LABEL_TEXT_SCALE = 1.0f;//0.73f\n        public const float EDITOR_LABEL_TEXT_SCALE = 0.9f;//0.73f\n        public const float LABEL_TEXT_SCALE_OPTIONS = 0.85f;//0.73f\n        public static readonly Vector4 LABEL_TEXT_COLOR = new Vector4(1.00f, 1.00f, 1.00f, 1.0f);//new Vector4(0.7f, 0.7f, 0.7f, 1);\n\n        // Mouse gui constants\n        //public static readonly Vector4 MOUSE_CURSOR_COLOR = new Vector4(0.8f, 0, 0, 1);\n        public static readonly Vector4 MOUSE_CURSOR_COLOR = Vector4.One;\n        public const float MOUSE_CURSOR_SCALE = 1;\n        public static readonly Vector2 MOUSE_CURSOR_CENTER_POSITION = new Vector2(0.5f, 0.5f);\n\n        // Rotation constants\n        public const float MOUSE_ROTATION_INDICATOR_MULTIPLIER = 0.075f;\n        public const float ROTATION_INDICATOR_MULTIPLIER = 0.15f;  // empirical value for nice keyboard rotation: mouse/joystick/gamepad sensitivity can be tweaked by the user\n        public const float PREFAB_CAMERA_ROTATION_SENSITIVITY = 0.0025f;\n\n        // Button gui constants\n        public static readonly Vector4 BUTTON_BACKGROUND_COLOR = DEFAULT_CONTROL_BACKGROUND_COLOR;\n        public static readonly Vector4 BUTTON_TEXT_COLOR = DEFAULT_CONTROL_NONACTIVE_COLOR;//LABEL_TEXT_COLOR;\n        public const float BUTTON_TEXT_SCALE = LABEL_TEXT_SCALE;\n        public const float BUTTON_TEXT_SCALE_SMALLER = BUTTON_TEXT_SCALE*0.8f;\n        public static readonly Vector2 BUTTON_TEXT_OFFSET = new Vector2(0.02f, 0);\n        public const float BUTTON_MOUSE_OVER_TEXT_SCALE = 1.05f;\n        public static readonly Vector2 MENU_BUTTONS_POSITION_DELTA = new Vector2(0, 0.0702f);\n        public static readonly Vector4 BACK_BUTTON_BACKGROUND_COLOR = BUTTON_BACKGROUND_COLOR;// - new Vector4(0.05f, 0.05f, 0.05f, 0);\n        public static readonly Vector4 BACK_BUTTON_TEXT_COLOR = DEFAULT_CONTROL_NONACTIVE_COLOR;//LABEL_TEXT_COLOR;// - new Vector4(0.1f, 0.1f, 0.1f, 0);\n        public const float BACK_BUTTON_TEXT_SCALE = LABEL_TEXT_SCALE;\n        public static readonly Vector2 BACK_BUTTON_SIZE = new Vector2(260f / 1600f, 70f / 1200f); //new Vector2(0.167f, 0.0596f);\n        public static readonly Vector2 OK_BUTTON_SIZE = new Vector2(0.177f, 0.0765f);\n\n        public static readonly Vector2 PROGRESS_CANCEL_BUTTON_SIZE = new Vector2(0.11f, 0.048f);\n        public static readonly Vector2 MAIN_MENU_BUTTON_SIZE = new Vector2(409f/1600f, 90f/1200f);\n        public const float BUTTON_HOVER_SCALE = 1.0f;\n        public const float BUTTON_PRESSED_SCALE = 1.0f;\n        public const int BUTTON_HOVER_SCALE_TIME = 200;\n        public static readonly float BUTTON_DEFAULTS_WIDTH = MyGuiConstants.TEXTBOX_MEDIUM_SIZE.X / 2;\n\n        //Journal \n        public static readonly Vector2 JOURNAL_BUTTON_SIZE = new Vector2(90f / 1600f, 90f / 1200f);\n        // TreeView gui constants\n        public static readonly Vector4 TREEVIEW_BACKGROUND_COLOR = new Vector4(33 / 255f, 89 / 255f, 142 / 255f, 0.85f);\n        public static Vector4 TREEVIEW_SELECTED_ITEM_COLOR = new Vector4(0.03f, 0.02f, 0.03f, 0.4f);\n        public static Vector4 TREEVIEW_DISABLED_ITEM_COLOR = new Vector4(1.0f, 0.3f, 0.3f, 1.0f);\n        public static readonly Vector4 TREEVIEW_TEXT_COLOR = DEFAULT_CONTROL_NONACTIVE_COLOR;\n        public static readonly Vector4 TREEVIEW_VERTICAL_LINE_COLOR = new Vector4(158 / 255f, 208 / 255f, 1, 1);\n        public static readonly Vector2 TREEVIEW_VSCROLLBAR_SIZE = new Vector2(20 * 3, 159 * 4) / 3088;\n        public static readonly Vector2 TREEVIEW_HSCROLLBAR_SIZE = new Vector2(159 * 3, 20 * 4) / 3088;\n        public static readonly Vector2 TREEVIEW_SCROLLBAR_SIZE = new Vector2(MyGuiConstants.TREEVIEW_VSCROLLBAR_SIZE.X, MyGuiConstants.TREEVIEW_HSCROLLBAR_SIZE.Y);\n\n        // Combobox gui constants                                                                                                   \n        public static readonly Vector2 COMBOBOX_TEXT_OFFSET = new Vector2(0.022f, 0);\n        public static readonly Vector4 COMBOBOX_TEXT_COLOR = new Vector4(1f, 1f, 1f, 1f);\n        public static readonly Vector2 COMBOBOX_SMALL_SIZE = new Vector2(0.125f, 0.04f);\n        public static readonly Vector2 COMBOBOX_MEDIUM_SIZE = new Vector2(0.318f, 0.053f);\n        public static readonly Vector2 COMBOBOX_LONGMEDIUM_SIZE = new Vector2(0.318f, 0.060f);\n        public static readonly Vector2 COMBOBOX_LONGMEDIUM_ELEMENT_SIZE = new Vector2(0.318f, 0.045f);\n\n        //public static readonly Vector2 COMBOBOX_MEDIUM_SIZE_OFFSET = new Vector2(0.00f, 0.023f);\n        public static readonly Vector2 COMBOBOX_MEDIUM_ELEMENT_SIZE = new Vector2(0.318f, 0.03f);\n        public static readonly float COMBOBOX_MEDIUM_GLOW_SIZE= 0.010f;\n        public static readonly float COMBOBOX_MEDIUM_DROPBOX_TOP_OFFSET = 0.011f;\n\n        public static readonly float COMBOBOX_LONGMEDIUM_DROPBOX_TOP_OFFSET = 0.020f;\n\n        \n        public static readonly Vector2 COMBOBOX_LARGE_SIZE = new Vector2(0.65f, 0.04f);\n        public static readonly Vector4 COMBOBOX_BACKGROUND_COLOR = DEFAULT_CONTROL_BACKGROUND_COLOR;//new Vector4(SCREEN_BACKGROUND_COLOR.X, SCREEN_BACKGROUND_COLOR.Y, SCREEN_BACKGROUND_COLOR.Z, 0.8f);\n        public static readonly Vector4 COMBOBOX_VERTICAL_LINE_COLOR = new Vector4(0.34f, 0.41f, 0.42f, 0.7f);\n        public const float COMBOBOX_SCROLLBAR_MIN_HEIGHT = 0.128f;\n        public static Color COMBOBOX_SCROLLBAR_COLOR = Color.White;\n        public static Vector4 COMBOBOX_SELECTED_ITEM_COLOR = new Vector4(0.03f, 0.02f, 0.03f, 0.4f);\n        public static Vector2 COMBOBOX_ICON_SIZE = new Vector2(0.15f, 0.15f);\n        public const float COMBOBOX_TEXT_SCALE = LABEL_TEXT_SCALE * 0.7f;\n        public static readonly Vector2 COMBOBOX_VSCROLLBAR_SIZE = new Vector2(0.0383005f, 0.0805958545f);\n        public static readonly Vector2 COMBOBOX_HSCROLLBAR_SIZE = new Vector2(0.0805958545f, 0.0383005f);\n\n        // Listbox gui constants\n        public static readonly Vector2 LISTBOX_TEXT_OFFSET = new Vector2(0.01f, 0);\n        public static readonly Vector4 LISTBOX_TEXT_COLOR = DEFAULT_CONTROL_NONACTIVE_COLOR;\n        //public static readonly Vector2 LISTBOX_SMALL_SIZE = new Vector2(0.125f, 0.04f);\n        public static readonly Vector2 LISTBOX_SMALL_SIZE = new Vector2(LISTBOX_ICON_SIZE_X, LISTBOX_ICON_SIZE_Y);  // used for icon's listbox (inventory etc)\n        public static readonly Vector2 LISTBOX_MEDIUM_SIZE = new Vector2(0.25f, 0.04f);\n        public static readonly Vector2 LISTBOX_LONGMEDIUM_SIZE = new Vector2(0.65f, 0.04f);\n        public static readonly Vector2 LISTBOX_LARGE_SIZE = new Vector2(0.45f, LISTBOX_ICON_SIZE_Y);\n        public static readonly Vector4 LISTBOX_BACKGROUND_COLOR = DEFAULT_CONTROL_BACKGROUND_COLOR;\n        public static readonly Vector4 LISTBOX_BACKGROUND_COLOR_BLUE = new Color(21, 73, 120, 160).ToVector4();\n        public static readonly Vector4 LISTBOX_DISABLED_COLOR = new Vector4(1f, 0f, 0f, 0.7f);\n        public static readonly Vector4 LISTBOX_LINE_COLOR = Color.CornflowerBlue.ToVector4(); //new Vector4(0.34f, 0.41f, 0.42f, 0.7f);\n        public static Color LISTBOX_SCROLLBAR_COLOR = Color.White;\n        public static Vector4 LISTBOX_SELECTED_ITEM_COLOR = new Vector4(0.03f, 0.02f, 0.03f, 0.4f);\n        public static Vector4 LISTBOX_ITEM_COLOR = new Vector4(0.13f, 0.12f, 0.13f, 0.4f);\n        public static Vector4 LISTBOX_EMPTY_SLOT_COLOR = new Vector4(0.23f, 0.22f, 0.23f, 0.4f);\n        public static Vector4 LISTBOX_HIGHLIGHT_MULTIPLIER = new Vector4(0.033f, 0.022f, 0.033f, 0.42f);\n        //public const float LISTBOX_ICON_SIZE = 0.15f;\n        //public const float LISTBOX_ICON_SIZE = 0.075f;\n        public const float LISTBOX_ICON_SIZE_X = 0.07395f;\n        public const float LISTBOX_ICON_SIZE_Y = LISTBOX_ICON_SIZE_X * 4 / 3;\n        public const float LISTBOX_SCROLLBAR_MIN_SIZE = 0.08059f;\n        public const float LISTBOX_SCROLLBAR_MAX_SIZE = 0.08059f;\n        public const float LISTBOX_SCROLLBAR_WIDTH = 0.0383005f;\n\n        // Drag and drop gui constants\n        public static readonly Vector2 DRAG_AND_DROP_TEXT_OFFSET = new Vector2(0.01f, 0);\n        public static readonly Vector4 DRAG_AND_DROP_TEXT_COLOR = DEFAULT_CONTROL_NONACTIVE_COLOR;\n        //public static readonly Vector2 DRAG_AND_DROP_SMALL_SIZE = new Vector2(0.125f, 0.04f);\n        public static readonly Vector2 DRAG_AND_DROP_SMALL_SIZE = new Vector2(DRAG_AND_DROP_ICON_SIZE_X, DRAG_AND_DROP_ICON_SIZE_Y);\n        public static readonly Vector2 DRAG_AND_DROP_MEDIUM_SIZE = new Vector2(0.2f, 0.04f);\n        public static readonly Vector2 DRAG_AND_DROP_LONGMEDIUM_SIZE = new Vector2(0.65f, 0.04f);\n        public static readonly Vector2 DRAG_AND_DROP_LARGE_SIZE = new Vector2(0.45f, DRAG_AND_DROP_ICON_SIZE_Y);\n        public static readonly Vector4 DRAG_AND_DROP_BACKGROUND_COLOR = new Vector4(1f, 1f, 1f, 1f);\n        //public const float DRAG_AND_DROP_ICON_SIZE = 0.15f;\n        //public const float DRAG_AND_DROP_ICON_SIZE = 0.075f;\n        public const float DRAG_AND_DROP_ICON_SIZE_X = LISTBOX_ICON_SIZE_X;\n        public const float DRAG_AND_DROP_ICON_SIZE_Y = DRAG_AND_DROP_ICON_SIZE_X * 4 / 3;\n\n        // Slider gui constants\n        public const float SLIDER_HEIGHT = 0.06f;\n        public static readonly float SLIDER_INSIDE_OFFSET_X = 0.017f;\n        public static readonly Vector4 SLIDER_BACKGROUND_COLOR = DEFAULT_CONTROL_BACKGROUND_COLOR;//new Vector4(0.4f, 0.45f, 0.50f, 0.75f);\n        public const float SLIDER_WIDTH_LABEL = 0.0f;\n        public const float SLIDER_WIDTH = 0.25f - SLIDER_WIDTH_LABEL;\n\n        // Messagebox gui constants\n        public const float MESSAGE_BOX_BORDER_AREA_X = 0.1f;\n        public const float MESSAGE_BOX_BORDER_AREA_Y = 0.05f;\n        public const float MESSAGE_BOX_TEXT_SCALE = LABEL_TEXT_SCALE;\n        public static readonly Vector2 MESSAGE_BOX_BUTTON_SIZE = BACK_BUTTON_SIZE;\n        public static readonly Vector2 SEARCH_BUTTON_SIZE = new Vector2(134 / 1600f, 70f / 1200f);\n        public static readonly Vector2 MESSAGE_BOX_BUTTON_SIZE_SMALL = new Vector2(190f / 1600f, 65f / 1200f);\n        //public static readonly Vector4 MESSAGE_BOX_BACKGROUND_COLOR = new Vector4(0.5f, 0, 0, 0.95f);//(new Color(50, 4, 1, 220)).ToVector4();\n        //public static readonly Vector4 MESSAGE_BOX_BUTTON_BACKGROUND_COLOR = new Vector4(0.5f, 0, 0, 0.4f);//(new Color(60, 6, 1, 191)).ToVector4();\n        //public static readonly Vector4 MESSAGE_BOX_TEXT_COLOR = (new Color(255, 0, 0, 240)).ToVector4();\n        //public static readonly Vector4 MESSAGE_BOX_ROTATING_WHEEL_COLOR = MESSAGE_BOX_TEXT_COLOR;\n        public static readonly Vector4 MESSAGE_BOX_ERROR_BACKGROUND_COLOR = new Vector4(0.7f, 0.2f, 0.2f, 0.95f);\n        public static readonly Vector4 MESSAGE_BOX_ERROR_BUTTON_BACKGROUND_COLOR = new Vector4(0.85f, 0, 0, 0.75f);\n        public static readonly Vector4 MESSAGE_BOX_ERROR_TEXT_COLOR = (new Color(255, 0, 0, 240)).ToVector4();\n        public static readonly Vector4 MESSAGE_BOX_ERROR_ROTATING_WHEEL_COLOR = MESSAGE_BOX_ERROR_TEXT_COLOR;\n\n        public static readonly Vector4 MESSAGE_BOX_MESSAGE_BACKGROUND_COLOR = new Vector4(1f, 1f, 1f, 1f);\n        public static readonly Vector4 MESSAGE_BOX_MESSAGE_BUTTON_BACKGROUND_COLOR = (new Color(240, 240, 240, 255)).ToVector4();\n        public static readonly Vector4 MESSAGE_BOX_MESSAGE_TEXT_COLOR = (new Color(240, 240, 240, 255)).ToVector4();\n        public static readonly Vector4 MESSAGE_BOX_MESSAGE_ROTATING_WHEEL_COLOR = MESSAGE_BOX_MESSAGE_TEXT_COLOR;\n\n\n        public static readonly Vector4 MESSAGE_BOX_NULL_TEXT_COLOR = Vector4.One;\n        public static readonly Vector4 MESSAGE_BOX_NULL_BACKGROUND_COLOR = new Vector4(1f, 1f, 1f, 0.95f);\n        public static readonly Vector4 MESSAGE_BOX_NULL_BUTTON_BACKGROUND_COLOR = Vector4.One;\n        public static readonly Vector4 MESSAGE_BOX_NULL_ROTATING_WHEEL_COLOR = Vector4.One;\n        public static readonly Vector4 MESSAGE_BOX_NULL_BACKGROUND_INTERFERENCE_VIDEO_COLOR = Vector4.One;\n\n\n\n        //inventory \n        public static readonly Vector2 INVENTORY_FILTER_BUTTON_INNER_SIZE = new Vector2(50 / 1600f, 50 / 1200f);\n        public static readonly Vector2 INVENTORY_FILTER_BUTTON_SIZE = new Vector2(64 / 1600f, 64 / 1200f);\n        public const float INVENTORY_LABEL_TEXT_SCALE = 0.8f;//0.73f\n\n        // Editor Toolbar constants\n        public static readonly Vector2 TOOLBAR_PADDING = new Vector2(0.03f, 0.04f) / 7.5f;\n        public static readonly Vector2 TOOLBAR_BUTTON_SIZE = new Vector2(0.03f, 0.04f) * 1.38f;\n        public const float TOOLBAR_BUTTON_OFFSET = -0.0035f;\n        public static readonly Vector4 TOOLBAR_TEXT_COLOR = new Color(255, 255, 255, 255).ToVector4();\n        public static readonly float TOOLBAR_TEXT_SCALE = 0.60f;\n\n        // Editor Snap Points Constants\n        public static readonly Vector4 SNAP_POINT_COLOR = new Vector4(1.0f, 1.0f, 1.0f, 1.0f);\n        public static readonly Vector4 SNAP_POINT_LINKED_COLOR = new Vector4(1.0f, 1.0f, 0.0f, 1.0f);\n        public static readonly Vector4 SNAP_POINT_MULTI_LINKED_COLOR = new Vector4(1.0f, 0.55f, 0.0f, 1.0f);\n        public static readonly Vector4 SNAP_POINT_SELECTED_COLOR = new Vector4(1.0f, 0.0f, 0.0f, 1.0f);\n\n        // Tool tips constants:\n        public static Vector2 TOOL_TIP_RELATIVE_DEFAULT_POSITION = new Vector2(0.03f, 0.03f);\n        public const float TOOL_TIP_RELATIVE_FOG_POSITION_DIFF = 0.1f;\n        public const float TOOL_TIP_TEXT_SCALE = 0.7f;\n        public static Vector2 TOOL_TIP_BACKGROUND_SCALE = new Vector2(1.6f, 4.6f/*4.0f*/);//new Vector2(2.5f,2.0f);\n        public static Vector2 TOOL_TIP_BACKGROUND_FADE_SCALE = new Vector2(1.1f, 1.2f);\n        public static Color TOOL_TIP_TEXT_COLOR = Color.AntiqueWhite;\n        public static Color TOOL_TIP_BACKGROUND_COLOR = new Color(0.02f, 0.24f, 116/255f, 0.5f);\n        public static Color TOOL_TIP_BORDER_COLOR = Color.CornflowerBlue; // new Color(120/255f, 205/255f, 245/255f, 0.95f);\n        //new Color(MyGuiConstants.LABEL_TEXT_COLOR);//new Color(200, 200, 200, 160);//new Color(255, 255, 255, 80);\n        public static Color TOOL_TIP_BACKGROUND_FADE_COLOR = new Color(0, 0, 0, 255);\n\n        // Control wheel constants\n        public static Color CONTROL_WHEEL_FOG_FADE_COLOR = new Color(0, 0, 0, 255);\n        public static Color CONTROL_WHEEL_FOG_COLOR = new Color(44, 44, 44, 228);\n        public static Vector2 CONTROL_WHEEL_RESCALE = new Vector2(1.9795f, 1.35433431f);\n\n        // Select ammo select constants\n        public static readonly Vector4 SELECT_AMMO_BACKGROUND_COLOR = new Vector4(0.949f, 0.949f, 0.941f, 0.9f);//new Vector4(0.77f, 0.97f, 0.97f, 0.5f);\n        public static readonly Vector4 AMMO_SELECT_BACKGROUND_COLOR_NONSELECT = new Vector4();\n        public const float SELECT_AMMO_ACTIVE_COLOR_MULTIPLIER = 5.0f;//1.8f;\n        public static Color SELECT_AMMO_TIP_BACKGROUND_FADE_COLOR = new Color(0, 0, 0, 255);\n        public static Color SELECT_AMMO_TIP_BACKGROUND_FADE_COLOR_FOG = new Color(0, 0, 0, 140);\n        public static Color SELECT_AMMO_TIP_BACKGROUND = new Color(220, 220, 220, 140);\n        public static Color SELECT_AMMO_TIP_TEXT_COLOR = new Color(193,136,36,255);\n        public static Vector2 SELECT_AMMO_TIP_RELATIVE_DEFAULT_POSITION = new Vector2(0.025f, -0.045f);\n        public const float AMMO_SELECT_MENU_ITEM_WIDTH = 0.05f;\n        public const float  AMMO_SELECT_SCALE = 0.75f;\n        public const float AMMO_SELECT_BACKGROUND_SCALE = 1.8745f;\n        public const float AMMO_SELECT_MENUITEM_DISTANCE_NORMALIZED = 0.01f;\n        public const float AMMO_SELECT_ITEM_DISTANCE_NORMALIZED = 0.001f;//0.01f;\n        public static Vector2 AMMO_SELECT_ITEM_TEXT_RELATIVE_POSITION = new Vector2(0.89f, 0.93f);//at right bottom new Vector4(1.0f,1.0f)\n        public static Vector2 AMMO_SELECT_LEFT_TOP_POSITION = new Vector2(1.0f, 1.0f);\n        public const float AMMO_SELECTION_CONFIRMATION_TEXT_SCALE = 0.8f;//0.7f;\n        public const float AMMO_SELECTION_CONFIRMATION_TEXT_INFO_SCALE = 0.8f;//0.7f;\n        public const float AMMO_SELECTION_TOOL_TIP_TEXT_SCALE = 0.7f; // 0.46f\n        public static Vector4 AMMO_SELECTION_DEFAULT_AFTERSELECT_ICON_COLOR = new Vector4(0.5f, 0.5f, 0.5f, 1.0f);\n        public static Vector4 AMMO_SELECTION_DEFAULT_AFTERSELECT_TEXT_COLOR = new Vector4(0.5f, 0.5f, 0.5f, 1.0f);\n        public static Vector2 AMMO_SELECTION_DEFAULT_AFTERSELECT_ICON_SCALE = new Vector2(0.75f, 0.75f);\n        public const float AMMO_SELECTION_CONFIRM_BORDER_INFO_SCALE = 0.7f;//0.64f;\n        public static Vector2 AMMO_SELECTION_CONFIRM_BORDER_SCALE = new Vector2(/*1.3f, 0.975f*/1.0f, 1.0f);\n        public static Vector2 AMMO_SELECTION_CONFIRM_BORDER_TEXT_INFO_POSITION = new Vector2(0.367f, 0.457f);\n        public static Vector2 AMMO_SELECTION_CONFIRM_BORDER_TEXT_POSITION = new Vector2(0.632f, 0.5f);\n        public static Vector2 AMMO_SELECTION_CONFIRM_BORDER_POSITION = new Vector2(0.5f, 0.5f);\n        public static Color AMMO_SELECTION_CONFIRM_INFO_TEXT_COLOR = new Color(MyGuiConstants.LABEL_TEXT_COLOR);//Color.Red;\n        public static Color AMMO_SELECTION_CONFIRM_BORDER_COLOR = new Color(255, 255, 255, 200);\n        public const float AMMO_SELECTION_TIP_BACKGROUND_FADE_HEIGHT_SCALE = 0.48986f;\n\n        //  How long takes transition of opening and closing of the screen - in miliseconds\n        public const int TRANSITION_OPENING_TIME = 100;\n        public const int TRANSITION_CLOSING_TIME = 100;\n\n        //  Min and max values for transition alpha, where max is alpha when screen is fully active\n        public const float TRANSITION_ALPHA_MIN = 0;\n        public const float TRANSITION_ALPHA_MAX = 1;\n\n        //  Loading - random screen index (this is about Background001.png...). Max is the number of highest file.\n        public const int LOADING_RANDOM_SCREEN_INDEX_MIN = 1;\n        public const int LOADING_RANDOM_SCREEN_INDEX_MAX = 1;\n\n        //  This is the size of background's texture. I hardcoded it here because these textures are resized to power of two, so getting\n        //  height/width from texture will return not usable results. So, if you ever change this texture, change this param too.\n        public static readonly MyMwcVector2Int LOADING_BACKGROUND_TEXTURE_REAL_SIZE = new MyMwcVector2Int(1920, 1080);\n\n        //  This is the size of Miner War's logo texture. I hardcoded it here because these textures are resized to power of two, so getting\n        //  height/width from texture will return not usable results. So, if you ever change this texture, change this param too.\n        //public static readonly MyMwcVector2Int MINER_WARS_LOGO_TEXTURE_REAL_SIZE = new MyMwcVector2Int(1500, 330);\n\n        //  Slow down drawing of \"loading...\" screens, so background thread who is actualy right now loading content will have more time\n        //  Plus these two threads won't fight for graphic device. It's not big difference, just 10% or so.\n        public const int LOADING_THREAD_DRAW_SLEEP_IN_MILISECONDS = 10;\n\n        // Gui Video constants\n        public const int BACKGROUND_INTERFERENCE_VIDEO_REPEAT_MIN = 6000;\n        public const int BACKGROUND_INTERFERENCE_VIDEO_REPEAT_MAX = 6000;\n        public const byte BACKGROUND_INTERFERENCE_VIDEO_PIXELS_EXTENSION = 25;\n        public static readonly Vector4 MESSAGE_BOX_ERROR_BACKGROUND_INTERFERENCE_VIDEO_COLOR = new Vector4(1f, 0f, 0f, 1f);\n        public static readonly Vector4 MESSAGE_BOX_MESSAGE_BACKGROUND_INTERFERENCE_VIDEO_COLOR = Vector4.One;\n        public static readonly Vector4 DEFAULT_BLUE_BACKGROUND_INTERFERENCE_VIDEO_COLOR = new Vector4(0.77f, 0.97f, 0.99f, 0.8f);\n\n        // Color of notification \"You can trade with...\"\n        public static readonly Vector4 TRADE_NOTIFICATION_FRIEND_COLOR = new Vector4(0.1f, 0.7f, 0.1f, 0.5f);\n        public static readonly Vector4 TRADE_NOTIFICATION_NEUTRAL_COLOR = new Vector4(0.5f, 0.5f, 0.5f, 0.5f);\n        public static readonly Vector4 LOOT_NOTIFICATION_COLOR = new Vector4(0.7f, 0.1f, 0.1f, 0.5f);\n\n        // Colored texts contstants\n        public const float COLORED_TEXT_DEFAULT_TEXT_SCALE = 0.75f;\n        public static readonly Color COLORED_TEXT_DEFAULT_COLOR = new Color(DEFAULT_CONTROL_NONACTIVE_COLOR);\n        public static readonly Color COLORED_TEXT_DEFAULT_HIGHLIGHT_COLOR = new Color(MyGuiConstants.CONTROL_MOUSE_OVER_BACKGROUND_COLOR_MULTIPLIER * DEFAULT_CONTROL_NONACTIVE_COLOR);\n\n        // Multiline label constants\n        public static readonly Vector2 MULTILINE_LABEL_BORDER = new Vector2(0.01f, 0.0050f);\n        public static readonly Vector4 MULTILINE_LABEL_BACKGROUND_COLOR = new Vector4(0.25f, 0.35f, 0.375f, 0.9f);\n\n        public static readonly float DEBUG_LABEL_TEXT_SCALE = 1.0f;\n        public static readonly float DEBUG_BUTTON_TEXT_SCALE = 0.8f;\n        public static readonly float DEBUG_STATISTICS_TEXT_SCALE = 0.75f;\n        public static readonly float DEBUG_STATISTICS_ROW_DISTANCE = 0.020f;\n\n        public static readonly string REMOTE_VIEW_LARGE_WEAPON_AMMO = \"ammo\";\n        public static readonly string REMOTE_VIEW_LARGE_WEAPON_BOTTOM = \"bottom\";\n        public static readonly string REMOTE_VIEW_LARGE_WEAPON_CROSS = \"cross\";\n        public static readonly string REMOTE_VIEW_LARGE_WEAPON_LEFT_SIDE = \"left_side\";\n        public static readonly string REMOTE_VIEW_LARGE_WEAPON_PULSE = \"pulse\";\n        public static readonly string REMOTE_VIEW_LARGE_WEAPON_RASTR = \"rastr\";\n        public static readonly string REMOTE_VIEW_LARGE_WEAPON_RIGHT_SIDE = \"right_side\";\n\n        public static readonly string REMOTE_VIEW_DRONE_BOTTOM = \"bottom\";\n        public static readonly string REMOTE_VIEW_DRONE_CROSS = \"cross\";\n        public static readonly string REMOTE_VIEW_DRONE_LEFT_SIDE = \"left_side\";\n        public static readonly string REMOTE_VIEW_DRONE_RASTR = \"rastr\";\n        public static readonly string REMOTE_VIEW_DRONE_RIGHT_SIDE = \"right_side\";\n\n        public static readonly string REMOTE_VIEW_CAMERA_BOTTOM = \"bottom\";\n        public static readonly string REMOTE_VIEW_CAMERA_FOCUS = \"focus\";\n        public static readonly string REMOTE_VIEW_CAMERA_LEFT_SIDE = \"left_side\";\n        public static readonly string REMOTE_VIEW_CAMERA_RASTR = \"rastr\";\n        public static readonly string REMOTE_VIEW_CAMERA_REC = \"rec\";\n        public static readonly string REMOTE_VIEW_CAMERA_RIGHT_SIDE = \"right_side\";\n\n        public static readonly int CHAT_WINDOW_MAX_MESSAGES_COUNT = 10;\n        public static readonly int CHAT_WINDOW_MAX_MESSAGE_LENGTH = 28;\n        public static readonly float CHAT_WINDOW_MESSAGE_SCALE = 0.75f;\n        public static readonly Vector2 CHAT_WINDOW_POSITION = new Vector2(0.5f, 0.96f);\n        public static readonly Color CHAT_WINDOW_BACKGROUND_COLOR = new Color(0.25f, 0.25f, 0.25f, 0.25f);\n        public static readonly Color CHAT_WINDOW_TEXT_COLOR = new Color(0.75f, 0.75f, 0.75f, 0.75f);\n        public static readonly float CHAT_WINDOW_MESSAGE_TTL = 60000;\n\n        public const float FONT_SCALE = 28.8f / 37f;  // Ratio between font size and line height has changed: old was 28, new is 37 (28.8 makes it closer to the font size change 18->23)\n        public const float FONT_TOP_SIDE_BEARING = 3 * 23f / 18f;  // This is exact: old font size was 18, new font size 23, X padding is 7 and Y padding is 4, so (7-4)*23/18\n    }\n\n    //  Objects in the background sphere (aka skysphere)\n    static class MyBgrCubeConsts\n    {\n        // TODO: Remove, use MyMwcSectorConstants\n        public const float SECTOR_SIZE = MyMwcSectorConstants.SECTOR_SIZE / 1000;\n        public const float BILLBOARD_SCALE = 1.0f;       //  We scale every background billboard by this factor, because objects seemed to be smaller than in reality. And it looks nice.\n        public const int STARS_COUNT = 100000;\n        public const int STARS_BRIGHT_COUNT = 10000;\n\n        public const int DUST_MILKEY_WAY_COUNT = 2000;\n        public const int DUST_SMALL_COUNT = 1000;\n        public const int DUST_COUNT_TOTAL = DUST_MILKEY_WAY_COUNT + DUST_SMALL_COUNT;\n\n        public const int TEXTURE_WIDTH_AND_HEIGHT = 2048;\n\n        public const float MILLION_KM = 1000 * 1000;\n        //  Object positions and radiuses are in millions of km (e.g. earth to sun is 150.000.000 km, therefore here its just 150)\n        //  Don't forget these are radiuses, not diameters!!!\n        //  Positions are in cartezian system (x, y, z), relative to solar system center (sun)\n        //  Player isn't in the middle (point 0, 0, 0). There is sun. So player is between sun and earth.\n        //  Distance from earth to moon is 384,000 km\n        public static readonly Vector3 MERCURY_POSITION = new Vector3(-39, 0.0f, 46);\n        public static readonly Vector3 LAIKA_POSITION = new Vector3(-186, 0.0f, -115);\n        //public static readonly Vector3 MERCURY_POSITION = new Vector3(60, 0.2f, -0.105f);\n        //public static readonly Vector3 VENUS_POSITION = new Vector3(-2, -0.5f, 108);\n        //public static readonly Vector3 VENUS_POSITION = new Vector3(-2, -0.5f, -108);\n        //public static readonly Vector3 EARTH_POSITION = new Vector3(105, 0, -105);\n        public static readonly Vector3 VENUS_POSITION = new Vector3(-2, 0.0f, 108);\n        public static readonly Vector3 EARTH_POSITION = new Vector3(101, 0, -111);\n        public static readonly Vector3 MOON_POSITION = EARTH_POSITION + new Vector3(-0.015f, 0.0f, -0.2f);\n        public static readonly Vector3 MARS2_POSITION = new Vector3(-140, 0, -230);\n        public static readonly Vector3 MARS_POSITION = new Vector3(-182, 0, 114);\n        public static readonly Vector3 NEBULA_POSITION = new Vector3(209f, 0f, -110f);\n        public static readonly Vector3 RUSSIAN_POSITION = new Vector3(-249.4f, 0f, -43.28f);\n        public static readonly Vector3 MARS3_POSITION = new Vector3(177, 0, -118);\n        public static readonly Vector3 PIRATES2_POSITION = new Vector3(485, 0, -105);\n        public static readonly Vector3 SLAVERS2_POSITION = new Vector3(102, 0, -526);\n        public static readonly Vector3 SLAVERS_POSITION = new Vector3(208f, 0f, -410f);\n        public static readonly Vector3 JUPITER_POSITION = new Vector3(-778f, 0.0f, 155.6f);\n        public static readonly Vector3 JUPITERBORDER_POSITION = new Vector3(0f, 0.0f, -800.6f);\n        public static readonly Vector3 JUPITER2_POSITION = new Vector3(719f, 0.0f, 146.9f);\n        public static readonly Vector3 SATURN_POSITION = new Vector3(1120f, 0.0f, -840f);\n        public static readonly Vector3 URANUS_POSITION = new Vector3(-2700f, 0.0f, -1500f);\n        public static readonly Vector3 NEPTUNE_POSITION = new Vector3(1350f, 0.0f, 4050f);\n        public static readonly Vector3 CHINESE_POSITION = new Vector3(-59.3f, 0.0f, 191.2f);\n        public static readonly Vector3 MEDINA622_POSITION = new Vector3(201.4f, 0.0f, 39.5f);\n        public static readonly MyMwcVector3Int JUNKYARD_SECTOR = new MyMwcVector3Int(2567538, 0, -172727);\n        public static readonly MyMwcVector3Int RIME_SECTOR = new MyMwcVector3Int(-1922856, 0, -2867519);\n        public static readonly MyMwcVector3Int CHINESERAFINARY_SECTOR = new MyMwcVector3Int(-2716080, 0, 4951053);\n        public static readonly MyMwcVector3Int CHINESEMINES_SECTOR = new MyMwcVector3Int(-4274372, 0, 4874227);\n\n        // Default sun color (when not influented by any dust/asteroid field or fog)\n        public static readonly Vector3 SUN_COLOR = new Vector3(1, 1, 1);\n\n        // Anywhere on the belt\n        public static readonly float ASTEROID_BELT_DISTANCE = (MyBgrCubeConsts.MARS_POSITION.Length() + MyBgrCubeConsts.JUPITER_POSITION.Length()) / 2.6f;\n        public static readonly Vector3 ASTEROID_BELT_POSITION = -Vector3.UnitZ * ASTEROID_BELT_DISTANCE;\n\n        public static readonly float SUN_RADIUS = 230 / MILLION_KM;\n        public static readonly float MERCURY_RADIUS = 2439 / MILLION_KM;\n        public static readonly float VENUS_RADIUS = 6000 / MILLION_KM;\n        public static readonly float EARTH_RADIUS = 6371 / MILLION_KM;\n        public static readonly float MOON_RADIUS = 1737 / MILLION_KM;\n        public static readonly float MARS_RADIUS = 3376 / MILLION_KM;\n        public static readonly float MARS3_RADIUS = 2354 / MILLION_KM;\n        public static readonly float JUPITER_RADIUS = 69911 / MILLION_KM;\n        public static readonly float JUPITER2_RADIUS = 3987/ MILLION_KM;\n        public static readonly float SMALLPIRATEBASE2_RADIUS = 1524 / MILLION_KM;\n        public static readonly float SLAVERSBASE2_RADIUS = 1524 / MILLION_KM;\n        public static readonly float SATURN_RADIUS = 60268 / MILLION_KM;\n        public static readonly float URANUS_RADIUS = 25559 / MILLION_KM;\n        public static readonly float NEPTUNE_RADIUS = 24764 / MILLION_KM;\n        public static readonly float NEBULA_RADIUS = 1737 / MILLION_KM;\n        public static readonly float RUSSIANTRANSMITTER_RADIUS = 1735 / MILLION_KM;\n        public static readonly float SLAVERBASE_RADIUS = 1736 / MILLION_KM;\n\n        // Double the real size (gravity stuff etc...)\n        //public static readonly float SUN_RADIUS = EARTH_RADIUS * 109 * 2;\n\n        /*\n        public static readonly float MARS_SUN_DISTANCE = 230;\n        public static readonly float JUPITER_SUN_DISTANCE = 778;\n        public static readonly float SATURN_SUN_DISTANCE = 1400;\n        public static readonly float URANUS_SUN_DISTANCE = 3000;\n        public static readonly float NEPTUNE_SUN_DISTANCE = 4500;\n        */\n\n        //  This is sphere we map stars to (we don't use real distances because I am afraid of far clipping plane and float precision problems)\n        //  In millions of km\n        public const float CELESTIAL_SPHERE_RADIUS = 500;\n\n        public const float NEAR_PLANE_DISTANCE = 0.01f;\n        public const float FAR_PLANE_DISTANCE = CELESTIAL_SPHERE_RADIUS * 2;\n    }\n\n    static class MyHeadShakeConstants\n    {\n        public const float HEAD_SHAKE_AMOUNT_AFTER_GUN_SHOT = 2.6f;\n        public const float HEAD_SHAKE_AMOUNT_AFTER_EXPLOSION = 20;\n        public const float HEAD_SHAKE_AMOUNT_AFTER_PROJECTILE_HIT = 5;\n        public const float HEAD_SHAKE_AMOUNT_AFTER_SMOKE_PUSH = 2;\n\n        //  Sun wind head shaking\n        public const float HEAD_SHAKE_AMOUNT_DURING_SUN_WIND_MIN = 0;\n        public const float HEAD_SHAKE_AMOUNT_DURING_SUN_WIND_MAX = 1;\n    }\n\n    public enum MyDamageType\n    {\n        Unknown,\n        Explosion,\n        Rocket,\n        Bullet,\n        Mine,\n        Sunwind,\n        Drill,\n        Radioactivity\n    }\n\n    public enum MyAmmoType\n    {\n        Unknown,\n        Basic,\n        HighSpeed,\n        Piercing,\n        Biochem,\n        Explosive,\n        EMP,\n        None,\n    }\n\n    static class MyProjectilesConstants\n    {\n        //  Max count of active (aka flying) projectiles\n        public const int MAX_PROJECTILES_COUNT = 8192;\n        public const float HIT_STRENGTH_IMPULSE = 500;\n\n        public static readonly Vector3 EXPLOSIVE_PROJECTILE_TRAIL_COLOR = new Vector3(1.0f, 0.5f, 0.5f);\n        public static readonly Vector3 HIGH_SPEED_PROJECTILE_TRAIL_COLOR = new Vector3(10.0f, 10.0f, 10.0f);\n        public static readonly Vector3 BIOCHEM_PROJECTILE_TRAIL_COLOR = new Vector3(0.5f, 2.5f, 0.5f);\n        public static readonly Vector3 PIERCING_PROJECTILE_TRAIL_COLOR = new Vector3(0.5f, 0.5f, 1.5f);\n        public static readonly Vector3 EMP_PROJECTILE_TRAIL_COLOR = new Vector3(0.5f, 0.5f, 2.5f);\n\n        public static readonly float AUTOAIMING_PRECISION = 500.0f;\n    }\n\n    static class MyAutocanonConstants\n    {\n        //  How many times machine gun rotates while firing.\n        public const float ROTATION_SPEED_PER_SECOND = 2 * MathHelper.TwoPi;\n\n        //  How long it takes until autocanon stops rotating after last shot\n        public const int ROTATION_TIMEOUT = 2000;\n\n        //  Interval between two machine gun shots\n        public const int SHOT_INTERVAL_IN_MILISECONDS = 95;\n\n        //  Interval between two machine gun shots\n        public const int MIN_TIME_RELEASE_INTERVAL_IN_MILISECONDS = 204;\n\n        public static readonly float SHOT_PROJECTILE_DEBRIS_MAX_DEVIATION_ANGLE = MathHelper.ToRadians(30);\n\n        public static readonly float COCKPIT_GLASS_PROJECTILE_DEBRIS_MAX_DEVIATION_ANGLE = MathHelper.ToRadians(10);\n\n        public const int SMOKE_INCREASE_PER_SHOT = SHOT_INTERVAL_IN_MILISECONDS * 2 / SMOKES_INTERVAL_IN_MILISECONDS;\n        public const int SMOKE_DECREASE = 1;\n        public const int SMOKES_MAX = 50;\n        public const int SMOKES_MIN = 40;\n\n        //  This number is not dependent on rate of shoting. It tells how often we generate new smoke (if large, it will look ugly)\n        public const int SMOKES_INTERVAL_IN_MILISECONDS = 10;\n    }\n\n    static class MyMachineGunConstants\n    {\n        //Interval between two shots\n        public const float SHOT_INTERVAL_IN_MILISECONDS = 137;\n\n        //  this is time when we stop looping sound and play rel sound for machine gun\n        public const float RELEASE_TIME_AFTER_FIRE = 250;\n\n        public const int MUZZLE_FLASH_MACHINE_GUN_LIFESPAN = 40;\n    }\n\n    //Automatic_Rifle_With_Silencer\n    static class MyARSConstants\n    {\n        //Interval between two shots\n        public const float SHOT_INTERVAL_IN_MILISECONDS = 500;\n    }\n\n    //shotgun\n    static class MyShotgunConstants\n    {\n        // Interval beween two shots\n        public const float SHOT_INTERVAL_IN_MILISECONDS = 500.0f;\n\n        // Percentual reliability of explosive projectiles. Failed projectiles just smoke, not explode.\n        public const float EXPLOSIVE_PROJECTILE_RELIABILITY = 0.85f;\n\n        public const int PROJECTILE_GROUP_SIZE = 2;\n    }\n\n    static class MySniperConstants\n    {\n        //Interval between two shots\n        public const float SHOT_INTERVAL_IN_MILISECONDS = 1000;\n\n        //  Sniper gun should be very precise so add only minimal deviation\n        public static readonly float RIFLE_DEVIATE_PROJECTILE_DIRECTION_RANDOM_ANGLE = MathHelper.ToRadians(0.01f);\n    }\n\n    static class MyMissileConstants\n    {\n        //  We will generate smoke trail particles on missile's way. This number tells us how many particles per 1 meter.\n        public const float GENERATE_SMOKE_TRAIL_PARTICLE_DENSITY_PER_METER = 4f;\n\n        //  This number needs to be calculated in regard to max count of player, max count of missiles fired per second and timeout of each missile\n        public const int MAX_MISSILES_COUNT = 500;\n\n        public const int MISSILE_LAUNCHER_SHOT_INTERVAL_IN_MILISECONDS = 900;            //  Interval between two missile launcher shots\n        public const float MISSILE_BLEND_VELOCITIES_IN_MILISECONDS = 100.0f;\n        public const int MISSILE_TIMEOUT = 3 * 1000;       //  Max time missile can survive without hiting any object\n\n        public static readonly Vector4 MISSILE_LIGHT_COLOR = new Vector4(1.5f, 1.5f, 1.0f, 1.0f);       //  Alpha should be 1, because we draw flare billboard with it\n\n        public const int MISSILE_INIT_TIME = 10; //ms\n        public static readonly Vector3 MISSILE_INIT_DIR = MyMwcUtils.Normalize(new Vector3(0, 0, -1));\n\n        public const float MISSILE_MINIMAL_HIT_DOT = 0.8f; //1 is direct full hit, 0 is hit by side and -1 is hit by missile back hit\n\n        public const float HIT_STRENGTH_IMPULSE = 700000;\n\n        /// <summary>\n        /// The distance to check whether missile will collide soon after launch with something.\n        /// For more info, see ticket 3422.\n        /// </summary>\n        public const int DISTANCE_TO_CHECK_MISSILE_CORRECTION = 10;\n\n        public const float MISSILE_LIGHT_RANGE = 70;\n    }\n\n    class MyGuidedMissileConstants\n    {\n        //  We will generate smoke trail particles on missile's way. This number tells us how many particles per 1 meter.\n        public const float GENERATE_SMOKE_TRAIL_PARTICLE_DENSITY_PER_METER = 4f;\n\n        //  This number needs to be calculated in regard to max count of player, max count of missiles fired per second and timeout of each missile\n        public const int MAX_MISSILES_COUNT = 50;\n\n        public const int MISSILE_LAUNCHER_SHOT_INTERVAL_IN_MILISECONDS = 1000;            //  Interval between two missile launcher shots\n        public const float MISSILE_BLEND_VELOCITIES_IN_MILISECONDS = 400.0f; //time to get full speed from init speed\n        public const int MISSILE_TIMEOUT = 15 * 1000;       //  Max time missile can survive without hiting any object\n\n        public static readonly Vector4 MISSILE_LIGHT_COLOR = new Vector4(1.5f, 1.5f, 1.0f, 1.0f);       //  Alpha should be 1, because we draw flare billboard with it\n\n        public static float MISSILE_TURN_SPEED = 5.0f; //max radians per second\n\n        public const int MISSILE_INIT_TIME = 500; //ms\n        public static readonly Vector3 MISSILE_INIT_DIR = new Vector3(0, -0.5f, -10.0f);\n\n        public const float MISSILE_PREDICATION_TIME_TRESHOLD = 0.1f; //if time to hit is lower than this treshold, missille navigates directly to target\n\n        public const int MISSILE_TARGET_UPDATE_INTERVAL_IN_MS = 100;\n        public const float VISUAL_GUIDED_MISSILE_FOV = 40.0f;\n        public const float VISUAL_GUIDED_MISSILE_RANGE = 1000.0f;\n        public const float ENGINE_GUIDED_MISSILE_RADIUS = 200.0f;\n    }\n\n    static class MyMissileLauncherConstants\n    {\n        public const int GENERATE_SMOKE_TRAIL_PARTICLES_FOR_MILISECONDS = 250;\n        public const float GENERATE_SMOKE_TRAIL_PARTICLES_DENSITY_PER_METER = 0.5f;\n    }\n\n    static class MyCannonConstants\n    {\n        public const float DEVIATE_DIRECTION_RANDOM_ANGLE = 0.01f;\n        public const int SHOT_TIMEOUT = 5 * 1000;       //  Max time shot can survive without hiting any object\n        public const int SMOKE_TIMEOUT = SHOT_TIMEOUT;\n        public const float GENERATE_SMOKE_TRAIL_PARTICLE_DENSITY_PER_METER = 4f;\n        public const int SHOT_INTERVAL_IN_MILISECONDS = 500; // Interval between two shots \n    }\n\n    static class MyCannonShotConstants\n    {\n        //Special\n        public const float PROXIMITY_DETECTION_RADIUS = 5f;\n        public const int PROXIMITY_SHRAPNELS_COUNT = 20;\n        public const float BUSTER_PENETRATION_LENGTH = 50;//pz: adjusted from value 60 @ http://mantis.keenswh.com/view.php?id=938\n\n        public static readonly Vector4 LIGHT_COLOR = new Vector4(0.3f, 1.4f, 1.5f, 1.0f);       //  Alpha should be 1, because we draw flare billboard with it\n    }\n\n    static class MyUniversalLauncherConstants\n    {\n        public const bool USE_SPHERE_PHYSICS = true;\n        public const int MAX_SMARTMINES_COUNT = 20;\n        public const int MAX_BASICMINES_COUNT = 20;\n        public const int MAX_BIOCHEMMINES_COUNT = 20;\n        public const int MAX_SPHEREEXPLOSIVES_COUNT = 20;\n        public const int MAX_DECOYFLARES_COUNT = 20;\n        public const int MAX_FLASHBOMBS_COUNT = 20;\n        public const int MAX_ILLUMINATINGSHELLS_COUNT = 20;\n        public const int MAX_SMOKEBOMBS_COUNT = 20;\n        public const int MAX_ASTEROIDKILLERS_COUNT = 20;\n        public const int MAX_DIRECTIONALEXPLOSIVES_COUNT = 20;\n        public const int MAX_TIMEBOMBS_COUNT = 20;\n        public const int MAX_REMOTEBOMBS_COUNT = 20;\n        public const int MAX_GRAVITYBOMBS_COUNT = 20;\n        public const int MAX_HOLOGRAMS_COUNT = 10;\n        public const int MAX_REMOTECAMERAS_COUNT = 20;\n        public const int MAX_EMPBOMB_COUNT = 20;\n    }\n\n    static class MyMinerShipConstants\n    {\n        public static readonly Vector3 PLAYER_HEAD_MAX_SPRING_DISTANCE = new Vector3(0.10f, 0.05f, 0.1f);\n        public static readonly Vector3 PLAYER_HEAD_MAX_DISTANCE = new Vector3(0.15f, 0.08f, 0.2f);\n        public static readonly float PLAYER_HEAD_MAX_DISTANCE_LENGTH = PLAYER_HEAD_MAX_DISTANCE.Length();\n\n        public const float GUNS_SEPARATION_DISTANCE = 1.6f;\n        public const float GUNS_MOVE_BACKWARDS_DISTANCE = 2.0f;\n\n        public static readonly float MINER_SHIP_NEAR_LIGHT_RANGE = 160.0f;\n        public static readonly float MINER_SHIP_NEAR_LIGHT_INTENSITY = 1.0f;\n        public static readonly float MINER_SHIP_LIGHT_FALLOFF = 10;\n        public static readonly float MINER_SHIP_LIGHT_RADIUS_OUTSIDE_MODIFIER = 0.5f;\n\n        // Texture is applied to reflector, so texture is used to set proper intensity\n        public static readonly float MINER_SHIP_NEAR_REFLECTOR_INTENSITY = 1.0f;\n        public static readonly float MINER_SHIP_NEAR_REFLECTOR_FALLOFF = 5.0f;\n\n        public static readonly float MINER_SHIP_PLAYER_NEAR_LIGHT_RANGE_MULTIPLIER = 1.0f;\n\n        //public static readonly Vector4 MINER_SHIP_MUZZLE_FLASH_LIGHT_COLOR = new Vector4(4 * 1.0f, 4 * 0.7f, 4 * 0.0f, 1.0f);\n        public static readonly Vector4 MINER_SHIP_MUZZLE_FLASH_LIGHT_COLOR = new Vector4(3 * 255.0f / 255.0f, 3 * 227.0f / 255.0f, 3 * 125.0f / 255.0f, 1.0f);\n\n        public static readonly float MINER_SHIP_MUZZLE_FLASH_LIGHT_RANGE = MINER_SHIP_NEAR_LIGHT_RANGE;//60.0f;\n\n        public static readonly int MINER_SHIP_ENGINE_IDLE_CUE_DELAY_IN_MILLIS = 1340;//1480\n        public static readonly int MINER_SHIP_ENGINE_SWITCH_MIN_REPEAT_TRESHOLD = 1792;\n\n        public static readonly float MINER_SHIP_PROJECTILE_HIT_MULTIPLIER = 6.0f;\n        public static readonly float MINER_SHIP_PLAYER_PROJECTILE_HIT_MULTIPLIER = 10.0f;\n\n        /// <summary>\n        /// Represents player health loss value per second, if player doesn't have enough oxygen\n        /// </summary>\n        public static readonly float MINER_SHIP_PLAYER_NO_OXYGEN_HEALTH_LOSS = 2.0f;\n    }\n\n    static class MyModelsConstants\n    {\n        public const int MAX_ENTITIES_TO_DRAW = 2000;\n        public const float DEBRIS_FIELD_MAX_RENDER_DISTANCE = 3000;\n    }\n\n    static class MyInstancingConstants\n    {\n        public const int POINT_LIGHT_BUFFER_SIZE = 350;\n        public const int HEMISPHERIC_LIGHT_BUFFER_SIZE = 128;\n        public const int SPOT_LIGHT_BUFFER_SIZE = 128;\n        public const int SPOTSHIP_LIGHT_BUFFER_SIZE = 32;\n    }\n\n    static class MyExplosionsConstants\n    {\n        //  Max possible radius for explosions. This is for caching voxels during calculating explosions.\n        public const float EXPLOSION_RADIUS_MAX = 100;\n\n        //  Max number of explosions we can have in a scene. This number doesn't mean we will update/draw this explosions. It's just that we can hold so many explosions.\n        public const int MAX_EXPLOSIONS_COUNT = 256;\n\n        public const int EXPLOSION_DEBRIS_LIVING_MAX_IN_MILISECONDS = 7000;//4000;//8000;                                                  //  How long explosion debris object lives (in miliseconds)\n        public const int EXPLOSION_DEBRIS_LIVING_MIN_IN_MILISECONDS = 5000;//EXPLOSION_DEBRIS_VOXEL_LIVING_MAX_IN_MILISECONDS - 500;//2000;     //  How long explosion debris object lives (in miliseconds)\n\n        public const int MAX_EXPLOSION_DEBRIS_OBJECTS = MyFakes.MANY_DEBRIS ? 200 : 32;\n        public const int MIN_OBJECT_SIZE_TO_CAUSE_EXPLOSION_AND_CREATE_DEBRIS = 5;\n\n        // only approximate, will always be higher (see MyExplosionDebrisModel.GeneratePositions for usage)\n        public const int APPROX_NUMBER_OF_DEBRIS_OBJECTS_PER_MODEL_EXPLOSION = 3;\n        public const float EXPLOSION_DEBRIS_SPEED = 200.0f;\n\n        public const float OFFSET_LINE_FOR_DIRT_DECAL = 0.5f;\n\n        public const float EXPLOSION_STRENGTH_IMPULSE = 1000000;\n        public const float EXPLOSION_STRENGTH_ANGULAR_IMPULSE = 50000000;\n        public const float EXPLOSION_STRENGTH_ANGULAR_IMPULSE_PLAYER_MULTIPLICATOR = 0.25f;\n        public const float EXPLOSION_RADIUS_MULTPLIER_FOR_IMPULSE = 1f;          //  If we multiply this number by explosion radius (which is used for cuting voxels and drawing particles), we get radius for applying throwing force to surounding objects\n        public const float EXPLOSION_RADIUS_MULTPLIER_FOR_DIRT_GLASS_DECALS = 3;          //  If we multiply this number by explosion radius (which is used for cuting voxels and drawing particles), we get radius for applying dirt decals on ship glass\n        public const float EXPLOSION_RANDOM_RADIUS_MAX = 25;\n        public const float EXPLOSION_RANDOM_RADIUS_MIN = EXPLOSION_RANDOM_RADIUS_MAX * 0.8f;\n        public const int EXPLOSION_LIFESPAN = 700;\n        public const float EXPLOSION_CASCADE_FALLOFF = 0.33f; // for cascading explosions (e.g. missiles in a row), this is the explosion influence radius multiplier for each level of the cascade\n\n        //public static readonly Vector4 EXPLOSION_LIGHT_COLOR = new Vector4(154.0f / 255.0f * 6.0f, 83.0f / 255.0f * 6.0f, 63.0f / 255.0f * 6.0f, 1)\n        public static readonly Vector4 EXPLOSION_LIGHT_COLOR = new Vector4(3 * 248.0f / 255.0f, 3 * 179.0f / 255.0f, 3 * 12.0f / 255.0f, 1);\n\n        public const float CLOSE_EXPLOSION_DISTANCE = 15; // in meters. explosions closer than this value will look different\n\n        public const int FRAMES_PER_SPARK = 30; // Applies for full damage ratio (100%). 50% has half frequency of sparks etc. Lower value - more frequent sparks\n        public const float DAMAGE_SPARKS = 0.4f; // percentage for damage, above which spark effects get generated (e.g. for 0.4 -> when health is below 60%)\n        public const float EXPLOSION_FORCE_RADIUS_MULTIPLIER = 0.33f;\n\n        // prefabs that are supposed to have their explosion larger than this will have the 'huge' explosion particle effect\n        public const int EXPLOSION_EFFECT_SIZE_FOR_HUGE_EXPLOSION = 300;\n    }\n\n    static class MyLodConstants\n    {\n        //  After this distance we won't draw guns and gun muzzle. It is optimalization. You must be careful especially for muzzle, becuase that billboard is visible more than gun's model.\n        public const float MAX_DISTANCE_FOR_DRAWING_MINER_SHIP_GUNS = 100;\n        public const float MAX_DISTANCE_FOR_RANDOM_ROTATING_LARGESHIP_GUNS = 600;\n    }\n\n    static class MyLightsConstants\n    {\n        //  Max number of lights we can have in a scene. This number doesn't mean we will draw this lights. It's just that we can hold so many lights.\n        public const int MAX_LIGHTS_COUNT = 4000;\n\n        //  Max number of lights we use for sorting them. Only this many lights can be in influence distance.\n        //  This number doesn't have to be same as 'max for effect'. It should be more, so sorting can be nice.\n        //  Put there: 2 * 'max for effect'\n        public const int MAX_LIGHTS_COUNT_WHEN_DRAWING = 16;\n\n        //  This number tells us how many light can be enabled during drawing using one effect. \n        //  IMPORTANT: This number is also hardcoded inside of hlsl effect file.\n        //  IMPORTANT: So if you change it here, change it too in MyCommonEffects.fxh\n        //  It means, how many lights can player see (meaning light as lighted triangleVertexes, not light flare, etc).\n        public const int MAX_LIGHTS_FOR_EFFECT = 8;\n\n        // Maximum radius for all types of point lights. Any bigger value will assert\n        public const int MAX_POINTLIGHT_RADIUS = 120;\n\n        // Maximum bounding box diagonal for all types of spot lights. Any bigger value will assert\n        // Diagonal size is influented by spot range and spot cone (and also by current camera angle - because of AABB)\n        //public const int MAX_SPOTLIGHT_AABB_DIAGONAL = 2500;\n        public const float MAX_SPOTLIGHT_RANGE = 1200;\n        public const float MAX_SPOTLIGHT_SHADOW_RANGE = 200;\n        public const float MAX_SPOTLIGHT_SHADOW_RANGE_SQUARED = MAX_SPOTLIGHT_SHADOW_RANGE * MAX_SPOTLIGHT_SHADOW_RANGE;\n        public static readonly float MAX_SPOTLIGHT_ANGLE = 80;\n        public static readonly float MAX_SPOTLIGHT_ANGLE_COS = 1.0f - (float)Math.Cos(MathHelper.ToRadians(MAX_SPOTLIGHT_ANGLE));\n    }\n\n    static class MyGlobalEventsConstants\n    {\n        public const int GLOBAL_EVENTS_HOUR_RATIO = 100; //how many times will global event update per hour\n    }\n\n    static class MySunWindConstants\n    {\n        public const float SUN_COLOR_INCREASE_DISTANCE = 10000;\n        public const float SUN_COLOR_INCREASE_STRENGTH_MIN = 3;\n        public const float SUN_COLOR_INCREASE_STRENGTH_MAX = 4;\n\n        //  This is half of the sun wind's length, or in other words, it is distance from camera where sun wind starts, then \n        //  travels through camera and travels again to disapear. So full travel distance is two times this number.\n        public const float SUN_WIND_LENGTH_TOTAL = 60000;//MyConstants.FAR_PLANE_DISTANCE * 2;        \n        public const float SUN_WIND_LENGTH_HALF = SUN_WIND_LENGTH_TOTAL / 2;// MyConstants.FAR_PLANE_DISTANCE;\n\n        public static readonly MyMwcVector2Int LARGE_BILLBOARDS_SIZE = new MyMwcVector2Int(10, 10);\n        public static readonly MyMwcVector2Int LARGE_BILLBOARDS_SIZE_HALF = new MyMwcVector2Int(LARGE_BILLBOARDS_SIZE.X / 2, LARGE_BILLBOARDS_SIZE.Y / 2);\n        public const float LARGE_BILLBOARD_RADIUS_MIN = 10000;\n        public const float LARGE_BILLBOARD_RADIUS_MAX = 15000;\n        public const float LARGE_BILLBOARD_DISTANCE = 7500; //LARGE_BILLBOARD_RADIUS_MIN * 2;\n        public const float LARGE_BILLBOARD_POSITION_DELTA_MIN = -50;\n        public const float LARGE_BILLBOARD_POSITION_DELTA_MAX = 50;\n        public const float LARGE_BILLBOARD_ROTATION_SPEED_MIN = 0.5f;\n        public const float LARGE_BILLBOARD_ROTATION_SPEED_MAX = 1.2f;\n        public const float LARGE_BILLBOARD_DISAPEAR_DISTANCE = SUN_WIND_LENGTH_HALF * 0.9f;\n\n        public static readonly MyMwcVector2Int SMALL_BILLBOARDS_SIZE = new MyMwcVector2Int(20, 20);\n        public static readonly MyMwcVector2Int SMALL_BILLBOARDS_SIZE_HALF = new MyMwcVector2Int(SMALL_BILLBOARDS_SIZE.X / 2, SMALL_BILLBOARDS_SIZE.Y / 2);\n        public const float SMALL_BILLBOARD_RADIUS_MIN = 300;\n        public const float SMALL_BILLBOARD_RADIUS_MAX = 600;\n        public const float SMALL_BILLBOARD_DISTANCE = 330;\n        public const float SMALL_BILLBOARD_POSITION_DELTA_MIN = -50;\n        public const float SMALL_BILLBOARD_POSITION_DELTA_MAX = 50;\n        //public const float SMALL_BILLBOARD_MAX_DISTANCE_FROM_CENTER = LARGE_BILLBOARD_MAX_DISTANCE_FROM_CENTER;\n\n        public const float SMALL_BILLBOARD_ROTATION_SPEED_MIN = 1.4f;//0.06f;\n        public const float SMALL_BILLBOARD_ROTATION_SPEED_MAX = 2.5f;//0.10f;\n        public const int SMALL_BILLBOARD_TAIL_COUNT_MIN = 8;//28\n        public const int SMALL_BILLBOARD_TAIL_COUNT_MAX = 10;//30\n        public const float SMALL_BILLBOARD_TAIL_DISTANCE_MIN = 400;//300\n        public const float SMALL_BILLBOARD_TAIL_DISTANCE_MAX = 550;//450\n\n        public const float PARTICLE_DUST_DECREAS_DISTANCE = LARGE_BILLBOARD_DISAPEAR_DISTANCE;\n\n        public const float SWITCH_LARGE_AND_SMALL_BILLBOARD_RADIUS = 7000;\n        public const float SWITCH_LARGE_AND_SMALL_BILLBOARD_DISTANCE = 10000;//SMALL_BILLBOARD_TAIL_COUNT_MAX * SMALL_BILLBOARD_TAIL_DISTANCE_MAX * 0.8f;\n        public const float SWITCH_LARGE_AND_SMALL_BILLBOARD_DISTANCE_HALF = SWITCH_LARGE_AND_SMALL_BILLBOARD_DISTANCE / 3.0f;\n\n        public static readonly float FORCE_ANGLE_RANDOM_VARIATION_IN_RADIANS = MathHelper.ToRadians(70);\n        public const float FORCE_IMPULSE_RANDOM_MAX = 500000f;         //  This is only MAX value of random impulse, not exact impulse value.\n        public const float FORCE_IMPULSE_POSITION_DISTANCE = 1000;       //  This tells us how far from phys object is source. Too far means low throw impulse. Always in oposite direction of force.\n\n        public const float SPEED_MIN = 1300;\n        public const float SPEED_MAX = 1500;\n\n        public const float HEALTH_DAMAGE = 80;\n        public const float SHIP_DAMAGE = 50;\n\n        public const float SECONDS_FOR_SMALL_BILLBOARDS_INITIALIZATION = 1.0f;  // This is time in which all small billboards will have MaxDistance initialized\n        public const float RAY_CAST_DISTANCE = 30000; // We ignore all entities in ray cast except those that are x meters away from player\n    }\n\n    static class MyAudioConstants\n    {\n        public const float MUSIC_MASTER_VOLUME_MIN = 0;\n        public const float MUSIC_MASTER_VOLUME_MAX = 1;\n        public const float GAME_MASTER_VOLUME_MIN = 0;\n        public const float GAME_MASTER_VOLUME_MAX = 1;\n\n        public const float REVERB_MAX = 100;\n\n        // Multiple explosions sounds weird when set to 2\n        // Multiple explosions sounds ok when set to 7\n        public const int MAX_SAME_CUES_PLAYED = 7;\n\n        public const int PREALLOCATED_UNITED_SOUNDS_PER_PHYS_OBJECT = 100;\n\n        public const bool LIMIT_MAX_SAME_CUES = false;\n\n        public const int MAX_COLLISION_SOUNDS = 3; // per contact\n        public const int MAX_COLLISION_SOUNDS_PER_SECOND = 5; // per second\n\n        //  How many cues of same type can be played simultaneously. E.g. if 10 bullet hit cues should be played at once, only this number will be really played.\n        //public const int MAX_SAME_CUES_PLAYED = 3;\n\n        //  It doesn't seem to be good to limit cues... so I disabled it for a while.\n        //public const bool LIMIT_MAX_SAME_CUES = false;\n\n        //  Constants for calculating collision sound pitch\n        public const float MIN_DECELERATION_FOR_COLLISION_SOUND = 0;//-0.1f;\n        public const float MAX_DECELERATION = -1f;\n        public const float DECELERATION_MIN_VOLUME = 0.95f;//0.85f;\n        public const float DECELERATION_MAX_VOLUME = 1.0f;\n\n        //  This value must correspond to 'DistanceCurve' from XACT file.\n        public const float OCCLUSION_INTERVAL = 200.0f;\n        public const float MAIN_MENU_DECREASE_VOLUME_LEVEL = 0.5f;\n\n        //  This is used to duck player ship engine sound little bit, so that AI ships with same engine sounds are heard well(still, there is a bit of phasing happening, but it is ok at this decrease)\n        public const float PLAYER_SHIP_ENGINE_VOLUME_DECREASE_AMOUNT = 0.1f;\n        \n    }\n\n    static class MyDecalsConstants\n    {\n        public const int DECAL_BUFFERS_COUNT = 10;\n        public const int DECALS_FADE_OUT_INTERVAL_MILISECONDS = 1000;\n\n        public const int MAX_DECAL_TRIANGLES_IN_BUFFER = 128;\n        public const int MAX_DECAL_TRIANGLES_IN_BUFFER_SMALL = 128;\n        public const int MAX_DECAL_TRIANGLES_IN_BUFFER_LARGE = 32;\n\n        public const int TEXTURE_LARGE_MAX_NEIGHBOUR_TRIANGLES = 36;\n        public const float TEXTURE_LARGE_FADING_OUT_START_LIMIT_PERCENT = 0.7f;     //  Number of decal triangles for large texture (explosion smut). It's used for voxels and phys objects too.\n        public const float TEXTURE_LARGE_FADING_OUT_MINIMAL_TRIANGLE_COUNT_PERCENT = 1 - TEXTURE_LARGE_FADING_OUT_START_LIMIT_PERCENT;\n\n        public const int TEXTURE_SMALL_MAX_NEIGHBOUR_TRIANGLES = 32;\n        public const float TEXTURE_SMALL_FADING_OUT_START_LIMIT_PERCENT = 0.7f;      //  Number of decal triangles for small texture (bullet hole). It's used for voxels and phys objects too.\n        public const float TEXTURE_SMALL_FADING_OUT_MINIMAL_TRIANGLE_COUNT_PERCENT = 1 - TEXTURE_SMALL_FADING_OUT_START_LIMIT_PERCENT;\n\n        public const int VERTEXES_PER_DECAL = 3;\n        public static readonly float MAX_NEIGHBOUR_ANGLE = MathHelper.ToRadians(80);\n\n        //  This will how far or distance decals we have to draw. Every decal that is two times farest than reflector spot won't be drawn.\n        public const float MAX_DISTANCE_FOR_DRAWING_DECALS_MULTIPLIER_FOR_REFLECTOR = 2.0f;\n\n        //  Don't create decals if it is farther than this distance\n        public const float MAX_DISTANCE_FOR_ADDING_DECALS = 500;\n\n        //  Don't draw decals if it is farther than this distance\n        public const float MAX_DISTANCE_FOR_DRAWING_DECALS = 200;\n\n        //  We will draw large decals in larger distance\n        public const float DISTANCE_MULTIPLIER_FOR_LARGE_DECALS = 3.5f;\n\n        //  This value isn't really needed, because models doesn't have sun defined in triangles, but in shade per object\n        //  It's only because some parts of decals are same for voxels and I want this information not lost.\n        //public const byte SUN_FOR_MODEL_DECALS = 255;\n\n        public static readonly Vector4 PROJECTILE_DECAL_COLOR = new Vector4(1.0f, 0.6f, 0.1f, 0);\n\n        // These values give the percentage of how much we move decals in the direction of the dominant normal.\n        public const float DECAL_OFFSET_BY_NORMAL = 0.10f;\n        public const float DECAL_OFFSET_BY_NORMAL_FOR_SMUT_DECALS = 0.25f;\n    }\n\n    static class MyCockpitGlassConstants\n    {\n        //  This is min/max alpha to which we scale or lerp miner ship glass dirt level before rendering (we scale it from interval <0..1> to this one)\n        public const float GLASS_DIRT_MIN = 0.0f;//1.25f;\n        public const float GLASS_DIRT_MAX = 2.0f;//3.0f;\n    }\n\n    static class MyCockpitGlassDecalsConstants\n    {\n        public const int VERTEXES_PER_DECAL = 3;\n        public const int MAX_DECAL_TRIANGLES_IN_BUFFER = 3000;\n        public const int MAX_NEIGHBOUR_TRIANGLES = 2500;\n        public static readonly float MAX_NEIGHBOUR_ANGLE = MathHelper.ToRadians(30);        //  This angle is used only for bullet holes\n\n        //public static readonly Vector4 AMBIENT_GLASS_DECAL = new Vector4(0.15f, 0.15f, 0.15f, 1);\n        public const float NEAR_LIGHT_COLOR_MULTIPLIER = 0.25f;\n    }\n\n    static class MyCockpitInteriorConstants\n    {\n        public const float NEAR_LIGHT_COLOR_MULTIPLIER = 0.2f;\n        public const float SPECULAR_SHININESS = 0.5f;\n        public const float SPECULAR_SPECULAR_POWER = 10;\n    }\n\n    /*  Moved to MySector.ParticleDustProperties\n    static class MyParticlesDustFieldConstants\n    {\n        public const int DUST_FIELD_COUNT_IN_DIRECTION_HALF = 5;\n        public const int DUST_FIELD_COUNT_IN_DIRECTION = DUST_FIELD_COUNT_IN_DIRECTION_HALF * 2 + 1;\n        public const float DISTANCE_BETWEEN = 180;//30.0f;\n        public const float DISTANCE_BETWEEN_HALF = DISTANCE_BETWEEN / 2.0f;\n    } */\n\n    static class MyTransparentGeometryConstants\n    {\n        public const int MAX_TRANSPARENT_GEOMETRY_COUNT = 50000;\n\n        public const int MAX_PARTICLES_COUNT = (int)(MAX_TRANSPARENT_GEOMETRY_COUNT * 0.05f);\n        public const int MAX_NEW_PARTICLES_COUNT = (int)(MAX_TRANSPARENT_GEOMETRY_COUNT * 0.7f);\n        public const int MAX_COCKPIT_PARTICLES_COUNT = 30;      //  We don't need much cockpit particles\n\n        public const int TRIANGLES_PER_TRANSPARENT_GEOMETRY = 2;\n        public const int VERTICES_PER_TRIANGLE = 3;\n        public const int INDICES_PER_TRANSPARENT_GEOMETRY = TRIANGLES_PER_TRANSPARENT_GEOMETRY * VERTICES_PER_TRIANGLE;\n        //public const int VERTICES_PER_TRANSPARENT_GEOMETRY = INDICES_PER_TRANSPARENT_GEOMETRY;\n        public const int VERTICES_PER_TRANSPARENT_GEOMETRY = 4;\n        public const int MAX_TRANSPARENT_GEOMETRY_VERTICES = MAX_TRANSPARENT_GEOMETRY_COUNT * VERTICES_PER_TRANSPARENT_GEOMETRY;\n        public const int MAX_TRANSPARENT_GEOMETRY_INDICES = MAX_TRANSPARENT_GEOMETRY_COUNT * TRIANGLES_PER_TRANSPARENT_GEOMETRY * VERTICES_PER_TRIANGLE;\n\n        //  Use this for all SOFT particles: dust, explosions, smoke, etc. Value was hand-picked.\n        public const float SOFT_PARTICLE_DISTANCE_SCALE_DEFAULT_VALUE = 0.05f;\n\n        //  Use this for all particles that will be near an object and you practically don't want soft-particle effect on them. \n        //  It will make them HARD particles. Value was hand-picked.\n        public const float SOFT_PARTICLE_DISTANCE_SCALE_FOR_HARD_PARTICLES = 1000;\n\n        //Use this only for decal particles, which reside always close to depth, but not cut into it\n        public const float SOFT_PARTICLE_DISTANCE_DECAL_PARTICLES = 10000;\n    }\n\n    enum MyParticleEffectsIDEnum\n    {\n        Dummy = 0,\n\n        Prefab_LeakingFire_x2 = 8,\n        Prefab_LeakingBiohazard = 11,\n        Prefab_LeakingBiohazard2 = 12,\n        Prefab_LeakingSmoke = 14,\n        Prefab_Fire_Field = 15,\n\n        MeteorTrail_Smoke = 100,\n        MeteorTrail_FireAndSmoke = 101,\n\n        // damage effects\n        Damage_Sparks = 200,\n        Damage_Smoke = 201,\n        Damage_SmokeDirectionalA = 202,\n        Damage_SmokeDirectionalB = 203,\n        Damage_SmokeDirectionalC = 204,\n        Damage_SmokeBiochem = 205,\n\n        // prefab particle effects\n        Prefab_LeakingSteamWhite = 300,\n        Prefab_LeakingSteamGrey = 301,\n        Prefab_LeakingSteamBlack = 302,\n        Prefab_DustyArea = 303,\n        Prefab_EMP_Storm = 304,\n        Prefab_LeakingElectricity = 305,\n        Prefab_LeakingFire = 306,\n\n        // special ammunition\n        UniversalLauncher_DecoyFlare = 400,\n        UniversalLauncher_IlluminatingShell = 401,\n        UniversalLauncher_SmokeBomb = 402,\n\n        // drills\n        Drill_Laser = 450,\n        Drill_Saw = 451,\n        Drill_Nuclear_Original = 452,\n        Drill_Thermal = 453,\n        Drill_Nuclear = 454,        \n        Drill_Pressure_Charge = 455,\n        Drill_Pressure_Fire = 456,\n        Drill_Pressure_Impact = 457,\n        Drill_Pressure_Impact_Metal = 458,\n\n        // smoke\n        Smoke_Autocannon = 500,\n        Smoke_CannonShot = 501,\n        Smoke_Missile = 502,\n        Smoke_MissileStart = 503,\n        Smoke_LargeGunShot = 504,\n        Smoke_SmallGunShot = 505,\n        Smoke_DrillDust = 506,\n\n        // drilling and harvesting\n        Harvester_Harvesting = 550,\n        Harvester_Finished = 551,\n\n        // explosions\n        Explosion_Ammo = 600,\n        Explosion_Blaster = 601,\n        Explosion_Smallship = 604,\n        Explosion_Bomb = 605,\n        Explosion_Missile = 666,\n        Explosion_SmallPrefab = 607,\n        Explosion_Plasma = 630,\n        Explosion_Nuclear = 640,\n        Explosion_BioChem = 667,\n        Explosion_EMP = 669,\n        Explosion_Large = 3,\n        Explosion_Huge = 4,\n        Explosion_Asteroid = 6,\n        Explosion_Medium = 7,\n        \n\n        // Close versions of explosions\n        Explosion_Missile_Close = 616,\n\n        // asteroid reaction to explosion (billboard debris)\n        MaterialExplosion_Destructible = 650,\n\n        // projectile impact effects except for autocannon and shotgun\n        Hit_ExplosiveAmmo = 700,\n        Hit_ChemicalAmmo = 701,\n        Hit_HighSpeedAmmo = 702,\n        Hit_PiercingAmmo = 703,\n        Hit_BasicAmmo = 704,\n        Hit_EMPAmmo = 710,\n\n        // projectile impact for autocannon and shotgun\n        Hit_AutocannonBasicAmmo = 705,\n        Hit_AutocannonChemicalAmmo = 706,\n        Hit_AutocannonHighSpeedAmmo = 707,\n        Hit_AutocannonPiercingAmmo = 708,\n        Hit_AutocannonExplosiveAmmo = 709,\n        Hit_AutocannonEMPAmmo = 711,\n\n        // material reaction to projectile impact\n        MaterialHit_Destructible = 720,\n        MaterialHit_Indestructible = 721,\n        MaterialHit_Metal = 722,\n        MaterialHit_Autocannon_Destructible = 730,\n        MaterialHit_Autocannon_Indestructible = 731,\n        MaterialHit_Autocannon_Metal = 732,\n\n        // collisions\n        Collision_Smoke = 800,\n        Collision_Sparks = 801,\n\n        // thrusters\n        EngineThrust = 900,\n\n        // projectile trails\n        Trail_Shotgun = 950,\n\n        Explosion_Meteor = 951,\n    }\n\n    static class MyDummyPointConstants\n    {\n        /// <summary>\n        /// Default size of a dummy point when added in the editor.\n        /// </summary>\n        public const int DEFAULT_DUMMYPOINT_SIZE = 20;\n\n        /// <summary>\n        /// Multiplier for push force done by pushing particle effects (leaking steam, etc).\n        /// </summary>\n        public const float PUSH_STRENGTH = 1000;\n\n        /// <summary>\n        /// The size of the influence sphere of all particle effects that is used for detecting entities and for\n        /// determining the magnitude of the effect (push force, damage).\n        /// </summary>\n        public const int PARTICLE_DETECTOR_SIZE = 25;\n\n        /// <summary>\n        /// The maximum distance (squared) in meters for which the sound associated with the particle effect will still play.\n        /// </summary>\n        public const float MAX_SOUND_DISTANCE_SQUARED = 650 * 650;\n    }\n\n    static class MyNotificationConstants\n    {\n        public const int MAX_HUD_NOTIFICATIONS_COUNT = 100;\n        public static Vector2 DEFAULT_NOTIFICATION_MESSAGE_NORMALIZED_POSITION = new Vector2(0.5f, 0.75f);\n        public const int MAX_DISPLAYED_NOTIFICATIONS_COUNT = 5;\n    }\n\n    static class MyHudConstants\n    {\n        public const int MAX_HUD_RADAR_QUADS_COUNT = 16384;//2000;\n        public const int MAX_HUD_QUADS_COUNT = 2000;\n        public const int MAX_HUD_TEXTS_COUNT = 2000;//300;\n        public const int TRIANGLES_PER_HUD_QUAD = 2;            //  These are triangles for representing middle of the line\n        public const int VERTEXES_PER_HUD_QUAD = TRIANGLES_PER_HUD_QUAD * 3;\n        public const float HUD_LINE_THICKNESS_HALF = 0.0015f;//0.0025f;         //  Half of line thickness. It is something like radius.\n        //public const float HUD_BACK_CAMERA_LINE_THICKNESS_HALF = 1.5f * 0.0025f;         //  Half of line thickness. It is something like radius.\n\n        //public const float CROSSHAIR_SIZE = 0.0175f;\n        public const float DEFAULT_CROSSHAIR_SIZE = 0.035f * 0.75f;\n        public const float SPECIAL_CROSSHAIR_SIZE = 0.035f * 0.75f * 2f;\n        public const float OMNICORP_CROSSHAIR_SIZE = 0.035f * 0.75f * 2f * 0.8f;\n        public static readonly Vector2 RADAR_ZOOM_SIZE = new Vector2(0.055f / 2, 0.035f);\n\n        public const float HORISONTAL_ANGLE_LINE_POSITON_DELTA = 0.1f;\n\n        public const float DISTANCE_FOR_SECTOR_BORDER_WARNING = 3333;\n        public const float DISTANCE_FOR_SECTOR_BORDER_DRAW = 1.2f * DISTANCE_FOR_SECTOR_BORDER_WARNING;\n\n        public static readonly Color HUD_COLOR = new Color(180, 180, 180, 180);\n\n        public static readonly Color HUD_COLOR_DARKER = new Color(180, 180, 180, 180);//new Color(HUD_COLOR.ToVector4() * 0.7f);\n\n        public static readonly Color HUD_COLOR_LIGHT = new Color(255, 255, 255, 255);\n\n        //public static readonly Color HUD_TEXT_COLOR = HUD_COLOR;\n        public static readonly Color HUD_SECTOR_BOUNDARIES_DISTANCE_NOTIFICATION_COLOR = new Color(180, 20, 40, 180);\n\n        public static readonly Color HUD_BORDER_COLOR_BRIGHT = new Color(HUD_COLOR.ToVector4().X * 0.7f, HUD_COLOR.ToVector4().Y * 0.7f, HUD_COLOR.ToVector4().Z * 0.7f, 1);\n        public static readonly Color HUD_BORDER_COLOR_DARK = new Color(HUD_COLOR.ToVector4().X * 0.65f, HUD_COLOR.ToVector4().Y * 0.65f, HUD_COLOR.ToVector4().Z * 0.65f, 1);\n        public const float HUD_BORDER_THICK = 0.0015f;\n        public const float HUD_BORDER_THIN = 0.0015f;\n        public const float HUD_BORDER_STRIP = 0.05f;\n\n        public static readonly Color HUD_BACK_CAMERA_OVERLAY = new Color(HUD_COLOR.ToVector4().X * 0.3f, HUD_COLOR.ToVector4().Y * 0.3f, HUD_COLOR.ToVector4().Z * 0.3f, 0.65f);\n\n        public const float BACK_CAMERA_HEIGHT = 0.18f;\n        public const float BACK_CAMERA_ASPECT_RATIO = 1.6f;\n\n        public const float HUD_DIRECTION_INDICATOR_SIZE = 0.006667f;\n        public const float HUD_TEXTS_OFFSET = 0.01f;\n        public const float HUD_UNPOWERED_OFFSET = 0.01f;\n        public const float DIRECTION_INDICATOR_MAX_SCREEN_DISTANCE = 0.425f;\n        public const float DIRECTION_INDICATOR_MAX_SCREEN_TARGETING_DISTANCE = 0.25f;\n        public static readonly Vector2 DIRECTION_INDICATOR_SCREEN_CENTER = new Vector2(0.5f, 0.5f);\n\n        public static readonly Vector2 HUD_VECTOR_UP = new Vector2(0, -1);\n\n        //  HUD Radar        \n        public const float RADAR_MOVEMENT_DETECTOR_MIN_SPEED_TO_DETECT = 0.1f;\n        public const float RADAR_JAM_FROM_SUN_WIND_RADIUS = 500;\n        public const float RADAR_JAMMER_RANGE = 800;        \n        public const float RADAR_BLINKING_RANGE = 100;        \n        public const float RADAR_PLANE_RADIUS = 59;\n        public const float RADAR_ZOOM_STEP = 0.2f;\n        public const float RADAR_SECTOR_BORDER_REPOSITION = 0.8f;\n        public const float RADAR_ZOOM_MIN = 5f;      //  Scale 1 means without scaling, 3 means 3 times smaller\n        public const float RADAR_ZOOM_MAX = 100f;     //  Everything is 100 times smaller\n        public static readonly float RADAR_FIELD_OF_VIEW = MathHelper.ToRadians(45);//MathHelper.ToRadians(25);\n        public const float RADAR_ASPECT_RATIO = 1.3f;\n        public const float RADAR_PHYS_OBJECT_SIZE = 14f;\n        public const float RADAR_SECTOR_BORDER_BILLBOARD_SIZE = 105;\n        public const float RADAR_SUN_BILLBOARD_SIZE = 30;\n        public static readonly Vector3 ORIGINAL_CAMERA_POSITON = new Vector3(0, 50f, 170f);//new Vector3(0, 50f, 100f);//new Vector3(0, 100f, 300f);\n        public static readonly Color RADAR_SECTOR_BORDER_COLOR = new Color(0, 110, 0, 75);//Color.Green * (100.0f / 255.0f);\n\n        public static readonly Color PLAYER_MARKER_COLOR = new Color(0.0f, 0.0f, 0.7f, 1.0f);           //= Color.Blue; = new Color(1.0f,1.0f,1.0f,1.0f) = new Color(255,255,255,255)\n        public static readonly Color BOT_MARKER_COLOR = new Color(0.8f, 0.3f, 0.3f, 1.0f);              //= Color.Red;\n        public static readonly Color NEUTRAL_MARKER_COLOR = new Color(0.8f, 0.8f, 0.8f, 1.0f);          //= Color.Red;\n        public static readonly Color LARGESHIP_MARKER_COLOR = new Color(1.0f, 1.0f, 1.0f, 1.0f);        //= Color.White;\n        public static readonly Color FRIEND_MARKER_COLOR = new Color(0.0f, 0.7f, 0.0f, 1.0f);           //= Color.Green;\n        public static readonly Color MISSION_MARKER_COLOR = new Color(1,1,1, 1.0f);    //menim to z modre na bilou, Filip puvodni--->(0.0f, 0.55f, 1.0f, 1.0f);          .. Dark Orange \n        public static readonly Color MISSION_OPTIONAL_MARKER_COLOR = new Color(1.0f, 0.55f, 0.0f, 1.0f);    //menim to z modre na bilou, Filip puvodni--->(0.0f, 0.55f, 1.0f, 1.0f);          .. Dark Orange \n        public static readonly Color MISSION_MARKER_COLOR_BLUE = new Color(40, 141, 227, 255); \n\n\n        public static readonly Color ACTIVE_MISSION_SOLAR_MAP_COLOR = new Color(0.0f, 0.55f, 0.0f, 1.0f);      // Green marker for active mission\n        public static readonly Vector4 MISSION_CUBE_COLOR = new Vector4(1.0f, 1.0f, 1.0f, 1.0f)/* * 0.2f*/; // premultiplied alfa color for bounding cube\n        public static readonly Vector4 FRIEND_CUBE_COLOR = new Vector4(0.0f, 0.7f, 0.0f, 1.0f) * 0.2f;   // premultiplied alfa color for bounding cube\n        public static readonly Vector4 ENEMY_CUBE_COLOR = new Vector4(0.8f, 0.3f, 0.3f, 1.0f) * 0.2f;    // premultiplied alfa color for bounding cube\n        public static readonly Vector4 NEUTRAL_CUBE_COLOR = new Vector4(0.8f, 0.8f, 0.8f, 1.0f) * 0.2f;  // premultiplied alfa color for bounding cube\n\n        public static MyGuiFont MISSION_FONT\n        {\n            get { return MyGuiManager.GetFontMinerWarsBlue(); }\n        }\n        public static MyGuiFont FRIEND_FONT\n        {\n            get { return MyGuiManager.GetFontMinerWarsGreen(); }\n        }\n        public static MyGuiFont NEUTRAL_FONT\n        {\n            get { return MyGuiManager.GetFontMinerWarsWhite(); }\n        }\n        public static MyGuiFont ENEMY_FONT\n        {\n            get { return MyGuiManager.GetFontMinerWarsRed(); }\n        }\n\n        public const float PLAYER_MARKER_MULTIPLIER = 0.3f;\n        //public static readonly Vector3 ORIGINAL_CAMERA_POSITON_2D_SECOND_DRAW = new Vector3(0, 300f, 300f);\n        public const float RADAR_BOUNDING_BOX_SIZE = 3000;\n        public const float RADAR_BOUNDING_BOX_SIZE_HALF = RADAR_BOUNDING_BOX_SIZE / 2.0f;\n        public const float DIRECTION_TO_SUN_LINE_LENGTH = 100;\n        public const float DIRECTION_TO_SUN_LINE_LENGTH_HALF = DIRECTION_TO_SUN_LINE_LENGTH / 0.7f;\n        public const float DIRECTION_TO_SUN_LINE_THICKNESS = 0.7f;\n        public const float NAVIGATION_MESH_LINE_THICKNESS = 3f;\n        public const float NAVIGATION_MESH_DISTANCE = 100;\n        public const int NAVIGATION_MESH_LINES_COUNT_HALF = 10;\n        public const float RADAR_SPHERE_RADIUS = MyHudConstants.RADAR_PHYS_OBJECT_SIZE * 3.8f;\n        public static readonly Color HUD_RADAR_BACKGROUND_COLOR = new Color(HUD_COLOR.ToVector4().X * 0.1f, HUD_COLOR.ToVector4().Y * 0.1f, HUD_COLOR.ToVector4().Z * 0.1f, 0.9f);\n        public static readonly Color HUD_RADAR_BACKGROUND_COLOR2D = Color.White;\n        public static readonly Vector3 HUD_RADAR_PHYS_OBJECT_POINT_DELTA = new Vector3(0, 0, 1);    //  Every phys object point on radar must be a bit closer to camera so then it's not behind the vertical line\n        public const int MIN_RADAR_TYPE_SWITCH_TIME_MILLISECONDS = 500;\n\n        public static Color HUD_STATUS_BACKGROUND_COLOR = new Color(0.482f, 0.635f, 0.643f, 0.35f);\n        public static Color HUD_STATUS_DEFAULT_COLOR = new Color(1.0f, 1.0f, 1.0f, 1.0f);\n        public static Color HUD_STATUS_BAR_COLOR_GREEN_STATUS = new Color(124, 174, 125, 205);//new Color(57, 113, 73, 255);\n        public static Color HUD_STATUS_BAR_COLOR_YELLOW_STATUS = new Color(218, 213, 125, 205);//new Color(218, 213, 125, 255);//new Color(238, 190, 15, 255);\n        public static Color HUD_STATUS_BAR_COLOR_ORANGE_STATUS = new Color(236, 163, 97, 205);//new Color(247, 208, 123, 255);//new Color(247, 143, 43, 255);\n        public static Color HUD_STATUS_BAR_COLOR_RED_STATUS = new Color(187, 0, 0, 205);//new Color(187, 62, 56, 255);//new Color(187, 30, 35, 255);\n        public const float HUD_STATUS_BAR_COLOR_GRADIENT_OFFSET = 2.0f;\n\n        public static Vector2 HUD_STATUS_POSITION = new Vector2(0.02f, -0.02f);\n        public static Vector2 HUD_MISSIONS_POSITION = new Vector2(-0.02f, 0.02f);\n        //        public static Vector2 HUD_STATUS_SIZE = new Vector2(0.05f, 0.05f);\n        public static Vector2 HUD_STATUS_ICON_SIZE = new Vector2(0.012f, 0.01f) * 0.85f;\n        public static Vector2 HUD_STATUS_SPEED_ICON_SIZE = new Vector2(0.0145f, 0.0145f);\n        //public static Vector2 HUD_STATUS_BAR_SIZE = new Vector2(HUD_STATUS_ICON_SIZE.X / 2.0f, HUD_STATUS_ICON_SIZE.Y / 2.0f);\n        public static Vector2 HUD_STATUS_BAR_SIZE = new Vector2(0.0095f, 0.006f);\n        public const float HUD_STATUS_ICON_DISTANCE = 0.0075f;//0.012f / 2.0f;\n        //public const float HUD_STATUS_BAR_DISTANCE = 0.005f;\n        public const float HUD_STATUS_BAR_DISTANCE = 0.0010f;\n        public const int HUD_STATUS_BAR_MAX_PIECES_COUNT = 5;\n\n        public const int PREFAB_PREVIEW_SIZE = 128;\n\n        public static readonly Vector2 LOW_FUEL_WARNING_POSITION = new Vector2(0.5f, .65f);\n\n        public const float HUD_MAX_DISTANCE_ENEMIES = 2500f;\n        public const float HUD_MAX_DISTANCE_NORMAL = 800f;\n        public const float HUD_MAX_DISTANCE_ALPHA = 0.2f;\n        public const float HUD_MIN_DISTANCE_ALPHA = 1f;\n        public const float HUD_MAX_DISTANCE_TO_ALPHA_CORRECT_NORMAL = HUD_MAX_DISTANCE_NORMAL;\n        public const float HUD_MAX_DISTANCE_TO_ALPHA_CORRECT_ENEMIES = HUD_MAX_DISTANCE_ENEMIES;\n        public const float HUD_MIN_DISTANCE_TO_ALPHA_CORRECT = 50f;\n\n        public const float GPS_SEGMENT_ADVANCE = 13;\n        public const float GPS_SEGMENT_LENGTH = 14;\n        public const float GPS_SEGMENT_WIDTH = 2;\n        public const float GPS_DOT_WIDTH = 2.25f; // upravuju velikost gps koule, Filip  // taky, Honza K\n        public const float GPS_DOT_OFFSET = 0.18f - 1; // 0.07f;  // upravuju posun gps koule, Filip  // taky, Honza K\n        public const int GPS_DURATION = 7000;\n        public const int GPS_FADE_OUT_DURATION = 2000;     // part of GPS_DURATION\n        public const float GPS_FADE_IN_SPEED = 1000;        // m/s\n        public const float GPS_FADE_IN_TAIL_LENGTH = 400;  // m\n        public const float GPS_FADE_OUT_DISTANCE_START = 800f;\n        public const float GPS_FADE_OUT_DISTANCE_END = 4000f;\n\n        public const float GPS_PULSE_LENGTH_FREQ = 0.0162f;\n        public const float GPS_PULSE_TIME_FREQ = 0.0054f;\n        public const float GPS_PULSE_TIME_PHASE = 2.5f;\n        public const float GPS_FADE_PULSE_DC = 0.7f;\n        public const float GPS_FADE_PULSE_AMPLITUDE = 1 - GPS_FADE_PULSE_DC;\n        public const float GPS_WIDTH_PULSE_DC = 1f;\n        public const float GPS_WIDTH_PULSE_AMPLITUDE = 0.2f;\n\n        //public static readonly Vector4 GPS_COLOR = new Vector4(0.1f, 0.1f, 0.1f, 0.1f);\n        public const float GPS_START_POSITION_FRONT = 80;\n        public const float GPS_START_POSITION_UP = -5;\n\n\n        public static readonly Vector2 DIALOGUE_ACTORTEXTURE_POSITION = new Vector2(0.2145f, 0.924f);\n        public static readonly Vector2 DIALOGUE_ACTORTEXTURE_SIZE = new Vector2(0.0525f, 0.087f);\n        \n        public static readonly Vector2 DIALOGUE_BACKGROUND_POSITION = new Vector2(0.5f, 0.93f);\n        public static readonly Vector2 DIALOGUE_BACKGROUND_SIZE = new Vector2(0.6551868f, 0.15367033f);\n\n        public const float DIALOGUE_TEXTAREA_FONT_SIZE = 0.75f;\n        public static readonly Vector2 DIALOGUE_TEXTAREA_POSITION = new Vector2(0.502f, 0.934f);\n        public static readonly Vector2 DIALOGUE_TEXTAREA_SIZE = new Vector2(0.500f, 0.08f);\n\n        public const float DIALOGUE_ACTORNAME_FONT_SIZE = 0.75f;\n        public static readonly Vector2 DIALOGUE_ACTORNAME_POSITION = new Vector2(0.380f, 0.886f);\n        public static readonly Vector2 DIALOGUE_ACTORNAME_SIZE = new Vector2(0.25f, 0.03f);\n\n        public static Color SOLAR_MAP_STORY_MISSION_MARKER_COLOR = Color.CornflowerBlue;\n        public static Color SOLAR_MAP_SIDE_MISSION_MARKER_COLOR = Color.LightGray;\n        public static Color SOLAR_MAP_TEMPLATE_MISSION_MARKER_COLOR = Color.LightGray;\n        public static Color SOLAR_MAP_PLAYER_MARKER_COLOR = Color.LightGreen;\n    }\n\n    static class MyShadowConstants\n    {\n        //  This is value in shadow map when it has no shadow, so full sun light is present at that place\n        public const byte SHADOW_EMPTY_AS_BYTE = 255;\n        public const float SHADOW_EMPTY_AS_FLOAT = (float)SHADOW_EMPTY_AS_BYTE;\n\n        //  How many voxels make ony shadow cell\n        public const int SHADOW_ENTITY_SIZE_IN_VOXELS = 2;\n\n        public const float SHADOW_ENTITY_SIZE_IN_METERS = SHADOW_ENTITY_SIZE_IN_VOXELS * MyVoxelConstants.VOXEL_SIZE_IN_METRES;\n        public const float SHADOW_ENTITY_SIZE_IN_METERS_HALF = SHADOW_ENTITY_SIZE_IN_METERS / 2.0f;\n\n        //  How many meters will shadow area exceed behind occluder's end (in positive Z direction)\n        //  In fact it should be infinite, but I just don't want extremely long shadows\n        public const float SHADOW_EXCEEDS_IN_POSITIVE_Z_DIRECTION_IN_METERS = 10000;\n\n        //  How many shadow values we average when calculating averaged shadows. This number is for each side of shadow-grid, thus final grid is e.g. 4x4x4\n        public const int AVERAGED_SHADOW_SIZE_IN_SHADOW_ENTITIES = MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS / SHADOW_ENTITY_SIZE_IN_VOXELS;\n    }\n\n    static class MyVoxelMapImpostorsConstants\n    {\n        public const float RANDOM_COLOR_MULTIPLIER_MIN = 0.9f;\n        public const float RANDOM_COLOR_MULTIPLIER_MAX = 1.0f;\n\n        public const int TRIANGLES_PER_IMPOSTOR = 2;\n        public const int VERTEXES_PER_IMPOSTOR = TRIANGLES_PER_IMPOSTOR * 3;\n    }\n\n    static class MyDistantObjectsImpostorsConstants\n    {\n        public const int MAX_NUMBER_DISTANT_OBJECTS = 50;\n        public const float MAX_MOVE_DISTANCE = .00045f;\n        public static readonly float DISTANT_OBJECTS_SPHERE_RADIUS = MyMwcSectorConstants.SECTOR_DIAMETER * 2.5f;\n        public const float RANDOM_COLOR_MULTIPLIER_MIN = 0.9f;\n        public const float RANDOM_COLOR_MULTIPLIER_MAX = 1.0f;\n        public const float BLINKER_FADE = .005f;\n        public const float EXPLOSION_FADE = .02f;\n        public const float EXPLOSION_WAIT_MILLISECONDS = 1000f;\n        public const float BLINKER_WAIT_MILLISECONDS = 1500f;\n        public const float EXPLOSION_MOVE_DISTANCE = .01f;\n        public const int TRIANGLES_PER_IMPOSTOR = 2;\n        public const int VERTEXES_PER_IMPOSTOR = TRIANGLES_PER_IMPOSTOR * 3;\n    }\n\n    static class MyVoxelConstants\n    {\n        // Size of dictionary for storing finished multimaterials\n        // This number should be between 1 and NumberOfMaterials^3\n        // Good number is to think about maximal number of materials per voxel map in normal case, like 10, and than put here number^3\n        // When this number is insufficient, there will be one-time reallocation\n        public const int DEFAULT_MULTIMATERIAL_CACHE_SIZE = 1000;\n\n        //  This is max number of cell contents (mixed cells).\n        // Decreased to 120K, 150K eat to much memory, best would be to decrease even more\n        public const int PREALLOCATED_CELL_CONTENTS_COUNT = MyFakes.MWBUILDER ? 300000 : 120000;//30000;//75000;//100000;\n\n        //  How many batches (combination of texture / vertex buffer / m_notCompressedIndex buffer) is preallocated for each render cell.\n        //  If we will need more, list will be grown automatically, so this is just initial capacity.\n        public const int PREALLOCATED_RENDER_CELL_BATCHES = 32;\n\n        //  This is max number of triangles we can hold in temporal buffer when calculating JLX collisions\n        //  between box/sphere and voxel maps. This are potential triangles where bounding box was intersected.\n        public const int MAX_POTENTIAL_COLDET_TRIANGLES_COUNT = 2048;\n\n        //  Size of voxel's cell cache\n        public const int VOXEL_DATA_CELL_CACHE_SIZE = 32768;//50 * 256 / 8 * 256 / 8 * 256 / 8 * 2;\n        public const int VOXEL_RENDER_CELL_CACHE_SIZE = 16384;//10000;//256 / 8 * 256 / 8 * 256 / 8 * 2;\n\n        //  This is the value that says if voxel is full or not (but only for marching cubes algorithm, not path-finding, etc)\n        //  It's the middle of 0 and 255\n        public const byte VOXEL_ISO_LEVEL = 127;\n        public const float VOXEL_ISO_LEVEL_FLOAT = (float)VOXEL_ISO_LEVEL / 255.0f;\n\n        //  Value of voxel's content if voxel is empty\n        public const byte VOXEL_CONTENT_EMPTY = 0;\n        public const float VOXEL_CONTENT_EMPTY_FLOAT = (float)VOXEL_CONTENT_EMPTY;\n\n        //  Value of voxel's content if voxel is full\n        public const byte VOXEL_CONTENT_FULL = 255;\n        public const float VOXEL_CONTENT_FULL_FLOAT = (float)VOXEL_CONTENT_FULL;\n\n        //  This is the scale we multiply voxel size when drawing it as cube (it's because if we set it to 1.0, we won't see holes between voxels)\n        public const float VOXEL_DRAW_AS_CUBE_SCALE = 0.8f;\n\n        //  Size of a voxel in metres\n        public const float VOXEL_SIZE_IN_METRES = (MyFakes.MWBUILDER ? 2.0f : 15);//7.5f;//5f;//1.0f;//10.0f;\n        public const float VOXEL_SIZE_IN_METRES_HALF = VOXEL_SIZE_IN_METRES / 2.0f;\n        public static readonly Vector3 VOXEL_SIZE_VECTOR = new Vector3(VOXEL_SIZE_IN_METRES, VOXEL_SIZE_IN_METRES, VOXEL_SIZE_IN_METRES);\n        public static readonly Vector3 VOXEL_SIZE_VECTOR_HALF = VOXEL_SIZE_VECTOR / 2.0f;\n        public static readonly float VOXEL_RADIUS = VOXEL_SIZE_VECTOR_HALF.Length();\n\n        //  How many data cells can fit in one render cell, in one direction\n        public const int VOXEL_DATA_CELLS_IN_RENDER_CELL_SIZE = MyFakes.REDUCED_RENDER_CELL_SIZE ? 4 : 8;\n\n        //  Total number of data cell in render cell (something like 8x8x8)\n        public const int VOXEL_RENDER_CELL_SIZE_IN_DATA_CELLS_TOTAL = VOXEL_DATA_CELLS_IN_RENDER_CELL_SIZE * VOXEL_DATA_CELLS_IN_RENDER_CELL_SIZE * VOXEL_DATA_CELLS_IN_RENDER_CELL_SIZE;\n\n        //  Max. count of triangles in a voxel cell. This number is used to pre-allocate triangleVertexes arrays and vertex buffers.\n        //  Number 5 comes from marching cubes. It's max count of triangles in a poligonization cube.\n        public const int MAX_TRIANGLES_COUNT_IN_VOXEL_DATA_CELL = VOXEL_DATA_CELL_SIZE_IN_VOXELS * VOXEL_DATA_CELL_SIZE_IN_VOXELS * VOXEL_DATA_CELL_SIZE_IN_VOXELS * 5;\n\n        //  Size of a voxel data cell in voxels (count of voxels in a voxel data cell) - in one direction\n        //  Assume it's a power of two!\n        public const int VOXEL_DATA_CELL_SIZE_IN_VOXELS_BITS = 3;\n        public const int VOXEL_DATA_CELL_SIZE_IN_VOXELS = 1 << VOXEL_DATA_CELL_SIZE_IN_VOXELS_BITS;\n        public const int VOXEL_DATA_CELL_SIZE_IN_VOXELS_MASK = VOXEL_DATA_CELL_SIZE_IN_VOXELS - 1;\n\n        //  Total number of voxel in one data cell\n        public const int VOXEL_DATA_CELL_SIZE_IN_VOXELS_TOTAL = VOXEL_DATA_CELL_SIZE_IN_VOXELS * VOXEL_DATA_CELL_SIZE_IN_VOXELS * VOXEL_DATA_CELL_SIZE_IN_VOXELS;\n\n        //  Size of a voxel data cell in metres (and its half version)\n        public const float VOXEL_DATA_CELL_SIZE_IN_METRES = VOXEL_DATA_CELL_SIZE_IN_VOXELS * VOXEL_SIZE_IN_METRES;\n        public static readonly Vector3 VOXEL_DATA_CELL_SIZE_VECTOR_IN_METRES = new Vector3(VOXEL_DATA_CELL_SIZE_IN_METRES, VOXEL_DATA_CELL_SIZE_IN_METRES, VOXEL_DATA_CELL_SIZE_IN_METRES);\n        public static readonly Vector3 VOXEL_DATA_CELL_SIZE_HALF_VECTOR_IN_METRES = VOXEL_DATA_CELL_SIZE_VECTOR_IN_METRES / 2.0f;\n        public const float VOXEL_DATA_CELL_SIZE_IN_METRES_HALF = VOXEL_DATA_CELL_SIZE_IN_METRES / 2.0f;\n        public static readonly float VOXEL_DATA_CELL_RADIUS = VOXEL_DATA_CELL_SIZE_HALF_VECTOR_IN_METRES.Length();\n\n        //  Size of a voxel render cell in voxels (count of voxels in a voxel render cell)\n        public const int VOXEL_RENDER_CELL_SIZE_IN_VOXELS = VOXEL_DATA_CELL_SIZE_IN_VOXELS * VOXEL_DATA_CELLS_IN_RENDER_CELL_SIZE;\n\n        //  Size of a voxel render cell in metres (and its half version)\n        public const float VOXEL_RENDER_CELL_SIZE_IN_METRES = VOXEL_RENDER_CELL_SIZE_IN_VOXELS * VOXEL_SIZE_IN_METRES;\n        public const float VOXEL_RENDER_CELL_SIZE_IN_METRES_HALF = VOXEL_RENDER_CELL_SIZE_IN_METRES / 2.0f;\n        public static readonly Vector3 VOXEL_RENDER_CELL_SIZE_VECTOR_IN_METRES = new Vector3(VOXEL_RENDER_CELL_SIZE_IN_METRES, VOXEL_RENDER_CELL_SIZE_IN_METRES, VOXEL_RENDER_CELL_SIZE_IN_METRES);\n        public static readonly Vector3 VOXEL_RENDER_CELL_SIZE_HALF_VECTOR_IN_METRES = VOXEL_RENDER_CELL_SIZE_VECTOR_IN_METRES / 2.0f;\n        public static readonly float VOXEL_RENDER_CELL_RADIUS = VOXEL_RENDER_CELL_SIZE_HALF_VECTOR_IN_METRES.Length();\n\n        //  Max number of materials we can have in one voxel map (so max material m_notCompressedIndex is one less than this number)\n        //public const int MAX_MATERIALS_PER_VOXEL_MAP = 8;//31;//4;//10;//32;//6;\n\n        //  Initial sum of all voxels in a cell\n        public const int VOXEL_CELL_CONTENT_SUM_TOTAL = VOXEL_DATA_CELL_SIZE_IN_VOXELS * VOXEL_DATA_CELL_SIZE_IN_VOXELS * VOXEL_DATA_CELL_SIZE_IN_VOXELS * VOXEL_CONTENT_FULL;\n\n        //  How many voxels can have one voxel map in one direction. This const isn't really needed, we just need some \n        //  offsets for voxel cell hash code calculations, so if you need to enlarge it, do so.\n        public const int MAX_VOXEL_MAP_SIZE_IN_VOXELS = 10 * 1024;\n        public const double MAX_VOXEL_MAPS_DATA_CELL_COUNT = MyFakes.MWBUILDER ? 1024*1024*1024 :  1.5 * (512 / VOXEL_DATA_CELL_SIZE_IN_VOXELS * 512 / VOXEL_DATA_CELL_SIZE_IN_VOXELS * 512 / VOXEL_DATA_CELL_SIZE_IN_VOXELS);\n        public const Int64 MAX_VOXEL_MAP_ID = 1024;\n        public const int MAX_SORTED_VOXEL_MAPS_COUNT = 100;\n\n        //  This is the version of actually supported voxel file\n        public const int VOXEL_FILE_ACTUAL_VERSION = 1;\n\n        public static int MAX_VOXEL_HAND_SHAPES_COUNT = MyMwcFinalBuildConstants.GetValueForBuildType(5000, 5000, 30000);\n\n        // When softening voxels using voxel hand, this is default soften weight amount\n        public const float DEFAULT_SOFTEN_WEIGHT = 0.5f;\n\n        // When wrinkling voxels using voxel hand, this is default wrinkle weight amount\n        public const float DEFAULT_WRINKLE_WEIGHT_ADD = 0.5f;\n        public const float DEFAULT_WRINKLE_WEIGHT_REMOVE = 0.45f;\n\n        //public const int MIN_VOXEL_HAND_SPHERE_RADIUS = 1;\n        //public const int MAX_VOXEL_HAND_SPHERE_RADIUS = 500;\n        public const float VOXEL_HAND_SIZE_STEP = 2.0f;\n        public const float MIN_VOXEL_HAND_SIZE = 1.0f;\n        public const float MAX_VOXEL_HAND_SIZE = MyFakes.MWBUILDER ? 1000.0f : 1000.0f;\n        public const float DEFAULT_VOXEL_HAND_SIZE = 50.0f;\n\n        public const float VOXEL_HAND_DISTANCE_STEP = 0.05f;\n        public const float MAX_VOXEL_HAND_DISTANCE = 1000.0f;\n        public const float MIN_VOXEL_HAND_DISTANCE = 0.5f;\n        public const float DEFAULT_VOXEL_HAND_DISTANCE = 200.0f;\n        public const float MAX_PROJECTED_VOXEL_HAND_OFFSET = 1.5f;\n        public const float MIN_PROJECTED_VOXEL_HAND_OFFSET = -1.5f;\n        public const float DEFAULT_PROJECTED_VOXEL_HAND_OFFSET = 0.0f;\n\n        public const float VOXEL_HAND_CUBOID_LENGT_SIZE_RATIO = 3.0f;\n        public const bool VOXEL_HAND_DRAW_CONE = true;\n\n        public const int VOXEL_HAND_SHAPING_INTERVAL = 500; //in ms\n\n        //public const int VOXEL_MAP_MAX_ORE_DEPOSITS = 1024*64*64*64;\n        public const int VOXEL_MAP_ORE_DEPOSIT_CELL_IN_DATA_CELLS = 1;\n    }\n\n    static class MyVertexCompression    // These values must be changed also in shader\n    {\n        public const int VOXEL_OFFSET = 32767;                           // Offset to add to coordinates when mapping voxel from float<0, 8191> to short<-32767, 32767>.\n        public const int VOXEL_MULTIPLIER = 8;                           // Multiplier for mapping voxel from float to short.\n        public const float INV_VOXEL_MULTIPLIER = 1.0f / VOXEL_MULTIPLIER;\n        public const float VOXEL_COORD_EPSILON = INV_VOXEL_MULTIPLIER / 2;  // Due to rounding errors we must add VOXEL_COORD_EPSILON to coordinates when converting from float to short.\n        public const int AMBIENT_MULTIPLIER = 32767;                     // Multiplier for mapping value from float<-1, 1> to short<-32767, 32767>.\n        public const float INV_AMBIENT_MULTIPLIER = 1.0f / AMBIENT_MULTIPLIER;\n    }\n\n    static class MyLargeShipConstants\n    {\n        public const int MAX_LARGE_SHIPS_COUNT_IN_SECTOR = 20; //final value should be around 30\n    }\n\n    static class MyLargeShipWeaponsConstants\n    {\n        public static bool Enabled = true;\n        public const string MUZZLE_FLASH_NAME_ONE = \"MUZZLE_FLASH\";\n        public const string MUZZLE_FLASH_NAME_MODE = \"MUZZLE_FLASH_\";\n        public const float WARNING_DAMAGE_ALERT_LEVEL = 0.3f;           // precentage\n        public const float MAX_ROTATION_UPDATE_DISTANCE = 200.0f;\n        public const float MIN_SEARCHING_DISTANCE = 10.0f; //meters\n        public const float MAX_SEARCHING_DISTANCE = 2500.0f; //meters\n        public const float AIMING_SOUND_DELAY = 120.0f; //ms\n        public const float ROTATION_AND_ELEVATION_MIN_CHANGE = 0.007f; //rad\n        public const float ROTATION_SPEED = 0.002f; //rad per update\n        public const float ELEVATION_SPEED = 0.002f; //rad per update\n        public const float MAX_HUD_DISTANCE = 1000;\n    }\n\n    static class MyWaypointConstants\n    {\n        public const int MAXIMUM_WAYPOINT_PATH_NAME_LENGTH = 16;\n        public const int MINIMUM_ASTEROID_DIAGONAL_LENGTH_TO_GENERATE_WAYPOINTS = 200;\n        public const int MAXIMUM_BOX_DISTANCE_TO_INTERESTING_STUFF_TO_GENERATE_WAYPOINTS = 3000;\n        // NEVER increase this from 15000 without discussing it first.\n        public const int MAX_WAYPOINTS = 15000;\n    }\n\n\n    static class MyEditorConstants\n    {\n        public static readonly Vector2 EDITOR_BUTTONS_POSITION_DELTA = new Vector2(0, 0.03f);\n        public static readonly Vector2 EDITOR_BUTTON_SIZE = new Vector2(0.135f, 0.025f);\n        public const float EDITOR_BUTTON_LABEL_TEXT_SCALE = 0.4f;\n        public const int MAX_UNDO_REDO_HISTORY_LIMIT = 10;\n        public const int MOVE_DEBRIS_SPEED = 4;\n        public const int MOVE_OBJECT_SPEED = 50;\n        public const int DEFAULT_CAMERA_SPEED = 6;\n        public const float MIN_EDITOR_CAMERA_MOVE_MULTIPLIER = 0.2f;\n        public const float MAX_EDITOR_CAMERA_MOVE_MULTIPLIER = 150.0f;\n        public const int DEFAULT_EDITOR_CAMERA_MOVE_MULTIPLIER = 8;\n\n        public const int GRID_QUADS_COUNT_ONE_DIRECTION = 4;\n        public const int MAX_GRID_QUADS_A_COUNT = 10;\n        public const int MAX_GRID_QUADS_B_COUNT = MAX_GRID_QUADS_A_COUNT;\n        public static Vector4 DEFAULT_GRID_COLOR = new Vector4(0.6f, 0.6f, 0.6f, 1);\n        public static Vector4 COLOR_WHITE = new Vector4(1, 1, 1, 1);\n        public static Vector4 COLOR_BLACK = new Vector4(0, 0, 0, 1);\n\n        public const float MAX_DISTANCE_TO_DRAW_GRID = 100.0f;\n\n        public static Vector3 MOUSE_OVER_HIGHLIGHT_COLOR = new Vector3(0.066f, 0.1f, 0.02f);\n        public static Vector3 SELECTED_OBJECT_DIFFUSE_COLOR_ADDITION = new Vector3(0.1f, 0.15f, 0.03f);\n        public static Vector3 LINKED_OBJECT_DIFFUSE_COLOR_ADDITION = new Vector3(0.25f, 0.06f, 0.06f);\n        public static Vector3 INVALID_PREFAB_DIFFUSE_COLOR_ADDITION = new Vector3(0.62f, 0.2f, 0.0f);\n        public static Vector3 COLLIDING_OBJECT_DIFFUSE_COLOR_ADDITION = new Vector3(0.22f, 0.0f, 0.0f);\n\n        public const float COLOR_COMPONENT_MIN_VALUE = 0;\n        public const float COLOR_COMPONENT_MAX_VALUE = 255;\n        public const float EDITOR_DEFAULT_COMPONENT_MIN_VALUE = 0;\n        public const float EDITOR_DEFAULT_COMPONENT_MAX_VALUE = 255;\n        public const float GAME_MASTER_VOLUME_MIN = 0;\n\n        public const int DELAY_FOR_COLLISION_TIME_FLASHING_IN_MILLIS = 500;\n        public const int DELAY_FOR_SMOOTH_OBJECT_MOVEMENT_IN_MILLIS = 500;\n        public const int DELAY_OBJECT_MOVEMENT_SOUND_IN_MILLIS = 100;\n\n        public const short GRID_CONVERSION_UNIT = 10;\n        public const float BASE_ROTATION_DELTA_ANGLE_IN_DEGREES = 1;\n        public const float ROTATION_DELTA_RIGHT_ANGLE_IN_DEGREES = 90;\n\n        public const short CARVING_TOOL_DISTANCE_FROM_CAMERA_MULTIPLIER = 80;\n        public const int SECTOR_BORDER_REACHED_WARNING_DELAY = 1000;\n        public const int MAX_EDITOR_ENTITIES_LIMIT = 1000;\n\n        public const int MAX_CONTAINER_NUMBER = 50;\n    }\n\n    static class MyPrefabContainerConstants\n    {\n        public const short CONTAINER_CONVERSION_UNIT = 10;\n        public const int MAX_PREFABS_IN_CONTAINER = 4096;\n        public const float MAX_DISTANCE_FROM_CONTAINER_CENTER = 3200.0f;\n        public static Vector3 MAX_CONTAINER_SIZE = new Vector3(MyPrefabContainerConstants.MAX_DISTANCE_FROM_CONTAINER_CENTER * 2, MyPrefabContainerConstants.MAX_DISTANCE_FROM_CONTAINER_CENTER * 2, MyPrefabContainerConstants.MAX_DISTANCE_FROM_CONTAINER_CENTER * 2);\n        public const int PREFAB_CONTAINER_COMMIT_AND_RELOAD_DELAY = 50000;\n        public const int MAX_ALARM_PLAYING_TIME_IN_MS = 60000;      // in ms, -1... no limit, others... limit in ms\n    }\n\n    static class MyInfluenceSphereConstants\n    {\n        public const short POSITION_CONVERSION_UNIT = 5;\n        public const int MAX_SOUND_SPHERES_COUNT_FOR_SORT = 10;\n        public const int MAX_DUST_SPHERES_COUNT_FOR_SORT = 10;\n        public const int MAX_SOUND_SPHERES_COUNT = 50;\n        public const int MAX_DUST_SPHERES_COUNT = 50;\n        public static readonly Color DEFAULT_SPHERE_COLOR = Color.Blue;\n    }\n\n    static class MyConfigConstants\n    {\n        //  This password is used for saving/loading some string into config file (e.g. plain password)\n        public static readonly string SYMMETRIC_PASSWORD = \"63Gasjh4fqA\";\n    }\n\n    static class MyJoystickConstants\n    {\n        public const int MAX_AXIS = 65535;\n        public const int MIN_AXIS = 0;\n        public const int CENTER_AXIS = (MAX_AXIS - MIN_AXIS) / 2;\n        public const float ANALOG_PRESSED_THRESHOLD = 0.5f;  // 0 = neutral, 1 = fully to one side\n    }\n\n    //  IMPORTANT: Never change numeric values and never delete any enum item. These numbers are referenced e.g. from database.\n    //  IMPORTANT: If you change order or names in this enum, update it also in MyEnumsToStrings\n    enum MyGameControlEnums : byte\n    {\n        FIRE_PRIMARY = 0,\n        FIRE_SECONDARY = 1,\n        FIRE_THIRD = 2,\n        FIRE_FOURTH = 3,\n        FIRE_FIFTH = 4,\n        FORWARD = 5,\n        REVERSE = 6,\n        STRAFE_LEFT = 7,\n        STRAFE_RIGHT = 8,\n        UP_THRUST = 9,\n        DOWN_THRUST = 10,\n        ROLL_LEFT = 11,\n        ROLL_RIGHT = 12,\n        WHEEL_CONTROL = 13,\n        HEADLIGHTS = 14,\n        HEADLIGTHS_DISTANCE = 15,\n        HARVEST = 16,\n        DRILL = 17,\n        USE = 18,\n        INVENTORY = 19,\n        GPS = 20,\n        MISSION_DIALOG = 21,\n        TRAVEL = 22,\n        QUICK_ZOOM = 23,\n        ZOOM_IN = 24,\n        ZOOM_OUT = 25,\n        SELECT_AMMO_BULLET = 26,\n        SELECT_AMMO_MISSILE = 27,\n        SELECT_AMMO_CANNON = 28,\n        SELECT_AMMO_UNIVERSAL_LAUNCHER_FRONT = 29,\n        AUTO_LEVEL = 30,\n        REAR_CAM = 31,\n        SELECT_AMMO_UNIVERSAL_LAUNCHER_BACK = 32,\n        MOVEMENT_SLOWDOWN = 33,\n        VIEW_MODE = 34,\n        WEAPON_SPECIAL = 35,\n        CHANGE_DRONE_MODE = 36,\n        ROTATION_LEFT = 37,\n        ROTATION_RIGHT = 38,\n        ROTATION_UP = 39,\n        ROTATION_DOWN = 40,\n        AFTERBURNER = 41,\n        PREVIOUS_CAMERA = 42,\n        NEXT_CAMERA = 43,\n        FIRE_HOLOGRAM_FRONT = 44,\n        FIRE_HOLOGRAM_BACK = 45,\n        FIRE_BASIC_MINE_FRONT = 46,\n        FIRE_BASIC_MINE_BACK = 47,\n        FIRE_SMART_MINE_FRONT = 48,\n        FIRE_SMART_MINE_BACK = 49,\n        FIRE_FLASH_BOMB_FRONT = 50,\n        FIRE_FLASH_BOMB_BACK = 51,\n        FIRE_DECOY_FLARE_FRONT = 52,\n        FIRE_DECOY_FLARE_BACK = 53,\n        FIRE_SMOKE_BOMB_FRONT = 54,\n        FIRE_SMOKE_BOMB_BACK = 55,\n        DRONE_DEPLOY = 56,\n        DRONE_CONTROL = 57,\n        CONTROL_SECONDARY_CAMERA = 58,\n        NOTIFICATION_CONFIRMATION = 59,\n        PREV_TARGET = 60,\n        NEXT_TARGET = 61,\n        CHAT = 62,\n        SCORE = 63,\n    }\n\n    enum MyEditorControlEnums : byte\n    {\n        PRIMARY_ACTION_KEY = 0,\n        SECONDARY_ACTION_KEY = 1,\n        INCREASE_GRID_SCALE = 2,\n        DECREASE_GRID_SCALE = 3,\n        VOXEL_HAND = 4,\n        SWITCH_GIZMO_SPACE = 5,\n        SWITCH_GIZMO_MODE = 6,\n    }\n\n    static class MyDebugDrawCachedLinesConstants\n    {\n        public const int MAX_LINES_IN_CACHE = 1000;\n    }\n\n    static class MyHarvestingTubeConstants\n    {\n        //  Max distance harvesting device can go from ship\n        public const int MAX_DISTANCE_OF_HARVESTING_DEVICE = 30;\n\n        public const float SHAKE_DURING_EJECTION = 2.25f;\n        public const float SHAKE_DURING_IN_VOXELS = 3.0f;\n        public const float EJECTION_SPEED_IN_METERS_PER_SECOND = 10 * MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS;\n        public const float FAST_PULL_BACK_IN_METERS_PER_SECOND = 100 * MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS;\n        public const int DUST_PARTICLE_GENERATOR_TIME_DELTA_IN_MILLISECONSD = 100;\n        public const float DISTANCE_TO_PLUG_IN_THE_TUBE = 0.1f;\n        public const float INTERVAL_TO_CHECK_FOR_VOXEL_CONNECTION_IN_MILISECONDS = 100;\n\n        public const float MINED_CONTENT_RATIO = 0.0002f;\n    }\n\n    static class MyDrillDeviceConstants\n    {\n        public const float ROTATION_SPEED_PER_SECOND = 1f * MathHelper.Pi * 60 * MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS;\n        public const float ROTATION_ACCELERATION = 0.02f * 60 * MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS;\n        public const float ROTATION_DECELERATION = ROTATION_ACCELERATION * .5f;\n        public const float DRILL_INTERVAL_IN_MILISECONDS = 1000;\n        public const float DRILL_EJECT_INTERVAL_IN_MILISECONDS = 1000;\n        public static float DRILL_EJECTING_SPEED = 0.20f;\n        public const float EJECT_DISTANCE_MULTIPLIER = 0.5f;\n        public const float BIG_SPHERE_RADIUS_MULTIPLIER = 2f;\n        public const float TIME_TO_DRILL_VOXEL_IN_MILISECONDS = 1500;\n        public const float PARTICLES_ADDING_INTERVAL_IN_MILISECONDS = 150;\n        public const float SHAKE_DURING_ROTATION = 2.3f;\n        public const float SHAKE_DURING_IN_VOXELS = 4f;\n        public const float MAX_RADIUS_RANDOM_MULTIPLIER = 1.1f; // maximum multiplier for directional drills' radius\n    }\n\n    static class MyCrusherDrillDeviceConstants\n    {\n        public const float RADIUS = 2f;\n        public const float RANGE = 2f;\n        public const float MAX_ROTATING_SPEED_DRILLING = 3f;\n        public const float MAX_ROTATING_SPEED_IDLE = 0.15f;\n        public const float DAMAGE_PER_SECOND = 70;\n        public const int MIN_DRILLING_DURATION = 800;\n    }\n\n    static class MyLaserDrillDeviceConstants\n    {\n        public const float RANGE = 15f;\n        public const float RADIUS = 6.5f;\n        public const float DAMAGE_PER_SECOND = 50;\n        public const int MIN_DRILLING_DURATION = 600;\n    }\n\n    static class MyNuclearDrillDeviceConstants\n    {\n        public const float RADIUS = 3f;\n        public const float RANGE = 3f;\n        public const float MAX_ROTATING_SPEED_DRILLING = 3f;\n        public const float MAX_ROTATING_SPEED_IDLE = 0.4f;\n        public const float DAMAGE_PER_SECOND = 100;\n        public const int MIN_DRILLING_DURATION = 200;\n    }\n\n    static class MyPressureDrillDeviceConstants\n    {\n        public const float RADIUS = 20f;\n        public const int SHOT_INTERVAL_IN_MILISECONDS = 6000;\n        public const float DAMAGE = 500;\n    }\n\n    static class MySawDrillDeviceConstants\n    {\n        public const float RANGE = 25f;\n        public const float RADIUS = 5f;\n        public const float DAMAGE_PER_SECOND = 50;\n        public const int MIN_DRILLING_DURATION = 200;\n    }\n\n    static class MyThermalDrillDeviceConstants\n    {\n        public const float RADIUS = 2.5f;\n        public const float RANGE = 2.5f;\n        public const float MAX_ROTATING_SPEED_DRILLING = 1.5f;\n        public const float MAX_ROTATING_SPEED_IDLE = 0.4f;\n        public const float DAMAGE_PER_SECOND = 85;\n        public const int MIN_DRILLING_DURATION = 200;\n    }\n\n    static class MyReflectorConstants\n    {\n        public static readonly Vector4 SHORT_REFLECTOR_LIGHT_COLOR = new Color(255, 255, 255, 255).ToVector4();\n        public static readonly float SHORT_REFLECTOR_RANGE_FORWARD = 750;\n        public static readonly float SHORT_REFLECTOR_RANGE_BACKWARD = 200;\n        public static readonly float SHORT_REFLECTOR_CONE_ANGLE_FORWARD = 1.0f - (float)Math.Cos(3.14f / 8.5f * 1.5f);\n        public static readonly float SHORT_REFLECTOR_CONE_ANGLE_BACKWARD = 1.0f - (float)Math.Cos(3.14f / 8.5f * 4.0f);\n        public static readonly float SHORT_REFLECTOR_BILLBOARD_LENGTH = 40f;\n        public static readonly float SHORT_REFLECTOR_BILLBOARD_THICKNESS = 6f;\n\n        public static readonly Vector4 LONG_REFLECTOR_LIGHT_COLOR = new Color(255, 235, 255, 255).ToVector4();\n        public static readonly float LONG_REFLECTOR_RANGE_FORWARD = SHORT_REFLECTOR_RANGE_FORWARD * 2;\n        public static readonly float LONG_REFLECTOR_RANGE_BACKWARD = SHORT_REFLECTOR_RANGE_BACKWARD * 1;\n        public static readonly float LONG_REFLECTOR_CONE_ANGLE_FORWARD = 1.0f - (float)Math.Cos((3.14f / 8.5f) * 0.6f);\n        public static readonly float LONG_REFLECTOR_CONE_ANGLE_BACKWARD = 1.0f - (float)Math.Cos((3.14f / 8.5f * 4.0f) * 0.6f);\n        public static readonly float LONG_REFLECTOR_BILLBOARD_LENGTH = SHORT_REFLECTOR_BILLBOARD_LENGTH * 1.5f;\n        public static readonly float LONG_REFLECTOR_BILLBOARD_THICKNESS = SHORT_REFLECTOR_BILLBOARD_THICKNESS * 0.6f;\n\n        public static readonly float CHANGE_RANGE_INTERVAL_IN_MILISECONDS = 1000;\n    }\n\n    static class MySecondaryCameraConstants\n    {\n        public const float SECONDARY_CAMERA_DESCRIPTION_SCALE = 0.7f;\n        public const float NEAR_PLANE_DISTANCE = 1.0f;\n        public const int FIELD_OF_VIEW = 50;\n    }\n\n    static class MyDroneConstants\n    {\n        public const float NEAR_PLANE_DISTANCE = 0.3f;\n\n        /// <summary>\n        /// Drone models are too small, so they need a bigger physics entity to represent them.\n        /// This gives the multiplier for the radius of the sphere representing the physics body\n        /// of the drone compared to the default (model.boundingSphere.radius).\n        /// </summary>\n        public const float DRONE_PHYSICS_SIZE_MULTIPLIER = 2.5f;\n    }\n\n    static class MyMineBaseConstants\n    {\n        public const float TIME_TO_ACTIVATE_MINE_IN_MILISECONDS = 1000;\n    }\n\n    static class MyFlashBombConstants\n    {\n        public const int FADE_IN_TIME = 100; //ms\n        public const int FLASH_TIME = 1000; //ms\n        public const int FADE_OUT_TIME = 1000; //ms\n\n        public const float FLASH_RADIUS = 150; //m - if you see the explosion in this radius, you get blind\n        public const int TIME_TO_ACTIVATE = 1000; //ms\n    }\n\n    static class MyDecoyFlareConstants\n    {\n        public const int MAX_LIVING_TIME = 11000; //ms\n        public const float DECOY_ATTRACT_RADIUS = 300; //m - How far will decoy attract missiles\n        public const float DECOY_KILL_RADIUS = 50; //m - When missile explode\n        public const int TIME_TO_ACTIVATE = 1000; //ms\n        public const int FLARES_COUNT = 32;\n    }\n\n    static class MyHologramConstants\n    {\n        public const int TIME_TO_ACTIVATE = 50;    // ms\n        public const int TIME_TO_DEACTIVATE = 60000; // ms\n        public const float APPEAR_SPEED = 0.1f;      // percentage per frame\n        public const int FLICKER_FREQUENCY = 120;    // number of frames per flicker (the lower, the more frequent)\n        public const float FLICKER_DURATION = 60;    // length of a flicker in ms\n        public const float FLICKER_MAX_SIZE = 1.1f;  // multiplier of max flicker scale of the hologram\n    }\n\n    static class MyIlluminatingShellsConstants\n    {\n        public const int MAX_LIVING_TIME = 20000; //ms\n        public const int DIYNG_TIME = 2000; //ms\n        public const float LIGHT_RADIUS = MyLightsConstants.MAX_POINTLIGHT_RADIUS; //m\n        public static Vector4 LIGHT_COLOR = Vector4.One;\n    }\n\n    static class MySmokeBombConstants\n    {\n        public const int TIME_TO_ACTIVATE = 1000; //ms\n        public const float SMOKE_TIME = 1000; //ms\n        public const int MAX_LIVING_TIME = 20000; //ms\n    }\n\n    public class MyMineSmartConstants\n    {\n        public const float INTERVAL_TO_SEARCH_FOR_ENEMY_IN_MILISECONDS = 500;\n        public const float CHASE_SPEED_MULTIPLIER = 0.02f;\n    }\n\n    static class MySphereExplosiveConstants\n    {\n        public const int TIME_TO_ACTIVATE = 3000; //ms\n    }\n\n    static class MyDirectionalExplosiveConstants\n    {\n        public const int TIME_TO_ACTIVATE = 3000; //ms\n        public const float EXPLOSION_LENGTH = 400; //m\n    }\n\n    static class MyTimeBombConstants\n    {\n        public const float EXPLOSION_RADIUS = 40; //m\n\n        public static readonly int[] TIMEOUT_ARRAY = new int[] { 1, 3, 10, 30 }; // seconds\n    }\n\n    static class MyRemoteBombConstants\n    {\n        public const int MAXIMUM_LIVING_TIME = 60 * 1000; //ms\n    }\n\n    static class MyRemoteCameraConstants\n    {\n        public const float WEIGHT = 30; //kg\n        public const float SPEED = 2; //m/s\n        public const float ROTATION_SENSITIVITY_NON_MOUSE = 4.0f;\n        public const float TIME_TO_ACTIVATE_GROUP_MASK = 1000; // ms\n        public const float MAX_ANGLE_SQUARED = MathHelper.PiOver4 * MathHelper.PiOver4; // radians squared - 45 degrees\n    }\n\n\n    static class MyMissionsConstants\n    {\n        //public const float MISSION_SPHERE_RADIUS = 100;\n        //public const float MISSION_SPHERE_RADIUS_SQUARED = MISSION_SPHERE_RADIUS * MISSION_SPHERE_RADIUS;\n        public static Vector3 OBJECT_HIGHTLIGHT_COLOR = new Vector3(0.01f, 0.07f, 0.31f);\n        public const int NEW_OBJECTIVE_FOR_TIME = 10000;    // in ms\n        public const float NEW_OBJECTIVE_BLINK_ON_HIGHLIGHT = 1f;\n        public const float NEW_OBJECTIVE_BLINK_OFF_HIGHLIGHT = 0f;\n        public const int NEW_OBJECTIVE_BLINK_ON_TIME = 300;     // in ms\n        public const int NEW_OBJECTIVE_BLINK_OFF_TIME = 50;     // in ms\n    }\n\n    static class MySunConstants\n    {\n        // for zoom values lower than this, there are no glare effects, because occlusion doesn't work well for some reason\n        public const float ZOOM_LEVEL_GLARE_END = 0.6f;\n\n        // for screen edge falloff of glare - when center of sun is this many pixels away from the border of the screen, glare starts to fall off\n        public const float SCREEN_BORDER_DISTANCE_THRESHOLD = 25;\n\n        // for changing the maximum intensity of the sun (when it is in the centre of the screen). Acceptable values are [0, 10]\n        public const float MAX_GLARE_MULTIPLIER = 2.5f;\n\n        // distance in which render sun\n        public const float RENDER_SUN_DISTANCE = 50000;\n\n        // sun glow and glare size multiplier\n        public const float SUN_SIZE_MULTIPLIER = 1;\n\n        // minimum and maximum sun glow and glare sizes (in no specific unit)\n        public const float MIN_SUN_SIZE = 250;  // will be used in sectors distant from sun (e.g. post-uranus)\n        public const float MAX_SUN_SIZE = 4000; // will be used in sectors close to sun\n\n        // for sun occlusion query\n        public static readonly int MIN_QUERY_SIZE = 1000;\n\n        // maximum number of occlusion query pixels - higher numbers are discarded as faulty query results\n        public const int MAX_SUNGLARE_PIXELS = 100000;\n    }\n\n    static class MySmallShipConstants\n    {\n        public const float LOW_ELECTRICITY_FOR_RADAR = 0.05f;       // percentage        \n        public const float DETECT_INTERVAL = 200;                   // in miliseconds\n        public const float DETECT_SHIP_RADIUS = 50;                 // in meters\n        public const float DETECT_FOUNDATION_FACTORY_RADIUS = 500;  // in meters\n        public const float COLLISION_FRICTION_MULTIPLIER = 0.6f;    // ratio (0 no change in speed on collision, 1 full stop on collision)\n        public const float MAX_UPDATE_DISTANCE = 200;                 // in meters\n\n        // HUD waring's levels\n        public const float WARNING_ELECTRICITY_CRITICAL_LEVEL = 0.2f;   // precentage\n        public const float WARNING_ELECTRICITY_LOW_LEVEL = 0.4f;        // precentage\n        public const float WARNING_ARMOR_CRITICAL_LEVEL = 0.2f;         // precentage\n        public const float WARNING_ARMOR_LOW_LEVEL = 0.4f;              // precentage\n        public const float WARNING_AMMO_CRITICAL_LEVEL = 0.2f;          // precentage\n        public const float WARNING_AMMO_LOW_LEVEL = 0.4f;               // precentage\n        public const float WARNING_FUEL_CRITICAL_LEVEL = 0.2f;          // precentage\n        public const float WARNING_FUEL_LOW_LEVEL = 0.4f;               // precentage\n        public const float WARNING_OXYGEN_CRITICAL_LEVEL = 0.2f;        // precentage\n        public const float WARNING_OXYGEN_LOW_LEVEL = 0.4f;             // precentage\n        public const float WARNING_DAMAGE_CRITICAL_LEVEL = 0.2f;        // precentage\n        public const float WARNING_DAMAGE_ALERT_LEVEL = 0.4f;           // precentage\n        public const float WARNING_HEALTH_CRITICAL_LEVEL = 0.2f;        // precentage\n        public const float WARNING_HEALTH_LOW_LEVEL = 0.4f;             // precentage\n        public const float WARNING_RADIATION_DAMAGE_PER_SECOND = MyPlayer.DEFAULT_PLAYER_MAX_HEALTH / 20f;  // damage per second\n        public const float WARNING_SUN_WIND_MAX_DISTANCE_BEHIND_PLAYER_SQR = 1000f * 1000f; // in meters\n\n        // HUD warning's sound intervals\n        public const int WARNING_ELECTRICITY_CRITICAL_INVERVAL = 10000;   // in miliseconds\n        public const int WARNING_ELECTRICITY_LOW_INVERVAL = 20000;        // in miliseconds\n        public const int WARNING_ARMOR_NO_INVERVAL = 10000;               // in miliseconds\n        public const int WARNING_ARMOR_CRITICAL_INVERVAL = 10000;         // in miliseconds\n        public const int WARNING_ARMOR_LOW_INVERVAL = 20000;              // in miliseconds\n        public const int WARNING_AMMO_NO_INVERVAL = 10000;                // in miliseconds\n        public const int WARNING_AMMO_CRITICAL_INVERVAL = 10000;          // in miliseconds\n        public const int WARNING_AMMO_LOW_INVERVAL = 20000;               // in miliseconds\n        public const int WARNING_FUEL_NO_INVERVAL = 10000;                // in miliseconds\n        public const int WARNING_FUEL_CRITICAL_INVERVAL = 10000;          // in miliseconds\n        public const int WARNING_FUEL_LOW_INVERVAL = 20000;               // in miliseconds\n        public const int WARNING_NO_OXYGEN_INVERVAL = 10000;              // in miliseconds\n        public const int WARNING_OXYGEN_CRITICAL_INVERVAL = 10000;        // in miliseconds\n        public const int WARNING_OXYGEN_LOW_INVERVAL = 20000;             // in miliseconds\n        public const int WARNING_OXYGEN_LEAKING_INVERVAL = 20000;         // in miliseconds\n        public const int WARNING_DAMAGE_CRITICAL_INVERVAL = 10000;        // in miliseconds\n        public const int WARNING_DAMAGE_ALERT_INVERVAL = 20000;           // in miliseconds\n        public const int WARNING_RADAR_JAMMED_INVERVAL = 20000;           // in miliseconds\n        public const int WARNING_ENEMY_ALERT_INVERVAL = 15000;            // in miliseconds\n        public const int WARNING_HEALTH_CRITICAL_INVERVAL = 10000;        // in miliseconds\n        public const int WARNING_HEALTH_LOW_INVERVAL = 20000;             // in miliseconds\n        public const int WARNING_MISSILE_ALERT_INTERVAL = 1200;           // in miliseconds\n        public const int WARNING_SOLAR_WIND_INTERVAL = 5000;              // in miliseconds\n        public const int WARNING_HEALTH_CONSTANT1 = 0;\n        public const int WARNING_HEALTH_CONSTANT2 = 0;\n        public const int WARNING_HEALTH_CONSTANT3 = 0;\n        public const int WARNING_HEALTH_CONSTANT4 = 0;\n        public const int WARNING_HEALTH_CONSTANT5 = 0;\n\n        public const int WARNING_FRIENDLY_FIRE_INTERVAL = 3000;           // in miliseconds\n        public const int WARNING_RADIATION_INTERVAL = 5000;               // in miliseconds\n        public const int GEIGER_BEEP_INTERVAL = 2000;                     // in miliseconds\n        public const int RADIATION_DAMAGE_MAX_TIME = 1000;                // in miliseconds\n\n        public const int WARNING_EXPLANATION_INITIAL_DELAY = 30000;       // in miliseconds\n        public const int WARNING_EXPLANATION_INTERVAL = 180000;           // in miliseconds\n\n        public const float WARNING_ENEMY_ALERT_MAX_DISTANCE_SQR = 500f * 500f;  // in meters\n\n        public const int LOCK_TARGET_TIME = 750;                          // in miliseconds\n        public const int LOCK_TARGET_CHECK_TIME = 500;                    // in miliseconds\n        public const float LOCK_TARGET_OVERLAP = 1.7f;                    // percents\n\n        public static float DRILL_FUEL_CONSUMPTION = 0.1f;                // fuel per sec\n        public static float HARVESTER_FUEL_CONSUMPTION = 0.1f;            // fuel per sec\n        public static float WEAPON_ELECTRICITY_CONSUMPTION = 0.001f;      // kWh per one shot\n\n        public static float MINIMUM_ELECTRICITY = -10.0f;\n        public static float ELECTRICITY_ENGINE_PRODUCTION = -10.0f;\n\n        public static float NO_SLOWDOWN_MAX_SPEED = 120f;\n        public static float NO_SLOWDOWN_SLOWDOWN_FORCE = 4200f;\n\n        public static int POSITION_MEMORY_SIZE = 1000;\n\n        public static float EXPLOSION_SHOCK_TIME = 1.0f;\n        public static float SHOCK_TIME_VAR = 0.2f; // Shock time variability\n\n        public static bool INCLUDE_CARGO_WEIGHT = false;\n\n        public const int DRONE_RELEASE_INTERVAL = 1500; // ms\n        public const float EMP_SMALLSHIP_DISABLE_DURATION_MULTIPLIER = 0.05f;\n\n        public const float SHIP_HEALTH_RATIO_TO_OXYGEN_LEAKING_MIN = 0.4f;      // in percents\n        public const float SHIP_HEALTH_RATIO_TO_OXYGEN_LEAKING_MAX = 0f;        // in percents\n        public const float OXYGEN_LEFT_AT_MIN_DAMAGE_LEVEL = 600f;              // in sec \n        public const float OXYGEN_LEFT_AT_MAX_DAMAGE_LEVEL = 120f;              // in sec\n\n        public static float DAMAGE_OVER_TIME_INTERVAL = 1.0f;                   // in sec\n        public static float MAX_FRIENDLY_DAMAGE = 125.0f;                       // aggro damage for attacked friend\n\n        // Gives the scaling factor of all the smallships model in the content processor (1 corresponds to 0.01 scaling factor)\n        // Has to be changed if the factors in the content processor changes.\n        public const float ALL_SMALL_SHIP_MODEL_SCALE = 1.5f;\n        public const float FRIEND_SMALL_SHIP_MODEL_SCALE = 2.0f;\n\n        public const int SMALL_CARGO_CAPACITY = 24;\n        public const int NORMAL_CARGO_CAPACITY = 36;\n        public const int LARGE_CARGO_CAPACITY = 60;\n        public const float MAX_HUD_DISTANCE = 1000;\n    }\n\n    static class MyShipConstants\n    {\n        public const float CRIPPLE_HEALTH = 0.05f; // percentage\n        public const float DAMAGED_HEALTH = 0.5f; // percentage\n    }\n\n    static class MyMedicineConstants\n    {\n        public const float MEDIKIT_HEALTH_TO_ACTIVATE = 99; // triggers when health below this\n        public const float MEDIKIT_DURATION = 50;\n        public const float MEDIKIT_HEALTH_RESTORED_PER_SECOND = 20;  // one dose heals 1 health and depletes in 50 ms\n\n        public const float ANTIRADIATION_MEDICINE_DURATION = 100000;  // one dose for one 100 seconds of resistance\n        public const float ANTIRADIATION_MEDICINE_RADIATION_DAMAGE_MULTIPLIER = 0.02f;\n\n        public const float PERFORMANCE_ENHANCING_MEDICINE_DURATION = 60000;  // 1 minute duration\n        public const float PERFORMANCE_ENHANCING_MEDICINE_OXYGEN_CONSUMPTION_MULTIPLIER = 0.2f;\n\n        public const float HEALTH_ENHANCING_MEDICINE_DURATION = 30000;  // half a minute duration\n        public const float HEALTH_ENHANCING_MEDICINE_DAMAGE_MULTIPLIER = 0.2f;\n    }\n\n    static class MyFoundationFactoryConstants\n    {\n        public const float RETURN_AMOUNT_RATIO = 0.5f;\n        public const float SPHERE_RADIUS = 2f;\n        public const int MAX_ITEMS_IN_INVENTORY = 1000;\n    }\n\n    static class MyMainMenuConstants\n    {\n        public const string BUY_NOW_URL = \"http://www.minerwars.com/Store/?aid=IngameBuy\";\n        public const string IE_PROCESS = \"IExplore.exe\";\n        public const int BLINK_INTERVAL = 500;                                              // in ms\n        public const float BUY_BUTTON_SIZE_MULTIPLICATOR = 1.2f;\n        public const float BUY_BUTTON_WIDTH_MULTIPLICATOR = 0.9f;\n        public static readonly Vector4 BUY_BUTTON_BACKGROUND_COLOR = new Vector4(0.8f, 0.8f, 0.8f, 0.95f);\n        public static readonly Vector4 BUY_BUTTON_TEXT_COLOR = new Vector4(0.7f, 0.45f, 0f, 0.7f);\n    }\n\n    public enum MyLodTypeEnum\n    {\n        LOD0,     //  Use when cell contains data without LOD, so they are as they are\n        LOD1,         //  Use when cell contains LOD-ed data (less detail, ...)\n        LOD_NEAR    // Used for cockpit and weapons\n    }\n\n    public static class MyItemFilterConstants\n    {\n        public static ItemCategory[] CategoryAmmo = {ItemCategory.AMMO, ItemCategory.WEAPON,};\n        public static ItemCategory[] Devices = {ItemCategory.DEVICE, ItemCategory.DEFAULT};\n        public static ItemCategory[] ConsumAndMedical = { ItemCategory.CONSUMABLE, ItemCategory.MEDICAL,  };\n        public static ItemCategory[] Ores = { ItemCategory.ORE };\n        public static ItemCategory[] GoodsAndIllegal = { ItemCategory.GOOODS, ItemCategory.ILLEGAL, };\n        public static ItemCategory[] All = (ItemCategory[])Enum.GetValues(typeof(ItemCategory));\n    }\n\n    static class MyAIConstants\n    {\n        public const float SLEEP_DISTANCE_FROM_PATH_SQUARED = 1000 * 1000;\n\n        public const float PATHFINDING_SHIP_RADIUS = 5f;\n        public const int PATHFINDING_MAX_START_RAYCASTS = 12;       // must be >= 4 (see MyWayPointGraph.GetClosestWaypointReachableByShip).\n        public const int PATHFINDING_MAX_END_RAYCASTS = 12;         // must be >= 4 (see MyWayPointGraph.GetClosestWaypointReachableByShip).\n        \n        //If bot is further than this distance he has to return to his leader\n        public const float MAX_LEADER_DISTANCE_SQR = 500 * 500;    // max distance for follower bot from leader (MySmallShipBot.LeaderLostEnabled)\n        //If bot is further than this distance, he cannot start any attack (but can finish current attack if not further than MAX_LEADER_DISTANCE_SQR)\n        public const float FAR_LEADER_DISTANCE_SQR = MAX_LEADER_DISTANCE_SQR * 0.75f;\n\n        public static float BOT_FOV = MathHelper.ToRadians(150.0f);\n        public static float BOT_FOV_COS = (float)Math.Cos(MyAIConstants.BOT_FOV / 2);\n        public const float BOT_FOV_RANGE = 1000;                  // Normal range of view\n        public const float BOT_FOV_RANGE_HIDDEN = 200;             // Range of view for targets with disabled engines and turned off lights\n        public const float FORMATION_SPACING = 30;\n        public const int MIN_AFTERBURNER_OFF_TIME = 500;\n        public const int MIN_AFTERBURNER_ON_TIME = 500;\n    }\n\n    public static class MyModelsStatisticsConstants\n    {\n        public static bool MODEL_STATISTICS_WRONG_LODS_ONLY = true;\n\n        public static char MODEL_STATISTICS_CSV_SEPARATOR = ',';\n\n        public static bool GET_MODEL_STATISTICS_AUTOMATICALLY = false;\n\n        public static MyMissionID[] MISSIONS_TO_GET_MODEL_STATISTICS_FROM = { };\n\n        public static int ACTUAL_MISSION_FOR_MODEL_STATISTICS = 0;\n    }\n\n    public static class MyMissionConstants\n    {\n        public const float MADELYN_REFILL_TIME = 3 * 60;\n    }\n\n    public static class MyPlayerConstants \n    {\n        public const float MONEY_MAX = 1000000000f;\n        public const float MONEY_MIN = -MONEY_MAX;\n    }\n\n    public static class MyGamePlayCheatsConstants \n    {\n        public const int CHEAT_INCREASE_CARGO_CAPACITY_MAX_ITEMS = 1000;\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Utils/MyControl.cs",
    "content": "﻿using System;\nusing System.Text;\nusing MinerWars.AppCode.Toolkit.Input;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Localization;\nusing SysUtils.Utils;\n\nnamespace MinerWars.AppCode.Game.Utils\n{\n    public enum MyGuiGameControlType\n    {\n        GAME,\n        EDITOR\n    }\n\n    enum MyGuiControlTypeEnum : byte\n    {\n        General = 0,\n        Navigation = 1,\n        Communications = 2,\n        Weapons = 3,\n        SpecialWeapons = 4,\n        Systems1 = 5,\n        Systems2 = 6,\n        Editor = 7,\n        Deleted = 8 //assign this type to removed controls\n    }\n\n    enum MyGuiLightPrefabTypeEnum : byte\n    {\n        PointLight = 0,\n        SpotLight = 1\n    }\n\n    //  IMPORTANT: If you change order or names in this enum, update it also in MyEnumsToStrings\n    public enum MyGuiInputDeviceEnum : byte\n    {\n        None = 0,\n        Keyboard = 1,\n        Mouse = 2,\n        Joystick = 3,\n        JoystickAxis = 4,\n    }\n\n    //  IMPORTANT: If you change order or names in this enum, update it also in MyEnumsToStrings\n    enum MyMouseButtonsEnum : byte\n    {\n        None = 0,\n        Left = 1,\n        Middle = 2,\n        Right = 3,\n        XButton1 = 4,\n        XButton2 = 5\n    }\n\n    //  IMPORTANT: If you change order or names in this enum, update it also in MyEnumsToStrings\n    enum MyJoystickButtonsEnum : byte\n    {\n        None = 0,\n        JDLeft = 1,  // Directional pad buttons\n        JDRight = 2,\n        JDUp = 3,\n        JDDown = 4,\n        J01 = 5,  // Regular buttons (up to 16)\n        J02 = 6,\n        J03 = 7,\n        J04 = 8,\n        J05 = 9,\n        J06 = 10,\n        J07 = 11,\n        J08 = 12,\n        J09 = 13,\n        J10 = 14,\n        J11 = 15,\n        J12 = 16,\n        J13 = 17,\n        J14 = 18,\n        J15 = 19,\n        J16 = 20\n    }\n\n    //  IMPORTANT: If you change order or names in this enum, update it also in MyEnumsToStrings\n    // If you add any axes, change also IsJoystickAxisSupported, GetJoystickAxisStateRaw, InitializeJoystickIfPossible, GetJoystickAxisStateForGameplay...\n    enum MyJoystickAxesEnum : byte\n    {\n        None = 0,\n        Xpos = 1,\n        Xneg = 2,\n        Ypos = 3,\n        Yneg = 4,\n        Zpos = 5,\n        Zneg = 6,\n        RotationXpos = 7,\n        RotationXneg = 8,\n        RotationYpos = 9,\n        RotationYneg = 10,\n        RotationZpos = 11,\n        RotationZneg = 12,\n        Slider1pos = 13,\n        Slider1neg = 14,\n        Slider2pos = 15,\n        Slider2neg = 16,\n    }\n\n    class MyControl : ICloneable\n    {\n        //  Enum values\n        public static Array MyJoystickButtonsEnumValues { get; private set; }\n        public static Array MyJoystickAxesEnumValues { get; private set; }\n        static MyControl()\n        {\n            MyJoystickButtonsEnumValues = Enum.GetValues(typeof(MyJoystickButtonsEnum));\n            MyJoystickAxesEnumValues = Enum.GetValues(typeof(MyJoystickAxesEnum));\n        }\n\n        MyGuiGameControlType m_gameControlType;\n        MyGameControlEnums? m_gameControl;\n        MyEditorControlEnums? m_editorControl;\n        MyTextsWrapperEnum m_text;\n        MyGuiControlTypeEnum m_controlType;\n        Keys m_keyboardKey = Keys.None;\n        Keys m_keyboardKey2 = Keys.None;\n        MyMouseButtonsEnum m_mouseButton = MyMouseButtonsEnum.None;\n        MyJoystickButtonsEnum m_joystickButton = MyJoystickButtonsEnum.None;\n        MyJoystickAxesEnum m_joystickAxis = MyJoystickAxesEnum.None;\n\n        public MyControl(MyGameControlEnums control, MyTextsWrapperEnum text, MyGuiControlTypeEnum controlType, MyJoystickAxesEnum defaultControl)\n            : this(control, text, controlType, null, null, null, defaultControl)\n        {\n        }\n\n        public MyControl(MyGameControlEnums control, MyTextsWrapperEnum text, MyGuiControlTypeEnum controlType, MyJoystickButtonsEnum defaultControl)\n            : this(control, text, controlType, null, null, defaultControl, null)\n        {\n        }\n\n        public MyControl(MyGameControlEnums control, MyTextsWrapperEnum text, MyGuiControlTypeEnum controlType, Keys defaultControl)\n            : this(control, text, controlType, null, defaultControl, null, null)\n        {\n        }\n\n        public MyControl(MyGameControlEnums control, MyTextsWrapperEnum text, MyGuiControlTypeEnum controlType, Keys defaultControl, Keys defaultSecondControl)\n            : this(control, text, controlType, null, defaultControl, null, null)\n        {\n            m_keyboardKey2 = defaultSecondControl;\n        }\n\n        public MyControl(MyGameControlEnums control, MyTextsWrapperEnum text, MyGuiControlTypeEnum controlType, MyMouseButtonsEnum defaultControl)\n            : this(control, text, controlType, defaultControl, null, null, null)\n        {\n        }\n\n        public MyControl(MyEditorControlEnums control, MyTextsWrapperEnum text, MyGuiControlTypeEnum controlType, MyJoystickAxesEnum defaultControl)\n            : this(control, text, controlType, null, null, null, defaultControl)\n        {\n        }\n\n        public MyControl(MyEditorControlEnums control, MyTextsWrapperEnum text, MyGuiControlTypeEnum controlType, MyJoystickButtonsEnum defaultControl)\n            : this(control, text, controlType, null, null, defaultControl, null)\n        {\n        }\n\n        public MyControl(MyEditorControlEnums control, MyTextsWrapperEnum text, MyGuiControlTypeEnum controlType, Keys defaultControl)\n            : this(control, text, controlType, null, defaultControl, null, null)\n        {\n        }\n\n        public MyControl(MyEditorControlEnums control, MyTextsWrapperEnum text, MyGuiControlTypeEnum controlType, MyMouseButtonsEnum defaultControl)\n            : this(control, text, controlType, defaultControl, null, null, null)\n        {\n        }\n\n        public MyControl(MyGameControlEnums control, MyTextsWrapperEnum text, MyGuiControlTypeEnum controlType, MyMouseButtonsEnum? defaultControlMouse,\n            Keys? defaultControlKey, MyJoystickButtonsEnum? defaultControlJoy, MyJoystickAxesEnum? defaultControlJoyAxis)\n            : this(control, text, controlType)\n        {\n            m_mouseButton = defaultControlMouse.HasValue ? defaultControlMouse.Value : MyMouseButtonsEnum.None;\n            m_keyboardKey = defaultControlKey.HasValue ? defaultControlKey.Value : Keys.None;\n            m_joystickButton = defaultControlJoy.HasValue ? defaultControlJoy.Value : MyJoystickButtonsEnum.None;\n            m_joystickAxis = defaultControlJoyAxis.HasValue ? defaultControlJoyAxis.Value : MyJoystickAxesEnum.None;\n        }\n\n        public MyControl(MyEditorControlEnums control, MyTextsWrapperEnum text, MyGuiControlTypeEnum controlType, MyMouseButtonsEnum? defaultControlMouse,\n            Keys? defaultControlKey, MyJoystickButtonsEnum? defaultControlJoy, MyJoystickAxesEnum? defaultControlJoyAxis)\n            : this(control, text, controlType)\n        {\n            m_mouseButton = defaultControlMouse.HasValue ? defaultControlMouse.Value : MyMouseButtonsEnum.None;\n            m_keyboardKey = defaultControlKey.HasValue ? defaultControlKey.Value : Keys.None;\n            m_joystickButton = defaultControlJoy.HasValue ? defaultControlJoy.Value : MyJoystickButtonsEnum.None;\n            m_joystickAxis = defaultControlJoyAxis.HasValue ? defaultControlJoyAxis.Value : MyJoystickAxesEnum.None;\n        }\n\n        public MyControl(MyGameControlEnums control, MyTextsWrapperEnum text, MyGuiControlTypeEnum controlType)\n        {\n            m_gameControl = control;\n            m_gameControlType = MyGuiGameControlType.GAME;\n            m_text = text;\n            m_controlType = controlType;\n            m_joystickButton = MyJoystickButtonsEnum.None;\n            m_joystickAxis = MyJoystickAxesEnum.None;\n            m_mouseButton = MyMouseButtonsEnum.None;\n            m_keyboardKey = Keys.None;\n        }\n\n        public MyControl(MyEditorControlEnums control, MyTextsWrapperEnum text, MyGuiControlTypeEnum controlType)\n        {\n            m_editorControl = control;\n            m_gameControlType = MyGuiGameControlType.EDITOR;\n            m_text = text;\n            m_controlType = controlType;\n            m_joystickButton = MyJoystickButtonsEnum.None;\n            m_joystickAxis = MyJoystickAxesEnum.None;\n            m_mouseButton = MyMouseButtonsEnum.None;\n            m_keyboardKey = Keys.None;\n        }\n\n        public void SetControl(Keys key)\n        {\n            m_keyboardKey = key;\n        }\n\n        public void SetSecondControl(Keys key)\n        {\n            m_keyboardKey2 = key;\n        }\n\n        public void SetControl(MyMouseButtonsEnum mouseButton)\n        {\n            m_mouseButton = mouseButton;\n        }\n\n        public void SetControl(MyJoystickButtonsEnum joyButton)\n        {\n            m_joystickButton = joyButton;\n        }\n\n        public void SetControl(MyJoystickAxesEnum joyAxis)\n        {\n            m_joystickAxis = joyAxis;\n        }\n\n        public void SetNoControl()\n        {\n            m_joystickAxis = MyJoystickAxesEnum.None;\n            m_joystickButton = MyJoystickButtonsEnum.None;\n            m_mouseButton = MyMouseButtonsEnum.None;\n            m_keyboardKey = Keys.None;\n            m_keyboardKey2 = Keys.None;\n        }\n\n        public Keys GetKeyboardControl()\n        {\n            return m_keyboardKey;\n        }\n\n        public Keys GetSecondKeyboardControl()\n        {\n            return m_keyboardKey2;\n        }\n\n        public MyMouseButtonsEnum GetMouseControl()\n        {\n            return m_mouseButton;\n        }\n\n        public MyJoystickButtonsEnum GetJoystickControl()\n        {\n            return m_joystickButton;\n        }\n\n        public MyJoystickAxesEnum GetJoystickAxisControl()\n        {\n            return m_joystickAxis;\n        }\n\n        public bool IsPressed()\n        {\n            bool pressed = false;\n\n            if (m_keyboardKey != Keys.None)\n            {\n                pressed = MyGuiManager.GetInput().IsKeyPress(m_keyboardKey);\n                if (pressed == false)\n                {\n                    pressed = MyGuiManager.GetInput().IsKeyPress(m_keyboardKey2);\n                }\n            }\n\n            if (m_mouseButton != MyMouseButtonsEnum.None && pressed == false)\n            {\n                switch (m_mouseButton)\n                {\n                    case MyMouseButtonsEnum.Left:\n                        pressed = MyGuiManager.GetInput().IsLeftMousePressed();\n                        break;\n                    case MyMouseButtonsEnum.Middle:\n                        pressed = MyGuiManager.GetInput().IsMiddleMousePressed();\n                        break;\n                    case MyMouseButtonsEnum.Right:\n                        pressed = MyGuiManager.GetInput().IsRightMousePressed();\n                        break;\n                    case MyMouseButtonsEnum.XButton1:\n                        pressed = MyGuiManager.GetInput().IsXButton1MousePressed();\n                        break;\n                    case MyMouseButtonsEnum.XButton2:\n                        pressed = MyGuiManager.GetInput().IsXButton2MousePressed();\n                        break;\n                }\n            }\n\n            if (m_joystickButton != MyJoystickButtonsEnum.None && pressed == false)\n            {\n                pressed = MyGuiManager.GetInput().IsJoystickButtonPressed(m_joystickButton);\n            }\n\n            if (m_joystickAxis != MyJoystickAxesEnum.None && pressed == false)\n            {\n                pressed = MyGuiManager.GetInput().IsJoystickAxisPressed(m_joystickAxis);\n            }\n\n            return pressed;\n        }\n\n        public bool IsNewPressed()\n        {\n            bool pressed = false;\n\n            if (m_keyboardKey != Keys.None)\n            {\n                pressed = MyGuiManager.GetInput().IsNewKeyPress(m_keyboardKey);\n                if (pressed == false)\n                {\n                    pressed = MyGuiManager.GetInput().IsNewKeyPress(m_keyboardKey2);\n                }\n            }\n\n            if (m_mouseButton != MyMouseButtonsEnum.None && pressed == false)\n            {\n                switch (m_mouseButton)\n                {\n                    case MyMouseButtonsEnum.Left:\n                        pressed = MyGuiManager.GetInput().IsNewLeftMousePressed();\n                        break;\n                    case MyMouseButtonsEnum.Middle:\n                        pressed = MyGuiManager.GetInput().IsNewMiddleMousePressed();\n                        break;\n                    case MyMouseButtonsEnum.Right:\n                        pressed = MyGuiManager.GetInput().IsNewRightMousePressed();\n                        break;\n                    case MyMouseButtonsEnum.XButton1:\n                        pressed = MyGuiManager.GetInput().IsNewXButton1MousePressed();\n                        break;\n                    case MyMouseButtonsEnum.XButton2:\n                        pressed = MyGuiManager.GetInput().IsNewXButton2MousePressed();\n                        break;\n                }\n            }\n\n            if (m_joystickButton != MyJoystickButtonsEnum.None && pressed == false)\n            {\n                pressed = MyGuiManager.GetInput().IsJoystickButtonNewPressed(m_joystickButton);\n            }\n\n            if (m_joystickAxis != MyJoystickAxesEnum.None && pressed == false)\n            {\n                pressed = MyGuiManager.GetInput().IsJoystickAxisNewPressed(m_joystickAxis);\n            }\n            return pressed;\n        }\n\n        public bool WasPressed()\n        {\n            bool pressed = false;\n\n            if (m_keyboardKey != Keys.None)\n            {\n                pressed = MyGuiManager.GetInput().WasKeyPressed(m_keyboardKey);\n                if (pressed == false)\n                {\n                    pressed = MyGuiManager.GetInput().WasKeyPressed(m_keyboardKey2);\n                }\n            }\n\n            if (m_mouseButton != MyMouseButtonsEnum.None && pressed == false)\n            {\n                switch (m_mouseButton)\n                {\n                    case MyMouseButtonsEnum.Left:\n                        pressed = MyGuiManager.GetInput().WasLeftMousePressed();\n                        break;\n                    case MyMouseButtonsEnum.Middle:\n                        pressed = MyGuiManager.GetInput().WasMiddleMousePressed();\n                        break;\n                    case MyMouseButtonsEnum.Right:\n                        pressed = MyGuiManager.GetInput().WasRightMousePressed();\n                        break;\n                    case MyMouseButtonsEnum.XButton1:\n                        pressed = MyGuiManager.GetInput().WasXButton1MousePressed();\n                        break;\n                    case MyMouseButtonsEnum.XButton2:\n                        pressed = MyGuiManager.GetInput().WasXButton2MousePressed();\n                        break;\n                }\n            }\n\n            if (m_joystickButton != MyJoystickButtonsEnum.None && pressed == false)\n            {\n                pressed = MyGuiManager.GetInput().WasJoystickButtonPressed(m_joystickButton);\n            }\n\n            if (m_joystickAxis != MyJoystickAxesEnum.None && pressed == false)\n            {\n                pressed = MyGuiManager.GetInput().WasJoystickAxisPressed(m_joystickAxis);\n            }\n            return pressed;\n        }\n\n        public bool IsNewReleased()\n        {\n            bool released = false;\n\n            if (m_keyboardKey != Keys.None)\n            {\n                released = MyGuiManager.GetInput().IsNewKeyReleased(m_keyboardKey);\n                if (released == false)\n                {\n                    released = MyGuiManager.GetInput().IsNewKeyReleased(m_keyboardKey2);\n                }\n            }\n\n            if (m_mouseButton != MyMouseButtonsEnum.None && released == false)\n            {\n                switch (m_mouseButton)\n                {\n                    case MyMouseButtonsEnum.Left:\n                        released = MyGuiManager.GetInput().IsNewLeftMouseReleased();\n                        break;\n                    case MyMouseButtonsEnum.Middle:\n                        released = MyGuiManager.GetInput().IsNewMiddleMouseReleased();\n                        break;\n                    case MyMouseButtonsEnum.Right:\n                        released = MyGuiManager.GetInput().IsNewRightMouseReleased();\n                        break;\n                    case MyMouseButtonsEnum.XButton1:\n                        released = MyGuiManager.GetInput().IsNewXButton1MouseReleased();\n                        break;\n                    case MyMouseButtonsEnum.XButton2:\n                        released = MyGuiManager.GetInput().IsNewXButton2MouseReleased();\n                        break;\n                }\n            }\n\n            if (m_joystickButton != MyJoystickButtonsEnum.None && released == false)\n            {\n                released = MyGuiManager.GetInput().IsNewJoystickButtonReleased(m_joystickButton);\n            }\n            if (m_joystickAxis != MyJoystickAxesEnum.None && released == false)\n            {\n                released = MyGuiManager.GetInput().IsNewJoystickAxisReleased(m_joystickAxis);\n            }\n\n            return released;\n        }\n\n        public bool WasReleased()\n        {\n            bool wasReleased = false;\n\n            if (m_keyboardKey != Keys.None)\n            {\n                wasReleased = MyGuiManager.GetInput().WasKeyReleased(m_keyboardKey);\n                if (wasReleased == false)\n                {\n                    wasReleased = MyGuiManager.GetInput().WasKeyReleased(m_keyboardKey2);\n                }\n            }\n\n            if (m_mouseButton != MyMouseButtonsEnum.None && wasReleased == false)\n            {\n                switch (m_mouseButton)\n                {\n                    case MyMouseButtonsEnum.Left:\n                        wasReleased = MyGuiManager.GetInput().WasLeftMouseReleased();\n                        break;\n                    case MyMouseButtonsEnum.Middle:\n                        wasReleased = MyGuiManager.GetInput().WasMiddleMouseReleased();\n                        break;\n                    case MyMouseButtonsEnum.Right:\n                        wasReleased = MyGuiManager.GetInput().WasRightMouseReleased();\n                        break;\n                    case MyMouseButtonsEnum.XButton1:\n                        wasReleased = MyGuiManager.GetInput().WasNewXButton1MouseReleased();\n                        break;\n                    case MyMouseButtonsEnum.XButton2:\n                        wasReleased = MyGuiManager.GetInput().WasNewXButton2MouseReleased();\n                        break;\n                }\n            }\n\n            if (m_joystickButton != MyJoystickButtonsEnum.None && wasReleased == false)\n            {\n                wasReleased = MyGuiManager.GetInput().WasJoystickButtonReleased(m_joystickButton);\n            }\n            if (m_joystickAxis != MyJoystickAxesEnum.None && wasReleased == false)\n            {\n                wasReleased = MyGuiManager.GetInput().WasJoystickAxisReleased(m_joystickAxis);\n            }\n\n            return wasReleased;\n        }\n\n\n        /// <summary>\n        /// Return the analog state between 0 (not pressed at all) and 1 (fully pressed).\n        /// If a digital button is mapped to an analog control, it can return only 0 or 1.\n        /// </summary>\n        public float GetAnalogState()\n        {\n            bool pressed = false;\n\n            if (m_keyboardKey != Keys.None)\n            {\n                pressed = MyGuiManager.GetInput().IsKeyPress(m_keyboardKey);\n                if (pressed == false)\n                {\n                    pressed = MyGuiManager.GetInput().IsKeyPress(m_keyboardKey2);\n                }\n            }\n\n            if (m_mouseButton != MyMouseButtonsEnum.None && pressed == false)\n            {\n                switch (m_mouseButton)\n                {\n                    case MyMouseButtonsEnum.Left:\n                        pressed = MyGuiManager.GetInput().IsLeftMousePressed();\n                        break;\n                    case MyMouseButtonsEnum.Middle:\n                        pressed = MyGuiManager.GetInput().IsMiddleMousePressed();\n                        break;\n                    case MyMouseButtonsEnum.Right:\n                        pressed = MyGuiManager.GetInput().IsRightMousePressed();\n                        break;\n                    case MyMouseButtonsEnum.XButton1:\n                        pressed = MyGuiManager.GetInput().IsXButton1MousePressed();\n                        break;\n                    case MyMouseButtonsEnum.XButton2:\n                        pressed = MyGuiManager.GetInput().IsXButton2MousePressed();\n                        break;\n                }\n            }\n\n            if (m_joystickButton != MyJoystickButtonsEnum.None && pressed == false)\n            {\n                pressed = MyGuiManager.GetInput().IsJoystickButtonPressed(m_joystickButton);\n            }\n\n            if (pressed) return 1;\n            \n            if (m_joystickAxis != MyJoystickAxesEnum.None)\n            {\n                return MyGuiManager.GetInput().GetJoystickAxisStateForGameplay(m_joystickAxis);\n            }\n            return 0;\n        }\n\n\n        public MyTextsWrapperEnum GetControlName()\n        {\n            return m_text;\n        }\n\n        public MyGuiControlTypeEnum GetControlTypeEnum()\n        {\n            return m_controlType;\n        }\n\n        public MyGameControlEnums? GetGameControlEnum()\n        {\n            return m_gameControl;\n        }\n\n        public MyEditorControlEnums? GetEditorControlEnum()\n        {\n            return m_editorControl;\n        }\n\n        public MyGuiGameControlType GetGameControlTypeEnum()\n        {\n            return m_gameControlType;\n        }\n\n        public String GetControlButtonName(MyGuiInputDeviceEnum deviceType)\n        {\n            return GetControlButtonStringBuilder(deviceType).ToString();\n        }\n\n        public StringBuilder GetControlButtonStringBuilder(MyGuiInputDeviceEnum deviceType)\n        {            \n            switch (deviceType)\n            {\n                case MyGuiInputDeviceEnum.Keyboard:\n                    if (m_keyboardKey != Keys.None)\n                        return new StringBuilder(MyKeysToString.GetKeyName(m_keyboardKey));\n                    break;\n                case MyGuiInputDeviceEnum.Mouse:\n                    switch(m_mouseButton)\n                    {\n                        case MyMouseButtonsEnum.Left: return MyTextsWrapper.Get(MyTextsWrapperEnum.LeftMouseButton);\n                        case MyMouseButtonsEnum.Middle: return MyTextsWrapper.Get(MyTextsWrapperEnum.MiddleMouseButton);\n                        case MyMouseButtonsEnum.Right: return MyTextsWrapper.Get(MyTextsWrapperEnum.RightMouseButton);\n                        case MyMouseButtonsEnum.XButton1: return MyTextsWrapper.Get(MyTextsWrapperEnum.MouseXButton1);\n                        case MyMouseButtonsEnum.XButton2: return MyTextsWrapper.Get(MyTextsWrapperEnum.MouseXButton2);\n                    }\n                    break;\n                case MyGuiInputDeviceEnum.Joystick:\n                    if (m_joystickButton != MyJoystickButtonsEnum.None)\n                    {\n                        switch (m_joystickButton)\n                        {\n                            case MyJoystickButtonsEnum.JDLeft: return MyTextsWrapper.Get(MyTextsWrapperEnum.JoystickButtonLeft);\n                            case MyJoystickButtonsEnum.JDRight: return MyTextsWrapper.Get(MyTextsWrapperEnum.JoystickButtonRight);\n                            case MyJoystickButtonsEnum.JDUp: return MyTextsWrapper.Get(MyTextsWrapperEnum.JoystickButtonUp);\n                            case MyJoystickButtonsEnum.JDDown: return MyTextsWrapper.Get(MyTextsWrapperEnum.JoystickButtonDown);\n                            default: \n                                StringBuilder buttonName = new StringBuilder(MyTextsWrapper.Get(MyTextsWrapperEnum.JoystickButton).ToString());\n                                return buttonName.Append(((int)m_joystickButton - 4).ToString());\n                        }\n                    }\n                    break;\n                case MyGuiInputDeviceEnum.JoystickAxis:\n                    if (m_joystickAxis != MyJoystickAxesEnum.None)\n                    {\n                        switch (m_joystickAxis)\n                        {\n                            case MyJoystickAxesEnum.Xpos: return MyTextsWrapper.Get(MyTextsWrapperEnum.JoystickAxisXpos);\n                            case MyJoystickAxesEnum.Xneg: return MyTextsWrapper.Get(MyTextsWrapperEnum.JoystickAxisXneg);\n                            case MyJoystickAxesEnum.Ypos: return MyTextsWrapper.Get(MyTextsWrapperEnum.JoystickAxisYpos);\n                            case MyJoystickAxesEnum.Yneg: return MyTextsWrapper.Get(MyTextsWrapperEnum.JoystickAxisYneg);\n                            case MyJoystickAxesEnum.Zpos: return MyTextsWrapper.Get(MyTextsWrapperEnum.JoystickAxisZpos);\n                            case MyJoystickAxesEnum.Zneg: return MyTextsWrapper.Get(MyTextsWrapperEnum.JoystickAxisZneg);\n                            case MyJoystickAxesEnum.RotationXpos: return MyTextsWrapper.Get(MyTextsWrapperEnum.JoystickRotationXpos);\n                            case MyJoystickAxesEnum.RotationXneg: return MyTextsWrapper.Get(MyTextsWrapperEnum.JoystickRotationXneg);\n                            case MyJoystickAxesEnum.RotationYpos: return MyTextsWrapper.Get(MyTextsWrapperEnum.JoystickRotationYpos);\n                            case MyJoystickAxesEnum.RotationYneg: return MyTextsWrapper.Get(MyTextsWrapperEnum.JoystickRotationYneg);\n                            case MyJoystickAxesEnum.RotationZpos: return MyTextsWrapper.Get(MyTextsWrapperEnum.JoystickRotationZpos);\n                            case MyJoystickAxesEnum.RotationZneg: return MyTextsWrapper.Get(MyTextsWrapperEnum.JoystickRotationZneg);\n                            case MyJoystickAxesEnum.Slider1pos: return MyTextsWrapper.Get(MyTextsWrapperEnum.JoystickSlider1pos);\n                            case MyJoystickAxesEnum.Slider1neg: return MyTextsWrapper.Get(MyTextsWrapperEnum.JoystickSlider1neg);\n                            case MyJoystickAxesEnum.Slider2pos: return MyTextsWrapper.Get(MyTextsWrapperEnum.JoystickSlider2pos);\n                            case MyJoystickAxesEnum.Slider2neg: return MyTextsWrapper.Get(MyTextsWrapperEnum.JoystickSlider2neg);\n                        }\n                    }\n                    break;\n            }\n            return MyTextsWrapper.Get(MyTextsWrapperEnum.UnknownControl);\n        }\n\n        public StringBuilder GetControlButtonStringBuilderCombined(string separator)\n        {\n            var result = new StringBuilder();\n\n            foreach (MyGuiInputDeviceEnum value in Enum.GetValues(typeof(MyGuiInputDeviceEnum)))\n            {\n                var name = GetControlButtonStringBuilder(value);\n                if (name != MyTextsWrapper.Get(MyTextsWrapperEnum.UnknownControl))\n                {\n                    if (result.Length != 0) result.Append(separator);\n                    result.Append(name);\n                }\n            }\n            if (result.Length == 0) result.Append(MyTextsWrapper.Get(MyTextsWrapperEnum.UnknownControl));\n            return result;\n        }\n\n            \n        public bool IsControlAssigned()\n        {\n            return (m_keyboardKey != Keys.None) || (m_joystickButton != MyJoystickButtonsEnum.None) || (m_mouseButton != MyMouseButtonsEnum.None) || (m_joystickAxis != MyJoystickAxesEnum.None);\n        }\n\n        public bool IsControlAssigned(MyGuiInputDeviceEnum deviceType)\n        {\n            bool isAssigned = false;\n            switch (deviceType)\n            {\n                case MyGuiInputDeviceEnum.Keyboard:\n                    isAssigned = m_keyboardKey != Keys.None;\n                    break;\n                case MyGuiInputDeviceEnum.Mouse:\n                    isAssigned = m_mouseButton != MyMouseButtonsEnum.None;\n                    break;\n                case MyGuiInputDeviceEnum.Joystick:\n                    isAssigned = m_joystickButton != MyJoystickButtonsEnum.None;\n                    break;\n                case MyGuiInputDeviceEnum.JoystickAxis:\n                    isAssigned = m_joystickAxis != MyJoystickAxesEnum.None;\n                    break;\n            }\n            return isAssigned;\n        }\n\n        #region ICloneable Members\n\n        public MyControl Clone()\n        {\n            MyControl copy = (MyControl)this.MemberwiseClone();\n            return copy;\n        }\n\n        object ICloneable.Clone()\n        {\n            return Clone();\n        }\n\n        #endregion\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Utils/MyCuboid.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing MinerWarsMath;\n\n \nnamespace MinerWars.AppCode.Game.Utils\n{\n    //  6 - 7  \n    // /   /|\n    //4|- 5 |\n    //|2 -|3\n    //|/  |/\n    //0 - 1                \n    public class MyCuboidSide\n    {\n        public MyPlane Plane = new MyPlane();\n        public MyLine[] Lines = new MyLine[4];\n\n        public MyCuboidSide()\n        {\n            Lines[0] = new MyLine();\n            Lines[1] = new MyLine();\n            Lines[2] = new MyLine();\n            Lines[3] = new MyLine();\n        }\n\n        public void CreatePlaneFromLines()\n        {\n            Plane.Normal = Vector3.Cross(Lines[1].Direction, Lines[0].Direction);\n            Plane.Point = Lines[0].From;\n        }\n    }\n\n    public class MyCuboid\n    {\n        public MyCuboidSide[] Sides = new MyCuboidSide[6];\n\n        public MyCuboid()\n        {\n            Sides[0] = new MyCuboidSide();\n            Sides[1] = new MyCuboidSide();\n            Sides[2] = new MyCuboidSide();\n            Sides[3] = new MyCuboidSide();\n            Sides[4] = new MyCuboidSide();\n            Sides[5] = new MyCuboidSide();\n        }\n\n        public IEnumerable<MyLine> UniqueLines\n        {\n            get\n            {\n                yield return Sides[0].Lines[0];\n                yield return Sides[0].Lines[1];\n                yield return Sides[0].Lines[2];\n                yield return Sides[0].Lines[3];\n\n                yield return Sides[1].Lines[0];\n                yield return Sides[1].Lines[1];\n                yield return Sides[1].Lines[2];\n                yield return Sides[1].Lines[3];\n\n                yield return Sides[2].Lines[0];\n                yield return Sides[2].Lines[2];\n                yield return Sides[4].Lines[1];\n                yield return Sides[5].Lines[2];\n            }\n        }\n\n        public IEnumerable<Vector3> Vertices\n        {\n            get\n            {\n                yield return Sides[2].Lines[1].From;\n                yield return Sides[2].Lines[1].To;\n                yield return Sides[0].Lines[1].From;\n                yield return Sides[0].Lines[1].To;\n\n                yield return Sides[1].Lines[2].From;\n                yield return Sides[1].Lines[2].To;\n                yield return Sides[3].Lines[2].From;\n                yield return Sides[3].Lines[2].To;\n            }\n        }\n\n        public void CreateFromVertices(Vector3[] vertices)\n        {\n            Vector3 min = new Vector3(float.MaxValue);\n            Vector3 max = new Vector3(float.MinValue);\n            foreach (Vector3 v in vertices)\n            {\n                min = Vector3.Min(v, min);\n                max = Vector3.Min(v, max);\n            }\n\n            MyLine line02 = new MyLine(vertices[0], vertices[2], false);\n            MyLine line23 = new MyLine(vertices[2], vertices[3], false);\n            MyLine line31 = new MyLine(vertices[3], vertices[1], false);\n            MyLine line10 = new MyLine(vertices[1], vertices[0], false);\n\n            MyLine line76 = new MyLine(vertices[7], vertices[6], false);\n            MyLine line64 = new MyLine(vertices[6], vertices[4], false);\n            MyLine line45 = new MyLine(vertices[4], vertices[5], false);\n            MyLine line57 = new MyLine(vertices[5], vertices[7], false);\n\n            MyLine line40 = new MyLine(vertices[4], vertices[0], false);\n            MyLine line01 = new MyLine(vertices[0], vertices[1], false);\n            MyLine line15 = new MyLine(vertices[1], vertices[5], false);\n            MyLine line54 = new MyLine(vertices[5], vertices[4], false);\n\n            MyLine line32 = new MyLine(vertices[3], vertices[2], false);\n            MyLine line26 = new MyLine(vertices[2], vertices[6], false);\n            MyLine line67 = new MyLine(vertices[6], vertices[7], false);\n            MyLine line73 = new MyLine(vertices[7], vertices[3], false);\n\n            MyLine line13 = new MyLine(vertices[1], vertices[3], false);\n            MyLine line37 = new MyLine(vertices[3], vertices[7], false);\n            MyLine line75 = new MyLine(vertices[7], vertices[5], false);\n            MyLine line51 = new MyLine(vertices[5], vertices[1], false);\n\n            MyLine line04 = new MyLine(vertices[0], vertices[4], false);\n            MyLine line46 = new MyLine(vertices[4], vertices[6], false);\n            MyLine line62 = new MyLine(vertices[6], vertices[2], false);\n            MyLine line20 = new MyLine(vertices[2], vertices[0], false);\n\n            Sides[0].Lines[0] = line02;\n            Sides[0].Lines[1] = line23;\n            Sides[0].Lines[2] = line31;\n            Sides[0].Lines[3] = line10;\n            Sides[0].CreatePlaneFromLines();\n\n            Sides[1].Lines[0] = line76;\n            Sides[1].Lines[1] = line64;\n            Sides[1].Lines[2] = line45;\n            Sides[1].Lines[3] = line57;\n            Sides[1].CreatePlaneFromLines();\n\n            Sides[2].Lines[0] = line40;\n            Sides[2].Lines[1] = line01;\n            Sides[2].Lines[2] = line15;\n            Sides[2].Lines[3] = line54;\n            Sides[2].CreatePlaneFromLines();\n\n            Sides[3].Lines[0] = line32;\n            Sides[3].Lines[1] = line26;\n            Sides[3].Lines[2] = line67;\n            Sides[3].Lines[3] = line73;\n            Sides[3].CreatePlaneFromLines();\n\n            Sides[4].Lines[0] = line13;\n            Sides[4].Lines[1] = line37;\n            Sides[4].Lines[2] = line75;\n            Sides[4].Lines[3] = line51;\n            Sides[4].CreatePlaneFromLines();\n\n            Sides[5].Lines[0] = line04;\n            Sides[5].Lines[1] = line46;\n            Sides[5].Lines[2] = line62;\n            Sides[5].Lines[3] = line20;\n            Sides[5].CreatePlaneFromLines();\n        }\n\n        public void CreateFromSizes(float width1, float depth1, float width2, float depth2, float length)\n        {\n            float halfLength = length * 0.5f;\n            float halfWidth1 = width1 * 0.5f;\n            float halfWidth2 = width2 * 0.5f;\n            float halfDepth1 = depth1 * 0.5f;\n            float halfDepth2 = depth2 * 0.5f;\n\n            Vector3[] vertices = new Vector3[8];\n            vertices[0] = new Vector3(-halfWidth2, -halfLength, -halfDepth2);\n            vertices[1] = new Vector3(halfWidth2, -halfLength, -halfDepth2);\n            vertices[2] = new Vector3(-halfWidth2, -halfLength, halfDepth2);\n            vertices[3] = new Vector3(halfWidth2, -halfLength, halfDepth2);\n            vertices[4] = new Vector3(-halfWidth1, halfLength, -halfDepth1);\n            vertices[5] = new Vector3(halfWidth1, halfLength, -halfDepth1);\n            vertices[6] = new Vector3(-halfWidth1, halfLength, halfDepth1);\n            vertices[7] = new Vector3(halfWidth1, halfLength, halfDepth1);\n\n            CreateFromVertices(vertices);\n        }\n\n        public BoundingBox GetAABB()\n        {\n            BoundingBox aabb = BoundingBoxHelper.InitialBox;\n\n            foreach (MyLine line in UniqueLines)\n            {\n                Vector3 from = line.From;\n                Vector3 to = line.To;\n                aabb = aabb.Include(ref from);\n                aabb = aabb.Include(ref to);\n            }\n\n            return aabb;\n        }\n\n        public BoundingBox GetLocalAABB()\n        {\n            BoundingBox aabb = GetAABB();\n\n            Vector3 center = aabb.GetCenter();\n            aabb.Min -= center;\n            aabb.Max -= center;\n\n            return aabb;\n        }\n\n        public MyCuboid CreateTransformed(ref Matrix worldMatrix)\n        {\n            Vector3[] vertices = new Vector3[8];\n\n            int i = 0;\n            foreach (Vector3 vertex in Vertices)\n            {\n                vertices[i] = Vector3.Transform(vertex, worldMatrix);\n                i++;\n            }\n\n            MyCuboid transformedCuboid = new MyCuboid();\n            transformedCuboid.CreateFromVertices(vertices);\n            return transformedCuboid;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Utils/MyCustomGraphicsDeviceManagerDX.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Reflection;\n//using MinerWarsMath;\n//using MinerWarsMath.Graphics;\nusing MinerWars.AppCode.App;\nusing System.Collections;\nusing System.Diagnostics;\nusing System.Linq;\nusing System.Timers;\nusing KeenSoftwareHouse.Library.Trace;\n\n\nusing SharpDX;\nusing SharpDX.Toolkit;\nusing SharpDX.Toolkit.Graphics;\n\nnamespace MinerWars.AppCode.Game.Utils\n{\n    public class MyCustomGraphicsDeviceManagerDX : GraphicsDeviceManager\n    {\n        /*\n        private struct ResourceInfo\n        {\n            /// <summary>\n            /// Gets or sets the resource.\n            /// </summary>\n            /// <value>\n            /// The resource.\n            /// </value>\n            public GraphicsResource Resource { get; set; }\n\n            /// <summary>\n            /// Gets or sets the name.\n            /// </summary>\n            /// <value>\n            /// The name.\n            /// </value>\n            public string AllocatedAt { get; set; }\n\n            /// <summary>\n            /// Gets or sets the size.\n            /// </summary>\n            /// <value>\n            /// The size.\n            /// </value>\n            public float Size { get; set; }\n        }\n\n        /// <summary>\n        /// \n        /// </summary>\n        private List<ResourceInfo> m_loadedResources = null;\n\n        /// <summary>\n        /// \n        /// </summary>\n        private static uint m_loadedResourceCounter;\n\n        /// <summary>\n        /// \n        /// </summary>\n        private readonly Timer m_sendTimer = new Timer(1000);\n                */\n        /// <summary>\n        /// \n        /// </summary>\n        private MyGraphicTest m_DXTest = null;\n\n        /// <summary>\n        /// Gets the size of the max texture.\n        /// </summary>\n        /// <value>\n        /// The size of the max texture.\n        /// </value>\n        public int MaxTextureSize { get; private set; }\n\n        /// <summary>\n        /// Gets whether the device supports Rgba1010102 RTs and nonpow2 texture mipmapping.\n        /// </summary>\n        public bool HDRSupported { get; private set; }\n\n        /// <summary>\n        /// Initializes a new instance of the <see cref=\"MyCustomGraphicsDeviceManager\"/> class.\n        /// </summary>\n        /// <param name=\"game\">Game the GraphicsDeviceManager should be associated with.</param>\n        public MyCustomGraphicsDeviceManagerDX(SharpDX.Toolkit.Game game)\n            : base(game)\n        {\n        }\n            /*\n        /// <summary>\n        /// Handles the ResourceCreated event of the GraphicsDevice control.\n        /// </summary>\n        /// <param name=\"sender\">The source of the event.</param>\n        /// <param name=\"e\">The <see cref=\"MinerWarsMath.Graphics.ResourceCreatedEventArgs\"/> instance containing the event data.</param>\n        private override void OnResourceCreated(object sender, ResourceCreatedEventArgs e)\n        {\n            var resource = (GraphicsResource)e.Resource;\n            float memory = 0;\n\n            do\n            {\n                var vb = resource as VertexBuffer;\n                if (vb != null)\n                {\n                    memory = ((float)(vb.VertexCount * vb.VertexDeclaration.VertexStride)) / (1000 * 1000);\n                    \n                    if (vb.BufferUsage == BufferUsage.WriteOnly)\n                    {\n                        memory *= 2;\n                    }\n                    \n                    break;\n                }\n\n                var ib = resource as IndexBuffer;\n                if (ib != null)\n                {\n                    memory += ((float)(ib.IndexCount * (ib.IndexElementSize == IndexElementSize.SixteenBits ? 2 : 4))) / (1000 * 1000);\n\n                    if (ib.BufferUsage == BufferUsage.WriteOnly)\n                    {\n                        memory *= 2;\n                    }\n\n                    break;\n                }\n\n                return;\n\n            } while (false);\n\n            StackTrace st = new StackTrace(3);\n            string allocatedAt = st.ToString();\n            resource.Name = (++m_loadedResourceCounter).ToString();\n\n            if (this.m_loadedResources == null)\n                return;\n\n            lock (m_loadedResources)\n            {\n                m_loadedResources.Add(new ResourceInfo { Resource = resource, AllocatedAt = allocatedAt, Size = memory });\n            }\n\n            //DbgSendLoadedResources();\n            //DbgSendResourceMemory();\n        }\n\n\n        static private List<ResourceInfo> SortByValue(List<ResourceInfo> stats)\n        {\n            stats.Sort(\n                delegate(ResourceInfo first,\n                ResourceInfo next)\n                {\n                    return next.Size.CompareTo(first.Size);\n                }\n            );\n\n            return stats;\n        }        \n\n        public void DebugDrawStatistics()\n        {\n            if (m_loadedResources == null)\n            {\n                MyDebugDraw.DrawText(new Vector2(100, 0), new System.Text.StringBuilder(\"Not available\"), Color.Red, 1);\n                return;\n            }\n\n            float totalMemory = 0;\n            Vector2 offset = new Vector2(100, 0);\n            foreach (ResourceInfo info in SortByValue(m_loadedResources))\n            {\n                totalMemory += info.Size;\n            }\n            MyDebugDraw.DrawText(offset, new System.Text.StringBuilder(\"Detailed resources statistics\"), Color.Yellow, 1);\n            offset.Y += 30;\n            MyDebugDraw.DrawText(offset, new System.Text.StringBuilder(\"Total memory: \"+ totalMemory.ToString()), Color.Yellow, 1);\n\n            float scale = 0.7f;\n            offset.Y += 30;\n            foreach (ResourceInfo info in SortByValue(m_loadedResources))\n            {\n                MyDebugDraw.DrawText(offset, new System.Text.StringBuilder(info.Resource.ToString() + \": \" + info.Size.ToString() + \"MB\"), Color.Yellow, scale);\n                offset.Y += 20;\n            }\n        }\n\n        /// <summary>\n        /// Handles the ResourceDestroyed event of the GraphicsDevice control.\n        /// </summary>\n        /// <param name=\"sender\">The source of the event.</param>\n        /// <param name=\"e\">The <see cref=\"MinerWarsMath.Graphics.ResourceDestroyedEventArgs\"/> instance containing the event data.</param>\n        private void OnResourceDestroyed(object sender, ResourceDestroyedEventArgs e)\n        {\n            if (string.IsNullOrWhiteSpace(e.Name))\n            {\n                return;\n            }\n\n\n            if (this.m_loadedResources != null)\n            {\n                lock (m_loadedResources)\n                {\n                    int index = m_loadedResources.FindIndex(resPair => resPair.Resource.Name == e.Name);\n\n                    Debug.Assert(index != -1);\n\n                    m_loadedResources.RemoveAt(index);\n                }\n            }\n\n            DbgSendLoadedResources();\n            DbgSendResourceMemory();\n        }\n\n        [Conditional(\"DEBUG\")]\n        public void DbgDumpLoadedResources(bool orderedBySize = false)\n        {\n            if (this.m_loadedResources == null)\n                return;\n            lock (this.m_loadedResources)\n            {\n                IEnumerable<ResourceInfo> dump;\n                if (orderedBySize)\n                {\n                    dump = m_loadedResources.OrderByDescending(ri => ri.Size);\n                }\n                else\n                {\n                    dump = m_loadedResources;\n                }\n\n                foreach (var loadedResource in dump)\n                {\n                    Debug.WriteLine(loadedResource.AllocatedAt, string.Format(\"{0}: {1} size: {2}MB\", loadedResource.Resource.GetType().Name, loadedResource.Resource.Name, loadedResource.Size));\n                }\n            }\n        }\n\n        /// <summary>\n        /// DBGs the send loded resources.\n        /// </summary>\n        [Conditional(\"DEBUG\")]\n        private void DbgSendLoadedResources()\n        {\n            if (this.m_loadedResources == null)\n                return;\n\n            lock (this.m_loadedResources)\n            {\n                this.m_sendTimer.Stop();\n                this.m_sendTimer.Start();\n            }\n        }\n\n        /// <summary>\n        /// DBGs the send resource memory.\n        /// </summary>\n        [Conditional(\"DEBUG\")]\n        private void DbgSendResourceMemory()\n        {\n            if (this.m_loadedResources == null)\n                return;\n\n            lock (this.m_loadedResources)\n            {\n                float totalMemory = m_loadedResources.Sum(loadedResource => loadedResource.Size);\n\n                Watch.Send(\"Used memory (GPU resources)\", totalMemory);\n            }\n        }  */\n\n        public bool ChangeProfileSupport()\n        {\n            bool isGraphicsSupported = true;\n            m_DXTest = new MyGraphicTest();\n            isGraphicsSupported &= m_DXTest.TestDX();\n\n            MaxTextureSize = m_DXTest.MaxTextureSize;\n            HDRSupported = m_DXTest.Rgba1010102Supported && m_DXTest.MipmapNonPow2Supported;\n\n            /*\n            MethodBase method = typeof(GraphicsAdapter).GetMethod(\"IsProfileSupported\", BindingFlags.Public | BindingFlags.Instance);\n            MyReflectionMethod.ReplaceMethod(typeof(MyGraphicsAdapterTest).GetMethod(\"IsProfileSupported\", BindingFlags.Public | BindingFlags.Instance), method);\n            MethodBase destination = typeof(GraphicsAdapter).GetMethod(\"IsProfileSupported\", BindingFlags.NonPublic | BindingFlags.Instance);\n            MyReflectionMethod.ReplaceMethod(typeof(MyGraphicsAdapterTest).GetMethod(\"IsProfileSupported\", BindingFlags.NonPublic | BindingFlags.Instance), destination);\n              */\n            return isGraphicsSupported;\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Utils/MyDDSFile.cs",
    "content": "﻿#define COLOR_SAVE_TO_ARGB\n\nusing System;\nusing System.IO;\nusing MinerWars.AppCode.App;\nusing SysUtils.Utils;\n\n//using MinerWarsMath.Graphics;\nusing SharpDX.Direct3D9;\n\n//  Read/Write dds files from/to files or from streams.\nnamespace MinerWars.AppCode.Game.Utils\n{\n    static class MyDDSFile\n    {\n        public static void DDSFromFile(string fileName, Device device, bool loadMipMap, int offsetMipMaps, out SharpDX.Direct3D9.Texture texture)\n        {\n            Stream stream = File.OpenRead(fileName);\n            SharpDX.Direct3D9.Texture tex;\n            InternalDDSFromStream(stream, device, 0, loadMipMap, offsetMipMaps, out tex);\n            stream.Close();\n            stream.Dispose();\n\n            texture = tex as SharpDX.Direct3D9.Texture;\n            if (texture == null)\n            {\n                throw new Exception(\"The data in the stream contains a TextureCube not Texture2D\");\n            }\n        }\n\n\n        public static void DDSFromFile(string fileName, Device device, bool loadMipMap, int offsetMipMaps, out CubeTexture texture)\n        {\n            Stream stream = File.OpenRead(fileName);\n            CubeTexture tex = null;\n            InternalDDSFromStream(stream, device, 0, loadMipMap, 0, out tex);\n            stream.Close();\n            stream.Dispose();\n\n            texture = tex as CubeTexture;\n            if (texture == null)\n            {\n                throw new Exception(\"Error while loading TextureCube\");\n            }\n        }\n\n      \n        //loads the data from a stream in to a texture object.\n        private static void InternalDDSFromStream(Stream stream, Device device, int streamOffset, bool loadMipMap, int offsetMipMaps, out SharpDX.Direct3D9.Texture texture)\n        {\n            stream.Position = 0;\n            if (offsetMipMaps == 0)\n            {\n                texture = SharpDX.Direct3D9.Texture.FromStream(device, stream, 0, 0, 0, Usage.None, Format.Unknown, Pool.Default, Filter.None, Filter.None, 0);\n            }\n            else\n            {\n                texture = SharpDX.Direct3D9.Texture.FromStream(device, stream, 0, 0, 0, Usage.Dynamic, Format.Unknown, Pool.Default, Filter.None, Filter.None, 0);\n\n                int width = MipMapSize(offsetMipMaps, texture.GetLevelDescription(0).Width);\n                int height = MipMapSize(offsetMipMaps, texture.GetLevelDescription(0).Height);\n                int maxLevels = Math.Min(MaxMipMapLevels(width), MaxMipMapLevels(height));\n                int actualLevels = Math.Min(maxLevels, texture.LevelCount - offsetMipMaps);\n\n                Format format = texture.GetLevelDescription(0).Format;\n                Texture offsetedTexture = new Texture(device, width, height, actualLevels, Usage.Dynamic, format, Pool.Default);\n                for (int i = offsetMipMaps, j = 0; j < actualLevels; i++, j++)\n                {\n                    int levelWidth = MipMapSize(j, width);\n                    int levelHeight = MipMapSize(j, height);\n\n                    SharpDX.DataStream ds;\n                    texture.LockRectangle(i, LockFlags.ReadOnly, out ds);\n                    texture.UnlockRectangle(i);\n\n                    SharpDX.DataStream ds2;\n                    offsetedTexture.LockRectangle(j, LockFlags.None, out ds2);\n                    ds2.Position = 0;\n                    ds2.Write(ds.DataPointer, 0, (int)MipMapSizeInBytes(levelWidth, levelHeight, format));\n                    offsetedTexture.UnlockRectangle(j);\n                }\n\n                texture.Dispose();\n                texture = offsetedTexture;\n            }\n        }\n\n\n\n        //Get the size in bytes for a mip-map level.\n        private static int MipMapSizeInBytes(int width, int height, Format compressionFormat)\n        {\n            switch (compressionFormat)\n            {\n                case Format.R32F:\n                    return width * height * 4;\n\n                case Format.R16F:\n                    return width * height * 2;\n\n                case Format.A32B32G32R32F:\n                    return width * height * 16;\n\n                case Format.A16B16G16R16F:\n                    return width * height * 8;\n\n                case Format.V8U8:\n                    return width * height * 2;\n\n                case Format.Q8W8V8U8:\n                    return width * height * 4;\n\n                case Format.G16R16F:\n                    return width * height * 4;\n\n                case Format.G32R32F:\n                    return width * height * 8;\n\n                case Format.A16B16G16R16:\n                    return width * height * 8;\n\n                case Format.Dxt1:\n                    {\n                        int blockSize = 8;\n                        return ((width + 3) / 4) * ((height + 3) / 4) * blockSize;\n                    }\n\n                case Format.Dxt2:\n                case Format.Dxt3:\n                case Format.Dxt4:\n                case Format.Dxt5:\n                    {\n                        int blockSize = 16;\n                        return ((width + 3) / 4) * ((height + 3) / 4) * blockSize;\n                    }\n\n                default:\n                    return width * height * 4;\n            }\n        }\n\n        //We need the the mip size, we shift until we get there but the smallest mip must be at least of 1 pixel.\n        private static int MipMapSize(int map, int size)\n        {\n            for (int i = 0; i < map; i++)\n                size >>= 1;\n            if (size < 4)\n                return 4;\n            return size;\n        }\n\n        private static int MaxMipMapLevels(int size)\n        {\n            int i = 0;\n            while (size >= 4)\n            {\n                i++;\n                size >>= 1;\n            }\n            return i;\n        }\n\n        //loads the data from a stream in to a texture object.\n        private static void InternalDDSFromStream(Stream stream, Device device, int streamOffset, bool loadMipMap, int offsetMipMaps, out CubeTexture texture)\n        {\n            stream.Position = 0;\n            texture = SharpDX.Direct3D9.CubeTexture.FromStream(device, stream, 0, 0, offsetMipMaps, Usage.None, Format.Unknown, Pool.Default, Filter.None, Filter.None, 0);\n        }\n\n\n        /// <summary>\n        /// Save a texture from memory to a file.\n        /// (Supported formats : Dxt1,Dxt3,Dxt5,A8R8G8B8/Color,A4R4G4B4,A1R5G5B5,R5G6B5,A8,\n        /// FP32/Single,FP16/HalfSingle,FP32x4/Vector4,FP16x4/HalfVector4,CxV8U8/NormalizedByte2/CxVU,Q8VW8V8U8/NormalizedByte4/8888QWVU\n        /// ,HalfVector2/G16R16F/16.16fGR,Vector2/G32R32F,G16R16/RG32/1616GB,A8B8G8R8,A2B10G10R10/Rgba1010102,A16B16G16R16/Rgba64)\n        /// </summary>\n        /// <param name=\"fileName\">The name of the file where you want to save the texture.</param>\n        /// <param name=\"saveMipMaps\">Save the complete mip-map chain ?</param>\n        /// <param name=\"texture\">The texture that you want to save.</param>\n        /// <param name=\"throwExceptionIfFileExist\">Throw an exception if the file exists ?</param>\n        public static void DDSToFile(string fileName, bool saveMipMaps, BaseTexture texture, bool throwExceptionIfFileExist)\n        {\n            if (throwExceptionIfFileExist && File.Exists(fileName))\n            {\n                throw new Exception(\"The file allready exists and \\\"throwExceptionIfFileExist\\\" is true\");\n            }\n\n            Stream fileStream = null;\n            try\n            {\n                fileStream = File.Create(fileName);\n                BaseTexture.ToStream(texture, ImageFileFormat.Dds);\n                //DDSToStream(fileStream, 0, saveMipMaps, texture);\n                // sometimes needed because of out of memory and this helps\n                //GC.Collect(2);\n            }            \n            catch (Exception x)\n            {\n                throw x;\n            }\n            finally\n            {\n                if (fileStream != null)\n                {\n                    fileStream.Close();\n                    fileStream = null;\n                }\n            }\n\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Utils/MyDebugDraw.cs",
    "content": "﻿using MinerWars.AppCode.App;\nusing SysUtils.Utils;\nusing System.Collections.Generic;\nusing System.Text;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Utils.VertexFormats;\nusing MinerWars.AppCode.Game.Effects;\nusing MinerWars.AppCode.Game.Render;\nusing MinerWars.AppCode.Game.Models;\n\nusing System;\n\nusing SharpDX.Direct3D9;\nusing SharpDX.Toolkit.Graphics;\n\n//  Class used for drawing 3D debug lines. All methods are optimised and can be used freely - of course only for debugging.\n\nnamespace MinerWars.AppCode.Game.Utils\n{\n    using Vector2 = MinerWarsMath.Vector2;\n    using Vector3 = MinerWarsMath.Vector3;\n    using Vector4 = MinerWarsMath.Vector4;\n    using Rectangle = MinerWarsMath.Rectangle;\n    using Matrix = MinerWarsMath.Matrix;\n    using Color = MinerWarsMath.Color;\n    using BoundingBox = MinerWarsMath.BoundingBox;\n    using BoundingSphere = MinerWarsMath.BoundingSphere;\n    using BoundingFrustum = MinerWarsMath.BoundingFrustum;\n    using MathHelper = MinerWarsMath.MathHelper;\n\n    \n\n    static class MyDebugDraw\n    {\n        static MyVertexFormatPositionColor[] m_verticesLine = null;\n        static MyVertexFormatPositionColor[] m_triangleVertices = null;\n\n        static List<MyVertexFormatPositionColor> m_moints;\n        static List<BoundingSphere> m_spheres;\n\n                                          /*\n        static Model m_modelSphere;\n        static Model m_modelSphereLowRes;\n        static Model m_modelHemisphere;\n        static Model m_modelBoxHiRes;\n        static Model m_modelBoxLowRes;\n        static Model m_modelCapsule;    */\n\n        static MyLineBatch m_lineBatch;\n        private static Vector3[] m_frustumCorners;\n        private static List<Vector3> m_coneVertex;\n\n        public static void LoadContent()\n        {\n            MyMwcLog.WriteLine(\"MyDebugDraw.LoadContent() - START\");\n            MyMwcLog.IncreaseIndent();\n\n            //  Line\n            m_verticesLine = new MyVertexFormatPositionColor[2];\n            m_verticesLine[0] = new MyVertexFormatPositionColor();\n            m_verticesLine[1] = new MyVertexFormatPositionColor();\n\n            //  Triangle\n            m_triangleVertices = new MyVertexFormatPositionColor[3];\n            m_triangleVertices[0] = new MyVertexFormatPositionColor();\n            m_triangleVertices[1] = new MyVertexFormatPositionColor();\n            m_triangleVertices[2] = new MyVertexFormatPositionColor();\n\n            m_moints = new List<MyVertexFormatPositionColor>();  \n            m_spheres = new List<BoundingSphere>();\n\n            /*\n            m_modelSphere = MyMinerGame.Static.Content.Load<Model>(\"Models2\\\\Debug\\\\Sphere\");\n            m_modelSphereLowRes = MyMinerGame.Static.Content.Load<Model>(\"Models2\\\\Debug\\\\Sphere_low\");\n            m_modelHemisphere = MyMinerGame.Static.Content.Load<Model>(\"Models2\\\\Debug\\\\Hemisphere\");\n            m_modelBoxHiRes = MyMinerGame.Static.Content.Load<Model>(\"Models2\\\\Debug\\\\BoxHiRes\");\n            m_modelBoxLowRes = MyMinerGame.Static.Content.Load<Model>(\"Models2\\\\Debug\\\\BoxLowRes\");\n            m_modelCapsule = MyMinerGame.Static.Content.Load<Model>(\"Models2\\\\Debug\\\\Capsule\");\n\n            m_lowResBoxEffect = (BasicEffect)m_modelBoxLowRes.Meshes[0].Effects[0];\n                                   */\n            m_lineBatch = new MyLineBatch(Matrix.Identity, Matrix.Identity, 128);\n\n            m_frustumCorners = new Vector3[8];\n            m_coneVertex = new List<Vector3>(32);\n\n            MyDebugDrawCoordSystem.LoadContent();\n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyDebugDraw.LoadContent() - END\");\n        }\n\n        public static void UnloadContent()\n        {\n        }\n\n        public static void DrawLine3D(Vector3 pointFrom, Vector3 pointTo, Color colorFrom, Color colorTo)\n        {\n            DrawLine3D(ref pointFrom, ref pointTo, ref colorFrom, ref colorTo);\n        }\n\n        public static void DrawLine3D(ref Vector3 pointFrom, ref Vector3 pointTo, ref Color colorFrom, ref Color colorTo)\n        {                 \n            Device graphicsDevice = MyMinerGame.Static.GraphicsDevice;\n            \n            //  Create the line vertices\n            m_verticesLine[0].Position = pointFrom;\n            m_verticesLine[0].Color = colorFrom.ToVector4();\n            m_verticesLine[1].Position = pointTo;\n            m_verticesLine[1].Color = colorTo.ToVector4();\n\n            var effect = (MyEffectModelsDiffuse)MyRender.GetEffect(MyEffects.ModelDiffuse);\n\n            effect.SetProjectionMatrix(Matrix.CreatePerspectiveFieldOfView(MyCamera.FovWithZoom, MyCamera.AspectRatio, 0.01f, 1000000));\n            effect.SetViewMatrix(MyCamera.ViewMatrix);\n            effect.SetWorldMatrix(Matrix.Identity);\n            effect.SetTechnique(MyEffectModelsDiffuse.Technique.PositionColor);\n\n            graphicsDevice.VertexDeclaration = MyVertexFormatPositionColor.VertexDeclaration;\n            //  Draw the line\n            effect.Begin();\n            graphicsDevice.DrawUserPrimitives(PrimitiveType.LineList, 0, 1, m_verticesLine);\n            effect.End();                \n        }\n\n        public static void DrawLine2D(Vector2 pointFrom, Vector2 pointTo, Color colorFrom, Color colorTo)\n        {   \n            Device graphicsDevice = MyMinerGame.Static.GraphicsDevice;\n\n            //  Create the line vertices\n            m_verticesLine[0].Position = new Vector3(pointFrom, 0);\n            m_verticesLine[0].Color = colorFrom.ToVector4();\n            m_verticesLine[1].Position = new Vector3(pointTo, 0);\n            m_verticesLine[1].Color = colorTo.ToVector4();\n\n            var effect = (MyEffectModelsDiffuse)MyRender.GetEffect(MyEffects.ModelDiffuse);\n\n            effect.SetProjectionMatrix(Matrix.CreateOrthographicOffCenter(0.0F, graphicsDevice.Viewport.Width, graphicsDevice.Viewport.Height, 0.0F, 0.0F, -1.0F));\n            effect.SetViewMatrix(Matrix.Identity);\n            effect.SetWorldMatrix(Matrix.Identity);\n            effect.SetTechnique(MyEffectModelsDiffuse.Technique.PositionColor);\n\n            graphicsDevice.VertexDeclaration = MyVertexFormatPositionColor.VertexDeclaration;\n\n            //  Draw the line\n            effect.Begin();\n            graphicsDevice.DrawUserPrimitives(PrimitiveType.LineList, 0, 1, m_verticesLine);\n            effect.End();\n        }\n\n\n        public static void AddDrawTriangle(Vector3 vertex1, Vector3 vertex2, Vector3 vertex3, Color color)\n        {       \n            m_moints.Add(new MyVertexFormatPositionColor(vertex1, color.ToVector4()));\n            m_moints.Add(new MyVertexFormatPositionColor(vertex2, color.ToVector4()));\n            m_moints.Add(new MyVertexFormatPositionColor(vertex3, color.ToVector4())); \n        }\n\n        public static void AddDrawSphereWireframe(BoundingSphere bs)\n        {\n            m_spheres.Add(bs);\n        }\n\n        public static void ClearAll()\n        {\n            m_spheres.Clear();\n            m_moints.Clear();\n        }\n\n        public static void Draw()\n        {                   \n            for (int i = 0; i < m_moints.Count / 3; i++)\n            {\n                MyVertexFormatPositionColor v1 = m_moints[i * 3 + 0];\n                MyVertexFormatPositionColor v2 = m_moints[i * 3 + 1];\n                MyVertexFormatPositionColor v3 = m_moints[i * 3 + 2];\n                DrawTriangle(v1.Position, v2.Position, v3.Position, v1.Color, v2.Color, v3.Color);\n            }\n\n            for (int i = 0; i < m_spheres.Count; i++)\n                DrawSphereWireframe(m_spheres[i].Center, m_spheres[i].Radius, Color.Red.ToVector3(), 1.0f);\n            \n            ClearAll();   \n        }\n\n        public static void DrawTriangle(Vector3 vertex1, Vector3 vertex2, Vector3 vertex3, Color color1, Color color2, Color color3)\n        {\n            DrawTriangle(vertex1, vertex2, vertex3, color1.ToVector4(), color2.ToVector4(), color3.ToVector4());\n        }\n\n        public static void DrawTriangle(Vector3 vertex1, Vector3 vertex2, Vector3 vertex3, Vector4 color1, Vector4 color2, Vector4 color3)\n        {     \n            Device graphicsDevice = MyMinerGame.Static.GraphicsDevice;\n\n            //  Create triangleVertexes vertices\n            m_triangleVertices[0] = new MyVertexFormatPositionColor(vertex1, color1);\n            m_triangleVertices[1] = new MyVertexFormatPositionColor(vertex2, color2);\n            m_triangleVertices[2] = new MyVertexFormatPositionColor(vertex3, color3);\n\n            var effect = (MyEffectModelsDiffuse)MyRender.GetEffect(MyEffects.ModelDiffuse);\n\n            // Initialise the effect\n            effect.SetProjectionMatrix(MyCamera.ProjectionMatrix);\n            effect.SetViewMatrix(MyCamera.ViewMatrix);\n            effect.SetTechnique(MyEffectModelsDiffuse.Technique.PositionColor);\n            graphicsDevice.VertexDeclaration = MyVertexFormatPositionColor.VertexDeclaration;\n\n            // Draw the line\n            effect.Begin();\n            graphicsDevice.VertexDeclaration = MyVertexFormatPositionColor.VertexDeclaration;\n            graphicsDevice.DrawUserPrimitives(PrimitiveType.TriangleStrip, 0, 1, m_triangleVertices);\n            effect.End();\n        }\n\n        public static void DrawSphereWireframe(Vector3 position, float radius, Vector3 diffuseColor, float alpha)\n        {                                                      \n            MyStateObjects.WireframeRasterizerState.Apply();\n            Matrix m = Matrix.Identity * radius;\n            m.M44 = 1;\n            m.Translation = position;\n            DrawModel(MySimpleObjectDraw.ModelSphere, m, diffuseColor, alpha);\n        }\n\n        public static void DrawSphereWireframe(Matrix worldMatrix, Vector3 diffuseColor, float alpha)\n        {\n            MyStateObjects.WireframeRasterizerState.Apply();\n            DrawModel(MySimpleObjectDraw.LightSphere, worldMatrix, diffuseColor, alpha);\n        }\n\n        public static void DrawHemisphereWireframe(Matrix worldMatrix, Vector3 diffuseColor, float alpha)\n        {\n            MyStateObjects.WireframeRasterizerState.Apply();\n            DrawModel(MySimpleObjectDraw.ModelHemisphereLowRes, worldMatrix, diffuseColor, alpha);\n        }\n\n        public static void DrawSphereSmooth(Matrix worldMatrix, Vector3 diffuseColor, float alpha)\n        {\n            RasterizerState.CullNone.Apply();\n            DrawModel(MySimpleObjectDraw.ModelSphere, worldMatrix, diffuseColor, alpha);\n        }\n\n        public static void DrawCapsuleWireframe(Matrix worldMatrix, Vector3 diffuseColor, float alpha)\n        {\n            MyStateObjects.WireframeRasterizerState.Apply();\n            DrawModel(MySimpleObjectDraw.Capsule, worldMatrix, diffuseColor, alpha);\n        }\n\n        public static void DrawCapsuleSmooth(Matrix worldMatrix, Vector3 diffuseColor, float alpha)\n        {\n            RasterizerState.CullNone.Apply();\n            DrawModel(MySimpleObjectDraw.Capsule, worldMatrix, diffuseColor, alpha);\n        }\n\n        public static void DrawSphereSmooth(Matrix worldMatrix, Matrix viewMatrix, Matrix projectionMatrix, Vector3 diffuseColor, float alpha)\n        {\n            RasterizerState.CullNone.Apply();\n            DrawModel(MySimpleObjectDraw.ModelSphere, worldMatrix, viewMatrix, projectionMatrix, diffuseColor, alpha);\n        }\n\n        public static void DrawSphereSmooth(Vector3 position, float radius, Vector3 diffuseColor, float alpha)\n        {\n            DrawSphereSmooth(Matrix.CreateScale(radius) * Matrix.CreateTranslation(position), diffuseColor, alpha);\n        }\n        \n        //  Draws hi-res wireframe box (its surface is split into many small triangles)\n        public static void DrawHiresBoxWireframe(Matrix worldMatrix, Vector3 diffuseColor, float alpha)\n        {                                                                    \n            MyStateObjects.WireframeRasterizerState.Apply();\n            DrawModel(MySimpleObjectDraw.ModelBoxHiRes, worldMatrix, diffuseColor, alpha);  \n        }\n\n        //  Draws hi-res smooth box (its surface is split into many small triangles)\n        public static void DrawHiresBoxSmooth(Matrix worldMatrix, Vector3 diffuseColor, float alpha)\n        {      \n            RasterizerState.CullNone.Apply();\n            DrawModel(MySimpleObjectDraw.ModelBoxHiRes, worldMatrix, diffuseColor, alpha);\n        }\n\n        //@ Draw world debug aabb\n        public static void DrawAABB(ref BoundingBox worldAABB, ref Vector4 color, float fScale)\n        {     \n            Vector3 size = worldAABB.Max - worldAABB.Min;\n            Vector3 center = size / 2f;\n            center = center + worldAABB.Min;\n            Matrix mat = Matrix.CreateWorld(center, new Vector3(0,0,-1), new Vector3(0,1,0));\n            MyDebugDraw.DrawHiresBoxWireframe(Matrix.CreateScale(size * fScale) * mat, new Vector3(color.X, color.Y, color.Z), color.W);            \n        }\n\n        //@ Draw world debug aabb\n        public static void DrawAABBLowRes(ref BoundingBox worldAABB, ref Vector4 color, float fScale)\n        { \n            Vector3 size = worldAABB.Max - worldAABB.Min;\n            Vector3 center = size / 2f;\n            center = center + worldAABB.Min;\n            Matrix mat = Matrix.CreateWorld(center, new Vector3(0, 0, -1), new Vector3(0, 1, 0));\n            MyDebugDraw.DrawLowresBoxWireframe(Matrix.CreateScale(size * fScale) * mat, new Vector3(color.X, color.Y, color.Z), color.W);  \n        }\n                           \n        public static void DrawAABBLine(ref BoundingBox worldAABB, ref Vector4 color, float fScale)\n        {\n            Color colorC = new Color(color);\n            Vector3 center = worldAABB.GetCenter();\n            Vector3 halfSize = worldAABB.Size() * fScale * 0.5f;\n\n            Vector3 v0 = new Vector3(center.X - halfSize.X, center.Y - halfSize.Y, center.Z - halfSize.Z);\n            Vector3 v1 = new Vector3(center.X + halfSize.X, center.Y - halfSize.Y, center.Z - halfSize.Z);\n            Vector3 v2 = new Vector3(center.X - halfSize.X, center.Y + halfSize.Y, center.Z - halfSize.Z);\n            Vector3 v3 = new Vector3(center.X + halfSize.X, center.Y + halfSize.Y, center.Z - halfSize.Z);\n            Vector3 v4 = new Vector3(center.X - halfSize.X, center.Y - halfSize.Y, center.Z + halfSize.Z);\n            Vector3 v5 = new Vector3(center.X + halfSize.X, center.Y - halfSize.Y, center.Z + halfSize.Z);\n            Vector3 v6 = new Vector3(center.X - halfSize.X, center.Y + halfSize.Y, center.Z + halfSize.Z);\n            Vector3 v7 = new Vector3(center.X + halfSize.X, center.Y + halfSize.Y, center.Z + halfSize.Z);\n\n            MyDebugDraw.DrawLine3D(ref v0, ref v1, ref colorC, ref colorC);\n            MyDebugDraw.DrawLine3D(ref v0, ref v2, ref colorC, ref colorC);\n            MyDebugDraw.DrawLine3D(ref v2, ref v3, ref colorC, ref colorC);\n            MyDebugDraw.DrawLine3D(ref v3, ref v1, ref colorC, ref colorC);\n            MyDebugDraw.DrawLine3D(ref v4, ref v5, ref colorC, ref colorC);\n            MyDebugDraw.DrawLine3D(ref v4, ref v6, ref colorC, ref colorC);\n            MyDebugDraw.DrawLine3D(ref v6, ref v7, ref colorC, ref colorC);\n            MyDebugDraw.DrawLine3D(ref v5, ref v7, ref colorC, ref colorC);\n            MyDebugDraw.DrawLine3D(ref v0, ref v4, ref colorC, ref colorC);\n            MyDebugDraw.DrawLine3D(ref v1, ref v5, ref colorC, ref colorC);\n            MyDebugDraw.DrawLine3D(ref v2, ref v6, ref colorC, ref colorC);\n            MyDebugDraw.DrawLine3D(ref v3, ref v7, ref colorC, ref colorC);\n        }\n                             \n        //@ Draw world debug aabb\n        public static void DrawAABBSolidLowRes(BoundingBox worldAABB, Vector4 color, float fScale)\n        {                    \n            Vector3 size = worldAABB.Max - worldAABB.Min;\n            Vector3 center = size / 2f;\n            center = center + worldAABB.Min;\n            Matrix mat = Matrix.CreateWorld(center, new Vector3(0, 0, -1), new Vector3(0, 1, 0));\n            MyDebugDraw.DrawLowresBoxSmooth(Matrix.CreateScale(size * fScale) * mat, new Vector3(color.X, color.Y, color.Z), color.W);            \n        }\n                              \n        //  Draws low-res wireframe box (12 triangles)\n        public static void DrawLowresBoxWireframe(Matrix worldMatrix, Vector3 diffuseColor, float alpha)\n        {     \n            MyStateObjects.WireframeRasterizerState.Apply();\n            DrawModel(MySimpleObjectDraw.ModelBoxLowRes, worldMatrix, diffuseColor, alpha);\n        }\n\n        //  Draws low-res smooth box (12 triangles)\n        public static void DrawLowresBoxSmooth(Matrix worldMatrix, Vector3 diffuseColor, float alpha)\n        {                                                                   \n            RasterizerState.CullNone.Apply();\n            DrawModel(MySimpleObjectDraw.ModelBoxLowRes, worldMatrix, diffuseColor, alpha);    \n        }\n    \n        //  Draws low-res smooth box (12 triangles)\n        public static void DrawLowresBoxSmooth(Vector3 position, Vector3 scale, Vector3 diffuseColor, float alpha)\n        {       \n            DrawLowresBoxSmooth(Matrix.CreateScale(scale) * Matrix.CreateTranslation(position), diffuseColor, alpha);            \n        }\n          \n        public static void DrawModel(MyModel model, Matrix worldMatrix, Vector3 diffuseColor, float alpha)\n        {\n            DrawModel(model, worldMatrix, MyCamera.ViewMatrix, MyCamera.ProjectionMatrix, diffuseColor, alpha);\n        }\n\n        public static void DrawModel(MyModel model, Matrix worldMatrix, Matrix viewMatrix, Matrix projectionMatrix, Vector3 diffuseColor, float alpha)\n        {\n            var effect = (MyEffectModelsDiffuse)MyRender.GetEffect(MyEffects.ModelDiffuse);\n\n            effect.SetWorldMatrix(worldMatrix);\n            effect.SetViewMatrix(ref viewMatrix);\n            effect.SetProjectionMatrix(ref projectionMatrix);\n            effect.SetDiffuseColor(new Vector4(diffuseColor, alpha));\n            effect.SetTechnique(MyEffectModelsDiffuse.Technique.Position);\n\n            effect.Begin();\n            model.Render();\n            effect.End();\n        }       \n\n        public static void DrawAxis(Matrix matrix, float axisLength, float alpha)\n        {\n            Vector3 pos = matrix.Translation;\n\n            MyDebugDraw.DrawLine3D(pos, pos + (matrix.Right * axisLength), Color.Red, Color.Red);\n            MyDebugDraw.DrawLine3D(pos, pos + (matrix.Up * axisLength), Color.Green, Color.Green);\n            MyDebugDraw.DrawLine3D(pos, pos + (matrix.Forward * axisLength), Color.Blue, Color.Blue);\n        }\n\n\n\n\n\n\n        /// <summary>\n        /// Draw debug text\n        /// </summary>\n        /// <param name=\"screenCoord\"></param>\n        /// <param name=\"text\"></param>\n        /// <param name=\"color\"></param>\n        /// <param name=\"scale\"></param>\n        public static float DrawText(Vector2 screenCoord, StringBuilder text, Color color, float scale)\n        {\n            MyGuiManager.BeginSpriteBatch();\n            float textLenght = MyGuiManager.GetFontMinerWarsWhite().DrawString(screenCoord, color, text, scale);\n            MyGuiManager.EndSpriteBatch();\n\n            return textLenght;\n        }\n\n        public static void DrawText(Vector3 worldCoord, StringBuilder text, Color color, float scale)\n        {\n            Vector4 screenCoord = Vector4.Transform(worldCoord, MyCamera.ViewProjectionMatrix);\n\n            if (screenCoord.Z > 0)\n            {\n                Vector2 projectedPoint2D = new Vector2(screenCoord.X / screenCoord.W / 2.0f + 0.5f, -screenCoord.Y / screenCoord.W / 2.0f + 0.5f);\n                projectedPoint2D = MyGuiManager.GetHudPixelCoordFromNormalizedCoord(projectedPoint2D);\n\n                DrawText(projectedPoint2D, text, color, scale);\n            }\n        }\n\n        public static void DrawBoundingFrustum(BoundingFrustum boundingFrustum, Color color)\n        {               \n            boundingFrustum.GetCorners(m_frustumCorners);\n\n            DrawCorners(m_frustumCorners, color);\n        }\n\n        public static void DrawCorners(Vector3[] corners, Color color)\n        {\n            m_lineBatch.Begin();\n\n            // near face            \n            m_lineBatch.DrawLine(corners[0], corners[1], color);\n            m_lineBatch.DrawLine(corners[1], corners[2], color);\n            m_lineBatch.DrawLine(corners[2], corners[3], color);\n            m_lineBatch.DrawLine(corners[3], corners[0], color);\n\n            // far face            \n            m_lineBatch.DrawLine(corners[4], corners[5], color);\n            m_lineBatch.DrawLine(corners[5], corners[6], color);\n            m_lineBatch.DrawLine(corners[6], corners[7], color);\n            m_lineBatch.DrawLine(corners[7], corners[4], color);\n\n            // top,right,bottom,left face            \n            m_lineBatch.DrawLine(corners[0], corners[4], color);\n            m_lineBatch.DrawLine(corners[1], corners[5], color);\n            m_lineBatch.DrawLine(corners[2], corners[6], color);\n            m_lineBatch.DrawLine(corners[3], corners[7], color);\n\n            m_lineBatch.End();\n        }\n\n        public static void DrawCone(Vector3 start, Vector3 end, float radius, Color color) \n        {            \n            m_coneVertex.Clear();\n            Vector3 forward = Vector3.Normalize(end - start);\n            Vector3 up = Vector3.Cross(forward, Vector3.Right);\n            float length = Vector3.Distance(end, start);\n            Matrix world = Matrix.CreateWorld(start, forward, up);            \n\n            float angleStep = MathHelper.TwoPi / 32;\n            \n            for (int i = 0; i < 32; i++) \n            {\n                Vector3 vertex = new Vector3();\n                vertex.X = (float)Math.Cos(i * angleStep) * radius;\n                vertex.Y = (float)Math.Sin(i * angleStep) * radius;\n                vertex.Z = length;\n                vertex = Vector3.Transform(vertex, world);\n                m_coneVertex.Add(vertex);\n            }\n\n            m_lineBatch.Begin();\n            // draw lines from start to ends\n            for (int i = 0; i < m_coneVertex.Count; i++) \n            {\n                m_lineBatch.DrawLine(start, m_coneVertex[i], color);                \n            }            \n            m_lineBatch.End();   \n        }\n\n        static public class TextBatch\n        {\n            struct TextData\n            {\n                public TextData(Vector2 screenCoord, StringBuilder text, Color color, float scale)\n                {\n                    this.screenCoord = screenCoord;\n                    this.color = color;\n                    this.text = text;\n                    this.scale = scale;\n                }\n\n                public Vector2 screenCoord;\n                public Color color;\n                public StringBuilder text;\n                public float scale;\n            }\n\n            static List<TextData> m_data = new List<TextData>();\n\n            static public void AddText(Vector2 screenCoord, StringBuilder text, Color color, float scale)\n            {\n                m_data.Add(new TextData(screenCoord, text, color, scale));\n            }\n\n            public static void AddText(Vector3 worldCoord, StringBuilder text, Color color, float scale)\n            {\n                Vector4 screenCoord = Vector4.Transform(worldCoord, MyCamera.ViewProjectionMatrix);\n\n                if (screenCoord.Z > 0)\n                {\n                    Vector2 projectedPoint2D = new Vector2(screenCoord.X / screenCoord.W / 2.0f + 0.5f, -screenCoord.Y / screenCoord.W / 2.0f + 0.5f);\n                    projectedPoint2D = MyGuiManager.GetHudPixelCoordFromNormalizedCoord(projectedPoint2D);\n\n                    AddText(projectedPoint2D, text, color, scale);\n                }\n            }\n\n            static public void Draw()\n            {\n                MyGuiManager.BeginSpriteBatch();\n\n                for (int i = 0; i < m_data.Count; i++)\n                {\n                    TextData data = m_data[i];\n                    MyGuiManager.GetFontMinerWarsWhite().DrawString(data.screenCoord, data.color, data.text, data.scale);\n                }\n                    \n                MyGuiManager.EndSpriteBatch();\n\n                m_data.Clear();\n            }\n        }\n      \n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Utils/MyDebugDrawCachedLines.cs",
    "content": "﻿using MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Managers;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.Utils;\n\nusing MinerWars.AppCode.Game.Utils.VertexFormats;\nusing MinerWars.AppCode.Game.Render;\nusing MinerWars.AppCode.Game.Effects;\n\nusing SharpDX.Direct3D9;\nusing SharpDX.Toolkit.Graphics;\n\n\n//  Use this class when you want draw many 3D lines at once and using DrawLine3D() will be extremely slow\n\nnamespace MinerWars.AppCode.Game.Utils\n{\n    using Vector2 = MinerWarsMath.Vector2;\n    using Vector3 = MinerWarsMath.Vector3;\n    using Vector4 = MinerWarsMath.Vector4;\n    using Rectangle = MinerWarsMath.Rectangle;\n    using Matrix = MinerWarsMath.Matrix;\n    using Color = MinerWarsMath.Color;\n    using BoundingBox = MinerWarsMath.BoundingBox;\n    using BoundingSphere = MinerWarsMath.BoundingSphere;\n    using BoundingFrustum = MinerWarsMath.BoundingFrustum;\n\n    static class MyDebugDrawCachedLines\n    {\n        static MyVertexFormatPositionColor[] m_verticesLine = null;\n        static int m_linesCount;\n\n        public static void LoadContent()\n        {\n            MyMwcLog.WriteLine(\"MyDebugDrawCachedLines.LoadContent() - START\");\n            MyMwcLog.IncreaseIndent();\n\n            Clear();\n\n            //  Line\n            m_verticesLine = new MyVertexFormatPositionColor[MyDebugDrawCachedLinesConstants.MAX_LINES_IN_CACHE * 2];\n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyDebugDrawCachedLines.LoadContent() - END\");\n        }\n\n        public static void UnloadContent()\n        {\n        }\n\n        //  Clear line cache\n        public static void Clear()\n        {\n            m_linesCount = 0;\n        }\n\n        //  Returns true if cache is full and no more lines can be added. Every consequent AddLine throws an exception.\n        //  So lines must be drawn and cache cleared\n        //  \"reserveDelta\" must be negative number and serves as a reserve when we are adding more triangles at once and need to know if we can add them all, or none\n        public static bool IsFull(int reserveDelta)\n        {\n            return m_linesCount >= (MyDebugDrawCachedLinesConstants.MAX_LINES_IN_CACHE + reserveDelta);\n        }\n\n        //  Add 3d line into cache, so then we can draw many lines at once - by calling DrawLinesFromCache()\n        public static void AddLine(Vector3 pointFrom, Vector3 pointTo, Color colorFrom, Color colorTo)\n        {\n            MyCommonDebugUtils.AssertDebug(IsFull(0) == false);\n\n            if (m_linesCount + 2 >= MyDebugDrawCachedLinesConstants.MAX_LINES_IN_CACHE)\n                return;\n\n            m_verticesLine[m_linesCount * 2 + 0].Position = pointFrom;\n            m_verticesLine[m_linesCount * 2 + 0].Color = colorFrom.ToVector4();\n            m_verticesLine[m_linesCount * 2 + 1].Position = pointTo;\n            m_verticesLine[m_linesCount * 2 + 1].Color = colorTo.ToVector4();\n            m_linesCount++;\n        }\n\n        public static void AddAABB(BoundingBox aabb, Color color)\n        {\n            Vector3 min = aabb.Min;\n            Vector3 max = aabb.Max;\n\n            // bottom\n            AddLine(min, new Vector3(max.X, min.Y, min.Z), color, color);\n            AddLine(new Vector3(max.X, max.Y, min.Z), new Vector3(max.X, min.Y, min.Z), color, color);\n\n            AddLine(min, new Vector3(min.X, max.Y, min.Z), color, color);\n            AddLine(new Vector3(max.X, max.Y, min.Z), new Vector3(min.X, max.Y, min.Z), color, color);\n\n            // top\n            AddLine(new Vector3(min.X, min.Y, max.Z), new Vector3(max.X, min.Y, max.Z), color, color);\n            AddLine(new Vector3(max.X, max.Y, max.Z), new Vector3(max.X, min.Y, max.Z), color, color);\n\n            AddLine(new Vector3(min.X, min.Y, max.Z), new Vector3(min.X, max.Y, max.Z), color, color);\n            AddLine(new Vector3(max.X, max.Y, max.Z), new Vector3(min.X, max.Y, max.Z), color, color);\n\n            // vertical lines\n            AddLine(new Vector3(min.X, min.Y, min.Z), new Vector3(min.X, min.Y, max.Z), color, color);\n            AddLine(new Vector3(max.X, min.Y, min.Z), new Vector3(max.X, min.Y, max.Z), color, color);\n\n            AddLine(new Vector3(min.X, max.Y, min.Z), new Vector3(min.X, max.Y, max.Z), color, color);\n            AddLine(new Vector3(max.X, max.Y, min.Z), new Vector3(max.X, max.Y, max.Z), color, color);\n        }\n\n        //  Draws cached lines (added by AddLineToCache)\n        public static void DrawLines()\n        {                           \n            if (m_linesCount <= 0) return;\n\n            Device graphicsDevice = MyMinerGame.Static.GraphicsDevice;\n\n            RasterizerState prev = RasterizerState.Current;\n            RasterizerState.CullNone.Apply();\n\n            var effect = (MyEffectModelsDiffuse)MyRender.GetEffect(MyEffects.ModelDiffuse);\n\n            effect.SetProjectionMatrix(MyCamera.ProjectionMatrix);\n            effect.SetViewMatrix(MyCamera.ViewMatrix);\n            effect.SetWorldMatrix(Matrix.Identity);\n            effect.SetDiffuseColor(Vector3.One);\n            effect.SetTechnique(MyEffectModelsDiffuse.Technique.PositionColor);\n            graphicsDevice.VertexDeclaration = MyVertexFormatPositionColor.VertexDeclaration;\n            \n            //  Draw the line                     \n            effect.Begin();\n            graphicsDevice.DrawUserPrimitives(PrimitiveType.LineList, 0, m_linesCount, m_verticesLine);\n            effect.End();\n\n            prev.Apply();\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Utils/MyDebugDrawCoordSystem.cs",
    "content": "﻿using MinerWarsMath;\nusing MinerWarsMath.Graphics;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils;\nusing MinerWars.AppCode.Game.Render;\n\nnamespace MinerWars.AppCode.Game.Utils\n{\n    static class MyDebugDrawCoordSystem\n    {\n        static MyDebugDrawCoordSystem()\n        {\n            Render.MyRender.RegisterRenderModule(MyRenderModuleEnum.DrawCoordSystem, \"Draw coord system\", MyDebugDrawCoordSystem.Draw, Render.MyRenderStage.DebugDraw, false);\n        }\n\n        public static void LoadContent()\n        {\n        }\n\n        public static void Draw()\n        {\n            const float axisLength = 100;\n            MyDebugDraw.DrawLine3D(new Vector3(0, 0, 0), new Vector3(axisLength, 0, 0), Color.Black, Color.Red);\n            MyDebugDraw.DrawLine3D(new Vector3(0, 0, 0), new Vector3(0, axisLength, 0), Color.Black, Color.Green);\n            MyDebugDraw.DrawLine3D(new Vector3(0, 0, 0), new Vector3(0, 0, axisLength), Color.Black, Color.Blue);\n\n            MyDebugDrawCurve.DrawCurve();\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Utils/MyDebugDrawCurve.cs",
    "content": "﻿using System;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Managers.Session;\n\n//  This class can be used for visualization of 2D curve (exp, log, hermite, etc).\n//  It will will display curve as series of lines on X interval <0..1>, ofcourse magnified so we can see it.\n//  Important is, that X is always in <0..1>. And Y too.\n\nnamespace MinerWars.AppCode.Game.Utils\n{\n    static class MyDebugDrawCurve\n    {\n        public static void DrawCurve()\n        {\n            Vector3 previousCoord = new Vector3();\n\n            const int CURVE_INTERPOLATION_POINTS = 30;\n            const float CURVE_X_LENGTH_IN_METRES = 10;\n\n            for (int i = 0; i <= CURVE_INTERPOLATION_POINTS; i++)\n            {\n                //  Right now we are in <0..1> range\n                Vector3 coord;\n                coord.X = i / (float)CURVE_INTERPOLATION_POINTS;\n                coord.Y = GetCurveY(coord.X);\n                coord.Z = 0;\n\n                //  This is just magnification so we can see the curve\n                coord *= CURVE_X_LENGTH_IN_METRES;\n\n                if (i > 0)\n                {\n                    MyDebugDraw.DrawLine3D(previousCoord, coord, Color.GreenYellow, Color.GreenYellow);\n                }\n\n                previousCoord = coord;                \n            }\n\n            //  Display boundings for  a curve\n            MyDebugDraw.DrawLine3D(Vector3.Zero, new Vector3(CURVE_X_LENGTH_IN_METRES, 0, 0), Color.White, Color.White);\n            MyDebugDraw.DrawLine3D(Vector3.Zero, new Vector3(0, CURVE_X_LENGTH_IN_METRES, 0), Color.White, Color.White);\n            MyDebugDraw.DrawLine3D(new Vector3(0, CURVE_X_LENGTH_IN_METRES, 0), new Vector3(CURVE_X_LENGTH_IN_METRES, CURVE_X_LENGTH_IN_METRES, 0), Color.White, Color.White);\n            MyDebugDraw.DrawLine3D(new Vector3(CURVE_X_LENGTH_IN_METRES, CURVE_X_LENGTH_IN_METRES, 0), new Vector3(CURVE_X_LENGTH_IN_METRES, 0, 0), Color.White, Color.White);\n        }\n\n        static float GetCurveY(float x)\n        {\n            //return x;\n            \n            //return 1 - (float)Math.Pow(x, 3f);\n\n            return (float)Math.Pow(x, 5f);\n\n            //return (float) Math.Exp(-(x*x));\n\n            //return (float)Math.Pow(1 - x, 5);\n\n            //return 1 - (float)Math.Pow(1 - x, 5);\n\n            //return (float)Math.Pow(1 - x, 3);\n\n            //return MathHelper.SmoothStep(0, 1, x);\n\n            //return MathHelper.Clamp(x + 0.2f, 0.2f, 1);\n\n            //return MathHelper.SmoothStep(0, 2, 1 - x);\n\n            //return (float)Math.Pow(x, 5);\n\n            //return 1 - (float)Math.Pow(x, 2);\n\n            //return (float)Math.Pow(x, 5);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Utils/MyEffectValuesManager.cs",
    "content": "﻿using Microsoft.Xna.Framework;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.Renders;\nusing MinerWars.AppCode.Game.HUD;\n\n//  This class holds and sets global constants for effects.\n\nnamespace MinerWars.AppCode.Game.Utils\n{\n    static class MyEffectValuesManager\n    {\n        /*\n         * \n         * \n         * TODO_NEW_RENDER \n         * \n         * \n        static float m_reflectorRange;\n        static Vector4 m_fogColor;\n        static Vector4 m_fogColorForBackground;\n        static float m_fogDistanceFar;\n        static float m_fogDistanceNear;\n        static Vector3 m_reflectorPosition;\n        static Vector3 m_reflectorPositionZero;\n        static float m_nearLightRange;\n        static Vector4 m_nearLightColor;\n        static Vector4 m_sunColor;\n        static float m_reflectorConeMaxAngleCos;\n        static Vector3 m_reflectorDirection;\n\n\n        //  Update specified effect with specular parameters\n        public static void UpdateSpecularParameters(MyEffect effect, float specularShininess, float specularPower)\n        {\n            effect.Shininess.SetValue(specularShininess);\n            effect.SpecularPower.SetValue(specularPower);\n        }\n\n        //  Update specified effect with common parameters but also change sun direction - needed for ship customization screen\n        public static void UpdateEffect(MyEffect effect)\n        {\n            effect.EyePosition.SetValue(MyCamera.PositionZero);\n            effect.ReflectorPosition.SetValue(m_reflectorPositionZero);\n\n            effect.ViewProjectionMatrix.SetValue(MyCamera.ViewProjectionMatrixAtZero);\n\n            if (effect.FogColor != null)\n            {\n                effect.FogColor.SetValue(m_fogColor);\n                effect.FogDistanceFar.SetValue(m_fogDistanceFar);\n                effect.FogDistanceNear.SetValue(m_fogDistanceNear);\n            }\n\n\n            if (effect.FogColorForBackground != null)\n            {\n                effect.FogColorForBackground.SetValue(m_fogColorForBackground);\n            }\n\n            if (effect.ReflectorRange != null)\n            {\n                effect.ReflectorRange.SetValue(m_reflectorRange);\n                effect.NearLightRange.SetValue(m_nearLightRange);\n\n                if (MyGuiScreenGameBase.Static.CameraAttachedTo == MyCameraAttachedToEnum.PlayerMinerShip)\n                {\n                    effect.ReflectorColor.SetValue(MyGuiScreenGameBase.Static.PlayerShip.Config.ReflectorLight.Level *\n                        MyGuiScreenGameBase.Static.PlayerShip.GetReflectorProperties().CurrentReflectorLightColor);\n                    effect.NearLightColor.SetValue(m_nearLightColor);\n                }\n                else\n                {\n                    effect.ReflectorColor.SetValue(MySpectator.ReflectorOn == true ?\n                        MyGuiScreenGameBase.Static.PlayerShip.GetReflectorProperties().CurrentReflectorLightColor : new Vector4(0, 0, 0, 0));\n                    effect.NearLightColor.SetValue(MySpectator.ReflectorOn == true ? m_nearLightColor : new Vector4(0, 0, 0, 0));\n                }\n\n                effect.ReflectorDirection.SetValue(m_reflectorDirection);\n                effect.ReflectorConeMaxAngleCos.SetValue(m_reflectorConeMaxAngleCos);\n            }\n\n            if (effect.SunColor != null)\n            {\n                effect.SunColor.SetValue(m_sunColor);\n                effect.DirectionToSun.SetValue(MyGuiScreenGameBase.Static.GetSectorGroup().GetDirectionToSunNormalized());\n            }\n        }\n\n        //  Cal this to update members of this class before every Draw\n        //  If forwardCamera = true, then this update was called for forward camera. If false, then for backward/mirror camera.\n        public static void Update()\n        {\n            if (MySunWind.IsActive == true)\n            {\n                //  Sun color altered by sun\n                m_sunColor = MySunWind.GetSunColor();\n            }\n            else\n            {\n                //  Default sector sun color\n                m_sunColor = MyGuiScreenGameBase.Static.GetSectorGroup().GetSunColor();\n            }\n\n            //  Fog for all objects and then fog for background cube\n            Vector4 sectorDustColor = MyGuiScreenGameBase.Static.SectorDustColor;\n            m_fogColorForBackground = new Vector4(sectorDustColor.X * sectorDustColor.W, sectorDustColor.Y * sectorDustColor.W, sectorDustColor.Z * sectorDustColor.W, 1);\n            m_fogColor = new Vector4(m_fogColorForBackground.X * 0.2f, m_fogColorForBackground.Y * 0.2f, m_fogColorForBackground.Z * 0.2f, m_fogColorForBackground.W);\n\n            //  Sun color contains a bit of fog/dust too\n            m_sunColor.X = MathHelper.Lerp(m_sunColor.X, m_fogColor.X, 0.1f);\n            m_sunColor.Y = MathHelper.Lerp(m_sunColor.Y, m_fogColor.Y, 0.1f);\n            m_sunColor.Z = MathHelper.Lerp(m_sunColor.Z, m_fogColor.Z, 0.1f);\n            m_sunColor.W = MathHelper.Lerp(m_sunColor.W, m_fogColor.W, 0.1f);\n\n            //  Fog is used to hide switching LOD on voxels, but ofcourse it has impact on models too\n            m_fogDistanceFar = 2000;\n            m_fogDistanceNear = 1500;\n\n            m_reflectorPositionZero = MyCamera.PositionZero + MyConstants.REFLECTOR_POSITION_DELTA.Y * MyCamera.UpVector + MyConstants.REFLECTOR_POSITION_DELTA.Z * MyCamera.ForwardVector;\n            m_reflectorPosition = m_reflectorPositionZero + MyCamera.Position;\n            \n            m_reflectorDirection = MyCamera.ForwardVector;\n\n            //  Every camera has reflector + near light. Reflector is spot light, near light is point light. They add together.\n            m_nearLightColor = MyGuiScreenGameBase.Static.PlayerShip.Light.Color;\n\n            //  Every camera has reflector + near light. Reflector is spot light, near light is point light. They add together.\n            //  This range is used formula where we use normalized distance. Because that one is calculated from FogEnd-FogStart, we need to set here value that is fraction of that.\n            m_nearLightRange = MyMinerShipConstants.MINER_SHIP_NEAR_LIGHT_RANGE;\n\n            //  This is max angle the reflector can light. It's in inverse cosinus (not radians, not degrees)!!!\n            //ReflectorConeMaxAngleCos = 1.0f - (float)Math.Cos(3.14f / 5.0f);\n            if (MyCamera.ActualCameraDirection == MyCameraDirection.FORWARD)\n            {\n                //  Reflector for forward camera\n                m_reflectorRange = MyGuiScreenGameBase.Static.PlayerShip.GetReflectorProperties().CurrentReflectorRangeForward;\n                m_reflectorConeMaxAngleCos = MyGuiScreenGameBase.Static.PlayerShip.GetReflectorProperties().CurrentReflectorConeAngleForward;\n            }\n            else\n            {\n                //  Reflector for backward camera\n                m_reflectorRange = MyGuiScreenGameBase.Static.PlayerShip.GetReflectorProperties().CurrentReflectorRangeBackward;\n                m_reflectorConeMaxAngleCos = MyGuiScreenGameBase.Static.PlayerShip.GetReflectorProperties().CurrentReflectorConeAngleBackward;\n            }\n        }\n\n        public static Vector4 GetSunColor()\n        {\n            return m_sunColor;\n        }\n\n        public static Vector4 GetNearLightColor()\n        {\n            return m_nearLightColor;\n        }\n\n        public static float GetReflectorConeMaxAngleCos()\n        {\n            return m_reflectorConeMaxAngleCos;\n        }\n\n        public static float GetReflectorRange()\n        {\n            return m_reflectorRange;\n        }*/\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Utils/MyEnumToStrings.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.AppCode.Game.Cockpit;\nusing MinerWars.AppCode.Game.Decals;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.HUD;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.AppCode.Game.VideoMode;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils.Utils;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing SysUtils;\nusing MinerWars.AppCode.Game.Localization;\n\nnamespace MinerWars.AppCode.Game.Utils\n{\n    //  I have made this mapping array because when using obfuscator, enum names change and when converted to string, they no more corresponds to file names\n    static partial class MyEnumsToStrings\n    {\n        public static string[] CameraDirection = new string[] { \"FORWARD\", \"BACKWARD\", \"SHIP_CUSTOMIZATION_SCREEN\" };\n\n        public static string[] Particles = new string[] { \n            \"Explosion.dds\", \n            \"ExplosionSmokeDebrisLine.dds\", \n            \"Smoke.dds\", \n            \"Test.dds\", \n            \"EngineThrustMiddle.dds\", \n            \"ReflectorCone.dds\", \n            \"ReflectorGlareAdditive.dds\", \n            \"ReflectorGlareAlphaBlended.dds\", \n            \"MuzzleFlashMachineGunFront.dds\",\n            \"MuzzleFlashMachineGunSide.dds\", \n            \"ProjectileTrailLine.dds\", \n            \"ContainerBorder.dds\",\n            \"Dust.dds\",\n            \"Crosshair.dds\",\n            \"Sun.dds\",\n            \"LightRay.dds\",\n            \"LightGlare.dds\",\n            \"SolarMapOrbitLine.dds\",\n            \"SolarMapSun.dds\",\n            \"SolarMapAsteroidField.dds\",\n            \"SolarMapFactionMap.dds\",\n            \"SolarMapAsteroid.dds\",\n            \"SolarMapZeroPlaneLine.dds\",\n            \"SolarMapSmallShip.dds\",\n            \"SolarMapLargeShip.dds\",\n            \"SolarMapOutpost.dds\",\n\n            \"Grid.dds\",\n            \"ContainerBorderSelected.dds\",\n\n            // Factions\n            \"FactionRussia.dds\",\n            \"FactionChina.dds\",\n            \"FactionJapan.dds\",\n            \"FactionUnitedKorea.dds\",\n            \"FactionFreeAsia.dds\",\n            \"FactionSaudi.dds\",\n            \"FactionEAC.dds\",\n            \"FactionCSR.dds\",\n            \"FactionIndia.dds\",\n            \"FactionChurch.dds\",\n            \"FactionOmnicorp.dds\",\n            \"FactionFourthReich.dds\",\n            \"FactionSlavers.dds\",\n\n            \"Smoke_b.dds\",\n            \"Smoke_c.dds\",\n\n            \"Sparks_a.dds\",\n            \"Sparks_b.dds\",\n            \"particle_stone.dds\",\n            \"Stardust.dds\",\n            \"particle_trash_a.dds\",\n            \"particle_trash_b.dds\",\n            \"particle_glare.dds\",\n            \"smoke_field.dds\",\n            \"Explosion_pieces.dds\",\n            \"particle_laser.dds\",\n            \"particle_nuclear.dds\",\n            \"Explosion_line.dds\",\n            \"particle_flash_a.dds\",\n            \"particle_flash_b.dds\",\n            \"particle_flash_c.dds\",\n            \"snap_point.dds\",\n\n            \"SolarMapNavigationMark.dds\",\n\n            \"Impostor_StaticAsteroid20m_A.dds\",\n            \"Impostor_StaticAsteroid20m_C.dds\",\n            \"Impostor_StaticAsteroid50m_D.dds\",\n            \"Impostor_StaticAsteroid50m_E.dds\",\n\n            \"GPS.dds\",\n            \"GPSBack.dds\",\n\n            \"ShotgunParticle.dds\",\n\n            \"ObjectiveDummyFace.dds\",\n            \"ObjectiveDummyLine.dds\",\n\n            \"SunDisk.dds\",\n\n            \"scanner_01.dds\",\n            \"Smoke_square.dds\",\n            \"Smoke_lit.dds\",\n\n            \"SolarMapSideMission.dds\",\n            \"SolarMapStoryMission.dds\",\n            \"SolarMapTemplateMission.dds\",\n            \"SolarMapPlayer.dds\",\n        };\n\n        public static string[] HudTextures = new string[] { \"Line.tga\", \"DirectionIndicator_blue.png\", \"DirectionIndicator_green.png\", \"DirectionIndicator_red.png\", \"DirectionIndicator_white.png\",\n            \"Target.png\", \"Crosshair_locked.png\", \"Crosshair_side_locked.png\", \"Crosshair01.png\", \"HorizontalLineLeft.png\", \"HorizontalLineRight.png\", \"damage_direction.png\", \"BackCameraOverlay.png\",/* \"RadarOverlay.png\",*/ \"Rectangle.png\", \n            \"hudStatusArmor_blue.png\", \"hudStatusArmor_red.png\", \"hudStatusFuel_blue.png\", \"hudStatusFuel_red.png\", \n            \"hudStatusOxygen_blue.png\", \"hudStatusOxygen_red.png\", \"hudStatusPlayerHealth_blue.png\", \"hudStatusPlayerHealth_red.png\", \"hudStatusShipDamage_blue.png\", \"hudStatusShipDamage_red.png\", \n            \"hudStatusSpeed.png\", \"hudStatusBar_blue.png\", \"hudStatusBar_red.png\", \"hudUnderbarSmall.png\", \"hudUnderbarBig.png\",\"BlueTarget.png\",\"GreenTarget.png\",\"RedTarget.png\", \"CargoBoxIndicator.png\",\n            \"Unpowered_blue.png\", \"Unpowered_green.png\", \"Unpowered_red.png\", \"Unpowered_white.png\", \"HudOre.png\", \"crosshair_nazzi.png\", \"crosshair_omnicorp.png\", \"crosshair_russian.png\", \"crosshair_templary.png\", \"Sun.tga\",\n            \"crosshair_nazzi_red.png\", \"crosshair_omnicorp_red.png\", \"crosshair_russian_red.png\", \"crosshair_templary_red.png\", \"Crosshair01_red.png\",\n        };\n\n        public static string[] HudRadarTextures = new string[] {\"Arrow.png\", \"ImportantObject.tga\", \"LargeShip.tga\",\n            \"Line.tga\", \"RadarBackground.tga\", \"RadarPlane.tga\", \"SectorBorder.tga\",\n            \"SmallShip.tga\", \"Sphere.png\", \"SphereGrid.tga\", \"Sun.tga\" , \"OreDeposit_Treasure.png\", \"OreDeposit_Helium.png\",\n            \"OreDeposit_Ice.png\", \"OreDeposit_Iron.png\", \"OreDeposit_Lava.png\", \"OreDeposit_Gold.png\", \"OreDeposit_Platinum.png\", \n            \"OreDeposit_Silver.png\", \"OreDeposit_Silicon.png\", \"OreDeposit_Organic.png\", \"OreDeposit_Nickel.png\", \"OreDeposit_Magnesium.png\", \n            \"OreDeposit_Uranite.png\", \"OreDeposit_Cobalt.png\", \"OreDeposit_Snow.png\" };\n\n        public static string[] Decals = new string[] { \"ExplosionSmut\", \"BulletHoleOnMetal\", \"BulletHoleOnRock\" };\n\n        public static string[] CockpitGlassDecals = new string[] { \"DirtOnGlass\", \"BulletHoleOnGlass\", \"BulletHoleSmallOnGlass\" };\n\n        public static string[] CameraAttachedTo = new string[] { \"PlayerShip\", \"BotMinerShip\", \"PlayerMinerShip_ThirdPersonStatic\", \n            \"PlayerMinerShip_ThirdPersonFollowing\", \"Spectator\", \"PlayerMinerShip_ThirdPersonDynamic\", \"Drone\", \"Camera\", \"LargeWeapon\" };\n\n        //public static string[] Sounds = new string[] { \"GuiMouseClick\", \"GuiMouseOver\",\n        //    \"GuiEditorFlyOutsideBorder\", \"GuiEditorObjectAttach\", \"GuiEditorObjectDelete\", \"GuiEditorObjectDetach\",\n        //    \"GuiEditorObjectMoveInvalid\", \"GuiEditorObjectMoveStep\", \"GuiEditorObjectRotateStep\", \"GuiEditorObjectSelect\",\n        //    \"GuiEditorPrefabCommit\", \"GuiEditorPrefabEnter\", \"GuiEditorPrefabExit\",\n        //    \"GuiEditorVoxelHandAdd\", \"GuiEditorVoxelHandRemove\", \"GuiEditorVoxelHandSoften\",\"GuiEditorVoxelHandMaterial\",\"GuiEditorVoxelHandSwitch\",\n        //    \"GuiWheelControlOpen\", \"GuiWheelControlClose\",\n        //    \"ImpRockCollideMetal\", \"ImpRockCollideRock\", \"ImpBulletHitRock\", \"ImpBulletHitMetal\", \"ImpBulletHitGlass\", \"ImpBulletHitShip\", \n        //    \"ImpExpHitGlass\",\"ImpExpHitMetal\",\"ImpExpHitShip\",\"ImpExpHitRock\",\n        //    \"ImpShipCollideMetal\", \"ImpShipCollideRock\", \"ImpPlayerShipCollideMetal\", \"ImpPlayerShipCollideRock\", \"ImpPlayerShipCollideShip\", \"ImpPlayerShipScrapeShipLoop\", \"ImpPlayerShipScrapeShipRelease\",\n        //    \"VehShipaEngineIdle2d\", \"VehShipaEngineIdle3d\", \"VehShipaEngineHigh2d\", \"VehShipaEngineHigh3d\", \"VehShipaThrust2d\", \"VehShipaThrust3d\", \"VehShipaLightsOn\", \"VehShipaLightsOff\", \n        //    \"VehShipaEngineOn\", \"VehShipaEngineOff\", \n\n        //    \"VehHarvesterTubeRelease2d\",\"VehHarvesterTubeRelease3d\",\"VehHarvesterTubeMovingLoop2d\",\"VehHarvesterTubeMovingLoop3d\",\n        //    \"VehHarvesterTubeColliding2d\",\"VehHarvesterTubeColliding3d\",\"VehHarvesterTubeCollision2d\",\"VehHarvesterTubeCollision3d\",\"VehHarvesterTubeImplode2d\",\n        //    \"VehHarvesterTubeImplode3d\",\"VehToolCrusherDrillLoop2d\",\"VehToolCrusherDrillLoop3d\",\"VehToolCrusherDrillRelease2d\",\"VehToolCrusherDrillRelease3d\",\n        //    \"VehToolCrusherDrillColliding2d\",\"VehToolCrusherDrillColliding3d\", \"VehToolCrusherDrillCollidingRelease2d\",\"VehToolCrusherDrillCollidingRelease3d\",\n\n        //    \"VehToolThermalDrillLoop2d\", \"VehToolThermalDrillLoop3d\",\"VehToolThermalDrillRelease2d\",\"VehToolThermalDrillRelease3d\",\n        //    \"VehToolSawCut2d\", \"VehToolSawCut3d\", \"VehToolSawLoop2d\", \"VehToolSawLoop3d\", \"VehToolSawRelease2d\", \"VehToolSawRelease3d\",\n        //    \"VehToolLaserDrillLoop2d\", \"VehToolLaserDrillLoop3d\",\"VehToolLaserDrillRelease2d\",\"VehToolLaserDrillRelease3d\",\n        //    \"WepMissileLock\", \"WepMissileFly\", \"WepMissileExplosion\", \"WepMissileLaunch2d\", \"WepMissileLaunch3d\", \"WepAutocanonFire2d\", \"WepAutocanonFire3d\", \"WepAutocanonRel2d\", \"WepAutocanonRel3d\",\n        //    \"WepSniperScopeZoomRel\", \"WepSniperScopeZoomALoop\", \"WepSniperNormFire2d\",\"WepSniperHighFire2d\", \"WepSniperNormFire3d\",\"WepSniperHighFire3d\", \"WepMineMoveALoop\",\"WepUnivLaunch2d\",\"WepUnivLaunch3d\",\"WepArsHighShot2d\",\"WepArsHighShot3d\",\"WepArsNormShot2d\", \"WepArsNormShot3d\",\n        //    \"WepBombExplosion\",\n        //    \"WepLargeShipAutocannonRotate\",\n        //    \"WepMachineGunHighFire2d\",\"WepMachineGunHighFire3d\",\"WepMachineGunHighRel2d\",\"WepMachineGunHighRel3d\",\"WepMachineGunNormFire2d\",\"WepMachineGunNormFire3d\",\"WepMachineGunNormRel2d\",\"WepMachineGunNormRel3d\",\n        //    \"WepShotgunNormShot2d\", \"WepShotgunNormShot3d\", \"WepShotgunHighShot2d\", \"WepShotgunHighShot3d\",\n        //    \"WepRailNormShot3d\",\"WepRailNormShot2d\",\"WepRailHighShot3d\",\"WepRailHighShot2d\",\n        //    \"WepBombSmartTimer\",\"WepBombSmartSmoke\",\"WepBombSmartPlant\",\"WepBombSmartDrone\",\"WepBombGravSuck\",\"WepBombFlash\", \n        //    \"SfxSolarWind\", \"SfxHudBackcameraOn\",\"SfxHudBackcameraOff\", \"SfxPlayerBreath\", \"SfxShipSmallExplosion\", \"SfxHudReflectorRange\", \"SfxHudSlowMovementOff\", \"SfxHudSlowMovementOn\", \"SfxHudAutolevelingOn\", \"SfxHudAutolevelingOff\", \n        //    \"SfxHudWeaponScroll\", \"SfxHudWeaponSelect\", \"SfxHudRadarMode\",\"SfxHudCockpitOn\", \"SfxHudCockpitOff\", \"SfxSpark\",\n        //    \"MusMainMenu\", \"MusStoryAmbient\", \"MusStoryMission01\", \n        //    \"MovDoor1AClose\",\"MovDoor1AOpen\", \n        //    \"MovDoor1BClose\",\"MovDoor1BOpen\", \n        //    \"MovDoor2AClose\",\"MovDoor2AOpen\", \n        //    \"MovDoor2BClose\",\"MovDoor2BOpen\", \n        //    \"MovDoor3AClose\",\"MovDoor3AOpen\", \n        //    \"HudFuelLowWarning\", \"HudFuelCriticalWarning\",\n        //    \"HudOxygenLowWarning\", \"HudOxygenCriticalWarning\", \"HudLowBatteryWarning\", \"HudNoBatteryWarning\", \"HudDamageAlertWarning\", \"HudDamageCriticalWarning\",\n        //    \"HudAmmoCriticalWarning\", \"HudAmmoLowWarning\", \"HudArmorCriticalWarning\", \"HudArmorLowWarning\", \"HudDestinationReached\", \"HudRadarJammedWarning\",\n        //    \"SfxTargetDestroyed\", \"HudRadiationWarning\",\"SfxGeigerCounterHeavyLoop\", \"HudEnemyAlertWarning\", \"HudFriendlyFireWarning\", \"HudHarvestingComplete\", \"HudIndestructDrillWarning\",\n        //    \"HudSolarFlareWarning\", \"HudIndestructHarvest\", \"HudInventoryComplete\", \"HudInventoryFullWarning\", \"HudInventoryTransfer\", \"HudObjectiveComplete\", \"HudGameOver\",\n        //    \"HudHealthLowWarning\", \"HudHealthCriticalWarning\", \"HudMissionComplete\", \"SfxClaxonAlert\",\n        //    \"VehToolCrusherDrillIdle2d\", \"VehToolCrusherDrillIdle3d\", \"VehToolLaserDrillIdle2d\", \"VehToolLaserDrillIdle3d\", \"VehToolSawIdle2d\", \"VehToolSawIdle3d\", \"VehToolThermalDrillIdle2d\", \"VehToolThermalDrillIdle3d\", \"SfxGps\", \"SfxGpsFail\", \n        //    \"MusHorrorOrMystery\", \"MusLightFight\", \"MusTensionBeforeAnAction\", \"MusCalmAtmosphere\", \"MusHeavyFight\", \"MusVictory\", \"MusSadnessOrDesperation\", \"MusStressOrTimeRush\", \"MusStealthAction\", \"MusDesperateWithStress\", \"MenuWelcome\",\n\n        //    \"MovDock1Start\", \"MovDock1Loop\", \"MovDock1End\", \"MovDock2Start\", \"MovDock2Loop\", \"MovDock2End\",\"MovDock3Start\", \"MovDock3Loop\", \"MovDock3End\", \n        //    \"VehCH1EngineHigh2d\", \"VehCH1EngineHigh3d\", \"VehCH1EngineIdle2d\", \"VehCH1EngineIdle3d\", \"VehEL1EngineHigh2d\", \"VehEL1EngineHigh3d\", \"VehEL1EngineIdle2d\", \"VehEL1EngineIdle3d\",\n        //    \"VehEL1EngineOff\", \"VehEL1EngineOn\", \"VehNU1EngineHigh2d\", \"VehNU1EngineHigh3d\", \"VehNU1EngineIdle2d\", \"VehNU1EngineIdle3d\", \"ImpShipQuake\",\n\n        //    \"Amb2D_RoomLarge01\", \"Amb2D_RoomLarge02\", \"Amb2D_RoomLarge03\", \"Amb2D_RoomLarge04\", \"Amb2D_RoomLarge05\", \"Amb2D_RoomMed01\", \"Amb2D_RoomMed02\", \"Amb2D_RoomMed03\", \"Amb2D_RoomMed04\", \"Amb2D_RoomMed05\",\n        //    \"Amb2D_RoomSmall01\", \"Amb2D_RoomSmall02\", \"Amb2D_RoomSmall03\", \"Amb2D_RoomSmall04\", \"Amb2D_StressLoop\", \"Amb2D_TunnelLarge01\", \"Amb2D_TunnelMedium01\", \"Amb2D_TunnelSmall01\", \"Amb3D_Electrical01\", \"Amb3D_Electrical02\", \n        //    \"Amb3D_FanLargeDamaged\", \"Amb3D_FanLargeDestroyed\", \"Amb3D_FanLargeNormal\", \"Amb3D_FanMediumDamaged\", \"Amb3D_FanMediumDestroyed\", \"Amb3D_FanMediumNormal\", \"Amb3D_FanSmallDamaged\", \"Amb3D_FanSmallDestroyed\", \"Amb3D_FanSmallNormal\",\n        //    \"Amb3D_GenLargeDamaged\", \"Amb3D_GenLargeDestroyed\", \"Amb3D_GenLargeNormal\", \"Amb3D_GenMediumDamaged\", \"Amb3D_GenMediumDestroyed\", \"Amb3D_GenMediumNormal\", \"Amb3D_GenSmallDamaged\", \"Amb3D_GenSmallDestroyed\", \"Amb3D_GenSmallNormal\",\n        //    \"Amb3D_PipeFlow01\", \"Amb3D_RadioChatterAllied01-04\", \"Amb3D_RadioChatterAllied05-08\", \"Amb3D_RadioChatterAllied09-12\", \"Amb3D_RadioChatterAllied13-16\", \"Amb3D_RadioChatterChinese01-04\", \"Amb3D_RadioChatterChinese05-08\", \n        //    \"Amb3D_RadioChatterChinese09-12\", \"Amb3D_RadioChatterChinese13-16\", \"Amb3D_RadioChatterRussian01-04\", \"Amb3D_RadioChatterRussian05-08\", \"Amb3D_RadioChatterRussian09-12\", \"Amb3D_RadioChatterRussian13-16\", \"Amb3D_Spark01\",\n        //    \"Amb3D_SteamDischarge01\", \"Amb3D_SteamDischarge02\", \"Amb3D_SteamDischarge03\", \"Amb3D_SteamDischarge04\", \"Amb3D_SteamLoop01\", \"Amb3D_SteamLoop02\", \"Amb3D_SteamLoop03\", \"Amb3D_SteamLoop04\", \"Amb3D_SteamLoop05\", \"Amb3D_ThunderClapLarge\",\n        //    \"Amb3D_ThunderClapMed\", \"Amb3D_ThunderClapSmall\", \"Amb3D_Welding01\",\n\n        //    \"VehToolLaserDrillColliding2d\", \"VehToolLaserDrillColliding3d\", \"VehToolLaserDrillCollidingRelease2d\", \"VehToolLaserDrillCollidingRelease3d\", \n        //    \"VehToolThermalDrillColliding2d\", \"VehToolThermalDrillColliding3d\", \"VehToolThermalDrillCollidingRelease2d\", \"VehToolThermalDrillCollidingRelease3d\",\n\n        //    \"SfxProgressHack\", \"SfxCancelHack\", \"SfxProgressRepair\", \"SfxProgressBuild\", \"SfxCancelRepair\", \"SfxCancelBuild\", \"Amb3D_GenXstart\", \"Amb3D_GenXloop\", \"SfxAlertVoc\", \"Amb3D_GenXend\",\n        //    \"Amb3D_Temple1\", \"Amb3D_Temple2\", \"Amb3D_Temple3\", \"SfxShipLargeExplosion\",\n\n        //    \"MusCalmAtmosphere_MM01\", \"MusCalmAtmosphere_MM02\", \"MusDesperateWithStress_MM01\", \"MusDesperateWithStress_KA01\", \"MusCalmAtmosphere_KA01\",\n        //    \"MusHeavyFight_MM01\", \"MusHeavyFight_MM02\", \"MusCalmAtmosphere_KA02\", \"MusLightFight_MM01\", \"MusLightFight_MM02\", \"MusLightFight_KA01\",\n        //    \"MusSadnessOrDesperation_MM01\", \"MusSadnessOrDesperation_MM02\", \"MusSadnessOrDesperation_KA02\", \"MusSadnessOrDesperation_KA01\", \n        //    \"MusStealthAction_MM01\", \"MusStealthAction_MM02\", \"MusStealthAction_KA01\", \"MusStressOrTimeRush_MM01\", \"MusStressOrTimeRush_MM02\",\n        //    \"MusStressOrTimeRush_KA01\", \"MusStressOrTimeRush_KA02\", \"MusTensionBeforeAnAction_MM01\", \"MusTensionBeforeAnAction_MM02\", \n        //    \"MusTensionBeforeAnAction_KA01\", \"MusTensionBeforeAnAction_KA02\", \"MusSpecial_MM01\", \"MusVictory_MM01\", \"MusVictory_MM02\",\n        //    \"MusVictory_KA01\", \"MusVictory_KA02\", \"MusHeavyFight_KA01\", \"MusHeavyFight_KA02\", \"MusCalmAtmosphere_KA03\", \"MusDesperateWithStress_KA02\",\n        //    \"MusDesperateWithStress_KA03\", \"MusDesperateWithStress_KA04\", \"MusMainMenu_KA+MM\", \"MusHorror_KA01\", \"MusHorror_MM01\",\n        //    \"MusMystery_MM01\", \"MusMystery_KA02\", \"MusMystery_KA01\", \"MusMystery_MM02\", \"MusHorror_KA02\", \"MusHorror_MM02\",\n        //    \"SfxHudAlarmIncoming\", \"SfxHudAlarmDamageA\", \"SfxHudAlarmDamageB\", \"SfxHudAlarmDamageC\", \"SfxHudAlarmDamageD\", \"SfxHudAlarmDamageE\", \"WepNoAmmo\", \"WepCannon2d\", \"WepCannon3d\", \"VehCH1EngineOff\", \"VehCH1EngineOn\", \"VehNU1EngineOff\", \"VehNU1EngineOn\",\n        //    \"VehToolPressureDrillBlast2d\",\"VehToolPressureDrillIdle2d\", \"VehToolPressureDrillRecharge2d\", \"VehToolPressureDrillBlastRock2d\",\n        //    \"Amb3D_PrefabFire\", \"SfxProgressActivation\", \"SfxCancelActivation\",\n\n        //    \"Dlg_EACSurveySite_0001\",\"Dlg_EACSurveySite_0002\",\"Dlg_EACSurveySite_0003\",\"Dlg_EACSurveySite_0004\",\"Dlg_EACSurveySite_0005\",\"Dlg_EACSurveySite_0006\",\"Dlg_EACSurveySite_0007\",\"Dlg_EACSurveySite_0008\",\n        //    \"Dlg_EACSurveySite_0009\",\"Dlg_EACSurveySite_0010\",\"Dlg_EACSurveySite_0011\",\"Dlg_EACSurveySite_0012_01\",\"Dlg_EACSurveySite_0012_02\",\"Dlg_EACSurveySite_0013\",\"Dlg_EACSurveySite_0014_01\",\n        //    \"Dlg_EACSurveySite_0014_02\",\"Dlg_EACSurveySite_0015\",\"Dlg_EACSurveySite_0016\",\"Dlg_EACSurveySite_0017_01\",\"Dlg_EACSurveySite_0017_02\",\"Dlg_EACSurveySite_0018_01\",\"Dlg_EACSurveySite_0018_02\",\n        //    \"Dlg_EACSurveySite_0018_03\",\"Dlg_EACSurveySite_0019\",\"Dlg_EACSurveySite_0020\",\"Dlg_EACSurveySite_0021\",\"Dlg_EACSurveySite_0022\",\"Dlg_EACSurveySite_0023\",\"Dlg_EACSurveySite_0024_01\",\n        //    \"Dlg_EACSurveySite_0024_02\",\"Dlg_EACSurveySite_0025_01\",\"Dlg_EACSurveySite_0025_02\",\"Dlg_EACSurveySite_0026\",\"Dlg_EACSurveySite_0027_01\",\"Dlg_EACSurveySite_0027_02\",\"Dlg_EACSurveySite_0028\",\n        //    \"Dlg_EACSurveySite_0029\",\"Dlg_EACSurveySite_0030\",\"Dlg_EACSurveySite_0031\",\"Dlg_EACSurveySite_0032_01\",\"Dlg_EACSurveySite_0032_02\",\"Dlg_EACSurveySite_0033\",\"Dlg_EACSurveySite_0034\",\n        //    \"Dlg_EACSurveySite_0035\",\"Dlg_EACSurveySite_0036\",\"Dlg_EACSurveySite_0037\",\"Dlg_EACSurveySite_0038\",\"Dlg_EACSurveySite_0039\",\"Dlg_EACSurveySite_0040_01\",\"Dlg_EACSurveySite_0040_02\",\n        //    \"Dlg_EACSurveySite_0041\",\"Dlg_EACSurveySite_0042\",\"Dlg_EACSurveySite_0043\",\"Dlg_EACSurveySite_0044\",\"Dlg_EACSurveySite_0045\",\"Dlg_EACSurveySite_0046\",\"Dlg_EACSurveySite_0047\",\n        //    \"Dlg_EACSurveySite_0048\",\"Dlg_EACSurveySite_0049_01\",\"Dlg_EACSurveySite_0049_02\",\"Dlg_EACSurveySite_0050\",\"Dlg_EACSurveySite_0051\",\"Dlg_EACSurveySite_0052\",\"Dlg_EACSurveySite_0053_01\",\n        //    \"Dlg_EACSurveySite_0053_02\",\"Dlg_EACSurveySite_0053_03\",\"Dlg_EACSurveySite_0054\",\"Dlg_EACSurveySite_0055_01\",\"Dlg_EACSurveySite_0055_02\",\"Dlg_EACSurveySite_0056\",\"Dlg_EACSurveySite_0057\",\n        //    \"Dlg_EACSurveySite_0058\",\"Dlg_EACSurveySite_0059\",\"Dlg_EACSurveySite_0060_01\",\"Dlg_EACSurveySite_0060_02\",\"Dlg_EACSurveySite_0061\",\"Dlg_EACSurveySite_0062\",\"Dlg_EACSurveySite_0063\",\n        //    \"Dlg_EACSurveySite_0064\",\"Dlg_EACSurveySite_0065\",\"Dlg_EACSurveySite_0066\",\"Dlg_EACSurveySite_0067\",\"Dlg_EACSurveySite_0068\",\"Dlg_EACSurveySite_0069\",\"Dlg_EACSurveySite_0070\",\"Dlg_EACSurveySite_0071\",\n        //    \"Dlg_EACSurveySite_0072\",\"Dlg_EACSurveySite_0073\",\"Dlg_EACSurveySite_0074\",\"Dlg_EACSurveySite_0075\",\"Dlg_EACSurveySite_0076\",\"Dlg_EACSurveySite_0077\",\"Dlg_EACSurveySite_0078\",\n\n        //     \"SfxTakeAll\", \"SfxAcquireWeaponOn\", \"SfxAcquireWeaponOff\", \"SfxAcquireDroneOn\", \"SfxAcquireDroneOff\", \"SfxAcquireCameraOn\", \"SfxAcquireCameraOff\", \"SfxTakeAllUniversal\", \"SfxTakeAllAmmo\", \"SfxTakeAllEnergy\", \"SfxTakeAllFuel\", \"SfxTakeAllMedkit\", \"SfxTakeAllOxygen\", \"SfxTakeAllRepair\", \"HudMissionFailed\",\n\n        //     \"MusLightFight_KA03\", \"MusLightFight_KA04\", \"MusLightFight_KA05\", \"MusLightFight_KA07\", \"MusLightFight_KA08\", \"MusLightFight_KA10\", \"MusLightFight_KA11\", \"MusSpecial_MM02\", \"MusSpecial_MM03\", \"MusSpecial_KA01\", \"MusHeavyFight_KA03\", \n        //     \"SfxProgressTake\", \"SfxCancelTake\", \"SfxProgressPut\", \"SfxCancelPut\",\n\n        //     \"Amb2D_City\", \"Amb2D_ComputerRoom\", \"Amb2D_Factory\", \"Amb2D_LostPlace\", \"Amb2D_RedHeat\", \"Amb2D_War\", \"HudAmmoNoWarning\", \"HudArmorNoWarning\",\n             \n        //      \"VehToolCrusherDrillCollidingOtherRelease2d\",\n        //      \"VehToolCrusherDrillCollidingOtherRelease3d\",\n        //      \"VehToolLaserCollidingOther2d\",\n        //      \"VehToolLaserCollidingOther3d\",\n        //      \"VehToolLaserCollidingOtherRelease2d\",\n        //      \"VehToolLaserCollidingOtherRelease3d\",\n        //      \"VehToolPressureDrillBlastOther2d\",\n        //      \"VehToolPressureDrillBlastOther3d\",\n        //      \"VehToolSawCutOther2d\",\n        //      \"VehToolSawCutOther3d\",\n        //      \"VehToolSawCutOtherRelease2d\",\n        //      \"VehToolSawCutOtherRelease3d\",\n        //      \"VehToolSawCutRelease2d\",\n        //      \"VehToolSawCutRelease3d\",\n        //      \"VehToolThermalDrillCollidingOther2d\",\n        //      \"VehToolThermalDrillCollidingOther3d\",\n        //      \"VehToolThermalDrillCollidingOtherRelease2d\",\n        //      \"VehToolThermalDrillCollidingOtherRelease3d\",\n        //      \"VehToolCrusherDrillCollidingOther2d\",\n        //      \"VehToolCrusherDrillCollidingOther3d\",\n\n        //      \"SfxFlareLoop01\", \"SfxFlareDeploy\", \"Amb3D_EngineThrust\", \"VehLoopDrone\", \"VehLoopCamera\", \"WepEpmExplosion\", \"HudOxygenLeakingWarning\", \"VehLoopLargeShip\",\n        //      \"MusLightFight_KA12\", \"MusHeavyFight_KA05\", \"MusSpecial_KA02\", \"MusHeavyFight_KA07\", \"MusSpecial_MM04\", \"MusHeavyFight_KA04\", \"MusSpecial_KA03\", \n        //      \"SfxMeteorFly\", \"SfxMeteorExplosion\", \"WepLargeShipAutocannonRotateRelease\", \"SfxNuclearExplosion\",\n        //      \"Amb2D_City2\", \"Amb2D_Factory2\", \"MusLightFight_KA27\", \"MusSpecial_KA04\", \"MusSpecial_KA05\", \"MusSpecial_MM05\",\n\n        //      \"VehToolNuclearDrillLoop3d\", \"VehToolNuclearDrillLoop2d\", \n        //      \"VehToolNuclearDrillRelease3d\", \"VehToolNuclearDrillRelease2d\", \n        //      \"VehToolNuclearDrillColliding3d\", \"VehToolNuclearDrillColliding2d\", \n        //      \"VehToolNuclearDrillCollidingOther3d\", \"VehToolNuclearDrillCollidingOther2d\", \n        //      \"VehToolNuclearDrillCollidingRelease3d\", \"VehToolNuclearDrillCollidingRelease2d\", \n        //      \"VehToolNuclearDrillCollidingOtherRelease3d\", \"VehToolNuclearDrillCollidingOtherRelease2d\", \n        //      \"VehToolNuclearDrillIdle3d\", \"VehToolNuclearDrillIdle2d\", \n        //      \"VehToolPressureDrillBlast3d\", \"VehToolPressureDrillBlastRock3d\", \"VehToolPressureDrillIdle3d\", \"VehToolPressureDrillRecharge3d\", \n        //      \"SfxPlayerDeathBeep\", \"SfxPlayerDeathBreath\", \"Amb2D_RacingFans\",\n\n        //      \"Dlg_EACSurveySite_1000\", \"Dlg_EACSurveySite_1001\", \"Dlg_EACSurveySite_1002\", \"Dlg_EACSurveySite_1003\", \"Amb2D_RedHeat2\",\n        //      \"Sht_Reich_JE_ForTheFuture\", \"Sht_Reich_JE_Vanquish\", \"Sht_Reich_JE_WeControl\", \"Sht_Reich_JE_YouAreTheWeakLink\", \"Sht_Reich_JE_YourFinalDay\", \n        //};\n\n        //  IMPORTANT: These strings are referenced in config file. If you change any, assigned controls will be probably set to defaults.\n        public static string[] GuiInputDeviceEnum = new string[] { \"None\", \"Keyboard\", \"Mouse\", \"Joystick\", \"JoystickAxis\" };\n        public static string[] MouseButtonsEnum = new string[] { \"None\", \"Left\", \"Middle\", \"Right\", \"XButton1\", \"XButton2\" };\n        public static string[] JoystickButtonsEnum = new string[] { \"None\", \"JDLeft\", \"JDRight\", \"JDUp\", \"JDDown\", \"J01\", \"J02\", \"J03\", \"J04\", \"J05\", \"J06\", \"J07\", \"J08\", \"J09\", \"J10\", \"J11\", \"J12\", \"J13\", \"J14\", \"J15\", \"J16\" };\n        public static string[] JoystickAxesEnum = new string[] { \"None\", \n            \"JXAxis+\",\"JXAxis-\", \"JYAxis+\",\"JYAxis-\", \"JZAxis+\",\"JZAxis-\",\n            \"JXRotation+\",\"JXRotation-\", \"JYRotation+\",\"JYRotation-\", \"JZRotation+\",\"JZRotation-\",\n            \"JSlider1+\",\"JSlider1-\", \"JSlider2+\",\"JSlider2-\",\n        };\n        public static string[] GameControlEnums = new string[] {\n            \"FIRE_PRIMARY\", \"FIRE_SECONDARY\", \"FIRE_THIRD\", \"FIRE_FOURTH\", \"FIRE_FIFTH\",\n            \"FORWARD\", \"REVERSE\", \"STRAFE_LEFT\", \"STRAFE_RIGHT\", \"UP_THRUST\", \"DOWN_THRUST\", \"ROLL_LEFT\", \"ROLL_RIGHT\",\n            \"WHEEL_CONTROL\", \"HEADLIGHTS\", \"HEADLIGHTS_DISTANCE\", \"HARVEST\", \"DRILL\",\n            \"USE\", \"INVENTORY\", \"GPS\", \"MISSION_DIALOG\", \"TRAVEL\", \n            \"QUICK_ZOOM\", \"ZOOM_IN\", \"ZOOM_OUT\", \"SELECT_AMMO_BULLET\",\n            \"SELECT_AMMO_MISSILE\", \"SELECT_AMMO_CANNON\", \"SELECT_AMMO_UNIVERSAL_LAUNCHER_FRONT\", \"AUTO_LEVEL\",  \"REAR_CAM\",\n            \"SELECT_AMMO_UNIVERSAL_LAUNCHER_BACK\", \"MOVEMENT_SLOWDOWN\", \"VIEW_MODE\",\n            \"WEAPON_SPECIAL\", \"CHANGE_DRONE_MODE\", \"ROTATION_LEFT\", \"ROTATION_RIGHT\", \"ROTATION_UP\",\n            \"ROTATION_DOWN\", \"AFTERBURNER\", \"PREVIOUS_CAMERA\", \"NEXT_CAMERA\",\n            \"FIRE_HOLOGRAM_FRONT\", \"FIRE_HOLOGRAM_BACK\",\n            \"FIRE_BASIC_MINE_FRONT\", \"FIRE_BASIC_MINE_BACK\",\n            \"FIRE_SMART_MINE_FRONT\", \"FIRE_SMART_MINE_BACK\",\n            \"FIRE_FLASH_BOMB_FRONT\", \"FIRE_FLASH_BOMB_BACK\",\n            \"FIRE_DECOY_FLARE_FRONT\", \"FIRE_DECOY_FLARE_BACK\",\n            \"FIRE_SMOKE_BOMB_FRONT\", \"FIRE_SMOKE_BOMB_BACK\",\n            \"DRONE_DEPLOY\", \"DRONE_CONTROL\", \"CONTROL_SECONDARY_CAMERA\", \"NOTIFICATION_CONFIRMATION\",\n            \"PREV_TARGET\", \"NEXT_TARGET\",\n            \"CHAT\", \"SCORE\"\n        };\n\n        public static string[] EditorControlEnums = new string[] { \"PRIMARY_ACTION_KEY\", \"SECONDARY_ACTION_KEY\",\n            \"INCREASE_GRID_SCALE\", \"DECREASE_GRID_SCALE\", \"VOXEL_HAND\", \"ENTER_CONTEXT_MENU\", \"SWITCH_GIZMO_SPACE\", \"SWITCH_GIZMO_MODE\"};\n\n        public static string[] ControlTypeEnum = new string[] { \"General\", \"Navigation\", \"Communications\", \"Weapons\", \"SpecialWeapons\", \"Systems1\", \"Systems2\", \"Editor\", \"Deleted\" };\n\n        public static string[] SessionType = new string[] { \"NEW_STORY\", \"LOAD_CHECKPOINT\", \"JOIN_FRIEND_STORY\", \"MMO\", \"SANDBOX_OWN\", \"SANDBOX_FRIENDS\", \"JOIN_SANDBOX_FRIEND\", \"EDITOR_SANDBOX\", \"EDITOR_STORY\", \"EDITOR_MMO\", \"SANDBOX_RANDOM\" };\n\n        public static string[] LanguageEnums = new string[]\n        {\n            \"en\",\"cs\",\"sk\",\"de\",\"ru\",\"es\",\"fr\",\"it\"\n        };\n\n        static MyEnumsToStrings()\n        {\n            //  We need to check if programmer who changed/added entries in enum, didn't forget to add it also to these string constants\n            //  If he forgot, application will fail here on start, so he can find out quickly\n            try\n            {\n                Validate(typeof(MyGameControlEnums), GameControlEnums);\n                Validate(typeof(MyEditorControlEnums), EditorControlEnums);\n                Validate(typeof(MyCameraAttachedToEnum), CameraAttachedTo);\n                Validate(typeof(MyCameraDirection), CameraDirection);\n                Validate(typeof(MyTransparentGeometryTexturesEnum), Particles);\n                Validate(typeof(MyHudTexturesEnum), HudTextures);\n                Validate(typeof(MyDecalTexturesEnum), Decals);\n                Validate(typeof(MyCockpitGlassDecalTexturesEnum), CockpitGlassDecals);\n                //Validate(typeof(MySoundCuesEnum), Sounds);\n                Validate(typeof(MyGuiInputDeviceEnum), GuiInputDeviceEnum);\n                Validate(typeof(MyMouseButtonsEnum), MouseButtonsEnum);\n                Validate(typeof(MyJoystickButtonsEnum), JoystickButtonsEnum);\n                Validate(typeof(MyJoystickAxesEnum), JoystickAxesEnum);\n                Validate(typeof(MyGuiControlTypeEnum), ControlTypeEnum);\n                Validate(typeof(MyMwcStartSessionRequestTypeEnum), SessionType);\n                Validate(typeof(MyLanguagesEnum), LanguageEnums);\n            }\n            catch (Exception e)\n            {\n                Debug.Fail(\"Validation threw an exception: \" + e.Message);\n            }\n        }\n\n        static void Validate<T>(Type type, T list) where T : IList<string>\n        {\n            Array values = Enum.GetValues(type);\n            Type underlyingType = Enum.GetUnderlyingType(type);\n            if (underlyingType == typeof(System.Byte))\n            {\n                foreach (byte value in values)\n                {\n                    MyCommonDebugUtils.AssertRelease(list[value] != null);\n                }\n            }\n            else if (underlyingType == typeof(System.Int16))\n            {\n                foreach (short value in values)\n                {\n                    MyCommonDebugUtils.AssertRelease(list[value] != null);\n                }\n            }\n            else if (underlyingType == typeof(System.UInt16))\n            {\n                foreach (ushort value in values)\n                {\n                    MyCommonDebugUtils.AssertRelease(list[value] != null);\n                }\n            }\n            else if (underlyingType == typeof(System.Int32))\n            {\n                foreach (int value in values)\n                {\n                    MyCommonDebugUtils.AssertRelease(list[value] != null);\n                }\n            }\n            else\n            {\n                //  Unhandled underlying type - probably \"long\"\n                throw new MyMwcExceptionApplicationShouldNotGetHere();\n            }            \n        }\n    }\n\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Utils/MyEnumToStringsGenerated.cs",
    "content": "﻿\n\nnamespace MinerWars.AppCode.Game.Utils\n{\n\n\t[System.CodeDom.Compiler.GeneratedCode(\"MinerWars Enum to String Generator Template\", \"1.0.0.0\")]\n    static partial class MyEnumsToStrings\n\t{\n\n\tpublic static string[] Sounds = new string[] \n\t{ \n\t\t\t\"GuiMouseClick\",\n\t\t    \"GuiMouseOver\",\n\t\t    \"GuiEditorFlyOutsideBorder\",\n\t\t    \"GuiEditorObjectAttach\",\n\t\t    \"GuiEditorObjectDelete\",\n\t\t    \"GuiEditorObjectDetach\",\n\t\t    \"GuiEditorObjectMoveInvalid\",\n\t\t    \"GuiEditorObjectMoveStep\",\n\t\t    \"GuiEditorObjectRotateStep\",\n\t\t    \"GuiEditorObjectSelect\",\n\t\t    \"GuiEditorPrefabCommit\",\n\t\t    \"GuiEditorPrefabEnter\",\n\t\t    \"GuiEditorPrefabExit\",\n\t\t    \"GuiEditorVoxelHandAdd\",\n\t\t    \"GuiEditorVoxelHandRemove\",\n\t\t    \"GuiEditorVoxelHandSoften\",\n\t\t    \"GuiEditorVoxelHandMaterial\",\n\t\t    \"GuiEditorVoxelHandSwitch\",\n\t\t    \"GuiWheelControlOpen\",\n\t\t    \"GuiWheelControlClose\",\n\t\t    \"ImpRockCollideMetal\",\n\t\t    \"ImpRockCollideRock\",\n\t\t    \"ImpBulletHitRock\",\n\t\t    \"ImpBulletHitMetal\",\n\t\t    \"ImpBulletHitGlass\",\n\t\t    \"ImpBulletHitShip\",\n\t\t    \"ImpExpHitGlass\",\n\t\t    \"ImpExpHitMetal\",\n\t\t    \"ImpExpHitShip\",\n\t\t    \"ImpExpHitRock\",\n\t\t    \"ImpShipCollideMetal\",\n\t\t    \"ImpShipCollideRock\",\n\t\t    \"ImpPlayerShipCollideMetal\",\n\t\t    \"ImpPlayerShipCollideRock\",\n\t\t    \"ImpPlayerShipCollideShip\",\n\t\t    \"ImpPlayerShipScrapeShipLoop\",\n\t\t    \"ImpPlayerShipScrapeShipRelease\",\n\t\t    \"VehShipaEngineIdle2d\",\n\t\t    \"VehShipaEngineIdle3d\",\n\t\t    \"VehShipaEngineHigh2d\",\n\t\t    \"VehShipaEngineHigh3d\",\n\t\t    \"VehShipaThrust2d\",\n\t\t    \"VehShipaThrust3d\",\n\t\t    \"VehShipaLightsOn\",\n\t\t    \"VehShipaLightsOff\",\n\t\t    \"VehShipaEngineOn\",\n\t\t    \"VehShipaEngineOff\",\n\t\t    \"VehHarvesterTubeRelease2d\",\n\t\t    \"VehHarvesterTubeRelease3d\",\n\t\t    \"VehHarvesterTubeMovingLoop2d\",\n\t\t    \"VehHarvesterTubeMovingLoop3d\",\n\t\t    \"VehHarvesterTubeColliding2d\",\n\t\t    \"VehHarvesterTubeColliding3d\",\n\t\t    \"VehHarvesterTubeCollision2d\",\n\t\t    \"VehHarvesterTubeCollision3d\",\n\t\t    \"VehHarvesterTubeImplode2d\",\n\t\t    \"VehHarvesterTubeImplode3d\",\n\t\t    \"VehToolCrusherDrillLoop2d\",\n\t\t    \"VehToolCrusherDrillLoop3d\",\n\t\t    \"VehToolCrusherDrillRelease2d\",\n\t\t    \"VehToolCrusherDrillRelease3d\",\n\t\t    \"VehToolCrusherDrillColliding2d\",\n\t\t    \"VehToolCrusherDrillColliding3d\",\n\t\t    \"VehToolCrusherDrillCollidingRelease2d\",\n\t\t    \"VehToolCrusherDrillCollidingRelease3d\",\n\t\t    \"VehToolThermalDrillLoop2d\",\n\t\t    \"VehToolThermalDrillLoop3d\",\n\t\t    \"VehToolThermalDrillRelease2d\",\n\t\t    \"VehToolThermalDrillRelease3d\",\n\t\t    \"VehToolSawCut2d\",\n\t\t    \"VehToolSawCut3d\",\n\t\t    \"VehToolSawLoop2d\",\n\t\t    \"VehToolSawLoop3d\",\n\t\t    \"VehToolSawRelease2d\",\n\t\t    \"VehToolSawRelease3d\",\n\t\t    \"VehToolLaserDrillLoop2d\",\n\t\t    \"VehToolLaserDrillLoop3d\",\n\t\t    \"VehToolLaserDrillRelease2d\",\n\t\t    \"VehToolLaserDrillRelease3d\",\n\t\t    \"WepMissileLock\",\n\t\t    \"WepMissileFly\",\n\t\t    \"WepMissileExplosion\",\n\t\t    \"WepMissileLaunch2d\",\n\t\t    \"WepMissileLaunch3d\",\n\t\t    \"WepAutocanonFire2d\",\n\t\t    \"WepAutocanonFire3d\",\n\t\t    \"WepAutocanonRel2d\",\n\t\t    \"WepAutocanonRel3d\",\n\t\t    \"WepSniperScopeZoomRel\",\n\t\t    \"WepSniperScopeZoomALoop\",\n\t\t    \"WepSniperNormFire2d\",\n\t\t    \"WepSniperHighFire2d\",\n\t\t    \"WepSniperNormFire3d\",\n\t\t    \"WepSniperHighFire3d\",\n\t\t    \"WepMineMoveALoop\",\n\t\t    \"WepUnivLaunch2d\",\n\t\t    \"WepUnivLaunch3d\",\n\t\t    \"WepArsHighShot2d\",\n\t\t    \"WepArsHighShot3d\",\n\t\t    \"WepArsNormShot2d\",\n\t\t    \"WepArsNormShot3d\",\n\t\t    \"WepBombExplosion\",\n\t\t    \"WepLargeShipAutocannonRotate\",\n\t\t    \"WepMachineGunHighFire2d\",\n\t\t    \"WepMachineGunHighFire3d\",\n\t\t    \"WepMachineGunHighRel2d\",\n\t\t    \"WepMachineGunHighRel3d\",\n\t\t    \"WepMachineGunNormFire2d\",\n\t\t    \"WepMachineGunNormFire3d\",\n\t\t    \"WepMachineGunNormRel2d\",\n\t\t    \"WepMachineGunNormRel3d\",\n\t\t    \"WepShotgunNormShot2d\",\n\t\t    \"WepShotgunNormShot3d\",\n\t\t    \"WepShotgunHighShot2d\",\n\t\t    \"WepShotgunHighShot3d\",\n\t\t    \"WepRailNormShot3d\",\n\t\t    \"WepRailNormShot2d\",\n\t\t    \"WepRailHighShot3d\",\n\t\t    \"WepRailHighShot2d\",\n\t\t    \"WepBombSmartTimer\",\n\t\t    \"WepBombSmartSmoke\",\n\t\t    \"WepBombSmartPlant\",\n\t\t    \"WepBombSmartDrone\",\n\t\t    \"WepBombGravSuck\",\n\t\t    \"WepBombFlash\",\n\t\t    \"SfxSolarWind\",\n\t\t    \"SfxHudBackcameraOn\",\n\t\t    \"SfxHudBackcameraOff\",\n\t\t    \"SfxPlayerBreath\",\n\t\t    \"SfxShipSmallExplosion\",\n\t\t    \"SfxHudReflectorRange\",\n\t\t    \"SfxHudSlowMovementOff\",\n\t\t    \"SfxHudSlowMovementOn\",\n\t\t    \"SfxHudAutolevelingOn\",\n\t\t    \"SfxHudAutolevelingOff\",\n\t\t    \"SfxHudWeaponScroll\",\n\t\t    \"SfxHudWeaponSelect\",\n\t\t    \"SfxHudRadarMode\",\n\t\t    \"SfxHudCockpitOn\",\n\t\t    \"SfxHudCockpitOff\",\n\t\t    \"SfxSpark\",\n\t\t    \"MovDoor1AClose\",\n\t\t    \"MovDoor1AOpen\",\n\t\t    \"MovDoor1BClose\",\n\t\t    \"MovDoor1BOpen\",\n\t\t    \"MovDoor2AClose\",\n\t\t    \"MovDoor2AOpen\",\n\t\t    \"MovDoor2BClose\",\n\t\t    \"MovDoor2BOpen\",\n\t\t    \"MovDoor3AClose\",\n\t\t    \"MovDoor3AOpen\",\n\t\t    \"HudFuelLowWarning\",\n\t\t    \"HudFuelCriticalWarning\",\n\t\t    \"HudOxygenLowWarning\",\n\t\t    \"HudOxygenCriticalWarning\",\n\t\t    \"HudOxygenNoWarning\",\n\t\t    \"HudDamageAlertWarning\",\n\t\t    \"HudDamageCriticalWarning\",\n\t\t    \"HudAmmoCriticalWarning\",\n\t\t    \"HudAmmoLowWarning\",\n\t\t    \"HudArmorCriticalWarning\",\n\t\t    \"HudArmorLowWarning\",\n\t\t    \"HudDestinationReached\",\n\t\t    \"HudRadarJammedWarning\",\n\t\t    \"HudTargetDestroyed\",\n\t\t    \"HudRadiationWarning\",\n\t\t    \"SfxGeigerCounterHeavyLoop\",\n\t\t    \"HudEnemyAlertWarning\",\n\t\t    \"HudFriendlyFireWarning\",\n\t\t    \"HudHarvestingComplete\",\n\t\t    \"HudSolarFlareWarning\",\n\t\t    \"HudInventoryComplete\",\n\t\t    \"HudInventoryFullWarning\",\n\t\t    \"HudInventoryTransfer\",\n\t\t    \"HudObjectiveComplete\",\n\t\t    \"MusSpecial_LostInTheDistance\",\n\t\t    \"HudHealthLowWarning\",\n\t\t    \"HudHealthCriticalWarning\",\n\t\t    \"SfxClaxonAlert\",\n\t\t    \"VehToolCrusherDrillIdle2d\",\n\t\t    \"VehToolCrusherDrillIdle3d\",\n\t\t    \"VehToolLaserDrillIdle2d\",\n\t\t    \"VehToolLaserDrillIdle3d\",\n\t\t    \"VehToolSawIdle2d\",\n\t\t    \"VehToolSawIdle3d\",\n\t\t    \"VehToolThermalDrillIdle2d\",\n\t\t    \"VehToolThermalDrillIdle3d\",\n\t\t    \"SfxGps\",\n\t\t    \"SfxGpsFail\",\n\t\t    \"MenuWelcome\",\n\t\t    \"MovDock1Start\",\n\t\t    \"MovDock1Loop\",\n\t\t    \"MovDock1End\",\n\t\t    \"MovDock2Start\",\n\t\t    \"MovDock2Loop\",\n\t\t    \"MovDock2End\",\n\t\t    \"MovDock3Start\",\n\t\t    \"MovDock3Loop\",\n\t\t    \"MovDock3End\",\n\t\t    \"VehCH1EngineHigh2d\",\n\t\t    \"VehCH1EngineHigh3d\",\n\t\t    \"VehCH1EngineIdle2d\",\n\t\t    \"VehCH1EngineIdle3d\",\n\t\t    \"VehEL1EngineHigh2d\",\n\t\t    \"VehEL1EngineHigh3d\",\n\t\t    \"VehEL1EngineIdle2d\",\n\t\t    \"VehEL1EngineIdle3d\",\n\t\t    \"VehEL1EngineOff\",\n\t\t    \"VehEL1EngineOn\",\n\t\t    \"VehNU1EngineHigh2d\",\n\t\t    \"VehNU1EngineHigh3d\",\n\t\t    \"VehNU1EngineIdle2d\",\n\t\t    \"VehNU1EngineIdle3d\",\n\t\t    \"ImpShipQuake\",\n\t\t    \"Amb3D_Electrical01\",\n\t\t    \"Amb3D_Electrical02\",\n\t\t    \"Amb3D_FanLargeDamaged\",\n\t\t    \"Amb3D_FanLargeDestroyed\",\n\t\t    \"Amb3D_FanLargeNormal\",\n\t\t    \"Amb3D_FanMediumDamaged\",\n\t\t    \"Amb3D_FanMediumDestroyed\",\n\t\t    \"Amb3D_FanMediumNormal\",\n\t\t    \"Amb3D_FanSmallDamaged\",\n\t\t    \"Amb3D_FanSmallDestroyed\",\n\t\t    \"Amb3D_FanSmallNormal\",\n\t\t    \"Amb3D_GenLargeDamaged\",\n\t\t    \"Amb3D_GenLargeDestroyed\",\n\t\t    \"Amb3D_GenLargeNormal\",\n\t\t    \"Amb3D_GenMediumDamaged\",\n\t\t    \"Amb3D_GenMediumDestroyed\",\n\t\t    \"Amb3D_GenMediumNormal\",\n\t\t    \"Amb2D_RoomLarge01\",\n\t\t    \"Amb2D_RoomLarge02\",\n\t\t    \"Amb2D_RoomLarge03\",\n\t\t    \"Amb2D_RoomLarge04\",\n\t\t    \"Amb2D_RoomLarge05\",\n\t\t    \"Amb2D_RoomMed01\",\n\t\t    \"Amb2D_RoomMed02\",\n\t\t    \"Amb2D_RoomMed03\",\n\t\t    \"Amb2D_RoomMed04\",\n\t\t    \"Amb2D_RoomMed05\",\n\t\t    \"Amb2D_RoomSmall01\",\n\t\t    \"Amb2D_RoomSmall02\",\n\t\t    \"Amb2D_RoomSmall03\",\n\t\t    \"Amb2D_RoomSmall04\",\n\t\t    \"Amb2D_StressLoop\",\n\t\t    \"Amb2D_TunnelLarge01\",\n\t\t    \"Amb2D_TunnelMedium01\",\n\t\t    \"Amb2D_TunnelSmall01\",\n\t\t    \"VehToolLaserDrillColliding2d\",\n\t\t    \"VehToolLaserDrillColliding3d\",\n\t\t    \"VehToolLaserDrillCollidingRelease2d\",\n\t\t    \"VehToolLaserDrillCollidingRelease3d\",\n\t\t    \"VehToolThermalDrillColliding2d\",\n\t\t    \"VehToolThermalDrillColliding3d\",\n\t\t    \"VehToolThermalDrillCollidingRelease2d\",\n\t\t    \"VehToolThermalDrillCollidingRelease3d\",\n\t\t    \"SfxProgressHack\",\n\t\t    \"SfxCancelHack\",\n\t\t    \"SfxProgressRepair\",\n\t\t    \"SfxProgressBuild\",\n\t\t    \"SfxCancelRepair\",\n\t\t    \"SfxCancelBuild\",\n\t\t    \"Amb3D_GenXstart\",\n\t\t    \"Amb3D_GenXloop\",\n\t\t    \"SfxAlertVoc\",\n\t\t    \"Amb3D_GenXend\",\n\t\t    \"Amb3D_Temple1\",\n\t\t    \"Amb3D_Temple2\",\n\t\t    \"Amb3D_Temple3\",\n\t\t    \"SfxShipLargeExplosion\",\n\t\t    \"MusCalmAtmosphere_MM01\",\n\t\t    \"MusCalmAtmosphere_MM02\",\n\t\t    \"MusDesperateWithStress_MM01\",\n\t\t    \"MusDesperateWithStress_KA01\",\n\t\t    \"MusCalmAtmosphere_KA01\",\n\t\t    \"MusHeavyFight_MM01\",\n\t\t    \"MusHeavyFight_MM02\",\n\t\t    \"MusCalmAtmosphere_KA02\",\n\t\t    \"MusLightFight_MM01\",\n\t\t    \"MusLightFight_MM02\",\n\t\t    \"MusSadnessOrDesperation_MM01\",\n\t\t    \"MusSadnessOrDesperation_MM02\",\n\t\t    \"MusSadnessOrDesperation_KA02\",\n\t\t    \"MusSadnessOrDesperation_KA01\",\n\t\t    \"MusStealthAction_MM01\",\n\t\t    \"MusStealthAction_MM02\",\n\t\t    \"MusStealthAction_KA01\",\n\t\t    \"MusStressOrTimeRush_MM01\",\n\t\t    \"MusStressOrTimeRush_MM02\",\n\t\t    \"MusStressOrTimeRush_KA01\",\n\t\t    \"MusStressOrTimeRush_KA02\",\n\t\t    \"MusTensionBeforeAnAction_MM01\",\n\t\t    \"MusTensionBeforeAnAction_MM02\",\n\t\t    \"MusTensionBeforeAnAction_KA01\",\n\t\t    \"MusTensionBeforeAnAction_KA02\",\n\t\t    \"MusSpecial_MM01\",\n\t\t    \"MusVictory_MM01\",\n\t\t    \"MusVictory_MM02\",\n\t\t    \"MusVictory_KA01\",\n\t\t    \"MusVictory_KA02\",\n\t\t    \"Mus_victory_KA_6\",\n\t\t    \"MusHeavyFight_KA01\",\n\t\t    \"MusHeavyFight_KA02\",\n\t\t    \"MusCalmAtmosphere_KA03\",\n\t\t    \"MusDesperateWithStress_KA02\",\n\t\t    \"MusDesperateWithStress_KA03\",\n\t\t    \"MusDesperateWithStress_KA04\",\n\t\t    \"Mus_desperatestress_KA_2_longer_2b\",\n\t\t    \"MusHorror_KA01\",\n\t\t    \"MusHorror_MM01\",\n\t\t    \"MusMystery_MM01\",\n\t\t    \"MusMystery_KA02\",\n\t\t    \"MusMystery_KA01\",\n\t\t    \"MusMystery_MM02\",\n\t\t    \"MusHorror_KA02\",\n\t\t    \"MusHorror_MM02\",\n\t\t    \"MusHeavyFight_KA19\",\n\t\t    \"MusHeavyFight_KA17\",\n\t\t    \"MusHeavyFight_KA16\",\n\t\t    \"MusHeavyFight_KA06\",\n\t\t    \"MusStealthAction_KA03\",\n\t\t    \"MusSpecial_KA06\",\n\t\t    \"MusCalmAtmosphere_MM_b\",\n\t\t    \"SfxHudAlarmIncoming\",\n\t\t    \"SfxHudAlarmDamageA\",\n\t\t    \"SfxHudAlarmDamageB\",\n\t\t    \"SfxHudAlarmDamageC\",\n\t\t    \"SfxHudAlarmDamageD\",\n\t\t    \"SfxHudAlarmDamageE\",\n\t\t    \"WepNoAmmo\",\n\t\t    \"WepCannon2d\",\n\t\t    \"WepCannon3d\",\n\t\t    \"VehCH1EngineOff\",\n\t\t    \"VehCH1EngineOn\",\n\t\t    \"VehNU1EngineOff\",\n\t\t    \"VehNU1EngineOn\",\n\t\t    \"VehToolPressureDrillBlast2d\",\n\t\t    \"VehToolPressureDrillIdle2d\",\n\t\t    \"VehToolPressureDrillRecharge2d\",\n\t\t    \"VehToolPressureDrillBlastRock2d\",\n\t\t    \"Amb3D_PrefabFire\",\n\t\t    \"SfxProgressActivation\",\n\t\t    \"SfxCancelActivation\",\n\t\t    \"Dlg_EACSurveySite_0015\",\n\t\t    \"Dlg_EACSurveySite_0016\",\n\t\t    \"Dlg_EACSurveySite_0017_01\",\n\t\t    \"Dlg_EACSurveySite_0017_02\",\n\t\t    \"Dlg_EACSurveySite_0018_01\",\n\t\t    \"Dlg_EACSurveySite_0018_02\",\n\t\t    \"Dlg_EACSurveySite_0018_03\",\n\t\t    \"Dlg_EACSurveySite_0019\",\n\t\t    \"Dlg_EACSurveySite_0020\",\n\t\t    \"Dlg_EACSurveySite_0021\",\n\t\t    \"Dlg_EACSurveySite_0022\",\n\t\t    \"Dlg_EACSurveySite_0023\",\n\t\t    \"Dlg_EACSurveySite_0024_01\",\n\t\t    \"Dlg_EACSurveySite_0024_02\",\n\t\t    \"Dlg_EACSurveySite_0025_01\",\n\t\t    \"Dlg_EACSurveySite_0025_02\",\n\t\t    \"Dlg_EACSurveySite_0026\",\n\t\t    \"Dlg_EACSurveySite_0027_01\",\n\t\t    \"Dlg_EACSurveySite_0027_02\",\n\t\t    \"Dlg_EACSurveySite_0028\",\n\t\t    \"Dlg_EACSurveySite_0029\",\n\t\t    \"Dlg_EACSurveySite_0030\",\n\t\t    \"Dlg_EACSurveySite_0031\",\n\t\t    \"Dlg_EACSurveySite_0032_01\",\n\t\t    \"Dlg_EACSurveySite_0032_02\",\n\t\t    \"Dlg_EACSurveySite_0033\",\n\t\t    \"Dlg_EACSurveySite_0034\",\n\t\t    \"Dlg_EACSurveySite_0035\",\n\t\t    \"Dlg_EACSurveySite_0036\",\n\t\t    \"Dlg_EACSurveySite_0037\",\n\t\t    \"Dlg_EACSurveySite_0038\",\n\t\t    \"Dlg_EACSurveySite_0039\",\n\t\t    \"Dlg_EACSurveySite_0040_01\",\n\t\t    \"Dlg_EACSurveySite_0040_02\",\n\t\t    \"Dlg_EACSurveySite_0041\",\n\t\t    \"Dlg_EACSurveySite_0042\",\n\t\t    \"Dlg_EACSurveySite_0043\",\n\t\t    \"Dlg_EACSurveySite_0044\",\n\t\t    \"Dlg_EACSurveySite_0045\",\n\t\t    \"Dlg_EACSurveySite_0046\",\n\t\t    \"Dlg_EACSurveySite_0047\",\n\t\t    \"Dlg_EACSurveySite_0048\",\n\t\t    \"Dlg_EACSurveySite_0049_01\",\n\t\t    \"Dlg_EACSurveySite_0049_02\",\n\t\t    \"Dlg_EACSurveySite_0050\",\n\t\t    \"Dlg_EACSurveySite_0051\",\n\t\t    \"Dlg_EACSurveySite_0052\",\n\t\t    \"Dlg_EACSurveySite_0053_01\",\n\t\t    \"Dlg_EACSurveySite_0053_02\",\n\t\t    \"Dlg_EACSurveySite_0053_03\",\n\t\t    \"Dlg_EACSurveySite_0054\",\n\t\t    \"Dlg_EACSurveySite_0055_01\",\n\t\t    \"Dlg_EACSurveySite_0055_02\",\n\t\t    \"Dlg_EACSurveySite_0056\",\n\t\t    \"Dlg_EACSurveySite_0057\",\n\t\t    \"Dlg_EACSurveySite_0058\",\n\t\t    \"Dlg_EACSurveySite_0059\",\n\t\t    \"Dlg_EACSurveySite_0060_01\",\n\t\t    \"Dlg_EACSurveySite_0060_02\",\n\t\t    \"Dlg_EACSurveySite_0061\",\n\t\t    \"Dlg_EACSurveySite_0062\",\n\t\t    \"Dlg_EACSurveySite_0063\",\n\t\t    \"Dlg_EACSurveySite_0064\",\n\t\t    \"Dlg_EACSurveySite_0065\",\n\t\t    \"Dlg_EACSurveySite_0066\",\n\t\t    \"Dlg_EACSurveySite_0067\",\n\t\t    \"Dlg_EACSurveySite_0068\",\n\t\t    \"Dlg_EACSurveySite_0069\",\n\t\t    \"Dlg_EACSurveySite_0070\",\n\t\t    \"Dlg_EACSurveySite_0071\",\n\t\t    \"Dlg_EACSurveySite_0072\",\n\t\t    \"Dlg_EACSurveySite_0073\",\n\t\t    \"Dlg_EACSurveySite_0074\",\n\t\t    \"Dlg_EACSurveySite_0075\",\n\t\t    \"Dlg_EACSurveySite_0076\",\n\t\t    \"Dlg_EACSurveySite_0077\",\n\t\t    \"Dlg_EACSurveySite_0078\",\n\t\t    \"Dlg_ChineseTransport_1000\",\n\t\t    \"Dlg_ChineseTransport_1001\",\n\t\t    \"Dlg_ChineseTransport_1002\",\n\t\t    \"Dlg_ChineseTransport_1003\",\n\t\t    \"Dlg_ChineseTransport_1004\",\n\t\t    \"Dlg_ChineseTransport_1005\",\n\t\t    \"Dlg_ChineseTransport_1006\",\n\t\t    \"Dlg_ChineseTransport_1007\",\n\t\t    \"Dlg_ChineseTransport_1008\",\n\t\t    \"Dlg_ChineseTransport_1009\",\n\t\t    \"Dlg_ChineseTransport_1010\",\n\t\t    \"Dlg_ChineseTransport_1011\",\n\t\t    \"Dlg_ChineseTransport_1012\",\n\t\t    \"Dlg_ChineseTransport_1013\",\n\t\t    \"Dlg_ChineseTransport_1014\",\n\t\t    \"Dlg_ChineseTransport_1015\",\n\t\t    \"Dlg_ChineseTransport_1016\",\n\t\t    \"Dlg_ChineseTransport_1017\",\n\t\t    \"Dlg_ChineseTransport_1018\",\n\t\t    \"Dlg_ChineseTransport_1019\",\n\t\t    \"Dlg_ChineseTransport_1020\",\n\t\t    \"Dlg_ChineseTransport_1021\",\n\t\t    \"Dlg_ChineseTransport_1022\",\n\t\t    \"Dlg_ChineseTransport_1023\",\n\t\t    \"Dlg_ChineseTransport_1024\",\n\t\t    \"Dlg_ChineseTransport_1025\",\n\t\t    \"Dlg_ChineseTransport_1026\",\n\t\t    \"Dlg_ChineseTransport_1027\",\n\t\t    \"Dlg_ChineseTransport_1028\",\n\t\t    \"Dlg_ChineseTransport_1029\",\n\t\t    \"Dlg_ChineseTransport_1030\",\n\t\t    \"Dlg_ChineseTransport_1031\",\n\t\t    \"Dlg_ChineseTransport_1032\",\n\t\t    \"Dlg_ChineseTransport_1033\",\n\t\t    \"Dlg_ChineseTransport_1034\",\n\t\t    \"Dlg_ChineseTransport_1035\",\n\t\t    \"Dlg_ChineseTransport_1036\",\n\t\t    \"Dlg_ChineseTransport_1037\",\n\t\t    \"Dlg_ChineseTransport_1038\",\n\t\t    \"Dlg_ChineseTransport_1039\",\n\t\t    \"Dlg_ChineseTransport_1040\",\n\t\t    \"Dlg_ChineseTransport_1041\",\n\t\t    \"Dlg_ChineseTransport_1042\",\n\t\t    \"Dlg_ChineseTransport_1043\",\n\t\t    \"Dlg_ChineseTransport_1044\",\n\t\t    \"Dlg_ChineseTransport_1045\",\n\t\t    \"Dlg_ChineseRafinery_1000\",\n\t\t    \"Dlg_ChineseRafinery_1001\",\n\t\t    \"Dlg_ChineseRafinery_1002\",\n\t\t    \"Dlg_ChineseRafinery_1003\",\n\t\t    \"Dlg_ChineseRafinery_1004\",\n\t\t    \"Dlg_ChineseRafinery_1005\",\n\t\t    \"Dlg_ChineseRafinery_1006\",\n\t\t    \"Dlg_ChineseRafinery_1007\",\n\t\t    \"Dlg_ChineseRafinery_1008\",\n\t\t    \"Dlg_ChineseRafinery_1009\",\n\t\t    \"Dlg_ChineseRafinery_1010\",\n\t\t    \"Dlg_ChineseRafinery_1011\",\n\t\t    \"Dlg_ChineseRafinery_1012\",\n\t\t    \"Dlg_ChineseRafinery_1013\",\n\t\t    \"Dlg_ChineseRafinery_1014\",\n\t\t    \"Dlg_ChineseRafinery_1015\",\n\t\t    \"Dlg_ChineseRafinery_1016\",\n\t\t    \"Dlg_ChineseRafinery_1017\",\n\t\t    \"Dlg_ChineseRafinery_1018\",\n\t\t    \"Dlg_ChineseRafinery_1019\",\n\t\t    \"Dlg_ChineseRafinery_1020\",\n\t\t    \"Dlg_ChineseRafinery_1021\",\n\t\t    \"Dlg_ChineseRafinery_1022\",\n\t\t    \"Dlg_ChineseRafinery_1023\",\n\t\t    \"Dlg_ChineseRafinery_1024\",\n\t\t    \"Dlg_ChineseRafinery_1025\",\n\t\t    \"Dlg_ChineseRafinery_1026\",\n\t\t    \"Dlg_ChineseRafinery_1027\",\n\t\t    \"Dlg_ChineseRafinery_1028\",\n\t\t    \"Dlg_ChineseRafinery_1029\",\n\t\t    \"Dlg_ChineseRafinery_1030\",\n\t\t    \"Dlg_ChineseRafinery_1031\",\n\t\t    \"Dlg_ChineseRafinery_1032\",\n\t\t    \"Dlg_ChineseRafinery_1033\",\n\t\t    \"Dlg_ChineseRafinery_1034\",\n\t\t    \"Dlg_ChineseRafinery_1035\",\n\t\t    \"Dlg_ChineseRafinery_1036\",\n\t\t    \"Dlg_ChineseRafinery_1037\",\n\t\t    \"Dlg_ChineseRafinery_1038\",\n\t\t    \"Dlg_ChineseRafinery_1039\",\n\t\t    \"Amb2D_City\",\n\t\t    \"Amb2D_ComputerRoom\",\n\t\t    \"Amb2D_Factory\",\n\t\t    \"Amb2D_LostPlace\",\n\t\t    \"Amb2D_RedHeat\",\n\t\t    \"Amb2D_War\",\n\t\t    \"Dlg_ChineseTransmitter_1004\",\n\t\t    \"Dlg_ChineseTransmitter_1005\",\n\t\t    \"Dlg_ChineseTransmitter_1006\",\n\t\t    \"Dlg_ChineseTransmitter_1007\",\n\t\t    \"Dlg_ChineseTransmitter_1008\",\n\t\t    \"Dlg_ChineseTransmitter_1009\",\n\t\t    \"Dlg_ChineseTransmitter_1010\",\n\t\t    \"Dlg_ChineseTransmitter_1011\",\n\t\t    \"Dlg_ChineseTransmitter_1012\",\n\t\t    \"Dlg_ChineseTransmitter_1013\",\n\t\t    \"Dlg_ChineseTransmitter_1014\",\n\t\t    \"Dlg_ChineseTransmitter_1015\",\n\t\t    \"Dlg_ChineseTransmitter_1016\",\n\t\t    \"Dlg_ChineseTransmitter_1017\",\n\t\t    \"Dlg_ChineseTransmitter_1018\",\n\t\t    \"Dlg_ChineseTransmitter_1019\",\n\t\t    \"Dlg_ChineseTransmitter_1020\",\n\t\t    \"Dlg_ChineseTransmitter_1021\",\n\t\t    \"Dlg_ChineseTransmitter_1022\",\n\t\t    \"Dlg_ChineseTransmitter_1023\",\n\t\t    \"Dlg_ChineseTransmitter_1024\",\n\t\t    \"Dlg_ChineseTransmitter_1025\",\n\t\t    \"Dlg_ChineseTransmitter_1026\",\n\t\t    \"Dlg_ChineseTransmitter_1027\",\n\t\t    \"Dlg_ChineseTransmitter_1028\",\n\t\t    \"Dlg_ChineseTransmitter_1029\",\n\t\t    \"Dlg_ChineseTransmitter_1030\",\n\t\t    \"Dlg_ChineseTransmitter_1031\",\n\t\t    \"Dlg_ChineseTransmitter_1032\",\n\t\t    \"Dlg_ChineseTransmitter_1033\",\n\t\t    \"Dlg_ChineseTransmitter_1034\",\n\t\t    \"Dlg_ChineseTransmitter_1035\",\n\t\t    \"Dlg_ChineseTransmitter_1036\",\n\t\t    \"Dlg_ChineseTransmitter_1037\",\n\t\t    \"Dlg_ChineseTransmitter_1038\",\n\t\t    \"Dlg_ChineseTransmitter_1039\",\n\t\t    \"Dlg_ChineseTransmitter_1040\",\n\t\t    \"Dlg_ChineseTransmitter_1041\",\n\t\t    \"Dlg_ChineseTransmitter_1042\",\n\t\t    \"Dlg_ChineseTransmitter_1043\",\n\t\t    \"Dlg_ChineseTransmitter_1044\",\n\t\t    \"Amb2D_City2\",\n\t\t    \"Amb2D_Factory2\",\n\t\t    \"Dlg_ChineseTransmitter_1047\",\n\t\t    \"Dlg_ChineseTransmitter_1048\",\n\t\t    \"Dlg_ChineseTransmitter_1049\",\n\t\t    \"Dlg_ChineseTransmitter_1050\",\n\t\t    \"Dlg_ChineseTransmitter_1051\",\n\t\t    \"Dlg_ChineseTransmitter_1052\",\n\t\t    \"Dlg_ChineseTransmitter_1053\",\n\t\t    \"Dlg_ChineseTransmitter_1054\",\n\t\t    \"Dlg_ChineseTransmitter_1055\",\n\t\t    \"Dlg_ChineseTransmitter_1056\",\n\t\t    \"Dlg_ChineseTransmitter_1057\",\n\t\t    \"Dlg_ChineseTransmitter_1058\",\n\t\t    \"Dlg_ChineseTransmitter_1059\",\n\t\t    \"Dlg_ChineseTransmitter_1060\",\n\t\t    \"Dlg_ChineseTransmitter_1061\",\n\t\t    \"Dlg_ChineseTransmitter_1062\",\n\t\t    \"Dlg_ChineseTransmitter_1063\",\n\t\t    \"Dlg_ChineseTransmitter_1064\",\n\t\t    \"Dlg_ChineseTransmitter_1065\",\n\t\t    \"Dlg_ChineseTransmitter_1066\",\n\t\t    \"Dlg_ChineseTransmitter_1067\",\n\t\t    \"Dlg_ChineseTransmitter_1068\",\n\t\t    \"Dlg_ChineseTransmitter_1069\",\n\t\t    \"Dlg_SlaverBaseWipeout_1000\",\n\t\t    \"Dlg_SlaverBaseWipeout_1001\",\n\t\t    \"Dlg_SlaverBaseWipeout_1002\",\n\t\t    \"Dlg_SlaverBaseWipeout_1003\",\n\t\t    \"Dlg_SlaverBaseWipeout_1004\",\n\t\t    \"Dlg_SlaverBaseWipeout_1005\",\n\t\t    \"Dlg_SlaverBaseWipeout_1006\",\n\t\t    \"Dlg_SlaverBaseWipeout_1007\",\n\t\t    \"Dlg_SlaverBaseWipeout_1008\",\n\t\t    \"Dlg_SlaverBaseWipeout_1009\",\n\t\t    \"Dlg_SlaverBaseWipeout_1010\",\n\t\t    \"Dlg_SlaverBaseWipeout_1011\",\n\t\t    \"Dlg_SlaverBaseWipeout_1012\",\n\t\t    \"Dlg_SlaverBaseWipeout_1013\",\n\t\t    \"Dlg_SlaverBaseWipeout_1014\",\n\t\t    \"Dlg_SlaverBaseWipeout_1015\",\n\t\t    \"Dlg_SlaverBaseWipeout_1016\",\n\t\t    \"Dlg_SlaverBaseWipeout_1017\",\n\t\t    \"Dlg_SlaverBaseWipeout_1018\",\n\t\t    \"Dlg_SlaverBaseWipeout_1019\",\n\t\t    \"Dlg_SlaverBaseWipeout_1020\",\n\t\t    \"Dlg_SlaverBaseWipeout_1021\",\n\t\t    \"Dlg_SlaverBaseWipeout_1022\",\n\t\t    \"Dlg_SlaverBaseWipeout_1023\",\n\t\t    \"Dlg_SlaverBaseWipeout_1024\",\n\t\t    \"Dlg_SlaverBaseWipeout_1025\",\n\t\t    \"Dlg_SlaverBaseWipeout_1026\",\n\t\t    \"Dlg_SlaverBaseWipeout_1027\",\n\t\t    \"Dlg_SlaverBaseWipeout_1028\",\n\t\t    \"Dlg_SlaverBaseWipeout_1029\",\n\t\t    \"Dlg_SlaverBaseWipeout_1030\",\n\t\t    \"Dlg_SlaverBaseWipeout_1031\",\n\t\t    \"Dlg_SlaverBaseWipeout_1032\",\n\t\t    \"Dlg_SlaverBaseWipeout_1033\",\n\t\t    \"Dlg_SlaverBaseWipeout_1034\",\n\t\t    \"Dlg_SlaverBaseWipeout_1035\",\n\t\t    \"Dlg_SlaverBaseWipeout_1036\",\n\t\t    \"Dlg_SlaverBaseWipeout_1037\",\n\t\t    \"Dlg_SlaverBaseWipeout_1038\",\n\t\t    \"Dlg_SlaverBaseWipeout_1039\",\n\t\t    \"Dlg_SlaverBaseWipeout_1040\",\n\t\t    \"Dlg_SlaverBaseWipeout_1041\",\n\t\t    \"Dlg_SlaverBaseWipeout_1042\",\n\t\t    \"Dlg_SlaverBaseWipeout_1043\",\n\t\t    \"Dlg_SlaverBaseWipeout_1044\",\n\t\t    \"Dlg_SlaverBaseWipeout_1045\",\n\t\t    \"Dlg_SlaverBaseWipeout_1046\",\n\t\t    \"Dlg_SlaverBaseWipeout_1047\",\n\t\t    \"Dlg_SlaverBaseWipeout_1048\",\n\t\t    \"Dlg_SlaverBaseWipeout_1049\",\n\t\t    \"Dlg_SlaverBaseWipeout_1050\",\n\t\t    \"Dlg_SlaverBaseWipeout_1051\",\n\t\t    \"Dlg_SlaverBaseWipeout_1052\",\n\t\t    \"Dlg_SlaverBase2_1000\",\n\t\t    \"Dlg_SlaverBase2_1001\",\n\t\t    \"Dlg_SlaverBase2_1002\",\n\t\t    \"Dlg_SlaverBase2_1003\",\n\t\t    \"Dlg_SlaverBase2_1004\",\n\t\t    \"Dlg_SlaverBase2_1005\",\n\t\t    \"Dlg_SlaverBase2_1006\",\n\t\t    \"Dlg_SlaverBase2_1007\",\n\t\t    \"Dlg_SlaverBase2_1008\",\n\t\t    \"Dlg_SlaverBase2_1009\",\n\t\t    \"Dlg_SlaverBase2_1010\",\n\t\t    \"Dlg_SlaverBase2_1011\",\n\t\t    \"Dlg_SlaverBase2_1012\",\n\t\t    \"Dlg_SlaverBase2_1013\",\n\t\t    \"Dlg_SlaverBase2_1014\",\n\t\t    \"Dlg_SlaverBase2_1015\",\n\t\t    \"Dlg_SlaverBase2_1016\",\n\t\t    \"Dlg_SlaverBase2_1017\",\n\t\t    \"Dlg_SlaverBase2_1018\",\n\t\t    \"Dlg_SlaverBase2_1019\",\n\t\t    \"Dlg_SlaverBase2_1020\",\n\t\t    \"Dlg_SlaverBase2_1021\",\n\t\t    \"Dlg_SlaverBase2_1022\",\n\t\t    \"Dlg_SlaverBase2_1023\",\n\t\t    \"Dlg_SlaverBase2_1024\",\n\t\t    \"Dlg_SlaverBase2_1025\",\n\t\t    \"Dlg_SlaverBase2_1026\",\n\t\t    \"Dlg_SlaverBase2_1027\",\n\t\t    \"Dlg_SlaverBase2_1028\",\n\t\t    \"Dlg_SlaverBase2_1029\",\n\t\t    \"Dlg_SlaverBase2_1030\",\n\t\t    \"Dlg_SlaverBase2_1031\",\n\t\t    \"Dlg_SlaverBase2_1032\",\n\t\t    \"Dlg_SlaverBase2_1033\",\n\t\t    \"Dlg_SlaverBase2_1034\",\n\t\t    \"Dlg_SlaverBase2_1035\",\n\t\t    \"Dlg_SlaverBase2_1036\",\n\t\t    \"Dlg_SlaverBase2_1037\",\n\t\t    \"Dlg_SlaverBase2_1038\",\n\t\t    \"Dlg_SlaverBase2_1039\",\n\t\t    \"Dlg_SlaverBase2_1040\",\n\t\t    \"Dlg_SlaverBase2_1041\",\n\t\t    \"Dlg_SlaverBase2_1042\",\n\t\t    \"Dlg_SlaverBase2_1043\",\n\t\t    \"Dlg_SlaverBase2_1044\",\n\t\t    \"Dlg_TwinTowers_1000\",\n\t\t    \"Dlg_TwinTowers_1001\",\n\t\t    \"Dlg_TwinTowers_1002\",\n\t\t    \"Dlg_TwinTowers_1003\",\n\t\t    \"Dlg_TwinTowers_1004\",\n\t\t    \"Dlg_TwinTowers_1005\",\n\t\t    \"Dlg_TwinTowers_1006\",\n\t\t    \"Dlg_TwinTowers_1007\",\n\t\t    \"Dlg_TwinTowers_1008\",\n\t\t    \"Dlg_TwinTowers_1009\",\n\t\t    \"Dlg_TwinTowers_1010\",\n\t\t    \"Dlg_TwinTowers_1011\",\n\t\t    \"Dlg_TwinTowers_1012\",\n\t\t    \"Dlg_TwinTowers_1013\",\n\t\t    \"Dlg_TwinTowers_1014\",\n\t\t    \"Dlg_TwinTowers_1015\",\n\t\t    \"Dlg_TwinTowers_1016\",\n\t\t    \"Dlg_TwinTowers_1017\",\n\t\t    \"Dlg_TwinTowers_1018\",\n\t\t    \"Dlg_TwinTowers_1019\",\n\t\t    \"Dlg_TwinTowers_1020\",\n\t\t    \"Dlg_TwinTowers_1021\",\n\t\t    \"Dlg_TwinTowers_1022\",\n\t\t    \"Dlg_TwinTowers_1023\",\n\t\t    \"Dlg_TwinTowers_1024\",\n\t\t    \"Dlg_TwinTowers_1025\",\n\t\t    \"Dlg_TwinTowers_1026\",\n\t\t    \"Dlg_TwinTowers_1027\",\n\t\t    \"Dlg_TwinTowers_1028\",\n\t\t    \"Dlg_TwinTowers_1029\",\n\t\t    \"Dlg_TwinTowers_1030\",\n\t\t    \"Dlg_TwinTowers_1031\",\n\t\t    \"Dlg_TwinTowers_1032\",\n\t\t    \"Dlg_TwinTowers_1033\",\n\t\t    \"Dlg_TwinTowers_1034\",\n\t\t    \"Dlg_TwinTowers_1035\",\n\t\t    \"Dlg_TwinTowers_1036\",\n\t\t    \"Dlg_TwinTowers_1037\",\n\t\t    \"Dlg_TwinTowers_1038\",\n\t\t    \"Dlg_TwinTowers_1039\",\n\t\t    \"Dlg_TwinTowers_1040\",\n\t\t    \"Dlg_TwinTowers_1041\",\n\t\t    \"Dlg_TwinTowers_1042\",\n\t\t    \"Dlg_TwinTowers_1043\",\n\t\t    \"Dlg_TwinTowers_1044\",\n\t\t    \"Dlg_TwinTowers_1045\",\n\t\t    \"Dlg_TwinTowers_1046\",\n\t\t    \"Dlg_TwinTowers_1047\",\n\t\t    \"Dlg_TwinTowers_1048\",\n\t\t    \"Dlg_TwinTowers_1049\",\n\t\t    \"Dlg_TwinTowers_1050\",\n\t\t    \"Dlg_TwinTowers_1051\",\n\t\t    \"Dlg_TwinTowers_1052\",\n\t\t    \"Dlg_TwinTowers_1053\",\n\t\t    \"Dlg_TwinTowers_1054\",\n\t\t    \"Dlg_TwinTowers_1055\",\n\t\t    \"Dlg_TwinTowers_1056\",\n\t\t    \"Dlg_TwinTowers_1057\",\n\t\t    \"Dlg_TwinTowers_1058\",\n\t\t    \"Dlg_TwinTowers_1059\",\n\t\t    \"Dlg_TwinTowers_1060\",\n\t\t    \"Dlg_TwinTowers_1061\",\n\t\t    \"Dlg_TwinTowers_1062\",\n\t\t    \"Dlg_TwinTowers_1063\",\n\t\t    \"Dlg_TwinTowers_1064\",\n\t\t    \"Dlg_TwinTowers_1065\",\n\t\t    \"Dlg_TwinTowers_1066\",\n\t\t    \"Dlg_TwinTowers_1067\",\n\t\t    \"Dlg_TwinTowers_1068\",\n\t\t    \"Dlg_TwinTowers_1069\",\n\t\t    \"Dlg_TwinTowers_1070\",\n\t\t    \"Dlg_TwinTowers_1071\",\n\t\t    \"Dlg_TwinTowers_1072\",\n\t\t    \"Dlg_TwinTowers_1073\",\n\t\t    \"Dlg_TwinTowers_1074\",\n\t\t    \"Dlg_TwinTowers_1075\",\n\t\t    \"Dlg_TwinTowers_1076\",\n\t\t    \"Dlg_TwinTowers_1077\",\n\t\t    \"Dlg_TwinTowers_1078\",\n\t\t    \"Dlg_TwinTowers_1079\",\n\t\t    \"Dlg_TwinTowers_1080\",\n\t\t    \"Dlg_TwinTowers_1081\",\n\t\t    \"Dlg_TwinTowers_1082\",\n\t\t    \"Dlg_TwinTowers_1083\",\n\t\t    \"Dlg_TwinTowers_1084\",\n\t\t    \"Dlg_TwinTowers_1085\",\n\t\t    \"Dlg_TwinTowers_1086\",\n\t\t    \"Dlg_TwinTowers_1087\",\n\t\t    \"Dlg_TwinTowers_1088\",\n\t\t    \"Dlg_TwinTowers_1089\",\n\t\t    \"Dlg_TwinTowers_1090\",\n\t\t    \"Dlg_TwinTowers_1091\",\n\t\t    \"Dlg_TwinTowers_1092\",\n\t\t    \"Dlg_TwinTowers_1093\",\n\t\t    \"Dlg_TwinTowers_1094\",\n\t\t    \"Dlg_TwinTowers_1095\",\n\t\t    \"Dlg_TwinTowers_1096\",\n\t\t    \"Dlg_TwinTowers_1097\",\n\t\t    \"Dlg_TwinTowers_1098\",\n\t\t    \"Dlg_TwinTowers_1099\",\n\t\t    \"Dlg_TwinTowers_1100\",\n\t\t    \"Dlg_TwinTowers_1101\",\n\t\t    \"Dlg_TwinTowers_1102\",\n\t\t    \"Dlg_TwinTowers_1103\",\n\t\t    \"Dlg_TwinTowers_1104\",\n\t\t    \"Dlg_TwinTowers_1105\",\n\t\t    \"Dlg_TwinTowers_1106\",\n\t\t    \"Dlg_TwinTowers_1107\",\n\t\t    \"Dlg_TwinTowers_1108\",\n\t\t    \"Dlg_TwinTowers_1109\",\n\t\t    \"Dlg_TwinTowers_1110\",\n\t\t    \"Dlg_TwinTowers_1111\",\n\t\t    \"Dlg_TwinTowers_1112\",\n\t\t    \"Dlg_TwinTowers_1113\",\n\t\t    \"Dlg_TwinTowers_1114\",\n\t\t    \"Dlg_TwinTowers_1115\",\n\t\t    \"Dlg_TwinTowers_1116\",\n\t\t    \"Dlg_TwinTowers_1117\",\n\t\t    \"Dlg_TwinTowers_1118\",\n\t\t    \"Dlg_TwinTowers_1119\",\n\t\t    \"Dlg_TwinTowers_1120\",\n\t\t    \"Dlg_TwinTowers_1121\",\n\t\t    \"Dlg_TwinTowers_1122\",\n\t\t    \"Dlg_TwinTowers_1123\",\n\t\t    \"Dlg_TwinTowers_1124\",\n\t\t    \"Dlg_TwinTowers_1125\",\n\t\t    \"Dlg_TwinTowers_1126\",\n\t\t    \"Dlg_TwinTowers_1127\",\n\t\t    \"Dlg_TwinTowers_1128\",\n\t\t    \"Dlg_TwinTowers_1129\",\n\t\t    \"Dlg_TwinTowers_1130\",\n\t\t    \"Dlg_TwinTowers_1131\",\n\t\t    \"Dlg_TwinTowers_1132\",\n\t\t    \"Dlg_WhiteWolvesBioResearch_1000\",\n\t\t    \"Dlg_WhiteWolvesBioResearch_1001\",\n\t\t    \"Dlg_WhiteWolvesBioResearch_1002\",\n\t\t    \"Dlg_WhiteWolvesBioResearch_1003\",\n\t\t    \"Dlg_WhiteWolvesBioResearch_1004\",\n\t\t    \"Dlg_WhiteWolvesBioResearch_1005\",\n\t\t    \"Dlg_WhiteWolvesBioResearch_1006\",\n\t\t    \"Dlg_WhiteWolvesBioResearch_1007\",\n\t\t    \"Dlg_WhiteWolvesBioResearch_1008\",\n\t\t    \"Dlg_WhiteWolvesBioResearch_1009\",\n\t\t    \"Dlg_WhiteWolvesBioResearch_1010\",\n\t\t    \"Dlg_WhiteWolvesBioResearch_1011\",\n\t\t    \"Dlg_WhiteWolvesBioResearch_1012\",\n\t\t    \"Dlg_WhiteWolvesBioResearch_1013\",\n\t\t    \"Dlg_WhiteWolvesBioResearch_1014\",\n\t\t    \"Dlg_WhiteWolvesBioResearch_1015\",\n\t\t    \"Dlg_WhiteWolvesBioResearch_1016\",\n\t\t    \"Dlg_WhiteWolvesBioResearch_1017\",\n\t\t    \"Dlg_WhiteWolvesBioResearch_1018\",\n\t\t    \"Dlg_WhiteWolvesBioResearch_1019\",\n\t\t    \"Dlg_WhiteWolvesBioResearch_1020\",\n\t\t    \"Dlg_WhiteWolvesBioResearch_1021\",\n\t\t    \"Dlg_WhiteWolvesBioResearch_1022\",\n\t\t    \"Dlg_WhiteWolvesBioResearch_1023\",\n\t\t    \"Dlg_WhiteWolvesBioResearch_1024\",\n\t\t    \"Dlg_WhiteWolvesBioResearch_1025\",\n\t\t    \"Dlg_WhiteWolvesBioResearch_1026\",\n\t\t    \"Dlg_WhiteWolvesBioResearch_1027\",\n\t\t    \"Dlg_WhiteWolvesBioResearch_1028\",\n\t\t    \"Dlg_WhiteWolvesBioResearch_1029\",\n\t\t    \"Dlg_WhiteWolvesBioResearch_1030\",\n\t\t    \"Dlg_WhiteWolvesBioResearch_1031\",\n\t\t    \"Dlg_WhiteWolvesBioResearch_1032\",\n\t\t    \"Dlg_WhiteWolvesBioResearch_1033\",\n\t\t    \"Dlg_WhiteWolvesBioResearch_1034\",\n\t\t    \"Dlg_WhiteWolvesBioResearch_1035\",\n\t\t    \"Dlg_WhiteWolvesBioResearch_1036\",\n\t\t    \"Dlg_WhiteWolvesBioResearch_1037\",\n\t\t    \"Dlg_WhiteWolvesBioResearch_1038\",\n\t\t    \"Dlg_WhiteWolvesBioResearch_1039\",\n\t\t    \"Dlg_WhiteWolvesBioResearch_1040\",\n\t\t    \"Dlg_WhiteWolvesBioResearch_1041\",\n\t\t    \"Dlg_WhiteWolvesBioResearch_1042\",\n\t\t    \"Dlg_WhiteWolvesBioResearch_1043\",\n\t\t    \"Dlg_WhiteWolvesBioResearch_1044\",\n\t\t    \"Dlg_RimeConvince_1000\",\n\t\t    \"Dlg_RimeConvince_1001\",\n\t\t    \"Dlg_RimeConvince_1002\",\n\t\t    \"Dlg_RimeConvince_1003\",\n\t\t    \"Dlg_RimeConvince_1004\",\n\t\t    \"Dlg_RimeConvince_1005\",\n\t\t    \"Dlg_RimeConvince_1006\",\n\t\t    \"Dlg_RimeConvince_1007\",\n\t\t    \"Dlg_RimeConvince_1008\",\n\t\t    \"Dlg_RimeConvince_1009\",\n\t\t    \"Dlg_RimeConvince_1010\",\n\t\t    \"Dlg_RimeConvince_1011\",\n\t\t    \"Dlg_RimeConvince_1012\",\n\t\t    \"Dlg_RimeConvince_1013\",\n\t\t    \"Dlg_RimeConvince_1014\",\n\t\t    \"Dlg_RimeConvince_1015\",\n\t\t    \"Dlg_RimeConvince_1016\",\n\t\t    \"Dlg_RimeConvince_1017\",\n\t\t    \"Dlg_RimeConvince_1018\",\n\t\t    \"Dlg_RimeConvince_1019\",\n\t\t    \"Dlg_RimeConvince_1020\",\n\t\t    \"Dlg_RimeConvince_1021\",\n\t\t    \"Dlg_RimeConvince_1022\",\n\t\t    \"Dlg_RimeConvince_1023\",\n\t\t    \"Dlg_RimeConvince_1024\",\n\t\t    \"Dlg_RimeConvince_1025\",\n\t\t    \"Dlg_RimeConvince_1026\",\n\t\t    \"Dlg_RimeConvince_1027\",\n\t\t    \"Dlg_RimeConvince_1028\",\n\t\t    \"Dlg_RimeConvince_1029\",\n\t\t    \"Dlg_RimeConvince_1030\",\n\t\t    \"Dlg_RimeConvince_1031\",\n\t\t    \"Dlg_RimeConvince_1032\",\n\t\t    \"Dlg_RimeConvince_1033\",\n\t\t    \"Dlg_RimeConvince_1034\",\n\t\t    \"Dlg_RimeConvince_1035\",\n\t\t    \"Dlg_RimeConvince_1036\",\n\t\t    \"Dlg_RimeConvince_1037\",\n\t\t    \"Dlg_RimeConvince_1038\",\n\t\t    \"Dlg_RimeConvince_1039\",\n\t\t    \"Dlg_RimeConvince_1040\",\n\t\t    \"Dlg_RimeConvince_1041\",\n\t\t    \"Dlg_RimeConvince_1042\",\n\t\t    \"Dlg_RimeConvince_1043\",\n\t\t    \"Dlg_RimeConvince_1044\",\n\t\t    \"Dlg_RimeConvince_1045\",\n\t\t    \"Dlg_RimeConvince_1046\",\n\t\t    \"Dlg_RimeConvince_1047\",\n\t\t    \"Dlg_RimeConvince_1048\",\n\t\t    \"Dlg_RimeConvince_1049\",\n\t\t    \"Dlg_RimeConvince_1050\",\n\t\t    \"Dlg_RimeConvince_1051\",\n\t\t    \"Dlg_RimeConvince_1052\",\n\t\t    \"Dlg_RimeConvince_1053\",\n\t\t    \"Dlg_RimeConvince_1054\",\n\t\t    \"Dlg_RimeConvince_1055\",\n\t\t    \"Dlg_RimeConvince_1056\",\n\t\t    \"Dlg_RimeConvince_1057\",\n\t\t    \"Dlg_RimeConvince_1058\",\n\t\t    \"Dlg_RimeConvince_1059\",\n\t\t    \"Dlg_RimeConvince_1060\",\n\t\t    \"Dlg_RimeConvince_1061\",\n\t\t    \"Dlg_RimeConvince_1062\",\n\t\t    \"Dlg_RimeConvince_1063\",\n\t\t    \"Dlg_RimeConvince_1064\",\n\t\t    \"Dlg_RimeConvince_1065\",\n\t\t    \"Dlg_RimeConvince_1066\",\n\t\t    \"Dlg_RimeConvince_1067\",\n\t\t    \"Dlg_RimeConvince_1068\",\n\t\t    \"Dlg_RimeConvince_1069\",\n\t\t    \"Dlg_RimeConvince_1070\",\n\t\t    \"Dlg_RimeConvince_1071\",\n\t\t    \"Dlg_RimeConvince_1072\",\n\t\t    \"Dlg_RimeConvince_1073\",\n\t\t    \"Dlg_RimeConvince_1074\",\n\t\t    \"Dlg_RimeConvince_1075\",\n\t\t    \"Dlg_RimeConvince_1076\",\n\t\t    \"Dlg_RimeConvince_1077\",\n\t\t    \"Dlg_RimeConvince_1078\",\n\t\t    \"Dlg_RimeConvince_1079\",\n\t\t    \"Dlg_RimeConvince_1080\",\n\t\t    \"Dlg_RimeConvince_1081\",\n\t\t    \"Dlg_RimeConvince_1082\",\n\t\t    \"Dlg_RimeConvince_1083\",\n\t\t    \"Dlg_RimeConvince_1084\",\n\t\t    \"Dlg_RimeConvince_1085\",\n\t\t    \"Dlg_RimeConvince_1086\",\n\t\t    \"Dlg_RimeConvince_1087\",\n\t\t    \"Dlg_RimeConvince_1088\",\n\t\t    \"Dlg_RimeConvince_1089\",\n\t\t    \"Dlg_RimeConvince_1090\",\n\t\t    \"Dlg_RimeConvince_1091\",\n\t\t    \"Dlg_RimeConvince_1092\",\n\t\t    \"Dlg_RimeConvince_1093\",\n\t\t    \"Dlg_RimeConvince_1094\",\n\t\t    \"Dlg_RimeConvince_1095\",\n\t\t    \"Dlg_RimeConvince_1096\",\n\t\t    \"Dlg_RimeConvince_1097\",\n\t\t    \"Dlg_RimeConvince_1098\",\n\t\t    \"Dlg_RimeConvince_1099\",\n\t\t    \"Dlg_RimeConvince_1100\",\n\t\t    \"Dlg_RimeConvince_1101\",\n\t\t    \"Dlg_RimeConvince_1102\",\n\t\t    \"Dlg_RimeConvince_1103\",\n\t\t    \"Dlg_RimeConvince_1104\",\n\t\t    \"Dlg_RimeConvince_1105\",\n\t\t    \"Dlg_RimeConvince_1106\",\n\t\t    \"Dlg_RimeConvince_1107\",\n\t\t    \"Dlg_RimeConvince_1108\",\n\t\t    \"Dlg_RimeConvince_1109\",\n\t\t    \"Dlg_RimeConvince_1110\",\n\t\t    \"Dlg_RimeConvince_1111\",\n\t\t    \"Dlg_RimeConvince_1112\",\n\t\t    \"Dlg_RimeConvince_1113\",\n\t\t    \"Dlg_RimeConvince_1114\",\n\t\t    \"Dlg_RimeConvince_1115\",\n\t\t    \"Dlg_RimeConvince_1116\",\n\t\t    \"Dlg_RimeConvince_1117\",\n\t\t    \"Dlg_RimeConvince_1118\",\n\t\t    \"Dlg_RimeConvince_1119\",\n\t\t    \"Dlg_RimeConvince_1120\",\n\t\t    \"Dlg_RimeConvince_1121\",\n\t\t    \"Dlg_RimeConvince_1122\",\n\t\t    \"Dlg_RimeConvince_1123\",\n\t\t    \"Dlg_RimeConvince_1124\",\n\t\t    \"Dlg_RimeConvince_1125\",\n\t\t    \"Dlg_RimeConvince_1126\",\n\t\t    \"Dlg_RimeConvince_1127\",\n\t\t    \"Dlg_RimeConvince_1128\",\n\t\t    \"Dlg_RimeConvince_1129\",\n\t\t    \"Dlg_RimeConvince_1130\",\n\t\t    \"Dlg_RimeConvince_1131\",\n\t\t    \"Dlg_RimeConvince_1132\",\n\t\t    \"Dlg_RimeConvince_1133\",\n\t\t    \"Dlg_RimeConvince_1134\",\n\t\t    \"Dlg_RimeConvince_1135\",\n\t\t    \"Dlg_RimeConvince_1136\",\n\t\t    \"Dlg_RimeConvince_1137\",\n\t\t    \"Dlg_RimeConvince_1138\",\n\t\t    \"Dlg_RimeConvince_1139\",\n\t\t    \"Dlg_RimeConvince_1140\",\n\t\t    \"Dlg_RimeConvince_1141\",\n\t\t    \"Dlg_RimeConvince_1142\",\n\t\t    \"Dlg_RimeConvince_1143\",\n\t\t    \"Dlg_RimeConvince_1144\",\n\t\t    \"Dlg_RimeConvince_1145\",\n\t\t    \"Dlg_RimeConvince_1146\",\n\t\t    \"Dlg_RimeConvince_1147\",\n\t\t    \"Dlg_RimeConvince_1148\",\n\t\t    \"Dlg_Rift_1000\",\n\t\t    \"Dlg_Rift_1001\",\n\t\t    \"Dlg_Rift_1002\",\n\t\t    \"Dlg_Rift_1003\",\n\t\t    \"Dlg_Rift_1004\",\n\t\t    \"Dlg_Rift_1005\",\n\t\t    \"Dlg_Rift_1006\",\n\t\t    \"Dlg_Rift_1007\",\n\t\t    \"Dlg_Rift_1008\",\n\t\t    \"Dlg_Rift_1009\",\n\t\t    \"Dlg_Rift_1010\",\n\t\t    \"Dlg_Rift_1011\",\n\t\t    \"Dlg_Rift_1012\",\n\t\t    \"Dlg_Rift_1013\",\n\t\t    \"Dlg_Rift_1014\",\n\t\t    \"Dlg_Rift_1015\",\n\t\t    \"Dlg_Rift_1016\",\n\t\t    \"Dlg_Rift_1017\",\n\t\t    \"Dlg_Rift_1018\",\n\t\t    \"Dlg_Rift_1019\",\n\t\t    \"Dlg_Rift_1020\",\n\t\t    \"Dlg_Rift_1021\",\n\t\t    \"Dlg_Rift_1022\",\n\t\t    \"Dlg_Rift_1023\",\n\t\t    \"Dlg_Rift_1024\",\n\t\t    \"Dlg_Rift_1025\",\n\t\t    \"Dlg_Rift_1026\",\n\t\t    \"Dlg_Rift_1027\",\n\t\t    \"Dlg_Rift_1028\",\n\t\t    \"Dlg_Rift_1029\",\n\t\t    \"Dlg_Rift_1030\",\n\t\t    \"Dlg_Rift_1031\",\n\t\t    \"Dlg_Rift_1032\",\n\t\t    \"Dlg_Rift_1033\",\n\t\t    \"Dlg_Rift_1034\",\n\t\t    \"Dlg_Rift_1035\",\n\t\t    \"Dlg_Rift_1036\",\n\t\t    \"Dlg_Rift_1037\",\n\t\t    \"Dlg_Rift_1038\",\n\t\t    \"Dlg_Rift_1039\",\n\t\t    \"Dlg_Rift_1040\",\n\t\t    \"Dlg_Rift_1041\",\n\t\t    \"Dlg_Rift_1042\",\n\t\t    \"Dlg_Rift_1043\",\n\t\t    \"Dlg_Rift_1044\",\n\t\t    \"Dlg_Rift_1045\",\n\t\t    \"Dlg_Rift_1046\",\n\t\t    \"Dlg_Rift_1047\",\n\t\t    \"Dlg_Rift_1048\",\n\t\t    \"Dlg_Rift_1049\",\n\t\t    \"Dlg_Rift_1050\",\n\t\t    \"Dlg_Rift_1051\",\n\t\t    \"Dlg_Rift_1052\",\n\t\t    \"Dlg_Rift_1053\",\n\t\t    \"Dlg_Rift_1054\",\n\t\t    \"Dlg_Rift_1055\",\n\t\t    \"Dlg_Rift_1056\",\n\t\t    \"Dlg_Rift_1057\",\n\t\t    \"Dlg_Rift_1058\",\n\t\t    \"Dlg_Rift_1059\",\n\t\t    \"Dlg_Rift_1060\",\n\t\t    \"SfxAcquireWeaponOn\",\n\t\t    \"SfxAcquireWeaponOff\",\n\t\t    \"SfxAcquireDroneOn\",\n\t\t    \"SfxAcquireDroneOff\",\n\t\t    \"SfxAcquireCameraOn\",\n\t\t    \"SfxAcquireCameraOff\",\n\t\t    \"SfxTakeAllUniversal\",\n\t\t    \"SfxTakeAllAmmo\",\n\t\t    \"SfxTakeAllFuel\",\n\t\t    \"SfxTakeAllMedkit\",\n\t\t    \"SfxTakeAllOxygen\",\n\t\t    \"SfxTakeAllRepair\",\n\t\t    \"MusLightFight_KA03\",\n\t\t    \"MusLightFight_KA04\",\n\t\t    \"MusLightFight_KA05\",\n\t\t    \"MusLightFight_KA07\",\n\t\t    \"MusLightFight_KA08\",\n\t\t    \"MusLightFight_KA10\",\n\t\t    \"MusLightFight_KA11\",\n\t\t    \"MusSpecial_MM02\",\n\t\t    \"MusSpecial_MM03\",\n\t\t    \"MusSpecial_KA01\",\n\t\t    \"MusHeavyFight_KA03\",\n\t\t    \"SfxProgressTake\",\n\t\t    \"SfxCancelTake\",\n\t\t    \"SfxProgressPut\",\n\t\t    \"SfxCancelPut\",\n\t\t    \"HudAmmoNoWarning\",\n\t\t    \"HudArmorNoWarning\",\n\t\t    \"VehToolCrusherDrillCollidingOtherRelease2d\",\n\t\t    \"VehToolCrusherDrillCollidingOtherRelease3d\",\n\t\t    \"VehToolLaserCollidingOther2d\",\n\t\t    \"VehToolLaserCollidingOther3d\",\n\t\t    \"VehToolLaserCollidingOtherRelease2d\",\n\t\t    \"VehToolLaserCollidingOtherRelease3d\",\n\t\t    \"VehToolPressureDrillBlastOther2d\",\n\t\t    \"VehToolPressureDrillBlastOther3d\",\n\t\t    \"VehToolSawCutOther2d\",\n\t\t    \"VehToolSawCutOther3d\",\n\t\t    \"VehToolSawCutOtherRelease2d\",\n\t\t    \"VehToolSawCutOtherRelease3d\",\n\t\t    \"VehToolSawCutRelease2d\",\n\t\t    \"VehToolSawCutRelease3d\",\n\t\t    \"VehToolThermalDrillCollidingOther2d\",\n\t\t    \"VehToolThermalDrillCollidingOther3d\",\n\t\t    \"VehToolThermalDrillCollidingOtherRelease2d\",\n\t\t    \"VehToolThermalDrillCollidingOtherRelease3d\",\n\t\t    \"VehToolCrusherDrillCollidingOther2d\",\n\t\t    \"VehToolCrusherDrillCollidingOther3d\",\n\t\t    \"SfxFlareLoop01\",\n\t\t    \"SfxFlareDeploy\",\n\t\t    \"Amb3D_EngineThrust\",\n\t\t    \"VehLoopDrone\",\n\t\t    \"VehLoopCamera\",\n\t\t    \"WepEpmExplosion\",\n\t\t    \"HudOxygenLeakingWarning\",\n\t\t    \"VehLoopLargeShip\",\n\t\t    \"MusLightFight_KA12\",\n\t\t    \"MusHeavyFight_KA05\",\n\t\t    \"MusSpecial_KA02\",\n\t\t    \"MusHeavyFight_KA07\",\n\t\t    \"MusSpecial_MM04\",\n\t\t    \"MusHeavyFight_KA04\",\n\t\t    \"MusSpecial_KA03\",\n\t\t    \"SfxMeteorFly\",\n\t\t    \"SfxMeteorExplosion\",\n\t\t    \"WepLargeShipAutocannonRotateRelease\",\n\t\t    \"SfxNuclearExplosion\",\n\t\t    \"MusLightFight_KA27\",\n\t\t    \"MusSpecial_KA04\",\n\t\t    \"MusSpecial_KA05\",\n\t\t    \"MusSpecial_MM05\",\n\t\t    \"Mus_lightfight_KA_26\",\n\t\t    \"Mus_lightfight_KA_28\",\n\t\t    \"Mus_special_KA_4_loop\",\n\t\t    \"VehToolNuclearDrillLoop3d\",\n\t\t    \"VehToolNuclearDrillLoop2d\",\n\t\t    \"VehToolNuclearDrillRelease3d\",\n\t\t    \"VehToolNuclearDrillRelease2d\",\n\t\t    \"VehToolNuclearDrillColliding3d\",\n\t\t    \"VehToolNuclearDrillColliding2d\",\n\t\t    \"VehToolNuclearDrillCollidingOther3d\",\n\t\t    \"VehToolNuclearDrillCollidingOther2d\",\n\t\t    \"VehToolNuclearDrillCollidingRelease3d\",\n\t\t    \"VehToolNuclearDrillCollidingRelease2d\",\n\t\t    \"VehToolNuclearDrillCollidingOtherRelease3d\",\n\t\t    \"VehToolNuclearDrillCollidingOtherRelease2d\",\n\t\t    \"VehToolNuclearDrillIdle3d\",\n\t\t    \"VehToolNuclearDrillIdle2d\",\n\t\t    \"VehToolPressureDrillBlast3d\",\n\t\t    \"VehToolPressureDrillBlastRock3d\",\n\t\t    \"VehToolPressureDrillIdle3d\",\n\t\t    \"VehToolPressureDrillRecharge3d\",\n\t\t    \"SfxPlayerDeathBeep\",\n\t\t    \"SfxPlayerDeathBreath\",\n\t\t    \"Dlg_EACSurveySite_1000\",\n\t\t    \"Dlg_EACSurveySite_1001\",\n\t\t    \"Dlg_EACSurveySite_1002\",\n\t\t    \"Dlg_EACSurveySite_1003\",\n\t\t    \"Dlg_EACSurveySite_1004\",\n\t\t    \"Sht_Reich_JE_ForTheFuture\",\n\t\t    \"Sht_Reich_JE_Vanquish\",\n\t\t    \"Sht_Reich_JE_WeControl\",\n\t\t    \"Sht_Reich_JE_YouAreTheWeakLink\",\n\t\t    \"Sht_Reich_JE_YourFinalDay\",\n\t\t    \"Sht_Russian_JE_DasVidanya\",\n\t\t    \"Sht_Russian_JE_ForKremlin\",\n\t\t    \"Sht_Russian_JE_ForMotherland\",\n\t\t    \"Sht_Russian_JE_Harasho\",\n\t\t    \"Sht_Russian_JE_ShootThem\",\n\t\t    \"Sht_Russian_JE_TovaryshRemember\",\n\t\t    \"Sht_Russian_JE_UnitedAndMighty\",\n\t\t    \"Amb3D_RadioChatterAllied01_04\",\n\t\t    \"Amb3D_RadioChatterAllied05_08\",\n\t\t    \"Amb2D_RacingFans\",\n\t\t    \"Amb3D_RadioChatterAllied13_16\",\n\t\t    \"Amb3D_RadioChatterChinese01_04\",\n\t\t    \"Amb3D_RadioChatterChinese05_08\",\n\t\t    \"Amb3D_RadioChatterChinese09_12\",\n\t\t    \"Amb2D_RedHeat2\",\n\t\t    \"Amb3D_RadioChatterRussian01_04\",\n\t\t    \"Amb3D_RadioChatterRussian05_08\",\n\t\t    \"Amb3D_RadioChatterRussian09_12\",\n\t\t    \"Amb3D_RadioChatterRussian13_16\",\n\t\t    \"MusMainMenu_KA_MM\",\n\t\t    \"HudFuelNoWarning\",\n\t\t    \"VehLoopLargeShipMadelyn\",\n\t\t    \"VocRace01Welcome\",\n\t\t    \"VocRace02countdown\",\n\t\t    \"VocRace03cleanStart\",\n\t\t    \"VocRace04running\",\n\t\t    \"VocRace05minefields\",\n\t\t    \"VocRace06speedDuel\",\n\t\t    \"VocRace07allThose\",\n\t\t    \"VocRace08moving\",\n\t\t    \"VocRace09dirtyTricks\",\n\t\t    \"VocRace10inside\",\n\t\t    \"VocRace11wire\",\n\t\t    \"Dlg_RussianTransmitter_1000\",\n\t\t    \"Dlg_RussianTransmitter_1001\",\n\t\t    \"Dlg_RussianTransmitter_1002\",\n\t\t    \"Dlg_RussianTransmitter_1003\",\n\t\t    \"Dlg_RussianTransmitter_1004\",\n\t\t    \"Dlg_RussianTransmitter_1005\",\n\t\t    \"Dlg_RussianTransmitter_1006\",\n\t\t    \"Dlg_RussianTransmitter_1007\",\n\t\t    \"Dlg_RussianTransmitter_1008\",\n\t\t    \"Dlg_RussianTransmitter_1009\",\n\t\t    \"Dlg_RussianTransmitter_1010\",\n\t\t    \"Dlg_RussianTransmitter_1011\",\n\t\t    \"Dlg_RussianTransmitter_1012\",\n\t\t    \"Dlg_RussianTransmitter_1013\",\n\t\t    \"Dlg_RussianTransmitter_1014\",\n\t\t    \"Dlg_RussianTransmitter_1015\",\n\t\t    \"Dlg_RussianTransmitter_1016\",\n\t\t    \"Dlg_RussianTransmitter_1017\",\n\t\t    \"Dlg_RussianTransmitter_1018\",\n\t\t    \"Dlg_RussianTransmitter_1019\",\n\t\t    \"Dlg_RussianTransmitter_1020\",\n\t\t    \"Dlg_RussianTransmitter_1021\",\n\t\t    \"Dlg_RussianTransmitter_1022\",\n\t\t    \"Dlg_RussianTransmitter_1023\",\n\t\t    \"Dlg_RussianTransmitter_1024\",\n\t\t    \"Dlg_RussianTransmitter_1025\",\n\t\t    \"Dlg_RussianTransmitter_1026\",\n\t\t    \"Dlg_RussianTransmitter_1027\",\n\t\t    \"Dlg_RussianTransmitter_1028\",\n\t\t    \"Dlg_RussianTransmitter_1029\",\n\t\t    \"Dlg_RussianTransmitter_1030\",\n\t\t    \"Dlg_RussianTransmitter_1031\",\n\t\t    \"Dlg_RussianTransmitter_1032\",\n\t\t    \"Dlg_RussianTransmitter_1033\",\n\t\t    \"Dlg_RussianTransmitter_1034\",\n\t\t    \"Dlg_RussianTransmitter_1035\",\n\t\t    \"Dlg_RussianTransmitter_1036\",\n\t\t    \"Dlg_RussianTransmitter_1037\",\n\t\t    \"Dlg_RussianTransmitter_1038\",\n\t\t    \"Dlg_RussianTransmitter_1039\",\n\t\t    \"Dlg_RussianTransmitter_1040\",\n\t\t    \"Dlg_RussianTransmitter_1041\",\n\t\t    \"Dlg_RussianTransmitter_1042\",\n\t\t    \"Dlg_RussianTransmitter_1043\",\n\t\t    \"Dlg_RussianTransmitter_1044\",\n\t\t    \"Dlg_RussianTransmitter_1045\",\n\t\t    \"Dlg_RussianTransmitter_1046\",\n\t\t    \"Dlg_RussianTransmitter_1047\",\n\t\t    \"Dlg_RussianTransmitter_1048\",\n\t\t    \"Dlg_RussianTransmitter_1049\",\n\t\t    \"Dlg_RussianTransmitter_1050\",\n\t\t    \"Dlg_RussianTransmitter_1051\",\n\t\t    \"Dlg_RussianTransmitter_1052\",\n\t\t    \"Dlg_RussianTransmitter_1053\",\n\t\t    \"Dlg_RussianTransmitter_1054\",\n\t\t    \"Dlg_RussianTransmitter_1055\",\n\t\t    \"Dlg_RussianTransmitter_1056\",\n\t\t    \"Dlg_RussianTransmitter_1057\",\n\t\t    \"Dlg_RussianTransmitter_1058\",\n\t\t    \"Dlg_RussianTransmitter_1059\",\n\t\t    \"Dlg_RussianTransmitter_1060\",\n\t\t    \"Dlg_RussianTransmitter_1061\",\n\t\t    \"Dlg_RussianTransmitter_1062\",\n\t\t    \"Dlg_RussianTransmitter_1063\",\n\t\t    \"Dlg_RussianTransmitter_1064\",\n\t\t    \"Dlg_RussianTransmitter_1065\",\n\t\t    \"Dlg_RussianTransmitter_1066\",\n\t\t    \"Dlg_RussianTransmitter_1067\",\n\t\t    \"Dlg_RussianTransmitter_1068\",\n\t\t    \"Dlg_RussianTransmitter_1069\",\n\t\t    \"Dlg_RussianTransmitter_1070\",\n\t\t    \"Dlg_RussianTransmitter_1071\",\n\t\t    \"Dlg_RussianTransmitter_1072\",\n\t\t    \"Dlg_RussianTransmitter_1073\",\n\t\t    \"Dlg_RussianTransmitter_1074\",\n\t\t    \"Dlg_RussianTransmitter_1075\",\n\t\t    \"Dlg_RussianTransmitter_1076\",\n\t\t    \"Dlg_RussianTransmitter_1077\",\n\t\t    \"Dlg_RussianTransmitter_1078\",\n\t\t    \"Dlg_RussianTransmitter_1079\",\n\t\t    \"Dlg_RussianTransmitter_1080\",\n\t\t    \"Dlg_RussianTransmitter_1081\",\n\t\t    \"Dlg_RussianTransmitter_1082\",\n\t\t    \"Dlg_RussianTransmitter_1083\",\n\t\t    \"Dlg_RussianTransmitter_1084\",\n\t\t    \"Dlg_RussianTransmitter_1085\",\n\t\t    \"Dlg_RussianTransmitter_1086\",\n\t\t    \"Dlg_RussianTransmitter_1087\",\n\t\t    \"Dlg_RussianTransmitter_1088\",\n\t\t    \"Dlg_RussianTransmitter_1089\",\n\t\t    \"Dlg_RussianTransmitter_1090\",\n\t\t    \"Dlg_RussianTransmitter_1091\",\n\t\t    \"Dlg_RussianTransmitter_1092\",\n\t\t    \"Dlg_RussianTransmitter_1093\",\n\t\t    \"Dlg_RussianTransmitter_1094\",\n\t\t    \"Dlg_RussianTransmitter_1095\",\n\t\t    \"Dlg_RussianTransmitter_1096\",\n\t\t    \"Dlg_RussianTransmitter_1097\",\n\t\t    \"Dlg_RussianTransmitter_1098\",\n\t\t    \"Dlg_RussianTransmitter_1099\",\n\t\t    \"Dlg_RussianTransmitter_1100\",\n\t\t    \"Dlg_RussianTransmitter_1101\",\n\t\t    \"Dlg_RussianTransmitter_1102\",\n\t\t    \"Dlg_RussianTransmitter_1103\",\n\t\t    \"Dlg_RussianTransmitter_1104\",\n\t\t    \"Dlg_RussianTransmitter_1105\",\n\t\t    \"Dlg_RussianTransmitter_1106\",\n\t\t    \"Dlg_RussianTransmitter_1107\",\n\t\t    \"Dlg_RussianTransmitter_1108\",\n\t\t    \"Dlg_RussianTransmitter_1109\",\n\t\t    \"Dlg_RussianTransmitter_1110\",\n\t\t    \"Dlg_RussianTransmitter_1111\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1001\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1002\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1003\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1004\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1005\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1006\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1007\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1008\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1009\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1010\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1011\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1012\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1013\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1014\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1015\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1016\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1018\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1019\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1020\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1021\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1022\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1023\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1024\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1025\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1026\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1027\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1028\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1029\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1030\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1031\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1032\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1033\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1034\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1035\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1036\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1037\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1038\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1039\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1040\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1041\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1042\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1043\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1044\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1045\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1046\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1047\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1048\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1049\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1050\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1051\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1052\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1053\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1054\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1055\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1056\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1057\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1058\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1059\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1060\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1061\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1062\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1063\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1064\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1065\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1066\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1067\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1068\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1069\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1070\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1071\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1072\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1073\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1074\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1075\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1076\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1077\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1078\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1079\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1079b\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1080\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1081\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1082\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1083\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1084\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1085\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1086\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1087\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1088\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1089\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1090\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1091\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1092\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1093\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1094\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1095\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1096\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1097\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1098\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1099\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1100\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1101\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1102\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1103\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1104\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1105\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1106\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1107\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1108\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1109\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1110\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1111\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1112\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1113\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1114\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1115\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1116\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1117\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1118\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1119\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1120\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1121\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1122\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1123\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1124\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1125\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1126\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1127\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1128\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1129\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1130\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1131\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1132\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1133\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1134\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1135\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1136\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1137\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1138\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1139\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1140\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1141\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1142\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1143\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1144\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1145\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1146\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1147\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1148\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1149\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1150\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1151\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1152\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1153\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1154\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1155\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1156\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1157\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1158\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1159\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1160\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1161\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1162\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1163\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1164\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1165\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1166\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1167\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1168\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1169\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1170\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1171\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1172\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1173\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1174\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1175\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1176\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1177\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1178\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1179\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1180\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1181\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1182\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1183\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1184\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1185\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1186\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1187\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1188\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1189\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1190\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1191\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1192\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1193\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1194\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1195\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1196\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1197\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1198\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1199\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1200\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1201\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1202\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1203\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1204\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1205\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1206\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1207\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1208\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1209\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1210\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1211\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1212\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1213\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1214\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1215\",\n\t\t    \"Dlg_FortValiant_1000\",\n\t\t    \"Dlg_FortValiant_1001\",\n\t\t    \"Dlg_FortValiant_1002\",\n\t\t    \"Dlg_FortValiant_1003\",\n\t\t    \"Dlg_FortValiant_1004\",\n\t\t    \"Dlg_FortValiant_1005\",\n\t\t    \"Dlg_FortValiant_1006\",\n\t\t    \"Dlg_FortValiant_1007\",\n\t\t    \"Dlg_FortValiant_1008\",\n\t\t    \"Dlg_FortValiant_1009\",\n\t\t    \"Dlg_FortValiant_1010\",\n\t\t    \"Dlg_FortValiant_1011\",\n\t\t    \"Dlg_FortValiant_1012\",\n\t\t    \"Dlg_FortValiant_1013\",\n\t\t    \"Dlg_FortValiant_1014\",\n\t\t    \"Dlg_FortValiant_1015\",\n\t\t    \"Dlg_FortValiant_1016\",\n\t\t    \"Dlg_FortValiant_1017\",\n\t\t    \"Dlg_FortValiant_1018\",\n\t\t    \"Dlg_FortValiant_1019\",\n\t\t    \"Dlg_FortValiant_1020\",\n\t\t    \"Dlg_FortValiant_1021\",\n\t\t    \"Dlg_FortValiant_1022\",\n\t\t    \"Dlg_FortValiant_1023\",\n\t\t    \"Dlg_FortValiant_1024\",\n\t\t    \"Dlg_FortValiant_1025\",\n\t\t    \"Dlg_FortValiant_1026\",\n\t\t    \"Dlg_FortValiant_1027\",\n\t\t    \"Dlg_FortValiant_1028\",\n\t\t    \"Dlg_FortValiant_1029\",\n\t\t    \"Dlg_FortValiant_1030\",\n\t\t    \"Dlg_FortValiant_1031\",\n\t\t    \"Dlg_FortValiant_1032\",\n\t\t    \"Dlg_FortValiant_1033\",\n\t\t    \"Dlg_FortValiant_1034\",\n\t\t    \"Dlg_FortValiant_1035\",\n\t\t    \"Dlg_FortValiant_1036\",\n\t\t    \"Dlg_FortValiant_1037\",\n\t\t    \"Dlg_FortValiant_1038\",\n\t\t    \"Dlg_FortValiant_1039\",\n\t\t    \"Dlg_FortValiant_1040\",\n\t\t    \"Dlg_FortValiant_1041\",\n\t\t    \"Dlg_FortValiant_1042\",\n\t\t    \"Dlg_FortValiant_1043\",\n\t\t    \"Dlg_FortValiant_1044\",\n\t\t    \"Dlg_FortValiant_1045\",\n\t\t    \"Dlg_FortValiant_1046\",\n\t\t    \"Dlg_FortValiantB_1000\",\n\t\t    \"Dlg_FortValiantB_1001\",\n\t\t    \"Dlg_FortValiantB_1002\",\n\t\t    \"Dlg_FortValiantB_1003\",\n\t\t    \"Dlg_FortValiantB_1004\",\n\t\t    \"Dlg_FortValiantB_1005\",\n\t\t    \"Dlg_FortValiantB_1006\",\n\t\t    \"Dlg_FortValiantB_1007\",\n\t\t    \"Dlg_FortValiantB_1008\",\n\t\t    \"Dlg_FortValiantB_1009\",\n\t\t    \"Dlg_FortValiantB_1010\",\n\t\t    \"Dlg_FortValiantB_1011\",\n\t\t    \"Dlg_FortValiantB_1012\",\n\t\t    \"Dlg_FortValiantB_1013\",\n\t\t    \"Dlg_FortValiantB_1014\",\n\t\t    \"Dlg_FortValiantB_1015\",\n\t\t    \"Dlg_FortValiantB_1016\",\n\t\t    \"Dlg_FortValiantB_1017\",\n\t\t    \"Dlg_FortValiantB_1018\",\n\t\t    \"Dlg_FortValiantB_1019\",\n\t\t    \"Dlg_FortValiantB_1020\",\n\t\t    \"Dlg_FortValiantB_1021\",\n\t\t    \"Dlg_FortValiantB_1022\",\n\t\t    \"Dlg_FortValiantB_1023\",\n\t\t    \"Dlg_FortValiantB_1024\",\n\t\t    \"Dlg_FortValiantB_1025\",\n\t\t    \"Dlg_FortValiantB_1026\",\n\t\t    \"Dlg_FortValiantB_1027\",\n\t\t    \"Dlg_FortValiantB_1028\",\n\t\t    \"Dlg_FortValiantB_1029\",\n\t\t    \"Dlg_FortValiantB_1030\",\n\t\t    \"Dlg_FortValiantB_1031\",\n\t\t    \"Dlg_FortValiantB_1032\",\n\t\t    \"Dlg_ReichstagA_1000\",\n\t\t    \"Dlg_ReichstagA_1001\",\n\t\t    \"Dlg_ReichstagA_1002\",\n\t\t    \"Dlg_ReichstagA_1003\",\n\t\t    \"Dlg_ReichstagA_1004\",\n\t\t    \"Dlg_ReichstagA_1005\",\n\t\t    \"Dlg_ReichstagA_1006\",\n\t\t    \"Dlg_ReichstagA_1007\",\n\t\t    \"Dlg_ReichstagA_1008\",\n\t\t    \"Dlg_ReichstagA_1009\",\n\t\t    \"Dlg_ReichstagA_1010\",\n\t\t    \"Dlg_ReichstagA_1011\",\n\t\t    \"Dlg_ReichstagA_1012\",\n\t\t    \"Dlg_ReichstagA_1013\",\n\t\t    \"Dlg_ReichstagA_1014\",\n\t\t    \"Dlg_ReichstagA_1015\",\n\t\t    \"Dlg_ReichstagA_1016\",\n\t\t    \"Dlg_ReichstagA_1017\",\n\t\t    \"Dlg_ReichstagA_1018\",\n\t\t    \"Dlg_ReichstagA_1019\",\n\t\t    \"Dlg_ReichstagA_1020\",\n\t\t    \"Dlg_ReichstagA_1021\",\n\t\t    \"Dlg_ReichstagA_1022\",\n\t\t    \"Dlg_ReichstagA_1023\",\n\t\t    \"Dlg_ReichstagA_1024\",\n\t\t    \"Dlg_ReichstagA_1025\",\n\t\t    \"Dlg_ReichstagA_1026\",\n\t\t    \"Dlg_ReichstagA_1027\",\n\t\t    \"Dlg_ReichstagA_1028\",\n\t\t    \"Dlg_ReichstagA_1029\",\n\t\t    \"Dlg_ReichstagA_1030\",\n\t\t    \"Dlg_ReichstagA_1031\",\n\t\t    \"Dlg_ReichstagA_1032\",\n\t\t    \"Dlg_ReichstagA_1033\",\n\t\t    \"Dlg_ReichstagA_1034\",\n\t\t    \"Dlg_ReichstagA_1035\",\n\t\t    \"Dlg_ReichstagA_1036\",\n\t\t    \"Dlg_ReichstagA_1037\",\n\t\t    \"Dlg_ReichstagA_1038\",\n\t\t    \"Dlg_ReichstagC_1000\",\n\t\t    \"Dlg_ReichstagC_1001\",\n\t\t    \"Dlg_ReichstagC_1002\",\n\t\t    \"Dlg_ReichstagC_1003\",\n\t\t    \"Dlg_ReichstagC_1004\",\n\t\t    \"Dlg_ReichstagC_1005\",\n\t\t    \"Dlg_ReichstagC_1006\",\n\t\t    \"Dlg_ReichstagC_1007\",\n\t\t    \"Dlg_ReichstagC_1008\",\n\t\t    \"Dlg_ReichstagC_1009\",\n\t\t    \"Dlg_ReichstagC_1010\",\n\t\t    \"Dlg_ReichstagC_1011\",\n\t\t    \"Dlg_ReichstagC_1012\",\n\t\t    \"Dlg_ReichstagC_1013\",\n\t\t    \"Dlg_ReichstagC_1014\",\n\t\t    \"Dlg_ReichstagC_1015\",\n\t\t    \"Dlg_ReichstagC_1016\",\n\t\t    \"Dlg_ReichstagC_1017\",\n\t\t    \"Dlg_ReichstagC_1018\",\n\t\t    \"Dlg_ReichstagC_1019\",\n\t\t    \"Dlg_ReichstagC_1020\",\n\t\t    \"Dlg_ReichstagC_1021\",\n\t\t    \"Dlg_ReichstagC_1022\",\n\t\t    \"Dlg_ReichstagC_1023\",\n\t\t    \"Dlg_ReichstagC_1024\",\n\t\t    \"Dlg_ReichstagC_1025\",\n\t\t    \"Dlg_ReichstagC_1026\",\n\t\t    \"Dlg_ReichstagC_1027\",\n\t\t    \"Dlg_ReichstagC_1028\",\n\t\t    \"Dlg_ReichstagC_1029\",\n\t\t    \"Dlg_ReichstagC_1030\",\n\t\t    \"Dlg_ReichstagC_1031\",\n\t\t    \"Dlg_ReichstagC_1032\",\n\t\t    \"Dlg_ReichstagC_1033\",\n\t\t    \"Dlg_ReichstagC_1034\",\n\t\t    \"Dlg_ReichstagC_1035\",\n\t\t    \"Dlg_ReichstagC_1036\",\n\t\t    \"Dlg_ReichstagC_1037\",\n\t\t    \"Dlg_ReichstagC_1038\",\n\t\t    \"Dlg_ReichstagC_1039\",\n\t\t    \"Dlg_ReichstagC_1040\",\n\t\t    \"Dlg_ReichstagC_1041\",\n\t\t    \"Dlg_ReichstagC_1042\",\n\t\t    \"Dlg_ReichstagC_1043\",\n\t\t    \"Dlg_ReichstagC_1044\",\n\t\t    \"Dlg_ReichstagC_1045\",\n\t\t    \"Dlg_ReichstagC_1046\",\n\t\t    \"Dlg_ReichstagC_1047\",\n\t\t    \"Dlg_ReichstagC_1048\",\n\t\t    \"Dlg_ReichstagC_1049\",\n\t\t    \"Dlg_ReichstagC_1050\",\n\t\t    \"Dlg_ReichstagC_1051\",\n\t\t    \"Dlg_ReichstagC_1052\",\n\t\t    \"Dlg_ReichstagC_1053\",\n\t\t    \"Dlg_ReichstagC_1054\",\n\t\t    \"Dlg_ReichstagC_1055\",\n\t\t    \"Dlg_ReichstagC_1056\",\n\t\t    \"Dlg_ReichstagC_1057\",\n\t\t    \"Dlg_ReichstagC_1058\",\n\t\t    \"Dlg_ReichstagC_1059\",\n\t\t    \"Dlg_ReichstagC_1060\",\n\t\t    \"Dlg_ReichstagC_1061\",\n\t\t    \"Dlg_ReichstagC_1062\",\n\t\t    \"Dlg_ReichstagC_1063\",\n\t\t    \"Dlg_ReichstagC_1064\",\n\t\t    \"Dlg_ReichstagC_1065\",\n\t\t    \"Dlg_EacPrison_1000\",\n\t\t    \"Dlg_EacPrison_1001\",\n\t\t    \"Dlg_EacPrison_1002\",\n\t\t    \"Dlg_EacPrison_1003\",\n\t\t    \"Dlg_EacPrison_1004\",\n\t\t    \"Dlg_EacPrison_1005\",\n\t\t    \"Dlg_EacPrison_1006\",\n\t\t    \"Dlg_EacPrison_1007\",\n\t\t    \"Dlg_EacPrison_1008\",\n\t\t    \"Dlg_EacPrison_1009\",\n\t\t    \"Dlg_EacPrison_1010\",\n\t\t    \"Dlg_EacPrison_1011\",\n\t\t    \"Dlg_EacPrison_1012\",\n\t\t    \"Dlg_EacPrison_1013\",\n\t\t    \"Dlg_EacPrison_1014\",\n\t\t    \"Dlg_EacPrison_1015\",\n\t\t    \"Dlg_EacPrison_1016\",\n\t\t    \"Dlg_EacPrison_1017\",\n\t\t    \"Dlg_EacPrison_1018\",\n\t\t    \"Dlg_EacPrison_1019\",\n\t\t    \"Dlg_EacPrison_1020\",\n\t\t    \"Dlg_EacPrison_1021\",\n\t\t    \"Dlg_EacPrison_1022\",\n\t\t    \"Dlg_EacPrison_1023\",\n\t\t    \"Dlg_EacPrison_1024\",\n\t\t    \"Dlg_EacPrison_1025\",\n\t\t    \"Dlg_EacPrison_1026\",\n\t\t    \"Dlg_EacPrison_1027\",\n\t\t    \"Dlg_EacPrison_1028\",\n\t\t    \"Dlg_EacPrison_1029\",\n\t\t    \"Dlg_EacPrison_1030\",\n\t\t    \"Dlg_EacPrison_1031\",\n\t\t    \"Dlg_EacPrison_1032\",\n\t\t    \"Dlg_EacPrison_1033\",\n\t\t    \"Dlg_EacPrison_1034\",\n\t\t    \"Dlg_EacPrison_1035\",\n\t\t    \"Dlg_EacPrison_1036\",\n\t\t    \"Dlg_EacPrison_1037\",\n\t\t    \"Dlg_EacPrison_1038\",\n\t\t    \"Dlg_EacPrison_1039\",\n\t\t    \"Dlg_EacPrison_1040\",\n\t\t    \"Dlg_EacPrison_1041\",\n\t\t    \"Dlg_EacPrison_1042\",\n\t\t    \"Dlg_EacPrison_1043\",\n\t\t    \"Dlg_EacPrison_1044\",\n\t\t    \"Dlg_EacPrison_1045\",\n\t\t    \"Dlg_EacPrison_1046\",\n\t\t    \"Dlg_EacPrison_1047\",\n\t\t    \"Dlg_EacPrison_1048\",\n\t\t    \"Dlg_EacPrison_1049\",\n\t\t    \"Dlg_EacPrison_1050\",\n\t\t    \"Dlg_EacPrison_1051\",\n\t\t    \"Dlg_EacPrison_1052\",\n\t\t    \"Dlg_EacPrison_1053\",\n\t\t    \"Dlg_EacPrison_1054\",\n\t\t    \"Dlg_EacPrison_1055\",\n\t\t    \"Dlg_EacPrison_1056\",\n\t\t    \"Dlg_EacPrison_1057\",\n\t\t    \"Dlg_EacPrison_1058\",\n\t\t    \"Dlg_EacPrison_1059\",\n\t\t    \"Dlg_EacPrison_1060\",\n\t\t    \"Dlg_EacPrison_1061\",\n\t\t    \"Dlg_EacPrison_1062\",\n\t\t    \"Dlg_EacPrison_1063\",\n\t\t    \"Dlg_EacPrison_1064\",\n\t\t    \"Dlg_EacPrison_1065\",\n\t\t    \"Dlg_EacPrison_1066\",\n\t\t    \"Dlg_EacPrison_1067\",\n\t\t    \"Dlg_EacPrison_1068\",\n\t\t    \"Dlg_EacPrison_1069\",\n\t\t    \"Dlg_EacPrison_1070\",\n\t\t    \"Dlg_EacPrison_1071\",\n\t\t    \"Dlg_EacPrison_1072\",\n\t\t    \"Dlg_EacPrison_1073\",\n\t\t    \"Dlg_EacPrison_1074\",\n\t\t    \"Dlg_EacPrison_1075\",\n\t\t    \"Dlg_EacPrison_1076\",\n\t\t    \"Dlg_EacPrison_1077\",\n\t\t    \"Dlg_EacPrison_1078\",\n\t\t    \"Dlg_EacPrison_1079\",\n\t\t    \"Dlg_EacPrison_1080\",\n\t\t    \"Dlg_EacPrison_1081\",\n\t\t    \"Dlg_EacPrison_1082\",\n\t\t    \"Dlg_EacPrison_1083\",\n\t\t    \"Dlg_EacPrison_1084\",\n\t\t    \"Dlg_EacPrison_1085\",\n\t\t    \"Dlg_EacPrison_1086\",\n\t\t    \"Dlg_EacPrison_1087\",\n\t\t    \"Dlg_EacPrison_1088\",\n\t\t    \"Dlg_ChineseEscape_1000\",\n\t\t    \"Dlg_ChineseEscape_1001\",\n\t\t    \"Dlg_ChineseEscape_1002\",\n\t\t    \"Dlg_ChineseEscape_1003\",\n\t\t    \"Dlg_ChineseEscape_1004\",\n\t\t    \"Dlg_ChineseEscape_1005\",\n\t\t    \"Dlg_ChineseEscape_1006\",\n\t\t    \"Dlg_ChineseEscape_1007\",\n\t\t    \"Dlg_ChineseEscape_1008\",\n\t\t    \"Dlg_ChineseEscape_1009\",\n\t\t    \"Dlg_ChineseEscape_1010\",\n\t\t    \"Dlg_ChineseEscape_1011\",\n\t\t    \"Dlg_ChineseEscape_1012\",\n\t\t    \"Dlg_ChineseEscape_1013\",\n\t\t    \"Dlg_ChineseEscape_1014\",\n\t\t    \"Dlg_ChineseEscape_1015\",\n\t\t    \"Dlg_ChineseEscape_1016\",\n\t\t    \"Dlg_ChineseEscape_1017\",\n\t\t    \"Dlg_ChineseEscape_1018\",\n\t\t    \"Dlg_ChineseEscape_1019\",\n\t\t    \"Dlg_ChineseEscape_1020\",\n\t\t    \"Dlg_ChineseEscape_1021\",\n\t\t    \"Dlg_ChineseEscape_1022\",\n\t\t    \"Dlg_ChineseEscape_1023\",\n\t\t    \"Dlg_ChineseEscape_1024\",\n\t\t    \"Dlg_ChineseEscape_1025\",\n\t\t    \"Dlg_ChineseEscape_1026\",\n\t\t    \"Dlg_ChineseEscape_1027\",\n\t\t    \"Dlg_ResearchVessel_1000\",\n\t\t    \"Dlg_ResearchVessel_1001\",\n\t\t    \"Dlg_ResearchVessel_1002\",\n\t\t    \"Dlg_ResearchVessel_1003\",\n\t\t    \"Dlg_ResearchVessel_1004\",\n\t\t    \"Dlg_ResearchVessel_1005\",\n\t\t    \"Dlg_ResearchVessel_1006\",\n\t\t    \"Dlg_ResearchVessel_1007\",\n\t\t    \"Dlg_ResearchVessel_1008\",\n\t\t    \"Dlg_ResearchVessel_1009\",\n\t\t    \"Dlg_ResearchVessel_1010\",\n\t\t    \"Dlg_ResearchVessel_1011\",\n\t\t    \"Dlg_ResearchVessel_1012\",\n\t\t    \"Dlg_ResearchVessel_1013\",\n\t\t    \"Dlg_ResearchVessel_1014\",\n\t\t    \"Dlg_ResearchVessel_1015\",\n\t\t    \"Dlg_ResearchVessel_1016\",\n\t\t    \"Dlg_ResearchVessel_1017\",\n\t\t    \"Dlg_ResearchVessel_1018\",\n\t\t    \"Dlg_ResearchVessel_1019\",\n\t\t    \"Dlg_ResearchVessel_1020\",\n\t\t    \"Dlg_ResearchVessel_1021\",\n\t\t    \"Dlg_ResearchVessel_1022\",\n\t\t    \"Dlg_ResearchVessel_1023\",\n\t\t    \"Dlg_ResearchVessel_1024\",\n\t\t    \"Dlg_ResearchVessel_1025\",\n\t\t    \"Dlg_ResearchVessel_1026\",\n\t\t    \"Dlg_ResearchVessel_1027\",\n\t\t    \"Dlg_ResearchVessel_1028\",\n\t\t    \"Dlg_ResearchVessel_1029\",\n\t\t    \"Dlg_ResearchVessel_1030\",\n\t\t    \"Dlg_ResearchVessel_1031\",\n\t\t    \"Dlg_ResearchVessel_1032\",\n\t\t    \"Dlg_ResearchVessel_1033\",\n\t\t    \"Dlg_ResearchVessel_1034\",\n\t\t    \"Dlg_ResearchVessel_1035\",\n\t\t    \"Dlg_ResearchVessel_1036\",\n\t\t    \"Dlg_ResearchVessel_1037\",\n\t\t    \"Dlg_ResearchVessel_1038\",\n\t\t    \"Dlg_ResearchVessel_1039\",\n\t\t    \"Dlg_ResearchVessel_1040\",\n\t\t    \"Dlg_ResearchVessel_1041\",\n\t\t    \"Dlg_ResearchVessel_1042\",\n\t\t    \"Dlg_ResearchVessel_1043\",\n\t\t    \"Dlg_ResearchVessel_1044\",\n\t\t    \"Dlg_ResearchVessel_1045\",\n\t\t    \"Dlg_ResearchVessel_1046\",\n\t\t    \"Dlg_ResearchVessel_1047\",\n\t\t    \"Dlg_ResearchVessel_1048\",\n\t\t    \"Dlg_ResearchVessel_1049\",\n\t\t    \"Dlg_ResearchVessel_1050\",\n\t\t    \"Dlg_ResearchVessel_1051\",\n\t\t    \"Dlg_ResearchVessel_1052\",\n\t\t    \"Dlg_ResearchVessel_1053\",\n\t\t    \"Dlg_ResearchVessel_1054\",\n\t\t    \"Dlg_ResearchVessel_1055\",\n\t\t    \"Dlg_ResearchVessel_1056\",\n\t\t    \"Dlg_Laika_1000\",\n\t\t    \"Dlg_Laika_1001\",\n\t\t    \"Dlg_Laika_1002\",\n\t\t    \"Dlg_Laika_1003\",\n\t\t    \"Dlg_Laika_1004\",\n\t\t    \"Dlg_Laika_1005\",\n\t\t    \"Dlg_Laika_1006\",\n\t\t    \"Dlg_Laika_1007\",\n\t\t    \"Dlg_Laika_1008\",\n\t\t    \"Dlg_Laika_1009\",\n\t\t    \"Dlg_Laika_1010\",\n\t\t    \"Dlg_Laika_1011\",\n\t\t    \"Dlg_Laika_1012\",\n\t\t    \"Dlg_Laika_1013\",\n\t\t    \"Dlg_Laika_1014\",\n\t\t    \"Dlg_Laika_1015\",\n\t\t    \"Dlg_Laika_1016\",\n\t\t    \"Dlg_Laika_1017\",\n\t\t    \"Dlg_Laika_1018\",\n\t\t    \"Dlg_Laika_1019\",\n\t\t    \"Dlg_Laika_1020\",\n\t\t    \"Dlg_Laika_1021\",\n\t\t    \"Dlg_Laika_1022\",\n\t\t    \"Dlg_Laika_1023\",\n\t\t    \"Dlg_Laika_1024\",\n\t\t    \"Dlg_Laika_1025\",\n\t\t    \"Dlg_Laika_1026\",\n\t\t    \"Dlg_Laika_1027\",\n\t\t    \"Dlg_Laika_1028\",\n\t\t    \"Dlg_Laika_1029\",\n\t\t    \"Dlg_Laika_1030\",\n\t\t    \"Dlg_Laika_1031\",\n\t\t    \"Dlg_Laika_1032\",\n\t\t    \"Dlg_Laika_1033\",\n\t\t    \"Dlg_Laika_1035\",\n\t\t    \"Dlg_Laika_1036\",\n\t\t    \"Dlg_Laika_1037\",\n\t\t    \"Dlg_Laika_1038\",\n\t\t    \"Dlg_Laika_1039\",\n\t\t    \"Dlg_Laika_1040\",\n\t\t    \"Dlg_Laika_1041\",\n\t\t    \"Dlg_Laika_1042\",\n\t\t    \"Dlg_Laika_1043\",\n\t\t    \"Dlg_Laika_1044\",\n\t\t    \"Dlg_Laika_1045\",\n\t\t    \"Dlg_Laika_1046\",\n\t\t    \"Dlg_Laika_1047\",\n\t\t    \"Dlg_Laika_1048\",\n\t\t    \"Dlg_Laika_1049\",\n\t\t    \"Dlg_Laika_1050\",\n\t\t    \"Dlg_Laika_1051\",\n\t\t    \"Dlg_Laika_1052\",\n\t\t    \"Dlg_Laika_1053\",\n\t\t    \"Dlg_Laika_1054\",\n\t\t    \"Dlg_Laika_1055\",\n\t\t    \"Dlg_Laika_1056\",\n\t\t    \"Dlg_Laika_1057\",\n\t\t    \"Dlg_Laika_1058\",\n\t\t    \"Dlg_Laika_1059\",\n\t\t    \"Dlg_Laika_1060\",\n\t\t    \"Dlg_Laika_1061\",\n\t\t    \"Dlg_Laika_1062\",\n\t\t    \"Dlg_Laika_1063\",\n\t\t    \"Dlg_Laika_1064\",\n\t\t    \"Dlg_Laika_1065\",\n\t\t    \"Dlg_Laika_1066\",\n\t\t    \"Dlg_Laika_1067\",\n\t\t    \"Dlg_Laika_1068\",\n\t\t    \"Dlg_Laika_1069\",\n\t\t    \"Dlg_Laika_1070\",\n\t\t    \"Dlg_Laika_1071\",\n\t\t    \"Dlg_Laika_1072\",\n\t\t    \"Dlg_Laika_1073\",\n\t\t    \"Dlg_Laika_1074\",\n\t\t    \"Dlg_Laika_1075\",\n\t\t    \"Dlg_Laika_1076\",\n\t\t    \"Dlg_Laika_1077\",\n\t\t    \"Dlg_Laika_1078\",\n\t\t    \"Dlg_Laika_1079\",\n\t\t    \"Dlg_Laika_1080\",\n\t\t    \"Dlg_Laika_1081\",\n\t\t    \"Dlg_Laika_1082\",\n\t\t    \"Dlg_Laika_1084\",\n\t\t    \"Dlg_Laika_1085\",\n\t\t    \"Dlg_Laika_1086\",\n\t\t    \"Dlg_Laika_1087\",\n\t\t    \"Dlg_Laika_1088\",\n\t\t    \"Dlg_Laika_1089\",\n\t\t    \"Dlg_Laika_1090\",\n\t\t    \"Dlg_Laika_1091\",\n\t\t    \"Dlg_Laika_1092\",\n\t\t    \"Dlg_Laika_1093\",\n\t\t    \"Dlg_Laika_1094\",\n\t\t    \"Dlg_Laika_1095\",\n\t\t    \"Dlg_Laika_1096\",\n\t\t    \"Dlg_Laika_1097\",\n\t\t    \"Dlg_Laika_1098\",\n\t\t    \"Dlg_Laika_1099\",\n\t\t    \"Dlg_Laika_1100\",\n\t\t    \"Dlg_Laika_1101\",\n\t\t    \"Dlg_Laika_1102\",\n\t\t    \"Dlg_Laika_1103\",\n\t\t    \"Dlg_Laika_1104\",\n\t\t    \"Dlg_Laika_1105\",\n\t\t    \"Dlg_Laika_1106\",\n\t\t    \"Dlg_Laika_1107\",\n\t\t    \"Dlg_Laika_1108\",\n\t\t    \"Dlg_Laika_1109\",\n\t\t    \"Dlg_Laika_1110\",\n\t\t    \"Dlg_Laika_1111\",\n\t\t    \"Dlg_Laika_1112\",\n\t\t    \"Dlg_Laika_1113\",\n\t\t    \"Dlg_Laika_1114\",\n\t\t    \"Dlg_Laika_1115\",\n\t\t    \"Dlg_Laika_1116\",\n\t\t    \"Dlg_Laika_1117\",\n\t\t    \"Dlg_Laika_1118\",\n\t\t    \"Dlg_Laika_1119\",\n\t\t    \"Dlg_Laika_1120\",\n\t\t    \"Dlg_Laika_1121\",\n\t\t    \"Dlg_Laika_1122\",\n\t\t    \"Dlg_Laika_1123\",\n\t\t    \"Dlg_Laika_1124\",\n\t\t    \"Dlg_Laika_1125\",\n\t\t    \"Dlg_BarthsMoonPlant_1000\",\n\t\t    \"Dlg_BarthsMoonPlant_1001\",\n\t\t    \"Dlg_BarthsMoonPlant_1002\",\n\t\t    \"Dlg_BarthsMoonPlant_1003\",\n\t\t    \"Dlg_BarthsMoonPlant_1004\",\n\t\t    \"Dlg_BarthsMoonPlant_1005\",\n\t\t    \"Dlg_BarthsMoonPlant_1006\",\n\t\t    \"Dlg_BarthsMoonPlant_1007\",\n\t\t    \"Dlg_BarthsMoonPlant_1008\",\n\t\t    \"Dlg_BarthsMoonPlant_1009\",\n\t\t    \"Dlg_BarthsMoonPlant_1010\",\n\t\t    \"Dlg_BarthsMoonPlant_1011\",\n\t\t    \"Dlg_BarthsMoonPlant_1012\",\n\t\t    \"Dlg_BarthsMoonPlant_1013\",\n\t\t    \"Dlg_BarthsMoonPlant_1014\",\n\t\t    \"Dlg_BarthsMoonPlant_1015\",\n\t\t    \"Dlg_BarthsMoonPlant_1016\",\n\t\t    \"Dlg_BarthsMoonPlant_1017\",\n\t\t    \"Dlg_BarthsMoonPlant_1018\",\n\t\t    \"Dlg_BarthsMoonPlant_1019\",\n\t\t    \"Dlg_BarthsMoonPlant_1020\",\n\t\t    \"Dlg_BarthsMoonPlant_1021\",\n\t\t    \"Dlg_BarthsMoonPlant_1022\",\n\t\t    \"Dlg_BarthsMoonPlant_1023\",\n\t\t    \"Dlg_BarthsMoonPlant_1024\",\n\t\t    \"Dlg_BarthsMoonPlant_1025\",\n\t\t    \"Dlg_BarthsMoonPlant_1026\",\n\t\t    \"Dlg_BarthsMoonPlant_1027\",\n\t\t    \"Dlg_BarthsMoonPlant_1028\",\n\t\t    \"Dlg_BarthsMoonPlant_1029\",\n\t\t    \"Dlg_BarthsMoonPlant_1030\",\n\t\t    \"Dlg_BarthsMoonPlant_1031\",\n\t\t    \"Dlg_BarthsMoonPlant_1032\",\n\t\t    \"Dlg_BarthsMoonPlant_1033\",\n\t\t    \"Dlg_BarthsMoonPlant_1034\",\n\t\t    \"Dlg_BarthsMoonPlant_1035\",\n\t\t    \"Dlg_BarthsMoonPlant_1036\",\n\t\t    \"Dlg_BarthsMoonPlant_1037\",\n\t\t    \"Dlg_BarthsMoonPlant_1038\",\n\t\t    \"Dlg_BarthsMoonPlant_1039\",\n\t\t    \"Dlg_BarthsMoonPlant_1040\",\n\t\t    \"Dlg_BarthsMoonPlant_1041\",\n\t\t    \"Dlg_BarthsMoonPlant_1042\",\n\t\t    \"Dlg_BarthsMoonPlant_1043\",\n\t\t    \"Dlg_BarthsMoonPlant_1044\",\n\t\t    \"Dlg_BarthsMoonPlant_1045\",\n\t\t    \"Dlg_BarthsMoonPlant_1046\",\n\t\t    \"Dlg_BarthsMoonPlant_1047\",\n\t\t    \"Dlg_BarthsMoonPlant_1048\",\n\t\t    \"Dlg_BarthsMoonPlant_1049\",\n\t\t    \"Dlg_BarthsMoonPlant_1050\",\n\t\t    \"Dlg_BarthsMoonPlant_1051\",\n\t\t    \"Dlg_BarthsMoonPlant_1052\",\n\t\t    \"Dlg_BarthsMoonPlant_1053\",\n\t\t    \"Dlg_BarthsMoonPlant_1054\",\n\t\t    \"Dlg_BarthsMoonPlant_1055\",\n\t\t    \"Dlg_BarthsMoonPlant_1056\",\n\t\t    \"Dlg_BarthsMoonPlant_1057\",\n\t\t    \"Dlg_BarthsMoonPlant_1058\",\n\t\t    \"Dlg_BarthsMoonPlant_1059\",\n\t\t    \"Dlg_BarthsMoonPlant_1060\",\n\t\t    \"Dlg_BarthsMoonPlant_1061\",\n\t\t    \"Dlg_BarthsMoonPlant_1062\",\n\t\t    \"Dlg_BarthsMoonPlant_1063\",\n\t\t    \"Dlg_BarthsMoonPlant_1064\",\n\t\t    \"Dlg_BarthsMoonPlant_1065\",\n\t\t    \"Dlg_BarthsMoonPlant_1066\",\n\t\t    \"Dlg_BarthsMoonPlant_1067\",\n\t\t    \"Dlg_BarthsMoonPlant_1068\",\n\t\t    \"Dlg_BarthsMoonPlant_1069\",\n\t\t    \"Dlg_BarthsMoonPlant_1070\",\n\t\t    \"Dlg_BarthsMoonPlant_1071\",\n\t\t    \"Dlg_BarthsMoonPlant_1072\",\n\t\t    \"Dlg_BarthsMoonPlant_1073\",\n\t\t    \"Dlg_BarthsMoonPlant_1074\",\n\t\t    \"Dlg_BarthsMoonPlant_1075\",\n\t\t    \"Dlg_BarthsMoonPlant_1076\",\n\t\t    \"Dlg_BarthsMoonPlant_1077\",\n\t\t    \"Dlg_BarthsMoonPlant_1078\",\n\t\t    \"Dlg_BarthsMoonPlant_1079\",\n\t\t    \"Dlg_BarthsMoonPlant_1080\",\n\t\t    \"Dlg_BarthsMoonPlant_1081\",\n\t\t    \"Dlg_BarthsMoonPlant_1082\",\n\t\t    \"Dlg_BarthsMoonPlant_1083\",\n\t\t    \"Dlg_BarthsMoonPlant_1084\",\n\t\t    \"Dlg_BarthsMoonPlant_1085\",\n\t\t    \"Dlg_BarthsMoonPlant_1086\",\n\t\t    \"Dlg_BarthsMoonPlant_1087\",\n\t\t    \"Dlg_BarthsMoonPlant_1088\",\n\t\t    \"Dlg_BarthsMoonPlant_1089\",\n\t\t    \"Dlg_BarthsMoonPlant_1090\",\n\t\t    \"Dlg_BarthsMoonPlant_1091\",\n\t\t    \"Dlg_BarthsMoonPlant_1092\",\n\t\t    \"Dlg_BarthsMoonPlant_1093\",\n\t\t    \"Dlg_BarthsMoonPlant_1094\",\n\t\t    \"Dlg_BarthsMoonPlant_1095\",\n\t\t    \"Dlg_BarthsMoonPlant_1096\",\n\t\t    \"Dlg_BarthsMoonPlant_1097\",\n\t\t    \"Dlg_BarthsMoonPlant_1098\",\n\t\t    \"Dlg_BarthsMoonPlant_1099\",\n\t\t    \"Dlg_BarthsMoonPlant_1100\",\n\t\t    \"Dlg_BarthsMoonPlant_1101\",\n\t\t    \"Dlg_BarthsMoonPlant_1102\",\n\t\t    \"Dlg_BarthsMoonPlant_1103\",\n\t\t    \"Dlg_BarthsMoonPlant_1104\",\n\t\t    \"Dlg_BarthsMoonPlant_1105\",\n\t\t    \"Dlg_BarthsMoonPlant_1106\",\n\t\t    \"Dlg_BarthsMoonPlant_1107\",\n\t\t    \"Dlg_BarthsMoonPlant_1108\",\n\t\t    \"Dlg_BarthsMoonPlant_1109\",\n\t\t    \"Dlg_BarthsMoonPlant_1110\",\n\t\t    \"Dlg_BarthsMoonPlant_1111\",\n\t\t    \"Dlg_BarthsMoonPlant_1112\",\n\t\t    \"Dlg_BarthsMoonPlant_1113\",\n\t\t    \"Dlg_BarthsMoonPlant_1114\",\n\t\t    \"Dlg_BarthsMoonPlant_1115\",\n\t\t    \"Dlg_BarthsMoonPlant_1116\",\n\t\t    \"Dlg_BarthsMoonPlant_1117\",\n\t\t    \"Dlg_BarthsMoonPlant_1118\",\n\t\t    \"Dlg_BarthsMoonPlant_1119\",\n\t\t    \"Dlg_BarthsMoonPlant_1120\",\n\t\t    \"Dlg_BarthsMoonPlant_1121\",\n\t\t    \"Dlg_BarthsMoonPlant_1122\",\n\t\t    \"Dlg_BarthsMoonPlant_1123\",\n\t\t    \"Dlg_BarthsMoonPlant_1124\",\n\t\t    \"Dlg_BarthsMoonPlant_1125\",\n\t\t    \"Dlg_BarthsMoonPlant_1126\",\n\t\t    \"Dlg_FortValiantC_1000\",\n\t\t    \"Dlg_FortValiantC_1001\",\n\t\t    \"Dlg_FortValiantC_1002\",\n\t\t    \"Dlg_FortValiantC_1003\",\n\t\t    \"Dlg_FortValiantC_1004\",\n\t\t    \"Dlg_FortValiantC_1005\",\n\t\t    \"Dlg_FortValiantC_1006\",\n\t\t    \"Dlg_FortValiantC_1007\",\n\t\t    \"Dlg_FortValiantC_1008\",\n\t\t    \"Dlg_FortValiantC_1009\",\n\t\t    \"Dlg_FortValiantC_1010\",\n\t\t    \"Dlg_FortValiantC_1011\",\n\t\t    \"Dlg_FortValiantC_1012\",\n\t\t    \"Dlg_FortValiantC_1013\",\n\t\t    \"Dlg_FortValiantC_1014\",\n\t\t    \"Dlg_FortValiantC_1015\",\n\t\t    \"Dlg_FortValiantC_1016\",\n\t\t    \"Dlg_FortValiantC_1017\",\n\t\t    \"Dlg_FortValiantC_1018\",\n\t\t    \"Dlg_FortValiantC_1019\",\n\t\t    \"Dlg_FortValiantC_1020\",\n\t\t    \"Dlg_FortValiantC_1021\",\n\t\t    \"Dlg_FortValiantC_1022\",\n\t\t    \"Dlg_FortValiantC_1023\",\n\t\t    \"Dlg_FortValiantC_1024\",\n\t\t    \"Dlg_FortValiantC_1025\",\n\t\t    \"Dlg_FortValiantC_1026\",\n\t\t    \"Dlg_FortValiantC_1027\",\n\t\t    \"Dlg_FortValiantC_1028\",\n\t\t    \"Dlg_FortValiantC_1029\",\n\t\t    \"Dlg_FortValiantC_1030\",\n\t\t    \"Dlg_FortValiantC_1031\",\n\t\t    \"Dlg_FortValiantC_1032\",\n\t\t    \"Dlg_FortValiantC_1033\",\n\t\t    \"Dlg_FortValiantC_1034\",\n\t\t    \"Dlg_FortValiantC_1035\",\n\t\t    \"Dlg_FortValiantC_1036\",\n\t\t    \"Dlg_FortValiantC_1037\",\n\t\t    \"Dlg_FortValiantC_1038\",\n\t\t    \"Dlg_FortValiantC_1039\",\n\t\t    \"Dlg_FortValiantC_1040\",\n\t\t    \"Dlg_FortValiantC_1041\",\n\t\t    \"Dlg_FortValiantC_1042\",\n\t\t    \"Dlg_FortValiantC_1043\",\n\t\t    \"Dlg_FortValiantC_1044\",\n\t\t    \"Dlg_FortValiantC_1045\",\n\t\t    \"Dlg_FortValiantC_1046\",\n\t\t    \"Dlg_FortValiantC_1047\",\n\t\t    \"Dlg_FortValiantC_1048\",\n\t\t    \"Dlg_FortValiantC_1049\",\n\t\t    \"Dlg_FortValiantC_1050\",\n\t\t    \"Dlg_FortValiantC_1051\",\n\t\t    \"Dlg_FortValiantC_1052\",\n\t\t    \"Dlg_FortValiantC_1053\",\n\t\t    \"Dlg_FortValiantC_1054\",\n\t\t    \"Dlg_FortValiantC_1055\",\n\t\t    \"Dlg_FortValiantC_1056\",\n\t\t    \"Dlg_FortValiantC_1057\",\n\t\t    \"Dlg_FortValiantC_1058\",\n\t\t    \"Dlg_FortValiantC_1059\",\n\t\t    \"Dlg_FortValiantC_1060\",\n\t\t    \"Dlg_FortValiantC_1061\",\n\t\t    \"Dlg_FortValiantC_1062\",\n\t\t    \"Dlg_FortValiantC_1063\",\n\t\t    \"Dlg_FortValiantC_1064\",\n\t\t    \"Dlg_FortValiantC_1065\",\n\t\t    \"Dlg_FortValiantC_1066\",\n\t\t    \"Dlg_FortValiantC_1067\",\n\t\t    \"Dlg_FortValiantC_1068\",\n\t\t    \"Dlg_FortValiantC_1069\",\n\t\t    \"Dlg_FortValiantC_1070\",\n\t\t    \"Dlg_FortValiantC_1071\",\n\t\t    \"Dlg_FortValiantC_1072\",\n\t\t    \"Dlg_FortValiantC_1073\",\n\t\t    \"Dlg_FortValiantC_1074\",\n\t\t    \"Dlg_FortValiantC_1075\",\n\t\t    \"Dlg_FortValiantC_1076\",\n\t\t    \"Dlg_FortValiantC_1077\",\n\t\t    \"Dlg_FortValiantC_1078\",\n\t\t    \"Dlg_FortValiantC_1079\",\n\t\t    \"Dlg_FortValiantC_1080\",\n\t\t    \"Dlg_FortValiantC_1081\",\n\t\t    \"Dlg_FortValiantC_1082\",\n\t\t    \"Dlg_FortValiantC_1083\",\n\t\t    \"Dlg_FortValiantC_1084\",\n\t\t    \"Dlg_FortValiantC_1085\",\n\t\t    \"Dlg_FortValiantC_1086\",\n\t\t    \"Dlg_FortValiantC_1087\",\n\t\t    \"Dlg_FortValiantC_1088\",\n\t\t    \"Dlg_FortValiantC_1089\",\n\t\t    \"Dlg_FortValiantC_1090\",\n\t\t    \"Dlg_FortValiantC_1091\",\n\t\t    \"Dlg_FortValiantC_1092\",\n\t\t    \"Dlg_FortValiantC_1093\",\n\t\t    \"Dlg_FortValiantC_1094\",\n\t\t    \"Dlg_FortValiantC_1095\",\n\t\t    \"Dlg_FortValiantC_1096\",\n\t\t    \"Dlg_FortValiantC_1097\",\n\t\t    \"Dlg_FortValiantC_1098\",\n\t\t    \"Dlg_FortValiantC_1099\",\n\t\t    \"Dlg_FortValiantC_1100\",\n\t\t    \"Dlg_FortValiantC_1101\",\n\t\t    \"Dlg_FortValiantC_1102\",\n\t\t    \"Dlg_FortValiantC_1103\",\n\t\t    \"Dlg_FortValiantC_1104\",\n\t\t    \"Dlg_FortValiantC_1105\",\n\t\t    \"Dlg_FortValiantC_1106\",\n\t\t    \"Dlg_FortValiantC_1107\",\n\t\t    \"Dlg_FortValiantC_1108\",\n\t\t    \"Dlg_FortValiantC_1109\",\n\t\t    \"Dlg_FortValiantC_1110\",\n\t\t    \"Dlg_FortValiantC_1111\",\n\t\t    \"Dlg_FortValiantC_1112\",\n\t\t    \"Dlg_FortValiantC_1113\",\n\t\t    \"Dlg_FortValiantC_1114\",\n\t\t    \"Dlg_FortValiantC_1115\",\n\t\t    \"Dlg_FortValiantC_1116\",\n\t\t    \"Dlg_FortValiantC_1117\",\n\t\t    \"Dlg_FortValiantC_1118\",\n\t\t    \"Dlg_FortValiantC_1119\",\n\t\t    \"Dlg_FortValiantC_1120\",\n\t\t    \"Dlg_FortValiantC_1121\",\n\t\t    \"Dlg_FortValiantC_1122\",\n\t\t    \"Dlg_FortValiantC_1123\",\n\t\t    \"Dlg_FortValiantC_1124\",\n\t\t    \"Dlg_FortValiantC_1125\",\n\t\t    \"Dlg_FortValiantC_1126\",\n\t\t    \"Dlg_FortValiantC_1127\",\n\t\t    \"Dlg_FortValiantC_1128\",\n\t\t    \"Dlg_FortValiantC_1129\",\n\t\t    \"Dlg_FortValiantC_1130\",\n\t\t    \"Dlg_FortValiantC_1131\",\n\t\t    \"Dlg_FortValiantC_1132\",\n\t\t    \"Dlg_FortValiantC_1133\",\n\t\t    \"Dlg_FortValiantC_1134\",\n\t\t    \"Dlg_FortValiantC_1135\",\n\t\t    \"Dlg_FortValiantC_1136\",\n\t\t    \"Dlg_FortValiantC_1137\",\n\t\t    \"Dlg_FortValiantC_1138\",\n\t\t    \"Dlg_AlienGate_1000\",\n\t\t    \"Dlg_AlienGate_1001\",\n\t\t    \"Dlg_AlienGate_1002\",\n\t\t    \"Dlg_AlienGate_1003\",\n\t\t    \"Dlg_AlienGate_1004\",\n\t\t    \"Dlg_AlienGate_1005\",\n\t\t    \"Dlg_AlienGate_1006\",\n\t\t    \"Dlg_AlienGate_1007\",\n\t\t    \"Dlg_AlienGate_1008\",\n\t\t    \"Dlg_AlienGate_1009\",\n\t\t    \"Dlg_AlienGate_1010\",\n\t\t    \"Dlg_AlienGate_1011\",\n\t\t    \"Dlg_AlienGate_1012\",\n\t\t    \"Dlg_AlienGate_1013\",\n\t\t    \"Dlg_AlienGate_1014\",\n\t\t    \"Dlg_AlienGate_1015\",\n\t\t    \"Dlg_AlienGate_1016\",\n\t\t    \"Dlg_AlienGate_1017\",\n\t\t    \"Dlg_AlienGate_1018\",\n\t\t    \"Dlg_AlienGate_1019\",\n\t\t    \"Dlg_AlienGate_1020\",\n\t\t    \"Dlg_AlienGate_1021\",\n\t\t    \"Dlg_AlienGate_1022\",\n\t\t    \"Dlg_AlienGate_1023\",\n\t\t    \"Dlg_AlienGate_1024\",\n\t\t    \"Dlg_AlienGate_1025\",\n\t\t    \"Dlg_AlienGate_1026\",\n\t\t    \"Dlg_AlienGate_1027\",\n\t\t    \"Dlg_AlienGate_1028\",\n\t\t    \"Dlg_AlienGate_1029\",\n\t\t    \"Dlg_AlienGate_1030\",\n\t\t    \"Dlg_AlienGate_1031\",\n\t\t    \"Dlg_AlienGate_1032\",\n\t\t    \"Dlg_AlienGate_1033\",\n\t\t    \"Dlg_AlienGate_1034\",\n\t\t    \"Dlg_AlienGate_1035\",\n\t\t    \"Dlg_AlienGate_1036\",\n\t\t    \"Dlg_AlienGate_1037\",\n\t\t    \"Dlg_AlienGate_1038\",\n\t\t    \"Dlg_AlienGate_1039\",\n\t\t    \"Dlg_AlienGate_1040\",\n\t\t    \"Dlg_AlienGate_1041\",\n\t\t    \"Dlg_AlienGate_1042\",\n\t\t    \"Dlg_AlienGate_1043\",\n\t\t    \"Dlg_AlienGate_1044\",\n\t\t    \"Dlg_AlienGate_1045\",\n\t\t    \"Dlg_AlienGate_1046\",\n\t\t    \"Dlg_AlienGate_1047\",\n\t\t    \"Dlg_AlienGate_1048\",\n\t\t    \"Dlg_AlienGate_1049\",\n\t\t    \"Dlg_AlienGate_1050\",\n\t\t    \"Dlg_AlienGate_1051\",\n\t\t    \"Dlg_AlienGate_1052\",\n\t\t    \"Dlg_AlienGate_1053\",\n\t\t    \"Dlg_AlienGate_1054\",\n\t\t    \"Dlg_AlienGate_1055\",\n\t\t    \"Dlg_AlienGate_1056\",\n\t\t    \"Dlg_AlienGate_1057\",\n\t\t    \"Dlg_AlienGate_1058\",\n\t\t    \"Dlg_AlienGate_1059\",\n\t\t    \"Dlg_AlienGate_1060\",\n\t\t    \"Dlg_AlienGate_1061\",\n\t\t    \"Dlg_AlienGate_1062\",\n\t\t    \"Dlg_AlienGate_1063\",\n\t\t    \"Dlg_AlienGate_1064\",\n\t\t    \"Dlg_AlienGate_1065\",\n\t\t    \"Dlg_AlienGate_1066\",\n\t\t    \"Dlg_AlienGate_1067\",\n\t\t    \"Dlg_AlienGate_1068\",\n\t\t    \"Dlg_AlienGate_1069\",\n\t\t    \"Dlg_AlienGate_1070\",\n\t\t    \"Dlg_AlienGate_1071\",\n\t\t    \"Dlg_AlienGate_1072\",\n\t\t    \"Dlg_AlienGate_1073\",\n\t\t    \"Dlg_AlienGate_1074\",\n\t\t    \"Dlg_AlienGate_1075\",\n\t\t    \"Dlg_AlienGate_1076\",\n\t\t    \"Dlg_AlienGate_1077\",\n\t\t    \"Dlg_AlienGate_1078\",\n\t\t    \"Dlg_AlienGate_1079\",\n\t\t    \"Dlg_AlienGate_1080\",\n\t\t    \"Dlg_AlienGate_1081\",\n\t\t    \"Dlg_AlienGate_1082\",\n\t\t    \"Dlg_AlienGate_1083\",\n\t\t    \"Dlg_AlienGate_1084\",\n\t\t    \"Dlg_AlienGate_1085\",\n\t\t    \"Dlg_AlienGate_1086\",\n\t\t    \"Dlg_AlienGate_1087\",\n\t\t    \"Dlg_AlienGate_1088\",\n\t\t    \"Dlg_AlienGate_1089\",\n\t\t    \"Dlg_AlienGate_1090\",\n\t\t    \"Dlg_AlienGate_1091\",\n\t\t    \"Dlg_AlienGate_1092\",\n\t\t    \"Dlg_AlienGate_1093\",\n\t\t    \"Dlg_AlienGate_1094\",\n\t\t    \"Dlg_AlienGate_1095\",\n\t\t    \"Dlg_AlienGate_1096\",\n\t\t    \"Dlg_AlienGate_1097\",\n\t\t    \"Dlg_AlienGate_1098\",\n\t\t    \"Dlg_AlienGate_1099\",\n\t\t    \"Dlg_AlienGate_1100\",\n\t\t    \"Dlg_AlienGate_1101\",\n\t\t    \"Dlg_AlienGate_1102\",\n\t\t    \"Dlg_AlienGate_1103\",\n\t\t    \"Dlg_AlienGate_1104\",\n\t\t    \"Dlg_AlienGate_1105\",\n\t\t    \"Dlg_AlienGate_1106\",\n\t\t    \"Dlg_AlienGate_1107\",\n\t\t    \"Dlg_AlienGate_1108\",\n\t\t    \"Dlg_AlienGate_1109\",\n\t\t    \"Dlg_AlienGate_1110\",\n\t\t    \"Dlg_AlienGate_1111\",\n\t\t    \"Dlg_AlienGate_1112\",\n\t\t    \"Dlg_AlienGate_1113\",\n\t\t    \"Dlg_AlienGate_1114\",\n\t\t    \"Dlg_AlienGate_1115\",\n\t\t    \"Dlg_AlienGate_1116\",\n\t\t    \"Dlg_AlienGate_1117\",\n\t\t    \"Dlg_AlienGate_1118\",\n\t\t    \"Dlg_AlienGate_1119\",\n\t\t    \"Dlg_AlienGate_1120\",\n\t\t    \"Dlg_AlienGate_1121\",\n\t\t    \"Dlg_AlienGate_1122\",\n\t\t    \"Dlg_AlienGate_1123\",\n\t\t    \"Dlg_AlienGate_1124\",\n\t\t    \"Dlg_AlienGate_1125\",\n\t\t    \"Dlg_AlienGate_1126\",\n\t\t    \"Dlg_AlienGate_1127\",\n\t\t    \"Dlg_AlienGate_1128\",\n\t\t    \"Dlg_AlienGate_1129\",\n\t\t    \"Dlg_AlienGate_1130\",\n\t\t    \"Dlg_AlienGate_1131\",\n\t\t    \"Dlg_AlienGate_1132\",\n\t\t    \"Dlg_AlienGate_1133\",\n\t\t    \"Dlg_AlienGate_1134\",\n\t\t    \"Dlg_AlienGate_1135\",\n\t\t    \"Dlg_AlienGate_1136\",\n\t\t    \"Dlg_AlienGate_1137\",\n\t\t    \"Dlg_AlienGate_1138\",\n\t\t    \"Dlg_AlienGate_1139\",\n\t\t    \"Dlg_AlienGate_1140\",\n\t\t    \"Dlg_AlienGate_1141\",\n\t\t    \"Dlg_AlienGate_1142\",\n\t\t    \"Dlg_AlienGate_1143\",\n\t\t    \"Dlg_AlienGate_1144\",\n\t\t    \"Dlg_AlienGate_1145\",\n\t\t    \"Dlg_AlienGate_1146\",\n\t\t    \"Dlg_AlienGate_1147\",\n\t\t    \"Dlg_AlienGate_1148\",\n\t\t    \"Dlg_AlienGate_1149\",\n\t\t    \"Dlg_AlienGate_1150\",\n\t\t    \"Dlg_AlienGate_1151\",\n\t\t    \"Dlg_AlienGate_1152\",\n\t\t    \"Dlg_AlienGate_1153\",\n\t\t    \"Dlg_AlienGate_1154\",\n\t\t    \"Dlg_AlienGate_1155\",\n\t\t    \"Dlg_AlienGate_1156\",\n\t\t    \"Dlg_AlienGate_1157\",\n\t\t    \"Dlg_AlienGate_1158\",\n\t\t    \"Dlg_AlienGate_1159\",\n\t\t    \"Dlg_AlienGate_1160\",\n\t\t    \"Dlg_AlienGate_1161\",\n\t\t    \"Dlg_AlienGate_1162\",\n\t\t    \"Dlg_AlienGate_1163\",\n\t\t    \"Dlg_AlienGate_1164\",\n\t\t    \"Dlg_AlienGate_1165\",\n\t\t    \"Dlg_AlienGate_1166\",\n\t\t    \"Dlg_PirateBase_1000\",\n\t\t    \"Dlg_PirateBase_1001\",\n\t\t    \"Dlg_PirateBase_1002\",\n\t\t    \"Dlg_PirateBase_1003\",\n\t\t    \"Dlg_PirateBase_1004\",\n\t\t    \"Dlg_PirateBase_1005\",\n\t\t    \"Dlg_PirateBase_1006\",\n\t\t    \"Dlg_PirateBase_1007\",\n\t\t    \"Dlg_PirateBase_1008\",\n\t\t    \"Dlg_PirateBase_1009\",\n\t\t    \"Dlg_PirateBase_1010\",\n\t\t    \"Dlg_PirateBase_1011\",\n\t\t    \"Dlg_PirateBase_1012\",\n\t\t    \"Dlg_PirateBase_1013\",\n\t\t    \"Dlg_PirateBase_1014\",\n\t\t    \"Dlg_PirateBase_1015\",\n\t\t    \"Dlg_PirateBase_1016\",\n\t\t    \"Dlg_PirateBase_1017\",\n\t\t    \"Dlg_PirateBase_1018\",\n\t\t    \"Dlg_PirateBase_1019\",\n\t\t    \"Dlg_PirateBase_1020\",\n\t\t    \"Dlg_PirateBase_1021\",\n\t\t    \"Dlg_PirateBase_1022\",\n\t\t    \"Dlg_PirateBase_1023\",\n\t\t    \"Dlg_PirateBase_1024\",\n\t\t    \"Dlg_PirateBase_1025\",\n\t\t    \"Dlg_PirateBase_1026\",\n\t\t    \"Dlg_PirateBase_1027\",\n\t\t    \"Dlg_PirateBase_1028\",\n\t\t    \"Dlg_PirateBase_1029\",\n\t\t    \"Dlg_PirateBase_1030\",\n\t\t    \"Dlg_PirateBase_1031\",\n\t\t    \"Dlg_PirateBase_1032\",\n\t\t    \"Dlg_PirateBase_1033\",\n\t\t    \"Dlg_PirateBase_1034\",\n\t\t    \"Dlg_PirateBase_1035\",\n\t\t    \"Dlg_PirateBase_1036\",\n\t\t    \"Dlg_PirateBase_1037\",\n\t\t    \"Dlg_PirateBase_1038\",\n\t\t    \"Dlg_PirateBase_1039\",\n\t\t    \"Dlg_PirateBase_1040\",\n\t\t    \"Dlg_PirateBase_1041\",\n\t\t    \"Dlg_PirateBase_1042\",\n\t\t    \"Dlg_PirateBase_1043\",\n\t\t    \"Dlg_PirateBase_1044\",\n\t\t    \"Dlg_PirateBase_1045\",\n\t\t    \"Dlg_PirateBase_1046\",\n\t\t    \"Dlg_PirateBase_1047\",\n\t\t    \"Dlg_PirateBase_1048\",\n\t\t    \"Dlg_PirateBase_1049\",\n\t\t    \"Dlg_PirateBase_1050\",\n\t\t    \"Dlg_PirateBase_1051\",\n\t\t    \"Dlg_PirateBase_1052\",\n\t\t    \"Dlg_PirateBase_1053\",\n\t\t    \"Dlg_PirateBase_1054\",\n\t\t    \"Dlg_PirateBase_1055\",\n\t\t    \"Dlg_PirateBase_1056\",\n\t\t    \"Dlg_PirateBase_1057\",\n\t\t    \"Dlg_PirateBase_1058\",\n\t\t    \"Dlg_PirateBase_1059\",\n\t\t    \"Dlg_PirateBase_1060\",\n\t\t    \"Dlg_PirateBase_1061\",\n\t\t    \"Dlg_PirateBase_1062\",\n\t\t    \"Dlg_PirateBase_1063\",\n\t\t    \"Dlg_PirateBase_1064\",\n\t\t    \"Dlg_PirateBase_1065\",\n\t\t    \"Dlg_PirateBase_1066\",\n\t\t    \"Dlg_PirateBase_1067\",\n\t\t    \"Dlg_PirateBase_1068\",\n\t\t    \"Dlg_PirateBase_1069\",\n\t\t    \"Dlg_PirateBase_1070\",\n\t\t    \"Dlg_PirateBase_1071\",\n\t\t    \"Dlg_PirateBase_1072\",\n\t\t    \"Dlg_PirateBase_1073\",\n\t\t    \"Dlg_PirateBase_1074\",\n\t\t    \"Dlg_PirateBase_1075\",\n\t\t    \"Dlg_PirateBase_1076\",\n\t\t    \"Dlg_PirateBase_1077\",\n\t\t    \"Dlg_PirateBase_1078\",\n\t\t    \"Dlg_PirateBase_1079\",\n\t\t    \"Dlg_PirateBase_1080\",\n\t\t    \"Dlg_PirateBase_1081\",\n\t\t    \"Dlg_PirateBase_1082\",\n\t\t    \"Dlg_PirateBase_1083\",\n\t\t    \"Dlg_PirateBase_1084\",\n\t\t    \"Dlg_PirateBase_1085\",\n\t\t    \"Dlg_PirateBase_1086\",\n\t\t    \"Dlg_PirateBase_1087\",\n\t\t    \"Dlg_PirateBase_1088\",\n\t\t    \"Dlg_PirateBase_1089\",\n\t\t    \"Dlg_PirateBase_1090\",\n\t\t    \"Dlg_PirateBase_1091\",\n\t\t    \"Dlg_PirateBase_1092\",\n\t\t    \"Dlg_PirateBase_1093\",\n\t\t    \"Dlg_PirateBase_1094\",\n\t\t    \"Dlg_PirateBase_1095\",\n\t\t    \"Dlg_PirateBase_1096\",\n\t\t    \"Dlg_PirateBase_1097\",\n\t\t    \"Dlg_PirateBase_1098\",\n\t\t    \"Dlg_PirateBase_1099\",\n\t\t    \"Dlg_PirateBase_1100\",\n\t\t    \"Dlg_PirateBase_1101\",\n\t\t    \"Dlg_PirateBase_1102\",\n\t\t    \"Dlg_PirateBase_1103\",\n\t\t    \"Dlg_PirateBase_1104\",\n\t\t    \"Dlg_PirateBase_1105\",\n\t\t    \"Dlg_PirateBase_1106\",\n\t\t    \"Dlg_PirateBase_1107\",\n\t\t    \"Dlg_PirateBase_1108\",\n\t\t    \"Dlg_PirateBase_1109\",\n\t\t    \"Dlg_PirateBase_1110\",\n\t\t    \"Dlg_PirateBase_1111\",\n\t\t    \"Dlg_PirateBase_1112\",\n\t\t    \"Dlg_PirateBase_1113\",\n\t\t    \"Dlg_PirateBase_1114\",\n\t\t    \"Dlg_PirateBase_1115\",\n\t\t    \"Dlg_PirateBase_1116\",\n\t\t    \"Dlg_PirateBase_1117\",\n\t\t    \"Dlg_PirateBase_1118\",\n\t\t    \"Dlg_PirateBase_1119\",\n\t\t    \"Dlg_PirateBase_1120\",\n\t\t    \"Dlg_PirateBase_1121\",\n\t\t    \"Dlg_PirateBase_1122\",\n\t\t    \"Dlg_PirateBase_1123\",\n\t\t    \"Dlg_PirateBase_1124\",\n\t\t    \"Dlg_PirateBase_1125\",\n\t\t    \"Dlg_PirateBase_1126\",\n\t\t    \"Dlg_PirateBase_1127\",\n\t\t    \"Dlg_PirateBase_1128\",\n\t\t    \"Dlg_PirateBase_1129\",\n\t\t    \"Dlg_PirateBase_1130\",\n\t\t    \"Dlg_PirateBase_1131\",\n\t\t    \"Dlg_PirateBase_1132\",\n\t\t    \"Dlg_PirateBase_1133\",\n\t\t    \"Dlg_PirateBase_1134\",\n\t\t    \"Dlg_PirateBase_1135\",\n\t\t    \"Dlg_PirateBase_1136\",\n\t\t    \"Dlg_PirateBase_1137\",\n\t\t    \"Dlg_PirateBase_1138\",\n\t\t    \"Dlg_PirateBase_1139\",\n\t\t    \"Dlg_PirateBase_1140\",\n\t\t    \"Dlg_PirateBase_1141\",\n\t\t    \"Dlg_PirateBase_1142\",\n\t\t    \"Dlg_PirateBase_1143\",\n\t\t    \"Dlg_PirateBase_1144\",\n\t\t    \"Dlg_PirateBase_1145\",\n\t\t    \"Dlg_PirateBase_1146\",\n\t\t    \"Dlg_PirateBase_1147\",\n\t\t    \"Dlg_PirateBase_1148\",\n\t\t    \"Dlg_PirateBase_1149\",\n\t\t    \"Dlg_PirateBase_1150\",\n\t\t    \"Dlg_PirateBase_1151\",\n\t\t    \"Dlg_PirateBase_1152\",\n\t\t    \"Dlg_PirateBase_1153\",\n\t\t    \"Dlg_PirateBase_1154\",\n\t\t    \"Dlg_PirateBase_1155\",\n\t\t    \"Dlg_PirateBase_1156\",\n\t\t    \"Dlg_PirateBase_1157\",\n\t\t    \"Dlg_PirateBase_1158\",\n\t\t    \"Dlg_PirateBase_1159\",\n\t\t    \"Dlg_PirateBase_1160\",\n\t\t    \"Dlg_BarthsMoonConvince_1000\",\n\t\t    \"Dlg_BarthsMoonConvince_1001\",\n\t\t    \"Dlg_BarthsMoonConvince_1002\",\n\t\t    \"Dlg_BarthsMoonConvince_1003\",\n\t\t    \"Dlg_BarthsMoonConvince_1004\",\n\t\t    \"Dlg_BarthsMoonConvince_1005\",\n\t\t    \"Dlg_BarthsMoonConvince_1006\",\n\t\t    \"Dlg_BarthsMoonConvince_1007\",\n\t\t    \"Dlg_BarthsMoonConvince_1008\",\n\t\t    \"Dlg_BarthsMoonConvince_1009\",\n\t\t    \"Dlg_BarthsMoonConvince_1010\",\n\t\t    \"Dlg_BarthsMoonConvince_1011\",\n\t\t    \"Dlg_BarthsMoonConvince_1012\",\n\t\t    \"Dlg_BarthsMoonConvince_1013\",\n\t\t    \"Dlg_BarthsMoonConvince_1014\",\n\t\t    \"Dlg_BarthsMoonConvince_1015\",\n\t\t    \"Dlg_BarthsMoonConvince_1016\",\n\t\t    \"Dlg_BarthsMoonConvince_1017\",\n\t\t    \"Dlg_BarthsMoonConvince_1018\",\n\t\t    \"Dlg_BarthsMoonConvince_1019\",\n\t\t    \"Dlg_BarthsMoonConvince_1020\",\n\t\t    \"Dlg_BarthsMoonConvince_1021\",\n\t\t    \"Dlg_BarthsMoonConvince_1022\",\n\t\t    \"Dlg_BarthsMoonConvince_1023\",\n\t\t    \"Dlg_BarthsMoonConvince_1024\",\n\t\t    \"Dlg_BarthsMoonConvince_1025\",\n\t\t    \"Dlg_BarthsMoonConvince_1026\",\n\t\t    \"Dlg_BarthsMoonConvince_1027\",\n\t\t    \"Dlg_BarthsMoonConvince_1028\",\n\t\t    \"Dlg_BarthsMoonConvince_1029\",\n\t\t    \"Dlg_BarthsMoonConvince_1030\",\n\t\t    \"Dlg_BarthsMoonConvince_1031\",\n\t\t    \"Dlg_BarthsMoonConvince_1032\",\n\t\t    \"Dlg_BarthsMoonConvince_1033\",\n\t\t    \"Dlg_BarthsMoonConvince_1034\",\n\t\t    \"Dlg_BarthsMoonConvince_1035\",\n\t\t    \"Dlg_BarthsMoonConvince_1036\",\n\t\t    \"Dlg_BarthsMoonConvince_1037\",\n\t\t    \"Dlg_BarthsMoonConvince_1038\",\n\t\t    \"Dlg_BarthsMoonConvince_1039\",\n\t\t    \"Dlg_BarthsMoonConvince_1040\",\n\t\t    \"Dlg_BarthsMoonConvince_1041\",\n\t\t    \"Dlg_BarthsMoonConvince_1042\",\n\t\t    \"Dlg_BarthsMoonConvince_1043\",\n\t\t    \"Dlg_BarthsMoonConvince_1044\",\n\t\t    \"Dlg_BarthsMoonConvince_1045\",\n\t\t    \"Dlg_BarthsMoonConvince_1046\",\n\t\t    \"Dlg_BarthsMoonConvince_1047\",\n\t\t    \"Dlg_BarthsMoonConvince_1048\",\n\t\t    \"Dlg_BarthsMoonConvince_1049\",\n\t\t    \"Dlg_BarthsMoonConvince_1050\",\n\t\t    \"Dlg_BarthsMoonConvince_1051\",\n\t\t    \"Dlg_BarthsMoonConvince_1052\",\n\t\t    \"Dlg_BarthsMoonConvince_1053\",\n\t\t    \"Dlg_BarthsMoonConvince_1054\",\n\t\t    \"Dlg_BarthsMoonConvince_1055\",\n\t\t    \"Dlg_BarthsMoonConvince_1056\",\n\t\t    \"Dlg_BarthsMoonConvince_1057\",\n\t\t    \"Dlg_BarthsMoonConvince_1058\",\n\t\t    \"Dlg_BarthsMoonConvince_1059\",\n\t\t    \"Dlg_BarthsMoonConvince_1060\",\n\t\t    \"Dlg_BarthsMoonConvince_1061\",\n\t\t    \"Dlg_BarthsMoonConvince_1062\",\n\t\t    \"Dlg_BarthsMoonConvince_1063\",\n\t\t    \"Dlg_BarthsMoonConvince_1064\",\n\t\t    \"Dlg_BarthsMoonConvince_1065\",\n\t\t    \"Dlg_BarthsMoonConvince_1066\",\n\t\t    \"Dlg_BarthsMoonConvince_1067\",\n\t\t    \"Dlg_BarthsMoonConvince_1068\",\n\t\t    \"Dlg_BarthsMoonConvince_1069\",\n\t\t    \"Dlg_BarthsMoonConvince_1070\",\n\t\t    \"Dlg_BarthsMoonConvince_1071\",\n\t\t    \"Dlg_BarthsMoonConvince_1072\",\n\t\t    \"Dlg_BarthsMoonConvince_1073\",\n\t\t    \"Dlg_BarthsMoonConvince_1074\",\n\t\t    \"Dlg_BarthsMoonConvince_1075\",\n\t\t    \"Dlg_BarthsMoonConvince_1076\",\n\t\t    \"Dlg_BarthsMoonConvince_1077\",\n\t\t    \"Dlg_BarthsMoonConvince_1078\",\n\t\t    \"Dlg_BarthsMoonConvince_1079\",\n\t\t    \"Dlg_BarthsMoonConvince_1080\",\n\t\t    \"Dlg_BarthsMoonConvince_1081\",\n\t\t    \"Dlg_BarthsMoonConvince_1082\",\n\t\t    \"Dlg_BarthsMoonConvince_1083\",\n\t\t    \"Dlg_BarthsMoonConvince_1084\",\n\t\t    \"Dlg_BarthsMoonConvince_1085\",\n\t\t    \"Dlg_BarthsMoonConvince_1086\",\n\t\t    \"Dlg_BarthsMoonConvince_1087\",\n\t\t    \"Dlg_BarthsMoonConvince_1088\",\n\t\t    \"Dlg_BarthsMoonConvince_1089\",\n\t\t    \"Dlg_BarthsMoonConvince_1090\",\n\t\t    \"Dlg_BarthsMoonConvince_1091\",\n\t\t    \"Dlg_BarthsMoonConvince_1092\",\n\t\t    \"Dlg_BarthsMoonConvince_1093\",\n\t\t    \"Dlg_BarthsMoonConvince_1094\",\n\t\t    \"Dlg_BarthsMoonConvince_1095\",\n\t\t    \"Dlg_BarthsMoonConvince_1096\",\n\t\t    \"Dlg_BarthsMoonConvince_1097\",\n\t\t    \"Dlg_BarthsMoonConvince_1098\",\n\t\t    \"Dlg_BarthsMoonConvince_1099\",\n\t\t    \"Dlg_BarthsMoonConvince_1100\",\n\t\t    \"Dlg_BarthsMoonConvince_1101\",\n\t\t    \"Dlg_BarthsMoonConvince_1102\",\n\t\t    \"Dlg_BarthsMoonConvince_1103\",\n\t\t    \"Dlg_BarthsMoonConvince_1104\",\n\t\t    \"Dlg_BarthsMoonConvince_1105\",\n\t\t    \"Dlg_BarthsMoonConvince_1106\",\n\t\t    \"Dlg_BarthsMoonConvince_1107\",\n\t\t    \"Dlg_BarthsMoonConvince_1108\",\n\t\t    \"Dlg_BarthsMoonConvince_1109\",\n\t\t    \"Dlg_BarthsMoonConvince_1110\",\n\t\t    \"Dlg_BarthsMoonConvince_1111\",\n\t\t    \"Dlg_JunkyardConvince_1000\",\n\t\t    \"Dlg_JunkyardConvince_1001\",\n\t\t    \"Dlg_JunkyardConvince_1002\",\n\t\t    \"Dlg_JunkyardConvince_1003\",\n\t\t    \"Dlg_JunkyardConvince_1004\",\n\t\t    \"Dlg_JunkyardConvince_1005\",\n\t\t    \"Dlg_JunkyardConvince_1006\",\n\t\t    \"Dlg_JunkyardConvince_1007\",\n\t\t    \"Dlg_JunkyardConvince_1008\",\n\t\t    \"Dlg_JunkyardConvince_1009\",\n\t\t    \"Dlg_JunkyardConvince_1010\",\n\t\t    \"Dlg_JunkyardConvince_1011\",\n\t\t    \"Dlg_JunkyardConvince_1012\",\n\t\t    \"Dlg_JunkyardConvince_1013\",\n\t\t    \"Dlg_JunkyardConvince_1014\",\n\t\t    \"Dlg_JunkyardConvince_1015\",\n\t\t    \"Dlg_JunkyardConvince_1016\",\n\t\t    \"Dlg_JunkyardConvince_1017\",\n\t\t    \"Dlg_JunkyardConvince_1018\",\n\t\t    \"Dlg_JunkyardConvince_1019\",\n\t\t    \"Dlg_JunkyardConvince_1020\",\n\t\t    \"Dlg_JunkyardConvince_1021\",\n\t\t    \"Dlg_JunkyardConvince_1022\",\n\t\t    \"Dlg_JunkyardConvince_1023\",\n\t\t    \"Dlg_JunkyardConvince_1024\",\n\t\t    \"Dlg_JunkyardConvince_1025\",\n\t\t    \"Dlg_JunkyardConvince_1026\",\n\t\t    \"Dlg_JunkyardConvince_1027\",\n\t\t    \"Dlg_JunkyardConvince_1028\",\n\t\t    \"Dlg_JunkyardConvince_1029\",\n\t\t    \"Dlg_JunkyardConvince_1030\",\n\t\t    \"Dlg_JunkyardConvince_1031\",\n\t\t    \"Dlg_JunkyardConvince_1032\",\n\t\t    \"Dlg_JunkyardConvince_1034\",\n\t\t    \"Dlg_JunkyardConvince_1035\",\n\t\t    \"Dlg_JunkyardConvince_1036\",\n\t\t    \"Dlg_JunkyardConvince_1037\",\n\t\t    \"Dlg_JunkyardConvince_1038\",\n\t\t    \"Dlg_JunkyardConvince_1039\",\n\t\t    \"Dlg_JunkyardConvince_1040\",\n\t\t    \"Dlg_JunkyardConvince_1041\",\n\t\t    \"Dlg_JunkyardConvince_1042\",\n\t\t    \"Dlg_JunkyardConvince_1043\",\n\t\t    \"Dlg_JunkyardConvince_1044\",\n\t\t    \"Dlg_JunkyardConvince_1045\",\n\t\t    \"Dlg_JunkyardConvince_1046\",\n\t\t    \"Dlg_JunkyardConvince_1047\",\n\t\t    \"Dlg_JunkyardConvince_1048\",\n\t\t    \"Dlg_JunkyardConvince_1049\",\n\t\t    \"Dlg_JunkyardConvince_1050\",\n\t\t    \"Dlg_JunkyardConvince_1051\",\n\t\t    \"Dlg_JunkyardConvince_1052\",\n\t\t    \"Dlg_JunkyardConvince_1053\",\n\t\t    \"Dlg_JunkyardConvince_1054\",\n\t\t    \"Dlg_JunkyardConvince_1055\",\n\t\t    \"Dlg_JunkyardConvince_1056\",\n\t\t    \"Dlg_JunkyardConvince_1057\",\n\t\t    \"Dlg_JunkyardConvince_1058\",\n\t\t    \"Dlg_JunkyardConvince_1059\",\n\t\t    \"Dlg_JunkyardConvince_1060\",\n\t\t    \"Dlg_JunkyardConvince_1061\",\n\t\t    \"Dlg_JunkyardConvince_1062\",\n\t\t    \"Dlg_JunkyardConvince_1063\",\n\t\t    \"Dlg_JunkyardConvince_1064\",\n\t\t    \"Dlg_JunkyardConvince_1065\",\n\t\t    \"Dlg_JunkyardConvince_1066\",\n\t\t    \"Dlg_JunkyardConvince_1067\",\n\t\t    \"Dlg_JunkyardConvince_1068\",\n\t\t    \"Dlg_JunkyardConvince_1069\",\n\t\t    \"Dlg_JunkyardConvince_1070\",\n\t\t    \"Dlg_JunkyardConvince_1071\",\n\t\t    \"Dlg_JunkyardConvince_1072\",\n\t\t    \"Dlg_JunkyardConvince_1073\",\n\t\t    \"Dlg_JunkyardConvince_1074\",\n\t\t    \"Dlg_JunkyardConvince_1075\",\n\t\t    \"Dlg_JunkyardConvince_1076\",\n\t\t    \"Dlg_JunkyardConvince_1077\",\n\t\t    \"Dlg_JunkyardConvince_1078\",\n\t\t    \"Dlg_JunkyardConvince_1079\",\n\t\t    \"Dlg_JunkyardConvince_1080\",\n\t\t    \"Dlg_JunkyardConvince_1081\",\n\t\t    \"Dlg_JunkyardConvince_1082\",\n\t\t    \"Dlg_JunkyardConvince_1083\",\n\t\t    \"Dlg_JunkyardConvince_1084\",\n\t\t    \"Dlg_JunkyardConvince_1085\",\n\t\t    \"Dlg_JunkyardConvince_1086\",\n\t\t    \"Dlg_JunkyardConvince_1087\",\n\t\t    \"Dlg_JunkyardConvince_1088\",\n\t\t    \"Dlg_JunkyardConvince_1089\",\n\t\t    \"Dlg_JunkyardConvince_1090\",\n\t\t    \"Dlg_JunkyardConvince_1091\",\n\t\t    \"Dlg_JunkyardConvince_1092\",\n\t\t    \"Dlg_JunkyardConvince_1093\",\n\t\t    \"Dlg_JunkyardConvince_1094\",\n\t\t    \"Dlg_JunkyardConvince_1095\",\n\t\t    \"Dlg_JunkyardConvince_1096\",\n\t\t    \"Dlg_JunkyardConvince_1097\",\n\t\t    \"Dlg_JunkyardConvince_1098\",\n\t\t    \"Dlg_JunkyardConvince_1099\",\n\t\t    \"Dlg_JunkyardConvince_1100\",\n\t\t    \"Dlg_JunkyardConvince_1101\",\n\t\t    \"Dlg_JunkyardConvince_1102\",\n\t\t    \"Dlg_JunkyardConvince_1103\",\n\t\t    \"Dlg_JunkyardConvince_1104\",\n\t\t    \"Dlg_JunkyardConvince_1105\",\n\t\t    \"Dlg_JunkyardConvince_1106\",\n\t\t    \"Dlg_JunkyardConvince_1107\",\n\t\t    \"Dlg_JunkyardConvince_1108\",\n\t\t    \"Dlg_JunkyardConvince_1109\",\n\t\t    \"Dlg_JunkyardConvince_1110\",\n\t\t    \"Dlg_JunkyardConvince_1111\",\n\t\t    \"Dlg_JunkyardConvince_1112\",\n\t\t    \"Dlg_JunkyardConvince_1113\",\n\t\t    \"Dlg_JunkyardConvince_1114\",\n\t\t    \"Dlg_JunkyardConvince_1115\",\n\t\t    \"Dlg_JunkyardConvince_1116\",\n\t\t    \"Dlg_JunkyardConvince_1117\",\n\t\t    \"Dlg_JunkyardConvince_1118\",\n\t\t    \"Dlg_JunkyardConvince_1119\",\n\t\t    \"Dlg_JunkyardConvince_1120\",\n\t\t    \"Dlg_JunkyardConvince_1121\",\n\t\t    \"Dlg_JunkyardConvince_1122\",\n\t\t    \"Dlg_JunkyardConvince_1123\",\n\t\t    \"Dlg_JunkyardConvince_1124\",\n\t\t    \"Dlg_JunkyardConvince_1125\",\n\t\t    \"Dlg_JunkyardConvince_1126\",\n\t\t    \"Dlg_JunkyardConvince_1127\",\n\t\t    \"Dlg_JunkyardConvince_1128\",\n\t\t    \"Dlg_JunkyardConvince_1129\",\n\t\t    \"Dlg_JunkyardConvince_1130\",\n\t\t    \"Dlg_JunkyardConvince_1131\",\n\t\t    \"Dlg_JunkyardConvince_1132\",\n\t\t    \"Dlg_JunkyardConvince_1133\",\n\t\t    \"Dlg_JunkyardConvince_1134\",\n\t\t    \"Dlg_JunkyardConvince_1135\",\n\t\t    \"Dlg_JunkyardConvince_1136\",\n\t\t    \"Dlg_JunkyardConvince_1137\",\n\t\t    \"Dlg_JunkyardConvince_1138\",\n\t\t    \"Dlg_JunkyardConvince_1139\",\n\t\t    \"Dlg_JunkyardConvince_1140\",\n\t\t    \"Dlg_JunkyardConvince_1141\",\n\t\t    \"Dlg_JunkyardConvince_1142\",\n\t\t    \"Dlg_JunkyardConvince_1143\",\n\t\t    \"Dlg_JunkyardConvince_1144\",\n\t\t    \"Dlg_JunkyardConvince_1145\",\n\t\t    \"Dlg_JunkyardConvince_1146\",\n\t\t    \"Dlg_JunkyardConvince_1147\",\n\t\t    \"Dlg_JunkyardConvince_1148\",\n\t\t    \"Dlg_JunkyardConvince_1149\",\n\t\t    \"Dlg_JunkyardConvince_1150\",\n\t\t    \"Dlg_JunkyardReturn_1000\",\n\t\t    \"Dlg_JunkyardReturn_1001\",\n\t\t    \"Dlg_JunkyardReturn_1002\",\n\t\t    \"Dlg_JunkyardReturn_1003\",\n\t\t    \"Dlg_JunkyardReturn_1004\",\n\t\t    \"Dlg_JunkyardReturn_1005\",\n\t\t    \"Dlg_JunkyardReturn_1006\",\n\t\t    \"Dlg_JunkyardReturn_1007\",\n\t\t    \"Dlg_JunkyardReturn_1008\",\n\t\t    \"Dlg_JunkyardReturn_1009\",\n\t\t    \"Dlg_JunkyardReturn_1010\",\n\t\t    \"Dlg_JunkyardReturn_1011\",\n\t\t    \"Dlg_JunkyardReturn_1012\",\n\t\t    \"Dlg_JunkyardReturn_1013\",\n\t\t    \"Dlg_JunkyardReturn_1014\",\n\t\t    \"Dlg_JunkyardReturn_1015\",\n\t\t    \"Dlg_JunkyardReturn_1016\",\n\t\t    \"Dlg_JunkyardReturn_1017\",\n\t\t    \"Dlg_JunkyardReturn_1018\",\n\t\t    \"Dlg_JunkyardReturn_1019\",\n\t\t    \"Dlg_JunkyardReturn_1020\",\n\t\t    \"Dlg_JunkyardReturn_1021\",\n\t\t    \"Dlg_JunkyardReturn_1022\",\n\t\t    \"Dlg_JunkyardReturn_1023\",\n\t\t    \"Dlg_JunkyardReturn_1024\",\n\t\t    \"Dlg_JunkyardReturn_1025\",\n\t\t    \"Dlg_JunkyardReturn_1026\",\n\t\t    \"Dlg_JunkyardReturn_1027\",\n\t\t    \"Amb3D_ThunderClapSmall\",\n\t\t    \"Amb3D_Welding01\",\n\t\t    \"Dlg_ChineseRafinery_1040\",\n\t\t    \"Dlg_ChineseRafinery_1041\",\n\t\t    \"Dlg_ChineseTransmitter_1000\",\n\t\t    \"Dlg_ChineseTransmitter_1001\",\n\t\t    \"Dlg_ChineseTransmitter_1002\",\n\t\t    \"Dlg_ChineseTransmitter_1003\",\n\t\t    \"Dlg_ChineseTransmitter_1045\",\n\t\t    \"Dlg_ChineseTransmitter_1046\",\n\t\t    \"Dlg_JunkyardReturn_1038\",\n\t\t    \"Dlg_JunkyardReturn_1039\",\n\t\t    \"Dlg_JunkyardReturn_1040\",\n\t\t    \"Dlg_JunkyardReturn_1041\",\n\t\t    \"Dlg_JunkyardReturn_1042\",\n\t\t    \"Dlg_JunkyardReturn_1043\",\n\t\t    \"Dlg_JunkyardReturn_1044\",\n\t\t    \"Dlg_JunkyardReturn_1045\",\n\t\t    \"Dlg_JunkyardReturn_1046\",\n\t\t    \"Dlg_JunkyardReturn_1047\",\n\t\t    \"Dlg_JunkyardReturn_1048\",\n\t\t    \"Dlg_JunkyardReturn_1049\",\n\t\t    \"Dlg_JunkyardReturn_1050\",\n\t\t    \"Dlg_JunkyardReturn_1051\",\n\t\t    \"Dlg_JunkyardReturn_1052\",\n\t\t    \"Dlg_JunkyardReturn_1053\",\n\t\t    \"Dlg_JunkyardReturn_1054\",\n\t\t    \"Dlg_JunkyardReturn_1055\",\n\t\t    \"Dlg_JunkyardReturn_1056\",\n\t\t    \"Dlg_JunkyardReturn_1057\",\n\t\t    \"Dlg_JunkyardReturn_1058\",\n\t\t    \"Dlg_JunkyardReturn_1059\",\n\t\t    \"Dlg_JunkyardReturn_1060\",\n\t\t    \"Dlg_JunkyardReturn_1061\",\n\t\t    \"Dlg_JunkyardReturn_1062\",\n\t\t    \"Dlg_JunkyardReturn_1063\",\n\t\t    \"Dlg_JunkyardReturn_1064\",\n\t\t    \"Dlg_JunkyardReturn_1065\",\n\t\t    \"Dlg_JunkyardReturn_1066\",\n\t\t    \"Dlg_JunkyardReturn_1067\",\n\t\t    \"Dlg_JunkyardReturn_1068\",\n\t\t    \"Dlg_JunkyardReturn_1069\",\n\t\t    \"Dlg_JunkyardReturn_1070\",\n\t\t    \"Dlg_JunkyardReturn_1071\",\n\t\t    \"Dlg_JunkyardReturn_1072\",\n\t\t    \"Dlg_JunkyardReturn_1073\",\n\t\t    \"Dlg_JunkyardReturn_1074\",\n\t\t    \"Dlg_JunkyardReturn_1075\",\n\t\t    \"Dlg_JunkyardReturn_1076\",\n\t\t    \"Dlg_JunkyardReturn_1077\",\n\t\t    \"Dlg_JunkyardReturn_1078\",\n\t\t    \"Dlg_JunkyardReturn_1079\",\n\t\t    \"Dlg_JunkyardReturn_1080\",\n\t\t    \"Dlg_JunkyardReturn_1081\",\n\t\t    \"Dlg_JunkyardReturn_1082\",\n\t\t    \"Dlg_JunkyardReturn_1083\",\n\t\t    \"Dlg_JunkyardReturn_1084\",\n\t\t    \"Dlg_JunkyardReturn_1085\",\n\t\t    \"Dlg_JunkyardReturn_1086\",\n\t\t    \"Dlg_JunkyardReturn_1087\",\n\t\t    \"Dlg_JunkyardReturn_1088\",\n\t\t    \"Dlg_JunkyardReturn_1089\",\n\t\t    \"Dlg_JunkyardReturn_1090\",\n\t\t    \"Dlg_LastHope_1000\",\n\t\t    \"Dlg_LastHope_1001\",\n\t\t    \"Dlg_LastHope_1002\",\n\t\t    \"Dlg_LastHope_1003\",\n\t\t    \"Dlg_LastHope_1004\",\n\t\t    \"Dlg_LastHope_1005\",\n\t\t    \"Dlg_LastHope_1006\",\n\t\t    \"Dlg_LastHope_1007\",\n\t\t    \"Dlg_LastHope_1008\",\n\t\t    \"Dlg_LastHope_1009\",\n\t\t    \"Dlg_LastHope_1010\",\n\t\t    \"Dlg_LastHope_1011\",\n\t\t    \"Dlg_LastHope_1012\",\n\t\t    \"Dlg_LastHope_1013\",\n\t\t    \"Dlg_LastHope_1014\",\n\t\t    \"Dlg_LastHope_1015\",\n\t\t    \"Dlg_LastHope_1016\",\n\t\t    \"Dlg_LastHope_1017\",\n\t\t    \"Dlg_LastHope_1018\",\n\t\t    \"Dlg_LastHope_1019\",\n\t\t    \"Dlg_LastHope_1020\",\n\t\t    \"Dlg_LastHope_1021\",\n\t\t    \"Dlg_LastHope_1022\",\n\t\t    \"Dlg_LastHope_1023\",\n\t\t    \"Dlg_LastHope_1024\",\n\t\t    \"Dlg_LastHope_1025\",\n\t\t    \"Dlg_LastHope_1026\",\n\t\t    \"Dlg_LastHope_1027\",\n\t\t    \"Dlg_LastHope_1028\",\n\t\t    \"Dlg_LastHope_1029\",\n\t\t    \"Dlg_LastHope_1030\",\n\t\t    \"Dlg_LastHope_1031\",\n\t\t    \"Dlg_LastHope_1032\",\n\t\t    \"Dlg_LastHope_1033\",\n\t\t    \"Dlg_LastHope_1034\",\n\t\t    \"Dlg_LastHope_1035\",\n\t\t    \"Dlg_LastHope_1036\",\n\t\t    \"Dlg_LastHope_1037\",\n\t\t    \"Dlg_LastHope_1038\",\n\t\t    \"Dlg_LastHope_1039\",\n\t\t    \"Dlg_LastHope_1040\",\n\t\t    \"Dlg_LastHope_1041\",\n\t\t    \"Dlg_LastHope_1042\",\n\t\t    \"Dlg_LastHope_1043\",\n\t\t    \"Dlg_LastHope_1044\",\n\t\t    \"Dlg_LastHope_1045\",\n\t\t    \"Dlg_LastHope_1046\",\n\t\t    \"Dlg_LastHope_1047\",\n\t\t    \"Dlg_LastHope_1048\",\n\t\t    \"Dlg_LastHope_1049\",\n\t\t    \"Dlg_LastHope_1050\",\n\t\t    \"Dlg_LastHope_1051\",\n\t\t    \"Dlg_LastHope_1052\",\n\t\t    \"Dlg_LastHope_1053\",\n\t\t    \"Dlg_LastHope_1054\",\n\t\t    \"Dlg_LastHope_1055\",\n\t\t    \"Dlg_LastHope_1056\",\n\t\t    \"Dlg_LastHope_1057\",\n\t\t    \"Dlg_LastHope_1058\",\n\t\t    \"Dlg_LastHope_1059\",\n\t\t    \"Dlg_LastHope_1060\",\n\t\t    \"Dlg_LastHope_1061\",\n\t\t    \"Dlg_LastHope_1062\",\n\t\t    \"Dlg_LastHope_1063\",\n\t\t    \"Dlg_LastHope_1064\",\n\t\t    \"Dlg_LastHope_1065\",\n\t\t    \"Dlg_LastHope_1066\",\n\t\t    \"Dlg_LastHope_1067\",\n\t\t    \"Dlg_LastHope_1068\",\n\t\t    \"Dlg_LastHope_1069\",\n\t\t    \"Dlg_LastHope_1070\",\n\t\t    \"Dlg_LastHope_1071\",\n\t\t    \"Dlg_LastHope_1072\",\n\t\t    \"Dlg_LastHope_1073\",\n\t\t    \"Dlg_LastHope_1074\",\n\t\t    \"Dlg_LastHope_1075\",\n\t\t    \"Dlg_LastHope_1076\",\n\t\t    \"Dlg_LastHope_1077\",\n\t\t    \"Dlg_LastHope_1082\",\n\t\t    \"Dlg_LastHope_1083\",\n\t\t    \"Dlg_LastHope_1088\",\n\t\t    \"Dlg_LastHope_1089\",\n\t\t    \"Dlg_LastHope_1090\",\n\t\t    \"Dlg_LastHope_1091\",\n\t\t    \"Dlg_LastHope_1092\",\n\t\t    \"Dlg_LastHope_1093\",\n\t\t    \"Dlg_LastHope_1094\",\n\t\t    \"Dlg_LastHope_1095\",\n\t\t    \"Dlg_LastHope_1096\",\n\t\t    \"Dlg_LastHope_1097\",\n\t\t    \"Dlg_LastHope_1098\",\n\t\t    \"Dlg_LastHope_1099\",\n\t\t    \"Dlg_LastHope_1100\",\n\t\t    \"Dlg_LastHope_1101\",\n\t\t    \"Dlg_LastHope_1102\",\n\t\t    \"Dlg_LastHope_1103\",\n\t\t    \"Dlg_LastHope_1104\",\n\t\t    \"Dlg_LastHope_1105\",\n\t\t    \"Dlg_LastHope_1106\",\n\t\t    \"Dlg_LastHope_1107\",\n\t\t    \"Dlg_LastHope_1108\",\n\t\t    \"Dlg_LastHope_1109\",\n\t\t    \"Dlg_LastHope_1110\",\n\t\t    \"Dlg_LastHope_1111\",\n\t\t    \"Dlg_LastHope_1112\",\n\t\t    \"Dlg_LastHope_1113\",\n\t\t    \"Dlg_LastHope_1114\",\n\t\t    \"Dlg_LastHope_1115\",\n\t\t    \"Dlg_LastHope_1116\",\n\t\t    \"Dlg_LastHope_1117\",\n\t\t    \"Dlg_LastHope_1118\",\n\t\t    \"Dlg_LastHope_1119\",\n\t\t    \"Dlg_LastHope_1120\",\n\t\t    \"Dlg_LastHope_1121\",\n\t\t    \"Dlg_LastHope_1122\",\n\t\t    \"Dlg_LastHope_1123\",\n\t\t    \"Dlg_LastHope_1124\",\n\t\t    \"Dlg_LastHope_1125\",\n\t\t    \"Dlg_LastHope_1126\",\n\t\t    \"Dlg_LastHope_1127\",\n\t\t    \"Dlg_LastHope_1128\",\n\t\t    \"Dlg_LastHope_1129\",\n\t\t    \"Dlg_LastHope_1130\",\n\t\t    \"Dlg_LastHope_1131\",\n\t\t    \"Dlg_LastHope_1132\",\n\t\t    \"Dlg_LastHope_1133\",\n\t\t    \"Dlg_LastHope_1134\",\n\t\t    \"Dlg_RussianWarehouse_1000\",\n\t\t    \"Dlg_RussianWarehouse_1001\",\n\t\t    \"Dlg_RussianWarehouse_1002\",\n\t\t    \"Dlg_RussianWarehouse_1003\",\n\t\t    \"Dlg_RussianWarehouse_1004\",\n\t\t    \"Dlg_RussianWarehouse_1005\",\n\t\t    \"Dlg_RussianWarehouse_1006\",\n\t\t    \"Dlg_RussianWarehouse_1007\",\n\t\t    \"Dlg_RussianWarehouse_1008\",\n\t\t    \"Dlg_RussianWarehouse_1009\",\n\t\t    \"Dlg_RussianWarehouse_1010\",\n\t\t    \"Dlg_RussianWarehouse_1011\",\n\t\t    \"Dlg_RussianWarehouse_1012\",\n\t\t    \"Dlg_RussianWarehouse_1013\",\n\t\t    \"Dlg_RussianWarehouse_1014\",\n\t\t    \"Dlg_RussianWarehouse_1015\",\n\t\t    \"Dlg_RussianWarehouse_1016\",\n\t\t    \"Dlg_RussianWarehouse_1017\",\n\t\t    \"Dlg_RussianWarehouse_1018\",\n\t\t    \"Dlg_RussianWarehouse_1019\",\n\t\t    \"Dlg_RussianWarehouse_1020\",\n\t\t    \"Dlg_RussianWarehouse_1021\",\n\t\t    \"Dlg_RussianWarehouse_1022\",\n\t\t    \"Dlg_RussianWarehouse_1023\",\n\t\t    \"Dlg_RussianWarehouse_1024\",\n\t\t    \"Dlg_RussianWarehouse_1025\",\n\t\t    \"Dlg_RussianWarehouse_1026\",\n\t\t    \"Dlg_RussianWarehouse_1027\",\n\t\t    \"Dlg_RussianWarehouse_1028\",\n\t\t    \"Dlg_RussianWarehouse_1029\",\n\t\t    \"Dlg_RussianWarehouse_1030\",\n\t\t    \"Dlg_RussianWarehouse_1031\",\n\t\t    \"Dlg_RussianWarehouse_1032\",\n\t\t    \"Dlg_RussianWarehouse_1033\",\n\t\t    \"Dlg_RussianWarehouse_1034\",\n\t\t    \"Dlg_RussianWarehouse_1035\",\n\t\t    \"Dlg_RussianWarehouse_1036\",\n\t\t    \"Dlg_RussianWarehouse_1037\",\n\t\t    \"Dlg_RussianWarehouse_1038\",\n\t\t    \"Dlg_RussianWarehouse_1039\",\n\t\t    \"Dlg_RussianWarehouse_1040\",\n\t\t    \"Dlg_RussianWarehouse_1041\",\n\t\t    \"Dlg_RussianWarehouse_1042\",\n\t\t    \"Dlg_RussianWarehouse_1043\",\n\t\t    \"Dlg_RussianWarehouse_1044\",\n\t\t    \"Dlg_RussianWarehouse_1045\",\n\t\t    \"Dlg_RussianWarehouse_1046\",\n\t\t    \"Dlg_RussianWarehouse_1047\",\n\t\t    \"Dlg_RussianWarehouse_1048\",\n\t\t    \"Dlg_RussianWarehouse_1049\",\n\t\t    \"Dlg_RussianWarehouse_1050\",\n\t\t    \"Dlg_RussianWarehouse_1051\",\n\t\t    \"Dlg_RussianWarehouse_1052\",\n\t\t    \"Dlg_RussianWarehouse_1053\",\n\t\t    \"Dlg_RussianWarehouse_1054\",\n\t\t    \"Dlg_RussianWarehouse_1055\",\n\t\t    \"Dlg_RussianWarehouse_1056\",\n\t\t    \"Dlg_RussianWarehouse_1057\",\n\t\t    \"Dlg_RussianWarehouse_1058\",\n\t\t    \"Dlg_RussianWarehouse_1059\",\n\t\t    \"Dlg_RussianWarehouse_1060\",\n\t\t    \"Dlg_RussianWarehouse_1061\",\n\t\t    \"Dlg_RussianWarehouse_1062\",\n\t\t    \"SfxVoxelCrack\",\n\t\t    \"Dlg_JunkyardEacAmbush_1000\",\n\t\t    \"Dlg_JunkyardEacAmbush_1001\",\n\t\t    \"Dlg_JunkyardEacAmbush_1002\",\n\t\t    \"Dlg_JunkyardEacAmbush_1003\",\n\t\t    \"Dlg_JunkyardEacAmbush_1004\",\n\t\t    \"Dlg_JunkyardEacAmbush_1005\",\n\t\t    \"Dlg_JunkyardEacAmbush_1006\",\n\t\t    \"Dlg_JunkyardEacAmbush_1007\",\n\t\t    \"Dlg_JunkyardEacAmbush_1008\",\n\t\t    \"Dlg_JunkyardEacAmbush_1009\",\n\t\t    \"Dlg_JunkyardEacAmbush_1010\",\n\t\t    \"Dlg_JunkyardEacAmbush_1011\",\n\t\t    \"Dlg_JunkyardEacAmbush_1012\",\n\t\t    \"Dlg_JunkyardEacAmbush_1013\",\n\t\t    \"Dlg_JunkyardEacAmbush_1014\",\n\t\t    \"Dlg_JunkyardEacAmbush_1015\",\n\t\t    \"Dlg_JunkyardEacAmbush_1016\",\n\t\t    \"Dlg_JunkyardEacAmbush_1017\",\n\t\t    \"Dlg_JunkyardEacAmbush_1018\",\n\t\t    \"Dlg_JunkyardEacAmbush_1019\",\n\t\t    \"Dlg_JunkyardEacAmbush_1020\",\n\t\t    \"Dlg_JunkyardEacAmbush_1021\",\n\t\t    \"Dlg_JunkyardEacAmbush_1022\",\n\t\t    \"Dlg_JunkyardEacAmbush_1023\",\n\t\t    \"Dlg_JunkyardEacAmbush_1024\",\n\t\t    \"Dlg_JunkyardEacAmbush_1025\",\n\t\t    \"Dlg_JunkyardEacAmbush_1026\",\n\t\t    \"Dlg_JunkyardEacAmbush_1027\",\n\t\t    \"Dlg_JunkyardEacAmbush_1028\",\n\t\t    \"Dlg_JunkyardEacAmbush_1029\",\n\t\t    \"Dlg_JunkyardEacAmbush_1030\",\n\t\t    \"Dlg_JunkyardEacAmbush_1031\",\n\t\t    \"Dlg_JunkyardEacAmbush_1032\",\n\t\t    \"Dlg_JunkyardEacAmbush_1033\",\n\t\t    \"Dlg_JunkyardEacAmbush_1034\",\n\t\t    \"Dlg_JunkyardEacAmbush_1035\",\n\t\t    \"Dlg_JunkyardEacAmbush_1036\",\n\t\t    \"Dlg_JunkyardEacAmbush_1037\",\n\t\t    \"Dlg_JunkyardEacAmbush_1038\",\n\t\t    \"Dlg_JunkyardEacAmbush_1039\",\n\t\t    \"Dlg_JunkyardEacAmbush_1040\",\n\t\t    \"Dlg_JunkyardEacAmbush_1041\",\n\t\t    \"Dlg_JunkyardEacAmbush_1042\",\n\t\t    \"Dlg_JunkyardEacAmbush_1043\",\n\t\t    \"Dlg_JunkyardEacAmbush_1044\",\n\t\t    \"Dlg_JunkyardEacAmbush_1045\",\n\t\t    \"Dlg_JunkyardEacAmbush_1046\",\n\t\t    \"Dlg_JunkyardEacAmbush_1047\",\n\t\t    \"Dlg_JunkyardEacAmbush_1048\",\n\t\t    \"Dlg_JunkyardEacAmbush_1049\",\n\t\t    \"Dlg_JunkyardEacAmbush_1050\",\n\t\t    \"Dlg_JunkyardEacAmbush_1051\",\n\t\t    \"Dlg_JunkyardEacAmbush_1052\",\n\t\t    \"Dlg_JunkyardEacAmbush_1053\",\n\t\t    \"Dlg_JunkyardEacAmbush_1054\",\n\t\t    \"Dlg_JunkyardEacAmbush_1055\",\n\t\t    \"Dlg_JunkyardEacAmbush_1056\",\n\t\t    \"Dlg_JunkyardEacAmbush_1057\",\n\t\t    \"Dlg_JunkyardEacAmbush_1058\",\n\t\t    \"Dlg_JunkyardEacAmbush_1059\",\n\t\t    \"Dlg_JunkyardEacAmbush_1060\",\n\t\t    \"Dlg_JunkyardEacAmbush_1061\",\n\t\t    \"Dlg_JunkyardEacAmbush_1062\",\n\t\t    \"Dlg_JunkyardEacAmbush_1063\",\n\t\t    \"Dlg_JunkyardEacAmbush_1064\",\n\t\t    \"Dlg_JunkyardEacAmbush_1065\",\n\t\t    \"Dlg_JunkyardEacAmbush_1066\",\n\t\t    \"Dlg_JunkyardEacAmbush_1067\",\n\t\t    \"Dlg_JunkyardEacAmbush_1068\",\n\t\t    \"Dlg_JunkyardEacAmbush_1069\",\n\t\t    \"Dlg_JunkyardEacAmbush_1070\",\n\t\t    \"Dlg_JunkyardEacAmbush_1071\",\n\t\t    \"Dlg_JunkyardEacAmbush_1072\",\n\t\t    \"Dlg_JunkyardEacAmbush_1073\",\n\t\t    \"Dlg_JunkyardEacAmbush_1074\",\n\t\t    \"Dlg_JunkyardEacAmbush_1075\",\n\t\t    \"Dlg_JunkyardEacAmbush_1076\",\n\t\t    \"Dlg_JunkyardEacAmbush_1077\",\n\t\t    \"Dlg_JunkyardEacAmbush_1078\",\n\t\t    \"Dlg_JunkyardEacAmbush_1079\",\n\t\t    \"Dlg_JunkyardEacAmbush_1080\",\n\t\t    \"Dlg_JunkyardEacAmbush_1081\",\n\t\t    \"Dlg_JunkyardEacAmbush_1082\",\n\t\t    \"Dlg_JunkyardEacAmbush_1083\",\n\t\t    \"Dlg_JunkyardEacAmbush_1084\",\n\t\t    \"Dlg_JunkyardEacAmbush_1085\",\n\t\t    \"Dlg_JunkyardEacAmbush_1086\",\n\t\t    \"Dlg_JunkyardEacAmbush_1087\",\n\t\t    \"Dlg_JunkyardEacAmbush_1088\",\n\t\t    \"Dlg_JunkyardEacAmbush_1089\",\n\t\t    \"Dlg_JunkyardEacAmbush_1090\",\n\t\t    \"Dlg_JunkyardEacAmbush_1091\",\n\t\t    \"Dlg_JunkyardEacAmbush_1092\",\n\t\t    \"Dlg_JunkyardEacAmbush_1093\",\n\t\t    \"Dlg_JunkyardEacAmbush_1094\",\n\t\t    \"Dlg_JunkyardEacAmbush_1095\",\n\t\t    \"Dlg_JunkyardEacAmbush_1096\",\n\t\t    \"Dlg_JunkyardEacAmbush_1097\",\n\t\t    \"Dlg_JunkyardEacAmbush_1098\",\n\t\t    \"Dlg_JunkyardEacAmbush_1099\",\n\t\t    \"Dlg_JunkyardEacAmbush_1100\",\n\t\t    \"Dlg_JunkyardEacAmbush_1101\",\n\t\t    \"Dlg_JunkyardEacAmbush_1102\",\n\t\t    \"Dlg_JunkyardEacAmbush_1103\",\n\t\t    \"Dlg_JunkyardEacAmbush_1104\",\n\t\t    \"Dlg_JunkyardEacAmbush_1105\",\n\t\t    \"Dlg_JunkyardEacAmbush_1106\",\n\t\t    \"Dlg_JunkyardEacAmbush_1107\",\n\t\t    \"Dlg_JunkyardEacAmbush_1108\",\n\t\t    \"Dlg_JunkyardEacAmbush_1109\",\n\t\t    \"Dlg_JunkyardEacAmbush_1110\",\n\t\t    \"Dlg_JunkyardEacAmbush_1111\",\n\t\t    \"Dlg_JunkyardEacAmbush_1112\",\n\t\t    \"Dlg_JunkyardEacAmbush_1113\",\n\t\t    \"Dlg_JunkyardEacAmbush_1114\",\n\t\t    \"Dlg_JunkyardEacAmbush_1115\",\n\t\t    \"Dlg_JunkyardEacAmbush_1116\",\n\t\t    \"Dlg_JunkyardEacAmbush_1117\",\n\t\t    \"Dlg_JunkyardEacAmbush_1118\",\n\t\t    \"Dlg_JunkyardEacAmbush_1119\",\n\t\t    \"Dlg_JunkyardEacAmbush_1120\",\n\t\t    \"Dlg_JunkyardEacAmbush_1121\",\n\t\t    \"Dlg_JunkyardEacAmbush_1122\",\n\t\t    \"Dlg_JunkyardEacAmbush_1123\",\n\t\t    \"Dlg_JunkyardEacAmbush_1124\",\n\t\t    \"Dlg_JunkyardEacAmbush_1125\",\n\t\t    \"Dlg_JunkyardEacAmbush_1126\",\n\t\t    \"Dlg_JunkyardEacAmbush_1127\",\n\t\t    \"Dlg_JunkyardEacAmbush_1128\",\n\t\t    \"Dlg_JunkyardEacAmbush_1129\",\n\t\t    \"Dlg_JunkyardEacAmbush_1130\",\n\t\t    \"Dlg_JunkyardEacAmbush_1131\",\n\t\t    \"Dlg_JunkyardEacAmbush_1132\",\n\t\t    \"Dlg_JunkyardEacAmbush_1133\",\n\t\t    \"Dlg_JunkyardEacAmbush_1134\",\n\t\t    \"Dlg_JunkyardEacAmbush_1135\",\n\t\t    \"Dlg_JunkyardEacAmbush_1136\",\n\t\t    \"Dlg_JunkyardEacAmbush_1137\",\n\t\t    \"Dlg_EacTransmitter_1000\",\n\t\t    \"Dlg_EacTransmitter_1001\",\n\t\t    \"Dlg_EacTransmitter_1002\",\n\t\t    \"Dlg_EacTransmitter_1003\",\n\t\t    \"Dlg_EacTransmitter_1004\",\n\t\t    \"Dlg_EacTransmitter_1005\",\n\t\t    \"Dlg_EacTransmitter_1006\",\n\t\t    \"Dlg_EacTransmitter_1007\",\n\t\t    \"Dlg_EacTransmitter_1008\",\n\t\t    \"Dlg_EacTransmitter_1009\",\n\t\t    \"Dlg_EacTransmitter_1010\",\n\t\t    \"Dlg_EacTransmitter_1011\",\n\t\t    \"Dlg_EacTransmitter_1012\",\n\t\t    \"Dlg_EacTransmitter_1013\",\n\t\t    \"Dlg_EacTransmitter_1014\",\n\t\t    \"Dlg_EacTransmitter_1015\",\n\t\t    \"Dlg_EacTransmitter_1016\",\n\t\t    \"Dlg_EacTransmitter_1017\",\n\t\t    \"Dlg_EacTransmitter_1018\",\n\t\t    \"Dlg_EacTransmitter_1019\",\n\t\t    \"Dlg_EacTransmitter_1020\",\n\t\t    \"Dlg_EacTransmitter_1021\",\n\t\t    \"Dlg_EacTransmitter_1022\",\n\t\t    \"Dlg_EacTransmitter_1023\",\n\t\t    \"Dlg_EacTransmitter_1024\",\n\t\t    \"Dlg_EacTransmitter_1025\",\n\t\t    \"Dlg_EacTransmitter_1026\",\n\t\t    \"Dlg_EacTransmitter_1027\",\n\t\t    \"Dlg_EacTransmitter_1028\",\n\t\t    \"Dlg_EacTransmitter_1029\",\n\t\t    \"Dlg_EacTransmitter_1030\",\n\t\t    \"Dlg_EacTransmitter_1031\",\n\t\t    \"Dlg_EacTransmitter_1032\",\n\t\t    \"Dlg_EacTransmitter_1033\",\n\t\t    \"Dlg_EacTransmitter_1034\",\n\t\t    \"Dlg_EacTransmitter_1035\",\n\t\t    \"Dlg_EacTransmitter_1036\",\n\t\t    \"Dlg_EacTransmitter_1037\",\n\t\t    \"Dlg_EacTransmitter_1038\",\n\t\t    \"Dlg_EacTransmitter_1039\",\n\t\t    \"Dlg_EacTransmitter_1040\",\n\t\t    \"Dlg_EacTransmitter_1041\",\n\t\t    \"Dlg_EacTransmitter_1042\",\n\t\t    \"Dlg_EacTransmitter_1043\",\n\t\t    \"Dlg_EacTransmitter_1044\",\n\t\t    \"Dlg_EacTransmitter_1045\",\n\t\t    \"Dlg_EacTransmitter_1046\",\n\t\t    \"Dlg_EacTransmitter_1047\",\n\t\t    \"Dlg_EacTransmitter_1048\",\n\t\t    \"Dlg_EacTransmitter_1049\",\n\t\t    \"Dlg_EacTransmitter_1050\",\n\t\t    \"Dlg_EacTransmitter_1051\",\n\t\t    \"Dlg_EacTransmitter_1052\",\n\t\t    \"Dlg_EacTransmitter_1053\",\n\t\t    \"Dlg_EacTransmitter_1054\",\n\t\t    \"Dlg_EacTransmitter_1055\",\n\t\t    \"Dlg_EacTransmitter_1056\",\n\t\t    \"Dlg_EacTransmitter_1057\",\n\t\t    \"Dlg_EacTransmitter_1058\",\n\t\t    \"Dlg_EacTransmitter_1059\",\n\t\t    \"Dlg_EacTransmitter_1060\",\n\t\t    \"Dlg_EacTransmitter_1061\",\n\t\t    \"Dlg_EacTransmitter_1062\",\n\t\t    \"Dlg_EacTransmitter_1063\",\n\t\t    \"Dlg_EacTransmitter_1064\",\n\t\t    \"Dlg_EacTransmitter_1065\",\n\t\t    \"Dlg_EacTransmitter_1066\",\n\t\t    \"Dlg_EacTransmitter_1067\",\n\t\t    \"Dlg_EacTransmitter_1068\",\n\t\t    \"Dlg_EacTransmitter_1069\",\n\t\t    \"Dlg_EacTransmitter_1070\",\n\t\t    \"Dlg_EacTransmitter_1071\",\n\t\t    \"Dlg_EacTransmitter_1072\",\n\t\t    \"Amb3D_GenSmallDamaged\",\n\t\t    \"Amb3D_GenSmallDestroyed\",\n\t\t    \"Amb3D_GenSmallNormal\",\n\t\t    \"Amb3D_PipeFlow01\",\n\t\t    \"Amb3D_Spark01\",\n\t\t    \"Amb3D_SteamDischarge01\",\n\t\t    \"Amb3D_SteamDischarge02\",\n\t\t    \"Amb3D_SteamDischarge03\",\n\t\t    \"Amb3D_SteamDischarge04\",\n\t\t    \"Amb3D_SteamLoop01\",\n\t\t    \"Amb3D_SteamLoop02\",\n\t\t    \"Amb3D_SteamLoop03\",\n\t\t    \"Amb3D_SteamLoop04\",\n\t\t    \"Amb3D_SteamLoop05\",\n\t\t    \"Amb3D_ThunderClapLarge\",\n\t\t    \"Amb3D_ThunderClapMed\",\n\t\t    \"Amb3D_RadioChatterAllied09_12\",\n\t\t    \"Amb3D_RadioChatterChinese13_16\",\n\t\t    \"Amb2D_Electrical01\",\n\t\t    \"Amb2D_Electrical02\",\n\t\t    \"Amb2D_EngineThrust\",\n\t\t    \"Amb2D_FanLargeDamaged\",\n\t\t    \"Amb2D_FanLargeDestroyed\",\n\t\t    \"Amb2D_FanLargeNormal\",\n\t\t    \"Amb2D_FanMediumDamaged\",\n\t\t    \"Amb2D_FanMediumDestroyed\",\n\t\t    \"Amb2D_FanMediumNormal\",\n\t\t    \"Amb2D_FanSmallDamaged\",\n\t\t    \"Amb2D_FanSmallDestroyed\",\n\t\t    \"Amb2D_FanSmallNormal\",\n\t\t    \"Amb2D_GenLargeDamaged\",\n\t\t    \"Amb2D_GenLargeDestroyed\",\n\t\t    \"Amb2D_GenLargeNormal\",\n\t\t    \"Amb2D_GenMediumDamaged\",\n\t\t    \"Amb2D_GenMediumDestroyed\",\n\t\t    \"Amb2D_GenMediumNormal\",\n\t\t    \"Amb2D_GenSmallDamaged\",\n\t\t    \"Amb2D_GenSmallDestroyed\",\n\t\t    \"Amb2D_GenSmallNormal\",\n\t\t    \"Amb2D_GenXend\",\n\t\t    \"Amb2D_GenXloop\",\n\t\t    \"Amb2D_GenXstart\",\n\t\t    \"Amb2D_PipeFlow01\",\n\t\t    \"Amb2D_PrefabFire01\",\n\t\t    \"Amb2D_RadioChatterAL01\",\n\t\t    \"Amb2D_RadioChatterAL02\",\n\t\t    \"Amb2D_RadioChatterAL03\",\n\t\t    \"Amb2D_RadioChatterAL04\",\n\t\t    \"Amb2D_RadioChatterAL05\",\n\t\t    \"Amb2D_RadioChatterAL06\",\n\t\t    \"Amb2D_RadioChatterAL07\",\n\t\t    \"Amb2D_RadioChatterAL08\",\n\t\t    \"Amb2D_RadioChatterAL09\",\n\t\t    \"Amb2D_RadioChatterAL10\",\n\t\t    \"Amb2D_RadioChatterAL11\",\n\t\t    \"Amb2D_RadioChatterAL12\",\n\t\t    \"Amb2D_RadioChatterAL13\",\n\t\t    \"Amb2D_RadioChatterAL14\",\n\t\t    \"Amb2D_RadioChatterAL15\",\n\t\t    \"Amb2D_RadioChatterAL16\",\n\t\t    \"Amb2D_RadioChatterCH01\",\n\t\t    \"Amb2D_RadioChatterCH02\",\n\t\t    \"Amb2D_RadioChatterCH03\",\n\t\t    \"Amb2D_RadioChatterCH04\",\n\t\t    \"Amb2D_RadioChatterCH05\",\n\t\t    \"Amb2D_RadioChatterCH06\",\n\t\t    \"Amb2D_RadioChatterCH07\",\n\t\t    \"Amb2D_RadioChatterCH08\",\n\t\t    \"Amb2D_RadioChatterCH09\",\n\t\t    \"Amb2D_RadioChatterCH10\",\n\t\t    \"Amb2D_RadioChatterCH11\",\n\t\t    \"Amb2D_RadioChatterCH12\",\n\t\t    \"Amb2D_RadioChatterCH13\",\n\t\t    \"Amb2D_RadioChatterCH14\",\n\t\t    \"Amb2D_RadioChatterCH15\",\n\t\t    \"Amb2D_RadioChatterCH16\",\n\t\t    \"Amb2D_RadioChatterRS01\",\n\t\t    \"Amb2D_RadioChatterRS02\",\n\t\t    \"Amb2D_RadioChatterRS03\",\n\t\t    \"Amb2D_RadioChatterRS04\",\n\t\t    \"Amb2D_RadioChatterRS05\",\n\t\t    \"Amb2D_RadioChatterRS06\",\n\t\t    \"Amb2D_RadioChatterRS07\",\n\t\t    \"Amb2D_RadioChatterRS08\",\n\t\t    \"Amb2D_RadioChatterRS09\",\n\t\t    \"Amb2D_RadioChatterRS10\",\n\t\t    \"Amb2D_RadioChatterRS11\",\n\t\t    \"Amb2D_RadioChatterRS12\",\n\t\t    \"Amb2D_RadioChatterRS13\",\n\t\t    \"Amb2D_RadioChatterRS14\",\n\t\t    \"Amb2D_RadioChatterRS15\",\n\t\t    \"Amb2D_RadioChatterRS16\",\n\t\t    \"Amb2D_Spark01\",\n\t\t    \"Amb2D_SteamDischarge01\",\n\t\t    \"Amb2D_SteamDischarge02\",\n\t\t    \"Amb2D_SteamDischarge03\",\n\t\t    \"Amb2D_SteamDischarge04\",\n\t\t    \"Amb2D_SteamLoop01\",\n\t\t    \"Amb2D_SteamLoop02\",\n\t\t    \"Amb2D_SteamLoop03\",\n\t\t    \"Amb2D_SteamLoop04\",\n\t\t    \"Amb2D_SteamLoop05\",\n\t\t    \"Amb2D_Temple1\",\n\t\t    \"Amb2D_Temple2\",\n\t\t    \"Amb2D_Temple3\",\n\t\t    \"Amb2D_ThunderClapLarge01\",\n\t\t    \"Amb2D_ThunderClapMed01\",\n\t\t    \"Amb2D_ThunderClapMed02\",\n\t\t    \"Amb2D_ThunderClapMed03\",\n\t\t    \"Amb2D_ThunderClapMed04\",\n\t\t    \"Amb2D_ThunderClapSmall01\",\n\t\t    \"Amb2D_ThunderClapSmall02\",\n\t\t    \"Amb2D_ThunderClapSmall03\",\n\t\t    \"Amb2D_ThunderClapSmall04\",\n\t\t    \"Amb2D_Welding01\",\n\t\t    \"SfxScanner\",\n\t\t    \"Dlg_EACSurveySite_0069_02\",\n\t\t    \"Dlg_EACSurveySite_0069_03\",\n\t\t    \"Dlg_JunkyardReturn_1028\",\n\t\t    \"Dlg_JunkyardReturn_1029\",\n\t\t    \"Dlg_JunkyardReturn_1030\",\n\t\t    \"Dlg_JunkyardReturn_1031\",\n\t\t    \"Dlg_JunkyardReturn_1032\",\n\t\t    \"Dlg_JunkyardReturn_1033\",\n\t\t    \"Dlg_JunkyardReturn_1034\",\n\t\t    \"Dlg_JunkyardReturn_1035\",\n\t\t    \"Dlg_JunkyardReturn_1036\",\n\t\t    \"Dlg_JunkyardReturn_1037\",\n\t\t    \"Dlg_Laika_1126\",\n\t\t    \"Dlg_ReichstagC_1022_2\",\n\t\t    \"Dlg_AlienGate_1038_2\",\n\t\t    \"Dlg_AlienGate_1067_2\",\n\t\t    \"MusSpecial_KA07\",\n\t\t    \"WepAutocanon3Fire3d_nonLoop\",\n\t\t    \"MusSpecial_KA12\",\n\t\t    \"MusSpecial_KA14\",\n\t\t    \"MusStressOrTimeRush_KA03\",\n\t\t    \"MusSpecial_KA09\",\n\t\t    \"MusSpecial_KA10\",\n\t\t    \"MusSpecial_KA11\",\n\t\t    \"MusSpecial_KA08\",\n\t\t    \"MusSpecial_KA13\",\n\t\t    \"MusHeavyFight_KA15\",\n\t\t    \"MusSpecial_KA15\",\n\t\t    \"MusSpecial_KA16\",\n\t\t    \"MusCalmAtmosphere_KA05\",\n\t\t    \t};\n\t}\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Utils/MyEnumToStringsGenerated.tt",
    "content": "﻿<#@ template debug=\"false\" hostspecific=\"true\" language=\"C#\" #>\n<#@ output extension=\".cs\" #>\n<#@ assembly name=\"System.Core\" #>\n<#@ assembly name=\"System.Xml\" #>\n<#@ assembly name=\"System.Xml.Linq\" #>\n<#@ import namespace=\"System.IO\" #>\n<#@ import namespace=\"System.Collections.Generic\" #>\n<#@ import namespace=\"System.Text.RegularExpressions\" #>\n<#@ import namespace=\"System.Linq\" #>\n<#@ import namespace=\"System.Xml\" #>\n<#@ import namespace=\"System.Xml.Linq\" #>\n<#@ import namespace=\"System.Text.RegularExpressions\" #>\n\n<#\nstring appName = \"MinerWars Enum to String Generator Template\";\nstring version = \"1.0.0.0\";\n\nstring enumPath = @\"..\\\\..\\\\..\\\\AppCode\\Game\\Audio\\MyAudio_Data.cs\";\nstring path = Path.Combine(this.Host.ResolvePath(\"\"), enumPath);\n\nstring enumName = \"MySoundCuesEnum\";\nstring name = \"Sounds\";\n\nstring file = System.IO.File.ReadAllText(path);\n\nvar capture = Regex.Match(file, \"enum \"+enumName+\"[^{]*{([^}]*)}\", RegexOptions.Singleline).Groups[1].Value;\n\nvar values = capture.Split(',');\n\n#>\n\nnamespace MinerWars.AppCode.Game.Utils\n{\n\n\t[System.CodeDom.Compiler.GeneratedCode(\"<#= appName #>\", \"<#= version #>\")]\n    static partial class MyEnumsToStrings\n\t{\n\n\tpublic static string[] <#=name#> = new string[] \n\t{ \n\t\t\t<# foreach(var item in values) \n\t\t\t{\n\t\t\t\tstring text = item.Trim();\n\t\t\t\tif (String.IsNullOrWhiteSpace(text))\n\t\t\t\t{\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (text.StartsWith(\"//\"))\n\t\t\t\t{\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (text.IndexOf(\"=\") != -1)\n\t\t\t\t{\n\t\t\t\t\ttext = text.Substring(0, text.IndexOf(\"=\")-1);\n\t\t\t\t}\n\t\t\t #>\n\"<#=text#>\",\n\t\t    <# } #>\n\t};\n\t}\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Utils/MyEnumToStringsGenerated1.cs",
    "content": "﻿\n\nnamespace MinerWars.AppCode.Game.Utils\n{\n\n\t[System.CodeDom.Compiler.GeneratedCode(\"MinerWars Enum to String Generator Template\", \"1.0.0.0\")]\n    static partial class MyEnumsToStrings\n\t{\n\n\tpublic static string[] Sounds = new string[] { \n\t\t\t\"GuiMouseClick\",\n\t\t    \"GuiMouseOver\",\n\t\t    \"GuiEditorFlyOutsideBorder\",\n\t\t    \"GuiEditorObjectAttach\",\n\t\t    \"GuiEditorObjectDelete\",\n\t\t    \"GuiEditorObjectDetach\",\n\t\t    \"GuiEditorObjectMoveInvalid\",\n\t\t    \"GuiEditorObjectMoveStep\",\n\t\t    \"GuiEditorObjectRotateStep\",\n\t\t    \"GuiEditorObjectSelect\",\n\t\t    \"GuiEditorPrefabCommit\",\n\t\t    \"GuiEditorPrefabEnter\",\n\t\t    \"GuiEditorPrefabExit\",\n\t\t    \"GuiEditorVoxelHandAdd\",\n\t\t    \"GuiEditorVoxelHandRemove\",\n\t\t    \"GuiEditorVoxelHandSoften\",\n\t\t    \"GuiEditorVoxelHandMaterial\",\n\t\t    \"GuiEditorVoxelHandSwitch\",\n\t\t    \"GuiWheelControlOpen\",\n\t\t    \"GuiWheelControlClose\",\n\t\t    \"ImpRockCollideMetal\",\n\t\t    \"ImpRockCollideRock\",\n\t\t    \"ImpBulletHitRock\",\n\t\t    \"ImpBulletHitMetal\",\n\t\t    \"ImpBulletHitGlass\",\n\t\t    \"ImpBulletHitShip\",\n\t\t    \"ImpExpHitGlass\",\n\t\t    \"ImpExpHitMetal\",\n\t\t    \"ImpExpHitShip\",\n\t\t    \"ImpExpHitRock\",\n\t\t    \"ImpShipCollideMetal\",\n\t\t    \"ImpShipCollideRock\",\n\t\t    \"ImpPlayerShipCollideMetal\",\n\t\t    \"ImpPlayerShipCollideRock\",\n\t\t    \"ImpPlayerShipCollideShip\",\n\t\t    \"ImpPlayerShipScrapeShipLoop\",\n\t\t    \"ImpPlayerShipScrapeShipRelease\",\n\t\t    \"VehShipaEngineIdle2d\",\n\t\t    \"VehShipaEngineIdle3d\",\n\t\t    \"VehShipaEngineHigh2d\",\n\t\t    \"VehShipaEngineHigh3d\",\n\t\t    \"VehShipaThrust2d\",\n\t\t    \"VehShipaThrust3d\",\n\t\t    \"VehShipaLightsOn\",\n\t\t    \"VehShipaLightsOff\",\n\t\t    \"VehShipaEngineOn\",\n\t\t    \"VehShipaEngineOff\",\n\t\t    \"VehHarvesterTubeRelease2d\",\n\t\t    \"VehHarvesterTubeRelease3d\",\n\t\t    \"VehHarvesterTubeMovingLoop2d\",\n\t\t    \"VehHarvesterTubeMovingLoop3d\",\n\t\t    \"VehHarvesterTubeColliding2d\",\n\t\t    \"VehHarvesterTubeColliding3d\",\n\t\t    \"VehHarvesterTubeCollision2d\",\n\t\t    \"VehHarvesterTubeCollision3d\",\n\t\t    \"VehHarvesterTubeImplode2d\",\n\t\t    \"VehHarvesterTubeImplode3d\",\n\t\t    \"VehToolCrusherDrillLoop2d\",\n\t\t    \"VehToolCrusherDrillLoop3d\",\n\t\t    \"VehToolCrusherDrillRelease2d\",\n\t\t    \"VehToolCrusherDrillRelease3d\",\n\t\t    \"VehToolCrusherDrillColliding2d\",\n\t\t    \"VehToolCrusherDrillColliding3d\",\n\t\t    \"VehToolCrusherDrillCollidingRelease2d\",\n\t\t    \"VehToolCrusherDrillCollidingRelease3d\",\n\t\t    \"VehToolThermalDrillLoop2d\",\n\t\t    \"VehToolThermalDrillLoop3d\",\n\t\t    \"VehToolThermalDrillRelease2d\",\n\t\t    \"VehToolThermalDrillRelease3d\",\n\t\t    \"VehToolSawCut2d\",\n\t\t    \"VehToolSawCut3d\",\n\t\t    \"VehToolSawLoop2d\",\n\t\t    \"VehToolSawLoop3d\",\n\t\t    \"VehToolSawRelease2d\",\n\t\t    \"VehToolSawRelease3d\",\n\t\t    \"VehToolLaserDrillLoop2d\",\n\t\t    \"VehToolLaserDrillLoop3d\",\n\t\t    \"VehToolLaserDrillRelease2d\",\n\t\t    \"VehToolLaserDrillRelease3d\",\n\t\t    \"WepMissileLock\",\n\t\t    \"WepMissileFly\",\n\t\t    \"WepMissileExplosion\",\n\t\t    \"WepMissileLaunch2d\",\n\t\t    \"WepMissileLaunch3d\",\n\t\t    \"WepAutocanonFire2d\",\n\t\t    \"WepAutocanonFire3d\",\n\t\t    \"WepAutocanonRel2d\",\n\t\t    \"WepAutocanonRel3d\",\n\t\t    \"WepSniperScopeZoomRel\",\n\t\t    \"WepSniperScopeZoomALoop\",\n\t\t    \"WepSniperNormFire2d\",\n\t\t    \"WepSniperHighFire2d\",\n\t\t    \"WepSniperNormFire3d\",\n\t\t    \"WepSniperHighFire3d\",\n\t\t    \"WepMineMoveALoop\",\n\t\t    \"WepUnivLaunch2d\",\n\t\t    \"WepUnivLaunch3d\",\n\t\t    \"WepArsHighShot2d\",\n\t\t    \"WepArsHighShot3d\",\n\t\t    \"WepArsNormShot2d\",\n\t\t    \"WepArsNormShot3d\",\n\t\t    \"WepBombExplosion\",\n\t\t    \"WepLargeShipAutocannonRotate\",\n\t\t    \"WepMachineGunHighFire2d\",\n\t\t    \"WepMachineGunHighFire3d\",\n\t\t    \"WepMachineGunHighRel2d\",\n\t\t    \"WepMachineGunHighRel3d\",\n\t\t    \"WepMachineGunNormFire2d\",\n\t\t    \"WepMachineGunNormFire3d\",\n\t\t    \"WepMachineGunNormRel2d\",\n\t\t    \"WepMachineGunNormRel3d\",\n\t\t    \"WepShotgunNormShot2d\",\n\t\t    \"WepShotgunNormShot3d\",\n\t\t    \"WepShotgunHighShot2d\",\n\t\t    \"WepShotgunHighShot3d\",\n\t\t    \"WepRailNormShot3d\",\n\t\t    \"WepRailNormShot2d\",\n\t\t    \"WepRailHighShot3d\",\n\t\t    \"WepRailHighShot2d\",\n\t\t    \"WepBombSmartTimer\",\n\t\t    \"WepBombSmartSmoke\",\n\t\t    \"WepBombSmartPlant\",\n\t\t    \"WepBombSmartDrone\",\n\t\t    \"WepBombGravSuck\",\n\t\t    \"WepBombFlash\",\n\t\t    \"SfxSolarWind\",\n\t\t    \"SfxHudBackcameraOn\",\n\t\t    \"SfxHudBackcameraOff\",\n\t\t    \"SfxPlayerBreath\",\n\t\t    \"SfxShipSmallExplosion\",\n\t\t    \"SfxHudReflectorRange\",\n\t\t    \"SfxHudSlowMovementOff\",\n\t\t    \"SfxHudSlowMovementOn\",\n\t\t    \"SfxHudAutolevelingOn\",\n\t\t    \"SfxHudAutolevelingOff\",\n\t\t    \"SfxHudWeaponScroll\",\n\t\t    \"SfxHudWeaponSelect\",\n\t\t    \"SfxHudRadarMode\",\n\t\t    \"SfxHudCockpitOn\",\n\t\t    \"SfxHudCockpitOff\",\n\t\t    \"SfxSpark\",\n\t\t    \"MovDoor1AClose\",\n\t\t    \"MovDoor1AOpen\",\n\t\t    \"MovDoor1BClose\",\n\t\t    \"MovDoor1BOpen\",\n\t\t    \"MovDoor2AClose\",\n\t\t    \"MovDoor2AOpen\",\n\t\t    \"MovDoor2BClose\",\n\t\t    \"MovDoor2BOpen\",\n\t\t    \"MovDoor3AClose\",\n\t\t    \"MovDoor3AOpen\",\n\t\t    \"HudFuelLowWarning\",\n\t\t    \"HudFuelCriticalWarning\",\n\t\t    \"HudOxygenLowWarning\",\n\t\t    \"HudOxygenCriticalWarning\",\n\t\t    \"HudDamageAlertWarning\",\n\t\t    \"HudDamageCriticalWarning\",\n\t\t    \"HudAmmoCriticalWarning\",\n\t\t    \"HudAmmoLowWarning\",\n\t\t    \"HudArmorCriticalWarning\",\n\t\t    \"HudArmorLowWarning\",\n\t\t    \"HudDestinationReached\",\n\t\t    \"HudRadarJammedWarning\",\n\t\t    \"SfxTargetDestroyed\",\n\t\t    \"HudRadiationWarning\",\n\t\t    \"SfxGeigerCounterHeavyLoop\",\n\t\t    \"HudEnemyAlertWarning\",\n\t\t    \"HudFriendlyFireWarning\",\n\t\t    \"HudHarvestingComplete\",\n\t\t    \"HudSolarFlareWarning\",\n\t\t    \"HudInventoryComplete\",\n\t\t    \"HudInventoryFullWarning\",\n\t\t    \"HudInventoryTransfer\",\n\t\t    \"HudObjectiveComplete\",\n\t\t    \"HudGameOver\",\n\t\t    \"HudHealthLowWarning\",\n\t\t    \"HudHealthCriticalWarning\",\n\t\t    \"SfxClaxonAlert\",\n\t\t    \"VehToolCrusherDrillIdle2d\",\n\t\t    \"VehToolCrusherDrillIdle3d\",\n\t\t    \"VehToolLaserDrillIdle2d\",\n\t\t    \"VehToolLaserDrillIdle3d\",\n\t\t    \"VehToolSawIdle2d\",\n\t\t    \"VehToolSawIdle3d\",\n\t\t    \"VehToolThermalDrillIdle2d\",\n\t\t    \"VehToolThermalDrillIdle3d\",\n\t\t    \"SfxGps\",\n\t\t    \"SfxGpsFail\",\n\t\t    \"MenuWelcome\",\n\t\t    \"MovDock1Start\",\n\t\t    \"MovDock1Loop\",\n\t\t    \"MovDock1End\",\n\t\t    \"MovDock2Start\",\n\t\t    \"MovDock2Loop\",\n\t\t    \"MovDock2End\",\n\t\t    \"MovDock3Start\",\n\t\t    \"MovDock3Loop\",\n\t\t    \"MovDock3End\",\n\t\t    \"VehCH1EngineHigh2d\",\n\t\t    \"VehCH1EngineHigh3d\",\n\t\t    \"VehCH1EngineIdle2d\",\n\t\t    \"VehCH1EngineIdle3d\",\n\t\t    \"VehEL1EngineHigh2d\",\n\t\t    \"VehEL1EngineHigh3d\",\n\t\t    \"VehEL1EngineIdle2d\",\n\t\t    \"VehEL1EngineIdle3d\",\n\t\t    \"VehEL1EngineOff\",\n\t\t    \"VehEL1EngineOn\",\n\t\t    \"VehNU1EngineHigh2d\",\n\t\t    \"VehNU1EngineHigh3d\",\n\t\t    \"VehNU1EngineIdle2d\",\n\t\t    \"VehNU1EngineIdle3d\",\n\t\t    \"ImpShipQuake\",\n\t\t    \"Amb2D_RoomLarge01\",\n\t\t    \"Amb2D_RoomLarge02\",\n\t\t    \"Amb2D_RoomLarge03\",\n\t\t    \"Amb2D_RoomLarge04\",\n\t\t    \"Amb2D_RoomLarge05\",\n\t\t    \"Amb2D_RoomMed01\",\n\t\t    \"Amb2D_RoomMed02\",\n\t\t    \"Amb2D_RoomMed03\",\n\t\t    \"Amb2D_RoomMed04\",\n\t\t    \"Amb2D_RoomMed05\",\n\t\t    \"Amb2D_RoomSmall01\",\n\t\t    \"Amb2D_RoomSmall02\",\n\t\t    \"Amb2D_RoomSmall03\",\n\t\t    \"Amb2D_RoomSmall04\",\n\t\t    \"Amb2D_StressLoop\",\n\t\t    \"Amb2D_TunnelLarge01\",\n\t\t    \"Amb2D_TunnelMedium01\",\n\t\t    \"Amb2D_TunnelSmall01\",\n\t\t    \"Amb3D_Electrical01\",\n\t\t    \"Amb3D_Electrical02\",\n\t\t    \"Amb3D_FanLargeDamaged\",\n\t\t    \"Amb3D_FanLargeDestroyed\",\n\t\t    \"Amb3D_FanLargeNormal\",\n\t\t    \"Amb3D_FanMediumDamaged\",\n\t\t    \"Amb3D_FanMediumDestroyed\",\n\t\t    \"Amb3D_FanMediumNormal\",\n\t\t    \"Amb3D_FanSmallDamaged\",\n\t\t    \"Amb3D_FanSmallDestroyed\",\n\t\t    \"Amb3D_FanSmallNormal\",\n\t\t    \"Amb3D_GenLargeDamaged\",\n\t\t    \"Amb3D_GenLargeDestroyed\",\n\t\t    \"Amb3D_GenLargeNormal\",\n\t\t    \"Amb3D_GenMediumDamaged\",\n\t\t    \"Amb3D_GenMediumDestroyed\",\n\t\t    \"Amb3D_GenMediumNormal\",\n\t\t    \"Amb3D_GenSmallDamaged\",\n\t\t    \"Amb3D_GenSmallDestroyed\",\n\t\t    \"Amb3D_GenSmallNormal\",\n\t\t    \"Amb3D_PipeFlow01\",\n\t\t    \"Amb3D_Spark01\",\n\t\t    \"Amb3D_SteamDischarge01\",\n\t\t    \"Amb3D_SteamDischarge02\",\n\t\t    \"Amb3D_SteamDischarge03\",\n\t\t    \"Amb3D_SteamDischarge04\",\n\t\t    \"Amb3D_SteamLoop01\",\n\t\t    \"Amb3D_SteamLoop02\",\n\t\t    \"Amb3D_SteamLoop03\",\n\t\t    \"Amb3D_SteamLoop04\",\n\t\t    \"Amb3D_SteamLoop05\",\n\t\t    \"Amb3D_ThunderClapLarge\",\n\t\t    \"Amb3D_ThunderClapMed\",\n\t\t    \"Amb3D_ThunderClapSmall\",\n\t\t    \"Amb3D_Welding01\",\n\t\t    \"VehToolLaserDrillColliding2d\",\n\t\t    \"VehToolLaserDrillColliding3d\",\n\t\t    \"VehToolLaserDrillCollidingRelease2d\",\n\t\t    \"VehToolLaserDrillCollidingRelease3d\",\n\t\t    \"VehToolThermalDrillColliding2d\",\n\t\t    \"VehToolThermalDrillColliding3d\",\n\t\t    \"VehToolThermalDrillCollidingRelease2d\",\n\t\t    \"VehToolThermalDrillCollidingRelease3d\",\n\t\t    \"SfxProgressHack\",\n\t\t    \"SfxCancelHack\",\n\t\t    \"SfxProgressRepair\",\n\t\t    \"SfxProgressBuild\",\n\t\t    \"SfxCancelRepair\",\n\t\t    \"SfxCancelBuild\",\n\t\t    \"Amb3D_GenXstart\",\n\t\t    \"Amb3D_GenXloop\",\n\t\t    \"SfxAlertVoc\",\n\t\t    \"Amb3D_GenXend\",\n\t\t    \"Amb3D_Temple1\",\n\t\t    \"Amb3D_Temple2\",\n\t\t    \"Amb3D_Temple3\",\n\t\t    \"SfxShipLargeExplosion\",\n\t\t    \"MusCalmAtmosphere_MM01\",\n\t\t    \"MusCalmAtmosphere_MM02\",\n\t\t    \"MusDesperateWithStress_MM01\",\n\t\t    \"MusDesperateWithStress_KA01\",\n\t\t    \"MusCalmAtmosphere_KA01\",\n\t\t    \"MusHeavyFight_MM01\",\n\t\t    \"MusHeavyFight_MM02\",\n\t\t    \"MusCalmAtmosphere_KA02\",\n\t\t    \"MusLightFight_MM01\",\n\t\t    \"MusLightFight_MM02\",\n\t\t    \"MusSadnessOrDesperation_MM01\",\n\t\t    \"MusSadnessOrDesperation_MM02\",\n\t\t    \"MusSadnessOrDesperation_KA02\",\n\t\t    \"MusSadnessOrDesperation_KA01\",\n\t\t    \"MusStealthAction_MM01\",\n\t\t    \"MusStealthAction_MM02\",\n\t\t    \"MusStealthAction_KA01\",\n\t\t    \"MusStressOrTimeRush_MM01\",\n\t\t    \"MusStressOrTimeRush_MM02\",\n\t\t    \"MusStressOrTimeRush_KA01\",\n\t\t    \"MusStressOrTimeRush_KA02\",\n\t\t    \"MusTensionBeforeAnAction_MM01\",\n\t\t    \"MusTensionBeforeAnAction_MM02\",\n\t\t    \"MusTensionBeforeAnAction_KA01\",\n\t\t    \"MusTensionBeforeAnAction_KA02\",\n\t\t    \"MusSpecial_MM01\",\n\t\t    \"MusVictory_MM01\",\n\t\t    \"MusVictory_MM02\",\n\t\t    \"MusVictory_KA01\",\n\t\t    \"MusVictory_KA02\",\n\t\t    \"MusHeavyFight_KA01\",\n\t\t    \"MusHeavyFight_KA02\",\n\t\t    \"MusCalmAtmosphere_KA03\",\n\t\t    \"MusDesperateWithStress_KA02\",\n\t\t    \"MusDesperateWithStress_KA03\",\n\t\t    \"MusDesperateWithStress_KA04\",\n\t\t    \"MusHorror_KA01\",\n\t\t    \"MusHorror_MM01\",\n\t\t    \"MusMystery_MM01\",\n\t\t    \"MusMystery_KA02\",\n\t\t    \"MusMystery_KA01\",\n\t\t    \"MusMystery_MM02\",\n\t\t    \"MusHorror_KA02\",\n\t\t    \"MusHorror_MM02\",\n\t\t    \"SfxHudAlarmIncoming\",\n\t\t    \"SfxHudAlarmDamageA\",\n\t\t    \"SfxHudAlarmDamageB\",\n\t\t    \"SfxHudAlarmDamageC\",\n\t\t    \"SfxHudAlarmDamageD\",\n\t\t    \"SfxHudAlarmDamageE\",\n\t\t    \"WepNoAmmo\",\n\t\t    \"WepCannon2d\",\n\t\t    \"WepCannon3d\",\n\t\t    \"VehCH1EngineOff\",\n\t\t    \"VehCH1EngineOn\",\n\t\t    \"VehNU1EngineOff\",\n\t\t    \"VehNU1EngineOn\",\n\t\t    \"VehToolPressureDrillBlast2d\",\n\t\t    \"VehToolPressureDrillIdle2d\",\n\t\t    \"VehToolPressureDrillRecharge2d\",\n\t\t    \"VehToolPressureDrillBlastRock2d\",\n\t\t    \"Amb3D_PrefabFire\",\n\t\t    \"SfxProgressActivation\",\n\t\t    \"SfxCancelActivation\",\n\t\t    \"Dlg_EACSurveySite_0001\",\n\t\t    \"Dlg_EACSurveySite_0002\",\n\t\t    \"Dlg_EACSurveySite_0003\",\n\t\t    \"Dlg_EACSurveySite_0004\",\n\t\t    \"Dlg_EACSurveySite_0005\",\n\t\t    \"Dlg_EACSurveySite_0006\",\n\t\t    \"Dlg_EACSurveySite_0007\",\n\t\t    \"Dlg_EACSurveySite_0008\",\n\t\t    \"Dlg_EACSurveySite_0009\",\n\t\t    \"Dlg_EACSurveySite_0010\",\n\t\t    \"Dlg_EACSurveySite_0011\",\n\t\t    \"Dlg_EACSurveySite_0012_01\",\n\t\t    \"Dlg_EACSurveySite_0012_02\",\n\t\t    \"Dlg_EACSurveySite_0013\",\n\t\t    \"Dlg_EACSurveySite_0014_01\",\n\t\t    \"Dlg_EACSurveySite_0014_02\",\n\t\t    \"Dlg_EACSurveySite_0015\",\n\t\t    \"Dlg_EACSurveySite_0016\",\n\t\t    \"Dlg_EACSurveySite_0017_01\",\n\t\t    \"Dlg_EACSurveySite_0017_02\",\n\t\t    \"Dlg_EACSurveySite_0018_01\",\n\t\t    \"Dlg_EACSurveySite_0018_02\",\n\t\t    \"Dlg_EACSurveySite_0018_03\",\n\t\t    \"Dlg_EACSurveySite_0019\",\n\t\t    \"Dlg_EACSurveySite_0020\",\n\t\t    \"Dlg_EACSurveySite_0021\",\n\t\t    \"Dlg_EACSurveySite_0022\",\n\t\t    \"Dlg_EACSurveySite_0023\",\n\t\t    \"Dlg_EACSurveySite_0024_01\",\n\t\t    \"Dlg_EACSurveySite_0024_02\",\n\t\t    \"Dlg_EACSurveySite_0025_01\",\n\t\t    \"Dlg_EACSurveySite_0025_02\",\n\t\t    \"Dlg_EACSurveySite_0026\",\n\t\t    \"Dlg_EACSurveySite_0027_01\",\n\t\t    \"Dlg_EACSurveySite_0027_02\",\n\t\t    \"Dlg_EACSurveySite_0028\",\n\t\t    \"Dlg_EACSurveySite_0029\",\n\t\t    \"Dlg_EACSurveySite_0030\",\n\t\t    \"Dlg_EACSurveySite_0031\",\n\t\t    \"Dlg_EACSurveySite_0032_01\",\n\t\t    \"Dlg_EACSurveySite_0032_02\",\n\t\t    \"Dlg_EACSurveySite_0033\",\n\t\t    \"Dlg_EACSurveySite_0034\",\n\t\t    \"Dlg_EACSurveySite_0035\",\n\t\t    \"Dlg_EACSurveySite_0036\",\n\t\t    \"Dlg_EACSurveySite_0037\",\n\t\t    \"Dlg_EACSurveySite_0038\",\n\t\t    \"Dlg_EACSurveySite_0039\",\n\t\t    \"Dlg_EACSurveySite_0040_01\",\n\t\t    \"Dlg_EACSurveySite_0040_02\",\n\t\t    \"Dlg_EACSurveySite_0041\",\n\t\t    \"Dlg_EACSurveySite_0042\",\n\t\t    \"Dlg_EACSurveySite_0043\",\n\t\t    \"Dlg_EACSurveySite_0044\",\n\t\t    \"Dlg_EACSurveySite_0045\",\n\t\t    \"Dlg_EACSurveySite_0046\",\n\t\t    \"Dlg_EACSurveySite_0047\",\n\t\t    \"Dlg_EACSurveySite_0048\",\n\t\t    \"Dlg_EACSurveySite_0049_01\",\n\t\t    \"Dlg_EACSurveySite_0049_02\",\n\t\t    \"Dlg_EACSurveySite_0050\",\n\t\t    \"Dlg_EACSurveySite_0051\",\n\t\t    \"Dlg_EACSurveySite_0052\",\n\t\t    \"Dlg_EACSurveySite_0053_01\",\n\t\t    \"Dlg_EACSurveySite_0053_02\",\n\t\t    \"Dlg_EACSurveySite_0053_03\",\n\t\t    \"Dlg_EACSurveySite_0054\",\n\t\t    \"Dlg_EACSurveySite_0055_01\",\n\t\t    \"Dlg_EACSurveySite_0055_02\",\n\t\t    \"Dlg_EACSurveySite_0056\",\n\t\t    \"Dlg_EACSurveySite_0057\",\n\t\t    \"Dlg_EACSurveySite_0058\",\n\t\t    \"Dlg_EACSurveySite_0059\",\n\t\t    \"Dlg_EACSurveySite_0060_01\",\n\t\t    \"Dlg_EACSurveySite_0060_02\",\n\t\t    \"Dlg_EACSurveySite_0061\",\n\t\t    \"Dlg_EACSurveySite_0062\",\n\t\t    \"Dlg_EACSurveySite_0063\",\n\t\t    \"Dlg_EACSurveySite_0064\",\n\t\t    \"Dlg_EACSurveySite_0065\",\n\t\t    \"Dlg_EACSurveySite_0066\",\n\t\t    \"Dlg_EACSurveySite_0067\",\n\t\t    \"Dlg_EACSurveySite_0068\",\n\t\t    \"Dlg_EACSurveySite_0069\",\n\t\t    \"Dlg_EACSurveySite_0070\",\n\t\t    \"Dlg_EACSurveySite_0071\",\n\t\t    \"Dlg_EACSurveySite_0072\",\n\t\t    \"Dlg_EACSurveySite_0073\",\n\t\t    \"Dlg_EACSurveySite_0074\",\n\t\t    \"Dlg_EACSurveySite_0075\",\n\t\t    \"Dlg_EACSurveySite_0076\",\n\t\t    \"Dlg_EACSurveySite_0077\",\n\t\t    \"Dlg_EACSurveySite_0078\",\n\t\t    \"Dlg_ChineseTransmitter_1000\",\n\t\t    \"Dlg_ChineseTransmitter_1001\",\n\t\t    \"Dlg_ChineseTransmitter_1002\",\n\t\t    \"Dlg_ChineseTransmitter_1003\",\n\t\t    \"Dlg_ChineseTransmitter_1004\",\n\t\t    \"Dlg_ChineseTransmitter_1005\",\n\t\t    \"Dlg_ChineseTransmitter_1006\",\n\t\t    \"Dlg_ChineseTransmitter_1007\",\n\t\t    \"Dlg_ChineseTransmitter_1008\",\n\t\t    \"Dlg_ChineseTransmitter_1009\",\n\t\t    \"Dlg_ChineseTransmitter_1010\",\n\t\t    \"Dlg_ChineseTransmitter_1011\",\n\t\t    \"Dlg_ChineseTransmitter_1012\",\n\t\t    \"Dlg_ChineseTransmitter_1013\",\n\t\t    \"Dlg_ChineseTransmitter_1014\",\n\t\t    \"Dlg_ChineseTransmitter_1015\",\n\t\t    \"Dlg_ChineseTransmitter_1016\",\n\t\t    \"Dlg_ChineseTransmitter_1017\",\n\t\t    \"Dlg_ChineseTransmitter_1018\",\n\t\t    \"Dlg_ChineseTransmitter_1019\",\n\t\t    \"Dlg_ChineseTransmitter_1020\",\n\t\t    \"SfxAcquireWeaponOn\",\n\t\t    \"SfxAcquireWeaponOff\",\n\t\t    \"SfxAcquireDroneOn\",\n\t\t    \"SfxAcquireDroneOff\",\n\t\t    \"SfxAcquireCameraOn\",\n\t\t    \"SfxAcquireCameraOff\",\n\t\t    \"SfxTakeAllUniversal\",\n\t\t    \"SfxTakeAllAmmo\",\n\t\t    \"SfxTakeAllFuel\",\n\t\t    \"SfxTakeAllMedkit\",\n\t\t    \"SfxTakeAllOxygen\",\n\t\t    \"SfxTakeAllRepair\",\n\t\t    \"MusLightFight_KA03\",\n\t\t    \"MusLightFight_KA04\",\n\t\t    \"MusLightFight_KA05\",\n\t\t    \"MusLightFight_KA07\",\n\t\t    \"MusLightFight_KA08\",\n\t\t    \"MusLightFight_KA10\",\n\t\t    \"MusLightFight_KA11\",\n\t\t    \"MusSpecial_MM02\",\n\t\t    \"MusSpecial_MM03\",\n\t\t    \"MusSpecial_KA01\",\n\t\t    \"MusHeavyFight_KA03\",\n\t\t    \"SfxProgressTake\",\n\t\t    \"SfxCancelTake\",\n\t\t    \"SfxProgressPut\",\n\t\t    \"SfxCancelPut\",\n\t\t    \"Amb2D_City\",\n\t\t    \"Amb2D_ComputerRoom\",\n\t\t    \"Amb2D_Factory\",\n\t\t    \"Amb2D_LostPlace\",\n\t\t    \"Amb2D_RedHeat\",\n\t\t    \"Amb2D_War\",\n\t\t    \"HudAmmoNoWarning\",\n\t\t    \"HudArmorNoWarning\",\n\t\t    \"VehToolCrusherDrillCollidingOtherRelease2d\",\n\t\t    \"VehToolCrusherDrillCollidingOtherRelease3d\",\n\t\t    \"VehToolLaserCollidingOther2d\",\n\t\t    \"VehToolLaserCollidingOther3d\",\n\t\t    \"VehToolLaserCollidingOtherRelease2d\",\n\t\t    \"VehToolLaserCollidingOtherRelease3d\",\n\t\t    \"VehToolPressureDrillBlastOther2d\",\n\t\t    \"VehToolPressureDrillBlastOther3d\",\n\t\t    \"VehToolSawCutOther2d\",\n\t\t    \"VehToolSawCutOther3d\",\n\t\t    \"VehToolSawCutOtherRelease2d\",\n\t\t    \"VehToolSawCutOtherRelease3d\",\n\t\t    \"VehToolSawCutRelease2d\",\n\t\t    \"VehToolSawCutRelease3d\",\n\t\t    \"VehToolThermalDrillCollidingOther2d\",\n\t\t    \"VehToolThermalDrillCollidingOther3d\",\n\t\t    \"VehToolThermalDrillCollidingOtherRelease2d\",\n\t\t    \"VehToolThermalDrillCollidingOtherRelease3d\",\n\t\t    \"VehToolCrusherDrillCollidingOther2d\",\n\t\t    \"VehToolCrusherDrillCollidingOther3d\",\n\t\t    \"SfxFlareLoop01\",\n\t\t    \"SfxFlareDeploy\",\n\t\t    \"Amb3D_EngineThrust\",\n\t\t    \"VehLoopDrone\",\n\t\t    \"VehLoopCamera\",\n\t\t    \"WepEpmExplosion\",\n\t\t    \"HudOxygenLeakingWarning\",\n\t\t    \"VehLoopLargeShip\",\n\t\t    \"MusLightFight_KA12\",\n\t\t    \"MusHeavyFight_KA05\",\n\t\t    \"MusSpecial_KA02\",\n\t\t    \"MusHeavyFight_KA07\",\n\t\t    \"MusSpecial_MM04\",\n\t\t    \"MusHeavyFight_KA04\",\n\t\t    \"MusSpecial_KA03\",\n\t\t    \"SfxMeteorFly\",\n\t\t    \"SfxMeteorExplosion\",\n\t\t    \"WepLargeShipAutocannonRotateRelease\",\n\t\t    \"SfxNuclearExplosion\",\n\t\t    \"Amb2D_City2\",\n\t\t    \"Amb2D_Factory2\",\n\t\t    \"MusLightFight_KA27\",\n\t\t    \"MusSpecial_KA04\",\n\t\t    \"MusSpecial_KA05\",\n\t\t    \"MusSpecial_MM05\",\n\t\t    \"VehToolNuclearDrillLoop3d\",\n\t\t    \"VehToolNuclearDrillLoop2d\",\n\t\t    \"VehToolNuclearDrillRelease3d\",\n\t\t    \"VehToolNuclearDrillRelease2d\",\n\t\t    \"VehToolNuclearDrillColliding3d\",\n\t\t    \"VehToolNuclearDrillColliding2d\",\n\t\t    \"VehToolNuclearDrillCollidingOther3d\",\n\t\t    \"VehToolNuclearDrillCollidingOther2d\",\n\t\t    \"VehToolNuclearDrillCollidingRelease3d\",\n\t\t    \"VehToolNuclearDrillCollidingRelease2d\",\n\t\t    \"VehToolNuclearDrillCollidingOtherRelease3d\",\n\t\t    \"VehToolNuclearDrillCollidingOtherRelease2d\",\n\t\t    \"VehToolNuclearDrillIdle3d\",\n\t\t    \"VehToolNuclearDrillIdle2d\",\n\t\t    \"VehToolPressureDrillBlast3d\",\n\t\t    \"VehToolPressureDrillBlastRock3d\",\n\t\t    \"VehToolPressureDrillIdle3d\",\n\t\t    \"VehToolPressureDrillRecharge3d\",\n\t\t    \"SfxPlayerDeathBeep\",\n\t\t    \"SfxPlayerDeathBreath\",\n\t\t    \"Amb2D_RacingFans\",\n\t\t    \"Dlg_EACSurveySite_1000\",\n\t\t    \"Dlg_EACSurveySite_1001\",\n\t\t    \"Dlg_EACSurveySite_1002\",\n\t\t    \"Dlg_EACSurveySite_1003\",\n\t\t    \"Amb2D_RedHeat2\",\n\t\t    \"Sht_Reich_JE_ForTheFuture\",\n\t\t    \"Sht_Reich_JE_Vanquish\",\n\t\t    \"Sht_Reich_JE_WeControl\",\n\t\t    \"Sht_Reich_JE_YouAreTheWeakLink\",\n\t\t    \"Sht_Reich_JE_YourFinalDay\",\n\t\t    \"Sht_Russian_JE_DasVidanya\",\n\t\t    \"Sht_Russian_JE_ForKremlin\",\n\t\t    \"Sht_Russian_JE_ForMotherland\",\n\t\t    \"Sht_Russian_JE_Harasho\",\n\t\t    \"Sht_Russian_JE_ShootThem\",\n\t\t    \"Sht_Russian_JE_TovaryshRemember\",\n\t\t    \"Sht_Russian_JE_UnitedAndMighty\",\n\t\t    \"Amb3D_RadioChatterAllied01_04\",\n\t\t    \"Amb3D_RadioChatterAllied05_08\",\n\t\t    \"Amb3D_RadioChatterAllied09_12\",\n\t\t    \"Amb3D_RadioChatterAllied13_16\",\n\t\t    \"Amb3D_RadioChatterChinese01_04\",\n\t\t    \"Amb3D_RadioChatterChinese05_08\",\n\t\t    \"Amb3D_RadioChatterChinese09_12\",\n\t\t    \"Amb3D_RadioChatterChinese13_16\",\n\t\t    \"Amb3D_RadioChatterRussian01_04\",\n\t\t    \"Amb3D_RadioChatterRussian05_08\",\n\t\t    \"Amb3D_RadioChatterRussian09_12\",\n\t\t    \"Amb3D_RadioChatterRussian13_16\",\n\t\t    \"MusMainMenu_KA_MM\",\n\t\t    \"Dlg_RussianTransmitter_1000\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1000\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1001\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1002\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1003\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1004\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1005\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1006\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1007\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1008\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1009\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1010\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1011\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1012\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1013\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1014\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1015\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1016\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1017\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1018\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1019\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1020\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1021\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1022\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1023\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1024\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1025\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1026\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1027\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1028\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1029\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1030\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1031\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1032\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1033\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1034\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1035\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1036\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1037\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1038\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1039\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1040\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1041\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1042\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1043\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1044\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1045\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1046\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1047\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1048\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1049\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1050\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1051\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1052\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1053\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1054\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1055\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1056\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1057\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1058\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1059\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1060\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1061\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1062\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1063\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1064\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1065\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1066\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1067\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1068\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1069\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1070\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1071\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1072\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1073\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1074\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1075\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1076\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1077\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1078\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1079\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1079b\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1080\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1081\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1082\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1083\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1084\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1085\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1086\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1087\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1088\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1089\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1090\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1091\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1092\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1093\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1094\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1095\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1096\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1097\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1098\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1099\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1100\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1101\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1102\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1103\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1104\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1105\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1106\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1107\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1108\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1109\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1110\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1111\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1112\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1113\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1114\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1115\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1116\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1117\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1118\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1119\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1120\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1121\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1122\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1123\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1124\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1125\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1126\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1127\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1128\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1129\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1130\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1131\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1132\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1133\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1134\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1135\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1136\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1137\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1138\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1139\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1140\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1141\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1142\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1143\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1144\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1145\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1146\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1147\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1148\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1149\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1150\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1151\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1152\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1153\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1154\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1155\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1156\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1157\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1158\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1159\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1160\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1161\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1162\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1163\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1164\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1165\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1166\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1167\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1168\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1169\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1170\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1171\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1172\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1173\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1174\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1175\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1176\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1177\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1178\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1179\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1180\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1181\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1182\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1183\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1184\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1185\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1186\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1187\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1188\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1189\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1190\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1191\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1192\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1193\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1194\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1195\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1196\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1197\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1198\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1199\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1200\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1201\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1202\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1203\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1204\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1205\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1206\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1207\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1208\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1209\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1210\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1211\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1212\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1213\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1214\",\n\t\t    \"Dlg_BarthsMoonTransmitter_1215\",\n\t\t    \t};\n\t}\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Utils/MyFakes.cs",
    "content": "﻿using MinerWarsMath;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing SysUtils;\nusing System;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Gameplay;\nusing MinerWars.AppCode.Game.Missions;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\n\nnamespace MinerWars.AppCode.Game.Utils\n{\n    static class MyFakes\n    {\n        //  For testing float precisions on large positions\n        public static bool TEST_STORY_MISSION_OBJECTS_AT_SECTOR_BORDER_FOR_LARGE_POSITION_TEST = false;\n        public static Vector3 TEST_STORY_MISSION_OBJECTS_LARGE_POSITION_OFFSET = new Vector3(60000, 60000, 60000);\n\n        public const bool PLAY_MMO_BUTTON_IMPLEMENTED = true;\n        public const bool PLAY_SANDBOX_BUTTON_IMPLEMENTED = true;// MyMwcFinalBuildConstants.TYPE == MyMwcFinalBuildType.TEST;\n        public const bool EDITOR_BUTTON_IMPLEMENTED = true;//MyMwcFinalBuildConstants.TYPE == MyMwcFinalBuildType.TEST;\n        public const bool PLAY_STORY_BUTTON_IMPLEMENTED = true;//MyMwcFinalBuildConstants.TYPE == MyMwcFinalBuildType.TEST;\n        public const bool PROFILE_BUTTON_IMPLEMENTED = true;//MyMwcFinalBuildConstants.TYPE == MyMwcFinalBuildType.TEST;\n        public const bool CREDITS_BUTTON_IMPLEMENTED = true;\n        public const bool LOAD_LAST_CHECKPOINT_ENABLED = true;\n        //public const bool LOAD_CHAPTER = false;\n        public const bool JOIN_FRIENDS_GAME = false;\n        public static bool DRAW_PLAYER_MINER_SHIP = true;\n        public const bool SHOW_NEW_INVENTORY_SCREEN = true;\n        public const bool DETECT_ORE_DEPOSITS_IN_VOXEL_MAPS = true;\n        public const bool RAPID_VOXEL_HAND_SHAPING_ENABLED = false;\n\n        //public const bool MAREK_TESTING_PROCEDURAL_GENERATOR = false;\n        public const bool VOXEL_IMPORT = false;\n        public static readonly string VOXEL_IMPORT_MODEL = \"Models2\\\\ObjectsStatic\\\\LargeShips\\\\LargeShip_Kai\";\n        public static readonly MyMwcVector3Int VOXEL_IMPORT_SIZE = new MyMwcVector3Int(128, 128, 128);\n\n        public static bool DEBUGDRAW_SPAWN_POINT = false;\n        public static bool SPAWN_FRIENDS = false;\n        public static bool SPAWN_POINT_INITIAL_INSERTION_IN_SCENE = false;\n\n        public const bool STRANGE_PARTICLES_WHEN_DUST_ON_STATIC_ASTEROIDS = false;\n\n        public const bool EDITOR_UNDO_REDO_IMPLEMENTED = false;\n        public const bool EDITOR_CREATE_ASTEROID_IMPLEMENTED = true;\n        public const bool EDITOR_ADD_PREFAB_CONTAINER_IMPLEMENTED = true;\n        public const bool EDITOR_ADD_PREFAB_MODULE_IMPLEMENTED = true;\n        public const bool EDITOR_FOG_SETTINGS_IMPLEMENTED = false;\n        public const bool EDITOR_SUN_SETTINGS_IMPLEMENTED = false;\n        public const bool EDITOR_SAVE_ASTEROID_TO_FILE_IMPLEMENTED = false;\n        public const bool EDITOR_CLEAR_ASTEROID_CONTENT_IMPLEMENTED = false;\n        public const bool EDITOR_CLEAR_ASTEROID_MATERIALS_IMPLEMENTED = false;\n        public const bool EDITOR_COPY_SELECTED_IMPLEMENTED = true;\n        public const bool EDITOR_DISABLE_UNDO_REDO = false;\n        public const bool EDITOR_ENABLE_HOWTO_NOTIFICATION = false;\n\n        public static bool SMALL_SHIPS_GLARE = false; // simon - turn on glare small ship reflectors\n\n        //If enabled, you can always travel with solarmap (only for debugging)\n        public static bool ENABLE_SOLAR_MAP = false;\n\n        public static bool USE_LARGE_SHIP_HANGAR_DETECTION = true;\n\n        public static readonly MyMwcVoxelMaterialsEnum? SINGLE_VOXEL_MATERIAL = null;//MyMwcVoxelMaterialsEnum.Ice_01;\n\n        // Allows to draw circle faction areas in solar maps, also activates tool for input of these areas\n        public static bool DRAW_FACTION_AREAS_IN_SOLAR_MAP = false;\n\n        // Loads all model textures immediately\n        public const bool LOAD_TEXTURES_IMMEDIATELY = true;\n        public const bool LOAD_MODELS_IMMEDIATELY = true;\n\n        // Tests multiple load/unload of sectors and writes result in the log\n        public const bool TEST_MULTIPLE_LOAD_UNLOAD = false;\n        public const Missions.MyMissionID TEST_MULTIPLE_LOAD_UNLOAD_MISSION = MyMissionID.FORT_VALIANT;\n\n        // Tests multiple save/load and checks whether all entities in scene remains (by comparing EntityId sets), go to editor and load STORY sector you want to test\n        public const bool TEST_MULTIPLE_SAVE_LOAD = false;\n\n        // Tests mission gameplay\n        // Starts in Russian Assault, going with ctrl+del through all objectives, then next mission\n        // until game end. \n        public const bool TEST_MISSION_GAMEPLAY = false;\n        public const int TEST_MISSION_GAMEPLAY_AUTO_KILLS = 2;\n        public const int TEST_MISSION_GAMEPLAY_DURATION = 3000; //duration of one test in ms\n\n        // Default cheats\n        public static MyGameplayCheatsEnum? DEFAULT_CHEATS = null;//MyGameplayCheatsEnum.ALL_WEAPONS;\n\n        // Disables auto save in story, still can save by pressing CTRL+F5 when developer keys are enabled\n        public static bool DISABLE_AUTO_SAVE = false;\n\n        // Disable keeping spectator in sector boundaries\n        public static bool DISABLE_SPECTATOR_IN_BOUNDARIES = false;\n\n        public const bool MANY_DEBRIS = false;\n\n        // Disables player head shake (good when you're testing shooting)\n        public static bool DISABLE_CAMERA_HEADSHAKE = false;\n\n        public static bool ALT_AS_DEBUG_KEY = true;\n        public static bool CONTROLS_MOVE_ENABLED = false;\n\n        public static bool DEBUG_DRAW_COLLIDING_ENTITIES = false;\n\n        public static bool TEST_MULTILINE_CONTROL = false;\n\n        public static bool TEST_DNS_UNAVAILABLE = false;\n\n        public static bool OPTIMIZATION_FOR_300_SMALLSHIPS = true;\n\n        public static bool VOXEL_MAP_SMALLER_BOUNDARIES = true;\n\n        public static bool FAKE_SCREEN_ENABLED = false;\n\n        public static bool ENABLE_OBJECT_COUNTS_LIMITS = false;\n\n        public static bool SHOW_UNPOWERED_PREFABS = false;\n\n        public static bool SIMPLIFY_VOXEL_MESH = false;\n\n        public static bool ADD_DRONES_TO_INVENTORY = false;\n\n        public static bool HIDE_CENTER_SECTOR_MARKS = false;\n\n        public static bool ENABLE_LOADING_AFTER_TRADING = false;\n\n        public static bool DRAW_WEAPONS = true;\n\n        public static bool ENABLE_PREFABS_AUTO_CHARGING = false;\n\n        public static bool ENABLE_REPLAY_ANIMATION_IN_LOADED_SECTOR = false;\n\n        public static bool ENABLE_GENERATED_WAYPOINTS_IN_EDITOR = false;\n\n        public static bool ENABLE_BOTS_FOV_WHEN_RADAR_JAMMER = true;\n\n        public static bool INDESTRUCTIBLE_PREFABS = false;\n\n        public static bool GPS_ALWAYS_ON = false;\n\n        public static bool ENABLE_RANDOM_METEOR_SHOWER = false;\n\n        public static bool ENABLE_RANDOM_ICE_STORM = false;\n\n        public static bool ENABLE_EXTRACT_PREFABS = true;\n\n        //public static bool SIMPLE_DEBUG_SCREEN = MyMwcFinalBuildConstants.GetValueForBuildType(true, true, false);\n        public static bool SIMPLE_DEBUG_SCREEN = false; //enable everywhere, there is no obfuscation now\n\n        public static bool DISABLE_BOT_MANEUVERING = false;\n\n        public static bool ENABLE_MENU_VIDEO_BACKGROUND = true;\n\n        public static bool SHOW_HUD_NAMES = true;\n\n        public static bool SHOW_HUD_DISTANCES = true;\n\n        public static bool POST_MYENTITYANIMATOR_VALUES = false;\n\n        public static bool ENABLE_DETECTORS_IN_EDITOR_GAME = true;\n\n        public static bool ENABLE_BACK_CAMERA = true;\n\n        public static bool ENABLE_BOT_MISSILES_AND_CANNON = true;\n\n        // This will save mission checkpoints as templates on each save\n        public static bool CHAPTER_ON_EACH_MISSION = true;\n\n        public static bool ENABLE_MULTIPLAYER = true;\n\n        public static bool HIGHLIGHT_WRONG_MODELS = false;\n\n        public static bool ENABLE_GENERATED_ASTEROIDS = true;\n\n        public static bool ENABLE_AUTOSKIPPING_ENDMISSION_DIALOGUE = false;\n\n        public static bool ENABLE_VOXEL_TRIANGLE_CACHING = false;\n\n        /// <summary>\n        /// Use this when you want to render gui previews with the renderer and you want to have 0 alpha for the background.\n        /// </summary>\n        public static bool RENDER_PREVIEWS_WITH_CORRECT_ALPHA = false;\n\n        public static bool DRAW_TESTED_TRIANGLES_IN_VOXEL_LINE_INTERSECTION = false;\n        public static bool DRAW_TESTED_CELLS_IN_VOXEL_LINE_INTERSECTION = false;\n\n        public const bool REDUCED_RENDER_CELL_SIZE = false;\n\n        public static bool ENABLE_BUILDER_MODE = false;\n\n        public static float BOT_MISSILE_FIRING_RANGE_MIN = 200;\n\n        public static bool USE_LONG_SOUND_DISTANCE = false;\n\n        public const float LONG_SOUND_DISTANCE = 20000.0f;\n\n        public const bool CULL_EVERY_RENDER_CELL = false;\n        public static bool USE_DOMINANT_NORMAL_OFFSET_FOR_MODELS = false;\n\n        public static bool MULTIPLAYER_LONG_TIMEOUT = false; // for debugging to prevent disconnect\n        \n        public static CommonLIB.AppCode.ObjectBuilders.MyGameplayDifficultyEnum DIFFICULTY_FOR_F12_MISSIONS = CommonLIB.AppCode.ObjectBuilders.MyGameplayDifficultyEnum.NORMAL;\n\n        public static bool ENABLE_VISIBLE_SPAWNPOINT_DEACTIVATION = false;\n\n        public static bool ENABLE_RANDOM_STATIONS_IN_SOLAR_SYSTEM = false;\n\n        public static bool ENABLE_REFILL_PLAYER_TO_MAX = false;\n\n        public static bool MULTIPLAYER_DISABLED = false;\n\n        public static bool DRAW_CROSSHAIR_HORIZONTAL_LINE = false;\n\n        public static bool ENABLE_REFILL_PLAYER_IN_MOTHERSHIP = false;\n\n        public static MyMwcObjectBuilder_FactionEnum? SHOUTS_PREFERED_FACTION = null;//MyMwcObjectBuilder_FactionEnum.None; // null to disable\n\n        public static bool ENABLE_SHOUT = true;\n\n        public static bool ENABLE_DISPLAYING_ORE_ON_HUD = true && !MyFakes.MWBUILDER;\n\n        //public static bool MW25D = true;\n        public static bool MW25DCorrectVoxelPosition = false;\n\n        public static bool ENABLE_MULTIPLAYER_RELAY = true;\n        public static bool MULTIPLAYER_RELAY_TEST = false;\n        public static bool MULTIPLAYER_SIMULATE_LAGS = false;\n\n        public static bool MULTIPLAYER_CHEATS_ENABLED = false;\n        public static bool ENABLE_DEBUG_DIALOGS = false;\n\n        public static bool SET_ACTOR_PROGRESS = true;\n\n        public static bool BOT_USE_FLASH_BOMBS = true;\n        public static bool BOT_USE_SMOKE_BOMBS = true;\n        public static bool BOT_USE_HOLOGRAMS = false;\n\n        public const bool MWBUILDER = false;\n        public static readonly MyMwcVector3Int MWBUILDER_SECTOR = new MyMwcVector3Int(18,18,18);\n        public const bool MWCURIOSITY = false;\n\n        public static Vector3? GRAVITATION = null;\n\n        public static bool DUMP_MISSING_OBJECTS = true;\n        public static bool SHOW_MISSING_OBJECTS = true;\n\n        public static bool ENABLE_DEBUG_INFLUENCE_SPHERES_SOUNDS = false;\n\n        public static bool ENABLE_ENTITY_ID_CHANGE = false;\n\n        public const bool ENABLE_WARNING_EXPLANATION = false;\n\n        public static bool ENABLE_LOGOS = true;\n\n        public static bool ENABLE_INTRO = true;\n\n        /// <summary>\n        /// Resets steam stats when game is started\n        /// MUST BE FALSE in PUBLIC build.\n        /// </summary>\n        public static bool RESET_STEAM_STATS = false;\n\n        // Models used in new scene arent unloaded\n        public static bool UNLOAD_OPTIMIZATION_KEEP_USED_MODELS = true;\n\n        // When true, static asteroid models are not unloaded\n        public static bool UNLOAD_OPTIMIZATION_KEEP_STATIC_ASTEROIDS = false;\n\n        // When true, weapons, debris, cargo boxes and projectiles are not unloaded\n        public static bool UNLOAD_OPTIMIZATION_KEEP_COMMON_MODELS = false;\n\n        //Fixed by default, unfixed for profiling\n        public static bool FIXED_TIMESTEP = true;\n\n        //Defines how much content will be removed from voxel in explosion\n        //0.0f = nothing removed, 1.0f = everything removed (default)\n        public static float VOXELS_REMOVE_RATIO = 1.0f;\n\n        public static bool ENABLE_GLOBAL_EVENTS = true;\n\n        public static bool CUBE_EDITOR = false;\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Utils/MyFullscreenQuad.cs",
    "content": "﻿using System;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Effects;\nusing MinerWars.AppCode.Game.Utils.VertexFormats;\nusing MinerWars.AppCode.Game.Managers;\n\nusing SharpDX;\nusing SharpDX.Direct3D9;\nusing SharpDX.Toolkit;\nusing SharpDX.Toolkit.Graphics;\n\n\nnamespace MinerWars.AppCode.Game.Utils\n{\n    using Vector2 = MinerWarsMath.Vector2;\n    using Vector3 = MinerWarsMath.Vector3;\n    using Vector4 = MinerWarsMath.Vector4;\n    using Rectangle = MinerWarsMath.Rectangle;\n    using Matrix = MinerWarsMath.Matrix;\n    using Color = MinerWarsMath.Color;\n    using BoundingBox = MinerWarsMath.BoundingBox;\n    using BoundingSphere = MinerWarsMath.BoundingSphere;\n    using BoundingFrustum = MinerWarsMath.BoundingFrustum;\n\n    public class MyFullScreenQuad\n    {\n        VertexBuffer m_vertexBuffer;\n\n        /// <summary>\n        /// Gets the quad's vertex buffer\n        /// </summary>\n        public VertexBuffer VertexBuffer\n        {\n            get { return m_vertexBuffer; }\n        }\n\n        public void Dispose()\n        {\n            if (m_vertexBuffer != null) m_vertexBuffer.Dispose();\n        }\n\n\n        /// <summary>\n        /// Creates an instance of FullScreenQuad\n        /// </summary>\n        /// <param name=\"graphicsDevice\">The GraphicsDevice to use for creating resources</param>\n        public MyFullScreenQuad()\n        {\n            CreateFullScreenQuad(MyMinerGame.Static.GraphicsDevice);\n        }\n\n        /// <summary>\n        /// Draws the full screen quad\n        /// </summary>\n        /// <param name=\"graphicsDevice\">The GraphicsDevice to use for rendering</param>\n        public void Draw(MyEffectBase effect)\n        {\n            \n\n            // Set the vertex buffer and declaration\n            MyMinerGame.Static.GraphicsDevice.VertexDeclaration = MyVertexFormatFullScreenQuad.VertexDeclaration;\n            MyMinerGame.Static.GraphicsDevice.SetStreamSource(0, m_vertexBuffer, 0, MyVertexFormatFullScreenQuad.Stride);\n\n            effect.Begin();\n            // Draw primitives\n            MyMinerGame.Static.GraphicsDevice.DrawPrimitives(PrimitiveType.TriangleStrip, 0, 2);\n\n            effect.End();\n\n            MyPerformanceCounter.PerCameraDraw.TotalDrawCalls++;\n        }\n\n\n        /// <summary>\n        /// Creates the VertexBuffer for the quad\n        /// </summary>\n        /// <param name=\"graphicsDevice\">The GraphicsDevice to use</param>\n        public void CreateFullScreenQuad(Device graphicsDevice)\n        {\n            // Create a vertex buffer for the quad, and fill it in\n            m_vertexBuffer = new VertexBuffer(graphicsDevice, MyVertexFormatFullScreenQuad.Stride * 4, Usage.WriteOnly, VertexFormat.None, Pool.Default);\n            m_vertexBuffer.DebugName = \"FullScreenQuad\";\n            MyVertexFormatFullScreenQuad[] vbData = new MyVertexFormatFullScreenQuad[4];\n\n            // Upper right\n            vbData[0].Position = new Vector3(1, 1, 1);\n            vbData[0].TexCoordAndCornerIndex = new Vector3(1, 0, 1);\n\n            // Lower right\n            vbData[1].Position = new Vector3(1, -1, 1);\n            vbData[1].TexCoordAndCornerIndex = new Vector3(1, 1, 2);\n\n            // Upper left\n            vbData[2].Position = new Vector3(-1, 1, 1);\n            vbData[2].TexCoordAndCornerIndex = new Vector3(0, 0, 0);\n\n            // Lower left\n            vbData[3].Position = new Vector3(-1, -1, 1);\n            vbData[3].TexCoordAndCornerIndex = new Vector3(0, 1, 3);\n\n\n            m_vertexBuffer.Lock(0, 0, LockFlags.None).WriteRange(vbData);\n            m_vertexBuffer.Unlock();\n        }\n\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Utils/MyGraphicTest.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWarsMath.Graphics;\nusing SysUtils.Utils;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Utils;\n\nusing SysUtils;\nusing SharpDX.Direct3D9;\n\n\nnamespace MinerWars.AppCode.Game.Utils\n{\n    \n\n    public class MyGraphicTest\n    {\n        private UInt32 m_VertexShaderVersionMinor;\n        private UInt32 m_VertexShaderVersionMajor;\n        private UInt32 m_PixelShaderVersionMinor;\n        private UInt32 m_PixelShaderVersionMajor;\n        private bool m_SeparateAlphaBlend;\n        private bool m_DestBlendSrcAlphaSat;\n        private UInt32 m_MaxPrimitiveCount;\n        private bool m_IndexElementSize32;\n        private int m_MaxVertexStreams;\n        private int m_MaxStreamStride;\n        private int m_MaxTextureSize;\n        private int m_MaxVolumeExtent;\n        private int m_MaxTextureAspectRatio;\n        private int m_MaxVertexSamplers;\n        private int m_MaxRenderTargets;\n        private bool m_NonPow2Unconditional;\n        private bool m_NonPow2Cube;\n        private bool m_NonPow2Volume;\n        private List<Format> m_ValidTextureFormats;\n        private List<Format> m_ValidCubeFormats;\n        private List<Format> m_ValidVolumeFormats;\n        private List<Format> m_ValidVertexTextureFormats;\n        private List<Format> m_InvalidFilterFormats;\n        private List<Format> m_InvalidBlendFormats;\n        private List<DeclarationType> m_ValidVertexFormats;\n\n        public int MaxTextureSize { get; private set; }\n        public bool Rgba1010102Supported { get; private set; }\n        public bool MipmapNonPow2Supported { get; private set; }\n\n        public MyGraphicTest()\n        {\n            MaxTextureSize = 2048;\n            Rgba1010102Supported = false;\n            MipmapNonPow2Supported = false;\n        }\n\n        // Testing function call - creates DX9 device & present test:\n        public bool TestDX()\n        {\n            bool isGraphicsSupported = true;\n            MyMwcLog.WriteLine(\"MyGraphicTest.TestDX() - START\");\n            MyMwcLog.IncreaseIndent();\n\n            PresentParameters newPresentParameters;\n            Direct3D d3dh = null;\n            Device d3d = null;\n\n            try\n            {\n                MyMwcLog.WriteLine(\"Direct3D call\");\n                d3dh = new Direct3D();\n                MyMwcLog.WriteLine(\"Direct3D call end\");\n\n                if (d3dh == null)\n                {\n                    throw new Exception(\"Cannot create Direct3D object\");\n                }\n                else\n                    MyMwcLog.WriteLine(\"d3dh handle ok \");\n\n                // DX:\n                newPresentParameters = new PresentParameters();\n                newPresentParameters.Windowed = true;\n                newPresentParameters.InitDefaults();\n\n                d3d = new Device(d3dh, 0, DeviceType.Hardware, IntPtr.Zero, CreateFlags.HardwareVertexProcessing, newPresentParameters);\n\n                if (d3d == null)\n                {\n                    throw new Exception(\"Cannot create Direct3D Device\");\n                }\n                else\n                    MyMwcLog.WriteLine(\"d3d handle ok \");\n\n                isGraphicsSupported &= !TestCapabilities(d3d, d3dh);\n\n                MaxTextureSize = d3d.Capabilities.MaxTextureWidth;\n\n                Rgba1010102Supported = d3dh.CheckDeviceFormat(0, DeviceType.Hardware, Format.X8R8G8B8, Usage.RenderTarget, ResourceType.Surface, Format.A2R10G10B10);\n                MipmapNonPow2Supported = !d3d.Capabilities.TextureCaps.HasFlag(TextureCaps.Pow2) &&\n                    !d3d.Capabilities.TextureCaps.HasFlag(TextureCaps.NonPow2Conditional) &&\n                    d3d.Capabilities.TextureCaps.HasFlag(TextureCaps.MipMap);\n            }\n            catch (Exception ex)\n            {\n                MyMwcLog.WriteLine(\"Exception throwed by DX test. Source: \" + ex.Source);\n                MyMwcLog.WriteLine(\"Message: \" + ex.Message);\n                MyMwcLog.WriteLine(\"Inner exception: \" + ex.InnerException);\n                MyMwcLog.WriteLine(\"Exception details\" + ex.ToString());\n                //consider returning error here\n                //retValue = false;\n            }\n            finally\n            {\n                if (d3dh != null)\n                {\n                    d3dh.Dispose();\n                    d3dh = null;\n                }\n                if (d3d != null)\n                {\n                    d3d.Dispose();\n                    d3d = null;\n                }\n            }\n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyGraphicTest.TestDX() - END\");\n\n            return isGraphicsSupported;\n        }\n\n        // Testing values for correct Reach: \n        private void SetReachTestSettings()\n        {\n            {\n                m_VertexShaderVersionMinor = 0;\n                m_VertexShaderVersionMajor = 2;\n                m_PixelShaderVersionMinor = 0;\n                m_PixelShaderVersionMajor = 2;\n                m_SeparateAlphaBlend = false;\n                m_DestBlendSrcAlphaSat = false;\n                m_MaxPrimitiveCount = 65535;\n                m_IndexElementSize32 = false;\n                m_MaxVertexStreams = 16;\n                m_MaxStreamStride = 255;\n                m_MaxTextureSize = 2048;\n                m_MaxVolumeExtent = 0;\n                m_MaxTextureAspectRatio = 2048;\n                m_MaxVertexSamplers = 0;\n                m_MaxRenderTargets = 1;\n                m_NonPow2Unconditional = false;\n                m_NonPow2Cube = false;\n                m_NonPow2Volume = false;\n                m_ValidTextureFormats = new List<Format>();\n                m_ValidTextureFormats.Add(Format.A8R8G8B8);\n                m_ValidTextureFormats.Add(Format.R5G6B5);\n                m_ValidTextureFormats.Add(Format.A1R5G5B5);\n                m_ValidTextureFormats.Add(Format.A4R4G4B4);\n                m_ValidTextureFormats.Add(Format.Dxt1);\n                m_ValidTextureFormats.Add(Format.Dxt3);\n                m_ValidTextureFormats.Add(Format.Dxt5);\n                m_ValidTextureFormats.Add(Format.Q8W8V8U8);\n                /*(SurfaceFormat.Color,SurfaceFormat.Bgr565,SurfaceFormat.Bgra5551,SurfaceFormat.Bgra4444,\n                    SurfaceFormat.Dxt1, SurfaceFormat.Dxt3, SurfaceFormat.Dxt5,\n                    SurfaceFormat.NormalizedByte2, SurfaceFormat.NormalizedByte4);*/\n                m_ValidCubeFormats = new List<Format>();\n                m_ValidCubeFormats.Add(Format.A8R8G8B8);\n                m_ValidCubeFormats.Add(Format.R5G6B5);\n                m_ValidCubeFormats.Add(Format.A1R5G5B5);\n                m_ValidCubeFormats.Add(Format.A4R4G4B4);\n                m_ValidCubeFormats.Add(Format.Dxt1);\n                m_ValidCubeFormats.Add(Format.Dxt3);\n                m_ValidCubeFormats.Add(Format.Dxt5);\n                /*(SurfaceFormat.Color,SurfaceFormat.Bgr565,SurfaceFormat.Bgra5551,SurfaceFormat.Bgra4444,\n                    SurfaceFormat.Dxt1, SurfaceFormat.Dxt3, SurfaceFormat.Dxt5);*/\n                m_ValidVolumeFormats = new List<Format>();\n                m_ValidVertexTextureFormats = new List<Format>();\n                m_InvalidFilterFormats = new List<Format>();\n                m_InvalidBlendFormats = new List<Format>();\n                m_ValidVertexFormats = new List<DeclarationType>();\n                m_ValidVertexFormats.Add(DeclarationType.Color);\n                m_ValidVertexFormats.Add(DeclarationType.Float1);\n                m_ValidVertexFormats.Add(DeclarationType.Float2);\n                m_ValidVertexFormats.Add(DeclarationType.Float3);\n                m_ValidVertexFormats.Add(DeclarationType.Float4);\n                m_ValidVertexFormats.Add(DeclarationType.UByte4N);\n                m_ValidVertexFormats.Add(DeclarationType.Short2);\n                m_ValidVertexFormats.Add(DeclarationType.Short4);\n                m_ValidVertexFormats.Add(DeclarationType.Short2N);\n                m_ValidVertexFormats.Add(DeclarationType.Short4N);\n                m_ValidVertexFormats.Add(DeclarationType.HalfTwo);\n                m_ValidVertexFormats.Add(DeclarationType.HalfFour);\n            }\n        }\n\n         // Same settings as Reach but with pixel & vertex shaders v 3_0 and above:\n        private void SetMinerWarsTestSettings()\n        {\n            // same as Reach but with pixel & vertex sahder >=3.0:\n            SetReachTestSettings();\n            {\n                m_VertexShaderVersionMinor = 0;\n                m_VertexShaderVersionMajor = 3;\n                m_PixelShaderVersionMinor = 0;\n                m_PixelShaderVersionMajor = 3;\n            }\n        }\n\n        // Test profile:\n        private bool TestCapabilities(Device d3d, Direct3D d3dh)\n        {\n            SetMinerWarsTestSettings();\n            return TestCurrentSettings(d3d, d3dh);\n        }\n\n        // Own DX capability testing function:\n        private bool TestCurrentSettings(Device d3d, Direct3D d3dh)\n        {\n            MyMwcLog.WriteLine(\"MyGraphicTest.TestCurrentSettings() - START\");\n            MyMwcLog.IncreaseIndent();\n\n            bool isError = false;\n\n            // Write adapter information to the LOG file:\n            MyMwcLog.WriteLine(\"Adapters count: \" + d3dh.AdapterCount);\n            MyMwcLog.WriteLine(\"Adapter:\");\n                                 \n            MyMwcLog.IncreaseIndent();\n            for(int i = 0; i < d3dh.AdapterCount; i++)\n            {\n                var detail = d3dh.GetAdapterIdentifier(i);\n                if (detail != null)\n                {\n           \n                    MyMwcLog.WriteLine(\"Ordinal ID: \" + detail.DeviceId);\n                    MyMwcLog.WriteLine(\"Description: \" + detail.Description);\n                    MyMwcLog.WriteLine(\"Vendor ID: \" + detail.VendorId);\n                    MyMwcLog.WriteLine(\"Device name: \" + detail.DeviceName);\n                    MyMwcLog.WriteLine(\"Device identifier: \" + detail.DeviceIdentifier.ToString());\n                    MyMwcLog.WriteLine(\"Driver name: \" + detail.Driver);\n                    MyMwcLog.WriteLine(\"Driver version: \" + detail.DriverVersion);\n                    MyMwcLog.WriteLine(\"Identifier of the adapret chip: \" + detail.DeviceId);\n                    MyMwcLog.WriteLine(\"Adapter certified: \" + (detail.Certified ? \"YES\" : \"NO\"));\n                    if (detail.Certified) MyMwcLog.WriteLine(\"Certification date: \" + detail.CertificationDate);\n                    MyMwcLog.WriteLine(\"Adapter revision: \" + detail.Revision);\n                    MyMwcLog.WriteLine(\"Subsystem ID: \" + detail.SubsystemId);\n                    MyMwcLog.WriteLine(\"WHQL level: \" + detail.WhqlLevel);\n                    MyMwcLog.WriteLine(\"Vertex shader version: \" + d3d.Capabilities.PixelShaderVersion.Major + \".\" + d3d.Capabilities.PixelShaderVersion.Minor);\n                    MyMwcLog.WriteLine(\"Pixel shader version:  \" + d3d.Capabilities.PixelShaderVersion.Major + \".\" + d3d.Capabilities.PixelShaderVersion.Minor);\n                    MyMwcLog.WriteLine(\"Max primitives count:  \" + d3d.Capabilities.MaxPrimitiveCount);\n                    MyMwcLog.WriteLine(\"Max texture width:     \" + d3d.Capabilities.MaxTextureWidth);\n                    MyMwcLog.WriteLine(\"Max texture height:    \" + d3d.Capabilities.MaxTextureHeight);\n                    MyMwcLog.WriteLine(\"Max vertex streams:    \" + d3d.Capabilities.MaxStreams);\n                    MyMwcLog.WriteLine(\"Max render targets:    \" + d3d.Capabilities.SimultaneousRTCount);\n                }\n            }\n            MyMwcLog.DecreaseIndent();\n\n            \n            StringBuilder deviceAbility = new StringBuilder();\n\n            // Test only shared versions from now:\n            // Test vertex shader version:\n            if (!(d3d.Capabilities.VertexShaderVersion.Major >= m_VertexShaderVersionMajor &&\n                d3d.Capabilities.VertexShaderVersion.Minor >= m_VertexShaderVersionMinor))\n            {\n                MyMessageBox.Show(MyTextConstants.APP_NAME, MyTextConstants.REQUIRE_PIXEL_SHADER_3);\n                MyMwcLog.WriteLine(MyTextConstants.REQUIRE_PIXEL_SHADER_3);\n                isError = true;\n            }\n            // Test pixel shader version:\n            if (!(d3d.Capabilities.PixelShaderVersion.Major >= m_PixelShaderVersionMajor &&\n                d3d.Capabilities.PixelShaderVersion.Minor >= m_PixelShaderVersionMinor))\n            {\n                MyMwcLog.WriteLine(MyTextConstants.REQUIRE_VERTEX_SHADER_3);\n                isError = true;\n            }\n            // Test basic rendering caps:\n            if (d3d.Capabilities.MaxPrimitiveCount < m_MaxPrimitiveCount)\n            {\n                MyMwcLog.WriteLine(\"MaxPrimitiveCount smaller than needed\");\n                isError = true;\n            }\n            if (d3d.Capabilities.MaxStreams < m_MaxVertexStreams)\n            {\n                MyMwcLog.WriteLine(\"MaxVertexStreams smaller than needed\");\n                isError = true;\n            }\n            if (d3d.Capabilities.MaxStreamStride < m_MaxStreamStride)\n            {\n                MyMwcLog.WriteLine(\"MaxStreamStride smaller than needed\");\n                isError = true;\n            }\n            if (d3d.Capabilities.MaxVertexIndex < (m_IndexElementSize32 ? 16777214 : 65634))\n            {\n                MyMwcLog.WriteLine(\"MaxVertexIndex smaller than needed\");\n                isError = true;\n            }\n            if (!(d3d.Capabilities.DeviceCaps2.HasFlag(DeviceCaps2.CanStretchRectFromTextures)))\n            {\n                MyMwcLog.WriteLine(\"Device doesn't have  RectFromTextures\");\n                isError = true;\n            }\n            if (!(d3d.Capabilities.DeviceCaps2.HasFlag(DeviceCaps2.StreamOffset)))\n            {\n                MyMwcLog.WriteLine(\"Device doesn't have StreamOffset ability\");\n                isError = true;\n            }\n            if (!(d3d.Capabilities.RasterCaps.HasFlag(RasterCaps.DepthBias)))\n            {\n                MyMwcLog.WriteLine(\"Device doesn't have DepthBias ability in RasterCaps\");\n                isError = true;\n            }\n            if (!(d3d.Capabilities.RasterCaps.HasFlag(RasterCaps.MipMapLodBias)))\n            {\n                MyMwcLog.WriteLine(\"Device doesn't have MipMapLodBias ability in RasterCaps\");\n                isError = true;\n            }\n            if (!(d3d.Capabilities.RasterCaps.HasFlag(RasterCaps.ScissorTest)))\n            {\n                MyMwcLog.WriteLine(\"Device doesn't have ScissorTest ability in RasterCaps\");\n                isError = true;\n            }\n            if (!(d3d.Capabilities.RasterCaps.HasFlag(RasterCaps.SlopeScaleDepthBias)))\n            {\n                MyMwcLog.WriteLine(\"Device doesn't have SlopeScaleDepthBias ability in RasterCaps\");\n                isError = true;\n            }\n            if (!(d3d.Capabilities.ShadeCaps.HasFlag(ShadeCaps.ColorGouraudRgb)))\n            {\n                MyMwcLog.WriteLine(\"Device doesn't have ColorGouraudRgb ability in ShadeCaps\");\n                isError = true;\n            }\n            if (!(d3d.Capabilities.ShadeCaps.HasFlag(ShadeCaps.AlphaGouraudBlend)))\n            {\n                MyMwcLog.WriteLine(\"Device doesn't have AlphaGouraudBlend ability in ShadeCaps\");\n                isError = true;\n            }\n            if (!(d3d.Capabilities.PrimitiveMiscCaps.HasFlag(PrimitiveMiscCaps.MaskZ)))\n            {\n                MyMwcLog.WriteLine(\"Device doesn't have MaskZ ability in PrimitiveMiscCaps\");\n                isError = true;\n            }\n            if (!(d3d.Capabilities.PrimitiveMiscCaps.HasFlag(PrimitiveMiscCaps.CullNone)))\n            {\n                MyMwcLog.WriteLine(\"Device doesn't have CullNone ability in PrimitiveMiscCaps\");\n                isError = true;\n            }\n            if (!(d3d.Capabilities.PrimitiveMiscCaps.HasFlag(PrimitiveMiscCaps.CullCW)))\n            {\n                MyMwcLog.WriteLine(\"Device doesn't have CullCW ability in PrimitiveMiscCaps\");\n                isError = true;\n            }\n            if (!(d3d.Capabilities.PrimitiveMiscCaps.HasFlag(PrimitiveMiscCaps.CullCCW)))\n            {\n                MyMwcLog.WriteLine(\"Device doesn't have CullCCW ability in PrimitiveMiscCaps\");\n                isError = true;\n            }\n            if (!(d3d.Capabilities.PrimitiveMiscCaps.HasFlag(PrimitiveMiscCaps.ColorWriteEnable)))\n            {\n                MyMwcLog.WriteLine(\"Device doesn't have ColorWriteEnable ability in PrimitiveMiscCaps\");\n                isError = true;\n            }\n            if (!(d3d.Capabilities.PrimitiveMiscCaps.HasFlag(PrimitiveMiscCaps.BlendOperation)))\n            {\n                MyMwcLog.WriteLine(\"Device doesn't have BlendOperation ability in PrimitiveMiscCaps\");\n                isError = true;\n            }\n            if (!(d3d.Capabilities.LineCaps.HasFlag(LineCaps.Blend)))\n            {\n                MyMwcLog.WriteLine(\"Device doesn't have Blend ability in LineCaps\");\n                isError = true;\n            }\n            if (!(d3d.Capabilities.LineCaps.HasFlag(LineCaps.Texture)))\n            {\n                MyMwcLog.WriteLine(\"Device doesn't have Texture ability in LineCaps\");\n                isError = true;\n            }\n            if (!(d3d.Capabilities.LineCaps.HasFlag(LineCaps.DepthTest)))\n            {\n                MyMwcLog.WriteLine(\"Device doesn't have DepthTest ability in LineCaps\");\n                isError = true;\n            }\n            // Test depth test:\n            if (!(d3d.Capabilities.DepthCompareCaps.HasFlag(CompareCaps.Always)))\n            {\n                MyMwcLog.WriteLine(\"Device doesn't have Always ability in DepthCompareCaps\");\n                isError = true;\n            }\n            if (!(d3d.Capabilities.DepthCompareCaps.HasFlag(CompareCaps.Equal)))\n            {\n                MyMwcLog.WriteLine(\"Device doesn't have Equal ability in DepthCompareCaps\");\n                isError = true;\n            }\n            if (!(d3d.Capabilities.DepthCompareCaps.HasFlag(CompareCaps.Greater)))\n            {\n                MyMwcLog.WriteLine(\"Device doesn't have Greater ability in DepthCompareCaps\");\n                isError = true;\n            }\n            if (!(d3d.Capabilities.DepthCompareCaps.HasFlag(CompareCaps.GreaterEqual)))\n            {\n                MyMwcLog.WriteLine(\"Device doesn't have GreaterEqual ability in DepthCompareCaps\");\n                isError = true;\n            }\n            if (!(d3d.Capabilities.DepthCompareCaps.HasFlag(CompareCaps.Less)))\n            {\n                MyMwcLog.WriteLine(\"Device doesn't have Less ability in DepthCompareCaps\");\n                isError = true;\n            }\n            if (!(d3d.Capabilities.DepthCompareCaps.HasFlag(CompareCaps.LessEqual)))\n            {\n                MyMwcLog.WriteLine(\"Device doesn't have LessEqual ability in DepthCompareCaps\");\n                isError = true;\n            }\n            if (!(d3d.Capabilities.DepthCompareCaps.HasFlag(CompareCaps.Never)))\n            {\n                MyMwcLog.WriteLine(\"Device doesn't have Never ability in DepthCompareCaps\");\n                isError = true;\n            }\n            if (!(d3d.Capabilities.DepthCompareCaps.HasFlag(CompareCaps.NotEqual)))\n            {\n                MyMwcLog.WriteLine(\"Device doesn't have NotEqual ability in DepthCompareCaps\");\n                isError = true;\n            }\n            // Test stencil test:\n            if (!(d3d.Capabilities.StencilCaps.HasFlag(StencilCaps.Decrement)))\n            {\n                MyMwcLog.WriteLine(\"Device doesn't have Decrement ability in StencilCaps\");\n                isError = true;\n            }\n            if (!(d3d.Capabilities.StencilCaps.HasFlag(StencilCaps.DecrementClamp)))\n            {\n                MyMwcLog.WriteLine(\"Device doesn't have DecrementClamp ability in StencilCaps\");\n                isError = true;\n            }\n            if (!(d3d.Capabilities.StencilCaps.HasFlag(StencilCaps.Increment)))\n            {\n                MyMwcLog.WriteLine(\"Device doesn't have Increment ability in StencilCaps\");\n                isError = true;\n            }\n            if (!(d3d.Capabilities.StencilCaps.HasFlag(StencilCaps.IncrementClamp)))\n            {\n                MyMwcLog.WriteLine(\"Device doesn't have IncrementClamp ability in StencilCaps\");\n                isError = true;\n            }\n            if (!(d3d.Capabilities.StencilCaps.HasFlag(StencilCaps.Invert)))\n            {\n                MyMwcLog.WriteLine(\"Device doesn't have Invert ability in StencilCaps\");\n                isError = true;\n            }\n            if (!(d3d.Capabilities.StencilCaps.HasFlag(StencilCaps.Keep)))\n            {\n                MyMwcLog.WriteLine(\"Device doesn't have Keep ability in StencilCaps\");\n                isError = true;\n            }\n            if (!(d3d.Capabilities.StencilCaps.HasFlag(StencilCaps.Replace)))\n            {\n                MyMwcLog.WriteLine(\"Device doesn't have Replace ability in StencilCaps\");\n                isError = true;\n            }\n            if (!(d3d.Capabilities.StencilCaps.HasFlag(StencilCaps.TwoSided)))\n            {\n                MyMwcLog.WriteLine(\"Device doesn't have TwoSided ability in StencilCaps\");\n                isError = true;\n            }\n            if (!(d3d.Capabilities.StencilCaps.HasFlag(StencilCaps.Zero)))\n            {\n                MyMwcLog.WriteLine(\"Device doesn't have Zero ability in StencilCaps\");\n                isError = true;\n            }\n            // Test blending caps:\n            // source:\n            if (!(d3d.Capabilities.SourceBlendCaps.HasFlag(BlendCaps.BlendFactor)))\n            {\n                MyMwcLog.WriteLine(\"Device doesn't have BlendFactor ability in SourceBlendCaps\");\n                isError = true;\n            }\n            if (!(d3d.Capabilities.SourceBlendCaps.HasFlag(BlendCaps.DestinationAlpha)))\n            {\n                MyMwcLog.WriteLine(\"Device doesn't have DestinationAlpha ability in SourceBlendCaps\");\n                isError = true;\n            }\n            if (!(d3d.Capabilities.SourceBlendCaps.HasFlag(BlendCaps.DestinationColor)))\n            {\n                MyMwcLog.WriteLine(\"Device doesn't have DestinationColor ability in SourceBlendCaps\");\n                isError = true;\n            }\n            if (!(d3d.Capabilities.SourceBlendCaps.HasFlag(BlendCaps.InverseDestinationAlpha)))\n            {\n                MyMwcLog.WriteLine(\"Device doesn't have InverseDestinationAlpha ability in SourceBlendCaps\");\n                isError = true;\n            }\n            if (!(d3d.Capabilities.SourceBlendCaps.HasFlag(BlendCaps.InverseDestinationColor)))\n            {\n                MyMwcLog.WriteLine(\"Device doesn't have InverseDestinationColor ability in SourceBlendCaps\");\n                isError = true;\n            }\n            if (!(d3d.Capabilities.SourceBlendCaps.HasFlag(BlendCaps.InverseSourceAlpha)))\n            {\n                MyMwcLog.WriteLine(\"Device doesn't have InverseSourceAlpha ability in SourceBlendCaps\");\n                isError = true;\n            }\n            if (!(d3d.Capabilities.SourceBlendCaps.HasFlag(BlendCaps.InverseSourceColor)))\n            {\n                MyMwcLog.WriteLine(\"Device doesn't have InverseSourceColor ability in SourceBlendCaps\");\n                isError = true;\n            }\n            if (!(d3d.Capabilities.SourceBlendCaps.HasFlag(BlendCaps.One)))\n            {\n                MyMwcLog.WriteLine(\"Device doesn't have One ability in SourceBlendCaps\");\n                isError = true;\n            }\n            if (!(d3d.Capabilities.SourceBlendCaps.HasFlag(BlendCaps.SourceAlpha)))\n            {\n                MyMwcLog.WriteLine(\"Device doesn't have SourceAlpha ability in SourceBlendCaps\");\n                isError = true;\n            }\n            if (!(d3d.Capabilities.SourceBlendCaps.HasFlag(BlendCaps.SourceAlphaSaturated)))\n            {\n                MyMwcLog.WriteLine(\"Device doesn't have SourceAlphaSaturated ability in SourceBlendCaps\");\n                isError = true;\n            }\n            if (!(d3d.Capabilities.SourceBlendCaps.HasFlag(BlendCaps.SourceColor)))\n            {\n                MyMwcLog.WriteLine(\"Device doesn't have SourceColor ability in SourceBlendCaps\");\n                isError = true;\n            }\n            if (!(d3d.Capabilities.SourceBlendCaps.HasFlag(BlendCaps.Zero)))\n            {\n                MyMwcLog.WriteLine(\"Device doesn't have Zero ability in SourceBlendCaps\");\n                isError = true;\n            }\n            // destination:\n            if (!(d3d.Capabilities.DestinationBlendCaps.HasFlag(BlendCaps.BlendFactor)))\n            {\n                MyMwcLog.WriteLine(\"Device doesn't have BlendFactor ability in DestinationBlendCaps\");\n                isError = true;\n            }\n            if (!(d3d.Capabilities.DestinationBlendCaps.HasFlag(BlendCaps.DestinationAlpha)))\n            {\n                MyMwcLog.WriteLine(\"Device doesn't have DestinationAlpha ability in DestinationBlendCaps\");\n                isError = true;\n            }\n            if (!(d3d.Capabilities.DestinationBlendCaps.HasFlag(BlendCaps.DestinationColor)))\n            {\n                MyMwcLog.WriteLine(\"Device doesn't have DestinationColor ability in DestinationBlendCaps\");\n                isError = true;\n            }\n            if (!(d3d.Capabilities.DestinationBlendCaps.HasFlag(BlendCaps.InverseDestinationAlpha)))\n            {\n                MyMwcLog.WriteLine(\"Device doesn't have InverseDestinationAlpha ability in DestinationBlendCaps\");\n                isError = true;\n            }\n            if (!(d3d.Capabilities.DestinationBlendCaps.HasFlag(BlendCaps.InverseDestinationColor)))\n            {\n                MyMwcLog.WriteLine(\"Device doesn't have InverseDestinationColor ability in DestinationBlendCaps\");\n                isError = true;\n            }\n            if (!(d3d.Capabilities.DestinationBlendCaps.HasFlag(BlendCaps.InverseSourceAlpha)))\n            {\n                MyMwcLog.WriteLine(\"Device doesn't have InverseSourceAlpha ability in DestinationBlendCaps\");\n                isError = true;\n            }\n            if (!(d3d.Capabilities.DestinationBlendCaps.HasFlag(BlendCaps.InverseSourceColor)))\n            {\n                MyMwcLog.WriteLine(\"Device doesn't have InverseSourceColor ability in DestinationBlendCaps\");\n                isError = true;\n            }\n            if (!(d3d.Capabilities.DestinationBlendCaps.HasFlag(BlendCaps.One)))\n            {\n                MyMwcLog.WriteLine(\"Device doesn't have One ability in DestinationBlendCaps\");\n                isError = true;\n            }\n            if (!(d3d.Capabilities.DestinationBlendCaps.HasFlag(BlendCaps.SourceAlpha)))\n            {\n                MyMwcLog.WriteLine(\"Device doesn't have SourceAlpha ability in DestinationBlendCaps\");\n                isError = true;\n            }\n            if (!(d3d.Capabilities.DestinationBlendCaps.HasFlag(BlendCaps.SourceColor)))\n            {\n                MyMwcLog.WriteLine(\"Device doesn't have SourceColor ability in DestinationBlendCaps\");\n                isError = true;\n            }\n            if (!(d3d.Capabilities.DestinationBlendCaps.HasFlag(BlendCaps.Zero)))\n            {\n                MyMwcLog.WriteLine(\"Device doesn't have Zero ability in DestinationBlendCaps\");\n                isError = true;\n            }\n            // simply test blend source alpha saturation:\n            if (m_DestBlendSrcAlphaSat)\n            {\n                if (!(d3d.Capabilities.DestinationBlendCaps.HasFlag(BlendCaps.SourceAlphaSaturated)))\n                {\n                    MyMwcLog.WriteLine(\"Device doesn't have BlendSourceAlphaSaturated ability in DestinationBlendCaps\");\n                    isError = true;\n                }\n            }\n            // Simply test separate alpha blend:\n            if (m_SeparateAlphaBlend)\n            {\n                if (!(d3d.Capabilities.PrimitiveMiscCaps.HasFlag(PrimitiveMiscCaps.SeparateAlphaBlend)))\n                {\n                    MyMwcLog.WriteLine(\"Device doesn't have SeparateAlphaBlend ability in PrimitiveMiscCaps\");\n                    isError = true;\n                }\n            }\n            // Test multiple render targets:\n            if (d3d.Capabilities.SimultaneousRTCount < m_MaxRenderTargets)\n            {\n                MyMwcLog.WriteLine(\"MaxRenderTargets smaller than needed\");\n                isError = true;\n            }\n            if (m_MaxRenderTargets > 1)\n            {\n                if (!(d3d.Capabilities.PrimitiveMiscCaps.HasFlag(PrimitiveMiscCaps.IndependentWriteMasks)))\n                {\n                    MyMwcLog.WriteLine(\"Device doesn't have IndependentWriteMasks ability in PrimitiveMiscCaps for more than 1 render targets\");\n                    isError = true;\n                }\n                if (!(d3d.Capabilities.PrimitiveMiscCaps.HasFlag(PrimitiveMiscCaps.MrtPostPixelShaderBlending)))\n                {\n                    MyMwcLog.WriteLine(\"Device doesn't have MrtPostPixelShaderBlending ability in PrimitiveMiscCaps for more than 1 render targets\");\n                    isError = true;\n                }\n            }\n            // Test texturing abilities:\n            if (d3d.Capabilities.MaxTextureWidth < m_MaxTextureSize)\n            {\n                MyMwcLog.WriteLine(\"MaxTextureWidth smaller than needed\");\n                isError = true;\n            }\n            if (d3d.Capabilities.MaxTextureHeight < m_MaxTextureSize)\n            {\n                MyMwcLog.WriteLine(\"MaxTextureHeight smaller than needed\");\n                isError = true;\n            }\n            // Test aspect ration:\n            if (d3d.Capabilities.MaxTextureAspectRatio > 0)\n            {\n                if (d3d.Capabilities.MaxTextureAspectRatio < m_MaxTextureAspectRatio)\n                {\n                    MyMwcLog.WriteLine(\"MaxTextureAspectRatio smaller than needed\");\n                    isError = true;\n                }\n            }\n            // Test textures abilities:\n            if (!(d3d.Capabilities.TextureCaps.HasFlag(TextureCaps.Alpha)))\n            {\n                MyMwcLog.WriteLine(\"Device doesn't have Alpha ability in TextureCaps\");\n                isError = true;\n            }\n            if (!(d3d.Capabilities.TextureCaps.HasFlag(TextureCaps.MipMap)))\n            {\n                MyMwcLog.WriteLine(\"Device doesn't have MipMap ability in TextureCaps\");\n                isError = true;\n            }\n            if (!(d3d.Capabilities.TextureCaps.HasFlag(TextureCaps.CubeMap)))\n            {\n                MyMwcLog.WriteLine(\"Device doesn't have CubeMap ability in TextureCaps\");\n                isError = true;\n            }\n            if (!(d3d.Capabilities.TextureCaps.HasFlag(TextureCaps.MipCubeMap)))\n            {\n                MyMwcLog.WriteLine(\"Device doesn't have MipCubeMap ability in TextureCaps\");\n                isError = true;\n            }\n            if (!(d3d.Capabilities.TextureCaps.HasFlag(TextureCaps.Perspective)))\n            {\n                MyMwcLog.WriteLine(\"Device doesn't have Perspective ability in TextureCaps\");\n                isError = true;\n            }\n            if (d3d.Capabilities.TextureCaps.HasFlag(TextureCaps.SquareOnly))\n            {\n                MyMwcLog.WriteLine(\"Device doesn't have SquareOnly ability in TextureCaps\");\n                isError = true;\n            }\n            // Test texture address caps:\n            if (!(d3d.Capabilities.TextureAddressCaps.HasFlag(TextureAddressCaps.Clamp)))\n            {\n                MyMwcLog.WriteLine(\"Device doesn't have Clamp ability in TextureAddressCaps\");\n                isError = true;\n            }\n            if (!(d3d.Capabilities.TextureAddressCaps.HasFlag(TextureAddressCaps.Wrap)))\n            {\n                MyMwcLog.WriteLine(\"Device doesn't have Wrap ability in TextureAddressCaps\");\n                isError = true;\n            }\n            if (!(d3d.Capabilities.TextureAddressCaps.HasFlag(TextureAddressCaps.Mirror)))\n            {\n                MyMwcLog.WriteLine(\"Device doesn't have Mirror ability in TextureAddressCaps\");\n                isError = true;\n            }\n            if (!(d3d.Capabilities.TextureAddressCaps.HasFlag(TextureAddressCaps.IndependentUV)))\n            {\n                MyMwcLog.WriteLine(\"Device doesn't have IndependentUV ability in TextureAddressCaps\");\n                isError = true;\n            }\n            // Test texture filter caps:\n            if (!(d3d.Capabilities.TextureFilterCaps.HasFlag(FilterCaps.MagPoint)))\n            {\n                MyMwcLog.WriteLine(\"Device doesn't have MagPoint ability in TextureFilterCaps\");\n                isError = true;\n            }\n            if (!(d3d.Capabilities.TextureFilterCaps.HasFlag(FilterCaps.MagLinear)))\n            {\n                MyMwcLog.WriteLine(\"Device doesn't have MagLinear ability in TextureFilterCaps\");\n                isError = true;\n            }\n            if (!(d3d.Capabilities.TextureFilterCaps.HasFlag(FilterCaps.MinPoint)))\n            {\n                MyMwcLog.WriteLine(\"Device doesn't have MinPoint ability in TextureFilterCaps\");\n                isError = true;\n            }\n            if (!(d3d.Capabilities.TextureFilterCaps.HasFlag(FilterCaps.MinLinear)))\n            {\n                MyMwcLog.WriteLine(\"Device doesn't have MinLinear ability in TextureFilterCaps\");\n                isError = true;\n            }\n            if (!(d3d.Capabilities.TextureFilterCaps.HasFlag(FilterCaps.MipPoint)))\n            {\n                MyMwcLog.WriteLine(\"Device doesn't have MipPoint ability in TextureFilterCaps\");\n                isError = true;\n            }\n            if (!(d3d.Capabilities.TextureFilterCaps.HasFlag(FilterCaps.MipLinear)))\n            {\n                MyMwcLog.WriteLine(\"Device doesn't have MipLinear ability in TextureFilterCaps\");\n                isError = true;\n            }\n            // test cube texture filter caps:\n            if (!(d3d.Capabilities.CubeTextureFilterCaps.HasFlag(FilterCaps.MagPoint)))\n            {\n                MyMwcLog.WriteLine(\"Device doesn't have MagPoint ability in CubeTextureFilterCaps\");\n                isError = true;\n            }\n            if (!(d3d.Capabilities.CubeTextureFilterCaps.HasFlag(FilterCaps.MagLinear)))\n            {\n                MyMwcLog.WriteLine(\"Device doesn't have MagLinear ability in CubeTextureFilterCaps\");\n                isError = true;\n            }\n            if (!(d3d.Capabilities.CubeTextureFilterCaps.HasFlag(FilterCaps.MinPoint)))\n            {\n                MyMwcLog.WriteLine(\"Device doesn't have MinPoint ability in CubeTextureFilterCaps\");\n                isError = true;\n            }\n            if (!(d3d.Capabilities.CubeTextureFilterCaps.HasFlag(FilterCaps.MinLinear)))\n            {\n                MyMwcLog.WriteLine(\"Device doesn't have MinLinear ability in CubeTextureFilterCaps\");\n                isError = true;\n            }\n            if (!(d3d.Capabilities.CubeTextureFilterCaps.HasFlag(FilterCaps.MipPoint)))\n            {\n                MyMwcLog.WriteLine(\"Device doesn't have MipPoint ability in CubeTextureFilterCaps\");\n                isError = true;\n            }\n            if (!(d3d.Capabilities.CubeTextureFilterCaps.HasFlag(FilterCaps.MipLinear)))\n            {\n                MyMwcLog.WriteLine(\"Device doesn't have MipLinear ability in CubeTextureFilterCaps\");\n                isError = true;\n            }\n            // test volume texures:\n            if (m_MaxVolumeExtent > 0)\n            {\n                if (d3d.Capabilities.MaxVolumeExtent < m_MaxVolumeExtent)\n                {\n                    MyMwcLog.WriteLine(\"MaxVolumeExtent smaller than needed\");\n                    isError = true;\n                }\n\n                // test volume maps:\n                if (!(d3d.Capabilities.TextureCaps.HasFlag(TextureCaps.VolumeMap)))\n                {\n                    MyMwcLog.WriteLine(\"Device doesn't have VolumeMap ability in TextureCaps\");\n                    isError = true;\n                }\n                if (!(d3d.Capabilities.TextureCaps.HasFlag(TextureCaps.MipVolumeMap)))\n                {\n                    MyMwcLog.WriteLine(\"Device doesn't have MipVolumeMap ability in TextureCaps\");\n                    isError = true;\n                }\n                // test volume texture address caps:\n                if (!(d3d.Capabilities.VolumeTextureAddressCaps.HasFlag(TextureAddressCaps.Clamp)))\n                {\n                    MyMwcLog.WriteLine(\"Device doesn't have Clamp ability in VolumeTextureAddressCaps\");\n                    isError = true;\n                }\n                if (!(d3d.Capabilities.VolumeTextureAddressCaps.HasFlag(TextureAddressCaps.Wrap)))\n                {\n                    MyMwcLog.WriteLine(\"Device doesn't have Wrap ability in VolumeTextureAddressCaps\");\n                    isError = true;\n                }\n                if (!(d3d.Capabilities.VolumeTextureAddressCaps.HasFlag(TextureAddressCaps.Mirror)))\n                {\n                    MyMwcLog.WriteLine(\"Device doesn't have Mirror ability in VolumeTextureAddressCaps\");\n                    isError = true;\n                }\n                if (!(d3d.Capabilities.VolumeTextureAddressCaps.HasFlag(TextureAddressCaps.IndependentUV)))\n                {\n                    MyMwcLog.WriteLine(\"Device doesn't have IndependentUV ability in VolumeTextureAddressCaps\");\n                    isError = true;\n                }\n                // test volume texture filter caps:\n                if (!(d3d.Capabilities.VolumeTextureFilterCaps.HasFlag(FilterCaps.MagPoint)))\n                {\n                    MyMwcLog.WriteLine(\"Device doesn't have MagPoint ability in VolumeTextureFilterCaps\");\n                    isError = true;\n                }\n                if (!(d3d.Capabilities.VolumeTextureFilterCaps.HasFlag(FilterCaps.MagLinear)))\n                {\n                    MyMwcLog.WriteLine(\"Device doesn't have MagLinear ability in VolumeTextureFilterCaps\");\n                    isError = true;\n                }\n                if (!(d3d.Capabilities.VolumeTextureFilterCaps.HasFlag(FilterCaps.MinPoint)))\n                {\n                    MyMwcLog.WriteLine(\"Device doesn't have MinPoint ability in VolumeTextureFilterCaps\");\n                    isError = true;\n                }\n                if (!(d3d.Capabilities.VolumeTextureFilterCaps.HasFlag(FilterCaps.MinLinear)))\n                {\n                    MyMwcLog.WriteLine(\"Device doesn't have MinLinear ability in VolumeTextureFilterCaps\");\n                    isError = true;\n                }\n                if (!(d3d.Capabilities.VolumeTextureFilterCaps.HasFlag(FilterCaps.MipPoint)))\n                {\n                    MyMwcLog.WriteLine(\"Device doesn't have MipPoint ability in VolumeTextureFilterCaps\");\n                    isError = true;\n                }\n                if (!(d3d.Capabilities.VolumeTextureFilterCaps.HasFlag(FilterCaps.MipLinear)))\n                {\n                    MyMwcLog.WriteLine(\"Device doesn't have MipLinear ability in VolumeTextureFilterCaps\");\n                    isError = true;\n                }\n            }\n            // test non power of two textures:\n            if (m_NonPow2Unconditional)\n            {\n                if (d3d.Capabilities.TextureCaps.HasFlag(TextureCaps.Pow2))\n                {\n                    MyMwcLog.WriteLine(\"Device doesn't have Pow2textures ability in TextureCaps\");\n                    isError = true;\n                }\n            }\n            else\n            {\n                if (d3d.Capabilities.TextureCaps.HasFlag(TextureCaps.Pow2))\n                {\n                    if (!(d3d.Capabilities.TextureCaps.HasFlag(TextureCaps.NonPow2Conditional)))\n                    {\n                        MyMwcLog.WriteLine(\"Device doesn't have NonPow2Conditional ability in TextureCaps\");\n                        isError = true;\n                    }\n                }\n            }\n            // test non power of two cube textures:\n            if (m_NonPow2Cube)\n            {\n                if (d3d.Capabilities.TextureCaps.HasFlag(TextureCaps.CubeMapPow2))\n                {\n                    MyMwcLog.WriteLine(\"Device doesn't have CubeMapPow2 ability in TextureCaps\");\n                    isError = true;\n                }\n            }\n            // test non power of two volume textures:\n            if (m_NonPow2Volume)\n            {\n                if (d3d.Capabilities.TextureCaps.HasFlag(TextureCaps.VolumeMapPow2))\n                {\n                    MyMwcLog.WriteLine(\"Device doesn't have VolumeMapPow2 ability in TextureCaps\");\n                    isError = true;\n                }\n            }\n            // Test vertex texturing:\n            if (m_MaxVertexSamplers > 0)\n            {\n                if (!(d3d.Capabilities.VertexTextureFilterCaps.HasFlag(FilterCaps.MagPoint)))\n                {\n                    MyMwcLog.WriteLine(\"Device doesn't have MagPoint ability in VertexTextureFilterCaps\");\n                    isError = true;\n                }\n                if (!(d3d.Capabilities.VertexTextureFilterCaps.HasFlag(FilterCaps.MinPoint)))\n                {\n                    MyMwcLog.WriteLine(\"Device doesn't have MinPoint ability in VertexTextureFilterCaps\");\n                    isError = true;\n                }\n            }\n            // Test vertex element formats:\n            if (m_ValidVertexFormats != null)\n            {\n                foreach (DeclarationType format in m_ValidVertexFormats)\n                {\n                    switch (format)\n                    {\n                        case DeclarationType.Color:\n                            if (!(d3d.Capabilities.DeclarationTypes.HasFlag(DeclarationTypeCaps.UByte4N)))\n                            {\n                                MyMwcLog.WriteLine(\"Device doesn't have UByte4N as VertexElementFormat type in Declaration\");\n                                isError = true;\n                            }\n                            break;\n                        case DeclarationType.UByte4N:\n                            if (!(d3d.Capabilities.DeclarationTypes.HasFlag(DeclarationTypeCaps.UByte4)))\n                            {\n                                MyMwcLog.WriteLine(\"Device doesn't have UByte4 as VertexElementFormat type in Declaration\");\n                                isError = true;\n                            }\n                            break;\n                        case DeclarationType.Short2N:\n                            if (!(d3d.Capabilities.DeclarationTypes.HasFlag(DeclarationTypeCaps.Short2N)))\n                            {\n                                MyMwcLog.WriteLine(\"Device doesn't have NormalizedShort2 as VertexElementFormat type in Declaration\");\n                                isError = true;\n                            }\n                            break;\n                        case DeclarationType.Short4N:\n                            if (!(d3d.Capabilities.DeclarationTypes.HasFlag(DeclarationTypeCaps.Short4N)))\n                            {\n                                MyMwcLog.WriteLine(\"Device doesn't have Short4N as VertexElementFormat type in Declaration\");\n                                isError = true;\n                            }\n                            break;\n                        case DeclarationType.HalfTwo:\n                            if (!(d3d.Capabilities.DeclarationTypes.HasFlag(DeclarationTypeCaps.HalfTwo)))\n                            {\n                                MyMwcLog.WriteLine(\"Device doesn't have HalfTwo as VertexElementFormat type in Declaration\");\n                                isError = true;\n                            }\n                            break;\n                        case DeclarationType.HalfFour:\n                            if (!(d3d.Capabilities.DeclarationTypes.HasFlag(DeclarationTypeCaps.HalfFour)))\n                            {\n                                MyMwcLog.WriteLine(\"Device doesn't have UByte4N as VertexElementFormat type in Declaration\");\n                                isError = true;\n                            }\n                            break;\n                    }\n                }\n            }\n            // Test texture formats:\n            if (m_ValidTextureFormats != null)\n            {\n                foreach (Format format in m_ValidTextureFormats)\n                {\n                    // format supported?\n                    if (!d3dh.CheckDeviceFormat(0, DeviceType.Hardware, Format.X8R8G8B8, 0, ResourceType.Texture, format))\n                    {\n                        string text = String.Format(\"Device doesn't support DX texture format { 0 } [XNA format: { 0 }]\", format.ToString(), format.ToString());\n                        MyMwcLog.WriteLine(text);\n                        isError = true;\n                        continue;\n                    }\n                    // does this format support mipmapping?\n                    if (!d3dh.CheckDeviceFormat(0, DeviceType.Hardware, Format.X8R8G8B8, Usage.QueryWrapAndMip, ResourceType.Texture, format))\n                    {\n                        string text = String.Format(\"Device doesn't support MipMapping for texture DX format { 0 } [XNA format: { 0 }]\", format.ToString(), format.ToString());\n                        MyMwcLog.WriteLine(text);\n                        isError = true;\n                        continue;\n                    }\n                    // does this format support filtering?\n                    if (!m_InvalidFilterFormats.Contains(format))\n                    {\n                        if (!d3dh.CheckDeviceFormat(0, DeviceType.Hardware, Format.X8R8G8B8, Usage.QueryFilter, ResourceType.Texture, format))\n                        {\n                            string text = String.Format(\"Device doesn't support QueryFiltering for texture DX format { 0 } [XNA format: { 0 }]\", format.ToString(), format.ToString());\n                            MyMwcLog.WriteLine(text);\n                            isError = true;\n                        }\n                    }\n                }\n            }\n            // Test cubemap formats:\n            if (m_ValidCubeFormats != null)\n            {\n                foreach (Format format in m_ValidCubeFormats)\n                {\n                    // format supported?\n                    if (!d3dh.CheckDeviceFormat(0, DeviceType.Hardware, Format.X8R8G8B8, 0, ResourceType.CubeTexture, format))\n                    {\n                        string text = String.Format(\"Device doesn't support DX texture format { 0 } [XNA format: { 0 }]\", format.ToString(), format.ToString());\n                        MyMwcLog.WriteLine(text);\n                        isError = true;\n                        continue;\n                    }\n                    // does this format support mipmapping?\n                    if (!d3dh.CheckDeviceFormat(0, DeviceType.Hardware, Format.X8R8G8B8, Usage.QueryWrapAndMip, ResourceType.CubeTexture, format))\n                    {\n                        string text = String.Format(\"Device doesn't support MipMapping for texture DX format { 0 } [XNA format: { 0 }]\", format.ToString(), format.ToString());\n                        MyMwcLog.WriteLine(text);\n                        isError = true;\n                        continue;\n                    }\n                    // does this format support filtering?\n                    if (!m_InvalidFilterFormats.Contains(format))\n                    {\n                        if (!d3dh.CheckDeviceFormat(0, DeviceType.Hardware, Format.X8R8G8B8, Usage.QueryFilter, ResourceType.CubeTexture, format))\n                        {\n                            string text = String.Format(\"Device doesn't support QueryFiltering for texture DX format { 0 } [XNA format: { 0 }]\", format.ToString(), format.ToString());\n                            MyMwcLog.WriteLine(text);\n                            isError = true;\n                        }\n                    }\n                }\n            }\n            // Test volume texture formats:\n            if (m_ValidVolumeFormats != null)\n            {\n                foreach (Format format in m_ValidVolumeFormats)\n                {\n                    // format supported?\n                    if (!d3dh.CheckDeviceFormat(0, DeviceType.Hardware, Format.X8R8G8B8, 0, ResourceType.VolumeTexture, format))\n                    {\n                        string text = String.Format(\"Device doesn't support DX texture format { 0 } [XNA format: { 0 }]\", format.ToString(), format.ToString());\n                        MyMwcLog.WriteLine(text);\n                        isError = true;\n                        continue;\n                    }\n                    // does this format support mipmapping?\n                    if (!d3dh.CheckDeviceFormat(0, DeviceType.Hardware, Format.X8R8G8B8, Usage.QueryWrapAndMip, ResourceType.VolumeTexture, format))\n                    {\n                        string text = String.Format(\"Device doesn't support MipMapping for texture DX format { 0 } [XNA format: { 0 }]\", format.ToString(), format.ToString());\n                        MyMwcLog.WriteLine(text);\n                        isError = true;\n                        continue;\n                    }\n                    // does this format support filtering?\n                    if (!m_InvalidFilterFormats.Contains(format))\n                    {\n                        if (!d3dh.CheckDeviceFormat(0, DeviceType.Hardware, Format.X8R8G8B8, Usage.QueryFilter, ResourceType.VolumeTexture, format))\n                        {\n                            string text = String.Format(\"Device doesn't support QueryFiltering for texture DX format { 0 } [XNA format: { 0 }]\", format.ToString(), format.ToString());\n                            MyMwcLog.WriteLine(text);\n                            isError = true;\n                        }\n                    }\n                }\n            }\n            // Test vertex texture format:\n            if (m_ValidVertexTextureFormats != null)\n            {\n                foreach (Format format in m_ValidVertexTextureFormats)\n                {\n                    Usage usage = Usage.QueryVertexTexture | Usage.QueryWrapAndMip;\n                    if (!m_InvalidBlendFormats.Contains(format))\n                    {\n                        usage |= Usage.QueryFilter;\n                    }\n                    // 2D vertex texture:\n                    if (!d3dh.CheckDeviceFormat(0, DeviceType.Hardware, Format.X8R8G8B8, usage, ResourceType.Texture, format))\n                    {\n                        string text = String.Format(\"Device doesn't support VertexTextureFormat for DX texture format { 0 } [XNA format: { 0 }]\", format.ToString(), format.ToString());\n                        MyMwcLog.WriteLine(text);\n                        isError = true;\n                        continue;\n                    }\n                    // Cubemap vertex texture:\n                    if (!d3dh.CheckDeviceFormat(0, DeviceType.Hardware, Format.X8R8G8B8, usage, ResourceType.Texture, format))\n                    {\n                        string text = String.Format(\"Device doesn't support VertexCubemapTextureFormat for DX texture format { 0 } [XNA format: { 0 }]\", format.ToString(), format.ToString());\n                        MyMwcLog.WriteLine(text);\n                        isError = true;\n                        continue;\n                    }\n                    // Volume vertex texture:\n                    if (!d3dh.CheckDeviceFormat(0, DeviceType.Hardware, Format.X8R8G8B8, usage, ResourceType.Texture, format))\n                    {\n                        string text = String.Format(\"Device doesn't support VertexVolumeTextureFormat for DX texture format { 0 } [XNA format: { 0 }]\", format.ToString(), format.ToString());\n                        MyMwcLog.WriteLine(text);\n                        isError = true;\n                        continue;\n                    }\n                }\n            }\n            // Test render target format:\n            if (m_InvalidBlendFormats != null)\n            {\n                Usage usage = Usage.RenderTarget;\n                if (!m_InvalidBlendFormats.Contains(Format.A8R8G8B8))\n                {\n                    usage |= Usage.QueryPostPixelShaderBlending;\n                }\n                if (!(d3dh.CheckDeviceFormat(0, DeviceType.Hardware, Format.X8R8G8B8, usage, ResourceType.Surface, Format.A8R8G8B8)))\n                {\n                    string text = String.Format(\"Device doesn't support RenderTarget for DX texture format { 0 } [XNA format: { 0 }]\", Format.A8R8G8B8.ToString(), Format.A8R8G8B8.ToString());\n                    MyMwcLog.WriteLine(text);\n                    isError = true;\n                }\n            }\n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyGraphicTest.TestCurrentSettings() - END\");\n\n            return isError;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Utils/MyGridIntersection.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils.Utils;\nusing BulletXNA;\n\nnamespace MinerWars.AppCode.Game.Utils\n{\n    public class MyGridIntersection\n    {\n        static bool IsPointInside(Vector3 p, MyMwcVector3Int min, MyMwcVector3Int max)\n        {\n            return (p.X >= min.X && p.X < max.X+1 &&\n                    p.Y >= min.Y && p.Y < max.Y+1 &&\n                    p.Z >= min.Z && p.Z < max.Z+1);\n        }\n\n        static bool IntersectionT(float n, float d, ref float tE, ref float tL)\n        {\n            if (MyMwcUtils.IsZero(d)) return n <= 0;\n            float t = n / d;\n            if (d > 0)\n            {\n                if (t > tL) return false;\n                if (t > tE) tE = t;\n            }\n            else\n            {\n                if (t < tE) return false;\n                if (t < tL) tL = t;\n            }\n            return true;\n        }\n\n        \n        // Liang-Barsky line clipping. Return true if the line isn't completely clipped.\n        static bool ClipLine(ref Vector3 start, ref Vector3 end, MyMwcVector3Int min, MyMwcVector3Int max)\n        {\n            Vector3 dir = end - start;\n            if (MyMwcUtils.IsZero(dir)) return IsPointInside(start, min, max);\n            float tE = 0, tL = 1;\n\n            if (IntersectionT(min.X - start.X, dir.X, ref tE, ref tL) && IntersectionT(start.X - max.X - 1, -dir.X, ref tE, ref tL) &&\n                IntersectionT(min.Y - start.Y, dir.Y, ref tE, ref tL) && IntersectionT(start.Y - max.Y - 1, -dir.Y, ref tE, ref tL) &&\n                IntersectionT(min.Z - start.Z, dir.Z, ref tE, ref tL) && IntersectionT(start.Z - max.Z - 1, -dir.Z, ref tE, ref tL))\n            {\n                if (tL < 1) end = start + tL * dir;\n                if (tE > 0) start += tE * dir;\n                return true;\n            }\n            return false;\n        }\n\n        // Return +1 if a component of v is non-negative, or -1 if it's negative.\n        static MyMwcVector3Int SignInt(Vector3 v)\n        {\n            return new MyMwcVector3Int(v.X >= 0 ? 1 : -1, v.Y >= 0 ? 1 : -1, v.Z >= 0 ? 1 : -1);\n        }\n\n        static Vector3 Sign(Vector3 v)\n        {\n            return new Vector3(v.X >= 0 ? 1 : -1, v.Y >= 0 ? 1 : -1, v.Z >= 0 ? 1 : -1);\n        }\n\n        // Get the grid point corresponding to v (in grid coordinates). Guaranteed to lie in the given bounding box (by clamping).\n        static MyMwcVector3Int GetGridPoint(ref Vector3 v, MyMwcVector3Int min, MyMwcVector3Int max)\n        {\n            var r = new MyMwcVector3Int();\n            if (v.X < min.X) { v.X = r.X = min.X; }\n            else if (v.X >= max.X + 1) { v.X = MathUtil.NextAfter(max.X + 1, float.NegativeInfinity); r.X = max.X; }\n            else r.X = (int)Math.Floor(v.X);\n\n            if (v.Y < min.Y) { v.Y = r.Y = min.Y; }\n            else if (v.Y >= max.Y + 1) { v.Y = MathUtil.NextAfter(max.Y + 1, float.NegativeInfinity); r.Y = max.Y; }\n            else r.Y = (int)Math.Floor(v.Y);\n            \n            if (v.Z < min.Z) { v.Z = r.Z = min.Z; }\n            else if (v.Z >= max.Z + 1) { v.Z = MathUtil.NextAfter(max.Z + 1, float.NegativeInfinity); r.Z = max.Z; }\n            else r.Z = (int)Math.Floor(v.Z);\n\n            return r;\n        }\n\n        public static void Calculate(List<MyMwcVector3Int> result, float gridSize, Vector3 lineStart, Vector3 lineEnd, MyMwcVector3Int min, MyMwcVector3Int max)\n        {\n            var dir = lineEnd - lineStart;\n            MyCommonDebugUtils.AssertDebug(MyUtils.IsValid(dir));\n                        \n            // handle start==end\n            Vector3 start = lineStart / gridSize;\n\n            if (MyMwcUtils.IsZero(dir))\n            {\n                if (IsPointInside(start, min, max))\n                    result.Add(GetGridPoint(ref start, min, max));\n                return;\n            }\n\n            // start/end in grid coordinates: clip them to the bounding box, return if no intersection\n            Vector3 end = lineEnd / gridSize;\n            if (ClipLine(ref start, ref end, min, max) == false) return;\n\n\n            // reflect coordinates so that dir is always positive\n            Vector3 sign = Sign(dir); MyMwcVector3Int signInt = SignInt(dir);\n\n            // current/final grid position\n            MyMwcVector3Int cur = GetGridPoint(ref start, min, max) * signInt;\n            MyMwcVector3Int final = GetGridPoint(ref end, min, max) * signInt;\n            dir *= sign;\n            start *= sign;\n\n            // dx = increase of t when we increase x by 1\n            // nextX = t of the next point on the line with x whole\n            float dx = 1 / dir.X, nextX = dx * ((float)Math.Floor(start.X + 1) - start.X);\n            float dy = 1 / dir.Y, nextY = dy * ((float)Math.Floor(start.Y + 1) - start.Y);\n            float dz = 1 / dir.Z, nextZ = dz * ((float)Math.Floor(start.Z + 1) - start.Z);\n\n            // 3D DDA\n            while (true)\n            {\n                result.Add(cur * signInt);\n                \n                if (nextX < nextZ)\n                {\n                    if (nextX < nextY) { nextX += dx; if (++cur.X > final.X) break; }\n                    else { nextY += dy; if (++cur.Y > final.Y) break; }\n                }\n                else\n                {\n                    if (nextZ < nextY) { nextZ += dz; if (++cur.Z > final.Z) break; }\n                    else { nextY += dy; if (++cur.Y > final.Y) break; }\n                }\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Utils/MyIntersectionResultLineBoundingSphere.cs",
    "content": "﻿using MinerWars.AppCode.Game.Entities;\n\nnamespace MinerWars.AppCode.Game.Utils\n{\n    struct MyIntersectionResultLineBoundingSphere\n    {\n        public readonly float Distance;                      //  Distance to the intersection point (calculated as distance from 'line.From' to 'intersection point')\n        public readonly MyEntity PhysObject;         //  If intersection occured with phys object, here will be it\n\n        public MyIntersectionResultLineBoundingSphere(float distance, MyEntity physObject)\n        {\n            Distance = distance;\n            PhysObject = physObject;\n        }\n\n        //  Find and return closer intersection of these two. If intersection is null then it's not really an intersection.\n        public static MyIntersectionResultLineBoundingSphere? GetCloserIntersection(ref MyIntersectionResultLineBoundingSphere? a, ref MyIntersectionResultLineBoundingSphere? b)\n        {\n            if (((a == null) && (b != null)) ||\n                ((a != null) && (b != null) && (b.Value.Distance < a.Value.Distance)))\n            {\n                //  If only \"b\" contains valid intersection, or when it's closer than \"a\"\n                return b;\n            }\n            else\n            {\n                //  This will be returned also when ((a == null) && (b == null))\n                return a;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Utils/MyIntersectionResultLineTriangle.cs",
    "content": "﻿using System;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWarsMath;\n\nnamespace MinerWars.AppCode.Game.Utils\n{\n    //  Result of intersection between a ray and a triangle. This structure can be used only if intersection was found!\n    //  If returned intersection is with voxel, all coordinates are in absolute/world space\n    //  If returned intersection is with model instance, all coordinates are in model's local space (so for drawing we need to trasform them using world matrix)\n    struct MyIntersectionResultLineTriangle\n    {\n        //  IMPORTANT: Use these members only for readonly acces. Change them only inside the constructor.\n        //  We can't mark them 'readonly' because sometimes they are sent to different methods through \"ref\"\n\n        //  Distance to the intersection point (calculated as distance from 'line.From' to 'intersection point')\n        public float Distance;\n        \n        //  World coordinates of intersected triangle. It is also used as input parameter for col/det functions.\n        public MyTriangle_Vertexes InputTriangle;\n\n        //  Normals of vertexes of intersected triangle\n        public Vector3 InputTriangleNormal;\n\n        public MyIntersectionResultLineTriangle(ref MyTriangle_Vertexes triangle, ref Vector3 triangleNormal, float distance)\n        {\n            InputTriangle = triangle;\n            InputTriangleNormal = triangleNormal;\n            Distance = distance;\n        }\n        \n        //  Find and return closer intersection of these two. If intersection is null then it's not really an intersection.\n        public static MyIntersectionResultLineTriangle? GetCloserIntersection(ref MyIntersectionResultLineTriangle? a, ref MyIntersectionResultLineTriangle? b)\n        {\n            if (((a == null) && (b != null)) ||\n                ((a != null) && (b != null) && (b.Value.Distance < a.Value.Distance)))\n            {\n                //  If only \"b\" contains valid intersection, or when it's closer than \"a\"\n                return b;\n            }\n            else\n            {\n                //  This will be returned also when ((a == null) && (b == null))\n                return a;\n            }\n        }\n    }\n\n    //  More detailed version of MyIntersectionResultLineTriangle, contains some calculated data, etc. This is usually \n    //  used as a result of triangle intersection searches\n    struct MyIntersectionResultLineTriangleEx\n    {\n        //  IMPORTANT: Use these members only for readonly acces. Change them only inside the constructor.\n        //  We can't mark them 'readonly' because sometimes they are sent to different methods through \"ref\"\n\n        public MyIntersectionResultLineTriangle Triangle;\n\n        //  Point of intersection, always in object space. Use only if intersection with object.\n        public Vector3 IntersectionPointInObjectSpace;\n\n        //  Point of intersection - always in world space\n        public Vector3 IntersectionPointInWorldSpace;\n\n        //  If intersection occured with phys object, here will be it\n        public MyEntity Entity;\n\n        //  Normal vector of intersection triangle - always in world space. Can be calculaed from input positions.\n        public Vector3 NormalInWorldSpace;\n\n        //  Normal vector of intersection triangle, always in object space. Use only if intersection with object.\n        public Vector3 NormalInObjectSpace;\n\n        //  Line used to get intersection, transformed to object space. For voxels it is also in world space, but for objects, use GetLineInWorldSpace()\n        public MyLine InputLineInObjectSpace;\n\n        public MyIntersectionResultLineTriangleEx(MyIntersectionResultLineTriangle triangle, MyEntity physObject, ref MyLine line)\n        {\n            Triangle = triangle;\n            Entity = physObject;\n            InputLineInObjectSpace = line;\n\n            NormalInObjectSpace = MyUtils.GetNormalVectorFromTriangle(ref Triangle.InputTriangle);\n            IntersectionPointInObjectSpace = line.From + line.Direction * Triangle.Distance;\n\n            if (Entity is MyVoxelMap)\n            {\n                IntersectionPointInWorldSpace = IntersectionPointInObjectSpace;\n                NormalInWorldSpace = NormalInObjectSpace;\n\n                //  This will move intersection point from world space into voxel map's object space\n                IntersectionPointInObjectSpace = IntersectionPointInObjectSpace - ((MyVoxelMap)Entity).PositionLeftBottomCorner;\n            }\n            else\n            {\n                Matrix worldMatrix = Entity.WorldMatrix;\n                NormalInWorldSpace = MyUtils.GetTransformNormalNormalized(NormalInObjectSpace, ref worldMatrix);\n                IntersectionPointInWorldSpace = MyUtils.GetTransform(IntersectionPointInObjectSpace, ref worldMatrix);\n            }\n        }\n\n        /*public MyLine GetInputLineInWorldSpace()\n        {\n            if (IntersectionType == MyIntersectionResultLineTriangleType.WITH_VOXEL)\n            {\n                return InputLineInObjectSpace;\n            }\n            else\n            {\n                return new MyLine(\n                    MyUtils.GetTransform(InputLineInObjectSpace.From, ref PhysObject.WorldMatrix),\n                    MyUtils.GetTransform(InputLineInObjectSpace.To, ref PhysObject.WorldMatrix), true);\n            }\n        }*/\n\n        //  Find and return closer intersection of these two. If intersection is null then it's not really an intersection.\n        public static MyIntersectionResultLineTriangleEx? GetCloserIntersection(ref MyIntersectionResultLineTriangleEx? a, ref MyIntersectionResultLineTriangleEx? b)\n        {\n            if (((a == null) && (b != null)) ||\n                ((a != null) && (b != null) && (b.Value.Triangle.Distance < a.Value.Triangle.Distance)))\n            {\n                //  If only \"b\" contains valid intersection, or when it's closer than \"a\"\n                return b;\n            }\n            else\n            {\n                //  This will be returned also when ((a == null) && (b == null))\n                return a;\n            }\n        }\n\n        //  Find if distance between two intersections is less than \"tolerance distance\".\n        public static bool IsDistanceLessThanTolerance(ref MyIntersectionResultLineTriangleEx? a, ref MyIntersectionResultLineTriangleEx? b,\n            float distanceTolerance)\n        {\n            if (((a == null) && (b != null)) ||\n                ((a != null) && (b != null) && (Math.Abs(b.Value.Triangle.Distance - a.Value.Triangle.Distance) <= distanceTolerance)))\n            {\n                return true;\n            }\n            else\n            {\n                //  This will be returned also when ((a == null) && (b == null))\n                return false;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Utils/MyKeysToString.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Toolkit.Input;\nusing MinerWars.CommonLIB.AppCode.Utils;\n\nnamespace MinerWars.AppCode.Game.Utils\n{\n    class MyUtilKeyToString\n    {\n        public Keys Key;\n        public string Character;                //  Char/string when shift isn't pressed\n        public string CharacterWhenShift;       //  Char/string when shift IS pressed\n        public string Name;                     //  Name of this Key\n\n        public MyUtilKeyToString(Keys key, string character, string characterWhenShift, string name)\n        {\n            Key = key;\n            Character = character;\n            CharacterWhenShift = characterWhenShift;\n            Name = name;\n        }\n    }\n    static class MyKeysToString\n    {\n        static String[] m_systemKeyNamesLower = new String[256];\n        static String[] m_systemKeyNamesUpper = new String[256];\n\n        static MyKeysToString()\n        {\n            for (int i = 0; i < m_systemKeyNamesLower.Length; i++)\n            {\n                //m_systemKeyNamesLower[i] = ((Keys)i).ToString().ToLower();\n                //m_systemKeyNamesUpper[i] = ((Keys)i).ToString().ToUpper();\n\n                m_systemKeyNamesLower[i] = ((char)i).ToString().ToLower();\n                m_systemKeyNamesUpper[i] = ((char)i).ToString().ToUpper();\n            }\n        }\n\n        static MyUtilKeyToString[] m_keyToString = new MyUtilKeyToString[]{\n            new MyUtilKeyToString(Keys.Left, null, null, MyTextsWrapper.Get(MyTextsWrapperEnum.Left).ToString()),\n            new MyUtilKeyToString(Keys.Right, null, null, MyTextsWrapper.Get(MyTextsWrapperEnum.Right).ToString()),\n            new MyUtilKeyToString(Keys.Up, null, null, MyTextsWrapper.Get(MyTextsWrapperEnum.Up).ToString()),\n            new MyUtilKeyToString(Keys.Down, null, null, MyTextsWrapper.Get(MyTextsWrapperEnum.Down).ToString()),\n            new MyUtilKeyToString(Keys.Home, null, null, MyTextsWrapper.Get(MyTextsWrapperEnum.Home).ToString()),\n            new MyUtilKeyToString(Keys.End, null, null, MyTextsWrapper.Get(MyTextsWrapperEnum.End).ToString()),\n            new MyUtilKeyToString(Keys.Delete, null, null, MyTextsWrapper.Get(MyTextsWrapperEnum.Delete).ToString()),\n            new MyUtilKeyToString(Keys.Back, null, null, MyTextsWrapper.Get(MyTextsWrapperEnum.Backspace).ToString()),\n            new MyUtilKeyToString(Keys.Insert, null, null, MyTextsWrapper.Get(MyTextsWrapperEnum.Insert).ToString()),\n            new MyUtilKeyToString(Keys.PageDown, null, null, MyTextsWrapper.Get(MyTextsWrapperEnum.PageDown).ToString()),\n            new MyUtilKeyToString(Keys.PageUp,null, null, MyTextsWrapper.Get(MyTextsWrapperEnum.PageUp).ToString()),\n            new MyUtilKeyToString(Keys.LeftAlt, null, null, MyTextsWrapper.Get(MyTextsWrapperEnum.LeftAlt).ToString()),\n            new MyUtilKeyToString(Keys.LeftControl, null, null, MyTextsWrapper.Get(MyTextsWrapperEnum.LeftControl).ToString()),\n            new MyUtilKeyToString(Keys.LeftShift, null, null, MyTextsWrapper.Get(MyTextsWrapperEnum.LeftShift).ToString()),\n            new MyUtilKeyToString(Keys.RightAlt, null, null, MyTextsWrapper.Get(MyTextsWrapperEnum.RightAlt).ToString()),\n            new MyUtilKeyToString(Keys.RightControl, null, null, MyTextsWrapper.Get(MyTextsWrapperEnum.RightControl).ToString()),\n            new MyUtilKeyToString(Keys.RightShift, null, null, MyTextsWrapper.Get(MyTextsWrapperEnum.RightShift).ToString()),\n            \n            new MyUtilKeyToString(Keys.CapsLock, null, null, MyTextsWrapper.Get(MyTextsWrapperEnum.KeysCapsLock).ToString()),\n            new MyUtilKeyToString(Keys.Enter, null, null, MyTextsWrapper.Get(MyTextsWrapperEnum.KeysEnter).ToString()),\n            new MyUtilKeyToString(Keys.Tab, \"   \", \"    \", MyTextsWrapper.Get(MyTextsWrapperEnum.Tab).ToString()),\n            new MyUtilKeyToString(Keys.OemOpenBrackets, \"[\", \"{\", MyTextsWrapper.Get(MyTextsWrapperEnum.KeysOpenBracket).ToString()),\n            new MyUtilKeyToString(Keys.OemCloseBrackets, \"]\", \"}\", MyTextsWrapper.Get(MyTextsWrapperEnum.KeysCloseBracket).ToString()),\n            new MyUtilKeyToString(Keys.Multiply, \"*\", \"*\", MyTextsWrapper.Get(MyTextsWrapperEnum.KeysMultiply).ToString()),\n            new MyUtilKeyToString(Keys.Subtract, \"-\", \"-\", MyTextsWrapper.Get(MyTextsWrapperEnum.KeysSubtract).ToString()),\n            new MyUtilKeyToString(Keys.Add, \"+\", \"+\", MyTextsWrapper.Get(MyTextsWrapperEnum.KeysAdd).ToString()),\n            new MyUtilKeyToString(Keys.Divide, \"/\", \"/\", MyTextsWrapper.Get(MyTextsWrapperEnum.KeysDivide).ToString()),\n            new MyUtilKeyToString(Keys.NumPad0, \"0\", \"0\", MyTextsWrapper.Get(MyTextsWrapperEnum.NumPad0).ToString()),\n            new MyUtilKeyToString(Keys.NumPad1, \"1\", \"1\", MyTextsWrapper.Get(MyTextsWrapperEnum.NumPad1).ToString()),\n            new MyUtilKeyToString(Keys.NumPad2, \"2\", \"2\", MyTextsWrapper.Get(MyTextsWrapperEnum.NumPad2).ToString()),\n            new MyUtilKeyToString(Keys.NumPad3, \"3\", \"3\", MyTextsWrapper.Get(MyTextsWrapperEnum.NumPad3).ToString()),\n            new MyUtilKeyToString(Keys.NumPad4, \"4\", \"4\", MyTextsWrapper.Get(MyTextsWrapperEnum.NumPad4).ToString()),\n            new MyUtilKeyToString(Keys.NumPad5, \"5\", \"5\", MyTextsWrapper.Get(MyTextsWrapperEnum.NumPad5).ToString()),\n            new MyUtilKeyToString(Keys.NumPad6, \"6\", \"6\", MyTextsWrapper.Get(MyTextsWrapperEnum.NumPad6).ToString()),\n            new MyUtilKeyToString(Keys.NumPad7, \"7\", \"7\", MyTextsWrapper.Get(MyTextsWrapperEnum.NumPad7).ToString()),\n            new MyUtilKeyToString(Keys.NumPad8, \"8\", \"8\", MyTextsWrapper.Get(MyTextsWrapperEnum.NumPad8).ToString()),\n            new MyUtilKeyToString(Keys.NumPad9, \"9\", \"9\", MyTextsWrapper.Get(MyTextsWrapperEnum.NumPad9).ToString()),\n            new MyUtilKeyToString(Keys.Decimal, \".\", \".\", MyTextsWrapper.Get(MyTextsWrapperEnum.KeysDecimal).ToString()),\n            new MyUtilKeyToString(Keys.OemBackslash, \"\\\\\", \"|\", MyTextsWrapper.Get(MyTextsWrapperEnum.KeysBackslash).ToString()),\n            new MyUtilKeyToString(Keys.OemComma, \",\", \"<\", MyTextsWrapper.Get(MyTextsWrapperEnum.KeysComma).ToString()),\n            new MyUtilKeyToString(Keys.OemMinus, \"-\", \"_\", MyTextsWrapper.Get(MyTextsWrapperEnum.KeysMinus).ToString()),\n            new MyUtilKeyToString(Keys.OemPeriod, \".\", \">\", MyTextsWrapper.Get(MyTextsWrapperEnum.KeysPeriod).ToString()),\n            new MyUtilKeyToString(Keys.OemPipe, \"\\\\\", \"|\", MyTextsWrapper.Get(MyTextsWrapperEnum.KeysPipe).ToString()),\n            new MyUtilKeyToString(Keys.OemPlus, \"=\", \"+\", MyTextsWrapper.Get(MyTextsWrapperEnum.KeysPlus).ToString()),\n            new MyUtilKeyToString(Keys.OemQuestion, \"/\", \"?\", MyTextsWrapper.Get(MyTextsWrapperEnum.KeysQuestion).ToString()),\n            new MyUtilKeyToString(Keys.OemQuotes, \"\\'\", \"\\\"\", MyTextsWrapper.Get(MyTextsWrapperEnum.KeysQuotes).ToString()),\n            new MyUtilKeyToString(Keys.OemSemicolon, \";\", \":\", MyTextsWrapper.Get(MyTextsWrapperEnum.KeysSemicolon).ToString()),\n            new MyUtilKeyToString(Keys.OemTilde, \"`\", \"~\", MyTextsWrapper.Get(MyTextsWrapperEnum.KeysTilde).ToString()),\n            new MyUtilKeyToString(Keys.Space, \" \", \" \", MyTextsWrapper.Get(MyTextsWrapperEnum.Space).ToString()),\n            new MyUtilKeyToString(Keys.D0, \"0\", \")\", \"0\"),\n            new MyUtilKeyToString(Keys.D1, \"1\", \"!\", \"1\"),\n            new MyUtilKeyToString(Keys.D2, \"2\", \"@\", \"2\"),\n            new MyUtilKeyToString(Keys.D3, \"3\", \"#\", \"3\"),\n            new MyUtilKeyToString(Keys.D4, \"4\", \"$\", \"4\"),\n            new MyUtilKeyToString(Keys.D5, \"5\", \"%\", \"5\"),\n            new MyUtilKeyToString(Keys.D6, \"6\", \"^\", \"6\"),\n            new MyUtilKeyToString(Keys.D7, \"7\", \"&\", \"7\"),\n            new MyUtilKeyToString(Keys.D8, \"8\", \"*\", \"8\"),\n            new MyUtilKeyToString(Keys.D9, \"9\", \"(\", \"9\"),\n            new MyUtilKeyToString(Keys.F1, null, null, \"F1\"),\n            new MyUtilKeyToString(Keys.F2, null, null, \"F2\"),\n            new MyUtilKeyToString(Keys.F3, null, null, \"F3\"),\n            new MyUtilKeyToString(Keys.F4, null, null, \"F4\"),\n            new MyUtilKeyToString(Keys.F5, null, null, \"F5\"),\n            new MyUtilKeyToString(Keys.F6, null, null, \"F6\"),\n            new MyUtilKeyToString(Keys.F7, null, null, \"F7\"),\n            new MyUtilKeyToString(Keys.F8, null, null, \"F8\"),\n            new MyUtilKeyToString(Keys.F9, null, null, \"F9\"),\n            new MyUtilKeyToString(Keys.F10, null, null, \"F10\"),\n            new MyUtilKeyToString(Keys.F11, null, null, \"F11\"),\n            new MyUtilKeyToString(Keys.F12, null, null, \"F12\"),\n            new MyUtilKeyToString(Keys.F13, null, null, \"F13\"),\n            new MyUtilKeyToString(Keys.F14, null, null, \"F14\"),\n            new MyUtilKeyToString(Keys.F15, null, null, \"F15\"),\n            new MyUtilKeyToString(Keys.F16, null, null, \"F16\"),\n            new MyUtilKeyToString(Keys.F17, null, null, \"F17\"),\n            new MyUtilKeyToString(Keys.F18, null, null, \"F18\"),\n            new MyUtilKeyToString(Keys.F19, null, null, \"F19\"),\n            new MyUtilKeyToString(Keys.F20, null, null, \"F20\"),\n            new MyUtilKeyToString(Keys.F21, null, null, \"F21\"),\n            new MyUtilKeyToString(Keys.F22, null, null, \"F22\"),\n            new MyUtilKeyToString(Keys.F23, null, null, \"F23\"),\n            new MyUtilKeyToString(Keys.F24, null, null, \"F24\")};\n        \n        //  Return lowercase representation of key.\n        public static String GetKeyText(Keys key)\n        {\n            if ((int)key >= m_systemKeyNamesLower.Length)\n                return null;\n\n            String retVal = m_systemKeyNamesLower[(int)key];\n            if (retVal.Length > 1)\n            {\n                retVal = null;\n            }\n            for (int j = 0; j < m_keyToString.Length; j++)\n            {\n                if (m_keyToString[j].Key == key)\n                {\n                    retVal = m_keyToString[j].Character;\n                    break;\n                }\n            }\n\n            return retVal;\n        }\n\n        //  Return uppercase representation of key.\n        public static String GetShiftedKeyText(Keys key)\n        {\n            if ((int)key >= m_systemKeyNamesUpper.Length)\n                return null;\n\n            String retVal = m_systemKeyNamesUpper[(int)key];\n            if (retVal.Length > 1)\n            {\n                retVal = null;\n            }\n            for (int j = 0; j < m_keyToString.Length; j++)\n            {\n                if (m_keyToString[j].Key == key)\n                {\n                    retVal = m_keyToString[j].CharacterWhenShift;\n                    break;\n                }\n            }\n            return retVal;\n        }\n\n        //  Return the name of this key.\n        public static String GetKeyName(Keys key)\n        {\n            if ((int)key >= m_systemKeyNamesUpper.Length)\n                return null;\n\n            String retVal = m_systemKeyNamesUpper[(int)key];\n            for (int j = 0; j < m_keyToString.Length; j++)\n            {\n                if (m_keyToString[j].Key == key)\n                {\n                    retVal = m_keyToString[j].Name;\n                    break;\n                }\n            }\n            return retVal;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Utils/MyLineBatch.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nusing MinerWars.AppCode.Game.Utils.VertexFormats;\nusing MinerWars.AppCode.Game.Render;\nusing MinerWars.AppCode.Game.Effects;\n\nusing SharpDX.Direct3D9;\nusing SharpDX.Toolkit.Graphics;\n\nnamespace MinerWars.AppCode.Game.Utils\n{\n    using Vector2 = MinerWarsMath.Vector2;\n    using Vector3 = MinerWarsMath.Vector3;\n    using Vector4 = MinerWarsMath.Vector4;\n    using Rectangle = MinerWarsMath.Rectangle;\n    using Matrix = MinerWarsMath.Matrix;\n    using Color = MinerWarsMath.Color;\n    using BoundingBox = MinerWarsMath.BoundingBox;\n    using BoundingSphere = MinerWarsMath.BoundingSphere;\n    using BoundingFrustum = MinerWarsMath.BoundingFrustum;\n\n\n    public class MyLineBatch\n    {\n        Matrix view;\n        Matrix projection;\n        int maxSize = 0;\n        int numVertices = 0;\n        MyVertexFormatPositionColor[] lineData;\n\n        int numOSVertices = 0;\n        MyVertexFormatPositionColor[] onScreenLineData;\n\n\n        public MyLineBatch(Matrix view, Matrix projection, int size)\n        {\n            maxSize = 2 * size;\n            lineData = new MyVertexFormatPositionColor[maxSize];\n            onScreenLineData = new MyVertexFormatPositionColor[maxSize];\n        }\n\n        public void Begin()\n        {\n            numVertices = 0;\n            numOSVertices = 0;\n        }\n\n        public void End()\n        {\n            var effect = (MyEffectModelsDiffuse)MyRender.GetEffect(MyEffects.ModelDiffuse);\n\n            if (numVertices > 0)\n            {\n                //effect.Projection = Matrix.CreateOrthographicOffCenter(0.0F, device.Viewport.Width, device.Viewport.Height, 0.0F, 0.0F, -1.0F);\n                //effect.View = Matrix.Identity;\n                effect.SetWorldMatrix(Matrix.Identity);\n                effect.SetProjectionMatrix(ref MyCamera.ProjectionMatrix);\n                effect.SetViewMatrix(ref MyCamera.ViewMatrix);\n                effect.SetTechnique(MyEffectModelsDiffuse.Technique.PositionColor);\n\n                //  Draw the line\n                effect.Begin();\n\n                MinerWars.AppCode.App.MyMinerGame.Static.GraphicsDevice.VertexDeclaration = MyVertexFormatPositionColor.VertexDeclaration;\n                MinerWars.AppCode.App.MyMinerGame.Static.GraphicsDevice.DrawUserPrimitives(PrimitiveType.LineList, 0, numVertices / 2, lineData);\n\n                effect.End();\n            }\n\n            if (numOSVertices > 0)\n            {\n                //device.Clear(ClearOptions.DepthBuffer, Color.BlueViolet, 0, 0);\n\n                // you have to set these parameters for the basic effect to be able to draw on the screen\n                effect.SetWorldMatrix(Matrix.Identity);\n                effect.SetViewMatrix(Matrix.Identity);\n                effect.SetProjectionMatrix(Matrix.Identity);\n                effect.SetTechnique(MyEffectModelsDiffuse.Technique.PositionColor);\n                MinerWars.AppCode.App.MyMinerGame.Static.GraphicsDevice.VertexDeclaration = MyVertexFormatPositionColor.VertexDeclaration;\n\n                //  Draw the line\n                effect.Begin();\n                MinerWars.AppCode.App.MyMinerGame.Static.GraphicsDevice.DrawUserPrimitives(PrimitiveType.LineList, 0, numOSVertices / 2, onScreenLineData);\n                effect.End();\n            }\n        }\n\n        public void DrawLine(Vector3 v0, Vector3 v1, Color color)\n        {\n            if (numVertices + 2 < maxSize)\n            {\n                lineData[numVertices].Position = v0;\n                lineData[numVertices].Color = color.ToVector4();\n                lineData[numVertices + 1].Position = v1;\n                lineData[numVertices + 1].Color = color.ToVector4();\n                numVertices += 2;\n            }\n        }\n\n        public void DrawOnScreenLine(Vector3 v0, Vector3 v1, Color color)\n        {\n            if (numOSVertices + 2 < maxSize)\n            {\n                onScreenLineData[numOSVertices].Position = v0;\n                onScreenLineData[numOSVertices].Color = color.ToVector4();\n                onScreenLineData[numOSVertices + 1].Position = v1;\n                onScreenLineData[numOSVertices + 1].Color = color.ToVector4();\n                numOSVertices += 2;\n            }\n        }\n\n        public Vector3 Mul(Matrix m, Vector3 v)\n        {\n            return new Vector3(v.X * m.M11 + v.Y * m.M21 + v.Z * m.M31,\n                                v.X * m.M12 + v.Y * m.M22 + v.Z * m.M32,\n                                v.X * m.M13 + v.Y * m.M23 + v.Z * m.M33);\n        }\n\n        public void DrawLines(Vector3[] lineData, Color color)\n        {\n            // drawing in 3D requires you to define vertices of a certain type\n            // VertexPositionColor simply means a vertex with a position and color\n            MyVertexFormatPositionColor[] line = new MyVertexFormatPositionColor[lineData.Length];\n\n            for (int i = 0; i < lineData.Length; i++)\n            {\n                line[i] = new MyVertexFormatPositionColor(lineData[i], color.ToVector4());\n            }\n\n            var effect = (MyEffectModelsDiffuse)MyRender.GetEffect(MyEffects.ModelDiffuse);\n\n            // you have to set these parameters for the basic effect to be able to draw\n            // on the screen\n            effect.SetProjectionMatrix(MyCamera.ProjectionMatrix);\n            effect.SetViewMatrix(MyCamera.ViewMatrix);\n\n            // graphics card should use basic effect shader\n            effect.Begin();\n\n            // you have to tell the graphics card what kind of vertices it will be receiving\n            MinerWars.AppCode.App.MyMinerGame.Static.GraphicsDevice.VertexDeclaration = MyVertexFormatPositionColor.VertexDeclaration;\n            MinerWars.AppCode.App.MyMinerGame.Static.GraphicsDevice.DrawUserPrimitives(PrimitiveType.LineList, 0, lineData.Length, line);\n\n            effect.End();\n        }\n         \n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Utils/MyLoadingPerformance.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing SysUtils.Utils;\n\nnamespace MinerWars.AppCode.Game.Utils\n{\n    class MyLoadingPerformance\n    {\n        #region Singleton\n\n        /// <summary>\n        /// Gets the singleton instance.\n        /// </summary>\n        public static MyLoadingPerformance Instance\n        {\n            get { return m_instance ?? (m_instance = new MyLoadingPerformance()); }\n        }\n\n        static MyLoadingPerformance m_instance;\n\n        #endregion\n\n        public string LoadingName { get; set; }\n\n        private int m_voxelHandCount;\n        private Dictionary<uint, Tuple<int, string>> m_voxelCounts = new Dictionary<uint, Tuple<int, string>>(); \n        private TimeSpan m_loadingTime;\n\n        public bool IsTiming { get; private set; }\n\n        Stopwatch m_stopwatch;\n\n        private void Reset()\n        {\n            m_voxelHandCount = 0;\n            LoadingName = null;\n            m_loadingTime = TimeSpan.Zero;\n            m_voxelCounts.Clear();\n        }\n\n        public void StartTiming()\n        {\n            if (IsTiming)\n            {\n                return;\n            }\n\n            Reset();\n\n            IsTiming = true;\n            m_stopwatch = Stopwatch.StartNew();\n        }\n\n        public void AddVoxelHandCount(int count,uint entityID, string name)\n        {\n            if (IsTiming)\n            {\n                m_voxelHandCount += count;\n                if(!m_voxelCounts.ContainsKey(entityID)) m_voxelCounts.Add(entityID,new Tuple<int, string>(count,name));\n            }\n        }\n\n        public void FinishTiming()\n        {\n            m_stopwatch.Stop();\n            IsTiming = false;\n            m_loadingTime = m_stopwatch.Elapsed;\n\n            var myMwcStartSessionRequestTypeEnum = MyGuiScreenGamePlay.Static.GetSessionType();\n            if (myMwcStartSessionRequestTypeEnum != null &&  myMwcStartSessionRequestTypeEnum.Value == MyMwcStartSessionRequestTypeEnum.NEW_STORY)\n            {\n               Debug.Assert(m_voxelHandCount<=200 ,\"You have \" + m_voxelHandCount + \" voxel hands in sector, please export all of them. See the Log for more info. Section:LOADING REPORT FOR. \");\n            }\n            WriteToLog();\n        }\n\n        public void WriteToLog()\n        {\n            MyMwcLog.WriteLine(\"LOADING REPORT FOR: \" + LoadingName);\n            MyMwcLog.IncreaseIndent();\n            {\n                MyMwcLog.WriteLine(\"Loading time: \" + m_loadingTime);\n                MyMwcLog.WriteLine(\"Number of voxel hands total: \" + m_voxelHandCount);\n                MyMwcLog.IncreaseIndent();\n                {\n                    foreach (var voxelCount in m_voxelCounts)\n                    {\n                        if (voxelCount.Value.Item1 > 0) MyMwcLog.WriteLine(\"Asteroid: \" + voxelCount.Key + \" voxel hands: \" + voxelCount.Value.Item1+ \". Voxel File: \"+voxelCount.Value.Item2);\n                    }\n                }\n                MyMwcLog.DecreaseIndent();\n            }\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"END OF LOADING REPORT\");\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Utils/MyMaterialConstants.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing MinerWars.AppCode.Physics;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.AppCode.Game.Explosions;\nusing MinerWars.AppCode.Game.Decals;\n\nnamespace MinerWars.AppCode.Game\n{\n    //  Material type of a physical object. This value determine sound of collision, decal type, explosion type, etc.\n    public enum MyMaterialType\n    {\n        ROCK,\n        METAL,\n        GLASS,\n        SHIP,\n        PLAYERSHIP,\n        AMMO,\n    }\n\n    namespace Utils\n    {\n        internal struct MyMaterialTypeProperties\n        {\n            public MyExplosionParticlesTypeEnum ExplosionParticles; //Particles which should be made after explosion of this material\n            public float BulletHoleSizeMin, BulletHoleSizeMax; //Size of bullet hole\n            public MyDecalTexturesEnum BulletHoleDecal; //Texture of basic bullet hole \n            public MySoundCuesEnum BulletHitCue; //Sound of hit by basic bullet\n            public MySoundCuesEnum ExpBulletHitCue; //Sound of hit by explosive bullet\n\n            public MyRBMaterial PhysicsMaterial; //Physics material\n            public bool DoSparksOnCollision;\n            public bool DoSmokeOnCollision;\n        }\n\n        static class MyMaterialsConstants\n        {\n            public enum MyMaterialCollisionType\n            {\n                Start,\n                Touch,\n                End\n            }\n\n            static int MyMaterialTypeLength = Enum.GetValues(typeof(MyMaterialType)).Length;\n            static int MyMaterialCollisionTypeLength = Enum.GetValues(typeof(MyMaterialCollisionType)).Length;\n            static MySoundCuesEnum?[,,] CollisionCues = new MySoundCuesEnum?[MyMaterialCollisionTypeLength, MyMaterialTypeLength, MyMaterialTypeLength];\n            static Dictionary<int, MyMaterialTypeProperties> MaterialProperties = new Dictionary<int, MyMaterialTypeProperties>();\n\n            static MyMaterialsConstants()\n            {\n                //Rock material\n                MaterialProperties.Add((int)MyMaterialType.ROCK, new MyMaterialTypeProperties()\n                {\n                    ExplosionParticles = MyExplosionParticlesTypeEnum.EXPLOSIVE_AND_DIRTY,\n                    BulletHoleSizeMin = 0.5f,\n                    BulletHoleSizeMax = 1.0f,\n                    BulletHoleDecal = MyDecalTexturesEnum.BulletHoleOnRock,\n                    BulletHitCue = MySoundCuesEnum.ImpBulletHitRock,\n                    ExpBulletHitCue = MySoundCuesEnum.ImpExpHitRock,\n                    PhysicsMaterial = new MyRBMaterial(MyConstants.PHYSICS_STANDARD_STATIC_FRICTION, MyConstants.PHYSICS_STANDARD_DYNAMIC_FRICTION,\n                                    MyConstants.PHYSICS_STANDARD_RESTITUTION, 0),\n                    DoSparksOnCollision = false,\n                    DoSmokeOnCollision = true,\n                });\n\n                //Metal material\n                MaterialProperties.Add((int)MyMaterialType.METAL, new MyMaterialTypeProperties()\n                {\n                    ExplosionParticles = MyExplosionParticlesTypeEnum.EXPLOSIVE_ONLY,\n                    BulletHoleSizeMin = 0.33f,\n                    BulletHoleSizeMax = 0.49f,\n                    BulletHoleDecal = MyDecalTexturesEnum.BulletHoleOnMetal,\n                    BulletHitCue = MySoundCuesEnum.ImpBulletHitMetal,\n                    ExpBulletHitCue = MySoundCuesEnum.ImpExpHitMetal,\n                    PhysicsMaterial = new MyRBMaterial(MyConstants.PHYSICS_STANDARD_STATIC_FRICTION, MyConstants.PHYSICS_STANDARD_DYNAMIC_FRICTION,\n                                    MyConstants.PHYSICS_STANDARD_RESTITUTION, 1),\n                    DoSparksOnCollision = true,\n                    DoSmokeOnCollision = false,\n                });\n\n                //Glass material\n                MaterialProperties.Add((int)MyMaterialType.GLASS, new MyMaterialTypeProperties()\n                {\n                    ExplosionParticles = MyExplosionParticlesTypeEnum.EXPLOSIVE_ONLY,\n                    BulletHoleSizeMin = 0.5f,\n                    BulletHoleSizeMax = 1.0f,\n                    BulletHoleDecal = MyDecalTexturesEnum.BulletHoleOnMetal,\n                    BulletHitCue = MySoundCuesEnum.ImpBulletHitGlass,\n                    ExpBulletHitCue = MySoundCuesEnum.ImpExpHitGlass,\n                    PhysicsMaterial = new MyRBMaterial(MyConstants.PHYSICS_STANDARD_STATIC_FRICTION, MyConstants.PHYSICS_STANDARD_DYNAMIC_FRICTION,\n                                    MyConstants.PHYSICS_STANDARD_RESTITUTION, 2),\n                    DoSparksOnCollision = false,\n                    DoSmokeOnCollision = false,\n                });\n\n                //Ship material\n                MaterialProperties.Add((int)MyMaterialType.SHIP, new MyMaterialTypeProperties()\n                {\n                    ExplosionParticles = MyExplosionParticlesTypeEnum.EXPLOSIVE_ONLY,\n                    BulletHoleSizeMin = 0.165f,\n                    BulletHoleSizeMax = 0.33f,\n                    BulletHoleDecal = MyDecalTexturesEnum.BulletHoleOnMetal,\n                    BulletHitCue = MySoundCuesEnum.ImpBulletHitMetal,\n                    ExpBulletHitCue = MySoundCuesEnum.ImpExpHitMetal,\n                    PhysicsMaterial = new MyRBMaterial(MyConstants.PHYSICS_STANDARD_STATIC_FRICTION, MyConstants.PHYSICS_STANDARD_DYNAMIC_FRICTION,\n                                    MyConstants.PHYSICS_BOT_RESTITUTION, 3),\n                    DoSparksOnCollision = true,\n                    DoSmokeOnCollision = false,\n                });\n\n                //Player ship material (handled in MyAudio)\n                MaterialProperties.Add((int)MyMaterialType.PLAYERSHIP, new MyMaterialTypeProperties()\n                {\n                    ExplosionParticles = MyExplosionParticlesTypeEnum.EXPLOSIVE_ONLY,\n                    BulletHoleSizeMin = 0.1f,\n                    BulletHoleSizeMax = 0.2f,\n                    BulletHoleDecal = MyDecalTexturesEnum.BulletHoleOnMetal,\n                    BulletHitCue = MySoundCuesEnum.ImpBulletHitShip,\n                    ExpBulletHitCue = MySoundCuesEnum.ImpExpHitShip,\n                    PhysicsMaterial = new MyRBMaterial(0.05f, 0.01f, 0.001f, 4),\n                    DoSparksOnCollision = true,\n                    DoSmokeOnCollision = false,\n                });\n\n                //Metal material\n                MaterialProperties.Add((int)MyMaterialType.AMMO, new MyMaterialTypeProperties()\n                {\n                    ExplosionParticles = MyExplosionParticlesTypeEnum.EXPLOSIVE_ONLY,\n                    BulletHoleSizeMin = 0.33f,\n                    BulletHoleSizeMax = 0.49f,\n                    BulletHoleDecal = MyDecalTexturesEnum.BulletHoleOnMetal,\n                    BulletHitCue = MySoundCuesEnum.ImpBulletHitMetal,\n                    ExpBulletHitCue = MySoundCuesEnum.ImpExpHitMetal,\n                    PhysicsMaterial = new MyRBMaterial(MyConstants.PHYSICS_STANDARD_STATIC_FRICTION, MyConstants.PHYSICS_STANDARD_DYNAMIC_FRICTION,\n                                    MyConstants.PHYSICS_AMMO_RESTITUTION, 1),\n                    DoSparksOnCollision = true,\n                    DoSmokeOnCollision = false,\n                });\n\n                //Default collision sounds\n                for (int t = 0; t < MyMaterialCollisionTypeLength; t++)\n                    for (int i =0; i < MyMaterialTypeLength; i++)\n                        for (int j = 0; j < MyMaterialTypeLength; j++)\n                        {\n                            AddCollisionCue((MyMaterialCollisionType)t, (MyMaterialType)i, (MyMaterialType)j, MySoundCuesEnum.ImpRockCollideMetal);\n                        }\n\n                //Collision sounds\n                AddCollisionCue(MyMaterialCollisionType.Start, MyMaterialType.SHIP, MyMaterialType.METAL, MySoundCuesEnum.ImpShipCollideMetal);\n                AddCollisionCue(MyMaterialCollisionType.Start, MyMaterialType.SHIP, MyMaterialType.AMMO, MySoundCuesEnum.ImpShipCollideMetal);\n                AddCollisionCue(MyMaterialCollisionType.Start, MyMaterialType.SHIP, MyMaterialType.ROCK, MySoundCuesEnum.ImpShipCollideRock);\n                AddCollisionCue(MyMaterialCollisionType.Start, MyMaterialType.ROCK, MyMaterialType.METAL, MySoundCuesEnum.ImpRockCollideMetal);\n                AddCollisionCue(MyMaterialCollisionType.Start, MyMaterialType.ROCK, MyMaterialType.AMMO, MySoundCuesEnum.ImpRockCollideMetal);\n                AddCollisionCue(MyMaterialCollisionType.Start, MyMaterialType.ROCK, MyMaterialType.ROCK, MySoundCuesEnum.ImpRockCollideRock);\n                AddCollisionCue(MyMaterialCollisionType.Start, MyMaterialType.PLAYERSHIP, MyMaterialType.METAL, MySoundCuesEnum.ImpPlayerShipCollideMetal);\n                AddCollisionCue(MyMaterialCollisionType.Start, MyMaterialType.PLAYERSHIP, MyMaterialType.AMMO, MySoundCuesEnum.ImpPlayerShipCollideMetal);\n                AddCollisionCue(MyMaterialCollisionType.Start, MyMaterialType.PLAYERSHIP, MyMaterialType.ROCK, MySoundCuesEnum.ImpPlayerShipCollideRock);\n                AddCollisionCue(MyMaterialCollisionType.Start, MyMaterialType.PLAYERSHIP, MyMaterialType.SHIP, MySoundCuesEnum.ImpPlayerShipCollideShip);\n                \n                //Scrape sounds\n                AddCollisionCue(MyMaterialCollisionType.Touch, MyMaterialType.PLAYERSHIP, MyMaterialType.METAL, MySoundCuesEnum.ImpPlayerShipScrapeShipLoop);\n                AddCollisionCue(MyMaterialCollisionType.Touch, MyMaterialType.PLAYERSHIP, MyMaterialType.AMMO, MySoundCuesEnum.ImpPlayerShipScrapeShipLoop);\n                AddCollisionCue(MyMaterialCollisionType.Touch, MyMaterialType.PLAYERSHIP, MyMaterialType.ROCK, MySoundCuesEnum.ImpPlayerShipScrapeShipLoop);\n                AddCollisionCue(MyMaterialCollisionType.Touch, MyMaterialType.PLAYERSHIP, MyMaterialType.SHIP, MySoundCuesEnum.ImpPlayerShipScrapeShipLoop);\n\n                AddCollisionCue(MyMaterialCollisionType.End, MyMaterialType.PLAYERSHIP, MyMaterialType.SHIP, null);\n                AddCollisionCue(MyMaterialCollisionType.End, MyMaterialType.PLAYERSHIP, MyMaterialType.METAL, null);\n                AddCollisionCue(MyMaterialCollisionType.End, MyMaterialType.PLAYERSHIP, MyMaterialType.AMMO, null);\n                AddCollisionCue(MyMaterialCollisionType.End, MyMaterialType.PLAYERSHIP, MyMaterialType.ROCK, null);\n            }\n\n            public static MyMaterialTypeProperties GetMaterialProperties(MyMaterialType materialType)\n            {\n                return MaterialProperties[(int)materialType];\n            }\n\n            public static void AddCollisionCue(MyMaterialCollisionType type,MyMaterialType materialType1, MyMaterialType materialType2, MySoundCuesEnum? cue)\n            {\n                CollisionCues[(int)type, (int)materialType1, (int)materialType2] = cue;\n                CollisionCues[(int)type, (int)materialType2, (int)materialType1] = cue;\n            }\n\n            public static MySoundCuesEnum? GetCollisionCue(MyMaterialCollisionType type, MyMaterialType materialType1, MyMaterialType materialType2)\n            {\n                return CollisionCues[(int)type, (int)materialType1, (int)materialType2];\n            }\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Utils/MyMath.cs",
    "content": "﻿\nusing System;\nusing MinerWarsMath;\nusing MinerWars.CommonLIB.AppCode.Utils;\n\nnamespace MinerWars.AppCode.Game.Utils\n{\n    static class MyMath\n    {\n        private static Vector3[] m_corners = new Vector3[8];\n        //Number of steps dividing whole circle\n        private const int ANGLE_GRANULARITY = 2*314;\n        private static readonly float OneOverRoot3 = (float)Math.Pow(3, -0.5f);\n\n        static float[] m_precomputedValues = new float[ANGLE_GRANULARITY];\n\n        public static Vector3 Vector3One = Vector3.One;\n\n        public static void Init()\n        {\n            for (int i = 0; i < 2*314; i++)\n            {\n                m_precomputedValues[i] = (float)Math.Sin(i / 100.0f);\n            }\n        }\n\n        public static float FastSin(float angle)\n        {\n            //Reduce angle to interval 0-2PI\n            int angleInt = (int)(angle * 100.0f);\n            angleInt = angleInt % ANGLE_GRANULARITY;\n            if (angleInt < 0)\n                angleInt += ANGLE_GRANULARITY;\n\n            return m_precomputedValues[angleInt];\n        }\n\n        public static float FastCos(float angle)\n        {\n            return FastSin(angle + MathHelper.PiOver2);\n        }\n\n        //Creates rotation matrix from direction (dir must be normalized)\n        public static Matrix MatrixFromDir(Vector3 dir)\n        {\n            Vector3 right = new Vector3(0.0f,0.0f,1.0f);\n            Vector3 up;\n            float d = dir.Z;\n\n            if (d > -0.99999 && d < 0.99999)\n            { // to avoid problems with normalize in special cases\t\t\n                right = right - dir * d;\n                right = MyMwcUtils.Normalize(right);\n                up = Vector3.Cross(dir, right);\n            }\n            else\n            { //dir lies with z axis\n                right = new Vector3(dir.Z, 0, -dir.X);\n                up = new Vector3(0, 1, 0);\n            };\n\n            Matrix m = Matrix.Identity;\n            m.Right = right;\n            m.Up = up;\n            m.Forward = dir;\n\n            return m;\n        }\n\n        public static Matrix NormalizeMatrix(Matrix matrix)\n        {\n            Matrix m = matrix;\n            m.Right = MyMwcUtils.Normalize(m.Right);\n            m.Up = MyMwcUtils.Normalize(m.Up);\n            m.Forward = MyMwcUtils.Normalize(m.Forward);\n            return m;\n        }\n\n        public static float NormalizeAngle(float angle, float center = 0.0f)\n        {\n            return angle - MathHelper.TwoPi * (float)Math.Floor((double)((angle + MathHelper.Pi - center) / MathHelper.TwoPi));\n        }\n\n        /// <summary>\n        /// ArcTanAngle\n        /// </summary>\n        /// <returns>ArcTan angle between x and y</returns>\n        public static float ArcTanAngle(float x, float y)\n        {\n            if (x == 0.0f)\n            {\n                if (y == 1.0f)\n                {\n                    return (float)MathHelper.PiOver2;\n                }\n                else\n                {\n                    return (float)-MathHelper.PiOver2;\n                }\n            }\n            else if (x > 0.0f)\n                return (float)Math.Atan(y / x);\n            else if (x < 0.0f)\n            {\n                if (y > 0.0f)\n                    return (float)Math.Atan(y / x) + MathHelper.Pi;\n                else\n                    return (float)Math.Atan(y / x) - MathHelper.Pi;\n            }\n            else\n                return 0.0f;\n        }\n\n        public static Vector3 Abs(ref Vector3 vector)\n        {\n            return new Vector3(Math.Abs(vector.X), Math.Abs(vector.Y), Math.Abs(vector.Z));\n        }\n\n        /// <summary>\n        /// Return vector with each component max\n        /// </summary>\n        /// <param name=\"a\"></param>\n        /// <param name=\"b\"></param>\n        /// <returns></returns>\n        public static Vector3 MaxComponents(ref Vector3 a, ref Vector3 b)\n        {\n            return new Vector3(MathHelper.Max(a.X, b.X), MathHelper.Max(a.Y, b.Y), MathHelper.Max(a.Z, b.Z));\n        }\n\n        /// <summary>\n        /// AngleTo \n        /// </summary>\n        /// <returns>Angle between the vector lines</returns>\n        public static Vector3 AngleTo(Vector3 From, Vector3 Location)\n        {\n            Vector3 angle = Vector3.Zero;\n            Vector3 v = Vector3.Normalize(Location - From);\n            angle.X = (float)Math.Asin(v.Y);\n            angle.Y = ArcTanAngle(-v.Z, -v.X);\n            return angle;\n        }\n\n        public static float AngleBetween(Vector3 a, Vector3 b)\n        {\n            var dotProd = Vector3.Dot(a, b);\n            var lenProd = a.Length() * b.Length();\n            var divOperation = dotProd / lenProd;\n            if (MyMwcUtils.IsZero(1.0f - divOperation))\n                return 0;\n            else\n                return (float)(Math.Acos(divOperation));\n        }\n\n        /// <summary>\n        /// QuaternionToEuler \n        /// </summary>\n        /// <returns>Converted quaternion to the euler pitch, rot, yaw</returns>\n        public static Vector3 QuaternionToEuler(Quaternion Rotation)\n        {\n            Vector3 forward = Vector3.Transform(Vector3.Forward, Rotation);\n            Vector3 up = Vector3.Transform(Vector3.Up, Rotation);\n            Vector3 rotationAxes = AngleTo(new Vector3(), forward);\n            if (rotationAxes.X == MathHelper.PiOver2)\n            {\n                rotationAxes.Y = ArcTanAngle(up.Z, up.X);\n                rotationAxes.Z = 0.0f;\n            }\n            else if (rotationAxes.X == -MathHelper.PiOver2)\n            {\n                rotationAxes.Y = ArcTanAngle(-up.Y, -up.X);\n                rotationAxes.Z = 0.0f;\n            }\n            else\n            {\n                up = Vector3.Transform(up, Matrix.CreateRotationY(-rotationAxes.Y));\n                up = Vector3.Transform(up, Matrix.CreateRotationX(-rotationAxes.X));\n                rotationAxes.Z = ArcTanAngle(up.Y, -up.X);\n            }\n            return rotationAxes;\n        }\n\n\n        /// <summary>\n        /// CreateInvalidAABB\n        /// </summary>\n        /// <returns></returns>\n        public static BoundingBox CreateInvalidAABB()\n        {\n            BoundingBox aabb = new BoundingBox();\n            aabb = aabb.CreateInvalid();\n            return aabb;\n        }\n\n\n        /// <summary>\n        /// retrun center of bb\n        /// </summary>\n        /// <param name=\"bbox\"></param>\n        /// <returns></returns>\n        public static Vector3 GetCenter(this BoundingBox bbox)\n        {\n            return (bbox.Max + bbox.Min) / 2.0f;\n        }\n\n        /// <summary>\n        /// Intersects\n        /// </summary>\n        /// <param name=\"bbox\"></param>\n        /// <param name=\"point\"></param>\n        /// <returns></returns>\n        public static bool Intersects(this BoundingBox bbox, ref Vector3 point)\n        {\n            return ((point.X >= bbox.Min.X && point.X <= bbox.Max.X) && (point.Y >= bbox.Min.Y && point.Y <= bbox.Max.Y) && (point.Z >= bbox.Min.Z && point.Z <= bbox.Max.Z));\n        }\n\n\n        /// <summary>\n        /// This projection results to initial velocity of non-engine objects, which parents move in some velocity\n        /// We want to add only forward speed of the parent to the forward direction of the object, and if parent\n        /// is going backward, no speed is added.\n        /// </summary>\n        /// <param name=\"forwardVector\"></param>\n        /// <param name=\"projectedVector\"></param>\n        /// <returns></returns>\n        public static Vector3 ForwardVectorProjection(Vector3 forwardVector, Vector3 projectedVector)\n        {\n            Vector3 forwardVelocity = forwardVector;\n\n            if (Vector3.Dot(projectedVector, forwardVector) > 0)\n            {  //going forward\n                forwardVelocity = forwardVector.Project(projectedVector + forwardVector);\n                return forwardVelocity;\n            }\n\n            return Vector3.Zero;\n        }\n\n        /// <summary>\n        /// Returns nearest bigger power of two\n        /// </summary>\n        /// <param name=\"f\"></param>\n        /// <returns></returns>\n        public static int GetNearestBiggerPowerOfTwo(float f)\n        {\n            int x = 1;  \n            while(x < f) \n            {    \n                x <<= 1;  \n            }\n\n            return x;\n        }\n\n\n        public static BoundingBox CreateFromInsideRadius(float radius)\n        {\n            float halfSize = OneOverRoot3 * radius;\n            return new BoundingBox(-new Vector3(halfSize), new Vector3(halfSize));\n        }\n\n        /// <summary>\n        /// Calculates color from vector\n        /// </summary>\n        public static Vector3 VectorFromColor(byte red, byte green, byte blue)\n        {\n            return new Vector3(red / 255.0f, green / 255.0f, blue / 255.0f);\n        }\n        public static Vector4 VectorFromColor(byte red, byte green, byte blue, byte alpha)\n        {\n            return new Vector4(red / 255.0f, green / 255.0f, blue / 255.0f, alpha / 255.0f);\n        }\n\n        \n        /// <summary>\n        /// Return minimum distance between line segment v-w and point p.\n        /// </summary>\n        public static float DistanceSquaredFromLineSegment(Vector3 v, Vector3 w, Vector3 p)\n        {\n            Vector3 d = w - v;\n            float l = d.LengthSquared();\n            if (l == 0) return Vector3.DistanceSquared(p, v);   // v == w case\n\n            float t = Vector3.Dot(p - v, d);\n            if (t <= 0) return Vector3.DistanceSquared(p, v);       // Beyond the 'v' end of the segment\n            else if (t >= l) return Vector3.DistanceSquared(p, w);  // Beyond the 'w' end of the segment\n            else return Vector3.DistanceSquared(p, v + (t/l)*d);        // On the segment\n        }\n    }\n\n    /// <summary>\n    /// Usefull Vector3 extensions\n    /// </summary>\n    public static class Vector3Extensions\n    {\n        /// <summary>\n        /// Calculates projection vector\n        /// </summary>\n        /// <param name=\"sb\">The sb.</param>\n        /// <param name=\"length\">The length.</param>\n        public static Vector3 Project(this Vector3 projectedOntoVector, Vector3 projectedVector)\n        {\n            float dotProduct = 0.0f;\n            dotProduct = Vector3.Dot(projectedVector, projectedOntoVector);\n\n            Vector3 projectedOutputVector = (dotProduct / projectedOntoVector.LengthSquared()) * projectedOntoVector;\n            return projectedOutputVector;\n        }\n    }\n\n    public static class BoundingBoxExtensions\n    {\n        /// <summary>\n        /// \n        /// </summary>\n        private static Vector3[] temporaryCorners = new Vector3[8];\n\n        /// <summary>\n        /// Translate\n        /// </summary>\n        /// <param name=\"bbox\"></param>\n        /// <param name=\"worldMatrix\"></param>\n        /// <returns></returns>\n        public static BoundingBox Translate(this BoundingBox bbox, Matrix worldMatrix)\n        {\n            bbox.Min += worldMatrix.Translation;\n            bbox.Max += worldMatrix.Translation;\n            return bbox;\n        }\n\n\n        /// <summary>\n        /// Translate\n        /// </summary>\n        /// <param name=\"bbox\"></param>\n        /// <param name=\"vctTranlsation\"></param>\n        /// <returns></returns>\n        public static BoundingBox Translate(this BoundingBox bbox, Vector3 vctTranlsation)\n        {\n            bbox.Min += vctTranlsation;\n            bbox.Max += vctTranlsation;\n            return bbox;\n        }\n\n        /// <summary>\n        /// Size\n        /// </summary>\n        /// <returns></returns>\n        public static Vector3 Size(this BoundingBox bbox)\n        {\n            return bbox.Max - bbox.Min;\n        }\n\n\n        public static BoundingBox Transform(this BoundingBox bbox, Matrix worldMatrix)\n        {\n            BoundingBox oobb = MyMath.CreateInvalidAABB();\n            \n            lock (temporaryCorners)\n            {\n                bbox.GetCorners(temporaryCorners);\n\n                foreach (Vector3 vct in temporaryCorners)\n                {\n                    Vector3 vctTransformed = Vector3.Transform(vct, worldMatrix);\n                    oobb = oobb.Include(ref vctTransformed);\n                }\n            }\n\n            return oobb;\n        }\n\n\n        /// <summary>\n        /// return expanded aabb (abb include point)\n        /// </summary>\n        /// <param name=\"bbox\"></param>\n        /// <param name=\"point\"></param>\n        /// <returns></returns>\n        public static BoundingBox Include(this BoundingBox bbox, ref Vector3 point)\n        {\n            if (point.X < bbox.Min.X)\n                bbox.Min.X = point.X;\n\n            if (point.Y < bbox.Min.Y)\n                bbox.Min.Y = point.Y;\n\n            if (point.Z < bbox.Min.Z)\n                bbox.Min.Z = point.Z;\n\n\n            if (point.X > bbox.Max.X)\n                bbox.Max.X = point.X;\n\n            if (point.Y > bbox.Max.Y)\n                bbox.Max.Y = point.Y;\n\n            if (point.Z > bbox.Max.Z)\n                bbox.Max.Z = point.Z;\n\n            return bbox;\n        }\n\n        /// <summary>\n        /// return expanded aabb (abb include point)\n        /// </summary>\n        /// <param name=\"bbox\"></param>\n        /// <param name=\"point\"></param>\n        /// <returns></returns>\n        public static BoundingBox Include(this BoundingBox bbox, ref BoundingBox box)\n        {\n            bbox.Min = Vector3.Min(bbox.Min, box.Min);\n            bbox.Max = Vector3.Max(bbox.Max, box.Max);\n            return bbox;\n        }\n\n        public static BoundingBox CreateInvalid(this BoundingBox bbox)\n        {\n            Vector3 vctMin = new Vector3(float.MaxValue, float.MaxValue, float.MaxValue);\n            Vector3 vctMax = new Vector3(float.MinValue, float.MinValue, float.MinValue);\n\n            bbox.Min = vctMin;\n            bbox.Max = vctMax;\n\n            return bbox;\n        }\n\n        /// <summary>\n        /// return perimeter of edges\n        /// </summary>\n        /// <returns></returns>\n        public static float Perimeter(this BoundingBox bbox)\n        {\n            float wx = bbox.Max.X - bbox.Min.X;\n            float wy = bbox.Max.Y - bbox.Min.Y;\n            float wz = bbox.Max.Z - bbox.Min.Z;\n\n            return 4.0f * (wx + wy + wz);\n        }\n\n        public static void Inflate(this BoundingBox bbox, float size)\n        {\n            bbox.Max += new Vector3(size);\n            bbox.Min -= new Vector3(size);\n        }\n    }\n\n    public static class BoundingFrustumExtensions\n    {\n        /// <summary>\n        /// Creates bounding sphere from bounding frustum.\n        /// Implementation taken from XNA source, replace IEnumerable with array\n        /// </summary>\n        /// <param name=\"frustum\">The bounding frustum.</param>\n        /// <param name=\"corners\">Temporary memory to save corner when getting from frustum.</param>\n        /// <returns>BoundingSphere</returns>\n        public static BoundingSphere ToBoundingSphere(this BoundingFrustum frustum, Vector3[] corners)\n        {\n            float num;\n            float num2;\n            Vector3 vector2;\n            float num4;\n            float num5;\n            BoundingSphere sphere;\n            Vector3 vector5;\n            Vector3 vector6;\n            Vector3 vector7;\n            Vector3 vector8;\n            Vector3 vector9;\n\n            if (corners.Length < 8)\n            {\n                throw new ArgumentException(\"Corners length must be at least 8\");\n            }\n\n            frustum.GetCorners(corners);\n\n            Vector3 vector4 = vector5 = vector6 = vector7 = vector8 = vector9 = corners[0];\n\n            for (int i = 0; i < corners.Length; i++)\n            {\n                Vector3 vector = corners[i];\n\n                if (vector.X < vector4.X)\n                {\n                    vector4 = vector;\n                }\n                if (vector.X > vector5.X)\n                {\n                    vector5 = vector;\n                }\n                if (vector.Y < vector6.Y)\n                {\n                    vector6 = vector;\n                }\n                if (vector.Y > vector7.Y)\n                {\n                    vector7 = vector;\n                }\n                if (vector.Z < vector8.Z)\n                {\n                    vector8 = vector;\n                }\n                if (vector.Z > vector9.Z)\n                {\n                    vector9 = vector;\n                }\n            }\n            Vector3.Distance(ref vector5, ref vector4, out num5);\n            Vector3.Distance(ref vector7, ref vector6, out num4);\n            Vector3.Distance(ref vector9, ref vector8, out num2);\n            if (num5 > num4)\n            {\n                if (num5 > num2)\n                {\n                    Vector3.Lerp(ref vector5, ref vector4, 0.5f, out vector2);\n                    num = num5 * 0.5f;\n                }\n                else\n                {\n                    Vector3.Lerp(ref vector9, ref vector8, 0.5f, out vector2);\n                    num = num2 * 0.5f;\n                }\n            }\n            else if (num4 > num2)\n            {\n                Vector3.Lerp(ref vector7, ref vector6, 0.5f, out vector2);\n                num = num4 * 0.5f;\n            }\n            else\n            {\n                Vector3.Lerp(ref vector9, ref vector8, 0.5f, out vector2);\n                num = num2 * 0.5f;\n            }\n            for (int i = 0; i < corners.Length; i++)\n            {\n                Vector3 vector10 = corners[i];\n\n                Vector3 vector3;\n                vector3.X = vector10.X - vector2.X;\n                vector3.Y = vector10.Y - vector2.Y;\n                vector3.Z = vector10.Z - vector2.Z;\n                float num3 = vector3.Length();\n                if (num3 > num)\n                {\n                    num = (num + num3) * 0.5f;\n                    vector2 += (Vector3)((1f - (num / num3)) * vector3);\n                }\n            }\n            sphere.Center = vector2;\n            sphere.Radius = num;\n            return sphere;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Utils/MyMemoryProfiler.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing SysUtils.Utils;\nusing MinerWars.AppCode.Game.GUI;\n\nnamespace MinerWars.AppCode.Game.Utils\n{\n//#if MEMORY_PROFILER\n    class MyMemoryProfiler\n    {\n        static List<MyMemoryLogs.MyMemoryEvent> m_managed;\n        static List<MyMemoryLogs.MyMemoryEvent> m_native;\n        static List<MyMemoryLogs.MyMemoryEvent> m_timed;\n        static List<MyMemoryLogs.MyMemoryEvent> m_events;\n\n        static bool m_initialized = false;\n\n        static bool Enabled = false;\n\n        static Vector2 GraphOffset = new Vector2(0.1f, 0.5f);\n        static Vector2 GraphSize = new Vector2(0.8f, -0.3f);\n\n        static void SaveSnapshot()\n        {\n\n        }\n\n        static MyMemoryLogs.MyMemoryEvent GetEventFromCursor(Vector2 screenPosition)\n        {\n            // Transform to internal space:\n            // x = time\n            // y = allocated memory\n            Vector2 position = screenPosition;// (screenPosition - GraphOffset) * GraphSize;\n\n            for (int i = 0; i < m_events.Count; i++)\n            {\n                float startTime = (float)(m_events[i].StartTime - m_events[0].StartTime).TotalSeconds;\n                float endTime = (float)(m_events[i].EndTime - m_events[0].StartTime).TotalSeconds;\n\n                if (position.X >= startTime && position.X <= endTime)\n                {\n                    if (position.Y >= 0 && position.Y <= m_events[i].ProcessEndSize)\n                        return m_events[i];\n                }\n            }\n\n            return null;\n        }\n\n//         static public void DumpLoadedMemory(float minimumMegabytesToDump)\n//         {\n//             float minimumInBytes = 0;// minimumMegabytesToDump * 1024 * 1024;\n// \n//             m_events = MyMemoryLogs.GetEvents();\n//             StringBuilder sb = new StringBuilder(100000);\n//             StringBuilder sb2 = new StringBuilder(100);\n// \n//             sb.AppendLine(\"\\n\\nMemory dump for events larger than \" + minimumMegabytesToDump + \"MB:\\n\");\n// \n//             sb.AppendLine(\"Managed /  Process \\n\");\n// \n//             float sumManaged = 0;\n//             float sumProcess = 0;\n// \n//             for (int i = 0; i < m_events.Count; i++)\n//             {\n//                 MyMemoryLogs.MyMemoryEvent ev = m_events[i];\n// \n//                 if (ev.Indent == 1)\n//                 {\n//                     sumManaged += ev.ManagedDelta;\n//                     sumProcess += ev.ProcessDelta;\n//                 }\n// \n//                 if (ev.ManagedDelta >= minimumInBytes || ev.ProcessDelta >= minimumInBytes)\n//                 {\n//                     sb2.Clear();\n//                     sb2.Append(String.Format(\"{0,7:0.0}\", ev.ManagedDelta / (1024 * 1024)));\n//                     sb2.Append(\" / \");\n//                     sb2.Append(String.Format(\"{0,7:0.0}\", ev.ProcessDelta / (1024 * 1024)));\n//                     sb2.Append(\"\\t\");\n// \n//                     for (int k = 0; k < ev.Indent; k++ )\n//                         sb2.Append(\"\\t\");\n//                     \n//                     sb2.Append(ev.Name);\n//                     sb2.Append(\" \");\n//                     sb.AppendLine(sb2.ToString());\n//                 }\n//             }\n// \n//             sb.AppendLine(\"\\nTotal managed: \" + (sumManaged / (1024 * 1024)) + \"   Total process: \" + (sumProcess / (1024 * 1024)) + \"\\n\\n\");\n// \n//             MyMwcLog.Write(sb.ToString());\n//         }\n\n        static public void Draw()\n        {\n            //return;\n          //  if (!Enabled) \n            //    return;\n\n            if (!m_initialized)\n            {\n                m_managed = MyMemoryLogs.GetManaged();\n                m_native = MyMemoryLogs.GetNative();\n                m_timed = MyMemoryLogs.GetTimed();\n                m_events = MyMemoryLogs.GetEvents();\n                m_initialized = true;\n            }\n\n            float totalTime = 0;\n            float maxMB = 0;\n            float totalMB = 0;\n\n            if (m_events.Count > 0)\n            {\n                TimeSpan span = m_events[m_events.Count - 1].EndTime - m_events[0].StartTime;\n                totalTime = (float)span.TotalSeconds;\n            }\n\n            for (int i = 0; i < m_events.Count; i++)\n            {\n\n                //totalTime += m_events[i].DeltaTime;\n                totalMB += m_events[i].ProcessDelta;\n                maxMB = Math.Max(maxMB, m_events[i].ProcessStartSize);\n                maxMB = Math.Max(maxMB, m_events[i].ProcessEndSize);\n            }\n\n\n            Vector2 cursorPos = MinerWars.AppCode.Game.GUI.Core.MyGuiManager.MouseCursorPosition;\n            //cursorPos\n            Vector2 timeAndMemory = (cursorPos - GraphOffset) * new Vector2(GraphSize.X, GraphSize.Y);\n            timeAndMemory *= new Vector2(totalTime, maxMB);\n\n            MyMemoryLogs.MyMemoryEvent selectedEvent = GetEventFromCursor(timeAndMemory);\n\n            if (selectedEvent != null)\n            {\n                StringBuilder sb = new StringBuilder(100);\n                sb.Append(selectedEvent.Name);\n                MyDebugDraw.DrawText(new Vector2(100, 100), sb, Color.YellowGreen, 1);\n            }\n            \n            //float time = 0;\n            float invMaxMB = maxMB > 0 ? 1 / maxMB : 0;\n            float invTotalTime = totalTime > 0 ? 1 / totalTime : 0;\n\n            int colorCnt = 0;\n            //int eventCnt = 0;\n            foreach (MyMemoryLogs.MyMemoryEvent ev in m_events)\n            {\n                float startTime = (float)(ev.StartTime - m_events[0].StartTime).TotalSeconds;\n                float endTime = (float)(ev.EndTime - m_events[0].StartTime).TotalSeconds;\n\n                float x0 = startTime * invTotalTime;\n                //time += ev.DeltaTime;\n                float x1 = endTime * invTotalTime + 0.1f;\n\n                float deltaTime = (endTime - startTime) * invTotalTime;\n                \n//                 if (1000 * Math.Abs(x0 - x1) < 1)\n//                 {\n//                     x1 += 0.1f;\n//                 }\n\n                //x1 = ++eventCnt / 600.0f;\n\n                float y0 = ev.ManagedStartSize * invMaxMB;\n                float y1 = ev.ManagedEndSize * invMaxMB;\n\n                float z0 = ev.ProcessStartSize * invMaxMB;\n                float z1 = ev.ProcessEndSize * invMaxMB;\n\n                Color color = (colorCnt % 2) == 1 ? Color.Green : Color.LightGreen;\n                Color color2 = (colorCnt++ % 2) == 1 ? Color.Blue : Color.LightBlue;\n\n                if (ev == selectedEvent)\n                {\n                    color = Color.Yellow;\n                    color2 = Color.Orange;\n                }\n\n                // managed memory\n/*\n                MyDebugDraw.DrawLine2D(new Vector2(x0, y0) * GraphSize + GraphOffset, new Vector2(x1, y1) * GraphSize + GraphOffset, Color.Red, Color.Red);\n\n                MyDebugDraw.DrawTriangle2D(new Vector2(x0, 0) * GraphSize + GraphOffset,\n                                            new Vector2(x1, 0) * GraphSize + GraphOffset,\n                                            new Vector2(x1, y1) * GraphSize + GraphOffset, color);\n                MyDebugDraw.DrawTriangle2D(new Vector2(x1, y1) * GraphSize + GraphOffset,\n                                            new Vector2(x0, y0) * GraphSize + GraphOffset,\n                                            new Vector2(x0, 0) * GraphSize + GraphOffset, color);\n\n                // process memory\n                MyDebugDraw.DrawTriangle2D(new Vector2(x0, y0) * GraphSize + GraphOffset,\n                                            new Vector2(x1, y1) * GraphSize + GraphOffset,\n                                            new Vector2(x1, z1) * GraphSize + GraphOffset, color2);\n                MyDebugDraw.DrawTriangle2D(new Vector2(x1, z1) * GraphSize + GraphOffset,\n                                            new Vector2(x0, z0) * GraphSize + GraphOffset,\n                                            new Vector2(x0, y0) * GraphSize + GraphOffset, color2);\n */\n            }\n\n           \n            // Top 20 native\n            StringBuilder sb2 = new StringBuilder();\n            Vector2 textOffset = new Vector2(100, 500);\n\n            for(int i=0; i<50 && i < m_native.Count; i++)\n            {\n                //if ( m_native[i].Name.Contains(\"MyModels\"))\n                {\n                    // native\n                    sb2.Clear();\n                    sb2.Append(m_native[i].Name);\n                    sb2.Append((0.00000095367431f * m_native[i].ManagedDelta).ToString(\"GC: 0.0 MB \"));\n                    //sb2.Append((0.00000095367431f * m_native[i].ProcessDelta).ToString(\"Process: 0.0 MB \"));\n\n                    float x_offset = MyDebugDraw.DrawText(textOffset, sb2, Color.Red, 0.7f);\n                    //textOffset.Y += 13;\n\n                    // managed\n                    sb2.Clear();\n                    sb2.Append((0.00000095367431f * m_native[i].ProcessDelta).ToString(\"Process: 0.0 MB \"));\n\n                    MyDebugDraw.DrawText(textOffset + new Vector2(x_offset, 0), sb2, Color.Yellow, 0.7f);\n                    textOffset.Y += 13;\n                }\n                \n            }\n\n            textOffset = new Vector2(1000, 500);\n            textOffset.Y += 10;\n\n            // Top 20 timed\n            for (int i = 0; i < 50 && i < m_timed.Count; i++)\n            {\n                sb2.Clear();\n                sb2.Append(m_native[i].Name);\n                sb2.Append((m_timed[i].DeltaTime).ToString(\" 0.000 s\"));\n\n                MyDebugDraw.DrawText(textOffset, sb2, Color.Yellow, 0.7f);\n                textOffset.Y += 13;\n            }\n\n\n//             for (int i = 0; i < m_native.Count && i < 30; i++)\n//             {\n//                 totalTime += m_native[i].DeltaTime;\n//                 maxMB = Math.Max(maxMB, m_native[i].ProcessStartSize);\n//                 maxMB = Math.Max(maxMB, m_native[i].ProcessEndSize);\n// \n// //                 float sizeInMB = m_native[i].ManagedDelta * 1.0f / (1024 * 1024);\n// //                 MyMwcLog.WriteLine(m_native[i].Name + sizeInMB.ToString());\n//             }\n// \n//             for (int i = 0; i < m_native.Count && i < 30; i++)\n//             {\n// \n//             }\n\n\n        //    MyDebugDraw.DrawTriangle2D(new Vector2(0.5f, 0), new Vector2(1, 0), new Vector2(1, 1), Color.Yellow);\n\n          //  MyDebugDraw.DrawLine2D(new Vector2(0, 0), new Vector2(1000, 1000), Color.Red, Color.GreenYellow);\n            \n\n//             m_managed = MyMemoryLogs.\n// \n//             m_managed.Sort(m_managedComparer);\n// \n//             MyMwcLog.WriteLine(\"\\n\\n\");\n//             MyMwcLog.WriteLine(\"Managed MemoryUsage: \\n\");\n// \n//             float totalMB = 0;\n// \n//             for (int i = 0; i < m_events.Count && i < 30; i++)\n//             {\n//                 float sizeInMB = m_events[i].ManagedDelta * 1.0f / (1024 * 1024);\n//                 totalMB += sizeInMB;\n//                 MyMwcLog.WriteLine(m_events[i].Name + sizeInMB.ToString());\n//             }\n// \n//             MyMwcLog.WriteLine(\"Total Managed MemoryUsage: \" + totalMB + \" [MB]\");\n        }\n    }\n\n//#endif\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Utils/MyMeshHelper.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\n\nnamespace MinerWars.AppCode.Game.Utils\n{\n    class MyMeshHelper\n    {\n        private static readonly int C_BUFFER_CAPACITY = 5000;\n        private static List<Vector3> m_tmpVectorBuffer = new List<Vector3>(C_BUFFER_CAPACITY);\n        /// <summary>\n        /// GenerateSphere\n        /// </summary>\n        /// <param name=\"vctPos\"></param>\n        /// <param name=\"radius\"></param>\n        /// <param name=\"steps\"></param>\n        public static void GenerateSphere(ref Matrix worldMatrix, float radius, int steps, List<Vector3> vertices)\n        {\n            System.Diagnostics.Debug.Assert(steps * steps < C_BUFFER_CAPACITY);\n\n            m_tmpVectorBuffer.Clear();\n            //Now are variables for this is as followed. n is the current vertex we are working\n            //with. While a and b are used to control our loops.\n            int n = 0;\n\n            //Assign our b loop to go through 90 degrees in intervals of our variable space\n            float space = 360 / steps;\n            float limitBeta = 90 - space;\n            float limitAlpha = 360 - space;\n            Vector3 vctTmp;\n\n            //@ generate hafSphere\n            for( float beta = 0; beta <= limitBeta; beta += space)\n            {\n                //Assign our a loop to go through 360 degrees in intervals of our variable space\n                for( float alpha = 0; alpha <= limitAlpha; alpha += space)\n                {\n                    //Start editing our vertex.\n                    vctTmp.X = (float)(radius * Math.Sin(MathHelper.ToRadians(alpha)) * Math.Sin(MathHelper.ToRadians(beta)));\n                    vctTmp.Y = (float)(radius * Math.Cos(MathHelper.ToRadians(alpha)) * Math.Sin(MathHelper.ToRadians(beta)));\n                    vctTmp.Z = (float)(radius * Math.Cos(MathHelper.ToRadians(beta)));\n                    m_tmpVectorBuffer.Add(vctTmp);\n                    //Then start working with the next vertex\n                    n++;\n\n                    //Then we do the same calculations as before, only adding the space variable\n                    //to the b values.\n                    vctTmp.X = (float)(radius * Math.Sin(MathHelper.ToRadians(alpha)) * Math.Sin(MathHelper.ToRadians(beta + space)));\n                    vctTmp.Y = (float)(radius * Math.Cos(MathHelper.ToRadians(alpha)) * Math.Sin(MathHelper.ToRadians(beta + space)));\n                    vctTmp.Z = (float)(radius * Math.Cos(MathHelper.ToRadians(beta + space)));\n                    m_tmpVectorBuffer.Add(vctTmp);\n                    n++;\n\n                    //Then we do the same calculations as the first, only adding the space variable\n                    //to the a values.\n                    vctTmp.X = (float)(radius * Math.Sin(MathHelper.ToRadians(alpha + space)) * Math.Sin(MathHelper.ToRadians(beta)));\n                    vctTmp.Y = (float)(radius * Math.Cos(MathHelper.ToRadians(alpha + space)) * Math.Sin(MathHelper.ToRadians(beta)));\n                    vctTmp.Z = (float)(radius * Math.Cos(MathHelper.ToRadians(beta)));\n                    m_tmpVectorBuffer.Add(vctTmp);\n                    n++;\n\n                    //Then we do the same calculations as the first again, only adding the space variable\n                    //to both the b and the a values.\n                    vctTmp.X = (float)(radius * Math.Sin(MathHelper.ToRadians(alpha + space)) * Math.Sin(MathHelper.ToRadians(beta + space)));\n                    vctTmp.Y = (float)(radius * Math.Cos(MathHelper.ToRadians(alpha + space)) * Math.Sin(MathHelper.ToRadians(beta + space)));\n                    vctTmp.Z = (float)(radius * Math.Cos(MathHelper.ToRadians(beta + space)));\n                    m_tmpVectorBuffer.Add(vctTmp);\n                    n++;\n                }\n            }\n\n            if (m_tmpVectorBuffer.Count * 2 > vertices.Capacity)\n            {\n                System.Diagnostics.Debug.Assert(false); //Too mach vertices\n                return;\n            }\n\n            int offset = m_tmpVectorBuffer.Count;\n            foreach (Vector3 vct in m_tmpVectorBuffer)\n                vertices.Add(vct);\n\n            //@ coz stupid C#\n            foreach (Vector3 vct in m_tmpVectorBuffer)\n            {\n                Vector3 vctTmpZNeg = new Vector3(vct.X, vct.Y, -vct.Z);\n                vertices.Add(vctTmpZNeg);\n            }\n\n\n            for(int i = 0; i < vertices.Count; ++i)\n            {\n                vertices[i] = Vector3.Transform(vertices[i], worldMatrix);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Utils/MyMissileHelperUtil.cs",
    "content": "﻿using MinerWarsMath;\nusing MinerWars.CommonLIB.AppCode.Utils;\n\nnamespace MinerWars.AppCode.Game.Utils\n{\n    static class MyMissileHelperUtil\n    {\n        public static Vector4 GetMissileLightColor()\n        {\n            float rnd = MyMwcUtils.GetRandomFloat(-0.1f, +0.1f);\n            return new Vector4(MyMissileConstants.MISSILE_LIGHT_COLOR.X + rnd, MyMissileConstants.MISSILE_LIGHT_COLOR.Y + rnd, MyMissileConstants.MISSILE_LIGHT_COLOR.Z + rnd, MyMissileConstants.MISSILE_LIGHT_COLOR.W);\n        }\n\n        public static Vector4 GetCannonShotLightColor()\n        {\n            float rnd = MyMwcUtils.GetRandomFloat(-0.1f, +0.1f);\n            return new Vector4(MyCannonShotConstants.LIGHT_COLOR.X + rnd, MyCannonShotConstants.LIGHT_COLOR.Y + rnd, MyCannonShotConstants.LIGHT_COLOR.Z + rnd, MyCannonShotConstants.LIGHT_COLOR.W);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Utils/MyMwcVoxelMaterialConstants.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing System.Diagnostics;\nusing MinerWars.CommonLIB.AppCode.Networking;\n\nnamespace MinerWars.AppCode.Game.Utils\n{\n    internal struct MyMwcVoxelMaterialProperties\n    {\n        public MyMwcObjectBuilder_Ore_TypesEnum? Ore;\n        public float Percents;\n    }\n\n    static class MyMwcVoxelMaterialConstants\n    {\n        static Dictionary<int, MyMwcVoxelMaterialProperties> MaterialProperties = new Dictionary<int, MyMwcVoxelMaterialProperties>();\n\n        static MyMwcVoxelMaterialConstants()\n        {\n            Add(MyMwcVoxelMaterialsEnum.Cobalt_01, MyMwcObjectBuilder_Ore_TypesEnum.COBALT, 0.01f);\n            Add(MyMwcVoxelMaterialsEnum.Gold_01, MyMwcObjectBuilder_Ore_TypesEnum.GOLD, 0.01f);\n            Add(MyMwcVoxelMaterialsEnum.Helium3_01, MyMwcObjectBuilder_Ore_TypesEnum.HELIUM, 0.01f);\n            Add(MyMwcVoxelMaterialsEnum.Helium4_01, MyMwcObjectBuilder_Ore_TypesEnum.HELIUM, 0.01f);\n            Add(MyMwcVoxelMaterialsEnum.Ice_01, MyMwcObjectBuilder_Ore_TypesEnum.ICE, 0.05f);\n            Add(MyMwcVoxelMaterialsEnum.Indestructible_01, MyMwcObjectBuilder_Ore_TypesEnum.INDESTRUCTIBLE, 0.30f);\n            Add(MyMwcVoxelMaterialsEnum.Indestructible_02, MyMwcObjectBuilder_Ore_TypesEnum.INDESTRUCTIBLE, 0.30f);\n            Add(MyMwcVoxelMaterialsEnum.Indestructible_03, MyMwcObjectBuilder_Ore_TypesEnum.INDESTRUCTIBLE, 0.30f);\n            Add(MyMwcVoxelMaterialsEnum.Indestructible_04, MyMwcObjectBuilder_Ore_TypesEnum.INDESTRUCTIBLE, 0.30f);\n            Add(MyMwcVoxelMaterialsEnum.Indestructible_05_Craters_01, MyMwcObjectBuilder_Ore_TypesEnum.INDESTRUCTIBLE, 0.30f);\n            Add(MyMwcVoxelMaterialsEnum.Iron_01, MyMwcObjectBuilder_Ore_TypesEnum.IRON, 0.05f);\n            Add(MyMwcVoxelMaterialsEnum.Iron_02, MyMwcObjectBuilder_Ore_TypesEnum.IRON, 0.05f);\n            Add(MyMwcVoxelMaterialsEnum.Lava_01, null, 0.00f);\n            Add(MyMwcVoxelMaterialsEnum.Magnesium_01, MyMwcObjectBuilder_Ore_TypesEnum.MAGNESIUM, 0.10f);\n            Add(MyMwcVoxelMaterialsEnum.Nickel_01, MyMwcObjectBuilder_Ore_TypesEnum.NICKEL, 0.05f);\n            Add(MyMwcVoxelMaterialsEnum.Organic_01, MyMwcObjectBuilder_Ore_TypesEnum.ORGANIC, 0.10f);\n            Add(MyMwcVoxelMaterialsEnum.Platinum_01, MyMwcObjectBuilder_Ore_TypesEnum.PLATINUM, 0.01f);\n            Add(MyMwcVoxelMaterialsEnum.Silicon_01, MyMwcObjectBuilder_Ore_TypesEnum.SILICON, 0.20f);\n            Add(MyMwcVoxelMaterialsEnum.Silver_01, MyMwcObjectBuilder_Ore_TypesEnum.SILVER, 0.01f);\n            Add(MyMwcVoxelMaterialsEnum.Snow_01, MyMwcObjectBuilder_Ore_TypesEnum.ICE, 0.05f);\n            Add(MyMwcVoxelMaterialsEnum.Stone_01, MyMwcObjectBuilder_Ore_TypesEnum.STONE, 0.90f);\n            Add(MyMwcVoxelMaterialsEnum.Stone_02, MyMwcObjectBuilder_Ore_TypesEnum.STONE, 0.90f);\n            Add(MyMwcVoxelMaterialsEnum.Stone_03, MyMwcObjectBuilder_Ore_TypesEnum.STONE, 0.90f);\n            Add(MyMwcVoxelMaterialsEnum.Stone_04, MyMwcObjectBuilder_Ore_TypesEnum.STONE, 0.90f);\n            Add(MyMwcVoxelMaterialsEnum.Stone_05, MyMwcObjectBuilder_Ore_TypesEnum.STONE, 0.90f);\n            Add(MyMwcVoxelMaterialsEnum.Stone_06, MyMwcObjectBuilder_Ore_TypesEnum.STONE, 0.90f);\n            Add(MyMwcVoxelMaterialsEnum.Stone_07, MyMwcObjectBuilder_Ore_TypesEnum.STONE, 0.90f);\n            Add(MyMwcVoxelMaterialsEnum.Stone_08, MyMwcObjectBuilder_Ore_TypesEnum.STONE, 0.90f);\n            Add(MyMwcVoxelMaterialsEnum.Stone_10, MyMwcObjectBuilder_Ore_TypesEnum.STONE, 0.90f);\n            Add(MyMwcVoxelMaterialsEnum.Stone_13_Wall_01, MyMwcObjectBuilder_Ore_TypesEnum.STONE, 0.90f);\n            Add(MyMwcVoxelMaterialsEnum.Treasure_01, MyMwcObjectBuilder_Ore_TypesEnum.TREASURE, 0.01f);\n            Add(MyMwcVoxelMaterialsEnum.Treasure_02, MyMwcObjectBuilder_Ore_TypesEnum.TREASURE, 0.01f);\n            Add(MyMwcVoxelMaterialsEnum.Uraninite_01, MyMwcObjectBuilder_Ore_TypesEnum.URANINITE, 0.01f);\n        }\n\n        private static void Add(MyMwcVoxelMaterialsEnum voxelMaterial, MyMwcObjectBuilder_Ore_TypesEnum? ore, float percents)\n        {\n            MaterialProperties.Add((int)voxelMaterial, new MyMwcVoxelMaterialProperties\n            {\n                Ore = ore,\n                Percents = percents\n            });\n        }\n\n        public static MyMwcVoxelMaterialProperties GetShipTypeProperties(MyMwcVoxelMaterialsEnum material)\n        {\n            Debug.Assert(MaterialProperties.ContainsKey((int)material));\n            return MaterialProperties[(int)material];\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Utils/MyOrientedBoundingBox.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing MinerWarsMath;\n\n\nnamespace MinerWars.AppCode.Game.Utils\n{\n    // Bounding volume using an oriented bounding box.\n    public struct MyOrientedBoundingBox : IEquatable<MyOrientedBoundingBox>\n    {\n        #region Constants\n        public const int CornerCount = 8;\n\n        // Epsilon value used in ray tests, where a ray might hit the box almost edge-on.\n        const float RAY_EPSILON = 1e-20F;\n        #endregion\n\n        #region Fields\n        public Vector3 Center;\n        public Vector3 HalfExtent;\n        public Quaternion Orientation;\n        #endregion\n\n        #region Constructors\n\n        // Create an oriented box with the given center, half-extents, and orientation.\n        public MyOrientedBoundingBox(Vector3 center, Vector3 halfExtents, Quaternion orientation)\n        {\n            Center = center;\n            HalfExtent = halfExtents;\n            Orientation = orientation;\n        }\n\n        // Create an oriented box from an axis-aligned box.\n        public static MyOrientedBoundingBox CreateFromBoundingBox(BoundingBox box)\n        {\n            Vector3 mid = (box.Min + box.Max) * 0.5f;\n            Vector3 halfExtent = (box.Max - box.Min) * 0.5f;\n            return new MyOrientedBoundingBox(mid, halfExtent, Quaternion.Identity);\n        }\n\n\n        // Transform the given bounding box by a rotation around the origin followed by a translation \n        public MyOrientedBoundingBox Transform(Quaternion rotation, Vector3 translation)\n        {\n            return new MyOrientedBoundingBox(Vector3.Transform(Center, rotation) + translation,\n                                            HalfExtent,\n                                            Orientation * rotation);\n        }\n\n        // Transform the given bounding box by a uniform scale and rotation around the origin followed\n        // by a translation\n        public MyOrientedBoundingBox Transform(float scale, Quaternion rotation, Vector3 translation)\n        {\n            return new MyOrientedBoundingBox(Vector3.Transform(Center * scale, rotation) + translation,\n                                            HalfExtent * scale,\n                                            Orientation * rotation);\n        }\n\n        public MyOrientedBoundingBox Transform(Matrix matrix)\n        {\n            return Transform(Quaternion.CreateFromRotationMatrix(matrix), matrix.Translation);\n        }\n\n        #endregion\n\n        #region IEquatable implementation\n\n        public bool Equals(MyOrientedBoundingBox other)\n        {\n            return (Center == other.Center && HalfExtent == other.HalfExtent && Orientation == other.Orientation);\n        }\n\n        public override bool Equals(Object obj)\n        {\n            if (obj != null && obj is MyOrientedBoundingBox)\n            {\n                MyOrientedBoundingBox other = (MyOrientedBoundingBox)obj;\n                return (Center == other.Center && HalfExtent == other.HalfExtent && Orientation == other.Orientation);\n            }\n            else\n            {\n                return false;\n            }\n        }\n\n        public override int GetHashCode()\n        {\n            return Center.GetHashCode() ^ HalfExtent.GetHashCode() ^ Orientation.GetHashCode();\n        }\n\n        public static bool operator ==(MyOrientedBoundingBox a, MyOrientedBoundingBox b)\n        {\n            return Equals(a, b);\n        }\n\n        public static bool operator !=(MyOrientedBoundingBox a, MyOrientedBoundingBox b)\n        {\n            return !Equals(a, b);\n        }\n\n        public override string ToString()\n        {\n            return \"{Center:\" + Center.ToString() +\n                   \" Extents:\" + HalfExtent.ToString() +\n                   \" Orientation:\" + Orientation.ToString() + \"}\";\n        }\n\n        #endregion\n\n        #region Test vs. BoundingBox\n\n        // Determine if box A intersects box B.\n        public bool Intersects(ref BoundingBox box)\n        {\n            Vector3 boxCenter = (box.Max + box.Min) * 0.5f;\n            Vector3 boxHalfExtent = (box.Max - box.Min) * 0.5f;\n\n            Matrix mb = Matrix.CreateFromQuaternion(Orientation);\n            mb.Translation = Center - boxCenter;\n\n            return ContainsRelativeBox(ref boxHalfExtent, ref HalfExtent, ref mb) != ContainmentType.Disjoint;\n        }\n\n        // Determine if this box contains, intersects, or is disjoint from the given BoundingBox.\n        public ContainmentType Contains(ref BoundingBox box)\n        {\n            Vector3 boxCenter = (box.Max + box.Min) * 0.5f;\n            Vector3 boxHalfExtent = (box.Max - box.Min) * 0.5f;\n\n            // Build the 3x3 rotation matrix that defines the orientation of 'other' relative to this box\n            Quaternion relOrient;\n            Quaternion.Conjugate(ref Orientation, out relOrient);\n\n            Matrix relTransform = Matrix.CreateFromQuaternion(relOrient);\n            relTransform.Translation = Vector3.TransformNormal(boxCenter - Center, relTransform);\n\n            return ContainsRelativeBox(ref HalfExtent, ref boxHalfExtent, ref relTransform);\n        }\n\n        // Determine if box A contains, intersects, or is disjoint from box B.\n        public static ContainmentType Contains(ref BoundingBox boxA, ref MyOrientedBoundingBox oboxB)\n        {\n            Vector3 boxA_halfExtent = (boxA.Max - boxA.Min) * 0.5f;\n            Vector3 boxA_center = (boxA.Max + boxA.Min) * 0.5f;\n            Matrix mb = Matrix.CreateFromQuaternion(oboxB.Orientation);\n            mb.Translation = oboxB.Center - boxA_center;\n\n            return MyOrientedBoundingBox.ContainsRelativeBox(ref boxA_halfExtent, ref oboxB.HalfExtent, ref mb);\n        }\n\n        #endregion\n\n        #region Test vs. BoundingOrientedBox\n\n        // Returns true if this box intersects the given other box.\n        public bool Intersects(ref MyOrientedBoundingBox other)\n        {\n            return Contains(ref other) != ContainmentType.Disjoint;\n        }\n\n        // Determine whether this box contains, intersects, or is disjoint from\n        // the given other box.\n        public ContainmentType Contains(ref MyOrientedBoundingBox other)\n        {\n            // Build the 3x3 rotation matrix that defines the orientation of 'other' relative to this box\n            Quaternion invOrient;\n            Quaternion.Conjugate(ref Orientation, out invOrient);\n            Quaternion relOrient;\n            Quaternion.Multiply(ref invOrient, ref other.Orientation, out relOrient);\n\n            Matrix relTransform = Matrix.CreateFromQuaternion(relOrient);\n            relTransform.Translation = Vector3.Transform(other.Center - Center, invOrient);\n\n            return ContainsRelativeBox(ref HalfExtent, ref other.HalfExtent, ref relTransform);\n        }\n\n        #endregion\n\n        #region Test vs. BoundingFrustum\n\n        // Determine whether this box contains, intersects, or is disjoint from\n        // the given frustum.\n        public ContainmentType Contains(BoundingFrustum frustum)\n        {\n            // Convert this bounding box to an equivalent BoundingFrustum, so we can rely on BoundingFrustum's\n            // implementation. Note that this is very slow, since BoundingFrustum builds various data structures\n            // for this test that it caches internally. To speed it up, you could convert the box to a frustum\n            // just once and re-use that frustum for repeated tests.\n            BoundingFrustum temp = ConvertToFrustum();\n            return temp.Contains(frustum);\n        }\n\n        // Returns true if this box intersects the given frustum.\n        public bool Intersects(BoundingFrustum frustum)\n        {\n            return (Contains(frustum) != ContainmentType.Disjoint);\n        }\n\n        // Determine whether the given frustum contains, intersects, or is disjoint from\n        // the given oriented box.\n        public static ContainmentType Contains(BoundingFrustum frustum, ref MyOrientedBoundingBox obox)\n        {\n            return frustum.Contains(obox.ConvertToFrustum());\n        }\n\n        #endregion\n\n        #region Test vs. BoundingSphere\n\n        // Test whether this box contains, intersects, or is disjoint from the given sphere\n        public ContainmentType Contains(ref BoundingSphere sphere)\n        {\n            // Transform the sphere into local box space\n            Quaternion iq = Quaternion.Conjugate(Orientation);\n            Vector3 localCenter = Vector3.Transform(sphere.Center - Center, iq);\n\n            // (dx,dy,dz) = signed distance of center of sphere from edge of box\n            float dx = Math.Abs(localCenter.X) - HalfExtent.X;\n            float dy = Math.Abs(localCenter.Y) - HalfExtent.Y;\n            float dz = Math.Abs(localCenter.Z) - HalfExtent.Z;\n\n            // Check for sphere completely inside box\n            float r = sphere.Radius;\n            if (dx <= -r && dy <= -r && dz <= -r)\n                return ContainmentType.Contains;\n\n            // Compute how far away the sphere is in each dimension\n            dx = Math.Max(dx, 0.0f);\n            dy = Math.Max(dy, 0.0f);\n            dz = Math.Max(dz, 0.0f);\n\n            if (dx * dx + dy * dy + dz * dz >= r * r)\n                return ContainmentType.Disjoint;\n\n            return ContainmentType.Intersects;\n        }\n\n        // Test whether this box intersects the given sphere\n        public bool Intersects(ref BoundingSphere sphere)\n        {\n            // Transform the sphere into local box space\n            Quaternion iq = Quaternion.Conjugate(Orientation);\n            Vector3 localCenter = Vector3.Transform(sphere.Center - Center, iq);\n\n            // (dx,dy,dz) = signed distance of center of sphere from edge of box\n            float dx = Math.Abs(localCenter.X) - HalfExtent.X;\n            float dy = Math.Abs(localCenter.Y) - HalfExtent.Y;\n            float dz = Math.Abs(localCenter.Z) - HalfExtent.Z;\n\n            // Compute how far away the sphere is in each dimension\n            dx = Math.Max(dx, 0.0f);\n            dy = Math.Max(dy, 0.0f);\n            dz = Math.Max(dz, 0.0f);\n            float r = sphere.Radius;\n\n            return dx * dx + dy * dy + dz * dz < r * r;\n        }\n\n        // Test whether a BoundingSphere contains, intersects, or is disjoint from a BoundingOrientedBox\n        public static ContainmentType Contains(ref BoundingSphere sphere, ref MyOrientedBoundingBox box)\n        {\n            // Transform the sphere into local box space\n            Quaternion iq = Quaternion.Conjugate(box.Orientation);\n            Vector3 localCenter = Vector3.Transform(sphere.Center - box.Center, iq);\n            localCenter.X = Math.Abs(localCenter.X);\n            localCenter.Y = Math.Abs(localCenter.Y);\n            localCenter.Z = Math.Abs(localCenter.Z);\n\n            // Check for box completely inside sphere\n            float rSquared = sphere.Radius * sphere.Radius;\n            if ((localCenter + box.HalfExtent).LengthSquared() <= rSquared)\n                return ContainmentType.Contains;\n\n            // (dx,dy,dz) = signed distance of center of sphere from edge of box\n            Vector3 d = localCenter - box.HalfExtent;\n\n            // Compute how far away the sphere is in each dimension\n            d.X = Math.Max(d.X, 0.0f);\n            d.Y = Math.Max(d.Y, 0.0f);\n            d.Z = Math.Max(d.Z, 0.0f);\n\n            if (d.LengthSquared() >= rSquared)\n                return ContainmentType.Disjoint;\n\n            return ContainmentType.Intersects;\n        }\n\n        #endregion\n\n        #region Test vs. 0/1/2d primitives\n\n        // Returns true if this box contains the given point.\n        public bool Contains(ref Vector3 point)\n        {\n            // Transform the point into box-local space and check against\n            // our extents.\n            Quaternion qinv = Quaternion.Conjugate(Orientation);\n            Vector3 plocal = Vector3.Transform(point - Center, qinv);\n\n            return Math.Abs(plocal.X) <= HalfExtent.X &&\n                   Math.Abs(plocal.Y) <= HalfExtent.Y &&\n                   Math.Abs(plocal.Z) <= HalfExtent.Z;\n        }\n\n        // Determine whether the given ray intersects this box. If so, returns\n        // the parametric value of the point of first intersection; otherwise\n        // returns null.\n        public float? Intersects(ref Ray ray)\n        {\n            Matrix R = Matrix.CreateFromQuaternion(Orientation);\n\n            Vector3 TOrigin = Center - ray.Position;\n\n            float t_min = -float.MaxValue;\n            float t_max = float.MaxValue;\n\n            // X-case\n            float axisDotOrigin = Vector3.Dot(R.Right, TOrigin);\n            float axisDotDir = Vector3.Dot(R.Right, ray.Direction);\n\n            if (axisDotDir >= -RAY_EPSILON && axisDotDir <= RAY_EPSILON)\n            {\n                if ((-axisDotOrigin - HalfExtent.X) > 0.0 || (-axisDotOrigin + HalfExtent.X) > 0.0f)\n                    return null;\n            }\n            else\n            {\n                float t1 = (axisDotOrigin - HalfExtent.X) / axisDotDir;\n                float t2 = (axisDotOrigin + HalfExtent.X) / axisDotDir;\n\n                if (t1 > t2)\n                {\n                    float temp = t1;\n                    t1 = t2;\n                    t2 = temp;\n                }\n\n                if (t1 > t_min)\n                    t_min = t1;\n\n                if (t2 < t_max)\n                    t_max = t2;\n\n                if (t_max < 0.0f || t_min > t_max)\n                    return null;\n            }\n\n            // Y-case\n            axisDotOrigin = Vector3.Dot(R.Up, TOrigin);\n            axisDotDir = Vector3.Dot(R.Up, ray.Direction);\n\n            if (axisDotDir >= -RAY_EPSILON && axisDotDir <= RAY_EPSILON)\n            {\n                if ((-axisDotOrigin - HalfExtent.Y) > 0.0 || (-axisDotOrigin + HalfExtent.Y) > 0.0f)\n                    return null;\n            }\n            else\n            {\n                float t1 = (axisDotOrigin - HalfExtent.Y) / axisDotDir;\n                float t2 = (axisDotOrigin + HalfExtent.Y) / axisDotDir;\n\n                if (t1 > t2)\n                {\n                    float temp = t1;\n                    t1 = t2;\n                    t2 = temp;\n                }\n\n                if (t1 > t_min)\n                    t_min = t1;\n\n                if (t2 < t_max)\n                    t_max = t2;\n\n                if (t_max < 0.0f || t_min > t_max)\n                    return null;\n            }\n\n            // Z-case\n            axisDotOrigin = Vector3.Dot(R.Forward, TOrigin);\n            axisDotDir = Vector3.Dot(R.Forward, ray.Direction);\n\n            if (axisDotDir >= -RAY_EPSILON && axisDotDir <= RAY_EPSILON)\n            {\n                if ((-axisDotOrigin - HalfExtent.Z) > 0.0 || (-axisDotOrigin + HalfExtent.Z) > 0.0f)\n                    return null;\n            }\n            else\n            {\n                float t1 = (axisDotOrigin - HalfExtent.Z) / axisDotDir;\n                float t2 = (axisDotOrigin + HalfExtent.Z) / axisDotDir;\n\n                if (t1 > t2)\n                {\n                    float temp = t1;\n                    t1 = t2;\n                    t2 = temp;\n                }\n\n                if (t1 > t_min)\n                    t_min = t1;\n\n                if (t2 < t_max)\n                    t_max = t2;\n\n                if (t_max < 0.0f || t_min > t_max)\n                    return null;\n            }\n\n            return t_min;\n        }\n\n        // Classify this bounding box as entirely in front of, in back of, or\n        // intersecting the given plane.\n        public PlaneIntersectionType Intersects(ref Plane plane)\n        {\n            float dist = plane.DotCoordinate(Center);\n\n            // Transform the plane's normal into this box's space\n            Vector3 localNormal = Vector3.Transform(plane.Normal, Quaternion.Conjugate(Orientation));\n\n            // Project the axes of the box onto the normal of the plane.  Half the\n            // length of the projection (sometime called the \"radius\") is equal to\n            // h(u) * abs(n dot b(u))) + h(v) * abs(n dot b(v)) + h(w) * abs(n dot b(w))\n            // where h(i) are extents of the box, n is the plane normal, and b(i) are the \n            // axes of the box.\n            float r = Math.Abs(HalfExtent.X * localNormal.X)\n                    + Math.Abs(HalfExtent.Y * localNormal.Y)\n                    + Math.Abs(HalfExtent.Z * localNormal.Z);\n\n            if (dist > r)\n            {\n                return PlaneIntersectionType.Front;\n            }\n            else if (dist < -r)\n            {\n                return PlaneIntersectionType.Back;\n            }\n            else\n            {\n                return PlaneIntersectionType.Intersecting;\n            }\n        }\n\n        #endregion\n\n        #region Helper methods\n\n        /*\n        // Return the 8 corner positions of this bounding box.\n        //\n        //     ZMax    ZMin\n        //    0----1  4----5\n        //    |    |  |    |\n        //    |    |  |    |\n        //    3----2  7----6\n        //\n        // The ordering of indices is a little strange to match what BoundingBox.GetCorners() does.        \n        public Vector3[] GetCorners()\n        {\n            throw new Exception(\"Don't use this method because it will generate garbage!\");\n            Vector3[] corners = new Vector3[CornerCount];\n            GetCorners(corners, 0);\n            return corners;\n        }*/\n\n        // Return the 8 corner positions of this bounding box.\n        //\n        //     ZMax    ZMin\n        //    0----1  4----5\n        //    |    |  |    |\n        //    |    |  |    |\n        //    3----2  7----6\n        //\n        // The ordering of indices is a little strange to match what BoundingBox.GetCorners() does.\n        public void GetCorners(Vector3[] corners, int startIndex)\n        {\n            Matrix m = Matrix.CreateFromQuaternion(Orientation);\n            Vector3 hX = m.Left * HalfExtent.X;\n            Vector3 hY = m.Up * HalfExtent.Y;\n            Vector3 hZ = m.Backward * HalfExtent.Z;\n\n            int i = startIndex;\n            corners[i++] = Center - hX + hY + hZ;\n            corners[i++] = Center + hX + hY + hZ;\n            corners[i++] = Center + hX - hY + hZ;\n            corners[i++] = Center - hX - hY + hZ;\n            corners[i++] = Center - hX + hY - hZ;\n            corners[i++] = Center + hX + hY - hZ;\n            corners[i++] = Center + hX - hY - hZ;\n            corners[i++] = Center - hX - hY - hZ;\n        }\n\n\n        // Determine whether the box described by half-extents hA, axis-aligned and centered at the origin, contains\n        // the box described by half-extents hB, whose position and orientation are given by the transform matrix mB.\n        // The matrix is assumed to contain only rigid motion; if it contains scaling or perpsective the result of\n        // this method will be incorrect.\n        public static ContainmentType ContainsRelativeBox(ref Vector3 hA, ref Vector3 hB, ref Matrix mB)\n        {\n            Vector3 mB_T = mB.Translation;\n            Vector3 mB_TA = new Vector3(Math.Abs(mB_T.X), Math.Abs(mB_T.Y), Math.Abs(mB_T.Z));\n\n            // Transform the extents of B\n            Vector3 bX = mB.Right;      // x-axis of box B\n            Vector3 bY = mB.Up;         // y-axis of box B\n            Vector3 bZ = mB.Backward;   // z-axis of box B\n            Vector3 hx_B = bX * hB.X;   // x extent of box B\n            Vector3 hy_B = bY * hB.Y;   // y extent of box B\n            Vector3 hz_B = bZ * hB.Z;   // z extent of box B\n\n            // Check for containment first.\n            float projx_B = Math.Abs(hx_B.X) + Math.Abs(hy_B.X) + Math.Abs(hz_B.X);\n            float projy_B = Math.Abs(hx_B.Y) + Math.Abs(hy_B.Y) + Math.Abs(hz_B.Y);\n            float projz_B = Math.Abs(hx_B.Z) + Math.Abs(hy_B.Z) + Math.Abs(hz_B.Z);\n            if (mB_TA.X + projx_B <= hA.X && mB_TA.Y + projy_B <= hA.Y && mB_TA.Z + projz_B <= hA.Z)\n                return ContainmentType.Contains;\n\n            // Check for separation along the faces of the other box,\n            // by projecting each local axis onto the other boxes' axes\n            // http://www.cs.unc.edu/~geom/theses/gottschalk/main.pdf\n            //\n            // The general test form, given a choice of separating axis, is:\n            //      sizeA = abs(dot(A.e1,axis)) + abs(dot(A.e2,axis)) + abs(dot(A.e3,axis))\n            //      sizeB = abs(dot(B.e1,axis)) + abs(dot(B.e2,axis)) + abs(dot(B.e3,axis))\n            //      distance = abs(dot(B.center - A.center),axis))\n            //      if distance >= sizeA+sizeB, the boxes are disjoint\n            //\n            // We need to do this test on 15 axes:\n            //      x, y, z axis of box A\n            //      x, y, z axis of box B\n            //      (v1 cross v2) for each v1 in A's axes, for each v2 in B's axes\n            //\n            // Since we're working in a space where A is axis-aligned and A.center=0, many\n            // of the tests and products simplify away.\n\n            // Check for separation along the axes of box A\n            if (mB_TA.X >= hA.X + Math.Abs(hx_B.X) + Math.Abs(hy_B.X) + Math.Abs(hz_B.X))\n                return ContainmentType.Disjoint;\n\n            if (mB_TA.Y >= hA.Y + Math.Abs(hx_B.Y) + Math.Abs(hy_B.Y) + Math.Abs(hz_B.Y))\n                return ContainmentType.Disjoint;\n\n            if (mB_TA.Z >= hA.Z + Math.Abs(hx_B.Z) + Math.Abs(hy_B.Z) + Math.Abs(hz_B.Z))\n                return ContainmentType.Disjoint;\n\n            // Check for separation along the axes box B, hx_B/hy_B/hz_B\n            if (Math.Abs(Vector3.Dot(mB_T, bX)) >= Math.Abs(hA.X * bX.X) + Math.Abs(hA.Y * bX.Y) + Math.Abs(hA.Z * bX.Z) + hB.X)\n                return ContainmentType.Disjoint;\n\n            if (Math.Abs(Vector3.Dot(mB_T, bY)) >= Math.Abs(hA.X * bY.X) + Math.Abs(hA.Y * bY.Y) + Math.Abs(hA.Z * bY.Z) + hB.Y)\n                return ContainmentType.Disjoint;\n\n            if (Math.Abs(Vector3.Dot(mB_T, bZ)) >= Math.Abs(hA.X * bZ.X) + Math.Abs(hA.Y * bZ.Y) + Math.Abs(hA.Z * bZ.Z) + hB.Z)\n                return ContainmentType.Disjoint;\n\n            // Check for separation in plane containing an axis of box A and and axis of box B\n            //\n            // We need to compute all 9 cross products to find them, but a lot of terms drop out\n            // since we're working in A's local space. Also, since each such plane is parallel\n            // to the defining axis in each box, we know those dot products will be 0 and can\n            // omit them.\n            Vector3 axis;\n\n            // a.X ^ b.X = (1,0,0) ^ bX\n            axis = new Vector3(0, -bX.Z, bX.Y);\n            if (Math.Abs(Vector3.Dot(mB_T, axis)) >= Math.Abs(hA.Y * axis.Y) + Math.Abs(hA.Z * axis.Z) + Math.Abs(Vector3.Dot(axis, hy_B)) + Math.Abs(Vector3.Dot(axis, hz_B)))\n                return ContainmentType.Disjoint;\n\n            // a.X ^ b.Y = (1,0,0) ^ bY\n            axis = new Vector3(0, -bY.Z, bY.Y);\n            if (Math.Abs(Vector3.Dot(mB_T, axis)) >= Math.Abs(hA.Y * axis.Y) + Math.Abs(hA.Z * axis.Z) + Math.Abs(Vector3.Dot(axis, hz_B)) + Math.Abs(Vector3.Dot(axis, hx_B)))\n                return ContainmentType.Disjoint;\n\n            // a.X ^ b.Z = (1,0,0) ^ bZ\n            axis = new Vector3(0, -bZ.Z, bZ.Y);\n            if (Math.Abs(Vector3.Dot(mB_T, axis)) >= Math.Abs(hA.Y * axis.Y) + Math.Abs(hA.Z * axis.Z) + Math.Abs(Vector3.Dot(axis, hx_B)) + Math.Abs(Vector3.Dot(axis, hy_B)))\n                return ContainmentType.Disjoint;\n\n            // a.Y ^ b.X = (0,1,0) ^ bX\n            axis = new Vector3(bX.Z, 0, -bX.X);\n            if (Math.Abs(Vector3.Dot(mB_T, axis)) >= Math.Abs(hA.Z * axis.Z) + Math.Abs(hA.X * axis.X) + Math.Abs(Vector3.Dot(axis, hy_B)) + Math.Abs(Vector3.Dot(axis, hz_B)))\n                return ContainmentType.Disjoint;\n\n            // a.Y ^ b.Y = (0,1,0) ^ bY\n            axis = new Vector3(bY.Z, 0, -bY.X);\n            if (Math.Abs(Vector3.Dot(mB_T, axis)) >= Math.Abs(hA.Z * axis.Z) + Math.Abs(hA.X * axis.X) + Math.Abs(Vector3.Dot(axis, hz_B)) + Math.Abs(Vector3.Dot(axis, hx_B)))\n                return ContainmentType.Disjoint;\n\n            // a.Y ^ b.Z = (0,1,0) ^ bZ\n            axis = new Vector3(bZ.Z, 0, -bZ.X);\n            if (Math.Abs(Vector3.Dot(mB_T, axis)) >= Math.Abs(hA.Z * axis.Z) + Math.Abs(hA.X * axis.X) + Math.Abs(Vector3.Dot(axis, hx_B)) + Math.Abs(Vector3.Dot(axis, hy_B)))\n                return ContainmentType.Disjoint;\n\n            // a.Z ^ b.X = (0,0,1) ^ bX\n            axis = new Vector3(-bX.Y, bX.X, 0);\n            if (Math.Abs(Vector3.Dot(mB_T, axis)) >= Math.Abs(hA.X * axis.X) + Math.Abs(hA.Y * axis.Y) + Math.Abs(Vector3.Dot(axis, hy_B)) + Math.Abs(Vector3.Dot(axis, hz_B)))\n                return ContainmentType.Disjoint;\n\n            // a.Z ^ b.Y = (0,0,1) ^ bY\n            axis = new Vector3(-bY.Y, bY.X, 0);\n            if (Math.Abs(Vector3.Dot(mB_T, axis)) >= Math.Abs(hA.X * axis.X) + Math.Abs(hA.Y * axis.Y) + Math.Abs(Vector3.Dot(axis, hz_B)) + Math.Abs(Vector3.Dot(axis, hx_B)))\n                return ContainmentType.Disjoint;\n\n            // a.Z ^ b.Z = (0,0,1) ^ bZ\n            axis = new Vector3(-bZ.Y, bZ.X, 0);\n            if (Math.Abs(Vector3.Dot(mB_T, axis)) >= Math.Abs(hA.X * axis.X) + Math.Abs(hA.Y * axis.Y) + Math.Abs(Vector3.Dot(axis, hx_B)) + Math.Abs(Vector3.Dot(axis, hy_B)))\n                return ContainmentType.Disjoint;\n\n            return ContainmentType.Intersects;\n        }\n\n        // Convert this BoundingOrientedBox to a BoundingFrustum describing the same volume.\n        //\n        // A BoundingFrustum is defined by the matrix that carries its volume to the\n        // box from (-1,-1,0) to (1,1,1), so we just need a matrix that carries our box there.\n        public BoundingFrustum ConvertToFrustum()\n        {\n            Quaternion invOrientation;\n            Quaternion.Conjugate(ref Orientation, out invOrientation);\n            float sx = 1.0f / HalfExtent.X;\n            float sy = 1.0f / HalfExtent.Y;\n            float sz = .5f / HalfExtent.Z;\n            Matrix temp;\n            Matrix.CreateFromQuaternion(ref invOrientation, out temp);\n            temp.M11 *= sx; temp.M21 *= sx; temp.M31 *= sx;\n            temp.M12 *= sy; temp.M22 *= sy; temp.M32 *= sy;\n            temp.M13 *= sz; temp.M23 *= sz; temp.M33 *= sz;\n            temp.Translation = Vector3.UnitZ * 0.5f + Vector3.TransformNormal(-Center, temp);\n\n            return new BoundingFrustum(temp);\n        }\n\n\n        public BoundingBox GetAABB()\n        {\n            BoundingBox box = BoundingBoxHelper.InitialBox;\n            BoundingFrustum frustum = ConvertToFrustum();\n            BoundingBoxHelper.AddFrustum(ref frustum, ref box);\n            return box;\n        }\n\n        public static MyOrientedBoundingBox Create(BoundingBox boundingBox, Matrix matrix)\n        {\n            BoundingBox centeredBox = new BoundingBox(-boundingBox.Size() / 2f, boundingBox.Size() / 2f);\n            return MyOrientedBoundingBox.CreateFromBoundingBox(centeredBox).Transform(matrix);\n        }\n\n        #endregion\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Utils/MyPerformanceTests.cs",
    "content": "﻿using MinerWarsMath;\n\nnamespace MinerWars.AppCode.Game.Utils\n{\n    static class MyPerformanceTests\n    {\n        public static void Run()\n        {\n            Vector3 vector = new Vector3(1, 2, 3);\n            Matrix m = Matrix.CreateRotationX(5);\n            Matrix m2 = Matrix.CreateRotationY(5);\n            Vector3 resTotal = new Vector3();\n            int numIterations = 10000;\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Vector transform managed\");\n            for (int i = 0; i < numIterations; i++)\n            {\n                Vector3 res;\n                Vector3.Transform(ref vector, ref m, out res);\n                resTotal += res;\n            }\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Vector transform unmanaged\");\n            for (int i = 0; i < numIterations; i++)\n            {\n                Vector3 res;\n                Vector3.Transform_Native(ref vector, ref m, out res);\n                resTotal += res;\n            }\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n\n            Matrix resTotalM = new Matrix();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Matrix multiply managed\");\n            for (int i = 0; i < numIterations; i++)\n            {\n                Matrix res;\n                Matrix.Multiply(ref m, ref m2, out res);\n                resTotalM += res;\n            }\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Matrix multiply unmanaged\");\n            for (int i = 0; i < numIterations; i++)\n            {\n                Matrix res;\n                Matrix.Multiply_Native(ref m, ref m2, out res);\n                resTotalM += res;\n            }\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Utils/MyPlugins.cs",
    "content": "﻿using System;\nusing System.IO;\nusing MinerWars.AppCode.App;\nusing MinerWars.PluginAPI;\nusing SysUtils.Utils;\n\nnamespace MinerWars.AppCode.Game.Utils\n{\n    public static class MyPlugins\n    {\n        static readonly string PLUGIN_FOLDER_RELATIVE = @\"\\SimplePlugin\\bin\\x86\\Debug\\\";\n        static MyPluginLoader m_pluginLoader;\n        static string m_pluginFolderAbsolute = Environment.CurrentDirectory + PLUGIN_FOLDER_RELATIVE;\n        \n        public static void LoadContent()\n        {\n            return;\n\n            MyMwcLog.WriteLine(\"MyPlugins.LoadContent - START\");\n            MyMwcLog.IncreaseIndent();\n\n            string pluginFile = m_pluginFolderAbsolute + \"SimplePlugin.dll\";\n            MyMwcLog.WriteLine(\"PluginFile: \" + pluginFile);\n\n            if (File.Exists(pluginFile) == false)\n            {\n                MyMwcLog.WriteLine(\"Plugin file not found, therefore skipping plugin loading\");\n            }\n            else\n            {\n                //  There can be an exception during loading the plugin, so we must check it, but continue even if exception occurs\n                try\n                {\n                    m_pluginLoader = new MyPluginLoader(pluginFile);\n                }\n                catch (Exception ex)\n                {\n                    MyMwcLog.WriteLine(\"Exception during loading the plugin (BUT APPLICATION WILL CONTINUE): \" + ex.ToString());\n                    m_pluginLoader = null;  //  Because plugin wasn't really loaded!!\n                }\n            }\n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyPlugins.LoadContent - END\");\n        }\n\n        public static string GetAudioFolder()\n        {\n            if ((m_pluginLoader == null) || (m_pluginLoader.Plugin.GetAudioFolder() == null))\n            {\n                return MyMinerGame.Static.RootDirectory + @\"\\Audio\\\";\n            }\n            else\n            {\n                return m_pluginFolderAbsolute + m_pluginLoader.Plugin.GetAudioFolder();\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Utils/MyReflectionMethod.cs",
    "content": "﻿namespace MinerWars.AppCode.Game.Utils\n{\n    using System;\n    using System.Reflection;\n    using System.Reflection.Emit;\n    using System.Runtime.CompilerServices;\n\n    internal static class MyReflectionMethod\n    {\n        // for basic use m_method:\n        private const string m_methodname = \"m_method\";\n\n\n        // Returns method handle:\n        private static RuntimeMethodHandle GetDynMethodRuntimeHandle(MethodBase method, String methodName)\n        {\n            if (method is DynamicMethod)\n            {\n                return (RuntimeMethodHandle)typeof(DynamicMethod).GetField(methodName, BindingFlags.NonPublic | BindingFlags.Instance).GetValue(method);\n            }\n            return method.MethodHandle;\n        }\n\n\n        // Return offsetted pointer for the current version of the .NET:\n        private static unsafe IntPtr GetDynMethodAddr(MethodBase method)\n        {\n            RuntimeMethodHandle dynMethodRuntimeHandle = GetDynMethodRuntimeHandle(method, m_methodname);\n            byte* bptr = (byte*)dynMethodRuntimeHandle.Value.ToPointer();\n            if (testNET20sp20orGreater())\n            {\n                RuntimeHelpers.PrepareMethod(dynMethodRuntimeHandle);\n                if (IntPtr.Size == 8)\n                {\n                    ulong* ulPtr2 = (ulong*)bptr;\n                    ulPtr2 = (ulong*)ulPtr2[5];\n                    return new IntPtr((void*)(ulPtr2 + 12));\n                }\n                uint* numPtr3 = (uint*)bptr;\n                numPtr3 = (uint*)numPtr3[5];\n                return new IntPtr((void*)(numPtr3 + 12));\n            }\n            if (IntPtr.Size == 8)\n            {\n                ulong* ulPtr4 = (ulong*)bptr;\n                ulPtr4 += 6;\n                return new IntPtr((void*)ulPtr4);\n            }\n            uint* numPtr5 = (uint*)bptr;\n            numPtr5 += 6;\n            return new IntPtr((void*)numPtr5);\n        }\n\n\n        // Test of .NET version. Offsets depends on it:\n        private static bool testNET20sp20orGreater()\n        {\n            //Version Net20 = new Version(2, 0, 0xc627, 0x2a);\n            //Version Net20SP1 = new Version(2, 0, 0xc627, 0x599);\n            Version Net20SP2 = new Version(2, 0, 0xc627, 0xbed);\n            //Version Net30 = new Version(3, 0, 0x119a, 30);\n            //Version Net30SP1 = new Version(3, 0, 0x119a, 0x288);\n            //Version Net30SP2 = new Version(3, 0, 0x119a, 0x868);\n            //Version Net35 = new Version(3, 5, 0x521e, 8);\n            //Version Net35SP1 = new Version(3, 5, 0x7809, 1);\n            return !(Environment.Version.Major <= Net20SP2.Major && (\n                (Environment.Version.Major != Net20SP2.Major) ||\n                Environment.Version.MinorRevision < Net20SP2.MinorRevision));\n        }\n\n\n        // Returns method pointer in .NET 2.0 SP 2 version:\n        private static IntPtr GetMethodAddr20SP2(MethodBase method)\n        {\n            //return new IntPtr((method.MethodHandle.Value.ToPointer() + (void*)8));\n            return IntPtr.Add(method.MethodHandle.Value, 8);\n        }\n\n\n        // Returns pointer of the method (system address):\n        public static unsafe IntPtr GetMethodAddr(MethodBase method)\n        {\n            if (method is DynamicMethod)\n            {\n                return GetDynMethodAddr(method);\n            }\n            RuntimeHelpers.PrepareMethod(method.MethodHandle);\n            if (testNET20sp20orGreater())\n            {\n                return GetMethodAddr20SP2(method);\n            }\n            int num = (int)((*(((long*)method.MethodHandle.Value.ToPointer())) >> 0x20) & 0xffL);\n            if (IntPtr.Size == 8)\n            {\n                ulong* numPtr3 = (ulong*)IntPtr.Add(IntPtr.Add(method.DeclaringType.TypeHandle.Value, (num * 8)), 80).ToPointer();\n                return new IntPtr((void*)numPtr3);\n            }\n            uint* numPtr5 = (uint*)IntPtr.Add(IntPtr.Add(method.DeclaringType.TypeHandle.Value, (num * 4)), 40).ToPointer();\n            return new IntPtr((void*)numPtr5);\n        }\n\n\n        // Return the type of the returned value of the method:\n        private static Type GetMethodReturnType(MethodBase method)\n        {\n            MethodInfo info = method as MethodInfo;\n            if (info == null)\n            {\n                throw new ArgumentException(\"Unsupported MethodBase : \" + method.GetType().Name, \"method\");\n            }\n            return info.ReturnType;\n        }\n\n\n        // Test signature of the two base methods:\n        private static bool MethodSignaturesEqual(MethodBase x, MethodBase y)\n        {\n            if (x.CallingConvention != y.CallingConvention)\n            {\n                return false;\n            }\n            Type methodReturnType = GetMethodReturnType(x);\n            Type type2 = GetMethodReturnType(y);\n            if (methodReturnType != type2)\n            {\n                return false;\n            }\n            ParameterInfo[] parameters = x.GetParameters();\n            ParameterInfo[] infoArray2 = y.GetParameters();\n            if (parameters.Length != infoArray2.Length)\n            {\n                return false;\n            }\n            return true;\n        }\n\n\n        // Replace the source method in the assembly with MethodBase of the new function:\n        public static unsafe void ReplaceMethod(IntPtr srcAdr, MethodBase dest)\n        {\n            IntPtr methodAddress = GetMethodAddr(dest);\n            if (IntPtr.Size == 8) // depends on the .NET version\n            {\n                *((long*)methodAddress.ToPointer()) = *((long*)srcAdr.ToPointer());\n            }\n            else\n            {\n                *((int*)methodAddress.ToPointer()) = (int)*((uint*)srcAdr.ToPointer());\n            }\n        }\n\n\n        // Safe variant of the replace source method in the assembly with MethodBase of the function:\n        public static void ReplaceMethod(MethodBase source, MethodBase dest)\n        {\n            if (!MethodSignaturesEqual(source, dest))\n            {\n                throw new ArgumentException(\"The method signatures are not the same.\", \"source\");\n            }\n            ReplaceMethod(GetMethodAddr(source), dest);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Utils/MyScreenshot.cs",
    "content": "﻿using System;\nusing System.IO;\nusing System.Collections.Generic;\n//using MinerWarsMath.Graphics;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing System.Drawing;\n\nusing SharpDX.Direct3D9;\nusing SharpDX;\nusing SharpDX.Toolkit;\n\n//  Screenshot object survives only one DRAW after created. We delete it immediatelly. So if 'm_screenshot'\n//  is not null we know we have to take screenshot and set it to null.\n//  All files are saved under same date/time names\n\nnamespace MinerWars.AppCode.Game.Utils\n{\n    class MyScreenshot\n    {\n        readonly string m_folder;\n        readonly string m_datetimePrefix;\n        float m_sizeMultiplier = 1.0f;\n\n        public MyScreenshot(float sizeMultiplier)\n        {\n            MyMwcLog.WriteLine(\"MyScreenshot.Constructor() - START\");\n            MyMwcLog.IncreaseIndent();\n\n            System.Diagnostics.Debug.Assert(sizeMultiplier > 0.0f);\n            m_sizeMultiplier = sizeMultiplier;\n\n            m_folder = Path.Combine(MyFileSystemUtils.GetApplicationUserDataFolder(), \"Screenshots\\\\\");\n            m_datetimePrefix = MyValueFormatter.GetFormatedDateTimeForFilename(DateTime.Now);\n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyScreenshot.Constructor() - END\");\n        }\n\n        public string GetFilename(string name)\n        {\n            return Path.Combine(m_folder, \"MinerWars_\" + MyEnumsToStrings.CameraDirection[(int)MyCamera.ActualCameraDirection] + \"_\" + m_datetimePrefix + \"_\" + name);\n        }\n\n        public static void SaveScreenshotUserFolder(Texture texture2D, string name)\n        {\n            var datetimePrefix = MyValueFormatter.GetFormatedDateTimeForFilename(DateTime.Now);\n            var folder = Path.Combine(MyFileSystemUtils.GetApplicationUserDataFolder(), \"Screenshots\\\\\");\n            var path = Path.Combine(folder, \"MinerWars_\" + MyEnumsToStrings.CameraDirection[(int)MyCamera.ActualCameraDirection] + \"_\" + datetimePrefix + \"_\" + name);\n            SaveScreenshot(texture2D, path);\n        }\n\n        public static void SaveScreenshot(Texture texture2D, string file)\n        {      \n            MyMwcLog.WriteLine(\"MyScreenshot.SaveTexture2D() - START\");\n            MyMwcLog.IncreaseIndent();\n\n            Texture systemTex =  new Texture(MinerWars.AppCode.App.MyMinerGame.Static.GraphicsDevice, texture2D.GetLevelDescription(0).Width, texture2D.GetLevelDescription(0).Height, 0, Usage.None, Format.A8R8G8B8, Pool.SystemMemory);\n\n\n            Surface sourceSurface = texture2D.GetSurfaceLevel(0);\n            Surface destSurface = systemTex.GetSurfaceLevel(0);\n            MinerWars.AppCode.App.MyMinerGame.Static.GraphicsDevice.GetRenderTargetData(sourceSurface, destSurface);\n            sourceSurface.Dispose();\n            destSurface.Dispose();\n\n            texture2D = systemTex;\n\n            try\n            {\n                MyMwcLog.WriteLine(\"File: \" + file);\n\n                MyFileSystemUtils.CreateFolderForFile(file);\n\n                Stack<SharpDX.Rectangle> tiles = new Stack<SharpDX.Rectangle>();\n\n                int tileWidth = texture2D.GetLevelDescription(0).Width;\n                int tileHeight = texture2D.GetLevelDescription(0).Height;\n\n                while (tileWidth > 3200)\n                {\n                    tileWidth /= 2;\n                    tileHeight /= 2;\n                }\n\n                int widthOffset = 0;\n                int heightOffset = 0;\n\n                while (widthOffset < texture2D.GetLevelDescription(0).Width)\n                {\n                    while (heightOffset < texture2D.GetLevelDescription(0).Height)\n                    {\n                        tiles.Push(new SharpDX.Rectangle(widthOffset, heightOffset, tileWidth, tileHeight));\n                        heightOffset += tileHeight;\n                    }\n\n                    heightOffset = 0;\n                    widthOffset += tileWidth;\n                }\n\n                int sc = 0;\n                while (tiles.Count > 0)\n                {\n                    SharpDX.Rectangle rect = tiles.Pop();\n\n                    byte[] data = new byte[rect.Width * rect.Height * 4];\n                    SharpDX.Rectangle rect2 = new SharpDX.Rectangle(rect.X, rect.Y, rect.Width, rect.Height);\n                    //texture2D.GetData<byte>(0, rect2, data, 0, data.Length);\n                    DataStream ds;\n                    texture2D.LockRectangle(0, rect2, LockFlags.None, out ds); \n\n                    ds.Read(data, 0, data.Length);\n                            /*\n                    for (int i = 0; i < data.Length; i += 4)\n                    {\n                        //Swap ARGB <-> RGBA\n                        byte b = data[i + 0];\n                        byte g = data[i + 1];\n                        byte r = data[i + 2];\n                        byte a = data[i + 3];\n                        data[i + 0] = r;  //Blue\n                        data[i + 1] = g; //Green\n                        data[i + 2] = b; //Red\n                        data[i + 3] = a; //Alpha\n                    }         */\n\n                    ds.Seek(0, SeekOrigin.Begin);\n                    ds.WriteRange(data);\n\n                    texture2D.UnlockRectangle(0);\n\n                    string filename = file.Replace(\".png\", \"_\" + sc.ToString(\"##00\") + \".png\");\n                    using (Stream stream = File.Create(filename))\n                    {        \n                        System.Drawing.Bitmap image = new System.Drawing.Bitmap(rect.Width, rect.Height);\n\n                        System.Drawing.Imaging.BitmapData imageData = image.LockBits(new System.Drawing.Rectangle(0,0,rect.Width, rect.Height), System.Drawing.Imaging.ImageLockMode.WriteOnly, System.Drawing.Imaging.PixelFormat.Format32bppArgb);\n                        System.Runtime.InteropServices.Marshal.Copy(data, 0, imageData.Scan0, data.Length);\n\n                        image.Save(stream, System.Drawing.Imaging.ImageFormat.Png);\n\n                        image.UnlockBits(imageData);\n                        image.Dispose();\n                               \n                        //texture2D.SaveAsPng(stream, texture2D.Width, texture2D.Height);\n                        //BaseTexture.ToStream(texture2D, ImageFileFormat.Png);\n                    }\n\n                    sc++;\n                    GC.Collect();\n                }\n            }\n            catch (Exception exc)\n            {\n                //  Write exception to log, but continue as if nothing wrong happened\n                MyMwcLog.WriteLine(exc);\n            }\n\n            texture2D.Dispose();\n\n            //BaseTexture.ToFile(texture2D, \"c:\\\\test.png\", ImageFileFormat.Png);\n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyScreenshot.SaveTexture2D() - END\");   \n        }\n\n        //  Failure while saving will not crash the game, only log an exception into log file\n        public void SaveTexture2D(Texture texture2D, string name)\n        {\n            SaveScreenshot(texture2D, GetFilename(name + \".png\"));\n        }\n\n        public float SizeMultiplier\n        {\n            get { return m_sizeMultiplier; }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Utils/MyShipTypeConstants.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing System.Diagnostics;\nusing MinerWars.AppCode.Game.Models;\n\nnamespace MinerWars.AppCode.Game.Utils\n{\n    internal struct MyShipTypeProperties\n    {\n        public MyShipTypeGamePlayProperties GamePlay;\n        public MyShipTypePhysicsProperties Physics;\n        public MyShipTypePhysicsProperties PhysicsForBot;\n        public MyShipTypeVisualProperties Visual;\n    }\n\n    internal struct MyShipTypeGamePlayProperties\n    {\n        /// <summary>\n        /// Number of weapons slots. These include universal launcher slots.\n        /// </summary>\n        public int MaxWeapons;\n\n        public int MaxDevices;\n        // Supports harvesting tube?\n        public bool HarvestingSupported;\n        // Supports drill?\n        public bool DrillSupported;\n        // Number of cargo slots. From 1x1x to 8x8x8 (biggest ships). Dimension of any item is defined in slots – for simplicity.\n        public int CargoCapacity;\n        // Fuel capacity in liters (xenon, helium, uranium)\n        public float FuelCapacity;\n        // In kWh\n        public float EletricityCapacity;\n        // In seconds\n        public float OxygenCapacity;\n\n        public float ExtraFuelCapacity;\n        public float ExtraEletricityCapacity;\n        public float ExtraOxygenCapacity;\n\n        public float ElectricityConsuption;\n        public float LightsElectricityConsuption;\n\n        // Defines duration of afterburner usage \n        public float AfterBurnerDurationTime;\n        // Defines time to refill afterburner\n        public float AfterBurnerRefillTime;\n\n        public int MaxLeftWeapons { get { return (MaxWeapons - 2) / 2; } }\n        public int MaxRightWeapons { get { return (MaxWeapons - 2) / 2; } }\n    }\n\n    internal struct MyShipTypePhysicsProperties\n    {\n        // Mass of bot ship. Bot default: 20000.\n        public float Mass;\n        // Movement force adjustor. Bot default: 120.0f\n        public float MultiplierHorizontalAngleStabilization;\n        // Movement force adjustor. Bot default: 195\n        public float MultiplierForwardBackward;\n        // Movement force adjustor. Bot default: 180\n        public float MultiplierStrafe;\n        // Movement force adjustor. Bot default: 13\n        public float MultiplierStrafeRotation;\n        // Movement force adjustor. Bot default: 180\n        public float MultiplierUpDown;\n        public float MultiplierRoll;\n        // Movement force adjustor. Bot default: 3\n        public float MultiplierRotation;\n        // Movement force adjustor. Bot default: 5.0f\n        public float MultiplierRotationEffect;\n        // Movement force adjustor. Bot default: 40\n        public float MultiplierRotationDecelerate;\n        // Movement force adjustor. Bot default: 3\n        public float MultiplierMovement;\n        // Max angular velocity multiplier.\n        public float MaxAngularVelocity;\n    }\n\n    internal struct MyShipTypeVisualProperties\n    {\n        public MyModelsEnum ModelLod0Enum;\n        public MyModelsEnum? ModelLod1Enum;\n        public MyModelsEnum CockpitGlassModel;\n        public MyModelsEnum CockpitInteriorModel;\n        public MyMaterialType MaterialType;\n    }\n    \n    static class MyShipTypeConstants\n    {\n        static Dictionary<int, MyShipTypeProperties> ShipTypeProperties = new Dictionary<int, MyShipTypeProperties>();\n\n        static MyShipTypeConstants()\n        {\n            var gamePlay = new MyShipTypeGamePlayProperties\n            {\n                //CargoCapacity = 8 * 8 * 8,\n                CargoCapacity = MySmallShipConstants.NORMAL_CARGO_CAPACITY,\n                DrillSupported = true,\n                HarvestingSupported = true,\n                MaxDevices = 16,\n                MaxWeapons = 8,\n\n                FuelCapacity = 60,\n                ExtraFuelCapacity = 60,\n                EletricityCapacity = 5000,\n                ExtraEletricityCapacity = 5000,\n                OxygenCapacity = 1800,\n                ExtraOxygenCapacity = 600,\n                ElectricityConsuption = 1,\n                LightsElectricityConsuption = 2,\n                AfterBurnerDurationTime = 4,\n                AfterBurnerRefillTime = 6,\n            };\n\n            var shipPhysics = new MyShipTypePhysicsProperties\n            {\n                Mass = 6600,\n                MultiplierMovement = 1f,\n                MultiplierForwardBackward = 420,\n                MultiplierStrafe = 420,\n                MultiplierStrafeRotation = 12,\n                MultiplierUpDown = 420,\n                MultiplierRoll = 1.8f,\n                MultiplierRotation = 10f,\n                MultiplierRotationEffect = 0.68f,\n                MultiplierRotationDecelerate = 42f,\n                MultiplierHorizontalAngleStabilization = 42f,\n                MaxAngularVelocity = 20f,\n            };\n\n            var defaultPhysicsForBot = new MyShipTypePhysicsProperties\n            {\n                Mass = 4000,\n                MultiplierMovement = 1f,\n                MultiplierForwardBackward = 420,\n                MultiplierStrafe = 420,\n                MultiplierStrafeRotation = 12,\n                MultiplierUpDown = 420,\n                MultiplierRoll = 0.79f,\n                MultiplierRotation = 2.0f,\n                MultiplierRotationEffect = 0.68f,\n                MultiplierRotationDecelerate = 18.5f,\n                MultiplierHorizontalAngleStabilization = 42f,\n                MaxAngularVelocity = 20f,\n            };\n\n            const float massMultiplier = 4;\n\n            shipPhysics.Mass = massMultiplier * 7000;\n            gamePlay.CargoCapacity = MySmallShipConstants.LARGE_CARGO_CAPACITY;\n            gamePlay.MaxWeapons = 8;\n            ShipTypeProperties.Add((int)MyMwcObjectBuilder_SmallShip_TypesEnum.LIBERATOR, new MyShipTypeProperties\n            {\n                GamePlay = gamePlay,\n                Physics = shipPhysics,\n                PhysicsForBot = defaultPhysicsForBot,\n                Visual = new MyShipTypeVisualProperties\n                {\n                    ModelLod0Enum = MyModelsEnum.Liberator,\n                    ModelLod1Enum = MyModelsEnum.Liberator_LOD1,\n                    CockpitGlassModel = MyModelsEnum.EAC05_Cockpit_glass,\n                    CockpitInteriorModel = MyModelsEnum.EAC05_Cockpit,\n                    MaterialType = MyMaterialType.SHIP\n                }\n            });\n\n            shipPhysics.Mass = massMultiplier * 7500;\n            gamePlay.CargoCapacity = MySmallShipConstants.LARGE_CARGO_CAPACITY;\n            gamePlay.MaxWeapons = 8;\n            ShipTypeProperties.Add((int)MyMwcObjectBuilder_SmallShip_TypesEnum.ENFORCER, new MyShipTypeProperties\n            {\n                GamePlay = gamePlay,\n                Physics = shipPhysics,\n                PhysicsForBot = defaultPhysicsForBot,\n                Visual = new MyShipTypeVisualProperties\n                {\n                    ModelLod0Enum = MyModelsEnum.Enforcer,\n                    ModelLod1Enum = MyModelsEnum.Enforcer_LOD1,\n                    CockpitGlassModel = MyModelsEnum.OmniCorp04_Cockpit_glass,\n                    CockpitInteriorModel = MyModelsEnum.OmniCorp04_Cockpit,\n                    MaterialType = MyMaterialType.SHIP\n                }\n            });\n\n            shipPhysics.Mass = massMultiplier * 8000;\n            gamePlay.CargoCapacity = MySmallShipConstants.LARGE_CARGO_CAPACITY;\n            gamePlay.MaxWeapons = 8;\n            ShipTypeProperties.Add((int)MyMwcObjectBuilder_SmallShip_TypesEnum.KAMMLER, new MyShipTypeProperties\n            {\n                GamePlay = gamePlay,\n                Physics = shipPhysics,\n                PhysicsForBot = defaultPhysicsForBot,\n                Visual = new MyShipTypeVisualProperties\n                {\n                    ModelLod0Enum = MyModelsEnum.Kammler,\n                    ModelLod1Enum = MyModelsEnum.Kammler_LOD1,\n                    CockpitGlassModel = MyModelsEnum.Cockpit_SS_04_glass,\n                    CockpitInteriorModel = MyModelsEnum.Cockpit_SS_04,\n                    MaterialType = MyMaterialType.SHIP\n                }\n            });\n\n            shipPhysics.Mass = massMultiplier * 6600;\n            gamePlay.CargoCapacity = MySmallShipConstants.LARGE_CARGO_CAPACITY;\n            gamePlay.MaxWeapons = 8;\n            ShipTypeProperties.Add((int)MyMwcObjectBuilder_SmallShip_TypesEnum.GETTYSBURG, new MyShipTypeProperties\n            {\n                GamePlay = gamePlay,\n                Physics = shipPhysics,\n                PhysicsForBot = defaultPhysicsForBot,\n                Visual = new MyShipTypeVisualProperties\n                {\n                    ModelLod0Enum = MyModelsEnum.Gettysburg,\n                    ModelLod1Enum = MyModelsEnum.Gettysburg_LOD1,\n                    CockpitGlassModel = MyModelsEnum.EAC02_Cockpit_glass,\n                    CockpitInteriorModel = MyModelsEnum.EAC02_Cockpit,\n                    MaterialType = MyMaterialType.SHIP\n                }\n            });\n\n            shipPhysics.Mass = massMultiplier * 5000;\n            gamePlay.CargoCapacity = MySmallShipConstants.NORMAL_CARGO_CAPACITY;\n            gamePlay.MaxWeapons = 6;\n            ShipTypeProperties.Add((int)MyMwcObjectBuilder_SmallShip_TypesEnum.VIRGINIA, new MyShipTypeProperties\n            {\n                GamePlay = gamePlay,\n                Physics = shipPhysics,\n                PhysicsForBot = defaultPhysicsForBot,\n                Visual = new MyShipTypeVisualProperties\n                {\n                    ModelLod0Enum = MyModelsEnum.Virginia,\n                    ModelLod1Enum = MyModelsEnum.Virginia_LOD1,\n                    CockpitGlassModel = MyModelsEnum.EAC02_Cockpit_glass,\n                    CockpitInteriorModel = MyModelsEnum.EAC02_Cockpit,\n                    MaterialType = MyMaterialType.SHIP\n                }\n            });\n\n            shipPhysics.Mass = massMultiplier * 5500;\n            gamePlay.CargoCapacity = MySmallShipConstants.NORMAL_CARGO_CAPACITY;\n            gamePlay.MaxWeapons = 6;\n            ShipTypeProperties.Add((int)MyMwcObjectBuilder_SmallShip_TypesEnum.BAER, new MyShipTypeProperties\n            {\n                GamePlay = gamePlay,\n                Physics = shipPhysics,\n                PhysicsForBot = defaultPhysicsForBot,\n                Visual = new MyShipTypeVisualProperties\n                {\n                    ModelLod0Enum = MyModelsEnum.Baer,\n                    ModelLod1Enum = MyModelsEnum.Baer_LOD1,\n                    CockpitGlassModel = MyModelsEnum.Cockpit_SS_04_glass,\n                    CockpitInteriorModel = MyModelsEnum.Cockpit_SS_04,\n                    MaterialType = MyMaterialType.SHIP\n                }\n            });\n\n            shipPhysics.Mass = massMultiplier * 4500;\n            gamePlay.CargoCapacity = MySmallShipConstants.NORMAL_CARGO_CAPACITY;\n            gamePlay.MaxWeapons = 4;\n            ShipTypeProperties.Add((int)MyMwcObjectBuilder_SmallShip_TypesEnum.HEWER, new MyShipTypeProperties\n            {\n                GamePlay = gamePlay,\n                Physics = shipPhysics,\n                PhysicsForBot = defaultPhysicsForBot,\n                Visual = new MyShipTypeVisualProperties\n                {\n                    ModelLod0Enum = MyModelsEnum.Hewer,\n                    ModelLod1Enum = MyModelsEnum.Hewer_LOD1,\n                    CockpitGlassModel = MyModelsEnum.Cockpit_SS_04_glass,\n                    CockpitInteriorModel = MyModelsEnum.Cockpit_SS_04,\n                    MaterialType = MyMaterialType.SHIP\n                }\n            });\n\n            shipPhysics.Mass = massMultiplier * 4800;\n            gamePlay.CargoCapacity = MySmallShipConstants.NORMAL_CARGO_CAPACITY;\n            gamePlay.MaxWeapons = 6;\n            ShipTypeProperties.Add((int)MyMwcObjectBuilder_SmallShip_TypesEnum.RAZORCLAW, new MyShipTypeProperties\n            {\n                GamePlay = gamePlay,\n                Physics = shipPhysics,\n                PhysicsForBot = defaultPhysicsForBot,\n                Visual = new MyShipTypeVisualProperties\n                {\n                    ModelLod0Enum = MyModelsEnum.Razorclaw,\n                    ModelLod1Enum = MyModelsEnum.Razorclaw_LOD1,\n                    CockpitGlassModel = MyModelsEnum.Cockpit_Razorclaw_glass,\n                    CockpitInteriorModel = MyModelsEnum.Cockpit_Razorclaw,\n                    MaterialType = MyMaterialType.SHIP\n                }\n            });\n\n            shipPhysics.Mass = massMultiplier * 6200;\n            gamePlay.CargoCapacity = MySmallShipConstants.NORMAL_CARGO_CAPACITY;\n            gamePlay.MaxWeapons = 8;\n            ShipTypeProperties.Add((int)MyMwcObjectBuilder_SmallShip_TypesEnum.GREISER, new MyShipTypeProperties\n            {\n                GamePlay = gamePlay,\n                Physics = shipPhysics,\n                PhysicsForBot = defaultPhysicsForBot,\n                Visual = new MyShipTypeVisualProperties\n                {\n                    ModelLod0Enum = MyModelsEnum.Greiser,\n                    ModelLod1Enum = MyModelsEnum.Greiser_LOD1,\n                    CockpitGlassModel = MyModelsEnum.Cockpit_SS_04_glass,\n                    CockpitInteriorModel = MyModelsEnum.Cockpit_SS_04,\n                    MaterialType = MyMaterialType.SHIP\n                }\n            });\n\n            shipPhysics.Mass = massMultiplier * 5900;\n            gamePlay.CargoCapacity = MySmallShipConstants.NORMAL_CARGO_CAPACITY;\n            gamePlay.MaxWeapons = 8;\n            ShipTypeProperties.Add((int)MyMwcObjectBuilder_SmallShip_TypesEnum.TRACER, new MyShipTypeProperties\n            {\n                GamePlay = gamePlay,\n                Physics = shipPhysics,\n                PhysicsForBot = defaultPhysicsForBot,\n                Visual = new MyShipTypeVisualProperties\n                {\n                    ModelLod0Enum = MyModelsEnum.Tracer,\n                    ModelLod1Enum = MyModelsEnum.Tracer_LOD1,\n                    CockpitGlassModel = MyModelsEnum.EAC03_Cockpit_glass,\n                    CockpitInteriorModel = MyModelsEnum.EAC03_Cockpit,\n                    MaterialType = MyMaterialType.SHIP\n                }\n            });\n\n            shipPhysics.Mass = massMultiplier * 6100;\n            gamePlay.CargoCapacity = MySmallShipConstants.NORMAL_CARGO_CAPACITY;\n            gamePlay.MaxWeapons = 8;\n            ShipTypeProperties.Add((int)MyMwcObjectBuilder_SmallShip_TypesEnum.JACKNIFE, new MyShipTypeProperties\n            {\n                GamePlay = gamePlay,\n                Physics = shipPhysics,\n                PhysicsForBot = defaultPhysicsForBot,\n                Visual = new MyShipTypeVisualProperties\n                {\n                    ModelLod0Enum = MyModelsEnum.SmallShip_Jacknife,\n                    ModelLod1Enum = MyModelsEnum.SmallShip_Jacknife_LOD1,\n                    CockpitGlassModel = MyModelsEnum.OmniCorp01_Cockpit_glass,\n                    CockpitInteriorModel = MyModelsEnum.OmniCorp01_Cockpit,\n                    MaterialType = MyMaterialType.SHIP\n                }\n            });\n\n            shipPhysics.Mass = massMultiplier * 5200;\n            shipPhysics.MultiplierRotationDecelerate = 25;\n            shipPhysics.MultiplierRotation = 6;\n            gamePlay.CargoCapacity = MySmallShipConstants.NORMAL_CARGO_CAPACITY;\n            gamePlay.MaxWeapons = 6;\n            ShipTypeProperties.Add((int)MyMwcObjectBuilder_SmallShip_TypesEnum.DOON, new MyShipTypeProperties\n            {\n                GamePlay = gamePlay,\n                Physics = shipPhysics,\n                PhysicsForBot = defaultPhysicsForBot,\n                Visual = new MyShipTypeVisualProperties\n                {\n                    ModelLod0Enum = MyModelsEnum.SmallShip_Doon,\n                    ModelLod1Enum = MyModelsEnum.SmallShip_Doon_LOD1,\n                    CockpitGlassModel = MyModelsEnum.MinerShip_Generic_CockpitGlass,\n                    CockpitInteriorModel = MyModelsEnum.MinerShip_Generic_CockpitInterior,\n                    MaterialType = MyMaterialType.SHIP\n                }\n            });\n            shipPhysics.MultiplierRotationDecelerate = 42;\n            shipPhysics.MultiplierRotation = 10;\n\n            shipPhysics.Mass = massMultiplier * 7500;\n            gamePlay.CargoCapacity = MySmallShipConstants.LARGE_CARGO_CAPACITY;\n            gamePlay.MaxWeapons = 10;\n            ShipTypeProperties.Add((int)MyMwcObjectBuilder_SmallShip_TypesEnum.HAMMER, new MyShipTypeProperties\n            {\n                GamePlay = gamePlay,\n                Physics = shipPhysics,\n                PhysicsForBot = defaultPhysicsForBot,\n                Visual = new MyShipTypeVisualProperties\n                {\n                    ModelLod0Enum = MyModelsEnum.SmallShip_Hammer,\n                    ModelLod1Enum = MyModelsEnum.SmallShip_Hammer_LOD1,\n                    CockpitGlassModel = MyModelsEnum.EAC04_Cockpit_glass,\n                    CockpitInteriorModel = MyModelsEnum.EAC04_Cockpit,\n                    MaterialType = MyMaterialType.SHIP\n                }\n            });\n\n            shipPhysics.Mass = massMultiplier * 9000;\n            gamePlay.CargoCapacity = MySmallShipConstants.LARGE_CARGO_CAPACITY;\n            gamePlay.MaxWeapons = 12;\n            ShipTypeProperties.Add((int)MyMwcObjectBuilder_SmallShip_TypesEnum.ORG, new MyShipTypeProperties\n            {\n                GamePlay = gamePlay,\n                Physics = shipPhysics,\n                PhysicsForBot = defaultPhysicsForBot,\n                Visual = new MyShipTypeVisualProperties\n                {\n                    ModelLod0Enum = MyModelsEnum.SmallShip_ORG,\n                    ModelLod1Enum = MyModelsEnum.SmallShip_ORG_LOD1,\n                    CockpitGlassModel = MyModelsEnum.Cockpit_CN_03_glass,\n                    CockpitInteriorModel = MyModelsEnum.Cockpit_CN_03,\n                    MaterialType = MyMaterialType.SHIP\n                }\n            });\n\n            shipPhysics.Mass = massMultiplier * 7500;\n            gamePlay.CargoCapacity = MySmallShipConstants.SMALL_CARGO_CAPACITY;\n            gamePlay.MaxWeapons = 10;\n            ShipTypeProperties.Add((int)MyMwcObjectBuilder_SmallShip_TypesEnum.YG, new MyShipTypeProperties\n            {\n                GamePlay = gamePlay,\n                Physics = shipPhysics,\n                PhysicsForBot = defaultPhysicsForBot,\n                Visual = new MyShipTypeVisualProperties\n                {\n                    ModelLod0Enum = MyModelsEnum.SmallShip_YG_Closed,\n                    ModelLod1Enum = MyModelsEnum.SmallShip_YG_Closed_LOD1,\n                    CockpitGlassModel = MyModelsEnum.Cockpit_CN_03_glass,\n                    CockpitInteriorModel = MyModelsEnum.Cockpit_CN_03,\n                    MaterialType = MyMaterialType.SHIP\n                }\n            });\n\n            shipPhysics.Mass = massMultiplier * 6600;\n            gamePlay.CargoCapacity = MySmallShipConstants.NORMAL_CARGO_CAPACITY;\n            gamePlay.MaxWeapons = 10;\n            ShipTypeProperties.Add((int)MyMwcObjectBuilder_SmallShip_TypesEnum.HAWK, new MyShipTypeProperties\n            {\n                GamePlay = gamePlay,\n                Physics = shipPhysics,\n                PhysicsForBot = defaultPhysicsForBot,\n                Visual = new MyShipTypeVisualProperties\n                {\n                    ModelLod0Enum = MyModelsEnum.SmallShip_Hawk,\n                    ModelLod1Enum = MyModelsEnum.SmallShip_Hawk_LOD1,\n                    CockpitGlassModel = MyModelsEnum.OmniCorp01_Cockpit_glass,\n                    CockpitInteriorModel = MyModelsEnum.OmniCorp01_Cockpit,\n                    MaterialType = MyMaterialType.SHIP\n                }\n            });\n\n            shipPhysics.Mass = massMultiplier * 6300;\n            gamePlay.CargoCapacity = MySmallShipConstants.SMALL_CARGO_CAPACITY;\n            gamePlay.MaxWeapons = 10;\n            ShipTypeProperties.Add((int)MyMwcObjectBuilder_SmallShip_TypesEnum.PHOENIX, new MyShipTypeProperties\n            {\n                GamePlay = gamePlay,\n                Physics = shipPhysics,\n                PhysicsForBot = defaultPhysicsForBot,\n                Visual = new MyShipTypeVisualProperties\n                {\n                    ModelLod0Enum = MyModelsEnum.SmallShip_Phoenix,\n                    ModelLod1Enum = MyModelsEnum.SmallShip_Phoenix_LOD1,\n                    CockpitGlassModel = MyModelsEnum.OmniCorp03_Cockpit_glass,\n                    CockpitInteriorModel = MyModelsEnum.OmniCorp03_Cockpit,\n                    MaterialType = MyMaterialType.SHIP\n                }\n            });\n\n            shipPhysics.Mass = massMultiplier * 8500;\n            gamePlay.CargoCapacity = MySmallShipConstants.NORMAL_CARGO_CAPACITY;\n            gamePlay.MaxWeapons = 10;\n            ShipTypeProperties.Add((int)MyMwcObjectBuilder_SmallShip_TypesEnum.LEVIATHAN, new MyShipTypeProperties\n            {\n                GamePlay = gamePlay,\n                Physics = shipPhysics,\n                PhysicsForBot = defaultPhysicsForBot,\n                Visual = new MyShipTypeVisualProperties\n                {\n                    ModelLod0Enum = MyModelsEnum.SmallShip_Leviathan,\n                    ModelLod1Enum = MyModelsEnum.SmallShip_Leviathan_LOD1,\n                    CockpitGlassModel = MyModelsEnum.Cockpit_CN_03_glass,\n                    CockpitInteriorModel = MyModelsEnum.Cockpit_CN_03,\n                    MaterialType = MyMaterialType.SHIP\n                }\n            });\n\n            shipPhysics.Mass = massMultiplier * 5500;\n            gamePlay.CargoCapacity = MySmallShipConstants.SMALL_CARGO_CAPACITY;\n            gamePlay.MaxWeapons = 6;\n            ShipTypeProperties.Add((int)MyMwcObjectBuilder_SmallShip_TypesEnum.ROCKHEATER, new MyShipTypeProperties\n            {\n                GamePlay = gamePlay,\n                Physics = shipPhysics,\n                PhysicsForBot = defaultPhysicsForBot,\n                Visual = new MyShipTypeVisualProperties\n                {\n                    ModelLod0Enum = MyModelsEnum.SmallShip_Rockheater,\n                    ModelLod1Enum = MyModelsEnum.SmallShip_Rockheater_LOD1,\n                    CockpitGlassModel = MyModelsEnum.OmniCorp_EAC01_Cockpit_glass,\n                    CockpitInteriorModel = MyModelsEnum.OmniCorp_EAC01_Cockpit,\n                    MaterialType = MyMaterialType.SHIP\n                }\n            });\n\n            shipPhysics.Mass = massMultiplier * 6000;\n            gamePlay.CargoCapacity = MySmallShipConstants.LARGE_CARGO_CAPACITY;\n            gamePlay.MaxWeapons = 8;\n            ShipTypeProperties.Add((int)MyMwcObjectBuilder_SmallShip_TypesEnum.STEELHEAD, new MyShipTypeProperties\n            {\n                GamePlay = gamePlay,\n                Physics = shipPhysics,\n                PhysicsForBot = defaultPhysicsForBot,\n                Visual = new MyShipTypeVisualProperties\n                {\n                    ModelLod0Enum = MyModelsEnum.SmallShip_SteelHead,\n                    ModelLod1Enum = MyModelsEnum.SmallShip_SteelHead_LOD1,\n                    CockpitGlassModel = MyModelsEnum.Cockpit_CN_03_glass,\n                    CockpitInteriorModel = MyModelsEnum.Cockpit_CN_03,\n                    MaterialType = MyMaterialType.SHIP\n                }\n            });\n\n            shipPhysics.Mass = massMultiplier * 11000;\n            gamePlay.CargoCapacity = MySmallShipConstants.NORMAL_CARGO_CAPACITY;\n            gamePlay.MaxWeapons = 12;\n            ShipTypeProperties.Add((int)MyMwcObjectBuilder_SmallShip_TypesEnum.FEDER, new MyShipTypeProperties\n            {\n                GamePlay = gamePlay,\n                Physics = shipPhysics,\n                PhysicsForBot = defaultPhysicsForBot,\n                Visual = new MyShipTypeVisualProperties\n                {\n                    ModelLod0Enum = MyModelsEnum.SmallShip_Talon,\n                    ModelLod1Enum = MyModelsEnum.SmallShip_Talon_LOD1,\n                    CockpitGlassModel = MyModelsEnum.Cockpit_SS_04_glass,\n                    CockpitInteriorModel = MyModelsEnum.Cockpit_SS_04,\n                    MaterialType = MyMaterialType.SHIP\n                }\n            });\n\n            shipPhysics.Mass = massMultiplier * 10500;\n            gamePlay.CargoCapacity = MySmallShipConstants.LARGE_CARGO_CAPACITY;\n            gamePlay.MaxWeapons = 12;\n            ShipTypeProperties.Add((int)MyMwcObjectBuilder_SmallShip_TypesEnum.STANISLAV, new MyShipTypeProperties\n            {\n                GamePlay = gamePlay,\n                Physics = shipPhysics,\n                PhysicsForBot = defaultPhysicsForBot,\n                Visual = new MyShipTypeVisualProperties\n                {\n                    ModelLod0Enum = MyModelsEnum.SmallShip_Stanislav,\n                    ModelLod1Enum = MyModelsEnum.SmallShip_Stanislav_LOD1,\n                    CockpitGlassModel = MyModelsEnum.Cockpit_CN_03_glass,\n                    CockpitInteriorModel = MyModelsEnum.Cockpit_CN_03,\n                    MaterialType = MyMaterialType.SHIP\n                }\n            });\n        }\n\n        public static MyShipTypeProperties GetShipTypeProperties(MyMwcObjectBuilder_SmallShip_TypesEnum shipType)\n        {\n            Debug.Assert(ShipTypeProperties.ContainsKey((int)shipType));\n            return ShipTypeProperties[(int)shipType];\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Utils/MySimpleObjectDraw.cs",
    "content": "using System;\nusing System.Collections.Generic;\n\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Effects;\nusing MinerWars.AppCode.Game.Managers;\nusing MinerWars.AppCode.Game.Render;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.AppCode.Game.Models;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils.Utils;\n\n//using MinerWarsMath;\n//using MinerWarsMath.Graphics;\n\nusing SharpDX;\nusing SharpDX.Direct3D9;\nusing SharpDX.Toolkit;\nusing SharpDX.Toolkit.Graphics;\n\n\n\nnamespace MinerWars.AppCode.Game.Utils\n{\n    using Vector2 = MinerWarsMath.Vector2;\n    using Vector3 = MinerWarsMath.Vector3;\n    using Vector4 = MinerWarsMath.Vector4;\n    using Rectangle = MinerWarsMath.Rectangle;\n    using Matrix = MinerWarsMath.Matrix;\n    using Color = MinerWarsMath.Color;\n    using BoundingBox = MinerWarsMath.BoundingBox;\n    using BoundingSphere = MinerWarsMath.BoundingSphere;\n    using BoundingFrustum = MinerWarsMath.BoundingFrustum;\n    using MathHelper = MinerWarsMath.MathHelper;\n\n    static class MySimpleObjectDraw\n    {\n        static MyModel m_modelBoxLowRes;\n        static MyModel m_modelBoxHiRes;\n        static MyModel m_modelSphere;\n        static MyModel m_modelLightSphere;\n        static MyModel m_modelCone;\n        static MyModel m_modelHemisphere;\n        static MyModel m_modelHemisphereLowRes;\n        static MyModel m_modelCapsule;\n\n        private static List<MyLine> m_lineBuffer = new List<MyLine>(2000);   //max capacity of rendered lines        \n\n\n        private static List<Vector3> m_verticesBuffer = new List<Vector3>(2000);   //max capacity of rendered lines\n\n\n\n        public static void LoadContent()\n        {\n            MyMwcLog.WriteLine(\"MySimpleObjectDraw.LoadContent() - START\");\n            MyMwcLog.IncreaseIndent();\n\n            m_modelBoxHiRes = MyModels.GetModelForDraw(MyModelsEnum.BoxHiRes);\n            m_modelBoxLowRes = MyModels.GetModelForDraw(MyModelsEnum.BoxLowRes);\n            m_modelSphere = MyModels.GetModelForDraw(MyModelsEnum.Sphere);\n            m_modelLightSphere = MyModels.GetModelForDraw(MyModelsEnum.Sphere_low);\n            m_modelCone = MyModels.GetModelForDraw(MyModelsEnum.Cone);\n            m_modelHemisphere = MyModels.GetModelForDraw(MyModelsEnum.Hemisphere);\n            m_modelHemisphereLowRes = MyModels.GetModelForDraw(MyModelsEnum.Hemisphere_low);\n            m_modelCapsule = MyModels.GetModelForDraw(MyModelsEnum.Capsule); \n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MySimpleObjectDraw.LoadContent() - END\");\n        }\n\n        public static void UnloadContent()\n        {\n\n        }\n\n        /// <summary>\n        /// Draw occlusion bounding box method with our premade effect and box.\n        /// </summary>\n        /// <param name=\"bbox\"></param>\n        /// <param name=\"scale\"></param>\n        /// <param name=\"enableDepthTesting\"></param>\n        /// <param name=\"billboardLike\">Indicates whether the occlusion object (box) is rotated to face the camera or not.</param>\n        public static void DrawOcclusionBoundingBox(BoundingBox bbox, float scale, bool enableDepthTesting, bool billboardLike = false, bool useDepthTarget = true)\n        {\n            useDepthTarget &= !MyRenderConstants.RenderQualityProfile.ForwardRender;\n\n            var cameraToBBox = bbox.GetCenter() - MyCamera.Position;\n            Matrix worldMatrix = billboardLike ? Matrix.CreateWorld(Vector3.Zero, MyMwcUtils.Normalize(cameraToBBox), MyMwcUtils.Normalize(MyCamera.UpVector + MyCamera.LeftVector)) : Matrix.Identity;\n            \n            Vector3 scaleV = (bbox.Max - bbox.Min) * scale;\n            worldMatrix *= Matrix.CreateScale(scaleV);\n            worldMatrix.Translation = cameraToBBox;\n\n                  \n            \n            MyEffectOcclusionQueryDraw effectOQ = MyRender.GetEffect(MyEffects.OcclusionQueryDrawMRT) as MyEffectOcclusionQueryDraw;\n\n            if (enableDepthTesting && !MyRenderConstants.RenderQualityProfile.ForwardRender)\n                effectOQ.SetTechnique(MyEffectOcclusionQueryDraw.Technique.DepthTestEnabled);\n            else\n                effectOQ.SetTechnique(MyEffectOcclusionQueryDraw.Technique.DepthTestDisabled);\n            \n\n            effectOQ.SetWorldMatrix(worldMatrix);\n            effectOQ.SetViewMatrix(MyCamera.ViewMatrixAtZero);\n            effectOQ.SetProjectionMatrix(MyCamera.ProjectionMatrix);\n\n            if (useDepthTarget)\n            {\n                var depthRenderTarget = MyRender.GetRenderTarget(MyRenderTargets.Depth);\n                effectOQ.SetDepthRT(depthRenderTarget);\n                effectOQ.SetScale(MyRender.GetScaleForViewport(depthRenderTarget));\n            }\n\n            effectOQ.Begin();\n\n            //draw\n            m_modelBoxLowRes.Render();\n\n            effectOQ.End();\n        }\n\n        /// <summary>\n        /// Only to be called with FastOcclusionBoundingBoxDraw\n        /// </summary>\n        public static void PrepareFastOcclusionBoundingBoxDraw()\n        {\n            MyEffectOcclusionQueryDraw effectOQ = MyRender.GetEffect(MyEffects.OcclusionQueryDrawMRT) as MyEffectOcclusionQueryDraw;\n            effectOQ.SetTechnique(MyEffectOcclusionQueryDraw.Technique.DepthTestEnabled);\n\n            effectOQ.SetViewMatrix(MyCamera.ViewMatrixAtZero);\n            effectOQ.SetProjectionMatrix(MyCamera.ProjectionMatrix);\n\n            if (!MyRenderConstants.RenderQualityProfile.ForwardRender)\n            {\n                var depthRenderTarget = MyRender.GetRenderTarget(MyRenderTargets.Depth);\n                effectOQ.SetDepthRT(depthRenderTarget);\n                effectOQ.SetScale(MyRender.GetScaleForViewport(depthRenderTarget));\n            }\n        }\n\n        // Vertices must be in triangle strip order\n        // 0--1\n        // | /|\n        // |/ |\n        // 2--3\n        public static void OcclusionPlaneDraw(Vector3[] quad)\n        {\n            Matrix worldMatrix = Matrix.Identity;\n            worldMatrix.Translation = -MyCamera.Position;\n\n            MyEffectOcclusionQueryDraw effectOQ = MyRender.GetEffect(MyEffects.OcclusionQueryDrawMRT) as MyEffectOcclusionQueryDraw;\n            effectOQ.SetWorldMatrix(worldMatrix);\n            effectOQ.SetViewMatrix(MyCamera.ViewMatrixAtZero);\n            effectOQ.SetProjectionMatrix(MyCamera.ProjectionMatrix);\n\n            if (!MyRenderConstants.RenderQualityProfile.ForwardRender)\n            {\n                var depthRenderTarget = MyRender.GetRenderTarget(MyRenderTargets.Depth);\n                effectOQ.SetDepthRT(depthRenderTarget);\n                effectOQ.SetScale(MyRender.GetScaleForViewport(depthRenderTarget));\n                effectOQ.SetTechnique(MyEffectOcclusionQueryDraw.Technique.DepthTestEnabledNonMRT);\n            }\n            else\n            {\n                effectOQ.SetTechnique(MyEffectOcclusionQueryDraw.Technique.DepthTestDisabledNonMRT);\n            }\n        }\n\n        /// <summary>\n        /// Needs to have PrepareFastOcclusionBoundingBoxDraw() called first\n        /// </summary>\n        public static void FastOcclusionBoundingBoxDraw(BoundingBox bbox, float scale)\n        {\n            Vector3 scaleV = (bbox.Max - bbox.Min) * scale;\n            Matrix worldMatrix = Matrix.CreateScale(scaleV);\n            worldMatrix.Translation = bbox.GetCenter() - MyCamera.Position;\n\n            MyEffectOcclusionQueryDraw effectOQ = MyRender.GetEffect(MyEffects.OcclusionQueryDrawMRT) as MyEffectOcclusionQueryDraw;\n            effectOQ.SetWorldMatrix(worldMatrix);\n            effectOQ.SetTechnique(MyRenderConstants.RenderQualityProfile.ForwardRender ? MyEffectOcclusionQueryDraw.Technique.DepthTestDisabled : MyEffectOcclusionQueryDraw.Technique.DepthTestEnabled);\n\n            effectOQ.Begin();\n\n            //draw\n            m_modelBoxLowRes.Render();\n            MyPerformanceCounter.PerCameraDraw.TotalDrawCalls++;\n\n            effectOQ.End();\n        }\n\n\n        public static void DrawSphereForLight(MyEffectPointLight effect, ref Matrix worldMatrix, ref Vector3 diffuseColor, float alpha)\n        {\n            Matrix worldViewProjection;\n            Matrix.Multiply(ref worldMatrix, ref MyCamera.ViewProjectionMatrix, out worldViewProjection);\n\n            effect.SetWorldViewProjMatrix(ref worldViewProjection);\n            effect.SetWorldMatrix(ref worldMatrix);\n\n            effect.Begin();\n\n            m_modelLightSphere.Render();\n\n            effect.End();\n        }\n\n        public static void DrawSphereForLight(MyEffectPointLight effect, ref Vector3 position, float radius, ref Vector3 diffuseColor, float alpha)\n        {\n            Matrix scaleMatrix;\n            Matrix.CreateScale(radius, out scaleMatrix);\n            Matrix positionMatrix;\n            Matrix.CreateTranslation(ref position, out positionMatrix);\n            Matrix lightMatrix;\n            Matrix.Multiply(ref scaleMatrix, ref positionMatrix, out lightMatrix);\n\n            DrawSphereForLight(effect, ref lightMatrix, ref diffuseColor, alpha);\n        }\n\n        public static void DrawHemisphereForLight(MyEffectPointLight effect, ref Matrix worldMatrix, ref Vector3 diffuseColor, float alpha)\n        {\n            Matrix worldViewProjMatrix;\n            Matrix.Multiply(ref worldMatrix, ref MyCamera.ViewProjectionMatrix, out worldViewProjMatrix);\n\n            effect.SetWorldViewProjMatrix(ref worldViewProjMatrix);\n            effect.SetWorldMatrix(ref worldMatrix);\n\n            effect.Begin();\n\n            m_modelHemisphereLowRes.Render();\n\n            effect.End();\n        }\n\n        public static void DrawHemisphereForLight(MyEffectPointLight effect, ref Vector3 position, float radius, ref Vector3 diffuseColor, float alpha)\n        {\n            Matrix scaleMatrix;\n            Matrix.CreateScale(radius, out scaleMatrix);\n            Matrix positionMatrix;\n            Matrix.CreateTranslation(ref position, out positionMatrix);\n            Matrix lightMatrix;\n            Matrix.Multiply(ref scaleMatrix, ref positionMatrix, out lightMatrix);\n\n            DrawHemisphereForLight(effect, ref lightMatrix, ref diffuseColor, alpha);\n        }\n\n        public static void DrawConeForLight(MyEffectPointLight effect, Matrix worldMatrix)\n        {\n            Matrix worldViewProjMatrix;\n            Matrix.Multiply(ref worldMatrix, ref MyCamera.ViewProjectionMatrix, out worldViewProjMatrix);\n\n            effect.SetWorldViewProjMatrix(ref worldViewProjMatrix);\n            effect.SetWorldMatrix(ref worldMatrix);\n\n            effect.Begin();\n\n            m_modelCone.Render();\n\n            effect.End();\n        }\n\n        public static void DrawConeForLight(MyEffectPointLight effect, Vector3 position, Vector3 direction, Vector3 upVector, float coneLength, float coneCosAngle)\n        {\n            // Cone is oriented backwards\n            float scaleZ = -coneLength;\n\n            // Calculate cone side (hypotenuse of triangle)\n            float side = coneLength / coneCosAngle;\n\n            // Calculate cone bottom scale (Pythagoras theorem)\n            float scaleXY = (float)System.Math.Sqrt(side * side - coneLength * coneLength);\n\n            // Calculate world matrix as scale * light world matrix\n            Matrix world = Matrix.CreateScale(scaleXY, scaleXY, scaleZ) * Matrix.CreateWorld(position, direction, upVector);\n            DrawConeForLight(effect, world);\n        }\n\n        /// <summary>\n        /// GenerateLines\n        /// </summary>\n        /// <param name=\"vctStart\"></param>\n        /// <param name=\"vctEnd\"></param>\n        /// <param name=\"vctSideStep\"></param>\n        /// <param name=\"worldMatrix\"></param>\n        /// <param name=\"m_lineBuffer\"></param>\n        /// <param name=\"divideRatio\"></param>\n        private static void GenerateLines(Vector3 vctStart, Vector3 vctEnd, ref Vector3 vctSideStep, ref Matrix worldMatrix, ref List<MyLine> m_lineBuffer, int divideRatio)\n        {\n            for (int i = 0; i <= divideRatio; ++i)\n            {\n                Vector3 transformedStart = Vector3.Transform(vctStart, worldMatrix);\n                Vector3 transformedEnd = Vector3.Transform(vctEnd, worldMatrix);\n\n                if (m_lineBuffer.Count < m_lineBuffer.Capacity)\n                {\n                    MyLine line = new MyLine(transformedStart, transformedEnd, false);\n                    //@ generate Line\n                    m_lineBuffer.Add(line);\n\n                    vctStart += vctSideStep;\n                    vctEnd += vctSideStep;\n                }\n            }\n        }\n\n\n        /// <summary>\n        /// DrawTransparentBox\n        /// </summary>\n        public static void DrawTransparentBox(ref Matrix worldMatrix, ref BoundingBox localbox, ref Vector4 vctColor, bool bWireFramed, int wireDivideRatio, MyTransparentMaterialEnum? faceMaterial = null, MyTransparentMaterialEnum? lineMaterial = null)\n        {\n            if (!faceMaterial.HasValue)\n            {\n                faceMaterial = MyTransparentMaterialEnum.ContainerBorder;\n            }\n\n            Vector3 vctMin = localbox.Min;\n            Vector3 vctMax = localbox.Max;\n\n            //@ CreateQuads\n            Vector3 translation = worldMatrix.Translation;\n            MyQuad quad;\n\n            Matrix orientation = Matrix.Identity;\n            orientation.Forward = worldMatrix.Forward;\n            orientation.Up = worldMatrix.Up;\n            orientation.Right = worldMatrix.Right;\n\n            float halfWidth = (localbox.Max.X - localbox.Min.X) / 2f;\n            float halfHeight = (localbox.Max.Y - localbox.Min.Y) / 2f;\n            float halfDeep = (localbox.Max.Z - localbox.Min.Z) / 2f;\n\n            //@ Front side\n            Vector3 faceNorm = Vector3.Transform(Vector3.Forward, orientation);\n            faceNorm *= halfDeep;\n            Vector3 vctPos = translation + faceNorm;\n            MyUtils.GenerateQuad(out quad, ref vctPos, halfWidth, halfHeight, ref worldMatrix);\n            MyTransparentGeometry.AddQuad(faceMaterial.Value, ref quad, ref vctColor, ref translation);\n\n            //@ Back side\n            vctPos = translation - faceNorm;\n            MyUtils.GenerateQuad(out quad, ref vctPos, halfWidth, halfHeight, ref worldMatrix);\n            MyTransparentGeometry.AddQuad(faceMaterial.Value, ref quad, ref vctColor, ref translation);\n\n            //@ Left side\n            Matrix rotMat = Matrix.CreateRotationY(MathHelper.ToRadians(90f));\n            Matrix rotated = rotMat * worldMatrix;\n            faceNorm = Vector3.Transform(Vector3.Left, orientation);\n            faceNorm *= halfWidth;\n            vctPos = translation + faceNorm;\n            MyUtils.GenerateQuad(out quad, ref vctPos, halfDeep, halfHeight, ref rotated);\n            MyTransparentGeometry.AddQuad(faceMaterial.Value, ref quad, ref vctColor, ref translation);\n\n            //@ Right side\n            vctPos = translation - faceNorm;\n            MyUtils.GenerateQuad(out quad, ref vctPos, halfDeep, halfHeight, ref rotated);\n            MyTransparentGeometry.AddQuad(faceMaterial.Value, ref quad, ref vctColor, ref translation);\n\n            //@ Top side\n            rotMat = Matrix.CreateRotationX(MathHelper.ToRadians(90f));\n            rotated = rotMat * worldMatrix;\n            faceNorm = Vector3.Transform(Vector3.Up, orientation);\n            faceNorm *= ((localbox.Max.Y - localbox.Min.Y) / 2f);\n            vctPos = translation + faceNorm;\n            MyUtils.GenerateQuad(out quad, ref vctPos, halfWidth, halfDeep, ref rotated);\n            MyTransparentGeometry.AddQuad(faceMaterial.Value, ref quad, ref vctColor, ref translation);\n\n            //@ Bottom side\n            vctPos = translation - faceNorm;\n            MyUtils.GenerateQuad(out quad, ref vctPos, halfWidth, halfDeep, ref rotated);\n            MyTransparentGeometry.AddQuad(faceMaterial.Value, ref quad, ref vctColor, ref translation);\n\n            if (bWireFramed)\n            {\n                Vector4 vctWireColor = vctColor;\n                vctWireColor *= 1.3f;\n                DrawWireFramedBox(ref worldMatrix, ref localbox, ref vctWireColor, 0.02f, wireDivideRatio, lineMaterial);\n            }\n        }\n\n        /// <summary>\n        /// DrawWireFramedBox\n        /// </summary>\n        /// <param name=\"worldMatrix\"></param>\n        /// <param name=\"localbox\"></param>\n        /// <param name=\"vctColor\"></param>\n        /// <param name=\"bWireFramed\"></param>\n        /// <param name=\"wireDivideRatio\"></param>\n        /// <param name=\"wireDivideRatio\"></param>\n        public static void DrawWireFramedBox(ref Matrix worldMatrix, ref BoundingBox localbox, ref Vector4 vctColor, float fThickRatio, int wireDivideRatio, MyTransparentMaterialEnum? lineMaterial = null)\n        {\n            if (!lineMaterial.HasValue)\n            {\n                lineMaterial = MyTransparentMaterialEnum.ProjectileTrailLine;\n            }\n\n            m_lineBuffer.Clear();\n\n            //@ generate linnes for Front Side\n            Vector3 translation = worldMatrix.Translation;\n\n            Matrix orientation = Matrix.Identity;\n            orientation.Forward = worldMatrix.Forward;\n            orientation.Up = worldMatrix.Up;\n            orientation.Right = worldMatrix.Right;\n\n            float width = System.Math.Max(0.1f, localbox.Max.X - localbox.Min.X);\n            float height = System.Math.Max(0.1f, localbox.Max.Y - localbox.Min.Y);\n            float deep = System.Math.Max(0.1f, localbox.Max.Z - localbox.Min.Z);\n\n            //@ ForntSide\n            Vector3 vctStart = localbox.Min;\n            Vector3 vctEnd = vctStart + Vector3.Up * height;\n            Vector3 vctSideStep = Vector3.Right * (width / wireDivideRatio);\n            GenerateLines(vctStart, vctEnd, ref vctSideStep, ref worldMatrix, ref m_lineBuffer, wireDivideRatio);\n            // BackSide\n            vctStart += Vector3.Backward * deep;\n            vctEnd = vctStart + Vector3.Up * height;\n            GenerateLines(vctStart, vctEnd, ref vctSideStep, ref worldMatrix, ref m_lineBuffer, wireDivideRatio);\n\n            //@ FrontSide\n            vctStart = localbox.Min;\n            vctEnd = vctStart + Vector3.Right * width;\n            vctSideStep = Vector3.Up * (height / wireDivideRatio);\n            GenerateLines(vctStart, vctEnd, ref vctSideStep, ref worldMatrix, ref m_lineBuffer, wireDivideRatio);\n            //@ BactSide\n            vctStart += Vector3.Backward * deep;\n            vctEnd += Vector3.Backward * deep;\n            GenerateLines(vctStart, vctEnd, ref vctSideStep, ref worldMatrix, ref m_lineBuffer, wireDivideRatio);\n\n\n\n            Matrix rotMat = Matrix.CreateRotationY(MathHelper.ToRadians(90f));\n            Matrix rotated = rotMat * worldMatrix;\n\n            //@ LeftSide\n            vctStart = localbox.Min;\n            vctEnd = vctStart + Vector3.Backward * deep;\n            vctSideStep = Vector3.Up * (height / wireDivideRatio);\n            GenerateLines(vctStart, vctEnd, ref vctSideStep, ref worldMatrix, ref m_lineBuffer, wireDivideRatio);\n            // RightSide\n            vctStart = localbox.Min;\n            vctStart += Vector3.Right * width;\n            vctEnd = vctStart + Vector3.Backward * deep;\n            GenerateLines(vctStart, vctEnd, ref vctSideStep, ref worldMatrix, ref m_lineBuffer, wireDivideRatio);\n\n            //@ LeftSide\n            vctStart = localbox.Min;\n            vctEnd = vctStart + Vector3.Up * height;\n            vctSideStep = Vector3.Backward * (deep / wireDivideRatio);\n            GenerateLines(vctStart, vctEnd, ref vctSideStep, ref worldMatrix, ref m_lineBuffer, wireDivideRatio);\n            // RightSide\n            vctStart += Vector3.Right * width;\n            vctEnd += Vector3.Right * width;\n            GenerateLines(vctStart, vctEnd, ref vctSideStep, ref worldMatrix, ref m_lineBuffer, wireDivideRatio);\n\n\n            if (wireDivideRatio > 1)\n            {\n                //@ TopSide\n                vctStart = localbox.Min;\n                vctEnd = vctStart + Vector3.Right * width;\n                vctSideStep = Vector3.Backward * (deep / wireDivideRatio);\n                GenerateLines(vctStart, vctEnd, ref vctSideStep, ref worldMatrix, ref m_lineBuffer, wireDivideRatio);\n                // BottomSide\n                vctStart += Vector3.Up * height;\n                vctEnd += Vector3.Up * height;\n                GenerateLines(vctStart, vctEnd, ref vctSideStep, ref worldMatrix, ref m_lineBuffer, wireDivideRatio);\n\n                //@ TopSide\n                vctStart = localbox.Min;\n                vctEnd = vctStart + Vector3.Backward * deep;\n                vctSideStep = Vector3.Right * (width / wireDivideRatio);\n                GenerateLines(vctStart, vctEnd, ref vctSideStep, ref worldMatrix, ref m_lineBuffer, wireDivideRatio);\n                // BottomSide\n                vctStart += Vector3.Up * height;\n                vctEnd += Vector3.Up * height;\n                GenerateLines(vctStart, vctEnd, ref vctSideStep, ref worldMatrix, ref m_lineBuffer, wireDivideRatio);\n            }\n\n\n            Vector3 size = new Vector3(localbox.Max.X - localbox.Min.X, localbox.Max.Y - localbox.Min.Y, localbox.Max.Z - localbox.Min.Z);\n            float thickness = MathHelper.Max(1, MathHelper.Min(MathHelper.Min(size.X, size.Y), size.Z));\n            thickness *= fThickRatio;\n            //billboard\n            foreach (MyLine line in m_lineBuffer)\n            {\n\n                //@ 16 - lifespan for 1 update in 60FPS\n                MyTransparentGeometry.AddLineBillboard(lineMaterial.Value, vctColor, line.From, line.Direction, line.Length, thickness);\n                \n            }\n        }\n\n\n\n        /// <summary>\n        /// DrawTransparentSphere\n        /// </summary>\n        /// <param name=\"vctPos\"></param>\n        /// <param name=\"radius\"></param>\n        /// <param name=\"vctColor\"></param>\n        /// <param name=\"bWireFramed\"></param>\n        /// <param name=\"wireDivideRatio\"></param>\n        public static void DrawTransparentSphere(ref Matrix worldMatrix, float radius, ref Vector4 vctColor, bool bWireFramed, int wireDivideRatio, MyTransparentMaterialEnum? faceMaterial = null, MyTransparentMaterialEnum? lineMaterial = null)\n        {\n            if (!lineMaterial.HasValue)\n            {\n                lineMaterial = MyTransparentMaterialEnum.ProjectileTrailLine;\n            }\n\n            m_verticesBuffer.Clear();\n            MyMeshHelper.GenerateSphere(ref worldMatrix, radius, wireDivideRatio, m_verticesBuffer);\n            Vector3 vctZero = Vector3.Zero;\n\n            float thickness = radius * 0.01f;\n            int i = 0;\n            for (i = 0; i < m_verticesBuffer.Count; i += 4)\n            {\n                MyQuad quad;\n                quad.Point0 = m_verticesBuffer[i + 1];\n                quad.Point1 = m_verticesBuffer[i + 3];\n                quad.Point2 = m_verticesBuffer[i + 2];\n                quad.Point3 = m_verticesBuffer[i];\n\n                MyTransparentGeometry.AddQuad(faceMaterial ?? MyTransparentMaterialEnum.ContainerBorder, ref quad, ref vctColor, ref vctZero);\n                if (bWireFramed)\n                {\n\n                    //@ 20 - lifespan for 1 update in 60FPPS\n                    Vector3 start = quad.Point0;\n                    Vector3 dir = quad.Point1 - start;\n                    float len = dir.Length();\n                    if (len > 0.1f)\n                    {\n                        dir = MyMwcUtils.Normalize(dir);\n\n                        MyTransparentGeometry.AddLineBillboard(lineMaterial.Value, vctColor, start, dir,len,thickness);\n                    }\n\n                    start = quad.Point1;\n                    dir = quad.Point2 - start;\n                    len = dir.Length();\n                    if (len > 0.1f)\n                    {\n                        dir = MyMwcUtils.Normalize(dir);\n\n                        MyTransparentGeometry.AddLineBillboard(lineMaterial.Value, vctColor, start, dir, len, thickness);\n                    }\n\n                    /*start = quad.Point2;\n                    dir = quad.Point3 - start;\n                    len = dir.Length();\n                    if (len > 0.1f)\n                    {\n                        dir = MyMwcUtils.Normalize(dir);\n                        newParticle3.StartLineParticle(lineMaterial.Value, false, 20, start, Vector3.Zero, vctColor, vctColor, dir, thickness, len, len, false, MyParticlesConstants.SOFT_PARTICLE_DISTANCE_SCALE_FOR_HARD_PARTICLES);\n                    }\n\n                    start = quad.Point3;\n                    dir = quad.Point1 - start;\n                    len = dir.Length();\n                    if (len > 0.1f)\n                    {\n                        dir = MyMwcUtils.Normalize(dir);\n                        newParticle4.StartLineParticle(lineMaterial.Value, false, 20, start, Vector3.Zero, vctColor, vctColor, dir, thickness, len, len, false, MyParticlesConstants.SOFT_PARTICLE_DISTANCE_SCALE_FOR_HARD_PARTICLES);\n                    }*/\n                }\n            }\n        }\n\n        public static void DrawTransparentCone(ref Matrix worldMatrix, float coneLength, float radiusBackSide, ref Vector4 vctColor, bool bWireFramed, int wireDivideRatio, float thickness, MyTransparentMaterialEnum? lineMaterial = null) \n        {            \n            Vector3 vertex;            \n            Vector3 start = Vector3.Transform(Vector3.Zero, worldMatrix);\n\n            float angleStep = 360.0f / (float)wireDivideRatio;\n            float alpha = 0;\n\n            for (int i = 0; i <= wireDivideRatio; i++) \n            {   \n                alpha = (float)i * angleStep;\n\n                vertex.X = (float)(radiusBackSide * Math.Cos(MathHelper.ToRadians(alpha)));\n                vertex.Y = (float)(radiusBackSide * Math.Sin(MathHelper.ToRadians(alpha)));\n                vertex.Z = coneLength;\n                vertex = Vector3.Transform(vertex, worldMatrix);\n\n                DrawLine(start, vertex, lineMaterial ?? MyTransparentMaterialEnum.ProjectileTrailLine, ref vctColor, thickness);\n            }            \n        }\n\n        public static void DrawTransparentCuboid(ref Matrix worldMatrix, MyCuboid cuboid, ref Vector4 vctColor, bool bWireFramed, float thickness, MyTransparentMaterialEnum? lineMaterial = null)\n        {\n            foreach (MyLine line in cuboid.UniqueLines)\n            {\n                Vector3 from = Vector3.Transform(line.From, worldMatrix);\n                Vector3 to = Vector3.Transform(line.To, worldMatrix);\n                DrawLine(from, to, lineMaterial ?? MyTransparentMaterialEnum.ProjectileTrailLine, ref vctColor, thickness);\n            }\n        }\n\n        public static void DrawLine(Vector3 start, Vector3 end, MyTransparentMaterialEnum? material, ref Vector4 color, float thickness)\n        {\n            Vector3 dir = end - start;\n            float len = dir.Length();\n            if (len > 0.1f)\n            {\n                dir = MyMwcUtils.Normalize(dir);\n\n                MyTransparentGeometry.AddLineBillboard(material ?? MyTransparentMaterialEnum.ProjectileTrailLine, color, start, dir, len, thickness);\n            }        \n        }\n\n        public static void DrawTransparentCylinder(ref Matrix worldMatrix, float radius1, float radius2, float length, ref Vector4 vctColor, bool bWireFramed, int wireDivideRatio, float thickness, MyTransparentMaterialEnum? lineMaterial = null)\n        {\n            Vector3 vertexEnd = Vector3.Zero;\n            Vector3 vertexStart = Vector3.Zero;\n\n            Vector3 previousEnd = Vector3.Zero;\n            Vector3 previousStart = Vector3.Zero;\n\n            float angleStep = 360.0f / (float)wireDivideRatio;\n            float alpha = 0;\n\n            for (int i = 0; i <= wireDivideRatio; i++)\n            {\n                alpha = (float)i * angleStep;\n\n                vertexEnd.X = (float)(radius1 * Math.Cos(MathHelper.ToRadians(alpha)));\n                vertexEnd.Y = length/2;\n                vertexEnd.Z = (float)(radius1 * Math.Sin(MathHelper.ToRadians(alpha)));\n\n                vertexStart.X = (float)(radius2 * Math.Cos(MathHelper.ToRadians(alpha)));\n                vertexStart.Y = -length / 2;\n                vertexStart.Z = (float)(radius2 * Math.Sin(MathHelper.ToRadians(alpha)));\n\n                vertexEnd = Vector3.Transform(vertexEnd, worldMatrix);\n                vertexStart = Vector3.Transform(vertexStart, worldMatrix);\n\n                DrawLine(vertexStart, vertexEnd, lineMaterial ?? MyTransparentMaterialEnum.ProjectileTrailLine, ref vctColor, thickness);\n\n                if (i > 0)\n                {\n                    DrawLine(previousStart, vertexStart, lineMaterial ?? MyTransparentMaterialEnum.ProjectileTrailLine, ref vctColor, thickness);\n                    DrawLine(previousEnd, vertexEnd, lineMaterial ?? MyTransparentMaterialEnum.ProjectileTrailLine, ref vctColor, thickness);\n                }\n\n                previousStart = vertexStart;\n                previousEnd = vertexEnd;\n            }\n        }\n\n        public static void DrawTransparentPyramid(ref Vector3 start, ref MyQuad backQuad, ref Vector4 vctColor, int divideRatio, float thickness, MyTransparentMaterialEnum? lineMaterial = null) \n        {\n            Vector3 vctZero = Vector3.Zero;            \n            m_lineBuffer.Clear();\n            GenerateLines(start, backQuad.Point0, backQuad.Point1, ref m_lineBuffer, divideRatio);\n            GenerateLines(start, backQuad.Point1, backQuad.Point2, ref m_lineBuffer, divideRatio);\n            GenerateLines(start, backQuad.Point2, backQuad.Point3, ref m_lineBuffer, divideRatio);\n            GenerateLines(start, backQuad.Point3, backQuad.Point0, ref m_lineBuffer, divideRatio);\n\n            foreach (MyLine line in m_lineBuffer) \n            {\n                Vector3 dir = line.To - line.From;\n                float len = dir.Length();\n                if (len > 0.1f)\n                {\n                    dir = MyMwcUtils.Normalize(dir);\n\n                    MyTransparentGeometry.AddLineBillboard(lineMaterial ?? MyTransparentMaterialEnum.ProjectileTrailLine, vctColor, line.From, dir, len, thickness);\n                }\n            }\n        }\n\n        private static void GenerateLines(Vector3 start, Vector3 end1, Vector3 end2, ref List<MyLine> lineBuffer, int divideRatio) \n        {\n            Vector3 dirStep = (end2 - end1) / (float)divideRatio;\n            for (int i = 0; i < divideRatio; i++)\n            {\n                MyLine line = new MyLine(start, end1 + (float)i * dirStep, false);\n                lineBuffer.Add(line);\n            }\n        }\n        public static MyModel ModelCone\n        {\n            get { return m_modelCone; }\n        }\n        public static MyModel ModelHemisphereLowRes\n        {\n            get { return m_modelHemisphereLowRes; }\n        }\n        public static MyModel ModelSphere\n        {\n            get { return m_modelSphere; }\n        }\n        public static MyModel LightSphere\n        {\n            get { return m_modelLightSphere; }\n        }\n        public static MyModel ModelBoxLowRes\n        {\n            get { return m_modelBoxLowRes; }\n        }\n        public static MyModel ModelBoxHiRes\n        {\n            get { return m_modelBoxHiRes; }\n        }\n        public static MyModel Capsule\n        {\n            get { return m_modelCapsule; }\n        }\n\n\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Utils/MySmallShipArmorTypeConstants.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWarsMath;\n\nnamespace MinerWars.AppCode.Game.Utils\n{\n    public struct MySmallShipArmorTypeProperties\n    {\n        public float Resistance;\n        public bool SolarWindImmunity;\n\n        public Vector3 DiffuseColor;\n    }\n\n    static class MySmallShipArmorTypeConstants\n    {\n        static Dictionary<int, MySmallShipArmorTypeProperties> ArmorProperties = new Dictionary<int, MySmallShipArmorTypeProperties>();\n\n        static MySmallShipArmorTypeConstants()\n        {\n            // Basic\n            ArmorProperties.Add((int)MyMwcObjectBuilder_SmallShip_Armor_TypesEnum.Basic, new MySmallShipArmorTypeProperties\n            {\n                Resistance = 0.3f,\n                DiffuseColor = new Vector3(0, 1, 0)\n            });\n\n            // Advanced\n            ArmorProperties.Add((int)MyMwcObjectBuilder_SmallShip_Armor_TypesEnum.Advanced, new MySmallShipArmorTypeProperties\n            {\n                Resistance = 0.6f,\n                DiffuseColor = new Vector3(0, 0, 1)\n            });\n\n            // High_Endurance\n            ArmorProperties.Add((int)MyMwcObjectBuilder_SmallShip_Armor_TypesEnum.High_Endurance, new MySmallShipArmorTypeProperties\n            {\n                Resistance = 1.0f,\n                DiffuseColor = new Vector3(1, 0, 0)\n            });\n\n            // Solar_Wind\n            ArmorProperties.Add((int)MyMwcObjectBuilder_SmallShip_Armor_TypesEnum.Solar_Wind, new MySmallShipArmorTypeProperties\n            {\n                Resistance = 0.0f,\n                SolarWindImmunity = true,\n                DiffuseColor = new Vector3(1, 0, 0)\n            });\n        }\n\n        public static MySmallShipArmorTypeProperties GetProperties(MyMwcObjectBuilder_SmallShip_Armor_TypesEnum armorType)\n        {\n            return ArmorProperties[(int)armorType];\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Utils/MySmallShipEngineTypeConstants.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Audio;\n\nnamespace MinerWars.AppCode.Game.Utils\n{\n    class MySmallShipEngineTypeProperties\n    {\n        public float Force;\n        public float FuelConsumption;\n        public float MaxSpeed;\n        public float AfterburnerSpeedMultiplier;\n        public float AfterburnerConsumptionMultiplier;\n        public MyMwcObjectBuilder_Ore_TypesEnum? FuelType;\n        public Vector4 ThrustsColor;\n        public MySoundCuesEnum IdleCue2d;\n        public MySoundCuesEnum IdleCue3d;\n        public MySoundCuesEnum HighCue2d;\n        public MySoundCuesEnum HighCue3d;\n        public MySoundCuesEnum OnCue;        \n        public MySoundCuesEnum OffCue;\n        public MySoundCuesEnum Thrust2d;\n        public MySoundCuesEnum Thrust3d;\n    }\n\n    static class MySmallShipEngineTypeConstants\n    {\n        public static MySmallShipEngineTypeProperties ShipWithoutEngineProperties;\n\n        static Dictionary<int, MySmallShipEngineTypeProperties> EngineProperties = new Dictionary<int, MySmallShipEngineTypeProperties>();\n\n        static MySmallShipEngineTypeConstants()\n        {\n            Vector4 chemicalThrustsColor = new Vector4(0.44f, 0.96f, 0, 1.0f);\n            Vector4 nuclearThrustsColor = new Vector4(0, 0.44f, 0.96f, 1.0f);\n            Vector4 electricThrustsColor = new Vector4(0.75f, 0.75f, 0.75f, 1.0f);\n            Vector4 withoutEngineThrustsColor = new Vector4(0.96f, 0.96f, 0f, 1.0f);\n\n            ShipWithoutEngineProperties = new MySmallShipEngineTypeProperties\n            {\n                Force = 100,\n                FuelConsumption = 0,\n                MaxSpeed = 50,\n                AfterburnerSpeedMultiplier = 1.0f,\n                AfterburnerConsumptionMultiplier = 2.0f,\n                FuelType = null,\n                ThrustsColor = withoutEngineThrustsColor,\n                IdleCue2d = MySoundCuesEnum.VehShipaEngineIdle2d,\n                IdleCue3d = MySoundCuesEnum.VehShipaEngineIdle3d,\n                HighCue2d = MySoundCuesEnum.VehShipaEngineHigh2d,\n                HighCue3d = MySoundCuesEnum.VehShipaEngineHigh3d,\n                OnCue = MySoundCuesEnum.VehShipaEngineOn,                                \n                OffCue = MySoundCuesEnum.VehShipaEngineOff,\n                Thrust2d = MySoundCuesEnum.VehShipaThrust2d,\n                Thrust3d = MySoundCuesEnum.VehShipaThrust3d\n            };\n\n            // modifies all engine fuel consumption\n            float fuelConsumptionModifier = 0.75f;\n\n            // modifies all engines force\n            float forceModifier = 3;\n            \n            // Chemical Engines\n            EngineProperties.Add((int)MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.Chemical_1, new MySmallShipEngineTypeProperties\n            {\n                Force = 900 * forceModifier,\n                FuelConsumption = 0.1f * fuelConsumptionModifier,\n                MaxSpeed = 100,\n                AfterburnerSpeedMultiplier = 1.4f,\n                AfterburnerConsumptionMultiplier = 2.0f,\n                FuelType = MyMwcObjectBuilder_Ore_TypesEnum.HELIUM,\n                ThrustsColor = chemicalThrustsColor,\n                IdleCue2d = MySoundCuesEnum.VehCH1EngineIdle2d,\n                IdleCue3d = MySoundCuesEnum.VehCH1EngineIdle3d,\n                HighCue2d = MySoundCuesEnum.VehCH1EngineHigh2d,\n                HighCue3d = MySoundCuesEnum.VehCH1EngineHigh3d,\n                OnCue = MySoundCuesEnum.VehCH1EngineOn,\n                OffCue = MySoundCuesEnum.VehCH1EngineOff,\n                Thrust2d = MySoundCuesEnum.VehShipaThrust2d,\n                Thrust3d = MySoundCuesEnum.VehShipaThrust3d\n            });\n            EngineProperties.Add((int)MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.Chemical_2, new MySmallShipEngineTypeProperties\n            {\n                Force = 1000 * forceModifier,\n                FuelConsumption = 0.15f * fuelConsumptionModifier,\n                MaxSpeed = 105,\n                AfterburnerSpeedMultiplier = 1.5f,\n                AfterburnerConsumptionMultiplier = 2.0f,\n                FuelType = MyMwcObjectBuilder_Ore_TypesEnum.HELIUM,\n                ThrustsColor = chemicalThrustsColor,\n                IdleCue2d = MySoundCuesEnum.VehCH1EngineIdle2d,\n                IdleCue3d = MySoundCuesEnum.VehCH1EngineIdle3d,\n                HighCue2d = MySoundCuesEnum.VehCH1EngineHigh2d,\n                HighCue3d = MySoundCuesEnum.VehCH1EngineHigh3d,\n                OnCue = MySoundCuesEnum.VehCH1EngineOn,\n                OffCue = MySoundCuesEnum.VehCH1EngineOff,\n                Thrust2d = MySoundCuesEnum.VehShipaThrust2d,\n                Thrust3d = MySoundCuesEnum.VehShipaThrust3d\n            });\n            EngineProperties.Add((int)MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.Chemical_3, new MySmallShipEngineTypeProperties\n            {\n                Force = 1100 * forceModifier,\n                FuelConsumption = 0.2f * fuelConsumptionModifier,\n                MaxSpeed = 110,\n                AfterburnerSpeedMultiplier = 1.6f,\n                AfterburnerConsumptionMultiplier = 2.0f,\n                FuelType = MyMwcObjectBuilder_Ore_TypesEnum.HELIUM,\n                ThrustsColor = chemicalThrustsColor,\n                IdleCue2d = MySoundCuesEnum.VehCH1EngineIdle2d,\n                IdleCue3d = MySoundCuesEnum.VehCH1EngineIdle3d,\n                HighCue2d = MySoundCuesEnum.VehCH1EngineHigh2d,\n                HighCue3d = MySoundCuesEnum.VehCH1EngineHigh3d,\n                OnCue = MySoundCuesEnum.VehCH1EngineOn,\n                OffCue = MySoundCuesEnum.VehCH1EngineOff,\n                Thrust2d = MySoundCuesEnum.VehShipaThrust2d,\n                Thrust3d = MySoundCuesEnum.VehShipaThrust3d\n            });\n            EngineProperties.Add((int)MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.Chemical_4, new MySmallShipEngineTypeProperties\n            {\n                Force = 1200 * forceModifier,\n                FuelConsumption = 0.25f * fuelConsumptionModifier,\n                MaxSpeed = 115,\n                AfterburnerSpeedMultiplier = 1.7f,\n                AfterburnerConsumptionMultiplier = 2.0f,\n                FuelType = MyMwcObjectBuilder_Ore_TypesEnum.HELIUM,\n                ThrustsColor = chemicalThrustsColor,\n                IdleCue2d = MySoundCuesEnum.VehCH1EngineIdle2d,\n                IdleCue3d = MySoundCuesEnum.VehCH1EngineIdle3d,\n                HighCue2d = MySoundCuesEnum.VehCH1EngineHigh2d,\n                HighCue3d = MySoundCuesEnum.VehCH1EngineHigh3d,\n                OnCue = MySoundCuesEnum.VehCH1EngineOn,\n                OffCue = MySoundCuesEnum.VehCH1EngineOff,\n                Thrust2d = MySoundCuesEnum.VehShipaThrust2d,\n                Thrust3d = MySoundCuesEnum.VehShipaThrust3d\n            });\n            EngineProperties.Add((int)MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.Chemical_5, new MySmallShipEngineTypeProperties\n            {\n                Force = 1300 * forceModifier,\n                FuelConsumption = 0.3f * fuelConsumptionModifier,\n                MaxSpeed = 120,\n                AfterburnerSpeedMultiplier = 1.8f,\n                AfterburnerConsumptionMultiplier = 2.0f,\n                FuelType = MyMwcObjectBuilder_Ore_TypesEnum.HELIUM,\n                ThrustsColor = chemicalThrustsColor,\n                IdleCue2d = MySoundCuesEnum.VehCH1EngineIdle2d,\n                IdleCue3d = MySoundCuesEnum.VehCH1EngineIdle3d,\n                HighCue2d = MySoundCuesEnum.VehCH1EngineHigh2d,\n                HighCue3d = MySoundCuesEnum.VehCH1EngineHigh3d,\n                OnCue = MySoundCuesEnum.VehCH1EngineOn,\n                OffCue = MySoundCuesEnum.VehCH1EngineOff,\n                Thrust2d = MySoundCuesEnum.VehShipaThrust2d,\n                Thrust3d = MySoundCuesEnum.VehShipaThrust3d\n            });\n\n            // Nuclear Engines\n            EngineProperties.Add((int)MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.Nuclear_1, new MySmallShipEngineTypeProperties\n            {\n                Force = 1100 * forceModifier,\n                FuelConsumption = 0.1f * fuelConsumptionModifier,\n                MaxSpeed = 140,\n                AfterburnerSpeedMultiplier = 2.1f,\n                AfterburnerConsumptionMultiplier = 2.0f,\n                FuelType = MyMwcObjectBuilder_Ore_TypesEnum.URANITE,\n                ThrustsColor = nuclearThrustsColor,\n                IdleCue2d = MySoundCuesEnum.VehNU1EngineIdle2d,\n                IdleCue3d = MySoundCuesEnum.VehNU1EngineIdle3d,\n                HighCue2d = MySoundCuesEnum.VehNU1EngineHigh2d,\n                HighCue3d = MySoundCuesEnum.VehNU1EngineHigh3d,\n                OnCue = MySoundCuesEnum.VehNU1EngineOn,\n                OffCue = MySoundCuesEnum.VehNU1EngineOff,\n                Thrust2d = MySoundCuesEnum.VehShipaThrust2d,\n                Thrust3d = MySoundCuesEnum.VehShipaThrust3d\n            });\n            EngineProperties.Add((int)MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.Nuclear_2, new MySmallShipEngineTypeProperties\n            {\n                Force = 1200 * forceModifier,\n                FuelConsumption = 0.2f * fuelConsumptionModifier,\n                MaxSpeed = 145,\n                AfterburnerSpeedMultiplier = 2.2f,\n                AfterburnerConsumptionMultiplier = 2.0f,\n                FuelType = MyMwcObjectBuilder_Ore_TypesEnum.URANITE,\n                ThrustsColor = nuclearThrustsColor,\n                IdleCue2d = MySoundCuesEnum.VehNU1EngineIdle2d,\n                IdleCue3d = MySoundCuesEnum.VehNU1EngineIdle3d,\n                HighCue2d = MySoundCuesEnum.VehNU1EngineHigh2d,\n                HighCue3d = MySoundCuesEnum.VehNU1EngineHigh3d,\n                OnCue = MySoundCuesEnum.VehNU1EngineOn,\n                OffCue = MySoundCuesEnum.VehNU1EngineOff,\n                Thrust2d = MySoundCuesEnum.VehShipaThrust2d,\n                Thrust3d = MySoundCuesEnum.VehShipaThrust3d\n            });\n            EngineProperties.Add((int)MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.Nuclear_3, new MySmallShipEngineTypeProperties\n            {\n                Force = 1300 * forceModifier,\n                FuelConsumption = 0.3f * fuelConsumptionModifier,\n                MaxSpeed = 150,\n                AfterburnerSpeedMultiplier = 2.3f,\n                AfterburnerConsumptionMultiplier = 2.0f,\n                FuelType = MyMwcObjectBuilder_Ore_TypesEnum.URANITE,\n                ThrustsColor = nuclearThrustsColor,\n                IdleCue2d = MySoundCuesEnum.VehNU1EngineIdle2d,\n                IdleCue3d = MySoundCuesEnum.VehNU1EngineIdle3d,\n                HighCue2d = MySoundCuesEnum.VehNU1EngineHigh2d,\n                HighCue3d = MySoundCuesEnum.VehNU1EngineHigh3d,\n                OnCue = MySoundCuesEnum.VehNU1EngineOn,\n                OffCue = MySoundCuesEnum.VehNU1EngineOff,\n                Thrust2d = MySoundCuesEnum.VehShipaThrust2d,\n                Thrust3d = MySoundCuesEnum.VehShipaThrust3d\n            });\n            EngineProperties.Add((int)MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.Nuclear_4, new MySmallShipEngineTypeProperties\n            {\n                Force = 1400 * forceModifier,\n                FuelConsumption = 0.35f * fuelConsumptionModifier,\n                MaxSpeed = 155,\n                AfterburnerSpeedMultiplier = 2.4f,\n                AfterburnerConsumptionMultiplier = 2.0f,\n                FuelType = MyMwcObjectBuilder_Ore_TypesEnum.URANITE,\n                ThrustsColor = nuclearThrustsColor,\n                IdleCue2d = MySoundCuesEnum.VehNU1EngineIdle2d,\n                IdleCue3d = MySoundCuesEnum.VehNU1EngineIdle3d,\n                HighCue2d = MySoundCuesEnum.VehNU1EngineHigh2d,\n                HighCue3d = MySoundCuesEnum.VehNU1EngineHigh3d,\n                OnCue = MySoundCuesEnum.VehNU1EngineOn,\n                OffCue = MySoundCuesEnum.VehNU1EngineOff,\n                Thrust2d = MySoundCuesEnum.VehShipaThrust2d,\n                Thrust3d = MySoundCuesEnum.VehShipaThrust3d\n            });\n            EngineProperties.Add((int)MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.Nuclear_5, new MySmallShipEngineTypeProperties\n            {\n                Force = 1500 * forceModifier,\n                FuelConsumption = 0.4f * fuelConsumptionModifier,\n                MaxSpeed = 160,\n                AfterburnerSpeedMultiplier = 2.5f,\n                AfterburnerConsumptionMultiplier = 2.0f,\n                FuelType = MyMwcObjectBuilder_Ore_TypesEnum.URANITE,\n                ThrustsColor = nuclearThrustsColor,\n                IdleCue2d = MySoundCuesEnum.VehNU1EngineIdle2d,\n                IdleCue3d = MySoundCuesEnum.VehNU1EngineIdle3d,\n                HighCue2d = MySoundCuesEnum.VehNU1EngineHigh2d,\n                HighCue3d = MySoundCuesEnum.VehNU1EngineHigh3d,\n                OnCue = MySoundCuesEnum.VehNU1EngineOn,\n                OffCue = MySoundCuesEnum.VehNU1EngineOff,\n                Thrust2d = MySoundCuesEnum.VehShipaThrust2d,\n                Thrust3d = MySoundCuesEnum.VehShipaThrust3d\n            });\n\n            // Electricity Engines\n            EngineProperties.Add((int)MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.PowerCells_1, new MySmallShipEngineTypeProperties\n            {\n                Force = 1000 * forceModifier,\n                FuelConsumption = 0.15f * fuelConsumptionModifier,\n                MaxSpeed = 130,\n                AfterburnerSpeedMultiplier = 1.7f,\n                AfterburnerConsumptionMultiplier = 2.0f,\n                FuelType = MyMwcObjectBuilder_Ore_TypesEnum.ICE,\n                ThrustsColor = electricThrustsColor,\n                IdleCue2d = MySoundCuesEnum.VehEL1EngineIdle2d,\n                IdleCue3d = MySoundCuesEnum.VehEL1EngineIdle3d,\n                HighCue2d = MySoundCuesEnum.VehEL1EngineHigh2d,\n                HighCue3d = MySoundCuesEnum.VehEL1EngineHigh3d,\n                OnCue = MySoundCuesEnum.VehEL1EngineOn,\n                OffCue = MySoundCuesEnum.VehEL1EngineOff,\n                Thrust2d = MySoundCuesEnum.VehShipaThrust2d,\n                Thrust3d = MySoundCuesEnum.VehShipaThrust3d\n            });\n            EngineProperties.Add((int)MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.PowerCells_2, new MySmallShipEngineTypeProperties\n            {\n                Force = 1075 * forceModifier,\n                FuelConsumption = 0.25f * fuelConsumptionModifier,\n                MaxSpeed = 135,\n                AfterburnerSpeedMultiplier = 1.8f,\n                AfterburnerConsumptionMultiplier = 2.0f,\n                FuelType = MyMwcObjectBuilder_Ore_TypesEnum.ICE,\n                ThrustsColor = electricThrustsColor,\n                IdleCue2d = MySoundCuesEnum.VehEL1EngineIdle2d,\n                IdleCue3d = MySoundCuesEnum.VehEL1EngineIdle3d,\n                HighCue2d = MySoundCuesEnum.VehEL1EngineHigh2d,\n                HighCue3d = MySoundCuesEnum.VehEL1EngineHigh3d,\n                OnCue = MySoundCuesEnum.VehEL1EngineOn,\n                OffCue = MySoundCuesEnum.VehEL1EngineOff,\n                Thrust2d = MySoundCuesEnum.VehShipaThrust2d,\n                Thrust3d = MySoundCuesEnum.VehShipaThrust3d\n            });\n            EngineProperties.Add((int)MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.PowerCells_3, new MySmallShipEngineTypeProperties\n            {\n                Force = 1150 * forceModifier,\n                FuelConsumption = 0.35f * fuelConsumptionModifier,\n                MaxSpeed = 140,\n                AfterburnerSpeedMultiplier = 1.9f,\n                AfterburnerConsumptionMultiplier = 2.0f,\n                FuelType = MyMwcObjectBuilder_Ore_TypesEnum.ICE,\n                ThrustsColor = electricThrustsColor,\n                IdleCue2d = MySoundCuesEnum.VehEL1EngineIdle2d,\n                IdleCue3d = MySoundCuesEnum.VehEL1EngineIdle3d,\n                HighCue2d = MySoundCuesEnum.VehEL1EngineHigh2d,\n                HighCue3d = MySoundCuesEnum.VehEL1EngineHigh3d,\n                OnCue = MySoundCuesEnum.VehEL1EngineOn,\n                OffCue = MySoundCuesEnum.VehEL1EngineOff,\n                Thrust2d = MySoundCuesEnum.VehShipaThrust2d,\n                Thrust3d = MySoundCuesEnum.VehShipaThrust3d\n            });\n            EngineProperties.Add((int)MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.PowerCells_4, new MySmallShipEngineTypeProperties\n            {\n                Force = 1225 * forceModifier,\n                FuelConsumption = 0.45f * fuelConsumptionModifier,\n                MaxSpeed = 145,\n                AfterburnerSpeedMultiplier = 2.0f,\n                AfterburnerConsumptionMultiplier = 2.0f,\n                FuelType = MyMwcObjectBuilder_Ore_TypesEnum.ICE,\n                ThrustsColor = electricThrustsColor,\n                IdleCue2d = MySoundCuesEnum.VehEL1EngineIdle2d,\n                IdleCue3d = MySoundCuesEnum.VehEL1EngineIdle3d,\n                HighCue2d = MySoundCuesEnum.VehEL1EngineHigh2d,\n                HighCue3d = MySoundCuesEnum.VehEL1EngineHigh3d,\n                OnCue = MySoundCuesEnum.VehEL1EngineOn,\n                OffCue = MySoundCuesEnum.VehEL1EngineOff,\n                Thrust2d = MySoundCuesEnum.VehShipaThrust2d,\n                Thrust3d = MySoundCuesEnum.VehShipaThrust3d\n            });\n            EngineProperties.Add((int)MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.PowerCells_5, new MySmallShipEngineTypeProperties\n            {\n                Force = 1300 * forceModifier,\n                FuelConsumption = 0.55f * fuelConsumptionModifier,\n                MaxSpeed = 150,\n                AfterburnerSpeedMultiplier = 2.1f,\n                AfterburnerConsumptionMultiplier = 2.0f,\n                FuelType = MyMwcObjectBuilder_Ore_TypesEnum.ICE,\n                ThrustsColor = electricThrustsColor,\n                IdleCue2d = MySoundCuesEnum.VehEL1EngineIdle2d,\n                IdleCue3d = MySoundCuesEnum.VehEL1EngineIdle3d,\n                HighCue2d = MySoundCuesEnum.VehEL1EngineHigh2d,\n                HighCue3d = MySoundCuesEnum.VehEL1EngineHigh3d,\n                OnCue = MySoundCuesEnum.VehEL1EngineOn,\n                OffCue = MySoundCuesEnum.VehEL1EngineOff,\n                Thrust2d = MySoundCuesEnum.VehShipaThrust2d,\n                Thrust3d = MySoundCuesEnum.VehShipaThrust3d\n            });\n        }\n\n        public static MySmallShipEngineTypeProperties GetProperties(MyMwcObjectBuilder_SmallShip_Engine_TypesEnum engineType)\n        {\n            return EngineProperties[(int)engineType];\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Utils/MySpectator.cs",
    "content": "﻿using System;\nusing MinerWarsMath;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing KeenSoftwareHouse.Library.Trace;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Voxels;\nusing MinerWars.AppCode.Physics.Collisions;\n\nnamespace MinerWars.AppCode.Game.Utils\n{\n    //  Player with movements like 6DOF camera\n    static class MySpectator\n    {\n        static Vector3 m_position;\n        public static Vector3 Position\n        {\n            get { return m_position; }\n            set\n            {\n                MyUtils.AssertIsValid(value);\n                m_position = value;\n            }\n        }\n\n        public static bool ReflectorOn = true;\n        public static float SpeedMode\n        {\n            get { return m_speedMode; }\n            set { m_speedMode = value; }\n        }\n\n        private static float m_speedMode = MyConstants.DEFAULT_SPECTATOR_SPEED;\n        static Matrix m_baseRotation = Matrix.Identity;\n        static bool m_rotationEnabled = true;\n\n\n        //  Direction to which player is looking. Normalized vector.\n        public static Vector3 Orientation\n        {\n            get\n            {\n                //Matrix cameraRotation = Matrix.CreateRotationX(m_angles.X) * Matrix.CreateRotationY(m_angles.Y);\n                return Vector3.Transform(Vector3.Forward, m_baseRotation);\n            }\n        }\n\n        //  Gets or sets camera's target.\n        //  You can set target as point where camera will be looking from it's current position. Angles are calculated automatically.\n        public static Vector3 Target\n        {\n            get\n            {\n                //Matrix cameraRotation = Matrix.CreateRotationX(m_angles.X) * Matrix.CreateRotationY(m_angles.Y);\n                return Position + Vector3.Transform(Vector3.Forward, m_baseRotation);\n            }\n            set\n            {\n                //Vector3 forward = MyMwcUtils.Normalize(m_initialSunWindPosition - value);\n                Vector3 forward = MyMwcUtils.Normalize(value - Position);\n                forward = forward.LengthSquared() > 0 ? forward : Vector3.Forward;\n\n                Vector3 unnormalizedRight = Vector3.Cross(forward, Vector3.Up);\n                Vector3 right = unnormalizedRight.LengthSquared() > 0 ? MyMwcUtils.Normalize(unnormalizedRight) : Vector3.Right;\n\n                Vector3 up = MyMwcUtils.Normalize(Vector3.Cross(right, forward));\n                \n                m_baseRotation = Matrix.Identity;\n                m_baseRotation.Forward = forward;\n                m_baseRotation.Right = right;\n                m_baseRotation.Up = up;\n                \n                var m = Matrix.CreateLookAt(Position, value, Vector3.Up);\n                var mi = Matrix.Invert(m);\n                /*\n                m_angles.X = -(float)Math.Asin(test.M32);\n                m_angles.Y = -(float)Math.Asin(test.M13);\n                */\n            }\n        }\n\n        //  Moves and rotates player by specified vector and angles\n        public static void MoveAndRotate(Vector3 moveIndicator, Vector2 rotationIndicator, float rollIndicator, float afterburner)\n        {\n            /*\n            if (rotationIndicator.Length() > 0)\n                System.Diagnostics.Debugger.Break();\n            if (rotationIndicator.Length() > 0)\n                System.Diagnostics.Debugger.Break();\n            if (rollIndicator > 0)\n                System.Diagnostics.Debugger.Break();\n            */\n\n            Vector3 oldPosition = Position;\n                /*\n            if (MyFakes.MWBUILDER)\n            {\n                rollIndicator = 0;\n\n                MinerWars.AppCode.Game.GUI.MyGuiInput mi = MinerWars.AppCode.Game.GUI.Core.MyGuiManager.GetInput();\n                if (mi.IsAnyCtrlKeyPressed())\n                {\n                    rotationIndicator.X = 0;\n                }\n            } */\n\n            moveIndicator *= afterburner * m_speedMode;\n\n            //  Physical movement and rotation is based on constant time, therefore is indepedent of time delta\n            //  This formulas works even if FPS is low or high, or if step size is 1/10 or 1/10000\n            float amountOfMovement = MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS * 100;\n            float amountOfRotation = 0.0025f;\n\n            if (m_rotationEnabled)\n            {\n\n                if (rollIndicator * MathHelper.ToRadians(1) != 0)\n                {\n                    Vector3 r, u;\n                    MyUtils.VectorPlaneRotation(m_baseRotation.Up, m_baseRotation.Right, out u, out r, rollIndicator * MathHelper.ToRadians(1));\n                    m_baseRotation.Right = r;\n                    m_baseRotation.Up = u;\n                }\n\n                if (rotationIndicator.X != 0)\n                {\n                    Vector3 u,f;\n                    MyUtils.VectorPlaneRotation(m_baseRotation.Up, m_baseRotation.Forward, out u, out f, rotationIndicator.X * amountOfRotation);\n                    m_baseRotation.Up = u;\n                    m_baseRotation.Forward = f;\n                }\n\n                if (rotationIndicator.Y != 0)\n                {\n                    Vector3 r, f;\n                    MyUtils.VectorPlaneRotation(m_baseRotation.Right, m_baseRotation.Forward, out r, out f, -rotationIndicator.Y * amountOfRotation);\n                   \n                    /*\n                    if (MyFakes.MWBUILDER)\n                    {\n                        Matrix rotMatrix = Matrix.CreateRotationY(-rotationIndicator.Y * amountOfRotation);\n                        r = Vector3.TransformNormal(m_baseRotation.Right, rotMatrix);\n                        f = Vector3.TransformNormal(m_baseRotation.Forward, rotMatrix);\n                        Vector3 u = Vector3.TransformNormal(m_baseRotation.Up, rotMatrix);\n                        m_baseRotation.Up = u;\n                    } */  \n\n                    m_baseRotation.Right = r;\n                    m_baseRotation.Forward = f;\n                }\n\n               // m_baseRotation = Matrix.Identity;\n            }\n\n            Vector3 moveVector = moveIndicator * amountOfMovement;\n\n            \n            //dp not allow spectator to move outside sector borders\n            //Position += Vector3.Transform(moveVector, Matrix.CreateRotationX(m_angles.X) * Matrix.CreateRotationY(m_angles.Y) * Matrix.CreateRotationZ(m_roll));\n            Position += Vector3.Transform(moveVector, m_baseRotation);\n            if (!MyFakes.DISABLE_SPECTATOR_IN_BOUNDARIES)\n            {\n                Position = Vector3.Clamp(Position, -MyMwcSectorConstants.SECTOR_SIZE_VECTOR3 / 2, MyMwcSectorConstants.SECTOR_SIZE_VECTOR3 / 2);\n            }\n           // Position = Vector3.Zero;\n                          /*\n            if (MyFakes.MWBUILDER)\n            {      \n                MyVoxelMap voxelMap = MyVoxelMaps.GetVoxelMaps()[0];\n                Position = Vector3.Clamp(Position, voxelMap.WorldAABB.Min, voxelMap.WorldAABB.Max);\n                   \n                //Let spectator levitate but dont allow him to go inside voxels\n                MyLine collLine = new MyLine(Position, new Vector3(Position.X, -10000, Position.Z));\n                MyIntersectionResultLineTriangleEx? res = MyEntities.GetIntersectionWithLine(ref collLine, null, null, true, true, true, true, true, IntersectionFlags.DIRECT_TRIANGLES);\n                if (res.HasValue)\n                {\n                    //It is ok, we are above ground\n                    if (Vector3.Distance(res.Value.IntersectionPointInWorldSpace, Position) > 20)\n                        return;\n                }    \n\n                //Snap on the ground\n                collLine = new MyLine(new Vector3(Position.X, 10000, Position.Z), new Vector3(Position.X, -10000, Position.Z));\n                res = MyEntities.GetIntersectionWithLine(ref collLine, null, null, true, true, true, true, true, IntersectionFlags.DIRECT_TRIANGLES);\n               \n               // System.Diagnostics.Debug.Assert(res.HasValue);\n                if (res.HasValue)\n                {\n                    Vector3 newPosition = res.Value.IntersectionPointInWorldSpace + new Vector3(0, 20, 0);\n                    if (Vector3.Distance(oldPosition, newPosition) < 100)\n                        Position = newPosition;\n                    else\n                        Position = oldPosition;\n                }    \n            }     */\n\n            //if (MyMinerGame.DisplayDebuggingData == true)\n            //{\n            //    MyFpsManager.AddToFrameDebugText(\"Spectator position: \" + MyUtils.GetFormatedVector3(m_initialSunWindPosition, 3));\n            //}\n        }\n\n        public static Matrix GetViewMatrix()\n        {\n            Vector3 targetPos = Position + Vector3.Transform(Vector3.Forward, m_baseRotation);\n\n            Vector3 upVector = Vector3.Transform(Vector3.Up, m_baseRotation);\n\n            return Matrix.CreateLookAt(Position, targetPos, upVector);\n        }\n\n        public static void SetViewMatrix(Matrix viewMatrix)\n        {\n            MyUtils.AssertIsValid(viewMatrix);\n            \n            Matrix inverted = Matrix.Invert(viewMatrix);\n            Position = inverted.Translation;\n            m_baseRotation = Matrix.Identity;\n            m_baseRotation.Right = inverted.Right;\n            m_baseRotation.Up = inverted.Up;\n            m_baseRotation.Forward = inverted.Forward;\n        }\n\n        public static void EnableRotation()\n        {\n            m_rotationEnabled = true;\n        }\n\n        public static void DisableRotation()\n        {\n            m_rotationEnabled = false;\n        }\n\n        /// <summary>\n        /// Reset position and orientation of spectator view matrix\n        /// </summary>\n        public static void ResetSpectatorView()\n        {\n            if (!MyFakes.MWBUILDER)\n            {\n                Position = Vector3.Zero;\n            }\n            m_baseRotation = Matrix.Identity;\n\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Utils/MySpriteListVideoPlayer.cs",
    "content": "﻿using System.Collections.Generic;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.App;\nusing SysUtils.Utils;\nusing MinerWars.AppCode.Game.Effects;\nusing MinerWars.AppCode.Game.Render;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Textures;\n\nusing SharpDX.Direct3D9;\nusing SharpDX.Toolkit.Graphics;\n\nnamespace MinerWars.AppCode.Game.Utils\n{\n    using Vector2 = MinerWarsMath.Vector2;\n    using Vector3 = MinerWarsMath.Vector3;\n    using Vector4 = MinerWarsMath.Vector4;\n    using Rectangle = MinerWarsMath.Rectangle;\n    using Matrix = MinerWarsMath.Matrix;\n    using Color = MinerWarsMath.Color;\n    using BoundingBox = MinerWarsMath.BoundingBox;\n    using BoundingSphere = MinerWarsMath.BoundingSphere;\n    using BoundingFrustum = MinerWarsMath.BoundingFrustum;\n\n    class MySpriteListVideoPlayer\n    {\n        #region Private Fields\n        private List<MyTexture2D> m_frames;\n        private string m_fileName;        // folder to play\n        Device m_graphicsDevice;\n        private int m_realFramesPerSecond;\n        private long m_initTime;//\n        private SpriteBatch m_spriteBatch;\n        int m_frameFirst;\n        int m_frameLast;\n        #endregion\n\n        public MySpriteListVideoPlayer(string fileName, Device graphicsDevice, int fps, int frameFirst, int frameLast)\n        {\n            m_fileName = fileName;\n            m_graphicsDevice = graphicsDevice;\n            m_frames = new List<MyTexture2D>();\n            m_initTime = MyMinerGame.TotalTimeInMilliseconds;\n            m_realFramesPerSecond = fps;\n            m_frameFirst = frameFirst;\n            m_frameLast = frameLast;\n        }\n            \n        //make list of textures here\n        public void LoadContent()\n        {\n            MyMwcLog.WriteLine(\"MySpriteListVideoPlayer.LoadContent - START\");\n            MyMwcLog.IncreaseIndent();\n\n            m_spriteBatch = new SpriteBatch(MyMinerGame.Static.GraphicsDevice, \"SpriteListVideoPlayer\");\n\n            //  We must iterate over defined number of frames. We can't relly on reading files from a folder because in final\n            //  build that folder will contain \"hash\" files and it may contain some other random files too, so then iteration won't work correctly.\n            for (int frame = m_frameFirst; frame <= m_frameLast; frame++)\n            {\n                string toput = \"Videos\\\\\" + m_fileName + \"\\\\\" + MyStringUtils.AlignIntToRight(frame, 4, '0');\n                MyMwcLog.WriteLine(\"Loading file: \" + toput, SysUtils.LoggingOptions.LOADING_SPRITE_VIDEO);\n                MyTexture2D tx = MyTextureManager.GetTexture<MyTexture2D>(toput);\n                if (tx != null)\n                    m_frames.Add(tx);\n            }\n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MySpriteListVideoPlayer.LoadContent - END\");\n        }\n\n        public void UnloadContent()\n        {\n            m_spriteBatch.Dispose();\n        }\n\n        //\n        public MyTexture2D GetCurrentFrame()\n        {\n            long deltaTime = MyMinerGame.TotalTimeInMilliseconds - m_initTime;//in ms\n            long sequenceTime = (m_frames.Count) / m_realFramesPerSecond;// in seconds\n            long realPosOfFrame = deltaTime % (sequenceTime * 1000); // gets [0 - sequenceTime * 1000 ] ( 0 - 1 of file scale) \n            long indexOfFrame = (m_frames.Count * realPosOfFrame) / (sequenceTime*1000);\n            return m_frames[(int)indexOfFrame];\n        }\n\n        //\n        public void DrawInterferencedBackGround(MyTexture2D overlappingTexture, Vector2 normalizedCoord, Vector2 normalizedSize, Vector2 overlappingTextureTiling, Color color, MyGuiDrawAlignEnum drawAlign)\n        {\n            MyEffectSpriteBatchShader spriteEffect = MyRender.GetEffect(MyEffects.VideoSpriteEffects) as MyEffectSpriteBatchShader ;\n            \n            spriteEffect.SetDiffuseTexture2(overlappingTexture);\n            spriteEffect.SetTexture2Tiling(overlappingTextureTiling);\n            \n            m_spriteBatch.Begin(0, BlendState.AlphaBlend, null, null, null, spriteEffect.GetEffect());\n\n            Vector2 screenCoord = MyGuiManager.GetScreenCoordinateFromNormalizedCoordinate(normalizedCoord);\n            Vector2 screenSize = MyGuiManager.GetScreenSizeFromNormalizedSize(normalizedSize);\n            screenCoord = MyGuiManager.GetAlignedCoordinate(screenCoord, screenSize, drawAlign);\n\n\n            m_spriteBatch.Draw(GetCurrentFrame(), new SharpDX.DrawingRectangle((int)screenCoord.X, (int)screenCoord.Y, (int)screenSize.X, (int)screenSize.Y), SharpDX.Toolkit.SharpDXHelper.ToSharpDX(color));\n\n            m_spriteBatch.End();\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Utils/MyStateObjects.cs",
    "content": "﻿using System.Diagnostics;\nusing SharpDX;\nusing SharpDX.Direct3D9;\nusing SharpDX.Toolkit.Graphics;\n\nnamespace MinerWars.AppCode.Game.Utils\n{\n    static class MyStateObjects\n    {\n        public const int STENCIL_MASK_REFERENCE_STENCIL = 1;\n\n        public static readonly BlendState SunGlareBlendState = new BlendState()\n        {\n            ColorWriteChannels = 0\n        };\n\n        \n        public readonly static RasterizerState WireframeRasterizerState = new RasterizerState()\n        {\n            FillMode = FillMode.Wireframe,\n            CullMode = Cull.Counterclockwise\n        };\n           \n        public static readonly DepthStencilState DistantImpostorsDepthStencilState = new DepthStencilState()\n        {\n            DepthBufferEnable = true,\n            DepthBufferFunction = Compare.Always,       //  Depth buffer testing is OFF because we don't wanna z-fighting\n            DepthBufferWriteEnable = true                       //  Depth buffer writing is ON because we want to have depth-values in depth-buffer so sun-glare occlusion test will work\n        };\n           \n        public static readonly DepthStencilState DecalsDepthStencilState = new DepthStencilState()\n        {\n            DepthBufferFunction = Compare.Equal,\n            DepthBufferWriteEnable = false\n        };\n\n        //  Default GUI blend state \n        public static readonly BlendState GuiDefault_BlendState = BlendState.NonPremultiplied;//BlendState.AlphaBlend;\n\n        //  Default GUI depth-stencil\n        public static readonly DepthStencilState GuiDefault_DepthStencilState = DepthStencilState.None;\n\n        //  Special blend state for GUI stencil mask rendering\n        public static readonly BlendState StencilMask_Draw_BlendState = new BlendState()\n        {\n            ColorSourceBlend = Blend.Zero,\n            AlphaSourceBlend = Blend.Zero,\n            ColorDestinationBlend = Blend.One,\n            AlphaDestinationBlend = Blend.One\n        };\n            \n        public static readonly DepthStencilState SetncilMask_DrawHud_DepthStencilState = new DepthStencilState()\n        {\n            //  Depth buffer is not required when working with stencil only\n            DepthBufferEnable = false,\n            DepthBufferWriteEnable = false,\n\n            //  Every succesfully rendered pixel (not discarded or clipped) will also write 1 into stencil buffer\n            ReferenceStencil = STENCIL_MASK_REFERENCE_STENCIL,\n            StencilEnable = true,\n            StencilFunction = Compare.Always,\n            StencilPass = StencilOperation.Replace            \n        };\n                \n        //  Special depth-stencil for GUI stencil mask rendering\n        public static readonly DepthStencilState StencilMask_Draw_DepthStencilState = new DepthStencilState()\n        {\n            //  Depth buffer is not required when working with stencil only\n            DepthBufferEnable = false,\n            DepthBufferWriteEnable = false,\n\n            //  Every succesfully rendered pixel (not discarded or clipped) will also write 1 into stencil buffer\n            //ReferenceStencil = STENCIL_MASK_REFERENCE_STENCIL,\n            StencilEnable = true,\n            StencilFunction = Compare.Always,\n            //StencilPass = StencilOperation.Replace\n            StencilPass = StencilOperation.Increment\n        };\n\n        private static DepthStencilState CreateTestDepthStencilState(int level)\n        {\n            return new DepthStencilState()\n            {\n                //  Depth buffer is not required when working with stencil only\n                DepthBufferEnable = false,\n                DepthBufferWriteEnable = false,\n\n                //  Write color only where stencil enables it (where stencil value equals level)\n                //  But disable writing to stencil buffer\n                StencilEnable = true,\n                StencilFunction = Compare.Equal,\n                ReferenceStencil = level,\n                StencilPass = StencilOperation.Keep,\n            };\n        }\n\n        private const int maxStencilLevels = 10;\n        private static readonly DepthStencilState[] m_stencilMasks_TestBegin_DepthStencilState = new DepthStencilState[maxStencilLevels];\n        public static DepthStencilState GetStencilMasks_TestBegin_DepthStencilState(int level)\n        {\n            Debug.Assert(level > 0);\n            Debug.Assert(level < maxStencilLevels);\n\n            if(m_stencilMasks_TestBegin_DepthStencilState[level-1] == null)\n            {\n                m_stencilMasks_TestBegin_DepthStencilState[level - 1] = CreateTestDepthStencilState(level);\n            }\n            return m_stencilMasks_TestBegin_DepthStencilState[level - 1];\n        }\n\n        //  Special depth-stencil for GUI stencil mask rendering\n        public static readonly DepthStencilState StencilMask_TestHudBegin_DepthStencilState = new DepthStencilState()\n        {\n            //  Depth buffer is not required when working with stencil only\n            DepthBufferEnable = false,\n            DepthBufferWriteEnable = false,\n\n            //  Write color only where stencil enables it (where stencil value equals 1)\n            //  But disable writing to stencil buffer\n            StencilEnable = true,\n            StencilFunction = Compare.Equal,\n            ReferenceStencil = STENCIL_MASK_REFERENCE_STENCIL,\n            StencilPass = StencilOperation.Keep\n        };\n\n        // Depth stencil for rendering near objects and writing to stencil (cockpit, weapons)\n        public static readonly DepthStencilState DepthStencil_WriteNearObject = new DepthStencilState()\n        {\n            //  Depth buffer is not required when working with stencil only\n            DepthBufferEnable = true,\n            DepthBufferWriteEnable = true,\n            DepthBufferFunction = Compare.Always,\n\n            //  Every succesfully rendered pixel (not discarded or clipped) will also write 1 into stencil buffer\n            ReferenceStencil = 1,\n            StencilEnable = true,\n            StencilFunction = Compare.Always,\n            StencilPass = StencilOperation.Replace,\n            StencilFail = StencilOperation.Replace,\n            StencilWriteMask = 1\n        };\n\n        // Depth stencil for rendering far objects - all objects except cockpit and weapons (reads stencil and renders objects or not for this pixel)\n        public static readonly DepthStencilState DepthStencil_TestFarObject = new DepthStencilState()\n        {\n            //  Depth buffer is not required when working with stencil only\n            DepthBufferEnable = true,\n            DepthBufferWriteEnable = true,\n\n            //  Write color only where stencil enables it (where stencil value equals 1)\n            //  But disable writing to stencil buffer\n            StencilEnable = true,\n            StencilFunction = Compare.NotEqual,\n            ReferenceStencil = 1,\n            StencilPass = StencilOperation.Keep,\n            StencilFail = StencilOperation.Keep,\n        };\n\n        public static readonly DepthStencilState DepthStencil_TestFarObject_DepthReadOnly = new DepthStencilState()\n        {\n            //  Depth buffer is not required when working with stencil only\n            DepthBufferEnable = true,\n            DepthBufferWriteEnable = false,\n\n            //  Write color only where stencil enables it (where stencil value equals 1)\n            //  But disable writing to stencil buffer\n            StencilEnable = true,\n            StencilFunction = Compare.NotEqual,\n            ReferenceStencil = 1,\n            StencilPass = StencilOperation.Keep,\n            StencilFail = StencilOperation.Keep,\n        };\n\n        public static readonly DepthStencilState DepthStencil_StencilReadOnly = new DepthStencilState()\n        {\n            //  Depth buffer is not required when working with stencil only\n            DepthBufferEnable = false,\n            DepthBufferWriteEnable = false,\n\n            //  Write color only where stencil enables it (where stencil value equals 1)\n            //  But disable writing to stencil buffer\n            StencilEnable = true,\n            StencilFunction = Compare.NotEqual,\n            ReferenceStencil = 1,\n            StencilPass = StencilOperation.Keep,\n            StencilFail = StencilOperation.Keep,\n        };\n\n        //Used for dynamic decals\n        public static RasterizerState BiasedRasterizer_Decals = new RasterizerState\n        {\n            CullMode = Cull.Counterclockwise,\n            //Be careful about setting too high values, decals then are visible through objects\n            DepthBias = -0.0001f,  //There is missile decal popping with DepthBias = -0.00001f,\n        };\n\n        //Used for static decals\n        public static RasterizerState BiasedRasterizer_StaticDecals = new RasterizerState\n        {\n            CullMode = Cull.Counterclockwise,\n            //Be careful about setting too high values, decals then are visible through objects\n            DepthBias = -0.00001f,  \n        };\n\n        //  Special depth-stencil incrementing whenever is something written\n        public static readonly DepthStencilState StencilMask_AlwaysIncrement_DepthStencilState = new DepthStencilState()\n        {\n            StencilEnable = true,\n            StencilFunction = Compare.Always,\n            StencilPass = StencilOperation.Increment,\n\n            DepthBufferEnable = false,\n        };\n\n        // Blend state for disabled color channels in occlusion queries\n        public static readonly BlendState DisabledColorChannels_BlendState = new BlendState\n        {\n            AlphaBlendFunction = BlendState.Opaque.AlphaBlendFunction,\n            AlphaDestinationBlend = BlendState.Opaque.AlphaDestinationBlend,\n            AlphaSourceBlend = BlendState.Opaque.AlphaSourceBlend,\n            ColorBlendFunction = BlendState.Opaque.ColorBlendFunction,\n            ColorDestinationBlend = BlendState.Opaque.ColorDestinationBlend,\n            ColorSourceBlend = BlendState.Opaque.ColorSourceBlend,\n\n            ColorWriteChannels = 0,\n            ColorWriteChannels1 = 0,\n            ColorWriteChannels2 = 0,\n            ColorWriteChannels3 = 0,\n        };\n\n        // Blend state for disabled color channels in occlusion queries\n        public static readonly BlendState AlphaChannels_BlendState = new BlendState\n        {\n            AlphaBlendFunction = BlendState.Opaque.AlphaBlendFunction,\n            AlphaDestinationBlend = BlendState.Opaque.AlphaDestinationBlend,\n            AlphaSourceBlend = BlendState.Opaque.AlphaSourceBlend,\n            ColorBlendFunction = BlendState.Opaque.ColorBlendFunction,\n            ColorDestinationBlend = BlendState.Opaque.ColorDestinationBlend,\n            ColorSourceBlend = BlendState.Opaque.ColorSourceBlend,\n\n            ColorWriteChannels = ColorWriteEnable.Alpha,\n            ColorWriteChannels1 = ColorWriteEnable.Alpha,\n            ColorWriteChannels2 = ColorWriteEnable.Alpha,\n            ColorWriteChannels3 = ColorWriteEnable.Alpha,\n        };\n\n        public static readonly BlendState SSAO_BlendState = new BlendState\n        {\n            AlphaBlendFunction = BlendOperation.Add,\n            ColorBlendFunction = BlendOperation.Add,\n\n            AlphaSourceBlend = Blend.Zero,\n            AlphaDestinationBlend = Blend.One,\n\n            ColorSourceBlend = Blend.SourceAlpha,\n            ColorDestinationBlend = Blend.InverseSourceAlpha,\n\n            ColorWriteChannels = ColorWriteEnable.Red | ColorWriteEnable.Green | ColorWriteEnable.Blue,\n            ColorWriteChannels1 = 0,\n            ColorWriteChannels2 = 0\n        };\n\n        public static readonly BlendState Dynamic_Decals_BlendState = new BlendState()\n        {\n            //Alpha is maxed because of emissivity. If underlaying decal has emissivity 1.0 and overlaying 0.0, we \n            //want their max value\n            AlphaBlendFunction = BlendOperation.Maximum,\n            AlphaSourceBlend = Blend.One,\n            AlphaDestinationBlend = Blend.One,\n\n            //Diffuse and normal colors are alpha blended. Emissive component is added (maxed)\n            ColorBlendFunction = BlendOperation.Add,\n            ColorSourceBlend = Blend.SourceAlpha,\n            ColorDestinationBlend = Blend.InverseSourceAlpha,\n\n            ColorWriteChannels = ColorWriteEnable.Red | ColorWriteEnable.Green | ColorWriteEnable.Blue, //normals\n            ColorWriteChannels1 = ColorWriteEnable.Red | ColorWriteEnable.Green | ColorWriteEnable.Blue, //diffuse\n            ColorWriteChannels2 = ColorWriteEnable.Alpha, //depth\n        }; \n\n        public static readonly BlendState AlphaBlend_NoAlphaWrite_BlendState = new BlendState\n        {\n            AlphaBlendFunction = BlendState.AlphaBlend.AlphaBlendFunction,\n            AlphaDestinationBlend = BlendState.AlphaBlend.AlphaDestinationBlend,\n            AlphaSourceBlend = BlendState.AlphaBlend.AlphaSourceBlend,\n\n            BlendFactor = BlendState.AlphaBlend.BlendFactor,\n            ColorBlendFunction = BlendState.AlphaBlend.ColorBlendFunction,\n            ColorDestinationBlend = BlendState.AlphaBlend.ColorDestinationBlend,\n            ColorSourceBlend = BlendState.AlphaBlend.ColorSourceBlend,\n\n            ColorWriteChannels = ColorWriteEnable.Red | ColorWriteEnable.Green | ColorWriteEnable.Blue,\n        };\n\n        public static readonly BlendState Additive_NoAlphaWrite_BlendState = new BlendState\n        {\n            AlphaBlendFunction = BlendState.Additive.AlphaBlendFunction,\n            AlphaDestinationBlend = BlendState.Additive.AlphaDestinationBlend,\n            AlphaSourceBlend = BlendState.Additive.AlphaSourceBlend,\n\n            BlendFactor = BlendState.Additive.BlendFactor,\n            ColorBlendFunction = BlendState.Additive.ColorBlendFunction,\n            ColorDestinationBlend = BlendState.Additive.ColorDestinationBlend,\n            ColorSourceBlend = BlendState.Additive.ColorSourceBlend,\n\n            ColorWriteChannels = ColorWriteEnable.Red | ColorWriteEnable.Green | ColorWriteEnable.Blue,\n        };\n\n        public static readonly BlendState NonPremultiplied_NoAlphaWrite_BlendState = new BlendState\n        {\n            AlphaBlendFunction = BlendState.NonPremultiplied.AlphaBlendFunction,\n            AlphaDestinationBlend = BlendState.NonPremultiplied.AlphaDestinationBlend,\n            AlphaSourceBlend = BlendState.NonPremultiplied.AlphaSourceBlend,\n\n            BlendFactor = BlendState.NonPremultiplied.BlendFactor,\n            ColorBlendFunction = BlendState.NonPremultiplied.ColorBlendFunction,\n            ColorDestinationBlend = BlendState.NonPremultiplied.ColorDestinationBlend,\n            ColorSourceBlend = BlendState.NonPremultiplied.ColorSourceBlend,\n\n            ColorWriteChannels = ColorWriteEnable.Red | ColorWriteEnable.Green | ColorWriteEnable.Blue,\n        };\n\n\n        /// <summary>\n        /// Blend state for static decals. It has these features:\n        /// - Alpha blends diffuse color and preserve specular intensity of underlying material\n        /// - Overwrites normals and preserve specular power\n        /// - Preserves depth, but overwrites emissive\n        /// </summary>\n        public static readonly BlendState Static_Decals_BlendState = new BlendState()\n        {\n            //Alpha is minimum because of emissivity. If underlaying decal has emissivity 1.0 and overlaying 0.0, we \n            //want their min value (because it is inverted)\n            AlphaBlendFunction = BlendOperation.Maximum ,\n            AlphaSourceBlend = Blend.One,\n            AlphaDestinationBlend = Blend.One,\n\n            //Diffuse and normal colors are alpha blended. Emissive component is added (maxed)\n            ColorBlendFunction = BlendOperation.Add,\n            ColorSourceBlend = Blend.SourceAlpha,\n            ColorDestinationBlend = Blend.InverseSourceAlpha,\n\n            ColorWriteChannels = ColorWriteEnable.Red | ColorWriteEnable.Green | ColorWriteEnable.Blue, //normals\n            ColorWriteChannels1 = ColorWriteEnable.Red | ColorWriteEnable.Green | ColorWriteEnable.Blue, //diffuse\n            ColorWriteChannels2 = ColorWriteEnable.Alpha, //depth\n        };\n\n        /// <summary>\n        /// Blend state for static decals. It has these features:\n        /// - Alpha blends diffuse color and preserve specular intensity of underlying material\n        /// - Overwrites normals and preserve specular power\n        /// - Preserves depth, but overwrites emissive\n        /// </summary>\n        public static readonly BlendState Holo_BlendState = new BlendState()\n        {\n            //Alpha is maxed because of emissivity. If underlaying decal has emissivity 1.0 and overlaying 0.0, we \n            //want their min value (because it is inverted)\n            AlphaBlendFunction = BlendOperation.Maximum,\n            AlphaSourceBlend = Blend.One,\n            AlphaDestinationBlend = Blend.One,\n\n            //Diffuse and normal colors are alpha blended. Emissive component is added (maxed)\n            ColorBlendFunction = BlendOperation.Add,\n            ColorSourceBlend = Blend.SourceAlpha,\n            ColorDestinationBlend = Blend.InverseSourceAlpha,\n\n            ColorWriteChannels = ColorWriteEnable.Red | ColorWriteEnable.Green | ColorWriteEnable.Blue, //normals\n            ColorWriteChannels1 = ColorWriteEnable.Red | ColorWriteEnable.Green | ColorWriteEnable.Blue, //diffuse\n            ColorWriteChannels2 = ColorWriteEnable.Alpha, //depth\n        };\n\n        /// <summary>\n        /// Blends in emissive light using additive blend (additive blending to light acc target)\n        /// Overwrites alpha (emissivity) with values from source (diffuse rt)\n        /// </summary>\n        public static readonly BlendState AddEmissiveLight_BlendState = new BlendState()\n        {\n            ColorSourceBlend = Blend.One,\n            AlphaSourceBlend = Blend.One,\n            ColorDestinationBlend = Blend.One,\n            AlphaDestinationBlend = Blend.Zero,\n            ColorBlendFunction = BlendOperation.Add,\n            AlphaBlendFunction = BlendOperation.Add,\n        };\n\n        /// <summary>\n        /// Blends in emissive light using additive blend (additive blending to light acc target)\n        /// Overwrites leaves alpha as it is - in order to be able to generate images with transparent background.\n        /// Used for rendering preview images for editor.\n        /// </summary>\n        public static readonly BlendState AddEmissiveLight_NoAlphaWrite_BlendState = new BlendState()\n        {\n            ColorSourceBlend = Blend.One,\n            AlphaSourceBlend = Blend.One,\n            ColorDestinationBlend = Blend.One,\n            AlphaDestinationBlend = Blend.Zero,\n            ColorBlendFunction = BlendOperation.Add,\n            AlphaBlendFunction = BlendOperation.Add,\n            ColorWriteChannels = ColorWriteEnable.Green | ColorWriteEnable.Red | ColorWriteEnable.Blue\n        };\n                   \n        /// <summary>\n        /// </summary>\n        public static readonly BlendState Light_Combination_BlendState = new BlendState()\n        {\n            //Alpha is maxed because of emissivity. If underlaying decal has emissivity 1.0 and overlaying 0.0, we \n            //want their min value (because it is inverted)\n            AlphaBlendFunction = BlendOperation.Maximum,\n            AlphaSourceBlend = Blend.One,\n            AlphaDestinationBlend = Blend.One,\n\n            //Diffuse and normal colors are alpha blended. Emissive component is added (maxed)\n            ColorBlendFunction = BlendOperation.Maximum,\n            ColorSourceBlend = Blend.One,\n            ColorDestinationBlend = Blend.One,\n\n            ColorWriteChannels = ColorWriteEnable.Red | ColorWriteEnable.Green | ColorWriteEnable.Blue, //normals\n            ColorWriteChannels1 = ColorWriteEnable.Red | ColorWriteEnable.Green | ColorWriteEnable.Blue, //diffuse\n            ColorWriteChannels2 = ColorWriteEnable.Alpha, //depth\n        };\n\n        public static readonly BlendState Sun_Combination_BlendState = new BlendState()\n        {\n            ColorSourceBlend = Blend.One,\n            AlphaSourceBlend = Blend.One,\n            ColorDestinationBlend = Blend.One,\n            AlphaDestinationBlend = Blend.One\n        };\n\n\n        public static readonly BlendState VolumetricFogBlend = new BlendState()\n        {\n            AlphaBlendFunction = BlendState.AlphaBlend.AlphaBlendFunction,\n            AlphaDestinationBlend = BlendState.AlphaBlend.AlphaDestinationBlend,\n            AlphaSourceBlend = BlendState.AlphaBlend.AlphaSourceBlend,\n\n            BlendFactor = BlendState.AlphaBlend.BlendFactor,\n            ColorBlendFunction = BlendState.AlphaBlend.ColorBlendFunction,\n            ColorDestinationBlend = Blend.InverseSourceAlpha,\n            ColorSourceBlend = Blend.SourceAlpha,\n\n            ColorWriteChannels = ColorWriteEnable.Red | ColorWriteEnable.Green | ColorWriteEnable.Blue,       \n        };\n\n        public static readonly RasterizerState HoloRasterizerState = new RasterizerState()\n        {\n            DepthBias = 0,\n            SlopeScaleDepthBias = -5,\n        };\n\n          \n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Utils/MyStopwatch.cs",
    "content": "﻿using MinerWars.AppCode.App;\nusing MinerWars.CommonLIB.AppCode.Utils;\n\nnamespace MinerWars.AppCode.Game.Utils\n{\n    class MyStopwatch\n    {\n        private int m_startTime;\n        private bool m_isRunning;\n        private int m_elapsedTimeBeforePause;\n\n        /// <summary>\n        /// The inclusive lower bound of the random time interval.\n        /// </summary>\n        public int MinTimeMilliseconds { get; set; }\n        /// <summary>\n        /// The exclusive upper bound of the random time interval.\n        /// </summary>\n        public int MaxTimeMilliseconds { get; set; }\n        /// <summary>\n        /// Return true if <see cref=\"ElapsedMilliseconds\"/> is bigger than random time between <see cref=\"MinTimeMilliseconds\"/>\n        /// and <see cref=\"MaxTimeMilliseconds\"/>. This random time is generated on <see cref=\"Start\"/> method call.\n        /// </summary>\n        public bool IsTimeUp\n        {\n            get\n            {\n                return ElapsedMilliseconds >= m_currentTimeInterval;\n            }\n        }\n        private int m_currentTimeInterval;\n\n        /// <summary>\n        /// Initializes a new instance of the Stopwatch class.\n        /// </summary>\n        public MyStopwatch()\n        {\n            m_startTime = 0;\n            m_isRunning = false;\n            m_elapsedTimeBeforePause = 0;\n            MinTimeMilliseconds = 0;\n            MaxTimeMilliseconds = 0;\n            m_currentTimeInterval = 0;\n        }\n\n        /// <summary>\n        /// Initializes a new instance of the Stopwatch class.\n        /// </summary>\n        /// <param name=\"minTimeMilliseconds\">The inclusive lower bound of the random time interval.</param>\n        /// <param name=\"maxTimeMilliseconds\">The exclusive upper bound of the random time interval.</param>\n        public MyStopwatch(int minTimeMilliseconds, int maxTimeMilliseconds)\n            : this()\n        {\n            MinTimeMilliseconds = minTimeMilliseconds;\n            MaxTimeMilliseconds = maxTimeMilliseconds;\n        }\n\n        /// <summary>\n        /// Gets the total elapsed time measured by the current instance, in milliseconds.\n        /// WARNING: Elapsed time is changed only once per game Update().\n        /// </summary>\n        /// <returns>A read-only int integer representing the total number of milliseconds measured by the current instance.</returns>\n        public int ElapsedMilliseconds\n        {\n            get { return m_elapsedTimeBeforePause + MyMinerGame.TotalGamePlayTimeInMilliseconds - m_startTime; }\n        }\n\n        /// <summary>\n        /// Gets a value indicating whether the Stopwatch timer is running.\n        /// </summary>\n        /// <returns>true if the Stopwatch instance is currently running and measuring elapsed time for an interval; otherwise, false.</returns>\n        public bool IsRunning\n        {\n            get { return m_isRunning; }\n        }\n\n        /// <summary>\n        /// Stops time interval measurement and resets the elapsed time to zero.\n        /// </summary>\n        public void Reset()\n        {\n            m_isRunning = false;\n            m_elapsedTimeBeforePause = 0;\n        }\n\n        /// <summary>\n        /// Starts, or resumes, measuring elapsed time for an interval.\n        /// </summary>\n        public void Start()\n        {\n            if (!m_isRunning) m_startTime = MyMinerGame.TotalGamePlayTimeInMilliseconds;\n            m_isRunning = true;\n            m_currentTimeInterval = MyMwcUtils.GetRandomInt(MinTimeMilliseconds, MaxTimeMilliseconds);\n        }\n\n        /// <summary>\n        /// Stops measuring elapsed time for an interval.\n        /// </summary>\n        public void Stop()\n        {\n            if (m_isRunning) m_elapsedTimeBeforePause += MyMinerGame.TotalGamePlayTimeInMilliseconds - m_startTime;\n            m_isRunning = false;\n        }\n\n        /// <summary>\n        /// Create new instance of MyStopwatch and start it.\n        /// </summary>\n        /// <returns></returns>\n        public static MyStopwatch StartNew()\n        {\n            MyStopwatch ret = new MyStopwatch();\n            ret.Start();\n            return ret;\n        }\n    }\n\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Utils/MyStructs.cs",
    "content": "﻿using System;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Physics;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWarsMath.Graphics.PackedVector;\nusing System.Runtime.InteropServices;\nusing MinerWars.CommonLIB.AppCode.Import;\n\n//  Place for declaration of various structs, classes and enums\n\nnamespace MinerWars.AppCode.Game.Utils\n{\n    //  2D rectangle defined by floats (that is his difference to XNA's Rectangle who uses ints)\n    struct MyRectangle2D\n    {\n        public Vector2 LeftTop;     //  Coordinate of left/top point\n        public Vector2 Size;        //  Width and height\n\n        public MyRectangle2D(Vector2 leftTop, Vector2 size)\n        {\n            LeftTop = leftTop;\n            Size = size;\n        }\n    }\n\n\n    class MyAtlasTextureCoordinate\n    {\n        public Vector2 Offset;\n        public Vector2 Size;\n\n        public MyAtlasTextureCoordinate(Vector2 offset, Vector2 size)\n        {\n            Offset = offset;\n            Size = size;\n        }\n    }\n\n    enum MySpherePlaneIntersectionEnum : byte\n    {\n        BEHIND,\n        FRONT,\n        INTERSECTS\n    }\n\n    struct MyBox\n    {\n        public Vector3 Center;\n        public Vector3 Size;\n\n        public MyBox(Vector3 center, Vector3 size)\n        {\n            Center = center;\n            Size = size;\n        }\n    }\n\n    //  Line defined by two vertexes 'from' and 'to', so it has start and end.\n    public struct MyLine\n    {\n        public Vector3 From;\n        public Vector3 To;\n        public Vector3 Direction;\n        public float Length;\n\n        //  IMPORTANT: This bounding box is calculated in constructor, but only if needed. So check if you line was made with \"calculateBoundingBox = true\".  \n        //  Do it with true if you want to use this line on MyGuiScreenGameBase.Static intersection testing.\n        public BoundingBox BoundingBox;\n\n\n        //  IMPORTANT: This struct must be initialized using this constructor, or by filling all four fields. It's because\n        //  some code may need length or distance, and if they aren't calculated, we can have problems.\n        public MyLine(Vector3 from, Vector3 to, bool calculateBoundingBox = true)\n        {\n            From = from;\n            To = to;\n            Direction = MyMwcUtils.Normalize(to - from);\n            Vector3.Distance(ref to, ref from, out Length);\n\n            //  Calculate line's bounding box, but only if we know we will need it\n            BoundingBox = BoundingBoxHelper.InitialBox;\n            if (calculateBoundingBox == true)\n            {\n                BoundingBoxHelper.AddLine(ref this, ref BoundingBox);\n            }\n        }\n    }\n\n    public struct MyTriangle_Vertexes\n    {\n        public Vector3 Vertex0;\n        public Vector3 Vertex1;\n        public Vector3 Vertex2;\n    }\n\n    struct MyTriangle_Normals\n    {\n        public Vector3 Normal0;\n        public Vector3 Normal1;\n        public Vector3 Normal2;\n    }\n\n    struct MyTriangle_Vertex_Normal\n    {\n        public MyTriangle_Vertexes Vertexes;\n        public Vector3 Normal;\n    }\n\n    struct MyTriangle_Vertex_Normals\n    {\n        public MyTriangle_Vertexes Vertexes;\n        public MyTriangle_Normals Normals;\n        public MyTriangle_Normals Binormals;\n        public MyTriangle_Normals Tangents;\n    }\n\n    public struct MyPlane\n    {\n        public Vector3 Point;           //  Point on a plane\n        public Vector3 Normal;          //  Normal vector of a plane\n\n        public MyPlane(Vector3 point, Vector3 normal)\n        {\n            Point = point;\n            Normal = normal;\n        }\n\n        public MyPlane(ref Vector3 point, ref Vector3 normal)\n        {\n            Point = point;\n            Normal = normal;\n        }\n\n        public MyPlane(ref MyTriangle_Vertexes triangle)\n        {\n            Point = triangle.Vertex0;\n            Normal = MyMwcUtils.Normalize(Vector3.Cross((triangle.Vertex1 - triangle.Vertex0), (triangle.Vertex2 - triangle.Vertex0)));\n        }\n\n        //\tThis returns the distance the plane is from the origin (0, 0, 0)\n        //\tIt takes the normal to the plane, along with ANY point that lies on the plane (any corner)\n        public float GetPlaneDistance()\n        {\n            //\tUse the plane equation to find the distance (Ax + By + Cz + D = 0)  We want to find D.\n            //\tSo, we come up with D = -(Ax + By + Cz)\n\n            //\tBasically, the negated dot product of the normal of the plane and the point. (More about the dot product in another tutorial)\n            return -((Normal.X * Point.X) + (Normal.Y * Point.Y) + (Normal.Z * Point.Z));\n        }\n    }\n\n    [StructLayout(LayoutKind.Sequential, Pack = 1)]\n    struct MyVoxelTriangle\n    {\n        public short VertexIndex0;\n        public short VertexIndex1;\n        public short VertexIndex2;\n\n        public short this[int i]\n        {\n            get\n            {\n                switch (i)\n                {\n                    case 0:\n                        return VertexIndex0;\n                    case 1:\n                        return VertexIndex1;\n                    case 2:\n                        return VertexIndex2;\n                    default:\n                        throw new IndexOutOfRangeException();\n                }\n            }\n\n            set\n            {\n                switch (i)\n                {\n                    case 0:\n                        VertexIndex0 = value;\n                        break;\n                    case 1:\n                        VertexIndex1 = value;\n                        break;\n                    case 2:\n                        VertexIndex2 = value;\n                        break;\n                    default:\n                        throw new IndexOutOfRangeException();\n                }\n            }\n        }\n    }\n\n    [StructLayout(LayoutKind.Sequential, Pack = 1)]\n    struct MyVoxelVertex : IEquatable<MyVoxelVertex>\n\t{\n#if !PACKED_VERTEX_FORMAT\n\n        public Vector3 Position;\n        public Vector3 Normal;\n\t\tpublic float Ambient;\n\t\tpublic MyMwcVoxelMaterialsEnum Material;\n\n#else //PACKED_VERTEX_FORMAT\n\n        //12 + 4 + 4 + 1 = 21\n        /*\n\t\tpublic Vector3 Position;\n\t\tByte4 _Normal;\n\t\tpublic float Ambient;\n\t\tpublic MyMwcVoxelMaterialsEnum Material;\n\n\t\tpublic Byte4 PackedNormal\n\t\t{\n\t\t\tget { return _Normal; }\n\t\t\tset { _Normal = value; }\n\t\t}\n\n\t\tpublic Vector3 Normal\n\t\t{\n            get { return MyVertexFormats.VF_Packer.UnpackNormal(ref _Normal); }\n            set { _Normal.PackedValue = MyVertexFormats.VF_Packer.PackNormal(ref value); }\n\t\t}\n          */\n\n        //8 + 4 = 12\n        public MyShort4 m_positionAndAmbient;\n        public Byte4 m_normal;\n\n        public MyMwcVoxelMaterialsEnum Material;\n        //public bool OnRenderCellEdge;\n\n\n        public Vector3 Position\n        {\n            get { return MyVertexCompression.INV_VOXEL_MULTIPLIER * new Vector3(m_positionAndAmbient.X + MyVertexCompression.VOXEL_OFFSET, m_positionAndAmbient.Y + MyVertexCompression.VOXEL_OFFSET, m_positionAndAmbient.Z + MyVertexCompression.VOXEL_OFFSET); }\n            set\n            {\n                m_positionAndAmbient.X = (short)(MyVertexCompression.VOXEL_MULTIPLIER * value.X - MyVertexCompression.VOXEL_OFFSET + MyVertexCompression.VOXEL_COORD_EPSILON);\n                m_positionAndAmbient.Y = (short)(MyVertexCompression.VOXEL_MULTIPLIER * value.Y - MyVertexCompression.VOXEL_OFFSET + MyVertexCompression.VOXEL_COORD_EPSILON);\n                m_positionAndAmbient.Z = (short)(MyVertexCompression.VOXEL_MULTIPLIER * value.Z - MyVertexCompression.VOXEL_OFFSET + MyVertexCompression.VOXEL_COORD_EPSILON);\n            }\n        }\n\n        public float Ambient\n        {\n            get { return m_positionAndAmbient.W * MyVertexCompression.INV_AMBIENT_MULTIPLIER; }\n            set { m_positionAndAmbient.W = (short)(value * MyVertexCompression.AMBIENT_MULTIPLIER); }\n        }\n\n        public MyShort4 PackedPositionAndAmbient\n        {\n            get { return m_positionAndAmbient; }\n            set { m_positionAndAmbient = value; }\n        }\n\n        public Byte4 PackedNormal\n        {\n            get { return m_normal; }\n            set { m_normal = value; }\n        }\n\n        public Vector3 Normal\n        {\n            get { return VF_Packer.UnpackNormal(ref m_normal); }\n            set { m_normal.PackedValue = VF_Packer.PackNormal(ref value); }\n        }\n#endif //PACKED_VERTEX_FORMAT\n\n        public bool Equals(MyVoxelVertex other)\n        {\n            return Vector3.DistanceSquared(Position, other.Position) < MyMwcMathConstants.EPSILON_SQUARED;\n        }\n\n        public override int GetHashCode()\n        {\n            return Position.GetHashCode();\n        }\n\t}\n\n    //  Quad made from 4 points\n    public struct MyQuad\n    {\n        public Vector3 Point0;\n        public Vector3 Point1;\n        public Vector3 Point2;\n        public Vector3 Point3;\n    }\n\n    struct MyPolyLine\n    {\n        public Vector3 LineDirectionNormalized;     //  Vector from point 0 to 1, calculated as point1 - point0, than normalized\n        public Vector3 Point0;\n        public Vector3 Point1;\n        public float Thickness;\n    }\n\n    //  Structure for holding voxel triangleVertexes used in JLX's collision-detection\n    // size is 100 B\n    struct MyColDetVoxelTriangle\n    {\n        public Vector3 Vertex0;\n        public Vector3 Vertex1;\n        public Vector3 Vertex2;\n        public MinerWarsMath.Plane Plane;\n        Vector3 m_origin;\n        Vector3 m_edge0;\n        Vector3 m_edge1;\n        Vector3 m_normal;\n\n        //  Points specified so that pt1-pt0 is edge0 and p2-pt0 is edge1\n        public void Update(ref Vector3 vertex0, ref Vector3 vertex1, ref Vector3 vertex2)\n        {\n            Vertex0 = vertex0;\n            Vertex1 = vertex1;\n            Vertex2 = vertex2;\n\n            Plane = new MinerWarsMath.Plane(Vertex0, Vertex1, Vertex2);\n\n            m_origin = vertex0;\n            m_edge0 = vertex1 - vertex0;\n            m_edge1 = vertex2 - vertex0;\n\n            m_normal = Vector3.Cross(m_edge0, m_edge1);\n            MyPhysicsUtils.NormalizeSafe(ref m_normal);\n        }\n\n        //  Same numbering as in the constructor\n        public Vector3 GetPoint(int i)\n        {\n            if (i == 1)\n                return Vertex1;\n\n            if (i == 2)\n                return Vertex2;\n\n            return Vertex0;\n        }\n\n        //  Same numbering as in the constructor\n        public void GetPoint(int i, out Vector3 point)\n        {\n            if (i == 1)\n            {\n                point = Vertex1;\n                return;\n            }\n\n            if (i == 2)\n            {\n                point = Vertex2;\n                return;\n            }\n\n            point = Vertex0;\n        }\n\n        //  Returns the point parameterised by t0 and t1\n        public Vector3 GetPoint(float t0, float t1)\n        {\n            return m_origin + t0 * m_edge0 + t1 * m_edge1;\n        }\n\n        //  Gets the minimum and maximum extents of the triangleVertexes along the axis\n        public void GetSpan(out float min, out float max, Vector3 axis)\n        {\n            float d0 = Vector3.Dot(GetPoint(0), axis);\n            float d1 = Vector3.Dot(GetPoint(1), axis);\n            float d2 = Vector3.Dot(GetPoint(2), axis);\n\n            min = MyPhysicsUtils.Min(d0, d1, d2);\n            max = MyPhysicsUtils.Max(d0, d1, d2);\n        }\n\n        public Vector3 Centre\n        {\n            get { return m_origin + 0.333333333333f * (m_edge0 + m_edge1); }\n        }\n\n        public Vector3 Origin\n        {\n            get { return m_origin; }\n            set { m_origin = value; }\n        }\n\n        public Vector3 Edge0\n        {\n            get { return m_edge0; }\n            set { m_edge0 = value; }\n        }\n\n        public Vector3 Edge1\n        {\n            get { return m_edge1; }\n            set { m_edge1 = value; }\n        }\n\n        //  Edge2 goes from pt1 to pt2\n        public Vector3 Edge2\n        {\n            get { return m_edge1 - m_edge0; }\n        }\n\n        //  Gets the triangleVertexes normal. If degenerate it will be normalised, but\n        //  the direction may be wrong!\n        public Vector3 Normal\n        {\n            get { return m_normal; }\n        }\n    }\n\n    [StructLayout(LayoutKind.Explicit, Pack = 1)]\n    public struct MyShort4\n    {\n        [FieldOffset(0)]\n        public ulong packed_value;\n\n        [FieldOffset(0)]\n        public short X;\n        [FieldOffset(2)]\n        public short Y;\n        [FieldOffset(4)]\n        public short Z;\n        [FieldOffset(6)]\n        public short W;\n\n        public MyShort4(short x, short y, short z, short w)\n        {\n            packed_value = 0;\n            X = x;\n            Y = y;\n            Z = z;\n            W = w;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Utils/MySystemTimer.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Runtime.InteropServices;\nusing MinerWars.AppCode.Game.GUI;\n\nnamespace MinerWars.AppCode.Game.Utils\n{\n    public static class MySystemTimer\n    {\n        // all values in ns:\n        private static uint m_systemTimerNormalResolution;\n        private static uint m_desiredSystemTimerResolution;\n        private static uint m_minimumSystemTimerResolution;\n        private static uint m_maximumSystemTimerResolution;\n        private static uint m_currentSystemTimerResolution;\n        private static bool m_initialized = false;\n\n        private static bool m_isMaxResolution = false;\n        private static bool m_isMinResolution = false;\n\n\n        public static void Initialize()\n        {\n            m_systemTimerNormalResolution = GetSystemResolution();\n            m_desiredSystemTimerResolution = m_systemTimerNormalResolution;\n            m_initialized = true;\n\n            // Write to log file informaiton about the timer:\n            // ..\n        }\n\n\n        public static uint GetUserRequestResolution()\n        {\n            uint tmp = 0;\n            MyWindowsAPIWrapper.NtSetTimerResolution(0, false, ref tmp);\n\n            return m_currentSystemTimerResolution;\n        }\n\n        public static uint GetSystemResolution()\n        {\n            // Only default system settings???\n            MyWindowsAPIWrapper.NTSTATUS result = MyWindowsAPIWrapper.NtQueryTimerResolution(ref m_minimumSystemTimerResolution, ref m_maximumSystemTimerResolution, ref m_currentSystemTimerResolution);\n\n            return m_currentSystemTimerResolution;\n        }\n\n        public static void SetNormalResolution()\n        {\n            if (!m_initialized) Initialize();\n\n            MyWindowsAPIWrapper.NTSTATUS result = MyWindowsAPIWrapper.NtSetTimerResolution(m_systemTimerNormalResolution, true, ref m_currentSystemTimerResolution);\n        }\n\n        public static void GetPossibleResolutionBoundaries(out uint Minimun_ns, out uint Maximum_ns)\n        {\n            if (!m_initialized) Initialize();\n\n            Minimun_ns = m_minimumSystemTimerResolution;\n            Maximum_ns = m_maximumSystemTimerResolution;\n        }\n\n        public static void SetResolution(uint Resolution_ns)\n        {\n            if (!m_initialized) Initialize();\n\n            m_desiredSystemTimerResolution = Resolution_ns;\n\n            if (Resolution_ns < m_maximumSystemTimerResolution)\n            {\n                Resolution_ns = m_maximumSystemTimerResolution;\n            }\n            else if (Resolution_ns > m_minimumSystemTimerResolution)\n            {\n                Resolution_ns = m_minimumSystemTimerResolution;\n            }\n\n            // Try to disable previous:\n            MyWindowsAPIWrapper.NTSTATUS result = MyWindowsAPIWrapper.NtSetTimerResolution((uint)Resolution_ns, false, ref m_currentSystemTimerResolution);\n            \n            // Try to set current:\n            result = MyWindowsAPIWrapper.NtSetTimerResolution((uint)Resolution_ns, true, ref m_currentSystemTimerResolution);\n            uint set = GetSystemResolution();\n\n            m_isMaxResolution = false;\n            m_isMinResolution = false;\n            // Write to log:\n            // .. change resolution timer to ...\n        }\n\n        public static void SetMaximalResolution()\n        {\n            if (!m_initialized) Initialize();\n\n            m_isMaxResolution = true;\n            m_isMinResolution = false;\n\n            SetResolution(m_maximumSystemTimerResolution);\n        }\n\n        public static void SetMinimalResolution()\n        {\n            if (!m_initialized) Initialize();\n\n            m_isMaxResolution = false;\n            m_isMinResolution = true;\n\n            SetResolution(m_minimumSystemTimerResolution);\n        }\n\n        public static bool IsSetMaxResolution()\n        {\n            return m_isMaxResolution;\n        }\n\n        public static bool IsSetMinResolution()\n        {                       \n            return m_isMinResolution;\n        }\n\n        public static void SetByType(MyGuiScreenGamePlayType type)\n        {\n            switch (type)\n            {\n                // For normal resolution:\n                case MyGuiScreenGamePlayType.EDITOR_MMO:\n                case MyGuiScreenGamePlayType.EDITOR_SANDBOX:\n                case MyGuiScreenGamePlayType.EDITOR_STORY:\n                case MyGuiScreenGamePlayType.GAME_MMO:\n                case MyGuiScreenGamePlayType.GAME_SANDBOX:\n                case MyGuiScreenGamePlayType.GAME_STORY:\n                case MyGuiScreenGamePlayType.INGAME_EDITOR:\n                    //SetNormalResolution();\n                    {\n                    }\n                    break;\n\n                // For maximum resolution:\n                case MyGuiScreenGamePlayType.CREDITS:\n                case MyGuiScreenGamePlayType.MAIN_MENU:\n                case MyGuiScreenGamePlayType.PURE_FLY_THROUGH:\n                    SetMaximalResolution();\n                    //SetMinimalResolutution();\n                    {\n                    }\n                    break;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Utils/MyTestMission.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Managers.EntityManager.Entities;\nusing MinerWars.AppCode.Game.HUD;\nusing MinerWars.AppCode.Game.Explosions;\nusing Microsoft.Xna.Framework;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Models;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.AppCode.Game.Lights;\nusing MinerWars.AppCode.Game.Render;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Managers.EntityManager.Entities.InfluenceSpheres;\nusing MinerWars.AppCode.Game.Managers.Session;\n\nnamespace MinerWars.AppCode.Game.Utils\n{\n    static class MyTestMission\n    {\n        static bool m_outpostReached = false;\n        static int m_remainingPrimaryTargetsCounter = 4;\n        static bool m_primaryTargetTextAlreadyAdded = false;\n        //static bool m_russianOutpostTextAlreadyAdded = false;\n        static MyLight m_russianDropZoneLight = null;\n        public static readonly Vector3 RUSSIAN_DROP_ZONE_POSITION = new Vector3(-9664.0f, 8818.0f, 53268.0f);\n        const float MAX_ENEMY_HUD_VISIBILITY_DISTANCE = 3000f;\n        const float REMOVE_FROM_HUD_POSSIBLE_OUTPOST_DISTANCE = 3000f;\n        static Vector4 m_dropZoneLightColor = new Vector4(1,0.92f,0.62f, 1);\n\n        static MyTestMission()\n        {\n             MyRender.RegisterRenderModule(\"Test mission 1\", Draw, MyRenderStage.PrepareForDraw);\n        }\n\n\n        public static bool UpdateSmallShipBotScript(MySmallShipBot smallShipBot)\n        {\n\n            // Make all small ship enemy bots fly towards Russian Outpost\n            if (m_remainingPrimaryTargetsCounter == 0)\n            {\n\t\t\t\t//TODO: not working with new bot version\n                //smallShipBot.Decision.TargetPosition = RUSSIAN_DROP_ZONE_POSITION;\n                //smallShipBot.SetBehavior<MyBotBehaviorFollow>();\n            }\n\n            return true;\n        }\n\n        public static bool UpdateSmallDebrisScript(MySmallDebris smallDebris)\n        {\n            if (smallDebris.ModelLod0.ModelEnum == MyModelsEnum.cistern)\n            {\n                if (m_outpostReached == true && m_primaryTargetTextAlreadyAdded == false)\n                {\n                    bool containsHud = MyHud.ContainsTextForEntity(smallDebris);\n                    if (containsHud == false) MyHud.AddText(smallDebris, new StringBuilder(\"Primary target\"), Color.Green);\n                }\n\n                if (smallDebris.IsDestroyed())\n                {\n                    MyHud.RemoveText(smallDebris);\n                    //  small ship explosion!\n                    MyExplosion explosion = MyExplosions.AddExplosion();\n                    Vector3 explosionPosition = smallDebris.GetPosition();\n                    if (explosion != null)\n                    {\n                        explosion.Start(\n                            MyExplosionTypeEnum.SMALL_SHIP_EXPLOSION, new BoundingSphere(explosionPosition,\n                            MyMwcUtils.GetRandomFloat(MyExplosionsConstants.EXPLOSION_RANDOM_RADIUS_MIN, MyExplosionsConstants.EXPLOSION_RANDOM_RADIUS_MAX)),\n                            MyExplosionsConstants.EXPLOSION_LIFESPAN);\n                    }\n\n                    smallDebris.Close();\n                    m_remainingPrimaryTargetsCounter--;\n                    return false;\n                }\n            }\n\n            return true;\n        }\n\n        public static bool UpdateStaticAsteroidScript(MyStaticAsteroid staticAsteroid)\n        {\n            if (MyHud.ContainsTextForEntity(staticAsteroid))\n            {\n                if (m_outpostReached == false)\n                {\n                    if (Vector3.Distance(MySession.PlayerShip.GetPosition(), staticAsteroid.GetPosition()) < REMOVE_FROM_HUD_POSSIBLE_OUTPOST_DISTANCE)\n                    {\n                        MyHud.RemoveText(staticAsteroid);\n                    }\n                }\n                else\n                {\n                    MyHud.RemoveText(staticAsteroid);\n                }\n            }\n\n            return true;\n        }\n\n        public static bool UpdateVoxelMapScript(MyVoxelMap voxelMap)\n        {\n            if (MyHud.ContainsTextForEntity(voxelMap))\n            {\n                if (m_outpostReached == false)\n                {\n                    if (Vector3.Distance(MySession.PlayerShip.GetPosition(), voxelMap.GetPosition()) < REMOVE_FROM_HUD_POSSIBLE_OUTPOST_DISTANCE)\n                    {\n                        MyHud.RemoveText(voxelMap);\n                    }\n                }\n                else\n                {\n                    MyHud.RemoveText(voxelMap);\n                }\n            }\n\n            return true;\n        }\n\n        public static bool UpdateLargeShipScript(MyLargeShip largeShip)\n        {\n            /*if (m_outpostReached == false &&\n                    largeShip.ModelLod0.GetModelEnum() == MyModelsEnum.Test_JeromieInteriorLevel_LOD0 &&\n                    Vector3.Distance(MySession.PlayerShip.GetPosition(), largeShip.GetPosition()) < 3000.0f)\n            {\n                if (m_russianOutpostTextAlreadyAdded == false)\n                {\n                    MyHud.AddText(largeShip, new StringBuilder(\"Russian Outpost\"), Color.Red);\n                    m_outpostReached = true;\n                    m_russianOutpostTextAlreadyAdded = true;\n                }\n\n            }*/\n\n            return true;\n        }\n\n        public static bool UpdateInfluenceSphereSoundScript(MyInfluenceSphereSound influenceSphereSound)\n        {\n            if ((m_remainingPrimaryTargetsCounter == 0) && (MyHud.ContainsTextForEntity(influenceSphereSound) == false))\n            {\n                MyHud.AddText(influenceSphereSound, new StringBuilder(\"Russian Drop Zone\"), Color.Green);\n            }\n\n            return true;\n        }\n\n        public static void UpdateEntityHealth(MyEntity entity, float healthDamage)\n        {\n            if (entity != null && entity is MySmallDebris)\n            {\n                ((MySmallDebris)entity).AddHealth(healthDamage);\n            }\n        }\n\n        public static void Draw()\n        {\n            if (MyFakes.TEST_MISSION_1_ENABLED)\n            {\n\n                if (m_remainingPrimaryTargetsCounter == 0)\n                {\n                    if (m_russianDropZoneLight != null)\n                    {\n                        Vector3 dir = MyMwcUtils.Normalize(MyCamera.Position - RUSSIAN_DROP_ZONE_POSITION);\n\n                        float timeBlic = MyMinerGame.TotalGamePlayTimeInMilliseconds % 980;\n                        if (timeBlic > 250) timeBlic = 980 - timeBlic;\n                        timeBlic = MathHelper.Clamp(1 - timeBlic / 250, 0, 1);\n\n                        float alpha = MathHelper.Lerp(0.1f, 0.6f, timeBlic);\n\n                        m_dropZoneLightColor.W = alpha;\n                        m_russianDropZoneLight.Start(MyLight.LightTypeEnum.PointLight, RUSSIAN_DROP_ZONE_POSITION, m_dropZoneLightColor, 1, 200);\n\n                        float radius = MathHelper.Lerp(0.1f, 150f, timeBlic);\n\n                        MyTransparentGeometry.AddPointBillboard(MyTransparentMaterialEnum.ReflectorGlareAlphaBlended, m_dropZoneLightColor,\n                                    RUSSIAN_DROP_ZONE_POSITION + dir * 5, radius, 0);\n                    }\n                    else\n                    {\n                        m_russianDropZoneLight = MyLights.AddLight();\n                        if (m_russianDropZoneLight != null)\n                        {\n                            m_russianDropZoneLight.Start(MyLight.LightTypeEnum.PointLight, 1);\n                        }\n                    }\n                }\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Utils/MyTextureAtlas.cs",
    "content": "using System;\nusing System.Collections.Generic;\nusing MinerWars.AppCode.Game.Textures;\n\nnamespace MinerWars.AppCode.Game.Utils\n{\n    using Vector4 = MinerWarsMath.Vector4;\n    using Rectangle = MinerWarsMath.Rectangle;\n\n    /// <summary>\n    /// There's so little to this class you barely need it but it\n    /// saves some typing if nothing else.\n    /// </summary>\n    internal class MyTextureAtlas : Dictionary<string, MyTextureAtlasItem>\n    {\n        public MyTextureAtlas(int numItems)\n            : base(numItems)\n        { }\n    }\n\n    internal struct MyTextureAtlasItem\n    {\n        /// <summary>\n        /// The Texture2D that this item is part of\n        /// </summary>\n        public MyTexture2D AtlasTexture;\n\n        /// <summary>\n        /// The UVOffsets describe where this item\n        /// sits in the AtlasTexture. The four components\n        /// are U offset, V offset, Width and Height\n        /// </summary>\n        public Vector4 UVOffsets;\n\n        internal MyTextureAtlasItem(MyTexture2D atlasTex, Vector4 uvOffsets)\n        {\n            AtlasTexture = atlasTex;\n            UVOffsets = uvOffsets;\n        }\n\n        /// <summary>\n        /// This returns a Rectangle suitable for use\n        /// with SpriteBatch.\n        /// </summary>\n        public Rectangle SourceRectangle\n        {\n            get\n            {\n                Vector4 v = new Vector4(\n                    AtlasTexture.Width, \n                    AtlasTexture.Height, \n                    AtlasTexture.Width, \n                    AtlasTexture.Height) * UVOffsets;\n                \n                return new Rectangle(\n                    (int)v.X, (int)v.Y, \n                    (int)v.Z, (int)v.W);\n            }\n        }\n    }    \n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Utils/MyThirdPersonSpectator.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWarsMath.Graphics;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.HUD;\nusing MinerWars.AppCode.Game.Render;\nnamespace MinerWars.AppCode.Game.Utils\n{\n    static class MyThirdPersonSpectator\n    {\n        // Minimum distance camera-ship (also used for quick zoom)\n        public static readonly float DEFAULT_MIN_DISTANCE = 7.0f;\n\n        // Minimum distance camera-ship (also used for quick zoom)\n        public static readonly float MAX_DISTANCE = 200.0f;\n\n        public static readonly float HEADSHAKE_POWER = 0.5f;\n\n        public static readonly float COLLISION_STEP = 0.05f;\n\n        public static readonly float CAMERA_RADIUS = 1.0f;\n\n        public static readonly float BACKWARD_CUTOFF = 3.0f;\n\n        #region Definitions\n        // Helper class for spring physics parameters\n        // Critical damping = 2*sqrt(Stiffness * Mass)\n        public class SpringInfo\n        {\n            // Spring physics properties\n            public float Stiffness;\n            public float Damping;\n            public float Mass;\n\n            public SpringInfo(float stiffness, float damping, float mass)\n            {\n                Stiffness = stiffness;\n                Damping = damping;\n                Mass = mass;\n            }\n\n            public SpringInfo(SpringInfo spring)\n            {\n                Setup(spring);\n            }\n\n            public void Setup(SpringInfo spring)\n            {\n                Stiffness = spring.Stiffness;\n                Damping = spring.Damping;\n                Mass = spring.Mass;\n            }\n\n            public void Setup(SpringInfo a, SpringInfo b, float springChangeTime)\n            {\n                Stiffness = MathHelper.SmoothStep(a.Stiffness, b.Stiffness, springChangeTime);\n                Damping = MathHelper.SmoothStep(a.Damping, b.Damping, springChangeTime);\n                Mass = MathHelper.SmoothStep(a.Mass, b.Mass, springChangeTime);\n            }\n        }\n        #endregion\n\n        // Quick zoom\n        public static bool QuickZoom;\n\n        // Vector defining position between Target and Spectator\n        public static Vector3 LookAt { get; set; }\n\n        public static Vector3 Target;\n        public static Matrix TargetOrientation;\n\n        // Current spectator position\n        public static Vector3 Position;\n        public static Vector3 DesiredPosition;\n\n        // Spring physics properties\n        public static SpringInfo NormalSpring;\n        public static SpringInfo StrafingSpring;\n        public static SpringInfo AngleSpring;\n\n        // Desired spring parameters\n        private static SpringInfo m_targetSpring;\n\n        private static float m_springChangeTime;\n        // Current spring parameters, we interpolate values in case StrafingSpring->NormalSpring\n        private static SpringInfo m_currentSpring;\n\n        private static Vector3 m_velocity;\n        private static float m_angleVelocity;\n        private static Quaternion m_orientation;\n        private static Matrix m_orientationMatrix;\n\n        static MyThirdPersonSpectator()\n        {\n            LookAt = MySession.Is25DSector ? new Vector3(0, 130, 65) : new Vector3(0, 20, 50);\n\n            NormalSpring = new SpringInfo(10000, 1414, 50);\n            StrafingSpring = new SpringInfo(36000, 2683, 50);\n            AngleSpring = new SpringInfo(30, 14.5f, 2);\n\n            m_targetSpring = NormalSpring;\n            m_currentSpring = new SpringInfo(NormalSpring);\n        }\n\n        // Handles interpolation of spring parameters\n        private static void UpdateCurrentSpring()\n        {\n            if (m_targetSpring == StrafingSpring)\n            {\n                m_currentSpring.Setup(m_targetSpring);\n            }\n            else if (m_targetSpring == NormalSpring)\n            {\n                m_currentSpring.Setup(StrafingSpring, NormalSpring, m_springChangeTime);\n            }\n            m_springChangeTime += MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS;\n        }\n\n        // Initialization required for proper spring function\n        public static void Init(Vector3 desiredPosition, Matrix orientation)\n        {\n            DesiredPosition = desiredPosition;\n            Position = desiredPosition;\n            m_velocity = Vector3.Zero;\n            m_orientation = Quaternion.CreateFromRotationMatrix(orientation);\n            m_orientationMatrix = orientation;\n        }\n\n        // Updates spectator position (spring connected to desired position)\n        public static void Update()\n        {\n            UpdateCurrentSpring();\n\n            Vector3 transformedLookAt = Vector3.Transform(LookAt, TargetOrientation);\n            DesiredPosition = Target + transformedLookAt;\n\n            // Calculate spring force\n            Vector3 stretch = Position - DesiredPosition;\n            Vector3 force = -m_currentSpring.Stiffness * stretch - m_currentSpring.Damping * m_velocity;\n\n            // Apply acceleration\n            Vector3 acceleration = force / m_currentSpring.Mass;\n            m_velocity += acceleration * MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS;\n\n            // Apply velocity\n            Position += m_velocity * MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS;\n\n            if (MySession.Is25DSector)\n\t\t\t{\n            \tPosition = DesiredPosition;\n\t\t\t}\n\n            // Limit backward distance from target\n            float backward = Vector3.Dot(TargetOrientation.Backward, Target - Position);\n            if (backward > -BACKWARD_CUTOFF)\n            {\n                Position += TargetOrientation.Backward * (backward + BACKWARD_CUTOFF);\n            }\n\n            // Roll spring\n            Quaternion targetOrientation = Quaternion.CreateFromRotationMatrix(TargetOrientation);\n\n            // Computes angle difference between current and target orientation\n            var angleDifference = (float)Math.Acos(MathHelper.Clamp(Quaternion.Dot(m_orientation, targetOrientation), -1, 1));\n            // Normalize angle\n            angleDifference = angleDifference > MathHelper.PiOver2 ? MathHelper.Pi - angleDifference : angleDifference;\n\n            if (MySession.Is25DSector)\n\t\t\t{\n\t            angleDifference = 0;\n            \tm_angleVelocity = 0;\n\t\t\t}\n\n            // Compute spring physics\n            float angleForce = -AngleSpring.Stiffness * angleDifference - AngleSpring.Damping * m_angleVelocity;\n            m_angleVelocity += angleForce / AngleSpring.Mass * MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS;\n            if (angleDifference > 0)\n            {\n                float factor = Math.Abs(m_angleVelocity * MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS / angleDifference);\n                if (angleDifference > MathHelper.PiOver4)\n                {\n                    factor = Math.Max(factor, 1.0f - MathHelper.PiOver4/angleDifference);\n                }\n                factor = MathHelper.Clamp(factor, 0, 1);\n                m_orientation = Quaternion.Slerp(m_orientation, targetOrientation, factor);\n                m_orientationMatrix = Matrix.CreateFromQuaternion(m_orientation);\n            }\n        }\n\n        public static void HandleIntersection(MyEntity ship, bool shakeActive, Vector3 headPosition, Vector3 headDirection)\n        {\n            // Direction vector\n            Vector3 direction = Target - Position;\n            direction.Normalize();\n\n            // Compute line collision - Current Position <-> Target\n            var line = new MyLine(Target, Position, true);\n            var result = MyEntities.GetIntersectionWithLine(ref line, MySession.PlayerShip, null, true, true);\n            float distance;\n\n            if (result.HasValue)\n            {\n                distance = result.Value.Triangle.Distance;\n                float t = distance / line.Length;\n                Position = Target + (Position - Target) * t;\n            }\n            else\n            {\n                distance = (Position - Target).Length();\n            }\n\n\n            // Move closer near plane of camera is in collision with enviroment (approximation with bounding sphere)\n            Vector3 currentPosition = Position;\n            Vector3 lastBadPosition = Position;\n            int stepCount = 4;\n            for (int stepSize = stepCount; stepSize >= 1; stepSize--)\n            {\n                float collisionStep = COLLISION_STEP * (1 << (stepSize - 1));\n                bool distanceChanged = false;\n                while (distance > MySession.PlayerShip.WorldVolume.Radius /*GetMinDistance()*/)\n                {\n                    // Headshake is based on distance\n                    Vector3 shakePosition = currentPosition;\n                    if (shakeActive)\n                    {\n                        shakePosition = currentPosition + Vector3.Transform(headPosition, TargetOrientation) * distance * HEADSHAKE_POWER;\n                    }\n\n                    // Test current camera position for near plane collision\n                    var cameraBS = new BoundingSphere(shakePosition, CAMERA_RADIUS);\n                    MyEntity entity = MyEntities.GetIntersectionWithSphere(ref cameraBS, ship, null);\n                    if (entity == null)\n                    {\n                        break;\n                    }\n\n                    // Move closer (Measure distance from ship to avoid camera shake)\n                    lastBadPosition = currentPosition;\n                    currentPosition = Target - direction * (int)((distance - COLLISION_STEP / 10) / collisionStep) * collisionStep;\n                    distance = (currentPosition - Target).Length();\n                    distanceChanged = true;\n                }\n\n                if (!distanceChanged && stepSize == stepCount)\n                {\n                    break;\n                }\n\n                if (distanceChanged && stepSize > 1)\n                {\n                    currentPosition = lastBadPosition;\n                    distance = (currentPosition - Target).Length();\n                }\n            }\n\n            float minDistance = MySession.PlayerShip.WorldVolume.Radius;\n            /*\n            if (distance < minDistance)\n            {\n                Position = Target - minDistance * direction;\n            }\n            else*/\n            {\n                Position = currentPosition;\n            }\n        }\n\n        public static Matrix GetViewMatrix(float fov, float zoomLevel, bool shakeActive, Vector3 headPosition, Vector3 headDirection)\n        {\n            Vector3 position = QuickZoom ? (Target + Vector3.Transform(LookAt, TargetOrientation) / LookAt.Length() * GetMinDistance()) : Position;\n            Matrix orientation = QuickZoom ? TargetOrientation : m_orientationMatrix;\n\n            float distance = (Target - position).Length();\n\n            // Push ship down (crosshair approx in middle of screen)\n            float shipVerticalShift = (float)Math.Tan(fov / 2) * 0.6f * distance;\n            Vector3 lookVector = Target + orientation.Up * shipVerticalShift - position;\n\n            float zoomPhase = MathHelper.Clamp((1.0f - zoomLevel) * 4, 0, 1);\n\n            if (zoomLevel != 1)\n            {\n                // Normalize directions for more linear interpolation\n                Vector3 lookDirection = Vector3.Normalize(lookVector);\n                Vector3 crosshairDirection = Vector3.Normalize(GetCrosshair() - position);\n                lookVector = Vector3.Lerp(lookDirection, crosshairDirection, zoomPhase);\n            }\n\n            // Apply headshake\n            if (shakeActive)\n            {\n                position += Vector3.Transform(headPosition, orientation) * distance * HEADSHAKE_POWER;\n                Matrix matrixRotation = Matrix.CreateFromAxisAngle(Vector3.Forward, headDirection.Z) * Matrix.CreateFromAxisAngle(Vector3.Right, headDirection.X);\n                lookVector = Vector3.Transform(lookVector, matrixRotation);\n            }\n\n            return Matrix.CreateLookAt(position, position + lookVector, TargetOrientation.Up);\n        }\n\n        // Returns squared distance between spectator position and chased target\n        public static float GetTargetDistanceSquared()\n        {\n            return (Position - Target).LengthSquared();\n        }\n\n        // Sets inner state (like target spring properties) which depends on ship movement type i.e. strafe\n        public static void SetState(Vector3 moveIndicator, Vector2 rotationIndicator, float rollIndicator)\n        {\n            if (rollIndicator < float.Epsilon &&\n                (Math.Abs(moveIndicator.X) > float.Epsilon || Math.Abs(moveIndicator.Y) > float.Epsilon) &&\n                Math.Abs(moveIndicator.Z) < float.Epsilon)\n            {\n                if (m_targetSpring != StrafingSpring)\n                {\n                    m_springChangeTime = 0;\n                    m_targetSpring = StrafingSpring;\n                }\n            }\n            else if (m_targetSpring != NormalSpring)\n            {\n                m_springChangeTime = 0;\n                m_targetSpring = NormalSpring;\n            }\n        }\n\n        // Returns 3D crosshair position\n        public static Vector3 GetCrosshair()\n        {\n            return Target + TargetOrientation.Forward * 25000;\n        }\n\n        // Returns spectator orientation\n        public static Matrix GetOrientation()\n        {\n            return m_orientationMatrix;\n        }\n\n        public static float GetMinDistance()\n        {\n            return MySession.PlayerShip != null ? MySession.PlayerShip.WorldVolume.Radius * 1.3f : MyThirdPersonSpectator.DEFAULT_MIN_DISTANCE;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Utils/MyUtilRandomVector3ByDeviatingVector.cs",
    "content": "﻿using System;\nusing MinerWarsMath;\nusing MinerWars.CommonLIB.AppCode.Utils;\n\nnamespace MinerWars.AppCode.Game.Utils\n{\n    //  Use this struct to generate random vectors deviated around 'originalVector' by random vector of limit 'maxAngle'\n    //  It can be used by creating instance of this struct (if you need more random vectors deviated from one basic), or\n    //  by calling static one-time method MyUtilRandomVector3ByDeviatingVector.GetRandom(...original vector..., ...max angle...)\n    struct MyUtilRandomVector3ByDeviatingVector\n    {\n        Matrix m_matrix;\n\n        public MyUtilRandomVector3ByDeviatingVector(Vector3 originalVector)\n        {\n            m_matrix = MyMath.MatrixFromDir(originalVector);\n        }\n\n        //  Create random vector, whose direction is 'originalVector', but deviated by random angle (whose interval is 0..maxAngle).\n        //  Use if you want deviate vector by a smal amount (e.g. debris thrown from projectile hit point)\n        public Vector3 GetNext(float maxAngle)\n        {\n            float resultTheta = MyMwcUtils.GetRandomFloat(-maxAngle, maxAngle);\n            float resultPhi = MyMwcUtils.GetRandomFloat(0, MathHelper.TwoPi);\n\t\t\t//  Convert to cartezian coordinates (XYZ)\n            Vector3 result = -new Vector3(\n                MyMath.FastSin(resultTheta) * MyMath.FastCos(resultPhi),\n                MyMath.FastSin(resultTheta) * MyMath.FastSin(resultPhi),\n                MyMath.FastCos(resultTheta)\n                );\n\n            return Vector3.TransformNormal(result, m_matrix);\n        }\n\n        //  One-time call\n        public static Vector3 GetRandom(Vector3 originalVector, float maxAngle)\n        {\n            MyUtilRandomVector3ByDeviatingVector rnd = new MyUtilRandomVector3ByDeviatingVector(originalVector);\n            return rnd.GetNext(maxAngle);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Utils/MyUtils.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Globalization;\nusing System.IO;\nusing System.Runtime.InteropServices;\nusing System.Text;\nusing System.Xml;\nusing KeenSoftwareHouse.Library.Extensions;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils.Utils;\n\n//using MinerWarsMath;\n//using MinerWarsMath.Graphics;\n\nusing SharpDX;\nusing SharpDX.Direct3D9;\nusing SharpDX.Toolkit;\nusing SharpDX.Toolkit.Graphics;\n\nnamespace MinerWars.AppCode.Game.Utils\n{\n    using Vector2 = MinerWarsMath.Vector2;\n    using Vector3 = MinerWarsMath.Vector3;\n    using Vector4 = MinerWarsMath.Vector4;\n    using Rectangle = MinerWarsMath.Rectangle;\n    using Matrix = MinerWarsMath.Matrix;\n    using Color = MinerWarsMath.Color;\n    using BoundingBox = MinerWarsMath.BoundingBox;\n    using BoundingSphere = MinerWarsMath.BoundingSphere;\n    using BoundingFrustum = MinerWarsMath.BoundingFrustum;\n    using MathHelper = MinerWarsMath.MathHelper;\n\n    static class MyUtils\n    {\n        [DllImport(\"kernel32\")]\n        public static extern bool SetProcessWorkingSetSize(IntPtr handle, int minSize, int maxSize);\n\n        public static readonly Matrix ZeroMatrix = new Matrix(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\n\n        //  Clamps velocity (vector3) so its length is never longer than maxSpeed\n        public static void GetClampVelocity(ref Vector3 velocity, float maxSpeed)\n        {\n            if (velocity.Length() > maxSpeed)\n            {\n                velocity = MyMwcUtils.Normalize(velocity);\n                velocity.X *= maxSpeed;\n                velocity.Y *= maxSpeed;\n                velocity.Z *= maxSpeed;\n            }\n        }\n\n        //moved from VF_Packer Class (originally in MyVertexFormats.cs, now in MyVertexFormatPacker.cs)\n        static public Vector3 RepackVoxelPosition(ref Vector3 position)\n        {\n            MyShort4 voxelPos;\n            voxelPos.X = (short)(MyVertexCompression.VOXEL_MULTIPLIER * position.X - MyVertexCompression.VOXEL_OFFSET + MyVertexCompression.VOXEL_COORD_EPSILON);\n            voxelPos.Y = (short)(MyVertexCompression.VOXEL_MULTIPLIER * position.Y - MyVertexCompression.VOXEL_OFFSET + MyVertexCompression.VOXEL_COORD_EPSILON);\n            voxelPos.Z = (short)(MyVertexCompression.VOXEL_MULTIPLIER * position.Z - MyVertexCompression.VOXEL_OFFSET + MyVertexCompression.VOXEL_COORD_EPSILON);\n\n            return MyVertexCompression.INV_VOXEL_MULTIPLIER * new Vector3(voxelPos.X + MyVertexCompression.VOXEL_OFFSET,\n                                                                            voxelPos.Y + MyVertexCompression.VOXEL_OFFSET,\n                                                                            voxelPos.Z + MyVertexCompression.VOXEL_OFFSET);\n        }\n\n        //  Clamps pitch to interval <0..2>. This are allowed values. Zero means no sound, one means default pitch, two means maximum pitch.\n        public static float GetClampVolume(float volume)\n        {\n            return MathHelper.Clamp(volume, 0, 2);\n        }\n\n        //  Clamps pitch to interval <-1..+1>. This are allowed values. Zero means default pitch, negative is low and positive is high sound.\n        public static float GetClampPitch(float pitch)\n        {\n            return MathHelper.Clamp(pitch, -1, +1);\n        }\n\n        public static string GetFormatedVector2(Vector2 vec, int decimalDigits)\n        {\n            return\n                \"{X: \" + MyValueFormatter.GetFormatedDouble(vec.X, decimalDigits) +\n                \" Y: \" + MyValueFormatter.GetFormatedDouble(vec.Y, decimalDigits) + \"}\";\n        }\n\n        public static StringBuilder GetFormatedVector3(this StringBuilder sb, string before, Vector3 value, string after = \"\")\n        {\n            sb.Clear();\n            sb.Append(before);\n            sb.Append(\"{\");\n            sb.ConcatFormat(\"{0: #,000} \", value.X);\n            sb.ConcatFormat(\"{0: #,000} \", value.Y);\n            sb.ConcatFormat(\"{0: #,000} \", value.Z);\n            sb.Append(\"}\");\n            sb.Append(after);\n            return sb;\n        }\n\n        public static string GetFormatedVector3(Vector3 vec, int decimalDigits)\n        {\n            return\n                \"{X: \" + MyValueFormatter.GetFormatedDouble(vec.X, decimalDigits) +\n                \" Y: \" + MyValueFormatter.GetFormatedDouble(vec.Y, decimalDigits) +\n                \" Z: \" + MyValueFormatter.GetFormatedDouble(vec.Z, decimalDigits) + \"}\";\n        }\n\n\n        public static string GetFormatedVector4(Vector4 vec, int decimalDigits)\n        {\n            return\n                \"{X: \" + MyValueFormatter.GetFormatedDouble(vec.X, decimalDigits) +\n                \" Y: \" + MyValueFormatter.GetFormatedDouble(vec.Y, decimalDigits) +\n                \" Z: \" + MyValueFormatter.GetFormatedDouble(vec.Z, decimalDigits) +\n                \" W: \" + MyValueFormatter.GetFormatedDouble(vec.W, decimalDigits) + \"}\";\n        }\n\n        public static string GetFormatedVector2Int(MyMwcVector2Int vec)\n        {\n            return\n                \"{X: \" + MyValueFormatter.GetFormatedInt(vec.X) +\n                \" Y: \" + MyValueFormatter.GetFormatedInt(vec.Y) + \"}\";\n        }\n\n        public static string GetFormatedVector3Int(MyMwcVector3Int vec)\n        {\n            return\n                \"{X: \" + MyValueFormatter.GetFormatedInt(vec.X) +\n                \" Y: \" + MyValueFormatter.GetFormatedInt(vec.Y) +\n                \" Z: \" + MyValueFormatter.GetFormatedInt(vec.Z) + \"}\";\n        }\n\n        public static string GetFormatedBoundingBox(BoundingBox boundingBox, int decimalDigits)\n        {\n            return \"Min: \" + MyUtils.GetFormatedVector3(boundingBox.Min, decimalDigits) + \", Max: \" + MyUtils.GetFormatedVector3(boundingBox.Max, decimalDigits);\n        }\n\n        public static BoundingBox GetNewBoundingBox(Vector3 position, Vector3 sizeInMetres)\n        {\n            return new BoundingBox(position, position + sizeInMetres);\n        }\n\n        public static string GetFormatedMatrix(Matrix matrix, int decimalDigits)\n        {\n            return\n                \"{Translation.X: \" + MyValueFormatter.GetFormatedDouble(matrix.Translation.X, decimalDigits) +\n                \" Translation.Y: \" + MyValueFormatter.GetFormatedDouble(matrix.Translation.Y, decimalDigits) +\n                \" Translation.Z: \" + MyValueFormatter.GetFormatedDouble(matrix.Translation.Z, decimalDigits) +\n                \" Forward.X: \" + MyValueFormatter.GetFormatedDouble(matrix.Forward.X, decimalDigits) +\n                \" Forward.Y: \" + MyValueFormatter.GetFormatedDouble(matrix.Forward.Y, decimalDigits) +\n                \" Forward.Z: \" + MyValueFormatter.GetFormatedDouble(matrix.Forward.Z, decimalDigits) + \"}\";\n        }\n\n        // Get the yaw,pitch and roll from a rotation matrix.\n        public static void RotationMatrixToYawPitchRoll(ref Matrix mx, out float yaw, out float pitch, out float roll)\n        {\n            float clamped = mx.M32;\n            if (clamped > 1) clamped = 1;\n            else if (clamped < -1) clamped = -1;\n            pitch = (float)Math.Asin(-clamped);\n            float threshold = 0.001f;\n            float test = (float)Math.Cos(pitch);\n            if (test > threshold)\n            {\n                roll = (float)Math.Atan2(mx.M12, mx.M22);\n                yaw = (float)Math.Atan2(mx.M31, mx.M33);\n            }\n            else\n            {\n                roll = (float)Math.Atan2(-mx.M21, mx.M11);\n                yaw = 0.0f;\n            }\n        }\n\n        public static void AssertTexture(MyTexture2D texture)\n        {\n            AssertTextureDxtCompress(texture);\n            AssertTextureMipMapped(texture);\n        }\n\n        static void AssertTextureDxtCompress(MyTexture2D texture)\n        {\n            MyCommonDebugUtils.AssertRelease(IsTextureDxtCompressed(texture));\n        }\n\n        static void AssertTextureMipMapped(MyTexture2D texture)\n        {\n            MyCommonDebugUtils.AssertRelease(IsTextureMipMapped(texture));\n        }\n\n        public static bool IsTextureDxtCompressed(MyTexture2D texture)\n        {\n            return texture.Format == Format.Dxt1 || texture.Format == Format.Dxt3 || texture.Format == Format.Dxt5;\n        }\n\n        public static bool IsTextureMipMapped(MyTexture2D texture)\n        {\n            return texture.Width == 4 || texture.Height == 4 || texture.LevelCount > 1;\n        }\n\n        //  IMPORTANT: Don't use Debug.Assert() that has two arguments (condition and message). Use only one that has condition.\n        //  IMPORTANT: It's because obfuscator encodes all string and if we run this assert offten, we always need to decode that string even if condition is OK.\n        //  IMPORTANT: Write assert details as comments where you call the assert. It's safer and faster.\n        //  Checks if Vector3 is correct (not NaN, etc)\n        //public static void AssertVector3(Vector3 vec)\n        //{\n        //    //  Check if 'One component of a vector is NaN'\n        //    System.Diagnostics.Debug.Assert((!float.IsNaN(vec.X)) && (!float.IsNaN(vec.Y)) && (!float.IsNaN(vec.Z)));\n        //}\n\n        //  Save 'Vector3' using binary writer\n        public static void BinaryWrite(BinaryWriter bw, ref Vector3 vector)\n        {\n            bw.Write(vector.X);\n            bw.Write(vector.Y);\n            bw.Write(vector.Z);\n        }\n\n        //  Save 'Matrix' using binary writer\n        public static void BinaryWrite(BinaryWriter bw, ref Matrix matrix)\n        {\n            bw.Write(matrix.M11);\n            bw.Write(matrix.M12);\n            bw.Write(matrix.M13);\n            bw.Write(matrix.M14);\n            bw.Write(matrix.M21);\n            bw.Write(matrix.M22);\n            bw.Write(matrix.M23);\n            bw.Write(matrix.M24);\n            bw.Write(matrix.M31);\n            bw.Write(matrix.M32);\n            bw.Write(matrix.M33);\n            bw.Write(matrix.M34);\n            bw.Write(matrix.M41);\n            bw.Write(matrix.M42);\n            bw.Write(matrix.M43);\n            bw.Write(matrix.M44);\n        }\n\n        //  Read 'Vector3' using binary reader\n        public static void BinaryRead(BinaryReader br, ref Vector3 vector)\n        {\n            vector.X = br.ReadSingle();\n            vector.Y = br.ReadSingle();\n            vector.Z = br.ReadSingle();\n        }\n\n        //  Read 'Matrix' using binary reader\n        public static void BinaryRead(BinaryReader br, ref Matrix matrix)\n        {\n            matrix.M11 = br.ReadSingle();\n            matrix.M12 = br.ReadSingle();\n            matrix.M13 = br.ReadSingle();\n            matrix.M14 = br.ReadSingle();\n            matrix.M21 = br.ReadSingle();\n            matrix.M22 = br.ReadSingle();\n            matrix.M23 = br.ReadSingle();\n            matrix.M24 = br.ReadSingle();\n            matrix.M31 = br.ReadSingle();\n            matrix.M32 = br.ReadSingle();\n            matrix.M33 = br.ReadSingle();\n            matrix.M34 = br.ReadSingle();\n            matrix.M41 = br.ReadSingle();\n            matrix.M42 = br.ReadSingle();\n            matrix.M43 = br.ReadSingle();\n            matrix.M44 = br.ReadSingle();\n        }\n\n        private static MyTextureAtlas LoadTextureAtlas(string textureDir, string atlasFile)\n        {\n            MyTextureAtlas atlas = new MyTextureAtlas(64);\n            using (StreamReader sr = new StreamReader(atlasFile))\n            {\n                while (!sr.EndOfStream)\n                {\n                    string line = sr.ReadLine();\n\n                    if (line.StartsWith(\"#\"))\n                        continue;\n                    if (line.Trim(' ').Length == 0)\n                        continue;\n\n                    string[] parts = line.Split(new char[] {' ', '\\t', ','}, StringSplitOptions.RemoveEmptyEntries );\n\n                    string name = parts[0];\n\n                    string atlasName = parts[1].Replace(\".dds\",\"\");\n\n                    Vector4 uv = new Vector4(\n                        Convert.ToSingle(parts[4], System.Globalization.CultureInfo.InvariantCulture),\n                        Convert.ToSingle(parts[5], System.Globalization.CultureInfo.InvariantCulture),\n                        Convert.ToSingle(parts[7], System.Globalization.CultureInfo.InvariantCulture),\n                        Convert.ToSingle(parts[8], System.Globalization.CultureInfo.InvariantCulture));\n\n                    MyTexture2D atlasTexture = MyTextureManager.GetTexture<MyTexture2D>(textureDir + atlasName);\n                    MyTextureAtlasItem item = new MyTextureAtlasItem(atlasTexture, uv);\n                    atlas.Add(name, item);\n                }\n            }\n\n            return atlas;\n        }\n\n\n        public static void LoadTextureAtlas(string[] enumsToStrings, string textureDir, string atlasFile, out MyTexture2D texture, out MyAtlasTextureCoordinate[] textureCoords)\n        {\n            //MyTextureAtlas atlas = contentManager.Load<MyTextureAtlas>(atlasFile);\n\n            MyTextureAtlas atlas = LoadTextureAtlas(textureDir, atlasFile);\n\n            //  Here we define particle texture coordinates inside of texture atlas\n            textureCoords = new MyAtlasTextureCoordinate[enumsToStrings.Length];\n\n            texture = null;\n\n            for (int i = 0; i < enumsToStrings.Length; i++)\n            {\n                MyTextureAtlasItem textureAtlasItem = atlas[enumsToStrings[i]];\n\n                textureCoords[i] = new MyAtlasTextureCoordinate(new Vector2(textureAtlasItem.UVOffsets.X, textureAtlasItem.UVOffsets.Y), new Vector2(textureAtlasItem.UVOffsets.Z, textureAtlasItem.UVOffsets.W));\n\n                //  Texture atlas content processor support having more DDS files for one atlas, but we don't want it (because we want to have all particles in one texture, so we can draw fast).\n                //  So here we just take first and only texture.\n                if (texture == null)\n                {\n                    texture = textureAtlasItem.AtlasTexture;\n                }\n            }\n        }\n\n        //  Used by Bresenham's rasterization\n        public static int GetBresenhamSgn(int a)\n        {\n            return a < 0 ? -1 : 1;\n        }\n\n        //  Scales 'originalVector' to length 'newLength'\n        //  IMPORTANT: This method should be used only on not-normalized vectores, because if vector is normalized, multiplication by new length is faster!!!\n        public static Vector3 GetVector3Scaled(Vector3 originalVector, float newLength)\n        {\n            if (newLength == 0.0f)\n            {\n                //\tV pripade ze chceme aby mal vektor nulovu dlzku, tak komponenty vektora zmenime\n                //\tna nulu rucne, lebo delenie nulou by sposobilo vznik neplatnych floatov a problemy!\n                return Vector3.Zero;\n            }\n            else\n            {\n                float originalLength = originalVector.Length();\n\n                //\tAk je dlzka povodneho vektora nulova, nema zmysel scalovat jeho dlzku\n                if (originalLength == 0.0f)\n                {\n                    return Vector3.Zero;\n                }\n\n                //  Return scaled vector\n                float mul = newLength / originalLength;\n                return new Vector3(originalVector.X * mul, originalVector.Y * mul, originalVector.Z * mul);\n            }\n        }\n\n        //  Converts spherical coordinates (horizontal and vertical angle) to cartesian coordinates (relative to sphere centre).\n        //  Use radius to specify sphere's radius (set to 1 if unit sphere).\n        //  Angles are in radians.\n        //  Input spherical coordinate system: horisontal is angle on XZ plane starting at -Z direction, vertical is angle on YZ plan, starting at -Z direction.\n        //  Output cartesian coordinate system: forward is -Z, up is +Y, right is +X\n        //  Formulas for conversion from/to spherical/cartezian are from: http://en.wikipedia.org/wiki/Spherical_coordinates\n        //  IMPORTANT: I don't know why I did \"angleVertical = MathHelper.PiOver2 - angleVertical;\", it isn't in wiki's formulas. Probably it has something\n        //  to di with background-cube billboards I use this method for.\n        //  IMPORTANT: This isn't correct version, because orientation of horizontal/vertical angles seems to be wrong. Correct is GetCartesianCoordinatesFromSpherical()\n        public static Vector3 GetCartesianCoordinatesFromSpherical_Weird(float angleHorizontal, float angleVertical, float radius)\n        {\n            angleVertical = MathHelper.PiOver2 - angleVertical;\n            return new Vector3(\n                (float)(radius * Math.Sin(angleVertical) * Math.Sin(angleHorizontal)),\n                (float)(radius * Math.Cos(angleVertical)),\n                (float)(radius * Math.Sin(angleVertical) * Math.Cos(angleHorizontal)));\n        }\n\n        //  Converts spherical coordinates (horizontal and vertical angle) to cartesian coordinates (relative to sphere centre).\n        //  Use radius to specify sphere's radius (set to 1 if unit sphere).\n        //  Angles are in radians.\n        //  Input spherical coordinate system: horisontal is angle on XZ plane starting at -Z direction, vertical is angle on YZ plan, starting at -Z direction.\n        //  Output cartesian coordinate system: forward is -Z, up is +Y, right is +X\n        //  Formulas for conversion from/to spherical/cartezian are from: http://en.wikipedia.org/wiki/Spherical_coordinates\n        //  IMPORTANT: This should be RIGHT version of this method, instead of GetCartesianCoordinatesFromSpherical_Weird()\n        public static Vector3 GetCartesianCoordinatesFromSpherical(float angleHorizontal, float angleVertical, float radius)\n        {\n            angleVertical = MathHelper.PiOver2 - angleVertical;\n            angleHorizontal = MathHelper.Pi - angleHorizontal;\n\n            return new Vector3(\n                (float)(radius * Math.Sin(angleVertical) * Math.Sin(angleHorizontal)),\n                (float)(radius * Math.Cos(angleVertical)),\n                (float)(radius * Math.Sin(angleVertical) * Math.Cos(angleHorizontal)));\n        }\n\n        //  Get spherical coordinates (angles) from normalized vector coordinates\n        //  This angles will be in right orientation, that is horizontal will begin at zero from FRONT direction in right side and same for vertical.\n        //  Use it together with GetCartesianCoordinatesFromSpherical()\n        public static Vector2 GetSphericalCoordinatesFromCartesian(ref Vector3 vector)\n        {\n            return new Vector2(\n                -(float)Math.Atan2(-vector.X, -vector.Z),\n                (float)Math.Atan2(vector.Y, Math.Sqrt(vector.Z * vector.Z + vector.X * vector.X)));\n        }\n\n        //  Calculating the Angle between two Vectors (return in radians)\n        //  Input vectors need to be normalized before calling this method.\n        public static float GetAngleBetweenVectors(Vector3 vectorA, Vector3 vectorB)\n        {\n            //  Calculate the cosine of the angle using the dot product\n            //  Use normalised vectors to simplify the formula\n            float cosAngle = Vector3.Dot(vectorA, vectorB);\n\n            //  Result from Vector3.Dot are sometime not accurate due to rounding errors, so sometime 0 degree angle is\n            //  calculated not as 1.0 but 1.00000001. We need to fix this, because ACOS accepts only number in range <-1, +1>\n            if ((cosAngle > 1.0f) && (cosAngle <= 1.0001f))\n            {\n                cosAngle = 1.0f;\n            }\n            if ((cosAngle < -1.0f) && (cosAngle >= -1.0001f))\n            {\n                cosAngle = -1.0f;\n            }\n\n            //  Calculate the angle in radians\n            return (float)Math.Acos(cosAngle);\n        }\n\n        public static float GetAngleBetweenVectorsAndNormalise(Vector3 vectorA, Vector3 vectorB)\n        {\n            return GetAngleBetweenVectors(Vector3.Normalize(vectorA), Vector3.Normalize(vectorB));\n        }\n\n        // rotuje souradnicouvou soustavu 2 vektoru a updatuje jejich pozici, vektory musi byt na sebe kolme\n        public static void VectorPlaneRotation(Vector3 xVector, Vector3 yVector, out Vector3 xOut, out Vector3 yOut, float angle)\n        {\n            Vector3 newX = xVector * (float)Math.Cos(angle) + yVector * (float)Math.Sin(angle);\n            Vector3 newY = xVector * (float)Math.Cos(angle + Math.PI / 2.0f) + yVector * (float)Math.Sin(angle + Math.PI / 2.0f);\n            xOut = newX;\n            yOut = newY;\n        }\n\n        //  Return quad whos face is always looking to the camera. \n        //  IMPORTANT: This bilboard looks same as point vertexes (point sprites) - horizontal and vertical axes of billboard are always parallel to screen\n        //  That means, if billboard is in the left-up corner of screen, it won't be distorted by perspective. If will look as 2D quad on screen. As I said, it's same as GPU points.\n        public static void GetBillboardQuadRotated(MyBillboard billboard, ref Vector3 position, float radius, float angle)\n        {\n            float angleCos = radius * (float)Math.Cos(angle);\n            float angleSin = radius * (float)Math.Sin(angle);\n\n            //\tTwo main vectors of a billboard rotated around the view axis/vector\n            Vector3 billboardAxisX = new Vector3();\n            billboardAxisX.X = angleCos * MyCamera.LeftVector.X + angleSin * MyCamera.UpVector.X;\n            billboardAxisX.Y = angleCos * MyCamera.LeftVector.Y + angleSin * MyCamera.UpVector.Y;\n            billboardAxisX.Z = angleCos * MyCamera.LeftVector.Z + angleSin * MyCamera.UpVector.Z;\n\n            Vector3 billboardAxisY = new Vector3();\n            billboardAxisY.X = -angleSin * MyCamera.LeftVector.X + angleCos * MyCamera.UpVector.X;\n            billboardAxisY.Y = -angleSin * MyCamera.LeftVector.Y + angleCos * MyCamera.UpVector.Y;\n            billboardAxisY.Z = -angleSin * MyCamera.LeftVector.Z + angleCos * MyCamera.UpVector.Z;\n\n            //\tCoordinates of four points of a billboard's quad\n            billboard.Position0.X = position.X + billboardAxisX.X + billboardAxisY.X;\n            billboard.Position0.Y = position.Y + billboardAxisX.Y + billboardAxisY.Y;\n            billboard.Position0.Z = position.Z + billboardAxisX.Z + billboardAxisY.Z;\n\n            billboard.Position1.X = position.X - billboardAxisX.X + billboardAxisY.X;\n            billboard.Position1.Y = position.Y - billboardAxisX.Y + billboardAxisY.Y;\n            billboard.Position1.Z = position.Z - billboardAxisX.Z + billboardAxisY.Z;\n\n            billboard.Position2.X = position.X - billboardAxisX.X - billboardAxisY.X;\n            billboard.Position2.Y = position.Y - billboardAxisX.Y - billboardAxisY.Y;\n            billboard.Position2.Z = position.Z - billboardAxisX.Z - billboardAxisY.Z;\n\n            billboard.Position3.X = position.X + billboardAxisX.X - billboardAxisY.X;\n            billboard.Position3.Y = position.Y + billboardAxisX.Y - billboardAxisY.Y;\n            billboard.Position3.Z = position.Z + billboardAxisX.Z - billboardAxisY.Z;\n        }\n\n        //  Return quad whos face is always looking to the camera. \n        //  IMPORTANT: This bilboard looks same as point vertexes (point sprites) - horizontal and vertical axes of billboard are always parallel to screen\n        //  That means, if billboard is in the left-up corner of screen, it won't be distorted by perspective. If will look as 2D quad on screen. As I said, it's same as GPU points.\n        public static void GetBillboardQuadRotated(out MyQuad quad, Vector3 position, float radius, float angle,\n            Vector3 cameraLeftVector, Vector3 cameraUpVector)\n        {\n            float angleCos = (float)Math.Cos(angle);\n            float angleSin = (float)Math.Sin(angle);\n\n            //\tTwo main vectors of a billboard rotated around the view axis/vector\n            Vector3 billboardAxisX = (radius * angleCos) * cameraLeftVector + (radius * angleSin) * cameraUpVector;\n            Vector3 billboardAxisY = (-radius * angleSin) * cameraLeftVector + (radius * angleCos) * cameraUpVector;\n\n            //\tCoordinates of four points of a billboard's quad\n            quad.Point0 = position + billboardAxisX + billboardAxisY;\n            quad.Point1 = position - billboardAxisX + billboardAxisY;\n            quad.Point2 = position - billboardAxisX - billboardAxisY;\n            quad.Point3 = position + billboardAxisX - billboardAxisY;\n        }\n\n        //  Same as GetBillboardQuadRotated(), but without rotation.\n        public static void GetBillboardQuad(out MyQuad quad, Vector3 position, float radius, Vector3 cameraLeftVector, Vector3 cameraUpVector)\n        {\n            Vector3 billboardAxisX = cameraLeftVector * radius;\n            Vector3 billboardAxisY = cameraUpVector * radius;\n\n            //\tCoordinates of four points of a billboard's quad\n            quad.Point0 = position + billboardAxisX + billboardAxisY;\n            quad.Point1 = position - billboardAxisX + billboardAxisY;\n            quad.Point2 = position - billboardAxisX - billboardAxisY;\n            quad.Point3 = position + billboardAxisX - billboardAxisY;\n        }\n\n        //  This billboard isn't facing the camera. It's always oriented in specified direction. May be used as thrusts, or inner light of reflector.\n        public static void GetBillboardQuadOriented(out MyQuad quad, ref Vector3 position, float radius, ref Vector3 leftVector, ref Vector3 upVector)\n        {\n            Vector3 billboardAxisX = leftVector * radius;\n            Vector3 billboardAxisY = upVector * radius;\n\n            //\tCoordinates of four points of a billboard's quad\n            quad.Point0 = position + billboardAxisX + billboardAxisY;\n            quad.Point1 = position + billboardAxisX - billboardAxisY;\n            quad.Point2 = position - billboardAxisX - billboardAxisY;\n            quad.Point3 = position - billboardAxisX + billboardAxisY;\n        }\n\n        //  This billboard isn't facing the camera. It's always oriented in specified direction. May be used as thrusts, or inner light of reflector.\n        public static void GetBillboardQuadOriented(out MyQuad quad, ref Vector3 position, float width, float height, ref Vector3 leftVector, ref Vector3 upVector)\n        {\n            Vector3 billboardAxisX = leftVector * width;\n            Vector3 billboardAxisY = upVector * height;\n\n            //\tCoordinates of four points of a billboard's quad\n            quad.Point0 = position + billboardAxisX + billboardAxisY;\n            quad.Point1 = position + billboardAxisX - billboardAxisY;\n            quad.Point2 = position - billboardAxisX - billboardAxisY;\n            quad.Point3 = position - billboardAxisX + billboardAxisY;\n        }\n\n\n        /// <summary>\n        /// Generate oriented quad by matrix\n        /// </summary>\n        /// <param name=\"quad\"></param>\n        /// <param name=\"position\"></param>\n        /// <param name=\"width\"></param>\n        /// <param name=\"height\"></param>\n        /// <param name=\"matrix\"></param>\n        public static void GenerateQuad(out MyQuad quad, ref Vector3 position, float width, float height, ref Matrix matrix)\n        {\n            Vector3 billboardAxisX = matrix.Left * width;\n            Vector3 billboardAxisY = matrix.Up * height;\n\n            //\tCoordinates of four points of a billboard's quad\n            quad.Point0 = position + billboardAxisX + billboardAxisY;\n            quad.Point1 = position + billboardAxisX - billboardAxisY;\n            quad.Point2 = position - billboardAxisX - billboardAxisY;\n            quad.Point3 = position - billboardAxisX + billboardAxisY;\n        }\n\n        //  Return quad whos face is always looking to the camera. This is the real billboard, with perspective distortions!\n        //  Billboard's orientation is calculated by projecting unit sphere's north pole to billboard's plane. From this we can get up/right vectors.\n        //  Idea is this: if camera is in the middle of unit sphere and billboard is touching this sphere at some place (still unit sphere), we\n        //  know billboard's plan is perpendicular to the sphere, so if we want billboard's orientation to be like earth's latitude and Colatitude,\n        //  we need to find billboard's up vector in the direction. This is when projection cames into place.\n        //  Notice that we don't need camera left/up vector. We only need camera position. Because it's about the sphere around the player. Not camera orientation.\n        //  IMPORTANT: One problem of this approach is that if billboard is right above the player, its orientation will swing. Thats because we are projecting\n        //  Rotation is around vector pointing from camera position to center of the billboard.\n        //  the point, but it ends right in the billboard's centre.\n        //  So we not use this for particles. We use it only for background sphere (starts, galaxies) prerender.\n        //  Return false if billboard wasn't for any reason created (e.g. too close to the camera)\n        public static bool GetBillboardQuadAdvancedRotated(out MyQuad quad, Vector3 position, float radiusX, float radiusY, float angle, Vector3 cameraPosition)\n        {\n            //  Optimized: Vector3 dirVector = MyMwcUtils.Normalize(position - cameraPosition);\n            Vector3 dirVector;\n            dirVector.X = position.X - cameraPosition.X;\n            dirVector.Y = position.Y - cameraPosition.Y;\n            dirVector.Z = position.Z - cameraPosition.Z;\n\n            // If distance to camera is really small don't draw it.\n            if (dirVector.LengthSquared() <= MyMwcMathConstants.EPSILON)\n            {\n                //  Some empty quad\n                quad = new MyQuad();\n                return false;\n            }\n\n            dirVector = MyMwcUtils.Normalize(dirVector);\n\n            Vector3 projectedPoint;\n            ProjectPointOnPlane(ref MyConstants.VECTOR3_UP, ref dirVector, out projectedPoint);\n\n            Vector3 upVector;\n            if (projectedPoint.LengthSquared() <= MyMwcMathConstants.EPSILON_SQUARED)\n            {\n                //  If projected point equals to zero, we know billboard is exactly above or bottom of camera \n                //  and we can't calculate proper orientation. So we just select some direction. Good thing we\n                //  know is that billboard's plan ix XY, so we can choose any point on this plane\n                upVector = Vector3.Forward;\n            }\n            else\n            {\n                //  Optimized: upVector = MyMwcUtils.Normalize(projectedPoint);\n                MyMwcUtils.Normalize(ref projectedPoint, out upVector);\n            }\n\n            //  Optimized: Vector3 leftVector = MyMwcUtils.Normalize(Vector3.Cross(upVector, dirVector));\n            Vector3 leftVector;\n            Vector3.Cross(ref upVector, ref dirVector, out leftVector);\n            leftVector = MyMwcUtils.Normalize(leftVector);\n\n            //\tTwo main vectors of a billboard rotated around the view axis/vector\n            float angleCos = MyMath.FastCos(angle);\n            float angleSin = MyMath.FastSin(angle);\n\n            Vector3 billboardAxisX;\n            billboardAxisX.X = (radiusX * angleCos) * leftVector.X + (radiusY * angleSin) * upVector.X;\n            billboardAxisX.Y = (radiusX * angleCos) * leftVector.Y + (radiusY * angleSin) * upVector.Y;\n            billboardAxisX.Z = (radiusX * angleCos) * leftVector.Z + (radiusY * angleSin) * upVector.Z;\n\n            Vector3 billboardAxisY;\n            billboardAxisY.X = (-radiusX * angleSin) * leftVector.X + (radiusY * angleCos) * upVector.X;\n            billboardAxisY.Y = (-radiusX * angleSin) * leftVector.Y + (radiusY * angleCos) * upVector.Y;\n            billboardAxisY.Z = (-radiusX * angleSin) * leftVector.Z + (radiusY * angleCos) * upVector.Z;\n\n            //\tCoordinates of four points of a billboard's quad\n            quad.Point0.X = position.X + billboardAxisX.X + billboardAxisY.X;\n            quad.Point0.Y = position.Y + billboardAxisX.Y + billboardAxisY.Y;\n            quad.Point0.Z = position.Z + billboardAxisX.Z + billboardAxisY.Z;\n\n            quad.Point1.X = position.X - billboardAxisX.X + billboardAxisY.X;\n            quad.Point1.Y = position.Y - billboardAxisX.Y + billboardAxisY.Y;\n            quad.Point1.Z = position.Z - billboardAxisX.Z + billboardAxisY.Z;\n\n            quad.Point2.X = position.X - billboardAxisX.X - billboardAxisY.X;\n            quad.Point2.Y = position.Y - billboardAxisX.Y - billboardAxisY.Y;\n            quad.Point2.Z = position.Z - billboardAxisX.Z - billboardAxisY.Z;\n\n            quad.Point3.X = position.X + billboardAxisX.X - billboardAxisY.X;\n            quad.Point3.Y = position.Y + billboardAxisX.Y - billboardAxisY.Y;\n            quad.Point3.Z = position.Z + billboardAxisX.Z - billboardAxisY.Z;\n\n            return true;\n        }\n\n        public static bool GetBillboardQuadAdvancedRotated(out MyQuad quad, Vector3 position, float radius, float angle, Vector3 cameraPosition)\n        {\n            return GetBillboardQuadAdvancedRotated(out quad, position, radius, radius, angle, cameraPosition);\n        }\n\n        //  Calculates coordinates for quad that lies on line defined by two points and is always facing the camera. It thickness is defined in metres.\n        //  It is used for drawing bullet lines, debris flying from explosions, anything that isn't quad but is line.\n        //  IMPORTANT: Parameter 'polyLine' is refed only for performance. Don't change it inside the method.\n        public static void GetPolyLineQuad(out MyQuad retQuad, ref MyPolyLine polyLine)\n        {\n            Vector3 toCamera = MyCamera.Position - polyLine.Point0;\n            Vector3 cameraToPoint;\n            if (!MyMwcUtils.HasValidLength(toCamera))\n            {\n                // When camera at point, choose random direction\n                cameraToPoint = Vector3.Forward;\n            }\n            else\n            {\n                cameraToPoint = MyMwcUtils.Normalize(toCamera);\n            }\n            Vector3 sideVector = GetVector3Scaled(Vector3.Cross(polyLine.LineDirectionNormalized, cameraToPoint), polyLine.Thickness);\n\n            retQuad.Point0 = polyLine.Point0 - sideVector;\n            retQuad.Point1 = polyLine.Point1 - sideVector;\n            retQuad.Point2 = polyLine.Point1 + sideVector;\n            retQuad.Point3 = polyLine.Point0 + sideVector;\n        }\n\n        //  Calculates coordinates for quad that lies on line defined by two points and is always facing the camera. It thickness is defined in metres.\n        //  It is used for drawing bullet lines, debris flying from explosions, anything that isn't quad but is line.\n        //  IMPORTANT: Parameter 'polyLine' is refed only for performance. Don't change it inside the method.\n        public static void GetPolyLineQuad(out MyQuad retQuad, ref MyPolyLine polyLine, Vector3 cameraPosition)\n        {\n            Vector3 cameraToPoint = MyMwcUtils.Normalize(cameraPosition - polyLine.Point0);\n            Vector3 sideVector = GetVector3Scaled(Vector3.Cross(polyLine.LineDirectionNormalized, cameraToPoint), polyLine.Thickness);\n\n            retQuad.Point0 = polyLine.Point0 - sideVector;\n            retQuad.Point1 = polyLine.Point1 - sideVector;\n            retQuad.Point2 = polyLine.Point1 + sideVector;\n            retQuad.Point3 = polyLine.Point0 + sideVector;\n        }\n\n        //  Simple overload for cases when it doesn't make sense to use 'ref' on one of the input parameters\n        public static void ProjectPointOnPlane(\n            ref Vector3 p,\t\t\t\t//\tBod ktory chceme projektovat na rovinu\n            Vector3 normal,\t\t\t//\tNormala roviny\n            out Vector3 ret\n            )\n        {\n            ProjectPointOnPlane(ref p, ref normal, out ret);\n        }\n\n        //\tProjekcia bodu na rovinu. Pozor! Tuto funkciu sme zatial nepouzili, otestovana je iba ciastocne.\n        //\tJe ukradnuta z Wolf zdrojakov. Trosku zvlastne je, ze na definovanie roviny staci iba jej normala a ziaden\n        //\torigin, alebo distance k bodu nula. Preto asi treba k vyslednemu bodu \"dst\" pripocitat origin roviny.\n        //\tAle riadne to otestuj, alebo ukradni tuto funkciu od inakadial.\n        public static void ProjectPointOnPlane(\n            ref Vector3 p,\t\t\t\t//\tBod ktory chceme projektovat na rovinu\n            ref Vector3 normal,\t\t\t//\tNormala roviny\n            out Vector3 ret\n            )\n        {\n            //  Optimized: float inv_denom = 1.0f / Vector3.Dot(normal, normal);\n            float invDenom;\n            Vector3.Dot(ref normal, ref normal, out invDenom);\n            invDenom = 1.0f / invDenom;\n\n            //  Optimized: float d = Vector3.Dot(normal, p) * inv_denom;\n            float d;\n            Vector3.Dot(ref normal, ref p, out d);\n            d = d * invDenom;\n\n            //  Optimized: Vector3 n = normal * inv_denom;\n            Vector3 n;\n            n.X = normal.X * invDenom;\n            n.Y = normal.Y * invDenom;\n            n.Z = normal.Z * invDenom;\n\n            //  Optimized: return p - d * n;\n            ret.X = p.X - d * n.X;\n            ret.Y = p.Y - d * n.Y;\n            ret.Z = p.Z - d * n.Z;\n        }\n\n        //\tThis method calculated vector perpendicular to vector \"src\". Because this problem has infinite numner\n        //  of solutions, this method returns only one of them, which lucky is very good.\n        //  Returned vector is normalized. I guess source vector must be normalized before passed to this method.\n        public static void GetPerpendicularVector(ref Vector3 src, out Vector3 ret)\n        {\n            float absX = Math.Abs(src.X);\n            float absY = Math.Abs(src.Y);\n            float absZ = Math.Abs(src.Z);\n\n            const int SMALLEST_COMPONENT_X = 0;\n            const int SMALLEST_COMPONENT_Y = 1;\n            const int SMALLEST_COMPONENT_Z = 2;\n\n            int smallestComponent = SMALLEST_COMPONENT_X;\n            float minelem = absX;\n\n            //  Find the smallest magnitude axially aligned vector\n            if (absY < minelem)\n            {\n                smallestComponent = SMALLEST_COMPONENT_Y;\n                minelem = absY;\n            }\n            if (absZ < minelem)\n            {\n                smallestComponent = SMALLEST_COMPONENT_Z;\n            }\n\n            Vector3 tempvec = Vector3.Zero;\n            if (smallestComponent == SMALLEST_COMPONENT_X)\n            {\n                tempvec.X = 1.0f;\n            }\n            else if (smallestComponent == SMALLEST_COMPONENT_Y)\n            {\n                tempvec.Y = 1.0f;\n            }\n            else if (smallestComponent == SMALLEST_COMPONENT_Z)\n            {\n                tempvec.Z = 1.0f;\n            }\n\n            //  Project the point onto the plane defined by src and normalize the result\n            ProjectPointOnPlane(ref tempvec, ref src, out ret);\n            ret = MyMwcUtils.Normalize(ret);\n        }\n\n        //  This is just a wrapper for Vector3.Transform\n        public static Vector3 GetTransform(Vector3 vec, ref Matrix matrix)\n        {\n            Vector3 ret;\n            Vector3.Transform(ref vec, ref matrix, out ret);\n            return ret;\n        }\n\n        //  This is just a wrapper for Vector3.Transform\n        public static Vector3 GetTransform(ref Vector3 vec, ref Matrix matrix)\n        {\n            Vector3 ret;\n            Vector3.Transform(ref vec, ref matrix, out ret);\n            return ret;\n        }\n\n        //  This is just a wrapper for Vector3.TransformNormal\n        public static Vector3 GetTransformNormal(Vector3 vec, ref Matrix matrix)\n        {\n            Vector3 ret;\n            Vector3.TransformNormal(ref vec, ref matrix, out ret);\n            return ret;\n        }\n\n        //  This is just a wrapper for Vector3.TransformNormal + result is normalized\n        public static Vector3 GetTransformNormalNormalized(Vector3 vec, ref Matrix matrix)\n        {\n            Vector3 ret;\n            Vector3.TransformNormal(ref vec, ref matrix, out ret);\n            ret = MyMwcUtils.Normalize(ret);\n            return ret;\n        }\n\n        //\tVrati najkratsiu vzdialenost medzi bodom a rovinou (definovanou normalou a lubovolnym bodom na rovine).\n        //\tMoze vratit aj zapornu vzdialenost, pokial sa bod nachadza na opacnej strane roviny nez ukazuje normalovy vektor.\n        //\tPredpokladame ze, normalovy vektor je normalizovany.\n        public static float GetDistanceFromPointToPlane(Vector3 point, ref MyPlane plane)\n        {\n            return\n                 plane.Normal.X * (point.X - plane.Point.X) +\n                 plane.Normal.Y * (point.Y - plane.Point.Y) +\n                 plane.Normal.Z * (point.Z - plane.Point.Z);\n        }\n\n        //\tVrati najkratsiu vzdialenost medzi bodom a rovinou (definovanou normalou a lubovolnym bodom na rovine).\n        //\tMoze vratit aj zapornu vzdialenost, pokial sa bod nachadza na opacnej strane roviny nez ukazuje normalovy vektor.\n        //\tPredpokladame ze, normalovy vektor je normalizovany.\n        public static float GetDistanceFromPointToPlane(ref Vector3 point, ref MyPlane plane)\n        {\n            return\n                 plane.Normal.X * (point.X - plane.Point.X) +\n                 plane.Normal.Y * (point.Y - plane.Point.Y) +\n                 plane.Normal.Z * (point.Z - plane.Point.Z);\n        }\n\n        //  Calculates distance from point 'from' to boundary of 'sphere'. If point is inside the sphere, distance will be negative.\n        public static float GetSmallestDistanceToSphere(ref Vector3 from, ref BoundingSphere sphere)\n        {\n            return Vector3.Distance(from, sphere.Center) - sphere.Radius;\n        }\n\n        //  Calculates distance from point 'from' to boundary of 'sphere'. If point is inside the sphere, distance will be zero (this is the diference against GetSmallestDistanceToSphere)\n        public static float GetSmallestDistanceToSphereAlwaysPositive(ref Vector3 from, ref BoundingSphere sphere)\n        {\n            float distance = GetSmallestDistanceToSphere(ref from, ref sphere);\n            if (distance < 0) distance = 0;\n            return distance;\n        }\n\n        //  Distance between \"from\" and opposite side of the \"sphere\". Always positive.\n        public static float GetLargestDistanceToSphere(ref Vector3 from, ref BoundingSphere sphere)\n        {\n            return Vector3.Distance(from, sphere.Center) + sphere.Radius;\n        }\n\n        //  Calculates distance from boundary of one sphere to boundary of another sphere. If spheres intersects, distance will be negative.\n        public static float GetDistanceBetweenSpheres(ref BoundingSphere sphere1, ref BoundingSphere sphere2)\n        {\n            return (Vector3.Distance(sphere1.Center, sphere2.Center) - (sphere1.Radius + sphere2.Radius));\n        }\n\n        //  Calculates distance from boundary of one sphere to boundary of another sphere. If spheres intersects, distance will be zero.\n        public static float GetDistanceBetweenSpheresAbsolute(ref BoundingSphere sphere1, ref BoundingSphere sphere2)\n        {\n            float distance = GetDistanceBetweenSpheres(ref sphere1, ref sphere2);\n            if (distance < 0) distance = 0;\n            return distance;\n        }\n\n        //\tThis tells if a sphere is BEHIND, in FRONT, or INTERSECTS a plane, also it's distance\n        public static MySpherePlaneIntersectionEnum GetSpherePlaneIntersection(ref BoundingSphere sphere, ref MyPlane plane, out float distanceFromPlaneToSphere)\n        {\n            //  First we need to find the distance our polygon plane is from the origin.\n            float planeDistance = plane.GetPlaneDistance();\n\n            //  Here we use the famous distance formula to find the distance the center point\n            //  of the sphere is from the polygon's plane.  \n            distanceFromPlaneToSphere = (plane.Normal.X * sphere.Center.X + plane.Normal.Y * sphere.Center.Y + plane.Normal.Z * sphere.Center.Z + planeDistance);\n\n            //  If the absolute value of the distance we just found is less than the radius, \n            //  the sphere intersected the plane.\n            if (Math.Abs(distanceFromPlaneToSphere) < sphere.Radius)\n            {\n                return MySpherePlaneIntersectionEnum.INTERSECTS;\n            }\n            else if (distanceFromPlaneToSphere >= sphere.Radius)\n            {\n                //  Else, if the distance is greater than or equal to the radius, the sphere is\n                //  completely in FRONT of the plane.\n                return MySpherePlaneIntersectionEnum.FRONT;\n            }\n\n            //  If the sphere isn't intersecting or in FRONT of the plane, it must be BEHIND\n            return MySpherePlaneIntersectionEnum.BEHIND;\n        }\n\n        //  This check if sphere and triangleVertexes are in intersection - but this version isn't correct as it check only vertexes and not edges.\n        //  Thus if sphere doesn't intersect any vertex, but does intersect one edge, this method will not detect it. But is fast.\n        public static bool GetSphereTriangleIntersectionFast(ref BoundingSphere sphere, ref MyTriangle_Vertexes triangle)\n        {\n            float dist0;\n            Vector3.Distance(ref triangle.Vertex0, ref sphere.Center, out dist0);\n            if (dist0 <= sphere.Radius) return true;\n\n            float dist1;\n            Vector3.Distance(ref triangle.Vertex1, ref sphere.Center, out dist1);\n            if (dist1 <= sphere.Radius) return true;\n\n            float dist2;\n            Vector3.Distance(ref triangle.Vertex2, ref sphere.Center, out dist2);\n            if (dist2 <= sphere.Radius) return true;\n\n            return false;\n        }\n\n        //  Method returns intersection point between sphere and triangle (which is defined by vertexes and plane).\n        //  If no intersection found, method returns null.\n        //  See below how intersection point can be calculated, because it's not so easy - for example sphere vs. triangle will \n        //  hardly generate just intersection point... more like intersection area or something.\n        public static Vector3? GetSphereTriangleIntersection(ref BoundingSphere sphere, ref MyPlane trianglePlane, ref MyTriangle_Vertexes triangle)\n        {\n            //\tVzdialenost gule od roviny trojuholnika\n            float distance;\n\n            //\tZistim, ci sa gula nachadza pred alebo za rovinou trojuholnika, alebo ju presekava\n            MySpherePlaneIntersectionEnum spherePlaneIntersection = GetSpherePlaneIntersection(ref sphere, ref trianglePlane, out distance);\n\n            //\tAk gula presekava rovinu, tak hladam pseudo-priesecnik\n            if (spherePlaneIntersection == MySpherePlaneIntersectionEnum.INTERSECTS)\n            {\n                //\tOffset ktory pomoze vypocitat suradnicu stredu gule premietaneho na rovinu trojuholnika\n                Vector3 offset = trianglePlane.Normal * distance;\n\n                //\tPriesecnik na rovine trojuholnika, je to premietnuty stred gule na rovine trojuholnika\n                Vector3 intersectionPoint;\n                intersectionPoint.X = sphere.Center.X - offset.X;\n                intersectionPoint.Y = sphere.Center.Y - offset.Y;\n                intersectionPoint.Z = sphere.Center.Z - offset.Z;\n\n                if (GetInsidePolygonForSphereCollision(ref intersectionPoint, ref triangle))\t\t//\tAk priesecnik nachadza v trojuholniku\n                {\n                    //\tToto je pripad, ked sa podarilo premietnut stred gule na rovinu trojuholnika a tento priesecnik sa\n                    //\tnachadza vnutri trojuholnika (tzn. sedia uhly)\n                    return intersectionPoint;\n                }\n                else\t\t\t\t\t\t\t\t\t\t\t\t\t//\tAk sa priesecnik nenachadza v trojuholniku, este stale sa moze nachadzat na hrane trojuholnika\n                {\n                    Vector3? edgeIntersection = GetEdgeSphereCollision(ref sphere.Center, sphere.Radius / 1.0f, ref triangle);\n                    if (edgeIntersection != null)\n                    {\n                        //\tToto je pripad, ked sa priemietnuty stred gule nachadza mimo trojuholnika, ale intersection gule a trojuholnika tam\n                        //\tje, pretoze gula presekava jednu z hran trojuholnika. Takze vratim suradnice priesecnika na jednej z hran.\n                        return edgeIntersection.Value;\n                    }\n                }\n            }\n\n            //\tSphere doesn't collide with any triangle\n            return null;\n        }\n\n        //\tReturn true if point is inside the triangle.\n        public static bool GetInsidePolygonForSphereCollision(ref Vector3 point, ref MyTriangle_Vertexes triangle)\n        {\n            const float MATCH_FACTOR = 0.99f;\t\t// Used to cover up the error in floating point\n            float angle = 0.0f;\t\t\t\t\t\t// Initialize the angle\n\n            //\tSpocitame uhol medzi bodmi trojuholnika a intersection bodu (ale na vypocet uhlov pouzivame funkciu ktora je\n            //\tbezpecna aj pre sphere coldet, problem so SafeACos())\n            angle += GetAngleBetweenVectorsForSphereCollision(triangle.Vertex0 - point, triangle.Vertex1 - point);\t// Find the angle between the 2 vectors and add them all up as we go along\n            angle += GetAngleBetweenVectorsForSphereCollision(triangle.Vertex1 - point, triangle.Vertex2 - point);\t// Find the angle between the 2 vectors and add them all up as we go along\n            angle += GetAngleBetweenVectorsForSphereCollision(triangle.Vertex2 - point, triangle.Vertex0 - point);\t// Find the angle between the 2 vectors and add them all up as we go along\n\n            if (angle >= (MATCH_FACTOR * (2.0 * MathHelper.Pi)))\t// If the angle is greater than 2 PI, (360 degrees)\n            {\n                return true;\t\t\t\t\t\t\t// The point is inside of the polygon\n            }\n\n            return false;\t\t\t\t\t\t\t\t// If you get here, it obviously wasn't inside the polygon, so Return FALSE\n        }\n\n        //\tVrati uhol medzi dvoma vektormi. Tuto funkciu pouzivam cisto na vypocet kolizii medzi sphere a \n        //\ttrojuholnikmy. Dovod je zvysena bezpecnost, aby sa nestalo ze sa player zasekne v trojuholniku. Suvisi\n        //\tto s vypoctom acos(). Funkcia M_SafeACos() je sice vhodnejsia na line-triangleVertexes intersekcie, ale menej\n        //\tvhodna na sphere-triangleVertexes.\n        public static float GetAngleBetweenVectorsForSphereCollision(Vector3 vector1, Vector3 vector2)\n        {\n            //\tGet the dot product of the vectors\n            float dotProduct = Vector3.Dot(vector1, vector2);\n\n            //\tGet the product of both of the vectors magnitudes\n            float vectorsMagnitude = vector1.Length() * vector2.Length();\n\n            float angle = (float)Math.Acos(dotProduct / vectorsMagnitude);\n\n            //\tAk bol parameter pre acos() nie v ramci intervalo -1 az +1, tak to je zle, a funkcia musi vratit 0\n            if (float.IsNaN(angle) == true)\n            {\n                return 0.0f;\n            }\n\n            //\tVysledny uhol\n            return angle;\n        }\n\n        //\tReturns intersection point between sphere and its edges. But only if there is intersection between sphere and one of the edges.\n        //  If sphere intersects somewhere inside the triangle, this method will not detect it.\n        public static Vector3? GetEdgeSphereCollision(ref Vector3 sphereCenter, float sphereRadius, ref MyTriangle_Vertexes triangle)\n        {\n            Vector3 intersectionPoint;\n\n            // This returns the closest point on the current edge to the center of the sphere.\n            intersectionPoint = GetClosestPointOnLine(ref triangle.Vertex0, ref triangle.Vertex1, ref sphereCenter);\n\n            // Now, we want to calculate the distance between the closest point and the center\n            float distance1 = Vector3.Distance(intersectionPoint, sphereCenter);\n\n            // If the distance is less than the radius, there must be a collision so return true\n            if (distance1 < sphereRadius)\n            {\n                return intersectionPoint;\n            }\n\n            // This returns the closest point on the current edge to the center of the sphere.\n            intersectionPoint = GetClosestPointOnLine(ref triangle.Vertex1, ref triangle.Vertex2, ref sphereCenter);\n\n            // Now, we want to calculate the distance between the closest point and the center\n            float distance2 = Vector3.Distance(intersectionPoint, sphereCenter);\n\n            // If the distance is less than the radius, there must be a collision so return true\n            if (distance2 < sphereRadius)\n            {\n                return intersectionPoint;\n            }\n\n            // This returns the closest point on the current edge to the center of the sphere.\n            intersectionPoint = GetClosestPointOnLine(ref triangle.Vertex2, ref triangle.Vertex0, ref sphereCenter);\n\n            // Now, we want to calculate the distance between the closest point and the center\n            float distance3 = Vector3.Distance(intersectionPoint, sphereCenter);\n\n            // If the distance is less than the radius, there must be a collision so return true\n            if (distance3 < sphereRadius)\n            {\n                return intersectionPoint;\n            }\n\n            // The was no intersection of the sphere and the edges of the polygon\n            return null;\n        }\n\n        public static float GetPointLineDistance(ref MyLine line, ref Vector3 point)\n        {\n            return GetPointLineDistance(ref line.From, ref line.To, ref point);\n        }\n\n        public static float GetPointLineDistance(ref Vector3 linePointA, ref Vector3 linePointB, ref Vector3 point)\n        {\n            Vector3 line = linePointB - linePointA;\n            return Vector3.Cross(line, point - linePointA).Length() / line.Length();\n        }\n\n        public static Vector3 GetClosestPointOnLine(ref MyLine line, ref Vector3 point, out float dist)\n        {\n            return GetClosestPointOnLine(ref line.From, ref line.To, ref point, out dist);\n        }\n\n           //\tVypocita bod na ciare o_LinePointA-o_LinePointB ktory je najblizsie k bodu o_Point.\n        public static Vector3 GetClosestPointOnLine(\n            ref Vector3 linePointA,\t\t//\tZaciatok usecky\n            ref Vector3 linePointB,\t\t//\tKoniec usecky\n            ref Vector3 point\t\t\t\t//\tBod\n            )\n        {\n            float dist = 0;\n            return GetClosestPointOnLine(ref linePointA, ref linePointB, ref point, out dist);\n        }\n\n        //\tVypocita bod na ciare o_LinePointA-o_LinePointB ktory je najblizsie k bodu o_Point.\n        public static Vector3 GetClosestPointOnLine(\n            ref Vector3 linePointA,\t\t//\tZaciatok usecky\n            ref Vector3 linePointB,\t\t//\tKoniec usecky\n            ref Vector3 point,\t\t\t\t//\tBod\n            out float dist             \n            )\n        {\n            //\tCreate the vector from end point vA to our point vPoint.\n            Vector3 vector1 = point - linePointA;\n\n            //\tCreate a normalized direction vector from end point vA to end point vB\n            Vector3 vector2 = MyMwcUtils.Normalize(linePointB - linePointA);\n\n            //\tUse the distance formula to find the distance of the line segment (or magnitude)\n            float d = Vector3.Distance(linePointA, linePointB);\n\n            //\tUsing the dot product, we project the vVector1 onto the vector vVector2.\n            //\tThis essentially gives us the distance from our projected vector from vA.\n            float t = Vector3.Dot(vector2, vector1);\n\n            dist = t;\n\n            //\tIf our projected distance from vA, \"t\", is less than or equal to 0, it must\n            //\tbe closest to the end point vA.  We want to return this end point.\n            if (t <= 0) return linePointA;\n\n            //\tIf our projected distance from vA, \"t\", is greater than or equal to the magnitude\n            //\tor distance of the line segment, it must be closest to the end point vB.  So, return vB.\n            if (t >= d) return linePointB;\n\n            //\tHere we create a vector that is of length t and in the direction of vVector2\n            Vector3 vector3 = vector2 * t;\n\n            //\tTo find the closest point on the line segment, we just add vVector3 to the original\n            //\tend point vA. \n            //\tReturn the closest point on the line segment\n            return linePointA + vector3;\n        }\n\n        public static Vector3 GetNormalVectorFromTriangle(ref MyTriangle_Vertexes inputTriangle)\n        {\n            return MyMwcUtils.Normalize(Vector3.Cross(inputTriangle.Vertex2 - inputTriangle.Vertex0, inputTriangle.Vertex1 - inputTriangle.Vertex0));\n        }\n\n        //  Converts bounding box into bounding sphere\n        public static BoundingSphere GetBoundingSphereFromBoundingBox(ref BoundingBox box)\n        {\n            BoundingSphere ret;\n            ret.Center = (box.Max + box.Min) / 2.0f;\n            ret.Radius = Vector3.Distance(ret.Center, box.Max);\n            return ret;\n        }\n\n        //  Check intersection between line and bounding box\n        public static bool IsLineIntersectingBoundingBox(ref MyLine line, ref BoundingBox boundingBox)\n        {\n            //  Create temporary ray and do intersection. But we can't rely only on it, because ray doesn't have end, yet our line does, so we \n            //  need to check if ray-bounding_box intersection lies in the range of our line\n            MinerWarsMath.Ray ray = new MinerWarsMath.Ray(line.From, line.Direction);\n            float? intersectionDistance = boundingBox.Intersects(ray);\n            if (intersectionDistance.HasValue == false)\n            {\n                //  No intersection between ray/line and bounding box\n                return false;\n            }\n            else\n            {\n                if (intersectionDistance.Value <= line.Length)\n                {\n                    //  Intersection between ray/line and bounding box IS withing the range of the line\n                    return true;\n                }\n                else\n                {\n                    //  Intersection between ray/line and bounding box IS NOT withing the range of the line\n                    return false;\n                }\n            }\n        }\n\n        //  Calculates intersection between line and bounding box and if found, distance is returned. Otherwise null is returned.\n        public static float? GetLineBoundingBoxIntersection(ref MyLine line, ref BoundingBox boundingBox)\n        {\n            //  Create temporary ray and do intersection. But we can't rely only on it, because ray doesn't have end, yet our line does, so we \n            //  need to check if ray-bounding_box intersection lies in the range of our line\n            MinerWarsMath.Ray ray = new MinerWarsMath.Ray(line.From, line.Direction);\n            float? intersectionDistance = boundingBox.Intersects(ray);\n            if (intersectionDistance.HasValue == false)\n            {\n                //  No intersection between ray/line and bounding box\n                return null;\n            }\n            else\n            {\n                if (intersectionDistance.Value <= line.Length)\n                {\n                    //  Intersection between ray/line and bounding box IS withing the range of the line\n                    return intersectionDistance.Value;\n                }\n                else\n                {\n                    //  Intersection between ray/line and bounding box IS NOT withing the range of the line\n                    return null;\n                }\n            }\n        }\n\n        //  Check intersection between box and sphere\n        public static bool IsBoxIntersectingSphere(ref BoundingBox box, ref BoundingSphere sphere)\n        {\n            bool ret;\n            box.Intersects(ref sphere, out ret);\n            return ret;\n        }\n\n        //  Check intersection between box and sphere\n        public static bool IsBoxIntersectingSphere(BoundingBox box, ref BoundingSphere sphere)\n        {\n            bool ret;\n            box.Intersects(ref sphere, out ret);\n            return ret;\n        }\n\n        //  Check intersection between box and box\n        public static bool IsBoxIntersectingBox(ref BoundingBox box0, ref BoundingBox box1)\n        {\n            bool ret;\n            box0.Intersects(ref box1, out ret);\n            return ret;\n        }\n\n        //  Check intersection between box and box\n        public static bool IsBoxIntersectingBox(BoundingBox box0, ref BoundingBox box1)\n        {\n            bool ret;\n            box0.Intersects(ref box1, out ret);\n            return ret;\n        }\n\n        //  Check intersection between line and bounding sphere\n        //  We don't use BoundingSphere.Contains(Ray ...) because ray doesn't have an end, but line does, so we need\n        //  to check if line really intersects the sphere.\n        public static bool IsLineIntersectingBoundingSphere(ref MyLine line, ref BoundingSphere boundingSphere)\n        {\n            //  Create temporary ray and do intersection. But we can't rely only on it, because ray doesn't have end, yet our line does, so we \n            //  need to check if ray-bounding_sphere intersection lies in the range of our line\n            MinerWarsMath.Ray ray = new MinerWarsMath.Ray(line.From, line.Direction);\n            float? intersectionDistance = boundingSphere.Intersects(ray);\n            if (intersectionDistance.HasValue == false)\n            {\n                //  No intersection between ray/line and bounding sphere\n                return false;\n            }\n            else\n            {\n                if (intersectionDistance.Value <= line.Length)\n                {\n                    //  Intersection between ray/line and bounding sphere IS withing the range of the line\n                    return true;\n                }\n                else\n                {\n                    //  Intersection between ray/line and bounding sphere IS NOT withing the range of the line\n                    return false;\n                }\n            }\n        }\n\n        //  Checks whether a ray intersects a triangleVertexes. This uses the algorithm\n        //  developed by Tomas Moller and Ben Trumbore, which was published in the\n        //  Journal of Graphics Tools, pitch 2, \"Fast, Minimum Storage Ray-Triangle\n        //  Intersection\".\n        //\n        //  This method is implemented using the pass-by-reference versions of the\n        //  XNA math functions. Using these overloads is generally not recommended,\n        //  because they make the code less readable than the normal pass-by-value\n        //  versions. This method can be called very frequently in a tight inner loop,\n        //  however, so in this particular case the performance benefits from passing\n        //  everything by reference outweigh the loss of readability.\n        public static float? GetLineTriangleIntersection(ref MyLine line, ref MyTriangle_Vertexes triangle)\n        {\n            // Compute vectors along two edges of the triangleVertexes.\n            Vector3 edge1, edge2;\n\n            Vector3.Subtract(ref triangle.Vertex1, ref triangle.Vertex0, out edge1);\n            Vector3.Subtract(ref triangle.Vertex2, ref triangle.Vertex0, out edge2);\n\n            // Compute the determinant.\n            Vector3 directionCrossEdge2;\n            Vector3.Cross(ref line.Direction, ref edge2, out directionCrossEdge2);\n\n            float determinant;\n            Vector3.Dot(ref edge1, ref directionCrossEdge2, out determinant);\n\n            // If the ray is parallel to the triangleVertexes plane, there is no collision.\n            if (determinant > -float.Epsilon && determinant < float.Epsilon)\n            {\n                return null;\n            }\n\n            float inverseDeterminant = 1.0f / determinant;\n\n            // Calculate the U parameter of the intersection point.\n            Vector3 distanceVector;\n            Vector3.Subtract(ref line.From, ref triangle.Vertex0, out distanceVector);\n\n            float triangleU;\n            Vector3.Dot(ref distanceVector, ref directionCrossEdge2, out triangleU);\n            triangleU *= inverseDeterminant;\n\n            // Make sure it is inside the triangleVertexes.\n            if (triangleU < 0 || triangleU > 1)\n            {\n                return null;\n            }\n\n            // Calculate the V parameter of the intersection point.\n            Vector3 distanceCrossEdge1;\n            Vector3.Cross(ref distanceVector, ref edge1, out distanceCrossEdge1);\n\n            float triangleV;\n            Vector3.Dot(ref line.Direction, ref distanceCrossEdge1, out triangleV);\n            triangleV *= inverseDeterminant;\n\n            // Make sure it is inside the triangleVertexes.\n            if (triangleV < 0 || triangleU + triangleV > 1)\n            {\n                return null;\n            }\n\n            // Compute the distance along the ray to the triangleVertexes.\n            float rayDistance;\n            Vector3.Dot(ref edge2, ref distanceCrossEdge1, out rayDistance);\n            rayDistance *= inverseDeterminant;\n\n            // Is the triangleVertexes behind the ray origin?\n            if (rayDistance < 0)\n            {\n                return null;\n            }\n\n            //  Does the intersection point lie on the line (ray hasn't end, but line does)\n            if (rayDistance > line.Length) return null;\n\n            return rayDistance;\n        }\n\n        //  Swap two variables\n        //  IMPORTANT: I have moved this method back here (from common lib) because obfuscator had problems with this generics and I don't want to solve it...\n        public static void Swap<T>(ref T lhs, ref T rhs)\n        {\n            T temp;\n            temp = lhs;\n            lhs = rhs;\n            rhs = temp;\n        }\n\n        //  Finst closes distance between point and axis aligned bounding box (AABB), therefore one if its planes.\n        //  It doesn't matter if point is inside or outside of the AABB\n        public static float GetClosestDistanceFromPointToAxisAlignedBoundingBox(Vector3 point, BoundingBox axisAlignedBoundingBox)\n        {\n            float distToMinX = Math.Abs(axisAlignedBoundingBox.Min.X - point.X);\n            float distToMaxX = Math.Abs(axisAlignedBoundingBox.Max.X - point.X);\n            float distToMinY = Math.Abs(axisAlignedBoundingBox.Min.Y - point.Y);\n            float distToMaxY = Math.Abs(axisAlignedBoundingBox.Max.Y - point.Y);\n            float distToMinZ = Math.Abs(axisAlignedBoundingBox.Min.Z - point.Z);\n            float distToMaxZ = Math.Abs(axisAlignedBoundingBox.Max.Z - point.Z);\n\n            float min = float.MaxValue;\n            if (distToMinX < min) min = distToMinX;\n            if (distToMaxX < min) min = distToMaxX;\n            if (distToMinY < min) min = distToMinY;\n            if (distToMaxY < min) min = distToMaxY;\n            if (distToMinZ < min) min = distToMinZ;\n            if (distToMaxZ < min) min = distToMaxZ;\n            return min;\n        }\n\n        //  Calculate halfpixel for texture coordinate fix when we copy texture to render target and want\n        //  pixels and texels to match precisely.\n        //  IMPORTANT: Sometimes half-pixel depends on screen resolution, but sometimes you need to read from\n        //  low resolution render targets, and then you need to supply size of that render target (not screen size)\n        public static Vector2 GetHalfPixel(int screenSizeX, int screenSizeY)\n        {\n            return new Vector2(0.5f / (float)screenSizeX, 0.5f / (float)screenSizeY);\n        }\n\n        public static BoundingFrustum UnprojectRectangle(MinerWarsMath.Rectangle source, Viewport viewport, Matrix viewMatrix, Matrix projectionMatrix)\n        {\n            // Point in screen space of the center of the region selected\n            Vector2 regionCenterScreen = new Vector2(source.Center.X, source.Center.Y);\n            // Generate the projection matrix for the screen region\n            Matrix regionProjMatrix = projectionMatrix;\n            // Calculate the region dimensions in the projection matrix. M11 is inverse of width, M22 is inverse of height.\n            regionProjMatrix.M11 /= ((float)source.Width / (float)viewport.Width);\n            regionProjMatrix.M22 /= ((float)source.Height / (float)viewport.Height);\n            // Calculate the region center in the projection matrix. M31 is horizonatal center.\n            regionProjMatrix.M31 = (regionCenterScreen.X - (viewport.Width / 2f)) / ((float)source.Width / 2f);\n\n            // M32 is vertical center. Notice that the screen has low Y on top, projection has low Y on bottom.\n            regionProjMatrix.M32 = -(regionCenterScreen.Y - (viewport.Height / 2f)) / ((float)source.Height / 2f);\n\n            return new BoundingFrustum(viewMatrix * regionProjMatrix);\n        }\n\n        public static Vector2 Project3dCoordinateTo2dCoordinate(Vector3 coordinate, Matrix world)\n        {\n            Vector3 proj = SharpDXHelper.ToXNA(MyMinerGame.Static.GraphicsDevice.Viewport.Project(SharpDXHelper.ToSharpDX(coordinate), SharpDXHelper.ToSharpDX(MyCamera.ProjectionMatrix), SharpDXHelper.ToSharpDX(MyCamera.ViewMatrix), SharpDXHelper.ToSharpDX(world)));\n            Vector3 projZero = SharpDXHelper.ToXNA(MyMinerGame.Static.GraphicsDevice.Viewport.Project(SharpDXHelper.ToSharpDX(new Vector3(0, 0, 0)), SharpDXHelper.ToSharpDX(MyCamera.ProjectionMatrix), SharpDXHelper.ToSharpDX(MyCamera.ViewMatrix), SharpDXHelper.ToSharpDX(world)));\n            return Vector2.Normalize((new Vector2(projZero.X, projZero.Y) - new Vector2(proj.X, proj.Y)));\n        }\n\n        public static Vector3 Unproject2dCoordinateTo3dCoordinate(Vector2 coordinate)\n        {\n            return MyMwcUtils.Normalize(\n                SharpDXHelper.ToXNA(MyMinerGame.Static.GraphicsDevice.Viewport.Unproject(SharpDXHelper.ToSharpDX(new Vector3(coordinate.X, coordinate.Y, 1f)),\n                    SharpDXHelper.ToSharpDX(MyCamera.ProjectionMatrix), SharpDXHelper.ToSharpDX(MyCamera.ViewMatrix), SharpDXHelper.ToSharpDX(Matrix.Identity))) \n                    -\n                SharpDXHelper.ToXNA(MyMinerGame.Static.GraphicsDevice.Viewport.Unproject(SharpDXHelper.ToSharpDX(new Vector3(coordinate.X, coordinate.Y, 0f)),\n                    SharpDXHelper.ToSharpDX(MyCamera.ProjectionMatrix), SharpDXHelper.ToSharpDX(MyCamera.ViewMatrix), SharpDXHelper.ToSharpDX(Matrix.Identity)))\n                    );\n        }\n\n        /// <summary>\n        /// Converts the 2D mouse position to a 3D ray for collision tests.\n        /// </summary>\n        public static MinerWarsMath.Ray ConvertMouseToRay(Vector2 screenMousePosition)\n        {\n            Vector3 nearPoint = new Vector3(screenMousePosition, 0f);\n            Vector3 farPoint = new Vector3(screenMousePosition, 1f);\n\n            nearPoint = SharpDXHelper.ToXNA(MyMinerGame.Static.GraphicsDevice.Viewport.Unproject(SharpDXHelper.ToSharpDX(nearPoint),\n                SharpDXHelper.ToSharpDX(MyCamera.ProjectionMatrix),\n                SharpDXHelper.ToSharpDX(MyCamera.ViewMatrix),\n                SharpDXHelper.ToSharpDX(Matrix.Identity)));\n            farPoint = SharpDXHelper.ToXNA(MyMinerGame.Static.GraphicsDevice.Viewport.Unproject(SharpDXHelper.ToSharpDX(farPoint),\n                SharpDXHelper.ToSharpDX(MyCamera.ProjectionMatrix),\n                SharpDXHelper.ToSharpDX(MyCamera.ViewMatrix),\n                SharpDXHelper.ToSharpDX(Matrix.Identity)));\n\n            Vector3 direction = farPoint - nearPoint;\n            direction = MyMwcUtils.Normalize(direction);\n\n            return new MinerWarsMath.Ray(nearPoint, direction);\n        }\n\n        /// <summary>\n        /// Converts the 2D mouse position to a 3D ray for collision tests.\n        /// </summary>\n        public static MinerWarsMath.Ray ConvertMouseToRay()\n        {\n            return ConvertMouseToRay(MyGuiManager.GetScreenCoordinateFromNormalizedCoordinate(MyGuiManager.MouseCursorPosition));\n        }\n\n        /// <summary>\n        /// Converts the 2D mouse position to a MyLine for collision tests.\n        /// </summary>\n        public static MyLine ConvertMouseToLine()\n        {\n            Vector3 mouseCursorDirection = MyGuiManager.GetMouseCursorDirection();\n\n            Vector3 nearPoint = MyCamera.Position;\n            Vector3 farPoint = nearPoint + mouseCursorDirection * 100000;\n\n            return new MyLine(nearPoint, farPoint, true);\n        }\n\n        //  This method returns next or previous element in enumeration relatively to currentEnumValue\n        public static T GetNextOrPreviousEnumValue<T>(T currentEnumValue, bool nextElement)\n            where T : struct\n        {\n            int elementIndex = GetEnumMemberIndex(currentEnumValue);\n            Array enumValues = Enum.GetValues(typeof(T));\n            int enumValuesCount = enumValues.Length;\n            if (nextElement) // get next element from enum\n            {\n                if (elementIndex != enumValuesCount - 1)\n                {\n                    elementIndex++;\n                }\n                else\n                {\n                    elementIndex = 0;\n                }\n            }\n            else // get previous element from enum\n            {\n                if (elementIndex != 0)\n                {\n                    elementIndex--;\n                }\n                else\n                {\n                    elementIndex = enumValuesCount - 1;\n                }\n            }\n\n            foreach (T enumValue in enumValues)\n            {\n                if (Array.IndexOf(enumValues, enumValue) == elementIndex)\n                {\n                    return enumValue;\n                }\n            }\n\n            return currentEnumValue;\n        }\n\n\n        //  This method return index of passed element in given enumeration\n        public static int GetEnumMemberIndex<T>(T element)\n            where T : struct\n        {\n            T[] values = (T[])Enum.GetValues(typeof(T));\n            return Array.IndexOf(values, element);\n        }\n\n        /// <summary>\n        /// This method rounds each vector component floating point value to specified number of fractional digits\n        /// </summary>\n        public static Vector3 GetRoundedVector3(Vector3 vec, int precisionDigits)\n        {\n            return new Vector3((float)Math.Round(vec.X, precisionDigits), (float)Math.Round(vec.Y, precisionDigits), (float)Math.Round(vec.Z, precisionDigits));\n        }\n\n\n        //  Draw bounding box around whole sector - but around its \"safe border\" - therefore extended \"safe zone\"\n        public static void DrawSectorBoundingBox()\n        {\n            float size = MyMwcSectorConstants.SAFE_SECTOR_SIZE;\n            float sizeHalf = MyMwcSectorConstants.SAFE_SECTOR_SIZE_HALF;\n\n            //  Two passes - because we want to render current sector in second pass so its lines will over-draw other sector lines and will be always visible\n            for (int pass = 0; pass <= 1; pass++)\n            {\n                for (int x = -1; x <= 1; x++)\n                {\n                    for (int y = -1; y <= 1; y++)\n                    {\n                        for (int z = -1; z <= 1; z++)\n                        {\n                            bool isCurrentSector = ((x == 0) && (y == 0) && (z == 0));\n                            if (((isCurrentSector) && (pass == 1)) || ((isCurrentSector == false) && (pass == 0)))\n                            {\n                                //  Sector left-bottom corner (not its center)\n                                Vector3 origin = new Vector3(x * size, y * size, z * size) + new Vector3(-sizeHalf, -sizeHalf, -sizeHalf);\n\n                                Color color = isCurrentSector ? Color.White : Color.Blue;\n\n                                MyDebugDraw.DrawLine3D(origin, origin + new Vector3(size, 0, 0), color, color);\n                                MyDebugDraw.DrawLine3D(origin, origin + new Vector3(0, size, 0), color, color);\n                                MyDebugDraw.DrawLine3D(origin, origin + new Vector3(0, 0, size), color, color);\n                                MyDebugDraw.DrawLine3D(origin + new Vector3(0, size, 0), origin + new Vector3(size, size, 0), color, color);\n                                MyDebugDraw.DrawLine3D(origin + new Vector3(size, size, 0), origin + new Vector3(size, size, size), color, color);\n                                MyDebugDraw.DrawLine3D(origin + new Vector3(size, 0, 0), origin + new Vector3(size, 0, size), color, color);\n                                MyDebugDraw.DrawLine3D(origin + new Vector3(0, size, 0), origin + new Vector3(0, size, size), color, color);\n                                MyDebugDraw.DrawLine3D(origin + new Vector3(0, 0, size), origin + new Vector3(0, size, size), color, color);\n                                MyDebugDraw.DrawLine3D(origin + new Vector3(size, 0, size), origin + new Vector3(size, size, size), color, color);\n                                MyDebugDraw.DrawLine3D(origin + new Vector3(size, 0, 0), origin + new Vector3(size, size, 0), color, color);\n                                MyDebugDraw.DrawLine3D(origin + new Vector3(0, size, size), origin + new Vector3(size, size, size), color, color);\n                                MyDebugDraw.DrawLine3D(origin + new Vector3(0, 0, size), origin + new Vector3(size, 0, size), color, color);\n                            }\n                        }\n                    }\n                }\n            }\n        }\n\n        // Get brightnest from the current color (using 0.299 - 0.114 - 0.587 values):\n        public static float GetYFromRGB(Color color)\n        {\n            /* Wr = 0.299;\n             * Wb = 0.114;\n             * Wg = 1 - r - b = 0.587; */\n            return color.R * 0.299f + color.G * 0.587f + color.B * 0.114f;\n        }\n\n        // Get U color difference:\n        public static float GetUFromRGB(Color color)\n        {\n            /* Umax = 0.436;\n             * 1 - Wb = 0.886; */\n            return 0.436f * ((color.B - GetYFromRGB(color)) / 0.886f);\n        }\n\n        // Get V color difference:\n        public static float GetVFromRGB(Color color)\n        {\n            /* Vmax = 0.615;\n             * 1 - Wr = 0.701; */\n            return 0.615f * ((color.R - GetYFromRGB(color)) / 0.701f);\n        }\n\n        // Mix RGB color from YUV components:\n        public static Color GetRGBFromYUV(float Y, float U, float V)\n        {\n            /* Umax = 0.436;\n             * Vmax = 0.615;\n             * 1 - Wr = 0.701;\n             * 1 - Wb = 0.886; \n             * Wr = 0.299;\n             * Wb = 0.114;\n             * Wg = 1 - r - b = 0.587 \n             * see: http://en.wikipedia.org/wiki/YUV for formulas and constants\n             */\n            float R = Y + V * 1.139837f;\n            float G = Y - U * 0.032930f - V * 0.580599f;\n            float B = Y + U * 2.032110f;\n            return new Color(R, G, B);\n        }\n\n        // Set brightnest to the current color (using 0.299 - 0.114 - 0.587 values)\n        // Y in interval 0.0f - 1.0f\n        public static Color SetYtoRGB(Color color, float Y)\n        {\n            float U, V;\n            U = GetUFromRGB(color);\n            V = GetVFromRGB(color);\n            byte A = color.A;\n            color = GetRGBFromYUV(Y, U, V);\n            color.A = A;\n            return color;\n        }\n\n        /// <summary>\n        /// Returns true if Vector3 is valid\n        /// </summary>\n        /// <param name=\"vec\"></param>\n        /// <returns></returns>\n        public static bool IsValid(Vector3 vec)\n        {\n            return MyCommonDebugUtils.IsValid(vec.X) && MyCommonDebugUtils.IsValid(vec.Y) && MyCommonDebugUtils.IsValid(vec.Z);\n        }\n\n        public static bool IsValidNormal(Vector3 vec)\n        {\n            const float epsilon = 0.001f;\n            var length = vec.LengthSquared();\n            return IsValid(vec) && length > 1 - epsilon && length < 1 + epsilon;\n        }\n\n        /// <summary>\n        /// Returns true if Vector2 is valid\n        /// </summary>\n        /// <param name=\"vec\"></param>\n        /// <returns></returns>\n        public static bool IsValid(Vector2 vec)\n        {\n            return MyCommonDebugUtils.IsValid(vec.X) && MyCommonDebugUtils.IsValid(vec.Y);\n        }\n\n        /// <summary>\n        /// Returns true if float is valid\n        /// </summary>\n        /// <param name=\"f\"></param>\n        /// <returns></returns>\n        public static bool IsValid(float f)\n        {\n            return MyCommonDebugUtils.IsValid(f);\n        }\n\n        /// <summary>\n        /// Returns true if Vector3 is valid\n        /// </summary>\n        /// <param name=\"vec\"></param>\n        /// <returns></returns>\n        public static bool IsValid(Vector3? vec)\n        {\n            return vec == null ? true : MyCommonDebugUtils.IsValid(vec.Value.X) && MyCommonDebugUtils.IsValid(vec.Value.Y) && MyCommonDebugUtils.IsValid(vec.Value.Z);\n        }\n\n        public static bool IsValid(Matrix matrix)\n        {\n            return IsValid(matrix.Up) && IsValid(matrix.Left) && IsValid(matrix.Forward) && IsValid(matrix.Translation) && (matrix != ZeroMatrix);\n        }\n\n        /// <summary>\n        /// Returns true if Vector3 is valid\n        /// </summary>\n        /// <param name=\"vec\"></param>\n        /// <returns></returns>\n        public static void AssertIsValid(Vector3 vec)\n        {\n            System.Diagnostics.Debug.Assert(IsValid(vec));\n        }\n\n        /// <summary>\n        /// Returns true if Vector3 is valid\n        /// </summary>\n        /// <param name=\"vec\"></param>\n        /// <returns></returns>\n        public static void AssertIsValid(Vector3? vec)\n        {\n            System.Diagnostics.Debug.Assert(IsValid(vec));\n        }\n\n        /// <summary>\n        /// Returns true if Vector2 is valid\n        /// </summary>\n        /// <param name=\"vec\"></param>\n        /// <returns></returns>\n        public static void AssertIsValid(Vector2 vec)\n        {\n            System.Diagnostics.Debug.Assert(IsValid(vec));\n        }\n\n        /// <summary>\n        /// Returns true if float is valid\n        /// </summary>\n        /// <param name=\"f\"></param>\n        /// <returns></returns>\n        public static void AssertIsValid(float f)\n        {\n            System.Diagnostics.Debug.Assert(IsValid(f));\n        }\n\n        public static void AssertIsValid(Matrix matrix)\n        {\n        //    System.Diagnostics.Debug.Assert(IsValid(matrix));\n        }\n\n        /// <summary>\n        /// Returns true if value is power of two\n        /// </summary>\n        /// <param name=\"x\"></param>\n        /// <returns></returns>\n        public static bool IsPowerOfTwo(int x)\n        {\n            return ((x > 0) && ((x & (x - 1)) == 0));\n        }\n\n\n        /// <summary>\n        /// Returns true if values are considered as same\n        /// </summary>\n        public static bool IsEqual(float value1, float value2)\n        {\n            return MyMwcUtils.IsZero(value1 - value2);\n        }\n\n        /// <summary>\n        /// Returns true if values are considered as same\n        /// </summary>\n        public static bool IsEqual(Vector2 value1, Vector2 value2)\n        {\n            return MyMwcUtils.IsZero(value1.X - value2.X) && MyMwcUtils.IsZero(value1.Y - value2.Y);\n        }\n\n        /// <summary>\n        /// Returns true if values are considered as same\n        /// </summary>\n        public static bool IsEqual(Vector3 value1, Vector3 value2)\n        {\n            return MyMwcUtils.IsZero(value1.X - value2.X) && MyMwcUtils.IsZero(value1.Y - value2.Y) && MyMwcUtils.IsZero(value1.Z - value2.Z);\n        }\n\n        /// <summary>\n        /// Returns true if values are considered as same\n        /// </summary>\n        public static bool IsEqual(Matrix value1, Matrix value2)\n        {\n            return MyMwcUtils.IsZero(value1.Left - value2.Left)\n                && MyMwcUtils.IsZero(value1.Up - value2.Up)\n                && MyMwcUtils.IsZero(value1.Forward - value2.Forward)\n                && MyMwcUtils.IsZero(value1.Translation - value2.Translation);\n        }\n\n        public static decimal GetTextureSizeInMb(MyTexture2D texture)\n        {\n            return CalculateTextureSizeInMb(texture.Format, texture.Width, texture.Height, texture.LevelCount);\n        }\n\n        public static decimal GetTextureSizeInMb(MyTextureCube texture)\n        {\n            return 6 * CalculateTextureSizeInMb(texture.Format, texture.Size, texture.Size, texture.LevelCount);\n        }\n\n        //  Calculate texture size, based on width * resolution, texture format (number of bytes per one pixel) and number of mip-map levels\n        //  Result is in mega bytes (not bytes)\n        //  IMPORTANT: I am not sure if I am doing this correctly for non-uniform mip maps (e.g. 512x128) because each dimension should\n        //  have different mipmap level count, but there's only one. In forst case, result will be wrong just by few bytes.\n        public static decimal CalculateTextureSizeInMb(Format inputFormat, int inputWidth, int inputHeight, int inputLevelCount)\n        {\n            int sizeInBytes = 0;\n\n            int width = inputWidth;\n            int height = inputHeight;\n\n            for (int level = 0; level < inputLevelCount; level++)\n            {\n                int sizeOfOneLevel;\n\n                MyCommonDebugUtils.AssertRelease(width >= 1);\n                MyCommonDebugUtils.AssertRelease(height >= 1);\n\n                switch (inputFormat)\n                {\n                    case Format.A8:\n                    case Format.L8:\n                        sizeOfOneLevel = width * height;\n                        break;\n\n                    case Format.A8R8G8B8:\n                    case Format.A8B8G8R8:\n                    case Format.D24S8:\n                    case Format.A2R10G10B10:\n                    case Format.Q8W8V8U8:\n                        sizeOfOneLevel = width * height * 4;\n                        break;\n\n                    case Format.Dxt1:\n                        sizeOfOneLevel = (width * height * 3) / 8;\n                        break;\n\n                    case Format.Dxt3:\n                    case Format.Dxt5:\n                        sizeOfOneLevel = (width * height * 4) / 4;\n                        break;\n                    case Format.R32F:\n                        sizeOfOneLevel = (width * height * 4);\n                        break;\n                    case Format.A16B16G16R16:\n                    case Format.A16B16G16R16F:\n                        sizeOfOneLevel = (width * height * 4) * 2;\n                        break;\n                    default:\n                        throw new Exception(\"You are trying to calculate 'texture size in Mb' on a texture whose format is not yet supported by this method. You should extend this method!\");\n                        break;\n                }\n\n                sizeInBytes += sizeOfOneLevel;\n\n                if (width > 1) width /= 2;\n                if (height > 1) height /= 2;\n            }\n\n            return sizeInBytes / 1024m / 1024m;\n        }\n\n\n        public static void SerializeValue(XmlWriter writer, Vector3 v)\n        {\n            writer.WriteValue(v.X.ToString(CultureInfo.InvariantCulture) + \" \" + v.Y.ToString(CultureInfo.InvariantCulture) + \" \" + v.Z.ToString(CultureInfo.InvariantCulture));\n        }\n\n        public static void SerializeValue(XmlWriter writer, Vector4 v)\n        {\n            writer.WriteValue(v.X.ToString(CultureInfo.InvariantCulture) + \" \" + v.Y.ToString(CultureInfo.InvariantCulture) + \" \" + v.Z.ToString(CultureInfo.InvariantCulture) + \" \" + v.W.ToString(CultureInfo.InvariantCulture));\n        }\n\n        public static void DeserializeValue(XmlReader reader, out Vector3 value)\n        {\n            object val = reader.Value;\n            reader.Read();\n\n            string[] parts = ((string)val).Split(' ');\n            Vector3 v = new Vector3(Convert.ToSingle(parts[0], CultureInfo.InvariantCulture), Convert.ToSingle(parts[1], CultureInfo.InvariantCulture), Convert.ToSingle(parts[2], CultureInfo.InvariantCulture));\n            value = v;\n        }\n\n        public static void DeserializeValue(XmlReader reader, out Vector4 value)\n        {\n            object val = reader.Value;\n            reader.Read();\n\n            string[] parts = ((string)val).Split(' ');\n            Vector4 v = new Vector4(Convert.ToSingle(parts[0], CultureInfo.InvariantCulture), Convert.ToSingle(parts[1], CultureInfo.InvariantCulture), Convert.ToSingle(parts[2], CultureInfo.InvariantCulture), Convert.ToSingle(parts[3], CultureInfo.InvariantCulture));\n            value = v;\n        }\n\n        public static float ReadSingleSafe(string text)\n        {\n            text = text.Replace(',', '.');\n            return Convert.ToSingle(text, CultureInfo.InvariantCulture);\n        }\n\n        /// <summary>\n        /// Get the first element from the HashSet.\n        /// </summary>\n        public static T FirstElement<T>(this HashSet<T> set)\n        {\n            var enumerator = set.GetEnumerator();  // This doesn't do allocations, Petr.\n            enumerator.MoveNext();\n            return enumerator.Current;\n        }\n\n        public static bool IsPointInTriangle(ref Vector3 point, ref MyTriangle_Vertexes triangle)\n        {\n\n \n\n            //Pretend each side of the polygon is a plane, check which side\n            //of each plane the point lies (<0 is outside)\n\n            Vector3 vert1 = triangle.Vertex0;\n            Vector3 vert2 = triangle.Vertex1;\n            Vector3 vert3 = triangle.Vertex2;\n            Vector3 normal = GetNormalVectorFromTriangle(ref triangle);\n\n            //First side\n            Vector3 v3 = vert2 - vert1;\n\n            //work out the normal to our new imaginary plane\n            Vector3 v32 = Vector3.Cross(v3, normal);\n\n            //work out the last value in the plane equation\n            double ld = Vector3.Dot(v32, vert1);\n\n            //use the plane equation on our point and check its side\n\n            ld = Vector3.Dot(v32, point) - ld;\n            if (ld < -0.0001)\n                return false;\n\n            //Second side\n            v3 = vert3 - vert2;\n            v32 = Vector3.Cross(v3, normal);\n            ld = Vector3.Dot(v32, vert2);\n\n            ld = Vector3.Dot(v32, point) - ld;\n            if (ld < -0.0001)\n                return false;\n\n            //Third side\n            v3 = vert1 - vert3;\n            v32 = Vector3.Cross(v3, normal);\n            ld = Vector3.Dot(v32, vert3);\n\n            ld = Vector3.Dot(v32, point) - ld;\n\n            if (ld < -0.0001)\n                return false;\n\n            return true;\n        }\n\n        public static float GetDistancePointToQuad(ref Vector3 point, ref MyQuad quad)\n        {\n            float minDistance = float.MaxValue;\n\n            MyTriangle_Vertexes tri1 = new MyTriangle_Vertexes();\n            tri1.Vertex0 = quad.Point0;\n            tri1.Vertex1 = quad.Point1;\n            tri1.Vertex2 = quad.Point2;\n\n            MyTriangle_Vertexes tri2 = new MyTriangle_Vertexes();\n            tri2.Vertex0 = quad.Point2;\n            tri2.Vertex1 = quad.Point1;\n            tri2.Vertex2 = quad.Point3;\n\n            if (IsPointInTriangle(ref point, ref tri1) || IsPointInTriangle(ref point, ref tri2))\n            {\n                MyPlane plane = new MyPlane(ref tri1);\n                return System.Math.Abs(GetDistanceFromPointToPlane(ref point, ref plane));\n            }\n\n            MyLine line1 = new MyLine(quad.Point0, quad.Point1);\n            MyLine line2 = new MyLine(quad.Point1, quad.Point3);\n            MyLine line3 = new MyLine(quad.Point3, quad.Point2);\n            MyLine line4 = new MyLine(quad.Point2, quad.Point0);\n\n            float distance = 0;\n            Vector3 closestPoint = GetClosestPointOnLine(ref line1, ref point, out distance);\n            distance = Vector3.Distance(point, closestPoint);\n            if (distance < minDistance)\n                minDistance = distance;\n\n            closestPoint = GetClosestPointOnLine(ref line2, ref point, out distance);\n            distance = Vector3.Distance(point, closestPoint);\n            if (distance < minDistance)\n                minDistance = distance;\n\n            closestPoint = GetClosestPointOnLine(ref line3, ref point, out distance);\n            distance = Vector3.Distance(point, closestPoint);\n            if (distance < minDistance)\n                minDistance = distance;\n\n            closestPoint = GetClosestPointOnLine(ref line4, ref point, out distance);\n            distance = Vector3.Distance(point, closestPoint);\n            if (distance < minDistance)\n                minDistance = distance;\n\n            return minDistance;\n        }\n\n        public static string GetDatetimeAsSpentTime(DateTime dt)\n        {\n            TimeSpan diff = DateTime.Now - dt;\n            if (diff.TotalMinutes < 60)\n            {\n                return String.Format(MyTextsWrapper.Get(MyTextsWrapperEnum.DateMinutesAgo).ToString(), (int)diff.TotalMinutes);\n            }\n            else if (diff.TotalHours < 24)\n            {\n                return String.Format(MyTextsWrapper.Get(MyTextsWrapperEnum.DateHoursAgo).ToString(), (int)diff.TotalHours);\n            }\n            else if (diff.TotalDays < 31)\n            {\n                return String.Format(MyTextsWrapper.Get(MyTextsWrapperEnum.DateDaysAgo).ToString(), (int)diff.TotalDays);\n            }\n            else\n            {\n                return String.Format(MyTextsWrapper.Get(MyTextsWrapperEnum.DateMonthsAgo).ToString(), (int)(diff.TotalDays / 30));\n            }\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Utils/MyVertexFormats.cs",
    "content": "﻿using System.Runtime.InteropServices;\nusing System;\nusing System.Diagnostics;\n\n      /*\nusing MinerWarsMath;\nusing MinerWarsMath.Graphics;\nusing MinerWarsMath.Graphics.PackedVector;\n        */\nusing SharpDX;\nusing SharpDX.Direct3D9;\nusing SharpDX.Toolkit;\nusing SharpDX.Toolkit.Graphics;\n\nnamespace MinerWars.AppCode.Game.Utils.VertexFormats\n{\n    using Byte4 = MinerWarsMath.Graphics.PackedVector.Byte4;\n    using HalfVector2 = MinerWarsMath.Graphics.PackedVector.HalfVector2;\n    using HalfVector4 = MinerWarsMath.Graphics.PackedVector.HalfVector4;\n    using Vector2 = MinerWarsMath.Vector2;\n    using Vector3 = MinerWarsMath.Vector3;\n    using Vector4 = MinerWarsMath.Vector4;\n    using Rectangle = MinerWarsMath.Rectangle;\n    using Matrix = MinerWarsMath.Matrix;\n    using Color = MinerWarsMath.Color;\n    using BoundingBox = MinerWarsMath.BoundingBox;\n    using BoundingSphere = MinerWarsMath.BoundingSphere;\n    using BoundingFrustum = MinerWarsMath.BoundingFrustum;\n    using MinerWars.CommonLIB.AppCode.Import;\n\n\n    [StructLayout(LayoutKind.Sequential, Pack = 1)]\n    struct MyVertexFormatVoxelSingleMaterial \n    {\n        static VertexDeclaration m_vertexDeclaration;\n        static int m_stride;\n\n        //PACKED_VERTEX_FORMAT\n\n        public MyShort4 m_positionAndAmbient;\n        public Byte4 m_normal;\n\n        public Vector3 Position\n        {\n            get { return MyVertexCompression.INV_VOXEL_MULTIPLIER * new Vector3(m_positionAndAmbient.X + MyVertexCompression.VOXEL_OFFSET, m_positionAndAmbient.Y + MyVertexCompression.VOXEL_OFFSET, m_positionAndAmbient.Z + MyVertexCompression.VOXEL_OFFSET); }\n            set\n            {\n                m_positionAndAmbient.X = (short)(MyVertexCompression.VOXEL_MULTIPLIER * value.X - MyVertexCompression.VOXEL_OFFSET + MyVertexCompression.VOXEL_COORD_EPSILON);\n                m_positionAndAmbient.Y = (short)(MyVertexCompression.VOXEL_MULTIPLIER * value.Y - MyVertexCompression.VOXEL_OFFSET + MyVertexCompression.VOXEL_COORD_EPSILON);\n                m_positionAndAmbient.Z = (short)(MyVertexCompression.VOXEL_MULTIPLIER * value.Z - MyVertexCompression.VOXEL_OFFSET + MyVertexCompression.VOXEL_COORD_EPSILON);\n            }\n        }\n\n        /// <summary>\n        /// For multimaterial vertex only\n        /// 0, 1 or 2, indicates what material is on this vertex\n        /// </summary>\n        public byte MaterialAlphaIndex\n        {\n            get { return VF_Packer.UnpackAlpha(m_positionAndAmbient.W); }\n            set { m_positionAndAmbient.W = VF_Packer.PackAmbientAndAlpha(Ambient, value); }\n        }\n\n        public float Ambient\n        {\n            get { return VF_Packer.UnpackAmbient(m_positionAndAmbient.W); }\n            set { m_positionAndAmbient.W = VF_Packer.PackAmbientAndAlpha(value, MaterialAlphaIndex); }\n        }\n\n        public Vector3 Normal\n        {\n            get { return VF_Packer.UnpackNormal(ref m_normal); }\n            set { m_normal.PackedValue = VF_Packer.PackNormal(ref value); }\n        }\n\n        public Byte4 PackedNormal\n        {\n            get { return m_normal; }\n            set { m_normal = value; }\n        }\n\n        public static VertexDeclaration VertexDeclaration \n        {\n            get { return m_vertexDeclaration; }\n        }\n\n        public static int Stride\n        {\n            get { return m_stride; }\n        }\n\n        public static void LoadContent(Device device)\n        {\n                       //new VertexElement(0, VertexElementFormat.Short4, VertexElementUsage.Position, 0),\n           //new VertexElement(8, VertexElementFormat.Byte4, VertexElementUsage.Normal, 0)\n\n            var elements = new[] {\n        \t\tnew VertexElement(0, 0, DeclarationType.Short4, DeclarationMethod.Default, DeclarationUsage.Position, 0),\n        \t\tnew VertexElement(0, 8, DeclarationType.Ubyte4, DeclarationMethod.Default, DeclarationUsage.Normal, 0),\n\t\t\t\tVertexElement.VertexDeclarationEnd\n        \t};\n\n            m_stride = D3DX.GetDeclarationVertexSize(elements, 0);\n            System.Diagnostics.Debug.Assert(m_vertexDeclaration == null);\n            m_vertexDeclaration = new VertexDeclaration(device,   elements);\n        }\n\n        public static void UnloadContent()\n        {\n            if (m_vertexDeclaration != null)\n            {\n                m_vertexDeclaration.Dispose();\n                m_vertexDeclaration = null;\n            }\n        }\n    }\n\n    \n    struct MyVertexFormatPositionTextureColor \n    {\n        static VertexDeclaration m_vertexDeclaration;\n        static int m_stride;\n\n        public Vector3 Position;\n        public Vector2 TexCoord;\n        public Vector4 Color;\n\n        public MyVertexFormatPositionTextureColor(Vector3 position, Vector2 texCoord, Vector4 color)\n        {\n            Position = position;\n            TexCoord = texCoord;\n            Color = color;\n        }\n\n        public static VertexDeclaration VertexDeclaration\n        {\n            get { return m_vertexDeclaration; }\n        }\n\n        public static int Stride\n        {\n            get { return m_stride; }\n        }\n\n        public static void LoadContent(Device device)\n        {\n            //new VertexElement(0, VertexElementFormat.Vector3, VertexElementUsage.Position, 0),\n            //new VertexElement(sizeof(float) * (3), VertexElementFormat.Vector2, VertexElementUsage.TextureCoordinate, 0),\n            //new VertexElement(sizeof(float) * (3 + 2), VertexElementFormat.Vector4, VertexElementUsage.Color, 0)\n\n            var elements = new[] {\n        \t\tnew VertexElement(0, 0, DeclarationType.Float3, DeclarationMethod.Default, DeclarationUsage.Position, 0),\n        \t\tnew VertexElement(0, sizeof(float) * (3), DeclarationType.Float2, DeclarationMethod.Default, DeclarationUsage.TextureCoordinate, 0),\n                new VertexElement(0, sizeof(float) * (3 + 2), DeclarationType.Float4, DeclarationMethod.Default, DeclarationUsage.Color, 0),\n\t\t\t\tVertexElement.VertexDeclarationEnd\n        \t};\n\n            m_stride = D3DX.GetDeclarationVertexSize(elements, 0);\n            System.Diagnostics.Debug.Assert(m_vertexDeclaration == null);\n            m_vertexDeclaration = new VertexDeclaration(device, elements);\n        }\n\n        public static void UnloadContent()\n        {\n            if (m_vertexDeclaration != null)\n            {\n                m_vertexDeclaration.Dispose();\n                m_vertexDeclaration = null;\n            }\n        }\n    }\n\n\n    struct MyVertexFormatPositionTexture\n    {\n        static VertexDeclaration m_vertexDeclaration;\n        static int m_stride;\n\n        public Vector3 Position;\n        public Vector2 TexCoord;\n\n        public MyVertexFormatPositionTexture(Vector3 position, Vector2 texCoord)\n        {\n            Position = position;\n            TexCoord = texCoord;\n        }\n\n        public static VertexDeclaration VertexDeclaration\n        {\n            get { return m_vertexDeclaration; }\n        }\n\n        public static int Stride\n        {\n            get { return m_stride; }\n        }\n\n        public static void LoadContent(Device device)\n        {\n            var elements = new[] {\n        \t\tnew VertexElement(0, 0, DeclarationType.Float3, DeclarationMethod.Default, DeclarationUsage.Position, 0),\n        \t\tnew VertexElement(0, sizeof(float) * (3), DeclarationType.Float2, DeclarationMethod.Default, DeclarationUsage.TextureCoordinate, 0),\n\t\t\t\tVertexElement.VertexDeclarationEnd\n        \t};\n\n            m_stride = D3DX.GetDeclarationVertexSize(elements, 0);\n            System.Diagnostics.Debug.Assert(m_vertexDeclaration == null);\n            m_vertexDeclaration = new VertexDeclaration(device, elements);\n        }\n\n        public static void UnloadContent()\n        {\n            if (m_vertexDeclaration != null)\n            {\n                m_vertexDeclaration.Dispose();\n                m_vertexDeclaration = null;\n            }\n        }\n    }\n\n    struct MyVertexFormatPosition\n    {\n        static VertexDeclaration m_vertexDeclaration;\n        static int m_stride;\n\n        public Vector3 Position;\n\n        public MyVertexFormatPosition(Vector3 position)\n        {\n            Position = position;\n        }\n\n        public static VertexDeclaration VertexDeclaration\n        {\n            get { return m_vertexDeclaration; }\n        }\n\n        public static int Stride\n        {\n            get { return m_stride; }\n        }\n\n        public static void LoadContent(Device device)\n        {\n            var elements = new[] {\n        \t\tnew VertexElement(0, 0, DeclarationType.Float3, DeclarationMethod.Default, DeclarationUsage.Position, 0),\n\t\t\t\tVertexElement.VertexDeclarationEnd\n        \t};\n\n            m_stride = D3DX.GetDeclarationVertexSize(elements, 0);\n            System.Diagnostics.Debug.Assert(m_vertexDeclaration == null);\n            m_vertexDeclaration = new VertexDeclaration(device, elements);\n        }\n\n        public static void UnloadContent()\n        {\n            if (m_vertexDeclaration != null)\n            {\n                m_vertexDeclaration.Dispose();\n                m_vertexDeclaration = null;\n            }\n        }\n    }\n\n    struct MyVertexFormatPositionColor\n    {\n        static VertexDeclaration m_vertexDeclaration;\n        static int m_stride;\n\n        public Vector3 Position;\n        public Vector4 Color;\n\n        public MyVertexFormatPositionColor(Vector3 position, Vector4 color)\n        {\n            Position = position;\n            Color = color;\n        }\n\n        public static VertexDeclaration VertexDeclaration\n        {\n            get { return m_vertexDeclaration; }\n        }\n\n        public static int Stride\n        {\n            get { return m_stride; }\n        }\n\n        public static void LoadContent(Device device)\n        {\n            var elements = new[] {\n        \t\tnew VertexElement(0, 0, DeclarationType.Float3, DeclarationMethod.Default, DeclarationUsage.Position, 0),\n                new VertexElement(0, sizeof(float) * 3, DeclarationType.Float4, DeclarationMethod.Default, DeclarationUsage.Color, 0),\n\t\t\t\tVertexElement.VertexDeclarationEnd\n        \t};\n\n            m_stride = D3DX.GetDeclarationVertexSize(elements, 0);\n            System.Diagnostics.Debug.Assert(m_vertexDeclaration == null);\n            m_vertexDeclaration = new VertexDeclaration(device, elements);\n        }\n\n        public static void UnloadContent()\n        {\n            if (m_vertexDeclaration != null)\n            {\n                m_vertexDeclaration.Dispose();\n                m_vertexDeclaration = null;\n            }\n        }\n    }\n    \n    //  For drawing background cube using cube textures (see that texture coord0 has 3 components)\n    struct MyVertexFormatPositionTexture3 \n    {\n        static VertexDeclaration m_vertexDeclaration;\n        static int m_stride;\n\n        public Vector3 Position;\n        public Vector3 TexCoord;\n\n        public MyVertexFormatPositionTexture3(Vector3 position, Vector3 texCoord)\n        {\n            Position = position;\n            TexCoord = texCoord;\n        }\n\n        public static VertexDeclaration VertexDeclaration\n        {\n            get { return m_vertexDeclaration; }\n        }\n\n        public static int Stride\n        {\n            get { return m_stride; }\n        }\n\n        public static void LoadContent(Device device)\n        {\n            //new VertexElement(0, VertexElementFormat.Vector3, VertexElementUsage.Position, 0),\n            //new VertexElement(sizeof(float) * 3, VertexElementFormat.Vector3, VertexElementUsage.TextureCoordinate, 0)\n\n            var elements = new[] {\n        \t\tnew VertexElement(0, 0, DeclarationType.Float3, DeclarationMethod.Default, DeclarationUsage.Position, 0),\n        \t\tnew VertexElement(0, sizeof(float) * (3), DeclarationType.Float3, DeclarationMethod.Default, DeclarationUsage.TextureCoordinate, 0),\n\t\t\t\tVertexElement.VertexDeclarationEnd\n        \t};\n\n            m_stride = D3DX.GetDeclarationVertexSize(elements, 0);\n            System.Diagnostics.Debug.Assert(m_vertexDeclaration == null);\n            m_vertexDeclaration = new VertexDeclaration(device, elements);\n        }\n\n        public static void UnloadContent()\n        {\n            if (m_vertexDeclaration != null)\n            {\n                m_vertexDeclaration.Dispose();\n                m_vertexDeclaration = null;\n            }\n        }\n    }\n\n    /*\n    struct MyVertexFormatBackgroundPoint : IVertexType\n    {\n        public Vector3 Position;\n        public Color Color;\n        public Vector4 Data;\n\n        public MyVertexFormatBackgroundPoint(Vector3 position, Color color, Vector4 data)\n        {\n            this.Position = position;\n            this.Color = color;\n            this.Data = data;\n        }\n\n        public static readonly VertexDeclaration VertexDeclaration = new VertexDeclaration\n        (\n            new VertexElement(0, VertexElementFormat.Vector3, VertexElementUsage.Position, 0),\n            new VertexElement(sizeof(float) * 3, VertexElementFormat.Color, VertexElementUsage.Color, 0),\n            new VertexElement(sizeof(float) * 7, VertexElementFormat.Vector4, VertexElementUsage.TextureCoordinate, 0)\n        );\n\n        VertexDeclaration IVertexType.VertexDeclaration { get { return VertexDeclaration; } }\n    }\n    */\n    [StructLayout(LayoutKind.Sequential, Pack = 1)]\n    struct MyVertexFormatPositionNormal \n    {\n        static VertexDeclaration m_vertexDeclaration;\n        static int m_stride;\n\n        public HalfVector4 _PositionScale;\n        public Byte4 _Normal;\n\n        public Vector3 Position\n        {\n            get { return VF_Packer.UnpackPosition(ref _PositionScale); }\n            set { _PositionScale = VF_Packer.PackPosition(ref value); }\n        }\n\n        public Vector3 Normal\n        {\n            get { return VF_Packer.UnpackNormal(ref _Normal); }\n            set { _Normal.PackedValue = VF_Packer.PackNormal(ref value); }\n        }\n\n        public static VertexDeclaration VertexDeclaration\n        {\n            get { return m_vertexDeclaration; }\n        }\n\n        public static int Stride\n        {\n            get { return m_stride; }\n        }\n\n        public static void LoadContent(Device device)\n        {\n            //new VertexElement(0, VertexElementFormat.HalfVector4, VertexElementUsage.Position, 0),\n            //new VertexElement(8, VertexElementFormat.Byte4, VertexElementUsage.Normal, 0)\n\n\n            var elements = new[] {\n        \t\tnew VertexElement(0, 0, DeclarationType.HalfFour, DeclarationMethod.Default, DeclarationUsage.Position, 0),\n        \t\tnew VertexElement(0, 8, DeclarationType.Ubyte4, DeclarationMethod.Default, DeclarationUsage.Normal, 0),\n\t\t\t\tVertexElement.VertexDeclarationEnd\n        \t};\n\n            m_stride = D3DX.GetDeclarationVertexSize(elements, 0);\n            System.Diagnostics.Debug.Assert(m_vertexDeclaration == null);\n            m_vertexDeclaration = new VertexDeclaration(device, elements);\n        }\n\n        public static void UnloadContent()\n        {\n            if (m_vertexDeclaration != null)\n            {\n                m_vertexDeclaration.Dispose();\n                m_vertexDeclaration = null;\n            }\n        }\n    }\n\n     \n \n    //  Used for drawing models that have diffuse, texture and normals\n    public struct MyVertexFormatPositionNormalTexture \n    {\n        static VertexDeclaration m_vertexDeclaration;\n        static int m_stride;\n\n        public Vector3 Position;\n        public Vector3 Normal;\n        public Vector2 TexCoord;\n\n\n        public static VertexDeclaration VertexDeclaration\n        {\n            get { return m_vertexDeclaration; }\n        }\n\n        public static int Stride\n        {\n            get { return m_stride; }\n        }\n\n        public static void LoadContent(Device device)\n        {\n            //new VertexElement(0, VertexElementFormat.Vector3, VertexElementUsage.Position, 0),\n            //new VertexElement(sizeof(float) * 3, VertexElementFormat.Vector3, VertexElementUsage.Normal, 0),\n            //new VertexElement(sizeof(float) * (3 + 3), VertexElementFormat.Vector2, VertexElementUsage.TextureCoordinate, 0)\n\n\n            var elements = new[] {\n        \t\tnew VertexElement(0, 0, DeclarationType.Float3, DeclarationMethod.Default, DeclarationUsage.Position, 0),\n        \t\tnew VertexElement(0, sizeof(float) * 3, DeclarationType.Float3, DeclarationMethod.Default, DeclarationUsage.Normal, 0),\n                new VertexElement(0, sizeof(float) * (3 + 3), DeclarationType.Float2, DeclarationMethod.Default, DeclarationUsage.TextureCoordinate, 0),\n\t\t\t\tVertexElement.VertexDeclarationEnd\n        \t};\n\n            m_stride = D3DX.GetDeclarationVertexSize(elements, 0);\n            System.Diagnostics.Debug.Assert(m_vertexDeclaration == null);\n            m_vertexDeclaration = new VertexDeclaration(device, elements);\n        }\n\n        public static void UnloadContent()\n        {\n            if (m_vertexDeclaration != null)\n            {\n                m_vertexDeclaration.Dispose();\n                m_vertexDeclaration = null;\n            }\n        }\n    }\n\n            /*\n    //  Used for drawing models that have diffuse, texture and normals\n    public struct MyVertexFormatPositionNormalTexturePacked : IVertexType\n    {\n        // packed from 32B to 16B\n        // position Range: signed <0 - 65mil> Error: 0.00244%\n        public HalfVector4 _PositionScale;    // unpacking in HLSL: Position = _PositionScale.xyz * _PositionScale.w;\n        Byte4 _Normal;\n        HalfVector2 _TexCoord;\n\n        public static readonly VertexDeclaration VertexDeclaration = new VertexDeclaration\n        (\n            new VertexElement(0, VertexElementFormat.HalfVector4, VertexElementUsage.Position, 0),\n            new VertexElement(8, VertexElementFormat.Byte4, VertexElementUsage.Normal, 0),\n            new VertexElement(12, VertexElementFormat.HalfVector2, VertexElementUsage.TextureCoordinate, 0)\n        );\n\n        public Vector3 Position\n        {\n            get { return VF_Packer.UnpackPosition(ref _PositionScale); }\n            set { _PositionScale = VF_Packer.PackPosition(ref value); }\n        }\n\n        public Vector3 Normal\n        {\n            get { return VF_Packer.UnpackNormal(ref _Normal); }\n            set { _Normal.PackedValue = VF_Packer.PackNormal(ref value); }\n        }\n\n        public Vector2 TexCoord\n        {\n            get { return _TexCoord.ToVector2(); }\n            set { _TexCoord = new HalfVector2(value); }\n        }\n\n\n        public HalfVector4 PositionPacked\n        {\n            get { return _PositionScale; }\n            set { _PositionScale = value; }\n        }\n\n        public Byte4 NormalPacked\n        {\n            get { return _Normal; }\n            set { _Normal = value; }\n        }\n\n        public HalfVector2 TexCoordPacked\n        {\n            get { return _TexCoord; }\n            set { _TexCoord = value; }\n        }\n\n\n        VertexDeclaration IVertexType.VertexDeclaration { get { return VertexDeclaration; } }\n    }\n\n*/\n\n    //  Used for drawing models that have diffuse, texture and normals\n    [StructLayout(LayoutKind.Sequential, Pack = 1)]\n    public struct MyVertexFormatPositionNormalTextureMask \n    {\n        static VertexDeclaration m_vertexDeclaration;\n        static int m_stride;\n\n\n        // packed from 40B to 20B\n        public HalfVector4 _PositionScale;\n        public Byte4 _Normal;\n        public HalfVector2 _TexCoord;\n        public HalfVector2 _MaskCoord;\n\n        public Vector3 Position\n        {\n            get { return VF_Packer.UnpackPosition(ref _PositionScale); }\n            set { _PositionScale = VF_Packer.PackPosition(ref value); }\n        }\n\n        public Vector3 Normal\n        {\n            get { return VF_Packer.UnpackNormal(ref _Normal); }\n            set { _Normal.PackedValue = VF_Packer.PackNormal(ref value); }\n        }\n\n        public Vector2 TexCoord\n        {\n            get { return _TexCoord.ToVector2(); }\n            set { _TexCoord = new HalfVector2(value); }\n        }\n\n        public Vector2 MaskCoord\n        {\n            get { return _MaskCoord.ToVector2(); }\n            set { _MaskCoord = new HalfVector2(value); }\n        }\n\n\n        public HalfVector4 PositionPacked\n        {\n            get { return _PositionScale; }\n            set { _PositionScale = value; }\n        }\n\n        public Byte4 NormalPacked\n        {\n            get { return _Normal; }\n            set { _Normal = value; }\n        }\n\n        public HalfVector2 TexCoordPacked\n        {\n            get { return _TexCoord; }\n            set { _TexCoord = value; }\n        }\n\n        public HalfVector2 MaskCoordPacked\n        {\n            get { return _MaskCoord; }\n            set { _MaskCoord = value; }\n        }\n\n        public static VertexDeclaration VertexDeclaration\n        {\n            get { return m_vertexDeclaration; }\n        }\n\n        public static int Stride\n        {\n            get { return m_stride; }\n        }\n\n        public static void LoadContent(Device device)\n        {\n            //new VertexElement(0, VertexElementFormat.HalfVector4, VertexElementUsage.Position, 0),\n            //new VertexElement(8, VertexElementFormat.Byte4, VertexElementUsage.Normal, 0),\n            //new VertexElement(12, VertexElementFormat.HalfVector2, VertexElementUsage.TextureCoordinate, 0),\n            //new VertexElement(16, VertexElementFormat.HalfVector2, VertexElementUsage.TextureCoordinate, 1)\n\n\n            var elements = new[] {\n        \t\tnew VertexElement(0, 0, DeclarationType.HalfFour, DeclarationMethod.Default, DeclarationUsage.Position, 0),\n        \t\tnew VertexElement(0, 8, DeclarationType.Ubyte4, DeclarationMethod.Default, DeclarationUsage.Normal, 0),\n                new VertexElement(0, 12, DeclarationType.HalfTwo, DeclarationMethod.Default, DeclarationUsage.TextureCoordinate, 0),\n                new VertexElement(0, 16, DeclarationType.HalfTwo, DeclarationMethod.Default, DeclarationUsage.TextureCoordinate, 1),\n\t\t\t\tVertexElement.VertexDeclarationEnd\n        \t};\n\n            m_stride = D3DX.GetDeclarationVertexSize(elements, 0);\n            System.Diagnostics.Debug.Assert(m_vertexDeclaration == null);\n            m_vertexDeclaration = new VertexDeclaration(device, elements);\n        }\n\n        public static void UnloadContent()\n        {\n            if (m_vertexDeclaration != null)\n            {\n                m_vertexDeclaration.Dispose();\n                m_vertexDeclaration = null;\n            }\n        }\n    }\n               \n    //  Used for drawing models that have diffuse, specular and normal map, plus light map and dirt map\n    [StructLayout(LayoutKind.Sequential, Pack = 1)]\n    public struct MyVertexFormatPositionNormalTextureTangentBinormal\n    {\n        static VertexDeclaration m_vertexDeclaration;\n        static int m_stride;\n\n        // packed from 56B to 28B\n        public HalfVector4 _PositionScale;\n        public HalfVector2 _TexCoord;\n        public Byte4 _Normal;\n        public Byte4 _Tangent;\n        public Byte4 _Binormal;\n\n        public Vector3 Position\n        {\n            get { return VF_Packer.UnpackPosition(ref _PositionScale); }\n            set { _PositionScale = VF_Packer.PackPosition(ref value); }\n        }\n\n        public Vector3 Normal\n        {\n            get { return VF_Packer.UnpackNormal(ref _Normal); }\n            set { _Normal.PackedValue = VF_Packer.PackNormal(ref value); }\n        }\n\n        public Vector2 TexCoord\n        {\n            get { return _TexCoord.ToVector2(); }\n            set { _TexCoord = new HalfVector2(value); }\n        }\n\n        public Vector3 Tangent\n        {\n            get { return VF_Packer.UnpackNormal(ref _Tangent); }\n            set { _Tangent.PackedValue = VF_Packer.PackNormal(ref value); }\n        }\n\n        public Vector3 Binormal\n        {\n            get { return VF_Packer.UnpackNormal(ref _Binormal); }\n            set { _Binormal.PackedValue = VF_Packer.PackNormal(ref value); }\n        }\n\n        public HalfVector4 PositionPacked\n        {\n            get { return _PositionScale; }\n            set { _PositionScale = value; }\n        }\n\n        public Byte4 NormalPacked\n        {\n            get { return _Normal; }\n            set { _Normal = value; }\n        }\n\n        public HalfVector2 TexCoordPacked\n        {\n            get { return _TexCoord; }\n            set { _TexCoord = value; }\n        }\n\n        public Byte4 TangentPacked\n        {\n            get { return _Tangent; }\n            set { _Tangent = value; }\n        }\n\n        public Byte4 BinormalPacked\n        {\n            get { return _Binormal; }\n            set { _Binormal = value; }\n        }\n\n        public static VertexDeclaration VertexDeclaration\n        {\n            get { return m_vertexDeclaration; }\n        }\n\n        public static int Stride\n        {\n            get { return m_stride; }\n        }\n\n        public static void LoadContent(Device device)\n        {\n            //new VertexElement(0, VertexElementFormat.HalfVector4, VertexElementUsage.Position, 0),\n            //new VertexElement(8, VertexElementFormat.HalfVector2, VertexElementUsage.TextureCoordinate, 0),\n            //new VertexElement(12, VertexElementFormat.Byte4, VertexElementUsage.Normal, 0),\n            //new VertexElement(16, VertexElementFormat.Byte4, VertexElementUsage.Tangent, 0),\n            //new VertexElement(20, VertexElementFormat.Byte4, VertexElementUsage.Binormal, 0)\n\n            var elements = new[] {\n        \t\tnew VertexElement(0, 0, DeclarationType.HalfFour, DeclarationMethod.Default, DeclarationUsage.Position, 0),\n        \t\tnew VertexElement(0, 8, DeclarationType.HalfTwo, DeclarationMethod.Default, DeclarationUsage.TextureCoordinate, 0),\n                new VertexElement(0, 12, DeclarationType.Ubyte4, DeclarationMethod.Default, DeclarationUsage.Normal, 0),\n                new VertexElement(0, 16, DeclarationType.Ubyte4, DeclarationMethod.Default, DeclarationUsage.Tangent, 0),\n                new VertexElement(0, 20, DeclarationType.Ubyte4, DeclarationMethod.Default, DeclarationUsage.Binormal, 0),\n\t\t\t\tVertexElement.VertexDeclarationEnd\n        \t};\n\n            m_stride = D3DX.GetDeclarationVertexSize(elements, 0);\n            System.Diagnostics.Debug.Assert(m_vertexDeclaration == null);\n            m_vertexDeclaration = new VertexDeclaration(device, elements);\n        }\n\n        public static void UnloadContent()\n        {\n            if (m_vertexDeclaration != null)\n            {\n                m_vertexDeclaration.Dispose();\n                m_vertexDeclaration = null;\n            }\n        }\n    }\n\n    \n    [StructLayout(LayoutKind.Sequential, Pack = 1)]\n    public struct MyVertexFormatPositionNormalTextureTangentBinormalMask \n    {\n        static VertexDeclaration m_vertexDeclaration;\n        static int m_stride;\n\n        // packed from 64B to 28B\n        public HalfVector4 _PositionScale;\n        public Byte4 _Normal;\n        public HalfVector2 _TexCoord;\n        public Byte4 _Tangent;\n        public Byte4 _Binormal;\n        public HalfVector2 _MaskCoord;\n\n        public Vector3 Position\n        {\n            get { return VF_Packer.UnpackPosition(ref _PositionScale); }\n            set { _PositionScale = VF_Packer.PackPosition(ref value); }\n        }\n\n        public HalfVector4 PositionPacked\n        {\n            get { return _PositionScale; }\n            set { _PositionScale = value; }\n        }\n\n\n        public Vector3 Normal\n        {\n            get { return VF_Packer.UnpackNormal(ref _Normal); }\n            set { _Normal.PackedValue = VF_Packer.PackNormal(ref value); }\n        }\n\n        public Byte4 NormalPacked\n        {\n            get { return _Normal; }\n            set { _Normal = value; }\n        }\n\n        public Vector2 TexCoord\n        {\n            get { return _TexCoord.ToVector2(); }\n            set { _TexCoord = new HalfVector2(value); }\n        }\n\n        public HalfVector2 TexCoordPacked\n        {\n            get { return _TexCoord; }\n            set { _TexCoord = value; }\n        }\n\n        public Vector3 Tangent\n        {\n            get { return VF_Packer.UnpackNormal(ref _Tangent); }\n            set { _Tangent.PackedValue = VF_Packer.PackNormal(ref value); }\n        }\n\n        public Byte4 TangentPacked\n        {\n            get { return _Tangent; }\n            set { _Tangent = value; }\n        }\n\n        public Vector3 Binormal\n        {\n            get { return VF_Packer.UnpackNormal(ref _Binormal); }\n            set { _Binormal.PackedValue = VF_Packer.PackNormal(ref value); }\n        }\n\n        public Byte4 BinormalPacked\n        {\n            get { return _Binormal; }\n            set { _Binormal = value; }\n        }\n\n        public Vector2 MaskCoord\n        {\n            get { return _MaskCoord.ToVector2(); }\n            set { _MaskCoord = new HalfVector2(value); }\n        }\n\n        public HalfVector2 MaskCoordPacked\n        {\n            get { return _MaskCoord; }\n            set { _MaskCoord = value; }\n        }\n\n        public static VertexDeclaration VertexDeclaration\n        {\n            get { return m_vertexDeclaration; }\n        }\n\n        public static int Stride\n        {\n            get { return m_stride; }\n        }\n\n        public static void LoadContent(Device device)\n        {\n            //new VertexElement(0, VertexElementFormat.HalfVector4, VertexElementUsage.Position, 0),\n            //new VertexElement(8, VertexElementFormat.Byte4, VertexElementUsage.Normal, 0),\n            //new VertexElement(12, VertexElementFormat.HalfVector2, VertexElementUsage.TextureCoordinate, 0),\n            //new VertexElement(16, VertexElementFormat.Byte4, VertexElementUsage.Tangent, 0),\n            //new VertexElement(20, VertexElementFormat.Byte4, VertexElementUsage.Binormal, 0),\n            //new VertexElement(24, VertexElementFormat.HalfVector2, VertexElementUsage.TextureCoordinate, 1)\n\n\n            var elements = new[] {\n        \t\tnew VertexElement(0, 0, DeclarationType.HalfFour, DeclarationMethod.Default, DeclarationUsage.Position, 0),\n        \t\tnew VertexElement(0, 8, DeclarationType.Ubyte4, DeclarationMethod.Default, DeclarationUsage.Normal, 0),\n                new VertexElement(0, 12, DeclarationType.HalfTwo, DeclarationMethod.Default, DeclarationUsage.TextureCoordinate, 0),\n                new VertexElement(0, 16, DeclarationType.Ubyte4, DeclarationMethod.Default, DeclarationUsage.Tangent, 0),\n                new VertexElement(0, 20, DeclarationType.Ubyte4, DeclarationMethod.Default, DeclarationUsage.Binormal, 0),\n                new VertexElement(0, 24, DeclarationType.HalfTwo, DeclarationMethod.Default, DeclarationUsage.TextureCoordinate, 1),\n\t\t\t\tVertexElement.VertexDeclarationEnd\n        \t};\n\n            m_stride = D3DX.GetDeclarationVertexSize(elements, 0);\n            System.Diagnostics.Debug.Assert(m_vertexDeclaration == null);\n            m_vertexDeclaration = new VertexDeclaration(device, elements);\n        }\n\n        public static void UnloadContent()\n        {\n            if (m_vertexDeclaration != null)\n            {\n                m_vertexDeclaration.Dispose();\n                m_vertexDeclaration = null;\n            }\n        }\n    }\n\n    \n    [StructLayout(LayoutKind.Sequential, Pack = 1)]\n    struct MyVertexFormatDecal \n    {\n        static VertexDeclaration m_vertexDeclaration;\n        static int m_stride;\n\n        // 76B packed to 36B\n        public Vector3 Position;    // Don't pack decal position, because it is stored in world space and can cause Z-fight with original model.\n        HalfVector4 _Color;\n        HalfVector2 _TexCoord;\n        Byte4 _Normal;\n        Byte4 _Tangent;\n        Byte4 _Binormal;\n        HalfVector2 _EmissiveRatio;\n\n        public Vector4 Color\n        {\n            get { return _Color.ToVector4(); }\n            set { _Color = new HalfVector4(value); }\n        }\n\n        public Vector2 TexCoord\n        {\n            get { return _TexCoord.ToVector2(); }\n            set { _TexCoord = new HalfVector2(value); }\n        }\n\n        public Vector3 Normal\n        {\n            get { return VF_Packer.UnpackNormal(ref _Normal); }\n            set { _Normal.PackedValue = VF_Packer.PackNormal(ref value); }\n        }\n\n        public Vector3 Tangent\n        {\n            get { return VF_Packer.UnpackNormal(ref _Tangent); }\n            set { _Tangent.PackedValue = VF_Packer.PackNormal(ref value); }\n        }\n\n        public Vector3 Binormal\n        {\n            get { return VF_Packer.UnpackNormal(ref _Binormal); }\n            set { _Binormal.PackedValue = VF_Packer.PackNormal(ref value); }\n        }\n\n        public float EmissiveRatio\n        {\n            get { return _EmissiveRatio.ToVector2().X; }\n            set { _EmissiveRatio = new HalfVector2(value, 0); }\n        }\n\n        public static VertexDeclaration VertexDeclaration\n        {\n            get { return m_vertexDeclaration; }\n        }\n\n        public static int Stride\n        {\n            get { return m_stride; }\n        }\n\n        public static void LoadContent(Device device)\n        {\n            //new VertexElement(0, VertexElementFormat.Vector3, VertexElementUsage.Position, 0),\n            //new VertexElement(12, VertexElementFormat.HalfVector4, VertexElementUsage.Color, 0),\n            //new VertexElement(20, VertexElementFormat.HalfVector2, VertexElementUsage.TextureCoordinate, 0),\n            //new VertexElement(24, VertexElementFormat.Byte4, VertexElementUsage.Normal, 0),\n            //new VertexElement(28, VertexElementFormat.Byte4, VertexElementUsage.Tangent, 0),\n            //new VertexElement(32, VertexElementFormat.Byte4, VertexElementUsage.Binormal, 0),\n            //new VertexElement(36, VertexElementFormat.HalfVector2, VertexElementUsage.TextureCoordinate, 1)\n\n            var elements = new[] {\n        \t\tnew VertexElement(0, 0, DeclarationType.Float3, DeclarationMethod.Default, DeclarationUsage.Position, 0),\n        \t\tnew VertexElement(0, 12, DeclarationType.HalfFour, DeclarationMethod.Default, DeclarationUsage.Color, 0),\n                new VertexElement(0, 20, DeclarationType.HalfTwo, DeclarationMethod.Default, DeclarationUsage.TextureCoordinate, 0),\n                new VertexElement(0, 24, DeclarationType.Ubyte4, DeclarationMethod.Default, DeclarationUsage.Normal, 0),\n                new VertexElement(0, 28, DeclarationType.Ubyte4, DeclarationMethod.Default, DeclarationUsage.Tangent, 0),\n                new VertexElement(0, 32, DeclarationType.Ubyte4, DeclarationMethod.Default, DeclarationUsage.Binormal, 0),\n                new VertexElement(0, 36, DeclarationType.HalfTwo, DeclarationMethod.Default, DeclarationUsage.TextureCoordinate, 1),\n\t\t\t\tVertexElement.VertexDeclarationEnd\n        \t};\n\n            m_stride = D3DX.GetDeclarationVertexSize(elements, 0);\n            System.Diagnostics.Debug.Assert(m_vertexDeclaration == null);\n            m_vertexDeclaration = new VertexDeclaration(device, elements);\n        }\n\n        public static void UnloadContent()\n        {\n            if (m_vertexDeclaration != null)\n            {\n                m_vertexDeclaration.Dispose();\n                m_vertexDeclaration = null;\n            }\n        }\n    }\n          \n    struct MyVertexFormatGlassDecal \n    {\n        static VertexDeclaration m_vertexDeclaration;\n        static int m_stride;\n\n        public HalfVector4 _PositionScale;\n        public HalfVector2 _TexCoord;\n        public Byte4 _Normal;\n\n        public Vector3 Position\n        {\n            get { return VF_Packer.UnpackPosition(ref _PositionScale); }\n            set { _PositionScale = VF_Packer.PackPosition(ref value); }\n        }\n\n        // PositionAndAlpha for MyEffectCockpitGlass\n        public void SetPositionAndAlpha(ref Vector3 position, float alpha)\n        {\n            _PositionScale = new HalfVector4(position.X, position.Y, position.Z, alpha);\n        }\n\n        public Vector3 Normal\n        {\n            get { return VF_Packer.UnpackNormal(ref _Normal); }\n            set { _Normal.PackedValue = VF_Packer.PackNormal(ref value); }\n        }\n\n        public Vector2 TexCoord\n        {\n            get { return _TexCoord.ToVector2(); }\n            set { _TexCoord = new HalfVector2(value); }\n        }\n\n        public static VertexDeclaration VertexDeclaration\n        {\n            get { return m_vertexDeclaration; }\n        }\n\n        public static int Stride\n        {\n            get { return m_stride; }\n        }\n\n        public static void LoadContent(Device device)\n        {\n            //new VertexElement(0, VertexElementFormat.HalfVector4, VertexElementUsage.Position, 0),\n            //new VertexElement(8, VertexElementFormat.HalfVector2, VertexElementUsage.TextureCoordinate, 0),\n            //new VertexElement(12, VertexElementFormat.Byte4, VertexElementUsage.Normal, 0)\n\n            var elements = new[] {\n        \t\tnew VertexElement(0, 0, DeclarationType.HalfFour, DeclarationMethod.Default, DeclarationUsage.Position, 0),\n        \t\tnew VertexElement(0, 8, DeclarationType.HalfFour, DeclarationMethod.Default, DeclarationUsage.TextureCoordinate, 0),\n                new VertexElement(0, 12, DeclarationType.Ubyte4, DeclarationMethod.Default, DeclarationUsage.Normal, 0),\n\t\t\t\tVertexElement.VertexDeclarationEnd\n        \t};\n\n            m_stride = D3DX.GetDeclarationVertexSize(elements, 0);\n            System.Diagnostics.Debug.Assert(m_vertexDeclaration == null);\n            m_vertexDeclaration = new VertexDeclaration(device, elements);\n        }\n\n        public static void UnloadContent()\n        {\n            if (m_vertexDeclaration != null)\n            {\n                m_vertexDeclaration.Dispose();\n                m_vertexDeclaration = null;\n            }\n        }\n    }\n                 /*\n    //  Used for drawing models that have diffuse, specular and normal map, plus complete map\n    struct MyVertexFormatPositionNormalTangentBinormalTwoTexture : IVertexType\n    {\n        public Vector3 Position;\n        public Vector3 Normal;\n        public Vector2 TexCoord0;\n        public Vector2 TexCoord1;\n        public Vector3 Tangent;\n        public Vector3 Binormal;\n\n        public static readonly VertexDeclaration VertexDeclaration = new VertexDeclaration\n        (\n            new VertexElement(0, VertexElementFormat.Vector3, VertexElementUsage.Position, 0),\n            new VertexElement(sizeof(float) * 3, VertexElementFormat.Vector3, VertexElementUsage.Normal, 0),\n            new VertexElement(sizeof(float) * 6, VertexElementFormat.Vector2, VertexElementUsage.TextureCoordinate, 0),\n            new VertexElement(sizeof(float) * 8, VertexElementFormat.Vector2, VertexElementUsage.TextureCoordinate, 1),\n            new VertexElement(sizeof(float) * 10, VertexElementFormat.Vector3, VertexElementUsage.Tangent, 0),\n            new VertexElement(sizeof(float) * 13, VertexElementFormat.Vector3, VertexElementUsage.Binormal, 0)\n        );\n\n        VertexDeclaration IVertexType.VertexDeclaration { get { return VertexDeclaration; } }\n    }\n\n    struct MyVertexFormatDebugDrawBillboard : IVertexType\n    {\n        public Vector3 Position;\n        public Vector4 Color;      //  Color stored in TEXCOORD because of clamping\n        public Vector2 TexCoord;\n\n        public static readonly VertexDeclaration VertexDeclaration = new VertexDeclaration\n        (\n            new VertexElement(0, VertexElementFormat.Vector3, VertexElementUsage.Position, 0),\n            new VertexElement(sizeof(float) * (0 + 3), VertexElementFormat.Vector4, VertexElementUsage.TextureCoordinate, 0),\n            new VertexElement(sizeof(float) * (0 + 3 + 4), VertexElementFormat.Vector2, VertexElementUsage.TextureCoordinate, 1)\n        );\n\n        VertexDeclaration IVertexType.VertexDeclaration { get { return VertexDeclaration; } }\n    }\n    */\n    [StructLayout(LayoutKind.Sequential, Pack = 1)]\n    struct MyVertexFormatTransparentGeometry\n    {\n        static VertexDeclaration m_vertexDeclaration;\n        static int m_stride;\n\n        public Vector3 Position; //12\n        public HalfVector4 TexCoord; //8\n        public HalfVector4 Color;    //8\n        public HalfVector2 TexCoord2; //4\n\n        public static VertexDeclaration VertexDeclaration\n        {\n            get { return m_vertexDeclaration; }\n        }\n\n        public static int Stride\n        {\n            get { return m_stride; }\n        }\n\n        public static void LoadContent(Device device)\n        {\n            //new VertexElement(0, VertexElementFormat.Vector3, VertexElementUsage.Position, 0),    //12\n            //new VertexElement(sizeof(float) * (0 + 3), VertexElementFormat.HalfVector4, VertexElementUsage.TextureCoordinate, 0), //8\n            //new VertexElement(sizeof(float) * (0 + 3 + 2), VertexElementFormat.HalfVector4, VertexElementUsage.Normal, 0), //8\n            //new VertexElement(sizeof(float) * (0 + 3 + 2 + 2), VertexElementFormat.HalfVector2, VertexElementUsage.TextureCoordinate, 1) //4\n\n            var elements = new[] {\n        \t\tnew VertexElement(0, 0, DeclarationType.Float3, DeclarationMethod.Default, DeclarationUsage.Position, 0), //12\n                new VertexElement(0, sizeof(float) * (0 + 3), DeclarationType.HalfFour, DeclarationMethod.Default, DeclarationUsage.TextureCoordinate, 0), //8\n                new VertexElement(0, sizeof(float) * (0 + 3 + 2), DeclarationType.HalfFour, DeclarationMethod.Default, DeclarationUsage.Normal, 0), //8\n                new VertexElement(0, sizeof(float) * (0 + 3 + 2 + 2), DeclarationType.HalfTwo, DeclarationMethod.Default, DeclarationUsage.TextureCoordinate, 1), //4\n\t\t\t\tVertexElement.VertexDeclarationEnd\n        \t};\n\n            m_stride = D3DX.GetDeclarationVertexSize(elements, 0);\n            System.Diagnostics.Debug.Assert(m_vertexDeclaration == null);\n            m_vertexDeclaration = new VertexDeclaration(device, elements);\n        }\n\n        public static void UnloadContent()\n        {\n            if (m_vertexDeclaration != null)\n            {\n                m_vertexDeclaration.Dispose();\n                m_vertexDeclaration = null;\n            }\n        }\n    }\n    //28 per vertex, 6 vertices per particle\n    //10000 particlu = 1680000 kB\n\n    //once:\n    //indices + corner pos\n\n    //18 per vertex, 4 vertices per particle\n    //1 camera pos = 12\n    //radius 2\n    //color 8\n    //texcoord 8\n    //10000 particlu = 12 + 720000\n    \n\n    \n    /// <summary>\n    /// A struct that represents a single vertex in the\n    /// vertex buffer.\n    /// </summary>\n    struct MyVertexFormatFullScreenQuad \n    {\n        static VertexDeclaration m_vertexDeclaration;\n        static int m_stride;\n\n        public Vector3 Position;\n        public Vector3 TexCoordAndCornerIndex;\n\n        public static VertexDeclaration VertexDeclaration\n        {\n            get { return m_vertexDeclaration; }\n        }\n\n        public static int Stride\n        {\n            get { return m_stride; }\n        }\n\n        public static void LoadContent(Device device)\n        {\n            //new VertexElement(0, VertexElementFormat.Vector3, VertexElementUsage.Position, 0),\n            //new VertexElement(sizeof(float) * (0 + 3), VertexElementFormat.Vector3, VertexElementUsage.TextureCoordinate, 0)\n\n            var elements = new[] {\n        \t\tnew VertexElement(0, 0, DeclarationType.Float3, DeclarationMethod.Default, DeclarationUsage.Position, 0), //12\n                new VertexElement(0, sizeof(float) * (0 + 3), DeclarationType.Float3, DeclarationMethod.Default, DeclarationUsage.TextureCoordinate, 0), \n\t\t\t\tVertexElement.VertexDeclarationEnd\n        \t};\n\n            m_stride = D3DX.GetDeclarationVertexSize(elements, 0);\n            System.Diagnostics.Debug.Assert(m_vertexDeclaration == null);\n            m_vertexDeclaration = new VertexDeclaration(device, elements);\n        }\n\n        public static void UnloadContent()\n        {\n            if (m_vertexDeclaration != null)\n            {\n                m_vertexDeclaration.Dispose();\n                m_vertexDeclaration = null;\n            }\n        }\n    }\n\n    /*\n    struct MyVertexFormatPointLightInstance : IVertexType\n    {\n        public Vector4 PositionAndRadius;\n        public Vector4 ColorAndIntensity;\n        public Vector4 SpecularColorAndAndFallof;\n        // we can also bind more textures and add texture ID here   \n\n        public static readonly VertexDeclaration VertexDeclaration = new VertexDeclaration\n        (\n            new VertexElement(0, VertexElementFormat.Vector4, VertexElementUsage.BlendWeight, 0),\n            new VertexElement(16, VertexElementFormat.Vector4, VertexElementUsage.BlendWeight, 1),\n            new VertexElement(32, VertexElementFormat.Vector4, VertexElementUsage.BlendWeight, 2)\n        );\n\n        VertexDeclaration IVertexType.VertexDeclaration { get { return VertexDeclaration; } }\n    }\n\n    struct MyVertexFormatHemisphereLightInstance : IVertexType\n    {\n        public Vector4 WorldMatrixRow0;\n        public Vector4 WorldMatrixRow1;\n        public Vector4 WorldMatrixRow2;\n        public Vector4 WorldMatrixRow3;\n\n        public Vector4 PositionAndRadius;\n        public Vector4 ColorAndIntensity;\n        public Vector4 SpecularColorAndAndFallof;\n\n        public static readonly VertexDeclaration VertexDeclaration = new VertexDeclaration\n        (\n            new VertexElement(0, VertexElementFormat.Vector4, VertexElementUsage.BlendWeight, 0),\n            new VertexElement(16, VertexElementFormat.Vector4, VertexElementUsage.BlendWeight, 1),\n            new VertexElement(32, VertexElementFormat.Vector4, VertexElementUsage.BlendWeight, 2),\n            new VertexElement(48, VertexElementFormat.Vector4, VertexElementUsage.BlendWeight, 3),\n            new VertexElement(64, VertexElementFormat.Vector4, VertexElementUsage.BlendWeight, 4),\n            new VertexElement(80, VertexElementFormat.Vector4, VertexElementUsage.BlendWeight, 5),\n            new VertexElement(96, VertexElementFormat.Vector4, VertexElementUsage.BlendWeight, 6)\n        );\n\n        VertexDeclaration IVertexType.VertexDeclaration { get { return VertexDeclaration; } }\n    }\n\n    struct MyVertexFormatSpotLightInstance : IVertexType\n    {\n        // Instance World matrix\n        public Matrix WorldMatrix;\n\n        // Instance\n        public Vector4 PositionAndReflectorRangeAndTextureEnabledSign;\n        public Vector4 SpecularColorAndAndReflectorFallof;\n        public Vector4 ReflectorDirectionAndConeMaxAngleCos;\n        public Vector4 ReflectorColorAndReflectorIntensity;\n\n        public static readonly VertexDeclaration VertexDeclaration = new VertexDeclaration\n        (\n            new VertexElement(0, VertexElementFormat.Vector4, VertexElementUsage.BlendWeight, 0),\n            new VertexElement(16, VertexElementFormat.Vector4, VertexElementUsage.BlendWeight, 1),\n            new VertexElement(32, VertexElementFormat.Vector4, VertexElementUsage.BlendWeight, 2),\n            new VertexElement(48, VertexElementFormat.Vector4, VertexElementUsage.BlendWeight, 3),\n            new VertexElement(64, VertexElementFormat.Vector4, VertexElementUsage.BlendWeight, 4),\n            new VertexElement(80, VertexElementFormat.Vector4, VertexElementUsage.BlendWeight, 5),\n            new VertexElement(96, VertexElementFormat.Vector4, VertexElementUsage.BlendWeight, 6),\n            new VertexElement(112, VertexElementFormat.Vector4, VertexElementUsage.BlendWeight, 7)\n        );\n\n        VertexDeclaration IVertexType.VertexDeclaration { get { return VertexDeclaration; } }\n    }\n\n    struct MyVertexFormatSpotShipLightInstance : IVertexType\n    {\n        // Instance World matrix\n        public Matrix WorldMatrix;\n\n        // Instance LightViewProjection for texture projection\n        public Vector4 LightViewProjectionColumn0;\n        public Vector4 LightViewProjectionColumn1;\n        public Vector4 LightViewProjectionColumn2;\n\n        // Instance\n        public Vector4 PositionAndReflectorRangeAndTextureEnabledSign;\n        public Vector4 SpecularColorAndAndReflectorFallof;\n        public Vector4 ReflectorDirectionAndConeMaxAngleCos;\n        public Vector4 ReflectorColorAndReflectorIntensity;\n\n        public static readonly VertexDeclaration VertexDeclaration = new VertexDeclaration\n        (\n            new VertexElement(0, VertexElementFormat.Vector4, VertexElementUsage.BlendWeight, 0),\n            new VertexElement(16, VertexElementFormat.Vector4, VertexElementUsage.BlendWeight, 1),\n            new VertexElement(32, VertexElementFormat.Vector4, VertexElementUsage.BlendWeight, 2),\n            new VertexElement(48, VertexElementFormat.Vector4, VertexElementUsage.BlendWeight, 3),\n            new VertexElement(64, VertexElementFormat.Vector4, VertexElementUsage.BlendWeight, 4),\n            new VertexElement(80, VertexElementFormat.Vector4, VertexElementUsage.BlendWeight, 5),\n            new VertexElement(96, VertexElementFormat.Vector4, VertexElementUsage.BlendWeight, 6),\n            new VertexElement(112, VertexElementFormat.Vector4, VertexElementUsage.BlendWeight, 7),\n            new VertexElement(128, VertexElementFormat.Vector4, VertexElementUsage.BlendWeight, 8),\n            new VertexElement(144, VertexElementFormat.Vector4, VertexElementUsage.BlendWeight, 9),\n            new VertexElement(160, VertexElementFormat.Vector4, VertexElementUsage.BlendWeight, 10)\n        );\n\n        VertexDeclaration IVertexType.VertexDeclaration { get { return VertexDeclaration; } }\n    }\n\n    struct MyVertexFormatMeshInstance : IVertexType\n    {\n        public MyVertexFormatMeshInstance(ref Matrix world, ref Vector3 diffuseColor, float specularIntensity, float specularPower, float emissivity, ref Vector3 highlightColor)\n        {\n            Matrix = world;\n            Diffuse = new Vector4(diffuseColor, 0);\n            SpecularIntensity_SpecularPower_Emisivity_HighlightFlag = new Vector4(specularIntensity, specularPower, emissivity, 0);\n            Highlight = highlightColor;\n        }\n\n        // Instance matrix\n        public Matrix Matrix;\n        public Vector4 Diffuse;\n        public Vector4 SpecularIntensity_SpecularPower_Emisivity_HighlightFlag;\n        public Vector3 Highlight;\n\n        public static readonly VertexDeclaration VertexDeclaration = new VertexDeclaration\n        (\n            new VertexElement(0, VertexElementFormat.Vector4, VertexElementUsage.BlendWeight, 0), // Matrix\n            new VertexElement(16, VertexElementFormat.Vector4, VertexElementUsage.BlendWeight, 1), // Matrix\n            new VertexElement(32, VertexElementFormat.Vector4, VertexElementUsage.BlendWeight, 2), // Matrix\n            new VertexElement(48, VertexElementFormat.Vector4, VertexElementUsage.BlendWeight, 3), // Matrix\n            new VertexElement(64, VertexElementFormat.Vector4, VertexElementUsage.BlendWeight, 4), // Diffuse\n            new VertexElement(80, VertexElementFormat.Vector4, VertexElementUsage.BlendWeight, 5), // SpecularIntensity_SpecularPower_Emisivity_HighlightFlag\n            new VertexElement(96, VertexElementFormat.Vector3, VertexElementUsage.BlendWeight, 6) // Highlight color\n            //new VertexElement(128, VertexElementFormat.Vector4, VertexElementUsage.BlendWeight, 8)\n        );\n\n        VertexDeclaration IVertexType.VertexDeclaration { get { return VertexDeclaration; } }\n    }\n\n    struct MyVertexFormatMeshInstanceShadow : IVertexType\n    {\n        public MyVertexFormatMeshInstanceShadow(Matrix world)\n        {\n            Matrix = world;\n        }\n\n        // Instance matrix\n        public Matrix Matrix;\n\n        public static readonly VertexDeclaration VertexDeclaration = new VertexDeclaration\n        (\n            new VertexElement(0, VertexElementFormat.Vector4, VertexElementUsage.BlendWeight, 0),\n            new VertexElement(16, VertexElementFormat.Vector4, VertexElementUsage.BlendWeight, 1),\n            new VertexElement(32, VertexElementFormat.Vector4, VertexElementUsage.BlendWeight, 2),\n            new VertexElement(48, VertexElementFormat.Vector4, VertexElementUsage.BlendWeight, 3)\n        );\n\n        VertexDeclaration IVertexType.VertexDeclaration { get { return VertexDeclaration; } }\n    }\n     */\n\n    public static class MyVertexFormats\n    {\n        public static void LoadContent(Device device)\n        {\n            MyVertexFormatVoxelSingleMaterial.LoadContent(device);\n            MyVertexFormatPositionNormalTextureTangentBinormalMask.LoadContent(device);\n            MyVertexFormatPositionNormalTextureTangentBinormal.LoadContent(device);\n            MyVertexFormatPositionNormalTextureMask.LoadContent(device);\n            MyVertexFormatPositionNormalTexture.LoadContent(device);\n            MyVertexFormatPositionNormal.LoadContent(device);\n            MyVertexFormatTransparentGeometry.LoadContent(device);\n            MyVertexFormatPositionTextureColor.LoadContent(device);\n            MyVertexFormatPositionTexture.LoadContent(device);\n            MyVertexFormatGlassDecal.LoadContent(device);\n            MyVertexFormatDecal.LoadContent(device);\n            MyVertexFormatPositionTexture3.LoadContent(device);\n            MyVertexFormatFullScreenQuad.LoadContent(device);\n            MyVertexFormatPositionColor.LoadContent(device);\n            MyVertexFormatPosition.LoadContent(device);\n        }\n\n        public static void UnloadContent()\n        {\n            MyVertexFormatVoxelSingleMaterial.UnloadContent();\n            MyVertexFormatPositionNormalTextureTangentBinormalMask.UnloadContent();\n            MyVertexFormatPositionNormalTextureTangentBinormal.UnloadContent();\n            MyVertexFormatPositionNormalTextureMask.UnloadContent();\n            MyVertexFormatPositionNormalTexture.UnloadContent();\n            MyVertexFormatPositionNormal.UnloadContent();\n            MyVertexFormatTransparentGeometry.UnloadContent();\n            MyVertexFormatPositionTextureColor.UnloadContent();\n            MyVertexFormatPositionTexture.UnloadContent();\n            MyVertexFormatGlassDecal.UnloadContent();\n            MyVertexFormatDecal.UnloadContent();\n            MyVertexFormatPositionTexture3.UnloadContent();\n            MyVertexFormatFullScreenQuad.UnloadContent();\n            MyVertexFormatPositionColor.UnloadContent();\n            MyVertexFormatPosition.UnloadContent();\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Utils/MyWindowsAPIWrapper.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Runtime.InteropServices;\nusing System.Security;\nusing System.Security.Permissions;\n\nnamespace MinerWars.AppCode.Game.Utils\n{\n    static public class MyWindowsAPIWrapper\n    {\n        static Func<long> m_workingSetDelegate;\n\n        public static long WorkingSet\n        {\n            get\n            {\n                if (m_workingSetDelegate == null)\n                {\n                    // To properly initialize security permission\n                    long testVal = Environment.WorkingSet;\n\n                    var info = typeof(System.Environment).GetMethod(\"GetWorkingSet\", System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.NonPublic);\n                    m_workingSetDelegate = (Func<long>)Delegate.CreateDelegate(typeof(Func<long>), info);\n                }                \n                return m_workingSetDelegate();\n            }\n        }\n\n        [DllImport(\"user32.dll\", CharSet = CharSet.Auto)]\n        public static extern uint MessageBox(IntPtr hWndle, String text, String caption, int buttons);\n\n        [DllImport(\"user32.dll\")]\n        public static extern IntPtr DefWindowProc(IntPtr hWnd, int uMsg, IntPtr wParam, IntPtr lParam);\n\n        //Declare the mouse hook constant.\n        //For other hook types, you can obtain these values from Winuser.h in the Microsoft SDK.\n        public enum HookType : int\n        {\n            WH_JOURNALRECORD = 0,\n            WH_JOURNALPLAYBACK = 1,\n            WH_KEYBOARD = 2,\n            WH_GETMESSAGE = 3,\n            WH_CALLWNDPROC = 4,\n            WH_CBT = 5,\n            WH_SYSMSGFILTER = 6,\n            WH_MOUSE = 7,\n            WH_HARDWARE = 8,\n            WH_DEBUG = 9,\n            WH_SHELL = 10,\n            WH_FOREGROUNDIDLE = 11,\n            WH_CALLWNDPROCRET = 12,\n            WH_KEYBOARD_LL = 13,\n            WH_MOUSE_LL = 14\n        }\n\n        public delegate int HookProc(int nCode, int wParam, int lParam);\n\n        // Event ids\n        public const int WM_DEVICECHANGE = 0x0219;\n        public const int WM_KEYDOWN = 0x100;\n        public const int WM_KEYUP = 0x101;\n        public const int WM_SYSKEYDOWN = 0x104;\n        public const int WM_SYSKEYUP = 0x105;\n\n        // Install a thread-specific or global hook.\n        [DllImport(\"user32.dll\", SetLastError = true)]\n        public static extern int SetWindowsHookEx(HookType hookType, HookProc lpfn, IntPtr hMod, uint dwThreadId);\n\n        // Uninstall a hook.\n        [DllImport(\"user32.dll\", SetLastError = true)]\n        [return: MarshalAs(UnmanagedType.Bool)]\n        public static extern bool UnhookWindowsHookEx(int hhk);\n\n        // Call the next hook in the hook sequence.\n        [DllImport(\"user32.dll\")]\n        public static extern int CallNextHookEx(int hhk, int nCode, int wParam, int lParam);\n\n        [StructLayout(LayoutKind.Sequential)]\n        public struct DeviceChangeHookStruct\n        {\n            public int lParam;\n            public int wParam;\n            public int message;\n            public int hwnd;\n        }\n\n        [StructLayout(LayoutKind.Sequential)]\n        public struct KeyboardHookStruct\n        {\n            public int vkCode;\n            public int scanCode;\n            public int flags;\n            public int time;\n            public int dwExtraInfo;\n        }\n\n        [DllImport(\"user32.dll\", CallingConvention = CallingConvention.Winapi, CharSet = CharSet.Auto, SetLastError = true)]\n        internal extern static uint MapVirtualKeyEx(uint key, MinerWars.AppCode.Game.GUI.Core.MyGuiLocalizedKeyboardState.MAPVK mappingType, IntPtr keyboardLayout);\n        [DllImport(\"user32.dll\", CallingConvention = CallingConvention.Winapi, CharSet = CharSet.Auto, SetLastError = true)]\n        internal extern static IntPtr LoadKeyboardLayout(string keyboardLayoutID, uint flags);\n        [DllImport(\"user32.dll\", CallingConvention = CallingConvention.Winapi, CharSet = CharSet.Auto, SetLastError = true)]\n        internal extern static bool UnloadKeyboardLayout(IntPtr handle);\n        [DllImport(\"user32.dll\", CallingConvention = CallingConvention.Winapi, CharSet = CharSet.Auto, SetLastError = true)]\n        internal extern static IntPtr GetKeyboardLayout(IntPtr threadId);\n        [DllImport(\"kernel32.dll\")]\n        internal extern static IntPtr LoadLibrary(string lpFileName);\n\n#if PROFILING\n        [System.Runtime.InteropServices.DllImport(\"Kernel32.dll\")]\n        public static extern bool QueryPerformanceCounter(out long perfcount);\n\n        [System.Runtime.InteropServices.DllImport(\"Kernel32.dll\")]\n        public static extern bool QueryPerformanceFrequency(out long freq);\n#endif //PROFILING\n\n\n        public enum NTSTATUS : uint\n        {\n            STATUS_SUCCESS = 0x00000000,\n            STATUS_TIMER_RESOLUTION_NOT_SET = 0xC0000245\n        }\n\n\n        // marshaling system functions:\n        // For getting system options:\n        [DllImport(\"ntdll.dll\", EntryPoint = \"NtQueryTimerResolution\")]\n        public static extern NTSTATUS NtQueryTimerResolution(ref uint MinimumResolution, ref uint MaximumResolution, ref uint CurrentResolution);\n        // For setting system options:\n        [DllImport(\"ntdll.dll\", EntryPoint = \"NtSetTimerResolution\")]\n        public static extern NTSTATUS NtSetTimerResolution(uint DesiredResolution, bool SetResolution, ref uint CurrentResolution);\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Utils/WM.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.Utils;\n\nnamespace MinerWars.AppCode.Game.Utils\n{\n    /// <summary>\n    /// Windows Messages\n    /// Defined in winuser.h from Windows SDK v6.1\n    /// Documentation pulled from MSDN.\n    /// </summary>\n    [DontCheck]\n    public enum WM : int\n    {\n        /// <summary>\n        /// The WM_NULL message performs no operation. An application sends the WM_NULL message if it wants to post a message that the recipient window will ignore.\n        /// </summary>\n        NULL = 0x0000,\n        /// <summary>\n        /// The WM_CREATE message is sent when an application requests that a window be created by calling the CreateWindowEx or CreateWindow function. (The message is sent before the function returns.) The window procedure of the new window receives this message after the window is created, but before the window becomes visible.\n        /// </summary>\n        CREATE = 0x0001,\n        /// <summary>\n        /// The WM_DESTROY message is sent when a window is being destroyed. It is sent to the window procedure of the window being destroyed after the window is removed from the screen. \n        /// This message is sent first to the window being destroyed and then to the child windows (if any) as they are destroyed. During the processing of the message, it can be assumed that all child windows still exist.\n        /// /// </summary>\n        DESTROY = 0x0002,\n        /// <summary>\n        /// The WM_MOVE message is sent after a window has been moved. \n        /// </summary>\n        MOVE = 0x0003,\n        /// <summary>\n        /// The WM_SIZE message is sent to a window after its size has changed.\n        /// </summary>\n        SIZE = 0x0005,\n        /// <summary>\n        /// The WM_ACTIVATE message is sent to both the window being activated and the window being deactivated. If the windows use the same input queue, the message is sent synchronously, first to the window procedure of the top-level window being deactivated, then to the window procedure of the top-level window being activated. If the windows use different input queues, the message is sent asynchronously, so the window is activated immediately. \n        /// </summary>\n        ACTIVATE = 0x0006,\n        /// <summary>\n        /// The WM_SETFOCUS message is sent to a window after it has gained the keyboard focus. \n        /// </summary>\n        SETFOCUS = 0x0007,\n        /// <summary>\n        /// The WM_KILLFOCUS message is sent to a window immediately before it loses the keyboard focus. \n        /// </summary>\n        KILLFOCUS = 0x0008,\n        /// <summary>\n        /// The WM_ENABLE message is sent when an application changes the enabled state of a window. It is sent to the window whose enabled state is changing. This message is sent before the EnableWindow function returns, but after the enabled state (WS_DISABLED style bit) of the window has changed. \n        /// </summary>\n        ENABLE = 0x000A,\n        /// <summary>\n        /// An application sends the WM_SETREDRAW message to a window to allow changes in that window to be redrawn or to prevent changes in that window from being redrawn. \n        /// </summary>\n        SETREDRAW = 0x000B,\n        /// <summary>\n        /// An application sends a WM_SETTEXT message to set the text of a window. \n        /// </summary>\n        SETTEXT = 0x000C,\n        /// <summary>\n        /// An application sends a WM_GETTEXT message to copy the text that corresponds to a window into a buffer provided by the caller. \n        /// </summary>\n        GETTEXT = 0x000D,\n        /// <summary>\n        /// An application sends a WM_GETTEXTLENGTH message to determine the length, in characters, of the text associated with a window. \n        /// </summary>\n        GETTEXTLENGTH = 0x000E,\n        /// <summary>\n        /// The WM_PAINT message is sent when the system or another application makes a request to paint a portion of an application's window. The message is sent when the UpdateWindow or RedrawWindow function is called, or by the DispatchMessage function when the application obtains a WM_PAINT message by using the GetMessage or PeekMessage function. \n        /// </summary>\n        PAINT = 0x000F,\n        /// <summary>\n        /// The WM_CLOSE message is sent as a signal that a window or an application should terminate.\n        /// </summary>\n        CLOSE = 0x0010,\n        /// <summary>\n        /// The WM_QUERYENDSESSION message is sent when the user chooses to end the session or when an application calls one of the system shutdown functions. If any application returns zero, the session is not ended. The system stops sending WM_QUERYENDSESSION messages as soon as one application returns zero.\n        /// After processing this message, the system sends the WM_ENDSESSION message with the wParam parameter set to the results of the WM_QUERYENDSESSION message.\n        /// </summary>\n        QUERYENDSESSION = 0x0011,\n        /// <summary>\n        /// The WM_QUERYOPEN message is sent to an icon when the user requests that the window be restored to its previous size and position.\n        /// </summary>\n        QUERYOPEN = 0x0013,\n        /// <summary>\n        /// The WM_ENDSESSION message is sent to an application after the system processes the results of the WM_QUERYENDSESSION message. The WM_ENDSESSION message informs the application whether the session is ending.\n        /// </summary>\n        ENDSESSION = 0x0016,\n        /// <summary>\n        /// The WM_QUIT message indicates a request to terminate an application and is generated when the application calls the PostQuitMessage function. It causes the GetMessage function to return zero.\n        /// </summary>\n        QUIT = 0x0012,\n        /// <summary>\n        /// The WM_ERASEBKGND message is sent when the window background must be erased (for example, when a window is resized). The message is sent to prepare an invalidated portion of a window for painting. \n        /// </summary>\n        ERASEBKGND = 0x0014,\n        /// <summary>\n        /// This message is sent to all top-level windows when a change is made to a system color setting. \n        /// </summary>\n        SYSCOLORCHANGE = 0x0015,\n        /// <summary>\n        /// The WM_SHOWWINDOW message is sent to a window when the window is about to be hidden or shown.\n        /// </summary>\n        SHOWWINDOW = 0x0018,\n        /// <summary>\n        /// An application sends the WM_WININICHANGE message to all top-level windows after making a change to the WIN.INI file. The SystemParametersInfo function sends this message after an application uses the function to change a setting in WIN.INI.\n        /// Note  The WM_WININICHANGE message is provided only for compatibility with earlier versions of the system. Applications should use the WM_SETTINGCHANGE message.\n        /// </summary>\n        WININICHANGE = 0x001A,\n        /// <summary>\n        /// An application sends the WM_WININICHANGE message to all top-level windows after making a change to the WIN.INI file. The SystemParametersInfo function sends this message after an application uses the function to change a setting in WIN.INI.\n        /// Note  The WM_WININICHANGE message is provided only for compatibility with earlier versions of the system. Applications should use the WM_SETTINGCHANGE message.\n        /// </summary>\n        SETTINGCHANGE = WM.WININICHANGE,\n        /// <summary>\n        /// The WM_DEVMODECHANGE message is sent to all top-level windows whenever the user changes device-mode settings. \n        /// </summary>\n        DEVMODECHANGE = 0x001B,\n        /// <summary>\n        /// The WM_ACTIVATEAPP message is sent when a window belonging to a different application than the active window is about to be activated. The message is sent to the application whose window is being activated and to the application whose window is being deactivated.\n        /// </summary>\n        ACTIVATEAPP = 0x001C,\n        /// <summary>\n        /// An application sends the WM_FONTCHANGE message to all top-level windows in the system after changing the pool of font resources. \n        /// </summary>\n        FONTCHANGE = 0x001D,\n        /// <summary>\n        /// A message that is sent whenever there is a change in the system time.\n        /// </summary>\n        TIMECHANGE = 0x001E,\n        /// <summary>\n        /// The WM_CANCELMODE message is sent to cancel certain modes, such as mouse capture. For example, the system sends this message to the active window when a dialog box or message box is displayed. Certain functions also send this message explicitly to the specified window regardless of whether it is the active window. For example, the EnableWindow function sends this message when disabling the specified window.\n        /// </summary>\n        CANCELMODE = 0x001F,\n        /// <summary>\n        /// The WM_SETCURSOR message is sent to a window if the mouse causes the cursor to move within a window and mouse input is not captured. \n        /// </summary>\n        SETCURSOR = 0x0020,\n        /// <summary>\n        /// The WM_MOUSEACTIVATE message is sent when the cursor is in an inactive window and the user presses a mouse button. The parent window receives this message only if the child window passes it to the DefWindowProc function.\n        /// </summary>\n        MOUSEACTIVATE = 0x0021,\n        /// <summary>\n        /// The WM_CHILDACTIVATE message is sent to a child window when the user clicks the window's title bar or when the window is activated, moved, or sized.\n        /// </summary>\n        CHILDACTIVATE = 0x0022,\n        /// <summary>\n        /// The WM_QUEUESYNC message is sent by a computer-based training (CBT) application to separate user-input messages from other messages sent through the WH_JOURNALPLAYBACK Hook procedure. \n        /// </summary>\n        QUEUESYNC = 0x0023,\n        /// <summary>\n        /// The WM_GETMINMAXINFO message is sent to a window when the size or position of the window is about to change. An application can use this message to override the window's default maximized size and position, or its default minimum or maximum tracking size. \n        /// </summary>\n        GETMINMAXINFO = 0x0024,\n        /// <summary>\n        /// Windows NT 3.51 and earlier: The WM_PAINTICON message is sent to a minimized window when the icon is to be painted. This message is not sent by newer versions of Microsoft Windows, except in unusual circumstances explained in the Remarks.\n        /// </summary>\n        PAINTICON = 0x0026,\n        /// <summary>\n        /// Windows NT 3.51 and earlier: The WM_ICONERASEBKGND message is sent to a minimized window when the background of the icon must be filled before painting the icon. A window receives this message only if a class icon is defined for the window; otherwise, WM_ERASEBKGND is sent. This message is not sent by newer versions of Windows.\n        /// </summary>\n        ICONERASEBKGND = 0x0027,\n        /// <summary>\n        /// The WM_NEXTDLGCTL message is sent to a dialog box procedure to set the keyboard focus to a different control in the dialog box. \n        /// </summary>\n        NEXTDLGCTL = 0x0028,\n        /// <summary>\n        /// The WM_SPOOLERSTATUS message is sent from Print Manager whenever a job is added to or removed from the Print Manager queue. \n        /// </summary>\n        SPOOLERSTATUS = 0x002A,\n        /// <summary>\n        /// The WM_DRAWITEM message is sent to the parent window of an owner-drawn button, combo box, list box, or menu when a visual aspect of the button, combo box, list box, or menu has changed.\n        /// </summary>\n        DRAWITEM = 0x002B,\n        /// <summary>\n        /// The WM_MEASUREITEM message is sent to the owner window of a combo box, list box, list view control, or menu item when the control or menu is created.\n        /// </summary>\n        MEASUREITEM = 0x002C,\n        /// <summary>\n        /// Sent to the owner of a list box or combo box when the list box or combo box is destroyed or when items are removed by the LB_DELETESTRING, LB_RESETCONTENT, CB_DELETESTRING, or CB_RESETCONTENT message. The system sends a WM_DELETEITEM message for each deleted item. The system sends the WM_DELETEITEM message for any deleted list box or combo box item with nonzero item data.\n        /// </summary>\n        DELETEITEM = 0x002D,\n        /// <summary>\n        /// Sent by a list box with the LBS_WANTKEYBOARDINPUT style to its owner in response to a WM_KEYDOWN message. \n        /// </summary>\n        VKEYTOITEM = 0x002E,\n        /// <summary>\n        /// Sent by a list box with the LBS_WANTKEYBOARDINPUT style to its owner in response to a WM_CHAR message. \n        /// </summary>\n        CHARTOITEM = 0x002F,\n        /// <summary>\n        /// An application sends a WM_SETFONT message to specify the font that a control is to use when drawing text. \n        /// </summary>\n        SETFONT = 0x0030,\n        /// <summary>\n        /// An application sends a WM_GETFONT message to a control to retrieve the font with which the control is currently drawing its text. \n        /// </summary>\n        GETFONT = 0x0031,\n        /// <summary>\n        /// An application sends a WM_SETHOTKEY message to a window to associate a hot key with the window. When the user presses the hot key, the system activates the window. \n        /// </summary>\n        SETHOTKEY = 0x0032,\n        /// <summary>\n        /// An application sends a WM_GETHOTKEY message to determine the hot key associated with a window. \n        /// </summary>\n        GETHOTKEY = 0x0033,\n        /// <summary>\n        /// The WM_QUERYDRAGICON message is sent to a minimized (iconic) window. The window is about to be dragged by the user but does not have an icon defined for its class. An application can return a handle to an icon or cursor. The system displays this cursor or icon while the user drags the icon.\n        /// </summary>\n        QUERYDRAGICON = 0x0037,\n        /// <summary>\n        /// The system sends the WM_COMPAREITEM message to determine the relative position of a new item in the sorted list of an owner-drawn combo box or list box. Whenever the application adds a new item, the system sends this message to the owner of a combo box or list box created with the CBS_SORT or LBS_SORT style. \n        /// </summary>\n        COMPAREITEM = 0x0039,\n        /// <summary>\n        /// Active Accessibility sends the WM_GETOBJECT message to obtain information about an accessible object contained in a server application. \n        /// Applications never send this message directly. It is sent only by Active Accessibility in response to calls to AccessibleObjectFromPoint, AccessibleObjectFromEvent, or AccessibleObjectFromWindow. However, server applications handle this message. \n        /// </summary>\n        GETOBJECT = 0x003D,\n        /// <summary>\n        /// The WM_COMPACTING message is sent to all top-level windows when the system detects more than 12.5 percent of system time over a 30- to 60-second interval is being spent compacting memory. This indicates that system memory is low.\n        /// </summary>\n        COMPACTING = 0x0041,\n        /// <summary>\n        /// WM_COMMNOTIFY is Obsolete for Win32-Based Applications\n        /// </summary>\n        [Obsolete]\n        COMMNOTIFY = 0x0044,\n        /// <summary>\n        /// The WM_WINDOWPOSCHANGING message is sent to a window whose size, position, or place in the Z order is about to change as a result of a call to the SetWindowPos function or another window-management function.\n        /// </summary>\n        WINDOWPOSCHANGING = 0x0046,\n        /// <summary>\n        /// The WM_WINDOWPOSCHANGED message is sent to a window whose size, position, or place in the Z order has changed as a result of a call to the SetWindowPos function or another window-management function.\n        /// </summary>\n        WINDOWPOSCHANGED = 0x0047,\n        /// <summary>\n        /// Notifies applications that the system, typically a battery-powered personal computer, is about to enter a suspended mode.\n        /// Use: POWERBROADCAST\n        /// </summary>\n        [Obsolete]\n        POWER = 0x0048,\n        /// <summary>\n        /// An application sends the WM_COPYDATA message to pass data to another application. \n        /// </summary>\n        COPYDATA = 0x004A,\n        /// <summary>\n        /// The WM_CANCELJOURNAL message is posted to an application when a user cancels the application's journaling activities. The message is posted with a NULL window handle. \n        /// </summary>\n        CANCELJOURNAL = 0x004B,\n        /// <summary>\n        /// Sent by a common control to its parent window when an event has occurred or the control requires some information. \n        /// </summary>\n        NOTIFY = 0x004E,\n        /// <summary>\n        /// The WM_INPUTLANGCHANGEREQUEST message is posted to the window with the focus when the user chooses a new input language, either with the hotkey (specified in the Keyboard control panel application) or from the indicator on the system taskbar. An application can accept the change by passing the message to the DefWindowProc function or reject the change (and prevent it from taking place) by returning immediately. \n        /// </summary>\n        INPUTLANGCHANGEREQUEST = 0x0050,\n        /// <summary>\n        /// The WM_INPUTLANGCHANGE message is sent to the topmost affected window after an application's input language has been changed. You should make any application-specific settings and pass the message to the DefWindowProc function, which passes the message to all first-level child windows. These child windows can pass the message to DefWindowProc to have it pass the message to their child windows, and so on. \n        /// </summary>\n        INPUTLANGCHANGE = 0x0051,\n        /// <summary>\n        /// Sent to an application that has initiated a training card with Microsoft Windows Help. The message informs the application when the user clicks an authorable button. An application initiates a training card by specifying the HELP_TCARD command in a call to the WinHelp function.\n        /// </summary>\n        TCARD = 0x0052,\n        /// <summary>\n        /// Indicates that the user pressed the F1 key. If a menu is active when F1 is pressed, WM_HELP is sent to the window associated with the menu; otherwise, WM_HELP is sent to the window that has the keyboard focus. If no window has the keyboard focus, WM_HELP is sent to the currently active window. \n        /// </summary>\n        HELP = 0x0053,\n        /// <summary>\n        /// The WM_USERCHANGED message is sent to all windows after the user has logged on or off. When the user logs on or off, the system updates the user-specific settings. The system sends this message immediately after updating the settings.\n        /// </summary>\n        USERCHANGED = 0x0054,\n        /// <summary>\n        /// Determines if a window accepts ANSI or Unicode structures in the WM_NOTIFY notification message. WM_NOTIFYFORMAT messages are sent from a common control to its parent window and from the parent window to the common control.\n        /// </summary>\n        NOTIFYFORMAT = 0x0055,\n        /// <summary>\n        /// The WM_CONTEXTMENU message notifies a window that the user clicked the right mouse button (right-clicked) in the window.\n        /// </summary>\n        CONTEXTMENU = 0x007B,\n        /// <summary>\n        /// The WM_STYLECHANGING message is sent to a window when the SetWindowLong function is about to change one or more of the window's styles.\n        /// </summary>\n        STYLECHANGING = 0x007C,\n        /// <summary>\n        /// The WM_STYLECHANGED message is sent to a window after the SetWindowLong function has changed one or more of the window's styles\n        /// </summary>\n        STYLECHANGED = 0x007D,\n        /// <summary>\n        /// The WM_DISPLAYCHANGE message is sent to all windows when the display resolution has changed.\n        /// </summary>\n        DISPLAYCHANGE = 0x007E,\n        /// <summary>\n        /// The WM_GETICON message is sent to a window to retrieve a handle to the large or small icon associated with a window. The system displays the large icon in the ALT+TAB dialog, and the small icon in the window caption. \n        /// </summary>\n        GETICON = 0x007F,\n        /// <summary>\n        /// An application sends the WM_SETICON message to associate a new large or small icon with a window. The system displays the large icon in the ALT+TAB dialog box, and the small icon in the window caption. \n        /// </summary>\n        SETICON = 0x0080,\n        /// <summary>\n        /// The WM_NCCREATE message is sent prior to the WM_CREATE message when a window is first created.\n        /// </summary>\n        NCCREATE = 0x0081,\n        /// <summary>\n        /// The WM_NCDESTROY message informs a window that its nonclient area is being destroyed. The DestroyWindow function sends the WM_NCDESTROY message to the window following the WM_DESTROY message. WM_DESTROY is used to free the allocated memory object associated with the window. \n        /// The WM_NCDESTROY message is sent after the child windows have been destroyed. In contrast, WM_DESTROY is sent before the child windows are destroyed.\n        /// </summary>\n        NCDESTROY = 0x0082,\n        /// <summary>\n        /// The WM_NCCALCSIZE message is sent when the size and position of a window's client area must be calculated. By processing this message, an application can control the content of the window's client area when the size or position of the window changes.\n        /// </summary>\n        NCCALCSIZE = 0x0083,\n        /// <summary>\n        /// The WM_NCHITTEST message is sent to a window when the cursor moves, or when a mouse button is pressed or released. If the mouse is not captured, the message is sent to the window beneath the cursor. Otherwise, the message is sent to the window that has captured the mouse.\n        /// </summary>\n        NCHITTEST = 0x0084,\n        /// <summary>\n        /// The WM_NCPAINT message is sent to a window when its frame must be painted. \n        /// </summary>\n        NCPAINT = 0x0085,\n        /// <summary>\n        /// The WM_NCACTIVATE message is sent to a window when its nonclient area needs to be changed to indicate an active or inactive state.\n        /// </summary>\n        NCACTIVATE = 0x0086,\n        /// <summary>\n        /// The WM_GETDLGCODE message is sent to the window procedure associated with a control. By default, the system handles all keyboard input to the control; the system interprets certain types of keyboard input as dialog box navigation keys. To override this default behavior, the control can respond to the WM_GETDLGCODE message to indicate the types of input it wants to process itself.\n        /// </summary>\n        GETDLGCODE = 0x0087,\n        /// <summary>\n        /// The WM_SYNCPAINT message is used to synchronize painting while avoiding linking independent GUI threads.\n        /// </summary>\n        SYNCPAINT = 0x0088,\n        /// <summary>\n        /// The WM_NCMOUSEMOVE message is posted to a window when the cursor is moved within the nonclient area of the window. This message is posted to the window that contains the cursor. If a window has captured the mouse, this message is not posted.\n        /// </summary>\n        NCMOUSEMOVE = 0x00A0,\n        /// <summary>\n        /// The WM_NCLBUTTONDOWN message is posted when the user presses the left mouse button while the cursor is within the nonclient area of a window. This message is posted to the window that contains the cursor. If a window has captured the mouse, this message is not posted.\n        /// </summary>\n        NCLBUTTONDOWN = 0x00A1,\n        /// <summary>\n        /// The WM_NCLBUTTONUP message is posted when the user releases the left mouse button while the cursor is within the nonclient area of a window. This message is posted to the window that contains the cursor. If a window has captured the mouse, this message is not posted.\n        /// </summary>\n        NCLBUTTONUP = 0x00A2,\n        /// <summary>\n        /// The WM_NCLBUTTONDBLCLK message is posted when the user double-clicks the left mouse button while the cursor is within the nonclient area of a window. This message is posted to the window that contains the cursor. If a window has captured the mouse, this message is not posted.\n        /// </summary>\n        NCLBUTTONDBLCLK = 0x00A3,\n        /// <summary>\n        /// The WM_NCRBUTTONDOWN message is posted when the user presses the right mouse button while the cursor is within the nonclient area of a window. This message is posted to the window that contains the cursor. If a window has captured the mouse, this message is not posted.\n        /// </summary>\n        NCRBUTTONDOWN = 0x00A4,\n        /// <summary>\n        /// The WM_NCRBUTTONUP message is posted when the user releases the right mouse button while the cursor is within the nonclient area of a window. This message is posted to the window that contains the cursor. If a window has captured the mouse, this message is not posted.\n        /// </summary>\n        NCRBUTTONUP = 0x00A5,\n        /// <summary>\n        /// The WM_NCRBUTTONDBLCLK message is posted when the user double-clicks the right mouse button while the cursor is within the nonclient area of a window. This message is posted to the window that contains the cursor. If a window has captured the mouse, this message is not posted.\n        /// </summary>\n        NCRBUTTONDBLCLK = 0x00A6,\n        /// <summary>\n        /// The WM_NCMBUTTONDOWN message is posted when the user presses the middle mouse button while the cursor is within the nonclient area of a window. This message is posted to the window that contains the cursor. If a window has captured the mouse, this message is not posted.\n        /// </summary>\n        NCMBUTTONDOWN = 0x00A7,\n        /// <summary>\n        /// The WM_NCMBUTTONUP message is posted when the user releases the middle mouse button while the cursor is within the nonclient area of a window. This message is posted to the window that contains the cursor. If a window has captured the mouse, this message is not posted.\n        /// </summary>\n        NCMBUTTONUP = 0x00A8,\n        /// <summary>\n        /// The WM_NCMBUTTONDBLCLK message is posted when the user double-clicks the middle mouse button while the cursor is within the nonclient area of a window. This message is posted to the window that contains the cursor. If a window has captured the mouse, this message is not posted.\n        /// </summary>\n        NCMBUTTONDBLCLK = 0x00A9,\n        /// <summary>\n        /// The WM_NCXBUTTONDOWN message is posted when the user presses the first or second X button while the cursor is in the nonclient area of a window. This message is posted to the window that contains the cursor. If a window has captured the mouse, this message is not posted.\n        /// </summary>\n        NCXBUTTONDOWN = 0x00AB,\n        /// <summary>\n        /// The WM_NCXBUTTONUP message is posted when the user releases the first or second X button while the cursor is in the nonclient area of a window. This message is posted to the window that contains the cursor. If a window has captured the mouse, this message is not posted.\n        /// </summary>\n        NCXBUTTONUP = 0x00AC,\n        /// <summary>\n        /// The WM_NCXBUTTONDBLCLK message is posted when the user double-clicks the first or second X button while the cursor is in the nonclient area of a window. This message is posted to the window that contains the cursor. If a window has captured the mouse, this message is not posted.\n        /// </summary>\n        NCXBUTTONDBLCLK = 0x00AD,\n        /// <summary>\n        /// The WM_INPUT_DEVICE_CHANGE message is sent to the window that registered to receive raw input. A window receives this message through its WindowProc function.\n        /// </summary>\n        INPUT_DEVICE_CHANGE = 0x00FE,\n        /// <summary>\n        /// The WM_INPUT message is sent to the window that is getting raw input. \n        /// </summary>\n        INPUT = 0x00FF,\n        /// <summary>\n        /// This message filters for keyboard messages.\n        /// </summary>\n        KEYFIRST = 0x0100,\n        /// <summary>\n        /// The WM_KEYDOWN message is posted to the window with the keyboard focus when a nonsystem key is pressed. A nonsystem key is a key that is pressed when the ALT key is not pressed. \n        /// </summary>\n        KEYDOWN = 0x0100,\n        /// <summary>\n        /// The WM_KEYUP message is posted to the window with the keyboard focus when a nonsystem key is released. A nonsystem key is a key that is pressed when the ALT key is not pressed, or a keyboard key that is pressed when a window has the keyboard focus. \n        /// </summary>\n        KEYUP = 0x0101,\n        /// <summary>\n        /// The WM_CHAR message is posted to the window with the keyboard focus when a WM_KEYDOWN message is translated by the TranslateMessage function. The WM_CHAR message contains the character code of the key that was pressed. \n        /// </summary>\n        CHAR = 0x0102,\n        /// <summary>\n        /// The WM_DEADCHAR message is posted to the window with the keyboard focus when a WM_KEYUP message is translated by the TranslateMessage function. WM_DEADCHAR specifies a character code generated by a dead key. A dead key is a key that generates a character, such as the umlaut (double-dot), that is combined with another character to form a composite character. For example, the umlaut-O character (Ö) is generated by typing the dead key for the umlaut character, and then typing the O key. \n        /// </summary>\n        DEADCHAR = 0x0103,\n        /// <summary>\n        /// The WM_SYSKEYDOWN message is posted to the window with the keyboard focus when the user presses the F10 key (which activates the menu bar) or holds down the ALT key and then presses another key. It also occurs when no window currently has the keyboard focus; in this case, the WM_SYSKEYDOWN message is sent to the active window. The window that receives the message can distinguish between these two contexts by checking the context code in the lParam parameter. \n        /// </summary>\n        SYSKEYDOWN = 0x0104,\n        /// <summary>\n        /// The WM_SYSKEYUP message is posted to the window with the keyboard focus when the user releases a key that was pressed while the ALT key was held down. It also occurs when no window currently has the keyboard focus; in this case, the WM_SYSKEYUP message is sent to the active window. The window that receives the message can distinguish between these two contexts by checking the context code in the lParam parameter. \n        /// </summary>\n        SYSKEYUP = 0x0105,\n        /// <summary>\n        /// The WM_SYSCHAR message is posted to the window with the keyboard focus when a WM_SYSKEYDOWN message is translated by the TranslateMessage function. It specifies the character code of a system character key — that is, a character key that is pressed while the ALT key is down. \n        /// </summary>\n        SYSCHAR = 0x0106,\n        /// <summary>\n        /// The WM_SYSDEADCHAR message is sent to the window with the keyboard focus when a WM_SYSKEYDOWN message is translated by the TranslateMessage function. WM_SYSDEADCHAR specifies the character code of a system dead key — that is, a dead key that is pressed while holding down the ALT key. \n        /// </summary>\n        SYSDEADCHAR = 0x0107,\n        /// <summary>\n        /// The WM_UNICHAR message is posted to the window with the keyboard focus when a WM_KEYDOWN message is translated by the TranslateMessage function. The WM_UNICHAR message contains the character code of the key that was pressed. \n        /// The WM_UNICHAR message is equivalent to WM_CHAR, but it uses Unicode Transformation Format (UTF)-32, whereas WM_CHAR uses UTF-16. It is designed to send or post Unicode characters to ANSI windows and it can can handle Unicode Supplementary Plane characters.\n        /// </summary>\n        UNICHAR = 0x0109,\n        /// <summary>\n        /// This message filters for keyboard messages.\n        /// </summary>\n        KEYLAST = 0x0109,\n        /// <summary>\n        /// Sent immediately before the IME generates the composition string as a result of a keystroke. A window receives this message through its WindowProc function. \n        /// </summary>\n        IME_STARTCOMPOSITION = 0x010D,\n        /// <summary>\n        /// Sent to an application when the IME ends composition. A window receives this message through its WindowProc function. \n        /// </summary>\n        IME_ENDCOMPOSITION = 0x010E,\n        /// <summary>\n        /// Sent to an application when the IME changes composition status as a result of a keystroke. A window receives this message through its WindowProc function. \n        /// </summary>\n        IME_COMPOSITION = 0x010F,\n        IME_KEYLAST = 0x010F,\n        /// <summary>\n        /// The WM_INITDIALOG message is sent to the dialog box procedure immediately before a dialog box is displayed. Dialog box procedures typically use this message to initialize controls and carry out any other initialization tasks that affect the appearance of the dialog box. \n        /// </summary>\n        INITDIALOG = 0x0110,\n        /// <summary>\n        /// The WM_COMMAND message is sent when the user selects a command item from a menu, when a control sends a notification message to its parent window, or when an accelerator keystroke is translated. \n        /// </summary>\n        COMMAND = 0x0111,\n        /// <summary>\n        /// A window receives this message when the user chooses a command from the Window menu, clicks the maximize button, minimize button, restore button, close button, or moves the form. You can stop the form from moving by filtering this out.\n        /// </summary>\n        SYSCOMMAND = 0x0112,\n        /// <summary>\n        /// The WM_TIMER message is posted to the installing thread's message queue when a timer expires. The message is posted by the GetMessage or PeekMessage function. \n        /// </summary>\n        TIMER = 0x0113,\n        /// <summary>\n        /// The WM_HSCROLL message is sent to a window when a scroll event occurs in the window's standard horizontal scroll bar. This message is also sent to the owner of a horizontal scroll bar control when a scroll event occurs in the control. \n        /// </summary>\n        HSCROLL = 0x0114,\n        /// <summary>\n        /// The WM_VSCROLL message is sent to a window when a scroll event occurs in the window's standard vertical scroll bar. This message is also sent to the owner of a vertical scroll bar control when a scroll event occurs in the control. \n        /// </summary>\n        VSCROLL = 0x0115,\n        /// <summary>\n        /// The WM_INITMENU message is sent when a menu is about to become active. It occurs when the user clicks an item on the menu bar or presses a menu key. This allows the application to modify the menu before it is displayed. \n        /// </summary>\n        INITMENU = 0x0116,\n        /// <summary>\n        /// The WM_INITMENUPOPUP message is sent when a drop-down menu or submenu is about to become active. This allows an application to modify the menu before it is displayed, without changing the entire menu. \n        /// </summary>\n        INITMENUPOPUP = 0x0117,\n        /// <summary>\n        /// The WM_MENUSELECT message is sent to a menu's owner window when the user selects a menu item. \n        /// </summary>\n        MENUSELECT = 0x011F,\n        /// <summary>\n        /// The WM_MENUCHAR message is sent when a menu is active and the user presses a key that does not correspond to any mnemonic or accelerator key. This message is sent to the window that owns the menu. \n        /// </summary>\n        MENUCHAR = 0x0120,\n        /// <summary>\n        /// The WM_ENTERIDLE message is sent to the owner window of a modal dialog box or menu that is entering an idle state. A modal dialog box or menu enters an idle state when no messages are waiting in its queue after it has processed one or more previous messages. \n        /// </summary>\n        ENTERIDLE = 0x0121,\n        /// <summary>\n        /// The WM_MENURBUTTONUP message is sent when the user releases the right mouse button while the cursor is on a menu item. \n        /// </summary>\n        MENURBUTTONUP = 0x0122,\n        /// <summary>\n        /// The WM_MENUDRAG message is sent to the owner of a drag-and-drop menu when the user drags a menu item. \n        /// </summary>\n        MENUDRAG = 0x0123,\n        /// <summary>\n        /// The WM_MENUGETOBJECT message is sent to the owner of a drag-and-drop menu when the mouse cursor enters a menu item or moves from the center of the item to the top or bottom of the item. \n        /// </summary>\n        MENUGETOBJECT = 0x0124,\n        /// <summary>\n        /// The WM_UNINITMENUPOPUP message is sent when a drop-down menu or submenu has been destroyed. \n        /// </summary>\n        UNINITMENUPOPUP = 0x0125,\n        /// <summary>\n        /// The WM_MENUCOMMAND message is sent when the user makes a selection from a menu. \n        /// </summary>\n        MENUCOMMAND = 0x0126,\n        /// <summary>\n        /// An application sends the WM_CHANGEUISTATE message to indicate that the user interface (UI) state should be changed.\n        /// </summary>\n        CHANGEUISTATE = 0x0127,\n        /// <summary>\n        /// An application sends the WM_UPDATEUISTATE message to change the user interface (UI) state for the specified window and all its child windows.\n        /// </summary>\n        UPDATEUISTATE = 0x0128,\n        /// <summary>\n        /// An application sends the WM_QUERYUISTATE message to retrieve the user interface (UI) state for a window.\n        /// </summary>\n        QUERYUISTATE = 0x0129,\n        /// <summary>\n        /// The WM_CTLCOLORMSGBOX message is sent to the owner window of a message box before Windows draws the message box. By responding to this message, the owner window can set the text and background colors of the message box by using the given display device context handle. \n        /// </summary>\n        CTLCOLORMSGBOX = 0x0132,\n        /// <summary>\n        /// An edit control that is not read-only or disabled sends the WM_CTLCOLOREDIT message to its parent window when the control is about to be drawn. By responding to this message, the parent window can use the specified device context handle to set the text and background colors of the edit control. \n        /// </summary>\n        CTLCOLOREDIT = 0x0133,\n        /// <summary>\n        /// Sent to the parent window of a list box before the system draws the list box. By responding to this message, the parent window can set the text and background colors of the list box by using the specified display device context handle. \n        /// </summary>\n        CTLCOLORLISTBOX = 0x0134,\n        /// <summary>\n        /// The WM_CTLCOLORBTN message is sent to the parent window of a button before drawing the button. The parent window can change the button's text and background colors. However, only owner-drawn buttons respond to the parent window processing this message. \n        /// </summary>\n        CTLCOLORBTN = 0x0135,\n        /// <summary>\n        /// The WM_CTLCOLORDLG message is sent to a dialog box before the system draws the dialog box. By responding to this message, the dialog box can set its text and background colors using the specified display device context handle. \n        /// </summary>\n        CTLCOLORDLG = 0x0136,\n        /// <summary>\n        /// The WM_CTLCOLORSCROLLBAR message is sent to the parent window of a scroll bar control when the control is about to be drawn. By responding to this message, the parent window can use the display context handle to set the background color of the scroll bar control. \n        /// </summary>\n        CTLCOLORSCROLLBAR = 0x0137,\n        /// <summary>\n        /// A static control, or an edit control that is read-only or disabled, sends the WM_CTLCOLORSTATIC message to its parent window when the control is about to be drawn. By responding to this message, the parent window can use the specified device context handle to set the text and background colors of the static control. \n        /// </summary>\n        CTLCOLORSTATIC = 0x0138,\n        /// <summary>\n        /// Use WM_MOUSEFIRST to specify the first mouse message. Use the PeekMessage() Function.\n        /// </summary>\n        MOUSEFIRST = 0x0200,\n        /// <summary>\n        /// The WM_MOUSEMOVE message is posted to a window when the cursor moves. If the mouse is not captured, the message is posted to the window that contains the cursor. Otherwise, the message is posted to the window that has captured the mouse.\n        /// </summary>\n        MOUSEMOVE = 0x0200,\n        /// <summary>\n        /// The WM_LBUTTONDOWN message is posted when the user presses the left mouse button while the cursor is in the client area of a window. If the mouse is not captured, the message is posted to the window beneath the cursor. Otherwise, the message is posted to the window that has captured the mouse.\n        /// </summary>\n        LBUTTONDOWN = 0x0201,\n        /// <summary>\n        /// The WM_LBUTTONUP message is posted when the user releases the left mouse button while the cursor is in the client area of a window. If the mouse is not captured, the message is posted to the window beneath the cursor. Otherwise, the message is posted to the window that has captured the mouse.\n        /// </summary>\n        LBUTTONUP = 0x0202,\n        /// <summary>\n        /// The WM_LBUTTONDBLCLK message is posted when the user double-clicks the left mouse button while the cursor is in the client area of a window. If the mouse is not captured, the message is posted to the window beneath the cursor. Otherwise, the message is posted to the window that has captured the mouse.\n        /// </summary>\n        LBUTTONDBLCLK = 0x0203,\n        /// <summary>\n        /// The WM_RBUTTONDOWN message is posted when the user presses the right mouse button while the cursor is in the client area of a window. If the mouse is not captured, the message is posted to the window beneath the cursor. Otherwise, the message is posted to the window that has captured the mouse.\n        /// </summary>\n        RBUTTONDOWN = 0x0204,\n        /// <summary>\n        /// The WM_RBUTTONUP message is posted when the user releases the right mouse button while the cursor is in the client area of a window. If the mouse is not captured, the message is posted to the window beneath the cursor. Otherwise, the message is posted to the window that has captured the mouse.\n        /// </summary>\n        RBUTTONUP = 0x0205,\n        /// <summary>\n        /// The WM_RBUTTONDBLCLK message is posted when the user double-clicks the right mouse button while the cursor is in the client area of a window. If the mouse is not captured, the message is posted to the window beneath the cursor. Otherwise, the message is posted to the window that has captured the mouse.\n        /// </summary>\n        RBUTTONDBLCLK = 0x0206,\n        /// <summary>\n        /// The WM_MBUTTONDOWN message is posted when the user presses the middle mouse button while the cursor is in the client area of a window. If the mouse is not captured, the message is posted to the window beneath the cursor. Otherwise, the message is posted to the window that has captured the mouse.\n        /// </summary>\n        MBUTTONDOWN = 0x0207,\n        /// <summary>\n        /// The WM_MBUTTONUP message is posted when the user releases the middle mouse button while the cursor is in the client area of a window. If the mouse is not captured, the message is posted to the window beneath the cursor. Otherwise, the message is posted to the window that has captured the mouse.\n        /// </summary>\n        MBUTTONUP = 0x0208,\n        /// <summary>\n        /// The WM_MBUTTONDBLCLK message is posted when the user double-clicks the middle mouse button while the cursor is in the client area of a window. If the mouse is not captured, the message is posted to the window beneath the cursor. Otherwise, the message is posted to the window that has captured the mouse.\n        /// </summary>\n        MBUTTONDBLCLK = 0x0209,\n        /// <summary>\n        /// The WM_MOUSEWHEEL message is sent to the focus window when the mouse wheel is rotated. The DefWindowProc function propagates the message to the window's parent. There should be no internal forwarding of the message, since DefWindowProc propagates it up the parent chain until it finds a window that processes it.\n        /// </summary>\n        MOUSEWHEEL = 0x020A,\n        /// <summary>\n        /// The WM_XBUTTONDOWN message is posted when the user presses the first or second X button while the cursor is in the client area of a window. If the mouse is not captured, the message is posted to the window beneath the cursor. Otherwise, the message is posted to the window that has captured the mouse. \n        /// </summary>\n        XBUTTONDOWN = 0x020B,\n        /// <summary>\n        /// The WM_XBUTTONUP message is posted when the user releases the first or second X button while the cursor is in the client area of a window. If the mouse is not captured, the message is posted to the window beneath the cursor. Otherwise, the message is posted to the window that has captured the mouse.\n        /// </summary>\n        XBUTTONUP = 0x020C,\n        /// <summary>\n        /// The WM_XBUTTONDBLCLK message is posted when the user double-clicks the first or second X button while the cursor is in the client area of a window. If the mouse is not captured, the message is posted to the window beneath the cursor. Otherwise, the message is posted to the window that has captured the mouse.\n        /// </summary>\n        XBUTTONDBLCLK = 0x020D,\n        /// <summary>\n        /// The WM_MOUSEHWHEEL message is sent to the focus window when the mouse's horizontal scroll wheel is tilted or rotated. The DefWindowProc function propagates the message to the window's parent. There should be no internal forwarding of the message, since DefWindowProc propagates it up the parent chain until it finds a window that processes it.\n        /// </summary>\n        MOUSEHWHEEL = 0x020E,\n        /// <summary>\n        /// Use WM_MOUSELAST to specify the last mouse message. Used with PeekMessage() Function.\n        /// </summary>\n        MOUSELAST = 0x020E,\n        /// <summary>\n        /// The WM_PARENTNOTIFY message is sent to the parent of a child window when the child window is created or destroyed, or when the user clicks a mouse button while the cursor is over the child window. When the child window is being created, the system sends WM_PARENTNOTIFY just before the CreateWindow or CreateWindowEx function that creates the window returns. When the child window is being destroyed, the system sends the message before any processing to destroy the window takes place.\n        /// </summary>\n        PARENTNOTIFY = 0x0210,\n        /// <summary>\n        /// The WM_ENTERMENULOOP message informs an application's main window procedure that a menu modal loop has been entered. \n        /// </summary>\n        ENTERMENULOOP = 0x0211,\n        /// <summary>\n        /// The WM_EXITMENULOOP message informs an application's main window procedure that a menu modal loop has been exited. \n        /// </summary>\n        EXITMENULOOP = 0x0212,\n        /// <summary>\n        /// The WM_NEXTMENU message is sent to an application when the right or left arrow key is used to switch between the menu bar and the system menu. \n        /// </summary>\n        NEXTMENU = 0x0213,\n        /// <summary>\n        /// The WM_SIZING message is sent to a window that the user is resizing. By processing this message, an application can monitor the size and position of the drag rectangle and, if needed, change its size or position. \n        /// </summary>\n        SIZING = 0x0214,\n        /// <summary>\n        /// The WM_CAPTURECHANGED message is sent to the window that is losing the mouse capture.\n        /// </summary>\n        CAPTURECHANGED = 0x0215,\n        /// <summary>\n        /// The WM_MOVING message is sent to a window that the user is moving. By processing this message, an application can monitor the position of the drag rectangle and, if needed, change its position.\n        /// </summary>\n        MOVING = 0x0216,\n        /// <summary>\n        /// Notifies applications that a power-management event has occurred.\n        /// </summary>\n        POWERBROADCAST = 0x0218,\n        /// <summary>\n        /// Notifies an application of a change to the hardware configuration of a device or the computer.\n        /// </summary>\n        DEVICECHANGE = 0x0219,\n        /// <summary>\n        /// An application sends the WM_MDICREATE message to a multiple-document interface (MDI) client window to create an MDI child window. \n        /// </summary>\n        MDICREATE = 0x0220,\n        /// <summary>\n        /// An application sends the WM_MDIDESTROY message to a multiple-document interface (MDI) client window to close an MDI child window. \n        /// </summary>\n        MDIDESTROY = 0x0221,\n        /// <summary>\n        /// An application sends the WM_MDIACTIVATE message to a multiple-document interface (MDI) client window to instruct the client window to activate a different MDI child window. \n        /// </summary>\n        MDIACTIVATE = 0x0222,\n        /// <summary>\n        /// An application sends the WM_MDIRESTORE message to a multiple-document interface (MDI) client window to restore an MDI child window from maximized or minimized size. \n        /// </summary>\n        MDIRESTORE = 0x0223,\n        /// <summary>\n        /// An application sends the WM_MDINEXT message to a multiple-document interface (MDI) client window to activate the next or previous child window. \n        /// </summary>\n        MDINEXT = 0x0224,\n        /// <summary>\n        /// An application sends the WM_MDIMAXIMIZE message to a multiple-document interface (MDI) client window to maximize an MDI child window. The system resizes the child window to make its client area fill the client window. The system places the child window's window menu icon in the rightmost position of the frame window's menu bar, and places the child window's restore icon in the leftmost position. The system also appends the title bar text of the child window to that of the frame window. \n        /// </summary>\n        MDIMAXIMIZE = 0x0225,\n        /// <summary>\n        /// An application sends the WM_MDITILE message to a multiple-document interface (MDI) client window to arrange all of its MDI child windows in a tile format. \n        /// </summary>\n        MDITILE = 0x0226,\n        /// <summary>\n        /// An application sends the WM_MDICASCADE message to a multiple-document interface (MDI) client window to arrange all its child windows in a cascade format. \n        /// </summary>\n        MDICASCADE = 0x0227,\n        /// <summary>\n        /// An application sends the WM_MDIICONARRANGE message to a multiple-document interface (MDI) client window to arrange all minimized MDI child windows. It does not affect child windows that are not minimized. \n        /// </summary>\n        MDIICONARRANGE = 0x0228,\n        /// <summary>\n        /// An application sends the WM_MDIGETACTIVE message to a multiple-document interface (MDI) client window to retrieve the handle to the active MDI child window. \n        /// </summary>\n        MDIGETACTIVE = 0x0229,\n        /// <summary>\n        /// An application sends the WM_MDISETMENU message to a multiple-document interface (MDI) client window to replace the entire menu of an MDI frame window, to replace the window menu of the frame window, or both. \n        /// </summary>\n        MDISETMENU = 0x0230,\n        /// <summary>\n        /// The WM_ENTERSIZEMOVE message is sent one time to a window after it enters the moving or sizing modal loop. The window enters the moving or sizing modal loop when the user clicks the window's title bar or sizing border, or when the window passes the WM_SYSCOMMAND message to the DefWindowProc function and the wParam parameter of the message specifies the SC_MOVE or SC_SIZE value. The operation is complete when DefWindowProc returns. \n        /// The system sends the WM_ENTERSIZEMOVE message regardless of whether the dragging of full windows is enabled.\n        /// </summary>\n        ENTERSIZEMOVE = 0x0231,\n        /// <summary>\n        /// The WM_EXITSIZEMOVE message is sent one time to a window, after it has exited the moving or sizing modal loop. The window enters the moving or sizing modal loop when the user clicks the window's title bar or sizing border, or when the window passes the WM_SYSCOMMAND message to the DefWindowProc function and the wParam parameter of the message specifies the SC_MOVE or SC_SIZE value. The operation is complete when DefWindowProc returns. \n        /// </summary>\n        EXITSIZEMOVE = 0x0232,\n        /// <summary>\n        /// Sent when the user drops a file on the window of an application that has registered itself as a recipient of dropped files.\n        /// </summary>\n        DROPFILES = 0x0233,\n        /// <summary>\n        /// An application sends the WM_MDIREFRESHMENU message to a multiple-document interface (MDI) client window to refresh the window menu of the MDI frame window. \n        /// </summary>\n        MDIREFRESHMENU = 0x0234,\n        /// <summary>\n        /// Sent to an application when a window is activated. A window receives this message through its WindowProc function. \n        /// </summary>\n        IME_SETCONTEXT = 0x0281,\n        /// <summary>\n        /// Sent to an application to notify it of changes to the IME window. A window receives this message through its WindowProc function. \n        /// </summary>\n        IME_NOTIFY = 0x0282,\n        /// <summary>\n        /// Sent by an application to direct the IME window to carry out the requested command. The application uses this message to control the IME window that it has created. To send this message, the application calls the SendMessage function with the following parameters.\n        /// </summary>\n        IME_CONTROL = 0x0283,\n        /// <summary>\n        /// Sent to an application when the IME window finds no space to extend the area for the composition window. A window receives this message through its WindowProc function. \n        /// </summary>\n        IME_COMPOSITIONFULL = 0x0284,\n        /// <summary>\n        /// Sent to an application when the operating system is about to change the current IME. A window receives this message through its WindowProc function. \n        /// </summary>\n        IME_SELECT = 0x0285,\n        /// <summary>\n        /// Sent to an application when the IME gets a character of the conversion result. A window receives this message through its WindowProc function. \n        /// </summary>\n        IME_CHAR = 0x0286,\n        /// <summary>\n        /// Sent to an application to provide commands and request information. A window receives this message through its WindowProc function. \n        /// </summary>\n        IME_REQUEST = 0x0288,\n        /// <summary>\n        /// Sent to an application by the IME to notify the application of a key press and to keep message order. A window receives this message through its WindowProc function. \n        /// </summary>\n        IME_KEYDOWN = 0x0290,\n        /// <summary>\n        /// Sent to an application by the IME to notify the application of a key release and to keep message order. A window receives this message through its WindowProc function. \n        /// </summary>\n        IME_KEYUP = 0x0291,\n        /// <summary>\n        /// The WM_MOUSEHOVER message is posted to a window when the cursor hovers over the client area of the window for the period of time specified in a prior call to TrackMouseEvent.\n        /// </summary>\n        MOUSEHOVER = 0x02A1,\n        /// <summary>\n        /// The WM_MOUSELEAVE message is posted to a window when the cursor leaves the client area of the window specified in a prior call to TrackMouseEvent.\n        /// </summary>\n        MOUSELEAVE = 0x02A3,\n        /// <summary>\n        /// The WM_NCMOUSEHOVER message is posted to a window when the cursor hovers over the nonclient area of the window for the period of time specified in a prior call to TrackMouseEvent.\n        /// </summary>\n        NCMOUSEHOVER = 0x02A0,\n        /// <summary>\n        /// The WM_NCMOUSELEAVE message is posted to a window when the cursor leaves the nonclient area of the window specified in a prior call to TrackMouseEvent.\n        /// </summary>\n        NCMOUSELEAVE = 0x02A2,\n        /// <summary>\n        /// The WM_WTSSESSION_CHANGE message notifies applications of changes in session state.\n        /// </summary>\n        WTSSESSION_CHANGE = 0x02B1,\n        TABLET_FIRST = 0x02c0,\n        TABLET_LAST = 0x02df,\n        /// <summary>\n        /// An application sends a WM_CUT message to an edit control or combo box to delete (cut) the current selection, if any, in the edit control and copy the deleted text to the clipboard in CF_TEXT format. \n        /// </summary>\n        CUT = 0x0300,\n        /// <summary>\n        /// An application sends the WM_COPY message to an edit control or combo box to copy the current selection to the clipboard in CF_TEXT format. \n        /// </summary>\n        COPY = 0x0301,\n        /// <summary>\n        /// An application sends a WM_PASTE message to an edit control or combo box to copy the current content of the clipboard to the edit control at the current caret position. Data is inserted only if the clipboard contains data in CF_TEXT format. \n        /// </summary>\n        PASTE = 0x0302,\n        /// <summary>\n        /// An application sends a WM_CLEAR message to an edit control or combo box to delete (clear) the current selection, if any, from the edit control. \n        /// </summary>\n        CLEAR = 0x0303,\n        /// <summary>\n        /// An application sends a WM_UNDO message to an edit control to undo the last operation. When this message is sent to an edit control, the previously deleted text is restored or the previously added text is deleted.\n        /// </summary>\n        UNDO = 0x0304,\n        /// <summary>\n        /// The WM_RENDERFORMAT message is sent to the clipboard owner if it has delayed rendering a specific clipboard format and if an application has requested data in that format. The clipboard owner must render data in the specified format and place it on the clipboard by calling the SetClipboardData function. \n        /// </summary>\n        RENDERFORMAT = 0x0305,\n        /// <summary>\n        /// The WM_RENDERALLFORMATS message is sent to the clipboard owner before it is destroyed, if the clipboard owner has delayed rendering one or more clipboard formats. For the content of the clipboard to remain available to other applications, the clipboard owner must render data in all the formats it is capable of generating, and place the data on the clipboard by calling the SetClipboardData function. \n        /// </summary>\n        RENDERALLFORMATS = 0x0306,\n        /// <summary>\n        /// The WM_DESTROYCLIPBOARD message is sent to the clipboard owner when a call to the EmptyClipboard function empties the clipboard. \n        /// </summary>\n        DESTROYCLIPBOARD = 0x0307,\n        /// <summary>\n        /// The WM_DRAWCLIPBOARD message is sent to the first window in the clipboard viewer chain when the content of the clipboard changes. This enables a clipboard viewer window to display the new content of the clipboard. \n        /// </summary>\n        DRAWCLIPBOARD = 0x0308,\n        /// <summary>\n        /// The WM_PAINTCLIPBOARD message is sent to the clipboard owner by a clipboard viewer window when the clipboard contains data in the CF_OWNERDISPLAY format and the clipboard viewer's client area needs repainting. \n        /// </summary>\n        PAINTCLIPBOARD = 0x0309,\n        /// <summary>\n        /// The WM_VSCROLLCLIPBOARD message is sent to the clipboard owner by a clipboard viewer window when the clipboard contains data in the CF_OWNERDISPLAY format and an event occurs in the clipboard viewer's vertical scroll bar. The owner should scroll the clipboard image and update the scroll bar values. \n        /// </summary>\n        VSCROLLCLIPBOARD = 0x030A,\n        /// <summary>\n        /// The WM_SIZECLIPBOARD message is sent to the clipboard owner by a clipboard viewer window when the clipboard contains data in the CF_OWNERDISPLAY format and the clipboard viewer's client area has changed size. \n        /// </summary>\n        SIZECLIPBOARD = 0x030B,\n        /// <summary>\n        /// The WM_ASKCBFORMATNAME message is sent to the clipboard owner by a clipboard viewer window to request the name of a CF_OWNERDISPLAY clipboard format.\n        /// </summary>\n        ASKCBFORMATNAME = 0x030C,\n        /// <summary>\n        /// The WM_CHANGECBCHAIN message is sent to the first window in the clipboard viewer chain when a window is being removed from the chain. \n        /// </summary>\n        CHANGECBCHAIN = 0x030D,\n        /// <summary>\n        /// The WM_HSCROLLCLIPBOARD message is sent to the clipboard owner by a clipboard viewer window. This occurs when the clipboard contains data in the CF_OWNERDISPLAY format and an event occurs in the clipboard viewer's horizontal scroll bar. The owner should scroll the clipboard image and update the scroll bar values. \n        /// </summary>\n        HSCROLLCLIPBOARD = 0x030E,\n        /// <summary>\n        /// This message informs a window that it is about to receive the keyboard focus, giving the window the opportunity to realize its logical palette when it receives the focus. \n        /// </summary>\n        QUERYNEWPALETTE = 0x030F,\n        /// <summary>\n        /// The WM_PALETTEISCHANGING message informs applications that an application is going to realize its logical palette. \n        /// </summary>\n        PALETTEISCHANGING = 0x0310,\n        /// <summary>\n        /// This message is sent by the OS to all top-level and overlapped windows after the window with the keyboard focus realizes its logical palette. \n        /// This message enables windows that do not have the keyboard focus to realize their logical palettes and update their client areas.\n        /// </summary>\n        PALETTECHANGED = 0x0311,\n        /// <summary>\n        /// The WM_HOTKEY message is posted when the user presses a hot key registered by the RegisterHotKey function. The message is placed at the top of the message queue associated with the thread that registered the hot key. \n        /// </summary>\n        HOTKEY = 0x0312,\n        /// <summary>\n        /// The WM_PRINT message is sent to a window to request that it draw itself in the specified device context, most commonly in a printer device context.\n        /// </summary>\n        PRINT = 0x0317,\n        /// <summary>\n        /// The WM_PRINTCLIENT message is sent to a window to request that it draw its client area in the specified device context, most commonly in a printer device context.\n        /// </summary>\n        PRINTCLIENT = 0x0318,\n        /// <summary>\n        /// The WM_APPCOMMAND message notifies a window that the user generated an application command event, for example, by clicking an application command button using the mouse or typing an application command key on the keyboard.\n        /// </summary>\n        APPCOMMAND = 0x0319,\n        /// <summary>\n        /// The WM_THEMECHANGED message is broadcast to every window following a theme change event. Examples of theme change events are the activation of a theme, the deactivation of a theme, or a transition from one theme to another.\n        /// </summary>\n        THEMECHANGED = 0x031A,\n        /// <summary>\n        /// Sent when the contents of the clipboard have changed.\n        /// </summary>\n        CLIPBOARDUPDATE = 0x031D,\n        /// <summary>\n        /// The system will send a window the WM_DWMCOMPOSITIONCHANGED message to indicate that the availability of desktop composition has changed.\n        /// </summary>\n        DWMCOMPOSITIONCHANGED = 0x031E,\n        /// <summary>\n        /// WM_DWMNCRENDERINGCHANGED is called when the non-client area rendering status of a window has changed. Only windows that have set the flag DWM_BLURBEHIND.fTransitionOnMaximized to true will get this message. \n        /// </summary>\n        DWMNCRENDERINGCHANGED = 0x031F,\n        /// <summary>\n        /// Sent to all top-level windows when the colorization color has changed. \n        /// </summary>\n        DWMCOLORIZATIONCOLORCHANGED = 0x0320,\n        /// <summary>\n        /// WM_DWMWINDOWMAXIMIZEDCHANGE will let you know when a DWM composed window is maximized. You also have to register for this message as well. You'd have other windowd go opaque when this message is sent.\n        /// </summary>\n        DWMWINDOWMAXIMIZEDCHANGE = 0x0321,\n        /// <summary>\n        /// Sent to request extended title bar information. A window receives this message through its WindowProc function.\n        /// </summary>\n        GETTITLEBARINFOEX = 0x033F,\n        HANDHELDFIRST = 0x0358,\n        HANDHELDLAST = 0x035F,\n        AFXFIRST = 0x0360,\n        AFXLAST = 0x037F,\n        PENWINFIRST = 0x0380,\n        PENWINLAST = 0x038F,\n        /// <summary>\n        /// The WM_APP constant is used by applications to help define private messages, usually of the form WM_APP+X, where X is an integer value. \n        /// </summary>\n        APP = 0x8000,\n        /// <summary>\n        /// The WM_USER constant is used by applications to help define private messages for use by private window classes, usually of the form WM_USER+X, where X is an integer value. \n        /// </summary>\n        USER = 0x0400,\n\n        /// <summary>\n        /// An application sends the WM_CPL_LAUNCH message to Windows Control Panel to request that a Control Panel application be started. \n        /// </summary>\n        CPL_LAUNCH = USER + 0x1000,\n        /// <summary>\n        /// The WM_CPL_LAUNCHED message is sent when a Control Panel application, started by the WM_CPL_LAUNCH message, has closed. The WM_CPL_LAUNCHED message is sent to the window identified by the wParam parameter of the WM_CPL_LAUNCH message that started the application. \n        /// </summary>\n        CPL_LAUNCHED = USER + 0x1001,\n        /// <summary>\n        /// WM_SYSTIMER is a well-known yet still undocumented message. Windows uses WM_SYSTIMER for internal actions like scrolling.\n        /// </summary>\n        SYSTIMER = 0x118\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/VideoMode/MyVideoModeAntiAliasing.cs",
    "content": "﻿namespace MinerWars.AppCode.Game.VideoMode\n{\n    //  IMPORTANT: Never change numeric values. When you need new enum item, just use new number!\n    enum MyAntiAliasingEnum\n    {\n        OFF = 0,\n        TWO_SAMPLES = 1,\n        FOUR_SAMPLES = 2,\n        EIGHT_SAMPLES = 3\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/VideoMode/MyVideoModeAspectRatio.cs",
    "content": "﻿using System;\nusing MinerWarsMath.Graphics;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SharpDX.Toolkit.Graphics;\n\nnamespace MinerWars.AppCode.Game.VideoMode\n{\n    //  IMPORTANT: Never change numeric values. When you need new enum item, just use new number!\n    enum MyAspectRatioEnum\n    {\n        NORMAL_4_3 = 0,\n        WIDE_16_9 = 1,\n        WIDE_16_10 = 2,\n        DUAL_HEAD_NORMAL_4_3 = 3,\n        DUAL_HEAD_WIDE_16_9 = 4,\n        DUAL_HEAD_WIDE_16_10 = 5,\n        TRIPLE_HEAD_NORMAL_4_3 = 6,\n        TRIPLE_HEAD_WIDE_16_9 = 7,\n        TRIPLE_HEAD_WIDE_16_10 = 8\n    }\n\n    class MyAspectRatioEx\n    {\n        public MyAspectRatioEnum AspectRatioEnum;\n        public float AspectRatioNumber;\n        public MyTextsWrapperEnum TextLong;\n        public MyTextsWrapperEnum TextShort;\n        public bool IsTripleHead;\n\n\n        public MyAspectRatioEx(bool isTripleHead, MyAspectRatioEnum aspectRatioEnum, float aspectRatioNumber, MyTextsWrapperEnum textLong, MyTextsWrapperEnum textShort)\n        {\n            IsTripleHead = isTripleHead;\n            AspectRatioEnum = aspectRatioEnum;\n            AspectRatioNumber = aspectRatioNumber;\n            TextLong = textLong;\n            TextShort = textShort;\n        }\n    }\n\n    static class MyAspectRatioExList\n    {\n        //  From outside of this class use this list only as read-only!\n        public static MyAspectRatioEx[] List;\n\n\n        static MyAspectRatioExList()\n        {\n            List = new MyAspectRatioEx[MyMwcUtils.GetMaxValueFromEnum<MyAspectRatioEnum>() + 1];\n\n            Add(false, MyAspectRatioEnum.NORMAL_4_3, 4.0f / 3.0f, MyTextsWrapperEnum.AspectRatioNormal_4_3, MyTextsWrapperEnum.AspectRatio_Short_Normal_4_3);\n            Add(false, MyAspectRatioEnum.WIDE_16_9, 16.0f / 9.0f, MyTextsWrapperEnum.AspectRatioWide_16_9, MyTextsWrapperEnum.AspectRatio_Short_Normal_16_9);\n            Add(false, MyAspectRatioEnum.WIDE_16_10, 16.0f / 10.0f, MyTextsWrapperEnum.AspectRatioWide_16_10, MyTextsWrapperEnum.AspectRatio_Short_Normal_16_10);\n\n            Add(false, MyAspectRatioEnum.DUAL_HEAD_NORMAL_4_3, 2 * 4.0f / 3.0f, MyTextsWrapperEnum.AspectRatioDualHeadNormal_4_3, MyTextsWrapperEnum.AspectRatio_Short_Dual_4_3);\n            Add(false, MyAspectRatioEnum.DUAL_HEAD_WIDE_16_9, 2 * 16.0f / 9.0f, MyTextsWrapperEnum.AspectRatioDualHeadWide_16_9, MyTextsWrapperEnum.AspectRatio_Short_Dual_16_9);\n            Add(false, MyAspectRatioEnum.DUAL_HEAD_WIDE_16_10, 2 * 16.0f / 10.0f, MyTextsWrapperEnum.AspectRatioDualHeadWide_16_10, MyTextsWrapperEnum.AspectRatio_Short_Dual_16_10);\n            \n            Add(true, MyAspectRatioEnum.TRIPLE_HEAD_NORMAL_4_3, 3 * 4.0f / 3.0f, MyTextsWrapperEnum.AspectRatioTripleHeadNormal_4_3, MyTextsWrapperEnum.AspectRatio_Short_Triple_4_3);\n            Add(true, MyAspectRatioEnum.TRIPLE_HEAD_WIDE_16_9, 3 * 16.0f / 9.0f, MyTextsWrapperEnum.AspectRatioTripleHeadWide_16_9, MyTextsWrapperEnum.AspectRatio_Short_Triple_16_9);\n            Add(true, MyAspectRatioEnum.TRIPLE_HEAD_WIDE_16_10, 3 * 16.0f / 10.0f, MyTextsWrapperEnum.AspectRatioTripleHeadWide_16_10, MyTextsWrapperEnum.AspectRatio_Short_Triple_16_10);\n        }\n\n        static void Add(bool isTripleHead, MyAspectRatioEnum aspectRatioEnum, float aspectRatioNumber, MyTextsWrapperEnum textLong, MyTextsWrapperEnum textShort)\n        {\n            List[(int)aspectRatioEnum] = new MyAspectRatioEx(isTripleHead, aspectRatioEnum, aspectRatioNumber, textLong, textShort);\n        }\n\n        public static MyAspectRatioEx Get(MyAspectRatioEnum aspectRatioEnum)\n        {\n            return List[(int)aspectRatioEnum];\n        }\n\n        //  Finds aspect ration that is closest to actual Windows desktop aspect ratio (we assume that this aspect ration is good)\n        public static MyAspectRatioEnum GetWindowsDesktopClosestAspectRatio(int adapterIndex)\n        {\n            float actualDesktopAspectRatio = (float)GraphicsAdapter.Adapters[adapterIndex].CurrentDisplayMode.Width / (float)GraphicsAdapter.Adapters[adapterIndex].CurrentDisplayMode.Height;\n\n            MyAspectRatioEnum closestAspectRatioEnum = MyAspectRatioEnum.NORMAL_4_3;    //  We assign this value only because compiler needs some value! It's not default or something!\n\n            float closestDistance = float.MaxValue;\n            for (int i = 0; i < List.Length; i++)\n            {\n                float tempDistance = Math.Abs(actualDesktopAspectRatio - List[i].AspectRatioNumber);\n                if (tempDistance < closestDistance)\n                {\n                    closestDistance = tempDistance;\n                    closestAspectRatioEnum = List[i].AspectRatioEnum;\n                }\n            }\n\n            return closestAspectRatioEnum;\n        }\n\n        //  Finds aspect ratio that is closest to aspectRatio paremeter aspect ratio (we assume that this aspect ration is good)\n        public static MyAspectRatioEnum GetClosestAspectRatio(float aspectRatio)\n        {\n            MyAspectRatioEnum closestAspectRatioEnum = MyAspectRatioEnum.NORMAL_4_3;    //  We assign this value only because compiler needs some value! It's not default or something!\n\n            float closestDistance = float.MaxValue;\n            for (int i = 0; i < List.Length; i++)\n            {\n                float tempDistance = Math.Abs(aspectRatio - List[i].AspectRatioNumber);\n                if (tempDistance < closestDistance)\n                {\n                    closestDistance = tempDistance;\n                    closestAspectRatioEnum = List[i].AspectRatioEnum;\n                }\n            }\n\n            return closestAspectRatioEnum;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/VideoMode/MyVideoModeManager.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Management;\nusing System.Reflection;\nusing System.Runtime.InteropServices;\n//using System.Threading;\nusing KeenSoftwareHouse.Library.Debugging;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.HUD;\nusing MinerWars.AppCode.Game.Models;\nusing MinerWars.AppCode.Game.Render;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.AppCode.Game.Utils;\nusing SysUtils;\nusing SysUtils.Utils;\n\n//using MinerWarsMath;\n//using MinerWarsMath.Graphics;\n\nusing SharpDX.Direct3D9;\nusing SharpDX.Toolkit;\nusing SharpDX.Toolkit.Graphics;\n\n\nnamespace MinerWars.AppCode.Game.VideoMode\n{\n    /// <summary>\n    /// \n    /// </summary>\n    static class MyVideoModeManager\n    {\n        /// <summary>\n        /// Represent asynchronous change mode operation.\n        /// </summary>\n        public class MyVideoModeChangeOperation\n        {\n            #region Fields\n\n            private bool callApplyChanges;\n            private bool fullScreen;\n            private bool verticalSync;\n            private bool hardwareCursor;\n            private float fieldOfView;\n            private int videoAdapter;\n            private MyVideoModeEx videoMode;\n            private MyRenderQualityEnum renderQuality;\n            private readonly bool first;\n\n            /// <summary>\n            /// Result of operation.\n            /// </summary>\n            public bool Changed { get; private set; }\n\n            public bool SomethingChanged { get; private set; }\n\n\n\n\n            /// <summary>\n            /// Callback.\n            /// </summary>\n            private Action<MyVideoModeChangeOperation> requestCallback;\n\n            #endregion\n\n            #region Methods\n\n            /// <summary>\n            /// Initializes a new instance of the <see cref=\"T:System.Object\"/> class.\n            /// </summary>\n            public MyVideoModeChangeOperation(bool callApplyChanges, bool fullScreen, bool verticalSync, bool hardwareCursor,\n                                              float fieldOfView,\n                                                int videoAdapter, MyVideoModeEx videoMode,\n                                              MyRenderQualityEnum renderQuality, bool first, Action<MyVideoModeChangeOperation> requestCallback)\n            {\n                this.callApplyChanges = callApplyChanges;\n                this.fullScreen = fullScreen;\n                this.verticalSync = verticalSync;\n                this.hardwareCursor = hardwareCursor;\n                this.fieldOfView = fieldOfView;\n                this.videoAdapter = videoAdapter;\n                this.videoMode = videoMode;\n                this.renderQuality = renderQuality;\n                this.first = first;\n                this.requestCallback = requestCallback;\n            }\n\n            /// <summary>\n            /// Processes this operation.\n            /// </summary>\n            internal void Process()\n            {\n                MyMwcLog.WriteLine(\"MyVideoModeManager.ChangeVideoMode - START\");\n                MyMwcLog.IncreaseIndent();\n\n                bool modeChange = !videoMode.Equals(m_videoMode) || m_videoAdapter != videoAdapter || m_fullScreen != fullScreen ||\n                                  m_verticalSync != verticalSync,\n                     qualityChange = MyRenderConstants.RenderQualityProfile.RenderQuality != renderQuality,\n                     fovChange = m_fieldOfView != fieldOfView,\n                     hardwareCursorChange = m_hardwareCursor != hardwareCursor;\n\n                SomethingChanged = modeChange || qualityChange || fovChange || hardwareCursorChange;\n\n                bool needReloadContent = false;\n\n                m_fullScreen = fullScreen;\n                m_videoMode = videoMode;\n                m_videoAdapter = videoAdapter;\n                m_verticalSync = verticalSync;\n                m_hardwareCursor = hardwareCursor;\n                m_fieldOfView = fieldOfView;\n\n                //  User provided values\n                MyMwcLog.WriteLine(\"Width: \" + videoMode.Width);\n                MyMwcLog.WriteLine(\"Height: \" + videoMode.Height);\n                MyMwcLog.WriteLine(\"FullScreen: \" + m_fullScreen);\n                MyMwcLog.WriteLine(\"VerticalSync: \" + m_verticalSync);\n                MyMwcLog.WriteLine(\"HardwareCursor: \" + m_hardwareCursor);\n                MyMwcLog.WriteLine(\"RenderQuality: \" + (int)renderQuality);\n                                                 /*\n                foreach (GraphicsAdapter adapter in GraphicsAdapter.Adapters)\n                {\n                    MyMwcLog.WriteLine(\"adapter.Description: \" + adapter.Description.Description);\n                    MyMwcLog.WriteLine(\"adapter.VendorId: \" + adapter.Description.VendorId);\n                    MyMwcLog.WriteLine(\"adapter.DeviceId: \" + adapter.Description.DeviceId);\n                    MyMwcLog.WriteLine(\"adapter.DeviceName: \" + adapter.Name);\n                    MyMwcLog.WriteLine(\"adapter.IsDefaultAdapter: \" + adapter.IsDefaultAdapter);\n                    //MyMwcLog.WriteLine(\"adapter.IsWideScreen: \" + adapter.Description.);\n                    MyMwcLog.WriteLine(\"adapter.Revision: \" + adapter.Description.Revision);\n                    MyMwcLog.WriteLine(\"adapter.SubSystemId: \" + adapter.Description.SubsystemId);\n                    MyMwcLog.WriteLine(\"adapter.CurrentDisplayMode.Width: \" + adapter.CurrentDisplayMode.Width);\n                    MyMwcLog.WriteLine(\"adapter.CurrentDisplayMode.Height: \" + adapter.CurrentDisplayMode.Height);\n                    MyMwcLog.WriteLine(\"adapter.CurrentDisplayMode.AspectRatio: \" +\n                                       adapter.CurrentDisplayMode.AspectRatio);\n                    MyMwcLog.WriteLine(\"adapter.CurrentDisplayMode.Format: \" + adapter.CurrentDisplayMode.Format);\n                }\n                                       */\n                //  System values\n                /*\n                MyMwcLog.WriteLine(\"GraphicsAdapter.DefaultAdapter.Description: \" +\n                                   GraphicsAdapter.Default.Description.Description);\n                MyMwcLog.WriteLine(\"GraphicsAdapter.DefaultAdapter.VendorId: \" + GraphicsAdapter.Default.Description.VendorId);\n                MyMwcLog.WriteLine(\"GraphicsAdapter.DefaultAdapter.DeviceId: \" + GraphicsAdapter.Default.Description.DeviceId);\n                MyMwcLog.WriteLine(\"GraphicsAdapter.DefaultAdapter.DeviceName: \" +\n                                   GraphicsAdapter.Default.Name);\n                MyMwcLog.WriteLine(\"GraphicsAdapter.DefaultAdapter.IsDefaultAdapter: \" +\n                                   GraphicsAdapter.Default.IsDefaultAdapter);\n//                MyMwcLog.WriteLine(\"GraphicsAdapter.DefaultAdapter.IsWideScreen: \" +\n  //                                 GraphicsAdapter.Default.IsWideScreen);\n                MyMwcLog.WriteLine(\"GraphicsAdapter.DefaultAdapter.Revision: \" + GraphicsAdapter.Default.Description.Revision);\n                MyMwcLog.WriteLine(\"GraphicsAdapter.DefaultAdapter.SubSystemId: \" +\n                                   GraphicsAdapter.Default.Description.SubsystemId);\n                MyMwcLog.WriteLine(\"GraphicsAdapter.DefaultAdapter.CurrentDisplayMode.Width: \" +\n                                   GraphicsAdapter.Default.CurrentDisplayMode.Width);\n                MyMwcLog.WriteLine(\"GraphicsAdapter.DefaultAdapter.CurrentDisplayMode.Height: \" +\n                                   GraphicsAdapter.Default.CurrentDisplayMode.Height);\n                MyMwcLog.WriteLine(\"GraphicsAdapter.DefaultAdapter.CurrentDisplayMode.AspectRatio: \" +\n                                   GraphicsAdapter.Default.CurrentDisplayMode.AspectRatio);\n                MyMwcLog.WriteLine(\"GraphicsAdapter.DefaultAdapter.CurrentDisplayMode.Format: \" +\n                                   GraphicsAdapter.Default.CurrentDisplayMode.Format);\n                MyMwcLog.WriteLine(\"PreferredBackBufferFormat: \" +\n                                   MyMinerGameDX.GraphicsDeviceManager.PreferredBackBufferFormat);\n                MyMwcLog.WriteLine(\"PreferredDepthStencilFormat: \" +\n                                   MyMinerGameDX.GraphicsDeviceManager.PreferredDepthStencilFormat);\n                MyMwcLog.WriteLine(\"PreferredBackBufferWidth: \" +\n                                   MyMinerGameDX.GraphicsDeviceManager.PreferredBackBufferWidth);\n                MyMwcLog.WriteLine(\"PreferredBackBufferHeight: \" +\n                                   MyMinerGameDX.GraphicsDeviceManager.PreferredBackBufferHeight);\n                MyMwcLog.WriteLine(\"PreferMultiSampling: \" + MyMinerGameDX.GraphicsDeviceManager.PreferMultiSampling);\n                MyMwcLog.WriteLine(\"SynchronizeWithVerticalRetrace: \" +\n                                   MyMinerGameDX.GraphicsDeviceManager.SynchronizeWithVerticalRetrace);\n//                MyMwcLog.WriteLine(\"GraphicsProfile: \" + MyMinerGameDX.GraphicsDeviceManager.fea);\n                                */\n                Changed = false;\n\n                if (IsSupportedDisplayMode(videoAdapter, videoMode.Width, videoMode.Height, m_fullScreen) == true)\n                {\n                    // The mode is supported, so set the buffer formats, apply changes and return\n                    //MyMinerGameDX.GraphicsDeviceManager.PreferMultiSampling = false;\n                    MyMinerGame.GraphicsDeviceManager.PreferredVideoAdapter = videoAdapter;\n\n                    MyMinerGame.GraphicsDeviceManager.PreferredBackBufferWidth = videoMode.Width;\n                    MyMinerGame.GraphicsDeviceManager.PreferredBackBufferHeight = videoMode.Height;\n#if RENDER_PROFILING || GPU_PROFILING\n                    MyMinerGame.GraphicsDeviceManager.SynchronizeWithVerticalRetrace = false;\n#else\n                    MyMinerGame.GraphicsDeviceManager.SynchronizeWithVerticalRetrace = m_verticalSync;\n#endif\n                    MyMinerGame.GraphicsDeviceManager.IsFullScreen = m_fullScreen;\n                    MyMinerGame.GraphicsDeviceManager.PreferredDepthStencilFormat = Format.D24S8;\n                        //  We need stencil in backbuffer because \n                    Changed = true;\n                }\n\n                try\n                {\n\n                    if (callApplyChanges)\n                    {\n                        if (modeChange)\n                        {\n                            //  ApplyChanges() should be called only if we change screen resolution during game. It shouldn't be called when we\n                            //  set up resolution at game start up (because Game class Initialize is handling that for us and if we also do it - it can\n                            //  have bad consequences on dual monitor setup).\n                            MyMinerGame.GraphicsDeviceManager.ApplyChanges();\n                            //MyRender.ResetStates();\n                        }\n\n                        if (qualityChange)\n                        {\n                            needReloadContent = MyRenderConstants.RenderQualityProfile.NeedReloadContent;\n                            MyRenderConstants.SwitchRenderQuality(renderQuality);\n                            needReloadContent |= MyRenderConstants.RenderQualityProfile.NeedReloadContent;\n                        }\n\n                        if (fovChange)\n                        {\n                            if (MinerWars.CommonLIB.AppCode.Utils.MyMwcUtils.IsZero(fieldOfView - MinerWarsMath.MathHelper.ToRadians(70)))\n                            { //replace old default value\n                                fieldOfView = MinerWarsMath.MathHelper.ToRadians(60);\n                            }\n\n                            MyCamera.FieldOfView = fieldOfView;\n\n                            if (MyCamera.Zoom != null)\n                            {\n                                MyCamera.Zoom.Update();\n                            }\n                            MyCamera.ChangeFov(MyCamera.FieldOfView);\n                        }\n\n                       // if (hardwareCursorChange)\n                        {\n                            // do whatever is necessary to switch cursor between hardware/software\n                            MyMinerGame.Static.IsMouseVisible = m_hardwareCursor;\n                            MinerWars.AppCode.Game.GUI.Core.MyGuiManager.SetMouseCursorVisibility(m_hardwareCursor);\n                        }\n\n                        if (needReloadContent && MyMinerGame.Static.IsActive && !first)\n                        {\n                            //MyMinerGame.Static.ReloadContent();\n                            MyRender.LoadContent();\n                            MyModels.ReloadContent();\n                            MinerWars.AppCode.Game.Voxels.MyVoxelMaterials.ReloadContent();\n                            MyTextureManager.ReloadTextures();\n                        }\n                    }\n\n                    if (Changed)\n                    {\n                        UpdateScreenSize();\n                    }\n                }\n                catch (Exception e)\n                {\n                    Debug.Fail(\"Failed to change resolution\");\n                    MyMwcLog.WriteLine(\"Failed to update screen size: \" + e.ToString());\n                    Changed = false;\n                }\n\n                if (!Changed || needReloadContent)\n                {\n                    // There was error when changing resolution, so we try to restore previous state - so recreate render targets with old size\n                    try\n                    {\n                        // reset render targets, or it will crash in next draw, before reverting the settings\n                      //  MyRender.CreateRenderTargets();\n                      //  MyRender.CreateEnvironmentMapsRT(MyRenderConstants.ENVIRONMENT_MAP_SIZE);\n                    }\n                    catch(Exception)\n                    {\n                        Debug.Fail(\"Failed to reload content\");\n                        Changed = false;\n                        MyMwcLog.WriteLine(\"Failed to reload content\");\n                    }\n                }\n\n                if (this.requestCallback != null)\n                {\n                    this.requestCallback(this);\n                }\n\n                MyMinerGame.IsGameReady = true;\n\n                MyMwcLog.DecreaseIndent();\n                MyMwcLog.WriteLine(\"MyVideoModeManager.ChangeVideoMode - END\");\n            }\n\n            #endregion\n        }\n\n        //  Here we store width/height of windows desktop, because later it can change (if we switch to fullscreen) and we want to\n        //  have these original values.\n        static int m_originalWindowsDesktopWidth;\n        static int m_originalWindowsDesktopHeight;\n\n        //  These are actual settings\n        //static MyAntiAliasingEnum m_antiAliasing; Removed in deferred render\n        static bool m_verticalSync;\n        static bool m_fullScreen;\n        static bool m_hardwareCursor;\n        static MyVideoModeEx m_videoMode;\n        static int m_videoAdapter;\n        static float m_fieldOfView;\n\n        //  These are releted in storing and book-keeping system supported video modes\n        static Dictionary<int, List<MyVideoModeEx>> m_videoModeList;\n        static Dictionary<int, Dictionary<int, Dictionary<int, MyVideoModeEx>>> m_resolutionMap;\n        static Dictionary<int, Dictionary<float, SortedDictionary<int, MyVideoModeEx>>> m_aspectRatioMap;\n        static Dictionary<int, MyAspectRatioEx> m_recommendedAspectRatio;\n\n\n        private static Queue<MyVideoModeChangeOperation> m_changeOperations;\n\n        public static readonly MyVideoModeEx DEFAULT_FALL_BACK_4_3_800_600 = new MyVideoModeEx(800, 600, 800f / 600f);\n\n\n        //  Changed from static constructor to LoadContent because I want to make sure it is called at the right time,\n        //  therefore when GraphicsAdapter\n        public static void Initialize()\n        {\n            m_videoModeList = new Dictionary<int, List<MyVideoModeEx>>();\n            m_resolutionMap = new Dictionary<int, Dictionary<int, Dictionary<int, MyVideoModeEx>>>();\n            m_aspectRatioMap = new Dictionary<int, Dictionary<float, SortedDictionary<int, MyVideoModeEx>>>();\n            m_changeOperations = new Queue<MyVideoModeChangeOperation>();\n            m_recommendedAspectRatio = new Dictionary<int, MyAspectRatioEx>();\n\n            MyMinerGame.GraphicsDeviceManager.DeviceCreated += GraphicsDevice_DeviceCreated;\n            MyRenderConstants.OnRenderQualityChange += new EventHandler(MyRenderConstants_OnRenderQualityChange);\n\n            UpdateVideoModes();\n\n            MyVideoModeManager.InitFromConfig();\n        }\n\n        static void UpdateVideoModes()\n        {\n            m_resolutionMap.Clear();\n            m_videoModeList.Clear(); \n            m_aspectRatioMap.Clear();\n            m_recommendedAspectRatio.Clear();\n\n            for (int adapterIndex = 0; adapterIndex < GraphicsAdapter.Adapters.Length; adapterIndex++)\n            {\n                GraphicsAdapter adapter = GraphicsAdapter.Adapters[adapterIndex];\n\n                m_recommendedAspectRatio.Add(adapterIndex, MyAspectRatioExList.Get(MyAspectRatioExList.GetWindowsDesktopClosestAspectRatio(adapterIndex)));\n\n                foreach (SharpDX.Direct3D9.DisplayMode dm in adapter.SupportedDisplayModes)\n                {\n                    RegisterVideoMode(adapterIndex, dm.Width, dm.Height, dm.AspectRatio);\n                }\n\n                if (MyMwcFinalBuildConstants.IS_DEVELOP)\n                {\n                    RegisterVideoMode(adapterIndex, 1600, 600);   // for testing windowed mode dual/triple screens\n                    RegisterVideoMode(adapterIndex, 1920, 480);   // for testing windowed mode dual/triple screens\n                    //RegisterVideoMode(4000, 2728);  // for making large-screen screenshots on our A3 printer (it needs to be exactly this aspect ratio, otherwise it won't fit on paper)\n                }\n            }\n        }\n\n        static void MyRenderConstants_OnRenderQualityChange(object sender, EventArgs e)\n        {\n            MyTextureManager.Quality = MyRenderConstants.RenderQualityProfile.TextureQuality;\n            //graphicsManager.ReloadResources(); // Skipped, this will be done in MyMinerGame.LoadContent();\n        }\n\n        static void RegisterVideoMode(int adapterIndex, int width, int height)\n        {\n            RegisterVideoMode(adapterIndex, width, height, (float)width / (float)height);\n        }\n\n        static void RegisterVideoMode(int adapterIndex, int width, int height, float ratio)\n        {\n            if ((width > MyMinerGame.GraphicsDeviceManager.MaxTextureSize) || (height > MyMinerGame.GraphicsDeviceManager.MaxTextureSize))\n            {\n                MyMwcLog.WriteLine(\"VideoMode \" + width.ToString() + \" x \" + height.ToString() + \" requires texture size which is not supported by this HW (this HW supports max \" + MyMinerGame.GraphicsDeviceManager.MaxTextureSize.ToString() + \")\");\n            }\n\n            MyVideoModeEx newVideoMode = null;\n\n            if (!m_resolutionMap.ContainsKey(adapterIndex))\n                m_resolutionMap.Add(adapterIndex, new Dictionary<int, Dictionary<int, MyVideoModeEx>>());\n\n            if (!m_videoModeList.ContainsKey(adapterIndex))\n                m_videoModeList.Add(adapterIndex, new List<MyVideoModeEx>());\n\n            if (!m_aspectRatioMap.ContainsKey(adapterIndex))\n                m_aspectRatioMap.Add(adapterIndex, new Dictionary<float, SortedDictionary<int, MyVideoModeEx>>());\n\n\n            if (m_resolutionMap[adapterIndex].ContainsKey(width) == false)\n            {\n                m_resolutionMap[adapterIndex][width] = new Dictionary<int, MyVideoModeEx>();\n                newVideoMode = new MyVideoModeEx(width, height, ratio);\n            }\n            else if (m_resolutionMap[adapterIndex][width].ContainsKey(height) == false)\n            {\n                newVideoMode = new MyVideoModeEx(width, height, ratio);\n            }\n\n            if (newVideoMode != null)  // So there is a new video mode added, add it to maps and populate related fields\n            {\n                newVideoMode.IsRecommended = newVideoMode.AspectRatioEnum == m_recommendedAspectRatio[adapterIndex].AspectRatioEnum;\n                m_resolutionMap[adapterIndex][width][height] = newVideoMode;\n                m_videoModeList[adapterIndex].Add(newVideoMode);\n\n                if (m_aspectRatioMap[adapterIndex].ContainsKey(newVideoMode.AspectRatio) == false)\n                {\n                    m_aspectRatioMap[adapterIndex][newVideoMode.AspectRatio] = new SortedDictionary<int, MyVideoModeEx>();\n                    m_aspectRatioMap[adapterIndex][newVideoMode.AspectRatio].Add(newVideoMode.Width, newVideoMode);\n                }\n                else if (m_aspectRatioMap[adapterIndex][newVideoMode.AspectRatio].ContainsKey(width) == false)\n                {\n                    m_aspectRatioMap[adapterIndex][newVideoMode.AspectRatio].Add(newVideoMode.Width, newVideoMode);\n                }\n            }\n        }\n\n        public static MyAspectRatioEx GetRecommendedAspectRatio(int adapterIndex)\n        {\n            return m_recommendedAspectRatio[adapterIndex];\n        }\n\n        public static MyVideoModeEx GetVideoModeByIndex(int adapterIndex, int index)\n        {\n            if (index >= m_videoModeList[adapterIndex].Count || index < 0)\n                return DEFAULT_FALL_BACK_4_3_800_600;\n\n            return m_videoModeList[adapterIndex][index];\n        }\n\n        public static MyVideoModeEx GetFirstVideoModeWithClosestAspectRatio(int adapterIndex, float aspectRatio)\n        {\n            if (m_aspectRatioMap[adapterIndex].ContainsKey(aspectRatio) == true)\n            {\n                foreach (var vm in m_aspectRatioMap[adapterIndex][aspectRatio])\n                {\n                    return vm.Value;\n                }\n            }\n            return null;\n        }\n\n        //  This video mode is used when user has empty config and we need to set some default resolution\n        //  The idea is to find resolution which is close to 1280x720 because that one is high-res enough\n        //  and runs smoothly on all sorts of computers\n        public static MyVideoModeEx GetDefaultVideoModeForEmptyConfigWithClosestAspectRatio(int adapterIndex, float aspectRatio)\n        {\n            List<MyVideoModeEx> sortByClosestAspectRatio = new List<MyVideoModeEx>();\n\n            for (int i = 0; i < m_videoModeList[adapterIndex].Count; i++)\n            {\n                MyVideoModeEx videoMode = m_videoModeList[adapterIndex][i];\n                if (videoMode.Width <= 1280)\n                {\n                    sortByClosestAspectRatio.Add(videoMode);                    \n                }\n            }\n\n            if (sortByClosestAspectRatio.Count > 0)\n            {\n                sortByClosestAspectRatio.Sort(\n                    delegate(MyVideoModeEx p1, MyVideoModeEx p2)\n                    {\n                        float deltaP1 = Math.Abs(aspectRatio - p1.AspectRatio);\n                        float deltaP2 = Math.Abs(aspectRatio - p2.AspectRatio);\n                        return deltaP1.CompareTo(deltaP2);\n                    }\n                    );\n\n                MyAspectRatioEnum thisAspectRatio = sortByClosestAspectRatio[0].AspectRatioEnum;\n\n                //  Now look for highest resolution (we have guaranteed that none is more than 1280x***)\n                MyVideoModeEx maxVideoMode = null;\n                for (int i = 0; i < sortByClosestAspectRatio.Count; i++)\n                {\n                    MyVideoModeEx videoMode = sortByClosestAspectRatio[i];\n                    if (videoMode.AspectRatioEnum == thisAspectRatio)\n                    {\n                        if ((maxVideoMode == null) || (videoMode.Width > maxVideoMode.Width))\n                        {\n                            maxVideoMode = videoMode;\n                        }\n                    }\n                }\n\n                return maxVideoMode;\n            }\n            else\n            {\n                return null;\n            }\n        }\n\n        public static MyVideoModeEx GetDefaultVideoModeForEmptyConfig(int adapterIndex)\n        {\n            for (int i = 0; i < m_videoModeList[adapterIndex].Count; i++)\n            {\n                MyVideoModeEx videoMode = m_videoModeList[adapterIndex][i];\n                if (videoMode.Width == System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width\n                    &&\n                    videoMode.Height == System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height)\n                {\n                    return videoMode;\n                }\n            }\n\n            return null;\n        }\n\n        public static int GetVideoModeIndexByWidthAndHeight(int adapterIndex, int width, int height)\n        {\n            for (int i = 0; i < m_videoModeList[adapterIndex].Count; i++)\n            {\n                if (m_videoModeList[adapterIndex][i].Width == width && m_videoModeList[adapterIndex][i].Height == height)\n                    return i;\n            }\n            return 0;\n        }\n\n        public static MyVideoModeEx GetVideoModeByWidthAndHeight(int adapterIndex, int width, int height)\n        {\n            if (m_resolutionMap[adapterIndex].ContainsKey(width) == true && m_resolutionMap[adapterIndex][width].ContainsKey(height) == true)\n                return m_resolutionMap[adapterIndex][width][height];\n            \n            return DEFAULT_FALL_BACK_4_3_800_600;\n        }\n\n        public static List<MyVideoModeEx> GetAllSupportedVideoModes(int adapterIndex)\n        {\n            return m_videoModeList[adapterIndex];\n        }\n\n        //  Call this at the application start. It will look into config file and get video parameters. If not found, default will be chosen. Then video mode will be initialized.\n        static void InitFromConfig()\n        {\n            MyMwcLog.WriteLine(\"MyVideoModeManager.InitFromConfig START\");\n\n            //  Here we store width/height of windows desktop - becuase later they can \n            //  change after we switch to fullscreen and we want to have these original values.\n            m_originalWindowsDesktopWidth = GraphicsAdapter.Default.CurrentDisplayMode.Width;\n            m_originalWindowsDesktopHeight = GraphicsAdapter.Default.CurrentDisplayMode.Height;\n\n            //  Read from config or use default/recommended values\n            bool configFullscreen = MyConfig.FullScreen;\n            int configVideoAdapter = MyConfig.VideoAdapter;\n            MyVideoModeEx configVideoMode = MyConfig.VideoMode;\n            bool configVerticalSync = MyConfig.VerticalSync;\n            bool configHardwareCursor = MyConfig.HardwareCursor;\n            MyRenderQualityEnum configRenderQuality = MyConfig.RenderQuality;\n            float configFieldOfView = MyConfig.FieldOfView;\n\n            //  Save values to config\n            MyConfig.VideoAdapter = configVideoAdapter;\n            MyConfig.VideoMode = configVideoMode;\n            MyConfig.FullScreen = configFullscreen;\n            MyConfig.VerticalSync = configVerticalSync;\n            MyConfig.HardwareCursor = configHardwareCursor;\n            MyConfig.RenderQuality = configRenderQuality;\n            MyConfig.FieldOfView = configFieldOfView;\n            MyConfig.Save();\n\n            //  Finally change/init the video mode\n            BeginChangeVideoMode(true, configVideoAdapter, configVideoMode, configFullscreen, configVerticalSync, configHardwareCursor, configRenderQuality, configFieldOfView, true, null);\n            ApplyChanges();\n\n            MyMwcLog.WriteLine(\"MyVideoModeManager.InitFromConfig END\");\n        }\n\n        /// <summary>\n        /// Apply video manager changes should be called from render, because it is all render operations.\n        /// </summary>\n        public static void ApplyChanges()\n        {\n            while (m_changeOperations.Count > 0)\n            {\n                var operation = m_changeOperations.Dequeue();\n\n                operation.Process();\n            }\n        }\n\n        public static bool IsThereAnyChangeToApply\n        {\n            get { return m_changeOperations != null && m_changeOperations.Count > 0; }\n        }\n\n        /// <summary>\n        /// Begins the change video mode.\n        /// </summary>\n        /// <param name=\"callApplyChanges\">if set to <c>true</c> [call apply changes].</param>\n        /// <param name=\"videoMode\">The video mode.</param>\n        /// <param name=\"fullScreen\">if set to <c>true</c> [full screen].</param>\n        /// <param name=\"verticalSync\">if set to <c>true</c> [vertical sync].</param>\n        /// <param name=\"hardwareCursor\">if set to <c>true</c> [hardware cursor].</param>\n        /// <param name=\"renderQuality\">The render quality.</param>\n        /// <param name=\"fieldOfView\">The field of view.</param>\n        /// <param name=\"requestCallback\">The request callback.</param>\n        /// <param name=\"state\">The state.</param>\n        /// <returns></returns>\n        public static void BeginChangeVideoMode(bool callApplyChanges, int videoAdapter, MyVideoModeEx videoMode, bool fullScreen, bool verticalSync, bool hardwareCursor, MyRenderQualityEnum renderQuality, float fieldOfView, bool first, Action<MyVideoModeChangeOperation> requestCallback)\n        {\n            var result = new MyVideoModeChangeOperation(callApplyChanges, fullScreen, verticalSync, hardwareCursor, fieldOfView,\n                                                        videoAdapter, videoMode, renderQuality, first, requestCallback);\n\n            m_changeOperations.Enqueue(result);\n        }\n\n        /// <summary>\n        /// Ends the change video mode.\n        /// </summary>\n        /// <param name=\"result\">The result.</param>\n        /// <returns></returns>\n        public static bool EndChangeVideoMode(MyVideoModeChangeOperation changeModeOperation)\n        {\n            Exceptions.ThrowIf<ArgumentException>(changeModeOperation == null, \"Result of uknown type.\");\n\n            return changeModeOperation.Changed;\n        }\n\n        public static bool HasAnythingChanged(MyVideoModeChangeOperation changeModeOperation)\n        {\n            return changeModeOperation.SomethingChanged;\n        }\n\n        public static void UpdateScreenSize()\n        {\n\n            MyMwcLog.WriteLine(\"MyVideoModeManager.UpdateScreenSize - START\");\n            MyMwcLog.IncreaseIndent();\n\n            //  Update or reload everything that depends on screen resolution\n            MyMinerGame.UpdateScreenSize();\n            MyGuiManager.UpdateScreenSize();\n            MyGuiManager.RecreateMainMenuControls();\n           \n            \n            MyCamera.UpdateScreenSize();\n            MyHud.UpdateScreenSize();\n            MySunGlare.UpdateScreenSize();\n\n            if (MyGuiScreenGamePlay.Static != null) \n                MyGuiScreenGamePlay.Static.UpdateScreenSize();\n            \n            CenterizeWindowPosition();\n\n               /*\n            MyRender.CreateRenderTargets();\n            MyRender.CreateEnvironmentMapsRT(MyRenderConstants.ENVIRONMENT_MAP_SIZE);\n                 */\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyVideoModeManager.UpdateScreenSize - END\");\n        }\n\n        private static void CenterizeWindowPosition()\n        {\n            var screenResolution = System.Windows.Forms.SystemInformation.PrimaryMonitorSize;\n            int windowWidth = MyMinerGame.GraphicsDeviceManager.PreferredBackBufferWidth;\n            int windowHeight = MyMinerGame.GraphicsDeviceManager.PreferredBackBufferHeight;\n\n            System.Windows.Forms.Control form = MyMinerGame.Static.Window.NativeWindow;\n            form.ClientSize = new System.Drawing.Size(windowWidth, windowHeight);\n            \n            form.Location = new System.Drawing.Point(screenResolution.Width / 2 - windowWidth / 2, screenResolution.Height / 2 - windowHeight / 2);\n            \n        }\n\n        public static bool IsSupportedDisplayMode(int width, int height, bool fullScreen)\n        {\n            return IsSupportedDisplayMode(m_videoAdapter, width, height, fullScreen);\n        }\n\n        public static bool IsSupportedDisplayMode(int videoAdapter, int width, int height, bool fullScreen)\n        {\n            MyMwcLog.WriteLine(\"MyVideoModeManager.IsSupportedDisplayMode - START\");\n            MyMwcLog.IncreaseIndent();\n\n            MyMwcLog.WriteLine(\"Width: \" + width);\n            MyMwcLog.WriteLine(\"Height: \" + height);\n            MyMwcLog.WriteLine(\"FullScreen: \" + fullScreen);\n\n            bool ret = false;\n\n            if (fullScreen == true)\n            {\n                foreach (SharpDX.Direct3D9.DisplayMode dm in GraphicsAdapter.Adapters[videoAdapter].SupportedDisplayModes)\n                {\n                    \n                    if ((dm.Width == width) && (dm.Height == height))\n                    {\n                        ret = true;\n                        MyMwcLog.WriteLine(\"Supported display mode: \" + dm.Width + \" x \" + dm.Height + \" Fullscreen\");\n                        //  Don't \"break\" here, continue in this loop, so we can list ALL supported resolutions\n                    }\n                }\n            }\n            else\n            {\n                ret = true;\n\n                //  We want to allow window of any size in desktop mode (otherwise there's no way how to create extreme-size screenshots)\n                /*if ((width <= m_originalWindowsDesktopWidth) && (height <= m_originalWindowsDesktopHeight))\n                {\n                    ret = true;\n                }*/\n            }\n\n            if ((width > MyMinerGame.GraphicsDeviceManager.MaxTextureSize) || (height > MyMinerGame.GraphicsDeviceManager.MaxTextureSize))\n            {\n                MyMwcLog.WriteLine(\"VideoMode \" + width.ToString() + \" x \" + height.ToString() + \" requires texture size which is not supported by this HW (this HW supports max \" + MyMinerGame.GraphicsDeviceManager.MaxTextureSize.ToString() + \")\");\n                ret = false;\n                /*\n                foreach (DisplayMode dm in GraphicsAdapter.DefaultAdapter.SupportedDisplayModes)\n                {\n                        ret = true;\n                        MyMwcLog.WriteLine(\"Supported display mode: \" + dm.Width + \" x \" + dm.Height + \" Fullscreen\");\n                        //  Don't \"break\" here, continue in this loop, so we can list ALL supported resolutions\n\n                } */\n            }\n\n\n\n            MyMwcLog.WriteLine(\"Ret: \" + ret);\n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyVideoModeManager.IsSupportedDisplayMode - END\");\n\n            return ret;\n        }\n\n        //  Used to set desired antialiasing type. Doesn't check if type is available. We assume that\n        //  m_antiAliasingType contains only valid types. And they are if ther were obtained from GetAvailableAntiAliasingTypes()\n        static void GraphicsDeviceManager_PreparingDeviceSettings(object sender, PreparingDeviceSettingsEventArgs e)\n        {\n            MyMwcLog.WriteLine(\"MyVideoModeManager.GraphicsPreparingDeviceSettings - START\");\n            MyMwcLog.IncreaseIndent();\n\n            //  This is for enabling profiling in NVIDIA PerfHUD. It's compiled only for developer build. We don't want it in release build.\n            if (MyMwcFinalBuildConstants.ENABLE_PERFHUD == true)\n            {      /*\n                foreach (GraphicsAdapter adapter in GraphicsAdapter.Adapters)\n                {\n                    MyMwcLog.WriteLine(adapter.Description.Description);\n                    if (adapter.Description.Description.Contains(\"PerfHUD\"))\n                    {\n                        e.GraphicsDeviceInformation.Adapter = adapter;\n                        //GraphicsAdapter.UseReferenceDevice = true;\n                        break;\n                    }\n                }    */\n            }\n                                /*\n            MyMwcLog.WriteLine(\"GraphicsDeviceInformation.PresentationParameters.MultiSampleCount: \" + e.GraphicsDeviceInformation.PresentationParameters.MultiSampleCount);\n            MyMwcLog.WriteLine(\"GraphicsDeviceInformation.PresentationParameters.PresentationInterval: \" + e.GraphicsDeviceInformation.PresentationParameters.PresentationInterval);\n            //MyMwcLog.WriteLine(\"GraphicsDeviceInformation.PresentationParameters.DisplayOrientation: \" + e.GraphicsDeviceInformation.PresentationParameters.DisplayOrientation);\n            MyMwcLog.WriteLine(\"GraphicsDeviceInformation.PresentationParameters.RenderTargetUsage: \" + e.GraphicsDeviceInformation.PresentationParameters.RenderTargetUsage);\n            MyMwcLog.WriteLine(\"GraphicsDeviceInformation.PresentationParameters.DepthStencilFormat: \" + e.GraphicsDeviceInformation.PresentationParameters.DepthStencilFormat);\n            MyMwcLog.WriteLine(\"GraphicsDeviceInformation.PresentationParameters.IsFullScreen: \" + e.GraphicsDeviceInformation.PresentationParameters.IsFullScreen);\n            MyMwcLog.WriteLine(\"GraphicsDeviceInformation.PresentationParameters.BackBufferWidth: \" + e.GraphicsDeviceInformation.PresentationParameters.BackBufferWidth);\n            MyMwcLog.WriteLine(\"GraphicsDeviceInformation.PresentationParameters.BackBufferHeight: \" + e.GraphicsDeviceInformation.PresentationParameters.BackBufferHeight);\n            MyMwcLog.WriteLine(\"GraphicsDeviceInformation.PresentationParameters.BackBufferFormat: \" + e.GraphicsDeviceInformation.PresentationParameters.BackBufferFormat);\n            //MyMwcLog.WriteLine(\"GraphicsDeviceInformation.PresentationParameters.Bounds: \" + e.GraphicsDeviceInformation.PresentationParameters.b.Bounds);\n            MyMwcLog.WriteLine(\"GraphicsDeviceInformation.PresentationParameters.RenderTargetUsage: \" + e.GraphicsDeviceInformation.PresentationParameters.RenderTargetUsage);\n                              */\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyVideoModeManager.GraphicsPreparingDeviceSettings - END\");\n        }\n\n        public static void HookEventHandlers()\n        {\n            //  Used for setting antialiasing\n            //MyMinerGame.GraphicsDeviceManager.PreparingDeviceSettings += GraphicsDeviceManager_PreparingDeviceSettings;\n        }\n\n        public static void LogInformation()\n        {\n            MyMwcLog.WriteLine(\"MyVideoModeManager.LogInformation - START\");\n            MyMwcLog.IncreaseIndent();\n\n            try\n            {\n              //  MyMwcLog.WriteLine(\"MyMinerGame.Static.Content.RootDirectory: \" + MyMinerGameDX.Static.Content.RootDirectory);\n            }\n            catch (Exception e)\n            {\n                MyMwcLog.WriteLine(\"Error occured during this method. Application will still continue. Detail description: \" + e.ToString());\n            }\n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyVideoModeManager.LogInformation - END\");        \n        }\n\n        public static void LogEnvironmentInformation()\n        {\n            MyMwcLog.WriteLine(\"MyVideoModeManager.LogEnvironmentInformation - START\");\n            MyMwcLog.IncreaseIndent();\n\n            try\n            {\n                \n                ManagementObjectSearcher mos =\n  new ManagementObjectSearcher(\"root\\\\CIMV2\", \"SELECT * FROM Win32_Processor\");\n                if (mos != null)\n                {\n                    foreach (ManagementObject mo in mos.Get())\n                    {\n                        MyMwcLog.WriteLine(\"Environment.ProcessorName: \" + mo[\"Name\"]);\n                    }\n                }\n\n                MyMwcLog.WriteLine(\"Environment.ProcessorCount: \" + Environment.ProcessorCount);\n                MyMwcLog.WriteLine(\"Environment.OSVersion: \" + Environment.OSVersion);\n                MyMwcLog.WriteLine(\"Environment.Is64BitOperatingSystem: \" + Environment.Is64BitOperatingSystem);\n                MyMwcLog.WriteLine(\"Environment.CommandLine: \" + Environment.CommandLine);\n                MyMwcLog.WriteLine(\"Environment.CurrentDirectory: \" + Environment.CurrentDirectory);\n                MyMwcLog.WriteLine(\"Environment.Version: \" + Environment.Version);\n                MyMwcLog.WriteLine(\"Environment.WorkingSet: \" + MyValueFormatter.GetFormatedLong(Environment.WorkingSet) + \" bytes\");\n\n                //  Get info about memory\n                var memory = new MEMORYSTATUSEX();\n                GlobalMemoryStatusEx(memory);\n\n                MyMwcLog.WriteLine(\"ComputerInfo.TotalPhysicalMemory: \" + MyValueFormatter.GetFormatedLong((long)memory.ullTotalPhys) + \" bytes\");\n                MyMwcLog.WriteLine(\"ComputerInfo.TotalVirtualMemory: \" + MyValueFormatter.GetFormatedLong((long)memory.ullTotalVirtual) + \" bytes\");\n                MyMwcLog.WriteLine(\"ComputerInfo.AvailablePhysicalMemory: \" + MyValueFormatter.GetFormatedLong((long)memory.ullAvailPhys) + \" bytes\");\n                MyMwcLog.WriteLine(\"ComputerInfo.AvailableVirtualMemory: \" + MyValueFormatter.GetFormatedLong((long)memory.ullAvailVirtual) + \" bytes\");\n\n                //  Get info about hard drives\n                ConnectionOptions oConn = new ConnectionOptions();\n                ManagementScope oMs = new ManagementScope(\"\\\\\\\\localhost\", oConn);\n                ObjectQuery oQuery = new ObjectQuery(\"select FreeSpace,Size,Name from Win32_LogicalDisk where DriveType=3\");\n                using (ManagementObjectSearcher oSearcher = new ManagementObjectSearcher(oMs, oQuery))\n                {\n                    ManagementObjectCollection oReturnCollection = oSearcher.Get();\n                    foreach (ManagementObject oReturn in oReturnCollection)\n                    {\n                        string capacity = MyValueFormatter.GetFormatedLong(Convert.ToInt64(oReturn[\"Size\"]));\n                        string freeSpace = MyValueFormatter.GetFormatedLong(Convert.ToInt64(oReturn[\"FreeSpace\"]));\n                        string name = oReturn[\"Name\"].ToString();\n                        MyMwcLog.WriteLine(\"Drive \" + name + \" | Capacity: \" + capacity + \" bytes | Free space: \" + freeSpace + \" bytes\");\n                    }\n                    oReturnCollection.Dispose();\n                }\n            }\n            catch (Exception e)\n            {\n                MyMwcLog.WriteLine(\"Error occured during enumerating environment information. Application is continuing. Exception: \" + e.ToString());\n            }\n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyVideoModeManager.LogEnvironmentInformation - END\");\n        }\n\n        public static void LogApplicationInformation()\n        {\n            MyMwcLog.WriteLine(\"MyVideoModeManager.LogApplicationInformation - START\");\n            MyMwcLog.IncreaseIndent();\n\n            try\n            {\n                Assembly assembly = Assembly.GetExecutingAssembly();\n                MyMwcLog.WriteLine(\"Assembly.GetName: \" + assembly.GetName().ToString());\n                MyMwcLog.WriteLine(\"Assembly.FullName: \" + assembly.FullName);\n                MyMwcLog.WriteLine(\"Assembly.Location: \" + assembly.Location);\n                MyMwcLog.WriteLine(\"Assembly.ImageRuntimeVersion: \" + assembly.ImageRuntimeVersion);\n            }\n            catch (Exception e)\n            {\n                MyMwcLog.WriteLine(\"Error occured during enumerating application information. Application will still continue. Detail description: \" + e.ToString());\n            }\n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyVideoModeManager.LogApplicationInformation - END\");\n        }\n     \n        public static bool IsTripleHead()\n        {\n            return m_videoMode != null && m_videoMode.IsTripleHead;\n        }\n\n        public static bool IsHardwareCursorUsed()\n        {\n            // Never use hardware cursor in the exteral editor\n            if (MinerWars.AppCode.ExternalEditor.MyEditorBase.Static != null) return false;\n\n            return m_hardwareCursor;\n        }\n\n        static void GraphicsDevice_DeviceCreated(object sender, EventArgs e)\n        {\n            MyMwcLog.WriteLine(\"MyVideoModeManager.GraphicsDevice_DeviceCreated - START\");\n            MyMwcLog.IncreaseIndent();\n\n            //MyMinerGameDX.GraphicsDeviceManager.GraphicsDevice.DeviceLost += new EventHandler<EventArgs>(GraphicsDevice_DeviceLost);\n\n            GraphicsDevice_DeviceReset(sender, e);\n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyVideoModeManager.GraphicsDevice_DeviceCreated - END\");\n        }\n\n        static void GraphicsDevice_DeviceLost(object sender, EventArgs e)\n        {\n            MyMwcLog.WriteLine(\"MyVideoModeManager.GraphicsDevice_DeviceLost - START\");\n            MyMwcLog.IncreaseIndent();\n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyVideoModeManager.GraphicsDevice_DeviceLost - END\");\n        }\n\n        static void GraphicsDevice_DeviceReset(object sender, EventArgs e)\n        {\n            MyMwcLog.WriteLine(\"MyVideoModeManager.GraphicsDevice_DeviceReset - START\");\n            MyMwcLog.IncreaseIndent();\n\n            MyMinerGame.IsDeviceResetted = true;\n\n            //Solves bad screen size when changed minimized-maximized state of game window\n           // MyVideoModeManager.UpdateScreenSize();\n\n            //MyTextureManager.ReloadTextures(false);\n            //MyGuiManager.UpdateAfterDeviceReset();\n\n            MyMinerGame.ResetSleep = 10;\n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyVideoModeManager.GraphicsDevice_DeviceReset - END\");\n        }\n\n\n        public static void UpdateAfterDeviceReset()\n        {\n            MyMwcLog.WriteLine(\"MyVideoModeManager.UpdateAfterDeviceReset - START\");\n            MyMwcLog.IncreaseIndent();\n\n            //Solves bad screen size when changed minimized-maximized state of game window\n            //MyVideoModeManager.UpdateScreenSize();\n\n            for (int i = 0; i < 4; i++)\n            {\n                // Reset vertex textures and vertex textures sampler states\n                //MyMinerGameDX.Static.GraphicsDevice.VertexTextures[i] = null;\n                //MyMinerGameDX.Static.GraphicsDevice.VertexSamplerStates[i] = SamplerState.PointClamp;\n            }\n\n            //Because we use unmanaged resources here \n            //MyTextureManager.ReloadTextures(false);\n            /*\n            MyOcclusionQuery.ReloadOcclusionQueries(MyMinerGame.GraphicsDeviceManager.GraphicsDevice);\n            if (MyGuiManager.GetFullscreenQuad() != null)\n            {\n                MyGuiManager.GetFullscreenQuad().CreateFullScreenQuad(MyMinerGame.GraphicsDeviceManager.GraphicsDevice);\n            } */\n\n            //MyGuiManager.UpdateAfterDeviceReset();\n\n            //MyMinerGame.IsDeviceResetted = false;\n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyVideoModeManager.UpdateAfterDeviceReset - END\");\n        }\n\n\n        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]\n        private class MEMORYSTATUSEX\n        {\n            public uint dwLength;\n            public uint dwMemoryLoad;\n            public ulong ullTotalPhys;\n            public ulong ullAvailPhys;\n            public ulong ullTotalPageFile;\n            public ulong ullAvailPageFile;\n            public ulong ullTotalVirtual;\n            public ulong ullAvailVirtual;\n            public ulong ullAvailExtendedVirtual;\n            public MEMORYSTATUSEX()\n            {\n                this.dwLength = (uint)Marshal.SizeOf(typeof(MEMORYSTATUSEX));\n            }\n        }\n\n\n        [return: MarshalAs(UnmanagedType.Bool)]\n        [DllImport(\"kernel32.dll\", CharSet = CharSet.Auto, SetLastError = true)]\n        static extern bool GlobalMemoryStatusEx([In, Out] MEMORYSTATUSEX lpBuffer);\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/VideoMode/MyVideoModeStructs.cs",
    "content": "﻿namespace MinerWars.AppCode.Game.VideoMode\n{\n    using System;\n\n    class MyVideoModeEx : IEquatable<MyVideoModeEx>\n    {\n        public int Width;\n        public int Height;\n        public float AspectRatio;\n        public MyAspectRatioEnum AspectRatioEnum;\n        public bool IsTripleHead;\n        public bool IsRecommended;\n\n        public MyVideoModeEx(int width, int height, float trueAspectRatio)\n        {\n            Width = width;\n            Height = height;\n            AspectRatioEnum = MyAspectRatioExList.GetClosestAspectRatio(trueAspectRatio);\n            IsTripleHead = MyAspectRatioExList.Get(AspectRatioEnum).IsTripleHead;// MyAspectRatioExList.IsTripleHeadAspectRatio(AspectRatioEnum);\n            AspectRatio = MyAspectRatioExList.Get(AspectRatioEnum).AspectRatioNumber; //  aspect ratio needs to be adjusted to be one of the system defined\n        }\n\n        public bool Equals(MyVideoModeEx other)\n        {\n            if (ReferenceEquals(null, other)) return false;\n            if (ReferenceEquals(this, other)) return true;\n            return other.Width == Width && other.Height == Height && other.AspectRatio.Equals(AspectRatio) && other.IsTripleHead.Equals(IsTripleHead) && Equals(other.AspectRatioEnum, AspectRatioEnum);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Voxels/MyDataCellStitcher.cs",
    "content": "﻿using System.Collections.Generic;\nusing System.Diagnostics;\nusing MinerWars.AppCode.Game.Utils;\n\nnamespace MinerWars.AppCode.Game.Voxels\n{\n    static class MyDataCellStitcher\n    {\n        public static List<MyVoxelTriangle> Triangles = new List<MyVoxelTriangle>();\n        public static List<MyVoxelVertex> Vertices = new List<MyVoxelVertex>();\n\n        private static readonly Dictionary<MyVoxelVertex, short> m_verticesMap = new Dictionary<MyVoxelVertex, short>();\n\n        private static readonly List<short> m_remapHelper = new List<short>();\n\n        public static void StitchDataCells(List<MyVoxelCacheCellData> dataCells)\n        {\n            Vertices.Clear();\n            Triangles.Clear();\n            m_verticesMap.Clear();\n\n            //int vertexCount = 0;\n            //foreach (MyVoxelCacheCellData dataCell in dataCells)\n            //{\n            //    m_remapHelper.Clear();\n\n            //    for (int vertexIndex = 0; vertexIndex < dataCell.VoxelVerticesCount; vertexIndex++)\n            //    {\n            //        var vertex = dataCell.VoxelVertexes[vertexIndex];\n            //        Vertices.Add(vertex);\n            //    }\n\n            //    for (int triangleIndex = 0; triangleIndex < dataCell.VoxelTrianglesCount; triangleIndex++)\n            //    {\n            //        var triangle = dataCell.VoxelTriangles[triangleIndex];\n            //        MyVoxelTriangle32 newTriangle = new MyVoxelTriangle32();\n            //        for (int i = 0; i < 3; i++)\n            //        {\n            //            var index = triangle[i];\n            //            newTriangle[i] = index + vertexCount;\n            //        }\n            //        Triangles.Add(newTriangle);\n            //    }\n\n            //    vertexCount = Vertices.Count;\n            //}\n\n            for (int dataCellIndex = 0; dataCellIndex < dataCells.Count; dataCellIndex++)\n            {\n                m_remapHelper.Clear();\n                var dataCell = dataCells[dataCellIndex];\n\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Stitch Data Cells - first cycle\");\n\n                for (int vertexIndex = 0; vertexIndex < dataCell.VoxelVerticesCount; vertexIndex++)\n                {\n                    var vertex = dataCell.VoxelVertices[vertexIndex];\n                    short index;\n                    if (m_verticesMap.TryGetValue(vertex, out index))\n                    {\n                        m_remapHelper.Add(index);\n                    }\n                    else\n                    {\n                        Debug.Assert(Vertices.Count < short.MaxValue);\n                        m_verticesMap.Add(vertex, (short) Vertices.Count);\n                        m_remapHelper.Add((short) Vertices.Count);\n                        Vertices.Add(vertex);\n                    }\n                }\n\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"Stitch Data Cells - second cycle\");\n                for (int triangleIndex = 0; triangleIndex < dataCell.VoxelTrianglesCount; triangleIndex++)\n                {\n                    var triangle = dataCell.VoxelTriangles[triangleIndex];\n                    MyVoxelTriangle newTriangle = new MyVoxelTriangle();\n                    for (int i = 0; i < 3; i++)\n                    {\n                        var index = triangle[i];\n                        newTriangle[i] = m_remapHelper[index];\n                    }\n                    Triangles.Add(newTriangle);\n                }\n\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n            }\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Voxels/MyLocalVoxelTrianglesCache.cs",
    "content": "﻿using System;\nusing System.Diagnostics;\nusing System.Globalization;\nusing System.IO;\nusing System.Net;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Voxels;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils;\nusing SysUtils.Utils;\n\nnamespace MinerWars.AppCode.Game.Voxels\n{\n    /// <summary>\n    /// Handles local saving and loading voxel triangle cache to disk.\n    /// When any changes are made to the cache file format, increase the version in MyMwcFinalBuildConstants.VOXEL_CACHE_FILE_VERSION\n    /// </summary>\n    static class MyLocalVoxelTrianglesCache\n    {\n        public static void SaveAllVoxels()\n        {\n            foreach (var voxelMap in MyVoxelMaps.GetVoxelMaps())\n            {\n                SaveVoxel(voxelMap);\n            }\n        }\n\n        static void SaveVoxel(MyVoxelMap voxelMap)\n        {\n            Debug.Assert(voxelMap.EntityId != null);\n\n            using (var voxelStream = new FileStream(GetVoxelPath(voxelMap), FileMode.Create))\n            using (var voxelWriter = new BinaryWriter(voxelStream))\n            {\n                voxelWriter.Write(MyMwcFinalBuildConstants.VOXEL_CACHE_FILE_VERSION);\n\n                MyMwcVector3Int cellCoord;\n                for (cellCoord.X = 0; cellCoord.X < voxelMap.DataCellsCount.X; cellCoord.X++)\n                {\n                    for (cellCoord.Y = 0; cellCoord.Y < voxelMap.DataCellsCount.Y; cellCoord.Y++)\n                    {\n                        for (cellCoord.Z = 0; cellCoord.Z < voxelMap.DataCellsCount.Z; cellCoord.Z++)\n                        {\n                            var dataCell = MyVoxelCacheData.GetCell(voxelMap, ref cellCoord, false);\n                            if (dataCell != null/* && dataCell.VoxelTrianglesCount > 0*/)\n                            {\n                                voxelWriter.Write(cellCoord.X);\n                                voxelWriter.Write(cellCoord.Y);\n                                voxelWriter.Write(cellCoord.Z);\n\n                                dataCell.Write(voxelWriter);\n\n                                //Log(\"update\", sectorIdentifier, checkpointName, sector.Version);\n                            }\n                        }\n                    }\n                }\n            }\n        }\n\n        static string GetVoxelPath(MyVoxelMap voxelMap)\n        {\n            var sectorIdentifier = MyGuiScreenGamePlay.Static.GetSectorIdentifier();\n            int sectorVersion = MyGuiScreenGamePlay.Static.SectorVersion;\n\n            string path = MyLocalCache.CachePath;\n            if (sectorIdentifier.UserId != null) // TODO change?\n            {\n                path = MyLocalCache.CurrentSavePath;\n            }\n\n            if (!Directory.Exists(path))\n            {\n                Directory.CreateDirectory(path);\n            }\n\n            return Path.Combine(path, GetVoxelName(voxelMap, sectorIdentifier, sectorVersion) + \".mwv\");\n        }\n\n        static string GetVoxelName(MyVoxelMap voxelMap, MyMwcSectorIdentifier sectorIdentifier, int sectorVersion)\n        {\n            string name;\n            switch (sectorIdentifier.SectorType)\n            {\n                case MyMwcSectorTypeEnum.STORY:\n                    name = \"STORY\";\n                    break;\n\n                case MyMwcSectorTypeEnum.SANDBOX:\n                    name = \"SANDBOX\";\n                    break;\n\n                default:\n                    throw new MyMwcExceptionApplicationShouldNotGetHere();\n            }\n\n            string userId = sectorIdentifier.UserId.HasValue ? sectorIdentifier.UserId.Value.ToString(CultureInfo.InvariantCulture) : \"NULL\";\n\n            Debug.Assert(voxelMap.EntityId != null, \"voxelMap.EntityId != null\");\n            return String.Format(\"{0}_{1}_{2}_{3}_{4}_{5}_{6}_{7}\", name, userId, sectorIdentifier.Position.X, sectorIdentifier.Position.Y, sectorIdentifier.Position.Z, sectorVersion, voxelMap.VoxelMapId, voxelMap.EntityId.Value.NumericValue);\n        }\n\n        public static bool LoadAllVoxels()\n        {\n            bool foundAll = true;\n            foreach (var voxelMap in MyVoxelMaps.GetVoxelMaps())\n            {\n                var foundVoxelMap = LoadVoxel(voxelMap);\n\n                foundAll &= foundVoxelMap;\n            }\n            return foundAll;\n        }\n\n        static bool LoadVoxel(MyVoxelMap voxelMap)\n        {\n            var voxelFile = GetVoxelPath(voxelMap);\n\n            if (File.Exists(voxelFile))\n            {\n                using (FileStream voxelStream = new FileStream(voxelFile, FileMode.Open))\n                using (BinaryReader voxelReader = new BinaryReader(voxelStream))\n                {\n                    var fileVersion = voxelReader.ReadInt32();\n                    \n                    if (fileVersion != MyMwcFinalBuildConstants.VOXEL_CACHE_FILE_VERSION)\n                    {\n                        //Log(\"outdated file\", sector, checkpointName, result.Version);\n                        File.Delete(voxelFile);\n                        return false;\n                    }\n\n                    while (voxelStream.Length != voxelStream.Position)\n                    {\n                        MyMwcVector3Int cellCoord;\n                        cellCoord.X = voxelReader.ReadInt32();\n                        cellCoord.Y = voxelReader.ReadInt32();\n                        cellCoord.Z = voxelReader.ReadInt32();\n                        \n                        var dataCell = MyVoxelCacheData.AddCell(voxelMap.VoxelMapId, ref cellCoord);\n\n                        var fakeEndpoint = new IPEndPoint(0, 0);\n                        //MyMwcMessageIn.ReadObjectBuilderTypeEnumEx(voxelReader, fakeEndpoint);\n                        var readSuccessfully = dataCell.Read(voxelReader, fakeEndpoint);\n\n                        if (!readSuccessfully)\n                        {\n                            MyVoxelCacheData.RemoveCell(voxelMap.VoxelMapId, ref cellCoord);\n                            File.Delete(voxelFile);\n                            //Log(\"corrupted file\", sector, checkpointName, result.Version);\n                            return false;\n                        }\n\n                        //= MyMwcObjectBuilder_Base.FromBytes<MyMwcObjectBuilder_VoxelDataCell>(voxelReader.ReadBytes((int)sectorStream.Length));\n\n                        //Log(\"update\", sectorIdentifier, checkpointName, sector.Version);\n                    }\n                    //result = MyMwcObjectBuilder_Base.FromBytes<MyMwcObjectBuilder_Sector>(sectorReader.ReadBytes((int)sectorStream.Length));\n                }\n                //Log(\"hit\", sector, checkpointName, result.Version);\n            }\n            else\n            {\n                //Log(\"miss\", sector, checkpointName);\n                return false;\n            }\n\n            return true;\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Voxels/MyMeshSimplifier.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.Utils;\n\nnamespace MinerWars.AppCode.Game.Voxels\n{\n    class MyMeshSimplifier\n    {\n        private static MyMeshSimplifier m_instance;\n\n        /// <summary>\n        /// Lazy-loaded singleton.\n        /// </summary>\n        public static MyMeshSimplifier Instance\n        {\n            get\n            {\n                if (m_instance == null)\n                {\n                    m_instance = new MyMeshSimplifier();\n                }\n\n                return m_instance;\n            }\n        }\n\n        private const int TRIANGLE_EDGE_COUNT = 3;\n\n        readonly List<List<int>> m_adjacentTriangleIndices = new List<List<int>>();\n\n        /// <summary>\n        /// A flag array indicating which triangles have been removed from the mesh.\n        /// </summary>\n        readonly HashSet<int> m_removedTriangles = new HashSet<int>();\n\n        readonly List<bool> m_usedVertices = new List<bool>();\n\n        readonly HashSet<short> m_helperHashSet = new HashSet<short>();\n\n        private List<MyVoxelTriangle> m_triangles;\n        private List<MyVoxelVertex> m_vertices;\n\n        static float m_minEdgeLength = 15f;\n        public static int VoxelRecalcTime;\n\n        public static float MinEdgeLength\n        {\n            get { return m_minEdgeLength; }\n            set\n            {\n                Stopwatch stopwatch = Stopwatch.StartNew();\n\n                m_minEdgeLength = value;\n                var voxelMap = MyVoxelMaps.GetLargestVoxelMap();\n                if (voxelMap != null)\n                {\n                    voxelMap.InvalidateCache(new MyMwcVector3Int(0, 0, 0), voxelMap.Size);\n                    voxelMap.PrepareRenderCellCache();\n                }\n\n                stopwatch.Stop();\n                VoxelRecalcTime = (int) stopwatch.Elapsed.TotalMilliseconds;\n            }\n        }\n\n        public void SimplifyMesh(List<MyVoxelVertex> vertices, List<MyVoxelTriangle> triangles)\n        {\n            m_triangles = triangles;\n            m_vertices = vertices;\n\n            Debug.Assert(m_vertices.Count < short.MaxValue, \"voxel map vertex has index > 16bit = 32767\");\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Initialize\");\n            Initialize();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"ComputeAdjacencies\");\n            ComputeAdjacencies();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"RemoveShortEdges\");\n            RemoveShortEdges(m_minEdgeLength);\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"SkipDeletedVertices\");\n            SkipDeletedVertices();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"AddNonRemovedTriangles\");\n            AddNonRemovedTriangles(triangles);\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        private void AddNonRemovedTriangles(List<MyVoxelTriangle> triangles)\n        {\n            var trianglesCount = m_triangles.Count - m_removedTriangles.Count;\n            int trianglesAdded = 0;\n            for (int i = 0; i < m_triangles.Count; i++)\n            {\n                if (m_removedTriangles.Contains(i))\n                    continue;\n\n                triangles[trianglesAdded++] = m_triangles[i];\n            }\n\n            //for (int i = 0; i < m_triangles.Count + m_removedTriangles.Count; i++)\n            //{\n            //    m_removedTriangles.Remove(i);\n            //}\n\n            triangles.RemoveRange(trianglesCount, m_removedTriangles.Count);\n        }\n\n        private void Initialize()\n        {\n            m_removedTriangles.Clear();\n        }\n\n        /// <summary>\n        /// Shuffles the m_vertices array so that it does not contain 'holes' - indices of removed vertices.\n        /// </summary>\n        private void SkipDeletedVertices()\n        {\n            for (int i = 0; i < m_usedVertices.Count; i++)\n            {\n                m_usedVertices[i] = false;\n            }\n\n            for (int i = m_usedVertices.Count; i < m_vertices.Count; i++)\n            {\n                m_usedVertices.Add(false);\n            }\n\n            for (int triangleIndex = 0; triangleIndex < m_triangles.Count; triangleIndex++)\n            {\n                if (!m_removedTriangles.Contains(triangleIndex))\n                {\n                    var triangle = m_triangles[triangleIndex];\n                    for (int i = 0; i < TRIANGLE_EDGE_COUNT; i++)\n                    {\n                        m_usedVertices[triangle[i]] = true;\n                    }\n                }\n            }\n\n            for (short i = 0; i < m_vertices.Count; i++)\n            {\n                if (!m_usedVertices[i])\n                {\n                    RemoveVertex(i);\n                }\n                m_usedVertices[i] = false;\n            }\n        }\n\n        private void RemoveVertex(short index)\n        {\n            Debug.Assert(index >= 0 && index < m_vertices.Count);\n\n            short replacementIndex = (short) m_vertices.Count;\n            replacementIndex--;\n\n            if (m_usedVertices[replacementIndex])\n            {\n                foreach (var triangleIndex in m_adjacentTriangleIndices[replacementIndex])\n                {\n                    ReplaceVertexIndex(triangleIndex, replacementIndex, index);\n                }\n            }\n\n            m_vertices[index] = m_vertices[replacementIndex];\n            m_vertices.RemoveAt(m_vertices.Count - 1);\n        }\n\n        /// <summary>\n        /// Updates a triangle's reference to a vertex to a new one (reference = index).\n        /// </summary>\n        private void ReplaceVertexIndex(int triangleIndex, short oldIndex, short newIndex)\n        {\n            var triangle = m_triangles[triangleIndex];\n\n            if (triangle.VertexIndex0 == oldIndex)\n                triangle.VertexIndex0 = newIndex;\n\n            if (triangle.VertexIndex1 == oldIndex)\n                triangle.VertexIndex1 = newIndex;\n\n            if (triangle.VertexIndex2 == oldIndex)\n                triangle.VertexIndex2 = newIndex;\n\n            m_triangles[triangleIndex] = triangle;\n        }\n\n        /// <summary>\n        /// Locks a vertex, so that in the mesh decimation phase, it cannot be moved or removed.\n        /// </summary>\n        //private void LockVertex(MyEdgeVertex edgeVertex)\n        //{\n        //    m_verticesLocked[edgeVertex.VertexIndex] = true;\n\n        //    // for visualization, give it blue color if it's locked\n        //    //m_vertices[edgeVertex.VertexIndex].Material = MyMwcVoxelMaterialsEnum.Treasure_01;\n        //}\n\n        /// <summary>\n        /// Decimates the mesh by removing edges whose length is shorter than <c>minEdgeLength</c>.\n        /// </summary>\n        private void RemoveShortEdges(float minEdgeLength)\n        {\n            float minEdgeLengthSquared = minEdgeLength * minEdgeLength;\n            for (int triangleIndex = 0; triangleIndex < m_triangles.Count; triangleIndex++)\n            {\n                if (m_removedTriangles.Contains(triangleIndex))\n                    continue;\n\n                var triangle = m_triangles[triangleIndex];\n\n                // iterate through triangle edges\n                for (int i = 0; i < TRIANGLE_EDGE_COUNT; i++)\n                {\n                    var firstVertexIndex = triangle[i];\n                    var secondVertexIndex = triangle[(i + 1) % TRIANGLE_EDGE_COUNT];\n                    if (!IsVertexLocked(firstVertexIndex))\n                    {\n                        bool collapsed = CollapseIfCloseEnough(minEdgeLengthSquared, secondVertexIndex, firstVertexIndex);\n                        if (collapsed)\n                            break;\n                    }\n                    else\n                    {\n                        if (!IsVertexLocked(secondVertexIndex))\n                        {\n                            bool collapsed = CollapseIfCloseEnough(minEdgeLengthSquared, firstVertexIndex, secondVertexIndex);\n                            if (collapsed)\n                                break;\n                        }\n                    }\n                }\n            }\n        }\n\n        bool IsVertexLocked(short firstVertexIndex)\n        {\n            //return m_vertices[firstVertexIndex].OnRenderCellEdge;\n            return false;\n        }\n\n        /// <summary>\n        /// Collapses the edge defined by the two vertices if it is shorter than minEdgeLength.\n        /// </summary>\n        private bool CollapseIfCloseEnough(float minEdgeLengthSquared, short keptVertexIndex, short removedVertexIndex)\n        {\n            var keptPosition = m_vertices[keptVertexIndex].Position;\n            var removedPosition = m_vertices[removedVertexIndex].Position;\n            float distanceSquared = (keptPosition - removedPosition).LengthSquared();\n            if (distanceSquared < minEdgeLengthSquared)\n            {\n                bool isRemovedEdgeintest = IsShortestInAdjacentPolygon(keptVertexIndex, removedVertexIndex, distanceSquared);\n                if (isRemovedEdgeintest)\n                {\n                    CollapseEdge(keptVertexIndex, removedVertexIndex);\n                }\n                return true;\n            }\n            return false;\n        }\n\n        /// <summary>\n        /// TODO rename this function - it not only checks, but also collapses the shortest if necessary\n        /// </summary>\n        private bool IsShortestInAdjacentPolygon(short keptVertexIndex, short removedVertexIndex, float edgeLengthSquared)\n        {\n            m_helperHashSet.Clear();\n            foreach (var triangleIndex in m_adjacentTriangleIndices[removedVertexIndex])\n            {\n                if (m_removedTriangles.Contains(triangleIndex))\n                {\n                    Debug.Fail(\"Did you forget to remove triangle?\");\n                }\n\n                for (int i = 0; i < TRIANGLE_EDGE_COUNT; i++)\n                {\n                    var neighborIndex = m_triangles[triangleIndex][i];\n                    if (neighborIndex != removedVertexIndex && neighborIndex != keptVertexIndex)\n                    {\n                        m_helperHashSet.Add(neighborIndex);\n                    }\n                }\n            }\n\n            float minDistanceSquared = edgeLengthSquared;\n            Edge minEdge;\n            minEdge.VertexIndex0 = keptVertexIndex;\n            minEdge.VertexIndex1 = removedVertexIndex;\n            foreach (var neighborVertexIndex in m_helperHashSet)\n            {\n                var neighbor = m_vertices[neighborVertexIndex];\n                float distanceSquared = Vector3.DistanceSquared(neighbor.Position, m_vertices[removedVertexIndex].Position);\n                if (distanceSquared < minDistanceSquared)\n                {\n                    minDistanceSquared = distanceSquared;\n                    minEdge.VertexIndex0 = neighborVertexIndex;\n                }\n            }\n\n            if (minDistanceSquared < edgeLengthSquared)\n            {\n                CollapseEdge(minEdge.VertexIndex0, minEdge.VertexIndex1);\n                return false;\n            }\n\n            return true;\n        }\n\n        /// <summary>\n        /// Determines if the coord is at the boundary of the current data cell.\n        /// </summary>\n        //private bool AtDataCellBoundary(MyMwcVector3Int coord)\n        //{\n        //    return coord.X <= 0 || coord.X >= m_polygCubesX - 2 ||\n        //           coord.Y <= 0 || coord.Y >= m_polygCubesY - 2 ||\n        //           coord.Z <= 0 || coord.Z >= m_polygCubesZ - 2;\n        //}\n\n        struct Edge\n        {\n            public short VertexIndex0;\n            public short VertexIndex1;\n        }\n\n        /// <summary>\n        /// Collapses an edge defined by its two endpoint vertices.\n        /// </summary>\n        /// <param name=\"keptVertexIndex\">The index of the vertex that will NOT be removed in the process.\n        /// However, it will be moved if it's not locked.</param>\n        /// <param name=\"removedVertexIndex\">The index of the vertex that WILL be removed in the process.</param>\n        private void CollapseEdge(short keptVertexIndex, short removedVertexIndex)\n        {\n            Debug.Assert(!IsVertexLocked(removedVertexIndex));\n\n            // if I can move the kept vertex, make its new position the average of the previous positions\n            bool interpolate = !IsVertexLocked(keptVertexIndex);\n\n            if (interpolate)\n            {\n                var keptVertex = m_vertices[keptVertexIndex];\n\n                keptVertex.Position = .5f *\n                    (keptVertex.Position + m_vertices[removedVertexIndex].Position);\n\n                keptVertex.Normal = MyMwcUtils.Normalize(\n                    (keptVertex.Normal + m_vertices[removedVertexIndex].Normal));\n\n                m_vertices[keptVertexIndex] = keptVertex;\n            }\n\n            var removedVertexTriangles = m_adjacentTriangleIndices[removedVertexIndex];\n            for (int i = removedVertexTriangles.Count - 1; i >= 0; i--)\n            {\n                var triangleIndex = removedVertexTriangles[i];\n                var triangle = m_triangles[triangleIndex];\n\n                if (triangle.VertexIndex0 == removedVertexIndex)\n                {\n                    triangle.VertexIndex0 = keptVertexIndex;\n                    Debug.Assert(keptVertexIndex < m_vertices.Count);\n                }\n                if (triangle.VertexIndex1 == removedVertexIndex)\n                {\n                    triangle.VertexIndex1 = keptVertexIndex;\n                    Debug.Assert(keptVertexIndex < m_vertices.Count);\n                }\n                if (triangle.VertexIndex2 == removedVertexIndex)\n                {\n                    triangle.VertexIndex2 = keptVertexIndex;\n                    Debug.Assert(keptVertexIndex < m_vertices.Count);\n                }\n\n                // todo find out why test for zero-surface does not work\n                if (IsDegenerated(triangle) /*|| HasZeroSurface(triangle)*/)\n                {\n                    // delete triangle\n                    RemoveTriangle(triangleIndex);\n                }\n                else\n                {\n                    // update triangle\n                    m_triangles[triangleIndex] = triangle;\n                    if (!m_adjacentTriangleIndices[keptVertexIndex].Contains(triangleIndex))\n                        m_adjacentTriangleIndices[keptVertexIndex].Add(triangleIndex);\n                }\n            }\n        }\n\n        /// <summary>\n        /// Returns true if the given triangle is defined by less than three distincs vertex indices.\n        /// </summary>\n        private bool IsDegenerated(MyVoxelTriangle triangle)\n        {\n            return triangle.VertexIndex0 == triangle.VertexIndex1 ||\n                   triangle.VertexIndex0 == triangle.VertexIndex2 ||\n                   triangle.VertexIndex1 == triangle.VertexIndex2;\n        }\n\n        /// <summary>\n        /// Returns true if triangle has very close to zero surface area.\n        /// </summary>\n        private bool HasZeroSurface(MyVoxelTriangle triangle)\n        {\n            var vertex0 = m_vertices[triangle.VertexIndex0];\n            var vertex1 = m_vertices[triangle.VertexIndex1];\n            var vertex2 = m_vertices[triangle.VertexIndex2];\n\n            var vector1 = vertex1.Position - vertex0.Position;\n            vector1.Normalize();\n            var vector2 = vertex2.Position - vertex0.Position;\n            vector2.Normalize();\n            var dot = Vector3.Dot(vector1, vector2);\n            if (Math.Abs(dot) > 0.9999)\n                return true;\n\n            return false;\n        }\n\n        /// <summary>\n        /// Remove a triangle by removing its adjacency information as well as \n        /// flagging it as deleted in the m_removedTriangles array.\n        /// </summary>\n        private void RemoveTriangle(int triangleIndex)\n        {\n            Debug.Assert(!m_removedTriangles.Contains(triangleIndex));\n\n            var triangle = m_triangles[triangleIndex];\n            RemoveAdjacency(triangle.VertexIndex0, triangleIndex);\n            RemoveAdjacency(triangle.VertexIndex1, triangleIndex);\n            RemoveAdjacency(triangle.VertexIndex2, triangleIndex);\n\n            m_removedTriangles.Add(triangleIndex);\n        }\n\n        /// <summary>\n        /// Removes the stored adjacency for the given vertex and triangle.\n        /// </summary>\n        private void RemoveAdjacency(int vertexIndex, int triangleIndex)\n        {\n            m_adjacentTriangleIndices[vertexIndex].Remove(triangleIndex);\n        }\n\n        /// <summary>\n        /// Fills the m_adjacentTriangleIndices array, which associates with each vertex a list\n        /// of triangles (by index) that are adjacent to the vertex.\n        /// </summary>\n        void ComputeAdjacencies()\n        {\n            for (int i = 0; i < m_adjacentTriangleIndices.Count; i++)\n            {\n                m_adjacentTriangleIndices[i].Clear();\n            }\n\n            for (int i = m_adjacentTriangleIndices.Count; i < m_vertices.Count; i++)\n            {\n                m_adjacentTriangleIndices.Add(new List<int>());\n            }\n\n            for (int faceIndex = 0; faceIndex < m_triangles.Count; faceIndex++)\n            {\n                var triangle = m_triangles[faceIndex];\n\n                m_adjacentTriangleIndices[triangle.VertexIndex0].Add(faceIndex);\n\n                m_adjacentTriangleIndices[triangle.VertexIndex1].Add(faceIndex);\n\n                m_adjacentTriangleIndices[triangle.VertexIndex2].Add(faceIndex);\n            }\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Voxels/MyVoxelCacheCellRender.cs",
    "content": "﻿using System;\nusing System.Collections.Concurrent;\nusing System.Collections.Generic;\n//using System.Threading;\n//using System.Threading.Tasks;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Managers;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Utils.VertexFormats;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils.Utils;\n\nusing SharpDX;\nusing SharpDX.Direct3D9;\nusing SharpDX.Toolkit;\nusing SharpDX.Toolkit.Graphics;\n\n//  Caching voxel cell vertex buffers.\n//\n//  Voxel cell cache implemented as preallocated array of cached cells - that can be accessed be key (calculated from voxel map Id and cell coordinates).\n//  All methods are O(1). Class can hold cached cells for any voxel map.\n//\n//  At the beginning, cell caches are preallocated (they contain vertex buffer, etc). Later when user wants to display particular cell, he looks\n//  into the cache if that cell isn't already calculated. If yes, he gets reference and can draw its vertex buffer. If not, he asks for one preallocated\n//  cell - and he is given cell with lowest priority.\n//  After that, he updates the cell - that means, he tells he needed this cell in cache so it should be stored for future (cell is given higher priority and\n//  there is less chance it's removed in near future).\n//  If he decides to remove cell from cache (e.g. after explosion), cell is freed and marked as available for new allocation - its priority is lowered, so\n//  it's very probable it will be allocated when next time new cell will be needed.\n//\n//  Using this approach, frequently drawn cells are almost always in the cache. As user moves through the level, older cells are removed and new are added.\n//  If cell is changed, we need to invalidate it in cache and use it's place for another cell (or same).\n//  Remember: size of cache is constant, so this is sort of a better circular buffer (just with priorities, etc).\n//\n//  Added 8.6.2008: Now I can decide if one render-cell-element stored LOD0 cell data or LOD1 version. So one render cell can be stored in render cache\n//  two times - once for detail version LOD0 and once for LOD1 version. But they are separate, so if we don't need LOD1 version, it may be freed and not be\n//  calculated until we need it again. E.g. if player is near voxel map to which he is making a tunnel, we are updating LOD0 cached version. All players\n//  that are in distance of this voxel map update just their LOD1 version, which is fast.\n\n\nnamespace MinerWars.AppCode.Game.Voxels\n{\n    using Byte4 = MinerWarsMath.Graphics.PackedVector.Byte4;\n    using HalfVector2 = MinerWarsMath.Graphics.PackedVector.HalfVector2;\n    using HalfVector4 = MinerWarsMath.Graphics.PackedVector.HalfVector4;\n    using Vector2 = MinerWarsMath.Vector2;\n    using Vector3 = MinerWarsMath.Vector3;\n    using Vector4 = MinerWarsMath.Vector4;\n    using Rectangle = MinerWarsMath.Rectangle;\n    using Matrix = MinerWarsMath.Matrix;\n    using Color = MinerWarsMath.Color;\n    using BoundingBox = MinerWarsMath.BoundingBox;\n    using BoundingSphere = MinerWarsMath.BoundingSphere;\n    using BoundingFrustum = MinerWarsMath.BoundingFrustum;\n\n    //  IMPORTANT: Order of this enum values is important. It has impact on sorting batches.\n    enum MyVoxelCacheCellRenderBatchType : byte\n    {\n        MULTI_MATERIAL_CLEAR = 0,\n        SINGLE_MATERIAL = 1,\n        MULTI_MATERIAL = 2\n    }\n\n    enum MyVoxelCellQueryMode\n    {\n        LoadImmediately,\n        StartLoadBackground,\n        DoNotLoad,\n    }\n\n    //  One cell stored in a cache\n    class MyVoxelCacheCellRender\n    {\n        public MyVoxelMap VoxelMap;\n        public Vector3 Center;          //  We need render cell center for sorting by distance\n        public MyMwcVector3Int CellCoord;\n        public List<MyVoxelCacheCellRenderBatch> Batches;\n        public MyLodTypeEnum CellHashType;        //  This will tell us if this render-cell-item stores normal data or LOD1\n        public bool Contains;       //  True if this render cell cache actualy stores some render cell. False if not and is waiting for its time (because it was just reseted)\n        public static readonly int VoxelMaterialCount = MyVoxelMaterials.GetMaterialsCount();\n\n        /// <summary>\n        /// Result of the occlusion query for this entity.\n        /// </summary>\n        private BoundingBox m_boundingBox;\n        public BoundingBox CellBoundingBox\n        {\n            get\n            {\n                return m_boundingBox;\n            }\n\n            set\n            {\n                m_boundingBox = value;\n            }\n        }\n\n        public MyVoxelCacheCellRender()\n        {\n            Batches = new List<MyVoxelCacheCellRenderBatch>(MyVoxelConstants.PREALLOCATED_RENDER_CELL_BATCHES);\n            Contains = false;\n        }\n\n        //  This methods needs to be called after every cell cache released!! It releases vertex buffer. It's important, \n        //  because when this cell cache will be associated to a new cell, not same material vertex buffer will be used so unused needs to be disposed!!\n        public void Reset()\n        {\n            if (Batches != null)\n            {\n                for (int i = 0; i < Batches.Count; i++)\n                {\n                    MyVoxelCacheCellRenderBatch batch = Batches[i];\n\n                    if (batch != null)\n                    {\n                        if (batch.VertexBuffer != null)\n                        {\n                            //  Dispose and set to null, so GC can take it\n                            batch.VertexBuffer.Dispose();\n                            batch.VertexBuffer = null;\n                            MyPerformanceCounter.PerAppLifetime.VoxelVertexBuffersSize -= batch.VertexBufferSize;\n                            batch.VertexBufferSize = 0;\n                        }\n\n                        if (batch.IndexBuffer != null)\n                        {\n                            //  Dispose and set to null, so GC can take it\n                            batch.IndexBuffer.Dispose();\n                            batch.IndexBuffer = null;\n                            MyPerformanceCounter.PerAppLifetime.VoxelIndexBuffersSize -= batch.IndexBufferSize;\n                            batch.IndexBufferSize = 0;\n                        }\n                    }\n                }\n\n                Contains = false;\n                Batches.Clear();\n            }\n        }\n\n        public void Begin(MyVoxelMap voxelMap, ref MyMwcVector3Int cellCoord)\n        {\n            VoxelMap = voxelMap;\n            CellCoord = cellCoord;\n            Center = voxelMap.GetRenderCellCenterPositionAbsolute(ref cellCoord);\n            Contains = true;\n            MyVoxelCacheCellRenderHelper.Begin();\n        }\n\n        public void End()\n        {\n            foreach (MySingleMaterialHelper materialHelper in MyVoxelCacheCellRenderHelper.GetSingleMaterialHelpers())\n            {\n                if (materialHelper != null && materialHelper.IndexCount > 0) \n                    EndSingleMaterial(materialHelper);\n            }\n\n            foreach (var pair in MyVoxelCacheCellRenderHelper.GetMultiMaterialHelpers())\n            {\n                if (pair.Value.VertexCount > 0)\n                    EndMultiMaterial(pair.Value);\n            }\n\n            //if (materialHelper.IndexCount > 0) EndMultiMaterial(materialHelper.Material);\n\n            //  SortForSAP batches by type and material\n            Batches.Sort();\n        }\n\n        void EndSingleMaterial(MySingleMaterialHelper materialHelper)\n        {\n            if (materialHelper.IndexCount > 0 && materialHelper.VertexCount > 0)\n            {\n                //  This will just preload textures used by this material - so they are ready in memory when first time drawn\n                MyVoxelMaterials.Get(materialHelper.Material).GetTextures();\n\n                MyVoxelCacheCellRenderBatch newBatch = new MyVoxelCacheCellRenderBatch();\n                //  Vertex buffer\n                newBatch.VertexBufferCount = materialHelper.VertexCount;\n                newBatch.VertexBuffer = new VertexBuffer(MyMinerGame.Static.GraphicsDevice, MyVertexFormatVoxelSingleMaterial.Stride * newBatch.VertexBufferCount, Usage.WriteOnly, VertexFormat.None, Pool.Default);\n                newBatch.VertexBuffer.Lock(0, 0, LockFlags.None).WriteRange(materialHelper.Vertices, 0, newBatch.VertexBufferCount);\n                newBatch.VertexBuffer.Unlock();\n                newBatch.VertexBuffer.Tag = newBatch;\n                newBatch.VertexBuffer.DebugName = \"VoxelBatchSingle\";\n                newBatch.VertexBufferSize = materialHelper.VertexCount * MyVertexFormatVoxelSingleMaterial.Stride;\n                MyPerformanceCounter.PerAppLifetime.VoxelVertexBuffersSize += newBatch.VertexBufferSize;\n\n                //  Index buffer\n                newBatch.IndexBufferCount = materialHelper.IndexCount;\n                newBatch.IndexBuffer = new IndexBuffer(MyMinerGame.Static.GraphicsDevice, newBatch.IndexBufferCount * sizeof(short), Usage.WriteOnly, Pool.Default, true);\n                newBatch.IndexBuffer.Lock(0, 0, LockFlags.None).WriteRange(materialHelper.Indices, 0, newBatch.IndexBufferCount);\n                newBatch.IndexBuffer.Unlock();\n                newBatch.IndexBuffer.DebugName = \"VoxelBatchSingle\";\n                newBatch.IndexBufferSize = materialHelper.IndexCount * sizeof(short);\n                MyPerformanceCounter.PerAppLifetime.VoxelIndexBuffersSize += newBatch.IndexBufferSize;\n\n                newBatch.Type = MyVoxelCacheCellRenderBatchType.SINGLE_MATERIAL;\n                newBatch.Material0 = materialHelper.Material;\n                newBatch.Material1 = null;\n                newBatch.Material2 = null;\n                newBatch.UpdateSortOrder();\n\n                Batches.Add(newBatch);\n            }\n            //  Reset helper arrays, so we can start adding triangles to them again\n            materialHelper.IndexCount = 0;\n            materialHelper.VertexCount = 0;\n            MyVoxelCacheCellRenderHelper.SingleMaterialIndicesLookupCount[(int)materialHelper.Material]++;\n        }\n\n        void EndMultiMaterial(MyMultiMaterialHelper helper)\n        {\n            if (helper.VertexCount > 0)\n            {\n                //  This will just preload textures used by this material - so they are ready in memory when first time drawn\n                MyVoxelMaterials.Get(helper.Material0).GetTextures();\n                MyVoxelMaterials.Get(helper.Material1).GetTextures();\n                MyVoxelMaterials.Get(helper.Material2).GetTextures();\n\n                MyVoxelCacheCellRenderBatch newBatch = new MyVoxelCacheCellRenderBatch();\n\n                //  Vertex buffer\n                newBatch.VertexBufferCount = helper.VertexCount;\n                newBatch.VertexBuffer = new VertexBuffer(MyMinerGame.Static.GraphicsDevice, MyVertexFormatVoxelSingleMaterial.Stride * newBatch.VertexBufferCount, Usage.WriteOnly, VertexFormat.None, Pool.Default);\n                newBatch.VertexBuffer.Lock(0, 0, LockFlags.None).WriteRange(helper.Vertices, 0, newBatch.VertexBufferCount);\n                newBatch.VertexBuffer.Unlock();\n                newBatch.VertexBuffer.Tag = this;\n                newBatch.VertexBuffer.DebugName = \"VoxelBatchMulti\";\n                newBatch.VertexBufferSize = helper.VertexCount * MyVertexFormatVoxelSingleMaterial.Stride;\n                MyPerformanceCounter.PerAppLifetime.VoxelVertexBuffersSize += newBatch.VertexBufferSize;\n\n                // Index buffer (because everything must have IB)\n                newBatch.IndexBufferCount = helper.VertexCount;\n                newBatch.IndexBuffer = new IndexBuffer(MyMinerGame.Static.GraphicsDevice, newBatch.IndexBufferCount * sizeof(short), Usage.WriteOnly, Pool.Default, true);\n\n                short[] indices = new short[helper.VertexCount];\n                for (short i = 0; i < indices.Length; i++)\n                {\n                    indices[i] = i;\n                }\n                newBatch.IndexBuffer.Lock(0,0, LockFlags.None).WriteRange(indices);\n                newBatch.IndexBuffer.Unlock();\n                newBatch.IndexBuffer.DebugName = \"VoxelBatchMulti\";\n                newBatch.IndexBuffer.Tag = this;\n                newBatch.IndexBufferSize = helper.VertexCount * sizeof(short);\n                MyPerformanceCounter.PerAppLifetime.VoxelIndexBuffersSize += newBatch.IndexBufferSize;\n\n                newBatch.Type = MyVoxelCacheCellRenderBatchType.MULTI_MATERIAL;\n                newBatch.Material0 = helper.Material0;\n                newBatch.Material1 = helper.Material1;\n                newBatch.Material2 = helper.Material2;\n                newBatch.UpdateSortOrder();\n\n                Batches.Add(newBatch);\n            }\n\n            //  Reset helper arrays, so we can start adding triangles to them again\n            helper.VertexCount = 0;\n        }\n\n        public static int GetMultimaterialId(MyMwcVoxelMaterialsEnum mat0, MyMwcVoxelMaterialsEnum mat1, MyMwcVoxelMaterialsEnum mat2)\n        {\n            int i0 = (int)mat0;\n            int i1 = (int)mat1;\n            int i2 = (int)mat2;\n\n            if (i0 > i1)\n            {\n                MyUtils.Swap(ref i0, ref i1);\n            }\n            if (i1 > i2)\n            {\n                MyUtils.Swap(ref i1, ref i2);\n            }\n            if (i0 > i1)\n            {\n                MyUtils.Swap(ref i0, ref i1);\n            }\n            return i0 + i1 * VoxelMaterialCount + i2 * VoxelMaterialCount * VoxelMaterialCount;\n        }\n\n        private static void GetMultimaterialsFromId(int id, out MyMwcVoxelMaterialsEnum mat0, out MyMwcVoxelMaterialsEnum mat1, out MyMwcVoxelMaterialsEnum mat2)\n        {\n            int div = id;\n            mat0 = (MyMwcVoxelMaterialsEnum)(div % VoxelMaterialCount);\n            div /= VoxelMaterialCount;\n            mat1 = (MyMwcVoxelMaterialsEnum)(div % VoxelMaterialCount);\n            div /= VoxelMaterialCount;\n            mat2 = (MyMwcVoxelMaterialsEnum)(div % VoxelMaterialCount);\n        }\n   \n        public void AddTriangles(List<MyVoxelVertex> vertices, List<MyVoxelTriangle> triangles)\n        {\n            //Removed because it was duplicate of AddTriangles below\n        }\n\n        //  This method adds triangles from one data cell into this render cell. Single-texture triangles are added using indices (so we use m_notCompressedIndex buffer).\n        //  For this we need to find indices. We use lookup array for it.\n        //  Now we support only 16-bit indices, so vertex buffer can't have more then short.MaxValue vertices.\n        public void AddTriangles(List<MyVoxelCacheCellData> cacheDataArray)\n        {\n\n\n            //     MyPerformanceTimer.VoxelGpuBuffersBuild.Start();\n\n\n            //MyMwcVoxelMaterialsEnum? CurrentSingleMaterial = null;\n            //            bool triangleAdded = true;\n\n            // while (triangleAdded)\n            //  {\n            //   triangleAdded = false;\n            //CurrentSingleMaterial = null;\n\n\n            foreach (var cacheData in cacheDataArray)\n            {\n                //  Increase lookup count, so we will think that all vertexes in helper arrays are new\n                for (int i = 0; i < MyVoxelCacheCellRenderHelper.SingleMaterialIndicesLookupCount.Length; i++)\n                {\n                    MyVoxelCacheCellRenderHelper.SingleMaterialIndicesLookupCount[i]++;\n                }\n\n                for (int i = 0; i < cacheData.VoxelTrianglesCount; i++)\n                {\n                    MyVoxelTriangle triangle = cacheData.VoxelTriangles[i];\n                    MyVoxelVertex vertex0 = cacheData.VoxelVertices[triangle.VertexIndex0];\n                    MyVoxelVertex vertex1 = cacheData.VoxelVertices[triangle.VertexIndex1];\n                    MyVoxelVertex vertex2 = cacheData.VoxelVertices[triangle.VertexIndex2];\n\n                    if ((vertex0.Material == vertex1.Material) && (vertex0.Material == vertex2.Material))\n                    {\n                        int matIndex = (int)vertex0.Material;\n\n                        //  This is single-texture triangleVertexes, so we can choose material from any edge\n                        MySingleMaterialHelper materialHelper = MyVoxelCacheCellRenderHelper.GetForMaterial(vertex0.Material);\n\n                        //  Add vertex0 to vertex buffer\n                        AddVertexToBuffer(materialHelper, ref vertex0, matIndex, triangle.VertexIndex0);\n\n                        //  Add vertex1 to vertex buffer\n                        AddVertexToBuffer(materialHelper, ref vertex1, matIndex, triangle.VertexIndex1);\n\n                        //  Add vertex2 to vertex buffer\n                        AddVertexToBuffer(materialHelper, ref vertex2, matIndex, triangle.VertexIndex2);\n\n                        //triangleAdded = true;\n\n                        //  Add indices\n                        int nextTriangleIndex = materialHelper.IndexCount;\n                        materialHelper.Indices[nextTriangleIndex + 0] = MyVoxelCacheCellRenderHelper.SingleMaterialIndicesLookup[matIndex][triangle.VertexIndex0].VertexIndex;\n                        materialHelper.Indices[nextTriangleIndex + 1] = MyVoxelCacheCellRenderHelper.SingleMaterialIndicesLookup[matIndex][triangle.VertexIndex1].VertexIndex;\n                        materialHelper.Indices[nextTriangleIndex + 2] = MyVoxelCacheCellRenderHelper.SingleMaterialIndicesLookup[matIndex][triangle.VertexIndex2].VertexIndex;\n                        materialHelper.IndexCount += 3;\n\n                        if ((materialHelper.VertexCount >= MyVoxelCacheCellRenderHelper.MAX_VERTICES_COUNT_STOP) ||\n                            (materialHelper.IndexCount >= MyVoxelCacheCellRenderHelper.MAX_INDICES_COUNT_STOP))\n                        {\n                            //  If this batch is almost full (or is full), we end it and start with new one\n                            EndSingleMaterial(materialHelper);\n                        }\n                    }\n                    else\n                    {\n                        int id = GetMultimaterialId(vertex0.Material, vertex1.Material, vertex2.Material);\n                        // Assign current material\n                        MyMultiMaterialHelper multiMaterialHelper = MyVoxelCacheCellRenderHelper.GetForMultimaterial(vertex0.Material, vertex1.Material, vertex2.Material);\n  \n                        //triangleAdded = true;\n\n#if PACKED_VERTEX_FORMAT\n                        // Copy packed normals\n                        multiMaterialHelper.Vertices[multiMaterialHelper.VertexCount + 0].PackedNormal = vertex0.PackedNormal;\n                        multiMaterialHelper.Vertices[multiMaterialHelper.VertexCount + 1].PackedNormal = vertex0.PackedNormal;\n                        multiMaterialHelper.Vertices[multiMaterialHelper.VertexCount + 2].PackedNormal = vertex0.PackedNormal;\n#endif\n\n                        multiMaterialHelper.AddVertex(ref vertex0);\n                        multiMaterialHelper.AddVertex(ref vertex1);\n                        multiMaterialHelper.AddVertex(ref vertex2);\n\n                        if (multiMaterialHelper.VertexCount >= MyVoxelCacheCellRenderHelper.MAX_VERTICES_COUNT_STOP)\n                        {\n                            EndMultiMaterial(multiMaterialHelper);\n                        }\n                    }\n                }\n                     /*\n                if (multiMaterialHelper != null)\n                {\n                    int id = GetMultimaterialId(multiMaterialHelper.Material0, multiMaterialHelper.Material1, multiMaterialHelper.Material2);\n                    MyVoxelCacheCellRenderHelper.FinishedMultiMaterials[id] = true;\n                    EndMultimaterial(multiMaterialHelper);\n                }\n\n                if (singleMaterialHelper != null)\n                {\n                    MyVoxelCacheCellRenderHelper.FinishedSingleMaterials[(int)singleMaterialHelper.Material] = true;\n                    EndSingleMaterial(singleMaterialHelper);\n                }      */\n            }\n\n\n            //    }\n            //MyPerformanceTimer.VoxelGpuBuffersBuild.End();\n        }\n\n        private static void AddVertexToBuffer(MySingleMaterialHelper materialHelper, ref MyVoxelVertex vertex0,\n            int matIndex, short vertexIndex0)\n        {\n            if (MyVoxelCacheCellRenderHelper.SingleMaterialIndicesLookup[matIndex][vertexIndex0].CalcCounter !=\n                MyVoxelCacheCellRenderHelper.SingleMaterialIndicesLookupCount[matIndex])\n            {\n                int nextVertexIndex = materialHelper.VertexCount;\n\n                //  Short overflow check\n                System.Diagnostics.Debug.Assert(nextVertexIndex <= short.MaxValue);\n\n                // copy position and ambient\n                materialHelper.Vertices[nextVertexIndex].m_positionAndAmbient = vertex0.m_positionAndAmbient;\n                materialHelper.Vertices[nextVertexIndex].Ambient = vertex0.Ambient;\n\n                // Copy normal\n#if PACKED_VERTEX_FORMAT\n                materialHelper.Vertices[nextVertexIndex].m_normal = vertex0.m_normal;\n#else\n                materialHelper.Vertices[nextVertexIndex].Normal = vertex0.Normal;\n#endif\n\n                MyVoxelCacheCellRenderHelper.SingleMaterialIndicesLookup[matIndex][vertexIndex0].CalcCounter =\n                    MyVoxelCacheCellRenderHelper.SingleMaterialIndicesLookupCount[matIndex];\n                MyVoxelCacheCellRenderHelper.SingleMaterialIndicesLookup[matIndex][vertexIndex0].VertexIndex =\n                    (short) nextVertexIndex;\n\n                materialHelper.VertexCount++;\n            }\n        }\n    }\n\n    //  Container of all cells stored in voxel cache\n    static class MyVoxelCacheRender\n    {\n\n        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\n        //  Access cached cell by key\n        static Dictionary<Int64, LinkedListNode<MyVoxelCacheCellRender>> m_cellsByCoordinate = null;\n\n        //  Here we preallocate cell caches\n        static MyVoxelCacheCellRender[] m_cellsPreallocated = null;\n\n        //  Linked list used to allocate, remove and update voxel cell in O(1) time.\n        static LinkedList<MyVoxelCacheCellRender> m_priority;\n        static LinkedListNode<MyVoxelCacheCellRender>[] m_priorityArray;\n\n        static object m_priorityLocker = new object();\n\n        //  Capacity of this cell cache\n        static int m_capacity;\n\n        //  Used for creating LOD1 version only\n        static MyVoxelCacheCellData m_helperLodCachedDataCell;\n\n        static List<MyVoxelCacheCellData> m_dataCellsQueue;\n\n        static readonly ConcurrentQueue<RenderCellLoadJob> m_queue;\n        //static AutoResetEvent m_event;\n        private static HashSet<long> m_cellsBeingLoaded;\n\n        static MyVoxelCacheRender()\n        {\n            m_cellsBeingLoaded = new HashSet<long>();\n\n            m_queue = new ConcurrentQueue<RenderCellLoadJob>();\n          //  m_event = new AutoResetEvent(false);\n          //  Task.Factory.StartNew(BackgroundTask, TaskCreationOptions.PreferFairness);\n        }\n               /*\n        static void BackgroundTask()\n        {\n            while (true)\n            {\n                RenderCellLoadJob next;\n                if (m_queue.TryDequeue(out next))\n                {\n                    long key = MyVoxelMaps.GetCellHashCode(next.VoxelMap.VoxelMapId, ref next.RenderCellCoord, next.CellHashType);\n                    LoadCell(next.VoxelMap, ref next.RenderCellCoord, next.CellHashType);\n                    m_cellsBeingLoaded.Remove(key);\n                }\n                else\n                {\n                    m_event.WaitOne();\n                }\n            }\n        }        */\n\n        private class RenderCellLoadJob\n        {\n            public MyVoxelMap VoxelMap;\n            public MyMwcVector3Int RenderCellCoord;\n            public MyLodTypeEnum CellHashType;\n\n            public RenderCellLoadJob(MyVoxelMap voxelMap, ref MyMwcVector3Int renderCellCoord, MyLodTypeEnum cellHashType)\n            {\n                VoxelMap = voxelMap;\n                RenderCellCoord = renderCellCoord;\n                CellHashType = cellHashType;\n            }\n        }\n\n        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\n        public static void LoadData()\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyVoxelCacheRender.LoadData\");\n\n            MyMwcLog.WriteLine(\"MyVoxelCacheRender.LoadData() - START\");\n            MyMwcLog.IncreaseIndent();\n\n            m_capacity = MyVoxelConstants.VOXEL_RENDER_CELL_CACHE_SIZE;\n            m_cellsByCoordinate = new Dictionary<Int64, LinkedListNode<MyVoxelCacheCellRender>>(m_capacity);\n            m_priority = new LinkedList<MyVoxelCacheCellRender>();\n            m_priorityArray = new LinkedListNode<MyVoxelCacheCellRender>[m_capacity];\n            m_cellsPreallocated = new MyVoxelCacheCellRender[m_capacity];\n            m_helperLodCachedDataCell = new MyVoxelCacheCellData();\n            m_dataCellsQueue = new List<MyVoxelCacheCellData>(MyVoxelConstants.VOXEL_RENDER_CELL_SIZE_IN_DATA_CELLS_TOTAL);\n            for (int i = 0; i < m_capacity; i++)\n            {\n                m_cellsPreallocated[i] = new MyVoxelCacheCellRender();\n                m_priorityArray[i] = new LinkedListNode<MyVoxelCacheCellRender>(m_cellsPreallocated[i]);\n                m_priority.AddLast(m_priorityArray[i]);\n            }\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyVoxelCacheRender.LoadData() - END\");\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        public static void UnloadData()\n        {\n            m_cellsPreallocated = null;\n            m_priority = null;\n            m_priorityArray = null;\n            m_dataCellsQueue.Clear();\n            m_helperLodCachedDataCell = null;\n        }\n\n        //  Initialized new voxel cell cache. Capacity specified count of voxel cells in the cache.\n        public static void LoadContent()\n        {\n            MyMwcLog.WriteLine(\"MyVoxelCacheRender.LoadContent() - START\");\n            MyMwcLog.IncreaseIndent();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyVoxelCacheRender::LoadContent\");\n\n\n\n            foreach (KeyValuePair<Int64, LinkedListNode<MyVoxelCacheCellRender>> kvp in m_cellsByCoordinate)\n            {\n                //kvp.Value.Value.Reset();\n                m_priority.Remove(kvp.Value.Value);\n                m_priority.AddFirst(kvp.Value.Value);\n            }\n            m_cellsByCoordinate.Clear();//forces to recreate all rendering cells on next call\n\n\n\n            //this is here becouse it worked and is probably right way how to invalidate this stuff (really dont know why)\n            foreach (MyVoxelMap map in MyVoxelMaps.GetVoxelMaps())\n            {\n                map.InvalidateCache(new MyMwcVector3Int(-1000, -1000, -1000), new MyMwcVector3Int(1000, 1000, 1000));\n            }\n\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyVoxelCacheRender.LoadContent() - END\");\n        }\n\n        public static void UnloadContent()\n        {\n            MyMwcLog.WriteLine(\"MyVoxelCacheRender.UnloadContent - START\");\n            MyMwcLog.IncreaseIndent();\n            if (m_cellsPreallocated != null)\n            {\n                for (int i = 0; i < m_cellsPreallocated.Length; i++)\n                {\n                    if (m_cellsPreallocated[i] != null)\n                    {\n                        //  Dispose vertex buffers\n                        m_cellsPreallocated[i].Reset();\n                    }\n                }\n            }\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyVoxelCacheRender.UnloadContent - END\");\n        }\n\n        public static MyVoxelCacheCellRender GetCell(\n            MyVoxelMap voxelMap, ref MyMwcVector3Int renderCellCoord, MyLodTypeEnum cellHashType, MyVoxelCellQueryMode loadingMode = MyVoxelCellQueryMode.LoadImmediately)\n        {\n            //MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"GetCellFromCache\");\n            MyVoxelCacheCellRender ret = GetCellFromCache(voxelMap.VoxelMapId, ref renderCellCoord, cellHashType);\n            //MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            if (ret == null)\n            {\n                switch (loadingMode)\n                {\n                    case MyVoxelCellQueryMode.LoadImmediately:\n                        ret = LoadCell(voxelMap, ref renderCellCoord, cellHashType);\n                        break;\n                    case MyVoxelCellQueryMode.StartLoadBackground:\n                        TryLoadCellInBackground(voxelMap, ref renderCellCoord, cellHashType);\n                        break;\n                    case MyVoxelCellQueryMode.DoNotLoad:\n                        // do nothing\n                        break;\n                    default:\n                        throw new ArgumentOutOfRangeException(\"loadingMode\");\n                }\n            }\n\n            if (ret != null)\n            {\n                //MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyVoxelCacheRender.UpdateCell\");\n                UpdateCell(voxelMap.VoxelMapId, ref renderCellCoord, cellHashType);\n\n                         /*\n                BoundingBox box;\n                voxelMap.GetRenderCellBoundingBox(ref renderCellCoord, out box);\n\n\n            //MyDebugDraw.DrawAABBLowRes(ref box, ref v, 1);\n\n                 MyMwcVector3Int cellCoord;\n                 MyMwcVector3Int cellCoordMin = voxelMap.GetDataCellCoordinateFromMeters(ref box.Min);\n                 MyMwcVector3Int cellCoordMax = voxelMap.GetDataCellCoordinateFromMeters(ref box.Max);\n\n            for (cellCoord.X = cellCoordMin.X; cellCoord.X <= cellCoordMax.X; cellCoord.X++)\n            {\n                for (cellCoord.Y = cellCoordMin.Y; cellCoord.Y <= cellCoordMax.Y; cellCoord.Y++)\n                {\n                    for (cellCoord.Z = cellCoordMin.Z; cellCoord.Z <= cellCoordMax.Z; cellCoord.Z++)\n                    {\n                        if (MyVoxelCacheData.GetCellFromCache(voxelMap.VoxelMapId, ref cellCoord) != null)\n                        {\n                            MyVoxelCacheData.UpdateCell(voxelMap.VoxelMapId, ref cellCoord);\n                        }\n                    }\n                }\n            }          */\n\n\n\n                       /*\n                MyMwcVector3Int cellCoord;\n                for (cellCoord.X = 0; cellCoord.X < voxelMap.DataCellsCount.X; cellCoord.X++)\n                {\n                    for (cellCoord.Y = 0; cellCoord.Y < voxelMap.DataCellsCount.Y; cellCoord.Y++)\n                    {\n                        for (cellCoord.Z = 0; cellCoord.Z < voxelMap.DataCellsCount.Z; cellCoord.Z++)\n                        {\n                            if (MyVoxelCacheData.GetCellFromCache(voxelMap.VoxelMapId, ref cellCoord) != null)\n                            {\n                                MyVoxelCacheData.UpdateCell(voxelMap.VoxelMapId, ref cellCoord);\n                            }\n                        }\n                    }\n                }        */\n                      /*\n                // MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n                MyMwcVector3Int voxelCoord = new MyMwcVector3Int(renderCellCoord.X * MyVoxelConstants.VOXEL_RENDER_CELL_SIZE_IN_VOXELS, renderCellCoord.Y * MyVoxelConstants.VOXEL_RENDER_CELL_SIZE_IN_VOXELS, renderCellCoord.Z * MyVoxelConstants.VOXEL_RENDER_CELL_SIZE_IN_VOXELS);\n                var datacellCoord = voxelMap.GetDataCellCoordinate(ref voxelCoord);\n                if (MyVoxelCacheData.GetCellFromCache(voxelMap.VoxelMapId, ref datacellCoord) != null)\n                {\n                    MyVoxelCacheData.UpdateCell(voxelMap.VoxelMapId, ref datacellCoord);\n                }   */\n            }\n\n            return ret;\n        }\n\n        private static void TryLoadCellInBackground(MyVoxelMap voxelMap, ref MyMwcVector3Int renderCellCoord, MyLodTypeEnum cellHashType)\n        {\n            long key = MyVoxelMaps.GetCellHashCode(voxelMap.VoxelMapId, ref renderCellCoord, cellHashType);\n\n            bool loadingCell = m_cellsBeingLoaded.Contains(key);\n            if (loadingCell) return; // already loading the cell\n            m_cellsBeingLoaded.Add(key);\n\n            LoadCellInBackground(voxelMap, ref renderCellCoord, cellHashType);\n        }\n\n        private static void LoadCellInBackground(\n            MyVoxelMap voxelMap, ref MyMwcVector3Int renderCellCoord, MyLodTypeEnum cellHashType)\n        {\n            System.Diagnostics.Debug.Assert(false, \"Not implemented\");\n            MyCommonDebugUtils.AssertDebug(voxelMap != null);\n            //m_queue.Enqueue(new RenderCellLoadJob(voxelMap, ref renderCellCoord, cellHashType));\n            //m_event.Set();\n        }\n\n        private static MyVoxelCacheCellRender LoadCell(\n            MyVoxelMap voxelMap, ref MyMwcVector3Int renderCellCoord, MyLodTypeEnum cellHashType)\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"AddCell\");\n\n            MyVoxelCacheCellRender ret = AddCell(voxelMap.VoxelMapId, ref renderCellCoord, cellHashType);\n            ret.Begin(voxelMap, ref renderCellCoord);\n            ret.CellHashType = cellHashType;\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            if (cellHashType == MyLodTypeEnum.LOD0)\n            {\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"cellHashType LOD0\");\n                m_dataCellsQueue.Clear();\n\n                //  Create normal (LOD0) version\n                for (int dataX = 0; dataX < MyVoxelConstants.VOXEL_DATA_CELLS_IN_RENDER_CELL_SIZE; dataX++)\n                {\n                    for (int dataY = 0; dataY < MyVoxelConstants.VOXEL_DATA_CELLS_IN_RENDER_CELL_SIZE; dataY++)\n                    {\n                        for (int dataZ = 0; dataZ < MyVoxelConstants.VOXEL_DATA_CELLS_IN_RENDER_CELL_SIZE; dataZ++)\n                        {\n                            //  Don't precalculate this cells now. Store it in queue and calculate all cells at once by MyVoxelPrecalc.PrecalcQueue()\n                            MyMwcVector3Int dataCellCoord =\n                                new MyMwcVector3Int(\n                                    renderCellCoord.X * MyVoxelConstants.VOXEL_DATA_CELLS_IN_RENDER_CELL_SIZE + dataX,\n                                    renderCellCoord.Y * MyVoxelConstants.VOXEL_DATA_CELLS_IN_RENDER_CELL_SIZE + dataY,\n                                    renderCellCoord.Z * MyVoxelConstants.VOXEL_DATA_CELLS_IN_RENDER_CELL_SIZE + dataZ);\n                            MyVoxelCacheCellData cachedDataCell = MyVoxelCacheData.GetCellLater(voxelMap, ref dataCellCoord);\n                            if (cachedDataCell != null)\n                            {\n                                m_dataCellsQueue.Add(cachedDataCell);\n                            }\n                        }\n                    }\n                }\n\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"PrecalcQueue LOD0\");\n\n                //  Precalculate all queued data cells in parallel threads - using multiple cores if possible.\n                MyVoxelPrecalc.PrecalcQueue();\n\n                if (MyFakes.SIMPLIFY_VOXEL_MESH)\n                {\n                    MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"Stitch Data Cells LOD0\");\n                    MyDataCellStitcher.StitchDataCells(m_dataCellsQueue);\n\n                    MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"Decimate mesh LOD0\");\n                    MyMeshSimplifier.Instance.SimplifyMesh(MyDataCellStitcher.Vertices, MyDataCellStitcher.Triangles);\n\n                    MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"AddTriangles LOD0\");\n                    ret.AddTriangles(MyDataCellStitcher.Vertices, MyDataCellStitcher.Triangles);\n                }\n                else\n                {\n                    MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"AddTriangles LOD0\");\n                    ret.AddTriangles(m_dataCellsQueue);\n                }\n\n                //  Iterate all data cells and copy their triangles to this render cell\n                //for (int i = 0; i < m_dataCellsQueue.Count; i++)\n                //{\n                //    ret.AddTriangles(m_dataCellsQueue[i]);\n                //}\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n            }\n            else if (cellHashType == MyLodTypeEnum.LOD1)\n            {\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"cellHashType LOD1\");\n\n                m_helperLodCachedDataCell.Reset();\n\n                //  Create LOD1 render cell\n                MyVoxelPrecalc.PrecalcImmediatelly(\n                    new MyVoxelPrecalcTaskItem(\n                        MyLodTypeEnum.LOD1,\n                        voxelMap,\n                        m_helperLodCachedDataCell,\n                        new MyMwcVector3Int(\n                            renderCellCoord.X * MyVoxelConstants.VOXEL_DATA_CELLS_IN_RENDER_CELL_SIZE,\n                            renderCellCoord.Y * MyVoxelConstants.VOXEL_DATA_CELLS_IN_RENDER_CELL_SIZE,\n                            renderCellCoord.Z * MyVoxelConstants.VOXEL_DATA_CELLS_IN_RENDER_CELL_SIZE)));\n\n\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"m_dataCellsQueue LOD1\");\n                m_dataCellsQueue.Clear();\n                m_dataCellsQueue.Add(m_helperLodCachedDataCell);\n\n\n                if (MyFakes.SIMPLIFY_VOXEL_MESH)\n                {\n                    MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"Stitch data cells LOD1\");\n                    MyDataCellStitcher.StitchDataCells(m_dataCellsQueue);\n\n                    MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"Decimate mesh LOD1\");\n                    MyMeshSimplifier.Instance.SimplifyMesh(MyDataCellStitcher.Vertices, MyDataCellStitcher.Triangles);\n\n                    MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"AddTriangles LOD1\");\n                    ret.AddTriangles(MyDataCellStitcher.Vertices, MyDataCellStitcher.Triangles);\n                }\n                else\n                {\n                    MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"AddTriangles LOD1\");\n                    ret.AddTriangles(m_dataCellsQueue);\n                }\n\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n            }\n            else\n            {\n                throw new MyMwcExceptionApplicationShouldNotGetHere();\n            }\n\n            ret.End();\n            return ret;\n        }\n\n        //  Gets cell from the cache. If cell isn't in the cache, null is returned.\n        //  This is only lookup into hashtable. No precalc is made here.\n        static MyVoxelCacheCellRender GetCellFromCache(int voxelMapId, ref MyMwcVector3Int cellCoord, MyLodTypeEnum cellHashType)\n        {\n            Int64 key = MyVoxelMaps.GetCellHashCode(voxelMapId, ref cellCoord, cellHashType);\n\n            LinkedListNode<MyVoxelCacheCellRender> ret;\n            if (m_cellsByCoordinate.TryGetValue(key, out ret) == true)\n            {\n                return ret.Value;\n            }\n\n            return null;\n        }\n\n        //  Add cell into cache and returns reference to it. Cache item with lowest priority is choosen.\n        //  Call this method when you want allocate new item in the cache.\n        static MyVoxelCacheCellRender AddCell(int voxelMapId, ref MyMwcVector3Int cellCoord, MyLodTypeEnum cellHashType)\n        {\n            Int64 key = MyVoxelMaps.GetCellHashCode(voxelMapId, ref cellCoord, cellHashType);\n\n            //  Cache item with lowest priority is choosen.\n            LinkedListNode<MyVoxelCacheCellRender> first = m_priority.First;\n            lock (m_priorityLocker)\n            {\n                m_priority.RemoveFirst();\n                m_priority.AddLast(first);\n            }\n\n            //  If this object already contained some vertex buffers (and of course some render cell), we need to dispose its vertex buffers and \n            //  remove from hash table, so that render cell will no longer be in the render cell cache\n            if (first.Value.Contains == true)\n            {\n                System.Diagnostics.Debug.Assert(false, \"Cache is full - increase it atm\");\n\n                Int64 keyForRemoving = MyVoxelMaps.GetCellHashCode(first.Value.VoxelMap.VoxelMapId, ref first.Value.CellCoord, first.Value.CellHashType);\n                m_cellsByCoordinate.Remove(keyForRemoving);\n                first.Value.Reset();\n            }\n\n            //  Remember where is render cell cache for this render cell\n            m_cellsByCoordinate.Add(key, first);\n\n            //  You have reached the capacity of RENDER cells cache. Consider increasing it.\n            MyCommonDebugUtils.AssertDebug(m_cellsByCoordinate.Count <= m_capacity);\n\n            return first.Value;\n        }\n\n        //  Remove cell - after voxels were changed, etc.\n        public static void RemoveCell(int voxelMapId, ref MyMwcVector3Int cellCoord, MyLodTypeEnum cellHashType)\n        {\n            Int64 key = MyVoxelMaps.GetCellHashCode(voxelMapId, ref cellCoord, cellHashType);\n\n            //  If cell is in cache, we remove it from dictionary and move it to the beginning of priority linked list\n            LinkedListNode<MyVoxelCacheCellRender> ret;\n            if (m_cellsByCoordinate.TryGetValue(key, out ret) == true)\n            {\n                m_cellsByCoordinate.Remove(key);\n\n                //  Dispose vertex buffers\n                ret.Value.Reset();\n\n                //  Move it to the beginning of priority linked list\n                lock (m_priorityLocker)\n                {\n                    m_priority.Remove(ret);\n                    m_priority.AddFirst(ret);\n                }\n            }\n        }\n\n        //  Update cell - immediately after it was last time used. It will get higher priority and won't be flushed when AddCell() called next time.\n        public static void UpdateCell(int voxelMapId, ref MyMwcVector3Int cellCoord, MyLodTypeEnum cellHashType)\n        {\n            Int64 key = MyVoxelMaps.GetCellHashCode(voxelMapId, ref cellCoord, cellHashType);\n            LinkedListNode<MyVoxelCacheCellRender> ret = m_cellsByCoordinate[key];\n\n            //  Move it to the end of priority linked list\n            lock (m_priorityLocker)\n            {\n                m_priority.Remove(ret);\n                m_priority.AddLast(ret);\n            }\n        }\n\n        //  Remove cell for voxels specified be min/max corner. Used after explosion when we want to remove a lot of voxels/cell from cache.\n        //  This is efficient method, because it doesn't invalidate cache after every voxel change.\n        //  Method knows that adjacent cells need to be removed too (because of MCA), so it invalidates them too.\n        public static void RemoveCellForVoxels(MyVoxelMap voxelMap, MyMwcVector3Int minVoxel, MyMwcVector3Int maxVoxel)\n        {\n            //  Calculate voxel for boundary things...\n            MyMwcVector3Int maxCornerExt = new MyMwcVector3Int(maxVoxel.X + 1, maxVoxel.Y + 1, maxVoxel.Z + 1);\n            if (maxCornerExt.X > voxelMap.SizeMinusOne.X) maxCornerExt.X = voxelMap.SizeMinusOne.X;\n            if (maxCornerExt.Y > voxelMap.SizeMinusOne.Y) maxCornerExt.Y = voxelMap.SizeMinusOne.Y;\n            if (maxCornerExt.Z > voxelMap.SizeMinusOne.Z) maxCornerExt.Z = voxelMap.SizeMinusOne.Z;\n\n            //  Min/max cell\n            MyMwcVector3Int minCell = voxelMap.GetVoxelRenderCellCoordinate(ref minVoxel);\n            MyMwcVector3Int maxCell = voxelMap.GetVoxelRenderCellCoordinate(ref maxCornerExt);\n\n            //  Invalidate cells\n            MyMwcVector3Int tempCellCoord;\n            for (tempCellCoord.X = minCell.X; tempCellCoord.X <= maxCell.X; tempCellCoord.X++)\n            {\n                for (tempCellCoord.Y = minCell.Y; tempCellCoord.Y <= maxCell.Y; tempCellCoord.Y++)\n                {\n                    for (tempCellCoord.Z = minCell.Z; tempCellCoord.Z <= maxCell.Z; tempCellCoord.Z++)\n                    {\n                        RemoveCell(voxelMap.VoxelMapId, ref tempCellCoord, MyLodTypeEnum.LOD0);\n                        RemoveCell(voxelMap.VoxelMapId, ref tempCellCoord, MyLodTypeEnum.LOD1);\n                    }\n                }\n            }\n        }\n\n        //  Return count of cells currently in the cache\n        public static int GetCachedCellsCount()\n        {\n            return m_cellsByCoordinate.Count;\n        }\n\n        //  Return capacity of this whole cache (max number of cacheable cells)\n        public static int GetCapacity()\n        {\n            return m_capacity;\n        }\n\n        //  Number of vertexes in ALL vertex buffers in ALL render cells\n        public static int GetVertexesCount()\n        {\n            int ret = 0;\n            foreach (KeyValuePair<Int64, LinkedListNode<MyVoxelCacheCellRender>> kvp in m_cellsByCoordinate)\n            {\n                foreach (MyVoxelCacheCellRenderBatch batch in kvp.Value.Value.Batches)\n                {\n                    ret += batch.VertexBufferCount;\n                }\n            }\n\n            return ret;\n        }\n\n        //  Number of indices in ALL index buffers in ALL render cells\n        public static int GetIndicesCount()\n        {\n            int ret = 0;\n            foreach (KeyValuePair<Int64, LinkedListNode<MyVoxelCacheCellRender>> kvp in m_cellsByCoordinate)\n            {\n                foreach (MyVoxelCacheCellRenderBatch batch in kvp.Value.Value.Batches)\n                {\n                    if (batch.IndexBufferCount > 0)\n                    {\n                        ret += batch.IndexBufferCount;\n                    }\n                }\n            }\n\n            return ret;\n        }\n\n        ////  Remove cell for voxel\n        //public static void RemoveCellForVoxel(MyVoxelMap voxelMap, int voxelX, int voxelY, int voxelZ)\n        //{\n        //    MyMwcVector3Int cell = voxelMap.GetVoxelCellCoordinate(voxelX, voxelY, voxelZ);\n        //    RemoveCell(voxelMap.GetVoxelMapId(), cell.X, cell.Y, cell.Z);\n        //}\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Voxels/MyVoxelCacheCellRenderBatch.cs",
    "content": "﻿using System;\nusing MinerWars.CommonLIB.AppCode.Networking;\n\nusing SharpDX;\nusing SharpDX.Direct3D9;\nusing SharpDX.Toolkit;\nusing SharpDX.Toolkit.Graphics;\n\nnamespace MinerWars.AppCode.Game.Voxels\n{\n    //  One vertexbuffer/indexbuffer stored in one cell cache. Each render cell can have more of this objects.\n    //  Each one represents one draw call. Max size of VB/IB is 32678 indices (divide it by 3 and you get triangles count).\n    class MyVoxelCacheCellRenderBatch : IComparable\n    {\n        public MyVoxelCacheCellRenderBatchType Type;\n        public MyMwcVoxelMaterialsEnum Material0;\n        public MyMwcVoxelMaterialsEnum? Material1;\n        public MyMwcVoxelMaterialsEnum? Material2;\n\n        //  For sorting batches by type and material\n        public int SortOrder;\n\n        // Unique id of (multi)material\n        public int MaterialId;\n\n        //  Index buffer (may be null if type is MULTI_MATERIAL_CLEAR)\n        public int IndexBufferCount;\n        public int IndexBufferSize;\n        public IndexBuffer IndexBuffer;\n\n        //  Vertex buffer\n        public int VertexBufferCount;\n        public int VertexBufferSize;\n        public VertexBuffer VertexBuffer;\n\n        public void UpdateSortOrder()\n        {\n            int maxMat = MyVoxelMaterials.GetMaterialsCount() + 1;\n            int matCount = MyVoxelMaterials.GetMaterialsCount() + 2;\n\n            int mats0 = (int)Material0;\n            int mats1 = (int)(Material1.HasValue ? (int)Material1.Value : maxMat);\n            int mats2 = (int)(Material2.HasValue ? (int)Material2.Value : maxMat);\n\n            //  Important is type and material/texture. Order of type is defined by enum values\n            SortOrder = ((int)Type * matCount * matCount * matCount) + mats2 * matCount * matCount + mats1 * matCount + mats0;\n            MaterialId = mats2 * matCount * matCount + mats1 * matCount + mats0;\n        }\n\n        //  For sorting batches by type and material\n        //  We want first multi-clear, then single-material and multi-material as last\n        public int CompareTo(object compareToObject)\n        {\n            MyVoxelCacheCellRenderBatch compareToBatch = (MyVoxelCacheCellRenderBatch)compareToObject;\n            return this.SortOrder.CompareTo(compareToBatch.SortOrder);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Voxels/MyVoxelCacheCellRenderHelper.cs",
    "content": "﻿using System.Collections.Generic;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Utils.VertexFormats;\nusing MinerWars.CommonLIB.AppCode.Generics;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWarsMath;\nusing System.Diagnostics;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing System;\n\nnamespace MinerWars.AppCode.Game.Voxels\n{\n    class MySingleMaterialHelper\n    {\n        //  Here we store calculated vertexes (before we send them to vertex buffer) - for single-material triangles\n        public MyVertexFormatVoxelSingleMaterial[] Vertices;\n        public int VertexCount;\n        public short[] Indices;\n        public int IndexCount;\n\n        public MyMwcVoxelMaterialsEnum Material;\n\n        //  This pre-initializes this object when preallocating, not when allocating object for specific purpose\n        public void LoadData()\n        {\n            Vertices = new MyVertexFormatVoxelSingleMaterial[MyVoxelCacheCellRenderHelper.MAX_VERTICES_COUNT];\n            Indices = new short[MyVoxelCacheCellRenderHelper.MAX_INDICES_COUNT];\n        }\n\n        public void UnloadData()\n        {\n            Vertices = null;\n            Indices = null;\n        }\n\n        //  This really starts/initializes this object\n        public void SetMaterial(MyMwcVoxelMaterialsEnum material)\n        {\n            Material = material;\n        }\n    }\n\n    class MyMultiMaterialHelper\n    {\n        public MyVertexFormatVoxelSingleMaterial[] Vertices;\n        public int VertexCount;\n\n        public MyMwcVoxelMaterialsEnum Material0;\n        public MyMwcVoxelMaterialsEnum Material1;\n        public MyMwcVoxelMaterialsEnum Material2;\n\n        public void LoadData()\n        {\n            Vertices = new MyVertexFormatVoxelSingleMaterial[MyVoxelCacheCellRenderHelper.MAX_VERTICES_COUNT];\n        }\n\n        public void UnloadData()\n        {\n            Vertices = null;\n        }\n\n        public void AddVertex(ref MyVoxelVertex vertex)//Vector3 pos, Vector3 normal, MyMwcVoxelMaterialsEnum material, float ambient)\n        {\n            var material = vertex.Material;\n            byte alphaIndex;\n            if (Material0 == material)\n                alphaIndex = 0;\n            else if (Material1 == material)\n                alphaIndex = 1;\n            else if (Material2 == material)\n                alphaIndex = 2;\n            else\n                throw new System.InvalidOperationException(\"Should not be there, invalid material\");\n\n            Vertices[VertexCount].m_positionAndAmbient = vertex.m_positionAndAmbient;\n            Vertices[VertexCount].Ambient = vertex.Ambient;\n\n#if PACKED_VERTEX_FORMAT\n            Vertices[VertexCount].m_normal = vertex.m_normal;\n#else\n            Vertices[VertexCount].Normal = vertex.Normal;\n#endif\n\n            Vertices[VertexCount].MaterialAlphaIndex = alphaIndex;\n            VertexCount++;\n        }\n\n        private bool HasMaterial(MyMwcVoxelMaterialsEnum material)\n        {\n            if(material == Material0 || material == Material1 || material == Material2)\n            {\n                return true;\n            }\n            return false;\n        }\n\n        public bool MatchMaterials(MyMwcVoxelMaterialsEnum material0, MyMwcVoxelMaterialsEnum material1, MyMwcVoxelMaterialsEnum material2)\n        {\n            return HasMaterial(material0) && HasMaterial(material1) && HasMaterial(material2);\n        }\n\n        public void SetMaterials(MyMwcVoxelMaterialsEnum mat0, MyMwcVoxelMaterialsEnum mat1, MyMwcVoxelMaterialsEnum mat2)\n        {\n            Material0 = mat0;\n            Material1 = mat1;\n            Material2 = mat2;\n        }\n    }\n\n    static class MyVoxelCacheCellRenderHelper\n    {\n        public struct MySingleMaterialIndexLookup\n        {\n            public short VertexIndex;             //  If this vertex is in the list, this is its m_notCompressedIndex \n            public int CalcCounter;               //  For knowing if vertex was calculated in this Begin/End or one of previous (or in this batch!!!)\n        }\n\n        public const int MAX_VERTICES_COUNT = short.MaxValue;           //  Max number of vertexes we can hold in vertex buffer (because we support only 16-bit m_notCompressedIndex buffer)\n        public const int MAX_INDICES_COUNT = 100000;                    //  Max number of indices we can hold in m_notCompressedIndex buffer (because we don't want to have too huge helper arrays). This number doesn't relate to 16-bit indices.\n        public const int MAX_VERTICES_COUNT_STOP = MAX_VERTICES_COUNT - 3;\n        public const int MAX_INDICES_COUNT_STOP = MAX_INDICES_COUNT - 3;\n\n        //public static bool[] FinishedSingleMaterials = new bool[MyVoxelMaterials.GetMaterialsCount()];\n        //public static Dictionary<int, bool> FinishedMultiMaterials = new Dictionary<int, bool>(MyVoxelConstants.DEFAULT_MULTIMATERIAL_CACHE_SIZE);\n\n        //static MySingleMaterialHelper m_singleMaterialHelper;\n        //static MyMultiMaterialHelper m_multiMaterialHelper;\n\n        //  For creating corect indices\n        public static MySingleMaterialIndexLookup[][] SingleMaterialIndicesLookup = new MySingleMaterialIndexLookup[MyVoxelMaterials.GetMaterialsCount()][];\n        public static int[] SingleMaterialIndicesLookupCount = new int[MyVoxelMaterials.GetMaterialsCount()];\n\n        private static MySingleMaterialHelper[] m_preallocatedSingleMaterialHelpers;\n        private static Dictionary<int, MyMultiMaterialHelper> m_preallocatedMultiMaterialHelpers;\n\n        static MyVoxelCacheCellRenderHelper()\n        {\n            for (int i = 0; i < SingleMaterialIndicesLookup.Length; i++)\n            {\n                SingleMaterialIndicesLookup[i] = new MySingleMaterialIndexLookup[MyVoxelCacheCellRenderHelper.MAX_VERTICES_COUNT];\n            }\n        }\n\n        public static void LoadData()\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyVoxelCacheCellRenderHelper.LoadData\");\n\n            MyMwcLog.WriteLine(\"MyVoxelCacheCellRenderHelper.LoadData - START\");\n            MyMwcLog.IncreaseIndent();\n\n            /*\n            if (m_singleMaterialHelper == null)\n            {\n                m_singleMaterialHelper = new MySingleMaterialHelper();\n                m_singleMaterialHelper.LoadData();\n\n                m_multiMaterialHelper = new MyMultiMaterialHelper();\n                m_multiMaterialHelper.LoadData();\n            } */\n\n            if (m_preallocatedSingleMaterialHelpers == null)\n            {\n                m_preallocatedSingleMaterialHelpers = new MySingleMaterialHelper[MyMwcUtils.GetMaxValueFromEnum<MyMwcVoxelMaterialsEnum>() + 1];\n                m_preallocatedMultiMaterialHelpers = new Dictionary<int, MyMultiMaterialHelper>();\n            }\n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyVoxelCacheCellRenderHelper.LoadData - END\");\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        public static void UnloadData()\n        {\n            foreach (var pair in m_preallocatedMultiMaterialHelpers)\n            {\n                pair.Value.UnloadData();\n            }\n            m_preallocatedMultiMaterialHelpers.Clear();\n\n            for (int i = 0; i < m_preallocatedSingleMaterialHelpers.Length; i++)\n            {\n                if (m_preallocatedSingleMaterialHelpers[i] != null)\n                {\n                    m_preallocatedSingleMaterialHelpers[i].UnloadData();\n                    m_preallocatedSingleMaterialHelpers[i] = null;\n                }\n            }\n        }\n\n        public static MySingleMaterialHelper GetForMaterial(MyMwcVoxelMaterialsEnum material)\n        {\n            if (m_preallocatedSingleMaterialHelpers[(int)material] == null)\n            {\n                m_preallocatedSingleMaterialHelpers[(int)material] = new MySingleMaterialHelper();\n                m_preallocatedSingleMaterialHelpers[(int)material].LoadData();\n                m_preallocatedSingleMaterialHelpers[(int)material].SetMaterial(material);\n            }\n\n            return m_preallocatedSingleMaterialHelpers[(int)material];\n            //m_singleMaterialHelper.SetMaterial(material);\n            //return m_singleMaterialHelper;\n        }\n\n        public static MyMultiMaterialHelper GetForMultimaterial(MyMwcVoxelMaterialsEnum material0, MyMwcVoxelMaterialsEnum material1, MyMwcVoxelMaterialsEnum material2)\n        {\n            int id = MyVoxelCacheCellRender.GetMultimaterialId(material0, material1, material2);\n            MyMultiMaterialHelper helper = null;\n            m_preallocatedMultiMaterialHelpers.TryGetValue(id, out helper);\n            if (helper == null)\n            {\n                helper = new MyMultiMaterialHelper();\n                helper.LoadData();\n                helper.SetMaterials(material0, material1, material2);\n                m_preallocatedMultiMaterialHelpers.Add(id, helper);\n            }\n            return helper;\n\n            //m_multiMaterialHelper.SetMaterials(material0, material1, material2);\n            //return m_multiMaterialHelper;\n        }\n\n        public static void Begin()\n        {\n            foreach (MySingleMaterialHelper helper in m_preallocatedSingleMaterialHelpers)\n            {\n                if (helper != null)\n                {\n                    helper.IndexCount = 0;\n                    helper.VertexCount = 0;\n                }\n            }\n\n            foreach (var pair in m_preallocatedMultiMaterialHelpers)\n            {\n                pair.Value.VertexCount = 0;\n            }\n        }\n\n        public static MySingleMaterialHelper[] GetSingleMaterialHelpers()\n        {\n            return m_preallocatedSingleMaterialHelpers;\n        }\n\n        public static Dictionary<int, MyMultiMaterialHelper> GetMultiMaterialHelpers()\n        {\n            return m_preallocatedMultiMaterialHelpers;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Voxels/MyVoxelCacheData.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Net;\nusing MinerWarsMath.Graphics.PackedVector;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Render;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Voxels;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.Utils;\n//using System.Threading;\nusing MinerWars.AppCode.Physics;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Models;\nusing BulletXNA.BulletCollision;\nusing System.Diagnostics;\nusing KeenSoftwareHouse.Library.Parallelization.Threading;\n\n//  Caching voxel cell triangles.\n//\n//  Voxel cell cache implemented as preallocated array of cached cells - that can be accessed be key (calculated from voxel map Id and cell coordinates).\n//  All methods are O(1). Class can hold cached cells for any voxel map.\n//\n//  At the beginning, cell caches are preallocated (they contain vertex buffer, etc). Later when user wants to display particular cell, he looks\n//  into the cache if that cell isn't already calculated. If yes, he gets reference and can draw its vertex buffer. If not, he asks for one preallocated\n//  cell - and he is given cell with lowest priority.\n//  After that, he updates the cell - that means, he tells he needed this cell in cache so it should be stored for future (cell is given higher priority and\n//  there is less chance it's removed in near future).\n//  If he decides to remove cell from cache (e.g. after explosion), cell is freed and marked as available for new allocation - its priority is lowered, so\n//  it's very probable it will be allocated when next time new cell will be needed.\n//\n//  Using this approach, frequently drawn cells are almost always in the cache. As user moves through the level, older cells are removed and new are added.\n//  If cell is changed, we need to invalidate it in cache and use it's place for another cell (or same).\n//  Remember: size of cache is constant, so this is sort of a better circular buffer (just with priorities, etc).\n\n\nnamespace MinerWars.AppCode.Game.Voxels\n{\n    //  One cell stored in a cache\n    class MyVoxelCacheCellData\n    {\n        public static readonly Int64 INVALID_KEY = Int64.MaxValue;\n\n        public Int64 Key;\n        public int VoxelTrianglesCount;\n        public int VoxelVerticesCount;\n        public MyVoxelTriangle[] VoxelTriangles;\n        public MyVoxelVertex[] VoxelVertices;\n        private MyOctree m_octree;\n\n        private object m_syncRoot = new object();\n\n        public MyVoxelCacheCellData()\n        {\n            Key = INVALID_KEY;\n        }\n\n        public MyOctree Octree\n        {\n            get\n            {\n                lock (m_syncRoot)\n                {\n                    if (m_octree == null && VoxelTrianglesCount > 0)\n                    {\n                        m_octree = new MyOctree();\n                        m_octree.Init(ref VoxelVertices, ref VoxelVerticesCount, ref VoxelTriangles, ref VoxelTrianglesCount, out VoxelTriangles);\n                    }\n                    return m_octree;\n                }\n            }\n        }\n\n        public void PrepareCache(MyVoxelVertex[] vertices, int vertexCount, MyVoxelTriangle[] triangles, int triangleCount)\n        {\n            lock (m_syncRoot)\n            {\n                if (vertexCount == 0)\n                {\n                    VoxelVerticesCount = 0;\n                    VoxelTrianglesCount = 0;\n                    m_octree = null;\n                    VoxelVertices = null;\n                    return;\n                }\n                MyCommonDebugUtils.AssertDebug(vertexCount <= Int16.MaxValue);\n\n                MyRender.GetRenderProfiler().StartProfilingBlock(\"build octree\");\n                if (m_octree == null)\n                    m_octree = new MyOctree();\n                m_octree.Init(ref vertices, ref vertexCount, ref triangles, ref triangleCount, out VoxelTriangles);\n                MyRender.GetRenderProfiler().EndProfilingBlock();\n\n                // copy voxel vertices\n                VoxelVertices = new MyVoxelVertex[vertexCount];\n                for (int i = 0; i < vertexCount; i++)\n                    VoxelVertices[i] = vertices[i];\n\n                // set size only after the arrays are fully allocated\n                VoxelVerticesCount = vertexCount;\n                VoxelTrianglesCount = triangleCount;\n            }\n        }\n\n        //  This methods needs to be called after every cell cache released!! It releases vertex buffer. It's important, \n        //  because when this cell cache will be associated to a new cell, not same material vertex buffer will be used so unused needs to be disposed!!\n        public void Reset()\n        {\n            lock (m_syncRoot)\n            {\n                VoxelTrianglesCount = 0;\n                VoxelTriangles = null;\n                m_octree = null;\n\n                VoxelVerticesCount = 0;\n                VoxelVertices = null;\n                Key = INVALID_KEY;\n            }\n        }\n\n        #region Serialization for cache\n\n        public void Write(BinaryWriter binaryWriter)\n        {\n            // triangles\n            MyMwcMessageOut.WriteInt32(VoxelTrianglesCount, binaryWriter);\n            for (int i = 0; i < VoxelTrianglesCount; i++)\n            {\n                MyDataCellReadWriteHelper.WriteVoxelTriangle(VoxelTriangles[i], binaryWriter);\n            }\n\n            // vertices\n            MyMwcMessageOut.WriteInt32(VoxelVerticesCount, binaryWriter);\n            for (int i = 0; i < VoxelVerticesCount; i++)\n            {\n                MyDataCellReadWriteHelper.WriteVoxelVertex(VoxelVertices[i], binaryWriter);\n            }\n        }\n\n        public bool Read(BinaryReader binaryReader, EndPoint senderEndPoint)\n        {\n            //  triangles\n            int? voxelTrianglesCount = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);\n            if (voxelTrianglesCount == null)\n                return false;\n            VoxelTrianglesCount = voxelTrianglesCount.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"voxelTrianglesCount: \" + VoxelTrianglesCount);\n            VoxelTriangles = new MyVoxelTriangle[VoxelTrianglesCount];\n            for (int i = 0; i < VoxelTrianglesCount; i++)\n            {\n                var voxelTriangle = MyDataCellReadWriteHelper.ReadVoxelTriangleEx(binaryReader, senderEndPoint);\n                if (voxelTriangle == null)\n                    return false;\n                VoxelTriangles[i] = voxelTriangle.Value;\n            }\n\n            // vertices\n            int? voxelVerticesCount = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);\n            if (voxelVerticesCount == null)\n                return false;\n            VoxelVerticesCount = voxelVerticesCount.Value;\n            MyMwcLog.IfNetVerbose_AddToLog(\"voxelVerticesCount: \" + VoxelVerticesCount);\n            VoxelVertices = new MyVoxelVertex[VoxelVerticesCount];\n            for (int i = 0; i < VoxelVerticesCount; i++)\n            {\n                var voxelVertex = MyDataCellReadWriteHelper.ReadVoxelVertexEx(binaryReader, senderEndPoint);\n                if (voxelVertex == null)\n                    return false;\n                VoxelVertices[i] = voxelVertex.Value;\n            }\n\n            return true;\n        }\n\n        #endregion\n    }\n\n    //  Container of all cells stored in voxel cache\n    static class MyVoxelCacheData\n    {\n        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\n        //  Access cached cell by key\n        static Dictionary<Int64, LinkedListNode<MyVoxelCacheCellData>> m_cellsByCoordinate = null;\n\n        //  Here we preallocate cell caches\n        static MyVoxelCacheCellData[] m_cellsPreallocated = null;\n\n        //  Linked list used to allocate, remove and update voxel cell in O(1) time.\n        static LinkedList<MyVoxelCacheCellData> m_priority;\n        static LinkedListNode<MyVoxelCacheCellData>[] m_priorityArray;\n\n        public static FastResourceLock Locker = new FastResourceLock();\n\n        //private static SpinLock m_spinLock;\n\n        //  Capacity of this cell cache\n        static int m_capacity;\n\n        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\n        static MyVoxelCacheData()\n        {\n            m_capacity = MyVoxelConstants.VOXEL_DATA_CELL_CACHE_SIZE;\n            m_cellsByCoordinate = new Dictionary<Int64, LinkedListNode<MyVoxelCacheCellData>>(m_capacity);\n            m_priority = new LinkedList<MyVoxelCacheCellData>();\n            m_priorityArray = new LinkedListNode<MyVoxelCacheCellData>[m_capacity];\n            m_cellsPreallocated = new MyVoxelCacheCellData[m_capacity];\n            for (int i = 0; i < m_capacity; i++)\n            {\n                m_cellsPreallocated[i] = new MyVoxelCacheCellData();\n                m_priorityArray[i] = new LinkedListNode<MyVoxelCacheCellData>(m_cellsPreallocated[i]);\n                m_priority.AddLast(m_priorityArray[i]);\n            }\n        }\n\n        public static void LoadData()\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyVoxelCacheData.LoadData\");\n\n            m_cellsByCoordinate.Clear();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        public static void UnloadData()\n        {\n            m_cellsByCoordinate.Clear();\n            \n            for (int i = 0; i < m_capacity; i++)\n            {\n                m_cellsPreallocated[i].Reset();\n            }\n        }\n\n        //  Initialized new voxel cell cache. Capacity specified count of voxel cells in the cache.\n        public static void LoadContent()\n        {\n            MyMwcLog.WriteLine(\"MyVoxelCacheData.LoadContent() - START\");\n            MyMwcLog.IncreaseIndent();\n\n\n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyVoxelCacheData.LoadContent() - END\");\n        }\n\n        public static void UnloadContent()\n        {\n            MyMwcLog.WriteLine(\"MyVoxelCacheData.UnloadContent - START\");\n            MyMwcLog.IncreaseIndent();\n\n            for (int i = 0; i < m_cellsPreallocated.Length; i++)\n            {\n                if (m_cellsPreallocated[i] != null)\n                {\n                    //resets vertex buffers\n                    m_cellsPreallocated[i].Reset();\n                }\n            }\n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyVoxelCacheData.UnloadContent - END\");\n        }\n\n        //  Get cell from cache. If cell isn't in the cache, we try to precalc it. But first we check if cell can contain any triangleVertexes.\n        //  If no, null is returned. Otherwise we run precalc on it and store it in the cache.\n        //  Recap: \n        //      - we return null if cell doesn't contain triangles and because of this it isn't in the cache\n        //      - otherwise we return correct cached cell (with triangles)\n        public static MyVoxelCacheCellData GetCell(MyVoxelMap voxelMap, ref MyMwcVector3Int cellCoord, bool createTriangles = true)\n        {\n            MyVoxelCacheCellData cachedDataCell;\n\n            lock (Locker)\n            {\n                cachedDataCell = GetCellFromCache(voxelMap.VoxelMapId, ref cellCoord);\n\n                //  If cell isn't in the cache yet\n                if (cachedDataCell == null && createTriangles)\n                {\n                    //  If cell and its neighborhood is completely full or completely empty, result of precalc will be zero-triangles, so we can skip precalc.\n                    //  It can speedup precalc because then we don't have to check every voxel\n                    if (voxelMap.IsDataCellCompletelyFullOrCompletelyEmpty(ref cellCoord) == false)\n                    {\n\n                        //  Cell may have triangles, so add it to cache and run precalc\n                        cachedDataCell = AddCell(voxelMap.VoxelMapId, ref cellCoord);\n\n                        MyVoxelPrecalc.PrecalcImmediatelly(\n                            new MyVoxelPrecalcTaskItem(\n                                MyLodTypeEnum.LOD0,\n                                voxelMap,\n                                cachedDataCell,\n                                new MyMwcVector3Int(\n                                    cellCoord.X * MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS,\n                                    cellCoord.Y * MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS,\n                                    cellCoord.Z * MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS)));\n                    }\n                }\n\n                //  I commented out this condition \"(cachedDataCell != null)\" because now I think we want to move-up in priority list\n                //  all data cells, independently of whether they contain or don't contain triangles\n                if (cachedDataCell != null)\n                {\n                    UpdateCell(voxelMap.VoxelMapId, ref cellCoord);\n                }\n            }\n\n            return cachedDataCell;\n        }\n\n        //  This method does same thing as GetCell(), but doesn't do it now or immediately. \n        //  Instead it adds data cells that are needed to be precalculated to the queue so later they can be calculated on multiple cores.\n        public static MyVoxelCacheCellData GetCellLater(MyVoxelMap voxelMap, ref MyMwcVector3Int cellCoord)\n        {\n            lock (Locker)\n            {\n                MyVoxelCacheCellData cachedDataCell = GetCellFromCache(voxelMap.VoxelMapId, ref cellCoord);\n\n                //  If cell isn't in the cache yet\n                if (cachedDataCell == null)\n                {\n                    //  If cell and its neighborhood is completely full or completely empty, result of precalc will be zero-triangles, so we can skip precalc.\n                    //  It can speedup precalc because then we don't have to check every voxel\n                    if (voxelMap.IsDataCellCompletelyFullOrCompletelyEmpty(ref cellCoord) == false)\n                    {\n                        //  Cell may have triangles, so add it to cache and run precalc\n                        cachedDataCell = AddCell(voxelMap.VoxelMapId, ref cellCoord);\n\n                        MyVoxelPrecalc.AddToQueue(MyLodTypeEnum.LOD0, voxelMap, cachedDataCell, cellCoord.X * MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS, cellCoord.Y * MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS, cellCoord.Z * MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS);\n                    }\n                }\n\n                //  I commented out this condition \"(cachedDataCell != null)\" because now I think we want to move-up in priority list\n                //  all data cells, independently of whether they contain or don't contain triangles\n                if (cachedDataCell != null)\n                {\n                    UpdateCell(voxelMap.VoxelMapId, ref cellCoord);\n                }\n\n                return cachedDataCell;\n            }\n        }\n\n        //  Gets cell from the cache. If cell isn't in the cache, null is returned.\n        //  This is only lookup into hashtable. No precalc is made here.\n        public static MyVoxelCacheCellData GetCellFromCache(int voxelMapId, ref MyMwcVector3Int cellCoord)\n        {\n            Int64 key = MyVoxelMaps.GetCellHashCode(voxelMapId, ref cellCoord, MyLodTypeEnum.LOD0);\n\n            LinkedListNode<MyVoxelCacheCellData> ret;\n            if (m_cellsByCoordinate.TryGetValue(key, out ret) == true)\n            {\n                return ret.Value;\n            }\n\n            return null;\n        }\n\n        //  Add cell into cache and returns reference to it. Cache item with lowest priority is choosen.\n        //  Call this method when you want allocate new item in the cache.\n        public static MyVoxelCacheCellData AddCell(int voxelMapId, ref MyMwcVector3Int cellCoord)\n        {\n            Int64 key = MyVoxelMaps.GetCellHashCode(voxelMapId, ref cellCoord, MyLodTypeEnum.LOD0);\n\n            //  Cache item with lowest priority is choosen.\n            LinkedListNode<MyVoxelCacheCellData> first = m_priority.First;\n            m_priority.RemoveFirst();\n            if (first.Value.Key != MyVoxelCacheCellData.INVALID_KEY)\n                m_cellsByCoordinate.Remove(first.Value.Key);\n\n            m_priority.AddLast(first);\n            m_cellsByCoordinate.Add(key, first);\n            first.Value.Key = key;\n\n            //  You have exceeded the capacity of DATA cells cache. Thats serious bug!\n            MyCommonDebugUtils.AssertDebug(m_cellsByCoordinate.Count <= m_capacity);\n\n            return first.Value;\n        }\n\n        //  Remove cell - after voxels were changed, etc.\n        public static void RemoveCell(int voxelMapId, ref MyMwcVector3Int cellCoord)\n        {\n            using (Locker.AcquireExclusiveUsing()) \n            {\n                lock (Locker)\n                {\n                    Int64 key = MyVoxelMaps.GetCellHashCode(voxelMapId, ref cellCoord, MyLodTypeEnum.LOD0);\n\n                    //  If cell is in cache, we remove it from dictionary and move it to the beginning of priority linked list\n                    LinkedListNode<MyVoxelCacheCellData> ret;\n                    if (m_cellsByCoordinate.TryGetValue(key, out ret) == true)\n                    {\n                        m_cellsByCoordinate.Remove(key);\n\n                        //  Dispose vertex buffers\n                        ret.Value.Reset();\n\n                        //  Move it to the beginning of priority linked list\n                        m_priority.Remove(ret);\n                        m_priority.AddFirst(ret);\n                    }\n                }\n            }\n        }\n\n        //  Update cell - immediately after it was last time used. It will get higher priority and won't be flushed when AddCell() called next time.\n        public static void UpdateCell(int voxelMapId, ref MyMwcVector3Int cellCoord)\n        {\n            //bool lockTaken = false;\n            //try\n            //{\n            //    m_spinLock.Enter(ref lockTaken);\n\n            lock (Locker)\n            {\n                Int64 key = MyVoxelMaps.GetCellHashCode(voxelMapId, ref cellCoord, MyLodTypeEnum.LOD0);\n                LinkedListNode<MyVoxelCacheCellData> cell = m_cellsByCoordinate[key];\n\n                //  Move it to the end of priority linked list\n                m_priority.Remove(cell);\n                m_priority.AddLast(cell);\n            }\n            //}\n            //finally\n            //{\n            //    if (lockTaken) m_spinLock.Exit();\n            //}\n        }\n\n        //  Remove cell for voxels specified be min/max corner. Used after explosion when we want to remove a lot of voxels/cell from cache.\n        //  This is efficient method, because it doesn't invalidate cache after every voxel change.\n        //  Method knows that adjacent cells need to be removed too (because of MCA), so it invalidates them too.\n        public static void RemoveCellForVoxels(MyVoxelMap voxelMap, MyMwcVector3Int minVoxel, MyMwcVector3Int maxVoxel)\n        {\n            //  Calculate voxel for boundary things...\n            MyMwcVector3Int maxCornerExt = new MyMwcVector3Int(maxVoxel.X + 1, maxVoxel.Y + 1, maxVoxel.Z + 1);\n            if (maxCornerExt.X > voxelMap.SizeMinusOne.X) maxCornerExt.X = voxelMap.SizeMinusOne.X;\n            if (maxCornerExt.Y > voxelMap.SizeMinusOne.Y) maxCornerExt.Y = voxelMap.SizeMinusOne.Y;\n            if (maxCornerExt.Z > voxelMap.SizeMinusOne.Z) maxCornerExt.Z = voxelMap.SizeMinusOne.Z;\n\n            //  Min/max cell\n            MyMwcVector3Int minCell = voxelMap.GetDataCellCoordinate(ref minVoxel);\n            MyMwcVector3Int maxCell = voxelMap.GetDataCellCoordinate(ref maxCornerExt);\n\n            //  Invalidate cells\n            MyMwcVector3Int tempCellCoord;\n            for (tempCellCoord.X = minCell.X; tempCellCoord.X <= maxCell.X; tempCellCoord.X++)\n            {\n                for (tempCellCoord.Y = minCell.Y; tempCellCoord.Y <= maxCell.Y; tempCellCoord.Y++)\n                {\n                    for (tempCellCoord.Z = minCell.Z; tempCellCoord.Z <= maxCell.Z; tempCellCoord.Z++)\n                    {\n                        RemoveCell(voxelMap.VoxelMapId, ref tempCellCoord);\n                    }\n                }\n            }\n        }\n\n        //  Return count of cells currently in the cache\n        public static int GetCachedCellsCount()\n        {\n            return m_cellsByCoordinate.Count;\n        }\n\n        //  Return capacity of this whole cache (max number of cacheable cells)\n        public static int GetCapacity()\n        {\n            return m_capacity;\n        }\n\n        ////  Remove cell for voxel\n        //public static void RemoveCellForVoxel(MyVoxelMap voxelMap, int voxelX, int voxelY, int voxelZ)\n        //{\n        //    MyMwcVector3Int cell = voxelMap.GetVoxelCellCoordinate(voxelX, voxelY, voxelZ);\n        //    RemoveCell(voxelMap.GetVoxelMapId(), cell.X, cell.Y, cell.Z);\n        //}\n    }\n\n    static class MyDataCellReadWriteHelper\n    {\n        public static void WriteVoxelTriangle(MyVoxelTriangle voxelTriangle, BinaryWriter binaryWriter)\n        {\n            binaryWriter.Write(voxelTriangle.VertexIndex0);\n            binaryWriter.Write(voxelTriangle.VertexIndex1);\n            binaryWriter.Write(voxelTriangle.VertexIndex2);\n        }\n\n        public static void WriteVoxelVertex(MyVoxelVertex voxelVertex, BinaryWriter binaryWriter)\n        {\n            MyMwcMessageOut.WriteVoxelMaterialsEnum(voxelVertex.Material, binaryWriter);\n            MyMwcMessageOut.WriteByte4(voxelVertex.m_normal, binaryWriter);\n            binaryWriter.Write(voxelVertex.m_positionAndAmbient.packed_value);\n        }\n\n        public static MyVoxelTriangle? ReadVoxelTriangleEx(BinaryReader binaryReader, EndPoint senderEndPoint)\n        {\n            try\n            {\n                MyVoxelTriangle result;\n                result.VertexIndex0 = MyMwcMessageIn.ReadInt16(binaryReader);\n                result.VertexIndex1 = MyMwcMessageIn.ReadInt16(binaryReader);\n                result.VertexIndex2 = MyMwcMessageIn.ReadInt16(binaryReader);\n                return result;\n            }\n            catch (Exception)\n            {\n                return null;\n            }\n        }\n\n        public static MyVoxelVertex? ReadVoxelVertexEx(BinaryReader binaryReader, EndPoint senderEndPoint)\n        {\n            MyMwcVoxelMaterialsEnum? voxelMaterial = MyMwcMessageIn.ReadVoxelMaterialsEnumEx(binaryReader, senderEndPoint);\n            Byte4? normal = MyMwcMessageIn.ReadByte4Ex(binaryReader, senderEndPoint);\n            UInt64? positionAndAmbient = MyMwcMessageIn.ReadUInt64Ex(binaryReader, senderEndPoint);\n\n            if (voxelMaterial.HasValue && normal.HasValue && positionAndAmbient.HasValue)\n            {\n                MyVoxelVertex result = new MyVoxelVertex\n                    {\n                        Material = voxelMaterial.Value,\n                        m_normal = normal.Value,\n                        m_positionAndAmbient = { packed_value = positionAndAmbient.Value }\n                    };\n                return result;\n            }\n\n            return null;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Voxels/MyVoxelContentCell.cs",
    "content": "﻿using System.Collections.Generic;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils.Utils;\n\n//  This class holds data about voxel cell, but doesn't hold content of each voxel. That's in MyVoxelCellContent.\n\nnamespace MinerWars.AppCode.Game.Voxels\n{\n    //  This enum tells us if cell is 100% empty, 100% full or mixed (some voxels are full, some empty, some are something between)\n    enum MyVoxelCellType : byte\n    {\n        EMPTY,\n        FULL,\n        MIXED\n    }\n\n    class MyVoxelContentCell\n    {\n        //  Cell type. Default is FULL.\n        public MyVoxelCellType CellType { get; private set; }\n        \n        //  Reference to cell's content (array of voxel values). Only if cell type is MIXED.\n        LinkedListNode<MyVoxelContentCellContent> m_cellContent = null;\n\n        //  Sums all voxel values. Default is summ of all full voxel in cell, so by subtracting we can switch cell from MIXED to EMPTY.\n        int m_voxelContentSum;\n\n\n        public MyVoxelContentCell()\n        {\n            //  Default cell is FULL\n            CellType = MyVoxelCellType.FULL;         \n\n            //  Sums all voxel values. Default is summ of all full voxel in cell, so be subtracting we can switch cell from MIXED to EMPTY.\n            m_voxelContentSum = MyVoxelConstants.VOXEL_CELL_CONTENT_SUM_TOTAL;\n        }\n\n        //  Voxel at specified coordinate 'x, y, z' sets to value 'content'. Coordinates are relative to voxel cell\n        //  IMPORTANT: Do not call this method directly! Always call it through MyVoxelMap.SetVoxelContent()\n        public void SetVoxelContent(byte content, ref MyMwcVector3Int voxelCoordInCell)\n        {\n            //MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"QuantizedValue\");\n            content = MyVoxelContentCellContent.QuantizedValue(content);\n            //MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            if (MyFakes.MWCURIOSITY)\n            {\n                if (content > MyVoxelConstants.VOXEL_ISO_LEVEL)\n                {\n                    content = MyVoxelConstants.VOXEL_CONTENT_FULL;\n                }\n                else\n                {\n                    content = MyVoxelConstants.VOXEL_CONTENT_EMPTY;\n                }\n            }\n\n\n            if (CellType == MyVoxelCellType.FULL)\n            {\n                if (content == MyVoxelConstants.VOXEL_CONTENT_FULL)\n                {\n                    //  Nothing is changing\n                    return;\n                }\n                else\n                {\n                    //MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"FULL:CheckCellType\");\n                    m_voxelContentSum -= (MyVoxelConstants.VOXEL_CONTENT_FULL - content);\n                    CheckCellType();\n                    //MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n                    //  If this cell is mixed, we change voxel's value in the cell content array, but first allocate the array\n                    if (CellType == MyVoxelCellType.MIXED)\n                    {\n                        //MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"FULL:MyVoxelCellType.MIXED\");\n                        \n                        m_cellContent = MyVoxelContentCellContents.Allocate();\n                        if (m_cellContent != null)\n                        {\n                            m_cellContent.Value.Reset(MyVoxelConstants.VOXEL_CONTENT_FULL);\n                            m_cellContent.Value.SetVoxelContent(content, ref voxelCoordInCell);\n                        }\n                        //MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n                    }\n                }\n            }\n            else if (CellType == MyVoxelCellType.EMPTY)\n            {\n                if (content == MyVoxelConstants.VOXEL_CONTENT_EMPTY)\n                {\n                    //  Nothing is changing\n                    return;\n                }\n                else\n                {\n                    //MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"EMPTY:CheckCellType\");\n                    m_voxelContentSum += content;\n                    CheckCellType();\n                    //MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n                    //  If this cell is mixed, we change voxel's value in the cell content array, but first allocate the array\n                    if (CellType == MyVoxelCellType.MIXED)\n                    {\n                        //MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"EMPTY:MyVoxelCellType.MIXED\");\n                        m_cellContent = MyVoxelContentCellContents.Allocate();\n                        if (m_cellContent != null)\n                        {\n                            m_cellContent.Value.Reset(MyVoxelConstants.VOXEL_CONTENT_EMPTY);\n                            m_cellContent.Value.SetVoxelContent(content, ref voxelCoordInCell);\n                        }\n                        //MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n                    }\n                }\n            }\n            else if (CellType == MyVoxelCellType.MIXED)\n            {\n                if (m_cellContent == null)\n                {\n                    return;\n                }\n                //MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyVoxelCellType.MIXED\");\n                //  Check for previous content value not only for optimisation, but because we need to know how much it changed\n                //  for calculating whole cell content summary.\n                byte previousContent = m_cellContent.Value.GetVoxelContent(ref voxelCoordInCell);\n                //MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n                if (previousContent == content)\n                {\n                    //  New value is same as current, so nothing needs to be changed\n                    return;\n                }\n\n                m_voxelContentSum -= previousContent - content;\n                CheckCellType();\n\n                //  If this cell is still mixed, we change voxel's value in the cell content array\n                if (CellType == MyVoxelCellType.MIXED)\n                {\n                    //MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MIXED:MyVoxelCellType.MIXED\");\n                    m_cellContent.Value.SetVoxelContent(content, ref voxelCoordInCell);\n                    //MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n                }\n            }\n            else\n            {\n                throw new MyMwcExceptionApplicationShouldNotGetHere();\n            }\n        }\n\n        // Set voxel content for the whole cell.\n        public void SetAllVoxelContents(byte[] buffer)\n        {\n            // quantize the buffer and compute sum\n            m_voxelContentSum = 0;\n            for (int i = 0; i < buffer.Length; i++)\n            {\n                buffer[i] = MyVoxelContentCellContent.QuantizedValue(buffer[i]);\n                m_voxelContentSum += buffer[i];\n            }\n\n            // mixed-->empty/full: deallocate\n            // empty/full-->mixed: allocate\n            // mixed: fill with values from buffer\n            if (m_voxelContentSum == 0)\n            {\n                if (CellType == MyVoxelCellType.MIXED) Deallocate();\n                CellType = MyVoxelCellType.EMPTY;\n            }\n            else if (m_voxelContentSum == MyVoxelConstants.VOXEL_CELL_CONTENT_SUM_TOTAL)\n            {\n                if (CellType == MyVoxelCellType.MIXED) Deallocate();\n                CellType = MyVoxelCellType.FULL;\n            }\n            else\n            {\n                if (CellType == MyVoxelCellType.FULL || CellType == MyVoxelCellType.EMPTY) m_cellContent = MyVoxelContentCellContents.Allocate();\n                if (m_cellContent != null)\n                {\n                    m_cellContent.Value.SetAddVoxelContents(buffer);\n                }\n                CellType = MyVoxelCellType.MIXED;\n            }\n        }\n\n        \n        //  Coordinates are relative to voxel cell\n        //  IMPORTANT: Input variable 'voxelCoordInCell' is 'ref' only for optimization. Never change its value in the method!!!\n        public byte GetVoxelContent(ref MyMwcVector3Int voxelCoordInCell)\n        {\n            if (CellType == MyVoxelCellType.EMPTY)\n            {\n                //  Cell is empty, therefore voxel must be empty too.\n                return MyVoxelConstants.VOXEL_CONTENT_EMPTY;\n            }\n            else if (CellType == MyVoxelCellType.FULL)\n            {\n                //  Cell is full, therefore voxel must be full too.\n                return MyVoxelConstants.VOXEL_CONTENT_FULL;\n            }\n            else\n            {\n                //  If cell is mixed, get voxel's content from the cell's content.\n                //  Content was allocated before, we don't need to do it now (or even check it).\n                if (m_cellContent != null)\n                {\n                    return m_cellContent.Value.GetVoxelContent(ref voxelCoordInCell);\n                }\n\n                return 0;\n            }\n        }\n\n        //  This method helps us to maintain correct cell type even after removing or adding voxels from cell\n        //  If all voxels were removed from this cell, we change its type to from MIXED to EMPTY.\n        //  If voxels were added, we change its type to from EMPTY to MIXED.\n        //  If voxels were added to full, we change its type to FULL.\n        void CheckCellType()\n        {\n            //  Voxel cell content sum isn't in allowed range. Probably increased or descreased too much.\n            System.Diagnostics.Debug.Assert((m_voxelContentSum >= 0) && (m_voxelContentSum <= MyVoxelConstants.VOXEL_CELL_CONTENT_SUM_TOTAL));\n\n            if (m_voxelContentSum == 0)\n            {\n                CellType = MyVoxelCellType.EMPTY;\n            }\n            else if (m_voxelContentSum == MyVoxelConstants.VOXEL_CELL_CONTENT_SUM_TOTAL)\n            {\n                CellType = MyVoxelCellType.FULL;\n            }\n            else\n            {\n                CellType = MyVoxelCellType.MIXED;\n            }\n\n            //  If cell changed from MIXED to EMPTY or FULL, we will release it's cell content because it's not needed any more\n            if ((CellType == MyVoxelCellType.EMPTY) || (CellType == MyVoxelCellType.FULL))\n            {\n                Deallocate();\n            }\n        }\n\n        public byte GetAverageContent()\n        {\n            return (byte)(m_voxelContentSum / MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS_TOTAL);\n        }\n\n        public int GetVoxelContentSum()\n        {\n            return m_voxelContentSum;\n        }\n\n        public void SetToEmpty()\n        {\n            CellType = MyVoxelCellType.EMPTY;\n            m_voxelContentSum = 0;\n\n            CheckCellType();\n        }\n\n        public void SetToFull()\n        {\n            CellType = MyVoxelCellType.FULL;\n            m_voxelContentSum = MyVoxelConstants.VOXEL_CELL_CONTENT_SUM_TOTAL;\n\n            CheckCellType();\n        }\n        \n        public void Deallocate()\n        {\n            if (m_cellContent != null)\n            {\n                //m_cellContent.Value.NeedReset = true;\n                MyVoxelContentCellContents.Deallocate(m_cellContent);\n                m_cellContent = null;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Voxels/MyVoxelContentCellContent.cs",
    "content": "﻿using MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing System;\n\n//  This class holds array of voxels in a cell. It is allocated only when voxel changes status from empty or full to mixed.\n//  This class is just array, nothing else.\n\nnamespace MinerWars.AppCode.Game.Voxels\n{\n    class MyVoxelContentCellContent\n    {\n        const int xStep = MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS * MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS;\n        const int yStep = MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS;\n        const int zStep = 1;\n        const int TOTAL_VOXEL_COUNT = MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS * MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS * MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS;\n\n        const int QUANTIZATION_BITS = 3;                   // number of bits kept\n        \n        const int THROWAWAY_BITS = 8 - QUANTIZATION_BITS;  // number of bits thrown away\n\n        // Values quantized to (8 - QUANTIZATION_BITS) with correct smearing of significant bits.\n        // Example: 3 significant bits\n        //   000xxxxx -> 0000000   001xxxxx -> 0010010   010xxxxx -> 0100100   011xxxxx -> 0110110\n        //   100xxxxx -> 1001001   101xxxxx -> 1011011   110xxxxx -> 1101101   111xxxxx -> 1111111\n        // It's important to return 255 for max value and 0 for min value.\n        static byte[] m_smearBits;\n\n        static MyVoxelContentCellContent()\n        {\n            m_smearBits = new byte[1 << QUANTIZATION_BITS];\n            for (uint i = 0; i < 1 << QUANTIZATION_BITS; i++)\n            {\n                uint value = i << THROWAWAY_BITS;\n\n                // smear bits\n                value = value + (value >> QUANTIZATION_BITS);\n                if (QUANTIZATION_BITS < 4)\n                {\n                    value = value + (value >> QUANTIZATION_BITS * 2);\n                    if (QUANTIZATION_BITS < 2)\n                        value = value + (value >> QUANTIZATION_BITS * 4);\n                }\n\n                m_smearBits[i] = (byte)value;\n            }\n        }\n\n        public static byte QuantizedValue(byte content)\n        {\n            unchecked\n            {\n                return m_smearBits[content >> THROWAWAY_BITS];\n            }\n        }\n\n        \n        byte[] m_packed;\n\n        public MyVoxelContentCellContent()\n        {\n            // round number of bytes up, add 1 for quantizations with bits split into different bytes\n            m_packed = new byte[(TOTAL_VOXEL_COUNT * QUANTIZATION_BITS + 7) / 8 + 1];\n            Reset(MyVoxelConstants.VOXEL_CONTENT_FULL);\n        }\n\n        //  Reset all voxels in this content to specified value. Original version was reseting to full only, but now we need reseting to empty too.\n        //  Old: By default all voxels are full\n        //      This method must be called in constructor and then everytime we allocate this content after it was deallocated before.\n        //      So, when this content is used first time, it's freshly reseted by constructor. If later we deallocate it and then\n        //      more later allocate again, we have to reset it so it contains only full voxels again.\n        public void Reset(byte resetToContent)\n        {\n            if (resetToContent == MyVoxelConstants.VOXEL_CONTENT_FULL)\n                for (int i = 0; i < m_packed.Length; i++)\n                    m_packed[i] = 255;\n            else if (resetToContent == MyVoxelConstants.VOXEL_CONTENT_EMPTY)\n                Array.Clear(m_packed, 0, m_packed.Length);\n            else\n            {\n                MyMwcVector3Int position;\n                for (position.X = 0; position.X < MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS; position.X++)\n                    for (position.Y = 0; position.Y < MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS; position.Y++)\n                        for (position.Z = 0; position.Z < MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS; position.Z++)\n                            SetVoxelContent(resetToContent, ref position);\n            }\n        }\n\n        static uint[] m_bitmask = {\n            ~((255u >> THROWAWAY_BITS) << 0), ~((255u >> THROWAWAY_BITS) << 1), ~((255u >> THROWAWAY_BITS) << 2), ~((255u >> THROWAWAY_BITS) << 3),\n            ~((255u >> THROWAWAY_BITS) << 4), ~((255u >> THROWAWAY_BITS) << 5), ~((255u >> THROWAWAY_BITS) << 6), ~((255u >> THROWAWAY_BITS) << 7),\n        };\n\n\n        public void SetAddVoxelContents(byte[] contents)\n        {\n            unchecked\n            {\n                // for QUANTIZATION_BITS == 8 we can just do System.Buffer.BlockCopy\n\n                Array.Clear(m_packed, 0, m_packed.Length); \n\n                for (int bitadr = 0, adr = 0; bitadr < MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS_TOTAL * QUANTIZATION_BITS; bitadr += QUANTIZATION_BITS, adr++)\n                {\n                    int byteadr = bitadr >> 3;\n                    uint c = ((uint)contents[adr] >> THROWAWAY_BITS) << (bitadr & 7);\n                    m_packed[byteadr] |= (byte)c;\n                    m_packed[byteadr + 1] |= (byte)(c >> 8);  // this needs to be done only for QUANTIZATION_BITS == 1,2,4,8\n                }\n            }\n        }\n\n\n        //  Voxel at specified coordinate 'x, y, z' sets to value 'content'\n        //  Coordinates are relative to voxel cell\n        public void SetVoxelContent(byte content, ref MyMwcVector3Int voxelCoordInCell)\n        {\n            //if (!CheckVoxelCoord(ref voxelCoordInCell)) return;\n\n            //MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyVxlContent::SetVoxelContent\");\n\n            unchecked\n            {\n                // for QUANTIZATION_BITS == 8: m_packed[voxelCoordInCell.X * xStep + voxelCoordInCell.Y * yStep + voxelCoordInCell.Z * zStep] = content;\n                int bitadr = (voxelCoordInCell.X * xStep + voxelCoordInCell.Y * yStep + voxelCoordInCell.Z * zStep) * QUANTIZATION_BITS;\n                int bit = bitadr & 7;\n                int byteadr = bitadr >> 3;\n                uint c = ((uint)content >> THROWAWAY_BITS) << bit;\n                m_packed[byteadr] = (byte)(m_packed[byteadr] & m_bitmask[bit] | c);\n                m_packed[byteadr + 1] = (byte)(m_packed[byteadr + 1] & m_bitmask[bit] >> 8 | c >> 8);   // this needs to be done only for QUANTIZATION_BITS == 1,2,4,8\n            }\n\n            //MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        //  Coordinates are relative to voxel cell\n        //  IMPORTANT: Input variable 'voxelCoordInCell' is 'ref' only for optimization. Never change its value in the method!!!\n        public byte GetVoxelContent(ref MyMwcVector3Int voxelCoordInCell)\n        {\n            if (!CheckVoxelCoord(ref voxelCoordInCell)) return 0;\n\n            unchecked\n            {\n                // for QUANTIZATION_BITS == 8: return m_packed[voxelCoordInCell.X * xStep + voxelCoordInCell.Y * yStep + voxelCoordInCell.Z * zStep];\n                int bitadr = (voxelCoordInCell.X * xStep + voxelCoordInCell.Y * yStep + voxelCoordInCell.Z * zStep) * QUANTIZATION_BITS;\n                int byteadr = bitadr >> 3;\n                uint value = m_packed[byteadr] + ((uint)m_packed[byteadr + 1] << 8);  // QUANTIZATION_BITS == 1,2,4,8: value = (uint)m_packed[bitadr >> 3];\n                return m_smearBits[(value >> (bitadr & 7)) & (255 >> THROWAWAY_BITS)];\n            }\n        }\n\n        private bool CheckVoxelCoord(ref MyMwcVector3Int cellCoord)\n        {\n            return (uint)(cellCoord.X | cellCoord.Y | cellCoord.Z) < (uint)MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS;  // VOXEL_DATA_CELL_SIZE_IN_VOXELS must be a power of 2\n            /*\n            return (cellCoord.X >= 0 && cellCoord.Y >= 0 && cellCoord.Z >= 0) &&\n                (cellCoord.X < MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS && cellCoord.Y < MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS && cellCoord.Z < MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS);\n            */\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Voxels/MyVoxelContentCellContents.cs",
    "content": "﻿using System.Collections.Generic;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.Generics;\nusing SysUtils.Utils;\n\n//  This STATIC class is buffer of preallocated voxel contents.\n//  It is used only if we are switching cell from type FULL to EMPTY or MIXED.\n//  We never release cell content, even if it becomes EMPTY (so basicaly it isn't needed more).\n\nnamespace MinerWars.AppCode.Game.Voxels\n{\n    static class MyVoxelContentCellContents\n    {\n        //static int m_capacity = 0;\n\n        //  Preallocated cell contents. This is buffer from which we get new cell content if needed (when changing from FULL to MIXED or EMPTY)\n        //static MyVoxelCellContent[] m_preallocatedContents = null;\n        static MyObjectsPool<MyVoxelContentCellContent> m_preallocatedContents;\n\n        //  Index of next content from buffer we will give when asked\n        //static int m_nextForAllocation;\n\n\n        public static void LoadData()\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyVoxelContentCellContents.LoadData\");\n            if (m_preallocatedContents == null) // Never reallocate\n            {\n                m_preallocatedContents = new MyObjectsPool<MyVoxelContentCellContent>(MyVoxelConstants.PREALLOCATED_CELL_CONTENTS_COUNT);\n            }\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        public static void UnloadData()\n        {\n            m_preallocatedContents.DeallocateAll();\n            //m_preallocatedContents = null;\n        }\n\n        //  Get new preallocated content from the buffer.\n        //  We don't check for size, because it must be done by higher game logic (reinicializing too destroyed level).\n        public static LinkedListNode<MyVoxelContentCellContent> Allocate()\n        {\n            return m_preallocatedContents.AllocateEx();\n\n            ////  Get content from preallocated buffer and increase m_notCompressedIndex for following allocation\n            //MyVoxelCellContent ambient = m_preallocatedContents[m_nextForAllocation];\n            //m_nextForAllocation++;\n            //return ambient;\n        }\n\n        public static void Deallocate(LinkedListNode<MyVoxelContentCellContent> item)\n        {\n            m_preallocatedContents.MarkForDeallocate(item);\n            m_preallocatedContents.DeallocateAllMarked();            \n        }\n\n        //  This method tells us if this buffer is almost consumed, so few more allocations and it's done.\n        //  In that case, level needs to be reinicialized by server.\n        public static bool IsAlmostFull()\n        {\n            //return m_nextForAllocation >= (m_capacity * 0.9);\n            return m_preallocatedContents.GetActiveCount() > (m_preallocatedContents.GetCapacity() * 0.9);\n        }\n\n        public static int GetCount()\n        {\n            //return m_nextForAllocation;\n            return m_preallocatedContents.GetActiveCount();\n        }\n\n        public static int GetCapacity()\n        {\n            //return m_capacity;\n            return m_preallocatedContents.GetCapacity();\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Voxels/MyVoxelElement.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Physics;\n\nnamespace MinerWars.AppCode.Game.Voxels\n{\n    class MyVoxelElement: MyElement\n    {\n        public int TriangleIndex;\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Voxels/MyVoxelFiles.cs",
    "content": "﻿using MinerWars.AppCode.App;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils.Utils;\n\nnamespace MinerWars.AppCode.Game.Voxels\n{\n    class MyVoxelFile\n    {\n        public MyMwcVoxelFilesEnum VoxelFileEnum;\n        public MyMwcVector3Int SizeInVoxels;\n        public string VoxelName;\n\n        private MyVoxelFile() { }\n        \n        public MyVoxelFile(MyMwcVoxelFilesEnum voxelFileEnum, MyMwcVector3Int sizeInVoxels, string voxelName)\n        {\n            VoxelFileEnum = voxelFileEnum;\n            SizeInVoxels = sizeInVoxels;\n            VoxelName = voxelName;\n        }\n\n        public int GetLargestSizeInVoxels()\n        {\n            int max = SizeInVoxels.X;\n            if (SizeInVoxels.Y > max) max = SizeInVoxels.Y;\n            if (SizeInVoxels.Z > max) max = SizeInVoxels.Z;\n            return max;\n        }\n\n        //  Full or relative path to VOX file\n        public string GetVoxFilePath()\n        {\n            return MyMinerGame.Static.RootDirectory + \"\\\\VoxelMaps\\\\\" + VoxelName + \".vox\";\n        }\n\n        public string GetIconFilePath()\n        {\n            return \"Textures\\\\GUI\\\\GuiHelpers\\\\\" + VoxelName;\n        }\n    }\n\n    static class MyVoxelFiles\n    {\n        public static readonly string ExportFile = \"VoxelImporterTest\";\n\n        public static MyVoxelFile[] DefaultVoxelFiles = new MyVoxelFile[MyMwcUtils.GetMaxValueFromEnum<MyMwcVoxelFilesEnum>() + 1];\n\n        public static void LoadData()\n        {\n            Add(MyMwcVoxelFilesEnum.PerfectSphereSplitted_512x512x512, new MyMwcVector3Int(512, 512, 512), \"PerfectSphereSplitted_512x512x512\");\n            Add(MyMwcVoxelFilesEnum.PerfectSphereWithFewTunnels_512x512x512, new MyMwcVector3Int(512, 512, 512), \"PerfectSphereWithFewTunnels_512x512x512\");\n            Add(MyMwcVoxelFilesEnum.PerfectSphereWithMassiveTunnels_512x512x512, new MyMwcVector3Int(512, 512, 512), \"PerfectSphereWithMassiveTunnels_512x512x512\");\n            Add(MyMwcVoxelFilesEnum.PerfectSphereWithMassiveTunnels2_512x512x512, new MyMwcVector3Int(512, 512, 512), \"PerfectSphereWithMassiveTunnels2_512x512x512\");\n            Add(MyMwcVoxelFilesEnum.PerfectSphereWithRaceTunnel_512x512x512, new MyMwcVector3Int(512, 512, 512), \"PerfectSphereWithRaceTunnel_512x512x512\");\n            Add(MyMwcVoxelFilesEnum.PerfectSphereWithRaceTunnel2_512x512x512, new MyMwcVector3Int(512, 512, 512), \"PerfectSphereWithRaceTunnel2_512x512x512\");\n            Add(MyMwcVoxelFilesEnum.SphereWithLargeCutOut_128x128x128, new MyMwcVector3Int(128, 128, 128), \"SphereWithLargeCutOut_128x128x128\");\n            Add(MyMwcVoxelFilesEnum.TorusWithManyTunnels_256x128x256, new MyMwcVector3Int(256, 128, 256), \"TorusWithManyTunnels_256x128x256\");\n            Add(MyMwcVoxelFilesEnum.TorusWithManyTunnels_2_256x128x256, new MyMwcVector3Int(256, 128, 256), \"TorusWithManyTunnels_2_256x128x256\");\n            Add(MyMwcVoxelFilesEnum.TorusWithSmallTunnel_256x128x256, new MyMwcVector3Int(256, 128, 256), \"TorusWithSmallTunnel_256x128x256\");\n            Add(MyMwcVoxelFilesEnum.VerticalIsland_128x128x128, new MyMwcVector3Int(128, 128, 128), \"VerticalIsland_128x128x128\");\n            Add(MyMwcVoxelFilesEnum.VerticalIsland_128x256x128, new MyMwcVector3Int(128, 256, 128), \"VerticalIsland_128x256x128\");\n            Add(MyMwcVoxelFilesEnum.TorusStorySector_256x128x256, new MyMwcVector3Int(256, 128, 256), \"TorusStorySector_256x128x256\");\n            Add(MyMwcVoxelFilesEnum.VerticalIslandStorySector_128x256x128, new MyMwcVector3Int(128, 256, 128), \"VerticalIslandStorySector_128x256x128\");\n            Add(MyMwcVoxelFilesEnum.DeformedSphere1_64x64x64, new MyMwcVector3Int(64, 64, 64), \"DeformedSphere1_64x64x64\");\n            Add(MyMwcVoxelFilesEnum.DeformedSphere2_64x64x64, new MyMwcVector3Int(64, 64, 64), \"DeformedSphere2_64x64x64\");\n            Add(MyMwcVoxelFilesEnum.DeformedSphereWithCorridor_128x64x64, new MyMwcVector3Int(128, 64, 64), \"DeformedSphereWithCorridor_128x64x64\");\n            Add(MyMwcVoxelFilesEnum.DeformedSphereWithCorridor_256x256x256, new MyMwcVector3Int(256, 256, 256), \"DeformedSphereWithCorridor_256x256x256\");\n            Add(MyMwcVoxelFilesEnum.DeformedSphereWithCraters_128x128x128, new MyMwcVector3Int(128, 128, 128), \"DeformedSphereWithCraters_128x128x128\");\n            Add(MyMwcVoxelFilesEnum.ScratchedBoulder_128x128x128, new MyMwcVector3Int(128, 128, 128), \"ScratchedBoulder_128x128x128\");\n            Add(MyMwcVoxelFilesEnum.DeformedSphereWithHoles_64x128x64, new MyMwcVector3Int(64, 128, 64), \"DeformedSphereWithHoles_64x128x64\");\n            Add(MyMwcVoxelFilesEnum.VoxelImporterTest, new MyMwcVector3Int(128, 128, 128), ExportFile);\n            Add(MyMwcVoxelFilesEnum.Fortress, new MyMwcVector3Int(128, 128, 128), \"Fortress\");\n            Add(MyMwcVoxelFilesEnum.AsteroidWithSpaceStationStartStorySector, new MyMwcVector3Int(128, 128, 128), \"AsteroidWithSpaceStationStartStorySector\");\n\n            Add(MyMwcVoxelFilesEnum.Cube_128x128x128, new MyMwcVector3Int(128, 128, 128), \"Cube_128x128x128\");\n            Add(MyMwcVoxelFilesEnum.Cube_128x128x256, new MyMwcVector3Int(128, 128, 256), \"Cube_128x128x256\");\n            Add(MyMwcVoxelFilesEnum.Cube_128x128x64, new MyMwcVector3Int(128, 128, 64), \"Cube_128x128x64\");\n            Add(MyMwcVoxelFilesEnum.Cube_128x256x128, new MyMwcVector3Int(128, 256, 128), \"Cube_128x256x128\");\n            Add(MyMwcVoxelFilesEnum.Cube_128x256x256, new MyMwcVector3Int(128, 256, 256), \"Cube_128x256x256\");\n            Add(MyMwcVoxelFilesEnum.Cube_128x256x64, new MyMwcVector3Int(128, 256, 64), \"Cube_128x256x64\");\n            Add(MyMwcVoxelFilesEnum.Cube_128x64x128, new MyMwcVector3Int(128, 64, 128), \"Cube_128x64x128\");\n            Add(MyMwcVoxelFilesEnum.Cube_128x64x256, new MyMwcVector3Int(128, 64, 256), \"Cube_128x64x256\");\n            Add(MyMwcVoxelFilesEnum.Cube_128x64x64, new MyMwcVector3Int(128, 64, 64), \"Cube_128x64x64\");\n            Add(MyMwcVoxelFilesEnum.Cube_256x128x128, new MyMwcVector3Int(256, 128, 128), \"Cube_256x128x128\");\n            Add(MyMwcVoxelFilesEnum.Cube_256x128x256, new MyMwcVector3Int(256, 128, 256), \"Cube_256x128x256\");\n            Add(MyMwcVoxelFilesEnum.Cube_256x128x512, new MyMwcVector3Int(256, 128, 512), \"Cube_256x128x512\");\n            Add(MyMwcVoxelFilesEnum.Cube_256x256x128, new MyMwcVector3Int(256, 256, 128), \"Cube_256x256x128\");\n            Add(MyMwcVoxelFilesEnum.Cube_256x256x256, new MyMwcVector3Int(256, 256, 256), \"Cube_256x256x256\");\n            Add(MyMwcVoxelFilesEnum.Cube_256x256x512, new MyMwcVector3Int(256, 256, 512), \"Cube_256x256x512\");\n            Add(MyMwcVoxelFilesEnum.Cube_256x512x128, new MyMwcVector3Int(256, 512, 128), \"Cube_256x512x128\");\n            Add(MyMwcVoxelFilesEnum.Cube_256x512x256, new MyMwcVector3Int(256, 512, 256), \"Cube_256x512x256\");\n            Add(MyMwcVoxelFilesEnum.Cube_256x512x512, new MyMwcVector3Int(256, 512, 512), \"Cube_256x512x512\");\n            Add(MyMwcVoxelFilesEnum.Cube_512x256x256, new MyMwcVector3Int(512, 256, 256), \"Cube_512x256x256\");\n            Add(MyMwcVoxelFilesEnum.Cube_512x256x512, new MyMwcVector3Int(512, 256, 512), \"Cube_512x256x512\");\n            Add(MyMwcVoxelFilesEnum.Cube_512x512x256, new MyMwcVector3Int(512, 512, 256), \"Cube_512x512x256\");\n            Add(MyMwcVoxelFilesEnum.Cube_512x512x512, new MyMwcVector3Int(512, 512, 512), \"Cube_512x512x512\");\n            Add(MyMwcVoxelFilesEnum.Cube_64x128x128, new MyMwcVector3Int(64, 128, 128), \"Cube_64x128x128\");\n            Add(MyMwcVoxelFilesEnum.Cube_64x128x64, new MyMwcVector3Int(64, 128, 64), \"Cube_64x128x64\");\n            Add(MyMwcVoxelFilesEnum.Cube_64x64x128, new MyMwcVector3Int(64, 64, 128), \"Cube_64x64x128\");\n            Add(MyMwcVoxelFilesEnum.Cube_64x64x64, new MyMwcVector3Int(64, 64, 64), \"Cube_64x64x64\");\n\n            Add(MyMwcVoxelFilesEnum.Story02, new MyMwcVector3Int(256, 256, 256), \"Story02\");\n            Add(MyMwcVoxelFilesEnum.Mission01_01, new MyMwcVector3Int(512, 256, 256), \"Mission01_01\");\n            Add(MyMwcVoxelFilesEnum.Mission01_02, new MyMwcVector3Int(256, 256, 256), \"Mission01_02\");\n            Add(MyMwcVoxelFilesEnum.Mission07_01, new MyMwcVector3Int(128, 256, 128), \"Mission07_01\");\n            Add(MyMwcVoxelFilesEnum.Mission01_asteroid_mine, new MyMwcVector3Int(256, 256, 256), \"Mission01_asteroid_mine\");\n            Add(MyMwcVoxelFilesEnum.Mission01_asteroid_big, new MyMwcVector3Int(512, 256, 256), \"Mission01_asteroid_big\");\n\n            Add(MyMwcVoxelFilesEnum.SphereFull_64, new MyMwcVector3Int(64, 64, 64), \"SphereFull_64\");\n            Add(MyMwcVoxelFilesEnum.SphereFull_128, new MyMwcVector3Int(128, 128, 128), \"SphereFull_128\");\n            Add(MyMwcVoxelFilesEnum.SphereFull_256, new MyMwcVector3Int(256, 256, 256), \"SphereFull_256\");\n            Add(MyMwcVoxelFilesEnum.SphereFull_512, new MyMwcVector3Int(512, 512, 512), \"SphereFull_512\");\n            Add(MyMwcVoxelFilesEnum.SphereFull_1024, new MyMwcVector3Int(1024, 1024, 1024), \"SphereFull_1024\");\n\n            Add(MyMwcVoxelFilesEnum.EacPrisonAsteroid, new MyMwcVector3Int(512, 512, 512), \"EacPrisonAsteroid\");\n            Add(MyMwcVoxelFilesEnum.piratebase_export, new MyMwcVector3Int(512, 512, 512), \"piratebase_export\");\n\n            Add(MyMwcVoxelFilesEnum.Chinese_Mines_CenterAsteroid, new MyMwcVector3Int(256, 256, 256), \"Chinese_Mines_CenterAsteroid\");\n            Add(MyMwcVoxelFilesEnum.Chinese_Mines_FrontAsteroid, new MyMwcVector3Int(256, 256, 256), \"Chinese_Mines_FrontAsteroid\");\n            Add(MyMwcVoxelFilesEnum.Chinese_Mines_FrontRightAsteroid, new MyMwcVector3Int(256, 256, 256), \"Chinese_Mines_FrontRightAsteroid\");\n            Add(MyMwcVoxelFilesEnum.Chinese_Mines_LeftAsteroid, new MyMwcVector3Int(256, 256, 256), \"Chinese_Mines_LeftAsteroid\");\n            Add(MyMwcVoxelFilesEnum.Chinese_Mines_MainAsteroid, new MyMwcVector3Int(256, 256, 256), \"Chinese_Mines_MainAsteroid\");\n            Add(MyMwcVoxelFilesEnum.Chinese_Mines_RightAsteroid, new MyMwcVector3Int(256, 256, 256), \"Chinese_Mines_RightAsteroid\");\n\n            Add(MyMwcVoxelFilesEnum.TowerWithConcreteBlock1, new MyMwcVector3Int(256, 512, 128), \"TowerWithConcreteBlock1\");\n            Add(MyMwcVoxelFilesEnum.TowerWithConcreteBlock2, new MyMwcVector3Int(256, 512, 128), \"TowerWithConcreteBlock2\");\n\n            Add(MyMwcVoxelFilesEnum.Warehouse, new MyMwcVector3Int(256, 256, 256), \"Warehouse\");\n            \n            Add(MyMwcVoxelFilesEnum.Barths_moon_base, new MyMwcVector3Int(256, 256, 256), \"Barths_moon_base\");\n            Add(MyMwcVoxelFilesEnum.Barths_moon_satelite, new MyMwcVector3Int(128, 128, 128), \"Barths_moon_satelite\");\n            Add(MyMwcVoxelFilesEnum.Fort_valiant_base, new MyMwcVector3Int(512, 256, 256), \"Fort_valiant_base\");\n            Add(MyMwcVoxelFilesEnum.Fort_valiant_dungeon, new MyMwcVector3Int(512, 512, 512), \"Fort_valiant_dungeon\");\n\n            Add(MyMwcVoxelFilesEnum.JunkYardInhabited_256x128x256, new MyMwcVector3Int(256, 128, 256), \"JunkYardInhabited_256x128x256\");\n            Add(MyMwcVoxelFilesEnum.JunkYardToxic_128x128x128, new MyMwcVector3Int(128, 128, 128), \"JunkYardToxic_128x128x128\");\n\n            Add(MyMwcVoxelFilesEnum.Empty_512x512x512, new MyMwcVector3Int(512, 512, 512), \"Empty_512x512x512\");\n\n            Add(MyMwcVoxelFilesEnum.JunkYardForge_256x256x256, new MyMwcVector3Int(256, 256, 256), \"JunkYardForge_256x256x256\");\n\n            Add(MyMwcVoxelFilesEnum.Barths_moon_camp, new MyMwcVector3Int(256, 256, 256), \"Barths_moon_camp\");\n\n            Add(MyMwcVoxelFilesEnum.rift_base_bigger, new MyMwcVector3Int(128, 256, 256), \"Rift_base_bigger\");\n            Add(MyMwcVoxelFilesEnum.rift_base_smaller, new MyMwcVector3Int(64, 128, 64), \"Rift_base_smaller\");\n            Add(MyMwcVoxelFilesEnum.rift, new MyMwcVector3Int(512, 512, 256), \"rift\");\n            Add(MyMwcVoxelFilesEnum.rift_small_1, new MyMwcVector3Int(64, 64, 64), \"rift_small_1\");\n            Add(MyMwcVoxelFilesEnum.rift_small_2, new MyMwcVector3Int(64, 64, 64), \"rift_small_2\");\n\n            Add(MyMwcVoxelFilesEnum.barths_moon_lab1, new MyMwcVector3Int(256, 256, 256), \"barths_moon_lab1\");\n            Add(MyMwcVoxelFilesEnum.barths_moon_lab2, new MyMwcVector3Int(256, 256, 256), \"barths_moon_lab2\");\n\n            Add(MyMwcVoxelFilesEnum.fort_val_box_128, new MyMwcVector3Int(128, 128, 128), \"fort_val_box_128\");\n\n\n            Add(MyMwcVoxelFilesEnum.Junkyard_Race_256x256x256, new MyMwcVector3Int(256, 256, 256), \"Junkyard_Race_256x256x256\");\n            Add(MyMwcVoxelFilesEnum.Junkyard_RaceAsteroid_256x256x256, new MyMwcVector3Int(256, 256, 256), \"Junkyard_RaceAsteroid_256x256x256\");\n\n            Add(MyMwcVoxelFilesEnum.ChineseRefinery_First_128x128x128, new MyMwcVector3Int(256, 256, 256), \"ChineseRefinery_First_128x128x128\");\n            Add(MyMwcVoxelFilesEnum.ChineseRefinery_Second_128x128x128, new MyMwcVector3Int(256, 256, 256), \"ChineseRefinery_Second_128x128x128\");\n            Add(MyMwcVoxelFilesEnum.ChineseRefinery_Third_128x256x128, new MyMwcVector3Int(256, 256, 256), \"ChineseRefinery_Third_128x256x128\");\n\n            Add(MyMwcVoxelFilesEnum.Chinese_Corridor_Last_126x126x126, new MyMwcVector3Int(256, 256, 256), \"Chinese_Corridor_Last_126x126x126\");\n            Add(MyMwcVoxelFilesEnum.Chinese_Corridor_Tunnel_256x256x256, new MyMwcVector3Int(256, 256, 256), \"Chinese_Corridor_Tunnel_256x256x256\");\n\n            Add(MyMwcVoxelFilesEnum.Bioresearch, new MyMwcVector3Int(256, 256, 256), \"Bioresearch\");\n\n            Add(MyMwcVoxelFilesEnum.small2_asteroids, new MyMwcVector3Int(128, 128, 128), \"small2_asteroids\");\n            Add(MyMwcVoxelFilesEnum.small3_asteroids, new MyMwcVector3Int(128, 128, 128), \"small3_asteroids\");\n            Add(MyMwcVoxelFilesEnum.many_medium_asteroids, new MyMwcVector3Int(128, 128, 128), \"many_medium_asteroids\");\n            Add(MyMwcVoxelFilesEnum.many_small_asteroids, new MyMwcVector3Int(128, 128, 128), \"many_small_asteroids\");\n            Add(MyMwcVoxelFilesEnum.many2_small_asteroids, new MyMwcVector3Int(128, 128, 128), \"many2_small_asteroids\");\n            Add(MyMwcVoxelFilesEnum.rus_attack, new MyMwcVector3Int(128, 128, 128), \"rus_attack\");\n\n            Add(MyMwcVoxelFilesEnum.RussianWarehouse, new MyMwcVector3Int(256, 256, 256), \"RussianWarehouse\");\n            Add(MyMwcVoxelFilesEnum.MothershipFacility, new MyMwcVector3Int(256, 256, 256), \"mothership_facility\");\n            Add(MyMwcVoxelFilesEnum.SlaverBase, new MyMwcVector3Int(256, 256, 256), \"slaver_base\");\n            Add(MyMwcVoxelFilesEnum.ResearchVessel, new MyMwcVector3Int(256, 256, 256), \"research_vessel\");\n            Add(MyMwcVoxelFilesEnum.BilitaryBase, new MyMwcVector3Int(256, 256, 256), \"military_base\");\n\n            Add(MyMwcVoxelFilesEnum.reef_ast, new MyMwcVector3Int(64, 64, 64), \"reef_ast\");\n\n            Add(MyMwcVoxelFilesEnum.hopebase512, new MyMwcVector3Int(512, 512, 512), \"hopebase512\");\n            Add(MyMwcVoxelFilesEnum.hopefood128, new MyMwcVector3Int(128, 128, 128), \"hopefood128\");\n            Add(MyMwcVoxelFilesEnum.hopevault128, new MyMwcVector3Int(128, 128, 128), \"hopevault128\");\n            Add(MyMwcVoxelFilesEnum.New_Jerusalem_Asteroid, new MyMwcVector3Int(128, 128, 128), \"New_Jerusalem_Asteroid\");\n            Add(MyMwcVoxelFilesEnum.Chinese_Transmitter_Asteroid, new MyMwcVector3Int(128, 128, 128), \"Chinese_Transmitter_Asteroid\");\n            Add(MyMwcVoxelFilesEnum.Slaver_Base_2_Asteroid, new MyMwcVector3Int(128, 128, 128), \"Slaver_Base_2_Asteroid\");\n            Add(MyMwcVoxelFilesEnum.Small_Pirate_Base_Asteroid, new MyMwcVector3Int(128, 128, 128), \"Small_Pirate_Base_Asteroid\");\n            Add(MyMwcVoxelFilesEnum.Small_Pirate_Base_2_Asteroid, new MyMwcVector3Int(128, 128, 128), \"Small_Pirate_Base_2_Asteroid\");\n            Add(MyMwcVoxelFilesEnum.Solar_Factory_EAC_Asteroid, new MyMwcVector3Int(128, 128, 128), \"Solar_Factory_EAC_Asteroid\");\n            Add(MyMwcVoxelFilesEnum.Mines_Asteroid, new MyMwcVector3Int(128, 128, 128), \"Mines_Asteroid\");\n            Add(MyMwcVoxelFilesEnum.Small_Pirate_Base_3_1, new MyMwcVector3Int(64, 64, 64), \"Small_Pirate_Base_3_1\");\n            Add(MyMwcVoxelFilesEnum.Small_Pirate_Base_3_2, new MyMwcVector3Int(64, 64, 64), \"Small_Pirate_Base_3_2\");\n            Add(MyMwcVoxelFilesEnum.Small_Pirate_Base_3_3, new MyMwcVector3Int(64, 64, 64), \"Small_Pirate_Base_3_3\");\n            Add(MyMwcVoxelFilesEnum.Voxel_Arena_Tunnels, new MyMwcVector3Int(256, 256, 256), \"Voxel_Arena_Tunnels\");\n            Add(MyMwcVoxelFilesEnum.EACSurvaySmaller_256_256_256, new MyMwcVector3Int(256, 256, 256), \"EACSurvaySmaller_256_256_256\");\n            Add(MyMwcVoxelFilesEnum.EACSurveyBigger_512_256_256, new MyMwcVector3Int(512, 256, 256), \"EACSurveyBigger_512_256_256\");\n            Add(MyMwcVoxelFilesEnum.Laika1_128_128_128, new MyMwcVector3Int(512, 256, 256), \"Laika1_128_128_128\");\n            Add(MyMwcVoxelFilesEnum.Laika2_64_64_64, new MyMwcVector3Int(512, 256, 256), \"Laika2_64_64_64\");\n            Add(MyMwcVoxelFilesEnum.Laika3_64_64_64, new MyMwcVector3Int(512, 256, 256), \"Laika3_64_64_64\");\n            Add(MyMwcVoxelFilesEnum.Laika4_256_128_128, new MyMwcVector3Int(512, 256, 256), \"Laika4_256_128_128\");\n            Add(MyMwcVoxelFilesEnum.Laika5_128_128_128, new MyMwcVector3Int(512, 256, 256), \"Laika5_128_128_128\");\n            Add(MyMwcVoxelFilesEnum.Laika6_64_64_64, new MyMwcVector3Int(512, 256, 256), \"Laika6_64_64_64\");\n            Add(MyMwcVoxelFilesEnum.Laika7_64_64_64, new MyMwcVector3Int(512, 256, 256), \"Laika7_64_64_64\");\n            Add(MyMwcVoxelFilesEnum.Laika8_128_128_128, new MyMwcVector3Int(512, 256, 256), \"Laika8_128_128_128\");\n            Add(MyMwcVoxelFilesEnum.Laika9_128_128_128, new MyMwcVector3Int(512, 256, 256), \"Laika9_128_128_128\");\n            Add(MyMwcVoxelFilesEnum.Novaja_Zemlja, new MyMwcVector3Int(256, 256, 256), \"Novaja_Zemlja\");\n\n            Add(MyMwcVoxelFilesEnum.Arabian_Border_1, new MyMwcVector3Int(64, 64, 64), \"Arabian_Border_1\");\n            Add(MyMwcVoxelFilesEnum.Arabian_Border_2, new MyMwcVector3Int(64, 64, 64), \"Arabian_Border_2\");\n            Add(MyMwcVoxelFilesEnum.Arabian_Border_3, new MyMwcVector3Int(64, 64, 64), \"Arabian_Border_3\");\n            Add(MyMwcVoxelFilesEnum.Arabian_Border_4, new MyMwcVector3Int(64, 64, 64), \"Arabian_Border_4\");\n            Add(MyMwcVoxelFilesEnum.Arabian_Border_5, new MyMwcVector3Int(64, 64, 64), \"Arabian_Border_5\");\n            Add(MyMwcVoxelFilesEnum.Arabian_Border_6, new MyMwcVector3Int(64, 64, 64), \"Arabian_Border_6\");\n            Add(MyMwcVoxelFilesEnum.Arabian_Border_7, new MyMwcVector3Int(64, 64, 64), \"Arabian_Border_7\");\n            Add(MyMwcVoxelFilesEnum.Arabian_Border_Arabian, new MyMwcVector3Int(128, 128, 128), \"Arabian_Border_Arabian\");\n            Add(MyMwcVoxelFilesEnum.Arabian_Border_EAC, new MyMwcVector3Int(128, 128, 128), \"Arabian_Border_EAC\");\n\n            Add(MyMwcVoxelFilesEnum.Chinese_Corridor_1, new MyMwcVector3Int(128, 128, 128), \"Chinese_Corridor_1\");\n\n            Add(MyMwcVoxelFilesEnum.Grave_Skull, new MyMwcVector3Int(256, 256, 256), \"Grave_Skull\");\n\n            Add(MyMwcVoxelFilesEnum.Pirate_Base_1, new MyMwcVector3Int(64, 64, 64), \"Pirate_Base_1\");\n            Add(MyMwcVoxelFilesEnum.Pirate_Base_2, new MyMwcVector3Int(128, 128, 128), \"Pirate_Base_2\");\n            Add(MyMwcVoxelFilesEnum.Pirate_Base_3, new MyMwcVector3Int(64, 128, 64), \"Pirate_Base_3\");\n\n            Add(MyMwcVoxelFilesEnum.Plutonium_Mines, new MyMwcVector3Int(256, 256, 256), \"PlutoniumMines\");\n\n            Add(MyMwcVoxelFilesEnum.Fragile_Sector, new MyMwcVector3Int(256, 128, 256), \"Fragile_Sector\");\n\n            Add(MyMwcVoxelFilesEnum.Chinese_Solar_Array_Bottom, new MyMwcVector3Int(64, 64, 64), \"Chinese_Solar_Array_Bottom\");\n            Add(MyMwcVoxelFilesEnum.Chinese_Solar_Array_Main, new MyMwcVector3Int(256, 128, 256), \"Chinese_Solar_Array_Main\");\n\n            Add(MyMwcVoxelFilesEnum.Chinese_Mines_Small, new MyMwcVector3Int(64, 64, 64), \"Chinese_Mines_Small\");\n            Add(MyMwcVoxelFilesEnum.Chinese_Mines_Side, new MyMwcVector3Int(128, 128, 128), \"Chinese_Mines_Side\");\n\n            Add(MyMwcVoxelFilesEnum.Hippie_Outpost_Base, new MyMwcVector3Int(128, 128, 128), \"Hippie_Outpost_Base\");\n            Add(MyMwcVoxelFilesEnum.Hippie_Outpost_Tree, new MyMwcVector3Int(512, 512, 512), \"Hippie_Outpost_Tree\");\n\n            Add(MyMwcVoxelFilesEnum.Laika_1, new MyMwcVector3Int(64, 64, 64), \"Laika_1\");\n            Add(MyMwcVoxelFilesEnum.Laika_2, new MyMwcVector3Int(256, 128, 256), \"Laika_2\");\n            Add(MyMwcVoxelFilesEnum.Laika_3, new MyMwcVector3Int(64, 64, 64), \"Laika_3\");\n\n            Add(MyMwcVoxelFilesEnum.Fortress_Sanc_1, new MyMwcVector3Int(128, 256, 128), \"Fortress_Sanc_1\");\n            Add(MyMwcVoxelFilesEnum.Fortress_Sanc_2, new MyMwcVector3Int(256, 128, 256), \"Fortress_Sanc_2\");\n            Add(MyMwcVoxelFilesEnum.Fortress_Sanc_3, new MyMwcVector3Int(128, 128, 128), \"Fortress_Sanc_3\");\n            Add(MyMwcVoxelFilesEnum.Fortress_Sanc_4, new MyMwcVector3Int(128, 128, 128), \"Fortress_Sanc_4\");\n            Add(MyMwcVoxelFilesEnum.Fortress_Sanc_5, new MyMwcVector3Int(256, 256, 256), \"Fortress_Sanc_5\");\n            Add(MyMwcVoxelFilesEnum.Fortress_Sanc_6, new MyMwcVector3Int(256, 128, 256), \"Fortress_Sanc_6\");\n            Add(MyMwcVoxelFilesEnum.Fortress_Sanc_7, new MyMwcVector3Int(128, 256, 128), \"Fortress_Sanc_7\");\n            Add(MyMwcVoxelFilesEnum.Fortress_Sanc_8, new MyMwcVector3Int(128, 256, 128), \"Fortress_Sanc_8\");\n            Add(MyMwcVoxelFilesEnum.Fortress_Sanc_9, new MyMwcVector3Int(128, 128, 128), \"Fortress_Sanc_9\");\n            Add(MyMwcVoxelFilesEnum.Fortress_Sanc_10, new MyMwcVector3Int(128, 128, 128), \"Fortress_Sanc_10\");\n            Add(MyMwcVoxelFilesEnum.Fortress_Sanc_11, new MyMwcVector3Int(128, 128, 128), \"Fortress_Sanc_11\");\n\n            Add(MyMwcVoxelFilesEnum.Russian_Transmitter_1, new MyMwcVector3Int(128, 128, 128), \"Russian_Transmitter_1\");\n            Add(MyMwcVoxelFilesEnum.Russian_Transmitter_2, new MyMwcVector3Int(256, 128, 256), \"Russian_Transmitter_2\");\n            Add(MyMwcVoxelFilesEnum.Russian_Transmitter_3, new MyMwcVector3Int(256, 128, 256), \"Russian_Transmitter_3\");\n            Add(MyMwcVoxelFilesEnum.Russian_Transmitter_Main, new MyMwcVector3Int(256, 256, 256), \"Russian_Transmitter_Main\");\n\n            Add(MyMwcVoxelFilesEnum.Russian_Warehouse, new MyMwcVector3Int(64, 64, 64), \"Russian_Warehouse\");\n\n            Add(MyMwcVoxelFilesEnum.ReichStag_1, new MyMwcVector3Int(128, 128, 128), \"ReichStag_1\");\n            Add(MyMwcVoxelFilesEnum.ReichStag_2, new MyMwcVector3Int(256, 128, 256), \"ReichStag_2\");\n\n            Add(MyMwcVoxelFilesEnum.New_Singapore, new MyMwcVector3Int(512, 512, 256), \"New_Singapore\");\n\n            Add(MyMwcVoxelFilesEnum.HallOfFame, new MyMwcVector3Int(256, 128, 256), \"HallOfFame\");\n\n            Add(MyMwcVoxelFilesEnum.IceCaveDeathmatch, new MyMwcVector3Int(256, 128, 256), \"IceCaveDeathmatch\");\n\n            Add(MyMwcVoxelFilesEnum.WarehouseDeathmatch, new MyMwcVector3Int(256, 128, 256), \"WarehouseDeathmatch\");\n\n            Add(MyMwcVoxelFilesEnum.Nearby_Station_1, new MyMwcVector3Int(128, 128, 128), \"Nearby_Station_1\");\n            Add(MyMwcVoxelFilesEnum.Nearby_Station_2, new MyMwcVector3Int(64, 128, 64), \"Nearby_Station_2\");\n            Add(MyMwcVoxelFilesEnum.Nearby_Station_3, new MyMwcVector3Int(64, 64, 128), \"Nearby_Station_3\");\n            Add(MyMwcVoxelFilesEnum.Nearby_Station_4, new MyMwcVector3Int(64, 128, 64), \"Nearby_Station_4\");\n            Add(MyMwcVoxelFilesEnum.Nearby_Station_5, new MyMwcVector3Int(128, 128, 128), \"Nearby_Station_5\");\n            Add(MyMwcVoxelFilesEnum.Nearby_Station_6, new MyMwcVector3Int(128, 128, 128), \"Nearby_Station_6\");\n            Add(MyMwcVoxelFilesEnum.Nearby_Station_7, new MyMwcVector3Int(64, 128, 64), \"Nearby_Station_7\");\n            Add(MyMwcVoxelFilesEnum.Nearby_Station_8, new MyMwcVector3Int(64, 64, 64), \"Nearby_Station_8\");\n            Add(MyMwcVoxelFilesEnum.Nearby_Station_9, new MyMwcVector3Int(128, 128, 128), \"Nearby_Station_9\");\n            Add(MyMwcVoxelFilesEnum.Nearby_Station_10, new MyMwcVector3Int(64, 64, 64), \"Nearby_Station_10\");\n            Add(MyMwcVoxelFilesEnum.Nearby_Station_11, new MyMwcVector3Int(128, 64, 64), \"Nearby_Station_11\");\n            Add(MyMwcVoxelFilesEnum.Nearby_Station_12, new MyMwcVector3Int(256, 128, 256), \"Nearby_Station_12\");\n\n            Add(MyMwcVoxelFilesEnum.VoxelArenaDeathmatch, new MyMwcVector3Int(256, 256, 256), \"VoxelArenaDeathmatch\");\n\n            Add(MyMwcVoxelFilesEnum.RiftStationSmaller, new MyMwcVector3Int(64, 128, 64), \"RiftStationSmaller\");\n\n            Add(MyMwcVoxelFilesEnum.Flat_256x64x256, new MyMwcVector3Int(256, 64, 256), \"Flat_256x64x256\");\n            Add(MyMwcVoxelFilesEnum.Flat_128x64x128, new MyMwcVector3Int(128, 64, 128), \"Flat_128x64x128\");\n            Add(MyMwcVoxelFilesEnum.Flat_512x64x512, new MyMwcVector3Int(512, 64, 512), \"Flat_512x64x512\");\n\n            Add(MyMwcVoxelFilesEnum.PirateBaseStaticAsteroid_A_1000m, new MyMwcVector3Int(128, 128, 128), \"PirateBaseStaticAsteroid_A_1000m\");\n            Add(MyMwcVoxelFilesEnum.PirateBaseStaticAsteroid_A_5000m_1, new MyMwcVector3Int(384, 384, 384), \"PirateBaseStaticAsteroid_A_5000m_1\");\n            Add(MyMwcVoxelFilesEnum.PirateBaseStaticAsteroid_A_5000m_2, new MyMwcVector3Int(384, 384, 384), \"PirateBaseStaticAsteroid_A_5000m_2\");\n\n            Add(MyMwcVoxelFilesEnum.d25asteroid_field, new MyMwcVector3Int(128, 64, 128), \"d25asteroid_field\");\n            Add(MyMwcVoxelFilesEnum.d25city_fight, new MyMwcVector3Int(128, 64, 128), \"d25city_fight\");\n            Add(MyMwcVoxelFilesEnum.d25gates_ofhell, new MyMwcVector3Int(128, 64, 128), \"d25gates_ofhell\");\n            Add(MyMwcVoxelFilesEnum.d25junkyard, new MyMwcVector3Int(128, 64, 128), \"d25junkyard\");\n            Add(MyMwcVoxelFilesEnum.d25military_area, new MyMwcVector3Int(128, 64, 128), \"d25military_area\");\n            Add(MyMwcVoxelFilesEnum.d25miner_outpost, new MyMwcVector3Int(128, 64, 128), \"d25miner_outpost\");\n            Add(MyMwcVoxelFilesEnum.d25plain, new MyMwcVector3Int(128, 64, 128), \"d25plain\");\n            Add(MyMwcVoxelFilesEnum.d25radioactive, new MyMwcVector3Int(128, 64, 128), \"d25radioactive\");\n\n\n\n\n\n            \n\n            //  Assert whether we didn't forget on some voxelfile\n            for (int i = 0; i < DefaultVoxelFiles.Length; i++)\n            {\n                MyCommonDebugUtils.AssertDebug(DefaultVoxelFiles[i] != null);\n            }\n        }\n\n        static void Add(MyMwcVoxelFilesEnum voxelFileEnum, MyMwcVector3Int sizeInVoxels, string filename)\n        {\n            DefaultVoxelFiles[(int)voxelFileEnum] = new MyVoxelFile(voxelFileEnum, sizeInVoxels, filename);\n        }\n\n        public static MyVoxelFile Get(MyMwcVoxelFilesEnum voxelFileEnum)\n        {\n            return DefaultVoxelFiles[(int)voxelFileEnum];\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Voxels/MyVoxelGenerator.cs",
    "content": "﻿using MinerWarsMath;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils.Utils;\nusing System.Collections.Generic;\n\n//  This class is used for changing voxel maps (creating voxel sphere or boxes, or on the other hand cutting out spheres and boxes)\n\nnamespace MinerWars.AppCode.Game.Voxels\n{\n    static class MyVoxelGenerator\n    {\n        public static bool InvalidateCache = false;\n\n        //  This is class because I want to pass reference to it and not copy it like structs\n        class MyVoxelGeneratorCachedContent\n        {\n            public byte Content;\n        }\n\n        //  Here we will hold temporary content during explosion and clearing pass\n        //  The thing is, we never empty/zero this array. We hold and m_notCompressedIndex of last pass.\n        static MyVoxelGeneratorCachedContent[][][] m_cachedContents;\n\n        //  Number of voxel we have in all direction in our cached array as a boundary or when needed beughbor voxels\n        //  It's three because clearing pass accesses neighbor voxels to explosion, plus their neighbor, which makes two, but I added one as a protection.\n        const int CACHED_BOUNDARY_IN_VOXELS = 4;\n\n\n        public static void LoadData()\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyVoxelGenerator.LoadData\");\n\n            MyMwcLog.WriteLine(\"MyVoxelGenerator.LoadData() - START\");\n            MyMwcLog.IncreaseIndent();\n\n            InvalidateCache = true;\n\n            //  Size of cache array is determined by max possible explosion radius (or diameter), plus boundary one both sides of explosion\n            int explosionContentsVoxelsCount = 2 * CACHED_BOUNDARY_IN_VOXELS + 2 * (int)((MyExplosionsConstants.EXPLOSION_RADIUS_MAX + MyVoxelConstants.VOXEL_SIZE_IN_METRES) / MyVoxelConstants.VOXEL_SIZE_IN_METRES);\n\n            m_cachedContents = new MyVoxelGeneratorCachedContent[explosionContentsVoxelsCount][][];\n            for (int x = 0; x < explosionContentsVoxelsCount; x++)\n            {\n                m_cachedContents[x] = new MyVoxelGeneratorCachedContent[explosionContentsVoxelsCount][];\n                for (int y = 0; y < explosionContentsVoxelsCount; y++)\n                {\n                    m_cachedContents[x][y] = new MyVoxelGeneratorCachedContent[explosionContentsVoxelsCount];\n                    for (int z = 0; z < explosionContentsVoxelsCount; z++)\n                    {\n                        m_cachedContents[x][y][z] = new MyVoxelGeneratorCachedContent();\n                    }\n                }\n            }\n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyVoxelGenerator.LoadData() - END\");\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        //  Overload for case where we don't care about material or percentage, etc\n        public static void UnloadData()\n        {\n        }\n\n        public static void CutOutSphereFast(MyVoxelMap voxelMap, BoundingSphere sphere, float removeRatio = 1)\n        {\n            MyMwcVoxelMaterialsEnum? voxelMaterial_unused;\n            float voxelContentRemovedInPercent_unused;\n            MyVoxelGenerator.CutOutSphereFast(voxelMap, sphere, out voxelContentRemovedInPercent_unused, out voxelMaterial_unused, false, removeRatio);\n        }\n\n        public static Dictionary<MyMwcVoxelMaterialsEnum, int> CutOutSphereFastWithMaterials(MyVoxelMap voxelMap, BoundingSphere sphere, float removeRatio = 1)\n        {\n            var exactCutOutMaterials = new Dictionary<MyMwcVoxelMaterialsEnum, int>();\n            MyMwcVoxelMaterialsEnum? voxelMaterial_unused;\n            float voxelContentRemovedInPercent_unused;\n            MyVoxelGenerator.CutOutSphereFast(voxelMap, sphere, out voxelContentRemovedInPercent_unused, out voxelMaterial_unused, false, removeRatio, exactCutOutMaterials);\n            return exactCutOutMaterials;\n        }\n\n        //  Cut outs a sphere from voxel map (e.g. explosion in a voxel map). We modify only voxels inside the sphere - set them to full or partialy full.\n        //  Other voxel are untouched. Sphere coordinates are in world space, not relative to voxel map and is in metres.\n        //\n        //  Method returns percent of how much voxels were removed by this explosion (value 0.0 means no voxels; value 1.0 means all voxels)\n        //\n        //  IMPORTANT:\n        //  This is optimized version that uses cache for accessing voxels. But the cache has limits so it can be used only for not extremely large cut-outs.\n        //  Non-optimized version is: CutOutSphere - but it doesn't mean it's slow... the difference is probably just 10-20%\n        //\n        //  Returns true if indestructible voxels has been hit (otherwise false)\n        public static bool CutOutSphereFast(MyVoxelMap voxelMap, BoundingSphere explosion, out float voxelsCountInPercent, out MyMwcVoxelMaterialsEnum? voxelMaterial, bool isPlayerExplosion = false, float removeRatio = 1, Dictionary<MyMwcVoxelMaterialsEnum, int> exactCutOutMaterials = null)\n        {\n            explosion.Radius = System.Math.Min(explosion.Radius, MyExplosionsConstants.EXPLOSION_RADIUS_MAX);\n\n            InvalidateCache = true; \n\n            voxelMaterial = null;\n\n            MyMwcVoxelMaterialsEnum newVoxelMaterialTemp;\n            byte tempminContentValueByte;\n            MyMwcVector3Int exactCenterOfExplosion = voxelMap.GetVoxelCoordinateFromMeters(new Vector3(explosion.Center.X, explosion.Center.Y, explosion.Center.Z));\n            voxelMap.FixVoxelCoord(ref exactCenterOfExplosion);\n            voxelMap.GetMaterialAndIndestructibleContent(ref exactCenterOfExplosion, out newVoxelMaterialTemp, out tempminContentValueByte);\n            if (voxelMaterial == null)\n                voxelMaterial = newVoxelMaterialTemp;   //  We need to replace this only once\n\n\n            int originalVoxelContentsSum = 0;       //  Sum of all voxel contents affected by this explosion before we extract any voxel. This value is increasing per every voxel, no matter if we realy extract it.\n            int removedVoxelContentsSum = 0;        //  Sum of all voxel contents we removed by this explosion. This value increases only if we extract something from voxel map.\n\n            //  Get min corner of the explosion\n            MyMwcVector3Int minCorner = voxelMap.GetVoxelCoordinateFromMeters(new Vector3(\n                explosion.Center.X - explosion.Radius - MyVoxelConstants.VOXEL_SIZE_IN_METRES,\n                explosion.Center.Y - explosion.Radius - MyVoxelConstants.VOXEL_SIZE_IN_METRES,\n                explosion.Center.Z - explosion.Radius - MyVoxelConstants.VOXEL_SIZE_IN_METRES));\n\n            //  Get max corner of the explosion\n            MyMwcVector3Int maxCorner = voxelMap.GetVoxelCoordinateFromMeters(new Vector3(\n                explosion.Center.X + explosion.Radius + MyVoxelConstants.VOXEL_SIZE_IN_METRES,\n                explosion.Center.Y + explosion.Radius + MyVoxelConstants.VOXEL_SIZE_IN_METRES,\n                explosion.Center.Z + explosion.Radius + MyVoxelConstants.VOXEL_SIZE_IN_METRES));\n\n            voxelMap.FixVoxelCoord(ref minCorner);\n            voxelMap.FixVoxelCoord(ref maxCorner);\n\n            MyMwcVector3Int cachedSubtract;\n            cachedSubtract.X = minCorner.X - CACHED_BOUNDARY_IN_VOXELS;\n            cachedSubtract.Y = minCorner.Y - CACHED_BOUNDARY_IN_VOXELS;\n            cachedSubtract.Z = minCorner.Z - CACHED_BOUNDARY_IN_VOXELS;\n\n            //  We are tracking which voxels were changed, so we can invalidate only needed cells in the cache\n            MyMwcVector3Int minChanged = maxCorner;\n            MyMwcVector3Int maxChanged = minCorner;\n\n            MyMwcVector3Int tempVoxelCoord;\n            bool indestructible = true;\n            for (tempVoxelCoord.X = minCorner.X; tempVoxelCoord.X <= maxCorner.X; tempVoxelCoord.X++)\n            {\n                for (tempVoxelCoord.Y = minCorner.Y; tempVoxelCoord.Y <= maxCorner.Y; tempVoxelCoord.Y++)\n                {\n                    for (tempVoxelCoord.Z = minCorner.Z; tempVoxelCoord.Z <= maxCorner.Z; tempVoxelCoord.Z++)\n                    {\n                        Vector3 voxelPosition = voxelMap.GetVoxelCenterPositionAbsolute(ref tempVoxelCoord);\n                        float dist = (voxelPosition - explosion.Center).Length();\n                        float diff = dist - explosion.Radius;\n\n                        //  This number will tell us how much of this voxel we will remove (can be zero, can be full voxel, or between)\n                        int contentToRemove;\n                        if (diff > MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF)\n                        {\n                            contentToRemove = MyVoxelConstants.VOXEL_CONTENT_EMPTY;\n                        }\n                        else if (diff < -MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF)\n                        {\n                            contentToRemove = MyVoxelConstants.VOXEL_CONTENT_FULL;\n                        }\n                        else\n                        {\n                            //  This formula will work even if diff is positive or negative\n                            contentToRemove = (int)(MyVoxelConstants.VOXEL_ISO_LEVEL - diff / MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF * MyVoxelConstants.VOXEL_ISO_LEVEL);\n                        }\n\n                        contentToRemove = (int)(contentToRemove * removeRatio);\n\n                        //  Only if we have to remove something (e.g. voxels that are outside of the radius aren't affected, or voxels that are \n                        //  in cornes are always out of the radius, even if they are in bounding box)\n                        if (contentToRemove > MyVoxelConstants.VOXEL_CONTENT_EMPTY)\n                        {\n\n                            byte minContentValueByte;\n                            MyMwcVoxelMaterialsEnum voxelMaterialTemp;\n                            voxelMap.GetMaterialAndIndestructibleContent(ref tempVoxelCoord, out voxelMaterialTemp, out minContentValueByte);\n\n                            int minContentValue = minContentValueByte;\n\n                            if (minContentValue != MyVoxelConstants.VOXEL_CONTENT_FULL)\n                            {\n                                indestructible = false;\n                            }\n\n                            //  Alter only non-empty voxels (because we can't remove empty voxel...)\n                            int originalContent = GetCachedVoxelContent(voxelMap, ref tempVoxelCoord, ref cachedSubtract);\n                            if (originalContent > minContentValue)\n                            {\n                                //  IMPORTANT: When doing transformations on 'content' value, cast it to int always!!!\n                                //  It's because you can easily forget that result will be negative and if you put negative into byte, it will\n                                //  be overflown and you will be surprised by results!!\n\n                                int newVal = originalContent - contentToRemove;\n                                if (newVal < minContentValue) newVal = minContentValue;\n\n                                voxelMap.SetVoxelContent((byte)newVal, ref tempVoxelCoord);\n                                SetCachedVoxelContent(voxelMap, ref tempVoxelCoord, ref cachedSubtract, (byte)newVal);\n\n                                //  Sum of all voxel contents affected by this explosion before we extract any voxel. This value is increasing per every voxel, no matter if we realy extract it.\n                                originalVoxelContentsSum += originalContent;\n\n                                //  Sum of all voxel contents we removed by this explosion. This value increases only if we extract something from voxel map.\n                                removedVoxelContentsSum += originalContent - newVal;\n\n                                if (exactCutOutMaterials != null)\n                                {\n                                    int oldValue = 0;\n                                    exactCutOutMaterials.TryGetValue(voxelMaterialTemp, out oldValue);\n                                    exactCutOutMaterials[voxelMaterialTemp] = oldValue + removedVoxelContentsSum;\n                                }\n\n                                if (tempVoxelCoord.X < minChanged.X) minChanged.X = tempVoxelCoord.X;\n                                if (tempVoxelCoord.Y < minChanged.Y) minChanged.Y = tempVoxelCoord.Y;\n                                if (tempVoxelCoord.Z < minChanged.Z) minChanged.Z = tempVoxelCoord.Z;\n                                if (tempVoxelCoord.X > maxChanged.X) maxChanged.X = tempVoxelCoord.X;\n                                if (tempVoxelCoord.Y > maxChanged.Y) maxChanged.Y = tempVoxelCoord.Y;\n                                if (tempVoxelCoord.Z > maxChanged.Z) maxChanged.Z = tempVoxelCoord.Z;\n                            }\n                        }\n                    }\n                }\n            }\n\n            InvalidateCache = false;\n\n            if (removedVoxelContentsSum > 0)\n            {\n                //  Extend borders for cleaning, so it's one pixel on both sides\n                minChanged.X -= 1;\n                minChanged.Y -= 1;\n                minChanged.Z -= 1;\n                maxChanged.X += 1;\n                maxChanged.Y += 1;\n                maxChanged.Z += 1;\n                voxelMap.FixVoxelCoord(ref minChanged);\n                voxelMap.FixVoxelCoord(ref maxChanged);\n\n                //  Clear all small voxel that may have been created during explosion. They can be created even outside the range of\n                //  explosion sphere, e.g. if you have three voxels in a row A, B, C, where A is 255, B is 60, and C is 255. During the\n                //  explosion you change C to 0, so now we have 255, 60, 0. Than another explosion that will change A to 0, so we \n                //  will have 0, 60, 0. But B was always outside the range of the explosion. So this is why we need to do -1/+1 and remove\n                //  B voxels too.\n                RemoveSmallVoxelsUsingChachedVoxels(voxelMap, ref minCorner, ref maxCorner, ref cachedSubtract);\n\n                //  Extend borders for invalidating the cache, so it's one pixel on both sides\n                minChanged.X -= 1;\n                minChanged.Y -= 1;\n                minChanged.Z -= 1;\n                maxChanged.X += 1;\n                maxChanged.Y += 1;\n                maxChanged.Z += 1;\n                voxelMap.FixVoxelCoord(ref minChanged);\n                voxelMap.FixVoxelCoord(ref maxChanged);\n\n                //  Invalidate cache for voxels cells covered by explosion and some boundary voxels too\n                voxelMap.InvalidateCache(minCorner, maxCorner);\n\n                voxelMap.AddExplosion(explosion);\n            }\n\n            if (originalVoxelContentsSum > 0f)\n            {\n                voxelsCountInPercent = (float)removedVoxelContentsSum / (float)originalVoxelContentsSum;\n            }\n            else\n            {\n                voxelsCountInPercent = 0f;\n            }\n\n            return indestructible;\n        }\n\n        //  Return cached voxel content. Voxel coord0 is defined by 'tempVoxelCoord', and it is absolute voxel coordinate in a voxel map.\n        //  Because cache isn't large as voxel map, we have to make subtracttion - so use 'relativeSubtract'.\n        //  IMPORTANT: This method doesn't check if voxel lies in the voxel map. That must be done by caller!\n        static byte GetCachedVoxelContent(MyVoxelMap voxelMap, ref MyMwcVector3Int voxelCoord, ref MyMwcVector3Int relativeSubtract)\n        {\n            MyMwcVector3Int relativeVoxelCoord;\n            relativeVoxelCoord.X = voxelCoord.X - relativeSubtract.X;\n            relativeVoxelCoord.Y = voxelCoord.Y - relativeSubtract.Y;\n            relativeVoxelCoord.Z = voxelCoord.Z - relativeSubtract.Z;\n\n            MyVoxelGeneratorCachedContent cachedContent = m_cachedContents[relativeVoxelCoord.X][relativeVoxelCoord.Y][relativeVoxelCoord.Z];\n\n            if (InvalidateCache)\n            {\n                //  Content of this voxel isn't yet cached, so we get it from voxel map and then store in cache\n                cachedContent.Content = voxelMap.GetVoxelContent(ref voxelCoord);\n            }\n\n            return cachedContent.Content;\n        }\n\n        //  Return cached voxel content. Voxel coord0 is defined by 'tempVoxelCoord', and it is absolute voxel coordinate in a voxel map.\n        //  Because cache isn't large as voxel map, we have to make subtracttion - so use 'relativeSubtract'.\n        //  IMPORTANT: This method doesn't check if voxel lies in the voxel map. That must be done by caller!\n        static void SetCachedVoxelContent(MyVoxelMap voxelMap, ref MyMwcVector3Int voxelCoord, ref MyMwcVector3Int relativeSubtract, byte content)\n        {\n            MyMwcVector3Int relativeVoxelCoord;\n            relativeVoxelCoord.X = voxelCoord.X - relativeSubtract.X;\n            relativeVoxelCoord.Y = voxelCoord.Y - relativeSubtract.Y;\n            relativeVoxelCoord.Z = voxelCoord.Z - relativeSubtract.Z;\n\n            MyVoxelGeneratorCachedContent cachedContent = m_cachedContents[relativeVoxelCoord.X][relativeVoxelCoord.Y][relativeVoxelCoord.Z];\n\n            //  Passes must match. Otherwise we are overwriting content not set in this pass and that is strange!\n            cachedContent.Content = content;\n        }\n\n        //  This method is similar to RemoveSmallVoxels, but used cached voxels, so is faster\n        public static void RemoveSmallVoxelsUsingChachedVoxels(MyVoxelMap voxelMap, ref MyMwcVector3Int minVoxel, ref MyMwcVector3Int maxVoxel, ref MyMwcVector3Int relativeSubtract)\n        {\n            MyMwcVector3Int voxel;\n            for (voxel.X = minVoxel.X; voxel.X <= maxVoxel.X; voxel.X++)\n            {\n                for (voxel.Y = minVoxel.Y; voxel.Y <= maxVoxel.Y; voxel.Y++)\n                {\n                    for (voxel.Z = minVoxel.Z; voxel.Z <= maxVoxel.Z; voxel.Z++)\n                    {\n                        //  IMPORTANT: When doing transformations on 'content' value, cast it to int always!!!\n                        //  It's because you can easily forget that result will be negative and if you put negative into byte, it will\n                        //  be overflown and you will be surprised by results!!\n\n                        //int content = voxelMap.GetVoxelContent(ref voxel);\n                        int content = GetCachedVoxelContent(voxelMap, ref voxel, ref relativeSubtract);\n\n                        //  Check if this is small/invisible voxel (less than 127), but still not empty (more than 0)\n                        if ((content > 0) && (content < MyVoxelConstants.VOXEL_ISO_LEVEL))\n                        {\n                            MyMwcVector3Int neighborVoxel;\n\n                            MyMwcVector3Int neighborVoxelMin;\n                            neighborVoxelMin.X = voxel.X - 1;\n                            neighborVoxelMin.Y = voxel.Y - 1;\n                            neighborVoxelMin.Z = voxel.Z - 1;\n\n                            MyMwcVector3Int neighborVoxelMax;\n                            neighborVoxelMax.X = voxel.X + 1;\n                            neighborVoxelMax.Y = voxel.Y + 1;\n                            neighborVoxelMax.Z = voxel.Z + 1;\n\n                            voxelMap.FixVoxelCoord(ref neighborVoxelMin);\n                            voxelMap.FixVoxelCoord(ref neighborVoxelMax);\n\n                            bool foundNonEmptyVoxel = false;\n                            for (neighborVoxel.X = neighborVoxelMin.X; neighborVoxel.X <= neighborVoxelMax.X; neighborVoxel.X++)\n                            {\n                                for (neighborVoxel.Y = neighborVoxelMin.Y; neighborVoxel.Y <= neighborVoxelMax.Y; neighborVoxel.Y++)\n                                {\n                                    for (neighborVoxel.Z = neighborVoxelMin.Z; neighborVoxel.Z <= neighborVoxelMax.Z; neighborVoxel.Z++)\n                                    {\n                                        //int neighborContent = voxelMap.GetVoxelContent(ref neighborVoxel);\n                                        int neighborContent = GetCachedVoxelContent(voxelMap, ref neighborVoxel, ref relativeSubtract);\n\n                                        //  Check if this is small/invisible voxel\n                                        if (neighborContent >= MyVoxelConstants.VOXEL_ISO_LEVEL)\n                                        {\n                                            foundNonEmptyVoxel = true;\n                                            goto END_NEIGHBOR_LOOP;\n                                        }\n                                    }\n                                }\n                            }\n\n                        END_NEIGHBOR_LOOP:\n\n                            if (foundNonEmptyVoxel == false)\n                            {\n                                voxelMap.SetVoxelContent(MyVoxelConstants.VOXEL_CONTENT_EMPTY, ref voxel);\n                            }\n                        }\n                    }\n                }\n            }\n        }\n\n        //  Removes voxels that have content less than half of iso value (so less than 0.5 or in byte it's 127). It's because\n        //  sometimes after many explosions we left the world with small voxels spread around that have this small values, but\n        //  doesn't have neighborhod full voxels, so we can't render them, but they occupy memory and are detected by col/det. So we don't want them.\n        //  We check only -1 and +1 neigbor!\n        //  IMPORTANT: This method isn't remover for 'floater' or 'small voxel islands'.\n        //  IMPORTANT: Use this method only offline, e.g. for clearing the levels. CutOutSphereFast has its own version optimized of clearing build into the algorithm\n        public static void RemoveSmallVoxels(MyVoxelMap voxelMap, MyMwcVector3Int minVoxel, MyMwcVector3Int maxVoxel)\n        {\n            MyMwcVector3Int voxel;\n            for (voxel.X = minVoxel.X; voxel.X <= maxVoxel.X; voxel.X++)\n            {\n                for (voxel.Y = minVoxel.Y; voxel.Y <= maxVoxel.Y; voxel.Y++)\n                {\n                    for (voxel.Z = minVoxel.Z; voxel.Z <= maxVoxel.Z; voxel.Z++)\n                    {\n                        //  IMPORTANT: When doing transformations on 'content' value, cast it to int always!!!\n                        //  It's because you can easily forget that result will be negative and if you put negative into byte, it will\n                        //  be overflown and you will be surprised by results!!\n\n                        int content = voxelMap.GetVoxelContent(ref voxel);\n\n                        //  Check if this is small/invisible voxel (less than 127), but still not empty (more than 0)\n                        if ((content > 0) && (content < MyVoxelConstants.VOXEL_ISO_LEVEL))\n                        {\n                            MyMwcVector3Int neighborVoxel;\n\n                            MyMwcVector3Int neighborVoxelMin;\n                            neighborVoxelMin.X = voxel.X - 1;\n                            neighborVoxelMin.Y = voxel.Y - 1;\n                            neighborVoxelMin.Z = voxel.Z - 1;\n\n                            MyMwcVector3Int neighborVoxelMax;\n                            neighborVoxelMax.X = voxel.X + 1;\n                            neighborVoxelMax.Y = voxel.Y + 1;\n                            neighborVoxelMax.Z = voxel.Z + 1;\n\n                            voxelMap.FixVoxelCoord(ref neighborVoxelMin);\n                            voxelMap.FixVoxelCoord(ref neighborVoxelMax);\n\n                            bool foundNonEmptyVoxel = false;\n                            for (neighborVoxel.X = neighborVoxelMin.X; neighborVoxel.X <= neighborVoxelMax.X; neighborVoxel.X++)\n                            {\n                                for (neighborVoxel.Y = neighborVoxelMin.Y; neighborVoxel.Y <= neighborVoxelMax.Y; neighborVoxel.Y++)\n                                {\n                                    for (neighborVoxel.Z = neighborVoxelMin.Z; neighborVoxel.Z <= neighborVoxelMax.Z; neighborVoxel.Z++)\n                                    {\n                                        int neighborContent = voxelMap.GetVoxelContent(ref neighborVoxel);\n\n                                        //  Check if this is small/invisible voxel\n                                        if (neighborContent >= MyVoxelConstants.VOXEL_ISO_LEVEL)\n                                        {\n                                            foundNonEmptyVoxel = true;\n                                            goto END_NEIGHBOR_LOOP;\n                                        }\n                                    }\n                                }\n                            }\n\n                        END_NEIGHBOR_LOOP:\n\n                            if (foundNonEmptyVoxel == false)\n                            {\n                                voxelMap.SetVoxelContent(MyVoxelConstants.VOXEL_CONTENT_EMPTY, ref voxel);\n                            }\n                        }\n                    }\n                }\n            }\n        }\n\n        //  Create box in a voxel map. Voxels inside the box are set to full. All voxels outside are ignored.\n        //  Box corners are in voxels, not metres.\n        //  Only full voxels are set, we don't care about partialy inside/outside.\n        public static void CreateBox(MyVoxelMap voxelMap, BoundingBox box)\n        {\n            MyMwcVector3Int minCorner = voxelMap.GetVoxelCoordinateFromMeters(box.Min);\n            MyMwcVector3Int maxCorner = voxelMap.GetVoxelCoordinateFromMeters(box.Max);\n\n            voxelMap.FixVoxelCoord(ref minCorner);\n            voxelMap.FixVoxelCoord(ref maxCorner);\n\n            MyMwcVector3Int tempVoxelCoord;\n            for (tempVoxelCoord.X = minCorner.X; tempVoxelCoord.X <= maxCorner.X; tempVoxelCoord.X++)\n            {\n                for (tempVoxelCoord.Y = minCorner.Y; tempVoxelCoord.Y <= maxCorner.Y; tempVoxelCoord.Y++)\n                {\n                    for (tempVoxelCoord.Z = minCorner.Z; tempVoxelCoord.Z <= maxCorner.Z; tempVoxelCoord.Z++)\n                    {\n                        voxelMap.SetVoxelContent(MyVoxelConstants.VOXEL_CONTENT_FULL, ref tempVoxelCoord);\n                    }\n                }\n            }\n        }\n\n        // This is same as normal CreateBox method, but cache is invalidated (so that voxel changes be immediately visible)\n        public static void CreateBoxInvalidateCache(MyVoxelMap voxelMap, BoundingBox box, ref bool changed)\n        {\n            //  Get min corner of the box\n            MyMwcVector3Int minCorner = voxelMap.GetVoxelCoordinateFromMeters(box.Min);\n\n            //  Get max corner of the box\n            MyMwcVector3Int maxCorner = voxelMap.GetVoxelCoordinateFromMeters(box.Max);\n\n            voxelMap.FixVoxelCoord(ref minCorner);\n            voxelMap.FixVoxelCoord(ref maxCorner);\n\n            //  We are tracking which voxels were changed, so we can invalidate only needed cells in the cache\n            MyMwcVector3Int minChanged = maxCorner;\n            MyMwcVector3Int maxChanged = minCorner;\n\n            bool sphereAdded = false;\n\n            MyMwcVector3Int tempVoxelCoord;\n            for (tempVoxelCoord.X = minCorner.X; tempVoxelCoord.X <= maxCorner.X; tempVoxelCoord.X++)\n            {\n                for (tempVoxelCoord.Y = minCorner.Y; tempVoxelCoord.Y <= maxCorner.Y; tempVoxelCoord.Y++)\n                {\n                    for (tempVoxelCoord.Z = minCorner.Z; tempVoxelCoord.Z <= maxCorner.Z; tempVoxelCoord.Z++)\n                    {\n                        byte newContent = MyVoxelConstants.VOXEL_CONTENT_FULL;\n\n                        byte originalContent = voxelMap.GetVoxelContent(ref tempVoxelCoord);\n\n                        if (newContent > originalContent)\n                        {\n                            changed = true;\n                            voxelMap.SetVoxelContent(newContent, ref tempVoxelCoord);\n                            sphereAdded = true;\n\n                            if (tempVoxelCoord.X < minChanged.X) minChanged.X = tempVoxelCoord.X;\n                            if (tempVoxelCoord.Y < minChanged.Y) minChanged.Y = tempVoxelCoord.Y;\n                            if (tempVoxelCoord.Z < minChanged.Z) minChanged.Z = tempVoxelCoord.Z;\n                            if (tempVoxelCoord.X > maxChanged.X) maxChanged.X = tempVoxelCoord.X;\n                            if (tempVoxelCoord.Y > maxChanged.Y) maxChanged.Y = tempVoxelCoord.Y;\n                            if (tempVoxelCoord.Z > maxChanged.Z) maxChanged.Z = tempVoxelCoord.Z;\n                        }\n                    }\n                }\n            }\n\n            if (sphereAdded == true)\n            {\n                //  Extend borders for cleaning, so it's one pixel on both sides\n                minChanged.X -= 1;\n                minChanged.Y -= 1;\n                minChanged.Z -= 1;\n                maxChanged.X += 1;\n                maxChanged.Y += 1;\n                maxChanged.Z += 1;\n                voxelMap.FixVoxelCoord(ref minChanged);\n                voxelMap.FixVoxelCoord(ref maxChanged);\n\n                voxelMap.InvalidateCache(minChanged, maxChanged);\n            }\n        }\n\n        //  Cut out box from a voxel map. Voxels inside the box are set to empty. All voxels outside are ignored.\n        //  Box corners are in voxels, not metres.\n        //  Only empty voxels are set, we don't care about partialy inside/outside.\n        public static void CutOutBox(MyVoxelMap voxelMap, BoundingBox box)\n        {\n            MyMwcVector3Int minCorner = voxelMap.GetVoxelCoordinateFromMeters(box.Min);\n            MyMwcVector3Int maxCorner = voxelMap.GetVoxelCoordinateFromMeters(box.Max);\n\n            voxelMap.FixVoxelCoord(ref minCorner);\n            voxelMap.FixVoxelCoord(ref maxCorner);\n\n            MyMwcVector3Int tempVoxelCoord;\n            for (tempVoxelCoord.X = minCorner.X; tempVoxelCoord.X <= maxCorner.X; tempVoxelCoord.X++)\n            {\n                for (tempVoxelCoord.Y = minCorner.Y; tempVoxelCoord.Y <= maxCorner.Y; tempVoxelCoord.Y++)\n                {\n                    for (tempVoxelCoord.Z = minCorner.Z; tempVoxelCoord.Z <= maxCorner.Z; tempVoxelCoord.Z++)\n                    {\n                        voxelMap.SetVoxelContent(MyVoxelConstants.VOXEL_CONTENT_EMPTY, ref tempVoxelCoord);\n                    }\n                }\n            }\n        }\n\n        //  This is same as normal cut-out box, but cache is invalidated (so that voxel changes be immediately visible)\n        public static void CutOutBoxInvalidateCache(MyVoxelMap voxelMap, BoundingBox box, ref bool changed)\n        {\n            //  Get min corner of the box\n            MyMwcVector3Int minCorner = voxelMap.GetVoxelCoordinateFromMeters(box.Min);\n\n            //  Get max corner of the box\n            MyMwcVector3Int maxCorner = voxelMap.GetVoxelCoordinateFromMeters(box.Max);\n\n            voxelMap.FixVoxelCoord(ref minCorner);\n            voxelMap.FixVoxelCoord(ref maxCorner);\n\n            //  We are tracking which voxels were changed, so we can invalidate only needed cells in the cache\n            MyMwcVector3Int minChanged = maxCorner;\n            MyMwcVector3Int maxChanged = minCorner;\n\n            int removedVoxelContent = 0;\n\n            MyMwcVector3Int tempVoxelCoord;\n            for (tempVoxelCoord.X = minCorner.X; tempVoxelCoord.X <= maxCorner.X; tempVoxelCoord.X++)\n            {\n                for (tempVoxelCoord.Y = minCorner.Y; tempVoxelCoord.Y <= maxCorner.Y; tempVoxelCoord.Y++)\n                {\n                    for (tempVoxelCoord.Z = minCorner.Z; tempVoxelCoord.Z <= maxCorner.Z; tempVoxelCoord.Z++)\n                    {\n                        Vector3 voxelPosition = voxelMap.GetVoxelCenterPositionAbsolute(ref tempVoxelCoord);\n                        byte contentToRemove = MyVoxelConstants.VOXEL_CONTENT_FULL;\n\n                        int originalContent = voxelMap.GetVoxelContent(ref tempVoxelCoord);\n                        if (originalContent > MyVoxelConstants.VOXEL_CONTENT_EMPTY)\n                        {\n                            changed = true;\n\n                            int newVal = originalContent - contentToRemove;\n                            if (newVal < MyVoxelConstants.VOXEL_CONTENT_EMPTY)\n                                newVal = MyVoxelConstants.VOXEL_CONTENT_EMPTY;\n\n                            voxelMap.SetVoxelContent((byte)newVal, ref tempVoxelCoord);\n\n                            removedVoxelContent += originalContent - newVal;\n\n                            if (tempVoxelCoord.X < minChanged.X) minChanged.X = tempVoxelCoord.X;\n                            if (tempVoxelCoord.Y < minChanged.Y) minChanged.Y = tempVoxelCoord.Y;\n                            if (tempVoxelCoord.Z < minChanged.Z) minChanged.Z = tempVoxelCoord.Z;\n                            if (tempVoxelCoord.X > maxChanged.X) maxChanged.X = tempVoxelCoord.X;\n                            if (tempVoxelCoord.Y > maxChanged.Y) maxChanged.Y = tempVoxelCoord.Y;\n                            if (tempVoxelCoord.Z > maxChanged.Z) maxChanged.Z = tempVoxelCoord.Z;\n                        }\n                    }\n                }\n            }\n\n            if (removedVoxelContent > 0)\n            {\n                //  Extend borders for cleaning, so it's one pixel on both sides\n                minChanged.X -= 1;\n                minChanged.Y -= 1;\n                minChanged.Z -= 1;\n                maxChanged.X += 1;\n                maxChanged.Y += 1;\n                maxChanged.Z += 1;\n                voxelMap.FixVoxelCoord(ref minChanged);\n                voxelMap.FixVoxelCoord(ref maxChanged);\n\n                voxelMap.InvalidateCache(minChanged, maxChanged);\n            }\n        }\n\n        //  Clears voxel map, set every voxel to empty.\n        //  IMPORTANT: Don't use this method, because it destroys idea of not remembering full cells.\n        public static void ClearWholeVoxelMap(MyVoxelMap voxelMap)\n        {\n            MyMwcVector3Int tempVoxelCoord;\n            for (tempVoxelCoord.X = 0; tempVoxelCoord.X < voxelMap.Size.X; tempVoxelCoord.X++)\n            {\n                for (tempVoxelCoord.Y = 0; tempVoxelCoord.Y < voxelMap.Size.Y; tempVoxelCoord.Y++)\n                {\n                    for (tempVoxelCoord.Z = 0; tempVoxelCoord.Z < voxelMap.Size.Z; tempVoxelCoord.Z++)\n                    {\n                        voxelMap.SetVoxelContent(MyVoxelConstants.VOXEL_CONTENT_EMPTY, ref tempVoxelCoord);\n                    }\n                }\n            }\n        }\n\n        //  Generates sphere in a voxel map. We modify only voxels inside the sphere - set them to full or partialy full.\n        //  Other voxel are untouched. Center is relative to voxel map (not world coordinates). Radius is in metres.\n        public static void CreateSphere(MyVoxelMap voxelMap, BoundingSphere sphere)\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyVoxelGenerator.CreateSphere\");\n\n            //  Get min corner of the explosion\n            MyMwcVector3Int minCorner = voxelMap.GetVoxelCoordinateFromMeters(new Vector3(\n                sphere.Center.X - sphere.Radius - MyVoxelConstants.VOXEL_SIZE_IN_METRES,\n                sphere.Center.Y - sphere.Radius - MyVoxelConstants.VOXEL_SIZE_IN_METRES,\n                sphere.Center.Z - sphere.Radius - MyVoxelConstants.VOXEL_SIZE_IN_METRES));\n\n            //  Get max corner of the explosion\n            MyMwcVector3Int maxCorner = voxelMap.GetVoxelCoordinateFromMeters(new Vector3(\n                sphere.Center.X + sphere.Radius + MyVoxelConstants.VOXEL_SIZE_IN_METRES,\n                sphere.Center.Y + sphere.Radius + MyVoxelConstants.VOXEL_SIZE_IN_METRES,\n                sphere.Center.Z + sphere.Radius + MyVoxelConstants.VOXEL_SIZE_IN_METRES));\n\n            voxelMap.FixVoxelCoord(ref minCorner);\n            voxelMap.FixVoxelCoord(ref maxCorner);\n\n            MyMwcVector3Int tempVoxelCoord;\n            for (tempVoxelCoord.X = minCorner.X; tempVoxelCoord.X <= maxCorner.X; tempVoxelCoord.X++)\n            {\n                for (tempVoxelCoord.Y = minCorner.Y; tempVoxelCoord.Y <= maxCorner.Y; tempVoxelCoord.Y++)\n                {\n                    for (tempVoxelCoord.Z = minCorner.Z; tempVoxelCoord.Z <= maxCorner.Z; tempVoxelCoord.Z++)\n                    {\n                        Vector3 voxelPosition = voxelMap.GetVoxelCenterPositionAbsolute(ref tempVoxelCoord);\n                        float dist = (voxelPosition - sphere.Center).Length();\n                        float diff = dist - sphere.Radius;\n\n                        byte newContent;\n                        if (diff > MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF)\n                        {\n                            newContent = MyVoxelConstants.VOXEL_CONTENT_EMPTY;\n                        }\n                        else if (diff < -MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF)\n                        {\n                            newContent = MyVoxelConstants.VOXEL_CONTENT_FULL;\n                        }\n                        else\n                        {\n                            //  This formula will work even if diff is positive or negative\n                            newContent = (byte)(MyVoxelConstants.VOXEL_ISO_LEVEL - diff / MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF * MyVoxelConstants.VOXEL_ISO_LEVEL);\n                        }\n\n                        byte originalContent = voxelMap.GetVoxelContent(ref tempVoxelCoord);\n\n                        if (newContent > originalContent)\n                        {\n                            voxelMap.SetVoxelContent(newContent, ref tempVoxelCoord);\n                        }\n                    }\n                }\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        // This is same as normal CreateSphere method, but cache is invalidated (so that voxel changes be immediately visible)\n        public static void CreateSphereInvalidateCache(MyVoxelMap voxelMap, BoundingSphere sphere, ref bool changed, MyMwcVoxelMaterialsEnum? material)\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyVoxelGenerator.CreateSphereInvalidateCache\");\n\n            //  Get min corner of the explosion\n            MyMwcVector3Int minCorner = voxelMap.GetVoxelCoordinateFromMeters(new Vector3(\n                sphere.Center.X - sphere.Radius - MyVoxelConstants.VOXEL_SIZE_IN_METRES,\n                sphere.Center.Y - sphere.Radius - MyVoxelConstants.VOXEL_SIZE_IN_METRES,\n                sphere.Center.Z - sphere.Radius - MyVoxelConstants.VOXEL_SIZE_IN_METRES));\n\n            //  Get max corner of the explosion\n            MyMwcVector3Int maxCorner = voxelMap.GetVoxelCoordinateFromMeters(new Vector3(\n                sphere.Center.X + sphere.Radius + MyVoxelConstants.VOXEL_SIZE_IN_METRES,\n                sphere.Center.Y + sphere.Radius + MyVoxelConstants.VOXEL_SIZE_IN_METRES,\n                sphere.Center.Z + sphere.Radius + MyVoxelConstants.VOXEL_SIZE_IN_METRES));\n\n            voxelMap.FixVoxelCoord(ref minCorner);\n            voxelMap.FixVoxelCoord(ref maxCorner);\n\n            //  We are tracking which voxels were changed, so we can invalidate only needed cells in the cache\n            MyMwcVector3Int minChanged = maxCorner;\n            MyMwcVector3Int maxChanged = minCorner;\n\n            bool sphereAdded = false;\n\n            MyMwcVector3Int tempVoxelCoord;\n            for (tempVoxelCoord.X = minCorner.X; tempVoxelCoord.X <= maxCorner.X; tempVoxelCoord.X++)\n            {\n                for (tempVoxelCoord.Y = minCorner.Y; tempVoxelCoord.Y <= maxCorner.Y; tempVoxelCoord.Y++)\n                {\n                    for (tempVoxelCoord.Z = minCorner.Z; tempVoxelCoord.Z <= maxCorner.Z; tempVoxelCoord.Z++)\n                    {\n                        Vector3 voxelPosition = voxelMap.GetVoxelCenterPositionAbsolute(ref tempVoxelCoord);\n                        float dist = (voxelPosition - sphere.Center).Length();\n                        float diff = dist - sphere.Radius;\n\n                        byte newContent;\n                        if (diff > MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF)\n                        {\n                            newContent = MyVoxelConstants.VOXEL_CONTENT_EMPTY;\n                        }\n                        else if (diff < -MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF)\n                        {\n                            newContent = MyVoxelConstants.VOXEL_CONTENT_FULL;\n                        }\n                        else\n                        {\n                            //  This formula will work even if diff is positive or negative\n                            newContent = (byte)(MyVoxelConstants.VOXEL_ISO_LEVEL - diff / MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF * MyVoxelConstants.VOXEL_ISO_LEVEL);\n                        }\n\n                        byte originalContent = voxelMap.GetVoxelContent(ref tempVoxelCoord);\n\n                        if (newContent > originalContent)\n                        {\n                            if (material.HasValue)\n                            {\n                                MyMwcVoxelMaterialsEnum originalMaterial;\n                                byte originalIndestructibleContent;\n\n                                voxelMap.GetMaterialAndIndestructibleContent(ref tempVoxelCoord, out originalMaterial, out originalIndestructibleContent);\n                                voxelMap.SetVoxelMaterialAndIndestructibleContent(material.Value, originalIndestructibleContent, ref tempVoxelCoord);\n                            }\n\n                            changed = true;\n                            voxelMap.SetVoxelContent(newContent, ref tempVoxelCoord);\n                            sphereAdded = true;\n\n                            if (tempVoxelCoord.X < minChanged.X) minChanged.X = tempVoxelCoord.X;\n                            if (tempVoxelCoord.Y < minChanged.Y) minChanged.Y = tempVoxelCoord.Y;\n                            if (tempVoxelCoord.Z < minChanged.Z) minChanged.Z = tempVoxelCoord.Z;\n                            if (tempVoxelCoord.X > maxChanged.X) maxChanged.X = tempVoxelCoord.X;\n                            if (tempVoxelCoord.Y > maxChanged.Y) maxChanged.Y = tempVoxelCoord.Y;\n                            if (tempVoxelCoord.Z > maxChanged.Z) maxChanged.Z = tempVoxelCoord.Z;\n                        }\n                    }\n                }\n            }\n\n            if (sphereAdded == true)\n            {\n                //  Extend borders for cleaning, so it's one pixel on both sides\n                minChanged.X -= 1;\n                minChanged.Y -= 1;\n                minChanged.Z -= 1;\n                maxChanged.X += 1;\n                maxChanged.Y += 1;\n                maxChanged.Z += 1;\n                voxelMap.FixVoxelCoord(ref minChanged);\n                voxelMap.FixVoxelCoord(ref maxChanged);\n\n                voxelMap.InvalidateCache(minChanged, maxChanged);\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        //  Cut-outs a sphere from a voxel map.\n        //  Generates inverse sphere in a voxel map (extract matters, create hole, etc - it's like explosion). We modify only voxels inside the sphere - set them to full or partialy full.\n        //  Other voxel are untouched. Center is relative to voxel map (not world coordinates). Radius is in metres.\n        //\n        //  IMPORTANT:\n        //  This is non-optimized version (faster one is CutOutSphereFast). But it doesn't mean this one is slow... the difference is probably just 10-20%\n        public static void CutOutSphere(MyVoxelMap voxelMap, BoundingSphere sphere)\n        {\n            //  Get min corner of the explosion\n            MyMwcVector3Int minCorner = voxelMap.GetVoxelCoordinateFromMeters(new Vector3(\n                sphere.Center.X - sphere.Radius - MyVoxelConstants.VOXEL_SIZE_IN_METRES,\n                sphere.Center.Y - sphere.Radius - MyVoxelConstants.VOXEL_SIZE_IN_METRES,\n                sphere.Center.Z - sphere.Radius - MyVoxelConstants.VOXEL_SIZE_IN_METRES));\n\n            //  Get max corner of the explosion\n            MyMwcVector3Int maxCorner = voxelMap.GetVoxelCoordinateFromMeters(new Vector3(\n                sphere.Center.X + sphere.Radius + MyVoxelConstants.VOXEL_SIZE_IN_METRES,\n                sphere.Center.Y + sphere.Radius + MyVoxelConstants.VOXEL_SIZE_IN_METRES,\n                sphere.Center.Z + sphere.Radius + MyVoxelConstants.VOXEL_SIZE_IN_METRES));\n\n            voxelMap.FixVoxelCoord(ref minCorner);\n            voxelMap.FixVoxelCoord(ref maxCorner);\n\n            MyMwcVector3Int tempVoxelCoord;\n            for (tempVoxelCoord.X = minCorner.X; tempVoxelCoord.X <= maxCorner.X; tempVoxelCoord.X++)\n            {\n                for (tempVoxelCoord.Y = minCorner.Y; tempVoxelCoord.Y <= maxCorner.Y; tempVoxelCoord.Y++)\n                {\n                    for (tempVoxelCoord.Z = minCorner.Z; tempVoxelCoord.Z <= maxCorner.Z; tempVoxelCoord.Z++)\n                    {\n                        Vector3 voxelPosition = voxelMap.GetVoxelCenterPositionAbsolute(ref tempVoxelCoord);\n                        float dist = (voxelPosition - sphere.Center).Length();\n                        float diff = dist - sphere.Radius;\n\n                        byte contentToRemove;\n                        if (diff > MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF)\n                        {\n                            contentToRemove = MyVoxelConstants.VOXEL_CONTENT_EMPTY;\n                        }\n                        else if (diff < -MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF)\n                        {\n                            contentToRemove = MyVoxelConstants.VOXEL_CONTENT_FULL;\n                        }\n                        else\n                        {\n                            //  This formula will work even if diff is positive or negative\n                            contentToRemove = (byte)(MyVoxelConstants.VOXEL_ISO_LEVEL - diff / MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF * MyVoxelConstants.VOXEL_ISO_LEVEL);\n                        }\n\n                        int originalContent = voxelMap.GetVoxelContent(ref tempVoxelCoord);\n                        if (originalContent > MyVoxelConstants.VOXEL_CONTENT_EMPTY)\n                        {\n                            int newVal = originalContent - contentToRemove;\n                            if (newVal < MyVoxelConstants.VOXEL_CONTENT_EMPTY) newVal = MyVoxelConstants.VOXEL_CONTENT_EMPTY;\n                            voxelMap.SetVoxelContent((byte)newVal, ref tempVoxelCoord);\n                        }\n\n                    }\n                }\n            }\n        }\n\n        //  This is same as normal cut-out sphere, but cache is invalidated like in cut-out sphere fast(so that voxel cut-out will be immediately visible)\n        public static void CutOutSphereInvalidateCache(MyVoxelMap voxelMap, BoundingSphere sphere, ref bool changed)\n        {\n            //  Get min corner of the explosion\n            MyMwcVector3Int minCorner = voxelMap.GetVoxelCoordinateFromMeters(new Vector3(\n                sphere.Center.X - sphere.Radius - MyVoxelConstants.VOXEL_SIZE_IN_METRES,\n                sphere.Center.Y - sphere.Radius - MyVoxelConstants.VOXEL_SIZE_IN_METRES,\n                sphere.Center.Z - sphere.Radius - MyVoxelConstants.VOXEL_SIZE_IN_METRES));\n\n            //  Get max corner of the explosion\n            MyMwcVector3Int maxCorner = voxelMap.GetVoxelCoordinateFromMeters(new Vector3(\n                sphere.Center.X + sphere.Radius + MyVoxelConstants.VOXEL_SIZE_IN_METRES,\n                sphere.Center.Y + sphere.Radius + MyVoxelConstants.VOXEL_SIZE_IN_METRES,\n                sphere.Center.Z + sphere.Radius + MyVoxelConstants.VOXEL_SIZE_IN_METRES));\n\n            voxelMap.FixVoxelCoord(ref minCorner);\n            voxelMap.FixVoxelCoord(ref maxCorner);\n\n            //  We are tracking which voxels were changed, so we can invalidate only needed cells in the cache\n            MyMwcVector3Int minChanged = maxCorner;\n            MyMwcVector3Int maxChanged = minCorner;\n\n            int removedVoxelContent = 0;\n\n            MyMwcVector3Int tempVoxelCoord;\n            for (tempVoxelCoord.X = minCorner.X; tempVoxelCoord.X <= maxCorner.X; tempVoxelCoord.X++)\n            {\n                for (tempVoxelCoord.Y = minCorner.Y; tempVoxelCoord.Y <= maxCorner.Y; tempVoxelCoord.Y++)\n                {\n                    for (tempVoxelCoord.Z = minCorner.Z; tempVoxelCoord.Z <= maxCorner.Z; tempVoxelCoord.Z++)\n                    {\n                        Vector3 voxelPosition = voxelMap.GetVoxelCenterPositionAbsolute(ref tempVoxelCoord);\n                        float dist = (voxelPosition - sphere.Center).Length();\n                        float diff = dist - sphere.Radius;\n\n                        byte contentToRemove;\n                        if (diff > MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF)\n                        {\n                            contentToRemove = MyVoxelConstants.VOXEL_CONTENT_EMPTY;\n                        }\n                        else if (diff < -MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF)\n                        {\n                            contentToRemove = MyVoxelConstants.VOXEL_CONTENT_FULL;\n                        }\n                        else\n                        {\n                            //  This formula will work even if diff is positive or negative\n                            contentToRemove = (byte)(MyVoxelConstants.VOXEL_ISO_LEVEL - diff / MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF * MyVoxelConstants.VOXEL_ISO_LEVEL);\n                        }\n\n                        int originalContent = voxelMap.GetVoxelContent(ref tempVoxelCoord);\n                        if (originalContent > MyVoxelConstants.VOXEL_CONTENT_EMPTY && contentToRemove > MyVoxelConstants.VOXEL_CONTENT_EMPTY)\n                        {\n                            changed = true;\n\n                            int newVal = originalContent - contentToRemove;\n                            if (newVal < MyVoxelConstants.VOXEL_CONTENT_EMPTY) newVal = MyVoxelConstants.VOXEL_CONTENT_EMPTY;\n                            voxelMap.SetVoxelContent((byte)newVal, ref tempVoxelCoord);\n\n                            removedVoxelContent += originalContent - newVal;\n\n                            if (tempVoxelCoord.X < minChanged.X) minChanged.X = tempVoxelCoord.X;\n                            if (tempVoxelCoord.Y < minChanged.Y) minChanged.Y = tempVoxelCoord.Y;\n                            if (tempVoxelCoord.Z < minChanged.Z) minChanged.Z = tempVoxelCoord.Z;\n                            if (tempVoxelCoord.X > maxChanged.X) maxChanged.X = tempVoxelCoord.X;\n                            if (tempVoxelCoord.Y > maxChanged.Y) maxChanged.Y = tempVoxelCoord.Y;\n                            if (tempVoxelCoord.Z > maxChanged.Z) maxChanged.Z = tempVoxelCoord.Z;\n                        }\n                    }\n                }\n            }\n\n            if (removedVoxelContent > 0)\n            {\n                //  Extend borders for cleaning, so it's one pixel on both sides\n                minChanged.X -= 1;\n                minChanged.Y -= 1;\n                minChanged.Z -= 1;\n                maxChanged.X += 1;\n                maxChanged.Y += 1;\n                maxChanged.Z += 1;\n                voxelMap.FixVoxelCoord(ref minChanged);\n                voxelMap.FixVoxelCoord(ref maxChanged);\n\n                voxelMap.InvalidateCache(minChanged, maxChanged);\n            }\n        }\n\n\n        public static void CutOutBoxRelative(MyVoxelMap voxelMap, Vector3 relativeMin, Vector3 relativeMax)\n        {\n            BoundingBox boundingBox = voxelMap.WorldAABB;\n\n            //  Get min and max cell coordinate where camera bounding box can fit\n            MyMwcVector3Int cellCoordMin = voxelMap.GetVoxelCoordinateFromMeters(boundingBox.Min);\n            MyMwcVector3Int cellCoordMax = voxelMap.GetVoxelCoordinateFromMeters(boundingBox.Max);\n\n            //  Fix min and max cell coordinates so they don't overlap the voxelmap\n            voxelMap.FixVoxelCoord(ref cellCoordMin);\n            voxelMap.FixVoxelCoord(ref cellCoordMax);\n\n            cellCoordMin.X = (int)(cellCoordMax.X * relativeMin.X);\n            cellCoordMin.Y = (int)(cellCoordMax.Y * relativeMin.Y);\n            cellCoordMin.Z = (int)(cellCoordMax.Z * relativeMin.Z);\n\n            cellCoordMax.X = (int)(cellCoordMax.X * relativeMax.X);\n            cellCoordMax.Y = (int)(cellCoordMax.Y * relativeMax.Y);\n            cellCoordMax.Z = (int)(cellCoordMax.Z * relativeMax.Z);\n\n            MyMwcVector3Int cellCoord;\n\n            for (cellCoord.X = cellCoordMin.X; cellCoord.X <= cellCoordMax.X; cellCoord.X++)\n            {\n                for (cellCoord.Y = cellCoordMin.Y; cellCoord.Y <= cellCoordMax.Y; cellCoord.Y++)\n                {\n                    for (cellCoord.Z = cellCoordMin.Z; cellCoord.Z <= cellCoordMax.Z; cellCoord.Z++)\n                    {\n                        voxelMap.SetVoxelContent(0, ref cellCoord);\n                    }\n                }\n            }\n\n            voxelMap.InvalidateCache(cellCoordMin, cellCoordMax);\n            voxelMap.CalcAverageDataCellMaterials();\n\n            //MyVoxelMaps.RecalcVoxelMaps();\n        }\n\n\n        public static void ChangeMaterialInBoxRelative(MyVoxelMap voxelMap, Vector3 relativeMin, Vector3 relativeMax, MyMwcVoxelMaterialsEnum material)\n        {\n            BoundingBox boundingBox = voxelMap.WorldAABB;\n\n            //  Get min and max cell coordinate where camera bounding box can fit\n            MyMwcVector3Int cellCoordMin = voxelMap.GetVoxelCoordinateFromMeters(boundingBox.Min);\n            MyMwcVector3Int cellCoordMax = voxelMap.GetVoxelCoordinateFromMeters(boundingBox.Max);\n\n            //  Fix min and max cell coordinates so they don't overlap the voxelmap\n            voxelMap.FixVoxelCoord(ref cellCoordMin);\n            voxelMap.FixVoxelCoord(ref cellCoordMax);\n\n            cellCoordMin.X = (int)(cellCoordMax.X * relativeMin.X);\n            cellCoordMin.Y = (int)(cellCoordMax.Y * relativeMin.Y);\n            cellCoordMin.Z = (int)(cellCoordMax.Z * relativeMin.Z);\n\n            cellCoordMax.X = (int)(cellCoordMax.X * relativeMax.X);\n            cellCoordMax.Y = (int)(cellCoordMax.Y * relativeMax.Y);\n            cellCoordMax.Z = (int)(cellCoordMax.Z * relativeMax.Z);\n\n            MyMwcVector3Int cellCoord;\n\n            for (cellCoord.X = cellCoordMin.X; cellCoord.X <= cellCoordMax.X; cellCoord.X++)\n            {\n                for (cellCoord.Y = cellCoordMin.Y; cellCoord.Y <= cellCoordMax.Y; cellCoord.Y++)\n                {\n                    for (cellCoord.Z = cellCoordMin.Z; cellCoord.Z <= cellCoordMax.Z; cellCoord.Z++)\n                    {\n                        voxelMap.SetVoxelMaterialAndIndestructibleContent(material, 0, ref cellCoord);\n                    }\n                }\n            }\n\n            voxelMap.InvalidateCache(cellCoordMin, cellCoordMax);\n            voxelMap.CalcAverageDataCellMaterials();\n\n            //MyVoxelMaps.RecalcVoxelMaps();\n        }\n\n\n        public static void CreateOrientedBox(MyVoxelMap voxelMap, MyOrientedBoundingBox box, MyMwcVoxelMaterialsEnum? material)\n        {\n            BoundingBox aabb = box.GetAABB();\n\n            MyMwcVector3Int minCorner = voxelMap.GetVoxelCoordinateFromMeters(aabb.Min - new Vector3(MyVoxelConstants.VOXEL_SIZE_IN_METRES));\n            MyMwcVector3Int maxCorner = voxelMap.GetVoxelCoordinateFromMeters(aabb.Max + new Vector3(MyVoxelConstants.VOXEL_SIZE_IN_METRES));\n\n            voxelMap.FixVoxelCoord(ref minCorner);\n            voxelMap.FixVoxelCoord(ref maxCorner);\n\n            MyMwcVector3Int tempVoxelCoord;\n            for (tempVoxelCoord.X = minCorner.X; tempVoxelCoord.X <= maxCorner.X; tempVoxelCoord.X++)\n            {\n                for (tempVoxelCoord.Y = minCorner.Y; tempVoxelCoord.Y <= maxCorner.Y; tempVoxelCoord.Y++)\n                {\n                    for (tempVoxelCoord.Z = minCorner.Z; tempVoxelCoord.Z <= maxCorner.Z; tempVoxelCoord.Z++)\n                    {\n                        Vector3 position = voxelMap.GetVoxelCenterPositionAbsolute(ref tempVoxelCoord);\n                        BoundingBox voxelAABB = new BoundingBox(position - new Vector3(MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF), position + new Vector3(MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF));\n\n                        byte newContent = 0;\n                        ContainmentType ct = box.Contains(ref voxelAABB);\n                        if (ct == ContainmentType.Contains)\n                        {\n                            newContent = MyVoxelConstants.VOXEL_CONTENT_FULL;\n                        }\n                        else\n                            if (ct == ContainmentType.Disjoint)\n                            {\n                                newContent = MyVoxelConstants.VOXEL_CONTENT_EMPTY;\n                            }\n                            else\n                            {\n\n                                // Transform the point into box-local space and check against\n                                // our extents.\n                                Quaternion qinv = Quaternion.Conjugate(box.Orientation);\n                                Vector3 plocal = Vector3.Transform(position - box.Center, qinv);\n\n                                //MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF \n\n                                float distX = 0;\n                                float distY = 0;\n                                float distZ = 0;\n\n                                int sX = System.Math.Sign(plocal.X);\n                                int sY = System.Math.Sign(plocal.Y);\n                                int sZ = System.Math.Sign(plocal.Z);\n\n                                if (sX > 0)\n                                {\n                                    distX = plocal.X - box.HalfExtent.X;\n                                }\n                                else\n                                {\n                                    distX = plocal.X + box.HalfExtent.X;\n                                }\n\n                                if (sY > 0)\n                                {\n                                    distY = plocal.Y - box.HalfExtent.Y;\n                                }\n                                else\n                                {\n                                    distY = plocal.Y + box.HalfExtent.Y;\n                                }\n\n                                if (sZ > 0)\n                                {\n                                    distZ = plocal.Z - box.HalfExtent.Z;\n                                }\n                                else\n                                {\n                                    distZ = plocal.Z + box.HalfExtent.Z;\n                                }\n\n                                //float diff = (distX + distY + distZ) / 3;\n                                //float diff = (sX*sY*sZ) * System.Math.Min(System.Math.Min(distX,distY), distZ);\n\n                                int contentX;\n                                int contentY;\n                                int contentZ;\n\n                                if (sX > 0)\n                                {\n                                    if (distX > MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF)\n                                    {\n                                        contentX = MyVoxelConstants.VOXEL_CONTENT_EMPTY;\n                                    }\n                                    else if (distX < -MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF)\n                                    {\n                                        contentX = MyVoxelConstants.VOXEL_CONTENT_FULL;\n                                    }\n                                    else\n                                    {\n                                        //  This formula will work even if diff is positive or negative\n                                        contentX = (byte)(MyVoxelConstants.VOXEL_ISO_LEVEL - distX / MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF * MyVoxelConstants.VOXEL_ISO_LEVEL);\n                                    }\n                                }\n                                else\n                                {\n                                    if (distX < -MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF)\n                                    {\n                                        contentX = MyVoxelConstants.VOXEL_CONTENT_EMPTY;\n                                    }\n                                    else if (distX > MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF)\n                                    {\n                                        contentX = MyVoxelConstants.VOXEL_CONTENT_FULL;\n                                    }\n                                    else\n                                    {\n                                        //  This formula will work even if diff is positive or negative\n                                        contentX = MyVoxelConstants.VOXEL_CONTENT_FULL - (byte)(MyVoxelConstants.VOXEL_ISO_LEVEL - distX / MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF * MyVoxelConstants.VOXEL_ISO_LEVEL);\n                                    }\n                                }\n\n\n\n                                if (sY > 0)\n                                {\n                                    if (distY > MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF)\n                                    {\n                                        contentY = MyVoxelConstants.VOXEL_CONTENT_EMPTY;\n                                    }\n                                    else if (distY < -MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF)\n                                    {\n                                        contentY = MyVoxelConstants.VOXEL_CONTENT_FULL;\n                                    }\n                                    else\n                                    {\n                                        //  This formula will work even if diff is positive or negative\n                                        contentY = (byte)(MyVoxelConstants.VOXEL_ISO_LEVEL - distY / MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF * MyVoxelConstants.VOXEL_ISO_LEVEL);\n                                    }\n                                }\n                                else\n                                {\n                                    if (distY < -MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF)\n                                    {\n                                        contentY = MyVoxelConstants.VOXEL_CONTENT_EMPTY;\n                                    }\n                                    else if (distY > MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF)\n                                    {\n                                        contentY = MyVoxelConstants.VOXEL_CONTENT_FULL;\n                                    }\n                                    else\n                                    {\n                                        //  This formula will work even if diff is positive or negative\n                                        contentY = MyVoxelConstants.VOXEL_CONTENT_FULL - (byte)(MyVoxelConstants.VOXEL_ISO_LEVEL - distY / MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF * MyVoxelConstants.VOXEL_ISO_LEVEL);\n                                    }\n                                }\n\n\n                                if (sZ > 0)\n                                {\n                                    if (distZ > MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF)\n                                    {\n                                        contentZ = MyVoxelConstants.VOXEL_CONTENT_EMPTY;\n                                    }\n                                    else if (distZ < -MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF)\n                                    {\n                                        contentZ = MyVoxelConstants.VOXEL_CONTENT_FULL;\n                                    }\n                                    else\n                                    {\n                                        //  This formula will work even if diff is positive or negative\n                                        contentZ = (byte)(MyVoxelConstants.VOXEL_ISO_LEVEL - distZ / MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF * MyVoxelConstants.VOXEL_ISO_LEVEL);\n                                    }\n                                }\n                                else\n                                {\n                                    if (distZ < -MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF)\n                                    {\n                                        contentZ = MyVoxelConstants.VOXEL_CONTENT_EMPTY;\n                                    }\n                                    else if (distZ > MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF)\n                                    {\n                                        contentZ = MyVoxelConstants.VOXEL_CONTENT_FULL;\n                                    }\n                                    else\n                                    {\n                                        //  This formula will work even if diff is positive or negative\n                                        contentZ = MyVoxelConstants.VOXEL_CONTENT_FULL - (byte)(MyVoxelConstants.VOXEL_ISO_LEVEL - distZ / MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF * MyVoxelConstants.VOXEL_ISO_LEVEL);\n                                    }\n                                }\n\n                                //voxelMap.SetVoxelContent( (byte)((contentX + contentY + contentZ)/3.0f), ref tempVoxelCoord);\n                                newContent = (byte)(System.Math.Min(System.Math.Min(contentX, contentY), contentZ));\n                            }\n\n\n                        byte originalContent = voxelMap.GetVoxelContent(ref tempVoxelCoord);\n\n                        if (newContent > originalContent)\n                        {\n                            voxelMap.SetVoxelContent(newContent, ref tempVoxelCoord);\n                            if (material.HasValue)\n                                voxelMap.SetVoxelMaterialAndIndestructibleContent(material.Value, 0, ref tempVoxelCoord);\n                        }\n\n\n                    }\n                }\n            }\n\n            voxelMap.InvalidateCache(minCorner, maxCorner);\n            voxelMap.CalcAverageDataCellMaterials();\n        }\n\n\n        public static void CutOutOrientedBox(MyVoxelMap voxelMap, MyOrientedBoundingBox box, ref bool changed)\n        {\n            BoundingBox aabb = box.GetAABB();\n\n            MyMwcVector3Int minCorner = voxelMap.GetVoxelCoordinateFromMeters(aabb.Min - new Vector3(MyVoxelConstants.VOXEL_SIZE_IN_METRES));\n            MyMwcVector3Int maxCorner = voxelMap.GetVoxelCoordinateFromMeters(aabb.Max + new Vector3(MyVoxelConstants.VOXEL_SIZE_IN_METRES));\n\n            voxelMap.FixVoxelCoord(ref minCorner);\n            voxelMap.FixVoxelCoord(ref maxCorner);\n\n            System.Threading.Tasks.Parallel.For(minCorner.X, maxCorner.X, i =>\n                {\n                    System.Threading.Tasks.Parallel.For(minCorner.Y, maxCorner.Y, j =>\n                        {\n                            System.Threading.Tasks.Parallel.For(minCorner.Z, maxCorner.Z, k =>\n                            {\n                                MyMwcVector3Int tempVoxelCoord = new MyMwcVector3Int(i, j, k);\n                                Vector3 position = voxelMap.GetVoxelCenterPositionAbsolute(ref tempVoxelCoord);\n                                BoundingBox voxelAABB = new BoundingBox(position - new Vector3(MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF), position + new Vector3(MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF));\n\n                                byte newContent = 0;\n                                ContainmentType ct = box.Contains(ref voxelAABB);\n                                if (ct == ContainmentType.Contains)\n                                {\n                                    newContent = MyVoxelConstants.VOXEL_CONTENT_EMPTY;\n                                }\n                                else\n                                    if (ct == ContainmentType.Disjoint)\n                                    {\n                                        newContent = MyVoxelConstants.VOXEL_CONTENT_FULL;\n                                    }\n                                    else\n                                    {\n\n                                        // Transform the point into box-local space and check against\n                                        // our extents.\n                                        Quaternion qinv = Quaternion.Conjugate(box.Orientation);\n                                        Vector3 plocal = Vector3.Transform(position - box.Center, qinv);\n\n                                        //MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF \n\n                                        float distX = 0;\n                                        float distY = 0;\n                                        float distZ = 0;\n\n                                        int sX = System.Math.Sign(plocal.X);\n                                        int sY = System.Math.Sign(plocal.Y);\n                                        int sZ = System.Math.Sign(plocal.Z);\n\n                                        if (sX > 0)\n                                        {\n                                            distX = plocal.X - box.HalfExtent.X;\n                                        }\n                                        else\n                                        {\n                                            distX = plocal.X + box.HalfExtent.X;\n                                        }\n\n                                        if (sY > 0)\n                                        {\n                                            distY = plocal.Y - box.HalfExtent.Y;\n                                        }\n                                        else\n                                        {\n                                            distY = plocal.Y + box.HalfExtent.Y;\n                                        }\n\n                                        if (sZ > 0)\n                                        {\n                                            distZ = plocal.Z - box.HalfExtent.Z;\n                                        }\n                                        else\n                                        {\n                                            distZ = plocal.Z + box.HalfExtent.Z;\n                                        }\n\n                                        //float diff = (distX + distY + distZ) / 3;\n                                        //float diff = (sX*sY*sZ) * System.Math.Min(System.Math.Min(distX,distY), distZ);\n\n                                        int contentX;\n                                        int contentY;\n                                        int contentZ;\n\n                                        if (sX < 0)\n                                        {\n                                            if (distX > MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF)\n                                            {\n                                                contentX = MyVoxelConstants.VOXEL_CONTENT_EMPTY;\n                                            }\n                                            else if (distX < -MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF)\n                                            {\n                                                contentX = MyVoxelConstants.VOXEL_CONTENT_FULL;\n                                            }\n                                            else\n                                            {\n                                                //  This formula will work even if diff is positive or negative\n                                                contentX = MyVoxelConstants.VOXEL_CONTENT_FULL - (byte)(MyVoxelConstants.VOXEL_ISO_LEVEL - distX / MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF * MyVoxelConstants.VOXEL_ISO_LEVEL);\n                                            }\n                                        }\n                                        else\n                                        {\n                                            if (distX < -MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF)\n                                            {\n                                                contentX = MyVoxelConstants.VOXEL_CONTENT_EMPTY;\n                                            }\n                                            else if (distX > MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF)\n                                            {\n                                                contentX = MyVoxelConstants.VOXEL_CONTENT_FULL;\n                                            }\n                                            else\n                                            {\n                                                //  This formula will work even if diff is positive or negative\n                                                contentX = (byte)(MyVoxelConstants.VOXEL_ISO_LEVEL - distX / MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF * MyVoxelConstants.VOXEL_ISO_LEVEL);\n                                            }\n                                        }\n\n\n\n                                        if (sY < 0)\n                                        {\n                                            if (distY > MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF)\n                                            {\n                                                contentY = MyVoxelConstants.VOXEL_CONTENT_EMPTY;\n                                            }\n                                            else if (distY < -MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF)\n                                            {\n                                                contentY = MyVoxelConstants.VOXEL_CONTENT_FULL;\n                                            }\n                                            else\n                                            {\n                                                //  This formula will work even if diff is positive or negative\n                                                contentY = MyVoxelConstants.VOXEL_CONTENT_FULL - (byte)(MyVoxelConstants.VOXEL_ISO_LEVEL - distY / MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF * MyVoxelConstants.VOXEL_ISO_LEVEL);\n                                            }\n                                        }\n                                        else\n                                        {\n                                            if (distY < -MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF)\n                                            {\n                                                contentY = MyVoxelConstants.VOXEL_CONTENT_EMPTY;\n                                            }\n                                            else if (distY > MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF)\n                                            {\n                                                contentY = MyVoxelConstants.VOXEL_CONTENT_FULL;\n                                            }\n                                            else\n                                            {\n                                                //  This formula will work even if diff is positive or negative\n                                                contentY = (byte)(MyVoxelConstants.VOXEL_ISO_LEVEL - distY / MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF * MyVoxelConstants.VOXEL_ISO_LEVEL);\n                                            }\n                                        }\n\n\n                                        if (sZ < 0)\n                                        {\n                                            if (distZ > MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF)\n                                            {\n                                                contentZ = MyVoxelConstants.VOXEL_CONTENT_EMPTY;\n                                            }\n                                            else if (distZ < -MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF)\n                                            {\n                                                contentZ = MyVoxelConstants.VOXEL_CONTENT_FULL;\n                                            }\n                                            else\n                                            {\n                                                //  This formula will work even if diff is positive or negative\n                                                contentZ = MyVoxelConstants.VOXEL_CONTENT_FULL - (byte)(MyVoxelConstants.VOXEL_ISO_LEVEL - distZ / MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF * MyVoxelConstants.VOXEL_ISO_LEVEL);\n                                            }\n                                        }\n                                        else\n                                        {\n                                            if (distZ < -MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF)\n                                            {\n                                                contentZ = MyVoxelConstants.VOXEL_CONTENT_EMPTY;\n                                            }\n                                            else if (distZ > MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF)\n                                            {\n                                                contentZ = MyVoxelConstants.VOXEL_CONTENT_FULL;\n                                            }\n                                            else\n                                            {\n                                                //  This formula will work even if diff is positive or negative\n                                                contentZ = (byte)(MyVoxelConstants.VOXEL_ISO_LEVEL - distZ / MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF * MyVoxelConstants.VOXEL_ISO_LEVEL);\n                                            }\n                                        }\n\n                                        //voxelMap.SetVoxelContent( (byte)((contentX + contentY + contentZ)/3.0f), ref tempVoxelCoord);\n                                        newContent = (byte)(System.Math.Min(System.Math.Min(contentX, contentY), contentZ));\n                                    }\n\n\n                                byte originalContent = voxelMap.GetVoxelContent(ref tempVoxelCoord);\n\n                                if (newContent < originalContent)\n                                {\n                                    voxelMap.SetVoxelContent(newContent, ref tempVoxelCoord, true);\n                                    //changed = true;\n                                }\n                            });\n                        });\n                });\n\n            /*\n            for (tempVoxelCoord.X = minCorner.X; tempVoxelCoord.X <= maxCorner.X; tempVoxelCoord.X++)\n            {\n                for (tempVoxelCoord.Y = minCorner.Y; tempVoxelCoord.Y <= maxCorner.Y; tempVoxelCoord.Y++)\n                {\n                    for (tempVoxelCoord.Z = minCorner.Z; tempVoxelCoord.Z <= maxCorner.Z; tempVoxelCoord.Z++)\n                    {\n                        \n                       \n                    }\n                }\n            }*/\n\n            changed = true;\n            voxelMap.InvalidateCache(minCorner, maxCorner);\n            voxelMap.CalcAverageDataCellMaterials();\n        }\n\n\n\n        public static void CreateCylinder(MyVoxelMap voxelMap, float radius1, float radius2, MyOrientedBoundingBox box, MyMwcVoxelMaterialsEnum? material, ref bool changed)\n        {\n            //box.HalfExtent x = radius1\n            //box.HalfExtent y = length/2\n            //box.HalfExtent z = radius2\n\n\n            BoundingBox aabb = box.GetAABB();\n\n            MyMwcVector3Int minCorner = voxelMap.GetVoxelCoordinateFromMeters(aabb.Min - new Vector3(MyVoxelConstants.VOXEL_SIZE_IN_METRES));\n            MyMwcVector3Int maxCorner = voxelMap.GetVoxelCoordinateFromMeters(aabb.Max + new Vector3(MyVoxelConstants.VOXEL_SIZE_IN_METRES));\n\n            voxelMap.FixVoxelCoord(ref minCorner);\n            voxelMap.FixVoxelCoord(ref maxCorner);\n\n            MyMwcVector3Int tempVoxelCoord;\n            for (tempVoxelCoord.X = minCorner.X; tempVoxelCoord.X <= maxCorner.X; tempVoxelCoord.X++)\n            {\n                for (tempVoxelCoord.Y = minCorner.Y; tempVoxelCoord.Y <= maxCorner.Y; tempVoxelCoord.Y++)\n                {\n                    for (tempVoxelCoord.Z = minCorner.Z; tempVoxelCoord.Z <= maxCorner.Z; tempVoxelCoord.Z++)\n                    {\n                        Vector3 position = voxelMap.GetVoxelCenterPositionAbsolute(ref tempVoxelCoord);\n\n                        //BoundingBox voxelAABB = new BoundingBox(position - new Vector3(MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF), position + new Vector3(MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF));\n\n                        byte newContent = 0;\n\n                        // Transform the point into box-local space and check against\n                        // our extents.\n                        Quaternion qinv = Quaternion.Conjugate(box.Orientation);\n                        Vector3 plocal = Vector3.Transform(position - box.Center, qinv);\n\n                        //MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF \n\n                        float distY = 0;\n                        int sY = System.Math.Sign(plocal.Y);\n\n                        if (sY > 0)\n                        {\n                            distY = plocal.Y - box.HalfExtent.Y;\n                        }\n                        else\n                        {\n                            distY = plocal.Y + box.HalfExtent.Y;\n                        }\n\n                        float distRatio = 1;\n                        distRatio = MathHelper.Clamp((plocal.Y + box.HalfExtent.Y) / (2*box.HalfExtent.Y), 0, 1);\n\n                        int contentY = -1;\n\n                        if (sY > 0)\n                        {\n                            if (distY > MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF)\n                            {\n                                contentY = MyVoxelConstants.VOXEL_CONTENT_EMPTY;\n                            }\n                            else if (distY < -MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF)\n                            {\n                                contentY = MyVoxelConstants.VOXEL_CONTENT_FULL;\n                            }\n                            else\n                            {\n                                //  This formula will work even if diff is positive or negative\n                                contentY = (byte)(MyVoxelConstants.VOXEL_ISO_LEVEL - distY / MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF * MyVoxelConstants.VOXEL_ISO_LEVEL);\n                            }\n                        }\n                        else\n                        {\n                            if (distY < -MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF)\n                            {\n                                contentY = MyVoxelConstants.VOXEL_CONTENT_EMPTY;\n                            }\n                            else if (distY > MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF)\n                            {\n                                contentY = MyVoxelConstants.VOXEL_CONTENT_FULL;\n                            }\n                            else\n                            {\n                                //  This formula will work even if diff is positive or negative\n                                contentY = MyVoxelConstants.VOXEL_CONTENT_FULL - (byte)(MyVoxelConstants.VOXEL_ISO_LEVEL - distY / MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF * MyVoxelConstants.VOXEL_ISO_LEVEL);\n                            }\n                        }\n\n                               \n                        Matrix boxMatrix = Matrix.CreateFromQuaternion(box.Orientation);\n                        Vector3 hY1 = box.Center + boxMatrix.Up * box.HalfExtent.Y;\n                        Vector3 hY2 = box.Center + boxMatrix.Down * box.HalfExtent.Y;\n\n                        float dist = MyUtils.GetPointLineDistance(ref hY1, ref hY2, ref position);\n                        float diff = dist - MathHelper.Lerp(radius2, radius1, distRatio);\n                        //float diff = dist - box.HalfExtent.Z;\n\n                        byte newContent2;\n                        if (diff > MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF)\n                        {\n                            newContent2 = MyVoxelConstants.VOXEL_CONTENT_EMPTY;\n                        }\n                        else if (diff < -MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF)\n                        {\n                            newContent2 = MyVoxelConstants.VOXEL_CONTENT_FULL;\n                        }\n                        else\n                        {\n                            //  This formula will work even if diff is positive or negative\n                            newContent2 = (byte)(MyVoxelConstants.VOXEL_ISO_LEVEL - diff / MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF * MyVoxelConstants.VOXEL_ISO_LEVEL);\n                        }  \n\n                          \n                        newContent = (byte)System.Math.Min(contentY, newContent2);\n                        //newContent = (byte)contentY; \n\n                        byte originalContent = voxelMap.GetVoxelContent(ref tempVoxelCoord);\n\n                        if (newContent > originalContent)\n                        {\n                            voxelMap.SetVoxelContent(newContent, ref tempVoxelCoord);\n                            if (material.HasValue)\n                                voxelMap.SetVoxelMaterialAndIndestructibleContent(material.Value, 0, ref tempVoxelCoord);\n                        }\n\n                    }\n                }\n            }\n\n            voxelMap.InvalidateCache(minCorner, maxCorner);\n            voxelMap.CalcAverageDataCellMaterials();\n\n        } //CreateCylinder\n\n\n        public static void CutOutCylinder(MyVoxelMap voxelMap, float radius1, float radius2, MyOrientedBoundingBox box, MyMwcVoxelMaterialsEnum? material, ref bool changed)\n        {\n            //box.HalfExtent x = radius1\n            //box.HalfExtent y = length/2\n            //box.HalfExtent z = radius2\n\n\n            BoundingBox aabb = box.GetAABB();\n\n            MyMwcVector3Int minCorner = voxelMap.GetVoxelCoordinateFromMeters(aabb.Min - new Vector3(MyVoxelConstants.VOXEL_SIZE_IN_METRES));\n            MyMwcVector3Int maxCorner = voxelMap.GetVoxelCoordinateFromMeters(aabb.Max + new Vector3(MyVoxelConstants.VOXEL_SIZE_IN_METRES));\n\n            voxelMap.FixVoxelCoord(ref minCorner);\n            voxelMap.FixVoxelCoord(ref maxCorner);\n\n            MyMwcVector3Int tempVoxelCoord;\n            for (tempVoxelCoord.X = minCorner.X; tempVoxelCoord.X <= maxCorner.X; tempVoxelCoord.X++)\n            {\n                for (tempVoxelCoord.Y = minCorner.Y; tempVoxelCoord.Y <= maxCorner.Y; tempVoxelCoord.Y++)\n                {\n                    for (tempVoxelCoord.Z = minCorner.Z; tempVoxelCoord.Z <= maxCorner.Z; tempVoxelCoord.Z++)\n                    {\n                        Vector3 position = voxelMap.GetVoxelCenterPositionAbsolute(ref tempVoxelCoord);\n\n                        //BoundingBox voxelAABB = new BoundingBox(position - new Vector3(MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF), position + new Vector3(MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF));\n\n                        byte newContent = 0;\n\n                        // Transform the point into box-local space and check against\n                        // our extents.\n                        Quaternion qinv = Quaternion.Conjugate(box.Orientation);\n                        Vector3 plocal = Vector3.Transform(position - box.Center, qinv);\n\n                        //MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF \n\n                        float distY = 0;\n                        int sY = System.Math.Sign(plocal.Y);\n\n                        if (sY > 0)\n                        {\n                            distY = plocal.Y - box.HalfExtent.Y;\n                        }\n                        else\n                        {\n                            distY = plocal.Y + box.HalfExtent.Y;\n                        }\n\n                        float distRatio = 1;\n                        distRatio = MathHelper.Clamp((plocal.Y + box.HalfExtent.Y) / (2 * box.HalfExtent.Y), 0, 1);\n\n                        int contentY = -1;\n\n                        if (sY > 0)\n                        {\n                            if (distY > MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF)\n                            {\n                                contentY = MyVoxelConstants.VOXEL_CONTENT_FULL;\n                            }\n                            else if (distY < -MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF)\n                            {\n                                contentY = MyVoxelConstants.VOXEL_CONTENT_EMPTY;\n                            }\n                            else\n                            {\n                                //  This formula will work even if diff is positive or negative\n                                //contentY = (byte)(MyVoxelConstants.VOXEL_ISO_LEVEL - distY / MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF * MyVoxelConstants.VOXEL_ISO_LEVEL);\n                                contentY = MyVoxelConstants.VOXEL_CONTENT_FULL - (byte)(MyVoxelConstants.VOXEL_ISO_LEVEL - distY / MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF * MyVoxelConstants.VOXEL_ISO_LEVEL);\n                            }\n                        }\n                        else\n                        {\n                            if (distY < -MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF)\n                            {\n                                contentY = MyVoxelConstants.VOXEL_CONTENT_FULL;\n                            }\n                            else if (distY > MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF)\n                            {\n                                contentY = MyVoxelConstants.VOXEL_CONTENT_EMPTY;\n                            }\n                            else\n                            {\n                                //  This formula will work even if diff is positive or negative\n                                //contentY = MyVoxelConstants.VOXEL_CONTENT_FULL - (byte)(MyVoxelConstants.VOXEL_ISO_LEVEL - distY / MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF * MyVoxelConstants.VOXEL_ISO_LEVEL);\n                                contentY = (byte)(MyVoxelConstants.VOXEL_ISO_LEVEL - distY / MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF * MyVoxelConstants.VOXEL_ISO_LEVEL);\n                            }\n                        }\n\n\n                        Matrix boxMatrix = Matrix.CreateFromQuaternion(box.Orientation);\n                        Vector3 hY1 = box.Center + boxMatrix.Up * box.HalfExtent.Y;\n                        Vector3 hY2 = box.Center + boxMatrix.Down * box.HalfExtent.Y;\n\n                        float dist = MyUtils.GetPointLineDistance(ref hY1, ref hY2, ref position);\n                        float diff = dist - MathHelper.Lerp(radius2, radius1, distRatio);\n                        //float diff = dist - box.HalfExtent.Z;\n\n                        byte newContent2;\n                        if (diff > MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF)\n                        {\n                            newContent2 = MyVoxelConstants.VOXEL_CONTENT_FULL;\n                        }\n                        else if (diff < -MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF)\n                        {\n                            newContent2 = MyVoxelConstants.VOXEL_CONTENT_EMPTY;\n                        }\n                        else\n                        {\n                            //  This formula will work even if diff is positive or negative\n                            //newContent2 = (byte)(MyVoxelConstants.VOXEL_ISO_LEVEL - diff / MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF * MyVoxelConstants.VOXEL_ISO_LEVEL);\n                            newContent2 = (byte)(MyVoxelConstants.VOXEL_CONTENT_FULL - (int)(MyVoxelConstants.VOXEL_ISO_LEVEL - diff / MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF * MyVoxelConstants.VOXEL_ISO_LEVEL));\n                        }\n\n\n                        newContent = (byte)System.Math.Max(contentY, newContent2);\n                        //newContent = (byte)contentY; \n\n                        byte originalContent = voxelMap.GetVoxelContent(ref tempVoxelCoord);\n\n                        if (newContent < originalContent)\n                        {\n                            voxelMap.SetVoxelContent(newContent, ref tempVoxelCoord);\n                            if (material.HasValue)\n                                voxelMap.SetVoxelMaterialAndIndestructibleContent(material.Value, 0, ref tempVoxelCoord);\n                        }\n\n                    }\n                }\n            }\n\n            voxelMap.InvalidateCache(minCorner, maxCorner);\n            voxelMap.CalcAverageDataCellMaterials();\n\n        } //CutoutCylinder\n\n\n        //  6 - 7  \n        // /   /|\n        //4|- 5 |\n        //|2 -|3\n        //|/  |/\n        //0 - 1                \n        public static void CreateCuboid(MyVoxelMap voxelMap, MyCuboid cuboid, MyMwcVoxelMaterialsEnum? material)\n        {\n            BoundingBox aabb = cuboid.GetAABB();\n\n\n            MyMwcVector3Int minCorner = voxelMap.GetVoxelCoordinateFromMeters(aabb.Min - new Vector3(MyVoxelConstants.VOXEL_SIZE_IN_METRES));\n            MyMwcVector3Int maxCorner = voxelMap.GetVoxelCoordinateFromMeters(aabb.Max + new Vector3(MyVoxelConstants.VOXEL_SIZE_IN_METRES));\n\n            voxelMap.FixVoxelCoord(ref minCorner);\n            voxelMap.FixVoxelCoord(ref maxCorner);\n\n            MyMwcVector3Int tempVoxelCoord;\n            for (tempVoxelCoord.X = minCorner.X; tempVoxelCoord.X <= maxCorner.X; tempVoxelCoord.X++)\n            {\n                for (tempVoxelCoord.Y = minCorner.Y; tempVoxelCoord.Y <= maxCorner.Y; tempVoxelCoord.Y++)\n                {\n                    for (tempVoxelCoord.Z = minCorner.Z; tempVoxelCoord.Z <= maxCorner.Z; tempVoxelCoord.Z++)\n                    {\n                        Vector3 position = voxelMap.GetVoxelCenterPositionAbsolute(ref tempVoxelCoord);\n                        BoundingBox voxelAABB = new BoundingBox(position - new Vector3(MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF), position + new Vector3(MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF));\n\n                        bool isInside = true;\n\n                        for (int i = 0; i < cuboid.Sides.Length; i++)\n                        {\n                            MyPlane side = cuboid.Sides[i].Plane;\n                            float distance = MyUtils.GetDistanceFromPointToPlane(ref position, ref side);\n                            if (distance > 0)\n                            {\n                                isInside = false;\n                                break;\n                            }\n                        }\n\n                        float minDistance = float.MaxValue;\n\n                        for (int i = 0; i < cuboid.Sides.Length; i++)\n                        {\n                            /*\n                            for (int j = 0; j < cuboid.Sides[i].Lines.Length; j++)\n                            {\n                                MyLine line = cuboid.Sides[i].Lines[j];\n                                float distance = 0;\n                                Vector3 point = MyUtils.GetClosestPointOnLine(ref line, ref position, out distance);\n                                distance = System.Math.Abs(Vector3.Distance(position, point));\n                                if (distance < minDistance)\n                                {\n                                    minDistance = distance;\n                                }\n                            } */\n\n                            MyQuad quad = new MyQuad();\n                            quad.Point0 = cuboid.Sides[i].Lines[0].From;\n                            quad.Point1 = cuboid.Sides[i].Lines[1].From;\n                            quad.Point2 = cuboid.Sides[i].Lines[3].From;\n                            quad.Point3 = cuboid.Sides[i].Lines[2].From;\n\n                            float distance = MyUtils.GetDistancePointToQuad(ref position, ref quad);\n                            if (distance < minDistance)\n                            {\n                                minDistance = distance;\n                            }\n                        }\n\n\n                        byte newContent = 0;\n\n\n                        if (isInside)\n                        {\n                            if (minDistance > MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF)\n                            {\n                                newContent = MyVoxelConstants.VOXEL_CONTENT_FULL;\n                            }\n                            else\n                            {\n                                //  This formula will work even if diff is positive or negative\n                                //newContent = MyVoxelConstants.VOXEL_CONTENT_EMPTY;\n                                newContent = (byte)(MyVoxelConstants.VOXEL_CONTENT_FULL - (byte)(MyVoxelConstants.VOXEL_ISO_LEVEL - minDistance / MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF * MyVoxelConstants.VOXEL_ISO_LEVEL));\n                            }\n                        }\n                        else\n                        {\n                            if (minDistance > MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF)\n                            {\n                                newContent = MyVoxelConstants.VOXEL_CONTENT_EMPTY;\n                            }\n                            else\n                            {\n                                //newContent = MyVoxelConstants.VOXEL_CONTENT_FULL;\n                                //  This formula will work even if diff is positive or negative\n                                newContent = (byte)(MyVoxelConstants.VOXEL_ISO_LEVEL - minDistance / MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF * MyVoxelConstants.VOXEL_ISO_LEVEL);\n                                \n                            }\n                        }\n\n                        byte originalContent = voxelMap.GetVoxelContent(ref tempVoxelCoord);\n\n                        if (newContent > originalContent)\n                        {\n                            voxelMap.SetVoxelContent(newContent, ref tempVoxelCoord);\n                            if (material.HasValue)\n                                voxelMap.SetVoxelMaterialAndIndestructibleContent(material.Value, 0, ref tempVoxelCoord);\n                        }\n                    }\n                }\n            }\n\n            voxelMap.InvalidateCache(minCorner, maxCorner);\n            voxelMap.CalcAverageDataCellMaterials();\n        } //Create Cuboid\n\n\n        public static void CutOutCuboid(MyVoxelMap voxelMap, MyCuboid cuboid, MyMwcVoxelMaterialsEnum? material)\n        {\n            BoundingBox aabb = cuboid.GetAABB();\n\n\n            MyMwcVector3Int minCorner = voxelMap.GetVoxelCoordinateFromMeters(aabb.Min - new Vector3(MyVoxelConstants.VOXEL_SIZE_IN_METRES));\n            MyMwcVector3Int maxCorner = voxelMap.GetVoxelCoordinateFromMeters(aabb.Max + new Vector3(MyVoxelConstants.VOXEL_SIZE_IN_METRES));\n\n            voxelMap.FixVoxelCoord(ref minCorner);\n            voxelMap.FixVoxelCoord(ref maxCorner);\n\n            MyMwcVector3Int tempVoxelCoord;\n            for (tempVoxelCoord.X = minCorner.X; tempVoxelCoord.X <= maxCorner.X; tempVoxelCoord.X++)\n            {\n                for (tempVoxelCoord.Y = minCorner.Y; tempVoxelCoord.Y <= maxCorner.Y; tempVoxelCoord.Y++)\n                {\n                    for (tempVoxelCoord.Z = minCorner.Z; tempVoxelCoord.Z <= maxCorner.Z; tempVoxelCoord.Z++)\n                    {\n                        Vector3 position = voxelMap.GetVoxelCenterPositionAbsolute(ref tempVoxelCoord);\n                        BoundingBox voxelAABB = new BoundingBox(position - new Vector3(MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF), position + new Vector3(MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF));\n\n                        bool isInside = true;\n\n                        for (int i = 0; i < cuboid.Sides.Length; i++)\n                        {\n                            MyPlane side = cuboid.Sides[i].Plane;\n                            float distance = MyUtils.GetDistanceFromPointToPlane(ref position, ref side);\n                            if (distance > 0)\n                            {\n                                isInside = false;\n                                break;\n                            }\n                        }\n\n                        float minDistance = float.MaxValue;\n\n                        for (int i = 0; i < cuboid.Sides.Length; i++)\n                        {\n                            MyQuad quad = new MyQuad();\n                            quad.Point0 = cuboid.Sides[i].Lines[0].From;\n                            quad.Point1 = cuboid.Sides[i].Lines[1].From;\n                            quad.Point2 = cuboid.Sides[i].Lines[3].From;\n                            quad.Point3 = cuboid.Sides[i].Lines[2].From;\n\n                            float distance = MyUtils.GetDistancePointToQuad(ref position, ref quad);\n                            if (distance < minDistance)\n                            {\n                                minDistance = distance;\n                            }\n                        }\n\n\n                        byte newContent = 0;\n\n\n                        if (isInside)\n                        {\n                            if (minDistance > MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF)\n                            {\n                                newContent = MyVoxelConstants.VOXEL_CONTENT_EMPTY;\n                            }\n                            else\n                            {\n                                //  This formula will work even if diff is positive or negative\n                                //newContent = MyVoxelConstants.VOXEL_CONTENT_EMPTY;\n                                newContent = (byte)(MyVoxelConstants.VOXEL_ISO_LEVEL - minDistance / MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF * MyVoxelConstants.VOXEL_ISO_LEVEL);\n                                //newContent = (byte)(MyVoxelConstants.VOXEL_CONTENT_FULL - (byte)(MyVoxelConstants.VOXEL_ISO_LEVEL - minDistance / MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF * MyVoxelConstants.VOXEL_ISO_LEVEL));\n                            }\n                        }\n                        else\n                        {\n                            if (minDistance > MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF)\n                            {\n                                newContent = MyVoxelConstants.VOXEL_CONTENT_FULL;\n                            }\n                            else\n                            {\n                                //newContent = MyVoxelConstants.VOXEL_CONTENT_FULL;\n                                //  This formula will work even if diff is positive or negative\n                                //newContent = (byte)(MyVoxelConstants.VOXEL_ISO_LEVEL - minDistance / MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF * MyVoxelConstants.VOXEL_ISO_LEVEL);\n                                newContent = (byte)(MyVoxelConstants.VOXEL_CONTENT_FULL - (byte)(MyVoxelConstants.VOXEL_ISO_LEVEL - minDistance / MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF * MyVoxelConstants.VOXEL_ISO_LEVEL));\n                            }\n                        }\n\n                        byte originalContent = voxelMap.GetVoxelContent(ref tempVoxelCoord);\n\n                        if (newContent < originalContent)\n                        {\n                            voxelMap.SetVoxelContent(newContent, ref tempVoxelCoord);\n                            if (material.HasValue)\n                                voxelMap.SetVoxelMaterialAndIndestructibleContent(material.Value, 0, ref tempVoxelCoord);\n                        }\n                    }\n                }\n            }\n\n            voxelMap.InvalidateCache(minCorner, maxCorner);\n            voxelMap.CalcAverageDataCellMaterials();\n        } //CutOut Cuboid\n\n    }\n}       \n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Voxels/MyVoxelImport.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.Models;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Physics;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils.Utils;\n\n//  This class is used for importing 3D models (FBX files) into voxels.\n//  It makes a lot of garbage, so GC.Collect() should be called after done.\n//  It's one-time usable class - call it with constructor, let it change your voxel map and then abandon.\n//\n//  This algorythm travers triangles from the bottom and switches between full/empty column if intersection found.\n//  It ignores normal vector at intersection point, because that version had problems with wrong models. Current version doesn't.\n\nnamespace MinerWars.AppCode.Game.Voxels\n{\n    using App;\n\n    enum MyvoxelImportAction\n    {\n        AddVoxels,\n        RemoveVoxels,\n        ChangeMaterial,\n        SoftenVoxels,\n        WrinkleVoxels\n    }\n\n    enum MyVoxelImportOptions\n    {\n        None,\n        KeepAspectRatio,\n        //Will only keep scale if it can fit into the voxel\n        KeepScale\n    }\n    class MyVoxelImport\n    {\n        Vector3 m_minCoord;\n        Vector3 m_maxCoord;\n        List<MyImportTriangle> m_triangles;\n\n        //  Space between two grid points in metres\n        float m_gridPointsSize;\n        float m_gridPointsSizeHalf;\n\n        List<MyImportTriangle>[,] m_trianglesLookup;\n        int m_trianglesLookupSizeX;\n        int m_trianglesLookupSizeZ;\n        float m_trianglesLookupElementSizeX;\n        float m_trianglesLookupElementSizeZ;\n\n        //  Number of grid points stored in one voxel, in one direction. So total count of grid points in voxel is power of 3.\n        const int GRID_POINTS_IN_ONE_VOXEL_IN_ONE_DIRECTION = 8;\n        const int GRID_POINTS_IN_ONE_VOXEL_TOTAL = GRID_POINTS_IN_ONE_VOXEL_IN_ONE_DIRECTION * GRID_POINTS_IN_ONE_VOXEL_IN_ONE_DIRECTION * GRID_POINTS_IN_ONE_VOXEL_IN_ONE_DIRECTION;\n\n        //  This is max number of grid points in one directions. It's purpose is that we can't make grid for whole voxel map (if it's very large). \n        //  So we need to split processing into more iterations, every time working with only part of the map.\n        const int MAX_GRID_SIZE_IN_ONE_DIRECTION = 256;\n\n        //  Count of voxels in one grid, in one direction\n        const int VOXELS_IN_GRID_IN_ONE_DIRECTION = MAX_GRID_SIZE_IN_ONE_DIRECTION / GRID_POINTS_IN_ONE_VOXEL_IN_ONE_DIRECTION;\n\n        //  This is just for setting initial capacity of triangleVertexes lists\n        const int INITIAL_COUNT_OF_TRIANGLES_IN_GRID_POSITION = 5;\n\n        //  This is just for setting initial capacity of intersections lists\n        const int INITIAL_COUNT_OF_INTERSECTIONS = 20;\n\n\n        class MyImportTriangle\n        {\n            public Vector3 Vertex0;\n            public Vector3 Vertex1;\n            public Vector3 Vertex2;\n            public Vector3 Normal;\n\n            public MyImportTriangle(Vector3 vertex0, Vector3 vertex1, Vector3 vertex2)\n            {\n                Vertex0 = vertex0;\n                Vertex1 = vertex1;\n                Vertex2 = vertex2;\n                Normal = MyMwcUtils.Normalize(Vector3.Cross(vertex1 - vertex0, vertex2 - vertex0));\n            }\n        }\n\n        class MyImportIntersection\n        {\n            public Vector3 Intersection;\n            public Vector3 Normal;\n            public float Distance;\n\n            public MyImportIntersection(Vector3 intersection, Vector3 normal, float distance)\n            {\n                Intersection = intersection;\n                Normal = normal;\n                Distance = distance;\n            }\n        }\n\n        public static void Fill(MyVoxelMap voxelMap)\n        {\n            float safeSize = 5; // Size in voxels to leave area empty on voxel map border\n            var size = voxelMap.Size;\n            for (int x = 0; x < size.X; x++)\n            {\n                for (int y = 0; y < size.Y; y++)\n                {\n                    for (int z = 0; z < size.Z; z++)\n                    {\n                        MyMwcVector3Int coords = new MyMwcVector3Int(x, y, z);\n\n                        if (x <= safeSize || y <= safeSize || z <= safeSize || x >= size.X - safeSize - 1 || y >= size.Y - safeSize - 1 || z >= size.Z - safeSize - 1)\n                        {\n                            voxelMap.SetVoxelContent(0, ref coords);\n                        }\n                        else\n                        {\n                            voxelMap.SetVoxelContent(255, ref coords);\n                        }\n                    }\n                }\n            }\n            voxelMap.InvalidateCache(new MyMwcVector3Int(0, 0, 0), size);\n        }\n\n        public static void FillEmpty(MyVoxelMap voxelMap)\n        {\n            float safeSize = 5; // Size in voxels to leave area empty on voxel map border\n            var size = voxelMap.Size;\n            for (int x = 0; x < size.X; x++)\n            {\n                for (int y = 0; y < size.Y; y++)\n                {\n                    for (int z = 0; z < size.Z; z++)\n                    {\n                        MyMwcVector3Int coords = new MyMwcVector3Int(x, y, z);\n\n                        if (x <= safeSize || y <= safeSize || z <= safeSize || x >= size.X - safeSize - 1 || y >= size.Y - safeSize - 1 || z >= size.Z - safeSize - 1)\n                        {\n                            voxelMap.SetVoxelContent(0, ref coords);\n                        }\n                        else\n                        {\n                            voxelMap.SetVoxelContent(0, ref coords);\n                        }\n                    }\n                }\n            }\n            voxelMap.InvalidateCache(new MyMwcVector3Int(0, 0, 0), size);\n        }\n\n        //  Use this static method do one-time import of a voxel map\n        public static void Run(MyVoxelMap voxelMap, string modelName)\n        {\n            MyVoxelImport voxelMapImport = new MyVoxelImport(voxelMap, modelName, MyVoxelImportOptions.None);\n        }\n\n        //  Use this static method do one-time import of a voxel map\n        public static void Run(MyVoxelMap voxelMap, string modelName, MyVoxelImportOptions importOptions)\n        {\n            MyVoxelImport voxelMapImport = new MyVoxelImport(voxelMap, modelName, importOptions);\n        }\n\n        //  Use this static method do one-time import of a voxel map\n        public static void Run(MyVoxelMap voxelMap, MyModel model)\n        {\n            MyVoxelImport voxelMapImport = new MyVoxelImport(voxelMap, model, MyVoxelImportOptions.None);\n        }\n\n        //  Use this static method do one-time import of a voxel map\n        public static void Run(MyVoxelMap voxelMap, MyModel model, MyVoxelImportOptions importOptions)\n        {\n            MyVoxelImport voxelMapImport = new MyVoxelImport(voxelMap, model, importOptions);\n        }\n\n        //  Use this static method do one-time import of a voxel map\n        public static void Run(MyVoxelMap voxelMap, MyModelObj model)\n        {\n            MyVoxelImport voxelMapImport = new MyVoxelImport(voxelMap, model, MyVoxelImportOptions.None);\n        }\n\n        //  Use this static method do one-time import of a voxel map\n        public static void Run(MyVoxelMap voxelMap, MyModelObj model, MyVoxelImportOptions importOptions)\n        {\n            MyVoxelImport voxelMapImport = new MyVoxelImport(voxelMap, model, importOptions);\n        }\n\n        public static void Run(MyVoxelMap voxelMap, MyModel model, MyvoxelImportAction importAction, Matrix modelWorld, float modelScale, MyMwcVoxelMaterialsEnum? voxelMaterial, ref bool changed)\n        {\n            MyVoxelImport voxelImport = new MyVoxelImport(voxelMap, model, importAction, modelWorld, modelScale, voxelMaterial, ref changed);\n        }\n\n        public static void Run(MyVoxelMap voxelMap, Vector3[] vertexes, MyTriangleVertexIndices[] triangles, MyvoxelImportAction importAction, Matrix modelWorld, MyMwcVoxelMaterialsEnum? voxelMaterial, ref bool changed)\n        {\n            MyVoxelImport voxelImport = new MyVoxelImport(voxelMap, vertexes, triangles, importAction, modelWorld, voxelMaterial, ref changed);\n        }\n\n        MyVoxelImport()\n        {\n            //  This class can be instantiated only by parameter constructor and called from static method Run()\n            throw new NotImplementedException();\n        }\n\n        //  Model will be scaled/translated to fit voxel map size (X, Y and Z)\n        MyVoxelImport(MyVoxelMap voxelMap, string modelName, MyVoxelImportOptions importOptions)\n        {\n            //  Load model, get triangles\n            LoadModel(modelName);\n\n            //  Rescale the model so it fits voxelMap (three directions!!!)\n            RescaleModel(voxelMap, importOptions);\n\n            //  Fill lookup array with triangles located at specified voxel positions. Array is 2D.\n            FillTrianglesLookup(voxelMap);\n\n            //  Create XZ map where every voxel center gets list of triangles that lie on its Y line\n            //      Do this by iterating over all triangles and making references to them from XZ map\n            Import(voxelMap);\n        }\n\n        //  Model will be scaled/translated to fit voxel map size (X, Y and Z)\n        MyVoxelImport(MyVoxelMap voxelMap, MyModel model, MyVoxelImportOptions importOptions)\n        {\n            //  Load model, get triangles\n            LoadModel(model);\n\n            //  Rescale the model so it fits voxelMap (three directions!!!)\n            RescaleModel(voxelMap, importOptions);\n\n            //  Fill lookup array with triangles located at specified voxel positions. Array is 2D.\n            FillTrianglesLookup(voxelMap);\n\n            //  Create XZ map where every voxel center gets list of triangles that lie on its Y line\n            //      Do this by iterating over all triangles and making references to them from XZ map\n            Import(voxelMap);\n        }\n\n        //  Model will be scaled/translated to fit voxel map size (X, Y and Z)\n        MyVoxelImport(MyVoxelMap voxelMap, MyModelObj model, MyVoxelImportOptions importOptions)\n        {\n            //  Load model, get triangles\n            LoadModel(model);\n\n            //  Rescale the model so it fits voxelMap (three directions!!!)\n            RescaleModel(voxelMap, importOptions);\n\n            //  Fill lookup array with triangles located at specified voxel positions. Array is 2D.\n            FillTrianglesLookup(voxelMap);\n\n            //  Create XZ map where every voxel center gets list of triangles that lie on its Y line\n            //      Do this by iterating over all triangles and making references to them from XZ map\n            Import(voxelMap);\n        }\n\n        MyVoxelImport(MyVoxelMap voxelMap, Vector3[] vertexes, MyTriangleVertexIndices[] triangles, MyvoxelImportAction importAction, Matrix modelWorld, MyMwcVoxelMaterialsEnum? voxelMaterial, ref bool changed)\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"voxel import\");\n\n            // Load model, get triangles transformed to model's world matrix\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"load model\");\n            LoadModel(vertexes, triangles, modelWorld);\n\n            //  Fill lookup array with triangles located at specified voxel positions. Array is 2D.\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"fill lookup\");\n            FillTrianglesLookup(voxelMap);\n\n            // Performs action\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"perform action\");\n            PerformAction(voxelMap, importAction, voxelMaterial, ref changed);\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        MyVoxelImport(MyVoxelMap voxelMap, MyModel model, MyvoxelImportAction importAction, Matrix modelWorld, float modelScale, MyMwcVoxelMaterialsEnum? voxelMaterial, ref bool changed)\n        {\n            // Load model, get triangles transformed to model's world matrix\n            LoadModel(model, modelWorld, modelScale);\n\n            RescaleModel(voxelMap, MyVoxelImportOptions.KeepScale);\n\n            //  Fill lookup array with triangles located at specified voxel positions. Array is 2D.\n            FillTrianglesLookup(voxelMap);\n\n            // Performs action\n           //PerformAction(voxelMap, importAction, voxelMaterial, ref changed);\n            Import(voxelMap);\n        }\n\n        void LoadModel(Vector3[] vertexes, MyTriangleVertexIndices[] triangles, Matrix world)\n        {\n            m_minCoord = new Vector3(float.MaxValue, float.MaxValue, float.MaxValue);\n            m_maxCoord = new Vector3(float.MinValue, float.MinValue, float.MinValue);\n\n            m_triangles = new List<MyImportTriangle>(triangles.Length);\n\n            for (int i = 0; i < triangles.Length; i++)\n            {\n                Vector3 vertex0 = Vector3.Transform(vertexes[triangles[i].I0], world);\n                Vector3 vertex1 = Vector3.Transform(vertexes[triangles[i].I1], world);\n                Vector3 vertex2 = Vector3.Transform(vertexes[triangles[i].I2], world);\n\n                MyImportTriangle triangle = new MyImportTriangle(vertex0, vertex1, vertex2);\n                //  Ignore triangles that lie in XZ plane\n                if (triangle.Normal.Y != 0)\n                {\n                    m_triangles.Add(triangle);\n                    CheckMinMaxCoords(vertex0);\n                    CheckMinMaxCoords(vertex1);\n                    CheckMinMaxCoords(vertex2);\n                }\n            }\n        }\n\n        void LoadModel(MyModel model, Matrix modelWorld, float modelScale)\n        {\n            Matrix world = modelWorld * Matrix.CreateScale(modelScale);\n\n            m_minCoord = new Vector3(float.MaxValue, float.MaxValue, float.MaxValue);\n            m_maxCoord = new Vector3(float.MinValue, float.MinValue, float.MinValue);\n\n            MyTriangleVertexIndices[] triangles = model.Triangles;\n            m_triangles = new List<MyImportTriangle>(triangles.Length);\n\n            for (int i = 0; i < triangles.Length; i++)\n            {\n                Vector3 vertex0 = Vector3.Transform(model.GetVertex(triangles[i].I0), world);\n                Vector3 vertex1 = Vector3.Transform(model.GetVertex(triangles[i].I1), world);\n                Vector3 vertex2 = Vector3.Transform(model.GetVertex(triangles[i].I2), world);\n\n                MyImportTriangle triangle = new MyImportTriangle(vertex0, vertex1, vertex2);\n                //  Ignore triangles that lie in XZ plane\n                if (triangle.Normal.Y != 0)\n                {\n                    m_triangles.Add(triangle);\n                    CheckMinMaxCoords(vertex0);\n                    CheckMinMaxCoords(vertex1);\n                    CheckMinMaxCoords(vertex2);\n                }\n            }\n        }\n\n        void LoadModel(MyModel model)\n        {\n            model.LoadData();\n\n            m_minCoord = new Vector3(float.MaxValue, float.MaxValue, float.MaxValue);\n            m_maxCoord = new Vector3(float.MinValue, float.MinValue, float.MinValue);\n\n            MyTriangleVertexIndices[] triangles = model.Triangles;\n            m_triangles = new List<MyImportTriangle>(triangles.Length);\n\n            for (int i = 0; i < triangles.Length; i++)\n            {\n                Vector3 vertex0 = model.GetVertex(triangles[i].I0);\n                Vector3 vertex1 = model.GetVertex(triangles[i].I1);\n                Vector3 vertex2 = model.GetVertex(triangles[i].I2);\n\n                MyImportTriangle triangle = new MyImportTriangle(vertex0, vertex1, vertex2);\n                //  Ignore triangles that lie in XZ plane\n                if (triangle.Normal.Y != 0)\n                {\n                    m_triangles.Add(triangle);\n                    CheckMinMaxCoords(vertex0);\n                    CheckMinMaxCoords(vertex1);\n                    CheckMinMaxCoords(vertex2);\n                }\n            }\n        }\n\n        void LoadModel(MyModelObj model)\n        {\n            m_minCoord = new Vector3(float.MaxValue, float.MaxValue, float.MaxValue);\n            m_maxCoord = new Vector3(float.MinValue, float.MinValue, float.MinValue);\n\n            Vector3[] vertices = model.Vertexes.ToArray();\n            MyTriangleVertexIndices[] triangles = model.Triangles.ToArray();\n            m_triangles = new List<MyImportTriangle>(triangles.Length);\n\n            for (int i = 0; i < triangles.Length; i++)\n            {\n                Vector3 vertex0 = vertices[triangles[i].I0];\n                Vector3 vertex1 = vertices[triangles[i].I1];\n                Vector3 vertex2 = vertices[triangles[i].I2];\n\n                MyImportTriangle triangle = new MyImportTriangle(vertex0, vertex1, vertex2);\n                //  Ignore triangles that lie in XZ plane\n                if (triangle.Normal.Y != 0)\n                {\n                    m_triangles.Add(triangle);\n                    CheckMinMaxCoords(vertex0);\n                    CheckMinMaxCoords(vertex1);\n                    CheckMinMaxCoords(vertex2);\n                }\n            }\n        }\n\n        void LoadModel(string modelName)\n        {\n            //LoadModel(MyMinerGame.Static.Content.Load<MyModel>(modelName));\n        }\n\n        void CheckMinMaxCoords(Vector3 vertex)\n        {\n            if (vertex.X < m_minCoord.X) m_minCoord.X = vertex.X;\n            if (vertex.Y < m_minCoord.Y) m_minCoord.Y = vertex.Y;\n            if (vertex.Z < m_minCoord.Z) m_minCoord.Z = vertex.Z;\n            if (vertex.X > m_maxCoord.X) m_maxCoord.X = vertex.X;\n            if (vertex.Y > m_maxCoord.Y) m_maxCoord.Y = vertex.Y;\n            if (vertex.Z > m_maxCoord.Z) m_maxCoord.Z = vertex.Z;\n        }\n\n        //  Rescales the model to size specified by 'sizeInMetres'\n        void RescaleModel(MyVoxelMap voxelMap, MyVoxelImportOptions importOptions)\n        {\n            Vector3 originalSize = m_maxCoord - m_minCoord;\n            Vector3 originalCenter = (m_maxCoord + m_minCoord) / 2.0f;\n\n            m_minCoord = new Vector3(float.MaxValue, float.MaxValue, float.MaxValue);\n            m_maxCoord = new Vector3(float.MinValue, float.MinValue, float.MinValue);\n\n\n            //  We don't want to touch borders of a voxel map so we need to subtract size of data cell from each side.\n            //  I have choosen data cell (not one or two voxels) because LOD - average content of some data cells that were too close to voxel map border \n            //  were almost full data cell so when converted as LOD, hole appear there (originaly I was just multiplying by 0.9, but that is wasting in case of large voxel maps).\n            //Vector3 rescaleFactor = voxelMap.SizeInMetres / originalSize * 0.9f;\n            Vector3 rescaleFactor;\n            rescaleFactor.X = (voxelMap.SizeInMetres.X - 2 * MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_METRES) / originalSize.X;\n            rescaleFactor.Y = (voxelMap.SizeInMetres.Y - 2 * MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_METRES) / originalSize.Y;\n            rescaleFactor.Z = (voxelMap.SizeInMetres.Z - 2 * MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_METRES) / originalSize.Z;\n\n            switch (importOptions)\n            {\n                case MyVoxelImportOptions.KeepAspectRatio:\n                    rescaleFactor.X = rescaleFactor.Y = rescaleFactor.Z = Math.Min(Math.Min(rescaleFactor.X, rescaleFactor.Y), rescaleFactor.Z);\n                    break;\n                case MyVoxelImportOptions.KeepScale:\n                    //Cannot keep scale if the voxel map isn't big enough to contain it, will keep aspect ratio instead\n                    if (rescaleFactor.X >= 1 && rescaleFactor.Y >= 1 && rescaleFactor.Z >= 1)\n                    {\n                        rescaleFactor = Vector3.One;\n                    }\n                    else\n                    {\n                        rescaleFactor.X = rescaleFactor.Y = rescaleFactor.Z = Math.Min(Math.Min(rescaleFactor.X, rescaleFactor.Y), rescaleFactor.Z);\n                    }\n                    break;\n            }\n\n            for (int i = 0; i < m_triangles.Count; i++)\n            {\n                //  Translate vertexes to the origin\n                m_triangles[i].Vertex0 -= originalCenter;\n                m_triangles[i].Vertex1 -= originalCenter;\n                m_triangles[i].Vertex2 -= originalCenter;\n\n                //  Rescale vertexes\n                m_triangles[i].Vertex0 *= rescaleFactor;\n                m_triangles[i].Vertex1 *= rescaleFactor;\n                m_triangles[i].Vertex2 *= rescaleFactor;\n\n                //  Translate vertexes to voxel map position\n                m_triangles[i].Vertex0 += voxelMap.PositionLeftBottomCorner + voxelMap.SizeInMetresHalf;\n                m_triangles[i].Vertex1 += voxelMap.PositionLeftBottomCorner + voxelMap.SizeInMetresHalf;\n                m_triangles[i].Vertex2 += voxelMap.PositionLeftBottomCorner + voxelMap.SizeInMetresHalf;\n\n                CheckMinMaxCoords(m_triangles[i].Vertex0);\n                CheckMinMaxCoords(m_triangles[i].Vertex1);\n                CheckMinMaxCoords(m_triangles[i].Vertex2);\n            }\n        }\n\n        //  Fill lookup array with triangles located at specified voxel positions. Array is 2D.\n        void FillTrianglesLookup(MyVoxelMap voxelMap)\n        {\n            m_trianglesLookupSizeX = voxelMap.Size.X;\n            m_trianglesLookupSizeZ = voxelMap.Size.Z;\n            m_trianglesLookupElementSizeX = voxelMap.SizeInMetres.X / voxelMap.Size.X;\n            m_trianglesLookupElementSizeZ = voxelMap.SizeInMetres.Z / voxelMap.Size.Z;\n            m_trianglesLookup = new List<MyImportTriangle>[m_trianglesLookupSizeX, m_trianglesLookupSizeZ];\n\n            //  Initialize array\n            for (int x = 0; x < m_trianglesLookupSizeX; x++)\n            {\n                for (int z = 0; z < m_trianglesLookupSizeZ; z++)\n                {\n                    m_trianglesLookup[x, z] = new List<MyImportTriangle>(INITIAL_COUNT_OF_TRIANGLES_IN_GRID_POSITION);\n                }\n            }\n\n            //  Iterate over all triangles and put them into correct array positions based on their coordinates\n            for (int i = 0; i < m_triangles.Count; i++)\n            {\n                //  Get bounding rectangle for this triangleVertexes (in fact we need only 2D coordinates, but it's clearer to use 3D and ignore Y value)\n                Vector3 minCoord = new Vector3(float.MaxValue, 0, float.MaxValue);\n                Vector3 maxCoord = new Vector3(float.MinValue, 0, float.MinValue);\n                CheckMinMaxCoords2d(ref minCoord, ref maxCoord, m_triangles[i].Vertex0);\n                CheckMinMaxCoords2d(ref minCoord, ref maxCoord, m_triangles[i].Vertex1);\n                CheckMinMaxCoords2d(ref minCoord, ref maxCoord, m_triangles[i].Vertex2);\n\n                MyMwcVector2Int minCoordInt = GetTriangleLookupCoord(voxelMap, minCoord);\n                MyMwcVector2Int maxCoordInt = GetTriangleLookupCoord(voxelMap, maxCoord);\n\n                if (minCoordInt.X < 0) minCoordInt.X = 0;\n                if (minCoordInt.Y < 0) minCoordInt.Y = 0;\n                if (minCoordInt.X > m_trianglesLookupSizeX - 1) minCoordInt.X = m_trianglesLookupSizeX - 1;\n                if (minCoordInt.Y > m_trianglesLookupSizeZ - 1) minCoordInt.Y = m_trianglesLookupSizeZ - 1;\n                if (maxCoordInt.X < 0) maxCoordInt.X = 0;\n                if (maxCoordInt.Y < 0) maxCoordInt.Y = 0;\n                if (maxCoordInt.X > m_trianglesLookupSizeX - 1) maxCoordInt.X = m_trianglesLookupSizeX - 1;\n                if (maxCoordInt.Y > m_trianglesLookupSizeZ - 1) maxCoordInt.Y = m_trianglesLookupSizeZ - 1;\n\n                //  Iterate over all elements that may contain this triangleVertexes.\n                //  Notice that we swap Y and Z. It's because MyMwcVector2Int has X and Y, but we are working on XZ plane. So it's still Z value, even if its name is Y.\n                for (int x = minCoordInt.X; x <= maxCoordInt.X; x++)\n                {\n                    for (int z = minCoordInt.Y; z <= maxCoordInt.Y; z++)\n                    {\n                        m_trianglesLookup[x, z].Add(m_triangles[i]);\n                    }\n                }\n            }\n        }\n\n        //  We splited voxel map to more grids because if voxel map is large, it can't fit in one grid.\n        //  So here we iterate over this grid. Everytime clear the grid, fill with triangleVertexes intersections and then set voxels.\n        void Import(MyVoxelMap voxelMap)\n        {\n            //  Voxel map size must be multiple of grid size. Or, whole grid must fit exactly into X times into voxel map, without crossing border!\n            MyCommonDebugUtils.AssertRelease((voxelMap.Size.X % VOXELS_IN_GRID_IN_ONE_DIRECTION) == 0);\n\n            //  Voxel map size must be multiple of grid size. Or, whole grid must fit exactly into X times into voxel map, without crossing border!\n            MyCommonDebugUtils.AssertRelease((voxelMap.Size.Z % VOXELS_IN_GRID_IN_ONE_DIRECTION) == 0);\n\n            int gridsCountX = voxelMap.Size.X / VOXELS_IN_GRID_IN_ONE_DIRECTION;\n            int gridsCountZ = voxelMap.Size.Z / VOXELS_IN_GRID_IN_ONE_DIRECTION;\n\n            //  Space between two grid points in metres\n            m_gridPointsSize = MyVoxelConstants.VOXEL_SIZE_IN_METRES / (float)GRID_POINTS_IN_ONE_VOXEL_IN_ONE_DIRECTION;\n            m_gridPointsSizeHalf = m_gridPointsSize / 2.0f;\n\n\n            for (int gridX = 0; gridX < gridsCountX; gridX++)\n            {\n                for (int gridZ = 0; gridZ < gridsCountZ; gridZ++)\n                {\n                    ImportGrid(voxelMap, gridX, gridZ);\n                }\n            }\n        }\n\n        // Returns temporary in/out values for voxels\n        int[, ,] GetVoxelContentSum(MyVoxelMap voxelMap, int gridX, int gridZ)\n        {\n            int gridStartPointX = gridX * MAX_GRID_SIZE_IN_ONE_DIRECTION;\n            int gridStartPointZ = gridZ * MAX_GRID_SIZE_IN_ONE_DIRECTION;\n\n            //  Here we store intersections with line and triangles and specified grid point\n            List<MyImportIntersection> intersections = new List<MyImportIntersection>(INITIAL_COUNT_OF_INTERSECTIONS);\n\n            //  Here we store temporary in/out values for voxels. After that, we convert it to common voxel content values (0..255)\n            int[, ,] voxelContentSum = null; \n\n            for (int gridPointX = 0; gridPointX < MAX_GRID_SIZE_IN_ONE_DIRECTION; gridPointX++)\n            {\n                for (int gridPointZ = 0; gridPointZ < MAX_GRID_SIZE_IN_ONE_DIRECTION; gridPointZ++)\n                {\n                    Vector3 gridCoord = GetGridCoord(voxelMap, gridStartPointX + gridPointX, 0, gridStartPointZ + gridPointZ);\n                    if (gridCoord.X < m_minCoord.X || gridCoord.Z < m_minCoord.Z || gridCoord.X > m_maxCoord.X || gridCoord.Z > m_maxCoord.Z)\n                    {\n                        continue;\n                    }\n\n                    if (voxelContentSum == null)\n                        voxelContentSum = new int[VOXELS_IN_GRID_IN_ONE_DIRECTION, voxelMap.Size.Y, VOXELS_IN_GRID_IN_ONE_DIRECTION];\n\n                    MyMwcVector2Int triangleLookupCoord = GetTriangleLookupCoord(voxelMap, gridCoord);\n\n                    //  We need to clear list of intersections\n                    intersections.Clear();\n\n                    //  Get triangles that lie on this grid point/line\n                    List<MyImportTriangle> triangles = m_trianglesLookup[triangleLookupCoord.X, triangleLookupCoord.Y];\n                    for (int i = 0; i < triangles.Count; i++)\n                    {\n                        //  Ray is always in Y-axis direction\n                        //MyLine line = new MyLine(gridCoord, gridCoord + Vector3.Up * 100000, false);\n                        MyLine line = new MyLine(new Vector3(gridCoord.X, m_minCoord.Y, gridCoord.Z) + Vector3.Down * 10, new Vector3(gridCoord.X, m_maxCoord.Y, gridCoord.Z) + Vector3.Up * 10, false);\n\n                        MyTriangle_Vertexes triangle;\n                        triangle.Vertex0 = triangles[i].Vertex0;\n                        triangle.Vertex1 = triangles[i].Vertex1;\n                        triangle.Vertex2 = triangles[i].Vertex2;\n\n                        float? distance = MyUtils.GetLineTriangleIntersection(ref line, ref triangle);\n                        if (distance.HasValue == true)\n                        {\n                            intersections.Add(new MyImportIntersection(line.From + line.Direction * distance.Value, triangles[i].Normal, distance.Value));\n                        }\n                    }\n\n                    //  SortForSAP intersections by their distance from the origin (from the grid point)\n                    intersections.Sort(delegate(MyImportIntersection p1, MyImportIntersection p2) { return p1.Distance.CompareTo(p2.Distance); });\n\n                    int lastY = 0;\n                    bool contentSwitch = false;     //  This tells us if we will add empty or full voxels. False = until now it's empty. True = it full.                    \n                    for (int i = 0; i < intersections.Count; i++)\n                    {\n                        Vector3 tempGridCoord = GetGridCoord(voxelMap, gridStartPointX + gridPointX, lastY, gridStartPointZ + gridPointZ);\n                        int length = (int)((intersections[i].Intersection.Y - tempGridCoord.Y) / m_gridPointsSize);\n                        // this is here, because we must find intersection with triangle out of borders of voxel map, because we can use voxel hand at the borders\n                        if (length < 0)\n                        {\n                            contentSwitch = !contentSwitch;\n                            continue;\n                        }\n\n                        for (int y = lastY; y < (lastY + length); y++)\n                        {\n                            MyMwcVector3Int voxelCoord = voxelMap.GetVoxelCoordinateFromMeters(GetGridCoord(voxelMap, gridPointX, y, gridPointZ));\n                            if (voxelCoord.Y < voxelContentSum.GetLength(1) &&\n                               voxelCoord.Y >= 0)\n                            {\n                                voxelContentSum[voxelCoord.X, voxelCoord.Y, voxelCoord.Z] += (contentSwitch == false) ? 0 : 1;\n                            }\n                        }\n\n                        contentSwitch = !contentSwitch;\n                        lastY = lastY + length;\n                    }\n                }\n            }\n\n            return voxelContentSum;\n        }\n\n        //  Import one individual grid\n        void ImportGrid(MyVoxelMap voxelMap, int gridX, int gridZ)\n        {\n            int[, ,] voxelContentSum = GetVoxelContentSum(voxelMap, gridX, gridZ);\n\n            //  Transform grid values to voxels\n            int voxelStartX = gridX * VOXELS_IN_GRID_IN_ONE_DIRECTION;\n            int voxelStartZ = gridZ * VOXELS_IN_GRID_IN_ONE_DIRECTION;\n            for (int x = 0; x < VOXELS_IN_GRID_IN_ONE_DIRECTION; x++)\n            {\n                for (int y = 0; y < voxelMap.Size.Y; y++)\n                {\n                    for (int z = 0; z < VOXELS_IN_GRID_IN_ONE_DIRECTION; z++)\n                    {\n                        MyMwcVector3Int voxelCoord = new MyMwcVector3Int(voxelStartX + x, y, voxelStartZ + z);\n\n                        float content = 0;\n\n                        if (voxelContentSum != null)\n                            content = (float)voxelContentSum[x, y, z] / (float)GRID_POINTS_IN_ONE_VOXEL_TOTAL;\n\n                        //  Content value must be in interval <0..1>\n                        MyCommonDebugUtils.AssertRelease((content >= 0.0f) && (content <= 1.0f));\n\n                        voxelMap.SetVoxelContent((byte)(content * MyVoxelConstants.VOXEL_CONTENT_FULL_FLOAT), ref voxelCoord);\n                    }\n                }\n            }\n        }\n\n        void PerformAction(MyVoxelMap voxelMap, MyvoxelImportAction action, MyMwcVoxelMaterialsEnum? voxelMaterial, ref bool changed)\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"PerformAction\");\n\n            //  Voxel map size must be multiple of grid size. Or, whole grid must fit exactly into X times into voxel map, without crossing border!\n            MyCommonDebugUtils.AssertRelease((voxelMap.Size.X % VOXELS_IN_GRID_IN_ONE_DIRECTION) == 0);\n\n            //  Voxel map size must be multiple of grid size. Or, whole grid must fit exactly into X times into voxel map, without crossing border!\n            MyCommonDebugUtils.AssertRelease((voxelMap.Size.Z % VOXELS_IN_GRID_IN_ONE_DIRECTION) == 0);\n\n            int gridsCountX = voxelMap.Size.X / VOXELS_IN_GRID_IN_ONE_DIRECTION;\n            int gridsCountZ = voxelMap.Size.Z / VOXELS_IN_GRID_IN_ONE_DIRECTION;\n\n            //  Space between two grid points in metres\n            m_gridPointsSize = MyVoxelConstants.VOXEL_SIZE_IN_METRES / (float)GRID_POINTS_IN_ONE_VOXEL_IN_ONE_DIRECTION;\n            m_gridPointsSizeHalf = m_gridPointsSize / 2.0f;\n\n            //  Get min corner of the box\n            MyMwcVector3Int minCorner = voxelMap.GetVoxelCoordinateFromMeters(m_minCoord);\n\n            //  Get max corner of the box\n            MyMwcVector3Int maxCorner = voxelMap.GetVoxelCoordinateFromMeters(m_maxCoord);\n\n            voxelMap.FixVoxelCoord(ref minCorner);\n            voxelMap.FixVoxelCoord(ref maxCorner);\n\n            //  We are tracking which voxels were changed, so we can invalidate only needed cells in the cache\n            MyMwcVector3Int minChanged = maxCorner;\n            MyMwcVector3Int maxChanged = minCorner;\n\n            bool contentChanged = false;\n\n            for (int gridX = 0; gridX < gridsCountX; gridX++)\n            {\n                for (int gridZ = 0; gridZ < gridsCountZ; gridZ++)\n                {\n                    if (PerformGridAction(voxelMap, action, gridX, gridZ, ref minChanged, ref maxChanged, voxelMaterial, ref changed))\n                    {\n                        contentChanged = true;\n                    }\n                }\n            }\n\n            if (contentChanged)\n            {\n                //  Extend borders for cleaning, so it's one pixel on both sides\n                minChanged.X -= 1;\n                minChanged.Y -= 1;\n                minChanged.Z -= 1;\n                maxChanged.X += 1;\n                maxChanged.Y += 1;\n                maxChanged.Z += 1;\n                voxelMap.FixVoxelCoord(ref minChanged);\n                voxelMap.FixVoxelCoord(ref maxChanged);\n\n                voxelMap.InvalidateCache(minChanged, maxChanged);\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        bool PerformGridAction(MyVoxelMap voxelMap, MyvoxelImportAction action, int gridX, int gridZ, ref MyMwcVector3Int minChanged, ref MyMwcVector3Int maxChanged, MyMwcVoxelMaterialsEnum? voxelMaterial, ref bool changed)\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"PerformGridAction\");\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"get content sum\");\n            int[, ,] voxelContentSum = GetVoxelContentSum(voxelMap, gridX, gridZ);\n            if (voxelContentSum == null)\n            {\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n                return false;\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"loop\");\n            bool anyContentChanged = false;\n\n            //  Transform grid values to voxels\n            int voxelStartX = gridX * VOXELS_IN_GRID_IN_ONE_DIRECTION;\n            int voxelStartZ = gridZ * VOXELS_IN_GRID_IN_ONE_DIRECTION;\n\n\n            switch (action)\n            {\n                case MyvoxelImportAction.AddVoxels:\n                    MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyvoxelImportAction.AddVoxels\");\n                    for (int x = 0; x < VOXELS_IN_GRID_IN_ONE_DIRECTION; x++) for (int y = 0; y < voxelMap.Size.Y; y++) for (int z = 0; z < VOXELS_IN_GRID_IN_ONE_DIRECTION; z++)\n                    {\n                        MyMwcVector3Int voxelCoord = new MyMwcVector3Int(voxelStartX + x, y, voxelStartZ + z);\n\n                        byte newContent =  (byte)(voxelContentSum[x, y, z] * MyVoxelConstants.VOXEL_CONTENT_FULL / GRID_POINTS_IN_ONE_VOXEL_TOTAL);\n                        if (newContent == 0) continue;\n\n                        bool c = PerformAddVoxels(voxelMap, voxelCoord, newContent, ref changed);\n                        c |= PerformChangeMaterialVoxels(voxelMap, voxelCoord, voxelMaterial, ref changed);\n                        if (c)\n                        {\n                            anyContentChanged = true;\n                            if (voxelCoord.X < minChanged.X) minChanged.X = voxelCoord.X;\n                            if (voxelCoord.Y < minChanged.Y) minChanged.Y = voxelCoord.Y;\n                            if (voxelCoord.Z < minChanged.Z) minChanged.Z = voxelCoord.Z;\n                            if (voxelCoord.X > maxChanged.X) maxChanged.X = voxelCoord.X;\n                            if (voxelCoord.Y > maxChanged.Y) maxChanged.Y = voxelCoord.Y;\n                            if (voxelCoord.Z > maxChanged.Z) maxChanged.Z = voxelCoord.Z;\n                        }\n                    }\n                    MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n                    break;\n\n                case MyvoxelImportAction.RemoveVoxels:\n                    for (int x = 0; x < VOXELS_IN_GRID_IN_ONE_DIRECTION; x++) for (int y = 0; y < voxelMap.Size.Y; y++) for (int z = 0; z < VOXELS_IN_GRID_IN_ONE_DIRECTION; z++)\n                    {\n                        MyMwcVector3Int voxelCoord = new MyMwcVector3Int(voxelStartX + x, y, voxelStartZ + z);\n\n                        byte newContent = (byte)(voxelContentSum[x, y, z] * MyVoxelConstants.VOXEL_CONTENT_FULL / GRID_POINTS_IN_ONE_VOXEL_TOTAL);\n                        if (newContent == 0) continue;\n\n                        if (PerformRemoveVoxels(voxelMap, voxelCoord, newContent, ref changed))\n                        {\n                            anyContentChanged = true;\n                            if (voxelCoord.X < minChanged.X) minChanged.X = voxelCoord.X;\n                            if (voxelCoord.Y < minChanged.Y) minChanged.Y = voxelCoord.Y;\n                            if (voxelCoord.Z < minChanged.Z) minChanged.Z = voxelCoord.Z;\n                            if (voxelCoord.X > maxChanged.X) maxChanged.X = voxelCoord.X;\n                            if (voxelCoord.Y > maxChanged.Y) maxChanged.Y = voxelCoord.Y;\n                            if (voxelCoord.Z > maxChanged.Z) maxChanged.Z = voxelCoord.Z;\n                        }\n                    }\n                    break;\n\n                case MyvoxelImportAction.ChangeMaterial:\n                    for (int x = 0; x < VOXELS_IN_GRID_IN_ONE_DIRECTION; x++) for (int y = 0; y < voxelMap.Size.Y; y++) for (int z = 0; z < VOXELS_IN_GRID_IN_ONE_DIRECTION; z++)\n                    {\n                        MyMwcVector3Int voxelCoord = new MyMwcVector3Int(voxelStartX + x, y, voxelStartZ + z);\n\n                        byte newContent = (byte)(voxelContentSum[x, y, z] * MyVoxelConstants.VOXEL_CONTENT_FULL / GRID_POINTS_IN_ONE_VOXEL_TOTAL);\n                        if (newContent == 0) continue;\n\n                        if (PerformChangeMaterialVoxels(voxelMap, voxelCoord, voxelMaterial, ref changed))\n                        {\n                            anyContentChanged = true;\n                            if (voxelCoord.X < minChanged.X) minChanged.X = voxelCoord.X;\n                            if (voxelCoord.Y < minChanged.Y) minChanged.Y = voxelCoord.Y;\n                            if (voxelCoord.Z < minChanged.Z) minChanged.Z = voxelCoord.Z;\n                            if (voxelCoord.X > maxChanged.X) maxChanged.X = voxelCoord.X;\n                            if (voxelCoord.Y > maxChanged.Y) maxChanged.Y = voxelCoord.Y;\n                            if (voxelCoord.Z > maxChanged.Z) maxChanged.Z = voxelCoord.Z;\n                        }\n                    }\n                    break;\n\n                case MyvoxelImportAction.SoftenVoxels:\n                    for (int x = 0; x < VOXELS_IN_GRID_IN_ONE_DIRECTION; x++) for (int y = 0; y < voxelMap.Size.Y; y++) for (int z = 0; z < VOXELS_IN_GRID_IN_ONE_DIRECTION; z++)\n                    {\n                        MyMwcVector3Int voxelCoord = new MyMwcVector3Int(voxelStartX + x, y, voxelStartZ + z);\n\n                        byte newContent = (byte)(voxelContentSum[x, y, z] * MyVoxelConstants.VOXEL_CONTENT_FULL / GRID_POINTS_IN_ONE_VOXEL_TOTAL);\n                        if (newContent == 0) continue;\n\n                        if (PerformSoftenVoxels(voxelMap, voxelCoord, ref changed))\n                        {\n                            anyContentChanged = true;\n                            if (voxelCoord.X < minChanged.X) minChanged.X = voxelCoord.X;\n                            if (voxelCoord.Y < minChanged.Y) minChanged.Y = voxelCoord.Y;\n                            if (voxelCoord.Z < minChanged.Z) minChanged.Z = voxelCoord.Z;\n                            if (voxelCoord.X > maxChanged.X) maxChanged.X = voxelCoord.X;\n                            if (voxelCoord.Y > maxChanged.Y) maxChanged.Y = voxelCoord.Y;\n                            if (voxelCoord.Z > maxChanged.Z) maxChanged.Z = voxelCoord.Z;\n                        }\n                    }\n                    break;\n\n                case MyvoxelImportAction.WrinkleVoxels:\n                    for (int x = 0; x < VOXELS_IN_GRID_IN_ONE_DIRECTION; x++) for (int y = 0; y < voxelMap.Size.Y; y++) for (int z = 0; z < VOXELS_IN_GRID_IN_ONE_DIRECTION; z++)\n                    {\n                        MyMwcVector3Int voxelCoord = new MyMwcVector3Int(voxelStartX + x, y, voxelStartZ + z);\n\n                        byte newContent = (byte)(voxelContentSum[x, y, z] * MyVoxelConstants.VOXEL_CONTENT_FULL / GRID_POINTS_IN_ONE_VOXEL_TOTAL);\n\n                        if (newContent == 0) continue;\n\n                        if (PerformWrinkleVoxels(voxelMap, voxelCoord, ref changed))\n                        {\n                            anyContentChanged = true;\n                            if (voxelCoord.X < minChanged.X) minChanged.X = voxelCoord.X;\n                            if (voxelCoord.Y < minChanged.Y) minChanged.Y = voxelCoord.Y;\n                            if (voxelCoord.Z < minChanged.Z) minChanged.Z = voxelCoord.Z;\n                            if (voxelCoord.X > maxChanged.X) maxChanged.X = voxelCoord.X;\n                            if (voxelCoord.Y > maxChanged.Y) maxChanged.Y = voxelCoord.Y;\n                            if (voxelCoord.Z > maxChanged.Z) maxChanged.Z = voxelCoord.Z;\n                        }\n                    }\n                    break;\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n            return anyContentChanged;\n        }\n\n        bool PerformAddVoxels(MyVoxelMap voxelMap, MyMwcVector3Int voxelCoord, byte content, ref bool changed)\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"PerformAddVoxels\");\n\n            bool contentChanged = false;\n            byte originalContent = voxelMap.GetVoxelContent(ref voxelCoord);\n            if (content > originalContent)\n            {\n                changed = true;\n                voxelMap.SetVoxelContent(content, ref voxelCoord);\n                contentChanged = true;\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n            return contentChanged;\n        }\n\n        bool PerformRemoveVoxels(MyVoxelMap voxelMap, MyMwcVector3Int voxelCoord, byte content, ref bool changed)\n        {\n            bool contentChanged = false;\n            byte originalContent = voxelMap.GetVoxelContent(ref voxelCoord);\n            if (originalContent > MyVoxelConstants.VOXEL_CONTENT_EMPTY && content > MyVoxelConstants.VOXEL_CONTENT_EMPTY)\n            {\n                int newVal = originalContent - content;\n                if (newVal < MyVoxelConstants.VOXEL_CONTENT_EMPTY)\n                {\n                    newVal = MyVoxelConstants.VOXEL_CONTENT_EMPTY;\n                }\n                changed = true;\n                voxelMap.SetVoxelContent((byte)newVal, ref voxelCoord);\n                contentChanged = true;\n            }\n            return contentChanged;\n        }\n\n        bool PerformChangeMaterialVoxels(MyVoxelMap voxelMap, MyMwcVector3Int voxelCoord, MyMwcVoxelMaterialsEnum? voxelMaterial, ref bool changed)\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"PerformChangeMaterialVoxels\");\n            if (voxelMaterial != null)\n            {\n                byte originalContent = voxelMap.GetVoxelContent(ref voxelCoord);\n                if (originalContent == MyVoxelConstants.VOXEL_CONTENT_EMPTY)\n                {\n                    // if there are no voxel content then do nothing\n                    MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n                    return false;\n                }\n\n                MyMwcVoxelMaterialsEnum originalMaterial;\n                byte originalIndestructibleContent;\n                voxelMap.GetMaterialAndIndestructibleContent(ref voxelCoord, out originalMaterial,\n                                                             out originalIndestructibleContent);\n                if (originalMaterial == voxelMaterial.Value)\n                {\n                    // if original material is same as new material then do nothing\n                    MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n                    return false;\n                }\n\n                byte indestructibleContent = MyVoxelConstants.VOXEL_CONTENT_EMPTY;\n\n                voxelMap.SetVoxelMaterialAndIndestructibleContent(voxelMaterial.Value, indestructibleContent, ref voxelCoord);\n                changed = true;\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n                return true;\n            }\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n            return false;\n        }\n\n        bool PerformSoftenVoxels(MyVoxelMap voxelMap, MyMwcVector3Int voxelCoord, ref bool changed)\n        {\n            bool contentChanged = false;\n            byte originalContent = voxelMap.GetVoxelContent(ref voxelCoord);\n            if (originalContent > MyVoxelConstants.VOXEL_CONTENT_EMPTY)\n            {\n                changed = true;\n                voxelMap.SoftenVoxelContent(voxelCoord, MyVoxelConstants.DEFAULT_SOFTEN_WEIGHT);\n                contentChanged = true;\n            }\n            return contentChanged;\n        }\n\n        bool PerformWrinkleVoxels(MyVoxelMap voxelMap, MyMwcVector3Int voxelCoord, ref bool changed)\n        {\n            bool contentChanged = false;\n            byte originalContent = voxelMap.GetVoxelContent(ref voxelCoord);\n\n            voxelMap.WrinkleVoxelContent(voxelCoord, MyVoxelConstants.DEFAULT_WRINKLE_WEIGHT_ADD, MyVoxelConstants.DEFAULT_WRINKLE_WEIGHT_REMOVE);\n            byte newContent = voxelMap.GetVoxelContent(ref voxelCoord);\n            if (originalContent != newContent)\n            {\n                contentChanged = true;\n                changed = true;\n            }\n\n            return contentChanged;\n        }\n\n        Vector3 GetGridCoord(MyVoxelMap voxelMap, int gridPointX, int gridPointY, int gridPointZ)\n        {\n            return voxelMap.PositionLeftBottomCorner + new Vector3(\n                gridPointX * m_gridPointsSize + m_gridPointsSizeHalf,\n                gridPointY * m_gridPointsSize + m_gridPointsSizeHalf,\n                gridPointZ * m_gridPointsSize + m_gridPointsSizeHalf);\n        }\n\n        void CheckMinMaxCoords2d(ref Vector3 minCoord, ref Vector3 maxCoord, Vector3 vertex)\n        {\n            if (vertex.X < minCoord.X) minCoord.X = vertex.X;\n            if (vertex.Z < minCoord.Z) minCoord.Z = vertex.Z;\n            if (vertex.X > maxCoord.X) maxCoord.X = vertex.X;\n            if (vertex.Z > maxCoord.Z) maxCoord.Z = vertex.Z;\n        }\n\n        //  Converts vertex from 'world coordinates' to 'triangleVertexes lookup array coordinates'. \n        MyMwcVector2Int GetTriangleLookupCoord(MyVoxelMap voxelMap, Vector3 vertex)\n        {\n            return new MyMwcVector2Int(\n                (int)((vertex.X - voxelMap.PositionLeftBottomCorner.X) / m_trianglesLookupElementSizeX),\n                (int)((vertex.Z - voxelMap.PositionLeftBottomCorner.Z) / m_trianglesLookupElementSizeZ));\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Voxels/MyVoxelMapOreDepositCell.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Radar;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Utils;\nusing KeenSoftwareHouse.Library.Parallelization.Threading;\n\nnamespace MinerWars.AppCode.Game.Voxels\n{     \n    delegate void OnVoxelMapOreDepositCellContainsOreChanged(MyVoxelMapOreDepositCell sender, bool isEmpty);\n\n    class MyVoxelMapOreDepositCell : IMyObjectToDetect\n    {\n        private MyVoxelMap m_voxelMap;\n        private MyMwcVector3Int m_coord;\n\n        private Dictionary<int, int> m_allMaterialsContent;\n        private int m_totalSumOfOreContent;\n        private List<MyMwcVoxelMaterialsEnum> m_oreWithContent;\n        private Dictionary<int, Vector3?> m_allMaterialsPositions;\n        private bool m_positionIsDirty;\n\n        private Dictionary<int, byte> m_helpersMaxContentForMaterial;\n\n        private BoundingBox m_worldAABB;\n        public BoundingBox WorldAABB \n        {\n            get { return m_worldAABB; }\n            set { m_positionIsDirty = true; m_worldAABB = value; }\n        }\n        public event Action<MyVoxelMapOreDepositCell> OnClose;\n\n        public MyMwcVector3Int Coord \n        {\n            get { return m_coord; }\n        }\n\n        public MyVoxelMap VoxelMap\n        {\n            get { return m_voxelMap; }\n        }\n\n        public MyVoxelMapOreDepositCell(MyVoxelMap voxelMap, MyMwcVector3Int coord)\n        {\n            m_voxelMap = voxelMap;\n            m_coord = coord;\n            m_positionIsDirty = true;\n            m_totalSumOfOreContent = 0;\n            \n            m_oreWithContent = new List<MyMwcVoxelMaterialsEnum>(MyVoxelMapOreMaterials.RareOreCount());\n\n            /*\n            int allMaterialsCount = MyMwcUtils.GetMaxValueFromEnum<MyMwcVoxelMaterialsEnum>() + 1;\n            m_allMaterialsContent = new int[allMaterialsCount];\n            m_allMaterialsPositions = new Vector3?[allMaterialsCount];\n            m_helpersMaxContentForMaterial = new byte[allMaterialsCount];\n              */\n\n            m_allMaterialsContent = new Dictionary<int, int>();\n            m_allMaterialsPositions = new Dictionary<int, Vector3?>();\n            m_helpersMaxContentForMaterial = new Dictionary<int, byte>();\n        }\n\n        public event OnVoxelMapOreDepositCellContainsOreChanged OnVoxelMapOreDepositCellContainsOreChanged;\n\n        public void SetOreContent(MyMwcVoxelMaterialsEnum ore, int content)\n        {\n            if (content == 0 || !MyVoxelMapOreMaterials.IsRareOre(ore))\n            {\n                return;\n            }\n\n            int previousTotalOreContentSum = m_totalSumOfOreContent;\n\n\n            int existingContent = 0;\n            m_allMaterialsContent.TryGetValue((int)ore, out existingContent);\n\n            int contentToAdd = content;\n            if (content < 0) \n            {\n                contentToAdd = Math.Max(content, -existingContent);\n            }\n\n            if (!m_allMaterialsContent.ContainsKey((int)ore))\n                m_allMaterialsContent.Add((int)ore, 0);\n            m_allMaterialsContent[(int)ore] += contentToAdd;\n            m_totalSumOfOreContent += contentToAdd;\n\n            // this ore hasn't any content before, so we add it to oreWithContent collection\n            if (contentToAdd > 0 && existingContent == 0)\n            {\n                m_oreWithContent.Add(ore);\n            }\n            // this ore has no content now, so we remove it from oreWithContent collection\n            else if (contentToAdd < 0 && m_allMaterialsContent[(int)ore] == 0)\n            {\n                m_oreWithContent.Remove(ore);\n            }\n            \n            bool containsOreChanged = false;\n            // detect if cell was changed from empty to not empty\n            if (m_totalSumOfOreContent > 0 && previousTotalOreContentSum == 0)\n            {                \n                containsOreChanged = true;\n            }\n            // detect if cell was changed from not empty to empty\n            else if (previousTotalOreContentSum > 0 && m_totalSumOfOreContent <= 0)\n            {                \n                containsOreChanged = true;\n            }\n            \n            if (containsOreChanged && OnVoxelMapOreDepositCellContainsOreChanged != null)\n            {\n                OnVoxelMapOreDepositCellContainsOreChanged(this, m_totalSumOfOreContent == 0);\n            }\n            m_positionIsDirty = true;\n        }\n\n        public void Close(bool needLock) \n        {\n            if (needLock)\n            {\n                MyEntities.EntityCloseLock.AcquireExclusive();\n            }\n\n            MyVoxelMaps.RemoveVoxelMapOreDepositCell(this);\n\n            m_voxelMap = null;\n            if (m_oreWithContent != null)\n            {\n                m_oreWithContent.Clear();\n                m_oreWithContent = null;\n            }\n            m_allMaterialsContent = null;\n            m_allMaterialsPositions = null;\n            m_helpersMaxContentForMaterial = null;\n            m_totalSumOfOreContent = 0;\n            if (OnClose != null)\n            {\n                OnClose(this);\n                OnClose = null;\n            }\n\n            if (needLock)\n            {\n                MyEntities.EntityCloseLock.ReleaseExclusive();\n            }\n        }\n\n        public void Clear() \n        {\n            m_allMaterialsContent.Clear();\n            m_oreWithContent.Clear();\n            m_totalSumOfOreContent = 0;\n            m_positionIsDirty = true;\n        }\n\n        public int GetOreContent(MyMwcVoxelMaterialsEnum ore)\n        {\n            return m_allMaterialsContent[(int)ore];\n        }\n\n        public List<MyMwcVoxelMaterialsEnum> GetOreWithContent()\n        {\n            return m_oreWithContent;\n        }\n\n        public int GetTotalRareOreContent() \n        {\n            return m_totalSumOfOreContent;\n        }\n\n        public void SortByContent() \n        {\n            m_oreWithContent.Sort(OreComparer);            \n        }\n\n        public Vector3 GetPosition()\n        {\n            return WorldAABB.GetCenter();\n        }\n\n        public Vector3? GetPosition(MyMwcVoxelMaterialsEnum material) \n        {\n            if (m_positionIsDirty)\n            {\n                RecalculatePositions();\n                m_positionIsDirty = false;\n            }\n\n            Vector3? pos;\n            m_allMaterialsPositions.TryGetValue((int)material, out pos);\n            return pos;\n        }\n\n        private void ClearPositionsAndMaxContent() \n        {\n            m_allMaterialsPositions.Clear();\n            m_helpersMaxContentForMaterial.Clear();\n        }\n\n        private void RecalculatePositions()\n        {\n            ClearPositionsAndMaxContent();\n            int sizeInVoxels = MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS * MyVoxelConstants.VOXEL_MAP_ORE_DEPOSIT_CELL_IN_DATA_CELLS;\n\n            MyMwcVector3Int voxelStartCoord = new MyMwcVector3Int(sizeInVoxels * m_coord.X, sizeInVoxels * m_coord.Y, sizeInVoxels * m_coord.Z);\n            MyMwcVector3Int voxelEndCoord = new MyMwcVector3Int(voxelStartCoord.X + sizeInVoxels - 1, voxelStartCoord.Y + sizeInVoxels - 1, voxelStartCoord.Z + sizeInVoxels - 1);\n\n            MyMwcVector3Int voxelCoord;\n            for (voxelCoord.X = voxelStartCoord.X; voxelCoord.X <= voxelEndCoord.X; voxelCoord.X++)\n            {\n                for (voxelCoord.Y = voxelStartCoord.Y; voxelCoord.Y <= voxelEndCoord.Y; voxelCoord.Y++)\n                {\n                    for (voxelCoord.Z = voxelStartCoord.Z; voxelCoord.Z <= voxelEndCoord.Z; voxelCoord.Z++)\n                    {\n                        byte content = m_voxelMap.GetVoxelContent(ref voxelCoord);\n                        if (content >= MyVoxelConstants.VOXEL_ISO_LEVEL)\n                        {\n                            MyMwcVoxelMaterialsEnum material = m_voxelMap.GetVoxelMaterial(ref voxelCoord);\n                            byte maxContent;\n                            m_helpersMaxContentForMaterial.TryGetValue((int)material, out maxContent);\n\n                            if (!m_allMaterialsPositions.ContainsKey((int)material) || content > maxContent)\n                            {\n                                if (!m_allMaterialsPositions.ContainsKey((int)material))\n                                    m_allMaterialsPositions.Add((int)material,m_voxelMap.GetVoxelCenterPositionAbsolute(ref voxelCoord));\n                                else\n                                    m_allMaterialsPositions[(int)material] = m_voxelMap.GetVoxelCenterPositionAbsolute(ref voxelCoord);\n\n                                if (!m_helpersMaxContentForMaterial.ContainsKey((int)material))\n                                    m_helpersMaxContentForMaterial.Add((int)material, content);\n                                else\n                                    m_helpersMaxContentForMaterial[(int)material] = content;\n                            }\n                        }\n                    }\n                }\n            }\n\n            //if (m_oreWithContent.Count > 0)\n            //{\n            //    SortByContent();\n            //    m_position = m_allMaterialsPositions[(int)m_oreWithContent[0]].Value;\n            //}\n            //else \n            //{\n            //    m_position = WorldAABB.GetCenter();\n            //}\n        }\n\n        private int OreComparer(MyMwcVoxelMaterialsEnum ore1, MyMwcVoxelMaterialsEnum ore2) \n        {\n            int content1 = m_allMaterialsContent[(int)ore1];\n            int content2 = m_allMaterialsContent[(int)ore2];\n\n            if (content1 == content2)\n            {\n                return 0;\n            }\n            else if (content1 < content2)\n            {\n                return 1;\n            }\n            else \n            {\n                return -1;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Voxels/MyVoxelMapOreMaterials.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.Utils;\n\nnamespace MinerWars.AppCode.Game.Voxels\n{\n    class MyOreRatioFromVoxelMaterial\n    {\n        public MyMwcObjectBuilder_Ore_TypesEnum OreType;\n        public float Ratio;\n\n        public MyOreRatioFromVoxelMaterial(MyMwcObjectBuilder_Ore_TypesEnum oreType, float ratio)\n        {\n            OreType = oreType;\n            Ratio = ratio;\n        }\n    }\n\n    class MyVoxelMaterialConfiguration\n    {\n        public bool CanBeHarvested { get; set; }\n        public bool IsRareOre { get; set; }\n        public MyOreRatioFromVoxelMaterial[] OreFromVoxelMaterial { get; set; }\n\n        public MyVoxelMaterialConfiguration(bool canBeHarvested, bool isRareOre, MyOreRatioFromVoxelMaterial[] oreFromVoxelMaterial)\n        {\n            CanBeHarvested = canBeHarvested;\n            IsRareOre = isRareOre;\n            OreFromVoxelMaterial = oreFromVoxelMaterial;\n        }\n    }\n\n    static class MyVoxelMapOreMaterials\n    {                \n        private static readonly MyVoxelMaterialConfiguration[] m_materialConfigurations = new MyVoxelMaterialConfiguration[MyMwcUtils.GetMaxValueFromEnum<MyMwcVoxelMaterialsEnum>() + 1];\n        private static readonly int m_rareOreCount;\n\n        static MyVoxelMapOreMaterials()\n        {\n            m_materialConfigurations[(int)MyMwcVoxelMaterialsEnum.Cobalt_01] = new MyVoxelMaterialConfiguration(true, true, new MyOreRatioFromVoxelMaterial[] { new MyOreRatioFromVoxelMaterial(MyMwcObjectBuilder_Ore_TypesEnum.COBALT, 1f) });\n            m_materialConfigurations[(int)MyMwcVoxelMaterialsEnum.Concrete_01] = new MyVoxelMaterialConfiguration(true, false, new MyOreRatioFromVoxelMaterial[] { new MyOreRatioFromVoxelMaterial(MyMwcObjectBuilder_Ore_TypesEnum.CONCRETE, 1f) });\n            m_materialConfigurations[(int)MyMwcVoxelMaterialsEnum.Concrete_02] = new MyVoxelMaterialConfiguration(true, false, new MyOreRatioFromVoxelMaterial[] { new MyOreRatioFromVoxelMaterial(MyMwcObjectBuilder_Ore_TypesEnum.CONCRETE, 1f) });\n            m_materialConfigurations[(int)MyMwcVoxelMaterialsEnum.Gold_01] = new MyVoxelMaterialConfiguration(true, true, new MyOreRatioFromVoxelMaterial[] { new MyOreRatioFromVoxelMaterial(MyMwcObjectBuilder_Ore_TypesEnum.GOLD, 0.7f) });\n            m_materialConfigurations[(int)MyMwcVoxelMaterialsEnum.Helium3_01] = new MyVoxelMaterialConfiguration(true, true, new MyOreRatioFromVoxelMaterial[] { new MyOreRatioFromVoxelMaterial(MyMwcObjectBuilder_Ore_TypesEnum.HELIUM, 0.7f) });\n            m_materialConfigurations[(int)MyMwcVoxelMaterialsEnum.Helium4_01] = new MyVoxelMaterialConfiguration(true, true, new MyOreRatioFromVoxelMaterial[] { new MyOreRatioFromVoxelMaterial(MyMwcObjectBuilder_Ore_TypesEnum.HELIUM, 0.7f) });\n            m_materialConfigurations[(int)MyMwcVoxelMaterialsEnum.Ice_01] = new MyVoxelMaterialConfiguration(true, true, new MyOreRatioFromVoxelMaterial[] { new MyOreRatioFromVoxelMaterial(MyMwcObjectBuilder_Ore_TypesEnum.ICE, 1f) });\n            m_materialConfigurations[(int)MyMwcVoxelMaterialsEnum.Indestructible_01] = new MyVoxelMaterialConfiguration(false, false, null);\n            m_materialConfigurations[(int)MyMwcVoxelMaterialsEnum.Indestructible_02] = new MyVoxelMaterialConfiguration(false, false, null);\n            m_materialConfigurations[(int)MyMwcVoxelMaterialsEnum.Indestructible_03] = new MyVoxelMaterialConfiguration(false, false, null);\n            m_materialConfigurations[(int)MyMwcVoxelMaterialsEnum.Indestructible_04] = new MyVoxelMaterialConfiguration(false, false, null);\n            m_materialConfigurations[(int)MyMwcVoxelMaterialsEnum.Indestructible_05_Craters_01] = new MyVoxelMaterialConfiguration(false, false, null);\n            m_materialConfigurations[(int)MyMwcVoxelMaterialsEnum.Iron_01] = new MyVoxelMaterialConfiguration(true, true, new MyOreRatioFromVoxelMaterial[] { new MyOreRatioFromVoxelMaterial(MyMwcObjectBuilder_Ore_TypesEnum.IRON, 1f) });\n            m_materialConfigurations[(int)MyMwcVoxelMaterialsEnum.Iron_02] = new MyVoxelMaterialConfiguration(true, true, new MyOreRatioFromVoxelMaterial[] { new MyOreRatioFromVoxelMaterial(MyMwcObjectBuilder_Ore_TypesEnum.IRON, 1f) });\n            m_materialConfigurations[(int)MyMwcVoxelMaterialsEnum.Lava_01] = new MyVoxelMaterialConfiguration(true, true, new MyOreRatioFromVoxelMaterial[] { new MyOreRatioFromVoxelMaterial(MyMwcObjectBuilder_Ore_TypesEnum.LAVA, 1f) });\n            m_materialConfigurations[(int)MyMwcVoxelMaterialsEnum.Magnesium_01] = new MyVoxelMaterialConfiguration(true, true, new MyOreRatioFromVoxelMaterial[] { new MyOreRatioFromVoxelMaterial(MyMwcObjectBuilder_Ore_TypesEnum.MAGNESIUM, 1f) });\n            m_materialConfigurations[(int)MyMwcVoxelMaterialsEnum.Nickel_01] = new MyVoxelMaterialConfiguration(true, true, new MyOreRatioFromVoxelMaterial[] { new MyOreRatioFromVoxelMaterial(MyMwcObjectBuilder_Ore_TypesEnum.NICKEL, 1f) });\n            m_materialConfigurations[(int)MyMwcVoxelMaterialsEnum.Organic_01] = new MyVoxelMaterialConfiguration(true, true, new MyOreRatioFromVoxelMaterial[] { new MyOreRatioFromVoxelMaterial(MyMwcObjectBuilder_Ore_TypesEnum.ORGANIC, 0.09f) });\n            m_materialConfigurations[(int)MyMwcVoxelMaterialsEnum.Platinum_01] = new MyVoxelMaterialConfiguration(true, true, new MyOreRatioFromVoxelMaterial[] { new MyOreRatioFromVoxelMaterial(MyMwcObjectBuilder_Ore_TypesEnum.PLATINUM, 0.8f) });\n            m_materialConfigurations[(int)MyMwcVoxelMaterialsEnum.Sandstone_01] = new MyVoxelMaterialConfiguration(true, false, new MyOreRatioFromVoxelMaterial[] { new MyOreRatioFromVoxelMaterial(MyMwcObjectBuilder_Ore_TypesEnum.SANDSTONE, 1f) });\n            m_materialConfigurations[(int)MyMwcVoxelMaterialsEnum.Stone_Red] = new MyVoxelMaterialConfiguration(true, false, new MyOreRatioFromVoxelMaterial[] { new MyOreRatioFromVoxelMaterial(MyMwcObjectBuilder_Ore_TypesEnum.STONE, 1f) });\n            m_materialConfigurations[(int)MyMwcVoxelMaterialsEnum.Silicon_01] = new MyVoxelMaterialConfiguration(true, true, new MyOreRatioFromVoxelMaterial[] { new MyOreRatioFromVoxelMaterial(MyMwcObjectBuilder_Ore_TypesEnum.SILICON, 1f) });\n            m_materialConfigurations[(int)MyMwcVoxelMaterialsEnum.Silver_01] = new MyVoxelMaterialConfiguration(true, true, new MyOreRatioFromVoxelMaterial[] { new MyOreRatioFromVoxelMaterial(MyMwcObjectBuilder_Ore_TypesEnum.SILVER, 0.9f) });\n            m_materialConfigurations[(int)MyMwcVoxelMaterialsEnum.Snow_01] = new MyVoxelMaterialConfiguration(true, true, new MyOreRatioFromVoxelMaterial[] { new MyOreRatioFromVoxelMaterial(MyMwcObjectBuilder_Ore_TypesEnum.SNOW, 1f) });\n            m_materialConfigurations[(int)MyMwcVoxelMaterialsEnum.Stone_01] = new MyVoxelMaterialConfiguration(true, false, new MyOreRatioFromVoxelMaterial[] { new MyOreRatioFromVoxelMaterial(MyMwcObjectBuilder_Ore_TypesEnum.STONE, 1f) });\n            m_materialConfigurations[(int)MyMwcVoxelMaterialsEnum.Stone_02] = new MyVoxelMaterialConfiguration(true, false, new MyOreRatioFromVoxelMaterial[] { new MyOreRatioFromVoxelMaterial(MyMwcObjectBuilder_Ore_TypesEnum.STONE, 1f) });\n            m_materialConfigurations[(int)MyMwcVoxelMaterialsEnum.Stone_03] = new MyVoxelMaterialConfiguration(true, false, new MyOreRatioFromVoxelMaterial[] { new MyOreRatioFromVoxelMaterial(MyMwcObjectBuilder_Ore_TypesEnum.STONE, 1f) });\n            m_materialConfigurations[(int)MyMwcVoxelMaterialsEnum.Stone_04] = new MyVoxelMaterialConfiguration(true, false, new MyOreRatioFromVoxelMaterial[] { new MyOreRatioFromVoxelMaterial(MyMwcObjectBuilder_Ore_TypesEnum.STONE, 1f) });\n            m_materialConfigurations[(int)MyMwcVoxelMaterialsEnum.Stone_05] = new MyVoxelMaterialConfiguration(true, false, new MyOreRatioFromVoxelMaterial[] { new MyOreRatioFromVoxelMaterial(MyMwcObjectBuilder_Ore_TypesEnum.STONE, 1f) });\n            m_materialConfigurations[(int)MyMwcVoxelMaterialsEnum.Stone_06] = new MyVoxelMaterialConfiguration(true, false, new MyOreRatioFromVoxelMaterial[] { new MyOreRatioFromVoxelMaterial(MyMwcObjectBuilder_Ore_TypesEnum.STONE, 1f) });\n            m_materialConfigurations[(int)MyMwcVoxelMaterialsEnum.Stone_07] = new MyVoxelMaterialConfiguration(true, false, new MyOreRatioFromVoxelMaterial[] { new MyOreRatioFromVoxelMaterial(MyMwcObjectBuilder_Ore_TypesEnum.STONE, 1f) });\n            m_materialConfigurations[(int)MyMwcVoxelMaterialsEnum.Stone_08] = new MyVoxelMaterialConfiguration(true, false, new MyOreRatioFromVoxelMaterial[] { new MyOreRatioFromVoxelMaterial(MyMwcObjectBuilder_Ore_TypesEnum.STONE, 1f) });\n            m_materialConfigurations[(int)MyMwcVoxelMaterialsEnum.Stone_10] = new MyVoxelMaterialConfiguration(true, false, new MyOreRatioFromVoxelMaterial[] { new MyOreRatioFromVoxelMaterial(MyMwcObjectBuilder_Ore_TypesEnum.STONE, 1f) });\n            m_materialConfigurations[(int)MyMwcVoxelMaterialsEnum.Stone_13_Wall_01] = new MyVoxelMaterialConfiguration(true, false, new MyOreRatioFromVoxelMaterial[] { new MyOreRatioFromVoxelMaterial(MyMwcObjectBuilder_Ore_TypesEnum.STONE, 1f) });\n            m_materialConfigurations[(int)MyMwcVoxelMaterialsEnum.Treasure_01] = new MyVoxelMaterialConfiguration(true, true, new MyOreRatioFromVoxelMaterial[] { new MyOreRatioFromVoxelMaterial(MyMwcObjectBuilder_Ore_TypesEnum.TREASURE, 0.05f) });\n            m_materialConfigurations[(int)MyMwcVoxelMaterialsEnum.Treasure_02] = new MyVoxelMaterialConfiguration(true, true, new MyOreRatioFromVoxelMaterial[] { new MyOreRatioFromVoxelMaterial(MyMwcObjectBuilder_Ore_TypesEnum.TREASURE, 0.05f) });\n            m_materialConfigurations[(int)MyMwcVoxelMaterialsEnum.Uranite_01] = new MyVoxelMaterialConfiguration(true, true, new MyOreRatioFromVoxelMaterial[] { new MyOreRatioFromVoxelMaterial(MyMwcObjectBuilder_Ore_TypesEnum.URANITE, 0.3f) });\n\n            m_rareOreCount = GetRareOreCount();\n        }\n\n        public static bool IsRareOre(MyMwcVoxelMaterialsEnum voxelMaterial)\n        {\n            return m_materialConfigurations[(int)voxelMaterial].IsRareOre;\n        }\n\n        public static bool CanBeHarvested(MyMwcVoxelMaterialsEnum voxelMaterial)\n        {\n            return m_materialConfigurations[(int) voxelMaterial].CanBeHarvested;\n        }        \n\n        private static int GetRareOreCount()\n        {\n            int oreCount = 0;\n            foreach (MyVoxelMaterialConfiguration materialConfiguration in m_materialConfigurations)\n            {\n                if (materialConfiguration.IsRareOre)\n                {\n                    oreCount++;\n                }\n            }\n            return oreCount;\n        }\n\n        public static int RareOreCount()\n        {\n            return m_rareOreCount;\n        }\n\n        public static MyOreRatioFromVoxelMaterial[] GetOreFromVoxelMaterial(MyMwcVoxelMaterialsEnum voxelMaterial)\n        {\n            return m_materialConfigurations[(int) voxelMaterial].OreFromVoxelMaterial;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Voxels/MyVoxelMaps.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Effects;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.Managers;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.World;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.CommonLIB.AppCode.Networking;\n\nnamespace MinerWars.AppCode.Game.Voxels\n{\n    //  Used to sort voxel maps by distance between their center and camera\n    class MyPhysObjectVoxelMapByDistanceComparer : IComparer<MyEntity>\n    {\n        public int Compare(MyEntity x, MyEntity y)\n        {\n            float xDist, yDist;\n\n            Vector3 vxPos = x.GetPosition();\n            Vector3 vyPos = y.GetPosition();\n\n            Vector3 campos = MyCamera.Position;\n            Vector3.DistanceSquared(ref vxPos, ref campos, out xDist);\n            Vector3.DistanceSquared(ref vyPos, ref campos, out yDist);\n            return xDist.CompareTo(yDist);\n        }\n    }\n\n    //  Used to sort data cells by their distance to given line's starting point\n    class MySortDataCellByDistanceComparer : IComparer<MyDataCellForSorting>\n    {\n        public int Compare(MyDataCellForSorting x, MyDataCellForSorting y)\n        {\n            return x.CellDistanceToLineFrom.CompareTo(y.CellDistanceToLineFrom);\n        }\n    }\n\n    //  Used to sort render cell by distance between their center and camera\n    class MyRenderCellByDistanceComparer : IComparer<MyRenderCellForSorting>\n    {\n        public int Compare(MyRenderCellForSorting x, MyRenderCellForSorting y)\n        {\n            float xDist, yDist;\n            Vector3 campos = MyCamera.Position;\n            Vector3.Distance(ref x.RenderCell.Center, ref campos, out xDist);\n            Vector3.Distance(ref y.RenderCell.Center, ref campos, out yDist);\n            return xDist.CompareTo(yDist);\n        }\n    }\n\n    struct MyRenderCellForSorting\n    {\n        public MyVoxelCacheCellRender RenderCell;\n\n        public MyRenderCellForSorting(MyVoxelCacheCellRender renderCell)\n        {\n            RenderCell = renderCell;\n        }\n    }\n\n    struct MyDataCellForSorting\n    {\n        public MyMwcVector3Int DataCell;\n        public float CellDistanceToLineFrom;\n\n        public MyDataCellForSorting(MyMwcVector3Int dataCell, float cellDistanceToLineFrom)\n        {\n            DataCell = dataCell;\n            CellDistanceToLineFrom = cellDistanceToLineFrom;\n        }\n    }\n\n    class MyVoxelMaps\n    {\n        //  This array is used for holding potential triangles we need to test for intersections more closly\n        // Size of this array is 2048 * 100B = 200KB\n        public readonly static MyColDetVoxelTriangle[] PotentialColDetTriangles = new MyColDetVoxelTriangle[MyVoxelConstants.MAX_POTENTIAL_COLDET_TRIANGLES_COUNT];\n\n        //  Used to calculate cell's hash code. Const with '_ASSERT' is here only for compile time checking if we can't overflow Int64 boundaries. But we can't.\n        const Int64 MAX_VOXEL_CELLS_COUNT = MyVoxelConstants.MAX_VOXEL_MAP_SIZE_IN_VOXELS / MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS;\n        const Int64 MAX_VOXEL_CELLS_COUNT_ASSERT = MAX_VOXEL_CELLS_COUNT * MAX_VOXEL_CELLS_COUNT * MAX_VOXEL_CELLS_COUNT * MAX_VOXEL_CELLS_COUNT * MyVoxelConstants.MAX_VOXEL_MAP_ID;\n\n        //  List of voxel maps in this sector\n        static List<MyVoxelMap> m_voxelMaps = new List<MyVoxelMap>();\n        //  Sometimes we need to remove objects from \"m_voxelMaps\" while we iterate that list, so this is the helper\n        static List<MyVoxelMap> m_voxelMapsSafeIterationHelper = new List<MyVoxelMap>();\n\n        //  For sorting render cells by distance to camera\n        static List<MyRenderCellForSorting> m_sortedRenderCells;\n        public static readonly MyRenderCellByDistanceComparer SortedRenderCellsByDistanceComparer = new MyRenderCellByDistanceComparer();\n\n        //  For sorting voxel data cell by distance to given line\n        static List<MyDataCellForSorting> m_sortedDataCellList;\n        public static readonly MySortDataCellByDistanceComparer SortedDataCellByDistanceToLineComparer = new MySortDataCellByDistanceComparer();\n\n        //Spare some time in un/load\n        public static bool AutoRecalculateVoxelMaps = true;\n\n\n        //  For generating new and unique VoxelMapId\n        static int m_voxelMapIdGenerator = 0;\n\n        static int m_voxelShapesCount = 0;\n\n        public static Action<MyVoxelMapOreDepositCell> OnRemoveOreCell;\n\n        public static void LoadData()\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyVoxelMaps.LoadData\");\n\n            MyMwcLog.WriteLine(\"MyVoxelMaps.LoadData() - START\");\n            MyMwcLog.IncreaseIndent();\n\n            m_voxelMaps.Clear();\n            m_voxelMapsSafeIterationHelper.Clear();\n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyVoxelMaps.LoadData() - END\");\n\n            for (int i = 0; i < MyVoxelConstants.MAX_POTENTIAL_COLDET_TRIANGLES_COUNT; i++)\n            {\n                PotentialColDetTriangles[i] = new MyColDetVoxelTriangle();\n            }\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n\n        //  Here we load only textures, effects, etc, no voxel-maps.\n        public static void LoadContent()\n        {\n\n        }\n\n        public static List<MyRenderCellForSorting> GetSortedRenderCells()\n        {\n            return m_sortedRenderCells;\n        }\n\n        public static void UnloadData()\n        {\n            RemoveAll();\n            m_voxelMapIdGenerator = 0;\n        }\n\n        //  Prepare list of phys objects, so then we can do remove while iterating it\n        static void PrepareVoxelMapsSafeIterationHelper()\n        {\n            m_voxelMapsSafeIterationHelper.Clear();\n            foreach (MyVoxelMap voxelMap in m_voxelMaps)\n            {\n                m_voxelMapsSafeIterationHelper.Add(voxelMap);\n            }\n        }\n\n        //  Allows you to iterate through all voxel maps\n        public static List<MyVoxelMap> GetVoxelMaps()\n        {\n            return m_voxelMaps;\n        }\n\n        public static void RecalcVoxelMaps()\n        {\n            MyMwcLog.WriteLine(\"MyVoxelMaps.RecalcVoxelMaps - START\");\n\n            //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n            //  Add all voxel maps into shadow maps; And calculates average data cell materials\n            //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\n            // THIS IS DONE DURING LOAD\n            //MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyVoxelMaps::CalcAverageDataCellMaterials\");\n\n            //foreach (MyVoxelMap voxelmap in m_voxelMaps)\n            //{\n            //    voxelmap.CalcAverageDataCellMaterials();\n            //}\n\n            //MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n            //  Get voxel map with highest count of render cells, and then use this number to preallocate sorting list\n            ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// \n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"sortedRenderCells\");\n\n            int maxRenderCellsCount = 0;\n            foreach (MyVoxelMap voxelMap in m_voxelMaps)\n            {\n                int count = voxelMap.RenderCellsCount.X * voxelMap.RenderCellsCount.Y * voxelMap.RenderCellsCount.Z;\n                if (count > maxRenderCellsCount) \n                    maxRenderCellsCount = count;                \n            }\n            m_sortedRenderCells = new List<MyRenderCellForSorting>(maxRenderCellsCount);\n\n            m_sortedDataCellList = new List<MyDataCellForSorting>(maxRenderCellsCount);\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n            //  Precalculate all data cells (we get triangles from voxels). In this step we don't get render cells, but that will be fast.\n            //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyVoxelMaps::PrepareRenderCellCache\");\n\n            PrepareRenderCellCache();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            MyMwcLog.WriteLine(\"MyVoxelMaps.RecalcVoxelMaps - END\");\n        }\n\n        public static int GetUniqueVoxelMapId()\n        {\n            return m_voxelMapIdGenerator++;\n        }\n\n        public static int GetTotalDataCellsCount()\n        {\n            int totalCellsCount = 0;\n            foreach (MyVoxelMap voxelMap in m_voxelMaps)\n            {\n                totalCellsCount += voxelMap.DataCellsCount.X * voxelMap.DataCellsCount.Y * voxelMap.DataCellsCount.Z;\n            }\n            return totalCellsCount;\n        }\n\n        public static void ClearVoxelMapMaterials(MyVoxelMap voxelMap)\n        {\n            //TODO\n        }\n\n        public static bool Exist(MyVoxelMap voxelMap)\n        {\n            return m_voxelMaps.Contains(voxelMap);\n        }\n\n        public static void RemoveVoxelMap(MyVoxelMap voxelMap)\n        {\n            if (m_voxelMaps.Remove(voxelMap))\n            {\n                m_voxelShapesCount -= voxelMap.GetVoxelHandShapes().Count;\n                voxelMap.OnVoxelHandShapeCountChange -= OnVoxelHandShapeCountChange;\n                m_voxelMaps.Remove(voxelMap);\n                if (AutoRecalculateVoxelMaps)\n                    RecalcVoxelMaps();\n            }\n        }\n\n        public static void RemoveAll()\n        {\n            PrepareVoxelMapsSafeIterationHelper();\n\n            foreach (MyVoxelMap voxelMap in m_voxelMapsSafeIterationHelper)\n            {\n                // this prevents from recalculating voxel maps after every single voxel map removed\n                voxelMap.OnVoxelHandShapeCountChange -= OnVoxelHandShapeCountChange;\n                m_voxelMaps.Remove(voxelMap);\n                voxelMap.Close();\n            }\n\n            m_voxelShapesCount = 0;\n            RecalcVoxelMaps();\n        }\n\n        private static void OnVoxelHandShapeCountChange(int count)\n        {\n            m_voxelShapesCount += count;\n        }\n\n        //  I am using method for calculating voxel cell hash code instead of struct for storing key.\n        //  I am trying to generate hash code scaled in larger space. Minimal difference between too closest cells is MAX_VOXEL_CELLS_COUNT.\n        //  Resons:\n        //      - Int is faster than struct storing four ints\n        //      - Struct was for some unknown reasons making garbage. Every call to TryGetValue()\n        //        was allocating something. Probably because of boxing when calculating GetHashCode(0\n        //        or doing Equals(), but I am not sure.\n        public static Int64 GetCellHashCode(int voxelMapId, ref MyMwcVector3Int cellCoord, MyLodTypeEnum cellHashType)\n        {\n            return\n                voxelMapId * MAX_VOXEL_CELLS_COUNT * MAX_VOXEL_CELLS_COUNT * MAX_VOXEL_CELLS_COUNT * MAX_VOXEL_CELLS_COUNT * MAX_VOXEL_CELLS_COUNT +\n                cellCoord.X * MAX_VOXEL_CELLS_COUNT * MAX_VOXEL_CELLS_COUNT * MAX_VOXEL_CELLS_COUNT * MAX_VOXEL_CELLS_COUNT +\n                cellCoord.Y * MAX_VOXEL_CELLS_COUNT * MAX_VOXEL_CELLS_COUNT * MAX_VOXEL_CELLS_COUNT +\n                cellCoord.Z * MAX_VOXEL_CELLS_COUNT * MAX_VOXEL_CELLS_COUNT +\n                (int)cellHashType * MAX_VOXEL_CELLS_COUNT;\n        }\n\n        //  Scans all voxel maps along the line. Return true if any non-empty voxel found.\n        //  Computes absulute space coordinate of collision point and returns reference to voxel map.\n        public static bool ScanLine3D(Vector3 lineStart, Vector3 lineEnd, out Vector3? intersection, out MyVoxelMap outVoxelMap)\n        {\n            foreach (MyVoxelMap voxelMap in m_voxelMaps)\n            {\n                if (voxelMap.ScanLine3D(lineStart, lineEnd, out intersection) == true)\n                {\n                    outVoxelMap = voxelMap;\n                    return true;\n                }\n            }\n\n            //  We didn't find any non-empty voxel along the line\n            intersection = null;\n            outVoxelMap = null;\n            return false;\n        }\n\n        public static MyIntersectionResultLineTriangleEx? GetIntersectionWithLine(ref MyLine line)\n        {\n            MyIntersectionResultLineTriangleEx? result = null;\n\n            //  Check all voxel maps\n            for (int value = 0; value < m_voxelMaps.Count; value++)\n            {\n                MyIntersectionResultLineTriangleEx? testResultEx;\n                m_voxelMaps[value].GetIntersectionWithLine(ref line, out testResultEx);\n\n                //  If intersection occured and distance to intersection is closer to origin than any previous intersection)\n                result = MyIntersectionResultLineTriangleEx.GetCloserIntersection(ref result, ref testResultEx);\n            }\n\n            return result;\n        }\n\n        \n          \n        //  \n        // \n        public static MyVoxelMap GetOverlappingWithSphere(ref BoundingSphere sphere)\n        {\n            for (int i = 0; i < m_voxelMaps.Count; i++)\n            {\n                MyVoxelMap voxelMap = m_voxelMaps[i];\n                if (voxelMap.DoOverlapSphereTest(sphere.Radius, sphere.Center))\n                {\n                    return voxelMap;\n                }\n            }\n\n            //  No intersection found\n            return null;\n        }\n\n        //  Return reference to a voxel map that intersects with the specified sphere. If not intersection, null is returned.\n        //  We don't look for closest intersection - so we stop on first intersection found.\n        //  Params:\n        //      sphere - sphere we want to test for intersection\n        public static MyVoxelMap GetIntersectionWithSphere(ref BoundingSphere sphere, MyVoxelMap selected)\n        {\n            for (int i = 0; i < m_voxelMaps.Count; i++) if (selected == null || m_voxelMaps[i] == selected)\n            {\n                MyVoxelMap voxelMap = m_voxelMaps[i];\n                if (voxelMap.IsSphereIntersectingBoundingBoxOfThisVoxelMap(ref sphere))\n                {\n                    return voxelMap;\n                }\n            }\n\n            //  No intersection found\n            return null;\n        }\n\n        //  Return reference to a voxel map that intersects with the specified box. If not intersection, null is returned.\n        //  We don't look for closest intersection - so we stop on first intersection found.\n        //  Params:\n        //      localBoundingBox - local bounding box, we transform it to VoxelMap orientation\n        //      boundingBoxWorldPosition - position of bounding box in world coordinates\n        public static MyVoxelMap GetIntersectionWithBox(ref BoundingBox localBoundingBox, ref Vector3 boundingBoxWorldPosition, MyVoxelMap selected)\n        {\n            for (int i = 0; i < m_voxelMaps.Count; i++) if (selected == null || m_voxelMaps[i] == selected)\n            {\n                MyVoxelMap voxelMap = m_voxelMaps[i];\n                Matrix world = Matrix.CreateWorld(boundingBoxWorldPosition, voxelMap.WorldMatrix.Forward, voxelMap.WorldMatrix.Up);\n                BoundingBox worldBoundingBox = localBoundingBox.Transform(world);\n                if (voxelMap.IsBoxIntersectingBoundingBoxOfThisVoxelMap(ref worldBoundingBox))\n                {\n                    return voxelMap;\n                }\n            }\n\n            //  No intersection found\n            return null;\n        }\n\n        //  Method fills preallocated array with voxel triangles that potentialy intersects bounding box. Later, JLX will do intersection testing on these triangles.\n        //  Input:\n        //      boundingBox - bounding box that can intersect with voxel maps\n        //  Output:\n        //      potentialTriangles - potential voxel triangles\n        //      numTriangles - count of potential voxel triangles\n        public static void GetPotentialTrianglesForColDet(out int numTriangles, ref BoundingBox boundingBox)\n        {\n            numTriangles = 0;\n\n            //  Check all voxel maps\n            for (int i = 0; i < m_voxelMaps.Count; i++)\n            {\n                m_voxelMaps[i].GetPotentialTrianglesForColDet(ref numTriangles, ref boundingBox);\n            }\n        }        \n\n        //  Return reference to voxel map that intersects the box. If not voxel map found, null is returned.\n        public static MyVoxelMap GetVoxelMapWhoseBoundingBoxIntersectsBox(ref BoundingBox boundingBox)\n        {\n            for (int i = 0; i < m_voxelMaps.Count; i++)\n            {\n                MyVoxelMap voxelMap = m_voxelMaps[i];\n                if (voxelMap.IsBoxIntersectingBoundingBoxOfThisVoxelMap(ref boundingBox) == true) return voxelMap;\n            }\n\n            //  If we get here, no intersection was found\n            return null;\n        }\n\n        //  Return reference to voxel map that intersects the box. If not voxel map found, null is returned.\n        public static MyVoxelMap GetVoxelMapWhoseBoundingBoxIntersectsBox(ref BoundingBox boundingBox, MyVoxelMap ignoreVoxelMap)\n        {\n            for (int i = 0; i < m_voxelMaps.Count; i++)\n            {\n                MyVoxelMap voxelMap = m_voxelMaps[i];\n                if (voxelMap != ignoreVoxelMap)\n                {\n                    if (voxelMap.IsBoxIntersectingBoundingBoxOfThisVoxelMap(ref boundingBox) == true) return voxelMap;\n                }\n            }\n\n            //  If we get here, no intersection was found\n            return null;\n        }\n        \n        public static bool GetListOfVoxelMapsWhoseBoundingSphereIntersectsSphere(ref BoundingSphere boundingSphere, IList<MyVoxelMap> listOfVoxelMaps, MyEntity ignorePhysObject)\n        {\n            listOfVoxelMaps.Clear();\n            /*\n            //  Get collision elements near the line's bounding box (use sweep-and-prune, so we iterate only close objects)\n            BoundingBox boundingBox = BoundingBoxHelper.InitialBox;\n            BoundingBoxHelper.AddSphere(ref boundingSphere, ref boundingBox);\n\n            var elements = MyEntities.GetElementsInBox(ref boundingBox);\n            foreach (MinerWars.AppCode.Physics.MyRBElement element in elements)\n            {\n                MyEntity physicObject = ((MinerWars.AppCode.Game.Physics.MyPhysicsBody)element.GetRigidBody().m_UserData).Entity;\n\n                MyVoxelMap map = physicObject as MyVoxelMap;\n                if (map != null)\n                    listOfVoxelMaps.Add(map);\n            }\n            elements.Clear();\n            */\n            //MyEntities.GetIntersectionWithSphere(ref boundingSphere, ignorePhysObject, null, false, false, ref list);\n\n            \n            for (int i = 0; i < m_voxelMaps.Count; i++)\n            {\n                MyVoxelMap voxelMapForCollisionTest = m_voxelMaps[i];\n                if (voxelMapForCollisionTest != ignorePhysObject)\n                {\n                    if (voxelMapForCollisionTest.IsSphereIntersectingBoundingSphereOfThisVoxelMap(ref boundingSphere) == true)\n                        listOfVoxelMaps.Add(voxelMapForCollisionTest);\n                }\n            } \n            if (listOfVoxelMaps.Count > 0)\n                return true;\n            //  If we get here, no intersection was found\n            return false;\n        }\n\n        public static bool IsCollidingWithVoxelMap(MyMwcVoxelFilesEnum voxelFileEnum, Vector3 voxelPosition)\n        {\n            MyVoxelFile voxelFile = MyVoxelFiles.Get(voxelFileEnum);\n            Vector3 sizeInMeters = MyVoxelMap.GetVoxelSizeInMetres(ref voxelFile.SizeInVoxels);\n\n            BoundingBox newBoundingBox = MyUtils.GetNewBoundingBox(voxelPosition, sizeInMeters);\n            MyVoxelMap intersectingVoxelMap = MyVoxelMaps.GetVoxelMapWhoseBoundingBoxIntersectsBox(ref newBoundingBox, null);\n\n            if (intersectingVoxelMap != null)\n            {\n                return true;\n            }\n            return false;\n        }\n\n        //  Calculates reverb value for our sound engine. For interval, see MySounds.ReverbControl.\n        //  This value is calculated by finding how many mixed or full voxel cells are around the camera (it is similar to occlusion lighting). If no, reverb is 0. If many, reverb is 100.\n        public static float GetReverb(Vector3 cameraPosition)\n        {\n            for (int i = 0; i < m_voxelMaps.Count; i++)\n            {\n                float? reverb = m_voxelMaps[i].GetReverb(cameraPosition);\n                if (reverb.HasValue == true)\n                {\n                    return reverb.Value;\n                }\n            }\n\n            //  If we get here, camera isn't in any voxel map, so reverb must be zero\n            return 0;\n        }\n\n        //  Create vertex buffers and index buffers and fill them with voxel render cells\n        //  IMPORTANT: Don't call from background thread or from LoadContent. Only from Draw call\n        public static void PrepareRenderCellCache()\n        {\n            MyMwcLog.WriteLine(\"MyVoxelMaps.PrepareRenderCellCache - START\");\n            MyMwcLog.IncreaseIndent();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"BoundingSphere\");\n\n            BoundingSphere sphere = new BoundingSphere(MyCamera.BoundingSphere.Center, MyCamera.BoundingSphere.Radius * 1.2f);\n          \n            MyPerformanceTimer.PrepareRenderCellCache.Start();\n\n            for (int voxelMapIterator = 0; voxelMapIterator < m_voxelMaps.Count; voxelMapIterator++)\n            {\n                //  Because this LoadInDraw will stop normal update calls, we might not be able to send keep alive\n                //  messages to server for some time. This will help it - it will make networking be up-to-date.\n                //MyClientServer.Update();\n                \n                MyVoxelMap voxelMap = m_voxelMaps[voxelMapIterator];\n\n                //  Only voxel maps near bounding sphere\n                if (voxelMap.IsSphereIntersectingBoundingSphereOfThisVoxelMap(ref sphere))\n                {\n                    voxelMap.PrepareRenderCellCache();\n                }\n            }\n\n            MyPerformanceTimer.PrepareRenderCellCache.End();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyVoxelMaps.PrepareRenderCellCache - END\");\n        }\n\n        //  Save every voxel map into file. Destination folder is same as for log files.\n        public static void SaveVoxelContents()\n        {\n            foreach (MyVoxelMap voxelMap in m_voxelMaps)\n            {\n                string voxelName = \"VoxelMap_\" + voxelMap.VoxelMapId + \"_\" + MyConfig.Username + \".vox\";\n                string voxelFilePath = Path.Combine(MyFileSystemUtils.GetApplicationUserDataFolder(), voxelName);\n                voxelMap.SaveVoxelContents(voxelFilePath, true);\n                if (MyFakes.MWBUILDER)\n                {   //Use name as storage for filepath\n                    voxelMap.SetName(voxelName);\n                }\n            }\n        }\n\n        //  Outputs all voxel maps in the scene to a file of the OBJ file format\n        //  All voxel maps will be output as a single mesh\n        public static void SaveTriangles()\n        {\n            if (m_voxelMaps.Count <= 0) return;\n\n            String fileName = Path.Combine(MyFileSystemUtils.GetApplicationUserDataFolder(), \"VoxelMaps_\" + MyValueFormatter.GetFormatedDateTimeForFilename(DateTime.Now) + \".obj\");\n            using (FileStream fs = File.Create(fileName))\n            {\n                using (StreamWriter sw = new StreamWriter(fs))\n                {\n                    foreach (MyVoxelMap voxelMap in m_voxelMaps)\n                    {\n                        voxelMap.SaveVoxelVertices(sw);\n                    }\n\n                    foreach (MyVoxelMap voxelMap in m_voxelMaps)\n                    {\n                        voxelMap.SaveVoxelNormals(sw);\n                    }\n\n                    int vertexOffset = 0;\n                    foreach (MyVoxelMap voxelMap in m_voxelMaps)\n                    {\n                        voxelMap.SaveVoxelFaces(sw, ref vertexOffset);\n                    }\n                }\n            }\n        }\n\n        //  Converts voxel's content from byte to float. Returned value is just byte converted to float on interval <0..1>\n        public static float GetVoxelContentAsFloat(byte content)\n        {\n            return (float)content / MyVoxelConstants.VOXEL_CONTENT_FULL_FLOAT;\n        }\n\n        public static MyMwcVector3Short GetVoxelCenterCoordinateFromMeters(Vector3 voxelPosition)\n        {\n            return new MyMwcVector3Short(\n                (short)Math.Round((voxelPosition.X - MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF) / MyVoxelConstants.VOXEL_SIZE_IN_METRES),\n                (short)Math.Round((voxelPosition.Y - MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF) / MyVoxelConstants.VOXEL_SIZE_IN_METRES),\n                (short)Math.Round((voxelPosition.Z - MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF) / MyVoxelConstants.VOXEL_SIZE_IN_METRES));\n        }\n\n\n        public static void Add(MyVoxelMap voxelMap)\n        {\n            if (!Exist(voxelMap))\n            {\n                voxelMap.OnVoxelHandShapeCountChange += OnVoxelHandShapeCountChange;\n                m_voxelShapesCount += voxelMap.GetVoxelHandShapes().Count;\n                m_voxelMaps.Add(voxelMap);\n                //if (MyFakes.DETECT_ORE_DEPOSITS_IN_VOXEL_MAPS)\n                //{\n                //    // seek all ore deposits of voxel map\n\n                //    MyMwcLog.WriteLine(\"Seek ore deposits - START (\" + voxelMap.SizeInMetresHalf.X + \",\" + voxelMap.SizeInMetres.Y + \",\" + voxelMap.SizeInMetres.Z + \")\");\n                //    DateTime startTime = DateTime.Now;                    \n                //    voxelMap.SeekOreDeposits(new MyMwcVector3Int(0, 0, 0), voxelMap.SizeMinusOne);\n                //    DateTime endTime = DateTime.Now;\n                //    MyMwcLog.WriteLine(\"Seek ore deposits - END (\" + endTime.Subtract(startTime).TotalMilliseconds + \")\");\n                //}\n                //Need to be here because of materials, when added voxel in editor\n                if (AutoRecalculateVoxelMaps)\n                    RecalcVoxelMaps();\n            }\n        }\n\n        public static void CutOutSphere(BoundingSphere sphere)\n        {\n            foreach (MyVoxelMap voxelMap in m_voxelMaps)\n            {\n                MyVoxelGenerator.CutOutSphere(voxelMap, sphere);\n            }\n        }\n\n        public static MyVoxelMap GetRandomVoxelMap()\n        {\n            int randomVoxelIndex = MyMwcUtils.GetRandomInt(0, m_voxelMaps.Count - 1);\n            return m_voxelMaps[randomVoxelIndex];\n        }\n\n        public static MyVoxelMap GetLargestVoxelMap()\n        {\n            MyVoxelMap largestVoxelMap = null;\n            Vector3 voxelSizeInMetres = Vector3.Zero;\n            foreach (MyVoxelMap voxelMap in m_voxelMaps)\n            {\n                if (voxelMap.SizeInMetres.Length() > voxelSizeInMetres.Length())\n                {\n                    voxelSizeInMetres = voxelMap.SizeInMetres;\n                    largestVoxelMap = voxelMap;\n                }\n            }\n            return largestVoxelMap;\n        }\n\n        public static int GetVoxelMapsCount()\n        {\n            return m_voxelMaps.Count;\n        }\n\n        public static int GetVoxelShapesCount()\n        {\n            //int count = 0;\n            //foreach (MyVoxelMap voxelMap in m_voxelMaps)\n            //{\n            //    count += voxelMap.GetVoxelHandShapes().Count;\n            //}\n            //return count;\n            return m_voxelShapesCount;\n        }\n\n        public static int GetRemainingVoxelHandShapes()\n        {\n            return MyVoxelConstants.MAX_VOXEL_HAND_SHAPES_COUNT - GetVoxelShapesCount();\n        }\n\n        public static List<MyDataCellForSorting> GetSortedDataCellList()\n        {\n            return m_sortedDataCellList;\n        }\n\n        public static void RemoveVoxelMapOreDepositCell(MyVoxelMapOreDepositCell cell)\n        {\n            if (OnRemoveOreCell != null)\n                OnRemoveOreCell(cell);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Voxels/MyVoxelMaterial.cs",
    "content": "﻿using MinerWarsMath.Graphics;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils.Utils;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.App;\nusing System.Diagnostics;\nusing MinerWars.AppCode.Game.Managers;\n\nnamespace MinerWars.AppCode.Game.Voxels\n{\n    class MyVoxelMaterialTextures\n    {\n        public MyTexture2D TextureDiffuseForAxisXZ;\n        public MyTexture2D TextureDiffuseForAxisY;\n        public MyTexture2D TextureNormalMapForAxisXZ;\n        public MyTexture2D TextureNormalMapForAxisY;\n    }\n\n    class MyVoxelMaterial\n    {\n        public bool UseTwoTextures { get; private set; }\n        public float SpecularIntensity { get; private set; }\n        public float SpecularPower { get; private set; }\n        public bool IsIndestructible { get; private set; }\n        public bool UseFlag;\n\n        MyMwcVoxelMaterialsEnum m_materialEnum;\n        MyVoxelMaterialTextures m_textures;\n        string m_assetName;\n        bool m_hasBuilderVersion;\n        \n        //  Parameter 'useTwoTexturesPerMaterial' tells us if we use two textures per material. One texture for axis XZ and second for axis Y.\n        //  Use it for rock/stone materials. Don't use it for gold/silver, because there you don't need to make difference between side and bottom materials.\n        //  Using this we save texture memory, but pixel shader still used differenced textures (two samplers looking to same texture)\n        public MyVoxelMaterial(MyMwcVoxelMaterialsEnum materialEnum, string assetName, bool isIndestructible, bool useTwoTextures, float specularIntensity, float specularPower, bool hasBuilderVersion)\n        {\n            //  SpecularPower must be > 0, because pow() makes NaN results if called with zero\n            MyCommonDebugUtils.AssertRelease(specularPower > 0);\n\n            m_assetName = assetName;\n            IsIndestructible = isIndestructible;\n            SpecularIntensity = specularIntensity;\n            SpecularPower = specularPower;\n            UseTwoTextures = useTwoTextures;\n            m_materialEnum = materialEnum;\n            m_hasBuilderVersion = hasBuilderVersion && MyFakes.MWBUILDER;\n        }\n\n        //\n        //force to reload all textures by dropping the old ones\n        public void LoadContent()\n        {\n            //m_textures = null;\n        }\n\n        public void UnloadContent()\n        {\n            m_textures = null;\n        }\n\n        //  Get access to material textures with lazy loading mechanizm\n        public MyVoxelMaterialTextures GetTextures()\n        {\n            if (m_textures == null)\n            {\n                m_textures = new MyVoxelMaterialTextures();\n\n                //  Diffuse XZ\n                m_textures.TextureDiffuseForAxisXZ = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\Voxels\\\\\" + m_assetName + \"_ForAxisXZ_de\" + (m_hasBuilderVersion ? \"_mw\" : \"\"), null, LoadingMode.Lazy);\n\n                if (Render.MyRenderConstants.RenderQualityProfile.UseNormals)\n                {\n                    //  Normal map XZ\n                    m_textures.TextureNormalMapForAxisXZ = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\Voxels\\\\\" + m_assetName + \"_ForAxisXZ_ns\" + (m_hasBuilderVersion ? \"_mw\" : \"\"), null, LoadingMode.Lazy);\n                }\n\n                //  Diffuse Y\n                if (UseTwoTextures)\n                {\n                    m_textures.TextureDiffuseForAxisY = MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\Voxels\\\\\" + m_assetName + \"_ForAxisY_de\" + (m_hasBuilderVersion ? \"_mw\" : \"\"), null, LoadingMode.Lazy);\n                }\n                else\n                {\n                    m_textures.TextureDiffuseForAxisY = m_textures.TextureDiffuseForAxisXZ;\n                }\n\n                if (Render.MyRenderConstants.RenderQualityProfile.UseNormals)\n                {\n                    //  Normal map Y\n                    m_textures.TextureNormalMapForAxisY = UseTwoTextures ? MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\Voxels\\\\\" + m_assetName + \"_ForAxisY_ns\" + (m_hasBuilderVersion ? \"_mw\" : \"\"), null, LoadingMode.LazyBackground) : m_textures.TextureNormalMapForAxisXZ;\n                }\n                    /*\n                CheckTexture(m_textures.TextureDiffuseForAxisXZ);\n                CheckTexture(m_textures.TextureDiffuseForAxisY);\n\n                if (Render.MyRenderConstants.RenderQualityProfile.UseNormals)\n                {\n                    CheckTexture(m_textures.TextureNormalMapForAxisXZ);\n                    CheckTexture(m_textures.TextureNormalMapForAxisY);\n                }     */\n            }\n            UseFlag = true;\n            return m_textures;\n        }\n\n        /// <summary>\n        /// Checks the normal map.\n        /// </summary>\n        /// <param name=\"texture\">The texture.</param>\n        private static void CheckTexture(MyTexture texture)\n        {\n            System.Diagnostics.Debug.Assert(texture != null, \"Voxel texture missing\");\n            MyUtils.AssertTexture((MyTexture2D)texture);\n\n            texture.TextureLoaded -= CheckTexture;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Voxels/MyVoxelMaterialCell.cs",
    "content": "﻿using System.Collections.Generic;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils.Utils;\n\n//  This class represents materials for cell of voxels (e.g. 8x8x8). Mapping is always one-to-one.\n//  But detail 3D array is allocated and used only if all materials in this cell aren't same - so we save a lot of memory in areas where are same materials.\n//  This cell is also used as a source for 'average data cell material'\n//  Size of this cell is same as voxel data cell size.\n//  This class doesn't support deallocating/disposing of 3D array if it's not anymore needed. Reason is that situation should happen or if, then it's very rare.\n//  IndestructibleContents - it's content/scalar value of a voxel that tell us its minimum possible value, we can't set smaller content value. Used for indestructible materials only.\n\nnamespace MinerWars.AppCode.Game.Voxels\n{\n    class MyVoxelMaterialCell\n    {\n        static readonly int voxelsInCell = MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS * MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS * MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS;\n        static readonly int xStep = MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS * MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS;\n        static readonly int yStep = MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS;\n        static readonly int zStep = 1;\n\n        //  If whole cell contains only one material, it will be written in this member and 3D arrays won't be used.\n        bool m_singleMaterialForWholeCell;\n        MyMwcVoxelMaterialsEnum m_singleMaterial;\n        byte m_singleIndestructibleContent;\n\n        //  Used only if individual materials aren't same - are mixed.\n        MyMwcVoxelMaterialsEnum[] m_materials;\n        byte[] m_indestructibleContent;\n\n        MyMwcVoxelMaterialsEnum? m_averageCellMaterial;\n\n        static int[] m_cellMaterialCounts = new int[MyVoxelMaterials.GetMaterialsCount()];\n\n\n        public MyVoxelMaterialCell(MyMwcVoxelMaterialsEnum defaultMaterial, byte defaultIndestructibleContents)\n        {\n            //  By default cell contains only one single material\n            Reset(defaultMaterial, defaultIndestructibleContents);\n        }\n\n        //  Use when you want to change whole cell to one single material\n        public void Reset(MyMwcVoxelMaterialsEnum defaultMaterial, byte defaultIndestructibleContents)\n        {\n            m_singleMaterialForWholeCell = true;\n            m_singleMaterial = defaultMaterial;\n            m_singleIndestructibleContent = defaultIndestructibleContents;\n            m_averageCellMaterial = m_singleMaterial;\n            m_materials = null;\n            m_indestructibleContent = null;\n        }\n\n        //  Change material for specified voxel\n        //  If this material is single material for whole cell, we do nothing. Otherwise we allocate 3D arrays and start using them.\n        public void SetMaterialAndIndestructibleContent(MyMwcVoxelMaterialsEnum material, byte indestructibleContent, ref MyMwcVector3Int voxelCoordInCell)\n        {\n            CheckInitArrays(material);\n\n            if (m_singleMaterialForWholeCell == false)\n            {\n                int xyz = voxelCoordInCell.X * xStep + voxelCoordInCell.Y * yStep + voxelCoordInCell.Z * zStep;\n                m_materials[xyz] = material;\n                m_indestructibleContent[xyz] = indestructibleContent;\n            }\n        }\n\n        //  Return material for specified voxel. If whole cell contain one single material, this one is returned. Otherwise material from 3D array is returned.\n        public MyMwcVoxelMaterialsEnum GetMaterial(ref MyMwcVector3Int voxelCoordInCell)\n        {\n            if (MyFakes.SINGLE_VOXEL_MATERIAL != null)\n                return MyFakes.SINGLE_VOXEL_MATERIAL.Value;\n\n            if (m_singleMaterialForWholeCell == true)\n            {\n                return m_singleMaterial;\n            }\n            else\n            {\n                return m_materials[voxelCoordInCell.X * xStep + voxelCoordInCell.Y * yStep + voxelCoordInCell.Z * zStep];\n            }\n        }\n\n        //  Same as GetMaterial() - but this is for indestructible content\n        public byte GetIndestructibleContent(ref MyMwcVector3Int voxelCoordInCell)\n        {\n            if (m_singleMaterialForWholeCell == true)\n            {\n                return m_singleIndestructibleContent;\n            }\n            else\n            {\n                return m_indestructibleContent[voxelCoordInCell.X * xStep + voxelCoordInCell.Y * yStep + voxelCoordInCell.Z * zStep];\n            }\n        }\n\n        //  Calculate and then remember average material in this cell. It isn't single material, but average.\n        public void CalcAverageCellMaterial()\n        {\n            if (m_singleMaterialForWholeCell == true)\n            {\n                //  For single material it's easy\n                m_averageCellMaterial = m_singleMaterial;\n            }\n            else\n            {\n                //  If materials are stored in 3D array, we need to really calculate average material\n                //  Iterate materials in this data cell\n                for (int xyz = 0; xyz < voxelsInCell; xyz++)\n                {\n                    MyMwcVoxelMaterialsEnum material = m_materials[xyz];\n                    m_cellMaterialCounts[(int)material]++;\n                }\n\n                int maxNum = 0;\n                for (int i = 0; i < m_cellMaterialCounts.Length; i++)\n                {\n                    if (m_cellMaterialCounts[i] > maxNum)\n                    {\n                        maxNum = m_cellMaterialCounts[i];\n                        m_averageCellMaterial = (MyMwcVoxelMaterialsEnum)i;\n                    }\n                    m_cellMaterialCounts[i] = 0; // Erase for next operation\n                }\n            }\n\n            MyCommonDebugUtils.AssertRelease(m_averageCellMaterial.HasValue);\n        }\n\n        public MyMwcVoxelMaterialsEnum GetAverageCellMaterial()\n        {\n            if (MyFakes.SINGLE_VOXEL_MATERIAL != null)\n                return MyFakes.SINGLE_VOXEL_MATERIAL.Value;\n\n            if (m_averageCellMaterial == null)\n                CalcAverageCellMaterial();\n\n            return m_averageCellMaterial.Value;\n        }\n\n        public bool IsSingleMaterialForWholeCell()\n        {\n            return m_singleMaterialForWholeCell;\n        }\n\n        //  Check if we new material differs from one main material and if yes, we need to start using 3D arrays\n        void CheckInitArrays(MyMwcVoxelMaterialsEnum material)\n        {\n            if ((m_singleMaterialForWholeCell == true) && (m_singleMaterial != material))\n            {\n                m_materials = new MyMwcVoxelMaterialsEnum[voxelsInCell];\n                m_indestructibleContent = new byte[voxelsInCell];\n                //  Fill with present cell values\n                for (int xyz = 0; xyz < voxelsInCell; xyz++)\n                {\n                    m_materials[xyz] = m_singleMaterial;\n                    m_indestructibleContent[xyz] = m_singleIndestructibleContent;\n                }\n\n                //  From now, this cell contains more than one material\n                m_singleMaterialForWholeCell = false;\n            }\n        }\n\n        public void OptimizeSize()\n        {\n            if (!m_singleMaterialForWholeCell && TestIsSingleMaterial())\n            {\n                m_singleMaterialForWholeCell = true;\n                m_singleMaterial = m_materials[0];\n                m_singleIndestructibleContent = m_indestructibleContent[0];\n            }\n\n            if (m_singleMaterialForWholeCell)\n            {\n                m_materials = null;\n                m_indestructibleContent = null;\n            }\n        }\n\n        bool TestIsSingleMaterial()\n        {\n            var first = m_materials[0];\n            foreach (var v in m_materials)\n            {\n                if (v != first)\n                {\n                    return false;\n                }\n            }\n            return true;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Voxels/MyVoxelMaterials.cs",
    "content": "﻿using System;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils.Utils;\nusing MinerWars.AppCode.Game.Models;\nusing MinerWars.AppCode.Game.World;\n\nnamespace MinerWars.AppCode.Game.Voxels\n{\n    static class MyVoxelMaterials\n    {\n        static MyVoxelMaterial[] m_materials;\n        static MyMeshMaterial[] m_meshMaterials;\n\n        static int voxelMaterialCount = -1;\n\n        public static void LoadData()\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyVoxelMaterials.LoadData\");\n\n            m_materials = new MyVoxelMaterial[MyMwcUtils.GetMaxValueFromEnum<MyMwcVoxelMaterialsEnum>() + 1];\n            m_meshMaterials = new MyMeshMaterial[MyMwcUtils.GetMaxValueFromEnum<MyMwcVoxelMaterialsEnum>() + 1];\n\n            Add(MyMwcVoxelMaterialsEnum.Indestructible_01, \"Indestructible_01\", true, true, 0.6f, 100, false);\n            Add(MyMwcVoxelMaterialsEnum.Indestructible_02, \"Indestructible_02\", true, true, 0.6f, 100, false);\n            Add(MyMwcVoxelMaterialsEnum.Indestructible_03, \"Indestructible_03\", true, true, 0.6f, 100, false);\n            Add(MyMwcVoxelMaterialsEnum.Indestructible_04, \"Indestructible_04\", true, true, 0.6f, 100, false);\n            Add(MyMwcVoxelMaterialsEnum.Indestructible_05_Craters_01, \"Indestructible_05_Craters_01\", true, true, 0.1f, 100, false);\n            Add(MyMwcVoxelMaterialsEnum.Ice_01, \"Ice_01\", false, true, 1, 20.0f, false);\n            Add(MyMwcVoxelMaterialsEnum.Treasure_01, \"Treasure_01\", false, false, 0.9f, 10.0f, false);\n            Add(MyMwcVoxelMaterialsEnum.Treasure_02, \"Treasure_02\", false, false, 0.7f, 20.0f, false);\n            Add(MyMwcVoxelMaterialsEnum.Iron_01, \"Iron_01\", false, false, 0.7f, 2.0f, false);\n            Add(MyMwcVoxelMaterialsEnum.Iron_02, \"Iron_02\", false, false, 0.6f, 2, false);\n            Add(MyMwcVoxelMaterialsEnum.Stone_01, \"Stone_01\", false, true, 0.6f, 100.0f, true);\n            Add(MyMwcVoxelMaterialsEnum.Stone_02, \"Stone_02\", false, true, 0.6f, 100.0f, true);\n            Add(MyMwcVoxelMaterialsEnum.Stone_03, \"Stone_03\", false, true, 0.6f, 100.0f, true);\n            Add(MyMwcVoxelMaterialsEnum.Stone_04, \"Stone_04\", false, true, 0.6f, 100.0f, true);\n            Add(MyMwcVoxelMaterialsEnum.Stone_05, \"Stone_05\", false, false, 0.6f, 100.0f, true);\n            Add(MyMwcVoxelMaterialsEnum.Stone_06, \"Stone_06\", false, false, 0.6f, 100.0f, true);\n            Add(MyMwcVoxelMaterialsEnum.Stone_07, \"Stone_07\", false, false, 0.6f, 100.0f, true);\n            Add(MyMwcVoxelMaterialsEnum.Stone_08, \"Stone_08\", false, false, 0.6f, 100.0f, true);\n            Add(MyMwcVoxelMaterialsEnum.Stone_10, \"Stone_10\", false, true, 0.6f, 100.0f, true);\n            Add(MyMwcVoxelMaterialsEnum.Stone_13_Wall_01, \"Stone_13_Wall_01\", false, true, 0.6f, 50, true);\n            Add(MyMwcVoxelMaterialsEnum.Uranite_01, \"Uraninite_01\", false, false, 1.2f, 50.0f, false);\n            Add(MyMwcVoxelMaterialsEnum.Helium3_01, \"Helium3_01\", false, false, 0.4f, 20.0f, false);\n            Add(MyMwcVoxelMaterialsEnum.Helium4_01, \"Helium4_01\", false, true, 0.9f, 60.0f, false);\n            Add(MyMwcVoxelMaterialsEnum.Organic_01, \"Organic_01\", false, false, 0, 1, false);\n            Add(MyMwcVoxelMaterialsEnum.Gold_01, \"Gold_01\", false, false, 1.5f, 2.0f, false);\n            Add(MyMwcVoxelMaterialsEnum.Silver_01, \"Silver_01\", false, false, 0.8f, 1.0f, false);\n            Add(MyMwcVoxelMaterialsEnum.Nickel_01, \"Nickel_01\", false, false, 0.6f, 2, false);\n            Add(MyMwcVoxelMaterialsEnum.Magnesium_01, \"Magnesium_01\", false, true, 0.6f, 2, false);\n            Add(MyMwcVoxelMaterialsEnum.Platinum_01, \"Platinum_01\", false, false, 0.8f, 2.0f, false);\n            Add(MyMwcVoxelMaterialsEnum.Silicon_01, \"Silicon_01\", false, true, 2.0f, 50.0f, false);\n            Add(MyMwcVoxelMaterialsEnum.Cobalt_01, \"Cobalt_01\", false, false, 0.6f, 10.0f, false);\n            Add(MyMwcVoxelMaterialsEnum.Snow_01, \"Snow_01\", false, false, 0.1f, 0.1f, false);\n            Add(MyMwcVoxelMaterialsEnum.Lava_01, \"lava_01\", false, true, 0, 1, false);\n            Add(MyMwcVoxelMaterialsEnum.Concrete_01, \"Concrete_01\", false, true, 0.6f, 2, false);\n            Add(MyMwcVoxelMaterialsEnum.Concrete_02, \"Concrete_02\", false, true, 0.6f, 2, false);\n            Add(MyMwcVoxelMaterialsEnum.Sandstone_01, \"Sandstone_01\", false, true, 0.6f, 2, false);\n            Add(MyMwcVoxelMaterialsEnum.Stone_Red, \"Stone_Red\", false, true, 0.6f, 2, false);\n\n            foreach (MyMwcVoxelMaterialsEnum material in Enum.GetValues(typeof(MyMwcVoxelMaterialsEnum)))\n            {\n                MyCommonDebugUtils.AssertRelease(Get(material) != null);\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        public static void UnloadData()\n        {\n            if (m_materials != null)\n            {\n                foreach (var m in m_materials)\n                {\n                    m.UnloadContent();\n\n                    //if (m.GetTextures().TextureDiffuseForAxisXZ != null && m.GetTextures().TextureDiffuseForAxisXZ.IsValid)\n                    //{\n                    //    m.GetTextures().TextureDiffuseForAxisXZ.Unload();\n                    //}\n                    //if (m.GetTextures().TextureDiffuseForAxisY != null && m.GetTextures().TextureDiffuseForAxisY.IsValid)\n                    //{\n                    //    m.GetTextures().TextureDiffuseForAxisY.Unload();\n                    //}\n                    //if (m.GetTextures().TextureNormalMapForAxisXZ != null && m.GetTextures().TextureNormalMapForAxisXZ.IsValid)\n                    //{\n                    //    m.GetTextures().TextureNormalMapForAxisXZ.Unload();\n                    //}\n                    //if (m.GetTextures().TextureNormalMapForAxisY != null && m.GetTextures().TextureNormalMapForAxisY.IsValid)\n                    //{\n                    //    m.GetTextures().TextureNormalMapForAxisY.Unload();\n                    //}\n                }\n                m_materials = null;\n                m_meshMaterials = null;\n            }\n        }\n\n        public static void MarkAllAsUnused()\n        {\n            if (m_materials != null)\n            {\n                foreach (MyVoxelMaterial mat in m_materials)\n                {\n                    mat.UseFlag = false;\n                }\n            }\n        }\n\n        public static void UnloadUnused()\n        {\n            if (m_materials != null)\n            {\n                foreach (MyVoxelMaterial mat in m_materials)\n                {\n                    if (mat.UseFlag == false)\n                    {\n                        mat.UnloadContent();\n                    }\n                }\n            }\n        }\n\n        //  Here we load only textures, effects, etc, no voxel-maps.\n        public static void LoadContent()\n        {\n            MyMwcLog.WriteLine(\"MyVoxelMaterials.LoadContent() - START\");\n            MyMwcLog.IncreaseIndent();\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyVoxelMaterials::LoadContent\");\n\n            if (m_materials != null)\n            {\n                foreach (MyVoxelMaterial mat in m_materials)\n                {\n                    mat.LoadContent();\n                }\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyVoxelMaterials.LoadContent() - END\");\n        }\n\n        public static void UnloadContent()\n        {\n            MyMwcLog.WriteLine(\"MyVoxelMaterials.UnloadContent - START\");\n            MyMwcLog.IncreaseIndent();\n\n            if (m_materials != null)\n            {\n                foreach (MyVoxelMaterial mat in m_materials)\n                {\n                    mat.UnloadContent();\n                }\n            }\n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyVoxelMaterials.UnloadContent - END\");\n        }\n\n        public static void ReloadContent()\n        {\n            UnloadContent();\n            LoadContent();\n        }\n\n        static void Add(MyMwcVoxelMaterialsEnum materialEnum, string assetName, bool isIndestructible, bool useTwoTextures, float specularShininess, float specularPower, bool hasBuilderVersion)\n        {\n            //  Check if not yet assigned\n            MyCommonDebugUtils.AssertRelease(m_materials[(int)materialEnum] == null);\n\n            //MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"new MyVoxelMaterial\");\n\n            //  Create and add into array\n            MyVoxelMaterial voxelMaterial = new MyVoxelMaterial(materialEnum, assetName, isIndestructible, useTwoTextures, specularShininess, specularPower, hasBuilderVersion);\n            m_materials[(int)materialEnum] = voxelMaterial;\n            m_meshMaterials[(int)materialEnum] = new MyMeshMaterial(\"Textures\\\\Voxels\\\\\" + assetName + \"_ForAxisXZ\", assetName, voxelMaterial.GetTextures().TextureDiffuseForAxisXZ, voxelMaterial.GetTextures().TextureNormalMapForAxisXZ);\n        }\n\n\n        public static MyMwcVoxelMaterialsEnum GetAllowedVoxelMaterial(MyMwcVoxelMaterialsEnum materialEnum)\n        {\n            if (MySector.AllowedMaterials == null)\n                return materialEnum;\n\n            bool materialAllowed = MySector.AllowedMaterials.Contains((int)materialEnum);\n            materialAllowed |= MySector.AllowedMaterials.Count == 0;\n\n            if (!materialAllowed)\n            {\n                //System.Diagnostics.Debug.Assert(false, \"Usage of non compatible sector voxel material! (\" + materialEnum.ToString() + \")\"); // Assert temporarily turned off\n                //To avoid asserts\n                //MySector.PrimaryMaterials.Add(materialEnum);\n\n                MyMwcVoxelMaterialsEnum newMaterialEnum = materialEnum;\n\n                if (MySector.AllowedMaterials.Count > 0)\n                    newMaterialEnum = (MyMwcVoxelMaterialsEnum)MySector.AllowedMaterials[0];\n                \n                //MyMwcLog.WriteLine(\"Voxel material \" + materialEnum.ToString() + \" is not compatible with this sector and is replaced by \" + newMaterialEnum.ToString());\n\n                materialEnum = newMaterialEnum;\n            }\n\n            return materialEnum;\n        }\n\n        public static MyVoxelMaterial Get(MyMwcVoxelMaterialsEnum materialEnum)\n        {\n            materialEnum = GetAllowedVoxelMaterial(materialEnum);\n\n            return m_materials[(int)materialEnum];\n        }\n\n        public static MyMeshMaterial GetMaterialForMesh(MyMwcVoxelMaterialsEnum materialEnum)\n        {\n            return m_meshMaterials[(int)materialEnum];\n        }\n\n        public static int GetMaterialsCount()\n        {\n            if (voxelMaterialCount == -1)\n            {\n                voxelMaterialCount = MyMwcUtils.GetMaxValueFromEnum<MyMwcVoxelMaterialsEnum>() + 1;\n            }\n            return voxelMaterialCount;\n        }\n\n        public static bool IsIndestructible(MyMwcVoxelMaterialsEnum material)\n        {\n            return m_materials[(int)material].IsIndestructible;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Voxels/MyVoxelPrecalc.cs",
    "content": "﻿using System.Collections.Generic;\n//using System.Threading;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Utils;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing System.Collections.Concurrent;\nusing ParallelTasks;\n\n//  This class server for precalculating voxels to triangles. Primary voxels from data cells, but also is used for converting whole data cells when LOD is calculated.\n//  This class is static and uses all available cores to work in parallel, thus if user has quad core, work is calculated in four parallel threads.\n//  This class works in single-core mode (if machine has only 1 core) or in multi-core mode (using worked threads)\n//  In multi-core mode this class creates and starts parallel threads (e.g. four), sets them into waiting. Then when work is needed to do, queue Tasks is filled\n//  with task and we send signal to all threads so they wake up, do they work (go over queue, do each job). When they are done, every thread signal he is done and goes to waiting again.\n//  Method PrecalcQueue() finishes only after all threads are finished and queue is completely done (empty).\n//\n//  IMPORTANT: This class assumess all other classes are used in read-only mode (e.g. traversing voxels).\n//  \n//  Thread - represents classical C# thread\n//  Tasks - piece of work to do, e.g. calculate one data cell\n\n\nnamespace MinerWars.AppCode.Game.Voxels\n{\n    struct MyVoxelPrecalcTaskItem\n    {\n        public MyLodTypeEnum Type;\n        public MyVoxelMap VoxelMap;\n        public MyVoxelCacheCellData Cache;\n        public MyMwcVector3Int VoxelStart;\n\n        public MyVoxelPrecalcTaskItem(MyLodTypeEnum type, MyVoxelMap voxelMap, MyVoxelCacheCellData cache, MyMwcVector3Int voxelStart)\n        {\n            Type = type;\n            VoxelMap = voxelMap;\n            Cache = cache;\n            VoxelStart = voxelStart;\n        }\n    }\n\n    static class MyVoxelPrecalc\n    {\n        //  Don't use threads if no more than one core is available, instead use this one task. Or if you don't need to precalculate in parallel.\n        static MyVoxelPrecalcTask m_singleCoreTask;\n\n        //  Use threads if more than one core is available\n        //  Good tutorials on thread synchronization events: \n        //      http://www.codeproject.com/KB/threads/AutoManualResetEvents.aspx\n        //      http://www.albahari.com/threading/part2.aspx#_ProducerConsumerQWaitHandle\n        //static Thread[] m_threads;\n        //static AutoResetEvent[] m_workToDo;          //  Signals to worker threads that there is work to do\n        //static AutoResetEvent[] m_workIsDone;        //  Signals to main thread that all tasks are calculated\n        //public static object Locker;\n\n        static Task[] m_tasks;\n        static MyVoxelPrecalcWork[] m_precalWorks;\n\n        //  This is needed in single-core mode and in multi-core too\n        public static ConcurrentQueue<MyVoxelPrecalcTaskItem> Tasks;\n\n        public static void LoadData()\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyVoxelPrecalc.LoadData\");\n\n            MyMwcLog.WriteLine(\"MyVoxelPrecalc.LoadData() - START\");\n            MyMwcLog.IncreaseIndent();\n\n            //  For calculating on main thread\n            m_singleCoreTask = new MyVoxelPrecalcTask();\n\n            Tasks = new ConcurrentQueue<MyVoxelPrecalcTaskItem>();\n            if (MyMinerGame.NumberOfCores > 1)\n            {\n                m_tasks = new Task[MyMinerGame.NumberOfCores];\n                m_precalWorks = new MyVoxelPrecalcWork[MyMinerGame.NumberOfCores];\n\n                for (int i = 0; i < MyMinerGame.NumberOfCores; i++)\n                    m_precalWorks[i] = new MyVoxelPrecalcWork();\n            }\n       \n            /*\n            //  For calculating in parallel threads\n            if (MyMinerGame.NumberOfCores > MyConstants.ONE_CORE)\n            {\n                Locker = new object();\n                m_threads = new Thread[MyMinerGame.NumberOfCores];\n                m_workToDo = new AutoResetEvent[MyMinerGame.NumberOfCores];\n                m_workIsDone = new AutoResetEvent[MyMinerGame.NumberOfCores];\n                for (int i = 0; i < MyMinerGame.NumberOfCores; i++)\n                {\n                    //  Signal events for each thread\n                    m_workToDo[i] = new AutoResetEvent(false);\n                    m_workIsDone[i] = new AutoResetEvent(false);\n\n                    //  Thread\n                    MyVoxelPrecalcThread precalcThread = new MyVoxelPrecalcThread(m_workToDo[i], m_workIsDone[i]);\n                    m_threads[i] = new Thread(new ThreadStart(precalcThread.Run));\n                    m_threads[i].Name = \"MyVoxelPrecalcTask \" + i.ToString();\n                    m_threads[i].IsBackground = true;\n                    m_threads[i].Start();\n                }\n            }     */\n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyVoxelPrecalc.LoadData() - END\");\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        public static void UnloadData()\n        {             /*\n            //  If there are running threads, we need to abort them, otherwise application will still live\n            if (MyMinerGame.NumberOfCores > MyConstants.ONE_CORE)\n            {\n                if (m_threads != null)\n                {\n                    for (int i = 0; i < m_threads.Length; i++)\n                    {\n                        if (m_threads[i] != null)\n                        {\n                            //  Abort won't stop the thread immediately (it just throws exception inside it), so we use Join to wait until that thread is really finished                \n                            m_threads[i].Abort();\n                            m_threads[i].Join();\n                        }\n                    }\n                }\n            }       */\n            m_precalWorks = null;\n            m_singleCoreTask = null;\n        }\n\n        public static void AddToQueue(\n            MyLodTypeEnum type,\n            MyVoxelMap voxelMap,\n            MyVoxelCacheCellData cache,\n            int voxelStartX, int voxelStartY, int voxelStartZ)\n        {\n            MyVoxelPrecalcTaskItem a = new MyVoxelPrecalcTaskItem();\n            a.Type = type;\n            a.VoxelMap = voxelMap;\n            a.Cache = cache;\n            a.VoxelStart = new MyMwcVector3Int(voxelStartX, voxelStartY, voxelStartZ);\n\n            //  IMPORTANT: Don't need to lock Tasks, because at this point no other thread should access it.\n            Tasks.Enqueue(a);\n        }\n\n        //  Precalculate voxel cell into cache (makes triangles and vertex buffer from voxels)\n        //  Doesn't use threads, just main thread. Use when you don't want to precalculate many cells in parallel.\n        public static void PrecalcImmediatelly(MyVoxelPrecalcTaskItem task)\n        {\n            m_singleCoreTask.Precalc(task);\n        }\n\n        //  Precalculate voxel cell into cache (makes triangles and vertex buffer from voxels)\n        //  Uses threads (if more cores), calculates all cells in the queue.\n        public static void PrecalcQueue()\n        {\n            //  Don't bother with this if queque isn't empty. \n            //  This is especially important in multi-core mode, because we don't want to uselessly signal worker threads!\n            //  IMPORTANT: Don't need to lock Tasks, because at this point no other thread should access it.\n            if (MyVoxelPrecalc.Tasks.Count <= 0) return;\n\n            if (MyMinerGame.NumberOfCores == 1)\n            {\n                //  Precalculate all cells in the queue (do it in main thread)\n                while (MyVoxelPrecalc.Tasks.Count > 0)\n                {\n                    MyVoxelPrecalcTaskItem newTask;\n                    MyVoxelPrecalc.Tasks.TryDequeue(out newTask);\n                    m_singleCoreTask.Precalc(newTask);\n                }\n            }\n            else\n            {\n                for (int i = 0; i < MyMinerGame.NumberOfCores; i++)\n                {\n                    m_tasks[i] = Parallel.Start(m_precalWorks[i]);\n                }\n\n                for (int i = 0; i < MyMinerGame.NumberOfCores; i++)\n                {\n                    m_tasks[i].Wait();\n                }\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Voxels/MyVoxelPrecalcConstants.cs",
    "content": "﻿using MinerWars.CommonLIB.AppCode.Utils;\n\nnamespace MinerWars.AppCode.Game.Voxels\n{\n    static class MyVoxelPrecalcConstants\n    {\n        public const int CELL_EDGE_INDEX_X = 0;\n        public const int CELL_EDGE_INDEX_Y = 1;\n        public const int CELL_EDGE_INDEX_Z = 2;\n        public const int CELL_EDGE_COUNT = 3;\n\n        //  This is helper array used to convert cube edge m_notCompressedIndex to cell edge m_notCompressedIndex.\n        //  Fourth number is used to say if edge is on X, Y or Z axis, therefore its range is 0..2 (0 = X, 1 = Y, 2 = Z).\n        public static readonly MyMwcVector4Int[] EdgeConversion = new MyMwcVector4Int[]{\n            new MyMwcVector4Int(0, 0, 0, CELL_EDGE_INDEX_X),           //  Cube edge 0\n            new MyMwcVector4Int(1, 0, 0, CELL_EDGE_INDEX_Z),           //  Cube edge 1\n            new MyMwcVector4Int(0, 0, 1, CELL_EDGE_INDEX_X),           //  Cube edge 2\n            new MyMwcVector4Int(0, 0, 0, CELL_EDGE_INDEX_Z),           //  Cube edge 3            \n            new MyMwcVector4Int(0, 1, 0, CELL_EDGE_INDEX_X),           //  Cube edge 4\n            new MyMwcVector4Int(1, 1, 0, CELL_EDGE_INDEX_Z),           //  Cube edge 5\n            new MyMwcVector4Int(0, 1, 1, CELL_EDGE_INDEX_X),           //  Cube edge 6\n            new MyMwcVector4Int(0, 1, 0, CELL_EDGE_INDEX_Z),           //  Cube edge 7\n            new MyMwcVector4Int(0, 0, 0, CELL_EDGE_INDEX_Y),           //  Cube edge 8\n            new MyMwcVector4Int(1, 0, 0, CELL_EDGE_INDEX_Y),           //  Cube edge 9\n            new MyMwcVector4Int(1, 0, 1, CELL_EDGE_INDEX_Y),           //  Cube edge 10\n            new MyMwcVector4Int(0, 0, 1, CELL_EDGE_INDEX_Y)            //  Cube edge 11\n        };\n\n        public static readonly int[] EdgeTable = new int[]{\n            0, 265, 515, 778, 1030, 1295, 1541, 1804, \n\t        2060, 2309, 2575, 2822, 3082, 3331, 3593, 3840, \n\t        400, 153, 915, 666, 1430, 1183, 1941, 1692, \n\t        2460, 2197, 2975, 2710, 3482, 3219, 3993, 3728, \n\t        560, 825, 51, 314, 1590, 1855, 1077, 1340, \n\t        2620, 2869, 2111, 2358, 3642, 3891, 3129, 3376, \n\t        928, 681, 419, 170, 1958, 1711, 1445, 1196, \n\t        2988, 2725, 2479, 2214, 4010, 3747, 3497, 3232, \n\t        1120, 1385, 1635, 1898, 102, 367, 613, 876, \n\t        3180, 3429, 3695, 3942, 2154, 2403, 2665, 2912, \n\t        1520, 1273, 2035, 1786, 502, 255, 1013, 764, \n\t        3580, 3317, 4095, 3830, 2554, 2291, 3065, 2800, \n\t        1616, 1881, 1107, 1370, 598, 863, 85, 348, \n\t        3676, 3925, 3167, 3414, 2650, 2899, 2137, 2384, \n\t        1984, 1737, 1475, 1226, 966, 719, 453, 204, \n\t        4044, 3781, 3535, 3270, 3018, 2755, 2505, 2240, \n\t        2240, 2505, 2755, 3018, 3270, 3535, 3781, 4044, \n\t        204, 453, 719, 966, 1226, 1475, 1737, 1984, \n\t        2384, 2137, 2899, 2650, 3414, 3167, 3925, 3676, \n\t        348, 85, 863, 598, 1370, 1107, 1881, 1616, \n\t        2800, 3065, 2291, 2554, 3830, 4095, 3317, 3580, \n\t        764, 1013, 255, 502, 1786, 2035, 1273, 1520, \n\t        2912, 2665, 2403, 2154, 3942, 3695, 3429, 3180, \n\t        876, 613, 367, 102, 1898, 1635, 1385, 1120, \n\t        3232, 3497, 3747, 4010, 2214, 2479, 2725, 2988, \n\t        1196, 1445, 1711, 1958, 170, 419, 681, 928, \n\t        3376, 3129, 3891, 3642, 2358, 2111, 2869, 2620, \n\t        1340, 1077, 1855, 1590, 314, 51, 825, 560, \n\t        3728, 3993, 3219, 3482, 2710, 2975, 2197, 2460, \n\t        1692, 1941, 1183, 1430, 666, 915, 153, 400, \n\t        3840, 3593, 3331, 3082, 2822, 2575, 2309, 2060, \n\t        1804, 1541, 1295, 1030, 778, 515, 265, 0   };\n\n        public static readonly int[,] TriangleTable = new int[,]{\n            {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},\t// 0\n        \t{0, 8, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},\t\t// 1\n\t        {0, 1, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},\t\t// 2\n\t        {1, 8, 3, 9, 8, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 3\n\t        {1, 2, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},\t\t// 4\n\t        {0, 8, 3, 1, 2, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},\t\t// 5\n\t        {9, 2, 10, 0, 2, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},\t\t// 6\n\t        {2, 8, 3, 2, 10, 8, 10, 9, 8, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 7\n\t        {3, 11, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},\t\t// 8\n\t        {0, 11, 2, 8, 11, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},\t\t// 9\n\t        {1, 9, 0, 2, 3, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},\t\t// 10\n\t        {1, 11, 2, 1, 9, 11, 9, 8, 11, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 11\n\t        {3, 10, 1, 11, 10, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},\t\t// 12\n\t        {0, 10, 1, 0, 8, 10, 8, 11, 10, -1, -1, -1, -1, -1, -1, -1},\t\t// 13\n\t        {3, 9, 0, 3, 11, 9, 11, 10, 9, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 14\n\t        {9, 8, 10, 10, 8, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},\t\t// 15\n\t        {4, 7, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},\t\t// 16\n\t        {4, 3, 0, 7, 3, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 17\n\t        {0, 1, 9, 8, 4, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 18\n\t        {4, 1, 9, 4, 7, 1, 7, 3, 1, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 19\n\t        {1, 2, 10, 8, 4, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},\t\t// 20\n\t        {3, 4, 7, 3, 0, 4, 1, 2, 10, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 21\n\t        {9, 2, 10, 9, 0, 2, 8, 4, 7, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 22\n\t        {2, 10, 9, 2, 9, 7, 2, 7, 3, 7, 9, 4, -1, -1, -1, -1},\t\t\t\t// 23\n\t        {8, 4, 7, 3, 11, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},\t\t// 24\n\t        {11, 4, 7, 11, 2, 4, 2, 0, 4, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 25\n\t        {9, 0, 1, 8, 4, 7, 2, 3, 11, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 26\n\t        {4, 7, 11, 9, 4, 11, 9, 11, 2, 9, 2, 1, -1, -1, -1, -1},\t\t\t// 27\n\t        {3, 10, 1, 3, 11, 10, 7, 8, 4, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 28\n\t        {1, 11, 10, 1, 4, 11, 1, 0, 4, 7, 11, 4, -1, -1, -1, -1},\t\t\t// 29\n\t        {4, 7, 8, 9, 0, 11, 9, 11, 10, 11, 0, 3, -1, -1, -1, -1},\t\t\t// 30\n\t        {4, 7, 11, 4, 11, 9, 9, 11, 10, -1, -1, -1, -1, -1, -1, -1},\t\t// 31\n\t        {9, 5, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},\t\t// 32\n\t        {9, 5, 4, 0, 8, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 33\n\t        {0, 5, 4, 1, 5, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 34\n\t        {8, 5, 4, 8, 3, 5, 3, 1, 5, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 35\n\t        {1, 2, 10, 9, 5, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},\t\t// 36\n\t        {3, 0, 8, 1, 2, 10, 4, 9, 5, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 37\n\t        {5, 2, 10, 5, 4, 2, 4, 0, 2, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 38\n\t        {2, 10, 5, 3, 2, 5, 3, 5, 4, 3, 4, 8, -1, -1, -1, -1},\t\t\t\t// 39\n\t        {9, 5, 4, 2, 3, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},\t\t// 40\n\t        {0, 11, 2, 0, 8, 11, 4, 9, 5, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 41\n\t        {0, 5, 4, 0, 1, 5, 2, 3, 11, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 42\n\t        {2, 1, 5, 2, 5, 8, 2, 8, 11, 4, 8, 5, -1, -1, -1, -1},\t\t\t\t// 43\n\t        {10, 3, 11, 10, 1, 3, 9, 5, 4, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 44\n\t        {4, 9, 5, 0, 8, 1, 8, 10, 1, 8, 11, 10, -1, -1, -1, -1},\t\t\t// 45\n\t        {5, 4, 0, 5, 0, 11, 5, 11, 10, 11, 0, 3, -1, -1, -1, -1},\t\t\t// 46\n\t        {5, 4, 8, 5, 8, 10, 10, 8, 11, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 47\n\t        {9, 7, 8, 5, 7, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 48\n\t        {9, 3, 0, 9, 5, 3, 5, 7, 3, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 49\n\t        {0, 7, 8, 0, 1, 7, 1, 5, 7, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 50\n\t        {1, 5, 3, 3, 5, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 51\n\t        {9, 7, 8, 9, 5, 7, 10, 1, 2, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 52\n\t        {10, 1, 2, 9, 5, 0, 5, 3, 0, 5, 7, 3, -1, -1, -1, -1},\t\t\t\t// 53\n\t        {8, 0, 2, 8, 2, 5, 8, 5, 7, 10, 5, 2, -1, -1, -1, -1},\t\t\t\t// 54\n\t        {2, 10, 5, 2, 5, 3, 3, 5, 7, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 55\n\t        {7, 9, 5, 7, 8, 9, 3, 11, 2, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 56\n\t        {9, 5, 7, 9, 7, 2, 9, 2, 0, 2, 7, 11, -1, -1, -1, -1},\t\t\t\t// 57\n\t        {2, 3, 11, 0, 1, 8, 1, 7, 8, 1, 5, 7, -1, -1, -1, -1},\t\t\t\t// 58\n\t        {11, 2, 1, 11, 1, 7, 7, 1, 5, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 59\n\t        {9, 5, 8, 8, 5, 7, 10, 1, 3, 10, 3, 11, -1, -1, -1, -1},\t\t\t// 60\n\t        {5, 7, 0, 5, 0, 9, 7, 11, 0, 1, 0, 10, 11, 10, 0, -1},\t\t\t\t// 61\n\t        {11, 10, 0, 11, 0, 3, 10, 5, 0, 8, 0, 7, 5, 7, 0, -1},\t\t\t\t// 62\n\t        {11, 10, 5, 7, 11, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},\t\t// 63\n\t        {10, 6, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},\t\t// 64\n\t        {0, 8, 3, 5, 10, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},\t\t// 65\n\t        {9, 0, 1, 5, 10, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},\t\t// 66\n\t        {1, 8, 3, 1, 9, 8, 5, 10, 6, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 67\n\t        {1, 6, 5, 2, 6, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 68\n\t        {1, 6, 5, 1, 2, 6, 3, 0, 8, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 69\n\t        {9, 6, 5, 9, 0, 6, 0, 2, 6, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 70\n\t        {5, 9, 8, 5, 8, 2, 5, 2, 6, 3, 2, 8, -1, -1, -1, -1},\t\t\t\t// 71\n\t        {2, 3, 11, 10, 6, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},\t\t// 72\n\t        {11, 0, 8, 11, 2, 0, 10, 6, 5, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 73\n\t        {0, 1, 9, 2, 3, 11, 5, 10, 6, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 74\n\t        {5, 10, 6, 1, 9, 2, 9, 11, 2, 9, 8, 11, -1, -1, -1, -1},\t\t\t// 75\n\t        {6, 3, 11, 6, 5, 3, 5, 1, 3, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 76\n\t        {0, 8, 11, 0, 11, 5, 0, 5, 1, 5, 11, 6, -1, -1, -1, -1},\t\t\t// 77\n\t        {3, 11, 6, 0, 3, 6, 0, 6, 5, 0, 5, 9, -1, -1, -1, -1},\t\t\t\t// 78\n\t        {6, 5, 9, 6, 9, 11, 11, 9, 8, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 79\n\t        {5, 10, 6, 4, 7, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},\t\t// 80\n\t        {4, 3, 0, 4, 7, 3, 6, 5, 10, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 81\n\t        {1, 9, 0, 5, 10, 6, 8, 4, 7, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 82\n\t        {10, 6, 5, 1, 9, 7, 1, 7, 3, 7, 9, 4, -1, -1, -1, -1},\t\t\t\t// 83\n\t        {6, 1, 2, 6, 5, 1, 4, 7, 8, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 84\n\t        {1, 2, 5, 5, 2, 6, 3, 0, 4, 3, 4, 7, -1, -1, -1, -1},\t\t\t\t// 85\n\t        {8, 4, 7, 9, 0, 5, 0, 6, 5, 0, 2, 6, -1, -1, -1, -1},\t\t\t\t// 86\n\t        {7, 3, 9, 7, 9, 4, 3, 2, 9, 5, 9, 6, 2, 6, 9, -1},\t\t\t\t\t// 87\n\t        {3, 11, 2, 7, 8, 4, 10, 6, 5, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 88\n\t        {5, 10, 6, 4, 7, 2, 4, 2, 0, 2, 7, 11, -1, -1, -1, -1},\t\t\t\t// 89\n\t        {0, 1, 9, 4, 7, 8, 2, 3, 11, 5, 10, 6, -1, -1, -1, -1},\t\t\t\t// 90\n\t        {9, 2, 1, 9, 11, 2, 9, 4, 11, 7, 11, 4, 5, 10, 6, -1},\t\t\t\t// 91\n\t        {8, 4, 7, 3, 11, 5, 3, 5, 1, 5, 11, 6, -1, -1, -1, -1},\t\t\t\t// 92\n\t        {5, 1, 11, 5, 11, 6, 1, 0, 11, 7, 11, 4, 0, 4, 11, -1},\t\t\t\t// 93\n\t        {0, 5, 9, 0, 6, 5, 0, 3, 6, 11, 6, 3, 8, 4, 7, -1},\t\t\t\t\t// 94\n\t        {6, 5, 9, 6, 9, 11, 4, 7, 9, 7, 11, 9, -1, -1, -1, -1},\t\t\t\t// 95\n\t        {10, 4, 9, 6, 4, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},\t\t// 96\n\t        {4, 10, 6, 4, 9, 10, 0, 8, 3, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 97\n\t        {10, 0, 1, 10, 6, 0, 6, 4, 0, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 98\n\t        {8, 3, 1, 8, 1, 6, 8, 6, 4, 6, 1, 10, -1, -1, -1, -1},\t\t\t\t// 99\n\t        {1, 4, 9, 1, 2, 4, 2, 6, 4, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 100\n\t        {3, 0, 8, 1, 2, 9, 2, 4, 9, 2, 6, 4, -1, -1, -1, -1},\t\t\t\t// 101\n\t        {0, 2, 4, 4, 2, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 102\n\t        {8, 3, 2, 8, 2, 4, 4, 2, 6, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 103\n\t        {10, 4, 9, 10, 6, 4, 11, 2, 3, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 104\n\t        {0, 8, 2, 2, 8, 11, 4, 9, 10, 4, 10, 6, -1, -1, -1, -1},\t\t\t// 105\n\t        {3, 11, 2, 0, 1, 6, 0, 6, 4, 6, 1, 10, -1, -1, -1, -1},\t\t\t\t// 106\n\t        {6, 4, 1, 6, 1, 10, 4, 8, 1, 2, 1, 11, 8, 11, 1, -1},\t\t\t\t// 107\n\t        {9, 6, 4, 9, 3, 6, 9, 1, 3, 11, 6, 3, -1, -1, -1, -1},\t\t\t\t// 108\n\t        {8, 11, 1, 8, 1, 0, 11, 6, 1, 9, 1, 4, 6, 4, 1, -1},\t\t\t\t// 109\n\t        {3, 11, 6, 3, 6, 0, 0, 6, 4, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 110\n\t        {6, 4, 8, 11, 6, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},\t\t// 111\n\t        {7, 10, 6, 7, 8, 10, 8, 9, 10, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 112\n\t        {0, 7, 3, 0, 10, 7, 0, 9, 10, 6, 7, 10, -1, -1, -1, -1},\t\t\t// 113\n\t        {10, 6, 7, 1, 10, 7, 1, 7, 8, 1, 8, 0, -1, -1, -1, -1},\t\t\t\t// 114\n\t        {10, 6, 7, 10, 7, 1, 1, 7, 3, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 115\n\t        {1, 2, 6, 1, 6, 8, 1, 8, 9, 8, 6, 7, -1, -1, -1, -1},\t\t\t\t// 116\n\t        {2, 6, 9, 2, 9, 1, 6, 7, 9, 0, 9, 3, 7, 3, 9, -1},\t\t\t\t\t// 117\n\t        {7, 8, 0, 7, 0, 6, 6, 0, 2, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 118\n\t        {7, 3, 2, 6, 7, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 119\n\t        {2, 3, 11, 10, 6, 8, 10, 8, 9, 8, 6, 7, -1, -1, -1, -1},\t\t\t// 120\n\t        {2, 0, 7, 2, 7, 11, 0, 9, 7, 6, 7, 10, 9, 10, 7, -1},\t\t\t\t// 121\n\t        {1, 8, 0, 1, 7, 8, 1, 10, 7, 6, 7, 10, 2, 3, 11, -1},\t\t\t\t// 122\n\t        {11, 2, 1, 11, 1, 7, 10, 6, 1, 6, 7, 1, -1, -1, -1, -1},\t\t\t// 123\n\t        {8, 9, 6, 8, 6, 7, 9, 1, 6, 11, 6, 3, 1, 3, 6, -1},\t\t\t\t\t// 124\n\t        {0, 9, 1, 11, 6, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},\t\t// 125\n\t        {7, 8, 0, 7, 0, 6, 3, 11, 0, 11, 6, 0, -1, -1, -1, -1},\t\t\t\t// 126\n\t        {7, 11, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},\t\t// 127\n\t        {7, 6, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},\t\t// 128\n\t        {3, 0, 8, 11, 7, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},\t\t// 129\n\t        {0, 1, 9, 11, 7, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},\t\t// 130\n\t        {8, 1, 9, 8, 3, 1, 11, 7, 6, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 131\n\t        {10, 1, 2, 6, 11, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},\t\t// 132\n\t        {1, 2, 10, 3, 0, 8, 6, 11, 7, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 133\n\t        {2, 9, 0, 2, 10, 9, 6, 11, 7, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 134\n\t        {6, 11, 7, 2, 10, 3, 10, 8, 3, 10, 9, 8, -1, -1, -1, -1},\t\t\t// 135\n\t        {7, 2, 3, 6, 2, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 136\n\t        {7, 0, 8, 7, 6, 0, 6, 2, 0, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 137\n\t        {2, 7, 6, 2, 3, 7, 0, 1, 9, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 138\n\t        {1, 6, 2, 1, 8, 6, 1, 9, 8, 8, 7, 6, -1, -1, -1, -1},\t\t\t\t// 139\n\t        {10, 7, 6, 10, 1, 7, 1, 3, 7, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 140\n\t        {10, 7, 6, 1, 7, 10, 1, 8, 7, 1, 0, 8, -1, -1, -1, -1},\t\t\t\t// 141\n\t        {0, 3, 7, 0, 7, 10, 0, 10, 9, 6, 10, 7, -1, -1, -1, -1},\t\t\t// 142\n\t        {7, 6, 10, 7, 10, 8, 8, 10, 9, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 143\n\t        {6, 8, 4, 11, 8, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},\t\t// 144\n\t        {3, 6, 11, 3, 0, 6, 0, 4, 6, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 145\n\t        {8, 6, 11, 8, 4, 6, 9, 0, 1, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 146\n\t        {9, 4, 6, 9, 6, 3, 9, 3, 1, 11, 3, 6, -1, -1, -1, -1},\t\t\t\t// 147\n\t        {6, 8, 4, 6, 11, 8, 2, 10, 1, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 148\n\t        {1, 2, 10, 3, 0, 11, 0, 6, 11, 0, 4, 6, -1, -1, -1, -1},\t\t\t// 149\n\t        {4, 11, 8, 4, 6, 11, 0, 2, 9, 2, 10, 9, -1, -1, -1, -1},\t\t\t// 150\n\t        {10, 9, 3, 10, 3, 2, 9, 4, 3, 11, 3, 6, 4, 6, 3, -1},\t\t\t\t// 151\n\t        {8, 2, 3, 8, 4, 2, 4, 6, 2, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 152\n\t        {0, 4, 2, 4, 6, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 153\n\t        {1, 9, 0, 2, 3, 4, 2, 4, 6, 4, 3, 8, -1, -1, -1, -1},\t\t\t\t// 154\n\t        {1, 9, 4, 1, 4, 2, 2, 4, 6, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 155\n\t        {8, 1, 3, 8, 6, 1, 8, 4, 6, 6, 10, 1, -1, -1, -1, -1},\t\t\t\t// 156\n\t        {10, 1, 0, 10, 0, 6, 6, 0, 4, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 157\n\t        {4, 6, 3, 4, 3, 8, 6, 10, 3, 0, 3, 9, 10, 9, 3, -1},\t\t\t\t// 158\n\t        {10, 9, 4, 6, 10, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},\t\t// 159\n\t        {4, 9, 5, 7, 6, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},\t\t// 160\n\t        {0, 8, 3, 4, 9, 5, 11, 7, 6, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 161\n\t        {5, 0, 1, 5, 4, 0, 7, 6, 11, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 162\n\t        {11, 7, 6, 8, 3, 4, 3, 5, 4, 3, 1, 5, -1, -1, -1, -1},\t\t\t\t// 163\n\t        {9, 5, 4, 10, 1, 2, 7, 6, 11, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 164\n\t        {6, 11, 7, 1, 2, 10, 0, 8, 3, 4, 9, 5, -1, -1, -1, -1},\t\t\t\t// 165\n\t        {7, 6, 11, 5, 4, 10, 4, 2, 10, 4, 0, 2, -1, -1, -1, -1},\t\t\t// 166\n\t        {3, 4, 8, 3, 5, 4, 3, 2, 5, 10, 5, 2, 11, 7, 6, -1},\t\t\t\t// 167\n\t        {7, 2, 3, 7, 6, 2, 5, 4, 9, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 168\n\t        {9, 5, 4, 0, 8, 6, 0, 6, 2, 6, 8, 7, -1, -1, -1, -1},\t\t\t\t// 169\n\t        {3, 6, 2, 3, 7, 6, 1, 5, 0, 5, 4, 0, -1, -1, -1, -1},\t\t\t\t// 170\n\t        {6, 2, 8, 6, 8, 7, 2, 1, 8, 4, 8, 5, 1, 5, 8, -1},\t\t\t\t\t// 171\n\t        {9, 5, 4, 10, 1, 6, 1, 7, 6, 1, 3, 7, -1, -1, -1, -1},\t\t\t\t// 172\n\t        {1, 6, 10, 1, 7, 6, 1, 0, 7, 8, 7, 0, 9, 5, 4, -1},\t\t\t\t\t// 173\n\t        {4, 0, 10, 4, 10, 5, 0, 3, 10, 6, 10, 7, 3, 7, 10, -1},\t\t\t\t// 174\n\t        {7, 6, 10, 7, 10, 8, 5, 4, 10, 4, 8, 10, -1, -1, -1, -1},\t\t\t// 175\n\t        {6, 9, 5, 6, 11, 9, 11, 8, 9, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 176\n\t        {3, 6, 11, 0, 6, 3, 0, 5, 6, 0, 9, 5, -1, -1, -1, -1},\t\t\t\t// 177\n\t        {0, 11, 8, 0, 5, 11, 0, 1, 5, 5, 6, 11, -1, -1, -1, -1},\t\t\t// 178\n\t        {6, 11, 3, 6, 3, 5, 5, 3, 1, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 179\n\t        {1, 2, 10, 9, 5, 11, 9, 11, 8, 11, 5, 6, -1, -1, -1, -1},\t\t\t// 180\n\t        {0, 11, 3, 0, 6, 11, 0, 9, 6, 5, 6, 9, 1, 2, 10, -1},\t\t\t\t// 181\n\t        {11, 8, 5, 11, 5, 6, 8, 0, 5, 10, 5, 2, 0, 2, 5, -1},\t\t\t\t// 182\n\t        {6, 11, 3, 6, 3, 5, 2, 10, 3, 10, 5, 3, -1, -1, -1, -1},\t\t\t// 183\n\t        {5, 8, 9, 5, 2, 8, 5, 6, 2, 3, 8, 2, -1, -1, -1, -1},\t\t\t\t// 184\n\t        {9, 5, 6, 9, 6, 0, 0, 6, 2, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 185\n\t        {1, 5, 8, 1, 8, 0, 5, 6, 8, 3, 8, 2, 6, 2, 8, -1},\t\t\t\t\t// 186\n\t        {1, 5, 6, 2, 1, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 187\n\t        {1, 3, 6, 1, 6, 10, 3, 8, 6, 5, 6, 9, 8, 9, 6, -1},\t\t\t\t\t// 188\n\t        {10, 1, 0, 10, 0, 6, 9, 5, 0, 5, 6, 0, -1, -1, -1, -1},\t\t\t\t// 189\n\t        {0, 3, 8, 5, 6, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},\t\t// 190\n\t        {10, 5, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},\t\t// 191\n\t        {11, 5, 10, 7, 5, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},\t\t// 192\n\t        {11, 5, 10, 11, 7, 5, 8, 3, 0, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 193\n\t        {5, 11, 7, 5, 10, 11, 1, 9, 0, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 194\n\t        {10, 7, 5, 10, 11, 7, 9, 8, 1, 8, 3, 1, -1, -1, -1, -1},\t\t\t// 195\n\t        {11, 1, 2, 11, 7, 1, 7, 5, 1, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 196\n\t        {0, 8, 3, 1, 2, 7, 1, 7, 5, 7, 2, 11, -1, -1, -1, -1},\t\t\t\t// 197\n\t        {9, 7, 5, 9, 2, 7, 9, 0, 2, 2, 11, 7, -1, -1, -1, -1},\t\t\t\t// 198\n\t        {7, 5, 2, 7, 2, 11, 5, 9, 2, 3, 2, 8, 9, 8, 2, -1},\t\t\t\t\t// 199\n\t        {2, 5, 10, 2, 3, 5, 3, 7, 5, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 200\n\t        {8, 2, 0, 8, 5, 2, 8, 7, 5, 10, 2, 5, -1, -1, -1, -1},\t\t\t\t// 201\n\t        {9, 0, 1, 5, 10, 3, 5, 3, 7, 3, 10, 2, -1, -1, -1, -1},\t\t\t\t// 202\n\t        {9, 8, 2, 9, 2, 1, 8, 7, 2, 10, 2, 5, 7, 5, 2, -1},\t\t\t\t\t// 203\n\t        {1, 3, 5, 3, 7, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 204\n\t        {0, 8, 7, 0, 7, 1, 1, 7, 5, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 205\n\t        {9, 0, 3, 9, 3, 5, 5, 3, 7, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 206\n\t        {9, 8, 7, 5, 9, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 207\n\t        {5, 8, 4, 5, 10, 8, 10, 11, 8, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 208\n\t        {5, 0, 4, 5, 11, 0, 5, 10, 11, 11, 3, 0, -1, -1, -1, -1},\t\t\t// 209\n\t        {0, 1, 9, 8, 4, 10, 8, 10, 11, 10, 4, 5, -1, -1, -1, -1},\t\t\t// 210\n\t        {10, 11, 4, 10, 4, 5, 11, 3, 4, 9, 4, 1, 3, 1, 4, -1},\t\t\t\t// 211\n\t        {2, 5, 1, 2, 8, 5, 2, 11, 8, 4, 5, 8, -1, -1, -1, -1},\t\t\t\t// 212\n\t        {0, 4, 11, 0, 11, 3, 4, 5, 11, 2, 11, 1, 5, 1, 11, -1},\t\t\t\t// 213\n\t        {0, 2, 5, 0, 5, 9, 2, 11, 5, 4, 5, 8, 11, 8, 5, -1},\t\t\t\t// 214\n\t        {9, 4, 5, 2, 11, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},\t\t// 215\n\t        {2, 5, 10, 3, 5, 2, 3, 4, 5, 3, 8, 4, -1, -1, -1, -1},\t\t\t\t// 216\n\t        {5, 10, 2, 5, 2, 4, 4, 2, 0, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 217\n\t        {3, 10, 2, 3, 5, 10, 3, 8, 5, 4, 5, 8, 0, 1, 9, -1},\t\t\t\t// 218\n\t        {5, 10, 2, 5, 2, 4, 1, 9, 2, 9, 4, 2, -1, -1, -1, -1},\t\t\t\t// 219\n\t        {8, 4, 5, 8, 5, 3, 3, 5, 1, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 220\n\t        {0, 4, 5, 1, 0, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 221\n\t        {8, 4, 5, 8, 5, 3, 9, 0, 5, 0, 3, 5, -1, -1, -1, -1},\t\t\t\t// 222\n\t        {9, 4, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},\t\t// 223\n\t        {4, 11, 7, 4, 9, 11, 9, 10, 11, -1, -1, -1, -1, -1, -1, -1},\t\t// 224\n\t        {0, 8, 3, 4, 9, 7, 9, 11, 7, 9, 10, 11, -1, -1, -1, -1},\t\t\t// 225\n\t        {1, 10, 11, 1, 11, 4, 1, 4, 0, 7, 4, 11, -1, -1, -1, -1},\t\t\t// 226\n\t        {3, 1, 4, 3, 4, 8, 1, 10, 4, 7, 4, 11, 10, 11, 4, -1},\t\t\t\t// 227\n\t        {4, 11, 7, 9, 11, 4, 9, 2, 11, 9, 1, 2, -1, -1, -1, -1},\t\t\t// 228\n\t        {9, 7, 4, 9, 11, 7, 9, 1, 11, 2, 11, 1, 0, 8, 3, -1},\t\t\t\t// 229\n\t        {11, 7, 4, 11, 4, 2, 2, 4, 0, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 230\n\t        {11, 7, 4, 11, 4, 2, 8, 3, 4, 3, 2, 4, -1, -1, -1, -1},\t\t\t\t// 231\n\t        {2, 9, 10, 2, 7, 9, 2, 3, 7, 7, 4, 9, -1, -1, -1, -1},\t\t\t\t// 232\n\t        {9, 10, 7, 9, 7, 4, 10, 2, 7, 8, 7, 0, 2, 0, 7, -1},\t\t\t\t// 233\n\t        {3, 7, 10, 3, 10, 2, 7, 4, 10, 1, 10, 0, 4, 0, 10, -1},\t\t\t\t// 234\n\t        {1, 10, 2, 8, 7, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},\t\t// 235\n\t        {4, 9, 1, 4, 1, 7, 7, 1, 3, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 236\n\t        {4, 9, 1, 4, 1, 7, 0, 8, 1, 8, 7, 1, -1, -1, -1, -1},\t\t\t\t// 237\n\t        {4, 0, 3, 7, 4, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 238\n\t        {4, 8, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},\t\t// 239\n\t        {9, 10, 8, 10, 11, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},\t\t// 240\n\t        {3, 0, 9, 3, 9, 11, 11, 9, 10, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 241\n\t        {0, 1, 10, 0, 10, 8, 8, 10, 11, -1, -1, -1, -1, -1, -1, -1},\t\t// 242\n\t        {3, 1, 10, 11, 3, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},\t\t// 243\n\t        {1, 2, 11, 1, 11, 9, 9, 11, 8, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 244\n\t        {3, 0, 9, 3, 9, 11, 1, 2, 9, 2, 11, 9, -1, -1, -1, -1},\t\t\t\t// 245\n\t        {0, 2, 11, 8, 0, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},\t\t// 246\n\t        {3, 2, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},\t\t// 247\n\t        {2, 3, 8, 2, 8, 10, 10, 8, 9, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 248\n\t        {9, 10, 2, 0, 9, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},\t\t// 249\n\t        {2, 3, 8, 2, 8, 10, 0, 1, 8, 1, 10, 8, -1, -1, -1, -1},\t\t\t\t// 250\n\t        {1, 10, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},\t\t// 251\n\t        {1, 3, 8, 9, 1, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},\t\t\t// 252\n\t        {0, 9, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},\t\t// 253\n\t        {0, 3, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},\t\t// 254\n\t        {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}};\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Voxels/MyVoxelPrecalcTask.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils.Utils;\nusing System.Threading;\nusing MinerWars.AppCode.App;\n\n//  This class is used for precalculation of voxels into triangles and vertex buffers\n//  It is not static and not thread too. But it may be called from thread.\n//  This class doesn't know if it is called from multiple threads or just from main thread.\n\nnamespace MinerWars.AppCode.Game.Voxels\n{\n    class MyVoxelPrecalcTask\n    {\n        //  Here I store vertex indices for final triangles\n        class MyEdgeVertex\n        {\n            public short VertexIndex;             //  If this vertex is in the list, this is its m_notCompressedIndex \n            public int CalcCounter;             //  For knowing if edge vertex was calculated in this PrecalcImmediatelly() or one of previous\n        }\n\n        //  Here I store data for edges on marching cube\n        class MyEdge\n        {\n            public Vector3 Position;\n            public Vector3 Normal;\n            public float Ambient;\n            public MyMwcVoxelMaterialsEnum Material;\n        }\n\n        //class MyShadowCell\n        //{\n        //    public float ShadowValue;\n        //    public MyMwcVector3Int CoordOfDataCellCenter;\n        //}\n\n        //  Temporary voxel values, serve as cache between precalc and voxel map - so we don't have to always access voxel maps but can look here\n        class MyTemporaryVoxel\n        {\n            public Vector3 Position;\n\n            public byte Content;\n            public MyMwcVoxelMaterialsEnum Material;\n            public Vector3 Normal;\n            public float Ambient;\n\n            public int Content_CalcCounter;\n            public int Material_CalcCounter;\n            public int Normal_CalcCounter;\n            public int Ambient_CalcCounter;\n\n            public MyTemporaryVoxel()\n            {\n                //  Reset counters\n                Content_CalcCounter = 0;\n                Material_CalcCounter = 0;\n                Normal_CalcCounter = 0;\n                Ambient_CalcCounter = 0;\n            }\n        }\n\n        //  Array of vectors. Used for temporary storing interpolated vertexes on cube edges.\n        const int POLYCUBE_EDGES = 12;\n        MyEdge[] m_edges = new MyEdge[POLYCUBE_EDGES];\n\n        //  Array of edges in the cell\n        const int CELL_EDGES_SIZE = MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS + 1;\n        MyEdgeVertex[][][][] m_edgeVertex;\n        int m_edgeVertexCalcCounter;\n\n        //  Here we store calculated vertexes and vertex info\n        readonly MyVoxelVertex[] m_resultVertices = new MyVoxelVertex[MyVoxelConstants.MAX_TRIANGLES_COUNT_IN_VOXEL_DATA_CELL * 3];\n        short m_resultVerticesCounter;\n\n        // Index buffer\n        readonly MyVoxelTriangle[] m_resultTriangles = new MyVoxelTriangle[MyVoxelConstants.MAX_TRIANGLES_COUNT_IN_VOXEL_DATA_CELL];\n        int m_resultTrianglesCounter;\n\n        //  This variables are set every time PrecalcImmediatelly() is called\n        int m_polygCubesX;\n        int m_polygCubesY;\n        int m_polygCubesZ;\n        MyMwcVector3Int m_voxelStart;\n        MyVoxelMap m_voxelMap;\n\n        //  Here we store voxel content values from cell we are precalculating. So we don't need to call VoxelMap.GetVoxelContent during precalculation.\n        //  Items in array are nullable because we want to know, if we already retrieved/calculated that voxel/normal during current precalculation.\n        const int COPY_TABLE_SIZE = MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS + 3;\n        int m_temporaryVoxelsCounter = 0;\n        MyTemporaryVoxel[][][] m_temporaryVoxels;\n\n        //  Each voxel triangleVertexes has unique ID in whole game (but only on client side)\n        //int m_triangleIdCounter = 0;\n\n        MyLodTypeEnum m_precalcType;\n        MyMwcVector3Int m_sizeMinusOne;\n\n\n        public MyVoxelPrecalcTask()\n        {\n            //  Cube Edges\n            for (int i = 0; i < m_edges.Length; i++)\n            {\n                m_edges[i] = new MyEdge();\n            }\n\n            //  Temporary voxel values, serve as cache between precalc and voxel map - so we don't have to always access voxel maps but can look here\n            m_temporaryVoxels = new MyTemporaryVoxel[COPY_TABLE_SIZE][][];\n            for (int x = 0; x < COPY_TABLE_SIZE; x++)\n            {\n                m_temporaryVoxels[x] = new MyTemporaryVoxel[COPY_TABLE_SIZE][];\n                for (int y = 0; y < COPY_TABLE_SIZE; y++)\n                {\n                    m_temporaryVoxels[x][y] = new MyTemporaryVoxel[COPY_TABLE_SIZE];\n                    for (int z = 0; z < COPY_TABLE_SIZE; z++)\n                    {\n                        m_temporaryVoxels[x][y][z] = new MyTemporaryVoxel();\n                    }\n                }\n            }\n\n            //  Array of edges in the cell\n            m_edgeVertexCalcCounter = 0;\n            m_edgeVertex = new MyEdgeVertex[CELL_EDGES_SIZE][][][];\n            for (int x = 0; x < CELL_EDGES_SIZE; x++)\n            {\n                m_edgeVertex[x] = new MyEdgeVertex[CELL_EDGES_SIZE][][];\n                for (int y = 0; y < CELL_EDGES_SIZE; y++)\n                {\n                    m_edgeVertex[x][y] = new MyEdgeVertex[CELL_EDGES_SIZE][];\n                    for (int z = 0; z < CELL_EDGES_SIZE; z++)\n                    {\n                        m_edgeVertex[x][y][z] = new MyEdgeVertex[MyVoxelPrecalcConstants.CELL_EDGE_COUNT];\n                        for (int w = 0; w < MyVoxelPrecalcConstants.CELL_EDGE_COUNT; w++)\n                        {\n                            m_edgeVertex[x][y][z][w] = new MyEdgeVertex();\n                            m_edgeVertex[x][y][z][w].CalcCounter = 0;\n                        }\n                    }\n                }\n            }\n        }\n\n        //  Copy voxels from voxel map into our temporary array. If TRUE returned, we don't have to calculate rest because this cell plus its surroinding is empy or full, thus there aren't any triangles\n        bool CopyVoxelContents()\n        {\n            //  Increase counter for temp voxels\n            m_temporaryVoxelsCounter++;\n\n            //  This is return value\n            bool everythingFull = true;\n            bool everythingEmpty = true;\n\n            if (m_precalcType == MyLodTypeEnum.LOD0)\n            {\n                //  This is cell we are trying to precalculate            \n                MyMwcVector3Int precalculatedCellCoord = m_voxelMap.GetDataCellCoordinate(ref m_voxelStart);\n\n                //  Iterate over \"our\" cell and all its neighbouring cells. That is total eight cells, including \"our\" cell\n                const int NEIGHBOURING_CELL_IN_DIRECTION = 1;\n                MyMwcVector3Int tempNeighCell;\n                for (tempNeighCell.X = 0; tempNeighCell.X <= NEIGHBOURING_CELL_IN_DIRECTION; tempNeighCell.X++)\n                {\n                    for (tempNeighCell.Y = 0; tempNeighCell.Y <= NEIGHBOURING_CELL_IN_DIRECTION; tempNeighCell.Y++)\n                    {\n                        for (tempNeighCell.Z = 0; tempNeighCell.Z <= NEIGHBOURING_CELL_IN_DIRECTION; tempNeighCell.Z++)\n                        {\n                            //  Ignore data cells that are outisde the voxel map\n                            MyMwcVector3Int neighCell = new MyMwcVector3Int(precalculatedCellCoord.X + tempNeighCell.X, precalculatedCellCoord.Y + tempNeighCell.Y, precalculatedCellCoord.Z + tempNeighCell.Z);\n                            if ((neighCell.X >= m_voxelMap.DataCellsCount.X) || (neighCell.Y >= m_voxelMap.DataCellsCount.Y) || (neighCell.Z >= m_voxelMap.DataCellsCount.Z)) continue;\n\n                            //  How many voxels to copy from this data cell (all voxels or just neighbouring voxels)\n                            MyMwcVector3Int cellSizeToCopy;\n                            cellSizeToCopy.X = (tempNeighCell.X == 0) ? MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS : 1;\n                            cellSizeToCopy.Y = (tempNeighCell.Y == 0) ? MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS : 1;\n                            cellSizeToCopy.Z = (tempNeighCell.Z == 0) ? MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS : 1;\n\n                            //  This particular cell (precalculated or one of the neighbouring)\n                            MyVoxelContentCell voxelCell = m_voxelMap.GetCell(ref neighCell);\n\n                            MyMwcVector3Int voxelStart = new MyMwcVector3Int(tempNeighCell.X * MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS, tempNeighCell.Y * MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS, tempNeighCell.Z * MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS);\n\n                            MyMwcVector3Int voxelCoord;\n                            for (voxelCoord.X = 0; voxelCoord.X < cellSizeToCopy.X; voxelCoord.X++)\n                            {\n                                for (voxelCoord.Y = 0; voxelCoord.Y < cellSizeToCopy.Y; voxelCoord.Y++)\n                                {\n                                    for (voxelCoord.Z = 0; voxelCoord.Z < cellSizeToCopy.Z; voxelCoord.Z++)\n                                    {\n                                        MyTemporaryVoxel tempVoxel = m_temporaryVoxels[voxelCoord.X + voxelStart.X + 1][voxelCoord.Y + voxelStart.Y + 1][voxelCoord.Z + voxelStart.Z + 1];\n                                        tempVoxel.Content = (voxelCell == null) ? MyVoxelConstants.VOXEL_CONTENT_FULL : voxelCell.GetVoxelContent(ref voxelCoord);\n\n                                        if (tempVoxel.Content > MyVoxelConstants.VOXEL_CONTENT_EMPTY) everythingEmpty = false;\n                                        if (tempVoxel.Content < MyVoxelConstants.VOXEL_CONTENT_FULL) everythingFull = false;\n\n                                        tempVoxel.Content_CalcCounter = m_temporaryVoxelsCounter;\n                                    }\n                                }\n                            }\n                        }\n                    }\n                }\n            }\n            else if (m_precalcType == MyLodTypeEnum.LOD1)\n            {\n                MyMwcVector3Int dataCellCoord;\n                for (dataCellCoord.X = 0; dataCellCoord.X < m_polygCubesX; dataCellCoord.X++)\n                {\n                    for (dataCellCoord.Y = 0; dataCellCoord.Y < m_polygCubesY; dataCellCoord.Y++)\n                    {\n                        for (dataCellCoord.Z = 0; dataCellCoord.Z < m_polygCubesZ; dataCellCoord.Z++)\n                        {\n                            MyTemporaryVoxel tempVoxel = m_temporaryVoxels[dataCellCoord.X + 1][dataCellCoord.Y + 1][dataCellCoord.Z + 1];\n\n                            MyMwcVector3Int tempDataCellCoord = new MyMwcVector3Int(m_voxelStart.X + dataCellCoord.X, m_voxelStart.Y + dataCellCoord.Y, m_voxelStart.Z + dataCellCoord.Z);\n                            tempVoxel.Content = m_voxelMap.GetDataCellAverageContent(ref tempDataCellCoord);\n\n                            if (tempVoxel.Content > MyVoxelConstants.VOXEL_CONTENT_EMPTY) everythingEmpty = false;\n                            if (tempVoxel.Content < MyVoxelConstants.VOXEL_CONTENT_FULL) everythingFull = false;\n\n                            tempVoxel.Content_CalcCounter = m_temporaryVoxelsCounter;\n                        }\n                    }\n                }\n\n            }\n            else\n            {\n                throw new MyMwcExceptionApplicationShouldNotGetHere();\n            }\n\n            return (everythingEmpty == true) || (everythingFull == true);\n        }\n\n        //  Size of cube depends on if we are at the end of the map\n        void CalcPolygCubeSize()\n        {\n            if (m_precalcType == MyLodTypeEnum.LOD0)\n            {\n                m_polygCubesX = (m_voxelStart.X + MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS) >= m_voxelMap.Size.X ? MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS : MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS + 1;\n                m_polygCubesY = (m_voxelStart.Y + MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS) >= m_voxelMap.Size.Y ? MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS : MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS + 1;\n                m_polygCubesZ = (m_voxelStart.Z + MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS) >= m_voxelMap.Size.Z ? MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS : MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS + 1;\n            }\n            else if (m_precalcType == MyLodTypeEnum.LOD1)\n            {\n                m_polygCubesX = (m_voxelStart.X + MyVoxelConstants.VOXEL_DATA_CELLS_IN_RENDER_CELL_SIZE) >= m_voxelMap.DataCellsCount.X ? MyVoxelConstants.VOXEL_DATA_CELLS_IN_RENDER_CELL_SIZE : MyVoxelConstants.VOXEL_DATA_CELLS_IN_RENDER_CELL_SIZE + 1;\n                m_polygCubesY = (m_voxelStart.Y + MyVoxelConstants.VOXEL_DATA_CELLS_IN_RENDER_CELL_SIZE) >= m_voxelMap.DataCellsCount.Y ? MyVoxelConstants.VOXEL_DATA_CELLS_IN_RENDER_CELL_SIZE : MyVoxelConstants.VOXEL_DATA_CELLS_IN_RENDER_CELL_SIZE + 1;\n                m_polygCubesZ = (m_voxelStart.Z + MyVoxelConstants.VOXEL_DATA_CELLS_IN_RENDER_CELL_SIZE) >= m_voxelMap.DataCellsCount.Z ? MyVoxelConstants.VOXEL_DATA_CELLS_IN_RENDER_CELL_SIZE : MyVoxelConstants.VOXEL_DATA_CELLS_IN_RENDER_CELL_SIZE + 1;\n            }\n            else\n            {\n                throw new MyMwcExceptionApplicationShouldNotGetHere();\n            }\n        }\n\n        //  Get material from lookup table or calc it\n        void GetVoxelMaterial(MyTemporaryVoxel temporaryVoxel, ref MyMwcVector3Int voxelCoord)\n        {\n            if (temporaryVoxel.Material_CalcCounter != m_temporaryVoxelsCounter)\n            {\n                if (m_precalcType == MyLodTypeEnum.LOD0)\n                {\n                    temporaryVoxel.Material = m_voxelMap.GetVoxelMaterial(ref voxelCoord);\n                }\n                else if (m_precalcType == MyLodTypeEnum.LOD1)\n                {\n                    temporaryVoxel.Material = m_voxelMap.GetDataCellAverageMaterial(ref voxelCoord);\n                }\n                else\n                {\n                    throw new MyMwcExceptionApplicationShouldNotGetHere();\n                }\n                temporaryVoxel.Material_CalcCounter = m_temporaryVoxelsCounter;\n            }\n        }\n\n        //  IMPORTANT: This method is called only from GetVoxelNormal(). Reason is that border voxels aren't copied during CopyVoxelContents, so we can check it now.\n        byte GetVoxelContent(int x, int y, int z)\n        {\n            MyTemporaryVoxel temporaryVoxel = m_temporaryVoxels[x][y][z];\n\n            if (temporaryVoxel.Content_CalcCounter != m_temporaryVoxelsCounter)\n            {\n                //  If this requested voxel wasn't copied during CopyVoxelContents, we need to get him now\n                MyMwcVector3Int tempVoxelCoord = new MyMwcVector3Int(m_voxelStart.X + x - 1, m_voxelStart.Y + y - 1, m_voxelStart.Z + z - 1);\n\n                if (m_precalcType == MyLodTypeEnum.LOD0)\n                {\n                    temporaryVoxel.Content = m_voxelMap.GetVoxelContent(ref tempVoxelCoord);\n                }\n                else if (m_precalcType == MyLodTypeEnum.LOD1)\n                {\n                    temporaryVoxel.Content = m_voxelMap.GetDataCellAverageContent(ref tempVoxelCoord);\n                }\n                else\n                {\n                    throw new MyMwcExceptionApplicationShouldNotGetHere();\n                }\n\n                temporaryVoxel.Content_CalcCounter = m_temporaryVoxelsCounter;\n            }\n\n            return temporaryVoxel.Content;\n        }\n\n\n        bool IsOutside(int coord, int maxMinusOne)\n        {\n            if (coord <= 0) return true;\n            if (coord >= maxMinusOne) return true;\n\n            return false;\n        }\n\n\n        //  IMPORTANT: This method is called only from GetVoxelNormal(). Reason is that border voxels aren't copied during CopyVoxelContents, so we can check it now.\n        // This is test  method which handles also borders of voxels\n        byte GetVoxelContent2(int x, int y, int z)\n        {\n            if (IsOutside(x, m_sizeMinusOne.X))\n                return MyVoxelConstants.VOXEL_CONTENT_EMPTY;\n\n            if (IsOutside(y, m_sizeMinusOne.Y))\n                return MyVoxelConstants.VOXEL_CONTENT_EMPTY;\n\n            if (IsOutside(z, m_sizeMinusOne.Z))\n                return MyVoxelConstants.VOXEL_CONTENT_EMPTY;\n\n            MyTemporaryVoxel temporaryVoxel = m_temporaryVoxels[x][y][z];\n\n            if (temporaryVoxel.Content_CalcCounter != m_temporaryVoxelsCounter)\n            {\n                //  If this requested voxel wasn't copied during CopyVoxelContents, we need to get him now\n                MyMwcVector3Int tempVoxelCoord = new MyMwcVector3Int(m_voxelStart.X + x - 1, m_voxelStart.Y + y - 1, m_voxelStart.Z + z - 1);\n\n                if (m_precalcType == MyLodTypeEnum.LOD0)\n                {\n                    temporaryVoxel.Content = m_voxelMap.GetVoxelContent(ref tempVoxelCoord);\n                }\n                else if (m_precalcType == MyLodTypeEnum.LOD1)\n                {\n                    temporaryVoxel.Content = m_voxelMap.GetDataCellAverageContent(ref tempVoxelCoord);\n                }\n                else\n                {\n                    throw new MyMwcExceptionApplicationShouldNotGetHere();\n                }\n\n                temporaryVoxel.Content_CalcCounter = m_temporaryVoxelsCounter;\n            }\n\n            return temporaryVoxel.Content;\n        }\n\n        //  Get normal from lookup table or calc it\n        void GetVoxelNormal(MyTemporaryVoxel temporaryVoxel, ref MyMwcVector3Int coord, ref MyMwcVector3Int voxelCoord, MyTemporaryVoxel centerVoxel)\n        {\n            if (temporaryVoxel.Normal_CalcCounter != m_temporaryVoxelsCounter)\n            {\n                if ((voxelCoord.X == 0) || (voxelCoord.X == (m_sizeMinusOne.X)) ||\n                    (voxelCoord.Y == 0) || (voxelCoord.Y == (m_sizeMinusOne.Y)) ||\n                    (voxelCoord.Z == 0) || (voxelCoord.Z == (m_sizeMinusOne.Z)))\n                {\n                    //  If asked for normal vector for voxel that is at the voxel map border, we can't compute it by gradient, so return this hack.\n                    temporaryVoxel.Normal = centerVoxel.Normal;\n                }\n                else\n                {\n                    Vector3 normal = new Vector3(\n                            (GetVoxelContent(coord.X - 1, coord.Y, coord.Z) - GetVoxelContent(coord.X + 1, coord.Y, coord.Z)) / MyVoxelConstants.VOXEL_CONTENT_FULL_FLOAT,\n                            (GetVoxelContent(coord.X, coord.Y - 1, coord.Z) - GetVoxelContent(coord.X, coord.Y + 1, coord.Z)) / MyVoxelConstants.VOXEL_CONTENT_FULL_FLOAT,\n                            (GetVoxelContent(coord.X, coord.Y, coord.Z - 1) - GetVoxelContent(coord.X, coord.Y, coord.Z + 1)) / MyVoxelConstants.VOXEL_CONTENT_FULL_FLOAT);\n\n                    if (normal.LengthSquared() <= 0.0f)\n                    {\n                        //  If voxels surounding voxel for which we want to get normal vector are of the same value, their subtracting leads to zero vector and that can't be used. So following line is hack.\n                        temporaryVoxel.Normal = centerVoxel.Normal;\n                    }\n                    else\n                    {\n                        MyMwcUtils.Normalize(ref normal, out temporaryVoxel.Normal);\n                    }\n                }\n                temporaryVoxel.Normal_CalcCounter = m_temporaryVoxelsCounter;\n            }\n        }\n\n        //  Get sun color (or light) from lookup table or calc it \n        //  IMPORTANT: At this point normals must be calculated because GetVoxelAmbientAndSun() will be retrieving them from temp table and not checking if there is actual value\n        void GetVoxelAmbient(MyTemporaryVoxel temporaryVoxel, ref MyMwcVector3Int coord, ref MyMwcVector3Int tempVoxelCoord)\n        {\n            if (temporaryVoxel.Ambient_CalcCounter != m_temporaryVoxelsCounter)\n            {\n                //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n                //  Ambient light calculation is same for LOD and no-LOD\n                //  This formula was choosen by experiments and observation, no real thought is behind it.\n                //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n                float ambient = 0;\n\n                /* 3 Point lighting - disabled now, instead used ambient occlusion\n                float dot0;\n                Vector3.Dot(ref temporaryVoxel.Normal, ref MyVoxelConstants.AMBIENT_LIGHT_DIRECTION_0, out dot0);\n\n                float dot1;\n                Vector3.Dot(ref temporaryVoxel.Normal, ref MyVoxelConstants.AMBIENT_LIGHT_DIRECTION_1, out dot1);\n\n                float dot2;\n                Vector3.Dot(ref temporaryVoxel.Normal, ref MyVoxelConstants.AMBIENT_LIGHT_DIRECTION_2, out dot2);\n\n\n                ambient += 1.0f * MathHelper.Clamp(dot0, 0, 1);\n                ambient += 0.8f * MathHelper.Clamp(dot1, 0, 1);\n                ambient += 0.6f * MathHelper.Clamp(dot2, 0, 1);\n                //ambient *= 5;\n                ambient = MathHelper.Clamp(ambient, 0, 1);\n                ambient = 1 - ambient;\n                ambient = 0.8f;\n                //ambient *= MyConstants.AMBIENT_COLOR;\n                //ambient *= 0.1f + ambient * 0.15f;\n                */\n\n                // Voxel ambient occlusion\n                const int VOXELS_CHECK_COUNT = 1;\n                for (int ambientX = -VOXELS_CHECK_COUNT; ambientX <= VOXELS_CHECK_COUNT; ambientX++)\n                {\n                    for (int ambientY = -VOXELS_CHECK_COUNT; ambientY <= VOXELS_CHECK_COUNT; ambientY++)\n                    {\n                        for (int ambientZ = -VOXELS_CHECK_COUNT; ambientZ <= VOXELS_CHECK_COUNT; ambientZ++)\n                        {\n                            MyMwcVector3Int tmpVoxelCoord = new MyMwcVector3Int(m_voxelStart.X + coord.X + ambientX - 1, m_voxelStart.Y + coord.Y + ambientY - 1, m_voxelStart.Z + coord.Z + ambientZ - 1);\n\n                            if ((tmpVoxelCoord.X < 0) || (tmpVoxelCoord.X > (m_sizeMinusOne.X)) ||\n                                (tmpVoxelCoord.Y < 0) || (tmpVoxelCoord.Y > (m_sizeMinusOne.Y)) ||\n                                (tmpVoxelCoord.Z < 0) || (tmpVoxelCoord.Z > (m_sizeMinusOne.Z)))\n                            {\n                                //  Ambient occlusion for requested voxel can't be calculated because surounding voxels are outside of the map\n                            }\n                            else\n                            {\n                                if (VOXELS_CHECK_COUNT == 1)\n                                {\n                                    ambient += (float)GetVoxelContent(coord.X + ambientX, coord.Y + ambientY, coord.Z + ambientZ);\n                                }\n                                else\n                                {\n                                    //  IMPORTANT: We trace 3x3x3 voxels around our voxel. So when dividng to get <0..1> interval, divide by this number.\n                                    ambient += m_voxelMap.GetVoxelContent(ref tmpVoxelCoord);\n                                }\n                            }\n                        }\n                    }\n                }\n\n                //  IMPORTANT: We trace 3x3x3 voxels around our voxel. So when dividng to get <0..1> interval, divide by this number.\n                ambient /= MyVoxelConstants.VOXEL_CONTENT_FULL_FLOAT * (VOXELS_CHECK_COUNT * 2 + 1) * (VOXELS_CHECK_COUNT * 2 + 1) * (VOXELS_CHECK_COUNT * 2 + 1);\n\n                //  Flip the number, so from now dark voxels are 0.0 and light are 1.0\n                ambient = 1.0f - ambient;\n\n                //  This values are chosen by trial-and-error\n                const float MIN = 0.4f;// 0.1f;\n                const float MAX = 0.9f;// 0.6f;\n\n                ambient = MathHelper.Clamp(ambient, MIN, MAX);\n\n                ambient = (ambient - MIN) / (MAX - MIN);\n                ambient -= 0.5f;\n\n                temporaryVoxel.Ambient = ambient;\n                temporaryVoxel.Ambient_CalcCounter = m_temporaryVoxelsCounter;\n            }\n        }\n\n        //  Linearly interpolates position, normal and material on poly-cube edge. Interpolated point is where an isosurface cuts an edge between two vertices, each with their own scalar value.\n        void GetVertexInterpolation(MyTemporaryVoxel inputVoxelA, MyTemporaryVoxel inputVoxelB, int edgeIndex)\n        {\n            MyEdge edge = m_edges[edgeIndex];\n\n            if (Math.Abs(MyVoxelConstants.VOXEL_ISO_LEVEL - inputVoxelA.Content) < 0.00001f)\n            {\n                edge.Position = inputVoxelA.Position;\n                edge.Normal = inputVoxelA.Normal;\n                edge.Material = inputVoxelA.Material;\n                edge.Ambient = inputVoxelA.Ambient;\n                return;\n            }\n\n            if (Math.Abs(MyVoxelConstants.VOXEL_ISO_LEVEL - inputVoxelB.Content) < 0.00001f)\n            {\n                edge.Position = inputVoxelB.Position;\n                edge.Normal = inputVoxelB.Normal;\n                edge.Material = inputVoxelB.Material;\n                edge.Ambient = inputVoxelB.Ambient;\n                return;\n            }\n\n            float mu = (float)(MyVoxelConstants.VOXEL_ISO_LEVEL - inputVoxelA.Content) / (float)(inputVoxelB.Content - inputVoxelA.Content);\n            System.Diagnostics.Debug.Assert(mu > 0.0f && mu < 1.0f);\n\n            edge.Position.X = inputVoxelA.Position.X + mu * (inputVoxelB.Position.X - inputVoxelA.Position.X);\n            edge.Position.Y = inputVoxelA.Position.Y + mu * (inputVoxelB.Position.Y - inputVoxelA.Position.Y);\n            edge.Position.Z = inputVoxelA.Position.Z + mu * (inputVoxelB.Position.Z - inputVoxelA.Position.Z);\n\n            edge.Normal.X = inputVoxelA.Normal.X + mu * (inputVoxelB.Normal.X - inputVoxelA.Normal.X);\n            edge.Normal.Y = inputVoxelA.Normal.Y + mu * (inputVoxelB.Normal.Y - inputVoxelA.Normal.Y);\n            edge.Normal.Z = inputVoxelA.Normal.Z + mu * (inputVoxelB.Normal.Z - inputVoxelA.Normal.Z);\n            if (MyMwcUtils.IsZero(edge.Normal))\n                edge.Normal = inputVoxelA.Normal;\n            else\n                edge.Normal = MyMwcUtils.Normalize(edge.Normal);\n\n            float mu2 = ((float)inputVoxelB.Content) / (((float)inputVoxelA.Content) + ((float)inputVoxelB.Content));\n            //edge.Material = (mu <= MyVoxelConstants.VOXEL_ISO_LEVEL) ? inputVoxelA.Material : inputVoxelB.Material;\n            edge.Material = (mu2 <= 0.5f) ? inputVoxelA.Material : inputVoxelB.Material;\n\n            edge.Ambient = inputVoxelA.Ambient + mu2 * (inputVoxelB.Ambient - inputVoxelA.Ambient);\n            //edge.Ambient = inputVoxelA.Ambient + mu * (inputVoxelB.Ambient - inputVoxelA.Ambient);\n\n            return;\n        }\n\n        ////  Copy shadow values of surrounding cells\n        //void CopyShadowValues()\n        //{\n        //    if (m_precalcType == MyLodTypeEnum.LOD0)\n        //    {\n        //        //  This is cell we are trying to precalculate            \n        //        MyMwcVector3Int precalculatedCellCoord = m_voxelMap.GetDataCellCoordinate(ref m_voxelStart);\n\n        //        for (int x = 0; x < SHADOW_CELLS; x++)\n        //        {\n        //            for (int y = 0; y < SHADOW_CELLS; y++)\n        //            {\n        //                for (int z = 0; z < SHADOW_CELLS; z++)\n        //                {\n        //                    MyMwcVector3Int tempCellCoord = new MyMwcVector3Int(precalculatedCellCoord.X + x - 1, precalculatedCellCoord.Y + y - 1, precalculatedCellCoord.Z + z - 1);\n\n        //                    //  This is coordinate of cell's middle and it may contain values that are outside voxel map. It is OK, because we use it for bilinear/average calculations.\n        //                    m_shadows[x][y][z].CoordOfDataCellCenter = m_voxelMap.GetVoxelCoordinatesOfCenterOfDataCell(ref tempCellCoord);\n\n        //                    if (m_voxelMap.IsDataCellInVoxelMap(ref tempCellCoord) == false)\n        //                    {\n        //                        //  Data cell isn't in this voxel map, so it can't cast shadow map\n        //                        m_shadows[x][y][z].ShadowValue = 1.0f;\n        //                    }\n        //                    else\n        //                    {\n        //                        m_shadows[x][y][z].ShadowValue = (float)m_voxelMap.GetDataCellShadow(ref tempCellCoord) / 255.0f;\n        //                    }\n        //                }\n        //            }\n        //        }\n        //    }\n        //}\n\n        //  Precalculate voxel cell into cache (makes triangles and vertex buffer from voxels)\n        public void Precalc(MyVoxelPrecalcTaskItem task)\n        {\n            m_precalcType = task.Type;\n\n            m_resultVerticesCounter = 0;\n            m_resultTrianglesCounter = 0;\n            m_edgeVertexCalcCounter++;\n            m_voxelMap = task.VoxelMap;\n            m_voxelStart = task.VoxelStart;\n\n            try\n            {\n                //m_voxelMap.LockAcquireWriterLock(Timeout.Infinite);\n\n                CalcPolygCubeSize();\n\n                //CopyShadowValues();\n\n                //  Copy voxels into temp array\n                bool totallyEmptyOrTotallyFull = CopyVoxelContents();\n\n                if (totallyEmptyOrTotallyFull == false)\n                {\n                    //  Size of voxel or cell (in meters) and size of voxel map / voxel cells\n                    float size;\n                    if (m_precalcType == MyLodTypeEnum.LOD0)\n                    {\n                        size = MyVoxelConstants.VOXEL_SIZE_IN_METRES;\n                        m_sizeMinusOne = m_voxelMap.SizeMinusOne;\n                    }\n                    else if (m_precalcType == MyLodTypeEnum.LOD1)\n                    {\n                        size = MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_METRES;\n                        m_sizeMinusOne = m_voxelMap.DataCellsCountMinusOne;\n                    }\n                    else\n                    {\n                        throw new MyMwcExceptionApplicationShouldNotGetHere();\n                    }\n\n                    //  Origin position for voxels (in meters)\n                    Vector3 originPosition;\n                    if (m_precalcType == MyLodTypeEnum.LOD0)\n                    {\n                        originPosition = m_voxelMap.GetVoxelCenterPositionRelative(ref m_voxelStart);\n                    }\n                    else if (m_precalcType == MyLodTypeEnum.LOD1)\n                    {\n                        originPosition = m_voxelMap.GetDataCellCenterPositionRelative(ref m_voxelStart);\n                    }\n                    else\n                    {\n                        throw new MyMwcExceptionApplicationShouldNotGetHere();\n                    }\n\n                    MyMwcVector3Int coord0;\n                    for (coord0.X = 1; coord0.X <= (m_polygCubesX - 1); coord0.X++)\n                    {\n                        for (coord0.Y = 1; coord0.Y <= (m_polygCubesY - 1); coord0.Y++)\n                        {\n                            for (coord0.Z = 1; coord0.Z <= (m_polygCubesZ - 1); coord0.Z++)\n                            {\n                                //  We can get this voxel content right from cache (not using GetVoxelContent method), because after CopyVoxelContents these array must be filled. But only content, not material, normal, etc.\n                                MyTemporaryVoxel tempVoxel0 = m_temporaryVoxels[coord0.X][coord0.Y][coord0.Z];\n                                MyTemporaryVoxel tempVoxel1 = m_temporaryVoxels[coord0.X + 1][coord0.Y][coord0.Z];\n                                MyTemporaryVoxel tempVoxel2 = m_temporaryVoxels[coord0.X + 1][coord0.Y][coord0.Z + 1];\n                                MyTemporaryVoxel tempVoxel3 = m_temporaryVoxels[coord0.X][coord0.Y][coord0.Z + 1];\n                                MyTemporaryVoxel tempVoxel4 = m_temporaryVoxels[coord0.X][coord0.Y + 1][coord0.Z];\n                                MyTemporaryVoxel tempVoxel5 = m_temporaryVoxels[coord0.X + 1][coord0.Y + 1][coord0.Z];\n                                MyTemporaryVoxel tempVoxel6 = m_temporaryVoxels[coord0.X + 1][coord0.Y + 1][coord0.Z + 1];\n                                MyTemporaryVoxel tempVoxel7 = m_temporaryVoxels[coord0.X][coord0.Y + 1][coord0.Z + 1];\n\n                                System.Diagnostics.Debug.Assert(tempVoxel0.Content_CalcCounter == m_temporaryVoxelsCounter);\n                                System.Diagnostics.Debug.Assert(tempVoxel1.Content_CalcCounter == m_temporaryVoxelsCounter);\n                                System.Diagnostics.Debug.Assert(tempVoxel2.Content_CalcCounter == m_temporaryVoxelsCounter);\n                                System.Diagnostics.Debug.Assert(tempVoxel3.Content_CalcCounter == m_temporaryVoxelsCounter);\n                                System.Diagnostics.Debug.Assert(tempVoxel4.Content_CalcCounter == m_temporaryVoxelsCounter);\n                                System.Diagnostics.Debug.Assert(tempVoxel5.Content_CalcCounter == m_temporaryVoxelsCounter);\n                                System.Diagnostics.Debug.Assert(tempVoxel6.Content_CalcCounter == m_temporaryVoxelsCounter);\n                                System.Diagnostics.Debug.Assert(tempVoxel7.Content_CalcCounter == m_temporaryVoxelsCounter);\n\n                                //  We can get this voxel content right from cache (not using GetVoxelContent method), because after CopyVoxelContents these array must be filled. But only content, not material, normal, etc.\n                                int cubeIndex = 0;\n                                if (tempVoxel0.Content < MyVoxelConstants.VOXEL_ISO_LEVEL) cubeIndex |= 1;\n                                if (tempVoxel1.Content < MyVoxelConstants.VOXEL_ISO_LEVEL) cubeIndex |= 2;\n                                if (tempVoxel2.Content < MyVoxelConstants.VOXEL_ISO_LEVEL) cubeIndex |= 4;\n                                if (tempVoxel3.Content < MyVoxelConstants.VOXEL_ISO_LEVEL) cubeIndex |= 8;\n                                if (tempVoxel4.Content < MyVoxelConstants.VOXEL_ISO_LEVEL) cubeIndex |= 16;\n                                if (tempVoxel5.Content < MyVoxelConstants.VOXEL_ISO_LEVEL) cubeIndex |= 32;\n                                if (tempVoxel6.Content < MyVoxelConstants.VOXEL_ISO_LEVEL) cubeIndex |= 64;\n                                if (tempVoxel7.Content < MyVoxelConstants.VOXEL_ISO_LEVEL) cubeIndex |= 128;\n\n                                //  Cube is entirely in/out of the surface\n                                if (MyVoxelPrecalcConstants.EdgeTable[cubeIndex] == 0)\n                                {\n                                    continue;\n                                }\n\n                                MyMwcVector3Int coord1 = new MyMwcVector3Int(coord0.X + 1, coord0.Y, coord0.Z);\n                                MyMwcVector3Int coord2 = new MyMwcVector3Int(coord0.X + 1, coord0.Y, coord0.Z + 1);\n                                MyMwcVector3Int coord3 = new MyMwcVector3Int(coord0.X, coord0.Y, coord0.Z + 1);\n                                MyMwcVector3Int coord4 = new MyMwcVector3Int(coord0.X, coord0.Y + 1, coord0.Z);\n                                MyMwcVector3Int coord5 = new MyMwcVector3Int(coord0.X + 1, coord0.Y + 1, coord0.Z);\n                                MyMwcVector3Int coord6 = new MyMwcVector3Int(coord0.X + 1, coord0.Y + 1, coord0.Z + 1);\n                                MyMwcVector3Int coord7 = new MyMwcVector3Int(coord0.X, coord0.Y + 1, coord0.Z + 1);\n\n                                MyMwcVector3Int tempVoxelCoord0 = new MyMwcVector3Int(m_voxelStart.X + coord0.X - 1, m_voxelStart.Y + coord0.Y - 1, m_voxelStart.Z + coord0.Z - 1);\n                                MyMwcVector3Int tempVoxelCoord1 = new MyMwcVector3Int(m_voxelStart.X + coord1.X - 1, m_voxelStart.Y + coord1.Y - 1, m_voxelStart.Z + coord1.Z - 1);\n                                MyMwcVector3Int tempVoxelCoord2 = new MyMwcVector3Int(m_voxelStart.X + coord2.X - 1, m_voxelStart.Y + coord2.Y - 1, m_voxelStart.Z + coord2.Z - 1);\n                                MyMwcVector3Int tempVoxelCoord3 = new MyMwcVector3Int(m_voxelStart.X + coord3.X - 1, m_voxelStart.Y + coord3.Y - 1, m_voxelStart.Z + coord3.Z - 1);\n                                MyMwcVector3Int tempVoxelCoord4 = new MyMwcVector3Int(m_voxelStart.X + coord4.X - 1, m_voxelStart.Y + coord4.Y - 1, m_voxelStart.Z + coord4.Z - 1);\n                                MyMwcVector3Int tempVoxelCoord5 = new MyMwcVector3Int(m_voxelStart.X + coord5.X - 1, m_voxelStart.Y + coord5.Y - 1, m_voxelStart.Z + coord5.Z - 1);\n                                MyMwcVector3Int tempVoxelCoord6 = new MyMwcVector3Int(m_voxelStart.X + coord6.X - 1, m_voxelStart.Y + coord6.Y - 1, m_voxelStart.Z + coord6.Z - 1);\n                                MyMwcVector3Int tempVoxelCoord7 = new MyMwcVector3Int(m_voxelStart.X + coord7.X - 1, m_voxelStart.Y + coord7.Y - 1, m_voxelStart.Z + coord7.Z - 1);\n\n                                tempVoxel0.Position.X = originPosition.X + (coord0.X - 1) * size;\n                                tempVoxel0.Position.Y = originPosition.Y + (coord0.Y - 1) * size;\n                                tempVoxel0.Position.Z = originPosition.Z + (coord0.Z - 1) * size;\n\n                                tempVoxel1.Position.X = tempVoxel0.Position.X + size;\n                                tempVoxel1.Position.Y = tempVoxel0.Position.Y;\n                                tempVoxel1.Position.Z = tempVoxel0.Position.Z;\n\n                                tempVoxel2.Position.X = tempVoxel0.Position.X + size;\n                                tempVoxel2.Position.Y = tempVoxel0.Position.Y;\n                                tempVoxel2.Position.Z = tempVoxel0.Position.Z + size;\n\n                                tempVoxel3.Position.X = tempVoxel0.Position.X;\n                                tempVoxel3.Position.Y = tempVoxel0.Position.Y;\n                                tempVoxel3.Position.Z = tempVoxel0.Position.Z + size;\n\n                                tempVoxel4.Position.X = tempVoxel0.Position.X;\n                                tempVoxel4.Position.Y = tempVoxel0.Position.Y + size;\n                                tempVoxel4.Position.Z = tempVoxel0.Position.Z;\n\n                                tempVoxel5.Position.X = tempVoxel0.Position.X + size;\n                                tempVoxel5.Position.Y = tempVoxel0.Position.Y + size;\n                                tempVoxel5.Position.Z = tempVoxel0.Position.Z;\n\n                                tempVoxel6.Position.X = tempVoxel0.Position.X + size;\n                                tempVoxel6.Position.Y = tempVoxel0.Position.Y + size;\n                                tempVoxel6.Position.Z = tempVoxel0.Position.Z + size;\n\n                                tempVoxel7.Position.X = tempVoxel0.Position.X;\n                                tempVoxel7.Position.Y = tempVoxel0.Position.Y + size;\n                                tempVoxel7.Position.Z = tempVoxel0.Position.Z + size;\n\n                                //  Normals at grid corners (calculated from gradient)\n                                GetVoxelNormal(tempVoxel0, ref coord0, ref tempVoxelCoord0, tempVoxel0);\n                                GetVoxelNormal(tempVoxel1, ref coord1, ref tempVoxelCoord1, tempVoxel0);\n                                GetVoxelNormal(tempVoxel2, ref coord2, ref tempVoxelCoord2, tempVoxel0);\n                                GetVoxelNormal(tempVoxel3, ref coord3, ref tempVoxelCoord3, tempVoxel0);\n                                GetVoxelNormal(tempVoxel4, ref coord4, ref tempVoxelCoord4, tempVoxel0);\n                                GetVoxelNormal(tempVoxel5, ref coord5, ref tempVoxelCoord5, tempVoxel0);\n                                GetVoxelNormal(tempVoxel6, ref coord6, ref tempVoxelCoord6, tempVoxel0);\n                                GetVoxelNormal(tempVoxel7, ref coord7, ref tempVoxelCoord7, tempVoxel0);\n\n                                //  Ambient occlusion colors at grid corners\n                                //  IMPORTANT: At this point normals must be calculated because GetVoxelAmbientAndSun() will be retrieving them from temp table and not checking if there is actual value\n                                GetVoxelAmbient(tempVoxel0, ref coord0, ref tempVoxelCoord0);\n                                GetVoxelAmbient(tempVoxel1, ref coord1, ref tempVoxelCoord1);\n                                GetVoxelAmbient(tempVoxel2, ref coord2, ref tempVoxelCoord2);\n                                GetVoxelAmbient(tempVoxel3, ref coord3, ref tempVoxelCoord3);\n                                GetVoxelAmbient(tempVoxel4, ref coord4, ref tempVoxelCoord4);\n                                GetVoxelAmbient(tempVoxel5, ref coord5, ref tempVoxelCoord5);\n                                GetVoxelAmbient(tempVoxel6, ref coord6, ref tempVoxelCoord6);\n                                GetVoxelAmbient(tempVoxel7, ref coord7, ref tempVoxelCoord7);\n\n                                //  Materials at grid corners\n                                GetVoxelMaterial(tempVoxel0, ref tempVoxelCoord0);\n                                GetVoxelMaterial(tempVoxel1, ref tempVoxelCoord1);\n                                GetVoxelMaterial(tempVoxel2, ref tempVoxelCoord2);\n                                GetVoxelMaterial(tempVoxel3, ref tempVoxelCoord3);\n                                GetVoxelMaterial(tempVoxel4, ref tempVoxelCoord4);\n                                GetVoxelMaterial(tempVoxel5, ref tempVoxelCoord5);\n                                GetVoxelMaterial(tempVoxel6, ref tempVoxelCoord6);\n                                GetVoxelMaterial(tempVoxel7, ref tempVoxelCoord7);\n\n                                //  Find the vertices where the surface intersects the cube\n                                if ((MyVoxelPrecalcConstants.EdgeTable[cubeIndex] & 1) == 1)\n                                {\n                                    GetVertexInterpolation(tempVoxel0, tempVoxel1, 0);\n                                }\n                                if ((MyVoxelPrecalcConstants.EdgeTable[cubeIndex] & 2) == 2)\n                                {\n                                    GetVertexInterpolation(tempVoxel1, tempVoxel2, 1);\n                                }\n                                if ((MyVoxelPrecalcConstants.EdgeTable[cubeIndex] & 4) == 4)\n                                {\n                                    GetVertexInterpolation(tempVoxel2, tempVoxel3, 2);\n                                }\n                                if ((MyVoxelPrecalcConstants.EdgeTable[cubeIndex] & 8) == 8)\n                                {\n                                    GetVertexInterpolation(tempVoxel3, tempVoxel0, 3);\n                                }\n                                if ((MyVoxelPrecalcConstants.EdgeTable[cubeIndex] & 16) == 16)\n                                {\n                                    GetVertexInterpolation(tempVoxel4, tempVoxel5, 4);\n                                }\n                                if ((MyVoxelPrecalcConstants.EdgeTable[cubeIndex] & 32) == 32)\n                                {\n                                    GetVertexInterpolation(tempVoxel5, tempVoxel6, 5);\n                                }\n                                if ((MyVoxelPrecalcConstants.EdgeTable[cubeIndex] & 64) == 64)\n                                {\n                                    GetVertexInterpolation(tempVoxel6, tempVoxel7, 6);\n                                }\n                                if ((MyVoxelPrecalcConstants.EdgeTable[cubeIndex] & 128) == 128)\n                                {\n                                    GetVertexInterpolation(tempVoxel7, tempVoxel4, 7);\n                                }\n                                if ((MyVoxelPrecalcConstants.EdgeTable[cubeIndex] & 256) == 256)\n                                {\n                                    GetVertexInterpolation(tempVoxel0, tempVoxel4, 8);\n                                }\n                                if ((MyVoxelPrecalcConstants.EdgeTable[cubeIndex] & 512) == 512)\n                                {\n                                    GetVertexInterpolation(tempVoxel1, tempVoxel5, 9);\n                                }\n                                if ((MyVoxelPrecalcConstants.EdgeTable[cubeIndex] & 1024) == 1024)\n                                {\n                                    GetVertexInterpolation(tempVoxel2, tempVoxel6, 10);\n                                }\n                                if ((MyVoxelPrecalcConstants.EdgeTable[cubeIndex] & 2048) == 2048)\n                                {\n                                    GetVertexInterpolation(tempVoxel3, tempVoxel7, 11);\n                                }\n\n                                //  Create the triangles\n                                MyMwcVector3Int edge = new MyMwcVector3Int(coord0.X - 1, coord0.Y - 1, coord0.Z - 1);\n                                for (int i = 0; MyVoxelPrecalcConstants.TriangleTable[cubeIndex, i] != -1; i += 3)\n                                {\n                                    //  Edge indexes inside the cube\n                                    int edgeIndex0 = MyVoxelPrecalcConstants.TriangleTable[cubeIndex, i + 0];\n                                    int edgeIndex1 = MyVoxelPrecalcConstants.TriangleTable[cubeIndex, i + 1];\n                                    int edgeIndex2 = MyVoxelPrecalcConstants.TriangleTable[cubeIndex, i + 2];\n\n                                    MyEdge edge0 = m_edges[edgeIndex0];\n                                    MyEdge edge1 = m_edges[edgeIndex1];\n                                    MyEdge edge2 = m_edges[edgeIndex2];\n\n\n                                    //  Edge indexes inside the cell\n                                    MyMwcVector4Int edgeConversion0 = MyVoxelPrecalcConstants.EdgeConversion[edgeIndex0];\n                                    MyMwcVector4Int edgeConversion1 = MyVoxelPrecalcConstants.EdgeConversion[edgeIndex1];\n                                    MyMwcVector4Int edgeConversion2 = MyVoxelPrecalcConstants.EdgeConversion[edgeIndex2];\n\n                                    MyEdgeVertex edgeVertex0 = m_edgeVertex[edge.X + edgeConversion0.X][edge.Y + edgeConversion0.Y][edge.Z + edgeConversion0.Z][edgeConversion0.W];\n                                    MyEdgeVertex edgeVertex1 = m_edgeVertex[edge.X + edgeConversion1.X][edge.Y + edgeConversion1.Y][edge.Z + edgeConversion1.Z][edgeConversion1.W];\n                                    MyEdgeVertex edgeVertex2 = m_edgeVertex[edge.X + edgeConversion2.X][edge.Y + edgeConversion2.Y][edge.Z + edgeConversion2.Z][edgeConversion2.W];\n\n\n                                    MyVoxelVertex compressedVertex0 = new MyVoxelVertex();\n                                    compressedVertex0.Position = edge0.Position;\n                                    MyVoxelVertex compressedVertex1 = new MyVoxelVertex();\n                                    compressedVertex1.Position = edge1.Position;\n                                    MyVoxelVertex compressedVertex2 = new MyVoxelVertex();\n                                    compressedVertex2.Position = edge2.Position;\n\n                                    //  We want to skip all wrong triangles, those that have two vertex at almost the same location, etc.\n                                    //  We do it simply, by calculating triangle normal and then checking if this normal has length large enough\n                                    if (IsWrongTriangle(ref compressedVertex0, ref compressedVertex1, ref compressedVertex2) == true)\n                                    {\n                                        continue;\n                                    }\n\n                                    //  Vertex at edge 0     \n                                    if (edgeVertex0.CalcCounter != m_edgeVertexCalcCounter)\n                                    {\n                                        //  If vertex at edge0 wasn't calculated for this cell during this precalc, we need to add it\n\n                                        //  Short overflow check\n                                        System.Diagnostics.Debug.Assert(m_resultVerticesCounter <= short.MaxValue);\n\n                                        edgeVertex0.CalcCounter = m_edgeVertexCalcCounter;\n                                        edgeVertex0.VertexIndex = m_resultVerticesCounter;\n\n                                        m_resultVertices[m_resultVerticesCounter].Position = edge0.Position;\n                                        m_resultVertices[m_resultVerticesCounter].Normal = edge0.Normal;\n                                        m_resultVertices[m_resultVerticesCounter].Ambient = edge0.Ambient;\n                                        m_resultVertices[m_resultVerticesCounter].Material = edge0.Material;\n                                        //m_resultVertices[m_resultVerticesCounter].OnRenderCellEdge = false;\n\n                                        if (IsCoordOnRenderCellEdge(tempVoxelCoord0))\n                                        {\n                                            //m_resultVertices[m_resultVerticesCounter].OnRenderCellEdge = true;\n                                        }\n\n                                        m_resultVerticesCounter++;\n                                    }\n\n                                    //  Vertex at edge 1\n                                    if (edgeVertex1.CalcCounter != m_edgeVertexCalcCounter)\n                                    {\n                                        //  If vertex at edge1 wasn't calculated for this cell during this precalc, we need to add it\n\n                                        //  Short overflow check\n                                        System.Diagnostics.Debug.Assert(m_resultVerticesCounter <= short.MaxValue);\n\n                                        edgeVertex1.CalcCounter = m_edgeVertexCalcCounter;\n                                        edgeVertex1.VertexIndex = m_resultVerticesCounter;\n\n                                        m_resultVertices[m_resultVerticesCounter].Position = edge1.Position;\n                                        m_resultVertices[m_resultVerticesCounter].Normal = edge1.Normal;\n                                        m_resultVertices[m_resultVerticesCounter].Ambient = edge1.Ambient;\n                                        m_resultVertices[m_resultVerticesCounter].Material = edge1.Material;\n                                        //m_resultVertices[m_resultVerticesCounter].OnRenderCellEdge = false;\n\n                                        if (IsCoordOnRenderCellEdge(tempVoxelCoord0))\n                                        {\n                                            //m_resultVertices[m_resultVerticesCounter].OnRenderCellEdge = true;\n                                        }\n\n                                        m_resultVerticesCounter++;\n                                    }\n\n                                    //  Vertex at edge 2\n                                    if (edgeVertex2.CalcCounter != m_edgeVertexCalcCounter)\n                                    {\n                                        //  If vertex at edge2 wasn't calculated for this cell during this precalc, we need to add it\n\n                                        //  Short overflow check\n                                        System.Diagnostics.Debug.Assert(m_resultVerticesCounter <= short.MaxValue);\n\n                                        edgeVertex2.CalcCounter = m_edgeVertexCalcCounter;\n                                        edgeVertex2.VertexIndex = m_resultVerticesCounter;\n\n                                        m_resultVertices[m_resultVerticesCounter].Position = edge2.Position;\n                                        m_resultVertices[m_resultVerticesCounter].Normal = edge2.Normal;\n                                        m_resultVertices[m_resultVerticesCounter].Ambient = edge2.Ambient;\n                                        m_resultVertices[m_resultVerticesCounter].Material = edge2.Material;\n                                        //m_resultVertices[m_resultVerticesCounter].OnRenderCellEdge = false;\n\n                                        if (IsCoordOnRenderCellEdge(tempVoxelCoord0))\n                                        {\n                                          //  m_resultVertices[m_resultVerticesCounter].OnRenderCellEdge = true;\n                                        }\n\n                                        m_resultVerticesCounter++;\n                                    }\n\n                                    //  Triangle\n                                    m_resultTriangles[m_resultTrianglesCounter].VertexIndex0 = edgeVertex0.VertexIndex;\n                                    m_resultTriangles[m_resultTrianglesCounter].VertexIndex1 = edgeVertex1.VertexIndex;\n                                    m_resultTriangles[m_resultTrianglesCounter].VertexIndex2 = edgeVertex2.VertexIndex;\n                                    Debug.Assert(edgeVertex0.VertexIndex < m_resultVerticesCounter);\n                                    Debug.Assert(edgeVertex1.VertexIndex < m_resultVerticesCounter);\n                                    Debug.Assert(edgeVertex2.VertexIndex < m_resultVerticesCounter);\n\n                                    //  Each voxel triangleVertexes has unique ID in whole game (but only on client side)\n                                    //m_resultTriangles[m_resultTrianglesCounter].TriangleId = m_triangleIdCounter++;\n\n                                    m_resultTrianglesCounter++;\n                                }\n                            }\n                        }\n                    }\n                }\n\n                // Cache the vertices and triangles and precalculate the octree\n                task.Cache.PrepareCache(m_resultVertices, m_resultVerticesCounter, m_resultTriangles, m_resultTrianglesCounter);\n            }\n            finally\n            {\n                //m_voxelMap.Lock.ReleaseWriterLock();\n            }\n        }\n\n        /// <summary>\n        /// Returns true if the coordinate is on boundary of voxel render cells.\n        /// </summary>\n        bool IsCoordOnRenderCellEdge(MyMwcVector3Int coord)\n        {\n            return\n                ((coord.X % (MyVoxelConstants.VOXEL_RENDER_CELL_SIZE_IN_VOXELS)) == 0) ||\n                ((coord.X % (MyVoxelConstants.VOXEL_RENDER_CELL_SIZE_IN_VOXELS)) == MyVoxelConstants.VOXEL_RENDER_CELL_SIZE_IN_VOXELS - 1) ||\n                ((coord.Y % (MyVoxelConstants.VOXEL_RENDER_CELL_SIZE_IN_VOXELS)) == 0) ||\n                ((coord.Y % (MyVoxelConstants.VOXEL_RENDER_CELL_SIZE_IN_VOXELS)) == MyVoxelConstants.VOXEL_RENDER_CELL_SIZE_IN_VOXELS - 1) ||\n                ((coord.Z % (MyVoxelConstants.VOXEL_RENDER_CELL_SIZE_IN_VOXELS)) == 0) ||\n                ((coord.Z % (MyVoxelConstants.VOXEL_RENDER_CELL_SIZE_IN_VOXELS)) == MyVoxelConstants.VOXEL_RENDER_CELL_SIZE_IN_VOXELS - 1);\n        }\n\n        //  We want to skip all wrong triangles, those that have two vertex at almost the same location, etc.\n        //  We do it simply, by calculating triangle normal and then checking if this normal has length large enough\n        bool IsWrongTriangle(ref MyVoxelVertex edge0, ref MyVoxelVertex edge1, ref MyVoxelVertex edge2)\n        {\n            //  Distance between two vertices is the fastest test\n            Vector3 triangleEdgeVector1 = edge2.Position - edge0.Position;\n            if (triangleEdgeVector1.LengthSquared() <= MyMwcMathConstants.EPSILON_SQUARED) return true;\n\n            //  Distance between two vertexes is the fastest test\n            Vector3 triangleEdgeVector2 = edge1.Position - edge0.Position;\n            if (triangleEdgeVector2.LengthSquared() <= MyMwcMathConstants.EPSILON_SQUARED) return true;\n\n            //  Distance between two vertexes is the fastest test\n            Vector3 triangleEdgeVector3 = edge1.Position - edge2.Position;\n            if (triangleEdgeVector3.LengthSquared() <= MyMwcMathConstants.EPSILON_SQUARED) return true;\n\n            //  We don't need to do this advanced test, because it has zero improvement on voxel triangles (and testing takes time too)\n            /*Vector3 norm;\n            Vector3.Cross(ref triangleEdgeVector1, ref triangleEdgeVector2, out norm);\n            if (norm.Length() < MyMwcMathConstants.EPSILON) return true;*/\n\n            return false;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/Voxels/MyVoxelPrecalcWork.cs",
    "content": "﻿using ParallelTasks;\n\n//  This thread is waiting until signaled, then processes all cells waiting in the queue, signals main thread that he is done and wait again for next signal\n\nnamespace MinerWars.AppCode.Game.Voxels\n{\n    class MyVoxelPrecalcWork : IWork\n    {\n        MyVoxelPrecalcTask m_task;\n\n        public MyVoxelPrecalcWork()\n        {\n            m_task = new MyVoxelPrecalcTask();\n        }\n        \n        public void DoWork()\n        {            \n            while (true)\n            {\n                MyVoxelPrecalcTaskItem newTask;\n                if (MyVoxelPrecalc.Tasks.TryDequeue(out newTask))\n                {\n                    //  If there is task, then calculate it\n                    m_task.Precalc(newTask);\n                }\n                else\n                {\n                    break;\n                }\n            } \n        }\n\n        public WorkOptions Options\n        {\n            get { return new WorkOptions() { MaximumThreads = 1 }; }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/World/Global/MyActorConstants.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.GUI.Core;\n\nnamespace MinerWars.AppCode.Game.World.Global\n{\n    public enum MyActorEnum\n    {\n        //Temp1 = 0,\n        //Temp2 = 1,\n        APOLLO = 2,\n        MARCUS = 3,\n        EacSurveySite_StationOperator = 4,\n        EacSurveySite_MilitaryOfficer = 5,\n        MADELYN = 6,\n        Researcher1 = 7,\n        Researcher2 = 8,\n        RussianCF1 = 10,\n        RussianCF2 = 11,\n        RussianGeneral = 12,\n        RussianCaptain = 13,\n        TemplarPatriarchLamorak = 14,\n        TemplarSirBedivere = 15,\n        LorraineCardin = 16,\n        TemplarGuard = 17,\n        SmugglerInformator = 18,\n        //MANJEET = 19,\n        TheCrook = 20,\n        LAIKA_OPERATOR = 21,\n        ChineseGuard = 22,\n        VALENTIN = 23,\n        TARJA = 24,\n        Slave = 25,\n        SPEEDSTER = 26,\n\n        EAC_CAPTAIN_FEMALE = 29,\n        EAC_CAPTAIN = 30,\n        FATHER_TOBIAS = 31,\n        Fourth_Reich_Colone_2 = 32,\n        FRANCIS_REEF = 33,\n        MANJEET = 34,\n        THOMAS = 36,\n        White_Wolves_General_2 = 37,\n\n        RiftOperator = 38,\n        RiftTourist = 39,\n\n        ShouterReichJE = 40,\n        CHINESE_OFFICER = 41, \n        ShouterRussianJE = 42,\n        BLONDI = 43,\n        RAIDER = 44,      \n        RussianGeneralRecording = 46,\n        RussianHeadquartersRecording = 47,\n        VOLODIA_STRANGER = 48,\n        VOLODIA = 49,\n        SLAVER_BASE_CAPTAIN = 50,\n        CEDRIC,\n        GATEKEEPER,\n        SLAVER_LEADER,\n        CAPTIVE,\n        CAPTIVE_PILOT,\n        ZAPPAS_GANGMAN,\n        MOMO_ZAPPA,\n        DEALER,\n        GANGSTER,\n        CHINESE_COMMANDO,\n        WALTHER,\n        TRANSPORTER_CAPTAIN,\n        ERHARD,\n        FOR_CAPTAIN,\n        CHINESE_PILOT,\n        RAIDER_LEADER,\n        RAIDER_NAVIGATOR,\n        SIR_GERAINT,\n        COUNCIL_GUARD,\n        PATRIARCH_LAMORAK,\n        PATRIARCH_DAGONET,\n        PATRIARCH_CARADOC,\n        UNKNOWN,\n        EVERYONE,\n        RUSSIAN_GENERAL,\n        PIRATE_MALE,\n        PIRATE2_MALE,\n        CLEGG,\n        VANE,\n        GORG,\n        SLAVER_COLE,\n        SLAVER_JEFF,\n\n        RIME_CLIENT1,\n        RIME_CLIENT2,\n        RIME_BOUNCER,\n        RIME_CLIENT3,\n        RIME_BARKEEPER,\n        RIME_MITCHEL,\n        RIME_SMUGGLER,\n        RIME_GUARD,\n\n        REICHSTAG_OFFICER,\n        REICHSTAG_CAPTAIN,\n\n        RESEARCH_VESSEL_CAPTAIN,\n        EacSurveySite_MilitaryCaptain,\n   }\n\n    internal class MyActorProperties\n    {\n        public string Name;\n        public MyTextsWrapperEnum DisplayName;\n        public MyTexture2D AvatarImage;\n        public MyTexture2D Icon;\n        public MyMwcObjectBuilder_FactionEnum Faction;\n\n        public MyActorProperties(MyTextsWrapperEnum displayName, MyTexture2D avatarImage, MyTexture2D icon, MyMwcObjectBuilder_FactionEnum faction, string name = null)\n        {\n            Name = name;\n            DisplayName = displayName;\n            AvatarImage = avatarImage;\n            Icon = icon;\n            Faction = faction;\n        }\n    }\n\n    static class MyActorConstants\n    {\n        static readonly int MAX_ACTORNAME_LENGTH = 30;\n\n        static readonly Dictionary<int, MyActorProperties> m_actorProperties = new Dictionary<int, MyActorProperties>();\n\n        static readonly HashSet<MyActorEnum> m_noiseActors = new HashSet<MyActorEnum>(){\n            MyActorEnum.RussianCF1, MyActorEnum.RussianCF2, MyActorEnum.SmugglerInformator, MyActorEnum.ChineseGuard, MyActorEnum.SPEEDSTER, MyActorEnum.Slave\n        };\n\n        /// <summary>\n        /// this method is there because we need load and check asserts when the game started\n        /// </summary>\n        public static void Check()\n        {\n            // TODO\n        }\n\n        public static MyActorProperties GetActorProperties(MyActorEnum id)\n        {\n            MyActorProperties result = null;\n            m_actorProperties.TryGetValue((int)id, out result);\n            return result;\n        }\n\n        public static void SetActorFaction(MyActorEnum id, MyMwcObjectBuilder_FactionEnum newFaction)\n        {\n            var actorProperties = GetActorProperties(id);\n            if (actorProperties == null) return;\n            actorProperties.Faction = newFaction;\n        }\n\n        public static bool IsNoiseActor(MyActorEnum id) {\n            return m_noiseActors.Contains(id);\n        }\n\n        static MyActorConstants()\n        {\n            //m_actorProperties.Add((int)MyActorEnum.Temp1, new MyActorProperties(MyTextsWrapperEnum.ActorNameTemp1, MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\Gui\\\\Actors\\\\Temp1\", flags: TextureFlags.IgnoreQuality), null, MyMwcObjectBuilder_FactionEnum.Russian_KGB));\n            //m_actorProperties.Add((int)MyActorEnum.Temp2, new MyActorProperties(MyTextsWrapperEnum.ActorNameTemp2, MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\Gui\\\\Actors\\\\Temp2\", flags: TextureFlags.IgnoreQuality), null, MyMwcObjectBuilder_FactionEnum.Russian_KGB));\n            m_actorProperties.Add((int)MyActorEnum.APOLLO, new MyActorProperties(MyTextsWrapperEnum.Actor_Apollo, MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\Gui\\\\Actors\\\\Apollo\", flags: TextureFlags.IgnoreQuality), null, MyMwcObjectBuilder_FactionEnum.Rainiers, \"Player\"));\n            m_actorProperties.Add((int)MyActorEnum.MARCUS, new MyActorProperties(MyTextsWrapperEnum.Actor_Marcus, MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\Gui\\\\Actors\\\\Marcus\", flags: TextureFlags.IgnoreQuality), null, MyMwcObjectBuilder_FactionEnum.Rainiers, \"Marcus\"));\n            m_actorProperties.Add((int)MyActorEnum.EacSurveySite_StationOperator, new MyActorProperties(MyTextsWrapperEnum.Actor_EacSurveySite_StationOperator, MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\Gui\\\\Actors\\\\pc_voice\", flags: TextureFlags.IgnoreQuality), null, MyMwcObjectBuilder_FactionEnum.Euroamerican));\n            m_actorProperties.Add((int)MyActorEnum.EacSurveySite_MilitaryOfficer, new MyActorProperties(MyTextsWrapperEnum.Actor_EacSurveySite_MilitaryOfficer, MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\Gui\\\\Actors\\\\Officer\", flags: TextureFlags.IgnoreQuality), null, MyMwcObjectBuilder_FactionEnum.Euroamerican));\n            m_actorProperties.Add((int)MyActorEnum.EacSurveySite_MilitaryCaptain, new MyActorProperties(MyTextsWrapperEnum.Actor_EacSurveySite_MilitaryCaptain, null, null, MyMwcObjectBuilder_FactionEnum.Euroamerican));\n            m_actorProperties.Add((int)MyActorEnum.MADELYN, new MyActorProperties(MyTextsWrapperEnum.Actor_Madelyn, MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\Gui\\\\Actors\\\\Madelyn\", flags: TextureFlags.IgnoreQuality), null, MyMwcObjectBuilder_FactionEnum.Rainiers, \"Madelyn\"));\n            m_actorProperties.Add((int)MyActorEnum.Researcher1, new MyActorProperties(MyTextsWrapperEnum.Actor_Researcher1, null, null, MyMwcObjectBuilder_FactionEnum.Euroamerican));\n            m_actorProperties.Add((int)MyActorEnum.Researcher2, new MyActorProperties(MyTextsWrapperEnum.Actor_Researcher2, null, null, MyMwcObjectBuilder_FactionEnum.Euroamerican));\n            m_actorProperties.Add((int)MyActorEnum.RussianCF1, new MyActorProperties(MyTextsWrapperEnum.Actor_RussianCF1, null, null, MyMwcObjectBuilder_FactionEnum.Russian_KGB));\n            m_actorProperties.Add((int)MyActorEnum.RussianCF2, new MyActorProperties(MyTextsWrapperEnum.Actor_RussianCF2, null, null, MyMwcObjectBuilder_FactionEnum.Russian_KGB));\n            m_actorProperties.Add((int)MyActorEnum.RussianGeneral, new MyActorProperties(MyTextsWrapperEnum.Actor_RussianGeneral, null, null, MyMwcObjectBuilder_FactionEnum.Russian_KGB));\n            m_actorProperties.Add((int)MyActorEnum.RussianCaptain, new MyActorProperties(MyTextsWrapperEnum.Actor_RussianCaptain, null, null, MyMwcObjectBuilder_FactionEnum.Russian_KGB));\n            m_actorProperties.Add((int)MyActorEnum.LAIKA_OPERATOR, new MyActorProperties(MyTextsWrapperEnum.Actor_LaikaOperator, null, null, MyMwcObjectBuilder_FactionEnum.Russian));\n            m_actorProperties.Add((int)MyActorEnum.TemplarPatriarchLamorak, new MyActorProperties(MyTextsWrapperEnum.Actor_TemplarPatriarchLamorak, MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\Gui\\\\Actors\\\\Templar\", flags: TextureFlags.IgnoreQuality), null, MyMwcObjectBuilder_FactionEnum.Templars));\n            m_actorProperties.Add((int)MyActorEnum.TemplarSirBedivere, new MyActorProperties(MyTextsWrapperEnum.Actor_TemplarSirBedivere, MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\Gui\\\\Actors\\\\Templar\", flags: TextureFlags.IgnoreQuality), null, MyMwcObjectBuilder_FactionEnum.Templars));\n            m_actorProperties.Add((int)MyActorEnum.LorraineCardin, new MyActorProperties(MyTextsWrapperEnum.Actor_Lorraine, MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\Gui\\\\Actors\\\\LorraineCardin\", flags: TextureFlags.IgnoreQuality), null, MyMwcObjectBuilder_FactionEnum.Pirates));\n            m_actorProperties.Add((int)MyActorEnum.TemplarGuard, new MyActorProperties(MyTextsWrapperEnum.Actor_TemplarGuard, MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\Gui\\\\Actors\\\\TemplarGuard\", flags: TextureFlags.IgnoreQuality), null, MyMwcObjectBuilder_FactionEnum.Templars));\n            m_actorProperties.Add((int)MyActorEnum.SmugglerInformator, new MyActorProperties(MyTextsWrapperEnum.Actor_SmugglerInformator, null, null, MyMwcObjectBuilder_FactionEnum.None));\n            //m_actorProperties.Add((int)MyActorEnum.MANJEET, new MyActorProperties(MyTextsWrapperEnum.Actor_IndianSmuggler, MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\Gui\\\\Actors\\\\Manjeet_Lata\", flags: TextureFlags.IgnoreQuality), null, MyMwcObjectBuilder_FactionEnum.Rainiers));\n            m_actorProperties.Add((int)MyActorEnum.TheCrook, new MyActorProperties(MyTextsWrapperEnum.Actor_TheCrook, MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\Gui\\\\Actors\\\\Officer\", flags: TextureFlags.IgnoreQuality), null, MyMwcObjectBuilder_FactionEnum.Slavers));\n            m_actorProperties.Add((int)MyActorEnum.ChineseGuard, new MyActorProperties(MyTextsWrapperEnum.Actor_ChineseGuard, null, null, MyMwcObjectBuilder_FactionEnum.China));\n            m_actorProperties.Add((int)MyActorEnum.TARJA, new MyActorProperties(MyTextsWrapperEnum.Actor_RavenGirl, MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\Gui\\\\Actors\\\\BlackRaven_Tarja\", flags: TextureFlags.IgnoreQuality), null, MyMwcObjectBuilder_FactionEnum.Rainiers, \"RavenGirl\"));\n            m_actorProperties.Add((int)MyActorEnum.VALENTIN, new MyActorProperties(MyTextsWrapperEnum.Actor_RavenGuy, MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\Gui\\\\Actors\\\\BlackRaven_Valentin\", flags: TextureFlags.IgnoreQuality), null, MyMwcObjectBuilder_FactionEnum.Rainiers, \"RavenGuy\"));\n            m_actorProperties.Add((int)MyActorEnum.Slave, new MyActorProperties(MyTextsWrapperEnum.Actor_Slave, null, null, MyMwcObjectBuilder_FactionEnum.Templars));\n            m_actorProperties.Add((int)MyActorEnum.SPEEDSTER, new MyActorProperties(MyTextsWrapperEnum.Actor_RaceChallenger, null, null, MyMwcObjectBuilder_FactionEnum.Traders, \"Challenger\"));\n\n            m_actorProperties.Add((int)MyActorEnum.EAC_CAPTAIN_FEMALE, new MyActorProperties(MyTextsWrapperEnum.Actor_EAC_Police_Mothership_Commander_F, MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\Gui\\\\Actors\\\\EAC_Police_Mothership_Commander_F\", flags: TextureFlags.IgnoreQuality), null, MyMwcObjectBuilder_FactionEnum.Euroamerican));\n            m_actorProperties.Add((int)MyActorEnum.EAC_CAPTAIN, new MyActorProperties(MyTextsWrapperEnum.Actor_EAC_Police_Mothership_Commander_M, MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\Gui\\\\Actors\\\\EAC_Police_Mothership_Commander_M\", flags: TextureFlags.IgnoreQuality), null, MyMwcObjectBuilder_FactionEnum.Euroamerican));\n            m_actorProperties.Add((int)MyActorEnum.FATHER_TOBIAS, new MyActorProperties(MyTextsWrapperEnum.Actor_Father_Tobias_Last_Hope, MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\Gui\\\\Actors\\\\Father_Tobias-Last_Hope\", flags: TextureFlags.IgnoreQuality), null, MyMwcObjectBuilder_FactionEnum.Church));\n            m_actorProperties.Add((int)MyActorEnum.Fourth_Reich_Colone_2, new MyActorProperties(MyTextsWrapperEnum.Actor_Fourth_Reich_Colone_2, MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\Gui\\\\Actors\\\\Fourth_Reich_Colone_2\", flags: TextureFlags.IgnoreQuality), null, MyMwcObjectBuilder_FactionEnum.FourthReich));\n            m_actorProperties.Add((int)MyActorEnum.FRANCIS_REEF, new MyActorProperties(MyTextsWrapperEnum.Actor_Francis_Reef, MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\Gui\\\\Actors\\\\Francis_Reef\", flags: TextureFlags.IgnoreQuality), null, MyMwcObjectBuilder_FactionEnum.Omnicorp));\n            m_actorProperties.Add((int)MyActorEnum.MANJEET, new MyActorProperties(MyTextsWrapperEnum.Actor_Manjeet_Lata, MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\Gui\\\\Actors\\\\Manjeet_Lata\", flags: TextureFlags.IgnoreQuality), null, MyMwcObjectBuilder_FactionEnum.India, \"Manjeet\"));\n            m_actorProperties.Add((int)MyActorEnum.THOMAS, new MyActorProperties(MyTextsWrapperEnum.Actor_Thomas_Barth, MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\Gui\\\\Actors\\\\Thomas_Barth\", flags: TextureFlags.IgnoreQuality), null, MyMwcObjectBuilder_FactionEnum.Rainiers));\n            m_actorProperties.Add((int)MyActorEnum.White_Wolves_General_2, new MyActorProperties(MyTextsWrapperEnum.Actor_White_Wolves_General_2, MyTextureManager.GetTexture<MyTexture2D>(\"Textures\\\\Gui\\\\Actors\\\\White_Wolves_General_2\", flags: TextureFlags.IgnoreQuality), null, MyMwcObjectBuilder_FactionEnum.WhiteWolves));\n            m_actorProperties.Add((int)MyActorEnum.RiftOperator, new MyActorProperties(MyTextsWrapperEnum.Actor_Rift_Operator, null, null, MyMwcObjectBuilder_FactionEnum.Omnicorp));\n            m_actorProperties.Add((int)MyActorEnum.RiftTourist, new MyActorProperties(MyTextsWrapperEnum.Actor_Rift_Tourist, null, null, MyMwcObjectBuilder_FactionEnum.Omnicorp));\n\n            m_actorProperties.Add((int)MyActorEnum.ShouterReichJE, new MyActorProperties(MyTextsWrapperEnum.ShouterReichJE, null, null, MyMwcObjectBuilder_FactionEnum.FourthReich));\n            m_actorProperties.Add((int)MyActorEnum.ShouterRussianJE, new MyActorProperties(MyTextsWrapperEnum.ShouterReichJE, null, null, MyMwcObjectBuilder_FactionEnum.FourthReich));\n            m_actorProperties.Add((int)MyActorEnum.CHINESE_OFFICER, new MyActorProperties(MyTextsWrapperEnum.ChineseOfficer, null, null, MyMwcObjectBuilder_FactionEnum.China));\n            m_actorProperties.Add((int)MyActorEnum.BLONDI, new MyActorProperties(MyTextsWrapperEnum.Blondi, null, null, MyMwcObjectBuilder_FactionEnum.FourthReich));\n            m_actorProperties.Add((int)MyActorEnum.RAIDER, new MyActorProperties(MyTextsWrapperEnum.Raider, null, null, MyMwcObjectBuilder_FactionEnum.Slavers));\n\n            m_actorProperties.Add((int)MyActorEnum.RussianGeneralRecording, new MyActorProperties(MyTextsWrapperEnum.Actor_RussianGeneral_Recording, null, null, MyMwcObjectBuilder_FactionEnum.Russian_KGB));\n            m_actorProperties.Add((int)MyActorEnum.RussianHeadquartersRecording, new MyActorProperties(MyTextsWrapperEnum.Actor_RussianGeneral_Headquarters, null, null, MyMwcObjectBuilder_FactionEnum.Russian_KGB));\n\n            m_actorProperties.Add((int)MyActorEnum.VOLODIA_STRANGER, new MyActorProperties(MyTextsWrapperEnum.VolodiaStranger, null, null, MyMwcObjectBuilder_FactionEnum.Traders));\n            m_actorProperties.Add((int)MyActorEnum.VOLODIA, new MyActorProperties(MyTextsWrapperEnum.Volodia, null, null, MyMwcObjectBuilder_FactionEnum.Traders));\n\n            m_actorProperties.Add((int)MyActorEnum.SLAVER_BASE_CAPTAIN, new MyActorProperties(MyTextsWrapperEnum.SlaverBaseCaptain, null, null, MyMwcObjectBuilder_FactionEnum.Slavers));\n\n            m_actorProperties.Add((int)MyActorEnum.CEDRIC, new MyActorProperties(MyTextsWrapperEnum.Cedric, null, null, MyMwcObjectBuilder_FactionEnum.Templars));\n            m_actorProperties.Add((int)MyActorEnum.GATEKEEPER, new MyActorProperties(MyTextsWrapperEnum.GateKeeper, null, null, MyMwcObjectBuilder_FactionEnum.Templars));\n\n            m_actorProperties.Add((int)MyActorEnum.SLAVER_LEADER, new MyActorProperties(MyTextsWrapperEnum.SlaverLeader, null, null, MyMwcObjectBuilder_FactionEnum.Slavers));\n            m_actorProperties.Add((int)MyActorEnum.SLAVER_COLE, new MyActorProperties(MyTextsWrapperEnum.SlaverCole, null, null, MyMwcObjectBuilder_FactionEnum.Slavers));\n            m_actorProperties.Add((int)MyActorEnum.SLAVER_JEFF, new MyActorProperties(MyTextsWrapperEnum.SlaverJeff, null, null, MyMwcObjectBuilder_FactionEnum.Slavers));\n            m_actorProperties.Add((int)MyActorEnum.CAPTIVE, new MyActorProperties(MyTextsWrapperEnum.Captive, null, null, MyMwcObjectBuilder_FactionEnum.Church));\n            m_actorProperties.Add((int)MyActorEnum.CAPTIVE_PILOT, new MyActorProperties(MyTextsWrapperEnum.CaptivePilot, null, null, MyMwcObjectBuilder_FactionEnum.Church));\n            m_actorProperties.Add((int)MyActorEnum.ZAPPAS_GANGMAN, new MyActorProperties(MyTextsWrapperEnum.ZappasGangman, null, null, MyMwcObjectBuilder_FactionEnum.Traders));\n            m_actorProperties.Add((int)MyActorEnum.MOMO_ZAPPA, new MyActorProperties(MyTextsWrapperEnum.MomoZappa, null, null, MyMwcObjectBuilder_FactionEnum.Slavers));\n            m_actorProperties.Add((int)MyActorEnum.DEALER, new MyActorProperties(MyTextsWrapperEnum.Dealer, null, null, MyMwcObjectBuilder_FactionEnum.Traders));\n            m_actorProperties.Add((int)MyActorEnum.GANGSTER, new MyActorProperties(MyTextsWrapperEnum.Gangster, null, null, MyMwcObjectBuilder_FactionEnum.Traders));\n            m_actorProperties.Add((int)MyActorEnum.CHINESE_COMMANDO, new MyActorProperties(MyTextsWrapperEnum.ChineseCommando, null, null, MyMwcObjectBuilder_FactionEnum.China));\n            m_actorProperties.Add((int)MyActorEnum.WALTHER, new MyActorProperties(MyTextsWrapperEnum.WaltherStaufenberg, null, null, MyMwcObjectBuilder_FactionEnum.FourthReich));\n            m_actorProperties.Add((int)MyActorEnum.TRANSPORTER_CAPTAIN, new MyActorProperties(MyTextsWrapperEnum.TransporterCaptain, null, null, MyMwcObjectBuilder_FactionEnum.FourthReich));\n            m_actorProperties.Add((int)MyActorEnum.ERHARD, new MyActorProperties(MyTextsWrapperEnum.Erhard, null, null, MyMwcObjectBuilder_FactionEnum.FourthReich));\n            m_actorProperties.Add((int)MyActorEnum.FOR_CAPTAIN, new MyActorProperties(MyTextsWrapperEnum.FORCaptain, null, null, MyMwcObjectBuilder_FactionEnum.FourthReich));\n            m_actorProperties.Add((int)MyActorEnum.CHINESE_PILOT, new MyActorProperties(MyTextsWrapperEnum.ChinesePilot, null, null, MyMwcObjectBuilder_FactionEnum.China));\n            m_actorProperties.Add((int)MyActorEnum.RAIDER_LEADER, new MyActorProperties(MyTextsWrapperEnum.RaiderLeader, null, null, MyMwcObjectBuilder_FactionEnum.FourthReich));\n            m_actorProperties.Add((int)MyActorEnum.RAIDER_NAVIGATOR, new MyActorProperties(MyTextsWrapperEnum.RaiderNavigator, null, null, MyMwcObjectBuilder_FactionEnum.FourthReich));\n\n\n            m_actorProperties.Add((int)MyActorEnum.SIR_GERAINT, new MyActorProperties(MyTextsWrapperEnum.SIR_GERAINT, null, null, MyMwcObjectBuilder_FactionEnum.Templars));\n            m_actorProperties.Add((int)MyActorEnum.COUNCIL_GUARD, new MyActorProperties(MyTextsWrapperEnum.COUNCIL_GUARD, null, null, MyMwcObjectBuilder_FactionEnum.Templars));\n\n            m_actorProperties.Add((int)MyActorEnum.PATRIARCH_CARADOC, new MyActorProperties(MyTextsWrapperEnum.PATRIARCH_CARADOC, null, null, MyMwcObjectBuilder_FactionEnum.Templars));\n            m_actorProperties.Add((int)MyActorEnum.PATRIARCH_DAGONET, new MyActorProperties(MyTextsWrapperEnum.PATRIARCH_DAGONET, null, null, MyMwcObjectBuilder_FactionEnum.Templars));\n            m_actorProperties.Add((int)MyActorEnum.PATRIARCH_LAMORAK, new MyActorProperties(MyTextsWrapperEnum.PATRIARCH_LAMORAK, null, null, MyMwcObjectBuilder_FactionEnum.Templars));\n            m_actorProperties.Add((int)MyActorEnum.UNKNOWN, new MyActorProperties(MyTextsWrapperEnum.UNKNOWN, null, null, MyMwcObjectBuilder_FactionEnum.Templars));\n            m_actorProperties.Add((int)MyActorEnum.EVERYONE, new MyActorProperties(MyTextsWrapperEnum.Everyone, null, null, MyMwcObjectBuilder_FactionEnum.Rainiers));\n            m_actorProperties.Add((int)MyActorEnum.RUSSIAN_GENERAL, new MyActorProperties(MyTextsWrapperEnum.RussianGeneral, null, null, MyMwcObjectBuilder_FactionEnum.Russian_KGB));\n\n            m_actorProperties.Add((int)MyActorEnum.PIRATE_MALE, new MyActorProperties(MyTextsWrapperEnum.Pirate, null, null, MyMwcObjectBuilder_FactionEnum.Pirates));\n            m_actorProperties.Add((int)MyActorEnum.PIRATE2_MALE, new MyActorProperties(MyTextsWrapperEnum.Pirate, null, null, MyMwcObjectBuilder_FactionEnum.Pirates));\n            m_actorProperties.Add((int)MyActorEnum.CLEGG, new MyActorProperties(MyTextsWrapperEnum.PirateCaptainClegg, null, null, MyMwcObjectBuilder_FactionEnum.Pirates));\n            m_actorProperties.Add((int)MyActorEnum.VANE, new MyActorProperties(MyTextsWrapperEnum.PirateCaptainVane, null, null, MyMwcObjectBuilder_FactionEnum.Pirates));\n            m_actorProperties.Add((int)MyActorEnum.GORG, new MyActorProperties(MyTextsWrapperEnum.PirateCaptainGorg, null, null, MyMwcObjectBuilder_FactionEnum.Pirates));\n\n            m_actorProperties.Add((int)MyActorEnum.RIME_CLIENT1, new MyActorProperties(MyTextsWrapperEnum.Actor_RimeClient1, null, null, MyMwcObjectBuilder_FactionEnum.Omnicorp));\n            m_actorProperties.Add((int)MyActorEnum.RIME_CLIENT2, new MyActorProperties(MyTextsWrapperEnum.Actor_RimeClient2, null, null, MyMwcObjectBuilder_FactionEnum.Omnicorp));\n            m_actorProperties.Add((int)MyActorEnum.RIME_CLIENT3, new MyActorProperties(MyTextsWrapperEnum.Actor_RimeClient3, null, null, MyMwcObjectBuilder_FactionEnum.Omnicorp));\n            m_actorProperties.Add((int)MyActorEnum.RIME_BOUNCER, new MyActorProperties(MyTextsWrapperEnum.Actor_RimeBouncer, null, null, MyMwcObjectBuilder_FactionEnum.Omnicorp));\n            m_actorProperties.Add((int)MyActorEnum.RIME_BARKEEPER, new MyActorProperties(MyTextsWrapperEnum.Actor_RimeBarkeeper, null, null, MyMwcObjectBuilder_FactionEnum.Omnicorp));\n            m_actorProperties.Add((int)MyActorEnum.RIME_MITCHEL, new MyActorProperties(MyTextsWrapperEnum.Actor_RimeMitchel, null, null, MyMwcObjectBuilder_FactionEnum.Omnicorp));\n            m_actorProperties.Add((int)MyActorEnum.RIME_SMUGGLER, new MyActorProperties(MyTextsWrapperEnum.Actor_RimeSmuggler, null, null, MyMwcObjectBuilder_FactionEnum.Omnicorp));\n            m_actorProperties.Add((int)MyActorEnum.RIME_GUARD, new MyActorProperties(MyTextsWrapperEnum.Actor_RimeGuard, null, null, MyMwcObjectBuilder_FactionEnum.Omnicorp));\n\n            m_actorProperties.Add((int)MyActorEnum.REICHSTAG_OFFICER, new MyActorProperties(MyTextsWrapperEnum.Actor_ReichstagOfficer, null, null, MyMwcObjectBuilder_FactionEnum.FourthReich));\n            m_actorProperties.Add((int)MyActorEnum.REICHSTAG_CAPTAIN, new MyActorProperties(MyTextsWrapperEnum.Actor_ReichstagCaptain, null, null, MyMwcObjectBuilder_FactionEnum.FourthReich));\n\n            m_actorProperties.Add((int)MyActorEnum.RESEARCH_VESSEL_CAPTAIN, new MyActorProperties(MyTextsWrapperEnum.ResearchVesselCaptain, null, null, MyMwcObjectBuilder_FactionEnum.Euroamerican));\n\n\n            foreach (var actorProperties in m_actorProperties)\n            {\n                System.Diagnostics.Debug.Assert(MyTextsWrapper.Get(actorProperties.Value.DisplayName).Length <= MAX_ACTORNAME_LENGTH);\n            }\n        }\n\n        public static MyTextsWrapperEnum GetActorDisplayName(MyActorEnum actor)\n        {\n            return GetActorProperties(actor).DisplayName;\n        }\n\n        public static string GetActorName(MyActorEnum actor)\n        {\n            return GetActorProperties(actor).Name;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/World/Global/MyFactionConstants.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Localization;\nusing SysUtils.Utils;\nusing MinerWars.AppCode.Game.TransparentGeometry;\n\nnamespace MinerWars.AppCode.Game.World.Global\n{\n    class MyFactionProperties\n    {\n        public MyFactionProperties(\n            MyTextsWrapperEnum NameEnum,\n            MyTextsWrapperEnum DescriptionEnum,\n            MyTransparentMaterialEnum? SolarMapIcon)\n        {\n            this.NameEnum = NameEnum;\n            this.DescriptionEnum = DescriptionEnum;\n            this.SolarMapIcon = SolarMapIcon;\n        }\n\n        public readonly MyTextsWrapperEnum NameEnum;\n        public readonly MyTextsWrapperEnum DescriptionEnum;\n        public readonly MyTransparentMaterialEnum? SolarMapIcon;\n\n        public StringBuilder Name\n        {\n            get { return MyTextsWrapper.Get(NameEnum); }\n        }\n\n        public StringBuilder Description\n        {\n            get { return MyTextsWrapper.Get(DescriptionEnum); }\n        }\n\n    }\n\n    static class MyFactionConstants\n    {\n        static readonly Dictionary<int, MyFactionProperties> m_factions = new Dictionary<int, MyFactionProperties>();\n\n        static MyFactionConstants()\n        {\n            m_factions[(int)MyMwcObjectBuilder_FactionEnum.None] = new MyFactionProperties(\n                NameEnum: MyTextsWrapperEnum.FactionNone,\n                DescriptionEnum: MyTextsWrapperEnum.General,\n                SolarMapIcon: null\n                );\n\n            m_factions[(int)MyMwcObjectBuilder_FactionEnum.Euroamerican] = new MyFactionProperties(\n                NameEnum: MyTextsWrapperEnum.FactionEuroamerican,\n                DescriptionEnum: MyTextsWrapperEnum.General,\n                SolarMapIcon: MyTransparentMaterialEnum.FactionEAC\n                );\n      \n            m_factions[(int)MyMwcObjectBuilder_FactionEnum.China] = new MyFactionProperties(\n                NameEnum: MyTextsWrapperEnum.FactionChinese,\n                DescriptionEnum: MyTextsWrapperEnum.General,\n                SolarMapIcon: MyTransparentMaterialEnum.FactionChina\n                );\n\n            m_factions[(int)MyMwcObjectBuilder_FactionEnum.FourthReich] = new MyFactionProperties(\n                NameEnum:  MyTextsWrapperEnum.FactionFourthReich,\n                DescriptionEnum: MyTextsWrapperEnum.General,\n                SolarMapIcon: null\n                );\n\n            m_factions[(int)MyMwcObjectBuilder_FactionEnum.Omnicorp] = new MyFactionProperties(\n                NameEnum: MyTextsWrapperEnum.FactionOmnicorp,\n                DescriptionEnum: MyTextsWrapperEnum.General,\n                SolarMapIcon: null\n                );\n         \n            m_factions[(int)MyMwcObjectBuilder_FactionEnum.Russian] = new MyFactionProperties(\n                NameEnum: MyTextsWrapperEnum.FactionRussian,\n                DescriptionEnum: MyTextsWrapperEnum.General,\n                SolarMapIcon: MyTransparentMaterialEnum.FactionRussia\n                );\n\n            m_factions[(int)MyMwcObjectBuilder_FactionEnum.Japan] = new MyFactionProperties(\n                NameEnum: MyTextsWrapperEnum.FactionJapan,\n                DescriptionEnum: MyTextsWrapperEnum.General,\n                SolarMapIcon: MyTransparentMaterialEnum.FactionJapan\n                );\n\n            m_factions[(int)MyMwcObjectBuilder_FactionEnum.India] = new MyFactionProperties(\n                NameEnum: MyTextsWrapperEnum.FactionIndia,\n                DescriptionEnum: MyTextsWrapperEnum.General,\n                SolarMapIcon: MyTransparentMaterialEnum.FactionIndia\n                );\n\n            m_factions[(int)MyMwcObjectBuilder_FactionEnum.Saudi] = new MyFactionProperties(\n                NameEnum: MyTextsWrapperEnum.FactionSaudi,\n                DescriptionEnum: MyTextsWrapperEnum.General,\n                SolarMapIcon: MyTransparentMaterialEnum.FactionSaudi\n                );\n      \n            m_factions[(int)MyMwcObjectBuilder_FactionEnum.Church] = new MyFactionProperties(\n                NameEnum: MyTextsWrapperEnum.FactionChurch,\n                DescriptionEnum: MyTextsWrapperEnum.General,\n                SolarMapIcon: MyTransparentMaterialEnum.FactionChurch\n                );\n\n            m_factions[(int)MyMwcObjectBuilder_FactionEnum.FSRE] = new MyFactionProperties(\n                NameEnum: MyTextsWrapperEnum.FactionFSRE,\n                DescriptionEnum: MyTextsWrapperEnum.General,\n                SolarMapIcon: null\n                );\n\n            m_factions[(int)MyMwcObjectBuilder_FactionEnum.FreeAsia] = new MyFactionProperties(\n                NameEnum: MyTextsWrapperEnum.FactionFreeAsia,\n                DescriptionEnum: MyTextsWrapperEnum.General,\n                SolarMapIcon: MyTransparentMaterialEnum.FactionFreeAsia\n                );\n\n            m_factions[(int)MyMwcObjectBuilder_FactionEnum.Pirates] = new MyFactionProperties(\n                NameEnum: MyTextsWrapperEnum.FactionPirate,\n                DescriptionEnum: MyTextsWrapperEnum.General,\n                SolarMapIcon: null\n                );\n\n            m_factions[(int)MyMwcObjectBuilder_FactionEnum.Miners] = new MyFactionProperties(\n                NameEnum: MyTextsWrapperEnum.FactionMiners,\n                DescriptionEnum: MyTextsWrapperEnum.General,\n                SolarMapIcon: null\n                );\n\n            m_factions[(int)MyMwcObjectBuilder_FactionEnum.Freelancers] = new MyFactionProperties(\n                NameEnum: MyTextsWrapperEnum.FactionFreelancers,\n                DescriptionEnum: MyTextsWrapperEnum.General,\n                SolarMapIcon: null\n                );\n\n            m_factions[(int)MyMwcObjectBuilder_FactionEnum.Ravens] = new MyFactionProperties(\n                NameEnum: MyTextsWrapperEnum.FactionRavens,\n                DescriptionEnum: MyTextsWrapperEnum.General,\n                SolarMapIcon: null\n                );\n\n            m_factions[(int)MyMwcObjectBuilder_FactionEnum.Traders] = new MyFactionProperties(\n                NameEnum: MyTextsWrapperEnum.FactionTraders,\n                DescriptionEnum: MyTextsWrapperEnum.General,\n                SolarMapIcon: null\n                );\n\n            m_factions[(int)MyMwcObjectBuilder_FactionEnum.Syndicate] = new MyFactionProperties(\n                NameEnum: MyTextsWrapperEnum.FactionSyndicate,\n                DescriptionEnum: MyTextsWrapperEnum.General,\n                SolarMapIcon: null\n                );\n\n            m_factions[(int)MyMwcObjectBuilder_FactionEnum.Templars] = new MyFactionProperties(\n                NameEnum: MyTextsWrapperEnum.FactionTemplars,\n                DescriptionEnum: MyTextsWrapperEnum.General,\n                SolarMapIcon: null\n                );\n\n            m_factions[(int)MyMwcObjectBuilder_FactionEnum.Rangers] = new MyFactionProperties(\n                NameEnum: MyTextsWrapperEnum.FactionRangers,\n                DescriptionEnum: MyTextsWrapperEnum.General,\n                SolarMapIcon: null\n                );\n\n            m_factions[(int)MyMwcObjectBuilder_FactionEnum.TTLtd] = new MyFactionProperties(\n                NameEnum: MyTextsWrapperEnum.FactionTTLtd,\n                DescriptionEnum: MyTextsWrapperEnum.General,\n                SolarMapIcon: null\n                );\n\n            m_factions[(int)MyMwcObjectBuilder_FactionEnum.SMLtd] = new MyFactionProperties(\n                NameEnum: MyTextsWrapperEnum.FactionSMLtd,\n                DescriptionEnum: MyTextsWrapperEnum.General,\n                SolarMapIcon: null\n                );\n\n            m_factions[(int)MyMwcObjectBuilder_FactionEnum.CSR] = new MyFactionProperties(\n                NameEnum: MyTextsWrapperEnum.FactionCSR,\n                DescriptionEnum: MyTextsWrapperEnum.General,\n                SolarMapIcon: MyTransparentMaterialEnum.FactionCSR\n                );\n\n            m_factions[(int)MyMwcObjectBuilder_FactionEnum.Russian_KGB] = new MyFactionProperties(\n                NameEnum: MyTextsWrapperEnum.FactionRussianKGB,\n                DescriptionEnum: MyTextsWrapperEnum.General,\n                SolarMapIcon: MyTransparentMaterialEnum.FactionRussia\n                );\n\n            m_factions[(int)MyMwcObjectBuilder_FactionEnum.Slavers] = new MyFactionProperties(\n                NameEnum: MyTextsWrapperEnum.FactionSlavers,\n                DescriptionEnum: MyTextsWrapperEnum.General,\n                SolarMapIcon: MyTransparentMaterialEnum.FactionSlavers\n                );\n\n            m_factions[(int)MyMwcObjectBuilder_FactionEnum.WhiteWolves] = new MyFactionProperties(\n                NameEnum: MyTextsWrapperEnum.FactionWhiteWolves,\n                DescriptionEnum: MyTextsWrapperEnum.General,\n                SolarMapIcon: MyTransparentMaterialEnum.FactionFourthReich\n                );\n\n            m_factions[(int)MyMwcObjectBuilder_FactionEnum.Rainiers] = new MyFactionProperties(\n                NameEnum: MyTextsWrapperEnum.FactionRainiers,\n                DescriptionEnum: MyTextsWrapperEnum.General,\n                SolarMapIcon: null\n                );            \n\n            foreach (MyMwcObjectBuilder_FactionEnum faction in Enum.GetValues(typeof(MyMwcObjectBuilder_FactionEnum)))\n            {\n                System.Diagnostics.Debug.Assert(m_factions[(int)faction] != null);\n            }\n        }\n\n        public static MyFactionProperties GetFactionProperties(MyMwcObjectBuilder_FactionEnum faction)\n        {\n            return m_factions[(int)faction];\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/World/Global/MyFactions.cs",
    "content": "﻿#region Using\n\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Localization;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.SolarSystem;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing System.Diagnostics;\n\n#endregion\n\nnamespace MinerWars.AppCode.Game.World.Global\n{\n    public enum MyFactionRelationEnum\n    {\n        Neutral,\n        Friend,\n        Enemy\n    }\n\n    delegate void MyFactionStatusChangeHandler(MyMwcObjectBuilder_FactionEnum faction1, MyMwcObjectBuilder_FactionEnum faction2, MyFactionRelationEnum previousRelation, bool display, bool save);\n\n    class MyFactionRelationChanges \n    {\n        private Dictionary<int, float> m_factionRelationChanges;\n\n        public MyFactionRelationChanges() \n        {\n            m_factionRelationChanges = new Dictionary<int, float>();\n            MyFactions.OnFactionStatusChanged += MyFactions_OnFactionStatusChanged;\n        }\n\n        void MyFactions_OnFactionStatusChanged(MyMwcObjectBuilder_FactionEnum faction1, MyMwcObjectBuilder_FactionEnum faction2, MyFactionRelationEnum previousRelation, bool display, bool save)\n        {\n            if (!save) \n            {\n                return;\n            }\n\n            float relation = MyFactions.GetFactionsStatus(faction1, faction2);\n            AddFactionRelationChange(faction1, faction2, relation);\n        }\n\n        public void Init(List<MyMwcObjectBuilder_FactionRelationChange> factionRelationChangesBuilders) \n        {\n            m_factionRelationChanges.Clear();\n            MyFactions.SetDefaultFactionRelations();\n            if (factionRelationChangesBuilders != null) \n            {\n                foreach (MyMwcObjectBuilder_FactionRelationChange factionChangeBuilder in factionRelationChangesBuilders) \n                {\n                    MyFactions.SetFactionStatus(factionChangeBuilder.Faction1, factionChangeBuilder.Faction2, factionChangeBuilder.Relation, false, false);\n                    AddFactionRelationChange(factionChangeBuilder.Faction1, factionChangeBuilder.Faction2, factionChangeBuilder.Relation);\n                }\n            }\n        }\n\n        public List<MyMwcObjectBuilder_FactionRelationChange> GetObjectBuilders() \n        {\n            List<MyMwcObjectBuilder_FactionRelationChange> builders = new List<MyMwcObjectBuilder_FactionRelationChange>();\n            foreach (var factionRelationChangeKVP in m_factionRelationChanges) \n            {\n                int faction1;\n                int faction2;\n                GetSingleFactionsFromKey(factionRelationChangeKVP.Key, out faction1, out faction2);                \n                builders.Add(new MyMwcObjectBuilder_FactionRelationChange((MyMwcObjectBuilder_FactionEnum)faction1, (MyMwcObjectBuilder_FactionEnum)faction2, factionRelationChangeKVP.Value));\n            }\n            return builders;\n        }\n\n        public void AddFactionRelationChange(MyMwcObjectBuilder_FactionEnum faction1, MyMwcObjectBuilder_FactionEnum faction2, float relation) \n        {\n            Debug.Assert(Enum.IsDefined(typeof(MyMwcObjectBuilder_FactionEnum), faction1));\n            Debug.Assert(Enum.IsDefined(typeof(MyMwcObjectBuilder_FactionEnum), faction2));\n            int key = (int)faction1 + (int)faction2;\n            m_factionRelationChanges[key] = relation;\n        }\n\n        private void GetSingleFactionsFromKey(int key, out int faction1, out int faction2) \n        {\n            Debug.Assert(key > 0);\n            // if key is power of two, then both factions are same, so we simply devide key by 2 and get faction ids\n            if (MyUtils.IsPowerOfTwo(key))\n            {\n                faction1 = (int)key / 2;\n                faction2 = faction1;\n            }\n            // we must parse key to two single faction keys\n            else \n            {\n                int currentBit = 0;\n                int tempKey = key;\n                while ((tempKey & 1) == 0) \n                {\n                    tempKey = tempKey >> 1;\n                    currentBit++;\n                }\n                faction1 = Convert.ToInt32(Math.Pow(2, currentBit));\n                faction2 = key - faction1;\n                Debug.Assert(faction1 < faction2);\n                Debug.Assert(MyUtils.IsPowerOfTwo(faction1));\n                Debug.Assert(MyUtils.IsPowerOfTwo(faction2));\n            }\n        }\n    }\n\n    static class MyFactions\n    {\n        public static readonly float RELATION_BEST = 100.0f;\n        public static readonly float RELATION_WORST = -RELATION_BEST;\n        public static readonly float RELATION_NEUTRAL = 0.0f;\n        static readonly float RELATION_CHANGE_LIMIT = RELATION_BEST / 3.0f;\n\n        private static Dictionary<int, float> factionRelations = new Dictionary<int,float>();\n\n        public static Dictionary<MyMwcObjectBuilder_FactionEnum, List<MySolarSystemAreaCircle>> FactionAreas = new Dictionary<MyMwcObjectBuilder_FactionEnum, List<MySolarSystemAreaCircle>>();\n\n        public static event MyFactionStatusChangeHandler OnFactionStatusChanged;\n\n\n        static MyFactions()\n        {\n            SetDefaultFactionRelations();\n\n            MyFactions.AddFactionArea(MyMwcObjectBuilder_FactionEnum.China, new MyMwcVector3Int(12, 0, 6000628), new MyMwcVector3Int(13409, 0, 3419905));\n            MyFactions.AddFactionArea(MyMwcObjectBuilder_FactionEnum.China, new MyMwcVector3Int(2167627, 0, 5387610), new MyMwcVector3Int(2109338, 0, 3016775));\n            MyFactions.AddFactionArea(MyMwcObjectBuilder_FactionEnum.China, new MyMwcVector3Int(-4054358, 0, 5475041), new MyMwcVector3Int(-4099872, 0, 3654850));\n            MyFactions.AddFactionArea(MyMwcObjectBuilder_FactionEnum.China, new MyMwcVector3Int(-6055079, 0, 3907279), new MyMwcVector3Int(-6173565, 0, 3119871));\n            MyFactions.AddFactionArea(MyMwcObjectBuilder_FactionEnum.China, new MyMwcVector3Int(-6852048, 0, 4878122), new MyMwcVector3Int(-7795791, 0, 4012553));\n            MyFactions.AddFactionArea(MyMwcObjectBuilder_FactionEnum.China, new MyMwcVector3Int(5703553, 0, 5213674), new MyMwcVector3Int(5029116, 0, 3661471));\n            MyFactions.AddFactionArea(MyMwcObjectBuilder_FactionEnum.China, new MyMwcVector3Int(7165896, 0, 4945381), new MyMwcVector3Int(8561420, 0, 4025749));\n            MyFactions.AddFactionArea(MyMwcObjectBuilder_FactionEnum.China, new MyMwcVector3Int(-2114427, 0, 4494547), new MyMwcVector3Int(-2856448, 0, 3427536));\n\n            // Japan\n            MyFactions.AddFactionArea(MyMwcObjectBuilder_FactionEnum.Japan, new MyMwcVector3Int(-4666176, 0, 2466197), new MyMwcVector3Int(-5668797, 0, 2479710));\n            MyFactions.AddFactionArea(MyMwcObjectBuilder_FactionEnum.Japan, new MyMwcVector3Int(-3310097, 0, 2073593), new MyMwcVector3Int(-3972079, 0, 1341741));\n            MyFactions.AddFactionArea(MyMwcObjectBuilder_FactionEnum.Japan, new MyMwcVector3Int(-2063037, 0, 1339653), new MyMwcVector3Int(-2470618, 0, 480253));\n            MyFactions.AddFactionArea(MyMwcObjectBuilder_FactionEnum.Japan, new MyMwcVector3Int(-816287, 0, 970481), new MyMwcVector3Int(-253031, 0, 513138));\n\n            // Russian (big)\n            MyFactions.AddFactionArea(MyMwcObjectBuilder_FactionEnum.Russian, new MyMwcVector3Int(-4871927, 0, 108326), new MyMwcVector3Int(-3564747, 0, 188456));\n            MyFactions.AddFactionArea(MyMwcObjectBuilder_FactionEnum.Russian, new MyMwcVector3Int(-816287, 0, 970481), new MyMwcVector3Int(-253031, 0, 513138));\n            MyFactions.AddFactionArea(MyMwcObjectBuilder_FactionEnum.Russian, new MyMwcVector3Int(-4871927, 0, 108326), new MyMwcVector3Int(-3564747, 0, 188456));\n            MyFactions.AddFactionArea(MyMwcObjectBuilder_FactionEnum.Russian, new MyMwcVector3Int(-7377930, 0, -441385), new MyMwcVector3Int(-5962388, 0, 1304672));\n            MyFactions.AddFactionArea(MyMwcObjectBuilder_FactionEnum.Russian, new MyMwcVector3Int(-3947845, 0, -2884561), new MyMwcVector3Int(-2781340, 0, -2865117));\n            MyFactions.AddFactionArea(MyMwcObjectBuilder_FactionEnum.Russian, new MyMwcVector3Int(-5386304, 0, -2422359), new MyMwcVector3Int(-4032327, 0, -1149616));\n            MyFactions.AddFactionArea(MyMwcObjectBuilder_FactionEnum.Russian, new MyMwcVector3Int(-7412801, 0, -2601904), new MyMwcVector3Int(-9605882, 0, -3161623));\n            MyFactions.AddFactionArea(MyMwcObjectBuilder_FactionEnum.Russian, new MyMwcVector3Int(-7280842, 0, 1453435), new MyMwcVector3Int(-5983624, 0, 1947463));\n\n            // Russian (small)\n            MyFactions.AddFactionArea(MyMwcObjectBuilder_FactionEnum.Russian, new MyMwcVector3Int(-8032678, 0, -14758447), new MyMwcVector3Int(-7152894, 0, -14040552));\n            MyFactions.AddFactionArea(MyMwcObjectBuilder_FactionEnum.Russian, new MyMwcVector3Int(-7981811, 0, -12971666), new MyMwcVector3Int(-6949493, 0, -12987050));\n            MyFactions.AddFactionArea(MyMwcObjectBuilder_FactionEnum.Russian, new MyMwcVector3Int(-10248150, 0, -12471650), new MyMwcVector3Int(-11237972, 0, -12522836));\n            MyFactions.AddFactionArea(MyMwcObjectBuilder_FactionEnum.Russian, new MyMwcVector3Int(-9086259, 0, -12891244), new MyMwcVector3Int(-9718906, 0, -13955482));\n\n            // Omnicorp\n            MyFactions.AddFactionArea(MyMwcObjectBuilder_FactionEnum.Omnicorp, new MyMwcVector3Int(-1945539, 0, -2807118), new MyMwcVector3Int(-1892624, 0, -2130414));\n            MyFactions.AddFactionArea(MyMwcObjectBuilder_FactionEnum.Omnicorp, new MyMwcVector3Int(-1912096, 0, -3341886), new MyMwcVector3Int(-2155405, 0, -3785692));\n\n            // Church\n            MyFactions.AddFactionArea(MyMwcObjectBuilder_FactionEnum.Church, new MyMwcVector3Int(-569382, 0, -3031033), new MyMwcVector3Int(-521602, 0, -2611809));\n            MyFactions.AddFactionArea(MyMwcObjectBuilder_FactionEnum.Church, new MyMwcVector3Int(-988461, 0, -3321858), new MyMwcVector3Int(-1313928, 0, -3408147));\n            MyFactions.AddFactionArea(MyMwcObjectBuilder_FactionEnum.Church, new MyMwcVector3Int(-492798, 0, -3504602), new MyMwcVector3Int(-471304, 0, -3920244));\n            MyFactions.AddFactionArea(MyMwcObjectBuilder_FactionEnum.Church, new MyMwcVector3Int(228751, 0, -3606207), new MyMwcVector3Int(397605, 0, -3597475));\n            MyFactions.AddFactionArea(MyMwcObjectBuilder_FactionEnum.Church, new MyMwcVector3Int(-69992, 0, -3621656), new MyMwcVector3Int(-137178, 0, -3833507));\n\n            // India\n            MyFactions.AddFactionArea(MyMwcObjectBuilder_FactionEnum.India, new MyMwcVector3Int(277498, 0, -3070444), new MyMwcVector3Int(-2781, 0, -3023197));\n            MyFactions.AddFactionArea(MyMwcObjectBuilder_FactionEnum.India, new MyMwcVector3Int(814694, 0, -3608626), new MyMwcVector3Int(750106, 0, -3951543));\n            MyFactions.AddFactionArea(MyMwcObjectBuilder_FactionEnum.India, new MyMwcVector3Int(996950, 0, -3352236), new MyMwcVector3Int(1176372, 0, -3240055));\n            MyFactions.AddFactionArea(MyMwcObjectBuilder_FactionEnum.India, new MyMwcVector3Int(598473, 0, -3208199), new MyMwcVector3Int(754717, 0, -3045766));\n\n            // CSA\n            MyFactions.AddFactionArea(MyMwcObjectBuilder_FactionEnum.CSR, new MyMwcVector3Int(1494718, 0, -2915172), new MyMwcVector3Int(1441631, 0, -3215190));\n            MyFactions.AddFactionArea(MyMwcObjectBuilder_FactionEnum.CSR, new MyMwcVector3Int(666887, 0, -2734957), new MyMwcVector3Int(554523, 0, -2716677));\n            MyFactions.AddFactionArea(MyMwcObjectBuilder_FactionEnum.CSR, new MyMwcVector3Int(896845, 0, -2756189), new MyMwcVector3Int(716027, 0, -2753495));\n            MyFactions.AddFactionArea(MyMwcObjectBuilder_FactionEnum.CSR, new MyMwcVector3Int(1162376, 0, -2766549), new MyMwcVector3Int(1066061, 0, -3000389));\n            MyFactions.AddFactionArea(MyMwcObjectBuilder_FactionEnum.CSR, new MyMwcVector3Int(1607692, 0, -2526706), new MyMwcVector3Int(1697584, 0, -2401605));\n            MyFactions.AddFactionArea(MyMwcObjectBuilder_FactionEnum.CSR, new MyMwcVector3Int(1392698, 0, -2561914), new MyMwcVector3Int(1350447, 0, -2443647));\n\n            // Free Asia\n            MyFactions.AddFactionArea(MyMwcObjectBuilder_FactionEnum.FreeAsia, new MyMwcVector3Int(2162385, 0, 1421199), new MyMwcVector3Int(1416741, 0, 1165825));\n            MyFactions.AddFactionArea(MyMwcObjectBuilder_FactionEnum.FreeAsia, new MyMwcVector3Int(3272464, 0, 1966436), new MyMwcVector3Int(3322784, 0, 993374));\n            MyFactions.AddFactionArea(MyMwcObjectBuilder_FactionEnum.FreeAsia, new MyMwcVector3Int(4701632, 0, 2358537), new MyMwcVector3Int(4022155, 0, 1347735));\n            MyFactions.AddFactionArea(MyMwcObjectBuilder_FactionEnum.FreeAsia, new MyMwcVector3Int(6318033, 0, 1847447), new MyMwcVector3Int(5935336, 0, 513165));\n            MyFactions.AddFactionArea(MyMwcObjectBuilder_FactionEnum.FreeAsia, new MyMwcVector3Int(7778733, 0, 2393269), new MyMwcVector3Int(8385517, 0, 1658808));\n            MyFactions.AddFactionArea(MyMwcObjectBuilder_FactionEnum.FreeAsia, new MyMwcVector3Int(8596998, 0, 2673515), new MyMwcVector3Int(9118643, 0, 2938421));\n\n            // Saudi\n            MyFactions.AddFactionArea(MyMwcObjectBuilder_FactionEnum.Saudi, new MyMwcVector3Int(3824627, 0, 255605), new MyMwcVector3Int(3475509, 0, 872033));\n            MyFactions.AddFactionArea(MyMwcObjectBuilder_FactionEnum.Saudi, new MyMwcVector3Int(4713796, 0, -579639), new MyMwcVector3Int(3784609, 0, -1015429));\n            MyFactions.AddFactionArea(MyMwcObjectBuilder_FactionEnum.Saudi, new MyMwcVector3Int(7112188, 0, -2094201), new MyMwcVector3Int(7083625, 0, -2753659));\n            MyFactions.AddFactionArea(MyMwcObjectBuilder_FactionEnum.Saudi, new MyMwcVector3Int(8023985, 0, -805066), new MyMwcVector3Int(8838674, 0, 16894));\n            MyFactions.AddFactionArea(MyMwcObjectBuilder_FactionEnum.Saudi, new MyMwcVector3Int(6443938, 0, -729983), new MyMwcVector3Int(6063638, 0, -1673893));\n\n            // EAC\n            MyFactions.AddFactionArea(MyMwcObjectBuilder_FactionEnum.Euroamerican, new MyMwcVector3Int(3116722, 0, -1051613), new MyMwcVector3Int(3091186, 0, -557804));\n            MyFactions.AddFactionArea(MyMwcObjectBuilder_FactionEnum.Euroamerican, new MyMwcVector3Int(2964639, 0, -2366072), new MyMwcVector3Int(2155348, 0, -1610213));\n            MyFactions.AddFactionArea(MyMwcObjectBuilder_FactionEnum.Euroamerican, new MyMwcVector3Int(4938446, 0, -3433059), new MyMwcVector3Int(5795179, 0, -2047777));\n            MyFactions.AddFactionArea(MyMwcObjectBuilder_FactionEnum.Euroamerican, new MyMwcVector3Int(7779578, 0, -3618802), new MyMwcVector3Int(7943016, 0, -2740004));\n            MyFactions.AddFactionArea(MyMwcObjectBuilder_FactionEnum.Euroamerican, new MyMwcVector3Int(4774381, 0, -6768201), new MyMwcVector3Int(4463081, 0, -7480576));\n            MyFactions.AddFactionArea(MyMwcObjectBuilder_FactionEnum.Euroamerican, new MyMwcVector3Int(3622641, 0, -3346375), new MyMwcVector3Int(2634877, 0, -4441870));\n            MyFactions.AddFactionArea(MyMwcObjectBuilder_FactionEnum.Euroamerican, new MyMwcVector3Int(4293091, 0, -5539791), new MyMwcVector3Int(3306538, 0, -5312297));\n            MyFactions.AddFactionArea(MyMwcObjectBuilder_FactionEnum.Euroamerican, new MyMwcVector3Int(5685522, 0, -5537412), new MyMwcVector3Int(6499658, 0, -6470099));\n            MyFactions.AddFactionArea(MyMwcObjectBuilder_FactionEnum.Euroamerican, new MyMwcVector3Int(6815761, 0, -4504176), new MyMwcVector3Int(7439527, 0, -5794846));\n\n            // Fourth Reich\n            MyFactions.AddFactionArea(MyMwcObjectBuilder_FactionEnum.FourthReich, new MyMwcVector3Int(-628383, 0, -7618224), new MyMwcVector3Int(105376, 0, -7489735));\n            MyFactions.AddFactionArea(MyMwcObjectBuilder_FactionEnum.FourthReich, new MyMwcVector3Int(-4389532, 0, -7139655), new MyMwcVector3Int(-3900251, 0, -7624956));\n            MyFactions.AddFactionArea(MyMwcObjectBuilder_FactionEnum.FourthReich, new MyMwcVector3Int(-3085567, 0, -7221794), new MyMwcVector3Int(-3639853, 0, -6476816));\n            MyFactions.AddFactionArea(MyMwcObjectBuilder_FactionEnum.FourthReich, new MyMwcVector3Int(-1732205, 0, -7461265), new MyMwcVector3Int(-1946837, 0, -8297581));\n            MyFactions.AddFactionArea(MyMwcObjectBuilder_FactionEnum.FourthReich, new MyMwcVector3Int(-5506731, 1, -5747794), new MyMwcVector3Int(-5892479, 1, -4537935));\n            MyFactions.AddFactionArea(MyMwcObjectBuilder_FactionEnum.FourthReich, new MyMwcVector3Int(-2629225, 1, -4408927), new MyMwcVector3Int(-2517023, 1, -3792671));\n            MyFactions.AddFactionArea(MyMwcObjectBuilder_FactionEnum.FourthReich, new MyMwcVector3Int(-3449581, 1, -5140484), new MyMwcVector3Int(-3796470, 1, -4432502));\n            MyFactions.AddFactionArea(MyMwcObjectBuilder_FactionEnum.FourthReich, new MyMwcVector3Int(-4286110, 1, -5766817), new MyMwcVector3Int(-3017383, 1, -5823697));\n            MyFactions.AddFactionArea(MyMwcObjectBuilder_FactionEnum.FourthReich, new MyMwcVector3Int(3227865, 1, -7020252), new MyMwcVector3Int(3864361, 1, -6894070));\n            MyFactions.AddFactionArea(MyMwcObjectBuilder_FactionEnum.FourthReich, new MyMwcVector3Int(2191387, 1, -7403781), new MyMwcVector3Int(2783604, 1, -8286921));\n            MyFactions.AddFactionArea(MyMwcObjectBuilder_FactionEnum.FourthReich, new MyMwcVector3Int(514850, 1, -7183047), new MyMwcVector3Int(554362, 1, -6226234));\n        }\n\n        public static void SetDefaultFactionRelations()\n        {\n            //Relationships inside factions\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.None, MyMwcObjectBuilder_FactionEnum.None, 0, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Euroamerican, MyMwcObjectBuilder_FactionEnum.Euroamerican, RELATION_BEST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.China, MyMwcObjectBuilder_FactionEnum.China, RELATION_BEST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.FourthReich, MyMwcObjectBuilder_FactionEnum.FourthReich, RELATION_BEST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Omnicorp, MyMwcObjectBuilder_FactionEnum.Omnicorp, RELATION_BEST, false, false);\n\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Russian, MyMwcObjectBuilder_FactionEnum.Russian, RELATION_BEST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Japan, MyMwcObjectBuilder_FactionEnum.Japan, RELATION_BEST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.India, MyMwcObjectBuilder_FactionEnum.India, RELATION_BEST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Saudi, MyMwcObjectBuilder_FactionEnum.Saudi, RELATION_BEST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Church, MyMwcObjectBuilder_FactionEnum.Church, RELATION_BEST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.FSRE, MyMwcObjectBuilder_FactionEnum.FSRE, RELATION_BEST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.FreeAsia, MyMwcObjectBuilder_FactionEnum.FreeAsia, RELATION_BEST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.CSR, MyMwcObjectBuilder_FactionEnum.CSR, RELATION_BEST, false, false);\n\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Pirates, MyMwcObjectBuilder_FactionEnum.Pirates, RELATION_BEST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Miners, MyMwcObjectBuilder_FactionEnum.Miners, RELATION_BEST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Freelancers, MyMwcObjectBuilder_FactionEnum.Freelancers, RELATION_BEST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Ravens, MyMwcObjectBuilder_FactionEnum.Ravens, RELATION_BEST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Traders, MyMwcObjectBuilder_FactionEnum.Traders, RELATION_BEST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Syndicate, MyMwcObjectBuilder_FactionEnum.Syndicate, RELATION_BEST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Templars, MyMwcObjectBuilder_FactionEnum.Templars, RELATION_BEST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Rangers, MyMwcObjectBuilder_FactionEnum.Rangers, RELATION_BEST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.TTLtd, MyMwcObjectBuilder_FactionEnum.TTLtd, RELATION_BEST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.SMLtd, MyMwcObjectBuilder_FactionEnum.SMLtd, RELATION_BEST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Slavers, MyMwcObjectBuilder_FactionEnum.Slavers, RELATION_BEST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.WhiteWolves, MyMwcObjectBuilder_FactionEnum.WhiteWolves, RELATION_BEST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Rainiers, MyMwcObjectBuilder_FactionEnum.Rainiers, RELATION_BEST, false, false);\n\n            //Euroamerican relationships\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Euroamerican, MyMwcObjectBuilder_FactionEnum.China, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Euroamerican, MyMwcObjectBuilder_FactionEnum.FourthReich, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Euroamerican, MyMwcObjectBuilder_FactionEnum.Pirates, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Euroamerican, MyMwcObjectBuilder_FactionEnum.Syndicate, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Euroamerican, MyMwcObjectBuilder_FactionEnum.Omnicorp, RELATION_BEST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Euroamerican, MyMwcObjectBuilder_FactionEnum.India, RELATION_BEST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Euroamerican, MyMwcObjectBuilder_FactionEnum.Saudi, RELATION_BEST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Euroamerican, MyMwcObjectBuilder_FactionEnum.Church, RELATION_BEST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Euroamerican, MyMwcObjectBuilder_FactionEnum.FSRE, RELATION_BEST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Euroamerican, MyMwcObjectBuilder_FactionEnum.FreeAsia, RELATION_BEST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Euroamerican, MyMwcObjectBuilder_FactionEnum.CSR, RELATION_BEST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Euroamerican, MyMwcObjectBuilder_FactionEnum.Slavers, RELATION_WORST, false, false);\n\n            //Chinese relationships                                 \n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.China, MyMwcObjectBuilder_FactionEnum.FourthReich, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.China, MyMwcObjectBuilder_FactionEnum.Omnicorp, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.China, MyMwcObjectBuilder_FactionEnum.Japan, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.China, MyMwcObjectBuilder_FactionEnum.FSRE, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.China, MyMwcObjectBuilder_FactionEnum.FreeAsia, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.China, MyMwcObjectBuilder_FactionEnum.Pirates, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.China, MyMwcObjectBuilder_FactionEnum.Syndicate, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.China, MyMwcObjectBuilder_FactionEnum.Freelancers, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.China, MyMwcObjectBuilder_FactionEnum.Slavers, RELATION_WORST, false, false);\n\n\n            //Fourth reich relationships                                 \n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.FourthReich, MyMwcObjectBuilder_FactionEnum.Russian, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.FourthReich, MyMwcObjectBuilder_FactionEnum.Church, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.FourthReich, MyMwcObjectBuilder_FactionEnum.FreeAsia, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.FourthReich, MyMwcObjectBuilder_FactionEnum.FSRE, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.FourthReich, MyMwcObjectBuilder_FactionEnum.CSR, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.FourthReich, MyMwcObjectBuilder_FactionEnum.Pirates, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.FourthReich, MyMwcObjectBuilder_FactionEnum.Syndicate, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.FourthReich, MyMwcObjectBuilder_FactionEnum.Slavers, RELATION_WORST, false, false);\n\n            //Omnicorp relationships                                 \n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Omnicorp, MyMwcObjectBuilder_FactionEnum.Pirates, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Omnicorp, MyMwcObjectBuilder_FactionEnum.Syndicate, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Omnicorp, MyMwcObjectBuilder_FactionEnum.Slavers, RELATION_WORST, false, false);\n\n            //Russian relationships                                 \n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Russian, MyMwcObjectBuilder_FactionEnum.Japan, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Russian, MyMwcObjectBuilder_FactionEnum.Saudi, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Russian, MyMwcObjectBuilder_FactionEnum.FreeAsia, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Russian, MyMwcObjectBuilder_FactionEnum.FSRE, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Russian, MyMwcObjectBuilder_FactionEnum.CSR, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Russian, MyMwcObjectBuilder_FactionEnum.Pirates, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Russian, MyMwcObjectBuilder_FactionEnum.Syndicate, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Russian, MyMwcObjectBuilder_FactionEnum.Slavers, RELATION_WORST, false, false);\n\n            //Japan relationships                                 \n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Japan, MyMwcObjectBuilder_FactionEnum.FreeAsia, RELATION_BEST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Japan, MyMwcObjectBuilder_FactionEnum.FSRE, RELATION_BEST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Japan, MyMwcObjectBuilder_FactionEnum.Pirates, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Japan, MyMwcObjectBuilder_FactionEnum.Syndicate, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Japan, MyMwcObjectBuilder_FactionEnum.Slavers, RELATION_WORST, false, false);\n\n            //India relationships                                 \n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.India, MyMwcObjectBuilder_FactionEnum.Pirates, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.India, MyMwcObjectBuilder_FactionEnum.Syndicate, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.India, MyMwcObjectBuilder_FactionEnum.Slavers, RELATION_WORST, false, false);\n\n            //Saudi relationships                                 \n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Saudi, MyMwcObjectBuilder_FactionEnum.Pirates, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Saudi, MyMwcObjectBuilder_FactionEnum.Syndicate, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Saudi, MyMwcObjectBuilder_FactionEnum.Slavers, RELATION_WORST, false, false);\n\n            //Church relationships                                 \n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Church, MyMwcObjectBuilder_FactionEnum.Pirates, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Church, MyMwcObjectBuilder_FactionEnum.Syndicate, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Church, MyMwcObjectBuilder_FactionEnum.Slavers, RELATION_WORST, false, false);\n\n            //FreeAsia relationships                                 \n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.FreeAsia, MyMwcObjectBuilder_FactionEnum.Pirates, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.FreeAsia, MyMwcObjectBuilder_FactionEnum.Syndicate, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.FreeAsia, MyMwcObjectBuilder_FactionEnum.Slavers, RELATION_WORST, false, false);\n\n            //FSRE relationships                                 \n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.FSRE, MyMwcObjectBuilder_FactionEnum.Pirates, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.FSRE, MyMwcObjectBuilder_FactionEnum.Syndicate, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.FSRE, MyMwcObjectBuilder_FactionEnum.Slavers, RELATION_WORST, false, false);\n\n            //Pirates relationships                                 \n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Pirates, MyMwcObjectBuilder_FactionEnum.Miners, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Pirates, MyMwcObjectBuilder_FactionEnum.Freelancers, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Pirates, MyMwcObjectBuilder_FactionEnum.Ravens, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Pirates, MyMwcObjectBuilder_FactionEnum.Traders, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Pirates, MyMwcObjectBuilder_FactionEnum.Syndicate, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Pirates, MyMwcObjectBuilder_FactionEnum.Templars, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Pirates, MyMwcObjectBuilder_FactionEnum.Rangers, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Pirates, MyMwcObjectBuilder_FactionEnum.TTLtd, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Pirates, MyMwcObjectBuilder_FactionEnum.SMLtd, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Pirates, MyMwcObjectBuilder_FactionEnum.Slavers, RELATION_WORST, false, false);\n\n            //Russian KGB relationships                                 \n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Russian_KGB, MyMwcObjectBuilder_FactionEnum.Russian, RELATION_BEST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Russian_KGB, MyMwcObjectBuilder_FactionEnum.Freelancers, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Russian_KGB, MyMwcObjectBuilder_FactionEnum.Ravens, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Russian_KGB, MyMwcObjectBuilder_FactionEnum.Traders, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Russian_KGB, MyMwcObjectBuilder_FactionEnum.Syndicate, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Russian_KGB, MyMwcObjectBuilder_FactionEnum.Templars, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Russian_KGB, MyMwcObjectBuilder_FactionEnum.Rangers, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Russian_KGB, MyMwcObjectBuilder_FactionEnum.TTLtd, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Russian_KGB, MyMwcObjectBuilder_FactionEnum.SMLtd, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Russian_KGB, MyMwcObjectBuilder_FactionEnum.Euroamerican, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Russian_KGB, MyMwcObjectBuilder_FactionEnum.China, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Russian_KGB, MyMwcObjectBuilder_FactionEnum.Miners, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Russian_KGB, MyMwcObjectBuilder_FactionEnum.FourthReich, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Russian_KGB, MyMwcObjectBuilder_FactionEnum.Omnicorp, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Russian_KGB, MyMwcObjectBuilder_FactionEnum.Saudi, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Russian_KGB, MyMwcObjectBuilder_FactionEnum.Pirates, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Russian_KGB, MyMwcObjectBuilder_FactionEnum.Slavers, RELATION_WORST, false, false);\n\n            //White wolves relationships                                 \n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.WhiteWolves, MyMwcObjectBuilder_FactionEnum.Russian, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.WhiteWolves, MyMwcObjectBuilder_FactionEnum.Freelancers, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.WhiteWolves, MyMwcObjectBuilder_FactionEnum.Ravens, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.WhiteWolves, MyMwcObjectBuilder_FactionEnum.Traders, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.WhiteWolves, MyMwcObjectBuilder_FactionEnum.Syndicate, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.WhiteWolves, MyMwcObjectBuilder_FactionEnum.Templars, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.WhiteWolves, MyMwcObjectBuilder_FactionEnum.Rangers, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.WhiteWolves, MyMwcObjectBuilder_FactionEnum.TTLtd, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.WhiteWolves, MyMwcObjectBuilder_FactionEnum.SMLtd, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.WhiteWolves, MyMwcObjectBuilder_FactionEnum.Euroamerican, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.WhiteWolves, MyMwcObjectBuilder_FactionEnum.China, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.WhiteWolves, MyMwcObjectBuilder_FactionEnum.Miners, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.WhiteWolves, MyMwcObjectBuilder_FactionEnum.FourthReich, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.WhiteWolves, MyMwcObjectBuilder_FactionEnum.Omnicorp, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.WhiteWolves, MyMwcObjectBuilder_FactionEnum.Saudi, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.WhiteWolves, MyMwcObjectBuilder_FactionEnum.Pirates, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.WhiteWolves, MyMwcObjectBuilder_FactionEnum.Slavers, RELATION_WORST, false, false);\n\n            //Syndicate relationships                                 \n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Syndicate, MyMwcObjectBuilder_FactionEnum.Miners, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Syndicate, MyMwcObjectBuilder_FactionEnum.Freelancers, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Syndicate, MyMwcObjectBuilder_FactionEnum.Ravens, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Syndicate, MyMwcObjectBuilder_FactionEnum.Traders, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Syndicate, MyMwcObjectBuilder_FactionEnum.Miners, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Syndicate, MyMwcObjectBuilder_FactionEnum.Templars, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Syndicate, MyMwcObjectBuilder_FactionEnum.Rangers, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Syndicate, MyMwcObjectBuilder_FactionEnum.TTLtd, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Syndicate, MyMwcObjectBuilder_FactionEnum.SMLtd, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Syndicate, MyMwcObjectBuilder_FactionEnum.Slavers, RELATION_WORST, false, false);\n\n\n            //Slavers\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Slavers, MyMwcObjectBuilder_FactionEnum.Freelancers, RELATION_WORST, false, false);\n\n            //Freelancers\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Freelancers, MyMwcObjectBuilder_FactionEnum.Russian, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Freelancers, MyMwcObjectBuilder_FactionEnum.Ravens, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Freelancers, MyMwcObjectBuilder_FactionEnum.Traders, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Freelancers, MyMwcObjectBuilder_FactionEnum.Syndicate, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Freelancers, MyMwcObjectBuilder_FactionEnum.Templars, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Freelancers, MyMwcObjectBuilder_FactionEnum.Rangers, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Freelancers, MyMwcObjectBuilder_FactionEnum.TTLtd, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Freelancers, MyMwcObjectBuilder_FactionEnum.SMLtd, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Freelancers, MyMwcObjectBuilder_FactionEnum.Euroamerican, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Freelancers, MyMwcObjectBuilder_FactionEnum.China, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Freelancers, MyMwcObjectBuilder_FactionEnum.Miners, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Freelancers, MyMwcObjectBuilder_FactionEnum.FourthReich, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Freelancers, MyMwcObjectBuilder_FactionEnum.Omnicorp, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Freelancers, MyMwcObjectBuilder_FactionEnum.Pirates, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Freelancers, MyMwcObjectBuilder_FactionEnum.Slavers, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Freelancers, MyMwcObjectBuilder_FactionEnum.FreeAsia, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Freelancers, MyMwcObjectBuilder_FactionEnum.FSRE, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Freelancers, MyMwcObjectBuilder_FactionEnum.Church, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Freelancers, MyMwcObjectBuilder_FactionEnum.Saudi, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Freelancers, MyMwcObjectBuilder_FactionEnum.India, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Freelancers, MyMwcObjectBuilder_FactionEnum.Russian_KGB, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Freelancers, MyMwcObjectBuilder_FactionEnum.Japan, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Freelancers, MyMwcObjectBuilder_FactionEnum.None, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Freelancers, MyMwcObjectBuilder_FactionEnum.Rainiers, RELATION_WORST, false, false);\n\n            //Rainiers relationships                                 \n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Rainiers, MyMwcObjectBuilder_FactionEnum.Russian, RELATION_NEUTRAL, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Rainiers, MyMwcObjectBuilder_FactionEnum.Freelancers, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Rainiers, MyMwcObjectBuilder_FactionEnum.Ravens, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Rainiers, MyMwcObjectBuilder_FactionEnum.Traders, RELATION_NEUTRAL, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Rainiers, MyMwcObjectBuilder_FactionEnum.Syndicate, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Rainiers, MyMwcObjectBuilder_FactionEnum.Templars, RELATION_NEUTRAL, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Rainiers, MyMwcObjectBuilder_FactionEnum.Rangers, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Rainiers, MyMwcObjectBuilder_FactionEnum.TTLtd, RELATION_NEUTRAL, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Rainiers, MyMwcObjectBuilder_FactionEnum.SMLtd, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Rainiers, MyMwcObjectBuilder_FactionEnum.Euroamerican, RELATION_BEST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Rainiers, MyMwcObjectBuilder_FactionEnum.China, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Rainiers, MyMwcObjectBuilder_FactionEnum.Miners, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Rainiers, MyMwcObjectBuilder_FactionEnum.FourthReich, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Rainiers, MyMwcObjectBuilder_FactionEnum.Omnicorp, RELATION_BEST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Rainiers, MyMwcObjectBuilder_FactionEnum.Pirates, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Rainiers, MyMwcObjectBuilder_FactionEnum.Slavers, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Rainiers, MyMwcObjectBuilder_FactionEnum.FreeAsia, RELATION_BEST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Rainiers, MyMwcObjectBuilder_FactionEnum.FSRE, RELATION_BEST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Rainiers, MyMwcObjectBuilder_FactionEnum.Church, RELATION_BEST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Rainiers, MyMwcObjectBuilder_FactionEnum.Saudi, RELATION_BEST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Rainiers, MyMwcObjectBuilder_FactionEnum.India, RELATION_BEST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Rainiers, MyMwcObjectBuilder_FactionEnum.Russian_KGB, RELATION_WORST, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Rainiers, MyMwcObjectBuilder_FactionEnum.Japan, RELATION_NEUTRAL, false, false);\n            SetFactionStatus(MyMwcObjectBuilder_FactionEnum.Rainiers, MyMwcObjectBuilder_FactionEnum.None, RELATION_NEUTRAL, false, false);\n        }\n\n        public static void AddFactionArea(MyMwcObjectBuilder_FactionEnum faction, MyMwcVector3Int center, MyMwcVector3Int point)\n        {\n            List<MySolarSystemAreaCircle> areas;\n            if (!FactionAreas.TryGetValue(faction, out areas))\n            {\n                areas = new List<MySolarSystemAreaCircle>();\n                FactionAreas.Add(faction, areas);\n            }\n\n            areas.Add(new MySolarSystemAreaCircle\n            {\n                Position = MySolarSystemUtils.SectorsToKm(center),\n                Radius = (MySolarSystemUtils.SectorsToKm(center) - MySolarSystemUtils.SectorsToKm(point)).Length()\n            });\n        }\n\n        public static void RemoveFactionArea(MyMwcObjectBuilder_FactionEnum faction, int index)\n        {\n            var areas = FactionAreas[faction];\n            if (areas == null)\n            {\n                areas.RemoveAt(index);\n            }\n        }\n\n        public static float GetFactionsStatus(MyMwcObjectBuilder_FactionEnum faction1, MyMwcObjectBuilder_FactionEnum faction2)\n        {\n            float status = 0.0f;\n            factionRelations.TryGetValue((int)faction1 + (int)faction2, out status);\n            return status;\n        }\n\n        /// <summary>\n        /// Use this method to get relationship between two factions. If you want know relationship between two entities, you method below\n        /// </summary>\n        /// <param name=\"faction1\">Faction 1</param>\n        /// <param name=\"faction2\">Faction 2</param>\n        /// <returns></returns>\n        public static MyFactionRelationEnum GetFactionsRelation(MyMwcObjectBuilder_FactionEnum faction1, MyMwcObjectBuilder_FactionEnum faction2)\n        {\n            float status = GetFactionsStatus(faction1, faction2);\n\n            if (status < -RELATION_CHANGE_LIMIT)\n                return MyFactionRelationEnum.Enemy;\n\n            if (status > RELATION_CHANGE_LIMIT)\n                return MyFactionRelationEnum.Friend;\n\n            return MyFactionRelationEnum.Neutral;\n        }\n\n        /// <summary>\n        /// Use this method to get relationship between two entities\n        /// </summary>\n        /// <param name=\"hasFaction1\">Entity 1</param>\n        /// <param name=\"hasFaction2\">Entity 2</param>\n        /// <returns></returns>\n        public static MyFactionRelationEnum GetFactionsRelation(IMyHasFaction hasFaction1, IMyHasFaction hasFaction2) \n        {\n            Debug.Assert(hasFaction1 != hasFaction2);\n            MyFactionRelationEnum result;\n\n            if (MySession.Static != null && MySession.Static.Player != null && MySession.Static.Player.Ship != null)\n            {\n                if (hasFaction1.Faction == MySession.Static.Player.Faction && HasPlayerShipFalseFriendStatus(MySession.Static.Player.Ship as MySmallShip, hasFaction2))\n                {\n                    result = MyFactionRelationEnum.Friend;\n                }\n                else if (hasFaction2.Faction == MySession.Static.Player.Faction && HasPlayerShipFalseFriendStatus(MySession.Static.Player.Ship as MySmallShip, hasFaction1))\n                {\n                    result = MyFactionRelationEnum.Friend;\n                }\n                else\n                {\n                    result = GetFactionsRelation(hasFaction1.Faction, hasFaction2.Faction);\n                }\n            }\n            else \n            {\n                result = GetFactionsRelation(hasFaction1.Faction, hasFaction2.Faction);\n            }\n\n            return result;\n        }\n\n        private static bool HasPlayerShipFalseFriendStatus(MySmallShip playerShip, IMyHasFaction anotherFaction) \n        {\n            return (playerShip.FalseFactions & anotherFaction.Faction) != 0;\n            //foreach (MyMwcObjectBuilder_FactionEnum falseFaction in playerShip.FalseFactions) \n            //{\n            //    if (GetFactionsRelation(falseFaction, anotherFaction.Faction) == MyFactionRelationEnum.Friend) \n            //    {\n            //        return true;\n            //    }\n            //}\n            //return false;\n        }\n\n        public static void SetFactionStatus(MyMwcObjectBuilder_FactionEnum faction1, MyMwcObjectBuilder_FactionEnum faction2, float status, bool display = true, bool save = true)\n        {\n            status = MinerWarsMath.MathHelper.Clamp(status, RELATION_WORST, RELATION_BEST);\n\n            MyFactionRelationEnum oldRelation = GetFactionsRelation(faction1, faction2);            \n\n            factionRelations[(int)faction1 + (int)faction2] = status;\n\n            MyFactionRelationEnum newRelation = GetFactionsRelation(faction1, faction2);            \n\n            if ((oldRelation != newRelation) && (OnFactionStatusChanged != null))\n                OnFactionStatusChanged(faction1, faction2, oldRelation, display, save);\n        }\n\n\n        public static void ChangeFactionStatus(MyMwcObjectBuilder_FactionEnum faction1, MyMwcObjectBuilder_FactionEnum faction2, float statusDelta)\n        {\n            float oldStatus = GetFactionsStatus(faction1, faction2);\n            SetFactionStatus(faction1, faction2, oldStatus + statusDelta);\n        }\n\n        public static MyMwcObjectBuilder_FactionEnum GetFactionBySector(MyMwcVector3Int sectorPosition)\n        {\n            foreach (var factionItems in FactionAreas)\n            {\n                foreach (var area in factionItems.Value)\n                {\n                    if (area.IsSectorInArea(sectorPosition))\n                    {\n                        return factionItems.Key;\n                    }\n                }\n            }\n            return MyMwcObjectBuilder_FactionEnum.None;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/World/Global/MyGamePlayCheats.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.InfluenceSpheres;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.LargeShipTools;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.Prefabs;\nusing SysUtils.Utils;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Inventory;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.World.Global;\nusing MinerWars.AppCode.Game.Entities.SubObjects;\nusing System.Diagnostics;\n\nnamespace MinerWars.AppCode.Game.Gameplay\n{\n    [Flags]\n    internal enum MyGameplayCheatsEnum\n    {\n        PLAYER_SHIP_INDESTRUCTIBLE =    1 << 0,\n        PLAYER_HEALTH_INDESTRUCTIBLE =  1 << 1,\n        INFINITE_AMMO =                 1 << 2,\n        INFINITE_FUEL =                 1 << 3,\n        INFINITE_ELECTRICITY =          1 << 4,\n        ALL_WEAPONS =                   1 << 5,\n        ALL_BLUEPRINTS =                1 << 6,\n        KILL_ALL =                      1 << 7,\n        SEE_ALL =                       1 << 8,\n        ENEMY_CANT_DIE =                1 << 9,\n        FRIEND_NEUTRAL_CANT_DIE =       1 << 10,\n        //ALL_CHEATS_TO_COOP =            1 << 11,\n        EXTRA_MONEY =                   1 << 12,\n        INSTANT_BUILDING =              1 << 13,\n        INFINITE_OXYGEN =               1 << 14,\n        REMOVE_ALL_BLUEPRINTS =         1 << 15,\n        CLEAR_INVENTORY =               1 << 16,\n        FF_IN_INVENTORY =               1 << 17,\n        UNLIMITED_TRADING =             1 << 18,\n        INCREASE_CARGO_CAPACITY =       1 << 19,\n    }\n\n    internal struct MyGameplayCheat\n    {\n        public delegate void CheatEnabledDelegate(MyGameplayCheat cheat);\n\n        public CheatEnabledDelegate OnCheatEnabled;\n        public CheatEnabledDelegate OnCheatDisabled;\n        public MyGameplayCheatsEnum CheatEnum;\n        public MyTextsWrapperEnum CheatName;\n        public bool IsButton;\n        public bool IsImplemented;\n    }\n\n    static class MyGameplayCheats\n    {\n        static MyGameplayCheatsEnum m_enabledCheats;\n\n        internal static readonly List<MyGameplayCheat> AllCheats = new List<MyGameplayCheat>()\n        {\n            new MyGameplayCheat() \n            {\n                CheatEnum = MyGameplayCheatsEnum.PLAYER_SHIP_INDESTRUCTIBLE,\n                CheatName = MyTextsWrapperEnum.PlayerShipIndestructible,\n                IsButton = false,\n                IsImplemented = true,\n            },\n            new MyGameplayCheat() \n            {\n                CheatEnum = MyGameplayCheatsEnum.PLAYER_HEALTH_INDESTRUCTIBLE,\n                CheatName = MyTextsWrapperEnum.PlayerHealthIndestructible,\n                IsButton = false,\n                IsImplemented = true,\n            },\n            new MyGameplayCheat() \n            {\n                CheatEnum = MyGameplayCheatsEnum.INFINITE_AMMO,\n                CheatName = MyTextsWrapperEnum.InfiniteAmmo,\n                IsButton = false,\n                IsImplemented = true,\n            },\n            new MyGameplayCheat() \n            {\n                CheatEnum = MyGameplayCheatsEnum.INFINITE_FUEL,\n                CheatName = MyTextsWrapperEnum.InfiniteFuel,\n                IsButton = false,\n                IsImplemented = true,\n            },\n            //new MyGameplayCheat() \n            //{\n            //    CheatEnum = MyGameplayCheatsEnum.INFINITE_ELECTRICITY,\n            //    CheatName = MyTextsWrapperEnum.InfiniteElectricity,\n            //    IsButton = false,\n            //    IsImplemented = true,\n            //},      \n            new MyGameplayCheat()\n            {\n                CheatEnum = MyGameplayCheatsEnum.SEE_ALL,\n                CheatName = MyTextsWrapperEnum.SeeAll,\n                IsButton = false,\n                IsImplemented = true,\n            },\n            new MyGameplayCheat()\n            {\n                CheatEnum = MyGameplayCheatsEnum.ENEMY_CANT_DIE,\n                CheatName = MyTextsWrapperEnum.EnemyCantDie,\n                IsButton = false,\n                IsImplemented = true,\n            },\n            new MyGameplayCheat()\n            {\n                CheatEnum = MyGameplayCheatsEnum.FRIEND_NEUTRAL_CANT_DIE,\n                CheatName = MyTextsWrapperEnum.FriendNeutralCantDie,\n                IsButton = false,\n                IsImplemented = true,\n            },\n            new MyGameplayCheat() \n            {\n                CheatEnum = MyGameplayCheatsEnum.INFINITE_OXYGEN,\n                CheatName = MyTextsWrapperEnum.InfiniteOxygen,\n                IsButton = false,\n                IsImplemented = true,\n            },\n            new MyGameplayCheat()\n            {\n                CheatEnum = MyGameplayCheatsEnum.INSTANT_BUILDING,\n                CheatName = MyTextsWrapperEnum.InstantBuilding,\n                IsButton = false,\n                IsImplemented = true,\n            },\n            new MyGameplayCheat() \n            {\n                CheatEnum = MyGameplayCheatsEnum.UNLIMITED_TRADING,\n                CheatName = MyTextsWrapperEnum.UnlimitedTrading,\n                IsButton = false,\n                IsImplemented = true,\n            },\n            new MyGameplayCheat()\n            {\n                CheatEnum = MyGameplayCheatsEnum.INCREASE_CARGO_CAPACITY,\n                CheatName = MyTextsWrapperEnum.IncreaseCargoCapacity,\n                IsButton = false,\n                IsImplemented = true,\n                OnCheatEnabled = IncreaseCargoCapacityEnabled,\n                OnCheatDisabled = IncreaseCargoCapacityDisabled,\n            },\n            new MyGameplayCheat() \n            {\n                CheatEnum = MyGameplayCheatsEnum.ALL_WEAPONS,\n                CheatName = MyTextsWrapperEnum.AllWeapons,\n                IsButton = true,\n                OnCheatEnabled = AllWeaponsEnabled, \n                IsImplemented = true,\n            },\n            new MyGameplayCheat()\n            {\n                CheatEnum = MyGameplayCheatsEnum.ALL_BLUEPRINTS,\n                CheatName = MyTextsWrapperEnum.AllBlueprints,\n                IsButton = true,\n                OnCheatEnabled = AllBluePrintsEnabled,\n                IsImplemented = true,\n            },\n            new MyGameplayCheat()\n            {\n                CheatEnum = MyGameplayCheatsEnum.REMOVE_ALL_BLUEPRINTS,\n                CheatName = MyTextsWrapperEnum.RemoveAllBlueprints,\n                IsButton = true,\n                OnCheatEnabled = RemoveAllBluePrintsEnabled,\n                IsImplemented = true,\n            },\n            new MyGameplayCheat()\n            {\n                CheatEnum = MyGameplayCheatsEnum.KILL_ALL,\n                CheatName = MyTextsWrapperEnum.KillAll,\n                IsButton = true,\n                OnCheatEnabled = KillAllEnabled, \n                IsImplemented = true,\n            },\n            new MyGameplayCheat()\n            {\n                CheatEnum = MyGameplayCheatsEnum.EXTRA_MONEY,\n                CheatName = MyTextsWrapperEnum.ExtraMoney,\n                IsButton = true,\n                OnCheatEnabled = ExtraMoneyEnabled,\n                IsImplemented = true,\n            },\n            new MyGameplayCheat()\n            {\n                CheatEnum = MyGameplayCheatsEnum.CLEAR_INVENTORY,\n                CheatName = MyTextsWrapperEnum.ClearInventory,\n                IsButton = true,\n                OnCheatEnabled = ClearInventoryEnabled,\n                IsImplemented = true,\n            },\n            new MyGameplayCheat()\n            {\n                CheatEnum = MyGameplayCheatsEnum.FF_IN_INVENTORY,\n                CheatName = MyTextsWrapperEnum.FoundationFactoryInInventory,\n                IsButton = true,\n                OnCheatEnabled = FFInInventoryEnabled,\n                IsImplemented = true,\n            }\n        };\n\n        public static bool IsCheatEnabled(MyGameplayCheatsEnum cheat)\n        {      \n            return (m_enabledCheats & cheat) != 0;\n        }\n\n        public static void EnableCheat(MyGameplayCheatsEnum cheat, bool enable)\n        {\n            MyGameplayCheat? foundedCheatItem = GetCheat(cheat);\n            Debug.Assert(foundedCheatItem != null);\n            MyGameplayCheat cheatItem = foundedCheatItem.Value;\n\n            if (enable)\n            {\n                m_enabledCheats |= cheat;\n                \n                if (cheatItem.OnCheatEnabled != null)\n                    cheatItem.OnCheatEnabled(cheatItem);\n            }\n            else\n            {\n                m_enabledCheats &= ~cheat;\n\n                if (cheatItem.OnCheatDisabled != null)\n                    cheatItem.OnCheatDisabled(cheatItem);\n            }\n        }\n\n        private static MyGameplayCheat? GetCheat(MyGameplayCheatsEnum cheat) \n        {\n            foreach (MyGameplayCheat cheatItem in AllCheats)\n            {\n                if ((cheat & cheatItem.CheatEnum) != 0)\n                {\n                    return cheatItem;\n                }\n            }\n            return null;\n        }\n\n\n        public static void LoadData()\n        {\n            MyGuiScreenGamePlay.OnGameLoaded += new EventHandler(MyGuiScreenGamePlay_OnGameLoaded);\n        }\n\n        public static void UnloadData()\n        {\n            MyGuiScreenGamePlay.OnGameLoaded -= new EventHandler(MyGuiScreenGamePlay_OnGameLoaded);\n        }\n\n        static void MyGuiScreenGamePlay_OnGameLoaded(object sender, EventArgs e)\n        {\n            if (MyFakes.DEFAULT_CHEATS != null)\n            {\n                EnableCheat(MyFakes.DEFAULT_CHEATS.Value, true);\n            }\n        }\n\n        /// <summary>\n        /// Enable increase cargo capacity cheat implementation\n        /// </summary>\n        /// <param name=\"cheat\"></param>\n        static void IncreaseCargoCapacityEnabled(MyGameplayCheat cheat) \n        {\n            if (MySession.PlayerShip == null)\n                return;\n\n            //MySession.PlayerShip.Inventory.UnlimitedCapacity = true;\n            MySession.PlayerShip.Inventory.MaxItems = MyGamePlayCheatsConstants.CHEAT_INCREASE_CARGO_CAPACITY_MAX_ITEMS;\n        }\n\n        /// <summary>\n        /// Disabled increase cargo capacity cheat implementation\n        /// </summary>\n        /// <param name=\"cheat\"></param>\n        static void IncreaseCargoCapacityDisabled(MyGameplayCheat cheat) \n        {\n            if (MySession.PlayerShip == null)\n                return;\n\n            MySession.PlayerShip.Inventory.MaxItems = MySession.PlayerShip.ShipTypeProperties.GamePlay.CargoCapacity;\n            //MySession.PlayerShip.Inventory.UnlimitedCapacity = false;            \n        }\n\n        /// <summary>\n        /// All weapons cheat implementation\n        /// </summary>\n        static void AllWeaponsEnabled(MyGameplayCheat cheat)\n        {\n            if (MySession.PlayerShip == null)\n                return;\n\n            List<MyMwcObjectBuilder_SmallShip_Weapon> weapons = new List<MyMwcObjectBuilder_SmallShip_Weapon>();\n            List<MyMwcObjectBuilder_AssignmentOfAmmo> ammoAssignment = new List<MyMwcObjectBuilder_AssignmentOfAmmo>();\n            List<MyMwcObjectBuilder_InventoryItem> inventoryItems = new List<MyMwcObjectBuilder_InventoryItem>();\n\n            // weapons\n            foreach (MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum weapon in Enum.GetValues(typeof(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum)))\n            {\n                weapons.Add(new MyMwcObjectBuilder_SmallShip_Weapon(weapon));\n                // we want have 2x autocanon\n                if (weapon == MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Autocanon)\n                {\n                    weapons.Add(new MyMwcObjectBuilder_SmallShip_Weapon(weapon));\n                }\n            }\n\n            // ammo assignment\n            ammoAssignment.Add(new MyMwcObjectBuilder_AssignmentOfAmmo(MyMwcObjectBuilder_FireKeyEnum.Primary, MyMwcObjectBuilder_AmmoGroupEnum.Bullet, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_Basic));\n            ammoAssignment.Add(new MyMwcObjectBuilder_AssignmentOfAmmo(MyMwcObjectBuilder_FireKeyEnum.Secondary, MyMwcObjectBuilder_AmmoGroupEnum.Missile, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Missile_Basic));\n            ammoAssignment.Add(new MyMwcObjectBuilder_AssignmentOfAmmo(MyMwcObjectBuilder_FireKeyEnum.Third, MyMwcObjectBuilder_AmmoGroupEnum.UniversalLauncherFront, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Mine_Basic));\n            ammoAssignment.Add(new MyMwcObjectBuilder_AssignmentOfAmmo(MyMwcObjectBuilder_FireKeyEnum.Fourth, MyMwcObjectBuilder_AmmoGroupEnum.UniversalLauncherBack, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Mine_Smart));\n            ammoAssignment.Add(new MyMwcObjectBuilder_AssignmentOfAmmo(MyMwcObjectBuilder_FireKeyEnum.Fifth, MyMwcObjectBuilder_AmmoGroupEnum.Bullet, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_Basic));\n\n\n\n            MySession.PlayerShip.Weapons.Init(weapons, ammoAssignment);\n            \n            foreach (MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum ammo in Enum.GetValues(typeof(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum)))\n            {\n                MyMwcObjectBuilder_InventoryItem item = new MyMwcObjectBuilder_InventoryItem(new MyMwcObjectBuilder_SmallShip_Ammo(ammo), MyGameplayConstants.GetGameplayProperties(MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, (int)ammo, MySession.PlayerShip.Faction).MaxAmount);\n                if(!MySession.PlayerShip.Inventory.IsFull)\n                    MySession.PlayerShip.Inventory.AddInventoryItem(MyInventory.CreateInventoryItemFromInventoryItemObjectBuilder(item));\n            }\n\n        }\n\n        /// <summary>\n        /// Extra money cheat implementation\n        /// </summary>\n        static void ExtraMoneyEnabled(MyGameplayCheat cheat)\n        {\n            if (MySession.Static != null && MySession.Static.Player != null)\n            {\n                MySession.Static.Player.Money += 1000000;\n            }\n        }\n\n        /// <summary>\n        /// All blueprints cheat implementation\n        /// </summary>\n        static void AllBluePrintsEnabled(MyGameplayCheat cheat)\n        {\n            if (MyGuiScreenGamePlay.Static != null)\n            {\n                MyGuiScreenGamePlay.Static.AddAllBlueprints();\n            }\n        }\n\n        /// <summary>\n        /// Remove all blueprints cheat implementation\n        /// </summary>\n        static void RemoveAllBluePrintsEnabled(MyGameplayCheat cheat)\n        {\n            if (MyGuiScreenGamePlay.Static != null)\n            {\n                MyGuiScreenGamePlay.Static.RemoveAllBlueprints();\n            }\n        }\n\n        /// <summary>\n        /// Kill all cheat implementation\n        /// </summary>\n        static void KillAllEnabled(MyGameplayCheat cheat)\n        {\n            // We need player ship to recognize friends\n            if (MySession.PlayerShip == null)\n            {\n                return;\n            }\n\n            foreach (var entity in MyEntities.GetEntities().ToArray())\n            {\n                MySmallShip smallShip = entity as MySmallShip;\n                if (smallShip != null &&\n                    smallShip.Visible &&\n                    smallShip != MySession.PlayerShip &&\n                    MyFactions.GetFactionsRelation(MySession.PlayerShip, smallShip) == MyFactionRelationEnum.Enemy)\n                {\n                    entity.DoDamage(0, 1000000, 0, MyDamageType.Unknown, MyAmmoType.Unknown, null);\n                }\n\n                MyPrefabContainer container = entity as MyPrefabContainer;\n                if (container != null &&\n                    MyFactions.GetFactionsRelation(MySession.PlayerShip, container) == MyFactionRelationEnum.Enemy)\n                {\n                    foreach (var prefab in container.GetPrefabs().ToArray())\n                    {\n                        MyPrefabLargeWeapon largeWeapon = prefab as MyPrefabLargeWeapon;\n                        if (largeWeapon != null)\n                        {\n                            prefab.DoDamage(0, 1000000, 0, MyDamageType.Unknown, MyAmmoType.Unknown, null);\n                        }\n                    }\n                }\n            }\n        }\n\n        /// <summary>\n        /// Clear inventory cheat enabled\n        /// </summary>\n        static void ClearInventoryEnabled(MyGameplayCheat cheat)\n        {\n            if (MySession.PlayerShip != null)\n            {\n                MySession.PlayerShip.Inventory.ClearInventoryItems(true);\n            }\n        }\n\n        /// <summary>\n        /// Clear inventory cheat enabled\n        /// </summary>\n        static void FFInInventoryEnabled(MyGameplayCheat cheat)\n        {\n            if (MySession.PlayerShip != null)\n            {\n                if (!MySession.PlayerShip.Inventory.Contains(MyMwcObjectBuilderTypeEnum.PrefabFoundationFactory, (int)MyMwcObjectBuilder_PrefabFoundationFactory_TypesEnum.DEFAULT))\n                {\n                    MySession.PlayerShip.Inventory.AddInventoryItem(MyMwcObjectBuilderTypeEnum.PrefabFoundationFactory, (int)MyMwcObjectBuilder_PrefabFoundationFactory_TypesEnum.DEFAULT, 1.0f, true);\n                }\n            }\n        }\n\n        \n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/World/Global/MyGamePlayConstants.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.SmallShipTools;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.InfluenceSpheres;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.LargeShipTools;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.Prefabs;\nusing SysUtils.Utils;\nusing MinerWarsMath;\nusing System.Diagnostics;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWars.AppCode.Game.Utils;\n\nnamespace MinerWars.AppCode.Game.Gameplay\n{\n    struct MyGameplayDifficultyProfile\n    {\n        public MyGameplayDifficultyEnum GameplayDifficulty;\n\n        //Bots\n        //always 0 super easy 1 max hard\n        // how much will bot strafe during combat  (not its speed)\n        public float BotStrafingSpeed;\n        //how much will bot strafe during combat  (not its speed)\n        public float BotMovingSpeed;\n        // affect speed of shooting (delays between all shooting)\n        public float BotFireRatio;\n        // what guns/slots will be used during fight / shoting\n        public float BotGunUsageRatio;\n        // how often will be raid attack executed\n        public float BotRaidAttackOccurrence;\n        // how often will be fly around exectued\n        public float BotFlyAroundTargetOccurrence;\n        //how far will bot react on enemy presence and from what distance he will shoot ( harder - more far )        \n        public float BotAttackReactDistance;\n\n        //Aiming\n        //Deviating angle addition for player shooting on enemy\n        public float DeviatingAnglePlayerOnEnemy;\n        //Deviating angle addition for enemy bot shooting on player\n        public float DeviatingAngleEnemyBotOnPlayer;\n        //Deviating angle addition for enemy large weapon shooting on player\n        public float DeviatingAngleEnemyLargeWeaponOnPlayer;\n        //Enable aim correction\n        public bool EnableAimCorrection;\n\n        // Damage to player (weapons, sunwind) is multiplicated by this constant\n        public float DamageToPlayerMultiplicator;\n\n        // Damage to player from enemy is multiplicated by this constant\n        public float DamageToPlayerFromEnemyMultiplicator;\n\n        // Damage from player to enemy is multiplicated by this constant\n        public float DamageFromPlayerToEnemyMultiplicator;\n\n        // Player properties multiplicators\n        public float PlayerFuelConsumptionMultiplicator;\n        public float PlayerOxygenConsumptionMultiplicator;\n        public float PlayerElectricityConsumptionMultiplicator;\n        //Ship properties\n\n        public MyTextsWrapperEnum DifficultyName;\n\n        //Large weapons modifiers\n        public float LargeWeaponMaxAttackingDistanceForPlayer;\n    }\n\n    public enum ItemCategory\n    {\n        DEFAULT,\n        WEAPON,\n        AMMO,\n        DEVICE,\n        CONSUMABLE,\n        MEDICAL,\n        ORE,\n        GOOODS,\n        ILLEGAL\n    }\n\n    public class MyGameplayProperties\n    {\n        public readonly float PricePerUnit;\n        public readonly float WeightPerUnit;\n        public readonly int MaxAmount;  //Max amount in one inventory slot\n        public readonly int UsedSlots;  //Used slots in inventory        \n        public ItemCategory ItemCategory;\n        public readonly float MaxHealth;\n        public readonly bool IsDestructible;     \n\n\n        public MyGameplayProperties(float PricePerUnit, float WeightPerUnit, int MaxAmount, int UsedSlots, float MaxHealth, bool IsDestructible = true, ItemCategory itemCategory = ItemCategory.DEFAULT)\n        {\n            this.PricePerUnit = PricePerUnit;\n            this.WeightPerUnit = WeightPerUnit;\n            this.MaxAmount = MaxAmount;\n            this.UsedSlots = UsedSlots;\n            this.MaxHealth = MaxHealth;\n            this.ItemCategory = itemCategory;\n            this.IsDestructible = IsDestructible;\n        }\n    }\n\n    static class MyGameplayConstants\n    {\n        public static readonly float MAXHEALTH_INDESTRUCTIBLE = 100000;\n        public static readonly float MAXHEALTH_SMALLSHIP = 100;\n        public static readonly float MAXHEALTH_DRONE = 30;\n        public static readonly float MAXHEALTH_PREFAB_LIGHT = 2;\n        public static readonly float MAXHEALTH_PREFAB = 350;\n        public static readonly float MAXHEALTH_PREFAB_LARGE_WEAPON = 140;\n        public static readonly float MAXHEALTH_PREFAB_TINY = 35;\n        public static readonly float MAXHEALTH_PREFAB_SMALL = 750;\n        public static readonly float MAXHEALTH_PREFAB_MEDIUM = 2000;\n        public static readonly float MAXHEALTH_PREFAB_LARGE = 3500;\n        public static readonly float MAXHEALTH_PREFAB_CHAMBER = 15000;\n        public static readonly float MAXHEALTH_PREFAB_DOCK = 25000;\n        public static readonly float MAXHEALTH_PREFAB_ARMOR = 10000;\n        public static readonly float MAXHEALTH_PREFAB_DOORCASE = 4000;\n        public static readonly float MAXHEALTH_PREFAB_DOORCASE_LARGE = 50000;\n\n        public static readonly float MAXHEALTH_PREFAB_EXPLOSIVES = 20;\n\n        public static readonly float MAXHEALTH_PANEL_SMALL = 350;\n        public static readonly float MAXHEALTH_PANEL_MEDIUM = 750;\n        public static readonly float MAXHEALTH_PANEL_LARGE = 2000;\n\n        public static readonly float MAXHEALTH_TUNNEL_LONG = 5000;\n        public static readonly float MAXHEALTH_TUNNEL_SHORT = 2500;\n        public static readonly float MAXHEALTH_TUNNEL_VERYSHORT = 750;\n                \n        public static readonly float MAXHEALTH_PREFAB_BUILDING_SMALL = 1000;\n        public static readonly float MAXHEALTH_PREFAB_BUILDING_MEDIUM = 3000;\n        public static readonly float MAXHEALTH_PREFAB_BUILDING_LARGE = 15000;\n        public static readonly float MAXHEALTH_PREFAB_BUILDING_HUGE = 25000;\n\n        public static readonly float MAXHEALTH_DOOR = 200;\n        public static readonly float MAXHEALTH_LARGESHIP = MAXHEALTH_SMALLSHIP * 50;\n\n\n        public static readonly float HEALTH_BASIC = 100.0f;\n        public static readonly float HEALTH_RATIO_DEATH = 0.0f;\n        public static readonly float HEALTH_RATIO_MAX = 1.0f;\n        public static readonly float MAX_HEALTH_MAX = 3.40282e+38f;\n        public static readonly float NANO_REPAIR_TOOL_REPAIR_TO_HEALTH_MAX = 0.75f;\n        public static readonly float NANO_REPAIR_TOOL_REPAIR_HEALTH_RATIO_PER_SEC = 0.004f;\n\n        public static readonly float SHIP_WITHOUT_PILOT_DESTRUCTION_TIME = 120;             // seconds\n        public static readonly float SHIP_DESTRUCTION_TIME_AFTER_LOOT = 10;                 // seconds\n\n        public const float DEFAULT_MIN_ELECTRIC_CAPACITY = -10;\n        public const float DEFAULT_MAX_ELECTRIC_CAPACITY = 5;\n\n        public static readonly int AMMO_CLIP_CAPACITY_1_SMALL = 25;\n        public static readonly int AMMO_CLIP_CAPACITY_2_MEDIUM = 30;\n        public static readonly int AMMO_CLIP_CAPACITY_3_BIG = 100;\n        public static readonly int AMMO_CLIP_CAPACITY_4_HUGE = 500;\n\n        public static readonly int AMMO_SPECIAL_1_SINGLE = 3;\n        public static readonly int AMMO_SPECIAL_2_FEW = 5;\n        public static readonly int AMMO_SPECIAL_3_PACK = 24;\n\n        public static readonly int AMMO_CANNON_1_BIG = 30;\n        public static readonly int AMMO_CANNON_2_MEDIUM = 20;\n        public static readonly int AMMO_CANNON_3_SMALL = 10;\n\n        public static readonly int AMMO_ROCKET_3_BIG = 24;\n        public static readonly int AMMO_ROCKET_2_MEDIUM = 12;\n        public static readonly int AMMO_ROCKET_1_SMALL = 6;\n\n\n        static readonly MyGameplayProperties[][] m_itemProperties = new MyGameplayProperties[MyMwcUtils.GetMaxValueFromEnum<MyMwcObjectBuilderTypeEnum>() + 1][];\n\n        static readonly Dictionary<int, MyGameplayProperties[][]> m_itemPropertiesPerFaction = new Dictionary<int, MyGameplayProperties[][]>();\n\n        static MyGameplayDifficultyProfile[] m_gameplayDifficultyProfiles = new MyGameplayDifficultyProfile[Enum.GetValues(typeof(MyGameplayDifficultyEnum)).Length];\n\n        public static MyGameplayDifficultyProfile GameplayDifficultyProfile { get; private set; }\n        private static MyGameplayDifficultyEnum m_difficulty;\n\n        static MyGameplayConstants()\n        {\n            MyMwcLog.WriteLine(\"MyGameplayConstants()\");\n\n            m_gameplayDifficultyProfiles[(int)MyGameplayDifficultyEnum.EASY] = new MyGameplayDifficultyProfile()\n            {\n                GameplayDifficulty = MyGameplayDifficultyEnum.EASY,\n\n                //Deviating angle addition for player shooting on enemy\n                DeviatingAnglePlayerOnEnemy = MathHelper.ToRadians(0.0f),\n                //Deviating angle addition for enemy bot shooting on player\n                DeviatingAngleEnemyBotOnPlayer = MathHelper.ToRadians(2.5f),\n                //Deviating angle addition for enemy large weapon shooting on player\n                DeviatingAngleEnemyLargeWeaponOnPlayer = MathHelper.ToRadians(2.5f),\n                //Enable aim correction\n                EnableAimCorrection = true,\n\n                //Bot settings\n                BotStrafingSpeed = 0.0f,\n                BotMovingSpeed = 0.0f,\n                BotFireRatio = 0.0f,\n                BotGunUsageRatio = 0.0f,\n                BotRaidAttackOccurrence = 0.0f,\n                BotFlyAroundTargetOccurrence = 0.0f,\n                BotAttackReactDistance = 0.0f,\n\n                PlayerFuelConsumptionMultiplicator = 1.0f,\n                PlayerOxygenConsumptionMultiplicator = 1.0f,\n                PlayerElectricityConsumptionMultiplicator = 1.0f,\n\n                DamageToPlayerMultiplicator = 1.0f,\n                DamageToPlayerFromEnemyMultiplicator = 0.2f,\n                DamageFromPlayerToEnemyMultiplicator = 3.0f,\n\n                LargeWeaponMaxAttackingDistanceForPlayer = MyLargeShipWeaponsConstants.MAX_HUD_DISTANCE * 0.9f,\n\n                DifficultyName = MyTextsWrapperEnum.DifficultyEasy,\n            };\n\n            m_gameplayDifficultyProfiles[(int)MyGameplayDifficultyEnum.NORMAL] = new MyGameplayDifficultyProfile()\n            {\n                GameplayDifficulty = MyGameplayDifficultyEnum.NORMAL,\n\n                //Deviating angle addition for player shooting on enemy\n                DeviatingAnglePlayerOnEnemy = MathHelper.ToRadians(0.2f),\n                //Deviating angle addition for enemy bot shooting on player\n                DeviatingAngleEnemyBotOnPlayer = MathHelper.ToRadians(0.1f),\n                //Deviating angle addition for enemy large weapon shooting on player\n                DeviatingAngleEnemyLargeWeaponOnPlayer = MathHelper.ToRadians(0.1f),\n                //Enable aim correction\n                EnableAimCorrection = true,\n\n                //Bot settings\n                BotStrafingSpeed = 0.5f,\n                BotMovingSpeed = 0.5f,\n                BotFireRatio = 0.5f,\n                BotGunUsageRatio = 0.5f,\n                BotRaidAttackOccurrence = 0.5f,\n                BotFlyAroundTargetOccurrence = 0.5f,\n                BotAttackReactDistance = 0.5f,\n\n                \n                PlayerFuelConsumptionMultiplicator = 1.1f,\n                PlayerOxygenConsumptionMultiplicator = 1.0f,\n                PlayerElectricityConsumptionMultiplicator = 1.1f,\n\n                DamageToPlayerMultiplicator = 1.5f,\n                DamageToPlayerFromEnemyMultiplicator = 0.35f,\n                DamageFromPlayerToEnemyMultiplicator = 1.0f,\n\n                LargeWeaponMaxAttackingDistanceForPlayer = MyLargeShipWeaponsConstants.MAX_HUD_DISTANCE * 0.9f,\n\n                DifficultyName = MyTextsWrapperEnum.DifficultyNormal,\n            };\n\n            m_gameplayDifficultyProfiles[(int)MyGameplayDifficultyEnum.HARD] = new MyGameplayDifficultyProfile()\n            {\n                GameplayDifficulty = MyGameplayDifficultyEnum.HARD,\n\n                //Deviating angle addition for player shooting on enemy\n                DeviatingAnglePlayerOnEnemy = MathHelper.ToRadians(1.0f),\n                //Deviating angle addition for enemy bot shooting on player\n                DeviatingAngleEnemyBotOnPlayer = MathHelper.ToRadians(0.0f),\n                //Deviating angle addition for enemy large weapon shooting on player\n                DeviatingAngleEnemyLargeWeaponOnPlayer = MathHelper.ToRadians(0.0f),\n                //Enable aim correction\n                EnableAimCorrection = false,\n\n                //Bot settings\n                BotStrafingSpeed = 1.0f,\n                BotMovingSpeed = 1.0f,\n                BotFireRatio = 1.0f,\n                BotGunUsageRatio = 1.0f,\n                BotRaidAttackOccurrence = 1.0f,\n                BotFlyAroundTargetOccurrence = 1.0f,\n                BotAttackReactDistance = 1.0f,\n\n                \n                PlayerFuelConsumptionMultiplicator = 1.5f,\n                PlayerOxygenConsumptionMultiplicator = 1.0f,\n                PlayerElectricityConsumptionMultiplicator = 1.5f,\n\n                DamageToPlayerMultiplicator = 1.5f,\n                DamageToPlayerFromEnemyMultiplicator = 1.0f,\n                DamageFromPlayerToEnemyMultiplicator = 0.8f,\n\n                LargeWeaponMaxAttackingDistanceForPlayer = MyLargeShipWeaponsConstants.MAX_SEARCHING_DISTANCE,\n\n                DifficultyName = MyTextsWrapperEnum.DifficultyHard,\n            };\n\n\n            //Default value\n            GameplayDifficultyProfile = m_gameplayDifficultyProfiles[(int)MyGameplayDifficultyEnum.NORMAL];\n\n            #region small debris\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallDebris] = new MyGameplayProperties[MyMwcUtils.GetMaxValueFromEnum<MyMwcObjectBuilder_SmallDebris_TypesEnum>() + 1];\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallDebris][(int)MyMwcObjectBuilder_SmallDebris_TypesEnum.Cistern] =\n                new MyGameplayProperties(\n                    PricePerUnit: 0,\n                    WeightPerUnit: 1,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_TINY\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallDebris][(int)MyMwcObjectBuilder_SmallDebris_TypesEnum.UtilityVehicle_1] =\n                new MyGameplayProperties(\n                    PricePerUnit: 0,\n                    WeightPerUnit: 1,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_TINY\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallDebris][(int)MyMwcObjectBuilder_SmallDebris_TypesEnum.pipe_bundle] =\n                new MyGameplayProperties(\n                    PricePerUnit: 0,\n                    WeightPerUnit: 1,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false \n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallDebris][(int)MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris1] =\n                new MyGameplayProperties(\n                    PricePerUnit: 0,\n                    WeightPerUnit: 1,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_TINY\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallDebris][(int)MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris2] =\n                new MyGameplayProperties(\n                    PricePerUnit: 0,\n                    WeightPerUnit: 1,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_TINY\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallDebris][(int)MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris3] =\n                new MyGameplayProperties(\n                    PricePerUnit: 0,\n                    WeightPerUnit: 1,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_TINY\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallDebris][(int)MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris4] =\n                new MyGameplayProperties(\n                    PricePerUnit: 0,\n                    WeightPerUnit: 1,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_TINY\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallDebris][(int)MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris5] =\n                new MyGameplayProperties(\n                    PricePerUnit: 0,\n                    WeightPerUnit: 1,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_TINY\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallDebris][(int)MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris6] =\n                new MyGameplayProperties(\n                    PricePerUnit: 0,\n                    WeightPerUnit: 1,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_TINY\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallDebris][(int)MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris7] =\n                new MyGameplayProperties(\n                    PricePerUnit: 0,\n                    WeightPerUnit: 1,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_TINY\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallDebris][(int)MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris8] =\n                new MyGameplayProperties(\n                    PricePerUnit: 0,\n                    WeightPerUnit: 1,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_TINY\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallDebris][(int)MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris9] =\n                new MyGameplayProperties(\n                    PricePerUnit: 0,\n                    WeightPerUnit: 1,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_TINY\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallDebris][(int)MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris10] =\n                new MyGameplayProperties(\n                    PricePerUnit: 0,\n                    WeightPerUnit: 1,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_TINY\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallDebris][(int)MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris11] =\n                new MyGameplayProperties(\n                    PricePerUnit: 0,\n                    WeightPerUnit: 1,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_TINY\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallDebris][(int)MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris12] =\n                new MyGameplayProperties(\n                    PricePerUnit: 0,\n                    WeightPerUnit: 1,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_TINY\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallDebris][(int)MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris13] =\n                new MyGameplayProperties(\n                    PricePerUnit: 0,\n                    WeightPerUnit: 1,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_TINY\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallDebris][(int)MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris14] =\n                new MyGameplayProperties(\n                    PricePerUnit: 0,\n                    WeightPerUnit: 1,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_TINY\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallDebris][(int)MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris15] =\n                new MyGameplayProperties(\n                    PricePerUnit: 0,\n                    WeightPerUnit: 1,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_TINY\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallDebris][(int)MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris16] =\n                new MyGameplayProperties(\n                    PricePerUnit: 0,\n                    WeightPerUnit: 1,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_TINY\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallDebris][(int)MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris17] =\n                new MyGameplayProperties(\n                    PricePerUnit: 0,\n                    WeightPerUnit: 1,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_TINY\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallDebris][(int)MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris18] =\n                new MyGameplayProperties(\n                    PricePerUnit: 0,\n                    WeightPerUnit: 1,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_TINY\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallDebris][(int)MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris19] =\n                new MyGameplayProperties(\n                    PricePerUnit: 0,\n                    WeightPerUnit: 1,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_TINY\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallDebris][(int)MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris20] =\n                new MyGameplayProperties(\n                    PricePerUnit: 0,\n                    WeightPerUnit: 1,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_TINY\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallDebris][(int)MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris21] =\n                new MyGameplayProperties(\n                    PricePerUnit: 0,\n                    WeightPerUnit: 1,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_TINY\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallDebris][(int)MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris22] =\n                new MyGameplayProperties(\n                    PricePerUnit: 0,\n                    WeightPerUnit: 1,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_TINY\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallDebris][(int)MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris23] =\n                new MyGameplayProperties(\n                    PricePerUnit: 0,\n                    WeightPerUnit: 1,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_TINY\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallDebris][(int)MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris24] =\n                new MyGameplayProperties(\n                    PricePerUnit: 0,\n                    WeightPerUnit: 1,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_TINY\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallDebris][(int)MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris25] =\n                new MyGameplayProperties(\n                    PricePerUnit: 0,\n                    WeightPerUnit: 1,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_TINY\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallDebris][(int)MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris26] =\n                new MyGameplayProperties(\n                    PricePerUnit: 0,\n                    WeightPerUnit: 1,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_TINY\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallDebris][(int)MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris27] =\n                new MyGameplayProperties(\n                    PricePerUnit: 0,\n                    WeightPerUnit: 1,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_TINY\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallDebris][(int)MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris28] =\n                new MyGameplayProperties(\n                    PricePerUnit: 0,\n                    WeightPerUnit: 1,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_TINY\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallDebris][(int)MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris29] =\n                new MyGameplayProperties(\n                    PricePerUnit: 0,\n                    WeightPerUnit: 1,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_TINY\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallDebris][(int)MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris30] =\n                new MyGameplayProperties(\n                    PricePerUnit: 0,\n                    WeightPerUnit: 1,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_TINY\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallDebris][(int)MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris31] =\n                new MyGameplayProperties(\n                    PricePerUnit: 0,\n                    WeightPerUnit: 1,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_TINY\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallDebris][(int)MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris32_pilot] =\n                new MyGameplayProperties(\n                    PricePerUnit: 0,\n                    WeightPerUnit: 1,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_TINY\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallDebris][(int)MyMwcObjectBuilder_SmallDebris_TypesEnum.Standard_Container_1] =\n                new MyGameplayProperties(\n                    PricePerUnit: 0,\n                    WeightPerUnit: 1,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_TINY\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallDebris][(int)MyMwcObjectBuilder_SmallDebris_TypesEnum.Standard_Container_2] =\n                new MyGameplayProperties(\n                    PricePerUnit: 0,\n                    WeightPerUnit: 1,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_TINY\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallDebris][(int)MyMwcObjectBuilder_SmallDebris_TypesEnum.Standard_Container_3] =\n                new MyGameplayProperties(\n                    PricePerUnit: 0,\n                    WeightPerUnit: 1,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_TINY\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallDebris][(int)MyMwcObjectBuilder_SmallDebris_TypesEnum.Standard_Container_4] =\n                new MyGameplayProperties(\n                    PricePerUnit: 0,\n                    WeightPerUnit: 1,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_TINY\n                   );\n            #endregion\n\n            #region smallShip tools\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Tool] = new MyGameplayProperties[MyMwcUtils.GetMaxValueFromEnum<MyMwcObjectBuilder_SmallShip_Tool_TypesEnum>() + 1];\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Tool][(int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.REAR_CAMERA] =\n                new MyGameplayProperties(\n                    PricePerUnit: 1000,\n                    WeightPerUnit: 30,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.DEVICE\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Tool][(int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.LASER_POINTER] =\n                new MyGameplayProperties(\n                    PricePerUnit: 2000,\n                    WeightPerUnit: 5,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.DEVICE\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Tool][(int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.AUTO_TARGETING] =\n                new MyGameplayProperties(\n                    PricePerUnit: 10000,\n                    WeightPerUnit: 3,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.DEVICE\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Tool][(int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.NIGHT_VISION] =\n                new MyGameplayProperties(\n                    PricePerUnit: 8000,\n                    WeightPerUnit: 10,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.DEVICE\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Tool][(int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.NANO_REPAIR_TOOL] =\n                new MyGameplayProperties(\n                    PricePerUnit: 100000,\n                    WeightPerUnit: 20,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.DEVICE\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Tool][(int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.MEDIKIT] =\n                new MyGameplayProperties(\n                    PricePerUnit: 60,\n                    WeightPerUnit: 0.15f,\n                    MaxAmount: 100,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.CONSUMABLE\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Tool][(int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.XRAY] =\n                new MyGameplayProperties(\n                    PricePerUnit: 300000,\n                    WeightPerUnit: 30,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.DEVICE\n                   );\n            /*\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Tool][(int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.NANO_REPAIR_TOOL] =\n                new MyGameplayProperties(\n                    PricePerUnit: 300000,\n                    WeightPerUnit: 30,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false \n                   );\n            */\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Tool][(int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.ANTIRADIATION_MEDICINE] =\n                new MyGameplayProperties(\n                    PricePerUnit: 2000,\n                    WeightPerUnit: 5,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.MEDICAL\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Tool][(int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.RADAR_JAMMER] =\n                new MyGameplayProperties(\n                    PricePerUnit: 150000,\n                    WeightPerUnit: 10,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.DEVICE\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Tool][(int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.PERFORMANCE_ENHANCING_MEDICINE] =\n                new MyGameplayProperties(\n                    PricePerUnit: 10000,\n                    WeightPerUnit: 5,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.MEDICAL\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Tool][(int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.HEALTH_ENHANCING_MEDICINE] =\n                new MyGameplayProperties(\n                    PricePerUnit: 2000,\n                    WeightPerUnit: 5,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.MEDICAL\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Tool][(int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.EXTRA_FUEL_CONTAINER_DISABLED] =\n                new MyGameplayProperties(\n                    PricePerUnit: 10000,\n                    WeightPerUnit: 40,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.GOOODS\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Tool][(int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.EXTRA_ELECTRICITY_CONTAINER] =\n                new MyGameplayProperties(\n                    PricePerUnit: 15000,\n                    WeightPerUnit: 300,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.GOOODS\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Tool][(int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.EXTRA_OXYGEN_CONTAINER_DISABLED] =\n                new MyGameplayProperties(\n                    PricePerUnit: 8000,\n                    WeightPerUnit: 90,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.GOOODS\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Tool][(int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.OXYGEN_CONVERTER] =\n                new MyGameplayProperties(\n                    PricePerUnit: 56000,\n                    WeightPerUnit: 230,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.GOOODS\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Tool][(int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.FUEL_CONVERTER] =\n                new MyGameplayProperties(\n                    PricePerUnit: 130000,\n                    WeightPerUnit: 670,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.GOOODS\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Tool][(int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.SOLAR_PANEL] =\n                new MyGameplayProperties(\n                    PricePerUnit: 34000,\n                    WeightPerUnit: 80,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.DEVICE\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Tool][(int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.BOOBY_TRAP] =\n                new MyGameplayProperties(\n                    PricePerUnit: 10000,\n                    WeightPerUnit: 100,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.DEVICE\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Tool][(int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.SENSOR] =\n                new MyGameplayProperties(\n                    PricePerUnit: 20000,\n                    WeightPerUnit: 30,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.DEVICE\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Tool][(int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.REMOTE_CAMERA] =\n                new MyGameplayProperties(\n                    PricePerUnit: 20000,\n                    WeightPerUnit: 50,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_LIGHT,\n                    itemCategory: ItemCategory.DEVICE\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Tool][(int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.REMOTE_CAMERA_ON_DRONE] =\n                new MyGameplayProperties(\n                    PricePerUnit: 30000,\n                    WeightPerUnit: 120,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.DEVICE\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Tool][(int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.ALIEN_OBJECT_DETECTOR] =\n                new MyGameplayProperties(\n                    PricePerUnit: 0,\n                    WeightPerUnit: 2000,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.DEVICE\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Tool][(int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.RADAR_UNUSED] = new MyGameplayProperties(\n                    PricePerUnit: 5000,\n                    WeightPerUnit: 300,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false,\n                    itemCategory: ItemCategory.DEVICE\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Tool][(int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.HEALTH_KIT] =\n                new MyGameplayProperties(\n                    PricePerUnit: 5000,\n                    WeightPerUnit: 300,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.MEDICAL\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Tool][(int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.REPAIR_KIT] =\n                new MyGameplayProperties(\n                    PricePerUnit: 5000,\n                    WeightPerUnit: 300,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.GOOODS\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Tool][(int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.OXYGEN_KIT] =\n                new MyGameplayProperties(\n                    PricePerUnit: 5000,\n                    WeightPerUnit: 300,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.GOOODS\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Tool][(int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.FUEL_KIT] =\n                new MyGameplayProperties(\n                    PricePerUnit: 5000,\n                    WeightPerUnit: 300,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.GOOODS\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Tool][(int)MyMwcObjectBuilder_SmallShip_Tool_TypesEnum.ELECTRICITY_KIT] =\n                new MyGameplayProperties(\n                    PricePerUnit: 5000,\n                    WeightPerUnit: 300,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.GOOODS\n                   );\n            #endregion\n\n            #region smallship armors\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Armor] = new MyGameplayProperties[MyMwcUtils.GetMaxValueFromEnum<MyMwcObjectBuilder_SmallShip_Armor_TypesEnum>() + 1];\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Armor][(int)MyMwcObjectBuilder_SmallShip_Armor_TypesEnum.Basic] =\n                new MyGameplayProperties(\n                    PricePerUnit: 3000,\n                    WeightPerUnit: 1000,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.DEVICE\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Armor][(int)MyMwcObjectBuilder_SmallShip_Armor_TypesEnum.Advanced] =\n                new MyGameplayProperties(\n                    PricePerUnit: 5000,\n                    WeightPerUnit: 2000,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.DEVICE\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Armor][(int)MyMwcObjectBuilder_SmallShip_Armor_TypesEnum.High_Endurance] =\n                new MyGameplayProperties(\n                    PricePerUnit: 8000,\n                    WeightPerUnit: 3000,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.DEVICE\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Armor][(int)MyMwcObjectBuilder_SmallShip_Armor_TypesEnum.Solar_Wind] =\n                new MyGameplayProperties(\n                    PricePerUnit: 90000,\n                    WeightPerUnit: 2500,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.DEVICE\n                   );\n            #endregion\n\n            #region smallship radars\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Radar] = new MyGameplayProperties[MyMwcUtils.GetMaxValueFromEnum<MyMwcObjectBuilder_SmallShip_Radar_TypesEnum>() + 1];\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Radar][(int)MyMwcObjectBuilder_SmallShip_Radar_TypesEnum.Radar_1] =\n             new MyGameplayProperties(\n                 PricePerUnit: 190000,\n                 WeightPerUnit: 1,\n                 MaxAmount: 1,\n                 UsedSlots: 1,\n                 MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false,\n                 itemCategory: ItemCategory.DEVICE\n                );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Radar][(int)MyMwcObjectBuilder_SmallShip_Radar_TypesEnum.Radar_2] =\n             new MyGameplayProperties(\n                 PricePerUnit: 190000,\n                 WeightPerUnit: 1,\n                 MaxAmount: 1,\n                 UsedSlots: 1,\n                 MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false,\n                 itemCategory: ItemCategory.DEVICE\n                );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Radar][(int)MyMwcObjectBuilder_SmallShip_Radar_TypesEnum.Radar_3] =\n             new MyGameplayProperties(\n                 PricePerUnit: 190000,\n                 WeightPerUnit: 1,\n                 MaxAmount: 1,\n                 UsedSlots: 1,\n                 MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false,\n                 itemCategory: ItemCategory.DEVICE\n                );\n            #endregion\n\n            #region smallship weapons\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Weapon] = new MyGameplayProperties[MyMwcUtils.GetMaxValueFromEnum<MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum>() + 1];\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Weapon][(int)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Automatic_Rifle_With_Silencer] =\n                new MyGameplayProperties(\n                    PricePerUnit: 20000,\n                    WeightPerUnit: 13,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.WEAPON\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Weapon][(int)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Sniper] =\n                new MyGameplayProperties(\n                    PricePerUnit: 70000,\n                    WeightPerUnit: 8,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.WEAPON\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Weapon][(int)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Autocanon] =\n                new MyGameplayProperties(\n                    PricePerUnit: 15000,\n                    WeightPerUnit: 20,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.WEAPON\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Weapon][(int)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Machine_Gun] =\n                new MyGameplayProperties(\n                    PricePerUnit: 10000,\n                    WeightPerUnit: 13,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.WEAPON\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Weapon][(int)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Shotgun] =\n                new MyGameplayProperties(\n                    PricePerUnit: 20000,\n                    WeightPerUnit: 5,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.WEAPON\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Weapon][(int)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Cannon] =\n                new MyGameplayProperties(\n                    PricePerUnit: 25000,\n                    WeightPerUnit: 40,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.WEAPON\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Weapon][(int)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Missile_Launcher] =\n                new MyGameplayProperties(\n                    PricePerUnit: 40000,\n                    WeightPerUnit: 13,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.WEAPON\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Weapon][(int)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Universal_Launcher_Front] =\n                new MyGameplayProperties(\n                    PricePerUnit: 30000,\n                    WeightPerUnit: 40,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.WEAPON\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Weapon][(int)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Universal_Launcher_Back] =\n                new MyGameplayProperties(\n                    PricePerUnit: 30000,\n                    WeightPerUnit: 40,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.WEAPON\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Weapon][(int)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Crusher] =\n                new MyGameplayProperties(\n                    PricePerUnit: 15000,\n                    WeightPerUnit: 40,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.DEVICE\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Weapon][(int)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Laser] =\n                new MyGameplayProperties(\n                    PricePerUnit: 30000,\n                    WeightPerUnit: 40,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.DEVICE\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Weapon][(int)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Nuclear] =\n                new MyGameplayProperties(\n                    PricePerUnit: 25000,\n                    WeightPerUnit: 40,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.DEVICE\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Weapon][(int)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Pressure] =\n                new MyGameplayProperties(\n                    PricePerUnit: 35000,\n                    WeightPerUnit: 40,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.DEVICE\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Weapon][(int)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Saw] =\n                new MyGameplayProperties(\n                    PricePerUnit: 20000,\n                    WeightPerUnit: 40,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.DEVICE\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Weapon][(int)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Thermal] =\n                new MyGameplayProperties(\n                    PricePerUnit: 20000,\n                    WeightPerUnit: 40,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.DEVICE\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Weapon][(int)MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Harvesting_Device] =\n                new MyGameplayProperties(\n                    PricePerUnit: 20000,\n                    WeightPerUnit: 40,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.DEVICE\n                   );\n            #endregion\n\n            #region smallship ammo\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo] = new MyGameplayProperties[MyMwcUtils.GetMaxValueFromEnum<MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum>() + 1];\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Automatic_Rifle_With_Silencer_High_Speed] =\n                new MyGameplayProperties(\n                    PricePerUnit: 1 * 5,\n                    WeightPerUnit: 0.05f,\n                    MaxAmount: AMMO_CLIP_CAPACITY_3_BIG,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.AMMO\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Automatic_Rifle_With_Silencer_SAPHEI] =\n                new MyGameplayProperties(\n                    PricePerUnit: 1.8f * 5,\n                    WeightPerUnit: 0.08f,\n                    MaxAmount: AMMO_CLIP_CAPACITY_3_BIG,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.AMMO\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Automatic_Rifle_With_Silencer_BioChem] =\n                new MyGameplayProperties(\n                    PricePerUnit: 1.5f * 5,\n                    WeightPerUnit: 0.08f,\n                    MaxAmount: AMMO_CLIP_CAPACITY_3_BIG,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.AMMO\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Sniper_High_Speed] =\n                new MyGameplayProperties(\n                    PricePerUnit: 3 * 15,\n                    WeightPerUnit: 0.008f,\n                    MaxAmount: AMMO_CLIP_CAPACITY_2_MEDIUM,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.AMMO\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Sniper_SAPHEI] =\n                new MyGameplayProperties(\n                    PricePerUnit: 3.5f * 15,\n                    WeightPerUnit: 0.1f,\n                    MaxAmount: AMMO_CLIP_CAPACITY_1_SMALL,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.AMMO\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Sniper_BioChem] =\n                new MyGameplayProperties(\n                    PricePerUnit: 4 * 15,\n                    WeightPerUnit: 0.15f,\n                    MaxAmount: AMMO_CLIP_CAPACITY_1_SMALL,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.AMMO\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_Basic] =\n                new MyGameplayProperties(\n                    PricePerUnit: 0.5f * 5,\n                    WeightPerUnit: 0.006f,\n                    MaxAmount: AMMO_CLIP_CAPACITY_4_HUGE,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.AMMO\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_High_Speed] =\n                new MyGameplayProperties(\n                    PricePerUnit: 0.75f * 5,\n                    WeightPerUnit: 0.008f,\n                    MaxAmount: AMMO_CLIP_CAPACITY_4_HUGE,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.AMMO\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_Armor_Piercing_Incendiary] =\n                new MyGameplayProperties(\n                    PricePerUnit: 1 * 5,\n                    WeightPerUnit: 0.01f,\n                    MaxAmount: AMMO_CLIP_CAPACITY_3_BIG,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.AMMO\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_SAPHEI] =\n                new MyGameplayProperties(\n                    PricePerUnit: 1.5f * 5,\n                    WeightPerUnit: 0.012f,\n                    MaxAmount: AMMO_CLIP_CAPACITY_3_BIG,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.AMMO\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_BioChem] =\n                new MyGameplayProperties(\n                    PricePerUnit: 3 * 5,\n                    WeightPerUnit: 0.014f,\n                    MaxAmount: AMMO_CLIP_CAPACITY_3_BIG,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.AMMO\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Machine_Gun_Basic] =\n                new MyGameplayProperties(\n                    PricePerUnit: 0.5f * 5,\n                    WeightPerUnit: 0.06f,\n                    MaxAmount: AMMO_CLIP_CAPACITY_3_BIG,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.AMMO\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Machine_Gun_High_Speed] =\n                new MyGameplayProperties(\n                    PricePerUnit: 0.75f * 5,\n                    WeightPerUnit: 0.08f,\n                    MaxAmount: AMMO_CLIP_CAPACITY_3_BIG,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.AMMO\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Machine_Gun_Armor_Piercing_Incendiary] =\n                new MyGameplayProperties(\n                    PricePerUnit: 1 * 5,\n                    WeightPerUnit: 0.1f,\n                    MaxAmount: AMMO_CLIP_CAPACITY_3_BIG,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.AMMO\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Machine_Gun_SAPHEI] =\n                new MyGameplayProperties(\n                    PricePerUnit: 1.5f * 5,\n                    WeightPerUnit: 0.12f,\n                    MaxAmount: AMMO_CLIP_CAPACITY_3_BIG,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.AMMO\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Machine_Gun_BioChem] =\n                new MyGameplayProperties(\n                    PricePerUnit: 3 * 5,\n                    WeightPerUnit: 0.14f,\n                    MaxAmount: AMMO_CLIP_CAPACITY_3_BIG,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.AMMO\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Shotgun_Basic] =\n                new MyGameplayProperties(\n                    PricePerUnit: 30f,\n                    WeightPerUnit: 0.05f,\n                    MaxAmount: AMMO_CLIP_CAPACITY_2_MEDIUM,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.AMMO\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Shotgun_High_Speed] =\n                new MyGameplayProperties(\n                    PricePerUnit: 45f,\n                    WeightPerUnit: 0.06f,\n                    MaxAmount: AMMO_CLIP_CAPACITY_2_MEDIUM,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.AMMO\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Shotgun_Explosive] =\n                new MyGameplayProperties(\n                    PricePerUnit: 70f,\n                    WeightPerUnit: 0.1f,\n                    MaxAmount: AMMO_CLIP_CAPACITY_2_MEDIUM,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.AMMO\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Shotgun_Armor_Piercing] =\n                new MyGameplayProperties(\n                    PricePerUnit: 60f,\n                    WeightPerUnit: 0.1f,\n                    MaxAmount: AMMO_CLIP_CAPACITY_2_MEDIUM,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.AMMO\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_Basic] =\n                new MyGameplayProperties(\n                    PricePerUnit: 50,\n                    WeightPerUnit: 0.07f,\n                    MaxAmount: AMMO_CANNON_1_BIG,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.AMMO\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_High_Speed] =\n                new MyGameplayProperties(\n                    PricePerUnit: 80,\n                    WeightPerUnit: 0.09f,\n                    MaxAmount: AMMO_CANNON_1_BIG,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.AMMO\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_Armor_Piercing_Incendiary] =\n                new MyGameplayProperties(\n                    PricePerUnit: 100,\n                    WeightPerUnit: 0.1f,\n                    MaxAmount: AMMO_CANNON_3_SMALL,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.AMMO\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_SAPHEI] =\n                new MyGameplayProperties(\n                    PricePerUnit: 360,\n                    WeightPerUnit: 0.1f,\n                    MaxAmount: AMMO_CANNON_2_MEDIUM,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.AMMO\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_Proximity_Explosive] =\n                new MyGameplayProperties(\n                    PricePerUnit: 300,\n                    WeightPerUnit: 0.15f,\n                    MaxAmount: AMMO_CANNON_2_MEDIUM,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.AMMO\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_Tunnel_Buster] =\n                new MyGameplayProperties(\n                    PricePerUnit: 300,\n                    WeightPerUnit: 0.2f,\n                    MaxAmount: AMMO_CANNON_2_MEDIUM,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.AMMO\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Guided_Missile_Visual_Detection] =\n                new MyGameplayProperties(\n                    PricePerUnit: 500,\n                    WeightPerUnit: 0.2f,\n                    MaxAmount: AMMO_ROCKET_3_BIG,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.AMMO\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Guided_Missile_Engine_Detection] =\n                new MyGameplayProperties(\n                    PricePerUnit: 200,\n                    WeightPerUnit: 0.2f,\n                    MaxAmount: AMMO_ROCKET_3_BIG,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.AMMO\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Guided_Missile_Radar_Detection] =\n                new MyGameplayProperties(\n                    PricePerUnit: 200,\n                    WeightPerUnit: 0.2f,\n                    MaxAmount: AMMO_ROCKET_3_BIG,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.AMMO\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Missile_Basic] =\n                new MyGameplayProperties(\n                    PricePerUnit: 50,\n                    WeightPerUnit: 0.2f,\n                    MaxAmount: AMMO_ROCKET_3_BIG,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.AMMO\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Sphere_Explosive] =\n                new MyGameplayProperties(\n                    PricePerUnit: 100,\n                    WeightPerUnit: 0.3f,\n                    MaxAmount: AMMO_SPECIAL_2_FEW,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.AMMO\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Directional_Explosive] =\n                new MyGameplayProperties(\n                    PricePerUnit: 100,\n                    WeightPerUnit: 0.3f,\n                    MaxAmount: AMMO_SPECIAL_2_FEW,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.AMMO\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Time_Bomb] =\n                new MyGameplayProperties(\n                    PricePerUnit: 120,\n                    WeightPerUnit: 0.3f,\n                    MaxAmount: AMMO_SPECIAL_1_SINGLE,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.AMMO\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Remote_Bomb] =\n                new MyGameplayProperties(\n                    PricePerUnit: 130,\n                    WeightPerUnit: 0.3f,\n                    MaxAmount: AMMO_SPECIAL_1_SINGLE,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.AMMO\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Asteroid_Killer] =\n                new MyGameplayProperties(\n                    PricePerUnit: 250,\n                    WeightPerUnit: 0.1f,\n                    MaxAmount: AMMO_SPECIAL_1_SINGLE,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.AMMO\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Mine_Smart] =\n                new MyGameplayProperties(\n                    PricePerUnit: 300,\n                    WeightPerUnit: 0.1f,\n                    MaxAmount: AMMO_SPECIAL_3_PACK,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.AMMO\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Mine_Basic] =\n                new MyGameplayProperties(\n                    PricePerUnit: 100,\n                    WeightPerUnit: 0.12f,\n                    MaxAmount: AMMO_SPECIAL_3_PACK,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.AMMO\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Gravity_Bomb] =\n                new MyGameplayProperties(\n                    PricePerUnit: 1000,\n                    WeightPerUnit: 0.1f,\n                    MaxAmount: AMMO_SPECIAL_2_FEW,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.AMMO\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Hologram] =\n                new MyGameplayProperties(\n                    PricePerUnit: 500,\n                    WeightPerUnit: 0.3f,\n                    MaxAmount: AMMO_SPECIAL_2_FEW,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.AMMO\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Decoy_Flare] =\n                new MyGameplayProperties(\n                    PricePerUnit: 1000,\n                    WeightPerUnit: 0.1f,\n                    MaxAmount: AMMO_SPECIAL_3_PACK,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.AMMO\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Flash_Bomb] =\n                new MyGameplayProperties(\n                    PricePerUnit: 500,\n                    WeightPerUnit: 0.1f,\n                    MaxAmount: AMMO_SPECIAL_2_FEW,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.AMMO\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Illuminating_Shell] =\n                new MyGameplayProperties(\n                    PricePerUnit: 100,\n                    WeightPerUnit: 0.1f,\n                    MaxAmount: AMMO_SPECIAL_3_PACK,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.AMMO\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Smoke_Bomb] =\n                new MyGameplayProperties(\n                    PricePerUnit: 200,\n                    WeightPerUnit: 0.1f,\n                    MaxAmount: AMMO_SPECIAL_2_FEW,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.AMMO\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Remote_Camera] =\n                new MyGameplayProperties(\n                    PricePerUnit: 1000,\n                    WeightPerUnit: 0.1f,\n                    MaxAmount: AMMO_SPECIAL_2_FEW,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.AMMO\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_Mine_BioChem] =\n                new MyGameplayProperties(\n                    PricePerUnit: 300,\n                    WeightPerUnit: 0.1f,\n                    MaxAmount: AMMO_SPECIAL_2_FEW,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.AMMO\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Missile_BioChem] =\n                new MyGameplayProperties(\n                    PricePerUnit: 250,\n                    WeightPerUnit: 0.2f,\n                    MaxAmount: AMMO_ROCKET_1_SMALL,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.AMMO\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_BioChem] =\n                new MyGameplayProperties(\n                    PricePerUnit: 250,\n                    WeightPerUnit: 0.1f,\n                    MaxAmount: AMMO_CANNON_3_SMALL,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.AMMO\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Autocannon_EMP] =\n                new MyGameplayProperties(\n                    PricePerUnit: 14,\n                    WeightPerUnit: 0.014f,\n                    MaxAmount: AMMO_CLIP_CAPACITY_3_BIG,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.AMMO\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Sniper_EMP] =\n                new MyGameplayProperties(\n                    PricePerUnit: 30,\n                    WeightPerUnit: 0.008f,\n                    MaxAmount: AMMO_CLIP_CAPACITY_1_SMALL,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.AMMO\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Machine_Gun_EMP] =\n                new MyGameplayProperties(\n                    PricePerUnit: 12.0f,\n                    WeightPerUnit: 0.06f,\n                    MaxAmount: AMMO_CLIP_CAPACITY_3_BIG,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.AMMO\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Missile_EMP] =\n                new MyGameplayProperties(\n                    PricePerUnit: 800,\n                    WeightPerUnit: 0.2f,\n                    MaxAmount: AMMO_ROCKET_1_SMALL,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.AMMO\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Cannon_EMP] =\n                new MyGameplayProperties(\n                    PricePerUnit: 500,\n                    WeightPerUnit: 0.1f,\n                    MaxAmount: AMMO_CANNON_3_SMALL,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.AMMO\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo][(int)MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum.Universal_Launcher_EMP_Bomb] =\n                new MyGameplayProperties(\n                    PricePerUnit: 2000,\n                    WeightPerUnit: 0.3f,\n                    MaxAmount: AMMO_SPECIAL_2_FEW,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.AMMO\n                   );\n            #endregion\n\n            #region smallship engines\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Engine] = new MyGameplayProperties[MyMwcUtils.GetMaxValueFromEnum<MyMwcObjectBuilder_SmallShip_Engine_TypesEnum>() + 1];\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Engine][(int)MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.Chemical_1] =\n                new MyGameplayProperties(\n                    PricePerUnit: 15000,\n                    WeightPerUnit: 150,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.DEVICE\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Engine][(int)MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.Chemical_2] =\n                new MyGameplayProperties(\n                    PricePerUnit: 21000,\n                    WeightPerUnit: 210,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.DEVICE\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Engine][(int)MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.Chemical_3] =\n                new MyGameplayProperties(\n                    PricePerUnit: 30000,\n                    WeightPerUnit: 300,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.DEVICE\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Engine][(int)MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.Chemical_4] =\n                new MyGameplayProperties(\n                    PricePerUnit: 32000,\n                    WeightPerUnit: 320,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.DEVICE\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Engine][(int)MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.Chemical_5] =\n                new MyGameplayProperties(\n                    PricePerUnit: 40000,\n                    WeightPerUnit: 400,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.DEVICE\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Engine][(int)MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.Nuclear_1] =\n                new MyGameplayProperties(\n                    PricePerUnit: 30000,\n                    WeightPerUnit: 3000,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.DEVICE\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Engine][(int)MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.Nuclear_2] =\n                new MyGameplayProperties(\n                    PricePerUnit: 35000,\n                    WeightPerUnit: 350,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.DEVICE\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Engine][(int)MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.Nuclear_3] =\n                new MyGameplayProperties(\n                    PricePerUnit: 58000,\n                    WeightPerUnit: 580,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.DEVICE\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Engine][(int)MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.Nuclear_4] =\n                new MyGameplayProperties(\n                    PricePerUnit: 70000,\n                    WeightPerUnit: 700,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.DEVICE\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Engine][(int)MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.Nuclear_5] =\n                new MyGameplayProperties(\n                    PricePerUnit: 88000,\n                    WeightPerUnit: 880,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.DEVICE\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Engine][(int)MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.PowerCells_1] =\n                new MyGameplayProperties(\n                    PricePerUnit: 20000,\n                    WeightPerUnit: 200,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.DEVICE\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Engine][(int)MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.PowerCells_2] =\n                new MyGameplayProperties(\n                    PricePerUnit: 25000,\n                    WeightPerUnit: 250,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.DEVICE\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Engine][(int)MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.PowerCells_3] =\n                new MyGameplayProperties(\n                    PricePerUnit: 28000,\n                    WeightPerUnit: 280,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.DEVICE\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Engine][(int)MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.PowerCells_4] =\n                new MyGameplayProperties(\n                    PricePerUnit: 30000,\n                    WeightPerUnit: 300,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.DEVICE\n                   );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Engine][(int)MyMwcObjectBuilder_SmallShip_Engine_TypesEnum.PowerCells_5] =\n                new MyGameplayProperties(\n                    PricePerUnit: 38000,\n                    WeightPerUnit: 380,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.DEVICE\n                   );\n            #endregion\n\n            #region ore\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Ore] = new MyGameplayProperties[MyMwcUtils.GetMaxValueFromEnum<MyMwcObjectBuilder_Ore_TypesEnum>() + 1];\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Ore][(int)MyMwcObjectBuilder_Ore_TypesEnum.IRON] =\n                new MyGameplayProperties(\n                    PricePerUnit: 1250,\n                    WeightPerUnit: 0.078f,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.ORE\n                    );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Ore][(int)MyMwcObjectBuilder_Ore_TypesEnum.URANITE] =\n                new MyGameplayProperties(\n                    PricePerUnit: 13333,\n                    WeightPerUnit: 0.195f,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.ORE\n                    );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Ore][(int)MyMwcObjectBuilder_Ore_TypesEnum.HELIUM] =\n                new MyGameplayProperties(\n                    PricePerUnit: 5000,\n                    WeightPerUnit: 0.1f,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.ORE\n                    );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Ore][(int)MyMwcObjectBuilder_Ore_TypesEnum.ICE] =\n                new MyGameplayProperties(\n                    PricePerUnit: 25,\n                    WeightPerUnit: 0.1f,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.ORE\n                    );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Ore][(int)MyMwcObjectBuilder_Ore_TypesEnum.GOLD] =\n                new MyGameplayProperties(\n                    PricePerUnit: 6667,\n                    WeightPerUnit: 0.3f,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.ORE\n                    );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Ore][(int)MyMwcObjectBuilder_Ore_TypesEnum.SILVER] =\n                new MyGameplayProperties(\n                    PricePerUnit: 4667,\n                    WeightPerUnit: 0.2f,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.ORE\n                    );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Ore][(int)MyMwcObjectBuilder_Ore_TypesEnum.COBALT] =\n                new MyGameplayProperties(\n                    PricePerUnit: 750,\n                    WeightPerUnit: 0.65f,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.ORE\n                    );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Ore][(int)MyMwcObjectBuilder_Ore_TypesEnum.SILICON] =\n                new MyGameplayProperties(\n                    PricePerUnit: 125,\n                    WeightPerUnit: 0.4f,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.ORE\n                    );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Ore][(int)MyMwcObjectBuilder_Ore_TypesEnum.PLATINUM] =\n                new MyGameplayProperties(\n                    PricePerUnit: 5667,\n                    WeightPerUnit: 0.3f,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.ORE\n                    );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Ore][(int)MyMwcObjectBuilder_Ore_TypesEnum.NICKEL] =\n                new MyGameplayProperties(\n                    PricePerUnit: 1000,\n                    WeightPerUnit: 0.6f,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.ORE\n                    );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Ore][(int)MyMwcObjectBuilder_Ore_TypesEnum.COBALT] =\n                new MyGameplayProperties(\n                    PricePerUnit: 750,\n                    WeightPerUnit: 0.65f,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.ORE\n                    );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Ore][(int)MyMwcObjectBuilder_Ore_TypesEnum.MAGNESIUM] =\n                new MyGameplayProperties(\n                    PricePerUnit: 1000,\n                    WeightPerUnit: 0.15f,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.ORE\n                    );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Ore][(int)MyMwcObjectBuilder_Ore_TypesEnum.TREASURE] =\n                new MyGameplayProperties(\n                    PricePerUnit: 200000,\n                    WeightPerUnit: 0.1f,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.ORE\n                    );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Ore][(int)MyMwcObjectBuilder_Ore_TypesEnum.ORGANIC] =\n                new MyGameplayProperties(\n                    PricePerUnit: 66667,\n                    WeightPerUnit: 0.1f,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.ORE\n                    );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Ore][(int)MyMwcObjectBuilder_Ore_TypesEnum.XENON] =\n                new MyGameplayProperties(\n                    PricePerUnit: 1000000,\n                    WeightPerUnit: 0.1f,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.ORE\n                    );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Ore][(int)MyMwcObjectBuilder_Ore_TypesEnum.SNOW] =\n                new MyGameplayProperties(\n                    PricePerUnit: 14,\n                    WeightPerUnit: 0.1f,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.ORE\n                    );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Ore][(int)MyMwcObjectBuilder_Ore_TypesEnum.LAVA] =\n                new MyGameplayProperties(\n                    PricePerUnit: 333,\n                    WeightPerUnit: 0.1f,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.ORE\n                    );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Ore][(int)MyMwcObjectBuilder_Ore_TypesEnum.STONE] =\n                new MyGameplayProperties(\n                    PricePerUnit: 5,\n                    WeightPerUnit: 0.1f,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.ORE\n                    );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Ore][(int)MyMwcObjectBuilder_Ore_TypesEnum.SANDSTONE] =\n                new MyGameplayProperties(\n                    PricePerUnit: 13,\n                    WeightPerUnit: 0.65f,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.ORE\n                    );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Ore][(int)MyMwcObjectBuilder_Ore_TypesEnum.CONCRETE] =\n                new MyGameplayProperties(\n                    PricePerUnit: 13,\n                    WeightPerUnit: 0.65f,\n                    MaxAmount: 1,\n                    UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false ,\n                    itemCategory: ItemCategory.ORE\n                    );\n            #endregion\n\n            #region blueprints\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint] = new MyGameplayProperties[MyMwcUtils.GetMaxValueFromEnum<MyMwcObjectBuilder_Blueprint_TypesEnum>() + 1];\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P430_A01_PASSAGE_10M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P430_A02_PASSAGE_40M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P424_A01_PIPE_BASE] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P423_A01_PIPE_JUNCTION] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P422_A01_PIPE_TURN_90] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P421_A01_PIPE_STRAIGHT_80M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P421_A02_PIPE_STRAIGHT_40M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P421_A03_PIPE_STRAIGHT_10M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P413_G01_JUNCTION_6AXES] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P414_G02_ENTRANCE_60M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P410_G01_TURN_90_RIGHT_0M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P411_G01_STRAIGHT_1] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P411_G02_STRAIGHT_2] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P411_G03_STRAIGHT_3] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P411_G04_STRAIGHT_4] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P414_F02_ENTRANCE_60M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P412_F21_TURN_S_UP] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P412_F22_TURN_S_LEFT] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P412_F23_TURN_S_RIGHT] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P412_F24_TURN_S_DOWN] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P412_F01_TURN_90_UP_230M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P412_F02_TURN_90_LEFT_230M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P412_F03_TURN_90_RIGHT_230M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P412_F04_TURN_90_DOWN_230M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P411_F01_STRAIGHT_1] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P411_F02_STRAIGHT_2] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P411_F03_STRAIGHT_3] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P414_E01_ENTRANCE_60M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P411_E01_STRAIGHT_1] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P411_E02_STRAIGHT_2] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P411_E03_STRAIGHT_3] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P411_E04_STRAIGHT_4] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P411_E05_STRAIGHT_5] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P415_D01_DOORCASE] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P415_D02_DOOR1] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P415_D03_DOOR2_A] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P415_D03_DOOR2_B] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P413_D01_JUNCTION_T_HORIZONTAL] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P413_D03_JUNCTION_X_HORIZONTAL] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P414_D01_ENTRANCE_60M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P411_D01_STRAIGHT_10M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P411_D02_STRAIGHT_40M_WITH_HOLE] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P411_D03_STRAIGHT_60M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P411_D04_STRAIGHT_120M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P411_D05_STRAIGHT_180M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P415_C01_DOOR1] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P415_C01_DOOR2] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P415_C01_DOOR3] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P415_C01_DOOR4] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P413_C01_JUNCTION_T_HORIZONTAL] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P413_C01_JUNCTION_X_HORIZONTAL] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P414_C01_ENTRANCE_60M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P411_C01_STRAIGHT_10M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P411_C02_STRAIGHT_40M_WITH_HOLE] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P411_C03_STRAIGHT_60M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P411_C04_STRAIGHT_120M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P411_C05_STRAIGHT_180M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P415_B01_DOORCASE] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P415_B02_DOOR] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P413_B01_JUNCTION_T_HORIZONTAL] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P413_B02_JUNCTION_T_VERTICAL] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P414_B02_ENTRANCE_60M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P412_B21_TURN_S_UP] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P412_B22_TURN_S_LEFT] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P412_B23_TURN_S_RIGHT] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P412_B24_TURN_S_DOWN] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P412_B11_TURN_90_UP_160M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P412_B12_TURN_90_LEFT_160M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P412_B13_TURN_90_RIGHT_160M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P412_B14_TURN_90_DOWN_160M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P412_B01_TURN_90_UP_80M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P412_B02_TURN_90_LEFT_80M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P412_B03_TURN_90_RIGHT_80M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P412_B04_TURN_90_DOWN_80M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P411_B01_STRAIGHT_10M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n\n\n            //  m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.p411_B02_STRAIGHT_30M_YELLOW] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            // m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.p411_B03_STRAIGHT_320M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            // m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.p411_B04_STRAIGHT_80M_WITH_SIDE_GRATES] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            // m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.p411_B05_STRAIGHT_80M_WITH_SIDE_OPEN] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            // m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.p411_B06_STRAIGHT_180M_CONCRETE] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            // m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.p411_B06_STRAIGHT_200M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            // m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.p411_B07_STRAIGHT_180M_BLUE] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            // m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.p411_B09_STRAIGHT_30M_GRAY] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.p411_B11_STRAIGHT_220M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.p411_B12_STRAIGHT_160M_DARK_METAL] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.p411_B13_STRAIGHT_100M_TUBE_INSIDE] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P415_A01_DOORCASE] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P415_A02_DOOR] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P413_A01_JUNCTION_T_HORIZONTAL] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P413_A02_JUNCTION_T_VERTICAL] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P414_A01_ENTRANCE_30M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P414_A02_ENTRANCE_60M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P412_A21_TURN_S_UP] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P412_A22_TURN_S_LEFT] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P412_A23_TURN_S_RIGHT] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P412_A24_TURN_S_DOWN] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P412_A11_TURN_90_UP_160M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P412_A12_TURN_90_LEFT_160M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P412_A13_TURN_90_RIGHT_160M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P412_A14_TURN_90_DOWN_160M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P412_A01_TURN_90_UP_80M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P412_A02_TURN_90_LEFT_80M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P412_A03_TURN_90_RIGHT_80M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P412_A04_TURN_90_DOWN_80M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P411_A01_STRAIGHT_10M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P411_A02_STRAIGHT_60M_WITH_HOLE] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P411_A03_STRAIGHT_120M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P411_A04_STRAIGHT_80M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P411_A05_STRAIGHT_80M_WITH_EXTENSION] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P382_E01_BRIDGE5] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P382_D01_BRIDGE4] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P382_C01_BRIDGE3] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P382_B01_BRIDGE2] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P382_A01_BRIDGE1] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P381_C01_BUILDING3] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P381_B01_BUILDING2] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P381_A01_BUILDING1] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P361_A01_SMALL_HANGAR] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P362_A01_SHORT_DISTANCE_ANTENNA] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P361_A01_LONG_DISTANCE_ANTENNA] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P351_A01_WEAPON_MOUNT] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P345_A01_REFINERY] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P344_A01_CONTAINER_ARM_FILLED] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P344_A02_CONTAINER_ARM_EMPTY] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P343_A01_ORE_STORAGE] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P342_A01_LOADING_BAY] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P341_B01_OPEN_DOCK_VARIATION1] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P341_B02_OPEN_DOCK_VARIATION2] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P341_A01_OPEN_DOCK_VARIATION1] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P341_A02_OPEN_DOCK_VARIATION2] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P333_A01_HYDROPONIC_BUILDING] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P332_A01_OXYGEN_STORAGE] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P331_A01_OXYGEN_GENERATOR] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P324B01_FUEL_STORAGE_B] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P324A01_FUEL_STORAGE_A] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P323A01_FUEL_GENERATOR] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P322A01_BATTERY] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P321C01_INERTIA_GENERATOR] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P321B01_NUCLEAR_REACTOR] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P321A01_SOLAR_PANEL] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P312A01_SHORT_TERM_THRUSTER_LATITUDE] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P312A02_SHORT_TERM_THRUSTER_LATERAL] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P311A01_LONG_TERM_THRUSTER] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P231A01_ARMOR] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P231A02_ARMOR] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P231A03_ARMOR] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P231A04_ARMOR] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P231A05_ARMOR] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P231A06_ARMOR] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P231A07_ARMOR] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P231A08_ARMOR] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P231A09_ARMOR] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P231A10_ARMOR] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P231A11_ARMOR] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P231A12_ARMOR] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P231A13_ARMOR] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P231A14_ARMOR] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P231A15_ARMOR] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P231A16_ARMOR] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P231A17_ARMOR] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P231A18_ARMOR] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P221E01_CHAMBER_V1] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P221D01_CHAMBER_V1] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P221C01_CHAMBER_V1] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P221B01_CHAMBER_V1] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P221A01_CHAMBER_V1] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P211G01_PANEL_120MX60M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P211G02_PANEL_60MX60M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P211G03_PANEL_60MX30M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P211F01_PANEL_120MX60M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P211F02_PANEL_60MX60M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P211F03_PANEL_60MX30M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P211E01_PANEL_120MX60M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P211E02_PANEL_60MX60M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P211E03_PANEL_60MX30M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P211D01_PANEL_120MX60M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P211D02_PANEL_60MX60M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P211D03_PANEL_60MX30M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P211C01_PANEL_120MX60M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P211C02_PANEL_60MX60M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P211C03_PANEL_60MX30M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P211B01_PANEL_120MX60M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P211B02_PANEL_60MX60M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P211B03_PANEL_60MX30M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P211A01_PANEL_120MX60M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P211A02_PANEL_60MX60M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P211A03_PANEL_60MX30M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P142B01_CAGE_EMPTY] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P142B02_CAGE_HALFCUT] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P142B03_CAGE_WITH_CORNERS] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P142B11_CAGE_PILLAR] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P142B12_CAGE_EDGE] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P142A01_CAGE_EMPTY] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P142A02_CAGE_HALFCUT] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P142A03_CAGE_WITH_CORNERS] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P142A11_CAGE_PILLAR] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P142A12_CAGE_EDGE] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P141B01_THICK_FRAME_STRAIGHT_10M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P141B02_THICK_FRAME_STRAIGHT_60M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P141B11_THICK_FRAME_EDGE] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P141B12_THICK_FRAME_CORNER] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P141B31_THICK_FRAME_JOINT] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P141A01_THICK_FRAME_STRAIGHT_10M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P141A02_THICK_FRAME_STRAIGHT_60M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P141A11_THICK_FRAME_EDGE] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P141A12_THICK_FRAME_CORNER] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P141A31_THICK_FRAME_JOINT] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P120J01_J_STRAIGHT_30M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P130J02_J_STRAIGHT_10M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P120I01_I_STRAIGHT_30M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P130I02_I_STRAIGHT_10M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P120H01_H_STRAIGHT_30M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P130H02_H_STRAIGHT_10M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P120G01_G_STRAIGHT_30M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P130G02_G_STRAIGHT_10M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P120F01_F_STRAIGHT_30M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P130F02_F_STRAIGHT_10M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P120E01_E_STRAIGHT_30M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P130E02_E_STRAIGHT_10M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P120D01_D_STRAIGHT_30M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P130D02_D_STRAIGHT_10M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P120C01_C_STRAIGHT_30M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P130C02_C_STRAIGHT_10M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P120B01_B_STRAIGHT_30M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P130B02_B_STRAIGHT_10M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P120A01_A_STRAIGHT_30M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P130A02_A_STRAIGHT_10M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P120D01_D_STRAIGHT_10M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P120D02_D_STRAIGHT_40M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P120C01_C_STRAIGHT_10M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P120C02_C_STRAIGHT_40M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P120B01_B_STRAIGHT_10M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P120B02_B_STRAIGHT_40M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P120A01_STRONG_LATTICE_STRAIGHT_10M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P120A02_STRONG_LATTICE_STRAIGHT_60M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P120A03_STRONG_LATTICE_STRAIGHT_120M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P120A21_STRONG_LATTICE_JUNCTION_T_STRONG] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P120A22_STRONG_LATTICE_JUNCTION_T_WEAK] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P120A23_STRONG_LATTICE_JUNCTION_T_ROTATED] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P120A51_STRONG_TO_WEAK_LATTICE_2TO1] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P120A52_STRONG_TO_WEAK_LATTICE_1TO2] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P120A61_WEAK_LATTICE_JUNCTION_T_ROTATED] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P110B01_LATTICE_BEAM_STRAIGHT_10M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P110B02_LATTICE_BEAM_STRAIGHT_30M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P110B03_LATTICE_BEAM_STRAIGHT_60M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P110B04_LATTICE_BEAM_STRAIGHT_60M_WITH_PANELS] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P110B21_LATTICE_BEAM_JUNCTION_T_STRONG] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P110B22_LATTICE_BEAM_JUNCTION_T_WEAK] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P110B31_LATTICE_BEAM_JOINT_HORIZONTAL] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P110B32_LATTICE_BEAM_JOINT_VERTICAL] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P110A01_SOLID_BEAM_STRAIGHT_10M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P110A02_SOLID_BEAM_STRAIGHT_20M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P110A03_SOLID_BEAM_STRAIGHT_40M_WITH_HOLE] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P110A04_SOLID_BEAM_STRAIGHT_40M_LATTICE] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P110A05_SOLID_BEAM_STRAIGHT_80M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P110A11_SOLID_BEAM_JUNCTION_X_STRONG] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P110A12_SOLID_BEAM_JUNCTION_X_WEAK] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P110A13_SOLID_BEAM_JUNCTION_X_ROTATED] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P110A21_SOLID_BEAM_JUNCTION_T_STRONG] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P110A22_SOLID_BEAM_JUNCTION_T_WEAK] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P110A23_SOLID_BEAM_JUNCTION_T_ROTATED] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P110A31_SOLID_BEAM_JOINT_HORIZONTAL] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P110A32_SOLID_BEAM_JOINT_VERTICAL] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P110A33_SOLID_BEAM_JOINT_LONGITUDINAL] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P110A41_SOLID_BEAM_SUPERJOINT] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.DEFAULT_LIGHT_0] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P521_A01_LIGHT1] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P521_A02_LIGHT2] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P521_A03_LIGHT3] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P521_A04_LIGHT4] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.DEFAULT_PARTICLE_PREFAB_0] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P551_A01_PARTICLES] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P551_B01_PARTICLES] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P551_C01_PARTICLES] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P551_D01_PARTICLES] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.DEFAULT_SOUND_PREFAB_0] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P561_A01_SOUND] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P561_B01_SOUND] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P561_C01_SOUND] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P561_D01_SOUND] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P352_A01_LARGESHIP_AUTOCANNON] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P352_A01_LARGESHIP_MACHINEGUN] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P352_A01_LARGESHIP_CIWS] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P352_A01_LARGESHIP_MISSILE_BASIC4] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P352_A01_LARGESHIP_MISSILE_BASIC6] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P352_A01_LARGESHIP_MISSILE_BASIC9] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P352_A02_LARGESHIP_MISSILE_GUIDED4] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P352_A02_LARGESHIP_MISSILE_GUIDED6] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P352_A02_LARGESHIP_MISSILE_GUIDED9] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P511_A01_BILLBOARD] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P511_A02_BILLBOARD] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P511_A03_BILLBOARD] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P511_A04_BILLBOARD] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P511_A05_BILLBOARD] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P511_A06_BILLBOARD] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P511_A07_BILLBOARD] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P511_A08_BILLBOARD] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P511_A09_BILLBOARD] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P511_A10_BILLBOARD] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P511_A11_BILLBOARD] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P511_A12_BILLBOARD] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P511_A13_BILLBOARD] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P511_A14_BILLBOARD] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P511_A15_BILLBOARD] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P511_A16_BILLBOARD] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P531_A01_SIGN1] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P531_A02_SIGN2] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P531_A03_SIGN3] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P531_A04_SIGN4] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P531_A05_SIGN5] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P531_A06_SIGN6] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P531_A07_SIGN7] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P531_A08_SIGN8] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P531_A09_SIGN9] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P531_A10_SIGN10] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P531_A11_SIGN11] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P531_A12_SIGN12] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P221_A02_CHAMBER_V2] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P221_B02_CHAMBER_V2] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P221_C02_CHAMBER_V2] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P221_D02_CHAMBER_V2] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P221_E02_CHAMBER_V2] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P130_A01_STRAIGHT_10M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P130_A02_STRAIGHT_30M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P130_B01_STRAIGHT_10M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P130_B02_STRAIGHT_30M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P130_C01_STRAIGHT_10M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P130_C02_STRAIGHT_30M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P130_D01_STRAIGHT_10M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P130_D02_STRAIGHT_30M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P130_E01_STRAIGHT_10M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P130_E02_STRAIGHT_30M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P321_B01_SOLAR_PANEL] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P321_C01_SOLAR_PANEL] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P413_D02_JUNCTION_T_VERTICAL] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P413_D04_JUNCTION_X_VERTICAL] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P412_F11_TURN_90_UP_230M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P412_F12_TURN_90_LEFT_230M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P412_F13_TURN_90_RIGHT_230M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P412_F14_TURN_90_DOWN_230M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P411_F04_STRAIGHT_4] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P411_F05_STRAIGHT_5] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P411_G05_STRAIGHT_5] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P414_F01_ENTRANCE_60M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P414_G01_ENTRANCE_60M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P571_A01_TRAFFIC_SIGN] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P571_B01_TRAFFIC_SIGN] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P571_BOX01_TRAFFIC_SIGN] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P571_BOX02_TRAFFIC_SIGN] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P571_C01_TRAFFIC_SIGN] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P571_D01_TRAFFIC_SIGN] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P571_E01_TRAFFIC_SIGN] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P571_F01_TRAFFIC_SIGN] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P571_G01_TRAFFIC_SIGN] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P571_H01_TRAFFIC_SIGN] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P571_I01_TRAFFIC_SIGN] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P571_J01_TRAFFIC_SIGN] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P571_K01_TRAFFIC_SIGN] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P571_L01_TRAFFIC_SIGN] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.SMALL_SHIP_WEAPON_AUTOCANNON] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.SMALL_SHIP_WEAPON_AUTOMATIC_RIFLE_WITH_SILENCER] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.SMALL_SHIP_WEAPON_CANNON] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.SMALL_SHIP_WEAPON_DRILLING_DEVICE_CRUSHER] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.SMALL_SHIP_WEAPON_DRILLING_DEVICE_LASER] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.SMALL_SHIP_WEAPON_DRILLING_DEVICE_NUCLEAR] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.SMALL_SHIP_WEAPON_DRILLING_DEVICE_PRESSURE] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.SMALL_SHIP_WEAPON_DRILLING_DEVICE_SAW] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.SMALL_SHIP_WEAPON_DRILLING_DEVICE_THERMAL] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.SMALL_SHIP_WEAPON_HARVESTING_DEVICE] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.SMALL_SHIP_WEAPON_MACHINE_GUN] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.SMALL_SHIP_WEAPON_MISSILE_LAUNCHER] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.SMALL_SHIP_WEAPON_SHOTGUN] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.SMALL_SHIP_WEAPON_SNIPER] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.SMALL_SHIP_WEAPON_UNIVERSAL_LAUNCHER_BACK] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.SMALL_SHIP_WEAPON_UNIVERSAL_LAUNCHER_FRONT] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P385_A01_TEMPLE_900M] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P384_A01_HOSPITAL] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P383_A01_CHURCH] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P334_A01_FOOD_GROW] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P345_A01_BIO_EXP] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P345_A01_BIO_MACH_EXP] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P345_A01_RECYCLE] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P541_ESCAPE_POD] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P541_ESCAPE_POD_BASE] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P541_VENTILATOR_BODY] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P541_VENTILATOR_PROPELLER] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P349_A_TOWER] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P349_B_TOWER] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P349_C_TOWER] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.P361_A02_HANGAR_PANEL] =\n            //    new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );  \n\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.AdvancedConstructionKit] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.BasicConstructionKit] =\n                new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.FortificationKit] =\n                new MyGameplayProperties(PricePerUnit: 50000, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.HonorableKit] =\n                new MyGameplayProperties(PricePerUnit: 50000, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.SuperiorConstructionKit] =\n                new MyGameplayProperties(PricePerUnit: 100000, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.UtilitiesKit] =\n                new MyGameplayProperties(PricePerUnit: 50000, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Blueprint][(int)MyMwcObjectBuilder_Blueprint_TypesEnum.WeaponKit] =\n                new MyGameplayProperties(PricePerUnit: 50000, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            #endregion\n\n            #region prefabs\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab] = new MyGameplayProperties[MyMwcUtils.GetMaxValueFromEnum<MyMwcObjectBuilder_Prefab_TypesEnum>() + 1];\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P430_A01_PASSAGE_10M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_SMALL);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P430_A02_PASSAGE_40M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_MEDIUM);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P424_A01_PIPE_BASE] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_TINY);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P423_A01_PIPE_JUNCTION] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P422_A01_PIPE_TURN_90] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P421_A01_PIPE_STRAIGHT_80M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_SMALL);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P421_A02_PIPE_STRAIGHT_40M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P421_A03_PIPE_STRAIGHT_10M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_TINY);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P413_G01_JUNCTION_6AXES] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_SHORT);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P414_G02_ENTRANCE_60M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PANEL_MEDIUM);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P410_G01_TURN_90_RIGHT_0M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_SHORT);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_G01_STRAIGHT_1] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_VERYSHORT);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_G02_STRAIGHT_2] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_SHORT);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_G03_STRAIGHT_3] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_SHORT);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_G04_STRAIGHT_4] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_LONG);\n            /*m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P414_F02_ENTRANCE_60M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_LONG);*/\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_F21_TURN_S_UP] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_LONG);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_F22_TURN_S_LEFT] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_LONG);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_F23_TURN_S_RIGHT] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_LONG);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_F24_TURN_S_DOWN] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_LONG);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_F01_TURN_90_UP_230M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_LONG);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_F02_TURN_90_LEFT_230M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_LONG);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_F03_TURN_90_RIGHT_230M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_LONG);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_F04_TURN_90_DOWN_230M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_LONG);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_F01_STRAIGHT_1] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_SHORT);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_F02_STRAIGHT_2] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_SHORT);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_F03_STRAIGHT_3] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_SHORT);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P414_E01_ENTRANCE_60M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PANEL_MEDIUM);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_E01_STRAIGHT_1] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_VERYSHORT);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_E02_STRAIGHT_2] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_SHORT);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_E03_STRAIGHT_3] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_LONG);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_E04_STRAIGHT_4] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_LONG);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_E05_STRAIGHT_5] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_LONG);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P415_D01_DOORCASE] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PANEL_LARGE);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P415_D02_DOOR1] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PANEL_MEDIUM);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P415_D03_DOOR2_A] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PANEL_MEDIUM);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P415_D03_DOOR2_B] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PANEL_MEDIUM);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P413_D01_JUNCTION_T_HORIZONTAL] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_LONG);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P413_D03_JUNCTION_X_HORIZONTAL] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_LONG);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P414_D01_ENTRANCE_60M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PANEL_MEDIUM);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_D01_STRAIGHT_10M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_VERYSHORT);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_D02_STRAIGHT_40M_WITH_HOLE] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_SHORT);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_D03_STRAIGHT_60M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_SHORT);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_D04_STRAIGHT_120M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_LONG);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_D05_STRAIGHT_180M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_LONG);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P413_C01_JUNCTION_T_HORIZONTAL] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_LONG);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P413_C01_JUNCTION_X_HORIZONTAL] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_LONG);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P414_C01_ENTRANCE_60M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PANEL_MEDIUM);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_C01_STRAIGHT_10M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_VERYSHORT);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_C02_STRAIGHT_40M_WITH_HOLE] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_SHORT);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_C03_STRAIGHT_60M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_SHORT);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_C04_STRAIGHT_120M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_LONG);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_C05_STRAIGHT_180M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_LONG);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P415_B01_DOORCASE] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PANEL_LARGE);\n            /*m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P415_B02_DOOR] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_DOOR);*/\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P413_B01_JUNCTION_T_HORIZONTAL] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_LONG);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P413_B02_JUNCTION_T_VERTICAL] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_LONG);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P414_B02_ENTRANCE_60M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PANEL_MEDIUM);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_B21_TURN_S_UP] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_LONG);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_B22_TURN_S_LEFT] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_LONG);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_B23_TURN_S_RIGHT] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_LONG);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_B24_TURN_S_DOWN] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_LONG);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_B11_TURN_90_UP_160M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_LONG);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_B12_TURN_90_LEFT_160M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_LONG);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_B13_TURN_90_RIGHT_160M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_LONG);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_B14_TURN_90_DOWN_160M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_LONG);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_B01_TURN_90_UP_80M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_LONG / 2);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_B02_TURN_90_LEFT_80M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_LONG / 2);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_B03_TURN_90_RIGHT_80M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_LONG / 2);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_B04_TURN_90_DOWN_80M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_LONG / 2);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_B01_STRAIGHT_10M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_VERYSHORT);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.p411_B02_STRAIGHT_30M_YELLOW] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_VERYSHORT);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.p411_B03_STRAIGHT_320M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_LONG);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.p411_B04_STRAIGHT_80M_WITH_SIDE_GRATES] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_SHORT);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.p411_B05_STRAIGHT_80M_WITH_SIDE_OPEN] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_SHORT);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.p411_B06_STRAIGHT_180M_CONCRETE] =\n    new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n        MaxHealth: MAXHEALTH_TUNNEL_LONG);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.p411_B06_STRAIGHT_200M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_LONG);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.p411_B07_STRAIGHT_180M_BLUE] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_LONG);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.p411_B09_STRAIGHT_30M_GRAY] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_SHORT);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.p411_B11_STRAIGHT_220M] =\n    new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n        MaxHealth: MAXHEALTH_TUNNEL_LONG);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.p411_B12_STRAIGHT_160M_DARK_METAL] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_LONG);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.p411_B13_STRAIGHT_100M_TUBE_INSIDE] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_LONG);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P413_A01_JUNCTION_T_HORIZONTAL] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_LONG);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P413_A02_JUNCTION_T_VERTICAL] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_LONG);\n            /*m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P414_A01_ENTRANCE_30M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PANEL_MEDIUM);*/\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P414_A02_ENTRANCE_60M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PANEL_MEDIUM);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_A21_TURN_S_UP] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_LONG);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_A22_TURN_S_LEFT] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_LONG);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_A23_TURN_S_RIGHT] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_LONG);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_A24_TURN_S_DOWN] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_LONG);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_A11_TURN_90_UP_160M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_LONG);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_A12_TURN_90_LEFT_160M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_LONG);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_A13_TURN_90_RIGHT_160M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_LONG);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_A14_TURN_90_DOWN_160M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_LONG);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_A01_TURN_90_UP_80M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_LONG / 2);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_A02_TURN_90_LEFT_80M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_LONG / 2);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_A03_TURN_90_RIGHT_80M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_LONG / 2);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_A04_TURN_90_DOWN_80M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_LONG / 2);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_A01_STRAIGHT_10M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_VERYSHORT);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_A02_STRAIGHT_60M_WITH_HOLE] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_SHORT);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_A03_STRAIGHT_120M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_LONG);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_A04_STRAIGHT_80M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_LONG);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_A05_STRAIGHT_80M_WITH_EXTENSION] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_LONG);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P382_E01_BRIDGE5] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_BUILDING_MEDIUM);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P382_D01_BRIDGE4] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_BUILDING_MEDIUM);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P382_C01_BRIDGE3] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_BUILDING_SMALL);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P382_B01_BRIDGE2] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_BUILDING_SMALL);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P382_A01_BRIDGE1] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_BUILDING_SMALL);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P381_C01_BUILDING4] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_BUILDING_MEDIUM);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P381_C01_BUILDING3] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_BUILDING_SMALL);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P381_B01_BUILDING2] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_BUILDING_MEDIUM);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P381_A01_BUILDING1] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_BUILDING_MEDIUM);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P362_A01_SHORT_DISTANCE_ANTENNA] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P361_A01_LONG_DISTANCE_ANTENNA] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P351_A01_WEAPON_MOUNT] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_SMALL);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P345_A01_REFINERY] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_MEDIUM);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P344_A01_CONTAINER_ARM_FILLED] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB * 2);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P344_A02_CONTAINER_ARM_EMPTY] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P343_A01_ORE_STORAGE] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_LARGE);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P342_A01_LOADING_BAY] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_DOCK * 1.5f);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P341_B01_OPEN_DOCK_VARIATION1] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_DOCK);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P341_B02_OPEN_DOCK_VARIATION2] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_DOCK);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P341_A02_OPEN_DOCK_VARIATION2] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_DOCK);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P333_A01_HYDROPONIC_BUILDING] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_BUILDING_SMALL);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P332_A01_OXYGEN_STORAGE] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P331_A01_OXYGEN_GENERATOR] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_MEDIUM);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P324B01_FUEL_STORAGE_B] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_SMALL);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P324A01_FUEL_STORAGE_A] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_MEDIUM);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P323A01_FUEL_GENERATOR] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_MEDIUM);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P322A01_BATTERY] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_MEDIUM);            \n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P321B01_NUCLEAR_REACTOR] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_ARMOR * 2);\n            //m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P321A01_SOLAR_PANEL] =\n            //    new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n            //        MaxHealth: MAXHEALTH_PREFAB_TINY * 3);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P312A01_SHORT_TERM_THRUSTER_LATITUDE] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_LARGE);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P312A02_SHORT_TERM_THRUSTER_LATERAL] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_LARGE);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P311A01_LONG_TERM_THRUSTER] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_BUILDING_LARGE);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P231A01_ARMOR] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_ARMOR);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P231A02_ARMOR] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_ARMOR);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P231A03_ARMOR] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_ARMOR);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P231A04_ARMOR] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_ARMOR);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P231A05_ARMOR] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_ARMOR);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P231A06_ARMOR] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_ARMOR);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P231A07_ARMOR] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_ARMOR);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P231A08_ARMOR] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_ARMOR);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P231A09_ARMOR] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_ARMOR);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P231A10_ARMOR] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_ARMOR);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P231A11_ARMOR] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_ARMOR);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P231A12_ARMOR] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_ARMOR);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P231A13_ARMOR] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_ARMOR);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P231A14_ARMOR] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_ARMOR);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P231A15_ARMOR] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_ARMOR);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P231A16_ARMOR] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_ARMOR);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P231A17_ARMOR] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_ARMOR);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P231A18_ARMOR] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_ARMOR);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P221E01_CHAMBER_V1] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_CHAMBER);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P221D01_CHAMBER_V1] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_CHAMBER);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P221C01_CHAMBER_V1] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_CHAMBER);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P221B01_CHAMBER_V1] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_CHAMBER);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P221A01_CHAMBER_V1] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_CHAMBER);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P211G01_PANEL_120MX60M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PANEL_LARGE);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P211H01_PANEL_535MX130M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_ARMOR);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P211G02_PANEL_60MX60M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PANEL_MEDIUM);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P211G03_PANEL_60MX30M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PANEL_SMALL);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P211F01_PANEL_120MX60M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PANEL_LARGE / 4);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P211F02_PANEL_60MX60M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PANEL_MEDIUM / 4);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P211F03_PANEL_60MX30M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PANEL_SMALL / 4);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P211E01_PANEL_120MX60M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PANEL_LARGE / 4);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P211E02_PANEL_60MX60M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PANEL_MEDIUM / 4);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P211E03_PANEL_60MX30M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PANEL_SMALL / 4);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P211D01_PANEL_120MX60M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PANEL_LARGE);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P211D02_PANEL_60MX60M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PANEL_MEDIUM);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P211D03_PANEL_60MX30M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PANEL_SMALL);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P211C01_PANEL_120MX60M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PANEL_LARGE);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P211C02_PANEL_60MX60M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PANEL_MEDIUM);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P211C03_PANEL_60MX30M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PANEL_SMALL);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P211B01_PANEL_120MX60M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PANEL_LARGE);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P211B02_PANEL_60MX60M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PANEL_MEDIUM);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P211B03_PANEL_60MX30M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PANEL_SMALL);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P211A01_PANEL_120MX60M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PANEL_LARGE);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P211A02_PANEL_60MX60M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PANEL_MEDIUM);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P211A03_PANEL_60MX30M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PANEL_SMALL);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P142B01_CAGE_EMPTY] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P142B02_CAGE_HALFCUT] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P142B03_CAGE_WITH_CORNERS] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P142B11_CAGE_PILLAR] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P142B12_CAGE_EDGE] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P142A01_CAGE_EMPTY] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P142A02_CAGE_HALFCUT] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P142A03_CAGE_WITH_CORNERS] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P142A11_CAGE_PILLAR] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P142A12_CAGE_EDGE] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P141B01_THICK_FRAME_STRAIGHT_10M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P141B02_THICK_FRAME_STRAIGHT_60M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P141B11_THICK_FRAME_EDGE] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P141B12_THICK_FRAME_CORNER] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P141B31_THICK_FRAME_JOINT] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P141A01_THICK_FRAME_STRAIGHT_10M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P141A02_THICK_FRAME_STRAIGHT_60M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P141A11_THICK_FRAME_EDGE] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P141A12_THICK_FRAME_CORNER] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P141A31_THICK_FRAME_JOINT] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P120J01_J_STRAIGHT_30M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P130J02_J_STRAIGHT_10M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P120I01_I_STRAIGHT_30M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P130I02_I_STRAIGHT_10M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P120H01_H_STRAIGHT_30M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P130H02_H_STRAIGHT_10M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB);\n            /*m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P120G01_G_STRAIGHT_30M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P130G02_G_STRAIGHT_10M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P120F01_F_STRAIGHT_30M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P130F02_F_STRAIGHT_10M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P120E01_E_STRAIGHT_30M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P130E02_E_STRAIGHT_10M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P120D01_D_STRAIGHT_30M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P130D02_D_STRAIGHT_10M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P120C01_C_STRAIGHT_30M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P130C02_C_STRAIGHT_10M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P120B01_B_STRAIGHT_30M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P130B02_B_STRAIGHT_10M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P120A01_A_STRAIGHT_30M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P130A02_A_STRAIGHT_10M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB);*/\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P120D01_D_STRAIGHT_10M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P120D02_D_STRAIGHT_40M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P120C01_C_STRAIGHT_10M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P120C02_C_STRAIGHT_40M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P120B01_B_STRAIGHT_10M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P120B02_B_STRAIGHT_40M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P120A01_STRONG_LATTICE_STRAIGHT_10M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P120A02_STRONG_LATTICE_STRAIGHT_60M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_SMALL);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P120A03_STRONG_LATTICE_STRAIGHT_120M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_MEDIUM);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P120A21_STRONG_LATTICE_JUNCTION_T_STRONG] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_SMALL);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P120A22_STRONG_LATTICE_JUNCTION_T_WEAK] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_SMALL);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P120A23_STRONG_LATTICE_JUNCTION_T_ROTATED] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_SMALL);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P120A51_STRONG_TO_WEAK_LATTICE_2TO1] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_SMALL);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P120A52_STRONG_TO_WEAK_LATTICE_1TO2] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_SMALL);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P120A61_WEAK_LATTICE_JUNCTION_T_ROTATED] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P110B01_LATTICE_BEAM_STRAIGHT_10M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P110B02_LATTICE_BEAM_STRAIGHT_30M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P110B03_LATTICE_BEAM_STRAIGHT_60M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_SMALL);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P110B04_LATTICE_BEAM_STRAIGHT_60M_WITH_PANELS] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_SMALL);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P110B21_LATTICE_BEAM_JUNCTION_T_STRONG] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_SMALL);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P110B22_LATTICE_BEAM_JUNCTION_T_WEAK] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_SMALL);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P110B31_LATTICE_BEAM_JOINT_HORIZONTAL] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_SMALL);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P110B32_LATTICE_BEAM_JOINT_VERTICAL] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_SMALL);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P110A01_SOLID_BEAM_STRAIGHT_10M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P110A02_SOLID_BEAM_STRAIGHT_20M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P110A03_SOLID_BEAM_STRAIGHT_40M_WITH_HOLE] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_SMALL);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P110A04_SOLID_BEAM_STRAIGHT_40M_LATTICE] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P110A05_SOLID_BEAM_STRAIGHT_80M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_MEDIUM);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P110A11_SOLID_BEAM_JUNCTION_X_STRONG] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_MEDIUM);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P110A12_SOLID_BEAM_JUNCTION_X_WEAK] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_MEDIUM);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P110A13_SOLID_BEAM_JUNCTION_X_ROTATED] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_MEDIUM);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P110A21_SOLID_BEAM_JUNCTION_T_STRONG] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_MEDIUM);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P110A22_SOLID_BEAM_JUNCTION_T_WEAK] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_MEDIUM);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P110A23_SOLID_BEAM_JUNCTION_T_ROTATED] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_MEDIUM);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P110A31_SOLID_BEAM_JOINT_HORIZONTAL] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_SMALL);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P110A32_SOLID_BEAM_JOINT_VERTICAL] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_SMALL);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P110A33_SOLID_BEAM_JOINT_LONGITUDINAL] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_SMALL);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P110A41_SOLID_BEAM_SUPERJOINT] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_MEDIUM);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P511_A01_BILLBOARD] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PANEL_SMALL);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P511_A02_BILLBOARD] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PANEL_SMALL);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P511_A03_BILLBOARD] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PANEL_SMALL);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P511_A04_BILLBOARD] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PANEL_SMALL);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P511_A05_BILLBOARD] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PANEL_SMALL);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P511_A06_BILLBOARD] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PANEL_SMALL);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P511_A07_BILLBOARD] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PANEL_SMALL);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P511_A08_BILLBOARD] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PANEL_SMALL);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P511_A09_BILLBOARD] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PANEL_SMALL);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P511_A10_BILLBOARD] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PANEL_SMALL);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P511_A11_BILLBOARD] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PANEL_SMALL);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P511_A12_BILLBOARD] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PANEL_SMALL);            \n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P511_A14_BILLBOARD] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PANEL_SMALL);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P511_A15_BILLBOARD] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PANEL_SMALL);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P511_A16_BILLBOARD] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PANEL_SMALL);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_A01_SIGN1] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_TINY);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_A02_SIGN2] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_TINY);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_A03_SIGN3] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_TINY);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_A04_SIGN4] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_TINY);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_A05_SIGN5] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_TINY);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_A06_SIGN6] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_TINY);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_A07_SIGN7] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_TINY);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_A08_SIGN8] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_TINY);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_A09_SIGN9] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_TINY);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_A10_SIGN10] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_TINY);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_A11_SIGN11] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_TINY);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_A12_SIGN12] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_TINY);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P221_A02_CHAMBER_V2] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_CHAMBER);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P221_B02_CHAMBER_V2] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_CHAMBER);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P221_C02_CHAMBER_V2] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_CHAMBER);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P221_D02_CHAMBER_V2] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_CHAMBER);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P221_E02_CHAMBER_V2] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_CHAMBER);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P130_A01_STRAIGHT_10M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_VERYSHORT);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P130_A02_STRAIGHT_30M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_SHORT);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P130_B01_STRAIGHT_10M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_VERYSHORT);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P130_B02_STRAIGHT_30M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_SHORT);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P130_C01_STRAIGHT_10M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_VERYSHORT);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P130_C02_STRAIGHT_30M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_SHORT);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P130_D01_STRAIGHT_10M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_VERYSHORT);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P130_D02_STRAIGHT_30M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_SHORT);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P130_E01_STRAIGHT_10M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_VERYSHORT);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P130_E02_STRAIGHT_30M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_SHORT);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P321_B01_SOLAR_PANEL] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_TINY);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P321_C01_SOLAR_PANEL] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_TINY * 3);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P413_D02_JUNCTION_T_VERTICAL] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_LONG);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P413_D04_JUNCTION_X_VERTICAL] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_LONG);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_F11_TURN_90_UP_230M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_LONG);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_F12_TURN_90_LEFT_230M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_LONG);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_F13_TURN_90_RIGHT_230M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_LONG);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P412_F14_TURN_90_DOWN_230M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_LONG);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_F04_STRAIGHT_4] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_VERYSHORT);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_F05_STRAIGHT_5] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_SHORT);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P411_G05_STRAIGHT_5] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_TUNNEL_LONG);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P414_F01_ENTRANCE_60M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PANEL_MEDIUM);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P414_G01_ENTRANCE_60M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PANEL_MEDIUM);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P571_A01_TRAFFIC_SIGN] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_TINY);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P571_B01_TRAFFIC_SIGN] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_TINY);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P571_BOX01_TRAFFIC_SIGN] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_TINY);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P571_BOX02_TRAFFIC_SIGN] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_TINY);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P571_C01_TRAFFIC_SIGN] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_TINY);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P571_D01_TRAFFIC_SIGN] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_TINY);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P571_E01_TRAFFIC_SIGN] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_TINY);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P571_F01_TRAFFIC_SIGN] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_TINY);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P571_G01_TRAFFIC_SIGN] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_TINY);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P571_H01_TRAFFIC_SIGN] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_TINY);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P571_I01_TRAFFIC_SIGN] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_TINY);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P571_J01_TRAFFIC_SIGN] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_TINY);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P571_K01_TRAFFIC_SIGN] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_TINY);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P571_L01_TRAFFIC_SIGN] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_TINY);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.SimpleObject] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB);\n//            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.AsteroidPrefabTest] =\n//                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n//                    MaxHealth: MAXHEALTH_PREFAB);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P385_A01_TEMPLE_900M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_BUILDING_LARGE);            \n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P383_A01_CHURCH] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_BUILDING_LARGE);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P334_A01_FOOD_GROW] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_BUILDING_SMALL);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P345_A01_BIO_EXP] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_LARGE);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P345_A01_BIO_MACH_EXP] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_MEDIUM);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P345_A01_RECYCLE] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_LARGE);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P541_ESCAPE_POD] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_TINY * 2);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P541_ESCAPE_POD_BASE] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_MEDIUM);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P541_VENTILATOR_BODY] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PANEL_MEDIUM);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P541_VENTILATOR_PROPELLER] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P541_VENTILATOR] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PANEL_MEDIUM);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P349_A_TOWER] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_BUILDING_HUGE);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P349_B_TOWER] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_BUILDING_HUGE);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P349_C_TOWER] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_BUILDING_HUGE * 1.5f);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_B_FACTION] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_TINY * 2);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_B_FACTION_HOLO] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_TINY * 2);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.ARMOR_HULL] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_BUILDING_LARGE);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P212A01_PANEL_LARGE] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_ARMOR * 2);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P212A01_PANEL_MEDIUM] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_ARMOR);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P212A01_PANEL_SMALL] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PANEL_SMALL);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P212B02_PANEL_MEDIUM] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_ARMOR);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P212B02_PANEL_SMALL] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PANEL_SMALL);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P212C03_PANEL_MEDIUM] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_ARMOR);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P212C03_PANEL_SMALL] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PANEL_SMALL);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P212D04_PANEL_MEDIUM] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_ARMOR);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P212D04_PANEL_SMALL] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PANEL_SMALL);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P212E05_PANEL_MEDIUM] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_ARMOR);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P212E05_PANEL_SMALL] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PANEL_SMALL);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P221F01_CHAMBER_V1] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_CHAMBER * 2);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P221G01_CHAMBER_V1] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_CHAMBER * 2);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P221H01_CHAMBER_V1] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_CHAMBER * 2);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P221J01_CHAMBER_V1] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_CHAMBER * 2);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P221K01_CHAMBER_V1] =\n                            new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                                MaxHealth: MAXHEALTH_PREFAB_CHAMBER * 2);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P341_C01_CLOSED_DOCK_V1] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_MEDIUM);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P212B02_PANEL_LARGE] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_ARMOR * 2);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P212C03_PANEL_LARGE] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_ARMOR * 2);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P212D04_PANEL_LARGE] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_ARMOR * 2);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P212E05_PANEL_LARGE] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_ARMOR * 2);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P212F01_PANEL_LARGE] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_ARMOR * 2);            \n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P381_D03_HOSPITAL] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_BUILDING_MEDIUM);            \n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P381_D05_FOOD_GROW] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_MEDIUM);            \n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.CABLE_CORNER_25M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_TINY);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.CABLE_S_45M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_TINY);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.CABLE_STRAIGHT_180] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_TINY);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.CABLE_STRAIGHT_45] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_TINY);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.CABLE_STRAIGHT_90] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_TINY);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.CONNECTION_BOX] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_TINY);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_ADMINISTRATIVE_AREA] = new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_PREFAB_TINY);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_ARMORY] = new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_PREFAB_TINY);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_ARROW_L] = new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_PREFAB_TINY);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_ARROW_R] = new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_PREFAB_TINY);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_ARROW_STR] = new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_PREFAB_TINY);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_CARGO_BAY] = new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_PREFAB_TINY);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_COMMAND_CENTER] = new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_PREFAB_TINY);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_COMMERCIAL_AREA] = new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_PREFAB_TINY);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_COMMUNICATIONS] = new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_PREFAB_TINY);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_DEFENSES] = new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_PREFAB_TINY);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_DOCKS] = new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_PREFAB_TINY);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_EMERGENCY_EXIT] = new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_PREFAB_TINY);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_ENGINEERING_AREA] = new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_PREFAB_TINY);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_EXIT] = new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_PREFAB_TINY);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_EXPERIMENTAL_LABS] = new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_PREFAB_TINY);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_FOUNDRY] = new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_PREFAB_TINY);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_HABITATS] = new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_PREFAB_TINY);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_HANGARS] = new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_PREFAB_TINY);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_INDUSTRIAL_AREA] = new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_PREFAB_TINY);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_LANDING_BAY] = new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_PREFAB_TINY);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_MAINTENANCE] = new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_PREFAB_TINY);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_MILITARY_AREA] = new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_PREFAB_TINY);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_MINES] = new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_PREFAB_TINY);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_ORE_PROCESSING] = new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_PREFAB_TINY);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_OUTER_AREA] = new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_PREFAB_TINY);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_PRISON] = new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_PREFAB_TINY);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_PUBLIC_AREA] = new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_PREFAB_TINY);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_REACTOR] = new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_PREFAB_TINY);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_RESEARCH] = new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_PREFAB_TINY);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_RESTRICTED_AREA] = new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_PREFAB_TINY);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_SECURITY] = new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_PREFAB_TINY);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_SIGN] = new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_PREFAB_TINY);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_STORAGE] = new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_PREFAB_TINY);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_TECHNICAL_AREA] = new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_PREFAB_TINY);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_C_TRADE_PORT] = new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_PREFAB_TINY);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.DEAD_PILOT] = new MyGameplayProperties(PricePerUnit: 100, WeightPerUnit: 100, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_PREFAB_TINY);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P321_D01_BIG_SOLAR_PANEL] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_LARGE);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P361_B01_LONG_DISTANCE_ANTENNA_BIG] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_MEDIUM);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.FOURTH_REICH_WRECK] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_LARGE * 4);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P344_A03_CONTAINER] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P231B01_ARMOR] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_ARMOR);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P231B01_ARMOR_CORNER] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_ARMOR * 2);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P231B01_ARMOR_EDGE] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_ARMOR * 2);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P231B01_ARMOR_HOLE] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_ARMOR);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P150A03_SHELF_1] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_MEDIUM);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P150A02_SHELF_1X2] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_MEDIUM);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P150A01_SHELF_1X3] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_MEDIUM);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P611_ASTEROID_PART_A] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P611_ASTEROID_PART_B] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P363_A01_BIG_ANTENNA_300M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_LARGE * 2);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P130D02_D_STRAIGHT_300M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_MEDIUM);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P130J01_J_STRAIGHT_300M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_MEDIUM);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P120C02_C_STRAIGHT_400M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_MEDIUM);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P110B03_LATTICE_BEAM_STRAIGHT_420M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_LARGE);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P110B04_LATTICE_BEAM_STRAIGHT_420M_WITH_PANELS] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_LARGE);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P363_A01_BIG_ANTENNA_1500M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_LARGE * 4);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P4221_A01_COOLING_DEVICE_WALL_340X400] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_LARGE);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P4222_A01_PIPES_CONNECTOR] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_MEDIUM);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P4223_A01_OPEN_PIPE] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P311B01_LONG_TERM_THRUSTER] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_LARGE * 4);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P221K01_CHAMBER_V2] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_BUILDING_HUGE);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P581_A01_BARREL_BIOHAZARD] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_EXPLOSIVES);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P581_A01_BARREL_BIOHAZARD_2] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_EXPLOSIVES);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P581_A01_NUKE_BARREL] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_EXPLOSIVES);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P581_A01_RED_BARREL] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_EXPLOSIVES);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P581_A01_SIMPLE_BARREL] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_EXPLOSIVES);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P581_A01_SIMPLE_BARREL_2] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_EXPLOSIVES);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.BARREL_PROP_A] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_EXPLOSIVES);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.BARREL_PROP_B] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_EXPLOSIVES);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.BARREL_PROP_C] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_EXPLOSIVES);\n            /*m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.BARREL_PROP_D] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_EXPLOSIVES);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.BARREL_PROP_E] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_EXPLOSIVES);*/\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.CANNONBALL_CAPSULE_1] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_EXPLOSIVES);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.GATTLING_AMMO_BELT] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_EXPLOSIVES);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.MISSILE_PACK01] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_EXPLOSIVES);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.MISSILE_PACK02] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_EXPLOSIVES);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.MISSILE_PLAZMA01] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_EXPLOSIVES);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.MISSILE_STACK_BIOCHEM01] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_EXPLOSIVES);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P581_A01_O2_BARREL] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_EXPLOSIVES);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.NUCLEAR_WARHEAD_CLOSED] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_ARMOR);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.NUCLEAR_WARHEAD_OPEN] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_ARMOR);            \n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P581_A01_NUKE_BARREL_1] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_EXPLOSIVES);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P581_A01_SIMPLE_BARREL_3] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_EXPLOSIVES);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P221L01_CHAMBER_V1] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_BUILDING_HUGE);\n\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P221M01_CHAMBER_BOTTOM_V1] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_BUILDING_LARGE);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P221M01_CHAMBER_CENTER_V1] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_BUILDING_LARGE);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P221M01_CHAMBER_TOP_V1] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_BUILDING_LARGE / 2);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P321E01_SOLAR_PANEL] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_LARGE);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P110A06_SOLID_BEAM_STRAIGHT_420M] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_LARGE);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P311B01_CUT_THRUSTER] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_MEDIUM);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P312B01_CUT_THRUSTER_LATERAL] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_MEDIUM);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P312B02_CUT_THRUSTER_LATITUDE] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_MEDIUM);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.ALIEN_DETECTOR_UNIT] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P381_C01_BUILDING5] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_BUILDING_HUGE);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P381_C01_BUILDING6] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_BUILDING_HUGE);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P381_C01_BUILDING7] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_BUILDING_HUGE);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P221N01_CHAMBER_V1] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_BUILDING_MEDIUM);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P531_D_MEDIC_CROSS] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_SMALL);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.ALIEN_ARTEFACT] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_SMALL);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.BOMB] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_EXPLOSIVES);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.RAIL_GUN] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_CHAMBER);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P345_A01_RECYCLE_SPHERE] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_CHAMBER);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.PRISON] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_CHAMBER);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P511_A17_BILLBOARD_PORTRAIT_1] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_LIGHT);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P511_A17_BILLBOARD_PORTRAIT_2] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_LIGHT);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P511_A18_BILLBOARD] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_LIGHT);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P511_A19_BILLBOARD] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_LIGHT);\n            #endregion\n\n            #region foundation factory\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.FoundationFactory] = new MyGameplayProperties[1];\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.FoundationFactory][0] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 200, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            #endregion\n\n            #region large debris field\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.LargeDebrisField] = new MyGameplayProperties[MyMwcUtils.GetMaxValueFromEnum<MyMwcObjectBuilder_LargeDebrisField_TypesEnum>() + 1];\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.LargeDebrisField][(int)MyMwcObjectBuilder_LargeDebrisField_TypesEnum.Debris84] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            #endregion\n\n            #region large ship\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.LargeShip] = new MyGameplayProperties[MyMwcUtils.GetMaxValueFromEnum<MyMwcObjectBuilder_LargeShip_TypesEnum>() + 1];\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.LargeShip][(int)MyMwcObjectBuilder_LargeShip_TypesEnum.KAI] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 100000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_LARGESHIP);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.LargeShip][(int)MyMwcObjectBuilder_LargeShip_TypesEnum.MOTHERSHIP_SAYA] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 100000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_LARGESHIP);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.LargeShip][(int)MyMwcObjectBuilder_LargeShip_TypesEnum.JEROMIE_INTERIOR_STATION] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 100000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_LARGESHIP);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.LargeShip][(int)MyMwcObjectBuilder_LargeShip_TypesEnum.ARDANT] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 100000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_LARGESHIP);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.LargeShip][(int)MyMwcObjectBuilder_LargeShip_TypesEnum.CRUISER_SHIP] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 100000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_LARGESHIP);\n            #endregion\n\n            #region small ship player\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Player] = new MyGameplayProperties[MyMwcUtils.GetMaxValueFromEnum<MyMwcObjectBuilder_SmallShip_TypesEnum>() + 1];\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Player][(int)MyMwcObjectBuilder_SmallShip_TypesEnum.LIBERATOR] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_SMALLSHIP);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Player][(int)MyMwcObjectBuilder_SmallShip_TypesEnum.ENFORCER] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_SMALLSHIP);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Player][(int)MyMwcObjectBuilder_SmallShip_TypesEnum.KAMMLER] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_SMALLSHIP);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Player][(int)MyMwcObjectBuilder_SmallShip_TypesEnum.GETTYSBURG] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_SMALLSHIP);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Player][(int)MyMwcObjectBuilder_SmallShip_TypesEnum.VIRGINIA] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_SMALLSHIP);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Player][(int)MyMwcObjectBuilder_SmallShip_TypesEnum.BAER] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_SMALLSHIP);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Player][(int)MyMwcObjectBuilder_SmallShip_TypesEnum.HEWER] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_SMALLSHIP);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Player][(int)MyMwcObjectBuilder_SmallShip_TypesEnum.RAZORCLAW] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_SMALLSHIP);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Player][(int)MyMwcObjectBuilder_SmallShip_TypesEnum.GREISER] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_SMALLSHIP);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Player][(int)MyMwcObjectBuilder_SmallShip_TypesEnum.TRACER] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_SMALLSHIP);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Player][(int)MyMwcObjectBuilder_SmallShip_TypesEnum.JACKNIFE] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_SMALLSHIP);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Player][(int)MyMwcObjectBuilder_SmallShip_TypesEnum.DOON] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_SMALLSHIP);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Player][(int)MyMwcObjectBuilder_SmallShip_TypesEnum.HAMMER] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_SMALLSHIP);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Player][(int)MyMwcObjectBuilder_SmallShip_TypesEnum.ORG] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_SMALLSHIP);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Player][(int)MyMwcObjectBuilder_SmallShip_TypesEnum.YG] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_SMALLSHIP);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Player][(int)MyMwcObjectBuilder_SmallShip_TypesEnum.HAWK] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_SMALLSHIP);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Player][(int)MyMwcObjectBuilder_SmallShip_TypesEnum.PHOENIX] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_SMALLSHIP);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Player][(int)MyMwcObjectBuilder_SmallShip_TypesEnum.LEVIATHAN] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_SMALLSHIP);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Player][(int)MyMwcObjectBuilder_SmallShip_TypesEnum.ROCKHEATER] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_SMALLSHIP);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Player][(int)MyMwcObjectBuilder_SmallShip_TypesEnum.STEELHEAD] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_SMALLSHIP);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Player][(int)MyMwcObjectBuilder_SmallShip_TypesEnum.FEDER] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_SMALLSHIP);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Player][(int)MyMwcObjectBuilder_SmallShip_TypesEnum.STANISLAV] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_SMALLSHIP);\n            #endregion\n\n            #region small ship bot\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Bot] = new MyGameplayProperties[MyMwcUtils.GetMaxValueFromEnum<MyMwcObjectBuilder_SmallShip_TypesEnum>() + 1];\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Bot][(int)MyMwcObjectBuilder_SmallShip_TypesEnum.LIBERATOR] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_SMALLSHIP);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Bot][(int)MyMwcObjectBuilder_SmallShip_TypesEnum.ENFORCER] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_SMALLSHIP);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Bot][(int)MyMwcObjectBuilder_SmallShip_TypesEnum.KAMMLER] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_SMALLSHIP);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Bot][(int)MyMwcObjectBuilder_SmallShip_TypesEnum.GETTYSBURG] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_SMALLSHIP);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Bot][(int)MyMwcObjectBuilder_SmallShip_TypesEnum.VIRGINIA] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_SMALLSHIP);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Bot][(int)MyMwcObjectBuilder_SmallShip_TypesEnum.BAER] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_SMALLSHIP);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Bot][(int)MyMwcObjectBuilder_SmallShip_TypesEnum.HEWER] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_SMALLSHIP);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Bot][(int)MyMwcObjectBuilder_SmallShip_TypesEnum.RAZORCLAW] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_SMALLSHIP);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Bot][(int)MyMwcObjectBuilder_SmallShip_TypesEnum.GREISER] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_SMALLSHIP);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Bot][(int)MyMwcObjectBuilder_SmallShip_TypesEnum.TRACER] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_SMALLSHIP);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Bot][(int)MyMwcObjectBuilder_SmallShip_TypesEnum.JACKNIFE] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_SMALLSHIP);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Bot][(int)MyMwcObjectBuilder_SmallShip_TypesEnum.DOON] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_SMALLSHIP);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Bot][(int)MyMwcObjectBuilder_SmallShip_TypesEnum.HAMMER] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_SMALLSHIP);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Bot][(int)MyMwcObjectBuilder_SmallShip_TypesEnum.ORG] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_SMALLSHIP);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Bot][(int)MyMwcObjectBuilder_SmallShip_TypesEnum.YG] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_SMALLSHIP);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Bot][(int)MyMwcObjectBuilder_SmallShip_TypesEnum.HAWK] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_SMALLSHIP);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Bot][(int)MyMwcObjectBuilder_SmallShip_TypesEnum.PHOENIX] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_SMALLSHIP);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Bot][(int)MyMwcObjectBuilder_SmallShip_TypesEnum.LEVIATHAN] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_SMALLSHIP);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Bot][(int)MyMwcObjectBuilder_SmallShip_TypesEnum.ROCKHEATER] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_SMALLSHIP);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Bot][(int)MyMwcObjectBuilder_SmallShip_TypesEnum.STEELHEAD] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_SMALLSHIP);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Bot][(int)MyMwcObjectBuilder_SmallShip_TypesEnum.FEDER] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_SMALLSHIP);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Bot][(int)MyMwcObjectBuilder_SmallShip_TypesEnum.STANISLAV] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_SMALLSHIP);\n            #endregion\n\n            #region sector\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Sector] = new MyGameplayProperties[1];\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Sector][0] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            #endregion\n\n            #region voxel map\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.VoxelMap] = new MyGameplayProperties[1];\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.VoxelMap][0] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            #endregion\n\n            #region voxel map merge material\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.VoxelMap_MergeMaterial] = new MyGameplayProperties[1];\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.VoxelMap_MergeMaterial][0] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            #endregion\n\n            #region voxel map merge content\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.VoxelMap_MergeContent] = new MyGameplayProperties[1];\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.VoxelMap_MergeContent][0] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            #endregion\n\n            #region voxel map neighbour\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.VoxelMap_Neighbour] = new MyGameplayProperties[1];\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.VoxelMap_Neighbour][0] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            #endregion\n\n            #region voxel hand sphere\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.VoxelHand_Sphere] = new MyGameplayProperties[1];\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.VoxelHand_Sphere][0] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            #endregion\n\n            #region voxel hand box\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.VoxelHand_Box] = new MyGameplayProperties[1];\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.VoxelHand_Box][0] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            #endregion\n\n            #region voxel hand cuboid\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.VoxelHand_Cuboid] = new MyGameplayProperties[1];\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.VoxelHand_Cuboid][0] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            #endregion\n\n            #region voxel hand cylinder\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.VoxelHand_Cylinder] = new MyGameplayProperties[1];\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.VoxelHand_Cylinder][0] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false);\n            #endregion\n\n            #region static asteroid\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.StaticAsteroid] = new MyGameplayProperties[MyMwcUtils.GetMaxValueFromEnum<MyMwcObjectBuilder_StaticAsteroid_TypesEnum>() + 1];\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.StaticAsteroid][(int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid10m_A] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.StaticAsteroid][(int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid20m_A] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.StaticAsteroid][(int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid30m_A] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.StaticAsteroid][(int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid50m_A] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.StaticAsteroid][(int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid100m_A] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.StaticAsteroid][(int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid300m_A] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.StaticAsteroid][(int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid500m_A] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.StaticAsteroid][(int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid1000m_A] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.StaticAsteroid][(int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid2000m_A] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.StaticAsteroid][(int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid5000m_A] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.StaticAsteroid][(int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid10000m_A] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.StaticAsteroid][(int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid40000m_A] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.StaticAsteroid][(int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid10m_B] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.StaticAsteroid][(int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid20m_B] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.StaticAsteroid][(int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid30m_B] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.StaticAsteroid][(int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid50m_B] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.StaticAsteroid][(int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid100m_B] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.StaticAsteroid][(int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid300m_B] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.StaticAsteroid][(int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid500m_B] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.StaticAsteroid][(int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid1000m_B] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.StaticAsteroid][(int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid2000m_B] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.StaticAsteroid][(int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid5000m_B] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.StaticAsteroid][(int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid10000m_B] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n\n            //Removed support\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.StaticAsteroid][(int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid10m_C] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.StaticAsteroid][(int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid20m_C] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.StaticAsteroid][(int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid30m_C] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.StaticAsteroid][(int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid50m_C] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.StaticAsteroid][(int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid100m_C] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.StaticAsteroid][(int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid300m_C] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.StaticAsteroid][(int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid500m_C] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.StaticAsteroid][(int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid1000m_C] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.StaticAsteroid][(int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid2000m_C] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.StaticAsteroid][(int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid5000m_C] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.StaticAsteroid][(int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid10000m_C] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.StaticAsteroid][(int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid10m_D] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.StaticAsteroid][(int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid20m_D] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.StaticAsteroid][(int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid30m_D] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.StaticAsteroid][(int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid50m_D] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.StaticAsteroid][(int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid100m_D] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.StaticAsteroid][(int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid300m_D] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.StaticAsteroid][(int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid500m_D] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.StaticAsteroid][(int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid1000m_D] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.StaticAsteroid][(int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid2000m_D] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.StaticAsteroid][(int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid5000m_D] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.StaticAsteroid][(int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid10000m_D] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.StaticAsteroid][(int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid10m_E] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.StaticAsteroid][(int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid20m_E] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.StaticAsteroid][(int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid30m_E] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.StaticAsteroid][(int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid50m_E] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.StaticAsteroid][(int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid100m_E] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.StaticAsteroid][(int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid300m_E] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.StaticAsteroid][(int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid500m_E] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.StaticAsteroid][(int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid1000m_E] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.StaticAsteroid][(int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid2000m_E] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.StaticAsteroid][(int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid5000m_E] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.StaticAsteroid][(int)MyMwcObjectBuilder_StaticAsteroid_TypesEnum.StaticAsteroid10000m_E] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            #endregion\n\n            #region Meteor\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Meteor] = new MyGameplayProperties[MyMwcUtils.GetMaxValueFromEnum<MyMwcObjectBuilder_Meteor_TypesEnum>() + 1];\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Meteor][(int)MyMwcObjectBuilder_Meteor_TypesEnum.DEFAULT] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            #endregion\n\n            #region small ship\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip] = new MyGameplayProperties[MyMwcUtils.GetMaxValueFromEnum<MyMwcObjectBuilder_SmallShip_TypesEnum>() + 1];\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip][(int)MyMwcObjectBuilder_SmallShip_TypesEnum.LIBERATOR] = new MyGameplayProperties(PricePerUnit: 1200000, WeightPerUnit: 7000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_SMALLSHIP);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip][(int)MyMwcObjectBuilder_SmallShip_TypesEnum.ENFORCER] = new MyGameplayProperties(PricePerUnit: 1200000, WeightPerUnit: 8000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_SMALLSHIP);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip][(int)MyMwcObjectBuilder_SmallShip_TypesEnum.KAMMLER] = new MyGameplayProperties(PricePerUnit: 1200000, WeightPerUnit: 8500, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_SMALLSHIP);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip][(int)MyMwcObjectBuilder_SmallShip_TypesEnum.GETTYSBURG] = new MyGameplayProperties(PricePerUnit: 1200000, WeightPerUnit: 6600, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_SMALLSHIP);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip][(int)MyMwcObjectBuilder_SmallShip_TypesEnum.VIRGINIA] = new MyGameplayProperties(PricePerUnit: 760000, WeightPerUnit: 5000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_SMALLSHIP);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip][(int)MyMwcObjectBuilder_SmallShip_TypesEnum.BAER] = new MyGameplayProperties(PricePerUnit: 760000, WeightPerUnit: 5500, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_SMALLSHIP);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip][(int)MyMwcObjectBuilder_SmallShip_TypesEnum.HEWER] = new MyGameplayProperties(PricePerUnit: 560000, WeightPerUnit: 4300, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_SMALLSHIP);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip][(int)MyMwcObjectBuilder_SmallShip_TypesEnum.RAZORCLAW] = new MyGameplayProperties(PricePerUnit: 760000, WeightPerUnit: 4800, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_SMALLSHIP);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip][(int)MyMwcObjectBuilder_SmallShip_TypesEnum.GREISER] = new MyGameplayProperties(PricePerUnit: 960000, WeightPerUnit: 6200, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_SMALLSHIP);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip][(int)MyMwcObjectBuilder_SmallShip_TypesEnum.TRACER] = new MyGameplayProperties(PricePerUnit: 960000, WeightPerUnit: 5900, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_SMALLSHIP);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip][(int)MyMwcObjectBuilder_SmallShip_TypesEnum.JACKNIFE] = new MyGameplayProperties(PricePerUnit: 960000, WeightPerUnit: 6100, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_SMALLSHIP);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip][(int)MyMwcObjectBuilder_SmallShip_TypesEnum.DOON] = new MyGameplayProperties(PricePerUnit: 760000, WeightPerUnit: 5200, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_SMALLSHIP);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip][(int)MyMwcObjectBuilder_SmallShip_TypesEnum.HAMMER] = new MyGameplayProperties(PricePerUnit: 1400000, WeightPerUnit: 7500, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_SMALLSHIP);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip][(int)MyMwcObjectBuilder_SmallShip_TypesEnum.ORG] = new MyGameplayProperties(PricePerUnit: 1600000, WeightPerUnit: 9900, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_SMALLSHIP);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip][(int)MyMwcObjectBuilder_SmallShip_TypesEnum.YG] = new MyGameplayProperties(PricePerUnit: 1040000, WeightPerUnit: 7500, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_SMALLSHIP);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip][(int)MyMwcObjectBuilder_SmallShip_TypesEnum.HAWK] = new MyGameplayProperties(PricePerUnit: 1160000, WeightPerUnit: 6600, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_SMALLSHIP);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip][(int)MyMwcObjectBuilder_SmallShip_TypesEnum.PHOENIX] = new MyGameplayProperties(PricePerUnit: 1040000, WeightPerUnit: 6300, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_SMALLSHIP);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip][(int)MyMwcObjectBuilder_SmallShip_TypesEnum.LEVIATHAN] = new MyGameplayProperties(PricePerUnit: 1160000, WeightPerUnit: 9000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_SMALLSHIP);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip][(int)MyMwcObjectBuilder_SmallShip_TypesEnum.ROCKHEATER] = new MyGameplayProperties(PricePerUnit: 640000, WeightPerUnit: 5500, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_SMALLSHIP);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip][(int)MyMwcObjectBuilder_SmallShip_TypesEnum.STEELHEAD] = new MyGameplayProperties(PricePerUnit: 1200000, WeightPerUnit: 6000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_SMALLSHIP);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip][(int)MyMwcObjectBuilder_SmallShip_TypesEnum.FEDER] = new MyGameplayProperties(PricePerUnit: 1360000, WeightPerUnit: 25000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_SMALLSHIP);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip][(int)MyMwcObjectBuilder_SmallShip_TypesEnum.STANISLAV] = new MyGameplayProperties(PricePerUnit: 1600000, WeightPerUnit: 23000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_SMALLSHIP);\n            #endregion\n\n            #region small ship assignment of ammo\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_AssignmentOfAmmo] = new MyGameplayProperties[1];\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_AssignmentOfAmmo][0] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            #endregion\n\n            #region large ship ammo\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.LargeShip_Ammo] = new MyGameplayProperties[MyMwcUtils.GetMaxValueFromEnum<MyMwcObjectBuilder_LargeShip_Ammo_TypesEnum>() + 1];\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.LargeShip_Ammo][(int)MyMwcObjectBuilder_LargeShip_Ammo_TypesEnum.CIWS_Armor_Piercing_Incendiary] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.LargeShip_Ammo][(int)MyMwcObjectBuilder_LargeShip_Ammo_TypesEnum.CIWS_High_Explosive_Incendiary] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.LargeShip_Ammo][(int)MyMwcObjectBuilder_LargeShip_Ammo_TypesEnum.CIWS_SAPHEI] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            #endregion\n\n            #region prefab container\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabContainer] = new MyGameplayProperties[MyMwcUtils.GetMaxValueFromEnum<MyMwcObjectBuilder_PrefabContainer_TypesEnum>() + 1];\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabContainer][(int)MyMwcObjectBuilder_PrefabContainer_TypesEnum.TEMPLATE] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabContainer][(int)MyMwcObjectBuilder_PrefabContainer_TypesEnum.INSTANCE] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            #endregion\n\n            #region influence spheres\n\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.InfluenceSphere] = new MyGameplayProperties[1];\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.InfluenceSphere][0] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n\n            #endregion\n\n            #region prefab light\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabLight] = new MyGameplayProperties[MyMwcUtils.GetMaxValueFromEnum<MyMwcObjectBuilder_PrefabLight_TypesEnum>() + 1];\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabLight][(int)MyMwcObjectBuilder_PrefabLight_TypesEnum.DEFAULT_LIGHT_0] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_LIGHT);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabLight][(int)MyMwcObjectBuilder_PrefabLight_TypesEnum.P521_A01_LIGHT1] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_LIGHT);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabLight][(int)MyMwcObjectBuilder_PrefabLight_TypesEnum.P521_A02_LIGHT2] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_LIGHT);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabLight][(int)MyMwcObjectBuilder_PrefabLight_TypesEnum.P521_A03_LIGHT3] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_LIGHT);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabLight][(int)MyMwcObjectBuilder_PrefabLight_TypesEnum.P521_A04_LIGHT4] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_LIGHT);\n            #endregion\n\n            #region spawn point\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SpawnPoint] = new MyGameplayProperties[1];\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SpawnPoint][0] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            #endregion\n\n            #region Drones\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Drone] = new MyGameplayProperties[MyMwcUtils.GetMaxValueFromEnum<MyMwcObjectBuilder_Drone_TypesEnum>() + 1];\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Drone][(int)MyMwcObjectBuilder_Drone_TypesEnum.DroneCN] = new MyGameplayProperties(PricePerUnit: 5500, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_DRONE, itemCategory: ItemCategory.DEVICE);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Drone][(int)MyMwcObjectBuilder_Drone_TypesEnum.DroneSS] = new MyGameplayProperties(PricePerUnit: 5000, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_DRONE, itemCategory: ItemCategory.DEVICE);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Drone][(int)MyMwcObjectBuilder_Drone_TypesEnum.DroneUS] = new MyGameplayProperties(PricePerUnit: 4500, WeightPerUnit: 1, MaxAmount: 10, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_DRONE, itemCategory: ItemCategory.DEVICE);\n            #endregion\n\n            #region way point\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.WaypointNew] = new MyGameplayProperties[1];\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.WaypointNew][0] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            #endregion\n\n            #region inventory\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Inventory] = new MyGameplayProperties[1];\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Inventory][0] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            #endregion\n\n            #region inventory item\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.InventoryItem] = new MyGameplayProperties[1];\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.InventoryItem][0] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            #endregion\n\n            #region checkpoint\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Checkpoint] = new MyGameplayProperties[1];\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Checkpoint][0] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            #endregion\n\n            #region player\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Player] = new MyGameplayProperties[1];\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Player][0] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            #endregion\n\n            #region player statistics\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PlayerStatistics] = new MyGameplayProperties[1];\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PlayerStatistics][0] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            #endregion\n\n            #region prefab sound\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabSound] = new MyGameplayProperties[MyMwcUtils.GetMaxValueFromEnum<MyMwcObjectBuilder_PrefabSound_TypesEnum>() + 1];\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabSound][(int)MyMwcObjectBuilder_PrefabSound_TypesEnum.DEFAULT_SOUND_PREFAB_0] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabSound][(int)MyMwcObjectBuilder_PrefabSound_TypesEnum.P561_A01_SOUND] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabSound][(int)MyMwcObjectBuilder_PrefabSound_TypesEnum.P561_B01_SOUND] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabSound][(int)MyMwcObjectBuilder_PrefabSound_TypesEnum.P561_C01_SOUND] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabSound][(int)MyMwcObjectBuilder_PrefabSound_TypesEnum.P561_D01_SOUND] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabSound][(int)MyMwcObjectBuilder_PrefabSound_TypesEnum.MOTHERSHIP_SOUND] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabSound][(int)MyMwcObjectBuilder_PrefabSound_TypesEnum.MADELINE_MOTHERSHIP_SOUND] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB);\n            #endregion\n\n            #region prefab particles\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabParticles] = new MyGameplayProperties[MyMwcUtils.GetMaxValueFromEnum<MyMwcObjectBuilder_PrefabParticles_TypesEnum>() + 1];\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabParticles][(int)MyMwcObjectBuilder_PrefabParticles_TypesEnum.DEFAULT_PARTICLE_PREFAB_0] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabParticles][(int)MyMwcObjectBuilder_PrefabParticles_TypesEnum.P551_A01_PARTICLES] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabParticles][(int)MyMwcObjectBuilder_PrefabParticles_TypesEnum.P551_B01_PARTICLES] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabParticles][(int)MyMwcObjectBuilder_PrefabParticles_TypesEnum.P551_C01_PARTICLES] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabParticles][(int)MyMwcObjectBuilder_PrefabParticles_TypesEnum.P551_D01_PARTICLES] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB);\n            #endregion\n\n            #region prefab kinematic\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabKinematic] = new MyGameplayProperties[MyMwcUtils.GetMaxValueFromEnum<MyMwcObjectBuilder_PrefabKinematic_TypesEnum>() + 1];\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabKinematic][(int)MyMwcObjectBuilder_PrefabKinematic_TypesEnum.P415_C01_DOOR1] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_DOORCASE);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabKinematic][(int)MyMwcObjectBuilder_PrefabKinematic_TypesEnum.P415_C01_DOOR2] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_DOORCASE);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabKinematic][(int)MyMwcObjectBuilder_PrefabKinematic_TypesEnum.P415_C01_DOOR3] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_DOORCASE);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabKinematic][(int)MyMwcObjectBuilder_PrefabKinematic_TypesEnum.P415_C01_DOOR4] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_DOORCASE);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabKinematic][(int)MyMwcObjectBuilder_PrefabKinematic_TypesEnum.P341_A01_OPEN_DOCK_VARIATION1] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_DOORCASE_LARGE);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabKinematic][(int)MyMwcObjectBuilder_PrefabKinematic_TypesEnum.P415_A01_DOORCASE] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_DOORCASE);\n\n\n            #endregion\n\n            #region session\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Session] = new MyGameplayProperties[1];\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Session][0] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Player] = m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip];\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_Bot] = m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip];\n\n            #endregion\n\n            #region event\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Event] = new MyGameplayProperties[1];\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Event][0] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            #endregion\n\n            #region object to build\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.ObjectToBuild] = new MyGameplayProperties[1];\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.ObjectToBuild][0] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            #endregion\n\n            #region prefab largeship\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabLargeShip] = new MyGameplayProperties[MyMwcUtils.GetMaxValueFromEnum<MyMwcObjectBuilder_PrefabLargeShip_TypesEnum>() + 1];\n\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabLargeShip][(int)MyMwcObjectBuilder_PrefabLargeShip_TypesEnum.LARGESHIP_KAI] =\n                new MyGameplayProperties(PricePerUnit: 100000, WeightPerUnit: 120000, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_LARGESHIP);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabLargeShip][(int)MyMwcObjectBuilder_PrefabLargeShip_TypesEnum.LARGESHIP_ARDANT] =\n                new MyGameplayProperties(PricePerUnit: 100000, WeightPerUnit: 120000, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_LARGESHIP);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabLargeShip][(int)MyMwcObjectBuilder_PrefabLargeShip_TypesEnum.LARGESHIP_SAYA] =\n                new MyGameplayProperties(PricePerUnit: 100000, WeightPerUnit: 120000, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_LARGESHIP);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabLargeShip][(int)MyMwcObjectBuilder_PrefabLargeShip_TypesEnum.FOURTH_REICH_MOTHERSHIP] =\n                new MyGameplayProperties(PricePerUnit: 100000, WeightPerUnit: 120000, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_LARGESHIP);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabLargeShip][(int)MyMwcObjectBuilder_PrefabLargeShip_TypesEnum.FOURTH_REICH_MOTHERSHIP_B] =\n                new MyGameplayProperties(PricePerUnit: 100000, WeightPerUnit: 120000, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_LARGESHIP);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabLargeShip][(int)MyMwcObjectBuilder_PrefabLargeShip_TypesEnum.RUS_MOTHERSHIP] =\n                new MyGameplayProperties(PricePerUnit: 100000, WeightPerUnit: 120000, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_LARGESHIP);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabLargeShip][(int)MyMwcObjectBuilder_PrefabLargeShip_TypesEnum.RUSSIAN_MOTHERSHIP_HUMMER] =\n                new MyGameplayProperties(PricePerUnit: 100000, WeightPerUnit: 120000, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_LARGESHIP);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabLargeShip][(int)MyMwcObjectBuilder_PrefabLargeShip_TypesEnum.MSHIP_BODY] =\n                new MyGameplayProperties(PricePerUnit: 100000, WeightPerUnit: 120000, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_LARGESHIP);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabLargeShip][(int)MyMwcObjectBuilder_PrefabLargeShip_TypesEnum.MSHIP_ENGINE] =\n                new MyGameplayProperties(PricePerUnit: 100000, WeightPerUnit: 120000, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_LARGESHIP);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabLargeShip][(int)MyMwcObjectBuilder_PrefabLargeShip_TypesEnum.MSHIP_SHIELD_BACK_LARGE_LEFT] =\n                new MyGameplayProperties(PricePerUnit: 100000, WeightPerUnit: 120000, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_LARGESHIP);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabLargeShip][(int)MyMwcObjectBuilder_PrefabLargeShip_TypesEnum.MSHIP_SHIELD_BACK_LARGE_RIGHT] =\n                new MyGameplayProperties(PricePerUnit: 100000, WeightPerUnit: 120000, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_LARGESHIP);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabLargeShip][(int)MyMwcObjectBuilder_PrefabLargeShip_TypesEnum.MSHIP_SHIELD_BACK_SMALL_LEFT] =\n                new MyGameplayProperties(PricePerUnit: 100000, WeightPerUnit: 120000, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_LARGESHIP);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabLargeShip][(int)MyMwcObjectBuilder_PrefabLargeShip_TypesEnum.MSHIP_SHIELD_BACK_SMALL_RIGHT] =\n                new MyGameplayProperties(PricePerUnit: 100000, WeightPerUnit: 120000, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_LARGESHIP);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabLargeShip][(int)MyMwcObjectBuilder_PrefabLargeShip_TypesEnum.MSHIP_SHIELD_FRONT_LARGE_LEFT] =\n                new MyGameplayProperties(PricePerUnit: 100000, WeightPerUnit: 120000, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_LARGESHIP);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabLargeShip][(int)MyMwcObjectBuilder_PrefabLargeShip_TypesEnum.MSHIP_SHIELD_FRONT_LARGE_RIGHT] =\n                new MyGameplayProperties(PricePerUnit: 100000, WeightPerUnit: 120000, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_LARGESHIP);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabLargeShip][(int)MyMwcObjectBuilder_PrefabLargeShip_TypesEnum.MSHIP_SHIELD_FRONT_SMALL_LEFT] =\n                new MyGameplayProperties(PricePerUnit: 100000, WeightPerUnit: 120000, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_LARGESHIP);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabLargeShip][(int)MyMwcObjectBuilder_PrefabLargeShip_TypesEnum.MSHIP_SHIELD_FRONT_SMALL_RIGHT] =\n                new MyGameplayProperties(PricePerUnit: 100000, WeightPerUnit: 120000, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_LARGESHIP);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabLargeShip][(int)MyMwcObjectBuilder_PrefabLargeShip_TypesEnum.MSHIP_SHIELD_FRONT_SMALL02_LEFT] =\n                new MyGameplayProperties(PricePerUnit: 100000, WeightPerUnit: 120000, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_LARGESHIP);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabLargeShip][(int)MyMwcObjectBuilder_PrefabLargeShip_TypesEnum.MSHIP_SHIELD_FRONT_SMALL02_RIGHT] =\n                new MyGameplayProperties(PricePerUnit: 100000, WeightPerUnit: 120000, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_LARGESHIP);\n\n            #endregion\n\n            #region object group\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.ObjectGroup] = new MyGameplayProperties[1];\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.ObjectGroup][0] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            #endregion\n\n            #region prefab large weapons\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabLargeWeapon] = new MyGameplayProperties[MyMwcUtils.GetMaxValueFromEnum<MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum>() + 1];\n\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabLargeWeapon][(int)MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A01_LARGESHIP_AUTOCANNON] = new MyGameplayProperties(PricePerUnit: 100000, WeightPerUnit: 1200, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_LARGE_WEAPON);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabLargeWeapon][(int)MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A01_LARGESHIP_MACHINEGUN] = new MyGameplayProperties(PricePerUnit: 100000, WeightPerUnit: 1200, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_LARGE_WEAPON);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabLargeWeapon][(int)MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A01_LARGESHIP_CIWS] = new MyGameplayProperties(PricePerUnit: 100000, WeightPerUnit: 1200, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_LARGE_WEAPON);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabLargeWeapon][(int)MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A01_LARGESHIP_MISSILE_BASIC4] = new MyGameplayProperties(PricePerUnit: 100000, WeightPerUnit: 120000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_LARGE_WEAPON);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabLargeWeapon][(int)MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A01_LARGESHIP_MISSILE_BASIC6] = new MyGameplayProperties(PricePerUnit: 100000, WeightPerUnit: 120000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_LARGE_WEAPON);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabLargeWeapon][(int)MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A01_LARGESHIP_MISSILE_BASIC9] = new MyGameplayProperties(PricePerUnit: 100000, WeightPerUnit: 120000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_LARGE_WEAPON);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabLargeWeapon][(int)MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A02_LARGESHIP_MISSILE_GUIDED4] = new MyGameplayProperties(PricePerUnit: 100000, WeightPerUnit: 120000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_LARGE_WEAPON);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabLargeWeapon][(int)MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A02_LARGESHIP_MISSILE_GUIDED6] = new MyGameplayProperties(PricePerUnit: 100000, WeightPerUnit: 120000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_LARGE_WEAPON);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabLargeWeapon][(int)MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A02_LARGESHIP_MISSILE_GUIDED9] = new MyGameplayProperties(PricePerUnit: 100000, WeightPerUnit: 120000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_LARGE_WEAPON);\n            #endregion\n\n            #region prefab hangar panel\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabHangar] = new MyGameplayProperties[MyMwcUtils.GetMaxValueFromEnum<MyMwcObjectBuilder_PrefabHangar_TypesEnum>() + 1];\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabHangar][(int)MyMwcObjectBuilder_PrefabHangar_TypesEnum.VENDOR]\n                = new MyGameplayProperties(PricePerUnit: 100000, WeightPerUnit: 120000, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabHangar][(int)MyMwcObjectBuilder_PrefabHangar_TypesEnum.HANGAR]\n                = new MyGameplayProperties(PricePerUnit: 100000, WeightPerUnit: 120000, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false);\n            #endregion\n\n            #region dummy point\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.DummyPoint] = new MyGameplayProperties[1];\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.DummyPoint][0] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            #endregion\n\n            #region snap point link\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SnapPointLink] = new MyGameplayProperties[1];\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SnapPointLink][0] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            #endregion\n\n            #region prefab kinematic part\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabKinematicPart] = new MyGameplayProperties[MyMwcUtils.GetMaxValueFromEnum<MyMwcObjectBuilder_PrefabKinematicPart_TypesEnum>() + 1];\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabKinematicPart][(int)MyMwcObjectBuilder_PrefabKinematicPart_TypesEnum.P415_A02_DOOR_LEFT] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_DOOR);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabKinematicPart][(int)MyMwcObjectBuilder_PrefabKinematicPart_TypesEnum.P415_A02_DOOR_RIGHT] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_DOOR);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabKinematicPart][(int)MyMwcObjectBuilder_PrefabKinematicPart_TypesEnum.P415_C02_DOOR1_RIGHT] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_DOOR);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabKinematicPart][(int)MyMwcObjectBuilder_PrefabKinematicPart_TypesEnum.P415_C02_DOOR1_LEFT] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_DOOR);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabKinematicPart][(int)MyMwcObjectBuilder_PrefabKinematicPart_TypesEnum.P415_C03_DOOR2_A] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_DOOR);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabKinematicPart][(int)MyMwcObjectBuilder_PrefabKinematicPart_TypesEnum.P415_C03_DOOR2_B] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_DOOR);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabKinematicPart][(int)MyMwcObjectBuilder_PrefabKinematicPart_TypesEnum.P415_C03_DOOR2_A_LEFT] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_DOOR);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabKinematicPart][(int)MyMwcObjectBuilder_PrefabKinematicPart_TypesEnum.P415_C03_DOOR2_A_RIGHT] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_DOOR);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabKinematicPart][(int)MyMwcObjectBuilder_PrefabKinematicPart_TypesEnum.P415_C03_DOOR2_B_LEFT] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_DOOR);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabKinematicPart][(int)MyMwcObjectBuilder_PrefabKinematicPart_TypesEnum.P415_C03_DOOR2_B_RIGHT] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_DOOR);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabKinematicPart][(int)MyMwcObjectBuilder_PrefabKinematicPart_TypesEnum.P341_A01_OPEN_DOCK_VARIATION1_DOORLEFT] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_DOOR * 3);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabKinematicPart][(int)MyMwcObjectBuilder_PrefabKinematicPart_TypesEnum.P341_A01_OPEN_DOCK_VARIATION1_DOORRIGHT] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_DOOR * 3);\n            #endregion\n\n            #region entity detector\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.EntityDetector] = new MyGameplayProperties[MyMwcUtils.GetMaxValueFromEnum<MyMwcObjectBuilder_EntityDetector_TypesEnum>() + 1];\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.EntityDetector][(int)MyMwcObjectBuilder_EntityDetector_TypesEnum.Sphere] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.EntityDetector][(int)MyMwcObjectBuilder_EntityDetector_TypesEnum.Box] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            #endregion\n\n            #region ship config\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.ShipConfig] = new MyGameplayProperties[1];\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.ShipConfig][0] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            #endregion\n\n            #region foundation factory\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabFoundationFactory] = new MyGameplayProperties[MyMwcUtils.GetMaxValueFromEnum<MyMwcObjectBuilder_PrefabFoundationFactory_TypesEnum>() + 1];\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabFoundationFactory][(int)MyMwcObjectBuilder_PrefabFoundationFactory_TypesEnum.DEFAULT]\n                = new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 200, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            #endregion\n\n            #region security control HUB\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabSecurityControlHUB] = new MyGameplayProperties[MyMwcUtils.GetMaxValueFromEnum<MyMwcObjectBuilder_PrefabSecurityControlHUB_TypesEnum>() + 1];\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabSecurityControlHUB][(int)MyMwcObjectBuilder_PrefabSecurityControlHUB_TypesEnum.DEFAULT]\n                = new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 200, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabSecurityControlHUB][(int)MyMwcObjectBuilder_PrefabSecurityControlHUB_TypesEnum.P541_SCREEN_A]\n                = new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 200, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabSecurityControlHUB][(int)MyMwcObjectBuilder_PrefabSecurityControlHUB_TypesEnum.P541_SCREEN_B]\n                = new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 200, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabSecurityControlHUB][(int)MyMwcObjectBuilder_PrefabSecurityControlHUB_TypesEnum.P541_TERMINAL_A]\n                = new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 200, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false);\n            #endregion\n\n            #region false Id\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.FalseId] = new MyGameplayProperties[MyMwcFactionsByIndex.GetFactionsIndexes().Length];\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.FalseId][MyMwcFactionsByIndex.GetFactionIndex(MyMwcObjectBuilder_FactionEnum.China)] =\n                new MyGameplayProperties(PricePerUnit: 100000, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false , itemCategory: ItemCategory.DEVICE);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.FalseId][MyMwcFactionsByIndex.GetFactionIndex(MyMwcObjectBuilder_FactionEnum.Church)] =\n                new MyGameplayProperties(PricePerUnit: 100000, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false , itemCategory: ItemCategory.DEVICE);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.FalseId][MyMwcFactionsByIndex.GetFactionIndex(MyMwcObjectBuilder_FactionEnum.CSR)] =\n                new MyGameplayProperties(PricePerUnit: 100000, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false , itemCategory: ItemCategory.DEVICE);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.FalseId][MyMwcFactionsByIndex.GetFactionIndex(MyMwcObjectBuilder_FactionEnum.Euroamerican)] =\n                new MyGameplayProperties(PricePerUnit: 100000, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false , itemCategory: ItemCategory.DEVICE);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.FalseId][MyMwcFactionsByIndex.GetFactionIndex(MyMwcObjectBuilder_FactionEnum.FourthReich)] =\n                new MyGameplayProperties(PricePerUnit: 100000, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false , itemCategory: ItemCategory.DEVICE);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.FalseId][MyMwcFactionsByIndex.GetFactionIndex(MyMwcObjectBuilder_FactionEnum.FreeAsia)] =\n                new MyGameplayProperties(PricePerUnit: 100000, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false , itemCategory: ItemCategory.DEVICE);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.FalseId][MyMwcFactionsByIndex.GetFactionIndex(MyMwcObjectBuilder_FactionEnum.Freelancers)] =\n                new MyGameplayProperties(PricePerUnit: 100000, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false , itemCategory: ItemCategory.DEVICE);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.FalseId][MyMwcFactionsByIndex.GetFactionIndex(MyMwcObjectBuilder_FactionEnum.FSRE)] =\n                new MyGameplayProperties(PricePerUnit: 100000, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false , itemCategory: ItemCategory.DEVICE);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.FalseId][MyMwcFactionsByIndex.GetFactionIndex(MyMwcObjectBuilder_FactionEnum.India)] =\n                new MyGameplayProperties(PricePerUnit: 100000, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false , itemCategory: ItemCategory.DEVICE);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.FalseId][MyMwcFactionsByIndex.GetFactionIndex(MyMwcObjectBuilder_FactionEnum.Japan)] =\n                new MyGameplayProperties(PricePerUnit: 100000, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false , itemCategory: ItemCategory.DEVICE);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.FalseId][MyMwcFactionsByIndex.GetFactionIndex(MyMwcObjectBuilder_FactionEnum.Miners)] =\n                new MyGameplayProperties(PricePerUnit: 100000, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false , itemCategory: ItemCategory.DEVICE);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.FalseId][MyMwcFactionsByIndex.GetFactionIndex(MyMwcObjectBuilder_FactionEnum.None)] =\n                new MyGameplayProperties(PricePerUnit: 100000, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false , itemCategory: ItemCategory.DEVICE);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.FalseId][MyMwcFactionsByIndex.GetFactionIndex(MyMwcObjectBuilder_FactionEnum.Omnicorp)] =\n                new MyGameplayProperties(PricePerUnit: 100000, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false , itemCategory: ItemCategory.DEVICE);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.FalseId][MyMwcFactionsByIndex.GetFactionIndex(MyMwcObjectBuilder_FactionEnum.Pirates)] =\n                new MyGameplayProperties(PricePerUnit: 100000, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false , itemCategory: ItemCategory.DEVICE);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.FalseId][MyMwcFactionsByIndex.GetFactionIndex(MyMwcObjectBuilder_FactionEnum.Rangers)] =\n                new MyGameplayProperties(PricePerUnit: 100000, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false , itemCategory: ItemCategory.DEVICE);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.FalseId][MyMwcFactionsByIndex.GetFactionIndex(MyMwcObjectBuilder_FactionEnum.Ravens)] =\n                new MyGameplayProperties(PricePerUnit: 100000, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false , itemCategory: ItemCategory.DEVICE);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.FalseId][MyMwcFactionsByIndex.GetFactionIndex(MyMwcObjectBuilder_FactionEnum.Russian)] =\n                new MyGameplayProperties(PricePerUnit: 100000, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false , itemCategory: ItemCategory.DEVICE);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.FalseId][MyMwcFactionsByIndex.GetFactionIndex(MyMwcObjectBuilder_FactionEnum.Saudi)] =\n                new MyGameplayProperties(PricePerUnit: 100000, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false , itemCategory: ItemCategory.DEVICE);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.FalseId][MyMwcFactionsByIndex.GetFactionIndex(MyMwcObjectBuilder_FactionEnum.SMLtd)] =\n                new MyGameplayProperties(PricePerUnit: 100000, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false , itemCategory: ItemCategory.DEVICE);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.FalseId][MyMwcFactionsByIndex.GetFactionIndex(MyMwcObjectBuilder_FactionEnum.Syndicate)] =\n                new MyGameplayProperties(PricePerUnit: 100000, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false , itemCategory: ItemCategory.DEVICE);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.FalseId][MyMwcFactionsByIndex.GetFactionIndex(MyMwcObjectBuilder_FactionEnum.Templars)] =\n                new MyGameplayProperties(PricePerUnit: 100000, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false , itemCategory: ItemCategory.DEVICE);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.FalseId][MyMwcFactionsByIndex.GetFactionIndex(MyMwcObjectBuilder_FactionEnum.Traders)] =\n                new MyGameplayProperties(PricePerUnit: 100000, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false , itemCategory: ItemCategory.DEVICE);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.FalseId][MyMwcFactionsByIndex.GetFactionIndex(MyMwcObjectBuilder_FactionEnum.TTLtd)] =\n                new MyGameplayProperties(PricePerUnit: 100000, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false , itemCategory: ItemCategory.DEVICE);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.FalseId][MyMwcFactionsByIndex.GetFactionIndex(MyMwcObjectBuilder_FactionEnum.Russian_KGB)] =\n                new MyGameplayProperties(PricePerUnit: 100000, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false , itemCategory: ItemCategory.DEVICE);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.FalseId][MyMwcFactionsByIndex.GetFactionIndex(MyMwcObjectBuilder_FactionEnum.Slavers)] =\n                new MyGameplayProperties(PricePerUnit: 100000, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false , itemCategory: ItemCategory.DEVICE);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.FalseId][MyMwcFactionsByIndex.GetFactionIndex(MyMwcObjectBuilder_FactionEnum.WhiteWolves)] =\n                new MyGameplayProperties(PricePerUnit: 100000, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false , itemCategory: ItemCategory.DEVICE);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.FalseId][MyMwcFactionsByIndex.GetFactionIndex(MyMwcObjectBuilder_FactionEnum.Rainiers)] =\n                new MyGameplayProperties(PricePerUnit: 100000, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false , itemCategory: ItemCategory.DEVICE);\n            #endregion\n\n            #region hacking tool\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_HackingTool] = new MyGameplayProperties[MyMwcUtils.GetMaxValueFromEnum<MyMwcObjectBuilder_SmallShip_HackingTool_TypesEnum>() + 1];\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_HackingTool][(int)MyMwcObjectBuilder_SmallShip_HackingTool_TypesEnum.Level_1]\n                = new MyGameplayProperties(PricePerUnit: 1000, WeightPerUnit: 10, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false , itemCategory: ItemCategory.DEVICE);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_HackingTool][(int)MyMwcObjectBuilder_SmallShip_HackingTool_TypesEnum.Level_2]\n                = new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 10, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false , itemCategory: ItemCategory.DEVICE);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_HackingTool][(int)MyMwcObjectBuilder_SmallShip_HackingTool_TypesEnum.Level_3]\n                = new MyGameplayProperties(PricePerUnit: 20000, WeightPerUnit: 10, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false , itemCategory: ItemCategory.DEVICE);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_HackingTool][(int)MyMwcObjectBuilder_SmallShip_HackingTool_TypesEnum.Level_4]\n                = new MyGameplayProperties(PricePerUnit: 50000, WeightPerUnit: 10, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false , itemCategory: ItemCategory.DEVICE);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShip_HackingTool][(int)MyMwcObjectBuilder_SmallShip_HackingTool_TypesEnum.Level_5]\n                = new MyGameplayProperties(PricePerUnit: 100000, WeightPerUnit: 10, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false , itemCategory: ItemCategory.DEVICE);\n            #endregion\n\n            #region prefab bank node\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabBankNode] = new MyGameplayProperties[MyMwcUtils.GetMaxValueFromEnum<MyMwcObjectBuilder_PrefabBankNode_TypesEnum>() + 1];\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabBankNode][(int)MyMwcObjectBuilder_PrefabBankNode_TypesEnum.DEFAULT]\n                = new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 200, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            #endregion\n\n            #region prefab generator\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabGenerator] = new MyGameplayProperties[MyMwcUtils.GetMaxValueFromEnum<MyMwcObjectBuilder_PrefabGenerator_TypesEnum>() + 1];\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabGenerator][(int)MyMwcObjectBuilder_PrefabGenerator_TypesEnum.P321C01_INERTIA_GENERATOR] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_SMALL);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabGenerator][(int)MyMwcObjectBuilder_PrefabGenerator_TypesEnum.P321C03_CENTRIFUGE] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_LARGE);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabGenerator][(int)MyMwcObjectBuilder_PrefabGenerator_TypesEnum.P321C04_BOX_GENERATOR] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_MEDIUM);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabGenerator][(int)MyMwcObjectBuilder_PrefabGenerator_TypesEnum.P321C05_CENTRIFUGE_BIG] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_LARGE);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabGenerator][(int)MyMwcObjectBuilder_PrefabGenerator_TypesEnum.P321C02_GENERATOR_WALL_BIG] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_MEDIUM);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabGenerator][(int)MyMwcObjectBuilder_PrefabGenerator_TypesEnum.P321C06_INERTIA_GENERATOR_B] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_LARGE);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabGenerator][(int)MyMwcObjectBuilder_PrefabGenerator_TypesEnum.P321C07_GENERATOR] =\n                new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 2000, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_PREFAB_SMALL);\n            #endregion\n\n            #region prefab use properties\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.EntityUseProperties] = new MyGameplayProperties[1];\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.EntityUseProperties][0] = new MyGameplayProperties(PricePerUnit: 0, WeightPerUnit: 1, MaxAmount: 1, UsedSlots: 1,\n                    MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            #endregion\n\n            #region cargo box\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.CargoBox] = new MyGameplayProperties[MyMwcUtils.GetMaxValueFromEnum<MyMwcObjectBuilder_CargoBox_TypesEnum>() + 1];\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.CargoBox][(int)MyMwcObjectBuilder_CargoBox_TypesEnum.Type1]\n                = new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 200, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.CargoBox][(int)MyMwcObjectBuilder_CargoBox_TypesEnum.Type2]\n                = new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 200, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.CargoBox][(int)MyMwcObjectBuilder_CargoBox_TypesEnum.Type3]\n                = new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 200, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.CargoBox][(int)MyMwcObjectBuilder_CargoBox_TypesEnum.Type4]\n                = new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 200, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.CargoBox][(int)MyMwcObjectBuilder_CargoBox_TypesEnum.Type5]\n                = new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 200, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.CargoBox][(int)MyMwcObjectBuilder_CargoBox_TypesEnum.Type6]\n                = new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 200, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.CargoBox][(int)MyMwcObjectBuilder_CargoBox_TypesEnum.Type7]\n                = new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 200, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.CargoBox][(int)MyMwcObjectBuilder_CargoBox_TypesEnum.Type8]\n                = new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 200, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.CargoBox][(int)MyMwcObjectBuilder_CargoBox_TypesEnum.Type9]\n                = new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 200, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.CargoBox][(int)MyMwcObjectBuilder_CargoBox_TypesEnum.Type10]\n                = new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 200, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.CargoBox][(int)MyMwcObjectBuilder_CargoBox_TypesEnum.Type11]\n                = new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 200, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.CargoBox][(int)MyMwcObjectBuilder_CargoBox_TypesEnum.Type12]\n                = new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 200, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.CargoBox][(int)MyMwcObjectBuilder_CargoBox_TypesEnum.TypeProp_A]\n                = new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 200, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.CargoBox][(int)MyMwcObjectBuilder_CargoBox_TypesEnum.TypeProp_B]\n                = new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 200, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.CargoBox][(int)MyMwcObjectBuilder_CargoBox_TypesEnum.TypeProp_C]\n                = new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 200, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.CargoBox][(int)MyMwcObjectBuilder_CargoBox_TypesEnum.TypeProp_D]\n                = new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 200, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.CargoBox][(int)MyMwcObjectBuilder_CargoBox_TypesEnum.DroppedItems]\n                = new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 200, MaxAmount: 1, UsedSlots: 1, MaxHealth: 200);\n            #endregion\n\n            #region mysterious cube\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.MysteriousCube] = new MyGameplayProperties[MyMwcUtils.GetMaxValueFromEnum<MyMwcObjectBuilder_MysteriousCube_TypesEnum>() + 1];\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.MysteriousCube][(int)MyMwcObjectBuilder_MysteriousCube_TypesEnum.Type1]\n                = new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 200, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_PREFAB_TINY);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.MysteriousCube][(int)MyMwcObjectBuilder_MysteriousCube_TypesEnum.Type2]\n                = new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 200, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_PREFAB_TINY);\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.MysteriousCube][(int)MyMwcObjectBuilder_MysteriousCube_TypesEnum.Type3]\n                = new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 200, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_PREFAB_TINY);\n            #endregion\n\n            #region prefab Scanner\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabScanner] = new MyGameplayProperties[MyMwcUtils.GetMaxValueFromEnum<MyMwcObjectBuilder_PrefabScanner_TypesEnum>() + 1];\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabScanner][(int)MyMwcObjectBuilder_PrefabScanner_TypesEnum.Plane]\n                = new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 200, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabScanner][(int)MyMwcObjectBuilder_PrefabScanner_TypesEnum.Rays]\n                = new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 200, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            #endregion\n\n            #region prefab Camera\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabCamera] = new MyGameplayProperties[MyMwcUtils.GetMaxValueFromEnum<MyMwcObjectBuilder_PrefabCamera_TypesEnum>() + 1];\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabCamera][(int)MyMwcObjectBuilder_PrefabCamera_TypesEnum.DEFAULT]\n                = new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 200, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            #endregion\n\n            #region prefab alarm\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabAlarm] = new MyGameplayProperties[MyMwcUtils.GetMaxValueFromEnum<MyMwcObjectBuilder_PrefabAlarm_TypesEnum>() + 1];\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabAlarm][(int)MyMwcObjectBuilder_PrefabAlarm_TypesEnum.DEFAULT]\n                = new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 200, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_PREFAB_LIGHT, IsDestructible: true );\n            #endregion\n\n            #region alien gate\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.Prefab][(ushort)MyMwcObjectBuilder_Prefab_TypesEnum.P391_ALIEN_GATE]\n                = new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 200, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            #endregion\n\n            #region prefab kinematic rotating part\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabKinematicRotatingPart] = new MyGameplayProperties[MyMwcUtils.GetMaxValueFromEnum<MyMwcObjectBuilder_PrefabKinematicRotatingPart_TypesEnum>() + 1];\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.PrefabKinematicRotatingPart][(int)MyMwcObjectBuilder_PrefabKinematicRotatingPart_TypesEnum.DEFAULT]\n                = new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 200, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            #endregion\n\n            #region small ship template\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShipTemplate] = new MyGameplayProperties[1];\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShipTemplate][0]\n                = new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 200, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            #endregion\n\n            //GenerateItemCategory();\n            #region small ship templates\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShipTemplates] = new MyGameplayProperties[1];\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.SmallShipTemplates][0]\n                = new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 200, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false );\n            #endregion\n\n            #region faction relation changes\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.FactionRelationChange] = new MyGameplayProperties[1];\n            m_itemProperties[(int)MyMwcObjectBuilderTypeEnum.FactionRelationChange][0]\n                = new MyGameplayProperties(PricePerUnit: 10000, WeightPerUnit: 200, MaxAmount: 1, UsedSlots: 1, MaxHealth: MAXHEALTH_INDESTRUCTIBLE, IsDestructible: false);\n            #endregion\n\n\n            // gameplay properties per faction (DEFAULT)\n\n            //Cannot be foreach here because obfuscator crashes\n            m_itemPropertiesPerFaction.Clear();\n            m_itemPropertiesPerFaction.Add((int)MyMwcObjectBuilder_FactionEnum.None, m_itemProperties);\n            m_itemPropertiesPerFaction.Add((int)MyMwcObjectBuilder_FactionEnum.Euroamerican, m_itemProperties);\n            m_itemPropertiesPerFaction.Add((int)MyMwcObjectBuilder_FactionEnum.China, m_itemProperties);\n            m_itemPropertiesPerFaction.Add((int)MyMwcObjectBuilder_FactionEnum.FourthReich, m_itemProperties);\n            m_itemPropertiesPerFaction.Add((int)MyMwcObjectBuilder_FactionEnum.Omnicorp, m_itemProperties);\n            m_itemPropertiesPerFaction.Add((int)MyMwcObjectBuilder_FactionEnum.Russian, m_itemProperties);\n            m_itemPropertiesPerFaction.Add((int)MyMwcObjectBuilder_FactionEnum.Japan, m_itemProperties);\n            m_itemPropertiesPerFaction.Add((int)MyMwcObjectBuilder_FactionEnum.India, m_itemProperties);\n            m_itemPropertiesPerFaction.Add((int)MyMwcObjectBuilder_FactionEnum.Saudi, m_itemProperties);\n            m_itemPropertiesPerFaction.Add((int)MyMwcObjectBuilder_FactionEnum.Church, m_itemProperties);\n            m_itemPropertiesPerFaction.Add((int)MyMwcObjectBuilder_FactionEnum.FSRE, m_itemProperties);\n            m_itemPropertiesPerFaction.Add((int)MyMwcObjectBuilder_FactionEnum.FreeAsia, m_itemProperties);\n            m_itemPropertiesPerFaction.Add((int)MyMwcObjectBuilder_FactionEnum.Pirates, m_itemProperties);\n            m_itemPropertiesPerFaction.Add((int)MyMwcObjectBuilder_FactionEnum.Miners, m_itemProperties);\n            m_itemPropertiesPerFaction.Add((int)MyMwcObjectBuilder_FactionEnum.Freelancers, m_itemProperties);\n            m_itemPropertiesPerFaction.Add((int)MyMwcObjectBuilder_FactionEnum.Ravens, m_itemProperties);\n            m_itemPropertiesPerFaction.Add((int)MyMwcObjectBuilder_FactionEnum.Traders, m_itemProperties);\n            m_itemPropertiesPerFaction.Add((int)MyMwcObjectBuilder_FactionEnum.Syndicate, m_itemProperties);\n            m_itemPropertiesPerFaction.Add((int)MyMwcObjectBuilder_FactionEnum.Templars, m_itemProperties);\n            m_itemPropertiesPerFaction.Add((int)MyMwcObjectBuilder_FactionEnum.Rangers, m_itemProperties);\n            m_itemPropertiesPerFaction.Add((int)MyMwcObjectBuilder_FactionEnum.TTLtd, m_itemProperties);\n            m_itemPropertiesPerFaction.Add((int)MyMwcObjectBuilder_FactionEnum.SMLtd, m_itemProperties);\n            m_itemPropertiesPerFaction.Add((int)MyMwcObjectBuilder_FactionEnum.CSR, m_itemProperties);\n            m_itemPropertiesPerFaction.Add((int)MyMwcObjectBuilder_FactionEnum.Russian_KGB, m_itemProperties);\n            m_itemPropertiesPerFaction.Add((int)MyMwcObjectBuilder_FactionEnum.Slavers, m_itemProperties);\n            m_itemPropertiesPerFaction.Add((int)MyMwcObjectBuilder_FactionEnum.WhiteWolves, m_itemProperties);\n            m_itemPropertiesPerFaction.Add((int)MyMwcObjectBuilder_FactionEnum.Rainiers, m_itemProperties);\n\n\n\n\n            Trace.Assert(m_itemPropertiesPerFaction.Count == Enum.GetValues(typeof(MyMwcObjectBuilder_FactionEnum)).Length);\n\n            /*\n            foreach (MyMwcObjectBuilder_FactionEnum faction in Enum.GetValues(typeof(MyMwcObjectBuilder_FactionEnum)))\n            {\n                m_itemPropertiesPerFaction.Add((int)faction, m_itemProperties);\n            }*/\n\n            /*\n            foreach (MyMwcObjectBuilder_FactionEnum faction in Enum.GetValues(typeof(MyMwcObjectBuilder_FactionEnum)))\n            {\n                foreach (ushort objectBuilderType in Enum.GetValues(typeof (MyMwcObjectBuilderTypeEnum)))\n                {\n                    // check if there are valid ObjectBuilderIds for concrete ObjectBuilderType\n                    var gameplayPropertiesForType = m_itemPropertiesPerFaction[(int) faction][objectBuilderType];\n                    MyCommonDebugUtils.AssertDebug(gameplayPropertiesForType != null);\n                    for(int objectBuilderId = 0; objectBuilderId < gameplayPropertiesForType.Length; objectBuilderId++)\n                    {\n                        var gameplayProterties = gameplayPropertiesForType[objectBuilderId];\n                        if(gameplayProterties != null)\n                        {\n                            MyCommonDebugUtils.AssertDebug(MyMwcObjectBuilder_Base.IsObjectBuilderIdValid((MyMwcObjectBuilderTypeEnum) objectBuilderType, objectBuilderId));\n                        }\n                    }\n\n                    // check if there are all objectbuilder's types and ids\n                    int[] objectBuilderIDs = MyMwcObjectBuilder_Base.GetObjectBuilderIDs((MyMwcObjectBuilderTypeEnum) objectBuilderType);\n                    foreach (int objectBuilderId in objectBuilderIDs)\n                    {\n                        MyCommonDebugUtils.AssertDebug(gameplayPropertiesForType[objectBuilderId] != null);\n                    }\n                }\n            }*/\n\n\n\n            MyMwcLog.WriteLine(\"MyGameplayConstants() - nd\");\n\n        }\n\n        private static void GenerateItemCategory()\n        {\n            int index = (int)MyMwcObjectBuilderTypeEnum.SmallShip_Ammo;\n            foreach (var gameplayProperty in m_itemProperties[index])\n            {\n                if (gameplayProperty != null) gameplayProperty.ItemCategory = ItemCategory.AMMO;\n            }\n\n            index = (int)MyMwcObjectBuilderTypeEnum.Ore;\n            foreach (var gameplayProperty in m_itemProperties[index])\n            {\n                if (gameplayProperty != null) gameplayProperty.ItemCategory = ItemCategory.ORE;\n            }\n\n            index = (int)MyMwcObjectBuilderTypeEnum.PrefabLargeWeapon;\n            foreach (var gameplayProperty in m_itemProperties[index])\n            {\n                if (gameplayProperty != null) gameplayProperty.ItemCategory = ItemCategory.WEAPON;\n            }\n\n            index = (int)MyMwcObjectBuilderTypeEnum.SmallShip_Tool;\n            foreach (var gameplayProperty in m_itemProperties[index])\n            {\n                if (gameplayProperty != null) gameplayProperty.ItemCategory = ItemCategory.DEVICE;\n            }\n        }\n\n        // this method is there because we need load and check asserts when the game started\n        public static void Check()\n        {\n            MyMwcLog.WriteLine(\"MyGamePlayConstants.Check()\");\n        }\n\n        public static void SetGameplayDifficulty(MyGameplayDifficultyEnum difficulty)\n        {\n            m_difficulty = difficulty;\n            GameplayDifficultyProfile = m_gameplayDifficultyProfiles[(int)difficulty];\n        }\n\n        public static MyGameplayDifficultyEnum GetGameplayDifficulty()\n        {\n            return m_difficulty;\n        }\n\n        public static MyGameplayDifficultyProfile GetGameplayDifficultyProfile(MyGameplayDifficultyEnum difficulty)\n        {\n            return m_gameplayDifficultyProfiles[(int)difficulty];\n        }\n\n        public static MyGameplayProperties GetGameplayProperties(MyMwcObjectBuilderTypeEnum objectBuilderType, int objectBuilderId, MyMwcObjectBuilder_FactionEnum faction)\n        {\n            //if (m_itemProperties[(int)objectBuilderType] == null)\n            //{\n            //    return null;\n            //}\n            //return m_itemProperties[(int)objectBuilderType][objectBuilderId];\n            if (m_itemPropertiesPerFaction[(int)faction] == null)\n            {\n                return null;\n            }\n            return m_itemPropertiesPerFaction[(int)faction][(int)objectBuilderType][objectBuilderId];\n        }\n\n        public static MyGameplayProperties GetGameplayProperties(MyMwcObjectBuilder_Base objectBuilder, MyMwcObjectBuilder_FactionEnum faction)\n        {\n            int objectBuilderId = objectBuilder.GetObjectBuilderId() != null\n                                      ? objectBuilder.GetObjectBuilderId().Value\n                                      : 0;\n            return GetGameplayProperties(objectBuilder.GetObjectBuilderType(), objectBuilderId, faction);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/World/Global/MyGameWorld.cs",
    "content": "﻿#region Using\n\nusing System;\nusing System.Collections.Generic;\nusing System.Text;\nusing MinerWars.AppCode.Game.Localization;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.GUI.Core;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.AppCode.Game.Textures;\nusing MinerWars.AppCode.Game.GUI.Helpers;\nusing MinerWars.CommonLIB.AppCode.Generics;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.App;\nusing MinerWars.AppCode.Game.Renders;\nusing MinerWars.AppCode.Game.HUD;\nusing MinerWars.AppCode.Game.GUI;\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.AppCode.Game.Sessions;\nusing MinerWars.AppCode.Game.TransparentGeometry;\n\n#endregion\n\nnamespace MinerWars.AppCode.Game.World.Global\n{\n    class MyGlobalEvent\n    {\n        /// <summary>\n        /// If this is 0, event can only by activated via <code>ActivationDateTime</code> property.\n        /// </summary>\n        public float RatePerHour { get; set; }\n        public MyTextsWrapperEnum Name { private set; get; }\n        public MyTextsWrapperEnum Description { private set; get; }\n        public MyGlobalEventEnum Type { private set; get; }\n        public DateTime? ActivationDateTime { private set; get; }\n        public bool Activated { get; set; }\n        public MyTexture2D Icon { private set; get; }\n        public EventHandler Action { private set; get; }\n        public bool WriteToEventLog { private set; get; }\n        public bool Enabled { get; set; }\n\n        public MyGlobalEvent(MyGlobalEventEnum Type, MyTextsWrapperEnum Name, MyTextsWrapperEnum Description, float RatePerHour, MyTexture2D Icon, EventHandler Action, bool WriteToEventLog, bool Enabled)\n        {\n            this.Type = Type;\n\n            this.Name = Name;\n            this.Description = Description;\n\n            this.RatePerHour = RatePerHour; //occurences per hour\n            this.ActivationDateTime = null;\n            this.Icon = Icon;\n            this.Action = Action;\n            this.WriteToEventLog = WriteToEventLog;\n            this.Enabled = Enabled;\n        }\n\n        public MyGlobalEvent(MyGlobalEventEnum Type, MyTextsWrapperEnum Name, MyTextsWrapperEnum Description, DateTime activationDateTime, MyTexture2D Icon, EventHandler Action, bool WriteToEventLog, bool Enabled)\n            : this(Type, Name, Description, 0, Icon, Action, WriteToEventLog, Enabled)\n        {\n            ActivationDateTime = activationDateTime;\n        }\n    }\n\n    public enum MyGlobalEventEnum\n    {\n        SunWind = 0,\n        FractionStatusChange = 1,\n        MeteorWind = 2,\n        IceStorm = 3,\n        IceComet = 4,\n    }\n\n    class MyGlobalEvents\n    {\n        static MyGlobalEvent[] m_globalEvents = new MyGlobalEvent[Enum.GetValues(typeof(MyGlobalEventEnum)).Length];\n        static int m_elapsedTimeInMilliseconds = 0;\n\n        static readonly int GLOBAL_EVENT_UPDATE_RATIO_IN_MS = 3600 * 1000 / MyGlobalEventsConstants.GLOBAL_EVENTS_HOUR_RATIO;\n\n        static MyGlobalEvents()\n        {\n            m_globalEvents[(int)MyGlobalEventEnum.SunWind] =\n                new MyGlobalEvent(\n                    Type: MyGlobalEventEnum.SunWind,\n                    Name: MyTextsWrapperEnum.GlobalEventSunWindName,\n                    Description: MyTextsWrapperEnum.GlobalEventSunWindDescription,\n                    RatePerHour: 12.0f,\n                    Icon: null,\n                    Enabled: true,\n                    Action: delegate(object o, EventArgs e)\n                    {\n                        //dont allow sunwind in god editor on or when the game is paused\n                        if (!MySunWind.IsActive && !(MyGuiScreenGamePlay.Static.IsEditorActive() && !MyGuiScreenGamePlay.Static.IsIngameEditorActive()) && !MyMinerGame.IsPaused())\n                        {\n                            //MyHudNotification.AddNotification(new MyHudNotification.MyNotification(MyTextsWrapperEnum.GlobalEventSunWindDescription, 5000));\n                            MySunWind.Start();\n                            //MyAudio.AddCue2D(MySoundCuesEnum.HudSolarFlareWarning);\n                        }\n                    },\n                    WriteToEventLog: false\n            );\n\n            m_globalEvents[(int)MyGlobalEventEnum.FractionStatusChange] =\n                new MyGlobalEvent(\n                    Type: MyGlobalEventEnum.FractionStatusChange,\n                    Name: MyTextsWrapperEnum.GlobalEventFactionChangeName,\n                    Description: MyTextsWrapperEnum.GlobalEventFactionChangeDescription,\n                    RatePerHour: 10.0f,\n                    Icon: null,\n                    Enabled: false,\n                    Action: delegate(object o, EventArgs e)\n                    {\n                        float statusChange = MyMwcUtils.GetRandomFloat(MyFactions.RELATION_WORST, MyFactions.RELATION_BEST) / 10.0f;\n\n                        int[] enumValues = MyMwcFactionsByIndex.GetFactionsIndexes();\n                        System.Diagnostics.Debug.Assert(enumValues.Length > 3);\n                        \n                        MyMwcObjectBuilder_FactionEnum faction1;\n                        do\n                        {\n                            faction1 = MyMwcFactionsByIndex.GetFaction(MyMwcUtils.GetRandomInt(enumValues.Length));\n                        }\n                        while (faction1 == MyMwcObjectBuilder_FactionEnum.None);\n\n                        MyMwcObjectBuilder_FactionEnum faction2;\n                        do\n                        {\n                            faction2 = MyMwcFactionsByIndex.GetFaction(MyMwcUtils.GetRandomInt(enumValues.Length));\n                        }\n                        while ((faction1 == faction2) || (faction2 == MyMwcObjectBuilder_FactionEnum.None));\n\n                        MyFactions.ChangeFactionStatus(faction1, faction2, statusChange);\n                    },\n                    WriteToEventLog: false\n            );\n\n            m_globalEvents[(int)MyGlobalEventEnum.MeteorWind] =\n                new MyGlobalEvent(\n                    Type: MyGlobalEventEnum.SunWind,\n                    Name: MyTextsWrapperEnum.GlobalEventMeteorWindName,\n                    Description: MyTextsWrapperEnum.GlobalEventSunWindDescription,\n                    RatePerHour: MyFakes.ENABLE_RANDOM_METEOR_SHOWER ? 1.0f : 0.0f,\n                    Icon: null,\n                    Enabled: false,\n                    Action: delegate(object o, EventArgs e)\n                    {\n                        //dont allow sunwind in god editor on or when the game is paused\n                        if (!(MyGuiScreenGamePlay.Static.IsEditorActive() && !MyGuiScreenGamePlay.Static.IsIngameEditorActive()) && !MyMinerGame.IsPaused())\n                        {\n                            //MyHudNotification.AddNotification(new MyHudNotification.MyNotification(MyTextsWrapperEnum.GlobalEventSunWindDescription, 5000));\n                            MyMeteorWind.Start();\n                            //MyAudio.AddCue2D(MySoundCuesEnum.SfxSolarFlareWarning);\n                        }\n                    },\n                    WriteToEventLog: false\n            );\n\n\n            // todo implement localization strings\n            m_globalEvents[(int)MyGlobalEventEnum.IceStorm] =\n               new MyGlobalEvent(\n                   Type: MyGlobalEventEnum.IceStorm,\n                   Name: MyTextsWrapperEnum.GlobalEventIceStormName, //Name: MyTextsWrapperEnum.GlobalEvent_IceStorm_Name,\n                   Description: MyTextsWrapperEnum.GlobalEventSunWindDescription,//IceStorm_Description,\n                   RatePerHour: MyFakes.ENABLE_RANDOM_ICE_STORM ? 1.0f : 0.0f,\n                   Icon: null,\n                   Enabled: false,\n                   Action: delegate(object o, EventArgs e)\n                   {\n                       //dont allow sunwind in god editor on or when the game is paused\n                       if (!(MyGuiScreenGamePlay.Static.IsEditorActive() && !MyGuiScreenGamePlay.Static.IsIngameEditorActive()) && !MyMinerGame.IsPaused())\n                       {\n                           MyHudNotification.AddNotification(new MyHudNotification.MyNotification(MyTextsWrapperEnum.GlobalEventSunWindDescription, 5000, null)); // MyHudNotification.AddNotification(new MyHudNotification.MyNotification(MyTextsWrapperEnum.GlobalEvent_IceStorm_Description, 5000));\n                           MyIceStorm.Start();\n                           MyAudio.AddCue2D(MySoundCuesEnum.HudSolarFlareWarning);\n                       }\n                   },\n                   WriteToEventLog: false\n           );\n\n            m_globalEvents[(int)MyGlobalEventEnum.IceComet] =\n                new MyGlobalEvent(\n                    Type: MyGlobalEventEnum.IceComet,\n                    Name: MyTextsWrapperEnum.GlobalEventIceCometName,\n                    Description: MyTextsWrapperEnum.GlobalEventIceCometDescription,\n                    RatePerHour: 0.0f,\n                    Icon: null,\n                    Enabled: false,\n                    Action: delegate(object o, EventArgs e)\n                    {\n                        if (!(MyGuiScreenGamePlay.Static.IsEditorActive() && !MyGuiScreenGamePlay.Static.IsIngameEditorActive()) && !MyMinerGame.IsPaused())\n                        {\n                            MyHudNotification.AddNotification(new MyHudNotification.MyNotification(MyTextsWrapperEnum.GlobalEventSunWindDescription, 5000));\n                            MyIceComet.Start();\n                            MyAudio.AddCue2D(MySoundCuesEnum.HudSolarFlareWarning);\n                        }\n                    },\n                    WriteToEventLog: false\n            );\n\n            foreach (MyGlobalEvent e in m_globalEvents)\n            {\n                System.Diagnostics.Debug.Assert(e != null);\n            }\n\n            MyFactions.OnFactionStatusChanged += new MyFactionStatusChangeHandler(MyFactions_OnFactionStatusChanged);\n        }\n\n        public static MyGlobalEvent GetGlobalEventByType(MyGlobalEventEnum value)\n        {\n            return m_globalEvents[(int) value];\n        }\n\n        static void MyFactions_OnFactionStatusChanged(MyMwcObjectBuilder_FactionEnum faction1, MyMwcObjectBuilder_FactionEnum faction2, MyFactionRelationEnum previousRelation, bool display, bool save)\n        {\n            if (!display) \n            {\n                return;\n            }\n\n            MyTextsWrapperEnum relationChangeEnum = MyTextsWrapperEnum.General;\n            MyFactionRelationEnum newRelation = MyFactions.GetFactionsRelation(faction1, faction2);\n\n            switch (newRelation)\n            {\n                case MyFactionRelationEnum.Friend:\n                    relationChangeEnum = MyTextsWrapperEnum.GlobalEventFactionRelationChange_NeutralToFriends;\n                    break;\n\n                case MyFactionRelationEnum.Neutral:\n                    if (previousRelation == MyFactionRelationEnum.Friend)\n                        relationChangeEnum = MyTextsWrapperEnum.GlobalEventFactionRelationChange_FriendsToNeutral;\n                    else\n                        relationChangeEnum = MyTextsWrapperEnum.GlobalEventFactionRelationChange_EnemyToNeutral;\n                    break;\n\n                case MyFactionRelationEnum.Enemy:\n                    relationChangeEnum = MyTextsWrapperEnum.GlobalEventFactionRelationChange_NeutralToEnemy;\n                    break;\n            }\n\n            MyHudNotification.AddNotification(new MyHudNotification.MyNotification(relationChangeEnum, 5000, null, new object[] { MyFactionConstants.GetFactionProperties(faction1).Name.ToString(), MyFactionConstants.GetFactionProperties(faction2).Name.ToString() }));\n        }\n\n        public static void Update()\n        {\n            if (!MyFakes.ENABLE_GLOBAL_EVENTS)\n                return;\n\n#if RENDER_PROFILING\n            return;\n#endif\n            m_elapsedTimeInMilliseconds += MyConstants.PHYSICS_STEP_SIZE_IN_MILLISECONDS;\n            if (m_elapsedTimeInMilliseconds < GLOBAL_EVENT_UPDATE_RATIO_IN_MS)\n                return;\n            \n            float hoursElapsed = m_elapsedTimeInMilliseconds / (3600 * 1000.0f);\n\n            foreach (MyGlobalEvent globalEvent in m_globalEvents)\n            {\n                if (!globalEvent.Enabled)\n                {\n                    continue;\n                }\n\n                if (!globalEvent.Activated && globalEvent.ActivationDateTime.HasValue && globalEvent.ActivationDateTime.Value < MySession.Static.GameDateTime)\n                {\n                    globalEvent.Activated = true;\n                    StartGlobalEvent(globalEvent);\n                }\n                else\n                {\n                    float ratio = hoursElapsed * globalEvent.RatePerHour;\n                    if (MyMwcUtils.GetRandomFloat(0.0f, 1.0f) < ratio)\n                    {\n                        StartGlobalEvent(globalEvent);\n                    }\n                }\n            }\n\n            m_elapsedTimeInMilliseconds = 0;\n        }\n\n        public static void StartGlobalEvent(MyGlobalEvent globalEvent)\n        {\n            if (MyMultiplayerGameplay.IsHosting)\n            {\n                MyMultiplayerGameplay.Static.SendEvent(MyCamera.Position, globalEvent.Type, MyMwcUtils.GetRandomInt(int.MaxValue));\n            }\n\n            globalEvent.Action(globalEvent, null);\n            AddGlobalEventToEventLog(globalEvent);\n        }\n\n        public static void StartGlobalEvent(MyGlobalEventEnum globalAction)\n        {\n            MyGlobalEvent globalEvent = m_globalEvents[(int)globalAction];\n            StartGlobalEvent(globalEvent);\n        }\n\n        private static void AddGlobalEventToEventLog(MyGlobalEvent globalEvent)\n        {\n            if (globalEvent.WriteToEventLog)\n            {\n                MySession.Static.EventLog.AddGlobalEvent(globalEvent.Type);\n            }\n        }\n\n        public static void Enable(MyGlobalEventEnum globalAction, bool enabled)\n        {\n            MyGlobalEvent globalEvent = m_globalEvents[(int)globalAction];\n            globalEvent.Enabled = enabled;\n        }\n\n        public static void SetRatePerHour(MyGlobalEventEnum globalAction, float ratePerHour)\n        {\n            MyGlobalEvent globalEvent = m_globalEvents[(int)globalAction];\n            globalEvent.RatePerHour = ratePerHour;\n        }\n\n        internal static void EnableAllGlobalEvents()\n        {\n            foreach (var globalEvent in Enum.GetValues(typeof(World.Global.MyGlobalEventEnum)))\n            {\n                Enable((World.Global.MyGlobalEventEnum)globalEvent, true);\n            }\n        }\n\n        internal static void DisableAllGlobalEvents()\n        {\n            foreach (var globalEvent in Enum.GetValues(typeof(World.Global.MyGlobalEventEnum)))\n            {\n                Enable((World.Global.MyGlobalEventEnum)globalEvent, false);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/World/Global/MySecretRooms.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace MinerWars.AppCode.Game.World.Global\n{\n    static class MySecretRooms\n    {\n        // Never change numbers, it's ID in database\n        // Name is SteamStatName\n        public static readonly Dictionary<int, string> SecretRooms = new Dictionary<int, string>()\n        {\n            {1,\"SecretEacSurvey\"},\n            {2,\"SecretLaika\"},\n            {3,\"SecretBarthsMoon\"},\n            {4,\"SecretPirateBase\"},\n            {5,\"SecretRussianWarehouse\"},\n            {6,\"SecretLastHope\"},\n            {7,\"SecretJunkyard\"},\n            {8,\"SecretChineseTranpsort\"},\n            {9,\"SecretChineseRefinery\"},\n            {10,\"SecretFortValiant\"},\n            {11,\"SecretSlaverBase\"},\n            {12,\"SecretSlaverBase2\"},\n            {13,\"SecretRime\"},\n            {14,\"SecretResearchVessel\"},\n            {15,\"SecretRift\"},\n            {16,\"SecretChineseTransmitter\"},\n            {17,\"SecretReichstag\"},\n            {18,\"SecretBioResearch\"},\n            {19,\"SecretTwinTowers\"},\n            {20,\"SecretEacPrison\"},\n            {21,\"SecretEacTransmitter\"},\n        };\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/World/MyPlayer.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nusing MinerWars.AppCode.Game.Audio;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\n\nnamespace MinerWars.AppCode.Game.World\n{\n    using System.Collections.Generic;\n    using MinerWarsMath;\n    using System.Reflection;\n    using KeenSoftwareHouse.Library.Extensions;\n    using MinerWars.AppCode.Game.Managers;\n    using MinerWars.AppCode.Game.Entities;\n    using MinerWars.AppCode.Game.Managers.Session;\n    using MinerWars.AppCode.Game.Missions;\n    using MinerWars.AppCode.Game.HUD;\n    using MinerWars.AppCode.Game.GUI;\n    using MinerWars.AppCode.Game.Entities.Prefabs;\n    using MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects;\n    using MinerWars.AppCode.Game.Inventory;\n    using KeenSoftwareHouse.Library.Trace;\n    using MinerWars.AppCode.Game.Utils;\n    using MinerWars.AppCode.Game.Entities.Tools;\n    using MinerWars.CommonLIB.AppCode.Utils;\n    using SysUtils.Utils;\n    using MinerWars.AppCode.Game.Sessions;\n    using MinerWars.AppCode.Networking.SectorService;\n    using MinerWars.AppCode.Networking;\n\n    delegate void TravelLeavingHandler(MyMwcTravelTypeEnum travelType);\n    delegate void TravelEnterHandler();\n\n    class MyPlayer : IMyHasFaction\n    {\n        #region Properties\n\n        MyEntity m_LastDamageSource;\n\n        /// <summary>\n        /// Gets or sets Health.\n        /// </summary>\n        /// <value>\n        /// The Health.\n        /// </value>\n        float m_health;\n        public float Health\n        {\n            get\n            {\n                return m_health;\n            }\n            private set\n            {\n                m_health = value;\n\n                if (m_health <= 0 && !m_wasDead)\n                {\n                    m_wasDead = true;\n                    OnAliveChanged();\n                }\n\n                if (m_health > 0 && m_wasDead)\n                {\n                    m_wasDead = false;\n                    OnAliveChanged();\n                }\n                m_LastDamageSource = null;\n            }\n        }\n\n        bool m_wasDead;\n\n        /// <summary>\n        /// Raised when health is decreased under or equal to zero.\n        /// Or when it is raised to positive from negative or from zero.\n        /// </summary>\n        public event Action<MyPlayer> AliveChanged;\n\n        public float MaxHealth { get; set; }\n\n        void OnAliveChanged()\n        {\n            var handler = AliveChanged;\n            if (handler != null)\n            {\n                handler(this);\n            }\n\n            if (IsDead())\n            {\n                m_deathBeep = MyAudio.AddCue2D(MySoundCuesEnum.SfxPlayerDeathBeep);\n\n                if (MyMultiplayerGameplay.IsRunning && MySession.PlayerShip != null)\n                {\n                    MyMultiplayerGameplay.Static.PilotDie(MySession.PlayerShip, m_LastDamageSource);\n                }\n            }\n            else\n            {\n                if(m_deathBeep.HasValue && m_deathBeep.Value.IsPlaying)\n                {\n                    m_deathBeep.Value.Stop(SharpDX.XACT3.StopFlags.Immediate);\n                }\n            }\n        }\n\n        MySoundCue? m_deathBeep;\n\n        /// <summary>\n        /// Gets or sets the last ship used ship.\n        /// </summary>\n        /// <value>\n        /// The last ship.\n        /// </value>\n        //MySmallShip m_ship;\n\n        public MySmallShip Ship\n        {\n            get\n            {\n                //return m_ship;\n                return MySession.PlayerShip;\n            }\n            set\n            {\n                MySession.PlayerShip = value;\n                //m_ship = value;\n            }\n        }\n\n        float m_money;\n\n        public float Money\n        {\n            get\n            {\n                return m_money;\n            }\n            set\n            {\n                float oldValue = m_money;\n                m_money = MathHelper.Clamp(value, 0, MyPlayerConstants.MONEY_MAX);\n                if (!MySteam.IsActive && MyMultiplayerGameplay.IsRunning && MyMultiplayerGameplay.IsSandBox() && (m_money - oldValue) != 0)\n                {\n                    var client = MySectorServiceClient.GetCheckedInstance();\n                    client.UpdateGameMoneyCompleted += client_UpdateGameMoneyCompleted;\n                    client.UpdateGameMoneyAsync((decimal)(m_money - oldValue));\n                }\n            }\n        }\n\n        void client_UpdateGameMoneyCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e)\n        {\n            MySectorServiceClient.SafeClose();\n        }\n\n        MyPlayerStatistics m_statistics;\n\n        public MyPlayerStatistics Statistics\n        {\n            get\n            {\n                return m_statistics;\n            }\n            set\n            {\n                m_statistics = value;\n            }\n        }\n\n        public MyMedicine[] Medicines;\n\n        /// <summary>\n        /// Time without oxygen in seconds\n        /// </summary>\n        public float TimeWithoutOxygen { get; set; }\n\n\n        public MyMwcObjectBuilder_FactionEnum Faction { get; set; }\n\n        #endregion\n\n        private List<MyInventoryItem> m_heplerInventoryItems = new List<MyInventoryItem>();\n        public const float DEFAULT_PLAYER_MAX_HEALTH = 100f;\n\n        public MyPlayer()\n        {\n            MaxHealth = Health = DEFAULT_PLAYER_MAX_HEALTH;\n            Statistics = new MyPlayerStatistics();\n            Faction = MyMwcObjectBuilder_FactionEnum.Rainiers;\n            Medicines = MyMedicine.GetArrayOfAllMedicines();\n        }\n\n        public event TravelEnterHandler TravelEntered;\n        public event TravelLeavingHandler TravelLeaving;\n\n        public void TravelEnter()\n        {\n            MyMwcLog.WriteLine(\"MyPlayer::TravelEnter - START\");\n            MyMwcLog.IncreaseIndent();\n\n            MyTrace.Send(TraceWindow.Saving, \"Player.TravelEnter()\");\n            UnpackAfterEnter();\n\n            var handler = TravelEntered;\n            if (handler != null)\n            {\n                handler();\n            }\n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyPlayer::TravelEnter - END\");\n        }\n\n        public void TravelLeave(MyMwcTravelTypeEnum travelType)\n        {\n            MyTrace.Send(TraceWindow.Saving, \"Player.TravelLeave()\");\n            var handler = TravelLeaving;\n            if (handler != null)\n            {\n                handler(travelType);\n            }\n\n            PackBeforeLeave(travelType);\n        }\n\n        private void UnpackAfterEnter()\n        {\n            UnpackMothership();\n            UnpackDrones();\n            MySession.PlayerFriends.UnpackFriends();\n\n            ///\n            //MySession.Static.Inventory.ClearInventoryItems();\n            ///\n        }\n\n\n        public static Matrix FindMothershipPosition()\n        {\n            foreach (MyEntity entity in MyEntities.GetEntities())\n            {\n                MyDummyPoint dummyPoint = entity as MyDummyPoint;\n                if (dummyPoint != null)\n                {\n                    if ((dummyPoint.DummyFlags & MyDummyPointFlags.MOTHERSHIP_START) > 0)\n                    {\n                        return dummyPoint.WorldMatrix;\n                    }\n                }\n            }\n\n            return Matrix.CreateWorld(MySession.PlayerShip.GetPosition() + new Vector3(100, 100, 0), Vector3.Forward, Vector3.Up);\n        }\n\n        private static void UnpackMothership()\n        {\n            MyTrace.Send(TraceWindow.Saving, \"Player unpacking mothership\");\n            MyInventoryItem item = MySession.Static.Inventory.GetInventoryItem(MyMwcObjectBuilderTypeEnum.PrefabContainer, null);\n            if (item != null)\n            {\n                //place largeship\n                //MyMwcObjectBuilder_LargeShip largeShipObjectBuilder = (MyMwcObjectBuilder_LargeShip)inventoryItems[0].GetObjectBuilder(true);\n                MyMwcObjectBuilder_PrefabContainer containerObjectBuilder =\n                    (MyMwcObjectBuilder_PrefabContainer)item.GetInventoryItemObjectBuilder(true);\n\n                // We need to remove id's because mothership container could have same entity id in different sector\n                containerObjectBuilder.RemapEntityIds(new MyEntityIdRemapContext());\n\n                MyPrefabContainer container = new MyPrefabContainer();\n                container.Init(null, containerObjectBuilder, FindMothershipPosition());\n\n                MyEntities.Add(container);\n\n                //CreateFromObjectBuilderAndAdd(null, largeShipObjectBuilder, Matrix.CreateTranslation(MySession.PlayerShip.GetPosition() + new Vector3(100,100,0)));\n                MySession.Static.Inventory.RemoveInventoryItem(item);\n\n                container.Link();\n\n                MyTrace.Send(TraceWindow.Saving, \"Player mothership found and unpacked\");\n            }\n        }\n\n        private void UnpackDrones()\n        {\n            MyTrace.Send(TraceWindow.Saving, \"Player unpacking drones\");\n\n            m_heplerInventoryItems.Clear();\n            MySession.Static.Inventory.GetInventoryItems(ref m_heplerInventoryItems, MyMwcObjectBuilderTypeEnum.Drone, null);\n            foreach (var inventoryItem in m_heplerInventoryItems)\n            {\n                var droneObjectBuilder = (MyMwcObjectBuilder_Drone)inventoryItem.GetInventoryItemObjectBuilder(true);\n\n                // We need to removed id's because mothership container could have same entity id in different sector\n                droneObjectBuilder.EntityId = null;\n                droneObjectBuilder.PositionAndOrientation = new MyMwcPositionAndOrientation(\n                    MySession.PlayerShip.GetPosition() + new Vector3(-100, 100, 50),\n                    MySession.PlayerShip.WorldMatrix.Forward,\n                    MySession.PlayerShip.WorldMatrix.Up);\n\n                var drone = MyEntities.CreateFromObjectBuilderAndAdd(\"Drone\", droneObjectBuilder,\n                                                         droneObjectBuilder.PositionAndOrientation.GetMatrix());\n\n                drone.Link();\n\n                /*\n                MyPrefabContainer container = new MyPrefabContainer();\n                Matrix worldMatrix = Matrix.CreateTranslation(MySession.PlayerShip.GetPosition() + new Vector3(100, 100, 0));\n\n                container.Init(null, containerObjectBuilder, worldMatrix);\n\n                MyEntities.Add(container);\n\n                //CreateFromObjectBuilderAndAdd(null, largeShipObjectBuilder, Matrix.CreateTranslation(MySession.PlayerShip.GetPosition() + new Vector3(100,100,0)));\n                 */\n                 \n                MySession.Static.Inventory.RemoveInventoryItem(inventoryItem);\n            }\n\n            MyTrace.Send(TraceWindow.Saving, \"Drones unpacked\");\n        }\n\n        private void PackBeforeLeave(MyMwcTravelTypeEnum travelType)\n        {\n            if (travelType == MyMwcTravelTypeEnum.SOLAR)\n            {\n                PackMothership();\n            }\n\n            PackDrones();\n            MySession.PlayerFriends.PackFriends();\n        }\n\n\n        private static void UpdateStartDummy(MyDummyPointFlags flags, Matrix position)\n        {\n            MyDummyPoint playerStartDummy = null;\n            foreach (var entity in MyEntities.GetEntities())\n            {\n                MyDummyPoint dummy = entity as MyDummyPoint;\n                if (dummy != null && (dummy.DummyFlags & flags) > 0)\n                {\n                    playerStartDummy = dummy;\n                    break;\n                }\n            }\n\n            if (playerStartDummy == null)\n            {\n                MyMwcObjectBuilder_DummyPoint dummyPointObjectBuilder =\n                    MyMwcObjectBuilder_Base.CreateNewObject(MyMwcObjectBuilderTypeEnum.DummyPoint, null) as\n                    MyMwcObjectBuilder_DummyPoint;\n                playerStartDummy =\n                    MyEntities.CreateFromObjectBuilderAndAdd(null, dummyPointObjectBuilder, Matrix.Identity) as MyDummyPoint;\n                playerStartDummy.DummyFlags |= flags;\n            }\n\n            playerStartDummy.SetWorldMatrix(position);\n        }\n\n        private static void PackMothership()\n        {\n            MyTrace.Send(TraceWindow.Saving, \"Player packing mothership\");\n            MyPrefabHangar hangar = MySession.Static.Player.Ship.GetNearMotherShipContainer();\n\n            if (hangar == null)\n            { //We are traveling in solar map but madelyn is far away. Assume we are travelling with Madelyn by default\n                MyEntity madelynHangar;\n                MyEntities.TryGetEntityByName(MyMission.MyMissionLocation.MADELYN_HANGAR, out madelynHangar);\n                hangar = madelynHangar as MyPrefabHangar;\n            }\n\n            if (hangar != null)\n            {\n                // Move player start location dummy, so that next time player starts on same position\n                UpdateStartDummy(MyDummyPointFlags.PLAYER_START, MySession.PlayerShip.WorldMatrix);\n\n                // Move mothership start location dummy, so that next time mothership starts on same position\n                UpdateStartDummy(MyDummyPointFlags.MOTHERSHIP_START, hangar.Parent.WorldMatrix);\n\n                var container = hangar.Parent;\n                MyInventoryItem item = MyInventory.CreateInventoryItemFromObjectBuilder(container.GetObjectBuilder(true));\n                MySession.Static.Inventory.AddInventoryItem(item);\n\n                container.MarkForClose();\n\n                MyTrace.Send(TraceWindow.Saving, \"Player mothership found and packed\");\n            }\n        }\n\n        private void PackDrones()\n        {\n            MyTrace.Send(TraceWindow.Saving, \"Player packing drones\");\n            var drones = MySession.PlayerShip.Drones;\n            if (drones != null && drones.Count > 0)\n            {\n                for (int index = drones.Count - 1; index >= 0; index--)\n                {\n                    var drone = drones[index];\n                    var inventoryItem = MyInventory.CreateInventoryItemFromObjectBuilder(drone.GetObjectBuilder(true));\n                    MySession.Static.Inventory.AddInventoryItem(inventoryItem);\n\n                    drone.MarkForClose();\n                }\n\n                MyTrace.Send(TraceWindow.Saving, \"Drones found and packed\");\n            }\n        }\n\n\n\n        public void Init(MyMwcObjectBuilder_Player playerObjectBuilder)\n        {\n            System.Diagnostics.Debug.Assert(playerObjectBuilder != null);\n\n            Health = playerObjectBuilder.Health;\n            Money = playerObjectBuilder.Money;\n            TimeWithoutOxygen = playerObjectBuilder.WithoutOxygen;\n\n            if (playerObjectBuilder.PlayerStatisticsObjectBuilder != null)\n            {\n                Statistics.Init(playerObjectBuilder.PlayerStatisticsObjectBuilder);\n            }\n\n            if (playerObjectBuilder.ShipObjectBuilder != null)\n            {\n                // because we want generate playership's id after all other entities will be loaded\n                //playerObjectBuilder.ShipObjectBuilder.EntityId = null;                \n                Ship = MyEntities.CreateFromObjectBuilderAndAdd(null,\n                    playerObjectBuilder.ShipObjectBuilder,\n                    playerObjectBuilder.ShipObjectBuilder.PositionAndOrientation.GetMatrix()) as MySmallShip;\n\n                if (playerObjectBuilder.ShipConfigObjectBuilder != null)\n                {\n                    Ship.Config.Init(playerObjectBuilder.ShipConfigObjectBuilder);\n                }\n            }\n\n            if (MyFakes.ENABLE_REFILL_PLAYER_TO_MAX)\n            {\n                SetToMax();\n            }\n        }\n\n        private void SetToMax()\n        {\n            Ship.Health = Ship.MaxHealth;\n            Ship.ArmorHealth = Ship.MaxArmorHealth;\n            Ship.Fuel = Ship.MaxFuel;\n            Ship.Oxygen = Ship.MaxOxygen;\n            Health = MaxHealth;\n            List<MyInventoryItem> ammoInventoryItems = new List<MyInventoryItem>();\n            Ship.Inventory.GetInventoryItems(ref ammoInventoryItems, MyMwcObjectBuilderTypeEnum.SmallShip_Ammo, null);\n            foreach (var ammoItem in ammoInventoryItems)\n            {\n                ammoItem.Amount = ammoItem.MaxAmount;\n            }\n        }\n\n        public MyMwcObjectBuilder_Player GetObjectBuilder(bool getExactCopy)\n        {\n            return new MyMwcObjectBuilder_Player(Health, Money, TimeWithoutOxygen, Statistics.GetObjectBuilder(), Ship.GetObjectBuilder(getExactCopy) as MyMwcObjectBuilder_SmallShip, Ship.Config.GetObjectBuilder());\n        }\n\n        #region Methods\n\n        public void AddHealth(float amount, MyEntity damageSource)\n        {\n            if (amount < 0 && MyGuiScreenGamePlay.Static.IsCheatEnabled(Gameplay.MyGameplayCheatsEnum.PLAYER_HEALTH_INDESTRUCTIBLE))\n            {\n                return;\n            }\n\n            m_LastDamageSource = damageSource;\n            Health = Math.Min(m_health + amount, MaxHealth);\n        }\n\n        public void RestoreHealth()\n        {\n            Health = MaxHealth;\n        }\n\n        public bool IsDead()\n        {\n            return Health <= 0;\n        }\n\n        #endregion\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/World/MyPlayerFriends.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.HUD;\nusing System.Diagnostics;\nusing SysUtils.Utils;\nusing MinerWars.AppCode.Game.Managers.Session;\nusing MinerWars.AppCode.Game.Inventory;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders.Object3D;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Physics;\n\nnamespace MinerWars.AppCode.Game.World\n{\n    class MyPlayerFriends\n    {\n        private List<MySmallShip> m_playerFriends;\n        private List<MyInventoryItem> m_helperInventoryItems = new List<MyInventoryItem>();\n\n        private Action<MyEntity> m_friendClosing;\n        private MyGroupMask m_friendMask;\n\n        public MyGroupMask FriendMask \n        {\n            get { return m_friendMask; }\n            set\n            {\n                foreach (var f in m_playerFriends)\n                {\n                    f.Physics.GroupMask &= ~m_friendMask;\n                    f.Physics.GroupMask |= value;\n                }\n                m_friendMask = value;\n            }\n        }\n\n        public MyPlayerFriends() \n        {\n            m_friendClosing = new Action<MyEntity>(OnFriendClosing);\n            m_playerFriends = new List<MySmallShip>();\n        }\n\n        /// <summary>\n        /// Only use for debug!\n        /// </summary>\n        public List<MySmallShip> GetDebug()\n        {\n            return m_playerFriends;\n        }\n\n        public void Add(MySmallShip friend) \n        {\n            Debug.Assert(!friend.Closed);\n            if (!Contains(friend)) \n            {\n                friend.OnClosing += m_friendClosing;\n                friend.Physics.GroupMask |= FriendMask;\n                m_playerFriends.Add(friend);                \n                UpdateHUD(friend, true);                \n            }\n        }\n\n        private void OnFriendClosing(MyEntity friend)\n        {\n            m_playerFriends.Remove(friend as MySmallShip);\n            friend.Physics.GroupMask &= ~FriendMask;\n            friend.OnClosing -= m_friendClosing;\n        }\n\n        public MySmallShip this[int index]\n        {\n            get\n            {\n                return m_playerFriends[index];\n            }\n        }\n\n        public void Remove(MySmallShip friend) \n        {\n            m_playerFriends.Remove(friend);            \n            UpdateHUD(friend, false);\n            friend.Physics.GroupMask &= ~FriendMask;\n            friend.OnClosing -= m_friendClosing;\n        }\n\n        public bool Contains(MySmallShip friend) \n        {\n            return m_playerFriends.Contains(friend);\n        }\n\n        public void Clear() \n        {\n            while (m_playerFriends.Count > 0) \n            {\n                Remove(m_playerFriends[0]);\n            }\n        }\n\n        public int Count { get { return m_playerFriends.Count; } }\n\n        private void UpdateHUD(MySmallShip friend, bool isFriend) \n        {\n            MyHudEntityParams? gettedHudParams = MyHud.GetHudParams(friend);\n            if (gettedHudParams != null)\n            {\n                MyHudEntityParams hudParams = gettedHudParams.Value;\n                if (isFriend)\n                {\n                    hudParams.FlagsEnum &= ~MyHudIndicatorFlagsEnum.ALPHA_CORRECTION_BY_DISTANCE;\n                    hudParams.FlagsEnum &= ~MyHudIndicatorFlagsEnum.SHOW_ONLY_IF_DETECTED_BY_RADAR;\n                    hudParams.MaxDistance = 0f;\n                }\n                else\n                {\n                    hudParams.FlagsEnum |= MyHudIndicatorFlagsEnum.ALPHA_CORRECTION_BY_DISTANCE;\n                    hudParams.FlagsEnum |= MyHudIndicatorFlagsEnum.SHOW_ONLY_IF_DETECTED_BY_RADAR;\n                    hudParams.MaxDistance = 10000f;\n                }\n                MyHud.ChangeText(friend, hudParams.Text, hudParams.TargetMode, hudParams.MaxDistance, hudParams.FlagsEnum, hudParams.DisplayFactionRelation, maxDistanceMultiplerType: hudParams.MaxDistanceMultiplerType);\n            }\n        }\n\n        public void PackFriends()\n        {\n            MyMwcLog.WriteLine(\"MyPlayerFriends::PackFriends - START\");\n            MyMwcLog.IncreaseIndent();\n\n            while (m_playerFriends.Count > 0)\n            {\n                var friend = m_playerFriends[0];\n                if (friend is MySmallShipBot)\n                {\n                    var inventoryItem = MyInventory.CreateInventoryItemFromObjectBuilder(friend.GetObjectBuilder(true));\n                    MySession.Static.Inventory.AddInventoryItem(inventoryItem);\n                }\n                friend.MarkForClose(); // This causes remove from m_playerFriends\n                m_playerFriends.Remove(friend);\n            }\n\n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyPlayerFriends::PackFriends - END\");\n        }\n\n        public void UnpackFriends()\n        {\n            MyMwcLog.WriteLine(\"MyPlayerFriends::UnpackFriends - START\");\n            MyMwcLog.IncreaseIndent();\n\n            m_helperInventoryItems.Clear();\n            \n            MySession.Static.Inventory.GetInventoryItems(ref m_helperInventoryItems, MyMwcObjectBuilderTypeEnum.SmallShip_Bot, null);\n            foreach (var inventoryItem in m_helperInventoryItems)\n            {\n                MyMwcObjectBuilder_SmallShip friendObjectBuilder = (MyMwcObjectBuilder_SmallShip)inventoryItem.GetInventoryItemObjectBuilder(true);\n\n                // We need to removed id's because mothership container could have same entity id in different sector\n                friendObjectBuilder.EntityId = null;\n                friendObjectBuilder.PositionAndOrientation = new MyMwcPositionAndOrientation(\n                    MySession.PlayerShip.GetPosition() + new Vector3(-100, 100, 50),\n                    MySession.PlayerShip.WorldMatrix.Forward,\n                    MySession.PlayerShip.WorldMatrix.Up);\n\n                var friend = (MySmallShipBot)MyEntities.CreateFromObjectBuilderAndAdd(friendObjectBuilder.DisplayName, friendObjectBuilder,\n                                                         friendObjectBuilder.PositionAndOrientation.GetMatrix());\n\n                friend.Activate(true, false);\n                friend.SpeedModifier = 1.0f;\n                friend.Save = false;\n                Add(friend);\n                friend.Follow(MySession.PlayerShip);\n\n                MySession.Static.Inventory.RemoveInventoryItem(inventoryItem);\n            }\n            \n            MyMwcLog.DecreaseIndent();\n            MyMwcLog.WriteLine(\"MyPlayerFriends::UnpackFriends - END\");\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/World/MyPlayerStatistics.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace MinerWars.AppCode.Game.World\n{\n    class MyPlayerStatistics\n    {\n        public int PlayersKilled;\n        public int BulletsShot;\n        public int HarvesteOre;\n        public int TunnelsDug;\n        public int TraveledDistance;\n        public int RescuedPlayers;\n        public float GamePlayTime;\n        public float OxygenSpent;\n        public int FriendlyFire;\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/World/MySector.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.SolarSystem;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.TransparentGeometry;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\n\nnamespace MinerWars.AppCode.Game.World\n{\n    /// <summary>\n    /// Current sector\n    /// </summary>\n    class MySector\n    {\n        static MySector()\n        {\n            // Set defaults - that's for example for menu animations, trailers etc...\n            SetDefaults();\n        }\n\n        public static MySolarSystemAreaEnum? Area;\n\n        public static MySunProperties SunProperties;\n        public static MyFogProperties FogProperties;\n        public static MyDebrisProperties DebrisProperties;\n        public static MyParticleDustProperties ParticleDustProperties;\n        public static MyGodRaysProperties GodRaysProperties;\n        public static MyImpostorProperties[] ImpostorProperties;\n        public static string BackgroundTexture;\n        public static bool UseGenerator = false;\n        public static List<int> PrimaryMaterials;\n        public static List<int> SecondaryMaterials;\n        public static List<int> AllowedMaterials;\n\n        public static float FogMultiplierForSun\n        {\n            get\n            {\n                const float maxSunFog = 0.7f; // 70% of fog applied to sun\n                return FogProperties.FogMultiplier * maxSunFog;\n            }\n        }\n\n        public static Vector3 SunColorWithFog\n        {\n            get\n            {\n                return Vector3.Lerp(SunProperties.SunDiffuse, FogProperties.FogColor, FogMultiplierForSun);\n            }\n        }\n\n        public static void SetDefaults()\n        {\n            MySolarSystemArea defaults = MySolarSystemConstants.GetDefaultArea();\n            SunProperties = defaults.SectorData.SunProperties;\n            FogProperties = defaults.SectorData.FogProperties;\n            DebrisProperties = defaults.SectorData.DebrisProperties;\n            ImpostorProperties = defaults.SectorData.ImpostorProperties;\n            ParticleDustProperties = defaults.SectorData.ParticleDustProperties;\n            GodRaysProperties = defaults.SectorData.GodRaysProperties;\n            BackgroundTexture = defaults.SectorData.BackgroundTexture;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Game/World/MySectorGroups.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing Microsoft.Xna.Framework;\nusing MinerWars.CommonLIB.AppCode.Utils;\n\n//  Sector group is a origin/pivot point for a group of sectors in some area. In fact we don't\n//  need this if all sector will be relative to sun. But because I want more flexibility when\n//  size of sector changes (can happen in future during game-play-testing), I want to have areas\n//  where are sectors and those sectors are relative to their sector group.\n//  I assume player can't travel in his ship from sector group to other sector group. Distance will\n//  be just too large (assuming that traveling from sun to earth will take 7 years).\n\nnamespace MinerWars.AppCode.Game.World\n{\n    //  IMPORTANT: Never change numeric values because they are also used in database\n    //  IMPORTANT: Never delete any enum item\n    enum MySectorGroupEnum : short\n    {\n        NEAR_SUN = 0,\n        MIDDLE_EAST = 1,\n        MIDDLE_WEST = 2,\n        NEAR_EARTH = 3,\n        ABOVE_SUN = 4\n    }\n\n    class MySectorGroup\n    {\n        public MySectorGroupEnum GroupEnum;         //  Group enum\n        public Vector3 Position;                    //  Position within solar syste, relative to sun\n\n        private MySectorGroup() { }\n\n        public MySectorGroup(MySectorGroupEnum groupEnum, Vector3 position)\n        {\n            GroupEnum = groupEnum;\n            Position = position;\n        }\n    }\n\n    static class MySectorGroups\n    {\n        static MySectorGroup[] m_groups;\n\n        static MySectorGroups()\n        {\n            m_groups = new MySectorGroup[MyMwcUtils.GetMaxAsShortValueFromEnum<MySectorGroupEnum>()];\n            Add(MySectorGroupEnum.NEAR_SUN, new Vector3(0, 0, 0));\n            Add(MySectorGroupEnum.MIDDLE_EAST, new Vector3(0, 0, 0));\n            Add(MySectorGroupEnum.MIDDLE_WEST, new Vector3(0, 0, 0));\n            Add(MySectorGroupEnum.NEAR_EARTH, new Vector3(0, 0, 0));\n            Add(MySectorGroupEnum.NEAR_EARTH, new Vector3(0, 0, 0));\n\n            //  Assert for whether we didn't forget to assign\n            for (int i = 0; i < m_groups.Length; i++)\n            {\n                MyMwcUtils.AssertRelease(m_groups[i] != null);\n            }\n        }\n\n        static void Add(MySectorGroupEnum groupEnum, Vector3 position)\n        {\n            m_groups[(int)groupEnum] = new MySectorGroup(groupEnum, position);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Networking/MasterService/MyMasterServiceClient.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.ServiceModel;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils;\nusing MinerWars.CommonLIB.AppCode.Networking.Services;\nusing System.Diagnostics;\nusing SysUtils.Utils;\nusing MinerWars.AppCode.Game.Utils;\n\nnamespace MinerWars.AppCode.Networking.MasterService\n{\n    public partial class MyMasterServiceClient\n    {\n        private static MyMasterServiceClient m_instance;\n\n        private static string m_username;\n        private static string m_passwordHash;\n\n        public static void SetCredentials(string username, string passwordHash)\n        {\n            m_username = username;\n            m_passwordHash = passwordHash;\n            SafeClose();\n        }\n\n        static void SafeClose()\n        {\n            try\n            {\n                if(m_instance != null) m_instance.Close();\n            }\n            catch (Exception) { }\n            m_instance = null;\n        }\n\n        public static bool HasCredentials\n        {\n            get\n            {\n                return m_username != null && m_passwordHash != null;\n            }\n        }\n\n        public static MyMasterServiceClient GetCheckedInstance()\n        {\n            Debug.Assert(HasCredentials, \"Set credential prior getting instance method\");\n\n            if (m_instance == null || m_instance.State == CommunicationState.Faulted || m_instance.State == CommunicationState.Closed || m_instance.State == CommunicationState.Closing)\n            {\n                SafeClose();\n                m_instance = CreateInstance();\n            }\n            return m_instance;\n        }\n\n        private static MyMasterServiceClient CreateInstance()\n        {\n            var uri = String.Format(\"net.tcp://{0}:{1}\", MyMwcFinalBuildConstants.MASTER_SERVER_ADDRESS, MyMwcNetworkingConstants.NETWORKING_PORT_MASTER_SERVER_NEW);\n\n            MyMwcLog.WriteLine(\"Creating master service client, url: \" + uri);\n\n            // create the URI which is used as the service endpoint\n            Uri tcpBaseAddress = new Uri(uri);\n\n            if (MyFakes.TEST_DNS_UNAVAILABLE)\n            {\n                tcpBaseAddress = new Uri(\"d23>?<'12`/.,;'l,;l\"); // Non sense URL\n            }\n\n            // create the net.tcp binding for the service endpoint\n            NetTcpBinding ntcBinding = new NetTcpBinding();\n            ntcBinding.Security.Mode = SecurityMode.None;\n            ntcBinding.MaxBufferPoolSize = MyMwcNetworkingConstants.MAX_WCF_MESSAGE_POOL_SIZE;\n            ntcBinding.MaxBufferSize = MyMwcNetworkingConstants.MAX_WCF_MESSAGE_SIZE;\n            ntcBinding.MaxConnections = MyMwcNetworkingConstants.MAX_WCF_CONNECTIONS;\n            ntcBinding.MaxReceivedMessageSize = MyMwcNetworkingConstants.MAX_WCF_MESSAGE_SIZE;\n            ntcBinding.ReaderQuotas.MaxArrayLength = MyMwcNetworkingConstants.MAX_WCF_MESSAGE_SIZE;\n            ntcBinding.ReaderQuotas.MaxBytesPerRead = MyMwcNetworkingConstants.MAX_WCF_MESSAGE_SIZE;\n            ntcBinding.SendTimeout = MyMwcNetworkingConstants.WCF_TIMEOUT_DISCONNECT;\n            ntcBinding.ReceiveTimeout = MyMwcNetworkingConstants.WCF_TIMEOUT_DISCONNECT;\n            ntcBinding.Security.Mode = SecurityMode.Message;\n            ntcBinding.Security.Message.ClientCredentialType = MessageCredentialType.UserName;\n            ntcBinding.Security.Transport.ClientCredentialType = TcpClientCredentialType.None;\n            ntcBinding.Security.Transport.ProtectionLevel = System.Net.Security.ProtectionLevel.None;\n\n            var decoratedBinding = MyCustomBinding.DecorateBinding(ntcBinding);\n\n            MyMasterServiceClient client = new MyMasterServiceClient(decoratedBinding, new EndpointAddress(tcpBaseAddress, EndpointIdentity.CreateDnsIdentity(MyMwcNetworkingConstants.WCF_MASTER_SERVER_CN)));\n            client.ClientCredentials.UserName.UserName = m_username;\n            client.ClientCredentials.UserName.Password = m_passwordHash;\n            client.ClientCredentials.ServiceCertificate.Authentication.CustomCertificateValidator = new MyCertificateValidator(MyMwcNetworkingConstants.WCF_MASTER_SERVER_HASH);\n            client.ClientCredentials.ServiceCertificate.Authentication.CertificateValidationMode = System.ServiceModel.Security.X509CertificateValidationMode.Custom;\n            return client;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Networking/MyLocalCache.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.ObjectBuilders;\nusing System.IO;\nusing SysUtils.Utils;\nusing SysUtils;\nusing MinerWars.CommonLIB.AppCode.Networking;\nusing System.Diagnostics;\nusing KeenSoftwareHouse.Library.Trace;\nusing MinerWars.AppCode.Game.Missions;\nusing KeenSoftwareHouse.Library.Security;\nusing System.Security.Cryptography;\nusing KeenSoftwareHouse.Library.Extensions;\nusing MinerWars.AppCode.Game.World;\nusing MinerWars.AppCode.App;\n\nnamespace MinerWars.AppCode.Networking\n{\n    class MyLocalCache\n    {\n        public static bool IsSupported(MyMwcSectorTypeEnum sectorType, int? userId)\n        {\n            return sectorType == CommonLIB.AppCode.Networking.MyMwcSectorTypeEnum.STORY && userId != null;\n        }\n\n        public static bool CanBeSaved(MyMwcObjectBuilder_Checkpoint checkpoint)\n        {\n            // Story checkpoint (STORY && UserId != null)\n            return IsSupported(checkpoint.CurrentSector.SectorType, checkpoint.CurrentSector.UserId);\n        }\n\n        public static string CachePath { get { return Path.Combine(MyFileSystemUtils.GetApplicationUserDataFolder(), \"Cache\", MyMwcFinalBuildConstants.TYPE_AS_STRING); } }\n        public static string SavesPath\n        {\n            get\n            {\n                string basePath = Path.Combine(MyFileSystemUtils.GetApplicationUserDataFolder(), \"Saves\");\n\n                if (MySteam.IsActive)\n                {\n                    return Path.Combine(basePath, \"STEAM\", MySteam.UserId.ToString());\n                }\n                else\n                {\n                    return Path.Combine(basePath, MyMwcFinalBuildConstants.TYPE_AS_STRING, MyClientServer.LoggedPlayer.UserName.ToString());\n                }\n            }\n        }\n\n        public static string CurrentChapterName = \"Current\";\n        public static string CurrentSavePath { get { return Path.Combine(SavesPath, CurrentChapterName); } }\n        public static string ContentSectorPath { get { return Path.Combine(MyMinerGame.Static.RootDirectory, \"Sectors\"); } }\n\n        public static string GetChapterDirectory(string chapterName)\n        {\n            return Path.Combine(SavesPath, chapterName);\n        }\n\n        static bool IsSave(MyMwcSectorIdentifier sector)\n        {\n            return sector.UserId != null && sector.SectorType == MyMwcSectorTypeEnum.STORY;\n        }\n\n        public static string GetSectorPath(MyMwcSectorIdentifier sector)\n        {\n            string dir;\n            string file;\n\n            if (IsSave(sector))\n            {\n                dir = CurrentSavePath;\n                file = GetSectorName(sector, false) + \".mws\"; // Saves does not include UserId\n            }\n            else\n            {\n                dir = CachePath;\n                file = GetSectorName(sector, true) + \".mws\"; // Cache include UserId\n            }\n\n            if (!Directory.Exists(dir))\n            {\n                Directory.CreateDirectory(dir);\n            }\n\n            return Path.Combine(dir, file);\n        }\n\n        public static string GetSectorNameLong(MyMwcSectorIdentifier sector)\n        {\n            var name = \"\";\n            if (!string.IsNullOrEmpty(sector.SectorName))\n            {\n                name = String.Format(\" ({0})\", sector.SectorName);\n            }\n            return GetSectorName(sector, true) + name;\n        }\n\n        public static string GetSectorName(MyMwcSectorIdentifier sector, bool includeUserId)\n        {\n            string name;\n            switch (sector.SectorType)\n            {\n                case MyMwcSectorTypeEnum.STORY:\n                    name = \"STORY\";\n                    break;\n\n                case MyMwcSectorTypeEnum.SANDBOX:\n                    name = \"SANDBOX\";\n                    break;\n\n                default:\n                    throw new MyMwcExceptionApplicationShouldNotGetHere();\n            }\n\n            string userId = sector.UserId.HasValue ? sector.UserId.Value.ToString() : \"NULL\";\n\n            if (includeUserId)\n            {\n                return String.Format(\"{0}_{1}_{2}_{3}_{4}_\", name, userId, sector.Position.X, sector.Position.Y, sector.Position.Z);\n            }\n            else\n            {\n                return String.Format(\"{0}_{1}_{2}_{3}_\", name, sector.Position.X, sector.Position.Y, sector.Position.Z);\n            }\n        }\n\n        public static List<MyMwcSectorIdentifier> GetOfficialMultiplayerSectorIdentifiers()\n        {\n            string[] officialMaps = new string[]\n            {\n                \"SANDBOX_-100_0_20_.mws\",\n                \"SANDBOX_-15_0_-42_.mws\",\n                \"SANDBOX_-30_0_-61_.mws\",\n                \"SANDBOX_-38_0_71_.mws\",\n                \"SANDBOX_-43_0_86_.mws\",\n                \"SANDBOX_-46_0_48_.mws\",\n                \"SANDBOX_-4_0_23_.mws\",\t\n                \"SANDBOX_-66_0_-44_.mws\",\n                \"SANDBOX_-78_0_35_.mws\",\n                \"SANDBOX_-79_0_70_.mws\",\n                \"SANDBOX_-8_0_-5_.mws\",\t\n                \"SANDBOX_-93_0_46_.mws\",\n                \"SANDBOX_17_0_67_.mws\",\t\n                \"SANDBOX_18_0_96_.mws\",\t\n                \"SANDBOX_19_0_-92_.mws\",\n                \"SANDBOX_1_0_-58_.mws\",\t\n                \"SANDBOX_3_0_9_.mws\",\t\n                \"SANDBOX_47_0_-24_.mws\",\n                \"SANDBOX_53_0_84_.mws\",\t\n                \"SANDBOX_61_0_-65_.mws\",\n                \"SANDBOX_64_0_-20_.mws\",\n                \"SANDBOX_76_0_29_.mws\",\t\n                \"SANDBOX_83_0_46_.mws\",\t\n                \"SANDBOX_88_0_-58_.mws\",\n                \"SANDBOX_93_0_14_.mws\",\t\n                \"SANDBOX_93_0_73_.mws\",\t\n            };\n\n            List<MyMwcSectorIdentifier> sectors = new List<MyMwcSectorIdentifier>();\n\n            var dir = new DirectoryInfo(ContentSectorPath);\n            foreach (var file in dir.GetFiles(\"SANDBOX*.mws\"))\n            {\n                if (officialMaps.Contains(file.Name))\n                {\n                    var sector = LoadData<MyMwcObjectBuilder_Sector>(file.FullName);\n                    sectors.Add(new MyMwcSectorIdentifier(MyMwcSectorTypeEnum.SANDBOX, null, sector.Position, sector.Name));\n                }\n            }\n\n            return sectors;\n        }\n\n        /// <summary>\n        /// Clears cache (new game, etc)\n        /// </summary>\n        public static void ClearCache()\n        {\n            if (Directory.Exists(CachePath))\n            {\n                Directory.Delete(CachePath, true);\n                Log(\"CACHE: Cleared\");\n            }\n        }\n\n        public static void ClearCurrentSave()\n        {\n            if (Directory.Exists(CurrentSavePath))\n            {\n                Directory.Delete(CurrentSavePath, true);\n                Log(\"SAVES: Cleared\");\n            }\n        }\n\n        //public static bool SectorExists(MyMwcSectorIdentifier sector)\n        //{\n        //    return File.Exists(GetSectorPath(sector));\n        //}\n\n        public static void SaveCheckpoint(MyMwcObjectBuilder_Checkpoint checkpoint, bool createChapter = false)\n        {\n            Save(checkpoint, checkpoint.SectorObjectBuilder, checkpoint.CurrentSector, createChapter);\n        }\n\n        public static void Save(MyMwcObjectBuilder_Checkpoint checkpoint, MyMwcObjectBuilder_Sector sector, MyMwcSectorIdentifier sectorIdentifier, bool createChapter = false)\n        {\n            if (sector == null) // Nothing to save, saving only checkpoint\n                return;\n\n            string sectorPath = GetSectorPath(sectorIdentifier);\n            string storeDirectory = Path.GetDirectoryName(sectorPath);\n\n            // Store current sector\n            SaveData(sector, sectorPath);\n\n\n            // Store checkpoint\n            if (checkpoint != null)\n            {\n                string checkpointPath = Path.Combine(storeDirectory, \"Checkpoint.mwc\");\n\n                var oldValue = checkpoint.SectorObjectBuilder;\n                checkpoint.SectorObjectBuilder = null;\n\n                SaveData(checkpoint, checkpointPath);\n\n                checkpoint.SectorObjectBuilder = oldValue;\n            }\n\n            if (createChapter)\n            {\n                var chapterDirectory = GetChapterDirectory(GetChapterName(checkpoint));\n                if (Directory.Exists(chapterDirectory))\n                {\n                    Directory.Delete(chapterDirectory, true);\n                }\n                DirectoryExtensions.CopyAll(storeDirectory, chapterDirectory);\n            }\n\n            Log(\"update\", sectorIdentifier, sector.Version);\n        }\n\n\n        public static T LoadData<T>(string path)\n            where T : MyMwcObjectBuilder_Base\n        {\n            try\n            {\n                var hashAlgorithm = new Crc32();\n                using (FileStream stream = new FileStream(path, FileMode.Open, FileAccess.Read))\n                using (CryptoStream cryptoStream = new CryptoStream(stream, hashAlgorithm, CryptoStreamMode.Read))\n                using (BinaryReader reader = new BinaryReader(cryptoStream))\n                {\n                    var version = reader.ReadInt32();\n                    //TODO: Enable when we have correct backward compatibility https://mantis.keenswh.com/view.php?id=7584\n                    if (version < MyMwcObjectBuilder_Base.FIRST_COMPATIBILITY_VERSION)\n                    {\n                        MyMwcLog.WriteLine(\"Loading data from \" + path + \" failed because of incompatible version, save version: \" + version);\n                        return null;\n                    }\n\n                    byte[] bytes = reader.ReadBytes((int)(stream.Length - stream.Position - hashAlgorithm.HashSize / 8));\n\n                    cryptoStream.FlushFinalBlock();\n\n                    byte[] computedHash = hashAlgorithm.Hash;\n                    byte[] storedHash = new byte[hashAlgorithm.HashSize / 8];\n                    stream.Read(storedHash, 0, storedHash.Length);\n                    if (computedHash.Length != storedHash.Length)\n                        return null;\n\n                    for (int i = 0; i < storedHash.Length; i++)\n                    {\n                        if (computedHash[i] != storedHash[i])\n                        {\n                            MyMwcLog.WriteLine(\"Loading data from \" + path + \" failed because of incorrect hash\");\n                            return null;\n                        }\n                    }\n\n                    var result = MyMwcObjectBuilder_Base.FromBytes<T>(bytes, version);\n                    if (result == null)\n                    {\n                        MyMwcLog.WriteLine(\"Loading data from \" + path + \" failed because of invalid object builder\");\n                    }\n                    return result;\n                }\n            }\n            catch (Exception e)\n            {\n                MyMwcLog.WriteLine(\"Exception occured when loading data from local cache\");\n                MyMwcLog.WriteLine(e);\n            }\n\n            return null;\n        }\n\n        public static void SaveData(MyMwcObjectBuilder_Base objectBuilder, string path)\n        {\n            var hashAlgorithm = new Crc32();\n\n            using (FileStream stream = new FileStream(path, FileMode.Create))\n            using (CryptoStream cryptoStream = new CryptoStream(stream, hashAlgorithm, CryptoStreamMode.Write))\n            using (BinaryWriter writer = new BinaryWriter(cryptoStream))\n            {\n                writer.Write(MyMwcFinalBuildConstants.SERVER_PROTOCOL_VERSION);\n                writer.Write(objectBuilder.ToBytes());\n\n                cryptoStream.FlushFinalBlock();\n\n                var computedHash = hashAlgorithm.Hash;\n                for (int i = 0; i < computedHash.Length; i++)\n                {\n                    writer.Write(computedHash[i]);\n                }\n            }\n        }\n\n        public static string GetChapterName(MyMwcObjectBuilder_Checkpoint checkpoint)\n        {\n            StringBuilder chapterName = new StringBuilder();\n            chapterName.Append(checkpoint.ActiveMissionID.ToString());\n\n            var lastEvent = checkpoint.EventLogObjectBuilder.Where(e => e.EventType == (int)MinerWars.AppCode.Game.Journal.EventTypeEnum.SubmissionFinished).OrderByDescending(e => e.Time).FirstOrDefault();\n            if (lastEvent != null)\n            {\n                chapterName.Append(\"_\");\n                chapterName.Append(lastEvent.EventTypeID);\n            }\n            return chapterName.ToString();\n        }\n\n        public static void ReplaceCurrentChapter(string chapterName)\n        {\n            string chapterDirectory = GetChapterDirectory(chapterName);\n\n            ClearCurrentSave();\n            DirectoryExtensions.CopyAll(chapterDirectory, CurrentSavePath);\n        }\n\n        public static List<Tuple<string, DateTime, MyMwcObjectBuilder_Checkpoint>> LoadChapters()\n        {\n            var result = new List<Tuple<string, DateTime, MyMwcObjectBuilder_Checkpoint>>();\n\n            var savesDirectory = new System.IO.DirectoryInfo(SavesPath);\n            if (!savesDirectory.Exists)\n                return result;\n\n            foreach (var file in savesDirectory.GetFiles(\"Checkpoint.mwc\", SearchOption.AllDirectories))\n            {\n                if (file.Directory.Name.EndsWith(CurrentChapterName))\n                    continue;\n\n                var checkpointBuilder = LoadData<MyMwcObjectBuilder_Checkpoint>(file.FullName);\n                if (checkpointBuilder != null)\n                {\n                    result.Add(Tuple.Create(file.Directory.Name, file.LastWriteTimeUtc, checkpointBuilder));\n                }\n            }\n\n            return result;\n        }\n\n        public static DateTime GetLastChapterTimestamp()\n        {\n            var max = new DateTime();\n\n            var savesDirectory = new System.IO.DirectoryInfo(SavesPath);\n            if (!savesDirectory.Exists)\n                return max;\n\n            foreach (var file in savesDirectory.GetFiles(\"Checkpoint.mwc\", SearchOption.AllDirectories))\n            {\n                if (file.Directory.Name.EndsWith(CurrentChapterName))\n                    continue;\n\n                if (file.LastWriteTime > max)\n                    max = file.LastWriteTime;\n            }\n\n            return max;\n        }\n\n        public static MyMwcObjectBuilder_Checkpoint NewGameCheckpoint()\n        {\n            return LoadCheckpoint(Path.Combine(ContentSectorPath, \"story.mwc\"));\n        }\n\n        public static MyMwcObjectBuilder_Checkpoint MultiplayerCheckpoint()\n        {\n            return LoadCheckpoint(Path.Combine(ContentSectorPath, \"sandbox.mwc\"));\n        }\n\n        public static MyMwcObjectBuilder_GlobalData LoadGlobalData()\n        {\n            string path = Path.Combine(ContentSectorPath, \"global.mwg\");\n            if (File.Exists(path))\n            {\n                return LoadData<MyMwcObjectBuilder_GlobalData>(path);\n            }\n            return null;\n        }\n\n        public static MyMwcObjectBuilder_Checkpoint LoadCheckpoint()\n        {\n            string storeDirectory = CurrentSavePath;\n            string checkpointPath = Path.Combine(storeDirectory, \"Checkpoint.mwc\");\n            return LoadCheckpoint(checkpointPath);\n        }\n\n        public static MyMwcObjectBuilder_Checkpoint LoadCheckpoint(string checkpointPath)\n        {\n            // TODO: This should be replaced by LoadData<> method\n            MyMwcObjectBuilder_Checkpoint result = null;\n\n            if (File.Exists(checkpointPath))\n            {\n                using (BinaryReader checkpointReader = new BinaryReader(new FileStream(checkpointPath, FileMode.Open, FileAccess.Read)))\n                {\n                    var version = checkpointReader.ReadInt32();\n                    if (version < MyMwcObjectBuilder_Base.FIRST_COMPATIBILITY_VERSION)\n                    {\n                        MyMwcLog.WriteLine(\"Loading data from \" + checkpointPath + \" failed because of incompatible version, save version: \" + version);\n                        return null;\n                    }\n                    result = MyMwcObjectBuilder_Base.FromBytes<MyMwcObjectBuilder_Checkpoint>(checkpointReader.ReadBytes((int)checkpointReader.BaseStream.Length), version);\n                    //result.SectorObjectBuilder = LoadSector(result.CurrentSector);\n                }\n            }\n\n            return result;\n        }\n\n        public static MyMwcObjectBuilder_Sector LoadSector(MyMwcSectorIdentifier sectorId)\n        {\n            MyMwcObjectBuilder_Sector userdataSector = LoadSector(sectorId, GetSectorPath(sectorId));\n            MyMwcObjectBuilder_Sector contentSector = null;\n\n            if (sectorId.UserId == null) // Only non-user sectors loads from Content\n            {\n                var sectorPath = Path.Combine(ContentSectorPath, GetSectorName(sectorId, false) + \".mws\");\n                contentSector = LoadSector(sectorId, sectorPath);\n            }\n\n            int userVersion = userdataSector != null ? userdataSector.Version : -1;\n            int contentVersion = contentSector != null ? contentSector.Version : -1;\n            if (userVersion > contentVersion)\n            {\n                Log(\"using USERDATA: \", sectorId, userVersion);\n                return userdataSector;\n            }\n            else\n            {\n                if (contentSector != null)\n                {\n                    Log(\"using CONTENT: \", sectorId, contentVersion);\n                }\n                return contentSector;\n            }\n        }\n\n        private static MyMwcObjectBuilder_Sector LoadSector(MyMwcSectorIdentifier sectorId, string filename)\n        {\n            if (File.Exists(filename))\n            {\n                MyMwcObjectBuilder_Sector result = LoadData<MyMwcObjectBuilder_Sector>(filename);\n                if (result == null)\n                {\n                    MyMwcLog.WriteLine(\"Incorrect save data\");\n                    return null;\n                }\n                Log(\"hit\", sectorId, result.Version);\n                return result;\n            }\n            else\n            {\n                Log(\"miss\", sectorId);\n                return null;\n            }\n        }\n\n        private static void Log(string text, MyMwcSectorIdentifier sectorId, int? version = null)\n        {\n            text = (sectorId.UserId == null ? \"CACHE: \" : \"SAVES: \") + text;\n            text = text + \" \" + GetSectorNameLong(sectorId);\n            if (version.HasValue)\n            {\n                text += \", version: \" + version;\n            }\n            Log(text);\n        }\n\n        private static void Log(string text)\n        {\n            MyMwcLog.WriteLine(text);\n            MyTrace.Send(TraceWindow.Server, text);\n        }\n\n        public static bool HasChapters()\n        {\n            return LoadChapters().Any();\n        }\n\n        internal static bool HasCurrentSave()\n        {\n            UpgradeSaves();\n            return LoadCheckpoint() != null;\n            //return File.Exists(Path.Combine(CurrentSavePath, \"Checkpoint.mwc\"));\n        }\n\n        private static void UpgradeSaves()\n        {\n            var oldCurrentDir = \"Current\";\n            var oldSavePath = Path.Combine(MyFileSystemUtils.GetApplicationUserDataFolder(), \"Saves\", MyMwcFinalBuildConstants.TYPE_AS_STRING);\n            DirectoryInfo dir = new DirectoryInfo(oldSavePath);\n\n            if (!dir.Exists)\n                return;\n\n            // Remove files directly in save dir\n            foreach (var file in dir.GetFiles())\n            {\n                try\n                {\n                    file.Delete();\n                }\n                catch (IOException e)\n                {\n                    MyMwcLog.WriteLine(e);\n                }\n            }\n\n            // Move subdirs to current save dir\n            foreach (var subdir in dir.GetDirectories())\n            {\n                var parts = subdir.Name.Split(new char[] { '_' }, StringSplitOptions.RemoveEmptyEntries);\n                int part0;\n\n                if ((subdir.Name == oldCurrentDir || int.TryParse(parts[0], out part0)) && IsCheckpointMwcInDir(subdir))\n                {\n                    try\n                    {\n                        string destDirName = Path.Combine(SavesPath, subdir.Name);\n                        if (Directory.Exists(destDirName))\n                            Directory.Delete(subdir.FullName, true);\n                        else\n                            Directory.Move(subdir.FullName, destDirName);\n                    }\n                    catch (IOException e)\n                    {\n                        MyMwcLog.WriteLine(e);\n                    }\n                }\n            }\n\n            // Rename saves to remove UserId from filenames\n            var savesDir = new DirectoryInfo(SavesPath);\n            if (!savesDir.Exists)\n                return;\n\n            foreach (var chapterDir in savesDir.GetDirectories())\n            {\n                foreach (var file in chapterDir.GetFiles(\"*.mws\"))\n                {\n                    var parts = Path.GetFileName(file.FullName).Split(new char[] { '_' }, StringSplitOptions.RemoveEmptyEntries).ToList();\n                    if (parts.Count == 6 && parts[1] == MyClientServer.LoggedPlayer.GetUserId().ToString())\n                    {\n                        parts.RemoveAt(1);\n                        string newName = parts.Aggregate(CombineSectorName);\n                        try\n                        {\n                            file.MoveTo(Path.Combine(Path.GetDirectoryName(file.FullName), newName));\n                        }\n                        catch (IOException e)\n                        {\n                            MyMwcLog.WriteLine(e);\n                        }\n                    }\n                }\n            }\n        }\n\n        static string CombineSectorName(string a, string b)\n        {\n            return a + \"_\" + b;\n        }\n\n        private static bool IsCheckpointMwcInDir(DirectoryInfo dir)\n        {\n            return dir.GetFiles().Any(s => String.Compare(s.Name, \"Checkpoint.mwc\", true) == 0);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Networking/MySteam.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Utils;\nusing Microsoft.Win32;\nusing SysUtils;\nusing MinerWars.AppCode.App;\n\nnamespace MinerWars.AppCode.Networking\n{\n    public static class MySteam\n    {\n        public static bool IsActive { get { return MyMinerGame.Services.Steam.IsActive; } }\n\n        public static bool IsOnline { get { return MyMinerGame.Services.Steam.IsOnline; } }\n\n        public static Int64 UserId { get { return MyMinerGame.Services.Steam.UserId; } }\n        public static string UserName { get { return MyMinerGame.Services.Steam.UserName; } }\n\n        public static byte[] SessionTicket { get { return MyMinerGame.Services.Steam.SessionTicket; } }\n\n        public static String SerialKey { get { return MyMinerGame.Services.Steam.SerialKey; } }\n\n        public static void RefreshSessionTicket()\n        {\n            MyMinerGame.Services.Steam.RefreshSessionTicket();\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Networking/MySteamStats.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.App;\n\nnamespace MinerWars.AppCode.Networking\n{\n    class MySteamStatNames\n    {\n        public const string FoundSecrets = \"FoundSecrets\";\n    }\n\n    class MySteamAchievementNames\n    {\n        /// <summary>\n        /// Player found all 21 secret rooms\n        /// </summary>\n        public const string SecretRooms = \"SecretRooms\";\n\n        /// <summary>\n        /// Player completed first mission\n        /// </summary>\n        public const string Mission01_EacSS = \"Mission01\";\n        public const string Mission03_Barths = \"Mission03\";\n        public const string Mission08_JunkyardDuncan = \"Mission08\";\n        public const string Mission12_JunkyardRacing = \"Mission12\";\n        public const string Mission17_FortValiantDungeons = \"Mission17\";\n        public const string Mission21_Rift = \"Mission21\";\n        public const string Mission26_BioResearch = \"Mission26\";\n        public const string Mission27_Reichstag2 = \"Mission27\";\n        public const string Mission29_EacPrison = \"Mission29\";\n        public const string Mission31_AlienGate = \"Mission31\";\n\n        public const string ShipStanislav = \"ShipStanislav\";\n    }\n\n    class MySteamStats\n    {\n        public static void StoreState()\n        {\n            MyMinerGame.Services.Steam.StoreStats();\n        }\n\n        public static void IndicateAchievementProgress(string achievement, uint value, uint maxValue)\n        {\n            MyMinerGame.Services.Steam.IndicateAchievementProgress(achievement, value, maxValue);\n        }\n        \n        public static void SetStat(string statName, int value)\n        {\n            MyMinerGame.Services.Steam.SetStat(statName, value);\n        }\n\n        public static int GetStatInt(string statName)\n        {\n            return MyMinerGame.Services.Steam.GetStatInt(statName);\n        }\n\n        public static void SetAchievement(string name, bool immediatellyUpload = true)\n        {\n            MyMinerGame.Services.Steam.SetAchievement(name, immediatellyUpload);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Networking/SectorService/MyLoggingBehavior.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.ServiceModel.Description;\nusing System.ServiceModel.Dispatcher;\nusing SysUtils.Utils;\nusing KeenSoftwareHouse.Library.Trace;\n\nnamespace MinerWars.AppCode.Networking.SectorService\n{\n    class MyLoggingBehavior: IEndpointBehavior, IClientMessageInspector\n    {\n        // INSPECTOR\n        public void AfterReceiveReply(ref System.ServiceModel.Channels.Message reply, object correlationState)\n        {\n        }\n\n        public object BeforeSendRequest(ref System.ServiceModel.Channels.Message request, System.ServiceModel.IClientChannel channel)\n        {\n            var action = request.Headers.Action;\n            action = action.Replace(\"http://tempuri.org/\", \"\");\n            action = action.Replace(\"IMySectorService\", \"\");\n            action = action.Replace(\"/\", \"\");\n            string message = \"SERVER CALL: \" + action;\n            MyMwcLog.WriteLine(message);\n            MyTrace.Send(TraceWindow.Server, message);\n            // Not sure what return\n            //return new System.Guid();\n            return null;\n        }\n\n        // ENDPOINT BEHAVIOR\n        public void AddBindingParameters(ServiceEndpoint endpoint, System.ServiceModel.Channels.BindingParameterCollection bindingParameters)\n        {\n        }\n\n        public void ApplyClientBehavior(ServiceEndpoint endpoint, System.ServiceModel.Dispatcher.ClientRuntime clientRuntime)\n        {\n            clientRuntime.MessageInspectors.Add(this);\n        }\n\n        public void ApplyDispatchBehavior(ServiceEndpoint endpoint, System.ServiceModel.Dispatcher.EndpointDispatcher endpointDispatcher)\n        {\n        }\n\n        public void Validate(ServiceEndpoint endpoint)\n        {\n        }        \n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Networking/SectorService/MySectorServerCallback.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading;\n\nnamespace MinerWars.AppCode.Networking.SectorService\n{\n    class MySectorServerCallback : IMySectorServiceCallback\n    {\n        class CompletedAsyncResult : IAsyncResult\n        {\n            object data;\n\n            public CompletedAsyncResult(object data)\n            { this.data = data; }\n\n            #region IAsyncResult Members\n            public object AsyncState\n            { get { return (object)data; } }\n\n            public WaitHandle AsyncWaitHandle\n            { get { return null; } }\n\n            public bool CompletedSynchronously\n            { get { return true; } }\n\n            public bool IsCompleted\n            { get { return true; } }\n            #endregion\n        }\n\n        public delegate void ShutdownHandler(TimeSpan shutdownOn, TimeSpan shutdownLength, string shutdownMessage);\n        public static event ShutdownHandler ShutdownNotification;\n\n        public static void ClearEvents()\n        {\n            ShutdownNotification = null;\n        }\n\n        public void NotifyShutdown(TimeSpan shutdownOn, TimeSpan shutdownLength, string shutdownMessage)\n        {\n            var handler = ShutdownNotification;\n            if (handler != null)\n            {\n                handler(shutdownOn, shutdownLength, shutdownMessage);\n            }\n        }\n\n        public IAsyncResult BeginNotifyShutdown(TimeSpan shutdownOn, TimeSpan shutdownLength, string shutdownMessage, AsyncCallback callback, object asyncState)\n        {\n            NotifyShutdown(shutdownOn, shutdownLength, shutdownMessage);\n            return new CompletedAsyncResult(asyncState);\n        }\n\n        public void EndNotifyShutdown(IAsyncResult result)\n        {\n            // Nothing to do\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Networking/SectorService/MySectorServiceClient.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Diagnostics;\nusing System.ServiceModel;\nusing SysUtils;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.CommonLIB.AppCode.Networking.Services;\nusing MinerWars.AppCode.Game.World;\nusing System.Timers;\nusing SysUtils.Utils;\nusing MinerWars.AppCode.Game.Utils;\n\nnamespace MinerWars.AppCode.Networking.SectorService\n{\n    public partial class MySectorServiceClient\n    {\n        public struct MyUserLoginArgs\n        {\n            public MyUserLoginArgs(Exception error, MyUserInfo userInfo, bool alreadyLoggedIn)\n                : this()\n            {\n                Error = error;\n                UserInfo = userInfo;\n                AlreadyLoggedIn = alreadyLoggedIn;\n            }\n\n            public Exception Error { get; private set; }\n            public MyUserInfo UserInfo { get; private set; }\n            public bool AlreadyLoggedIn { get; private set; }\n        }\n\n        private static MySectorServiceClient m_instance;\n        private static object m_syncRoot = new object();\n\n        private static string m_username;\n        private static string m_passwordHash;\n        private static string m_url;\n\n        public TimeSpan OperationTimeout\n        {\n            set\n            {\n                var channelContext = this.GetChannelContext();\n                if (channelContext != null)\n                {\n                    channelContext.OperationTimeout = value;\n                }\n            }\n        }\n\n        public static bool IsInstanceValid\n        {\n            get\n            {\n                return m_instance != null && m_instance.State != CommunicationState.Faulted && m_instance.State != CommunicationState.Closed && m_instance.State != CommunicationState.Closing;\n            }\n        }\n\n        public static void SetCredentials(string username, string passwordHash)\n        {\n            m_username = username;\n            m_passwordHash = passwordHash;\n            SafeClose();\n        }\n\n        public static bool HasCredentials\n        {\n            get\n            {\n                return m_username != null && m_passwordHash != null;\n            }\n        }\n\n        public static bool HasUrl\n        {\n            get\n            {\n                return m_url != null;\n            }\n        }\n\n        public static void ClearAndClose()\n        {\n            m_username = null;\n            m_passwordHash = null;\n            m_url = null;\n            SafeClose();\n        }\n\n        static void CloseOnBackground(object state)\n        {\n            try\n            {\n                m_instance.Close();\n            }\n            catch (Exception) { }\n        }\n\n        public static void SafeClose()\n        {\n            // We want to close instance, but when it fails we dont care\n            lock (m_syncRoot)\n            {\n                if (m_instance != null)\n                {\n                    try\n                    {\n                        m_instance.Close();\n                    }\n                    catch (Exception)\n                    {\n                    }\n                    m_instance = null;\n                }\n            }\n        }\n\n        public static void HardClose()\n        {\n            lock (m_syncRoot)\n            {\n                if (m_instance != null)\n                {\n                    try\n                    {\n                        m_instance.Abort();\n                    }\n                    catch (Exception) { }\n                    m_instance = null;\n                }\n            }\n        }\n\n        public static void SetUrl(string url)\n        {\n            m_url = MyMwcFinalBuildConstants.SECTOR_SERVER_ADDRESS ?? url;\n            SafeClose();\n        }\n\n        public static MySectorServiceClient PrepareInstance()\n        {\n            MyMwcLog.WriteLine(\"Creating sector service client, url: \" + m_url);\n\n            // create the URI which is used as the service endpoint\n            Uri tcpBaseAddress = new Uri(String.Format(\"net.tcp://{0}\", m_url));\n\n            if (MyFakes.TEST_DNS_UNAVAILABLE)\n            {\n                tcpBaseAddress = new Uri(\"d23>?<'12`/.,;'l,;l\"); // Non sense URL\n            }\n\n            // create the net.tcp binding for the service endpoint\n            NetTcpBinding ntcBinding = new NetTcpBinding();\n            ntcBinding.Security.Mode = SecurityMode.None;\n            ntcBinding.MaxBufferPoolSize = MyMwcNetworkingConstants.MAX_WCF_MESSAGE_POOL_SIZE;\n            ntcBinding.MaxBufferSize = MyMwcNetworkingConstants.MAX_WCF_MESSAGE_SIZE;\n            ntcBinding.MaxConnections = MyMwcNetworkingConstants.MAX_WCF_CONNECTIONS;\n            ntcBinding.MaxReceivedMessageSize = MyMwcNetworkingConstants.MAX_WCF_MESSAGE_SIZE;\n            ntcBinding.ReaderQuotas.MaxArrayLength = MyMwcNetworkingConstants.MAX_WCF_MESSAGE_SIZE;\n            ntcBinding.ReaderQuotas.MaxBytesPerRead = MyMwcNetworkingConstants.MAX_WCF_MESSAGE_SIZE;\n            ntcBinding.SendTimeout = MyMwcNetworkingConstants.WCF_TIMEOUT_SEND;\n            ntcBinding.ReceiveTimeout = MyMwcNetworkingConstants.WCF_TIMEOUT_INACTIVITY;\n            ntcBinding.CloseTimeout = MyMwcNetworkingConstants.WCF_TIMEOUT_CLOSE;\n            ntcBinding.OpenTimeout = MyMwcNetworkingConstants.WCF_TIMEOUT_OPEN;\n            ntcBinding.Security.Mode = SecurityMode.Message;\n            ntcBinding.Security.Message.ClientCredentialType = MessageCredentialType.UserName;\n            ntcBinding.Security.Transport.ClientCredentialType = TcpClientCredentialType.None;\n            ntcBinding.Security.Transport.ProtectionLevel = System.Net.Security.ProtectionLevel.None;\n            ntcBinding.ReliableSession = new OptionalReliableSession() { Enabled = true, InactivityTimeout = MyMwcNetworkingConstants.WCF_TIMEOUT_DISCONNECT, Ordered = false };\n\n            if (MyFakes.MWBUILDER)\n            {\n                var msgSize = 16 * 1024 * 1024;\n                ntcBinding.MaxConnections = 1;\n                ntcBinding.MaxBufferSize = msgSize;\n                ntcBinding.MaxBufferPoolSize = (int)(msgSize * 1.2f);\n                ntcBinding.MaxReceivedMessageSize = msgSize;\n                ntcBinding.ReaderQuotas.MaxArrayLength = msgSize;\n            }\n\n            var decoratedBinding = MyCustomBinding.DecorateBinding(ntcBinding);\n\n            InstanceContext instanceContext = new InstanceContext(new MySectorServerCallback());\n\n            MySectorServiceClient client = new MySectorServiceClient(instanceContext, decoratedBinding, new EndpointAddress(tcpBaseAddress, EndpointIdentity.CreateDnsIdentity(MyMwcNetworkingConstants.WCF_SECTOR_SERVER_CN)));\n            if (MyMwcFinalBuildConstants.IS_DEVELOP) // On develop log WCF calls\n            {\n                client.Endpoint.Behaviors.Add(new MyLoggingBehavior());\n            }\n            client.ClientCredentials.UserName.UserName = m_username;\n            client.ClientCredentials.UserName.Password = m_passwordHash;\n            client.ClientCredentials.ServiceCertificate.Authentication.CustomCertificateValidator = new MyCertificateValidator(MyMwcNetworkingConstants.WCF_SECTOR_SERVER_HASH);\n            client.ClientCredentials.ServiceCertificate.Authentication.CertificateValidationMode = System.ServiceModel.Security.X509CertificateValidationMode.Custom;\n            client.InnerChannel.Faulted += new EventHandler(InnerChannel_Faulted);\n            client.InnerChannel.Closed += new EventHandler(InnerChannel_Closed);\n            return client;\n        }\n\n        public IContextChannel GetChannelContext()\n        {\n            return this.Channel as IContextChannel;\n        }\n\n        public static MySectorServiceClient GetCheckedInstance()\n        {\n            Debug.Assert(HasCredentials, \"Set credential prior getting instance method\");\n            Debug.Assert(m_url != null, \"Set URL prior getting instance method\");\n\n            try\n            {\n                // Make sure to create only one instance\n                lock (m_syncRoot)\n                {\n                    if (!IsInstanceValid)\n                    {\n                        SafeClose();\n\n                        m_instance = PrepareInstance();\n                        m_instance.LoginCompleted += client_LoginCompleted;\n                        m_instance.LoginAsync(MyMwcFinalBuildConstants.SERVER_PROTOCOL_VERSION);\n                    }\n                    return m_instance;\n                }\n            }\n            catch (Exception e)\n            {\n                throw new MyServiceException(\"Error occured during initialization of server connection\", e);\n            }\n        }\n\n        /// <summary>\n        /// Login always creates new instance\n        /// </summary>\n        public static IAsyncResult BeginLoginStatic()\n        {\n            // Make sure to create only one instance\n            lock (m_syncRoot)\n            {\n                SafeClose();\n                m_instance = PrepareInstance();\n                return m_instance.BeginLogin(MyMwcFinalBuildConstants.SERVER_PROTOCOL_VERSION, null, m_instance);\n            }\n        }\n\n        public static MyUserInfo EndLoginStatic(IAsyncResult result)\n        {\n            lock (m_syncRoot)\n            {\n                var client = (MySectorServiceClient)result.AsyncState;\n\n                try\n                {\n                    var info = client.EndLogin(result);\n                    return info;\n                }\n                catch (Exception)\n                {\n                    SafeClose();\n                    MyMwcLog.WriteLine(String.Format(\"Login failed, parameters: address '{0}', username '{1}'\", client.Endpoint.Address, client.ClientCredentials.UserName.UserName));\n                    throw;\n                }\n            }\n        }\n\n        static void client_LoginCompleted(object sender, LoginCompletedEventArgs e)\n        {\n            lock (m_syncRoot)\n            {\n                MySectorServiceClient client = (MySectorServiceClient)sender;\n                client.LoginCompleted -= client_LoginCompleted;\n\n                if (e.Error != null)\n                {\n                    // On error, close client\n                    SafeClose();\n                }\n            }\n        }\n\n        static void InnerChannel_Closed(object sender, EventArgs e)\n        {\n            // Called only on proper close, NOT called on fault\n            SafeClose();\n        }\n\n        static void InnerChannel_Faulted(object sender, EventArgs e)\n        {\n            // Called only on fault\n            SafeClose();\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Networking/SectorService/MyServiceException.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace MinerWars.AppCode.Networking.SectorService\n{\n    public class MyServiceException : ApplicationException\n    {\n        public MyServiceException()\n        {\n        }\n\n        public MyServiceException(string message)\n            : base(message)\n        {\n        }\n\n        public MyServiceException(string message, Exception innerException)\n            : base(message, innerException)\n        {\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Physics/Collisions/Interactions/MyBoxBoxInteraction.cs",
    "content": "﻿#region Using Statements\n\nusing System.Collections.Generic;\nusing MinerWarsMath;\nusing System.Diagnostics;\nusing System;\n\n#endregion\n\nnamespace MinerWars.AppCode.Physics\n{\n    /// <summary>\n    /// DetectFunctor for BoxBox Collisions.\n    /// </summary>\n    class MyRBBoxElementBoxElementInteraction: MyRBElementInteraction\n    {\n        public override MyRBElementInteraction CreateNewInstance() { return new MyRBBoxElementBoxElementInteraction(); }\n\n        #region private struct ContactPoint\n        private struct ContactPoint\n        {\n            public Vector3 Pos;\n            public int Count;\n\n            public ContactPoint(ref Vector3 pos) { this.Pos = pos; this.Count = 1; }\n        }\n        #endregion\n\n        /// <summary>\n        /// Disjoint Returns true if disjoint. Returns false if intersecting,\n        /// and sets the overlap depth, d scaled by the axis length.\n        /// </summary>\n        private static bool Disjoint(out float d, ref Vector3 axis, MyBox box0, MyBox box1, float collTolerance)\n        {\n            float min0, max0, min1, max1;\n\n            box0.GetSpan(out min0, out max0, axis);\n            box1.GetSpan(out min1, out max1, axis);\n\n            if (min0 > (max1 + collTolerance + MyPhysicsConfig.CollisionEpsilon) ||\n                min1 > (max0 + collTolerance + MyPhysicsConfig.CollisionEpsilon))\n            {\n                d = 0.0f;\n                return true;\n            }\n\n            if ((max0 > max1) && (min1 > min0))\n            {\n                // box1 is inside - choose the min dist to move it out\n                d = MathHelper.Min(max0 - min1, max1 - min0);\n            }\n            else if ((max1 > max0) && (min0 > min1))\n            {\n                // box0 is inside - choose the min dist to move it out\n                d = MathHelper.Min(max1 - min0, max0 - min1);\n            }\n            else\n            {\n                // boxes overlap\n                d = (max0 < max1) ? max0 : max1;\n                d -= (min0 > min1) ? min0 : min1;\n            }\n\n            return false;\n        }\n\n        private static void GetSupportPoint(out Vector3 p, MyBox box, Vector3 axis)\n        {\n            #region INLINE: Vector3 orient0 = box.Orientation.Right;\n            Vector3 orient0 = new Vector3(\n                box.Transform.Orientation.M11,\n                box.Transform.Orientation.M12,\n                box.Transform.Orientation.M13);\n            #endregion\n\n            #region INLINE: Vector3 orient1 = box.Orientation.Up;\n            Vector3 orient1 = new Vector3(\n                box.Transform.Orientation.M21,\n                box.Transform.Orientation.M22,\n                box.Transform.Orientation.M23);\n            #endregion\n\n            #region INLINE: Vector3 orient2 = box.Orientation.Backward;\n            Vector3 orient2 = new Vector3(\n                box.Transform.Orientation.M31,\n                box.Transform.Orientation.M32,\n                box.Transform.Orientation.M33);\n            #endregion\n\n            #region INLINE: float ass = Vector3.Dot(axis,orient0);\n            float ass = axis.X * orient0.X + axis.Y * orient0.Y + axis.Z * orient0.Z;\n            #endregion\n\n            #region INLINE: float au = Vector3.Dot(axis,orient1);\n            float au = axis.X * orient1.X + axis.Y * orient1.Y + axis.Z * orient1.Z;\n            #endregion\n\n            #region INLINE: float ad = Vector3.Dot(axis,orient2);\n            float ad = axis.X * orient2.X + axis.Y * orient2.Y + axis.Z * orient2.Z;\n            #endregion\n\n            float threshold = MyPhysicsConfig.CollisionEpsilon;\n\n            box.GetCentre(out p);\n\n            if (ass < -threshold)\n            {\n                #region INLINE: p += orient0 * (0.5 * box.SideLength.X);\n                p.X += orient0.X * (0.5f * box.SideLengths.X);\n                p.Y += orient0.Y * (0.5f * box.SideLengths.X);\n                p.Z += orient0.Z * (0.5f * box.SideLengths.X);\n                #endregion\n            }\n            else if (ass >= threshold)\n            {\n                #region INLINE: p -=  orient0 * (0.5 * box.SideLength.X);\n                p.X -= orient0.X * (0.5f * box.SideLengths.X);\n                p.Y -= orient0.Y * (0.5f * box.SideLengths.X);\n                p.Z -= orient0.Z * (0.5f * box.SideLengths.X);\n                #endregion\n            }\n\n            if (au < -threshold)\n            {\n                #region INLINE: p += orient1 * (0.5 * box.SideLength.Y);\n                p.X += orient1.X * (0.5f * box.SideLengths.Y);\n                p.Y += orient1.Y * (0.5f * box.SideLengths.Y);\n                p.Z += orient1.Z * (0.5f * box.SideLengths.Y);\n                #endregion\n            }\n            else if (au >= threshold)\n            {\n                #region INLINE: p -= orient1 * (0.5 * box.SideLength.Y);\n                p.X -= orient1.X * (0.5f * box.SideLengths.Y);\n                p.Y -= orient1.Y * (0.5f * box.SideLengths.Y);\n                p.Z -= orient1.Z * (0.5f * box.SideLengths.Y);\n                #endregion\n            }\n\n            if (ad < -threshold)\n            {\n                #region INLINE: p += orient2 * (0.5 * box.SideLength.Z);\n                p.X += orient2.X * (0.5f * box.SideLengths.Z);\n                p.Y += orient2.Y * (0.5f * box.SideLengths.Z);\n                p.Z += orient2.Z * (0.5f * box.SideLengths.Z);\n                #endregion\n            }\n            else if (ad >= threshold)\n            {\n                #region INLINE: p -= orient2 * (0.5 * box.SideLength.Z);\n                p.X -= orient2.X * (0.5f * box.SideLengths.Z);\n                p.Y -= orient2.Y * (0.5f * box.SideLengths.Z);\n                p.Z -= orient2.Z * (0.5f * box.SideLengths.Z);\n                #endregion\n            }\n        }\n\n        /// <summary>\n        /// AddPoint\n        /// if pt is less than Sqrt(combinationDistanceSq) from one of the\n        /// others the original is replaced with the mean of it\n        /// and pt, and false is returned. true means that pt was\n        /// added to pts\n        /// </summary>\n        private static bool AddPoint(List<ContactPoint> pts, ref Vector3 pt, float combinationDistanceSq)\n        {\n            for (int i = pts.Count; i-- != 0; )\n            {\n                ContactPoint cpt = pts[i];\n\n                #region INLINE: float len = (cpt.Pos-pt).LengthSquared();\n                float xd = cpt.Pos.X - pt.X;\n                float yd = cpt.Pos.Y - pt.Y;\n                float zd = cpt.Pos.Z - pt.Z;\n\n                float len = (xd * xd) + (yd * yd) + (zd * zd);\n                #endregion\n\n                if (len < combinationDistanceSq)\n                {\n                    cpt.Pos = (cpt.Count * cpt.Pos + pt) / (cpt.Count + 1);\n                    cpt.Count += 1;\n                    return false;\n                }\n            }\n            pts.Add(new ContactPoint(ref pt));\n            return true;\n        }\n\n        /// <summary>\n        /// The AABox has a corner at the origin and size sides.\n        /// </summary>\n        private static int GetAABox2EdgeIntersectionPoints(List<ContactPoint> pts,\n            ref Vector3 sides, MyBox box, ref Vector3 edgePt0, ref Vector3 edgePt1,\n            ref Matrix origBoxOrient, ref Vector3 origBoxPos,\n            float combinationDistanceSq)\n        {\n            // The AABox faces are aligned with the world directions. Loop \n            // over the 3 directions and do the two tests. We know that the\n            // AABox has a corner at the origin\n            #region REFERENCE: Vector3 edgeDir = JiggleMath.NormalizeSafe(edgePt1 - edgePt0);\n            Vector3 edgeDir;\n            Vector3.Subtract(ref edgePt1, ref edgePt0, out edgeDir);\n            MyPhysicsUtils.NormalizeSafe(ref edgeDir);\n            #endregion\n\n            int num = 0;\n\n            for (int idir = 3; idir-- != 0; )\n            {\n                // skip edge/face tests if nearly parallel\n                if (System.Math.Abs(MyPhysicsUtils.MyPhysicsUnsafe.Get(ref edgeDir, idir)) < 0.1f) continue;\n\n                int jdir = (idir + 1) % 3;\n                int kdir = (idir + 2) % 3;\n                for (int iface = 2; iface-- != 0; )\n                {\n                    float offset = 0.0f;\n                    if (iface == 1)\n                    {\n                        offset = MyPhysicsUtils.MyPhysicsUnsafe.Get(ref sides, idir);\n                    }\n\n                    float dist0 = MyPhysicsUtils.MyPhysicsUnsafe.Get(ref edgePt0, idir) - offset;\n                    float dist1 = MyPhysicsUtils.MyPhysicsUnsafe.Get(ref edgePt1, idir) - offset;\n\n                    float frac = -1.0f;\n\n                    if (dist0 * dist1 < -MyPhysicsConfig.CollisionEpsilon)\n                        frac = -dist0 / (dist1 - dist0);\n                    else if (System.Math.Abs(dist0) < MyPhysicsConfig.CollisionEpsilon)\n                        frac = 0.0f;\n                    else if (System.Math.Abs(dist1) < MyPhysicsConfig.CollisionEpsilon)\n                        frac = 1.0f;\n\n                    if (frac >= 0.0f)\n                    {\n                        #region REFERENCE: Vector3 pt = (1.0f - frac) * edgePt0 + frac * edgePt1\n                        Vector3 tmp; Vector3 pt;\n                        Vector3.Multiply(ref edgePt1, frac, out tmp);\n                        Vector3.Multiply(ref edgePt0, 1.0f - frac, out pt);\n                        Vector3.Add(ref pt, ref tmp, out pt);\n                        #endregion\n\n                        // check the point is within the face rectangle\n                        float ptJdir = MyPhysicsUtils.MyPhysicsUnsafe.Get(ref pt, jdir);\n                        float ptKdir = MyPhysicsUtils.MyPhysicsUnsafe.Get(ref pt, kdir);\n\n                        if ((ptJdir > -MyPhysicsConfig.CollisionEpsilon) &&\n                            (ptJdir < MyPhysicsUtils.MyPhysicsUnsafe.Get(ref sides, jdir) + MyPhysicsConfig.CollisionEpsilon) &&\n                            (ptKdir > -MyPhysicsConfig.CollisionEpsilon) &&\n                            (ptKdir < MyPhysicsUtils.MyPhysicsUnsafe.Get(ref sides, kdir) + MyPhysicsConfig.CollisionEpsilon))\n                        {\n                            // woohoo got a point\n                            #region REFERENCE: Vector3 pos = origBoxPos + Vector3.Transform(pt, origBoxOrient);\n                            Vector3 pos;\n                            Vector3.Transform(ref pt, ref origBoxOrient, out pos);\n                            Vector3.Add(ref origBoxPos, ref pos, out pos);\n                            #endregion\n\n                            AddPoint(pts, ref pos, combinationDistanceSq);\n\n                            if (++num == 2)\n                                return num;\n                        }\n                    }\n                }\n            }\n            return num;\n        }\n\n        /// <summary>\n        /// Pushes intersection points (in world space) onto the back of pts.\n        /// Intersection is between an AABox faces and an orientated box's\n        /// edges. orient and pos are used to transform the points from the\n        /// AABox frame back into the original frame.\n        /// </summary>\n        private static int GetAABox2BoxEdgesIntersectionPoints(List<ContactPoint> pts, ref Vector3 sides,\n            MyBox box, ref Matrix origBoxOrient, ref Vector3 origBoxPos, float combinationDistanceSq)\n        {\n            int num = 0;\n            Vector3[] boxPts;\n            box.GetCornerPoints(out boxPts);\n            MyBox.Edge[] edges;\n            box.GetEdges(out edges);\n\n            for (int iedge = 0; iedge < 12; ++iedge)\n            {\n                Vector3 edgePt0 = boxPts[(int)edges[iedge].Ind0];\n                Vector3 edgePt1 = boxPts[(int)edges[iedge].Ind1];\n\n                num += GetAABox2EdgeIntersectionPoints(pts,\n                    ref sides, box, ref edgePt0, ref edgePt1,\n                    ref origBoxOrient, ref origBoxPos, combinationDistanceSq);\n\n                // Don't think we can get more than 8... and anyway if we get too many \n                // then the penetration must be so bad who cares about the details?\n                if (num >= 8) return num;\n            }\n            return num;\n        }\n\n        private static MyBox tempBox = new MyBox(Matrix.Identity, Vector3.Zero);\n\n        /// <summary>\n        /// Pushes intersection points onto the back of pts. Returns the\n        /// number of points found.\n        /// Points that are close together (compared to \n        /// combinationDistance) get combined\n        /// dirToBody0 is the collision normal towards box0\n        /// </summary>\n        private static int GetBoxBoxIntersectionPoints(List<ContactPoint> pts,\n            MyBox box0, MyBox box1, float combinationDistance,\n            float collTolerance)\n        {\n            // first transform box1 into box0 space - there box0 has a corner\n            // at the origin and faces parallel to the world planes. Then intersect\n            // each of box1's edges with box0 faces, transforming each point back into\n            // world space. Finally combine points\n            float tolVal = 0.5f * collTolerance;\n\n            Vector3 tol = new Vector3(tolVal);\n\n            combinationDistance += collTolerance * 2.0f * (float)System.Math.Sqrt(3.0d);\n\n            for (int ibox = 0; ibox < 2; ++ibox)\n            {\n                MyBox boxA = (ibox != 0) ? box1 : box0;\n                MyBox boxB = (ibox != 0) ? box0 : box1;\n\n                #region REFERENCE: Matrix boxAInvOrient = Matrix.Transpose(boxA.Orientation);\n                Matrix boxAInvOrient;\n                Matrix.Transpose(ref boxA.Transform.Orientation, out boxAInvOrient);\n                #endregion\n\n                #region REFERENCE: Vector3 pos = Vector3.Transform(boxB.m_initialSunWindPosition - boxA.m_initialSunWindPosition,boxAInvOrient)\n                Vector3 pos;\n                Vector3.Subtract(ref boxB.Transform.Position, ref boxA.Transform.Position, out pos);\n                Vector3.TransformNormal(ref pos, ref boxAInvOrient, out pos);\n                #endregion\n\n                #region REFERENCE: Matrix boxOrient = boxB.Orientation * boxAInvOrient;\n                Matrix boxOrient;\n                Matrix.Multiply(ref boxB.Transform.Orientation, ref boxAInvOrient, out boxOrient);\n                #endregion\n\n                MyBox box = tempBox;\n                box.Position = pos;\n                box.Orientation = boxOrient;\n                box.SideLengths = boxB.SideLengths;\n\n\n                // if we get more than a certain number of points back from this call,\n                // and iBox == 0, could probably skip the other test...\n                Vector3 sL = boxA.SideLengths;\n                GetAABox2BoxEdgesIntersectionPoints(pts, ref sL,\n                    box, ref boxA.Transform.Orientation, ref boxA.Transform.Position, combinationDistance * combinationDistance);\n            }\n\n            return pts.Count;\n        }\n\n        // the 15 potential separating axes\n        Vector3[] seperatingAxes = new Vector3[15];\n        // the overlap depths along each axis\n        float[] overlapDepth = new float[15];\n        List<ContactPoint> contactPts = new List<ContactPoint>(64);\n\n        MyBox m_TempBox1 = new MyBox(Matrix.Identity, Vector3.Zero);\n        MyBox m_TempBox2 = new MyBox(Matrix.Identity, Vector3.Zero);\n\n        protected override bool Interact(bool staticCollision)\n        {\n            if (!staticCollision) MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"BoxBoxInteraction\");\n\n            try\n            {\n                MyRBBoxElement rbbox0 = (MyRBBoxElement)RBElement1;\n                MyRBBoxElement rbbox1 = (MyRBBoxElement)RBElement2;\n\n                MyBox box0 = m_TempBox1;\n                MyBox box1 = m_TempBox2;\n\n                Matrix matrix0 = rbbox0.GetGlobalTransformation();\n                Matrix matrix1 = rbbox1.GetGlobalTransformation();\n\n                box0.Transform.Orientation = matrix0;\n                box0.Transform.Orientation.Translation = Vector3.Zero;\n                box0.Transform.Position = matrix0.Translation - Vector3.TransformNormal(rbbox0.Size * 0.5f, matrix0);\n\n                box1.Transform.Orientation = matrix1;\n                box1.Transform.Orientation.Translation = Vector3.Zero;\n                box1.Transform.Position = matrix1.Translation - Vector3.TransformNormal(rbbox1.Size * 0.5f, matrix1);\n\n                box0.SideLengths = rbbox0.Size;\n                box1.SideLengths = rbbox1.Size;\n\n                // see if the boxes are separate along any axis, and if not keep a \n                // record of the depths along each axis\n                for (int i = 0; i < 15; ++i)\n                {\n                    switch (i)\n                    {\n                        case 0: seperatingAxes[0] = box0.Orientation.Right; break;\n                        case 1: seperatingAxes[1] = box0.Orientation.Up; break;\n                        case 2: seperatingAxes[2] = box0.Orientation.Backward; break;\n                        case 3: seperatingAxes[3] = box1.Orientation.Right; break;\n                        case 4: seperatingAxes[4] = box1.Orientation.Up; break;\n                        case 5: seperatingAxes[5] = box1.Orientation.Backward; break;\n                        case 6: Vector3.Cross(ref seperatingAxes[0], ref seperatingAxes[3], out seperatingAxes[6]); break;\n                        case 7: Vector3.Cross(ref seperatingAxes[0], ref seperatingAxes[4], out seperatingAxes[7]); break;\n                        case 8: Vector3.Cross(ref seperatingAxes[0], ref seperatingAxes[5], out seperatingAxes[8]); break;\n                        case 9: Vector3.Cross(ref seperatingAxes[1], ref seperatingAxes[3], out seperatingAxes[9]); break;\n                        case 10: Vector3.Cross(ref seperatingAxes[1], ref seperatingAxes[4], out seperatingAxes[10]); break;\n                        case 11: Vector3.Cross(ref seperatingAxes[1], ref seperatingAxes[5], out seperatingAxes[11]); break;\n                        case 12: Vector3.Cross(ref seperatingAxes[2], ref seperatingAxes[3], out seperatingAxes[12]); break;\n                        case 13: Vector3.Cross(ref seperatingAxes[2], ref seperatingAxes[4], out seperatingAxes[13]); break;\n                        case 14: Vector3.Cross(ref seperatingAxes[2], ref seperatingAxes[5], out seperatingAxes[14]); break;\n                    }\n\n                    // If we can't normalise the axis, skip it\n                    if (seperatingAxes[i].LengthSquared() < MyPhysicsConfig.CollisionEpsilon) continue;\n\n                    overlapDepth[i] = float.MaxValue;\n\n                    if (Disjoint(out overlapDepth[i], ref seperatingAxes[i], box0, box1, MyPhysicsConfig.CollisionEpsilon))\n                        return false;\n                }\n\n                if (staticCollision)\n                {\n                    return true;  // Static collision: we're done.\n                }\n\n                // Dynamic collision.\n                // The boxes overlap, find the seperation depth closest to 0.\n                float minDepth = float.MaxValue;\n                int minAxis = -1;\n\n                for (int i = 0; i < 15; ++i)\n                {\n                    // If we can't normalise the axis, skip it\n                    float l2 = seperatingAxes[i].LengthSquared();\n                    if (l2 < MyPhysicsConfig.CollisionEpsilon) continue;\n\n                    // Normalise the separation axis and depth\n                    float invl = 1.0f / (float)System.Math.Sqrt(l2);\n                    seperatingAxes[i] *= invl;\n                    overlapDepth[i] *= invl;\n\n                    // If this axis is the minmum, select it\n                    if (overlapDepth[i] < minDepth)\n                    {\n                        minDepth = overlapDepth[i];\n                        minAxis = i;\n                    }\n                }\n\n                if (minAxis == -1)\n                    return false;\n\n                // Make sure the axis is facing towards the 0th box.\n                // if not, invert it\n                Vector3 D = box1.GetCentre() - box0.GetCentre();\n                Vector3 N = seperatingAxes[minAxis];\n                float depth = overlapDepth[minAxis];\n\n                if (Vector3.Dot(D, N) < 0.0f)\n                    N *= -1.0f;\n\n                float minA = MathHelper.Min(box0.SideLengths.X, MathHelper.Min(box0.SideLengths.Y, box0.SideLengths.Z));\n                float minB = MathHelper.Min(box1.SideLengths.X, MathHelper.Min(box1.SideLengths.Y, box1.SideLengths.Z));\n\n                float combinationDist = 0.05f * MathHelper.Min(minA, minB);\n\n                // the contact points            \n                contactPts.Clear();\n\n                int numPts = contactPts.Count;\n                GetBoxBoxIntersectionPoints(contactPts, box0, box1, combinationDist, MyPhysicsConfig.CollisionEpsilon);\n                numPts = contactPts.Count;\n\n                MyRigidBody rbo0 = GetRigidBody1();\n                MyRigidBody rbo1 = GetRigidBody2();\n                float dt = MyPhysics.physicsSystem.GetRigidBodyModule().CurrentTimeStep;\n\n                Vector3 body0OldPos = rbo0.Position;\n                Vector3 body1OldPos = rbo1.Position;\n                Vector3 body0NewPos = (rbo0.Position + rbo0.LinearVelocity * dt);\n                Vector3 body1NewPos = (rbo1.Position + rbo1.LinearVelocity * dt);\n\n                #region REFERENCE: Vector3 bodyDelta = body0NewPos - body0OldPos - body1NewPos + body1OldPos;\n                Vector3 bodyDelta;\n                Vector3.Subtract(ref body0NewPos, ref body0OldPos, out bodyDelta);\n                Vector3.Subtract(ref bodyDelta, ref body1NewPos, out bodyDelta);\n                Vector3.Add(ref bodyDelta, ref body1OldPos, out bodyDelta);\n                #endregion\n\n                #region REFERENCE: float bodyDeltaLen = Vector3.Dot(bodyDelta,N);\n                float bodyDeltaLen;\n                Vector3.Dot(ref bodyDelta, ref N, out bodyDeltaLen);\n                #endregion\n\n                float oldDepth = depth + bodyDeltaLen;\n\n                MySmallCollPointInfo[] collPtArray = MyContactInfoCache.SCPIStackAlloc();\n                {\n                    int numCollPts = 0;\n\n                    Vector3 SATPoint;\n\n                    switch (minAxis)\n                    {\n                        // Box0 face, Box1 corner collision\n                        case 0:\n                        case 1:\n                        case 2:\n                            {\n                                // Get the lowest point on the box1 along box1 normal\n                                GetSupportPoint(out SATPoint, box1, -N);\n                                break;\n                            }\n                        // We have a Box2 corner/Box1 face collision\n                        case 3:\n                        case 4:\n                        case 5:\n                            {\n                                // Find with vertex on the triangleVertexes collided\n                                GetSupportPoint(out SATPoint, box0, N);\n                                break;\n                            }\n                        // We have an edge/edge collision\n                        case 6:\n                        case 7:\n                        case 8:\n                        case 9:\n                        case 10:\n                        case 11:\n                        case 12:\n                        case 13:\n                        case 14:\n                            {\n                                {\n                                    // Retrieve which edges collided.\n                                    int i = minAxis - 6;\n                                    int ia = i / 3;\n                                    int ib = i - ia * 3;\n                                    // find two P0, P1 point on both edges. \n                                    Vector3 P0, P1;\n                                    GetSupportPoint(out P0, box0, N);\n                                    GetSupportPoint(out P1, box1, -N);\n                                    // Find the edge intersection. \n                                    // plane along N and F, and passing through PB\n                                    Vector3 box0Orient, box1Orient;\n                                    MyPhysicsUtils.MyPhysicsUnsafe.Get(ref box0.Transform.Orientation, ia, out box0Orient);\n                                    MyPhysicsUtils.MyPhysicsUnsafe.Get(ref box1.Transform.Orientation, ib, out box1Orient);\n\n                                    #region REFERENCE: Vector3 planeNormal = Vector3.Cross(N, box1Orient[ib]);\n                                    Vector3 planeNormal;\n                                    Vector3.Cross(ref N, ref box1Orient, out planeNormal);\n                                    #endregion\n\n                                    #region REFERENCE: float planeD = Vector3.Dot(planeNormal, P1);\n                                    float planeD;\n                                    Vector3.Dot(ref planeNormal, ref P1, out planeD);\n                                    #endregion\n\n                                    // find the intersection t, where Pintersection = P0 + t*box edge dir\n                                    #region REFERENCE: float div = Vector3.Dot(box0Orient, planeNormal);\n                                    float div;\n                                    Vector3.Dot(ref box0Orient, ref planeNormal, out div);\n                                    #endregion\n\n                                    // plane and ray colinear, skip the intersection.\n                                    if (System.Math.Abs(div) < MyPhysicsConfig.CollisionEpsilon)\n                                        return false;\n\n                                    float t = (planeD - Vector3.Dot(P0, planeNormal)) / div;\n\n                                    // point on edge of box0\n                                    #region REFERENCE: P0 += box0Orient * t;\n                                    P0 = Vector3.Add(Vector3.Multiply(box0Orient, t), P0);\n                                    #endregion\n\n                                    #region REFERENCE: SATPoint = (P0 + (0.5f * depth) * N);\n                                    Vector3.Multiply(ref N, 0.5f * depth, out SATPoint);\n                                    Vector3.Add(ref SATPoint, ref P0, out SATPoint);\n                                    #endregion\n\n                                }\n                                break;\n                            }\n                        default:\n                            {\n                                SATPoint = Vector3.Zero;\n                                Debug.Assert(false);\n                                break;\n                            }\n\n\n                    }\n\n                    // distribute the depth according to the distance to the SAT point\n                    if (numPts > 0)\n                    {\n                        float minDist = float.MaxValue;\n                        float maxDist = float.MinValue;\n                        for (int i = 0; i < numPts; ++i)\n                        {\n                            float dist = MyPhysicsUtils.PointPointDistance(contactPts[i].Pos, SATPoint);\n                            if (dist < minDist)\n                                minDist = dist;\n                            if (dist > maxDist)\n                                maxDist = dist;\n                        }\n\n                        // got some intersection points\n                        for (int i = 0; i < numPts; ++i)\n                        {\n                            float minDepthScale = 0.0f;\n                            float dist = MyPhysicsUtils.PointPointDistance(contactPts[i].Pos, SATPoint);\n\n                            float safeDivisionDist = (maxDist - minDist);\n                            if ((maxDist - minDist) == 0.0f) safeDivisionDist = MyPhysicsConfig.CollisionEpsilon;\n                            float depthScale = (dist - minDist) / safeDivisionDist;\n\n                            depth = (1.0f - depthScale) * oldDepth + minDepthScale * depthScale * oldDepth;\n\n                            if (numCollPts < MyPhysicsConfig.MaxContactPoints)\n                            {\n                                collPtArray[numCollPts++] = new MySmallCollPointInfo(contactPts[i].Pos - body0OldPos, contactPts[i].Pos - body1OldPos, GetRigidBody1().LinearVelocity, GetRigidBody2().LinearVelocity, N, depth, contactPts[i].Pos);\n                            }\n                        }\n                    }\n                    else\n                    {\n                        #region REFERENCE: collPts.Add(new CollPointInfo(SATPoint - body0NewPos, SATPoint - body1NewPos, oldDepth));\n                        //collPts.Add(new CollPointInfo(SATPoint - body0NewPos, SATPoint - body1NewPos, oldDepth));\n                        Vector3 cp0;\n                        Vector3.Subtract(ref SATPoint, ref body0NewPos, out cp0);\n\n                        Vector3 cp1;\n                        Vector3.Subtract(ref SATPoint, ref body1NewPos, out cp1);\n\n                        if (numCollPts < MyPhysicsConfig.MaxContactPoints)\n                        {\n                            collPtArray[numCollPts++] = new MySmallCollPointInfo(cp0, cp1, GetRigidBody1().LinearVelocity, GetRigidBody2().LinearVelocity, N, oldDepth, SATPoint);\n                        }\n                        #endregion\n                    }\n\n                    // report Collisions\n                    MyPhysics.physicsSystem.GetContactConstraintModule().AddContactConstraint(this, collPtArray, numCollPts);\n                }\n                MyContactInfoCache.FreeStackAlloc(collPtArray);\n            }\n            catch\n            {\n                throw;\n            }\n            finally\n            {\n                if (!staticCollision) MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n            }\n            return false;\n        }\n    }\n}\n\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Physics/Collisions/Interactions/MyBoxBoxSensorInteraction.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Editor;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Utils;\n\nnamespace MinerWars.AppCode.Physics\n{\n    class MyBoxBoxSensorInteraction : MySensorInteraction\n    {\n        /// <summary>\n        /// Box vs box for box sensor interaction\n        /// </summary>\n\n        public MyBoxBoxSensorInteraction()\n        {\n        }\n\n        public override MySensorInteractionEnum GetInteractionType()\n        {\n            return MySensorInteractionEnum.SI_BOX_BOX;\n        }\n\n        public override void DoWork()\n        {\n            MyRBBoxElement rbBoxElement = (MyRBBoxElement)m_RBElement;\n            MyBoxSensorElement seBoxElement = (MyBoxSensorElement)m_SensorElement;\n\n            Matrix rbBoxMatrix = rbBoxElement.GetGlobalTransformation();\n            Matrix seBoxMatrix = seBoxElement.GetGlobalTransformation();\n\n            BoundingBox rbBB = new BoundingBox(-rbBoxElement.Size / 2f, rbBoxElement.Size / 2f);\n            BoundingBox seBB = new BoundingBox(-seBoxElement.Extent, seBoxElement.Extent);\n\n            MyOrientedBoundingBox rbBoxOriented = MyOrientedBoundingBox.CreateFromBoundingBox(rbBB).Transform(rbBoxMatrix);\n            MyOrientedBoundingBox seBoxOriented = MyOrientedBoundingBox.CreateFromBoundingBox(seBB).Transform(seBoxMatrix);\n\n            m_IsInside = rbBoxOriented.Intersects(ref seBoxOriented);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Physics/Collisions/Interactions/MyBoxCapsuleInteraction.cs",
    "content": "﻿#region Using Statements\n\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils.Utils;\n#endregion\n\nnamespace MinerWars.AppCode.Physics\n{\n    //////////////////////////////////////////////////////////////////////////\n    /// <summary>\n    /// Box vs capsule interaction\n    /// </summary>\n\n    class MyRBBoxElementCapsuleElementInteraction: MyRBElementInteraction\n    {\n        protected override bool Interact(bool staticCollision)\n        {\n            MyCommonDebugUtils.AssertDebug(false);\n            return false;\n        }\n\n        public override MyRBElementInteraction CreateNewInstance() { return new MyRBBoxElementCapsuleElementInteraction(); }\n    }\n\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Physics/Collisions/Interactions/MyBoxOtherSensorInteraction.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Editor;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Utils;\n\nnamespace MinerWars.AppCode.Physics\n{\n    class MyBoxOtherSensorInteraction : MySensorInteraction\n    {\n        /// <summary>\n        /// Box vs other element type for box sensor interaction\n        /// </summary>\n\n        public MyBoxOtherSensorInteraction()\n        {\n        }\n\n        public override MySensorInteractionEnum GetInteractionType()\n        {\n            return MySensorInteractionEnum.SI_BOX_OTHER;\n        }\n\n        public override void DoWork()\n        {            \n            MyBoxSensorElement seBoxElement = (MyBoxSensorElement)m_SensorElement;\n            \n            Matrix seBoxMatrix = seBoxElement.GetGlobalTransformation();\n\n            BoundingBox oeAABB = m_RBElement.GetWorldSpaceAABB();\n            BoundingBox seBB = new BoundingBox(-seBoxElement.Extent, seBoxElement.Extent);\n\n            MyOrientedBoundingBox seBoxOriented = MyOrientedBoundingBox.CreateFromBoundingBox(seBB).Transform(seBoxMatrix);\n\n            m_IsInside = seBoxOriented.Intersects(ref oeAABB);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Physics/Collisions/Interactions/MyBoxSphereSensorInteraction.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Physics.Utils;\n\nnamespace MinerWars.AppCode.Physics\n{\n    class MyBoxSphereSensorInteraction : MySensorInteraction\n    {\n        /// <summary>\n        /// Box vs sphere for box sensor interaction\n        /// </summary>\n\n        public MyBoxSphereSensorInteraction()\n        {\n        }\n\n        public override MySensorInteractionEnum GetInteractionType()\n        {\n            return MySensorInteractionEnum.SI_BOX_SPHERE;\n        }\n\n        public override void DoWork()\n        {\n            MyRBSphereElement sphere = (MyRBSphereElement)m_RBElement;\n            MyBoxSensorElement box = (MyBoxSensorElement)m_SensorElement;            \n\n            Matrix boxMatrix = box.GetGlobalTransformation();\n            Vector3 sphereCenter = sphere.GetGlobalTransformation().Translation;\n\n            Matrix invBoxMatrix = Matrix.Invert(boxMatrix);\n\n            Vector3 boxLocalsphereCenter = Vector3.Transform(sphereCenter, invBoxMatrix);\n\n            bool penetration = false;\n            Vector3 normal =  new Vector3();\n            Vector3 closestPos =  new Vector3();\n            uint customData = 0;\n\n            MyElementHelper.GetClosestPointForBox(box.Extent, boxLocalsphereCenter, ref closestPos, ref normal, ref penetration, ref customData);\n\n            if (penetration)\n            {\n                m_IsInside = true;\n                return;\n            }\n\n            closestPos = Vector3.Transform(closestPos, boxMatrix);            \n\n            float vLength = (sphereCenter - closestPos).LengthSquared();\n\n            if (vLength <= sphere.Radius * sphere.Radius)\n            {\n                m_IsInside = true;\n            }\n            else\n            {\n                m_IsInside = false;\n            }            \n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Physics/Collisions/Interactions/MyBoxTriangleMeshInteraction.cs",
    "content": "﻿#region Using Statements\n\n\n#endregion\n\nusing System.Collections.Generic;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Models;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.Utils;\n\nnamespace MinerWars.AppCode.Physics\n{\n    //////////////////////////////////////////////////////////////////////////\n    /// <summary>\n    /// Box vs trianglemesh interaction\n    /// </summary>\n\n    class ColPointComparer : IComparer<MyCollisionPointStruct>\n    {\n        public int Compare(MyCollisionPointStruct x, MyCollisionPointStruct y)\n        {\n            return x.OldDepth.CompareTo(y.OldDepth);\n        }\n    }\n\n    struct MyCollisionPointStruct\n    {\n        public MyCollisionPointStruct(float oldDepth, MySmallCollPointInfo collPointInfo)\n        {\n            OldDepth = oldDepth;\n            CollPointInfo = collPointInfo;\n        }\n\n        readonly public float OldDepth;\n        readonly public MySmallCollPointInfo CollPointInfo;\n    }\n\n    class MyRBBoxElementTriangleMeshElementInteraction : MyRBElementInteraction\n    {\n        private MyBox m_tempBox1 = new MyBox(Matrix.Identity, Vector3.Zero);\n        private MyBox m_tempBox2 = new MyBox(Matrix.Identity, Vector3.Zero);\n        private List<MyCollisionPointStruct> m_collPoints = new List<MyCollisionPointStruct>(32);\n        List<Vector3> m_pts = new List<Vector3>(32);\n\n        public static int TestsCount = 0;\n        public static int TrianglesTested = 0;\n\n        static ColPointComparer m_colPointComparer = new ColPointComparer();\n\n        protected override bool Interact(bool staticCollision)\n        {\n            try\n            {\n                if (!staticCollision)\n                {\n                    TestsCount++;\n                    MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"BoxTriangleIntersection\");\n                }\n\n                if (RBElement1.GetElementType() != MyRBElementType.ET_BOX)\n                    SwapElements();\n\n                var boxElement = (MyRBBoxElement)RBElement1;\n                var triangleMeshElem = (MyRBTriangleMeshElement)RBElement2;\n\n                MyModel model = ((boxElement.Flags & MyElementFlag.EF_MODEL_PREFER_LOD0) > 0 ? triangleMeshElem.ModelLOD0 : triangleMeshElem.Model);\n\n                Matrix boxMatrix = boxElement.GetGlobalTransformation();\n                Matrix triangleMeshMatrix = triangleMeshElem.GetGlobalTransformation();\n\n                Matrix newMatrix = boxMatrix;\n\n                if (!staticCollision)\n                {\n                    // MyPhysics.physicsSystem.GetRigidBodyModule().CurrentTimeStep\n                    newMatrix.Translation = newMatrix.Translation + boxElement.GetRigidBody().LinearVelocity * MyPhysics.physicsSystem.GetRigidBodyModule().CurrentTimeStep;\n                }\n\n                MyBox oldBox = m_tempBox1;\n                MyBox newBox = m_tempBox2;\n\n                oldBox.Transform.Orientation = boxMatrix;\n                oldBox.Transform.Orientation.Translation = Vector3.Zero;\n                oldBox.Transform.Position = boxMatrix.Translation - Vector3.TransformNormal(boxElement.Size * 0.5f, boxMatrix);\n\n                newBox.Transform.Orientation = newMatrix;\n                newBox.Transform.Orientation.Translation = Vector3.Zero;\n                newBox.Transform.Position = newMatrix.Translation - Vector3.TransformNormal(boxElement.Size * 0.5f, newMatrix);\n\n                oldBox.SideLengths = boxElement.Size;\n                newBox.SideLengths = boxElement.Size;\n\n                float boxRadius = newBox.GetBoundingRadiusAroundCentre();\n\n                #region REFERENCE: Vector3 boxCentre = newBox.GetCentre();\n                Vector3 boxCentre;\n                newBox.GetCentre(out boxCentre);\n                // Deano need to trasnform the box center into mesh space\n                Matrix invTransformMatrix = Matrix.Invert(triangleMeshMatrix);\n\n                Vector3.Transform(ref boxCentre, ref invTransformMatrix, out boxCentre);\n                #endregion\n\n                BoundingBox bb = boxElement.GetWorldSpaceAABB();\n\n                if (staticCollision)\n                {\n                    Vector3 bbMin = Vector3.Transform(bb.Min, invTransformMatrix);\n                    Vector3 bbMax = Vector3.Transform(bb.Max, invTransformMatrix);\n\n                    BoundingSphere bs = new BoundingSphere((bbMax + bbMin) / 2, Vector3.Distance(bbMin, bbMax));\n                    List<MyTriangle_Vertex_Normal> triangles = MyPhysics.physicsSystem.GetContactConstraintModule().GetTriangleCache().GetFreeTriangleList(this);\n                    model.GetTrianglePruningStructure().GetTrianglesIntersectingSphere(ref bs, triangles, triangles.Capacity);\n\n                    for (int iTriangle = 0; iTriangle < triangles.Count; iTriangle++)\n                    {\n                        MyTriangle_Vertex_Normal triangle = triangles[iTriangle];\n\n                        MyPlane plane = new MyPlane(ref triangle.Vertexes);\n\n                        // quick early test is done in mesh space\n                        float dist = MyUtils.GetDistanceFromPointToPlane(ref boxCentre, ref plane);\n\n                        if (dist > boxRadius || dist < -boxRadius)\n                            continue;\n\n                        Vector3 oldPos = boxMatrix.Translation;\n                        Vector3 newPos = newMatrix.Translation;\n                        float collisionEpsilon = 0;//pz to test not sure about value\n\n                        if (DoOverlapBoxTriangleStaticTest(\n                                oldBox, newBox,\n                                triangle,\n                                plane,\n                                collisionEpsilon,\n                                ref triangleMeshMatrix,\n                                ref oldPos,\n                                ref newPos))\n                        {\n                            return true;\n                        }\n                    }\n                    return false;\n                }\n                else\n                {\n                    bb.Min += boxElement.GetRigidBody().LinearVelocity * MyPhysics.physicsSystem.GetRigidBodyModule().CurrentTimeStep;\n                    bb.Max += boxElement.GetRigidBody().LinearVelocity * MyPhysics.physicsSystem.GetRigidBodyModule().CurrentTimeStep;\n\n                    var boxCenter = bb.GetCenter();\n                    // aabox is done in mesh space and handles the mesh transform correctly\n                    //int numTriangles = mesh.GetTrianglesIntersectingtAABox(potentialTriangles, MaxLocalStackTris, ref bb);\n\n                    //boxElement.GetRigidBody().Position = Vector3.Zero;\n                    //triangleMeshElem.GetRigidBody().Position = Vector3.Zero;\n                    //BoundingSphere bs = new BoundingSphere((bbMax + bbMin) / 2, Vector3.Distance(bbMin, bbMax));\n\n                    var halfSize = bb.Size() / 2;\n                    BoundingBox bb2 = new BoundingBox(boxCentre - halfSize, boxCentre + halfSize);\n\n                    List<MyTriangle_Vertex_Normal> triangles = MyPhysics.physicsSystem.GetContactConstraintModule().GetTriangleCache().GetFreeTriangleList(this);\n\n                    MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"PruningStructure\");\n\n                    model.GetTrianglePruningStructure().GetTrianglesIntersectingAABB(ref bb2, triangles, triangles.Capacity);\n                    //model.GetTrianglePruningStructure().GetTrianglesIntersectingSphere(ref bs, triangles, triangles.Capacity);\n                    MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n                    MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().ProfileCustomValue(\"Tests count \", TestsCount);\n\n                    MySmallCollPointInfo[] collPtArray = MyContactInfoCache.SCPIStackAlloc();\n                    int refPointer = 0;\n\n                    m_collPoints.Clear();\n\n                    MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Triangles\");\n\n                    for (int iTriangle = 0; iTriangle < triangles.Count; iTriangle++)\n                    {\n                        MyTriangle_Vertex_Normal triangle = triangles[iTriangle];\n                        //IndexedTriangle meshTriangle = mesh.GetTriangle(potentialTriangles[iTriangle]);\n\n                        MyPlane plane = new MyPlane(ref triangle.Vertexes);\n\n                        // quick early test is done in mesh space\n                        //float dist = meshTriangle.Plane.DotCoordinate(boxCentre);\n                        float dist = MyUtils.GetDistanceFromPointToPlane(ref boxCentre, ref plane);\n\n                        if (dist > boxRadius || dist < -boxRadius)\n                            continue;\n\n                        Vector3 oldPos = boxMatrix.Translation;\n                        Vector3 newPos = newMatrix.Translation;\n\n                        DoOverlapBoxTriangleTest(\n                                oldBox, newBox,\n                                triangle,\n                                plane,\n                                MyPhysics.physicsSystem.GetRigidBodyModule().CollisionEpsilon,\n                                ref triangleMeshMatrix,\n                                ref oldPos,\n                                ref newPos,\n                                m_collPoints);\n                    }\n\n                    MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n                    TrianglesTested += triangles.Count;\n\n                    MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().ProfileCustomValue(\"Triangles tested \", TrianglesTested);\n\n                    m_collPoints.Sort(m_colPointComparer);\n\n                    refPointer = 0;\n                    foreach (MyCollisionPointStruct collPoint in m_collPoints)\n                    {\n                        collPtArray[refPointer] = collPoint.CollPointInfo;\n                        refPointer++;\n                        if (refPointer >= MyPhysicsConfig.MaxContactPoints)\n                        {\n                            break;\n                        }\n                    }\n\n                    if (refPointer > 0)\n                        MyPhysics.physicsSystem.GetContactConstraintModule().AddContactConstraint(this, collPtArray, refPointer);\n\n\n                    MyContactInfoCache.FreeStackAlloc(collPtArray);\n                    MyPhysics.physicsSystem.GetContactConstraintModule().GetTriangleCache().PushBackTriangleList(triangles);\n                }\n            }\n            catch\n            {\n                throw;\n            }\n            finally\n            {\n                if (!staticCollision) MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n            }\n            return false;\n        }\n\n        private bool DoOverlapBoxTriangleStaticTest(MyBox oldBox, MyBox newBox,\n            MyTriangle_Vertex_Normal triangle, MyPlane plane, float collTolerance,\n            ref Matrix transformMatrix, ref Vector3 oldBoxPos, ref Vector3 newBoxPos)\n        {\n\n            Matrix dirs0 = newBox.Orientation;\n            dirs0.Translation = Vector3.Zero;\n\n            #region REFERENCE: Triangle tri = new Triangle(mesh.GetVertex(triangleVertexes.GetVertexIndex(0)),mesh.GetVertex(triangleVertexes.GetVertexIndex(1)),mesh.GetVertex(triangleVertexes.GetVertexIndex(2)));\n            Vector3 triVec0 = triangle.Vertexes.Vertex0;\n            Vector3 triVec1 = triangle.Vertexes.Vertex1;\n            Vector3 triVec2 = triangle.Vertexes.Vertex2;\n\n            // Deano move tri into world space\n            //Matrix transformMatrix = mesh.TransformMatrix;\n            Vector3.Transform(ref triVec0, ref transformMatrix, out triVec0);\n            Vector3.Transform(ref triVec1, ref transformMatrix, out triVec1);\n            Vector3.Transform(ref triVec2, ref transformMatrix, out triVec2);\n\n            MyTriangle tri = new MyTriangle(ref triVec0, ref triVec1, ref triVec2);\n            #endregion\n\n            #region REFERENCE Vector3 triEdge0 = (tri.GetPoint(1) - tri.GetPoint(0));\n            Vector3 pt0;\n            Vector3 pt1;\n            tri.GetPoint(0, out pt0);\n            tri.GetPoint(1, out pt1);\n\n            Vector3 triEdge0;\n            Vector3.Subtract(ref pt1, ref pt0, out triEdge0);\n            #endregion\n\n            #region REFERENCE Vector3 triEdge1 = (tri.GetPoint(2) - tri.GetPoint(1));\n            Vector3 pt2;\n            tri.GetPoint(2, out pt2);\n\n            Vector3 triEdge1;\n            Vector3.Subtract(ref pt2, ref pt1, out triEdge1);\n            #endregion\n\n            #region REFERENCE Vector3 triEdge2 = (tri.GetPoint(0) - tri.GetPoint(2));\n            Vector3 triEdge2;\n            Vector3.Subtract(ref pt0, ref pt2, out triEdge2);\n            #endregion\n\n            if (triEdge0.LengthSquared() < MyMwcMathConstants.EPSILON)\n                return false;\n            if (triEdge1.LengthSquared() < MyMwcMathConstants.EPSILON)\n                return false;\n            if (triEdge2.LengthSquared() < MyMwcMathConstants.EPSILON)\n                return false;\n\n            triEdge0.Normalize();\n            triEdge1.Normalize();\n            triEdge2.Normalize();\n\n            //Vector3 triNormal = triangle.Plane.Normal;\n            Vector3 triNormal = plane.Normal;\n            Vector3.TransformNormal(ref triNormal, ref transformMatrix, out triNormal);\n\n            // the 15 potential separating axes\n            const int numAxes = 13;\n            Vector3[] axes = new Vector3[numAxes];\n\n            axes[0] = triNormal;\n            axes[1] = dirs0.Right;\n            axes[2] = dirs0.Up;\n            axes[3] = dirs0.Backward;\n            Vector3.Cross(ref axes[1], ref triEdge0, out axes[4]);\n            Vector3.Cross(ref axes[1], ref triEdge1, out axes[5]);\n            Vector3.Cross(ref axes[1], ref triEdge2, out axes[6]);\n            Vector3.Cross(ref axes[2], ref triEdge0, out axes[7]);\n            Vector3.Cross(ref axes[2], ref triEdge1, out axes[8]);\n            Vector3.Cross(ref axes[2], ref triEdge2, out axes[9]);\n            Vector3.Cross(ref axes[3], ref triEdge0, out axes[10]);\n            Vector3.Cross(ref axes[3], ref triEdge1, out axes[11]);\n            Vector3.Cross(ref axes[3], ref triEdge2, out axes[12]);\n\n            // the overlap depths along each axis\n            float[] overlapDepths = new float[numAxes];\n\n            // see if the boxes are separate along any axis, and if not keep a \n            // record of the depths along each axis\n            int i;\n            for (i = 0; i < numAxes; ++i)\n            {\n                overlapDepths[i] = 1.0f;\n                if (Disjoint(out overlapDepths[i], axes[i], newBox, tri, collTolerance))\n                    return false;\n            }\n\n            // The box overlap, find the separation depth closest to 0.\n            float minDepth = float.MaxValue;\n            int minAxis = -1;\n\n            for (i = 0; i < numAxes; ++i)\n            {\n                // If we can't normalise the axis, skip it\n                float l2 = axes[i].LengthSquared();\n                if (l2 < MyPhysicsConfig.Epsilon)\n                    continue;\n\n                // Normalise the separation axis and the depth\n                float invl = 1.0f / (float)System.Math.Sqrt(l2);\n                axes[i] *= invl;\n                overlapDepths[i] *= invl;\n\n                // If this axis is the minimum, select it\n                if (overlapDepths[i] < minDepth)\n                {\n                    minDepth = overlapDepths[i];\n                    minAxis = i;\n                }\n            }\n\n            if (minAxis == -1)\n                return false;\n\n            // Make sure the axis is facing towards the 0th box.\n            // if not, invert it\n            Vector3 D = newBox.GetCentre() - tri.Centre;\n            Vector3 N = axes[minAxis];\n            float depth = overlapDepths[minAxis];\n\n            if (Vector3.Dot(D, N) > 0.0f)\n                N *= -1;\n\n            Vector3 boxOldPos = oldBoxPos; //(info.Skin0.Owner != null) ? info.Skin0.Owner.OldPosition : Vector3.Zero;\n            Vector3 boxNewPos = newBoxPos; // (info.Skin0.Owner != null) ? info.Skin0.Owner.Position : Vector3.Zero;\n            Vector3 meshPos = transformMatrix.Translation; // (info.Skin1.Owner != null) ? info.Skin1.Owner.OldPosition : Vector3.Zero;\n\n            List<Vector3> pts = new List<Vector3>();\n            //pts.Clear();\n\n            const float combinationDist = 0.05f;\n            GetBoxTriangleIntersectionPoints(pts, newBox, tri, depth + combinationDist);\n\n            // adjust the depth \n            #region delta\n            Vector3 delta;\n            Vector3.Subtract(ref boxNewPos, ref boxOldPos, out delta);\n            #endregion\n\n            #region oldDepth\n            float oldDepth;\n            Vector3.Dot(ref delta, ref N, out oldDepth);\n            oldDepth += depth;\n            #endregion\n\n            // report collisions\n            int numPts = pts.Count;\n            \n            if (numPts > 0)\n                return true;\n            else\n                return false;\n        }\n\n        private bool DoOverlapBoxTriangleTest(MyBox oldBox, MyBox newBox, MyTriangle_Vertex_Normal triangle, MyPlane plane, float collTolerance,\n            ref Matrix transformMatrix, ref Vector3 oldBoxPos, ref Vector3 newBoxPos, List<MyCollisionPointStruct> collPoints)\n        {\n            Matrix dirs0 = newBox.Orientation;\n            dirs0.Translation = Vector3.Zero;\n\n            #region Triangle\n            Vector3 triVec0 = triangle.Vertexes.Vertex0;\n            Vector3 triVec1 = triangle.Vertexes.Vertex1;\n            Vector3 triVec2 = triangle.Vertexes.Vertex2;\n            //mesh.GetVertex(triangle.GetVertexIndex(0), out triVec0);\n            //mesh.GetVertex(triangle.GetVertexIndex(1), out triVec1);\n            //mesh.GetVertex(triangle.GetVertexIndex(2), out triVec2);\n\n            // Deano move tri into world space\n            //Matrix transformMatrix = mesh.TransformMatrix;\n            Vector3.Transform(ref triVec0, ref transformMatrix, out triVec0);\n            Vector3.Transform(ref triVec1, ref transformMatrix, out triVec1);\n            Vector3.Transform(ref triVec2, ref transformMatrix, out triVec2);\n\n            MyTriangle tri = new MyTriangle(ref triVec0, ref triVec1, ref triVec2);\n            #endregion\n\n\n            #region triEdge0\n            Vector3 pt0;\n            Vector3 pt1;\n            tri.GetPoint(0, out pt0);\n            tri.GetPoint(1, out pt1);\n\n            Vector3 triEdge0;\n            Vector3.Subtract(ref pt1, ref pt0, out triEdge0);\n            #endregion\n\n            #region triEdge1\n            Vector3 pt2;\n            tri.GetPoint(2, out pt2);\n\n            Vector3 triEdge1;\n            Vector3.Subtract(ref pt2, ref pt1, out triEdge1);\n            #endregion\n\n            #region triEdge2\n            Vector3 triEdge2;\n            Vector3.Subtract(ref pt0, ref pt2, out triEdge2);\n            #endregion\n\n\n            if (triEdge0.LengthSquared() < MyMwcMathConstants.EPSILON)\n                return false;\n            if (triEdge1.LengthSquared() < MyMwcMathConstants.EPSILON)\n                return false;\n            if (triEdge2.LengthSquared() < MyMwcMathConstants.EPSILON)\n                return false;\n\n\n            /*\n            triEdge0 = MyMwcUtils.Normalize(triEdge0);\n            triEdge1 = MyMwcUtils.Normalize(triEdge1);\n            triEdge2 = MyMwcUtils.Normalize(triEdge2);\n              */\n            triEdge0.Normalize();\n            triEdge1.Normalize();\n            triEdge2.Normalize();\n\n            //Vector3 triNormal = triangle.Plane.Normal;\n            Vector3 triNormal = plane.Normal;\n            Vector3.TransformNormal(ref triNormal, ref transformMatrix, out triNormal);\n\n\n            \n\n            // the 15 potential separating axes (comment by Marek Rosa: note says 15 but code uses 13... I don't know why, mistake in the note??)\n            const int NUM_AXES = 13;\n            MyVector3Array13 axes = new MyVector3Array13();\n\n            axes[0] = triNormal;\n            axes[1] = dirs0.Right;\n            axes[2] = dirs0.Up;\n            axes[3] = dirs0.Backward;\n            axes[4] = Vector3.Cross(axes[1], triEdge0);\n            axes[5] = Vector3.Cross(axes[1], triEdge1);\n            axes[6] = Vector3.Cross(axes[1], triEdge2);\n            axes[7] = Vector3.Cross(axes[2], triEdge0);\n            axes[8] = Vector3.Cross(axes[2], triEdge1);\n            axes[9] = Vector3.Cross(axes[2], triEdge2);\n            axes[10] = Vector3.Cross(axes[3], triEdge0);\n            axes[11] = Vector3.Cross(axes[3], triEdge1);\n            axes[12] = Vector3.Cross(axes[3], triEdge2);\n\n            // the overlap depths along each axis\n            MyFloatArray13 overlapDepths = new MyFloatArray13();\n\n            // see if the boxes are separate along any axis, and if not keep a \n            // record of the depths along each axis\n            int i;\n            for (i = 0; i < NUM_AXES; ++i)\n            {\n                overlapDepths[i] = 1.0f;\n                \n                bool b;\n                overlapDepths[i] = Disjoint(out b, axes[i], newBox, tri, collTolerance);\n                if (b) return false;\n            }\n\n            // The box overlap, find the separation depth closest to 0.\n            float minDepth = float.MaxValue;\n            int minAxis = -1;\n\n            for (i = 0; i < NUM_AXES; ++i)\n            {\n                // If we can't normalise the axis, skip it\n                float l2 = axes[i].LengthSquared();\n                if (l2 < MyPhysicsConfig.Epsilon)\n                    continue;\n\n                // Normalise the separation axis and the depth\n                float invl = 1.0f / (float)System.Math.Sqrt(l2);\n                axes[i] *= invl;\n                overlapDepths[i] *= invl;\n\n                // If this axis is the minimum, select it\n                if (overlapDepths[i] < minDepth)\n                {\n                    minDepth = overlapDepths[i];\n                    minAxis = i;\n                }\n            }\n\n            if (minAxis == -1)\n                return false;\n\n\n            // Make sure the axis is facing towards the 0th box.\n            // if not, invert it\n            Vector3 D = newBox.GetCentre() - tri.Centre;\n            Vector3 N = axes[minAxis];\n            float depth = overlapDepths[minAxis];\n\n            if (Vector3.Dot(D, N) > 0.0f)\n                N *= -1;\n\n            Vector3 boxOldPos = oldBoxPos; //(info.Skin0.Owner != null) ? info.Skin0.Owner.OldPosition : Vector3.Zero;\n            Vector3 boxNewPos = newBoxPos; // (info.Skin0.Owner != null) ? info.Skin0.Owner.Position : Vector3.Zero;\n            Vector3 meshPos = transformMatrix.Translation; // (info.Skin1.Owner != null) ? info.Skin1.Owner.OldPosition : Vector3.Zero;\n\n            m_pts.Clear();\n\n            const float combinationDist = 0.05f;\n            GetBoxTriangleIntersectionPoints(m_pts, newBox, tri, depth + combinationDist);\n\n            // adjust the depth \n            #region delta\n            Vector3 delta;\n            Vector3.Subtract(ref boxNewPos, ref boxOldPos, out delta);\n            #endregion\n\n            #region oldDepth\n            float oldDepth;\n            Vector3.Dot(ref delta, ref N, out oldDepth);\n            oldDepth += depth;\n            #endregion\n\n            \n            // report collisions\n            \n            int numPts = m_pts.Count;\n            if (numPts > 0)\n            {\n                for (i = 0; i < numPts; ++i)\n                {\n                    collPoints.Add(new MyCollisionPointStruct(-oldDepth, new MySmallCollPointInfo(m_pts[i] - boxNewPos, m_pts[i] - meshPos, GetRigidBody1().LinearVelocity, GetRigidBody2().LinearVelocity, N, -oldDepth, m_pts[i])));\n                }\n\n                return true;\n            }\n            else\n            {\n                return false;\n            }\n        }\n\n        private bool SegmentTriangleIntersection(out float tS, out float tT0, out float tT1, MySegment seg, MyTriangle triangle)\n        {\n            /// the parameters - if hit then they get copied into the args\n            float u, v, t;\n\n            tS = 0;\n            tT0 = 0;\n            tT1 = 0;\n\n            Vector3 e1 = triangle.Edge0;\n            Vector3 e2 = triangle.Edge1;\n            Vector3 p = Vector3.Cross(seg.Delta, e2);\n            float a = Vector3.Dot(e1, p);\n            if (a > -MyPhysicsConfig.Epsilon && a < MyPhysicsConfig.Epsilon)\n                return false;\n            float f = 1.0f / a;\n            Vector3 s = seg.Origin - triangle.Origin;\n            u = f * Vector3.Dot(s, p);\n            if (u < 0.0f || u > 1.0f)\n                return false;\n            Vector3 q = Vector3.Cross(s, e1);\n            v = f * Vector3.Dot(seg.Delta, q);\n            if (v < 0.0f || (u + v) > 1.0f)\n                return false;\n            t = f * Vector3.Dot(e2, q);\n            if (t < 0.0f || t > 1.0f)\n                return false;\n\n            tS = t;\n            tT0 = u;\n            tT1 = v;\n            //if (tS != 0) tS = t;\n            //if (tT0 != 0) tT0 = u;\n            //if (tT1 != 0) tT1 = v;\n            return true;\n        }\n\n        private int GetBoxTriangleIntersectionPoints(List<Vector3> pts, MyBox box, MyTriangle triangle, float combinationDistance)\n        {\n            // first intersect each edge of the box with the triangleVertexes\n            MyBox.Edge[] edges;\n            box.GetEdges(out edges);\n            Vector3[] boxPts;\n            box.GetCornerPoints(out boxPts);\n\n            float tS;\n            float tv1, tv2;\n\n            int iEdge;\n            for (iEdge = 0; iEdge < 12; ++iEdge)\n            {\n                MyBox.Edge edge = edges[iEdge];\n                MySegment seg = new MySegment(boxPts[(int)edge.Ind0], boxPts[(int)edge.Ind1] - boxPts[(int)edge.Ind0]);\n                if (SegmentTriangleIntersection(out tS, out tv1, out tv2, seg, triangle))\n                {\n                    AddPoint(pts, seg.GetPoint(tS), combinationDistance * combinationDistance);\n                }\n            }\n\n            Vector3 pos, n;\n            // now each edge of the triangleVertexes with the box\n            for (iEdge = 0; iEdge < 3; ++iEdge)\n            {\n                Vector3 pt0 = triangle.GetPoint(iEdge);\n                Vector3 pt1 = triangle.GetPoint((iEdge + 1) % 3);\n                MySegment s1 = new MySegment(pt0, pt1 - pt0);\n                MySegment s2 = new MySegment(pt1, pt0 - pt1);\n                if (box.SegmentIntersect(out tS, out pos, out n, s1))\n                    AddPoint(pts, pos, combinationDistance * combinationDistance);\n                if (box.SegmentIntersect(out tS, out pos, out n, s2))\n                    AddPoint(pts, pos, combinationDistance * combinationDistance);\n            }\n\n            return pts.Count;\n        }\n\n        public float PointPointDistanceSq(Vector3 pt1, Vector3 pt2)\n        {\n            float num3 = pt1.X - pt2.X;\n            float num2 = pt1.Y - pt2.Y;\n            float num0 = pt1.Z - pt2.Z;\n            return ((num3 * num3) + (num2 * num2)) + (num0 * num0);\n        }\n\n        private bool AddPoint(List<Vector3> pts, Vector3 pt, float combinationDistanceSq)\n        {\n            for (int i = pts.Count; i-- != 0; )\n            {\n                if (PointPointDistanceSq(pts[i], pt) < combinationDistanceSq)\n                {\n                    pts[i] = 0.5f * (pts[i] + pt);\n                    return false;\n                }\n            }\n            pts.Add(pt);\n            return true;\n        }\n\n        private float Disjoint(out bool b, Vector3 axis, MyBox box, MyTriangle triangle, float collTolerance)\n        {\n            float ret;\n            b = Disjoint(out ret, axis, box, triangle, collTolerance);\n            return ret;\n        }\n\n        private bool Disjoint(out float d, Vector3 axis, MyBox box, MyTriangle triangle, float collTolerance)\n        {\n            float min0, max0, min1, max1;\n\n            box.GetSpan(out min0, out max0, axis);\n            triangle.GetSpan(out min1, out max1, axis);\n\n            if (min0 > (max1 + collTolerance + MyPhysicsConfig.Epsilon) ||\n                min1 > (max0 + collTolerance + MyPhysicsConfig.Epsilon))\n            {\n                d = 0.0f;\n                return true;\n            }\n\n            if ((max0 > max1) && (min1 > min0))\n            {\n                // triangleVertexes is inside - choose the min dist to move it out\n                d = System.Math.Min(max0 - min1, max1 - min0);\n            }\n            else if ((max1 > max0) && (min0 > min1))\n            {\n                // box is inside - choose the min dist to move it out\n                d = System.Math.Min(max1 - min0, max0 - min1);\n            }\n            else\n            {\n                // objects overlap\n                d = (max0 < max1) ? max0 : max1;\n                d -= (min0 > min1) ? min0 : min1;\n            }\n\n            return false;\n        }\n\n        public override MyRBElementInteraction CreateNewInstance() { return new MyRBBoxElementTriangleMeshElementInteraction(); }\n    }\n\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Physics/Collisions/Interactions/MyBoxVoxelInteraction.cs",
    "content": "﻿#region Using Statements\n\nusing System.Collections.Generic;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Voxels;\nusing MinerWars.AppCode.Game.Utils;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.Utils;\n\n#endregion\n\nnamespace MinerWars.AppCode.Physics\n{\n    //////////////////////////////////////////////////////////////////////////\n    /// <summary>\n    /// Box vs voxel interaction\n    /// </summary>\n\n    class MyRBBoxElementVoxelElementInteraction : MyRBElementInteraction\n    {\n        private MyBox tempBox = new MyBox(Matrix.Identity, Vector3.Zero);\n\n        private const int numAxes = 13;\n        private Vector3[] m_axes = new Vector3[numAxes];\n        private float[] m_overlapDepths = new float[numAxes];\n\n        struct MyCP\n        {\n            public Vector3 m_Position;\n            public Vector3 m_Normal;\n            public float m_Depth;\n        }\n\n        private List<MyCP> m_CPList = new List<MyCP>(16);\n\n        public override MyRBElementInteraction CreateNewInstance() { return new MyRBBoxElementVoxelElementInteraction(); }\n\n        protected override bool Interact(bool staticCollision)\n        {\n            if (RBElement1.GetElementType() != MyRBElementType.ET_BOX)\n                SwapElements();\n\n            if (!staticCollision) MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"BoxVoxelInteraction\");\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Transformations\");\n\n            MyRBBoxElement rbbox0 = (MyRBBoxElement)RBElement1;\n\n            Matrix matrix0 = RBElement1.GetGlobalTransformation();\n\n            MyBox box = tempBox;\n\n            box.Transform.Orientation = matrix0;\n            box.Transform.Orientation.Translation = Vector3.Zero;\n            box.Transform.Position = matrix0.Translation - Vector3.TransformNormal(rbbox0.Size * 0.5f, matrix0);\n\n            box.SideLengths = rbbox0.Size;\n\n            float boxRadius = box.GetBoundingRadiusAroundCentre();\n\n            #region boxCentre\n            Vector3 boxCentre;\n            box.GetCentre(out boxCentre);\n            // Deano need to trasnform the box center into mesh space\n            //Matrix invTransformMatrix = mesh.InverseTransformMatrix;\n            //Vector3.Transform(ref boxCentre, ref invTransformMatrix, out boxCentre);\n            #endregion\n\n            BoundingBox bb = RBElement1.GetWorldSpaceAABB();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"GetPotentialTrianglesForColDet\");\n            // extent bb for the movement            \n            int numTriangles;\n            MyVoxelMaps.GetPotentialTrianglesForColDet(out numTriangles, ref bb);\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            if (staticCollision)\n            {\n                for (int iTriangle = 0; iTriangle < numTriangles; ++iTriangle)\n                {\n                    MyColDetVoxelTriangle triangle = MyVoxelMaps.PotentialColDetTriangles[iTriangle];\n\n                    // quick early test is done in mesh space\n                    float dist = triangle.Plane.DotCoordinate(boxCentre);\n\n                    if (dist > boxRadius) continue;\n\n                    // skip too narrow triangles causing destability\n                    if ((triangle.Vertex0 - triangle.Vertex1).LengthSquared() < MyPhysicsConfig.TriangleEpsilon\n                        || (triangle.Vertex1 - triangle.Vertex2).LengthSquared() < MyPhysicsConfig.TriangleEpsilon\n                        || (triangle.Vertex0 - triangle.Vertex2).LengthSquared() < MyPhysicsConfig.TriangleEpsilon\n                       )\n                        continue;\n\n                    if (DoOverlapBoxTriangleStaticTest(box, ref triangle))\n                        return true;\n                }\n            }\n            else\n            {\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"for DoOverlapBoxTriangleTest\");\n\n                for (int iTriangle = 0; iTriangle < numTriangles; ++iTriangle)\n                {\n                    MyColDetVoxelTriangle triangle = MyVoxelMaps.PotentialColDetTriangles[iTriangle];\n\n                    // skip too narrow triangles causing destability\n                    if ((triangle.Vertex0 - triangle.Vertex1).LengthSquared() < MyPhysicsConfig.TriangleEpsilon\n                        || (triangle.Vertex1 - triangle.Vertex2).LengthSquared() < MyPhysicsConfig.TriangleEpsilon\n                        || (triangle.Vertex0 - triangle.Vertex2).LengthSquared() < MyPhysicsConfig.TriangleEpsilon\n                       )\n                        continue;\n\n                    DoOverlapBoxTriangleTest(box, ref triangle);\n                }\n\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n            }\n\n            if (!staticCollision) MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n            return false;\n        }\n\n\n        private bool DoOverlapBoxTriangleStaticTest(MyBox box, ref MyColDetVoxelTriangle triangle)\n        {\n\n            Matrix dirs0 = box.Orientation;\n\n            #region triEdge0\n            Vector3 pt0;\n            Vector3 pt1;\n            triangle.GetPoint(0, out pt0);\n            triangle.GetPoint(1, out pt1);\n\n            Vector3 triEdge0;\n            Vector3.Subtract(ref pt1, ref pt0, out triEdge0);\n\n            if (triEdge0.LengthSquared() < MyPhysicsConfig.Epsilon)\n                return false;\n\n            #endregion\n\n            #region triEdge1\n            Vector3 pt2;\n            triangle.GetPoint(2, out pt2);\n\n            Vector3 triEdge1;\n            Vector3.Subtract(ref pt2, ref pt1, out triEdge1);\n\n            if (triEdge1.LengthSquared() < MyPhysicsConfig.Epsilon)\n                return false;\n\n            #endregion\n\n            #region triEdge2\n            Vector3 triEdge2;\n            Vector3.Subtract(ref pt0, ref pt2, out triEdge2);\n\n            if (triEdge2.LengthSquared() < MyPhysicsConfig.Epsilon)\n                return false;\n\n            #endregion\n\n            triEdge0.Normalize();\n            triEdge1.Normalize();\n            triEdge2.Normalize();\n\n            Vector3 triNormal = triangle.Plane.Normal;             \n\n            m_axes[0] = triNormal;\n            m_axes[1] = dirs0.Right;\n            m_axes[2] = dirs0.Up;\n            m_axes[3] = dirs0.Backward;\n            Vector3.Cross(ref m_axes[1], ref triEdge0, out m_axes[4]);\n            Vector3.Cross(ref m_axes[1], ref triEdge1, out m_axes[5]);\n            Vector3.Cross(ref m_axes[1], ref triEdge2, out m_axes[6]);\n            Vector3.Cross(ref m_axes[2], ref triEdge0, out m_axes[7]);\n            Vector3.Cross(ref m_axes[2], ref triEdge1, out m_axes[8]);\n            Vector3.Cross(ref m_axes[2], ref triEdge2, out m_axes[9]);\n            Vector3.Cross(ref m_axes[3], ref triEdge0, out m_axes[10]);\n            Vector3.Cross(ref m_axes[3], ref triEdge1, out m_axes[11]);\n            Vector3.Cross(ref m_axes[3], ref triEdge2, out m_axes[12]);\n\n            // the overlap depths along each axis\n            \n\n            // see if the boxes are separate along any axis, and if not keep a \n            // record of the depths along each axis\n            int i;\n            for (i = 0; i < numAxes; ++i)\n            {\n                m_overlapDepths[i] = 1.0f;\n                if (Disjoint(out m_overlapDepths[i], m_axes[i], box, triangle, MyPhysicsConfig.CollisionEpsilon))\n                    return false;\n            }\n\n            // The box overlap, find the separation depth closest to 0.\n            float minDepth = float.MaxValue;\n            int minAxis = -1;\n\n            for (i = 0; i < numAxes; ++i)\n            {\n                // If we can't normalise the axis, skip it\n                float l2 = m_axes[i].LengthSquared();\n                if (l2 < MyPhysicsConfig.Epsilon)\n                    continue;\n\n                // Normalise the separation axis and the depth\n                float invl = 1.0f / (float)System.Math.Sqrt(l2);\n                m_axes[i] *= invl;\n                m_overlapDepths[i] *= invl;\n\n                // If this axis is the minimum, select it\n                if (m_overlapDepths[i] < minDepth)\n                {\n                    minDepth = m_overlapDepths[i];\n                    minAxis = i;\n                }\n            }\n\n            if (minAxis == -1)\n                return false;\n\n            // Make sure the axis is facing towards the 0th box.\n            // if not, invert it\n            Vector3 D = box.GetCentre() - triangle.Centre;\n            Vector3 N = m_axes[minAxis];\n            float depth = m_overlapDepths[minAxis];\n\n            if (Vector3.Dot(D, N) < 0.0f)\n                N *= -1;\n\n            MyRigidBody rbo0 = GetRigidBody1();\n            MyRigidBody rbo1 = GetRigidBody2();\n            float dt = MyPhysics.physicsSystem.GetRigidBodyModule().CurrentTimeStep;\n\n            Vector3 boxOldPos = rbo0.Position;\n            Vector3 boxNewPos = rbo0.Position + rbo0.LinearVelocity * dt;\n            Vector3 meshPos = rbo1.Position;\n\n            m_CPList.Clear();\n            GetBoxTriangleIntersectionPoints(m_CPList, box, triangle, MyPhysicsConfig.CollisionEpsilon);\n\n            // adjust the depth \n            #region delta\n            Vector3 delta;\n            Vector3.Subtract(ref boxNewPos, ref boxOldPos, out delta);\n            #endregion\n\n            int numPts = m_CPList.Count;\n            if (numPts > 0)\n                return true;\n            else\n                return false;\n        }\n\n        private bool DoOverlapBoxTriangleTest(MyBox box, ref MyColDetVoxelTriangle triangle)\n        {\n            Matrix dirs0 = box.Orientation;\n\n            Vector3 triEdge0;\n            Vector3 triEdge1;\n            Vector3 triEdge2;\n\n            triEdge0 = MyMwcUtils.Normalize(triangle.Edge0);\n            triEdge1 = MyMwcUtils.Normalize(triangle.Edge1);\n            triEdge2 = MyMwcUtils.Normalize(triangle.Edge2);\n\n            Vector3 triNormal = triangle.Plane.Normal;\n\n            // the 15 potential separating axes (comment by Marek Rosa: note says 15 but code uses 13... I don't know why, mistake in the note??)\n            const int NUM_AXES = 13;\n            MyVector3Array13 axes = new MyVector3Array13();\n\n            axes[0] = triNormal;\n            axes[1] = dirs0.Right;\n            axes[2] = dirs0.Up;\n            axes[3] = dirs0.Backward;\n            axes[4] = Vector3.Cross(axes[1], triEdge0);\n            axes[5] = Vector3.Cross(axes[1], triEdge1);\n            axes[6] = Vector3.Cross(axes[1], triEdge2);\n            axes[7] = Vector3.Cross(axes[2], triEdge0);\n            axes[8] = Vector3.Cross(axes[2], triEdge1);\n            axes[9] = Vector3.Cross(axes[2], triEdge2);\n            axes[10] = Vector3.Cross(axes[3], triEdge0);\n            axes[11] = Vector3.Cross(axes[3], triEdge1);\n            axes[12] = Vector3.Cross(axes[3], triEdge2);\n\n            // the overlap depths along each axis\n            MyFloatArray13 overlapDepths = new MyFloatArray13();\n\n            // see if the boxes are separate along any axis, and if not keep a \n            // record of the depths along each axis\n            int i;\n            for (i = 0; i < NUM_AXES; ++i)\n            {\n                overlapDepths[i] = 1.0f;\n\n                bool b;\n                overlapDepths[i] = Disjoint(out b, axes[i], box, triangle, MyPhysics.physicsSystem.GetRigidBodyModule().CollisionEpsilon);\n                if (b) return false;\n            }\n\n            // The box overlap, find the separation depth closest to 0.\n            float minDepth = float.MaxValue;\n            int minAxis = -1;\n\n            for (i = 0; i < NUM_AXES; ++i)\n            {\n                // If we can't normalise the axis, skip it\n                float l2 = axes[i].LengthSquared();\n                if (l2 < MyPhysicsConfig.Epsilon)\n                    continue;\n\n                // Normalise the separation axis and the depth\n                float invl = 1.0f / (float)System.Math.Sqrt(l2);\n                axes[i] *= invl;\n                overlapDepths[i] *= invl;\n\n                // If this axis is the minimum, select it\n                if (overlapDepths[i] < minDepth)\n                {\n                    minDepth = overlapDepths[i];\n                    minAxis = i;\n                }\n            }\n\n            if (minAxis == -1)\n                return false;\n\n            // Make sure the axis is facing towards the 0th box.\n            // if not, invert it\n            Vector3 D = box.GetCentre() - triangle.Centre;\n            Vector3 N = axes[minAxis];\n            float depth = overlapDepths[minAxis];\n\n            if (Vector3.Dot(D, N) < 0.0f)\n                N *= -1;\n\n            MyRigidBody rbo0 = GetRigidBody1();\n            MyRigidBody rbo1 = GetRigidBody2();\n            float dt = MyPhysics.physicsSystem.GetRigidBodyModule().CurrentTimeStep;\n\n            Vector3 boxOldPos = rbo0.Position;\n            Vector3 boxNewPos = rbo0.Position + rbo0.LinearVelocity * dt;\n            Vector3 meshPos = rbo1.Position;\n\n            m_CPList.Clear();\n\n            GetBoxTriangleIntersectionPoints(m_CPList, box, triangle, MyPhysicsConfig.CollisionEpsilon);\n\n            // adjust the depth \n            #region delta\n            Vector3 delta;\n            Vector3.Subtract(ref boxNewPos, ref boxOldPos, out delta);\n            #endregion\n\n            // report collisions\n            int numPts = m_CPList.Count;\n            MySmallCollPointInfo[] collPtArray = MyContactInfoCache.SCPIStackAlloc();\n            {\n                if (numPts > 0)\n                {\n                    if (numPts >= MyPhysicsConfig.MaxContactPoints)\n                    {\n                        numPts = MyPhysicsConfig.MaxContactPoints - 1;\n                    }\n\n                    // adjust positions\n                    for (i = 0; i < numPts; ++i)\n                    {\n                        collPtArray[i] = new MySmallCollPointInfo(m_CPList[i].m_Position - boxOldPos, m_CPList[i].m_Position - meshPos, GetRigidBody1().LinearVelocity, GetRigidBody2().LinearVelocity, m_CPList[i].m_Normal, m_CPList[i].m_Depth, m_CPList[i].m_Position);\n                    }\n\n                    MyPhysics.physicsSystem.GetContactConstraintModule().AddContactConstraint(this, collPtArray, numPts);\n                    MyContactInfoCache.FreeStackAlloc(collPtArray);\n                    return true;\n                }\n                else\n                {\n                    MyContactInfoCache.FreeStackAlloc(collPtArray);\n                    return false;\n                }\n            }\n          \n        }\n\n        private float Disjoint(out bool b, Vector3 axis, MyBox box, MyColDetVoxelTriangle triangle, float collTolerance)\n        {\n            float ret;\n            b = Disjoint(out ret, axis, box, triangle, collTolerance);\n            return ret;\n        }        \n\n        //  Disjoint Returns true if disjoint.  Returns false if intersecting,\n        //  and sets the overlap depth, d scaled by the axis length\n        private static bool Disjoint(out float d, Vector3 axis, MyBox box, MyColDetVoxelTriangle triangle, float collTolerance)\n        {\n            float min0, max0, min1, max1;\n\n            box.GetSpan(out min0, out max0, axis);\n            triangle.GetSpan(out min1, out max1, axis);\n\n            if (min0 > (max1 + collTolerance ) ||\n                min1 > (max0 + collTolerance ))\n            {\n                d = 0.0f;\n                return true;\n            }\n\n            if ((max0 > max1) && (min1 > min0))\n            {\n                // triangleVertexes is inside - choose the min dist to move it out\n                d = System.Math.Min(max0 - min1, max1 - min0);\n            }\n            else if ((max1 > max0) && (min0 > min1))\n            {\n                // box is inside - choose the min dist to move it out\n                d = System.Math.Min(max1 - min0, max0 - min1);\n            }\n            else\n            {\n                // objects overlap\n                d = (max0 < max1) ? max0 : max1;\n                d -= (min0 > min1) ? min0 : min1;\n            }\n\n            return false;\n        }\n\n        //  GetBoxTriangleIntersectionPoints\n        //  Pushes intersection points onto the back of pts. Returns the\n        //  number of points found.\n        //  Points that are close together (compared to \n        //  combinationDistance) get combined\n        private int GetBoxTriangleIntersectionPoints(List<MyCP> pts, MyBox box, MyColDetVoxelTriangle triangle, float combinationDistance)\n        {\n            // first intersect each edge of the box with the triangleVertexes\n            MyBox.Edge[] edges;\n            box.GetEdges(out edges);\n            Vector3[] boxPts;\n            box.GetCornerPoints(out boxPts);\n\n            float tS;\n            float tv1, tv2;\n\n            int iEdge;\n            for (iEdge = 0; iEdge < 12; ++iEdge)\n            {\n                MyBox.Edge edge = edges[iEdge];\n                MySegment seg = new MySegment(boxPts[(int)edge.Ind0], boxPts[(int)edge.Ind1] - boxPts[(int)edge.Ind0]);\n                if (this.SegmentTriangleIntersection(out tS, out tv1, out tv2, seg, triangle))\n                {\n                    float depthA = Vector3.Dot(boxPts[(int)edge.Ind0] - seg.GetPoint(tS), triangle.Normal);\n                    float depthB = Vector3.Dot(boxPts[(int)edge.Ind1] - seg.GetPoint(tS), triangle.Normal);\n                    AddPoint(pts, seg.GetPoint(tS),triangle.Normal, depthA < depthB ? depthA : depthB , combinationDistance * combinationDistance);\n                }\n            }\n\n            Vector3 pos, n;\n            // now each edge of the triangleVertexes with the box\n            for (iEdge = 0; iEdge < 3; ++iEdge)\n            {\n                Vector3 pt0 = triangle.GetPoint(iEdge);\n                Vector3 pt1 = triangle.GetPoint((iEdge + 1) % 3);\n                MySegment s1 = new MySegment(pt0, pt1 - pt0);\n                MySegment s2 = new MySegment(pt1, pt0 - pt1);\n                if (box.SegmentIntersect(out tS, out pos, out n, s1))\n                {\n                    float depthA = Vector3.Dot(pt0 - pos, triangle.Normal);\n                    float depthB = Vector3.Dot(pt1 - pos, triangle.Normal);\n                    AddPoint(pts, pos, triangle.Normal, depthA < depthB ? depthA : depthB, combinationDistance * combinationDistance);\n                }\n                if (box.SegmentIntersect(out tS, out pos, out n, s2))\n                {\n                    float depthA = Vector3.Dot(pt0 - pos, triangle.Normal);\n                    float depthB = Vector3.Dot(pt1 - pos, triangle.Normal);\n                    AddPoint(pts, pos, triangle.Normal, depthA < depthB ? depthA : depthB, combinationDistance * combinationDistance);\n                }\n            }\n\n            return pts.Count;\n        }\n\n        public bool SegmentTriangleIntersection(out float tS, out float tT0, out float tT1,\n                                               MySegment seg, MyColDetVoxelTriangle triangle)\n        {\n            /// the parameters - if hit then they get copied into the args\n            float u, v, t;\n\n            tS = 0;\n            tT0 = 0;\n            tT1 = 0;\n\n            Vector3 e1 = triangle.Edge0;\n            Vector3 e2 = triangle.Edge1;\n            Vector3 p = Vector3.Cross(seg.Delta, e2);\n            float a = Vector3.Dot(e1, p);\n            if (a > -MyPhysicsConfig.Epsilon && a < MyPhysicsConfig.Epsilon)\n                return false;\n            float f = 1.0f / a;\n            Vector3 s = seg.Origin - triangle.Origin;\n            u = f * Vector3.Dot(s, p);\n            if (u < 0.0f || u > 1.0f)\n                return false;\n            Vector3 q = Vector3.Cross(s, e1);\n            v = f * Vector3.Dot(seg.Delta, q);\n            if (v < 0.0f || (u + v) > 1.0f)\n                return false;\n            t = f * Vector3.Dot(e2, q);\n            if (t < 0.0f || t > 1.0f)\n                return false;\n\n            tS = t;\n            tT0 = u;\n            tT1 = v;\n            //if (tS != 0) tS = t;\n            //if (tT0 != 0) tT0 = u;\n            //if (tT1 != 0) tT1 = v;\n            return true;\n        }\n\n        public static float PointPointDistanceSq(Vector3 pt1, Vector3 pt2)\n        {\n            float num3 = pt1.X - pt2.X;\n            float num2 = pt1.Y - pt2.Y;\n            float num0 = pt1.Z - pt2.Z;\n            return ((num3 * num3) + (num2 * num2)) + (num0 * num0);\n        }\n\n\n        //  AddPoint\n        //  if pt is less than Sqrt(combinationDistanceSq) from one of the\n        //  others the original is replaced with the mean of it\n        //  and pt, and false is returned. true means that pt was\n        //  added to pts\n        private bool AddPoint(List<MyCP> pts, Vector3 pt, Vector3 normal, float depth , float combinationDistanceSq)\n        {\n            for (int i = pts.Count; i-- != 0; )\n            {\n                if (PointPointDistanceSq(pts[i].m_Position, pt) < combinationDistanceSq)\n                {\n                    //pts[i] = 0.5f * (pts[i] + pt);\n                    return false;\n                }\n            }\n            MyCP cp = new MyCP();\n            cp.m_Normal = -normal;\n            cp.m_Normal = MyMwcUtils.Normalize(cp.m_Normal);\n            cp.m_Position = pt;\n            cp.m_Depth = depth*0.1f - 0.5f*MyPhysicsConfig.CollisionEpsilon;\n            if (cp.m_Depth < -0.5f)\n            {\n                cp.m_Depth *= 0.5f;\n            }\n            pts.Add(cp);\n            return true;\n        }\n    }\n\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Physics/Collisions/Interactions/MyCapsuleCapsuleInteraction.cs",
    "content": "﻿#region Using Statements\n\n\n#endregion\n\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils.Utils;\n\nnamespace MinerWars.AppCode.Physics\n{\n    //////////////////////////////////////////////////////////////////////////\n    /// <summary>\n    /// capsule vs capsule interaction\n    /// </summary>\n\n    class MyRBCapsuleElementCapsuleElementInteraction : MyRBElementInteraction\n    {\n        protected override bool Interact(bool staticCollision)\n        {\n            MyCommonDebugUtils.AssertDebug(false);\n            return false;\n        }\n\n        public override MyRBElementInteraction CreateNewInstance() { return new MyRBCapsuleElementCapsuleElementInteraction(); }\n    }\n\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Physics/Collisions/Interactions/MyCapsuleTriangleMeshInteraction.cs",
    "content": "﻿#region Using Statements\n\n\n#endregion\n\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils.Utils;\n\nnamespace MinerWars.AppCode.Physics\n{\n    //////////////////////////////////////////////////////////////////////////\n    /// <summary>\n    /// capsule vs trianglemesh interaction\n    /// </summary>\n\n    class MyRBCapsuleElementTriangleMeshElementInteraction : MyRBElementInteraction\n    {\n        protected override bool Interact(bool staticCollision)\n        {\n            MyCommonDebugUtils.AssertDebug(false);\n            return false;\n        }\n\n        public override MyRBElementInteraction CreateNewInstance() { return new MyRBCapsuleElementTriangleMeshElementInteraction(); }\n    }\n\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Physics/Collisions/Interactions/MyCapsuleVoxelInteraction.cs",
    "content": "﻿#region Using Statements\n\n\n#endregion\n\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils.Utils;\n\nnamespace MinerWars.AppCode.Physics\n{\n    //////////////////////////////////////////////////////////////////////////\n    /// <summary>\n    /// capsule vs voxel interaction\n    /// </summary>\n\n    class MyRBCapsuleElementVoxelElementInteraction : MyRBElementInteraction\n    {\n        protected override bool Interact(bool staticCollision)\n        {\n            MyCommonDebugUtils.AssertDebug(false);\n            return false;\n        }\n\n        public override MyRBElementInteraction CreateNewInstance() { return new MyRBCapsuleElementVoxelElementInteraction(); }\n    }\n\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Physics/Collisions/Interactions/MyElementInteraction.cs",
    "content": "﻿#region Using Statements\n\nusing SysUtils.Utils;\n\n#endregion\n\nnamespace MinerWars.AppCode.Physics\n{\n    //////////////////////////////////////////////////////////////////////////\n    /// <summary>\n    /// Base element interaction\n    /// </summary>\n    abstract class MyRBElementInteraction: ParallelTasks.IWork\n    {\n        // These are to be overriden for each element-element interaction type.\n        protected virtual bool Interact(bool staticCollision) { return false; }\n        public virtual MyRBElementInteraction CreateNewInstance() { return null; }\n\n        public MyRBElement RBElement1 { get { return this.m_Element1; } set { this.m_Element1 = value; } }\n        public MyRBElement RBElement2 { get { return this.m_Element2; } set { this.m_Element2 = value; } }\n\n        public MyRigidBody GetRigidBody1() { return this.m_Element1.GetRigidBody(); }\n        public MyRigidBody GetRigidBody2() { return this.m_Element2.GetRigidBody(); }\n\n        public void SwapElements()\n        {\n            MyRBElement tempEl = m_Element2;\n            m_Element2 = m_Element1;\n            m_Element1 = tempEl;\n        }\n\n        public ParallelTasks.WorkOptions Options { get { return new ParallelTasks.WorkOptions() { MaximumThreads = 1 }; } }\n\n        private MyRBElement m_Element1;\n        private MyRBElement m_Element2;\n\n        public void DoWork() { Interact(false); }\n        public bool DoStaticInitialTest() { return Interact(true); }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Physics/Collisions/Interactions/MyInteractionInfo.cs",
    "content": "﻿#region Using Statements\n\nusing System.Collections.Generic;\nusing MinerWarsMath;\n\n#endregion\n\nnamespace MinerWars.AppCode.Physics\n{\n    /// <summary>\n    /// Support classes for collision detection\n    /// </summary>\n    struct MySmallCollPointInfo\n    {\n        /// <summary>\n        /// Estimated Penetration before the objects collide (can be -ve)\n        /// </summary>\n        public float m_InitialPenetration;\n\n        /// <summary>\n        /// Positions relative to body 0 (in world space)\n        /// </summary>\n        public Vector3 m_R0;\n\n        /// <summary>\n        /// positions relative to body 1 (if there is a body1)\n        /// </summary>\n        public Vector3 m_R1;\n\n        public Vector3 m_Normal;\n\n        public Vector3 m_V0;\n        public Vector3 m_V1;\n\n\n        /// <summary>\n        /// Position of intersection in world space\n        /// </summary>\n        public Vector3 m_WorldPosition;\n\n        public MySmallCollPointInfo(ref Vector3 R0, ref Vector3 R1, ref Vector3 V0, ref Vector3 V1, Vector3 normal, float initialPenetration, Vector3 worldPosition)\n        {\n            this.m_R0 = R0;\n            this.m_R1 = R1;\n            this.m_V0 = V0;\n            this.m_V1 = V1;\n            this.m_Normal = normal;\n            this.m_InitialPenetration = initialPenetration;\n            this.m_WorldPosition = worldPosition;\n        }\n\n        public MySmallCollPointInfo(Vector3 R0, Vector3 R1, Vector3 V0, Vector3 V1, Vector3 normal, float initialPenetration, Vector3 worldPosition)\n        {\n            this.m_R0 = R0;\n            this.m_R1 = R1;\n            this.m_V0 = V0;\n            this.m_V1 = V1;\n            this.m_Normal = normal;\n            this.m_InitialPenetration = initialPenetration;\n            this.m_WorldPosition = worldPosition;\n        }\n    }\n\n    /// <summary>\n    /// Contact cache\n    /// </summary>\n    class MyContactInfoCache\n    {\n        static MyContactInfoCache()\n        {\n            m_cache = new Stack<MySmallCollPointInfo[]>(CACHE_SIZE);\n            while (m_cache.Count < CACHE_SIZE)\n            {\n                m_cache.Push(new MySmallCollPointInfo[MaxLocalStackSCPI]);\n            }\n        }\n\n        public MyContactInfoCache()\n        {\n            while (m_cache.Count < CACHE_SIZE)\n            {\n                m_cache.Push(new MySmallCollPointInfo[MaxLocalStackSCPI]);\n            }\n        }\n\n        public static MySmallCollPointInfo[] SCPIStackAlloc()\n        {\n            MySmallCollPointInfo[] retVal = null;\n            lock (m_Locker)\n            {\n                if (m_cache.Count == 0)\n                {\n                    m_cache.Push(new MySmallCollPointInfo[MaxLocalStackSCPI]);\n                }\n                retVal = m_cache.Pop();\n            }\n            return retVal;\n        }\n\n        public static void FreeStackAlloc(MySmallCollPointInfo[] alloced)\n        {\n            lock (m_Locker)\n            {\n                m_cache.Push(alloced);\n            }\n        }\n\n        public const int MaxLocalStackSCPI = MyPhysicsConfig.MaxContactPoints;\n        private const int CACHE_SIZE = 64;\n        private static Stack<MySmallCollPointInfo[]> m_cache;\n        private static readonly object m_Locker = new object();\n    }\n\n    //////////////////////////////////////////////////////////////////////////\n\n    class MyCollPointInfo\n    {\n        public MySmallCollPointInfo m_Info;\n\n        /// <summary>\n        /// Estimated Penetration before the objects collide (can be -ve)\n        /// </summary>\n        public float InitialPenetration\n        {\n            get\n            {\n                return m_Info.m_InitialPenetration;\n            }\n        }\n\n        /// <summary>\n        /// Positions relative to body 0 (in world space)\n        /// </summary>\n        public Vector3 R0\n        {\n            get\n            {\n                return m_Info.m_R0;\n            }\n        }\n\n        /// <summary>\n        /// positions relative to body 1 (if there is a body1)\n        /// </summary>\n        public Vector3 R1\n        {\n            get\n            {\n                return m_Info.m_R1;\n            }\n        }\n\n        /// <summary>\n        /// Used by physics to cache desired minimum separation velocity\n        /// in the normal direction\n        /// </summary>\n        public float m_MinSeparationVel;\n\n        /// <summary>\n        /// Used by physics to cache value used in calculating impulse\n        /// </summary>\n        public float m_Denominator;\n\n        /// <summary>\n        /// Used by physics to accumulated the normal impulse\n        /// </summary>\n        public float m_AccumulatedNormalImpulse;\n\n        /// <summary>\n        /// Used by physics to accumulated the normal impulse\n        /// </summary>\n        public Vector3 m_AccumulatedFrictionImpulse;\n\n        /// <summary>\n        /// Used by physics to accumulated the normal impulse\n        /// </summary>\n        public float m_AccumulatedNormalImpulseAux;\n\n        /// <summary>\n        /// Used by physics to cache the world position (not really\n        /// needed? pretty useful in debugging!)\n        /// </summary>\n        public Vector3 m_Position;\n\n\n        public void Init(ref MySmallCollPointInfo m_Info)\n        {\n            this.m_Info = m_Info;\n            this.m_Denominator = 0.0f;\n            this.m_AccumulatedNormalImpulse = 0.0f;\n            this.m_AccumulatedNormalImpulseAux = 0.0f;\n            this.m_AccumulatedFrictionImpulse = Vector3.Zero;\n            this.m_Position = Vector3.Zero;\n            this.m_MinSeparationVel = 0.0f;\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Physics/Collisions/Interactions/MyRBInteractionModule.cs",
    "content": "﻿#region Using Statements\n\nusing System.Collections.Generic;\nusing SysUtils.Utils;\n\n#endregion\n\nnamespace MinerWars.AppCode.Physics\n{\n    //////////////////////////////////////////////////////////////////////////\n    /// <summary>\n    /// Interaction module that hadnles possible element type interactions. You register new interaction if you need to, to have pool for it\n    /// </summary>\n    class MyRBInteractionModule\n    {\n        private const int m_preAllocCount = 64;\n\n        static MyRBInteractionModule()\n        {\n            for (int i = 0; i < (int)MyRBElementType.ET_LAST; i++)\n                for (int j = 0; j < (int)MyRBElementType.ET_LAST; j++)\n                    if (i <= j)\n                        m_IslandsPool[i, j] = new List<MyRBElementInteraction>(m_preAllocCount);\n        }\n        \n        public MyRBInteractionModule()\n        {\n            Clear();\n        }\n\n        public void Init()\n        {\n            // register all interactions!\n\n            // sphere\n            MyRBSphereElementSphereElementInteraction sphsph = new MyRBSphereElementSphereElementInteraction();\n            RegisterRBElementInteraction(MyRBElementType.ET_SPHERE, MyRBElementType.ET_SPHERE, sphsph);\n\n            MyRBSphereElementBoxElementInteraction sphbox = new MyRBSphereElementBoxElementInteraction();\n            RegisterRBElementInteraction(MyRBElementType.ET_SPHERE, MyRBElementType.ET_BOX, sphbox);\n\n            MyRBSphereElementCapsuleElementInteraction sphcap = new MyRBSphereElementCapsuleElementInteraction();\n            RegisterRBElementInteraction(MyRBElementType.ET_SPHERE, MyRBElementType.ET_CAPSULE, sphcap);\n\n            MyRBSphereElementTriangleMeshElementInteraction sphtri = new MyRBSphereElementTriangleMeshElementInteraction();\n            RegisterRBElementInteraction(MyRBElementType.ET_SPHERE, MyRBElementType.ET_TRIANGLEMESH, sphtri);\n\n            MyRBSphereElementVoxelElementInteraction sphvox = new MyRBSphereElementVoxelElementInteraction();\n            RegisterRBElementInteraction(MyRBElementType.ET_SPHERE, MyRBElementType.ET_VOXEL, sphvox);\n\n            // box\n            MyRBBoxElementBoxElementInteraction boxbox = new MyRBBoxElementBoxElementInteraction();\n            RegisterRBElementInteraction(MyRBElementType.ET_BOX, MyRBElementType.ET_BOX, boxbox);\n\n            MyRBBoxElementCapsuleElementInteraction boxcap = new MyRBBoxElementCapsuleElementInteraction();\n            RegisterRBElementInteraction(MyRBElementType.ET_BOX, MyRBElementType.ET_CAPSULE, boxcap);\n\n            MyRBBoxElementTriangleMeshElementInteraction boxtri = new MyRBBoxElementTriangleMeshElementInteraction();\n            RegisterRBElementInteraction(MyRBElementType.ET_BOX, MyRBElementType.ET_TRIANGLEMESH, boxtri);\n\n            MyRBBoxElementVoxelElementInteraction boxvox = new MyRBBoxElementVoxelElementInteraction();\n            RegisterRBElementInteraction(MyRBElementType.ET_BOX, MyRBElementType.ET_VOXEL, boxvox);\n\n            // capsule\n            MyRBCapsuleElementCapsuleElementInteraction capcap = new MyRBCapsuleElementCapsuleElementInteraction();\n            RegisterRBElementInteraction(MyRBElementType.ET_CAPSULE, MyRBElementType.ET_CAPSULE, capcap);\n\n            MyRBCapsuleElementTriangleMeshElementInteraction captri = new MyRBCapsuleElementTriangleMeshElementInteraction();\n            RegisterRBElementInteraction(MyRBElementType.ET_CAPSULE, MyRBElementType.ET_TRIANGLEMESH, captri);\n\n            MyRBCapsuleElementVoxelElementInteraction capvox = new MyRBCapsuleElementVoxelElementInteraction();\n            RegisterRBElementInteraction(MyRBElementType.ET_CAPSULE, MyRBElementType.ET_VOXEL, capvox);\n        }\n\n        public void Destroy()\n        {\n            Clear();\n        }\n\n        private void Clear()\n        {\n            for (int i = 0; i < (int)MyRBElementType.ET_LAST; i++)\n                for (int j = 0; j < (int)MyRBElementType.ET_LAST; j++)\n                {\n                    if (i <= j)\n                        m_IslandsPool[i, j].Clear();\n                    m_IslandsPoolStatic[i, j] = null;\n                }\n        }\n\n        /// <summary>\n        /// find interaction method from pool\n        /// </summary>\n\n        public MyRBElementInteraction FindRBElementInteractionForStaticTesting(MyRBElementType type1, MyRBElementType type2)\n        {\n            int t1 = (int)type1;\n            int t2 = (int)type2;\n\n            MyRBElementInteraction intrList = null;\n            if (t1 < t2)\n                intrList = m_IslandsPoolStatic[t1, t2];\n            else\n                intrList = m_IslandsPoolStatic[t2, t1];\n\n            return intrList;\n        }\n\n\n        /// <summary>\n        /// Do static Test of intersection\n        /// </summary>\n        public bool DoStaticTestInteraction(MyRBElement el1, MyRBElement el2)\n        {\n\n            MyRBElementInteraction myElemInteraction = FindRBElementInteractionForStaticTesting(el1.GetElementType(), el2.GetElementType());\n            if (myElemInteraction != null)\n            {\n                myElemInteraction.RBElement1 = el1;\n                myElemInteraction.RBElement2 = el2;\n                return myElemInteraction.DoStaticInitialTest();\n            }\n            return false;\n        }\n\n        /// <summary>\n        /// Registering the interation between 2 rbelement types\n        /// </summary>\n        public void RegisterRBElementInteraction(MyRBElementType type1, MyRBElementType type2, MyRBElementInteraction intr)\n        {\n            int t1 = (int)type1;\n            int t2 = (int)type2;\n\n            List<MyRBElementInteraction> intrList = null;\n            if (t1 < t2)\n            {\n                intrList = m_IslandsPool[t1, t2];\n                m_IslandsPoolStatic[t1, t2] = intr.CreateNewInstance();\n            }\n            else\n            {\n                intrList = m_IslandsPool[t2, t1];\n                m_IslandsPoolStatic[t2, t1] = intr.CreateNewInstance(); \n            }\n\n            intrList.Capacity = m_preAllocCount;\n            intrList.Add(intr);\n\n            for (int i = 1; i < m_preAllocCount; i++)\n            {\n                MyRBElementInteraction ins = intr.CreateNewInstance();\n                intrList.Add(ins);\n            }\n\n        }\n\n        /// <summary>\n        /// Looks if interaction between those elements already exist\n        /// </summary>\n        public MyRBElementInteraction FindRBElementInteraction(MyRBElement el1, MyRBElement el2)\n        {\n            // look for interaction on element\n            for (int i = 0; i < el1.GetRBElementInteractions().Count; i++)\n            {\n                MyRBElementInteraction intr = el1.GetRBElementInteractions()[i];\n                if (intr.RBElement1 == el2 || intr.RBElement2 == el2)\n                    return intr;\n            }\n\n            return null;\n        }\n\n\n        /// <summary>\n        /// Adds interaction between 2 given elements\n        /// </summary>\n        public MyRBElementInteraction AddRBElementInteraction(MyRBElement el1, MyRBElement el2)\n        {\n            // get it\n            int t1 = (int)el1.GetElementType();\n            int t2 = (int)el2.GetElementType();\n            List<MyRBElementInteraction> intrList = null;\n            if (t1 < t2)\n                intrList = m_IslandsPool[t1, t2];\n            else\n                intrList = m_IslandsPool[t2, t1];\n\n            //pada to jinak\n            if (intrList.Count == 0)\n                return null; \n\n            MyCommonDebugUtils.AssertDebug(intrList.Count != 0);\n\n            if (intrList.Count == 1)\n            {\n                MyRBElementInteraction ins = intrList[0].CreateNewInstance();\n                intrList.Add(ins);\n            }\n\n            MyRBElementInteraction intr = intrList[intrList.Count - 1];\n            intrList.RemoveAt(intrList.Count - 1);\n\n            intr.RBElement1 = el1;\n            intr.RBElement2 = el2;\n\n            el1.GetRBElementInteractions().Add(intr);\n            el2.GetRBElementInteractions().Add(intr);\n\n            return intr;\n        }\n\n        /// <summary>\n        /// Removes interaction between these 2 elements\n        /// </summary>\n        public void RemoveRBElementInteraction(MyRBElement el1, MyRBElement el2)\n        {\n            if (el1 != null)\n            {\n                // look for interaction on element\n                for (int i = 0; i < el1.GetRBElementInteractions().Count; i++)\n                {\n                    MyRBElementInteraction intr = el1.GetRBElementInteractions()[i];\n                    if ((intr.RBElement1 == el1 && intr.RBElement2 == el2) || (intr.RBElement1 == el2 && intr.RBElement2 == el1))\n                    {\n                        // add it back\n                        int t1 = (int)el1.GetElementType();\n                        int t2 = (int)el2.GetElementType();\n                        List<MyRBElementInteraction> intrList = null;\n                        if (t1 < t2)\n                            intrList = m_IslandsPool[t1, t2];\n                        else\n                            intrList = m_IslandsPool[t2, t1];\n                        intrList.Add(intr);\n\n                        el1.GetRBElementInteractions().Remove(intr);\n                        break;\n                    }\n                }\n            }\n\n            if (el2 != null)\n            {\n                for (int i = 0; i < el2.GetRBElementInteractions().Count; i++)\n                {\n                    MyRBElementInteraction intr = el2.GetRBElementInteractions()[i];\n                    if ((intr.RBElement1 == el1 && intr.RBElement2 == el2) || (intr.RBElement1 == el2 && intr.RBElement2 == el1))\n                    {\n                        intr.RBElement1 = null;\n                        intr.RBElement2 = null;\n\n                        el2.GetRBElementInteractions().Remove(intr);\n                        break;\n                    }\n                }\n            }\n        }\n\n        private static List<MyRBElementInteraction>[,] m_IslandsPool = new List<MyRBElementInteraction>[(int)MyRBElementType.ET_LAST, (int)MyRBElementType.ET_LAST];\n        private static MyRBElementInteraction[,] m_IslandsPoolStatic = new MyRBElementInteraction[(int)MyRBElementType.ET_LAST, (int)MyRBElementType.ET_LAST];\n    }\n\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Physics/Collisions/Interactions/MySensorInteraction.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Diagnostics;\nusing KeenSoftwareHouse.Library.Parallelization;\n\nnamespace MinerWars.AppCode.Physics\n{\n    public enum MySensorInteractionEnum\n    {\n        /// <summary>\n        /// Unknown\n        /// </summary>\n        SI_UNKNOWN,\n        /// <summary>\n        /// Sphere vs sphere for sphere sensor\n        /// </summary>\n        SI_SPHERE_SPHERE,\n        /// <summary>\n        /// Sphere vs box for sphere sensor\n        /// </summary>\n        SI_SPHERE_BOX,\n        /// <summary>\n        /// Sphere vs box for box sensor\n        /// </summary>\n        SI_BOX_SPHERE,\n        /// <summary>\n        /// Box vs box for box sensor\n        /// </summary>\n        SI_BOX_BOX,\n        /// <summary>\n        /// Sphere vs other element type for sphere sensor\n        /// </summary>\n        SI_SPHERE_OTHER,\n        /// <summary>\n        /// Box vs other elemnt type for box sensor\n        /// </summary>\n        SI_BOX_OTHER,\n    }\n\n    /// <summary>\n    /// Sensor interaction\n    /// </summary>\n    abstract class MySensorInteraction: ParallelTasks.IWork\n    {\n        private MyNoArgsDelegate m_onRigidBodyDeactivatedEventHandler;\n\n        public MySensorInteraction()\n        {\n            m_SensorElement = null;\n            m_RBElement = null;\n            m_Guid = 0;\n            m_IsInside = false;\n            m_onRigidBodyDeactivatedEventHandler = new MyNoArgsDelegate(OnRigidBodyDeactivated);\n        }\n\n        public virtual void DoWork()\n        {\n        }\n\n        public ParallelTasks.WorkOptions Options { get { return new ParallelTasks.WorkOptions() { MaximumThreads = 1 }; } }\n\n        public virtual MySensorInteractionEnum GetInteractionType() { return MySensorInteractionEnum.SI_UNKNOWN; }\n\n        public void Init(MySensorElement sensorElement, MyRBElement rbElement)\n        {\n            Debug.Assert(rbElement.GetRigidBody() != null);\n            Debug.Assert(sensorElement.Sensor != null);\n            m_SensorElement = sensorElement;\n            m_RBElement = rbElement;            \n\n            int guid1 = sensorElement.GUID;\n            int guid2 = rbElement.GUID;\n\n            if (guid1 > guid2)\n            {\n                int tm = guid2;\n                guid2 = guid1;\n                guid1 = tm;\n            }\n\n            m_Guid = guid1 + (guid2 << 16);\n\n            m_IsInside = false;\n            m_IsInUse = true;\n            m_RBElement.GetRigidBody().OnDeactivated.Event += m_onRigidBodyDeactivatedEventHandler;\n        }\n\n        private void OnRigidBodyDeactivated()\n        {\n            Debug.Assert(m_SensorElement != null);\n            Debug.Assert(m_SensorElement.Sensor != null);\n            if (m_SensorElement.Sensor != null)\n            {\n                m_SensorElement.Sensor.GetHandler().OnLeave(m_SensorElement.Sensor, m_RBElement.GetRigidBody(), m_RBElement);\n                m_SensorElement.Sensor.m_Interactions.Remove(m_Guid);\n            }\n            MyPhysics.physicsSystem.GetSensorInteractionModule().RemoveSensorInteraction(this);\n        }\n\n        public void Close() \n        {\n            m_RBElement.GetRigidBody().OnDeactivated.Event -= m_onRigidBodyDeactivatedEventHandler;\n\n            m_SensorElement = null;\n            m_RBElement = null;\n            m_Guid = 0;\n            m_IsInUse = false;\n        }\n        \n        public MySensorElement m_SensorElement;\n        public MyRBElement m_RBElement;\n        public int m_Guid;\n        public bool m_IsInside;\n        public bool m_IsInUse;        \n        //public List<MyAddRemoveFrom> m_AddedRemoveFrom = new List<MyAddRemoveFrom>();        \n    }\n\n    //struct MyAddRemoveFrom \n    //{        \n    //    public long CheckCount;\n    //    public MyAddRemoveFromEnum AddRemoveFrom;\n    //    public uint Guid;\n    //    public uint CurrentGuid;\n\n    //    public MyAddRemoveFrom(long checkCount, MyAddRemoveFromEnum addRemoveFrom, uint guid, uint currentGuid) \n    //    {            \n    //        CheckCount = checkCount;\n    //        AddRemoveFrom = addRemoveFrom;\n    //        Guid = guid;\n    //        CurrentGuid = currentGuid;\n    //    }\n    //}\n\n    //enum MyAddRemoveFromEnum\n    //{\n    //    Add,\n    //    RemoveWhenRemoveSensor,\n    //    RemoveFromCurrent,\n    //    RemoveWhenNotInside,\n    //}\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Physics/Collisions/Interactions/MySphereBoxInteraction.cs",
    "content": "﻿#region Using Statements\n\nusing MinerWarsMath;\nusing MinerWars.CommonLIB.AppCode.Utils;\n\n#endregion\n\nnamespace MinerWars.AppCode.Physics\n{\n    //////////////////////////////////////////////////////////////////////////\n    /// <summary>\n    /// Sphere vs box interaction\n    /// </summary>\n\n    class MyRBSphereElementBoxElementInteraction : MyRBElementInteraction\n    {\n        public override MyRBElementInteraction CreateNewInstance() { return new MyRBSphereElementBoxElementInteraction(); }\n\n        protected override bool Interact(bool staticCollision)\n        {\n            if (!staticCollision && GetRigidBody1().IsStatic() && GetRigidBody2().IsStatic()) return false;\n\n            MyRBBoxElement box = null;\n            MyRBSphereElement sphere = null;\n            if (RBElement1.GetElementType() == MyRBElementType.ET_BOX)\n                SwapElements();\n\n            box = (MyRBBoxElement)RBElement2;\n            sphere = (MyRBSphereElement)RBElement1;\n\n            Matrix boxMatrix = box.GetGlobalTransformation();\n            Vector3 sphereCenter = sphere.GetGlobalTransformation().Translation;\n\n            Matrix invBoxMatrix = Matrix.Invert(boxMatrix);\n\n            Vector3 boxLocalsphereCenter = Vector3.Transform(sphereCenter, invBoxMatrix);\n\n            bool penetration = false;\n            Vector3 normal = new Vector3();\n            Vector3 closestPos = new Vector3();\n            uint customData = 0;\n\n            box.GetClosestPoint(boxLocalsphereCenter, ref closestPos, ref normal, ref penetration, ref customData);\n\n            closestPos = Vector3.Transform(closestPos, boxMatrix);\n\n            normal = -Vector3.TransformNormal(normal, boxMatrix);\n            normal = MyMwcUtils.Normalize(normal);\n\n            float vLength = (sphereCenter - closestPos).Length();\n\n            if (staticCollision)\n            {\n                return vLength > 0 && vLength < sphere.Radius;\n            }\n            else\n            {\n                float eps = MyPhysics.physicsSystem.GetRigidBodyModule().CollisionEpsilon;\n                float dt = MyPhysics.physicsSystem.GetRigidBodyModule().CurrentTimeStep;\n\n                Vector3 pointVelocity1 = new Vector3();\n                Vector3 pointVelocity2 = new Vector3();\n\n                GetRigidBody1().GetGlobalPointVelocity(ref closestPos, out pointVelocity1);\n                GetRigidBody2().GetGlobalPointVelocity(ref closestPos, out pointVelocity2);\n\n                float dynEps = 0;\n                if (vLength >= eps)\n                {\n                    float dot = Vector3.Dot(pointVelocity1 - pointVelocity2, normal) * dt;\n                    if (dot >= 0)\n                    {\n                        dynEps = dot;\n                    }\n                }\n\n                float radius = sphere.Radius;\n\n                //Second part of condition commented due to 5968: Bug B - rocket passing through prefab\n                //Does not seem to have any reason to be there\n                if (vLength > 0 /*&& vLength < (radius + eps + dynEps)*/)\n                {\n                    float error = vLength - (radius + 0.5f * eps);\n                    //error = System.Math.Min(error, eps);\n\n                    MySmallCollPointInfo[] collInfo = MyContactInfoCache.SCPIStackAlloc();\n\n                    collInfo[0] = new MySmallCollPointInfo(closestPos - sphereCenter, closestPos - boxMatrix.Translation, GetRigidBody1().LinearVelocity, GetRigidBody2().LinearVelocity, normal, error, closestPos);\n\n                    MyPhysics.physicsSystem.GetContactConstraintModule().AddContactConstraint(this, collInfo, 1);\n\n                    MyContactInfoCache.FreeStackAlloc(collInfo);\n                }\n            }\n            return false;\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Physics/Collisions/Interactions/MySphereBoxSensorInteraction.cs",
    "content": "﻿using MinerWarsMath;\nusing System;\n\nnamespace MinerWars.AppCode.Physics\n{\n    class MySphereBoxSensorInteraction : MySensorInteraction\n    {\n        /// <summary>\n        /// Sphere vs box sensor interaction\n        /// </summary>\n\n        public MySphereBoxSensorInteraction()\n        {\n        }\n\n        public override MySensorInteractionEnum GetInteractionType()\n        {\n            return MySensorInteractionEnum.SI_SPHERE_BOX;\n        }\n\n        public override void DoWork()\n        {\n            MyRBBoxElement box = (MyRBBoxElement) m_RBElement; \n            MySphereSensorElement sphere = (MySphereSensorElement) m_SensorElement;            \n\n            Matrix boxMatrix = box.GetGlobalTransformation();\n            Vector3 sphereCenter = sphere.GetGlobalTransformation().Translation;\n\n            Matrix invBoxMatrix = Matrix.Invert(boxMatrix);\n\n            Vector3 boxLocalsphereCenter = Vector3.Transform(sphereCenter, invBoxMatrix);\n\n            bool penetration = false;\n            Vector3 normal =  new Vector3();\n            Vector3 closestPos =  new Vector3();\n            uint customData = 0;\n\n            box.GetClosestPoint(boxLocalsphereCenter, ref closestPos, ref normal, ref penetration, ref customData);\n\n            if (penetration)\n            {\n                m_IsInside = true;\n                return;\n            }\n\n            closestPos = Vector3.Transform(closestPos, boxMatrix);            \n\n            float vLength = (sphereCenter - closestPos).LengthSquared();\n\n            if (vLength <= sphere.Radius * sphere.Radius)\n            {\n                if (vLength <= (sphere.Radius / 2f) * (sphere.Radius / 2f) || sphere.SpecialDetectingAngle == null) \n                {\n                    m_IsInside = true;\n                }\n                else if (sphere.SpecialDetectingAngle != null)\n                {\n                    Vector3 normalizeDirectionToRBElement = Vector3.Normalize(boxMatrix.Translation - sphereCenter);\n                    float cosAngle = Vector3.Dot(normalizeDirectionToRBElement, sphere.GetGlobalTransformation().Forward);\n                    m_IsInside = Math.Abs(cosAngle) >= sphere.SpecialDetectingAngle.Value;\n                }                \n            }\n            else\n            {\n                m_IsInside = false;\n            }            \n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Physics/Collisions/Interactions/MySphereCapsuleInteraction.cs",
    "content": "﻿#region Using Statements\n\n\n#endregion\n\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils.Utils;\n\nnamespace MinerWars.AppCode.Physics\n{\n    //////////////////////////////////////////////////////////////////////////\n    /// <summary>\n    /// Sphere vs capsule interaction\n    /// </summary>\n\n    class MyRBSphereElementCapsuleElementInteraction : MyRBElementInteraction\n    {\n        protected override bool Interact(bool staticCollision)\n        {\n            MyCommonDebugUtils.AssertDebug(false);\n            return false;\n        }\n\n        public override MyRBElementInteraction CreateNewInstance() { return new MyRBSphereElementCapsuleElementInteraction(); }\n    }\n\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Physics/Collisions/Interactions/MySphereOtherSensorInteraction.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\n\nnamespace MinerWars.AppCode.Physics\n{\n    class MySphereOtherSensorInteraction : MySensorInteraction\n    {\n        /// <summary>\n        /// Sphere vs other element type sensor interaction\n        /// </summary>\n\n        public MySphereOtherSensorInteraction()\n        {\n        }\n\n        public override MySensorInteractionEnum GetInteractionType()\n        {\n            return MySensorInteractionEnum.SI_SPHERE_OTHER;\n        }\n\n        public override void DoWork()\n        {\n            MySphereSensorElement sphere = (MySphereSensorElement) m_SensorElement;\n\n            BoundingSphere seSphere = new BoundingSphere(sphere.GetGlobalTransformation().Translation, sphere.Radius);\n            BoundingBox oeAABB = m_RBElement.GetWorldSpaceAABB();\n            seSphere.Intersects(ref oeAABB, out m_IsInside);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Physics/Collisions/Interactions/MySphereSphereInteraction.cs",
    "content": "﻿#region Using Statements\n\nusing MinerWarsMath;\nusing MinerWars.CommonLIB.AppCode.Utils;\n\n#endregion\n\nnamespace MinerWars.AppCode.Physics\n{\n    //////////////////////////////////////////////////////////////////////////\n    /// <summary>\n    /// Sphere vs sphere interaction\n    /// </summary>\n\n    class MyRBSphereElementSphereElementInteraction : MyRBElementInteraction\n    {\n        public override MyRBElementInteraction CreateNewInstance() { return new MyRBSphereElementSphereElementInteraction(); }\n\n        protected override bool Interact(bool staticCollision)\n        {\n            if (!staticCollision && GetRigidBody1().IsStatic() && GetRigidBody2().IsStatic()) return false;\n\n            MyRBSphereElement sphere1 = (MyRBSphereElement)RBElement1;\n            MyRBSphereElement sphere2 = (MyRBSphereElement)RBElement2;\n\n            Matrix matrix1 = sphere1.GetGlobalTransformation();\n            Matrix matrix2 = sphere2.GetGlobalTransformation();\n\n            Vector3 p1 = matrix1.Translation;\n            Vector3 p2 = matrix2.Translation;\n            Vector3 d = p2 - p1;\n            float length = d.Length();\n\n            float contactRadius = sphere1.Radius + sphere2.Radius;\n\n            float eps = MyPhysics.physicsSystem.GetRigidBodyModule().CollisionEpsilon;\n\n            if (staticCollision)\n            {\n                return length < contactRadius;\n            }\n            \n            // from now on we handle dynamic collision\n            float dynEps = 0;\n            if (!staticCollision && length > eps)\n            {\n                dynEps = Vector3.Dot(GetRigidBody1().LinearVelocity - GetRigidBody2().LinearVelocity, d) / length * MyPhysics.physicsSystem.GetRigidBodyModule().CurrentTimeStep;\n                if (dynEps < 0)\n                    dynEps = 0;\n            }\n\n            if (length > MyMwcMathConstants.EPSILON && length < contactRadius + eps + dynEps)\n            {\n                Vector3 n = MyMwcUtils.Normalize(d);\n                Vector3 p = p1 + n * (sphere1.Radius + (length - contactRadius) * 0.5f);\n                float error = length - (contactRadius + 0.5f * eps);\n\n                MySmallCollPointInfo[] collInfo = MyContactInfoCache.SCPIStackAlloc();\n                collInfo[0] = new MySmallCollPointInfo(p - matrix1.Translation, p - matrix2.Translation, GetRigidBody1().LinearVelocity, GetRigidBody2().LinearVelocity, n, error, p);\n\n                MyPhysics.physicsSystem.GetContactConstraintModule().AddContactConstraint(this, collInfo, 1);\n\n                MyContactInfoCache.FreeStackAlloc(collInfo);\n\n                return true;\n            }\n            return false;\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Physics/Collisions/Interactions/MySphereSphereSensorInteraction.cs",
    "content": "﻿using MinerWarsMath;\nusing System;\nnamespace MinerWars.AppCode.Physics\n{\n    /// <summary>\n    /// Sphere vs sphere sensor interaction\n    /// </summary>\n    class MySphereSphereSensorInteraction : MySensorInteraction\n    {\n        public MySphereSphereSensorInteraction()\n        {\n        }\n\n        public override MySensorInteractionEnum GetInteractionType()\n        {\n            return MySensorInteractionEnum.SI_SPHERE_SPHERE;\n        }\n\n        public override void DoWork()\n        {\n            Matrix sensorMatrix = m_SensorElement.GetGlobalTransformation();\n            Matrix elementMatrix = m_RBElement.GetGlobalTransformation();\n\n            MySphereSensorElement sphereSensorElement = (MySphereSensorElement)m_SensorElement;\n\n            float sradius = sphereSensorElement.Radius;\n            float eradius = ((MyRBSphereElement) m_RBElement).Radius;\n\n            Vector3 dv = sensorMatrix.Translation - elementMatrix.Translation;\n\n            float distance = dv.LengthSquared();\n\n            if (distance <= (sradius + eradius) * (sradius + eradius))\n            {\n                if (sphereSensorElement.SpecialDetectingAngle == null || distance <= ((sradius + eradius) / 2f) * ((sradius + eradius) / 2f))\n                {\n                    m_IsInside = true;\n                }\n                else if (sphereSensorElement.SpecialDetectingAngle != null)\n                {\n                    Vector3 normalizeDirectionToRBElement = Vector3.Normalize(elementMatrix.Translation - sensorMatrix.Translation);\n                    float cosAngle = Vector3.Dot(normalizeDirectionToRBElement, sensorMatrix.Forward);\n                    m_IsInside = Math.Abs(cosAngle) >= sphereSensorElement.SpecialDetectingAngle.Value;\n                }                \n            }\n            else\n            {\n                m_IsInside = false;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Physics/Collisions/Interactions/MySphereTriangleMeshInteraction.cs",
    "content": "﻿#region Using Statements\n\n#endregion\n\nusing System.Collections.Generic;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Models;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing MinerWars.AppCode.Game.Entities;\n\nnamespace MinerWars.AppCode.Physics\n{\n    //////////////////////////////////////////////////////////////////////////\n    /// <summary>\n    /// Sphere vs trianglemesh interaction\n    /// </summary>\n    class MyRBSphereElementTriangleMeshElementInteraction : MyRBElementInteraction\n    {\n        public override MyRBElementInteraction CreateNewInstance() { return new MyRBSphereElementTriangleMeshElementInteraction(); }\n\n        const int MAX_AVAILABLE_ITERATION = 16;\n\n        protected override bool Interact(bool staticCollision)\n        {\n            if (RBElement1.GetElementType() != MyRBElementType.ET_SPHERE)\n                SwapElements();\n\n            Matrix matrix0 = RBElement1.GetGlobalTransformation();\n            Matrix matrix1 = RBElement2.GetGlobalTransformation();\n\n            float sphereRadius = ((MyRBSphereElement)RBElement1).Radius;\n\n            Vector3 body0Pos = matrix0.Translation; // sphere pos\n            Vector3 body1Pos = matrix1.Translation;\n\n            Matrix tempMat1 = matrix1;\n\n            Matrix inverseMatrix1 = Matrix.Invert(tempMat1);\n\n            MyModel model = ((RBElement1.Flags & MyElementFlag.EF_MODEL_PREFER_LOD0) > 0 ? ((MyRBTriangleMeshElement)RBElement2).ModelLOD0 : ((MyRBTriangleMeshElement)RBElement2).Model);\n\n            if (staticCollision)\n            {\n                BoundingSphere bsphere = new BoundingSphere(body0Pos, sphereRadius);\n                return model.GetTrianglePruningStructure().GetIntersectionWithSphere(((MinerWars.AppCode.Game.Physics.MyPhysicsBody)RBElement2.GetRigidBody().m_UserData).Entity, ref bsphere);\n            }\n            else\n            {\n                float dt = MyPhysics.physicsSystem.GetRigidBodyModule().CurrentTimeStep;\n                float epsilon = MyPhysics.physicsSystem.GetRigidBodyModule().CollisionEpsilon;\n\n                MySmallCollPointInfo[] collPtArray = MyContactInfoCache.SCPIStackAlloc();\n                int numCollPts = 0;\n\n                Vector3 collNormal = Vector3.Zero;\n\n                int optimalIterationCount = (int)(GetRigidBody1().LinearVelocity.Length() * dt / (sphereRadius * 2)) + 1;\n                //PZ: after consultation with petrM 1-4 iteration will be just ok\n                int maxIndex = (int)MathHelper.Min(optimalIterationCount, MAX_AVAILABLE_ITERATION);\n                //float speed = GetRigidBody1().LinearVelocity.Length();\n\n                Vector3 velocityAdd = GetRigidBody1().LinearVelocity * dt / (float)maxIndex;\n                float velocityAddLength = velocityAdd.Length();\n\n                List<MyTriangle_Vertex_Normal> triangles = MyPhysics.physicsSystem.GetContactConstraintModule().GetTriangleCache().GetFreeTriangleList(this);\n\n                //PZ: we will try to interpolate sphere position during this tick\n                //we have to have at least one iteration\n                for (int index = 0; index < maxIndex; index++)\n                {\n                    //PZ: from starting point \n                    Vector3 interpolatedPosition = body0Pos + velocityAdd * index;\n\n                    // Deano : get the spheres centers in triangleVertexes mesh space\n                    Vector3 newSphereCen = Vector3.Transform(interpolatedPosition, inverseMatrix1);\n\n                    //  Transform sphere from world space to object space                        \n                    BoundingSphere newSphereInObjectSpace = new BoundingSphere(newSphereCen, sphereRadius + velocityAddLength + epsilon);\n                    BoundingBox newAABBInObjectSpace = BoundingBox.CreateFromSphere(newSphereInObjectSpace);\n\n                    model.GetTrianglePruningStructure().GetTrianglesIntersectingAABB(ref newAABBInObjectSpace, triangles, triangles.Capacity);\n\n                    for (int i = 0; i < triangles.Count; i++)\n                    {\n                        MyTriangle_Vertex_Normal triangle = triangles[i];\n\n                        // skip too narrow triangles causing instability\n                        /*    This must be done in preprocessor!\n                        if ((triangle.Vertexes.Vertex0 - triangle.Vertexes.Vertex1).LengthSquared() < MyPhysicsConfig.TriangleEpsilon)\n                        {\n                            continue;\n                        }\n\n                        if ((triangle.Vertexes.Vertex1 - triangle.Vertexes.Vertex2).LengthSquared() < MyPhysicsConfig.TriangleEpsilon)\n                        {\n                            continue;\n                        }\n\n                        if ((triangle.Vertexes.Vertex0 - triangle.Vertexes.Vertex2).LengthSquared() < MyPhysicsConfig.TriangleEpsilon)\n                        {\n                            continue;\n                        }        */\n\n                        MyPlane plane = new MyPlane(ref triangle.Vertexes);\n\n                        Vector3? pt = MyUtils.GetSphereTriangleIntersection(ref newSphereInObjectSpace, ref plane, ref triangle.Vertexes);\n                        if (pt == null)\n                            continue;\n\n                        pt = Vector3.Transform(pt.Value, matrix1);\n\n                        Vector3 collisionN = -plane.Normal;\n                        collisionN = Vector3.TransformNormal(collisionN, matrix1);\n\n                        // skip triangle in case the normal is in wrong dir (narrow walls)  \n                        Vector3 tempV = (interpolatedPosition - pt.Value);\n                        if (Vector3.Dot(collisionN, tempV) >= 0.8f * tempV.Length())  // equivalent to if (Vector3.Dot(collisionN, Vector3.Normalize(tempV)) > 0.8f)\n                        {\n                            continue;\n                        }\n\n                        float depth = Vector3.Distance(pt.Value, interpolatedPosition) - sphereRadius;\n\n                        if (numCollPts < MyPhysicsConfig.MaxContactPoints)\n                        {\n                            // since impulse get applied at the old position\n                            Vector3 p2 = pt.Value; // body0Pos - sphereRadius * 1.1f * collisionN;                                    \n\n                            collPtArray[numCollPts++] = new MySmallCollPointInfo(p2 - interpolatedPosition, p2 - body1Pos, GetRigidBody1().LinearVelocity, GetRigidBody2().LinearVelocity, collisionN, depth, p2);\n\n                            /*\n                            MyDebugDraw.AddDrawTriangle(\n                                Vector3.Transform(triangle.Vertexes.Vertex0, matrix1),\n                                Vector3.Transform(triangle.Vertexes.Vertex1, matrix1),\n                                Vector3.Transform(triangle.Vertexes.Vertex2, matrix1),\n                                Color.Red);\n                            */\n                        }\n\n                        collNormal += collisionN;\n                    }\n\n                    if (numCollPts > 0) // break if we catch any triangles in this iteration\n                        break;\n\n                }\n                if (numCollPts > 0)\n                {\n                    MyPhysics.physicsSystem.GetContactConstraintModule().AddContactConstraint(this, collPtArray, numCollPts);\n                }\n                MyPhysics.physicsSystem.GetContactConstraintModule().GetTriangleCache().PushBackTriangleList(triangles);\n                MyContactInfoCache.FreeStackAlloc(collPtArray);\n            }\n            return false;\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Physics/Collisions/Interactions/MySphereVoxelInteraction.cs",
    "content": "﻿#region Using Statements\nusing System.Collections.Generic;\nusing SysUtils.Utils;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Models;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWars.AppCode.Game.Voxels;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing KeenSoftwareHouse.Library.Memory;\nusing SysUtils;\n\n#endregion\n\nnamespace MinerWars.AppCode.Physics\n{\n    //////////////////////////////////////////////////////////////////////////\n    /// <summary>\n    /// Sphere vs voxel interaction\n    /// </summary>\n    class MyRBSphereElementVoxelElementInteraction : MyRBElementInteraction\n    {\n        public override MyRBElementInteraction CreateNewInstance() { return new MyRBSphereElementVoxelElementInteraction(); }\n\n        protected override bool Interact(bool staticCollision)\n        {\n            if (staticCollision)\n            {\n                //MyCommonDebugUtils.AssertDebug(false, \"Sphere-voxel static interaction called! And that's wrong.\");\n            }\n            else\n            {\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"SphereVoxelInteraction\");\n\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Transformations\");\n\n                if (RBElement1.GetElementType() != MyRBElementType.ET_SPHERE)\n                    SwapElements();\n\n                Matrix matrix0 = RBElement1.GetGlobalTransformation();\n                Matrix matrix1 = RBElement2.GetGlobalTransformation();\n\n                float sphereRadius = ((MyRBSphereElement)RBElement1).Radius;\n\n                Vector3 body0Pos = matrix0.Translation; // sphere pos\n                Vector3 body1Pos = matrix1.Translation;\n\n                float dt = MyPhysics.physicsSystem.GetRigidBodyModule().CurrentTimeStep;\n                float epsylon = MyPhysics.physicsSystem.GetRigidBodyModule().CollisionEpsilon;\n\n                Vector3 newBody0Pos = matrix0.Translation + GetRigidBody1().LinearVelocity * dt;\n\n                float sphereTolR = epsylon + sphereRadius;\n                float sphereTolR2 = sphereTolR * sphereTolR;\n\n                MySmallCollPointInfo[] collPtArray = MyContactInfoCache.SCPIStackAlloc();\n                int numCollPts = 0;\n\n                Vector3 collNormal = Vector3.Zero;\n\n                //var colDetThroughVoxels = MyConstants.SPHERE_VOXELMAP_COLDET_THROUGH_VOXELS;\n                var colDetThroughVoxels = !GetRigidBody1().ReadFlag(RigidBodyFlag.RBF_COLDET_THROUGH_VOXEL_TRIANGLES);\n\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n                if (colDetThroughVoxels)\n                {\n                    MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"colDetThroughVoxels\");\n\n                    BoundingSphere newSphere;\n                    newSphere.Center = newBody0Pos;\n                    newSphere.Radius = sphereRadius;\n\n                    MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"PoolList.Get\");\n                    using (var voxelMapsFounded = PoolList<MyVoxelMap>.Get())\n                    {\n                        MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"GetListOfVoxelMapsWhoseBoundingSphereIntersectsSphere\");\n\n                        MyVoxelMaps.GetListOfVoxelMapsWhoseBoundingSphereIntersectsSphere(ref newSphere, voxelMapsFounded, null);\n\n                        MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock(\"foreach (MyVoxelMap voxelMap in voxelMapsFounded)\");\n                        foreach (MyVoxelMap voxelMap in voxelMapsFounded)\n                        {\n                            if (voxelMap != null)\n                            {\n                                //  We will iterate only voxels contained in the bounding box of new sphere, so here we get min/max corned in voxel units\n                                MyMwcVector3Int minCorner = voxelMap.GetVoxelCoordinateFromMeters(new Vector3(\n                                    newSphere.Center.X - newSphere.Radius,\n                                    newSphere.Center.Y - newSphere.Radius,\n                                    newSphere.Center.Z - newSphere.Radius));\n                                MyMwcVector3Int maxCorner = voxelMap.GetVoxelCoordinateFromMeters(new Vector3(\n                                    newSphere.Center.X + newSphere.Radius,\n                                    newSphere.Center.Y + newSphere.Radius,\n                                    newSphere.Center.Z + newSphere.Radius));\n                                voxelMap.FixVoxelCoord(ref minCorner);\n                                voxelMap.FixVoxelCoord(ref maxCorner);\n\n                                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"for loop\");\n\n                                MyMwcVector3Int tempVoxelCoord;\n                                for (tempVoxelCoord.X = minCorner.X; tempVoxelCoord.X <= maxCorner.X; tempVoxelCoord.X++)\n                                {\n                                    for (tempVoxelCoord.Y = minCorner.Y; tempVoxelCoord.Y <= maxCorner.Y; tempVoxelCoord.Y++)\n                                    {\n                                        for (tempVoxelCoord.Z = minCorner.Z; tempVoxelCoord.Z <= maxCorner.Z; tempVoxelCoord.Z++)\n                                        {\n                                            byte voxelContent = voxelMap.GetVoxelContent(ref tempVoxelCoord);\n\n                                            //  Ignore voxels bellow the ISO value (empty, partialy empty...)\n                                            if (voxelContent < MyVoxelConstants.VOXEL_ISO_LEVEL) continue;\n\n                                            Vector3 voxelPosition = voxelMap.GetVoxelCenterPositionAbsolute(ref tempVoxelCoord);\n\n                                            //float voxelSize = MyVoxelMaps.GetVoxelContentAsFloat(voxelContent) * MyVoxelConstants.VOXEL_SIZE_IN_METRES_HALF;\n                                            float voxelSize = MyVoxelMaps.GetVoxelContentAsFloat(voxelContent) * MyVoxelConstants.VOXEL_RADIUS;\n\n                                            //  If distance to voxel border is less than sphere radius, we have a collision\n                                            //  So now we calculate normal vector and penetration depth but on OLD sphere\n                                            float newDistanceToVoxel = Vector3.Distance(voxelPosition, newSphere.Center) - voxelSize;\n                                            if (newDistanceToVoxel < (epsylon + newSphere.Radius))\n                                            {\n                                                Vector3 collisionN = MyMwcUtils.Normalize(voxelPosition - body0Pos);\n\n                                                if (numCollPts < MyPhysicsConfig.MaxContactPoints)\n                                                {\n                                                    //  Calculate penetration depth, but from old sphere (not new)\n                                                    float oldDistanceToVoxel = Vector3.Distance(voxelPosition, newSphere.Center) - voxelSize;\n                                                    float oldPenetrationDepth = oldDistanceToVoxel - sphereRadius;\n\n                                                    // Vector3 pt = body0Pos + sphereRadius * collisionN;\n                                                    Vector3 pt = voxelPosition - collisionN * (voxelSize - epsylon);\n\n                                                    collPtArray[numCollPts++] = new MySmallCollPointInfo(pt - body0Pos, pt - body1Pos, GetRigidBody1().LinearVelocity, GetRigidBody2().LinearVelocity, collisionN, oldPenetrationDepth, pt);\n                                                }\n\n                                                collNormal -= collisionN;\n                                            }\n                                        }\n                                    }\n                                }\n\n                                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n                            }\n                        }\n\n                        MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n                    }\n\n                    MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n                }\n                else //if (colDetThroughVoxels)\n                {\n                    MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"ColDet triangles\");\n\n                    int optimalIterationCount = (int)(GetRigidBody1().LinearVelocity.Length() * dt / sphereRadius);\n                    int maxIndex = (int)MathHelper.Min(MathHelper.Max(optimalIterationCount, 1), 16);\n\n                    for (int i = 0; i < maxIndex; i++)\n                    {\n\n                        float velocityAdd = GetRigidBody1().LinearVelocity.Length() * dt / (float)maxIndex;\n\n                        Vector3 interpolatedPosition = body0Pos + GetRigidBody1().LinearVelocity * dt * i / (float)maxIndex;\n\n                        BoundingSphere newSphere;\n                        newSphere.Center = interpolatedPosition;\n                        newSphere.Radius = sphereRadius;\n\n                        int numTriangles;\n\n                        BoundingBox bb = BoundingBox.CreateFromSphere(newSphere);\n                        MyVoxelMaps.GetPotentialTrianglesForColDet(out numTriangles, ref bb);\n\n                        for (int iTriangle = 0; iTriangle < numTriangles; ++iTriangle)\n                        {\n                            MyColDetVoxelTriangle meshTriangle = MyVoxelMaps.PotentialColDetTriangles[iTriangle]; // mesh.GetTriangle(potentialTriangles[iTriangle]);\n\n\n                            MyTriangle_Vertex_Normal triangle = new MyTriangle_Vertex_Normal();\n                            triangle.Vertexes.Vertex0 = meshTriangle.Vertex0;\n                            triangle.Vertexes.Vertex1 = meshTriangle.Vertex1;\n                            triangle.Vertexes.Vertex2 = meshTriangle.Vertex2;\n\n\n                            // skip too narrow triangles causing instability\n                            if ((triangle.Vertexes.Vertex0 - triangle.Vertexes.Vertex1).LengthSquared() < MyPhysicsConfig.TriangleEpsilon)\n                            {\n                                continue;\n                            }\n\n                            if ((triangle.Vertexes.Vertex1 - triangle.Vertexes.Vertex2).LengthSquared() < MyPhysicsConfig.TriangleEpsilon)\n                            {\n                                continue;\n                            }\n\n                            if ((triangle.Vertexes.Vertex0 - triangle.Vertexes.Vertex2).LengthSquared() < MyPhysicsConfig.TriangleEpsilon)\n                            {\n                                continue;\n                            }\n\n                            MyPlane plane = new MyPlane(ref triangle.Vertexes);\n\n                            Vector3? pt = MyUtils.GetSphereTriangleIntersection(ref newSphere, ref plane, ref triangle.Vertexes);\n                            if (pt == null)\n                                continue;\n\n\n                            Vector3 collisionN = plane.Normal;\n\n                            // skip triangle in case the normal is in wrong dir (narrow walls)  \n                            Vector3 tempV = (newBody0Pos - pt.Value);\n                            if (Vector3.Dot(collisionN, tempV) >= 0.8f * tempV.Length())  // equivalent to dot(collisionN, normalize(tempV)) > 0.8f, but works for zero vectors\n                            {\n                                continue;\n                            }\n\n                            float depth = Vector3.Distance(pt.Value, body0Pos) - sphereRadius;\n\n                            if (numCollPts < MyPhysicsConfig.MaxContactPoints)\n                            {\n                                // since impulse get applied at the old position\n                                Vector3 p2 = pt.Value;\n\n                                collPtArray[numCollPts++] = new MySmallCollPointInfo(p2 - body0Pos, p2 - body1Pos, GetRigidBody1().LinearVelocity, GetRigidBody2().LinearVelocity, collisionN, depth, p2);\n                            }\n\n                            collNormal += collisionN;\n                        }\n                    }\n\n                    MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n                }\n\n                if (numCollPts > 0)\n                {\n                    MyPhysics.physicsSystem.GetContactConstraintModule().AddContactConstraint(this, collPtArray, numCollPts);\n                }\n                MyContactInfoCache.FreeStackAlloc(collPtArray);\n\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n            }\n\n            return false;\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Physics/Collisions/Interactions/MyTriangle.cs",
    "content": "﻿#region Using Statements\n\nusing MinerWarsMath;\nusing MinerWars.CommonLIB.AppCode.Utils;\n\n#endregion\n\nnamespace MinerWars.AppCode.Physics\n{\n    /// <summary>\n    /// structure used to set up the mesh\n    /// </summary>\n    public struct MyTriangleVertexIndices\n    {\n        public int I0, I1, I2;\n\n        public MyTriangleVertexIndices(int i0, int i1, int i2)\n        {\n            this.I0 = i0;\n            this.I1 = i1;\n            this.I2 = i2;\n        }\n\n        public void Set(int i0, int i1, int i2)\n        {\n            I0 = i0; I1 = i1; I2 = i2;\n        }\n    }\n\n    /// <summary>\n    /// Defines a 3d triangleVertexes. Each edge goes from the origin.\n    /// Cross(edge0, edge1)  gives the triangleVertexes normal.\n    /// </summary>\n    public struct MyTriangle\n    {\n        private Vector3 origin;\n        private Vector3 edge0;\n        private Vector3 edge1;\n\n        /// <summary>\n        /// Points specified so that pt1-pt0 is edge0 and p2-pt0 is edge1\n        /// </summary>\n        /// <param name=\"pt0\"></param>\n        /// <param name=\"pt1\"></param>\n        /// <param name=\"pt2\"></param>\n        public MyTriangle(Vector3 pt0, Vector3 pt1, Vector3 pt2)\n        {\n            origin = pt0;\n            edge0 = pt1 - pt0;\n            edge1 = pt2 - pt0;\n        }\n\n        /// <summary>\n        /// Points specified so that pt1-pt0 is edge0 and p2-pt0 is edge1\n        /// </summary>\n        /// <param name=\"pt0\"></param>\n        /// <param name=\"pt1\"></param>\n        /// <param name=\"pt2\"></param>\n        public MyTriangle(ref Vector3 pt0, ref Vector3 pt1, ref Vector3 pt2)\n        {\n            origin = pt0;\n            edge0 = pt1 - pt0;\n            edge1 = pt2 - pt0;\n        }\n\n        /// <summary>\n        /// Same numbering as in the constructor\n        /// </summary>\n        /// <param name=\"value\"></param>\n        /// <returns></returns>\n        public Vector3 GetPoint(int i)\n        {\n            if (i == 1)\n                return origin + edge0;\n\n            if (i == 2)\n                return origin + edge1;\n\n            return origin;\n\n        }\n\n        /// <summary>\n        /// Same numbering as in the constructor\n        /// </summary>\n        /// <param name=\"value\"></param>\n        /// <returns></returns>\n        public void GetPoint(int i, out Vector3 point)\n        {\n            if (i == 1)\n                point = origin + edge0;\n            else if (i == 2)\n                point = origin + edge1;\n            else\n                point = origin;\n        }\n\n        // BEN-OPTIMISATION: New method with ref point, also accounts for the bug fix.\n        // <summary>\n        /// Same numbering as in the constructor\n        /// </summary>\n        /// <param name=\"i\"></param>\n        /// <returns></returns>\n        public void GetPoint(ref Vector3 point, int i)\n        {\n            if (i == 1)\n            {\n                point.X = origin.X + edge0.X;\n                point.Y = origin.Y + edge0.Y;\n                point.Z = origin.Z + edge0.Z;\n            }\n            else if (i == 2)\n            {\n                point.X = origin.X + edge1.X;\n                point.Y = origin.Y + edge1.Y;\n                point.Z = origin.Z + edge1.Z;\n            }\n            else\n            {\n                point.X = origin.X;\n                point.Y = origin.Y;\n                point.Z = origin.Z;\n            }\n        }\n\n        /// <summary>\n        /// Returns the point parameterised by t0 and t1\n        /// </summary>\n        /// <param name=\"t0\"></param>\n        /// <param name=\"t1\"></param>\n        /// <returns></returns>\n        public Vector3 GetPoint(float t0, float t1)\n        {\n            return origin + t0 * edge0 + t1 * edge1;\n        }\n\n        /// <summary>\n        /// Gets the minimum and maximum extents of the triangleVertexes along the axis\n        /// </summary>\n        /// <param name=\"min\"></param>\n        /// <param name=\"max\"></param>\n        /// <param name=\"axis\"></param>\n        public void GetSpan(out float min, out float max, Vector3 axis)\n        {\n            float d0 = Vector3.Dot(GetPoint(0), axis);\n            float d1 = Vector3.Dot(GetPoint(1), axis);\n            float d2 = Vector3.Dot(GetPoint(2), axis);\n\n            min = MyPhysicsUtils.Min(d0, d1, d2);\n            max = MyPhysicsUtils.Max(d0, d1, d2);\n        }\n\n        // BEN-OPTIMISATION: New method, ref axis\n        /// <summary>\n        /// Gets the minimum and maximum extents of the triangle along the axis\n        /// </summary>\n        /// <param name=\"min\"></param>\n        /// <param name=\"max\"></param>\n        /// <param name=\"axis\"></param>\n        public void GetSpan(out float min, out float max, ref Vector3 axis)\n        {\n            Vector3 point = new Vector3();\n\n            GetPoint(ref point, 0);\n            float d0 = point.X * axis.X + point.Y * axis.Y + point.Z * axis.Z;\n            GetPoint(ref point, 1);\n            float d1 = point.X * axis.X + point.Y * axis.Y + point.Z * axis.Z;\n            GetPoint(ref point, 2);\n            float d2 = point.X * axis.X + point.Y * axis.Y + point.Z * axis.Z;\n\n            min = MyPhysicsUtils.Min(d0, d1, d2);\n            max = MyPhysicsUtils.Max(d0, d1, d2);\n        }\n\n        public Vector3 Centre\n        {\n            get { return origin + 0.333333333333f * (edge0 + edge1); }\n        }\n\n        public Vector3 Origin\n        {\n            get { return origin; }\n            set { origin = value; }\n        }\n\n        public Vector3 Edge0\n        {\n            get { return edge0; }\n            set { edge0 = value; }\n        }\n\n        public Vector3 Edge1\n        {\n            get { return edge1; }\n            set { edge1 = value; }\n        }\n\n        /// <summary>\n        /// Edge2 goes from pt1 to pt2\n        /// </summary>\n        public Vector3 Edge2\n        {\n            get { return edge1 - edge0; }\n        }\n\n\n        /// <summary>\n        /// Gets the plane containing the triangleVertexes\n        /// </summary>\n        public MinerWarsMath.Plane Plane\n        {\n            get\n            {\n                return new MinerWarsMath.Plane(GetPoint(0), GetPoint(1), GetPoint(2));\n            }\n        }\n\n        /// <summary>\n        /// Gets the triangleVertexes normal. If degenerate it will be normalised, but\n        /// the direction may be wrong!\n        /// </summary>\n        public Vector3 Normal\n        {\n            get\n            {\n                Vector3 norm = Vector3.Cross(MyMwcUtils.Normalize(edge0), MyMwcUtils.Normalize(edge1));\n                MyPhysicsUtils.NormalizeSafe(ref norm);\n\n                return norm;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Physics/Collisions/Interactions/MyTriangleCache.cs",
    "content": "﻿#region Using Statements\n\nusing System.Collections.Generic;\nusing System.Threading;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Utils;\n\n#endregion\n\nnamespace MinerWars.AppCode.Physics\n{\n    //////////////////////////////////////////////////////////////////////////\n    /// <summary>\n    /// Cache for triangles that are used during the intraction processing\n    /// </summary>\n    class MyTriangleCache\n    {\n        static MyTriangleCache()\n        {\n            m_Cache = new Stack<List<MyTriangle_Vertex_Normal>>(CACHE_SIZE);\n            while (m_Cache.Count < CACHE_SIZE)\n            {\n                m_Cache.Push(new List<MyTriangle_Vertex_Normal>(TRIANGLES_SIZE));\n            }\n        }\n\n        public MyTriangleCache()\n        {            \n            while (m_Cache.Count < CACHE_SIZE)\n            {\n                m_Cache.Push(new List<MyTriangle_Vertex_Normal>(TRIANGLES_SIZE));\n            }            \n        }\n\n        public List<MyTriangle_Vertex_Normal> GetFreeTriangleList(MyRBElementInteraction itr)\n        {\n            List<MyTriangle_Vertex_Normal> retVal = null;\n            lock (m_Locker)\n            {\n                if (m_Cache.Count == 0)\n                {\n                    m_Cache.Push(new List<MyTriangle_Vertex_Normal>(TRIANGLES_SIZE));\n                }\n                retVal = m_Cache.Pop();             \n            }\n            return retVal;\n        }\n\n        public void PushBackTriangleList(List<MyTriangle_Vertex_Normal> list)\n        {\n            lock (m_Locker)\n            {\n                list.Clear();\n                m_Cache.Push(list);\n            }            \n        }\n\n        private const int CACHE_SIZE = 16;\n        private const int TRIANGLES_SIZE = 8096;\n        private static Stack<List<MyTriangle_Vertex_Normal>> m_Cache;\n        private readonly object m_Locker = new object();\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Physics/Collisions/MyElement.cs",
    "content": "﻿#region Using Statements\n\nusing System.Collections.Generic;\nusing MinerWarsMath;\n\n#endregion\n\nnamespace MinerWars.AppCode.Physics\n{\n    /// <summary>\n    /// Element used as a base class for the prunning structure. \n    /// </summary>\n    abstract class MyElement\n    {\n        public BoundingBox GetWorldSpaceAABB()\n        {\n            if ((Flags & MyElementFlag.EF_AABB_DIRTY) > 0)\n            {\n                UpdateAABB();\n            }\n\n            return m_AABB;\n        }\n\n        public virtual bool LoadFromDesc(MyElementDesc desc)\n        {\n            m_Guid = GUID_COUNTER;\n\n            if (GUID_COUNTER > 65000)\n            {\n                GUID_COUNTER = 0;\n            }\n            GUID_COUNTER++;\n\n            return true;\n        }\n\n        public virtual Matrix GetGlobalTransformation() { return m_Matrix; }\n\n        public Matrix LocalTransformation { get { return this.m_Matrix; } set { this.m_Matrix = value; } }\n\n        public Vector3 LocalPosition { get { return this.m_Matrix.Translation; } set { this.m_Matrix.Translation = value; } }\n\n        public System.UInt16 CollisionLayer { get { return this.m_CollisionLayer; } set { this.m_CollisionLayer = value; } }\n\n        public MyElementFlag Flags;// { get { return m_flags; } }\n\n        /// <summary>\n        /// Update of aabb if necessary, implementation in shape elements\n        /// </summary>\n        public virtual void UpdateAABB()\n        {\n            Flags &= ~MyElementFlag.EF_AABB_DIRTY;\n        }\n\n        public int GUID { get { return m_Guid; } set { m_Guid = value; } }\n\n        protected Matrix m_Matrix;\n        private System.UInt16 m_CollisionLayer;\n        protected BoundingBox m_AABB;\n        private int m_ProxyData;\n        private int m_ShadowProxyData;\n        private int m_Guid;\n        private static int GUID_COUNTER = 0;\n        public static int PROXY_UNASSIGNED = int.MaxValue;\n\n        public MyElement()\n        {            \n            m_Matrix = Matrix.Identity;\n            m_CollisionLayer = 0;\n            Flags = MyElementFlag.EF_AABB_DIRTY;\n            m_AABB = new BoundingBox();        \n            m_ProxyData = PROXY_UNASSIGNED;\n            m_ShadowProxyData = PROXY_UNASSIGNED;\n\n            m_Guid = GUID_COUNTER;\n\n            if (GUID_COUNTER == int.MaxValue)\n            {\n                GUID_COUNTER = 0;\n            }\n            GUID_COUNTER++;\n        }\n\n        public int ProxyData { get { return m_ProxyData; } set { m_ProxyData = value; } }\n        public int ShadowProxyData { get { return m_ShadowProxyData; } set { m_ShadowProxyData = value; } }\n\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Physics/Collisions/MyElementDesc.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace MinerWars.AppCode.Physics\n{\n    /// <summary>\n    /// element descriptor\n    /// </summary>\n    abstract class MyElementDesc\n    {\n        public virtual bool IsValid()\n        {\n            return true;\n        }\n\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Physics/Collisions/MyFiltering.cs",
    "content": "﻿#region Using Statements\n\nusing System.Collections.Generic;\nusing MinerWarsMath;\n\n#endregion\n\nnamespace MinerWars.AppCode.Physics\n{\n    //////////////////////////////////////////////////////////////////////////\n    /// <summary>\n    /// Internal filtering using the layer and mask test.\n    /// </summary>\n    static class MyFiltering\n    {\n        static public bool AcceptCollision(MyRBElement el0,MyRBElement el1)\n        {\n            if (!MyPhysics.physicsSystem.GetRigidBodyModule().IsEnabledCollisionInLayers(el0.CollisionLayer,el1.CollisionLayer))\n            {\n                return false;\n            }\n\n            MyGroupMask mask0 = el0.GroupMask;\n            MyGroupMask mask1 = el1.GroupMask;\n\n            if ((mask0.m_Mask0 & mask1.m_Mask0) > 0)\n            {\n                return false;\n            }\n\n            if ((mask0.m_Mask1 & mask1.m_Mask1) > 0)\n            {\n                return false;\n            }\n\n            if ((mask0.m_Mask2 & mask1.m_Mask2) > 0)\n            {\n                return false;\n            }\n\n            if ((mask0.m_Mask3 & mask1.m_Mask3) > 0)\n            {\n                return false;\n            }\n\n            return true;\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Physics/Collisions/MyGroupMask.cs",
    "content": "﻿#region Using Statements\n\nusing System.Collections.Generic;\nusing MinerWarsMath;\n\n#endregion\n\nnamespace MinerWars.AppCode.Physics\n{\n    //////////////////////////////////////////////////////////////////////////\n    /// <summary>\n    /// group mask used for collision filtering. If 2 elements have the same bit in mask then they wont collide.\n    /// </summary>\n    internal struct MyGroupMask\n    {\n        public System.UInt32 m_Mask0;\n        public System.UInt32 m_Mask1;\n        public System.UInt32 m_Mask2;\n        public System.UInt32 m_Mask3;\n\n        public static MyGroupMask Empty = new MyGroupMask();\n\n        public static MyGroupMask operator |(MyGroupMask groupMask0, MyGroupMask groupMask1)\n        {\n            MyGroupMask groupMask = new MyGroupMask();\n            groupMask.m_Mask0 = groupMask0.m_Mask0 | groupMask1.m_Mask0;\n            groupMask.m_Mask1 = groupMask0.m_Mask1 | groupMask1.m_Mask1;\n            groupMask.m_Mask2 = groupMask0.m_Mask2 | groupMask1.m_Mask2;\n            groupMask.m_Mask3 = groupMask0.m_Mask3 | groupMask1.m_Mask3;\n            return groupMask;\n        }\n\n        public static MyGroupMask operator &(MyGroupMask groupMask0, MyGroupMask groupMask1)\n        {\n            MyGroupMask groupMask = new MyGroupMask();\n            groupMask.m_Mask0 = groupMask0.m_Mask0 & groupMask1.m_Mask0;\n            groupMask.m_Mask1 = groupMask0.m_Mask1 & groupMask1.m_Mask1;\n            groupMask.m_Mask2 = groupMask0.m_Mask2 & groupMask1.m_Mask2;\n            groupMask.m_Mask3 = groupMask0.m_Mask3 & groupMask1.m_Mask3;\n            return groupMask;\n        }\n\n        public static MyGroupMask operator ~(MyGroupMask groupMask0)\n        {\n            MyGroupMask groupMask = new MyGroupMask();\n            groupMask.m_Mask0 = ~groupMask0.m_Mask0;\n            groupMask.m_Mask1 = ~groupMask0.m_Mask1;\n            groupMask.m_Mask2 = ~groupMask0.m_Mask2;\n            groupMask.m_Mask3 = ~groupMask0.m_Mask3;\n            return groupMask;\n        }\n\n        public bool Equals(MyGroupMask other)\n        {\n            return other.m_Mask0 == m_Mask0 && other.m_Mask1 == m_Mask1 && other.m_Mask2 == m_Mask2 && other.m_Mask3 == m_Mask3;\n        }\n\n        public override bool Equals(object obj)\n        {\n            if (ReferenceEquals(null, obj)) return false;\n            if (obj.GetType() != typeof (MyGroupMask)) return false;\n            return Equals((MyGroupMask) obj);\n        }\n\n        public override int GetHashCode()\n        {\n            unchecked\n            {\n                int result = m_Mask0.GetHashCode();\n                result = (result*397) ^ m_Mask1.GetHashCode();\n                result = (result*397) ^ m_Mask2.GetHashCode();\n                result = (result*397) ^ m_Mask3.GetHashCode();\n                return result;\n            }\n        }\n\n        public static bool operator ==(MyGroupMask left, MyGroupMask right)\n        {\n            return left.Equals(right);\n        }\n\n        public static bool operator !=(MyGroupMask left, MyGroupMask right)\n        {\n            return !left.Equals(right);\n        }\n    }\n\n    //////////////////////////////////////////////////////////////////////////\n    /// <summary>\n    /// manager giving new mask so 2 same masks are not used. Currently only 128 masks can be since we are using 128bits.\n    /// </summary>\n    class MyGroupMaskManager\n    {\n        public MyGroupMaskManager()\n        {\n            m_BaseMask.m_Mask0 = 0;\n            m_BaseMask.m_Mask1 = 0;\n            m_BaseMask.m_Mask2 = 0;\n            m_BaseMask.m_Mask3 = 0;\n        }       \n        private MyGroupMask m_BaseMask;\n\n        #region implementation\n\n        public  bool GetGroupMask(ref MyGroupMask mask)\n        {            \n            System.UInt32 fullMask = 0xffffffff;\n            System.UInt32 halfMask = 0x0000ffff;\n            System.UInt32 lowMask = 0x000000ff;\n            System.UInt32 lowestMask = 0x0000000f;\n            System.UInt32 ulowestMask = 0x00000003;\n            System.UInt32 uulowestMask = 0x00000001;\n            mask.m_Mask0 = 0;\n            mask.m_Mask1 = 0;\n            mask.m_Mask2 = 0;\n            mask.m_Mask3 = 0;\n\n            System.UInt32 bits = 0;\n            System.UInt32 index = 0;\n            int offset = 0;\n\n            if ((m_BaseMask.m_Mask0 & fullMask) != fullMask)\n            {\n                bits = m_BaseMask.m_Mask0;\n                index = 0;\n            }\n            else\n            {\n                if ((m_BaseMask.m_Mask1 & fullMask) != fullMask)\n                {\n                    bits = m_BaseMask.m_Mask1;\n                    index = 1;\n                }\n                else\n                {\n                    if ((m_BaseMask.m_Mask2 & fullMask) != fullMask)\n                    {\n                        bits = m_BaseMask.m_Mask2;\n                        index = 2;\n                    }\n                    else\n                    {\n                        if ((m_BaseMask.m_Mask3 & fullMask) != fullMask)\n                        {\n                            bits = m_BaseMask.m_Mask3;\n                            index = 3;\n                        }\n                        else\n                        {\n                            return false;\n                        }\n                    }\n                }\n            }\n\n            if ((bits & halfMask) == halfMask)\n            {\n                bits = bits >> 16;\n                offset += 16;\n            }\n\n            if ((bits & lowMask) == lowMask)\n            {\n                bits = bits >> 8;\n                offset += 8;\n            }\n\n            if ((bits & lowestMask) == lowestMask)\n            {\n                bits = bits >> 4;\n                offset += 4;\n            }\n\n            if ((bits & ulowestMask) == ulowestMask)\n            {\n                bits = bits >> 2;\n                offset += 2;\n            }\n\n            if ((bits & uulowestMask) == uulowestMask)\n            {\n                bits = bits >> 1;\n                offset += 1;\n            }\n\n            switch (index)\n            {\n                case 0:\n                    mask.m_Mask0 = ((uint)1 << offset);\n                    m_BaseMask.m_Mask0 |= mask.m_Mask0;\n                    break;\n                case 1:\n                    mask.m_Mask1 = ((uint)1 << offset);\n                    m_BaseMask.m_Mask1 |= mask.m_Mask1;\n                    break;\n                case 2:\n                    mask.m_Mask2 = ((uint)1 << offset);\n                    m_BaseMask.m_Mask2 |= mask.m_Mask2;\n                    break;\n                case 3:\n                    mask.m_Mask3 = ((uint)1 << offset);\n                    m_BaseMask.m_Mask3 |= mask.m_Mask3;\n                    break;\n            }\n\n            return true;\n        }\n\n        public void PushBackGroupMask(MyGroupMask mask)\n        {\n            System.UInt32 fullMask = 0xffffffff;\n\n            if ((mask.m_Mask0 & fullMask) != 0)\n            {\n                // here we go\n                m_BaseMask.m_Mask0 &= ~mask.m_Mask0;\n            }\n            else\n            {\n                if ((mask.m_Mask1 & fullMask) != 0)\n                {\n                    // here we go\n                    m_BaseMask.m_Mask1 &= ~mask.m_Mask1;\n                }\n                else\n                {\n                    if ((mask.m_Mask2 & fullMask) != 0)\n                    {\n                        // here we go\n                        m_BaseMask.m_Mask2 &= ~mask.m_Mask2;\n                    }\n                    else\n                    {\n                        if ((mask.m_Mask3 & fullMask) != 0)\n                        {\n                            // here we go\n                            m_BaseMask.m_Mask3 &= ~mask.m_Mask3;\n                        }\n                    }\n                }\n            }\n        }\n\n        #endregion\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Physics/Collisions/MyLineSegmentOverlapResult.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace MinerWars.AppCode.Physics\n{\n    struct MyLineSegmentOverlapResult<T>\n    {\n        public class MyLineSegmentOverlapResultComparer : IComparer<MyLineSegmentOverlapResult<T>>\n        {\n            public int Compare(MyLineSegmentOverlapResult<T> x, MyLineSegmentOverlapResult<T> y)\n            {\n                return x.Distance.CompareTo(y.Distance);\n            }\n        }\n\n        public static MyLineSegmentOverlapResultComparer DistanceComparer = new MyLineSegmentOverlapResultComparer();\n\n        public float Distance;\n        public T Element;\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Physics/Collisions/MyQuantizedBvhAdapter.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Models;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Entities;\nusing MinerWarsMath;\nusing BulletXNA.BulletCollision;\nusing BulletXNA.LinearMath;\nusing BulletXNA;\n\nnamespace MinerWars.AppCode.Physics.Collisions\n{\n    class MyQuantizedBvhAdapter : IMyTriangePruningStructure\n    {\n        GImpactQuantizedBvh m_bvh;\n        MyModel m_model;\n\n        [ThreadStatic]\n        static ObjectArray<int> m_overlappedTrianglesThreadStatic;\n        static List<ObjectArray<int>> m_overlappedTrianglesThreadStaticCollection = new List<ObjectArray<int>>();\n\n        [ThreadStatic]\n        static MyQuantizedBvhResult m_resultThreadStatic;\n\n        private static MyQuantizedBvhResult m_result\n        {\n            get\n            {\n                if (m_resultThreadStatic == null)\n                {\n                    m_resultThreadStatic = new MyQuantizedBvhResult();\n                }\n                return m_resultThreadStatic;\n            }\n        }\n\n        private static ObjectArray<int> m_overlappedTriangles\n        {\n            get\n            {\n                if (m_overlappedTrianglesThreadStatic == null)\n                {\n                    m_overlappedTrianglesThreadStatic = new ObjectArray<int>(1024);\n                    lock (m_overlappedTrianglesThreadStaticCollection)\n                    {\n                        m_overlappedTrianglesThreadStaticCollection.Add(m_overlappedTrianglesThreadStatic);\n                    }\n                }\n                return m_overlappedTrianglesThreadStatic;\n            }\n        }\n\n        public MyQuantizedBvhAdapter(GImpactQuantizedBvh bvh, MyModel model)\n        {\n            m_bvh = bvh;\n            m_model = model;\n        }\n\n        public MyIntersectionResultLineTriangleEx? GetIntersectionWithLine(MyEntity physObject, ref MyLine line, IntersectionFlags flags)\n        {\n            BoundingSphere vol = physObject.WorldVolume;\n            //  Check if line intersects phys object's current bounding sphere, and if not, return 'no intersection'\n            if (MyUtils.IsLineIntersectingBoundingSphere(ref line, ref vol) == false) return null;\n\n            //  Transform line into 'model instance' local/object space. Bounding box of a line is needed!!\n            Matrix worldInv = physObject.GetWorldMatrixInverted();\n\n            return GetIntersectionWithLine(physObject, ref line, ref worldInv, flags);\n        }\n\n        public MyIntersectionResultLineTriangleEx? GetIntersectionWithLine(MyEntity physObject, ref MyLine line, ref Matrix customInvMatrix, IntersectionFlags flags)\n        {\n            MyLine lineInModelSpace = new MyLine(MyUtils.GetTransform(line.From, ref customInvMatrix), MyUtils.GetTransform(line.To, ref customInvMatrix), true);\n\n            //MyIntersectionResultLineTriangle? result = null;\n\n            m_result.Start(m_model, lineInModelSpace, flags);\n\n            var dir = new IndexedVector3(lineInModelSpace.Direction);\n            var from = new IndexedVector3(lineInModelSpace.From);\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"m_bvh.RayQueryClosest()\");\n            m_bvh.RayQueryClosest(ref dir, ref from, m_result.ProcessTriangleHandler);\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            if (m_result.Result.HasValue)\n            {\n                return new MyIntersectionResultLineTriangleEx(m_result.Result.Value, physObject, ref lineInModelSpace);\n            }\n            else\n            {\n                return null;\n            }\n        }\n\n        public void GetTrianglesIntersectingSphere(ref BoundingSphere sphere, Vector3? referenceNormalVector, float? maxAngle, List<MyTriangle_Vertex_Normals> retTriangles, int maxNeighbourTriangles)\n        {\n            var aabb = BoundingBoxHelper.InitialBox;\n            BoundingBoxHelper.AddSphere(ref sphere, ref aabb);\n            AABB gi_aabb = new AABB(ref aabb.Min, ref aabb.Max);\n            m_overlappedTriangles.Clear();\n            if (m_bvh.BoxQuery(ref gi_aabb, m_overlappedTriangles))\n            {\n                // temporary variable for storing tirngle boundingbox info\n                BoundingBox triangleBoundingBox = new BoundingBox();\n\n                for (int i = 0; i < m_overlappedTriangles.Count; i++)\n                {\n                    var triangleIndex = m_overlappedTriangles[i];\n\n                    //  If we reached end of the buffer of neighbour triangles, we stop adding new ones. This is better behavior than throwing exception because of array overflow.\n                    if (retTriangles.Count == maxNeighbourTriangles) return;\n\n                    m_model.GetTriangleBoundingBox(triangleIndex, ref triangleBoundingBox);\n\n                    //  First test intersection of triangleVertexes's bounding box with bounding sphere. And only if they overlap or intersect, do further intersection tests.\n                    if (MyUtils.IsBoxIntersectingSphere(triangleBoundingBox, ref sphere) == true)\n                    {\n                        //if (m_triangleIndices[value] != ignoreTriangleWithIndex)\n                        {\n                            //  See that we swaped vertex indices!!\n                            MyTriangle_Vertexes triangle;\n                            MyTriangle_Normals triangleNormals;\n                            MyTriangle_Normals triangleBinormals;\n                            MyTriangle_Normals triangleTangents;\n\n                            MyTriangleVertexIndices triangleIndices = m_model.Triangles[triangleIndex];\n                            m_model.GetVertex(triangleIndices.I0, triangleIndices.I2, triangleIndices.I1, out triangle.Vertex0, out triangle.Vertex1, out triangle.Vertex2);\n\n                            /*\n                            triangle.Vertex0 = m_model.GetVertex(triangleIndices.I0);\n                            triangle.Vertex1 = m_model.GetVertex(triangleIndices.I2);\n                            triangle.Vertex2 = m_model.GetVertex(triangleIndices.I1);\n                              */\n\n                            triangleNormals.Normal0 = m_model.GetVertexNormal(triangleIndices.I0);\n                            triangleNormals.Normal1 = m_model.GetVertexNormal(triangleIndices.I2);\n                            triangleNormals.Normal2 = m_model.GetVertexNormal(triangleIndices.I1);\n\n                            if (MinerWars.AppCode.Game.Render.MyRenderConstants.RenderQualityProfile.ForwardRender)\n                            {\n                                triangleBinormals.Normal0 = triangleNormals.Normal0;\n                                triangleBinormals.Normal1 = triangleNormals.Normal1;\n                                triangleBinormals.Normal2 = triangleNormals.Normal2;\n\n                                triangleTangents.Normal0 = triangleNormals.Normal0;\n                                triangleTangents.Normal1 = triangleNormals.Normal1;\n                                triangleTangents.Normal2 = triangleNormals.Normal2;\n                            }\n                            else\n                            {\n                                triangleBinormals.Normal0 = m_model.GetVertexBinormal(triangleIndices.I0);\n                                triangleBinormals.Normal1 = m_model.GetVertexBinormal(triangleIndices.I2);\n                                triangleBinormals.Normal2 = m_model.GetVertexBinormal(triangleIndices.I1);\n\n                                triangleTangents.Normal0 = m_model.GetVertexTangent(triangleIndices.I0);\n                                triangleTangents.Normal1 = m_model.GetVertexTangent(triangleIndices.I2);\n                                triangleTangents.Normal2 = m_model.GetVertexTangent(triangleIndices.I1);\n                            }\n\n                            MyPlane trianglePlane = new MyPlane(ref triangle);\n\n                            if (MyUtils.GetSphereTriangleIntersection(ref sphere, ref trianglePlane, ref triangle) != null)\n                            {\n                                Vector3 triangleNormal = MyUtils.GetNormalVectorFromTriangle(ref triangle);\n\n                                if ((referenceNormalVector.HasValue == false) || (maxAngle.HasValue == false) ||\n                                    ((MyUtils.GetAngleBetweenVectors(referenceNormalVector.Value, triangleNormal) <= maxAngle)))\n                                {\n                                    MyTriangle_Vertex_Normals retTriangle;\n                                    retTriangle.Vertexes = triangle;\n                                    retTriangle.Normals = triangleNormals;\n                                    retTriangle.Binormals = triangleBinormals;\n                                    retTriangle.Tangents = triangleTangents;\n\n                                    retTriangles.Add(retTriangle);\n                                }\n                            }\n                        }\n                    }\n                }\n            }\n        }\n\n        public bool GetIntersectionWithSphere(MyEntity physObject, ref BoundingSphere sphere)\n        {\n            //  Transform sphere from world space to object space\n            Matrix worldInv = physObject.GetWorldMatrixInverted();\n            Vector3 positionInObjectSpace = MyUtils.GetTransform(sphere.Center, ref worldInv);\n            BoundingSphere sphereInObjectSpace = new BoundingSphere(positionInObjectSpace, sphere.Radius);\n\n            var aabb = BoundingBoxHelper.InitialBox;\n            BoundingBoxHelper.AddSphere(ref sphereInObjectSpace, ref aabb);\n            AABB gi_aabb = new AABB(ref aabb.Min, ref aabb.Max);\n            m_overlappedTriangles.Clear();\n            if (m_bvh.BoxQuery(ref gi_aabb, m_overlappedTriangles))\n            {\n                // temporary variable for storing tirngle boundingbox info\n                BoundingBox triangleBoundingBox = new BoundingBox();\n\n                //  Triangles that are directly in this node\n                for (int i = 0; i < m_overlappedTriangles.Count; i++)\n                {\n                    var triangleIndex = m_overlappedTriangles[i];\n\n                    m_model.GetTriangleBoundingBox(triangleIndex, ref triangleBoundingBox);\n\n                    //  First test intersection of triangleVertexes's bounding box with bounding sphere. And only if they overlap or intersect, do further intersection tests.\n                    if (MyUtils.IsBoxIntersectingSphere(triangleBoundingBox, ref sphereInObjectSpace) == true)\n                    {\n                        //  See that we swaped vertex indices!!\n                        MyTriangle_Vertexes triangle;\n                        MyTriangleVertexIndices triangleIndices = m_model.Triangles[triangleIndex];\n                        triangle.Vertex0 = m_model.GetVertex(triangleIndices.I0);\n                        triangle.Vertex1 = m_model.GetVertex(triangleIndices.I2);\n                        triangle.Vertex2 = m_model.GetVertex(triangleIndices.I1);\n\n                        MyPlane trianglePlane = new MyPlane(ref triangle);\n\n                        if (MyUtils.GetSphereTriangleIntersection(ref sphereInObjectSpace, ref trianglePlane, ref triangle) != null)\n                        {\n                            //  If we found intersection we can stop and dont need to look further\n                            return true;\n                        }\n                    }\n                }\n            }\n\n            return false;\n        }\n\n        //slow\n        [Obsolete(\"Slow,use aabb\")]\n        public void GetTrianglesIntersectingSphere(ref BoundingSphere sphere, List<MyTriangle_Vertex_Normal> retTriangles, int maxNeighbourTriangles)\n        {\n            Vector3? referenceNormalVector = null;\n            float? maxAngle = null;\n\n            var aabb = BoundingBoxHelper.InitialBox;\n            BoundingBoxHelper.AddSphere(ref sphere, ref aabb);\n            AABB gi_aabb = new AABB(ref aabb.Min, ref aabb.Max);\n            m_overlappedTriangles.Clear();\n\n           // MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"m_bvh.BoxQuery\"); // This code is called recursively and cause profiler to lag\n            bool res = m_bvh.BoxQuery(ref gi_aabb, m_overlappedTriangles);\n           // MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            if (res)\n            {\n                //MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"m_overlappedTriangles\");  // This code is called recursively and cause profiler to lag\n\n                // temporary variable for storing tirngle boundingbox info\n                BoundingBox triangleBoundingBox = new BoundingBox();\n\n                for (int i = 0; i < m_overlappedTriangles.Count; i++)\n                {\n                    var triangleIndex = m_overlappedTriangles[i];\n\n                    //  If we reached end of the buffer of neighbour triangles, we stop adding new ones. This is better behavior than throwing exception because of array overflow.\n                    if (retTriangles.Count == maxNeighbourTriangles) return;\n\n                    m_model.GetTriangleBoundingBox(triangleIndex, ref triangleBoundingBox);\n                    \n                    //gi_aabb.CollideTriangleExact\n\n                    //  First test intersection of triangleVertexes's bounding box with bounding sphere. And only if they overlap or intersect, do further intersection tests.\n                    if (MyUtils.IsBoxIntersectingSphere(triangleBoundingBox, ref sphere) == true)\n                    {\n                        //if (m_triangleIndices[value] != ignoreTriangleWithIndex)\n                        {\n                            //  See that we swaped vertex indices!!\n                            MyTriangle_Vertexes triangle;\n\n                            MyTriangleVertexIndices triangleIndices = m_model.Triangles[triangleIndex];\n                            triangle.Vertex0 = m_model.GetVertex(triangleIndices.I0);\n                            triangle.Vertex1 = m_model.GetVertex(triangleIndices.I2);\n                            triangle.Vertex2 = m_model.GetVertex(triangleIndices.I1);\n                            Vector3 calculatedTriangleNormal = MyUtils.GetNormalVectorFromTriangle(ref triangle);\n\n                            MyPlane trianglePlane = new MyPlane(ref triangle);\n\n                            if (MyUtils.GetSphereTriangleIntersection(ref sphere, ref trianglePlane, ref triangle) != null)\n                            {\n                                Vector3 triangleNormal = MyUtils.GetNormalVectorFromTriangle(ref triangle);\n\n                                if ((referenceNormalVector.HasValue == false) || (maxAngle.HasValue == false) ||\n                                    ((MyUtils.GetAngleBetweenVectors(referenceNormalVector.Value, triangleNormal) <= maxAngle)))\n                                {\n                                    MyTriangle_Vertex_Normal retTriangle;\n                                    retTriangle.Vertexes = triangle;\n                                    retTriangle.Normal = calculatedTriangleNormal;\n\n                                    retTriangles.Add(retTriangle);\n                                }\n                            }\n                        }\n                    }\n                }\n\n                //MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n            }\n        }\n\n        public void GetTrianglesIntersectingAABB(ref BoundingBox aabb, List<MyTriangle_Vertex_Normal> retTriangles, int maxNeighbourTriangles)  \n        {\n            IndexedVector3 min = new IndexedVector3(ref aabb.Min);\n            IndexedVector3 max = new IndexedVector3(ref aabb.Max);\n            AABB gi_aabb = new AABB(ref min, ref max);\n\n            m_overlappedTriangles.Clear();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"m_bvh.BoxQuery\");\n            bool res = m_bvh.BoxQuery(ref gi_aabb, m_overlappedTriangles);\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            if (res)\n            {\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"m_overlappedTriangles\");\n\n                //foreach (var triangleIndex in m_overlappedTriangles)\n                for (int i = 0; i < m_overlappedTriangles.Count; i++)\n                {\n                    var triangleIndex = m_overlappedTriangles[i];\n\n                    //  If we reached end of the buffer of neighbour triangles, we stop adding new ones. This is better behavior than throwing exception because of array overflow.\n                    if (retTriangles.Count == maxNeighbourTriangles)\n                    {\n                        MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n                        return;\n                    }\n\n\n                    MyTriangleVertexIndices triangle = m_model.Triangles[triangleIndex];\n                    MyTriangle_Vertexes triangleVertices = new MyTriangle_Vertexes();\n                    m_model.GetVertex(triangle.I0, triangle.I1, triangle.I2, out triangleVertices.Vertex0, out triangleVertices.Vertex1, out triangleVertices.Vertex2);\n\n                    IndexedVector3 iv0 = new IndexedVector3(ref triangleVertices.Vertex0);\n                    IndexedVector3 iv1 = new IndexedVector3(ref triangleVertices.Vertex1);\n                    IndexedVector3 iv2 = new IndexedVector3(ref triangleVertices.Vertex2);\n\n                    MyTriangle_Vertex_Normal retTriangle;\n                    retTriangle.Vertexes = triangleVertices;\n                    retTriangle.Normal = Vector3.Forward;\n\n                    retTriangles.Add(retTriangle);\n                }\n\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n            }\n        }\n\n        public void Close()\n        {\n            lock (m_overlappedTrianglesThreadStaticCollection)\n            {\n                foreach (var item in m_overlappedTrianglesThreadStaticCollection)\n                {\n                    item.Clear();\n                }\n            }\n        }\n\n        public int Size\n        {\n            get\n            {\n                return m_bvh.Size;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Physics/Collisions/MyQuantizedBvhResult.cs",
    "content": "﻿#region Using\n\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.AppCode.Game.Utils;\nusing MinerWars.AppCode.Game.Models;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Entities;\nusing BulletXNA.BulletCollision;\n\n#endregion\n\nnamespace MinerWars.AppCode.Physics.Collisions\n{\n    public enum IntersectionFlags\n    {\n        DIRECT_TRIANGLES = 0x01,\n        FLIPPED_TRIANGLES = 0x02,\n\n        ALL_TRIANGLES = DIRECT_TRIANGLES | FLIPPED_TRIANGLES\n    }\n\n\n    class MyQuantizedBvhResult\n    {\n        MyModel m_model;\n        MyIntersectionResultLineTriangle? result;\n        MyLine m_line;\n        IntersectionFlags m_flags;\n\n        public readonly ProcessCollisionHandler ProcessTriangleHandler;\n\n        public MyQuantizedBvhResult()\n        {\n            ProcessTriangleHandler = new ProcessCollisionHandler(ProcessTriangle);\n        }\n\n        public MyIntersectionResultLineTriangle? Result\n        {\n            get\n            {\n                return result;\n            }\n        }        \n\n        public void Start(MyModel model, MyLine line, IntersectionFlags flags = IntersectionFlags.DIRECT_TRIANGLES)\n        {\n            result = null;\n            m_model = model;\n            m_line = line;\n            m_flags = flags;\n        }\n\n        private float? ProcessTriangle(int triangleIndex)\n        {\n            System.Diagnostics.Debug.Assert((int)m_flags != 0);\n\n            MyTriangle_Vertexes triangle;\n            MyTriangleVertexIndices triangleIndices = m_model.Triangles[triangleIndex];\n\n            m_model.GetVertex(triangleIndices.I0, triangleIndices.I2, triangleIndices.I1, out triangle.Vertex0, out triangle.Vertex1, out triangle.Vertex2);\n\n            Vector3 calculatedTriangleNormal = MyUtils.GetNormalVectorFromTriangle(ref triangle);\n               \n            //We dont want backside intersections\n            if (((int)(m_flags & IntersectionFlags.FLIPPED_TRIANGLES) == 0) &&\n                Vector3.Dot(m_line.Direction, calculatedTriangleNormal) > 0)\n                return null;\n                 \n            float? distance = MyUtils.GetLineTriangleIntersection(ref m_line, ref triangle);\n\n            //  If intersection occured and if distance to intersection is closer to origin than any previous intersection\n            if ((distance != null) && ((result == null) || (distance.Value < result.Value.Distance)))\n            {\n                //  We need to remember original triangleVertexes coordinates (not transformed by world matrix)\n                result = new MyIntersectionResultLineTriangle(ref triangle, ref calculatedTriangleNormal, distance.Value);\n                return distance.Value;\n            }\n            return null;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Physics/Collisions/RBElements/MyRBElement.cs",
    "content": "﻿#region Using Statements\n\nusing System.Collections.Generic;\nusing MinerWarsMath;\n\n#endregion\n\nnamespace MinerWars.AppCode.Physics\n{\n    //////////////////////////////////////////////////////////////////////////\n    /// <summary>\n    /// RBElement that is making the shape of a rigid body. This is what defines the collision of a rigid body.\n    /// </summary>\n    abstract class MyRBElement : MyElement\n    {\n        #region interface\n\n        public MyRigidBody GetRigidBody() { return m_RigidBody; }\n\n        public virtual MyRBElementType GetElementType() { return MyRBElementType.ET_UNKNOWN; }\n\n        public override bool LoadFromDesc(MyElementDesc desc)\n        {\n            base.LoadFromDesc(desc);\n\n            CollisionLayer = ((MyRBElementDesc)desc).m_CollisionLayer;\n\n            LocalTransformation = ((MyRBElementDesc)desc).m_Matrix;\n            RBElementMaterial = ((MyRBElementDesc)desc).m_RBMaterial;\n\n            return true;\n        }\n\n        public MyRBMaterial RBElementMaterial { get { return this.m_RBMaterial; } set { this.m_RBMaterial = value; } }\n\n        /// <summary>\n        /// Group mask used for collision filtering\n        /// </summary>\n        public MyGroupMask GroupMask { get { return this.m_GroupMask; } set { this.m_GroupMask = value; } }\n\n        public override Matrix GetGlobalTransformation() \n        { \n            return m_Matrix * m_RigidBody.Matrix; \n        }\n\n        /// <summary>\n        /// Closest point computation\n        /// </summary>\n        public virtual void GetClosestPoint(Vector3 point, ref Vector3 closestPoint, ref Vector3 normal, ref bool penetration, ref uint customData)\n        {\n\n        }\n\n        #endregion\n\n        #region members\n\n        private MyRBMaterial m_RBMaterial;\n        private MyGroupMask m_GroupMask;\n        private MyRigidBody m_RigidBody;\n        private List<MyRBElementInteraction> m_ElementInteractions;\n\n        #endregion\n\n        #region implementation\n\n        public List<MyRBElementInteraction> GetRBElementInteractions() { return m_ElementInteractions; }\n\n        public MyRBElement()\n        {\n            m_RBMaterial = new MyRBMaterial(0.5f, 0.5f, 0.7f, 0);\n            m_RigidBody = null;\n            m_ElementInteractions = new List<MyRBElementInteraction>(2);\n\n            Flags = MyElementFlag.EF_RB_ELEMENT | MyElementFlag.EF_AABB_DIRTY;\n            m_GroupMask = new MyGroupMask();\n        }\n\n        public void SetRigidBody(MyRigidBody rbo)\n        {\n            m_RigidBody = rbo;\n        }\n\n        #endregion\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Physics/Collisions/RBElements/MyRBElementDefs.cs",
    "content": "﻿#region Using Statements\n\nusing System.Collections.Generic;\nusing MinerWarsMath;\n\n#endregion\n\nnamespace MinerWars.AppCode.Physics\n{\n    //////////////////////////////////////////////////////////////////////////\n    /// <summary>\n    /// element types\n    /// </summary>\n    public enum MyRBElementType\n    {        \n        ET_SPHERE = 0,\n        ET_BOX = 1,\n        ET_CAPSULE = 2,\n        ET_TRIANGLEMESH = 3,\n        ET_VOXEL = 4,\n        ET_LAST = 5,\n        ET_UNKNOWN,\n    }\n\n    //////////////////////////////////////////////////////////////////////////\n    /// <summary>\n    /// element flags\n    /// </summary>\n    public enum MyElementFlag\n    {        \n        EF_AABB_DIRTY = 1 << 1,\n        EF_SENSOR_ELEMENT = 1 << 2,\n        EF_RB_ELEMENT = 1 << 3,\n        EF_MODEL_PREFER_LOD0 = 1 << 4,\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Physics/Collisions/RBElements/MyRBElementDesc.cs",
    "content": "﻿#region Using Statements\n\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Models;\n\n#endregion\n\nnamespace MinerWars.AppCode.Physics\n{\n    //////////////////////////////////////////////////////////////////////////\n    /// <summary>\n    /// RBElement desctriptor\n    /// </summary>\n    abstract class MyRBElementDesc: MyElementDesc\n    {        \n        public Matrix           m_Matrix;\n        public ushort           m_CollisionLayer;\n        public MyRBMaterial     m_RBMaterial;\n\n        public virtual MyRBElementType GetElementType() { return MyRBElementType.ET_UNKNOWN; }\n\n        public virtual void SetToDefault()\n        {\n            m_Matrix = Matrix.Identity;\n            m_CollisionLayer = 0;\n            m_RBMaterial = null;\n        }\n\n        public override bool IsValid()\n        {\n            if(m_CollisionLayer > 31)\n                return false;\n\n            if (m_RBMaterial == null)\n                return false;\n\n            return true;\n        }\n    }\n\n    //////////////////////////////////////////////////////////////////////////\n    /// <summary>\n    /// Box element descriptor\n    /// </summary>\n    class MyRBBoxElementDesc: MyRBElementDesc\n    {\n        public Vector3 m_Size;\n\n        public override void SetToDefault()\n        {\n            base.SetToDefault();\n\n            m_Size.X = 1.0f;\n            m_Size.Y = 1.0f;\n            m_Size.Z = 1.0f;\n        }\n\n        public override bool IsValid()\n        {\n            if (!base.IsValid())\n                return false;\n\n            if (m_Size.X <= 0.0f)\n                return false;\n\n            if (m_Size.Y <= 0.0f)\n                return false;\n\n            if (m_Size.Z <= 0.0f)\n                return false;\n\n            return true;\n        }\n\n        public override MyRBElementType GetElementType() { return MyRBElementType.ET_BOX; }\n    }\n\n    //////////////////////////////////////////////////////////////////////////\n    /// <summary>\n    /// Sphere element descriptor\n    /// </summary>\n    class MyRBSphereElementDesc: MyRBElementDesc\n    {\n        public float m_Radius;\n\n        public override void SetToDefault()\n        {\n            base.SetToDefault();\n            m_Radius = 1.0f;\n        }\n\n        public override bool IsValid()\n        {\n            if (!base.IsValid())\n                return false;\n\n            if (m_Radius <= 0.0f)\n                return false;\n\n            return true;\n        }\n\n        public override MyRBElementType GetElementType() { return MyRBElementType.ET_SPHERE; }\n    }\n\n    //////////////////////////////////////////////////////////////////////////\n    /// <summary>\n    /// Capsule element descriptor - capsules are not implemented now\n    /// </summary>\n    class MyRBCapsuleElementDesc : MyRBElementDesc\n    {\n        public float m_Radius;\n        public float m_Height;\n\n        public override void SetToDefault()\n        {\n            base.SetToDefault();\n            m_Radius = 1.0f;\n            m_Height = 1.0f;\n        }\n\n        public override bool IsValid()\n        {\n            if (!base.IsValid())\n                return false;\n            if (m_Radius <= 0.0f)\n                return false;\n\n            if (m_Height <= 0.0f)\n                return false;\n\n            return true;\n        }\n\n        public override MyRBElementType GetElementType() { return MyRBElementType.ET_CAPSULE; }\n    }\n\n    //////////////////////////////////////////////////////////////////////////\n    /// <summary>\n    /// Triangle mesh descriptor\n    /// </summary>\n    class MyRBTriangleMeshElementDesc: MyRBElementDesc\n    {\n\n        public override void SetToDefault()\n        {\n            base.SetToDefault();\n\n            Model = null;\n            ModelLOD0 = null;\n        }\n\n        public override bool IsValid()\n        {\n            if (!base.IsValid())\n                return false;\n\n            if(Model == null)\n                return false;\n\n            return true;\n        }\n\n        public override MyRBElementType GetElementType() { return MyRBElementType.ET_TRIANGLEMESH; }\n\n        public MyModel Model;\n        public MyModel ModelLOD0; \n    }\n\n    //////////////////////////////////////////////////////////////////////////\n    /// <summary>\n    /// Voxel map element descriptor\n    /// </summary>\n    class MyRBVoxelElementDesc : MyRBElementDesc\n    {\n        public Vector3 m_Size;\n\n        public override void SetToDefault()\n        {\n            base.SetToDefault();\n\n        }\n\n        public override bool IsValid()\n        {\n            if (!base.IsValid())\n                return false;\n\n            return true;\n        }\n\n        public override MyRBElementType GetElementType() { return MyRBElementType.ET_VOXEL; }\n    }\n\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Physics/Collisions/RBElements/MyRBMaterial.cs",
    "content": "﻿#region Using Statements\n\nusing System.Collections.Generic;\nusing MinerWarsMath;\n\n#endregion\n\nnamespace MinerWars.AppCode.Physics\n{\n    //////////////////////////////////////////////////////////////////////////\n    /// <summary>\n    /// RBMaterial for material properties.\n    /// </summary>\n    class MyRBMaterial\n    {\n        #region interface\n        public float NominalStaticFriction { get { return this.m_NominalStaticFriction; } set { this.m_NominalStaticFriction = value; } }\t\t\t\n\n\t\tpublic float NominalDynamicFriction { get { return this.m_NominalDynamicFriction; } set { this.m_NominalDynamicFriction = value; } }\n\n\t\tpublic float NominalRestitution { get { return this.m_NominalRestitution; } set { this.m_NominalRestitution = value; } }\n\n\t\tpublic System.Int32 MaterialGUID { get { return this.m_MaterialGUID; } set { this.m_MaterialGUID = value; } }\n\n        public MyRBMaterial(float nsf, float ndf, float nr, System.Int32 guid)\n        {\n            m_NominalDynamicFriction = ndf;\n            m_NominalRestitution = nr;\n            m_NominalStaticFriction = nsf;\n            m_MaterialGUID = guid;\n        }\n\n        #endregion\n\n        private float\t\t    m_NominalStaticFriction;\n        private float\t\t    m_NominalDynamicFriction; \n\t\tprivate float\t\t    m_NominalRestitution;\n        private System.Int32    m_MaterialGUID;\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Physics/Collisions/RBElements/Types/Geometry/MyBox.cs",
    "content": "﻿\n#region Using Statements\n\n\n#endregion\n\nusing MinerWarsMath;\nusing SysUtils.Utils;\n\nnamespace MinerWars.AppCode.Physics\n{\n    //////////////////////////////////////////////////////////////////////////\n    /// <summary>\n    /// Support class for the internal box collision detection\n    /// </summary>\n    public class MyBox\n    {        \n\n        #region public struct Edge\n        /// <summary>\n        /// Edge just contains indexes into the points returned by GetCornerPoints.\n        /// </summary>\n        public struct Edge\n        {\n            public BoxPointIndex Ind0;\n            public BoxPointIndex Ind1;\n\n            public Edge(BoxPointIndex ind0, BoxPointIndex ind1)\n            {\n                this.Ind0 = ind0;\n                this.Ind1 = ind1;\n            }\n        }\n        #endregion\n\n        #region public enum BoxPointIndex\n        /// <summary>\n        /// Indices into the points returned by GetCornerPoints\n        /// </summary>\n        public enum BoxPointIndex\n        {\n            BRD, BRU, BLD, BLU,\n            FRD, FRU, FLD, FLU\n        }\n        #endregion\n\n        public MyTransform Transform;\n        private Vector3 m_sideLengths;\n\n\n        // must match with GetCornerPoints!\n        private static Edge[] edges = new Edge[12]\n            { \n                new Edge(BoxPointIndex.BRD,BoxPointIndex.BRU), // origin-up\n                new Edge(BoxPointIndex.BRD,BoxPointIndex.BLD), // origin-left\n                new Edge(BoxPointIndex.BRD,BoxPointIndex.FRD), // origin-fwd\n                new Edge(BoxPointIndex.BLD,BoxPointIndex.BLU), // leftorigin-up\n                new Edge(BoxPointIndex.BLD,BoxPointIndex.FLD), // leftorigin-fwd\n                new Edge(BoxPointIndex.FRD,BoxPointIndex.FRU), // fwdorigin-up\n                new Edge(BoxPointIndex.FRD,BoxPointIndex.FLD), // fwdorigin-left\n                new Edge(BoxPointIndex.BRU,BoxPointIndex.BLU), // uporigin-left\n                new Edge(BoxPointIndex.BRU,BoxPointIndex.FRU), // uporigin-fwd\n                new Edge(BoxPointIndex.BLU,BoxPointIndex.FLU), // upleftorigin-fwd\n                new Edge(BoxPointIndex.FRU,BoxPointIndex.FLU), // upfwdorigin-left\n                new Edge(BoxPointIndex.FLD,BoxPointIndex.FLU), // fwdleftorigin-up\n            };\n        private Vector3[] m_outPoints = new Vector3[8];\n\n\n        /// <summary>\n        /// m_initialSunWindPosition/orientation are based on one corner the box. Sides are\n        /// the full side lengths\n        /// </summary>\n        /// <param name=\"pos\"></param>\n        /// <param name=\"orient\"></param>\n        /// <param name=\"m_SideLengths\"></param>\n        public MyBox( Matrix matrix, Vector3 m_SideLengths)\n        {\n            Matrix tMa = matrix;\n            tMa.Translation = Vector3.Zero;\n            this.Transform = new MyTransform(matrix.Translation, tMa);\n            this.m_sideLengths = m_SideLengths;\n        }\n\n\n\n        /// <summary>\n        /// Get/set the box corner/origin position\n        /// </summary>\n        public Vector3 Position\n        {\n            get { return Transform.Position; }\n            set { Transform.Position = value; }\n        }\n\n        /// <summary>\n        /// Get the box centre position\n        /// </summary>\n        /// <returns></returns>\n        public Vector3 GetCentre()\n        {\n            Vector3 result = new Vector3(\n                    m_sideLengths.X * 0.5f,\n                    m_sideLengths.Y * 0.5f,\n                    m_sideLengths.Z * 0.5f);\n\n            Vector3.TransformNormal(ref result, ref Transform.Orientation, out result);\n            Vector3.Add(ref result, ref Transform.Position, out result);\n\n            return result;\n        }\n\n        public void GetCentre(out Vector3 centre)\n        {\n            centre = new Vector3(\n                m_sideLengths.X * 0.5f,\n                m_sideLengths.Y * 0.5f,\n                m_sideLengths.Z * 0.5f);\n\n            Vector3.Transform(ref centre, ref Transform.Orientation, out centre);\n            Vector3.Add(ref centre, ref Transform.Position, out centre);\n        }\n\n        /// <summary>\n        /// Get bounding radius around the centre\n        /// </summary>\n        /// <returns></returns>\n        public float GetBoundingRadiusAroundCentre()\n        {\n            return 0.5f * m_sideLengths.Length();\n        }\n\n        /// <summary>\n        /// Get/Set the box orientation\n        /// </summary>\n        public Matrix Orientation\n        {\n            get { return Transform.Orientation; }\n            set { Transform.Orientation = value; }\n        }\n\n        /// <summary>\n        /// Get the three side lengths of the box\n        /// </summary>\n        /// <param name=\"m_SideLengths\"></param>\n        /// <returns></returns>\n        public Vector3 SideLengths\n        {\n            get { return this.m_sideLengths; }\n            set { this.m_sideLengths = value; }\n        }\n\n        /// <summary>\n        /// Expands box by amount on each side (in both +ve and -ve directions)\n        /// </summary>\n        /// <param name=\"amount\"></param>\n        public void Expand(Vector3 amount)\n        {\n            Transform.Position -= Vector3.TransformNormal(amount, Transform.Orientation);\n            m_sideLengths += m_sideLengths + 2.0f * amount;\n        }\n\n        /// <summary>\n        /// Returns the half-side lengths.\n        /// </summary>\n        /// <returns></returns>\n        public Vector3 GetHalfSideLengths()\n        {\n            Vector3 result = new Vector3(\n                m_sideLengths.X * 0.5f,\n                m_sideLengths.Y * 0.5f,\n                m_sideLengths.Z * 0.5f);\n\n            return result;\n        }\n\n        /// <summary>\n        /// Returns the vector representing the edge direction \n        /// </summary>\n        /// <param name=\"value\"></param>\n        /// <returns></returns>\n        public Vector3 GetSide(int i)\n        {\n            return MyPhysicsUtils.MyPhysicsUnsafe.Get(Transform.Orientation, i) *\n                MyPhysicsUtils.MyPhysicsUnsafe.Get(ref m_sideLengths, i);\n        }\n\n        /// <summary>\n        /// Returns the squared distance \n        /// todo remove this/put it in distance fns\n        /// </summary>\n        /// <param name=\"closestBoxPoint\"></param>\n        /// <param name=\"point\"></param>\n        /// <returns></returns>\n        public float GetSqDistanceToPoint(out Vector3 closestBoxPoint, Vector3 point)\n        {\n            closestBoxPoint = Vector3.TransformNormal(point - Transform.Position, Matrix.Transpose(Transform.Orientation));\n\n            float sqDistance = 0.0f;\n            float delta;\n\n            if (closestBoxPoint.X < 0.0f)\n            {\n                sqDistance += closestBoxPoint.X * closestBoxPoint.X;\n                closestBoxPoint.X = 0.0f;\n            }\n            else if (closestBoxPoint.X > m_sideLengths.X)\n            {\n                delta = closestBoxPoint.X - m_sideLengths.X;\n                sqDistance += delta * delta;\n                closestBoxPoint.X = m_sideLengths.X;\n            }\n\n            if (closestBoxPoint.Y < 0.0f)\n            {\n                sqDistance += closestBoxPoint.Y * closestBoxPoint.Y;\n                closestBoxPoint.Y = 0.0f;\n            }\n            else if (closestBoxPoint.Y > m_sideLengths.Y)\n            {\n                delta = closestBoxPoint.Y - m_sideLengths.Y;\n                sqDistance += delta * delta;\n                closestBoxPoint.Y = m_sideLengths.Y;\n            }\n\n            if (closestBoxPoint.Z < 0.0f)\n            {\n                sqDistance += closestBoxPoint.Z * closestBoxPoint.Z;\n                closestBoxPoint.Z = 0.0f;\n            }\n            else if (closestBoxPoint.Z > m_sideLengths.Z)\n            {\n                delta = closestBoxPoint.Z - m_sideLengths.Z;\n                sqDistance += delta * delta;\n                closestBoxPoint.Z = m_sideLengths.Z;\n            }\n\n            Vector3.TransformNormal(ref closestBoxPoint, ref Transform.Orientation, out closestBoxPoint);\n            Vector3.Add(ref Transform.Position, ref closestBoxPoint, out closestBoxPoint);\n\n            return sqDistance;\n        }\n\n        /// <summary>\n        /// Returns the distance from the point to the box, (-ve if the\n        /// point is inside the box), and optionally the closest point on\n        /// the box.\n        /// TODO make this actually return -ve if inside\n        /// todo remove this/put it in distance fns\n        /// </summary>\n        /// <param name=\"closestBoxPoint\"></param>\n        /// <param name=\"point\"></param>\n        /// <returns></returns>\n        public float GetDistanceToPoint(out Vector3 closestBoxPoint,\n             Vector3 point)\n        {\n            return (float)System.Math.Sqrt(GetSqDistanceToPoint(out closestBoxPoint, point));\n        }\n        \n        /// <summary>\n        /// Gets the minimum and maximum extents of the box along the\n        /// axis, relative to the centre of the box.\n        /// </summary>\n        /// <param name=\"min\"></param>\n        /// <param name=\"max\"></param>\n        /// <param name=\"axis\"></param>\n        public void GetSpan(out float min, out float max, Vector3 axis)\n        {\n            float s, u, d;\n            Vector3 right = Transform.Orientation.Right;\n            Vector3 up = Transform.Orientation.Up;\n            Vector3 back = Transform.Orientation.Backward;\n\n            Vector3.Dot(ref axis, ref right, out s);\n            Vector3.Dot(ref axis, ref up, out u);\n            Vector3.Dot(ref axis, ref back, out d);\n\n            s = System.Math.Abs(s * 0.5f * m_sideLengths.X);\n            u = System.Math.Abs(u * 0.5f * m_sideLengths.Y);\n            d = System.Math.Abs(d * 0.5f * m_sideLengths.Z);\n\n            float r = s + u + d;\n            GetCentre(out right);\n            float p;\n            Vector3.Dot(ref right,ref axis,out p);\n            min = p - r;\n            max = p + r;\n        }\n        \n        /// <summary>\n        /// Gets the corner points, populating pts\n        /// </summary>\n        /// <param name=\"pts\"></param>\n        public void GetCornerPoints(out Vector3[] pts)\n        {\n            pts = m_outPoints;\n            pts[(int)BoxPointIndex.BRD] = Transform.Position;\n            pts[(int)BoxPointIndex.FRD] = Transform.Position + m_sideLengths.X * Transform.Orientation.Right;\n            pts[(int)BoxPointIndex.BLD] = Transform.Position + m_sideLengths.Y * Transform.Orientation.Up;\n            pts[(int)BoxPointIndex.BRU] = Transform.Position + m_sideLengths.Z * Transform.Orientation.Backward;\n            pts[(int)BoxPointIndex.FLD] = pts[(int)BoxPointIndex.BLD] + m_sideLengths.X * Transform.Orientation.Right;\n            pts[(int)BoxPointIndex.BLU] = pts[(int)BoxPointIndex.BRU] + m_sideLengths.Y * Transform.Orientation.Up;\n            pts[(int)BoxPointIndex.FRU] = pts[(int)BoxPointIndex.FRD] + m_sideLengths.Z * Transform.Orientation.Backward;\n            pts[(int)BoxPointIndex.FLU] = pts[(int)BoxPointIndex.FLD] + m_sideLengths.Z * Transform.Orientation.Backward;\n        }\n\n        /// <summary>\n        /// Returns a (const) list of 12 edges - at the moment in this order:\n        /// {BRD, BRU}, // origin-up\n        /// {BRD, BLD}, // origin-left\n        /// {BRD, FRD}, // origin-fwd\n        /// {BLD, BLU}, // leftorigin-up\n        /// {BLD, FLD}, // leftorigin-fwd\n        /// {FRD, FRU}, // fwdorigin-up\n        /// {FRD, FLD}, // fwdorigin-left\n        /// {BRU, BLU}, // uporigin-left\n        /// {BRU, FRU}, // uporigin-fwd\n        /// {BLU, FLU}, // upleftorigin-fwd\n        /// {FRU, FLU}, // upfwdorigin-left\n        /// {FLD, FLU}, // fwdleftorigin-up\n        /// </summary>\n        /// <returns></returns>\n        public void GetEdges(out Edge[] edg)\n        {\n            edg = edges;\n        }\n\n        /// <summary>\n        /// EdgeIndices will contain indexes into the result of GetAllEdges\n        /// </summary>\n        /// <param name=\"edgeIndices\"></param>\n        /// <param name=\"pt\"></param>\n        public void GetEdgesAroundPoint(out int[] edgeIndices, BoxPointIndex pt)\n        {\n            edgeIndices = new int[3];\n            int ind = 0;\n            \n            for (int i = 0; i < edges.Length; ++i)\n            {\n                if ((edges[i].Ind0 == pt) || (edges[i].Ind1 == pt))\n                    edgeIndices[ind++] = i;\n                if (ind == 3) return;\n            }\n        }\n\n        public float GetSurfaceArea()\n        {\n            return 2.0f * (m_sideLengths.X * m_sideLengths.Y + m_sideLengths.X * m_sideLengths.Z + m_sideLengths.Y * m_sideLengths.Z);\n        }\n\n        public float GetVolume()\n        {\n            return m_sideLengths.X * m_sideLengths.Y * m_sideLengths.Z;\n        }\n\n        public bool SegmentIntersect(out float fracOut, out Vector3 posOut, out Vector3 normalOut, MySegment seg)\n        {\n            fracOut = float.MaxValue;\n            posOut = normalOut = Vector3.Zero;\n\n            // algo taken from p674 of realting rendering\n            // needs debugging\n            float min = float.MinValue;\n            float max = float.MaxValue;\n\n            Vector3 p = GetCentre() - seg.Origin;\n            Vector3 h;\n            h.X = m_sideLengths.X * 0.5f;\n            h.Y = m_sideLengths.Y * 0.5f;\n            h.Z = m_sideLengths.Z * 0.5f;\n\n            int dirMax = 0;\n            int dirMin = 0;\n            int dir = 0;\n\n            //Vector3[] matrixVec = new Vector3[3];\n            MyVector3Array3 matrixVec = new MyVector3Array3();\n            matrixVec[0] = Transform.Orientation.Right;\n            matrixVec[1] = Transform.Orientation.Up;\n            matrixVec[2] = Transform.Orientation.Backward;\n\n            //float[] vectorFloat = new float[3];\n            MyFloatArray3 vectorFloat = new MyFloatArray3(); \n            vectorFloat[0] = h.X;\n            vectorFloat[1] = h.Y;\n            vectorFloat[2] = h.Z;\n\n            for (dir = 0; dir < 3; dir++)\n            {\n                float e = Vector3.Dot(matrixVec[dir], p);\n                float f = Vector3.Dot(matrixVec[dir], seg.Delta);\n\n                if (System.Math.Abs(f) > MyPhysicsConfig.CollisionEpsilon)\n                {\n                    float t1 = (e + vectorFloat[dir]) / f;\n                    float t2 = (e - vectorFloat[dir]) / f;\n\n                    if (t1 > t2) { float tmp = t1; t1 = t2; t2 = tmp; }\n\n                    if (t1 > min)\n                    {\n                        min = t1;\n                        dirMin = dir;\n                    }\n                    if (t2 < max)\n                    {\n                        max = t2;\n                        dirMax = dir;\n                    }\n\n                    if (min > max)\n                        return false;\n\n                    if (max < 0.0f)\n                        return false;\n                }\n                else if ((-e - vectorFloat[dir] > 0.0f) ||\n                    (-e + vectorFloat[dir] < 0.0f))\n                {\n                    return false;\n                }\n            }\n\n            if (min > 0.0f)\n            {\n                dir = dirMin;\n                fracOut = min;\n            }\n            else\n            {\n                dir = dirMax;\n                fracOut = max;\n            }\n\n            fracOut = MathHelper.Clamp(fracOut, 0.0f, 1.0f);\n            posOut = seg.GetPoint(fracOut);\n            if (Vector3.Dot(matrixVec[dir], seg.Delta) > 0.0f)\n                normalOut = -matrixVec[dir];\n            else\n                normalOut = matrixVec[dir];\n\n            return true;\n        }    \n\n \n\n\n    }\n\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Physics/Collisions/RBElements/Types/MyRBBoxElement.cs",
    "content": "﻿#region Using Statements\n\nusing System.Collections.Generic;\nusing MinerWarsMath;\nusing SysUtils.Utils;\nusing MinerWars.AppCode.Game.Utils;\n#endregion\n\nnamespace MinerWars.AppCode.Physics\n{\n    //////////////////////////////////////////////////////////////////////////\n    /// <summary>\n    /// Box element\n    /// </summary>\n    class MyRBBoxElement: MyRBElement\n    {\n        #region interface\n\n        public MyRBBoxElement()\n        {\n            m_points = new Vector3[8];\n        }\n\n        public MyRBBoxElement(Vector3 size)\n            : this()\n        {\n            m_Size = size;\n        }\n\n        public override bool LoadFromDesc(MyElementDesc desc)\n        {\n            if (!desc.IsValid())\n                return false;\n\n            if (!base.LoadFromDesc(desc))\n                return false;\n\n            SetSize(((MyRBBoxElementDesc)desc).m_Size);\n            return true;\n        }\n\n        public Vector3 Size { get { return this.m_Size * 2.0f; } set { this.SetSize(value); } }\n\n        public override MyRBElementType GetElementType() { return MyRBElementType.ET_BOX; }\n\n        #endregion\n\n        #region members\n        private Vector3 m_Size;\n        //private Vector3 m_Extent;\n        private Vector3[] m_points;\n        #endregion\n\n        #region implementation\n\n        public override void UpdateAABB()\n        {\n            Matrix matrix = GetGlobalTransformation();            \n\n            m_AABB = m_AABB.CreateInvalid();\n            \n            BoundingBox box = new BoundingBox(-m_Size, m_Size);\n            box.GetCorners(m_points);\n            Vector3 point2;\n            Vector3 point1;\n\n            foreach (Vector3 point in m_points)\n            {\n                point1 = point;\n                Vector3.Transform(ref point1, ref matrix, out point2);\n                MyPhysicsUtils.BoundingBoxAddPoint(ref m_AABB, point2);\n            }\n\n\n\n            /*\n            Vector3 origin = matrix.Translation;\n            m_AABB.Min = origin;\n            m_AABB.Max = origin;\n\n            Vector3 rotSize = Vector3.TransformNormal(m_Size, GetGlobalTransformation());\n\n            m_Extent.X = rotSize.X;\n            m_Extent.Y = rotSize.Y;\n            m_Extent.Z = rotSize.Z;\n\n            MyPhysicsUtils.BoundingBoxAddPoint(ref m_AABB, origin + m_Extent);\n\n            m_Extent.X = -rotSize.X;\n            m_Extent.Y = rotSize.Y;\n            m_Extent.Z = rotSize.Z;\n\n            MyPhysicsUtils.BoundingBoxAddPoint(ref m_AABB, origin+m_Extent);\n\n            m_Extent.X = -rotSize.X;\n            m_Extent.Y = -rotSize.Y;\n            m_Extent.Z = rotSize.Z;\n\n            MyPhysicsUtils.BoundingBoxAddPoint(ref m_AABB, origin+m_Extent);\n\n            m_Extent.X = -rotSize.X;\n            m_Extent.Y = -rotSize.Y;\n            m_Extent.Z = -rotSize.Z;\n\n            MyPhysicsUtils.BoundingBoxAddPoint(ref m_AABB, origin+m_Extent);\n\n            m_Extent.X = rotSize.X;\n            m_Extent.Y = -rotSize.Y;\n            m_Extent.Z = rotSize.Z;\n\n            MyPhysicsUtils.BoundingBoxAddPoint(ref m_AABB,origin+ m_Extent);\n\n            m_Extent.X = rotSize.X;\n            m_Extent.Y = -rotSize.Y;\n            m_Extent.Z = -rotSize.Z;\n\n            MyPhysicsUtils.BoundingBoxAddPoint(ref m_AABB,origin+ m_Extent);\n\n            m_Extent.X = rotSize.X;\n            m_Extent.Y = rotSize.Y;\n            m_Extent.Z = -rotSize.Z;\n\n            MyPhysicsUtils.BoundingBoxAddPoint(ref m_AABB,origin+ m_Extent);\n\n            m_Extent.X = -rotSize.X;\n            m_Extent.Y = rotSize.Y;\n            m_Extent.Z = -rotSize.Z;\n\n            MyPhysicsUtils.BoundingBoxAddPoint(ref m_AABB,origin+ m_Extent);\n            */\n            base.UpdateAABB();\n        }\n\n        void SetSize(Vector3 size)\n        {\n            m_Size = size * 0.5f;\n            Flags |= MyElementFlag.EF_AABB_DIRTY;            \n\n            //if (GetRigidBody() != null)\n              //  MyPhysics.physicsSystem.GetRigidBodyModule().AddActiveRigid(GetRigidBody());\n        }\n\n        public override void GetClosestPoint(Vector3 point, ref Vector3 closestPoint, ref Vector3 normal, ref bool penetration, ref uint customData)\n        {\n            closestPoint = point;\n            bool p = true;\n\n            Vector3 corner = m_Size*0.5f;\n\n            if (point.X < -corner.X)\n            {\n                closestPoint.X = -corner.X;\n                p = false;\n            }\n            else if (point.X > corner.X)\n            {\n                closestPoint.X = corner.X;\n                p = false;\n            }\n\n            if (point.Y < -corner.Y)\n            {\n                closestPoint.Y = -corner.Y;\n                p = false;\n            }\n            else if (point.Y > corner.Y)\n            {\n                closestPoint.Y = corner.Y;\n                p = false;\n            }\n\n            if (point.Z < -corner.Z)\n            {\n                closestPoint.Z = -corner.Z;\n                p = false;\n            }\n            else if (point.Z > corner.Z)\n            {\n                closestPoint.Z = corner.Z;\n                p = false;\n            }\n\n            if (p)\n            {\n                float pX = corner.X - System.Math.Abs(closestPoint.X);\n                float pY = corner.Y - System.Math.Abs(closestPoint.Y);\n                float pZ = corner.Z - System.Math.Abs(closestPoint.Z);\n                if (pX < pY)\n                {\n                    if (pX < pZ)\n                    {\n                        if (closestPoint.X > 0) closestPoint.X += pX;\n                        else closestPoint.X -= pX;\n                    }\n                    else\n                    {\n                        if (closestPoint.Z > 0) closestPoint.Z += pZ;\n                        else closestPoint.Z -= pZ;\n                    }\n                }\n                else\n                {\n                    if (pY < pZ)\n                    {\n                        if (closestPoint.Y > 0) closestPoint.Y += pY;\n                        else closestPoint.Y -= pY;\n                    }\n                    else\n                    {\n                        if (closestPoint.Z > 0) closestPoint.Z += pZ;\n                        else closestPoint.Z -= pZ;\n                    }\n                }\n            }\n\n            penetration = p;\n\n            if (p)\n                normal = closestPoint - point;\n            else\n                normal = point - closestPoint;\n        }\n\n        #endregion\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Physics/Collisions/RBElements/Types/MyRBCapsuleElement.cs",
    "content": "﻿#region Using Statements\n\nusing System.Collections.Generic;\nusing MinerWarsMath;\n\n#endregion\n\nnamespace MinerWars.AppCode.Physics\n{\n    //////////////////////////////////////////////////////////////////////////\n    /// <summary>\n    /// Capsule element\n    /// </summary>\n    class MyRBCapsuleElement: MyRBElement\n    {        \n        #region interface\n\n        public MyRBCapsuleElement()\n        {\n        }\n\n        public MyRBCapsuleElement(float radius, float height)\n        {\n            m_Radius = radius;\n            m_Height = height;\n        }\n\n        public override bool LoadFromDesc(MyElementDesc desc)\n        {\n            if (!desc.IsValid())\n                return false;\n\n            if (!base.LoadFromDesc(desc))\n                return false;\n\n            SetRadius(((MyRBCapsuleElementDesc)desc).m_Radius);\n            SetHeight(((MyRBCapsuleElementDesc)desc).m_Height);\n            return true;\n        }\n\n        public float Radius { get { return this.m_Radius; } set { this.SetRadius(value); } }\n        public float Height { get { return this.m_Height; } set { this.SetHeight(value); } }\n\n        public override MyRBElementType GetElementType() { return MyRBElementType.ET_CAPSULE; }\n\n        #endregion\n\n        #region members\n        private float m_Radius;\n        private float m_Height;\n        #endregion\n\n        #region implementation\n        void SetRadius(float radius)\n        {\n            m_Radius = radius;\n\n            Flags |= MyElementFlag.EF_AABB_DIRTY;            \n\n            //if (GetRigidBody() != null)\n                //MyPhysics.physicsSystem.GetRigidBodyModule().AddActiveRigid(GetRigidBody());\n        }\n\n        void SetHeight(float height)\n        {\n            m_Height = height;\n\n            Flags |= MyElementFlag.EF_AABB_DIRTY;            \n\n            //if (GetRigidBody() != null)\n                //MyPhysics.physicsSystem.GetRigidBodyModule().AddActiveRigid(GetRigidBody());\n        }\n\n        public override void UpdateAABB()\n        {\n            Vector3 origin = GetGlobalTransformation().Translation;\n\n            m_AABB.Max = origin;\n            m_AABB.Min = origin;\n\n            Vector3 extent = new Vector3();\n            extent.X = m_Height + m_Radius;\n            extent.Y = m_Height + m_Radius;\n            extent.Z = m_Height + m_Radius;\n\n            MyPhysicsUtils.BoundingBoxAddPoint(ref m_AABB, extent);\n\n            base.UpdateAABB();\n        }\n\n        #endregion\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Physics/Collisions/RBElements/Types/MyRBSphereElement.cs",
    "content": "﻿#region Using Statements\n\nusing System.Collections.Generic;\nusing MinerWarsMath;\n#endregion\n\nnamespace MinerWars.AppCode.Physics\n{\n    //////////////////////////////////////////////////////////////////////////\n    /// <summary>\n    /// Sphere element\n    /// </summary>\n    class MyRBSphereElement: MyRBElement\n    {\n        #region interface\n\n        public MyRBSphereElement()\n        {\n\n        }\n\n        public MyRBSphereElement(float radius)\n        {\n            m_Radius = radius;\n        }\n\n        public override bool LoadFromDesc(MyElementDesc desc)\n        {\n            if(!desc.IsValid())\n                return false;\n\n            if(!base.LoadFromDesc(desc))\n                return false;\n\n            SetRadius(((MyRBSphereElementDesc) desc).m_Radius);\n            return true;\n        }\n\n        public float Radius { get { return this.m_Radius; } set { this.SetRadius(value); } }\n\n        public override MyRBElementType GetElementType() { return MyRBElementType.ET_SPHERE; }\n\n        #endregion\n\n        public override void UpdateAABB()\n        {            \n            Vector3 origin = GetGlobalTransformation().Translation;\n            m_AABB.Min = origin - m_Extent;\n            m_AABB.Max = origin + m_Extent;\n            base.UpdateAABB();\n        }\n\n        #region members\n        private float   m_Radius;\n        private Vector3 m_Extent;\n        #endregion\n\n        #region implementation\n\n        void SetRadius(float radius)\n        {\n            m_Radius = radius;\n            m_Extent.X = m_Radius;\n            m_Extent.Y = m_Radius;\n            m_Extent.Z = m_Radius;\n\n            Flags |= MyElementFlag.EF_AABB_DIRTY;            \n\n            //if(GetRigidBody() != null)\n              //  MyPhysics.physicsSystem.GetRigidBodyModule().AddActiveRigid(GetRigidBody());\n        }\n\n        // in local space!\n        public override void GetClosestPoint(Vector3 point, ref Vector3 closestPoint, ref Vector3 normal, ref bool penetration, ref uint customData)\n        {\n            float dist = point.Length();\n            penetration = (dist < m_Radius);\n\n            //Handle case when point is in sphere origin\n            if (dist == 0)\n            {\n                normal.X = 1.0f;\n                normal.Y = 0.0f;\n                normal.Z = 0.0f;\n                closestPoint.X = m_Radius;\n                closestPoint.Y = 0.0f;\n                closestPoint.Z = 0.0f;\n            }\n            else\n            {\n                float d = dist;\n                normal = point/d;\n                closestPoint = point*(m_Radius / d);\n            }\n\n            customData = 0;\n        }\n\n#endregion\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Physics/Collisions/RBElements/Types/MyRBTriangleMeshElement.cs",
    "content": "﻿#region Using Statements\n\nusing System.Collections.Generic;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Models;\nusing MinerWars.AppCode.Game.Utils;\n\n#endregion\n\nnamespace MinerWars.AppCode.Physics\n{\n    //////////////////////////////////////////////////////////////////////////\n    /// <summary>\n    /// Triangle mesh element using the model data\n    /// </summary>\n    class MyRBTriangleMeshElement: MyRBElement\n    {\n        #region interface\n\n        public MyRBTriangleMeshElement()\n        {\n         \n        }\n\n        public MyModel Model { get { return m_Model; } set { SetModel(value); } }\n        public MyModel ModelLOD0 { get { return m_ModelLOD0; } set { SetModelLOD0(value); } }\n\n        protected void SetModel(MyModel model) \n        { \n            m_Model = model;\n            Flags |= MyElementFlag.EF_AABB_DIRTY;            \n\n            //if (GetRigidBody() != null)\n              //  MyPhysics.physicsSystem.GetRigidBodyModule().AddActiveRigid(GetRigidBody());\n        }\n\n\n        protected void SetModelLOD0(MyModel model)\n        {\n            m_ModelLOD0 = model;\n            Flags |= MyElementFlag.EF_AABB_DIRTY;\n\n            //if (GetRigidBody() != null)\n            //  MyPhysics.physicsSystem.GetRigidBodyModule().AddActiveRigid(GetRigidBody());\n        }\n        \n        public override MyRBElementType GetElementType() { return MyRBElementType.ET_TRIANGLEMESH; }\n\n        #endregion\n\n        #region members\n        MyModel m_Model;\n        MyModel m_ModelLOD0;\n        #endregion\n\n        #region implementation\n\n        public override void UpdateAABB()\n        {\n            base.UpdateAABB();\n\n            m_AABB = MyMath.CreateInvalidAABB();\n            \n            Matrix worldMat = GetGlobalTransformation();\n            \n            Vector3 center = m_Model.BoundingBox.GetCenter();\n            Vector3 extent = (m_Model.BoundingBox.Max - m_Model.BoundingBox.Min) * 0.5f;\n\n            Vector3 vec = center;\n            vec.X += extent.X;\n            vec.Y += extent.Y;\n            vec.Z += extent.Z;\n\n            Vector3 vecTmp = Vector3.Transform(vec, worldMat);\n            m_AABB = m_AABB.Include(ref vecTmp);\n\n            vec = center;\n            vec.X += -extent.X;\n            vec.Y += extent.Y;\n            vec.Z += extent.Z;\n\n            vecTmp = Vector3.Transform(vec, worldMat);\n            m_AABB = m_AABB.Include(ref vecTmp);\n\n            vec = center;\n            vec.X += -extent.X;\n            vec.Y += -extent.Y;\n            vec.Z += extent.Z;\n\n            vecTmp = Vector3.Transform(vec, worldMat);\n            m_AABB = m_AABB.Include(ref vecTmp);\n\n            vec = center;\n            vec.X += -extent.X;\n            vec.Y += -extent.Y;\n            vec.Z += -extent.Z;\n\n            vecTmp = Vector3.Transform(vec, worldMat);\n            m_AABB = m_AABB.Include(ref vecTmp);\n\n            vec = center;\n            vec.X += extent.X;\n            vec.Y += -extent.Y;\n            vec.Z += extent.Z;\n\n            vecTmp = Vector3.Transform(vec, worldMat);\n            m_AABB = m_AABB.Include(ref vecTmp);\n\n            vec = center;\n            vec.X += extent.X;\n            vec.Y += -extent.Y;\n            vec.Z += -extent.Z;\n\n            vecTmp = Vector3.Transform(vec, worldMat);\n            m_AABB = m_AABB.Include(ref vecTmp);\n\n            vec = center;\n            vec.X += extent.X;\n            vec.Y += extent.Y;\n            vec.Z += -extent.Z;\n\n            vecTmp = Vector3.Transform(vec, worldMat);\n            m_AABB = m_AABB.Include(ref vecTmp);\n\n            vec = center;\n            vec.X += -extent.X;\n            vec.Y += extent.Y;\n            vec.Z += -extent.Z;\n\n            vecTmp = Vector3.Transform(vec, worldMat);\n            m_AABB = m_AABB.Include(ref vecTmp);\n        }\n\n        public override bool LoadFromDesc(MyElementDesc desc)\n        {\n            if (!desc.IsValid())\n                return false;\n\n            if (!base.LoadFromDesc(desc))\n                return false;\n\n            MyRBTriangleMeshElementDesc tmDesc = (MyRBTriangleMeshElementDesc)desc;\n\n            SetModel(tmDesc.Model);\n            if (tmDesc.ModelLOD0 == null)\n                SetModelLOD0(tmDesc.Model);\n            else\n                SetModelLOD0(tmDesc.ModelLOD0);\n            return true;\n        }\n\n        #endregion\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Physics/Collisions/RBElements/Types/MyRBVoxelElement.cs",
    "content": "﻿#region Using Statements\n\nusing System.Collections.Generic;\nusing MinerWarsMath;\n\n#endregion\n\nnamespace MinerWars.AppCode.Physics\n{\n    //////////////////////////////////////////////////////////////////////////\n    /// <summary>\n    /// Voxel element\n    /// </summary>\n    class MyRBVoxelElement: MyRBElement\n    {\n        #region interface\n\n        public MyRBVoxelElement()\n        {\n            m_Size = Vector3.Zero;\n        }\n\n        public override MyRBElementType GetElementType() { return MyRBElementType.ET_VOXEL; }\n\n        #endregion\n\n        #region members\n\n        private Vector3 m_Size;\n\n        #endregion\n\n        #region implementation\n\n        public override bool LoadFromDesc(MyElementDesc desc)\n        {\n            if (!desc.IsValid())\n                return false;\n\n            if (!base.LoadFromDesc(desc))\n                return false;\n\n            MyRBVoxelElementDesc vd = (MyRBVoxelElementDesc) desc;\n\n            Size = vd.m_Size;\n\n            return true;\n        }\n\n        public Vector3 Size\n        {\n            set { m_Size = value; Flags |= MyElementFlag.EF_AABB_DIRTY; }\n            get { return m_Size; }\n        }\n\n        public override void UpdateAABB()\n        {\n            Vector3 origin = GetGlobalTransformation().Translation;\n            Vector3 sizeHalf = m_Size/2;\n            m_AABB.Min = origin - sizeHalf;\n            m_AABB.Max = origin + sizeHalf;            \n            base.UpdateAABB();\n        }\n\n        #endregion\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Physics/Collisions/SensorElements/MyBoxSensorElement.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Utils;\n\nnamespace MinerWars.AppCode.Physics\n{    \n    /// <summary>\n    /// Box sensor element implement AABB stuff\n    /// </summary>\n    class MyBoxSensorElement : MySensorElement\n    {\n        #region interface\n\n        public MyBoxSensorElement()\n        {\n            m_points = new Vector3[8];\n        }\n\n        public MyBoxSensorElement(Vector3 size)\n            : this()\n        {\n            SetSize(size);\n        }\n\n        public override bool LoadFromDesc(MyElementDesc desc)\n        {\n            base.LoadFromDesc(desc);\n\n            MyBoxSensorElementDesc se = (MyBoxSensorElementDesc)desc;\n\n            m_Matrix = se.m_Matrix;\n\n            SetSize(se.Size);\n\n            return true;\n        }\n\n        public Vector3 Size { get { return this.m_size; } set { this.SetSize(value); } }\n        public Vector3 Extent { get { return m_extent; } }\n\n        public override MySensorElementType GetElementType() { return MySensorElementType.ET_BOX; }\n\n        #endregion\n\n        public override void UpdateAABB()\n        {\n            Matrix matrix = GetGlobalTransformation();\n            m_AABB = m_AABB.CreateInvalid();\n\n            BoundingBox box = new BoundingBox(-m_extent, m_extent);\n            box.GetCorners(m_points);\n            Vector3 point2;\n            Vector3 point1;\n\n            foreach (Vector3 point in m_points)\n            {\n                point1 = point;\n                Vector3.Transform(ref point1, ref matrix, out point2);\n                MyPhysicsUtils.BoundingBoxAddPoint(ref m_AABB, point2);\n            }\n            base.UpdateAABB();\n        }\n\n        #region members        \n        private Vector3 m_size;\n        private Vector3 m_extent;\n        private Vector3[] m_points;\n        #endregion\n\n        #region implementation\n        public override void SetSize(Vector3 size)\n        {\n            m_size = size;\n            m_extent = size / 2f;\n\n            Flags |= MyElementFlag.EF_AABB_DIRTY;\n\n            if (Sensor != null)\n            {\n                MyPhysics.physicsSystem.GetSensorModule().MoveSensor(Sensor, true);\n            }\n        }\n\n        #endregion\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Physics/Collisions/SensorElements/MySensorElement.cs",
    "content": "﻿#region Using Statements\n\nusing System.Collections.Generic;\nusing MinerWarsMath;\n\n#endregion\n\nnamespace MinerWars.AppCode.Physics\n{\n    /// <summary>\n    /// Sensor element used for sensors\n    /// </summary>\n    abstract class MySensorElement: MyElement\n    {\n        public MySensorElement()\n        {\n            m_Sensor = null;\n            Flags = MyElementFlag.EF_SENSOR_ELEMENT | MyElementFlag.EF_AABB_DIRTY;\n            DetectRigidBodyTypes = null;\n        }\n\n        public virtual MySensorElementType GetElementType() { return MySensorElementType.ET_UNKNOWN; }\n\n        public override Matrix GetGlobalTransformation() { return m_Matrix * m_Sensor.Matrix; }\n\n        public MySensor Sensor { set { m_Sensor = value; } get { return m_Sensor; } }\n\n        private MySensor m_Sensor;\n\n        public uint? DetectRigidBodyTypes { get; set; }\n\n        public abstract void SetSize(Vector3 size);\n\n        public void Close() \n        {\n            m_Sensor = null;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Physics/Collisions/SensorElements/MySensorElementDefs.cs",
    "content": "﻿#region Using Statements\n\nusing System.Collections.Generic;\nusing MinerWarsMath;\n\n#endregion\n\nnamespace MinerWars.AppCode.Physics\n{\n\tpublic enum MySensorElementType\n\t{\n        ET_UNKNOWN = 0,\n        ET_SPHERE,       \n        ET_BOX,\n\t}\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Physics/Collisions/SensorElements/MySensorElementDesc.cs",
    "content": "﻿#region Using Statements\n\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Models;\n\n#endregion\n\nnamespace MinerWars.AppCode.Physics\n{\n    //////////////////////////////////////////////////////////////////////////\n    /// <summary>\n    /// Sensor descriptor\n    /// </summary>\n    abstract class MySensorElementDesc : MyElementDesc\n    {\n        public Matrix m_Matrix;\n        public System.UInt32 m_CollisionLayer;\n\n        public virtual MySensorElementType GetElementType() { return MySensorElementType.ET_UNKNOWN; }\n\n        public virtual void SetToDefault()\n        {\n            m_Matrix = Matrix.Identity;\n            m_CollisionLayer = 0;            \n        }\n\n        public override bool IsValid()\n        {\n            if (m_CollisionLayer > 31)\n                return false;\n\n\n            return true;\n        }\n    }\n\n\n\n    //////////////////////////////////////////////////////////////////////////\n    /// <summary>\n    /// Sensor sphere element descriptor\n    /// </summary>\n    class MySphereSensorElementDesc : MySensorElementDesc\n    {\n        public float m_Radius;\n\n        public override void SetToDefault()\n        {\n            base.SetToDefault();\n            m_Radius = 1.0f;\n        }\n\n        public override bool IsValid()\n        {\n            if (!base.IsValid())\n                return false;\n\n            if (m_Radius <= 0.0f)\n                return false;\n\n            return true;\n        }\n\n        public override MySensorElementType GetElementType() { return MySensorElementType.ET_SPHERE; }\n    }\n\n    //////////////////////////////////////////////////////////////////////////\n    /// <summary>\n    /// Box sphere element descriptor\n    /// </summary>\n    class MyBoxSensorElementDesc : MySensorElementDesc\n    {\n        public Vector3 Size;\n\n        public override void SetToDefault()\n        {\n            base.SetToDefault();\n            Size = new Vector3(1f, 1f, 1f);\n        }\n\n        public override bool IsValid()\n        {\n            if (!base.IsValid())\n                return false;\n\n            if (Size.Length() == 0.0f)\n                return false;\n\n            return true;\n        }\n\n        public override MySensorElementType GetElementType() { return MySensorElementType.ET_BOX; }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Physics/Collisions/SensorElements/MySphereSensorElement.cs",
    "content": "﻿#region Using Statements\n\nusing System.Collections.Generic;\nusing MinerWarsMath;\n#endregion\n\nnamespace MinerWars.AppCode.Physics\n{\n    /// <summary>\n    /// Sphere sensor element implement AABB stuff\n    /// </summary>\n    class MySphereSensorElement: MySensorElement\n    {\n        #region interface\n\n        public MySphereSensorElement()\n        {\n\n        }\n\n        public MySphereSensorElement(float radius)\n        {\n            SetRadius(radius);\n        }\n\n        public override bool LoadFromDesc(MyElementDesc desc)\n        {\n            base.LoadFromDesc(desc);\n\n            MySphereSensorElementDesc se = (MySphereSensorElementDesc) desc;\n\n            m_Matrix = se.m_Matrix;\n\n            SetRadius(se.m_Radius);\n\n            return true;\n        }\n\n        /// <summary>\n        /// Angle in radians, which must has RB with forward vector of sensor element\n        /// </summary>\n        public float? SpecialDetectingAngle { get; set; }\n\n        public float Radius { get { return this.m_Radius; } set { this.SetRadius(value); } }\n\n        public override MySensorElementType GetElementType() { return MySensorElementType.ET_SPHERE; }\n\n        #endregion\n\n        public override void UpdateAABB()\n        {            \n            Vector3 origin = GetGlobalTransformation().Translation;\n            m_AABB.Min = origin - m_Extent;\n            m_AABB.Max = origin + m_Extent;\n            base.UpdateAABB();\n        }\n\n        #region members\n        private float   m_Radius;\n        private Vector3 m_Extent;\n        #endregion\n\n#region implementation\n        public override void SetSize(Vector3 size)\n        {\n            SetRadius(size.Length() / 2f);\n        }\n\n        void SetRadius(float radius)\n        {\n            m_Radius = radius;\n            m_Extent.X = m_Radius;\n            m_Extent.Y = m_Radius;\n            m_Extent.Z = m_Radius;\n\n            Flags |= MyElementFlag.EF_AABB_DIRTY;\n\n            if (Sensor != null)\n            {\n                MyPhysics.physicsSystem.GetSensorModule().MoveSensor(Sensor, true);\n            }\n        }\n\n#endregion\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Physics/Core/Broadphase/MyBroadphase.cs",
    "content": "﻿#region Using Statements\n\nusing System.Collections.Generic;\nusing MinerWarsMath;\n\n#endregion\n\nnamespace MinerWars.AppCode.Physics\n{\n    //////////////////////////////////////////////////////////////////////////\n\n    enum MyBrodphaseType\n    {\n        BT_BRUTE_FORCE,\n        BT_DAABB,\n    }\n\n    //////////////////////////////////////////////////////////////////////////\n    /// <summary>\n    /// abstract class for base broadphase\n    /// </summary>\n    abstract class MyBroadphase: ParallelTasks.IWork\n    {\n        public virtual void CreateVolume(MyElement element) { }\n        public virtual void DestroyVolume(MyElement element) { }\n        public virtual void MoveVolume(MyElement element) { }\n\n        public virtual void MoveVolumeFast(MyElement element) { }        \n\n        public ParallelTasks.WorkOptions Options { get { return new ParallelTasks.WorkOptions() { MaximumThreads = 1 }; } }\n\n        public virtual void DoWork() { }\n\n        public virtual List<MyRBElementInteraction> GetRBElementInteractionList() { return null; }\n\n        public virtual void Close() { }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Physics/Core/Broadphase/MyBruteForceBp.cs",
    "content": "﻿#region Using Statements\n\nusing System.Collections.Generic;\nusing Microsoft.Xna.Framework;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils.Utils;\n\n#endregion\n\nnamespace MinerWars.AppCode.Physics\n{    \n    //////////////////////////////////////////////////////////////////////////\n\n    class MyBruteForceBroadphase: MyBroadphase\n    {\n        public MyBruteForceBroadphase()\n        {\n            m_Elements = new List<MyRBElement>(256);\n            m_ActiveElements = new List<MyRBElement>(256);\n            m_InteractionList   = new List<MyRBElementInteraction>(512);\n        }\n        public override void CreateVolume(MyElement element)\n        { \n#if PHYSICS_CHECK\n            for (int i = 0; i < m_Elements.Count; i++)\n            {\n                MyRBElement el = m_Elements[i];\n                if (el == element)\n                {\n                    // inserting twice!!!\n                    CommonDebugUtils.AssertRelease(false);\n                    return;\n                }\n            }\n#endif\n            if ((element.Flags & MyElementFlag.EF_SENSOR_ELEMENT) > 0)\n            {\n                return;\n            }\n            MyRBElement elm = (MyRBElement)element;\n            m_Elements.Add(elm);\n        }\n        public override void DestroyVolume(MyElement element)\n        {\n            if ((element.Flags & MyElementFlag.EF_SENSOR_ELEMENT) > 0)\n            {\n                return;\n            }\n            MyRBElement elm = (MyRBElement)element;\n\n            elm.GetRBElementInteractions().Clear();\n            m_Elements.Remove(elm);\n        }\n\n        public override void DoWork()\n        {\n            // brute force\n            MyRBInteractionModule module = MyPhysics.physicsSystem.GetRBInteractionModule();\n            List <MyRigidBody> activeRigids = MyPhysics.physicsSystem.GetRigidBodyModule().GetActiveRigids();\n\n            m_ActiveElements.Clear();\n\n            for (int i = 0; i < activeRigids.Count; i++)\n            {\n                MyRigidBody rbo = activeRigids[i];\n                for (int j = 0; j < rbo.GetRBElementList().Count; j++)\n                {\n                    MyRBElement el = rbo.GetRBElementList()[j];\n                    el.UpdateAABB();\n                    m_ActiveElements.Add(el);\n                }\n            }\n\n            // parse the elements\n            BoundingBox bbox;\n            MyRBElementInteraction interaction = null;\n            m_InteractionList.Clear();\n            for (int i = 0; i < m_ActiveElements.Count; i++)\n            {\n                MyRBElement testEl = m_ActiveElements[i];\n                BoundingBox testAABB = testEl.GetWorldSpaceAABB();                \n                for (int j = 0; j < m_Elements.Count;j++)\n                {\n                    MyRBElement el = m_Elements[j];\n                    interaction = null;\n                    if (el != testEl)\n                    {\n                        if(el.GetRigidBody().IsStatic() && testEl.GetRigidBody().IsStatic())\n                            continue;\n\n                        if (el.GetRigidBody().IsKinematic() && testEl.GetRigidBody().IsKinematic())\n                            continue;\n\n                        if(el.GetRigidBody() == testEl.GetRigidBody())\n                            continue;\n\n                        bbox = el.GetWorldSpaceAABB();\n                        if (bbox.Intersects(testAABB))\n                        {      \n                            interaction = module.FindRBElementInteraction(el, testEl);\n                            if (interaction == null)\n                            {\n                                interaction = module.AddRBElementInteraction(el, testEl);\n                            }\n                        }\n                        else\n                        {\n                            interaction = module.FindRBElementInteraction(el, testEl);\n                            if (interaction != null)\n                            {\n                                interaction = null;\n                                module.RemoveRBElementInteraction(el,testEl);\n                            }\n                        }\n\n                        if (interaction != null)\n                        {\n                            bool iinserted = false;\n                            for (int t = 0; t < m_InteractionList.Count; t++)\n                            {\n                                if (m_InteractionList[t] == interaction)\n                                {\n                                    iinserted = true;\n                                    break;\n                                }\n                            }\n                            if(!iinserted)\n                                m_InteractionList.Add(interaction);\n                        }\n                    }\n                }\n            }\n        }\n\n        public override List<MyRBElementInteraction> GetRBElementInteractionList() { return m_InteractionList; }\n\n        private List <MyRBElement>          m_Elements;\n        private List<MyRBElement>           m_ActiveElements;\n        private List<MyRBElementInteraction>    m_InteractionList;\n\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Physics/Core/Broadphase/MyDAABBTreeBp.cs",
    "content": "﻿#region Using Statements\n\nusing System.Collections.Generic;\nusing MinerWarsMath;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils.Utils;\nusing MinerWars.AppCode.Game.Utils;\n\n#endregion\n\nnamespace MinerWars.AppCode.Physics\n{\n    /// <summary>\n    /// Dynamic aabb tree updater. Updates the DAABB tree to have it balanced again.\n    /// </summary>\n    /*\n    class MyDAABBTreeUpdater: ParallelTasks.IWork\n    {\n        public MyDAABBTreeUpdater(MyDynamicAABBTree tree)\n        {\n            m_Tree = tree;\n        }\n\n        public ParallelTasks.WorkOptions Options { get { return new ParallelTasks.WorkOptions() { MaximumThreads = 1 }; } }\n\n        public void DoWork()\n        {\n            m_Tree.Rebalance(NUM_BALANCE_STEPS);            \n        }\n\n        private int NUM_BALANCE_STEPS = 5;\n        private MyDynamicAABBTree m_Tree;\n    }\n      */\n\n    //////////////////////////////////////////////////////////////////////////\n    /// <summary>\n    /// Broadphase (AABB vs AABB tests) implementation using the DAABB tree. This is slower then SAP for update but faster for insert/remove/AABB space tests\n    /// </summary>\n    class MyDynamicAABBTreeBroadphase : MyBroadphase\n    {\n        public MyDynamicAABBTreeBroadphase()\n        {\n            m_DAABBTree = new MyDynamicAABBTree(new Vector3(MyPhysicsConfig.AABBExtension));\n\n            m_InteractionList = new List<MyRBElementInteraction>(256);\n            m_overlapElementList = new List<MyElement>(256);\n        }\n\n        public MyDynamicAABBTree GetDAABBTree()\n        {\n            return m_DAABBTree;\n        }\n\n        public override void CreateVolume(MyElement element)\n        {\n            MyCommonDebugUtils.AssertDebug(element.ProxyData == MyElement.PROXY_UNASSIGNED);\n            BoundingBox aabb = element.GetWorldSpaceAABB();\n            element.ProxyData = m_DAABBTree.AddProxy(ref aabb, element, (uint)element.Flags);\n        }\n        public override void DestroyVolume(MyElement element)\n        {\n            if (element.ProxyData == MyElement.PROXY_UNASSIGNED)\n            {\n                return;\n            }\n            m_DAABBTree.RemoveProxy(element.ProxyData);\n            element.ProxyData = MyElement.PROXY_UNASSIGNED;\n\n            if ((element.Flags & MyElementFlag.EF_SENSOR_ELEMENT) > 0)\n            {\n                MySensorElement se = (MySensorElement)element;\n            }\n\n            if ((element.Flags & MyElementFlag.EF_RB_ELEMENT) > 0)\n            {\n                MyRBElement elm = (MyRBElement)element;\n                \n                \n                //clear all iterations from me and from objects i iterate with\n                while(elm.GetRBElementInteractions().Count > 0){\n                    MyRBElementInteraction intr = elm.GetRBElementInteractions()[0];\n                    MyPhysics.physicsSystem.GetRBInteractionModule().RemoveRBElementInteraction(intr.RBElement1, intr.RBElement2);\n                }\n                \n                \n                elm.GetRBElementInteractions().Clear();\n            }\n        }\n\n        /// <summary>\n        /// when a volume moves we have to update the AABB and then update the tree\n        /// </summary>\n        public override void MoveVolume(MyElement element)\n        {\n            if (element.ProxyData == MyElement.PROXY_UNASSIGNED)\n            {\n                return;\n            }\n\n            element.UpdateAABB();\n            BoundingBox aabb = element.GetWorldSpaceAABB();\n            m_DAABBTree.MoveProxy(element.ProxyData,ref aabb, Vector3.Zero);\n        }\n\n        /// <summary>\n        /// we have the aabb updated and just update the tree using the info from velocity as a hint\n        /// </summary>\n        public override void MoveVolumeFast(MyElement element)\n        {\n            if (element.ProxyData == MyElement.PROXY_UNASSIGNED)\n            {\n                return;\n            }\n\n            if ((element.Flags & MyElementFlag.EF_RB_ELEMENT) > 0)\n            {\n                MyRBElement rel = (MyRBElement) element;\n\n                float dt = MyPhysics.physicsSystem.GetRigidBodyModule().CurrentTimeStep;\n\n                Vector3 movement = rel.GetRigidBody().LinearVelocity * dt;\n                BoundingBox aabb = element.GetWorldSpaceAABB();\n                m_DAABBTree.MoveProxy(element.ProxyData, ref aabb, movement);\n            }\n            else\n            {\n                BoundingBox aabb = element.GetWorldSpaceAABB();\n                m_DAABBTree.MoveProxy(element.ProxyData, ref aabb, Vector3.Zero);\n            }\n        }\n\n        private void ClearInteractions()\n        {\n            MyRBInteractionModule module = MyPhysics.physicsSystem.GetRBInteractionModule();\n\n            foreach (var intr in m_InteractionList)\n            {\n                module.RemoveRBElementInteraction(intr.RBElement1,intr.RBElement2);\n            }\n\n            m_InteractionList.Clear();\n        }\n\n        /// <summary>\n        /// parses all active rigids, updates the aabbs and checks for possible collisions using the DAABB\n        /// </summary>\n        public override void DoWork()\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"ClearInteractions\");\n            ClearInteractions();\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n    \n            MyRBInteractionModule module = MyPhysics.physicsSystem.GetRBInteractionModule();\n            HashSet<MyRigidBody> activeRigids = MyPhysics.physicsSystem.GetRigidBodyModule().GetActiveRigids();\n            float dt = MyPhysics.physicsSystem.GetRigidBodyModule().CurrentTimeStep;\n            BoundingBox aabb;\n\n            //Dictionary<string, int> typeStats = new Dictionary<string, int>();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MoveProxy\");\n            \n            // A.B. this might be expensive, maybe update separate or move somewhere else like in the solve -> update positions !!\n            foreach (MyRigidBody rbo in activeRigids)\n            {\n                   /*\n                string ts = ((MinerWars.AppCode.Game.Physics.MyPhysicsBody)rbo.m_UserData).Entity.GetType().Name.ToString();\n                if (!typeStats.ContainsKey(ts))\n                    typeStats.Add(ts, 0);\n                typeStats[ts]++;\n                     */\n\n                for (int j = 0; j < rbo.GetRBElementList().Count; j++)\n                {\n                    MyRBElement el = rbo.GetRBElementList()[j];\n                    el.UpdateAABB();\n                    aabb = el.GetWorldSpaceAABB();\n                    m_DAABBTree.MoveProxy(el.ProxyData, ref aabb, el.GetRigidBody().LinearVelocity*dt);\n                }\n            }\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"make the AABB test\");\n            // make the AABB test\n            MyRBElementInteraction interaction = null;\n\n#if RENDER_PROFILING && !MEMORY_PROFILING\n            int[] heights = new int[activeRigids.Count];\n            int[] tests = new int[activeRigids.Count];\n#endif\n\n            int i = 0;\n            foreach (MyRigidBody rbo in activeRigids)\n            {\n                for (int j = 0; j < rbo.GetRBElementList().Count; j++)\n                {\n                    MyRBElement el = rbo.GetRBElementList()[j];\n                    Vector3 globalPosition = Vector3.Transform(el.LocalPosition, rbo.Matrix);\n                    Vector3 deltaVelocity = rbo.LinearVelocity * dt;\n                    aabb = el.GetWorldSpaceAABB();\n\n                    if (rbo.ReadFlag(RigidBodyFlag.RBF_COLDET_THROUGH_VOXEL_TRIANGLES) || el is MyRBSphereElement) //because sphere is interpolated for whole path\n                    {\n                        Vector3 v = globalPosition + rbo.LinearVelocity * dt;\n                        //Vector3 v = aabb.GetCenter()+rbo.LinearVelocity * dt;\n                        aabb = aabb.Include(ref v);\n                    }\n                    else\n                    {\n                        aabb.Max += deltaVelocity;\n                        aabb.Min += deltaVelocity;\n                    }\n\n                    //if (el is MyRBSphereElement)\n                    //{\n                        //MyDebugDraw.AddDrawSphereWireframe(new BoundingSphere(aabb.GetCenter(), (aabb.GetCorners()[0] - aabb.GetCenter()).Length()));\n                       // MyDebugDraw.AddDrawSphereWireframe(new BoundingSphere(aabb.GetCenter()+rbo.LinearVelocity * dt, (aabb.GetCorners()[0] - aabb.GetCenter()).Length()));\n                    //}\n\n                    MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"m_DAABBTree.OverlapAllBoundingBox\");\n#if RENDER_PROFILING && !MEMORY_PROFILING\n                    m_DAABBTree.OverlapAllBoundingBox(ref aabb, m_overlapElementList, 0);\n#else\n                    m_DAABBTree.OverlapAllBoundingBox(ref aabb, m_overlapElementList, 0);\n#endif\n\n                    MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n                    MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Interactions\");\n\n                    foreach (var lEl in m_overlapElementList)\n                    {\n                        if (el == lEl)//optimization?\n                            continue;\n                        if ((lEl.Flags & MyElementFlag.EF_SENSOR_ELEMENT) > 0)\n                        {\n                            MySensorElement sensorElement = lEl as MySensorElement;\n                            MyRBElement rbElement = el as MyRBElement;\n                            MyPhysics.physicsSystem.GetSensorInteractionModule().AddSensorInteraction(sensorElement, rbElement);\n                            continue;\n                        }\n\n                        if ((lEl.Flags & MyElementFlag.EF_RB_ELEMENT) > 0)\n                        {\n                            MyRBElement testEl = (MyRBElement)lEl;\n\n                            if (el.GetRigidBody().IsStatic() && testEl.GetRigidBody().IsStatic())\n                                continue;\n\n                            if (el.GetRigidBody().IsKinematic() && testEl.GetRigidBody().IsKinematic())\n                                continue;\n\n                            if (el.GetRigidBody().IsKinematic() && testEl.GetRigidBody().IsStatic())\n                                continue;\n\n                            if (el.GetRigidBody().IsStatic() && testEl.GetRigidBody().IsKinematic())\n                                continue;\n\n                            if (el.GetRigidBody() == testEl.GetRigidBody())\n                                continue;\n\n                            if(!MyFiltering.AcceptCollision(el,testEl))\n                                continue;\n\n                            interaction = module.FindRBElementInteraction(el, testEl);\n                            if (interaction == null)\n                            {\n                                interaction = module.AddRBElementInteraction(el, testEl);\n                            }\n\n                            if (interaction != null)\n                            {\n                                bool iinserted = false;\n                                for (int t = 0; t < m_InteractionList.Count; t++)\n                                {\n                                    if (m_InteractionList[t] == interaction)\n                                    {\n                                        iinserted = true;\n                                        break;\n                                    }\n                                }\n                                if (!iinserted)\n                                    m_InteractionList.Add(interaction);\n                            }\n                        }\n                    }\n\n                    MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n\n\n                }\n\n                i++;\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().ProfileCustomValue(\"Active rigids\", activeRigids.Count);\n\n#if RENDER_PROFILING && !MEMORY_PROFILING\n            float averageHeight = 0;\n            float averageTest = 0;\n            int maxHeight = 0;\n            int maxTest = 0;\n            for (int j = 0; j < activeRigids.Count; j++)\n            {\n                averageHeight += heights[j];\n                averageTest += tests[j];\n                if (maxHeight < heights[j])\n                    maxHeight = heights[j];\n                if (maxTest < tests[j])\n                    maxTest = tests[j];\n            }\n\n            averageHeight /= activeRigids.Count;\n            averageTest /= activeRigids.Count;\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().ProfileCustomValue(\"Average height\", averageHeight);\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().ProfileCustomValue(\"Average test\", averageTest);\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().ProfileCustomValue(\"Max height\", maxHeight);\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().ProfileCustomValue(\"Max test\", maxTest);\n#endif\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"handle active sensors\");\n            List<MySensor> activeSensors = MyPhysics.physicsSystem.GetSensorModule().ActiveSensors;\n            if (activeSensors.Count > 0)\n            {\n                if (m_activeSensorIndex >= activeSensors.Count)\n                {\n                    m_activeSensorIndex = 0;\n                }\n\n                MySensor activeSensor = activeSensors[m_activeSensorIndex];\n                activeSensor.PrepareSensorInteractions();\n                MySensorElement sensorElement = activeSensor.GetElement();\n                BoundingBox sensorElAABB = sensorElement.GetWorldSpaceAABB();\n                m_sensorInteractonList.Clear();\n                m_DAABBTree.OverlapAllBoundingBox(ref sensorElAABB, m_sensorInteractonList, (uint)MyElementFlag.EF_RB_ELEMENT);\n                foreach (MyRBElement rbElement in m_sensorInteractonList)\n                {\n                    MyPhysics.physicsSystem.GetSensorInteractionModule().AddSensorInteraction(sensorElement, rbElement);\n                }\n                activeSensor.Active = false;                \n                m_activeSensorIndex++;\n            }\n            //List<MySensor> activeSensors = MyPhysics.physicsSystem.GetSensorModule().ActiveSensors;\n            //for (int i = activeSensors.Count - 1; i >= 0; i--)\n            //{\n            //    MySensorElement sensorElement = activeSensors[i].GetElement();\n            //    BoundingBox sensorElAABB = sensorElement.GetWorldSpaceAABB();\n            //    m_sensorInteractonList.Clear();\n            //    m_DAABBTree.OverlapRBAllBoundingBox(ref sensorElAABB, m_sensorInteractonList);\n            //    foreach (MyRBElement rbElement in m_sensorInteractonList)\n            //    {\n            //        MyPhysics.physicsSystem.GetSensorInteractionModule().AddSensorInteraction(sensorElement, rbElement);\n            //    }\n            //    activeSensors[i].IsActive = false;\n            //    activeSensors.RemoveAt(i);\n            //}\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }        \n\n        public override List<MyRBElementInteraction> GetRBElementInteractionList()\n        {\n            return m_InteractionList;\n        }\n\n        public override void Close()\n        {\n            m_DAABBTree.Clear();\n            base.Close();\n        }\n\n        private MyDynamicAABBTree m_DAABBTree;\n        private List<MyRBElementInteraction> m_InteractionList;\n        private List<MyElement> m_overlapElementList;\n        private List<MyRBElement> m_sensorInteractonList = new List<MyRBElement>();\n        private int m_activeSensorIndex;\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Physics/Core/Modules/MyContactConstraintModule.cs",
    "content": "﻿#region Using Statements\n\nusing System;\nusing System.Collections.Generic;\nusing System.Threading;\nusing MinerWarsMath;\nusing MinerWars.CommonLIB.AppCode.Utils;\n\n#endregion\n\nnamespace MinerWars.AppCode.Physics\n{\n\n    //////////////////////////////////////////////////////////////////////////\n    /// <summary>\n    /// Stores informations about contacts and holds support containers. This class is responsible for the contact callbacks.\n    /// </summary>\n    class MyContactConstraintModule\n    {\n        static MyContactConstraintModule()\n        {\n            while (m_FreeCc.Count < m_InitialCollisionInfoStack)\n            {\n                m_FreeCc.Push(new MyRBContactConstraint());\n            }\n            while (m_FreePtInfos.Count < m_InitialCollisionPointInfoStack)\n            {\n                m_FreePtInfos.Push(new MyCollPointInfo());\n            }\n        }\n\n        public MyContactConstraintModule()\n        {\n            m_ActiveContactConstrains.Clear();\n            m_ContactEventCache.Clear();\n            m_StartContactEvents.Clear();\n            m_EndContactEvents.Clear();\n            m_TouchContactEvents.Clear();\n\n            while (m_FreeCc.Count < m_InitialCollisionInfoStack)\n            {\n                m_FreeCc.Push(new MyRBContactConstraint());\n            }\n            while (m_FreePtInfos.Count < m_InitialCollisionPointInfoStack)\n            {\n                m_FreePtInfos.Push(new MyCollPointInfo());\n            }\n\n            m_ContactInfoCache = new MyContactInfoCache();\n            m_TriangleCache = new MyTriangleCache();            \n        }\n        \n\n        public void AddContactConstraint(MyRBElementInteraction interaction, MySmallCollPointInfo[] pointInfos, int numCollPts)\n        {\n            lock (m_Locker)\n            {             \n                if (m_FreeCc.Count == 0)\n                {\n                    m_FreeCc.Push(new MyRBContactConstraint());\n                }\n                MyRBContactConstraint cc = m_FreeCc.Pop();\n                cc.Init(interaction, pointInfos, numCollPts);\n                m_ActiveContactConstrains.Add(cc);             \n            }\n        }\n\n        public MyCollPointInfo PopCollPointInfo()\n        {\n            MyCollPointInfo retVal = null;\n            lock (m_Locker)\n            {\n                if (m_FreePtInfos.Count == 0)\n                {\n                    m_FreePtInfos.Push(new MyCollPointInfo());\n                }\n                retVal = m_FreePtInfos.Pop();\n            }            \n            return retVal;\n        }\n\n        public void PushCollPointInfo(MyCollPointInfo info)\n        {\n            lock (m_Locker)\n            {\n                m_FreePtInfos.Push(info);\n            }\n        }\n\n        private void FreeRBContactConstraint(MyRBContactConstraint info)\n        {\n            info.Destroy();\n            m_FreeCc.Push(info);\n        }\n\n        /// <summary>\n        /// deletes all contact info and checks it with last one in order to generate contact notifications\n        /// A.B. this is using list - will be slow in case of lots of objects\n        /// </summary>\n        public void Flush()\n        {\n            m_StartContactEvents.Clear();\n            m_TouchContactEvents.Clear();\n            m_EndContactEvents.Clear();\n            for (int i = 0; i < m_ActiveContactConstrains.Count; i++)\n            {\n                if (m_ActiveContactConstrains[i].GetRBElementInteraction().RBElement1 == null || m_ActiveContactConstrains[i].GetRBElementInteraction().RBElement2 == null)\n                    continue;\n\n                if (m_ActiveContactConstrains[i].GetRBElementInteraction().GetRigidBody1().NotifyContactHandler == null && m_ActiveContactConstrains[i].GetRBElementInteraction().GetRigidBody2().NotifyContactHandler == null)\n                {\n                    continue;\n                }\n\n                uint guid = m_ActiveContactConstrains[i].GUID;\n\n                MyContactEventInfo cei = null;\n\n                if (m_ContactEventCache.TryGetValue(guid,out cei))\n                {\n                    // contact found should we make touch?\n                    if ((uint)MyPhysics.physicsSystem.GetRigidBodyModule().GetRigidBodyContactEventTypeMask(cei.m_RigidBody1.Type, cei.m_RigidBody2.Type) > ((uint)MyContactEventType.CET_START_AND_END))\n                    {\n                        m_TouchContactEvents.Add(cei);\n                    }\n                    else\n                    {\n                        m_FreeCei.Push(cei);\n                    }\n\n                    m_ContactEventCache.Remove(guid);\n                }\n                else\n                {\n                    // contact not found new contact\n                    if (m_FreeCei.Count == 0)\n                    {\n                        m_FreeCei.Push(new MyContactEventInfo());\n                    }\n\n                    cei = m_FreeCei.Pop();\n                    cei.Fill(m_ActiveContactConstrains[i]);\n                    m_StartContactEvents.Add(cei);\n                }\n            }\n\n            foreach (KeyValuePair<uint, MyContactEventInfo> kvp in m_ContactEventCache)\n            {\n                m_EndContactEvents.Add(kvp.Value);\n            }\n\n            m_ContactEventCache.Clear();\n\n            FireContactCallbacks();\n\n            for (int i = 0; i< m_ActiveContactConstrains.Count; i++)\n            {\n                FreeRBContactConstraint(m_ActiveContactConstrains[i]);\n\n                if (m_ActiveContactConstrains[i].GetRBElementInteraction().RBElement1 == null || m_ActiveContactConstrains[i].GetRBElementInteraction().RBElement2 == null)\n                    continue;\n\n                if (m_ActiveContactConstrains[i].GetRBElementInteraction().GetRigidBody1().NotifyContactHandler == null && m_ActiveContactConstrains[i].GetRBElementInteraction().GetRigidBody2().NotifyContactHandler == null)\n                {\n                    continue;\n                }\n\n                // else fill new contact event cache                \n                if (m_FreeCei.Count == 0)\n                {\n                    m_FreeCei.Push(new MyContactEventInfo());\n                }\n                MyContactEventInfo cei = m_FreeCei.Pop();\n                cei.Fill(m_ActiveContactConstrains[i]);\n                if (!m_ContactEventCache.ContainsKey(m_ActiveContactConstrains[i].GUID))\n                {\n                    m_ContactEventCache.Add(m_ActiveContactConstrains[i].GUID, cei);\n                }\n            }\n\n            m_ActiveContactConstrains.Clear();\n        }\n\n        /// <summary>\n        /// calls the user contact callbacks\n        /// </summary>\n        private void FireContactCallbacks()\n        {\n            MyRigidBodyModule module = MyPhysics.physicsSystem.GetRigidBodyModule();\n\n            for (int i = 0; i < m_StartContactEvents.Count; i++)\n            {\n                MyContactEventInfo coi = m_StartContactEvents[i];\n\n                MyContactEventType cet = module.GetRigidBodyContactEventTypeMask(coi.m_RigidBody1.Type, coi.m_RigidBody2.Type);\n\n                if (cet == MyContactEventType.CET_START || cet == MyContactEventType.CET_START_AND_END || cet == MyContactEventType.CET_START_AND_TOUCH || cet == MyContactEventType.CET_START_AND_TOUCH_AND_END)\n                {\n                    if (coi.m_RigidBody1.NotifyContactHandler != null)\n                    {\n                        coi.m_RigidBody1.NotifyContactHandler.OnContactStart(coi);\n                    }\n\n                    if (coi.m_RigidBody2.NotifyContactHandler != null)\n                    {\n                        coi.m_RigidBody2.NotifyContactHandler.OnContactStart(coi);\n                    }\n                }\n            }\n\n            for (int i = 0; i < m_TouchContactEvents.Count; i++)\n            {\n                MyContactEventInfo coi = m_TouchContactEvents[i];\n\n                MyContactEventType cet = module.GetRigidBodyContactEventTypeMask(coi.m_RigidBody1.Type, coi.m_RigidBody2.Type);\n\n                if (cet == MyContactEventType.CET_TOUCH || cet == MyContactEventType.CET_START_AND_TOUCH || cet == MyContactEventType.CET_END_AND_TOUCH || cet == MyContactEventType.CET_START_AND_TOUCH_AND_END)\n                {\n                    if (coi.m_RigidBody1.NotifyContactHandler != null)\n                    {\n                        coi.m_RigidBody1.NotifyContactHandler.OnContactTouch(coi);\n                    }\n\n                    if (coi.m_RigidBody2.NotifyContactHandler != null)\n                    {\n                        coi.m_RigidBody2.NotifyContactHandler.OnContactTouch(coi);\n                    }\n                }\n\n                m_FreeCei.Push(coi);\n            }\n\n            for (int i = 0; i < m_EndContactEvents.Count; i++)\n            {\n                MyContactEventInfo coi = m_EndContactEvents[i];\n\n                MyContactEventType cet = module.GetRigidBodyContactEventTypeMask(coi.m_RigidBody1.Type, coi.m_RigidBody2.Type);\n\n                if (cet == MyContactEventType.CET_END || cet == MyContactEventType.CET_START_AND_END || cet == MyContactEventType.CET_END_AND_TOUCH || cet == MyContactEventType.CET_START_AND_TOUCH_AND_END)\n                {\n                    if (coi.m_RigidBody1.NotifyContactHandler != null)\n                    {\n                        coi.m_RigidBody1.NotifyContactHandler.OnContactEnd(coi);\n                    }\n\n                    if (coi.m_RigidBody2.NotifyContactHandler != null)\n                    {\n                        coi.m_RigidBody2.NotifyContactHandler.OnContactEnd(coi);\n                    }\n                }\n\n                m_FreeCei.Push(coi);\n            }\n        }\n\n        public MyTriangleCache  GetTriangleCache()\n        {\n            return m_TriangleCache;\n        }\n\n        public List<MyRBContactConstraint> GetActiveRBContactConstraints()\n        {\n            return m_ActiveContactConstrains;\n        }\n\n\n        public void Destroy()\n        {\n            m_ContactEventCache.Clear();\n            m_StartContactEvents.Clear();\n            m_TouchContactEvents.Clear();\n            m_EndContactEvents.Clear();\n            m_ActiveContactConstrains.Clear();\n            m_FreeCc.Clear();\n            m_FreeCei.Clear();\n            m_FreePtInfos.Clear();\n        }\n\n        private static Dictionary<uint, MyContactEventInfo> m_ContactEventCache = new Dictionary<uint, MyContactEventInfo>(512);\n        private static List<MyContactEventInfo> m_StartContactEvents = new List<MyContactEventInfo>(512);\n        private static List<MyContactEventInfo> m_TouchContactEvents = new List<MyContactEventInfo>(512);\n        private static List<MyContactEventInfo> m_EndContactEvents = new List<MyContactEventInfo>(512);\n        private static List<MyRBContactConstraint> m_ActiveContactConstrains = new List<MyRBContactConstraint>(512);\n        public const int m_InitialCollisionInfoStack = 1024;\n        public const int m_InitialCollisionPointInfoStack = 4096;\n        private static Stack<MyRBContactConstraint> m_FreeCc = new Stack<MyRBContactConstraint>(m_InitialCollisionInfoStack);\n        private static Stack<MyContactEventInfo> m_FreeCei = new Stack<MyContactEventInfo>(m_InitialCollisionInfoStack);\n        private static Stack<MyCollPointInfo> m_FreePtInfos = new Stack<MyCollPointInfo>(m_InitialCollisionPointInfoStack);\n\n        private MyContactInfoCache m_ContactInfoCache;\n        protected MyTriangleCache m_TriangleCache;\n\n        private readonly object m_Locker = new object();\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Physics/Core/Modules/MyRigidBodyModule.cs",
    "content": "﻿#region Using Statements\n\nusing System.Collections.Generic;\nusing MinerWars.CommonLIB.AppCode.Generics;\nusing SysUtils.Utils;\nusing ParallelTasks;\n\nusing System.Diagnostics;\nusing SysUtils;\nusing MinerWars.AppCode.Game.Physics;\nusing MinerWars.AppCode.Game.Utils;\nusing System.Linq;\nusing MinerWarsMath;\n\n#endregion\n\nnamespace MinerWars.AppCode.Physics\n{\n    using System;\n\n    //////////////////////////////////////////////////////////////////////////\n\n    class MyRigidBodyModule\n    {\n        static MyRigidBodyModule()\n        {\n            m_ActiveRigids = new HashSet<MyRigidBody>();\n            //m_Rigids = new List<MyRigidBody>(MyPhysicsConfig.MaxCollidingElements);\n            m_SolverPool = new MyObjectsPool<MyRBIslandNSolver>(2 * MyPhysicsConfig.MaxCollidingElements);\n            m_SolverList = new List<MyRBIslandNSolver>(2 * MyPhysicsConfig.MaxCollidingElements);\n        }\n\n        /// <summary>\n        /// rigid body module stores all simulated rigids. If you want to simulate a rigid you have to insert it in this module.\n        /// </summary>\n        public MyRigidBodyModule()\n        {\n            m_ActiveRigids.Clear();\n            //m_Rigids.Clear();\n\n            m_BroadPhase = new MyDynamicAABBTreeBroadphase();\n\n            m_PruningStructure = ((MyDynamicAABBTreeBroadphase) m_BroadPhase).GetDAABBTree();\n\n           // m_DAABBTreeUpdater = new MyDAABBTreeUpdater(((MyDynamicAABBTreeBroadphase)m_BroadPhase).GetDAABBTree());\n\n            m_RboIslandGeneration = new MyRigidBodyIslandGeneration();\n\n            m_CollisionEpsilon = MyPhysicsConfig.CollisionEpsilon;\n            m_CurrentTimeStep = 0.02f;\n\n            m_GroupMaskManager = new MyGroupMaskManager();\n\n            m_SolverPool.DeallocateAll();\n            m_SolverList.Clear();\n\n            m_DeactivationSolver = new MyRigidBodyIslandSleepState();\n\n            m_DeactivationSolver.m_Broadphase = m_BroadPhase;\n\n\n            m_SolverAction = SolverAction;// idx => m_SolverList[idx].DoWork();\n\n            m_InteractionAction = InteractionAction; // idx => m_InteractionsList[idx].DoWork();\n        }\n\n        private void SolverAction(int idx)\n        {\n            m_SolverList[idx].DoWork();\n        }\n\n        private void InteractionAction(int idx)\n        {\n            m_InteractionsList[idx].DoWork();\n        }\n\n        public float CollisionEpsilon { get { return m_CollisionEpsilon; } set { m_CollisionEpsilon = value; } }\n        public float CurrentTimeStep { get { return m_CurrentTimeStep; } set { m_CurrentTimeStep = value; } }\n\n        public bool Insert(MyRigidBody rbo)\n        {\n            if(rbo.ReadFlag(RigidBodyFlag.RBF_INSERTED))\n            {\n                return true;\n            }\n\n#if PHYSICS_CHECK\n            for (int i = 0; i < m_Rigids.Count; i++)\n            {\n                MyRigidBody r = m_Rigids[i];\n                if (r == rbo)\n                {\n                    // rbo already inserted!\n                    MyCommonDebugUtils.AssertDebug(false);\n                    return false;\n                }\n            }            \n#endif\n            MyCommonDebugUtils.AssertDebug(rbo != null);\n\n           // m_Rigids.Add(rbo);\n            \n            // insert to sort into bp\n            for (int i = 0; i < rbo.GetRBElementList().Count; i++)\n            {\n                MyRBElement elem = rbo.GetRBElementList()[i];\n                elem.GroupMask = MyGroupMask.Empty;\n                elem.UpdateAABB();\n                m_BroadPhase.CreateVolume(elem);\n            }\n\n            if (!rbo.ReadFlag(RigidBodyFlag.RBF_RBO_STATIC))\n            {\n                AddActiveRigid(rbo);\n                rbo.ActivateNotification();\n            }\n\n            rbo.RaiseFlag(RigidBodyFlag.RBF_INSERTED);\n            return true;\n        }\n\n        public void Remove(MyRigidBody rbo)\n        {\n            //Debug.Assert(!MyPhysics.physicsSystem.GetSensorInteractionModule().IsCheckInteractionsActive(), \"You can't deactivate rigid body when check sensor's interactions is active!\");\n\n            if (rbo == null)\n            {\n                return;\n            }\n\n            for (int i = 0; i < rbo.GetRBElementList().Count; i++)\n            {\n                MyRBElement elem = rbo.GetRBElementList()[i];\n                m_BroadPhase.DestroyVolume(elem);\n            }\n\n            RemoveActiveRigid(rbo);            \n            rbo.DeactivateNotification();\n\n           // m_Rigids.Remove(rbo);\n\n            rbo.ClearFlag(RigidBodyFlag.RBF_INSERTED);\n        }\n\n        /// <summary>\n        /// main internal simulation functions calling all physics substeps\n        /// </summary>\n        public void Simulate(float timeStep)\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Flush\");\n\n            if (timeStep != 0)\n            {\n                CurrentTimeStep = timeStep;\n            }\n\n            Flush();\n\n            MyPhysics.physicsSystem.GetSensorInteractionModule().Flush();\n\n            // We must move PreparSensorInteraction from here after BroadPhaseUpdate, because we must know if sensor is active or not\n            //MyPhysics.physicsSystem.GetSensorModule().PrepareSensorInteractions();\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"HandleSensorChanges\");\n            MyPhysics.physicsSystem.GetSensorModule().HandleSensorChanges();\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"BroadPhaseUpdate\");\n\n            BroadPhaseUpdate(timeStep);\n            \n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();            \n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"PrepareSensorInteractions\");\n            MyPhysics.physicsSystem.GetSensorModule().PrepareSensorInteractions();\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n\n            if (timeStep != 0)\n            {\n\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"NearPhaseUpdate\");\n\n                NearPhaseUpdate(timeStep);\n                \n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"UpdateInteractions\");\n\n                MyPhysics.physicsSystem.GetSensorInteractionModule().UpdateInteractions(timeStep);\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"RboIslandGeneration\");\n\n                RboIslandGeneration();\n\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Solve\");\n                Solve(timeStep);\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"SolveDeactivation\");\n                SolveDeactivation(timeStep);\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"CheckInteractions\");\n                MyPhysics.physicsSystem.GetSensorInteractionModule().CheckInteractions(timeStep);\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"ParseSensorInteractions\");\n                MyPhysics.physicsSystem.GetSensorModule().ParseSensorInteractions();\n                MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            }\n            else\n            {\n                //force put to sleep\n                List<MyRigidBody> activeRigids = m_ActiveRigids.ToList();\n                foreach (MyRigidBody rbo in activeRigids)\n                {\n                    rbo.PutToSleep();\n                    MyPhysics.physicsSystem.GetRigidBodyModule().RemoveActiveRigid(rbo);\n                }\n\n                MyPhysics.physicsSystem.GetSensorInteractionModule().PutCurrentInteractionsBack();\n            }\n                \n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"FireContactCallbacks\");\n            FireContactCallbacks(timeStep);\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        /// <summary>\n        /// clears data from last computations\n        /// </summary>\n        private void Flush()\n        {            \n            m_SolverPool.DeallocateAll();\n        }\n\n        /// <summary>\n        /// Fires contact callbacks\n        /// </summary>\n        private void FireContactCallbacks(float dt)\n        {\n            MyPhysics.physicsSystem.GetContactConstraintModule().Flush();\n        }\n\n        /// <summary>\n        /// Solves the deactivation of rigid body islands\n        /// </summary>\n        private void SolveDeactivation(float dt)\n        {\n            m_DeactivationSolver.DoWork();\n            //Task dtask = Parallel.Start(m_DeactivationSolver);\n            //dtask.Wait();\n        }\n\n        /// <summary>\n        /// runs multithreaded solvers for each rigid body island\n        /// </summary>\n        private void Solve(float dt)\n        {\n            List<MyRigidBodyIsland> islands = m_RboIslandGeneration.GetIslands();\n\n            foreach(var island in islands)\n            {\n                MyRBIslandNSolver solver = m_SolverPool.Allocate();\n                solver.SetRBIsland(island);\n                m_SolverList.Add(solver);\n            }\n\n#if RENDER_PROFILING\n            \n            for (int i = 0; i < m_SolverList.Count; i++)\n            {\n                m_SolverList[i].DoWork();\n                //m_SolverAction[i](m_SolverList[i]);\n            } \n            //Parallel.For(0, m_SolverList.Count, m_SolverAction, 1);\n#else\n\t\t\t//PM: I am suspicous about peaks here in Parallel\n            Parallel.For(0, m_SolverList.Count, m_SolverAction, 1);\n/*\n            for (int i = 0; i < m_SolverList.Count; i++)\n            {\n                m_SolverList[i].DoWork();\n                //m_SolverAction[i](m_SolverList[i]);\n            } */\n#endif\n\n            //System.Threading.Tasks.Parallel.For(0, m_SolverList.Count, m_SolverAction);\n          \n            m_SolverList.Clear();\n        }\n              /*\n        /// <summary>\n        /// start the rebalancing of the dynamic aabb tree\n        /// </summary>\n        private  void ReBalanceTreeStart()\n        {            \n            m_DAABBTreeTask = Parallel.StartBackground(m_DAABBTreeUpdater);\n        }\n            */\n               /*\n        /// <summary>\n        /// stops the rebalancing of the dynamic aabb tree\n        /// </summary>\n        private void ReBalanceTreeStop()\n        {\n            m_DAABBTreeTask.Wait();\n        }\n                 */\n        /// <summary>\n        /// runs the rbo island generation - single threaded\n        /// </summary>\n        protected  void RboIslandGeneration()\n        {\n            m_RboIslandGeneration.DoWork();\n            //Task rboTask = Parallel.Start(m_RboIslandGeneration);\n            //rboTask.Wait();\n\n            // A.B. consistency check\n            //m_RboIslandGeneration.CheckIslands();\n        }\n\n        /// <summary>\n        ///  updates the broadphase (AABB vs AABB detection) - single threaded\n        /// </summary>\n        protected void BroadPhaseUpdate(float timeStep)\n        {\n            m_BroadPhase.DoWork();\n            //Task bpTask = Parallel.Start(m_BroadPhase);\n            //bpTask.Wait();\n        }\n\n        string ParseLastElement(string text)\n        {\n            string result = text.ToString();\n            int dotIndex = result.LastIndexOf('.');\n            if (result.Length - dotIndex - 1 > 0)\n                result = result.Substring(dotIndex + 1, result.Length - dotIndex - 1);\n\n            return result;\n        }\n\n        /// <summary>\n        /// precise collision detection based on data from broadphase. Collision detection runs multithreaded.\n        /// </summary>\n        protected void NearPhaseUpdate(float timeStep)\n        {\n            m_InteractionsList = m_BroadPhase.GetRBElementInteractionList();\n            \n            if (MyFakes.DEBUG_DRAW_COLLIDING_ENTITIES)\n            {\n                bool logToConsole = false;\n                bool debugDraw = true;\n                bool drawText = true;\n                float textSize = 0.7f;\n\n                Vector2 screenPos = new Vector2(100, 100);\n\n                if (logToConsole) Console.WriteLine(\"-----------------------------\");\n\n                Vector4 color = new Vector4(1, 0, 0, 1);\n\n                foreach (MyRBElementInteraction i in m_InteractionsList)\n                {\n                    object obj = i.GetRigidBody1().m_UserData;\n                    if (obj is MyPhysicsBody)\n                    {\n                        MyPhysicsBody rb = (MyPhysicsBody)obj;\n                        string name = rb.Entity.ToString() + \" \" + i.GetRigidBody1().GUID;\n\n                        if (debugDraw) MyDebugDrawCachedLines.AddAABB(rb.Entity.WorldAABB, Color.Red);\n\n                        if (drawText)\n                        {\n                            System.Text.StringBuilder sb0 = new System.Text.StringBuilder(100);\n                            sb0.Append(ParseLastElement(i.ToString()));\n                            MyDebugDraw.TextBatch.AddText(screenPos, sb0, Color.Red, textSize);\n                            screenPos.Y += 20 * textSize;\n\n                            System.Text.StringBuilder sb = new System.Text.StringBuilder(100);\n                            sb.Append(ParseLastElement(name));\n                            MyDebugDraw.TextBatch.AddText(screenPos, sb, Color.YellowGreen, textSize);\n                            screenPos.Y += 20 * textSize;\n                        }\n\n                        if (logToConsole)\n                        {\n                            Console.ForegroundColor = ConsoleColor.Yellow;\n                            Console.WriteLine(name);\n                            Console.ForegroundColor = ConsoleColor.Gray;\n                        }\n                    }\n\n                    object obj2 = i.GetRigidBody2().m_UserData;\n                    if (obj2 is MyPhysicsBody)\n                    {\n                        MyPhysicsBody rb2 = (MyPhysicsBody)obj2;\n                        string name2 = rb2.Entity.ToString() + \" \" + i.GetRigidBody2().GUID;\n\n                        if (debugDraw) MyDebugDrawCachedLines.AddAABB(rb2.Entity.WorldAABB, Color.Red);\n\n                        if (drawText)\n                        {\n                            System.Text.StringBuilder sb2 = new System.Text.StringBuilder(100);\n                            sb2.Append(ParseLastElement(name2));\n\n                            MyDebugDraw.TextBatch.AddText(screenPos, sb2, Color.LightBlue, textSize);\n                            screenPos.Y += 20 * textSize;\n                        }\n\n                        if (logToConsole)\n                        {\n                            Console.ForegroundColor = ConsoleColor.Red;\n                            Console.WriteLine(name2);\n                            Console.ForegroundColor = ConsoleColor.Gray;\n                        }\n                    }\n\n                    if (drawText) screenPos.Y += 10 * textSize;\n                }\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Processing interactions\");\n\n#if RENDER_PROFILING\n            \n            foreach (MyRBElementInteraction i in m_InteractionsList)\n            {\n                i.DoWork();\n            } \n            //Parallel.For(0, m_InteractionsList.Count, m_InteractionAction, 1);\n#else\n            /*foreach (MyRBElementInteraction i in m_InteractionsList)\n            {\n                i.DoWork();\n            } */\n            //Peaks\n            //System.Threading.Tasks.Parallel.For(0, m_InteractionsList.Count, m_InteractionAction);\n            Parallel.For(0, m_InteractionsList.Count, m_InteractionAction, 1);\n#endif\n              \n                  /*\n            Dictionary<MinerWars.AppCode.Game.Entities.MyEntity, HashSet<MinerWars.AppCode.Game.Entities.MyEntity>> test = new Dictionary<Game.Managers.EntityManager.Entities.MyEntity, HashSet<Game.Managers.EntityManager.Entities.MyEntity>>();\n\n            foreach (MyRBElementInteraction i in m_InteractionsList)\n            {\n                MinerWars.AppCode.Game.Entities.MyEntity e1 = ((MyPhysicsBody)i.GetRigidBody1().m_UserData).Entity;\n                MinerWars.AppCode.Game.Entities.MyEntity e2 = ((MyPhysicsBody)i.GetRigidBody2().m_UserData).Entity;\n\n                if (test.ContainsKey(e1))\n                {\n                    if (!test[e1].Add(e2))\n                    {\n                    }\n                }\n                else\n                {\n                    HashSet<Game.Managers.EntityManager.Entities.MyEntity> hs = new HashSet<Game.Managers.EntityManager.Entities.MyEntity>();\n                    hs.Add(e2);\n                    test.Add(e1, hs);\n                }\n                if (test.ContainsKey(e2))\n                {\n                    if (!test[e2].Add(e1))\n                    {\n                    }\n                }\n                else\n                {\n                    HashSet<Game.Managers.EntityManager.Entities.MyEntity> hs = new HashSet<Game.Managers.EntityManager.Entities.MyEntity>();\n                    hs.Add(e1);\n                    test.Add(e2, hs);\n\n                }\n            }   */\n\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            m_InteractionsList.Clear();\n        }\n\n        public void Initialize()\n        {\n            m_EventTypes = new MyContactEventType[32,32];\n\n            MyContactEventType defaultContactTypeMask = MyContactEventType.CET_START_AND_END;\n\n            for (int i = 0; i < 32; i++)\n            {\n                for (int j = 0; j < 32; j++)\n                {\n                    m_EventTypes[i, j] = defaultContactTypeMask;\n                    m_EventTypes[j, i] = defaultContactTypeMask;\n                }\n            }\n\n            m_CollisionLayers = new bool[32,32];\n            for (int i = 0; i < 32; i++)\n            {\n                for (int j = 0; j < 32; j++)\n                {\n                    if(i == j)\n                        m_CollisionLayers[i, j] = true;\n                    else\n                        m_CollisionLayers[i, j] = false;\n                }\n            }\n\n        }\n\n        public void Destroy()\n        {\n            // release references to entities\n            m_ActiveRigids.Clear();\n            //m_Rigids.Clear();\n\n            foreach (var item in m_SolverPool.GetPreallocatedItemsArray())\n            {\n                item.Value.Clear();\n            }\n\n            m_SolverPool.DeallocateAll();\n            m_SolverList.Clear();\n\n            m_BroadPhase.Close();\n\n            System.Diagnostics.Debug.Assert(((MyDynamicAABBTreeBroadphase)m_BroadPhase).GetDAABBTree().GetHeight() == 0, \"Something has left in AABB, AABB should be clear\");\n              /*\n            MyDynamicAABBTree tree = ((MyDynamicAABBTreeBroadphase)m_BroadPhase).GetDAABBTree();\n            List<MyElement> lis = new List<MyElement>();\n            tree.GetAll(lis,true);\n                */\n                   /*\n            // TODO: These clears should NOT be necessary! (ticket 5658)\n            {\n                m_BroadPhase = new MyDynamicAABBTreeBroadphase();\n                m_PruningStructure = ((MyDynamicAABBTreeBroadphase)m_BroadPhase).GetDAABBTree();\n                m_DeactivationSolver = new MyRigidBodyIslandSleepState();\n                m_DeactivationSolver.m_Broadphase = m_BroadPhase;\n            }        */\n        }\n\n        /// <summary>\n        /// sets a mask for contact events for 2 rigid body types \n        /// </summary>\n        public void SetRigidBodyContactEventTypeMask(MyContactEventType ev, ushort type1, ushort type2)\n        {\n            m_EventTypes[type1, type2] = ev;\n            m_EventTypes[type2, type1] = ev;\n        }\n\n        public MyContactEventType GetRigidBodyContactEventTypeMask(ushort type1, ushort type2)\n        {\n            return m_EventTypes[type1,type2];\n        }\n\n \n\n        public HashSet<MyRigidBody> GetActiveRigids() { return m_ActiveRigids; }\n\n        /// <summary>\n        /// internal add of to active rigid list\n        /// </summary>\n        public void AddActiveRigid(MyRigidBody rbo)\n        {\n            if(rbo == null)\n                return;\n\n            if(rbo.ReadFlag(RigidBodyFlag.RBF_ACTIVE))\n                return;\n\n            //if (rbo.RigidBodyEventHandler != null)\n            //{\n            //    rbo.RigidBodyEventHandler.OnActivated();\n            //}            \n\n            rbo.RaiseFlag(RigidBodyFlag.RBF_ACTIVE);\n\n            m_ActiveRigids.Add(rbo);\n        }\n\n        public void RemoveActiveRigid(MyRigidBody rbo)\n        {\n            if (rbo == null)\n                return;\n\n            if (!rbo.ReadFlag(RigidBodyFlag.RBF_ACTIVE))\n                return;\n\n            //if (rbo.RigidBodyEventHandler != null)\n            //{\n            //    rbo.RigidBodyEventHandler.OnDeactivated();\n            //}            \n\n            rbo.ClearFlag(RigidBodyFlag.RBF_ACTIVE);\n\n            if (rbo.ReadFlag(RigidBodyFlag.RBF_KINEMATIC))\n            {\n                List<MyRigidBodyIsland> islands = MyPhysics.physicsSystem.GetRigidBodyModule().GetRigidBodyIslandGeneration().GetIslands();\n\n                for (int i = 0; i < islands.Count; i++)\n                {\n                    MyRigidBodyIsland island = islands[i];\n\n                    //MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Loop Rigids\");\n\n                    for (int j = 0; j < island.GetRigids().Count; j++)\n                    {\n                        MyRigidBody rboi = island.GetRigids()[j];\n                        if (rbo == rboi)\n                        {\n                            island.RemoveRigidBody(rbo);\n                            break;\n                        }\n                    }\n                }\n            }\n\n            bool found = m_ActiveRigids.Remove(rbo);\n            \n            //RBO wasnt in the list\n            Debug.Assert(found);\n        }\n\n        public MyBroadphase GetBroadphase() { return m_BroadPhase; }\n\n        /// <summary>\n        /// defines if 2 layes can or cannot collide\n        /// </summary>\n        public void EnableCollisionInLayers(System.UInt16 layer0, System.UInt16 layer1, bool enable)\n        {\n            m_CollisionLayers[layer0, layer1] = enable;\n            m_CollisionLayers[layer1, layer0] = enable;\n        }\n\n        public void EnableCollisionInLayers(System.UInt16 layer, bool enable)\n        {\n            for (int i = 0; i < 32; i++)\n            {\n                m_CollisionLayers[i, layer] = enable;\n                m_CollisionLayers[layer, i] = enable;\n            }\n        }\n\n        public bool IsEnabledCollisionInLayers(System.UInt16 layer0, System.UInt16 layer1)\n        {\n            return m_CollisionLayers[layer0,layer1];\n        }\n\n        public MyRigidBodyIslandGeneration GetRigidBodyIslandGeneration()\n        {\n            return m_RboIslandGeneration;\n        }\n\n        /// <summary>\n        /// returns group mask manager to get group masks\n        /// </summary>\n        public MyGroupMaskManager GetGroupMaskManager()\n        {\n            return m_GroupMaskManager;\n        }\n\n        public MyDynamicAABBTree GetPruningStructure() { return m_PruningStructure; }\n\n        #region members\n        private MyContactEventType[,]   m_EventTypes;\n        private bool[,] m_CollisionLayers;\n\n        private static HashSet<MyRigidBody> m_ActiveRigids;\n        private static List<MyRigidBody> m_Rigids;\n        private MyBroadphase m_BroadPhase;\n        private float m_CollisionEpsilon;\n        private float m_CurrentTimeStep = 0.02f;\n\n        private MyGroupMaskManager m_GroupMaskManager;\n\n        private MyRigidBodyIslandGeneration m_RboIslandGeneration;\n\n        private MyDynamicAABBTree m_PruningStructure;\n\n        // in case of DAABB\n        //private MyDAABBTreeUpdater m_DAABBTreeUpdater;\n        private Task m_DAABBTreeTask;\n\n        //private MyObjectsPool<MyRBIslandSolver> m_SolverPool;\n        private static MyObjectsPool<MyRBIslandNSolver> m_SolverPool;\n\n        private static List<MyRBIslandNSolver> m_SolverList;\n        private Action<int> m_SolverAction;\n\n        private List<MyRBElementInteraction> m_InteractionsList;\n        private Action<int> m_InteractionAction;\n\n        private MyRigidBodyIslandSleepState m_DeactivationSolver;\n        #endregion\n    }\n\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Physics/Core/Modules/MySensorInteractionModule.cs",
    "content": "﻿#region Using Statements\n\nusing System;\nusing System.Collections.Generic;\nusing System.Threading;\nusing MinerWarsMath;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing System.Diagnostics;\n\n#endregion\n\nnamespace MinerWars.AppCode.Physics\n{\n    /// <summary>\n    /// Stores sensor interactions and updates them\n    /// </summary>\n    class MySensorInteractionModule\n    {\n        static MySensorInteractionModule()\n        {\n            while (m_FreeSSSi.Count < m_InitialSphereSphereSensorInteractionStack)\n                m_FreeSSSi.Push(new MySphereSphereSensorInteraction());\n\n            while (m_FreeSBSi.Count < m_InitialSphereBoxSensorInteractionStack)\n                m_FreeSBSi.Push(new MySphereBoxSensorInteraction());\n\n            while (m_FreeBSSi.Count < m_InitialBoxSphereSensorInteractionStack)\n                m_FreeBSSi.Push(new MyBoxSphereSensorInteraction());\n\n            while (m_FreeBBSi.Count < m_InitialBoxBoxSensorInteractionStack)\n                m_FreeBBSi.Push(new MyBoxBoxSensorInteraction());\n\n            while (m_FreeBOSi.Count < m_InitialBoxOtherSensorInteractionStack)\n                m_FreeBOSi.Push(new MyBoxOtherSensorInteraction());\n\n            while (m_FreeSOSi.Count < m_InitialSphereOtherSensorInteractionStack)\n                m_FreeSOSi.Push(new MySphereOtherSensorInteraction());\n        }\n\n        public MySensorInteractionModule()\n        {\n            while (m_FreeSSSi.Count < m_InitialSphereSphereSensorInteractionStack)\n                m_FreeSSSi.Push(new MySphereSphereSensorInteraction());\n\n            while (m_FreeSBSi.Count < m_InitialSphereBoxSensorInteractionStack)\n                m_FreeSBSi.Push(new MySphereBoxSensorInteraction());\n\n            while (m_FreeBSSi.Count < m_InitialBoxSphereSensorInteractionStack)\n                m_FreeBSSi.Push(new MyBoxSphereSensorInteraction());\n\n            while (m_FreeBBSi.Count < m_InitialBoxBoxSensorInteractionStack)\n                m_FreeBBSi.Push(new MyBoxBoxSensorInteraction());\n\n            while (m_FreeBOSi.Count < m_InitialBoxOtherSensorInteractionStack)\n                m_FreeBOSi.Push(new MyBoxOtherSensorInteraction());\n\n            while (m_FreeSOSi.Count < m_InitialSphereOtherSensorInteractionStack)\n                m_FreeSOSi.Push(new MySphereOtherSensorInteraction());\n            \n            m_CurrentInteractions.Clear();\n        }\n\n        /// <summary>\n        /// adds new sensor interaction between sensor and rigid\n        /// </summary>\n        public void AddSensorInteraction(MySensorElement sensorElement, MyRBElement rbElement)\n        {\n            if (sensorElement.DetectRigidBodyTypes != null && rbElement.GetRigidBody().Type != sensorElement.DetectRigidBodyTypes.Value) \n            {\n                return;\n            }            \n            \n            MySensorInteraction si = null;\n\n            int guid1 = sensorElement.GUID;\n            int guid2 = rbElement.GUID;\n\n            if (guid1 > guid2)\n            {\n                int tm = guid2;\n                guid2 = guid1;\n                guid1 = tm;\n            }\n\n            int guid = guid1 + (guid2 << 16);\n\n            // if this interaction is in current interactions\n            if (m_CurrentInteractions.ContainsKey(guid)) \n            {\n                return;\n            }            \n\n            //if (sensorElement.Sensor.m_Interactions.TryGetValue(guid, out si))\n            //{\n            //    Debug.Assert(guid == si.m_Guid);\n            //    m_CurrentInteractions.Add(guid, si);\n            //    return;\n            //}\n\n            if (m_InteractionsInUse.TryGetValue(guid, out si))\n            {\n                Debug.Assert(guid == si.m_Guid);\n                m_CurrentInteractions.Add(guid, si);\n                return;\n            }            \n\n            switch (sensorElement.GetElementType())\n            {\n                case MySensorElementType.ET_SPHERE:\n                    {\n                        switch (rbElement.GetElementType())\n                        {\n                            case MyRBElementType.ET_SPHERE:\n                                {\n                                    if (m_FreeSSSi.Count == 0)\n                                    {\n                                        m_FreeSSSi.Push(new MySphereSphereSensorInteraction());\n                                        m_newAllocatedInteractions++;\n                                    }\n                                    si = m_FreeSSSi.Pop();\n                                }\n                                break;\n                            case MyRBElementType.ET_BOX:\n                                {\n                                    if (m_FreeSBSi.Count == 0)\n                                    {\n                                        m_FreeSBSi.Push(new MySphereBoxSensorInteraction());\n                                        m_newAllocatedInteractions++;\n                                    }\n                                    si = m_FreeSBSi.Pop();\n                                }\n                                break;\n                            default:\n                                {\n                                    if (m_FreeSOSi.Count == 0) \n                                    {\n                                        m_FreeSOSi.Push(new MySphereOtherSensorInteraction());\n                                        m_newAllocatedInteractions++;\n                                    }\n                                    si = m_FreeSOSi.Pop();\n                                }\n                                break;\n                        }\n                    }\n                    break;\n                case MySensorElementType.ET_BOX:\n                    switch (rbElement.GetElementType())\n                    {\n                        case MyRBElementType.ET_SPHERE:\n                            {\n                                if (m_FreeBSSi.Count == 0)\n                                {\n                                    m_FreeBSSi.Push(new MyBoxSphereSensorInteraction());\n                                    m_newAllocatedInteractions++;\n                                }\n                                si = m_FreeBSSi.Pop();\n                            }\n                            break;\n                        case MyRBElementType.ET_BOX:\n                            {\n                                if (m_FreeBBSi.Count == 0)\n                                {\n                                    m_FreeBBSi.Push(new MyBoxBoxSensorInteraction());\n                                    m_newAllocatedInteractions++;\n                                }\n                                si = m_FreeBBSi.Pop();\n                            }\n                            break;\n                        default:\n                            {\n                                if (m_FreeBOSi.Count == 0)\n                                {\n                                    m_FreeBOSi.Push(new MyBoxOtherSensorInteraction());\n                                    m_newAllocatedInteractions++;\n                                }\n                                si = m_FreeBOSi.Pop();\n                            }\n                            break;\n                    }\n                    break;\n                default:\n                    break;\n            }\n\n            if (si == null)\n            {\n                return;\n            }\n\n            Debug.Assert(!si.m_IsInUse);             \n            si.Init(sensorElement, rbElement);            \n            Debug.Assert(guid == si.m_Guid);\n            m_CurrentInteractions.Add(guid, si);\n            m_InteractionsInUse.Add(guid, si);\n            m_interactionsInUse++;\n            if (m_interactionsInUse > m_interactionsInUseMax) \n            {\n                m_interactionsInUseMax = m_interactionsInUse;\n            }\n        }\n\n        public void RemoveSensorInteraction(MySensorInteraction si)\n        {            \n            Debug.Assert(si.m_IsInUse);            \n            m_CurrentInteractions.Remove(si.m_Guid);\n            m_InteractionsInUse.Remove(si.m_Guid);\n            si.Close();\n            switch (si.GetInteractionType())\n            {\n                case MySensorInteractionEnum.SI_SPHERE_SPHERE:\n                    {\n                        m_FreeSSSi.Push((MySphereSphereSensorInteraction)si);\n                    }\n                    break;\n                case MySensorInteractionEnum.SI_SPHERE_BOX:\n                    {\n                        m_FreeSBSi.Push((MySphereBoxSensorInteraction)si);\n                    }\n                    break;\n                case MySensorInteractionEnum.SI_BOX_SPHERE:\n                    {\n                        m_FreeBSSi.Push((MyBoxSphereSensorInteraction)si);\n                    }\n                    break;\n                case MySensorInteractionEnum.SI_BOX_BOX:\n                    {\n                        m_FreeBBSi.Push((MyBoxBoxSensorInteraction)si);\n                    }\n                    break;\n                case MySensorInteractionEnum.SI_BOX_OTHER:\n                    {\n                        m_FreeBOSi.Push((MyBoxOtherSensorInteraction)si);\n                    }\n                    break;\n                case MySensorInteractionEnum.SI_SPHERE_OTHER:\n                    { \n                        m_FreeSOSi.Push((MySphereOtherSensorInteraction)si);\n                    }\n                    break;\n                default:\n                    break;\n            }\n            m_interactionsInUse--;\n        }\n\n        private void PrepareSafetySensorInteractionIterator() \n        {\n            m_SafetySensorInteractionIterator.Clear();\n            foreach (var siKvp in m_CurrentInteractions) \n            {\n                m_SafetySensorInteractionIterator.Add(siKvp.Value);\n            }\n        }\n\n        /// <summary>\n        /// Computes the interactions to check if there are in penetration or not\n        /// </summary>\n        public void UpdateInteractions(float dt)\n        {\n            PrepareSafetySensorInteractionIterator();\n            // lets compute the work synchronouse, those interaction now are very fast to compute, can make multithreaded later\n            foreach (var si in m_SafetySensorInteractionIterator) \n            {\n                si.DoWork();\n            }\n        }\n\n        /// <summary>\n        /// Checks for new interactions to raise enter event\n        /// </summary>\n        public void CheckInteractions(float dt)\n        {\n            m_checkInteractionsActive = true;\n            PrepareSafetySensorInteractionIterator();\n            foreach (var si in m_SafetySensorInteractionIterator)\n            {                \n                MySensor sensor = si.m_SensorElement.Sensor;                \n\n                if (!sensor.m_Interactions.ContainsKey(si.m_Guid))\n                {\n                    if (si.m_IsInside)\n                    {\n                        // new enter event\n                        sensor.m_Interactions.Add(si.m_Guid, si);\n                        sensor.GetHandler().OnEnter(si.m_SensorElement.Sensor, si.m_RBElement.GetRigidBody(), si.m_RBElement);\n                    }\n                    else\n                    {\n                        RemoveSensorInteraction(si);\n                    }\n                }\n            }\n            m_checkInteractionsActive = false;\n        }\n\n        public void PutCurrentInteractionsBack() \n        {\n            PrepareSafetySensorInteractionIterator();\n            foreach (var si in m_SafetySensorInteractionIterator)\n            {\n                // we want remove interactions which are not added to their sensor's interactions\n                if (!si.m_SensorElement.Sensor.m_Interactions.ContainsKey(si.m_Guid)) \n                {\n                    RemoveSensorInteraction(si);\n                }                \n            }\n        }\n\n        public void Flush()\n        {\n            m_CurrentInteractions.Clear();\n        }\n\n        public bool IsCheckInteractionsActive() \n        {\n            return m_checkInteractionsActive;\n        }\n\n        public const int m_InitialSphereSphereSensorInteractionStack = 512;\n        public const int m_InitialSphereBoxSensorInteractionStack = 512;\n        public const int m_InitialBoxSphereSensorInteractionStack = 512;\n        public const int m_InitialBoxBoxSensorInteractionStack = 512;\n        public const int m_InitialBoxOtherSensorInteractionStack = 512;\n        public const int m_InitialSphereOtherSensorInteractionStack = 512;\n        private static Stack<MySphereSphereSensorInteraction> m_FreeSSSi = new Stack<MySphereSphereSensorInteraction>(m_InitialSphereSphereSensorInteractionStack);\n        private static Stack<MySphereBoxSensorInteraction> m_FreeSBSi = new Stack<MySphereBoxSensorInteraction>(m_InitialSphereBoxSensorInteractionStack);\n        private static Stack<MyBoxSphereSensorInteraction> m_FreeBSSi = new Stack<MyBoxSphereSensorInteraction>(m_InitialBoxSphereSensorInteractionStack);\n        private static Stack<MyBoxBoxSensorInteraction> m_FreeBBSi = new Stack<MyBoxBoxSensorInteraction>(m_InitialSphereBoxSensorInteractionStack);\n        private static Stack<MyBoxOtherSensorInteraction> m_FreeBOSi = new Stack<MyBoxOtherSensorInteraction>(m_InitialBoxOtherSensorInteractionStack);\n        private static Stack<MySphereOtherSensorInteraction> m_FreeSOSi = new Stack<MySphereOtherSensorInteraction>(m_InitialSphereOtherSensorInteractionStack);\n        private static Dictionary<int, MySensorInteraction> m_CurrentInteractions = new Dictionary<int, MySensorInteraction>(128);\n        private static Dictionary<int, MySensorInteraction> m_InteractionsInUse = new Dictionary<int, MySensorInteraction>(512);\n        private static List<MySensorInteraction> m_SafetySensorInteractionIterator = new List<MySensorInteraction>(128);\n        private int m_interactionsInUse = 0;\n        private int m_newAllocatedInteractions = 0;\n        private int m_interactionsInUseMax = 0;\n        private bool m_checkInteractionsActive = false;\n\n        public int GetNewAllocatedInteractionsCount() \n        {\n            return m_newAllocatedInteractions;\n        }\n\n        public int GetInteractionsInUseCount() \n        {\n            return m_interactionsInUse;\n        }\n\n        public int GetInteractionsInUseCountMax() \n        {\n            return m_interactionsInUseMax;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Physics/Core/Modules/MySensorModule.cs",
    "content": "﻿#region Using Statements\n\nusing System.Collections.Generic;\nusing MinerWarsMath;\n\n#endregion\n\nnamespace MinerWars.AppCode.Physics\n{\n    /// <summary>\n    /// Sensor module for sensor operations. If you want to simulate your sensor it has to be inserted into this module in order to be simulated.\n    /// </summary>\n    class MySensorModule\n    {\n        public MySensorModule()\n        {\n            m_Sensors.Clear();\n            m_SensorsToRemove.Clear();\n            m_SensorsToAdd.Clear();\n            m_RemoveList.Clear();\n            m_ActiveSensors.Clear();\n        }\n\n        public void Destroy() \n        {\n            foreach (MySensor sensor in m_Sensors) \n            {\n                sensor.MarkForClose();\n                ClearSensor(sensor);\n            }\n            m_Sensors.Clear();\n            //m_Sensors = null;\n\n            foreach (var sensorKVP in m_SensorsToAdd) \n            {\n                sensorKVP.Value.MarkForClose();\n                ClearSensor(sensorKVP.Value);\n            }\n            m_SensorsToAdd.Clear();\n            //m_SensorsToAdd = null;\n\n            //foreach (var sensorKVP in m_SensorsToRemove) \n            //{\n            //    sensorKVP.Value.MarkForClose();\n            //    ClearSensor(sensorKVP.Value);\n            //}\n            m_SensorsToRemove.Clear();\n            //m_SensorsToRemove = null;\n\n            m_ActiveSensors.Clear();\n            //m_ActiveSensors = null;\n\n            m_RemoveList.Clear();\n            //m_RemoveList = null;\n        }\n\n        public bool AddSensor(MySensor sensor)\n        {\n            //if (sensor.Inserted)\n            //{\n            //    return false;\n            //}\n\n            //m_SensorsToAdd.Add(sensor);\n            //return true;\n            bool result = false;\n            if (m_SensorsToRemove.ContainsKey(sensor.GUID))\n            {\n                m_SensorsToRemove.Remove(sensor.GUID);\n                sensor.Active = true;\n                sensor.PrepareSensorInteractions();\n                result = true;\n            }\n            else\n            {\n                if (!m_SensorsToAdd.ContainsKey(sensor.GUID))\n                {\n                    m_SensorsToAdd.Add(sensor.GUID, sensor);\n                    result = true;\n                }\n            }\n            return result;\n        }        \n\n        public bool RemoveSensor(MySensor sensor)\n        {\n            //if (sensor.Inserted == false)\n            //{\n            //    return false;\n            //}\n                        \n            //m_SensorsToRemove.Add(sensor);\n            //return true;\n            bool result = false;\n            if (m_SensorsToAdd.ContainsKey(sensor.GUID))\n            {                \n                m_SensorsToAdd.Remove(sensor.GUID);\n                result = true;\n            }\n            else\n            {\n                if (!m_SensorsToRemove.ContainsKey(sensor.GUID))\n                {\n                    m_SensorsToRemove.Add(sensor.GUID, sensor);\n                    result = true;\n                }\n            }\n            return result;\n        }\n\n        /// <summary>\n        /// When a sensor moves its needs to update its volume in broadphase\n        /// </summary>\n        public void MoveSensor(MySensor sensor, bool activateSensor)\n        {\n            if (sensor.Inserted)\n            {\n                MySensorElement el = sensor.GetElement();\n                MyPhysics.physicsSystem.GetRigidBodyModule().GetBroadphase().MoveVolume(el);\n                sensor.Active = true;                \n            }\n        }\n\n        /// <summary>\n        /// updates the sensor interactions (only non active sensors)\n        /// </summary>\n        public void PrepareSensorInteractions()\n        {\n            foreach(var sensor in m_Sensors)\n            {\n                if (!sensor.Active)\n                {\n                    sensor.PrepareSensorInteractions();\n                }\n            }\n        }\n\n        /// <summary>\n        /// Checks if some interactions are not used anymore and removes them\n        /// </summary>\n        public void ParseSensorInteractions()\n        {\n            foreach (var sensor in m_Sensors)\n            {\n                m_RemoveList.Clear();\n                foreach (var dv in sensor.m_Interactions)\n                {\n                    MySensorInteraction si = dv.Value;\n                    if (si.m_IsInside == false)\n                    {\n                        // leave event \n                        sensor.GetHandler().OnLeave(si.m_SensorElement.Sensor, si.m_RBElement.GetRigidBody(), si.m_RBElement);\n                        m_RemoveList.Add(si.m_Guid);                        \n                        MyPhysics.physicsSystem.GetSensorInteractionModule().RemoveSensorInteraction(si);                        \n                    }\n                }\n\n                foreach(var guid in m_RemoveList)\n                {\n                    sensor.m_Interactions.Remove(guid);\n                }\n            }                        \n        }\n\n        public void HandleSensorChanges() \n        {\n            foreach (var sensorToRemoveKVP in m_SensorsToRemove)\n            {\n                MySensor sensorToRemove = sensorToRemoveKVP.Value;\n\n                ClearSensor(sensorToRemove);\n\n                m_Sensors.Remove(sensorToRemove);\n            }\n            m_SensorsToRemove.Clear();\n\n            foreach(var sensorToAddKVP in m_SensorsToAdd)\n            {\n                MySensor sensorToAdd = sensorToAddKVP.Value;\n\n                // insert to sort into bp\n                MySensorElement elem = sensorToAdd.GetElement();\n                elem.UpdateAABB();\n                MyPhysics.physicsSystem.GetRigidBodyModule().GetBroadphase().CreateVolume(elem);\n                sensorToAdd.Inserted = true;\n\n                m_Sensors.Add(sensorToAdd);                \n            }\n            m_SensorsToAdd.Clear();            \n        }\n\n        private void ClearSensor(MySensor sensor) \n        {\n            MySensorElement elem = sensor.GetElement();\n            elem.UpdateAABB();\n            MyPhysics.physicsSystem.GetRigidBodyModule().GetBroadphase().DestroyVolume(elem);\n            foreach (var siKvp in sensor.m_Interactions)\n            {\n                MyPhysics.physicsSystem.GetSensorInteractionModule().RemoveSensorInteraction(siKvp.Value);\n            }\n            sensor.m_Interactions.Clear();\n            sensor.Active = false;\n            sensor.Inserted = false;\n\n            if (sensor.IsMarkedForClose())\n            {\n                sensor.Close();\n            }\n        }\n\n        public int SensorsCount() \n        {\n            return m_Sensors.Count;\n        }\n\n        public List<MySensor> ActiveSensors { get { return m_ActiveSensors; } }\n\n        private static List<MySensor> m_Sensors = new List<MySensor>(128);\n        private static List<int> m_RemoveList = new List<int>(32);\n        private static Dictionary<int, MySensor> m_SensorsToAdd = new Dictionary<int, MySensor>(32);\n        private static Dictionary<int, MySensor> m_SensorsToRemove = new Dictionary<int, MySensor>(32);\n        private static List<MySensor> m_ActiveSensors = new List<MySensor>(128);\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Physics/Core/MyPhysics.cs",
    "content": "﻿#region Using Statements\n\nusing System.Collections.Generic;\nusing MinerWarsMath;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing System.Threading;\nusing SysUtils.Utils;\nusing ParallelTasks;\nusing System;\n#endregion\n\nnamespace MinerWars.AppCode.Physics\n{\n    //////////////////////////////////////////////////////////////////////////\n    /// <summary>\n    /// base physics class holding modules and physics classes. This is the world that you simulate.\n    /// </summary>\n    class MyPhysics\n    {\n        public static bool PhysicsSimulation = true;\n        public static MyPhysics physicsSystem;\n\n        static MyPhysics()\n        {            \n        }\n\n        public MyPhysics()\n        {\n            physicsSystem = this;\n\n            m_RigidBodyModule = new MyRigidBodyModule();\n            m_SensorModule = new MySensorModule();\n            m_ContactConstraintModule = new MyContactConstraintModule();\n\n            m_SensorInteractionModule = new MySensorInteractionModule();            \n\n            m_RBInteractionModule = new MyRBInteractionModule();\n            m_Utils = new MyPhysicsUtils();\n\n            m_PhysicsObjects = new MyPhysicsObjects();\n\n            m_SimulationHandlers = new List<MyPhysSimulationHandler>(16);\n        }\n\n        public static void DebugDrawPhysicsPrunning()\n        {\n            if (MyPhysics.physicsSystem == null) \n            {\n                return;\n            }\n\n            BoundingBox aabb = new BoundingBox(new Vector3(float.MinValue), new Vector3(float.MaxValue));\n            List<Physics.MyElement> list = new List<Physics.MyElement>();\n            //((MinerWars.AppCode.Physics.MyDynamicAABBTree)MinerWars.AppCode.Physics.MyPhysics.physicsSystem.GetRigidBodyModule().GetPruningStructure()).Rebalance(256);\n\n            MyPhysics.physicsSystem.GetRigidBodyModule().GetPruningStructure().OverlapAllBoundingBox(ref aabb, list, 0, false);\n\n            foreach (Physics.MyElement element in list)\n            {\n                BoundingBox elementAABB = element.GetWorldSpaceAABB();\n\n                if (Vector3.Distance(elementAABB.Min, MinerWars.AppCode.Game.Utils.MyCamera.Position) < 1000)\n                {\n                    Vector4 color = Vector4.One;\n                    MinerWars.AppCode.Game.Utils.MyDebugDraw.DrawAABBLowRes(ref elementAABB, ref color, 1.0f);\n                }\n            }\n        }\n\n        public bool InitializePhysics()\n        {\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MyPhysics.InitializePhysics\");\n            m_RigidBodyModule.Initialize();\n            m_RBInteractionModule.Init();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n            return true;\n        }\n\n        public void DestroyPhysics()\n        {\n            m_SensorModule.Destroy();\n            m_SensorModule = null;\n\n            m_RigidBodyModule.Destroy();\n            m_RigidBodyModule = null;\n\n            m_RBInteractionModule.Destroy();\n            m_RBInteractionModule = null;\n\n            m_ContactConstraintModule.Destroy();\n            m_ContactConstraintModule = null;\n            m_SimulationHandlers.Clear();\n            m_SimulationHandlers = null;\n\n            physicsSystem = null;            \n            \n            \n            m_SensorInteractionModule = null;\n            \n            m_Utils = null;\n            m_PhysicsObjects = null;\n        }\n\n        /// <summary>\n        /// Simulation handlers can be registered here in order to receive simulation notifications\n        /// </summary>\n        public void RegisterSimulationHandler(MyPhysSimulationHandler simHandler)\n        {\n#if PHYSICS_CHECK\n            for (int i = 0; i < m_SimulationHandlers.Count; i++ )\n            {\n                MyPhysSimulationHandler simH = m_SimulationHandlers[i];\n                if(simH == simHandler)\n                {            \n                    // cannot add already existing item!\n                    MyCommonDebugUtils.AssertDebug(false);\n                }\n            }\n#endif\n            m_SimulationHandlers.Add(simHandler);\n        }\n\n        public void UnregisterSimulationHandler(MyPhysSimulationHandler simHandler)\n        {\n#if PHYSICS_CHECK\n            bool found = false;\n            for (int i = 0; i < m_SimulationHandlers.Count; i++)\n            {\n                MyPhysSimulationHandler simH = m_SimulationHandlers[i];\n                if (simH == simHandler)\n                {\n                    found = true;\n                    break;\n                }\n            }\n            if (!found)\n            {\n                // cannot remove item!\n                MyCommonDebugUtils.AssertDebug(false);\n            }\n#endif\n            m_SimulationHandlers.Remove(simHandler);\n        }\n\n        /// <summary>\n        /// main simulation function\n        /// </summary>\n        public void Simulate(float timeStep)\n        {\n            if (!PhysicsSimulation)\n            {\n                return;\n            }\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"fire before simulation callbacks\");\n\n            MyRBBoxElementTriangleMeshElementInteraction.TestsCount = 0;\n            MyRBBoxElementTriangleMeshElementInteraction.TrianglesTested = 0;\n\n            // fire before simulation callbacks\n            for (int i = 0; i < m_SimulationHandlers.Count; i++)\n            {\n                MyPhysSimulationHandler simH = m_SimulationHandlers[i];\n                simH.BeforeSimulation(timeStep);\n            }\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"simulate rigid bodies\");\n\n            // simulate rigid bodies\n            m_RigidBodyModule.Simulate(timeStep);\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"fire after simulation callbacks\");\n\n            // fire after simulation callbacks\n            for (int i = 0; i < m_SimulationHandlers.Count; i++)\n            {\n                MyPhysSimulationHandler simH = m_SimulationHandlers[i];\n                simH.AfterSimulation(timeStep);\n            }\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n        }\n\n        public Vector3 Gravitation\n        {\n            get { return m_Gravitation; }\n            set { m_Gravitation = value; }\n        }\n\n        public List<Tuple<BoundingSphere, float>> GravitationPoints\n        {\n            get { return m_GravitationPoints; }\n        }\n\n        public MyRigidBodyModule GetRigidBodyModule() { return m_RigidBodyModule; }\n        public MyRBInteractionModule GetRBInteractionModule() { return m_RBInteractionModule; }\n        public MyPhysicsUtils GetUtils() { return m_Utils; }\n        public MyPhysicsObjects GetPhysicsObjects() { return m_PhysicsObjects; }\n        public MyContactConstraintModule GetContactConstraintModule() { return m_ContactConstraintModule; }\n        public MySensorModule GetSensorModule() { return m_SensorModule; }\n        public MySensorInteractionModule GetSensorInteractionModule() { return m_SensorInteractionModule; }\n\n#region members\n        private Vector3 m_Gravitation = Vector3.Zero;\n        private List<Tuple<BoundingSphere, float>> m_GravitationPoints = new List<Tuple<BoundingSphere, float>>();\n        private MyPhysicsObjects            m_PhysicsObjects;\n        private List<MyPhysSimulationHandler>   m_SimulationHandlers;\n        private MyRigidBodyModule           m_RigidBodyModule;\n        private MySensorModule              m_SensorModule;\n        private MyContactConstraintModule   m_ContactConstraintModule;\n        private MyRBInteractionModule       m_RBInteractionModule;\n        private MyPhysicsUtils              m_Utils;        \n        private MySensorInteractionModule   m_SensorInteractionModule;        \n\n#endregion\n        \n    }\n\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Physics/Core/MyPhysicsConfig.cs",
    "content": "﻿\n#region Using Statements\n\n\n#endregion\n\n\nnamespace MinerWars.AppCode.Physics\n{\n    //////////////////////////////////////////////////////////////////////////    \n    /// <summary>\n    /// Configuration parameters of physics system\n    /// </summary>\n    public static class MyPhysicsConfig\n    {\n        public const float CollisionEpsilon = 0.2f;\n        public const float Epsilon = 1.0e-6f;\n        public const float TriangleEpsilon = 0.02f;\n        public const float AllowedPenetration = 0.01f;\n        public const float MaxVelMag = 0.5f;\n        public const float AABBExtension = 3.0f;\n        public const float AabbMultiplier = 1.3f;\n\n        //Be careful with setting these values to 0, object will never get to sleep state if not stopped manually\n        public const float DefaultLinearDamping = 0.0f;\n        public const float DefaultAngularDamping = 0.1f; \n        ////////////////\n\n        public const float DefaultEnergySleepThreshold = 0.2f;\n        public const float DefaultMaxLinearVelocity = 1000.0f;\n        public const float DefaultMaxAngularVelocity = 20.0f;\n        public const int DefaultIterationCount = 20;\n        public const int MaxContactPoints = 3;\n\n        public const int MaxCollidingElements = 256;\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Physics/Core/MyPhysicsObjects.cs",
    "content": "﻿#region Using Statements\n\nusing MinerWars.CommonLIB.AppCode.Generics;\nusing SysUtils.Utils;\n#endregion\n\nnamespace MinerWars.AppCode.Physics\n{\n    // for object pools and generation\n    //////////////////////////////////////////////////////////////////////////\n    //////////////////////////////////////////////////////////////////////////\n    /// <summary>\n    /// Objects class as a container for preallocated physics objects - rigids, descs, elements etc\n    /// Base class for creation of rigids and elements. \n    /// </summary>\n    class MyPhysicsObjects\n    {\n        public MyPhysicsObjects()\n        {\n            m_RigidBodyDesc = new MyRigidBodyDesc();\n            m_SensorDesc = new MySensorDesc();\n            m_RBSphereElementDesc = new MyRBSphereElementDesc();\n            m_RBBoxElementDesc = new MyRBBoxElementDesc();\n            m_RBCapsuleElementDesc = new MyRBCapsuleElementDesc();\n            m_RBTriangleMeshDesc = new MyRBTriangleMeshElementDesc();\n            m_RBVoxelElementDesc = new MyRBVoxelElementDesc();\n\n            m_SensorsPool = new MyObjectsPool<MySensor>(128);\n            m_SphereSensorElementPool = new MyObjectsPool<MySphereSensorElement>(128);\n\n            m_RigidsPool = new MyObjectsPool<MyRigidBody>(24576);\n            m_RBSphereElementPool = new MyObjectsPool<MyRBSphereElement>(16384);\n            m_RBBoxElementPool = new MyObjectsPool<MyRBBoxElement>(16384);\n            m_RBCapsuleElementPool = new MyObjectsPool<MyRBCapsuleElement>(16);\n            m_RBTriangleMeshElementPool = new MyObjectsPool<MyRBTriangleMeshElement>(16384);//value from Ales - 64\n            m_RBVoxelElementPool = new MyObjectsPool<MyRBVoxelElement>(512);\n        }\n\n        public MyRigidBodyDesc GetRigidBodyDesc() { return m_RigidBodyDesc; }\n        public MyRBSphereElementDesc GetRBSphereElementDesc() { return m_RBSphereElementDesc; }\n        public MyRBBoxElementDesc GetRBBoxElementDesc() { return m_RBBoxElementDesc; }\n        public MyRBCapsuleElementDesc GetRBCapsuleElementDesc() { return m_RBCapsuleElementDesc; }\n        public MyRBTriangleMeshElementDesc GetRBTriangleMeshElementDesc() { return m_RBTriangleMeshDesc; }\n        public MyRBVoxelElementDesc GetRBVoxelElementDesc() { return m_RBVoxelElementDesc; }        \n\n        public MyRigidBody CreateRigidBody(MyRigidBodyDesc desc)\n        {\n            if (!desc.IsValid())\n            {\n                // invalid desc\n                MyCommonDebugUtils.AssertDebug(false);\n                return null;\n            }\n\n            MyRigidBody rbo = m_RigidsPool.Allocate();\n\n            MyCommonDebugUtils.AssertDebug(rbo != null);\n\n            rbo.LoadFromDesc(desc);\n\n            return rbo;\n        }\n\n        public MySensor CreateSensor(MySensorDesc desc)\n        {\n            if (!desc.IsValid())\n            {\n                // invalid desc\n                MyCommonDebugUtils.AssertDebug(false);\n                return null;\n            }\n\n            MySensor sensor = m_SensorsPool.Allocate();\n\n            MyCommonDebugUtils.AssertDebug(sensor != null);\n\n            sensor.LoadFromDesc(desc);\n\n            return sensor;\n        }\n\n        public void DestroyRigidBody(MyRigidBody rbo)\n        {\n            if ((rbo.ReadFlag(RigidBodyFlag.RBF_INSERTED)))\n            {\n                MyPhysics.physicsSystem.GetRigidBodyModule().Remove(rbo);\n            }\n\n            m_RigidsPool.Deallocate(rbo);\n        }\n\n        public void DestroySensor(MySensor sensor)\n        {\n            if(sensor.Inserted)\n            {\n                MyPhysics.physicsSystem.GetSensorModule().RemoveSensor(sensor);\n            }\n\n            m_SensorsPool.Deallocate(sensor);\n        }\n\n        public MySensorElement CreateSensorElement(MySensorElementDesc desc)\n        {\n            switch(desc.GetElementType())\n            {\n                case MySensorElementType.ET_SPHERE:\n                    {\n                        MySphereSensorElement element = m_SphereSensorElementPool.Allocate();\n\n                        MyCommonDebugUtils.AssertDebug(element != null);\n\n                        if (element.LoadFromDesc(desc))\n                            return element;\n                        else\n                        {\n                            m_SphereSensorElementPool.Deallocate(element);\n                            return null;\n                        }\n                    }\n                    break;\n                default:\n                    return null;\n                    break;\n            }\n        }\n\n        public MyRBElement CreateRBElement(MyRBElementDesc desc)\n        {\n            switch (desc.GetElementType())\n            {\n                case MyRBElementType.ET_SPHERE:\n                    {\n                        MyRBSphereElement element = m_RBSphereElementPool.Allocate();\n\n                        MyCommonDebugUtils.AssertDebug(element != null);\n\n                        if (element.LoadFromDesc(desc))\n                            return element;\n                        else\n                        {\n                            m_RBSphereElementPool.Deallocate(element);\n                            return null;\n                        }\n                    }\n                    break;\n                case MyRBElementType.ET_BOX:\n                    {\n                        MyRBBoxElement element = m_RBBoxElementPool.Allocate();\n\n                        MyCommonDebugUtils.AssertDebug(element != null);\n\n                        if (element.LoadFromDesc(desc))\n                            return element;\n                        else\n                        {\n                            m_RBBoxElementPool.Deallocate(element);\n                            return null;\n                        }\n                    }\n                    break;\n                case MyRBElementType.ET_CAPSULE:\n                    {\n                        MyRBCapsuleElement element = m_RBCapsuleElementPool.Allocate();\n\n                        MyCommonDebugUtils.AssertDebug(element != null);\n\n                        if (element.LoadFromDesc(desc))\n                            return element;\n                        else\n                        {\n                            m_RBCapsuleElementPool.Deallocate(element);\n                            return null;\n                        }\n                    }\n                    break;\n                case MyRBElementType.ET_TRIANGLEMESH:\n                    {\n                        MyRBTriangleMeshElement element = m_RBTriangleMeshElementPool.Allocate();\n\n                        MyCommonDebugUtils.AssertDebug(element != null);\n\n                        if (element.LoadFromDesc(desc))\n                            return element;\n                        else\n                        {\n                            m_RBTriangleMeshElementPool.Deallocate(element);\n                            return null;\n                        }\n                    }\n                    break;\n                case MyRBElementType.ET_VOXEL:\n                    {\n                        MyRBVoxelElement element = m_RBVoxelElementPool.Allocate();\n\n                        MyCommonDebugUtils.AssertDebug(element != null);\n\n                        if (element.LoadFromDesc(desc))\n                            return element;\n                        else\n                        {\n                            m_RBVoxelElementPool.Deallocate(element);\n                            return null;\n                        }\n                    }\n                    break;\n                default:\n                    // unknown element type\n                    MyCommonDebugUtils.AssertDebug(false);\n                    break;\n            }\n            return null;\n        }\n\n\n        public void RemoveRBElement(MyRBElement element)\n        {\n            switch (element.GetElementType())\n            {\n                case MyRBElementType.ET_SPHERE:\n                    {\n                        m_RBSphereElementPool.Deallocate((MyRBSphereElement)element);\n                    }\n                    break;\n                case MyRBElementType.ET_BOX:\n                    {\n                        m_RBBoxElementPool.Deallocate((MyRBBoxElement)element);\n                    }\n                    break;\n                case MyRBElementType.ET_CAPSULE:\n                    {\n                        m_RBCapsuleElementPool.Deallocate((MyRBCapsuleElement)element);\n                    }\n                    break;\n                case MyRBElementType.ET_TRIANGLEMESH:\n                    {\n                        m_RBTriangleMeshElementPool.Deallocate((MyRBTriangleMeshElement)element);\n                    }\n                    break;\n                case MyRBElementType.ET_VOXEL:\n                    {\n                        m_RBVoxelElementPool.Deallocate((MyRBVoxelElement)element);\n                    }\n                    break;\n                default:\n                    // unknown element type\n                    MyCommonDebugUtils.AssertDebug(false);\n                    break;\n            }\n        }\n\n        private MyRigidBodyDesc m_RigidBodyDesc;\n        private MyRBSphereElementDesc m_RBSphereElementDesc;\n        private MyRBBoxElementDesc m_RBBoxElementDesc;\n        private MyRBCapsuleElementDesc m_RBCapsuleElementDesc;\n        private MyRBTriangleMeshElementDesc m_RBTriangleMeshDesc;\n        private MyRBVoxelElementDesc m_RBVoxelElementDesc;\n        private MySensorDesc m_SensorDesc;\n\n        private MyObjectsPool<MySensor> m_SensorsPool;\n        private MyObjectsPool<MySphereSensorElement> m_SphereSensorElementPool;\n\n        private MyObjectsPool<MyRigidBody> m_RigidsPool;\n        private MyObjectsPool<MyRBSphereElement> m_RBSphereElementPool;\n        private MyObjectsPool<MyRBBoxElement> m_RBBoxElementPool;\n        private MyObjectsPool<MyRBCapsuleElement> m_RBCapsuleElementPool;\n        private MyObjectsPool<MyRBTriangleMeshElement> m_RBTriangleMeshElementPool;\n        private MyObjectsPool<MyRBVoxelElement> m_RBVoxelElementPool;\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Physics/Core/MySimulationHandler.cs",
    "content": "﻿#region Using Statements\n\nusing System.Collections.Generic;\nusing MinerWarsMath;\n\n#endregion\n\nnamespace MinerWars.AppCode.Physics\n{\n    //////////////////////////////////////////////////////////////////////////\n    /// <summary>\n    /// Simulation handlers can be registered in order to receive simulation notfications\n    /// </summary>\n    abstract class MyPhysSimulationHandler\n    {\n        public virtual void BeforeSimulation(float timeStep) { }\n        public virtual void AfterSimulation(float timeStep) { }\n    }\n\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Physics/Core/Prunning/MyDynamicAABBTree.cs",
    "content": "﻿#region Using Statements\n\nusing System;\nusing System.Collections.Generic;\nusing MinerWarsMath;\nusing SysUtils.Utils;\nusing MinerWars.AppCode.Game.Utils;\nusing System.Diagnostics;\nusing KeenSoftwareHouse.Library.Parallelization.Threading;\nusing MinerWars.AppCode.Game.Managers;\n\n#endregion\n\nnamespace MinerWars.AppCode.Physics\n{\n    ////////////////////////////////////////////////////////////////////////\n    /// <summary>\n    /// Dynamic aabb tree implementation as a prunning structure\n    /// </summary>\n    class MyDynamicAABBTree \n    {\n        /// A dynamic BoundingBox tree broad-phase, inspired by Nathanael Presson's btDbvt.\n        //public delegate float RayCastCallbackInternal(ref MyRayCastInput input, int userData);\n\n        /// <summary>\n        /// A node in the dynamic tree. The client does not interact with this directly.\n        /// </summary>\n        class DynamicTreeNode\n        {\n            /// This is the fattened BoundingBox.\n            internal BoundingBox Aabb;\n\n            internal int Child1;\n            internal int Child2;\n\n            // leaf\t= \t0,\t \tfree \tnode \t= \t-1\n            internal int Height;\n\n\n            internal int ParentOrNext;\n            internal object UserData;\n            internal uint UserFlag;\n\n            internal bool IsLeaf()\n            {\n                return Child1 == MyDynamicAABBTree.NullNode;\n            }\n        }\n\n        /// <summary>\n        /// A dynamic tree arranges data in a binary tree to accelerate\n        /// queries such as volume queries and ray casts. Leafs are proxies\n        /// with an BoundingBox. In the tree we expand the proxy BoundingBox by Settings.b2_fatAABBFactor\n        /// so that the proxy BoundingBox is bigger than the client object. This allows the client\n        /// object to move by small amounts without triggering a tree update.\n        /// Nodes are pooled and relocatable, so we use node indices rather than pointers.\n        /// </summary>\n        public const int NullNode = -1;\n        private int _freeList;\n        private int _insertionCount;\n        private int _nodeCapacity;\n        private int _nodeCount;\n        private DynamicTreeNode[] _nodes;\n\n        private Dictionary<int, DynamicTreeNode> _leafElementCache;\n\n        /// This is used incrementally traverse the tree for re-balancing.\n        private int _path;\n\n        private int _root;\n\n        [ThreadStatic]\n        private static Stack<int> m_queryStack;\n        static List<Stack<int>> m_StackCacheCollection = new List<Stack<int>>();\n\n        Stack<int> CurrentThreadStack\n        {\n            get\n            {\n                if (m_queryStack == null)\n                {\n                    // 32 is good enough, 2^32 is enought\n                    m_queryStack = new Stack<int>(32);\n                    lock (m_StackCacheCollection)\n                    {\n                        m_StackCacheCollection.Add(m_queryStack);\n                    }\n                }\n                return m_queryStack;\n            }\n        }\n\n        private Vector3 m_extension;\n\n        //private ReaderWriterLock m_rwLock = new ReaderWriterLock();\n        private FastResourceLock m_rwLock = new FastResourceLock();\n\n        /// constructing the tree initializes the node pool.\n        public MyDynamicAABBTree(Vector3 extension)\n        {\n            _nodeCapacity = 256;\n\n            m_extension = extension;\n\n            _nodes = new DynamicTreeNode[_nodeCapacity];\n            _leafElementCache = new Dictionary<int, DynamicTreeNode>(_nodeCapacity / 4);\n\n            for (int i = 0; i < _nodeCapacity; ++i)\n            {\n                _nodes[i] = new DynamicTreeNode();\n            }\n\n            // Initialize stack for current thread\n            var myStack = CurrentThreadStack;\n\n            ResetNodes();\n        }\n\n        private Stack<int> GetStack()\n        {\n            Stack<int> retVal = CurrentThreadStack;\n            retVal.Clear();\n\n            return retVal;\n        }\n\n        private void PushStack(Stack<int> stack)\n        {\n            // Nothing to do\n        }\n\n        /// <summary>\n        /// Create a proxy. Provide a tight fitting BoundingBox and a userData pointer.\n        /// </summary>\n        /// <param name=\"aabb\">The aabb.</param>\n        /// <param name=\"userData\">The user data.</param>\n        /// <returns></returns>\n        public int AddProxy(ref BoundingBox aabb, object userData, uint userFlags, bool rebalance = true)\n        {\n            MyPerformanceCounter.PerCameraDraw.StartTimer(\"DAABB\");\n            MyPerformanceCounter.PerCameraDraw.Increment(\"DAABB Add\");\n\n            using (m_rwLock.AcquireExclusiveUsing())\n            {\n                int proxyId = AllocateNode();\n\n                // Fatten the aabb.\n                _nodes[proxyId].Aabb = aabb;\n                _nodes[proxyId].Aabb.Min -= m_extension;\n                _nodes[proxyId].Aabb.Max += m_extension;\n                _nodes[proxyId].UserData = userData;\n                _nodes[proxyId].UserFlag = userFlags;\n                _nodes[proxyId].Height = 0;\n\n                _leafElementCache[proxyId] = _nodes[proxyId];\n\n                InsertLeaf(proxyId, rebalance);\n\n                MyPerformanceCounter.PerCameraDraw.StopTimer(\"DAABB\");\n\n                return proxyId;\n            }\n        }\n\n        /// <summary>\n        /// Destroy a proxy. This asserts if the id is invalid.\n        /// </summary>\n        /// <param name=\"proxyId\">The proxy id.</param>\n        public void RemoveProxy(int proxyId)\n        {\n            MyPerformanceCounter.PerCameraDraw.StartTimer(\"DAABB\");\n            MyPerformanceCounter.PerCameraDraw.Increment(\"DAABB Remove\");\n\n            using (m_rwLock.AcquireExclusiveUsing())\n            {\n                MyCommonDebugUtils.AssertDebug(0 <= proxyId && proxyId < _nodeCapacity);\n                MyCommonDebugUtils.AssertDebug(_nodes[proxyId].IsLeaf());\n\n                _leafElementCache.Remove(proxyId);\n\n                RemoveLeaf(proxyId);\n                FreeNode(proxyId);\n            }\n\n            MyPerformanceCounter.PerCameraDraw.StopTimer(\"DAABB\");\n        }\n\n        /// <summary>\n        /// Move a proxy with a swepted BoundingBox. If the proxy has moved outside of its fattened BoundingBox,\n        /// then the proxy is removed from the tree and re-inserted. Otherwise\n        /// the function returns immediately.\n        /// </summary>\n        /// <param name=\"proxyId\">The proxy id.</param>\n        /// <param name=\"aabb\">The aabb.</param>\n        /// <param name=\"displacement\">The displacement.</param>\n        /// <returns>true if the proxy was re-inserted.</returns>\n        public bool MoveProxy(int proxyId, ref BoundingBox aabb, Vector3 displacement)\n        {\n            MyPerformanceCounter.PerCameraDraw.StartTimer(\"DAABB Move\");\n            MyPerformanceCounter.PerCameraDraw.Increment(\"DAABB Move\");\n\n            using (m_rwLock.AcquireExclusiveUsing())\n            {\n                MyCommonDebugUtils.AssertDebug(0 <= proxyId && proxyId < _nodeCapacity);\n                MyCommonDebugUtils.AssertDebug(_nodes[proxyId].IsLeaf());\n\n                ContainmentType contType = _nodes[proxyId].Aabb.Contains(aabb);\n                if (contType == ContainmentType.Contains)\n                {\n                    MyPerformanceCounter.PerCameraDraw.StopTimer(\"DAABB Move\");\n                    return false;\n                }\n\n                RemoveLeaf(proxyId);\n\n                // Extend BoundingBox.\n                BoundingBox b = aabb;\n\n                Vector3 r = m_extension;\n                b.Min -= r;\n                b.Max += r;\n\n                // Predict BoundingBox displacement.\n                Vector3 d = MyPhysicsConfig.AabbMultiplier * displacement;\n\n                if (d.X < 0.0f)\n                {\n                    b.Min.X += d.X;\n                }\n                else\n                {\n                    b.Max.X += d.X;\n                }\n\n                if (d.Y < 0.0f)\n                {\n                    b.Min.Y += d.Y;\n                }\n                else\n                {\n                    b.Max.Y += d.Y;\n                }\n\n                if (d.Z < 0.0f)\n                {\n                    b.Min.Z += d.Z;\n                }\n                else\n                {\n                    b.Max.Z += d.Z;\n                }\n\n                _nodes[proxyId].Aabb = b;\n\n                InsertLeaf(proxyId, true);\n            }\n            MyPerformanceCounter.PerCameraDraw.StopTimer(\"DAABB Move\");\n            return true;\n        }\n\n\n        /// <summary>\n        /// Get proxy user data.\n        /// </summary>\n        /// <param name=\"proxyId\">The proxy id.</param>\n        /// <returns>the proxy user data or 0 if the id is invalid.</returns>\n        T GetUserData<T>(int proxyId)\n        {\n            MyCommonDebugUtils.AssertDebug(0 <= proxyId && proxyId < _nodeCapacity);\n            return (T)_nodes[proxyId].UserData;\n        }\n\n        /// <summary>\n        /// Get proxy user data.\n        /// </summary>\n        /// <param name=\"proxyId\">The proxy id.</param>\n        /// <returns>the proxy user data or 0 if the id is invalid.</returns>\n        uint GetUserFlag(int proxyId)\n        {\n            MyCommonDebugUtils.AssertDebug(0 <= proxyId && proxyId < _nodeCapacity);\n            return _nodes[proxyId].UserFlag;\n        }\n\n        /// <summary>\n        /// Get the fat BoundingBox for a proxy.\n        /// </summary>\n        /// <param name=\"proxyId\">The proxy id.</param>\n        /// <param name=\"fatAABB\">The fat BoundingBox.</param>\n        public void GetFatAABB(int proxyId, out BoundingBox fatAABB)\n        {\n            MyPerformanceCounter.PerCameraDraw.StartTimer(\"DAABB\");\n            using (m_rwLock.AcquireSharedUsing())\n            {\n                MyCommonDebugUtils.AssertDebug(0 <= proxyId && proxyId < _nodeCapacity);\n                fatAABB = _nodes[proxyId].Aabb;\n            }\n            MyPerformanceCounter.PerCameraDraw.StopTimer(\"DAABB\");\n        }\n\n        /// Query an BoundingBox for overlapping proxies. The callback class\n        /// is called for each proxy that overlaps the supplied BoundingBox.\n        public void Query(Func<int, bool> callback, ref BoundingBox aabb)\n        {\n            MyPerformanceCounter.PerCameraDraw.StartTimer(\"DAABB\");\n            MyPerformanceCounter.PerCameraDraw.Increment(\"DAABB Queries AABB cb\");\n\n            using (m_rwLock.AcquireSharedUsing())\n            {\n                Stack<int> stack = new Stack<int>(256);\n                stack.Push(_root);\n\n                while (stack.Count > 0)\n                {\n                    int nodeId = stack.Pop();\n                    if (nodeId == NullNode)\n                    {\n                        continue;\n                    }\n\n                    DynamicTreeNode node = _nodes[nodeId];\n\n                    if (node.Aabb.Intersects(aabb))\n                    {\n                        if (node.IsLeaf())\n                        {\n                            bool proceed = callback(nodeId);\n                            if (!proceed)\n                            {\n                                MyPerformanceCounter.PerCameraDraw.StopTimer(\"DAABB\");\n                                return;\n                            }\n                        }\n                        else\n                        {\n                            stack.Push(node.Child1);\n                            stack.Push(node.Child2);\n                        }\n                    }\n                }\n            }\n            MyPerformanceCounter.PerCameraDraw.StopTimer(\"DAABB\");\n        }\n\n\n\n        public int CountLeaves(int nodeId)\n        {\n            MyPerformanceCounter.PerCameraDraw.StartTimer(\"DAABB\");\n            using (m_rwLock.AcquireSharedUsing())\n            {\n                if (nodeId == NullNode)\n                {\n                    MyPerformanceCounter.PerCameraDraw.StopTimer(\"DAABB\");\n                    return 0;\n                }\n\n                MyCommonDebugUtils.AssertDebug(0 <= nodeId && nodeId < _nodeCapacity);\n                DynamicTreeNode node = _nodes[nodeId];\n\n                if (node.IsLeaf())\n                {\n                    MyCommonDebugUtils.AssertDebug(node.Height == 1);\n                    return 1;\n                }\n\n                int count1 = CountLeaves(node.Child1);\n                int count2 = CountLeaves(node.Child2);\n                int count = count1 + count2;\n                MyCommonDebugUtils.AssertDebug(count == node.Height);\n                MyPerformanceCounter.PerCameraDraw.StopTimer(\"DAABB\");\n                return count;\n            }\n        }\n\n        private int AllocateNode()\n        {\n            // Expand the node pool as needed.\n            if (_freeList == NullNode)\n            {\n                MyCommonDebugUtils.AssertDebug(_nodeCount == _nodeCapacity);\n\n                // The free list is empty. Rebuild a bigger pool.\n                DynamicTreeNode[] oldNodes = _nodes;\n                _nodeCapacity *= 2;\n                _nodes = new DynamicTreeNode[_nodeCapacity];\n                Array.Copy(oldNodes, _nodes, _nodeCount);\n\n                // Build a linked list for the free list. The parent\n                // pointer becomes the \"next\" pointer.\n                for (int i = _nodeCount; i < _nodeCapacity - 1; ++i)\n                {\n                    _nodes[i] = new DynamicTreeNode();\n                    _nodes[i].ParentOrNext = i + 1;\n                    _nodes[i].Height = 1;\n                }\n                _nodes[_nodeCapacity - 1] = new DynamicTreeNode();\n                _nodes[_nodeCapacity - 1].ParentOrNext = NullNode;\n                _nodes[_nodeCapacity - 1].Height = 1;\n                _freeList = _nodeCount;\n            }\n\n            // Peel a node off the free list.\n            int nodeId = _freeList;\n            _freeList = _nodes[nodeId].ParentOrNext;\n            _nodes[nodeId].ParentOrNext = NullNode;\n            _nodes[nodeId].Child1 = NullNode;\n            _nodes[nodeId].Child2 = NullNode;\n            _nodes[nodeId].Height = 0;\n            _nodes[nodeId].UserData = null;\n            ++_nodeCount;\n            return nodeId;\n        }\n\n        private void FreeNode(int nodeId)\n        {\n            MyCommonDebugUtils.AssertDebug(0 <= nodeId && nodeId < _nodeCapacity);\n            MyCommonDebugUtils.AssertDebug(0 < _nodeCount);\n            _nodes[nodeId].ParentOrNext = _freeList;\n            _nodes[nodeId].Height = -1;\n            _nodes[nodeId].UserData = null;\n            _freeList = nodeId;\n            --_nodeCount;\n        }\n\n        private void InsertLeaf(int leaf, bool rebalance)\n        {\n            ++_insertionCount;\n\n            if (_root == NullNode)\n            {\n                _root = leaf;\n                _nodes[_root].ParentOrNext = NullNode;\n                return;\n            }\n\n            // Find the best sibling for this node\n            BoundingBox leafAABB = _nodes[leaf].Aabb;\n            //Vector3 leafCenter = leafAABB.Min + (leafAABB.Max - leafAABB.Min) * 0.5f;\n            int index = _root;\n            while (_nodes[index].IsLeaf() == false)\n            {\n                int child1 = _nodes[index].Child1;\n                int child2 = _nodes[index].Child2;\n\n                if (rebalance)\n                {\n                    float area = _nodes[index].Aabb.Perimeter();\n\n                    // Combined area\n                    BoundingBox combinedAABB = BoundingBox.CreateMerged(_nodes[index].Aabb, leafAABB);\n                    float combinedArea = combinedAABB.Perimeter();\n\n                    //Cost of creating a new parent for this node and the new leaf\n                    float cost = 2.0f * combinedArea;\n\n\n\n                    //Minimum cost of pushing the leaf further down the tree\n                    float inheritanceCost = 2.0f * (combinedArea - area);\n                    //Cost of descending into child1\n                    float cost1;\n                    if (_nodes[child1].IsLeaf())\n                    {\n                        BoundingBox aabb;\n                        BoundingBox.CreateMerged(ref leafAABB, ref _nodes[child1].Aabb, out aabb);\n\n                        cost1 = aabb.Perimeter() + inheritanceCost;\n                    }\n                    else\n                    {\n                        BoundingBox aabb;\n                        BoundingBox.CreateMerged(ref leafAABB, ref _nodes[child1].Aabb, out aabb);\n                        float oldArea = _nodes[child1].Aabb.Perimeter();\n                        float newArea = aabb.Perimeter();\n                        cost1 = (newArea - oldArea) + inheritanceCost;\n                    }\n\n                    //Cost of descending into child2\n                    float cost2;\n                    if (_nodes[child2].IsLeaf())\n                    {\n                        BoundingBox aabb;\n                        BoundingBox.CreateMerged(ref leafAABB, ref _nodes[child2].Aabb, out aabb);\n                        cost2 = aabb.Perimeter() + inheritanceCost;\n                    }\n                    else\n                    {\n                        BoundingBox aabb;\n                        BoundingBox.CreateMerged(ref leafAABB, ref _nodes[child2].Aabb, out aabb);\n                        float oldArea = _nodes[child2].Aabb.Perimeter();\n                        float newArea = aabb.Perimeter();\n                        cost2 = newArea - oldArea + inheritanceCost;\n                    }\n\n                    //Descend according to the minimum cost.\n                    if (cost < cost1 && cost1 < cost2)\n                    {\n                        break;\n                    }\n\n                    //Descend\n                    if (cost1 < cost2)\n                    {\n                        index = child1;\n                    }\n                    else\n                    {\n                        index = child2;\n                    }\n                }\n                else\n                {\n                    // Surface area heuristic\n                    BoundingBox aabb1;\n                    BoundingBox aabb2;\n                    BoundingBox.CreateMerged(ref leafAABB, ref _nodes[child1].Aabb, out aabb1);\n                    BoundingBox.CreateMerged(ref leafAABB, ref _nodes[child2].Aabb, out aabb2);\n                    float norm1 = (_nodes[child1].Height + 1) * aabb1.Perimeter();\n                    float norm2 = (_nodes[child2].Height + 1) * aabb2.Perimeter();\n\n                    if (norm1 < norm2)\n                    {\n                        index = child1;\n                    }\n                    else\n                    {\n                        index = child2;\n                    }\n                }\n            }\n\n            int sibling = index;\n\n            // Create a new parent for the siblings.\n            int oldParent = _nodes[index].ParentOrNext;\n            int newParent = AllocateNode();\n            _nodes[newParent].ParentOrNext = oldParent;\n            _nodes[newParent].UserData = null;\n            _nodes[newParent].Aabb = BoundingBox.CreateMerged(leafAABB, _nodes[sibling].Aabb);\n            _nodes[newParent].Height = _nodes[sibling].Height + 1;\n\n            if (oldParent != NullNode)\n            {\n                // The sibling was not the root.\n                if (_nodes[oldParent].Child1 == sibling)\n                {\n                    _nodes[oldParent].Child1 = newParent;\n                }\n                else\n                {\n                    _nodes[oldParent].Child2 = newParent;\n                }\n\n                _nodes[newParent].Child1 = sibling;\n                _nodes[newParent].Child2 = leaf;\n                _nodes[index].ParentOrNext = newParent;\n                _nodes[leaf].ParentOrNext = newParent;\n            }\n            else\n            {\n                // The sibling was the root.\n                _nodes[newParent].Child1 = sibling;\n                _nodes[newParent].Child2 = leaf;\n                _nodes[index].ParentOrNext = newParent;\n                _nodes[leaf].ParentOrNext = newParent;\n                _root = newParent;\n            }\n\n\n            // Walk back up the tree fixing heights and AABBs            \n            index = _nodes[leaf].ParentOrNext;\n            while (index != NullNode)\n            {\n                if (rebalance)\n                {\n                    index = Balance(index);\n                }\n\n                int child1 = _nodes[index].Child1;\n                int child2 = _nodes[index].Child2;\n\n                Debug.Assert(child1 != NullNode);\n                Debug.Assert(child2 != NullNode);\n\n                _nodes[index].Height = 1 + Math.Max(_nodes[child1].Height, _nodes[child2].Height);\n                BoundingBox.CreateMerged(ref _nodes[child1].Aabb, ref _nodes[child2].Aabb, out _nodes[index].Aabb);\n                index = _nodes[index].ParentOrNext;\n            }\n        }\n\n        private void RemoveLeaf(int leaf)\n        {\n            if (_root == NullNode)\n                return;\n\n            if (leaf == _root)\n            {\n                _root = NullNode;\n                return;\n            }\n\n            int parent = _nodes[leaf].ParentOrNext;\n            int grandParent = _nodes[parent].ParentOrNext;\n            int sibling;\n            if (_nodes[parent].Child1 == leaf)\n            {\n                sibling = _nodes[parent].Child2;\n            }\n            else\n            {\n                sibling = _nodes[parent].Child1;\n            }\n\n            if (grandParent != NullNode)\n            {\n                // Destroy node2 and connect node1 to sibling.\n                if (_nodes[grandParent].Child1 == parent)\n                {\n                    _nodes[grandParent].Child1 = sibling;\n                }\n                else\n                {\n                    _nodes[grandParent].Child2 = sibling;\n                }\n                _nodes[sibling].ParentOrNext = grandParent;\n                FreeNode(parent);\n\n\n                // Adjust ancestor bounds.\n                int index = grandParent;\n                while (index != NullNode)\n                {\n                    index = Balance(index);\n\n                    int child1 = _nodes[index].Child1;\n                    int child2 = _nodes[index].Child2;\n\n                    _nodes[index].Aabb = BoundingBox.CreateMerged(_nodes[child1].Aabb, _nodes[child2].Aabb);\n                    _nodes[index].Height = 1 + Math.Max(_nodes[child1].Height, _nodes[child2].Height);\n\n                    index = _nodes[index].ParentOrNext;\n                }\n            }\n            else\n            {\n                _root = sibling;\n                _nodes[sibling].ParentOrNext = NullNode;\n                FreeNode(parent);\n            }\n        }\n\n        /// Compute the height of the binary tree in O(N) time. Should not be\n        /// called often.\n        public int GetHeight()\n        {\n            MyPerformanceCounter.PerCameraDraw.StartTimer(\"DAABB\");\n            using (m_rwLock.AcquireSharedUsing())\n            {\n\n                if (_root == NullNode)\n                {\n                    MyPerformanceCounter.PerCameraDraw.StopTimer(\"DAABB\");\n                    return 0;\n                }\n\n                MyPerformanceCounter.PerCameraDraw.StopTimer(\"DAABB\");\n                return _nodes[_root].Height;\n            }\n        }\n\n\n        // Perform a left or right rotation if node A is imbalanced.\n        // Returns the new root index.\n        private int Balance(int iA)\n        {\n            Debug.Assert(iA != NullNode);\n            DynamicTreeNode A = _nodes[iA];\n\n            if (A.IsLeaf() || A.Height < 2)\n            {\n                return iA;\n            }\n\n            int iB = A.Child1;\n            int iC = A.Child2;\n            Debug.Assert(0 <= iB && iB < _nodeCapacity);\n            Debug.Assert(0 <= iC && iC < _nodeCapacity);\n\n            DynamicTreeNode B = _nodes[iB];\n            DynamicTreeNode C = _nodes[iC];\n\n            int balance = C.Height - B.Height;\n\n            //Rotate C up\n            if (balance > 1)\n            {\n                int iF = C.Child1;\n                int iG = C.Child2;\n                DynamicTreeNode F = _nodes[iF];\n                DynamicTreeNode G = _nodes[iG];\n                Debug.Assert(0 <= iF && iF < _nodeCapacity);\n                Debug.Assert(0 <= iG && iG < _nodeCapacity);\n\n                // Swap A and C\n                C.Child1 = iA;\n                C.ParentOrNext = A.ParentOrNext;\n                A.ParentOrNext = iC;\n\n                // A's old parent should point to C\n\n                if (C.ParentOrNext != NullNode)\n                {\n                    if (_nodes[C.ParentOrNext].Child1 == iA)\n                    {\n                        _nodes[C.ParentOrNext].Child1 = iC;\n                    }\n                    else\n                    {\n                        Debug.Assert(_nodes[C.ParentOrNext].Child2 == iA);\n                        _nodes[C.ParentOrNext].Child2 = iC;\n                    }\n                }\n                else\n                {\n                    _root = iC;\n                }\n\n                // Rotate\n                if (F.Height > G.Height)\n                {\n                    C.Child2 = iF;\n                    A.Child2 = iG;\n                    G.ParentOrNext = iA;\n\n                    BoundingBox.CreateMerged(ref B.Aabb, ref G.Aabb, out A.Aabb);\n                    BoundingBox.CreateMerged(ref A.Aabb, ref F.Aabb, out C.Aabb);\n\n                    A.Height = 1 + Math.Max(B.Height, G.Height);\n                    C.Height = 1 + Math.Max(A.Height, F.Height);\n                }\n                else\n                {\n                    C.Child2 = iG;\n                    A.Child2 = iF;\n                    F.ParentOrNext = iA;\n\n                    BoundingBox.CreateMerged(ref B.Aabb, ref F.Aabb, out A.Aabb);\n                    BoundingBox.CreateMerged(ref A.Aabb, ref G.Aabb, out C.Aabb);\n\n                    A.Height = 1 + Math.Max(B.Height, F.Height);\n                    C.Height = 1 + Math.Max(A.Height, G.Height);\n                }\n                return iC;\n            }\n\n            // Rotate B up\n            if (balance < -1)\n            {\n                int iD = B.Child1;\n                int iE = B.Child2;\n                DynamicTreeNode D = _nodes[iD];\n                DynamicTreeNode E = _nodes[iE];\n                Debug.Assert(0 <= iD && iD < _nodeCapacity);\n                Debug.Assert(0 <= iE && iE < _nodeCapacity);\n\n                // Swap A and B\n                B.Child1 = iA;\n                B.ParentOrNext = A.ParentOrNext;\n                A.ParentOrNext = iB;\n\n                // A's old parent should point to B\n                if (B.ParentOrNext != NullNode)\n                {\n                    if (_nodes[B.ParentOrNext].Child1 == iA)\n                    {\n                        _nodes[B.ParentOrNext].Child1 = iB;\n                    }\n                    else\n                    {\n                        Debug.Assert(_nodes[B.ParentOrNext].Child2 == iA);\n                        _nodes[B.ParentOrNext].Child2 = iB;\n                    }\n                }\n                else\n                {\n                    _root = iB;\n                }\n\n                // Rotate\n                if (D.Height > E.Height)\n                {\n                    B.Child2 = iD;\n                    A.Child1 = iE;\n                    E.ParentOrNext = iA;\n                    BoundingBox.CreateMerged(ref C.Aabb, ref E.Aabb, out A.Aabb);\n                    BoundingBox.CreateMerged(ref A.Aabb, ref D.Aabb, out B.Aabb);\n\n                    A.Height = 1 + Math.Max(C.Height, E.Height);\n                    B.Height = 1 + Math.Max(A.Height, D.Height);\n                }\n                else\n                {\n                    B.Child2 = iE;\n                    A.Child1 = iD;\n                    D.ParentOrNext = iA;\n\n                    BoundingBox.CreateMerged(ref C.Aabb, ref D.Aabb, out A.Aabb);\n                    BoundingBox.CreateMerged(ref A.Aabb, ref E.Aabb, out B.Aabb);\n\n                    A.Height = 1 + Math.Max(C.Height, D.Height);\n                    B.Height = 1 + Math.Max(A.Height, E.Height);\n                }\n                return iB;\n            }\n            return iA;\n        }\n\n        public void OverlapAllFrustum<T>(ref BoundingFrustum frustum, List<T> elementsList, bool clear = true)\n        {\n            OverlapAllFrustum<T>(ref frustum, elementsList, 0, clear);\n        }\n\n        public void OverlapAllFrustum<T>(ref BoundingFrustum frustum, List<T> elementsList, uint requiredFlags, bool clear = true)\n        {\n            MyPerformanceCounter.PerCameraDraw.StartTimer(\"DAABB\");\n            MyPerformanceCounter.PerCameraDraw.Increment(\"DAABB Queries frustum\");\n\n            if (clear)\n                elementsList.Clear();\n\n            if (_root == NullNode)\n            {\n                MyPerformanceCounter.PerCameraDraw.StopTimer(\"DAABB\");\n                return;\n            }\n\n            using (m_rwLock.AcquireSharedUsing())\n            {\n                Stack<int> stack = GetStack();\n                stack.Push(_root);\n\n                //BoundingBox bbox = BoundingBoxHelper.InitialBox;\n                //BoundingBoxHelper.AddFrustum(ref frustum, ref bbox);\n\n                while (stack.Count > 0)\n                {\n                    int nodeId = stack.Pop();\n                    if (nodeId == NullNode)\n                    {\n                        continue;\n                    }\n\n                    DynamicTreeNode node = _nodes[nodeId];\n\n                    //if (node.Aabb.Intersects(bbox))\n                    {\n                        ContainmentType result;\n                        frustum.Contains(ref node.Aabb, out result);\n                        if (result == ContainmentType.Contains)\n                        {\n                            int baseCount = stack.Count;\n                            stack.Push(nodeId);\n\n                            while (stack.Count > baseCount)\n                            {\n                                int nodeIdToAdd = stack.Pop();\n\n                                DynamicTreeNode nodeToAdd = _nodes[nodeIdToAdd];\n\n                                if (nodeToAdd.IsLeaf())\n                                {\n                                    uint flags = GetUserFlag(nodeIdToAdd);\n                                    if ((flags & requiredFlags) == requiredFlags)\n                                    {\n                                        elementsList.Add(GetUserData<T>(nodeIdToAdd));\n                                    }\n                                }\n                                else\n                                {\n                                    if (nodeToAdd.Child1 != NullNode)\n                                        stack.Push(nodeToAdd.Child1);\n                                    if (nodeToAdd.Child2 != NullNode)\n                                        stack.Push(nodeToAdd.Child2);\n                                }\n                            }\n                        }\n                        else\n                            if (result == ContainmentType.Intersects)\n                            {\n                                if (node.IsLeaf())\n                                {\n                                    uint flags = GetUserFlag(nodeId);\n                                    if ((flags & requiredFlags) == requiredFlags)\n                                    {\n                                        elementsList.Add(GetUserData<T>(nodeId));\n                                    }\n                                }\n                                else\n                                {\n                                    stack.Push(node.Child1);\n                                    stack.Push(node.Child2);\n                                }\n                            }\n                    }\n                }\n\n                PushStack(stack);\n            }\n            MyPerformanceCounter.PerCameraDraw.StopTimer(\"DAABB\");\n        }\n\n        public void OverlapAllFrustumAny<T>(ref BoundingFrustum frustum, List<T> elementsList, bool clear = true)\n        {\n            MyPerformanceCounter.PerCameraDraw.StartTimer(\"DAABB\");\n            MyPerformanceCounter.PerCameraDraw.Increment(\"DAABB Queries frustum any\");\n\n            if (clear)\n                elementsList.Clear();\n\n            if (_root == NullNode)\n            {\n                MyPerformanceCounter.PerCameraDraw.StopTimer(\"DAABB\");\n                return;\n            }\n\n            using (m_rwLock.AcquireSharedUsing())\n            {\n                Stack<int> stack = GetStack();\n                stack.Push(_root);\n\n                //BoundingBox bbox = BoundingBoxHelper.InitialBox;\n                //BoundingBoxHelper.AddFrustum(ref frustum, ref bbox);\n\n                while (stack.Count > 0)\n                {\n                    int nodeId = stack.Pop();\n                    if (nodeId == NullNode)\n                    {\n                        continue;\n                    }\n\n                    DynamicTreeNode node = _nodes[nodeId];\n\n                    //if (node.Aabb.Intersects(bbox))\n                    {\n                        ContainmentType result;\n                        frustum.Contains(ref node.Aabb, out result);\n                        if (result == ContainmentType.Contains)\n                        {\n                            int baseCount = stack.Count;\n                            stack.Push(nodeId);\n\n                            while (stack.Count > baseCount)\n                            {\n                                int nodeIdToAdd = stack.Pop();\n\n                                DynamicTreeNode nodeToAdd = _nodes[nodeIdToAdd];\n\n                                if (nodeToAdd.IsLeaf())\n                                {\n                                    T el = GetUserData<T>(nodeIdToAdd);\n                                    elementsList.Add((T)el);\n                                }\n                                else\n                                {\n                                    if (nodeToAdd.Child1 != NullNode)\n                                        stack.Push(nodeToAdd.Child1);\n                                    if (nodeToAdd.Child2 != NullNode)\n                                        stack.Push(nodeToAdd.Child2);\n                                }\n                            }\n                        }\n                        else\n                            if (result == ContainmentType.Intersects)\n                            {\n                                if (node.IsLeaf())\n                                {\n                                    T el = GetUserData<T>(nodeId);\n                                    elementsList.Add((T)el);\n                                }\n                                else\n                                {\n                                    stack.Push(node.Child1);\n                                    stack.Push(node.Child2);\n                                }\n                            }\n                    }\n                }\n\n                PushStack(stack);\n            }\n            MyPerformanceCounter.PerCameraDraw.StopTimer(\"DAABB\");\n        }\n\n        public void OverlapAllLineSegment<T>(ref MyLine line, List<MyLineSegmentOverlapResult<T>> elementsList)\n        {\n            OverlapAllLineSegment<T>(ref line, elementsList, 0);\n        }\n\n        public void OverlapAllLineSegment<T>(ref MyLine line, List<MyLineSegmentOverlapResult<T>> elementsList, uint requiredFlags)\n        {\n            MyPerformanceCounter.PerCameraDraw.StartTimer(\"DAABB\");\n            MyPerformanceCounter.PerCameraDraw.Increment(\"DAABB Queries line\");\n\n            elementsList.Clear();\n\n            if (_root == NullNode)\n            {\n                MyPerformanceCounter.PerCameraDraw.StopTimer(\"DAABB\");\n                return;\n            }\n\n            using (m_rwLock.AcquireSharedUsing())\n            {\n                Stack<int> stack = GetStack();\n                stack.Push(_root);\n\n                BoundingBox bbox = BoundingBoxHelper.InitialBox;\n                BoundingBoxHelper.AddLine(ref line, ref bbox);\n\n                var ray = new Ray(line.From, line.Direction);\n\n                while (stack.Count > 0)\n                {\n                    int nodeId = stack.Pop();\n                    if (nodeId == NullNode)\n                    {\n                        continue;\n                    }\n\n                    DynamicTreeNode node = _nodes[nodeId];\n\n                    if (node.Aabb.Intersects(bbox))\n                    {\n                        float? distance = node.Aabb.Intersects(ray);\n                        if (distance.HasValue && distance.Value <= line.Length && distance.Value >= 0)\n                        {\n                            if (node.IsLeaf())\n                            {\n                                uint flags = GetUserFlag(nodeId);\n                                if ((flags & requiredFlags) == requiredFlags)\n                                {\n                                    elementsList.Add(new MyLineSegmentOverlapResult<T> \n                                    { \n                                        Element =GetUserData<T>(nodeId), \n                                        Distance = distance.Value \n                                    });\n                                }\n                            }\n                            else\n                            {\n                                stack.Push(node.Child1);\n                                stack.Push(node.Child2);\n                            }\n                        }\n                    }\n                }\n\n                PushStack(stack);\n            }\n            MyPerformanceCounter.PerCameraDraw.StopTimer(\"DAABB\");\n        }\n\n        public void OverlapAllBoundingBox<T>(ref BoundingBox bbox, List<T> elementsList, uint requiredFlags = 0, bool clear = true)\n        {\n            MyPerformanceCounter.PerCameraDraw.StartTimer(\"DAABB\");\n\n            MyPerformanceCounter.PerCameraDraw.Increment(\"DAABB Queries AABB\");\n\n            if (clear)\n                elementsList.Clear();\n\n            if (_root == NullNode)\n            {\n                MyPerformanceCounter.PerCameraDraw.StopTimer(\"DAABB\");\n                return;\n            }\n\n            using (m_rwLock.AcquireSharedUsing())\n            {\n                Stack<int> stack = GetStack();\n                stack.Push(_root);\n\n\n                //int g = CountLeaves(_root);\n\n                while (stack.Count > 0)\n                {\n                    int nodeId = stack.Pop();\n                    if (nodeId == NullNode)\n                    {\n                        continue;\n                    }\n\n                    DynamicTreeNode node = _nodes[nodeId];\n\n                    if (node.Aabb.Intersects(bbox))\n                    {\n                        if (node.IsLeaf())\n                        {\n                            uint flags = GetUserFlag(nodeId);\n                            if ((flags & requiredFlags) == requiredFlags)\n                            {\n                                elementsList.Add(GetUserData<T>(nodeId));\n                            }\n                        }\n                        else\n                        {\n                            stack.Push(node.Child1);\n                            stack.Push(node.Child2);\n                        }\n                    }\n                }\n\n                PushStack(stack);\n            }\n            MyPerformanceCounter.PerCameraDraw.StopTimer(\"DAABB\");\n        }\n\n        public void OverlapAllBoundingSphere<T>(ref BoundingSphere sphere, List<T> overlapElementsList, bool clear = true)\n        {\n            MyPerformanceCounter.PerCameraDraw.StartTimer(\"DAABB\");\n            MyPerformanceCounter.PerCameraDraw.Increment(\"DAABB Queries sphere\");\n\n            if (clear)\n                overlapElementsList.Clear();\n\n            if (_root == NullNode)\n            {\n                MyPerformanceCounter.PerCameraDraw.StopTimer(\"DAABB\");\n                return;\n            }\n\n            using (m_rwLock.AcquireSharedUsing())\n            {\n                Stack<int> stack = GetStack();\n                stack.Push(_root);\n\n\n                //int g = CountLeaves(_root);\n\n                while (stack.Count > 0)\n                {\n                    int nodeId = stack.Pop();\n                    if (nodeId == NullNode)\n                    {\n                        continue;\n                    }\n\n                    DynamicTreeNode node = _nodes[nodeId];\n\n                    if (node.Aabb.Intersects(sphere))\n                    {\n                        if (node.IsLeaf())\n                        {\n                            overlapElementsList.Add(GetUserData<T>(nodeId));\n                        }\n                        else\n                        {\n                            stack.Push(node.Child1);\n                            stack.Push(node.Child2);\n                        }\n                    }\n                }\n\n                PushStack(stack);\n            }\n            MyPerformanceCounter.PerCameraDraw.StopTimer(\"DAABB\");\n        }\n\n        public void GetAll<T>(List<T> elementsList, bool clear)\n        {\n            MyPerformanceCounter.PerCameraDraw.StartTimer(\"DAABB\");\n            MyPerformanceCounter.PerCameraDraw.Increment(\"DAABB Queries GetAll\");\n\n            if (clear)\n                elementsList.Clear();\n\n            using (m_rwLock.AcquireSharedUsing())\n            {\n                foreach (var node in _leafElementCache)\n                {\n                    elementsList.Add((T)node.Value.UserData);\n                }\n            }\n            MyPerformanceCounter.PerCameraDraw.StopTimer(\"DAABB\");\n        }\n\n        private void ResetNodes()\n        {\n            _leafElementCache.Clear();\n\n            _root = NullNode;\n\n            _nodeCount = 0;\n            _insertionCount = 0;\n            _path = 0;\n\n            // Build a linked list for the free list.\n            for (int i = 0; i < _nodeCapacity - 1; ++i)\n            {\n                _nodes[i].ParentOrNext = i + 1;\n                _nodes[i].Height = 1;\n                _nodes[i].UserData = null;\n            }\n            _nodes[_nodeCapacity - 1].ParentOrNext = NullNode;\n            _nodes[_nodeCapacity - 1].Height = 1;\n            _freeList = 0;\n        }\n\n        public void Clear()\n        {\n            MyPerformanceCounter.PerCameraDraw.StartTimer(\"DAABB\");\n\n            using (m_rwLock.AcquireExclusiveUsing())\n            {\n                lock (m_StackCacheCollection)\n                {\n                    foreach (var item in m_StackCacheCollection)\n                    {\n                        item.Clear();\n                    }\n\n                    m_StackCacheCollection.Clear();\n                }\n\n                ResetNodes();\n            }\n            MyPerformanceCounter.PerCameraDraw.StopTimer(\"DAABB\");\n        }\n    }\n}\n\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Physics/Dynamics/Base/Constaints/MyRBConstraint.cs",
    "content": "﻿#region Using Statements\n\nusing System;\nusing System.Collections.Generic;\nusing MinerWarsMath;\n\n#endregion\n\nnamespace MinerWars.AppCode.Physics\n{\n    public enum ConstraintFlag\n    {\n        CF_INSERTED = 1 << 0,\n    }\n\n    /// <summary>\n    /// Base constraint for rbelements\n    /// </summary>\n    abstract class MyRBConstraint\n    {\n        public MyRBConstraint()\n        {\n            m_Magnitude = 0.0f;\n            m_Flags = 0;\n        }\n\n        public float m_Magnitude;\n\n        public ConstraintFlag m_Flags;\n\n\t};\n\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Physics/Dynamics/Base/Constaints/MyRBContactConstraint.cs",
    "content": "﻿#region Using Statements\n\nusing System;\nusing System.Collections.Generic;\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Utils;\n#endregion\n\nnamespace MinerWars.AppCode.Physics\n{\n    /// <summary>\n    /// Contact constraint between 2 rbelements\n    /// </summary>\n    class MyRBContactConstraint: MyRBConstraint\n    {\n        public const int MaxCollisionPoints = 10;\n        \n        private bool m_Satisfied;\n\n        private uint m_Guid;\n\n        private MyRBElementInteraction m_Interaction;\n\n        public MyRBElementInteraction GetRBElementInteraction()\n        {\n            return m_Interaction;\n        }\n\n        public MyRBContactConstraint() { }\n\n        #region Properties\n\n        public float Magnitude\n        {\n            get { return m_Magnitude;  }\n            set { m_Magnitude = value; }\n        }\n\n        public bool Satisfied\n        {\n            get { return m_Satisfied; }\n            set { m_Satisfied = value; }\n        }\n\n        public uint GUID\n        {\n            get { return m_Guid; }\n        }\n\n        public MyCollPointInfo[] m_PointInfo = new MyCollPointInfo[MaxCollisionPoints];\n        public int m_NumCollPts = 0;\n\n        #endregion\n\n        /// <summary>\n        /// Initializes the constraint and creates the guid for contact reporting\n        /// </summary>\n        public void Init(MyRBElementInteraction interaction, MySmallCollPointInfo[] pointInfos, int numPointInfos)\n        {\n            this.m_Interaction = interaction;\n\n            m_Magnitude = 0.0f;\n\n            numPointInfos = (numPointInfos > MaxCollisionPoints) ? MaxCollisionPoints : numPointInfos;\n\n            m_NumCollPts = 0;\n            MyContactConstraintModule mod = MyPhysics.physicsSystem.GetContactConstraintModule();\n            for (int i = 0; i < numPointInfos; ++i)\n            {\n                this.m_PointInfo[m_NumCollPts] = mod.PopCollPointInfo();\n                this.m_PointInfo[m_NumCollPts++].Init(ref pointInfos[i]);\n            }\n\n            uint guid1 = (uint) interaction.RBElement1.GUID;\n            uint guid2 = (uint) interaction.RBElement2.GUID;\n\n            if (guid1 > guid2)\n            {\n                uint tm = guid2;\n                guid2 = guid1;\n                guid1 = tm;\n            }\n\n            m_Guid = guid1 + (guid2 << 16);\n        }\n\n        // public List<CollPointInfo>\n\n        public void Destroy()\n        {\n            MyContactConstraintModule mod = MyPhysics.physicsSystem.GetContactConstraintModule();\n            for (int i = 0; i < m_NumCollPts; ++i)\n            {\n                mod.PushCollPointInfo(this.m_PointInfo[i]);                \n            }\n        }\n\n    }\n\n\n\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Physics/Dynamics/Base/Constaints/MyRBSolverConstraint.cs",
    "content": "﻿#region Using Statements\n\nusing System;\nusing System.Collections.Generic;\nusing MinerWarsMath;\n\n#endregion\n\nnamespace MinerWars.AppCode.Physics\n{\n    /// <summary>\n    /// Internal solver constraint data\n    /// </summary>\n    class MyRBSolverConstraint\n    {\n        public MyRBSolverConstraint()\n        {\n        }\n\n        public void Clear()\n        {\n            m_SolverBody1 = null;\n            m_SolverBody2 = null;\n\n            m_RBConstraint = null;\n\n            m_Magnitude = 0.0f;\n            m_MinMagnitude = 0;\n            m_MaxMagnitude = MyPhysicsUtils.FLT_MAX;\n\n            m_Target = 0.0f;\n\n            m_Normal = Vector3.Zero;\n            m_ContactPoint = Vector3.Zero;\n\n            m_Body1LocalPoint = Vector3.Zero;\n            m_Body2LocalPoint = Vector3.Zero;\n\n            m_Body1LocalPointCrossedNormal = Vector3.Zero;\n            m_Body2LocalPointCrossedNormal = Vector3.Zero;\n\n            m_StaticFriction = 0.0f;\n            m_DynamicFriction = 0.0f;\n\n            m_Affection = 0.0f;\n        }\n\n        public MyRBSolverBody m_SolverBody1;\n        public MyRBSolverBody m_SolverBody2;\n\n        public MyRBConstraint m_RBConstraint;\n\n        public float m_Magnitude;\n        public float m_MinMagnitude;\n        public float m_MaxMagnitude;\n\n        public float m_Target;\n\n        public Vector3 m_Normal;        \n        public Vector3 m_ContactPoint;\n\n        public Vector3 m_Body1LocalPoint;\n        public Vector3 m_Body2LocalPoint;\n\n        public Vector3 m_Body1LocalPointCrossedNormal;\n        public Vector3 m_Body2LocalPointCrossedNormal;\n\n        public float m_StaticFriction;\n        public float m_DynamicFriction;\n        public float m_Restitution;\n\n        public float m_Affection;\n\n    };\n\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Physics/Dynamics/Base/MyRBIslandGeneration.cs",
    "content": "﻿#region Using Statements\nusing System.Collections.Generic;\nusing MinerWars.CommonLIB.AppCode.Generics;\nusing SysUtils.Utils;\n\n#endregion\n\nnamespace MinerWars.AppCode.Physics\n{\n    //////////////////////////////////////////////////////////////////////////\n    /// <summary>\n    /// Generates islands from active rigids and constraits list. This island is solved on its own solver later. \n    /// </summary>\n    class MyRigidBodyIslandGeneration: ParallelTasks.IWork\n    {\n        public MyRigidBodyIslandGeneration()\n        {\n            m_islands = new List<MyRigidBodyIsland>(128);\n            m_islandsPool = new MyObjectsPool<MyRigidBodyIsland>(256);\n            m_proccesedList = new HashSet<MyRigidBody>();\n            m_activeRigids = new List<MyRigidBody>(128);\n        }\n\n        public ParallelTasks.WorkOptions Options { get { return new ParallelTasks.WorkOptions() { MaximumThreads = 1 }; } }\n\n        public void DoWork()\n        {\n            GenerateIslands();\n        }\n\n        /// <summary>\n        /// Parsing all rigids\n        /// </summary>\n        private void GenerateIslands()\n        {            \n            m_islands.Clear();         \n            m_islandsPool.DeallocateAll();\n            m_proccesedList.Clear();\n            m_activeRigids.Clear();\n\n            HashSet <MyRigidBody> activeRbos = MyPhysics.physicsSystem.GetRigidBodyModule().GetActiveRigids();\n\n            foreach (MyRigidBody rbo in activeRbos)\n            {\n                m_activeRigids.Add(rbo);\n            }\n\n            foreach (MyRigidBody rbo in m_activeRigids)\n            {\n                AddRigidBody(rbo, null, null);\n            }\n\n            m_activeRigids.Clear();\n        }\n\n        /// <summary>\n        /// Adding rigid body recursively to check for constraint connections and make sure that its only in 1 island\n        /// </summary>\n        private void AddRigidBody(MyRigidBody rbo, MyRigidBody secondRigidBody,MyRigidBodyIsland addIsland)\n        {\n            if(rbo.IsStatic())\n            {\n                rbo.PutToSleep();\n                return;\n            }\n\n            if (!m_proccesedList.Add(rbo))\n                return;\n\n            // add rigid bodies to island recursively\n            int numInteractions = 0;\n\n            for (int j = 0; j < rbo.GetRBElementList().Count; j++)\n            {\n                MyRBElement el = rbo.GetRBElementList()[j];\n                numInteractions += el.GetRBElementInteractions().Count;\n                \n                for (int k = 0; k < el.GetRBElementInteractions().Count; k++)\n                {\n                    if (addIsland == null && !rbo.IsStatic())\n                    {\n                        addIsland = m_islandsPool.Allocate();\n                        addIsland.Clear();\n                        addIsland.IterationCount = 0;\n                        addIsland.AddRigidBody(rbo);\n\n                        m_islands.Add(addIsland);                        \n                    }\n                    else\n                    {\n                        if(!rbo.IsStatic())\n                        {\n                            addIsland.AddRigidBody(rbo);\n                        }\n                    }\n\n                    MyRBElementInteraction intr = el.GetRBElementInteractions()[k];\n\n                    if(intr.GetRigidBody1() != rbo && intr.GetRigidBody2() != secondRigidBody)\n                    {\n                        AddRigidBody(intr.GetRigidBody1(),rbo,addIsland);\n                    }\n\n                    if (intr.GetRigidBody2() != rbo && intr.GetRigidBody1() != secondRigidBody)\n                    {\n                        AddRigidBody(intr.GetRigidBody2(), rbo, addIsland);\n                    }\n                }\n            }\n\n            // isolated rbo\n            if (numInteractions == 0 && !rbo.IsStatic())\n            {\n                MyRigidBodyIsland island = m_islandsPool.Allocate();\n                island.Clear();\n                island.IterationCount = 0;\n                island.AddRigidBody(rbo);\n\n                m_islands.Add(island);\n            }\n        }\n\n        public List<MyRigidBodyIsland> GetIslands()\n        {\n            return m_islands;\n        }\n\n        /// <summary>\n        /// Consistancy check\n        /// </summary>\n        public bool CheckIslands()\n        {\n            for (int j = 0; j < m_islands.Count; j++)\n            {\n                for (int i = 0; i < m_islands[j].GetRigids().Count; i++)\n                {\n                    MyRigidBody rbo = m_islands[j].GetRigids()[i];\n\n                    // check the if rigid is in only 1 island\n                    for (int k = 0;k  < m_islands.Count; k++)\n                    {\n                        if(k != j)\n                        {\n                            for (int l = 0; l < m_islands[k].GetRigids().Count; l++)\n                            {\n                                MyRigidBody testRbo = m_islands[k].GetRigids()[l];\n                                if(testRbo == rbo)\n                                {\n                                    MyCommonDebugUtils.AssertDebug(false);\n                                    return false;\n                                }\n                            }\n                            \n                        }                        \n                    }\n                }\n            }\n            return true;\n        }\n\n        private MyObjectsPool<MyRigidBodyIsland> m_islandsPool;\n        private List<MyRigidBodyIsland>         m_islands;\n        private HashSet<MyRigidBody>            m_proccesedList;\n        private List<MyRigidBody>               m_activeRigids;\n    }\n\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Physics/Dynamics/Base/MyRBIslandNSolver.cs",
    "content": "﻿\n#region Using Statements\n\nusing System;\nusing System.Collections;\nusing System.Collections.Generic;\nusing MinerWarsMath;\nusing MinerWars.CommonLIB.AppCode.Generics;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing KeenSoftwareHouse.Library.Trace;\n#endregion\n\n\nnamespace MinerWars.AppCode.Physics\n{\n    //////////////////////////////////////////////////////////////////////////\n    /// <summary>\n    /// Simulation solver for the rigid body island. This solver is collecting constraints for given rigids and in substeps iterates the bodies and constraints\n    /// </summary>\n\n    class MyRBIslandNSolver : ParallelTasks.IWork\n    {\n        public ParallelTasks.WorkOptions Options { get { return new ParallelTasks.WorkOptions() { MaximumThreads = 1 }; } }\n        \n        private const int m_defaultMaxCollidingElements = 16;\n\n        public MyRBIslandNSolver()\n        {\n            m_Island = null;\n            m_SolverConstraints = new List<MyRBSolverConstraint>(m_defaultMaxCollidingElements);\n            //m_SolverConstaintPool = new MyObjectsPool<MyRBSolverConstraint>(m_defaultMaxCollidingElements);\n            m_SolverConstaintPool = new MyDynamicObjectPool<MyRBSolverConstraint>(m_defaultMaxCollidingElements);\n            m_SolverBodies = new Dictionary<MyRigidBody, MyRBSolverBody>(m_defaultMaxCollidingElements);\n            //m_SolverBodiesPool = new MyObjectsPool<MyRBSolverBody>(m_defaultMaxCollidingElements);\n            m_SolverBodiesPool = new MyDynamicObjectPool<MyRBSolverBody>(m_defaultMaxCollidingElements);\n        }\n\n        public void Clear()\n        {\n            m_Island = null;\n            foreach (MyRBSolverConstraint rbSolverConstraint in m_SolverConstraints)\n            {\n                m_SolverConstaintPool.Deallocate(rbSolverConstraint);\n            }\n            m_SolverConstraints.Clear();\n            //m_SolverConstaintPool.DeallocateAll();\n\n            foreach (KeyValuePair<MyRigidBody, MyRBSolverBody> rbSolverBodyKvp in m_SolverBodies)\n            {\n                rbSolverBodyKvp.Value.m_RigidBody = null;\n                m_SolverBodiesPool.Deallocate(rbSolverBodyKvp.Value);\n            }\n            m_SolverBodies.Clear();\n            //m_SolverBodiesPool.DeallocateAll();\n        }\n\n        public void SetRBIsland(MyRigidBodyIsland island)\n        {\n            m_Island = island;\n        }\n\n        //public override void Execute()\n        public void DoWork()\n        {\n            float dt = MyPhysics.physicsSystem.GetRigidBodyModule().CurrentTimeStep;\n\n            UpdateVelocities(dt);\n\n            PrepareRigidBodies();\n\n            PrepareConstraints();\n\n            Solve(dt);\n\n            UpdatePositions(dt);\n\n            Clear();\n        }\n\n        /// <summary>\n        /// Updates velocities of rigids from external forces and gravitation\n        /// </summary>\n        private void UpdateVelocities(float dt)\n        {\n            foreach (var rbo in m_Island.GetRigids())\n            {\n                if (!rbo.IsStatic() && !rbo.IsKinematic())\n                    rbo.UpdateVelocity(dt);\n            }\n\n        }\n\n        /// <summary>\n        /// Updates rigid body position after solver has computed new velocities\n        /// </summary>\n        private void UpdatePositions(float dt)\n        {\n            foreach (KeyValuePair<MyRigidBody, MyRBSolverBody> kvp in m_SolverBodies)\n            {\n                MyRBSolverBody body = kvp.Value;\n                MyRigidBody rbo = kvp.Key;\n\n\n                if (body.m_State == MyRBSolverBody.SolverBodyState.SBS_Dynamic)\n                {\n                    rbo.LinearAcceleration = rbo.ExternalLinearAcceleration;\n                    rbo.AngularAcceleration = rbo.ExternalAngularAcceleration;\n\n                    rbo.ExternalAngularAcceleration = Vector3.Zero;\n                    rbo.ExternalLinearAcceleration = Vector3.Zero;\n\n#if PHYSICS_CHECK\n                    MyCommonDebugUtils.AssertDebug(float.IsNaN(body.m_LinearVelocity.X) == false);\n                    MyCommonDebugUtils.AssertDebug(float.IsNaN(body.m_Matrix.Translation.X) == false);\n#endif\n\n                    rbo.LinearVelocity = body.m_LinearVelocity;\n                    rbo.AngularVelocity = body.m_AngularVelocity;\n\n                    /*Vector3 pos, scale, scale2;Quaternion rot;\n                    rbo.Matrix.Decompose(out scale, out rot, out pos);\n                    body.m_Matrix.Decompose(out scale2, out rot, out pos);\n                    rbo.Matrix = Matrix.CreateScale(scale) * Matrix.CreateFromQuaternion(rot) * Matrix.CreateTranslation(pos);*/\n                    rbo.Matrix = body.m_Matrix;\n\n                    rbo.ApplyDamping(dt);\n\n                    foreach (var el in rbo.GetRBElementList())\n                    {\n                        el.UpdateAABB();\n                    }\n                }\n\n                if (body.m_State == MyRBSolverBody.SolverBodyState.SBS_Kinematic)\n                {\n                    rbo.LinearAcceleration = Vector3.Zero;\n                    rbo.AngularAcceleration = Vector3.Zero;\n\n                    rbo.ExternalAngularAcceleration = Vector3.Zero;\n                    rbo.ExternalLinearAcceleration = Vector3.Zero;\n\n                    rbo.LinearVelocity = body.m_LinearVelocity;\n                    rbo.AngularVelocity = body.m_AngularVelocity;\n\n                    rbo.SetMatrix(body.m_Matrix);\n                }\n            }\n\n            for (int i = 0; i < m_SolverConstraints.Count; i++)\n            {\n                MyRBSolverConstraint sc = m_SolverConstraints[i];\n\n                if (sc.m_Magnitude != 0.0f)\n                {\n                    sc.m_RBConstraint.m_Magnitude = sc.m_Magnitude;\n                }\n            }\n        }\n\n        /// <summary>\n        /// collects all rigid bodies \n        /// </summary>\n        private void PrepareRigidBodies()\n        {\n            for (int j = 0; j < m_Island.GetRigids().Count; j++)\n            {\n                MyRigidBody rbo = m_Island.GetRigids()[j];\n                AddRigidBody(rbo);\n            }\n        }\n\n        /// <summary>\n        /// Collects all constraints\n        /// </summary>\n        private void PrepareConstraints()\n        {\n            var cl = MyPhysics.physicsSystem.GetContactConstraintModule().GetActiveRBContactConstraints();\n\n            for (int i = 0; i < cl.Count; i++)\n            {\n                MyRBContactConstraint cc = cl[i];\n                MyRigidBody testRbo = cc.GetRBElementInteraction().GetRigidBody1();\n                if (testRbo.IsStatic() || testRbo.IsKinematic())\n                    testRbo = cc.GetRBElementInteraction().GetRigidBody2();\n\n                for (int j = 0; j < m_Island.GetRigids().Count; j++)\n                {\n                    MyRigidBody rbo = m_Island.GetRigids()[j];\n                    if (rbo == testRbo)\n                    {\n                        AddConstraint(cc);\n                        break;\n                    }\n                }\n            }\n        }\n\n        /// <summary>\n        /// Creates a solver body from a rbo and prepares solver data\n        /// </summary>\n        private MyRBSolverBody AddRigidBody(MyRigidBody rbo)\n        {\n            MyRBSolverBody sb = m_SolverBodiesPool.Allocate();\n            sb.Clear();\n            sb.m_RigidBody = rbo;\n            sb.m_Matrix = rbo.Matrix;\n            sb.m_LinearVelocity = rbo.LinearVelocity;\n            sb.m_AngularVelocity = rbo.AngularVelocity;\n            MinerWars.AppCode.Game.Utils.MyUtils.AssertIsValid(rbo.AngularVelocity);\n\n            sb.m_LinearAcceleration = rbo.ExternalLinearAcceleration;\n            sb.m_AngularAcceleration = rbo.ExternalAngularAcceleration;\n            MinerWars.AppCode.Game.Utils.MyUtils.AssertIsValid(rbo.ExternalAngularAcceleration);\n            sb.m_MaxAngularVelocity = rbo.MaxAngularVelocity;\n            sb.m_MaxLinearVelocity = rbo.MaxLinearVelocity;\n            if (rbo.IsStatic() || rbo.IsKinematic())\n            {\n                sb.m_OneOverMass = 0;\n                sb.m_InertiaTensor = MyPhysicsUtils.ZeroInertiaTensor;\n                sb.m_InvertedInertiaTensor = MyPhysicsUtils.ZeroInertiaTensor;\n                if (rbo.IsStatic())\n                {\n                    sb.m_State = MyRBSolverBody.SolverBodyState.SBS_Static;\n                }\n                else\n                {\n                    sb.m_State = MyRBSolverBody.SolverBodyState.SBS_Kinematic;\n                }\n            }\n            else\n            {\n                sb.m_OneOverMass = rbo.GetOneOverMass();\n\n                Matrix matrix = rbo.Matrix;\n                matrix.Translation = Vector3.Zero;\n\n                sb.m_InertiaTensor = Matrix.Transpose(matrix) * rbo.InertiaTensor * matrix;\n                // not sure if I can use directly inverted\n                sb.m_InvertedInertiaTensor = Matrix.Transpose(matrix) * rbo.InvertInertiaTensor * matrix;\n                sb.m_State = MyRBSolverBody.SolverBodyState.SBS_Dynamic;\n            }\n\n            m_SolverBodies.Add(rbo, sb);\n\n            return sb;\n        }\n\n        /// <summary>\n        /// creates and prepare the solver constraint\n        /// </summary>\n        private void AddConstraint(MyRBContactConstraint rbc)\n        {\n            if (rbc.GetRBElementInteraction().GetRigidBody1().IsStatic() && rbc.GetRBElementInteraction().GetRigidBody2().IsStatic())\n            {\n                return;\n            }\n\n            for (int i = 0; i < rbc.m_NumCollPts; i++)\n            {\n                MyRBSolverConstraint rbsc = m_SolverConstaintPool.Allocate();\n                rbsc.Clear();\n\n                MyCollPointInfo pointInfo = rbc.m_PointInfo[i];\n\n                MyRBSolverBody body1 = null;\n                MyRBSolverBody body2 = null;\n\n                MyRigidBody rbo1 = rbc.GetRBElementInteraction().GetRigidBody1();\n                MyRigidBody rbo2 = rbc.GetRBElementInteraction().GetRigidBody2();\n\n                if (!m_SolverBodies.TryGetValue(rbo1, out body1))\n                {\n                    body1 = AddRigidBody(rbo1);\n                }\n\n                if (!m_SolverBodies.TryGetValue(rbo2, out body2))\n                {\n                    body2 = AddRigidBody(rbo2);\n                }\n\n                if ((rbo1.GetFlags() & RigidBodyFlag.RBF_DISABLE_COLLISION_RESPONCE) > 0)\n                {\n                    continue;\n                }\n\n                if ((rbo2.GetFlags() & RigidBodyFlag.RBF_DISABLE_COLLISION_RESPONCE) > 0)\n                {\n                    continue;\n                }\n\n                rbsc.m_SolverBody1 = body1;\n                rbsc.m_SolverBody2 = body2;\n\n                MyRBMaterial material1 = rbc.GetRBElementInteraction().RBElement1.RBElementMaterial;\n                MyRBMaterial material2 = rbc.GetRBElementInteraction().RBElement2.RBElementMaterial;\n\n                float restitution = material1.NominalRestitution * material2.NominalRestitution;\n\n                rbsc.m_RBConstraint = rbc;\n\n                rbsc.m_Magnitude = rbc.Magnitude * m_SolutionDamping;\n\n                //This is a contact constraint\n                Vector3 globalVel1 = new Vector3();\n                Vector3 globalVel2 = new Vector3();\n\n                rbc.GetRBElementInteraction().GetRigidBody1().GetGlobalPointVelocity(ref pointInfo.m_Info.m_WorldPosition, out globalVel1);\n                rbc.GetRBElementInteraction().GetRigidBody2().GetGlobalPointVelocity(ref pointInfo.m_Info.m_WorldPosition, out globalVel2);\n\n                Vector3 relativeVelocity = globalVel2 - globalVel1;\n                float aRelVel = Vector3.Dot(pointInfo.m_Info.m_Normal, relativeVelocity);\n\n                float diff = aRelVel;\n                rbsc.m_Target = diff >= 0.0f ? 0.0f : (-diff * restitution);\n\n                if(pointInfo.m_Info.m_InitialPenetration < -0.01f)\n                    rbsc.m_Target -= pointInfo.m_Info.m_InitialPenetration * m_DepenetrationCoeficient;\n\n                rbsc.m_Restitution = restitution;\n\n                rbsc.m_Normal = pointInfo.m_Info.m_Normal;\n                rbsc.m_ContactPoint = pointInfo.m_Info.m_WorldPosition;\n\n                rbsc.m_Body1LocalPoint = pointInfo.m_Info.m_R0;\n                rbsc.m_Body2LocalPoint = pointInfo.m_Info.m_R1;\n\n                Vector3 cross1 = Vector3.Cross(pointInfo.m_Info.m_R0, pointInfo.m_Info.m_Normal);\n                Vector3 cross2 = Vector3.Cross(pointInfo.m_Info.m_R1, pointInfo.m_Info.m_Normal);\n\n                rbsc.m_Body1LocalPointCrossedNormal = Vector3.Transform(cross1, body1.m_InvertedInertiaTensor);\n                rbsc.m_Body2LocalPointCrossedNormal = Vector3.Transform(cross2, body2.m_InvertedInertiaTensor);\n\n                rbsc.m_StaticFriction = material1.NominalStaticFriction * material2.NominalStaticFriction;\n                rbsc.m_DynamicFriction = material1.NominalDynamicFriction * material2.NominalDynamicFriction;\n                rbsc.m_Affection = 0.0f;\n                if (body1.m_State == MyRBSolverBody.SolverBodyState.SBS_Dynamic)\n                {\n                    rbsc.m_Affection += Vector3.Dot(rbsc.m_Normal, (rbsc.m_Normal * body1.m_OneOverMass + Vector3.Cross(rbsc.m_Body1LocalPointCrossedNormal, rbsc.m_Body1LocalPoint)));\n                    body1.m_LinearVelocity -= rbsc.m_Normal * (body1.m_OneOverMass * rbsc.m_Magnitude);\n                    body1.m_AngularVelocity -= rbsc.m_Body1LocalPointCrossedNormal * (rbsc.m_Magnitude);\n                    MinerWars.AppCode.Game.Utils.MyUtils.AssertIsValid(body1.m_AngularVelocity);\n                }\n                if (body2.m_State == MyRBSolverBody.SolverBodyState.SBS_Dynamic)\n                {\n                    rbsc.m_Affection += Vector3.Dot(rbsc.m_Normal, (rbsc.m_Normal * body2.m_OneOverMass + Vector3.Cross(rbsc.m_Body2LocalPointCrossedNormal, rbsc.m_Body2LocalPoint)));\n                    body2.m_LinearVelocity -= rbsc.m_Normal * (body2.m_OneOverMass * rbsc.m_Magnitude);\n                    body2.m_AngularVelocity -= rbsc.m_Body2LocalPointCrossedNormal * (rbsc.m_Magnitude);\n                    MinerWars.AppCode.Game.Utils.MyUtils.AssertIsValid(body2.m_AngularVelocity);\n                }\n\n                if (rbo1.ContactModifyNotificationHandler != null)\n                {\n                    if (!rbo1.ContactModifyNotificationHandler.OnContact(ref rbsc))\n                    {\n                        m_SolverConstaintPool.Deallocate(rbsc);\n                        continue;\n                    }\n                }\n\n                if (rbo2.ContactModifyNotificationHandler != null)\n                {\n                    if (!rbo2.ContactModifyNotificationHandler.OnContact(ref rbsc))\n                    {\n                        m_SolverConstaintPool.Deallocate(rbsc);\n                        continue;\n                    }\n                }\n\n                m_SolverConstraints.Add(rbsc);\n            }\n        }\n\n        /// <summary>\n        /// Solves the solver rbos and constraints through iterations given by the island. This is a newton based solver.\n        /// </summary>\n        private void Solve(float dt)\n        {\n            Vector3 v1 = new Vector3();\n            Vector3 v2 = new Vector3();\n\n            for (int iteration = 0; iteration < m_Island.IterationCount; iteration++)\n            {\n                for (int i = 0; i < m_SolverConstraints.Count; i++)\n                {\n                    MyRBSolverConstraint sc = m_SolverConstraints[i];\n                    MyRBSolverBody b1 = sc.m_SolverBody1;\n                    MyRBSolverBody b2 = sc.m_SolverBody2;\n\n                    // compute relative constraint velocity\n                    if (b1.m_State == MyRBSolverBody.SolverBodyState.SBS_Static)\n                    {\n                        v1 = Vector3.Zero;\n                    }\n                    else\n                    {\n                        v1 = b1.m_LinearVelocity + Vector3.Cross(b1.m_AngularVelocity, sc.m_Body1LocalPoint);\n                    }\n\n                    if (b2.m_State == MyRBSolverBody.SolverBodyState.SBS_Static)\n                    {\n                        v2 = Vector3.Zero;\n                    }\n                    else\n                    {\n                        v2 = b2.m_LinearVelocity + Vector3.Cross(b2.m_AngularVelocity, sc.m_Body2LocalPoint);\n                    }\n\n                    float current = Vector3.Dot(v2, sc.m_Normal) - Vector3.Dot(v1, sc.m_Normal);\n                    float diff = sc.m_Target - current;\n\n                    if (sc.m_Magnitude < sc.m_MinMagnitude || sc.m_Magnitude > sc.m_MaxMagnitude ||\n                        (diff < -m_CollisionEpsilon && sc.m_Magnitude > sc.m_MinMagnitude) ||\n                        (diff > m_CollisionEpsilon && sc.m_Magnitude < sc.m_MaxMagnitude))\n                    {\n\n                        // Alter magnitude\n\n                        float alter = (diff / sc.m_Affection) * 0.5f;\n\n                        sc.m_Magnitude += alter;\n\n                        //Ensure magnitude is in valid range\n                        if (sc.m_Magnitude > sc.m_MaxMagnitude)\n                        {\n                            alter -= sc.m_Magnitude - sc.m_MaxMagnitude;\n                            sc.m_Magnitude = sc.m_MaxMagnitude;\n                        }\n                        else if (sc.m_Magnitude < sc.m_MinMagnitude)\n                        {\n                            alter -= sc.m_Magnitude - sc.m_MinMagnitude;\n                            sc.m_Magnitude = sc.m_MinMagnitude;\n                        }\n\n                        //Apply impulse\n                        if (b1.m_State == MyRBSolverBody.SolverBodyState.SBS_Dynamic)\n                        {\n                            b1.m_LinearVelocity -= sc.m_Normal * (b1.m_OneOverMass * alter);\n                            Vector3 tempV = b1.m_LinearVelocity;\n                            tempV.Normalize();\n                            if (b2.m_State == MyRBSolverBody.SolverBodyState.SBS_Dynamic)\n                            {\n                                float massRatio = 1.0f / (b1.m_OneOverMass / b2.m_OneOverMass);\n                                //If mass of object1 is more than object2, do not apply restitution at all\n                                float rest = MathHelper.Lerp(sc.m_Restitution, 1, massRatio - 0.5f);\n                                sc.m_Restitution = MathHelper.Clamp(rest, sc.m_Restitution, 1);\n                            }\n\n                            b1.m_AngularVelocity -= sc.m_Body1LocalPointCrossedNormal * (alter);\n                            MinerWars.AppCode.Game.Utils.MyUtils.AssertIsValid(b1.m_AngularVelocity);\n                        }\n                        if (b2.m_State == MyRBSolverBody.SolverBodyState.SBS_Dynamic)\n                        {\n                            b2.m_LinearVelocity += sc.m_Normal * (b2.m_OneOverMass * alter);\n                            Vector3 tempV = b2.m_LinearVelocity;\n                            tempV.Normalize();\n\n                            if (b1.m_State == MyRBSolverBody.SolverBodyState.SBS_Dynamic)\n                            {\n                                float massRatio = 1.0f / (b2.m_OneOverMass / b1.m_OneOverMass);\n                                //If mass of object2 is more than object1, do not apply restitution at all\n                                float rest = MathHelper.Lerp(sc.m_Restitution, 1, massRatio - 0.5f);\n                                sc.m_Restitution = MathHelper.Clamp(rest, sc.m_Restitution, 1);\n                            }\n\n                            b2.m_AngularVelocity += sc.m_Body2LocalPointCrossedNormal * (alter);\n                            MinerWars.AppCode.Game.Utils.MyUtils.AssertIsValid(b2.m_AngularVelocity);\n                        }\n                    }\n                }\n\n                foreach (KeyValuePair<MyRigidBody, MyRBSolverBody> kvp in m_SolverBodies)\n                {\n                    MyRBSolverBody body = kvp.Value;\n                    float cdt = dt / (float)(iteration + 1);\n                    if (body.m_State == MyRBSolverBody.SolverBodyState.SBS_Dynamic)\n                    {\n                        //Integrate velocities\n                        body.m_LinearVelocity += body.m_LinearAcceleration * (cdt);\n                        body.m_AngularVelocity += body.m_AngularAcceleration * (cdt);\n                        MinerWars.AppCode.Game.Utils.MyUtils.AssertIsValid(body.m_AngularVelocity);\n\n                        if (body.m_MaxAngularVelocity > 0.0f && body.m_AngularVelocity.Length() > body.m_MaxAngularVelocity)\n                        {\n                            body.m_AngularVelocity = MyMwcUtils.Normalize(body.m_AngularVelocity);\n                            body.m_AngularVelocity *= body.m_MaxAngularVelocity;\n                        }\n\n                        if (body.m_MaxLinearVelocity > 0.0f && body.m_LinearVelocity.Length() > body.m_MaxLinearVelocity)\n                        {\n                            body.m_LinearVelocity = MyMwcUtils.Normalize(body.m_LinearVelocity);\n                            body.m_LinearVelocity *= body.m_MaxLinearVelocity;\n                        }\n                    }\n                }\n            }\n\n            //Integrate position and orientation\n            foreach (KeyValuePair<MyRigidBody, MyRBSolverBody> kvp in m_SolverBodies)\n            {\n                MyRBSolverBody body = kvp.Value;\n                if (body.m_State != MyRBSolverBody.SolverBodyState.SBS_Static)\n                {\n                    Vector3 transl = body.m_Matrix.Translation + body.m_LinearVelocity * (dt);\n\n                    Vector3 dir = body.m_AngularVelocity;\n                    float ang = dir.Length();\n\n                    if (ang > 0.0f)\n                    {\n                        body.m_Matrix.Translation = Vector3.Zero;\n\n                        Vector3.Divide(ref dir, ang, out dir);  // dir /= ang;\n                        ang *= dt;\n                        Matrix rot;\n                        Matrix.CreateFromAxisAngle(ref dir, ang, out rot);\n                        Matrix.Multiply(ref body.m_Matrix, ref rot, out body.m_Matrix);\n\n                        MyPhysicsUtils.Orthonormalise(ref body.m_Matrix);\n                    }\n\n                    body.m_Matrix.Translation = transl;\n                }\n            }\n        }\n\n\n        private static float m_CollisionEpsilon = MyPhysicsConfig.CollisionEpsilon;\n       // private static float m_ErrorReduction = 20.0f;\t\t//Geometrical constraint error reduction parameter (higher more reduction, more unstable)        \n        private static float m_SolutionDamping = 0.5f;\t//Damp solution by this value while restoring (to avoid instability)        \n        //private static float m_DefaultRestVelocity = 0.3f;\t//Relative velocity below this threshold is handled as static contact (restitution=0 and static friction)\n        private static float m_DepenetrationCoeficient = 20.0f; // 0.6f * 0.6f;\n\n        private MyRigidBodyIsland m_Island;\n        //private MyObjectsPool<MyRBSolverConstraint> m_SolverConstaintPool;\n        //private MyObjectsPool<MyRBSolverBody> m_SolverBodiesPool;\n        private MyDynamicObjectPool<MyRBSolverConstraint> m_SolverConstaintPool;\n        private MyDynamicObjectPool<MyRBSolverBody> m_SolverBodiesPool;\n        private List<MyRBSolverConstraint> m_SolverConstraints;\n        private Dictionary<MyRigidBody, MyRBSolverBody> m_SolverBodies;\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Physics/Dynamics/Base/MyRBIslandSleepState.cs",
    "content": "﻿#region Using Statements\nusing System.Collections.Generic;\n\n#endregion\n\nnamespace MinerWars.AppCode.Physics\n{\n    //////////////////////////////////////////////////////////////////////////\n    /// <summary>\n    /// Checks the rigid body island if its possible to put the island sleep. Only the whole island can go sleep. If some rigid is still active the island cannot be put to sleep.\n    /// </summary>\n    class MyRigidBodyIslandSleepState : ParallelTasks.IWork\n    {\n        public MyRigidBodyIslandSleepState()\n        {\n        }\n\n        public ParallelTasks.WorkOptions Options { get { return new ParallelTasks.WorkOptions() { MaximumThreads = 1 }; } }\n\n        public MyBroadphase m_Broadphase;\n\n        public void DoWork()\n        {\n            UpdateSleepState();\n        }\n\n        /// <summary>\n        /// Checks the sleep state of rigids and decides if its possible to sleep the whole island\n        /// </summary>\n        private void UpdateSleepState()\n        {\n            //MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"GetIslands\");\n\n            List<MyRigidBodyIsland> islands = MyPhysics.physicsSystem.GetRigidBodyModule().GetRigidBodyIslandGeneration().GetIslands();\n\n            float dt = MyPhysics.physicsSystem.GetRigidBodyModule().CurrentTimeStep;\n\n            //MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            //MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Loop Islands\");\n\n            int count = 0;\n\n            for (int i = 0; i < islands.Count; i++)\n            {\n                MyRigidBodyIsland island = islands[i];\n                bool canDeactivate = true;\n\n                //MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"Loop Rigids\");\n\n                for (int j = 0; j < island.GetRigids().Count; j++)\n                {\n                    count++;\n\n                    MyRigidBody rbo = island.GetRigids()[j];\n                    if (rbo.IsStatic())\n                    {\n                        rbo.PutToSleep();\n                        MyPhysics.physicsSystem.GetRigidBodyModule().RemoveActiveRigid(rbo);\n                    }\n                    else\n                    {\n                        //MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"MoveVolumeFast\");\n\n                        foreach(var el in rbo.GetRBElementList())\n                        {\n                            m_Broadphase.MoveVolumeFast(el);\n                        }\n\n                        //MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n                        //MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"NotifyMotionHandler\");\n\n                        if (rbo.NotifyMotionHandler != null)\n                        {\n                            rbo.NotifyMotionHandler.OnMotion(rbo, dt);\n                        }\n\n                        //MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n                    }\n\n                    // dynamic rigids use different approach\n                    if(!rbo.CanDeactivate())\n                    {\n                        canDeactivate = false;                        \n                    }\n                }\n\n                //MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n                //MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock(\"canDeactivate\");\n                // check if all are asleep\n                if(canDeactivate)\n                {\n                    foreach (var rbo in island.GetRigids())\n                    {\n                        rbo.PutToSleep();\n                        MyPhysics.physicsSystem.GetRigidBodyModule().RemoveActiveRigid(rbo);\n                    }\n                }\n                //MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n            }\n            //MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();\n\n            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().ProfileCustomValue(\"UpdateSleepState\", count);\n        }        \n    }\n\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Physics/Dynamics/Base/MyRBSolverBody.cs",
    "content": "﻿#region Using Statements\nusing MinerWarsMath;\n#endregion\n\nnamespace MinerWars.AppCode.Physics\n{\n    /// <summary>\n    /// Solver body is the support class for rigid body definition in the solver stepping\n    /// </summary>\n    class MyRBSolverBody\n    {\n        public enum SolverBodyState\n        {\n            SBS_Dynamic,\n            SBS_Static,\n            SBS_Kinematic,\n        }\n\n        public MyRBSolverBody()\n        {\n            Clear();\n        }\n\n        public void Clear()\n        {\n            m_RigidBody = null;\n            m_Matrix = Matrix.Identity;\n\n            m_LinearVelocity = Vector3.Zero;\n            m_AngularVelocity = Vector3.Zero;\n\n            m_LinearAcceleration = Vector3.Zero;\n            m_AngularAcceleration = Vector3.Zero;\n\n            m_OneOverMass = 1.0f;\n\n            m_InertiaTensor = Matrix.Identity;\n            m_InvertedInertiaTensor = Matrix.Identity;\n\n            m_MaxAngularVelocity = MyPhysicsUtils.FLT_MAX;\n            m_MaxLinearVelocity = MyPhysicsUtils.FLT_MAX;\n\n            m_State = SolverBodyState.SBS_Dynamic;\n\n            m_NormalHit = false;            \n\n            m_Restitution = 1.0f;\n        }\n\n        public MyRigidBody m_RigidBody;\n\n        public Matrix m_Matrix;\n\n        public Vector3 m_LinearVelocity;\n        public Vector3 m_AngularVelocity;\n\n        public float m_MaxLinearVelocity;\n        public float m_MaxAngularVelocity;\n\n        public Vector3 m_LinearAcceleration;\n        public Vector3 m_AngularAcceleration;\n\n        public float m_OneOverMass;\n        public Matrix m_InertiaTensor;\n        public Matrix m_InvertedInertiaTensor;\n\n        public bool m_NormalHit;\n        public float m_Restitution;        \n\n        public SolverBodyState m_State;\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Physics/Dynamics/Base/MyRigidBodyIsland.cs",
    "content": "﻿#region Using Statements\nusing System.Collections.Generic;\nusing MinerWarsMath;\n#endregion\n\nnamespace MinerWars.AppCode.Physics\n{\n    //////////////////////////////////////////////////////////////////////////\n    /// <summary>\n    /// Rigid body island is a group of rigid bodies that are bind together through the constraints. The island can be then solved on a separate solver. The deactivation\n    /// is then handled on the whole island. The island is simulated by the larges num iteraction steps set on inserted rigid.\n    /// </summary>\n    class MyRigidBodyIsland\n    {\n        public MyRigidBodyIsland()\n        {\n            m_Rigids = new List <MyRigidBody>(8);\n        }\n        public void AddRigidBody(MyRigidBody rbo)\n        { \n            // make the add unique\n            for (int i = 0; i < m_Rigids.Count; i++)\n            {\n                if(m_Rigids[i] == rbo)\n                    return;\n            }\n\n            if (rbo.IterationCount > m_IterationCount)\n                m_IterationCount = rbo.IterationCount;\n            m_Rigids.Add(rbo); \n        }\n        public void RemoveRigidBody(MyRigidBody rbo) { m_Rigids.Remove(rbo); }\n\n        public void Update(float timeStep)\n        {\n        }\n\n        public uint IterationCount { get { return m_IterationCount; } set { m_IterationCount = value; }} \n\n        public List <MyRigidBody> GetRigids()\n        {\n            return m_Rigids;\n        }\n\n        public void Clear()\n        {\n            m_Rigids.Clear();\n\n        }\n\n        private List <MyRigidBody>  m_Rigids;        \n        private uint m_IterationCount;\n    }\n\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Physics/Dynamics/MyContactEventHandler.cs",
    "content": "﻿#region Using Statements\n\nusing MinerWarsMath;\n\n#endregion\n\nnamespace MinerWars.AppCode.Physics\n{\n    //////////////////////////////////////////////////////////////////////////\n\n    enum MyContactEventType\n    {\n        CET_START = 1,        \n        CET_END = 2,\n        CET_START_AND_END = 3,\n        CET_TOUCH = 4,\n        CET_START_AND_TOUCH = 5,\n        CET_START_AND_TOUCH_AND_END = 6,\n        CET_END_AND_TOUCH = 7,\n    };\n\n    //////////////////////////////////////////////////////////////////////////\n\n\tclass MyContactEventInfo\n\t{\n\n        public void Fill(MyRBContactConstraint cc)\n        {\n            m_RigidBody1 = cc.GetRBElementInteraction().GetRigidBody1();\n            m_RigidBody2 = cc.GetRBElementInteraction().GetRigidBody2();\n\n            m_Element1 = cc.GetRBElementInteraction().RBElement1;\n            m_Element2 = cc.GetRBElementInteraction().RBElement2;\n\n            m_ContactNormal = cc.m_PointInfo[0].m_Info.m_Normal;\n            m_ContactPoint = cc.m_PointInfo[0].m_Info.m_WorldPosition;\n\n            m_Velocity1 = cc.m_PointInfo[0].m_Info.m_V0;\n            m_Velocity2 = cc.m_PointInfo[0].m_Info.m_V1;\n\n            m_Guid = cc.GUID;\n        }\n\n\t\tpublic MyRigidBody m_RigidBody1;\n        public MyRigidBody m_RigidBody2;\n        public MyRBElement m_Element1;\n        public MyRBElement m_Element2;\n        public Vector3 m_ContactPoint;\n        public Vector3 m_ContactNormal;\n        public Vector3 m_Velocity1;\n        public Vector3 m_Velocity2;\n        public uint m_Guid; //guid of the constraint\n\t};\n\n    //////////////////////////////////////////////////////////////////////////\n\n    /// <summary>\n    /// Provides notifications about contacts from physic subsystem.\n    /// </summary>\n    interface IMyNotifyContact\n    {\n        /// <summary>\n        /// Called when [contact start].\n        /// </summary>\n        /// <param name=\"contactInfo\">The contact info.</param>\n        void OnContactStart(MyContactEventInfo contactInfo);\n\n        /// <summary>\n        /// Called when [contact end].\n        /// </summary>\n        /// <param name=\"contactInfo\">The contact info.</param>\n        void OnContactEnd(MyContactEventInfo contactInfo);\n\n        /// <summary>\n        /// Called when [contact touch].\n        /// </summary>\n        /// <param name=\"contactInfo\">The contact info.</param>\n        void OnContactTouch(MyContactEventInfo contactInfo);\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Physics/Dynamics/MyContactModifyEventHandler.cs",
    "content": "﻿using MinerWarsMath;\n\nnamespace MinerWars.AppCode.Physics\n{\n    interface IMyContactModifyNotifications\n    {\n        // return false in case of contact refuse\n        // Must be thread safe, careful what you are changing!\n        bool OnContact(ref MyRBSolverConstraint constraint);\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Physics/Dynamics/MyRigidBody.cs",
    "content": "﻿#region Using Statements\n\nusing System;\nusing System.Collections.Generic;\nusing MinerWarsMath;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing KeenSoftwareHouse.Library.Parallelization;\n\n#endregion\n\nnamespace MinerWars.AppCode.Physics\n{\n    //////////////////////////////////////////////////////////////////////////\n\n    /// <summary>\n    /// Rigid body represents the simulation body. It hold the dynamic properties of the body and holds the element (shape) information.\n    /// </summary>\n    partial class MyRigidBody\n    {\n        #region members\n        private Matrix m_Matrix;\n\n        private Vector3 m_Velocity; //[m/s]\n        private Vector3 m_LinearAcceleration; //[m/s^2]\n        private Vector3 m_ExternalLinearAcceleration; //[m/s^2]\n        private Vector3 m_AngularVelocity; //[rad/s]\n        private Vector3 m_AngularAcceleration; //[rad/s^2]\n        private Vector3 m_ExternalAngularAcceleration; //[rad/s^2]\n\n        private float m_Mass; //weight [kg]\n        private float m_OneOverMass; // 1/weight [kg^-1]\n        private Matrix m_InertiaTensor;\n        private Matrix m_InvertInertiaTensor;\n\n        private List<MyRBElement> m_RBElementList;\n\n        private IMyContactModifyNotifications m_ContactModify;\n        private IMyNotifyContact m_ContactEvent;\n        //private MyRigidBodyEvent        m_RigidBodyEvent;        \t\t\t\t\n        private IMyNotifyMotion m_MotionEvent;\n\n        private RigidBodyFlag m_Flags;\n\n        private bool m_IsSleeping;\n\n        private uint m_IterationCount;\n\n        private ushort m_Type;\n\n        private ushort m_Guid;\n\n        private float m_MaxAngularVelocity;\n        private float m_MaxLinearVelocity;\n        private float m_SleepEnergyThreshold;\n        private float m_LinearDamping;\n        private float m_AngularDamping;\n\n        private float m_LastKineticEnergy;\n        private float m_DeactivationTimer;\n\n        private static float GLOBAL_DEACTIVATION_TIMER = 0.5f;\n        private static ushort GUID_COUNTER = 0;\n\n        public object m_UserData;\n\n        /// <summary>\n        /// When body is kinematic, it allows setting position and velocity\n        /// </summary>\n        public bool KinematicLinear = true;\n\n        #endregion\n\n        #region events\n        // public event MyRigidBodyEvent OnActivated;\n        //public event MyRigidBodyEvent OnDeactivated;\n\n\n        public FastNoArgsEvent OnActivated = new FastNoArgsEvent();\n        public FastNoArgsEvent OnDeactivated = new FastNoArgsEvent();\n\n\n        #endregion\n\n        #region interface\n        public MyRigidBody()\n        {\n            m_RBElementList = new List<MyRBElement>(2);\n\n            m_Matrix = new Matrix();\n\n            m_InertiaTensor = Matrix.Identity;\n\n            m_IsSleeping = false;\n\n            m_ContactModify = null;\n            m_ContactEvent = null;\n            m_MotionEvent = null;\n            //m_RigidBodyEvent = null;\n\n            m_IterationCount = MyPhysicsConfig.DefaultIterationCount;\n\n            m_LinearDamping = MyPhysicsConfig.DefaultLinearDamping;\n            m_AngularDamping = MyPhysicsConfig.DefaultAngularDamping;\n\n            m_SleepEnergyThreshold = MyPhysicsConfig.DefaultEnergySleepThreshold;\n\n            m_MaxLinearVelocity = -1.0f;\n            m_MaxAngularVelocity = -1.0f;\n\n            m_Guid = GUID_COUNTER;\n            if (GUID_COUNTER > 65000)\n            {\n                GUID_COUNTER = 0;\n            }\n            GUID_COUNTER++;\n        }\n\n        /// <summary>\n        /// Loads properties of rbo from descriptor\n        /// </summary>\n        public bool LoadFromDesc(MyRigidBodyDesc desc)\n        {\n            if ((m_Flags & RigidBodyFlag.RBF_INSERTED) > 0)\n                return false;\n\n            if (!desc.IsValid())\n                return false;\n\n            m_Mass = desc.m_Mass;\n            m_OneOverMass = 1.0f / m_Mass;\n            m_Matrix = desc.m_Matrix;\n\n            m_IterationCount = desc.m_IterationCount;\n            m_Type = desc.m_Type;\n\n            m_MaxLinearVelocity = desc.m_MaxLinearVelocity;\n            m_MaxAngularVelocity = desc.m_MaxAngularVelocity;\n            m_SleepEnergyThreshold = desc.m_SleepEnergyThreshold;\n            m_LinearDamping = desc.m_LinearDamping;\n            m_AngularDamping = desc.m_AngularDamping;\n\n            SetInitialFlags(desc.m_Flags);\n\n            m_InvertInertiaTensor.M11 = MyPhysicsUtils.FLT_MAX;\n            m_InvertInertiaTensor.M22 = MyPhysicsUtils.FLT_MAX;\n            m_InvertInertiaTensor.M33 = MyPhysicsUtils.FLT_MAX;\n\n            m_Guid = GUID_COUNTER;\n            if (GUID_COUNTER > 65000)\n            {\n                GUID_COUNTER = 0;\n            }\n\n            GUID_COUNTER++;\n\n            return true;\n        }\n\n        /// <summary>\n        /// Activated notification\n        /// </summary>\n        public void ActivateNotification()\n        {\n            OnActivated.Raise();\n        }\n\n        /// <summary>\n        /// Deactivated notification\n        /// </summary>\n        public void DeactivateNotification()\n        {\n            OnDeactivated.Raise();\n        }\n\n        /// <summary>\n        /// Gets or sets the matrix.\n        /// </summary>\n        /// <value>\n        /// The matrix.\n        /// </value>\n        public Matrix Matrix\n        {\n            get\n            {\n                return this.m_Matrix;\n            }\n            set\n            {\n                if (ReadFlag(RigidBodyFlag.RBF_KINEMATIC))\n                {\n                    if (!KinematicLinear)\n                    {\n                        SetMatrix(value);\n                    }\n                    m_Velocity = (value.Translation - m_Matrix.Translation) / (MyPhysics.physicsSystem.GetRigidBodyModule().CurrentTimeStep);\n                }\n                else\n                {\n                    SetMatrix(value);\n                }\n            }\n        }\n\n        public Vector3 Position\n        {\n            get { return this.m_Matrix.Translation; }\n        }\n\n        public bool IsStatic() { return ((m_Flags & RigidBodyFlag.RBF_RBO_STATIC) > 0); }\n\n        public bool IsKinematic() { return ((m_Flags & RigidBodyFlag.RBF_KINEMATIC) > 0); }\n\n        public bool IsSleeping() { return m_IsSleeping; }\n\n        /// <summary>\n        /// Wakes up rigid body making it active for collision detection and solver\n        /// </summary>\n        public void WakeUp()\n        {\n            if ((m_Flags & RigidBodyFlag.RBF_INSERTED) > 0)\n                MyPhysics.physicsSystem.GetRigidBodyModule().AddActiveRigid(this);\n            m_IsSleeping = false;\n        }\n\n        /// <summary>\n        /// Sleeps the rigid body, so its not parsed by solver and collision detection\n        /// </summary>\n        public void PutToSleep()\n        {\n            m_IsSleeping = true;\n            if ((m_Flags & RigidBodyFlag.RBF_INSERTED) > 0)\n                MyPhysics.physicsSystem.GetRigidBodyModule().RemoveActiveRigid(this);\n        }\n\n        public Vector3 LinearVelocity { get { return this.m_Velocity; } set { this.SetLinearVelocity(value); } }\n\n        public Vector3 LinearAcceleration\n        {\n            get { return this.m_LinearAcceleration; }\n            set\n            {\n                MinerWars.AppCode.Game.Utils.MyUtils.AssertIsValid(value);\n                m_LinearAcceleration = value;\n                m_ExternalLinearAcceleration = (value);\n            }\n        }\n\n        public Vector3 ExternalLinearAcceleration\n        {\n            get { return this.m_ExternalLinearAcceleration; }\n            set\n            {\n                m_ExternalLinearAcceleration = (value);\n                MinerWars.AppCode.Game.Utils.MyUtils.AssertIsValid(value);\n            }\n        }\n\n        public Vector3 ExternalAngularAcceleration\n        {\n            get { return this.m_ExternalAngularAcceleration; }\n            set\n            {\n                m_ExternalAngularAcceleration = (value);\n                MinerWars.AppCode.Game.Utils.MyUtils.AssertIsValid(value);\n            }\n        }\n\n        public Vector3 AngularVelocity { get { return this.m_AngularVelocity; } set { this.SetAngularVelocity(value); } }\n\n        public float MaxAngularVelocity { get { return this.m_MaxAngularVelocity; } set { this.m_MaxAngularVelocity = value; } }\n\n        public float MaxLinearVelocity { get { return this.m_MaxLinearVelocity; } set { this.m_MaxLinearVelocity = value; } }\n\n        public Vector3 AngularAcceleration\n        {\n            get { return this.m_AngularAcceleration; }\n            set\n            {\n                m_AngularAcceleration = value; m_ExternalAngularAcceleration = (value);\n                MinerWars.AppCode.Game.Utils.MyUtils.AssertIsValid(value);\n            }\n        }\n\n        public float GetMass() { return this.m_Mass; }\n\n        public float GetOneOverMass()\n        {\n            return m_OneOverMass;\n        }\n\n        public void SetMass(float mass, bool recomputeInertiaTensor)\n        {\n            System.Diagnostics.Debug.Assert(mass > 0);\n            m_Mass = mass;\n            m_OneOverMass = 1.0f / m_Mass;\n            if (recomputeInertiaTensor)\n                MyPhysicsUtils.ComputeIntertiaTensor(this);\n        }\n\n        public Matrix InertiaTensor\n        {\n            get { return this.m_InertiaTensor; }\n            set\n            {\n                this.m_InertiaTensor = value;\n                if (m_InertiaTensor.M11 == float.MaxValue)\n                {\n                    m_InvertInertiaTensor.M11 = MyPhysicsUtils.FLT_MAX;\n                    m_InvertInertiaTensor.M22 = MyPhysicsUtils.FLT_MAX;\n                    m_InvertInertiaTensor.M33 = MyPhysicsUtils.FLT_MAX;\n                    m_InvertInertiaTensor.M44 = 0;\n                }\n                else\n                    m_InvertInertiaTensor = Matrix.Invert(m_InertiaTensor);\n                MinerWars.AppCode.Game.Utils.MyUtils.AssertIsValid(m_InvertInertiaTensor);\n            }\n        }\n        public Matrix InvertInertiaTensor { get { return this.m_InvertInertiaTensor; } set { this.m_InvertInertiaTensor = value; } }\n\n        /// <summary>\n        /// Apply world space force to the center of mass\n        /// </summary>\n        public void ApplyForce(Vector3 force)\n        {\n            if (IsStatic() || IsKinematic())\n                return;\n\n            m_ExternalLinearAcceleration += force * (1 / m_Mass);\n\n            WakeUp();\n        }\n\n        /// <summary>\n        /// Apply world space force to the given world space position\n        /// </summary>\n        public void ApplyForce(Vector3 force, Vector3 pos)\n        {\n            if (IsStatic() || IsKinematic())\n                return;\n\n            MinerWars.AppCode.Game.Utils.MyUtils.AssertIsValid(force);\n            MinerWars.AppCode.Game.Utils.MyUtils.AssertIsValid(pos);\n\n            Vector3 dAngAccel = Vector3.Cross(pos - m_Matrix.Translation, force);\n            dAngAccel = Vector3.Transform(dAngAccel, m_InvertInertiaTensor);\n\n            m_ExternalLinearAcceleration += force * (1 / m_Mass);\n            m_ExternalAngularAcceleration += dAngAccel;\n\n            MinerWars.AppCode.Game.Utils.MyUtils.AssertIsValid(m_ExternalAngularAcceleration);\n\n            WakeUp();\n        }\n\n        /// <summary>\n        /// Apply world space impulse to the given world space position\n        /// </summary>\n        public void ApplyImpulse(Vector3 impulse, Vector3 pos)\n        {\n            if (IsStatic() || IsKinematic())\n                return;\n\n            Vector3 dAngVel = new Vector3();\n            Vector3 cpos = pos - m_Matrix.Translation;\n            Vector3.Cross(ref cpos, ref impulse, out dAngVel);\n            Matrix invInt = m_InvertInertiaTensor;\n            dAngVel = Vector3.Transform(dAngVel, m_InvertInertiaTensor);\n            m_Velocity += impulse * (1 / m_Mass);\n            m_AngularVelocity += dAngVel;\n\n            WakeUp();\n        }\n\n        /// <summary>\n        /// Apply world space torgue\n        /// </summary>\n        public void ApplyTorque(Vector3 torque)\n        {\n            if (IsStatic() || IsKinematic())\n                return;\n\n            MinerWars.AppCode.Game.Utils.MyUtils.AssertIsValid(torque);\n\n            Vector3.Transform(ref torque, ref m_InvertInertiaTensor, out torque);\n            Vector3.Add(ref m_ExternalAngularAcceleration, ref torque, out m_ExternalAngularAcceleration);\n\n            MinerWars.AppCode.Game.Utils.MyUtils.AssertIsValid(m_ExternalAngularAcceleration);\n\n            WakeUp();\n        }\n\n        /// <summary>\n        /// Type is used for contact report filtering\n        /// </summary>\n        public ushort Type { get { return this.m_Type; } set { MyCommonDebugUtils.AssertDebug(value < 32); this.m_Type = value; } }\n\n        public ushort GUID { get { return this.m_Guid; } }\n\n        /// <summary>\n        /// Number of iterations for the rigid body, the more the more precise simulation\n        /// </summary>\n        public uint IterationCount { get { return this.m_IterationCount; } set { if (value == 0) MyCommonDebugUtils.AssertDebug(false); this.m_IterationCount = value; } }\n\n        /// <summary>\n        /// Under given threshold the rbo is put to sleep\n        /// </summary>\n        public float SleepEnergyThreshold { get { return this.m_SleepEnergyThreshold; } set { this.m_SleepEnergyThreshold = value; } }\n\n        public float LinearDamping { get { return this.m_LinearDamping; } set { this.m_LinearDamping = value; } }\n\n        public float AngularDamping { get { return this.m_AngularDamping; } set { this.m_AngularDamping = value; } }\n\n        public RigidBodyFlag GetFlags() { return m_Flags; }\n\n        public void RaiseFlag(RigidBodyFlag flag)\n        {\n            if ((flag & RigidBodyFlag.RBF_ACTIVE) > 0)\n                m_DeactivationTimer = GLOBAL_DEACTIVATION_TIMER;\n\n            m_Flags |= flag;\n        }\n\n        public bool ReadFlag(RigidBodyFlag flags) { return (flags & m_Flags) != 0; }\n\n        public void ClearFlag(RigidBodyFlag flag)\n        {\n            m_Flags &= ~flag;\n        }\n\n        /// <summary>\n        /// Adds element to the rigid body, you have to specify if you want to compute the inertia tensor, yes in case you will not insert another one or change mass\n        /// </summary>\n        public bool AddElement(MyRBElement element, bool recomputeInertia)\n        {\n            m_RBElementList.Add(element);\n            element.SetRigidBody(this);\n\n            if ((m_Flags & RigidBodyFlag.RBF_INSERTED) > 0)\n            {\n                MyPhysics.physicsSystem.GetRigidBodyModule().GetBroadphase().CreateVolume(element);\n            }\n\n            if (recomputeInertia)\n                MyPhysicsUtils.ComputeIntertiaTensor(this);\n            return true;\n        }\n\n        /// <summary>\n        /// Removes element to the rigid body, you have to specify if you want to compute the inertia tensor, yes in case you will not remove another one or change mass\n        /// </summary>\n        public void RemoveElement(MyRBElement element, bool recomputeInertia)\n        {\n            MyPhysicsObjects physobj = MyPhysics.physicsSystem.GetPhysicsObjects();\n\n            for (int i = 0; i < m_RBElementList.Count; i++)\n            {\n                if (m_RBElementList[i] == element)\n                {\n                    element.SetRigidBody(null);\n                    physobj.RemoveRBElement(element);\n                    m_RBElementList.RemoveAt(i);\n                    break;\n                }\n            }\n\n            if ((m_Flags & RigidBodyFlag.RBF_INSERTED) > 0)\n            {\n                MyPhysics.physicsSystem.GetRigidBodyModule().GetBroadphase().DestroyVolume(element);\n\n            }\n\n            if (recomputeInertia && m_RBElementList.Count > 0)\n                MyPhysicsUtils.ComputeIntertiaTensor(this);\n        }\n\n        public void RemoveAllElements()\n        {\n            MyPhysicsObjects physobj = MyPhysics.physicsSystem.GetPhysicsObjects();\n\n            for (int i = m_RBElementList.Count - 1; i >= 0; i--)\n            {\n                if ((m_Flags & RigidBodyFlag.RBF_INSERTED) > 0)\n                {\n                    MyPhysics.physicsSystem.GetRigidBodyModule().GetBroadphase().DestroyVolume(m_RBElementList[i]);\n                }\n\n                m_RBElementList[i].SetRigidBody(null);\n                physobj.RemoveRBElement(m_RBElementList[i]);\n                m_RBElementList.RemoveAt(i);\n            }\n        }\n\n        public List<MyRBElement> GetRBElementList() { return m_RBElementList; }\n\n        public IMyNotifyContact NotifyContactHandler { get { return this.m_ContactEvent; } set { this.m_ContactEvent = value; } }\n\n        //public MyRigidBodyEvent RigidBodyEventHandler { get { return this.m_RigidBodyEvent; } set { this.m_RigidBodyEvent = value; }}\n\n        public IMyNotifyMotion NotifyMotionHandler { get { return this.m_MotionEvent; } set { this.m_MotionEvent = value; } }\n\n        public IMyContactModifyNotifications ContactModifyNotificationHandler { get { return m_ContactModify; } set { m_ContactModify = value; } }\n\n        #endregion\n\n        #region implementation\n\n        public void Clear()\n        {\n            m_Velocity = Vector3.Zero;\n            m_AngularVelocity = Vector3.Zero;\n        }\n\n        private void SetLinearVelocity(Vector3 vel)\n        {\n            MinerWars.AppCode.Game.Utils.MyUtils.AssertIsValid(vel);\n\n            if ((ReadFlag(RigidBodyFlag.RBF_KINEMATIC) && KinematicLinear) || ReadFlag(RigidBodyFlag.RBF_RBO_STATIC))\n            {\n                return;\n            }\n\n            if (MyMwcUtils.IsZero(m_Velocity - vel))\n                return;\n\n            m_Velocity = vel;\n            WakeUp();\n        }\n\n        private void SetAngularVelocity(Vector3 vel)\n        {\n            MinerWars.AppCode.Game.Utils.MyUtils.AssertIsValid(vel);\n\n            if (ReadFlag(RigidBodyFlag.RBF_KINEMATIC) || ReadFlag(RigidBodyFlag.RBF_RBO_STATIC))\n            {\n                return;\n            }\n\n            if (MyMwcUtils.IsZero(m_AngularVelocity - vel))\n                return;\n\n            m_AngularVelocity = vel;\n            WakeUp();\n        }\n\n        private void SetInitialFlags(RigidBodyFlag flags)\n        {\n            m_Flags = flags;\n        }\n\n        /// <summary>\n        /// Internal set, calculation of kinematic speed is handled in public property set.\n        /// </summary>\n        /// <param name=\"matrix\">The matrix.</param>\n        internal void SetMatrix(Matrix matrix)\n        {\n            m_Matrix = matrix;\n\n            foreach (var el in GetRBElementList())\n            {\n                el.Flags |= MyElementFlag.EF_AABB_DIRTY;\n                MyPhysics.physicsSystem.GetRigidBodyModule().GetBroadphase().MoveVolumeFast(el);\n            }\n\n            if (IsStatic()) //We dont want to update static object (performance)\n            {\n                return;\n            }\n\n            m_Flags |= RigidBodyFlag.RBF_DIRTY;\n            WakeUp();\n        }\n\n        /*\n        private void SetPosition(Vector3 pos)\n        {\n            if (ReadFlag(RigidBodyFlag.RBF_KINEMATIC))\n            {\n                m_Velocity = (pos - m_Matrix.Translation) / (MyPhysics.physicsSystem.GetRigidBodyModule().CurrentTimeStep);\n            }\n\n            m_Matrix.Translation = pos;\n            m_Flags |= RigidBodyFlag.RBF_DIRTY;\n            WakeUp();\n        } */\n\n        public void GetLocalPointVelocity(ref Vector3 relPos, out Vector3 result)\n        {\n            result.X = m_Velocity.X + m_AngularVelocity.Y * relPos.Z - m_AngularVelocity.Z * relPos.Y;\n            result.Y = m_Velocity.Y + m_AngularVelocity.Z * relPos.X - m_AngularVelocity.X * relPos.Z;\n            result.Z = m_Velocity.Z + m_AngularVelocity.X * relPos.Y - m_AngularVelocity.Y * relPos.X;\n        }\n\n        public void GetGlobalPointVelocity(ref Vector3 globalPos, out Vector3 result)\n        {\n            Vector3 relPos = globalPos - m_Matrix.Translation;\n            result.X = m_Velocity.X + m_AngularVelocity.Y * relPos.Z - m_AngularVelocity.Z * relPos.Y;\n            result.Y = m_Velocity.Y + m_AngularVelocity.Z * relPos.X - m_AngularVelocity.X * relPos.Z;\n            result.Z = m_Velocity.Z + m_AngularVelocity.X * relPos.Y - m_AngularVelocity.Y * relPos.X;\n        }\n\n\n        public void SetGroupMask(MyGroupMask grMask)\n        {\n            for (int i = 0; i < m_RBElementList.Count; i++)\n            {\n                m_RBElementList[i].GroupMask = grMask;\n            }\n        }\n\n        /// <summary>\n        /// Updates velocity from external accel and gravitation \n        /// </summary>=\n        public void UpdateVelocity(float dt)\n        {\n            // apply directional gravity\n            m_ExternalLinearAcceleration += MyPhysics.physicsSystem.Gravitation * dt;\n\n            // apply point gravity\n            Vector3 accelerationFromPoints = Vector3.Zero;\n            foreach (var gravityPoint in MyPhysics.physicsSystem.GravitationPoints)\n            {\n                float distance = Vector3.Distance(Position, gravityPoint.Item1.Center);\n                float power = MathHelper.Clamp(1 - distance / gravityPoint.Item1.Radius, 0, 1);\n                Vector3 dirToCenter = Vector3.Normalize(gravityPoint.Item1.Center - Position);\n                accelerationFromPoints += dirToCenter * power * gravityPoint.Item2;\n            }\n\n            m_ExternalLinearAcceleration += accelerationFromPoints * dt;\n\n\n            m_Velocity += m_ExternalLinearAcceleration * dt;\n\n            m_AngularVelocity += m_ExternalAngularAcceleration * dt;\n\n            if (m_MaxAngularVelocity > 0.0f && m_AngularVelocity.Length() > m_MaxAngularVelocity)\n            {\n                m_AngularVelocity = MyMwcUtils.Normalize(m_AngularVelocity);\n                m_AngularVelocity *= m_MaxAngularVelocity;\n            }\n\n            if (m_MaxLinearVelocity > 0.0f && m_Velocity.Length() > m_MaxLinearVelocity)\n            {\n                m_Velocity = MyMwcUtils.Normalize(m_Velocity);\n                m_Velocity *= m_MaxLinearVelocity;\n            }\n\n        }\n\n\n        static readonly float SleepAngularVelocityThreshold = new Vector3(2.0f).LengthSquared();\n        /// <summary>\n        /// Applies damping to reduce speeds\n        /// </summary>=\n        public void ApplyDamping(float dt)\n        {\n            float ne = GetKineticEnergy() * m_OneOverMass;\n            float ld = (1.0f - m_LinearDamping);\n            float ad = (1.0f - m_AngularDamping);\n\n            if ((ne >= m_SleepEnergyThreshold || ne > m_LastKineticEnergy) || AngularVelocity.LengthSquared() > SleepAngularVelocityThreshold)\n            {\n                m_DeactivationTimer += dt;\n                m_DeactivationTimer = m_DeactivationTimer < GLOBAL_DEACTIVATION_TIMER ? m_DeactivationTimer : GLOBAL_DEACTIVATION_TIMER;\n            }\n            else\n            {\n                m_DeactivationTimer -= dt;\n                m_DeactivationTimer = m_DeactivationTimer < 0.0f ? 0.0f : m_DeactivationTimer;\n\n                /*  Do we really need this, when default AD is set?\n\t\t\t    //Extra damping\n\t\t\t    float d = m_DeactivationTimer / GLOBAL_DEACTIVATION_TIMER;\n\t\t\t    d = d < 0.01 ? 0.01f : d;\n\n\t\t\t    //Damping\n\t\t\t    float d2 = d*d;\n\n\t\t\t    ld = ld * d2;\n\t\t\t    ad = ad * d2;*/\n            }\n\n            m_Velocity = m_Velocity * (float)Math.Pow(ld, dt);\n            m_AngularVelocity = m_AngularVelocity * (float)Math.Pow(ad, dt);\n            MinerWars.AppCode.Game.Utils.MyUtils.AssertIsValid(m_AngularVelocity);\n\n            m_LastKineticEnergy = ne;\n\n            if (m_AngularVelocity.LengthSquared() < (0.001f * 0.001f))\n                m_AngularVelocity = Vector3.Zero;\n\n            if (m_Velocity.LengthSquared() < (0.02f * 0.02f))\n                m_Velocity = Vector3.Zero;\n        }\n\n        /// <summary>\n        /// Updates matrix from velocities used by old solver\n        /// </summary>=\n        public void UpdateMatrix(float dt)\n        {\n            m_LinearAcceleration = Vector3.Zero;\n            m_AngularAcceleration = Vector3.Zero;\n\n            m_ExternalAngularAcceleration = Vector3.Zero;\n            m_ExternalLinearAcceleration = Vector3.Zero;\n\n            Vector3 translation = m_Matrix.Translation + m_Velocity * dt;\n\n            m_Matrix.Translation = Vector3.Zero;\n\n            Vector3 dir = AngularVelocity;\n            float ang = dir.Length();\n\n            if (ang > 0.0f)\n            {\n                Vector3.Divide(ref dir, ang, out dir);  // dir /= ang;\n                ang *= dt;\n                Matrix rot;\n                Matrix.CreateFromAxisAngle(ref dir, ang, out rot);\n                Matrix.Multiply(ref m_Matrix, ref rot, out m_Matrix);\n            }\n\n            MyPhysicsUtils.Orthonormalise(ref m_Matrix);\n\n            m_Matrix.Translation = translation;\n\n            m_LinearAcceleration = Vector3.Zero;\n            m_AngularAcceleration = Vector3.Zero;\n        }\n\n        public float GetKineticEnergy()\n        {\n            if (IsStatic())\n                return 0.0f;\n\n            float le = m_Velocity.LengthSquared() * m_Mass;\n            Matrix tempM = m_Matrix;\n            tempM.Translation = Vector3.Zero;\n\n            Matrix tempM2 = tempM;\n            tempM = MinerWarsMath.Matrix.Transpose(tempM);\n            tempM = tempM * m_InvertInertiaTensor * tempM2;\n            Vector3 angV = Vector3.Transform(m_AngularVelocity, tempM);\n            float ae = Vector3.Dot(m_AngularVelocity, angV);\n\n            return (le + ae) * 0.5f;\n        }\n\n        /// <summary>\n        /// Checks if rigid can or cannot be deactivated\n        /// </summary>=\n        public bool CanDeactivate()\n        {\n            if (IsStatic())\n                return true;\n\n            if (m_DeactivationTimer <= 0.0f)\n                return true;\n            else\n                return false;\n        }\n\n        #endregion\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Physics/Dynamics/MyRigidBodyDefs.cs",
    "content": "﻿#region Using Statements\nusing System;\n#endregion\n\nnamespace MinerWars.AppCode.Physics\n{\n    //////////////////////////////////////////////////////////////////////////\n    [Flags]\n    public enum RigidBodyFlag\n    {\n        RBF_DEFAULT                             = (0), // Default flag\n\t    RBF_KINEMATIC\t\t                    = (1 << 1), //< Rigid body is kinematic (has to be updated (matrix) per frame, velocity etc is then computed..)\n\t    RBF_RBO_STATIC                          = (1 << 2), //< Rigid body is static\n\t    RBF_DISABLED                            = (1 << 3), //< Rigid body is collisions are deactivated and rbo is set active false\n\t    RBF_DISABLE_COLLISION_RESPONCE          = (1 << 6), //< Rigid body has no collision response\n        RBF_INSERTED                            = (1 << 15), //< Rigid body inserted and simulated\n        RBF_DIRTY                               = (1 << 16), //< Rigid body is dirty\n        RBF_ACTIVE = (1 << 17), //< Rigid body is active\n\n        /// <summary>\n        /// If this is false, sphere vs. voxel map collision detection is done using voxel values and not triangles (it is faster).\n        /// If true, it uses triangles.\n        /// </summary>\n        RBF_COLDET_THROUGH_VOXEL_TRIANGLES = (1 << 18),\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Physics/Dynamics/MyRigidBodyDesc.cs",
    "content": "﻿#region Using Statements\n\nusing System.Collections.Generic;\nusing MinerWarsMath;\n\n#endregion\n\nnamespace MinerWars.AppCode.Physics\n{\n    //////////////////////////////////////////////////////////////////////////\n    /// <summary>\n    /// Rigid body descriptor\n    /// </summary>\n    class MyRigidBodyDesc\n    {\n        #region members\n\n        public Matrix               m_Matrix;\n\n        public float                m_Mass;\n\n        public Vector3              m_CenterOfMass;\n\n        public RigidBodyFlag        m_Flags;\n\n        public ushort               m_Type;\n\n        public uint                 m_IterationCount;\n\n        public float                m_MaxAngularVelocity;\n        public float                m_MaxLinearVelocity;\n        public float                m_SleepEnergyThreshold;\n        public float                m_LinearDamping;\n        public float                m_AngularDamping;\n\n        #endregion\n\n        public MyRigidBodyDesc()\n        {\n            m_Type = 0;\n\n            m_Matrix = Matrix.Identity;\n\n            m_Mass = 1.0f;\n\n            m_CenterOfMass = Vector3.Zero;\n\n            m_Flags = 0;\n\n            m_IterationCount = MyPhysicsConfig.DefaultIterationCount;\n\n            m_MaxAngularVelocity = MyPhysicsConfig.DefaultMaxAngularVelocity;\n            m_MaxLinearVelocity = MyPhysicsConfig.DefaultMaxLinearVelocity;\n            m_SleepEnergyThreshold = MyPhysicsConfig.DefaultEnergySleepThreshold;\n            m_LinearDamping = MyPhysicsConfig.DefaultLinearDamping;\n            m_AngularDamping = MyPhysicsConfig.DefaultAngularDamping;\n        }\n\n        /// <summary>\n        /// default rigid body settings\n        /// </summary>\n        public void SetToDefault()\n        {\n            m_Matrix = Matrix.Identity;\n\n            m_Mass = 1.0f;\n\n            m_CenterOfMass = Vector3.Zero;\n\n            m_Flags = 0;\n\n            m_IterationCount = MyPhysicsConfig.DefaultIterationCount;\n\n            m_MaxAngularVelocity = MyPhysicsConfig.DefaultMaxAngularVelocity;\n            m_MaxLinearVelocity = MyPhysicsConfig.DefaultMaxLinearVelocity;\n            m_SleepEnergyThreshold = MyPhysicsConfig.DefaultEnergySleepThreshold;\n            m_LinearDamping = MyPhysicsConfig.DefaultLinearDamping;\n            m_AngularDamping = MyPhysicsConfig.DefaultAngularDamping;\n        }\n\n\n        /// <summary>\n        /// validity check\n        /// </summary>\n        public bool IsValid()\n        {\n            if(m_Type > 31)\n                return false;\n\n            if(((m_Flags & RigidBodyFlag.RBF_RBO_STATIC) == 0) && m_Mass <= 0.0f)\n                return false;\n\n            if(m_IterationCount == 0)\n                return false;\n\n            return true;\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Physics/Dynamics/MyRigidBodyEvent.cs",
    "content": "﻿#region Using Statements\n\n#endregion\n\nnamespace MinerWars.AppCode.Physics\n{\n    //////////////////////////////////////////////////////////////////////////\n\n    //abstract  class  MyRigidBodyEvent\n    //{\n    //   public virtual void OnActivated() {}\n    //   public virtual void OnDeactivated() {}\n\n    //   public MyRigidBody GetRigidBody() { return m_EventRbo; }\n\n       \n    //   private MyRigidBodyEvent(MyRigidBody rbo) { m_EventRbo = rbo; }\n    \n    //   private MyRigidBody m_EventRbo;\n    //};\n\n    //////////////////////////////////////////////////////////////////////////\n\n    /// <summary>\n    /// Provides notification on motion change by physics sustem.\n    /// </summary>\n    interface IMyNotifyMotion\n    {\n        /// <summary>\n        /// Called when [motion].\n        /// </summary>\n        /// <param name=\"rbo\">The rbo.</param>\n        /// <param name=\"step\">The step.</param>\n        void OnMotion(MyRigidBody rbo, float step);\n    };\n\n\n    delegate void MyRigidBodyEvent();\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Physics/Dynamics/MySensor.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing MinerWarsMath;\nusing SysUtils.Utils;\nusing MinerWars.CommonLIB.AppCode.Utils;\n\nnamespace MinerWars.AppCode.Physics\n{\n    /// <summary>\n    /// Sensor class used for rigid body enter/leave certain area\n    /// </summary>\n    class MySensor\n    {\n        #region members\n        private Matrix m_Matrix;\n        private MySensorElement m_Element;\n        private ushort m_Guid;\n        private bool m_Inserted;\n        public object m_UserData;\n        private IMySensorEventHandler m_SensorEventHandler;\n        private bool m_active;\n        private bool m_isMarkedForClose;\n\n        private static ushort GUID_COUNTER = 0;\n\n        public Dictionary<int, MySensorInteraction> m_Interactions;\n        #endregion\n\n        public MySensor()\n        {\n            m_UserData = null;\n\n            m_Element = null;\n\n            m_SensorEventHandler = null;\n\n            m_Matrix = new Matrix();\n\n            m_Inserted = false;\n\n            m_isMarkedForClose = false;\n\n            m_Interactions = new Dictionary<int, MySensorInteraction>(32);\n\n            m_Guid = GUID_COUNTER;\n            if (GUID_COUNTER == ushort.MaxValue)\n            {\n                GUID_COUNTER = 0;\n            }\n            GUID_COUNTER++;\n        }\n\n        /// <summary>\n        /// Loads descriptor of the sensor and initialize the sensor\n        /// </summary>\n        public bool LoadFromDesc(MySensorDesc desc)\n        {\n            if (m_Inserted)\n            {\n                return false;\n            }\n\n            if(!desc.IsValid())\n                return false;\n            \n            m_Matrix = desc.m_Matrix;\n            m_Element = desc.m_Element;\n\n            m_Element.Sensor = this;\n\n            m_SensorEventHandler = desc.m_SensorEventHandler;\n            MyCommonDebugUtils.AssertDebug(m_Interactions.Count == 0);\n            m_Interactions.Clear();\n\n            m_Guid = GUID_COUNTER;\n            if (GUID_COUNTER > ushort.MaxValue)\n            {\n                GUID_COUNTER = 0;\n            }\n\n            GUID_COUNTER++;\n\n            return true;\n        }\n\n        public void MarkForClose() \n        {\n            m_isMarkedForClose = true;\n        }\n\n        public bool IsMarkedForClose() \n        {\n            return m_isMarkedForClose;\n        }\n\n        public void Close() \n        {\n            MyCommonDebugUtils.AssertDebug(m_isMarkedForClose);\n            MyCommonDebugUtils.AssertDebug(m_Interactions.Count == 0);                        \n\n            if (m_Element != null) \n            {\n                m_Element.Close();\n                m_Element = null;\n            }\n\n            m_SensorEventHandler = null;\n\n            m_Interactions.Clear();\n            m_Interactions = null;\n\n            m_UserData = null;\n        }\n\n        public Matrix Matrix { get { return this.m_Matrix; } set { SetMatrix(value); } }\n\n        /// <summary>\n        /// checks if sensor is inserted - simulated\n        /// </summary>\n        public bool Inserted { get { return m_Inserted; } set { m_Inserted = value; } }\n\n        public bool Active \n        { \n            get \n            { \n                return m_active; \n            } \n            set \n            {\n                bool changed = m_active != value;\n                m_active = value;\n                if (changed) \n                {\n                    if (m_active)\n                    {\n                        MyPhysics.physicsSystem.GetSensorModule().ActiveSensors.Add(this);\n                    }\n                    else \n                    {\n                        MyPhysics.physicsSystem.GetSensorModule().ActiveSensors.Remove(this);\n                    }\n                }\n            } \n        }\n\n        /// <summary>\n        /// returns element of the sensor which specifies the shape of the sensor\n        /// </summary>\n        public MySensorElement GetElement() { return m_Element; }\n\n        /// <summary>\n        /// notification handler for the enter/leave events\n        /// </summary>\n        public IMySensorEventHandler GetHandler() { return m_SensorEventHandler; }\n\n        public int GUID \n        {\n            get { return m_Guid; }\n        }\n\n        private void SetMatrix(Matrix matr)\n        {\n            bool activateSensor = matr.Translation != m_Matrix.Translation;\n            m_Matrix = matr;\n            MyPhysics.physicsSystem.GetSensorModule().MoveSensor(this, activateSensor);\n        }\n\n        public void PrepareSensorInteractions() \n        {\n            foreach (var dv in m_Interactions)\n            {\n                MySensorInteraction si = dv.Value;\n                if (Active ||\n                    //si.m_RBElement.GetRigidBody() == null || \n                    si.m_RBElement.GetRigidBody() != null &&\n                    (si.m_RBElement.GetRigidBody().ReadFlag(RigidBodyFlag.RBF_ACTIVE) || !si.m_RBElement.GetRigidBody().ReadFlag(RigidBodyFlag.RBF_INSERTED)))\n                {\n                    si.m_IsInside = false;\n                }                \n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Physics/Dynamics/MySensorDesc.cs",
    "content": "﻿#region Using Statements\n\nusing System.Collections.Generic;\nusing MinerWarsMath;\n\n#endregion\n\nnamespace MinerWars.AppCode.Physics\n{\n    /// <summary>\n    /// description class for sensor\n    /// </summary>\n    class MySensorDesc\n    {\n        #region members\n\n        public Matrix m_Matrix;\n        public MySensorElement m_Element;\n        public IMySensorEventHandler m_SensorEventHandler;\n\n        #endregion\n\n        public MySensorDesc()\n        {\n            m_Matrix = Matrix.Identity;\n            m_SensorEventHandler = null;\n            m_Element = null;\n        }\n\n        /// <summary>\n        /// default settings\n        /// </summary>\n        public void SetToDefault()\n        {\n            m_Matrix = Matrix.Identity;\n            m_SensorEventHandler = null;\n        }\n\n        /// <summary>\n        /// validity check for the descriptor\n        /// </summary>\n        public bool IsValid()\n        {\n            if (m_Element == null)\n            {\n                return false;\n            }\n\n            // without event handler it does not make sense to create the sensor\n            if (m_SensorEventHandler == null)\n            {\n                return false;\n            }\n\n            return true;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Physics/Dynamics/MySensorEventHandler.cs",
    "content": "﻿#region Using Statements\n\nusing MinerWarsMath;\n\n#endregion\n\nnamespace MinerWars.AppCode.Physics\n{\n    /// <summary>\n    /// Provides notifications about sensor events from physic subsystem.\n    /// </summary>\n    interface IMySensorEventHandler     \n    {\n        /// <summary>\n        /// Called when rigid body enters sensor.\n        /// </summary>\n        /// <param name=\"rbo\">Rigid body that entered.</param>\n        void OnEnter(MySensor sensor,MyRigidBody rbo, MyRBElement rbElement);\n\n        /// <summary>\n        /// Called when rigid body leaves sensor.\n        /// </summary>\n        /// <param name=\"rbo\">Rigid body that left.</param>\n        void OnLeave(MySensor sensor,MyRigidBody rbo, MyRBElement rbElement);\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Physics/Utils/MyBoundingBoxHelper.cs",
    "content": "﻿using MinerWarsMath;\nusing MinerWars.AppCode.Game.Utils;\nusing System;\n\n/// <summary>\n/// helper class for bounding box\n/// </summary>\nclass BoundingBoxHelper\n{\n    static public BoundingBox InitialBox = new BoundingBox(new Vector3(float.PositiveInfinity), new Vector3(float.NegativeInfinity));\n\n    //  IMPORTANT: Bounding box you are trying to change need to have positive/negative infinite values, so initialize it with InitialBox (static member)\n    static public void AddPoint(ref Vector3 pos, ref BoundingBox bb)\n    {\n        Vector3.Min(ref bb.Min, ref pos, out bb.Min);\n        Vector3.Max(ref bb.Max, ref pos, out bb.Max);\n    }\n\n    //  IMPORTANT: Bounding box you are trying to change need to have positive/negative infinite values, so initialize it with InitialBox (static member)\n    static public void AddLine(ref MyLine line, ref BoundingBox bb)\n    {\n        //AddPoint(ref line.From, ref bb);\n        //AddPoint(ref line.To, ref bb);\n        Vector3.Min(ref bb.Min, ref line.From, out bb.Min);\n        Vector3.Max(ref bb.Max, ref line.From, out bb.Max);\n        Vector3.Min(ref bb.Min, ref line.To, out bb.Min);\n        Vector3.Max(ref bb.Max, ref line.To, out bb.Max);\n    }\n\n    //  Adds three vertexes of a triangleVertexes into bounding box, changing its min/max values\n    //  This method can be used for creating bounding box for a triangleVertexes\n    //  IMPORTANT: Bounding box you are trying to change need to have positive/negative infinite values, so initialize it with InitialBox (static member)\n    static public void AddTriangle(ref BoundingBox bb, ref Vector3 vertex0, ref Vector3 vertex1, ref Vector3 vertex2)\n    {\n        Vector3.Min(ref bb.Min, ref vertex0, out bb.Min);\n        Vector3.Max(ref bb.Max, ref vertex0, out bb.Max);\n        Vector3.Min(ref bb.Min, ref vertex1, out bb.Min);\n        Vector3.Max(ref bb.Max, ref vertex1, out bb.Max);\n        Vector3.Min(ref bb.Min, ref vertex2, out bb.Min);\n        Vector3.Max(ref bb.Max, ref vertex2, out bb.Max);\n    }\n\n    //  Adds three vertexes of a triangleVertexes into bounding box, changing its min/max values\n    //  This method can be used for creating bounding box for a triangleVertexes\n    //  IMPORTANT: Bounding box you are trying to change need to have positive/negative infinite values, so initialize it with InitialBox (static member)\n    static public void AddTriangle(ref BoundingBox bb, Vector3 vertex0, Vector3 vertex1, Vector3 vertex2)\n    {\n        bb.Min = Vector3.Min(bb.Min, vertex0);\n        bb.Max = Vector3.Max(bb.Max, vertex0);\n        bb.Min = Vector3.Min(bb.Min, vertex1);\n        bb.Max = Vector3.Max(bb.Max, vertex1);\n        bb.Min = Vector3.Min(bb.Min, vertex2);\n        bb.Max = Vector3.Max(bb.Max, vertex2);\n    }\n\n    //  IMPORTANT: Bounding box you are trying to change need to have positive/negative infinite values, so initialize it with InitialBox (static member)\n    static public void AddPoint(Vector3 pos, ref BoundingBox bb)\n    {\n        Vector3.Min(ref bb.Min, ref pos, out bb.Min);\n        Vector3.Max(ref bb.Max, ref pos, out bb.Max);\n    }\n\n    [ThreadStatic]\n    static Vector3[] pts = new Vector3[8];\n\n    //  IMPORTANT: Bounding box you are trying to change need to have positive/negative infinite values, so initialize it with InitialBox (static member)\n    static public void AddFrustum(ref BoundingFrustum frustum, ref BoundingBox bb)\n    {\n        if (pts == null)\n            pts = new Vector3[8];\n\n        frustum.GetCorners(pts);\n\n        AddPoint(ref pts[0], ref bb);\n        AddPoint(ref pts[1], ref bb);\n        AddPoint(ref pts[2], ref bb);\n        AddPoint(ref pts[3], ref bb);\n        AddPoint(ref pts[4], ref bb);\n        AddPoint(ref pts[5], ref bb);\n        AddPoint(ref pts[6], ref bb);\n        AddPoint(ref pts[7], ref bb);\n    }\n\n    //  IMPORTANT: Bounding box you are trying to change need to have positive/negative infinite values, so initialize it with InitialBox (static member)\n    static public void AddBBox(BoundingBox bbox, ref BoundingBox bb)\n    {\n        bb.Min = Vector3.Min(bbox.Min, bb.Min);\n        bb.Max = Vector3.Max(bbox.Max, bb.Max);\n    }\n\n    //  IMPORTANT: Bounding box you are trying to change need to have positive/negative infinite values, so initialize it with InitialBox (static member)\n    //static public void AddSphere(MySphere sphere, ref BoundingBox bb)\n    //{\n    //    Vector3 radius = new Vector3(sphere.Radius);\n    //    Vector3 minSphere = sphere.Center;\n    //    Vector3 maxSphere = sphere.Center;\n\n    //    Vector3.Subtract(ref minSphere, ref radius, out minSphere);\n    //    Vector3.Add(ref maxSphere, ref radius, out maxSphere);\n\n    //    Vector3.Min(ref bb.Min, ref minSphere, out bb.Min);\n    //    Vector3.Max(ref bb.Max, ref maxSphere, out bb.Max);\n    //}\n\n    //  IMPORTANT: Bounding box you are trying to change need to have positive/negative infinite values, so initialize it with InitialBox (static member)\n    static public void AddSphere(MinerWarsMath.BoundingSphere sphere, ref BoundingBox bb)\n    {\n        Vector3 radius = new Vector3(sphere.Radius);\n        Vector3 minSphere = sphere.Center;\n        Vector3 maxSphere = sphere.Center;\n\n        Vector3.Subtract(ref minSphere, ref radius, out minSphere);\n        Vector3.Add(ref maxSphere, ref radius, out maxSphere);\n\n        Vector3.Min(ref bb.Min, ref minSphere, out bb.Min);\n        Vector3.Max(ref bb.Max, ref maxSphere, out bb.Max);\n    }\n\n    //  IMPORTANT: Bounding box you are trying to change need to have positive/negative infinite values, so initialize it with InitialBox (static member)\n    static public void AddSphere(ref MinerWarsMath.BoundingSphere sphere, ref BoundingBox bb)\n    {\n        Vector3 radius = new Vector3(sphere.Radius);\n        Vector3 minSphere = sphere.Center;\n        Vector3 maxSphere = sphere.Center;\n\n        Vector3.Subtract(ref minSphere, ref radius, out minSphere);\n        Vector3.Add(ref maxSphere, ref radius, out maxSphere);\n\n        Vector3.Min(ref bb.Min, ref minSphere, out bb.Min);\n        Vector3.Max(ref bb.Max, ref maxSphere, out bb.Max);\n    }\n\n\n    public static bool OverlapTest(ref BoundingBox box0, ref BoundingBox box1)\n    {\n        return ((box0.Min.Z >= box1.Max.Z) ||\n            (box0.Max.Z <= box1.Min.Z) ||\n            (box0.Min.Y >= box1.Max.Y) ||\n            (box0.Max.Y <= box1.Min.Y) ||\n            (box0.Min.X >= box1.Max.X) ||\n            (box0.Max.X <= box1.Min.X)) ? false : true;\n    }\n\n    public static bool OverlapTest(ref BoundingBox box0, ref BoundingBox box1, float tol)\n    {\n        return ((box0.Min.Z >= box1.Max.Z + tol) ||\n            (box0.Max.Z <= box1.Min.Z - tol) ||\n            (box0.Min.Y >= box1.Max.Y + tol) ||\n            (box0.Max.Y <= box1.Min.Y - tol) ||\n            (box0.Min.X >= box1.Max.X + tol) ||\n            (box0.Max.X <= box1.Min.X - tol)) ? false : true;\n    }\n\n\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Physics/Utils/MyDistance.cs",
    "content": "﻿#region Using Statements\n\nusing MinerWarsMath;\nusing MinerWars.AppCode.Game.Utils;\n\n#endregion\n\nnamespace MinerWars.AppCode.Physics\n{\n    /// <summary>\n    /// Computes distance for various shapes\n    /// </summary>\n    sealed class Distance\n    {\n        private Distance() { }\n\n        #region PointColDetVoxelTriangleDistanceSq\n        /// <summary>\n        /// point vs Voxel triangle distancesq\n        /// </summary>\n        public static float PointColDetVoxelTriangleDistanceSq(out float pfSParam, out float pfTParam, Vector3 rkPoint, MyColDetVoxelTriangle rkTri)\n        {\n            Vector3 kDiff = rkTri.Origin - rkPoint;\n            float fA00 = rkTri.Edge0.LengthSquared();\n            float fA01 = Vector3.Dot(rkTri.Edge0, rkTri.Edge1);\n            float fA11 = rkTri.Edge1.LengthSquared();\n            float fB0 = Vector3.Dot(kDiff, rkTri.Edge0);\n            float fB1 = Vector3.Dot(kDiff, rkTri.Edge1);\n            float fC = kDiff.LengthSquared();\n            float fDet = System.Math.Abs(fA00 * fA11 - fA01 * fA01);\n            float fS = fA01 * fB1 - fA11 * fB0;\n            float fT = fA01 * fB0 - fA00 * fB1;\n            float fSqrDist;\n\n            if (fS + fT <= fDet)\n            {\n                if (fS < 0.0f)\n                {\n                    if (fT < 0.0f)  // region 4\n                    {\n                        if (fB0 < 0.0f)\n                        {\n                            fT = 0.0f;\n                            if (-fB0 >= fA00)\n                            {\n                                fS = 1.0f;\n                                fSqrDist = fA00 + 2.0f * fB0 + fC;\n                            }\n                            else\n                            {\n                                fS = -fB0 / fA00;\n                                fSqrDist = fB0 * fS + fC;\n                            }\n                        }\n                        else\n                        {\n                            fS = 0.0f;\n                            if (fB1 >= 0.0f)\n                            {\n                                fT = 0.0f;\n                                fSqrDist = fC;\n                            }\n                            else if (-fB1 >= fA11)\n                            {\n                                fT = 1.0f;\n                                fSqrDist = fA11 + 2.0f * fB1 + fC;\n                            }\n                            else\n                            {\n                                fT = -fB1 / fA11;\n                                fSqrDist = fB1 * fT + fC;\n                            }\n                        }\n                    }\n                    else  // region 3\n                    {\n                        fS = 0.0f;\n                        if (fB1 >= 0.0f)\n                        {\n                            fT = 0.0f;\n                            fSqrDist = fC;\n                        }\n                        else if (-fB1 >= fA11)\n                        {\n                            fT = 1.0f;\n                            fSqrDist = fA11 + 2.0f * fB1 + fC;\n                        }\n                        else\n                        {\n                            fT = -fB1 / fA11;\n                            fSqrDist = fB1 * fT + fC;\n                        }\n                    }\n                }\n                else if (fT < 0.0f)  // region 5\n                {\n                    fT = 0.0f;\n                    if (fB0 >= 0.0f)\n                    {\n                        fS = 0.0f;\n                        fSqrDist = fC;\n                    }\n                    else if (-fB0 >= fA00)\n                    {\n                        fS = 1.0f;\n                        fSqrDist = fA00 + 2.0f * fB0 + fC;\n                    }\n                    else\n                    {\n                        fS = -fB0 / fA00;\n                        fSqrDist = fB0 * fS + fC;\n                    }\n                }\n                else  // region 0\n                {\n                    // minimum at interior point\n                    float fInvDet = 1.0f / fDet;\n                    fS *= fInvDet;\n                    fT *= fInvDet;\n                    fSqrDist = fS * (fA00 * fS + fA01 * fT + 2.0f * fB0) +\n                      fT * (fA01 * fS + fA11 * fT + 2.0f * fB1) + fC;\n                }\n            }\n            else\n            {\n                float fTmp0, fTmp1, fNumer, fDenom;\n\n                if (fS < 0.0f)  // region 2\n                {\n                    fTmp0 = fA01 + fB0;\n                    fTmp1 = fA11 + fB1;\n                    if (fTmp1 > fTmp0)\n                    {\n                        fNumer = fTmp1 - fTmp0;\n                        fDenom = fA00 - 2.0f * fA01 + fA11;\n                        if (fNumer >= fDenom)\n                        {\n                            fS = 1.0f;\n                            fT = 0.0f;\n                            fSqrDist = fA00 + 2.0f * fB0 + fC;\n                        }\n                        else\n                        {\n                            fS = fNumer / fDenom;\n                            fT = 1.0f - fS;\n                            fSqrDist = fS * (fA00 * fS + fA01 * fT + 2.0f * fB0) +\n                              fT * (fA01 * fS + fA11 * fT + 2.0f * fB1) + fC;\n                        }\n                    }\n                    else\n                    {\n                        fS = 0.0f;\n                        if (fTmp1 <= 0.0f)\n                        {\n                            fT = 1.0f;\n                            fSqrDist = fA11 + 2.0f * fB1 + fC;\n                        }\n                        else if (fB1 >= 0.0f)\n                        {\n                            fT = 0.0f;\n                            fSqrDist = fC;\n                        }\n                        else\n                        {\n                            fT = -fB1 / fA11;\n                            fSqrDist = fB1 * fT + fC;\n                        }\n                    }\n                }\n                else if (fT < 0.0f)  // region 6\n                {\n                    fTmp0 = fA01 + fB1;\n                    fTmp1 = fA00 + fB0;\n                    if (fTmp1 > fTmp0)\n                    {\n                        fNumer = fTmp1 - fTmp0;\n                        fDenom = fA00 - 2.0f * fA01 + fA11;\n                        if (fNumer >= fDenom)\n                        {\n                            fT = 1.0f;\n                            fS = 0.0f;\n                            fSqrDist = fA11 + 2.0f * fB1 + fC;\n                        }\n                        else\n                        {\n                            fT = fNumer / fDenom;\n                            fS = 1.0f - fT;\n                            fSqrDist = fS * (fA00 * fS + fA01 * fT + 2.0f * fB0) +\n                              fT * (fA01 * fS + fA11 * fT + 2.0f * fB1) + fC;\n                        }\n                    }\n                    else\n                    {\n                        fT = 0.0f;\n                        if (fTmp1 <= 0.0f)\n                        {\n                            fS = 1.0f;\n                            fSqrDist = fA00 + 2.0f * fB0 + fC;\n                        }\n                        else if (fB0 >= 0.0f)\n                        {\n                            fS = 0.0f;\n                            fSqrDist = fC;\n                        }\n                        else\n                        {\n                            fS = -fB0 / fA00;\n                            fSqrDist = fB0 * fS + fC;\n                        }\n                    }\n                }\n                else  // region 1\n                {\n                    fNumer = fA11 + fB1 - fA01 - fB0;\n                    if (fNumer <= 0.0f)\n                    {\n                        fS = 0.0f;\n                        fT = 1.0f;\n                        fSqrDist = fA11 + 2.0f * fB1 + fC;\n                    }\n                    else\n                    {\n                        fDenom = fA00 - 2.0f * fA01 + fA11;\n                        if (fNumer >= fDenom)\n                        {\n                            fS = 1.0f;\n                            fT = 0.0f;\n                            fSqrDist = fA00 + 2.0f * fB0 + fC;\n                        }\n                        else\n                        {\n                            fS = fNumer / fDenom;\n                            fT = 1.0f - fS;\n                            fSqrDist = fS * (fA00 * fS + fA01 * fT + 2.0f * fB0) +\n                              fT * (fA01 * fS + fA11 * fT + 2.0f * fB1) + fC;\n                        }\n                    }\n                }\n            }\n\n            pfSParam = fS;\n            pfTParam = fT;\n\n            return System.Math.Abs(fSqrDist);\n        }\n        #endregion\n\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Physics/Utils/MyElementHelper.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\n\nnamespace MinerWars.AppCode.Physics.Utils\n{\n    static class MyElementHelper\n    {\n        public static void GetClosestPointForBox(Vector3 size, Vector3 point, ref Vector3 closestPoint, ref Vector3 normal, ref bool penetration, ref uint customData)\n        {\n            closestPoint = point;\n            bool p = true;\n\n            Vector3 corner = size * 0.5f;\n\n            if (point.X < -corner.X)\n            {\n                closestPoint.X = -corner.X;\n                p = false;\n            }\n            else if (point.X > corner.X)\n            {\n                closestPoint.X = corner.X;\n                p = false;\n            }\n\n            if (point.Y < -corner.Y)\n            {\n                closestPoint.Y = -corner.Y;\n                p = false;\n            }\n            else if (point.Y > corner.Y)\n            {\n                closestPoint.Y = corner.Y;\n                p = false;\n            }\n\n            if (point.Z < -corner.Z)\n            {\n                closestPoint.Z = -corner.Z;\n                p = false;\n            }\n            else if (point.Z > corner.Z)\n            {\n                closestPoint.Z = corner.Z;\n                p = false;\n            }\n\n            if (p)\n            {\n                float pX = corner.X - System.Math.Abs(closestPoint.X);\n                float pY = corner.Y - System.Math.Abs(closestPoint.Y);\n                float pZ = corner.Z - System.Math.Abs(closestPoint.Z);\n                if (pX < pY)\n                {\n                    if (pX < pZ)\n                    {\n                        if (closestPoint.X > 0) closestPoint.X += pX;\n                        else closestPoint.X -= pX;\n                    }\n                    else\n                    {\n                        if (closestPoint.Z > 0) closestPoint.Z += pZ;\n                        else closestPoint.Z -= pZ;\n                    }\n                }\n                else\n                {\n                    if (pY < pZ)\n                    {\n                        if (closestPoint.Y > 0) closestPoint.Y += pY;\n                        else closestPoint.Y -= pY;\n                    }\n                    else\n                    {\n                        if (closestPoint.Z > 0) closestPoint.Z += pZ;\n                        else closestPoint.Z -= pZ;\n                    }\n                }\n            }\n\n            penetration = p;\n\n            if (p)\n                normal = closestPoint - point;\n            else\n                normal = point - closestPoint;\n        }\n\n        public static void GetClosestPointForSphere(float radius, Vector3 point, ref Vector3 closestPoint, ref Vector3 normal, ref bool penetration, ref uint customData)\n        {\n            float dist = point.Length();\n            penetration = (dist < radius);\n\n            //Handle case when point is in sphere origin\n            if (dist == 0)\n            {\n                normal.X = 1.0f;\n                normal.Y = 0.0f;\n                normal.Z = 0.0f;\n                closestPoint.X = radius;\n                closestPoint.Y = 0.0f;\n                closestPoint.Z = 0.0f;\n            }\n            else\n            {\n                float d = dist;\n                normal = point / d;\n                closestPoint = point * (radius / d);\n            }\n\n            customData = 0;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Physics/Utils/MyPhysUtils.cs",
    "content": "﻿#region Using Statements\n\nusing System;\nusing MinerWarsMath;\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils.Utils;\n\n#endregion\n\nnamespace MinerWars.AppCode.Physics\n{\n    //////////////////////////////////////////////////////////////////////////\n    /// <summary>\n    /// Utilities used in physics\n    /// </summary>\n\n    class MyPhysicsUtils\n    {\n        static MyPhysicsUtils()\n        {\n            m_zeroInertia = Matrix.Identity;\n            m_zeroInertia.M11 = 0.0f;\n            m_zeroInertia.M22 = 0.0f;\n            m_zeroInertia.M33 = 0.0f;\n            m_zeroInertia.M44 = 0.0f;\n        }\n\n        private static Matrix m_zeroInertia;\n\n        public static Matrix ZeroInertiaTensor\n        {\n            get { return m_zeroInertia; }\n        }\n\n        static public void BoundingBoxAddPoint(ref BoundingBox aabb, Vector3 point)\n        {\n            if (aabb.Max.X < point.X)\n                aabb.Max.X = point.X;\n\n            if (aabb.Max.Y < point.Y)\n                aabb.Max.Y = point.Y;\n\n            if (aabb.Max.Z < point.Z)\n                aabb.Max.Z = point.Z;\n\n            if (aabb.Min.X > point.X)\n                aabb.Min.X = point.X;\n\n            if (aabb.Min.Y > point.Y)\n                aabb.Min.Y = point.Y;\n\n            if (aabb.Min.Z > point.Z)\n                aabb.Min.Z = point.Z;\n        }\n\n        public static void NormalizeSafe(ref Vector3 vec)\n        {\n            float num0 = vec.X * vec.X + vec.Y * vec.Y + vec.Z * vec.Z;\n\n            if (num0 != 0.0f)\n            {\n                float num1 = 1.0f / (float)System.Math.Sqrt(num0);\n                vec.X *= num1; vec.Y *= num1; vec.Z *= num1;\n            }\n        }\n\n        public static float PointPointDistance(Vector3 pt1, Vector3 pt2)\n        {\n            float num3 = pt1.X - pt2.X;\n            float num2 = pt1.Y - pt2.Y;\n            float num0 = pt1.Z - pt2.Z;\n            float num4 = ((num3 * num3) + (num2 * num2)) + (num0 * num0);\n            return (float)System.Math.Sqrt((double)num4);\n        }\n\n        public static float Max(float a, float b, float c)\n        {\n            float abMax = a > b ? a : b;\n\n            return abMax > c ? abMax : c;\n        }\n\n        public static float Min(float a, float b, float c)\n        {\n            float abMin = a < b ? a : b;\n\n            return abMin < c ? abMin : c;\n        }\n\n        public static void Orthonormalise(ref Matrix matrix)\n        {\n            float u11 = matrix.M11; float u12 = matrix.M12; float u13 = matrix.M13;\n            float u21 = matrix.M21; float u22 = matrix.M22; float u23 = matrix.M23;\n            float u31 = matrix.M31; float u32 = matrix.M32; float u33 = matrix.M33;\n\n            float dot0, dot1;\n\n            // u1\n            float lengthSq0 = u11 * u11 + u12 * u12 + u13 * u13;\n            float length0 = (float)System.Math.Sqrt(lengthSq0);\n            u11 = u11 / length0;\n            u12 = u12 / length0;\n            u13 = u13 / length0;\n\n            // u2\n            dot0 = u11 * u21 + u12 * u22 + u13 * u23;\n            u21 = u21 - dot0 * u11 / lengthSq0;\n            u22 = u22 - dot0 * u12 / lengthSq0;\n            u23 = u23 - dot0 * u13 / lengthSq0;\n\n            float lengthSq1 = u21 * u21 + u22 * u22 + u23 * u23;\n            float length1 = (float)System.Math.Sqrt(lengthSq1);\n            u21 = u21 / length1;\n            u22 = u22 / length1;\n            u23 = u23 / length1;\n\n            // u3\n            dot0 = u11 * u31 + u12 * u32 + u13 * u33;\n            dot1 = u21 * u31 + u22 * u32 + u23 * u33;\n            u31 = u31 - dot0 * u11 / lengthSq0 - dot1 * u21 / lengthSq1;\n            u32 = u32 - dot0 * u12 / lengthSq0 - dot1 * u22 / lengthSq1;\n            u33 = u33 - dot0 * u13 / lengthSq0 - dot1 * u23 / lengthSq1;\n\n            lengthSq0 = u31 * u31 + u32 * u32 + u33 * u33;\n            length0 = (float)System.Math.Sqrt(lengthSq0);\n            u31 = u31 / length0;\n            u32 = u32 / length0;\n            u33 = u33 / length0;\n\n            matrix.M11 = u11; matrix.M12 = u12; matrix.M13 = u13;\n            matrix.M21 = u21; matrix.M22 = u22; matrix.M23 = u23;\n            matrix.M31 = u31; matrix.M32 = u32; matrix.M33 = u33;\n        }\n\n        public static float FLT_MAX = float.MaxValue;\n        public static float FLT_MIN = float.MinValue;\n        \n        /// <summary>\n        /// Computes the inertia tensor of a rigid body using box inertia definition\n        /// </summary>\n        public static void ComputeIntertiaTensor(MyRigidBody rbo)\n        {\n            MyCommonDebugUtils.AssertDebug(rbo != null);\n            MyCommonDebugUtils.AssertDebug(rbo.GetRBElementList().Count > 0);\n            MyCommonDebugUtils.AssertDebug(rbo.GetMass() > 0);\n\n            float mass = rbo.GetMass();\n\n            BoundingBox box;\n            box.Min = new Vector3(FLT_MAX);\n            box.Max = new Vector3(FLT_MIN);\n            BoundingBox aabb;\n\n            Matrix infTensor = new Matrix();\n            infTensor.M11 = FLT_MAX;\n            infTensor.M22 = FLT_MAX;\n            infTensor.M33 = FLT_MAX;\n            infTensor.M44 = 1.0f;\n            if(rbo.IsStatic())\n            {\n                rbo.InertiaTensor = infTensor;\n                return;\n            }\n\n            if (rbo.GetRBElementList().Count > 1)\n            {\n                for (int e = 0; e < rbo.GetRBElementList().Count; e++)\n                {\n                    MyRBElement el = rbo.GetRBElementList()[e];\n                    switch (el.GetElementType())\n                    {\n                        case MyRBElementType.ET_TRIANGLEMESH:\n                            {\n                                rbo.InertiaTensor = infTensor;\n                                return;\n                            }\n                            break;\n                        case MyRBElementType.ET_VOXEL:\n                            {\n                                rbo.InertiaTensor = infTensor;\n                                return;\n                            }\n                            break;\n                        default:\n                            {\n                                aabb = el.GetWorldSpaceAABB();\n                                box = BoundingBox.CreateMerged(box, aabb);\n                            }\n                            break;\n                    }\n                }\n\n                Vector3 size = box.Max - box.Min;\n\n                infTensor.M11 = mass * (size.Y * size.Y + size.Z * size.Z) / 12.0f;\n                infTensor.M22 = mass * (size.X * size.X + size.Z * size.Z) / 12.0f;\n                infTensor.M33 = mass * (size.X * size.X + size.Y * size.Y) / 12.0f;\n                infTensor.M44 = 1.0f;\n\n                rbo.InertiaTensor = infTensor;\n                rbo.InvertInertiaTensor = Matrix.Invert(infTensor);\n                return;\n            }\n\n            MyRBElement elem = rbo.GetRBElementList()[0];\n            switch (elem.GetElementType())\n            {\n                case MyRBElementType.ET_TRIANGLEMESH:\n                    {\n                        rbo.InertiaTensor = infTensor;\n                        infTensor.M11 = 0.0f;\n                        infTensor.M22 = 0.0f;\n                        infTensor.M33 = 0.0f;\n                        infTensor.M44 = 0.0f;\n                        rbo.InvertInertiaTensor = infTensor;\n                        return;\n                    }\n                    break;\n                case MyRBElementType.ET_VOXEL:\n                    {\n                        rbo.InertiaTensor = infTensor;\n                        infTensor.M11 = 0.0f;\n                        infTensor.M22 = 0.0f;\n                        infTensor.M33 = 0.0f;\n                        infTensor.M44 = 0.0f;\n                        rbo.InvertInertiaTensor = infTensor;\n                        return;\n                    }\n                case MyRBElementType.ET_SPHERE:\n                    {\n                        float radius = ((MyRBSphereElement)elem).Radius;\n\n                        infTensor.M11 = 2.0f / 5.0f * mass * radius * radius;\n                        infTensor.M22 = 2.0f / 5.0f * mass * radius * radius;\n                        infTensor.M33 = 2.0f / 5.0f * mass * radius * radius;\n                        infTensor.M44 = 1.0f;\n\n                        rbo.InertiaTensor = infTensor;\n                        //rbo.InvertInertiaTensor = Matrix.Invert(infTensor);\n                        return;\n                    }\n                    break;\n                case MyRBElementType.ET_BOX:\n                    {\n                        //Vector3 size = ((MyRBBoxElement)elem).Size;\n\n                        //infTensor.M11 = mass * (size.Y * size.Y + size.Z * size.Z) / 12.0f;\n                        //infTensor.M22 = mass * (size.X * size.X + size.Z * size.Z) / 12.0f;\n                        //infTensor.M33 = mass * (size.X * size.X + size.Y * size.Y) / 12.0f;\n                        //infTensor.M44 = 1.0f;\n\n                        //rbo.InertiaTensor = infTensor;\n                        //rbo.InvertInertiaTensor = Matrix.Invert(infTensor);\n\n                        // HACK: After speaking with PetrM, computing changed like box is sphere\n                        float radius = ((MyRBBoxElement)elem).Size.Length() / 2;\n\n                        infTensor.M11 = 2.0f / 5.0f * mass * radius * radius;\n                        infTensor.M22 = 2.0f / 5.0f * mass * radius * radius;\n                        infTensor.M33 = 2.0f / 5.0f * mass * radius * radius;\n                        infTensor.M44 = 1.0f;\n\n                        rbo.InertiaTensor = infTensor;\n                        //rbo.InvertInertiaTensor = Matrix.Invert(infTensor);\n                        return;\n                    }\n                    break;\n                default:\n                    MyCommonDebugUtils.AssertDebug(false);\n                    break;\n            }\n        }\n\n        public static Matrix GetSphereInertiaTensor(float radius, float mass)\n        {\n            Matrix inertiaTensor = new Matrix();\n\n            inertiaTensor.M11 = 2.0f / 5.0f * mass * radius * radius;\n            inertiaTensor.M22 = 2.0f / 5.0f * mass * radius * radius;\n            inertiaTensor.M33 = 2.0f / 5.0f * mass * radius * radius;\n            inertiaTensor.M44 = 1.0f;\n\n            return inertiaTensor;\n        }\n\n        /// <summary>\n        /// Unsafe class to access the vector and matrix index part\n        /// </summary>\n        public sealed class MyPhysicsUnsafe\n        {\n            public static unsafe float Get(ref Vector3 vec, int index)\n            {\n                fixed (Vector3* adr = &vec)\n                {\n                    return ((float*)adr)[index];\n                }\n            }\n\n            public static unsafe float Get(Vector3 vec, int index)\n            {\n                Vector3* adr = &vec;\n                return ((float*)adr)[index];\n            }\n\n            public static unsafe Vector3 Get(Matrix mat, int index)\n            {\n                float* adr = &mat.M11;\n                adr += index;\n                return ((Vector3*)adr)[index];\n            }\n\n            public static unsafe Vector3 Get(ref Matrix mat, int index)\n            {\n                fixed (float* adr = &mat.M11)\n                {\n                    return ((Vector3*)(adr + index))[index];\n                }\n            }\n\n            public static unsafe void Get(ref Matrix mat, int index, out Vector3 vec)\n            {\n                fixed (float* adr = &mat.M11)\n                {\n                    vec = ((Vector3*)(adr + index))[index];\n                }\n            }\n        }\n    }\n\n    //  This structure was created for avoiding an allocation of an array but with same indexing functionality (GC reasons)\n    public struct MyFloatArray3\n    {\n        private float m_float0;\n        private float m_float1;\n        private float m_float2;\n\n        public float this[int index]\n        {\n            get\n            {\n                AssertIndex(index);\n                return Get(index);\n            }\n            set\n            {\n                AssertIndex(index);\n                Set(index, value);\n            }\n        }\n\n        unsafe float Get(int index)\n        {\n            fixed (float* adr = &this.m_float0)\n            {\n                return ((float*)adr)[index];\n            }\n        }\n\n        unsafe void Set(int index, float value)\n        {\n            fixed (float* adr = &this.m_float0)\n            {\n                ((float*)adr)[index] = value;\n            }\n        }\n\n        static void AssertIndex(int index)\n        {\n            MyCommonDebugUtils.AssertDebug((index >= 0) && (index <= 2));\n        }\n    }\n\n    //  This structure was created for avoiding an allocation of an array but with same indexing functionality (GC reasons)\n    public struct MyFloatArray13\n    {\n        private float m_float0;\n        private float m_float1;\n        private float m_float2;\n        private float m_float3;\n        private float m_float4;\n        private float m_float5;\n        private float m_float6;\n        private float m_float7;\n        private float m_float8;\n        private float m_float9;\n        private float m_float10;\n        private float m_float11;\n        private float m_float12;\n\n        public float this[int index]\n        {\n            get\n            {\n                AssertIndex(index);\n                return Get(index);\n            }\n            set\n            {\n                AssertIndex(index);\n                Set(index, value);\n            }\n        }\n\n        unsafe float Get(int index)\n        {\n            fixed (float* adr = &this.m_float0)\n            {\n                return ((float*)adr)[index];\n            }\n        }\n\n        unsafe void Set(int index, float value)\n        {\n            fixed (float* adr = &this.m_float0)\n            {\n                ((float*)adr)[index] = value;\n            }\n        }\n\n        static void AssertIndex(int index)\n        {\n            MyCommonDebugUtils.AssertDebug((index >= 0) && (index <= 12));\n        }\n    }\n\n    //  This structure was created for avoiding an allocation of an array but with same indexing functionality (GC reasons)\n    public struct MyVector3Array13\n    {\n        private Vector3 m_vec0;\n        private Vector3 m_vec1;\n        private Vector3 m_vec2;\n        private Vector3 m_vec3;\n        private Vector3 m_vec4;\n        private Vector3 m_vec5;\n        private Vector3 m_vec6;\n        private Vector3 m_vec7;\n        private Vector3 m_vec8;\n        private Vector3 m_vec9;\n        private Vector3 m_vec10;\n        private Vector3 m_vec11;\n        private Vector3 m_vec12;\n\n        public Vector3 this[int index]\n        {\n            get\n            {\n                AssertIndex(index);\n                return Get(index);\n            }\n            set\n            {\n                AssertIndex(index);\n                Set(index, value);\n            }\n        }\n\n        unsafe Vector3 Get(int index)\n        {\n            fixed (Vector3* adr = &this.m_vec0)\n            {\n                return ((Vector3*)adr)[index];\n            }\n        }\n\n        unsafe void Set(int index, Vector3 value)\n        {\n            fixed (Vector3* adr = &this.m_vec0)\n            {\n                ((Vector3*)adr)[index] = value;\n            }\n        }\n\n        static void AssertIndex(int index)\n        {\n            MyCommonDebugUtils.AssertDebug((index >= 0) && (index <= 12));\n        }\n    }\n\n    //  This structure was created for avoiding an allocation of an array but with same indexing functionality (GC reasons)\n    public struct MyVector3Array3\n    {\n        private Vector3 m_vec0;\n        private Vector3 m_vec1;\n        private Vector3 m_vec2;\n\n        public Vector3 this[int index]\n        {\n            get\n            {\n                AssertIndex(index);\n                return Get(index);\n            }\n            set\n            {\n                AssertIndex(index);\n                Set(index, value);\n            }\n        }\n\n        unsafe Vector3 Get(int index)\n        {\n            fixed (Vector3* adr = &this.m_vec0)\n            {\n                return ((Vector3*)adr)[index];\n            }\n        }\n\n        unsafe void Set(int index, Vector3 value)\n        {\n            fixed (Vector3* adr = &this.m_vec0)\n            {\n                ((Vector3*)adr)[index] = value;\n            }\n        }\n\n        static void AssertIndex(int index)\n        {\n            MyCommonDebugUtils.AssertDebug((index >= 0) && (index <= 2));\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Physics/Utils/MyRingBuffer.cs",
    "content": "﻿#region Using Statements\n\nusing MinerWars.CommonLIB.AppCode.Utils;\nusing SysUtils.Utils;\n\n#endregion\n\nnamespace MinerWars.AppCode.Physics\n{\n    //////////////////////////////////////////////////////////////////////////\n    /// <summary>\n    /// Ring buffer    \n    /// </summary>\n    class MyRingBuffer<T>\n    {\n\t    public MyRingBuffer( uint size ) \n\t    {\n            MyCommonDebugUtils.AssertDebug((size & (size - 1)) == 0);\n\n          \tm_Capacity = size;\n\t        m_Get = 0;\n\t        m_Put = 0;\n            \n\t        m_Buffer = new T[size];\n\t    }\n\n        public uint Size()\n\t    {\n\t\t    return ( m_Put - m_Get ) & ( m_Capacity - 1 );\n\t    }\n\n\t    public uint GetCapacity()\n\t    {\n\t\t    return m_Capacity;\n\t    }\n\n\t    public bool Put(T item )\n\t    {\n\t\t    if ( Inc(m_Put) == m_Get ) \n\t\t\t    return false;\n\n\t\t    m_Buffer[m_Put] = item;\n\t\t    m_Put = Inc(m_Put);\n\n\t\t    return true;\n\t    }\n\n        public T Bottom()\n\t    {\n            MyCommonDebugUtils.AssertDebug(m_Put != m_Get);\n\t\t    return m_Buffer[m_Get];\n\t    }\n\n\t    public T Pop()\n\t    {\n\t\t    if ( m_Put == m_Get )\n\t\t\t    return default(T);\n\n\t\t    uint\tget\t= m_Get;\n\n\t\t    m_Get\t\t\t\t\t\t= Inc(m_Get);\n\n\t\t    return m_Buffer[get];\n\t    }\n\n        public bool CanPut()\n\t    {\n\t\t    return Inc(m_Put) != m_Get;\n\t    }  \n  \n       \tpublic void Dispose()\n        {\n\t        MyCommonDebugUtils.AssertDebug( m_Get != m_Put );\t        \n\t        m_Get = Inc(m_Get);\n        }\n\n\t    private uint Inc( uint idx )\n\t    {\n\t\t    return (idx+1)&(m_Capacity-1);\n\t    }\n\n\t    private uint    m_Capacity;\n\t    private uint    m_Get;\n\t    private uint    m_Put;\n\t    private T[]     m_Buffer;\n    };\n\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Physics/Utils/MySegment.cs",
    "content": "﻿using MinerWarsMath;\n\n\n#region public struct Segment\n/// <summary>\n/// A Segment is a line that starts at origin and goes only as far as\n/// (origin + delta).\n/// </summary>\npublic struct MySegment\n{\n    public Vector3 Origin;\n    public Vector3 Delta;\n\n    public MySegment(Vector3 origin, Vector3 delta)\n    {\n        this.Origin = origin;\n        this.Delta = delta;\n    }\n\n    public void GetPoint(float t, out Vector3 point)\n    {\n        point = new Vector3(\n            t * Delta.X,\n            t * Delta.Y,\n            t * Delta.Z);\n\n        point.X += Origin.X;\n        point.Y += Origin.Y;\n        point.Z += Origin.Z;\n    }\n\n    public Vector3 GetPoint(float t)\n    {\n        Vector3 result = new Vector3(\n            t * Delta.X,\n            t * Delta.Y,\n            t * Delta.Z);\n\n        result.X += Origin.X;\n        result.Y += Origin.Y;\n        result.Z += Origin.Z;\n\n        return result;\n    }\n\n    public Vector3 GetEnd()\n    {\n        return new Vector3(\n            Delta.X + Origin.X,\n            Delta.Y + Origin.Y,\n            Delta.Z + Origin.Z);\n        //return Origin + Delta;\n    }\n\n}\n#endregion"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Physics/Utils/MyTransform.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWarsMath;\n\nnamespace MinerWars.AppCode.Physics\n{\n    #region public struct Transform\n\n    /// <summary>\n    /// Transform stroing the orientation and position.\n    /// </summary>\n    public struct MyTransform\n    {\n\n        public Vector3 Position;\n        public Matrix Orientation;\n\n        public static MyTransform Identity\n        {\n            get { return new MyTransform(Vector3.Zero, Matrix.Identity); }\n        }\n\n        public MyTransform(Vector3 position, Matrix orientation)\n        {\n            this.Position = position;\n            this.Orientation = orientation;\n        }\n\n        public void ApplyTransformRate(ref TransformRate rate, float dt)\n        {\n            //m_initialSunWindPosition += dt * rate.Velocity;\n            Vector3 pos;\n            Vector3.Multiply(ref rate.Velocity, dt, out pos);\n            Vector3.Add(ref Position, ref pos, out Position);\n\n            Vector3 dir = rate.AngularVelocity;\n            float ang = dir.Length();\n\n            if (ang > 0.0f)\n            {\n                Vector3.Divide(ref dir, ang, out dir);  // dir /= ang;\n                ang *= dt;\n                Matrix rot;\n                Matrix.CreateFromAxisAngle(ref dir, ang, out rot);\n                Matrix.Multiply(ref Orientation, ref rot, out Orientation);\n            }\n\n            //JiggleMath.Orthonormalise(ref this.Orientation);\n        }\n\n        public void ApplyTransformRate(TransformRate rate, float dt)\n        {\n            //m_initialSunWindPosition += dt * rate.Velocity;\n            Vector3 pos;\n            Vector3.Multiply(ref rate.Velocity, dt, out pos);\n            Vector3.Add(ref Position, ref pos, out Position);\n\n            Vector3 dir = rate.AngularVelocity;\n            float ang = dir.Length();\n\n            if (ang > 0.0f)\n            {\n                Vector3.Divide(ref dir, ang, out dir);  // dir /= ang;\n                ang *= dt;\n                Matrix rot;\n                Matrix.CreateFromAxisAngle(ref dir, ang, out rot);\n                Matrix.Multiply(ref Orientation, ref rot, out Orientation);\n            }\n\n            //  JiggleMath.Orthonormalise(ref this.Orientation);\n        }\n\n\n        public static MyTransform operator *(MyTransform lhs, MyTransform rhs)\n        {\n            MyTransform result;\n            MyTransform.Multiply(ref lhs, ref rhs, out result);\n            return result;\n        }\n\n        public static MyTransform Multiply(MyTransform lhs, MyTransform rhs)\n        {\n            MyTransform result = new MyTransform();\n            Matrix.Multiply(ref rhs.Orientation, ref lhs.Orientation, out result.Orientation);\n            //result.Orientation = rhs.Orientation * lhs.Orientation;\n            Vector3.Transform(ref rhs.Position, ref lhs.Orientation, out result.Position);\n            Vector3.Add(ref lhs.Position, ref result.Position, out result.Position);\n            //result.m_initialSunWindPosition = lhs.m_initialSunWindPosition + Vector3.Transform(rhs.m_initialSunWindPosition, lhs.Orientation);\n\n            return result;\n        }\n\n        public static void Multiply(ref MyTransform lhs, ref MyTransform rhs, out MyTransform result)\n        {\n            result = new MyTransform();\n\n            Matrix.Multiply(ref rhs.Orientation, ref lhs.Orientation, out result.Orientation);\n            //result.Orientation = rhs.Orientation * lhs.Orientation;\n            Vector3.Transform(ref rhs.Position, ref lhs.Orientation, out result.Position);\n            Vector3.Add(ref lhs.Position, ref result.Position, out result.Position);\n            //result.m_initialSunWindPosition = lhs.m_initialSunWindPosition + Vector3.Transform(rhs.m_initialSunWindPosition, lhs.Orientation);\n        }\n\n    }\n\n    #endregion\n\n    #region public struct TransformRate\n\n    public struct TransformRate\n    {\n        public Vector3 Velocity;\n        public Vector3 AngularVelocity;\n\n        public TransformRate(Vector3 velocity, Vector3 angularVelocity)\n        {\n            this.Velocity = velocity;\n            this.AngularVelocity = angularVelocity;\n        }\n\n        public static TransformRate Zero { get { return new TransformRate(); } }\n\n        public static TransformRate Add(TransformRate rate1, TransformRate rate2)\n        {\n            TransformRate result = new TransformRate();\n            Vector3.Add(ref rate1.Velocity, ref rate2.Velocity, out result.Velocity);\n            Vector3.Add(ref rate1.AngularVelocity, ref rate2.AngularVelocity, out result.AngularVelocity);\n            return result;\n        }\n\n        public static void Add(ref TransformRate rate1, ref TransformRate rate2, out TransformRate result)\n        {\n            Vector3.Add(ref rate1.Velocity, ref rate2.Velocity, out result.Velocity);\n            Vector3.Add(ref rate1.AngularVelocity, ref rate2.AngularVelocity, out result.AngularVelocity);\n        }\n\n        //public static TransformRate operator +(TransformRate rate1, TransformRate rate2)\n        //{\n        //    return new TransformRate(rate1.Velocity + rate2.Velocity, rate1.AngularVelocity + rate2.AngularVelocity);\n        //}\n\n\n    }\n    #endregion\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Toolkit/DShow/DsBugWO.cs",
    "content": "/******************************************************\n                  DirectShow .NET\n\t\t      netmaster@swissonline.ch\n*******************************************************/\n//           WORKAROUND FOR DS BUGs\n\nusing System;\nusing System.Text;\nusing System.Runtime.InteropServices;\n\nnamespace DShowNET\n{\n\npublic class DsBugWO\n{\n\t/*\n\tworks:\n\t\tCoCreateInstance( CLSID_CaptureGraphBuilder2, ..., IID_ICaptureGraphBuilder2, ...);\n\tdoesn't (E_NOTIMPL):\n\t\tCoCreateInstance( CLSID_CaptureGraphBuilder2, ..., IID_IUnknown, ...);\n\tthus .NET 'Activator.CreateInstance' fails\n\t*/\n\n\tpublic static object CreateDsInstance( ref Guid clsid, ref Guid riid )\n\t{\n\t\tIntPtr ptrIf;\n\t\tint hr = CoCreateInstance( ref clsid, IntPtr.Zero, CLSCTX.Inproc, ref riid, out ptrIf );\n\t\tif( (hr != 0) || (ptrIf == IntPtr.Zero) )\n\t\t\tMarshal.ThrowExceptionForHR( hr );\n\n\t\tGuid iu = new Guid( \"00000000-0000-0000-C000-000000000046\" );\n\t\tIntPtr ptrXX;\n\t\thr = Marshal.QueryInterface( ptrIf, ref iu, out ptrXX );\n\n\t\tobject ooo = System.Runtime.Remoting.Services.EnterpriseServicesHelper.WrapIUnknownWithComObject( ptrIf );\n\t\tint ct = Marshal.Release( ptrIf );\n\t\treturn ooo;\n\t}\n\n\t[DllImport(\"ole32.dll\") ]\n\tprivate static extern int CoCreateInstance(\tref Guid clsid, IntPtr pUnkOuter, CLSCTX dwClsContext, ref Guid iid, out IntPtr ptrIf );\n}\n\n[Flags]\ninternal enum CLSCTX\n\t{\n\tInproc\t\t\t\t\t= 0x03,\n\tServer\t\t\t\t\t= 0x15,\n\tAll\t\t\t\t\t\t= 0x17,\n\t}\n\n\n} // namespace DShowNET\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Toolkit/DShow/DsControl.cs",
    "content": "/******************************************************\n                  DirectShow .NET\n\t\t      netmaster@swissonline.ch\n*******************************************************/\n//\t\t\t\t\tDsControl\n// basic Quartz control interfaces, ported from control.odl\n\nusing System;\nusing System.Runtime.InteropServices;\n\nnamespace DShowNET\n{\n\n\n// ---------------------------------------------------------------------------------------\n\n\t[ComVisible(true), ComImport,\n\tGuid(\"56a868b1-0ad4-11ce-b03a-0020af0ba770\"),\n\tInterfaceType( ComInterfaceType.InterfaceIsDual)]\npublic interface IMediaControl\n{\n\t\t[PreserveSig]\n\tint Run();\n\n\t\t[PreserveSig]\n\tint Pause();\n\n\t\t[PreserveSig]\n\tint Stop();\n\n\t\t[PreserveSig]\n\tint GetState( int msTimeout, out int pfs );\n\n\t\t[PreserveSig]\n\tint RenderFile( string strFilename );\n\n\t\t[PreserveSig]\n\tint AddSourceFilter(\n\t\t[In]\t\t\t\t\t\t\t\t\t\t\tstring\t\tstrFilename,\n\t\t[Out, MarshalAs(UnmanagedType.IDispatch)]\tout object\t\tppUnk );\n\n\t\t[PreserveSig]\n\tint get_FilterCollection(\n\t\t[Out, MarshalAs(UnmanagedType.IDispatch)]\tout object\t\tppUnk );\n\n\t\t[PreserveSig]\n\tint get_RegFilterCollection(\n\t\t[Out, MarshalAs(UnmanagedType.IDispatch)]\tout object\t\tppUnk );\n\n\t\t[PreserveSig]\n\tint StopWhenReady();\n}\n\n\n\n\n\n// ---------------------------------------------------------------------------------------\n\n\t[ComVisible(true), ComImport,\n\tGuid(\"56a868b6-0ad4-11ce-b03a-0020af0ba770\"),\n\tInterfaceType( ComInterfaceType.InterfaceIsDual)]\npublic interface IMediaEvent\n{\n\t\t[PreserveSig]\n\tint GetEventHandle( out IntPtr hEvent );\n\n\t\t[PreserveSig]\n\tint GetEvent( out DsEvCode lEventCode, out int lParam1, out int lParam2, int msTimeout );\n\n\t\t[PreserveSig]\n\tint WaitForCompletion( int msTimeout, out int pEvCode );\n\n\t\t[PreserveSig]\n\tint CancelDefaultHandling( int lEvCode );\n\n\t\t[PreserveSig]\n\tint RestoreDefaultHandling( int lEvCode );\n\n\t\t[PreserveSig]\n\tint FreeEventParams( DsEvCode lEvCode, int lParam1, int lParam2 );\n}\n\n\n\n\n\n// ---------------------------------------------------------------------------------------\n\n\t[ComVisible(true), ComImport,\n\tGuid(\"56a868c0-0ad4-11ce-b03a-0020af0ba770\"),\n\tInterfaceType( ComInterfaceType.InterfaceIsDual)]\npublic interface IMediaEventEx\n{\n\t#region \"IMediaEvent Methods\"\n\t\t\t[PreserveSig]\n\t\tint GetEventHandle( out IntPtr hEvent );\n\n\t\t\t[PreserveSig]\n\t\tint GetEvent( out DsEvCode lEventCode, out int lParam1, out int lParam2, int msTimeout );\n\n\t\t\t[PreserveSig]\n\t\tint WaitForCompletion( int msTimeout, [Out] out int pEvCode );\n\n\t\t\t[PreserveSig]\n\t\tint CancelDefaultHandling( int lEvCode );\n\n\t\t\t[PreserveSig]\n\t\tint RestoreDefaultHandling( int lEvCode );\n\n\t\t\t[PreserveSig]\n\t\tint FreeEventParams( DsEvCode lEvCode, int lParam1, int lParam2 );\n\t#endregion\n\n\n\t\t[PreserveSig]\n\tint SetNotifyWindow( IntPtr hwnd, int lMsg, IntPtr lInstanceData );\n\n\t\t[PreserveSig]\n\tint SetNotifyFlags( int lNoNotifyFlags );\n        \n\t\t[PreserveSig]\n\tint GetNotifyFlags( out int lplNoNotifyFlags );\n}\n\n\n\n\n\n// ---------------------------------------------------------------------------------------\n\n\t[ComVisible(true), ComImport,\n\tGuid(\"329bb360-f6ea-11d1-9038-00a0c9697298\"),\n\tInterfaceType( ComInterfaceType.InterfaceIsDual)]\npublic interface IBasicVideo2\n{\n\t\t[PreserveSig]\n\tint AvgTimePerFrame( out double pAvgTimePerFrame );\n\n\t\t[PreserveSig]\n\tint BitRate( out int pBitRate );\n\n\t\t[PreserveSig]\n\tint BitErrorRate( out int pBitRate );\n\n\t\t[PreserveSig]\n\tint VideoWidth( out int pVideoWidth );\n\n\t\t[PreserveSig]\n\tint VideoHeight( out int pVideoHeight );\n\n\n\t\t[PreserveSig]\n\tint put_SourceLeft( int SourceLeft );\n\t\t[PreserveSig]\n\tint get_SourceLeft( out int pSourceLeft );\n\n\t\t[PreserveSig]\n\tint put_SourceWidth( int SourceWidth );\n\t\t[PreserveSig]\n\tint get_SourceWidth( out int pSourceWidth );\n\n\t\t[PreserveSig]\n\tint put_SourceTop( int SourceTop );\n\t\t[PreserveSig]\n\tint get_SourceTop( out int pSourceTop );\n\n\t\t[PreserveSig]\n\tint put_SourceHeight( int SourceHeight );\n\t\t[PreserveSig]\n\tint get_SourceHeight( out int pSourceHeight );\n\n\n\n\t\t[PreserveSig]\n\tint put_DestinationLeft( int DestinationLeft );\n\t\t[PreserveSig]\n\tint get_DestinationLeft( out int pDestinationLeft );\n\n\t\t[PreserveSig]\n\tint put_DestinationWidth( int DestinationWidth );\n\t\t[PreserveSig]\n\tint get_DestinationWidth( out int pDestinationWidth );\n\n\t\t[PreserveSig]\n\tint put_DestinationTop( int DestinationTop );\n\t\t[PreserveSig]\n\tint get_DestinationTop( out int pDestinationTop );\n\n\t\t[PreserveSig]\n\tint put_DestinationHeight( int DestinationHeight );\n\t\t[PreserveSig]\n\tint get_DestinationHeight( out int pDestinationHeight );\n\n\t\t[PreserveSig]\n\tint SetSourcePosition( int left, int top, int width, int height );\n\t\t[PreserveSig]\n\tint GetSourcePosition( out int left, out int top, out int width, out int height );\n\t\t[PreserveSig]\n\tint SetDefaultSourcePosition();\n\n\n\t\t[PreserveSig]\n\tint SetDestinationPosition( int left, int top, int width, int height );\n\t\t[PreserveSig]\n\tint GetDestinationPosition( out int left, out int top, out int width, out int height );\n\t\t[PreserveSig]\n\tint SetDefaultDestinationPosition();\n\n\n\t\t[PreserveSig]\n\tint GetVideoSize( out int pWidth, out int pHeight );\n\n\t\t[PreserveSig]\n\tint GetVideoPaletteEntries( int StartIndex, int Entries, out int pRetrieved, IntPtr pPalette );\n\n\t\t[PreserveSig]\n\tint GetCurrentImage( ref int pBufferSize, IntPtr pDIBImage );\n\n\t\t[PreserveSig]\n\tint IsUsingDefaultSource();\n\t\t[PreserveSig]\n\tint IsUsingDefaultDestination();\n\n\t\t[PreserveSig]\n\tint GetPreferredAspectRatio( out int plAspectX, out int plAspectY );\n}\n\n\n\n\n\n\n\n\n\n\t[ComVisible(true), ComImport,\n\tGuid(\"56a868b4-0ad4-11ce-b03a-0020af0ba770\"),\n\tInterfaceType( ComInterfaceType.InterfaceIsDual )]\npublic interface IVideoWindow\n{\n\t\t[PreserveSig]\n\tint put_Caption( string caption );\n\t\t[PreserveSig]\n\tint get_Caption( [Out] out string caption );\n\n\t\t[PreserveSig]\n\tint put_WindowStyle( int windowStyle );\n\t\t[PreserveSig]\n\tint get_WindowStyle( out int windowStyle );\n\n\t\t[PreserveSig]\n\tint put_WindowStyleEx( int windowStyleEx );\n\t\t[PreserveSig]\n\tint get_WindowStyleEx( out int windowStyleEx );\n        \n\t\t[PreserveSig]\n\tint put_AutoShow( int autoShow );\n\t\t[PreserveSig]\n\tint get_AutoShow( out int autoShow );\n        \n\t\t[PreserveSig]\n\tint put_WindowState( int windowState );\n\t\t[PreserveSig]\n\tint get_WindowState( out int windowState );\n\n\t\t[PreserveSig]\n\tint put_BackgroundPalette( int backgroundPalette );\n\t\t[PreserveSig]\n\tint get_BackgroundPalette( out int backgroundPalette );\n        \n\t\t[PreserveSig]\n\tint put_Visible( int visible );\n\t\t[PreserveSig]\n\tint get_Visible( out int visible );\n        \n\t\t[PreserveSig]\n\tint put_Left( int left );\n\t\t[PreserveSig]\n\tint get_Left( out int left );\n        \n\t\t[PreserveSig]\n\tint put_Width( int width );\n\t\t[PreserveSig]\n\tint get_Width( out int width );\n        \n\t\t[PreserveSig]\n\tint put_Top( int top );\n\t\t[PreserveSig]\n\tint get_Top( out int top );\n        \n\t\t[PreserveSig]\n\tint put_Height( int height );\n\t\t[PreserveSig]\n\tint get_Height( out int height );\n        \n\t\t[PreserveSig]\n\tint put_Owner( IntPtr owner );\n\t\t[PreserveSig]\n\tint get_Owner( out IntPtr owner );\n        \n\t\t[PreserveSig]\n\tint put_MessageDrain( IntPtr drain );\n\t\t[PreserveSig]\n\tint get_MessageDrain( out IntPtr drain );\n        \n\t\t[PreserveSig]\n\tint get_BorderColor( out int color );\n\t\t[PreserveSig]\n\tint put_BorderColor( int color );\n        \n\t\t[PreserveSig]\n\tint get_FullScreenMode( out int fullScreenMode );\n\t\t[PreserveSig]\n\tint put_FullScreenMode( int fullScreenMode );\n        \n\t\t[PreserveSig]\n\tint SetWindowForeground( int focus );\n        \n\t\t[PreserveSig]\n\tint NotifyOwnerMessage( IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam );\n        \n\t\t[PreserveSig]\n\tint SetWindowPosition( int left, int top, int width, int height );\n        \n\t\t[PreserveSig]\n\tint GetWindowPosition( out int left, out int top, out int width, out int height );\n        \n\t\t[PreserveSig]\n\tint GetMinIdealImageSize( out int width, out int height );\n        \n\t\t[PreserveSig]\n\tint GetMaxIdealImageSize( out int width, out int height );\n        \n\t\t[PreserveSig]\n\tint GetRestorePosition( out int left, out int top, out int width, out int height );\n        \n\t\t[PreserveSig]\n\tint HideCursor( int hideCursor );\n        \n\t\t[PreserveSig]\n\tint IsCursorHidden( out int hideCursor );\n\n}\n\n\n\n\n\n\n\n\n\n\n// ---------------------------------------------------------------------------------------\n\n\t[ComVisible(true), ComImport,\n\tGuid(\"56a868b2-0ad4-11ce-b03a-0020af0ba770\"),\n\tInterfaceType( ComInterfaceType.InterfaceIsDual )]\npublic interface IMediaPosition\n{\n\t\t[PreserveSig]\n\tint get_Duration( out double pLength );\n\n\t\t[PreserveSig]\n\tint put_CurrentPosition( double llTime );\n\t\t[PreserveSig]\n\tint get_CurrentPosition( out double pllTime );\n\n\t\t[PreserveSig]\n\tint get_StopTime( out double pllTime );\n\t\t[PreserveSig]\n\tint put_StopTime( double llTime );\n\n\t\t[PreserveSig]\n\tint get_PrerollTime( out double pllTime );\n\t\t[PreserveSig]\n\tint put_PrerollTime( double llTime );\n\n\t\t[PreserveSig]\n\tint put_Rate( double dRate );\n\t\t[PreserveSig]\n\tint get_Rate( out double pdRate );\n\n\t\t[PreserveSig]\n\tint CanSeekForward( out int pCanSeekForward );\n\t\t[PreserveSig]\n\tint CanSeekBackward( out int pCanSeekBackward );\n}\n\n\n\n\n\n\n\n// ---------------------------------------------------------------------------------------\n\n\t[ComVisible(true), ComImport,\n\tGuid(\"56a868b3-0ad4-11ce-b03a-0020af0ba770\"),\n\tInterfaceType( ComInterfaceType.InterfaceIsDual )]\npublic interface IBasicAudio\n{\n\t\t[PreserveSig]\n\tint put_Volume( int lVolume );\n\t\t[PreserveSig]\n\tint get_Volume( out int plVolume );\n\n\t\t[PreserveSig]\n\tint put_Balance( int lBalance );\n\t\t[PreserveSig]\n\tint get_Balance( out int plBalance );\n}\n\n\n\n\n\n// ---------------------------------------------------------------------------------------\n\n\t[ComVisible(true), ComImport,\n\tGuid(\"56a868b9-0ad4-11ce-b03a-0020af0ba770\"),\n\tInterfaceType( ComInterfaceType.InterfaceIsDual )]\npublic interface IAMCollection\n{\n\t\t[PreserveSig]\n\tint get_Count( out int plCount );\n\n\t\t[PreserveSig]\n\tint Item( int lItem,\n\t\t[Out, MarshalAs(UnmanagedType.IUnknown) ]\t\tout\tobject\tppUnk );\n\n\t\t[PreserveSig]\n\tint get_NewEnum(\n\t\t[Out, MarshalAs(UnmanagedType.IUnknown) ]\t\tout\tobject\tppUnk );\n}\n\n\npublic enum DsEvCode\n{\n\tNone,\n\tComplete\t\t\t= 0x01,\t\t// EC_COMPLETE\n\tUserAbort\t\t\t= 0x02,\t\t// EC_USERABORT\n\tErrorAbort\t\t\t= 0x03,\t\t// EC_ERRORABORT\n\tTime\t\t\t\t= 0x04,\t\t// EC_TIME\n\tRepaint\t\t\t\t= 0x05,\t\t// EC_REPAINT\n\tStErrStopped\t\t= 0x06,\t\t// EC_STREAM_ERROR_STOPPED\n\tStErrStPlaying\t\t= 0x07,\t\t// EC_STREAM_ERROR_STILLPLAYING\n\tErrorStPlaying\t\t= 0x08,\t\t// EC_ERROR_STILLPLAYING\n\tPaletteChanged\t\t= 0x09,\t\t// EC_PALETTE_CHANGED\n\tVideoSizeChanged\t= 0x0a,\t\t// EC_VIDEO_SIZE_CHANGED\n\tQualityChange\t\t= 0x0b,\t\t// EC_QUALITY_CHANGE\n\tShuttingDown\t\t= 0x0c,\t\t// EC_SHUTTING_DOWN\n\tClockChanged\t\t= 0x0d,\t\t// EC_CLOCK_CHANGED\n\tPaused\t\t\t\t= 0x0e,\t\t// EC_PAUSED\n\tOpeningFile\t\t\t= 0x10,\t\t// EC_OPENING_FILE\n\tBufferingData\t\t= 0x11,\t\t// EC_BUFFERING_DATA\n\tFullScreenLost\t\t= 0x12,\t\t// EC_FULLSCREEN_LOST\n\tActivate\t\t\t= 0x13,\t\t// EC_ACTIVATE\n\tNeedRestart\t\t\t= 0x14,\t\t// EC_NEED_RESTART\n\tWindowDestroyed\t\t= 0x15,\t\t// EC_WINDOW_DESTROYED\n\tDisplayChanged\t\t= 0x16,\t\t// EC_DISPLAY_CHANGED\n\tStarvation\t\t\t= 0x17,\t\t// EC_STARVATION\n\tOleEvent\t\t\t= 0x18,\t\t// EC_OLE_EVENT\n\tNotifyWindow\t\t= 0x19,\t\t// EC_NOTIFY_WINDOW\n\t\t\t\t\t\t\t\t\t// EC_ ....\n\n\t\t// DVDevCod.h\n\tDvdDomChange\t\t= 0x101,\t// EC_DVD_DOMAIN_CHANGE\n\tDvdTitleChange\t\t= 0x102,\t// EC_DVD_TITLE_CHANGE\n\tDvdChaptStart\t\t= 0x103,\t// EC_DVD_CHAPTER_START\n\tDvdAudioStChange\t= 0x104,\t// EC_DVD_AUDIO_STREAM_CHANGE\n\n\tDvdSubPicStChange\t= 0x105,\t// EC_DVD_SUBPICTURE_STREAM_CHANGE\n\tDvdAngleChange\t\t= 0x106,\t// EC_DVD_ANGLE_CHANGE\n\tDvdButtonChange\t\t= 0x107,\t// EC_DVD_BUTTON_CHANGE\n\tDvdValidUopsChange\t= 0x108,\t// EC_DVD_VALID_UOPS_CHANGE\n\tDvdStillOn\t\t\t= 0x109,\t// EC_DVD_STILL_ON\n\tDvdStillOff\t\t\t= 0x10a,\t// EC_DVD_STILL_OFF\n\tDvdCurrentTime\t\t= 0x10b,\t// EC_DVD_CURRENT_TIME\n\tDvdError\t\t\t= 0x10c,\t// EC_DVD_ERROR\n\tDvdWarning\t\t\t= 0x10d,\t// EC_DVD_WARNING\n\tDvdChaptAutoStop\t= 0x10e,\t// EC_DVD_CHAPTER_AUTOSTOP\n\tDvdNoFpPgc\t\t\t= 0x10f,\t// EC_DVD_NO_FP_PGC\n\tDvdPlaybRateChange\t= 0x110,\t// EC_DVD_PLAYBACK_RATE_CHANGE\n\tDvdParentalLChange\t= 0x111,\t// EC_DVD_PARENTAL_LEVEL_CHANGE\n\tDvdPlaybStopped\t\t= 0x112,\t// EC_DVD_PLAYBACK_STOPPED\n\tDvdAnglesAvail\t\t= 0x113,\t// EC_DVD_ANGLES_AVAILABLE\n\tDvdPeriodAStop\t\t= 0x114,\t// EC_DVD_PLAYPERIOD_AUTOSTOP\n\tDvdButtonAActivated\t= 0x115,\t// EC_DVD_BUTTON_AUTO_ACTIVATED\n\tDvdCmdStart\t\t\t= 0x116,\t// EC_DVD_CMD_START\n\tDvdCmdEnd\t\t\t= 0x117,\t// EC_DVD_CMD_END\n\tDvdDiscEjected\t\t= 0x118,\t// EC_DVD_DISC_EJECTED\n\tDvdDiscInserted\t\t= 0x119,\t// EC_DVD_DISC_INSERTED\n\tDvdCurrentHmsfTime\t= 0x11a,\t// EC_DVD_CURRENT_HMSF_TIME\n\tDvdKaraokeMode\t\t= 0x11b\t\t// EC_DVD_KARAOKE_MODE\n}\n\n\n} // namespace DShowNET\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Toolkit/DShow/DsCore.cs",
    "content": "/******************************************************\n                  DirectShow .NET\n\t\t      netmaster@swissonline.ch\n*******************************************************/\n//\t\t\t\t\tDsCore\n// Core streaming interfaces, ported from axcore.idl\n\nusing System;\nusing System.Text;\nusing System.Runtime.InteropServices;\n\nnamespace DShowNET\n{\n\n\t[ComVisible(false)]\npublic enum PinDirection\t\t// PIN_DIRECTION\n{\n\tInput,\t\t// PINDIR_INPUT\n\tOutput\t\t// PINDIR_OUTPUT\n}\n\n\n\n\t[ComVisible(false)]\npublic class DsHlp\n{\n\tpublic const int OATRUE\t\t= -1;\n\tpublic const int OAFALSE\t= 0;\n\n\t\t[DllImport( \"quartz.dll\", CharSet=CharSet.Auto)]\n\tpublic static extern int AMGetErrorText( int hr, StringBuilder buf, int max );\n}\n\n\n\t[ComVisible(true), ComImport,\n\tGuid(\"56a86891-0ad4-11ce-b03a-0020af0ba770\"),\n\tInterfaceType( ComInterfaceType.InterfaceIsIUnknown )]\npublic interface IPin\n{\n\t\t[PreserveSig]\n\tint Connect(\n\t\t[In]\t\t\t\t\t\t\t\t\t\t\tIPin\t\tpReceivePin,\n\t\t[In, MarshalAs(UnmanagedType.LPStruct)]\t\t\tAMMediaType\tpmt );\n\n\t\t[PreserveSig]\n\tint ReceiveConnection(\n\t\t[In]\t\t\t\t\t\t\t\t\t\t\tIPin\t\tpReceivePin,\n\t\t[In, MarshalAs(UnmanagedType.LPStruct)]\t\t\tAMMediaType\tpmt );\n\n\t\t[PreserveSig]\n\tint Disconnect();\n\n\t\t[PreserveSig]\n\tint ConnectedTo( [Out] out IPin ppPin );\n\n\t\t[PreserveSig]\n\tint ConnectionMediaType(\n\t\t[Out, MarshalAs(UnmanagedType.LPStruct)]\t\tAMMediaType\tpmt );\n\n\t\t[PreserveSig]\n\tint QueryPinInfo( IntPtr pInfo );\n\n\t\t[PreserveSig]\n\tint QueryDirection( out PinDirection pPinDir );\n\n\t\t[PreserveSig]\n\tint QueryId(\n\t\t[Out, MarshalAs(UnmanagedType.LPWStr) ]\t\tout\tstring\t\tId );\n\n\t\t[PreserveSig]\n\tint QueryAccept(\n\t\t[In, MarshalAs(UnmanagedType.LPStruct)]\t\t\tAMMediaType\tpmt );\n\n\t\t[PreserveSig]\n\tint EnumMediaTypes( IntPtr ppEnum );\n\n\t\t[PreserveSig]\n\tint QueryInternalConnections( IntPtr apPin, [In, Out] ref int nPin );\n\n\t\t[PreserveSig]\n\tint EndOfStream();\n\n\t\t[PreserveSig]\n\tint BeginFlush();\n\n\t\t[PreserveSig]\n\tint EndFlush();\n\n\t\t[PreserveSig]\n\tint NewSegment( long tStart, long tStop, double dRate );\n}\n\n\n\n\n\n\n\t[ComVisible(true), ComImport,\n\tGuid(\"56a8689f-0ad4-11ce-b03a-0020af0ba770\"),\n\tInterfaceType( ComInterfaceType.InterfaceIsIUnknown )]\npublic interface IFilterGraph\n{\n\t\t[PreserveSig]\n\tint AddFilter(\n\t\t[In] IBaseFilter pFilter,\n\t\t[In, MarshalAs(UnmanagedType.LPWStr)]\t\t\tstring\t\t\tpName );\n\n\t\t[PreserveSig]\n\tint RemoveFilter( [In] IBaseFilter pFilter );\n\n\t\t[PreserveSig]\n\tint EnumFilters( [Out] out IEnumFilters ppEnum );\n\n\t\t[PreserveSig]\n\tint FindFilterByName(\n\t\t[In, MarshalAs(UnmanagedType.LPWStr)]\t\t\tstring\t\t\tpName,\n\t\t[Out]\t\t\t\t\t\t\t\t\t\tout IBaseFilter\t\tppFilter );\n\n\t\t[PreserveSig]\n\tint ConnectDirect( [In] IPin ppinOut, [In] IPin ppinIn,\n\t\t[In, MarshalAs(UnmanagedType.LPStruct)]\t\t\tAMMediaType\tpmt );\n\n\t\t[PreserveSig]\n\tint Reconnect( [In] IPin ppin );\n\n\t\t[PreserveSig]\n\tint Disconnect( [In] IPin ppin );\n\n\t\t[PreserveSig]\n\tint SetDefaultSyncSource();\n\n}\n\n\n\n\n\n\n// ---------------------------------------------------------------------------------------\n\n\t[ComVisible(true), ComImport,\n\tGuid(\"0000010c-0000-0000-C000-000000000046\"),\n\tInterfaceType( ComInterfaceType.InterfaceIsIUnknown )]\npublic interface IPersist\n{\n\t\t[PreserveSig]\n\tint GetClassID(\n\t\t[Out]\t\t\t\t\t\t\t\t\tout Guid\t\tpClassID );\n}\n\n\n// ---------------------------------------------------------------------------------------\n\n\t[ComVisible(true), ComImport,\n\tGuid(\"56a86899-0ad4-11ce-b03a-0020af0ba770\"),\n\tInterfaceType( ComInterfaceType.InterfaceIsIUnknown )]\npublic interface IMediaFilter\n{\n\t#region \"IPersist Methods\"\n\t\t\t[PreserveSig]\n\t\tint GetClassID(\n\t\t\t[Out]\t\t\t\t\t\t\t\t\tout Guid\t\tpClassID );\n\t#endregion\n\n\t\t[PreserveSig]\n\tint Stop();\n\n\t\t[PreserveSig]\n\tint Pause();\n\n\t\t[PreserveSig]\n\tint Run( long tStart );\n\n\t\t[PreserveSig]\n\tint GetState( int dwMilliSecsTimeout, out int filtState );\n\n\t\t[PreserveSig]\n\tint SetSyncSource( [In] IReferenceClock pClock );\n\n\t\t[PreserveSig]\n\tint GetSyncSource( [Out] out IReferenceClock pClock );\n}\n\n\n\n\n\n\n\n// ---------------------------------------------------------------------------------------\n\n\t[ComVisible(true), ComImport,\n\tGuid(\"56a86895-0ad4-11ce-b03a-0020af0ba770\"),\n\tInterfaceType( ComInterfaceType.InterfaceIsIUnknown )]\npublic interface IBaseFilter\n{\n\t#region \"IPersist Methods\"\n\t\t\t[PreserveSig]\n\t\tint GetClassID(\n\t\t\t[Out]\t\t\t\t\t\t\t\t\tout Guid\t\tpClassID );\n\t#endregion\n\n\t#region \"IMediaFilter Methods\"\n\t\t\t[PreserveSig]\n\t\tint Stop();\n\n\t\t\t[PreserveSig]\n\t\tint Pause();\n\n\t\t\t[PreserveSig]\n\t\tint Run( long tStart );\n\n\t\t\t[PreserveSig]\n\t\tint GetState( int dwMilliSecsTimeout, [Out] out int filtState );\n\n\t\t\t[PreserveSig]\n\t\tint SetSyncSource( [In] IReferenceClock pClock );\n\n\t\t\t[PreserveSig]\n\t\tint GetSyncSource( [Out] out IReferenceClock pClock );\n\t#endregion\n\n\t\t[PreserveSig]\n\tint EnumPins(\n\t\t[Out]\t\t\t\t\t\t\t\t\t\tout IEnumPins\t\tppEnum );\n\n\t\t[PreserveSig]\n\tint FindPin(\n\t\t[In, MarshalAs(UnmanagedType.LPWStr)]\t\t\tstring\t\t\tId,\n\t\t[Out]\t\t\t\t\t\t\t\t\t\tout IPin\t\t\tppPin );\n\n\t\t[PreserveSig]\n\tint QueryFilterInfo(\n\t\t[Out]\t\t\t\t\t\t\t\t\t\t\tFilterInfo\t\tpInfo );\n\n\t\t[PreserveSig]\n\tint JoinFilterGraph(\n\t\t[In]\t\t\t\t\t\t\t\t\t\t\tIFilterGraph\tpGraph,\n\t\t[In, MarshalAs(UnmanagedType.LPWStr)]\t\t\tstring\t\t\tpName );\n\n\t\t[PreserveSig]\n\tint QueryVendorInfo(\n\t\t[Out, MarshalAs(UnmanagedType.LPWStr) ]\t\tout\tstring\t\t\tpVendorInfo );\n}\n\n\n\t[StructLayout(LayoutKind.Sequential, CharSet=CharSet.Unicode), ComVisible(false)]\npublic class FilterInfo\t\t//  FILTER_INFO\n{\n\t\t[MarshalAs(UnmanagedType.ByValTStr, SizeConst=128)]\n\tpublic string\t\tachName;\n\t\t[MarshalAs(UnmanagedType.IUnknown)]\n\tpublic object\t\tpUnk;\n}\n\n\n\n\n\n\n\n\n\n// ---------------------------------------------------------------------------------------\n\n\t[ComVisible(true), ComImport,\n\tGuid(\"36b73880-c2c8-11cf-8b46-00805f6cef60\"),\n\tInterfaceType( ComInterfaceType.InterfaceIsIUnknown )]\npublic interface IMediaSeeking\n{\n\t\t[PreserveSig]\n\tint GetCapabilities( out SeekingCapabilities pCapabilities );\n\n\t\t[PreserveSig]\n\tint CheckCapabilities( [In, Out] ref SeekingCapabilities pCapabilities );\n\n\t\t[PreserveSig]\n\tint IsFormatSupported( [In] ref Guid pFormat );\n\t\t[PreserveSig]\n\tint QueryPreferredFormat( [Out] out Guid pFormat );\n\n\t\t[PreserveSig]\n\tint GetTimeFormat( [Out] out Guid pFormat );\n\t\t[PreserveSig]\n\tint IsUsingTimeFormat( [In] ref Guid pFormat );\n\t\t[PreserveSig]\n\tint SetTimeFormat( [In] ref Guid pFormat );\n\n\t\t[PreserveSig]\n\tint GetDuration( out long pDuration );\n\t\t[PreserveSig]\n\tint GetStopPosition( out long pStop );\n\t\t[PreserveSig]\n\tint GetCurrentPosition( out long pCurrent );\n\n\t\t[PreserveSig]\n\tint ConvertTimeFormat(\tout long pTarget, [In] ref Guid pTargetFormat,\n\t\t\t\t\t\t\t\tlong Source,  [In] ref Guid pSourceFormat );\n\n\t\t[PreserveSig]\n\tint SetPositions(\n\t\t[In, Out, MarshalAs(UnmanagedType.LPStruct)]\t\tDsOptInt64\tpCurrent,\n\t\tSeekingFlags dwCurrentFlags,\n\t\t[In, Out, MarshalAs(UnmanagedType.LPStruct)]\t\tDsOptInt64\tpStop,\n\t\tSeekingFlags dwStopFlags );\n\n\t\t[PreserveSig]\n\tint GetPositions( out long pCurrent, out long pStop );\n\n\t\t[PreserveSig]\n\tint GetAvailable( out long pEarliest, out long pLatest );\n\n\t\t[PreserveSig]\n\tint SetRate( double dRate );\n\t\t[PreserveSig]\n\tint GetRate( out double pdRate );\n\n\t\t[PreserveSig]\n\tint GetPreroll( out long pllPreroll );\n}\n\n\n\t[Flags, ComVisible(false)]\npublic enum SeekingCapabilities\t\t// AM_SEEKING_SeekingCapabilities AM_SEEKING_SEEKING_CAPABILITIES\n{\n\tCanSeekAbsolute\t\t= 0x001,\n\tCanSeekForwards\t\t= 0x002,\n\tCanSeekBackwards\t= 0x004,\n\tCanGetCurrentPos\t= 0x008,\n\tCanGetStopPos\t\t= 0x010,\n\tCanGetDuration\t\t= 0x020,\n\tCanPlayBackwards\t= 0x040,\n\tCanDoSegments\t\t= 0x080,\n\tSource\t\t\t\t= 0x100\t\t// Doesn't pass thru used to count segment ends\n}\n\n\n\t[Flags, ComVisible(false)]\npublic enum SeekingFlags\t\t// AM_SEEKING_SeekingFlags AM_SEEKING_SEEKING_FLAGS\n{\n\tNoPositioning\t\t\t= 0x00,\t\t// No change\n\tAbsolutePositioning\t\t= 0x01,\t\t// Position is supplied and is absolute\n\tRelativePositioning\t\t= 0x02,\t\t// Position is supplied and is relative\n\tIncrementalPositioning\t= 0x03,\t\t// (Stop) position relative to current, useful for seeking when paused (use +1)\n\tSeekToKeyFrame\t\t\t= 0x04,\t\t// Just seek to key frame (performance gain)\n\tReturnTime\t\t\t\t= 0x08,\t\t// Plug the media time equivalents back into the supplied LONGLONGs\n\tSegment\t\t\t\t\t= 0x10,\t\t// At end just do EC_ENDOFSEGMENT, don't do EndOfStream\n\tNoFlush\t\t\t\t\t= 0x20\t\t// Don't flush\n}\n\n\n\n\n\n// ---------------------------------------------------------------------------------------\n\n\t[ComVisible(true), ComImport,\n\tGuid(\"56a86897-0ad4-11ce-b03a-0020af0ba770\"),\n\tInterfaceType( ComInterfaceType.InterfaceIsIUnknown )]\npublic interface IReferenceClock\n{\n\t\t[PreserveSig]\n\tint GetTime( out long pTime );\n\n\t\t[PreserveSig]\n\tint AdviseTime( long baseTime, long streamTime, IntPtr hEvent, out int pdwAdviseCookie);\n\n\t\t[PreserveSig]\n\tint AdvisePeriodic( long startTime, long periodTime, IntPtr hSemaphore, out int pdwAdviseCookie);\n\n\t\t[PreserveSig]\n\tint Unadvise( int dwAdviseCookie );\n}\n\n\n\n\n\n\n\n// ---------------------------------------------------------------------------------------\n\n\t[ComVisible(true), ComImport,\n\tGuid(\"56a86893-0ad4-11ce-b03a-0020af0ba770\"),\n\tInterfaceType( ComInterfaceType.InterfaceIsIUnknown )]\npublic interface IEnumFilters\n{\n\t\t[PreserveSig]\n\tint Next(\n\t\t[In]\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tint\t\t\t\tcFilters,\n\t\t[Out, MarshalAs(UnmanagedType.LPArray, SizeParamIndex=2)]\tout\tIBaseFilter[]\tppFilter,\n\t\t[Out]\t\t\t\t\t\t\t\t\t\t\t\t\t\tout int\t\t\t\tpcFetched );\n\n\t\t[PreserveSig]\n\tint Skip( [In] int cFilters );\n\tvoid Reset();\n\tvoid Clone( [Out] out IEnumFilters ppEnum );\n}\n\n\n// ---------------------------------------------------------------------------------------\n\n\t[ComVisible(true), ComImport,\n\tGuid(\"56a86892-0ad4-11ce-b03a-0020af0ba770\"),\n\tInterfaceType( ComInterfaceType.InterfaceIsIUnknown )]\npublic interface IEnumPins\n{\n\t\t[PreserveSig]\n\tint Next(\n\t\t[In]\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tint\t\t\tcPins,\n\t\t[Out, MarshalAs(UnmanagedType.LPArray, SizeParamIndex=2)]\tout\tIPin[]\t\tppPins,\n\t\t[Out]\t\t\t\t\t\t\t\t\t\t\t\t\t\tout int\t\t\tpcFetched );\n\n\t\t[PreserveSig]\n\tint Skip( [In] int cPins );\n\tvoid Reset();\n\tvoid Clone( [Out] out IEnumPins ppEnum );\n}\n\n\n\n\n\n\n\t[StructLayout(LayoutKind.Sequential), ComVisible(false)]\npublic class AMMediaType\t\t//  AM_MEDIA_TYPE\n{\n\tpublic Guid\t\tmajorType;\n\tpublic Guid\t\tsubType;\n\t\t[MarshalAs(UnmanagedType.Bool)]\n\tpublic bool\t\tfixedSizeSamples;\n\t\t[MarshalAs(UnmanagedType.Bool)]\n\tpublic bool\t\ttemporalCompression;\n\tpublic int\t\tsampleSize;\n\tpublic Guid\t\tformatType;\n\tpublic IntPtr\tunkPtr;\n\tpublic int\t\tformatSize;\n\tpublic IntPtr\tformatPtr;\n}\n\n\n\n\n\n// ---------------------------------------------------------------------------------------\n\n\t[ComVisible(true), ComImport,\n\tGuid(\"56a8689a-0ad4-11ce-b03a-0020af0ba770\"),\n\tInterfaceType( ComInterfaceType.InterfaceIsIUnknown )]\npublic interface IMediaSample\n{\n\t\t[PreserveSig]\n\tint GetPointer( out IntPtr ppBuffer );\n\t\t[PreserveSig]\n\tint GetSize();\n\n\t\t[PreserveSig]\n\tint GetTime( out long pTimeStart, out long pTimeEnd );\n\n\t\t[PreserveSig]\n\tint SetTime(\n\t\t[In, MarshalAs(UnmanagedType.LPStruct)]\t\t\tDsOptInt64\tpTimeStart,\n\t\t[In, MarshalAs(UnmanagedType.LPStruct)]\t\t\tDsOptInt64\tpTimeEnd );\n\n\t\t[PreserveSig]\n\tint IsSyncPoint();\n\t\t[PreserveSig]\n\tint SetSyncPoint(\n\t\t[In, MarshalAs(UnmanagedType.Bool)]\t\t\tbool\tbIsSyncPoint );\n\n\t\t[PreserveSig]\n\tint IsPreroll();\n\t\t[PreserveSig]\n\tint SetPreroll(\n\t\t[In, MarshalAs(UnmanagedType.Bool)]\t\t\tbool\tbIsPreroll );\n\n\t\t[PreserveSig]\n\tint GetActualDataLength();\n\t\t[PreserveSig]\n\tint SetActualDataLength( int len );\n\n\t\t[PreserveSig]\n\tint GetMediaType(\n\t\t[Out, MarshalAs(UnmanagedType.LPStruct)]\tout AMMediaType\tppMediaType );\n\n\t\t[PreserveSig]\n\tint SetMediaType(\n\t\t[In, MarshalAs(UnmanagedType.LPStruct)]\t\t\tAMMediaType\tpMediaType );\n\n\t\t[PreserveSig]\n\tint IsDiscontinuity();\n\t\t[PreserveSig]\n\tint SetDiscontinuity(\n\t\t[In, MarshalAs(UnmanagedType.Bool)]\t\t\tbool\tbDiscontinuity );\n\n\t\t[PreserveSig]\n\tint GetMediaTime( out long pTimeStart, out long pTimeEnd );\n\n\t\t[PreserveSig]\n\tint SetMediaTime(\n\t\t[In, MarshalAs(UnmanagedType.LPStruct)]\t\t\tDsOptInt64\tpTimeStart,\n\t\t[In, MarshalAs(UnmanagedType.LPStruct)]\t\t\tDsOptInt64\tpTimeEnd );\n}\n\n\n} // namespace DShowNET\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Toolkit/DShow/DsDVD.cs",
    "content": "/******************************************************\n                  DirectShow .NET\n\t\t      netmaster@swissonline.ch\n*******************************************************/\n//\t\t\t\t\tDsDVD\n// DVD interfaces, ported from dvdif.idl\n\nusing System;\nusing System.Runtime.InteropServices;\n\nnamespace DShowNET.Dvd\n{\n\n\n// =================================================================================================\n//\t\t\t\t\t\t\t\t\t\t\tDVD GRAPH\n// =================================================================================================\n\n[Flags]\npublic enum DvdGraphFlags\t\t// AM_DVD_GRAPH_FLAGS\n{\n\tDefault\t\t\t= 0x00000000,\n\tHwDecPrefer\t\t= 0x00000001,\t\t// AM_DVD_HWDEC_PREFER\n\tHwDecOnly\t\t= 0x00000002,\t\t// AM_DVD_HWDEC_ONLY\n\tSwDecPrefer\t\t= 0x00000004,\t\t// AM_DVD_SWDEC_PREFER\n\tSwDecOnly\t\t= 0x00000008,\t\t// AM_DVD_SWDEC_ONLY\n\tNoVpe\t\t\t= 0x00000100\t\t// AM_DVD_NOVPE\n}\n\n[Flags]\npublic enum DvdStreamFlags\t\t// AM_DVD_STREAM_FLAGS\n{\n\tNone\t\t= 0x00000000,\n\tVideo\t\t= 0x00000001,\t\t// AM_DVD_STREAM_VIDEO\n\tAudio\t\t= 0x00000002,\t\t// AM_DVD_STREAM_AUDIO\n\tSubPic\t\t= 0x00000004\t\t// AM_DVD_STREAM_SUBPIC\n}\n\n\n\t[StructLayout(LayoutKind.Sequential, Pack=1), ComVisible(false)]\npublic struct DvdRenderStatus\t\t//  AM_DVD_RENDERSTATUS\n{\n\tpublic int\t\tvpeStatus;\n\tpublic bool\t\tvolInvalid;\n\tpublic bool\t\tvolUnknown;\n\tpublic bool\t\tnoLine21In;\n\tpublic bool\t\tnoLine21Out;\n\tpublic int\t\t\t\tnumStreams;\n\tpublic int\t\t\t\tnumStreamsFailed;\n\tpublic DvdStreamFlags\tfailedStreams;\n}\n\n\n// ---------------------------------------------------------------------------------------\n\n\t[ComVisible(true), ComImport,\n\tGuid(\"FCC152B6-F372-11d0-8E00-00C04FD7C08B\"),\n\tInterfaceType( ComInterfaceType.InterfaceIsIUnknown )]\npublic interface IDvdGraphBuilder\n{\n\t\t[PreserveSig]\n\tint GetFiltergraph(\n\t\t[Out]\t\t\t\t\t\t\t\t\t\tout IGraphBuilder\t\tppGB );\n\n\t\t[PreserveSig]\n\tint GetDvdInterface(\n\t\t[In]\t\t\t\t\t\t\t\t\t\tref\tGuid\triid,\n\t\t[Out, MarshalAs(UnmanagedType.IUnknown) ]\tout\tobject\tppvIF );\n\n\t\t[PreserveSig]\n\tint RenderDvdVideoVolume(\n\t\t[In, MarshalAs(UnmanagedType.LPWStr)]\t\t\tstring\t\t\tlpcwszPathName,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tDvdGraphFlags\tdwFlags,\n\t\t[Out]\t\t\t\t\t\t\t\t\t\tout DvdRenderStatus\tpStatus );\n}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n// =================================================================================================\n//\t\t\t\t\t\t\t\t\t\t\tDVD CONTROL\n// =================================================================================================\n\n[Flags]\npublic enum DvdCmdFlags\t\t// DVD_CMD_FLAGS\n{\n\tNone\t\t\t= 0x00000000,\t\t// DVD_CMD_FLAG_None\n\tFlush\t\t\t= 0x00000001,\t\t// DVD_CMD_FLAG_Flush\n\tSendEvt\t\t\t= 0x00000002,\t\t// DVD_CMD_FLAG_SendEvents\n\tBlock\t\t\t= 0x00000004,\t\t// DVD_CMD_FLAG_Block\n\tStartWRendered\t= 0x00000008,\t\t// DVD_CMD_FLAG_StartWhenRendered\n\tEndARendered\t= 0x00000010\t\t// DVD_CMD_FLAG_EndAfterRendered\n}\n\n\n\t[StructLayout(LayoutKind.Sequential, Pack=1), ComVisible(false)]\npublic struct DvdTimeCode\t\t//  DVD_HMSF_TIMECODE\n{\n\tpublic byte\t\tbHours;\n\tpublic byte\t\tbMinutes;\n\tpublic byte\t\tbSeconds;\n\tpublic byte\t\tbFrames;\n}\n\npublic enum DvdMenuID\t\t// DVD_MENU_ID\n{\n\tTitle\t\t= 2,\t\t// DVD_MENU_Title\n\tRoot\t\t= 3,\t\t// DVD_MENU_Root\n\tSubpicture\t= 4,\t\t// DVD_MENU_Subpicture\n\tAudio\t\t= 5,\t\t// DVD_MENU_Audio\n\tAngle\t\t= 6,\t\t// DVD_MENU_Angle\n\tChapter\t\t= 7\t\t\t// DVD_MENU_Chapter\n}\n\n\npublic enum DvdRelButton\t\t// DVD_RELATIVE_BUTTON\n{\n\tUpper\t\t= 1,\t\t// DVD_Relative_Upper\n\tLower\t\t= 2,\t\t// DVD_Relative_Lower\n\tLeft\t\t= 3,\t\t// DVD_Relative_Left\n\tRight\t\t= 4\t\t\t// DVD_Relative_Right\n}\n\n\npublic enum DvdOptionFlag\t\t// DVD_OPTION_FLAG\n{\n\tResetOnStop\t\t\t\t\t= 1,\t\t// DVD_ResetOnStop\n\tNotifyParentalLevelChange\t= 2,\t\t// DVD_NotifyParentalLevelChange\n\tHmsfTimeCodeEvt\t\t\t\t= 3\t\t\t// DVD_HMSF_TimeCodeEvents\n}\n\n\npublic enum DvdAudioLangExt\t\t// DVD_AUDIO_LANG_EXT\n{\n\tNotSpecified\t\t\t= 0,\t\t// DVD_AUD_EXT_NotSpecified\n\tCaptions\t\t\t\t= 1,\t\t// DVD_AUD_EXT_Captions\n\tVisuallyImpaired\t\t= 2,\t\t// DVD_AUD_EXT_VisuallyImpaired\n\tDirectorComments1\t\t= 3,\t\t// DVD_AUD_EXT_DirectorComments1\n\tDirectorComments2\t\t= 4\t\t\t// DVD_AUD_EXT_DirectorComments2\n}\n\npublic enum DvdSubPicLangExt\t\t// DVD_SUBPICTURE_LANG_EXT\n{\n\tNotSpecified\t\t\t= 0,\t\t// DVD_SP_EXT_NotSpecified\n\tCaptionNormal\t\t\t= 1,\t\t// DVD_SP_EXT_Caption_Normal\n\tCaptionBig\t\t\t\t= 2,\t\t// DVD_SP_EXT_Caption_Big\n\tCaptionChildren\t\t\t= 3,\t\t// DVD_SP_EXT_Caption_Children\n\tClosedNormal\t\t\t= 5,\t\t// DVD_SP_EXT_CC_Normal\n\tClosedBig\t\t\t\t= 6,\t\t// DVD_SP_EXT_CC_Big\n\tClosedChildren\t\t\t= 7,\t\t// DVD_SP_EXT_CC_Children\n\tForced\t\t\t\t\t= 9,\t\t// DVD_SP_EXT_Forced\n\tDirectorCmtNormal\t\t= 13,\t\t// DVD_SP_EXT_DirectorComments_Normal\n\tDirectorCmtBig\t\t\t= 14,\t\t// DVD_SP_EXT_DirectorComments_Big\n\tDirectorCmtChildren\t\t= 15,\t\t// DVD_SP_EXT_DirectorComments_Children\n}\n\n\n\n\n// ---------------------------------------------------------------------------------------\n\n\t[ComVisible(true), ComImport,\n\tGuid(\"33BC7430-EEC0-11D2-8201-00A0C9D74842\"),\n\tInterfaceType( ComInterfaceType.InterfaceIsIUnknown )]\npublic interface IDvdControl2\n{\n\t\t[PreserveSig]\n\tint PlayTitle( int ulTitle, DvdCmdFlags dwFlags,\n\t\t[Out]\t\t\t\t\t\t\t\t\t\t\tOptIDvdCmd\tppCmd );\n\n\t\t[PreserveSig]\n\tint PlayChapterInTitle( int ulTitle, int ulChapter, DvdCmdFlags dwFlags,\n\t\t[Out]\t\t\t\t\t\t\t\t\t\t\tOptIDvdCmd\tppCmd );\n\n\t\t[PreserveSig]\n\tint PlayAtTimeInTitle( int ulTitle, [In] ref DvdTimeCode pStartTime, DvdCmdFlags dwFlags,\n\t\t[Out]\t\t\t\t\t\t\t\t\t\t\tOptIDvdCmd\tppCmd );\n\n\t\t[PreserveSig]\n\tint Stop();\n\n\t\t[PreserveSig]\n\tint ReturnFromSubmenu( DvdCmdFlags dwFlags,\n\t\t[Out]\t\t\t\t\t\t\t\t\t\t\tOptIDvdCmd\tppCmd );\n\n\t\t[PreserveSig]\n\tint PlayAtTime( [In] ref DvdTimeCode pTime, DvdCmdFlags dwFlags,\n\t\t[Out]\t\t\t\t\t\t\t\t\t\t\tOptIDvdCmd\tppCmd );\n\n\t\t[PreserveSig]\n\tint PlayChapter( int ulChapter, DvdCmdFlags dwFlags,\n\t\t[Out]\t\t\t\t\t\t\t\t\t\t\tOptIDvdCmd\tppCmd );\n\n\t\t[PreserveSig]\n\tint PlayPrevChapter( DvdCmdFlags dwFlags,\n\t\t[Out]\t\t\t\t\t\t\t\t\t\t\tOptIDvdCmd\tppCmd );\n\n\t\t[PreserveSig]\n\tint ReplayChapter( DvdCmdFlags dwFlags,\n\t\t[Out]\t\t\t\t\t\t\t\t\t\t\tOptIDvdCmd\tppCmd );\n\n\t\t[PreserveSig]\n\tint PlayNextChapter( DvdCmdFlags dwFlags,\n\t\t[Out]\t\t\t\t\t\t\t\t\t\t\tOptIDvdCmd\tppCmd );\n\n\t\t[PreserveSig]\n\tint PlayForwards( double dSpeed, DvdCmdFlags dwFlags,\n\t\t[Out]\t\t\t\t\t\t\t\t\t\t\tOptIDvdCmd\tppCmd );\n\n\t\t[PreserveSig]\n\tint PlayBackwards( double dSpeed, DvdCmdFlags dwFlags,\n\t\t[Out]\t\t\t\t\t\t\t\t\t\t\tOptIDvdCmd\tppCmd );\n\n\t\t[PreserveSig]\n\tint ShowMenu( DvdMenuID MenuID, DvdCmdFlags dwFlags,\n\t\t[Out]\t\t\t\t\t\t\t\t\t\t\tOptIDvdCmd\tppCmd );\n\n\t\t[PreserveSig]\n\tint Resume( DvdCmdFlags dwFlags,\n\t\t[Out]\t\t\t\t\t\t\t\t\t\t\tOptIDvdCmd\tppCmd );\n\n\t\t[PreserveSig]\n\tint SelectRelativeButton( DvdRelButton buttonDir );\n\n\t\t[PreserveSig]\n\tint ActivateButton();\n\n\t\t[PreserveSig]\n\tint SelectButton( int ulButton );\n\n\t\t[PreserveSig]\n\tint SelectAndActivateButton( int ulButton );\n\n\t\t[PreserveSig]\n\tint StillOff();\n\n\t\t[PreserveSig]\n\tint Pause(\n\t\t[In, MarshalAs(UnmanagedType.Bool)]\t\t\t\tbool\tbState );\n\n\t\t[PreserveSig]\n\tint SelectAudioStream( int ulAudio, DvdCmdFlags dwFlags,\n\t\t[Out]\t\t\t\t\t\t\t\t\t\t\tOptIDvdCmd\tppCmd );\n\n\t\t[PreserveSig]\n\tint SelectSubpictureStream( int ulSubPicture, DvdCmdFlags dwFlags,\n\t\t[Out]\t\t\t\t\t\t\t\t\t\t\tOptIDvdCmd\tppCmd );\n\n\t\t[PreserveSig]\n\tint SetSubpictureState(\n\t\t[In, MarshalAs(UnmanagedType.Bool)]\t\t\t\tbool\t\tbState,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tDvdCmdFlags\tdwFlags,\n\t\t[Out]\t\t\t\t\t\t\t\t\t\t\tOptIDvdCmd\tppCmd );\n\n\t\t[PreserveSig]\n\tint SelectAngle( int ulAngle, DvdCmdFlags dwFlags,\n\t\t[Out]\t\t\t\t\t\t\t\t\t\t\tOptIDvdCmd\tppCmd );\n\n\t\t[PreserveSig]\n\tint SelectParentalLevel( int ulParentalLevel );\n\n\t\t[PreserveSig]\n\tint SelectParentalCountry( byte[] bCountry );\n\n\t\t[PreserveSig]\n\tint SelectKaraokeAudioPresentationMode( int ulMode );\n\n\t\t[PreserveSig]\n\tint SelectVideoModePreference( int ulPreferredDisplayMode );\n\n\t\t[PreserveSig]\n\tint SetDVDDirectory(\n\t\t[In, MarshalAs(UnmanagedType.LPWStr)]\t\t\tstring\t\tpszwPath );\n\n\t\t[PreserveSig]\n\tint ActivateAtPosition( DsPOINT point );\n\n\t\t[PreserveSig]\n\tint SelectAtPosition( DsPOINT point );\n\n\t\t[PreserveSig]\n\tint PlayChaptersAutoStop( int ulTitle, int ulChapter, int ulChaptersToPlay, DvdCmdFlags dwFlags,\n\t\t[Out]\t\t\t\t\t\t\t\t\t\t\tOptIDvdCmd\tppCmd );\n\n\t\t[PreserveSig]\n\tint AcceptParentalLevelChange(\n\t\t[In, MarshalAs(UnmanagedType.Bool)]\t\t\t\tbool\t\tbAccept );\n\n\t\t[PreserveSig]\n\tint SetOption( DvdOptionFlag flag,\n\t\t[In, MarshalAs(UnmanagedType.Bool)]\t\t\t\tbool\t\tfState );\n\n\t\t[PreserveSig]\n\tint SetState( IDvdState pState, DvdCmdFlags dwFlags,\n\t\t[Out]\t\t\t\t\t\t\t\t\t\t\tOptIDvdCmd\tppCmd );\n\n\t\t[PreserveSig]\n\tint PlayPeriodInTitleAutoStop( int ulTitle,\n\t\t[In]\t\t\t\t\t\t\t\t\t\tref DvdTimeCode pStartTime,\n\t\t[In]\t\t\t\t\t\t\t\t\t\tref DvdTimeCode pEndTime,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tDvdCmdFlags\tdwFlags,\n\t\t[Out]\t\t\t\t\t\t\t\t\t\t\tOptIDvdCmd\tppCmd );\n\n\t\t[PreserveSig]\n\tint SetGPRM( int ulIndex, short wValue, DvdCmdFlags dwFlags,\n\t\t[Out]\t\t\t\t\t\t\t\t\t\t\tOptIDvdCmd\tppCmd );\n\n\t\t[PreserveSig]\n\tint SelectDefaultMenuLanguage( int Language );\n\n\t\t[PreserveSig]\n\tint SelectDefaultAudioLanguage( int Language, DvdAudioLangExt audioExtension );\n\n\t\t[PreserveSig]\n\tint SelectDefaultSubpictureLanguage( int Language, DvdSubPicLangExt subpictureExtension );\n}\n\n\n\n\n\n\n// ---------------------------------------------------------------------------------------\n\n\t[ComVisible(true), ComImport,\n\tGuid(\"5a4a97e4-94ee-4a55-9751-74b5643aa27d\"),\n\tInterfaceType( ComInterfaceType.InterfaceIsIUnknown )]\npublic interface IDvdCmd\n{\n\t\t[PreserveSig]\n\tint WaitForStart();\n\t\t[PreserveSig]\n\tint WaitForEnd();\n}\n\n\n\n\n// ---------------------------------------------------------------------------------------\n\n\t[ComVisible(true), ComImport,\n\tGuid(\"86303d6d-1c4a-4087-ab42-f711167048ef\"),\n\tInterfaceType( ComInterfaceType.InterfaceIsIUnknown )]\npublic interface IDvdState\n{\n\t\t[PreserveSig]\n\tint GetDiscID( [Out] out long pullUniqueID );\n\t\t[PreserveSig]\n\tint GetParentalLevel( [Out] out int pulParentalLevel );\n}\n\n\n\n\n\n\n\n\n\n\n\n// =================================================================================================\n//\t\t\t\t\t\t\t\t\t\t\tDVD INFO\n// =================================================================================================\n\n\npublic enum DvdDomain\t\t// DVD_DOMAIN\n{\n\tFirstPlay\t\t\t= 1,\t\t// DVD_DOMAIN_FirstPlay\n\tVideoManagerMenu\t= 2,\t\t// DVD_DOMAIN_VideoManagerMenu\n\tVideoTitleSetMenu\t= 3,\t\t// DVD_DOMAIN_VideoTitleSetMenu\n\tTitle\t\t\t\t= 4,\t\t// DVD_DOMAIN_Title\n\tStop\t\t\t\t= 5\t\t\t// DVD_DOMAIN_Stop\n}\n\n\n// ---------------------------------------------------------------------------------------\n\npublic enum DvdVideoCompress\t// DVD_VIDEO_COMPRESSION\n{\n\tOther\t\t= 0,\t\t// DVD_VideoCompression_Other\n\tMpeg1\t\t= 1,\t\t// DVD_VideoCompression_MPEG1\n\tMpeg2\t\t= 2\t\t\t// DVD_VideoCompression_MPEG2\n}\n\n\n\n// ---------------------------------------------------------------------------------------\n\n\t[StructLayout(LayoutKind.Sequential, Pack=1), ComVisible(false)]\npublic struct DvdPlayLocation\t\t// DVD_PLAYBACK_LOCATION2\n{\n\tpublic int\t\t\tTitleNum;\n\tpublic int\t\t\tChapterNum;\n\tpublic DvdTimeCode\ttimeCode;\n\tpublic int\t\t\tTimeCodeFlags;\n}\n\n// ---------------------------------------------------------------------------------------\n\n\t[StructLayout(LayoutKind.Sequential, Pack=1), ComVisible(false)]\npublic struct DvdMenuAttr\t\t// DVD_MenuAttributes\n{\n\t\t[MarshalAs( UnmanagedType.ByValArray, SizeConst=8 )]\n\tpublic bool[]\t\t\tcompatibleRegion;\n\tpublic DvdVideoAttr\t\tvideoAt;\t\t\t// DVD_VideoAttributes\n\n\tpublic bool\t\t\t\taudioPresent;\n\tpublic DvdAudioAttr\t\taudioAt;\t\t\t// DVD_AudioAttributes\n\n\tpublic bool\t\t\t\tsubPicPresent;\n\tpublic DvdSubPicAttr\tsubPicAt;\t\t\t// DVD_SubpictureAttributes\n}\n\n\n// ---------------------------------------------------------------------------------------\n\n\t[StructLayout(LayoutKind.Sequential, Pack=1), ComVisible(false)]\npublic struct DvdVideoAttr\t\t// DVD_VideoAttributes\n{\n\tpublic bool\t\tpanscanPermitted;\n\tpublic bool\t\tletterboxPermitted;\n\tpublic int\t\taspectX;\n\tpublic int\t\taspectY;\n\tpublic int\t\tframeRate;\n\tpublic int\t\tframeHeight;\n\tpublic DvdVideoCompress\tcompression;\n\tpublic bool\t\tline21Field1InGOP;\n\tpublic bool\t\tline21Field2InGOP;\n\tpublic int\t\tsourceResolutionX;\n\tpublic int\t\tsourceResolutionY;\n\tpublic bool\t\tisSourceLetterboxed;\n\tpublic bool\t\tisFilmMode;\n}\n\n\n// ---------------------------------------------------------------------------------------\n\npublic enum DvdAudioAppMode\t\t// DVD_AUDIO_APPMODE\n{\n\tNone\t\t= 0,\t\t// DVD_AudioMode_None\n\tKaraoke\t\t= 1,\t\t// DVD_AudioMode_Karaoke\n\tSurround\t= 2,\t\t// DVD_AudioMode_Surround\n\tOther\t\t= 3\t\t\t// DVD_AudioMode_Other\n}\n\n// ---------------------------------------------------------------------------------------\n\npublic enum DvdAudioFormat\t\t// DVD_AUDIO_FORMAT\n{\n\tAc3\t\t\t= 0,\t\t// DVD_AudioFormat_AC3\n\tMpeg1\t\t= 1,\t\t// DVD_AudioFormat_MPEG1\n\tMpeg1Drc\t= 2,\t\t// DVD_AudioFormat_MPEG1_DRC\n\tMpeg2\t\t= 3,\t\t// DVD_AudioFormat_MPEG2\n\tMpeg2Drc\t= 4,\t\t// DVD_AudioFormat_MPEG2_DRC\n\tLpcm\t\t= 5,\t\t// DVD_AudioFormat_LPCM\n\tDts\t\t\t= 6,\t\t// DVD_AudioFormat_DTS\n\tSdds\t\t= 7,\t\t// DVD_AudioFormat_SDDS\n\tOther\t\t= 8\t\t\t// DVD_AudioFormat_Other\n}\n\n\n// ---------------------------------------------------------------------------------------\n\n\t[StructLayout(LayoutKind.Sequential, Pack=1), ComVisible(false)]\npublic struct DvdAudioAttr\t\t// DVD_AudioAttributes\n{\n\tpublic DvdAudioAppMode\tappMode;\n\tpublic int\t\t\t\tappModeData;\n\tpublic DvdAudioFormat\taudioFormat;\n\tpublic int\t\t\t\tlanguage;\n\tpublic DvdAudioLangExt\tlanguageExtension;\n\tpublic bool\t\t\t\thasMultichannelInfo;\n\tpublic int\t\t\t\tfrequency;\n\tpublic byte\t\t\t\tquantization;\n\tpublic byte\t\t\t\tnumberOfChannels;\n\tpublic short\t\t\tdummy;\n\tpublic int\t\t\t\tres1;\n\tpublic int\t\t\t\tres2;\n}\n\n\n// ---------------------------------------------------------------------------------------\n\npublic enum DvdSubPicType\t\t// DVD_SUBPICTURE_TYPE\n{\n\tNotSpecified\t= 0,\t\t// DVD_SPType_NotSpecified\n\tLanguage\t\t= 1,\t\t// DVD_SPType_Language\n\tOther\t\t\t= 2\t\t\t// DVD_SPType_Other\n}\n\npublic enum DvdSubPicCoding\t\t// DVD_SUBPICTURE_CODING\n{\n\tRunLength\t= 0,\t\t// DVD_SPCoding_RunLength\n\tExtended\t= 1,\t\t// DVD_SPCoding_Extended\n\tOther\t\t= 2\t\t\t// DVD_SPCoding_Other\n}\n\n\n// ---------------------------------------------------------------------------------------\n\n\t[StructLayout(LayoutKind.Sequential, Pack=1), ComVisible(false)]\npublic struct DvdSubPicAttr\t\t// DVD_SubpictureAttributes\n{\n\tpublic DvdSubPicType\ttype;\n\tpublic DvdSubPicCoding\tcoding;\n\tpublic int\t\t\t\tlanguage;\n\tpublic DvdSubPicLangExt\tlanguageExt;\n}\n\n\n// ---------------------------------------------------------------------------------------\n\npublic enum DvdTitleAppMode\t\t// DVD_TITLE_APPMODE\n{\n\tNotSpecified\t= 0,\t\t// DVD_AppMode_Not_Specified\n\tKaraoke\t\t\t= 1,\t\t// DVD_AppMode_Karaoke\n\tOther\t\t\t= 3\t\t\t// DVD_AppMode_Other\n}\n\n// ---------------------------------------------------------------------------------------\n\n\t[StructLayout(LayoutKind.Sequential, Pack=1), ComVisible(false)]\npublic struct DvdTitleAttr\t\t// DVD_TitleAttributes\n{\n\tpublic DvdTitleAppMode\tappMode;\t\t// DVD_TITLE_APPMODE\n\tpublic DvdVideoAttr\t\tvideoAt;\t\t// DVD_VideoAttributes\n\tpublic int\t\t\t\tnumberOfAudioStreams;\n\t// WARNING: incomplete\n}\n\n\n// ---------------------------------------------------------------------------------------\n\npublic enum DvdDiscSide\t\t// DVD_DISC_SIDE\n{\n\tA\t\t\t= 1,\t\t// DVD_SIDE_A\n\tB\t\t\t= 2\t\t\t// DVD_SIDE_B\n}\n\n\n// ---------------------------------------------------------------------------------------\n\npublic enum DvdCharSet\t\t// DVD_TextCharSet\n{\n\tUnicode\t\t\t= 0,\t\t// DVD_CharSet_Unicode\n\tIso646\t\t\t= 1,\t\t// DVD_CharSet_ISO646\n\tJis\t\t\t\t= 2,\t\t// DVD_CharSet_JIS_Roman_Kanji\n\tIso8859\t\t\t= 3,\t\t// DVD_CharSet_ISO8859_1\n\tSiftJis\t\t\t= 4\t\t\t// DVD_CharSet_ShiftJIS_Kanji_Roman_Katakana\n}\n\n\n\n\n[Flags]\npublic enum DvdAudioCaps\t\t// DVD_AUDIO_CAPS_xx\n{\n\tAc3\t\t\t= 0x00000001,\t\t// DVD_AUDIO_CAPS_AC3\n\tMpeg2\t\t= 0x00000002,\t\t// DVD_AUDIO_CAPS_MPEG2\n\tLpcm\t\t= 0x00000004,\t\t// DVD_AUDIO_CAPS_LPCM\n\tDts\t\t\t= 0x00000008,\t\t// DVD_AUDIO_CAPS_DTS\n\tSdds\t\t= 0x00000010\t\t// DVD_AUDIO_CAPS_SDDS\n}\n\n\t[StructLayout(LayoutKind.Sequential, Pack=1), ComVisible(false)]\npublic struct DvdDecoderCaps\t\t// DVD_DECODER_CAPS\n{\n\tpublic int\t\t\tsize;\t\t\t// size of this struct\n\tpublic DvdAudioCaps\taudioCaps;\n\tpublic double\t\tfwdMaxRateVideo;\n\tpublic double\t\tfwdMaxRateAudio;\n\tpublic double\t\tfwdMaxRateSP;\n\tpublic double\t\tbwdMaxRateVideo;\n\tpublic double\t\tbwdMaxRateAudio;\n\tpublic double\t\tbwdMaxRateSP;\n\tpublic int\t\t\tres1;\n\tpublic int\t\t\tres2;\n\tpublic int\t\t\tres3;\n\tpublic int\t\t\tres4;\n}\n\n\n\n\n\n\n\n\n\n\n\n\n\n// ---------------------------------------------------------------------------------------\n\n\t[ComVisible(true), ComImport,\n\tGuid(\"34151510-EEC0-11D2-8201-00A0C9D74842\"),\n\tInterfaceType( ComInterfaceType.InterfaceIsIUnknown )]\npublic interface IDvdInfo2\n{\n\t\t[PreserveSig]\n\tint GetCurrentDomain( [Out] out DvdDomain pDomain );\n\n\t\t[PreserveSig]\n\tint GetCurrentLocation( [Out] out DvdPlayLocation pLocation );\n\n\t\t[PreserveSig]\n\tint GetTotalTitleTime( [Out] out DvdTimeCode pTotalTime, out int ulTimeCodeFlags );\n\n\t\t[PreserveSig]\n\tint GetCurrentButton( out int pulButtonsAvailable, out int pulCurrentButton );\n\n\t\t[PreserveSig]\n\tint GetCurrentAngle( out int pulAnglesAvailable, out int pulCurrentAngle );\n\n\t\t[PreserveSig]\n\tint GetCurrentAudio( out int pulStreamsAvailable, out int pulCurrentStream );\n\n\t\t[PreserveSig]\n\tint GetCurrentSubpicture( out int pulStreamsAvailable, out int pulCurrentStream,\n\t\t[Out, MarshalAs(UnmanagedType.Bool)]\t\t\tout\tbool\tpbIsDisabled );\n\n\t\t[PreserveSig]\n\tint GetCurrentUOPS( out int pulUOPs );\n\n\t\t[PreserveSig]\n\tint GetAllSPRMs( out IntPtr pRegisterArray );\n\n\t\t[PreserveSig]\n\tint GetAllGPRMs( out IntPtr pRegisterArray );\n\n\t\t[PreserveSig]\n\tint GetAudioLanguage( int ulStream, out int pLanguage );\n\n\t\t[PreserveSig]\n\tint GetSubpictureLanguage( int ulStream, out int pLanguage );\n\n\t\t[PreserveSig]\n\tint GetTitleAttributes( int ulTitle,\n\t\t[Out] out DvdMenuAttr pMenu, IntPtr pTitle );\t\t// incomplete\n\n\t\t[PreserveSig]\n\tint GetVMGAttributes( [Out] out DvdMenuAttr pATR );\n\n\t\t[PreserveSig]\n\tint GetCurrentVideoAttributes( [Out] out DvdVideoAttr pATR );\n\n\t\t[PreserveSig]\n\tint GetAudioAttributes( int ulStream, [Out] out DvdAudioAttr pATR );\n\n\t\t[PreserveSig]\n\tint GetKaraokeAttributes( int ulStream, IntPtr pATR );\n\n\t\t[PreserveSig]\n\tint GetSubpictureAttributes( int ulStream, [Out] out DvdSubPicAttr pATR );\n\n\t\t[PreserveSig]\n\tint GetDVDVolumeInfo( out int pulNumOfVolumes, out int pulVolume,\n\t\tout DvdDiscSide pSide, out int pulNumOfTitles );\n\n\t\t[PreserveSig]\n\tint GetDVDTextNumberOfLanguages( out int pulNumOfLangs );\n\n\t\t[PreserveSig]\n\tint GetDVDTextLanguageInfo( int ulLangIndex,\n\t\tout int pulNumOfStrings, out int pLangCode, out DvdCharSet pbCharacterSet );\n    \n\t\t[PreserveSig]\n\tint GetDVDTextStringAsNative( int ulLangIndex, int ulStringIndex,\n\t\tIntPtr pbBuffer, int ulMaxBufferSize, out int pulActualSize, out int pType );\n\n\t\t[PreserveSig]\n\tint GetDVDTextStringAsUnicode( int ulLangIndex, int ulStringIndex,\n\t\tIntPtr pchwBuffer, int ulMaxBufferSize, out int pulActualSize, out int pType );\n\n\t\t[PreserveSig]\n\tint GetPlayerParentalLevel( out int pulParentalLevel, [Out] byte[] pbCountryCode );\n\n\t\t[PreserveSig]\n\tint GetNumberOfChapters( int ulTitle, out int pulNumOfChapters );\n\n\t\t[PreserveSig]\n\tint GetTitleParentalLevels( int ulTitle, out int pulParentalLevels );\n\n\t\t[PreserveSig]\n\tint GetDVDDirectory( IntPtr pszwPath, int ulMaxSize, out int pulActualSize );\n\n\t\t[PreserveSig]\n\tint IsAudioStreamEnabled( int ulStreamNum,\n\t\t[Out, MarshalAs(UnmanagedType.Bool)]\t\tout\tbool\tpbEnabled );\n\n\t\t[PreserveSig]\n\tint GetDiscID(\n\t\t[In, MarshalAs(UnmanagedType.LPWStr)]\t\t\tstring\t\tpszwPath,\n\t\t\t\t\t\t\t\t\t\t\t\t\tout long\t\tpullDiscID );\n\t\t[PreserveSig]\n\tint GetState(\n\t\t[Out]\t\t\t\t\t\t\t\t\t\tout IDvdState\tpStateData );\n\n\t\t[PreserveSig]\n\tint GetMenuLanguages( [Out] int[] pLanguages, int ulMaxLanguages, out int pulActualLanguages );\n\n\t\t[PreserveSig]\n\tint GetButtonAtPosition( DsPOINT point, out int pulButtonIndex );\n\n\t\t[PreserveSig]\n\tint GetCmdFromEvent( int lParam1,\n\t\t[Out]\t\t\t\t\t\t\t\t\t\tout IDvdCmd\t\tpCmdObj );\n\n\t\t[PreserveSig]\n\tint GetDefaultMenuLanguage( out int pLanguage );\n\n\t\t[PreserveSig]\n\tint GetDefaultAudioLanguage( out int pLanguage, out DvdAudioLangExt pAudioExtension );\n\n\t\t[PreserveSig]\n\tint GetDefaultSubpictureLanguage( out int pLanguage, out DvdSubPicLangExt pSubpictureExtension );\n\n\t\t[PreserveSig]\n\tint GetDecoderCaps( ref DvdDecoderCaps pCaps );\n\n\t\t[PreserveSig]\n\tint GetButtonRect( int ulButton, out DsRECT pRect );\n\n\t\t[PreserveSig]\n\tint IsSubpictureStreamEnabled( int ulStreamNum,\n\t\t[Out, MarshalAs(UnmanagedType.Bool)]\t\tout\tbool\tpbEnabled );\n\n}\n\n\t[StructLayout(LayoutKind.Sequential), ComVisible(false)]\npublic class OptIDvdCmd\n{\n\tpublic IDvdCmd\t\tdvdCmd;\n}\n\n\n} // namespace DShowNET.Dvd\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Toolkit/DShow/DsDevice.cs",
    "content": "/******************************************************\n                  DirectShow .NET\n\t\t      netmaster@swissonline.ch\n*******************************************************/\n//\t\t\t\t\tDsDevice\n// enumerate directshow devices and moniker handling\n\n\nusing System;\nusing System.Collections;\nusing System.Runtime.InteropServices;\n\nnamespace DShowNET.Device\n{\n\n\t\t[ComVisible(false)]\n\tpublic class DsDev\n\t{\n\n\t\tpublic static bool GetDevicesOfCat( Guid cat, out ArrayList devs )\n\t\t{\n\t\t\tdevs = null;\n\t\t\tint hr;\n\t\t\tobject comObj = null;\n\t\t\tICreateDevEnum enumDev = null;\n\t\t\tUCOMIEnumMoniker enumMon = null;\n\t\t\tUCOMIMoniker[] mon = new UCOMIMoniker[1];\n\t\t\ttry {\n\t\t\t\tType\tsrvType = Type.GetTypeFromCLSID( Clsid.SystemDeviceEnum );\n\t\t\t\tif( srvType == null )\n\t\t\t\t\tthrow new NotImplementedException( \"System Device Enumerator\" );\n\n\t\t\t\tcomObj = Activator.CreateInstance( srvType );\n\t\t\t\tenumDev = (ICreateDevEnum) comObj;\n\t\t\t\thr = enumDev.CreateClassEnumerator( ref cat, out enumMon, 0 );\n\t\t\t\tif( hr != 0 )\n\t\t\t\t\tthrow new NotSupportedException( \"No devices of the category\" );\n\n\t\t\t\tint f, count = 0;\n\t\t\t\tdo\n\t\t\t\t{\n\t\t\t\t\thr = enumMon.Next( 1, mon, out f );\n\t\t\t\t\tif( (hr != 0) || (mon[0] == null) )\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tDsDevice dev = new DsDevice();\n\t\t\t\t\tdev.Name = GetFriendlyName( mon[0] );\n\t\t\t\t\tif( devs == null )\n\t\t\t\t\t\tdevs = new ArrayList();\n\t\t\t\t\tdev.Mon = mon[0]; mon[0] = null;\n\t\t\t\t\tdevs.Add( dev ); dev = null;\n\t\t\t\t\tcount++;\n\t\t\t\t}\n\t\t\t\twhile(true);\n\n\t\t\t\treturn count > 0;\n\t\t\t}\n\t\t\tcatch( Exception )\n\t\t\t{\n\t\t\t\tif( devs != null )\n\t\t\t\t{\n\t\t\t\t\tforeach( DsDevice d in devs )\n\t\t\t\t\t\td.Dispose();\n\t\t\t\t\tdevs = null;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tfinally\n\t\t\t{\n\t\t\t\tenumDev = null;\n\t\t\t\tif( mon[0] != null )\n\t\t\t\t\tMarshal.ReleaseComObject( mon[0] ); mon[0] = null;\n\t\t\t\tif( enumMon != null )\n\t\t\t\t\tMarshal.ReleaseComObject( enumMon ); enumMon = null;\n\t\t\t\tif( comObj != null )\n\t\t\t\t\tMarshal.ReleaseComObject( comObj ); comObj = null;\n\t\t\t}\n\n\t\t}\n\n\t\tprivate static string GetFriendlyName( UCOMIMoniker mon )\n\t\t{\n\t\t\tobject bagObj = null;\n\t\t\tIPropertyBag bag = null;\n\t\t\ttry {\n\t\t\t\tGuid bagId = typeof( IPropertyBag ).GUID;\n\t\t\t\tmon.BindToStorage( null, null, ref bagId, out bagObj );\n\t\t\t\tbag = (IPropertyBag) bagObj;\n\t\t\t\tobject val = \"\";\n\t\t\t\tint hr = bag.Read( \"FriendlyName\", ref val, IntPtr.Zero );\n\t\t\t\tif( hr != 0 )\n\t\t\t\t\tMarshal.ThrowExceptionForHR( hr );\n\t\t\t\tstring ret = val as string;\n\t\t\t\tif( (ret == null) || (ret.Length < 1) )\n\t\t\t\t\tthrow new NotImplementedException( \"Device FriendlyName\" );\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t\tcatch( Exception )\n\t\t\t{\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tfinally\n\t\t\t{\n\t\t\t\tbag = null;\n\t\t\t\tif( bagObj != null )\n\t\t\t\t\tMarshal.ReleaseComObject( bagObj ); bagObj = null;\n\t\t\t}\n\t\t}\n\t}\n\n\n\t\t[ComVisible(false)]\n\tpublic class DsDevice : IDisposable\n\t{\n\t\tpublic string\t\t\tName;\n\t\tpublic UCOMIMoniker\t\tMon;\n\t\t\n\t\tpublic void Dispose()\n\t\t{\n\t\t\tif( Mon != null )\n\t\t\t\tMarshal.ReleaseComObject( Mon ); Mon = null;\n\t\t}\n\t}\n\n\n\n\n\n\n\n\t[ComVisible(true), ComImport,\n\tGuid(\"29840822-5B84-11D0-BD3B-00A0C911CE86\"),\n\tInterfaceType( ComInterfaceType.InterfaceIsIUnknown )]\npublic interface ICreateDevEnum\n{\n\t\t[PreserveSig]\n\tint CreateClassEnumerator(\n\t\t[In]\t\t\t\t\t\t\t\t\t\t\tref Guid\t\t\tpType,\n\t\t[Out]\t\t\t\t\t\t\t\t\t\tout UCOMIEnumMoniker\tppEnumMoniker,\n\t\t[In]\t\t\t\t\t\t\t\t\t\t\tint\t\t\t\t\tdwFlags );\n}\n\n\n\n\t[ComVisible(true), ComImport,\n\tGuid(\"55272A00-42CB-11CE-8135-00AA004BB851\"),\n\tInterfaceType( ComInterfaceType.InterfaceIsIUnknown )]\npublic interface IPropertyBag\n{\n\t\t[PreserveSig]\n\tint Read(\n\t\t[In, MarshalAs(UnmanagedType.LPWStr)]\t\t\tstring\t\t\tpszPropName,\n\t\t[In, Out, MarshalAs(UnmanagedType.Struct)]\tref\tobject\t\t\tpVar,\n\t\tIntPtr pErrorLog );\n\n\t\t[PreserveSig]\n\tint Write(\n\t\t[In, MarshalAs(UnmanagedType.LPWStr)]\t\t\tstring\t\t\tpszPropName,\n\t\t[In, MarshalAs(UnmanagedType.Struct)]\t\tref\tobject\t\t\tpVar );\n}\n\n\n\n\n\n\n} // namespace DShowNET.Device\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Toolkit/DShow/DsExtend.cs",
    "content": "/******************************************************\n                  DirectShow .NET\n\t\t      netmaster@swissonline.ch\n*******************************************************/\n//\t\t\t\t\tDsExtend\n// Extended streaming interfaces, ported from axextend.idl\n\nusing System;\nusing System.Runtime.InteropServices;\n\nnamespace DShowNET\n{\n\n\n\n\t[ComVisible(true), ComImport,\n\tGuid(\"93E5A4E0-2D50-11d2-ABFA-00A0C9C6E38D\"),\n\tInterfaceType( ComInterfaceType.InterfaceIsIUnknown )]\npublic interface ICaptureGraphBuilder2\n{\n\t\t[PreserveSig]\n\tint SetFiltergraph( [In] IGraphBuilder pfg );\n\n\t\t[PreserveSig]\n\tint GetFiltergraph( [Out] out IGraphBuilder ppfg );\n\n\t\t[PreserveSig]\n\tint SetOutputFileName(\n\t\t[In]\t\t\t\t\t\t\t\t\t\t\tref Guid\t\tpType,\n\t\t[In, MarshalAs(UnmanagedType.LPWStr)]\t\t\tstring\t\t\tlpstrFile,\n\t\t[Out]\t\t\t\t\t\t\t\t\t\tout IBaseFilter\t\tppbf,\n\t\t[Out]\t\t\t\t\t\t\t\t\t\tout IFileSinkFilter\tppSink );\n\n\t\t[PreserveSig]\n\tint FindInterface(\n\t\t[In]\t\t\t\t\t\t\t\t\t\t\tref Guid\t\tpCategory,\n\t\t[In]\t\t\t\t\t\t\t\t\t\t\tref Guid\t\tpType,\n\t\t[In]\t\t\t\t\t\t\t\t\t\t\tIBaseFilter\t\tpbf,\n\t\t[In]\t\t\t\t\t\t\t\t\t\t\tref Guid\t\triid,\n\t\t[Out, MarshalAs(UnmanagedType.IUnknown) ]\t\tout\tobject\t\tppint );\n\n\t\t[PreserveSig]\n\tint RenderStream(\n\t\t[In]\t\t\t\t\t\t\t\t\t\tref Guid\t\tpCategory,\n\t\t[In]\t\t\t\t\t\t\t\t\t\tref Guid\t\tpType,\n\t\t[In, MarshalAs(UnmanagedType.IUnknown)]\t\t\tobject\t\t\tpSource,\n\t\t[In]\t\t\t\t\t\t\t\t\t\t\tIBaseFilter\t\tpfCompressor,\n\t\t[In]\t\t\t\t\t\t\t\t\t\t\tIBaseFilter\t\tpfRenderer );\n\n\t\t[PreserveSig]\n\tint ControlStream(\n\t\t[In]\t\t\t\t\t\t\t\t\t\tref Guid\t\t\tpCategory,\n\t\t[In]\t\t\t\t\t\t\t\t\t\tref Guid\t\t\tpType,\n\t\t[In]\t\t\t\t\t\t\t\t\t\t\tIBaseFilter\t\tpFilter,\n\t\t[In]\t\t\t\t\t\t\t\t\t\t\tIntPtr\t\t\tpstart,\n\t\t[In]\t\t\t\t\t\t\t\t\t\t\tIntPtr\t\t\tpstop,\n\t\t[In]\t\t\t\t\t\t\t\t\t\t\tshort\t\t\twStartCookie,\n\t\t[In]\t\t\t\t\t\t\t\t\t\t\tshort\t\t\twStopCookie );\n\n\t\t[PreserveSig]\n\tint AllocCapFile(\n\t\t[In, MarshalAs(UnmanagedType.LPWStr)]\t\t\tstring\t\t\tlpstrFile,\n\t\t[In]\t\t\t\t\t\t\t\t\t\t\tlong\t\t\tdwlSize );\n\n\t\t[PreserveSig]\n\tint CopyCaptureFile(\n\t\t[In, MarshalAs(UnmanagedType.LPWStr)]\t\t\tstring\t\t\tlpwstrOld,\n\t\t[In, MarshalAs(UnmanagedType.LPWStr)]\t\t\tstring\t\t\tlpwstrNew,\n\t\t[In]\t\t\t\t\t\t\t\t\t\t\tint\t\t\t\t\t\t\tfAllowEscAbort,\n\t\t[In]\t\t\t\t\t\t\t\t\t\t\tIAMCopyCaptureFileProgress\tpFilter );\n\n\n\t\t[PreserveSig]\n\tint FindPin(\n\t\t[In]\t\t\t\t\t\t\t\t\t\t\tobject\t\t\tpSource,\n\t\t[In]\t\t\t\t\t\t\t\t\t\t\tint\t\t\t\tpindir,\n\t\t[In]\t\t\t\t\t\t\t\t\t\tref Guid\t\t\tpCategory,\n\t\t[In]\t\t\t\t\t\t\t\t\t\tref Guid\t\t\tpType,\n\t\t[In, MarshalAs(UnmanagedType.Bool) ]\t\t\tbool\t\t\tfUnconnected,\n\t\t[In]\t\t\t\t\t\t\t\t\t\t\tint\t\t\t\tnum,\n\t\t[Out]\t\t\t\t\t\t\t\t\t\tout IPin\t\t\tppPin );\n}\n\n\n\n\n\n\t[ComVisible(true), ComImport,\n\tGuid(\"56a868a9-0ad4-11ce-b03a-0020af0ba770\"),\n\tInterfaceType( ComInterfaceType.InterfaceIsIUnknown )]\npublic interface IGraphBuilder\n{\n\t#region \"IFilterGraph Methods\"\n\t\t\t[PreserveSig]\n\t\tint AddFilter(\n\t\t\t[In] IBaseFilter pFilter,\n\t\t\t[In, MarshalAs(UnmanagedType.LPWStr)]\t\t\tstring\t\t\tpName );\n\n\t\t\t[PreserveSig]\n\t\tint RemoveFilter( [In] IBaseFilter pFilter );\n\n\t\t\t[PreserveSig]\n\t\tint EnumFilters( [Out] out IEnumFilters ppEnum );\n\n\t\t\t[PreserveSig]\n\t\tint FindFilterByName(\n\t\t\t[In, MarshalAs(UnmanagedType.LPWStr)]\t\t\tstring\t\t\tpName,\n\t\t\t[Out]\t\t\t\t\t\t\t\t\t\tout IBaseFilter\t\tppFilter );\n\n\t\t\t[PreserveSig]\n\t\tint ConnectDirect( [In] IPin ppinOut, [In] IPin ppinIn,\n\t\t\t[In, MarshalAs(UnmanagedType.LPStruct)]\t\t\tAMMediaType\tpmt );\n\n\t\t\t[PreserveSig]\n\t\tint Reconnect( [In] IPin ppin );\n\n\t\t\t[PreserveSig]\n\t\tint Disconnect( [In] IPin ppin );\n\n\t\t\t[PreserveSig]\n\t\tint SetDefaultSyncSource();\n\t#endregion\n\n\t\t[PreserveSig]\n\tint Connect( [In] IPin ppinOut, [In] IPin ppinIn );\n\n\t\t[PreserveSig]\n\tint Render( [In] IPin ppinOut );\n\n\t\t[PreserveSig]\n\tint RenderFile(\n\t\t[In, MarshalAs(UnmanagedType.LPWStr)]\t\t\tstring\t\t\tlpcwstrFile,\n\t\t[In, MarshalAs(UnmanagedType.LPWStr)]\t\t\tstring\t\t\tlpcwstrPlayList );\n\n\t\t[PreserveSig]\n\tint AddSourceFilter(\n\t\t[In, MarshalAs(UnmanagedType.LPWStr)]\t\t\tstring\t\t\tlpcwstrFileName,\n\t\t[In, MarshalAs(UnmanagedType.LPWStr)]\t\t\tstring\t\t\tlpcwstrFilterName,\n\t\t[Out]\t\t\t\t\t\t\t\t\t\tout IBaseFilter\t\tppFilter );\n\n\t\t[PreserveSig]\n\tint SetLogFile( IntPtr hFile );\n\n\t\t[PreserveSig]\n\tint Abort();\n\n\t\t[PreserveSig]\n\tint ShouldOperationContinue();\n}\n\n\n\n\n\n\n\n// ---------------------------------------------------------------------------------------\n\n\n\t[ComVisible(true), ComImport,\n\tGuid(\"a2104830-7c70-11cf-8bce-00aa00a3f1a6\"),\n\tInterfaceType( ComInterfaceType.InterfaceIsIUnknown )]\npublic interface IFileSinkFilter\n{\n\t[PreserveSig]\n\tint SetFileName(\n\t\t[In, MarshalAs(UnmanagedType.LPWStr)]\t\t\tstring\t\tpszFileName,\n\t\t[In, MarshalAs(UnmanagedType.LPStruct)]\t\t\tAMMediaType\tpmt );\n\t\n\t[PreserveSig]\n\tint GetCurFile(\n\t\t[Out, MarshalAs(UnmanagedType.LPWStr) ]\t\tout\tstring\t\tpszFileName,\n\t\t[Out, MarshalAs(UnmanagedType.LPStruct) ]\t\tAMMediaType pmt );\n}\n\n\n\n\n\n\n// ---------------------------------------------------------------------------------------\n\n\t[ComVisible(true), ComImport,\n\tGuid(\"670d1d20-a068-11d0-b3f0-00aa003761c5\"),\n\tInterfaceType( ComInterfaceType.InterfaceIsIUnknown )]\npublic interface IAMCopyCaptureFileProgress\n{\n\t\t[PreserveSig]\n\tint Progress( int iProgress );\n}\n\n\n\n\n\n\n\n\n// ---------------------------------------------------------------------------------------\n\n\t[ComVisible(true), ComImport,\n\tGuid(\"e46a9787-2b71-444d-a4b5-1fab7b708d6a\"),\n\tInterfaceType( ComInterfaceType.InterfaceIsIUnknown )]\npublic interface IVideoFrameStep\n{\n\t\t[PreserveSig]\n\tint Step( int dwFrames,\n\t\t[In, MarshalAs(UnmanagedType.IUnknown)]\t\t\tobject\t\t\tpStepObject );\n\n\t\t[PreserveSig]\n\tint CanStep( int bMultiple,\n\t\t[In, MarshalAs(UnmanagedType.IUnknown)]\t\t\tobject\t\t\tpStepObject );\n\n\t\t[PreserveSig]\n\tint CancelStep();\n}\n\n\n\n\n\n\n\n\n// ---------------------------------------------------------------------------------------\n\n\t[ComVisible(true), ComImport,\n\tGuid(\"C6E13340-30AC-11d0-A18C-00A0C9118956\"),\n\tInterfaceType( ComInterfaceType.InterfaceIsIUnknown )]\npublic interface IAMStreamConfig\n{\n\t\t[PreserveSig]\n\tint SetFormat(\n\t\t[In, MarshalAs(UnmanagedType.LPStruct)]\t\t\tAMMediaType\tpmt );\n\n\t\t[PreserveSig]\n\tint GetFormat(\n\t\t[Out, MarshalAs(UnmanagedType.LPStruct)]\t\tAMMediaType\tpmt );\n\n\t\t[PreserveSig]\n\tint GetNumberOfCapabilities( out int piCount, out int piSize );\n\n\t\t[PreserveSig]\n\tint GetStreamCaps( int iIndex,\n\t\t[Out, MarshalAs(UnmanagedType.LPStruct)]\tout AMMediaType\tppmt,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tIntPtr\t\tpSCC );\n    }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n// =============================================================================\n//\t\t\t\t\t\t\t\t\t\t\tTUNER\n// =============================================================================\n\n\t[ComVisible(false)]\npublic enum AMTunerSubChannel\n{\n\tNoTune\t\t= -2,\t// AMTUNER_SUBCHAN_NO_TUNE : don't tune\n\tDefault\t\t= -1\t// AMTUNER_SUBCHAN_DEFAULT : use default sub chan\n}\n\n\t[ComVisible(false)]\npublic enum AMTunerSignalStrength\n{\n\tNA\t\t\t\t= -1,\t// AMTUNER_HASNOSIGNALSTRENGTH : cannot indicate signal strength\n\tNoSignal\t\t= 0,\t// AMTUNER_NOSIGNAL : no signal available\n\tSignalPresent\t= 1\t\t// AMTUNER_SIGNALPRESENT : signal present\n}\n\n\t[Flags, ComVisible(false)]\npublic enum AMTunerModeType\n{\n\tDefault\t\t= 0x0000,\t// AMTUNER_MODE_DEFAULT : default tuner mode\n\tTV\t\t\t= 0x0001,\t// AMTUNER_MODE_TV : tv\n\tFMRadio\t\t= 0x0002,\t// AMTUNER_MODE_FM_RADIO : fm radio\n\tAMRadio\t\t= 0x0004,\t// AMTUNER_MODE_AM_RADIO : am radio\n\tDss\t\t\t= 0x0008\t// AMTUNER_MODE_DSS : dss\n}\n\n\t[ComVisible(false)]\npublic enum AMTunerEventType\n{\n\tChanged\t\t= 0x0001,\t// AMTUNER_EVENT_CHANGED : status changed\n}\n\n\n// ---------------------------------------------------------------------------------------\n\n\t[ComVisible(true), ComImport,\n\tGuid(\"211A8761-03AC-11d1-8D13-00AA00BD8339\"),\n\tInterfaceType( ComInterfaceType.InterfaceIsIUnknown )]\npublic interface IAMTuner\n{\n\t\t[PreserveSig]\n\tint put_Channel( int lChannel, AMTunerSubChannel lVideoSubChannel, AMTunerSubChannel lAudioSubChannel );\n\n\t\t[PreserveSig]\n\tint get_Channel( out int plChannel, out int plVideoSubChannel, out int plAudioSubChannel );\n    \n\t\t[PreserveSig]\n\tint ChannelMinMax( out int lChannelMin, out int lChannelMax );\n        \n\t\t[PreserveSig]\n\tint put_CountryCode( int lCountryCode );\n\n\t\t[PreserveSig]\n\tint get_CountryCode( out int plCountryCode );\n\n\t\t[PreserveSig]\n\tint put_TuningSpace( int lTuningSpace );\n\n\t\t[PreserveSig]\n\tint get_TuningSpace( out int plTuningSpace );\n\n\t\t[PreserveSig]\n\tint Logon( IntPtr hCurrentUser );\n    \n\t\t[PreserveSig]\n\tint Logout();\n\n\t\t[PreserveSig]\n\tint SignalPresent( out AMTunerSignalStrength plSignalStrength );\n    \n\t\t[PreserveSig]\n\tint put_Mode( AMTunerModeType lMode );\n\n\t\t[PreserveSig]\n\tint get_Mode( out AMTunerModeType plMode );\n    \n\t\t[PreserveSig]\n\tint GetAvailableModes( out AMTunerModeType plModes );\n    \n\t\t[PreserveSig]\n\tint RegisterNotificationCallBack( IAMTunerNotification pNotify, AMTunerEventType lEvents );\n\n\t\t[PreserveSig]\n\tint UnRegisterNotificationCallBack( IAMTunerNotification pNotify );\n}\n\n\n// ---------------------------------------------------------------------------------------\n\n\t[ComVisible(true), ComImport,\n\tGuid(\"211A8760-03AC-11d1-8D13-00AA00BD8339\"),\n\tInterfaceType( ComInterfaceType.InterfaceIsIUnknown )]\npublic interface IAMTunerNotification\n{\n\t\t[PreserveSig]\n\tint OnEvent( AMTunerEventType Event );\n}\n\n\n// ---------------------------------------------------------------------------------------\n\t[Flags, ComVisible(false)]\npublic enum AnalogVideoStandard\n{\n\tNone\t\t= 0x00000000,  // This is a digital sensor\n\tNTSC_M\t\t= 0x00000001,  //        75 IRE Setup\n\tNTSC_M_J\t= 0x00000002,  // Japan,  0 IRE Setup\n\tNTSC_433\t= 0x00000004,\n\tPAL_B\t\t= 0x00000010,\n\tPAL_D\t\t= 0x00000020,\n\tPAL_G\t\t= 0x00000040,\n\tPAL_H\t\t= 0x00000080,\n\tPAL_I\t\t= 0x00000100,\n\tPAL_M\t\t= 0x00000200,\n\tPAL_N\t\t= 0x00000400,\n\tPAL_60\t\t= 0x00000800,\n\tSECAM_B\t\t= 0x00001000,\n\tSECAM_D\t\t= 0x00002000,\n\tSECAM_G\t\t= 0x00004000,\n\tSECAM_H\t\t= 0x00008000,\n\tSECAM_K\t\t= 0x00010000,\n\tSECAM_K1\t= 0x00020000,\n\tSECAM_L\t\t= 0x00040000,\n\tSECAM_L1\t= 0x00080000,\n\tPAL_N_COMBO\t= 0x00100000\t// Argentina\n}\n\n\t[ComVisible(false)]\npublic enum TunerInputType\n{\n\tCable,\n\tAntenna\n}\n\n\n// ---------------------------------------------------------------------------------------\n\n\t[ComVisible(true), ComImport,\n\tGuid(\"211A8766-03AC-11d1-8D13-00AA00BD8339\"),\n\tInterfaceType( ComInterfaceType.InterfaceIsIUnknown )]\npublic interface IAMTVTuner\n{\n\n\t#region \"IAMTuner Methods\"\n\t\t\t[PreserveSig]\n\t\tint put_Channel( int lChannel, AMTunerSubChannel lVideoSubChannel, AMTunerSubChannel lAudioSubChannel );\n\n\t\t\t[PreserveSig]\n\t\tint get_Channel( out int plChannel, out int plVideoSubChannel, out int plAudioSubChannel );\n\t    \n\t\t\t[PreserveSig]\n\t\tint ChannelMinMax( out int lChannelMin, out int lChannelMax );\n\t        \n\t\t\t[PreserveSig]\n\t\tint put_CountryCode( int lCountryCode );\n\n\t\t\t[PreserveSig]\n\t\tint get_CountryCode( out int plCountryCode );\n\n\t\t\t[PreserveSig]\n\t\tint put_TuningSpace( int lTuningSpace );\n\n\t\t\t[PreserveSig]\n\t\tint get_TuningSpace( out int plTuningSpace );\n\n\t\t\t[PreserveSig]\n\t\tint Logon( IntPtr hCurrentUser );\n\t    \n\t\t\t[PreserveSig]\n\t\tint Logout();\n\n\t\t\t[PreserveSig]\n\t\tint SignalPresent( out AMTunerSignalStrength plSignalStrength );\n\t    \n\t\t\t[PreserveSig]\n\t\tint put_Mode( AMTunerModeType lMode );\n\n\t\t\t[PreserveSig]\n\t\tint get_Mode( out AMTunerModeType plMode );\n\t    \n\t\t\t[PreserveSig]\n\t\tint GetAvailableModes( out AMTunerModeType plModes );\n\t    \n\t\t\t[PreserveSig]\n\t\tint RegisterNotificationCallBack( IAMTunerNotification pNotify, AMTunerEventType lEvents );\n\n\t\t\t[PreserveSig]\n\t\tint UnRegisterNotificationCallBack( IAMTunerNotification pNotify );\n\t#endregion\n\n\t\t[PreserveSig]\n\tint get_AvailableTVFormats( out AnalogVideoStandard lAnalogVideoStandard );\n\n\t\t[PreserveSig]\n\tint get_TVFormat( out AnalogVideoStandard lAnalogVideoStandard );\n    \n\t\t[PreserveSig]\n\tint AutoTune( int lChannel, out int plFoundSignal );\n    \n\t\t[PreserveSig]\n\tint StoreAutoTune();\n    \n\t\t[PreserveSig]\n\tint get_NumInputConnections( out int plNumInputConnections );\n    \n\t\t[PreserveSig]\n\tint put_InputType( int lIndex, TunerInputType inputType );\n    \n\t\t[PreserveSig]\n\tint get_InputType( int lIndex, out TunerInputType inputType );\n\n\t\t[PreserveSig]\n\tint put_ConnectInput( int lIndex );\n    \n\t\t[PreserveSig]\n\tint get_ConnectInput( out int lIndex );\n\n\t\t[PreserveSig]\n\tint get_VideoFrequency( out int lFreq );\n\n\t\t[PreserveSig]\n\tint get_AudioFrequency( out int lFreq );\n}\n\n\n} // namespace DShowNET\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Toolkit/DShow/DsUtils.cs",
    "content": "/******************************************************\n                  DirectShow .NET\n\t\t      netmaster@swissonline.ch\n*******************************************************/\n//\t\t\t\t\tDsUtils\n// DirectShow utility classes, partial from the SDK Common sources\n\nusing System;\nusing System.IO;\nusing System.Text;\nusing System.Runtime.InteropServices;\nusing System.Diagnostics;\n\nnamespace DShowNET\n{\n\n\t\t[ComVisible(false)]\n\tpublic class DsUtils\n\t{\n\n\t\tpublic static bool IsCorrectDirectXVersion()\n\t\t{\n\t\t\treturn File.Exists( Path.Combine( Environment.SystemDirectory, @\"dpnhpast.dll\" ) );\n\t\t}\n\n\n\t\tpublic static bool ShowCapPinDialog( ICaptureGraphBuilder2 bld, IBaseFilter flt, IntPtr hwnd )\n\t\t{\n\t\t\tint hr;\n\t\t\tobject comObj = null;\n\t\t\tISpecifyPropertyPages\tspec = null;\n\t\t\tDsCAUUID cauuid = new DsCAUUID();\n\n\t\t\ttry {\n\t\t\t\tGuid cat  = PinCategory.Capture;\n\t\t\t\tGuid type = MediaType.Interleaved;\n\t\t\t\tGuid iid = typeof(IAMStreamConfig).GUID;\n\t\t\t\thr = bld.FindInterface( ref cat, ref type, flt, ref iid, out comObj );\n\t\t\t\tif( hr != 0 )\n\t\t\t\t{\n\t\t\t\t\ttype = MediaType.Video;\n\t\t\t\t\thr = bld.FindInterface( ref cat, ref type, flt, ref iid, out comObj );\n\t\t\t\t\tif( hr != 0 )\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tspec = comObj as ISpecifyPropertyPages;\n\t\t\t\tif( spec == null )\n\t\t\t\t\treturn false;\n\n\t\t\t\thr = spec.GetPages( out cauuid );\n\t\t\t\thr = OleCreatePropertyFrame( hwnd, 30, 30, null, 1,\n\t\t\t\t\t\tref comObj, cauuid.cElems, cauuid.pElems, 0, 0, IntPtr.Zero );\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tcatch( Exception ee )\n\t\t\t{\n\t\t\t\tTrace.WriteLine( \"!Ds.NET: ShowCapPinDialog \" + ee.Message );\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tfinally\n\t\t\t{\n\t\t\t\tif( cauuid.pElems != IntPtr.Zero )\n\t\t\t\t\tMarshal.FreeCoTaskMem( cauuid.pElems );\n\t\t\t\t\t\n\t\t\t\tspec = null;\n\t\t\t\tif( comObj != null )\n\t\t\t\t\tMarshal.ReleaseComObject( comObj ); comObj = null;\n\t\t\t}\n\t\t}\n\n\t\tpublic static bool ShowTunerPinDialog( ICaptureGraphBuilder2 bld, IBaseFilter flt, IntPtr hwnd )\n\t\t{\n\t\t\tint hr;\n\t\t\tobject comObj = null;\n\t\t\tISpecifyPropertyPages\tspec = null;\n\t\t\tDsCAUUID cauuid = new DsCAUUID();\n\n\t\t\ttry {\n\t\t\t\tGuid cat  = PinCategory.Capture;\n\t\t\t\tGuid type = MediaType.Interleaved;\n\t\t\t\tGuid iid = typeof(IAMTVTuner).GUID;\n\t\t\t\thr = bld.FindInterface( ref cat, ref type, flt, ref iid, out comObj );\n\t\t\t\tif( hr != 0 )\n\t\t\t\t{\n\t\t\t\t\ttype = MediaType.Video;\n\t\t\t\t\thr = bld.FindInterface( ref cat, ref type, flt, ref iid, out comObj );\n\t\t\t\t\tif( hr != 0 )\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tspec = comObj as ISpecifyPropertyPages;\n\t\t\t\tif( spec == null )\n\t\t\t\t\treturn false;\n\n\t\t\t\thr = spec.GetPages( out cauuid );\n\t\t\t\thr = OleCreatePropertyFrame( hwnd, 30, 30, null, 1,\n\t\t\t\t\t\tref comObj, cauuid.cElems, cauuid.pElems, 0, 0, IntPtr.Zero );\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tcatch( Exception ee )\n\t\t\t{\n\t\t\t\tTrace.WriteLine( \"!Ds.NET: ShowCapPinDialog \" + ee.Message );\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tfinally\n\t\t\t{\n\t\t\t\tif( cauuid.pElems != IntPtr.Zero )\n\t\t\t\t\tMarshal.FreeCoTaskMem( cauuid.pElems );\n\t\t\t\t\t\n\t\t\t\tspec = null;\n\t\t\t\tif( comObj != null )\n\t\t\t\t\tMarshal.ReleaseComObject( comObj ); comObj = null;\n\t\t\t}\n\t\t}\n\n\n\t\t// from 'DShowUtil.cpp'\n\t\tpublic int GetPin( IBaseFilter filter, PinDirection dirrequired, int num, out IPin ppPin )\n\t\t{\n\t\t\tppPin = null;\n\t\t\tint hr;\n\t\t\tIEnumPins pinEnum;\n\t\t\thr = filter.EnumPins( out pinEnum );\n\t\t\tif( (hr < 0) || (pinEnum == null) )\n\t\t\t\treturn hr;\n\n\t\t\tIPin[] pins = new IPin[1];\n\t\t\tint f;\n\t\t\tPinDirection dir;\n\t\t\tdo\n\t\t\t{\n\t\t\t\thr = pinEnum.Next( 1, out pins, out f );\n\t\t\t\tif( (hr != 0) || (pins[0] == null) )\n\t\t\t\t\tbreak;\n\t\t\t\tdir = (PinDirection) 3;\n\t\t\t\thr = pins[0].QueryDirection( out dir );\n\t\t\t\tif( (hr == 0) && (dir == dirrequired) )\n\t\t\t\t{\n\t\t\t\t\tif( num == 0 )\n\t\t\t\t\t{\n\t\t\t\t\t\tppPin = pins[0];\n\t\t\t\t\t\tpins[0] = null;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tnum--;\n\t\t\t\t}\n\t\t\t\tMarshal.ReleaseComObject( pins[0] ); pins[0] = null;\n\t\t\t}\n\t\t\twhile( hr == 0 );\n\n\t\t\tMarshal.ReleaseComObject( pinEnum ); pinEnum = null;\n\t\t\treturn hr;\n\t\t}\n\n\t\t[DllImport(\"olepro32.dll\", CharSet=CharSet.Unicode, ExactSpelling=true) ]\n\t\tprivate static extern int OleCreatePropertyFrame( IntPtr hwndOwner, int x, int y,\n\t\t\tstring lpszCaption, int cObjects,\n\t\t\t[In, MarshalAs(UnmanagedType.Interface)] ref object ppUnk,\n\t\t\tint cPages,\tIntPtr pPageClsID, int lcid, int dwReserved, IntPtr pvReserved );\n\t}\n\n\n// ---------------------------------------------------------------------------------------\n\n\t[StructLayout(LayoutKind.Sequential), ComVisible(false)]\npublic struct DsPOINT\t\t// POINT\n{\n\tpublic int\t\tX;\n\tpublic int\t\tY;\n}\n\n\n// ---------------------------------------------------------------------------------------\n\n\t[StructLayout(LayoutKind.Sequential), ComVisible(false)]\npublic struct DsRECT\t\t// RECT\n{\n\tpublic int\t\tLeft;\n\tpublic int\t\tTop;\n\tpublic int\t\tRight;\n\tpublic int\t\tBottom;\n}\n\n\n// ---------------------------------------------------------------------------------------\n\n\t[StructLayout(LayoutKind.Sequential, Pack=2), ComVisible(false)]\npublic struct DsBITMAPINFOHEADER\n\t{\n\tpublic int      Size;\n\tpublic int      Width;\n\tpublic int      Height;\n\tpublic short    Planes;\n\tpublic short    BitCount;\n\tpublic int      Compression;\n\tpublic int      ImageSize;\n\tpublic int      XPelsPerMeter;\n\tpublic int      YPelsPerMeter;\n\tpublic int      ClrUsed;\n\tpublic int      ClrImportant;\n\t}\n\n\n\n\n// ---------------------------------------------------------------------------------------\n\n\t\t[ComVisible(false)]\n\tpublic class DsROT\n\t{\n\t\tpublic static bool AddGraphToRot( object graph, out int cookie )\n\t\t{\n\t\t\tcookie = 0;\n\t\t\tint hr = 0;\n\t\t\tUCOMIRunningObjectTable rot = null;\n\t\t\tUCOMIMoniker mk = null;\n\t\t\ttry {\n\t\t\t\thr = GetRunningObjectTable( 0, out rot );\n\t\t\t\tif( hr < 0 )\n\t\t\t\t\tMarshal.ThrowExceptionForHR( hr );\n\n\t\t\t\tint id = GetCurrentProcessId();\n\t\t\t\tIntPtr iuPtr = Marshal.GetIUnknownForObject( graph );\n\t\t\t\tint iuInt = (int) iuPtr;\n\t\t\t\tMarshal.Release( iuPtr );\n\t\t\t\tstring item = string.Format( \"FilterGraph {0} pid {1}\", iuInt.ToString(\"x8\"), id.ToString(\"x8\") );\n\t\t\t\thr = CreateItemMoniker( \"!\", item, out mk );\n\t\t\t\tif( hr < 0 )\n\t\t\t\t\tMarshal.ThrowExceptionForHR( hr );\n\t\t\t\t\n\t\t\t\trot.Register( ROTFLAGS_REGISTRATIONKEEPSALIVE, graph, mk, out cookie );\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tcatch( Exception )\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tfinally\n\t\t\t{\n\t\t\t\tif( mk != null )\n\t\t\t\t\tMarshal.ReleaseComObject( mk ); mk = null;\n\t\t\t\tif( rot != null )\n\t\t\t\t\tMarshal.ReleaseComObject( rot ); rot = null;\n\t\t\t}\n\t\t}\n\n\t\tpublic static bool RemoveGraphFromRot( ref int cookie )\n\t\t{\n\t\t\tUCOMIRunningObjectTable rot = null;\n\t\t\ttry {\n\t\t\t\tint hr = GetRunningObjectTable( 0, out rot );\n\t\t\t\tif( hr < 0 )\n\t\t\t\t\tMarshal.ThrowExceptionForHR( hr );\n\n\t\t\t\trot.Revoke( cookie );\n\t\t\t\tcookie = 0;\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tcatch( Exception )\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tfinally\n\t\t\t{\n\t\t\t\tif( rot != null )\n\t\t\t\t\tMarshal.ReleaseComObject( rot ); rot = null;\n\t\t\t}\n\t\t}\n\n\t\tprivate const int ROTFLAGS_REGISTRATIONKEEPSALIVE\t= 1;\n\n\t\t[DllImport(\"ole32.dll\", ExactSpelling=true) ]\n\t\tprivate static extern int GetRunningObjectTable( int r,\n\t\t\tout UCOMIRunningObjectTable pprot );\n\n\t\t[DllImport(\"ole32.dll\", CharSet=CharSet.Unicode, ExactSpelling=true) ]\n\t\tprivate static extern int CreateItemMoniker( string delim,\n\t\t\tstring item, out UCOMIMoniker ppmk );\n\n\t\t[DllImport(\"kernel32.dll\", ExactSpelling=true) ]\n\t\tprivate static extern int GetCurrentProcessId();\n\t}\n\n\n\n\n\n// ---------------------------------- ocidl.idl ------------------------------------------------\n\n\t[ComVisible(true), ComImport,\n\tGuid(\"B196B28B-BAB4-101A-B69C-00AA00341D07\"),\n\tInterfaceType( ComInterfaceType.InterfaceIsIUnknown )]\npublic interface ISpecifyPropertyPages\n{\n\t\t[PreserveSig]\n\tint GetPages( out DsCAUUID pPages );\n}\n\n\t[StructLayout(LayoutKind.Sequential), ComVisible(false)]\npublic struct DsCAUUID\t\t// CAUUID\n{\n\tpublic int\t\tcElems;\n\tpublic IntPtr\tpElems;\n}\n\n// ---------------------------------------------------------------------------------------\n\n\n\t[StructLayout(LayoutKind.Sequential), ComVisible(false)]\npublic class DsOptInt64\n{\n\tpublic DsOptInt64( long Value )\n\t{\n\t\tthis.Value = Value;\n\t}\n\tpublic long\t\tValue;\n}\n\n\n\t[StructLayout(LayoutKind.Sequential), ComVisible(false)]\npublic class DsOptIntPtr\n{\n\tpublic IntPtr\tPointer;\n}\n\n\n\n} // namespace DShowNET\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Toolkit/DShow/DsUuids.cs",
    "content": "/******************************************************\n                  DirectShow .NET\n\t\t      netmaster@swissonline.ch\n*******************************************************/\n//\t\t\t\tUUIDs from uuids.h\n\nusing System;\nusing System.Runtime.InteropServices;\n\nnamespace DShowNET\n{\n\n\n\t[ComVisible(false)]\npublic class FilterCategory\t\t// uuids.h  :  CLSID_*\n{\n\t\t/// <summary> CLSID_AudioInputDeviceCategory, audio capture category </summary>\n\tpublic static readonly Guid AudioInputDevice\t= new Guid( 0x33d9a762,0x90c8,0x11d0,0xbd,0x43,0x00,0xa0,0xc9,0x11,0xce,0x86 );\n\n\t\t/// <summary> CLSID_VideoInputDeviceCategory, video capture category </summary>\n\tpublic static readonly Guid VideoInputDevice\t= new Guid( 0x860BB310,0x5D01,0x11d0,0xBD,0x3B,0x00,0xA0,0xC9,0x11,0xCE,0x86 );\n}\n\n\n\n\t[ComVisible(false)]\npublic class Clsid\t\t// uuids.h  :  CLSID_*\n{\n\t\t/// <summary> CLSID_SystemDeviceEnum for ICreateDevEnum </summary>\n\tpublic static readonly Guid SystemDeviceEnum\t\t\t= new Guid( 0x62BE5D10,0x60EB,0x11d0,0xBD,0x3B,0x00,0xA0,0xC9,0x11,0xCE,0x86 );\n\n\t\t/// <summary> CLSID_FilterGraph, filter Graph </summary>\n\tpublic static readonly Guid FilterGraph\t\t= new Guid( 0xe436ebb3, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70 );\n\n\t\t/// <summary> CLSID_CaptureGraphBuilder2, new Capture graph building </summary>\n\tpublic static readonly Guid CaptureGraphBuilder2\t= new Guid( 0xBF87B6E1, 0x8C27, 0x11d0, 0xB3, 0xF0, 0x0, 0xAA, 0x00, 0x37, 0x61, 0xC5 );\n\n\t\t/// <summary> CLSID_SampleGrabber, Sample Grabber filter </summary>\n\tpublic static readonly Guid SampleGrabber\t= new Guid( 0xC1F400A0, 0x3F08, 0x11D3, 0x9F, 0x0B, 0x00, 0x60, 0x08, 0x03, 0x9E, 0x37 );\n\n\t\t/// <summary> CLSID_DvdGraphBuilder,  DVD graph builder </summary>\n\tpublic static readonly Guid DvdGraphBuilder\t= new Guid( 0xFCC152B7, 0xF372, 0x11d0, 0x8E, 0x00, 0x00, 0xC0, 0x4F, 0xD7, 0xC0, 0x8B );\n\n}\n\n\n\n\t[ComVisible(false)]\npublic class MediaType\t\t// MEDIATYPE_*\n{\n\t\t/// <summary> MEDIATYPE_Video 'vids' </summary>\n\tpublic static readonly Guid Video\t\t= new Guid( 0x73646976, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71 );\n\n\t\t/// <summary> MEDIATYPE_Interleaved 'iavs' </summary>\n\tpublic static readonly Guid Interleaved\t= new Guid( 0x73766169, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71 );\n\n\t\t/// <summary> MEDIATYPE_Audio 'auds' </summary>\n\tpublic static readonly Guid Audio\t\t= new Guid( 0x73647561, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71 );\n\n\t\t/// <summary> MEDIATYPE_Text 'txts' </summary>\n\tpublic static readonly Guid Text\t\t= new Guid( 0x73747874, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71 );\n\n\t\t/// <summary> MEDIATYPE_Stream </summary>\n\tpublic static readonly Guid Stream\t\t= new Guid( 0xe436eb83, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70 );\n}\n\n\t[ComVisible(false)]\npublic class MediaSubType\t\t// MEDIASUBTYPE_*\n{\n\t\t/// <summary> MEDIASUBTYPE_YUYV 'YUYV' </summary>\n\tpublic static readonly Guid YUYV\t= new Guid( 0x56595559, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71 );\n\n\t\t/// <summary> MEDIASUBTYPE_IYUV 'IYUV' </summary>\n\tpublic static readonly Guid IYUV\t= new Guid( 0x56555949, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71 );\n\n\t\t/// <summary> MEDIASUBTYPE_DVSD 'DVSD' </summary>\n\tpublic static readonly Guid DVSD\t= new Guid( 0x44535644, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71 );\n\n\t\t/// <summary> MEDIASUBTYPE_RGB1 'RGB1' </summary>\n\tpublic static readonly Guid RGB1\t= new Guid( 0xe436eb78, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70 );\n\n\t\t/// <summary> MEDIASUBTYPE_RGB4 'RGB4' </summary>\n\tpublic static readonly Guid RGB4\t= new Guid( 0xe436eb79, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70 );\n\n\t\t/// <summary> MEDIASUBTYPE_RGB8 'RGB8' </summary>\n\tpublic static readonly Guid RGB8\t= new Guid( 0xe436eb7a, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70 );\n\n\t\t/// <summary> MEDIASUBTYPE_RGB565 'RGB565' </summary>\n\tpublic static readonly Guid RGB565\t= new Guid( 0xe436eb7b, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70 );\n\n\t\t/// <summary> MEDIASUBTYPE_RGB555 'RGB555' </summary>\n\tpublic static readonly Guid RGB555\t= new Guid( 0xe436eb7c, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70 );\n\n\t\t/// <summary> MEDIASUBTYPE_RGB24 'RGB24' </summary>\n\tpublic static readonly Guid RGB24\t= new Guid( 0xe436eb7d, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70 );\n\n\t\t/// <summary> MEDIASUBTYPE_RGB32 'RGB32' </summary>\n\tpublic static readonly Guid RGB32\t= new Guid( 0xe436eb7e, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70 );\n\n\n\t\t/// <summary> MEDIASUBTYPE_Avi </summary>\n\tpublic static readonly Guid Avi\t= new Guid( 0xe436eb88, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70 );\n\n\t\t/// <summary> MEDIASUBTYPE_Asf </summary>\n\tpublic static readonly Guid Asf\t= new Guid( 0x3db80f90, 0x9412, 0x11d1, 0xad, 0xed, 0x0, 0x0, 0xf8, 0x75, 0x4b, 0x99 );\n}\n\n\n\t[ComVisible(false)]\npublic class FormatType\t\t// FORMAT_*\n{\n\t\t/// <summary> FORMAT_None </summary>\n\tpublic static readonly Guid None\t\t= new Guid( 0x0F6417D6, 0xc318, 0x11d0, 0xa4, 0x3f, 0x00, 0xa0, 0xc9, 0x22, 0x31, 0x96 );\n\n\t\t/// <summary> FORMAT_VideoInfo </summary>\n\tpublic static readonly Guid VideoInfo\t= new Guid( 0x05589f80, 0xc356, 0x11ce, 0xbf, 0x01, 0x00, 0xaa, 0x00, 0x55, 0x59, 0x5a );\n\n\t\t/// <summary> FORMAT_VideoInfo2 </summary>\n\tpublic static readonly Guid VideoInfo2\t= new Guid( 0xf72a76A0, 0xeb0a, 0x11d0, 0xac, 0xe4, 0x00, 0x00, 0xc0, 0xcc, 0x16, 0xba );\n\n\t\t/// <summary> FORMAT_WaveFormatEx </summary>\n\tpublic static readonly Guid WaveEx\t\t= new Guid( 0x05589f81, 0xc356, 0x11ce, 0xbf, 0x01, 0x00, 0xaa, 0x00, 0x55, 0x59, 0x5a );\n\n\t\t/// <summary> FORMAT_MPEGVideo </summary>\n\tpublic static readonly Guid MpegVideo\t= new Guid( 0x05589f82, 0xc356, 0x11ce, 0xbf, 0x01, 0x00, 0xaa, 0x00, 0x55, 0x59, 0x5a );\n\n\t\t/// <summary> FORMAT_MPEGStreams </summary>\n\tpublic static readonly Guid MpegStreams\t= new Guid( 0x05589f83, 0xc356, 0x11ce, 0xbf, 0x01, 0x00, 0xaa, 0x00, 0x55, 0x59, 0x5a );\n\n\t\t/// <summary> FORMAT_DvInfo </summary>\n\tpublic static readonly Guid DvInfo\t\t= new Guid( 0x05589f84, 0xc356, 0x11ce, 0xbf, 0x01, 0x00, 0xaa, 0x00, 0x55, 0x59, 0x5a );\n}\n\n\n\n\n\t[ComVisible(false)]\npublic class PinCategory\t\t// PIN_CATEGORY_*\n{\n\t\t/// <summary> PIN_CATEGORY_CAPTURE </summary>\n\tpublic static readonly Guid Capture\t\t= new Guid( 0xfb6c4281, 0x0353, 0x11d1, 0x90, 0x5f, 0x00, 0x00, 0xc0, 0xcc, 0x16, 0xba );\n\n\t\t/// <summary> PIN_CATEGORY_PREVIEW </summary>\n\tpublic static readonly Guid Preview\t\t= new Guid( 0xfb6c4282, 0x0353, 0x11d1, 0x90, 0x5f, 0x00, 0x00, 0xc0, 0xcc, 0x16, 0xba );\n}\n\n\n\n} // namespace DShowNET\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Toolkit/DShow/QEdit.cs",
    "content": "/******************************************************\n                  DirectShow .NET\n\t\t      netmaster@swissonline.ch\n*******************************************************/\n//\t\t\t\t\tQEdit\n// Extended streaming interfaces, ported from qedit.idl\n\nusing System;\nusing System.Runtime.InteropServices;\n\nnamespace DShowNET\n{\n\n\n\n\t[ComVisible(true), ComImport,\n\tGuid(\"6B652FFF-11FE-4fce-92AD-0266B5D7C78F\"),\n\tInterfaceType( ComInterfaceType.InterfaceIsIUnknown )]\npublic interface ISampleGrabber\n{\n\t\t[PreserveSig]\n\tint SetOneShot(\n\t\t[In, MarshalAs(UnmanagedType.Bool)]\t\t\t\tbool\tOneShot );\n\n\t\t[PreserveSig]\n\tint SetMediaType(\n\t\t[In, MarshalAs(UnmanagedType.LPStruct)]\t\t\tAMMediaType\tpmt );\n\n\t\t[PreserveSig]\n\tint GetConnectedMediaType(\n\t\t[Out, MarshalAs(UnmanagedType.LPStruct)]\t\tAMMediaType\tpmt );\n\n\t\t[PreserveSig]\n\tint SetBufferSamples(\n\t\t[In, MarshalAs(UnmanagedType.Bool)]\t\t\t\tbool\tBufferThem );\n\n\t\t[PreserveSig]\n\tint GetCurrentBuffer( ref int pBufferSize, IntPtr pBuffer );\n\n\t\t[PreserveSig]\n\tint GetCurrentSample( IntPtr ppSample );\n\n\t\t[PreserveSig]\n\tint SetCallback( ISampleGrabberCB pCallback, int WhichMethodToCallback );\n}\n\n\n\n\t[ComVisible(true), ComImport,\n\tGuid(\"0579154A-2B53-4994-B0D0-E773148EFF85\"),\n\tInterfaceType( ComInterfaceType.InterfaceIsIUnknown )]\npublic interface ISampleGrabberCB\n{\n\t\t[PreserveSig]\n\tint SampleCB( double SampleTime, IMediaSample pSample );\n\n\t\t[PreserveSig]\n\tint BufferCB( double SampleTime, IntPtr pBuffer, int BufferLen );\n}\n\n\n\n\t[StructLayout(LayoutKind.Sequential), ComVisible(false)]\npublic class VideoInfoHeader\t\t// VIDEOINFOHEADER\n{\n\tpublic DsRECT\tSrcRect;\n\tpublic DsRECT\tTagRect;\n\tpublic int\t\tBitRate;\n\tpublic int\t\tBitErrorRate;\n\tpublic long\t\t\t\t\tAvgTimePerFrame;\n\tpublic DsBITMAPINFOHEADER\tBmiHeader;\n}\n\n\n} // namespace DShowNET\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Toolkit/DShow/VideoPlayer.cs",
    "content": "using System;\nusing System.Threading;\nusing System.Runtime.InteropServices;\n//using MinerWarsMath;\n//using MinerWarsMath.Graphics;\nusing DShowNET;\n\nusing SharpDX;\nusing SharpDX.Direct3D9;\n\nnamespace DShowNET\n{\n    /// <summary>\n    /// Describes the state of a video player\n    /// </summary>\n    public enum VideoState\n    {\n        Playing,\n        Paused,\n        Stopped\n    }\n\n    /// <summary>\n    /// Enables Video Playback in Microsoft XNA\n    /// </summary>\n    public class VideoPlayer : ISampleGrabberCB, IDisposable\n    {\n        #region Media Type GUIDs\n        private Guid MEDIATYPE_Video = new Guid(0x73646976, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);\n        private Guid MEDIASUBTYPE_RGB24 = new Guid(0xe436eb7d, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70);\n        private Guid FORMAT_VideoInfo = new Guid(0x05589f80, 0xc356, 0x11ce, 0xbf, 0x01, 0x00, 0xaa, 0x00, 0x55, 0x59, 0x5a);\n        #endregion\n\n        #region Private Fields\n\n        private object m_comObject = null;\n        /// <summary>\n        /// The GraphBuilder interface ref\n        /// </summary>\n        private IGraphBuilder m_graphBuilder = null;\n\n        /// <summary>\n        /// The MediaControl interface ref\n        /// </summary>\n        private IMediaControl m_mediaControl = null;\n\n        /// <summary>\n        /// The MediaEvent interface ref\n        /// </summary>\n        private IMediaEventEx m_mediaEvent = null;\n\n        /// <summary>\n        /// The MediaPosition interface ref\n        /// </summary>\n        private IMediaPosition m_mediaPosition = null;\n\n        private IBasicAudio m_basicAudio = null;\n\n        /// <summary>\n        /// The MediaSeeking interface ref\n        /// </summary>\n        private IMediaSeeking m_mediaSeeking = null;\n\n        /// <summary>\n        /// Thread used to update the video's Texture2D data\n        /// </summary>\n        private Thread updateThread;\n\n        /// <summary>\n        /// Thread used to wait untill the video is complete, then invoke the OnVideoComplete EventHandler\n        /// </summary>\n        private Thread waitThread;\n\n        /// <summary>\n        /// The Video File to play\n        /// </summary>\n        private string filename;\n\n        /// <summary>\n        /// Is a new frame avaliable to update?\n        /// </summary>\n        private bool frameAvailable = false;\n\n        /// <summary>\n        /// Array to hold the raw data from the DirectShow video stream.\n        /// </summary>\n        private byte[] bgrData;\n\n        /// <summary>\n        /// The RGBA frame bytes used to set the data in the Texture2D Output Frame\n        /// </summary>\n        private byte[] videoFrameBytes;\n\n        /// <summary>\n        /// Private Video Width\n        /// </summary>\n        private int videoWidth = 0;\n\n        /// <summary>\n        /// Private Video Height\n        /// </summary>\n        private int videoHeight = 0;\n\n        /// <summary>\n        /// Private Texture2D to render video to. Created in the Video Player Constructor.\n        /// </summary> \n        private Texture outputFrame;\n\n        /// <summary>\n        /// Average Time per Frame in milliseconds\n        /// </summary>\n        private long avgTimePerFrame;\n\n        /// <summary>\n        /// BitRate of the currently loaded video\n        /// </summary>\n        private int bitRate;\n\n        /// <summary>\n        /// Current state of the video player\n        /// </summary>\n        private VideoState currentState;\n\n        /// <summary>\n        /// Is Disposed?\n        /// </summary>\n        private bool isDisposed = false;\n\n        /// <summary>\n        /// Current time position\n        /// </summary>\n        private long currentPosition;\n\n        /// <summary>\n        /// Video duration\n        /// </summary>\n        private long videoDuration;\n\n        /// <summary>\n        /// How transparent the video frame is.\n        /// Takes effect on the next frame after this is updated\n        /// Max Value: 255 - Opaque\n        /// Min Value: 0   - Transparent\n        /// </summary>\n        private byte alphaTransparency = 255;\n        #endregion\n\n        #region Public Properties\n        /// <summary>\n        /// Automatically updated video frame. Render this to the screen using a SpriteBatch.\n        /// </summary>\n        public Texture OutputFrame\n        {\n            get\n            {\n                return outputFrame;\n            }\n        }\n\n        /// <summary>\n        /// Width of the loaded video\n        /// </summary>\n        public int VideoWidth\n        {\n            get\n            {\n                return videoWidth;\n            }\n        }\n\n        /// <summary>\n        /// Height of the loaded video\n        /// </summary>\n        public int VideoHeight\n        {\n            get\n            {\n                return videoHeight;\n            }\n        }\n\n        /// <summary>\n        /// Gets or Sets the current position of playback in seconds\n        /// </summary>\n        public double CurrentPosition\n        {\n            get\n            {\n                return (double)currentPosition / 10000000;\n            }\n            set\n            {\n                if (value < 0)\n                    value = 0;\n\n                if (value > Duration)\n                    value = Duration;\n\n                m_mediaPosition.put_CurrentPosition(value);\n                currentPosition = (long)value * 10000000;\n            }\n        }\n\n        /// <summary>\n        /// Returns the current position of playback, formatted as a time string (HH:MM:SS)\n        /// </summary>\n        public string CurrentPositionAsTimeString\n        {\n            get\n            {\n                double seconds = (double)currentPosition / 10000000;\n\n                double minutes = seconds / 60;\n                double hours = minutes / 60;\n\n                int realHours = (int)Math.Floor(hours);\n                minutes -= realHours * 60;\n\n                int realMinutes = (int)Math.Floor(minutes);\n                seconds -= realMinutes * 60;\n\n                int realSeconds = (int)Math.Floor(seconds);\n\n                return (realHours < 10 ? \"0\" + realHours.ToString() : realHours.ToString()) + \":\" + (realMinutes < 10 ? \"0\" + realMinutes.ToString() : realMinutes.ToString()) + \":\" + (realSeconds < 10 ? \"0\" + realSeconds.ToString() : realSeconds.ToString());\n            }\n        }\n\n        /// <summary>\n        /// Total duration in seconds\n        /// </summary>\n        public double Duration\n        {\n            get\n            {\n                return (double)videoDuration / 10000000;\n            }\n        }\n\n        /// <summary>\n        /// Returns the duration of the video, formatted as a time string (HH:MM:SS)\n        /// </summary>\n        public string DurationAsTimeString\n        {\n            get\n            {\n                double seconds = (double)videoDuration / 10000000;\n\n                double minutes = seconds / 60;\n                double hours = minutes / 60;\n\n                int realHours = (int)Math.Floor(hours);\n                minutes -= realHours * 60;\n\n                int realMinutes = (int)Math.Floor(minutes);\n                seconds -= realMinutes * 60;\n\n                int realSeconds = (int)Math.Floor(seconds);\n\n                return (realHours < 10 ? \"0\" + realHours.ToString() : realHours.ToString()) + \":\" + (realMinutes < 10 ? \"0\" + realMinutes.ToString() : realMinutes.ToString()) + \":\" + (realSeconds < 10 ? \"0\" + realSeconds.ToString() : realSeconds.ToString());\n            }\n        }\n\n        /// <summary>\n        /// Currently Loaded Video File\n        /// </summary>\n        public string FileName\n        {\n            get\n            {\n                return filename;\n            }\n        }\n\n        /// <summary>\n        /// Gets or Sets the current state of the video player\n        /// </summary>\n        public VideoState CurrentState\n        {\n            get\n            {\n                return currentState;\n            }\n            set\n            {\n                switch (value)\n                {\n                    case VideoState.Playing:\n                        Play();\n                        break;\n                    case VideoState.Paused:\n                        Pause();\n                        break;\n                    case VideoState.Stopped:\n                        Stop();\n                        break;\n                }\n            }\n        }\n\n        /// <summary>\n        /// Event which occurs when the video stops playing once it has reached the end of the file\n        /// </summary>\n        public event EventHandler OnVideoComplete;\n\n        /// <summary>\n        /// Is Disposed?\n        /// </summary>\n        public bool IsDisposed\n        {\n            get\n            {\n                return isDisposed;\n            }\n        }\n\n        /// <summary>\n        /// Number of Frames Per Second in the video file.\n        /// Returns -1 if this cannot be calculated.\n        /// </summary>\n        public int FramesPerSecond\n        {\n            get\n            {\n                if (avgTimePerFrame == 0)\n                    return -1;\n\n                float frameTime = (float)avgTimePerFrame / 10000000.0f;\n                float framesPS = 1.0f / frameTime;\n                return (int)Math.Round(framesPS, 0, MidpointRounding.ToEven);\n            }\n        }\n\n        /// <summary>\n        /// The number of milliseconds between each frame\n        /// Returns -1 if this cannot be calculated\n        /// </summary>\n        public float MillisecondsPerFrame\n        {\n            get\n            {\n                if (avgTimePerFrame == 0)\n                    return -1;\n\n                return (float)avgTimePerFrame / 10000.0f;\n            }\n        }\n\n        /// <summary>\n        /// Gets or sets how transparent the video frame is.\n        /// Takes effect on the next frame after this is updated\n        /// Max Value: 255 - Opaque\n        /// Min Value: 0   - Transparent\n        /// </summary>\n        public byte AlphaTransparency\n        {\n            get\n            {\n                return alphaTransparency;\n            }\n            set\n            {\n                alphaTransparency = value;\n            }\n        }\n        #endregion\n\n        #region Constructor\n        /// <summary>\n        /// Creates a new Video Player. Automatically creates the required Texture2D on the specificied GraphicsDevice.\n        /// </summary>\n        /// <param name=\"FileName\">The video file to open</param>\n        /// <param name=\"graphicsDevice\">XNA Graphics Device</param>\n        public VideoPlayer(string FileName, SharpDX.Direct3D9.Device graphicsDevice)\n        {\n            try\n            {\n                // Set video state\n                currentState = VideoState.Stopped;\n\n                // Store Filename\n                filename = FileName;\n\n                // Open DirectShow Interfaces\n                InitInterfaces();\n\n                // Create a SampleGrabber Filter and add it to the FilterGraph\n                //SampleGrabber sg = new SampleGrabber();\n                var comtype = Type.GetTypeFromCLSID(Clsid.SampleGrabber);\n                if (comtype == null)\n                    throw new NotSupportedException(\"DirectX (8.1 or higher) not installed?\");\n                m_comObject = Activator.CreateInstance(comtype);\n\n                ISampleGrabber sampleGrabber = (ISampleGrabber)m_comObject;\n                m_graphBuilder.AddFilter((IBaseFilter)m_comObject, \"Grabber\");\n\n                // Setup Media type info for the SampleGrabber\n                AMMediaType mt = new AMMediaType();\n                mt.majorType = MEDIATYPE_Video;     // Video\n                mt.subType = MEDIASUBTYPE_RGB24;    // RGB24\n                mt.formatType = FORMAT_VideoInfo;   // VideoInfo\n                sampleGrabber.SetMediaType(mt);\n\n                // Construct the rest of the FilterGraph\n                m_graphBuilder.RenderFile(filename, null);\n\n                // Set SampleGrabber Properties\n                sampleGrabber.SetBufferSamples(true);\n                sampleGrabber.SetOneShot(false);\n                sampleGrabber.SetCallback((ISampleGrabberCB)this, 1);\n\n                // Hide Default Video Window\n                IVideoWindow pVideoWindow = (IVideoWindow)m_graphBuilder;\n                //pVideoWindow.put_AutoShow(OABool.False);\n                pVideoWindow.put_AutoShow(0);\n\n                // Create AMMediaType to capture video information\n                AMMediaType MediaType = new AMMediaType();\n                sampleGrabber.GetConnectedMediaType(MediaType);\n                VideoInfoHeader pVideoHeader = new VideoInfoHeader();\n                Marshal.PtrToStructure(MediaType.formatPtr, pVideoHeader);\n\n                // Store video information\n                videoHeight = pVideoHeader.BmiHeader.Height;\n                videoWidth = pVideoHeader.BmiHeader.Width;\n                avgTimePerFrame = pVideoHeader.AvgTimePerFrame;\n                bitRate = pVideoHeader.BitRate;\n                m_mediaSeeking.GetDuration(out videoDuration);\n\n                // Create byte arrays to hold video data\n                videoFrameBytes = new byte[(videoHeight * videoWidth) * 4]; // RGBA format (4 bytes per pixel)\n                bgrData = new byte[(videoHeight * videoWidth) * 3];         // BGR24 format (3 bytes per pixel)\n\n                // Create Output Frame Texture2D with the height and width of the video\n                outputFrame = new Texture(graphicsDevice, videoWidth, videoHeight, 1, Usage.Dynamic, Format.A8R8G8B8, Pool.Default);\n            }\n            catch\n            {\n                throw new Exception(\"Unable to Load or Play the video file\");\n            }\n        }\n        #endregion\n\n        #region DirectShow Interface Management\n        /// <summary>\n        /// Initialises DirectShow interfaces\n        /// </summary>\n        private void InitInterfaces()\n        {\n            var comtype = Type.GetTypeFromCLSID(Clsid.FilterGraph);\n            if (comtype == null)\n                throw new NotSupportedException(\"DirectX (8.1 or higher) not installed?\");\n            var fg = Activator.CreateInstance(comtype);\n\n            m_graphBuilder = (IGraphBuilder)fg;\n            m_mediaControl = (IMediaControl)fg;\n            m_mediaEvent = (IMediaEventEx)fg;\n            m_mediaSeeking = (IMediaSeeking)fg;\n            m_mediaPosition = (IMediaPosition)fg;\n            m_basicAudio = (IBasicAudio)fg;\n\n            fg = null;\n        }\n\n        /// <summary>\n        /// Closes DirectShow interfaces\n        /// </summary>\n        private void CloseInterfaces()\n        {\n            if (m_mediaEvent != null)\n            {\n                m_mediaControl.Stop();\n                //0x00008001 = WM_GRAPHNOTIFY\n                m_mediaEvent.SetNotifyWindow(IntPtr.Zero, 0x00008001, IntPtr.Zero);\n            }\n            m_mediaControl = null;\n            m_mediaEvent = null;\n            m_graphBuilder = null;\n            m_mediaSeeking = null;\n            m_mediaPosition = null;\n            m_basicAudio = null;\n            \n            if (m_comObject != null)\n                Marshal.ReleaseComObject(m_comObject);\n            m_comObject = null;\n        }\n        #endregion\n\n        #region Update and Media Control\n        /// <summary>\n        /// Updates the Output Frame data using data from the video stream. Call this in Game.Update().\n        /// </summary>\n        public void Update()\n        {\n            // Set video data into the Output Frame\n            DataStream ds;        \n            DataRectangle dr = outputFrame.LockRectangle(0, LockFlags.Discard, out ds);\n\n            int bytesPerRow = videoWidth * 4;\n            int skipBytesInRow = dr.Pitch - bytesPerRow;\n            int offset = 0;\n            \n            for (int j = 0; j < videoHeight; j++)\n            {\n                ds.WriteRange(videoFrameBytes, offset, bytesPerRow);\n                ds.Seek(skipBytesInRow, System.IO.SeekOrigin.Current);\n                offset += bytesPerRow;\n            }     \n\n            //ds.WriteRange(videoFrameBytes);\n                   /*\n            for (int j = 0; j < h; j++)\n            {\n                for (int i = 0; i < dr.Pitch; i++)\n                {\n                    if (i < w * 4)\n                        ds.WriteByte(videoFrameBytes[j * w * 4 + i]);\n                    else\n                        ds.WriteByte(255);\n                }\n            }     */\n\n            outputFrame.UnlockRectangle(0);\n\n            //BaseTexture.ToFile(outputFrame, \"c:\\\\video3.png\", ImageFileFormat.Png);\n                      \n            /*\n            System.IO.FileStream fs = System.IO.File.Create(\"c:\\\\video2.rgb\");\n            fs.Write(videoFrameBytes, 0, videoFrameBytes.Length);\n            fs.Dispose();\n              */\n\n            // Update current position read-out\n            m_mediaSeeking.GetCurrentPosition(out currentPosition);\n        }\n\n        /// <summary>\n        /// Starts playing the video\n        /// </summary>\n        public void Play()\n        {\n            if (currentState != VideoState.Playing)\n            {\n                // Create video threads\n                updateThread = new Thread(new ThreadStart(UpdateBuffer));\n                updateThread.IsBackground = true;\n                waitThread = new Thread(new ThreadStart(WaitForCompletion));\n                waitThread.IsBackground = true;\n\n                // Start the FilterGraph\n                m_mediaControl.Run();\n\n                // Start Threads\n                updateThread.Start();\n                waitThread.Start();\n\n                // Update VideoState\n                currentState = VideoState.Playing;\n            }\n        }\n\n        /// <summary>\n        /// Pauses the video\n        /// </summary>\n        public void Pause()\n        {\n            // End threads\n            if (updateThread != null)\n                updateThread.Abort();\n            updateThread = null;\n\n            if (waitThread != null)\n                waitThread.Abort();\n            waitThread = null;\n\n            // Stop the FilterGraph (but remembers the current position)\n            m_mediaControl.Stop();\n\n            // Update VideoState\n            currentState = VideoState.Paused;\n        }\n\n        /// <summary>\n        /// Stops playing the video\n        /// </summary>\n        public void Stop()\n        {\n            // End Threads\n            if (updateThread != null)\n                updateThread.Abort();\n            updateThread = null;\n\n            if (waitThread != null)\n                waitThread.Abort();\n            waitThread = null;\n\n            // Stop the FilterGraph\n            m_mediaControl.Stop();\n\n            // Reset the current position\n            m_mediaSeeking.SetPositions(new DsOptInt64(0), SeekingFlags.AbsolutePositioning, new DsOptInt64(0), SeekingFlags.NoPositioning);\n\n            // Update VideoState\n            currentState = VideoState.Stopped;\n        }\n\n        /// <summary>\n        /// Rewinds the video to the start and plays it again\n        /// </summary>\n        public void Rewind()\n        {\n            Stop();\n            Play();\n        }\n        #endregion\n\n        #region ISampleGrabberCB Members and Helpers\n        /// <summary>\n        /// Required public callback from DirectShow SampleGrabber. Do not call this method.\n        /// </summary>\n        public int BufferCB(double SampleTime, IntPtr pBuffer, int BufferLen)\n        {\n            // Copy raw data into bgrData byte array\n            Marshal.Copy(pBuffer, bgrData, 0, BufferLen);\n\n            // Flag the new frame as available\n            frameAvailable = true;\n\n            // Return S_OK\n            return 0;\n        }\n\n        /// <summary>\n        /// Required public callback from DirectShow SampleGrabber. Do not call this method.\n        /// </summary>\n        public int SampleCB(double SampleTime, IMediaSample pSample)\n        {\n            // Return S_OK\n            return 0;\n        }\n\n        /// <summary>\n        /// Worker to copy the BGR data from the video stream into the RGBA byte array for the Output Frame.\n        /// </summary>\n        private void UpdateBuffer()\n        {\n            int waitTime = avgTimePerFrame != 0 ? (int)((float)avgTimePerFrame / 10000) : 20;\n\n            int samplePosRGBA = 0;\n            int samplePosRGB24 = 0;\n\n            while (true)\n            {\n                for (int y = 0, y2 = videoHeight - 1; y < videoHeight; y++, y2--)\n                {\n                    for (int x = 0; x < videoWidth; x++)\n                    {\n                        samplePosRGBA = ((y2 * videoWidth) + x) * 4;\n                        samplePosRGB24 = ((y * videoWidth) + x) * 3;\n\n                        videoFrameBytes[samplePosRGBA + 0] = bgrData[samplePosRGB24 + 0];\n                        videoFrameBytes[samplePosRGBA + 1] = bgrData[samplePosRGB24 + 1];\n                        videoFrameBytes[samplePosRGBA + 2] = bgrData[samplePosRGB24 + 2];\n                        videoFrameBytes[samplePosRGBA + 3] = alphaTransparency;\n                    }\n                }      \n\n                frameAvailable = false;\n                while (!frameAvailable)\n                { Thread.Sleep(waitTime); }\n            }\n        }\n\n        /// <summary>\n        /// Waits for the video to finish, then calls the OnVideoComplete event\n        /// </summary>\n        private void WaitForCompletion()\n        {\n            int waitTime = avgTimePerFrame != 0 ? (int)((float)avgTimePerFrame / 10000) : 20;\n\n            try\n            {\n                while (videoDuration > currentPosition)\n                {\n                    Thread.Sleep(waitTime);\n                }\n\n                if (OnVideoComplete != null)\n                    OnVideoComplete.Invoke(this, EventArgs.Empty);\n\n                currentState = VideoState.Stopped;\n            }\n            catch { }\n        }\n\n        //convert from 0..1f to -10000..0i\n        public float Volume\n        {\n            get\n            {\n                int volume;\n                m_basicAudio.get_Volume(out volume);\n                return (volume / 10000.0f) + 1.0f;\n            }\n            set\n            {\n                m_basicAudio.put_Volume((int)((value - 1.0f) * 10000.0f));\n            }\n        }\n\n\n        #endregion\n\n        #region IDisposable Members\n        /// <summary>\n        /// Cleans up the Video Player. Must be called when finished with the player.\n        /// </summary>\n        public void Dispose()\n        {\n            isDisposed = true;\n\n            Stop();\n            CloseInterfaces();\n\n            outputFrame.Dispose();\n            outputFrame = null;\n\n        }\n        #endregion\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Toolkit/Game.cs",
    "content": "﻿\nusing System;\nusing System.Collections.Generic;\n\nusing SharpDX.Collections;\nusing SharpDX.Toolkit.Graphics;\n\nusing SharpDX.Direct3D9;\n\nnamespace SharpDX.Toolkit\n{\n\n    /// <summary>\n    /// The game.\n    /// </summary>\n    public class Game : Component\n    {\n        #region Fields\n\n        private readonly GameTime gameTime;\n        private readonly int[] lastUpdateCount;\n        private readonly float updateCountAverageSlowLimit;\n        public readonly GamePlatformDesktop GamePlatform;\n        private GraphicsDeviceManager graphicsDeviceManager;\n        private bool isEndRunRequired;\n        private bool isExiting;\n        private bool isFirstUpdateDone;\n        private bool suppressDraw;\n\n        private TimeSpan totalGameTime;\n        private TimeSpan inactiveSleepTime;\n        private TimeSpan maximumElapsedTime;\n        private TimeSpan accumulatedElapsedGameTime;\n        private TimeSpan lastFrameElapsedGameTime;\n        private int nextLastUpdateCountIndex;\n        private bool drawRunningSlowly;\n        private bool forceElapsedTimeToZero;\n        private bool isInitialzing;\n        public bool ContentLoaded = false;\n\n        private readonly TimerTick timer;\n\n        private bool isMouseVisible;\n\n        #endregion\n\n        #region Constructors and Destructors\n\n        /// <summary>\n        /// Initializes a new instance of the <see cref=\"Game\" /> class.\n        /// </summary>\n        public Game()\n        {\n            // Internals\n            gameTime = new GameTime();\n            totalGameTime = new TimeSpan();\n            timer = new TimerTick();\n            IsFixedTimeStep = true;\n            maximumElapsedTime = TimeSpan.FromMilliseconds(500.0);\n            TargetElapsedTime = TimeSpan.FromTicks(10000000 / 60); // target elapsed time is by default 60Hz\n            lastUpdateCount = new int[4];\n            nextLastUpdateCountIndex = 0;\n\n            // Calculate the updateCountAverageSlowLimit (assuming moving average is >=3 )\n            // Example for a moving average of 4:\n            // updateCountAverageSlowLimit = (2 * 2 + (4 - 2)) / 4 = 1.5f\n            const int BadUpdateCountTime = 2; // number of bad frame (a bad frame is a frame that has at least 2 updates)\n            var maxLastCount = 2 * Math.Min(BadUpdateCountTime, lastUpdateCount.Length);\n            updateCountAverageSlowLimit = (float)(maxLastCount + (lastUpdateCount.Length - maxLastCount)) / lastUpdateCount.Length;\n\n            //GameSystems = new GameSystemCollection();\n\n            // Create Platform\n            GamePlatform = new GamePlatformDesktop();\n            GamePlatform.Activated += gamePlatform_Activated;\n            GamePlatform.Deactivated += gamePlatform_Deactivated;\n            GamePlatform.Exiting += gamePlatform_Exiting;\n\n            // By default, add a FileResolver for the ContentManager\n          //  Content.Resolvers.Add(new FileSystemContentResolver(gamePlatform.DefaultAppDirectory));\n\n            // Setup registry\n            //Services.AddService(typeof(IServiceRegistry), Services);\n            //Services.AddService(typeof(IContentManager), Content);\n            //Services.AddService(typeof(IGamePlatform), GamePlatform);\n\n            // Register events on GameSystems.\n            //GameSystems.ItemAdded += GameSystems_ItemAdded;\n            //GameSystems.ItemRemoved += GameSystems_ItemRemoved;\n\n            IsActive = true;\n        }\n\n        #endregion\n\n        #region Public Events\n\n        /// <summary>\n        /// Occurs when [activated].\n        /// </summary>\n        public event EventHandler<EventArgs> Activated;\n\n        /// <summary>\n        /// Occurs when [deactivated].\n        /// </summary>\n        public event EventHandler<EventArgs> Deactivated;\n\n        /// <summary>\n        /// Occurs when [exiting].\n        /// </summary>\n        public event EventHandler<EventArgs> Exiting;\n\n        #endregion\n\n        #region Public Properties\n\n        /// <summary>\n        /// Gets the graphics device.\n        /// </summary>\n        /// <value>The graphics device.</value>\n        public Device GraphicsDevice\n        {\n            get\n            {\n                return graphicsDeviceManager.GraphicsDevice;\n            }\n        }\n\n        public GraphicsDeviceManager GraphicsManager\n        {\n            get { return graphicsDeviceManager; }\n            set { graphicsDeviceManager = value; }\n        }\n\n        /// <summary>\n        /// Gets or sets the inactive sleep time.\n        /// </summary>\n        /// <value>The inactive sleep time.</value>\n        public TimeSpan InactiveSleepTime { get; set; }\n\n        /// <summary>\n        /// Gets a value indicating whether this instance is active.\n        /// </summary>\n        /// <value><c>true</c> if this instance is active; otherwise, <c>false</c>.</value>\n        public bool IsActive { get; private set; }\n\n        /// <summary>\n        /// Gets or sets a value indicating whether this instance is fixed time step.\n        /// </summary>\n        /// <value><c>true</c> if this instance is fixed time step; otherwise, <c>false</c>.</value>\n        public bool IsFixedTimeStep { get; set; }\n\n        /// <summary>\n        /// Gets or sets a value indicating whether the mouse should be visible.\n        /// </summary>\n        /// <value><c>true</c> if the mouse should be visible; otherwise, <c>false</c>.</value>\n        public bool IsMouseVisible\n        {\n            get\n            {\n                return isMouseVisible;\n            }\n\n            set\n            {\n                isMouseVisible = value;\n                if (Window != null)\n                {\n                    Window.IsMouseVisible = value;\n                }\n            }\n        }\n\n        /// <summary>\n        /// Gets a value indicating whether is running.\n        /// </summary>\n        public bool IsRunning { get; private set; }\n\n        /// <summary>\n        /// Gets or sets the target elapsed time.\n        /// </summary>\n        /// <value>The target elapsed time.</value>\n        public TimeSpan TargetElapsedTime { get; set; }\n\n        /// <summary>\n        /// Gets the abstract window.\n        /// </summary>\n        /// <value>The window.</value>\n        public GameWindow Window\n        {\n            get\n            {\n                if (GamePlatform != null)\n                {\n                    return GamePlatform.MainWindow;\n                }\n                return null;\n            }\n        }\n\n        #endregion\n\n        #region Public Methods and Operators\n\n        /// <summary>\n        /// Exits the game.\n        /// </summary>\n        public void Exit()\n        {\n            isExiting = true;\n            GamePlatform.Exit();\n            if (IsRunning && isEndRunRequired)\n            {\n                EndRun();\n                IsRunning = false;\n            }\n        }\n\n        /// <summary>\n        /// Resets the elapsed time counter.\n        /// </summary>\n        public void ResetElapsedTime()\n        {\n            forceElapsedTimeToZero = true;\n            drawRunningSlowly = false;\n            Array.Clear(lastUpdateCount, 0, lastUpdateCount.Length);\n            nextLastUpdateCountIndex = 0;\n        }\n\n        private void InitializeBeforeRun()\n        {\n            if (graphicsDeviceManager == null)\n            {\n                graphicsDeviceManager = new GraphicsDeviceManager(this);\n            }\n\n            // Make sure that the device is already created\n            graphicsDeviceManager.CreateDevice();\n\n            // Checks the graphics device\n            if (graphicsDeviceManager.GraphicsDevice == null)\n            {\n                throw new InvalidOperationException(\"No GraphicsDevice found\");\n            }\n\n            // Initialize this instance and all game systems\n            //LoadContent is called in base.Initialize\n            Initialize();\n\n            IsRunning = true;\n\n            BeginRun();\n\n            timer.Reset();\n            gameTime.Update(totalGameTime, TimeSpan.Zero, false);\n            gameTime.FrameCount = 0;\n\n            // Run the first time an update\n            Update(gameTime);\n\n            isFirstUpdateDone = true;\n        }\n\n        /// <summary>\n        /// Call this method to initialize the game, begin running the game loop, and start processing events for the game.\n        /// </summary>\n        /// <param name=\"windowContext\">The window Context.</param>\n        /// <exception cref=\"System.InvalidOperationException\">Cannot run this instance while it is already running</exception>\n        public void Run(object windowContext = null)\n        {\n            if (IsRunning)\n            {\n                throw new InvalidOperationException(\"Cannot run this instance while it is already running\");\n            }\n\n            try\n            {\n                // Run the game, loop depending on the platform/window.\n                GamePlatform.Run(windowContext, InitializeBeforeRun, Tick);\n\n                if (GamePlatform.IsBlockingRun)\n                {\n                    // If the previous call was blocking, then we can call Endrun\n                    EndRun();\n                }\n                else\n                {\n                    // EndRun will be executed on Game.Exit\n                    isEndRunRequired = true;\n                }\n            }\n            finally\n            {\n                if (!isEndRunRequired)\n                {\n                    IsRunning = false;\n                }\n            }\n        }\n\n        /// <summary>\n        /// Prevents calls to Draw until the next Update.\n        /// </summary>\n        public void SuppressDraw()\n        {\n            suppressDraw = true;\n        }\n\n        /// <summary>\n        /// Updates the game's clock and calls Update and Draw.\n        /// </summary>\n        public void Tick()\n        {\n            // If this instance is existing, then don't make any further update/draw\n            if (isExiting)\n            {\n                return;\n            }\n\n            // If this instance is not active, sleep for an inactive sleep time\n            if (!IsActive)\n            {\n                Utilities.Sleep(inactiveSleepTime);\n            }\n\n            // Update the timer\n            timer.Tick();\n\n            var elapsedAdjustedTime = timer.ElapsedAdjustedTime;\n\n            if (forceElapsedTimeToZero)\n            {\n                elapsedAdjustedTime = TimeSpan.Zero;\n                forceElapsedTimeToZero = false;\n            }\n\n            if (elapsedAdjustedTime > maximumElapsedTime)\n            {\n                elapsedAdjustedTime = maximumElapsedTime;\n            }\n\n            bool suppressNextDraw = true;\n            int updateCount = 1;\n            var singleFrameElapsedTime = elapsedAdjustedTime;\n\n            if (IsFixedTimeStep)\n            {\n                // If the rounded TargetElapsedTime is equivalent to current ElapsedAdjustedTime\n                // then make ElapsedAdjustedTime = TargetElapsedTime. We take the same internal rules as XNA \n                if (Math.Abs(elapsedAdjustedTime.Ticks - TargetElapsedTime.Ticks) < (TargetElapsedTime.Ticks >> 6))\n                {\n                    elapsedAdjustedTime = TargetElapsedTime;\n                }\n\n                // Update the accumulated time\n                accumulatedElapsedGameTime += elapsedAdjustedTime;\n\n                // Calculate the number of update to issue\n                updateCount = (int)(accumulatedElapsedGameTime.Ticks / TargetElapsedTime.Ticks);\n\n                // If there is no need for update, then exit\n                if (updateCount == 0)\n                {\n                    return;\n                }\n\n                // Calculate a moving average on updateCount\n                lastUpdateCount[nextLastUpdateCountIndex] = updateCount;\n                float updateCountMean = 0;\n                for (int i = 0; i < lastUpdateCount.Length; i++)\n                {\n                    updateCountMean += lastUpdateCount[i];\n                }\n\n                updateCountMean /= lastUpdateCount.Length;\n                nextLastUpdateCountIndex = (nextLastUpdateCountIndex + 1) % lastUpdateCount.Length;\n\n                // Test when we are running slowly\n                drawRunningSlowly = updateCountMean > updateCountAverageSlowLimit;\n\n                // We are going to call Update updateCount times, so we can substract this from accumulated elapsed game time\n                accumulatedElapsedGameTime = new TimeSpan(accumulatedElapsedGameTime.Ticks - (updateCount * TargetElapsedTime.Ticks));\n                singleFrameElapsedTime = TargetElapsedTime;\n            }\n            else\n            {\n                Array.Clear(lastUpdateCount, 0, lastUpdateCount.Length);\n                nextLastUpdateCountIndex = 0;\n                drawRunningSlowly = false;\n            }\n\n            // Reset the time of the next frame\n            for (lastFrameElapsedGameTime = TimeSpan.Zero; updateCount > 0 && !isExiting; updateCount--)\n            {\n                gameTime.Update(totalGameTime, singleFrameElapsedTime, drawRunningSlowly);\n                try\n                {\n                    Update(gameTime);\n\n                    // If there is no exception, then we can draw the frame\n                    suppressNextDraw &= suppressDraw;\n                    suppressDraw = false;\n                }\n                finally\n                {\n                    lastFrameElapsedGameTime += singleFrameElapsedTime;\n                    totalGameTime += singleFrameElapsedTime;\n                }\n            }\n\n            if (!suppressNextDraw)\n            {\n                DrawFrame();\n            }\n        }\n\n        #endregion\n\n        #region Methods\n\n        /// <summary>\n        /// Starts the drawing of a frame. This method is followed by calls to Draw and EndDraw.\n        /// </summary>\n        /// <returns><c>true</c> to continue drawing, false to not call <see cref=\"Draw\"/> and <see cref=\"EndDraw\"/></returns>\n        protected virtual bool BeginDraw()\n        {\n            if (!graphicsDeviceManager.BeginDraw())\n            {\n                return false;\n            }\n\n            return true;\n        }\n\n        /// <summary>\n        /// Called after all components are initialized but before the first update in the game loop.\n        /// </summary>\n        protected virtual void BeginRun()\n        {\n        }\n\n        protected override void Dispose(bool disposeManagedResources)\n        {\n            if (disposeManagedResources)\n            {\n                lock (this)\n                {\n                    var disposableGraphicsManager = graphicsDeviceManager as IDisposable;\n                    if (disposableGraphicsManager != null)\n                    {\n                        disposableGraphicsManager.Dispose();\n                    }\n\n                    DisposeGraphicsDeviceEvents();\n                }\n            }\n\n            base.Dispose(disposeManagedResources);\n        }\n\n        /// <summary>\n        /// Reference page contains code sample.\n        /// </summary>\n        /// <param name=\"gameTime\">\n        /// Time passed since the last call to Draw.\n        /// </param>\n        protected virtual void Draw(GameTime gameTime)\n        {\n          \n        }\n\n        /// <summary>Ends the drawing of a frame. This method is preceeded by calls to Draw and BeginDraw.</summary>\n        protected virtual void EndDraw()\n        {\n            if (graphicsDeviceManager != null)\n            {\n                graphicsDeviceManager.EndDraw();\n            }\n        }\n\n        /// <summary>Called after the game loop has stopped running before exiting.</summary>\n        protected virtual void EndRun()\n        {\n        }\n\n        /// <summary>Called after the Game and GraphicsDevice are created, but before LoadContent.  Reference page contains code sample.</summary>\n        protected virtual void Initialize()\n        {\n            // Setup the graphics device if it was not already setup.\n            SetupGraphicsDeviceEvents();\n\n            // Load the content of the game\n            isInitialzing = true;\n            LoadContent();\n            isInitialzing = false;\n        }\n\n        /// <summary>\n        /// Loads the content.\n        /// </summary>\n        public virtual void LoadContent()\n        {\n            System.Diagnostics.Debug.Assert(ContentLoaded == false);\n            ContentLoaded = true;\n\n            // When initializing, we don't need to call explicitly the LoadContent for each GameSystem\n            // as they were already called by the GameSystem.Initialize method\n            // Otherwise, in case of a GraphicsDevice reset, we need to call GameSystem.LoadContent\n            if (isInitialzing)\n            {\n                return;\n            }\n        }\n\n        /// <summary>\n        /// Raises the Activated event. Override this method to add code to handle when the game gains focus.\n        /// </summary>\n        /// <param name=\"sender\">The Game.</param>\n        /// <param name=\"args\">Arguments for the Activated event.</param>\n        protected virtual void OnActivated(object sender, EventArgs args)\n        {\n            var handler = Activated;\n            if (handler != null)\n            {\n                handler(this, args);\n            }\n        }\n\n        /// <summary>\n        /// Raises the Deactivated event. Override this method to add code to handle when the game loses focus.\n        /// </summary>\n        /// <param name=\"sender\">The Game.</param>\n        /// <param name=\"args\">Arguments for the Deactivated event.</param>\n        protected virtual void OnDeactivated(object sender, EventArgs args)\n        {\n            var handler = Deactivated;\n            if (handler != null)\n            {\n                handler(this, args);\n            }\n        }\n\n        /// <summary>\n        /// Raises an Exiting event. Override this method to add code to handle when the game is exiting.\n        /// </summary>\n        /// <param name=\"sender\">The Game.</param>\n        /// <param name=\"args\">Arguments for the Exiting event.</param>\n        protected virtual void OnExiting(object sender, EventArgs args)\n        {\n            var handler = Exiting;\n            if (handler != null)\n            {\n                handler(this, args);\n            }\n        }\n\n        /// <summary>\n        /// This is used to display an error message if there is no suitable graphics device or sound card.\n        /// </summary>\n        /// <param name=\"exception\">The exception to display.</param>\n        /// <returns>The <see cref=\"bool\" />.</returns>\n        protected virtual bool ShowMissingRequirementMessage(Exception exception)\n        {\n            return true;\n        }\n\n        /// <summary>\n        /// Called when graphics resources need to be unloaded. Override this method to unload any game-specific graphics resources.\n        /// </summary>\n        public virtual void UnloadContent()\n        {\n            ContentLoaded = false;\n        }\n\n        /// <summary>\n        /// Reference page contains links to related conceptual articles.\n        /// </summary>\n        /// <param name=\"gameTime\">\n        /// Time passed since the last call to Update.\n        /// </param>\n        protected virtual void Update(GameTime gameTime)\n        {\n            isFirstUpdateDone = true;\n        }\n\n        private void gamePlatform_Activated(object sender, EventArgs e)\n        {\n            if (!IsActive)\n            {\n                IsActive = true;\n                OnActivated(this, EventArgs.Empty);\n            }\n        }\n\n        private void gamePlatform_Deactivated(object sender, EventArgs e)\n        {\n            if (IsActive)\n            {\n                IsActive = false;\n                OnDeactivated(this, EventArgs.Empty);\n            }\n        }\n\n        private void gamePlatform_Exiting(object sender, EventArgs e)\n        {\n            UnloadContent();\n\n            OnExiting(this, EventArgs.Empty);\n        }\n\n        private static bool AddGameSystem<T>(T gameSystem, List<T> gameSystems, IComparer<T> comparer, bool removePreviousSystem = false)\n        {\n            lock (gameSystems)\n            {\n                // If we are updating the order\n                if (removePreviousSystem)\n                {\n                    gameSystems.Remove(gameSystem);\n                }\n\n                // Find this gameSystem\n                int index = gameSystems.BinarySearch(gameSystem, comparer);\n                if (index < 0)\n                {\n                    // If index is negative, that is the bitwise complement of the index of the next element that is larger than item \n                    // or, if there is no larger element, the bitwise complement of Count.\n                    index = ~index;\n\n                    // Iterate until the order is different or we are at the end of the list\n                    while ((index < gameSystems.Count) && (comparer.Compare(gameSystems[index], gameSystem) == 0))\n                    {\n                        index++;\n                    }\n\n                    gameSystems.Insert(index, gameSystem);\n\n                    // True, the system was inserted\n                    return true;\n                }\n            }\n\n            // False, it is already in the list\n            return false;\n        }\n\n        private void DrawFrame()\n        {\n            try\n            {\n                if (!isExiting && isFirstUpdateDone && !Window.IsMinimized && BeginDraw())\n                {\n                    gameTime.Update(totalGameTime, lastFrameElapsedGameTime, drawRunningSlowly);\n                    gameTime.FrameCount++;\n\n                    Draw(gameTime);\n\n                    EndDraw();\n                }\n            }\n            finally\n            {\n                lastFrameElapsedGameTime = TimeSpan.Zero;\n            }\n        }\n\n        private void SetupGraphicsDeviceEvents()\n        {                                                                                     /*\n            graphicsDeviceManager.DeviceCreated += graphicsDeviceService_DeviceCreated;\n            graphicsDeviceManager.DeviceResetting += graphicsDeviceService_DeviceResetting;\n            graphicsDeviceManager.DeviceReset += graphicsDeviceService_DeviceReset;\n            graphicsDeviceManager.DeviceDisposing += graphicsDeviceService_DeviceDisposing; */\n        }\n\n        private void DisposeGraphicsDeviceEvents()\n        {\n            if (graphicsDeviceManager != null)\n            {                                                                                      /*\n                graphicsDeviceManager.DeviceCreated -= graphicsDeviceService_DeviceCreated;\n                graphicsDeviceManager.DeviceResetting -= graphicsDeviceService_DeviceResetting;\n                graphicsDeviceManager.DeviceReset -= graphicsDeviceService_DeviceReset;\n                graphicsDeviceManager.DeviceDisposing -= graphicsDeviceService_DeviceDisposing;  */\n            }\n        }\n               /*\n        private void graphicsDeviceService_DeviceCreated(object sender, EventArgs e)\n        {\n            LoadContent();\n        }\n\n        private void graphicsDeviceService_DeviceDisposing(object sender, EventArgs e)\n        {\n            if (ContentLoaded)\n            {\n                UnloadContent();\n            }\n        }    \n\n        private void graphicsDeviceService_DeviceReset(object sender, EventArgs e)\n        {\n            throw new NotImplementedException();\n        }\n\n        private void graphicsDeviceService_DeviceResetting(object sender, EventArgs e)\n        {\n            throw new NotImplementedException();\n        }\n            */\n        #endregion\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Toolkit/GameGraphicsParameters.cs",
    "content": "﻿using SharpDX.Direct3D;\nusing SharpDX.Toolkit.Graphics;\nusing SharpDX.Direct3D9;\n\nnamespace SharpDX.Toolkit\n{\n    /// <summary>\n    ///   Describess how data will be displayed to the screen.\n    /// </summary>\n    /// <msdn-id>bb173075</msdn-id>\n    /// <unmanaged>DXGI_SWAP_CHAIN_DESC</unmanaged>\n    /// <unmanaged-short>DXGI_SWAP_CHAIN_DESC</unmanaged-short>\n    public class GameGraphicsParameters\n    {\n        public int PreferredVideoAdapter;\n\n        /// <summary>\n        ///   A value that describes the resolution width.\n        /// </summary>\n        /// <msdn-id>bb173075</msdn-id>\n        /// <unmanaged>DXGI_MODE_DESC BufferDesc</unmanaged>\n        /// <unmanaged-short>DXGI_MODE_DESC BufferDesc</unmanaged-short>\n        public int PreferredBackBufferWidth;\n\n        /// <summary>\n        ///   A value that describes the resolution height.\n        /// </summary>\n        /// <msdn-id>bb173075</msdn-id>\n        /// <unmanaged>DXGI_MODE_DESC BufferDesc</unmanaged>\n        /// <unmanaged-short>DXGI_MODE_DESC BufferDesc</unmanaged-short>\n        public int PreferredBackBufferHeight;\n\n        /// <summary>\n        ///   A <strong><see cref=\"SharpDX.DXGI.Format\" /></strong> structure describing the display format.\n        /// </summary>\n        /// <msdn-id>bb173075</msdn-id>\n        /// <unmanaged>DXGI_MODE_DESC BufferDesc</unmanaged>\n        /// <unmanaged-short>DXGI_MODE_DESC BufferDesc</unmanaged-short>\n        public Format PreferredBackBufferFormat;\n\n        /// <summary>\n        /// Gets or sets the depth stencil format\n        /// </summary>\n        public Format PreferredDepthStencilFormat;\n\n        /// <summary>\n        ///   Gets or sets a value indicating whether the application is in full screen mode.\n        /// </summary>\n        public bool IsFullScreen;\n\n        /// <summary>\n        /// Gets or sets the minimum graphics profile.\n        /// </summary>\n        public FeatureLevel[] PreferredGraphicsProfile;\n\n        /// <summary>\n        ///   Gets or sets a value indicating the number of sample locations during multisampling.\n        /// </summary>\n        public bool PreferMultiSampling;\n\n        /// <summary>\n        /// Gets or sets a value indicating whether to synochrnize present with vertical blanking.\n        /// </summary>\n        public bool SynchronizeWithVerticalRetrace;\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Toolkit/GamePlatform.cs",
    "content": "﻿// Copyright (c) 2010-2012 SharpDX - Alexandre Mutel\n// \n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n// \n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n// \n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nusing System;\nusing System.Collections.Generic;\n\nusing SharpDX.Direct3D;\nusing SharpDX.Direct3D9;\nusing SharpDX.Toolkit.Graphics;\nusing SharpDX.Windows;\n\nnamespace SharpDX.Toolkit\n{\n    public abstract class GamePlatform\n    {\n        protected GamePlatform()\n        {\n        }\n\n        public static GamePlatform Create()\n        {\n#if WIN8METRO\n            return new GamePlatformWinRT(services);\n#elif WP8\n            return new GamePlatformWP8(services);\n#else\n            return new GamePlatformDesktop();\n#endif\n        }\n\n        public abstract string DefaultAppDirectory { get; }\n\n        public object WindowContext { get; set; }\n\n        public event EventHandler<EventArgs> Activated;\n\n        public event EventHandler<EventArgs> Deactivated;\n\n        public event EventHandler<EventArgs> Exiting;\n\n        public event EventHandler<EventArgs> Idle;\n\n        public event EventHandler<EventArgs> Resume;\n\n        public event EventHandler<EventArgs> Suspend;\n\n        public abstract GameWindow MainWindow { get; }\n\n        public abstract GameWindow CreateWindow(object windowContext = null, int width = 0, int height = 0);\n\n        public bool IsBlockingRun { get; protected set; }\n\n        public abstract void Run(object windowContext, VoidAction initCallback, VoidAction tickCallback);\n\n        public virtual void Exit()\n        {\n            Activated = null;\n            Deactivated = null;\n            Exiting = null;\n            Idle = null;\n            Resume = null;\n            Suspend = null;\n        }\n        \n        protected void OnActivated(object source, EventArgs e)\n        {\n            EventHandler<EventArgs> handler = Activated;\n            if (handler != null) handler(this, e);\n        }\n\n        protected void OnDeactivated(object source, EventArgs e)\n        {\n            EventHandler<EventArgs> handler = Deactivated;\n            if (handler != null) handler(this, e);\n        }\n\n        protected void OnExiting(object source, EventArgs e)\n        {\n            EventHandler<EventArgs> handler = Exiting;\n            if (handler != null) handler(this, e);\n        }\n\n        protected void OnIdle(object source, EventArgs e)\n        {\n            EventHandler<EventArgs> handler = Idle;\n            if (handler != null) handler(this, e);\n        }\n\n        protected void OnResume(object source, EventArgs e)\n        {\n            EventHandler<EventArgs> handler = Resume;\n            if (handler != null) handler(this, e);\n        }\n\n        protected void OnSuspend(object source, EventArgs e)\n        {\n            EventHandler<EventArgs> handler = Suspend;\n            if (handler != null) handler(this, e);\n        }\n\n        protected void AddDevice(GraphicsAdapter graphicsAdapter, DisplayMode mode,  GraphicsDeviceInformation deviceBaseInfo, GameGraphicsParameters prefferedParameters, List<GraphicsDeviceInformation> graphicsDeviceInfos)\n        {\n            var deviceInfo = deviceBaseInfo.Clone();\n\n            PresentParameters p = new PresentParameters();\n            p.InitDefaults();\n\n            p.FullScreenRefreshRateInHz = mode.RefreshRate;\n\n            if (prefferedParameters.IsFullScreen)\n            {\n                p.BackBufferWidth = prefferedParameters.PreferredBackBufferWidth;\n                p.BackBufferHeight = prefferedParameters.PreferredBackBufferHeight;\n                p.Windowed = false;\n            }\n            else\n            {\n                p.BackBufferWidth = prefferedParameters.PreferredBackBufferWidth;\n                p.BackBufferHeight = prefferedParameters.PreferredBackBufferHeight;\n                p.Windowed = true;\n                p.FullScreenRefreshRateInHz = 0;\n            }\n\n            p.DeviceWindowHandle = MainWindow.NativeWindow.Handle;\n            p.AutoDepthStencilFormat = prefferedParameters.PreferredDepthStencilFormat;\n            p.MultiSampleQuality = 0;\n            p.PresentationInterval = prefferedParameters.SynchronizeWithVerticalRetrace ? PresentInterval.One : PresentInterval.Immediate;\n            p.SwapEffect = SwapEffect.Discard;\n            p.PresentFlags = PresentFlags.Video;            \n\n            deviceInfo.PresentationParameters = p;\n            deviceInfo.Adapter = GraphicsAdapter.Adapters[prefferedParameters.PreferredVideoAdapter];\n\n            if (!graphicsDeviceInfos.Contains(deviceInfo))\n            {\n                graphicsDeviceInfos.Add(deviceInfo);\n            }\n        }\n\n        public virtual List<GraphicsDeviceInformation> FindBestDevices(GameGraphicsParameters prefferedParameters)\n        {\n            var graphicsDeviceInfos = new List<GraphicsDeviceInformation>();\n\n            // Iterate on each adapter\n            foreach (var graphicsAdapter in GraphicsAdapter.Adapters)\n            {\n                // Iterate on each preferred graphics profile\n                foreach (var featureLevel in prefferedParameters.PreferredGraphicsProfile)\n                {\n                    // Check if this profile is supported.\n                    if (graphicsAdapter.IsProfileSupported(featureLevel))\n                    {\n                        var deviceInfo = new GraphicsDeviceInformation\n                        {\n                            Adapter = graphicsAdapter,\n                            GraphicsProfile = featureLevel,\n                            PresentationParameters = new PresentParameters()\n                            {\n                                MultiSampleQuality = 0,\n                                Windowed = !prefferedParameters.IsFullScreen,\n                                PresentationInterval = prefferedParameters.SynchronizeWithVerticalRetrace ? PresentInterval.One : PresentInterval.Immediate,\n                                DeviceWindowHandle = MainWindow.NativeWindow.Handle,\n                            }\n                        };\n\n                        if (graphicsAdapter.CurrentDisplayMode.Format != Format.Unknown)\n                        {\n                            AddDevice(graphicsAdapter, graphicsAdapter.CurrentDisplayMode, deviceInfo, prefferedParameters, graphicsDeviceInfos);\n                        }\n\n                        if (prefferedParameters.IsFullScreen)\n                        {\n                            // Get display mode for the particular width, height, pixelformat\n                            foreach (var displayMode in graphicsAdapter.SupportedDisplayModes)\n                            {\n                                AddDevice(graphicsAdapter, displayMode, deviceInfo, prefferedParameters, graphicsDeviceInfos);\n                            }\n                        }\n\n                        // If the profile is supported, we are just using the first best one\n                        break;\n                    }\n                }\n            }\n\n            return graphicsDeviceInfos;\n        }\n\n        public virtual SharpDX.Direct3D9.Device CreateDevice(GraphicsDeviceInformation deviceInformation)\n        {\n            //var device = \n            \n                //GraphicsDevice.New(deviceInformation.Adapter, deviceInformation.DeviceCreationFlags);\n\n            // Create Device\n            //SharpDX.Direct3D9.Direct3D direct3D = new SharpDX.Direct3D9.Direct3D();\n\n            PresentParameters p = deviceInformation.PresentationParameters;\n            p.DeviceWindowHandle = MainWindow.NativeWindow.Handle;\n\n            deviceInformation.PresentationParameters = p;\n\n            SharpDX.Direct3D9.Device device = null;\n            //try\n            {\n                device = new SharpDX.Direct3D9.Device(GraphicsAdapter.D3D, deviceInformation.Adapter.AdapterOrdinal, DeviceType.Hardware, p.DeviceWindowHandle, CreateFlags.HardwareVertexProcessing | CreateFlags.Multithreaded, deviceInformation.PresentationParameters);\n            }\n            /*catch\n            {\n            } */\n\n            //device.Presenter = new SwapChainGraphicsPresenter(device, deviceInformation.PresentationParameters);\n              \n            return device;\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Toolkit/GamePlatformDesktop.cs",
    "content": "﻿// Copyright (c) 2010-2012 SharpDX - Alexandre Mutel\n// \n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n// \n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n// \n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n#if !W8CORE\nusing System;\nusing System.IO;\nusing System.Reflection;\nusing System.Windows.Forms;\n\nusing SharpDX.Toolkit.Graphics;\nusing SharpDX.Windows;\n\nusing SharpDX.Direct3D9;\nusing SharpDX.Win32;\n\nnamespace SharpDX.Toolkit\n{\n    public class GamePlatformDesktop : GamePlatform\n    {\n        private readonly GameWindowDesktop gameMainWindowDesktop;\n\n        public GamePlatformDesktop() : base()\n        {\n            IsBlockingRun = true;\n            gameMainWindowDesktop = new GameWindowDesktop();\n        }\n\n        public override string DefaultAppDirectory\n        {\n            get\n            {\n                var assemblyUri = new Uri(Assembly.GetEntryAssembly().CodeBase);\n                return Path.GetDirectoryName(assemblyUri.LocalPath);\n            }\n        }\n\n        public override GameWindow MainWindow\n        {\n            get\n            {\n                return gameMainWindowDesktop;\n            }\n        }\n\n        public override GameWindow CreateWindow(object windowContext = null, int width = 0, int height = 0)\n        {\n            var window = new GameWindowDesktop();\n            window.Initialize(windowContext);\n\n            width = width == 0 ? window.IsForm ? GraphicsDeviceManager.DefaultBackBufferWidth : window.Control.ClientSize.Width : width;\n            height = height == 0 ? window.IsForm ? GraphicsDeviceManager.DefaultBackBufferHeight : window.Control.ClientSize.Height : height;\n            window.Control.ClientSize = new System.Drawing.Size(width, height);\n            return window;\n        }\n\n        public override void Run(object windowContext, VoidAction initCallback, VoidAction tickCallback)\n        {\n            // Initialize the window\n            MainWindow.Initialize(windowContext);\n\n            // Register on Activated \n            MainWindow.Activated += OnActivated;\n            MainWindow.Deactivated += OnDeactivated;\n\n            // Initialize the init callback\n            initCallback();\n\n            // Run the rendering loop\n            try\n            {\n                RenderLoop.UseCustomDoEvents = true;\n                RenderLoop.Run((Control)MainWindow.NativeWindow, new RenderLoop.RenderCallback(tickCallback));\n            } \n            finally\n            {\n                OnExiting(this, EventArgs.Empty);\n            }\n        }\n\n        public override void Exit()\n        {\n            gameMainWindowDesktop.Control.Dispose();\n\n            base.Exit();\n        }\n    }\n}\n#endif"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Toolkit/GameTime.cs",
    "content": "﻿using System;\n\nnamespace SharpDX.Toolkit\n{\n    /// <summary>\n    /// Current timing used for variable-step (real time) or fixed-step (game time) games.\n    /// </summary>\n    public class GameTime\n    {\n        #region Constructors and Destructors\n\n        /// <summary>\n        /// Initializes a new instance of the <see cref=\"GameTime\" /> class.\n        /// </summary>\n        public GameTime()\n        {\n        }\n\n        /// <summary>\n        /// Initializes a new instance of the <see cref=\"GameTime\" /> class.\n        /// </summary>\n        /// <param name=\"totalGameTime\">The total game time since the start of the game.</param>\n        /// <param name=\"elapsedGameTime\">The elapsed game time since the last update.</param>\n        public GameTime(TimeSpan totalGameTime, TimeSpan elapsedGameTime)\n        {\n            TotalGameTime = totalGameTime;\n            ElapsedGameTime = elapsedGameTime;\n        }\n\n        /// <summary>\n        /// Initializes a new instance of the <see cref=\"GameTime\" /> class.\n        /// </summary>\n        /// <param name=\"totalGameTime\">The total game time since the start of the game.</param>\n        /// <param name=\"elapsedGameTime\">The elapsed game time since the last update.</param>\n        /// <param name=\"isRunningSlowly\">True if the game is running unexpectedly slowly.</param>\n        public GameTime(TimeSpan totalGameTime, TimeSpan elapsedGameTime, bool isRunningSlowly)\n        {\n            TotalGameTime = totalGameTime;\n            ElapsedGameTime = elapsedGameTime;\n            IsRunningSlowly = isRunningSlowly;\n        }\n\n        #endregion\n\n        #region Public Properties\n\n        /// <summary>\n        /// Gets the elapsed game time since the last update\n        /// </summary>\n        /// <value>The elapsed game time.</value>\n        public TimeSpan ElapsedGameTime { get; private set; }\n\n        /// <summary>\n        /// Gets a value indicating whether the game is running slowly than its TargetElapsedTime. This can be used for example to render less details...etc.\n        /// </summary>\n        /// <value><c>true</c> if this instance is running slowly; otherwise, <c>false</c>.</value>\n        public bool IsRunningSlowly { get; private set; }\n\n        /// <summary>\n        /// Gets the amount of game time since the start of the game.\n        /// </summary>\n        /// <value>The total game time.</value>\n        public TimeSpan TotalGameTime { get; private set; }\n\n        /// <summary>\n        /// Gets the current frame count since the start of the game.\n        /// </summary>\n        public int FrameCount { get; internal set; }\n\n        internal void Update(TimeSpan totalGameTime, TimeSpan elapsedGameTime, bool isRunningSlowly)\n        {\n            TotalGameTime = totalGameTime;\n            ElapsedGameTime = elapsedGameTime;\n            IsRunningSlowly = isRunningSlowly;\n        }\n\n        #endregion\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Toolkit/GameWindow.cs",
    "content": "﻿using System;\n\nusing SharpDX.Toolkit.Graphics;\nusing SharpDX.Windows;\nusing System.Windows.Forms;\n\nnamespace SharpDX.Toolkit\n{\n    /// <summary>\n    /// An abstract window.\n    /// </summary>\n    public abstract class GameWindow : Component\n    {\n        #region Fields\n\n        private string title;\n\n        #endregion\n\n        #region Public Events\n\n        /// <summary>\n        /// Occurs when this window is activated.\n        /// </summary>\n        public event EventHandler<EventArgs> Activated;\n\n        /// <summary>\n        /// Occurs, when device client size is changed.\n        /// </summary>\n        public event EventHandler<EventArgs> ClientSizeChanged;\n\n        /// <summary>\n        /// Occurs when this window is deactivated.\n        /// </summary>\n        public event EventHandler<EventArgs> Deactivated;\n\n        /// <summary>\n        /// Occurs, when device orientation is changed.\n        /// </summary>\n        public event EventHandler<EventArgs> OrientationChanged;\n\n        #endregion\n\n        #region Public Properties\n\n        /// <summary>\n        /// Gets or sets, user possibility to resize this window.\n        /// </summary>\n        public abstract bool AllowUserResizing { get; set; }\n\n        /// <summary>\n        /// Gets the client bounds.\n        /// </summary>\n        /// <value>The client bounds.</value>\n        public abstract DrawingRectangle ClientBounds { get; }\n\n     \n        /// <summary>\n        /// Gets a value indicating whether this window is only suitable to run in full-screen mode.\n        /// </summary>\n        /// <value><c>true</c> if this window is only suitable to run in full-screen mode is full screen mandatory; otherwise, <c>false</c>.</value>\n        public abstract bool IsFullScreenMandatory { get; }\n\n        /// <summary>\n        /// Gets a value indicating whether this instance is minimized.\n        /// </summary>\n        /// <value><c>true</c> if this instance is minimized; otherwise, <c>false</c>.</value>\n        public abstract bool IsMinimized { get; }\n\n        /// <summary>\n        /// Gets or sets a value indicating whether the mouse pointer is visible over this window.\n        /// </summary>\n        /// <value><c>true</c> if this instance is mouse visible; otherwise, <c>false</c>.</value>\n        public abstract bool IsMouseVisible { get; set; }\n\n        /// <summary>\n        /// Gets the native window.\n        /// </summary>\n        /// <value>The native window.</value>\n        public abstract Control NativeWindow { get; }\n\n        /// <summary>\n        /// Gets or sets a value indicating whether this <see cref=\"GameWindow\" /> is visible.\n        /// </summary>\n        /// <value><c>true</c> if visible; otherwise, <c>false</c>.</value>\n        public abstract bool Visible { get; set; }\n\n        public abstract void UpdateFullscreen(bool fullscreen);\n\n        /// <summary>\n        /// Gets or sets the title of the window.\n        /// </summary>\n        public string Title\n        {\n            get\n            {\n                return title;\n            }\n\n            set\n            {\n                if (value == null)\n                {\n                    throw new ArgumentNullException(\"value\");\n                }\n\n                if (title != value)\n                {\n                    title = value;\n                    SetTitle(title);\n                }\n            }\n        }\n\n        #endregion\n\n        #region Public Methods and Operators\n\n        public abstract void BeginScreenDeviceChange(bool willBeFullScreen);\n\n        public void EndScreenDeviceChange()\n        {\n            EndScreenDeviceChange(ClientBounds.Width, ClientBounds.Height);\n        }\n\n        public abstract void EndScreenDeviceChange(int clientWidth, int clientHeight);\n\n        #endregion\n\n        #region Methods\n\n        /// <summary>\n        /// Initializes the GameWindow with the specified window context.\n        /// </summary>\n        /// <param name=\"windowContext\">The window context.</param>\n        internal abstract void Initialize(object windowContext);\n\n        protected void OnActivated(object source, EventArgs e)\n        {\n            EventHandler<EventArgs> handler = Activated;\n            if (handler != null)\n            {\n                handler(source, e);\n            }\n        }\n\n        protected void OnClientSizeChanged(object source, EventArgs e)\n        {\n            EventHandler<EventArgs> handler = ClientSizeChanged;\n            if (handler != null)\n            {\n                handler(this, e);\n            }\n        }\n\n        protected void OnDeactivated(object source, EventArgs e)\n        {\n            EventHandler<EventArgs> handler = Deactivated;\n            if (handler != null)\n            {\n                handler(source, e);\n            }\n        }\n\n        protected void OnOrientationChanged(object source, EventArgs e)\n        {\n            EventHandler<EventArgs> handler = OrientationChanged;\n            if (handler != null)\n            {\n                handler(this, e);\n            }\n        }\n\n        protected abstract void SetTitle(string title);\n\n        #endregion\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Toolkit/GameWindowDesktop.cs",
    "content": "﻿using System;\nusing System.Windows.Forms;\n\nusing SharpDX.Toolkit.Graphics;\nusing SharpDX.Windows;\n\nnamespace SharpDX.Toolkit\n{\n    /// <summary>\n    /// An abstract window.\n    /// </summary>\n    internal class GameWindowDesktop : GameWindow\n    {\n        private bool isInitialized = false;\n        private bool isMouseVisible = true;\n        private bool isMouseCurrentlyHidden;\n\n        public Control Control;\n\n        private GameWindowForm gameWindowForm;\n\n\n        internal GameWindowDesktop()\n        {\n        }\n\n        public bool IsForm\n        {\n            get\n            {\n                return Control is Form;\n            }\n        }\n\n        public override Control NativeWindow\n        {\n            get\n            {\n                return Control;\n            }\n        }\n\n        public override void BeginScreenDeviceChange(bool willBeFullScreen)\n        {\n            \n        }\n\n        public override void EndScreenDeviceChange(int clientWidth, int clientHeight)\n        {\n            \n        }\n\n        public override bool IsFullScreenMandatory\n        {\n            get\n            {\n                return false;\n            }\n        }\n\n\n        internal override void Initialize(object windowContext)\n        {\n            if (isInitialized)\n            {\n                throw new InvalidOperationException(\"GameWindow is already initialized\");\n            }\n\n            windowContext = windowContext ?? new GameWindowForm(\"SharpDX.Toolkit.Game\");\n            Control = windowContext as Control;\n            if (Control == null)\n            {\n                throw new NotSupportedException(\"Unsupported window context. Unable to create game window. Only System.Windows.Control subclass are supported\");\n            }\n\n            //Control.Focus();\n\n            //Control.MouseEnter += GameWindowForm_MouseEnter;\n            //Control.MouseLeave += GameWindowForm_MouseLeave;\n\n            gameWindowForm = windowContext as GameWindowForm;\n            if (gameWindowForm != null)\n            {\n                gameWindowForm.Activated += OnActivated;\n                gameWindowForm.Deactivate += OnDeactivated;\n                //gameWindowForm.UserResized += OnClientSizeChanged;\n            }\n            else\n            {\n                //Control.Resize += OnClientSizeChanged;\n            }\n\n            isInitialized = true;\n        }\n\n        void GameWindowForm_MouseEnter(object sender, System.EventArgs e)\n        {\n            if (!isMouseVisible && !isMouseCurrentlyHidden)\n            {\n                Cursor.Hide();\n                isMouseCurrentlyHidden = true;\n            }\n        }\n\n        void GameWindowForm_MouseLeave(object sender, System.EventArgs e)\n        {\n            if (isMouseCurrentlyHidden)\n            {\n                Cursor.Show();\n                isMouseCurrentlyHidden = false;\n            }\n        }\n\n        public override bool IsMouseVisible\n        {\n            get\n            {\n                return isMouseVisible;\n            }\n            set\n            {\n                if (isMouseVisible != value)\n                {\n                    isMouseVisible = value;\n                    if (isMouseVisible)\n                    {\n                        if (isMouseCurrentlyHidden)\n                        {\n                            Cursor.Show();\n                            isMouseCurrentlyHidden = false;\n                        }\n                    }\n                    else if (!isMouseCurrentlyHidden)\n                    {\n                        Cursor.Hide();\n                        isMouseCurrentlyHidden = true;\n                    }\n                }\n            }\n        }\n\n        /// <summary>\n        /// Gets or sets a value indicating whether this <see cref=\"GameWindow\" /> is visible.\n        /// </summary>\n        /// <value><c>true</c> if visible; otherwise, <c>false</c>.</value>\n        public override bool Visible\n        {\n            get\n            {\n                return Control.Visible;\n            }\n            set\n            {\n                Control.Visible = value;\n            }\n        }\n\n        protected override void SetTitle(string title)\n        {\n            var form = Control as Form;\n            if (form != null)\n            {\n                form.Text = title;\n            }\n        }\n\n        public override bool AllowUserResizing\n        {\n            get\n            {\n                return (Control is GameWindowForm && ((GameWindowForm)Control).AllowUserResizing);\n            }\n            set\n            {\n                if (Control is GameWindowForm)\n                {\n                    ((GameWindowForm)Control).AllowUserResizing = value;\n                }\n            }\n        }\n\n        public override DrawingRectangle ClientBounds\n        {\n            get\n            {\n                return new DrawingRectangle(0, 0, Control.ClientSize.Width, Control.ClientSize.Height);\n            }\n        }\n\n        public override bool IsMinimized\n        {\n            get\n            {\n                var form  = Control as Form;\n                if (form != null)\n                {\n                    return form.WindowState == FormWindowState.Minimized;\n                }\n\n                // Check for non-form control\n                return false;\n            }\n        }\n\n        public override void UpdateFullscreen(bool fullscreen)\n        {\n            var form  = Control as Form;\n            if (fullscreen)\n                form.FormBorderStyle = FormBorderStyle.None;\n            else\n                form.FormBorderStyle = FormBorderStyle.FixedSingle;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Toolkit/GameWindowForm.cs",
    "content": "﻿// Copyright (c) 2010-2012 SharpDX - Alexandre Mutel\n// \n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n// \n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n// \n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n#if !W8CORE\nusing System;\nusing System.Drawing;\nusing System.Windows.Forms;\n\nusing SharpDX.Windows;\nusing SharpDX.Win32;\nusing System.Collections.Generic;\nusing MinerWars.AppCode.Game.Utils;\n\nnamespace SharpDX.Toolkit\n{\n    internal class GameWindowForm : Form, IMessageFilter\n    {\n        private bool allowUserResizing;\n\n        private bool m_enableMessageBypass = true;\n        private bool m_isLoaded = false;\n\n        /// <summary>\n        /// When true, message processing in WinForms is disabled.\n        /// No events like KeyDown, MouseMove... are raised.\n        /// Activated and Deactivated is still raised.\n        /// Prevent creating garbage.\n        /// </summary>\n        public bool EnableMessageBypass\n        {\n            get\n            {\n                return m_enableMessageBypass;\n            }\n            set\n            {\n                if (m_isLoaded)\n                    throw new InvalidOperationException(\"Cannot enable bypass when form is loaded\");\n\n                m_enableMessageBypass = value;\n            }\n        }\n\n        /// <summary>\n        /// Messages which are bypassed.\n        /// These messages are handled by DefWindowProc before it arrives to window WndProc.\n        /// It prevents allocations in System.Windows.Forms\n        /// </summary>\n        public HashSet<int> BypassedMessages { get; private set; }\n\n        public GameWindowForm()\n            : this(\"SharpDX\")\n        {\n        }\n\n        public GameWindowForm(string text)\n        {\n            // By default, non resizable\n            MaximizeBox = false;\n            FormBorderStyle = FormBorderStyle.FixedSingle;\n            BypassedMessages = new HashSet<int>();\n\n            BypassedMessages.Add((int)WM.KEYDOWN);\n            BypassedMessages.Add((int)WM.KEYUP);\n            BypassedMessages.Add((int)WM.CHAR);\n            BypassedMessages.Add((int)WM.DEADCHAR);\n            BypassedMessages.Add((int)WM.SYSKEYDOWN);\n            BypassedMessages.Add((int)WM.SYSKEYUP);\n            BypassedMessages.Add((int)WM.SYSCHAR);\n            BypassedMessages.Add((int)WM.SYSDEADCHAR);\n\n            BypassedMessages.Add((int)WM.MOUSEWHEEL);\n            BypassedMessages.Add((int)WM.MOUSEMOVE);\n            BypassedMessages.Add((int)WM.LBUTTONDOWN);\n            BypassedMessages.Add((int)WM.LBUTTONUP);\n            BypassedMessages.Add((int)WM.LBUTTONDBLCLK);\n            BypassedMessages.Add((int)WM.RBUTTONDOWN);\n            BypassedMessages.Add((int)WM.RBUTTONUP);\n            BypassedMessages.Add((int)WM.RBUTTONDBLCLK);\n            BypassedMessages.Add((int)WM.MBUTTONDOWN);\n            BypassedMessages.Add((int)WM.MBUTTONUP);\n            BypassedMessages.Add((int)WM.MBUTTONDBLCLK);\n            BypassedMessages.Add((int)WM.XBUTTONDBLCLK);\n            BypassedMessages.Add((int)WM.XBUTTONDOWN);\n            BypassedMessages.Add((int)WM.XBUTTONUP);\n\n            BypassedMessages.Add((int)WM.ERASEBKGND);\n            BypassedMessages.Add((int)WM.SHOWWINDOW);\n            BypassedMessages.Add((int)WM.ACTIVATE);\n            BypassedMessages.Add((int)WM.SETFOCUS);\n            BypassedMessages.Add((int)WM.KILLFOCUS);\n\n            BypassedMessages.Add((int)WM.IME_NOTIFY);\n        }\n        \n        internal bool AllowUserResizing\n        {\n            get\n            {\n                return allowUserResizing;\n            }\n            set\n            {\n                if (allowUserResizing != value)\n                {\n                    allowUserResizing = value;\n                    MaximizeBox = allowUserResizing;\n                    FormBorderStyle = allowUserResizing ? FormBorderStyle.Sizable : FormBorderStyle.FixedSingle;\n                }\n            }\n        }\n\n        protected override void OnLoad(EventArgs e)\n        {\n            m_isLoaded = true;\n            if (EnableMessageBypass)\n            {\n                MessageFilterHook.AddMessageFilter(this.Handle, this);\n            }\n            base.OnLoad(e);\n        }\n\n        protected override void OnClosed(EventArgs e)\n        {\n            if (EnableMessageBypass)\n            {\n                MessageFilterHook.RemoveMessageFilter(this.Handle, this);\n            }\n        }\n\n        public bool PreFilterMessage(ref Message m)\n        {\n            if (BypassedMessages.Contains(m.Msg))\n            {\n                if (m.Msg == (int)WM.ACTIVATE)\n                {\n                    if (m.WParam == IntPtr.Zero)\n                        OnDeactivate(EventArgs.Empty);\n                    else\n                        OnActivated(EventArgs.Empty);\n                }\n                m.Result = MyWindowsAPIWrapper.DefWindowProc(m.HWnd, m.Msg, m.WParam, m.LParam);\n                return true;\n            }\n            return false;\n        }\n    }\n}\n#endif"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Toolkit/Graphics/BlendState.cs",
    "content": "﻿using SharpDX.Direct3D9;\nusing System.Collections.Generic;\nusing System;\n\nnamespace SharpDX.Toolkit.Graphics\n{\n    /// <summary>\n    /// BlendState is equivalent to <see cref=\"SharpDX.Direct3D11.BlendState\"/>.\n    /// </summary>\n    /// <remarks>\n    /// This class provides default stock blend states and easier constructors. It is also associating the <see cref=\"BlendFactor\"/> and <see cref=\"MultiSampleMask\"/> into the same object.\n    /// </remarks>\n    public class BlendState : IDisposable\n    {\n        public static BlendState Current { get; private set; }\n\n        // Summary:\n        //     A built-in state object with settings for additive blend, that is adding\n        //     the destination data to the source data without using alpha.\n        public static readonly BlendState Additive;\n        //\n        // Summary:\n        //     A built-in state object with settings for alpha blend, that is blending the\n        //     source and destination data using alpha.\n        public static readonly BlendState AlphaBlend;\n        //\n        // Summary:\n        //     A built-in state object with settings for blending with non-premultipled\n        //     alpha, that is blending source and destination data using alpha while assuming\n        //     the color data contains no alpha information.\n        public static readonly BlendState NonPremultiplied;\n        //\n        // Summary:\n        //     A built-in state object with settings for opaque blend, that is overwriting\n        //     the source with the destination data.\n        public static readonly BlendState Opaque;\n\n        static BlendState()\n        {\n            Additive = new BlendState()\n            {\n                ColorSourceBlend = Blend.SourceAlpha,\n                AlphaSourceBlend = Blend.SourceAlpha,\n                ColorDestinationBlend = Blend.One,\n                AlphaDestinationBlend = Blend.One\n            };\n\n            AlphaBlend = new BlendState()\n            {\n                ColorSourceBlend = Blend.One,\n                AlphaSourceBlend = Blend.One,\n                ColorDestinationBlend = Blend.InverseSourceAlpha,\n                AlphaDestinationBlend = Blend.InverseSourceAlpha\n            };\n\n            NonPremultiplied = new BlendState()\n            {\n                ColorSourceBlend = Blend.SourceAlpha,\n                AlphaSourceBlend = Blend.SourceAlpha,\n                ColorDestinationBlend = Blend.InverseSourceAlpha,\n                AlphaDestinationBlend = Blend.InverseSourceAlpha\n            };\n\n            Opaque = new BlendState()\n            {\n                ColorSourceBlend = Blend.One,\n                AlphaSourceBlend = Blend.One,\n                ColorDestinationBlend = Blend.Zero,\n                AlphaDestinationBlend = Blend.Zero\n            };\n        }\n\n        static Device m_device;\n        static List<BlendState> m_instances = new List<BlendState>(16);\n        StateBlock m_stateBlock;\n\n        public static void LoadContent(Device device)\n        {\n            System.Diagnostics.Debug.Assert(m_device == null);\n            m_device = device;\n        }\n\n        public static void UnloadContent()\n        {\n            m_device = null;\n\n            foreach (var instance in m_instances)\n            {\n                instance.Dispose();\n            }\n\n            m_instances.Clear();\n        }\n\n        public void Dispose()\n        {\n            m_stateBlock.Dispose();\n            m_stateBlock = null;\n        }\n\n        // Summary:\n        //     Creates an instance of the BlendState class with default values, using additive\n        //     color and alpha blending.\n        public BlendState()\n        {\n            AlphaBlendFunction = BlendOperation.Add;\n            AlphaSourceBlend = Blend.One;\n            AlphaDestinationBlend = Blend.Zero;\n\n            ColorBlendFunction = BlendOperation.Add;\n            ColorSourceBlend = Blend.One;\n            ColorDestinationBlend = Blend.Zero;\n\n            BlendFactor = Color.White;\n            MultiSampleMask = int.MaxValue;\n\n            \n            ColorWriteChannels = ColorWriteEnable.Red | ColorWriteEnable.Green | ColorWriteEnable.Blue | ColorWriteEnable.Alpha;\n            ColorWriteChannels1 = ColorWriteEnable.Red | ColorWriteEnable.Green | ColorWriteEnable.Blue | ColorWriteEnable.Alpha;\n            ColorWriteChannels2 = ColorWriteEnable.Red | ColorWriteEnable.Green | ColorWriteEnable.Blue | ColorWriteEnable.Alpha;\n            ColorWriteChannels3 = ColorWriteEnable.Red | ColorWriteEnable.Green | ColorWriteEnable.Blue | ColorWriteEnable.Alpha;\n        }\n\n        // Summary:\n        //     Gets or sets the arithmetic operation when blending alpha values. The default\n        //     is BlendFunction.Add.\n        public BlendOperation AlphaBlendFunction { get; set; }\n        //\n        // Summary:\n        //     Gets or sets the blend factor for the destination alpha, which is the percentage\n        //     of the destination alpha included in the blended result. The default is Blend.One.\n        public Blend AlphaDestinationBlend { get; set; }\n        //\n        // Summary:\n        //     Gets or sets the alpha blend factor. The default is Blend.One.\n        public Blend AlphaSourceBlend { get; set; }\n        //\n        // Summary:\n        //     Gets or sets the four-component (RGBA) blend factor for alpha blending.\n        public Color BlendFactor { get; set; }\n        //\n        // Summary:\n        //     Gets or sets the arithmetic operation when blending color values. The default\n        //     is BlendFunction.Add.\n        public BlendOperation ColorBlendFunction { get; set; }\n        //\n        // Summary:\n        //     Gets or sets the blend factor for the destination color. The default is Blend.One.\n        public Blend ColorDestinationBlend { get; set; }\n        //\n        // Summary:\n        //     Gets or sets the blend factor for the source color. The default is Blend.One.\n        public Blend ColorSourceBlend { get; set; }\n        //\n        // Summary:\n        //     Gets or sets which color channels (RGBA) are enabled for writing during color\n        //     blending. The default value is ColorWriteChannels.None.\n        public ColorWriteEnable ColorWriteChannels { get; set; }\n        //\n        // Summary:\n        //     Gets or sets which color channels (RGBA) are enabled for writing during color\n        //     blending. The default value is ColorWriteChannels.None.\n        public ColorWriteEnable ColorWriteChannels1 { get; set; }\n        //\n        // Summary:\n        //     Gets or sets which color channels (RGBA) are enabled for writing during color\n        //     blending. The default value is ColorWriteChannels.None.\n        public ColorWriteEnable ColorWriteChannels2 { get; set; }\n        //\n        // Summary:\n        //     Gets or sets which color channels (RGBA) are enabled for writing during color\n        //     blending. The default value is ColorWriteChannels.None.\n        public ColorWriteEnable ColorWriteChannels3 { get; set; }\n        //\n        // Summary:\n        //     Gets or sets a bitmask which defines which samples can be written during\n        //     multisampling. The default is 0xffffffff.\n        public int MultiSampleMask { get; set; }\n\n        public void Apply()\n        {\n            if (m_stateBlock == null)\n            {\n                m_device.BeginStateBlock();\n\n                m_device.SetRenderState(RenderState.AlphaBlendEnable, true);\n                m_device.SetRenderState(RenderState.AlphaFunc, Compare.Always);\n\n                m_device.SetRenderState(RenderState.BlendOperationAlpha, AlphaBlendFunction);\n                m_device.SetRenderState(RenderState.DestinationBlendAlpha, AlphaDestinationBlend);\n                m_device.SetRenderState(RenderState.SourceBlendAlpha, AlphaSourceBlend);\n                m_device.SetRenderState(RenderState.BlendFactor, BlendFactor.ToRgba());\n                m_device.SetRenderState(RenderState.BlendOperation, ColorBlendFunction);\n                m_device.SetRenderState(RenderState.DestinationBlend, ColorDestinationBlend);\n                m_device.SetRenderState(RenderState.SourceBlend, ColorSourceBlend);\n\n                m_device.SetRenderState(RenderState.ColorWriteEnable, ColorWriteChannels);\n                m_device.SetRenderState(RenderState.ColorWriteEnable1, ColorWriteChannels1);\n                m_device.SetRenderState(RenderState.ColorWriteEnable2, ColorWriteChannels2);\n                m_device.SetRenderState(RenderState.ColorWriteEnable3, ColorWriteChannels3);\n\n                m_stateBlock = m_device.EndStateBlock();\n                m_instances.Add(this);\n            }\n \n            m_stateBlock.Apply();\n\n            Current = this;\n        }\n   }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Toolkit/Graphics/DepthStencilState.cs",
    "content": "﻿using SharpDX.Direct3D9;\nusing System.Collections.Generic;\nusing System;\n\nnamespace SharpDX.Toolkit.Graphics\n{\n    // Summary:\n    //     Contains depth-stencil state for the device.\n    public class DepthStencilState : IDisposable\n    {\n        public static DepthStencilState Current { get; private set; }\n\n        static DepthStencilState defaultState;\n\n        public static DepthStencilState Default\n        {\n            get\n            {\n                if (defaultState == null)\n                {\n                    defaultState = new DepthStencilState()\n                    {\n                        DepthBufferEnable = true,\n                        DepthBufferWriteEnable = true,\n                        DepthBufferFunction = Compare.LessEqual,\n                        StencilEnable = true,\n                        ReferenceStencil = 0,\n                        CounterClockwiseStencilFunction = Compare.Always,\n                        CounterClockwiseStencilDepthBufferFail = StencilOperation.Keep,\n                        CounterClockwiseStencilFail = StencilOperation.Keep,\n                        CounterClockwiseStencilPass = StencilOperation.Keep,\n                        StencilFunction = Compare.Equal,\n                        StencilDepthBufferFail = StencilOperation.Keep,\n                        StencilFail = StencilOperation.Keep,\n                        StencilPass = StencilOperation.Keep,\n                        TwoSidedStencilMode = false,\n                        StencilMask = int.MaxValue,\n                        StencilWriteMask = int.MaxValue\n                    };\n                }\n\n                return defaultState;\n            }\n        }\n\n        static DepthStencilState depthReadState;\n\n        public static DepthStencilState DepthRead\n        {\n            get\n            {\n                if (depthReadState == null)\n                {\n                    depthReadState = new DepthStencilState()\n                    {\n                        DepthBufferEnable = true,\n                        DepthBufferWriteEnable = false,\n                        DepthBufferFunction = Compare.LessEqual,\n                        StencilEnable = false,\n                        ReferenceStencil = 0,\n                        CounterClockwiseStencilFunction = Compare.Always,\n                        CounterClockwiseStencilDepthBufferFail = StencilOperation.Keep,\n                        CounterClockwiseStencilFail = StencilOperation.Keep,\n                        CounterClockwiseStencilPass = StencilOperation.Keep,\n                        StencilFunction = Compare.Always,\n                        StencilDepthBufferFail = StencilOperation.Keep,\n                        StencilFail = StencilOperation.Keep,\n                        StencilPass = StencilOperation.Keep,\n                        TwoSidedStencilMode = false,\n                        StencilMask = int.MaxValue,\n                        StencilWriteMask = 0\n                    };\n                }\n\n                return depthReadState;\n            }\n        }\n\n        static DepthStencilState noneState;\n        public static DepthStencilState None\n        {\n            get\n            {\n                if (noneState == null)\n                {\n                    noneState = new DepthStencilState()\n                    {\n                        DepthBufferEnable = false,\n                        DepthBufferWriteEnable = false,\n                        DepthBufferFunction = Compare.LessEqual,\n                        StencilEnable = false,\n                        ReferenceStencil = 0,\n                        CounterClockwiseStencilFunction = Compare.Always,\n                        CounterClockwiseStencilDepthBufferFail = StencilOperation.Keep,\n                        CounterClockwiseStencilFail = StencilOperation.Keep,\n                        CounterClockwiseStencilPass = StencilOperation.Keep,\n                        StencilFunction = Compare.Always,\n                        StencilDepthBufferFail = StencilOperation.Keep,\n                        StencilFail = StencilOperation.Keep,\n                        StencilPass = StencilOperation.Keep,\n                        TwoSidedStencilMode = false,\n                        StencilMask = int.MaxValue,\n                        StencilWriteMask = int.MaxValue\n                    };\n                }\n\n                return noneState;\n            }\n        }\n\n        static Device m_device;\n        static List<DepthStencilState> m_instances = new List<DepthStencilState>(16);\n        StateBlock m_stateBlock;\n\n        public static void LoadContent(Device device)\n        {\n            System.Diagnostics.Debug.Assert(m_device == null);\n            m_device = device;\n        }\n\n        public static void UnloadContent()\n        {\n            m_device = null;\n\n            foreach (var instance in m_instances)\n            {\n                instance.Dispose();\n            }\n\n            m_instances.Clear();\n        }\n\n        public void Dispose()\n        {\n            m_stateBlock.Dispose();\n            m_stateBlock = null;\n        }\n\n\n\n\n        // Summary:\n        //     Creates an instance of DepthStencilState with default values.\n        public DepthStencilState()\n        {\n            DepthBufferEnable = true;\n            DepthBufferWriteEnable = true;\n            DepthBufferFunction = Compare.LessEqual;\n            StencilEnable = false;\n            ReferenceStencil = 0;\n            CounterClockwiseStencilFunction = Compare.Always;\n            CounterClockwiseStencilDepthBufferFail = StencilOperation.Keep;\n            CounterClockwiseStencilFail = StencilOperation.Keep;\n            CounterClockwiseStencilPass = StencilOperation.Keep;\n            StencilFunction = Compare.Always;\n            StencilDepthBufferFail = StencilOperation.Keep;\n            StencilFail = StencilOperation.Keep;\n            StencilPass = StencilOperation.Keep;\n            TwoSidedStencilMode = false;\n            StencilMask = int.MaxValue;\n            StencilWriteMask = int.MaxValue;\n        }\n\n        // Summary:\n        //     Gets or sets the stencil operation to perform if the stencil test passes\n        //     and the depth-buffer test fails for a counterclockwise triangle. The default\n        //     is StencilOperation.Keep.\n        public StencilOperation CounterClockwiseStencilDepthBufferFail { get; set; }\n        //\n        // Summary:\n        //     Gets or sets the stencil operation to perform if the stencil test fails for\n        //     a counterclockwise triangle. The default is StencilOperation.Keep.\n        public StencilOperation CounterClockwiseStencilFail { get; set; }\n        //\n        // Summary:\n        //     Gets or sets the comparison function to use for counterclockwise stencil\n        //     tests. The default is CompareFunction.Always.\n        public Compare CounterClockwiseStencilFunction { get; set; }\n        //\n        // Summary:\n        //     Gets or sets the stencil operation to perform if the stencil and depth-tests\n        //     pass for a counterclockwise triangle. The default is StencilOperation.Keep.\n        public StencilOperation CounterClockwiseStencilPass { get; set; }\n        //\n        // Summary:\n        //     Enables or disables depth buffering. The default is true.\n        public bool DepthBufferEnable { get; set; }\n        //\n        // Summary:\n        //     Gets or sets the comparison function for the depth-buffer test. The default\n        //     is CompareFunction.LessEqual\n        public Compare DepthBufferFunction { get; set; }\n        //\n        // Summary:\n        //     Enables or disables writing to the depth buffer. The default is true.\n        public bool DepthBufferWriteEnable { get; set; }\n        //\n        // Summary:\n        //     Specifies a reference value to use for the stencil test. The default is 0.\n        public int ReferenceStencil { get; set; }\n        //\n        // Summary:\n        //     Gets or sets the stencil operation to perform if the stencil test passes\n        //     and the depth-test fails. The default is StencilOperation.Keep.\n        public StencilOperation StencilDepthBufferFail { get; set; }\n        //\n        // Summary:\n        //     Gets or sets stencil enabling. The default is false.\n        public bool StencilEnable { get; set; }\n        //\n        // Summary:\n        //     Gets or sets the stencil operation to perform if the stencil test fails.\n        //     The default is StencilOperation.Keep.\n        public StencilOperation StencilFail { get; set; }\n        //\n        // Summary:\n        //     Gets or sets the comparison function for the stencil test. The default is\n        //     CompareFunction.Always.\n        public Compare StencilFunction { get; set; }\n        //\n        // Summary:\n        //     Gets or sets the mask applied to the reference value and each stencil buffer\n        //     entry to determine the significant bits for the stencil test. The default\n        //     mask is Int32.MaxValue.\n        public int StencilMask { get; set; }\n        //\n        // Summary:\n        //     Gets or sets the stencil operation to perform if the stencil test passes.\n        //     The default is StencilOperation.Keep.\n        public StencilOperation StencilPass { get; set; }\n        //\n        // Summary:\n        //     Gets or sets the write mask applied to values written into the stencil buffer.\n        //     The default mask is Int32.MaxValue.\n        public int StencilWriteMask { get; set; }\n        //\n        // Summary:\n        //     Enables or disables two-sided stenciling. The default is false.\n        public bool TwoSidedStencilMode { get; set; }\n\n\n        public void Apply()\n        {\n            if (m_stateBlock == null)\n            {\n                m_device.BeginStateBlock();\n                m_device.SetRenderState(RenderState.CcwStencilZFail, CounterClockwiseStencilDepthBufferFail);\n                m_device.SetRenderState(RenderState.CcwStencilFail, CounterClockwiseStencilFail);\n                m_device.SetRenderState(RenderState.CcwStencilFunc, CounterClockwiseStencilFunction);\n                m_device.SetRenderState(RenderState.CcwStencilPass, CounterClockwiseStencilPass);\n                m_device.SetRenderState(RenderState.ZEnable, DepthBufferEnable);\n                m_device.SetRenderState(RenderState.ZFunc, DepthBufferFunction);\n                m_device.SetRenderState(RenderState.ZWriteEnable, DepthBufferWriteEnable);\n                m_device.SetRenderState(RenderState.StencilRef, ReferenceStencil);\n                m_device.SetRenderState(RenderState.StencilZFail, StencilDepthBufferFail);\n                m_device.SetRenderState(RenderState.StencilEnable, StencilEnable);\n                m_device.SetRenderState(RenderState.StencilFail, StencilFail);\n                m_device.SetRenderState(RenderState.StencilFunc, StencilFunction);\n                m_device.SetRenderState(RenderState.StencilMask, StencilMask);\n                m_device.SetRenderState(RenderState.StencilPass, StencilPass);\n                m_device.SetRenderState(RenderState.StencilWriteMask, StencilWriteMask);\n                m_device.SetRenderState(RenderState.TwoSidedStencilMode, TwoSidedStencilMode);\n                m_stateBlock = m_device.EndStateBlock();\n                m_instances.Add(this);\n            }\n\n            m_stateBlock.Apply();\n\n            Current = this;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Toolkit/Graphics/GraphicsAdapter.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\n\nusing SharpDX.Direct3D;\nusing SharpDX.Direct3D9;\n\nnamespace SharpDX.Toolkit.Graphics\n{\n    /// <summary>\n    /// Provides methods to retrieve and manipulate graphics adapters. This is the equivalent to <see cref=\"Adapter1\"/>.\n    /// </summary>\n    /// <msdn-id>ff471329</msdn-id>\t\n    /// <unmanaged>IDXGIAdapter1</unmanaged>\t\n    /// <unmanaged-short>IDXGIAdapter1</unmanaged-short>\t\n    public class GraphicsAdapter : Component\n    {\n        private static DisposeCollector staticCollector;\n        private readonly int adapterOrdinal;\n        public int AdapterOrdinal { get { return adapterOrdinal; } }\n\n        public static SharpDX.Direct3D9.Direct3D D3D;\n\n        /// <summary>\n        /// Default PixelFormat used.\n        /// </summary>\n        public SharpDX.Direct3D9.Format DefaultFormat = SharpDX.Direct3D9.Format.A8R8G8B8;\n\n\n        AdapterDetails m_adapterDetails;\n        public AdapterDetails AdapterDetails { get { return m_adapterDetails; } }\n\n        /// <summary>\n        /// Initializes static members of the <see cref=\"GraphicsAdapter\" /> class.\n        /// </summary>\n        static GraphicsAdapter()\n        {\n#if DIRECTX11_1\n            using (var factory = new Factory1())\n                Initialize(factory.QueryInterface<Factory2>());\n#else\n            Initialize();\n#endif\n        }\n\n        /// <summary>\n        /// Initializes all adapters with the specified factory.\n        /// </summary>\n        /// <param name=\"factory1\">The factory1.</param>\n        internal static void Initialize()\n        {\n            if (staticCollector != null)\n            {\n                staticCollector.Dispose();\n            }\n            else\n                staticCollector = new DisposeCollector();\n\n            if (D3D != null)\n            {\n                D3D.Dispose();\n                D3D = null;\n            }\n\n            D3D = new Direct3D9.Direct3D();\n\n            var adapters = new List<GraphicsAdapter>();\n            for (int i = 0; i < D3D.AdapterCount; i++)\n            {\n                var adapter = new GraphicsAdapter(i);\n                staticCollector.Collect(adapter);\n                adapters.Add(adapter);\n            }\n\n            Default = adapters[0];\n            Adapters = adapters.ToArray();\n        }\n\n        /// <summary>\n        /// Initializes a new instance of the <see cref=\"GraphicsAdapter\" /> class.\n        /// </summary>\n        /// <param name=\"adapterOrdinal\">The adapter ordinal.</param>\n        private GraphicsAdapter(int adapterOrdinal)\n        {\n            this.adapterOrdinal = adapterOrdinal;\n\n            SupportedDisplayModes = GetSupportedDisplayModes();\n                               \n            CurrentDisplayMode = D3D.GetAdapterDisplayMode(adapterOrdinal);\n\n            m_adapterDetails = D3D.GetAdapterIdentifier(adapterOrdinal);\n            this.Name = m_adapterDetails.Description + \" (\" + m_adapterDetails.DeviceName.Replace(\"\\\\\",\"\").Replace(\".\",\"\") + \")\";\n        }\n\n        /// <summary>\n        /// Return the description of this adapter\n        /// </summary>\n        /// <returns></returns>\n        public override string ToString()\n        {\n            return base.ToString();\n        }\n\n        /// <summary>\n        /// Tests to see if the adapter supports the requested profile.\n        /// </summary>\n        /// <param name=\"featureLevel\">The graphics profile.</param>\n        /// <returns>true if the profile is supported</returns>\n        public bool IsProfileSupported(FeatureLevel featureLevel)\n        {\n            return featureLevel == FeatureLevel.Level_9_3;\n        }\n\n        /// <summary>\n        /// Gets the current display mode.\n        /// </summary>\n        /// <value>The current display mode.</value>\n        public DisplayMode CurrentDisplayMode { get; private set; }\n\n        /// <summary>\n        /// Collection of available adapters on the system.\n        /// </summary>\n        public static GraphicsAdapter[] Adapters { get; private set;}\n\n        /// <summary>\n        /// Gets the default adapter.\n        /// </summary>\n        public static GraphicsAdapter Default { get; private set; }\n\n        /// <summary>\n        /// Returns a collection of supported display modes for the current adapter.\n        /// </summary>\n        public DisplayMode[] SupportedDisplayModes { get; private set; }\n\n        /// <summary>\n        /// Retrieves bounds of the desktop coordinates.\n        /// </summary>\n        /// <msdn-id>bb173068</msdn-id>\t\n        /// <unmanaged>RECT DesktopCoordinates</unmanaged>\t\n        /// <unmanaged-short>RECT DesktopCoordinates</unmanaged-short>\t\n        public Rectangle DesktopBounds { get { return new Rectangle(0, 0, CurrentDisplayMode.Width, CurrentDisplayMode.Height); } }\n\n        /// <summary>\n        /// Determines if this instance of GraphicsAdapter is the default adapter.\n        /// </summary>\n        public bool IsDefaultAdapter { get { return adapterOrdinal == 0; } }\n\n        /// <summary>\n        /// Retrieves the handle of the monitor associated with the Microsoft Direct3D object.\n        /// </summary>\n        /// <msdn-id>bb173068</msdn-id>\t\n        /// <unmanaged>HMONITOR Monitor</unmanaged>\t\n        /// <unmanaged-short>HMONITOR Monitor</unmanaged-short>\t\n        public IntPtr MonitorHandle { get { return Adapters[adapterOrdinal].MonitorHandle; } }\n\n        /// <summary>\n        /// Disposes of all objects\n        /// </summary>\n        internal static void DisposeStatic()\n        {\n            ((IDisposable)staticCollector).Dispose();\n\n            if (D3D != null)\n            {\n                D3D.Dispose();\n                D3D = null;\n            }\n        }\n\n        /// <summary>\n        /// Returns a collection of supported display modes for a particular Format.\n        /// </summary>\n        /// <returns>a read-only collection of display modes</returns>\n        private DisplayMode[] GetSupportedDisplayModes()\n        {\n            var modeAvailable = new List<DisplayMode>();\n            var modeMap = new Dictionary<string, DisplayMode>();\n\n            try\n            {\n                Direct3D9.Format format = Format.X8R8G8B8;\n                \n                int modeCount = format == Format.Unknown ? 0 : D3D.GetAdapterModeCount(adapterOrdinal, format);\n                for (int modeIndex = 0; modeIndex < modeCount; modeIndex++)\n                {\n                    DisplayMode mode = D3D.EnumAdapterModes(adapterOrdinal, (Direct3D9.Format)format, modeIndex);\n\n                    string key = format + \";\" + mode.Width + \";\" + mode.Height + \";\" + mode.RefreshRate;\n\n                    DisplayMode oldMode;\n                    if (!modeMap.TryGetValue(key, out oldMode))\n                    {\n                        var displayMode = new DisplayMode()\n                        {\n                            Format = mode.Format,\n                            Width = mode.Width,\n                            Height = mode.Height,\n                            RefreshRate = mode.RefreshRate\n                        };\n\n                        modeMap.Add(key, displayMode);\n                        modeAvailable.Add(displayMode);\n                    }\n                }                \n            }\n            catch (SharpDXException dxgiException)\n            {\n                if (dxgiException.ResultCode != ResultCode.NotAvailable)\n                {\n                    throw;\n                }\n            }\n            return modeAvailable.ToArray();\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Toolkit/Graphics/GraphicsResource.cs",
    "content": "using System;\nusing System.Runtime.InteropServices;\n\nusing SharpDX.Direct3D9;\n\nnamespace SharpDX.Toolkit.Graphics\n{\n    /// <summary>\n    /// Base class for all <see cref=\"GraphicsResource\"/>.\n    /// </summary>\n    public abstract class GraphicsResource : Component\n    {\n        /// <summary>\n        /// GraphicsDevice used to create this instance.\n        /// </summary>\n        public readonly Device GraphicsDevice;\n\n        protected GraphicsResource(Device graphicsDevice)\n        {\n            if (graphicsDevice == null)\n                throw new ArgumentNullException(\"graphicsDevice\");\n                 \n            GraphicsDevice = graphicsDevice;\n        }\n\n        protected GraphicsResource(Device graphicsDevice, string name) : base(name)\n        {\n            if (graphicsDevice == null)\n                throw new ArgumentNullException(\"graphicsDevice\");\n\n            GraphicsDevice = graphicsDevice;\n        }\n\n        protected override void Dispose(bool disposeManagedResources)\n        {\n            base.Dispose(disposeManagedResources);\n        }\n\n        /// <summary>\n        /// Called when name changed for this component.\n        /// </summary>\n        protected override void OnNameChanged()\n        {\n            base.OnNameChanged();\n        }\n\n        protected static void UnPin(GCHandle[] handles)\n        {\n            if (handles != null)\n            {\n                for (int i = 0; i < handles.Length; i++)\n                {\n                    if (handles[i].IsAllocated)\n                        handles[i].Free();\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Toolkit/Graphics/RasterizerState.cs",
    "content": "﻿using SharpDX.Direct3D9;\nusing System.Collections.Generic;\nusing System;\n\nnamespace SharpDX.Toolkit.Graphics\n{\n    // Summary:\n    //     Contains rasterizer state, which determines how to convert vector data (shapes)\n    //     into raster data (pixels).\n    public class RasterizerState : IDisposable\n    {\n        public static RasterizerState Current { get; private set; }\n\n        // Summary:\n        //     A built-in state object with settings for culling primitives with clockwise\n        //     winding order.\n        public static readonly RasterizerState CullClockwise;\n        //\n        // Summary:\n        //     A built-in state object with settings for culling primitives with counter-clockwise\n        //     winding order.\n        public static readonly RasterizerState CullCounterClockwise;\n        //\n        // Summary:\n        //     A built-in state object with settings for not culling any primitives.\n        public static readonly RasterizerState CullNone;\n\n        static Device m_device;\n        static List<RasterizerState> m_instances = new List<RasterizerState>(16);\n        StateBlock m_stateBlock;\n\n        public static void LoadContent(Device device)\n        {\n            System.Diagnostics.Debug.Assert(m_device == null);\n            m_device = device;\n        }\n\n        public static void UnloadContent()\n        {\n            m_device = null;\n\n            foreach (var instance in m_instances)\n            {\n                instance.Dispose();\n            }\n\n            m_instances.Clear();\n        }\n\n        public void Dispose()\n        {\n            m_stateBlock.Dispose();\n            m_stateBlock = null;\n        }\n\n\n        static RasterizerState()\n        {\n            CullClockwise = new RasterizerState()\n            {\n                CullMode = Cull.Clockwise\n            };\n            CullCounterClockwise = new RasterizerState()\n            {\n                CullMode = Cull.Counterclockwise\n            };\n            CullNone = new RasterizerState()\n            {\n                CullMode = Cull.None\n            };\n        }\n\n        // Summary:\n        //     Initializes a new instance of the rasterizer class.\n        public RasterizerState()\n        {\n            ScissorTestEnable = false;\n            CullMode = Cull.None;\n            FillMode = Direct3D9.FillMode.Solid;\n            MultiSampleAntiAlias = false;\n            DepthBias = 0;\n            SlopeScaleDepthBias = 0;\n        }\n\n        // Summary:\n        //     Specifies the conditions for culling or removing triangles. The default value\n        //     is CullMode.CounterClockwise.\n        public Cull CullMode { get; set; }\n        //\n        // Summary:\n        //     Sets or retrieves the depth bias for polygons, which is the amount of bias\n        //     to apply to the depth of a primitive to alleviate depth testing problems\n        //     for primitives of similar depth. The default value is 0.\n        public float DepthBias { get; set; }\n        //\n        // Summary:\n        //     The fill mode, which defines how a triangle is filled during rendering. The\n        //     default is FillMode.Solid.\n        public FillMode FillMode { get; set; }\n        //\n        // Summary:\n        //     Enables or disables multisample antialiasing. The default is true.\n        public bool MultiSampleAntiAlias { get; set; }\n        //\n        // Summary:\n        //     Enables or disables scissor testing. The default is false.\n        public bool ScissorTestEnable { get; set; }\n        //\n        // Summary:\n        //     Gets or sets a bias value that takes into account the slope of a polygon.\n        //     This bias value is applied to coplanar primitives to reduce aliasing and\n        //     other rendering artifacts caused by z-fighting. The default is 0.\n        public float SlopeScaleDepthBias { get; set; }\n\n        public void Apply()\n        {\n            if (m_stateBlock == null)\n            {\n                m_device.BeginStateBlock();\n                m_device.SetRenderState(RenderState.CullMode, CullMode);\n                m_device.SetRenderState(RenderState.DepthBias, DepthBias);\n                m_device.SetRenderState(RenderState.FillMode, FillMode);\n                m_device.SetRenderState(RenderState.MultisampleAntialias, MultiSampleAntiAlias);\n                m_device.SetRenderState(RenderState.ScissorTestEnable, ScissorTestEnable);\n                m_device.SetRenderState(RenderState.SlopeScaleDepthBias, SlopeScaleDepthBias);\n                m_stateBlock = m_device.EndStateBlock();\n                m_instances.Add(this);\n            }\n\n            m_stateBlock.Apply();\n\n            Current = this;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Toolkit/Graphics/SamplerState.cs",
    "content": "﻿using SharpDX.Direct3D9;\nusing System.Collections.Generic;\nusing System;\n\nnamespace SharpDX.Toolkit.Graphics\n{\n    public class SamplerState : IDisposable\n    {\n        // Summary:\n        //     Contains default state for anisotropic filtering and texture coordinate clamping.\n        public static readonly SamplerState AnisotropicClamp;\n        //\n        // Summary:\n        //     Contains default state for anisotropic filtering and texture coordinate wrapping.\n        public static readonly SamplerState AnisotropicWrap;\n        //\n        // Summary:\n        //     Contains default state for linear filtering and texture coordinate clamping.\n        public static readonly SamplerState LinearClamp;\n        //\n        // Summary:\n        //     Contains default state for linear filtering and texture coordinate wrapping.\n        public static readonly SamplerState LinearWrap;\n        //\n        // Summary:\n        //     Contains default state for point filtering and texture coordinate clamping.\n        public static readonly SamplerState PointClamp;\n        //\n        // Summary:\n        //     Contains default state for point filtering and texture coordinate wrapping.\n        public static readonly SamplerState PointWrap;\n\n        static Device m_device;\n        static List<SamplerState> m_instances = new List<SamplerState>(16);\n        StateBlock m_stateBlock;\n\n        public static void LoadContent(Device device)\n        {\n            System.Diagnostics.Debug.Assert(m_device == null);\n            m_device = device;\n        }\n\n        public static void UnloadContent()\n        {\n            m_device = null;\n\n            foreach (var instance in m_instances)\n            {\n                instance.Dispose();\n            }\n\n            m_instances.Clear();\n        }\n\n        public void Dispose()\n        {\n            m_stateBlock.Dispose();\n            m_stateBlock = null;\n        }\n\n        static SamplerState()\n        {\n            AnisotropicClamp = new SamplerState()\n            {\n                Filter = TextureFilter.Anisotropic,\n                AddressU = TextureAddress.Clamp,\n                AddressV = TextureAddress.Clamp,\n                AddressW = TextureAddress.Clamp,\n            };\n\n            AnisotropicWrap = new SamplerState()\n            {\n                Filter = TextureFilter.Anisotropic,\n                AddressU = TextureAddress.Wrap,\n                AddressV = TextureAddress.Wrap,\n                AddressW = TextureAddress.Wrap,\n            };\n\n            LinearClamp = new SamplerState()\n            {\n                Filter = TextureFilter.Linear,\n                AddressU = TextureAddress.Clamp,\n                AddressV = TextureAddress.Clamp,\n                AddressW = TextureAddress.Clamp,\n            };\n\n            LinearWrap = new SamplerState()\n            {\n                Filter = TextureFilter.Linear,\n                AddressU = TextureAddress.Wrap,\n                AddressV = TextureAddress.Wrap,\n                AddressW = TextureAddress.Wrap,\n            };\n\n            PointClamp = new SamplerState()\n            {\n                Filter = TextureFilter.Linear,\n                AddressU = TextureAddress.Clamp,\n                AddressV = TextureAddress.Clamp,\n                AddressW = TextureAddress.Clamp,\n            };\n\n            PointWrap = new SamplerState()\n            {\n                Filter = TextureFilter.Linear,\n                AddressU = TextureAddress.Wrap,\n                AddressV = TextureAddress.Wrap,\n                AddressW = TextureAddress.Wrap,\n            };\n        }\n\n        // Summary:\n        //     Initializes a new instance of the sampler state class.\n        public SamplerState()\n        {\n            MaxAnisotropy = 1;\n            AddressU = TextureAddress.Wrap;\n            AddressV = TextureAddress.Wrap;\n            AddressW = TextureAddress.Wrap;\n            Filter = TextureFilter.None;\n            MaxMipLevel = 0;\n            MipMapLevelOfDetailBias = 0;\n        }\n\n        // Summary:\n        //     Gets or sets the texture-address mode for the u-coordinate.\n        public TextureAddress AddressU { get; set; }\n        //\n        // Summary:\n        //     Gets or sets the texture-address mode for the v-coordinate.\n        public TextureAddress AddressV { get; set; }\n        //\n        // Summary:\n        //     Gets or sets the texture-address mode for the w-coordinate.\n        public TextureAddress AddressW { get; set; }\n        //\n        // Summary:\n        //     Gets or sets the type of filtering during sampling.\n        public TextureFilter Filter { get; set; }\n        //\n        // Summary:\n        //     Gets or sets the maximum anisotropy. The default value is 1.\n        public int MaxAnisotropy { get; set; }\n        //\n        // Summary:\n        //     Gets or sets the level of detail (LOD) index of the largest map to use.\n        public int MaxMipLevel { get; set; }\n        //\n        // Summary:\n        //     Gets or sets the mipmap LOD bias. The default value is 0.\n        public float MipMapLevelOfDetailBias { get; set; }\n\n        public void Apply()\n        {\n            if (m_stateBlock == null)\n            {\n                m_device.BeginStateBlock();\n                m_device.SetSamplerState(0, Direct3D9.SamplerState.AddressU, AddressU);\n                m_device.SetSamplerState(0, Direct3D9.SamplerState.AddressV, AddressV);\n                m_device.SetSamplerState(0, Direct3D9.SamplerState.AddressW, AddressW);\n\n                m_device.SetSamplerState(0, Direct3D9.SamplerState.MagFilter, Filter);\n                m_device.SetSamplerState(0, Direct3D9.SamplerState.MinFilter, Filter);\n                m_device.SetSamplerState(0, Direct3D9.SamplerState.MipFilter, Filter);\n\n                m_device.SetSamplerState(0, Direct3D9.SamplerState.MaxAnisotropy, MaxAnisotropy);\n                m_device.SetSamplerState(0, Direct3D9.SamplerState.MaxMipLevel, MaxMipLevel);\n                m_device.SetSamplerState(0, Direct3D9.SamplerState.MipMapLodBias, MipMapLevelOfDetailBias);\n                m_stateBlock = m_device.EndStateBlock();\n                m_instances.Add(this);\n            }\n\n            m_stateBlock.Apply();\n        }\n\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Toolkit/Graphics/SpriteBatch.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Runtime.InteropServices;\nusing SharpDX.Direct3D9;\nusing MinerWars.AppCode.Game.Utils.VertexFormats;\n\nnamespace SharpDX.Toolkit.Graphics\n{\n    /// <summary>\n    /// Renders a group of sprites.\n    /// </summary>\n    public class SpriteBatch //: GraphicsResource \n    {\n        private const int MaxBatchSize = 2048;\n        private const int MinBatchSize = 128;\n        private const int InitialQueueSize = 64;\n        private const int VerticesPerSprite = 4;\n        private const int IndicesPerSprite = 6;\n        private const int MaxVertexCount = MaxBatchSize * VerticesPerSprite;\n        private const int MaxIndexCount = MaxBatchSize * IndicesPerSprite;\n\n        private static readonly Vector2[] CornerOffsets = { Vector2.Zero, Vector2.UnitX, Vector2.UnitY, Vector2.One };\n        private static readonly short[] indices;\n        private static Vector2 vector2Zero = Vector2.Zero;\n        private static DrawingRectangle? nullRectangle;\n        \n        private readonly BackToFrontComparer backToFrontComparer = new BackToFrontComparer();\n        private readonly EffectHandle effectMatrixTransform;\n        private readonly EffectHandle effectTexture;\n        private readonly EffectHandle effectCubeTexture;\n        private readonly FrontToBackComparer frontToBackComparer = new FrontToBackComparer();\n        private IndexBuffer indexBuffer; //short\n        private Effect spriteEffect;\n        private readonly EffectHandle spriteTechnique;\n        private readonly EffectHandle spriteTechniqueCube0;\n        private readonly EffectHandle spriteTechniqueCube1;\n        private readonly EffectHandle spriteTechniqueCube2;\n        private readonly EffectHandle spriteTechniqueCube3;\n        private readonly EffectHandle spriteTechniqueCube4;\n        private readonly EffectHandle spriteTechniqueCube5;\n        private readonly TextureComparer textureComparer = new TextureComparer();\n        private ResourceContext VBResourceContext;\n        private readonly Dictionary<Int64, TextureInfo> textureInfos = new Dictionary<Int64, TextureInfo>(128);\n\n        private BlendState blendState;\n        private SamplerState samplerState;\n        private RasterizerState rasterizerState;\n        private DepthStencilState depthStencilState;\n \n        private Effect customEffect;\n        private EffectHandle customEffectMatrixTransform;\n        private EffectHandle customEffectSampler;\n        private EffectHandle customEffectTexture;\n\n        private bool isBeginCalled;\n        \n        private int[] sortIndices;\n        private SpriteInfo[] sortedSprites;\n        private SpriteInfo[] spriteQueue;\n        private int spriteQueueCount;\n        private SpriteSortMode spriteSortMode;\n        private TextureInfo[] spriteTextures;\n\n        private Matrix transformMatrix;\n\n        private Device GraphicsDevice;\n\n        static SpriteBatch()\n        {\n            indices = new short[MaxIndexCount];\n            int k = 0;\n            for (int i = 0; i < MaxIndexCount; k += VerticesPerSprite)\n            {\n                indices[i++] = (short)(k + 0);\n                indices[i++] = (short)(k + 1);\n                indices[i++] = (short)(k + 2);\n                indices[i++] = (short)(k + 1);\n                indices[i++] = (short)(k + 3);\n                indices[i++] = (short)(k + 2);\n            }            \n        }\n\n        /// <summary>\n        /// Initializes a new instance of the <see cref=\"SpriteBatch\" /> class.\n        /// </summary>\n        /// <param name=\"graphicsDevice\">The graphics device.</param>\n        public SpriteBatch(Device graphicsDevice, string debugName) //: base(graphicsDevice, debugName)\n        {\n            //graphicsDevice.DefaultEffectPool.RegisterBytecode(effectBytecode);\n\n            GraphicsDevice = graphicsDevice;\n\n            spriteQueue = new SpriteInfo[MaxBatchSize];\n            spriteTextures = new TextureInfo[MaxBatchSize];\n\n            string curdir = System.IO.Directory.GetCurrentDirectory();\n            System.IO.Directory.SetCurrentDirectory(\"Content\\\\Effects2\\\\Toolkit\");\n            spriteEffect = Effect.FromFile(graphicsDevice, \"SpriteEffect.fx\", ShaderFlags.None);\n            System.IO.Directory.SetCurrentDirectory(curdir);\n            //spriteEffect.Technique = spriteEffect.GetTechnique(0];\n            EffectHandle technique = spriteEffect.GetTechnique(0);\n\n            effectMatrixTransform = spriteEffect.GetParameter(null, \"MatrixTransform\");\n            effectTexture = spriteEffect.GetParameter(null, \"Texture\");\n            effectCubeTexture = spriteEffect.GetParameter(null, \"SpriteTextureCube\");\n\n            spriteTechnique = spriteEffect.GetTechnique(\"SpriteBatch\");\n            spriteTechniqueCube0 = spriteEffect.GetTechnique(\"SpriteBatchCube0\");\n            spriteTechniqueCube1 = spriteEffect.GetTechnique(\"SpriteBatchCube1\");\n            spriteTechniqueCube2 = spriteEffect.GetTechnique(\"SpriteBatchCube2\");\n            spriteTechniqueCube3 = spriteEffect.GetTechnique(\"SpriteBatchCube3\");\n            spriteTechniqueCube4 = spriteEffect.GetTechnique(\"SpriteBatchCube4\");\n            spriteTechniqueCube5 = spriteEffect.GetTechnique(\"SpriteBatchCube5\");\n\n            // Creates the vertex buffer (shared by within a device context).\n            //resourceContext = GraphicsDevice.GetOrCreateSharedData(SharedDataType.PerContext, \"SpriteBatch.VertexBuffer\", () => new ResourceContext(GraphicsDevice));\n            VBResourceContext = new ResourceContext(graphicsDevice, debugName);\n\n            // Creates the index buffer (shared within a Direct3D11 Device)\n            //indexBuffer =  GraphicsDevice.GetOrCreateSharedData(SharedDataType.PerDevice, \"SpriteBatch.IndexBuffer\", () => Buffer.Index.New(GraphicsDevice, indices));\n            indexBuffer = new IndexBuffer(graphicsDevice, indices.Length * 2, Usage.WriteOnly, Pool.Default, true);\n            indexBuffer.DebugName = \"SpriteBatchIB(\" + debugName + \")\";\n            indexBuffer.Lock(0, 0, LockFlags.None).WriteRange(indices);\n            indexBuffer.Unlock();\n        }\n\n        /// <summary>\n        /// Begins a sprite batch operation using deferred sort and default state objects (BlendState.AlphaBlend, SamplerState.LinearClamp, DepthStencilState.None, RasterizerState.CullCounterClockwise).\n        /// </summary>\n        public void Begin(SpriteSortMode spritemode = SpriteSortMode.Deferred, Effect effect = null)\n        {\n            Begin(spritemode, null, null, null, null, effect, Matrix.Identity);\n        }\n\n        /// <summary>\n        /// Begins a sprite batch rendering using the specified sorting mode and blend state. Other states are sets to default (DepthStencilState.None, SamplerState.LinearClamp, RasterizerState.CullCounterClockwise). If you pass a null blend state, the default is BlendState.AlphaBlend.\n        /// </summary>\n        /// <param name=\"sortMode\">Sprite drawing order.</param>\n        /// <param name=\"blendState\">Blending options.</param>\n        public void Begin(SpriteSortMode sortMode, BlendState blendState)\n        {\n            Begin(sortMode, blendState, null, null, null, null, Matrix.Identity);\n        }\n\n        /// <summary>\n        /// Begins a sprite batch rendering using the specified sorting mode and blend state, sampler, depth stencil and rasterizer state objects. Passing null for any of the state objects selects the default default state objects (BlendState.AlphaBlend, SamplerState.LinearClamp, DepthStencilState.None, RasterizerState.CullCounterClockwise).\n        /// </summary>\n        /// <param name=\"sortMode\">Sprite drawing order.</param>\n        /// <param name=\"blendState\">Blending options.</param>\n        /// <param name=\"samplerState\">Texture sampling options.</param>\n        /// <param name=\"depthStencilState\">Depth and stencil options.</param>\n        /// <param name=\"rasterizerState\">Rasterization options.</param>\n        public void Begin(SpriteSortMode sortMode, BlendState blendState, SamplerState samplerState, DepthStencilState depthStencilState, RasterizerState rasterizerState)\n        {\n            Begin(sortMode, blendState, samplerState, depthStencilState, rasterizerState, null, Matrix.Identity);\n        }\n\n        /// <summary>\n        /// Begins a sprite batch rendering using the specified sorting mode and blend state, sampler, depth stencil and rasterizer state objects, plus a custom effect. Passing null for any of the state objects selects the default default state objects (BlendState.AlphaBlend, DepthStencilState.None, RasterizerState.CullCounterClockwise, SamplerState.LinearClamp). Passing a null effect selects the default SpriteBatch Class shader.\n        /// </summary>\n        /// <param name=\"sortMode\">Sprite drawing order.</param>\n        /// <param name=\"blendState\">Blending options.</param>\n        /// <param name=\"samplerState\">Texture sampling options.</param>\n        /// <param name=\"depthStencilState\">Depth and stencil options.</param>\n        /// <param name=\"rasterizerState\">Rasterization options.</param>\n        /// <param name=\"effect\">Effect state options.</param>\n        public void Begin(SpriteSortMode sortMode, BlendState blendState, SamplerState samplerState, DepthStencilState depthStencilState, RasterizerState rasterizerState, Effect effect)\n        {\n            Begin(sortMode, blendState, samplerState, depthStencilState, rasterizerState, effect, Matrix.Identity);\n        }\n\n        /// <summary>\n        /// Begins a sprite batch rendering using the specified sorting mode and blend state, sampler, depth stencil, rasterizer state objects, plus a custom effect and a 2D transformation matrix. Passing null for any of the state objects selects the default default state objects (BlendState.AlphaBlend, DepthStencilState.None, RasterizerState.CullCounterClockwise, SamplerState.LinearClamp). Passing a null effect selects the default SpriteBatch Class shader. \n        /// </summary>\n        /// <param name=\"sortMode\">Sprite drawing order.</param>\n        /// <param name=\"blendState\">Blending options.</param>\n        /// <param name=\"samplerState\">Texture sampling options.</param>\n        /// <param name=\"depthStencilState\">Depth and stencil options.</param>\n        /// <param name=\"rasterizerState\">Rasterization options.</param>\n        /// <param name=\"effect\">Effect state options.</param>\n        /// <param name=\"transformMatrix\">Transformation matrix for scale, rotate, translate options.</param>\n        public void Begin(SpriteSortMode sortMode, BlendState blendState, SamplerState samplerState, DepthStencilState depthStencilState, RasterizerState rasterizerState, Effect effect, Matrix transformMatrix)\n        {\n            if (isBeginCalled)\n            {\n                throw new InvalidOperationException(\"End must be called before begin\");\n            }\n\n            this.blendState = blendState;\n            this.samplerState = samplerState;\n            this.depthStencilState = depthStencilState;\n            this.rasterizerState = rasterizerState;\n\n            this.spriteSortMode = sortMode;\n            this.customEffect = effect;\n            this.transformMatrix = transformMatrix;\n\n            // If custom effect is not null, get all its potential default parameters\n            if (customEffect != null)\n            {\n                customEffectMatrixTransform = customEffect.GetParameter(null, \"MatrixTransform\");\n                customEffectTexture = customEffect.GetParameter(null, \"Texture\");\n                customEffectSampler = customEffect.GetParameter(null, \"TextureSampler\");\n            }\n\n            // Immediate mode, then prepare for rendering here instead of End()\n            if (sortMode == SpriteSortMode.Immediate)\n            {\n                if (VBResourceContext.IsInImmediateMode)\n                {\n                    throw new InvalidOperationException(\"Only one SpriteBatch at a time can use SpriteSortMode.Immediate\");\n                }\n\n                PrepareForRendering();\n\n                VBResourceContext.IsInImmediateMode = true;\n            }\n\n            // Sets to true isBeginCalled\n            isBeginCalled = true;\n        }\n\n        /// <summary>\n        /// Adds a sprite to a batch of sprites for rendering using the specified texture, destination rectangle, and color. \n        /// </summary>\n        /// <param name=\"texture\">A texture.</param>\n        /// <param name=\"destinationRectangle\">A rectangle that specifies (in screen coordinates) the destination for drawing the sprite.</param>\n        /// <param name=\"color\">The color to tint a sprite. Use Color.White for full color with no tinting.</param>\n        /// <remarks>\n        /// Before making any calls to Draw, you must call Begin. Once all calls to Draw are complete, call End. \n        /// </remarks>\n        public void Draw(Texture texture, DrawingRectangle destinationRectangle, Color color)\n        {\n            var destination = new DrawingRectangleF(destinationRectangle.X, destinationRectangle.Y, destinationRectangle.Width, destinationRectangle.Height);\n            DrawSprite(texture, null, ref destination, false, ref nullRectangle, color, 0f, ref vector2Zero, SpriteEffects.None, 0f);\n        }\n\n        public void Draw(CubeTexture texture, CubeMapFace face, DrawingRectangle destinationRectangle, Color color)\n        {\n            var destination = new DrawingRectangleF(destinationRectangle.X, destinationRectangle.Y, destinationRectangle.Width, destinationRectangle.Height);\n            DrawSprite(texture, face, ref destination, false, ref nullRectangle, color, 0f, ref vector2Zero, SpriteEffects.None, 0f);\n        }\n\n        \n        /// <summary>\n        /// Adds a sprite to a batch of sprites for rendering using the specified texture, position and color. \n        /// </summary>\n        /// <param name=\"texture\">A texture.</param>\n        /// <param name=\"position\">The location (in screen coordinates) to draw the sprite.</param>\n        /// <param name=\"color\">The color to tint a sprite. Use Color.White for full color with no tinting.</param>\n        public void Draw(Texture texture, Vector2 position, Color color)\n        {\n            var destination = new DrawingRectangleF(position.X, position.Y, 1f, 1f);\n            DrawSprite(texture, null, ref destination, true, ref nullRectangle, color, 0f, ref vector2Zero, SpriteEffects.None, 0f);\n        }\n\n        /// <summary>\n        /// Adds a sprite to a batch of sprites for rendering using the specified texture, destination rectangle, source rectangle, color, rotation, origin, effects and layer. \n        /// </summary>\n        /// <param name=\"texture\">A texture.</param>\n        /// <param name=\"destinationRectangle\">A rectangle that specifies (in screen coordinates) the destination for drawing the sprite. If this rectangle is not the same size as the source rectangle, the sprite will be scaled to fit.</param>\n        /// <param name=\"sourceRectangle\">A rectangle that specifies (in texels) the source texels from a texture. Use null to draw the entire texture. </param>\n        /// <param name=\"color\">The color to tint a sprite. Use Color.White for full color with no tinting.</param>\n        /// <param name=\"rotation\">Specifies the angle (in radians) to rotate the sprite about its center.</param>\n        /// <param name=\"origin\">The sprite origin; the default is (0,0) which represents the upper-left corner.</param>\n        /// <param name=\"effects\">Effects to apply.</param>\n        /// <param name=\"layerDepth\">The depth of a layer. By default, 0 represents the front layer and 1 represents a back layer. Use SpriteSortMode if you want sprites to be sorted during drawing.</param>\n        public void Draw(Texture texture, DrawingRectangle destinationRectangle, DrawingRectangle? sourceRectangle, Color color, float rotation, Vector2 origin, SpriteEffects effects, float layerDepth)\n        {\n            var destination = new DrawingRectangleF(destinationRectangle.X, destinationRectangle.Y, destinationRectangle.Width, destinationRectangle.Height);\n            DrawSprite(texture, null, ref destination, false, ref sourceRectangle, color, rotation, ref origin, effects, layerDepth);\n        }\n\n        /// <summary>\n        /// Adds a sprite to a batch of sprites for rendering using the specified texture, position, source rectangle, and color. \n        /// </summary>\n        /// <param name=\"texture\">A texture.</param>\n        /// <param name=\"position\">The location (in screen coordinates) to draw the sprite.</param>\n        /// <param name=\"sourceRectangle\">A rectangle that specifies (in texels) the source texels from a texture. Use null to draw the entire texture. </param>\n        /// <param name=\"color\">The color to tint a sprite. Use Color.White for full color with no tinting.</param>\n        public void Draw(Texture texture, Vector2 position, DrawingRectangle? sourceRectangle, Color color)\n        {\n            var destination = new DrawingRectangleF(position.X, position.Y, 1f, 1f);\n            DrawSprite(texture, null, ref destination, true, ref sourceRectangle, color, 0f, ref vector2Zero, SpriteEffects.None, 0f);\n        }\n\n        /// <summary>\n        /// Adds a sprite to a batch of sprites for rendering using the specified texture, position, source rectangle, color, rotation, origin, scale, effects, and layer. \n        /// </summary>\n        /// <param name=\"texture\">A texture.</param>\n        /// <param name=\"position\">The location (in screen coordinates) to draw the sprite.</param>\n        /// <param name=\"sourceRectangle\">A rectangle that specifies (in texels) the source texels from a texture. Use null to draw the entire texture. </param>\n        /// <param name=\"color\">The color to tint a sprite. Use Color.White for full color with no tinting.</param>\n        /// <param name=\"rotation\">Specifies the angle (in radians) to rotate the sprite about its center.</param>\n        /// <param name=\"origin\">The sprite origin; the default is (0,0) which represents the upper-left corner.</param>\n        /// <param name=\"scale\">Scale factor.</param>\n        /// <param name=\"effects\">Effects to apply.</param>\n        /// <param name=\"layerDepth\">The depth of a layer. By default, 0 represents the front layer and 1 represents a back layer. Use SpriteSortMode if you want sprites to be sorted during drawing.</param>\n        public void Draw(Texture texture, Vector2 position, DrawingRectangle? sourceRectangle, Color color, float rotation, Vector2 origin, float scale, SpriteEffects effects, float layerDepth)\n        {\n            var destination = new DrawingRectangleF(position.X, position.Y, scale, scale);\n            DrawSprite(texture, null, ref destination, true, ref sourceRectangle, color, rotation, ref origin, effects, layerDepth);\n        }\n\n        /// <summary>\n        /// Adds a sprite to a batch of sprites for rendering using the specified texture, position, source rectangle, color, rotation, origin, scale, effects, and layer. \n        /// </summary>\n        /// <param name=\"texture\">A texture.</param>\n        /// <param name=\"position\">The location (in screen coordinates) to draw the sprite.</param>\n        /// <param name=\"sourceRectangle\">A rectangle that specifies (in texels) the source texels from a texture. Use null to draw the entire texture. </param>\n        /// <param name=\"color\">The color to tint a sprite. Use Color.White for full color with no tinting.</param>\n        /// <param name=\"rotation\">Specifies the angle (in radians) to rotate the sprite about its center.</param>\n        /// <param name=\"origin\">The sprite origin; the default is (0,0) which represents the upper-left corner.</param>\n        /// <param name=\"scale\">Scale factor.</param>\n        /// <param name=\"effects\">Effects to apply.</param>\n        /// <param name=\"layerDepth\">The depth of a layer. By default, 0 represents the front layer and 1 represents a back layer. Use SpriteSortMode if you want sprites to be sorted during drawing.</param>\n        public void Draw(Texture texture, Vector2 position, DrawingRectangle? sourceRectangle, Color color, float rotation, Vector2 origin, Vector2 scale, SpriteEffects effects, float layerDepth)\n        {\n            var destination = new DrawingRectangleF(position.X, position.Y, scale.X, scale.Y);\n            DrawSprite(texture, null, ref destination, true, ref sourceRectangle, color, rotation, ref origin, effects, layerDepth);\n        }\n             \n\n        /// <summary>\n        /// Flushes the sprite batch and restores the device state to how it was before Begin was called. \n        /// </summary>\n        public void End()\n        {\n            if (!isBeginCalled)\n            {\n                throw new InvalidOperationException(\"Begin must be called before End\");\n            }\n\n            if (spriteSortMode == SpriteSortMode.Immediate)\n            {\n                VBResourceContext.IsInImmediateMode = false;\n            }\n            else if (spriteQueueCount > 0)\n            {\n                  // Draw the queued sprites now.\n                if (VBResourceContext.IsInImmediateMode)\n                {\n                    throw new InvalidOperationException(\"Cannot end one SpriteBatch while another is using SpriteSortMode.Immediate\");\n                }\n\n                // If not immediate, then setup and render all sprites\n                PrepareForRendering();\n                FlushBatch();\n            }\n\n            // Clear the custom effect so that it won't be used next Begin/End\n            if (customEffect != null)\n            {\n                customEffectMatrixTransform = null;\n                customEffectTexture = null;\n                customEffectSampler = null;\n                customEffect = null;\n            }\n\n            // Clear stored texture infos\n            textureInfos.Clear();\n\n            // We are with begin pair\n            isBeginCalled = false;\n        }\n\n        private void FlushBatch()\n        {\n            SpriteInfo[] spriteQueueForBatch;\n\n            // If Deferred, then sprites are displayed in the same order they arrived\n            if (spriteSortMode == SpriteSortMode.Deferred)\n            {\n                spriteQueueForBatch = spriteQueue;\n            }\n            else\n            {\n                // Else Sort all sprites according to their sprite order mode.\n                SortSprites();\n                spriteQueueForBatch = sortedSprites;\n            }\n\n            // Iterate on all sprites and group batch per texture.\n            int offset = 0;\n            var previousTexture = default(TextureInfo);\n            for (int i = 0; i < spriteQueueCount; i++)\n            {\n                TextureInfo texture;\n\n                if (spriteSortMode == SpriteSortMode.Deferred)\n                {\n                    texture = spriteTextures[i];\n                }\n                else\n                {\n                    // Copy ordered sprites to the queue to batch\n                    int index = sortIndices[i];\n                    spriteQueueForBatch[i] = spriteQueue[index];\n\n                    // Get the texture indirectly\n                    texture = spriteTextures[index];\n                }\n\n                if (texture.Texture != previousTexture.Texture)\n                {\n                    if (i > offset)\n                    {\n                        DrawBatchPerTexture(ref previousTexture, spriteQueueForBatch, offset, i - offset);\n                    }\n\n                    offset = i;\n                    previousTexture = texture;\n                }\n            }\n\n            // Draw the last batch\n            DrawBatchPerTexture(ref previousTexture, spriteQueueForBatch, offset, spriteQueueCount - offset);\n\n            // Reset the queue.\n            Array.Clear(spriteTextures, 0, spriteQueueCount);\n            spriteQueueCount = 0;\n\n            // When sorting is disabled, we persist mSortedSprites data from one batch to the next, to avoid\n            // uneccessary work in GrowSortedSprites. But we never reuse these when sorting, because re-sorting\n            // previously sorted items gives unstable ordering if some sprites have identical sort keys.\n            if (spriteSortMode != SpriteSortMode.Deferred)\n            {\n                Array.Clear(sortedSprites, 0, sortedSprites.Length);\n            }\n        }\n\n        private void SortSprites()\n        {\n            IComparer<int> comparer;\n\n            switch (spriteSortMode)\n            {\n                case SpriteSortMode.Texture:\n                    textureComparer.SpriteTextures = spriteTextures;\n                    comparer = textureComparer;\n                    break;\n\n                case SpriteSortMode.BackToFront:\n                    backToFrontComparer.SpriteQueue = spriteQueue;\n                    comparer = backToFrontComparer;\n                    break;\n\n                case SpriteSortMode.FrontToBack:\n                    frontToBackComparer.SpriteQueue = spriteQueue;\n                    comparer = frontToBackComparer;\n                    break;\n                default:\n                    throw new NotSupportedException();\n            }\n\n            if ((sortIndices == null) || (sortIndices.Length < spriteQueueCount))\n            {\n                sortIndices = new int[spriteQueueCount];\n                sortedSprites = new SpriteInfo[spriteQueueCount];\n            }\n\n            // Reset all indices to the original order\n            for (int i = 0; i < spriteQueueCount; i++)\n            {\n                sortIndices[i] = i;\n            }\n\n            Array.Sort(sortIndices, 0, spriteQueueCount, comparer);\n        }\n\n        internal unsafe void DrawSprite(BaseTexture texture, CubeMapFace? face, ref DrawingRectangleF destination, bool scaleDestination, ref DrawingRectangle? sourceRectangle, Color color, float rotation, ref Vector2 origin, SpriteEffects effects, float depth)\n        {\n            // Check that texture is not null\n            if (texture == null || texture.NativePointer == IntPtr.Zero)\n            {\n                throw new ArgumentNullException(\"texture\");\n            }\n\n            // Make sure that Begin was called\n            if (!isBeginCalled)\n            {\n                throw new InvalidOperationException(\"Begin must be called before draw\");\n            }\n\n            // Resize the buffer of SpriteInfo\n            if (spriteQueueCount >= spriteQueue.Length)\n            {\n                Array.Resize(ref spriteQueue, spriteQueue.Length*2);\n            }\n\n            // Gets the resource information from the view (width, height).\n            // Cache the result in order to avoid this request if the texture is reused \n            // inside a same Begin/End block.\n            TextureInfo textureInfo;\n            if (!textureInfos.TryGetValue(texture.NativePointer.ToInt64(), out textureInfo))\n            {\n                textureInfo.Texture = texture;\n                textureInfo.Face = face;\n\n                SurfaceDescription description2D;\n                if (face.HasValue)\n                {\n                    Surface cubeSurface = ((CubeTexture)texture).GetCubeMapSurface(face.Value, 0);\n                    description2D = cubeSurface.Description;\n                    cubeSurface.Dispose();\n                }\n                else\n                {\n                    description2D = ((Texture)texture).GetLevelDescription(0);\n                }\n\n                textureInfo.Width = description2D.Width;\n                textureInfo.Height = description2D.Height;\n\n                textureInfos.Add(texture.NativePointer.ToInt64(), textureInfo);\n            }\n\n            // Put values in next SpriteInfo\n            fixed (SpriteInfo* spriteInfo = &(spriteQueue[spriteQueueCount]))\n            {\n                float width;\n                float height;\n\n                // If the source rectangle has a value, then use it.\n                if (sourceRectangle.HasValue)\n                {\n                    DrawingRectangle rectangle = sourceRectangle.Value;\n                    spriteInfo->Source.X = rectangle.X;\n                    spriteInfo->Source.Y = rectangle.Y;\n                    width = rectangle.Width;\n                    height = rectangle.Height;\n                }\n                else\n                {\n                    // Else, use directly the size of the texture\n                    spriteInfo->Source.X = 0.0f;\n                    spriteInfo->Source.Y = 0.0f;\n                    width = textureInfo.Width;\n                    height = textureInfo.Height;\n                }\n\n                // Sets the width and height\n                spriteInfo->Source.Width = width;\n                spriteInfo->Source.Height = height;\n\n                // Scale the destination box\n                if (scaleDestination)\n                {\n                    destination.Width *= width;\n                    destination.Height *= height;\n                }\n\n                // Sets the destination\n                spriteInfo->Destination = destination;\n\n                // Copy all other values.\n                spriteInfo->Origin.X = origin.X;\n                spriteInfo->Origin.Y = origin.Y;\n                spriteInfo->Rotation = rotation;\n                spriteInfo->Depth = depth;\n                spriteInfo->SpriteEffects = effects;\n                spriteInfo->Color = color;\n            }\n\n            // If we are in immediate mode, render the sprite directly\n            if (spriteSortMode == SpriteSortMode.Immediate)\n            {\n                DrawBatchPerTexture(ref textureInfo, spriteQueue, 0, 1);\n            }\n            else\n            {\n                if (spriteTextures.Length < spriteQueue.Length)\n                {\n                    Array.Resize(ref spriteTextures, spriteQueue.Length);\n                }\n                spriteTextures[spriteQueueCount] = textureInfo;\n                spriteQueueCount++;\n            }\n        }\n\n        private void DrawBatchPerTexture(ref TextureInfo texture, SpriteInfo[] sprites, int offset, int count)\n        {\n            if (customEffect != null)\n            {\n                var currentTechnique = customEffect.Technique;\n\n                int passCount = customEffect.GetTechniqueDescription(currentTechnique).Passes;\n                for (int i = 0; i < passCount; i++)\n                {\n                    // Sets the texture on the custom effect if the parameter exist\n                    if (customEffectTexture != null)\n                    {\n                        customEffect.SetTexture(customEffectTexture, texture.Texture);\n                    }\n\n\n                    customEffect.Begin();\n                    // Apply the current pass\n                    customEffect.BeginPass(i);\n\n                    // Draw the batch of sprites\n                    DrawBatchPerTextureAndPass(ref texture, sprites, offset, count);\n\n                    customEffect.EndPass();\n                    customEffect.End();\n                }\n            }\n            else\n            {\n\n                if (texture.Face.HasValue)\n                {\n                    spriteEffect.SetTexture(effectCubeTexture, texture.Texture);\n\n                    switch (texture.Face.Value)\n                    {\n                        case CubeMapFace.PositiveX:\n                            spriteEffect.Technique = spriteTechniqueCube0;\n                            break;\n                        case CubeMapFace.NegativeX:\n                            spriteEffect.Technique = spriteTechniqueCube1;\n                            break;\n                        case CubeMapFace.PositiveY:\n                            spriteEffect.Technique = spriteTechniqueCube2;\n                            break;\n                        case CubeMapFace.NegativeY:\n                            spriteEffect.Technique = spriteTechniqueCube3;\n                            break;\n                        case CubeMapFace.PositiveZ:\n                            spriteEffect.Technique = spriteTechniqueCube4;\n                            break;\n                        case CubeMapFace.NegativeZ:\n                            spriteEffect.Technique = spriteTechniqueCube5;\n                            break;\n                    }\n                }\n                else\n                {\n                    spriteEffect.SetTexture(effectTexture, texture.Texture);\n                    spriteEffect.Technique = spriteTechnique;\n                }\n            }\n\n            spriteEffect.Begin();\n\n            spriteEffect.BeginPass(0);\n\n            DrawBatchPerTextureAndPass(ref texture, sprites, offset, count);\n\n            spriteEffect.EndPass();\n\n            spriteEffect.End();\n        }\n\n        private unsafe void DrawBatchPerTextureAndPass(ref TextureInfo texture, SpriteInfo[] sprites, int offset, int count)\n        {\n            float deltaX = 1f/(texture.Width);\n            float deltaY = 1f/(texture.Height);\n            while (count > 0)\n            {\n                // How many sprites do we want to draw?\n                int batchSize = count;\n\n                // How many sprites does the D3D vertex buffer have room for?\n                int remainingSpace = MaxBatchSize - VBResourceContext.VertexBufferPosition;\n                if (batchSize > remainingSpace)\n                {\n                    if (remainingSpace < MinBatchSize)\n                    {\n                        VBResourceContext.VertexBufferPosition = 0;\n                        batchSize = (count < MaxBatchSize) ? count : MaxBatchSize;\n                    }\n                    else\n                    {\n                        batchSize = remainingSpace;\n                    }\n                }\n\n                // Sets the data directly to the buffer in memory\n                int offsetInBytes = VBResourceContext.VertexBufferPosition * VerticesPerSprite * MyVertexFormatPositionTextureColor.Stride;\n\n                var noOverwrite = VBResourceContext.VertexBufferPosition == 0 ? LockFlags.Discard : LockFlags.NoOverwrite;\n\n                var ptr = VBResourceContext.VertexBuffer.LockToPointer(offsetInBytes, batchSize * VerticesPerSprite * MyVertexFormatPositionTextureColor.Stride, noOverwrite);\n                   \n                var vertexPtr = (MyVertexFormatPositionTextureColor*)ptr;\n                    \n                for (int i = 0; i < batchSize; i++)\n                {\n                    UpdateVertexFromSpriteInfo(ref sprites[offset + i], ref vertexPtr, deltaX, deltaY);\n                } \n\n                VBResourceContext.VertexBuffer.Unlock();\n\n                // Draw from the specified index\n                int startIndex = VBResourceContext.VertexBufferPosition * IndicesPerSprite;\n                int indexCount = batchSize * IndicesPerSprite;\n\n                GraphicsDevice.DrawIndexedPrimitive(PrimitiveType.TriangleList, 0, 0, MaxVertexCount, startIndex, indexCount / 3);\n\n                // Update position, offset and remaining count\n                VBResourceContext.VertexBufferPosition += batchSize;\n                offset += batchSize;\n                count -= batchSize;\n            }\n        }\n\n        private unsafe void UpdateVertexFromSpriteInfo(ref SpriteInfo spriteInfo, ref MyVertexFormatPositionTextureColor* vertex, float deltaX, float deltaY)\n        {\n            var rotation = spriteInfo.Rotation != 0f ? new Vector2((float) Math.Cos(spriteInfo.Rotation), (float) Math.Sin(spriteInfo.Rotation)) : Vector2.UnitX;\n\n            // Origin scale down to the size of the source texture \n            var origin = spriteInfo.Origin;\n            origin.X /= spriteInfo.Source.Width == 0f ? float.Epsilon : spriteInfo.Source.Width;\n            origin.Y /= spriteInfo.Source.Height == 0f ? float.Epsilon : spriteInfo.Source.Height;\n\n            for (int j = 0; j < 4; j++)\n            {\n                // Gets the corner and take into account the Flip mode.\n                var corner = CornerOffsets[j];\n                // Calculate position on destination\n                var position = new Vector2((corner.X - origin.X) * spriteInfo.Destination.Width, (corner.Y - origin.Y) * spriteInfo.Destination.Height);\n\n                // Apply rotation and destination offset\n                vertex->Position.X = spriteInfo.Destination.X + (position.X * rotation.X) - (position.Y * rotation.Y);\n                vertex->Position.Y = spriteInfo.Destination.Y + (position.X * rotation.Y) + (position.Y * rotation.X);\n                vertex->Position.Z = spriteInfo.Depth;\n                vertex->Color = SharpDXHelper.ToXNA(spriteInfo.Color.ToVector4());\n\n                corner = CornerOffsets[j ^ (int)spriteInfo.SpriteEffects];\n                vertex->TexCoord.X = (spriteInfo.Source.X + corner.X * spriteInfo.Source.Width) * deltaX;\n                vertex->TexCoord.Y = (spriteInfo.Source.Y + corner.Y * spriteInfo.Source.Height) * deltaY;\n\n                vertex++;\n            }\n        }\n\n        private void UpdateVertexFromSpriteInfo2(ref SpriteInfo spriteInfo, ref MyVertexFormatPositionTextureColor vertex, float deltaX, float deltaY)\n        {\n            var rotation = spriteInfo.Rotation != 0f ? new Vector2((float)Math.Cos(spriteInfo.Rotation), (float)Math.Sin(spriteInfo.Rotation)) : Vector2.UnitX;\n\n            // Origin scale down to the size of the source texture \n            var origin = spriteInfo.Origin;\n            origin.X /= spriteInfo.Source.Width == 0f ? float.Epsilon : spriteInfo.Source.Width;\n            origin.Y /= spriteInfo.Source.Height == 0f ? float.Epsilon : spriteInfo.Source.Height;\n\n            for (int j = 0; j < 4; j++)\n            {\n                // Gets the corner and take into account the Flip mode.\n                var corner = CornerOffsets[j];\n                // Calculate position on destination\n                var position = new Vector2((corner.X - origin.X) * spriteInfo.Destination.Width, (corner.Y - origin.Y) * spriteInfo.Destination.Height);\n\n                // Apply rotation and destination offset\n                vertex.Position.X = spriteInfo.Destination.X + (position.X * rotation.X) - (position.Y * rotation.Y);\n                vertex.Position.Y = spriteInfo.Destination.Y + (position.X * rotation.Y) + (position.Y * rotation.X);\n                vertex.Position.Z = spriteInfo.Depth;\n                vertex.Color = SharpDXHelper.ToXNA(spriteInfo.Color.ToVector4());\n\n                corner = CornerOffsets[j ^ (int)spriteInfo.SpriteEffects];\n                vertex.TexCoord.X = (spriteInfo.Source.X + corner.X * spriteInfo.Source.Width) * deltaX;\n                vertex.TexCoord.Y = (spriteInfo.Source.Y + corner.Y * spriteInfo.Source.Height) * deltaY;\n            }\n        }\n\n        private void PrepareForRendering()\n        {\n            // Setup states (Blend, DepthStencil, Rasterizer)\n            if (blendState != null)\n                blendState.Apply();\n\n            if (rasterizerState != null)\n                rasterizerState.Apply();\n\n            if (depthStencilState != null)\n                depthStencilState.Apply();\n\n            if (samplerState != null)\n                samplerState.Apply();\n\n            // Build ortho-projection matrix\n            ViewportF viewport = GraphicsDevice.Viewport;\n            float xRatio = (viewport.Width > 0) ? (1f/(viewport.Width)) : 0f;\n            float yRatio = (viewport.Height > 0) ? (-1f/(viewport.Height)) : 0f;\n            var matrix = new Matrix { M11 = xRatio * 2f, M22 = yRatio * 2f, M33 = 1f, M44 = 1f, M41 = -1f, M42 = 1f };\n\n            Matrix finalMatrix;\n            Matrix.Multiply(ref transformMatrix, ref matrix, out finalMatrix);\n\n           \n            // Use LinearClamp for sampler state\n            //var localSamplerState = samplerState ?? GraphicsDevice.SamplerStates.LinearClamp;\n\n            // Setup effect states and parameters: SamplerState and MatrixTransform\n            // Sets the sampler state\n            if (customEffect != null)\n            {\n                if (customEffect.Technique == null)\n                    throw new InvalidOperationException(\"CurrentTechnique is not set on custom effect\");\n\n                //if (customEffectSampler != null)\n                  //  customEffectSampler.SetResource(localSamplerState);\n\n                if (customEffectMatrixTransform != null)\n                    customEffect.SetValue(customEffectMatrixTransform, finalMatrix);\n            }\n            else\n            {\n                //effectSampler.SetResource(localSamplerState);\n                spriteEffect.SetValue(effectMatrixTransform, finalMatrix);\n            }\n\n            // Set VertexInputLayout\n            GraphicsDevice.VertexDeclaration = MyVertexFormatPositionTextureColor.VertexDeclaration;\n\n            // VertexBuffer\n            GraphicsDevice.SetStreamSource(0, VBResourceContext.VertexBuffer, 0, MyVertexFormatPositionTextureColor.Stride);\n\n            // Index buffer\n            GraphicsDevice.Indices = indexBuffer;\n\n            // If this is a deferred D3D context, reset position so the first Map call will use D3D11_MAP_WRITE_DISCARD.\n           /* if (GraphicsDevice.IsDeferred)\n            {\n                VBResourceContext.VertexBufferPosition = 0;\n            } */\n        }\n\n\n        public void Dispose()\n        {\n            indexBuffer.Dispose();\n            indexBuffer = null;\n\n            spriteEffect.Dispose();\n            spriteEffect = null;\n\n            VBResourceContext.Dispose();\n            VBResourceContext = null;\n\n            //base.Dispose(disposeManagedResources);\n        }\n\n        #region Nested type: BackToFrontComparer\n\n        private class BackToFrontComparer : IComparer<int>\n        {\n            public SpriteInfo[] SpriteQueue;\n\n            #region IComparer<int> Members\n\n            public int Compare(int left, int right)\n            {\n                return SpriteQueue[right].Depth.CompareTo(SpriteQueue[left].Depth);\n            }\n\n            #endregion\n        }\n\n        #endregion\n\n        #region Nested type: FrontToBackComparer\n\n        private class FrontToBackComparer : IComparer<int>\n        {\n            public SpriteInfo[] SpriteQueue;\n\n            #region IComparer<int> Members\n\n            public int Compare(int left, int right)\n            {\n                return SpriteQueue[left].Depth.CompareTo(SpriteQueue[right].Depth);\n            }\n\n            #endregion\n        }\n\n        #endregion\n\n        #region Nested type: TextureComparer\n\n        private class TextureComparer : IComparer<int>\n        {\n            public TextureInfo[] SpriteTextures;\n\n            #region IComparer<int> Members\n\n            public int Compare(int left, int right)\n            {\n                return SpriteTextures[left].Texture.NativePointer.ToInt64().CompareTo(SpriteTextures[right].Texture.NativePointer.ToInt64());\n            }\n\n            #endregion\n        }\n\n        #endregion\n\n        #region Nested type: SpriteInfo\n\n        [StructLayout(LayoutKind.Sequential)]\n        private struct SpriteInfo\n        {\n            public DrawingRectangleF Source;\n            public DrawingRectangleF Destination;\n            public Vector2 Origin;\n            public float Rotation;\n            public float Depth;\n            public SpriteEffects SpriteEffects;\n            public Color Color;\n        }\n\n        #endregion\n\n\n        /// <summary>\n        /// Use a ResourceContext per GraphicsDevice (DeviceContext)\n        /// </summary>\n        private class ResourceContext : Component\n        {\n            public readonly VertexBuffer VertexBuffer;\n\n            public int VertexBufferPosition;\n\n            public bool IsInImmediateMode;\n\n            public ResourceContext(Device device, string debugName)\n            {\n                VertexBuffer = new VertexBuffer(device, MyVertexFormatPositionTextureColor.Stride * MaxVertexCount, Usage.Dynamic | Usage.WriteOnly, VertexFormat.None, Pool.Default);\n                VertexBuffer.DebugName = \"SpriteBatchVB(\" + debugName + \")\";\n            }\n\n            protected override void Dispose(bool disposeManagedResources)\n            {\n                VertexBuffer.Dispose();\n\n                base.Dispose(disposeManagedResources);\n            }\n        }\n\n        /// <summary>\n        /// Internal structure used to store texture information.\n        /// </summary>\n        private struct TextureInfo\n        {\n            public BaseTexture Texture;\n            public CubeMapFace? Face;\n\n            public int Width;\n\n            public int Height;\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Toolkit/Graphics/SpriteEffects.cs",
    "content": "\nnamespace SharpDX.Toolkit.Graphics\n{\n    /// <summary>\n    /// Defines sprite mirroring options.\n    /// </summary>\n    /// <remarks>\n    /// Description is taken from original XNA <a href='http://msdn.microsoft.com/en-us/library/MinerWarsMath.graphics.spriteeffects.aspx'>SpriteEffects</a> class.\n    /// </remarks>\n    public enum SpriteEffects\n    {\n        /// <summary>\n        /// No rotations specified.\n        /// </summary>\n        None = 0,\n\n        /// <summary>\n        /// Rotate 180 degrees around the Y axis before rendering.\n        /// </summary>\n        FlipHorizontally = 1,\n\n        /// <summary>\n        /// Rotate 180 degrees around the X axis before rendering.\n        /// </summary>\n        FlipVertically = 2,\n\n        /// <summary>\n        /// Rotate 180 degress around both the X and Y axis before rendering.\n        /// </summary>\n        FlipBoth = FlipHorizontally | FlipVertically,\n    };\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Toolkit/Graphics/SpriteFont.cs",
    "content": "﻿/*\nusing System;\nusing System.Collections.Generic;\nusing System.Collections.ObjectModel;\nusing System.IO;\nusing System.Runtime.InteropServices;\nusing System.Text;\nusing SharpDX.IO;\n\nnamespace SharpDX.Toolkit.Graphics\n{\n    /// <summary>\n    /// Represents a font texture.\n    /// </summary>\n    public sealed class SpriteFont : \n    {\n        private readonly float globalBaseOffsetY;\n        private readonly Dictionary<char, int> characterMap;\n        private readonly Dictionary<int, float> kerningMap;\n        private readonly SpriteFontData.Glyph[] glyphs;\n        private Texture2D[] textures;\n\n        // Lookup table indicates which way to move along each axis per SpriteEffects enum value.\n        private static readonly Vector2[] axisDirectionTable = new[]\n                                                                   {\n                                                                       new Vector2(-1, -1),\n                                                                       new Vector2(1, -1),\n                                                                       new Vector2(-1, 1),\n                                                                       new Vector2(1, 1),\n                                                                   };\n\n        // Lookup table indicates which axes are mirrored for each SpriteEffects enum value.\n        private static readonly Vector2[] axisIsMirroredTable = new[]\n                                                                    {\n                                                                        new Vector2(0, 0),\n                                                                        new Vector2(1, 0),\n                                                                        new Vector2(0, 1),\n                                                                        new Vector2(1, 1),\n                                                                    };\n\n        public static SpriteFont New(GraphicsDevice device, SpriteFontData spriteFontData)\n        {\n            return new SpriteFont(device, spriteFontData);\n        }\n\n\n        /// <summary>\n        /// Loads an <see cref=\"EffectData\"/> from the specified stream.\n        /// </summary>\n        /// <param name=\"device\">The graphics device</param>\n        /// <param name=\"stream\">The stream.</param>\n        /// <param name=\"bitmapDataLoader\">A delegate to load bitmap data that are not stored in the buffer.</param>\n        /// <returns>An <see cref=\"EffectData\"/>. Null if the stream is not a serialized <see cref=\"EffectData\"/>.</returns>\n        /// <remarks>\n        /// </remarks>\n        public static SpriteFont Load(GraphicsDevice device, Stream stream, SpriteFontBitmapDataLoaderDelegate bitmapDataLoader = null)\n        {\n            var spriteFontData = SpriteFontData.Load(stream, bitmapDataLoader);\n            if (spriteFontData == null)\n                return null;\n            return New(device, spriteFontData);\n        }\n\n        /// <summary>\n        /// Loads an <see cref=\"EffectData\"/> from the specified buffer.\n        /// </summary>\n        /// <param name=\"device\">The graphics device</param>\n        /// <param name=\"buffer\">The buffer.</param>\n        /// <param name=\"bitmapDataLoader\">A delegate to load bitmap data that are not stored in the buffer.</param>\n        /// <returns>An <see cref=\"EffectData\"/> </returns>\n        public static SpriteFont Load(GraphicsDevice device, byte[] buffer, SpriteFontBitmapDataLoaderDelegate bitmapDataLoader = null)\n        {\n            return Load(device, new MemoryStream(buffer), bitmapDataLoader);\n        }\n\n        /// <summary>\n        /// Loads an <see cref=\"EffectData\"/> from the specified file.\n        /// </summary>\n        /// <param name=\"device\">The graphics device</param>\n        /// <param name=\"fileName\">The filename.</param>\n        /// <returns>An <see cref=\"EffectData\"/> </returns>\n        public static SpriteFont Load(GraphicsDevice device, string fileName)\n        {\n            var fileDirectory = Path.GetDirectoryName(fileName);\n            using (var stream = new NativeFileStream(fileName, NativeFileMode.Open, NativeFileAccess.Read))\n                return Load(device, stream, bitmapName => Texture2D.Load(device, Path.Combine(fileDirectory, bitmapName)));\n        }\n       \n        internal SpriteFont(GraphicsDevice device, SpriteFontData spriteFontData)\n            : base(device)\n        {\n            // Read the glyph data.\n            globalBaseOffsetY = spriteFontData.BaseOffset;\n            glyphs = spriteFontData.Glyphs;\n            characterMap = new Dictionary<char, int>(glyphs.Length * 2);\n\n            // Prebuild the character map\n            var characterList = new List<char>(glyphs.Length);\n            for (int i = 0; i < glyphs.Length; i++)\n            {\n                var charItem = (char)glyphs[i].Character;\n                characterMap.Add(charItem, i);\n                characterList.Add(charItem);\n            }\n\n            // Prepare kernings if they are available.\n            var kernings = spriteFontData.Kernings;\n            if (kernings != null)\n            {\n                kerningMap = new Dictionary<int, float>(spriteFontData.Kernings.Length);\n                for (int i = 0; i < kernings.Length; i++)\n                {\n                    int key = (kernings[i].First << 16) | kernings[i].Second;\n                    kerningMap.Add(key, kernings[i].Offset);\n                }\n            }\n\n            Characters = new ReadOnlyCollection<char>(characterList);\n\n            // Read font properties.\n            LineSpacing = spriteFontData.LineSpacing;\n\n            DefaultCharacter = (char)spriteFontData.DefaultCharacter;\n\n            // Read the texture data.\n            textures = new Texture2D[spriteFontData.Bitmaps.Length];\n            for(int i = 0; i < textures.Length; i++)\n            {\n                var bitmap = spriteFontData.Bitmaps[i];\n                if (bitmap.Data is SpriteFontData.BitmapData)\n                {\n                    var image = (SpriteFontData.BitmapData) bitmap.Data;\n                    textures[i] = ToDispose(Texture2D.New(device, image.Width, image.Height, image.PixelFormat, image.Data));\n                }\n                else if (bitmap.Data is Texture2D)\n                {\n                    textures[i] = (Texture2D) bitmap.Data;\n                }\n                else\n                {\n                    throw new NotSupportedException(string.Format(\"SpriteFontData.Bitmap of type [{0}] is not supported. Only SpriteFontData.BitmapData or Texture2D\", bitmap == null ? \"null\" : bitmap.GetType().Name));\n                }\n            }\n        }\n\n        internal void InternalDraw(ref StringProxy text, SpriteBatch spriteBatch, Vector2 position, Color color, float rotation, Vector2 origin, ref Vector2 scale, SpriteEffects spriteEffects, float depth)\n        {\n            var baseOffset = origin;\n            //baseOffset.Y += globalBaseOffsetY;\n\n            // If the text is mirrored, offset the start position accordingly.\n            if (spriteEffects != SpriteEffects.None)\n            {\n                baseOffset -= MeasureString(ref text)*axisIsMirroredTable[(int) spriteEffects & 3];\n            }\n\n            var localScale = scale;\n\n\n            // Draw each character in turn.\n            ForEachGlyph(ref text, (ref SpriteFontData.Glyph glyph, float x, float y) =>\n                                       {\n                                           var offset = new Vector2(x, y + glyph.Offset.Y);\n                                           Vector2.Modulate(ref offset, ref axisDirectionTable[(int) spriteEffects & 3], out offset);\n                                           Vector2.Add(ref offset, ref baseOffset, out offset);\n\n\n                                           if (spriteEffects != SpriteEffects.None)\n                                           {\n                                               // For mirrored characters, specify bottom and/or right instead of top left.\n                                               var glyphRect = new Vector2(glyph.Subrect.Right - glyph.Subrect.Left, glyph.Subrect.Top - glyph.Subrect.Bottom);\n                                               Vector2.Modulate(ref glyphRect, ref axisIsMirroredTable[(int) spriteEffects & 3], out offset);\n                                           }\n                                           var destination = new DrawingRectangleF(position.X, position.Y, localScale.X, localScale.Y);\n                                           DrawingRectangle? sourceRectangle = glyph.Subrect;\n                                           spriteBatch.DrawSprite(textures[glyph.BitmapIndex], ref destination, true, ref sourceRectangle, color, rotation, ref offset, spriteEffects, depth);\n                                       });\n        }\n\n        /// <summary>Returns the width and height of a string as a Vector2.</summary>\n        /// <param name=\"text\">The string to measure.</param>\n        public Vector2 MeasureString(string text)\n        {\n            var proxyText = new StringProxy(text);\n            return MeasureString(ref proxyText);\n        }\n\n        /// <summary>Returns the width and height of a string as a Vector2.</summary>\n        /// <param name=\"text\">The string to measure.</param>\n        public Vector2 MeasureString(StringBuilder text)\n        {\n            var proxyText = new StringProxy(text);\n            return MeasureString(ref proxyText);\n        }\n\n        private Vector2 MeasureString(ref StringProxy text)\n        {\n            var result = Vector2.Zero;\n            ForEachGlyph(ref text, (ref SpriteFontData.Glyph glyph, float x, float y) =>\n            {\n                float w = x + (glyph.Subrect.Right - glyph.Subrect.Left);\n                float h = y + Math.Max((glyph.Subrect.Bottom - glyph.Subrect.Top) + glyph.Offset.Y, LineSpacing);\n                if (w > result.X) result.X = w;\n                if (h > result.Y) result.Y = h;\n            });\n\n            return result;\n        }\n\n        /// <summary>Gets a collection of all the characters that are included in the font.</summary>\n        public ReadOnlyCollection<char> Characters { get; private set; }\n\n        /// <summary>Gets or sets the default character for the font.</summary>\n        public char? DefaultCharacter { get; set; }\n\n        /// <summary>Gets or sets the vertical distance (in pixels) between the base lines of two consecutive lines of text. Line spacing includes the blank space between lines as well as the height of the characters.</summary>\n        public float LineSpacing { get; set; }\n\n        /// <summary>Gets or sets the spacing of the font characters.</summary>\n        public float Spacing { get; set; }\n\n        private delegate void GlyphAction(ref SpriteFontData.Glyph glyph, float x, float y);\n\n        private unsafe void ForEachGlyph(ref StringProxy text, GlyphAction action)\n        {\n            float x = 0;\n            float y = 0;\n            // TODO: Not sure how to handle globalBaseOffsetY from AngelCode BMFont\n\n            fixed (void* pGlyph = glyphs)\n            {\n                var key = 0;\n                for (int i =  0; i < text.Length; i++)\n                {\n                    char character = text[i];\n                    key |= character;\n\n                    switch (character)\n                    {\n                        case '\\r':\n                            // Skip carriage returns.\n                            continue;\n\n                        case '\\n':\n                            // New line.\n                            x = 0;\n                            y += LineSpacing;\n                            break;\n\n                        default:\n                            // Output this character.\n                            int glyphIndex;\n                            if (!characterMap.TryGetValue(character, out glyphIndex))\n                                throw new ArgumentException(string.Format(\"Character '{0}' is not available in the SpriteFont character map\", character), \"text\");\n\n                            var glyph = (SpriteFontData.Glyph*) pGlyph + glyphIndex;\n\n\n                            x += glyph->Offset.X;\n\n                            if (x < 0)\n                                x = 0;\n\n                            // Offset the kerning\n                            float kerningOffset;\n                            if (kerningMap != null && kerningMap.TryGetValue(key, out kerningOffset))\n                                x += kerningOffset;\n\n                            if (!char.IsWhiteSpace(character))\n                            {\n                                action(ref *glyph, x, y);\n                            }\n\n                            x += glyph->XAdvance;\n                            break;\n                    }\n\n                    // Shift the kerning key\n                    key  =  (key << 16);\n                }\n            }\n        }\n\n        [StructLayout(LayoutKind.Sequential)]\n        internal struct StringProxy\n        {\n            private string textString;\n            private StringBuilder textBuilder;\n            public readonly int Length;\n            public StringProxy(string text)\n            {\n                this.textString = text;\n                this.textBuilder = null;\n                this.Length = text.Length;\n            }\n\n            public StringProxy(StringBuilder text)\n            {\n                this.textBuilder = text;\n                this.textString = null;\n                this.Length = text.Length;\n            }\n\n            public char this[int index]\n            {\n                get\n                {\n                    if (this.textString != null)\n                    {\n                        return this.textString[index];\n                    }\n                    return this.textBuilder[index];\n                }\n            }\n        }\n    }\n\n\n}*/"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Toolkit/Graphics/SpriteFontContentReader.cs",
    "content": "﻿using System.IO;\n//using SharpDX.Toolkit.Content;\n\nnamespace SharpDX.Toolkit.Graphics\n{\n    /// <summary>\n    /// Internal class to load a SpriteFont.\n    /// </summary>\n    internal class SpriteFontContentReader// : GraphicsResourceContentReaderBase<SpriteFont>\n    {                         /*\n        protected override SpriteFont ReadContent(IContentManager readerManager, GraphicsDevice device, string assetName, Stream stream)\n        {\n            SpriteFont spriteFont = null;\n            var assetPath = Path.GetDirectoryName(assetName);\n\n            // Load the sprite font data\n            var spriteFontData = SpriteFontData.Load(stream, name => readerManager.Load<Texture2D>(Path.Combine(assetPath ?? string.Empty, name)));\n\n            // If sprite font was fine, then instantiate SpriteFont graphics object.\n            if (spriteFontData != null)\n                spriteFont = SpriteFont.New(device, spriteFontData);\n\n            return spriteFont;\n        }                       */\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Toolkit/Graphics/SpriteSortMode.cs",
    "content": "namespace SharpDX.Toolkit.Graphics\n{\n    /// <summary>\n    /// Defines sprite sort-rendering options. \n    /// </summary>\n    /// <remarks>\n    /// Description is taken from original XNA <a href='http://msdn.microsoft.com/en-us/library/MinerWarsMath.graphics.spritesortmode.aspx'>SpriteBatch</a> class.\n    /// </remarks>\n    public enum SpriteSortMode\n    {\n\n        /// <summary>\n        /// Sprites are not drawn until End is called. \n        /// End will apply graphics device settings and draw all the sprites in one batch, in the same order calls to Draw were received. \n        /// This mode allows Draw calls to two or more instances of SpriteBatch without introducing conflicting graphics device settings. SpriteBatch defaults to Deferred mode.\n        /// </summary>\n        Deferred,\n\n        /// <summary>\n        /// Begin will apply new graphics device settings, and sprites will be drawn within each Draw call. In Immediate mode there can only be one active SpriteBatch instance without introducing conflicting device settings. \n        /// </summary>\n        Immediate,\n\n        /// <summary>\n        /// Same as Deferred mode, except sprites are sorted by texture prior to drawing. This can improve performance when drawing non-overlapping sprites of uniform depth.\n        /// </summary>\n        Texture,\n\n        /// <summary>\n        /// Same as Deferred mode, except sprites are sorted by depth in back-to-front order prior to drawing. This procedure is recommended when drawing transparent sprites of varying depths.\n        /// </summary>\n        BackToFront,\n\n        /// <summary>\n        /// Same as Deferred mode, except sprites are sorted by depth in front-to-back order prior to drawing. This procedure is recommended when drawing opaque sprites of varying depths.\n        /// </summary>\n        FrontToBack,\n    };\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Toolkit/GraphicsDeviceInformation.cs",
    "content": "﻿// Copyright (c) 2010-2012 SharpDX - Alexandre Mutel\n// \n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n// \n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n// \n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nusing System;\n\nusing SharpDX.Direct3D;\nusing SharpDX.Direct3D9;\nusing SharpDX.Toolkit.Graphics;\n\nnamespace SharpDX.Toolkit\n{\n    public class  GraphicsDeviceInformation\n    {\n        #region Fields\n\n        private GraphicsAdapter adapter;\n\n        private FeatureLevel graphicsProfile;\n\n        private PresentParameters presentationParameters;\n\n        #endregion\n\n        #region Constructors and Destructors\n\n        /// <summary>\n        /// Initializes a new instance of the <see cref=\"GraphicsDeviceInformation\" /> class.\n        /// </summary>\n        public GraphicsDeviceInformation()\n        {\n            Adapter = GraphicsAdapter.Default;\n            PresentParameters p = new PresentParameters();\n            p.InitDefaults();\n            PresentationParameters = p;\n        }\n\n        #endregion\n\n        #region Public Properties\n\n        /// <summary>\n        /// Gets or sets the adapter.\n        /// </summary>\n        /// <value>The adapter.</value>\n        /// <exception cref=\"System.ArgumentNullException\">if value is null</exception>\n        public GraphicsAdapter Adapter\n        {\n            get\n            {\n                return adapter;\n            }\n\n            set\n            {\n                adapter = value;\n            }\n        }\n\n        /// <summary>\n        /// Gets or sets the graphics profile.\n        /// </summary>\n        /// <value>The graphics profile.</value>\n        /// <exception cref=\"System.ArgumentNullException\">if value is null</exception>\n        public FeatureLevel GraphicsProfile\n        {\n            get\n            {\n                return graphicsProfile;\n            }\n\n            set\n            {\n                graphicsProfile = value;\n            }\n        }\n\n        /// <summary>\n        /// Gets or sets the presentation parameters.\n        /// </summary>\n        /// <value>The presentation parameters.</value>\n        /// <exception cref=\"System.ArgumentNullException\">if value is null</exception>\n        public PresentParameters PresentationParameters\n        {\n            get\n            {\n                return presentationParameters;\n            }\n\n            set\n            {\n                presentationParameters = value;\n            }\n        }\n\n        /// <summary>\n        /// Gets or sets the creation flags.\n        /// </summary>\n        /// <value>The creation flags.</value>\n        public CreateFlags DeviceCreationFlags { get; set; }\n\n        #endregion\n\n        #region Public Methods and Operators\n\n        /// <summary>Returns a value that indicates whether the current instance is equal to a specified object.</summary>\n        /// <param name=\"obj\">The Object to compare with the current GraphicsDeviceInformation.</param>\n        public override bool Equals(object obj)\n        {\n            var information = obj as GraphicsDeviceInformation;\n            if (information == null)\n            {\n                return false;\n            }\n\n            if (!Equals(information.adapter, adapter))\n            {\n                return false;\n            }\n\n            if (information.graphicsProfile != this.graphicsProfile)\n            {\n                return false;\n            }\n\n            return information.PresentationParameters.BackBufferWidth == this.PresentationParameters.BackBufferWidth \n                && information.PresentationParameters.BackBufferHeight == this.PresentationParameters.BackBufferHeight\n                && information.PresentationParameters.BackBufferFormat == this.PresentationParameters.BackBufferFormat\n                && information.PresentationParameters.AutoDepthStencilFormat == this.PresentationParameters.AutoDepthStencilFormat\n                && information.PresentationParameters.MultiSampleQuality == this.PresentationParameters.MultiSampleQuality\n                && information.PresentationParameters.FullScreenRefreshRateInHz == this.PresentationParameters.FullScreenRefreshRateInHz\n                && information.PresentationParameters.PresentationInterval == this.PresentationParameters.PresentationInterval\n                && information.PresentationParameters.DeviceWindowHandle == this.PresentationParameters.DeviceWindowHandle\n                && information.PresentationParameters.Windowed == this.PresentationParameters.Windowed;\n        }\n\n        /// <summary>Gets the hash code for this object.</summary>\n        public override int GetHashCode()\n        {\n            return graphicsProfile.GetHashCode()\n                   ^ (adapter == null ? 0 : adapter.GetHashCode())\n                   ^ presentationParameters.BackBufferWidth.GetHashCode()\n                   ^ presentationParameters.BackBufferHeight.GetHashCode()\n                   ^ presentationParameters.BackBufferFormat.GetHashCode()\n                   ^ presentationParameters.AutoDepthStencilFormat.GetHashCode()\n                   ^ presentationParameters.MultiSampleQuality.GetHashCode()\n                   ^ presentationParameters.PresentationInterval.GetHashCode()\n                   ^ presentationParameters.FullScreenRefreshRateInHz.GetHashCode()\n                   ^ presentationParameters.DeviceWindowHandle.GetHashCode()\n                   ^ presentationParameters.Windowed.GetHashCode();\n        }\n\n\n        /// <summary>\n        /// Clones this instance.\n        /// </summary>\n        /// <returns>A new copy-instance of this GraphicsDeviceInformation.</returns>\n        public GraphicsDeviceInformation Clone()\n        {\n            return new GraphicsDeviceInformation \n            {\n                Adapter = Adapter, \n                GraphicsProfile = GraphicsProfile, \n                PresentationParameters = this.PresentationParameters\n            };\n        }\n\n        #endregion\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Toolkit/GraphicsDeviceManager.cs",
    "content": "﻿// Copyright (c) 2010-2012 SharpDX - Alexandre Mutel\n// \n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n// \n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n// \n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nusing System;\nusing System.Collections.Generic;\n\nusing SharpDX.Direct3D;\nusing SharpDX.Direct3D9;\nusing SharpDX.Toolkit.Graphics;\n\nnamespace SharpDX.Toolkit\n{\n    /// <summary>\n    /// Manages the <see cref=\"GraphicsDevice\"/> lifecycle.\n    /// </summary>\n    public class GraphicsDeviceManager : Component\n    {\n        #region Fields\n\n        /// <summary>\n        /// Default width for the back buffer.\n        /// </summary>\n        public static readonly int DefaultBackBufferWidth = 800;\n\n        /// <summary>\n        /// Default height for the back buffer.\n        /// </summary>\n        public static readonly int DefaultBackBufferHeight = 480;\n\n        private Game game;\n\n        private bool deviceSettingsChanged;\n\n        private FeatureLevel preferredGraphicsProfile;\n\n        private bool isFullScreen;\n\n        private bool preferMultiSampling;\n\n        private Format preferredBackBufferFormat;\n\n        private int preferredBackBufferHeight;\n\n        private int preferredBackBufferWidth;\n\n        private int preferredVideoAdapter;\n\n        private Format preferredDepthStencilFormat;\n\n        private bool synchronizeWithVerticalRetrace;\n\n        private bool isChangingDevice;\n\n        private int resizedBackBufferWidth;\n\n        private int resizedBackBufferHeight;\n\n        private bool isBackBufferToResize = false;\n\n        private bool beginDrawOk;\n\n        private bool isReallyFullScreen;\n\n        #endregion\n\n        #region Constructors and Destructors\n\n        /// <summary>\n        /// Initializes a new instance of the <see cref=\"GraphicsDeviceManager\" /> class.\n        /// </summary>\n        /// <param name=\"game\">The game.</param>\n        /// <exception cref=\"System.ArgumentNullException\">The game instance cannot be null.</exception>\n        public GraphicsDeviceManager(Game game)\n        {\n            this.game = game;\n            if (this.game == null)\n            {\n                throw new ArgumentNullException(\"game\");\n            }\n\n            if (game.GraphicsManager != null)\n            {\n                game.GraphicsManager.Dispose();\n            }\n\n            game.GraphicsManager = this;\n\n            // Defines all default values\n            SynchronizeWithVerticalRetrace = true;\n            PreferredBackBufferFormat = Format.A8R8G8B8;\n            PreferredDepthStencilFormat = Format.D24S8;\n            preferredBackBufferWidth = DefaultBackBufferWidth;\n            preferredBackBufferHeight = DefaultBackBufferHeight;\n            PreferMultiSampling = false;\n            PreferredGraphicsProfile = new[]\n                {\n#if DIRECTX11_1\n                    FeatureLevel.Level_11_1, \n#endif\n                    FeatureLevel.Level_9_3, \n                    FeatureLevel.Level_9_2, \n                    FeatureLevel.Level_9_1, \n                };\n\n            isFullScreen = game.Window.IsFullScreenMandatory;\n\n            game.Window.ClientSizeChanged += Window_ClientSizeChanged;\n        }\n\n        #endregion\n\n        #region Public Events\n\n        public event EventHandler<EventArgs> DeviceCreated;\n\n        public event EventHandler<EventArgs> DeviceDisposing;\n\n        public event EventHandler<EventArgs> DeviceReset;\n\n        public event EventHandler<EventArgs> DeviceResetting;\n\n        public event EventHandler<PreparingDeviceSettingsEventArgs> PreparingDeviceSettings;\n\n        #endregion\n\n        #region Public Properties\n\n        public Device GraphicsDevice { get; internal set; }\n\n        public GraphicsAdapter GraphicsAdapter { get; internal set; }\n\n        /// <summary>\n        /// Gets or sets the list of graphics profile to select from the best feature to the lower feature. See remarks.\n        /// </summary>\n        /// <value>The graphics profile.</value>\n        /// <remarks>\n        /// By default, the PreferredGraphicsProfile is set to { <see cref=\"FeatureLevel.Level_11_1\"/>, \n        /// <see cref=\"FeatureLevel.Level_11_0\"/>,\n        /// <see cref=\"FeatureLevel.Level_10_1\"/>,\n        /// <see cref=\"FeatureLevel.Level_10_0\"/>,\n        /// <see cref=\"FeatureLevel.Level_9_3\"/>,\n        /// <see cref=\"FeatureLevel.Level_9_2\"/>,\n        /// <see cref=\"FeatureLevel.Level_9_1\"/>}\n        /// </remarks>\n        public FeatureLevel[] PreferredGraphicsProfile { get; set; }\n\n        /// <summary>\n        /// Sets the preferred graphics profile.\n        /// </summary>\n        /// <param name=\"levels\">The levels.</param>\n        /// <seealso cref=\"PreferredGraphicsProfile\"/>\n        public void SetPreferredGraphicsProfile(params FeatureLevel[] levels)\n        {\n            PreferredGraphicsProfile = levels;\n        }\n\n        /// <summary>\n        /// Gets or sets a value indicating whether this instance is full screen.\n        /// </summary>\n        /// <value><c>true</c> if this instance is full screen; otherwise, <c>false</c>.</value>\n        public bool IsFullScreen\n        {\n            get\n            {\n                return isFullScreen;\n            }\n\n            set\n            {\n                if (isFullScreen != value && !game.Window.IsFullScreenMandatory)\n                {\n                    isFullScreen = value;\n                    deviceSettingsChanged = true;\n                }\n            }\n        }\n\n        /// <summary>\n        /// Gets or sets a value indicating whether [prefer multi sampling].\n        /// </summary>\n        /// <value><c>true</c> if [prefer multi sampling]; otherwise, <c>false</c>.</value>\n        public bool PreferMultiSampling\n        {\n            get\n            {\n                return preferMultiSampling;\n            }\n\n            set\n            {\n                if (preferMultiSampling != value)\n                {\n                    preferMultiSampling = value;\n                    deviceSettingsChanged = true;\n                }\n            }\n        }\n\n        /// <summary>\n        /// Gets or sets the device creation flags that will be used to create the <see cref=\"GraphicsDevice\"/>\n        /// </summary>\n        /// <value>The device creation flags.</value>\n        public CreateFlags DeviceCreationFlags { get; set; }\n\n\n        public int PreferredVideoAdapter\n        {\n            get\n            {\n                return preferredVideoAdapter;\n            }\n\n            set\n            {\n                if (preferredVideoAdapter != value)\n                {\n                    preferredVideoAdapter = value;\n                    deviceSettingsChanged = true;\n                }\n            }\n        }\n\n        /// <summary>\n        /// Gets or sets the preferred back buffer format.\n        /// </summary>\n        /// <value>The preferred back buffer format.</value>\n        public Format PreferredBackBufferFormat\n        {\n            get\n            {\n                return preferredBackBufferFormat;\n            }\n\n            set\n            {\n                if (preferredBackBufferFormat != value)\n                {\n                    preferredBackBufferFormat = value;\n                    deviceSettingsChanged = true;\n                }\n            }\n        }\n\n        /// <summary>\n        /// Gets or sets the height of the preferred back buffer.\n        /// </summary>\n        /// <value>The height of the preferred back buffer.</value>\n        public int PreferredBackBufferHeight\n        {\n            get\n            {\n                return preferredBackBufferHeight;\n            }\n\n            set\n            {\n                if (preferredBackBufferHeight != value)\n                {\n                    preferredBackBufferHeight = value;\n                    isBackBufferToResize = false;\n                    deviceSettingsChanged = true;\n                }\n            }\n        }\n\n        /// <summary>\n        /// Gets or sets the width of the preferred back buffer.\n        /// </summary>\n        /// <value>The width of the preferred back buffer.</value>\n        public int PreferredBackBufferWidth\n        {\n            get\n            {\n                return preferredBackBufferWidth;\n            }\n\n            set\n            {\n                if (preferredBackBufferWidth != value)\n                {\n                    preferredBackBufferWidth = value;\n                    isBackBufferToResize = false;\n                    deviceSettingsChanged = true;\n                }\n            }\n        }\n\n        /// <summary>\n        /// Gets or sets the preferred depth stencil format.\n        /// </summary>\n        /// <value>The preferred depth stencil format.</value>\n        public Format PreferredDepthStencilFormat\n        {\n            get\n            {\n                return preferredDepthStencilFormat;\n            }\n\n            set\n            {\n                if (preferredDepthStencilFormat != value)\n                {\n                    preferredDepthStencilFormat = value;\n                    deviceSettingsChanged = true;\n                }\n            }\n        }\n\n       \n\n        /// <summary>\n        /// Gets or sets a value indicating whether [synchronize with vertical retrace].\n        /// </summary>\n        /// <value><c>true</c> if [synchronize with vertical retrace]; otherwise, <c>false</c>.</value>\n        public bool SynchronizeWithVerticalRetrace\n        {\n            get\n            {\n                return synchronizeWithVerticalRetrace;\n            }\n            set\n            {\n                if (synchronizeWithVerticalRetrace != value)\n                {\n                    synchronizeWithVerticalRetrace = value;\n                    deviceSettingsChanged = true;\n                }\n            }\n        }\n\n        #endregion\n\n\n        #region Public Methods and Operators\n\n        /// <summary>\n        /// Applies the changes from this instance and change or create the <see cref=\"GraphicsDevice\"/> according to the new values.\n        /// </summary>\n        public void ApplyChanges()\n        {\n            if (GraphicsDevice == null || deviceSettingsChanged)\n            {\n                ChangeOrCreateDevice(false);\n            }\n        }\n\n        public bool BeginDraw()\n        {\n            if (GraphicsDevice == null)\n            {\n                return false;\n            }\n\n            Result res = GraphicsDevice.TestCooperativeLevel();\n            if (res.Code == ResultCode.DeviceLost.Result.Code)\n            {\n                Utilities.Sleep(TimeSpan.FromMilliseconds(20));\n                return false;\n            }\n\n            if (res.Code == ResultCode.DeviceNotReset.Result.Code)\n            {\n                Utilities.Sleep(TimeSpan.FromMilliseconds(20));\n\n                GraphicsAdapter.Initialize();\n\n                try\n                {\n                    ChangeOrCreateDevice(false);\n                }\n                catch\n                {\n                    try\n                    {\n                        ChangeOrCreateDevice(true);\n                    }\n                    catch \n                    {\n                        return false;\n                    }\n                }\n            }\n\n            /*\n            switch (GraphicsDevice.GraphicsDeviceStatus)\n            {\n                case GraphicsDeviceStatus.Removed:\n                    Utilities.Sleep(TimeSpan.FromMilliseconds(20));\n                    return false;\n                case GraphicsDeviceStatus.Reset:\n                    Utilities.Sleep(TimeSpan.FromMilliseconds(20));\n                    try\n                    {\n                        ChangeOrCreateDevice(false);\n                    }\n                    catch (Exception)\n                    {\n                        return false;\n                    }\n                    catch\n                    {\n                        ChangeOrCreateDevice(true);\n                    }\n\n                    break;\n                case GraphicsDeviceStatus.Normal:\n                    // By default, we setup the render target to the back buffer, and the viewport as well.\n                    if (GraphicsDevice.BackBuffer != null)\n                    {\n                        GraphicsDevice.SetRenderTargets(GraphicsDevice.DepthStencilBuffer, GraphicsDevice.BackBuffer);\n                        GraphicsDevice.SetViewports(0, 0, GraphicsDevice.BackBuffer.Width, GraphicsDevice.BackBuffer.Height);\n                    }\n\n                    break;\n            }       */\n\n            GraphicsDevice.BeginScene();\n\n            beginDrawOk = true;\n            return true;\n        }\n\n        public void CreateDevice()\n        {\n            // Force the creation of the device\n            ChangeOrCreateDevice(true);\n        }\n\n        public void EndDraw()\n        {\n            if (beginDrawOk && GraphicsDevice != null)\n            {\n                try\n                {\n                    GraphicsDevice.EndScene();\n                    GraphicsDevice.Present();\n                } \n                //catch (SharpDXException ex)\n                catch\n                {\n                    // If this is not a DeviceRemoved or DeviceReset, than throw an exception\n                    //if (ex.ResultCode != ResultCode.DeviceRemoved && ex.ResultCode != ResultCode.DeviceNotReset)\n                    {\n                      //  throw;\n                    }\n                }\n            }\n        }\n\n        #endregion\n\n     \n\n        protected override void Dispose(bool disposeManagedResources)\n        {\n            if (disposeManagedResources)\n            {\n                if (game != null)\n                {\n                    game.Window.ClientSizeChanged -= Window_ClientSizeChanged;\n                }\n\n                if (GraphicsDevice != null)\n                { \n                    GraphicsDevice.Dispose();\n                    GraphicsDevice = null;\n                }\n\n                GraphicsAdapter.DisposeStatic();\n            }\n\n            base.Dispose(disposeManagedResources);\n        }\n\n        /// <summary>\n        /// Determines whether this instance is compatible with the the specified new <see cref=\"GraphicsDeviceInformation\"/>.\n        /// </summary>\n        /// <param name=\"newDeviceInfo\">The new device info.</param>\n        /// <returns><c>true</c> if this instance this instance is compatible with the the specified new <see cref=\"GraphicsDeviceInformation\"/>; otherwise, <c>false</c>.</returns>\n        protected virtual bool CanResetDevice(GraphicsDeviceInformation newDeviceInfo)\n        {\n            return GraphicsAdapter.AdapterOrdinal == newDeviceInfo.Adapter.AdapterOrdinal;\n            // By default, a reset is compatible when we stay under the same graphics profile.\n            //return GraphicsDevice.Features.Level == newDeviceInfo.GraphicsProfile;\n            //return true;\n        }\n\n        /// <summary>\n        /// Finds the best device that is compatible with the preferences defined in this instance.\n        /// </summary>\n        /// <param name=\"anySuitableDevice\">if set to <c>true</c> a device can be selected from any existing adapters, otherwise, it will select only from default adapter.</param>\n        /// <returns>The graphics device information.</returns>\n        protected virtual GraphicsDeviceInformation FindBestDevice(bool anySuitableDevice)\n        {        \n            // Setup preferred parameters before passing them to the factory\n            var preferredParameters = new GameGraphicsParameters\n                {\n                    PreferredVideoAdapter = PreferredVideoAdapter,\n                    PreferredBackBufferWidth = PreferredBackBufferWidth,\n                    PreferredBackBufferHeight = PreferredBackBufferHeight,\n                    PreferredBackBufferFormat = PreferredBackBufferFormat,\n                    PreferredDepthStencilFormat = PreferredDepthStencilFormat,\n                    IsFullScreen = IsFullScreen,\n                    PreferMultiSampling = PreferMultiSampling,\n                    SynchronizeWithVerticalRetrace = SynchronizeWithVerticalRetrace,\n                    PreferredGraphicsProfile = (FeatureLevel[])PreferredGraphicsProfile.Clone(),\n                };\n\n            // Setup resized value if there is a resize pending\n            if (!IsFullScreen && isBackBufferToResize)\n            {\n                preferredParameters.PreferredBackBufferWidth = resizedBackBufferWidth;\n                preferredParameters.PreferredBackBufferHeight = resizedBackBufferHeight;\n            }\n\n            var devices = game.GamePlatform.FindBestDevices(preferredParameters);\n            if (devices.Count == 0)\n            {\n                throw new InvalidOperationException(\"No screen modes found\");\n            }      \n\n            return devices[0];\n        }\n\n        /// <summary>\n        /// Ranks a list of <see cref=\"GraphicsDeviceInformation\"/> before creating a new device.\n        /// </summary>\n        /// <param name=\"foundDevices\">The list of devices that can be reorder.</param>\n        protected virtual void RankDevices(List<GraphicsDeviceInformation> foundDevices)\n        {\n            // Don't sort if there is a single device (mostly for XAML/WP8)\n            if (foundDevices.Count == 1)\n            {\n                return;\n            }\n\n        }\n             /*\n        private int CalculateRankForFormat(DXGI.Format format)\n        {\n            if (format == PreferredBackBufferFormat)\n            {\n                return 0;\n            }\n\n            if (CalculateFormatSize(format) == CalculateFormatSize(PreferredBackBufferFormat))\n            {\n                return 1;\n            }\n\n            return int.MaxValue;\n        }\n               */\n/*        private int CalculateFormatSize(DXGI.Format format)\n        {\n            switch (format)\n            {\n                case DXGI.Format.R8G8B8A8_UNorm:\n                case DXGI.Format.R8G8B8A8_UNorm_SRgb:\n                case DXGI.Format.B8G8R8A8_UNorm:\n                case DXGI.Format.B8G8R8A8_UNorm_SRgb:\n                case DXGI.Format.R10G10B10A2_UNorm:\n                    return 32;\n\n                case DXGI.Format.B5G6R5_UNorm:\n                case DXGI.Format.B5G5R5A1_UNorm:\n                    return 16;\n            }\n\n            return 0;\n        }\n  */\n        protected virtual void OnDeviceCreated(object sender, EventArgs args)\n        {\n            var handler = DeviceCreated;\n            if (handler != null)\n            {\n                handler(sender, args);\n            }\n        }\n\n        protected virtual void OnDeviceDisposing(object sender, EventArgs args)\n        {\n            var handler = DeviceDisposing;\n            if (handler != null)\n            {\n                handler(sender, args);\n            }\n        }\n        \n        protected virtual void OnDeviceReset(object sender, EventArgs args)\n        {\n            var handler = DeviceReset;\n            if (handler != null)\n            {\n                handler(sender, args);\n            }\n        }\n        \n        protected virtual void OnDeviceResetting(object sender, EventArgs args)\n        {\n            var handler = DeviceResetting;\n            if (handler != null)\n            {\n                handler(sender, args);\n            }\n        }\n        \n        protected virtual void OnPreparingDeviceSettings(object sender, PreparingDeviceSettingsEventArgs args)\n        {\n            var handler = PreparingDeviceSettings;\n            if (handler != null)\n            {\n                handler(sender, args);\n            }\n        }\n\n        private void Window_ClientSizeChanged(object sender, EventArgs e)\n        {\n            /*\n            if (!isChangingDevice && ((game.Window.ClientBounds.Height != 0) || (game.Window.ClientBounds.Width != 0)))\n            {\n                resizedBackBufferWidth = game.Window.ClientBounds.Width;\n                resizedBackBufferHeight = game.Window.ClientBounds.Height;\n                isBackBufferToResize = true;\n                ChangeOrCreateDevice(false);\n            }*/\n        }\n\n\n\n        private void CreateDevice(GraphicsDeviceInformation newInfo)\n        {\n            if (GraphicsDevice != null)\n            {\n                try\n                {\n                    GraphicsDevice.Dispose();\n                }\n                catch\n                {\n                }\n                GraphicsDevice = null;\n            }\n\n     //       newInfo.PresentationParameters.Windowed = !isFullScreen;\n      //      newInfo.PresentationParameters.PresentationInterval = SynchronizeWithVerticalRetrace ? PresentInterval.One : PresentInterval.Immediate;\n            newInfo.DeviceCreationFlags = DeviceCreationFlags;\n\n            OnPreparingDeviceSettings(this, new PreparingDeviceSettingsEventArgs(newInfo));\n\n            // this.ValidateGraphicsDeviceInformation(newInfo);\n            GraphicsDevice = game.GamePlatform.CreateDevice(newInfo);\n\n            GraphicsAdapter = newInfo.Adapter;\n\n            GraphicsDevice.Viewport = new Viewport(0, 0, newInfo.PresentationParameters.BackBufferWidth, newInfo.PresentationParameters.BackBufferHeight);\n\n            /*\n            GraphicsDevice.DeviceResetting += GraphicsDevice_DeviceResetting;\n            GraphicsDevice.DeviceReset += GraphicsDevice_DeviceReset;\n            GraphicsDevice.DeviceLost += GraphicsDevice_DeviceLost;   */\n            GraphicsDevice.Disposing += GraphicsDevice_Disposing;\n\n            OnDeviceCreated(this, EventArgs.Empty);\n        }\n\n        void GraphicsDevice_DeviceResetting(object sender, EventArgs e)\n        {\n            // TODO what to do?\n        }\n\n        void GraphicsDevice_DeviceReset(object sender, EventArgs e)\n        {\n            // TODO what to do?\n        }\n\n        void GraphicsDevice_DeviceLost(object sender, EventArgs e)\n        {\n            // TODO what to do?\n        }\n\n        void GraphicsDevice_Disposing(object sender, EventArgs e)\n        {\n            OnDeviceDisposing(sender, e);\n        }\n\n        private void ChangeOrCreateDevice(bool forceCreate)\n        {\n            isChangingDevice = true;\n            int width = game.Window.ClientBounds.Width;\n            int height = game.Window.ClientBounds.Height;\n\n            bool loadContent = false;\n            if (game.ContentLoaded)\n            {\n                game.UnloadContent();\n                loadContent = true;\n            }\n                \n            bool isBeginScreenDeviceChange = false;\n            try\n            {\n            \n                var graphicsDeviceInformation = FindBestDevice(forceCreate);\n                game.Window.BeginScreenDeviceChange(!graphicsDeviceInformation.PresentationParameters.Windowed);              \n\n                isBeginScreenDeviceChange = true;\n                bool needToCreateNewDevice = true;\n\n                game.Window.UpdateFullscreen(!graphicsDeviceInformation.PresentationParameters.Windowed);\n                game.Window.NativeWindow.ClientSize = new System.Drawing.Size(graphicsDeviceInformation.PresentationParameters.BackBufferWidth, graphicsDeviceInformation.PresentationParameters.BackBufferHeight);\n\n                // If we are not forced to create a new device and this is already an existing GraphicsDevice\n                // try to reset and resize it.\n                if (!forceCreate && GraphicsDevice != null)\n                {\n                    OnPreparingDeviceSettings(this, new PreparingDeviceSettingsEventArgs(graphicsDeviceInformation));\n\n                    \n                    if (CanResetDevice(graphicsDeviceInformation))\n                    {\n                        try\n                        {\n                            var newWidth = graphicsDeviceInformation.PresentationParameters.BackBufferWidth;\n                            var newHeight = graphicsDeviceInformation.PresentationParameters.BackBufferHeight;\n                            var newFormat = graphicsDeviceInformation.PresentationParameters.BackBufferFormat;\n\n                            //string s = SharpDX.Diagnostics.ObjectTracker.ReportActiveObjects();\n\n                            GraphicsDevice.Reset(graphicsDeviceInformation.PresentationParameters);\n                            GraphicsDevice.Viewport = new Viewport(0, 0, newWidth, newHeight);\n\n                            needToCreateNewDevice = false;\n                        }\n                        catch\n                        {\n                        }\n                    }\n                }\n\n                // If we still need to create a device, then we need to create it\n                if (needToCreateNewDevice)\n                {\n                    CreateDevice(graphicsDeviceInformation);\n                }\n\n                deviceSettingsChanged = false;\n            }\n            finally\n            {\n                if (isBeginScreenDeviceChange)\n                {\n                    game.Window.EndScreenDeviceChange(width, height);\n                }\n\n                if (loadContent)\n                    game.LoadContent();\n               \n                isChangingDevice = false;\n            }\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Toolkit/Input/Keys.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing MinerWars.CommonLIB.AppCode.Utils;\nnamespace MinerWars.AppCode.Toolkit.Input\n{\n    /// <summary>\n    /// Enumeration for virtual keys.\n    /// </summary>\n    [DontCheck]\n    [System.Reflection.Obfuscation(Feature = SysUtils.MyMwcFinalBuildConstants.OBFUSCATION_EXCEPTION_FEATURE, Exclude = true)]\n    public enum Keys : byte\n    {\n        None = 0x00, // Reserved for system use, never test whether it's pressed\n        LeftButton = 0x01,\n        RightButton = 0x02,\n        Cancel = 0x03,\n        MiddleButton = 0x04,\n        ExtraButton1 = 0x05,\n        ExtraButton2 = 0x06,\n        Back = 0x08,\n        Tab = 0x09,\n        Clear = 0x0C,\n        Enter = 0x0D,\n        Shift = 0x10,\n        Control = 0x11,\n        Alt = 0x12,\n        Pause = 0x13,\n        CapsLock = 0x14,\n        Kana = 0x15,\n        Hangeul = 0x15,\n        Hangul = 0x15,\n        Junja = 0x17,\n        Final = 0x18,\n        Hanja = 0x19,\n        Kanji = 0x19,\n        Escape = 0x1B,\n        Convert = 0x1C,\n        NonConvert = 0x1D,\n        Accept = 0x1E,\n        ModeChange = 0x1F,\n        Space = 0x20,\n        PageUp = 0x21,\n        PageDown = 0x22,\n        End = 0x23,\n        Home = 0x24,\n        Left = 0x25,\n        Up = 0x26,\n        Right = 0x27,\n        Down = 0x28,\n        Select = 0x29,\n        Print = 0x2A,\n        Execute = 0x2B,\n        Snapshot = 0x2C,\n        Insert = 0x2D,\n        Delete = 0x2E,\n        Help = 0x2F,\n        D0 = 0x30,\n        D1 = 0x31,\n        D2 = 0x32,\n        D3 = 0x33,\n        D4 = 0x34,\n        D5 = 0x35,\n        D6 = 0x36,\n        D7 = 0x37,\n        D8 = 0x38,\n        D9 = 0x39,\n        A = 0x41,\n        B = 0x42,\n        C = 0x43,\n        D = 0x44,\n        E = 0x45,\n        F = 0x46,\n        G = 0x47,\n        H = 0x48,\n        I = 0x49,\n        J = 0x4A,\n        K = 0x4B,\n        L = 0x4C,\n        M = 0x4D,\n        N = 0x4E,\n        O = 0x4F,\n        P = 0x50,\n        Q = 0x51,\n        R = 0x52,\n        S = 0x53,\n        T = 0x54,\n        U = 0x55,\n        V = 0x56,\n        W = 0x57,\n        X = 0x58,\n        Y = 0x59,\n        Z = 0x5A,\n        LeftWindows = 0x5B,\n        RightWindows = 0x5C,\n        Apps = 0x5D,\n        Sleep = 0x5F,\n        NumPad0 = 0x60,\n        NumPad1 = 0x61,\n        NumPad2 = 0x62,\n        NumPad3 = 0x63,\n        NumPad4 = 0x64,\n        NumPad5 = 0x65,\n        NumPad6 = 0x66,\n        NumPad7 = 0x67,\n        NumPad8 = 0x68,\n        NumPad9 = 0x69,\n        Multiply = 0x6A,\n        Add = 0x6B,\n        Separator = 0x6C,\n        Subtract = 0x6D,\n        Decimal = 0x6E,\n        Divide = 0x6F,\n        F1 = 0x70,\n        F2 = 0x71,\n        F3 = 0x72,\n        F4 = 0x73,\n        F5 = 0x74,\n        F6 = 0x75,\n        F7 = 0x76,\n        F8 = 0x77,\n        F9 = 0x78,\n        F10 = 0x79,\n        F11 = 0x7A,\n        F12 = 0x7B,\n        F13 = 0x7C,\n        F14 = 0x7D,\n        F15 = 0x7E,\n        F16 = 0x7F,\n        F17 = 0x80,\n        F18 = 0x81,\n        F19 = 0x82,\n        F20 = 0x83,\n        F21 = 0x84,\n        F22 = 0x85,\n        F23 = 0x86,\n        F24 = 0x87,\n        NumLock = 0x90,\n        ScrollLock = 0x91,\n        NEC_Equal = 0x92,\n        Fujitsu_Jisho = 0x92,\n        Fujitsu_Masshou = 0x93,\n        Fujitsu_Touroku = 0x94,\n        Fujitsu_Loya = 0x95,\n        Fujitsu_Roya = 0x96,\n        LeftShift = 0xA0,\n        RightShift = 0xA1,\n        LeftControl = 0xA2,\n        RightControl = 0xA3,\n        LeftAlt = 0xA4,\n        RightAlt = 0xA5,\n        BrowserBack = 0xA6,\n        BrowserForward = 0xA7,\n        BrowserRefresh = 0xA8,\n        BrowserStop = 0xA9,\n        BrowserSearch = 0xAA,\n        BrowserFavorites = 0xAB,\n        BrowserHome = 0xAC,\n        VolumeMute = 0xAD,\n        VolumeDown = 0xAE,\n        VolumeUp = 0xAF,\n        MediaNextTrack = 0xB0,\n        MediaPrevTrack = 0xB1,\n        MediaStop = 0xB2,\n        MediaPlayPause = 0xB3,\n        LaunchMail = 0xB4,\n        LaunchMediaSelect = 0xB5,\n        LaunchApplication1 = 0xB6,\n        LaunchApplication2 = 0xB7,\n        OemSemicolon = 0xBA,\n        OemPlus = 0xBB,\n        OemComma = 0xBC,\n        OemMinus = 0xBD,\n        OemPeriod = 0xBE,\n        OemQuestion = 0xBF,\n        OemTilde = 0xC0,\n        ChatPadGreen = 0xCA,\n        ChatPadOrange = 0xCB,\n        OemOpenBrackets = 0xDB,\n        OemPipe = 0xDC,\n        OemCloseBrackets = 0xDD,\n        OemQuotes = 0xDE,\n        Oem8 = 0xDF,\n        OEMAX = 0xE1,\n        OemBackslash = 0xE2,\n        ICOHelp = 0xE3,\n        ICO00 = 0xE4,\n        ProcessKey = 0xE5,\n        ICOClear = 0xE6,\n        Packet = 0xE7,\n        OEMReset = 0xE9,\n        OEMJump = 0xEA,\n        OEMPA1 = 0xEB,\n        OEMPA2 = 0xEC,\n        OEMPA3 = 0xED,\n        OEMWSCtrl = 0xEE,\n        OEMCUSel = 0xEF,\n        OEMATTN = 0xF0,\n        OEMFinish = 0xF1,\n        OEMCopy = 0xF2,\n        OEMAuto = 0xF3,\n        OEMENLW = 0xF4,\n        OEMBackTab = 0xF5,\n        ATTN = 0xF6,\n        CRSel = 0xF7,\n        EXSel = 0xF8,\n        EREOF = 0xF9,\n        Play = 0xFA,\n        Zoom = 0xFB,\n        Noname = 0xFC,\n        PA1 = 0xFD,\n        OEMClear = 0xFE\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Toolkit/Input/MyHidInputArgs.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing SharpDX;\n\nnamespace MinerWars.AppCode.Toolkit.Input\n{\n    /// <summary>\n    /// Describes the format of the raw input from a Human Interface Device (HID).\n    /// \n    /// </summary>\n    struct MyHidInputArgs\n    {\n        public IntPtr Device;\n\n        /// <summary>\n        /// Gets or sets the number of Hid structure in the <see cref=\"P:SharpDX.RawInput.HidInputEventArgs.RawData\"/>.\n        /// \n        /// </summary>\n        /// \n        /// <value>\n        /// The count.\n        /// \n        /// </value>\n        public int Count;\n\n        /// <summary>\n        /// Gets or sets the size of the Hid structure in the <see cref=\"P:SharpDX.RawInput.HidInputEventArgs.RawData\"/>.\n        /// \n        /// </summary>\n        /// \n        /// <value>\n        /// The size of the data.\n        /// \n        /// </value>\n        public int DataSize;\n\n        /// <summary>\n        /// Gets or sets the raw data.\n        /// \n        /// </summary>\n        /// \n        /// <value>\n        /// The raw data.\n        /// \n        /// </value>\n        public byte[] RawData;\n\n        /// <summary>\n        /// Initializes a new instance of the <see cref=\"T:SharpDX.RawInput.HidInputEventArgs\"/> class.\n        /// \n        /// </summary>\n        /// <param name=\"rawInput\">The raw input.</param>\n        internal MyHidInputArgs(ref RawInput rawInput)\n        {\n            Device = rawInput.Header.Device;\n            Count = rawInput.Data.Hid.Count;\n            DataSize = rawInput.Data.Hid.SizeHid;\n            RawData = new byte[this.Count * this.DataSize];\n            if (this.RawData.Length <= 0)\n                return;\n            unsafe\n            {\n                fixed (byte* numPtr1 = this.RawData)\n                fixed (int* numPtr2 = &rawInput.Data.Hid.RawData)\n                    Utilities.CopyMemory((IntPtr)((void*)numPtr1), (IntPtr)((void*)numPtr2), this.RawData.Length);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Toolkit/Input/MyKeyTranslationTable.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing SharpDX.RawInput;\n\nnamespace MinerWars.AppCode.Toolkit.Input\n{\n    static class MyKeyTranslationTable\n    {\n        class KeyTranslation\n        {\n            public ScanCodeFlags? ScanCodeFlags;\n            public int? MakeCode;\n            public Keys DestKey;\n        }\n\n        static List<KeyTranslation>[] m_translationTable = new List<KeyTranslation>[256];\n\n        static MyKeyTranslationTable()\n        {\n            AddTranslation(Keys.Control, ScanCodeFlags.Make, Keys.LeftControl);\n            AddTranslation(Keys.Control, ScanCodeFlags.E0, Keys.RightControl);\n            AddTranslation(Keys.Alt, ScanCodeFlags.Make, Keys.LeftAlt);\n            AddTranslation(Keys.Alt, ScanCodeFlags.E0, Keys.RightAlt);\n            AddTranslation(Keys.Shift, 0x2a, Keys.LeftShift);\n            AddTranslation(Keys.Shift, 0x36, Keys.RightShift);\n            //AddTranslation(Keys.Return ScanCodeFlags.E0, Keys.NumPadEnter);\n        }\n\n        static void AddTranslation(Keys srcKey, KeyTranslation translation)\n        {\n            byte index = (byte)srcKey;\n            if (m_translationTable[index] == null)\n                m_translationTable[index] = new List<KeyTranslation>(2);\n\n            m_translationTable[index].Add(translation);\n        }\n\n        public static void AddTranslation(Keys srcKey, ScanCodeFlags scanCodeFlags, Keys destKey)\n        {\n            AddTranslation(srcKey, new KeyTranslation() { ScanCodeFlags = scanCodeFlags, MakeCode = null, DestKey = destKey });\n        }\n\n        public static void AddTranslation(Keys srcKey, int makeCode, Keys destKey)\n        {\n            AddTranslation(srcKey, new KeyTranslation() { ScanCodeFlags = null, MakeCode = makeCode, DestKey = destKey });\n        }\n\n        public static Keys Translate(Keys srcKey, ScanCodeFlags scanCodeFlags, int MakeCode)\n        {\n            var list = m_translationTable[(byte)srcKey];\n            if (list != null)\n            {\n                foreach (var item in list)\n                {\n                    if ((item.ScanCodeFlags == null || item.ScanCodeFlags.Value == scanCodeFlags)\n                        && (item.MakeCode == null || item.MakeCode.Value == MakeCode))\n                    {\n                        return item.DestKey;\n                    }\n                }\n            }\n            return Keys.None;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Toolkit/Input/MyKeyboardBuffer.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace MinerWars.AppCode.Toolkit.Input\n{\n    struct MyKeyboardBuffer\n    {\n        unsafe fixed byte m_data[32]; // 8b * 32 = 256b\n\n        public unsafe void SetBit(byte bit, bool value)\n        {\n            if (bit == 0) return; // Zero key is reserved for system use\n\n            int bitOffset = bit % 8;\n            byte mask = (byte)(1 << bitOffset);\n            fixed (byte* data = m_data)\n            {\n                if (value)\n                    *(data + bit / 8) |= mask;\n                else\n                    *(data + bit / 8) &= (byte)~mask;\n            }\n        }\n\n        public unsafe bool AnyBitSet()\n        {\n            fixed (byte* data = m_data)\n            {\n                // When cast to 64b long, only 4 compares are necessary (256b/64b = 4)\n                long* bigData = (long*)data;\n                return bigData[0] + bigData[1] + bigData[2] + bigData[3] != 0;\n            }\n        }\n\n        public unsafe bool GetBit(byte bit)\n        {\n            int bitOffset = (bit % 8);\n            byte mask = (byte)(1 << bitOffset);\n            fixed (byte* data = m_data)\n            {\n                return ((*(data + bit / 8)) & mask) != 0;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Toolkit/Input/MyKeyboardInputArgs.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Windows.Forms;\nusing SharpDX.RawInput;\n\nnamespace MinerWars.AppCode.Toolkit.Input\n{\n\n    /// <summary>\n    /// RawInput Keyboard event.\n    /// \n    /// </summary>\n    struct MyKeyboardInputArgs\n    {\n        public IntPtr Device;\n\n        /// <summary>\n        /// Gets or sets the key.\n        /// \n        /// </summary>\n        /// \n        /// <value>\n        /// The key.\n        /// \n        /// </value>\n        public Keys Key;\n\n        /// <summary>\n        /// Gets or sets the make code.\n        /// \n        /// </summary>\n        /// \n        /// <value>\n        /// The make code.\n        /// \n        /// </value>\n        public int MakeCode;\n\n        /// <summary>\n        /// Gets or sets the scan code flags.\n        /// \n        /// </summary>\n        /// \n        /// <value>\n        /// The scan code flags.\n        /// \n        /// </value>\n        public ScanCodeFlags ScanCodeFlags;\n\n        /// <summary>\n        /// Gets or sets the state.\n        /// \n        /// </summary>\n        /// \n        /// <value>\n        /// The state.\n        /// \n        /// </value>\n        public KeyState State;\n\n        /// <summary>\n        /// Gets or sets the extra information.\n        /// \n        /// </summary>\n        /// \n        /// <value>\n        /// The extra information.\n        /// \n        /// </value>\n        public int ExtraInformation;\n\n        /// <summary>\n        /// Initializes a new instance of the <see cref=\"T:SharpDX.RawInput.KeyboardInputEventArgs\"/> class.\n        /// \n        /// </summary>\n        /// <param name=\"rawInput\">The raw input.</param>\n        internal MyKeyboardInputArgs(ref RawInput rawInput)\n        {\n            Device = rawInput.Header.Device;\n            Key = (Keys)rawInput.Data.Keyboard.VKey;\n            MakeCode = (int)rawInput.Data.Keyboard.MakeCode;\n            ScanCodeFlags = rawInput.Data.Keyboard.Flags;\n            State = rawInput.Data.Keyboard.Message;\n            ExtraInformation = rawInput.Data.Keyboard.ExtraInformation;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Toolkit/Input/MyKeyboardState.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing SharpDX.RawInput;\nusing System.Collections;\n\nnamespace MinerWars.AppCode.Toolkit.Input\n{\n    struct MyKeyboardState\n    {   \n        MyKeyboardBuffer m_buffer;\n\n        public void GetPressedKeys(List<Keys> keys)\n        {\n            keys.Clear();\n\n            for (int i = 1; i < 256; i++)\n            {\n                if (m_buffer.GetBit((byte)i))\n                    keys.Add((Keys)i);\n            }\n        }\n\n        public bool IsAnyKeyPressed()\n        {\n            return m_buffer.AnyBitSet();\n        }\n        \n        void SetKey(Keys key, bool value)\n        {\n            m_buffer.SetBit((byte)key, value);\n        }\n\n        public static MyKeyboardState FromBuffer(MyKeyboardBuffer buffer)\n        {\n            return new MyKeyboardState() { m_buffer = buffer };\n        }\n\n        public void Update(MyKeyboardInputArgs args)\n        {\n            bool isDown = args.State == SharpDX.RawInput.KeyState.KeyDown || args.State == SharpDX.RawInput.KeyState.SystemKeyDown;\n            bool isUp = args.State == SharpDX.RawInput.KeyState.KeyUp || args.State == SharpDX.RawInput.KeyState.SystemKeyUp;\n\n            if (isDown || isUp)\n            {\n                SetKey(args.Key, isDown);\n\n                // Translate Left/Right shift, alt, control\n                var translation = MyKeyTranslationTable.Translate(args.Key, args.ScanCodeFlags, args.MakeCode);\n                if (translation != Keys.None)\n                    SetKey(translation, isDown);\n            }\n        }\n\n        public bool IsKeyDown(Keys key)\n        {\n            return m_buffer.GetBit((byte)key);\n        }\n\n        public bool IsKeyUp(Keys key)\n        {\n            return !IsKeyDown(key);\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Toolkit/Input/MyMouseInputArgs.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing SharpDX.RawInput;\n\nnamespace MinerWars.AppCode.Toolkit.Input\n{\n    struct MyMouseInputArgs\n    {\n        public IntPtr Device;\n\n        /// <summary>\n        /// Gets or sets the mode.\n        /// \n        /// </summary>\n        /// \n        /// <value>\n        /// The mode.\n        /// \n        /// </value>\n        public MouseMode Mode;\n\n        /// <summary>\n        /// Gets or sets the button flags.\n        /// \n        /// </summary>\n        /// \n        /// <value>\n        /// The button flags.\n        /// \n        /// </value>\n        public MouseButtonFlags ButtonFlags;\n\n        /// <summary>\n        /// Gets or sets the extra information.\n        /// \n        /// </summary>\n        /// \n        /// <value>\n        /// The extra information.\n        /// \n        /// </value>\n        public int ExtraInformation;\n\n        /// <summary>\n        /// Gets or sets the raw buttons.\n        /// \n        /// </summary>\n        /// \n        /// <value>\n        /// The raw buttons.\n        /// \n        /// </value>\n        public int Buttons;\n\n        /// <summary>\n        /// Gets or sets the wheel delta.\n        /// \n        /// </summary>\n        /// \n        /// <value>\n        /// The wheel delta.\n        /// \n        /// </value>\n        public int WheelDelta;\n\n        /// <summary>\n        /// Gets or sets the X.\n        /// \n        /// </summary>\n        /// \n        /// <value>\n        /// The X.\n        /// \n        /// </value>\n        public int X;\n\n        /// <summary>\n        /// Gets or sets the Y.\n        /// \n        /// </summary>\n        /// \n        /// <value>\n        /// The Y.\n        /// \n        /// </value>\n        public int Y;\n\n        /// <summary>\n        /// Initializes a new instance of the <see cref=\"T:SharpDX.RawInput.MouseInputEventArgs\"/> class.\n        /// \n        /// </summary>\n        /// <param name=\"rawInput\">The raw input.</param>\n        internal MyMouseInputArgs(ref RawInput rawInput)\n        {\n            Device = rawInput.Header.Device;\n            Mode = (MouseMode)rawInput.Data.Mouse.Flags;\n            ButtonFlags = (MouseButtonFlags)rawInput.Data.Mouse.ButtonsData.ButtonFlags;\n            WheelDelta = (int)rawInput.Data.Mouse.ButtonsData.ButtonData;\n            Buttons = rawInput.Data.Mouse.RawButtons;\n            X = rawInput.Data.Mouse.LastX;\n            Y = rawInput.Data.Mouse.LastY;\n            ExtraInformation = rawInput.Data.Mouse.ExtraInformation;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Toolkit/Input/MyMouseState.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace MinerWars.AppCode.Toolkit.Input\n{\n    struct MyMouseState\n    {\n        public readonly int X;\n        public readonly int Y;\n        public readonly int ScrollWheelValue;\n\n        public readonly bool LeftButton;\n        public readonly bool RightButton;\n        public readonly bool MiddleButton;\n        public readonly bool XButton1;\n        public readonly bool XButton2;\n\n        public MyMouseState(int x, int y, int scrollWheel, bool leftButton, bool middleButton, bool rightButton, bool xButton1, bool xButton2)\n        {\n            X = x;\n            Y = y;\n            ScrollWheelValue = scrollWheel;\n            LeftButton = leftButton;\n            MiddleButton = middleButton;\n            RightButton = rightButton;\n            XButton1 = xButton1;\n            XButton2 = xButton2;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Toolkit/Input/MyRawInput.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Windows.Forms;\nusing SharpDX.Multimedia;\nusing SharpDX.RawInput;\nusing System.Security;\nusing System.Runtime.InteropServices;\nusing SharpDX;\nusing System.IO;\nusing SharpDX.Win32;\n\nnamespace MinerWars.AppCode.Toolkit.Input\n{\n    delegate void HidInputHandler(ref RawInputHeader header, int hidEventCount, int hidEventSize, MyRawInput.RawInputReader temporaryBuffer);\n\n    static class MyRawInput\n    {\n        private enum RawInputDataType\n        {\n            Input = 268435459,\n            Header = 268435461,\n        }\n\n        private class RawInputMessageFilter : IMessageFilter\n        {\n            private const int WmInput = 255;\n\n            public bool PreFilterMessage(ref Message m)\n            {\n                if (m.Msg == WmInput)\n                    MyRawInput.HandleMessage(m.LParam);\n                return false;\n            }\n        }\n\n        public class RawInputReader\n        {\n            BinaryReader m_reader;\n\n            public RawInputReader(BinaryReader reader)\n            {\n                this.m_reader = reader;\n            }\n\n            public BinaryReader InitReader()\n            {\n                m_reader.BaseStream.Position = 0;\n                return m_reader;\n            }\n        }\n\n        private static IntPtr m_filterWindow;\n        private static RawInputMessageFilter m_filter;\n\n        private static RawInputReader m_reader;\n        private static MemoryStream m_memoryStream;\n\n        public static event Action<MyKeyboardInputArgs> KeyboardInput;\n        public static event Action<MyMouseInputArgs> MouseInput;\n\n        /// <summary>\n        /// Occures when new hid input raw message is received and handled.\n        /// </summary>\n        public static event HidInputHandler RawInput;\n\n        static MyRawInput()\n        {\n            m_memoryStream = new MemoryStream(256); // 256B is good default size\n            m_reader = new RawInputReader(new BinaryReader(m_memoryStream));\n        }\n\n        // This allocates, however it should be used only when launching app\n        public static void RegisterDevice(UsagePage usagePage, UsageId usageId, DeviceFlags flags, IntPtr target)\n        {\n            Device.RegisterDevice(usagePage, usageId, flags, target, false);\n            if (m_filter == null)\n            {\n                m_filterWindow = target;\n                m_filter = new RawInputMessageFilter();\n                MessageFilterHook.AddMessageFilter(m_filterWindow, m_filter);\n            }\n        }\n\n        public static void ClearMessageFilter()\n        {\n            if (m_filter != null)\n            {\n                MessageFilterHook.RemoveMessageFilter(m_filterWindow, m_filter);\n                m_filter = null;\n                m_filterWindow = IntPtr.Zero;\n            }\n        }\n\n        public static unsafe void HandleMessage(IntPtr rawInputMessagePointer)\n        {\n            int cbSizeRef = 0;\n            GetRawInputData(rawInputMessagePointer, RawInputDataType.Input, IntPtr.Zero, ref cbSizeRef, Utilities.SizeOf<RawInputHeader>());\n            if (cbSizeRef == 0)\n                return;\n            byte* numPtr = stackalloc byte[cbSizeRef];\n            GetRawInputData(rawInputMessagePointer, RawInputDataType.Input, (IntPtr)((void*)numPtr), ref cbSizeRef, Utilities.SizeOf<RawInputHeader>());\n            RawInput* rawInputPtr = (RawInput*)numPtr;\n            switch (rawInputPtr->Header.Type)\n            {\n                case DeviceType.Mouse:\n                    if (MouseInput != null)\n                    {\n                        MouseInput(new MyMouseInputArgs(ref *rawInputPtr));\n                    }\n                    break;\n\n                case DeviceType.Keyboard:\n                    if (KeyboardInput != null)\n                    {\n                        KeyboardInput(new MyKeyboardInputArgs(ref *rawInputPtr));\n                    }\n                    break;\n\n                case DeviceType.HumanInputDevice:\n                    ProcessRawInput(ref *rawInputPtr);\n                    break;\n            }\n        }\n\n        private static void ProcessRawInput(ref RawInput rawInput)\n        {\n            if (RawInput != null)\n            {\n                int size = rawInput.Data.Hid.Count * rawInput.Data.Hid.SizeHid;\n\n                if (size > 0)\n                {\n                    if (m_memoryStream.Capacity < size)\n                        m_memoryStream.Capacity = size;\n\n                    var buffer = m_memoryStream.GetBuffer();\n                    unsafe\n                    {\n                        fixed (void* to = buffer)\n                        {\n                            fixed (void* from = &rawInput.Data.Hid.RawData)\n                            {\n                                SharpDX.Utilities.CopyMemory((IntPtr)to, (IntPtr)from, size * sizeof(byte));\n                            }\n                        }\n                    }\n                }\n\n                RawInput(ref rawInput.Header, rawInput.Data.Hid.Count, rawInput.Data.Hid.SizeHid, m_reader);\n            }\n        }\n\n        private static unsafe int GetRawInputData(IntPtr hRawInput, RawInputDataType uiCommand, IntPtr dataRef, ref int cbSizeRef, int cbSizeHeader)\n        {\n            int rawInputData;\n            fixed (int* numPtr = &cbSizeRef)\n                rawInputData = GetRawInputData_((void*)hRawInput, (int)uiCommand, (void*)dataRef, (void*)numPtr, cbSizeHeader);\n            return rawInputData;\n        }\n\n        [SuppressUnmanagedCodeSecurity]\n        [DllImport(\"user32.dll\", EntryPoint = \"GetRawInputData\", CallingConvention = CallingConvention.StdCall)]\n        private unsafe extern static int GetRawInputData_(void* arg0, int arg1, void* arg2, void* arg3, int arg4);\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Toolkit/Input/MyWindowsKeyboard.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Runtime.CompilerServices;\nusing System.Security;\nusing System.Runtime.InteropServices;\n\nnamespace MinerWars.AppCode.Toolkit.Input\n{\n    static class MyWindowsKeyboard\n    {\n        [SuppressUnmanagedCodeSecurity]\n        [DllImport(\"user32.dll\")]\n        [return: MarshalAs(UnmanagedType.Bool)]\n        static extern unsafe bool GetKeyboardState(byte* data);\n\n        public static MyKeyboardState GetCurrentState()\n        {\n            MyKeyboardBuffer buffer = new MyKeyboardBuffer();\n\n            unsafe\n            {\n                byte* keyData = stackalloc byte[256];\n                if (!GetKeyboardState(keyData))\n                {\n                    throw new InvalidOperationException(\"Could not read keyboard\");\n                }\n                CopyBuffer(keyData, ref buffer);\n            }\n            return MyKeyboardState.FromBuffer(buffer);\n        }\n\n        static unsafe void CopyBuffer(byte* windowsKeyData, ref MyKeyboardBuffer buffer)\n        {\n            for (int i = 0; i < 256; i++)\n            {\n                if ((windowsKeyData[i] & 0x80) != 0)\n                {\n                    buffer.SetBit((byte)i, true);\n                }\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Toolkit/Input/MyWindowsMouse.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Runtime.InteropServices;\nusing System.Security;\nusing System.Runtime.CompilerServices;\nusing SharpDX.Win32;\nnamespace MinerWars.AppCode.Toolkit.Input\n{\n    static class MyWindowsMouse\n    {\n        public class MouseMessageFilter : System.Windows.Forms.IMessageFilter\n        {\n            private const int WmMouseWheel = 0x20a;\n\n            public bool PreFilterMessage(ref System.Windows.Forms.Message m)\n            {\n                if (m.Msg == WmMouseWheel)\n                {\n                    unsafe\n                    {\n                        int num = MyWindowsMouse.GET_WHEEL_DELTA_WPARAM(m.WParam);\n                        MyWindowsMouse.m_currentWheel += num;\n                    }\n                }\n                return false;\n            }\n        }\n\n        static ushort HIWORD(IntPtr dwValue)\n        {\n            return (ushort)((((long)dwValue) >> 0x10) & 0xffff);\n        }\n\n        static int GET_WHEEL_DELTA_WPARAM(IntPtr wParam)\n        {\n            return (short)HIWORD(wParam);\n        }\n\n        [NativeCppClass]\n        [StructLayout(LayoutKind.Sequential, Size = 8)]\n        struct POINT\n        {\n            public int X, Y;\n\n            public POINT(int x, int y)\n            {\n                X = x;\n                Y = y;\n            }\n        }\n\n        [SuppressUnmanagedCodeSecurity]\n        [DllImport(\"user32.dll\")]\n        static extern short GetAsyncKeyState(int keyCode);\n\n        [SuppressUnmanagedCodeSecurity]\n        [DllImport(\"user32.dll\")]\n        static extern unsafe int GetCursorPos(POINT* point);\n\n        [SuppressUnmanagedCodeSecurity]\n        [DllImport(\"user32.dll\")]\n        static extern bool SetCursorPos(int X, int Y);\n\n        [SuppressUnmanagedCodeSecurity]\n        [DllImport(\"user32.dll\")]\n        static extern unsafe int ScreenToClient(void* handle, POINT* point);\n\n        [SuppressUnmanagedCodeSecurity]\n        [DllImport(\"user32.dll\")]\n        static extern unsafe bool ClientToScreen(void* handle, POINT* lpPoint);\n\n        static int m_currentWheel;\n        static IntPtr m_windowHandle;\n\n        public static void SetWindow(IntPtr windowHandle)\n        {\n            m_windowHandle = windowHandle;\n            MessageFilterHook.AddMessageFilter(windowHandle, new MouseMessageFilter());\n        }\n\n        public static void SetPosition(int x, int y)\n        {\n            POINT pt = new POINT(x, y);\n\n            if (m_windowHandle != IntPtr.Zero)\n            {\n                unsafe\n                {\n                    ClientToScreen(m_windowHandle.ToPointer(), &pt);\n                }\n            }\n            SetCursorPos(pt.X, pt.Y);\n        }\n\n        public static void GetPosition(out int x, out int y)\n        {\n            POINT pt;\n\n            unsafe\n            {\n                GetCursorPos(&pt);\n\n                if (m_windowHandle != IntPtr.Zero)\n                {\n                    ScreenToClient(m_windowHandle.ToPointer(), &pt);\n                }\n            }\n            x = pt.X;\n            y = pt.Y;\n        }\n\n        public static MyMouseState GetCurrentState()\n        {\n            int x, y;\n            GetPosition(out x, out y);\n\n            bool left = (((ushort)GetAsyncKeyState(1)) >> 15) != 0;\n            bool middle = (((ushort)GetAsyncKeyState(4)) >> 15) != 0;\n            bool right = (((ushort)GetAsyncKeyState(2)) >> 15) != 0;\n            bool x1 = (((ushort)GetAsyncKeyState(5)) >> 15) != 0;\n            bool x2 = (((ushort)GetAsyncKeyState(6)) >> 15) != 0;\n\n            return new MyMouseState(x, y, m_currentWheel, left, middle, right, x1, x2);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Toolkit/Input/RawHid.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace MinerWars.AppCode.Toolkit.Input\n{\n    /// <summary>\n    /// <p>Describes the format of the raw input from a Human Interface Device (HID). </p>\n    /// </summary>\n    /// \n    /// <remarks>\n    /// <p>Each <strong>WM_INPUT</strong> can indicate several inputs, but all of the inputs come from the same HID. The size of the <strong>bRawData</strong> array is <strong>dwSizeHid</strong> *\t<strong>dwCount</strong>.</p>\n    /// </remarks>\n    struct RawHid\n    {\n        /// <summary>\n        /// <dd><p>The size, in bytes, of each HID input in <strong>bRawData</strong>. </p></dd>\n        /// </summary>\n        public int SizeHid;\n\n        /// <summary>\n        /// <dd><p>The number of HID inputs in <strong>bRawData</strong>.</p></dd>\n        /// </summary>\n        public int Count;\n\n        /// <summary>\n        /// <dd><p>The raw input data, as an array of bytes. </p></dd>\n        /// When message processing is finished this data became invalid!\n        /// </summary>\n        public int RawData;\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Toolkit/Input/RawInput.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace MinerWars.AppCode.Toolkit.Input\n{\n    /// <summary>\n    /// <p>Contains the raw input from a device. </p>\n    /// </summary>\n    /// \n    /// <remarks>\n    /// <p>The handle to this structure is passed in the <em>lParam</em> parameter of <strong>WM_INPUT</strong>.</p><p>To get detailed information -- such as the header and the content of the raw input -- call <strong>GetRawInputData</strong>.</p><p>To read the <strong><see cref=\"T:SharpDX.RawInput.RawInput\"/></strong> in the message loop as a buffered read, call <strong>GetRawInputBuffer</strong>. </p><p>To get device specific information, call <strong>GetRawInputDeviceInfo</strong> with the <em>hDevice</em> from <strong><see cref=\"T:SharpDX.RawInput.RawInputHeader\"/></strong>.</p><p>Raw input is available only when the application calls <strong>RegisterRawInputDevices</strong> with valid device specifications. </p>\n    /// </remarks>\n    struct RawInput\n    {\n        /// <summary>\n        /// <dd><p>The raw input data. </p></dd>\n        /// </summary>\n        public RawInputHeader Header;\n\n        /// <summary>\n        /// <dd><dl><dt><strong>mouse</strong></dt><dd><p/></dd><dd><p>If the data comes from a mouse, this is the raw input data. </p></dd><dt><strong>keyboard</strong></dt><dd><p/></dd><dd><p>If the data comes from a keyboard, this is the raw input data. </p></dd><dt><strong>hid</strong></dt><dd><p/></dd><dd><p>If the data comes from an HID, this is the raw input data. </p></dd></dl></dd>\n        /// </summary>\n        public RawInputInner0 Data;\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Toolkit/Input/RawInputHeader.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing SharpDX.RawInput;\n\nnamespace MinerWars.AppCode.Toolkit.Input\n{\n    struct RawInputHeader\n    {\n        public DeviceType Type;\n        public int Size;\n        public IntPtr Device;\n        public IntPtr Param;\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Toolkit/Input/RawInputInner0.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Runtime.InteropServices;\n\nnamespace MinerWars.AppCode.Toolkit.Input\n{\n    [StructLayout(LayoutKind.Explicit)]\n    struct RawInputInner0\n    {\n        [FieldOffset(0)]\n        public RawMouse Mouse;\n        \n        [FieldOffset(0)]\n        public RawKeyboard Keyboard;\n        \n        [FieldOffset(0)]\n        public RawHid Hid;\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Toolkit/Input/RawKeyboard.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Runtime.InteropServices;\nusing SharpDX.RawInput;\n\nnamespace MinerWars.AppCode.Toolkit.Input\n{\n    [StructLayout(LayoutKind.Sequential, Pack = 1)]\n    struct RawKeyboard\n    {\n        /// <summary>\n        /// <dd><p>The scan code from the key depression. The scan code for keyboard overrun is <strong>KEYBOARD_OVERRUN_MAKE_CODE</strong>. </p></dd>\n        /// </summary>\n        public short MakeCode;\n\n        /// <summary>\n        /// <dd><p>Flags for scan code information. It can be one or more of the following.</p><table><tr><th>Value</th><th>Meaning</th></tr><tr><td><dl><dt><strong><see cref=\"F:SharpDX.RawInput.ScanCodeFlags.Break\"/></strong></dt><dt>1</dt></dl></td><td><p>The key is up.</p></td></tr><tr><td><dl><dt><strong><see cref=\"F:SharpDX.RawInput.ScanCodeFlags.E0\"/></strong></dt><dt>2</dt></dl></td><td><p>This is the left version of the key.</p></td></tr><tr><td><dl><dt><strong><see cref=\"F:SharpDX.RawInput.ScanCodeFlags.E1\"/></strong></dt><dt>4</dt></dl></td><td><p>This is the right version of the key.</p></td></tr><tr><td><dl><dt><strong><see cref=\"F:SharpDX.RawInput.ScanCodeFlags.Make\"/></strong></dt><dt>0</dt></dl></td><td><p>The key is down.</p></td></tr></table><p>?</p></dd>\n        /// </summary>\n        public ScanCodeFlags Flags;\n\n        /// <summary>\n        /// <dd><p>Reserved; must be zero. </p></dd>\n        /// </summary>\n        public short Reserved;\n\n        /// <summary>\n        /// <dd><p>Windows message compatible virtual-key code. For more information, see Virtual Key Codes. </p></dd>\n        /// </summary>\n        public short VKey;\n\n        /// <summary>\n        /// <dd><p>The corresponding window message, for example <strong><see cref=\"F:SharpDX.RawInput.KeyState.KeyDown\"/></strong>, <strong><see cref=\"F:SharpDX.RawInput.KeyState.SystemKeyDown\"/></strong>, and so forth. </p></dd>\n        /// </summary>\n        public KeyState Message;\n\n        /// <summary>\n        /// <dd><p>The device-specific additional information for the event. </p></dd>\n        /// </summary>\n        public int ExtraInformation;\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Toolkit/Input/RawMouse.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Runtime.InteropServices;\n\nnamespace MinerWars.AppCode.Toolkit.Input\n{\n    struct RawMouse\n    {\n        /// <summary>\n        /// The mouse state.\n        /// </summary>\n        public short Flags;\n\n        public RawMouse.RawMouseButtonsData ButtonsData;\n\n        /// <summary>\n        /// Raw button data.\n        /// </summary>\n        public int RawButtons;\n\n        /// <summary>\n        /// The motion in the X direction. This is signed relative motion or\n        ///             absolute motion, depending on the value of usFlags.\n        /// </summary>\n        public int LastX;\n\n        /// <summary>\n        /// The motion in the Y direction. This is signed relative motion or absolute motion,\n        ///             depending on the value of usFlags.\n        /// </summary>\n        public int LastY;\n\n        /// <summary>\n        /// The device-specific additional information for the event.\n        /// </summary>\n        public int ExtraInformation;\n\n        [StructLayout(LayoutKind.Explicit)]\n        public struct RawMouseButtonsData\n        {\n            [FieldOffset(0)]\n            public int Buttons;\n\n            /// <summary>\n            /// Flags for the event.\n            /// </summary>\n            [FieldOffset(0)]\n            public short ButtonFlags;\n            \n            /// <summary>\n            /// If the mouse wheel is moved, this will contain the delta amount.\n            /// </summary>\n            [FieldOffset(2)]\n            public short ButtonData;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Toolkit/PreparingDeviceSettingsEventArgs.cs",
    "content": "﻿using System;\n\nnamespace SharpDX.Toolkit\n{\n    /// <summary>\n    /// Describes settings to apply before preparing a device for creation, used by <see cref=\"GraphicsDeviceManager.OnPreparingDeviceSettings\"/>.\n    /// </summary>\n    public class PreparingDeviceSettingsEventArgs : EventArgs\n    {\n        /// <summary>\n        /// Initializes a new instance of the <see cref=\"PreparingDeviceSettingsEventArgs\" /> class.\n        /// </summary>\n        /// <param name=\"graphicsDeviceInformation\">The graphics device information.</param>\n        public PreparingDeviceSettingsEventArgs(GraphicsDeviceInformation graphicsDeviceInformation)\n        {\n            GraphicsDeviceInformation = graphicsDeviceInformation;\n        }\n\n        /// <summary>\n        /// Gets the graphics device information.\n        /// </summary>\n        /// <value>The graphics device information.</value>\n        public GraphicsDeviceInformation GraphicsDeviceInformation { get; private set; }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/AppCode/Toolkit/SharpDXHelper.cs",
    "content": "﻿\nusing System;\nusing System.Collections.Generic;\n\nusing MinerWarsMath;\n\nusing SharpDX.Collections;\nusing SharpDX.Toolkit.Graphics;\n\nusing SharpDX.Direct3D9;\nusing System.Linq.Expressions;\n\nnamespace SharpDX.Toolkit\n{\n    delegate void LockVertexBufferHandler(VertexBuffer buffer, int offsetToLock, int sizeToLock, out IntPtr dataPointer, LockFlags lockFlags);\n\n    public static class SharpDXHelper\n    {\n        public static SharpDX.Color ToSharpDX(MinerWarsMath.Color xnaColor)\n        {\n            return new SharpDX.Color(xnaColor.R, xnaColor.G, xnaColor.B, xnaColor.A);\n        }\n\n        public static SharpDX.DrawingRectangle ToSharpDX(MinerWarsMath.Rectangle rectangle)\n        {\n            return new SharpDX.DrawingRectangle(rectangle.X, rectangle.Y, rectangle.Width, rectangle.Height);\n        }\n\n        public static SharpDX.DrawingRectangle? ToSharpDX(MinerWarsMath.Rectangle? rectangle)\n        {\n            if (rectangle.HasValue)\n            {\n                return new SharpDX.DrawingRectangle(rectangle.Value.X, rectangle.Value.Y, rectangle.Value.Width, rectangle.Value.Height);\n            }\n            return null;\n        }\n\n        public static SharpDX.Vector2 ToSharpDX(MinerWarsMath.Vector2 vector)\n        {\n            return new SharpDX.Vector2(vector.X, vector.Y);\n        }\n\n        public static SharpDX.Vector3 ToSharpDX(MinerWarsMath.Vector3 vector)\n        {\n            return new SharpDX.Vector3(vector.X, vector.Y, vector.Z);\n        }\n\n        public static SharpDX.Matrix ToSharpDX(MinerWarsMath.Matrix matrix)\n        {\n            return new SharpDX.Matrix(matrix.M11, matrix.M12, matrix.M13, matrix.M14,\n                                      matrix.M21, matrix.M22, matrix.M23, matrix.M24,\n                                      matrix.M31, matrix.M32, matrix.M33, matrix.M34,\n                                      matrix.M41, matrix.M42, matrix.M43, matrix.M44);\n        }\n\n        public static MinerWarsMath.Vector3 ToXNA(SharpDX.Vector3 v3)\n        {\n            return new MinerWarsMath.Vector3(v3.X, v3.Y, v3.Z);\n        }\n\n        public static MinerWarsMath.Vector4 ToXNA(SharpDX.Vector4 v4)\n        {\n            return new MinerWarsMath.Vector4(v4.X, v4.Y, v4.Z, v4.W);\n        }\n    }\n}"
  },
  {
    "path": "Sources/MinerWars.GameLib/MinerWars.GameLib.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"4.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProductVersion>8.0.30703</ProductVersion>\n    <SchemaVersion>2.0</SchemaVersion>\n    <ProjectGuid>{F2AA32D9-F560-4DEF-BBF2-3DCCF4B17320}</ProjectGuid>\n    <OutputType>Library</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>MinerWars</RootNamespace>\n    <AssemblyName>MinerWars.GameLib</AssemblyName>\n    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>\n    <FileAlignment>512</FileAlignment>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>bin\\Debug\\</OutputPath>\n    <DefineConstants>TRACE;DEBUG;WINDOWS;PACKED_VERTEX_FORMAT;noRENDER_PROFILING;noMEMORY_PROFILING;noGPU_PROFILING;noDETECT_LEAKS</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>\n    <TreatWarningsAsErrors>true</TreatWarningsAsErrors>\n    <NoWarn>162,612,618,429,414,169,649</NoWarn>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\n    <DebugType>pdbonly</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>bin\\Release\\</OutputPath>\n    <DefineConstants>TRACE;WINDOWS;dontENABLE_NETWORK_VERBOSE_LOGGING;PACKED_VERTEX_FORMAT;noRENDER_PROFILING;noMEMORY_PROFILING;noGPU_PROFILING</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x86'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\Debug\\</OutputPath>\n    <DefineConstants>TRACE;DEBUG;WINDOWS;PACKED_VERTEX_FORMAT;noRENDER_PROFILING;noMEMORY_PROFILING;noGPU_PROFILING;noDETECT_LEAKS</DefineConstants>\n    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>\n    <TreatWarningsAsErrors>true</TreatWarningsAsErrors>\n    <NoWarn>162,612,618,429,414,169,649</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <ErrorReport>prompt</ErrorReport>\n    <CodeAnalysisIgnoreBuiltInRules>false</CodeAnalysisIgnoreBuiltInRules>\n    <CodeAnalysisFailOnMissingRules>false</CodeAnalysisFailOnMissingRules>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x86'\">\n    <OutputPath>bin\\Release\\</OutputPath>\n    <DefineConstants>TRACE;WINDOWS;dontENABLE_NETWORK_VERBOSE_LOGGING;PACKED_VERTEX_FORMAT;noRENDER_PROFILING;noMEMORY_PROFILING;noGPU_PROFILING</DefineConstants>\n    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>\n    <Optimize>true</Optimize>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <ErrorReport>prompt</ErrorReport>\n    <CodeAnalysisIgnoreBuiltInRules>false</CodeAnalysisIgnoreBuiltInRules>\n    <CodeAnalysisFailOnMissingRules>false</CodeAnalysisFailOnMissingRules>\n  </PropertyGroup>\n  <ItemGroup>\n    <Reference Include=\"mscorlib\">\n      <Private>False</Private>\n    </Reference>\n    <Reference Include=\"SharpDX\">\n      <HintPath>..\\..\\3rd\\SharpDX\\SharpDX.dll</HintPath>\n    </Reference>\n    <Reference Include=\"SharpDX.Direct3D9\">\n      <HintPath>..\\..\\3rd\\SharpDX\\SharpDX.Direct3D9.dll</HintPath>\n    </Reference>\n    <Reference Include=\"SharpDX.DirectInput\">\n      <HintPath>..\\..\\3rd\\SharpDX\\SharpDX.DirectInput.dll</HintPath>\n    </Reference>\n    <Reference Include=\"SharpDX.RawInput\">\n      <HintPath>..\\..\\3rd\\SharpDX\\SharpDX.RawInput.dll</HintPath>\n    </Reference>\n    <Reference Include=\"SharpDX.XACT3\">\n      <HintPath>..\\..\\3rd\\SharpDX\\SharpDX.XACT3.dll</HintPath>\n    </Reference>\n    <Reference Include=\"SharpDX.XAudio2\">\n      <HintPath>..\\..\\3rd\\SharpDX\\SharpDX.XAudio2.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System\">\n      <Private>False</Private>\n    </Reference>\n    <Reference Include=\"System.Data\" />\n    <Reference Include=\"System.Drawing\" />\n    <Reference Include=\"System.IdentityModel\" />\n    <Reference Include=\"System.Management\" />\n    <Reference Include=\"System.Runtime.Serialization\" />\n    <Reference Include=\"System.ServiceModel\" />\n    <Reference Include=\"System.Windows.Forms\" />\n    <Reference Include=\"System.Xml\">\n      <Private>False</Private>\n    </Reference>\n    <Reference Include=\"System.Core\">\n      <Private>False</Private>\n    </Reference>\n    <Reference Include=\"System.Xml.Linq\">\n      <Private>False</Private>\n    </Reference>\n  </ItemGroup>\n  <ItemGroup>\n    <Compile Include=\"AppCode\\App\\MyEditorGameBase.cs\" />\n    <Compile Include=\"AppCode\\App\\MyMinerGame.cs\" />\n    <Compile Include=\"AppCode\\App\\MyRuntime.cs\" />\n    <Compile Include=\"AppCode\\App\\MySectorExporter.cs\" />\n    <Compile Include=\"AppCode\\Game\\Audio\\AudioCategory.cs\" />\n    <Compile Include=\"AppCode\\Game\\Audio\\AudioEngineExtensions.cs\" />\n    <Compile Include=\"AppCode\\Game\\Audio\\Dialogues\\MyDialogue.cs\" />\n    <Compile Include=\"AppCode\\Game\\Audio\\Dialogues\\MyDialogueConstants.cs\" />\n    <Compile Include=\"AppCode\\Game\\Audio\\Dialogues\\MyDialogues.cs\" />\n    <Compile Include=\"AppCode\\Game\\Audio\\Dialogues\\MyDialogueSentence.cs\" />\n    <Compile Include=\"AppCode\\Game\\Audio\\Dialogues\\MyShouts.cs\" />\n    <Compile Include=\"AppCode\\Game\\Audio\\MyAudio.cs\" />\n    <Compile Include=\"AppCode\\Game\\Audio\\MyAudio_Data.cs\" />\n    <Compile Include=\"AppCode\\Game\\Audio\\MyCueInfo.cs\" />\n    <Compile Include=\"AppCode\\Game\\Audio\\MyCuePool.cs\" />\n    <Compile Include=\"AppCode\\Game\\Audio\\MyCueProxy.cs\" />\n    <Compile Include=\"AppCode\\Game\\Audio\\MyHudAudio.cs\" />\n    <Compile Include=\"AppCode\\Game\\Audio\\MyInMemoryWaveBank.cs\" />\n    <Compile Include=\"AppCode\\Game\\Audio\\MySoundCue.cs\" />\n    <Compile Include=\"AppCode\\Game\\Audio\\MyX3DAudio.cs\" />\n    <Compile Include=\"AppCode\\Game\\Audio\\MyXactVariables.cs\" />\n    <Compile Include=\"AppCode\\Game\\BackgroundCube\\MyBackgroundCube.cs\" />\n    <Compile Include=\"AppCode\\Game\\BackgroundCube\\MyDistantImpostors.cs\" />\n    <Compile Include=\"AppCode\\Game\\BackgroundCube\\MyDistantObjectImpostor.cs\" />\n    <Compile Include=\"AppCode\\Game\\BackgroundCube\\MyDistantObjectImpostors.cs\" />\n    <Compile Include=\"AppCode\\Game\\BackgroundCube\\MyVoxelMapImpostors.cs\" />\n    <Compile Include=\"AppCode\\Game\\Cockpit\\MyCockpitGlass.cs\" />\n    <Compile Include=\"AppCode\\Game\\Cockpit\\MyCockpitGlassDecals.cs\" />\n    <Compile Include=\"AppCode\\Game\\Cockpit\\MyCockpitGlassDecalsBuffer.cs\" />\n    <Compile Include=\"AppCode\\Game\\Debugging\\MyDebugConsole.cs\" />\n    <Compile Include=\"AppCode\\Game\\Debugging\\MyFpsManager.cs\" />\n    <Compile Include=\"AppCode\\Game\\Debugging\\MyGarbageCollectionManager.cs\" />\n    <Compile Include=\"AppCode\\Game\\Debugging\\MyPerformanceCounter.cs\" />\n    <Compile Include=\"AppCode\\Game\\Debugging\\MyPerformanceTimer.cs\" />\n    <Compile Include=\"AppCode\\Game\\Debugging\\MySmallShipTemplate.cs\" />\n    <Compile Include=\"AppCode\\Game\\Debugging\\MySmallShipTemplates.cs\" />\n    <Compile Include=\"AppCode\\Game\\Decals\\MyDecals.cs\" />\n    <Compile Include=\"AppCode\\Game\\Decals\\MyDecalsForPhysObjects.cs\" />\n    <Compile Include=\"AppCode\\Game\\Decals\\MyDecalsForPhysObjectsTriangleBuffer.cs\" />\n    <Compile Include=\"AppCode\\Game\\Decals\\MyDecalsForVoxels.cs\" />\n    <Compile Include=\"AppCode\\Game\\Decals\\MyDecalsForVoxelsTriangleBuffer.cs\" />\n    <Compile Include=\"AppCode\\Game\\Editor\\MyEditor.cs\" />\n    <Compile Include=\"AppCode\\Game\\Editor\\MyEditorActionBase.cs\" />\n    <Compile Include=\"AppCode\\Game\\Editor\\MyEditorActionClearSector.cs\" />\n    <Compile Include=\"AppCode\\Game\\Editor\\MyEditorActionEntityAdd.cs\" />\n    <Compile Include=\"AppCode\\Game\\Editor\\MyEditorActionEntityCopy.cs\" />\n    <Compile Include=\"AppCode\\Game\\Editor\\MyEditorActionEntityDelete.cs\" />\n    <Compile Include=\"AppCode\\Game\\Editor\\MyEditorActionEntityPropertiesChange.cs\" />\n    <Compile Include=\"AppCode\\Game\\Editor\\MyEditorActionEntityTransform.cs\" />\n    <Compile Include=\"AppCode\\Game\\Editor\\MyEditorActions.cs\" />\n    <Compile Include=\"AppCode\\Game\\Editor\\MyEditorActionVoxelHand.cs\" />\n    <Compile Include=\"AppCode\\Game\\Editor\\MyEditorActionWithObjectBuildersBase.cs\" />\n    <Compile Include=\"AppCode\\Game\\Editor\\MyEditorGizmo.cs\" />\n    <Compile Include=\"AppCode\\Game\\Editor\\MyEditorGrid.cs\" />\n    <Compile Include=\"AppCode\\Game\\Editor\\MyEditorShortcutManager.cs\" />\n    <Compile Include=\"AppCode\\Game\\Editor\\MyEditorTransformData.cs\" />\n    <Compile Include=\"AppCode\\Game\\Editor\\MyEditorVoxelHand.cs\" />\n    <Compile Include=\"AppCode\\Game\\Editor\\MyMouseInputTool.cs\" />\n    <Compile Include=\"AppCode\\Game\\Editor\\MySelectionTool.cs\" />\n    <Compile Include=\"AppCode\\Game\\Editor\\MySnapPointLink.cs\" />\n    <Compile Include=\"AppCode\\Game\\Effects\\BaseEffects\\MyEffectBase.cs\" />\n    <Compile Include=\"AppCode\\Game\\Effects\\BaseEffects\\MyEffectDynamicLightingBase.cs\" />\n    <Compile Include=\"AppCode\\Game\\Effects\\BaseEffects\\MyEffectPerlinNoiseBase.cs\" />\n    <Compile Include=\"AppCode\\Game\\Effects\\BaseEffects\\MyEffectReflectorBase.cs\" />\n    <Compile Include=\"AppCode\\Game\\Effects\\BaseEffects\\MyEffectShadowBase.cs\" />\n    <Compile Include=\"AppCode\\Game\\Effects\\BaseEffects\\MyEffectSpotShadowBase.cs\" />\n    <Compile Include=\"AppCode\\Game\\Effects\\BaseEffects\\MyEffectVoxelsBase.cs\" />\n    <Compile Include=\"AppCode\\Game\\Effects\\Lights\\MyEffectBlendLights.cs\" />\n    <Compile Include=\"AppCode\\Game\\Effects\\Lights\\MyEffectDirectionalLight.cs\" />\n    <Compile Include=\"AppCode\\Game\\Effects\\Lights\\MyEffectPointLight.cs\" />\n    <Compile Include=\"AppCode\\Game\\Effects\\MyEffectAmbientPrecalculation.cs\" />\n    <Compile Include=\"AppCode\\Game\\Effects\\MyEffectAntiAlias.cs\" />\n    <Compile Include=\"AppCode\\Game\\Effects\\MyEffectBackgroundCube.cs\" />\n    <Compile Include=\"AppCode\\Game\\Effects\\MyEffectClearGbuffer.cs\" />\n    <Compile Include=\"AppCode\\Game\\Effects\\MyEffectCockpitGlass.cs\" />\n    <Compile Include=\"AppCode\\Game\\Effects\\MyEffectContrast.cs\" />\n    <Compile Include=\"AppCode\\Game\\Effects\\MyEffectDecals.cs\" />\n    <Compile Include=\"AppCode\\Game\\Effects\\MyEffectDistantImpostors.cs\" />\n    <Compile Include=\"AppCode\\Game\\Effects\\MyEffectGaussianBlur.cs\" />\n    <Compile Include=\"AppCode\\Game\\Effects\\MyEffectGodRays.cs\" />\n    <Compile Include=\"AppCode\\Game\\Effects\\MyEffectHDR.cs\" />\n    <Compile Include=\"AppCode\\Game\\Effects\\MyEffectHDRBase.cs\" />\n    <Compile Include=\"AppCode\\Game\\Effects\\MyEffectHud.cs\" />\n    <Compile Include=\"AppCode\\Game\\Effects\\MyEffectHudRadar.cs\" />\n    <Compile Include=\"AppCode\\Game\\Effects\\MyEffectLuminance.cs\" />\n    <Compile Include=\"AppCode\\Game\\Effects\\MyEffectModelsDiffuse.cs\" />\n    <Compile Include=\"AppCode\\Game\\Effects\\MyEffectModelsDNS.cs\" />\n    <Compile Include=\"AppCode\\Game\\Effects\\MyEffectOcclusionQueryDraw.cs\" />\n    <Compile Include=\"AppCode\\Game\\Effects\\MyEffectRenderGizmo.cs\" />\n    <Compile Include=\"AppCode\\Game\\Effects\\MyEffectScale.cs\" />\n    <Compile Include=\"AppCode\\Game\\Effects\\MyEffectScreenshot.cs\" />\n    <Compile Include=\"AppCode\\Game\\Effects\\MyEffectShadowMap.cs\" />\n    <Compile Include=\"AppCode\\Game\\Effects\\MyEffectSolarMapGrid.cs\" />\n    <Compile Include=\"AppCode\\Game\\Effects\\MyEffectSpriteBatchShader.cs\" />\n    <Compile Include=\"AppCode\\Game\\Effects\\MyEffectThreshold.cs\" />\n    <Compile Include=\"AppCode\\Game\\Effects\\MyEffectTransparentGeometry.cs\" />\n    <Compile Include=\"AppCode\\Game\\Effects\\MyEffectVolumetricFog.cs\" />\n    <Compile Include=\"AppCode\\Game\\Effects\\SSAO\\MyEffectDownsampleDepthForSSAO.cs\" />\n    <Compile Include=\"AppCode\\Game\\Effects\\SSAO\\MyEffectSSAOBlur2.cs\" />\n    <Compile Include=\"AppCode\\Game\\Effects\\SSAO\\MyEffectVolumetricSSAO2.cs\" />\n    <Compile Include=\"AppCode\\Game\\Effects\\Voxels\\MyEffectVoxels.cs\" />\n    <Compile Include=\"AppCode\\Game\\Effects\\Voxels\\MyEffectVoxelsDebris.cs\" />\n    <Compile Include=\"AppCode\\Game\\Effects\\Voxels\\MyEffectVoxelsStaticAsteroid.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Asteroids\\MyMeteor.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Asteroids\\MyStaticAsteroid.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Asteroids\\MyVoxelMap.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\CargoBox\\MyCargoBox.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\CargoBox\\MyMysteriousCube.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Debris\\MyExplosionDebrisBase.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Debris\\MyExplosionDebrisModel.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Debris\\MyExplosionDebrisVoxel.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Debris\\MyLargeDebrisField.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Debris\\MySmallDebris .cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\DummyPoints\\MyDummyEffectHelper.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\DummyPoints\\MyDummyEffectHelpers.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\DummyPoints\\MyDummyPoint.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Editor\\MyVoxelHandBox.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Editor\\MyVoxelHandCuboid.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Editor\\MyVoxelHandCylinder.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Editor\\MyVoxelHandShape.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Editor\\MyVoxelHandSphere.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\EntityDetector\\MyEntityDetector.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\EntityDetector\\MyEntityDetectorCriterium.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\EntityDetector\\MyEntityDetectorsManager.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\FoundationFactory\\MyBuildingRequirement.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\FoundationFactory\\MyBuildingSpecification.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\FoundationFactory\\MyFoundationFactory.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\FoundationFactory\\MyObjectToBuild.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\IMyEditableEntity.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\IMyHasFaction.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\InfluenceSpheres\\MyInfluenceSphere.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\IResetable.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\MyEntities.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\MyEntity.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\MyEntityIdentifier.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\MyEntityIdRemapContext.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\MyGamePruningStructure.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Notifications\\IMyNotifyEntityChanged.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Ships\\AI\\Jobs\\MyDetectEnemiesJob.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Ships\\AI\\Jobs\\MyTestPositionJob.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Ships\\AI\\MyAtackedByEnemyDesire.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Ships\\AI\\MyAttackFormations.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Ships\\AI\\MyBotAITemplates.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Ships\\AI\\MyBotBehaviorAttack.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Ships\\AI\\MyBotBehaviorBase.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Ships\\AI\\MyBotBehaviorCurious.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Ships\\AI\\MyBotBehaviorFollow.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Ships\\AI\\MyBotBehaviorIdle.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Ships\\AI\\MyBotBehaviorKamikadze.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Ships\\AI\\MyBotBehaviorPanic.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Ships\\AI\\MyBotBehaviorPatrol.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Ships\\AI\\MyBotBehaviorRunAway.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Ships\\AI\\MyBotCoordinator.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Ships\\AI\\MyBotDesire.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Ships\\AI\\MyCuriousDesire.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Ships\\AI\\MyDangerZones.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Ships\\AI\\MyFindSmallshipHelper.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Ships\\AI\\MyFlashedDesire.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Ships\\AI\\MyGotoLocationHelper.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Ships\\AI\\MyKillDesire.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Ships\\AI\\MyLowHealthDesire.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Ships\\AI\\MyPathfindingHelper.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Ships\\AI\\MyRoutefindingHelper.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Ships\\AI\\MySeeEnemyDesire.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Ships\\Config\\MyReflectorConfig.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Ships\\Config\\MySmallShipConfig.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Ships\\MyDrone.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Ships\\MyEnemyTargeting.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Ships\\MyLargeShip.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Ships\\MyShip.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Ships\\MySmallShip.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Ships\\MySmallShipBot.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Ships\\MySmallShipInteraction.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Ships\\SubObjects\\MyCameraHeadShake.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Ships\\SubObjects\\MyCameraSpring.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Ships\\SubObjects\\MyCockpit.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Ships\\SubObjects\\MyCockpitGlassEntity.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Ships\\SubObjects\\MyCockpitWeapons.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Ships\\SubObjects\\MyCubeBuilder.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Ships\\SubObjects\\MySecondaryCamera.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\SpawnPoints\\MySpawnPoint.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Tools\\MyContactDrill.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Tools\\MyCrusherDrill.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Tools\\MyCrusherDrillBit.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Tools\\MyDirectionalDrill.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Tools\\MyDrillBase.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Tools\\MyDrillHead.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Tools\\MyHackingTool.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Tools\\MyHarvestingDevice.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Tools\\MyHarvestingHead.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Tools\\MyLaserDrill.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Tools\\MyMedicine.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Tools\\MyNanoRepairToolBase.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Tools\\MyNanoRepairToolEntity.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Tools\\MyNanoRepairToolFoundationFactory.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Tools\\MyNanoRepairToolSmallShip.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Tools\\MyNuclearDrill.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Tools\\MyPressureDrill.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Tools\\MySawDrill.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Tools\\MyThermalDrill.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Tools\\ToolKits\\MyToolKit.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Tools\\ToolKits\\MyToolKits.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\WayPoints\\MyWayPoint.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\WayPoints\\MyWayPointGraph.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\WayPoints\\MyWayPointPath.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Weapons\\Ammo\\MyAmmoAssignment.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Weapons\\Ammo\\MyAmmoBase.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Weapons\\Ammo\\MyAmmoConstants.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Weapons\\Ammo\\MyAmmoInventoryItems.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Weapons\\Ammo\\MyCannonShot.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Weapons\\Ammo\\MyCannonShots.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Weapons\\Ammo\\MyMissile.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Weapons\\Ammo\\MyMissiles.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Weapons\\Ammo\\UniversalLauncher\\MyAsteroidKiller.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Weapons\\Ammo\\UniversalLauncher\\MyDecoyFlare.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Weapons\\Ammo\\UniversalLauncher\\MyDirectionalExplosive.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Weapons\\Ammo\\UniversalLauncher\\MyEMPBomb.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Weapons\\Ammo\\UniversalLauncher\\MyFlashBomb.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Weapons\\Ammo\\UniversalLauncher\\MyGravityBomb.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Weapons\\Ammo\\UniversalLauncher\\MyHologram.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Weapons\\Ammo\\UniversalLauncher\\MyHologramShips.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Weapons\\Ammo\\UniversalLauncher\\MyIlluminatingShell.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Weapons\\Ammo\\UniversalLauncher\\MyMineBase.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Weapons\\Ammo\\UniversalLauncher\\MyMineBasic.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Weapons\\Ammo\\UniversalLauncher\\MyMineBioChem.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Weapons\\Ammo\\UniversalLauncher\\MyMineSmart.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Weapons\\Ammo\\UniversalLauncher\\MyRemoteBomb.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Weapons\\Ammo\\UniversalLauncher\\MyRemoteCamera.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Weapons\\Ammo\\UniversalLauncher\\MySmokeBomb.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Weapons\\Ammo\\UniversalLauncher\\MySphereExplosive.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Weapons\\Ammo\\UniversalLauncher\\MyTimeBomb.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Weapons\\Ammo\\UniversalLauncher\\MyUniversalLauncher.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Weapons\\Ammo\\UniversalLauncher\\MyUniversalLauncherShells.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Weapons\\Guns\\MyAutocanonGun.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Weapons\\Guns\\MyAutomaticRifleSilencerGun.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Weapons\\Guns\\MyCannonGun.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Weapons\\Guns\\MyGunBase.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Weapons\\Guns\\MyLargeShipAutocannon.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Weapons\\Guns\\MyLargeShipBarrelBase.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Weapons\\Guns\\MyLargeShipCIWS.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Weapons\\Guns\\MyLargeShipGunBase.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Weapons\\Guns\\MyLargeShipMachineGun.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Weapons\\Guns\\MyLargeShipMissileLauncherBarrel.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Weapons\\Guns\\MyLargeShipMissileLauncherGun.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Weapons\\Guns\\MyLargeShipWeaponPrediction.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Weapons\\Guns\\MyMachineGun.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Weapons\\Guns\\MyMissileLauncherGun.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Weapons\\Guns\\MyShotGun.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Weapons\\Guns\\MySmallShipGunBase.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Weapons\\Guns\\MySniperGun.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Weapons\\MySmallShipWeapons.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Weapons\\MyWeaponSlot.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Weapons\\Projectile\\MyProjectile.cs\" />\n    <Compile Include=\"AppCode\\Game\\Entities\\Weapons\\Projectile\\MyProjectiles.cs\" />\n    <Compile Include=\"AppCode\\Game\\Explosions\\MyExplosion.cs\" />\n    <Compile Include=\"AppCode\\Game\\Explosions\\MyExplosions.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Core\\IMyGuiControlsParent.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Core\\Listbox\\MyGuiControlListboxDragAndDrop.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Core\\Listbox\\MyGuiControlListboxItem.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Core\\Listbox\\MyGuiControlListboxRow.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Core\\Listbox\\MyGuiControlListboxScrollBar.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Core\\MyColoredText.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Core\\MyGuiControlBase.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Core\\MyGuiControlButton.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Core\\MyGuiControlCheckbox.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Core\\MyGuiControlColor.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Core\\MyGuiControlCombobox.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Core\\MyGuiControlLabel.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Core\\MyGuiControlList.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Core\\MyGuiControlListbox.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Core\\MyGuiControlMultilineText.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Core\\MyGuiControlPanel.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Core\\MyGuiControlParent.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Core\\MyGuiControlProgressBar.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Core\\MyGuiControlRadioButton.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Core\\MyGuiControlRotatingWheel.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Core\\MyGuiControls.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Core\\MyGuiControlSelectAmmo.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Core\\MyGuiControlShipPreview.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Core\\MyGuiControlSlider.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Core\\MyGuiControlTabControl.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Core\\MyGuiControlTextbox.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Core\\MyGuiControlTreeView.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Core\\MyGuiControlWheelControl.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Core\\MyGuiFont.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Core\\MyGuiInput.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Core\\MyGuiLocalizedKeyboardState.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Core\\MyGuiManager.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Core\\MyGuiScreenBase.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Core\\MyGuiScreenLogo.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Core\\MyGuiScreenMasterServiceCallProgress.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Core\\MyGuiScreenPerformanceWarning.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Core\\MyGuiScreenProgressBase.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Core\\MyGuiScreenProgressBaseAsync.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Core\\MyGuiScreenSectorServiceCallProgress.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Core\\MyIconTexts.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Core\\MyToolTips.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Core\\RichTextLabel\\MyRichLabel.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Core\\RichTextLabel\\MyRichLabelImage.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Core\\RichTextLabel\\MyRichLabelLine.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Core\\RichTextLabel\\MyRichLabelText.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Core\\RichTextLabel\\MyRichTextPart.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Core\\TreeView\\MyScrollbar.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Core\\TreeView\\MyTreeView.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Core\\TreeView\\MyTreeViewBase.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Core\\TreeView\\MyTreeViewBody.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Core\\TreeView\\MyTreeViewItem.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Core\\TreeView\\MyTreeViewItemDragAndDrop.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\DebugScreens\\MyGuiScreenDebugBase.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\DebugScreens\\MyGuiScreenDebugBot.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\DebugScreens\\MyGuiScreenDebugColors.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\DebugScreens\\MyGuiScreenDebugDebris.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\DebugScreens\\MyGuiScreenDebugDeveloper.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\DebugScreens\\MyGuiScreenDebugDialogues.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\DebugScreens\\MyGuiScreenDebugFillSector.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\DebugScreens\\MyGuiScreenDebugGame.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\DebugScreens\\MyGuiScreenDebugGlobalEvents.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\DebugScreens\\MyGuiScreenDebugInput.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\DebugScreens\\MyGuiScreenDebugPlayerCameraSpring.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\DebugScreens\\MyGuiScreenDebugPlayerFriends.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\DebugScreens\\MyGuiScreenDebugPlayerShake.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\DebugScreens\\MyGuiScreenDebugRender.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\DebugScreens\\MyGuiScreenDebugRenderGlobalFX.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\DebugScreens\\MyGuiScreenDebugRenderHDR.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\DebugScreens\\MyGuiScreenDebugRenderLights.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\DebugScreens\\MyGuiScreenDebugRenderModelFX.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\DebugScreens\\MyGuiScreenDebugRenderOptimizations.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\DebugScreens\\MyGuiScreenDebugRenderPruning.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\DebugScreens\\MyGuiScreenDebugRenderSectorFX.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\DebugScreens\\MyGuiScreenDebugShip.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\DebugScreens\\MyGuiScreenDebugSmallShipWeaponsOffset.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\DebugScreens\\MyGuiScreenDebugStatistics.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\DebugScreens\\MyGuiScreenDebugSystem.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\DebugScreens\\MyGuiScreenDebugTiming.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\DebugScreens\\MyGuiScreenDebugVolumetricSSAO.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\DebugScreens\\MyGuiScreenRenderModule.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\DebugScreens\\MyGuiScreenRenderModules.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Helpers\\MyGuiAsteroidHelper.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Helpers\\MyGuiAsteroidHelpers.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Helpers\\MyGuiContextMenuHelper.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Helpers\\MyGuiContextMenuHelpers.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Helpers\\MyGuiContextMenuItemHelper.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Helpers\\MyGuiControlEditLights.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Helpers\\MyGuiControlEditVoxelHand.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Helpers\\MyGuiEditorControlsBase.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Helpers\\MyGuiEditorVoxelHandHelper.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Helpers\\MyGuiEditorVoxelHandHelpers.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Helpers\\MyGuiEventHelper.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Helpers\\MyGuiEventHelpers.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Helpers\\MyGuiFoundationFactoryHelper.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Helpers\\MyGuiGameControlsHelpers.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Helpers\\MyGuiGodEditorControls.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Helpers\\MyGuiHelperBase.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Helpers\\MyGuiInfluenceSphereHelper.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Helpers\\MyGuiInfluenceSphereHelpers.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Helpers\\MyGuiIngameEditorControls.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Helpers\\MyGuiInventoryTemplateTypeHelpers.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Helpers\\MyGuiLargeShipHelper.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Helpers\\MyGuiLargeShipHelpers.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Helpers\\MyGuiObjectBuilderHelpers.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Helpers\\MyGuiPrefabBuildTypeHelper.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Helpers\\MyGuiPrefabCategoryTypeHelper.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Helpers\\MyGuiPrefabHelper.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Helpers\\MyGuiPrefabHelpers.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Helpers\\MyGuiPrefabSubCategoryTypeHelper.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Helpers\\MyGuiScreenInventoryManagerForGame.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Helpers\\MyGuiSmallDebrisHelper.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Helpers\\MyGuiSmallDebrisHelpers.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Helpers\\MyGuiSmallShipHelperAmmo.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Helpers\\MyGuiSmallShipHelperArmor.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Helpers\\MyGuiSmallShipHelperBlueprint.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Helpers\\MyGuiSmallShipHelperEngine.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Helpers\\MyGuiSmallShipHelperOre.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Helpers\\MyGuiSmallShipHelperRadar.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Helpers\\MyGuiSmallShipHelpers.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Helpers\\MyGuiSmallShipHelperSmallShip.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Helpers\\MyGuiSmallShipHelperTool.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Helpers\\MyGuiSmallShipHelperWeapon.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Helpers\\MyGuiVoxelMaterialHelper.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Helpers\\MyQuoteOfTheDay.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\MyGuiScreenCheats.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\MyGuiScreenChooseDifficulty.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\MyGuiScreenChoosePlay.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\MyGuiScreenDemoAccessInfo.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\MyGuiScreenEnterFriendSectorMap.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\MyGuiScreenEnterSectorMap.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\MyGuiScreenEnterSectorProgress.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\MyGuiScreenFake.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\MyGuiScreenFlyThrough.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\MyGuiScreenGameChat.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\MyGuiScreenGameCredits.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\MyGuiScreenGameOver.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\MyGuiScreenGamePlay.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\MyGuiScreenGamePlay_World.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\MyGuiScreenGameScore.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\MyGuiScreenHelp.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\MyGuiScreenHostGame.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\MyGuiScreenInputString.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\MyGuiScreenIntroVideo.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\MyGuiScreenInventory.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\MyGuiScreenJoinGame.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\MyGuiScreenJournal.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\MyGuiScreenLoadChapter.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\MyGuiScreenLoadCheckpointProgress.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\MyGuiScreenLoading.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\MyGuiScreenLoadSectorIdentifiersProgress.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\MyGuiScreenLogin.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\MyGuiScreenLoginProgress.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\MyGuiScreenLogoutProgress.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\MyGuiScreenMainMenu.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\MyGuiScreenMessageBox.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\MyGuiScreenMission.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\MyGuiScreenMultiplayer.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\MyGuiScreenMultiplayerEnterGameRequest.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\MyGuiScreenOptions.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\MyGuiScreenOptionsAudio.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\MyGuiScreenOptionsControls.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\MyGuiScreenOptionsGame.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\MyGuiScreenOptionsVideo.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\MyGuiScreenProfile.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\MyGuiScreenProgressAsync.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\MyGuiScreenRegister.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\MyGuiScreenRegisterProgress.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\MyGuiScreenRenameCheckpoint.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\MyGuiScreenSaveCheckpoint.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\MyGuiScreenSecurityControlHUB.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\MyGuiScreenSelectEditor.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\MyGuiScreenSelectSandboxProgress.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\MyGuiScreenSelectStory.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\MyGuiScreenShipCustomization.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\MyGuiScreenSimpleProgress.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\MyGuiScreenSimpleProgressBar.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\MyGuiScreenSolarSystemMap.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\MyGuiScreenStartQuickLaunch.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\MyGuiScreenStartSessionProgress.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\MyGuiScreenUnloading.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\MyGuiScreenUseProgressBar.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\MyGuiScreenUserInfo.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\MyGuiScreenWaiting.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\MyGuiScreenWaitingOnHost.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Prefabs\\MyGuiControlEntityUse.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Prefabs\\MyGuiControlPrefabAlarmUse.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Prefabs\\MyGuiControlPrefabCameraUse.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Prefabs\\MyGuiControlPrefabLargeWeaponUse.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Prefabs\\MyGuiControlPrefabUse.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Prefabs\\MyGuiSceenEntityUseBase.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\Prefabs\\MyGuiScreenEntityUseSolo.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\PreviewRenderer\\MyGuiPreviewRenderer.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\RichControls\\MyGuiControlSize.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\ScreenEditor\\MyGuiControlUseProperties.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\ScreenEditor\\MyGuiScreenEditorCopyTool.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\ScreenEditor\\MyGuiScreenEditorCopyToolSelectSector.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\ScreenEditor\\MyGuiScreenEditorDialogBase.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\ScreenEditor\\MyGuiScreenEditorEditProperties.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\ScreenEditor\\MyGuiScreenEditorGroups.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\ScreenEditor\\MyGuiScreenEditorHelp.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\ScreenEditor\\MyGuiScreenEditorLoadGroup.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\ScreenEditor\\MyGuiScreenEditorLoadSectorObjectsProgress.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\ScreenEditor\\MyGuiScreenEditorOptions.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\ScreenEditor\\MyGuiScreenEditorPrefabKinematicParts.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\ScreenEditor\\MyGuiScreenEditorProgress.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\ScreenEditor\\MyGuiScreenEditorRenameGroup.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\ScreenEditor\\MyGuiScreenEditorSaveProgress.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\ScreenEditor\\MyGuiScreenEditorSelectAndHide.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\ScreenEditor\\MyGuiScreenEditorSelectSector.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\ScreenEditor\\MyGuiScreenEditorSettingsFog.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\ScreenEditor\\MyGuiScreenEditorSettingsSun.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\ScreenEditor\\MyGuiScreenEditorWayPointList.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\ScreenEditor\\MyGuiScreenEditorWayPointPath.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\ScreenEditor\\MyGuiScreenSaveSector.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\ScreenEditor\\MyGuiScreenSelectDeactivatedEntity.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\ScreenEditor\\MyGuiScreenSmallShipTemplates.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\ScreenEditor\\Object3D\\MyGuiScreenEditorAsteroid.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\ScreenEditor\\Object3D\\MyGuiScreenEditorCargoBox.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\ScreenEditor\\Object3D\\MyGuiScreenEditorDummyPoint.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\ScreenEditor\\Object3D\\MyGuiScreenEditorInfluenceSphere.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\ScreenEditor\\Object3D\\MyGuiScreenEditorLargeShip.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\ScreenEditor\\Object3D\\MyGuiScreenEditorLargeWeapon.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\ScreenEditor\\Object3D\\MyGuiScreenEditorObject3DBase.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\ScreenEditor\\Object3D\\MyGuiScreenEditorPrefab.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\ScreenEditor\\Object3D\\MyGuiScreenEditorPrefabContainer.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\ScreenEditor\\Object3D\\MyGuiScreenEditorScanner.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\ScreenEditor\\Object3D\\MyGuiScreenEditorSecurityControlHUB.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\ScreenEditor\\Object3D\\MyGuiScreenEditorSmallShip.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\ScreenEditor\\Object3D\\MyGuiScreenEditorSpawnPoint.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\ScreenEditor\\Object3D\\MyGuiScreenEditorWaypoint.cs\" />\n    <Compile Include=\"AppCode\\Game\\GUI\\ScreenEditor\\Object3D\\MyGuiScreenEntityWithInventory.cs\" />\n    <Compile Include=\"AppCode\\Game\\HUD\\MyComputeGPSJob.cs\" />\n    <Compile Include=\"AppCode\\Game\\HUD\\MyEffectHudSectorBorder.cs\" />\n    <Compile Include=\"AppCode\\Game\\HUD\\MyHud.cs\" />\n    <Compile Include=\"AppCode\\Game\\HUD\\MyHudGPS.cs\" />\n    <Compile Include=\"AppCode\\Game\\HUD\\MyHudNotification.cs\" />\n    <Compile Include=\"AppCode\\Game\\HUD\\MyHudRadar.cs\" />\n    <Compile Include=\"AppCode\\Game\\HUD\\MyHudSectorBorder.cs\" />\n    <Compile Include=\"AppCode\\Game\\HUD\\MyHudText.cs\" />\n    <Compile Include=\"AppCode\\Game\\HUD\\MyHudWarning.cs\" />\n    <Compile Include=\"AppCode\\Game\\Inventory\\MyInventory.cs\" />\n    <Compile Include=\"AppCode\\Game\\Inventory\\MyInventoryItem.cs\" />\n    <Compile Include=\"AppCode\\Game\\Inventory\\MyInventoryItemsRepository.cs\" />\n    <Compile Include=\"AppCode\\Game\\Inventory\\MyInventorySynchronizer.cs\" />\n    <Compile Include=\"AppCode\\Game\\Inventory\\MyInventoryTemplate.cs\" />\n    <Compile Include=\"AppCode\\Game\\Journal\\MyEventLog.cs\" />\n    <Compile Include=\"AppCode\\Game\\Journal\\MyEventLogEntry.cs\" />\n    <Compile Include=\"AppCode\\Game\\Lights\\MyDirectionalLight.cs\" />\n    <Compile Include=\"AppCode\\Game\\Lights\\MyLight.cs\" />\n    <Compile Include=\"AppCode\\Game\\Lights\\MyLights.cs\" />\n    <Compile Include=\"AppCode\\Game\\Localization\\MyDialoguesWrapper.cs\" />\n    <Compile Include=\"AppCode\\Game\\Localization\\MyDialoguesWrapperGenerated.cs\">\n      <DependentUpon>MyDialoguesWrapperGenerated.tt</DependentUpon>\n      <AutoGen>True</AutoGen>\n      <DesignTime>True</DesignTime>\n    </Compile>\n    <Compile Include=\"AppCode\\Game\\Localization\\MyLanguagesEnum.cs\" />\n    <Compile Include=\"AppCode\\Game\\Localization\\MySubtitles.cs\" />\n    <Compile Include=\"AppCode\\Game\\Localization\\MyTextsWrapper.cs\" />\n    <Compile Include=\"AppCode\\Game\\Localization\\MyTextsWrapperGenerated.cs\">\n      <DependentUpon>MyTextsWrapperGenerated.tt</DependentUpon>\n      <AutoGen>True</AutoGen>\n      <DesignTime>True</DesignTime>\n    </Compile>\n    <Compile Include=\"AppCode\\Game\\Managers\\MyManager.cs\" />\n    <Compile Include=\"AppCode\\Game\\Managers\\MyResource.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\Components\\MyBlinkingObjects.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\Components\\MyDetectorDialogue.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\Components\\MyHeadshake.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\Components\\MyMinesField.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\Components\\MyMovingEntity.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\Components\\MySpawnpointLimiter.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\Components\\MySpawnpointSmartWaves.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\Components\\MySpawnpointWaves.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\Components\\MyTimedDialogue.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\MyActorProgress.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\MyFriendlyFire.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\MyMission.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\MyMissionBase.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\MyMissionComponent.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\MyMissions.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\MyMissionSandboxBase.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\MyScriptWrapper.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\Objectives\\MyDestroyWavesObjective.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\Objectives\\MyFollowHostObjective.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\Objectives\\MyMeetObjective.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\Objectives\\MyMultipleObjectives.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\Objectives\\MyMultipleUseObjective.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\Objectives\\MyObjective.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\Objectives\\MyObjectiveDefend.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\Objectives\\MyObjectiveDestroy.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\Objectives\\MyObjectiveDialog.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\Objectives\\MyObjectiveDisablePrefabs.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\Objectives\\MyObjectiveEnablePrefabs.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\Objectives\\MyObjectiveEnterInventory.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\Objectives\\MyObjectiveFollowBot.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\Objectives\\MyObjectiveGetItems.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\Objectives\\MyObjectiveGetToLocations.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\Objectives\\MyObjectiveRace.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\Objectives\\MyObjectiveWatchSigns.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\Objectives\\MyTimedMeetObjective.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\Objectives\\MyTimedObjective.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\Objectives\\MyTimedReachLocationObjective.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\Objectives\\MyUseObjective.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\Sandbox\\MyHubShowcaseMission.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\SideMissions\\MySideMissionAssassination.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\SinglePlayer\\MyAlienGateMission.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\SinglePlayer\\MyArabianBorderMission.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\SinglePlayer\\MyArabianCapitalMission.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\SinglePlayer\\MyAsteroidComplexMission.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\SinglePlayer\\MyAsteroidResearchFieldMission.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\SinglePlayer\\MyAutonomousOutpostMission.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\SinglePlayer\\MyBarthsMoonConvinceMission.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\SinglePlayer\\MyBarthsMoonMissionBase.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\SinglePlayer\\MyBarthsMoonPlantMission.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\SinglePlayer\\MyBarthsMoonTransmitterMission.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\SinglePlayer\\MyBiofacilityMission.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\SinglePlayer\\MyChineseCapitalMission.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\SinglePlayer\\MyChineseEscapeMission.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\SinglePlayer\\MyChineseRefineryMission.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\SinglePlayer\\MyChineseSolarArrayAttackMission.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\SinglePlayer\\MyChineseTransmitterMission.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\SinglePlayer\\MyChineseTransportMission.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\SinglePlayer\\MyCKDMothershipFacilityMission.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\SinglePlayer\\MyConvoyMission.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\SinglePlayer\\MyDumpingGroundMission.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\SinglePlayer\\MyEACCapitalMission.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\SinglePlayer\\MyEACPrisonMission.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\SinglePlayer\\MyEACSurveySiteMission.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\SinglePlayer\\MyEACTransmitterMission.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\SinglePlayer\\MyFactoryAmbushMission.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\SinglePlayer\\MyFollowHostMission.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\SinglePlayer\\MyForgottenFacilityMission.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\SinglePlayer\\MyFortValiantMission.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\SinglePlayer\\MyFortValiantMissionB.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\SinglePlayer\\MyFortValiantMissionBase.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\SinglePlayer\\MyFortValiantMissionC.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\SinglePlayer\\MyGatesOfHellMission.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\SinglePlayer\\MyHeliumMinesMission.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\SinglePlayer\\MyHippieOutpostMission.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\SinglePlayer\\MyIndustrialSectorMission.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\SinglePlayer\\MyIntergalacticHighwayMission.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\SinglePlayer\\MyIntroMission.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\SinglePlayer\\MyJunkyardConvinceMission.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\SinglePlayer\\MyJunkyardEACAmbushMission.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\SinglePlayer\\MyJunkyardReturnMission.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\SinglePlayer\\MyLaikaMission.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\SinglePlayer\\MyLastHopeMission.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\SinglePlayer\\MyMedina622Mission.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\SinglePlayer\\MyMilitaryOutpostMission.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\SinglePlayer\\MyMinerUprisingMission.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\SinglePlayer\\MyMothershipCrashMission.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\SinglePlayer\\MyNewJerusalemMission.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\SinglePlayer\\MyNewNanjingMission.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\SinglePlayer\\MyNewSingaporeIndustryMission.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\SinglePlayer\\MyPirateBaseMission.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\SinglePlayer\\MyPlaygroundMission.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\SinglePlayer\\MyPlutoniumMineMission.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\SinglePlayer\\MyReichstagAMission.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\SinglePlayer\\MyReichstagCMission.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\SinglePlayer\\MyResearchVesselMission.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\SinglePlayer\\MyRiftMission.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\SinglePlayer\\MyRimeConvinceMission.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\SinglePlayer\\MyRussianCapitalMission.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\SinglePlayer\\MyRussianTransmitterMission.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\SinglePlayer\\MyRussianWarehouseMission.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\SinglePlayer\\MySlaverBase2Mission.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\SinglePlayer\\MySlaverBaseMission.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\SinglePlayer\\MySmallPirateBase2Mission.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\SinglePlayer\\MySmallPirateBaseMission.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\SinglePlayer\\MySolarFactoryEACMission.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\SinglePlayer\\MyStealthPlaygroundMission.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\SinglePlayer\\MyTestAttackMission.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\SinglePlayer\\MyTestMission.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\SinglePlayer\\MyTradeStationChinaMission.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\SinglePlayer\\MyTradeStationEACMission.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\SinglePlayer\\MyTwinTowersMission.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\SinglePlayer\\MyWhiteWolvesResearchMission.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\SinglePlayer\\MyZombieLevelMission.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\Submissions\\MyHarvestOreSubmission.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\Submissions\\MySabotageSubmission.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\Submissions\\MySubmissionGotoAny.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\Utils\\MyCountdownTimer.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\Utils\\MyEntityAnimator.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\Utils\\MyItemToGetDefinition.cs\" />\n    <Compile Include=\"AppCode\\Game\\Missions\\Utils\\MyMissionTimer.cs\" />\n    <Compile Include=\"AppCode\\Game\\Models\\IMyTriangePruningStructure.cs\" />\n    <Compile Include=\"AppCode\\Game\\Models\\MyMesh.cs\" />\n    <Compile Include=\"AppCode\\Game\\Models\\MyMeshMaterial.cs\" />\n    <Compile Include=\"AppCode\\Game\\Models\\MyModel.cs\" />\n    <Compile Include=\"AppCode\\Game\\Models\\MyModelObj .cs\" />\n    <Compile Include=\"AppCode\\Game\\Models\\MyModelOctree.cs\" />\n    <Compile Include=\"AppCode\\Game\\Models\\MyModelOctreeNode.cs\" />\n    <Compile Include=\"AppCode\\Game\\Models\\MyModels.cs\" />\n    <Compile Include=\"AppCode\\Game\\Models\\MyModelSubObjects.cs\" />\n    <Compile Include=\"AppCode\\Game\\Models\\MyModels_Data.cs\" />\n    <Compile Include=\"AppCode\\Game\\MyOctree.cs\" />\n    <Compile Include=\"AppCode\\Game\\Networking\\MyClientServer.cs\" />\n    <Compile Include=\"AppCode\\Game\\Networking\\MyPlayerBase.cs\" />\n    <Compile Include=\"AppCode\\Game\\Networking\\MyPlayerLocal.cs\" />\n    <Compile Include=\"AppCode\\Game\\Networking\\MyPlayerRemote.cs\" />\n    <Compile Include=\"AppCode\\Game\\Networking\\MyPlayerStatistics.cs\" />\n    <Compile Include=\"AppCode\\Game\\Physics\\MyContactEventExtensions.cs\" />\n    <Compile Include=\"AppCode\\Game\\Physics\\MyPhysicsBody.cs\" />\n    <Compile Include=\"AppCode\\Game\\Physics\\MyPhysicsForceType.cs\" />\n    <Compile Include=\"AppCode\\Game\\Prefabs\\Container\\MyPrefabContainer.cs\" />\n    <Compile Include=\"AppCode\\Game\\Prefabs\\Container\\MyPrefabContainerManager.cs\" />\n    <Compile Include=\"AppCode\\Game\\Prefabs\\IMyUseableEntity.cs\" />\n    <Compile Include=\"AppCode\\Game\\Prefabs\\MyPrefab.cs\" />\n    <Compile Include=\"AppCode\\Game\\Prefabs\\MyPrefabAlarm.cs\" />\n    <Compile Include=\"AppCode\\Game\\Prefabs\\MyPrefabBankNode.cs\" />\n    <Compile Include=\"AppCode\\Game\\Prefabs\\MyPrefabBase.cs\" />\n    <Compile Include=\"AppCode\\Game\\Prefabs\\MyPrefabCamera.cs\" />\n    <Compile Include=\"AppCode\\Game\\Prefabs\\MyPrefabConstants.cs\" />\n    <Compile Include=\"AppCode\\Game\\Prefabs\\MyPrefabFactory.cs\" />\n    <Compile Include=\"AppCode\\Game\\Prefabs\\MyPrefabFoundationFactory.cs\" />\n    <Compile Include=\"AppCode\\Game\\Prefabs\\MyPrefabGenerator.cs\" />\n    <Compile Include=\"AppCode\\Game\\Prefabs\\MyPrefabHangar.cs\" />\n    <Compile Include=\"AppCode\\Game\\Prefabs\\MyPrefabKinematic.cs\" />\n    <Compile Include=\"AppCode\\Game\\Prefabs\\MyPrefabKinematicPart.cs\" />\n    <Compile Include=\"AppCode\\Game\\Prefabs\\MyPrefabKinematicPartBase.cs\" />\n    <Compile Include=\"AppCode\\Game\\Prefabs\\MyPrefabKinematicRotatingPart.cs\" />\n    <Compile Include=\"AppCode\\Game\\Prefabs\\MyPrefabKinematicSensor.cs\" />\n    <Compile Include=\"AppCode\\Game\\Prefabs\\MyPrefabLamp.cs\" />\n    <Compile Include=\"AppCode\\Game\\Prefabs\\MyPrefabLargeShip.cs\" />\n    <Compile Include=\"AppCode\\Game\\Prefabs\\MyPrefabLargeWeapon.cs\" />\n    <Compile Include=\"AppCode\\Game\\Prefabs\\MyPrefabLight.cs\" />\n    <Compile Include=\"AppCode\\Game\\Prefabs\\MyPrefabParticles.cs\" />\n    <Compile Include=\"AppCode\\Game\\Prefabs\\MyPrefabScanner.cs\" />\n    <Compile Include=\"AppCode\\Game\\Prefabs\\MyPrefabSecurityControlHUB.cs\" />\n    <Compile Include=\"AppCode\\Game\\Prefabs\\MyPrefabSnapPoint.cs\" />\n    <Compile Include=\"AppCode\\Game\\Prefabs\\MyPrefabSound.cs\" />\n    <Compile Include=\"AppCode\\Game\\Prefabs\\PrefabConfigurations\\MyPrefabConfiguration.cs\" />\n    <Compile Include=\"AppCode\\Game\\Prefabs\\PrefabConfigurations\\MyPrefabConfigurationAlarm.cs\" />\n    <Compile Include=\"AppCode\\Game\\Prefabs\\PrefabConfigurations\\MyPrefabConfigurationBankNode.cs\" />\n    <Compile Include=\"AppCode\\Game\\Prefabs\\PrefabConfigurations\\MyPrefabConfigurationCamera.cs\" />\n    <Compile Include=\"AppCode\\Game\\Prefabs\\PrefabConfigurations\\MyPrefabConfigurationFoundationFactory.cs\" />\n    <Compile Include=\"AppCode\\Game\\Prefabs\\PrefabConfigurations\\MyPrefabConfigurationGenerator.cs\" />\n    <Compile Include=\"AppCode\\Game\\Prefabs\\PrefabConfigurations\\MyPrefabConfigurationHangar.cs\" />\n    <Compile Include=\"AppCode\\Game\\Prefabs\\PrefabConfigurations\\MyPrefabConfigurationKinematic.cs\" />\n    <Compile Include=\"AppCode\\Game\\Prefabs\\PrefabConfigurations\\MyPrefabConfigurationKinematicPart.cs\" />\n    <Compile Include=\"AppCode\\Game\\Prefabs\\PrefabConfigurations\\MyPrefabConfigurationLargeShip.cs\" />\n    <Compile Include=\"AppCode\\Game\\Prefabs\\PrefabConfigurations\\MyPrefabConfigurationLargeWeapon.cs\" />\n    <Compile Include=\"AppCode\\Game\\Prefabs\\PrefabConfigurations\\MyPrefabConfigurationLight.cs\" />\n    <Compile Include=\"AppCode\\Game\\Prefabs\\PrefabConfigurations\\MyPrefabConfigurationParticles.cs\" />\n    <Compile Include=\"AppCode\\Game\\Prefabs\\PrefabConfigurations\\MyPrefabConfigurationScanner.cs\" />\n    <Compile Include=\"AppCode\\Game\\Prefabs\\PrefabConfigurations\\MyPrefabConfigurationSecurityControlHUB.cs\" />\n    <Compile Include=\"AppCode\\Game\\Prefabs\\PrefabConfigurations\\MyPrefabConfigurationSound.cs\" />\n    <Compile Include=\"AppCode\\Game\\Radar\\MyDetectedObject.cs\" />\n    <Compile Include=\"AppCode\\Game\\Radar\\MyObjectToDetect.cs\" />\n    <Compile Include=\"AppCode\\Game\\Radar\\MyRadar.cs\" />\n    <Compile Include=\"AppCode\\Game\\Render\\EnvironmentMap\\MyEnvironmentMap.cs\" />\n    <Compile Include=\"AppCode\\Game\\Render\\EnvironmentMap\\MyEnvironmentMapRenderer.cs\" />\n    <Compile Include=\"AppCode\\Game\\Render\\MyRender-Content.cs\" />\n    <Compile Include=\"AppCode\\Game\\Render\\MyRender-Debug.cs\" />\n    <Compile Include=\"AppCode\\Game\\Render\\MyRender-Draw.cs\" />\n    <Compile Include=\"AppCode\\Game\\Render\\MyRender-Lights.cs\" />\n    <Compile Include=\"AppCode\\Game\\Render\\MyRender-Management.cs\" />\n    <Compile Include=\"AppCode\\Game\\Render\\MyRender.Alternative.cs\" />\n    <Compile Include=\"AppCode\\Game\\Render\\MyRender.cs\" />\n    <Compile Include=\"AppCode\\Game\\Render\\MyRenderConstants.cs\" />\n    <Compile Include=\"AppCode\\Game\\Render\\MySortedElements.Comparers.cs\" />\n    <Compile Include=\"AppCode\\Game\\Render\\MySortedElements.cs\" />\n    <Compile Include=\"AppCode\\Game\\Render\\MySortedElements.Models.cs\" />\n    <Compile Include=\"AppCode\\Game\\Render\\MySortedElements.Voxels.cs\" />\n    <Compile Include=\"AppCode\\Game\\Render\\PostProcesses\\MyPostProcessAntiAlias.cs\" />\n    <Compile Include=\"AppCode\\Game\\Render\\PostProcesses\\MyPostProcessBase.cs\" />\n    <Compile Include=\"AppCode\\Game\\Render\\PostProcesses\\MyPostProcessContrast.cs\" />\n    <Compile Include=\"AppCode\\Game\\Render\\PostProcesses\\MyPostProcessGodRays.cs\" />\n    <Compile Include=\"AppCode\\Game\\Render\\PostProcesses\\MyPostProcessHDR.cs\" />\n    <Compile Include=\"AppCode\\Game\\Render\\PostProcesses\\MyPostProcessVolumetricFog.cs\" />\n    <Compile Include=\"AppCode\\Game\\Render\\PostProcesses\\MyPostProcessVolumetricSSAO2.cs\" />\n    <Compile Include=\"AppCode\\Game\\Render\\Scene\\MyCullableRenderObject.cs\" />\n    <Compile Include=\"AppCode\\Game\\Render\\Scene\\MyOcclusionQuery.cs\" />\n    <Compile Include=\"AppCode\\Game\\Render\\Scene\\MyRenderObject.cs\" />\n    <Compile Include=\"AppCode\\Game\\Render\\SecondaryCamera\\MySecondaryCameraRenderer.cs\" />\n    <Compile Include=\"AppCode\\Game\\Render\\Shadows\\MyCastShadowJob.cs\" />\n    <Compile Include=\"AppCode\\Game\\Render\\Shadows\\MyOrthographicCamera.cs\" />\n    <Compile Include=\"AppCode\\Game\\Render\\Shadows\\MyPerspectiveCamera.cs\" />\n    <Compile Include=\"AppCode\\Game\\Render\\Shadows\\MyRenderCamera.cs\" />\n    <Compile Include=\"AppCode\\Game\\Render\\Shadows\\MyShadowRenderer.cs\" />\n    <Compile Include=\"AppCode\\Game\\Render\\Shadows\\MyShadowRendererBase.cs\" />\n    <Compile Include=\"AppCode\\Game\\Render\\Shadows\\MySpotShadowRenderer.cs\" />\n    <Compile Include=\"AppCode\\Game\\Render\\Statistics\\MyRenderProfiler.cs\" />\n    <Compile Include=\"AppCode\\Game\\Render\\Statistics\\MyRenderStatistics.cs\" />\n    <Compile Include=\"AppCode\\Game\\Sessions\\Multiplayer\\MyMultiplayerConfiguration.cs\" />\n    <Compile Include=\"AppCode\\Game\\Sessions\\Multiplayer\\MyMultiplayerExtensions.cs\" />\n    <Compile Include=\"AppCode\\Game\\Sessions\\Multiplayer\\MyMultiplayerGameplay.cs\" />\n    <Compile Include=\"AppCode\\Game\\Sessions\\Multiplayer\\MyMultiplayerGameplay.Entity.cs\" />\n    <Compile Include=\"AppCode\\Game\\Sessions\\Multiplayer\\MyMultiplayerGameplay.Join.cs\" />\n    <Compile Include=\"AppCode\\Game\\Sessions\\Multiplayer\\MyMultiplayerGameplay.Locking.cs\" />\n    <Compile Include=\"AppCode\\Game\\Sessions\\Multiplayer\\MyMultiplayerGameplay.Misc.cs\" />\n    <Compile Include=\"AppCode\\Game\\Sessions\\Multiplayer\\MyMultiplayerGameplay.Scripts.cs\" />\n    <Compile Include=\"AppCode\\Game\\Sessions\\Multiplayer\\MyMultiplayerGameplay.SmallShip.cs\" />\n    <Compile Include=\"AppCode\\Game\\Sessions\\Multiplayer\\MyMultiplayerGameplay.Story.cs\" />\n    <Compile Include=\"AppCode\\Game\\Sessions\\Multiplayer\\MyMultiplayerLobby.cs\" />\n    <Compile Include=\"AppCode\\Game\\Sessions\\Multiplayer\\MyMultiplayerPeers.cs\" />\n    <Compile Include=\"AppCode\\Game\\Sessions\\Multiplayer\\MyNatIntroduction.cs\" />\n    <Compile Include=\"AppCode\\Game\\Sessions\\MyDataCorruptedException.cs\" />\n    <Compile Include=\"AppCode\\Game\\Sessions\\MyMasterServerAction.cs\" />\n    <Compile Include=\"AppCode\\Game\\Sessions\\MyMotherShipPosition.cs\" />\n    <Compile Include=\"AppCode\\Game\\Sessions\\MySandboxSession.cs\" />\n    <Compile Include=\"AppCode\\Game\\Sessions\\MyServerAction.cs\" />\n    <Compile Include=\"AppCode\\Game\\Sessions\\MySession.cs\" />\n    <Compile Include=\"AppCode\\Game\\Sessions\\MySinglePlayerSession.cs\" />\n    <Compile Include=\"AppCode\\Game\\SolarSystem\\MySectorGenerator.cs\" />\n    <Compile Include=\"AppCode\\Game\\SolarSystem\\MySectorProperties.cs\" />\n    <Compile Include=\"AppCode\\Game\\SolarSystem\\MySolarSystemArea.cs\" />\n    <Compile Include=\"AppCode\\Game\\SolarSystem\\MySolarSystemAreaCircle.cs\" />\n    <Compile Include=\"AppCode\\Game\\SolarSystem\\MySolarSystemAreaOrbit.cs\" />\n    <Compile Include=\"AppCode\\Game\\SolarSystem\\MySolarSystemConstants.cs\" />\n    <Compile Include=\"AppCode\\Game\\SolarSystem\\MySolarSystemGenerator.cs\" />\n    <Compile Include=\"AppCode\\Game\\SolarSystem\\MySolarSystemMapCamera.cs\" />\n    <Compile Include=\"AppCode\\Game\\SolarSystem\\MySolarSystemMapData.cs\" />\n    <Compile Include=\"AppCode\\Game\\SolarSystem\\MySolarSystemRandomExtensions.cs\" />\n    <Compile Include=\"AppCode\\Game\\SolarSystem\\MySolarSystemUtils.cs\" />\n    <Compile Include=\"AppCode\\Game\\SolarSystem\\MyTemplateGroups.cs\" />\n    <Compile Include=\"AppCode\\Game\\SolarSystem\\Renderer\\MySolarMapRenderer.cs\" />\n    <Compile Include=\"AppCode\\Game\\SolarSystem\\SolarAreas\\MySolarSystem3rdTransmitterConstants.cs\" />\n    <Compile Include=\"AppCode\\Game\\SolarSystem\\SolarAreas\\MySolarSystemAfterMarsConstants.cs\" />\n    <Compile Include=\"AppCode\\Game\\SolarSystem\\SolarAreas\\MySolarSystemAsteroidBelt2Constants.cs\" />\n    <Compile Include=\"AppCode\\Game\\SolarSystem\\SolarAreas\\MySolarSystemAsteroidBeltConstants.cs\" />\n    <Compile Include=\"AppCode\\Game\\SolarSystem\\SolarAreas\\MySolarSystemChineseMinesConstants.cs\" />\n    <Compile Include=\"AppCode\\Game\\SolarSystem\\SolarAreas\\MySolarSystemChineseRafineryConstants.cs\" />\n    <Compile Include=\"AppCode\\Game\\SolarSystem\\SolarAreas\\MySolarSystemChineseSolarPlantConstants.cs\" />\n    <Compile Include=\"AppCode\\Game\\SolarSystem\\SolarAreas\\MySolarSystemChineseTransmitterConstants.cs\" />\n    <Compile Include=\"AppCode\\Game\\SolarSystem\\SolarAreas\\MySolarSystemEarthConstants.cs\" />\n    <Compile Include=\"AppCode\\Game\\SolarSystem\\SolarAreas\\MySolarSystemHallConstants.cs\" />\n    <Compile Include=\"AppCode\\Game\\SolarSystem\\SolarAreas\\MySolarSystemHell25DConstants.cs\" />\n    <Compile Include=\"AppCode\\Game\\SolarSystem\\SolarAreas\\MySolarSystemJunkyardConstants.cs\" />\n    <Compile Include=\"AppCode\\Game\\SolarSystem\\SolarAreas\\MySolarSystemJupiter2Constants.cs\" />\n    <Compile Include=\"AppCode\\Game\\SolarSystem\\SolarAreas\\MySolarSystemJupiterBorderConstants.cs\" />\n    <Compile Include=\"AppCode\\Game\\SolarSystem\\SolarAreas\\MySolarSystemJupiterConstants.cs\" />\n    <Compile Include=\"AppCode\\Game\\SolarSystem\\SolarAreas\\MySolarSystemLaikaConstants.cs\" />\n    <Compile Include=\"AppCode\\Game\\SolarSystem\\SolarAreas\\MySolarSystemMars3Constants.cs\" />\n    <Compile Include=\"AppCode\\Game\\SolarSystem\\SolarAreas\\MySolarSystemMarsConstants.cs\" />\n    <Compile Include=\"AppCode\\Game\\SolarSystem\\SolarAreas\\MySolarSystemMedina622Constants.cs\" />\n    <Compile Include=\"AppCode\\Game\\SolarSystem\\SolarAreas\\MySolarSystemMercuryConstants.cs\" />\n    <Compile Include=\"AppCode\\Game\\SolarSystem\\SolarAreas\\MySolarSystemNearSunConstants.cs\" />\n    <Compile Include=\"AppCode\\Game\\SolarSystem\\SolarAreas\\MySolarSystemNebulaConstants.cs\" />\n    <Compile Include=\"AppCode\\Game\\SolarSystem\\SolarAreas\\MySolarSystemNeptunConstants.cs\" />\n    <Compile Include=\"AppCode\\Game\\SolarSystem\\SolarAreas\\MySolarSystemRimeConstants.cs\" />\n    <Compile Include=\"AppCode\\Game\\SolarSystem\\SolarAreas\\MySolarSystemRussianTransmitterConstants.cs\" />\n    <Compile Include=\"AppCode\\Game\\SolarSystem\\SolarAreas\\MySolarSystemSaturnConstants.cs\" />\n    <Compile Include=\"AppCode\\Game\\SolarSystem\\SolarAreas\\MySolarSystemSkyConstants.cs\" />\n    <Compile Include=\"AppCode\\Game\\SolarSystem\\SolarAreas\\MySolarSystemSlaverBaseConstants.cs\" />\n    <Compile Include=\"AppCode\\Game\\SolarSystem\\SolarAreas\\MySolarSystemSlaversBase2Constants.cs\" />\n    <Compile Include=\"AppCode\\Game\\SolarSystem\\SolarAreas\\MySolarSystemSmallPirateBase2Constants.cs\" />\n    <Compile Include=\"AppCode\\Game\\SolarSystem\\SolarAreas\\MySolarSystemUranConstants.cs\" />\n    <Compile Include=\"AppCode\\Game\\SolarSystem\\SolarAreas\\MySolarSystemValiantConstants.cs\" />\n    <Compile Include=\"AppCode\\Game\\SolarSystem\\SolarAreas\\MySolarSystemVenusConstants.cs\" />\n    <Compile Include=\"AppCode\\Game\\Textures\\MyTexture.cs\" />\n    <Compile Include=\"AppCode\\Game\\Textures\\MyTexture2D.cs\" />\n    <Compile Include=\"AppCode\\Game\\Textures\\MyTextureCube.cs\" />\n    <Compile Include=\"AppCode\\Game\\Textures\\MyTextureManager.cs\" />\n    <Compile Include=\"AppCode\\Game\\Trailer\\MyTrailerLoad.cs\" />\n    <Compile Include=\"AppCode\\Game\\Trailer\\MyTrailerSave.cs\" />\n    <Compile Include=\"AppCode\\Game\\Trailer\\MyTrailerXml.cs\" />\n    <Compile Include=\"AppCode\\Game\\TransparentGeometry\\MyBillboard.cs\" />\n    <Compile Include=\"AppCode\\Game\\TransparentGeometry\\MyDebrisField.cs\" />\n    <Compile Include=\"AppCode\\Game\\TransparentGeometry\\MyFlashes.cs\" />\n    <Compile Include=\"AppCode\\Game\\TransparentGeometry\\MyIceComet.cs\" />\n    <Compile Include=\"AppCode\\Game\\TransparentGeometry\\MyIceStorm.cs\" />\n    <Compile Include=\"AppCode\\Game\\TransparentGeometry\\MyLightGlare.cs\" />\n    <Compile Include=\"AppCode\\Game\\TransparentGeometry\\MyMeteorWind.cs\" />\n    <Compile Include=\"AppCode\\Game\\TransparentGeometry\\MyNuclearExplosion.cs\" />\n    <Compile Include=\"AppCode\\Game\\TransparentGeometry\\MyParticle.cs\" />\n    <Compile Include=\"AppCode\\Game\\TransparentGeometry\\MyParticleEffects.cs\" />\n    <Compile Include=\"AppCode\\Game\\TransparentGeometry\\MyParticlesDustField.cs\" />\n    <Compile Include=\"AppCode\\Game\\TransparentGeometry\\MyRayCastOcclusionJob.cs\" />\n    <Compile Include=\"AppCode\\Game\\TransparentGeometry\\MySunGlare.cs\" />\n    <Compile Include=\"AppCode\\Game\\TransparentGeometry\\MySunWind.cs\" />\n    <Compile Include=\"AppCode\\Game\\TransparentGeometry\\MyTransparentGeometry.cs\" />\n    <Compile Include=\"AppCode\\Game\\TransparentGeometry\\MyTransparentMaterialConstants.cs\" />\n    <Compile Include=\"AppCode\\Game\\TransparentGeometry\\Particles\\MyAnimatedParticle.cs\" />\n    <Compile Include=\"AppCode\\Game\\TransparentGeometry\\Particles\\MyAnimatedProperty.cs\" />\n    <Compile Include=\"AppCode\\Game\\TransparentGeometry\\Particles\\MyAnimatedProperty2D.cs\" />\n    <Compile Include=\"AppCode\\Game\\TransparentGeometry\\Particles\\MyConstProperty.cs\" />\n    <Compile Include=\"AppCode\\Game\\TransparentGeometry\\Particles\\MyParticleEffect.cs\" />\n    <Compile Include=\"AppCode\\Game\\TransparentGeometry\\Particles\\MyParticleEmitter.cs\" />\n    <Compile Include=\"AppCode\\Game\\TransparentGeometry\\Particles\\MyParticleFactory.cs\" />\n    <Compile Include=\"AppCode\\Game\\TransparentGeometry\\Particles\\MyParticleGeneration.cs\" />\n    <Compile Include=\"AppCode\\Game\\TransparentGeometry\\Particles\\MyParticlesLibrary.cs\" />\n    <Compile Include=\"AppCode\\Game\\TransparentGeometry\\Particles\\MyParticlesManager.cs\" />\n    <Compile Include=\"AppCode\\Game\\Utils\\MyBotDebugUtils.cs\" />\n    <Compile Include=\"AppCode\\Game\\Utils\\MyCamera.cs\" />\n    <Compile Include=\"AppCode\\Game\\Utils\\MyCameraZoomProperties.cs\" />\n    <Compile Include=\"AppCode\\Game\\Utils\\MyConfig.cs\" />\n    <Compile Include=\"AppCode\\Game\\Utils\\MyConstants.cs\" />\n    <Compile Include=\"AppCode\\Game\\Utils\\MyControl.cs\" />\n    <Compile Include=\"AppCode\\Game\\Utils\\MyCuboid.cs\" />\n    <Compile Include=\"AppCode\\Game\\Utils\\MyCustomGraphicsDeviceManagerDX.cs\" />\n    <Compile Include=\"AppCode\\Game\\Utils\\MyDDSFile.cs\" />\n    <Compile Include=\"AppCode\\Game\\Utils\\MyDebugDraw.cs\" />\n    <Compile Include=\"AppCode\\Game\\Utils\\MyDebugDrawCachedLines.cs\" />\n    <Compile Include=\"AppCode\\Game\\Utils\\MyDebugDrawCoordSystem.cs\" />\n    <Compile Include=\"AppCode\\Game\\Utils\\MyDebugDrawCurve.cs\" />\n    <Compile Include=\"AppCode\\Game\\Utils\\MyEnumToStrings.cs\" />\n    <Compile Include=\"AppCode\\Game\\Utils\\MyEnumToStringsGenerated.cs\">\n      <DependentUpon>MyEnumToStringsGenerated.tt</DependentUpon>\n      <AutoGen>True</AutoGen>\n      <DesignTime>True</DesignTime>\n    </Compile>\n    <Compile Include=\"AppCode\\Game\\Utils\\MyFakes.cs\" />\n    <Compile Include=\"AppCode\\Game\\Utils\\MyFullscreenQuad.cs\" />\n    <Compile Include=\"AppCode\\Game\\Utils\\MyGraphicTest.cs\" />\n    <Compile Include=\"AppCode\\Game\\Utils\\MyGridIntersection.cs\" />\n    <Compile Include=\"AppCode\\Game\\Utils\\MyIntersectionResultLineBoundingSphere.cs\" />\n    <Compile Include=\"AppCode\\Game\\Utils\\MyIntersectionResultLineTriangle.cs\" />\n    <Compile Include=\"AppCode\\Game\\Utils\\MyKeysToString.cs\" />\n    <Compile Include=\"AppCode\\Game\\Utils\\MyLineBatch.cs\" />\n    <Compile Include=\"AppCode\\Game\\Utils\\MyLoadingPerformance.cs\" />\n    <Compile Include=\"AppCode\\Game\\Utils\\MyMaterialConstants.cs\" />\n    <Compile Include=\"AppCode\\Game\\Utils\\MyMath.cs\" />\n    <Compile Include=\"AppCode\\Game\\Utils\\MyMemoryProfiler.cs\" />\n    <Compile Include=\"AppCode\\Game\\Utils\\MyMeshHelper.cs\" />\n    <Compile Include=\"AppCode\\Game\\Utils\\MyMissileHelperUtil.cs\" />\n    <Compile Include=\"AppCode\\Game\\Utils\\MyOrientedBoundingBox.cs\" />\n    <Compile Include=\"AppCode\\Game\\Utils\\MyPerformanceTests.cs\" />\n    <Compile Include=\"AppCode\\Game\\Utils\\MyPlugins.cs\" />\n    <Compile Include=\"AppCode\\Game\\Utils\\MyReflectionMethod.cs\" />\n    <Compile Include=\"AppCode\\Game\\Utils\\MyScreenshot.cs\" />\n    <Compile Include=\"AppCode\\Game\\Utils\\MyShipTypeConstants.cs\" />\n    <Compile Include=\"AppCode\\Game\\Utils\\MySimpleObjectDraw.cs\" />\n    <Compile Include=\"AppCode\\Game\\Utils\\MySmallShipArmorTypeConstants.cs\" />\n    <Compile Include=\"AppCode\\Game\\Utils\\MySmallShipEngineTypeConstants.cs\" />\n    <Compile Include=\"AppCode\\Game\\Utils\\MySpectator.cs\" />\n    <Compile Include=\"AppCode\\Game\\Utils\\MySpriteListVideoPlayer.cs\" />\n    <Compile Include=\"AppCode\\Game\\Utils\\MyStateObjects.cs\" />\n    <Compile Include=\"AppCode\\Game\\Utils\\MyStopwatch.cs\" />\n    <Compile Include=\"AppCode\\Game\\Utils\\MyStructs.cs\" />\n    <Compile Include=\"AppCode\\Game\\Utils\\MySystemTimer.cs\" />\n    <Compile Include=\"AppCode\\Game\\Utils\\MyTextureAtlas.cs\" />\n    <Compile Include=\"AppCode\\Game\\Utils\\MyThirdPersonSpectator.cs\" />\n    <Compile Include=\"AppCode\\Game\\Utils\\MyUtilRandomVector3ByDeviatingVector.cs\" />\n    <Compile Include=\"AppCode\\Game\\Utils\\MyUtils.cs\" />\n    <Compile Include=\"AppCode\\Game\\Utils\\MyVertexFormats.cs\" />\n    <Compile Include=\"AppCode\\Game\\Utils\\MyWindowsAPIWrapper.cs\" />\n    <Compile Include=\"AppCode\\Game\\Utils\\WM.cs\" />\n    <Compile Include=\"AppCode\\Game\\VideoMode\\MyVideoModeAntiAliasing.cs\" />\n    <Compile Include=\"AppCode\\Game\\VideoMode\\MyVideoModeAspectRatio.cs\" />\n    <Compile Include=\"AppCode\\Game\\VideoMode\\MyVideoModeManager.cs\" />\n    <Compile Include=\"AppCode\\Game\\VideoMode\\MyVideoModeStructs.cs\" />\n    <Compile Include=\"AppCode\\Game\\Voxels\\MyDataCellStitcher.cs\" />\n    <Compile Include=\"AppCode\\Game\\Voxels\\MyLocalVoxelTrianglesCache.cs\" />\n    <Compile Include=\"AppCode\\Game\\Voxels\\MyMeshSimplifier.cs\" />\n    <Compile Include=\"AppCode\\Game\\Voxels\\MyVoxelCacheCellRender.cs\" />\n    <Compile Include=\"AppCode\\Game\\Voxels\\MyVoxelCacheCellRenderBatch.cs\" />\n    <Compile Include=\"AppCode\\Game\\Voxels\\MyVoxelCacheCellRenderHelper.cs\" />\n    <Compile Include=\"AppCode\\Game\\Voxels\\MyVoxelCacheData.cs\" />\n    <Compile Include=\"AppCode\\Game\\Voxels\\MyVoxelContentCell.cs\" />\n    <Compile Include=\"AppCode\\Game\\Voxels\\MyVoxelContentCellContent.cs\" />\n    <Compile Include=\"AppCode\\Game\\Voxels\\MyVoxelContentCellContents.cs\" />\n    <Compile Include=\"AppCode\\Game\\Voxels\\MyVoxelElement.cs\" />\n    <Compile Include=\"AppCode\\Game\\Voxels\\MyVoxelFiles.cs\" />\n    <Compile Include=\"AppCode\\Game\\Voxels\\MyVoxelGenerator.cs\" />\n    <Compile Include=\"AppCode\\Game\\Voxels\\MyVoxelImport.cs\" />\n    <Compile Include=\"AppCode\\Game\\Voxels\\MyVoxelMapOreDepositCell.cs\" />\n    <Compile Include=\"AppCode\\Game\\Voxels\\MyVoxelMapOreMaterials.cs\" />\n    <Compile Include=\"AppCode\\Game\\Voxels\\MyVoxelMaps.cs\" />\n    <Compile Include=\"AppCode\\Game\\Voxels\\MyVoxelMaterial.cs\" />\n    <Compile Include=\"AppCode\\Game\\Voxels\\MyVoxelMaterialCell.cs\" />\n    <Compile Include=\"AppCode\\Game\\Voxels\\MyVoxelMaterials.cs\" />\n    <Compile Include=\"AppCode\\Game\\Voxels\\MyVoxelPrecalc.cs\" />\n    <Compile Include=\"AppCode\\Game\\Voxels\\MyVoxelPrecalcConstants.cs\" />\n    <Compile Include=\"AppCode\\Game\\Voxels\\MyVoxelPrecalcTask.cs\" />\n    <Compile Include=\"AppCode\\Game\\Voxels\\MyVoxelPrecalcWork.cs\" />\n    <Compile Include=\"AppCode\\Game\\World\\Global\\MyActorConstants.cs\" />\n    <Compile Include=\"AppCode\\Game\\World\\Global\\MyFactionConstants.cs\" />\n    <Compile Include=\"AppCode\\Game\\World\\Global\\MyFactions.cs\" />\n    <Compile Include=\"AppCode\\Game\\World\\Global\\MyGamePlayCheats.cs\" />\n    <Compile Include=\"AppCode\\Game\\World\\Global\\MyGamePlayConstants.cs\" />\n    <Compile Include=\"AppCode\\Game\\World\\Global\\MyGameWorld.cs\" />\n    <Compile Include=\"AppCode\\Game\\World\\Global\\MySecretRooms.cs\" />\n    <Compile Include=\"AppCode\\Game\\World\\MyPlayer.cs\" />\n    <Compile Include=\"AppCode\\Game\\World\\MyPlayerFriends.cs\" />\n    <Compile Include=\"AppCode\\Game\\World\\MySector.cs\" />\n    <Compile Include=\"AppCode\\Networking\\MasterService\\MyMasterServiceClient.cs\" />\n    <Compile Include=\"AppCode\\Networking\\MyLocalCache.cs\" />\n    <Compile Include=\"AppCode\\Networking\\MySteam.cs\" />\n    <Compile Include=\"AppCode\\Networking\\MySteamStats.cs\" />\n    <Compile Include=\"AppCode\\Networking\\SectorService\\MyLoggingBehavior.cs\" />\n    <Compile Include=\"AppCode\\Networking\\SectorService\\MySectorServerCallback.cs\" />\n    <Compile Include=\"AppCode\\Networking\\SectorService\\MySectorServiceClient.cs\" />\n    <Compile Include=\"AppCode\\Networking\\SectorService\\MyServiceException.cs\" />\n    <Compile Include=\"AppCode\\Physics\\Collisions\\Interactions\\MyBoxBoxInteraction.cs\" />\n    <Compile Include=\"AppCode\\Physics\\Collisions\\Interactions\\MyBoxBoxSensorInteraction.cs\" />\n    <Compile Include=\"AppCode\\Physics\\Collisions\\Interactions\\MyBoxCapsuleInteraction.cs\" />\n    <Compile Include=\"AppCode\\Physics\\Collisions\\Interactions\\MyBoxOtherSensorInteraction.cs\" />\n    <Compile Include=\"AppCode\\Physics\\Collisions\\Interactions\\MyBoxSphereSensorInteraction.cs\" />\n    <Compile Include=\"AppCode\\Physics\\Collisions\\Interactions\\MyBoxTriangleMeshInteraction.cs\" />\n    <Compile Include=\"AppCode\\Physics\\Collisions\\Interactions\\MyBoxVoxelInteraction.cs\" />\n    <Compile Include=\"AppCode\\Physics\\Collisions\\Interactions\\MyCapsuleCapsuleInteraction.cs\" />\n    <Compile Include=\"AppCode\\Physics\\Collisions\\Interactions\\MyCapsuleTriangleMeshInteraction.cs\" />\n    <Compile Include=\"AppCode\\Physics\\Collisions\\Interactions\\MyCapsuleVoxelInteraction.cs\" />\n    <Compile Include=\"AppCode\\Physics\\Collisions\\Interactions\\MyElementInteraction.cs\" />\n    <Compile Include=\"AppCode\\Physics\\Collisions\\Interactions\\MyInteractionInfo.cs\" />\n    <Compile Include=\"AppCode\\Physics\\Collisions\\Interactions\\MyRBInteractionModule.cs\" />\n    <Compile Include=\"AppCode\\Physics\\Collisions\\Interactions\\MySensorInteraction.cs\" />\n    <Compile Include=\"AppCode\\Physics\\Collisions\\Interactions\\MySphereBoxInteraction.cs\" />\n    <Compile Include=\"AppCode\\Physics\\Collisions\\Interactions\\MySphereBoxSensorInteraction.cs\" />\n    <Compile Include=\"AppCode\\Physics\\Collisions\\Interactions\\MySphereCapsuleInteraction.cs\" />\n    <Compile Include=\"AppCode\\Physics\\Collisions\\Interactions\\MySphereOtherSensorInteraction.cs\" />\n    <Compile Include=\"AppCode\\Physics\\Collisions\\Interactions\\MySphereSphereInteraction.cs\" />\n    <Compile Include=\"AppCode\\Physics\\Collisions\\Interactions\\MySphereSphereSensorInteraction.cs\" />\n    <Compile Include=\"AppCode\\Physics\\Collisions\\Interactions\\MySphereTriangleMeshInteraction.cs\" />\n    <Compile Include=\"AppCode\\Physics\\Collisions\\Interactions\\MySphereVoxelInteraction.cs\" />\n    <Compile Include=\"AppCode\\Physics\\Collisions\\Interactions\\MyTriangle.cs\" />\n    <Compile Include=\"AppCode\\Physics\\Collisions\\Interactions\\MyTriangleCache.cs\" />\n    <Compile Include=\"AppCode\\Physics\\Collisions\\MyElement.cs\" />\n    <Compile Include=\"AppCode\\Physics\\Collisions\\MyElementDesc.cs\" />\n    <Compile Include=\"AppCode\\Physics\\Collisions\\MyFiltering.cs\" />\n    <Compile Include=\"AppCode\\Physics\\Collisions\\MyGroupMask.cs\" />\n    <Compile Include=\"AppCode\\Physics\\Collisions\\MyLineSegmentOverlapResult.cs\" />\n    <Compile Include=\"AppCode\\Physics\\Collisions\\MyQuantizedBvhAdapter.cs\" />\n    <Compile Include=\"AppCode\\Physics\\Collisions\\MyQuantizedBvhResult.cs\" />\n    <Compile Include=\"AppCode\\Physics\\Collisions\\RBElements\\MyRBElement.cs\" />\n    <Compile Include=\"AppCode\\Physics\\Collisions\\RBElements\\MyRBElementDefs.cs\" />\n    <Compile Include=\"AppCode\\Physics\\Collisions\\RBElements\\MyRBElementDesc.cs\" />\n    <Compile Include=\"AppCode\\Physics\\Collisions\\RBElements\\MyRBMaterial.cs\" />\n    <Compile Include=\"AppCode\\Physics\\Collisions\\RBElements\\Types\\Geometry\\MyBox.cs\" />\n    <Compile Include=\"AppCode\\Physics\\Collisions\\RBElements\\Types\\MyRBBoxElement.cs\" />\n    <Compile Include=\"AppCode\\Physics\\Collisions\\RBElements\\Types\\MyRBCapsuleElement.cs\" />\n    <Compile Include=\"AppCode\\Physics\\Collisions\\RBElements\\Types\\MyRBSphereElement.cs\" />\n    <Compile Include=\"AppCode\\Physics\\Collisions\\RBElements\\Types\\MyRBTriangleMeshElement.cs\" />\n    <Compile Include=\"AppCode\\Physics\\Collisions\\RBElements\\Types\\MyRBVoxelElement.cs\" />\n    <Compile Include=\"AppCode\\Physics\\Collisions\\SensorElements\\MyBoxSensorElement.cs\" />\n    <Compile Include=\"AppCode\\Physics\\Collisions\\SensorElements\\MySensorElement.cs\" />\n    <Compile Include=\"AppCode\\Physics\\Collisions\\SensorElements\\MySensorElementDefs.cs\" />\n    <Compile Include=\"AppCode\\Physics\\Collisions\\SensorElements\\MySensorElementDesc.cs\" />\n    <Compile Include=\"AppCode\\Physics\\Collisions\\SensorElements\\MySphereSensorElement.cs\" />\n    <Compile Include=\"AppCode\\Physics\\Core\\Broadphase\\MyBroadphase.cs\" />\n    <Compile Include=\"AppCode\\Physics\\Core\\Broadphase\\MyDAABBTreeBp.cs\" />\n    <Compile Include=\"AppCode\\Physics\\Core\\Modules\\MyContactConstraintModule.cs\" />\n    <Compile Include=\"AppCode\\Physics\\Core\\Modules\\MyRigidBodyModule.cs\" />\n    <Compile Include=\"AppCode\\Physics\\Core\\Modules\\MySensorInteractionModule.cs\" />\n    <Compile Include=\"AppCode\\Physics\\Core\\Modules\\MySensorModule.cs\" />\n    <Compile Include=\"AppCode\\Physics\\Core\\MyPhysics.cs\" />\n    <Compile Include=\"AppCode\\Physics\\Core\\MyPhysicsConfig.cs\" />\n    <Compile Include=\"AppCode\\Physics\\Core\\MyPhysicsObjects.cs\" />\n    <Compile Include=\"AppCode\\Physics\\Core\\MySimulationHandler.cs\" />\n    <Compile Include=\"AppCode\\Physics\\Core\\Prunning\\MyDynamicAABBTree.cs\" />\n    <Compile Include=\"AppCode\\Physics\\Dynamics\\Base\\Constaints\\MyRBConstraint.cs\" />\n    <Compile Include=\"AppCode\\Physics\\Dynamics\\Base\\Constaints\\MyRBContactConstraint.cs\" />\n    <Compile Include=\"AppCode\\Physics\\Dynamics\\Base\\Constaints\\MyRBSolverConstraint.cs\" />\n    <Compile Include=\"AppCode\\Physics\\Dynamics\\Base\\MyRBIslandGeneration.cs\" />\n    <Compile Include=\"AppCode\\Physics\\Dynamics\\Base\\MyRBIslandNSolver.cs\" />\n    <Compile Include=\"AppCode\\Physics\\Dynamics\\Base\\MyRBIslandSleepState.cs\" />\n    <Compile Include=\"AppCode\\Physics\\Dynamics\\Base\\MyRBSolverBody.cs\" />\n    <Compile Include=\"AppCode\\Physics\\Dynamics\\Base\\MyRigidBodyIsland.cs\" />\n    <Compile Include=\"AppCode\\Physics\\Dynamics\\MyContactEventHandler.cs\" />\n    <Compile Include=\"AppCode\\Physics\\Dynamics\\MyContactModifyEventHandler.cs\" />\n    <Compile Include=\"AppCode\\Physics\\Dynamics\\MyRigidBody.cs\" />\n    <Compile Include=\"AppCode\\Physics\\Dynamics\\MyRigidBodyDefs.cs\" />\n    <Compile Include=\"AppCode\\Physics\\Dynamics\\MyRigidBodyDesc.cs\" />\n    <Compile Include=\"AppCode\\Physics\\Dynamics\\MyRigidBodyEvent.cs\" />\n    <Compile Include=\"AppCode\\Physics\\Dynamics\\MySensor.cs\" />\n    <Compile Include=\"AppCode\\Physics\\Dynamics\\MySensorDesc.cs\" />\n    <Compile Include=\"AppCode\\Physics\\Dynamics\\MySensorEventHandler.cs\" />\n    <Compile Include=\"AppCode\\Physics\\Utils\\MyBoundingBoxHelper.cs\" />\n    <Compile Include=\"AppCode\\Physics\\Utils\\MyDistance.cs\" />\n    <Compile Include=\"AppCode\\Physics\\Utils\\MyElementHelper.cs\" />\n    <Compile Include=\"AppCode\\Physics\\Utils\\MyPhysUtils.cs\" />\n    <Compile Include=\"AppCode\\Physics\\Utils\\MyRingBuffer.cs\" />\n    <Compile Include=\"AppCode\\Physics\\Utils\\MySegment.cs\" />\n    <Compile Include=\"AppCode\\Physics\\Utils\\MyTransform.cs\" />\n    <Compile Include=\"AppCode\\Toolkit\\DShow\\DsBugWO.cs\" />\n    <Compile Include=\"AppCode\\Toolkit\\DShow\\DsControl.cs\" />\n    <Compile Include=\"AppCode\\Toolkit\\DShow\\DsCore.cs\" />\n    <Compile Include=\"AppCode\\Toolkit\\DShow\\DsDevice.cs\" />\n    <Compile Include=\"AppCode\\Toolkit\\DShow\\DsDVD.cs\" />\n    <Compile Include=\"AppCode\\Toolkit\\DShow\\DsExtend.cs\" />\n    <Compile Include=\"AppCode\\Toolkit\\DShow\\DsUtils.cs\" />\n    <Compile Include=\"AppCode\\Toolkit\\DShow\\DsUuids.cs\" />\n    <Compile Include=\"AppCode\\Toolkit\\DShow\\QEdit.cs\" />\n    <Compile Include=\"AppCode\\Toolkit\\DShow\\VideoPlayer.cs\" />\n    <Compile Include=\"AppCode\\Toolkit\\Game.cs\" />\n    <Compile Include=\"AppCode\\Toolkit\\GameGraphicsParameters.cs\" />\n    <Compile Include=\"AppCode\\Toolkit\\GamePlatform.cs\" />\n    <Compile Include=\"AppCode\\Toolkit\\GamePlatformDesktop.cs\" />\n    <Compile Include=\"AppCode\\Toolkit\\GameTime.cs\" />\n    <Compile Include=\"AppCode\\Toolkit\\GameWindow.cs\" />\n    <Compile Include=\"AppCode\\Toolkit\\GameWindowDesktop.cs\" />\n    <Compile Include=\"AppCode\\Toolkit\\GameWindowForm.cs\">\n      <SubType>Form</SubType>\n    </Compile>\n    <Compile Include=\"AppCode\\Toolkit\\GraphicsDeviceInformation.cs\" />\n    <Compile Include=\"AppCode\\Toolkit\\GraphicsDeviceManager.cs\" />\n    <Compile Include=\"AppCode\\Toolkit\\Graphics\\BlendState.cs\" />\n    <Compile Include=\"AppCode\\Toolkit\\Graphics\\DepthStencilState.cs\" />\n    <Compile Include=\"AppCode\\Toolkit\\Graphics\\GraphicsAdapter.cs\" />\n    <Compile Include=\"AppCode\\Toolkit\\Graphics\\GraphicsResource.cs\" />\n    <Compile Include=\"AppCode\\Toolkit\\Graphics\\RasterizerState.cs\" />\n    <Compile Include=\"AppCode\\Toolkit\\Graphics\\SamplerState.cs\" />\n    <Compile Include=\"AppCode\\Toolkit\\Graphics\\SpriteBatch.cs\" />\n    <Compile Include=\"AppCode\\Toolkit\\Graphics\\SpriteEffects.cs\" />\n    <Compile Include=\"AppCode\\Toolkit\\Graphics\\SpriteFont.cs\" />\n    <Compile Include=\"AppCode\\Toolkit\\Graphics\\SpriteFontContentReader.cs\" />\n    <Compile Include=\"AppCode\\Toolkit\\Graphics\\SpriteSortMode.cs\" />\n    <Compile Include=\"AppCode\\Toolkit\\Input\\Keys.cs\" />\n    <Compile Include=\"AppCode\\Toolkit\\Input\\MyHidInputArgs.cs\" />\n    <Compile Include=\"AppCode\\Toolkit\\Input\\MyKeyboardBuffer.cs\" />\n    <Compile Include=\"AppCode\\Toolkit\\Input\\MyKeyboardInputArgs.cs\" />\n    <Compile Include=\"AppCode\\Toolkit\\Input\\MyKeyboardState.cs\" />\n    <Compile Include=\"AppCode\\Toolkit\\Input\\MyKeyTranslationTable.cs\" />\n    <Compile Include=\"AppCode\\Toolkit\\Input\\MyMouseInputArgs.cs\" />\n    <Compile Include=\"AppCode\\Toolkit\\Input\\MyMouseState.cs\" />\n    <Compile Include=\"AppCode\\Toolkit\\Input\\MyRawInput.cs\" />\n    <Compile Include=\"AppCode\\Toolkit\\Input\\MyWindowsKeyboard.cs\" />\n    <Compile Include=\"AppCode\\Toolkit\\Input\\MyWindowsMouse.cs\" />\n    <Compile Include=\"AppCode\\Toolkit\\Input\\RawHid.cs\" />\n    <Compile Include=\"AppCode\\Toolkit\\Input\\RawInput.cs\" />\n    <Compile Include=\"AppCode\\Toolkit\\Input\\RawInputHeader.cs\" />\n    <Compile Include=\"AppCode\\Toolkit\\Input\\RawInputInner0.cs\" />\n    <Compile Include=\"AppCode\\Toolkit\\Input\\RawKeyboard.cs\" />\n    <Compile Include=\"AppCode\\Toolkit\\Input\\RawMouse.cs\" />\n    <Compile Include=\"AppCode\\Toolkit\\PreparingDeviceSettingsEventArgs.cs\" />\n    <Compile Include=\"AppCode\\Toolkit\\SharpDXHelper.cs\" />\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n    <Compile Include=\"Resources\\MyDialogues.Designer.cs\">\n      <DependentUpon>MyDialogues.resx</DependentUpon>\n      <AutoGen>True</AutoGen>\n      <DesignTime>True</DesignTime>\n    </Compile>\n    <Compile Include=\"Resources\\MyTexts.Designer.cs\">\n      <DependentUpon>MyTexts.resx</DependentUpon>\n      <AutoGen>True</AutoGen>\n      <DesignTime>True</DesignTime>\n    </Compile>\n    <Compile Include=\"Service References\\AppCode.Networking.MasterService\\Reference.cs\">\n      <AutoGen>True</AutoGen>\n      <DesignTime>True</DesignTime>\n      <DependentUpon>Reference.svcmap</DependentUpon>\n    </Compile>\n    <Compile Include=\"Service References\\AppCode.Networking.SectorService\\Reference.cs\">\n      <AutoGen>True</AutoGen>\n      <DesignTime>True</DesignTime>\n      <DependentUpon>Reference.svcmap</DependentUpon>\n    </Compile>\n  </ItemGroup>\n  <ItemGroup>\n    <None Include=\"Properties\\DataSources\\Microsoft.Xna.Framework.Vector3.datasource\" />\n    <None Include=\"Properties\\DataSources\\MinerWars.CommonLIB.AppCode.Networking.MyMwcSectorIdentifier.datasource\" />\n    <None Include=\"Properties\\DataSources\\MinerWars.CommonLIB.AppCode.Networking.MyMwcUserDetail.datasource\" />\n    <None Include=\"Properties\\DataSources\\System.Net.IPEndPoint.datasource\" />\n    <None Include=\"Service References\\AppCode.Networking.MasterService\\Arrays.xsd\">\n      <SubType>Designer</SubType>\n    </None>\n    <None Include=\"Service References\\AppCode.Networking.MasterService\\MinerWars.CommonLIB.AppCode.Networking.Services.xsd\">\n      <SubType>Designer</SubType>\n    </None>\n    <None Include=\"Service References\\AppCode.Networking.MasterService\\MinerWars.CommonLIB.AppCode.Networking.xsd\">\n      <SubType>Designer</SubType>\n    </None>\n    <None Include=\"Service References\\AppCode.Networking.MasterService\\MinerWars.MasterServerLIB.MasterService.xsd\">\n      <SubType>Designer</SubType>\n    </None>\n    <None Include=\"Service References\\AppCode.Networking.MasterService\\service.wsdl\" />\n    <None Include=\"Service References\\AppCode.Networking.MasterService\\service.xsd\">\n      <SubType>Designer</SubType>\n    </None>\n    <None Include=\"Service References\\AppCode.Networking.MasterService\\service1.xsd\">\n      <SubType>Designer</SubType>\n    </None>\n    <None Include=\"Service References\\AppCode.Networking.SectorService\\Arrays.xsd\">\n      <SubType>Designer</SubType>\n    </None>\n    <None Include=\"Service References\\AppCode.Networking.SectorService\\Microsoft.Xna.Framework.xsd\">\n      <SubType>Designer</SubType>\n    </None>\n    <None Include=\"Service References\\AppCode.Networking.SectorService\\MinerWars.AppCode.Networking.SectorService.ExportInfo.datasource\">\n      <DependentUpon>Reference.svcmap</DependentUpon>\n    </None>\n    <None Include=\"Service References\\AppCode.Networking.SectorService\\MinerWars.AppCode.Networking.SectorService.MyUserInfo.datasource\">\n      <DependentUpon>Reference.svcmap</DependentUpon>\n    </None>\n    <None Include=\"Service References\\AppCode.Networking.SectorService\\MinerWars.CommonLIB.AppCode.Networking.Services.xsd\">\n      <SubType>Designer</SubType>\n    </None>\n    <None Include=\"Service References\\AppCode.Networking.SectorService\\MinerWars.CommonLIB.AppCode.Networking.xsd\">\n      <SubType>Designer</SubType>\n    </None>\n    <None Include=\"Service References\\AppCode.Networking.SectorService\\MinerWars.CommonLIB.AppCode.Utils.xsd\">\n      <SubType>Designer</SubType>\n    </None>\n    <None Include=\"Service References\\AppCode.Networking.SectorService\\SectorServerLIB.SectorService.xsd\">\n      <SubType>Designer</SubType>\n    </None>\n    <None Include=\"Service References\\AppCode.Networking.SectorService\\service.wsdl\" />\n    <None Include=\"Service References\\AppCode.Networking.SectorService\\service.xsd\">\n      <SubType>Designer</SubType>\n    </None>\n    <None Include=\"Service References\\AppCode.Networking.SectorService\\service1.xsd\">\n      <SubType>Designer</SubType>\n    </None>\n  </ItemGroup>\n  <ItemGroup>\n    <None Include=\"AppCode\\Game\\Localization\\MyDialoguesWrapperGenerated.tt\">\n      <Generator>TextTemplatingFileGenerator</Generator>\n      <LastGenOutput>MyDialoguesWrapperGenerated.cs</LastGenOutput>\n    </None>\n    <None Include=\"AppCode\\Game\\Localization\\MyTextsWrapperGenerated.tt\">\n      <Generator>TextTemplatingFileGenerator</Generator>\n      <LastGenOutput>MyTextsWrapperGenerated.cs</LastGenOutput>\n    </None>\n    <None Include=\"AppCode\\Game\\Utils\\MyEnumToStringsGenerated.tt\">\n      <Generator>TextTemplatingFileGenerator</Generator>\n      <LastGenOutput>MyEnumToStringsGenerated.cs</LastGenOutput>\n    </None>\n  </ItemGroup>\n  <ItemGroup>\n    <Service Include=\"{508349B6-6B84-4DF5-91F0-309BEEBAD82D}\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ProjectReference Include=\"..\\CommonLIB\\MinerWarsCommonLIB.csproj\">\n      <Project>{2C96F0AB-7962-4B73-A075-B0E0B09F6195}</Project>\n      <Name>MinerWarsCommonLIB</Name>\n    </ProjectReference>\n    <ProjectReference Include=\"..\\Library.Trace\\Library.Trace.csproj\">\n      <Project>{8E36615C-ACDA-4002-BF65-8032577E754C}</Project>\n      <Name>Library.Trace</Name>\n    </ProjectReference>\n    <ProjectReference Include=\"..\\Library\\Library.csproj\">\n      <Project>{26FE022E-42AB-40BE-BA9D-97CBE34E7D99}</Project>\n      <Name>Library</Name>\n    </ProjectReference>\n    <ProjectReference Include=\"..\\MinerWars.GameServices\\MinerWars.GameServices.csproj\">\n      <Project>{7B22B556-B0CD-4EA0-A638-1F33975C7764}</Project>\n      <Name>MinerWars.GameServices</Name>\n    </ProjectReference>\n    <ProjectReference Include=\"..\\MinerWarsMath\\MinerWarsMath.csproj\">\n      <Project>{40CE67D5-C89F-4A56-AE52-85DB1BEA07FE}</Project>\n      <Name>MinerWarsMath</Name>\n    </ProjectReference>\n    <ProjectReference Include=\"..\\MinerWarsPluginAPI\\MinerWarsPluginAPI.csproj\">\n      <Project>{5609DC59-63E9-4262-90BB-4E31329244B1}</Project>\n      <Name>MinerWarsPluginAPI</Name>\n    </ProjectReference>\n    <ProjectReference Include=\"..\\ParallelTasks\\ParallelTasks.csproj\">\n      <Project>{D0B69D3D-70AD-4C7C-BEFB-AFF902AB9BD2}</Project>\n      <Name>ParallelTasks</Name>\n    </ProjectReference>\n  </ItemGroup>\n  <ItemGroup>\n    <WCFMetadata Include=\"Service References\\\" />\n  </ItemGroup>\n  <ItemGroup>\n    <WCFMetadataStorage Include=\"Service References\\AppCode.Networking.MasterService\\\" />\n    <WCFMetadataStorage Include=\"Service References\\AppCode.Networking.SectorService\\\" />\n  </ItemGroup>\n  <ItemGroup>\n    <None Include=\"Service References\\AppCode.Networking.MasterService\\configuration91.svcinfo\" />\n  </ItemGroup>\n  <ItemGroup>\n    <None Include=\"Service References\\AppCode.Networking.MasterService\\configuration.svcinfo\" />\n  </ItemGroup>\n  <ItemGroup>\n    <None Include=\"Service References\\AppCode.Networking.MasterService\\Reference.svcmap\">\n      <Generator>WCF Proxy Generator</Generator>\n      <LastGenOutput>Reference.cs</LastGenOutput>\n    </None>\n  </ItemGroup>\n  <ItemGroup>\n    <None Include=\"Service References\\AppCode.Networking.SectorService\\configuration91.svcinfo\" />\n  </ItemGroup>\n  <ItemGroup>\n    <None Include=\"Service References\\AppCode.Networking.SectorService\\configuration.svcinfo\" />\n  </ItemGroup>\n  <ItemGroup>\n    <None Include=\"Service References\\AppCode.Networking.SectorService\\Reference.svcmap\">\n      <Generator>WCF Proxy Generator</Generator>\n      <LastGenOutput>Reference.cs</LastGenOutput>\n    </None>\n  </ItemGroup>\n  <ItemGroup>\n    <EmbeddedResource Include=\"Resources\\MyDialogues.cs.resx\" />\n    <EmbeddedResource Include=\"Resources\\MyDialogues.resx\">\n      <Generator>ResXFileCodeGenerator</Generator>\n      <LastGenOutput>MyDialogues.Designer.cs</LastGenOutput>\n      <SubType>Designer</SubType>\n    </EmbeddedResource>\n    <EmbeddedResource Include=\"Resources\\MyTexts.cs.resx\">\n      <SubType>Designer</SubType>\n    </EmbeddedResource>\n    <EmbeddedResource Include=\"Resources\\MyTexts.resx\">\n      <Generator>ResXFileCodeGenerator</Generator>\n      <LastGenOutput>MyTexts.Designer.cs</LastGenOutput>\n      <SubType>Designer</SubType>\n    </EmbeddedResource>\n  </ItemGroup>\n  <Import Project=\"$(MSBuildToolsPath)\\Microsoft.CSharp.targets\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets. -->\n  <Target Name=\"BeforeBuild\">\n    <!--\n    <Exec Command=\"echo %time% Running templates...\" />\n    <Exec Command=\"RunTemplate.bat $(ProjectDir)AppCode\\Game\\Localization\\MyTextsWrapperGenerated\" />\n    <Exec Command=\"RunTemplate.bat $(ProjectDir)AppCode\\Game\\Localization\\MyDialoguesWrapperGenerated\" />\n    <Exec Command=\"RunTemplate.bat $(ProjectDir)AppCode\\Game\\Utils\\MyEnumToStringsGenerated\" />\n    <Exec Command=\"echo %time% Templates completed\" />\n    -->\n  </Target>\n</Project>"
  },
  {
    "path": "Sources/MinerWars.GameLib/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"MinerWars.GameLib\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"MinerWars.GameLib\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2013\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Setting ComVisible to false makes the types in this assembly not visible \n// to COM components.  If you need to access a type in this assembly from \n// COM, set the ComVisible attribute to true on that type.\n[assembly: ComVisible(false)]\n\n// The following GUID is for the ID of the typelib if this project is exposed to COM\n[assembly: Guid(\"816edd78-fa04-48ab-b36d-5d4cf65115c0\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/Resources/MyDialogues.Designer.cs",
    "content": "﻿//------------------------------------------------------------------------------\n// <auto-generated>\n//     This code was generated by a tool.\n//     Runtime Version:4.0.30319.296\n//\n//     Changes to this file may cause incorrect behavior and will be lost if\n//     the code is regenerated.\n// </auto-generated>\n//------------------------------------------------------------------------------\n\nnamespace MinerWars.Resources {\n    using System;\n    \n    \n    /// <summary>\n    ///   A strongly-typed resource class, for looking up localized strings, etc.\n    /// </summary>\n    // This class was auto-generated by the StronglyTypedResourceBuilder\n    // class via a tool like ResGen or Visual Studio.\n    // To add or remove a member, edit your .ResX file then rerun ResGen\n    // with the /str option, or rebuild your VS project.\n    [global::System.CodeDom.Compiler.GeneratedCodeAttribute(\"System.Resources.Tools.StronglyTypedResourceBuilder\", \"4.0.0.0\")]\n    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\n    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]\n    internal class MyDialogues {\n        \n        private static global::System.Resources.ResourceManager resourceMan;\n        \n        private static global::System.Globalization.CultureInfo resourceCulture;\n        \n        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute(\"Microsoft.Performance\", \"CA1811:AvoidUncalledPrivateCode\")]\n        internal MyDialogues() {\n        }\n        \n        /// <summary>\n        ///   Returns the cached ResourceManager instance used by this class.\n        /// </summary>\n        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]\n        internal static global::System.Resources.ResourceManager ResourceManager {\n            get {\n                if (object.ReferenceEquals(resourceMan, null)) {\n                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager(\"MinerWars.Resources.MyDialogues\", typeof(MyDialogues).Assembly);\n                    resourceMan = temp;\n                }\n                return resourceMan;\n            }\n        }\n        \n        /// <summary>\n        ///   Overrides the current thread's CurrentUICulture property for all\n        ///   resource lookups using this strongly typed resource class.\n        /// </summary>\n        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]\n        internal static global::System.Globalization.CultureInfo Culture {\n            get {\n                return resourceCulture;\n            }\n            set {\n                resourceCulture = value;\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Here we are. According to the triangulation, ….\n        /// </summary>\n        internal static string Dlg_AlienGate_0100 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0100\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …the source of the signal is somewhere nearby..\n        /// </summary>\n        internal static string Dlg_AlienGate_0101 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0101\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to How precise are the scans?.\n        /// </summary>\n        internal static string Dlg_AlienGate_0102 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0102\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Plus or minus a few hundred kilometers, I’d say..\n        /// </summary>\n        internal static string Dlg_AlienGate_0103 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0103\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I can live with that. .\n        /// </summary>\n        internal static string Dlg_AlienGate_0104 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0104\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Enemy ships on radar! What are they doing here?.\n        /// </summary>\n        internal static string Dlg_AlienGate_0200 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0200\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Take them down! Quick. .\n        /// </summary>\n        internal static string Dlg_AlienGate_0201 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0201\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I don’t like this; we’d better be careful..\n        /// </summary>\n        internal static string Dlg_AlienGate_0300 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0300\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Continue searching, but stay on high alert. .\n        /// </summary>\n        internal static string Dlg_AlienGate_0301 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0301\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Guys, let’s try a new spot. I transmitted each of you some coordinates to check. .\n        /// </summary>\n        internal static string Dlg_AlienGate_0400 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0400\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Affirmative..\n        /// </summary>\n        internal static string Dlg_AlienGate_0401 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0401\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Got it..\n        /// </summary>\n        internal static string Dlg_AlienGate_0402 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0402\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Roger that..\n        /// </summary>\n        internal static string Dlg_AlienGate_0403 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0403\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I’ll keep scanning the area from afar..\n        /// </summary>\n        internal static string Dlg_AlienGate_0404 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0404\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sorry to disturb you, guys, but I’ve got ships incoming. .\n        /// </summary>\n        internal static string Dlg_AlienGate_0500 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0500\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I’m picking a signal… it’s….\n        /// </summary>\n        internal static string Dlg_AlienGate_0501 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0501\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to How nice to see you again, my… friends!.\n        /// </summary>\n        internal static string Dlg_AlienGate_0502 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0502\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Damn it. Two Russian motherships are approaching, too. .\n        /// </summary>\n        internal static string Dlg_AlienGate_0503 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0503\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to What is this, a family reunion? .\n        /// </summary>\n        internal static string Dlg_AlienGate_0504 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0504\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to What are you doing here? And what’s with your new Russian buddies?.\n        /// </summary>\n        internal static string Dlg_AlienGate_0505 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0505\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Perhaps we were just in the neighborhood and your behavior piqued our curiosity. .\n        /// </summary>\n        internal static string Dlg_AlienGate_0506 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0506\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Spit it out, Francis. What are you up to?.\n        /// </summary>\n        internal static string Dlg_AlienGate_0507 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0507\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tracking device. On your mother ship. .\n        /// </summary>\n        internal static string Dlg_AlienGate_0508 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0508\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I’ve been following you for quite some time..\n        /// </summary>\n        internal static string Dlg_AlienGate_0509 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0509\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to After all, business is business..\n        /// </summary>\n        internal static string Dlg_AlienGate_0510 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0510\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to How much did they offer you?.\n        /// </summary>\n        internal static string Dlg_AlienGate_0511 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0511\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Come on, how much?.\n        /// </summary>\n        internal static string Dlg_AlienGate_0512 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0512\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Let’s just say I could buy half of Rime with the deposit alone. .\n        /// </summary>\n        internal static string Dlg_AlienGate_0513 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0513\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Nonsense, the Russians don’t have that kind of cash. .\n        /// </summary>\n        internal static string Dlg_AlienGate_0514 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0514\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You’d be surprised. Russians in general might be poor, ….\n        /// </summary>\n        internal static string Dlg_AlienGate_0515 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0515\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …but the people we are dealing with… not so. .\n        /// </summary>\n        internal static string Dlg_AlienGate_0516 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0516\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to And it’s not just Russian money in all this..\n        /// </summary>\n        internal static string Dlg_AlienGate_0517 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0517\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Well, I’m glad you’ll be able to afford a top-notch funeral. .\n        /// </summary>\n        internal static string Dlg_AlienGate_0518 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0518\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to While you won’t be, Mr. Rainier. Sorry to see your heroic story end here. .\n        /// </summary>\n        internal static string Dlg_AlienGate_0519 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0519\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Soon, no one will remember you. .\n        /// </summary>\n        internal static string Dlg_AlienGate_0520 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0520\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I, on the other hand, represent the present and the future!.\n        /// </summary>\n        internal static string Dlg_AlienGate_0521 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0521\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to What else did they offer you? .\n        /// </summary>\n        internal static string Dlg_AlienGate_0522 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0522\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Do you know who you are speaking to?.\n        /// </summary>\n        internal static string Dlg_AlienGate_0523 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0523\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Assistant Director of Research and Development at Rime, OmniCorp..\n        /// </summary>\n        internal static string Dlg_AlienGate_0524 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0524\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to This discovery means a great deal to me, Mr. Rainier..\n        /// </summary>\n        internal static string Dlg_AlienGate_0524_2 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0524_2\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Career advancement?.\n        /// </summary>\n        internal static string Dlg_AlienGate_0525 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0525\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to My heart and soul are the same color as yours. Like you, I want money, I want recognition….\n        /// </summary>\n        internal static string Dlg_AlienGate_0526 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0526\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …and I want to be the first human to set eyes on what our predecessors built here. .\n        /// </summary>\n        internal static string Dlg_AlienGate_0527 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0527\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I must admit, he’s right about that. We do want the same. .\n        /// </summary>\n        internal static string Dlg_AlienGate_0528 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0528\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to True. He is a traitor and I want him dead. But I do understand his motives..\n        /// </summary>\n        internal static string Dlg_AlienGate_0529 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0529\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Why did you join with the Russians? Wouldn’t you have been in a better position with us? .\n        /// </summary>\n        internal static string Dlg_AlienGate_0530 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0530\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I was… considering that, Mr. Rainier. .\n        /// </summary>\n        internal static string Dlg_AlienGate_0531 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0531\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to But the Russians have… well… Much more than you could ever imagine. .\n        /// </summary>\n        internal static string Dlg_AlienGate_0532 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0532\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to They’ll use you and kill you as soon as they’re finished here..\n        /// </summary>\n        internal static string Dlg_AlienGate_0533 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0533\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I don’t see that happening..\n        /// </summary>\n        internal static string Dlg_AlienGate_0534 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0534\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You see, I have access to technology you and they can only dream of….\n        /// </summary>\n        internal static string Dlg_AlienGate_0535 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0535\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …at least for the few next years..\n        /// </summary>\n        internal static string Dlg_AlienGate_0536 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0536\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Without me, they can’t take one step toward analyzing and reproducing those alien devices..\n        /// </summary>\n        internal static string Dlg_AlienGate_0537 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0537\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Reproducing?.\n        /// </summary>\n        internal static string Dlg_AlienGate_0538 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0538\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You really think we are archeologists, young Mr. Rainier?.\n        /// </summary>\n        internal static string Dlg_AlienGate_0539 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0539\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to They’ve got top engineers and scientists of their own. Loyal ones, too..\n        /// </summary>\n        internal static string Dlg_AlienGate_0540 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0540\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Not traitors. I’m surprised you fell for their fairy tale; .\n        /// </summary>\n        internal static string Dlg_AlienGate_0541 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0541\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I thought you were smarter than that..\n        /// </summary>\n        internal static string Dlg_AlienGate_0542 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0542\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We’ve talked enough. I wish you swift death, no pain. Let us resolve this once and for all.\n        /// </summary>\n        internal static string Dlg_AlienGate_0543 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0543\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fine. Not the end I hoped for, but at least we’ll enjoy the sweet taste of revenge..\n        /// </summary>\n        internal static string Dlg_AlienGate_0544 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0544\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Men, women, do your best. .\n        /// </summary>\n        internal static string Dlg_AlienGate_0545 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0545\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We won’t have another chance. Make it final..\n        /// </summary>\n        internal static string Dlg_AlienGate_0546 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0546\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Marcus, just a side note. We have one mother ship and four fighters….\n        /// </summary>\n        internal static string Dlg_AlienGate_0547 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0547\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …and they have three mother ships and probably dozens of fighters….\n        /// </summary>\n        internal static string Dlg_AlienGate_0548 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0548\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I assume you have a plan?.\n        /// </summary>\n        internal static string Dlg_AlienGate_0549 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0549\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Yes… Improvise!.\n        /// </summary>\n        internal static string Dlg_AlienGate_0550 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0550\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Go, go, go!!! .\n        /// </summary>\n        internal static string Dlg_AlienGate_0600 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0600\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Use the asteroids as cover. Guerilla warfare..\n        /// </summary>\n        internal static string Dlg_AlienGate_0601 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0601\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Madelyn, avoid direct fire and get out of here..\n        /// </summary>\n        internal static string Dlg_AlienGate_0602 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0602\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The rest of us – get to the nearest asteroids..\n        /// </summary>\n        internal static string Dlg_AlienGate_0602_2 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0602_2\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We can do this! .\n        /// </summary>\n        internal static string Dlg_AlienGate_0603 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0603\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Shoot that mother ship down!.\n        /// </summary>\n        internal static string Dlg_AlienGate_0604 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0604\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Madelyn, are you ok?.\n        /// </summary>\n        internal static string Dlg_AlienGate_0700 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0700\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to That was close but I’m fine..\n        /// </summary>\n        internal static string Dlg_AlienGate_0800 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0800\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I’ll regroup with you in a couple of minutes to give you some fire support..\n        /// </summary>\n        internal static string Dlg_AlienGate_0801 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0801\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to This position isn’t safe. Enemy ships will be here in no time..\n        /// </summary>\n        internal static string Dlg_AlienGate_0802 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0802\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Let’s meet at these new coordinates. Be the hunter, not the prey..\n        /// </summary>\n        internal static string Dlg_AlienGate_0803 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0803\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I’ll be there soon..\n        /// </summary>\n        internal static string Dlg_AlienGate_0804 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0804\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Enemy ships incoming, let’s hurry..\n        /// </summary>\n        internal static string Dlg_AlienGate_0805 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0805\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Here she comes, at last!.\n        /// </summary>\n        internal static string Dlg_AlienGate_0900 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0900\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Looks like we’re safe for the moment. Did you guys come up with a plan?.\n        /// </summary>\n        internal static string Dlg_AlienGate_0901 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0901\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Those Russian battleships are heavily fortified. .\n        /// </summary>\n        internal static string Dlg_AlienGate_0902 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0902\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to There’s no way we could charge them and survive. .\n        /// </summary>\n        internal static string Dlg_AlienGate_0903 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0903\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Let’s use the size and speed of your ships to our advantage..\n        /// </summary>\n        internal static string Dlg_AlienGate_0904 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0904\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Their guns are big, but can’t easily target a small object. .\n        /// </summary>\n        internal static string Dlg_AlienGate_0905 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0905\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I notice their ships are heavily armored on the side, but not the back. .\n        /// </summary>\n        internal static string Dlg_AlienGate_0906 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0906\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We can duck behind asteroids and strike them from behind. .\n        /// </summary>\n        internal static string Dlg_AlienGate_0907 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0907\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I’ll just avoid their mother ships and give you support fire against their fighters. .\n        /// </summary>\n        internal static string Dlg_AlienGate_0908 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0908\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We can do this if we focus on their vital systems. .\n        /// </summary>\n        internal static string Dlg_AlienGate_0909 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0909\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to This is the fight of our lives, guys. We either die now or remember this battle forever..\n        /// </summary>\n        internal static string Dlg_AlienGate_0910 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0910\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Apollo, Tarja, Valentyn, come with me. We’ll start with the mothership on the right wing..\n        /// </summary>\n        internal static string Dlg_AlienGate_0911 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0911\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Madelyn – hold off their fighters till we’re done. .\n        /// </summary>\n        internal static string Dlg_AlienGate_0912 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0912\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Affirmative!.\n        /// </summary>\n        internal static string Dlg_AlienGate_0913 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_0913\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to They are trying to outflank us, shoot them down!.\n        /// </summary>\n        internal static string Dlg_AlienGate_1000 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_1000\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We need to take cover behind the asteroids, there are too many rocket turrets..\n        /// </summary>\n        internal static string Dlg_AlienGate_1001 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_1001\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Enemy fighters approaching!.\n        /// </summary>\n        internal static string Dlg_AlienGate_1002 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_1002\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We have to stay behind asteroids no matter what..\n        /// </summary>\n        internal static string Dlg_AlienGate_1003 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_1003\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We made it!.\n        /// </summary>\n        internal static string Dlg_AlienGate_1100 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_1100\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to They’ve boarded the ship. Fighters, engage the threat! Top priority!.\n        /// </summary>\n        internal static string Dlg_AlienGate_1200 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_1200\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Now comes the hardest part. We have to destroy the ship from inside..\n        /// </summary>\n        internal static string Dlg_AlienGate_1201 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_1201\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Overcharging the generators should do the job and buy us some time to leave the ship..\n        /// </summary>\n        internal static string Dlg_AlienGate_1202 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_1202\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We have to start with the power generator. .\n        /// </summary>\n        internal static string Dlg_AlienGate_1203 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_1203\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Then we’ll sabotage the protective devices on the core engine. .\n        /// </summary>\n        internal static string Dlg_AlienGate_1204 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_1204\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Great job, quickly overcharge it and get out..\n        /// </summary>\n        internal static string Dlg_AlienGate_1300 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_1300\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to On our way!.\n        /// </summary>\n        internal static string Dlg_AlienGate_1301 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_1301\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The core should be located in the upper floors of the ship..\n        /// </summary>\n        internal static string Dlg_AlienGate_1302 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_1302\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We have to get out as soon as possible after we sabotage this one..\n        /// </summary>\n        internal static string Dlg_AlienGate_1400 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_1400\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The core is highly unstable; we have about 40 seconds to get out. .\n        /// </summary>\n        internal static string Dlg_AlienGate_1500 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_1500\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to No sightseeing on the way then..\n        /// </summary>\n        internal static string Dlg_AlienGate_1501 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_1501\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Just go!! .\n        /// </summary>\n        internal static string Dlg_AlienGate_1502 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_1502\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Well, that was close. .\n        /// </summary>\n        internal static string Dlg_AlienGate_1600 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_1600\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Quick, get to Madelyn. The Russian ships are going to be here soon..\n        /// </summary>\n        internal static string Dlg_AlienGate_1601 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_1601\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Apollo, make sure to stop by here at Sapho to refuel and have your ship repaired! .\n        /// </summary>\n        internal static string Dlg_AlienGate_1700 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_1700\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I think I still have some spare equipment and ammunition. .\n        /// </summary>\n        internal static string Dlg_AlienGate_1701 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_1701\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Now let’s move on to the second Russian mothership..\n        /// </summary>\n        internal static string Dlg_AlienGate_1702 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_1702\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to They’re going to be prepared this time; this won’t be as easy as the first one..\n        /// </summary>\n        internal static string Dlg_AlienGate_1703 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_1703\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Let’s just do it!.\n        /// </summary>\n        internal static string Dlg_AlienGate_1704 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_1704\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Enemy approaching….\n        /// </summary>\n        internal static string Dlg_AlienGate_1800 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_1800\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Quickly, get in, there are no asteroids to cover us. .\n        /// </summary>\n        internal static string Dlg_AlienGate_1900 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_1900\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Guys you know what to do, so let’s get this done..\n        /// </summary>\n        internal static string Dlg_AlienGate_2000 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_2000\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Affirmative!.\n        /// </summary>\n        internal static string Dlg_AlienGate_2001 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_2001\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to What is this? Armored doors?.\n        /// </summary>\n        internal static string Dlg_AlienGate_2200 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_2200\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to They’re as tough as the walls of the ship!.\n        /// </summary>\n        internal static string Dlg_AlienGate_2201 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_2201\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You’ve got to find a way through. There has to be a control room somewhere. .\n        /// </summary>\n        internal static string Dlg_AlienGate_2202 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_2202\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Follow me. .\n        /// </summary>\n        internal static string Dlg_AlienGate_2203 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_2203\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Check the hub systems!.\n        /// </summary>\n        internal static string Dlg_AlienGate_2300 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_2300\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Got it, the door should be open now! .\n        /// </summary>\n        internal static string Dlg_AlienGate_2301 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_2301\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to What is this? Madelyn, any ideas?.\n        /// </summary>\n        internal static string Dlg_AlienGate_2400 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_2400\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to It looks like a laboratory. It must be where they study the alien technology..\n        /// </summary>\n        internal static string Dlg_AlienGate_2401 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_2401\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to It might be wise to get all their data, before we blow this whole thing up. .\n        /// </summary>\n        internal static string Dlg_AlienGate_2402 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_2402\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Workin’ on it..\n        /// </summary>\n        internal static string Dlg_AlienGate_2403 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_2403\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ok, let’s go. Any interesting findings?.\n        /// </summary>\n        internal static string Dlg_AlienGate_2500 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_2500\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I don’t have time to go through all the data right now. But it looks… .\n        /// </summary>\n        internal static string Dlg_AlienGate_2501 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_2501\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …promising. We’ll discuss it with Thomas later..\n        /// </summary>\n        internal static string Dlg_AlienGate_2502 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_2502\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Go, go, go!.\n        /// </summary>\n        internal static string Dlg_AlienGate_2600 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_2600\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Enemy interceptors again!.\n        /// </summary>\n        internal static string Dlg_AlienGate_2601 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_2601\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Never mind, there’s no time for fighting. Get out now!.\n        /// </summary>\n        internal static string Dlg_AlienGate_2602 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_2602\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Great job! You’ve done it, guys..\n        /// </summary>\n        internal static string Dlg_AlienGate_2700 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_2700\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to What? How?.\n        /// </summary>\n        internal static string Dlg_AlienGate_2701 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_2701\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Now let’s hunt down Reef once and for all..\n        /// </summary>\n        internal static string Dlg_AlienGate_2702 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_2702\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Any more… precise plan?.\n        /// </summary>\n        internal static string Dlg_AlienGate_2703 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_2703\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cut off his weapons and generators. That should do the trick. .\n        /// </summary>\n        internal static string Dlg_AlienGate_2704 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_2704\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Confirmed. .\n        /// </summary>\n        internal static string Dlg_AlienGate_2705 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_2705\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to This is not the last time we will meet..\n        /// </summary>\n        internal static string Dlg_AlienGate_2800 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_2800\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Quick, stop him, he’s about to take off..\n        /// </summary>\n        internal static string Dlg_AlienGate_2801 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_2801\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to He’s too fast. Madelyn, block his way quick!.\n        /// </summary>\n        internal static string Dlg_AlienGate_2802 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_2802\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I’m trying!.\n        /// </summary>\n        internal static string Dlg_AlienGate_2803 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_2803\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to What the hell…!.\n        /// </summary>\n        internal static string Dlg_AlienGate_2900 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_2900\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Nice! You got him..\n        /// </summary>\n        internal static string Dlg_AlienGate_2901 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_2901\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Quickly, shoot the pursuers down!!!.\n        /// </summary>\n        internal static string Dlg_AlienGate_3000 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_3000\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Did you get him?.\n        /// </summary>\n        internal static string Dlg_AlienGate_3200 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_3200\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Of course we did… Where have you been?.\n        /// </summary>\n        internal static string Dlg_AlienGate_3201 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_3201\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I found something; you’re not going to believe this. Get in here, quick..\n        /// </summary>\n        internal static string Dlg_AlienGate_3202 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_3202\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Oh my God!.\n        /// </summary>\n        internal static string Dlg_AlienGate_3300 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_3300\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to So this is the source of the signal. .\n        /// </summary>\n        internal static string Dlg_AlienGate_3301 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_3301\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I must admit I wasn’t expecting something quite so… holy crap..\n        /// </summary>\n        internal static string Dlg_AlienGate_3302 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_3302\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to This is the moment I’ve waited for my entire life. .\n        /// </summary>\n        internal static string Dlg_AlienGate_3303 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_3303\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Any idea what it is?.\n        /// </summary>\n        internal static string Dlg_AlienGate_3304 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_3304\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to A door. To another world. A wormhole generator, a gateway device….\n        /// </summary>\n        internal static string Dlg_AlienGate_3305 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_3305\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Can we… use it?.\n        /// </summary>\n        internal static string Dlg_AlienGate_3306 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_3306\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to It does not seem operational at the moment. .\n        /// </summary>\n        internal static string Dlg_AlienGate_3307 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_3307\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to If we find a way to make it operational, it will take us –.\n        /// </summary>\n        internal static string Dlg_AlienGate_3308 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_3308\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to To its other side. .\n        /// </summary>\n        internal static string Dlg_AlienGate_3309 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_3309\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Another galaxy… or maybe even another universe with its own laws of physics. .\n        /// </summary>\n        internal static string Dlg_AlienGate_3310 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_3310\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to So what do we do?.\n        /// </summary>\n        internal static string Dlg_AlienGate_3311 {\n            get {\n                return ResourceManager.GetString(\"Dlg_AlienGate_3311\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We’re back!.\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_0101 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_0101\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You know, this place is starting to feel like home!.\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_0102 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_0102\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Let’s say hello to Thomas. I think he’ll be happy to see us again!.\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_0108 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_0108\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Thomas, do you copy?.\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_0109 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_0109\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I am here, my friends, and eager to hear of your exploits!.\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_0110 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_0110\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Mission accomplished!.\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_0111 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_0111\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Raiders successfully terminated and communication components secured..\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_0112 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_0112\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I am pleased to hear such good news! \n        ///I have something for you as well…\n        ///.\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_0114 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_0114\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Read it on your way here. .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_0116 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_0116\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I’m going through the data Thomas just sent. The whole situation is… unbelievable!.\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_0201 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_0201\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to What exactly do you mean?.\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_0202 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_0202\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …now I completely understand why Thomas was so excited when we first arrived….\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_0203 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_0203\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …and told him about the artifacts..\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_0204 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_0204\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I’ll let Thomas do the explaining. Meanwhile, I’ll go through the rest of the data….\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_0206 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_0206\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to So what do you think?.\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_0301 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_0301\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You’d better explain all this in your own words. The data you sent is… complex..\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_0302 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_0302\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to As I said earlier, there are reasons to believe that….\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_0304 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_0304\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …there was an ancient alien impact on the evolution of humankind..\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_0305 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_0305\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Dismiss it as nonsense if you wish, but those Russians believe it..\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_0306 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_0306\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to And back in the Deimos labs, we believed too. For good reason..\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_0307 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_0307\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Anyway, if it was true, then there has to be some remains of the aliens….\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_0308 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_0308\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …or their technology, in our Solar System..\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_0309 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_0309\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Technology we might possibly employ….\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_0310 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_0310\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Biological samples we might….\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_0311 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_0311\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …utilize to enhance our own genome..\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_0312 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_0312\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to That’s what the Reichists were after! A shortening of the way!  .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_0313 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_0313\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Precisely! Think of the way we put human diseases into bacteria, make them resistant….\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_0314 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_0314\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …and then implant the resulting inhibitors into humans… .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_0315 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_0315\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Imagine if we implanted the effective parts of alien DNA….\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_0316 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_0316\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …which is several evolutionary steps above ours, into humans..\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_0317 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_0317\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You think this is what those Russians are after?.\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_0318 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_0318\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Perhaps. But I’d guess they are more interested in the technology..\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_0319 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_0319\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Analyzing those alien materials and….\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_0320 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_0320\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …devices could help them create futuristic weapons..\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_0321 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_0321\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Now, before we talk further, I want you to check these coordinates.  .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_0324 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_0324\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Proceed to this location. It will take a few minutes to get there. .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_0401 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_0401\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I will explain everything on the way..\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_0402 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_0402\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ok. You can start anytime….\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_0403 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_0403\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The place you are going to is the remains of the old Deimos laboratory complex..\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_0404 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_0404\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to This can’t be! Deimos’ moon must have been crushed during… .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_0405 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_0405\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …the Solar Event like all the other solar bodies!.\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_0406 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_0406\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I did not say it was the whole moon. It is just a… shard. But it contains… .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_0407 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_0407\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …laboratories… with technologies useful to our current situation. .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_0408 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_0408\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Why haven’t you gone there yourself?.\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_0409 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_0409\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I have. Several times. Hit-and-run. .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_0410 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_0410\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Many of my devices are from the Broken Moon, as I call it..\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_0411 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_0411\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Why hit-and-run?.\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_0412 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_0412\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Right – there can’t be anyone living there, except maybe… space nazi zombies. .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_0413 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_0413\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Come on, no one could survive in there!.\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_0414 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_0414\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to No humans. But… machines, computers. Artificial intelligence. .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_0415 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_0415\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We had a technology for AI fighter pilots long before the solar event. .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_0416 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_0416\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I wonder what else YOU know that we don’t..\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_0417 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_0417\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Not much, but I’ll tell you a few more stories later..\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_0418 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_0418\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to What’s the plan?.\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_0419 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_0419\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Get inside, turn up the emergency power unit, kick off the AI weapons. .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_0420 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_0420\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to And get me a few components..\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_0421 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_0421\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Roger that..\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_0422 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_0422\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Might need to dig or blast our way through this pile of dirt..\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_0501 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_0501\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Here we go. I’m detecting radiation around here. .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_0601 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_0601\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to And the deeper we go, the stronger it gets. .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_0602 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_0602\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You must turn on the backup energy supply first. .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_0603 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_0603\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Do not waste time or the radiation will consume you alive! .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_0604 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_0604\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Good. Now, you need to turn on the main energy generators..\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_0701 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_0701\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to There should be drones! Emergency maintenance drones. .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_0703 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_0703\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Find them and if they are still operational, they can do the job. .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_0704 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_0704\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I saw a small maintenance room on the way here. Let’s check it out.  .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_0705 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_0705\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Nice! The drones survived. I mean, they’re still operational. .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_0801 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_0801\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Great! Use them to do the dirty work.\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_0802 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_0802\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to First “park” your ship in the area without radiation. .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_0803 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_0803\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The drones are immune to it, but you’re not.  .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_0804 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_0804\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Apollo, you handle the drone. Find a way to lead it to the generators..\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_0901 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_0901\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Here we go. About to fire this one up..\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_1001 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_1001\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Up and running!.\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_1101 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_1101\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Crap, it’s overheating and –.\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_1102 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_1102\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Bad luck. Try the other generator with the other drone. .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_1201 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_1201\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Workin’ on it. .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_1202 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_1202\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I’m here. Let’s spin the wheel of fortune again. .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_1301 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_1301\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Yeah! Roll, baby!.\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_1401 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_1401\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Wait a few seconds. .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_1402 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_1402\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ok, it seems this one is stable. .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_1403 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_1403\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Good, I see you have lights on! Head to the main control room.  .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_1404 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_1404\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I see some nice stuff around there. Would you mind getting the data from each of hubs?.\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_1501 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_1501\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to There should be four of them..\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_1502 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_1502\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Do we have to hit all four of them?.\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_1503 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_1503\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Yes, the data is hashed. Get it from only one computer and it’s of no use to me..\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_1504 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_1504\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to What exactly are we after?.\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_1505 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_1505\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Results of genetic research. Classified materials. .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_1506 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_1506\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Even I did not have access to them before. .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_1507 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_1507\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Once you’re done, I need you to pick up a few special devices.\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_1508 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_1508\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I will tell you when you come across one.  .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_1509 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_1509\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We’ve got company..\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_1601 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_1601\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Damn, and we forgot to buy wine. Security bots! .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_1602 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_1602\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to This place is radiated. Apollo, work fast. .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_1701 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_1701\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Roger that.  .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_1702 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_1702\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Done. Movin’ on.  .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_1801 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_1801\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Damn, this is bad. Critical radiation level in this one. .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_1901 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_1901\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I suggest using drones again. Same procedure as before. .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_1902 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_1902\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Stop your ship in a safe area and let the drone get its hands dirty. .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_1903 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_1903\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I’d just eat Marcus’s cooking.   .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_1905 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_1905\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to All set here..\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_2001 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_2001\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to One more computer to go.  .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_2002 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_2002\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Good job, Apollo!.\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_2101 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_2101\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Now, according to the scans, the components I need are in the main lab. .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_2102 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_2102\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Just… be careful there. I don’t know whether Blondi is still alive….\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_2103 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_2103\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Blondi?.\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_2104 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_2104\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Better not to ask. Just… always look around corners. .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_2105 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_2105\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Great! Blondi? What the hell is that?.\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_2106 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_2106\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Guess we’ll find out soon enough. Head to the main lab.  .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_2107 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_2107\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Jeez… is this –.\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_2201 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_2201\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Emergency security measures! Overriding human safety protocol. Mainframe CORE endangered!.\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_2202 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_2202\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Blondi?.\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_2203 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_2203\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We’re locked in. She… I mean, IT sealed all the doors..\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_2204 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_2204\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Blondi! She is alive!.\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_2205 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_2205\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to “She” has just targeted all of her defense systems on us. .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_2206 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_2206\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Is she always this polite to guests?.\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_2207 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_2207\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Try not to damage her! She’s – a masterpiece!.\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_2208 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_2208\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You prefer us to be damaged instead? .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_2209 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_2209\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Apollo, concentrate all your firepower on our… lady friend. .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_2210 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_2210\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Thomas, what’s this all about?.\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_2211 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_2211\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to An experiment! A successful one! She survived all these years!.\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_2212 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_2212\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Too bad we have to spoil your perfect record. .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_2213 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_2213\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to No!.\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_2214 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_2214\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You understand we have no other choice? That thing is firing on us repeatedly – .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_2215 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_2215\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Am I… hurt? .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_2216 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_2216\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You are… .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_2217 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_2217\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Killing my children… .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_2218 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_2218\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to And now… .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_2219 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_2219\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You come to kill… .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_2220 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_2220\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Me?.\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_2221 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_2221\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You must save her! For the sake of science and humanity, you must –.\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_2222 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_2222\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to If you tell me “she” feels pain, I will consider killing you as well, Dr. Frankenstein..\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_2223 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_2223\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to She does not, although she simulates emotions. .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_2224 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_2224\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to She is one of the greatest achievements of science..\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_2225 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_2225\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Destroying her would throw us back years in biogenetic research..\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_2226 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_2226\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Did you say biogenetic? .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_2227 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_2227\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ehm, yes, biogenetic. .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_2228 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_2228\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I mean – she is not “electronic” in the true sense of the world. .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_2229 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_2229\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Holy crap! Are you telling me this computer is alive?.\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_2230 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_2230\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to “She”’s nearly down!.\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_2301 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_2301\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Save her! I beg you! Don’t destroy her, just… disable her! .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_2302 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_2302\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Farewell to humankind! Blondi out.\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_2401 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_2401\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Nooooo! Years of work turned to ashes!.\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_2501 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_2501\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Target dispatched. Well done, Apollo!.\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_2502 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_2502\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to What next? Thomas?.\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_2503 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_2503\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You… How could you?… How could you? .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_2504 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_2504\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Guys, I got the data from Thomas earlier. .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_2505 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_2505\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to According to his list, he needs some devices from around this room. .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_2506 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_2506\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I’ll mark them on your HUD. Grab ’em and go. .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_2507 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_2507\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Are we about to disassemble the satellite dish?.\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_2508 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_2508\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Seems so. Some of the items on the list look like additional components….\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_2509 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_2509\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …for the long-range transmitter we’re supposed to build. .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_2510 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_2510\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Some of the other stuff is… well, biological..\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_2511 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_2511\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I am not bringing Dr. Frankenstein any more body parts..\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_2512 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_2512\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The components should be sufficient. Trust me. I will transfer you the list..\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_2513 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_2513\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Whatever. Apollo, gather the components. I’ll wait for you at the lab entrance.  .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_2514 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_2514\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I guess we’re all set..\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_2601 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_2601\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Confirmed. Come on back home, guys! .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_2602 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_2602\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Wow, selling stuff from this place could make us millions!.\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_2701 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_2701\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Wait, what are those two ships? .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_2702 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_2702\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We’ve got competition! Shoot them!.\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_2703 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_2703\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Seems some looters found their way in, too.  .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_2704 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_2704\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to That should be it. The path to the exit is clear..\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_2801 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_2801\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Be careful. I’m willing to bet those raiders have some friends. .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_2802 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_2802\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Damn. You were right. How do we get past them? .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_2901 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_2901\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sorry to being this up, but remember… Thomas’s base is just a few kilometers away. .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_2902 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_2902\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We can’t leave those raiders alive..\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_2903 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_2903\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Madelyn, is that really you?.\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_2904 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_2904\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Saying we have to kill someone instead of sparing his life?.\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_2905 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_2905\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Circumstances. .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_2906 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_2906\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Agreed. We need to crush those ships, otherwise they might endanger Thomas.  .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_2907 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_2907\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Area clear. .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_3001 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_3001\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Nice job, guys! .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_3002 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_3002\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Thomas, we’re on the way back. .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_3101 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_3101\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to And we have the components you requested..\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_3102 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_3102\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ok, ok. Bring them here..\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_3103 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_3103\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I’m sending you the data we downloaded from the computers. .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_3104 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_3104\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to What next?.\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_3105 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_3105\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Give me some time to analyze the data. .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_3106 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_3106\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to For now, would you mind helping me build that communication array?.\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_3107 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_3107\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to A job that won’t get us killed? That’ll be a refreshing change.  .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_3108 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_3108\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The array should work now!.\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_3201 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_3201\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to It… works… Just….\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_3202 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_3202\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to What? Problems?.\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_3203 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_3203\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to No, but I’m already picking up a signal..\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_3204 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_3204\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to That might be our signal. I have several relays and communication channels open..\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_3205 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_3205\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to No, that’s – not – it. .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_3206 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_3206\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to It appears to be a distress signal. Sent earlier today. .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_3208 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_3208\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Periodically repeating. See for yourself..\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_3209 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_3209\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …This is… Christian community Last Hope. .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_3210 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_3210\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We are under attack. Slavers….\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_3211 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_3211\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …we are requesting help! If anyone hears this, ….\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_3212 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_3212\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …please come to our assistance. Our coordinates are….\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_3213 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_3213\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I’ve located the source of the signal..\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_3214 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_3214\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I suppose you want us to help them?.\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_3215 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_3215\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to That’s your decision. .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_3216 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_3216\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The signal was sent several hours ago, so there’s probably no one alive anymore..\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_3217 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_3217\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Or they may have gotten help from someone else. .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_3218 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_3218\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Doubtful. Their base is so far from any civilized settlement….\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_3219 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_3219\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …it would be impossible for the signal to reach. .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_3220 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_3220\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to It’s just a fluke that we received it. .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_3221 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_3221\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to It’s worth a try. We might be able to save some lives.  .\n        /// </summary>\n        internal static string Dlg_BarthsMoon2_3222 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoon2_3222\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I can’t remember ever being this far from the Sun..\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0101 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0101\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ehm. So, Madelyn, are we close?.\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0108 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0108\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to According to my scans, there is a small base deeper in the asteroid field….\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0110 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0110\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I marked it on your GPS. .\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0111 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0111\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to On our way..\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0112 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0112\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Who is this Barth, again?.\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0113 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0113\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to He was one of my professors back at Greenbelt….\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0114 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0114\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Thomas Barth, a brilliant anthropologist from the old days….\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0115 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0115\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sounds like he taught you more than anthropology..\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0116 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0116\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Marcus!.\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0117 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0117\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Please go on, Madelyn. Any idea where we might find him?.\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0118 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0118\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to He was always this kind of crazy scientist guy….\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0119 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0119\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The last time I saw him was before he left on his “hermitage”..\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0120 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0120\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hermitage?.\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0121 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0121\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to This guy REALLY doesn’t like neighbors..\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0122 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0122\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to This place looks kinda romantic even to me. .\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0201 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0201\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Greetings!.\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0301 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0301\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Welcome, travelers! Make yourselves at home..\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0302 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0302\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Are you Thomas Barth?.\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0304 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0304\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to – He is. –.\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0305 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0305\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I am..\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0306 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0306\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to What brings you to these lands? Exploration? Adventure?.\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0307 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0307\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Thomas, remember me? Madelyn Lloyd….\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0308 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0308\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I was in your graduate anthropology class at Greenbelt..\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0309 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0309\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fraulein! How could I forget….\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0310 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0310\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I always knew we would meet again! It was destiny..\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0311 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0311\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Actually, Barth, we came to see you..\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0312 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0312\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to A Russian paramilitary group searching for something they call “alien artifacts”….\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0313 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0313\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …has your name on its list..\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0314 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0314\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Any idea what they may be up to?.\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0315 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0315\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Is this so? .\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0316 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0316\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I’ll show you all the data we found. That will explain everything..\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0317 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0317\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to My observations were correct! E-everyone – everyone thought….\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0318 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0318\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I was a madman, ranting about alien relics..\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0319 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0319\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Now, fate has brought you here to be my… apostles!.\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0320 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0320\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Let’s not get carried away..\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0321 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0321\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I – I never thought of you as a madman, Thomas!.\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0322 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0322\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I know. But most of the others did. That’s why I had to leave Greenbelt….\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0323 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0323\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Not because I grew old and tired, but because no one – except those….\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0324 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0324\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …in my closest circle – believed in my findings..\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0325 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0325\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to So, what are you saying?.\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0326 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0326\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I am prepared to offer my services and full support to you..\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0327 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0327\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …In exchange for…?.\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0328 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0328\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to No exchange necessary. However, consider my situation here. I am cut off from….\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0329 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0329\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …communication and commerce routes. And those damn Raider war parties have….\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0330 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0330\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …already hit my base twice. Each time they destroyed or stole some of my equipment..\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0331 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0331\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We can take you with us. .\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0332 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0332\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I’m of better use here with my lab and tools. .\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0333 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0333\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to So what can we do?.\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0334 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0334\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to In case you happen to run into some long-range antenna components, bring them here and….\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0335 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0335\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …help me build an array. That way we can stay in contact over a distance..\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0336 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0336\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Also, one of the Raider warparties has established a temporary camp a few asteroids….\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0337 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0337\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …from here. It’s only a matter of time before they come here to loot again..\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0338 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0338\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You’d like us to exterminate them and secure the area?.\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0339 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0339\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to It… would be helpful. .\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0340 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0340\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fine. .\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0341 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0341\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to So that’s it. Knock out a Raider warparty and search for long-range transmitter parts….\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0342 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0342\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to On our way..\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0344 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0344\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We can talk on the way. There are still issues to be… discussed..\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0345 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0345\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Okay, team, I suggest dealing with those Raiders first..\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0401 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0401\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Agreed. Best to make sure Barth will be here next time we arrive..\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0402 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0402\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Thomas? So you believe there’s something to this?.\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0403 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0403\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to That there are aliens involved?.\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0404 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0404\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to No one has ever seen one… At least not in the past few thousand years..\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0405 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0405\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Past few thousand years?.\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0406 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0406\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Oh, yes, I remember from your classes: you believe there were “leaps” in the evolution….\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0407 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0407\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …of mankind..\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0408 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0408\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to “Leaps”?.\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0409 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0409\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Mankind’s evolution was not, shall we say, continuous. There are very important missing….\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0410 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0410\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …links in the chain. You see, our evolution typically progressed in a gradual manner….\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0411 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0411\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …for long periods of time..\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0412 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0412\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to But at certain evolutionary moments? A leap occurred. A leap for which we can find….\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0413 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0413\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …no rational explanation..\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0414 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0414\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Previously nonexistent genes appeared. Nothing that can be explained as a combination….\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0415 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0415\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …of any known species..\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0416 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0416\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Something new..\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0417 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0417\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You’re suggesting that… we have… alien genes?.\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0418 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0418\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I do. Most indications suggest that our species was intentionally altered. .\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0419 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0419\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I call it genome implantation. Something we humans have been experimenting with for….\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0420 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0420\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …the last few decades. But there is… indirect evidence to believe that this has been….\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0421 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0421\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …done before. To us. Intentionally..\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0422 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0422\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to What the hell does that have to do with us and our current situation?.\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0423 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0423\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to And what are we supposed to do about it? I mean – right now..\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0424 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0424\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Well, don’t forget that a pirate base was also mentioned in the Russians’ communication..\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0425 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0425\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Right. We will find out sooner or later. Once you take out the Raiders, check out that….\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0426 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0426\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …location you know about from the Russians..\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0427 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0427\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to This must be their place..\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0501 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0501\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Definitely. There are no reported settlements in this area. Gotta be the Raiders’ camp..\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0502 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0502\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to And… our plan?.\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0503 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0503\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I don’t expect them to negotiate. All these people know is looting and plundering..\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0504 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0504\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You dare approach our settlement?.\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0601 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0601\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We’re here to end your looting spree..\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0602 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0602\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You are either brave or foolish. Or both. I’ll do you the service….\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0603 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0603\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …of letting you die like a man..\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0604 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0604\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Challenge accepted..\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0605 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0605\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Looks like we’re done here..\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0701 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0701\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Good job, guys!.\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0702 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0702\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Now to the pirate base in the Damien Dust Field. The one mentioned in the data from Laika..\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0703 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0703\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Your wish is my command. Jump in, I’ve already set the course..\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0704 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0704\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Affirmative.  .\n        /// </summary>\n        internal static string Dlg_BarthsMoonConvince_0705 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonConvince_0705\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Seems we’re not alone. I’m detecting fighters. Lots of them..\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_0100 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_0100\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We’ll check it out. .\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_0101 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_0101\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to There’s a battle raging here, fire and gunshots all around. .\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_0102 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_0102\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to What the hell is that?.\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_0103 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_0103\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to EAC Battleship, armed and operational..\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_0104 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_0104\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to What is EAC doing around here?.\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_0105 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_0105\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to All troops, withdraw! Repeat, withdraw! EAC forces incoming!.\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_0106 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_0106\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Seems they’re afraid of us. .\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_0107 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_0107\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Guys, get to Thomas quickly. I’m only getting a weak signal of his ship. Find him ASAP. .\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_0108 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_0108\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Roger that. .\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_0109 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_0109\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Eat my steel, you filthy schlingels – ah, wait, Apollo? Is that you? .\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_0200 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_0200\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Glad to see you at full strength, Thomas!.\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_0201 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_0201\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Those raiders gave me an adrenaline rush. .\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_0202 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_0202\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I feel like a kid in my fifties again!.\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_0203 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_0203\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to What happened here?.\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_0204 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_0204\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to They came out of nowhere. Probably some raiding group that wanted equipment and cash. .\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_0205 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_0205\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to They weren’t interested in me, just my loot. .\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_0206 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_0206\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sorry for interrupting, guys, but there are still fighters inside the base. .\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_0207 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_0207\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Maybe you could, ah… you know….\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_0208 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_0208\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fight them? .\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_0209 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_0209\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to That would be nice..\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_0210 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_0210\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Good job, guys! Bad news, though – the raiders seem to be regrouping for a bigger strike. .\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_0300 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_0300\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I’m picking up several large ships as well. .\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_0301 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_0301\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I have some defense turrets in storage. .\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_0302 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_0302\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I didn’t have time to place them; the raiders took me by surprise. .\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_0303 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_0303\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to If you install them you can beef up our defenses. .\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_0304 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_0304\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Shouldn’t we just hit the raiders while they’re regrouping?.\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_0305 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_0305\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Negative. Better to fortify the base and crush them at our gates. .\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_0306 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_0306\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to They won’t be expecting stationary defenses. .\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_0307 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_0307\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Good point. .\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_0308 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_0308\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Apollo, would you mind taking charge of placing those turrets?.\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_0309 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_0309\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to And be quick, those raiders won’t take long to regroup. .\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_0310 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_0310\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I’ll do my best..\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_0311 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_0311\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Enemy incoming. First wave of fighters. .\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_0400 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_0400\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We’re ready..\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_0401 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_0401\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to This group looks too easy. .\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_0402 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_0402\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to There are two mother ships on the horizon. Try to avoid taking damage.  .\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_0403 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_0403\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to And keep an eye on Thomas..\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_0404 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_0404\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Good job, everyone!.\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_0500 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_0500\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You do know there’s another wave approaching? Just saying..\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_0501 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_0501\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We’re always well-prepared. .\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_0502 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_0502\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to That’s what they say about duck l’orange. .\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_0503 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_0503\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We have a birthday surprise for you! Kabooom – (laughter) he, he!.\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_0600 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_0600\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Oh my God, this is not good!.\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_0601 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_0601\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to What’s that? .\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_0602 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_0602\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Demolition ships. .\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_0603 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_0603\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cargo freighters packed with explosives on a collision course with… Sapho. .\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_0604 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_0604\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ok, Priority One: Everyone, target those suicide ships!.\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_0605 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_0605\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Just so you know, if one of those even grazes me….\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_0606 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_0606\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …Sapho will turn into a pile of space debris. .\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_0607 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_0607\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to More like space vapor. I’ve seen these things before. .\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_0608 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_0608\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to My strong advice: look, but don’t touch. .\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_0609 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_0609\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We’ll handle it. Madelyn, don’t worry. .\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_0610 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_0610\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Good job, guys! Keep it up!.\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_0700 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_0700\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We have a minute to catch our breath before the final battle..\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_0800 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_0800\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Mother ships approaching..\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_0801 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_0801\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Use what time you have to repair those turrets. .\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_0802 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_0802\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to There’s plenty of maintenance equipment around my base..\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_0803 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_0803\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Let’s get to it. .\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_0804 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_0804\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Don’t get too immersed. Make a few quick repairs, then get ready for the attack!.\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_0805 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_0805\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Concentrate on their weapons and generators. .\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_0900 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_0900\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We can’t crush their armor, we can only target their weak spots..\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_0901 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_0901\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Splendid operation!.\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_1000 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_1000\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Seems like ol’ Thomas enjoyed the thrill. .\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_1001 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_1001\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Good job, guys!.\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_1002 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_1002\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Now, I will spend some time on repairs, but thanks for the help!.\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_1003 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_1003\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You’re welcome..\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_1004 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_1004\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to By the way, how did you know about this raider attack?.\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_1005 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_1005\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We didn’t. We came seeking your assistance. .\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_1006 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_1006\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We’re ready to construct those alien material detectors. .\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_1007 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_1007\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Excellent!.\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_1008 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_1008\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Francis Reef designed them and gave us the blueprints. .\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_1009 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_1009\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We have all the components we need, and the fuel. .\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_1010 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_1010\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hm, are you ready to deploy them?.\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_1011 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_1011\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We need to build them first. We thought we could do it here. .\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_1012 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_1012\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I don’t have the equipment and tools for that kind of job..\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_1013 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_1013\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You do! Remember the stuff we picked at Broken Moon? .\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_1014 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_1014\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I was checking the list and according to specs from Reef….\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_1015 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_1015\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …it is possible to build a simple manufacturing plant here. .\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_1016 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_1016\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Seems you’re a step ahead of me. Then go right for it!.\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_1017 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_1017\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Pick up the tools you need in the cargo storage and build your plant..\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_1018 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_1018\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I can’t wait to see the results..\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_1019 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_1019\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Give us a little time and a brand new manufacturing….\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_1020 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_1020\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …plant will be standing right by your door!.\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_1021 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_1021\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Superb!.\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_1022 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_1022\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ready to boogie! This “plant” should be able to build the detectors!.\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_1100 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_1100\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I take it Reef carefully instructed you as to the process?.\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_1101 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_1101\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We… hope so..\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_1102 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_1102\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to That… was fast!.\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_1200 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_1200\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You are already done?.\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_1201 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_1201\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to It was just a matter of assembly and connection. .\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_1202 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_1202\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Remember, we already had all the chips and stuff..\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_1203 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_1203\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Great! Now that you have the detectors….\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_1204 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_1204\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …you need to place them in order to create the triangulation necessary..\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_1205 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_1205\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to What can we expect to find, anyway? Any “guesstimates”?.\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_1206 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_1206\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The detectors should give you nearly precise locations of all items….\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_1207 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_1207\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …across the inner solar system made of this alien material. .\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_1208 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_1208\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Random thought. If one of the artifacts was with the Russians….\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_1209 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_1209\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …would it point to their base or mother ship as well?.\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_1210 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_1210\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Exactly! Well, unless the artifacts were heavily shielded..\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_1211 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_1211\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I understand. So now we just need to find some good locations for placing the detectors?.\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_1212 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_1212\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I suggest we place them in free space….\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_1213 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_1213\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …somewhere outside the territories occupied by someone. .\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_1214 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_1214\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You can’t place those things in open space. .\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_1215 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_1215\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to What?.\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_1216 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_1216\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to They won’t work for long distances. .\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_1217 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_1217\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to But I thought that was why we got the rare plutonium isotopes!.\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_1218 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_1218\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Even with the super plutonium, you still need to place the detectors in….\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_1219 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_1219\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …existing long-range radar fields..\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_1220 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_1220\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Consider them extenders only. You need to overtake three radar….\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_1221 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_1221\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …operations across the Solar system and attach those detectors to them!.\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_1222 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_1222\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Overtake?.\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_1223 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_1223\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ok, listen. I’ve already scouted some suitable locations. Chinese radar array at….\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_1224 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_1224\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …Yunzun, Russian array at Tver, and EAC radar array at Silver Foresight..\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_1225 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_1225\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You must mask your attack as a pirate raid. Rush inside, destroy some equipment and….\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_1226 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_1226\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …while some of you are looting, one of you will sneak into the command center….\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_1227 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_1227\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …and attach the detector to the cables for the radar dishes..\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_1228 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_1228\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Make sure it looks like a raid, so the device stays attached and online long enough….\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_1229 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_1229\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …to complete the two remaining missions..\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_1230 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_1230\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Remember, we need triangulation, that is three detectors active at the same time..\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_1231 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_1231\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Understand?.\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_1232 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_1232\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to No, but I’m hoping YOU do..\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_1233 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_1233\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I do. This is the easiest and most functional way to do it. .\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_1234 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_1234\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ok, let’s get this over with. Madelyn?.\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_1235 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_1235\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ready for Yunzun?.\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_1236 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_1236\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to China, here we come!.\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_1237 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_1237\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We’ll brush up on our Kung-fu on the way!.\n        /// </summary>\n        internal static string Dlg_BarthsMoonPlant_1238 {\n            get {\n                return ResourceManager.GetString(\"Dlg_BarthsMoonPlant_1238\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I’ll get you, freak!.\n        /// </summary>\n        internal static string Dlg_Challenger_0100_BEHIND01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Challenger_0100_BEHIND01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You think you can outrun me?.\n        /// </summary>\n        internal static string Dlg_Challenger_0100_BEHIND02 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Challenger_0100_BEHIND02\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Don’t get used to the lead!.\n        /// </summary>\n        internal static string Dlg_Challenger_0100_BEHIND03 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Challenger_0100_BEHIND03\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Comin’ to get ya!.\n        /// </summary>\n        internal static string Dlg_Challenger_0100_BEHIND04 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Challenger_0100_BEHIND04\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You won’t get far!.\n        /// </summary>\n        internal static string Dlg_Challenger_0100_BEHIND05 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Challenger_0100_BEHIND05\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Who’s the boss? Ha, ha, I’m unstoppable!.\n        /// </summary>\n        internal static string Dlg_Challenger_0100_FRONT01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Challenger_0100_FRONT01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Loser! Eat my wind!.\n        /// </summary>\n        internal static string Dlg_Challenger_0100_FRONT02 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Challenger_0100_FRONT02\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to My grandma flies faster than you!.\n        /// </summary>\n        internal static string Dlg_Challenger_0100_FRONT03 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Challenger_0100_FRONT03\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Stop wasting your time. You’ve already lost!.\n        /// </summary>\n        internal static string Dlg_Challenger_0100_FRONT04 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Challenger_0100_FRONT04\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to See my back? That’s all you’ll ever see!.\n        /// </summary>\n        internal static string Dlg_Challenger_0100_FRONT05 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Challenger_0100_FRONT05\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We’re near the rendezvous point with Madelyn. .\n        /// </summary>\n        internal static string Dlg_ChineseEscape_1000 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseEscape_1000\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Red guards to cargo transport GA7. Enemy detected. EAC mother ship..\n        /// </summary>\n        internal static string Dlg_ChineseEscape_1001 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseEscape_1001\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Provide cover fire and we will engage and destroy. Do you copy?.\n        /// </summary>\n        internal static string Dlg_ChineseEscape_1002 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseEscape_1002\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to What should we do? We can’t answer. They’ll know right away we’re not Chinese..\n        /// </summary>\n        internal static string Dlg_ChineseEscape_1003 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseEscape_1003\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I’ve got a back-up plan. .\n        /// </summary>\n        internal static string Dlg_ChineseEscape_1004 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseEscape_1004\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to This may get ugly. .\n        /// </summary>\n        internal static string Dlg_ChineseEscape_1005 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseEscape_1005\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The worst that can happen is they destroy their own ship..\n        /// </summary>\n        internal static string Dlg_ChineseEscape_1006 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseEscape_1006\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Remember, our fighters are still docked inside. .\n        /// </summary>\n        internal static string Dlg_ChineseEscape_1007 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseEscape_1007\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Right, but all the plutonium will be lost..\n        /// </summary>\n        internal static string Dlg_ChineseEscape_1008 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseEscape_1008\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to All the more reason to give it our best shot..\n        /// </summary>\n        internal static string Dlg_ChineseEscape_1009 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseEscape_1009\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to GA7. This is your last warning. Respond or prepare for take-over. .\n        /// </summary>\n        internal static string Dlg_ChineseEscape_1010 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseEscape_1010\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Get ready..\n        /// </summary>\n        internal static string Dlg_ChineseEscape_1011 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseEscape_1011\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Red Guards, disable GA7 engines and assume control of ship. .\n        /// </summary>\n        internal static string Dlg_ChineseEscape_1012 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseEscape_1012\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fire!.\n        /// </summary>\n        internal static string Dlg_ChineseEscape_1013 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseEscape_1013\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Disable your weapons and engines and we will let you live!.\n        /// </summary>\n        internal static string Dlg_ChineseEscape_1014 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseEscape_1014\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Bu hao, pal, bu hao. We’re taking this dandy load of plutonium with us. .\n        /// </summary>\n        internal static string Dlg_ChineseEscape_1015 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseEscape_1015\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Then prepare for larger engagement.\n        /// </summary>\n        internal static string Dlg_ChineseEscape_1016 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseEscape_1016\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We have called for reinforcements from a nearby outpost base..\n        /// </summary>\n        internal static string Dlg_ChineseEscape_1017 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseEscape_1017\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Only a fool provokes the Chinese army!.\n        /// </summary>\n        internal static string Dlg_ChineseEscape_1018 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseEscape_1018\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Damn it!.\n        /// </summary>\n        internal static string Dlg_ChineseEscape_1019 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseEscape_1019\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Steady, bro. We take care of these guys….\n        /// </summary>\n        internal static string Dlg_ChineseEscape_1020 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseEscape_1020\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …and hope to get to Madelyn before their reinforcements arrive..\n        /// </summary>\n        internal static string Dlg_ChineseEscape_1021 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseEscape_1021\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Just to review… You were supposed to open fire after I got into battle range..\n        /// </summary>\n        internal static string Dlg_ChineseEscape_1022 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseEscape_1022\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Shit happens..\n        /// </summary>\n        internal static string Dlg_ChineseEscape_1023 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseEscape_1023\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Copy that. Let’s finish them off together and get back to Manjeet..\n        /// </summary>\n        internal static string Dlg_ChineseEscape_1024 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseEscape_1024\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Right. I’m sick of this turret cockpit. I feel the need to MOVE..\n        /// </summary>\n        internal static string Dlg_ChineseEscape_1025 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseEscape_1025\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Enemies destroyed. We’re clear to proceed..\n        /// </summary>\n        internal static string Dlg_ChineseEscape_1026 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseEscape_1026\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I’ll tell Manjeet we’re on our way. Next stop, the Junkyard Hilton..\n        /// </summary>\n        internal static string Dlg_ChineseEscape_1027 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseEscape_1027\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Approaching the Jingzhou refinery!.\n        /// </summary>\n        internal static string Dlg_ChineseRefinery_1000 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseRefinery_1000\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I’m going through the main entrance..\n        /// </summary>\n        internal static string Dlg_ChineseRefinery_1001 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseRefinery_1001\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Apollo, you take the back door together with Tarja. Use the coordinates from Manjeet..\n        /// </summary>\n        internal static string Dlg_ChineseRefinery_1002 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseRefinery_1002\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to On our own. See you later, bro!.\n        /// </summary>\n        internal static string Dlg_ChineseRefinery_1003 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseRefinery_1003\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We need to cut our way through!.\n        /// </summary>\n        internal static string Dlg_ChineseRefinery_1004 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseRefinery_1004\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to God! What is this place? They can blow up a whole planet with those nukes..\n        /// </summary>\n        internal static string Dlg_ChineseRefinery_1005 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseRefinery_1005\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Seems like the Chinese are up to something. I prefer not to know what..\n        /// </summary>\n        internal static string Dlg_ChineseRefinery_1006 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseRefinery_1006\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to This is none of our business, anyway. Let’s keep to our objectives. .\n        /// </summary>\n        internal static string Dlg_ChineseRefinery_1007 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseRefinery_1007\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Holy shit! What is this place? Manjeet, this is NOT an ordinary refinery..\n        /// </summary>\n        internal static string Dlg_ChineseRefinery_1008 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseRefinery_1008\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Well… I should have mentioned that. Oh, and I forgot, I need a small favor from you..\n        /// </summary>\n        internal static string Dlg_ChineseRefinery_1009 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseRefinery_1009\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Changing our agreement on the fly?.\n        /// </summary>\n        internal static string Dlg_ChineseRefinery_1010 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseRefinery_1010\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Just a small favor..\n        /// </summary>\n        internal static string Dlg_ChineseRefinery_1011 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseRefinery_1011\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I will give you some cash on top of the artifact if you do this for me..\n        /// </summary>\n        internal static string Dlg_ChineseRefinery_1012 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseRefinery_1012\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to What do you want?.\n        /// </summary>\n        internal static string Dlg_ChineseRefinery_1013 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseRefinery_1013\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I will send you a program. Upload it to the main computer. .\n        /// </summary>\n        internal static string Dlg_ChineseRefinery_1014 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseRefinery_1014\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sounds simple enough. .\n        /// </summary>\n        internal static string Dlg_ChineseRefinery_1015 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseRefinery_1015\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to That’s what I say. And you will be doing me a great favor..\n        /// </summary>\n        internal static string Dlg_ChineseRefinery_1016 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseRefinery_1016\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Done. On we go. .\n        /// </summary>\n        internal static string Dlg_ChineseRefinery_1017 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseRefinery_1017\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Good, follow the plan..\n        /// </summary>\n        internal static string Dlg_ChineseRefinery_1018 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseRefinery_1018\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to By the way, what did I just do?.\n        /// </summary>\n        internal static string Dlg_ChineseRefinery_1019 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseRefinery_1019\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Planted a kind of virus. You’ve just sent me crucial data from their nuclear research….\n        /// </summary>\n        internal static string Dlg_ChineseRefinery_1020 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseRefinery_1020\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …and at the same time bugged their system..\n        /// </summary>\n        internal static string Dlg_ChineseRefinery_1021 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseRefinery_1021\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to That’s fine with me. I don’t like the Chinese, anyway..\n        /// </summary>\n        internal static string Dlg_ChineseRefinery_1022 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseRefinery_1022\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Apollo, if you don’t mind….\n        /// </summary>\n        internal static string Dlg_ChineseRefinery_1023 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseRefinery_1023\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Yes?.\n        /// </summary>\n        internal static string Dlg_ChineseRefinery_1024 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseRefinery_1024\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to One more small computer hack. I will increase your reward, honestly!.\n        /// </summary>\n        internal static string Dlg_ChineseRefinery_1025 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseRefinery_1025\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to If I had known about this room before, I would have given you better equipment..\n        /// </summary>\n        internal static string Dlg_ChineseRefinery_1026 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseRefinery_1026\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Why are you so interested in this one?.\n        /// </summary>\n        internal static string Dlg_ChineseRefinery_1027 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseRefinery_1027\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to It is a communication center..\n        /// </summary>\n        internal static string Dlg_ChineseRefinery_1028 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseRefinery_1028\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to It connects the refinery with all the surrounding mines and ships..\n        /// </summary>\n        internal static string Dlg_ChineseRefinery_1029 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseRefinery_1029\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to It would be helpful to me for business reasons..\n        /// </summary>\n        internal static string Dlg_ChineseRefinery_1030 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseRefinery_1030\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sounds innocent. Just don’t screw us with the reward, you understand?.\n        /// </summary>\n        internal static string Dlg_ChineseRefinery_1031 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseRefinery_1031\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to No need to be rude, Mr. Rainier! I am a man of honest trade!.\n        /// </summary>\n        internal static string Dlg_ChineseRefinery_1032 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseRefinery_1032\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Done..\n        /// </summary>\n        internal static string Dlg_ChineseRefinery_1033 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseRefinery_1033\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I hope we can finally get to the command center now and get the cargo transport clearance..\n        /// </summary>\n        internal static string Dlg_ChineseRefinery_1034 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseRefinery_1034\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The path leads through living quarters. This area should not be well protected. .\n        /// </summary>\n        internal static string Dlg_ChineseRefinery_1035 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseRefinery_1035\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Use the back door. The best way to the command center is through an old abandoned pathway..\n        /// </summary>\n        internal static string Dlg_ChineseRefinery_1036 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseRefinery_1036\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Gotta love an old abandoned pathway!.\n        /// </summary>\n        internal static string Dlg_ChineseRefinery_1037 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseRefinery_1037\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to This is it. Hack this computer to change the cargo transport clearance..\n        /// </summary>\n        internal static string Dlg_ChineseRefinery_1038 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseRefinery_1038\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I just got the clearance. I’ll try to delay the scheduled departure….\n        /// </summary>\n        internal static string Dlg_ChineseRefinery_1039 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseRefinery_1039\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …but we don’t want to make anyone suspicious..\n        /// </summary>\n        internal static string Dlg_ChineseRefinery_1040 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseRefinery_1040\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I’ll grab you on the way, just get out fast and jump in..\n        /// </summary>\n        internal static string Dlg_ChineseRefinery_1041 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseRefinery_1041\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Welcome to the Chinese radar array at Yunzun..\n        /// </summary>\n        internal static string Dlg_ChineseTransmitter_01_01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransmitter_01_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We know you have a choice in interstellar carriers….\n        /// </summary>\n        internal static string Dlg_ChineseTransmitter_01_02 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransmitter_01_02\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …so we thank you for choosing Madelyn space airways..\n        /// </summary>\n        internal static string Dlg_ChineseTransmitter_01_03 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransmitter_01_03\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Remember, guys, we’re in a prohibited area. They will shoot first, ask questions later..\n        /// </summary>\n        internal static string Dlg_ChineseTransmitter_01_04 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransmitter_01_04\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Roger that, let’s go then. And don’t forget, act like raiders..\n        /// </summary>\n        internal static string Dlg_ChineseTransmitter_01_05 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransmitter_01_05\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sure thing, we just knock on their doors with sabres in our hands….\n        /// </summary>\n        internal static string Dlg_ChineseTransmitter_01_06 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransmitter_01_06\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …and they’ll all jump overboard..\n        /// </summary>\n        internal static string Dlg_ChineseTransmitter_01_07 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransmitter_01_07\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You know what I mean..\n        /// </summary>\n        internal static string Dlg_ChineseTransmitter_01_08 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransmitter_01_08\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Arrr! We’ll keelhaul ’em and feed them to the fishies..\n        /// </summary>\n        internal static string Dlg_ChineseTransmitter_01_09 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransmitter_01_09\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Why am I losing confidence by the moment?.\n        /// </summary>\n        internal static string Dlg_ChineseTransmitter_01_10 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransmitter_01_10\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I just finished my scan. There’s a side entrance through the cargo bay..\n        /// </summary>\n        internal static string Dlg_ChineseTransmitter_01_11 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransmitter_01_11\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Music to my ears..\n        /// </summary>\n        internal static string Dlg_ChineseTransmitter_01_12 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransmitter_01_12\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Uh-oh, just received a Chinese signal. Translating to English:.\n        /// </summary>\n        internal static string Dlg_ChineseTransmitter_01_13 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransmitter_01_13\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Addressing unknown vehicle: this is a prohibited area..\n        /// </summary>\n        internal static string Dlg_ChineseTransmitter_01_14 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransmitter_01_14\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Explain your purposes and leave immediately or we will fire..\n        /// </summary>\n        internal static string Dlg_ChineseTransmitter_01_15 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransmitter_01_15\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Repeat: leave or we will fire..\n        /// </summary>\n        internal static string Dlg_ChineseTransmitter_01_16 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransmitter_01_16\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Better be quick..\n        /// </summary>\n        internal static string Dlg_ChineseTransmitter_01_17 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransmitter_01_17\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cannons at the ready, cap’n..\n        /// </summary>\n        internal static string Dlg_ChineseTransmitter_01_18 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransmitter_01_18\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ok, what’s the plan?.\n        /// </summary>\n        internal static string Dlg_ChineseTransmitter_01_19 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransmitter_01_19\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We enter by the cargo bay..\n        /// </summary>\n        internal static string Dlg_ChineseTransmitter_01_20 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransmitter_01_20\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We loot the cargo, so it will look like a normal pillage and plunder operation..\n        /// </summary>\n        internal static string Dlg_ChineseTransmitter_01_21 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransmitter_01_21\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Right. A normal, everyday pillage and plunder, nothing unusual..\n        /// </summary>\n        internal static string Dlg_ChineseTransmitter_01_22 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransmitter_01_22\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Let the raid begin..\n        /// </summary>\n        internal static string Dlg_ChineseTransmitter_01_23 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransmitter_01_23\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ok, you two stay here, go after that cargo and attract some attention, ….\n        /// </summary>\n        internal static string Dlg_ChineseTransmitter_02_01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransmitter_02_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …I’ll go place that detector..\n        /// </summary>\n        internal static string Dlg_ChineseTransmitter_02_02 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransmitter_02_02\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to They sent some ships, but no big deal..\n        /// </summary>\n        internal static string Dlg_ChineseTransmitter_02_04 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransmitter_02_04\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Good, can you navigate me through the station?.\n        /// </summary>\n        internal static string Dlg_ChineseTransmitter_02_05 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransmitter_02_05\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sure, just give me a sec for scanning..\n        /// </summary>\n        internal static string Dlg_ChineseTransmitter_02_06 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransmitter_02_06\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ok, I’ll head inside, let me know when you have something for me..\n        /// </summary>\n        internal static string Dlg_ChineseTransmitter_02_07 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransmitter_02_07\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Come on, Valentin, let’s look around, see what booty we can find..\n        /// </summary>\n        internal static string Dlg_ChineseTransmitter_02_08 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransmitter_02_08\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I see lots of cameras. You’ll have to turn them off..\n        /// </summary>\n        internal static string Dlg_ChineseTransmitter_03_01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransmitter_03_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The security center should be in the upper level..\n        /// </summary>\n        internal static string Dlg_ChineseTransmitter_03_02 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransmitter_03_02\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Copy..\n        /// </summary>\n        internal static string Dlg_ChineseTransmitter_03_03 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransmitter_03_03\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Can you hack those computers?.\n        /// </summary>\n        internal static string Dlg_ChineseTransmitter_04_01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransmitter_04_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Negative, too many of them. It would take ages..\n        /// </summary>\n        internal static string Dlg_ChineseTransmitter_04_02 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransmitter_04_02\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Then you’ll have to destroy the generator that powers this room..\n        /// </summary>\n        internal static string Dlg_ChineseTransmitter_04_03 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransmitter_04_03\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Destroying generators is my new hobby..\n        /// </summary>\n        internal static string Dlg_ChineseTransmitter_04_04 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransmitter_04_04\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Power is off, can you navigate me to the command center?.\n        /// </summary>\n        internal static string Dlg_ChineseTransmitter_05_01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransmitter_05_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Yes, it’s in the center of the asteroid..\n        /// </summary>\n        internal static string Dlg_ChineseTransmitter_05_02 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransmitter_05_02\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Great. Tarja, what’s your status?.\n        /// </summary>\n        internal static string Dlg_ChineseTransmitter_05_03 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransmitter_05_03\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to A few guards, no big deal. And we’ve got some sweet boo-tay..\n        /// </summary>\n        internal static string Dlg_ChineseTransmitter_05_04 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransmitter_05_04\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Er… No comment..\n        /// </summary>\n        internal static string Dlg_ChineseTransmitter_05_05 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransmitter_05_05\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to WAIT! I just made deep scan of the command center. It is heavily guarded..\n        /// </summary>\n        internal static string Dlg_ChineseTransmitter_06_01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransmitter_06_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Give me a minute and I’ll find where you can disable it..\n        /// </summary>\n        internal static string Dlg_ChineseTransmitter_06_02 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransmitter_06_02\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Apollo, hurry up, reinforcements just arrived!.\n        /// </summary>\n        internal static string Dlg_ChineseTransmitter_06_03 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransmitter_06_03\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I found it. Coordinates sent..\n        /// </summary>\n        internal static string Dlg_ChineseTransmitter_06_04 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransmitter_06_04\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hold on Tarja, I’m almost in the command center..\n        /// </summary>\n        internal static string Dlg_ChineseTransmitter_06_05 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransmitter_06_05\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Apollo, where are you? It’s getting pretty hot in here..\n        /// </summary>\n        internal static string Dlg_ChineseTransmitter_07_01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransmitter_07_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Go back to Madelyn, I can find my way out on my own..\n        /// </summary>\n        internal static string Dlg_ChineseTransmitter_07_02 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransmitter_07_02\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Negative, they cut us off..\n        /// </summary>\n        internal static string Dlg_ChineseTransmitter_07_03 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransmitter_07_03\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I’ll be there as fast as I can. Madelyn, is the command center safe now?.\n        /// </summary>\n        internal static string Dlg_ChineseTransmitter_07_04 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransmitter_07_04\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to If you turned off those turrets….\n        /// </summary>\n        internal static string Dlg_ChineseTransmitter_07_05 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransmitter_07_05\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Detector placed, I just hope they don’t spot it. Tarja, hold on, I’m on my way..\n        /// </summary>\n        internal static string Dlg_ChineseTransmitter_08_01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransmitter_08_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tarja, I’m glad you two are still alive!.\n        /// </summary>\n        internal static string Dlg_ChineseTransmitter_09_01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransmitter_09_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We won’t be much longer if we stand here and chat..\n        /// </summary>\n        internal static string Dlg_ChineseTransmitter_09_02 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransmitter_09_02\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to So let’s go. Madelyn, what’s your status?.\n        /// </summary>\n        internal static string Dlg_ChineseTransmitter_09_03 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransmitter_09_03\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ready when you are..\n        /// </summary>\n        internal static string Dlg_ChineseTransmitter_09_04 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransmitter_09_04\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Great, we’re on our way. Well, I think it was a success. .\n        /// </summary>\n        internal static string Dlg_ChineseTransmitter_09_05 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransmitter_09_05\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Just an everyday pillage and plunder..\n        /// </summary>\n        internal static string Dlg_ChineseTransmitter_09_06 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransmitter_09_06\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Arrrr! Them scurvy-ridden harbor hogs didn’t stand a chance..\n        /// </summary>\n        internal static string Dlg_ChineseTransmitter_09_07 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransmitter_09_07\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I think we’re all set, so you can belay the Jack Tar routine..\n        /// </summary>\n        internal static string Dlg_ChineseTransmitter_09_08 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransmitter_09_08\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Aye aye, cap’n..\n        /// </summary>\n        internal static string Dlg_ChineseTransmitter_09_09 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransmitter_09_09\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to No, really, please stop. Thank you..\n        /// </summary>\n        internal static string Dlg_ChineseTransmitter_09_10 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransmitter_09_10\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Mission complete. Madelyn, can you get us out of here?.\n        /// </summary>\n        internal static string Dlg_ChineseTransmitter_10_01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransmitter_10_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to If you give me a little push in the right direction….\n        /// </summary>\n        internal static string Dlg_ChineseTransmitter_10_02 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransmitter_10_02\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Russia. The radar array of Tver. .\n        /// </summary>\n        internal static string Dlg_ChineseTransmitter_10_03 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransmitter_10_03\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You want to save the EAC radar array for last, right?.\n        /// </summary>\n        internal static string Dlg_ChineseTransmitter_10_04 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransmitter_10_04\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I do..\n        /// </summary>\n        internal static string Dlg_ChineseTransmitter_10_05 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransmitter_10_05\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Course set. Dock in!.\n        /// </summary>\n        internal static string Dlg_ChineseTransmitter_10_06 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransmitter_10_06\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Changde. I hear this place is a tall stack of laughs..\n        /// </summary>\n        internal static string Dlg_ChineseTransport_01_01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransport_01_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Before taking over the cargo transport, you must disable the transmitter. .\n        /// </summary>\n        internal static string Dlg_ChineseTransport_01_02 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransport_01_02\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Otherwise the base will send a warning to the refinery. .\n        /// </summary>\n        internal static string Dlg_ChineseTransport_01_03 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransport_01_03\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to To do this, you need two security codes from the two different asteroid stations..\n        /// </summary>\n        internal static string Dlg_ChineseTransport_01_04 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransport_01_04\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Me and Tarja will go after the distant one. .\n        /// </summary>\n        internal static string Dlg_ChineseTransport_01_05 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransport_01_05\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Apollo, you and Valentin get the security code from the other base..\n        /// </summary>\n        internal static string Dlg_ChineseTransport_01_06 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransport_01_06\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Roger that..\n        /// </summary>\n        internal static string Dlg_ChineseTransport_01_07 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransport_01_07\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Security code acquired..\n        /// </summary>\n        internal static string Dlg_ChineseTransport_02_01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransport_02_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Good. Get outside the station and meet us on the way to the transmitter..\n        /// </summary>\n        internal static string Dlg_ChineseTransport_02_02 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransport_02_02\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Acknowledged..\n        /// </summary>\n        internal static string Dlg_ChineseTransport_02_03 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransport_02_03\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Damn! They’re shooting at me!.\n        /// </summary>\n        internal static string Dlg_ChineseTransport_03_01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransport_03_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Another bunch of red guards!.\n        /// </summary>\n        internal static string Dlg_ChineseTransport_04_01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransport_04_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Marcus, I may be running a little late..\n        /// </summary>\n        internal static string Dlg_ChineseTransport_04_02 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransport_04_02\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fine, I’ll take care of my own business and wait for you..\n        /// </summary>\n        internal static string Dlg_ChineseTransport_04_03 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransport_04_03\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We need to get rid of all the guards to get inside!.\n        /// </summary>\n        internal static string Dlg_ChineseTransport_05_01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransport_05_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I’ll go take care of the transport ship..\n        /// </summary>\n        internal static string Dlg_ChineseTransport_06_01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransport_06_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tarja, Valentin, Apollo – .\n        /// </summary>\n        internal static string Dlg_ChineseTransport_06_02 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransport_06_02\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to – you deactivate the security terminals and destroy the transmitter..\n        /// </summary>\n        internal static string Dlg_ChineseTransport_06_03 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransport_06_03\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Your turn, Apollo. Disable those two terminals..\n        /// </summary>\n        internal static string Dlg_ChineseTransport_07_01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransport_07_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Done. Now I’ll go place the bomb on the transmitter..\n        /// </summary>\n        internal static string Dlg_ChineseTransport_08_01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransport_08_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Placed. Everyone, quick, get to a safe distance!.\n        /// </summary>\n        internal static string Dlg_ChineseTransport_09_01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransport_09_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We’re almost good to go. I got the transporter..\n        /// </summary>\n        internal static string Dlg_ChineseTransport_11_01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransport_11_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Again, Apollo, Tarja, Valentin. .\n        /// </summary>\n        internal static string Dlg_ChineseTransport_11_02 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransport_11_02\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You need to get an entrance code from the transport control. .\n        /// </summary>\n        internal static string Dlg_ChineseTransport_11_03 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransport_11_03\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to On our way, boss..\n        /// </summary>\n        internal static string Dlg_ChineseTransport_11_04 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransport_11_04\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I’ve heard a lot about this place. They say over 40% of all plutonium ore comes from here..\n        /// </summary>\n        internal static string Dlg_ChineseTransport_12_01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransport_12_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to And dozens of miners die here every day, thanks to poor safety measures..\n        /// </summary>\n        internal static string Dlg_ChineseTransport_12_02 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransport_12_02\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to They choose this way of life. .\n        /// </summary>\n        internal static string Dlg_ChineseTransport_12_03 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransport_12_03\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The conditions may be inhuman, but the workers aren’t slaves. .\n        /// </summary>\n        internal static string Dlg_ChineseTransport_12_04 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransport_12_04\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to They’re free to leave anytime they want..\n        /// </summary>\n        internal static string Dlg_ChineseTransport_12_05 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransport_12_05\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to They need cash. And many of them can’t leave because of their families. .\n        /// </summary>\n        internal static string Dlg_ChineseTransport_12_06 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransport_12_06\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Take out those guards!.\n        /// </summary>\n        internal static string Dlg_ChineseTransport_13_01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransport_13_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Damn, the door is locked! We need to find some other way..\n        /// </summary>\n        internal static string Dlg_ChineseTransport_14_01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransport_14_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hah! I found another way..\n        /// </summary>\n        internal static string Dlg_ChineseTransport_15_01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransport_15_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ok, this is the computer that has the entry code!.\n        /// </summary>\n        internal static string Dlg_ChineseTransport_16_01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransport_16_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Apollo, what’s your status?.\n        /// </summary>\n        internal static string Dlg_ChineseTransport_17_01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransport_17_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We just got the code..\n        /// </summary>\n        internal static string Dlg_ChineseTransport_17_02 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransport_17_02\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Good! Hurry up then. I’ve got a welcoming committee here..\n        /// </summary>\n        internal static string Dlg_ChineseTransport_17_03 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransport_17_03\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Guys, help me get rid of these enemy fighters so we can roll!.\n        /// </summary>\n        internal static string Dlg_ChineseTransport_18_01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransport_18_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to EAC agents! We will crush you!.\n        /// </summary>\n        internal static string Dlg_ChineseTransport_19_01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransport_19_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Gosh, I love these Chinese special forces..\n        /// </summary>\n        internal static string Dlg_ChineseTransport_19_02 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransport_19_02\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Area clear. Docking in, I’m ready to depart for Jingzhou..\n        /// </summary>\n        internal static string Dlg_ChineseTransport_20_01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransport_20_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Excellent! You know the plan, I am wishing you best of luck!.\n        /// </summary>\n        internal static string Dlg_ChineseTransport_20_03 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ChineseTransport_20_03\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to This is just a placeholder which will be replaced later.\n        /// </summary>\n        internal static string Dlg_DialoguePlaceholder {\n            get {\n                return ResourceManager.GetString(\"Dlg_DialoguePlaceholder\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Here we are. Wow! They didn’t waste any time!.\n        /// </summary>\n        internal static string Dlg_EACPrison_0100 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_0100\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Epic! I’ve never seen anything like this..\n        /// </summary>\n        internal static string Dlg_EACPrison_0101 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_0101\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hail, colleagues! Events transpired faster than we expected..\n        /// </summary>\n        internal static string Dlg_EACPrison_0102 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_0102\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to As you can see, we are in the middle of a fight for Reway..\n        /// </summary>\n        internal static string Dlg_EACPrison_0103 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_0103\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to What happened?.\n        /// </summary>\n        internal static string Dlg_EACPrison_0104 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_0104\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to An EAC fleet guarding Reway was reported to be moving away….\n        /// </summary>\n        internal static string Dlg_EACPrison_0105 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_0105\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …to handle some more important “issues”. This gave us an opportunity to attack immediately..\n        /// </summary>\n        internal static string Dlg_EACPrison_0106 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_0106\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We must be quick, otherwise there will be reinforcements..\n        /// </summary>\n        internal static string Dlg_EACPrison_0107 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_0107\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Do you have any assignments for us? .\n        /// </summary>\n        internal static string Dlg_EACPrison_0108 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_0108\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Or do we just sneak in, disable the base defenses, and free my brother?.\n        /// </summary>\n        internal static string Dlg_EACPrison_0109 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_0109\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to That’s the plan. We have spec op forces assigned to liberate our prisoners.\n        /// </summary>\n        internal static string Dlg_EACPrison_0110 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_0110\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Get inside as fast as you can, free your brother, and get out of there!.\n        /// </summary>\n        internal static string Dlg_EACPrison_0111 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_0111\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You know this is the start of a war between EAC and FoR? Not just a rescue operation!.\n        /// </summary>\n        internal static string Dlg_EACPrison_0112 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_0112\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We realize that. Still, we prefer this to be a hit-and-run attack. .\n        /// </summary>\n        internal static string Dlg_EACPrison_0113 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_0113\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We will deal with the main EAC fleet later..\n        /// </summary>\n        internal static string Dlg_EACPrison_0114 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_0114\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Let’s go. Marcus is waiting..\n        /// </summary>\n        internal static string Dlg_EACPrison_0115 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_0115\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Shit, that was close! .\n        /// </summary>\n        internal static string Dlg_EACPrison_0200 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_0200\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Keep moving, we’re almost there..\n        /// </summary>\n        internal static string Dlg_EACPrison_0201 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_0201\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You need to destroy the solar panels powering the security system….\n        /// </summary>\n        internal static string Dlg_EACPrison_0300 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_0300\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …otherwise it’ll be impossible to get inside!.\n        /// </summary>\n        internal static string Dlg_EACPrison_0301 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_0301\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Almost done! .\n        /// </summary>\n        internal static string Dlg_EACPrison_0302 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_0302\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Apollo, critical update. EAC reinforcements just arrived. Three motherships..\n        /// </summary>\n        internal static string Dlg_EACPrison_0400 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_0400\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to One of our zeppelins, Schwalbe, is in trouble. Its aiming system is barely functioning..\n        /// </summary>\n        internal static string Dlg_EACPrison_0401 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_0401\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We cannot send any forces right now; our fighters are all engaged. Can you help them out?.\n        /// </summary>\n        internal static string Dlg_EACPrison_0402 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_0402\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to It won’t make life easier for us, but we’ll do what we can. .\n        /// </summary>\n        internal static string Dlg_EACPrison_0403 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_0403\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Do you see that mothership, EAC Liberator? .\n        /// </summary>\n        internal static string Dlg_EACPrison_0404 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_0404\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Their defense headquarters are located there. .\n        /// </summary>\n        internal static string Dlg_EACPrison_0405 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_0405\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We need you to destroy Liberator’s communication module! .\n        /// </summary>\n        internal static string Dlg_EACPrison_0406 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_0406\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Without Liberators’ lead, they’ll be lost! .\n        /// </summary>\n        internal static string Dlg_EACPrison_0407 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_0407\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to That’s a suicide mission! .\n        /// </summary>\n        internal static string Dlg_EACPrison_0408 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_0408\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We’ll cover you..\n        /// </summary>\n        internal static string Dlg_EACPrison_0409 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_0409\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Thanks. Ok, let’s move!.\n        /// </summary>\n        internal static string Dlg_EACPrison_0410 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_0410\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to That did the trick! .\n        /// </summary>\n        internal static string Dlg_EACPrison_0500 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_0500\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Great job. To all fighters: try to disengage and attack E.A.C. Liberator….\n        /// </summary>\n        internal static string Dlg_EACPrison_0501 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_0501\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …repeat: try to disengage and attack… (white noise).\n        /// </summary>\n        internal static string Dlg_EACPrison_0502 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_0502\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Let’s finish frying those solar panels..\n        /// </summary>\n        internal static string Dlg_EACPrison_0503 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_0503\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Security system disabled. Use the cargo bay to get inside the prison. .\n        /// </summary>\n        internal static string Dlg_EACPrison_0600 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_0600\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to And then? .\n        /// </summary>\n        internal static string Dlg_EACPrison_0601 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_0601\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hey, boss, I thought you had a plan!.\n        /// </summary>\n        internal static string Dlg_EACPrison_0602 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_0602\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I do. We go in and Marcus comes out!.\n        /// </summary>\n        internal static string Dlg_EACPrison_0603 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_0603\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I found several security hubs inside. Try to hack them and find a database of prisoners. .\n        /// </summary>\n        internal static string Dlg_EACPrison_0604 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_0604\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Authentication required – crap!.\n        /// </summary>\n        internal static string Dlg_EACPrison_0700 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_0700\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to What kind of authentication?.\n        /// </summary>\n        internal static string Dlg_EACPrison_0701 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_0701\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I don’t know. Retinal scan? I don’t understand these new models. .\n        /// </summary>\n        internal static string Dlg_EACPrison_0702 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_0702\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Let’s hope it uses normal ID cards. Find one. .\n        /// </summary>\n        internal static string Dlg_EACPrison_0703 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_0703\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to So it DOES use cards. Relax, Tarja, we don’t have to scoop out any EAC eyeballs..\n        /// </summary>\n        internal static string Dlg_EACPrison_0800 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_0800\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Oh, how thoughtful of you. .\n        /// </summary>\n        internal static string Dlg_EACPrison_0801 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_0801\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Return to the hub and use the ID. .\n        /// </summary>\n        internal static string Dlg_EACPrison_0802 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_0802\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We need to find out where Marcus is being held. Hurry, the battle won’t last much longer. .\n        /// </summary>\n        internal static string Dlg_EACPrison_0803 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_0803\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Here’s the data. Marcus Rainier, sector B-2, cell 38. .\n        /// </summary>\n        internal static string Dlg_EACPrison_0900 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_0900\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Perfect. You have to access the maintenance area; there’s no other way to the cells. .\n        /// </summary>\n        internal static string Dlg_EACPrison_0901 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_0901\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Of course, the area is well guarded… surprise, surprise. .\n        /// </summary>\n        internal static string Dlg_EACPrison_0902 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_0902\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Just tell which direction to shoot in… .\n        /// </summary>\n        internal static string Dlg_EACPrison_0903 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_0903\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to First, the easy work: use the hub to disconnect the generator. .\n        /// </summary>\n        internal static string Dlg_EACPrison_1000 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_1000\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to And then?.\n        /// </summary>\n        internal static string Dlg_EACPrison_1001 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_1001\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The usual stuff: shooting, dodging, maneuvering in narrow corridors….\n        /// </summary>\n        internal static string Dlg_EACPrison_1002 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_1002\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Marcus has to be nearby. Can you see cell 38?.\n        /// </summary>\n        internal static string Dlg_EACPrison_1100 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_1100\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Found it!.\n        /// </summary>\n        internal static string Dlg_EACPrison_1101 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_1101\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Marcus! I was… we though you are dead!.\n        /// </summary>\n        internal static string Dlg_EACPrison_1200 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_1200\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Apollo? What are you doing here? Valentin! Tarja! You’ve all been caught? .\n        /// </summary>\n        internal static string Dlg_EACPrison_1201 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_1201\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Marcus, we need to get you out of here, fast!.\n        /// </summary>\n        internal static string Dlg_EACPrison_1202 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_1202\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to How… Don’t tell me you stormed the prison and killed all the guards?.\n        /// </summary>\n        internal static string Dlg_EACPrison_1203 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_1203\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We had a little help from… “friends”. I’ll explain later..\n        /// </summary>\n        internal static string Dlg_EACPrison_1204 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_1204\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Madelyn, we have him!.\n        /// </summary>\n        internal static string Dlg_EACPrison_1205 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_1205\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Marcus! Are you all right? .\n        /// </summary>\n        internal static string Dlg_EACPrison_1206 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_1206\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You bastard! We thought you were dead! .\n        /// </summary>\n        internal static string Dlg_EACPrison_1207 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_1207\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Don’t worry; I’ll kill you the minute you set foot on my ship!.\n        /// </summary>\n        internal static string Dlg_EACPrison_1208 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_1208\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to So good to hear your voice again, Madelyn..\n        /// </summary>\n        internal static string Dlg_EACPrison_1209 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_1209\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Shhh, we have company..\n        /// </summary>\n        internal static string Dlg_EACPrison_1210 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_1210\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fly to the cargo bay, you have a chance to break through there!.\n        /// </summary>\n        internal static string Dlg_EACPrison_1300 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_1300\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Enemy spotted. In large quantities!.\n        /// </summary>\n        internal static string Dlg_EACPrison_1400 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_1400\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Engaging!.\n        /// </summary>\n        internal static string Dlg_EACPrison_1401 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_1401\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Move out! Fall back. .\n        /// </summary>\n        internal static string Dlg_EACPrison_1500 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_1500\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to What are THEY doing here?.\n        /// </summary>\n        internal static string Dlg_EACPrison_1501 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_1501\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I told you we brought “friends”..\n        /// </summary>\n        internal static string Dlg_EACPrison_1502 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_1502\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to So while I was in prison the world turned inside out?.\n        /// </summary>\n        internal static string Dlg_EACPrison_1503 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_1503\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Madelyn, prepare to dock us. .\n        /// </summary>\n        internal static string Dlg_EACPrison_1504 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_1504\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sapho is ready to fly as soon as you’ve boarded. Marcus, prepare to die..\n        /// </summary>\n        internal static string Dlg_EACPrison_1505 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_1505\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I love happy endings!.\n        /// </summary>\n        internal static string Dlg_EACPrison_1506 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_1506\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to If this were a real happy ending, all Fourth Reich ships would burn in hell….\n        /// </summary>\n        internal static string Dlg_EACPrison_1507 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_1507\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Be nice to our new “friends”!.\n        /// </summary>\n        internal static string Dlg_EACPrison_1510 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_1510\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sooner or later, you’ll be arrested too. Call this a practice run. .\n        /// </summary>\n        internal static string Dlg_EACPrison_1511 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_1511\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Before you tell me the whole story, one question: Where are we going now?.\n        /// </summary>\n        internal static string Dlg_EACPrison_1600 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_1600\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to EAC. The radar array at Silver Foresight..\n        /// </summary>\n        internal static string Dlg_EACPrison_1601 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_1601\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We need to place the final alien material detector there. .\n        /// </summary>\n        internal static string Dlg_EACPrison_1602 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_1602\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Right. Guess it’s a long story. Let’s jump on Sapho and talk on the way. .\n        /// </summary>\n        internal static string Dlg_EACPrison_1603 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_1603\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to And… nice to see you again, guys!.\n        /// </summary>\n        internal static string Dlg_EACPrison_1604 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACPrison_1604\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Military alert. Unreported Russian mother ships approaching..\n        /// </summary>\n        internal static string Dlg_EACSurveySite_0200 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACSurveySite_0200\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to What the hell?.\n        /// </summary>\n        internal static string Dlg_EACSurveySite_0201 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACSurveySite_0201\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Emergency. Evacuate the mines..\n        /// </summary>\n        internal static string Dlg_EACSurveySite_0202 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACSurveySite_0202\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We are under heavy attack. Enemies in superior numbers..\n        /// </summary>\n        internal static string Dlg_EACSurveySite_0203 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACSurveySite_0203\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Two mother ships with cruiser missiles stationed on periphery..\n        /// </summary>\n        internal static string Dlg_EACSurveySite_0204 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACSurveySite_0204\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Forty-six fighters inside the station..\n        /// </summary>\n        internal static string Dlg_EACSurveySite_0205 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACSurveySite_0205\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Still feeling bored, little brother?.\n        /// </summary>\n        internal static string Dlg_EACSurveySite_0206 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACSurveySite_0206\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Time to give that military education of mine a workout! Let’s kick some zhopa!.\n        /// </summary>\n        internal static string Dlg_EACSurveySite_0207 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACSurveySite_0207\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Calm down. First we need to get outside and get the situation report..\n        /// </summary>\n        internal static string Dlg_EACSurveySite_0208 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACSurveySite_0208\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Heavy civilian casualties. Evacuate station. Use the nearest exit or escape pod..\n        /// </summary>\n        internal static string Dlg_EACSurveySite_0209 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACSurveySite_0209\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Military, follow Protocol 1-1-9. Take whatever actions necessary to protect civilians..\n        /// </summary>\n        internal static string Dlg_EACSurveySite_0210 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACSurveySite_0210\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Captain, we are ready to help secure the situation..\n        /// </summary>\n        internal static string Dlg_EACSurveySite_0211 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACSurveySite_0211\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Two Arion MK7 Fighters, both pilots with advanced Greenbelt training..\n        /// </summary>\n        internal static string Dlg_EACSurveySite_0212 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACSurveySite_0212\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Marcus Rainier, do not engage enemy directly..\n        /// </summary>\n        internal static string Dlg_EACSurveySite_0213 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACSurveySite_0213\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We are overwhelmed at a rate of 1:7..\n        /// </summary>\n        internal static string Dlg_EACSurveySite_0213b {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACSurveySite_0213b\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Make your way out alive. We will oppose the Russian forces only if….\n        /// </summary>\n        internal static string Dlg_EACSurveySite_0214 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACSurveySite_0214\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to God, what’s going on?!.\n        /// </summary>\n        internal static string Dlg_EACSurveySite_0215 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACSurveySite_0215\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We need to get to the command center..\n        /// </summary>\n        internal static string Dlg_EACSurveySite_0216 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACSurveySite_0216\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Check out the situation and send a distress signal..\n        /// </summary>\n        internal static string Dlg_EACSurveySite_0217 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACSurveySite_0217\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Roger. Confirmed..\n        /// </summary>\n        internal static string Dlg_EACSurveySite_0218 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACSurveySite_0218\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to They just destroyed two civilian ships!.\n        /// </summary>\n        internal static string Dlg_EACSurveySite_0301 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACSurveySite_0301\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to What the hell are they up to?!.\n        /// </summary>\n        internal static string Dlg_EACSurveySite_0301b {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACSurveySite_0301b\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Just keep moving..\n        /// </summary>\n        internal static string Dlg_EACSurveySite_0302 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACSurveySite_0302\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cave-in. Help me blast it apart with missiles!.\n        /// </summary>\n        internal static string Dlg_EACSurveySite_0401 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACSurveySite_0401\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We need to follow this airway….\n        /// </summary>\n        internal static string Dlg_EACSurveySite_0501 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACSurveySite_0501\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …to the other side of the base to get to the command center..\n        /// </summary>\n        internal static string Dlg_EACSurveySite_0502 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACSurveySite_0502\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I hope this is the right decision!.\n        /// </summary>\n        internal static string Dlg_EACSurveySite_0503 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACSurveySite_0503\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Outside! Look!.\n        /// </summary>\n        internal static string Dlg_EACSurveySite_0601 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACSurveySite_0601\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to My God! Those ships are gargantuan!.\n        /// </summary>\n        internal static string Dlg_EACSurveySite_0602 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACSurveySite_0602\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Looks like they’re about to turn this station into gravel..\n        /// </summary>\n        internal static string Dlg_EACSurveySite_0603 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACSurveySite_0603\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Why…? This is a civilian operation! What are they thinking?!.\n        /// </summary>\n        internal static string Dlg_EACSurveySite_0604 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACSurveySite_0604\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hurry up, we need to get to the other side! Pronto!.\n        /// </summary>\n        internal static string Dlg_EACSurveySite_0605 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACSurveySite_0605\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Madelyn, do you copy?.\n        /// </summary>\n        internal static string Dlg_EACSurveySite_0701 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACSurveySite_0701\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Marcus! What’s going on over there?.\n        /// </summary>\n        internal static string Dlg_EACSurveySite_0702 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACSurveySite_0702\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to This is serious. Our survey site is under attack. Heavy casualties. Enemy unknown..\n        /// </summary>\n        internal static string Dlg_EACSurveySite_0703 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACSurveySite_0703\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Madelyn, we need you to get us out of here..\n        /// </summary>\n        internal static string Dlg_EACSurveySite_0704 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACSurveySite_0704\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Go to the hangar 1 and wait there..\n        /// </summary>\n        internal static string Dlg_EACSurveySite_0705 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACSurveySite_0705\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Madelyn, we’ll be at the meeting point on time. Just… try to hurry..\n        /// </summary>\n        internal static string Dlg_EACSurveySite_0709 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACSurveySite_0709\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I just received a distress call..\n        /// </summary>\n        internal static string Dlg_EACSurveySite_0710 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACSurveySite_0710\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to There are lot miners near you. Go help them..\n        /// </summary>\n        internal static string Dlg_EACSurveySite_0711 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACSurveySite_0711\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Get ready for pickup!.\n        /// </summary>\n        internal static string Dlg_EACSurveySite_0801 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACSurveySite_0801\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ready for a ride, Apollo?.\n        /// </summary>\n        internal static string Dlg_EACSurveySite_0802 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACSurveySite_0802\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Yes, let’s get out of here!.\n        /// </summary>\n        internal static string Dlg_EACSurveySite_0803 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACSurveySite_0803\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Our next stop is Russian Trade Station Laika, the station with which the Russian….\n        /// </summary>\n        internal static string Dlg_EACSurveySite_0804 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACSurveySite_0804\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …motherships had an open communication channel during the assault on EAC Survey Site..\n        /// </summary>\n        internal static string Dlg_EACSurveySite_0805 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACSurveySite_0805\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Damn, the whole command center is offline..\n        /// </summary>\n        internal static string Dlg_EACSurveySite_0901 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACSurveySite_0901\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The generators are fried. I can’t believe this is happening!.\n        /// </summary>\n        internal static string Dlg_EACSurveySite_0902 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACSurveySite_0902\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Let’s head to the basement and try to fire up the emergency power unit..\n        /// </summary>\n        internal static string Dlg_EACSurveySite_0903 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACSurveySite_0903\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Affirmative..\n        /// </summary>\n        internal static string Dlg_EACSurveySite_0904 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACSurveySite_0904\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to It should work now. Fingers crossed..\n        /// </summary>\n        internal static string Dlg_EACSurveySite_1001 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACSurveySite_1001\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Looks like it worked – the automated vendor next door is online again..\n        /// </summary>\n        internal static string Dlg_EACSurveySite_1002 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACSurveySite_1002\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Well, we could use some more supplies..\n        /// </summary>\n        internal static string Dlg_EACSurveySite_1003 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACSurveySite_1003\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Too bad we can’t help ourselves, even in an emergency..\n        /// </summary>\n        internal static string Dlg_EACSurveySite_1003b {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACSurveySite_1003b\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to That’s the Trader’s Guild for you. No free goods. No exceptions..\n        /// </summary>\n        internal static string Dlg_EACSurveySite_1004 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACSurveySite_1004\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Check it if you want but we should get to the command center ASAP..\n        /// </summary>\n        internal static string Dlg_EACSurveySite_1005 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACSurveySite_1005\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to What now? We can’t hide here forever..\n        /// </summary>\n        internal static string Dlg_EACSurveySite_1201 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACSurveySite_1201\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Trust me. There are soldiers protecting us..\n        /// </summary>\n        internal static string Dlg_EACSurveySite_1202 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACSurveySite_1202\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to They should be here soon..\n        /// </summary>\n        internal static string Dlg_EACSurveySite_1203 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACSurveySite_1203\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to There seem to be some friends alive..\n        /// </summary>\n        internal static string Dlg_EACSurveySite_1204 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACSurveySite_1204\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I knew you hadn’t abandoned us!.\n        /// </summary>\n        internal static string Dlg_EACSurveySite_1301 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACSurveySite_1301\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Are the enemies eliminated? Is the area secure now?.\n        /// </summary>\n        internal static string Dlg_EACSurveySite_1302 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACSurveySite_1302\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Secure? Negative. The situation is a bit more–.\n        /// </summary>\n        internal static string Dlg_EACSurveySite_1303 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACSurveySite_1303\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We’ve had massive casualties. The enemy crushed our defenses..\n        /// </summary>\n        internal static string Dlg_EACSurveySite_1304 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACSurveySite_1304\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The place is ready to blow..\n        /// </summary>\n        internal static string Dlg_EACSurveySite_1305 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACSurveySite_1305\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to –fluid than that..\n        /// </summary>\n        internal static string Dlg_EACSurveySite_1306 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACSurveySite_1306\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Wha-what? We are dead!.\n        /// </summary>\n        internal static string Dlg_EACSurveySite_1307 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACSurveySite_1307\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Take it easy. Just follow us, we’ll make it through..\n        /// </summary>\n        internal static string Dlg_EACSurveySite_1308 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACSurveySite_1308\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to At your back, sir. Lead the way!.\n        /// </summary>\n        internal static string Dlg_EACSurveySite_1309 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACSurveySite_1309\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …secure the data from all research facilities….\n        /// </summary>\n        internal static string Dlg_EACSurveySite_1401 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACSurveySite_1401\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …prepare missile barrage….\n        /// </summary>\n        internal static string Dlg_EACSurveySite_1501 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACSurveySite_1501\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …Remember to keep no one alive. This mission is classified….\n        /// </summary>\n        internal static string Dlg_EACSurveySite_1601 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACSurveySite_1601\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to General, we have secured 17 hostages in upper satellite wing. Orders?.\n        /// </summary>\n        internal static string Dlg_EACSurveySite_1701 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACSurveySite_1701\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …Kill them. Leave no witnesses….\n        /// </summary>\n        internal static string Dlg_EACSurveySite_1702 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACSurveySite_1702\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …send encoded transmission to L-K. We found….\n        /// </summary>\n        internal static string Dlg_EACSurveySite_1801 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACSurveySite_1801\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Madelyn better be here!.\n        /// </summary>\n        internal static string Dlg_EACSurveySite_2101 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACSurveySite_2101\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You can never find a cab when you need one!.\n        /// </summary>\n        internal static string Dlg_EACSurveySite_2102 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACSurveySite_2102\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to General, we found no indications of the presence of the artifact….\n        /// </summary>\n        internal static string Dlg_EACSurveySite_2201 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACSurveySite_2201\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …the artifact is not… ?.\n        /// </summary>\n        internal static string Dlg_EACSurveySite_2301 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACSurveySite_2301\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …two miners escaped?….\n        /// </summary>\n        internal static string Dlg_EACSurveySite_2401 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EACSurveySite_2401\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Here we are. Silver Foresight. Our last location to place an alien material detector..\n        /// </summary>\n        internal static string Dlg_EacTransmitter_0101 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EacTransmitter_0101\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …and then what?.\n        /// </summary>\n        internal static string Dlg_EacTransmitter_0102 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EacTransmitter_0102\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Who knows? Armageddon? Spiritual enlightenment? Tic-tac-toe? Anyway, we’ve got….\n        /// </summary>\n        internal static string Dlg_EacTransmitter_0103 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EacTransmitter_0103\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …business to do here first..\n        /// </summary>\n        internal static string Dlg_EacTransmitter_0104 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EacTransmitter_0104\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ok, pay attention now. We’ll approach the cargo storage area and place an explosive….\n        /// </summary>\n        internal static string Dlg_EacTransmitter_0105 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EacTransmitter_0105\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …device on its doors. That’ll distract them for a while. Apollo, you and I will head to….\n        /// </summary>\n        internal static string Dlg_EacTransmitter_0106 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EacTransmitter_0106\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …the control room. Tarja and Valentin will stay put..\n        /// </summary>\n        internal static string Dlg_EacTransmitter_0107 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EacTransmitter_0107\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Nice, there should be some interesting stuff to loot..\n        /// </summary>\n        internal static string Dlg_EacTransmitter_0108 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EacTransmitter_0108\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ought to help me pay for my new implants!.\n        /// </summary>\n        internal static string Dlg_EacTransmitter_0109 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EacTransmitter_0109\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tarja!.\n        /// </summary>\n        internal static string Dlg_EacTransmitter_0110 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EacTransmitter_0110\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Retinal implants..\n        /// </summary>\n        internal static string Dlg_EacTransmitter_0111 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EacTransmitter_0111\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Come on folks, let’s move. I’ll stay at a safe distance as usual..\n        /// </summary>\n        internal static string Dlg_EacTransmitter_0112 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EacTransmitter_0112\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ok, Valentin and I will stay here. Head to the control room and do what you need to do..\n        /// </summary>\n        internal static string Dlg_EacTransmitter_0201 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EacTransmitter_0201\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Get moving, guys. Watch out for military presence. It’s well known that this….\n        /// </summary>\n        internal static string Dlg_EacTransmitter_0202 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EacTransmitter_0202\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …radar array has tactical value..\n        /// </summary>\n        internal static string Dlg_EacTransmitter_0203 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EacTransmitter_0203\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to So many doors, so little time..\n        /// </summary>\n        internal static string Dlg_EacTransmitter_0301 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EacTransmitter_0301\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hope everything goes smoothly here. My energy’s a little low after that….\n        /// </summary>\n        internal static string Dlg_EacTransmitter_0302 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EacTransmitter_0302\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …golf vacation at Reway..\n        /// </summary>\n        internal static string Dlg_EacTransmitter_0303 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EacTransmitter_0303\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Don’t worry brother, I’ll pick up your slack. Let’s head to satellite A first, and….\n        /// </summary>\n        internal static string Dlg_EacTransmitter_0304 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EacTransmitter_0304\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …reprogram that puppy..\n        /// </summary>\n        internal static string Dlg_EacTransmitter_0305 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EacTransmitter_0305\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Damn, a security trap! We’ve set off an auto-destruct sequence. What’s going on?!.\n        /// </summary>\n        internal static string Dlg_EacTransmitter_0401 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EacTransmitter_0401\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Apollo, watch out! Turrets have been activated….\n        /// </summary>\n        internal static string Dlg_EacTransmitter_0402 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EacTransmitter_0402\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Doors have been locked! Destroy that panel overhead, hurry!.\n        /// </summary>\n        internal static string Dlg_EacTransmitter_0403 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EacTransmitter_0403\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Can you pick up the pace, guys?.\n        /// </summary>\n        internal static string Dlg_EacTransmitter_0406 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EacTransmitter_0406\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Apollo, let’s head to control room. The main computer should be there….\n        /// </summary>\n        internal static string Dlg_EacTransmitter_0407 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EacTransmitter_0407\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Maybe we can use it to turn off the auto-destruct..\n        /// </summary>\n        internal static string Dlg_EacTransmitter_0408 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EacTransmitter_0408\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Marcus, what now? Auto-destruct can’t be turned off….\n        /// </summary>\n        internal static string Dlg_EacTransmitter_0501 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EacTransmitter_0501\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to It seems there are some overburdened aggregators..\n        /// </summary>\n        internal static string Dlg_EacTransmitter_0502 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EacTransmitter_0502\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Aggregators? Ok bro, you go destroy the two on the right side of station….\n        /// </summary>\n        internal static string Dlg_EacTransmitter_0503 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EacTransmitter_0503\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I’ll take care of these two on the left side..\n        /// </summary>\n        internal static string Dlg_EacTransmitter_0504 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EacTransmitter_0504\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to What makes you think that will work?.\n        /// </summary>\n        internal static string Dlg_EacTransmitter_0505 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EacTransmitter_0505\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hope and faith..\n        /// </summary>\n        internal static string Dlg_EacTransmitter_0506 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EacTransmitter_0506\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Great! Destroying the aggregators stopped the auto-destruct sequence..\n        /// </summary>\n        internal static string Dlg_EacTransmitter_0601 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EacTransmitter_0601\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Woohoo, they did it!.\n        /// </summary>\n        internal static string Dlg_EacTransmitter_0602 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EacTransmitter_0602\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to That’s our boy..\n        /// </summary>\n        internal static string Dlg_EacTransmitter_0603 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EacTransmitter_0603\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Marcus? Are you ready to rock’n’roll?.\n        /// </summary>\n        internal static string Dlg_EacTransmitter_0604 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EacTransmitter_0604\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Crap! Apollo, get here, fast! I’ve got company. .\n        /// </summary>\n        internal static string Dlg_EacTransmitter_0605 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EacTransmitter_0605\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Thanks, brother, I owe you again. That was close….\n        /// </summary>\n        internal static string Dlg_EacTransmitter_0701 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EacTransmitter_0701\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Come on! Time to hack satellites B and C..\n        /// </summary>\n        internal static string Dlg_EacTransmitter_0702 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EacTransmitter_0702\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Agreed. No time to waste..\n        /// </summary>\n        internal static string Dlg_EacTransmitter_0703 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EacTransmitter_0703\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Satellite B reprogrammed!.\n        /// </summary>\n        internal static string Dlg_EacTransmitter_0801 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EacTransmitter_0801\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to On to satellite C. Almost there!.\n        /// </summary>\n        internal static string Dlg_EacTransmitter_0802 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EacTransmitter_0802\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Satellite C reprogrammed. We can start the transmission now!.\n        /// </summary>\n        internal static string Dlg_EacTransmitter_0901 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EacTransmitter_0901\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Years of hard work, and it all comes down to this moment!.\n        /// </summary>\n        internal static string Dlg_EacTransmitter_0902 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EacTransmitter_0902\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Damn it, it won’t start. .\n        /// </summary>\n        internal static string Dlg_EacTransmitter_1001 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EacTransmitter_1001\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Try to find some components to repair the generator….\n        /// </summary>\n        internal static string Dlg_EacTransmitter_1002 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EacTransmitter_1002\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Then we can pull some energy from the lower solar panels to jump-start it..\n        /// </summary>\n        internal static string Dlg_EacTransmitter_1003 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EacTransmitter_1003\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Great idea, Madelyn. We can’t be defeated this close to our goal..\n        /// </summary>\n        internal static string Dlg_EacTransmitter_1004 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EacTransmitter_1004\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Go!.\n        /// </summary>\n        internal static string Dlg_EacTransmitter_1005 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EacTransmitter_1005\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to It reads “Generator Repair Kit”. Something tells me it’ll work..\n        /// </summary>\n        internal static string Dlg_EacTransmitter_1101 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EacTransmitter_1101\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ok, I’ll get to work. According to the floor plan, the generator is in the neighborhood..\n        /// </summary>\n        internal static string Dlg_EacTransmitter_1102 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EacTransmitter_1102\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Good job. Now just redirect energy from the lower solar panels to this generator..\n        /// </summary>\n        internal static string Dlg_EacTransmitter_1201 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EacTransmitter_1201\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hope it’ll work!.\n        /// </summary>\n        internal static string Dlg_EacTransmitter_1202 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EacTransmitter_1202\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Of course it will, sweetheart!.\n        /// </summary>\n        internal static string Dlg_EacTransmitter_1203 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EacTransmitter_1203\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Yeah, that’s what I’m talking about..\n        /// </summary>\n        internal static string Dlg_EacTransmitter_1301 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EacTransmitter_1301\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We can start the triangulation now. This is quite a moment in history!.\n        /// </summary>\n        internal static string Dlg_EacTransmitter_1302 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EacTransmitter_1302\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I’m so proud of you, guys..\n        /// </summary>\n        internal static string Dlg_EacTransmitter_1303 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EacTransmitter_1303\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Me too. Seriously..\n        /// </summary>\n        internal static string Dlg_EacTransmitter_1304 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EacTransmitter_1304\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Triangulation in progress. Sending echo to Thomas….\n        /// </summary>\n        internal static string Dlg_EacTransmitter_1401 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EacTransmitter_1401\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to All three detectors are functional! We’re getting the data! I’m picking up results! And….\n        /// </summary>\n        internal static string Dlg_EacTransmitter_1402 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EacTransmitter_1402\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You’ve got the locations of more alien artifacts?.\n        /// </summary>\n        internal static string Dlg_EacTransmitter_1403 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EacTransmitter_1403\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I’ve got a location..\n        /// </summary>\n        internal static string Dlg_EacTransmitter_1404 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EacTransmitter_1404\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to What do you mean? I thought there were multiple artifacts?.\n        /// </summary>\n        internal static string Dlg_EacTransmitter_1405 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EacTransmitter_1405\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ehm. According to the results, one of the spots containing this alien material is….\n        /// </summary>\n        internal static string Dlg_EacTransmitter_1406 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EacTransmitter_1406\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …far denser than the others. Also, the detectors don’t seem to be strong enough….\n        /// </summary>\n        internal static string Dlg_EacTransmitter_1407 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EacTransmitter_1407\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …to ping all the locations. They didn’t even find the two pieces we already have..\n        /// </summary>\n        internal static string Dlg_EacTransmitter_1408 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EacTransmitter_1408\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to That means…?.\n        /// </summary>\n        internal static string Dlg_EacTransmitter_1409 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EacTransmitter_1409\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to That means we’ve found one location with one huge alien thing. Am I correct?.\n        /// </summary>\n        internal static string Dlg_EacTransmitter_1410 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EacTransmitter_1410\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You are. When you depart from Foresight, pick me up….\n        /// </summary>\n        internal static string Dlg_EacTransmitter_1411 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EacTransmitter_1411\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …and we’ll head together to the marked location. I want to see it with my own eyes..\n        /// </summary>\n        internal static string Dlg_EacTransmitter_1412 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EacTransmitter_1412\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to On our way..\n        /// </summary>\n        internal static string Dlg_EacTransmitter_1413 {\n            get {\n                return ResourceManager.GetString(\"Dlg_EacTransmitter_1413\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You have received two new missions available from solar map..\n        /// </summary>\n        internal static string Dlg_FortValiant_SlaveMission_01_TemplarGuard {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiant_SlaveMission_01_TemplarGuard\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Majestic Fort Valiant! Right before our very eyes!.\n        /// </summary>\n        internal static string Dlg_FortValiantA_0100 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantA_0100\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I’ve always dreamt of being a knight. Rescuing dragons, slaying princesses….\n        /// </summary>\n        internal static string Dlg_FortValiantA_0101 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantA_0101\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sounds like you had a plan!.\n        /// </summary>\n        internal static string Dlg_FortValiantA_0102 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantA_0102\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Okay, back to reality: Any idea who we should talk to about the artifact?.\n        /// </summary>\n        internal static string Dlg_FortValiantA_0103 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantA_0103\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We need to meet with high-ranking Templar officials and that won’t be easy. .\n        /// </summary>\n        internal static string Dlg_FortValiantA_0104 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantA_0104\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Impossible might be a better word..\n        /// </summary>\n        internal static string Dlg_FortValiantA_0105 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantA_0105\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to So what do you suggest, guys?.\n        /// </summary>\n        internal static string Dlg_FortValiantA_0106 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantA_0106\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hm… asking at the gates, maybe?.\n        /// </summary>\n        internal static string Dlg_FortValiantA_0107 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantA_0107\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to What would we do without you, Madelyn?.\n        /// </summary>\n        internal static string Dlg_FortValiantA_0108 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantA_0108\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Templars hire contractors to do dirty work for them. .\n        /// </summary>\n        internal static string Dlg_FortValiantA_0109 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantA_0109\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You know – hunting down pirates and slavers. .\n        /// </summary>\n        internal static string Dlg_FortValiantA_0110 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantA_0110\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Do one or two jobs for them….\n        /// </summary>\n        internal static string Dlg_FortValiantA_0111 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantA_0111\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …and we might get a step closer to a meeting with the patriarchs..\n        /// </summary>\n        internal static string Dlg_FortValiantA_0112 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantA_0112\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to That… would take some time. But at least it’s a plan. .\n        /// </summary>\n        internal static string Dlg_FortValiantA_0113 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantA_0113\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to And besides meeting with the higher-ups….\n        /// </summary>\n        internal static string Dlg_FortValiantA_0114 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantA_0114\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …we can get our hands on some cash as well and some cool Templar gadgets..\n        /// </summary>\n        internal static string Dlg_FortValiantA_0115 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantA_0115\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hail visitors! Please, state the nature of your business..\n        /// </summary>\n        internal static string Dlg_FortValiantA_0200 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantA_0200\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We are mercenaries. Offering services for good cause at decent rates..\n        /// </summary>\n        internal static string Dlg_FortValiantA_0201 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantA_0201\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Acknowledged. .\n        /// </summary>\n        internal static string Dlg_FortValiantA_0202 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantA_0202\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Proceed to the Hall of Swords and meet with Captain Cedric of the Protectors division. .\n        /// </summary>\n        internal static string Dlg_FortValiantA_0203 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantA_0203\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Much gratitude, my friend! .\n        /// </summary>\n        internal static string Dlg_FortValiantA_0204 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantA_0204\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Greetings. You are the new recruits?.\n        /// </summary>\n        internal static string Dlg_FortValiantA_0300 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantA_0300\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Independent contractors. .\n        /// </summary>\n        internal static string Dlg_FortValiantA_0301 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantA_0301\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Good, good. We have several problems in remote sectors which….\n        /// </summary>\n        internal static string Dlg_FortValiantA_0302 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantA_0302\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …for regulous reasons we cannot handle with our regular troops..\n        /// </summary>\n        internal static string Dlg_FortValiantA_0303 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantA_0303\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Recently, there have been numerous slaver raids in the asteroid fields around….\n        /// </summary>\n        internal static string Dlg_FortValiantA_0304 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantA_0304\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …sector Z7 of the Jupiter belt..\n        /// </summary>\n        internal static string Dlg_FortValiantA_0305 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantA_0305\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We have the rumored location of a slaver base. If you accept this assignment, ….\n        /// </summary>\n        internal static string Dlg_FortValiantA_0306 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantA_0306\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …you will travel there, put a stop to the slavers’ vicious activity and free the captives..\n        /// </summary>\n        internal static string Dlg_FortValiantA_0307 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantA_0307\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Peacefully or forcefully, it is your prerogative..\n        /// </summary>\n        internal static string Dlg_FortValiantA_0308 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantA_0308\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to And the reward?.\n        /// </summary>\n        internal static string Dlg_FortValiantA_0309 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantA_0309\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Depends on how much… “work” is required. .\n        /// </summary>\n        internal static string Dlg_FortValiantA_0310 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantA_0310\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The range is 5–15 thousand credits for each of you..\n        /// </summary>\n        internal static string Dlg_FortValiantA_0311 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantA_0311\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Agreed. .\n        /// </summary>\n        internal static string Dlg_FortValiantA_0312 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantA_0312\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Excellent. I am transmitting the coordinates to you. Once you are done….\n        /// </summary>\n        internal static string Dlg_FortValiantA_0313 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantA_0313\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …return to me for the reward, as well as further tasks if mutually agreed upon..\n        /// </summary>\n        internal static string Dlg_FortValiantA_0314 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantA_0314\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Understood. Farewell, then, Captain…?.\n        /// </summary>\n        internal static string Dlg_FortValiantA_0315 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantA_0315\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cedric. Farewell, and may God smile upon your mission!.\n        /// </summary>\n        internal static string Dlg_FortValiantA_0316 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantA_0316\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ok, guys. Whenever you’re ready, jump in!.\n        /// </summary>\n        internal static string Dlg_FortValiantA_0317 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantA_0317\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to But you might want to think about buying some supplies and ammo here at Valiant..\n        /// </summary>\n        internal static string Dlg_FortValiantA_0318 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantA_0318\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The Templars should have a pretty mean selection of goods..\n        /// </summary>\n        internal static string Dlg_FortValiantA_0319 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantA_0319\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to As far as I know, most of their really cool stuff is only for members of the Order. .\n        /// </summary>\n        internal static string Dlg_FortValiantA_0320 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantA_0320\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Not available to us. At least for now. .\n        /// </summary>\n        internal static string Dlg_FortValiantA_0321 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantA_0321\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to At least legally..\n        /// </summary>\n        internal static string Dlg_FortValiantA_0322 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantA_0322\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Never mind, then. Just check out the vendors. .\n        /// </summary>\n        internal static string Dlg_FortValiantA_0323 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantA_0323\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The basic stuff should be readily available from them..\n        /// </summary>\n        internal static string Dlg_FortValiantA_0324 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantA_0324\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We might get to the specialty items later, once we earn the Templars’ confidence.  .\n        /// </summary>\n        internal static string Dlg_FortValiantA_0325 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantA_0325\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Here we are. I suggest heading straight to Captain Cedric for debriefing and some cash..\n        /// </summary>\n        internal static string Dlg_FortValiantB_0100 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantB_0100\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Right. On our way..\n        /// </summary>\n        internal static string Dlg_FortValiantB_0101 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantB_0101\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Oh, and try to find a subtle way to ask about a permit to buy more advanced equipment. .\n        /// </summary>\n        internal static string Dlg_FortValiantB_0102 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantB_0102\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Greetings! Welcome to Valiant again! .\n        /// </summary>\n        internal static string Dlg_FortValiantB_0201 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantB_0201\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I’ve seen the mission report you sent. Excellent results! .\n        /// </summary>\n        internal static string Dlg_FortValiantB_0202 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantB_0202\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sad you couldn’t resolve it in a peaceful way – but still, well done! .\n        /// </summary>\n        internal static string Dlg_FortValiantB_0203 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantB_0203\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I have ordered a cash transfer of 10,000 credits to each of you. .\n        /// </summary>\n        internal static string Dlg_FortValiantB_0204 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantB_0204\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to By the way – can we get our mitts on a Templar supplementary license?.\n        /// </summary>\n        internal static string Dlg_FortValiantB_0205 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantB_0205\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Assuming you join us in our campaign toward protecting interstellar justice! .\n        /// </summary>\n        internal static string Dlg_FortValiantB_0207 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantB_0207\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Just sign this document and… .\n        /// </summary>\n        internal static string Dlg_FortValiantB_0208 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantB_0208\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …signed….\n        /// </summary>\n        internal static string Dlg_FortValiantB_0209 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantB_0209\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fine! .\n        /// </summary>\n        internal static string Dlg_FortValiantB_0210 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantB_0210\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Now, as fellow believers, you have access to specialized Templar supplies and equipment..\n        /// </summary>\n        internal static string Dlg_FortValiantB_0211 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantB_0211\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to It’s not everything our Order has to offer, but considering you are such new members….\n        /// </summary>\n        internal static string Dlg_FortValiantB_0212 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantB_0212\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …you should be amazed!.\n        /// </summary>\n        internal static string Dlg_FortValiantB_0213 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantB_0213\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to So! Are you eager for another assignment?.\n        /// </summary>\n        internal static string Dlg_FortValiantB_0214 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantB_0214\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sure!.\n        /// </summary>\n        internal static string Dlg_FortValiantB_0215 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantB_0215\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sure….\n        /// </summary>\n        internal static string Dlg_FortValiantB_0216 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantB_0216\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Then here it is. It’s… an another slaver base wipeout!.\n        /// </summary>\n        internal static string Dlg_FortValiantB_0217 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantB_0217\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Great!.\n        /// </summary>\n        internal static string Dlg_FortValiantB_0218 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantB_0218\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Great….\n        /// </summary>\n        internal static string Dlg_FortValiantB_0219 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantB_0219\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to If you’re interested, just use the coordinates I’ve transmitted. .\n        /// </summary>\n        internal static string Dlg_FortValiantB_0220 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantB_0220\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Payment as usual, based on your mission report. And… good luck!.\n        /// </summary>\n        internal static string Dlg_FortValiantB_0221 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantB_0221\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ok, guys, you know the drill. Meet me at the docks when you’re ready to head out. .\n        /// </summary>\n        internal static string Dlg_FortValiantB_0222 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantB_0222\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to But first, check out those new supplies and equipment.  .\n        /// </summary>\n        internal static string Dlg_FortValiantB_0223 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantB_0223\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to One more thing. Captain Cedric?.\n        /// </summary>\n        internal static string Dlg_FortValiantB_0224 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantB_0224\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I’m all ears!.\n        /// </summary>\n        internal static string Dlg_FortValiantB_0225 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantB_0225\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We need you to arrange a meeting for us with high-ranking Templar officials. .\n        /// </summary>\n        internal static string Dlg_FortValiantB_0226 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantB_0226\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We have some important matters to discuss. .\n        /// </summary>\n        internal static string Dlg_FortValiantB_0227 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantB_0227\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You mean the patriarchs? That… won’t be easy. But….\n        /// </summary>\n        internal static string Dlg_FortValiantB_0228 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantB_0228\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …if you do well on this mission, I’ll recommend you for an audience..\n        /// </summary>\n        internal static string Dlg_FortValiantB_0229 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantB_0229\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to When you get back, I’ll let you know whether I succeeded. .\n        /// </summary>\n        internal static string Dlg_FortValiantB_0230 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantB_0230\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fort Valiant, here we come. .\n        /// </summary>\n        internal static string Dlg_FortValiantC_0100 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_0100\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I hope Captain Cedric has some good news for us. .\n        /// </summary>\n        internal static string Dlg_FortValiantC_0101 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_0101\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Marcus Rainier to Captain Cedric. .\n        /// </summary>\n        internal static string Dlg_FortValiantC_0102 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_0102\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hail!.\n        /// </summary>\n        internal static string Dlg_FortValiantC_0103 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_0103\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We’ve returned. The second Slavers operation was successful. .\n        /// </summary>\n        internal static string Dlg_FortValiantC_0104 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_0104\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I’ve gone through the reports you sent. Good work, again! .\n        /// </summary>\n        internal static string Dlg_FortValiantC_0105 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_0105\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I will transfer you the financial reward. Are you ready for another assignment?.\n        /// </summary>\n        internal static string Dlg_FortValiantC_0106 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_0106\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Maybe later, first….\n        /// </summary>\n        internal static string Dlg_FortValiantC_0107 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_0107\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …the audience with patriarchs. Do you have any news for us?.\n        /// </summary>\n        internal static string Dlg_FortValiantC_0108 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_0108\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Indeed! The patriarchs are willing to give you an audience..\n        /// </summary>\n        internal static string Dlg_FortValiantC_0109 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_0109\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Proceed to the Chamber of the Council..\n        /// </summary>\n        internal static string Dlg_FortValiantC_0110 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_0110\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hail there! You have permission to pass into the Council Chambers….\n        /// </summary>\n        internal static string Dlg_FortValiantC_0200 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_0200\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …the patriarchs await you!.\n        /// </summary>\n        internal static string Dlg_FortValiantC_0201 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_0201\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You are clear to proceed..\n        /// </summary>\n        internal static string Dlg_FortValiantC_0300 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_0300\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to May the Council’s advice bring you the blessings you seek on your journey!.\n        /// </summary>\n        internal static string Dlg_FortValiantC_0301 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_0301\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Welcome. May the audience begin. Speak your Truth!.\n        /// </summary>\n        internal static string Dlg_FortValiantC_0400 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_0400\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We seek an artifact. An alien artifact. Remains of an ancient civilization. .\n        /// </summary>\n        internal static string Dlg_FortValiantC_0401 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_0401\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We have reason to believe you have come in contact with it. .\n        /// </summary>\n        internal static string Dlg_FortValiantC_0402 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_0402\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We would be grateful for any leads that might help us find it. .\n        /// </summary>\n        internal static string Dlg_FortValiantC_0403 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_0403\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We have no idea what you are talking about. .\n        /// </summary>\n        internal static string Dlg_FortValiantC_0404 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_0404\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We neither know about any artifact you call “alien”….\n        /// </summary>\n        internal static string Dlg_FortValiantC_0405 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_0405\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …nor do we believe in the existence of such..\n        /// </summary>\n        internal static string Dlg_FortValiantC_0406 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_0406\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I don’t believe a word he’s saying..\n        /// </summary>\n        internal static string Dlg_FortValiantC_0407 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_0407\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Me either, but there’s nothing we can do about it now. .\n        /// </summary>\n        internal static string Dlg_FortValiantC_0408 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_0408\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Let’s get our equipment back and head back to Sapho..\n        /// </summary>\n        internal static string Dlg_FortValiantC_0409 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_0409\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Are there any other matters you wish to discuss?.\n        /// </summary>\n        internal static string Dlg_FortValiantC_0410 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_0410\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to No. We’re good. You’ve been incredibly… (un)helpful. .\n        /// </summary>\n        internal static string Dlg_FortValiantC_0411 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_0411\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to This audience is over. May God be with you. .\n        /// </summary>\n        internal static string Dlg_FortValiantC_0412 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_0412\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I have information you seek. If you wish to know more, proceed to these coordinates. .\n        /// </summary>\n        internal static string Dlg_FortValiantC_0500 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_0500\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to That’s weird. What should we do? .\n        /// </summary>\n        internal static string Dlg_FortValiantC_0501 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_0501\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Let’s check it out. We have nothing to lose, right?.\n        /// </summary>\n        internal static string Dlg_FortValiantC_0502 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_0502\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Except body parts, vital organs… Like always..\n        /// </summary>\n        internal static string Dlg_FortValiantC_0503 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_0503\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Psst, over there..\n        /// </summary>\n        internal static string Dlg_FortValiantC_0600 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_0600\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Are you talking to us, Templar?.\n        /// </summary>\n        internal static string Dlg_FortValiantC_0601 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_0601\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I know what you came for, what you yearn for, and what you were unrighteously denied. .\n        /// </summary>\n        internal static string Dlg_FortValiantC_0602 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_0602\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I know about the lies upon lies perpetrated by our patriarchs….\n        /// </summary>\n        internal static string Dlg_FortValiantC_0603 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_0603\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Can we cut to the–.\n        /// </summary>\n        internal static string Dlg_FortValiantC_0604 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_0604\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Let him talk..\n        /// </summary>\n        internal static string Dlg_FortValiantC_0605 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_0605\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You came for the artifact. The one our Order holds in secret. .\n        /// </summary>\n        internal static string Dlg_FortValiantC_0606 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_0606\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to What do you know about it? And why are you telling us all this?.\n        /// </summary>\n        internal static string Dlg_FortValiantC_0607 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_0607\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Please continue, sir…? .\n        /// </summary>\n        internal static string Dlg_FortValiantC_0608 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_0608\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Geraint, that’s my Order name. .\n        /// </summary>\n        internal static string Dlg_FortValiantC_0609 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_0609\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I was the leader of the expedition that discovered this inhuman artifact. .\n        /// </summary>\n        internal static string Dlg_FortValiantC_0610 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_0610\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Our Order deemed it to be heretical, cursed by diabolical powers. .\n        /// </summary>\n        internal static string Dlg_FortValiantC_0611 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_0611\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The patriarchs ordered it to be kept in secret – even from our fellow brothers..\n        /// </summary>\n        internal static string Dlg_FortValiantC_0612 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_0612\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to It is not being studied, nor is anyone else making use of it. .\n        /// </summary>\n        internal static string Dlg_FortValiantC_0613 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_0613\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to But… I… I joined the Order to search for Truth, not for lies and concealment….\n        /// </summary>\n        internal static string Dlg_FortValiantC_0614 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_0614\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to So, you wish to aid us, noble sir?.\n        /// </summary>\n        internal static string Dlg_FortValiantC_0615 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_0615\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I want this artifact to be studied. I have heard of some your deeds….\n        /// </summary>\n        internal static string Dlg_FortValiantC_0616 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_0616\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …and I am convinced you will make better use of it than we are..\n        /// </summary>\n        internal static string Dlg_FortValiantC_0617 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_0617\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to My intuition was right. That’s where they’re keeping the artifact!.\n        /// </summary>\n        internal static string Dlg_FortValiantC_0618 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_0618\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Can you give us specific directions?.\n        /// </summary>\n        internal static string Dlg_FortValiantC_0619 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_0619\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I marked the location and the forgotten secret path on your GPS. .\n        /// </summary>\n        internal static string Dlg_FortValiantC_0620 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_0620\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Take this equipment first, you will need it!.\n        /// </summary>\n        internal static string Dlg_FortValiantC_0621 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_0621\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I suggest only one of you undertake this mission..\n        /// </summary>\n        internal static string Dlg_FortValiantC_0622 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_0622\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The underground has been – what is your word? – booby-trapped..\n        /// </summary>\n        internal static string Dlg_FortValiantC_0623 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_0623\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to A single person might more easily avoid its pitfalls..\n        /// </summary>\n        internal static string Dlg_FortValiantC_0624 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_0624\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Got it. I’ll go..\n        /// </summary>\n        internal static string Dlg_FortValiantC_0626 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_0626\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to May Providence be with you!.\n        /// </summary>\n        internal static string Dlg_FortValiantC_0627 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_0627\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Many thanks, sir! .\n        /// </summary>\n        internal static string Dlg_FortValiantC_0628 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_0628\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ready to roll!.\n        /// </summary>\n        internal static string Dlg_FortValiantC_0700 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_0700\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Good luck, Apollo!.\n        /// </summary>\n        internal static string Dlg_FortValiantC_0701 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_0701\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hm, the path seems to go through this broken vent. .\n        /// </summary>\n        internal static string Dlg_FortValiantC_0800 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_0800\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I can’t avoid this security field. There must be a computer controlling it. .\n        /// </summary>\n        internal static string Dlg_FortValiantC_0900 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_0900\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Path clear!.\n        /// </summary>\n        internal static string Dlg_FortValiantC_1000 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_1000\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Security sensors. Need to avoid them!.\n        /// </summary>\n        internal static string Dlg_FortValiantC_1200 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_1200\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to This sensor looks like a tricky one!.\n        /// </summary>\n        internal static string Dlg_FortValiantC_1300 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_1300\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Looks like the treasure cache! Radiated – damn!.\n        /// </summary>\n        internal static string Dlg_FortValiantC_1400 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_1400\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Relics, some old remains… Fascinating!.\n        /// </summary>\n        internal static string Dlg_FortValiantC_1401 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_1401\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Got to find the artifact, fast. Hope my computer is able to identify it. .\n        /// </summary>\n        internal static string Dlg_FortValiantC_1402 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_1402\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The artifact must be in one of those concrete blocks. .\n        /// </summary>\n        internal static string Dlg_FortValiantC_1500 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_1500\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Gotta be careful not to destroy it. Drilling should be safe… .\n        /// </summary>\n        internal static string Dlg_FortValiantC_1501 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_1501\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to According to the computer – this is it! Excellent! .\n        /// </summary>\n        internal static string Dlg_FortValiantC_1600 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_1600\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Better get back..\n        /// </summary>\n        internal static string Dlg_FortValiantC_1601 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_1601\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Damn! I hate these security fields….\n        /// </summary>\n        internal static string Dlg_FortValiantC_1700 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_1700\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Gotta find a way to get rid of them – or find the computer that controls them. .\n        /// </summary>\n        internal static string Dlg_FortValiantC_1701 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_1701\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Looks like the guards left this room open. .\n        /// </summary>\n        internal static string Dlg_FortValiantC_1800 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_1800\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to This computer might help me get out of here!.\n        /// </summary>\n        internal static string Dlg_FortValiantC_1900 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_1900\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hm, there seems to be another way out!.\n        /// </summary>\n        internal static string Dlg_FortValiantC_2000 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_2000\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Now, let’s get the hell out of here!.\n        /// </summary>\n        internal static string Dlg_FortValiantC_2101 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_2101\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Crap. Dead end. There must be another way out..\n        /// </summary>\n        internal static string Dlg_FortValiantC_2201 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_2201\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hmm, a possible exit. Maybe it’s time to ask Sir Geraint for some hints. .\n        /// </summary>\n        internal static string Dlg_FortValiantC_2300 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_2300\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sir Geraint? I reached a dead end..\n        /// </summary>\n        internal static string Dlg_FortValiantC_2301 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_2301\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Either the tunnels are impassable or they’re guarded by scanner..\n        /// </summary>\n        internal static string Dlg_FortValiantC_2302 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_2302\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You’re almost there. I will send you new GPS coordinates….\n        /// </summary>\n        internal static string Dlg_FortValiantC_2303 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_2303\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …a path through the catacombs to the main temple..\n        /// </summary>\n        internal static string Dlg_FortValiantC_2304 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_2304\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I will wait for you on the surface, together with your friends.  .\n        /// </summary>\n        internal static string Dlg_FortValiantC_2305 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_2305\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to That was tons of fun..\n        /// </summary>\n        internal static string Dlg_FortValiantC_2400 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_2400\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Success?.\n        /// </summary>\n        internal static string Dlg_FortValiantC_2401 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_2401\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Success! I have the artifact. .\n        /// </summary>\n        internal static string Dlg_FortValiantC_2402 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_2402\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Glad you made it and found the object you seek! I wish you blessings on your journey!.\n        /// </summary>\n        internal static string Dlg_FortValiantC_2403 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_2403\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Apollo, grab the equipment you left before the meeting with the Council. .\n        /// </summary>\n        internal static string Dlg_FortValiantC_2404 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_2404\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Then get ready for departure. .\n        /// </summary>\n        internal static string Dlg_FortValiantC_2405 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_2405\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Departure where?.\n        /// </summary>\n        internal static string Dlg_FortValiantC_2406 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_2406\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Rime..\n        /// </summary>\n        internal static string Dlg_FortValiantC_2407 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_2407\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Get your equipment back, we can talk on the way there..\n        /// </summary>\n        internal static string Dlg_FortValiantC_2408 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_2408\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Your audience took quite some time. Is everything settled to you satisfaction?.\n        /// </summary>\n        internal static string Dlg_FortValiantC_2500 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_2500\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Yes, brother, we got the answers we pursued..\n        /// </summary>\n        internal static string Dlg_FortValiantC_2501 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_2501\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Excellent! .\n        /// </summary>\n        internal static string Dlg_FortValiantC_2502 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_2502\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to So… what’s the plan?.\n        /// </summary>\n        internal static string Dlg_FortValiantC_2600 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_2600\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Thomas came up with a plan for constructing an alien artifact detector. .\n        /// </summary>\n        internal static string Dlg_FortValiantC_2601 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_2601\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Using the pieces we already have….\n        /// </summary>\n        internal static string Dlg_FortValiantC_2602 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_2602\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …we should have enough information to create a long-range detector..\n        /// </summary>\n        internal static string Dlg_FortValiantC_2603 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_2603\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to It’ll allow us to locate other artifact parts scattered through the solar system..\n        /// </summary>\n        internal static string Dlg_FortValiantC_2604 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_2604\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Why are we going to Rime? .\n        /// </summary>\n        internal static string Dlg_FortValiantC_2605 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_2605\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You need two things: a brilliant technician and hi-end components..\n        /// </summary>\n        internal static string Dlg_FortValiantC_2606 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_2606\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I have references on a guy, Francis Reef, ….\n        /// </summary>\n        internal static string Dlg_FortValiantC_2607 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_2607\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …supposedly one of the best R&amp;D people at OmniCorp Technologies..\n        /// </summary>\n        internal static string Dlg_FortValiantC_2608 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_2608\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I don’t know him personally, but my contacts say he’s a genius. .\n        /// </summary>\n        internal static string Dlg_FortValiantC_2609 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_2609\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Can’t you make the device yourself? With our help?.\n        /// </summary>\n        internal static string Dlg_FortValiantC_2610 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_2610\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Nah, this is way beyond my abilities. I came up with the concept….\n        /// </summary>\n        internal static string Dlg_FortValiantC_2611 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_2611\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …but you need someone who can technically pull it off..\n        /// </summary>\n        internal static string Dlg_FortValiantC_2612 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_2612\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Remember, we’re dealing with unknown substances and extremely long-range scanners. .\n        /// </summary>\n        internal static string Dlg_FortValiantC_2613 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_2613\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Understood..\n        /// </summary>\n        internal static string Dlg_FortValiantC_2614 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_2614\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to One more thing. The first artifact. Did you find it useful?.\n        /// </summary>\n        internal static string Dlg_FortValiantC_2615 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_2615\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to In a sense… Nothing we can utilize in a pragmatic sense of the word. .\n        /// </summary>\n        internal static string Dlg_FortValiantC_2616 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_2616\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to More of… pointer toward greater discovery. .\n        /// </summary>\n        internal static string Dlg_FortValiantC_2617 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_2617\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Meaning?.\n        /// </summary>\n        internal static string Dlg_FortValiantC_2618 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_2618\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to At the moment, I have nothing more to say. Drop the Valiant artifact at my place. .\n        /// </summary>\n        internal static string Dlg_FortValiantC_2619 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_2619\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I will see whether I can find out anything more..\n        /// </summary>\n        internal static string Dlg_FortValiantC_2620 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_2620\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to That alien material detector should point us further..\n        /// </summary>\n        internal static string Dlg_FortValiantC_2621 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_2621\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to In other words, thanks to the artifact we can create a detector to search for… .\n        /// </summary>\n        internal static string Dlg_FortValiantC_2622 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_2622\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …other artifacts. Glad to have been so useful!.\n        /// </summary>\n        internal static string Dlg_FortValiantC_2623 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_2623\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Valentin, this work is important. Those Russians want those artifacts badly..\n        /// </summary>\n        internal static string Dlg_FortValiantC_2625 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_2625\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to They must have some reason – political or military – not just curiosity.  .\n        /// </summary>\n        internal static string Dlg_FortValiantC_2626 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_2626\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Okay, understood. .\n        /// </summary>\n        internal static string Dlg_FortValiantC_2627 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_2627\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ready to head for Rime, guys?.\n        /// </summary>\n        internal static string Dlg_FortValiantC_2628 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_2628\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to It’s Rime time. Set the course. I’ll take the artifact to Barth again and meet you there. .\n        /// </summary>\n        internal static string Dlg_FortValiantC_2629 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_2629\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Don’t start anything without me, understood?.\n        /// </summary>\n        internal static string Dlg_FortValiantC_2630 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_2630\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You’re the boss! .\n        /// </summary>\n        internal static string Dlg_FortValiantC_2631 {\n            get {\n                return ResourceManager.GetString(\"Dlg_FortValiantC_2631\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to This is the place. .\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_01_01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_01_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Too many sharp metal objects. I can’t proceed any further, you’re on your own..\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_01_02 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_01_02\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Any idea where the smuggler might be?.\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_01_03 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_01_03\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I’ve been here before. It’s a small community. Everyone knows everyone..\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_01_04 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_01_04\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to What do you suggest?.\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_01_05 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_01_05\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I know a guy. Hangs around Old Shard tavern..\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_01_06 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_01_06\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to By the way, Marcus. How do you know a seedy place like this?.\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_02_01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_02_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Um… research. .\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_02_02 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_02_02\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ok, whatever..\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_02_03 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_02_03\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Marcus, is that you?.\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_03_01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_03_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You said know a guy around here..\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_03_02 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_03_02\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Guy: it’s a generic term. Like I said, research..\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_03_03 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_03_03\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to It’s been years! You just left and I never–.\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_03_04 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_03_04\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You and I can talk privately later, Tarja. We’re here for other matters..\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_03_05 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_03_05\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Such as?.\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_03_06 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_03_06\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We’re looking for one Hindu guy. A smuggler by the name Manjeet..\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_03_07 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_03_07\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sold you some rare “antiquity”, and you just found out it was a cheese grater from Q-Mart?.\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_03_08 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_03_08\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We never met him before. But we heard he has… something..\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_03_09 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_03_09\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Something we’re interested in..\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_03_10 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_03_10\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Be gentle with him. .\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_03_11 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_03_11\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to He may not be the bravest or the most virtuous man, or even the most… well, you get it. .\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_03_12 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_03_12\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to But he’s a friend. .\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_03_13 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_03_13\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Duly noted..\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_03_14 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_03_14\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The last time I saw him was in the upper docks. Harbor district..\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_03_15 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_03_15\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We’ll check it out.  .\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_03_16 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_03_16\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Good luck finding… what you’re after..\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_03_17 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_03_17\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Shit! Zappa, I promise, I will deliver the “goods” in two hours! .\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_04_01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_04_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I give you my word…–.\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_04_02 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_04_02\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ehm, we’re looking for… .\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_04_03 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_04_03\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I won’t take this crap! .\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_04_04 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_04_04\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You won’t screw with Manjeet – not anymore! ….\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_04_05 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_04_05\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Guys, take out these brigands!.\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_04_06 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_04_06\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I… I can pay you more than Zappa! I swear! Just –.\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_05_01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_05_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Calm down. We want to buy something from you..\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_05_02 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_05_02\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Oh. I nearly had a heart attack. .\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_05_03 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_05_03\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I’d love to do business, but this Momo Zappa and his gang are after me at the moment..\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_05_04 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_05_04\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We noticed..\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_05_05 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_05_05\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to How about a deal?.\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_05_06 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_05_06\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Get rid of those bastards and I will sell you my secret, top-of-the-line goods. .\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_05_07 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_05_07\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to With 15% discount!.\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_05_08 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_05_08\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to All right, don’t go anywhere..\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_05_09 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_05_09\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Who is this Zappa, anyway?.\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_06_01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_06_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Head of some local gang. There are hundreds of guys like him around..\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_06_02 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_06_02\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Why do you think Manjeet has a dispute with this particular one?.\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_06_03 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_06_03\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Better not to ask. Drugs, women, weapons? This is none of our business. .\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_06_04 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_06_04\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Let’s just get the job done. .\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_06_05 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_06_05\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Here we go..\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_06_06 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_06_06\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Watchoo want? Go playin’ somewhere else, this’ our quarter..\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_06_07 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_06_07\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Manjeet sent us..\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_06_08 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_06_08\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to If you’re lookin’ for Momo, you come to the right place..\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_06_09 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_06_09\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Except. Could be the wrong place for you. .\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_06_10 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_06_10\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Why you riskin’ your life for that scrote sack, Manjeet?.\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_06_11 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_06_11\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We have an agreement. You can understand that..\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_06_12 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_06_12\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Here’s what I understand!.\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_06_13 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_06_13\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Manjeet’s trigger men! You dare disrespect me? Do you know who I am?.\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_07_01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_07_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to That’s why we’re here..\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_07_02 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_07_02\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I am most impressed! Come back and browse through the finest selection of bright material..\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_08_01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_08_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Bright material?.\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_08_02 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_08_02\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You know, active nuclear gadgets. You came for a trade, right?.\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_08_03 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_08_03\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We came for an artifact you bought from the pirates..\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_08_04 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_08_04\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ah, the artifact. Sadly, that item is not for sale. Too expensive for you..\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_08_05 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_08_05\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to But our agreement still stands – all nuclear material you can imagine, plus 15% dis–.\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_08_06 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_08_06\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to How much do you want for the artifact?.\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_08_07 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_08_07\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Far, far too much for likes of you. No offense. Thirteen million, not a penny less. .\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_08_08 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_08_08\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to As I said, too rich for your blood..\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_08_09 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_08_09\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to What if we kill you right here and take it ourselves?.\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_08_10 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_08_10\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I am not so stupid. Such expensive items… I keep them with friends..\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_08_11 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_08_11\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to If you kill me or threaten me, you will never get it. .\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_08_12 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_08_12\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You want to keep the artifact for yourself or sell it to the highest bidder?.\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_08_13 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_08_13\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Option B is more to my liking..\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_08_14 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_08_14\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to What about this: We did you a favor once, we’ll do you a second one. .\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_08_15 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_08_15\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I bet a guy like you has a lot of enemies..\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_08_16 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_08_16\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I am fine now. As long as Zappa is dead, my friends can get me out of troubles….\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_08_17 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_08_17\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …except… .\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_08_18 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_08_18\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Yes?.\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_08_19 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_08_19\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to There is something I want. Perhaps we might barter. .\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_08_20 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_08_20\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Get me a cargo ship full of plutonium and you have a deal. .\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_08_21 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_08_21\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to That should be doable. .\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_08_22 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_08_22\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hijack a cargo ship, fly to some plutonium-rich asteroid field, fill it up… .\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_08_23 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_08_23\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We’ll be back in a few hours..\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_08_24 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_08_24\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to No, my friend. If I wanted plutonium ore, I could get it myself. .\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_08_25 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_08_25\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I want a cargo ship full of REFINED plutonium. Military grade..\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_08_26 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_08_26\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Good Lord. What would you do with something like that?.\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_08_27 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_08_27\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to That’s my business. I have very… diversified enterprises..\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_08_28 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_08_28\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Where the hell could we get our hands on a cargo ship full of military grade plutonium?.\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_08_29 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_08_29\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The Chinese. They have loads of the stuff..\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_08_30 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_08_30\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I assume you have some specific details..\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_08_31 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_08_31\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to A complete plan, and a good one, too! .\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_08_32 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_08_32\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I just couldn’t find anyone stu– brave enough to do it for me. .\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_08_33 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_08_33\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to There is a plutonium refinery at Jingzhou. You can’t take it by force. .\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_08_34 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_08_34\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to And you can’t steal one of the ships loaded with refined plutonium. .\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_08_35 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_08_35\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to They are too heavily guarded. So….\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_08_36 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_08_36\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You need to steal one of the poorly protected ships leaving the mining colony of Changde..\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_08_37 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_08_37\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fly with it to Jingzhou. Unload the ore and then load it up with the refined stuff..\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_08_38 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_08_38\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Piece of cake! Why didn’t we think of that?.\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_08_39 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_08_39\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to It might actually work..\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_08_40 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_08_40\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Can we trust him? Maybe he just wants us to get killed?.\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_08_41 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_08_41\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Nah. He wants the stuff so badly he can taste it..\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_08_42 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_08_42\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Okay. We’re in..\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_08_43 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_08_43\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Perfect. I transmitted you all the coordinates and relevant data. .\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_08_44 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_08_44\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Once you are ready, set a course for Changde. .\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_08_45 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_08_45\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Just before departure, pick up some explosives from my auxiliary depot. .\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_08_46 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_08_46\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You might find them useful..\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_08_47 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_08_47\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Guys, I’m going to do a little more… research. .\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_08_48 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_08_48\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Apollo, get those explosives, we’ll meet at Sapho..\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_08_49 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_08_49\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You here for a delivery for Manjeet?.\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_09_01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_09_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You know it..\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_09_02 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_09_02\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Your “package” is ready. And please, send my regards to Mr. Lata..\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_09_03 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_09_03\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Thanks..\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_09_04 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_09_04\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to That was easy..\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_09_05 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_09_05\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Marcus, I’m ready, how about you? How’s that research coming?.\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_09_06 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_09_06\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I need to probe a little… deeper. Why don’t you come here?.\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_09_07 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_09_07\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to On my way..\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_09_08 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_09_08\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to As soon as possible..\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_09_09 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_09_09\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Uhm, roger that..\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_09_10 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_09_10\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to What’s going on here? Some kind of key-swapping party tonight?.\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_10_01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_10_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to No need to be rude, Mr. Rainier. A friend of ours got into some trouble..\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_10_02 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_10_02\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Just shut up and watch..\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_10_03 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_10_03\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …that stuff you sold us last time –.\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_10_04 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_10_04\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to What’s the problem with it?.\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_10_05 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_10_05\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to One of our boys died after sniffing a gram!.\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_10_06 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_10_06\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tragic. You guys know this stuff can have side effects..\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_10_07 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_10_07\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Bullshit! It was bad and you know it..\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_10_08 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_10_08\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to And your point is…?.\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_10_09 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_10_09\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I want my money back..\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_10_10 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_10_10\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You should have read the fine print. No refunds..\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_10_11 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_10_11\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Guys, give this jag-off a refund!.\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_10_12 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_10_12\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We need to help my friend Valentin. Marcus? Apollo..\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_11_01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_11_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Friends are friends, I guess..\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_11_02 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_11_02\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Whatever..\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_11_03 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_11_03\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Thank you, whoever you are..\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_12_01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_12_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Friends of a friend..\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_12_02 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_12_02\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You fight well. Are you EAC militia?.\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_12_03 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_12_03\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Freelancers. Just doing our business..\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_12_04 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_12_04\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Valentin, they’re after something big. Something that can lead to loads of cash..\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_12_05 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_12_05\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I’m listening..\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_12_06 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_12_06\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We could use a hand. In return we offer, um, high adventure. And a share of the loot..\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_12_07 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_12_07\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I’m in. Just like old times..\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_12_08 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_12_08\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Old times?.\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_12_09 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_12_09\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to It seems I have some explaining for you and Madelyn. We’ll save it for later..\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_12_10 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_12_10\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Let’s head back to Sapho. Destination Changde..\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_12_11 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_12_11\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Valentin, you with us?.\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_12_12 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_12_12\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Like a bad case of crabs!.\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_12_13 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_12_13\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Have a nice time, Marcus?.\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_13_01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_13_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I’ve always been fond of research..\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_13_02 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_13_02\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I see we have company..\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_13_03 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_13_03\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We’ll save the introductions for later. We’re heading for Changde..\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_13_04 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_13_04\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You got it. We’ll talk on the way. And we WILL talk..\n        /// </summary>\n        internal static string Dlg_JunkyardConvince_13_05 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardConvince_13_05\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Again, back at our favorite holiday hotspot!.\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_0100 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_0100\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Let’s not waste time; let’s find Manjeet. .\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_0101 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_0101\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I’m sure he can help us..\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_0102 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_0102\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We’ll find out soon enough. .\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_0103 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_0103\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to If anyone knows how to get super-charged plutonium fuel cells, it’s Manjeet. .\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_0104 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_0104\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I hope you’re right. Since we have no other leads..\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_0105 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_0105\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Doesn’t look like it’ll be too hard to get radioactive shit around here. .\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_0106 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_0106\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Greetings, my dear friends! What brings you here, business or…?.\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_0200 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_0200\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We’re looking for plutonium fuel cells..\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_0202 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_0202\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We need three of them. What’s your price?.\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_0205 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_0205\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Considering you did me a favor… I could give them to you as a sign of gratitude. .\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_0206 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_0206\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Take those fuel cells and use them well!.\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_0210 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_0210\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to One more thing. Manjeet, you happen to know – by any chance….\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_0213 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_0213\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …where to get rare plutonium isotopes?.\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_0214 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_0214\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to If you want something really special, mine some plutonium isotopes from the Rift. .\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_0217 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_0217\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The abandoned OmniCorp mines?.\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_0218 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_0218\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to On our way, then. .\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_0223 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_0223\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Guys, hurry up, I’ve got a situation here..\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_0300 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_0300\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Another local gang flashing their tail feathers?.\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_0301 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_0301\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Not exactly. EAC Police. .\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_0302 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_0302\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to They say they have an arrest warrant for us..\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_0303 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_0303\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We’ll be right there. Hang on..\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_0304 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_0304\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Marcus Rainier to EAC Police: What is all this about?.\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_0406 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_0406\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Mr. Rainier, you and your companions are under arrest. .\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_0407 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_0407\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We have orders to escort you to court, where all charges will be explained and….\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_0412 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_0412\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We did not do anything against the EAC. We’re freelancers. .\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_0416 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_0416\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You will have a chance to defend yourself in court. We have our orders. .\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_0418 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_0418\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I’m sorry. We’re not going anywhere without an explanation. .\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_0419 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_0419\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Could you at the least state the reasons for the treason charges against the EAC?.\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_0420 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_0420\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to As if you didn’t know. Killing hundreds of civilians at the New Landswick survey site..\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_0421 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_0421\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Raiding a Russian civilian trade station… .\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_0422 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_0422\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I repeat, we are NOT going anywhere!.\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_0424 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_0424\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to One little issue. Their motherships have engine disruptors. I can’t budge..\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_0428 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_0428\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We need their disruption devices knocked out. .\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_0430 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_0430\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Destroy them on the way, then dock as fast as you can..\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_0431 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_0431\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I am taking heavy fire here. Destroy those engine disruptors – quick! ….\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_0700 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_0700\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …or we won’t make it!.\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_0701 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_0701\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We’ll take out the one on the left, me and Valentin. .\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_0702 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_0702\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Count on me. .\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_0703 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_0703\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Apollo, you and Tarja, take out the right one. .\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_0704 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_0704\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Will do!.\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_0705 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_0705\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Don’t waste time on their weapons and support ships. .\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_0706 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_0706\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I’m telling you, we cannot win this fight. Our only chance is to escape. .\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_0707 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_0707\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I’m taking this thing down!.\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_0800 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_0800\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Come on! Keep pounding that disruptor unit!.\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_0801 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_0801\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Almost there!.\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_0802 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_0802\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We’re done here. Apollo, what’s your status?.\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_0900 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_0900\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hang on, the device isn’t dead yet. Almost!.\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_0901 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_0901\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Done. Madelyn, you should be able to fly again..\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_1000 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_1000\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hurry up and get here. I’m sustaining critical damage..\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_1001 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_1001\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Another minute and you’ll have nowhere to dock..\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_1002 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_1002\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Then we’ll be there in half a minute! .\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_1003 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_1003\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Apollo and Tarja, get inside and cover us from the turrets while the engines warm up. .\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_1100 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_1100\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I’m on it..\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_1101 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_1101\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Me and Valentin will hold them off from here and jump in on the way. .\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_1102 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_1102\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Roger that..\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_1103 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_1103\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Don’t even think of doing anything stupid, Marcus! I know that’s your fallback position..\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_1104 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_1104\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to No worries. .\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_1105 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_1105\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Apollo, get rid of those missile ships shooting at our engines. Damn, this won’t be easy..\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_1200 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_1200\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Guys, would it be too much trouble to take out those fighters in front of us?!.\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_1300 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_1300\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I’m a tad busy at the moment. Valentin?.\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_1301 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_1301\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Negative. We’re outnumbered here. You’ll have to take care of them yourself, Madelyn..\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_1302 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_1302\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hell! Okay, whatever. Damn, another hit. .\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_1303 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_1303\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Guys, take down those interceptors or we’re screwed..\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_1304 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_1304\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Man! I guess they were serious about that arrest warrant!.\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_1400 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_1400\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We’re taking too much damage!.\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_1401 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_1401\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I can’t move at all, half of our systems are down. Engines at 30%, hull critical..\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_1501 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_1501\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We’re dead meat..\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_1502 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_1502\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Damn, I scanned the ship and its weapon systems..\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_1600 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_1600\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You won’t be able to defeat it with your weapons..\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_1602 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_1602\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I know. I’m not going to use my weapons..\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_1603 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_1603\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Guys and gals, it’s been an honor….\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_1604 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_1604\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Wha-what are you planning to do?.\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_1605 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_1605\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I hope you’re not thinking of–.\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_1606 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_1606\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sometimes that’s the only solution… Take care, guys..\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_1607 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_1607\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Have you lost your mind, Marcus?.\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_1608 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_1608\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to There is no other way..\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_1609 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_1609\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to There’s always another way! This is not the way we do things. .\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_1610 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_1610\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Do you understand? We can tr–.\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_1611 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_1611\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to What must be done must be done..\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_1612 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_1612\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to No – Marcus – this is insane! Stop!.\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_1613 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_1613\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Farewell, little brother! See you on the other side. .\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_1614 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_1614\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I hate you, Marcus! You hear me? I hate you!.\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_1700 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_1700\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Marcus… Marcus? .\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_1701 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_1701\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We can’t let his sacrifice be in vain..\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_1703 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_1703\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Now’s our only chance to make it out of here..\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_1704 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_1704\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to ….\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_1705 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_1705\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Madelyn, do you copy?.\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_1706 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_1706\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I… I set the course to the Rift. Hold on a few more seconds and we’re off..\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_1707 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_1707\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to ….\n        /// </summary>\n        internal static string Dlg_JunkyardEacAmbush_1708 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardEacAmbush_1708\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The Junkyard again. (grunts) Let’s just do what we came here for and get out..\n        /// </summary>\n        internal static string Dlg_JunkyardReturn_0100 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardReturn_0100\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You don’t want to stay for a little R&amp;R? Or maybe some… research?.\n        /// </summary>\n        internal static string Dlg_JunkyardReturn_0101 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardReturn_0101\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Look at these people. This place makes me sick..\n        /// </summary>\n        internal static string Dlg_JunkyardReturn_0102 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardReturn_0102\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to It’s none of our business. .\n        /// </summary>\n        internal static string Dlg_JunkyardReturn_0103 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardReturn_0103\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We’re here for Manjeet. He should be somewhere in the city. Let’s find him..\n        /// </summary>\n        internal static string Dlg_JunkyardReturn_0104 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardReturn_0104\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Oh, my friends. You have made it. So nice to see you again….\n        /// </summary>\n        internal static string Dlg_JunkyardReturn_0200 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardReturn_0200\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Do you have good news for me?.\n        /// </summary>\n        internal static string Dlg_JunkyardReturn_0201 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardReturn_0201\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to How ’bout a fully loaded transporter waiting outside the city..\n        /// </summary>\n        internal static string Dlg_JunkyardReturn_0202 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardReturn_0202\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Wonderful! It’s really quite a pleasure to do business with you my friends..\n        /// </summary>\n        internal static string Dlg_JunkyardReturn_0203 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardReturn_0203\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We’ve fulfilled our part of the agreement, now it’s your turn. .\n        /// </summary>\n        internal static string Dlg_JunkyardReturn_0204 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardReturn_0204\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I believe you have a little souvenir for us..\n        /// </summary>\n        internal static string Dlg_JunkyardReturn_0205 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardReturn_0205\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to In time, my friend. You don’t rush fine wine. I will inspect the cargo first..\n        /// </summary>\n        internal static string Dlg_JunkyardReturn_0206 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardReturn_0206\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Meet me later by the transporter and don’t try anything fun–.\n        /// </summary>\n        internal static string Dlg_JunkyardReturn_0207 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardReturn_0207\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Really? You can’t be serious? You can&apos;t be serious! This is your ship? This is your ship?.\n        /// </summary>\n        internal static string Dlg_JunkyardReturn_0208 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardReturn_0208\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Piss off, pal. We don’t have time for children’s games.\n        /// </summary>\n        internal static string Dlg_JunkyardReturn_0209 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardReturn_0209\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to No, seriously. Where did you get this thing? No, let me guess – you built it yourself. .\n        /// </summary>\n        internal static string Dlg_JunkyardReturn_0210 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardReturn_0210\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to From dog shit. That explains a lot….\n        /// </summary>\n        internal static string Dlg_JunkyardReturn_0211 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardReturn_0211\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Well, at least we don’t live in dog shit. .\n        /// </summary>\n        internal static string Dlg_JunkyardReturn_0212 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardReturn_0212\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to My ship could eat yours for breakfast and crap out the bones..\n        /// </summary>\n        internal static string Dlg_JunkyardReturn_0213 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardReturn_0213\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ohh, tough guy. Let’s see what you’ve got. .\n        /// </summary>\n        internal static string Dlg_JunkyardReturn_0214 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardReturn_0214\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Me and you, one lap around the Junkyard. Or are you too scared?.\n        /// </summary>\n        internal static string Dlg_JunkyardReturn_0215 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardReturn_0215\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Apollo, don’t do this. Junkyard racing is brutal. It’s not worth the risk..\n        /// </summary>\n        internal static string Dlg_JunkyardReturn_0216 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardReturn_0216\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to And we don’t have time. .\n        /// </summary>\n        internal static string Dlg_JunkyardReturn_0217 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardReturn_0217\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to It’ll only take a few minutes. Someone needs to teach this guy some respect..\n        /// </summary>\n        internal static string Dlg_JunkyardReturn_0218 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardReturn_0218\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ha! That’s the word. So let’s get it on..\n        /// </summary>\n        internal static string Dlg_JunkyardReturn_0219 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardReturn_0219\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to When you’re done, come back to me..\n        /// </summary>\n        internal static string Dlg_JunkyardReturn_0220 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardReturn_0220\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You’re going to beg for my mercy..\n        /// </summary>\n        internal static string Dlg_JunkyardReturn_0300 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardReturn_0300\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I’m shivering. Let’s get this over with..\n        /// </summary>\n        internal static string Dlg_JunkyardReturn_0301 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardReturn_0301\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to A little applause from your fans! Oh look, they like you! .\n        /// </summary>\n        internal static string Dlg_JunkyardReturn_0400 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardReturn_0400\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You bastard! You’ll pay for this, big time!.\n        /// </summary>\n        internal static string Dlg_JunkyardReturn_0401 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardReturn_0401\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Oops, watch the road hazard!.\n        /// </summary>\n        internal static string Dlg_JunkyardReturn_0500 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardReturn_0500\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Just blow it up! .\n        /// </summary>\n        internal static string Dlg_JunkyardReturn_0501 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardReturn_0501\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Beware of those green clouds, they are highly radioactive toxic vapours! .\n        /// </summary>\n        internal static string Dlg_JunkyardReturn_0600 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardReturn_0600\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Don’t give up! You’re past the worst! Keep it up!.\n        /// </summary>\n        internal static string Dlg_JunkyardReturn_0700 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardReturn_0700\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Come on brother! Show him how to fly!.\n        /// </summary>\n        internal static string Dlg_JunkyardReturn_0800 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardReturn_0800\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Minefield front and center. Careful!.\n        /// </summary>\n        internal static string Dlg_JunkyardReturn_0900 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardReturn_0900\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Share some bullets with him. That should slow him down!.\n        /// </summary>\n        internal static string Dlg_JunkyardReturn_1000 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardReturn_1000\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ok, you’re heading into the last leg. The forge. Just don’t touch the walls!.\n        /// </summary>\n        internal static string Dlg_JunkyardReturn_1100 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardReturn_1100\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I see you Apollo. You’re almost there! One more curve, then a straightaway to the finish!.\n        /// </summary>\n        internal static string Dlg_JunkyardReturn_1200 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardReturn_1200\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to That was awesome, brother! You owned him!.\n        /// </summary>\n        internal static string Dlg_JunkyardReturn_1300 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardReturn_1300\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Nicely done, Apollo! Glad to see you in one piece..\n        /// </summary>\n        internal static string Dlg_JunkyardReturn_1301 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardReturn_1301\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to That’s impossible! You couldn’t have won! .\n        /// </summary>\n        internal static string Dlg_JunkyardReturn_1302 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardReturn_1302\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to If you want a rematch, my grandma’s ready to roll..\n        /// </summary>\n        internal static string Dlg_JunkyardReturn_1303 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardReturn_1303\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Whatever. Get out of my sight before I really get pissed off..\n        /// </summary>\n        internal static string Dlg_JunkyardReturn_1304 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardReturn_1304\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Don’t you think you owe the victor a prize?.\n        /// </summary>\n        internal static string Dlg_JunkyardReturn_1305 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardReturn_1305\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Your prize is me not killing you. IF you leave NOW..\n        /// </summary>\n        internal static string Dlg_JunkyardReturn_1306 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardReturn_1306\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Oh, he’s such a little weasel. .\n        /// </summary>\n        internal static string Dlg_JunkyardReturn_1307 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardReturn_1307\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I wonder what his ship would look like turned to scrap metal….\n        /// </summary>\n        internal static string Dlg_JunkyardReturn_1308 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardReturn_1308\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Forget it. Your bullets are worth more than that piece of crap..\n        /// </summary>\n        internal static string Dlg_JunkyardReturn_1309 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardReturn_1309\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Yeah. I guess you’re right. Let’s just find Manjeet..\n        /// </summary>\n        internal static string Dlg_JunkyardReturn_1310 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardReturn_1310\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to So, who won the race?.\n        /// </summary>\n        internal static string Dlg_JunkyardReturn_1400 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardReturn_1400\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Three guesses. First two don’t count..\n        /// </summary>\n        internal static string Dlg_JunkyardReturn_1401 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardReturn_1401\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Glad to hear it. But there’s a little problem with your cargo….\n        /// </summary>\n        internal static string Dlg_JunkyardReturn_1402 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardReturn_1402\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to What are you talking about? We almost killed ourselves for that stuff?!.\n        /// </summary>\n        internal static string Dlg_JunkyardReturn_1403 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardReturn_1403\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to TARJA, LOAD YOUR WEAPONS!!!.\n        /// </summary>\n        internal static string Dlg_JunkyardReturn_1404 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardReturn_1404\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Just kidding, just kidding. Everything is fine. I will give you the item we agreed upon. .\n        /// </summary>\n        internal static string Dlg_JunkyardReturn_1405 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardReturn_1405\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Valentin, my friend, you need to switch to decaf. .\n        /// </summary>\n        internal static string Dlg_JunkyardReturn_1406 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardReturn_1406\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sorry. When it comes to risking my life and not getting paid, I have “issues”..\n        /// </summary>\n        internal static string Dlg_JunkyardReturn_1407 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardReturn_1407\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ok, just give us the artifact so we can get out of here..\n        /// </summary>\n        internal static string Dlg_JunkyardReturn_1408 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardReturn_1408\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I’m looking forward to never coming back here again..\n        /// </summary>\n        internal static string Dlg_JunkyardReturn_1409 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardReturn_1409\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Of course. I loaded it into the cargo hold of your mothership. .\n        /// </summary>\n        internal static string Dlg_JunkyardReturn_1410 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardReturn_1410\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Copy that. Artifact loaded on Sapho..\n        /// </summary>\n        internal static string Dlg_JunkyardReturn_1411 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardReturn_1411\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to And here is a little bonus for a job well done. .\n        /// </summary>\n        internal static string Dlg_JunkyardReturn_1412 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardReturn_1412\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Take care of yourselves, my friends. Perhaps we’ll do business again..\n        /// </summary>\n        internal static string Dlg_JunkyardReturn_1413 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardReturn_1413\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We sincerely hope not..\n        /// </summary>\n        internal static string Dlg_JunkyardReturn_1414 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardReturn_1414\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Thomas, do you copy?.\n        /// </summary>\n        internal static string Dlg_JunkyardReturn_1415 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardReturn_1415\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I am online. Were you successful?.\n        /// </summary>\n        internal static string Dlg_JunkyardReturn_1416 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardReturn_1416\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We have this alien thing. .\n        /// </summary>\n        internal static string Dlg_JunkyardReturn_1417 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardReturn_1417\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tell me about it!.\n        /// </summary>\n        internal static string Dlg_JunkyardReturn_1418 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardReturn_1418\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Looks more like Rosetta Stone than a superhuman device..\n        /// </summary>\n        internal static string Dlg_JunkyardReturn_1419 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardReturn_1419\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to What did you expect? Light sabers and plasma guns?.\n        /// </summary>\n        internal static string Dlg_JunkyardReturn_1420 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardReturn_1420\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to What should we do with it?.\n        /// </summary>\n        internal static string Dlg_JunkyardReturn_1421 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardReturn_1421\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Drop it by my place, I will give it thorough examination..\n        /// </summary>\n        internal static string Dlg_JunkyardReturn_1422 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardReturn_1422\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Only one of you needs to do the delivery – the rest of you, head on over to Valiant..\n        /// </summary>\n        internal static string Dlg_JunkyardReturn_1423 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardReturn_1423\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Valiant? You mean the Templar fortress?.\n        /// </summary>\n        internal static string Dlg_JunkyardReturn_1424 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardReturn_1424\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Exactly. I checked some reliable sources and I am 99% sure the Templars stumbled….\n        /// </summary>\n        internal static string Dlg_JunkyardReturn_1425 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardReturn_1425\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …upon one of the artifact pieces. You must check it out. .\n        /// </summary>\n        internal static string Dlg_JunkyardReturn_1426 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardReturn_1426\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to On our way, then. I’ll take the artifact to Barth’s moon and we’ll meet up at Valiant..\n        /// </summary>\n        internal static string Dlg_JunkyardReturn_1427 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardReturn_1427\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Chill a bit, guys, I might be a little late..\n        /// </summary>\n        internal static string Dlg_JunkyardReturn_1428 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardReturn_1428\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We’ll take the scenic route and meet you at the gates of Valiant..\n        /// </summary>\n        internal static string Dlg_JunkyardReturn_1429 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardReturn_1429\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ok, Apollo, Valentin, Tarja – dock in!.\n        /// </summary>\n        internal static string Dlg_JunkyardReturn_1430 {\n            get {\n                return ResourceManager.GetString(\"Dlg_JunkyardReturn_1430\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We have to find out exactly where the signal came from and gather all the data we can..\n        /// </summary>\n        internal static string Dlg_Laika_0100 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_0100\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I suggest checking the computers and communication arrays..\n        /// </summary>\n        internal static string Dlg_Laika_0102 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_0102\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Apollo, I installed a hacking tool on your ship..\n        /// </summary>\n        internal static string Dlg_Laika_0103 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_0103\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Use it to extract the data from the digital devices..\n        /// </summary>\n        internal static string Dlg_Laika_0104 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_0104\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Rogger that..\n        /// </summary>\n        internal static string Dlg_Laika_0105 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_0105\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Try not to attract much attention. The longer they stay uninterested in us, the better..\n        /// </summary>\n        internal static string Dlg_Laika_0106 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_0106\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hmm, why so many military ships just for a customs check?.\n        /// </summary>\n        internal static string Dlg_Laika_0200 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_0200\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to That does seems odd. Be ready for anything..\n        /// </summary>\n        internal static string Dlg_Laika_0201 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_0201\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Keep moving..\n        /// </summary>\n        internal static string Dlg_Laika_0202 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_0202\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to This wasn’t so hard..\n        /// </summary>\n        internal static string Dlg_Laika_0300 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_0300\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Do not underestimate these red lads..\n        /// </summary>\n        internal static string Dlg_Laika_0302 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_0302\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I’ll be around in case you need a quick withdrawal..\n        /// </summary>\n        internal static string Dlg_Laika_0303 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_0303\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I’ll pretend you didn’t say that..\n        /// </summary>\n        internal static string Dlg_Laika_0303a {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_0303a\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to And I’ll pretend you didn’t say that..\n        /// </summary>\n        internal static string Dlg_Laika_0303b {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_0303b\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I should be fine here..\n        /// </summary>\n        internal static string Dlg_Laika_0303c {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_0303c\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to As long as there are no enemy mother ships….\n        /// </summary>\n        internal static string Dlg_Laika_0304 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_0304\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …those fighters and turrets can barely scratch my paint..\n        /// </summary>\n        internal static string Dlg_Laika_0304a {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_0304a\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Okay, good. But first we need to get what we came for..\n        /// </summary>\n        internal static string Dlg_Laika_0305 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_0305\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Though it might bring us more trouble than we bargained for..\n        /// </summary>\n        internal static string Dlg_Laika_0307 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_0307\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The command center is marked on your GPS..\n        /// </summary>\n        internal static string Dlg_Laika_0308 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_0308\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Go there and check for any datalogs of outgoing and incoming transmissions..\n        /// </summary>\n        internal static string Dlg_Laika_0309 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_0309\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Did you notice that strange equipment those fighters were using?.\n        /// </summary>\n        internal static string Dlg_Laika_0310 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_0310\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I don’t believe this is Russian military we’re facing..\n        /// </summary>\n        internal static string Dlg_Laika_0311 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_0311\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Neither do I..\n        /// </summary>\n        internal static string Dlg_Laika_0312 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_0312\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I made some preliminary scans of the ships..\n        /// </summary>\n        internal static string Dlg_Laika_0313 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_0313\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to According to the database, some of their equipment and ship models….\n        /// </summary>\n        internal static string Dlg_Laika_0314 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_0314\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …are definitely not standard issue for the Russian army..\n        /// </summary>\n        internal static string Dlg_Laika_0314a {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_0314a\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hmm, what the hell’s going on?.\n        /// </summary>\n        internal static string Dlg_Laika_0316 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_0316\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Quite the well-stocked marketplace!.\n        /// </summary>\n        internal static string Dlg_Laika_0400 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_0400\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Too bad they won’t sell us a thing now..\n        /// </summary>\n        internal static string Dlg_Laika_0401 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_0401\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Nothing..\n        /// </summary>\n        internal static string Dlg_Laika_0500 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_0500\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to No record of communication with the assault squad on Landswick..\n        /// </summary>\n        internal static string Dlg_Laika_0501 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_0501\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to What now?.\n        /// </summary>\n        internal static string Dlg_Laika_0502 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_0502\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I scanned all the communication arrays and computers on Laika..\n        /// </summary>\n        internal static string Dlg_Laika_0503 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_0503\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I’ve sent you coordinates of the two satellites..\n        /// </summary>\n        internal static string Dlg_Laika_0504 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_0504\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Check them out, up close, maybe they store the data directly there..\n        /// </summary>\n        internal static string Dlg_Laika_0505 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_0505\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Let’s start with the one toward the west..\n        /// </summary>\n        internal static string Dlg_Laika_0600 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_0600\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to It should be easier to get to from here..\n        /// </summary>\n        internal static string Dlg_Laika_0601 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_0601\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Confirmed..\n        /// </summary>\n        internal static string Dlg_Laika_0602 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_0602\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Good news, bad news..\n        /// </summary>\n        internal static string Dlg_Laika_0700 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_0700\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Good news, I’ve retrieved something..\n        /// </summary>\n        internal static string Dlg_Laika_0701 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_0701\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Bad news, it seems that all outgoing messages are split between the two satellites..\n        /// </summary>\n        internal static string Dlg_Laika_0702 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_0702\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Some kind of security hash..\n        /// </summary>\n        internal static string Dlg_Laika_0703 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_0703\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to But you wouldn’t believe what I’ve got so far, guys..\n        /// </summary>\n        internal static string Dlg_Laika_0704 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_0704\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Off to the second satellite now..\n        /// </summary>\n        internal static string Dlg_Laika_0705 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_0705\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …So don’t keep me in suspense. What did you find out so far?.\n        /// </summary>\n        internal static string Dlg_Laika_0706 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_0706\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I was planning to save story-time for later, but here, listen to this..\n        /// </summary>\n        internal static string Dlg_Laika_0707 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_0707\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …We found no information about the alien artifacts in Landswick..\n        /// </summary>\n        internal static string Dlg_Laika_0708 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_0708\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Mr. Vasilyev will not be pleased as to the other findings..\n        /// </summary>\n        internal static string Dlg_Laika_0709 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_0709\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Also, two miners escaped..\n        /// </summary>\n        internal static string Dlg_Laika_0710 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_0710\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to However, they pose no real threat. And they do not know what is going on..\n        /// </summary>\n        internal static string Dlg_Laika_0711 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_0711\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We will make sure the politburo sends….\n        /// </summary>\n        internal static string Dlg_Laika_0712 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_0712\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …a maintenance fleet to cover all traces of your presence..\n        /// </summary>\n        internal static string Dlg_Laika_0712a {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_0712a\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Our contacts at EAC will see to it that those two miners are persecuted and distrusted..\n        /// </summary>\n        internal static string Dlg_Laika_0713 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_0713\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Finish your work and get back to L-K for de-briefing..\n        /// </summary>\n        internal static string Dlg_Laika_0714 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_0714\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to That’s all..\n        /// </summary>\n        internal static string Dlg_Laika_0715 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_0715\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I have more data, but it’s impossible to decode without the second transmitter..\n        /// </summary>\n        internal static string Dlg_Laika_0716 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_0716\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Holy crap, guys. What’s going on?.\n        /// </summary>\n        internal static string Dlg_Laika_0717 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_0717\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Alien artifacts? Either it’s code for something or….\n        /// </summary>\n        internal static string Dlg_Laika_0718 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_0718\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …or those Russians believe humankind is not alone in this universe..\n        /// </summary>\n        internal static string Dlg_Laika_0719 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_0719\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Whether they’re right or not….\n        /// </summary>\n        internal static string Dlg_Laika_0720 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_0720\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to According to that transmission, we’re in big trouble..\n        /// </summary>\n        internal static string Dlg_Laika_0721 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_0721\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Save the chit-chat for later, girls..\n        /// </summary>\n        internal static string Dlg_Laika_0722 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_0722\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to My scans show incoming Russian mother ships; same ones we met before..\n        /// </summary>\n        internal static string Dlg_Laika_0723 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_0723\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hurry up, in just a few minutes we’ll be outmuscled, big-time..\n        /// </summary>\n        internal static string Dlg_Laika_0724 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_0724\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Success!.\n        /// </summary>\n        internal static string Dlg_Laika_0800 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_0800\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I have the rest of the recordings and some other data on the operation at New Landswick..\n        /// </summary>\n        internal static string Dlg_Laika_0801 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_0801\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Great. Let’s get back to Madelyn.\n        /// </summary>\n        internal static string Dlg_Laika_0802 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_0802\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Roger that..\n        /// </summary>\n        internal static string Dlg_Laika_0803 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_0803\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I have some bad news for you, guys..\n        /// </summary>\n        internal static string Dlg_Laika_0804 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_0804\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The cavalry has arrived..\n        /// </summary>\n        internal static string Dlg_Laika_0806 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_0806\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Right over the corner – two Russian mother ships from Landswick..\n        /// </summary>\n        internal static string Dlg_Laika_0807 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_0807\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I suggest we do-si-do..\n        /// </summary>\n        internal static string Dlg_Laika_0808 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_0808\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to What about those nuclear warheads we saw? What if we….\n        /// </summary>\n        internal static string Dlg_Laika_0809 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_0809\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Use them for “persuasive purposes”?.\n        /// </summary>\n        internal static string Dlg_Laika_0810 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_0810\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Why not? It might work, it might not. Anyway, it won’t take long to try..\n        /// </summary>\n        internal static string Dlg_Laika_0811 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_0811\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Agreed..\n        /// </summary>\n        internal static string Dlg_Laika_0812 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_0812\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Looks like they have some pretty nasty nuclear warheads stored here..\n        /// </summary>\n        internal static string Dlg_Laika_0900 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_0900\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to This thing could vaporize whole place in a nanosecond..\n        /// </summary>\n        internal static string Dlg_Laika_0901 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_0901\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I guess it’s not surprising. After all, this is not a civilian trade station..\n        /// </summary>\n        internal static string Dlg_Laika_0902 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_0902\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Right. Let’s move on to the second satellite..\n        /// </summary>\n        internal static string Dlg_Laika_0903 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_0903\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Apollo, you need to use your hacking device to arm it..\n        /// </summary>\n        internal static string Dlg_Laika_0950 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_0950\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Two Arion MK7 Fighters to Laika. Request permission for landing..\n        /// </summary>\n        internal static string Dlg_Laika_1501 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_1501\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Please proceed to landing bay 1 for customs and cargo scan..\n        /// </summary>\n        internal static string Dlg_Laika_1502 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_1502\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Copy. Proceeding to your coordinates..\n        /// </summary>\n        internal static string Dlg_Laika_1503 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_1503\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Just… be careful. You never know..\n        /// </summary>\n        internal static string Dlg_Laika_1504 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_1504\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We are always careful. Right, Apollo?.\n        /// </summary>\n        internal static string Dlg_Laika_1505 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_1505\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Um, sure..\n        /// </summary>\n        internal static string Dlg_Laika_1506 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_1506\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Red guards – you have your orders. Fire!.\n        /// </summary>\n        internal static string Dlg_Laika_1601 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_1601\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Damn it!.\n        /// </summary>\n        internal static string Dlg_Laika_1602 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_1602\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Let’s give our comrades a little taste of EAC bullets!.\n        /// </summary>\n        internal static string Dlg_Laika_1603 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_1603\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Enjoy your last moments of life, pigs!.\n        /// </summary>\n        internal static string Dlg_Laika_1605 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_1605\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Dance, zalupa!.\n        /// </summary>\n        internal static string Dlg_Laika_1606 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_1606\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Damn, turrets are firing on us from all around!.\n        /// </summary>\n        internal static string Dlg_Laika_1607 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_1607\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We need to take out the generator. That’ll cut their power..\n        /// </summary>\n        internal static string Dlg_Laika_1608 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_1608\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Use that hacking tool from Madelyn on those computers over there..\n        /// </summary>\n        internal static string Dlg_Laika_1701 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_1701\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Done..\n        /// </summary>\n        internal static string Dlg_Laika_1800 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_1800\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Back to Sapho now..\n        /// </summary>\n        internal static string Dlg_Laika_1801 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_1801\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Things are getting a little hairy here. Status?.\n        /// </summary>\n        internal static string Dlg_Laika_1802 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_1802\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We are going to try to, ehm, negotiate..\n        /// </summary>\n        internal static string Dlg_Laika_1803 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_1803\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Attention, commander:.\n        /// </summary>\n        internal static string Dlg_Laika_1804 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_1804\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We found your surprise package – the nuclear one..\n        /// </summary>\n        internal static string Dlg_Laika_1805 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_1805\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to It’s armed and my finger is on the trigger..\n        /// </summary>\n        internal static string Dlg_Laika_1805a {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_1805a\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to If you pursue us – do svidaniya..\n        /// </summary>\n        internal static string Dlg_Laika_1806 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_1806\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cease your fire and we will disarm the warhead when leaving the sector..\n        /// </summary>\n        internal static string Dlg_Laika_1807 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_1807\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Will it work?.\n        /// </summary>\n        internal static string Dlg_Laika_1808 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_1808\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Who knows?.\n        /// </summary>\n        internal static string Dlg_Laika_1809 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_1809\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Marcus, Apollo, look behind you!.\n        /// </summary>\n        internal static string Dlg_Laika_1900 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_1900\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ahm, so I’m guessing negotiations failed..\n        /// </summary>\n        internal static string Dlg_Laika_1901 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_1901\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to They let their own Trade station explode?.\n        /// </summary>\n        internal static string Dlg_Laika_1902 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_1902\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Why didn’t they send some engineers to disarm it?.\n        /// </summary>\n        internal static string Dlg_Laika_1903 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_1903\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I’m guessing catching us is more important. The question is why?.\n        /// </summary>\n        internal static string Dlg_Laika_1904 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_1904\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Apollo. The data you got. Does it lead anywhere?.\n        /// </summary>\n        internal static string Dlg_Laika_1905 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_1905\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I seem to have two clues..\n        /// </summary>\n        internal static string Dlg_Laika_1906 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_1906\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to A name of some scientist, Thomas Barth….\n        /// </summary>\n        internal static string Dlg_Laika_1907 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_1907\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to And coordinates of a base located within Damien Dust Field..\n        /// </summary>\n        internal static string Dlg_Laika_1908 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_1908\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Thomas Barth?.\n        /// </summary>\n        internal static string Dlg_Laika_1909 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_1909\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You know him? This Barth guy?.\n        /// </summary>\n        internal static string Dlg_Laika_1910 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_1910\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sure! I’m setting the course right now..\n        /// </summary>\n        internal static string Dlg_Laika_1911 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_1911\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I hope you like him. I’ll tell you more on the way..\n        /// </summary>\n        internal static string Dlg_Laika_1912 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_1912\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to ….\n        /// </summary>\n        internal static string Dlg_Laika_1913 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Laika_1913\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We’re not too late, I hope. .\n        /// </summary>\n        internal static string Dlg_LastHope_0100 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_0100\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to But I’m picking signals from several slaver mother ships. .\n        /// </summary>\n        internal static string Dlg_LastHope_0101 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_0101\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Let’s get this done fast..\n        /// </summary>\n        internal static string Dlg_LastHope_0102 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_0102\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We’re on our way..\n        /// </summary>\n        internal static string Dlg_LastHope_0103 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_0103\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Reinforcements? This base should have been unarmed, no defense fleet! .\n        /// </summary>\n        internal static string Dlg_LastHope_0200 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_0200\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to This was not part of our contract. ….\n        /// </summary>\n        internal static string Dlg_LastHope_0201 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_0201\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Go away, strangers. This is none of your business..\n        /// </summary>\n        internal static string Dlg_LastHope_0207 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_0207\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We’re here to help these people..\n        /// </summary>\n        internal static string Dlg_LastHope_0208 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_0208\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to And you stand in our way..\n        /// </summary>\n        internal static string Dlg_LastHope_0209 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_0209\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You want trouble, you’ve got it..\n        /// </summary>\n        internal static string Dlg_LastHope_0210 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_0210\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You… are you here to help us? Did you receive our call?.\n        /// </summary>\n        internal static string Dlg_LastHope_0300 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_0300\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We did. .\n        /// </summary>\n        internal static string Dlg_LastHope_0301 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_0301\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Please, hurry. A few of us are still here, the rest are being hauled away in cages..\n        /// </summary>\n        internal static string Dlg_LastHope_0302 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_0302\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to For now, hit the remaining raiding ships! .\n        /// </summary>\n        internal static string Dlg_LastHope_0303 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_0303\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to At least that will save those who are still alive..\n        /// </summary>\n        internal static string Dlg_LastHope_0304 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_0304\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Roger. .\n        /// </summary>\n        internal static string Dlg_LastHope_0305 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_0305\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to May God bless you!.\n        /// </summary>\n        internal static string Dlg_LastHope_0400 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_0400\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Are we done here?.\n        /// </summary>\n        internal static string Dlg_LastHope_0402 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_0402\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to No! We still need your help. .\n        /// </summary>\n        internal static string Dlg_LastHope_0403 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_0403\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The colony is safe, for now, but their cargo ships are full of our people..\n        /// </summary>\n        internal static string Dlg_LastHope_0404 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_0404\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to They’ve already left, but you should be able to catch up with them. .\n        /// </summary>\n        internal static string Dlg_LastHope_0405 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_0405\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We’ll do what we can. .\n        /// </summary>\n        internal static string Dlg_LastHope_0408 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_0408\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to These must be the slave transports..\n        /// </summary>\n        internal static string Dlg_LastHope_0500 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_0500\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Remember what the old man said. Don’t destroy the ships or the prisoners will die. .\n        /// </summary>\n        internal static string Dlg_LastHope_0501 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_0501\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Acknowledged. .\n        /// </summary>\n        internal static string Dlg_LastHope_0503 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_0503\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Job done. Transports disabled..\n        /// </summary>\n        internal static string Dlg_LastHope_0600 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_0600\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Thank you again! .\n        /// </summary>\n        internal static string Dlg_LastHope_0601 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_0601\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to So, are you safe now? We have other matters to attend to..\n        /// </summary>\n        internal static string Dlg_LastHope_0602 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_0602\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Please… Wait! One more thing! It seems some of those slavers have….\n        /// </summary>\n        internal static string Dlg_LastHope_0603 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_0603\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …gotten into our underground shafts..\n        /// </summary>\n        internal static string Dlg_LastHope_0604 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_0604\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to They’ve somehow damaged our power generator, along with the gas vents..\n        /// </summary>\n        internal static string Dlg_LastHope_0605 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_0605\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Without that equipment, even the few of us who remain here will die within hours. .\n        /// </summary>\n        internal static string Dlg_LastHope_0606 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_0606\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to How do we get into the shafts?.\n        /// </summary>\n        internal static string Dlg_LastHope_0607 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_0607\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The entrances are marked with red lights. .\n        /// </summary>\n        internal static string Dlg_LastHope_0608 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_0608\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You can’t miss them. Once you’re inside, watch out for slaver ships. .\n        /// </summary>\n        internal static string Dlg_LastHope_0609 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_0609\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to How many ships should we expect?.\n        /// </summary>\n        internal static string Dlg_LastHope_0700 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_0700\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Only a handful. But… eh….\n        /// </summary>\n        internal static string Dlg_LastHope_0701 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_0701\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Yes?.\n        /// </summary>\n        internal static string Dlg_LastHope_0702 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_0702\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Be careful. The generator is an old Russian nuclear model we got for cheap. .\n        /// </summary>\n        internal static string Dlg_LastHope_0703 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_0703\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Now that it’s been damaged, it’s leaking radiation all around. .\n        /// </summary>\n        internal static string Dlg_LastHope_0704 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_0704\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Let’s get to work. .\n        /// </summary>\n        internal static string Dlg_LastHope_0713 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_0713\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fast. Roust the slavers, fix the leaking generator, and perform the minor repairs..\n        /// </summary>\n        internal static string Dlg_LastHope_0714 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_0714\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to This must be the entry..\n        /// </summary>\n        internal static string Dlg_LastHope_0800 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_0800\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Looks like it. .\n        /// </summary>\n        internal static string Dlg_LastHope_0801 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_0801\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Jeff, you think we’ve done enough here?.\n        /// </summary>\n        internal static string Dlg_LastHope_0900 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_0900\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You hit the gas vents?.\n        /// </summary>\n        internal static string Dlg_LastHope_0901 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_0901\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Made holes in the pipes. In a few minutes, this whole place could blow. .\n        /// </summary>\n        internal static string Dlg_LastHope_0902 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_0902\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Good. Then let’s scram. .\n        /// </summary>\n        internal static string Dlg_LastHope_0909 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_0909\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to In about three minutes this little piece of heaven is going to turn into Hell. .\n        /// </summary>\n        internal static string Dlg_LastHope_0910 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_0910\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Shit! .\n        /// </summary>\n        internal static string Dlg_LastHope_1000 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_1000\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We need to intercept those two ships before they exit. .\n        /// </summary>\n        internal static string Dlg_LastHope_1001 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_1001\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Otherwise they’ll blow the whole asteroid..\n        /// </summary>\n        internal static string Dlg_LastHope_1002 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_1002\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Let’s hurry and find those two ships..\n        /// </summary>\n        internal static string Dlg_LastHope_1007 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_1007\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ah, brave Christians. You come to offer us a parting prayer?.\n        /// </summary>\n        internal static string Dlg_LastHope_1100 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_1100\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We need to disable those explosives. .\n        /// </summary>\n        internal static string Dlg_LastHope_1200 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_1200\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to See those gas clouds? Don’t make any sparks around them..\n        /// </summary>\n        internal static string Dlg_LastHope_1300 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_1300\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to No fireworks today?.\n        /// </summary>\n        internal static string Dlg_LastHope_1301 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_1301\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We’ll have to wait for New Year!.\n        /// </summary>\n        internal static string Dlg_LastHope_1302 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_1302\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Done. Disarmed–.\n        /// </summary>\n        internal static string Dlg_LastHope_1400 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_1400\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Good. .\n        /// </summary>\n        internal static string Dlg_LastHope_1401 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_1401\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to These vents seem like the source of the leaking gas. .\n        /// </summary>\n        internal static string Dlg_LastHope_1402 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_1402\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Yep, these are the leaks we’re looking for. .\n        /// </summary>\n        internal static string Dlg_LastHope_1403 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_1403\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to One more..\n        /// </summary>\n        internal static string Dlg_LastHope_1500 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_1500\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Done..\n        /// </summary>\n        internal static string Dlg_LastHope_1600 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_1600\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I have a bad feeling about this place..\n        /// </summary>\n        internal static string Dlg_LastHope_1700 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_1700\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Radiation. Hope you don’t mind little black spots on your face..\n        /// </summary>\n        internal static string Dlg_LastHope_1701 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_1701\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We need to be really fast here. .\n        /// </summary>\n        internal static string Dlg_LastHope_1702 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_1702\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to That’s it. The damaged nuclear generator. .\n        /// </summary>\n        internal static string Dlg_LastHope_1800 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_1800\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Good. Radiation stopped. .\n        /// </summary>\n        internal static string Dlg_LastHope_1900 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_1900\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Get out of there anyway. Fixing the core doesn’t eliminate the ambient radiation.  .\n        /// </summary>\n        internal static string Dlg_LastHope_1901 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_1901\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Right. Note to self: next trip, pack anti-radiation meds. .\n        /// </summary>\n        internal static string Dlg_LastHope_1902 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_1902\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Great work in the basement, guys!.\n        /// </summary>\n        internal static string Dlg_LastHope_1904 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_1904\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Let’s get back to the surface..\n        /// </summary>\n        internal static string Dlg_LastHope_1907 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_1907\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Say hello to Father Tobias, then and say goodbye..\n        /// </summary>\n        internal static string Dlg_LastHope_1908 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_1908\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Thank you, thank you, my friends! .\n        /// </summary>\n        internal static string Dlg_LastHope_2000 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_2000\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You’re welcome..\n        /// </summary>\n        internal static string Dlg_LastHope_2001 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_2001\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to And what’s your status here? NOW can we be on our way?.\n        /// </summary>\n        internal static string Dlg_LastHope_2005 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_2005\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to They damaged much of our base and killed many of our people. .\n        /// </summary>\n        internal static string Dlg_LastHope_2006 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_2006\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to But we are strong. It will take months to get things back to normal….\n        /// </summary>\n        internal static string Dlg_LastHope_2007 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_2007\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …but with the guidance of heaven, nothing is impossible..\n        /// </summary>\n        internal static string Dlg_LastHope_2008 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_2008\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Marcus, Apollo – good news. Still want to meet that smuggler, Manjeet?.\n        /// </summary>\n        internal static string Dlg_LastHope_2010 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_2010\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Definitely. Did he agree on a meeting?.\n        /// </summary>\n        internal static string Dlg_LastHope_2011 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_2011\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Well, not exactly. But rumor has it he’s currently at Duncan’s Faith. .\n        /// </summary>\n        internal static string Dlg_LastHope_2012 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_2012\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I suggest we head there and ask around. Lorraine out. .\n        /// </summary>\n        internal static string Dlg_LastHope_2013 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_2013\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Duncan’s Faith?.\n        /// </summary>\n        internal static string Dlg_LastHope_2014 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_2014\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fancy name for the Junkyard. .\n        /// </summary>\n        internal static string Dlg_LastHope_2015 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_2015\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to It was a battlefield during the war between EAC and Fourth Reich. .\n        /// </summary>\n        internal static string Dlg_LastHope_2016 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_2016\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The place where the last battle occurred. .\n        /// </summary>\n        internal static string Dlg_LastHope_2017 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_2017\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Officially, it’s called Duncan’s Faith after the EAC army commander. .\n        /// </summary>\n        internal static string Dlg_LastHope_2018 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_2018\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to But everyone calls it the Junkyard….\n        /// </summary>\n        internal static string Dlg_LastHope_2019 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_2019\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …’cause there’s thousands tons of metal parts floating around. .\n        /// </summary>\n        internal static string Dlg_LastHope_2020 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_2020\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sounds like an adventure. .\n        /// </summary>\n        internal static string Dlg_LastHope_2021 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_2021\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sounds like an intergalactic yard sale. .\n        /// </summary>\n        internal static string Dlg_LastHope_2022 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_2022\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I’m ready whenever you are, guys..\n        /// </summary>\n        internal static string Dlg_LastHope_2023 {\n            get {\n                return ResourceManager.GetString(\"Dlg_LastHope_2023\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Here we are. Damien Dust Field..\n        /// </summary>\n        internal static string Dlg_PirateBase_0101 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_0101\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I remember this from cadet classes. Is this all that’s….\n        /// </summary>\n        internal static string Dlg_PirateBase_0102 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_0102\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Yes, the remains of the Solar Event. All that’s left..\n        /// </summary>\n        internal static string Dlg_PirateBase_0103 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_0103\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to It used to be a part of Mars. Then… blammo..\n        /// </summary>\n        internal static string Dlg_PirateBase_0104 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_0104\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to How are we supposed to find the pirate base in all of this?.\n        /// </summary>\n        internal static string Dlg_PirateBase_0201 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_0201\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We do have some electromagnetic signals, I’ll try to….\n        /// </summary>\n        internal static string Dlg_PirateBase_0202 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_0202\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Well, well! What ’ave we here, guests for dinner!.\n        /// </summary>\n        internal static string Dlg_PirateBase_0203 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_0203\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Jolly Roger ahead..\n        /// </summary>\n        internal static string Dlg_PirateBase_0204 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_0204\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We’re here to discuss something, not to fight you..\n        /// </summary>\n        internal static string Dlg_PirateBase_0205 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_0205\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Diplomats, eh?.\n        /// </summary>\n        internal static string Dlg_PirateBase_0206 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_0206\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Our diplomacy skills are a bit rusty!.\n        /// </summary>\n        internal static string Dlg_PirateBase_0207 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_0207\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to On guard!.\n        /// </summary>\n        internal static string Dlg_PirateBase_0208 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_0208\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You will regret this..\n        /// </summary>\n        internal static string Dlg_PirateBase_0209 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_0209\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to That was the last one!.\n        /// </summary>\n        internal static string Dlg_PirateBase_0301 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_0301\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Well done! .\n        /// </summary>\n        internal static string Dlg_PirateBase_0302 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_0302\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Another squad coming..\n        /// </summary>\n        internal static string Dlg_PirateBase_0401 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_0401\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Well, well! What ’ave we here, guests for dinner!.\n        /// </summary>\n        internal static string Dlg_PirateBase_0402 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_0402\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We’re here to negotiate! .\n        /// </summary>\n        internal static string Dlg_PirateBase_0403 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_0403\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Diplomats, eh?.\n        /// </summary>\n        internal static string Dlg_PirateBase_0404 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_0404\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Our diplomacy skills are a bit rusty! On guard!.\n        /// </summary>\n        internal static string Dlg_PirateBase_0405 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_0405\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hmm, that sounded familiar..\n        /// </summary>\n        internal static string Dlg_PirateBase_0406 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_0406\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You will regret this!.\n        /// </summary>\n        internal static string Dlg_PirateBase_0408 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_0408\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Die, interlopers! .\n        /// </summary>\n        internal static string Dlg_PirateBase_0409 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_0409\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Arrgh, that was easier than snackin’ on doughboys..\n        /// </summary>\n        internal static string Dlg_PirateBase_0501 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_0501\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hmm, did someone open a can of ego around here?.\n        /// </summary>\n        internal static string Dlg_PirateBase_0503 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_0503\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Knocking out a handful of stragglers is not the same as attacking a….\n        /// </summary>\n        internal static string Dlg_PirateBase_0504 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_0504\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …fully fortified pirate base..\n        /// </summary>\n        internal static string Dlg_PirateBase_0505 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_0505\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Next time, do it the diplomatic way. .\n        /// </summary>\n        internal static string Dlg_PirateBase_0506 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_0506\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We’re always diplomatic..\n        /// </summary>\n        internal static string Dlg_PirateBase_0507 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_0507\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I suggest you state your business..\n        /// </summary>\n        internal static string Dlg_PirateBase_0618 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_0618\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Listen, here’s the deal. Some Russians are going to come after you… .\n        /// </summary>\n        internal static string Dlg_PirateBase_0624 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_0624\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The same ones that killed our friends. They’re after something WE want..\n        /// </summary>\n        internal static string Dlg_PirateBase_0625 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_0625\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to And they have your coordinates, just like we did. It’s only a matter of time….\n        /// </summary>\n        internal static string Dlg_PirateBase_0626 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_0626\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …before they pay you a visit. And I’m not talking days..\n        /// </summary>\n        internal static string Dlg_PirateBase_0627 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_0627\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Got it. We need to prepare. So… we have common enemies..\n        /// </summary>\n        internal static string Dlg_PirateBase_0628 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_0628\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Let’s just say we’ll cooperate. For now.  .\n        /// </summary>\n        internal static string Dlg_PirateBase_0701 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_0701\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to What do you need us to do? .\n        /// </summary>\n        internal static string Dlg_PirateBase_0705 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_0705\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We can’t fight off a whole Russian armada..\n        /// </summary>\n        internal static string Dlg_PirateBase_0706 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_0706\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to No, but together we can delay them. I’ll send a distress signal… .\n        /// </summary>\n        internal static string Dlg_PirateBase_0707 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_0707\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …to some allied pirate clans, but it will take time for them to get here..\n        /// </summary>\n        internal static string Dlg_PirateBase_0708 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_0708\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Give us a hand in building our base defenses. Just pick a good spot.  .\n        /// </summary>\n        internal static string Dlg_PirateBase_0709 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_0709\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to First get the equipment you’ll need at the Supply Base..\n        /// </summary>\n        internal static string Dlg_PirateBase_0801 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_0801\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Enemy incoming!.\n        /// </summary>\n        internal static string Dlg_PirateBase_0901 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_0901\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to How long till your pirate friends arrive?.\n        /// </summary>\n        internal static string Dlg_PirateBase_0902 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_0902\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The first squad just arrived. The main fleet of mother ships is a few minutes away..\n        /// </summary>\n        internal static string Dlg_PirateBase_0903 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_0903\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sounds good..\n        /// </summary>\n        internal static string Dlg_PirateBase_0904 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_0904\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Prepare to fight! Take cover and attack in squads!.\n        /// </summary>\n        internal static string Dlg_PirateBase_0905 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_0905\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Holy crap! They’re crushing the asteroids!.\n        /// </summary>\n        internal static string Dlg_PirateBase_1001 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_1001\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hope your friends get here soon, or the same thing’ll happen to us. .\n        /// </summary>\n        internal static string Dlg_PirateBase_1002 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_1002\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We can hold off the fighters, but once those motherships get here, we’ll have no chance..\n        /// </summary>\n        internal static string Dlg_PirateBase_1003 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_1003\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I know. Trust me, we’ll make it..\n        /// </summary>\n        internal static string Dlg_PirateBase_1004 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_1004\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ready for reinforcements, lass?.\n        /// </summary>\n        internal static string Dlg_PirateBase_1101 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_1101\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Never leave a damsel in distress!.\n        /// </summary>\n        internal static string Dlg_PirateBase_1102 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_1102\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Battleschooner operational!.\n        /// </summary>\n        internal static string Dlg_PirateBase_1103 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_1103\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Our friends are here! .\n        /// </summary>\n        internal static string Dlg_PirateBase_1104 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_1104\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Man the cannons, lads!.\n        /// </summary>\n        internal static string Dlg_PirateBase_1105 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_1105\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ramming speed!.\n        /// </summary>\n        internal static string Dlg_PirateBase_1106 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_1106\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Enemy on the horizon! .\n        /// </summary>\n        internal static string Dlg_PirateBase_1107 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_1107\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Let’s put these bilge-suckers out of business!.\n        /// </summary>\n        internal static string Dlg_PirateBase_1108 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_1108\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Revenge is delicious..\n        /// </summary>\n        internal static string Dlg_PirateBase_1109 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_1109\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Let’s hit them hard!.\n        /// </summary>\n        internal static string Dlg_PirateBase_1110 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_1110\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The Russian mother ships are returning!.\n        /// </summary>\n        internal static string Dlg_PirateBase_1201 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_1201\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Damn!.\n        /// </summary>\n        internal static string Dlg_PirateBase_1202 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_1202\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We can beat them! Come on!.\n        /// </summary>\n        internal static string Dlg_PirateBase_1203 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_1203\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Not this time. We’re lucky to have come out of that skirmish alive….\n        /// </summary>\n        internal static string Dlg_PirateBase_1204 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_1204\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You can have your revenge later..\n        /// </summary>\n        internal static string Dlg_PirateBase_1205 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_1205\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Can’t we just join the pirates and hunt them down? One more time?.\n        /// </summary>\n        internal static string Dlg_PirateBase_1206 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_1206\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Once they hit interstellar speed, we’ll lose them. .\n        /// </summary>\n        internal static string Dlg_PirateBase_1207 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_1207\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Live to fight another day, guys. Next time we won’t let them escape. .\n        /// </summary>\n        internal static string Dlg_PirateBase_1208 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_1208\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to That’s a solemn promise!.\n        /// </summary>\n        internal static string Dlg_PirateBase_1209 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_1209\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I guess that’ll have to do for now..\n        /// </summary>\n        internal static string Dlg_PirateBase_1210 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_1210\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You guys, come to my base, I have a tasty surprise for you..\n        /// </summary>\n        internal static string Dlg_PirateBase_1301 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_1301\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Does she mean….\n        /// </summary>\n        internal static string Dlg_PirateBase_1302 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_1302\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Dream on, brother. Come on!.\n        /// </summary>\n        internal static string Dlg_PirateBase_1303 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_1303\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Now. What brought you here? And how did you find about those Russians and the artifacts?.\n        /// </summary>\n        internal static string Dlg_PirateBase_1401 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_1401\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to It’s a long story. .\n        /// </summary>\n        internal static string Dlg_PirateBase_1402 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_1402\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We were on a survey operation at New Landswick. Got ambushed by the Russians, most of….\n        /// </summary>\n        internal static string Dlg_PirateBase_1404 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_1404\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …the base personnel were killed, we managed to escape. Our only lead was the Russians’….\n        /// </summary>\n        internal static string Dlg_PirateBase_1405 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_1405\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …communication data, which led us to the Laika trade station. When we got there, we….\n        /// </summary>\n        internal static string Dlg_PirateBase_1406 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_1406\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …were ambushed again, but their mother ships were still back at New Landswick, so….\n        /// </summary>\n        internal static string Dlg_PirateBase_1407 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_1407\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …we were able to make it. We picked up a couple of clues there – one led to your base, ….\n        /// </summary>\n        internal static string Dlg_PirateBase_1408 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_1408\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …the other was the name of a scientist, Thomas Barth. We checked him out first….\n        /// </summary>\n        internal static string Dlg_PirateBase_1409 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_1409\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …and got some dirt about the alien artifacts the Russians are after….\n        /// </summary>\n        internal static string Dlg_PirateBase_1410 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_1410\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to And now – here we are..\n        /// </summary>\n        internal static string Dlg_PirateBase_1411 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_1411\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Our story is simpler. We were on a raid and stumbled on an isolated base. Looked like….\n        /// </summary>\n        internal static string Dlg_PirateBase_1412 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_1412\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …some half-operational Russian storage depot. Once we launched the attack, we realized….\n        /// </summary>\n        internal static string Dlg_PirateBase_1413 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_1413\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …that was just a cover – it was a fully operational military base. Still, we won. We….\n        /// </summary>\n        internal static string Dlg_PirateBase_1414 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_1414\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …found some nasty weapons and equipment, along with one antiquity. You know, the thing….\n        /// </summary>\n        internal static string Dlg_PirateBase_1415 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_1415\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …you call an alien artifact..\n        /// </summary>\n        internal static string Dlg_PirateBase_1416 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_1416\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to So, you have it? You have it here?.\n        /// </summary>\n        internal static string Dlg_PirateBase_1417 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_1417\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Nah. We sold it to a smuggler, one of our “business partners”..\n        /// </summary>\n        internal static string Dlg_PirateBase_1418 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_1418\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Can you put us in contact with him?.\n        /// </summary>\n        internal static string Dlg_PirateBase_1423 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_1423\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Guys, don’t forget about the transmitter we need for Thomas. I suggest….\n        /// </summary>\n        internal static string Dlg_PirateBase_1424 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_1424\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …we handle that job first..\n        /// </summary>\n        internal static string Dlg_PirateBase_1425 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_1425\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to He might sell the artifact before we get to him..\n        /// </summary>\n        internal static string Dlg_PirateBase_1426 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_1426\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I can arrange a meeting with him. But it might take some time. What kind….\n        /// </summary>\n        internal static string Dlg_PirateBase_1427 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_1427\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …of transmitter do you have in mind, by the way?.\n        /// </summary>\n        internal static string Dlg_PirateBase_1428 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_1428\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to A long-range model. Something heavy duty. It doesn’t have to be….\n        /// </summary>\n        internal static string Dlg_PirateBase_1429 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_1429\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …super hi-tech — we just need the components..\n        /// </summary>\n        internal static string Dlg_PirateBase_1430 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_1430\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I have a suggestion. I’ll arrange you the meeting with Manjeet the smuggler and meanwhile….\n        /// </summary>\n        internal static string Dlg_PirateBase_1431 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_1431\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We’ll raid a Russian warehouse called Bratsk. Together. Simple stuff, nothing military..\n        /// </summary>\n        internal static string Dlg_PirateBase_1432 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_1432\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Where have I heard that before?.\n        /// </summary>\n        internal static string Dlg_PirateBase_1433 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_1433\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to No, really. It’s just a machinery factory and warehouse. We attack, you disable….\n        /// </summary>\n        internal static string Dlg_PirateBase_1434 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_1434\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …the defenses and take the components you need. We loot the rest….\n        /// </summary>\n        internal static string Dlg_PirateBase_1435 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_1435\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to How does that sound to you?.\n        /// </summary>\n        internal static string Dlg_PirateBase_1436 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_1436\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We’re in. .\n        /// </summary>\n        internal static string Dlg_PirateBase_1440 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_1440\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sounds like a deal. Check out the suppliers here at the base, make sure you have….\n        /// </summary>\n        internal static string Dlg_PirateBase_1441 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_1441\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …enough fuel and ammo. .\n        /// </summary>\n        internal static string Dlg_PirateBase_1442 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_1442\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Once you’re ready, dock in, I’ll get the coordinates from Lorraine..\n        /// </summary>\n        internal static string Dlg_PirateBase_1443 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_1443\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I think I like it!.\n        /// </summary>\n        internal static string Dlg_PirateBase_1501 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_1501\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Like I said, keep it..\n        /// </summary>\n        internal static string Dlg_PirateBase_1502 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_1502\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to And when you’re stocked up and ready for Bratsk, dock in!.\n        /// </summary>\n        internal static string Dlg_PirateBase_1503 {\n            get {\n                return ResourceManager.GetString(\"Dlg_PirateBase_1503\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Willkommen in Reichstag!.\n        /// </summary>\n        internal static string Dlg_ReichstagA_1000 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagA_1000\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The Nazis have made themselves a pretty spectacular headquarters..\n        /// </summary>\n        internal static string Dlg_ReichstagA_1001 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagA_1001\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Thomas arranged us a meeting in the main Reichstag building. .\n        /// </summary>\n        internal static string Dlg_ReichstagA_1002 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagA_1002\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Head there and find Colonel von Stauffenberg..\n        /// </summary>\n        internal static string Dlg_ReichstagA_1003 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagA_1003\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to On our way..\n        /// </summary>\n        internal static string Dlg_ReichstagA_1004 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagA_1004\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I have this strange… feeling..\n        /// </summary>\n        internal static string Dlg_ReichstagA_1005 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagA_1005\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to What do you mean?.\n        /// </summary>\n        internal static string Dlg_ReichstagA_1006 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagA_1006\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Oh, I am not sure. Just kinda feel like committing genocide. Ever get that feeling?.\n        /// </summary>\n        internal static string Dlg_ReichstagA_1007 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagA_1007\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Maybe it’s the surroundings..\n        /// </summary>\n        internal static string Dlg_ReichstagA_1008 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagA_1008\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Let’s stick to our mission!.\n        /// </summary>\n        internal static string Dlg_ReichstagA_1009 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagA_1009\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Colonel von Stauffenberg..\n        /// </summary>\n        internal static string Dlg_ReichstagA_1012 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagA_1012\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Mr. Rainier! Thomas told me of your arrival..\n        /// </summary>\n        internal static string Dlg_ReichstagA_1013 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagA_1013\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Did he also tell you about my brother? His name is Marcus Rainier. .\n        /// </summary>\n        internal static string Dlg_ReichstagA_1014 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagA_1014\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to He is being held – unjustly – in Reway prison for treason. .\n        /// </summary>\n        internal static string Dlg_ReichstagA_1015 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagA_1015\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I was told you might be able to help..\n        /// </summary>\n        internal static string Dlg_ReichstagA_1016 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagA_1016\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We will consider lending our support. .\n        /// </summary>\n        internal static string Dlg_ReichstagA_1017 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagA_1017\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to First you must prove you are worthy soldiers and ready to fight for our cause. .\n        /// </summary>\n        internal static string Dlg_ReichstagA_1018 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagA_1018\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We can talk about the plan in more detail afterwards. .\n        /// </summary>\n        internal static string Dlg_ReichstagA_1019 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagA_1019\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I suppose you have something specific in mind?.\n        /// </summary>\n        internal static string Dlg_ReichstagA_1020 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagA_1020\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Recently, we had some… problems with one of our research stations. .\n        /// </summary>\n        internal static string Dlg_ReichstagA_1021 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagA_1021\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to It was taken by a group of… separatists. We need someone, ….\n        /// </summary>\n        internal static string Dlg_ReichstagA_1022 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagA_1022\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …preferably from outside of the Reich, to go there, secure the research data….\n        /// </summary>\n        internal static string Dlg_ReichstagA_1023 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagA_1023\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …and neutralize the facility..\n        /// </summary>\n        internal static string Dlg_ReichstagA_1024 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagA_1024\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Any other information we might need?.\n        /// </summary>\n        internal static string Dlg_ReichstagA_1025 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagA_1025\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to No. This is a fairly standard operation. .\n        /// </summary>\n        internal static string Dlg_ReichstagA_1026 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagA_1026\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to But I hope you have a strong stomach, Mr. Rainier – it is a biological research lab.  .\n        /// </summary>\n        internal static string Dlg_ReichstagA_1027 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagA_1027\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Not a problem. Will this guarantee us your favor?.\n        /// </summary>\n        internal static string Dlg_ReichstagA_1028 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagA_1028\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to No promises. But the Reich rewards those who are loyal to our cause. .\n        /// </summary>\n        internal static string Dlg_ReichstagA_1029 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagA_1029\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We will talk later.   .\n        /// </summary>\n        internal static string Dlg_ReichstagA_1030 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagA_1030\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Apollo out. Madelyn, I am sending you the coordinates for a Nazi research lab. .\n        /// </summary>\n        internal static string Dlg_ReichstagA_1031 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagA_1031\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Get ready, I’m docking in a minute..\n        /// </summary>\n        internal static string Dlg_ReichstagA_1032 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagA_1032\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Roger that. .\n        /// </summary>\n        internal static string Dlg_ReichstagA_1033 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagA_1033\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We’re visiting a Nazi research lab? My childhood dreams, at last, are coming true? .\n        /// </summary>\n        internal static string Dlg_ReichstagA_1034 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagA_1034\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Valentin?.\n        /// </summary>\n        internal static string Dlg_ReichstagA_1035 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagA_1035\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Just joking. You know me..\n        /// </summary>\n        internal static string Dlg_ReichstagA_1036 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagA_1036\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Consider getting some supplies before departure, Apollo..\n        /// </summary>\n        internal static string Dlg_ReichstagA_1037 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagA_1037\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to But that’s up to you. I’m ready when you are..\n        /// </summary>\n        internal static string Dlg_ReichstagA_1038 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagA_1038\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Colonel von Stauffenberg? .\n        /// </summary>\n        internal static string Dlg_ReichstagC_1000 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagC_1000\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We’re back. Mission successful. Pretty nasty business, I must say!.\n        /// </summary>\n        internal static string Dlg_ReichstagC_1001 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagC_1001\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Soldiers follow orders. That is how it works. You proved strong, Mr. Rainier. .\n        /// </summary>\n        internal static string Dlg_ReichstagC_1002 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagC_1002\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You flatter me, Colonel. .\n        /// </summary>\n        internal static string Dlg_ReichstagC_1003 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagC_1003\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Strong enough for our cause. Shall we discuss your… request?.\n        /// </summary>\n        internal static string Dlg_ReichstagC_1004 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagC_1004\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Have you considered giving us your support with Reway? .\n        /// </summary>\n        internal static string Dlg_ReichstagC_1005 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagC_1005\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Whether it’s a frontal assault or some other way to get my brother out?.\n        /// </summary>\n        internal static string Dlg_ReichstagC_1006 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagC_1006\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Indeed. We already had a plan in place for attacking Reway. .\n        /// </summary>\n        internal static string Dlg_ReichstagC_1007 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagC_1007\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You see, many of our own officers and brave soldiers are being held there. .\n        /// </summary>\n        internal static string Dlg_ReichstagC_1008 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagC_1008\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to However, the attack is scheduled months from now. .\n        /// </summary>\n        internal static string Dlg_ReichstagC_1009 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagC_1009\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to And I know your brother is sentenced to death within a few days. .\n        /// </summary>\n        internal static string Dlg_ReichstagC_1010 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagC_1010\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to So what do you suggest? .\n        /// </summary>\n        internal static string Dlg_ReichstagC_1011 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagC_1011\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I would propose to attack earlier. However, at the moment, ….\n        /// </summary>\n        internal static string Dlg_ReichstagC_1012 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagC_1012\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …it is militarily impossible for us – thanks to some small… “internal” problems..\n        /// </summary>\n        internal static string Dlg_ReichstagC_1013 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagC_1013\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Internal problems?.\n        /// </summary>\n        internal static string Dlg_ReichstagC_1014 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagC_1014\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The base you were sent to – the one that was taken over by separatists; .\n        /// </summary>\n        internal static string Dlg_ReichstagC_1015 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagC_1015\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …it was not the only one. .\n        /// </summary>\n        internal static string Dlg_ReichstagC_1016 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagC_1016\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to This group calling themselves the White Wolves – .\n        /// </summary>\n        internal static string Dlg_ReichstagC_1017 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagC_1017\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to they’ve grown in strength over the past few months. We need to strike at their heart. .\n        /// </summary>\n        internal static string Dlg_ReichstagC_1018 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagC_1018\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Some time ago, they took over one of our most important mothership construction sites. .\n        /// </summary>\n        internal static string Dlg_ReichstagC_1019 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagC_1019\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to As I’m sure you can understand, ….\n        /// </summary>\n        internal static string Dlg_ReichstagC_1020 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagC_1020\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …we do not want the other factions to know about this issue until it is resolved..\n        /// </summary>\n        internal static string Dlg_ReichstagC_1021 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagC_1021\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We cannot attack the facility directly..\n        /// </summary>\n        internal static string Dlg_ReichstagC_1022 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagC_1022\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to It is protected by heavy rail guns and we cannot afford losses at the moment..\n        /// </summary>\n        internal static string Dlg_ReichstagC_1022_2 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagC_1022_2\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Perhaps we can aid you. .\n        /// </summary>\n        internal static string Dlg_ReichstagC_1023 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagC_1023\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to That’s what I hoped..\n        /// </summary>\n        internal static string Dlg_ReichstagC_1024 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagC_1024\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to And that is why I “tested” your skills and allegiance during the last assignment..\n        /// </summary>\n        internal static string Dlg_ReichstagC_1025 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagC_1025\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to If you solve this White Wolves problem of ours, .\n        /// </summary>\n        internal static string Dlg_ReichstagC_1026 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagC_1026\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I will do my best to convince our leadership to attack Reway as soon as possible..\n        /// </summary>\n        internal static string Dlg_ReichstagC_1027 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagC_1027\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to So… what’s the plan?.\n        /// </summary>\n        internal static string Dlg_ReichstagC_1028 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagC_1028\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Infiltrate Doppelburg..\n        /// </summary>\n        internal static string Dlg_ReichstagC_1029 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagC_1029\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We have a few loyal men there, so you should be able to get inside without a problem..\n        /// </summary>\n        internal static string Dlg_ReichstagC_1030 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagC_1030\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Take over the command center and disable the base defenses. Are you in?.\n        /// </summary>\n        internal static string Dlg_ReichstagC_1031 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagC_1031\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Affirmative. .\n        /// </summary>\n        internal static string Dlg_ReichstagC_1032 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagC_1032\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Perfect. .\n        /// </summary>\n        internal static string Dlg_ReichstagC_1033 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagC_1033\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Stop by the shipyard to pick up your own Fourth Reich fighters. .\n        /// </summary>\n        internal static string Dlg_ReichstagC_1034 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagC_1034\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to This document will ensure you receive them from the supply officer without any problems. .\n        /// </summary>\n        internal static string Dlg_ReichstagC_1035 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagC_1035\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Once on board, proceed to landing bay 3. .\n        /// </summary>\n        internal static string Dlg_ReichstagC_1036 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagC_1036\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to A transport ship will be waiting for you there, the one that will take you to Doppelburg. .\n        /// </summary>\n        internal static string Dlg_ReichstagC_1037 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagC_1037\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Confirmed. On my way..\n        /// </summary>\n        internal static string Dlg_ReichstagC_1038 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagC_1038\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Once you take over Doppelburg – send us a signal. .\n        /// </summary>\n        internal static string Dlg_ReichstagC_1039 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagC_1039\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We’ll come to your aid and help knock out the zeppelins painlessly.  .\n        /// </summary>\n        internal static string Dlg_ReichstagC_1040 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagC_1040\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to This should be it. .\n        /// </summary>\n        internal static string Dlg_ReichstagC_1041 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagC_1041\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Brand new vehicles at our command!.\n        /// </summary>\n        internal static string Dlg_ReichstagC_1042 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagC_1042\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Good day, how may I serve?.\n        /// </summary>\n        internal static string Dlg_ReichstagC_1043 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagC_1043\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We are here for re-equipping. This document was signed by Colonel von Stauffenberg. .\n        /// </summary>\n        internal static string Dlg_ReichstagC_1044 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagC_1044\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Good, good. You are to pick up three Baer B13 fighters. .\n        /// </summary>\n        internal static string Dlg_ReichstagC_1045 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagC_1045\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Head to the end of the hall, section S7..\n        /// </summary>\n        internal static string Dlg_ReichstagC_1046 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagC_1046\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Great, thanks!.\n        /// </summary>\n        internal static string Dlg_ReichstagC_1047 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagC_1047\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You are welcome. .\n        /// </summary>\n        internal static string Dlg_ReichstagC_1048 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagC_1048\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Enjoy the best one-seat fighters in all of known space!.\n        /// </summary>\n        internal static string Dlg_ReichstagC_1049 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagC_1049\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Here we go. Take your pick, Apollo. .\n        /// </summary>\n        internal static string Dlg_ReichstagC_1050 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagC_1050\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Good choice. I’ll take that one..\n        /// </summary>\n        internal static string Dlg_ReichstagC_1051 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagC_1051\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I think they’re all exactly the same. .\n        /// </summary>\n        internal static string Dlg_ReichstagC_1052 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagC_1052\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I see you are ready for takeoff. .\n        /// </summary>\n        internal static string Dlg_ReichstagC_1053 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagC_1053\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Make sure to check out the armory for weapons and other equipment you might find useful..\n        /// </summary>\n        internal static string Dlg_ReichstagC_1054 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagC_1054\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Thanks; it might prove useful to get some new stuff..\n        /// </summary>\n        internal static string Dlg_ReichstagC_1055 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagC_1055\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Wow, some of this gear kicks major ass!.\n        /// </summary>\n        internal static string Dlg_ReichstagC_1056 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagC_1056\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Let’s go shopping!.\n        /// </summary>\n        internal static string Dlg_ReichstagC_1057 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagC_1057\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to If you want something else, Apollo, feel free to browse again. .\n        /// </summary>\n        internal static string Dlg_ReichstagC_1058 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagC_1058\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Otherwise, me and Valentin are ready for departure. .\n        /// </summary>\n        internal static string Dlg_ReichstagC_1059 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagC_1059\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hail! You are the infiltrator squad for Doppelburg, correct?.\n        /// </summary>\n        internal static string Dlg_ReichstagC_1060 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagC_1060\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Yes..\n        /// </summary>\n        internal static string Dlg_ReichstagC_1061 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagC_1061\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Right on time. Please head inside..\n        /// </summary>\n        internal static string Dlg_ReichstagC_1062 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagC_1062\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The soldiers assigned to your command are already waiting!.\n        /// </summary>\n        internal static string Dlg_ReichstagC_1063 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagC_1063\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Helping one Nazi group against another. Not sure how I feel about this..\n        /// </summary>\n        internal static string Dlg_ReichstagC_1064 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagC_1064\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Best not to feel too much..\n        /// </summary>\n        internal static string Dlg_ReichstagC_1065 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ReichstagC_1065\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Welcome to Eurydice!.\n        /// </summary>\n        internal static string Dlg_ResearchVessel_1000 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ResearchVessel_1000\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Amazing! The bending of the sun’s rays….\n        /// </summary>\n        internal static string Dlg_ResearchVessel_1001 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ResearchVessel_1001\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …through the Vandenberg Gas Field creates some spectacular visuals..\n        /// </summary>\n        internal static string Dlg_ResearchVessel_1002 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ResearchVessel_1002\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Yeah, looks like a sci-fi movie I once saw..\n        /// </summary>\n        internal static string Dlg_ResearchVessel_1003 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ResearchVessel_1003\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Guys, this is the plan: The parts we need are probably spread all over the place..\n        /// </summary>\n        internal static string Dlg_ResearchVessel_1004 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ResearchVessel_1004\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to According to my blueprints, ….\n        /// </summary>\n        internal static string Dlg_ResearchVessel_1005 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ResearchVessel_1005\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …there seems to be no one specific place containing probe parts..\n        /// </summary>\n        internal static string Dlg_ResearchVessel_1006 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ResearchVessel_1006\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We’re talking needle in a haystack?.\n        /// </summary>\n        internal static string Dlg_ResearchVessel_1007 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ResearchVessel_1007\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Exactly!.\n        /// </summary>\n        internal static string Dlg_ResearchVessel_1008 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ResearchVessel_1008\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to So… random looting and pillaging! Awesome!.\n        /// </summary>\n        internal static string Dlg_ResearchVessel_1009 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ResearchVessel_1009\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Just make sure you don’t blow up the parts we need. .\n        /// </summary>\n        internal static string Dlg_ResearchVessel_1010 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ResearchVessel_1010\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I’ve uploaded you the dataprints from Reef..\n        /// </summary>\n        internal static string Dlg_ResearchVessel_1011 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ResearchVessel_1011\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Your HUD will detect which parts are relevant for us..\n        /// </summary>\n        internal static string Dlg_ResearchVessel_1012 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ResearchVessel_1012\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Incoming ships, identify yourself! This is a neutral research vessel on a mission….\n        /// </summary>\n        internal static string Dlg_ResearchVessel_1013 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ResearchVessel_1013\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …investigating the composition of the Vandenberg Gas Field..\n        /// </summary>\n        internal static string Dlg_ResearchVessel_1014 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ResearchVessel_1014\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Simply stated, you have something we want..\n        /// </summary>\n        internal static string Dlg_ResearchVessel_1015 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ResearchVessel_1015\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You could have tried to negotiate first!.\n        /// </summary>\n        internal static string Dlg_ResearchVessel_1016 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ResearchVessel_1016\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We lean toward awkward silence and firearms..\n        /// </summary>\n        internal static string Dlg_ResearchVessel_1017 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ResearchVessel_1017\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ok, you asked for it. All fighters, engage enemy!.\n        /// </summary>\n        internal static string Dlg_ResearchVessel_1018 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ResearchVessel_1018\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to This place looks pretty fortified..\n        /// </summary>\n        internal static string Dlg_ResearchVessel_1019 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ResearchVessel_1019\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to There’s definitely something valuable inside..\n        /// </summary>\n        internal static string Dlg_ResearchVessel_1020 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ResearchVessel_1020\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Our missiles won’t do the job..\n        /// </summary>\n        internal static string Dlg_ResearchVessel_1021 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ResearchVessel_1021\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Yup, we need to hack in from somewhere. .\n        /// </summary>\n        internal static string Dlg_ResearchVessel_1022 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ResearchVessel_1022\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to This one won’t be easy..\n        /// </summary>\n        internal static string Dlg_ResearchVessel_1023 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ResearchVessel_1023\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Preliminary scans show you’ll need to unlock several seals in order to break through..\n        /// </summary>\n        internal static string Dlg_ResearchVessel_1024 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ResearchVessel_1024\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Wow, look at this!.\n        /// </summary>\n        internal static string Dlg_ResearchVessel_1025 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ResearchVessel_1025\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The ship is built on an asteroid with rich helium deposits..\n        /// </summary>\n        internal static string Dlg_ResearchVessel_1026 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ResearchVessel_1026\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Technically, it runs on fuel from its own core..\n        /// </summary>\n        internal static string Dlg_ResearchVessel_1027 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ResearchVessel_1027\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Eh, science….\n        /// </summary>\n        internal static string Dlg_ResearchVessel_1028 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ResearchVessel_1028\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to According to the dataprints, these are some of the parts we need..\n        /// </summary>\n        internal static string Dlg_ResearchVessel_1029 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ResearchVessel_1029\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Resonator, crystal receivers, and DIP switch..\n        /// </summary>\n        internal static string Dlg_ResearchVessel_1030 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ResearchVessel_1030\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Good!.\n        /// </summary>\n        internal static string Dlg_ResearchVessel_1031 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ResearchVessel_1031\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Another bunch of goodies we need. Centrifugal switch, reed switch, and ultrasonic filters..\n        /// </summary>\n        internal static string Dlg_ResearchVessel_1032 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ResearchVessel_1032\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Great! We’ve got over half of the parts! Keep up the search!.\n        /// </summary>\n        internal static string Dlg_ResearchVessel_1033 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ResearchVessel_1033\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Here comes Santa Claus! Sockets, wires, some biconical....\n        /// </summary>\n        internal static string Dlg_ResearchVessel_1034 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ResearchVessel_1034\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …and phase antennas, and a feed horn..\n        /// </summary>\n        internal static string Dlg_ResearchVessel_1035 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ResearchVessel_1035\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sa-weet!.\n        /// </summary>\n        internal static string Dlg_ResearchVessel_1036 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ResearchVessel_1036\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sorry to say, but a few parts are still missing. Keep looking..\n        /// </summary>\n        internal static string Dlg_ResearchVessel_1037 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ResearchVessel_1037\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We’ve turned this whole place upside down. Any clues?.\n        /// </summary>\n        internal static string Dlg_ResearchVessel_1038 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ResearchVessel_1038\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hey, remember that shielded hi-tech container we found? Now that we’ve hacked a few hubs….\n        /// </summary>\n        internal static string Dlg_ResearchVessel_1039 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ResearchVessel_1039\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Good point. Maybe it’s open..\n        /// </summary>\n        internal static string Dlg_ResearchVessel_1040 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ResearchVessel_1040\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Yes! The force field’s down, we’re free to enter..\n        /// </summary>\n        internal static string Dlg_ResearchVessel_1041 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ResearchVessel_1041\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to All right! Solenoids, hmm, filter capacitators….\n        /// </summary>\n        internal static string Dlg_ResearchVessel_1042 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ResearchVessel_1042\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …OS-CON polymer capacitators, rectifier tubes, and klystrons..\n        /// </summary>\n        internal static string Dlg_ResearchVessel_1043 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ResearchVessel_1043\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Checking the list and… we’re good!.\n        /// </summary>\n        internal static string Dlg_ResearchVessel_1044 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ResearchVessel_1044\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ok, guys, come back to Sapho and we’ll set a course out of here!.\n        /// </summary>\n        internal static string Dlg_ResearchVessel_1045 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ResearchVessel_1045\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to What’s the next stop?.\n        /// </summary>\n        internal static string Dlg_ResearchVessel_1046 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ResearchVessel_1046\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We need to hit the black market for those fuel cells..\n        /// </summary>\n        internal static string Dlg_ResearchVessel_1047 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ResearchVessel_1047\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Manjeet is our man..\n        /// </summary>\n        internal static string Dlg_ResearchVessel_1048 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ResearchVessel_1048\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Right. To the Junkyard, Jeeves. .\n        /// </summary>\n        internal static string Dlg_ResearchVessel_1049 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ResearchVessel_1049\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to This computer over here, might it be helpful?.\n        /// </summary>\n        internal static string Dlg_ResearchVessel_1050 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ResearchVessel_1050\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You never know. Apollo, you have the hacking device, would you mind…?.\n        /// </summary>\n        internal static string Dlg_ResearchVessel_1051 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ResearchVessel_1051\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to My pleasure..\n        /// </summary>\n        internal static string Dlg_ResearchVessel_1052 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ResearchVessel_1052\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to This seems like another computer or security hub..\n        /// </summary>\n        internal static string Dlg_ResearchVessel_1053 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ResearchVessel_1053\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Check it out..\n        /// </summary>\n        internal static string Dlg_ResearchVessel_1054 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ResearchVessel_1054\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I’ve got another security hub. Apollo?.\n        /// </summary>\n        internal static string Dlg_ResearchVessel_1055 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ResearchVessel_1055\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to On my way. .\n        /// </summary>\n        internal static string Dlg_ResearchVessel_1056 {\n            get {\n                return ResourceManager.GetString(\"Dlg_ResearchVessel_1056\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to So this is the Rift-Sion lab complex..\n        /// </summary>\n        internal static string Dlg_Rift_0102 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rift_0102\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Right. You might want to go there first..\n        /// </summary>\n        internal static string Dlg_Rift_0103 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rift_0103\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The researchers in here might have some useful tips how to survive in the Rift..\n        /// </summary>\n        internal static string Dlg_Rift_0105 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rift_0105\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I am staying in here with Tarja. Our ships can’t handle the radiation and sun storms..\n        /// </summary>\n        internal static string Dlg_Rift_0106 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rift_0106\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Apollo Rainier to Rift-Sion laboratories, request for landing..\n        /// </summary>\n        internal static string Dlg_Rift_0201 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rift_0201\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Approved. Welcome to our station and enjoy the sightseeing..\n        /// </summary>\n        internal static string Dlg_Rift_0202 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rift_0202\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ehm, thanks..\n        /// </summary>\n        internal static string Dlg_Rift_0203 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rift_0203\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I am on an expedition to the Rift itself..\n        /// </summary>\n        internal static string Dlg_Rift_0204 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rift_0204\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Can anyone give me tips for the trip?.\n        /// </summary>\n        internal static string Dlg_Rift_0205 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rift_0205\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Just a moment. I will connect you to Tourist Information office..\n        /// </summary>\n        internal static string Dlg_Rift_0206 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rift_0206\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tourist Information office? Here? Not too much stress on that job..\n        /// </summary>\n        internal static string Dlg_Rift_0208 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rift_0208\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Rift-Sion Tourist Information Office. Jennifer Smith speaking. How may I help?.\n        /// </summary>\n        internal static string Dlg_Rift_0301 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rift_0301\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Um… I’m on an expedition to the Rift. Any useful tips you can provide?.\n        /// </summary>\n        internal static string Dlg_Rift_0302 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rift_0302\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I will upload you the Rift Survival Brochure. Have a pleasant stay..\n        /// </summary>\n        internal static string Dlg_Rift_0303 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rift_0303\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …hm… always wear sunglases… use sun wind armor at all time….\n        /// </summary>\n        internal static string Dlg_Rift_0305 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rift_0305\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …avoid hi-speed objects such as meteor storms….\n        /// </summary>\n        internal static string Dlg_Rift_0306 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rift_0306\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …high solar wind areas… heavy radiation….\n        /// </summary>\n        internal static string Dlg_Rift_0307 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rift_0307\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Anything interesting?.\n        /// </summary>\n        internal static string Dlg_Rift_0308 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rift_0308\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Some nice pictures..\n        /// </summary>\n        internal static string Dlg_Rift_0309 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rift_0309\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Oh well, guess I’ll be on my way..\n        /// </summary>\n        internal static string Dlg_Rift_0310 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rift_0310\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Check out the shop at Rift-Sion. They might have some useful equipment there..\n        /// </summary>\n        internal static string Dlg_Rift_0311 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rift_0311\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Make sure to buy anti-radiation meds and some medical and repair supplies..\n        /// </summary>\n        internal static string Dlg_Rift_0312 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rift_0312\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to And definitely lots of fuel, it is a long way to the Rift..\n        /// </summary>\n        internal static string Dlg_Rift_0313 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rift_0313\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ok, thanks for the tips..\n        /// </summary>\n        internal static string Dlg_Rift_0314 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rift_0314\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Guess I’m ready as I’ll ever be..\n        /// </summary>\n        internal static string Dlg_Rift_0401 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rift_0401\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Double check your seat belts. And – good luck! We’ll be waiting here..\n        /// </summary>\n        internal static string Dlg_Rift_0402 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rift_0402\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Apollo, I am losing your signal. Is everything ok?.\n        /// </summary>\n        internal static string Dlg_Rift_0501 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rift_0501\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Affirmative. Just a lot of radiation and shit..\n        /// </summary>\n        internal static string Dlg_Rift_0502 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rift_0502\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Probably disturbing my signal. You copy?.\n        /// </summary>\n        internal static string Dlg_Rift_0503 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rift_0503\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Gotcha. Do this fast..\n        /// </summary>\n        internal static string Dlg_Rift_0504 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rift_0504\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Yeah, the radiation here’ll turn me into a gummy bear in nothing flat..\n        /// </summary>\n        internal static string Dlg_Rift_0505 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rift_0505\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Out of signal range, swimming in radiation, and a boring mining operation ahead. Yee-haw..\n        /// </summary>\n        internal static string Dlg_Rift_0601 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rift_0601\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to This plutonium deposit has a really extravagant color. Hmm..\n        /// </summary>\n        internal static string Dlg_Rift_0701 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rift_0701\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Mm, such yummy, gummy loop-tonium. Pluteenium. Go-homium..\n        /// </summary>\n        internal static string Dlg_Rift_0801 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rift_0801\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Man, this radiation is affecting my dental health. Mental wealth. And such..\n        /// </summary>\n        internal static string Dlg_Rift_0901 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rift_0901\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to This should be enough. Now, back to the station..\n        /// </summary>\n        internal static string Dlg_Rift_1001 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rift_1001\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to This is Apollo, reporting in. I have the rare plutonium..\n        /// </summary>\n        internal static string Dlg_Rift_1101 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rift_1101\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Loads of it. And maybe even some to spare..\n        /// </summary>\n        internal static string Dlg_Rift_1102 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rift_1102\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Oh… I… I’m glad to hear you again. Are you all right?.\n        /// </summary>\n        internal static string Dlg_Rift_1103 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rift_1103\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Yeah, getting poached in raw radiation was a nice break from being shot at..\n        /// </summary>\n        internal static string Dlg_Rift_1104 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rift_1104\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Welcome back! Once you dock in, we can depart to Thomas..\n        /// </summary>\n        internal static string Dlg_Rift_1106 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rift_1106\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Affirmina-tative..\n        /// </summary>\n        internal static string Dlg_Rift_1107 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rift_1107\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Apollo?.\n        /// </summary>\n        internal static string Dlg_Rift_1108 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rift_1108\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to May I ask you a personal question?.\n        /// </summary>\n        internal static string Dlg_Rift_1110 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rift_1110\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ah… …no..\n        /// </summary>\n        internal static string Dlg_Rift_1111 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rift_1111\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Let’s give the man some space..\n        /// </summary>\n        internal static string Dlg_Rift_1112 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rift_1112\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Come on in. Course set to Barth’s Moon!.\n        /// </summary>\n        internal static string Dlg_Rift_1113 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rift_1113\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I still can’t believe he’s gone..\n        /// </summary>\n        internal static string Dlg_Rift_2000 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rift_2000\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I know. But the best thing we can do is to finish what we started… Together..\n        /// </summary>\n        internal static string Dlg_Rift_2001 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rift_2001\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Continue with this insane adventure? Lose more people?.\n        /// </summary>\n        internal static string Dlg_Rift_2002 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rift_2002\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to So next time it’s you, or Tarja, or Valentin, or me?.\n        /// </summary>\n        internal static string Dlg_Rift_2003 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rift_2003\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Madelyn, calm down. We all chose this path voluntarily..\n        /// </summary>\n        internal static string Dlg_Rift_2004 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rift_2004\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Marcus knew about the risks, just like we did..\n        /// </summary>\n        internal static string Dlg_Rift_2005 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rift_2005\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I… I know, just… ok, let’s go on..\n        /// </summary>\n        internal static string Dlg_Rift_2007 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rift_2007\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Apollo, head to the coordinates I just sent you..\n        /// </summary>\n        internal static string Dlg_Rift_2008 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rift_2008\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to On my way. And… Madelyn? Thanks..\n        /// </summary>\n        internal static string Dlg_Rift_2009 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rift_2009\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Rime! The heart of the OmniCorp! .\n        /// </summary>\n        internal static string Dlg_Rime_0101 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_0101\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to This guy we’re after, this Francis Reef….\n        /// </summary>\n        internal static string Dlg_Rime_0102 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_0102\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Yeah?.\n        /// </summary>\n        internal static string Dlg_Rime_0103 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_0103\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Madelyn, you have some more info on him?.\n        /// </summary>\n        internal static string Dlg_Rime_0104 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_0104\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Not much. Classified OC personnel, 2nd security circle..\n        /// </summary>\n        internal static string Dlg_Rime_0105 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_0105\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Employee file says: Francis Reef, born 2045, OmniCorp citizen,.\n        /// </summary>\n        internal static string Dlg_Rime_0106 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_0106\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …Assistant Director of Research and Development. .\n        /// </summary>\n        internal static string Dlg_Rime_0107 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_0107\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to No other data in the channels I checked. .\n        /// </summary>\n        internal static string Dlg_Rime_0108 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_0108\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The OmniCorp guys must keep a close eye on him. .\n        /// </summary>\n        internal static string Dlg_Rime_0109 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_0109\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Time to chat him up. Head to the Research Quadrant. .\n        /// </summary>\n        internal static string Dlg_Rime_0110 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_0110\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Research Quadrant?.\n        /// </summary>\n        internal static string Dlg_Rime_0111 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_0111\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to First time in Rime, Valentin?.\n        /// </summary>\n        internal static string Dlg_Rime_0112 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_0112\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to OmniCorp is divided into four parts, like four segments of a huge… donut. .\n        /// </summary>\n        internal static string Dlg_Rime_0113 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_0113\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to A quarter of this big-ass bitch is a research department?.\n        /// </summary>\n        internal static string Dlg_Rime_0114 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_0114\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Kind of. I was stuck in here for months once, doing some errands for a client..\n        /// </summary>\n        internal static string Dlg_Rime_0115 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_0115\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Interesting city. .\n        /// </summary>\n        internal static string Dlg_Rime_0116 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_0116\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Looks sterile from the outside, but has its “underbelly” –.\n        /// </summary>\n        internal static string Dlg_Rime_0117 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_0117\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to bars, casinos, “houses of ill repute”. .\n        /// </summary>\n        internal static string Dlg_Rime_0118 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_0118\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I don’t think we’re going to have time for that.\n        /// </summary>\n        internal static string Dlg_Rime_0119 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_0119\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Don’t underestimate OC officials..\n        /// </summary>\n        internal static string Dlg_Rime_0120 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_0120\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Like the city, they look sterile and proper from the outside, but underneath… .\n        /// </summary>\n        internal static string Dlg_Rime_0121 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_0121\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I get what you’re saying. .\n        /// </summary>\n        internal static string Dlg_Rime_0122 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_0122\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to This should be it. Reef’s residence..\n        /// </summary>\n        internal static string Dlg_Rime_0201 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_0201\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Shall we knock on the–.\n        /// </summary>\n        internal static string Dlg_Rime_0202 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_0202\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Greetings, gentlemen. .\n        /// </summary>\n        internal static string Dlg_Rime_0203 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_0203\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to My name is Francis Reef, Assistant Director of OC Research and Development..\n        /// </summary>\n        internal static string Dlg_Rime_0204 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_0204\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to What exactly brings you to pay me a visit?.\n        /// </summary>\n        internal static string Dlg_Rime_0205 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_0205\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We need a genius technician. Maybe you know of one..\n        /// </summary>\n        internal static string Dlg_Rime_0206 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_0206\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Someone able to construct a metal detector….\n        /// </summary>\n        internal static string Dlg_Rime_0207 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_0207\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …for a substance far beyond the knowledge of modern science. .\n        /// </summary>\n        internal static string Dlg_Rime_0208 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_0208\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hm… And what does this technician get in return?.\n        /// </summary>\n        internal static string Dlg_Rime_0209 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_0209\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The thrill of being the first person ever to experiment with an alien substance. .\n        /// </summary>\n        internal static string Dlg_Rime_0210 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_0210\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I need to think this out. You’re mercenaries, I take it?.\n        /// </summary>\n        internal static string Dlg_Rime_0211 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_0211\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We prefer the term freelancer. .\n        /// </summary>\n        internal static string Dlg_Rime_0212 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_0212\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ok. Here’s the deal. You do me a favor, I’ll do you a favor..\n        /// </summary>\n        internal static string Dlg_Rime_0213 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_0213\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Or let’s just say – you need to convince me you’re not just low-level pirates. .\n        /// </summary>\n        internal static string Dlg_Rime_0214 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_0214\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You want an exceptional scientist for an extraordinary task? .\n        /// </summary>\n        internal static string Dlg_Rime_0216 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_0216\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fine, but I work only with other exceptional people. .\n        /// </summary>\n        internal static string Dlg_Rime_0217 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_0217\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to What’s this favor?.\n        /// </summary>\n        internal static string Dlg_Rime_0218 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_0218\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I have a “political” opponent in the company hierarchy. Jim Raynolds..\n        /// </summary>\n        internal static string Dlg_Rime_0219 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_0219\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to He is attracting a great deal of cash for his campaign. And he hates me..\n        /// </summary>\n        internal static string Dlg_Rime_0220 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_0220\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Why is not important. But I need something on him. .\n        /// </summary>\n        internal static string Dlg_Rime_0221 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_0221\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to All the private detectives I’ve hired have found nothing. .\n        /// </summary>\n        internal static string Dlg_Rime_0222 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_0222\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to If I am to advance in my career, I need to be able to blackmail Raynolds. .\n        /// </summary>\n        internal static string Dlg_Rime_0223 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_0223\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to What – you want us to kidnap his wife and daughter?.\n        /// </summary>\n        internal static string Dlg_Rime_0224 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_0224\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Nothing that… personal. .\n        /// </summary>\n        internal static string Dlg_Rime_0225 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_0225\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to There is a large underground supply of illegal alcohol in Rime. .\n        /// </summary>\n        internal static string Dlg_Rime_0226 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_0226\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to That means tax evasion, to the tune of millions of credits a month.  .\n        /// </summary>\n        internal static string Dlg_Rime_0227 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_0227\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to In the industrial quadrant there’s a place called the Duplex bar..\n        /// </summary>\n        internal static string Dlg_Rime_0228 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_0228\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to It definitely has some connection to the black market..\n        /// </summary>\n        internal static string Dlg_Rime_0229 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_0229\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Go there, keep your eyes open. Track the source of the alcohol..\n        /// </summary>\n        internal static string Dlg_Rime_0230 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_0230\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Then… steal as many cargo boxes of it as you can..\n        /// </summary>\n        internal static string Dlg_Rime_0231 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_0231\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Drop them inside Raynolds’s diplomatic vessel. That’s it. I’ll take care of the rest..\n        /// </summary>\n        internal static string Dlg_Rime_0232 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_0232\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hmm, that monologue was cued up for quite some time..\n        /// </summary>\n        internal static string Dlg_Rime_0233 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_0233\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ok, we’re on it. .\n        /// </summary>\n        internal static string Dlg_Rime_0234 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_0234\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Mr. Reef, check the data I just transmitted you. You might find it… interesting. .\n        /// </summary>\n        internal static string Dlg_Rime_0235 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_0235\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Very well. .\n        /// </summary>\n        internal static string Dlg_Rime_0236 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_0236\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ok, guys, go to your positions. Spread out and try to look… inconspicuous..\n        /// </summary>\n        internal static string Dlg_Rime_0501 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_0501\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Damn, those whores should have been paying us. There are much better places on Rime..\n        /// </summary>\n        internal static string Dlg_Rime_0601 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_0601\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Right, tomorrow we’ll check out the Marimba Club..\n        /// </summary>\n        internal static string Dlg_Rime_0602 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_0602\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Stuart was there last week and he said the chicks are hot and they like to….\n        /// </summary>\n        internal static string Dlg_Rime_0602a {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_0602a\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ok, probably not important..\n        /// </summary>\n        internal static string Dlg_Rime_0603 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_0603\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Get out, and don’t come back! This club is for gentlemen..\n        /// </summary>\n        internal static string Dlg_Rime_0701 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_0701\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You’ll regret this… I’m going to tell all my friends and….\n        /// </summary>\n        internal static string Dlg_Rime_0702 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_0702\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to One more word and you’ll be talkin’ out of a new hole, pal..\n        /// </summary>\n        internal static string Dlg_Rime_0703 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_0703\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The one I’m going to rip in your neck..\n        /// </summary>\n        internal static string Dlg_Rime_0703a {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_0703a\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ah, the squalid human drama! I’m starting to enjoy this job..\n        /// </summary>\n        internal static string Dlg_Rime_0704 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_0704\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Quiet! I think I’ve got something..\n        /// </summary>\n        internal static string Dlg_Rime_0705 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_0705\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …Matt missed the delivery yesterday. Got drunk and had to sleep it off in a holding cell..\n        /// </summary>\n        internal static string Dlg_Rime_0801 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_0801\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ok, I’ll take care of inventory today..\n        /// </summary>\n        internal static string Dlg_Rime_0802 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_0802\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Better hurry. We’ve got lots of customers today and not much in a reserve..\n        /// </summary>\n        internal static string Dlg_Rime_0803 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_0803\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Apollo, tail this guy..\n        /// </summary>\n        internal static string Dlg_Rime_0805 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_0805\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Don’t get too close. Hang back at 300 to 650 meters, that should do the job..\n        /// </summary>\n        internal static string Dlg_Rime_0901 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_0901\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Mitchell, you happen to notice that you were followed?.\n        /// </summary>\n        internal static string Dlg_Rime_1001 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_1001\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to What? Damn!.\n        /// </summary>\n        internal static string Dlg_Rime_1002 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_1002\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to This may seriously impact our working relationship. Guys, take care of the nosy bitch!.\n        /// </summary>\n        internal static string Dlg_Rime_1003 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_1003\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We’ve got your back, Apollo! Guys, let’s make this quick..\n        /// </summary>\n        internal static string Dlg_Rime_1004 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_1004\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to With pleasure..\n        /// </summary>\n        internal static string Dlg_Rime_1005 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_1005\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ok, that’s all the guards. Grab the undeclared cargo boxes..\n        /// </summary>\n        internal static string Dlg_Rime_1101 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_1101\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hurry. I don’t want to be here when the rest of the gang shows up..\n        /// </summary>\n        internal static string Dlg_Rime_1101a {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_1101a\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ditto on that..\n        /// </summary>\n        internal static string Dlg_Rime_1102 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_1102\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to That should do. I think we’ve got enough..\n        /// </summary>\n        internal static string Dlg_Rime_1201 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_1201\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ok, then let’s make some dust..\n        /// </summary>\n        internal static string Dlg_Rime_1202 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_1202\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Reef, we’ve got the stuff. Give us the coordinates for Raynolds’ vessel..\n        /// </summary>\n        internal static string Dlg_Rime_1301 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_1301\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Good, good. I just sent them. Reef out..\n        /// </summary>\n        internal static string Dlg_Rime_1302 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_1302\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The next step’s clear. Just follow the coordinates..\n        /// </summary>\n        internal static string Dlg_Rime_1303 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_1303\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Apollo, you want to handle this part?.\n        /// </summary>\n        internal static string Dlg_Rime_1401 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_1401\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sure..\n        /// </summary>\n        internal static string Dlg_Rime_1402 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_1402\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ok, wait for the signal from Madelyn. We need to make sure no one’s watching..\n        /// </summary>\n        internal static string Dlg_Rime_1403 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_1403\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Proceed to the exact coordinates I sent..\n        /// </summary>\n        internal static string Dlg_Rime_1404 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_1404\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sit pretty. Wait for my signal..\n        /// </summary>\n        internal static string Dlg_Rime_1501 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_1501\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I’m checking the guard and maintenance ships in the area..\n        /// </summary>\n        internal static string Dlg_Rime_1502 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_1502\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to When I give the word, rush inside, place the cargo, and return to this position..\n        /// </summary>\n        internal static string Dlg_Rime_1503 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_1503\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Understood?.\n        /// </summary>\n        internal static string Dlg_Rime_1504 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_1504\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I’m locked and loaded..\n        /// </summary>\n        internal static string Dlg_Rime_1505 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_1505\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ok. Two ships beyond the corner, your direction. Stay calm..\n        /// </summary>\n        internal static string Dlg_Rime_1506 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_1506\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Okay, this is our chance!.\n        /// </summary>\n        internal static string Dlg_Rime_1601 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_1601\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Get ready… three, two, one – go, go, go!.\n        /// </summary>\n        internal static string Dlg_Rime_1602 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_1602\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Place the cargo boxes on the points marked on your HUD..\n        /// </summary>\n        internal static string Dlg_Rime_1603 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_1603\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to And hurry, I’m picking up several ships that might head our direction..\n        /// </summary>\n        internal static string Dlg_Rime_1604 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_1604\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ok, Apollo, incoming ships. You’ve got about ten or twenty seconds..\n        /// </summary>\n        internal static string Dlg_Rime_1701 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_1701\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hurry up, two ships, nearly visual contact!.\n        /// </summary>\n        internal static string Dlg_Rime_1702 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_1702\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Nice run, Apollo!.\n        /// </summary>\n        internal static string Dlg_Rime_1801 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_1801\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Thanks..\n        /// </summary>\n        internal static string Dlg_Rime_1802 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_1802\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to A little on the high-stress side, but nice..\n        /// </summary>\n        internal static string Dlg_Rime_1803 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_1803\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to So we’re on our way to Reef again?.\n        /// </summary>\n        internal static string Dlg_Rime_1804 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_1804\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to That’s the plan..\n        /// </summary>\n        internal static string Dlg_Rime_1805 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_1805\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I hope he’s happy..\n        /// </summary>\n        internal static string Dlg_Rime_1806 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_1806\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We did what he wanted. Now it’s his turn..\n        /// </summary>\n        internal static string Dlg_Rime_1807 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_1807\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Reef, you copy?.\n        /// </summary>\n        internal static string Dlg_Rime_1901 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_1901\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Affirmative. Nice job. I’ll jump right to the fine print, gentlemen..\n        /// </summary>\n        internal static string Dlg_Rime_1902 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_1902\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Consider this a done deal..\n        /// </summary>\n        internal static string Dlg_Rime_1902a {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_1902a\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I’ll work for you. But these substance detectors you want to construct….\n        /// </summary>\n        internal static string Dlg_Rime_1903 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_1903\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Yes?.\n        /// </summary>\n        internal static string Dlg_Rime_1904 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_1904\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to They’re going to be a major pain in the ass..\n        /// </summary>\n        internal static string Dlg_Rime_1905 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_1905\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I can build them, but I’m going to require some extremely nasty materials..\n        /// </summary>\n        internal static string Dlg_Rime_1906 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_1906\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Such as?.\n        /// </summary>\n        internal static string Dlg_Rime_1907 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_1907\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I’ve just transmitted you the component list and some additional information..\n        /// </summary>\n        internal static string Dlg_Rime_1908 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_1908\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Simply put, you need several components manufactured only by OmniCorp and EAC, ….\n        /// </summary>\n        internal static string Dlg_Rime_1909 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_1909\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …some heavy-duty power cells from the black market and last but not least….\n        /// </summary>\n        internal static string Dlg_Rime_1911 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_1911\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …tons of rare plutonium isotopes to keep this thing operational long enough to do its job..\n        /// </summary>\n        internal static string Dlg_Rime_1912 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_1912\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Good. Any tips as to possible sellers?.\n        /// </summary>\n        internal static string Dlg_Rime_1914 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_1914\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ha! Most of these items are rare prototypes..\n        /// </summary>\n        internal static string Dlg_Rime_1915 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_1915\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to They won’t be publicly available for three to five years..\n        /// </summary>\n        internal static string Dlg_Rime_1916 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_1916\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to So?.\n        /// </summary>\n        internal static string Dlg_Rime_1917 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_1917\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I’ll be blunt. Apart from raiding Rime….\n        /// </summary>\n        internal static string Dlg_Rime_1918 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_1918\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …the only way to get components of sufficient quality is to hit Eurydice..\n        /// </summary>\n        internal static string Dlg_Rime_1919 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_1919\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Pretty famous research ship built out of an asteroid..\n        /// </summary>\n        internal static string Dlg_Rime_1920 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_1920\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Doesn’t it belong to OmniCorp?.\n        /// </summary>\n        internal static string Dlg_Rime_1921 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_1921\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to It’s currently in the Vandenberg Gas Field..\n        /// </summary>\n        internal static string Dlg_Rime_1922 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_1922\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to And yes, it’s… partly OmniCorp..\n        /// </summary>\n        internal static string Dlg_Rime_1923 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_1923\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Are you suggesting we raid your own research vessel?.\n        /// </summary>\n        internal static string Dlg_Rime_1924 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_1924\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I am not suggesting anything. Just stating the possibilities..\n        /// </summary>\n        internal static string Dlg_Rime_1925 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_1925\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You think we can find all the stuff we need there?.\n        /// </summary>\n        internal static string Dlg_Rime_1926 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_1926\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The components, yes. For the fuel cells, try some black market channels..\n        /// </summary>\n        internal static string Dlg_Rime_1927 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_1927\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Iranians or Indians..\n        /// </summary>\n        internal static string Dlg_Rime_1927a {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_1927a\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Manjeet..\n        /// </summary>\n        internal static string Dlg_Rime_1928 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_1928\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to And as to the plutonium isotopes – I have no clue..\n        /// </summary>\n        internal static string Dlg_Rime_1929 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_1929\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Standard plutonium won’t handle the long-range triangulation we need to try..\n        /// </summary>\n        internal static string Dlg_Rime_1930 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_1930\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I suggest you ask the people you get the fuel cells from..\n        /// </summary>\n        internal static string Dlg_Rime_1932 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_1932\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ok, thanks for the info, Francis. We’ll be back..\n        /// </summary>\n        internal static string Dlg_Rime_1933 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_1933\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I’ve got the approximate location of Eurydice..\n        /// </summary>\n        internal static string Dlg_Rime_1934 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_1934\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Guys, when you’re ready, come back to Sapho and I’ll heat up the engines..\n        /// </summary>\n        internal static string Dlg_Rime_1935 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_1935\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Dammit! He’s gone!.\n        /// </summary>\n        internal static string Dlg_Rime_2101 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_2101\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Dammit! He spotted us!.\n        /// </summary>\n        internal static string Dlg_Rime_2201 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Rime_2201\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Huge and pathetic. We must be in Russia!.\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1000 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1000\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Thanks for reminding me. The sooner we finish this, the sooner we can leave..\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1001 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1001\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to So what’s the plan? Just fly there, shoot everything, plant the detector, and scram? .\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1002 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1002\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sort of….\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1003 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1003\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tarja, if you say, “Aye, matey”, I’m going to have to kill you..\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1004 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1004\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to This building is heavily guarded and full of turrets..\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1005 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1005\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We can’t just knock on the front door – see that side entrance? .\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1006 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1006\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to OK, got it. Tarja, Valentin: Let’s move in and place the detector fast. .\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1007 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1007\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Roger that!.\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1008 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1008\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The most important part of the base and you can access it from the backdoor..\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1009 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1009\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I don’t get the Russian mentality. .\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1010 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1010\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Stay back! It’s highly radioactive!.\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1011 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1011\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Not funny… Find the base entrance. Please, hurry, I’ve already shot down two guards. .\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1012 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1012\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Now find a computer or security hub, hack it and send me back the broadcast frequency. .\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1013 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1013\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I have to prepare the detector device so it will be compatible with the Russian signal. .\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1014 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1014\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Clever! God, I hate Russian ships. So ugly and….\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1015 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1015\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Just shut up and shoot..\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1016 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1016\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Here it is! .\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1017 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1017\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to If it’s same security level as that nuclear generator, we’ll be back for tea at five! .\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1018 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1018\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I can access the signal, but it seems encrypted. Madelyn?.\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1022 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1022\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You’re right. It looks like advanced military coding..\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1023 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1023\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We don’t have a chance of decrypting it ourselves. .\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1024 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1024\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Why would they…? Hold on….\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1025 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1025\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I just got a call. Some stranger is watching us. .\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1026 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1026\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to He wants to meet us. Here are his coordinates. .\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1027 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1027\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Can we trust him? Who is he?.\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1028 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1028\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to He said he can help. That’s all..\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1029 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1029\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Well, then I guess he’s fine. .\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1030 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1030\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Greetings, strangers! I have a deal to propose..\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1031 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1031\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hey, what are you doing on our private channel?.\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1032 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1032\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Speaking to you. I have information about code breaking… Isn’t that what you want?.\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1033 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1033\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to OK, so what do YOU want out of this?.\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1034 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1034\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Just meet me here, we’ll discuss it personally. .\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1035 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1035\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Welcome to my humble commode. My name is Volodia. .\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1036 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1036\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Look at those shipboard screens: that is small part of your desired code. .\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1037 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1037\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Do you wish to have the rest?.\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1038 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1038\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Let’s make it quick: what do you want from us?.\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1039 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1039\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Straightforward and lacking nonsense, I like this..\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1040 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1040\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You will steal some military items for me. .\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1041 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1041\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to This keeps getting better and better. .\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1042 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1042\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Anything more specific than “military items”? .\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1043 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1043\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Here, these are the coordinates. You will know when you get there..\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1044 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1044\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to After you finish, I will send you more coordinates where we will meet..\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1045 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1045\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hey, look at that! Isn’t that a nuke? .\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1046 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1046\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Don’t touch it! Just take the cargo..\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1047 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1047\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Great! Meet me at the solar power plant. Try not to get blown up with that box on board! .\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1048 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1048\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ehm… So I guess you’ve been watching us the whole time?.\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1049 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1049\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Call it “business insurance”..\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1050 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1050\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Who are you?.\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1051 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1051\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Does it matter?.\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1052 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1052\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Maybe I’ll just throw that stupid box of yours overboard and watch it fly away… .\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1053 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1053\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to And never learn the code… Think about it. What’s the problem, do you feel manipulated? .\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1054 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1054\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to A little bit… .\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1055 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1055\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to That’s because you ARE! .\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1056 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1056\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We are all manipulated and it doesn’t matter on which side we’re standing. .\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1057 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1057\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to At least tell us: which side are you standing on? .\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1058 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1058\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I don’t care about Russia, I don’t care about you. I’m on my own side.  .\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1059 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1059\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Didn’t I tell you Russians are pathetic? .\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1060 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1060\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Enough talk. Bring that cargo to me so we can all leave this sector. .\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1061 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1061\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Here’s your cargo..\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1062 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1062\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to And here is your code. .\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1063 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1063\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to One last question: are you… .\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1064 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1064\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Red alert! Enemy mother ship approaching! Looks like government commando! .\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1065 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1065\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Bliať! .\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1066 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1066\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …a spy? .\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1067 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1067\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to This is the Federation guard. Sergei Romanov speaking. Surrender immediately!.\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1068 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1068\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to NEVER! Come on, comrades, show them we know how to fight! .\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1069 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1069\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Engage the enemy! .\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1070 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1070\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Oh… my… god… .\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1071 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1071\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to There’s too many of them!.\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1072 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1072\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Keep your distance from that mother ship!.\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1073 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1073\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We’ll try. Tarja, watch your back!.\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1074 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1074\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Enough! Get back to the transmitter before another commando approaches. .\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1075 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1075\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We don’t have much time. Let’s hope we have the right decryption. Watch out for turrets! .\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1076 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1076\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to If this doesn’t work, I swear I will find Volodia’s corpse and sell it for dog food!.\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1077 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1077\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to It’s working! .\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1078 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1078\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Great, send the data back to me and find another hub to upload our signal data..\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1079 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1079\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Signal uploading!.\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1080 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1080\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Now find the main room entrance. We have to place the device and start triangulating..\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1081 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1081\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to No chance to get inside from here. There’s some kind of power field..\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1082 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1082\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We must find another way from inside. .\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1083 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1083\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Here it is!.\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1084 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1084\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Place the device on the transmitter..\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1085 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1085\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Done!.\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1086 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1086\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …and working! Great job! Now, please return..\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1087 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1087\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to There are still some power-plugged doors, we have to open them from a hub. .\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1088 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1088\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We made it!.\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1089 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1089\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Before you proceed with the placement of the last detector at EAC….\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1092 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1092\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …I suggest you get your brother out of prison..\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1093 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1093\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to That’s not funny, Thomas. Why would you say such a thing? .\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1094 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1094\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You haven’t watched the news lately?.\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1095 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1095\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to There was an interview with a man they claim killed all the people in New Landswick… .\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1096 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1096\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …and blew up the peaceful Russian trade station Laika. .\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1097 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1097\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You… you mean Marcus is alive? .\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1098 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1098\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I am sure. I checked some black market data sources. .\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1099 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1099\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Marcus Rainier is on the prisoners’ list at Reway, the toughest of EAC prisons. .\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1100 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1100\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sentenced to death, by the way. .\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1101 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1101\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to To be executed in about three or four days – the data is not clear on this point..\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1102 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1102\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to So we might see the big boss again? .\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1103 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1103\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Possibly. Just don’t try anything stupid like a direct assault on Reway. .\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1104 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1104\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You can’t do this job on your own..\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1105 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1105\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I’m… guessing you already have a plan, right? .\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1106 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1106\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Meet Colonel von Stauffenberg in Reichstag. He is your key to freeing Marcus..\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1107 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1107\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You’re suggesting we ally ourselves with the Nazis?.\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1108 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1108\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Reichists. Yes. The end is more important than the means – at least in this case. .\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1109 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1109\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to What in God’s name will von Stauffenberg want from us in return? .\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1110 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1110\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I don’t think God’s name will enter into it..\n        /// </summary>\n        internal static string Dlg_RussianTransmitter_1111 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianTransmitter_1111\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Here we go..\n        /// </summary>\n        internal static string Dlg_RussianWarehouse_0101 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianWarehouse_0101\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Launching the attack. Marcus, Apollo – go after your targets inside!.\n        /// </summary>\n        internal static string Dlg_RussianWarehouse_0102 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianWarehouse_0102\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to On our way..\n        /// </summary>\n        internal static string Dlg_RussianWarehouse_0103 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianWarehouse_0103\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cut off their defenses first….\n        /// </summary>\n        internal static string Dlg_RussianWarehouse_0104 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianWarehouse_0104\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I marked the important points of their security system on your GPS..\n        /// </summary>\n        internal static string Dlg_RussianWarehouse_0105 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianWarehouse_0105\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Counting on you, guys! We can distract most of their fighters for a couple of minutes..\n        /// </summary>\n        internal static string Dlg_RussianWarehouse_0106 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianWarehouse_0106\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Make sure you cut off the stationary defenses and other measures!.\n        /// </summary>\n        internal static string Dlg_RussianWarehouse_0107 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianWarehouse_0107\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to This way, right?.\n        /// </summary>\n        internal static string Dlg_RussianWarehouse_0201 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianWarehouse_0201\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Yes. Head inside. This building contains most of the controls and hubs….\n        /// </summary>\n        internal static string Dlg_RussianWarehouse_0202 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianWarehouse_0202\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …you need to infiltrate..\n        /// </summary>\n        internal static string Dlg_RussianWarehouse_0203 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianWarehouse_0203\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Shouldn’t it be the most heavily guarded part of the base?.\n        /// </summary>\n        internal static string Dlg_RussianWarehouse_0204 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianWarehouse_0204\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to It usually is. Hopefully the pirate attack distracted them, so you’ll only have….\n        /// </summary>\n        internal static string Dlg_RussianWarehouse_0205 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianWarehouse_0205\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …the turrets to worry about, maybe a few fighters..\n        /// </summary>\n        internal static string Dlg_RussianWarehouse_0206 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianWarehouse_0206\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We’ll check out the situation..\n        /// </summary>\n        internal static string Dlg_RussianWarehouse_0207 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianWarehouse_0207\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hurry up! Switch off those defenses! We’re under heavy fire here!.\n        /// </summary>\n        internal static string Dlg_RussianWarehouse_0208 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianWarehouse_0208\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Nearly there. Give us a few seconds..\n        /// </summary>\n        internal static string Dlg_RussianWarehouse_0209 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianWarehouse_0209\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to This should help..\n        /// </summary>\n        internal static string Dlg_RussianWarehouse_0301 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianWarehouse_0301\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Thanks! We’re fine on our own for now. Get to the storage area and grab….\n        /// </summary>\n        internal static string Dlg_RussianWarehouse_0302 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianWarehouse_0302\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …the components you need! We’ll take care of the ships outside..\n        /// </summary>\n        internal static string Dlg_RussianWarehouse_0303 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianWarehouse_0303\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You’ll need to get to the main warehouse. Turn off the turrets….\n        /// </summary>\n        internal static string Dlg_RussianWarehouse_0304 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianWarehouse_0304\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …at the old entrance and the exit door..\n        /// </summary>\n        internal static string Dlg_RussianWarehouse_0305 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianWarehouse_0305\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You’re clear to go. Proceed to the old entrance. Use the coordinates from Lorraine..\n        /// </summary>\n        internal static string Dlg_RussianWarehouse_0401 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianWarehouse_0401\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The old entry seems to be boarded-up..\n        /// </summary>\n        internal static string Dlg_RussianWarehouse_0501 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianWarehouse_0501\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We’ll need to drill or smash our way through!.\n        /// </summary>\n        internal static string Dlg_RussianWarehouse_0502 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianWarehouse_0502\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cool, we’re inside!.\n        /// </summary>\n        internal static string Dlg_RussianWarehouse_0601 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianWarehouse_0601\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Be careful! That pirate attack distracted most of the Russian ships, but….\n        /// </summary>\n        internal static string Dlg_RussianWarehouse_0602 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianWarehouse_0602\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …there are still plenty of them around. At least according to my scans..\n        /// </summary>\n        internal static string Dlg_RussianWarehouse_0603 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianWarehouse_0603\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Roger that..\n        /// </summary>\n        internal static string Dlg_RussianWarehouse_0604 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianWarehouse_0604\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Get to the main storage room. You have the coordinates. Good luck! And hurry!.\n        /// </summary>\n        internal static string Dlg_RussianWarehouse_0605 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianWarehouse_0605\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The components should be somewhere in this area..\n        /// </summary>\n        internal static string Dlg_RussianWarehouse_0701 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianWarehouse_0701\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I did some thorough scans. The placement of the components is marked on your HUD..\n        /// </summary>\n        internal static string Dlg_RussianWarehouse_0702 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianWarehouse_0702\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Always a step ahead, right?.\n        /// </summary>\n        internal static string Dlg_RussianWarehouse_0703 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianWarehouse_0703\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You know you can always count on me!.\n        /// </summary>\n        internal static string Dlg_RussianWarehouse_0704 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianWarehouse_0704\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to All done here..\n        /// </summary>\n        internal static string Dlg_RussianWarehouse_0801 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianWarehouse_0801\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Let’s get out!.\n        /// </summary>\n        internal static string Dlg_RussianWarehouse_0802 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianWarehouse_0802\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You might want to check out what else is in storage. It won’t take long and….\n        /// </summary>\n        internal static string Dlg_RussianWarehouse_0803 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianWarehouse_0803\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …we might find something useful..\n        /// </summary>\n        internal static string Dlg_RussianWarehouse_0804 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianWarehouse_0804\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sorry to cut in, but I have a favor to ask..\n        /// </summary>\n        internal static string Dlg_RussianWarehouse_0805 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianWarehouse_0805\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to What is it?.\n        /// </summary>\n        internal static string Dlg_RussianWarehouse_0806 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianWarehouse_0806\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Our boys were supposed to get us some data about transport ship vectors….\n        /// </summary>\n        internal static string Dlg_RussianWarehouse_0807 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianWarehouse_0807\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …in this sector. But none of them made it alive. The data should be housed….\n        /// </summary>\n        internal static string Dlg_RussianWarehouse_0808 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianWarehouse_0808\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …in a navigation computer, just a few hundred meters from where you are right now..\n        /// </summary>\n        internal static string Dlg_RussianWarehouse_0809 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianWarehouse_0809\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to If you can get it for us, we’ll figure out some way to repay you. Make it worth….\n        /// </summary>\n        internal static string Dlg_RussianWarehouse_0810 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianWarehouse_0810\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …your while..\n        /// </summary>\n        internal static string Dlg_RussianWarehouse_0811 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianWarehouse_0811\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We’re on it..\n        /// </summary>\n        internal static string Dlg_RussianWarehouse_0812 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianWarehouse_0812\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I hope there won’t be too much trouble on the way..\n        /// </summary>\n        internal static string Dlg_RussianWarehouse_0813 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianWarehouse_0813\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We have the data, ready to exit..\n        /// </summary>\n        internal static string Dlg_RussianWarehouse_0901 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianWarehouse_0901\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Make sure to turn off the turrets, if you want to exit by the main door….\n        /// </summary>\n        internal static string Dlg_RussianWarehouse_0902 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianWarehouse_0902\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Otherwise, prepare for a hot shower. Really hot..\n        /// </summary>\n        internal static string Dlg_RussianWarehouse_0903 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianWarehouse_0903\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Nice to see you back, guys!.\n        /// </summary>\n        internal static string Dlg_RussianWarehouse_1001 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianWarehouse_1001\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I can’t wait to see Thomas again!.\n        /// </summary>\n        internal static string Dlg_RussianWarehouse_1002 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianWarehouse_1002\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I wonder what our next step will be..\n        /// </summary>\n        internal static string Dlg_RussianWarehouse_1003 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianWarehouse_1003\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I’m dying to see the data he prepared for us..\n        /// </summary>\n        internal static string Dlg_RussianWarehouse_1004 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianWarehouse_1004\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to To all operating ships: The Russians have sent a distress signal….\n        /// </summary>\n        internal static string Dlg_RussianWarehouse_1101 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianWarehouse_1101\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …requesting reinforcements..\n        /// </summary>\n        internal static string Dlg_RussianWarehouse_1102 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianWarehouse_1102\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to ETA 6 minutes..\n        /// </summary>\n        internal static string Dlg_RussianWarehouse_1103 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianWarehouse_1103\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Complete your assignments and return to Famo prior to the arrival of Russian fleet..\n        /// </summary>\n        internal static string Dlg_RussianWarehouse_1104 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianWarehouse_1104\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Repeat..\n        /// </summary>\n        internal static string Dlg_RussianWarehouse_1105 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianWarehouse_1105\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Complete your assignments and return to Famo prior to the arrival of Russian fleet..\n        /// </summary>\n        internal static string Dlg_RussianWarehouse_1106 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianWarehouse_1106\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Roger that. Let’s make it fast, I’m not much in the mood for company..\n        /// </summary>\n        internal static string Dlg_RussianWarehouse_1107 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianWarehouse_1107\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Darn. And this was such a nice raid operation..\n        /// </summary>\n        internal static string Dlg_RussianWarehouse_1108 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianWarehouse_1108\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Pillaging, looting, ransacking… oh, and don’t forget the marauding..\n        /// </summary>\n        internal static string Dlg_RussianWarehouse_1109 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianWarehouse_1109\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Spare the stand-up routine. We need to concentrate!.\n        /// </summary>\n        internal static string Dlg_RussianWarehouse_1110 {\n            get {\n                return ResourceManager.GetString(\"Dlg_RussianWarehouse_1110\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to These are the right coordinates. This must be the slaver base Cedric spoke about..\n        /// </summary>\n        internal static string Dlg_SlaverBase_01_01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase_01_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Does it make any sense to negotiate?.\n        /// </summary>\n        internal static string Dlg_SlaverBase_01_02 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase_01_02\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I doubt it. We can try, but….\n        /// </summary>\n        internal static string Dlg_SlaverBase_01_03 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase_01_03\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Our plan, then?.\n        /// </summary>\n        internal static string Dlg_SlaverBase_01_06 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase_01_06\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Destroy the generators first, to cut the turrets off from the energy supply. .\n        /// </summary>\n        internal static string Dlg_SlaverBase_01_07 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase_01_07\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Looks like they’ve still got functional backup batteries. .\n        /// </summary>\n        internal static string Dlg_SlaverBase_02_01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase_02_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We need to take care of those, too..\n        /// </summary>\n        internal static string Dlg_SlaverBase_02_02 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase_02_02\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Right. .\n        /// </summary>\n        internal static string Dlg_SlaverBase_02_03 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase_02_03\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Most of the stationary defenses appear to be down. .\n        /// </summary>\n        internal static string Dlg_SlaverBase_03_01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase_03_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I suggest we proceed with rescuing the captives. .\n        /// </summary>\n        internal static string Dlg_SlaverBase_03_02 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase_03_02\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We need to find the prison, or whatever they call it. .\n        /// </summary>\n        internal static string Dlg_SlaverBase_03_03 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase_03_03\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Holy crap, there’s a lot of people locked up here. .\n        /// </summary>\n        internal static string Dlg_SlaverBase_04_01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase_04_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We need to break down these bars..\n        /// </summary>\n        internal static string Dlg_SlaverBase_04_02 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase_04_02\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to God bless you! You are our saviors!.\n        /// </summary>\n        internal static string Dlg_SlaverBase_05_01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase_05_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Is that all of you? Are there any more captives being held?.\n        /// </summary>\n        internal static string Dlg_SlaverBase_05_02 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase_05_02\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Not here in the base. But there’s a transport vessel with more prisoners loaded inside. .\n        /// </summary>\n        internal static string Dlg_SlaverBase_05_03 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase_05_03\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You must save them!.\n        /// </summary>\n        internal static string Dlg_SlaverBase_05_04 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase_05_04\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Where can we find this transport?.\n        /// </summary>\n        internal static string Dlg_SlaverBase_05_05 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase_05_05\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to It’s that large Reichist ship in the hangar..\n        /// </summary>\n        internal static string Dlg_SlaverBase_05_06 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase_05_06\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to But the cargo bay was closed. We’ll have to hack the door control..\n        /// </summary>\n        internal static string Dlg_SlaverBase_05_07 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase_05_07\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Okay, the doors are open. Let’s free those captives..\n        /// </summary>\n        internal static string Dlg_SlaverBase_06_01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase_06_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Thank god you came, I thought we would die here. .\n        /// </summary>\n        internal static string Dlg_SlaverBase_07_01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase_07_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Can any of you pilot that mothership?.\n        /// </summary>\n        internal static string Dlg_SlaverBase_07_02 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase_07_02\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to No, but there’s a little mine where they keep pilots captive. .\n        /// </summary>\n        internal static string Dlg_SlaverBase_07_03 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase_07_03\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Looks like we have to rescue the pilots too. .\n        /// </summary>\n        internal static string Dlg_SlaverBase_07_04 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase_07_04\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We’re grateful for the rescue, but there are others inside the prison..\n        /// </summary>\n        internal static string Dlg_SlaverBase_08_02 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase_08_02\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Yes, we know, we saved them already..\n        /// </summary>\n        internal static string Dlg_SlaverBase_08_03 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase_08_03\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We need you to transport them from the prison to Fourth Reich mothership….\n        /// </summary>\n        internal static string Dlg_SlaverBase_08_04 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase_08_04\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …and then get out of here..\n        /// </summary>\n        internal static string Dlg_SlaverBase_08_05 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase_08_05\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We’re just small-ship pilots. I don’t think any of us have ever flown something so large..\n        /// </summary>\n        internal static string Dlg_SlaverBase_08_06 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase_08_06\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I’m sure at least one of you can do it..\n        /// </summary>\n        internal static string Dlg_SlaverBase_08_07 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase_08_07\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sure, piloting a mothership is not that different from piloting a fighter..\n        /// </summary>\n        internal static string Dlg_SlaverBase_08_08 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase_08_08\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I guess we don’t have any other choice..\n        /// </summary>\n        internal static string Dlg_SlaverBase_08_09 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase_08_09\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Guys, we have company..\n        /// </summary>\n        internal static string Dlg_SlaverBase_08_10 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase_08_10\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Go get the other prisoners, we’ll take care of these slavers..\n        /// </summary>\n        internal static string Dlg_SlaverBase_08_11 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase_08_11\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We’re ready, can you help us out? We need the hangar doors open..\n        /// </summary>\n        internal static string Dlg_SlaverBase_09_01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase_09_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to No problem..\n        /// </summary>\n        internal static string Dlg_SlaverBase_09_02 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase_09_02\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to And off they go!.\n        /// </summary>\n        internal static string Dlg_SlaverBase_10_01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase_10_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Wow, this is fantastic. I never thought I’d pilot something of this size. .\n        /// </summary>\n        internal static string Dlg_SlaverBase_10_02 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase_10_02\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Thank you, my friends, we owe you one. .\n        /// </summary>\n        internal static string Dlg_SlaverBase_10_03 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase_10_03\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I remember when I piloted a mothership for the first time..\n        /// </summary>\n        internal static string Dlg_SlaverBase_10_04 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase_10_04\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to And was it “fantastic”?.\n        /// </summary>\n        internal static string Dlg_SlaverBase_10_05 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase_10_05\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Yeah. I crashed into the station after a few minutes..\n        /// </summary>\n        internal static string Dlg_SlaverBase_10_06 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase_10_06\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I thought you said piloting a mothership was easy?.\n        /// </summary>\n        internal static string Dlg_SlaverBase_10_07 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase_10_07\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I lied..\n        /// </summary>\n        internal static string Dlg_SlaverBase_10_08 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase_10_08\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to So, what now? Are they all going to die?.\n        /// </summary>\n        internal static string Dlg_SlaverBase_10_09 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase_10_09\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to No, I’m pretty sure everything on these new ships is automatic. .\n        /// </summary>\n        internal static string Dlg_SlaverBase_10_10 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase_10_10\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …Pretty sure..\n        /// </summary>\n        internal static string Dlg_SlaverBase_10_11 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase_10_11\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Back to Cedric?.\n        /// </summary>\n        internal static string Dlg_SlaverBase_11_01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase_11_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Right away!.\n        /// </summary>\n        internal static string Dlg_SlaverBase_11_02 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase_11_02\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to What a lovely place! Reconsidering your vacation plans?.\n        /// </summary>\n        internal static string Dlg_SlaverBase2_01_01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase2_01_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Let’s give this place a facelift! Guys, load up your guns!.\n        /// </summary>\n        internal static string Dlg_SlaverBase2_01_02 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase2_01_02\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to First, you have to completely destroy their air defense. Keep a safe distance..\n        /// </summary>\n        internal static string Dlg_SlaverBase2_02_01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase2_02_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Let’s see who can destroy the most turrets in the shortest time!.\n        /// </summary>\n        internal static string Dlg_SlaverBase2_02_02 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase2_02_02\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You already lost….\n        /// </summary>\n        internal static string Dlg_SlaverBase2_02_03 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase2_02_03\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Oy! Stop shooting! You can voluntarily surrender!.\n        /// </summary>\n        internal static string Dlg_SlaverBase2_03_01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase2_03_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to What’s Option B?.\n        /// </summary>\n        internal static string Dlg_SlaverBase2_03_02 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase2_03_02\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We can tear your ships apart and sell them for scrap metal….\n        /// </summary>\n        internal static string Dlg_SlaverBase2_03_03 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase2_03_03\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We’ll go with Option C!.\n        /// </summary>\n        internal static string Dlg_SlaverBase2_03_04 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase2_03_04\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Unleash the dogs! .\n        /// </summary>\n        internal static string Dlg_SlaverBase2_03_05 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase2_03_05\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Now we have to unlock the cells. Find the hubs at slaver headquarters..\n        /// </summary>\n        internal static string Dlg_SlaverBase2_04_01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase2_04_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Copy that!.\n        /// </summary>\n        internal static string Dlg_SlaverBase2_04_02 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase2_04_02\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Now go do the second one. .\n        /// </summary>\n        internal static string Dlg_SlaverBase2_05_03 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase2_05_03\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Now we can free the prisoners!.\n        /// </summary>\n        internal static string Dlg_SlaverBase2_06_01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase2_06_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Not yet. See those power grids? They’re still working. .\n        /// </summary>\n        internal static string Dlg_SlaverBase2_06_02 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase2_06_02\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I guess we only unlocked the first level of security. .\n        /// </summary>\n        internal static string Dlg_SlaverBase2_06_03 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase2_06_03\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Right. But my scanners can’t find any other hub..\n        /// </summary>\n        internal static string Dlg_SlaverBase2_06_04 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase2_06_04\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We don’t need a hub. Where’s the generator? No power – no grids. .\n        /// </summary>\n        internal static string Dlg_SlaverBase2_06_05 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase2_06_05\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Clever boy!.\n        /// </summary>\n        internal static string Dlg_SlaverBase2_06_06 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase2_06_06\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The generator. Let’s cook it up!.\n        /// </summary>\n        internal static string Dlg_SlaverBase2_07_01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase2_07_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fried or mashed?.\n        /// </summary>\n        internal static string Dlg_SlaverBase2_07_02 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase2_07_02\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Both..\n        /// </summary>\n        internal static string Dlg_SlaverBase2_07_03 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase2_07_03\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to No other security systems detected. The prisoners are free!.\n        /// </summary>\n        internal static string Dlg_SlaverBase2_08_01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase2_08_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I love being the good guy..\n        /// </summary>\n        internal static string Dlg_SlaverBase2_08_02 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase2_08_02\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We need to evacuate everyone. Have you seen any transports? .\n        /// </summary>\n        internal static string Dlg_SlaverBase2_08_03 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase2_08_03\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Only two. Not enough for everybody, but I’m sure the Templars will send more. .\n        /// </summary>\n        internal static string Dlg_SlaverBase2_08_04 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase2_08_04\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We just need to physically open all the prison cells..\n        /// </summary>\n        internal static string Dlg_SlaverBase2_08_05 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase2_08_05\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Here are their coordinates downloaded from hub..\n        /// </summary>\n        internal static string Dlg_SlaverBase2_08_06 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase2_08_06\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to First prisoner cell unlocked!.\n        /// </summary>\n        internal static string Dlg_SlaverBase2_09_01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase2_09_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Second prisoner cell open. These guys are free to go. .\n        /// </summary>\n        internal static string Dlg_SlaverBase2_10_01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase2_10_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I already sent a message to the Templars. .\n        /// </summary>\n        internal static string Dlg_SlaverBase2_10_02 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase2_10_02\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to They’re sending transport ships to pick them up. .\n        /// </summary>\n        internal static string Dlg_SlaverBase2_10_03 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase2_10_03\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Third prisoner cell unlocked. .\n        /// </summary>\n        internal static string Dlg_SlaverBase2_11_01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase2_11_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Two more remaining. .\n        /// </summary>\n        internal static string Dlg_SlaverBase2_11_02 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase2_11_02\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fourth prisoner group is free. One more and we’re done here. .\n        /// </summary>\n        internal static string Dlg_SlaverBase2_12_01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase2_12_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Final cell open. That was it. We’ve unlocked all of them. .\n        /// </summary>\n        internal static string Dlg_SlaverBase2_13_01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase2_13_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Now what? We’re supposed to leave these poor people here to fend for themselves?.\n        /// </summary>\n        internal static string Dlg_SlaverBase2_13_02 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase2_13_02\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to They can make it out on their own and wait for the Templar transports..\n        /// </summary>\n        internal static string Dlg_SlaverBase2_13_03 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase2_13_03\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Madelyn, am I right?.\n        /// </summary>\n        internal static string Dlg_SlaverBase2_13_04 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase2_13_04\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Confirmed. .\n        /// </summary>\n        internal static string Dlg_SlaverBase2_13_05 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase2_13_05\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Everyone should be safe for now. .\n        /// </summary>\n        internal static string Dlg_SlaverBase2_13_06 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase2_13_06\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to There aren’t many slavers left here, at least till their reinforcements arrive..\n        /// </summary>\n        internal static string Dlg_SlaverBase2_13_07 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase2_13_07\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Guys! The first Templar transport ships confirmed their arrival within several minutes..\n        /// </summary>\n        internal static string Dlg_SlaverBase2_13_08 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase2_13_08\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to They even have some escort ships with them..\n        /// </summary>\n        internal static string Dlg_SlaverBase2_13_09 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase2_13_09\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We’re fine, then. Mission successful. Let’s get back to Valiant and collect our reward..\n        /// </summary>\n        internal static string Dlg_SlaverBase2_13_10 {\n            get {\n                return ResourceManager.GetString(\"Dlg_SlaverBase2_13_10\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to This is a test. Chunky bacon!.\n        /// </summary>\n        internal static string Dlg_Test01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Test01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Yes! Chunky bacon for everyone!.\n        /// </summary>\n        internal static string Dlg_Test02 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Test02\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to This is a very long text. You know, just to test loading times of long sounds. It goes on and on, it just won’t stop! I can’t take it anymore!.\n        /// </summary>\n        internal static string Dlg_Test03 {\n            get {\n                return ResourceManager.GetString(\"Dlg_Test03\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Welcome to Doppelburg, soldiers. .\n        /// </summary>\n        internal static string Dlg_TwinTowers_01_01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_01_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Proceed to the hangar in tower A and wait until you are assigned to a squad..\n        /// </summary>\n        internal static string Dlg_TwinTowers_01_02 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_01_02\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Affirmative, sir..\n        /// </summary>\n        internal static string Dlg_TwinTowers_01_03 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_01_03\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Guten tag. What’s new in the Fatherland?.\n        /// </summary>\n        internal static string Dlg_TwinTowers_02_01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_02_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Have you been instructed as to the plan?.\n        /// </summary>\n        internal static string Dlg_TwinTowers_02_03 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_02_03\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We have. If nothing has changed, we’re ready..\n        /// </summary>\n        internal static string Dlg_TwinTowers_02_04 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_02_04\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to No changes. There are three places you need to place explosives to weaken tower B….\n        /// </summary>\n        internal static string Dlg_TwinTowers_02_05 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_02_05\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …while we deal with tower A. After that, you’ll be paying a “visit” to the command center..\n        /// </summary>\n        internal static string Dlg_TwinTowers_02_06 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_02_06\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to This connects the command center to the main electrical network. .\n        /// </summary>\n        internal static string Dlg_TwinTowers_03_01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_03_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Once you blow it up, they will have to switch to auxiliary batteries..\n        /// </summary>\n        internal static string Dlg_TwinTowers_03_02 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_03_02\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to It won’t stop them, but they won’t be able to keep all systems operational. .\n        /// </summary>\n        internal static string Dlg_TwinTowers_03_03 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_03_03\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to It may save us from a few live turrets.  .\n        /// </summary>\n        internal static string Dlg_TwinTowers_03_04 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_03_04\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to It is always helpful to weaken enemy forces directly. .\n        /// </summary>\n        internal static string Dlg_TwinTowers_04_01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_04_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hide the bomb well here – we can destroy many of their fighters on the ground. .\n        /// </summary>\n        internal static string Dlg_TwinTowers_04_02 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_04_02\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to A well-placed bomb here will help keep the command center offline..\n        /// </summary>\n        internal static string Dlg_TwinTowers_05_01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_05_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Shutting off the generator would be better….\n        /// </summary>\n        internal static string Dlg_TwinTowers_05_02 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_05_02\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …but it’s impossible without setting off an alarm..\n        /// </summary>\n        internal static string Dlg_TwinTowers_05_03 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_05_03\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Excellent work, now prepare for the command center attack. I will be waiting nearby..\n        /// </summary>\n        internal static string Dlg_TwinTowers_06_01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_06_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You won’t be joining the attack?.\n        /// </summary>\n        internal static string Dlg_TwinTowers_06_02 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_06_02\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to No, my ship is equipped with a special hacking device..\n        /// </summary>\n        internal static string Dlg_TwinTowers_06_03 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_06_03\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I’m carrying a virus that will take control of all the systems in Tower A at once. .\n        /// </summary>\n        internal static string Dlg_TwinTowers_06_04 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_06_04\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to If I fail at that, it’s all over..\n        /// </summary>\n        internal static string Dlg_TwinTowers_06_05 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_06_05\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to And after all, there are three of you. That should be more than enough..\n        /// </summary>\n        internal static string Dlg_TwinTowers_06_06 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_06_06\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to So, we need to protect you until the virus is uploaded?.\n        /// </summary>\n        internal static string Dlg_TwinTowers_06_07 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_06_07\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Exactly. Any complication can lead to a fatal failure..\n        /// </summary>\n        internal static string Dlg_TwinTowers_06_08 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_06_08\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Get ready. Once you start shooting it’s you against whole enemy fleet..\n        /// </summary>\n        internal static string Dlg_TwinTowers_07_01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_07_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to At least this masquerade will be over soon..\n        /// </summary>\n        internal static string Dlg_TwinTowers_07_02 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_07_02\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You don’t like playing Nazi? Do I detect a conscience hiding in there?.\n        /// </summary>\n        internal static string Dlg_TwinTowers_07_03 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_07_03\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Done, area clear. Now do your job..\n        /// </summary>\n        internal static string Dlg_TwinTowers_08_01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_08_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to On my way. Meanwhile, get ready. Wolves coming soon..\n        /// </summary>\n        internal static string Dlg_TwinTowers_08_02 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_08_02\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hacking routine started. Approximate time remaining, 3 minutes..\n        /// </summary>\n        internal static string Dlg_TwinTowers_09_01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_09_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Can’t you do it faster?.\n        /// </summary>\n        internal static string Dlg_TwinTowers_09_02 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_09_02\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Negative, I designed this software to have no weak point. It’s a lot of code..\n        /// </summary>\n        internal static string Dlg_TwinTowers_09_03 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_09_03\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Glad to hear you’re that thorough..\n        /// </summary>\n        internal static string Dlg_TwinTowers_09_04 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_09_04\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Thanks. It’s always nice to hear words of praise from one’s colleagues..\n        /// </summary>\n        internal static string Dlg_TwinTowers_09_05 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_09_05\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Yeah. Nice..\n        /// </summary>\n        internal static string Dlg_TwinTowers_09_06 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_09_06\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Our loyal friends will help protect us from outside attack. .\n        /// </summary>\n        internal static string Dlg_TwinTowers_09_07 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_09_07\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We only have to deal with forces inside the base..\n        /// </summary>\n        internal static string Dlg_TwinTowers_09_08 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_09_08\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to And we will..\n        /// </summary>\n        internal static string Dlg_TwinTowers_09_09 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_09_09\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Another squad has started their engines..\n        /// </summary>\n        internal static string Dlg_TwinTowers_10_01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_10_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Wolves on their way..\n        /// </summary>\n        internal static string Dlg_TwinTowers_10_02 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_10_02\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to No! Someone’s interrupting the process! .\n        /// </summary>\n        internal static string Dlg_TwinTowers_11_01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_11_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Someone down there has a hacking computer of equal power and they’re blocking me..\n        /// </summary>\n        internal static string Dlg_TwinTowers_11_02 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_11_02\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I thought you were the premier hacker in these parts?.\n        /// </summary>\n        internal static string Dlg_TwinTowers_11_04 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_11_04\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to This is no time for ego wars. Get him or we’re dead..\n        /// </summary>\n        internal static string Dlg_TwinTowers_11_05 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_11_05\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Watch out for the turrets. Going straight down is suicide..\n        /// </summary>\n        internal static string Dlg_TwinTowers_11_06 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_11_06\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The side tunnels?.\n        /// </summary>\n        internal static string Dlg_TwinTowers_11_07 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_11_07\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I’ll follow you. Decide..\n        /// </summary>\n        internal static string Dlg_TwinTowers_11_08 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_11_08\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You’re retired, pal!.\n        /// </summary>\n        internal static string Dlg_TwinTowers_12_01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_12_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Erhard, what’s your status?.\n        /// </summary>\n        internal static string Dlg_TwinTowers_12_02 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_12_02\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Back online, advancing at a steady pace again..\n        /// </summary>\n        internal static string Dlg_TwinTowers_12_03 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_12_03\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to But another squadron’s coming. Get back here as fast as possible..\n        /// </summary>\n        internal static string Dlg_TwinTowers_12_04 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_12_04\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to There’s no end to them! I thought the Wolves were just a small faction..\n        /// </summary>\n        internal static string Dlg_TwinTowers_12_05 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_12_05\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to They have a lot of sympathizers. Even amongst everyday citizens..\n        /// </summary>\n        internal static string Dlg_TwinTowers_12_06 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_12_06\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Guess you can’t shake off the 20th century just like that. Too bad..\n        /// </summary>\n        internal static string Dlg_TwinTowers_12_07 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_12_07\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The path to perfection isn’t an easy one. But we are ready..\n        /// </summary>\n        internal static string Dlg_TwinTowers_12_08 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_12_08\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Just be ready enough to not get killed right now..\n        /// </summary>\n        internal static string Dlg_TwinTowers_12_09 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_12_09\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Done..\n        /// </summary>\n        internal static string Dlg_TwinTowers_13_01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_13_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Weapons will now pursue ships with White Wolf signatures..\n        /// </summary>\n        internal static string Dlg_TwinTowers_13_02 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_13_02\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Excluding ours, of course..\n        /// </summary>\n        internal static string Dlg_TwinTowers_13_03 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_13_03\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to So, what now?.\n        /// </summary>\n        internal static string Dlg_TwinTowers_13_04 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_13_04\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Now you need to disable both of the anti-mothership railguns in this tower..\n        /// </summary>\n        internal static string Dlg_TwinTowers_13_05 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_13_05\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to What? Didn’t you just do that?.\n        /// </summary>\n        internal static string Dlg_TwinTowers_13_06 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_13_06\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Railguns have independent manual controls besides the remote ones..\n        /// </summary>\n        internal static string Dlg_TwinTowers_13_07 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_13_07\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to As long as there are Wolves around, they can seize control of them..\n        /// </summary>\n        internal static string Dlg_TwinTowers_13_08 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_13_08\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to And as long as the railguns are operational….\n        /// </summary>\n        internal static string Dlg_TwinTowers_13_09 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_13_09\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …we won’t get any support from Reich mother ships..\n        /// </summary>\n        internal static string Dlg_TwinTowers_13_10 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_13_10\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Exactly..\n        /// </summary>\n        internal static string Dlg_TwinTowers_13_11 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_13_11\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I destroyed everything that seemed like a control device for the railgun..\n        /// </summary>\n        internal static string Dlg_TwinTowers_14_01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_14_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to According to my data, you did well. Now proceed to the next control room. .\n        /// </summary>\n        internal static string Dlg_TwinTowers_14_02 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_14_02\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Meanwhile I’m preparing a computer attack on Tower B..\n        /// </summary>\n        internal static string Dlg_TwinTowers_14_03 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_14_03\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Proceeding..\n        /// </summary>\n        internal static string Dlg_TwinTowers_14_04 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_14_04\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Done. Second railgun crippled..\n        /// </summary>\n        internal static string Dlg_TwinTowers_15_01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_15_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to What next?.\n        /// </summary>\n        internal static string Dlg_TwinTowers_15_02 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_15_02\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Move to Tower B. There is a service tunnel you can use. It shouldn’t be guarded..\n        /// </summary>\n        internal static string Dlg_TwinTowers_15_03 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_15_03\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to “Shouldn’t be”? How reassuring..\n        /// </summary>\n        internal static string Dlg_TwinTowers_15_04 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_15_04\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to By the way, where are all the loyal friends you were talking about?.\n        /// </summary>\n        internal static string Dlg_TwinTowers_15_05 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_15_05\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to According to the computer….\n        /// </summary>\n        internal static string Dlg_TwinTowers_15_06 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_15_06\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …three of their ships were destroyed outside the base while we took the command center..\n        /// </summary>\n        internal static string Dlg_TwinTowers_15_07 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_15_07\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to They fell for the cause..\n        /// </summary>\n        internal static string Dlg_TwinTowers_15_08 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_15_08\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to What? You say it as if you just dropped a candy bar..\n        /// </summary>\n        internal static string Dlg_TwinTowers_15_09 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_15_09\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to They were prepared to die. Just as I am. Just as you should be..\n        /// </summary>\n        internal static string Dlg_TwinTowers_15_10 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_15_10\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I am not prepared to die here. I hate defeatist thinking..\n        /// </summary>\n        internal static string Dlg_TwinTowers_15_11 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_15_11\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to This mission was uncertain at best – all the way from beginning. We all knew it.  .\n        /// </summary>\n        internal static string Dlg_TwinTowers_15_12 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_15_12\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I’m here, what now? Destroy some more railgun controls?.\n        /// </summary>\n        internal static string Dlg_TwinTowers_16_01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_16_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to No, just shut down the generator. Then the railguns won’t have power..\n        /// </summary>\n        internal static string Dlg_TwinTowers_16_02 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_16_02\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Why didn’t we do that in Tower A?.\n        /// </summary>\n        internal static string Dlg_TwinTowers_16_03 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_16_03\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to They’d have been able to reroute energy from other systems. .\n        /// </summary>\n        internal static string Dlg_TwinTowers_16_04 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_16_04\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to But thanks to the work we’ve done, they won’t be able to do that in Tower B..\n        /// </summary>\n        internal static string Dlg_TwinTowers_16_05 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_16_05\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fine. Where do I go?.\n        /// </summary>\n        internal static string Dlg_TwinTowers_16_06 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_16_06\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Up. To the reactor room. Destroy the cooling pipes leading to the generator. .\n        /// </summary>\n        internal static string Dlg_TwinTowers_16_07 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_16_07\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to It will automatically shut down to prevent a meltdown..\n        /// </summary>\n        internal static string Dlg_TwinTowers_16_08 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_16_08\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sounds easy enough..\n        /// </summary>\n        internal static string Dlg_TwinTowers_16_09 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_16_09\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Did you see the stationary weapons there? When we were placing the explosives..\n        /// </summary>\n        internal static string Dlg_TwinTowers_16_10 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_16_10\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Yeah?.\n        /// </summary>\n        internal static string Dlg_TwinTowers_16_11 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_16_11\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Are they still operational?.\n        /// </summary>\n        internal static string Dlg_TwinTowers_16_12 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_16_12\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I guess we’ll see..\n        /// </summary>\n        internal static string Dlg_TwinTowers_16_13 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_16_13\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Done. No energy, no railguns. Can we have the reinforcements now?.\n        /// </summary>\n        internal static string Dlg_TwinTowers_17_01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_17_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Signal sent. Proceed to the command center. There are still some things to be done..\n        /// </summary>\n        internal static string Dlg_TwinTowers_17_02 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_17_02\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to What exactly?.\n        /// </summary>\n        internal static string Dlg_TwinTowers_17_03 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_17_03\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to It’s impossible to hack any of the command center computers from outside..\n        /// </summary>\n        internal static string Dlg_TwinTowers_17_04 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_17_04\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to They have to be approached from inside. .\n        /// </summary>\n        internal static string Dlg_TwinTowers_17_05 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_17_05\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to But don’t worry, it’s not as hard as what I did in Tower A. .\n        /// </summary>\n        internal static string Dlg_TwinTowers_17_06 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_17_06\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I just need to open a channel to Tower A. My virus will do the rest..\n        /// </summary>\n        internal static string Dlg_TwinTowers_17_07 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_17_07\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Acknowledged..\n        /// </summary>\n        internal static string Dlg_TwinTowers_17_08 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_17_08\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Great. The base is ours!.\n        /// </summary>\n        internal static string Dlg_TwinTowers_18_01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_18_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I have one last bit of unpleasant news for you..\n        /// </summary>\n        internal static string Dlg_TwinTowers_18_02 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_18_02\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We are listening..\n        /// </summary>\n        internal static string Dlg_TwinTowers_18_03 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_18_03\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The White Wolves had a mother ship stationed nearby. And now they are on their way here..\n        /// </summary>\n        internal static string Dlg_TwinTowers_18_04 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_18_04\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to What’s the plan?.\n        /// </summary>\n        internal static string Dlg_TwinTowers_18_05 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_18_05\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Our forces will arrive ahead of them. But we would like your assistance during the fight..\n        /// </summary>\n        internal static string Dlg_TwinTowers_18_06 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_18_06\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Apollo Rainier, join the assault squad..\n        /// </summary>\n        internal static string Dlg_TwinTowers_19_01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_19_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Your mission is to support our fighters during the dogfight….\n        /// </summary>\n        internal static string Dlg_TwinTowers_19_02 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_19_02\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …and then assist in neutralizing their zeppelin..\n        /// </summary>\n        internal static string Dlg_TwinTowers_19_03 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_19_03\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Your targets are its main generators. Once they are out of commission, ….\n        /// </summary>\n        internal static string Dlg_TwinTowers_19_04 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_19_04\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …it is just a matter of time till they surrender or we overtake their forces..\n        /// </summary>\n        internal static string Dlg_TwinTowers_19_05 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_19_05\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Good luck!.\n        /// </summary>\n        internal static string Dlg_TwinTowers_19_06 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_19_06\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fight against a fully armed zeppelin? That does not sound… easy..\n        /// </summary>\n        internal static string Dlg_TwinTowers_19_07 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_19_07\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to It is possible. Just not easy..\n        /// </summary>\n        internal static string Dlg_TwinTowers_19_08 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_19_08\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Excellent. Now proceed to destroy the backup batteries. .\n        /// </summary>\n        internal static string Dlg_TwinTowers_20_01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_20_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Once that’s done, your job is over..\n        /// </summary>\n        internal static string Dlg_TwinTowers_20_02 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_20_02\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to To all White Wolf forces. It’s over. Surrender and we will spare your lives..\n        /// </summary>\n        internal static string Dlg_TwinTowers_21_01 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_21_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Madelyn to Apollo! Report in..\n        /// </summary>\n        internal static string Dlg_TwinTowers_21_02 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_21_02\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Apollo here. Madelyn, what are you doing here?.\n        /// </summary>\n        internal static string Dlg_TwinTowers_21_03 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_21_03\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Von Stauffenberg sent me to pick you up directly. Let’s get out of here..\n        /// </summary>\n        internal static string Dlg_TwinTowers_21_04 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_21_04\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You have no idea how glad I am to hear that..\n        /// </summary>\n        internal static string Dlg_TwinTowers_21_05 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_21_05\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to That goes for all of us..\n        /// </summary>\n        internal static string Dlg_TwinTowers_21_06 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_21_06\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We’re meeting the Fourth Reich forces at Reway. .\n        /// </summary>\n        internal static string Dlg_TwinTowers_21_07 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_21_07\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Walther convinced them to attack. Time to see Marcus again! Come on!.\n        /// </summary>\n        internal static string Dlg_TwinTowers_21_08 {\n            get {\n                return ResourceManager.GetString(\"Dlg_TwinTowers_21_08\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Here we go!.\n        /// </summary>\n        internal static string Dlg_WhitewolvesResearch_1000 {\n            get {\n                return ResourceManager.GetString(\"Dlg_WhitewolvesResearch_1000\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to This structure looks like one of those concentration camps….\n        /// </summary>\n        internal static string Dlg_WhitewolvesResearch_1001 {\n            get {\n                return ResourceManager.GetString(\"Dlg_WhitewolvesResearch_1001\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to …the Nazis made during World War 2..\n        /// </summary>\n        internal static string Dlg_WhitewolvesResearch_1002 {\n            get {\n                return ResourceManager.GetString(\"Dlg_WhitewolvesResearch_1002\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to It’s very close. I have seen many photos of those camps before..\n        /// </summary>\n        internal static string Dlg_WhitewolvesResearch_1003 {\n            get {\n                return ResourceManager.GetString(\"Dlg_WhitewolvesResearch_1003\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We need to get waste samples from outside..\n        /// </summary>\n        internal static string Dlg_WhitewolvesResearch_1004 {\n            get {\n                return ResourceManager.GetString(\"Dlg_WhitewolvesResearch_1004\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Valentin, Tarja – cover me!.\n        /// </summary>\n        internal static string Dlg_WhitewolvesResearch_1005 {\n            get {\n                return ResourceManager.GetString(\"Dlg_WhitewolvesResearch_1005\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to All looks well. It seems the area is clear. .\n        /// </summary>\n        internal static string Dlg_WhitewolvesResearch_1006 {\n            get {\n                return ResourceManager.GetString(\"Dlg_WhitewolvesResearch_1006\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Head to the station and look for the inner part of the biomachine..\n        /// </summary>\n        internal static string Dlg_WhitewolvesResearch_1007 {\n            get {\n                return ResourceManager.GetString(\"Dlg_WhitewolvesResearch_1007\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to And take samples of the materials they’re using..\n        /// </summary>\n        internal static string Dlg_WhitewolvesResearch_1008 {\n            get {\n                return ResourceManager.GetString(\"Dlg_WhitewolvesResearch_1008\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I’ll do my best, just I’m staying away from that slimy green shit..\n        /// </summary>\n        internal static string Dlg_WhitewolvesResearch_1009 {\n            get {\n                return ResourceManager.GetString(\"Dlg_WhitewolvesResearch_1009\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to It wasn’t that bad..\n        /// </summary>\n        internal static string Dlg_WhitewolvesResearch_1010 {\n            get {\n                return ResourceManager.GetString(\"Dlg_WhitewolvesResearch_1010\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The hardest part is still ahead of you..\n        /// </summary>\n        internal static string Dlg_WhitewolvesResearch_1011 {\n            get {\n                return ResourceManager.GetString(\"Dlg_WhitewolvesResearch_1011\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to This place sickens me. Just like the Reichists!.\n        /// </summary>\n        internal static string Dlg_WhitewolvesResearch_1012 {\n            get {\n                return ResourceManager.GetString(\"Dlg_WhitewolvesResearch_1012\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I thought it was overtaken by separatists..\n        /// </summary>\n        internal static string Dlg_WhitewolvesResearch_1013 {\n            get {\n                return ResourceManager.GetString(\"Dlg_WhitewolvesResearch_1013\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Right, but do you think they started this all stuff?.\n        /// </summary>\n        internal static string Dlg_WhitewolvesResearch_1014 {\n            get {\n                return ResourceManager.GetString(\"Dlg_WhitewolvesResearch_1014\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Whoever did it is pretty fucked up. .\n        /// </summary>\n        internal static string Dlg_WhitewolvesResearch_1015 {\n            get {\n                return ResourceManager.GetString(\"Dlg_WhitewolvesResearch_1015\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Do we even have any clue who these separatists are?.\n        /// </summary>\n        internal static string Dlg_WhitewolvesResearch_1016 {\n            get {\n                return ResourceManager.GetString(\"Dlg_WhitewolvesResearch_1016\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to No idea. I’ll ask von Stauffenberg the next time we meet..\n        /// </summary>\n        internal static string Dlg_WhitewolvesResearch_1017 {\n            get {\n                return ResourceManager.GetString(\"Dlg_WhitewolvesResearch_1017\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to They look like Reichists, quack like Reichists. .\n        /// </summary>\n        internal static string Dlg_WhitewolvesResearch_1018 {\n            get {\n                return ResourceManager.GetString(\"Dlg_WhitewolvesResearch_1018\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hard to tell the difference..\n        /// </summary>\n        internal static string Dlg_WhitewolvesResearch_1019 {\n            get {\n                return ResourceManager.GetString(\"Dlg_WhitewolvesResearch_1019\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to This should be pretty straightforward. Just download the blueprint data..\n        /// </summary>\n        internal static string Dlg_WhitewolvesResearch_1020 {\n            get {\n                return ResourceManager.GetString(\"Dlg_WhitewolvesResearch_1020\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Is that all? Download the blueprints and… burn this place?.\n        /// </summary>\n        internal static string Dlg_WhitewolvesResearch_1021 {\n            get {\n                return ResourceManager.GetString(\"Dlg_WhitewolvesResearch_1021\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We need several more components. At least according to the list from Stauffenberg..\n        /// </summary>\n        internal static string Dlg_WhitewolvesResearch_1022 {\n            get {\n                return ResourceManager.GetString(\"Dlg_WhitewolvesResearch_1022\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fine. Let’s do those tasks ASAP, so we can get out of here..\n        /// </summary>\n        internal static string Dlg_WhitewolvesResearch_1023 {\n            get {\n                return ResourceManager.GetString(\"Dlg_WhitewolvesResearch_1023\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Now for the highlight of this evening’s entertainment..\n        /// </summary>\n        internal static string Dlg_WhitewolvesResearch_1024 {\n            get {\n                return ResourceManager.GetString(\"Dlg_WhitewolvesResearch_1024\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The fireworks display..\n        /// </summary>\n        internal static string Dlg_WhitewolvesResearch_1025 {\n            get {\n                return ResourceManager.GetString(\"Dlg_WhitewolvesResearch_1025\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I don’t understand why the Reich wants us to destroy this place..\n        /// </summary>\n        internal static string Dlg_WhitewolvesResearch_1026 {\n            get {\n                return ResourceManager.GetString(\"Dlg_WhitewolvesResearch_1026\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Can’t they use it themselves?.\n        /// </summary>\n        internal static string Dlg_WhitewolvesResearch_1027 {\n            get {\n                return ResourceManager.GetString(\"Dlg_WhitewolvesResearch_1027\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to They’re all about teaching lessons..\n        /// </summary>\n        internal static string Dlg_WhitewolvesResearch_1028 {\n            get {\n                return ResourceManager.GetString(\"Dlg_WhitewolvesResearch_1028\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Whatever..\n        /// </summary>\n        internal static string Dlg_WhitewolvesResearch_1029 {\n            get {\n                return ResourceManager.GetString(\"Dlg_WhitewolvesResearch_1029\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Be careful and aim at the lower exterior part of the biomachine..\n        /// </summary>\n        internal static string Dlg_WhitewolvesResearch_1030 {\n            get {\n                return ResourceManager.GetString(\"Dlg_WhitewolvesResearch_1030\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Do it from a safe distance – near the fence will be ok..\n        /// </summary>\n        internal static string Dlg_WhitewolvesResearch_1031 {\n            get {\n                return ResourceManager.GetString(\"Dlg_WhitewolvesResearch_1031\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Otherwise you’ll blow along with it..\n        /// </summary>\n        internal static string Dlg_WhitewolvesResearch_1032 {\n            get {\n                return ResourceManager.GetString(\"Dlg_WhitewolvesResearch_1032\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to No cracks about blowing things, Tarja..\n        /// </summary>\n        internal static string Dlg_WhitewolvesResearch_1033 {\n            get {\n                return ResourceManager.GetString(\"Dlg_WhitewolvesResearch_1033\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You read my mind..\n        /// </summary>\n        internal static string Dlg_WhitewolvesResearch_1034 {\n            get {\n                return ResourceManager.GetString(\"Dlg_WhitewolvesResearch_1034\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to It’s an easy read..\n        /// </summary>\n        internal static string Dlg_WhitewolvesResearch_1035 {\n            get {\n                return ResourceManager.GetString(\"Dlg_WhitewolvesResearch_1035\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Wow, that was more than I bargained for..\n        /// </summary>\n        internal static string Dlg_WhitewolvesResearch_1036 {\n            get {\n                return ResourceManager.GetString(\"Dlg_WhitewolvesResearch_1036\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Let’s blow something else up. You know, just for fun..\n        /// </summary>\n        internal static string Dlg_WhitewolvesResearch_1037 {\n            get {\n                return ResourceManager.GetString(\"Dlg_WhitewolvesResearch_1037\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Calm down, Tarja, one’s enough..\n        /// </summary>\n        internal static string Dlg_WhitewolvesResearch_1038 {\n            get {\n                return ResourceManager.GetString(\"Dlg_WhitewolvesResearch_1038\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Madelyn, don’t tell me the party’s over?.\n        /// </summary>\n        internal static string Dlg_WhitewolvesResearch_1039 {\n            get {\n                return ResourceManager.GetString(\"Dlg_WhitewolvesResearch_1039\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Come on guys, come back to Sapho. A warm hangar and some cookies await..\n        /// </summary>\n        internal static string Dlg_WhitewolvesResearch_1041 {\n            get {\n                return ResourceManager.GetString(\"Dlg_WhitewolvesResearch_1041\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hm. Cookies?.\n        /// </summary>\n        internal static string Dlg_WhitewolvesResearch_1042 {\n            get {\n                return ResourceManager.GetString(\"Dlg_WhitewolvesResearch_1042\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You know. The synthetic stuff..\n        /// </summary>\n        internal static string Dlg_WhitewolvesResearch_1043 {\n            get {\n                return ResourceManager.GetString(\"Dlg_WhitewolvesResearch_1043\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Right now, everything sounds better than… biological stuff..\n        /// </summary>\n        internal static string Dlg_WhitewolvesResearch_1044 {\n            get {\n                return ResourceManager.GetString(\"Dlg_WhitewolvesResearch_1044\", resourceCulture);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/Resources/MyDialogues.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"Dlg_Test01\" xml:space=\"preserve\">\n    <value>This is a test. Chunky bacon!</value>\n  </data>\n  <data name=\"Dlg_Test02\" xml:space=\"preserve\">\n    <value>Yes! Chunky bacon for everyone!</value>\n  </data>\n  <data name=\"Dlg_Test03\" xml:space=\"preserve\">\n    <value>This is a very long text. You know, just to test loading times of long sounds. It goes on and on, it just won’t stop! I can’t take it anymore!</value>\n  </data>\n  <data name=\"Dlg_EACSurveySite_0200\" xml:space=\"preserve\">\n    <value>Military alert. Unreported Russian mother ships approaching.</value>\n  </data>\n  <data name=\"Dlg_EACSurveySite_0201\" xml:space=\"preserve\">\n    <value>What the hell?</value>\n  </data>\n  <data name=\"Dlg_EACSurveySite_0202\" xml:space=\"preserve\">\n    <value>Emergency. Evacuate the mines.</value>\n  </data>\n  <data name=\"Dlg_EACSurveySite_0203\" xml:space=\"preserve\">\n    <value>We are under heavy attack. Enemies in superior numbers.</value>\n  </data>\n  <data name=\"Dlg_EACSurveySite_0204\" xml:space=\"preserve\">\n    <value>Two mother ships with cruiser missiles stationed on periphery.</value>\n  </data>\n  <data name=\"Dlg_EACSurveySite_0205\" xml:space=\"preserve\">\n    <value>Forty-six fighters inside the station.</value>\n  </data>\n  <data name=\"Dlg_EACSurveySite_0206\" xml:space=\"preserve\">\n    <value>Still feeling bored, little brother?</value>\n  </data>\n  <data name=\"Dlg_EACSurveySite_0207\" xml:space=\"preserve\">\n    <value>Time to give that military education of mine a workout! Let’s kick some zhopa!</value>\n  </data>\n  <data name=\"Dlg_EACSurveySite_0208\" xml:space=\"preserve\">\n    <value>Calm down. First we need to get outside and get the situation report.</value>\n  </data>\n  <data name=\"Dlg_EACSurveySite_0209\" xml:space=\"preserve\">\n    <value>Heavy civilian casualties. Evacuate station. Use the nearest exit or escape pod.</value>\n  </data>\n  <data name=\"Dlg_EACSurveySite_0210\" xml:space=\"preserve\">\n    <value>Military, follow Protocol 1-1-9. Take whatever actions necessary to protect civilians.</value>\n  </data>\n  <data name=\"Dlg_EACSurveySite_0211\" xml:space=\"preserve\">\n    <value>Captain, we are ready to help secure the situation.</value>\n  </data>\n  <data name=\"Dlg_EACSurveySite_0212\" xml:space=\"preserve\">\n    <value>Two Arion MK7 Fighters, both pilots with advanced Greenbelt training.</value>\n  </data>\n  <data name=\"Dlg_EACSurveySite_0213\" xml:space=\"preserve\">\n    <value>Marcus Rainier, do not engage enemy directly.</value>\n  </data>\n  <data name=\"Dlg_EACSurveySite_0214\" xml:space=\"preserve\">\n    <value>Make your way out alive. We will oppose the Russian forces only if…</value>\n  </data>\n  <data name=\"Dlg_EACSurveySite_0215\" xml:space=\"preserve\">\n    <value>God, what’s going on?!</value>\n  </data>\n  <data name=\"Dlg_EACSurveySite_0216\" xml:space=\"preserve\">\n    <value>We need to get to the command center.</value>\n  </data>\n  <data name=\"Dlg_EACSurveySite_0217\" xml:space=\"preserve\">\n    <value>Check out the situation and send a distress signal.</value>\n  </data>\n  <data name=\"Dlg_EACSurveySite_0301\" xml:space=\"preserve\">\n    <value>They just destroyed two civilian ships!</value>\n  </data>\n  <data name=\"Dlg_EACSurveySite_0302\" xml:space=\"preserve\">\n    <value>Just keep moving.</value>\n  </data>\n  <data name=\"Dlg_EACSurveySite_0401\" xml:space=\"preserve\">\n    <value>Cave-in. Help me blast it apart with missiles!</value>\n  </data>\n  <data name=\"Dlg_EACSurveySite_0501\" xml:space=\"preserve\">\n    <value>We need to follow this airway…</value>\n  </data>\n  <data name=\"Dlg_EACSurveySite_0602\" xml:space=\"preserve\">\n    <value>My God! Those ships are gargantuan!</value>\n  </data>\n  <data name=\"Dlg_EACSurveySite_0603\" xml:space=\"preserve\">\n    <value>Looks like they’re about to turn this station into gravel.</value>\n  </data>\n  <data name=\"Dlg_EACSurveySite_0604\" xml:space=\"preserve\">\n    <value>Why…? This is a civilian operation! What are they thinking?!</value>\n  </data>\n  <data name=\"Dlg_EACSurveySite_0701\" xml:space=\"preserve\">\n    <value>Madelyn, do you copy?</value>\n  </data>\n  <data name=\"Dlg_EACSurveySite_0702\" xml:space=\"preserve\">\n    <value>Marcus! What’s going on over there?</value>\n  </data>\n  <data name=\"Dlg_EACSurveySite_0703\" xml:space=\"preserve\">\n    <value>This is serious. Our survey site is under attack. Heavy casualties. Enemy unknown.</value>\n  </data>\n  <data name=\"Dlg_EACSurveySite_0704\" xml:space=\"preserve\">\n    <value>Madelyn, we need you to get us out of here.</value>\n  </data>\n  <data name=\"Dlg_EACSurveySite_0705\" xml:space=\"preserve\">\n    <value>Go to the hangar 1 and wait there.</value>\n  </data>\n  <data name=\"Dlg_EACSurveySite_0709\" xml:space=\"preserve\">\n    <value>Madelyn, we’ll be at the meeting point on time. Just… try to hurry.</value>\n  </data>\n  <data name=\"Dlg_EACSurveySite_0710\" xml:space=\"preserve\">\n    <value>I just received a distress call.</value>\n  </data>\n  <data name=\"Dlg_EACSurveySite_0801\" xml:space=\"preserve\">\n    <value>Get ready for pickup!</value>\n  </data>\n  <data name=\"Dlg_EACSurveySite_0802\" xml:space=\"preserve\">\n    <value>Ready for a ride, Apollo?</value>\n  </data>\n  <data name=\"Dlg_EACSurveySite_0803\" xml:space=\"preserve\">\n    <value>Yes, let’s get out of here!</value>\n  </data>\n  <data name=\"Dlg_EACSurveySite_0901\" xml:space=\"preserve\">\n    <value>Damn, the whole command center is offline.</value>\n  </data>\n  <data name=\"Dlg_EACSurveySite_0902\" xml:space=\"preserve\">\n    <value>The generators are fried. I can’t believe this is happening!</value>\n  </data>\n  <data name=\"Dlg_EACSurveySite_0903\" xml:space=\"preserve\">\n    <value>Let’s head to the basement and try to fire up the emergency power unit.</value>\n  </data>\n  <data name=\"Dlg_EACSurveySite_0904\" xml:space=\"preserve\">\n    <value>Affirmative.</value>\n  </data>\n  <data name=\"Dlg_EACSurveySite_1001\" xml:space=\"preserve\">\n    <value>It should work now. Fingers crossed.</value>\n  </data>\n  <data name=\"Dlg_EACSurveySite_1002\" xml:space=\"preserve\">\n    <value>Looks like it worked – the automated vendor next door is online again.</value>\n  </data>\n  <data name=\"Dlg_EACSurveySite_1003\" xml:space=\"preserve\">\n    <value>Well, we could use some more supplies.</value>\n  </data>\n  <data name=\"Dlg_EACSurveySite_0218\" xml:space=\"preserve\">\n    <value>Roger. Confirmed.</value>\n  </data>\n  <data name=\"Dlg_EACSurveySite_0502\" xml:space=\"preserve\">\n    <value>…to the other side of the base to get to the command center.</value>\n  </data>\n  <data name=\"Dlg_EACSurveySite_0503\" xml:space=\"preserve\">\n    <value>I hope this is the right decision!</value>\n  </data>\n  <data name=\"Dlg_EACSurveySite_0601\" xml:space=\"preserve\">\n    <value>Outside! Look!</value>\n  </data>\n  <data name=\"Dlg_EACSurveySite_1201\" xml:space=\"preserve\">\n    <value>What now? We can’t hide here forever.</value>\n  </data>\n  <data name=\"Dlg_EACSurveySite_1202\" xml:space=\"preserve\">\n    <value>Trust me. There are soldiers protecting us.</value>\n  </data>\n  <data name=\"Dlg_EACSurveySite_1203\" xml:space=\"preserve\">\n    <value>They should be here soon.</value>\n  </data>\n  <data name=\"Dlg_EACSurveySite_1204\" xml:space=\"preserve\">\n    <value>There seem to be some friends alive.</value>\n  </data>\n  <data name=\"Dlg_EACSurveySite_1305\" xml:space=\"preserve\">\n    <value>The place is ready to blow.</value>\n  </data>\n  <data name=\"Dlg_EACSurveySite_1306\" xml:space=\"preserve\">\n    <value>–fluid than that.</value>\n  </data>\n  <data name=\"Dlg_EACSurveySite_1307\" xml:space=\"preserve\">\n    <value>Wha-what? We are dead!</value>\n  </data>\n  <data name=\"Dlg_EACSurveySite_1301\" xml:space=\"preserve\">\n    <value>I knew you hadn’t abandoned us!</value>\n  </data>\n  <data name=\"Dlg_EACSurveySite_1302\" xml:space=\"preserve\">\n    <value>Are the enemies eliminated? Is the area secure now?</value>\n  </data>\n  <data name=\"Dlg_EACSurveySite_1303\" xml:space=\"preserve\">\n    <value>Secure? Negative. The situation is a bit more–</value>\n  </data>\n  <data name=\"Dlg_EACSurveySite_1304\" xml:space=\"preserve\">\n    <value>We’ve had massive casualties. The enemy crushed our defenses.</value>\n  </data>\n  <data name=\"Dlg_EACSurveySite_1401\" xml:space=\"preserve\">\n    <value>…secure the data from all research facilities…</value>\n  </data>\n  <data name=\"Dlg_EACSurveySite_1501\" xml:space=\"preserve\">\n    <value>…prepare missile barrage…</value>\n  </data>\n  <data name=\"Dlg_EACSurveySite_1601\" xml:space=\"preserve\">\n    <value>…Remember to keep no one alive. This mission is classified…</value>\n  </data>\n  <data name=\"Dlg_EACSurveySite_1701\" xml:space=\"preserve\">\n    <value>General, we have secured 17 hostages in upper satellite wing. Orders?</value>\n  </data>\n  <data name=\"Dlg_EACSurveySite_1702\" xml:space=\"preserve\">\n    <value>…Kill them. Leave no witnesses…</value>\n  </data>\n  <data name=\"Dlg_EACSurveySite_1801\" xml:space=\"preserve\">\n    <value>…send encoded transmission to L-K. We found…</value>\n  </data>\n  <data name=\"Dlg_EACSurveySite_0605\" xml:space=\"preserve\">\n    <value>Hurry up, we need to get to the other side! Pronto!</value>\n  </data>\n  <data name=\"Dlg_EACSurveySite_1308\" xml:space=\"preserve\">\n    <value>Take it easy. Just follow us, we’ll make it through.</value>\n  </data>\n  <data name=\"Dlg_EACSurveySite_1309\" xml:space=\"preserve\">\n    <value>At your back, sir. Lead the way!</value>\n  </data>\n  <data name=\"Dlg_EACSurveySite_2101\" xml:space=\"preserve\">\n    <value>Madelyn better be here!</value>\n  </data>\n  <data name=\"Dlg_EACSurveySite_2102\" xml:space=\"preserve\">\n    <value>You can never find a cab when you need one!</value>\n  </data>\n  <data name=\"Dlg_EACSurveySite_2201\" xml:space=\"preserve\">\n    <value>General, we found no indications of the presence of the artifact…</value>\n  </data>\n  <data name=\"Dlg_EACSurveySite_2301\" xml:space=\"preserve\">\n    <value>…the artifact is not… ?</value>\n  </data>\n  <data name=\"Dlg_EACSurveySite_2401\" xml:space=\"preserve\">\n    <value>…two miners escaped?…</value>\n  </data>\n  <data name=\"Dlg_FortValiant_SlaveMission_01_TemplarGuard\" xml:space=\"preserve\">\n    <value>You have received two new missions available from solar map.</value>\n  </data>\n  <data name=\"Dlg_Laika_0100\" xml:space=\"preserve\">\n    <value>We have to find out exactly where the signal came from and gather all the data we can.</value>\n  </data>\n  <data name=\"Dlg_Laika_0504\" xml:space=\"preserve\">\n    <value>I’ve sent you coordinates of the two satellites.</value>\n  </data>\n  <data name=\"Dlg_Laika_0102\" xml:space=\"preserve\">\n    <value>I suggest checking the computers and communication arrays.</value>\n  </data>\n  <data name=\"Dlg_Laika_0103\" xml:space=\"preserve\">\n    <value>Apollo, I installed a hacking tool on your ship.</value>\n  </data>\n  <data name=\"Dlg_Laika_0104\" xml:space=\"preserve\">\n    <value>Use it to extract the data from the digital devices.</value>\n  </data>\n  <data name=\"Dlg_Laika_0200\" xml:space=\"preserve\">\n    <value>Hmm, why so many military ships just for a customs check?</value>\n  </data>\n  <data name=\"Dlg_Laika_0201\" xml:space=\"preserve\">\n    <value>That does seems odd. Be ready for anything.</value>\n  </data>\n  <data name=\"Dlg_Laika_0202\" xml:space=\"preserve\">\n    <value>Keep moving.</value>\n  </data>\n  <data name=\"Dlg_Laika_0303\" xml:space=\"preserve\">\n    <value>I’ll be around in case you need a quick withdrawal.</value>\n  </data>\n  <data name=\"Dlg_Laika_0300\" xml:space=\"preserve\">\n    <value>This wasn’t so hard.</value>\n  </data>\n  <data name=\"Dlg_Laika_0500\" xml:space=\"preserve\">\n    <value>Nothing.</value>\n  </data>\n  <data name=\"Dlg_Laika_0501\" xml:space=\"preserve\">\n    <value>No record of communication with the assault squad on Landswick.</value>\n  </data>\n  <data name=\"Dlg_Laika_0502\" xml:space=\"preserve\">\n    <value>What now?</value>\n  </data>\n  <data name=\"Dlg_Laika_0503\" xml:space=\"preserve\">\n    <value>I scanned all the communication arrays and computers on Laika.</value>\n  </data>\n  <data name=\"Dlg_Laika_0600\" xml:space=\"preserve\">\n    <value>Let’s start with the one toward the west.</value>\n  </data>\n  <data name=\"Dlg_Laika_0601\" xml:space=\"preserve\">\n    <value>It should be easier to get to from here.</value>\n  </data>\n  <data name=\"Dlg_Laika_0602\" xml:space=\"preserve\">\n    <value>Confirmed.</value>\n  </data>\n  <data name=\"Dlg_Laika_0700\" xml:space=\"preserve\">\n    <value>Good news, bad news.</value>\n  </data>\n  <data name=\"Dlg_Laika_0701\" xml:space=\"preserve\">\n    <value>Good news, I’ve retrieved something.</value>\n  </data>\n  <data name=\"Dlg_Laika_0702\" xml:space=\"preserve\">\n    <value>Bad news, it seems that all outgoing messages are split between the two satellites.</value>\n  </data>\n  <data name=\"Dlg_Laika_0800\" xml:space=\"preserve\">\n    <value>Success!</value>\n  </data>\n  <data name=\"Dlg_Laika_0801\" xml:space=\"preserve\">\n    <value>I have the rest of the recordings and some other data on the operation at New Landswick.</value>\n  </data>\n  <data name=\"Dlg_Laika_0802\" xml:space=\"preserve\">\n    <value>Great. Let’s get back to Madelyn</value>\n  </data>\n  <data name=\"Dlg_Laika_0803\" xml:space=\"preserve\">\n    <value>Roger that.</value>\n  </data>\n  <data name=\"Dlg_Laika_0804\" xml:space=\"preserve\">\n    <value>I have some bad news for you, guys.</value>\n  </data>\n  <data name=\"Dlg_Laika_0806\" xml:space=\"preserve\">\n    <value>The cavalry has arrived.</value>\n  </data>\n  <data name=\"Dlg_Laika_0900\" xml:space=\"preserve\">\n    <value>Looks like they have some pretty nasty nuclear warheads stored here.</value>\n  </data>\n  <data name=\"Dlg_Laika_0105\" xml:space=\"preserve\">\n    <value>Rogger that.</value>\n  </data>\n  <data name=\"Dlg_Laika_0106\" xml:space=\"preserve\">\n    <value>Try not to attract much attention. The longer they stay uninterested in us, the better.</value>\n  </data>\n  <data name=\"Dlg_Laika_0304\" xml:space=\"preserve\">\n    <value>As long as there are no enemy mother ships…</value>\n  </data>\n  <data name=\"Dlg_Laika_0305\" xml:space=\"preserve\">\n    <value>Okay, good. But first we need to get what we came for.</value>\n  </data>\n  <data name=\"Dlg_Laika_0307\" xml:space=\"preserve\">\n    <value>Though it might bring us more trouble than we bargained for.</value>\n  </data>\n  <data name=\"Dlg_Laika_0308\" xml:space=\"preserve\">\n    <value>The command center is marked on your GPS.</value>\n  </data>\n  <data name=\"Dlg_Laika_0309\" xml:space=\"preserve\">\n    <value>Go there and check for any datalogs of outgoing and incoming transmissions.</value>\n  </data>\n  <data name=\"Dlg_Laika_0310\" xml:space=\"preserve\">\n    <value>Did you notice that strange equipment those fighters were using?</value>\n  </data>\n  <data name=\"Dlg_Laika_0311\" xml:space=\"preserve\">\n    <value>I don’t believe this is Russian military we’re facing.</value>\n  </data>\n  <data name=\"Dlg_Laika_0312\" xml:space=\"preserve\">\n    <value>Neither do I.</value>\n  </data>\n  <data name=\"Dlg_Laika_0313\" xml:space=\"preserve\">\n    <value>I made some preliminary scans of the ships.</value>\n  </data>\n  <data name=\"Dlg_Laika_0314\" xml:space=\"preserve\">\n    <value>According to the database, some of their equipment and ship models…</value>\n  </data>\n  <data name=\"Dlg_Laika_0505\" xml:space=\"preserve\">\n    <value>Check them out, up close, maybe they store the data directly there.</value>\n  </data>\n  <data name=\"Dlg_Laika_0703\" xml:space=\"preserve\">\n    <value>Some kind of security hash.</value>\n  </data>\n  <data name=\"Dlg_Laika_0704\" xml:space=\"preserve\">\n    <value>But you wouldn’t believe what I’ve got so far, guys.</value>\n  </data>\n  <data name=\"Dlg_Laika_0705\" xml:space=\"preserve\">\n    <value>Off to the second satellite now.</value>\n  </data>\n  <data name=\"Dlg_Laika_0706\" xml:space=\"preserve\">\n    <value>…So don’t keep me in suspense. What did you find out so far?</value>\n  </data>\n  <data name=\"Dlg_Laika_0707\" xml:space=\"preserve\">\n    <value>I was planning to save story-time for later, but here, listen to this.</value>\n  </data>\n  <data name=\"Dlg_Laika_0708\" xml:space=\"preserve\">\n    <value>…We found no information about the alien artifacts in Landswick.</value>\n  </data>\n  <data name=\"Dlg_Laika_0709\" xml:space=\"preserve\">\n    <value>Mr. Vasilyev will not be pleased as to the other findings.</value>\n  </data>\n  <data name=\"Dlg_Laika_0710\" xml:space=\"preserve\">\n    <value>Also, two miners escaped.</value>\n  </data>\n  <data name=\"Dlg_Laika_0711\" xml:space=\"preserve\">\n    <value>However, they pose no real threat. And they do not know what is going on.</value>\n  </data>\n  <data name=\"Dlg_Laika_0712\" xml:space=\"preserve\">\n    <value>We will make sure the politburo sends…</value>\n  </data>\n  <data name=\"Dlg_Laika_0713\" xml:space=\"preserve\">\n    <value>Our contacts at EAC will see to it that those two miners are persecuted and distrusted.</value>\n  </data>\n  <data name=\"Dlg_Laika_0714\" xml:space=\"preserve\">\n    <value>Finish your work and get back to L-K for de-briefing.</value>\n  </data>\n  <data name=\"Dlg_Laika_0715\" xml:space=\"preserve\">\n    <value>That’s all.</value>\n  </data>\n  <data name=\"Dlg_Laika_0716\" xml:space=\"preserve\">\n    <value>I have more data, but it’s impossible to decode without the second transmitter.</value>\n  </data>\n  <data name=\"Dlg_Laika_0717\" xml:space=\"preserve\">\n    <value>Holy crap, guys. What’s going on?</value>\n  </data>\n  <data name=\"Dlg_Laika_0718\" xml:space=\"preserve\">\n    <value>Alien artifacts? Either it’s code for something or…</value>\n  </data>\n  <data name=\"Dlg_Laika_0719\" xml:space=\"preserve\">\n    <value>…or those Russians believe humankind is not alone in this universe.</value>\n  </data>\n  <data name=\"Dlg_Laika_0720\" xml:space=\"preserve\">\n    <value>Whether they’re right or not…</value>\n  </data>\n  <data name=\"Dlg_Laika_0721\" xml:space=\"preserve\">\n    <value>According to that transmission, we’re in big trouble.</value>\n  </data>\n  <data name=\"Dlg_Laika_0722\" xml:space=\"preserve\">\n    <value>Save the chit-chat for later, girls.</value>\n  </data>\n  <data name=\"Dlg_Laika_0723\" xml:space=\"preserve\">\n    <value>My scans show incoming Russian mother ships; same ones we met before.</value>\n  </data>\n  <data name=\"Dlg_Laika_0724\" xml:space=\"preserve\">\n    <value>Hurry up, in just a few minutes we’ll be outmuscled, big-time.</value>\n  </data>\n  <data name=\"Dlg_Laika_0807\" xml:space=\"preserve\">\n    <value>Right over the corner – two Russian mother ships from Landswick.</value>\n  </data>\n  <data name=\"Dlg_Laika_0808\" xml:space=\"preserve\">\n    <value>I suggest we do-si-do.</value>\n  </data>\n  <data name=\"Dlg_Laika_0809\" xml:space=\"preserve\">\n    <value>What about those nuclear warheads we saw? What if we…</value>\n  </data>\n  <data name=\"Dlg_Laika_1501\" xml:space=\"preserve\">\n    <value>Two Arion MK7 Fighters to Laika. Request permission for landing.</value>\n  </data>\n  <data name=\"Dlg_Laika_1502\" xml:space=\"preserve\">\n    <value>Please proceed to landing bay 1 for customs and cargo scan.</value>\n  </data>\n  <data name=\"Dlg_Laika_1503\" xml:space=\"preserve\">\n    <value>Copy. Proceeding to your coordinates.</value>\n  </data>\n  <data name=\"Dlg_Laika_1504\" xml:space=\"preserve\">\n    <value>Just… be careful. You never know.</value>\n  </data>\n  <data name=\"Dlg_Laika_1505\" xml:space=\"preserve\">\n    <value>We are always careful. Right, Apollo?</value>\n  </data>\n  <data name=\"Dlg_Laika_1506\" xml:space=\"preserve\">\n    <value>Um, sure.</value>\n  </data>\n  <data name=\"Dlg_Laika_1601\" xml:space=\"preserve\">\n    <value>Red guards – you have your orders. Fire!</value>\n  </data>\n  <data name=\"Dlg_Laika_1602\" xml:space=\"preserve\">\n    <value>Damn it!</value>\n  </data>\n  <data name=\"Dlg_Laika_1603\" xml:space=\"preserve\">\n    <value>Let’s give our comrades a little taste of EAC bullets!</value>\n  </data>\n  <data name=\"Dlg_Laika_1701\" xml:space=\"preserve\">\n    <value>Use that hacking tool from Madelyn on those computers over there.</value>\n  </data>\n  <data name=\"Dlg_Laika_0316\" xml:space=\"preserve\">\n    <value>Hmm, what the hell’s going on?</value>\n  </data>\n  <data name=\"Dlg_DialoguePlaceholder\" xml:space=\"preserve\">\n    <value>This is just a placeholder which will be replaced later</value>\n  </data>\n  <data name=\"Dlg_Rime_0501\" xml:space=\"preserve\">\n    <value>Ok, guys, go to your positions. Spread out and try to look… inconspicuous.</value>\n  </data>\n  <data name=\"Dlg_Rime_0601\" xml:space=\"preserve\">\n    <value>Damn, those whores should have been paying us. There are much better places on Rime.</value>\n  </data>\n  <data name=\"Dlg_Rime_0701\" xml:space=\"preserve\">\n    <value>Get out, and don’t come back! This club is for gentlemen.</value>\n  </data>\n  <data name=\"Dlg_Rime_0801\" xml:space=\"preserve\">\n    <value>…Matt missed the delivery yesterday. Got drunk and had to sleep it off in a holding cell.</value>\n  </data>\n  <data name=\"Dlg_Rime_0901\" xml:space=\"preserve\">\n    <value>Don’t get too close. Hang back at 300 to 650 meters, that should do the job.</value>\n  </data>\n  <data name=\"Dlg_Rime_1001\" xml:space=\"preserve\">\n    <value>Mitchell, you happen to notice that you were followed?</value>\n  </data>\n  <data name=\"Dlg_Rime_1101\" xml:space=\"preserve\">\n    <value>Ok, that’s all the guards. Grab the undeclared cargo boxes.</value>\n  </data>\n  <data name=\"Dlg_Rime_1201\" xml:space=\"preserve\">\n    <value>That should do. I think we’ve got enough.</value>\n  </data>\n  <data name=\"Dlg_Rift_0102\" xml:space=\"preserve\">\n    <value>So this is the Rift-Sion lab complex.</value>\n  </data>\n  <data name=\"Dlg_Rift_0103\" xml:space=\"preserve\">\n    <value>Right. You might want to go there first.</value>\n  </data>\n  <data name=\"Dlg_Rift_0105\" xml:space=\"preserve\">\n    <value>The researchers in here might have some useful tips how to survive in the Rift.</value>\n  </data>\n  <data name=\"Dlg_Rift_0106\" xml:space=\"preserve\">\n    <value>I am staying in here with Tarja. Our ships can’t handle the radiation and sun storms.</value>\n  </data>\n  <data name=\"Dlg_Rift_0201\" xml:space=\"preserve\">\n    <value>Apollo Rainier to Rift-Sion laboratories, request for landing.</value>\n  </data>\n  <data name=\"Dlg_Rift_0202\" xml:space=\"preserve\">\n    <value>Approved. Welcome to our station and enjoy the sightseeing.</value>\n  </data>\n  <data name=\"Dlg_Rift_0203\" xml:space=\"preserve\">\n    <value>Ehm, thanks.</value>\n  </data>\n  <data name=\"Dlg_Rift_0204\" xml:space=\"preserve\">\n    <value>I am on an expedition to the Rift itself.</value>\n  </data>\n  <data name=\"Dlg_Rift_0205\" xml:space=\"preserve\">\n    <value>Can anyone give me tips for the trip?</value>\n  </data>\n  <data name=\"Dlg_Rift_0206\" xml:space=\"preserve\">\n    <value>Just a moment. I will connect you to Tourist Information office.</value>\n  </data>\n  <data name=\"Dlg_Rift_0301\" xml:space=\"preserve\">\n    <value>Rift-Sion Tourist Information Office. Jennifer Smith speaking. How may I help?</value>\n  </data>\n  <data name=\"Dlg_Rift_0302\" xml:space=\"preserve\">\n    <value>Um… I’m on an expedition to the Rift. Any useful tips you can provide?</value>\n  </data>\n  <data name=\"Dlg_Rift_0303\" xml:space=\"preserve\">\n    <value>I will upload you the Rift Survival Brochure. Have a pleasant stay.</value>\n  </data>\n  <data name=\"Dlg_Rift_0305\" xml:space=\"preserve\">\n    <value>…hm… always wear sunglases… use sun wind armor at all time…</value>\n  </data>\n  <data name=\"Dlg_Rift_0306\" xml:space=\"preserve\">\n    <value>…avoid hi-speed objects such as meteor storms…</value>\n  </data>\n  <data name=\"Dlg_Rift_0307\" xml:space=\"preserve\">\n    <value>…high solar wind areas… heavy radiation…</value>\n  </data>\n  <data name=\"Dlg_Rift_0308\" xml:space=\"preserve\">\n    <value>Anything interesting?</value>\n  </data>\n  <data name=\"Dlg_Rift_0309\" xml:space=\"preserve\">\n    <value>Some nice pictures.</value>\n  </data>\n  <data name=\"Dlg_Rift_0310\" xml:space=\"preserve\">\n    <value>Oh well, guess I’ll be on my way.</value>\n  </data>\n  <data name=\"Dlg_Rift_0311\" xml:space=\"preserve\">\n    <value>Check out the shop at Rift-Sion. They might have some useful equipment there.</value>\n  </data>\n  <data name=\"Dlg_Rift_0312\" xml:space=\"preserve\">\n    <value>Make sure to buy anti-radiation meds and some medical and repair supplies.</value>\n  </data>\n  <data name=\"Dlg_Rift_0313\" xml:space=\"preserve\">\n    <value>And definitely lots of fuel, it is a long way to the Rift.</value>\n  </data>\n  <data name=\"Dlg_Rift_0401\" xml:space=\"preserve\">\n    <value>Guess I’m ready as I’ll ever be.</value>\n  </data>\n  <data name=\"Dlg_Rift_0402\" xml:space=\"preserve\">\n    <value>Double check your seat belts. And – good luck! We’ll be waiting here.</value>\n  </data>\n  <data name=\"Dlg_Rift_0501\" xml:space=\"preserve\">\n    <value>Apollo, I am losing your signal. Is everything ok?</value>\n  </data>\n  <data name=\"Dlg_Rift_0502\" xml:space=\"preserve\">\n    <value>Affirmative. Just a lot of radiation and shit.</value>\n  </data>\n  <data name=\"Dlg_Rift_0503\" xml:space=\"preserve\">\n    <value>Probably disturbing my signal. You copy?</value>\n  </data>\n  <data name=\"Dlg_Rift_0504\" xml:space=\"preserve\">\n    <value>Gotcha. Do this fast.</value>\n  </data>\n  <data name=\"Dlg_Rift_0601\" xml:space=\"preserve\">\n    <value>Out of signal range, swimming in radiation, and a boring mining operation ahead. Yee-haw.</value>\n  </data>\n  <data name=\"Dlg_Rift_0701\" xml:space=\"preserve\">\n    <value>This plutonium deposit has a really extravagant color. Hmm.</value>\n  </data>\n  <data name=\"Dlg_Rift_0801\" xml:space=\"preserve\">\n    <value>Mm, such yummy, gummy loop-tonium. Pluteenium. Go-homium.</value>\n  </data>\n  <data name=\"Dlg_Rift_0901\" xml:space=\"preserve\">\n    <value>Man, this radiation is affecting my dental health. Mental wealth. And such.</value>\n  </data>\n  <data name=\"Dlg_Rift_1001\" xml:space=\"preserve\">\n    <value>This should be enough. Now, back to the station.</value>\n  </data>\n  <data name=\"Dlg_Rift_1101\" xml:space=\"preserve\">\n    <value>This is Apollo, reporting in. I have the rare plutonium.</value>\n  </data>\n  <data name=\"Dlg_Rift_1102\" xml:space=\"preserve\">\n    <value>Loads of it. And maybe even some to spare.</value>\n  </data>\n  <data name=\"Dlg_Rift_1103\" xml:space=\"preserve\">\n    <value>Oh… I… I’m glad to hear you again. Are you all right?</value>\n  </data>\n  <data name=\"Dlg_Rift_1104\" xml:space=\"preserve\">\n    <value>Yeah, getting poached in raw radiation was a nice break from being shot at.</value>\n  </data>\n  <data name=\"Dlg_Rift_1106\" xml:space=\"preserve\">\n    <value>Welcome back! Once you dock in, we can depart to Thomas.</value>\n  </data>\n  <data name=\"Dlg_Rift_1107\" xml:space=\"preserve\">\n    <value>Affirmina-tative.</value>\n  </data>\n  <data name=\"Dlg_Rift_1108\" xml:space=\"preserve\">\n    <value>Apollo?</value>\n  </data>\n  <data name=\"Dlg_Rift_1110\" xml:space=\"preserve\">\n    <value>May I ask you a personal question?</value>\n  </data>\n  <data name=\"Dlg_Rift_1111\" xml:space=\"preserve\">\n    <value>Ah… …no.</value>\n  </data>\n  <data name=\"Dlg_Rift_1112\" xml:space=\"preserve\">\n    <value>Let’s give the man some space.</value>\n  </data>\n  <data name=\"Dlg_Rift_1113\" xml:space=\"preserve\">\n    <value>Come on in. Course set to Barth’s Moon!</value>\n  </data>\n  <data name=\"Dlg_Rift_0208\" xml:space=\"preserve\">\n    <value>Tourist Information office? Here? Not too much stress on that job.</value>\n  </data>\n  <data name=\"Dlg_Rift_0314\" xml:space=\"preserve\">\n    <value>Ok, thanks for the tips.</value>\n  </data>\n  <data name=\"Dlg_Rift_0505\" xml:space=\"preserve\">\n    <value>Yeah, the radiation here’ll turn me into a gummy bear in nothing flat.</value>\n  </data>\n  <data name=\"Dlg_EACSurveySite_0213b\" xml:space=\"preserve\">\n    <value>We are overwhelmed at a rate of 1:7.</value>\n  </data>\n  <data name=\"Dlg_EACSurveySite_1003b\" xml:space=\"preserve\">\n    <value>Too bad we can’t help ourselves, even in an emergency.</value>\n  </data>\n  <data name=\"Dlg_EACSurveySite_1004\" xml:space=\"preserve\">\n    <value>That’s the Trader’s Guild for you. No free goods. No exceptions.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_0101\" xml:space=\"preserve\">\n    <value>We’re back!</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_0102\" xml:space=\"preserve\">\n    <value>You know, this place is starting to feel like home!</value>\n  </data>\n  <data name=\"Dlg_EACSurveySite_1005\" xml:space=\"preserve\">\n    <value>Check it if you want but we should get to the command center ASAP.</value>\n  </data>\n  <data name=\"Dlg_ChineseTransmitter_01_01\" xml:space=\"preserve\">\n    <value>Welcome to the Chinese radar array at Yunzun.</value>\n  </data>\n  <data name=\"Dlg_ChineseTransmitter_01_02\" xml:space=\"preserve\">\n    <value>We know you have a choice in interstellar carriers…</value>\n  </data>\n  <data name=\"Dlg_ChineseTransmitter_01_03\" xml:space=\"preserve\">\n    <value>…so we thank you for choosing Madelyn space airways.</value>\n  </data>\n  <data name=\"Dlg_ChineseTransmitter_01_04\" xml:space=\"preserve\">\n    <value>Remember, guys, we’re in a prohibited area. They will shoot first, ask questions later.</value>\n  </data>\n  <data name=\"Dlg_ChineseTransmitter_01_05\" xml:space=\"preserve\">\n    <value>Roger that, let’s go then. And don’t forget, act like raiders.</value>\n  </data>\n  <data name=\"Dlg_ChineseTransmitter_01_06\" xml:space=\"preserve\">\n    <value>Sure thing, we just knock on their doors with sabres in our hands…</value>\n  </data>\n  <data name=\"Dlg_ChineseTransmitter_01_07\" xml:space=\"preserve\">\n    <value>…and they’ll all jump overboard.</value>\n  </data>\n  <data name=\"Dlg_ChineseTransmitter_01_08\" xml:space=\"preserve\">\n    <value>You know what I mean.</value>\n  </data>\n  <data name=\"Dlg_ChineseTransmitter_01_09\" xml:space=\"preserve\">\n    <value>Arrr! We’ll keelhaul ’em and feed them to the fishies.</value>\n  </data>\n  <data name=\"Dlg_ChineseTransmitter_01_10\" xml:space=\"preserve\">\n    <value>Why am I losing confidence by the moment?</value>\n  </data>\n  <data name=\"Dlg_ChineseTransmitter_01_11\" xml:space=\"preserve\">\n    <value>I just finished my scan. There’s a side entrance through the cargo bay.</value>\n  </data>\n  <data name=\"Dlg_ChineseTransmitter_01_12\" xml:space=\"preserve\">\n    <value>Music to my ears.</value>\n  </data>\n  <data name=\"Dlg_ChineseTransmitter_01_13\" xml:space=\"preserve\">\n    <value>Uh-oh, just received a Chinese signal. Translating to English:</value>\n  </data>\n  <data name=\"Dlg_ChineseTransmitter_01_14\" xml:space=\"preserve\">\n    <value>Addressing unknown vehicle: this is a prohibited area.</value>\n  </data>\n  <data name=\"Dlg_ChineseTransmitter_01_15\" xml:space=\"preserve\">\n    <value>Explain your purposes and leave immediately or we will fire.</value>\n  </data>\n  <data name=\"Dlg_ChineseTransmitter_01_16\" xml:space=\"preserve\">\n    <value>Repeat: leave or we will fire.</value>\n  </data>\n  <data name=\"Dlg_ChineseTransmitter_01_17\" xml:space=\"preserve\">\n    <value>Better be quick.</value>\n  </data>\n  <data name=\"Dlg_ChineseTransmitter_01_18\" xml:space=\"preserve\">\n    <value>Cannons at the ready, cap’n.</value>\n  </data>\n  <data name=\"Dlg_ChineseTransmitter_01_19\" xml:space=\"preserve\">\n    <value>Ok, what’s the plan?</value>\n  </data>\n  <data name=\"Dlg_ChineseTransmitter_01_20\" xml:space=\"preserve\">\n    <value>We enter by the cargo bay.</value>\n  </data>\n  <data name=\"Dlg_ChineseTransmitter_01_21\" xml:space=\"preserve\">\n    <value>We loot the cargo, so it will look like a normal pillage and plunder operation.</value>\n  </data>\n  <data name=\"Dlg_ChineseTransmitter_01_22\" xml:space=\"preserve\">\n    <value>Right. A normal, everyday pillage and plunder, nothing unusual.</value>\n  </data>\n  <data name=\"Dlg_ChineseTransmitter_01_23\" xml:space=\"preserve\">\n    <value>Let the raid begin.</value>\n  </data>\n  <data name=\"Dlg_ChineseTransmitter_02_01\" xml:space=\"preserve\">\n    <value>Ok, you two stay here, go after that cargo and attract some attention, …</value>\n  </data>\n  <data name=\"Dlg_ChineseTransmitter_02_02\" xml:space=\"preserve\">\n    <value>…I’ll go place that detector.</value>\n  </data>\n  <data name=\"Dlg_ChineseTransmitter_02_04\" xml:space=\"preserve\">\n    <value>They sent some ships, but no big deal.</value>\n  </data>\n  <data name=\"Dlg_ChineseTransmitter_02_05\" xml:space=\"preserve\">\n    <value>Good, can you navigate me through the station?</value>\n  </data>\n  <data name=\"Dlg_ChineseTransmitter_02_06\" xml:space=\"preserve\">\n    <value>Sure, just give me a sec for scanning.</value>\n  </data>\n  <data name=\"Dlg_ChineseTransmitter_02_07\" xml:space=\"preserve\">\n    <value>Ok, I’ll head inside, let me know when you have something for me.</value>\n  </data>\n  <data name=\"Dlg_ChineseTransmitter_02_08\" xml:space=\"preserve\">\n    <value>Come on, Valentin, let’s look around, see what booty we can find.</value>\n  </data>\n  <data name=\"Dlg_ChineseTransmitter_03_01\" xml:space=\"preserve\">\n    <value>I see lots of cameras. You’ll have to turn them off.</value>\n  </data>\n  <data name=\"Dlg_ChineseTransmitter_03_02\" xml:space=\"preserve\">\n    <value>The security center should be in the upper level.</value>\n  </data>\n  <data name=\"Dlg_ChineseTransmitter_03_03\" xml:space=\"preserve\">\n    <value>Copy.</value>\n  </data>\n  <data name=\"Dlg_ChineseTransmitter_04_01\" xml:space=\"preserve\">\n    <value>Can you hack those computers?</value>\n  </data>\n  <data name=\"Dlg_ChineseTransmitter_04_02\" xml:space=\"preserve\">\n    <value>Negative, too many of them. It would take ages.</value>\n  </data>\n  <data name=\"Dlg_ChineseTransmitter_04_03\" xml:space=\"preserve\">\n    <value>Then you’ll have to destroy the generator that powers this room.</value>\n  </data>\n  <data name=\"Dlg_ChineseTransmitter_04_04\" xml:space=\"preserve\">\n    <value>Destroying generators is my new hobby.</value>\n  </data>\n  <data name=\"Dlg_ChineseTransmitter_05_01\" xml:space=\"preserve\">\n    <value>Power is off, can you navigate me to the command center?</value>\n  </data>\n  <data name=\"Dlg_ChineseTransmitter_05_02\" xml:space=\"preserve\">\n    <value>Yes, it’s in the center of the asteroid.</value>\n  </data>\n  <data name=\"Dlg_ChineseTransmitter_05_03\" xml:space=\"preserve\">\n    <value>Great. Tarja, what’s your status?</value>\n  </data>\n  <data name=\"Dlg_ChineseTransmitter_05_04\" xml:space=\"preserve\">\n    <value>A few guards, no big deal. And we’ve got some sweet boo-tay.</value>\n  </data>\n  <data name=\"Dlg_ChineseTransmitter_05_05\" xml:space=\"preserve\">\n    <value>Er… No comment.</value>\n  </data>\n  <data name=\"Dlg_ChineseTransmitter_06_01\" xml:space=\"preserve\">\n    <value>WAIT! I just made deep scan of the command center. It is heavily guarded.</value>\n  </data>\n  <data name=\"Dlg_ChineseTransmitter_06_02\" xml:space=\"preserve\">\n    <value>Give me a minute and I’ll find where you can disable it.</value>\n  </data>\n  <data name=\"Dlg_ChineseTransmitter_06_03\" xml:space=\"preserve\">\n    <value>Apollo, hurry up, reinforcements just arrived!</value>\n  </data>\n  <data name=\"Dlg_ChineseTransmitter_06_04\" xml:space=\"preserve\">\n    <value>I found it. Coordinates sent.</value>\n  </data>\n  <data name=\"Dlg_ChineseTransmitter_06_05\" xml:space=\"preserve\">\n    <value>Hold on Tarja, I’m almost in the command center.</value>\n  </data>\n  <data name=\"Dlg_ChineseTransmitter_07_01\" xml:space=\"preserve\">\n    <value>Apollo, where are you? It’s getting pretty hot in here.</value>\n  </data>\n  <data name=\"Dlg_ChineseTransmitter_07_02\" xml:space=\"preserve\">\n    <value>Go back to Madelyn, I can find my way out on my own.</value>\n  </data>\n  <data name=\"Dlg_ChineseTransmitter_07_03\" xml:space=\"preserve\">\n    <value>Negative, they cut us off.</value>\n  </data>\n  <data name=\"Dlg_ChineseTransmitter_07_04\" xml:space=\"preserve\">\n    <value>I’ll be there as fast as I can. Madelyn, is the command center safe now?</value>\n  </data>\n  <data name=\"Dlg_ChineseTransmitter_07_05\" xml:space=\"preserve\">\n    <value>If you turned off those turrets…</value>\n  </data>\n  <data name=\"Dlg_ChineseTransmitter_08_01\" xml:space=\"preserve\">\n    <value>Detector placed, I just hope they don’t spot it. Tarja, hold on, I’m on my way.</value>\n  </data>\n  <data name=\"Dlg_ChineseTransmitter_09_01\" xml:space=\"preserve\">\n    <value>Tarja, I’m glad you two are still alive!</value>\n  </data>\n  <data name=\"Dlg_ChineseTransmitter_09_02\" xml:space=\"preserve\">\n    <value>We won’t be much longer if we stand here and chat.</value>\n  </data>\n  <data name=\"Dlg_ChineseTransmitter_09_03\" xml:space=\"preserve\">\n    <value>So let’s go. Madelyn, what’s your status?</value>\n  </data>\n  <data name=\"Dlg_ChineseTransmitter_09_04\" xml:space=\"preserve\">\n    <value>Ready when you are.</value>\n  </data>\n  <data name=\"Dlg_ChineseTransmitter_09_05\" xml:space=\"preserve\">\n    <value>Great, we’re on our way. Well, I think it was a success. </value>\n  </data>\n  <data name=\"Dlg_ChineseTransmitter_09_06\" xml:space=\"preserve\">\n    <value>Just an everyday pillage and plunder.</value>\n  </data>\n  <data name=\"Dlg_ChineseTransmitter_09_07\" xml:space=\"preserve\">\n    <value>Arrrr! Them scurvy-ridden harbor hogs didn’t stand a chance.</value>\n  </data>\n  <data name=\"Dlg_ChineseTransmitter_09_08\" xml:space=\"preserve\">\n    <value>I think we’re all set, so you can belay the Jack Tar routine.</value>\n  </data>\n  <data name=\"Dlg_ChineseTransmitter_09_09\" xml:space=\"preserve\">\n    <value>Aye aye, cap’n.</value>\n  </data>\n  <data name=\"Dlg_ChineseTransmitter_09_10\" xml:space=\"preserve\">\n    <value>No, really, please stop. Thank you.</value>\n  </data>\n  <data name=\"Dlg_ChineseTransmitter_10_01\" xml:space=\"preserve\">\n    <value>Mission complete. Madelyn, can you get us out of here?</value>\n  </data>\n  <data name=\"Dlg_ChineseTransmitter_10_02\" xml:space=\"preserve\">\n    <value>If you give me a little push in the right direction…</value>\n  </data>\n  <data name=\"Dlg_ChineseTransmitter_10_03\" xml:space=\"preserve\">\n    <value>Russia. The radar array of Tver. </value>\n  </data>\n  <data name=\"Dlg_ChineseTransmitter_10_04\" xml:space=\"preserve\">\n    <value>You want to save the EAC radar array for last, right?</value>\n  </data>\n  <data name=\"Dlg_ChineseTransmitter_10_05\" xml:space=\"preserve\">\n    <value>I do.</value>\n  </data>\n  <data name=\"Dlg_ChineseTransmitter_10_06\" xml:space=\"preserve\">\n    <value>Course set. Dock in!</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_0108\" xml:space=\"preserve\">\n    <value>Let’s say hello to Thomas. I think he’ll be happy to see us again!</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_0109\" xml:space=\"preserve\">\n    <value>Thomas, do you copy?</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_0110\" xml:space=\"preserve\">\n    <value>I am here, my friends, and eager to hear of your exploits!</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_0111\" xml:space=\"preserve\">\n    <value>Mission accomplished!</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_0112\" xml:space=\"preserve\">\n    <value>Raiders successfully terminated and communication components secured.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_0114\" xml:space=\"preserve\">\n    <value>I am pleased to hear such good news! \nI have something for you as well…\n</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_0116\" xml:space=\"preserve\">\n    <value>Read it on your way here. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_0201\" xml:space=\"preserve\">\n    <value>I’m going through the data Thomas just sent. The whole situation is… unbelievable!</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_0202\" xml:space=\"preserve\">\n    <value>What exactly do you mean?</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_0203\" xml:space=\"preserve\">\n    <value>…now I completely understand why Thomas was so excited when we first arrived…</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_0204\" xml:space=\"preserve\">\n    <value>…and told him about the artifacts.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_0206\" xml:space=\"preserve\">\n    <value>I’ll let Thomas do the explaining. Meanwhile, I’ll go through the rest of the data…</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_0301\" xml:space=\"preserve\">\n    <value>So what do you think?</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_0302\" xml:space=\"preserve\">\n    <value>You’d better explain all this in your own words. The data you sent is… complex.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_0304\" xml:space=\"preserve\">\n    <value>As I said earlier, there are reasons to believe that…</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_0305\" xml:space=\"preserve\">\n    <value>…there was an ancient alien impact on the evolution of humankind.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_0306\" xml:space=\"preserve\">\n    <value>Dismiss it as nonsense if you wish, but those Russians believe it.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_0307\" xml:space=\"preserve\">\n    <value>And back in the Deimos labs, we believed too. For good reason.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_0308\" xml:space=\"preserve\">\n    <value>Anyway, if it was true, then there has to be some remains of the aliens…</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_0309\" xml:space=\"preserve\">\n    <value>…or their technology, in our Solar System.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_0310\" xml:space=\"preserve\">\n    <value>Technology we might possibly employ…</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_0311\" xml:space=\"preserve\">\n    <value>Biological samples we might…</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_0312\" xml:space=\"preserve\">\n    <value>…utilize to enhance our own genome.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_0313\" xml:space=\"preserve\">\n    <value>That’s what the Reichists were after! A shortening of the way!  </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_0314\" xml:space=\"preserve\">\n    <value>Precisely! Think of the way we put human diseases into bacteria, make them resistant…</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_0315\" xml:space=\"preserve\">\n    <value>…and then implant the resulting inhibitors into humans… </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_0316\" xml:space=\"preserve\">\n    <value>Imagine if we implanted the effective parts of alien DNA…</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_0317\" xml:space=\"preserve\">\n    <value>…which is several evolutionary steps above ours, into humans.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_0318\" xml:space=\"preserve\">\n    <value>You think this is what those Russians are after?</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_0319\" xml:space=\"preserve\">\n    <value>Perhaps. But I’d guess they are more interested in the technology.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_0320\" xml:space=\"preserve\">\n    <value>Analyzing those alien materials and…</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_0321\" xml:space=\"preserve\">\n    <value>…devices could help them create futuristic weapons.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_0324\" xml:space=\"preserve\">\n    <value>Now, before we talk further, I want you to check these coordinates.  </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_0401\" xml:space=\"preserve\">\n    <value>Proceed to this location. It will take a few minutes to get there. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_0402\" xml:space=\"preserve\">\n    <value>I will explain everything on the way.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_0403\" xml:space=\"preserve\">\n    <value>Ok. You can start anytime…</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_0404\" xml:space=\"preserve\">\n    <value>The place you are going to is the remains of the old Deimos laboratory complex.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_0405\" xml:space=\"preserve\">\n    <value>This can’t be! Deimos’ moon must have been crushed during… </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_0406\" xml:space=\"preserve\">\n    <value>…the Solar Event like all the other solar bodies!</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_0407\" xml:space=\"preserve\">\n    <value>I did not say it was the whole moon. It is just a… shard. But it contains… </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_0408\" xml:space=\"preserve\">\n    <value>…laboratories… with technologies useful to our current situation. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_0409\" xml:space=\"preserve\">\n    <value>Why haven’t you gone there yourself?</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_0410\" xml:space=\"preserve\">\n    <value>I have. Several times. Hit-and-run. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_0411\" xml:space=\"preserve\">\n    <value>Many of my devices are from the Broken Moon, as I call it.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_0412\" xml:space=\"preserve\">\n    <value>Why hit-and-run?</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_0413\" xml:space=\"preserve\">\n    <value>Right – there can’t be anyone living there, except maybe… space nazi zombies. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_0414\" xml:space=\"preserve\">\n    <value>Come on, no one could survive in there!</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_0415\" xml:space=\"preserve\">\n    <value>No humans. But… machines, computers. Artificial intelligence. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_0416\" xml:space=\"preserve\">\n    <value>We had a technology for AI fighter pilots long before the solar event. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_0417\" xml:space=\"preserve\">\n    <value>I wonder what else YOU know that we don’t.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_0418\" xml:space=\"preserve\">\n    <value>Not much, but I’ll tell you a few more stories later.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_0419\" xml:space=\"preserve\">\n    <value>What’s the plan?</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_0420\" xml:space=\"preserve\">\n    <value>Get inside, turn up the emergency power unit, kick off the AI weapons. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_0421\" xml:space=\"preserve\">\n    <value>And get me a few components.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_0422\" xml:space=\"preserve\">\n    <value>Roger that.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_0501\" xml:space=\"preserve\">\n    <value>Might need to dig or blast our way through this pile of dirt.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_0601\" xml:space=\"preserve\">\n    <value>Here we go. I’m detecting radiation around here. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_0602\" xml:space=\"preserve\">\n    <value>And the deeper we go, the stronger it gets. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_0603\" xml:space=\"preserve\">\n    <value>You must turn on the backup energy supply first. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_0604\" xml:space=\"preserve\">\n    <value>Do not waste time or the radiation will consume you alive! </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_0701\" xml:space=\"preserve\">\n    <value>Good. Now, you need to turn on the main energy generators.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_0703\" xml:space=\"preserve\">\n    <value>There should be drones! Emergency maintenance drones. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_0704\" xml:space=\"preserve\">\n    <value>Find them and if they are still operational, they can do the job. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_0705\" xml:space=\"preserve\">\n    <value>I saw a small maintenance room on the way here. Let’s check it out.  </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_0801\" xml:space=\"preserve\">\n    <value>Nice! The drones survived. I mean, they’re still operational. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_0802\" xml:space=\"preserve\">\n    <value>Great! Use them to do the dirty work</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_0803\" xml:space=\"preserve\">\n    <value>First “park” your ship in the area without radiation. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_0804\" xml:space=\"preserve\">\n    <value>The drones are immune to it, but you’re not.  </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_0901\" xml:space=\"preserve\">\n    <value>Apollo, you handle the drone. Find a way to lead it to the generators.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_1001\" xml:space=\"preserve\">\n    <value>Here we go. About to fire this one up.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_1101\" xml:space=\"preserve\">\n    <value>Up and running!</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_1102\" xml:space=\"preserve\">\n    <value>Crap, it’s overheating and –</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_1201\" xml:space=\"preserve\">\n    <value>Bad luck. Try the other generator with the other drone. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_1202\" xml:space=\"preserve\">\n    <value>Workin’ on it. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_1301\" xml:space=\"preserve\">\n    <value>I’m here. Let’s spin the wheel of fortune again. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_1401\" xml:space=\"preserve\">\n    <value>Yeah! Roll, baby!</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_1402\" xml:space=\"preserve\">\n    <value>Wait a few seconds. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_1403\" xml:space=\"preserve\">\n    <value>Ok, it seems this one is stable. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_1404\" xml:space=\"preserve\">\n    <value>Good, I see you have lights on! Head to the main control room.  </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_1501\" xml:space=\"preserve\">\n    <value>I see some nice stuff around there. Would you mind getting the data from each of hubs?</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_1502\" xml:space=\"preserve\">\n    <value>There should be four of them.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_1503\" xml:space=\"preserve\">\n    <value>Do we have to hit all four of them?</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_1504\" xml:space=\"preserve\">\n    <value>Yes, the data is hashed. Get it from only one computer and it’s of no use to me.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_1505\" xml:space=\"preserve\">\n    <value>What exactly are we after?</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_1506\" xml:space=\"preserve\">\n    <value>Results of genetic research. Classified materials. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_1507\" xml:space=\"preserve\">\n    <value>Even I did not have access to them before. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_1508\" xml:space=\"preserve\">\n    <value>Once you’re done, I need you to pick up a few special devices</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_1509\" xml:space=\"preserve\">\n    <value>I will tell you when you come across one.  </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_1601\" xml:space=\"preserve\">\n    <value>We’ve got company.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_1602\" xml:space=\"preserve\">\n    <value>Damn, and we forgot to buy wine. Security bots! </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_1701\" xml:space=\"preserve\">\n    <value>This place is radiated. Apollo, work fast. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_1702\" xml:space=\"preserve\">\n    <value>Roger that.  </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_1801\" xml:space=\"preserve\">\n    <value>Done. Movin’ on.  </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_1901\" xml:space=\"preserve\">\n    <value>Damn, this is bad. Critical radiation level in this one. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_1902\" xml:space=\"preserve\">\n    <value>I suggest using drones again. Same procedure as before. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_1903\" xml:space=\"preserve\">\n    <value>Stop your ship in a safe area and let the drone get its hands dirty. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_1905\" xml:space=\"preserve\">\n    <value>I’d just eat Marcus’s cooking.   </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_2001\" xml:space=\"preserve\">\n    <value>All set here.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_2002\" xml:space=\"preserve\">\n    <value>One more computer to go.  </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_2101\" xml:space=\"preserve\">\n    <value>Good job, Apollo!</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_2102\" xml:space=\"preserve\">\n    <value>Now, according to the scans, the components I need are in the main lab. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_2103\" xml:space=\"preserve\">\n    <value>Just… be careful there. I don’t know whether Blondi is still alive…</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_2104\" xml:space=\"preserve\">\n    <value>Blondi?</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_2105\" xml:space=\"preserve\">\n    <value>Better not to ask. Just… always look around corners. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_2106\" xml:space=\"preserve\">\n    <value>Great! Blondi? What the hell is that?</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_2107\" xml:space=\"preserve\">\n    <value>Guess we’ll find out soon enough. Head to the main lab.  </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_2201\" xml:space=\"preserve\">\n    <value>Jeez… is this –</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_2202\" xml:space=\"preserve\">\n    <value>Emergency security measures! Overriding human safety protocol. Mainframe CORE endangered!</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_2203\" xml:space=\"preserve\">\n    <value>Blondi?</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_2204\" xml:space=\"preserve\">\n    <value>We’re locked in. She… I mean, IT sealed all the doors.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_2205\" xml:space=\"preserve\">\n    <value>Blondi! She is alive!</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_2206\" xml:space=\"preserve\">\n    <value>“She” has just targeted all of her defense systems on us. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_2207\" xml:space=\"preserve\">\n    <value>Is she always this polite to guests?</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_2208\" xml:space=\"preserve\">\n    <value>Try not to damage her! She’s – a masterpiece!</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_2209\" xml:space=\"preserve\">\n    <value>You prefer us to be damaged instead? </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_2210\" xml:space=\"preserve\">\n    <value>Apollo, concentrate all your firepower on our… lady friend. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_2211\" xml:space=\"preserve\">\n    <value>Thomas, what’s this all about?</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_2212\" xml:space=\"preserve\">\n    <value>An experiment! A successful one! She survived all these years!</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_2213\" xml:space=\"preserve\">\n    <value>Too bad we have to spoil your perfect record. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_2214\" xml:space=\"preserve\">\n    <value>No!</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_2215\" xml:space=\"preserve\">\n    <value>You understand we have no other choice? That thing is firing on us repeatedly – </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_2216\" xml:space=\"preserve\">\n    <value>Am I… hurt? </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_2217\" xml:space=\"preserve\">\n    <value>You are… </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_2218\" xml:space=\"preserve\">\n    <value>Killing my children… </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_2219\" xml:space=\"preserve\">\n    <value>And now… </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_2220\" xml:space=\"preserve\">\n    <value>You come to kill… </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_2221\" xml:space=\"preserve\">\n    <value>Me?</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_2222\" xml:space=\"preserve\">\n    <value>You must save her! For the sake of science and humanity, you must –</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_2223\" xml:space=\"preserve\">\n    <value>If you tell me “she” feels pain, I will consider killing you as well, Dr. Frankenstein.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_2224\" xml:space=\"preserve\">\n    <value>She does not, although she simulates emotions. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_2225\" xml:space=\"preserve\">\n    <value>She is one of the greatest achievements of science.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_2226\" xml:space=\"preserve\">\n    <value>Destroying her would throw us back years in biogenetic research.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_2227\" xml:space=\"preserve\">\n    <value>Did you say biogenetic? </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_2228\" xml:space=\"preserve\">\n    <value>Ehm, yes, biogenetic. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_2229\" xml:space=\"preserve\">\n    <value>I mean – she is not “electronic” in the true sense of the world. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_2230\" xml:space=\"preserve\">\n    <value>Holy crap! Are you telling me this computer is alive?</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_2301\" xml:space=\"preserve\">\n    <value>“She”’s nearly down!</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_2302\" xml:space=\"preserve\">\n    <value>Save her! I beg you! Don’t destroy her, just… disable her! </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_2401\" xml:space=\"preserve\">\n    <value>Farewell to humankind! Blondi out</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_2501\" xml:space=\"preserve\">\n    <value>Nooooo! Years of work turned to ashes!</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_2502\" xml:space=\"preserve\">\n    <value>Target dispatched. Well done, Apollo!</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_2503\" xml:space=\"preserve\">\n    <value>What next? Thomas?</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_2504\" xml:space=\"preserve\">\n    <value>You… How could you?… How could you? </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_2505\" xml:space=\"preserve\">\n    <value>Guys, I got the data from Thomas earlier. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_2506\" xml:space=\"preserve\">\n    <value>According to his list, he needs some devices from around this room. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_2507\" xml:space=\"preserve\">\n    <value>I’ll mark them on your HUD. Grab ’em and go. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_2508\" xml:space=\"preserve\">\n    <value>Are we about to disassemble the satellite dish?</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_2509\" xml:space=\"preserve\">\n    <value>Seems so. Some of the items on the list look like additional components…</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_2510\" xml:space=\"preserve\">\n    <value>…for the long-range transmitter we’re supposed to build. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_2511\" xml:space=\"preserve\">\n    <value>Some of the other stuff is… well, biological.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_2512\" xml:space=\"preserve\">\n    <value>I am not bringing Dr. Frankenstein any more body parts.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_2513\" xml:space=\"preserve\">\n    <value>The components should be sufficient. Trust me. I will transfer you the list.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_2514\" xml:space=\"preserve\">\n    <value>Whatever. Apollo, gather the components. I’ll wait for you at the lab entrance.  </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_2601\" xml:space=\"preserve\">\n    <value>I guess we’re all set.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_2602\" xml:space=\"preserve\">\n    <value>Confirmed. Come on back home, guys! </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_2701\" xml:space=\"preserve\">\n    <value>Wow, selling stuff from this place could make us millions!</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_2702\" xml:space=\"preserve\">\n    <value>Wait, what are those two ships? </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_2703\" xml:space=\"preserve\">\n    <value>We’ve got competition! Shoot them!</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_2704\" xml:space=\"preserve\">\n    <value>Seems some looters found their way in, too.  </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_2801\" xml:space=\"preserve\">\n    <value>That should be it. The path to the exit is clear.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_2802\" xml:space=\"preserve\">\n    <value>Be careful. I’m willing to bet those raiders have some friends. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_2901\" xml:space=\"preserve\">\n    <value>Damn. You were right. How do we get past them? </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_2902\" xml:space=\"preserve\">\n    <value>Sorry to being this up, but remember… Thomas’s base is just a few kilometers away. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_2903\" xml:space=\"preserve\">\n    <value>We can’t leave those raiders alive.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_2904\" xml:space=\"preserve\">\n    <value>Madelyn, is that really you?</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_2905\" xml:space=\"preserve\">\n    <value>Saying we have to kill someone instead of sparing his life?</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_2906\" xml:space=\"preserve\">\n    <value>Circumstances. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_2907\" xml:space=\"preserve\">\n    <value>Agreed. We need to crush those ships, otherwise they might endanger Thomas.  </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_3001\" xml:space=\"preserve\">\n    <value>Area clear. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_3002\" xml:space=\"preserve\">\n    <value>Nice job, guys! </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_3101\" xml:space=\"preserve\">\n    <value>Thomas, we’re on the way back. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_3102\" xml:space=\"preserve\">\n    <value>And we have the components you requested.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_3103\" xml:space=\"preserve\">\n    <value>Ok, ok. Bring them here.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_3104\" xml:space=\"preserve\">\n    <value>I’m sending you the data we downloaded from the computers. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_3105\" xml:space=\"preserve\">\n    <value>What next?</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_3106\" xml:space=\"preserve\">\n    <value>Give me some time to analyze the data. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_3107\" xml:space=\"preserve\">\n    <value>For now, would you mind helping me build that communication array?</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_3108\" xml:space=\"preserve\">\n    <value>A job that won’t get us killed? That’ll be a refreshing change.  </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_3201\" xml:space=\"preserve\">\n    <value>The array should work now!</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_3202\" xml:space=\"preserve\">\n    <value>It… works… Just…</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_3203\" xml:space=\"preserve\">\n    <value>What? Problems?</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_3204\" xml:space=\"preserve\">\n    <value>No, but I’m already picking up a signal.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_3205\" xml:space=\"preserve\">\n    <value>That might be our signal. I have several relays and communication channels open.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_3206\" xml:space=\"preserve\">\n    <value>No, that’s – not – it. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_3208\" xml:space=\"preserve\">\n    <value>It appears to be a distress signal. Sent earlier today. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_3209\" xml:space=\"preserve\">\n    <value>Periodically repeating. See for yourself.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_3210\" xml:space=\"preserve\">\n    <value>…This is… Christian community Last Hope. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_3211\" xml:space=\"preserve\">\n    <value>We are under attack. Slavers…</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_3212\" xml:space=\"preserve\">\n    <value>…we are requesting help! If anyone hears this, …</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_3213\" xml:space=\"preserve\">\n    <value>…please come to our assistance. Our coordinates are…</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_3214\" xml:space=\"preserve\">\n    <value>I’ve located the source of the signal.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_3215\" xml:space=\"preserve\">\n    <value>I suppose you want us to help them?</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_3216\" xml:space=\"preserve\">\n    <value>That’s your decision. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_3217\" xml:space=\"preserve\">\n    <value>The signal was sent several hours ago, so there’s probably no one alive anymore.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_3218\" xml:space=\"preserve\">\n    <value>Or they may have gotten help from someone else. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_3219\" xml:space=\"preserve\">\n    <value>Doubtful. Their base is so far from any civilized settlement…</value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_3220\" xml:space=\"preserve\">\n    <value>…it would be impossible for the signal to reach. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_3221\" xml:space=\"preserve\">\n    <value>It’s just a fluke that we received it. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoon2_3222\" xml:space=\"preserve\">\n    <value>It’s worth a try. We might be able to save some lives.  </value>\n  </data>\n  <data name=\"Dlg_WhitewolvesResearch_1000\" xml:space=\"preserve\">\n    <value>Here we go!</value>\n  </data>\n  <data name=\"Dlg_WhitewolvesResearch_1001\" xml:space=\"preserve\">\n    <value>This structure looks like one of those concentration camps…</value>\n  </data>\n  <data name=\"Dlg_WhitewolvesResearch_1002\" xml:space=\"preserve\">\n    <value>…the Nazis made during World War 2.</value>\n  </data>\n  <data name=\"Dlg_WhitewolvesResearch_1003\" xml:space=\"preserve\">\n    <value>It’s very close. I have seen many photos of those camps before.</value>\n  </data>\n  <data name=\"Dlg_WhitewolvesResearch_1004\" xml:space=\"preserve\">\n    <value>We need to get waste samples from outside.</value>\n  </data>\n  <data name=\"Dlg_WhitewolvesResearch_1005\" xml:space=\"preserve\">\n    <value>Valentin, Tarja – cover me!</value>\n  </data>\n  <data name=\"Dlg_WhitewolvesResearch_1006\" xml:space=\"preserve\">\n    <value>All looks well. It seems the area is clear. </value>\n  </data>\n  <data name=\"Dlg_WhitewolvesResearch_1007\" xml:space=\"preserve\">\n    <value>Head to the station and look for the inner part of the biomachine.</value>\n  </data>\n  <data name=\"Dlg_WhitewolvesResearch_1008\" xml:space=\"preserve\">\n    <value>And take samples of the materials they’re using.</value>\n  </data>\n  <data name=\"Dlg_WhitewolvesResearch_1009\" xml:space=\"preserve\">\n    <value>I’ll do my best, just I’m staying away from that slimy green shit.</value>\n  </data>\n  <data name=\"Dlg_WhitewolvesResearch_1010\" xml:space=\"preserve\">\n    <value>It wasn’t that bad.</value>\n  </data>\n  <data name=\"Dlg_WhitewolvesResearch_1011\" xml:space=\"preserve\">\n    <value>The hardest part is still ahead of you.</value>\n  </data>\n  <data name=\"Dlg_WhitewolvesResearch_1012\" xml:space=\"preserve\">\n    <value>This place sickens me. Just like the Reichists!</value>\n  </data>\n  <data name=\"Dlg_WhitewolvesResearch_1013\" xml:space=\"preserve\">\n    <value>I thought it was overtaken by separatists.</value>\n  </data>\n  <data name=\"Dlg_WhitewolvesResearch_1014\" xml:space=\"preserve\">\n    <value>Right, but do you think they started this all stuff?</value>\n  </data>\n  <data name=\"Dlg_WhitewolvesResearch_1015\" xml:space=\"preserve\">\n    <value>Whoever did it is pretty fucked up. </value>\n  </data>\n  <data name=\"Dlg_WhitewolvesResearch_1016\" xml:space=\"preserve\">\n    <value>Do we even have any clue who these separatists are?</value>\n  </data>\n  <data name=\"Dlg_WhitewolvesResearch_1017\" xml:space=\"preserve\">\n    <value>No idea. I’ll ask von Stauffenberg the next time we meet.</value>\n  </data>\n  <data name=\"Dlg_WhitewolvesResearch_1018\" xml:space=\"preserve\">\n    <value>They look like Reichists, quack like Reichists. </value>\n  </data>\n  <data name=\"Dlg_WhitewolvesResearch_1019\" xml:space=\"preserve\">\n    <value>Hard to tell the difference.</value>\n  </data>\n  <data name=\"Dlg_WhitewolvesResearch_1020\" xml:space=\"preserve\">\n    <value>This should be pretty straightforward. Just download the blueprint data.</value>\n  </data>\n  <data name=\"Dlg_WhitewolvesResearch_1021\" xml:space=\"preserve\">\n    <value>Is that all? Download the blueprints and… burn this place?</value>\n  </data>\n  <data name=\"Dlg_WhitewolvesResearch_1022\" xml:space=\"preserve\">\n    <value>We need several more components. At least according to the list from Stauffenberg.</value>\n  </data>\n  <data name=\"Dlg_WhitewolvesResearch_1023\" xml:space=\"preserve\">\n    <value>Fine. Let’s do those tasks ASAP, so we can get out of here.</value>\n  </data>\n  <data name=\"Dlg_WhitewolvesResearch_1024\" xml:space=\"preserve\">\n    <value>Now for the highlight of this evening’s entertainment.</value>\n  </data>\n  <data name=\"Dlg_WhitewolvesResearch_1025\" xml:space=\"preserve\">\n    <value>The fireworks display.</value>\n  </data>\n  <data name=\"Dlg_WhitewolvesResearch_1026\" xml:space=\"preserve\">\n    <value>I don’t understand why the Reich wants us to destroy this place.</value>\n  </data>\n  <data name=\"Dlg_WhitewolvesResearch_1027\" xml:space=\"preserve\">\n    <value>Can’t they use it themselves?</value>\n  </data>\n  <data name=\"Dlg_WhitewolvesResearch_1028\" xml:space=\"preserve\">\n    <value>They’re all about teaching lessons.</value>\n  </data>\n  <data name=\"Dlg_WhitewolvesResearch_1029\" xml:space=\"preserve\">\n    <value>Whatever.</value>\n  </data>\n  <data name=\"Dlg_WhitewolvesResearch_1030\" xml:space=\"preserve\">\n    <value>Be careful and aim at the lower exterior part of the biomachine.</value>\n  </data>\n  <data name=\"Dlg_WhitewolvesResearch_1031\" xml:space=\"preserve\">\n    <value>Do it from a safe distance – near the fence will be ok.</value>\n  </data>\n  <data name=\"Dlg_WhitewolvesResearch_1032\" xml:space=\"preserve\">\n    <value>Otherwise you’ll blow along with it.</value>\n  </data>\n  <data name=\"Dlg_WhitewolvesResearch_1033\" xml:space=\"preserve\">\n    <value>No cracks about blowing things, Tarja.</value>\n  </data>\n  <data name=\"Dlg_WhitewolvesResearch_1034\" xml:space=\"preserve\">\n    <value>You read my mind.</value>\n  </data>\n  <data name=\"Dlg_WhitewolvesResearch_1035\" xml:space=\"preserve\">\n    <value>It’s an easy read.</value>\n  </data>\n  <data name=\"Dlg_WhitewolvesResearch_1036\" xml:space=\"preserve\">\n    <value>Wow, that was more than I bargained for.</value>\n  </data>\n  <data name=\"Dlg_WhitewolvesResearch_1037\" xml:space=\"preserve\">\n    <value>Let’s blow something else up. You know, just for fun.</value>\n  </data>\n  <data name=\"Dlg_WhitewolvesResearch_1038\" xml:space=\"preserve\">\n    <value>Calm down, Tarja, one’s enough.</value>\n  </data>\n  <data name=\"Dlg_WhitewolvesResearch_1039\" xml:space=\"preserve\">\n    <value>Madelyn, don’t tell me the party’s over?</value>\n  </data>\n  <data name=\"Dlg_WhitewolvesResearch_1041\" xml:space=\"preserve\">\n    <value>Come on guys, come back to Sapho. A warm hangar and some cookies await.</value>\n  </data>\n  <data name=\"Dlg_WhitewolvesResearch_1042\" xml:space=\"preserve\">\n    <value>Hm. Cookies?</value>\n  </data>\n  <data name=\"Dlg_WhitewolvesResearch_1043\" xml:space=\"preserve\">\n    <value>You know. The synthetic stuff.</value>\n  </data>\n  <data name=\"Dlg_WhitewolvesResearch_1044\" xml:space=\"preserve\">\n    <value>Right now, everything sounds better than… biological stuff.</value>\n  </data>\n  <data name=\"Dlg_Laika_0302\" xml:space=\"preserve\">\n    <value>Do not underestimate these red lads.</value>\n  </data>\n  <data name=\"Dlg_Laika_1605\" xml:space=\"preserve\">\n    <value>Enjoy your last moments of life, pigs!</value>\n  </data>\n  <data name=\"Dlg_Laika_1606\" xml:space=\"preserve\">\n    <value>Dance, zalupa!</value>\n  </data>\n  <data name=\"Dlg_Laika_1607\" xml:space=\"preserve\">\n    <value>Damn, turrets are firing on us from all around!</value>\n  </data>\n  <data name=\"Dlg_Laika_1608\" xml:space=\"preserve\">\n    <value>We need to take out the generator. That’ll cut their power.</value>\n  </data>\n  <data name=\"Dlg_Laika_0303a\" xml:space=\"preserve\">\n    <value>I’ll pretend you didn’t say that.</value>\n  </data>\n  <data name=\"Dlg_Laika_0303b\" xml:space=\"preserve\">\n    <value>And I’ll pretend you didn’t say that.</value>\n  </data>\n  <data name=\"Dlg_Laika_0303c\" xml:space=\"preserve\">\n    <value>I should be fine here.</value>\n  </data>\n  <data name=\"Dlg_Laika_0304a\" xml:space=\"preserve\">\n    <value>…those fighters and turrets can barely scratch my paint.</value>\n  </data>\n  <data name=\"Dlg_Laika_0314a\" xml:space=\"preserve\">\n    <value>…are definitely not standard issue for the Russian army.</value>\n  </data>\n  <data name=\"Dlg_Laika_0400\" xml:space=\"preserve\">\n    <value>Quite the well-stocked marketplace!</value>\n  </data>\n  <data name=\"Dlg_Laika_0401\" xml:space=\"preserve\">\n    <value>Too bad they won’t sell us a thing now.</value>\n  </data>\n  <data name=\"Dlg_Laika_0712a\" xml:space=\"preserve\">\n    <value>…a maintenance fleet to cover all traces of your presence.</value>\n  </data>\n  <data name=\"Dlg_Laika_0810\" xml:space=\"preserve\">\n    <value>Use them for “persuasive purposes”?</value>\n  </data>\n  <data name=\"Dlg_Laika_0811\" xml:space=\"preserve\">\n    <value>Why not? It might work, it might not. Anyway, it won’t take long to try.</value>\n  </data>\n  <data name=\"Dlg_Laika_0812\" xml:space=\"preserve\">\n    <value>Agreed.</value>\n  </data>\n  <data name=\"Dlg_Laika_0901\" xml:space=\"preserve\">\n    <value>This thing could vaporize whole place in a nanosecond.</value>\n  </data>\n  <data name=\"Dlg_Laika_0902\" xml:space=\"preserve\">\n    <value>I guess it’s not surprising. After all, this is not a civilian trade station.</value>\n  </data>\n  <data name=\"Dlg_Laika_0903\" xml:space=\"preserve\">\n    <value>Right. Let’s move on to the second satellite.</value>\n  </data>\n  <data name=\"Dlg_Laika_0950\" xml:space=\"preserve\">\n    <value>Apollo, you need to use your hacking device to arm it.</value>\n  </data>\n  <data name=\"Dlg_Laika_1800\" xml:space=\"preserve\">\n    <value>Done.</value>\n  </data>\n  <data name=\"Dlg_Laika_1801\" xml:space=\"preserve\">\n    <value>Back to Sapho now.</value>\n  </data>\n  <data name=\"Dlg_Laika_1802\" xml:space=\"preserve\">\n    <value>Things are getting a little hairy here. Status?</value>\n  </data>\n  <data name=\"Dlg_Laika_1803\" xml:space=\"preserve\">\n    <value>We are going to try to, ehm, negotiate.</value>\n  </data>\n  <data name=\"Dlg_Laika_1804\" xml:space=\"preserve\">\n    <value>Attention, commander:</value>\n  </data>\n  <data name=\"Dlg_Laika_1805\" xml:space=\"preserve\">\n    <value>We found your surprise package – the nuclear one.</value>\n  </data>\n  <data name=\"Dlg_Laika_1805a\" xml:space=\"preserve\">\n    <value>It’s armed and my finger is on the trigger.</value>\n  </data>\n  <data name=\"Dlg_Laika_1806\" xml:space=\"preserve\">\n    <value>If you pursue us – do svidaniya.</value>\n  </data>\n  <data name=\"Dlg_Laika_1807\" xml:space=\"preserve\">\n    <value>Cease your fire and we will disarm the warhead when leaving the sector.</value>\n  </data>\n  <data name=\"Dlg_Laika_1808\" xml:space=\"preserve\">\n    <value>Will it work?</value>\n  </data>\n  <data name=\"Dlg_Laika_1809\" xml:space=\"preserve\">\n    <value>Who knows?</value>\n  </data>\n  <data name=\"Dlg_Laika_1900\" xml:space=\"preserve\">\n    <value>Marcus, Apollo, look behind you!</value>\n  </data>\n  <data name=\"Dlg_Laika_1901\" xml:space=\"preserve\">\n    <value>Ahm, so I’m guessing negotiations failed.</value>\n  </data>\n  <data name=\"Dlg_Laika_1902\" xml:space=\"preserve\">\n    <value>They let their own Trade station explode?</value>\n  </data>\n  <data name=\"Dlg_Laika_1903\" xml:space=\"preserve\">\n    <value>Why didn’t they send some engineers to disarm it?</value>\n  </data>\n  <data name=\"Dlg_Laika_1904\" xml:space=\"preserve\">\n    <value>I’m guessing catching us is more important. The question is why?</value>\n  </data>\n  <data name=\"Dlg_Laika_1905\" xml:space=\"preserve\">\n    <value>Apollo. The data you got. Does it lead anywhere?</value>\n  </data>\n  <data name=\"Dlg_Laika_1906\" xml:space=\"preserve\">\n    <value>I seem to have two clues.</value>\n  </data>\n  <data name=\"Dlg_Laika_1907\" xml:space=\"preserve\">\n    <value>A name of some scientist, Thomas Barth…</value>\n  </data>\n  <data name=\"Dlg_Laika_1908\" xml:space=\"preserve\">\n    <value>And coordinates of a base located within Damien Dust Field.</value>\n  </data>\n  <data name=\"Dlg_Laika_1909\" xml:space=\"preserve\">\n    <value>Thomas Barth?</value>\n  </data>\n  <data name=\"Dlg_Laika_1910\" xml:space=\"preserve\">\n    <value>You know him? This Barth guy?</value>\n  </data>\n  <data name=\"Dlg_Laika_1911\" xml:space=\"preserve\">\n    <value>Sure! I’m setting the course right now.</value>\n  </data>\n  <data name=\"Dlg_Laika_1912\" xml:space=\"preserve\">\n    <value>I hope you like him. I’ll tell you more on the way.</value>\n  </data>\n  <data name=\"Dlg_Rift_2000\" xml:space=\"preserve\">\n    <value>I still can’t believe he’s gone.</value>\n  </data>\n  <data name=\"Dlg_Rift_2001\" xml:space=\"preserve\">\n    <value>I know. But the best thing we can do is to finish what we started… Together.</value>\n  </data>\n  <data name=\"Dlg_Rift_2002\" xml:space=\"preserve\">\n    <value>Continue with this insane adventure? Lose more people?</value>\n  </data>\n  <data name=\"Dlg_Rift_2003\" xml:space=\"preserve\">\n    <value>So next time it’s you, or Tarja, or Valentin, or me?</value>\n  </data>\n  <data name=\"Dlg_Rift_2004\" xml:space=\"preserve\">\n    <value>Madelyn, calm down. We all chose this path voluntarily.</value>\n  </data>\n  <data name=\"Dlg_Rift_2005\" xml:space=\"preserve\">\n    <value>Marcus knew about the risks, just like we did.</value>\n  </data>\n  <data name=\"Dlg_Rift_2007\" xml:space=\"preserve\">\n    <value>I… I know, just… ok, let’s go on.</value>\n  </data>\n  <data name=\"Dlg_Rift_2008\" xml:space=\"preserve\">\n    <value>Apollo, head to the coordinates I just sent you.</value>\n  </data>\n  <data name=\"Dlg_Rift_2009\" xml:space=\"preserve\">\n    <value>On my way. And… Madelyn? Thanks.</value>\n  </data>\n  <data name=\"Dlg_Rime_0101\" xml:space=\"preserve\">\n    <value>Rime! The heart of the OmniCorp! </value>\n  </data>\n  <data name=\"Dlg_Rime_0102\" xml:space=\"preserve\">\n    <value>This guy we’re after, this Francis Reef…</value>\n  </data>\n  <data name=\"Dlg_Rime_0103\" xml:space=\"preserve\">\n    <value>Yeah?</value>\n  </data>\n  <data name=\"Dlg_Rime_0104\" xml:space=\"preserve\">\n    <value>Madelyn, you have some more info on him?</value>\n  </data>\n  <data name=\"Dlg_Rime_0105\" xml:space=\"preserve\">\n    <value>Not much. Classified OC personnel, 2nd security circle.</value>\n  </data>\n  <data name=\"Dlg_Rime_0106\" xml:space=\"preserve\">\n    <value>Employee file says: Francis Reef, born 2045, OmniCorp citizen,</value>\n  </data>\n  <data name=\"Dlg_Rime_0107\" xml:space=\"preserve\">\n    <value>…Assistant Director of Research and Development. </value>\n  </data>\n  <data name=\"Dlg_Rime_0108\" xml:space=\"preserve\">\n    <value>No other data in the channels I checked. </value>\n  </data>\n  <data name=\"Dlg_Rime_0109\" xml:space=\"preserve\">\n    <value>The OmniCorp guys must keep a close eye on him. </value>\n  </data>\n  <data name=\"Dlg_Rime_0110\" xml:space=\"preserve\">\n    <value>Time to chat him up. Head to the Research Quadrant. </value>\n  </data>\n  <data name=\"Dlg_Rime_0111\" xml:space=\"preserve\">\n    <value>Research Quadrant?</value>\n  </data>\n  <data name=\"Dlg_Rime_0112\" xml:space=\"preserve\">\n    <value>First time in Rime, Valentin?</value>\n  </data>\n  <data name=\"Dlg_Rime_0113\" xml:space=\"preserve\">\n    <value>OmniCorp is divided into four parts, like four segments of a huge… donut. </value>\n  </data>\n  <data name=\"Dlg_Rime_0114\" xml:space=\"preserve\">\n    <value>A quarter of this big-ass bitch is a research department?</value>\n  </data>\n  <data name=\"Dlg_Rime_0115\" xml:space=\"preserve\">\n    <value>Kind of. I was stuck in here for months once, doing some errands for a client.</value>\n  </data>\n  <data name=\"Dlg_Rime_0116\" xml:space=\"preserve\">\n    <value>Interesting city. </value>\n  </data>\n  <data name=\"Dlg_Rime_0117\" xml:space=\"preserve\">\n    <value>Looks sterile from the outside, but has its “underbelly” –</value>\n  </data>\n  <data name=\"Dlg_Rime_0118\" xml:space=\"preserve\">\n    <value>bars, casinos, “houses of ill repute”. </value>\n  </data>\n  <data name=\"Dlg_Rime_0119\" xml:space=\"preserve\">\n    <value>I don’t think we’re going to have time for that</value>\n  </data>\n  <data name=\"Dlg_Rime_0120\" xml:space=\"preserve\">\n    <value>Don’t underestimate OC officials.</value>\n  </data>\n  <data name=\"Dlg_Rime_0121\" xml:space=\"preserve\">\n    <value>Like the city, they look sterile and proper from the outside, but underneath… </value>\n  </data>\n  <data name=\"Dlg_Rime_0122\" xml:space=\"preserve\">\n    <value>I get what you’re saying. </value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1000\" xml:space=\"preserve\">\n    <value>Huge and pathetic. We must be in Russia!</value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1001\" xml:space=\"preserve\">\n    <value>Thanks for reminding me. The sooner we finish this, the sooner we can leave.</value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1002\" xml:space=\"preserve\">\n    <value>So what’s the plan? Just fly there, shoot everything, plant the detector, and scram? </value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1003\" xml:space=\"preserve\">\n    <value>Sort of…</value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1004\" xml:space=\"preserve\">\n    <value>Tarja, if you say, “Aye, matey”, I’m going to have to kill you.</value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1005\" xml:space=\"preserve\">\n    <value>This building is heavily guarded and full of turrets.</value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1006\" xml:space=\"preserve\">\n    <value>We can’t just knock on the front door – see that side entrance? </value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1007\" xml:space=\"preserve\">\n    <value>OK, got it. Tarja, Valentin: Let’s move in and place the detector fast. </value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1008\" xml:space=\"preserve\">\n    <value>Roger that!</value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1009\" xml:space=\"preserve\">\n    <value>The most important part of the base and you can access it from the backdoor.</value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1010\" xml:space=\"preserve\">\n    <value>I don’t get the Russian mentality. </value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1011\" xml:space=\"preserve\">\n    <value>Stay back! It’s highly radioactive!</value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1012\" xml:space=\"preserve\">\n    <value>Not funny… Find the base entrance. Please, hurry, I’ve already shot down two guards. </value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1013\" xml:space=\"preserve\">\n    <value>Now find a computer or security hub, hack it and send me back the broadcast frequency. </value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1014\" xml:space=\"preserve\">\n    <value>I have to prepare the detector device so it will be compatible with the Russian signal. </value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1015\" xml:space=\"preserve\">\n    <value>Clever! God, I hate Russian ships. So ugly and…</value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1016\" xml:space=\"preserve\">\n    <value>Just shut up and shoot.</value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1017\" xml:space=\"preserve\">\n    <value>Here it is! </value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1018\" xml:space=\"preserve\">\n    <value>If it’s same security level as that nuclear generator, we’ll be back for tea at five! </value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1022\" xml:space=\"preserve\">\n    <value>I can access the signal, but it seems encrypted. Madelyn?</value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1023\" xml:space=\"preserve\">\n    <value>You’re right. It looks like advanced military coding.</value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1024\" xml:space=\"preserve\">\n    <value>We don’t have a chance of decrypting it ourselves. </value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1025\" xml:space=\"preserve\">\n    <value>Why would they…? Hold on…</value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1026\" xml:space=\"preserve\">\n    <value>I just got a call. Some stranger is watching us. </value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1027\" xml:space=\"preserve\">\n    <value>He wants to meet us. Here are his coordinates. </value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1028\" xml:space=\"preserve\">\n    <value>Can we trust him? Who is he?</value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1029\" xml:space=\"preserve\">\n    <value>He said he can help. That’s all.</value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1030\" xml:space=\"preserve\">\n    <value>Well, then I guess he’s fine. </value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1031\" xml:space=\"preserve\">\n    <value>Greetings, strangers! I have a deal to propose.</value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1032\" xml:space=\"preserve\">\n    <value>Hey, what are you doing on our private channel?</value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1033\" xml:space=\"preserve\">\n    <value>Speaking to you. I have information about code breaking… Isn’t that what you want?</value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1034\" xml:space=\"preserve\">\n    <value>OK, so what do YOU want out of this?</value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1035\" xml:space=\"preserve\">\n    <value>Just meet me here, we’ll discuss it personally. </value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1036\" xml:space=\"preserve\">\n    <value>Welcome to my humble commode. My name is Volodia. </value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1037\" xml:space=\"preserve\">\n    <value>Look at those shipboard screens: that is small part of your desired code. </value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1038\" xml:space=\"preserve\">\n    <value>Do you wish to have the rest?</value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1039\" xml:space=\"preserve\">\n    <value>Let’s make it quick: what do you want from us?</value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1040\" xml:space=\"preserve\">\n    <value>Straightforward and lacking nonsense, I like this.</value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1041\" xml:space=\"preserve\">\n    <value>You will steal some military items for me. </value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1042\" xml:space=\"preserve\">\n    <value>This keeps getting better and better. </value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1043\" xml:space=\"preserve\">\n    <value>Anything more specific than “military items”? </value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1044\" xml:space=\"preserve\">\n    <value>Here, these are the coordinates. You will know when you get there.</value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1045\" xml:space=\"preserve\">\n    <value>After you finish, I will send you more coordinates where we will meet.</value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1046\" xml:space=\"preserve\">\n    <value>Hey, look at that! Isn’t that a nuke? </value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1047\" xml:space=\"preserve\">\n    <value>Don’t touch it! Just take the cargo.</value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1048\" xml:space=\"preserve\">\n    <value>Great! Meet me at the solar power plant. Try not to get blown up with that box on board! </value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1049\" xml:space=\"preserve\">\n    <value>Ehm… So I guess you’ve been watching us the whole time?</value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1050\" xml:space=\"preserve\">\n    <value>Call it “business insurance”.</value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1051\" xml:space=\"preserve\">\n    <value>Who are you?</value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1052\" xml:space=\"preserve\">\n    <value>Does it matter?</value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1053\" xml:space=\"preserve\">\n    <value>Maybe I’ll just throw that stupid box of yours overboard and watch it fly away… </value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1054\" xml:space=\"preserve\">\n    <value>And never learn the code… Think about it. What’s the problem, do you feel manipulated? </value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1055\" xml:space=\"preserve\">\n    <value>A little bit… </value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1056\" xml:space=\"preserve\">\n    <value>That’s because you ARE! </value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1057\" xml:space=\"preserve\">\n    <value>We are all manipulated and it doesn’t matter on which side we’re standing. </value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1058\" xml:space=\"preserve\">\n    <value>At least tell us: which side are you standing on? </value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1059\" xml:space=\"preserve\">\n    <value>I don’t care about Russia, I don’t care about you. I’m on my own side.  </value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1060\" xml:space=\"preserve\">\n    <value>Didn’t I tell you Russians are pathetic? </value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1061\" xml:space=\"preserve\">\n    <value>Enough talk. Bring that cargo to me so we can all leave this sector. </value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1062\" xml:space=\"preserve\">\n    <value>Here’s your cargo.</value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1063\" xml:space=\"preserve\">\n    <value>And here is your code. </value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1064\" xml:space=\"preserve\">\n    <value>One last question: are you… </value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1065\" xml:space=\"preserve\">\n    <value>Red alert! Enemy mother ship approaching! Looks like government commando! </value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1066\" xml:space=\"preserve\">\n    <value>Bliať! </value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1067\" xml:space=\"preserve\">\n    <value>…a spy? </value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1068\" xml:space=\"preserve\">\n    <value>This is the Federation guard. Sergei Romanov speaking. Surrender immediately!</value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1069\" xml:space=\"preserve\">\n    <value>NEVER! Come on, comrades, show them we know how to fight! </value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1070\" xml:space=\"preserve\">\n    <value>Engage the enemy! </value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1071\" xml:space=\"preserve\">\n    <value>Oh… my… god… </value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1072\" xml:space=\"preserve\">\n    <value>There’s too many of them!</value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1073\" xml:space=\"preserve\">\n    <value>Keep your distance from that mother ship!</value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1074\" xml:space=\"preserve\">\n    <value>We’ll try. Tarja, watch your back!</value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1075\" xml:space=\"preserve\">\n    <value>Enough! Get back to the transmitter before another commando approaches. </value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1076\" xml:space=\"preserve\">\n    <value>We don’t have much time. Let’s hope we have the right decryption. Watch out for turrets! </value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1077\" xml:space=\"preserve\">\n    <value>If this doesn’t work, I swear I will find Volodia’s corpse and sell it for dog food!</value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1078\" xml:space=\"preserve\">\n    <value>It’s working! </value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1079\" xml:space=\"preserve\">\n    <value>Great, send the data back to me and find another hub to upload our signal data.</value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1080\" xml:space=\"preserve\">\n    <value>Signal uploading!</value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1081\" xml:space=\"preserve\">\n    <value>Now find the main room entrance. We have to place the device and start triangulating.</value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1082\" xml:space=\"preserve\">\n    <value>No chance to get inside from here. There’s some kind of power field.</value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1083\" xml:space=\"preserve\">\n    <value>We must find another way from inside. </value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1084\" xml:space=\"preserve\">\n    <value>Here it is!</value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1085\" xml:space=\"preserve\">\n    <value>Place the device on the transmitter.</value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1086\" xml:space=\"preserve\">\n    <value>Done!</value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1087\" xml:space=\"preserve\">\n    <value>…and working! Great job! Now, please return.</value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1088\" xml:space=\"preserve\">\n    <value>There are still some power-plugged doors, we have to open them from a hub. </value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1089\" xml:space=\"preserve\">\n    <value>We made it!</value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1092\" xml:space=\"preserve\">\n    <value>Before you proceed with the placement of the last detector at EAC…</value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1093\" xml:space=\"preserve\">\n    <value>…I suggest you get your brother out of prison.</value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1094\" xml:space=\"preserve\">\n    <value>That’s not funny, Thomas. Why would you say such a thing? </value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1095\" xml:space=\"preserve\">\n    <value>You haven’t watched the news lately?</value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1096\" xml:space=\"preserve\">\n    <value>There was an interview with a man they claim killed all the people in New Landswick… </value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1097\" xml:space=\"preserve\">\n    <value>…and blew up the peaceful Russian trade station Laika. </value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1098\" xml:space=\"preserve\">\n    <value>You… you mean Marcus is alive? </value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1099\" xml:space=\"preserve\">\n    <value>I am sure. I checked some black market data sources. </value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1100\" xml:space=\"preserve\">\n    <value>Marcus Rainier is on the prisoners’ list at Reway, the toughest of EAC prisons. </value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1101\" xml:space=\"preserve\">\n    <value>Sentenced to death, by the way. </value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1102\" xml:space=\"preserve\">\n    <value>To be executed in about three or four days – the data is not clear on this point.</value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1103\" xml:space=\"preserve\">\n    <value>So we might see the big boss again? </value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1104\" xml:space=\"preserve\">\n    <value>Possibly. Just don’t try anything stupid like a direct assault on Reway. </value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1105\" xml:space=\"preserve\">\n    <value>You can’t do this job on your own.</value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1106\" xml:space=\"preserve\">\n    <value>I’m… guessing you already have a plan, right? </value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1107\" xml:space=\"preserve\">\n    <value>Meet Colonel von Stauffenberg in Reichstag. He is your key to freeing Marcus.</value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1108\" xml:space=\"preserve\">\n    <value>You’re suggesting we ally ourselves with the Nazis?</value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1109\" xml:space=\"preserve\">\n    <value>Reichists. Yes. The end is more important than the means – at least in this case. </value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1110\" xml:space=\"preserve\">\n    <value>What in God’s name will von Stauffenberg want from us in return? </value>\n  </data>\n  <data name=\"Dlg_RussianTransmitter_1111\" xml:space=\"preserve\">\n    <value>I don’t think God’s name will enter into it.</value>\n  </data>\n  <data name=\"Dlg_Rime_0201\" xml:space=\"preserve\">\n    <value>This should be it. Reef’s residence.</value>\n  </data>\n  <data name=\"Dlg_Rime_0202\" xml:space=\"preserve\">\n    <value>Shall we knock on the–</value>\n  </data>\n  <data name=\"Dlg_Rime_0203\" xml:space=\"preserve\">\n    <value>Greetings, gentlemen. </value>\n  </data>\n  <data name=\"Dlg_Rime_0204\" xml:space=\"preserve\">\n    <value>My name is Francis Reef, Assistant Director of OC Research and Development.</value>\n  </data>\n  <data name=\"Dlg_Rime_0205\" xml:space=\"preserve\">\n    <value>What exactly brings you to pay me a visit?</value>\n  </data>\n  <data name=\"Dlg_Rime_0206\" xml:space=\"preserve\">\n    <value>We need a genius technician. Maybe you know of one.</value>\n  </data>\n  <data name=\"Dlg_Rime_0207\" xml:space=\"preserve\">\n    <value>Someone able to construct a metal detector…</value>\n  </data>\n  <data name=\"Dlg_Rime_0208\" xml:space=\"preserve\">\n    <value>…for a substance far beyond the knowledge of modern science. </value>\n  </data>\n  <data name=\"Dlg_Rime_0209\" xml:space=\"preserve\">\n    <value>Hm… And what does this technician get in return?</value>\n  </data>\n  <data name=\"Dlg_Rime_0210\" xml:space=\"preserve\">\n    <value>The thrill of being the first person ever to experiment with an alien substance. </value>\n  </data>\n  <data name=\"Dlg_Rime_0211\" xml:space=\"preserve\">\n    <value>I need to think this out. You’re mercenaries, I take it?</value>\n  </data>\n  <data name=\"Dlg_Rime_0212\" xml:space=\"preserve\">\n    <value>We prefer the term freelancer. </value>\n  </data>\n  <data name=\"Dlg_Rime_0213\" xml:space=\"preserve\">\n    <value>Ok. Here’s the deal. You do me a favor, I’ll do you a favor.</value>\n  </data>\n  <data name=\"Dlg_Rime_0214\" xml:space=\"preserve\">\n    <value>Or let’s just say – you need to convince me you’re not just low-level pirates. </value>\n  </data>\n  <data name=\"Dlg_Rime_0216\" xml:space=\"preserve\">\n    <value>You want an exceptional scientist for an extraordinary task? </value>\n  </data>\n  <data name=\"Dlg_Rime_0217\" xml:space=\"preserve\">\n    <value>Fine, but I work only with other exceptional people. </value>\n  </data>\n  <data name=\"Dlg_Rime_0218\" xml:space=\"preserve\">\n    <value>What’s this favor?</value>\n  </data>\n  <data name=\"Dlg_Rime_0219\" xml:space=\"preserve\">\n    <value>I have a “political” opponent in the company hierarchy. Jim Raynolds.</value>\n  </data>\n  <data name=\"Dlg_Rime_0220\" xml:space=\"preserve\">\n    <value>He is attracting a great deal of cash for his campaign. And he hates me.</value>\n  </data>\n  <data name=\"Dlg_Rime_0221\" xml:space=\"preserve\">\n    <value>Why is not important. But I need something on him. </value>\n  </data>\n  <data name=\"Dlg_Rime_0222\" xml:space=\"preserve\">\n    <value>All the private detectives I’ve hired have found nothing. </value>\n  </data>\n  <data name=\"Dlg_Rime_0223\" xml:space=\"preserve\">\n    <value>If I am to advance in my career, I need to be able to blackmail Raynolds. </value>\n  </data>\n  <data name=\"Dlg_Rime_0224\" xml:space=\"preserve\">\n    <value>What – you want us to kidnap his wife and daughter?</value>\n  </data>\n  <data name=\"Dlg_Rime_0225\" xml:space=\"preserve\">\n    <value>Nothing that… personal. </value>\n  </data>\n  <data name=\"Dlg_Rime_0226\" xml:space=\"preserve\">\n    <value>There is a large underground supply of illegal alcohol in Rime. </value>\n  </data>\n  <data name=\"Dlg_Rime_0227\" xml:space=\"preserve\">\n    <value>That means tax evasion, to the tune of millions of credits a month.  </value>\n  </data>\n  <data name=\"Dlg_Rime_0228\" xml:space=\"preserve\">\n    <value>In the industrial quadrant there’s a place called the Duplex bar.</value>\n  </data>\n  <data name=\"Dlg_Rime_0229\" xml:space=\"preserve\">\n    <value>It definitely has some connection to the black market.</value>\n  </data>\n  <data name=\"Dlg_Rime_0230\" xml:space=\"preserve\">\n    <value>Go there, keep your eyes open. Track the source of the alcohol.</value>\n  </data>\n  <data name=\"Dlg_Rime_0231\" xml:space=\"preserve\">\n    <value>Then… steal as many cargo boxes of it as you can.</value>\n  </data>\n  <data name=\"Dlg_Rime_0232\" xml:space=\"preserve\">\n    <value>Drop them inside Raynolds’s diplomatic vessel. That’s it. I’ll take care of the rest.</value>\n  </data>\n  <data name=\"Dlg_Rime_0233\" xml:space=\"preserve\">\n    <value>Hmm, that monologue was cued up for quite some time.</value>\n  </data>\n  <data name=\"Dlg_Rime_0234\" xml:space=\"preserve\">\n    <value>Ok, we’re on it. </value>\n  </data>\n  <data name=\"Dlg_Rime_0235\" xml:space=\"preserve\">\n    <value>Mr. Reef, check the data I just transmitted you. You might find it… interesting. </value>\n  </data>\n  <data name=\"Dlg_Rime_0236\" xml:space=\"preserve\">\n    <value>Very well. </value>\n  </data>\n  <data name=\"Dlg_SlaverBase2_01_01\" xml:space=\"preserve\">\n    <value>What a lovely place! Reconsidering your vacation plans?</value>\n  </data>\n  <data name=\"Dlg_SlaverBase2_01_02\" xml:space=\"preserve\">\n    <value>Let’s give this place a facelift! Guys, load up your guns!</value>\n  </data>\n  <data name=\"Dlg_SlaverBase2_02_01\" xml:space=\"preserve\">\n    <value>First, you have to completely destroy their air defense. Keep a safe distance.</value>\n  </data>\n  <data name=\"Dlg_SlaverBase2_02_02\" xml:space=\"preserve\">\n    <value>Let’s see who can destroy the most turrets in the shortest time!</value>\n  </data>\n  <data name=\"Dlg_SlaverBase2_02_03\" xml:space=\"preserve\">\n    <value>You already lost…</value>\n  </data>\n  <data name=\"Dlg_SlaverBase2_03_01\" xml:space=\"preserve\">\n    <value>Oy! Stop shooting! You can voluntarily surrender!</value>\n  </data>\n  <data name=\"Dlg_SlaverBase2_03_02\" xml:space=\"preserve\">\n    <value>What’s Option B?</value>\n  </data>\n  <data name=\"Dlg_SlaverBase2_03_03\" xml:space=\"preserve\">\n    <value>We can tear your ships apart and sell them for scrap metal…</value>\n  </data>\n  <data name=\"Dlg_SlaverBase2_03_04\" xml:space=\"preserve\">\n    <value>We’ll go with Option C!</value>\n  </data>\n  <data name=\"Dlg_SlaverBase2_03_05\" xml:space=\"preserve\">\n    <value>Unleash the dogs! </value>\n  </data>\n  <data name=\"Dlg_SlaverBase2_04_01\" xml:space=\"preserve\">\n    <value>Now we have to unlock the cells. Find the hubs at slaver headquarters.</value>\n  </data>\n  <data name=\"Dlg_SlaverBase2_04_02\" xml:space=\"preserve\">\n    <value>Copy that!</value>\n  </data>\n  <data name=\"Dlg_SlaverBase2_05_03\" xml:space=\"preserve\">\n    <value>Now go do the second one. </value>\n  </data>\n  <data name=\"Dlg_SlaverBase2_06_01\" xml:space=\"preserve\">\n    <value>Now we can free the prisoners!</value>\n  </data>\n  <data name=\"Dlg_SlaverBase2_06_02\" xml:space=\"preserve\">\n    <value>Not yet. See those power grids? They’re still working. </value>\n  </data>\n  <data name=\"Dlg_SlaverBase2_06_03\" xml:space=\"preserve\">\n    <value>I guess we only unlocked the first level of security. </value>\n  </data>\n  <data name=\"Dlg_SlaverBase2_06_04\" xml:space=\"preserve\">\n    <value>Right. But my scanners can’t find any other hub.</value>\n  </data>\n  <data name=\"Dlg_SlaverBase2_06_05\" xml:space=\"preserve\">\n    <value>We don’t need a hub. Where’s the generator? No power – no grids. </value>\n  </data>\n  <data name=\"Dlg_SlaverBase2_06_06\" xml:space=\"preserve\">\n    <value>Clever boy!</value>\n  </data>\n  <data name=\"Dlg_SlaverBase2_07_01\" xml:space=\"preserve\">\n    <value>The generator. Let’s cook it up!</value>\n  </data>\n  <data name=\"Dlg_SlaverBase2_07_02\" xml:space=\"preserve\">\n    <value>Fried or mashed?</value>\n  </data>\n  <data name=\"Dlg_SlaverBase2_07_03\" xml:space=\"preserve\">\n    <value>Both.</value>\n  </data>\n  <data name=\"Dlg_SlaverBase2_08_01\" xml:space=\"preserve\">\n    <value>No other security systems detected. The prisoners are free!</value>\n  </data>\n  <data name=\"Dlg_SlaverBase2_08_02\" xml:space=\"preserve\">\n    <value>I love being the good guy.</value>\n  </data>\n  <data name=\"Dlg_SlaverBase2_08_03\" xml:space=\"preserve\">\n    <value>We need to evacuate everyone. Have you seen any transports? </value>\n  </data>\n  <data name=\"Dlg_SlaverBase2_08_04\" xml:space=\"preserve\">\n    <value>Only two. Not enough for everybody, but I’m sure the Templars will send more. </value>\n  </data>\n  <data name=\"Dlg_SlaverBase2_08_05\" xml:space=\"preserve\">\n    <value>We just need to physically open all the prison cells.</value>\n  </data>\n  <data name=\"Dlg_SlaverBase2_09_01\" xml:space=\"preserve\">\n    <value>First prisoner cell unlocked!</value>\n  </data>\n  <data name=\"Dlg_SlaverBase2_10_01\" xml:space=\"preserve\">\n    <value>Second prisoner cell open. These guys are free to go. </value>\n  </data>\n  <data name=\"Dlg_SlaverBase2_10_02\" xml:space=\"preserve\">\n    <value>I already sent a message to the Templars. </value>\n  </data>\n  <data name=\"Dlg_SlaverBase2_10_03\" xml:space=\"preserve\">\n    <value>They’re sending transport ships to pick them up. </value>\n  </data>\n  <data name=\"Dlg_SlaverBase2_11_01\" xml:space=\"preserve\">\n    <value>Third prisoner cell unlocked. </value>\n  </data>\n  <data name=\"Dlg_SlaverBase2_11_02\" xml:space=\"preserve\">\n    <value>Two more remaining. </value>\n  </data>\n  <data name=\"Dlg_SlaverBase2_12_01\" xml:space=\"preserve\">\n    <value>Fourth prisoner group is free. One more and we’re done here. </value>\n  </data>\n  <data name=\"Dlg_SlaverBase2_13_01\" xml:space=\"preserve\">\n    <value>Final cell open. That was it. We’ve unlocked all of them. </value>\n  </data>\n  <data name=\"Dlg_SlaverBase2_13_02\" xml:space=\"preserve\">\n    <value>Now what? We’re supposed to leave these poor people here to fend for themselves?</value>\n  </data>\n  <data name=\"Dlg_SlaverBase2_13_03\" xml:space=\"preserve\">\n    <value>They can make it out on their own and wait for the Templar transports.</value>\n  </data>\n  <data name=\"Dlg_SlaverBase2_13_04\" xml:space=\"preserve\">\n    <value>Madelyn, am I right?</value>\n  </data>\n  <data name=\"Dlg_SlaverBase2_13_05\" xml:space=\"preserve\">\n    <value>Confirmed. </value>\n  </data>\n  <data name=\"Dlg_SlaverBase2_13_06\" xml:space=\"preserve\">\n    <value>Everyone should be safe for now. </value>\n  </data>\n  <data name=\"Dlg_SlaverBase2_13_07\" xml:space=\"preserve\">\n    <value>There aren’t many slavers left here, at least till their reinforcements arrive.</value>\n  </data>\n  <data name=\"Dlg_SlaverBase2_13_08\" xml:space=\"preserve\">\n    <value>Guys! The first Templar transport ships confirmed their arrival within several minutes.</value>\n  </data>\n  <data name=\"Dlg_SlaverBase2_13_09\" xml:space=\"preserve\">\n    <value>They even have some escort ships with them.</value>\n  </data>\n  <data name=\"Dlg_SlaverBase2_13_10\" xml:space=\"preserve\">\n    <value>We’re fine, then. Mission successful. Let’s get back to Valiant and collect our reward.</value>\n  </data>\n  <data name=\"Dlg_FortValiantA_0100\" xml:space=\"preserve\">\n    <value>Majestic Fort Valiant! Right before our very eyes!</value>\n  </data>\n  <data name=\"Dlg_FortValiantA_0101\" xml:space=\"preserve\">\n    <value>I’ve always dreamt of being a knight. Rescuing dragons, slaying princesses…</value>\n  </data>\n  <data name=\"Dlg_FortValiantA_0102\" xml:space=\"preserve\">\n    <value>Sounds like you had a plan!</value>\n  </data>\n  <data name=\"Dlg_FortValiantA_0103\" xml:space=\"preserve\">\n    <value>Okay, back to reality: Any idea who we should talk to about the artifact?</value>\n  </data>\n  <data name=\"Dlg_FortValiantA_0104\" xml:space=\"preserve\">\n    <value>We need to meet with high-ranking Templar officials and that won’t be easy. </value>\n  </data>\n  <data name=\"Dlg_FortValiantA_0105\" xml:space=\"preserve\">\n    <value>Impossible might be a better word.</value>\n  </data>\n  <data name=\"Dlg_FortValiantA_0106\" xml:space=\"preserve\">\n    <value>So what do you suggest, guys?</value>\n  </data>\n  <data name=\"Dlg_FortValiantA_0107\" xml:space=\"preserve\">\n    <value>Hm… asking at the gates, maybe?</value>\n  </data>\n  <data name=\"Dlg_FortValiantA_0108\" xml:space=\"preserve\">\n    <value>What would we do without you, Madelyn?</value>\n  </data>\n  <data name=\"Dlg_FortValiantA_0109\" xml:space=\"preserve\">\n    <value>Templars hire contractors to do dirty work for them. </value>\n  </data>\n  <data name=\"Dlg_FortValiantA_0110\" xml:space=\"preserve\">\n    <value>You know – hunting down pirates and slavers. </value>\n  </data>\n  <data name=\"Dlg_FortValiantA_0111\" xml:space=\"preserve\">\n    <value>Do one or two jobs for them…</value>\n  </data>\n  <data name=\"Dlg_FortValiantA_0112\" xml:space=\"preserve\">\n    <value>…and we might get a step closer to a meeting with the patriarchs.</value>\n  </data>\n  <data name=\"Dlg_FortValiantA_0113\" xml:space=\"preserve\">\n    <value>That… would take some time. But at least it’s a plan. </value>\n  </data>\n  <data name=\"Dlg_FortValiantA_0114\" xml:space=\"preserve\">\n    <value>And besides meeting with the higher-ups…</value>\n  </data>\n  <data name=\"Dlg_FortValiantA_0115\" xml:space=\"preserve\">\n    <value>…we can get our hands on some cash as well and some cool Templar gadgets.</value>\n  </data>\n  <data name=\"Dlg_FortValiantA_0200\" xml:space=\"preserve\">\n    <value>Hail visitors! Please, state the nature of your business.</value>\n  </data>\n  <data name=\"Dlg_FortValiantA_0201\" xml:space=\"preserve\">\n    <value>We are mercenaries. Offering services for good cause at decent rates.</value>\n  </data>\n  <data name=\"Dlg_FortValiantA_0202\" xml:space=\"preserve\">\n    <value>Acknowledged. </value>\n  </data>\n  <data name=\"Dlg_FortValiantA_0203\" xml:space=\"preserve\">\n    <value>Proceed to the Hall of Swords and meet with Captain Cedric of the Protectors division. </value>\n  </data>\n  <data name=\"Dlg_FortValiantA_0204\" xml:space=\"preserve\">\n    <value>Much gratitude, my friend! </value>\n  </data>\n  <data name=\"Dlg_FortValiantA_0300\" xml:space=\"preserve\">\n    <value>Greetings. You are the new recruits?</value>\n  </data>\n  <data name=\"Dlg_FortValiantA_0301\" xml:space=\"preserve\">\n    <value>Independent contractors. </value>\n  </data>\n  <data name=\"Dlg_FortValiantA_0302\" xml:space=\"preserve\">\n    <value>Good, good. We have several problems in remote sectors which…</value>\n  </data>\n  <data name=\"Dlg_FortValiantA_0303\" xml:space=\"preserve\">\n    <value>…for regulous reasons we cannot handle with our regular troops.</value>\n  </data>\n  <data name=\"Dlg_FortValiantA_0304\" xml:space=\"preserve\">\n    <value>Recently, there have been numerous slaver raids in the asteroid fields around…</value>\n  </data>\n  <data name=\"Dlg_FortValiantA_0305\" xml:space=\"preserve\">\n    <value>…sector Z7 of the Jupiter belt.</value>\n  </data>\n  <data name=\"Dlg_FortValiantA_0306\" xml:space=\"preserve\">\n    <value>We have the rumored location of a slaver base. If you accept this assignment, …</value>\n  </data>\n  <data name=\"Dlg_FortValiantA_0307\" xml:space=\"preserve\">\n    <value>…you will travel there, put a stop to the slavers’ vicious activity and free the captives.</value>\n  </data>\n  <data name=\"Dlg_FortValiantA_0308\" xml:space=\"preserve\">\n    <value>Peacefully or forcefully, it is your prerogative.</value>\n  </data>\n  <data name=\"Dlg_FortValiantA_0309\" xml:space=\"preserve\">\n    <value>And the reward?</value>\n  </data>\n  <data name=\"Dlg_FortValiantA_0310\" xml:space=\"preserve\">\n    <value>Depends on how much… “work” is required. </value>\n  </data>\n  <data name=\"Dlg_FortValiantA_0311\" xml:space=\"preserve\">\n    <value>The range is 5–15 thousand credits for each of you.</value>\n  </data>\n  <data name=\"Dlg_FortValiantA_0312\" xml:space=\"preserve\">\n    <value>Agreed. </value>\n  </data>\n  <data name=\"Dlg_FortValiantA_0313\" xml:space=\"preserve\">\n    <value>Excellent. I am transmitting the coordinates to you. Once you are done…</value>\n  </data>\n  <data name=\"Dlg_FortValiantA_0314\" xml:space=\"preserve\">\n    <value>…return to me for the reward, as well as further tasks if mutually agreed upon.</value>\n  </data>\n  <data name=\"Dlg_FortValiantA_0315\" xml:space=\"preserve\">\n    <value>Understood. Farewell, then, Captain…?</value>\n  </data>\n  <data name=\"Dlg_FortValiantA_0316\" xml:space=\"preserve\">\n    <value>Cedric. Farewell, and may God smile upon your mission!</value>\n  </data>\n  <data name=\"Dlg_FortValiantA_0317\" xml:space=\"preserve\">\n    <value>Ok, guys. Whenever you’re ready, jump in!</value>\n  </data>\n  <data name=\"Dlg_FortValiantA_0318\" xml:space=\"preserve\">\n    <value>But you might want to think about buying some supplies and ammo here at Valiant.</value>\n  </data>\n  <data name=\"Dlg_FortValiantA_0319\" xml:space=\"preserve\">\n    <value>The Templars should have a pretty mean selection of goods.</value>\n  </data>\n  <data name=\"Dlg_FortValiantA_0320\" xml:space=\"preserve\">\n    <value>As far as I know, most of their really cool stuff is only for members of the Order. </value>\n  </data>\n  <data name=\"Dlg_FortValiantA_0321\" xml:space=\"preserve\">\n    <value>Not available to us. At least for now. </value>\n  </data>\n  <data name=\"Dlg_FortValiantA_0322\" xml:space=\"preserve\">\n    <value>At least legally.</value>\n  </data>\n  <data name=\"Dlg_FortValiantA_0323\" xml:space=\"preserve\">\n    <value>Never mind, then. Just check out the vendors. </value>\n  </data>\n  <data name=\"Dlg_FortValiantA_0324\" xml:space=\"preserve\">\n    <value>The basic stuff should be readily available from them.</value>\n  </data>\n  <data name=\"Dlg_FortValiantA_0325\" xml:space=\"preserve\">\n    <value>We might get to the specialty items later, once we earn the Templars’ confidence.  </value>\n  </data>\n  <data name=\"Dlg_FortValiantB_0100\" xml:space=\"preserve\">\n    <value>Here we are. I suggest heading straight to Captain Cedric for debriefing and some cash.</value>\n  </data>\n  <data name=\"Dlg_FortValiantB_0101\" xml:space=\"preserve\">\n    <value>Right. On our way.</value>\n  </data>\n  <data name=\"Dlg_FortValiantB_0102\" xml:space=\"preserve\">\n    <value>Oh, and try to find a subtle way to ask about a permit to buy more advanced equipment. </value>\n  </data>\n  <data name=\"Dlg_FortValiantB_0201\" xml:space=\"preserve\">\n    <value>Greetings! Welcome to Valiant again! </value>\n  </data>\n  <data name=\"Dlg_FortValiantB_0202\" xml:space=\"preserve\">\n    <value>I’ve seen the mission report you sent. Excellent results! </value>\n  </data>\n  <data name=\"Dlg_FortValiantB_0203\" xml:space=\"preserve\">\n    <value>Sad you couldn’t resolve it in a peaceful way – but still, well done! </value>\n  </data>\n  <data name=\"Dlg_FortValiantB_0204\" xml:space=\"preserve\">\n    <value>I have ordered a cash transfer of 10,000 credits to each of you. </value>\n  </data>\n  <data name=\"Dlg_FortValiantB_0205\" xml:space=\"preserve\">\n    <value>By the way – can we get our mitts on a Templar supplementary license?</value>\n  </data>\n  <data name=\"Dlg_FortValiantB_0207\" xml:space=\"preserve\">\n    <value>Assuming you join us in our campaign toward protecting interstellar justice! </value>\n  </data>\n  <data name=\"Dlg_FortValiantB_0208\" xml:space=\"preserve\">\n    <value>Just sign this document and… </value>\n  </data>\n  <data name=\"Dlg_FortValiantB_0209\" xml:space=\"preserve\">\n    <value>…signed…</value>\n  </data>\n  <data name=\"Dlg_FortValiantB_0210\" xml:space=\"preserve\">\n    <value>Fine! </value>\n  </data>\n  <data name=\"Dlg_FortValiantB_0211\" xml:space=\"preserve\">\n    <value>Now, as fellow believers, you have access to specialized Templar supplies and equipment.</value>\n  </data>\n  <data name=\"Dlg_FortValiantB_0212\" xml:space=\"preserve\">\n    <value>It’s not everything our Order has to offer, but considering you are such new members…</value>\n  </data>\n  <data name=\"Dlg_FortValiantB_0213\" xml:space=\"preserve\">\n    <value>…you should be amazed!</value>\n  </data>\n  <data name=\"Dlg_FortValiantB_0214\" xml:space=\"preserve\">\n    <value>So! Are you eager for another assignment?</value>\n  </data>\n  <data name=\"Dlg_FortValiantB_0215\" xml:space=\"preserve\">\n    <value>Sure!</value>\n  </data>\n  <data name=\"Dlg_FortValiantB_0216\" xml:space=\"preserve\">\n    <value>Sure…</value>\n  </data>\n  <data name=\"Dlg_FortValiantB_0217\" xml:space=\"preserve\">\n    <value>Then here it is. It’s… an another slaver base wipeout!</value>\n  </data>\n  <data name=\"Dlg_FortValiantB_0218\" xml:space=\"preserve\">\n    <value>Great!</value>\n  </data>\n  <data name=\"Dlg_FortValiantB_0219\" xml:space=\"preserve\">\n    <value>Great…</value>\n  </data>\n  <data name=\"Dlg_FortValiantB_0220\" xml:space=\"preserve\">\n    <value>If you’re interested, just use the coordinates I’ve transmitted. </value>\n  </data>\n  <data name=\"Dlg_FortValiantB_0221\" xml:space=\"preserve\">\n    <value>Payment as usual, based on your mission report. And… good luck!</value>\n  </data>\n  <data name=\"Dlg_FortValiantB_0222\" xml:space=\"preserve\">\n    <value>Ok, guys, you know the drill. Meet me at the docks when you’re ready to head out. </value>\n  </data>\n  <data name=\"Dlg_FortValiantB_0223\" xml:space=\"preserve\">\n    <value>But first, check out those new supplies and equipment.  </value>\n  </data>\n  <data name=\"Dlg_FortValiantB_0224\" xml:space=\"preserve\">\n    <value>One more thing. Captain Cedric?</value>\n  </data>\n  <data name=\"Dlg_FortValiantB_0225\" xml:space=\"preserve\">\n    <value>I’m all ears!</value>\n  </data>\n  <data name=\"Dlg_FortValiantB_0226\" xml:space=\"preserve\">\n    <value>We need you to arrange a meeting for us with high-ranking Templar officials. </value>\n  </data>\n  <data name=\"Dlg_FortValiantB_0227\" xml:space=\"preserve\">\n    <value>We have some important matters to discuss. </value>\n  </data>\n  <data name=\"Dlg_FortValiantB_0228\" xml:space=\"preserve\">\n    <value>You mean the patriarchs? That… won’t be easy. But…</value>\n  </data>\n  <data name=\"Dlg_FortValiantB_0229\" xml:space=\"preserve\">\n    <value>…if you do well on this mission, I’ll recommend you for an audience.</value>\n  </data>\n  <data name=\"Dlg_FortValiantB_0230\" xml:space=\"preserve\">\n    <value>When you get back, I’ll let you know whether I succeeded. </value>\n  </data>\n  <data name=\"Dlg_SlaverBase_01_01\" xml:space=\"preserve\">\n    <value>These are the right coordinates. This must be the slaver base Cedric spoke about.</value>\n  </data>\n  <data name=\"Dlg_SlaverBase_01_02\" xml:space=\"preserve\">\n    <value>Does it make any sense to negotiate?</value>\n  </data>\n  <data name=\"Dlg_SlaverBase_01_03\" xml:space=\"preserve\">\n    <value>I doubt it. We can try, but…</value>\n  </data>\n  <data name=\"Dlg_SlaverBase_01_06\" xml:space=\"preserve\">\n    <value>Our plan, then?</value>\n  </data>\n  <data name=\"Dlg_SlaverBase_01_07\" xml:space=\"preserve\">\n    <value>Destroy the generators first, to cut the turrets off from the energy supply. </value>\n  </data>\n  <data name=\"Dlg_SlaverBase_02_01\" xml:space=\"preserve\">\n    <value>Looks like they’ve still got functional backup batteries. </value>\n  </data>\n  <data name=\"Dlg_SlaverBase_02_02\" xml:space=\"preserve\">\n    <value>We need to take care of those, too.</value>\n  </data>\n  <data name=\"Dlg_SlaverBase_02_03\" xml:space=\"preserve\">\n    <value>Right. </value>\n  </data>\n  <data name=\"Dlg_SlaverBase_03_01\" xml:space=\"preserve\">\n    <value>Most of the stationary defenses appear to be down. </value>\n  </data>\n  <data name=\"Dlg_SlaverBase_03_02\" xml:space=\"preserve\">\n    <value>I suggest we proceed with rescuing the captives. </value>\n  </data>\n  <data name=\"Dlg_SlaverBase_03_03\" xml:space=\"preserve\">\n    <value>We need to find the prison, or whatever they call it. </value>\n  </data>\n  <data name=\"Dlg_SlaverBase_04_01\" xml:space=\"preserve\">\n    <value>Holy crap, there’s a lot of people locked up here. </value>\n  </data>\n  <data name=\"Dlg_SlaverBase_04_02\" xml:space=\"preserve\">\n    <value>We need to break down these bars.</value>\n  </data>\n  <data name=\"Dlg_SlaverBase_05_01\" xml:space=\"preserve\">\n    <value>God bless you! You are our saviors!</value>\n  </data>\n  <data name=\"Dlg_SlaverBase_05_02\" xml:space=\"preserve\">\n    <value>Is that all of you? Are there any more captives being held?</value>\n  </data>\n  <data name=\"Dlg_SlaverBase_05_03\" xml:space=\"preserve\">\n    <value>Not here in the base. But there’s a transport vessel with more prisoners loaded inside. </value>\n  </data>\n  <data name=\"Dlg_SlaverBase_05_04\" xml:space=\"preserve\">\n    <value>You must save them!</value>\n  </data>\n  <data name=\"Dlg_SlaverBase_05_05\" xml:space=\"preserve\">\n    <value>Where can we find this transport?</value>\n  </data>\n  <data name=\"Dlg_SlaverBase_05_06\" xml:space=\"preserve\">\n    <value>It’s that large Reichist ship in the hangar.</value>\n  </data>\n  <data name=\"Dlg_SlaverBase_05_07\" xml:space=\"preserve\">\n    <value>But the cargo bay was closed. We’ll have to hack the door control.</value>\n  </data>\n  <data name=\"Dlg_SlaverBase_06_01\" xml:space=\"preserve\">\n    <value>Okay, the doors are open. Let’s free those captives.</value>\n  </data>\n  <data name=\"Dlg_SlaverBase_07_01\" xml:space=\"preserve\">\n    <value>Thank god you came, I thought we would die here. </value>\n  </data>\n  <data name=\"Dlg_SlaverBase_07_02\" xml:space=\"preserve\">\n    <value>Can any of you pilot that mothership?</value>\n  </data>\n  <data name=\"Dlg_SlaverBase_07_03\" xml:space=\"preserve\">\n    <value>No, but there’s a little mine where they keep pilots captive. </value>\n  </data>\n  <data name=\"Dlg_SlaverBase_07_04\" xml:space=\"preserve\">\n    <value>Looks like we have to rescue the pilots too. </value>\n  </data>\n  <data name=\"Dlg_SlaverBase_08_02\" xml:space=\"preserve\">\n    <value>We’re grateful for the rescue, but there are others inside the prison.</value>\n  </data>\n  <data name=\"Dlg_SlaverBase_08_03\" xml:space=\"preserve\">\n    <value>Yes, we know, we saved them already.</value>\n  </data>\n  <data name=\"Dlg_SlaverBase_08_04\" xml:space=\"preserve\">\n    <value>We need you to transport them from the prison to Fourth Reich mothership…</value>\n  </data>\n  <data name=\"Dlg_SlaverBase_08_05\" xml:space=\"preserve\">\n    <value>…and then get out of here.</value>\n  </data>\n  <data name=\"Dlg_SlaverBase_08_06\" xml:space=\"preserve\">\n    <value>We’re just small-ship pilots. I don’t think any of us have ever flown something so large.</value>\n  </data>\n  <data name=\"Dlg_SlaverBase_08_07\" xml:space=\"preserve\">\n    <value>I’m sure at least one of you can do it.</value>\n  </data>\n  <data name=\"Dlg_SlaverBase_08_08\" xml:space=\"preserve\">\n    <value>Sure, piloting a mothership is not that different from piloting a fighter.</value>\n  </data>\n  <data name=\"Dlg_SlaverBase_08_09\" xml:space=\"preserve\">\n    <value>I guess we don’t have any other choice.</value>\n  </data>\n  <data name=\"Dlg_SlaverBase_08_10\" xml:space=\"preserve\">\n    <value>Guys, we have company.</value>\n  </data>\n  <data name=\"Dlg_SlaverBase_08_11\" xml:space=\"preserve\">\n    <value>Go get the other prisoners, we’ll take care of these slavers.</value>\n  </data>\n  <data name=\"Dlg_SlaverBase_09_01\" xml:space=\"preserve\">\n    <value>We’re ready, can you help us out? We need the hangar doors open.</value>\n  </data>\n  <data name=\"Dlg_SlaverBase_09_02\" xml:space=\"preserve\">\n    <value>No problem.</value>\n  </data>\n  <data name=\"Dlg_SlaverBase_10_01\" xml:space=\"preserve\">\n    <value>And off they go!</value>\n  </data>\n  <data name=\"Dlg_SlaverBase_10_02\" xml:space=\"preserve\">\n    <value>Wow, this is fantastic. I never thought I’d pilot something of this size. </value>\n  </data>\n  <data name=\"Dlg_SlaverBase_10_03\" xml:space=\"preserve\">\n    <value>Thank you, my friends, we owe you one. </value>\n  </data>\n  <data name=\"Dlg_SlaverBase_10_04\" xml:space=\"preserve\">\n    <value>I remember when I piloted a mothership for the first time.</value>\n  </data>\n  <data name=\"Dlg_SlaverBase_10_05\" xml:space=\"preserve\">\n    <value>And was it “fantastic”?</value>\n  </data>\n  <data name=\"Dlg_SlaverBase_10_06\" xml:space=\"preserve\">\n    <value>Yeah. I crashed into the station after a few minutes.</value>\n  </data>\n  <data name=\"Dlg_SlaverBase_10_07\" xml:space=\"preserve\">\n    <value>I thought you said piloting a mothership was easy?</value>\n  </data>\n  <data name=\"Dlg_SlaverBase_10_08\" xml:space=\"preserve\">\n    <value>I lied.</value>\n  </data>\n  <data name=\"Dlg_SlaverBase_10_09\" xml:space=\"preserve\">\n    <value>So, what now? Are they all going to die?</value>\n  </data>\n  <data name=\"Dlg_SlaverBase_10_10\" xml:space=\"preserve\">\n    <value>No, I’m pretty sure everything on these new ships is automatic. </value>\n  </data>\n  <data name=\"Dlg_SlaverBase_10_11\" xml:space=\"preserve\">\n    <value>…Pretty sure.</value>\n  </data>\n  <data name=\"Dlg_SlaverBase_11_01\" xml:space=\"preserve\">\n    <value>Back to Cedric?</value>\n  </data>\n  <data name=\"Dlg_SlaverBase_11_02\" xml:space=\"preserve\">\n    <value>Right away!</value>\n  </data>\n  <data name=\"Dlg_EACPrison_0100\" xml:space=\"preserve\">\n    <value>Here we are. Wow! They didn’t waste any time!</value>\n  </data>\n  <data name=\"Dlg_EACPrison_0101\" xml:space=\"preserve\">\n    <value>Epic! I’ve never seen anything like this.</value>\n  </data>\n  <data name=\"Dlg_EACPrison_0102\" xml:space=\"preserve\">\n    <value>Hail, colleagues! Events transpired faster than we expected.</value>\n  </data>\n  <data name=\"Dlg_EACPrison_0103\" xml:space=\"preserve\">\n    <value>As you can see, we are in the middle of a fight for Reway.</value>\n  </data>\n  <data name=\"Dlg_EACPrison_0104\" xml:space=\"preserve\">\n    <value>What happened?</value>\n  </data>\n  <data name=\"Dlg_EACPrison_0105\" xml:space=\"preserve\">\n    <value>An EAC fleet guarding Reway was reported to be moving away…</value>\n  </data>\n  <data name=\"Dlg_EACPrison_0106\" xml:space=\"preserve\">\n    <value>…to handle some more important “issues”. This gave us an opportunity to attack immediately.</value>\n  </data>\n  <data name=\"Dlg_EACPrison_0107\" xml:space=\"preserve\">\n    <value>We must be quick, otherwise there will be reinforcements.</value>\n  </data>\n  <data name=\"Dlg_EACPrison_0108\" xml:space=\"preserve\">\n    <value>Do you have any assignments for us? </value>\n  </data>\n  <data name=\"Dlg_EACPrison_0109\" xml:space=\"preserve\">\n    <value>Or do we just sneak in, disable the base defenses, and free my brother?</value>\n  </data>\n  <data name=\"Dlg_EACPrison_0110\" xml:space=\"preserve\">\n    <value>That’s the plan. We have spec op forces assigned to liberate our prisoners</value>\n  </data>\n  <data name=\"Dlg_EACPrison_0111\" xml:space=\"preserve\">\n    <value>Get inside as fast as you can, free your brother, and get out of there!</value>\n  </data>\n  <data name=\"Dlg_EACPrison_0112\" xml:space=\"preserve\">\n    <value>You know this is the start of a war between EAC and FoR? Not just a rescue operation!</value>\n  </data>\n  <data name=\"Dlg_EACPrison_0113\" xml:space=\"preserve\">\n    <value>We realize that. Still, we prefer this to be a hit-and-run attack. </value>\n  </data>\n  <data name=\"Dlg_EACPrison_0114\" xml:space=\"preserve\">\n    <value>We will deal with the main EAC fleet later.</value>\n  </data>\n  <data name=\"Dlg_EACPrison_0115\" xml:space=\"preserve\">\n    <value>Let’s go. Marcus is waiting.</value>\n  </data>\n  <data name=\"Dlg_EACPrison_0200\" xml:space=\"preserve\">\n    <value>Shit, that was close! </value>\n  </data>\n  <data name=\"Dlg_EACPrison_0201\" xml:space=\"preserve\">\n    <value>Keep moving, we’re almost there.</value>\n  </data>\n  <data name=\"Dlg_EACPrison_0300\" xml:space=\"preserve\">\n    <value>You need to destroy the solar panels powering the security system…</value>\n  </data>\n  <data name=\"Dlg_EACPrison_0301\" xml:space=\"preserve\">\n    <value>…otherwise it’ll be impossible to get inside!</value>\n  </data>\n  <data name=\"Dlg_EACPrison_0302\" xml:space=\"preserve\">\n    <value>Almost done! </value>\n  </data>\n  <data name=\"Dlg_EACPrison_0400\" xml:space=\"preserve\">\n    <value>Apollo, critical update. EAC reinforcements just arrived. Three motherships.</value>\n  </data>\n  <data name=\"Dlg_EACPrison_0401\" xml:space=\"preserve\">\n    <value>One of our zeppelins, Schwalbe, is in trouble. Its aiming system is barely functioning.</value>\n  </data>\n  <data name=\"Dlg_EACPrison_0402\" xml:space=\"preserve\">\n    <value>We cannot send any forces right now; our fighters are all engaged. Can you help them out?</value>\n  </data>\n  <data name=\"Dlg_EACPrison_0403\" xml:space=\"preserve\">\n    <value>It won’t make life easier for us, but we’ll do what we can. </value>\n  </data>\n  <data name=\"Dlg_EACPrison_0404\" xml:space=\"preserve\">\n    <value>Do you see that mothership, EAC Liberator? </value>\n  </data>\n  <data name=\"Dlg_EACPrison_0405\" xml:space=\"preserve\">\n    <value>Their defense headquarters are located there. </value>\n  </data>\n  <data name=\"Dlg_EACPrison_0406\" xml:space=\"preserve\">\n    <value>We need you to destroy Liberator’s communication module! </value>\n  </data>\n  <data name=\"Dlg_EACPrison_0407\" xml:space=\"preserve\">\n    <value>Without Liberators’ lead, they’ll be lost! </value>\n  </data>\n  <data name=\"Dlg_EACPrison_0408\" xml:space=\"preserve\">\n    <value>That’s a suicide mission! </value>\n  </data>\n  <data name=\"Dlg_EACPrison_0409\" xml:space=\"preserve\">\n    <value>We’ll cover you.</value>\n  </data>\n  <data name=\"Dlg_EACPrison_0410\" xml:space=\"preserve\">\n    <value>Thanks. Ok, let’s move!</value>\n  </data>\n  <data name=\"Dlg_EACPrison_0500\" xml:space=\"preserve\">\n    <value>That did the trick! </value>\n  </data>\n  <data name=\"Dlg_EACPrison_0501\" xml:space=\"preserve\">\n    <value>Great job. To all fighters: try to disengage and attack E.A.C. Liberator…</value>\n  </data>\n  <data name=\"Dlg_EACPrison_0502\" xml:space=\"preserve\">\n    <value>…repeat: try to disengage and attack… (white noise)</value>\n  </data>\n  <data name=\"Dlg_EACPrison_0503\" xml:space=\"preserve\">\n    <value>Let’s finish frying those solar panels.</value>\n  </data>\n  <data name=\"Dlg_EACPrison_0600\" xml:space=\"preserve\">\n    <value>Security system disabled. Use the cargo bay to get inside the prison. </value>\n  </data>\n  <data name=\"Dlg_EACPrison_0601\" xml:space=\"preserve\">\n    <value>And then? </value>\n  </data>\n  <data name=\"Dlg_EACPrison_0602\" xml:space=\"preserve\">\n    <value>Hey, boss, I thought you had a plan!</value>\n  </data>\n  <data name=\"Dlg_EACPrison_0603\" xml:space=\"preserve\">\n    <value>I do. We go in and Marcus comes out!</value>\n  </data>\n  <data name=\"Dlg_EACPrison_0604\" xml:space=\"preserve\">\n    <value>I found several security hubs inside. Try to hack them and find a database of prisoners. </value>\n  </data>\n  <data name=\"Dlg_EACPrison_0700\" xml:space=\"preserve\">\n    <value>Authentication required – crap!</value>\n  </data>\n  <data name=\"Dlg_EACPrison_0701\" xml:space=\"preserve\">\n    <value>What kind of authentication?</value>\n  </data>\n  <data name=\"Dlg_EACPrison_0702\" xml:space=\"preserve\">\n    <value>I don’t know. Retinal scan? I don’t understand these new models. </value>\n  </data>\n  <data name=\"Dlg_EACPrison_0703\" xml:space=\"preserve\">\n    <value>Let’s hope it uses normal ID cards. Find one. </value>\n  </data>\n  <data name=\"Dlg_EACPrison_0800\" xml:space=\"preserve\">\n    <value>So it DOES use cards. Relax, Tarja, we don’t have to scoop out any EAC eyeballs.</value>\n  </data>\n  <data name=\"Dlg_EACPrison_0801\" xml:space=\"preserve\">\n    <value>Oh, how thoughtful of you. </value>\n  </data>\n  <data name=\"Dlg_EACPrison_0802\" xml:space=\"preserve\">\n    <value>Return to the hub and use the ID. </value>\n  </data>\n  <data name=\"Dlg_EACPrison_0803\" xml:space=\"preserve\">\n    <value>We need to find out where Marcus is being held. Hurry, the battle won’t last much longer. </value>\n  </data>\n  <data name=\"Dlg_EACPrison_0900\" xml:space=\"preserve\">\n    <value>Here’s the data. Marcus Rainier, sector B-2, cell 38. </value>\n  </data>\n  <data name=\"Dlg_EACPrison_0901\" xml:space=\"preserve\">\n    <value>Perfect. You have to access the maintenance area; there’s no other way to the cells. </value>\n  </data>\n  <data name=\"Dlg_EACPrison_0902\" xml:space=\"preserve\">\n    <value>Of course, the area is well guarded… surprise, surprise. </value>\n  </data>\n  <data name=\"Dlg_EACPrison_0903\" xml:space=\"preserve\">\n    <value>Just tell which direction to shoot in… </value>\n  </data>\n  <data name=\"Dlg_EACPrison_1000\" xml:space=\"preserve\">\n    <value>First, the easy work: use the hub to disconnect the generator. </value>\n  </data>\n  <data name=\"Dlg_EACPrison_1001\" xml:space=\"preserve\">\n    <value>And then?</value>\n  </data>\n  <data name=\"Dlg_EACPrison_1002\" xml:space=\"preserve\">\n    <value>The usual stuff: shooting, dodging, maneuvering in narrow corridors…</value>\n  </data>\n  <data name=\"Dlg_EACPrison_1100\" xml:space=\"preserve\">\n    <value>Marcus has to be nearby. Can you see cell 38?</value>\n  </data>\n  <data name=\"Dlg_EACPrison_1101\" xml:space=\"preserve\">\n    <value>Found it!</value>\n  </data>\n  <data name=\"Dlg_EACPrison_1200\" xml:space=\"preserve\">\n    <value>Marcus! I was… we though you are dead!</value>\n  </data>\n  <data name=\"Dlg_EACPrison_1201\" xml:space=\"preserve\">\n    <value>Apollo? What are you doing here? Valentin! Tarja! You’ve all been caught? </value>\n  </data>\n  <data name=\"Dlg_EACPrison_1202\" xml:space=\"preserve\">\n    <value>Marcus, we need to get you out of here, fast!</value>\n  </data>\n  <data name=\"Dlg_EACPrison_1203\" xml:space=\"preserve\">\n    <value>How… Don’t tell me you stormed the prison and killed all the guards?</value>\n  </data>\n  <data name=\"Dlg_EACPrison_1204\" xml:space=\"preserve\">\n    <value>We had a little help from… “friends”. I’ll explain later.</value>\n  </data>\n  <data name=\"Dlg_EACPrison_1205\" xml:space=\"preserve\">\n    <value>Madelyn, we have him!</value>\n  </data>\n  <data name=\"Dlg_EACPrison_1206\" xml:space=\"preserve\">\n    <value>Marcus! Are you all right? </value>\n  </data>\n  <data name=\"Dlg_EACPrison_1207\" xml:space=\"preserve\">\n    <value>You bastard! We thought you were dead! </value>\n  </data>\n  <data name=\"Dlg_EACPrison_1208\" xml:space=\"preserve\">\n    <value>Don’t worry; I’ll kill you the minute you set foot on my ship!</value>\n  </data>\n  <data name=\"Dlg_EACPrison_1209\" xml:space=\"preserve\">\n    <value>So good to hear your voice again, Madelyn.</value>\n  </data>\n  <data name=\"Dlg_EACPrison_1210\" xml:space=\"preserve\">\n    <value>Shhh, we have company.</value>\n  </data>\n  <data name=\"Dlg_EACPrison_1300\" xml:space=\"preserve\">\n    <value>Fly to the cargo bay, you have a chance to break through there!</value>\n  </data>\n  <data name=\"Dlg_EACPrison_1400\" xml:space=\"preserve\">\n    <value>Enemy spotted. In large quantities!</value>\n  </data>\n  <data name=\"Dlg_EACPrison_1401\" xml:space=\"preserve\">\n    <value>Engaging!</value>\n  </data>\n  <data name=\"Dlg_EACPrison_1500\" xml:space=\"preserve\">\n    <value>Move out! Fall back. </value>\n  </data>\n  <data name=\"Dlg_EACPrison_1501\" xml:space=\"preserve\">\n    <value>What are THEY doing here?</value>\n  </data>\n  <data name=\"Dlg_EACPrison_1502\" xml:space=\"preserve\">\n    <value>I told you we brought “friends”.</value>\n  </data>\n  <data name=\"Dlg_EACPrison_1503\" xml:space=\"preserve\">\n    <value>So while I was in prison the world turned inside out?</value>\n  </data>\n  <data name=\"Dlg_EACPrison_1504\" xml:space=\"preserve\">\n    <value>Madelyn, prepare to dock us. </value>\n  </data>\n  <data name=\"Dlg_EACPrison_1505\" xml:space=\"preserve\">\n    <value>Sapho is ready to fly as soon as you’ve boarded. Marcus, prepare to die.</value>\n  </data>\n  <data name=\"Dlg_EACPrison_1506\" xml:space=\"preserve\">\n    <value>I love happy endings!</value>\n  </data>\n  <data name=\"Dlg_EACPrison_1507\" xml:space=\"preserve\">\n    <value>If this were a real happy ending, all Fourth Reich ships would burn in hell…</value>\n  </data>\n  <data name=\"Dlg_EACPrison_1510\" xml:space=\"preserve\">\n    <value>Be nice to our new “friends”!</value>\n  </data>\n  <data name=\"Dlg_EACPrison_1511\" xml:space=\"preserve\">\n    <value>Sooner or later, you’ll be arrested too. Call this a practice run. </value>\n  </data>\n  <data name=\"Dlg_EACPrison_1600\" xml:space=\"preserve\">\n    <value>Before you tell me the whole story, one question: Where are we going now?</value>\n  </data>\n  <data name=\"Dlg_EACPrison_1601\" xml:space=\"preserve\">\n    <value>EAC. The radar array at Silver Foresight.</value>\n  </data>\n  <data name=\"Dlg_EACPrison_1602\" xml:space=\"preserve\">\n    <value>We need to place the final alien material detector there. </value>\n  </data>\n  <data name=\"Dlg_EACPrison_1603\" xml:space=\"preserve\">\n    <value>Right. Guess it’s a long story. Let’s jump on Sapho and talk on the way. </value>\n  </data>\n  <data name=\"Dlg_EACPrison_1604\" xml:space=\"preserve\">\n    <value>And… nice to see you again, guys!</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_01_01\" xml:space=\"preserve\">\n    <value>Welcome to Doppelburg, soldiers. </value>\n  </data>\n  <data name=\"Dlg_TwinTowers_01_02\" xml:space=\"preserve\">\n    <value>Proceed to the hangar in tower A and wait until you are assigned to a squad.</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_01_03\" xml:space=\"preserve\">\n    <value>Affirmative, sir.</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_02_01\" xml:space=\"preserve\">\n    <value>Guten tag. What’s new in the Fatherland?</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_02_03\" xml:space=\"preserve\">\n    <value>Have you been instructed as to the plan?</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_02_04\" xml:space=\"preserve\">\n    <value>We have. If nothing has changed, we’re ready.</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_02_05\" xml:space=\"preserve\">\n    <value>No changes. There are three places you need to place explosives to weaken tower B…</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_02_06\" xml:space=\"preserve\">\n    <value>…while we deal with tower A. After that, you’ll be paying a “visit” to the command center.</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_03_01\" xml:space=\"preserve\">\n    <value>This connects the command center to the main electrical network. </value>\n  </data>\n  <data name=\"Dlg_TwinTowers_03_02\" xml:space=\"preserve\">\n    <value>Once you blow it up, they will have to switch to auxiliary batteries.</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_03_03\" xml:space=\"preserve\">\n    <value>It won’t stop them, but they won’t be able to keep all systems operational. </value>\n  </data>\n  <data name=\"Dlg_TwinTowers_03_04\" xml:space=\"preserve\">\n    <value>It may save us from a few live turrets.  </value>\n  </data>\n  <data name=\"Dlg_TwinTowers_04_01\" xml:space=\"preserve\">\n    <value>It is always helpful to weaken enemy forces directly. </value>\n  </data>\n  <data name=\"Dlg_TwinTowers_04_02\" xml:space=\"preserve\">\n    <value>Hide the bomb well here – we can destroy many of their fighters on the ground. </value>\n  </data>\n  <data name=\"Dlg_TwinTowers_05_01\" xml:space=\"preserve\">\n    <value>A well-placed bomb here will help keep the command center offline.</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_05_02\" xml:space=\"preserve\">\n    <value>Shutting off the generator would be better…</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_05_03\" xml:space=\"preserve\">\n    <value>…but it’s impossible without setting off an alarm.</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_06_01\" xml:space=\"preserve\">\n    <value>Excellent work, now prepare for the command center attack. I will be waiting nearby.</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_06_02\" xml:space=\"preserve\">\n    <value>You won’t be joining the attack?</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_06_03\" xml:space=\"preserve\">\n    <value>No, my ship is equipped with a special hacking device.</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_06_04\" xml:space=\"preserve\">\n    <value>I’m carrying a virus that will take control of all the systems in Tower A at once. </value>\n  </data>\n  <data name=\"Dlg_TwinTowers_06_05\" xml:space=\"preserve\">\n    <value>If I fail at that, it’s all over.</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_06_06\" xml:space=\"preserve\">\n    <value>And after all, there are three of you. That should be more than enough.</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_06_07\" xml:space=\"preserve\">\n    <value>So, we need to protect you until the virus is uploaded?</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_06_08\" xml:space=\"preserve\">\n    <value>Exactly. Any complication can lead to a fatal failure.</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_07_01\" xml:space=\"preserve\">\n    <value>Get ready. Once you start shooting it’s you against whole enemy fleet.</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_07_02\" xml:space=\"preserve\">\n    <value>At least this masquerade will be over soon.</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_07_03\" xml:space=\"preserve\">\n    <value>You don’t like playing Nazi? Do I detect a conscience hiding in there?</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_08_01\" xml:space=\"preserve\">\n    <value>Done, area clear. Now do your job.</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_08_02\" xml:space=\"preserve\">\n    <value>On my way. Meanwhile, get ready. Wolves coming soon.</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_09_01\" xml:space=\"preserve\">\n    <value>Hacking routine started. Approximate time remaining, 3 minutes.</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_09_02\" xml:space=\"preserve\">\n    <value>Can’t you do it faster?</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_09_03\" xml:space=\"preserve\">\n    <value>Negative, I designed this software to have no weak point. It’s a lot of code.</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_09_04\" xml:space=\"preserve\">\n    <value>Glad to hear you’re that thorough.</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_09_05\" xml:space=\"preserve\">\n    <value>Thanks. It’s always nice to hear words of praise from one’s colleagues.</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_09_06\" xml:space=\"preserve\">\n    <value>Yeah. Nice.</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_09_07\" xml:space=\"preserve\">\n    <value>Our loyal friends will help protect us from outside attack. </value>\n  </data>\n  <data name=\"Dlg_TwinTowers_09_08\" xml:space=\"preserve\">\n    <value>We only have to deal with forces inside the base.</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_09_09\" xml:space=\"preserve\">\n    <value>And we will.</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_10_01\" xml:space=\"preserve\">\n    <value>Another squad has started their engines.</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_10_02\" xml:space=\"preserve\">\n    <value>Wolves on their way.</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_11_01\" xml:space=\"preserve\">\n    <value>No! Someone’s interrupting the process! </value>\n  </data>\n  <data name=\"Dlg_TwinTowers_11_02\" xml:space=\"preserve\">\n    <value>Someone down there has a hacking computer of equal power and they’re blocking me.</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_11_04\" xml:space=\"preserve\">\n    <value>I thought you were the premier hacker in these parts?</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_11_05\" xml:space=\"preserve\">\n    <value>This is no time for ego wars. Get him or we’re dead.</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_11_06\" xml:space=\"preserve\">\n    <value>Watch out for the turrets. Going straight down is suicide.</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_11_07\" xml:space=\"preserve\">\n    <value>The side tunnels?</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_11_08\" xml:space=\"preserve\">\n    <value>I’ll follow you. Decide.</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_12_01\" xml:space=\"preserve\">\n    <value>You’re retired, pal!</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_12_02\" xml:space=\"preserve\">\n    <value>Erhard, what’s your status?</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_12_03\" xml:space=\"preserve\">\n    <value>Back online, advancing at a steady pace again.</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_12_04\" xml:space=\"preserve\">\n    <value>But another squadron’s coming. Get back here as fast as possible.</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_12_05\" xml:space=\"preserve\">\n    <value>There’s no end to them! I thought the Wolves were just a small faction.</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_12_06\" xml:space=\"preserve\">\n    <value>They have a lot of sympathizers. Even amongst everyday citizens.</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_12_07\" xml:space=\"preserve\">\n    <value>Guess you can’t shake off the 20th century just like that. Too bad.</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_12_08\" xml:space=\"preserve\">\n    <value>The path to perfection isn’t an easy one. But we are ready.</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_12_09\" xml:space=\"preserve\">\n    <value>Just be ready enough to not get killed right now.</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_13_01\" xml:space=\"preserve\">\n    <value>Done.</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_13_02\" xml:space=\"preserve\">\n    <value>Weapons will now pursue ships with White Wolf signatures.</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_13_03\" xml:space=\"preserve\">\n    <value>Excluding ours, of course.</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_13_04\" xml:space=\"preserve\">\n    <value>So, what now?</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_13_05\" xml:space=\"preserve\">\n    <value>Now you need to disable both of the anti-mothership railguns in this tower.</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_13_06\" xml:space=\"preserve\">\n    <value>What? Didn’t you just do that?</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_13_07\" xml:space=\"preserve\">\n    <value>Railguns have independent manual controls besides the remote ones.</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_13_08\" xml:space=\"preserve\">\n    <value>As long as there are Wolves around, they can seize control of them.</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_13_09\" xml:space=\"preserve\">\n    <value>And as long as the railguns are operational…</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_13_10\" xml:space=\"preserve\">\n    <value>…we won’t get any support from Reich mother ships.</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_13_11\" xml:space=\"preserve\">\n    <value>Exactly.</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_14_01\" xml:space=\"preserve\">\n    <value>I destroyed everything that seemed like a control device for the railgun.</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_14_02\" xml:space=\"preserve\">\n    <value>According to my data, you did well. Now proceed to the next control room. </value>\n  </data>\n  <data name=\"Dlg_TwinTowers_14_03\" xml:space=\"preserve\">\n    <value>Meanwhile I’m preparing a computer attack on Tower B.</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_14_04\" xml:space=\"preserve\">\n    <value>Proceeding.</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_15_01\" xml:space=\"preserve\">\n    <value>Done. Second railgun crippled.</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_15_02\" xml:space=\"preserve\">\n    <value>What next?</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_15_03\" xml:space=\"preserve\">\n    <value>Move to Tower B. There is a service tunnel you can use. It shouldn’t be guarded.</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_15_04\" xml:space=\"preserve\">\n    <value>“Shouldn’t be”? How reassuring.</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_15_05\" xml:space=\"preserve\">\n    <value>By the way, where are all the loyal friends you were talking about?</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_15_06\" xml:space=\"preserve\">\n    <value>According to the computer…</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_15_07\" xml:space=\"preserve\">\n    <value>…three of their ships were destroyed outside the base while we took the command center.</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_15_08\" xml:space=\"preserve\">\n    <value>They fell for the cause.</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_15_09\" xml:space=\"preserve\">\n    <value>What? You say it as if you just dropped a candy bar.</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_15_10\" xml:space=\"preserve\">\n    <value>They were prepared to die. Just as I am. Just as you should be.</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_15_11\" xml:space=\"preserve\">\n    <value>I am not prepared to die here. I hate defeatist thinking.</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_15_12\" xml:space=\"preserve\">\n    <value>This mission was uncertain at best – all the way from beginning. We all knew it.  </value>\n  </data>\n  <data name=\"Dlg_TwinTowers_16_01\" xml:space=\"preserve\">\n    <value>I’m here, what now? Destroy some more railgun controls?</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_16_02\" xml:space=\"preserve\">\n    <value>No, just shut down the generator. Then the railguns won’t have power.</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_16_03\" xml:space=\"preserve\">\n    <value>Why didn’t we do that in Tower A?</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_16_04\" xml:space=\"preserve\">\n    <value>They’d have been able to reroute energy from other systems. </value>\n  </data>\n  <data name=\"Dlg_TwinTowers_16_05\" xml:space=\"preserve\">\n    <value>But thanks to the work we’ve done, they won’t be able to do that in Tower B.</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_16_06\" xml:space=\"preserve\">\n    <value>Fine. Where do I go?</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_16_07\" xml:space=\"preserve\">\n    <value>Up. To the reactor room. Destroy the cooling pipes leading to the generator. </value>\n  </data>\n  <data name=\"Dlg_TwinTowers_16_08\" xml:space=\"preserve\">\n    <value>It will automatically shut down to prevent a meltdown.</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_16_09\" xml:space=\"preserve\">\n    <value>Sounds easy enough.</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_16_10\" xml:space=\"preserve\">\n    <value>Did you see the stationary weapons there? When we were placing the explosives.</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_16_11\" xml:space=\"preserve\">\n    <value>Yeah?</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_16_12\" xml:space=\"preserve\">\n    <value>Are they still operational?</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_16_13\" xml:space=\"preserve\">\n    <value>I guess we’ll see.</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_17_01\" xml:space=\"preserve\">\n    <value>Done. No energy, no railguns. Can we have the reinforcements now?</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_17_02\" xml:space=\"preserve\">\n    <value>Signal sent. Proceed to the command center. There are still some things to be done.</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_17_03\" xml:space=\"preserve\">\n    <value>What exactly?</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_17_04\" xml:space=\"preserve\">\n    <value>It’s impossible to hack any of the command center computers from outside.</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_17_05\" xml:space=\"preserve\">\n    <value>They have to be approached from inside. </value>\n  </data>\n  <data name=\"Dlg_TwinTowers_17_06\" xml:space=\"preserve\">\n    <value>But don’t worry, it’s not as hard as what I did in Tower A. </value>\n  </data>\n  <data name=\"Dlg_TwinTowers_17_07\" xml:space=\"preserve\">\n    <value>I just need to open a channel to Tower A. My virus will do the rest.</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_17_08\" xml:space=\"preserve\">\n    <value>Acknowledged.</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_18_01\" xml:space=\"preserve\">\n    <value>Great. The base is ours!</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_18_02\" xml:space=\"preserve\">\n    <value>I have one last bit of unpleasant news for you.</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_18_03\" xml:space=\"preserve\">\n    <value>We are listening.</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_18_04\" xml:space=\"preserve\">\n    <value>The White Wolves had a mother ship stationed nearby. And now they are on their way here.</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_18_05\" xml:space=\"preserve\">\n    <value>What’s the plan?</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_18_06\" xml:space=\"preserve\">\n    <value>Our forces will arrive ahead of them. But we would like your assistance during the fight.</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_19_01\" xml:space=\"preserve\">\n    <value>Apollo Rainier, join the assault squad.</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_19_02\" xml:space=\"preserve\">\n    <value>Your mission is to support our fighters during the dogfight…</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_19_03\" xml:space=\"preserve\">\n    <value>…and then assist in neutralizing their zeppelin.</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_19_04\" xml:space=\"preserve\">\n    <value>Your targets are its main generators. Once they are out of commission, …</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_19_05\" xml:space=\"preserve\">\n    <value>…it is just a matter of time till they surrender or we overtake their forces.</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_19_06\" xml:space=\"preserve\">\n    <value>Good luck!</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_19_07\" xml:space=\"preserve\">\n    <value>Fight against a fully armed zeppelin? That does not sound… easy.</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_19_08\" xml:space=\"preserve\">\n    <value>It is possible. Just not easy.</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_20_01\" xml:space=\"preserve\">\n    <value>Excellent. Now proceed to destroy the backup batteries. </value>\n  </data>\n  <data name=\"Dlg_TwinTowers_20_02\" xml:space=\"preserve\">\n    <value>Once that’s done, your job is over.</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_21_01\" xml:space=\"preserve\">\n    <value>To all White Wolf forces. It’s over. Surrender and we will spare your lives.</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_21_02\" xml:space=\"preserve\">\n    <value>Madelyn to Apollo! Report in.</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_21_03\" xml:space=\"preserve\">\n    <value>Apollo here. Madelyn, what are you doing here?</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_21_04\" xml:space=\"preserve\">\n    <value>Von Stauffenberg sent me to pick you up directly. Let’s get out of here.</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_21_05\" xml:space=\"preserve\">\n    <value>You have no idea how glad I am to hear that.</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_21_06\" xml:space=\"preserve\">\n    <value>That goes for all of us.</value>\n  </data>\n  <data name=\"Dlg_TwinTowers_21_07\" xml:space=\"preserve\">\n    <value>We’re meeting the Fourth Reich forces at Reway. </value>\n  </data>\n  <data name=\"Dlg_TwinTowers_21_08\" xml:space=\"preserve\">\n    <value>Walther convinced them to attack. Time to see Marcus again! Come on!</value>\n  </data>\n  <data name=\"Dlg_ResearchVessel_1000\" xml:space=\"preserve\">\n    <value>Welcome to Eurydice!</value>\n  </data>\n  <data name=\"Dlg_ResearchVessel_1001\" xml:space=\"preserve\">\n    <value>Amazing! The bending of the sun’s rays…</value>\n  </data>\n  <data name=\"Dlg_ResearchVessel_1002\" xml:space=\"preserve\">\n    <value>…through the Vandenberg Gas Field creates some spectacular visuals.</value>\n  </data>\n  <data name=\"Dlg_ResearchVessel_1003\" xml:space=\"preserve\">\n    <value>Yeah, looks like a sci-fi movie I once saw.</value>\n  </data>\n  <data name=\"Dlg_ResearchVessel_1004\" xml:space=\"preserve\">\n    <value>Guys, this is the plan: The parts we need are probably spread all over the place.</value>\n  </data>\n  <data name=\"Dlg_ResearchVessel_1005\" xml:space=\"preserve\">\n    <value>According to my blueprints, …</value>\n  </data>\n  <data name=\"Dlg_ResearchVessel_1006\" xml:space=\"preserve\">\n    <value>…there seems to be no one specific place containing probe parts.</value>\n  </data>\n  <data name=\"Dlg_ResearchVessel_1007\" xml:space=\"preserve\">\n    <value>We’re talking needle in a haystack?</value>\n  </data>\n  <data name=\"Dlg_ResearchVessel_1008\" xml:space=\"preserve\">\n    <value>Exactly!</value>\n  </data>\n  <data name=\"Dlg_ResearchVessel_1009\" xml:space=\"preserve\">\n    <value>So… random looting and pillaging! Awesome!</value>\n  </data>\n  <data name=\"Dlg_ResearchVessel_1010\" xml:space=\"preserve\">\n    <value>Just make sure you don’t blow up the parts we need. </value>\n  </data>\n  <data name=\"Dlg_ResearchVessel_1011\" xml:space=\"preserve\">\n    <value>I’ve uploaded you the dataprints from Reef.</value>\n  </data>\n  <data name=\"Dlg_ResearchVessel_1012\" xml:space=\"preserve\">\n    <value>Your HUD will detect which parts are relevant for us.</value>\n  </data>\n  <data name=\"Dlg_ResearchVessel_1013\" xml:space=\"preserve\">\n    <value>Incoming ships, identify yourself! This is a neutral research vessel on a mission…</value>\n  </data>\n  <data name=\"Dlg_ResearchVessel_1014\" xml:space=\"preserve\">\n    <value>…investigating the composition of the Vandenberg Gas Field.</value>\n  </data>\n  <data name=\"Dlg_ResearchVessel_1015\" xml:space=\"preserve\">\n    <value>Simply stated, you have something we want.</value>\n  </data>\n  <data name=\"Dlg_ResearchVessel_1016\" xml:space=\"preserve\">\n    <value>You could have tried to negotiate first!</value>\n  </data>\n  <data name=\"Dlg_ResearchVessel_1017\" xml:space=\"preserve\">\n    <value>We lean toward awkward silence and firearms.</value>\n  </data>\n  <data name=\"Dlg_ResearchVessel_1018\" xml:space=\"preserve\">\n    <value>Ok, you asked for it. All fighters, engage enemy!</value>\n  </data>\n  <data name=\"Dlg_ResearchVessel_1019\" xml:space=\"preserve\">\n    <value>This place looks pretty fortified.</value>\n  </data>\n  <data name=\"Dlg_ResearchVessel_1020\" xml:space=\"preserve\">\n    <value>There’s definitely something valuable inside.</value>\n  </data>\n  <data name=\"Dlg_ResearchVessel_1021\" xml:space=\"preserve\">\n    <value>Our missiles won’t do the job.</value>\n  </data>\n  <data name=\"Dlg_ResearchVessel_1022\" xml:space=\"preserve\">\n    <value>Yup, we need to hack in from somewhere. </value>\n  </data>\n  <data name=\"Dlg_ResearchVessel_1023\" xml:space=\"preserve\">\n    <value>This one won’t be easy.</value>\n  </data>\n  <data name=\"Dlg_ResearchVessel_1024\" xml:space=\"preserve\">\n    <value>Preliminary scans show you’ll need to unlock several seals in order to break through.</value>\n  </data>\n  <data name=\"Dlg_ResearchVessel_1025\" xml:space=\"preserve\">\n    <value>Wow, look at this!</value>\n  </data>\n  <data name=\"Dlg_ResearchVessel_1026\" xml:space=\"preserve\">\n    <value>The ship is built on an asteroid with rich helium deposits.</value>\n  </data>\n  <data name=\"Dlg_ResearchVessel_1027\" xml:space=\"preserve\">\n    <value>Technically, it runs on fuel from its own core.</value>\n  </data>\n  <data name=\"Dlg_ResearchVessel_1028\" xml:space=\"preserve\">\n    <value>Eh, science…</value>\n  </data>\n  <data name=\"Dlg_ResearchVessel_1029\" xml:space=\"preserve\">\n    <value>According to the dataprints, these are some of the parts we need.</value>\n  </data>\n  <data name=\"Dlg_ResearchVessel_1030\" xml:space=\"preserve\">\n    <value>Resonator, crystal receivers, and DIP switch.</value>\n  </data>\n  <data name=\"Dlg_ResearchVessel_1031\" xml:space=\"preserve\">\n    <value>Good!</value>\n  </data>\n  <data name=\"Dlg_ResearchVessel_1032\" xml:space=\"preserve\">\n    <value>Another bunch of goodies we need. Centrifugal switch, reed switch, and ultrasonic filters.</value>\n  </data>\n  <data name=\"Dlg_ResearchVessel_1033\" xml:space=\"preserve\">\n    <value>Great! We’ve got over half of the parts! Keep up the search!</value>\n  </data>\n  <data name=\"Dlg_ResearchVessel_1034\" xml:space=\"preserve\">\n    <value>Here comes Santa Claus! Sockets, wires, some biconical...</value>\n  </data>\n  <data name=\"Dlg_ResearchVessel_1036\" xml:space=\"preserve\">\n    <value>Sa-weet!</value>\n  </data>\n  <data name=\"Dlg_ResearchVessel_1037\" xml:space=\"preserve\">\n    <value>Sorry to say, but a few parts are still missing. Keep looking.</value>\n  </data>\n  <data name=\"Dlg_ResearchVessel_1038\" xml:space=\"preserve\">\n    <value>We’ve turned this whole place upside down. Any clues?</value>\n  </data>\n  <data name=\"Dlg_ResearchVessel_1039\" xml:space=\"preserve\">\n    <value>Hey, remember that shielded hi-tech container we found? Now that we’ve hacked a few hubs…</value>\n  </data>\n  <data name=\"Dlg_ResearchVessel_1040\" xml:space=\"preserve\">\n    <value>Good point. Maybe it’s open.</value>\n  </data>\n  <data name=\"Dlg_ResearchVessel_1041\" xml:space=\"preserve\">\n    <value>Yes! The force field’s down, we’re free to enter.</value>\n  </data>\n  <data name=\"Dlg_ResearchVessel_1042\" xml:space=\"preserve\">\n    <value>All right! Solenoids, hmm, filter capacitators…</value>\n  </data>\n  <data name=\"Dlg_ResearchVessel_1043\" xml:space=\"preserve\">\n    <value>…OS-CON polymer capacitators, rectifier tubes, and klystrons.</value>\n  </data>\n  <data name=\"Dlg_ResearchVessel_1044\" xml:space=\"preserve\">\n    <value>Checking the list and… we’re good!</value>\n  </data>\n  <data name=\"Dlg_ResearchVessel_1045\" xml:space=\"preserve\">\n    <value>Ok, guys, come back to Sapho and we’ll set a course out of here!</value>\n  </data>\n  <data name=\"Dlg_ResearchVessel_1046\" xml:space=\"preserve\">\n    <value>What’s the next stop?</value>\n  </data>\n  <data name=\"Dlg_ResearchVessel_1047\" xml:space=\"preserve\">\n    <value>We need to hit the black market for those fuel cells.</value>\n  </data>\n  <data name=\"Dlg_ResearchVessel_1048\" xml:space=\"preserve\">\n    <value>Manjeet is our man.</value>\n  </data>\n  <data name=\"Dlg_ResearchVessel_1049\" xml:space=\"preserve\">\n    <value>Right. To the Junkyard, Jeeves. </value>\n  </data>\n  <data name=\"Dlg_ResearchVessel_1050\" xml:space=\"preserve\">\n    <value>This computer over here, might it be helpful?</value>\n  </data>\n  <data name=\"Dlg_ResearchVessel_1051\" xml:space=\"preserve\">\n    <value>You never know. Apollo, you have the hacking device, would you mind…?</value>\n  </data>\n  <data name=\"Dlg_ResearchVessel_1052\" xml:space=\"preserve\">\n    <value>My pleasure.</value>\n  </data>\n  <data name=\"Dlg_ResearchVessel_1053\" xml:space=\"preserve\">\n    <value>This seems like another computer or security hub.</value>\n  </data>\n  <data name=\"Dlg_ResearchVessel_1054\" xml:space=\"preserve\">\n    <value>Check it out.</value>\n  </data>\n  <data name=\"Dlg_ResearchVessel_1055\" xml:space=\"preserve\">\n    <value>I’ve got another security hub. Apollo?</value>\n  </data>\n  <data name=\"Dlg_ResearchVessel_1056\" xml:space=\"preserve\">\n    <value>On my way. </value>\n  </data>\n  <data name=\"Dlg_ChineseEscape_1000\" xml:space=\"preserve\">\n    <value>We’re near the rendezvous point with Madelyn. </value>\n  </data>\n  <data name=\"Dlg_ChineseEscape_1001\" xml:space=\"preserve\">\n    <value>Red guards to cargo transport GA7. Enemy detected. EAC mother ship.</value>\n  </data>\n  <data name=\"Dlg_ChineseEscape_1002\" xml:space=\"preserve\">\n    <value>Provide cover fire and we will engage and destroy. Do you copy?</value>\n  </data>\n  <data name=\"Dlg_ChineseEscape_1003\" xml:space=\"preserve\">\n    <value>What should we do? We can’t answer. They’ll know right away we’re not Chinese.</value>\n  </data>\n  <data name=\"Dlg_ChineseEscape_1004\" xml:space=\"preserve\">\n    <value>I’ve got a back-up plan. </value>\n  </data>\n  <data name=\"Dlg_ChineseEscape_1005\" xml:space=\"preserve\">\n    <value>This may get ugly. </value>\n  </data>\n  <data name=\"Dlg_ChineseEscape_1006\" xml:space=\"preserve\">\n    <value>The worst that can happen is they destroy their own ship.</value>\n  </data>\n  <data name=\"Dlg_ChineseEscape_1007\" xml:space=\"preserve\">\n    <value>Remember, our fighters are still docked inside. </value>\n  </data>\n  <data name=\"Dlg_ChineseEscape_1008\" xml:space=\"preserve\">\n    <value>Right, but all the plutonium will be lost.</value>\n  </data>\n  <data name=\"Dlg_ChineseEscape_1009\" xml:space=\"preserve\">\n    <value>All the more reason to give it our best shot.</value>\n  </data>\n  <data name=\"Dlg_ChineseEscape_1010\" xml:space=\"preserve\">\n    <value>GA7. This is your last warning. Respond or prepare for take-over. </value>\n  </data>\n  <data name=\"Dlg_ChineseEscape_1011\" xml:space=\"preserve\">\n    <value>Get ready.</value>\n  </data>\n  <data name=\"Dlg_ChineseEscape_1012\" xml:space=\"preserve\">\n    <value>Red Guards, disable GA7 engines and assume control of ship. </value>\n  </data>\n  <data name=\"Dlg_ChineseEscape_1013\" xml:space=\"preserve\">\n    <value>Fire!</value>\n  </data>\n  <data name=\"Dlg_ChineseEscape_1014\" xml:space=\"preserve\">\n    <value>Disable your weapons and engines and we will let you live!</value>\n  </data>\n  <data name=\"Dlg_ChineseEscape_1015\" xml:space=\"preserve\">\n    <value>Bu hao, pal, bu hao. We’re taking this dandy load of plutonium with us. </value>\n  </data>\n  <data name=\"Dlg_ChineseEscape_1016\" xml:space=\"preserve\">\n    <value>Then prepare for larger engagement</value>\n  </data>\n  <data name=\"Dlg_ChineseEscape_1017\" xml:space=\"preserve\">\n    <value>We have called for reinforcements from a nearby outpost base.</value>\n  </data>\n  <data name=\"Dlg_ChineseEscape_1018\" xml:space=\"preserve\">\n    <value>Only a fool provokes the Chinese army!</value>\n  </data>\n  <data name=\"Dlg_ChineseEscape_1019\" xml:space=\"preserve\">\n    <value>Damn it!</value>\n  </data>\n  <data name=\"Dlg_ChineseEscape_1020\" xml:space=\"preserve\">\n    <value>Steady, bro. We take care of these guys…</value>\n  </data>\n  <data name=\"Dlg_ChineseEscape_1021\" xml:space=\"preserve\">\n    <value>…and hope to get to Madelyn before their reinforcements arrive.</value>\n  </data>\n  <data name=\"Dlg_ChineseEscape_1022\" xml:space=\"preserve\">\n    <value>Just to review… You were supposed to open fire after I got into battle range.</value>\n  </data>\n  <data name=\"Dlg_ChineseEscape_1023\" xml:space=\"preserve\">\n    <value>Shit happens.</value>\n  </data>\n  <data name=\"Dlg_ChineseEscape_1024\" xml:space=\"preserve\">\n    <value>Copy that. Let’s finish them off together and get back to Manjeet.</value>\n  </data>\n  <data name=\"Dlg_ChineseEscape_1025\" xml:space=\"preserve\">\n    <value>Right. I’m sick of this turret cockpit. I feel the need to MOVE.</value>\n  </data>\n  <data name=\"Dlg_ChineseEscape_1026\" xml:space=\"preserve\">\n    <value>Enemies destroyed. We’re clear to proceed.</value>\n  </data>\n  <data name=\"Dlg_ChineseEscape_1027\" xml:space=\"preserve\">\n    <value>I’ll tell Manjeet we’re on our way. Next stop, the Junkyard Hilton.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_0100\" xml:space=\"preserve\">\n    <value>Seems we’re not alone. I’m detecting fighters. Lots of them.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_0101\" xml:space=\"preserve\">\n    <value>We’ll check it out. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_0102\" xml:space=\"preserve\">\n    <value>There’s a battle raging here, fire and gunshots all around. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_0103\" xml:space=\"preserve\">\n    <value>What the hell is that?</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_0104\" xml:space=\"preserve\">\n    <value>EAC Battleship, armed and operational.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_0105\" xml:space=\"preserve\">\n    <value>What is EAC doing around here?</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_0106\" xml:space=\"preserve\">\n    <value>All troops, withdraw! Repeat, withdraw! EAC forces incoming!</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_0107\" xml:space=\"preserve\">\n    <value>Seems they’re afraid of us. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_0108\" xml:space=\"preserve\">\n    <value>Guys, get to Thomas quickly. I’m only getting a weak signal of his ship. Find him ASAP. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_0109\" xml:space=\"preserve\">\n    <value>Roger that. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_0200\" xml:space=\"preserve\">\n    <value>Eat my steel, you filthy schlingels – ah, wait, Apollo? Is that you? </value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_0201\" xml:space=\"preserve\">\n    <value>Glad to see you at full strength, Thomas!</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_0202\" xml:space=\"preserve\">\n    <value>Those raiders gave me an adrenaline rush. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_0203\" xml:space=\"preserve\">\n    <value>I feel like a kid in my fifties again!</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_0204\" xml:space=\"preserve\">\n    <value>What happened here?</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_0205\" xml:space=\"preserve\">\n    <value>They came out of nowhere. Probably some raiding group that wanted equipment and cash. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_0206\" xml:space=\"preserve\">\n    <value>They weren’t interested in me, just my loot. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_0207\" xml:space=\"preserve\">\n    <value>Sorry for interrupting, guys, but there are still fighters inside the base. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_0208\" xml:space=\"preserve\">\n    <value>Maybe you could, ah… you know…</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_0209\" xml:space=\"preserve\">\n    <value>Fight them? </value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_0210\" xml:space=\"preserve\">\n    <value>That would be nice.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_0300\" xml:space=\"preserve\">\n    <value>Good job, guys! Bad news, though – the raiders seem to be regrouping for a bigger strike. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_0301\" xml:space=\"preserve\">\n    <value>I’m picking up several large ships as well. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_0302\" xml:space=\"preserve\">\n    <value>I have some defense turrets in storage. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_0303\" xml:space=\"preserve\">\n    <value>I didn’t have time to place them; the raiders took me by surprise. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_0304\" xml:space=\"preserve\">\n    <value>If you install them you can beef up our defenses. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_0305\" xml:space=\"preserve\">\n    <value>Shouldn’t we just hit the raiders while they’re regrouping?</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_0306\" xml:space=\"preserve\">\n    <value>Negative. Better to fortify the base and crush them at our gates. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_0307\" xml:space=\"preserve\">\n    <value>They won’t be expecting stationary defenses. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_0308\" xml:space=\"preserve\">\n    <value>Good point. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_0309\" xml:space=\"preserve\">\n    <value>Apollo, would you mind taking charge of placing those turrets?</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_0310\" xml:space=\"preserve\">\n    <value>And be quick, those raiders won’t take long to regroup. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_0311\" xml:space=\"preserve\">\n    <value>I’ll do my best.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_0400\" xml:space=\"preserve\">\n    <value>Enemy incoming. First wave of fighters. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_0401\" xml:space=\"preserve\">\n    <value>We’re ready.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_0402\" xml:space=\"preserve\">\n    <value>This group looks too easy. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_0403\" xml:space=\"preserve\">\n    <value>There are two mother ships on the horizon. Try to avoid taking damage.  </value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_0404\" xml:space=\"preserve\">\n    <value>And keep an eye on Thomas.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_0500\" xml:space=\"preserve\">\n    <value>Good job, everyone!</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_0501\" xml:space=\"preserve\">\n    <value>You do know there’s another wave approaching? Just saying.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_0502\" xml:space=\"preserve\">\n    <value>We’re always well-prepared. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_0503\" xml:space=\"preserve\">\n    <value>That’s what they say about duck l’orange. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_0600\" xml:space=\"preserve\">\n    <value>We have a birthday surprise for you! Kabooom – (laughter) he, he!</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_0601\" xml:space=\"preserve\">\n    <value>Oh my God, this is not good!</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_0602\" xml:space=\"preserve\">\n    <value>What’s that? </value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_0603\" xml:space=\"preserve\">\n    <value>Demolition ships. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_0604\" xml:space=\"preserve\">\n    <value>Cargo freighters packed with explosives on a collision course with… Sapho. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_0605\" xml:space=\"preserve\">\n    <value>Ok, Priority One: Everyone, target those suicide ships!</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_0606\" xml:space=\"preserve\">\n    <value>Just so you know, if one of those even grazes me…</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_0607\" xml:space=\"preserve\">\n    <value>…Sapho will turn into a pile of space debris. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_0608\" xml:space=\"preserve\">\n    <value>More like space vapor. I’ve seen these things before. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_0609\" xml:space=\"preserve\">\n    <value>My strong advice: look, but don’t touch. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_0610\" xml:space=\"preserve\">\n    <value>We’ll handle it. Madelyn, don’t worry. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_0700\" xml:space=\"preserve\">\n    <value>Good job, guys! Keep it up!</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_0800\" xml:space=\"preserve\">\n    <value>We have a minute to catch our breath before the final battle.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_0801\" xml:space=\"preserve\">\n    <value>Mother ships approaching.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_0802\" xml:space=\"preserve\">\n    <value>Use what time you have to repair those turrets. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_0803\" xml:space=\"preserve\">\n    <value>There’s plenty of maintenance equipment around my base.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_0804\" xml:space=\"preserve\">\n    <value>Let’s get to it. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_0805\" xml:space=\"preserve\">\n    <value>Don’t get too immersed. Make a few quick repairs, then get ready for the attack!</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_0900\" xml:space=\"preserve\">\n    <value>Concentrate on their weapons and generators. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_0901\" xml:space=\"preserve\">\n    <value>We can’t crush their armor, we can only target their weak spots.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_1000\" xml:space=\"preserve\">\n    <value>Splendid operation!</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_1001\" xml:space=\"preserve\">\n    <value>Seems like ol’ Thomas enjoyed the thrill. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_1002\" xml:space=\"preserve\">\n    <value>Good job, guys!</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_1003\" xml:space=\"preserve\">\n    <value>Now, I will spend some time on repairs, but thanks for the help!</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_1004\" xml:space=\"preserve\">\n    <value>You’re welcome.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_1005\" xml:space=\"preserve\">\n    <value>By the way, how did you know about this raider attack?</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_1006\" xml:space=\"preserve\">\n    <value>We didn’t. We came seeking your assistance. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_1007\" xml:space=\"preserve\">\n    <value>We’re ready to construct those alien material detectors. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_1008\" xml:space=\"preserve\">\n    <value>Excellent!</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_1009\" xml:space=\"preserve\">\n    <value>Francis Reef designed them and gave us the blueprints. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_1010\" xml:space=\"preserve\">\n    <value>We have all the components we need, and the fuel. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_1011\" xml:space=\"preserve\">\n    <value>Hm, are you ready to deploy them?</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_1012\" xml:space=\"preserve\">\n    <value>We need to build them first. We thought we could do it here. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_1013\" xml:space=\"preserve\">\n    <value>I don’t have the equipment and tools for that kind of job.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_1014\" xml:space=\"preserve\">\n    <value>You do! Remember the stuff we picked at Broken Moon? </value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_1015\" xml:space=\"preserve\">\n    <value>I was checking the list and according to specs from Reef…</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_1016\" xml:space=\"preserve\">\n    <value>…it is possible to build a simple manufacturing plant here. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_1017\" xml:space=\"preserve\">\n    <value>Seems you’re a step ahead of me. Then go right for it!</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_1018\" xml:space=\"preserve\">\n    <value>Pick up the tools you need in the cargo storage and build your plant.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_1019\" xml:space=\"preserve\">\n    <value>I can’t wait to see the results.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_1020\" xml:space=\"preserve\">\n    <value>Give us a little time and a brand new manufacturing…</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_1021\" xml:space=\"preserve\">\n    <value>…plant will be standing right by your door!</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_1022\" xml:space=\"preserve\">\n    <value>Superb!</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_1100\" xml:space=\"preserve\">\n    <value>Ready to boogie! This “plant” should be able to build the detectors!</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_1101\" xml:space=\"preserve\">\n    <value>I take it Reef carefully instructed you as to the process?</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_1102\" xml:space=\"preserve\">\n    <value>We… hope so.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_1200\" xml:space=\"preserve\">\n    <value>That… was fast!</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_1201\" xml:space=\"preserve\">\n    <value>You are already done?</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_1202\" xml:space=\"preserve\">\n    <value>It was just a matter of assembly and connection. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_1203\" xml:space=\"preserve\">\n    <value>Remember, we already had all the chips and stuff.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_1204\" xml:space=\"preserve\">\n    <value>Great! Now that you have the detectors…</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_1205\" xml:space=\"preserve\">\n    <value>…you need to place them in order to create the triangulation necessary.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_1206\" xml:space=\"preserve\">\n    <value>What can we expect to find, anyway? Any “guesstimates”?</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_1207\" xml:space=\"preserve\">\n    <value>The detectors should give you nearly precise locations of all items…</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_1208\" xml:space=\"preserve\">\n    <value>…across the inner solar system made of this alien material. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_1209\" xml:space=\"preserve\">\n    <value>Random thought. If one of the artifacts was with the Russians…</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_1210\" xml:space=\"preserve\">\n    <value>…would it point to their base or mother ship as well?</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_1211\" xml:space=\"preserve\">\n    <value>Exactly! Well, unless the artifacts were heavily shielded.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_1212\" xml:space=\"preserve\">\n    <value>I understand. So now we just need to find some good locations for placing the detectors?</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_1213\" xml:space=\"preserve\">\n    <value>I suggest we place them in free space…</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_1214\" xml:space=\"preserve\">\n    <value>…somewhere outside the territories occupied by someone. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_1215\" xml:space=\"preserve\">\n    <value>You can’t place those things in open space. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_1216\" xml:space=\"preserve\">\n    <value>What?</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_1217\" xml:space=\"preserve\">\n    <value>They won’t work for long distances. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_1218\" xml:space=\"preserve\">\n    <value>But I thought that was why we got the rare plutonium isotopes!</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_1219\" xml:space=\"preserve\">\n    <value>Even with the super plutonium, you still need to place the detectors in…</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_1220\" xml:space=\"preserve\">\n    <value>…existing long-range radar fields.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_1221\" xml:space=\"preserve\">\n    <value>Consider them extenders only. You need to overtake three radar…</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_1222\" xml:space=\"preserve\">\n    <value>…operations across the Solar system and attach those detectors to them!</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_1223\" xml:space=\"preserve\">\n    <value>Overtake?</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_1224\" xml:space=\"preserve\">\n    <value>Ok, listen. I’ve already scouted some suitable locations. Chinese radar array at…</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_1225\" xml:space=\"preserve\">\n    <value>…Yunzun, Russian array at Tver, and EAC radar array at Silver Foresight.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_1226\" xml:space=\"preserve\">\n    <value>You must mask your attack as a pirate raid. Rush inside, destroy some equipment and…</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_1227\" xml:space=\"preserve\">\n    <value>…while some of you are looting, one of you will sneak into the command center…</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_1228\" xml:space=\"preserve\">\n    <value>…and attach the detector to the cables for the radar dishes.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_1229\" xml:space=\"preserve\">\n    <value>Make sure it looks like a raid, so the device stays attached and online long enough…</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_1230\" xml:space=\"preserve\">\n    <value>…to complete the two remaining missions.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_1231\" xml:space=\"preserve\">\n    <value>Remember, we need triangulation, that is three detectors active at the same time.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_1232\" xml:space=\"preserve\">\n    <value>Understand?</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_1233\" xml:space=\"preserve\">\n    <value>No, but I’m hoping YOU do.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_1234\" xml:space=\"preserve\">\n    <value>I do. This is the easiest and most functional way to do it. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_1235\" xml:space=\"preserve\">\n    <value>Ok, let’s get this over with. Madelyn?</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_1236\" xml:space=\"preserve\">\n    <value>Ready for Yunzun?</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_1237\" xml:space=\"preserve\">\n    <value>China, here we come!</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonPlant_1238\" xml:space=\"preserve\">\n    <value>We’ll brush up on our Kung-fu on the way!</value>\n  </data>\n  <data name=\"Dlg_ChineseTransport_01_01\" xml:space=\"preserve\">\n    <value>Changde. I hear this place is a tall stack of laughs.</value>\n  </data>\n  <data name=\"Dlg_ChineseTransport_01_02\" xml:space=\"preserve\">\n    <value>Before taking over the cargo transport, you must disable the transmitter. </value>\n  </data>\n  <data name=\"Dlg_ChineseTransport_01_03\" xml:space=\"preserve\">\n    <value>Otherwise the base will send a warning to the refinery. </value>\n  </data>\n  <data name=\"Dlg_ChineseTransport_01_04\" xml:space=\"preserve\">\n    <value>To do this, you need two security codes from the two different asteroid stations.</value>\n  </data>\n  <data name=\"Dlg_ChineseTransport_01_05\" xml:space=\"preserve\">\n    <value>Me and Tarja will go after the distant one. </value>\n  </data>\n  <data name=\"Dlg_ChineseTransport_01_06\" xml:space=\"preserve\">\n    <value>Apollo, you and Valentin get the security code from the other base.</value>\n  </data>\n  <data name=\"Dlg_ChineseTransport_01_07\" xml:space=\"preserve\">\n    <value>Roger that.</value>\n  </data>\n  <data name=\"Dlg_ChineseTransport_02_01\" xml:space=\"preserve\">\n    <value>Security code acquired.</value>\n  </data>\n  <data name=\"Dlg_ChineseTransport_02_02\" xml:space=\"preserve\">\n    <value>Good. Get outside the station and meet us on the way to the transmitter.</value>\n  </data>\n  <data name=\"Dlg_ChineseTransport_02_03\" xml:space=\"preserve\">\n    <value>Acknowledged.</value>\n  </data>\n  <data name=\"Dlg_ChineseTransport_03_01\" xml:space=\"preserve\">\n    <value>Damn! They’re shooting at me!</value>\n  </data>\n  <data name=\"Dlg_ChineseTransport_04_01\" xml:space=\"preserve\">\n    <value>Another bunch of red guards!</value>\n  </data>\n  <data name=\"Dlg_ChineseTransport_04_02\" xml:space=\"preserve\">\n    <value>Marcus, I may be running a little late.</value>\n  </data>\n  <data name=\"Dlg_ChineseTransport_04_03\" xml:space=\"preserve\">\n    <value>Fine, I’ll take care of my own business and wait for you.</value>\n  </data>\n  <data name=\"Dlg_ChineseTransport_05_01\" xml:space=\"preserve\">\n    <value>We need to get rid of all the guards to get inside!</value>\n  </data>\n  <data name=\"Dlg_ChineseTransport_06_01\" xml:space=\"preserve\">\n    <value>I’ll go take care of the transport ship.</value>\n  </data>\n  <data name=\"Dlg_ChineseTransport_06_02\" xml:space=\"preserve\">\n    <value>Tarja, Valentin, Apollo – </value>\n  </data>\n  <data name=\"Dlg_ChineseTransport_06_03\" xml:space=\"preserve\">\n    <value>– you deactivate the security terminals and destroy the transmitter.</value>\n  </data>\n  <data name=\"Dlg_ChineseTransport_07_01\" xml:space=\"preserve\">\n    <value>Your turn, Apollo. Disable those two terminals.</value>\n  </data>\n  <data name=\"Dlg_ChineseTransport_08_01\" xml:space=\"preserve\">\n    <value>Done. Now I’ll go place the bomb on the transmitter.</value>\n  </data>\n  <data name=\"Dlg_ChineseTransport_09_01\" xml:space=\"preserve\">\n    <value>Placed. Everyone, quick, get to a safe distance!</value>\n  </data>\n  <data name=\"Dlg_ChineseTransport_11_01\" xml:space=\"preserve\">\n    <value>We’re almost good to go. I got the transporter.</value>\n  </data>\n  <data name=\"Dlg_ChineseTransport_11_02\" xml:space=\"preserve\">\n    <value>Again, Apollo, Tarja, Valentin. </value>\n  </data>\n  <data name=\"Dlg_ChineseTransport_11_03\" xml:space=\"preserve\">\n    <value>You need to get an entrance code from the transport control. </value>\n  </data>\n  <data name=\"Dlg_ChineseTransport_11_04\" xml:space=\"preserve\">\n    <value>On our way, boss.</value>\n  </data>\n  <data name=\"Dlg_ChineseTransport_12_01\" xml:space=\"preserve\">\n    <value>I’ve heard a lot about this place. They say over 40% of all plutonium ore comes from here.</value>\n  </data>\n  <data name=\"Dlg_ChineseTransport_12_02\" xml:space=\"preserve\">\n    <value>And dozens of miners die here every day, thanks to poor safety measures.</value>\n  </data>\n  <data name=\"Dlg_ChineseTransport_12_03\" xml:space=\"preserve\">\n    <value>They choose this way of life. </value>\n  </data>\n  <data name=\"Dlg_ChineseTransport_12_04\" xml:space=\"preserve\">\n    <value>The conditions may be inhuman, but the workers aren’t slaves. </value>\n  </data>\n  <data name=\"Dlg_ChineseTransport_12_05\" xml:space=\"preserve\">\n    <value>They’re free to leave anytime they want.</value>\n  </data>\n  <data name=\"Dlg_ChineseTransport_12_06\" xml:space=\"preserve\">\n    <value>They need cash. And many of them can’t leave because of their families. </value>\n  </data>\n  <data name=\"Dlg_ChineseTransport_13_01\" xml:space=\"preserve\">\n    <value>Take out those guards!</value>\n  </data>\n  <data name=\"Dlg_ChineseTransport_14_01\" xml:space=\"preserve\">\n    <value>Damn, the door is locked! We need to find some other way.</value>\n  </data>\n  <data name=\"Dlg_ChineseTransport_15_01\" xml:space=\"preserve\">\n    <value>Hah! I found another way.</value>\n  </data>\n  <data name=\"Dlg_ChineseTransport_16_01\" xml:space=\"preserve\">\n    <value>Ok, this is the computer that has the entry code!</value>\n  </data>\n  <data name=\"Dlg_ChineseTransport_17_01\" xml:space=\"preserve\">\n    <value>Apollo, what’s your status?</value>\n  </data>\n  <data name=\"Dlg_ChineseTransport_17_02\" xml:space=\"preserve\">\n    <value>We just got the code.</value>\n  </data>\n  <data name=\"Dlg_ChineseTransport_17_03\" xml:space=\"preserve\">\n    <value>Good! Hurry up then. I’ve got a welcoming committee here.</value>\n  </data>\n  <data name=\"Dlg_ChineseTransport_18_01\" xml:space=\"preserve\">\n    <value>Guys, help me get rid of these enemy fighters so we can roll!</value>\n  </data>\n  <data name=\"Dlg_ChineseTransport_19_01\" xml:space=\"preserve\">\n    <value>EAC agents! We will crush you!</value>\n  </data>\n  <data name=\"Dlg_ChineseTransport_19_02\" xml:space=\"preserve\">\n    <value>Gosh, I love these Chinese special forces.</value>\n  </data>\n  <data name=\"Dlg_ChineseTransport_20_01\" xml:space=\"preserve\">\n    <value>Area clear. Docking in, I’m ready to depart for Jingzhou.</value>\n  </data>\n  <data name=\"Dlg_ChineseTransport_20_03\" xml:space=\"preserve\">\n    <value>Excellent! You know the plan, I am wishing you best of luck!</value>\n  </data>\n  <data name=\"Dlg_EACSurveySite_0711\" xml:space=\"preserve\">\n    <value>There are lot miners near you. Go help them.</value>\n  </data>\n  <data name=\"Dlg_SlaverBase2_08_06\" xml:space=\"preserve\">\n    <value>Here are their coordinates downloaded from hub.</value>\n  </data>\n  <data name=\"Dlg_FortValiantC_0100\" xml:space=\"preserve\">\n    <value>Fort Valiant, here we come. </value>\n  </data>\n  <data name=\"Dlg_FortValiantC_0101\" xml:space=\"preserve\">\n    <value>I hope Captain Cedric has some good news for us. </value>\n  </data>\n  <data name=\"Dlg_FortValiantC_0102\" xml:space=\"preserve\">\n    <value>Marcus Rainier to Captain Cedric. </value>\n  </data>\n  <data name=\"Dlg_FortValiantC_0103\" xml:space=\"preserve\">\n    <value>Hail!</value>\n  </data>\n  <data name=\"Dlg_FortValiantC_0104\" xml:space=\"preserve\">\n    <value>We’ve returned. The second Slavers operation was successful. </value>\n  </data>\n  <data name=\"Dlg_FortValiantC_0105\" xml:space=\"preserve\">\n    <value>I’ve gone through the reports you sent. Good work, again! </value>\n  </data>\n  <data name=\"Dlg_FortValiantC_0106\" xml:space=\"preserve\">\n    <value>I will transfer you the financial reward. Are you ready for another assignment?</value>\n  </data>\n  <data name=\"Dlg_FortValiantC_0107\" xml:space=\"preserve\">\n    <value>Maybe later, first…</value>\n  </data>\n  <data name=\"Dlg_FortValiantC_0108\" xml:space=\"preserve\">\n    <value>…the audience with patriarchs. Do you have any news for us?</value>\n  </data>\n  <data name=\"Dlg_FortValiantC_0109\" xml:space=\"preserve\">\n    <value>Indeed! The patriarchs are willing to give you an audience.</value>\n  </data>\n  <data name=\"Dlg_FortValiantC_0110\" xml:space=\"preserve\">\n    <value>Proceed to the Chamber of the Council.</value>\n  </data>\n  <data name=\"Dlg_FortValiantC_0200\" xml:space=\"preserve\">\n    <value>Hail there! You have permission to pass into the Council Chambers…</value>\n  </data>\n  <data name=\"Dlg_FortValiantC_0201\" xml:space=\"preserve\">\n    <value>…the patriarchs await you!</value>\n  </data>\n  <data name=\"Dlg_FortValiantC_0300\" xml:space=\"preserve\">\n    <value>You are clear to proceed.</value>\n  </data>\n  <data name=\"Dlg_FortValiantC_0301\" xml:space=\"preserve\">\n    <value>May the Council’s advice bring you the blessings you seek on your journey!</value>\n  </data>\n  <data name=\"Dlg_FortValiantC_0400\" xml:space=\"preserve\">\n    <value>Welcome. May the audience begin. Speak your Truth!</value>\n  </data>\n  <data name=\"Dlg_FortValiantC_0401\" xml:space=\"preserve\">\n    <value>We seek an artifact. An alien artifact. Remains of an ancient civilization. </value>\n  </data>\n  <data name=\"Dlg_FortValiantC_0402\" xml:space=\"preserve\">\n    <value>We have reason to believe you have come in contact with it. </value>\n  </data>\n  <data name=\"Dlg_FortValiantC_0403\" xml:space=\"preserve\">\n    <value>We would be grateful for any leads that might help us find it. </value>\n  </data>\n  <data name=\"Dlg_FortValiantC_0404\" xml:space=\"preserve\">\n    <value>We have no idea what you are talking about. </value>\n  </data>\n  <data name=\"Dlg_FortValiantC_0405\" xml:space=\"preserve\">\n    <value>We neither know about any artifact you call “alien”…</value>\n  </data>\n  <data name=\"Dlg_FortValiantC_0406\" xml:space=\"preserve\">\n    <value>…nor do we believe in the existence of such.</value>\n  </data>\n  <data name=\"Dlg_FortValiantC_0407\" xml:space=\"preserve\">\n    <value>I don’t believe a word he’s saying.</value>\n  </data>\n  <data name=\"Dlg_FortValiantC_0408\" xml:space=\"preserve\">\n    <value>Me either, but there’s nothing we can do about it now. </value>\n  </data>\n  <data name=\"Dlg_FortValiantC_0409\" xml:space=\"preserve\">\n    <value>Let’s get our equipment back and head back to Sapho.</value>\n  </data>\n  <data name=\"Dlg_FortValiantC_0410\" xml:space=\"preserve\">\n    <value>Are there any other matters you wish to discuss?</value>\n  </data>\n  <data name=\"Dlg_FortValiantC_0411\" xml:space=\"preserve\">\n    <value>No. We’re good. You’ve been incredibly… (un)helpful. </value>\n  </data>\n  <data name=\"Dlg_FortValiantC_0412\" xml:space=\"preserve\">\n    <value>This audience is over. May God be with you. </value>\n  </data>\n  <data name=\"Dlg_FortValiantC_0500\" xml:space=\"preserve\">\n    <value>I have information you seek. If you wish to know more, proceed to these coordinates. </value>\n  </data>\n  <data name=\"Dlg_FortValiantC_0501\" xml:space=\"preserve\">\n    <value>That’s weird. What should we do? </value>\n  </data>\n  <data name=\"Dlg_FortValiantC_0502\" xml:space=\"preserve\">\n    <value>Let’s check it out. We have nothing to lose, right?</value>\n  </data>\n  <data name=\"Dlg_FortValiantC_0503\" xml:space=\"preserve\">\n    <value>Except body parts, vital organs… Like always.</value>\n  </data>\n  <data name=\"Dlg_FortValiantC_0600\" xml:space=\"preserve\">\n    <value>Psst, over there.</value>\n  </data>\n  <data name=\"Dlg_FortValiantC_0601\" xml:space=\"preserve\">\n    <value>Are you talking to us, Templar?</value>\n  </data>\n  <data name=\"Dlg_FortValiantC_0602\" xml:space=\"preserve\">\n    <value>I know what you came for, what you yearn for, and what you were unrighteously denied. </value>\n  </data>\n  <data name=\"Dlg_FortValiantC_0603\" xml:space=\"preserve\">\n    <value>I know about the lies upon lies perpetrated by our patriarchs…</value>\n  </data>\n  <data name=\"Dlg_FortValiantC_0604\" xml:space=\"preserve\">\n    <value>Can we cut to the–</value>\n  </data>\n  <data name=\"Dlg_FortValiantC_0605\" xml:space=\"preserve\">\n    <value>Let him talk.</value>\n  </data>\n  <data name=\"Dlg_FortValiantC_0606\" xml:space=\"preserve\">\n    <value>You came for the artifact. The one our Order holds in secret. </value>\n  </data>\n  <data name=\"Dlg_FortValiantC_0607\" xml:space=\"preserve\">\n    <value>What do you know about it? And why are you telling us all this?</value>\n  </data>\n  <data name=\"Dlg_FortValiantC_0608\" xml:space=\"preserve\">\n    <value>Please continue, sir…? </value>\n  </data>\n  <data name=\"Dlg_FortValiantC_0609\" xml:space=\"preserve\">\n    <value>Geraint, that’s my Order name. </value>\n  </data>\n  <data name=\"Dlg_FortValiantC_0610\" xml:space=\"preserve\">\n    <value>I was the leader of the expedition that discovered this inhuman artifact. </value>\n  </data>\n  <data name=\"Dlg_FortValiantC_0611\" xml:space=\"preserve\">\n    <value>Our Order deemed it to be heretical, cursed by diabolical powers. </value>\n  </data>\n  <data name=\"Dlg_FortValiantC_0612\" xml:space=\"preserve\">\n    <value>The patriarchs ordered it to be kept in secret – even from our fellow brothers.</value>\n  </data>\n  <data name=\"Dlg_FortValiantC_0613\" xml:space=\"preserve\">\n    <value>It is not being studied, nor is anyone else making use of it. </value>\n  </data>\n  <data name=\"Dlg_FortValiantC_0614\" xml:space=\"preserve\">\n    <value>But… I… I joined the Order to search for Truth, not for lies and concealment…</value>\n  </data>\n  <data name=\"Dlg_FortValiantC_0615\" xml:space=\"preserve\">\n    <value>So, you wish to aid us, noble sir?</value>\n  </data>\n  <data name=\"Dlg_FortValiantC_0616\" xml:space=\"preserve\">\n    <value>I want this artifact to be studied. I have heard of some your deeds…</value>\n  </data>\n  <data name=\"Dlg_FortValiantC_0617\" xml:space=\"preserve\">\n    <value>…and I am convinced you will make better use of it than we are.</value>\n  </data>\n  <data name=\"Dlg_FortValiantC_0618\" xml:space=\"preserve\">\n    <value>My intuition was right. That’s where they’re keeping the artifact!</value>\n  </data>\n  <data name=\"Dlg_FortValiantC_0619\" xml:space=\"preserve\">\n    <value>Can you give us specific directions?</value>\n  </data>\n  <data name=\"Dlg_FortValiantC_0620\" xml:space=\"preserve\">\n    <value>I marked the location and the forgotten secret path on your GPS. </value>\n  </data>\n  <data name=\"Dlg_FortValiantC_0621\" xml:space=\"preserve\">\n    <value>Take this equipment first, you will need it!</value>\n  </data>\n  <data name=\"Dlg_FortValiantC_0622\" xml:space=\"preserve\">\n    <value>I suggest only one of you undertake this mission.</value>\n  </data>\n  <data name=\"Dlg_FortValiantC_0623\" xml:space=\"preserve\">\n    <value>The underground has been – what is your word? – booby-trapped.</value>\n  </data>\n  <data name=\"Dlg_FortValiantC_0624\" xml:space=\"preserve\">\n    <value>A single person might more easily avoid its pitfalls.</value>\n  </data>\n  <data name=\"Dlg_FortValiantC_0626\" xml:space=\"preserve\">\n    <value>Got it. I’ll go.</value>\n  </data>\n  <data name=\"Dlg_FortValiantC_0627\" xml:space=\"preserve\">\n    <value>May Providence be with you!</value>\n  </data>\n  <data name=\"Dlg_FortValiantC_0628\" xml:space=\"preserve\">\n    <value>Many thanks, sir! </value>\n  </data>\n  <data name=\"Dlg_FortValiantC_0700\" xml:space=\"preserve\">\n    <value>Ready to roll!</value>\n  </data>\n  <data name=\"Dlg_FortValiantC_0701\" xml:space=\"preserve\">\n    <value>Good luck, Apollo!</value>\n  </data>\n  <data name=\"Dlg_FortValiantC_0800\" xml:space=\"preserve\">\n    <value>Hm, the path seems to go through this broken vent. </value>\n  </data>\n  <data name=\"Dlg_FortValiantC_0900\" xml:space=\"preserve\">\n    <value>I can’t avoid this security field. There must be a computer controlling it. </value>\n  </data>\n  <data name=\"Dlg_FortValiantC_1000\" xml:space=\"preserve\">\n    <value>Path clear!</value>\n  </data>\n  <data name=\"Dlg_FortValiantC_1200\" xml:space=\"preserve\">\n    <value>Security sensors. Need to avoid them!</value>\n  </data>\n  <data name=\"Dlg_FortValiantC_1300\" xml:space=\"preserve\">\n    <value>This sensor looks like a tricky one!</value>\n  </data>\n  <data name=\"Dlg_FortValiantC_1400\" xml:space=\"preserve\">\n    <value>Looks like the treasure cache! Radiated – damn!</value>\n  </data>\n  <data name=\"Dlg_FortValiantC_1401\" xml:space=\"preserve\">\n    <value>Relics, some old remains… Fascinating!</value>\n  </data>\n  <data name=\"Dlg_FortValiantC_1402\" xml:space=\"preserve\">\n    <value>Got to find the artifact, fast. Hope my computer is able to identify it. </value>\n  </data>\n  <data name=\"Dlg_FortValiantC_1500\" xml:space=\"preserve\">\n    <value>The artifact must be in one of those concrete blocks. </value>\n  </data>\n  <data name=\"Dlg_FortValiantC_1501\" xml:space=\"preserve\">\n    <value>Gotta be careful not to destroy it. Drilling should be safe… </value>\n  </data>\n  <data name=\"Dlg_FortValiantC_1600\" xml:space=\"preserve\">\n    <value>According to the computer – this is it! Excellent! </value>\n  </data>\n  <data name=\"Dlg_FortValiantC_1601\" xml:space=\"preserve\">\n    <value>Better get back.</value>\n  </data>\n  <data name=\"Dlg_FortValiantC_1700\" xml:space=\"preserve\">\n    <value>Damn! I hate these security fields…</value>\n  </data>\n  <data name=\"Dlg_FortValiantC_1701\" xml:space=\"preserve\">\n    <value>Gotta find a way to get rid of them – or find the computer that controls them. </value>\n  </data>\n  <data name=\"Dlg_FortValiantC_1800\" xml:space=\"preserve\">\n    <value>Looks like the guards left this room open. </value>\n  </data>\n  <data name=\"Dlg_FortValiantC_1900\" xml:space=\"preserve\">\n    <value>This computer might help me get out of here!</value>\n  </data>\n  <data name=\"Dlg_FortValiantC_2000\" xml:space=\"preserve\">\n    <value>Hm, there seems to be another way out!</value>\n  </data>\n  <data name=\"Dlg_FortValiantC_2101\" xml:space=\"preserve\">\n    <value>Now, let’s get the hell out of here!</value>\n  </data>\n  <data name=\"Dlg_FortValiantC_2201\" xml:space=\"preserve\">\n    <value>Crap. Dead end. There must be another way out.</value>\n  </data>\n  <data name=\"Dlg_FortValiantC_2300\" xml:space=\"preserve\">\n    <value>Hmm, a possible exit. Maybe it’s time to ask Sir Geraint for some hints. </value>\n  </data>\n  <data name=\"Dlg_FortValiantC_2301\" xml:space=\"preserve\">\n    <value>Sir Geraint? I reached a dead end.</value>\n  </data>\n  <data name=\"Dlg_FortValiantC_2302\" xml:space=\"preserve\">\n    <value>Either the tunnels are impassable or they’re guarded by scanner.</value>\n  </data>\n  <data name=\"Dlg_FortValiantC_2303\" xml:space=\"preserve\">\n    <value>You’re almost there. I will send you new GPS coordinates…</value>\n  </data>\n  <data name=\"Dlg_FortValiantC_2304\" xml:space=\"preserve\">\n    <value>…a path through the catacombs to the main temple.</value>\n  </data>\n  <data name=\"Dlg_FortValiantC_2305\" xml:space=\"preserve\">\n    <value>I will wait for you on the surface, together with your friends.  </value>\n  </data>\n  <data name=\"Dlg_FortValiantC_2400\" xml:space=\"preserve\">\n    <value>That was tons of fun.</value>\n  </data>\n  <data name=\"Dlg_FortValiantC_2401\" xml:space=\"preserve\">\n    <value>Success?</value>\n  </data>\n  <data name=\"Dlg_FortValiantC_2402\" xml:space=\"preserve\">\n    <value>Success! I have the artifact. </value>\n  </data>\n  <data name=\"Dlg_FortValiantC_2403\" xml:space=\"preserve\">\n    <value>Glad you made it and found the object you seek! I wish you blessings on your journey!</value>\n  </data>\n  <data name=\"Dlg_FortValiantC_2404\" xml:space=\"preserve\">\n    <value>Apollo, grab the equipment you left before the meeting with the Council. </value>\n  </data>\n  <data name=\"Dlg_FortValiantC_2405\" xml:space=\"preserve\">\n    <value>Then get ready for departure. </value>\n  </data>\n  <data name=\"Dlg_FortValiantC_2406\" xml:space=\"preserve\">\n    <value>Departure where?</value>\n  </data>\n  <data name=\"Dlg_FortValiantC_2407\" xml:space=\"preserve\">\n    <value>Rime.</value>\n  </data>\n  <data name=\"Dlg_FortValiantC_2408\" xml:space=\"preserve\">\n    <value>Get your equipment back, we can talk on the way there.</value>\n  </data>\n  <data name=\"Dlg_FortValiantC_2500\" xml:space=\"preserve\">\n    <value>Your audience took quite some time. Is everything settled to you satisfaction?</value>\n  </data>\n  <data name=\"Dlg_FortValiantC_2501\" xml:space=\"preserve\">\n    <value>Yes, brother, we got the answers we pursued.</value>\n  </data>\n  <data name=\"Dlg_FortValiantC_2502\" xml:space=\"preserve\">\n    <value>Excellent! </value>\n  </data>\n  <data name=\"Dlg_FortValiantC_2600\" xml:space=\"preserve\">\n    <value>So… what’s the plan?</value>\n  </data>\n  <data name=\"Dlg_FortValiantC_2601\" xml:space=\"preserve\">\n    <value>Thomas came up with a plan for constructing an alien artifact detector. </value>\n  </data>\n  <data name=\"Dlg_FortValiantC_2602\" xml:space=\"preserve\">\n    <value>Using the pieces we already have…</value>\n  </data>\n  <data name=\"Dlg_FortValiantC_2603\" xml:space=\"preserve\">\n    <value>…we should have enough information to create a long-range detector.</value>\n  </data>\n  <data name=\"Dlg_FortValiantC_2604\" xml:space=\"preserve\">\n    <value>It’ll allow us to locate other artifact parts scattered through the solar system.</value>\n  </data>\n  <data name=\"Dlg_FortValiantC_2605\" xml:space=\"preserve\">\n    <value>Why are we going to Rime? </value>\n  </data>\n  <data name=\"Dlg_FortValiantC_2606\" xml:space=\"preserve\">\n    <value>You need two things: a brilliant technician and hi-end components.</value>\n  </data>\n  <data name=\"Dlg_FortValiantC_2607\" xml:space=\"preserve\">\n    <value>I have references on a guy, Francis Reef, …</value>\n  </data>\n  <data name=\"Dlg_FortValiantC_2608\" xml:space=\"preserve\">\n    <value>…supposedly one of the best R&amp;D people at OmniCorp Technologies.</value>\n  </data>\n  <data name=\"Dlg_FortValiantC_2609\" xml:space=\"preserve\">\n    <value>I don’t know him personally, but my contacts say he’s a genius. </value>\n  </data>\n  <data name=\"Dlg_FortValiantC_2610\" xml:space=\"preserve\">\n    <value>Can’t you make the device yourself? With our help?</value>\n  </data>\n  <data name=\"Dlg_FortValiantC_2611\" xml:space=\"preserve\">\n    <value>Nah, this is way beyond my abilities. I came up with the concept…</value>\n  </data>\n  <data name=\"Dlg_FortValiantC_2612\" xml:space=\"preserve\">\n    <value>…but you need someone who can technically pull it off.</value>\n  </data>\n  <data name=\"Dlg_FortValiantC_2613\" xml:space=\"preserve\">\n    <value>Remember, we’re dealing with unknown substances and extremely long-range scanners. </value>\n  </data>\n  <data name=\"Dlg_FortValiantC_2614\" xml:space=\"preserve\">\n    <value>Understood.</value>\n  </data>\n  <data name=\"Dlg_FortValiantC_2615\" xml:space=\"preserve\">\n    <value>One more thing. The first artifact. Did you find it useful?</value>\n  </data>\n  <data name=\"Dlg_FortValiantC_2616\" xml:space=\"preserve\">\n    <value>In a sense… Nothing we can utilize in a pragmatic sense of the word. </value>\n  </data>\n  <data name=\"Dlg_FortValiantC_2617\" xml:space=\"preserve\">\n    <value>More of… pointer toward greater discovery. </value>\n  </data>\n  <data name=\"Dlg_FortValiantC_2618\" xml:space=\"preserve\">\n    <value>Meaning?</value>\n  </data>\n  <data name=\"Dlg_FortValiantC_2619\" xml:space=\"preserve\">\n    <value>At the moment, I have nothing more to say. Drop the Valiant artifact at my place. </value>\n  </data>\n  <data name=\"Dlg_FortValiantC_2620\" xml:space=\"preserve\">\n    <value>I will see whether I can find out anything more.</value>\n  </data>\n  <data name=\"Dlg_FortValiantC_2621\" xml:space=\"preserve\">\n    <value>That alien material detector should point us further.</value>\n  </data>\n  <data name=\"Dlg_FortValiantC_2622\" xml:space=\"preserve\">\n    <value>In other words, thanks to the artifact we can create a detector to search for… </value>\n  </data>\n  <data name=\"Dlg_FortValiantC_2623\" xml:space=\"preserve\">\n    <value>…other artifacts. Glad to have been so useful!</value>\n  </data>\n  <data name=\"Dlg_FortValiantC_2625\" xml:space=\"preserve\">\n    <value>Valentin, this work is important. Those Russians want those artifacts badly.</value>\n  </data>\n  <data name=\"Dlg_FortValiantC_2626\" xml:space=\"preserve\">\n    <value>They must have some reason – political or military – not just curiosity.  </value>\n  </data>\n  <data name=\"Dlg_FortValiantC_2627\" xml:space=\"preserve\">\n    <value>Okay, understood. </value>\n  </data>\n  <data name=\"Dlg_FortValiantC_2628\" xml:space=\"preserve\">\n    <value>Ready to head for Rime, guys?</value>\n  </data>\n  <data name=\"Dlg_FortValiantC_2629\" xml:space=\"preserve\">\n    <value>It’s Rime time. Set the course. I’ll take the artifact to Barth again and meet you there. </value>\n  </data>\n  <data name=\"Dlg_FortValiantC_2630\" xml:space=\"preserve\">\n    <value>Don’t start anything without me, understood?</value>\n  </data>\n  <data name=\"Dlg_FortValiantC_2631\" xml:space=\"preserve\">\n    <value>You’re the boss! </value>\n  </data>\n  <data name=\"Dlg_AlienGate_0100\" xml:space=\"preserve\">\n    <value>Here we are. According to the triangulation, …</value>\n  </data>\n  <data name=\"Dlg_AlienGate_0101\" xml:space=\"preserve\">\n    <value>…the source of the signal is somewhere nearby.</value>\n  </data>\n  <data name=\"Dlg_AlienGate_0102\" xml:space=\"preserve\">\n    <value>How precise are the scans?</value>\n  </data>\n  <data name=\"Dlg_AlienGate_0103\" xml:space=\"preserve\">\n    <value>Plus or minus a few hundred kilometers, I’d say.</value>\n  </data>\n  <data name=\"Dlg_AlienGate_0104\" xml:space=\"preserve\">\n    <value>I can live with that. </value>\n  </data>\n  <data name=\"Dlg_AlienGate_0200\" xml:space=\"preserve\">\n    <value>Enemy ships on radar! What are they doing here?</value>\n  </data>\n  <data name=\"Dlg_AlienGate_0201\" xml:space=\"preserve\">\n    <value>Take them down! Quick. </value>\n  </data>\n  <data name=\"Dlg_AlienGate_0300\" xml:space=\"preserve\">\n    <value>I don’t like this; we’d better be careful.</value>\n  </data>\n  <data name=\"Dlg_AlienGate_0301\" xml:space=\"preserve\">\n    <value>Continue searching, but stay on high alert. </value>\n  </data>\n  <data name=\"Dlg_AlienGate_0400\" xml:space=\"preserve\">\n    <value>Guys, let’s try a new spot. I transmitted each of you some coordinates to check. </value>\n  </data>\n  <data name=\"Dlg_AlienGate_0401\" xml:space=\"preserve\">\n    <value>Affirmative.</value>\n  </data>\n  <data name=\"Dlg_AlienGate_0402\" xml:space=\"preserve\">\n    <value>Got it.</value>\n  </data>\n  <data name=\"Dlg_AlienGate_0403\" xml:space=\"preserve\">\n    <value>Roger that.</value>\n  </data>\n  <data name=\"Dlg_AlienGate_0404\" xml:space=\"preserve\">\n    <value>I’ll keep scanning the area from afar.</value>\n  </data>\n  <data name=\"Dlg_AlienGate_0500\" xml:space=\"preserve\">\n    <value>Sorry to disturb you, guys, but I’ve got ships incoming. </value>\n  </data>\n  <data name=\"Dlg_AlienGate_0501\" xml:space=\"preserve\">\n    <value>I’m picking a signal… it’s…</value>\n  </data>\n  <data name=\"Dlg_AlienGate_0502\" xml:space=\"preserve\">\n    <value>How nice to see you again, my… friends!</value>\n  </data>\n  <data name=\"Dlg_AlienGate_0503\" xml:space=\"preserve\">\n    <value>Damn it. Two Russian motherships are approaching, too. </value>\n  </data>\n  <data name=\"Dlg_AlienGate_0504\" xml:space=\"preserve\">\n    <value>What is this, a family reunion? </value>\n  </data>\n  <data name=\"Dlg_AlienGate_0505\" xml:space=\"preserve\">\n    <value>What are you doing here? And what’s with your new Russian buddies?</value>\n  </data>\n  <data name=\"Dlg_AlienGate_0506\" xml:space=\"preserve\">\n    <value>Perhaps we were just in the neighborhood and your behavior piqued our curiosity. </value>\n  </data>\n  <data name=\"Dlg_AlienGate_0507\" xml:space=\"preserve\">\n    <value>Spit it out, Francis. What are you up to?</value>\n  </data>\n  <data name=\"Dlg_AlienGate_0508\" xml:space=\"preserve\">\n    <value>Tracking device. On your mother ship. </value>\n  </data>\n  <data name=\"Dlg_AlienGate_0509\" xml:space=\"preserve\">\n    <value>I’ve been following you for quite some time.</value>\n  </data>\n  <data name=\"Dlg_AlienGate_0510\" xml:space=\"preserve\">\n    <value>After all, business is business.</value>\n  </data>\n  <data name=\"Dlg_AlienGate_0511\" xml:space=\"preserve\">\n    <value>How much did they offer you?</value>\n  </data>\n  <data name=\"Dlg_AlienGate_0512\" xml:space=\"preserve\">\n    <value>Come on, how much?</value>\n  </data>\n  <data name=\"Dlg_AlienGate_0513\" xml:space=\"preserve\">\n    <value>Let’s just say I could buy half of Rime with the deposit alone. </value>\n  </data>\n  <data name=\"Dlg_AlienGate_0514\" xml:space=\"preserve\">\n    <value>Nonsense, the Russians don’t have that kind of cash. </value>\n  </data>\n  <data name=\"Dlg_AlienGate_0515\" xml:space=\"preserve\">\n    <value>You’d be surprised. Russians in general might be poor, …</value>\n  </data>\n  <data name=\"Dlg_AlienGate_0516\" xml:space=\"preserve\">\n    <value>…but the people we are dealing with… not so. </value>\n  </data>\n  <data name=\"Dlg_AlienGate_0517\" xml:space=\"preserve\">\n    <value>And it’s not just Russian money in all this.</value>\n  </data>\n  <data name=\"Dlg_AlienGate_0518\" xml:space=\"preserve\">\n    <value>Well, I’m glad you’ll be able to afford a top-notch funeral. </value>\n  </data>\n  <data name=\"Dlg_AlienGate_0519\" xml:space=\"preserve\">\n    <value>While you won’t be, Mr. Rainier. Sorry to see your heroic story end here. </value>\n  </data>\n  <data name=\"Dlg_AlienGate_0520\" xml:space=\"preserve\">\n    <value>Soon, no one will remember you. </value>\n  </data>\n  <data name=\"Dlg_AlienGate_0521\" xml:space=\"preserve\">\n    <value>I, on the other hand, represent the present and the future!</value>\n  </data>\n  <data name=\"Dlg_AlienGate_0522\" xml:space=\"preserve\">\n    <value>What else did they offer you? </value>\n  </data>\n  <data name=\"Dlg_AlienGate_0523\" xml:space=\"preserve\">\n    <value>Do you know who you are speaking to?</value>\n  </data>\n  <data name=\"Dlg_AlienGate_0524\" xml:space=\"preserve\">\n    <value>Assistant Director of Research and Development at Rime, OmniCorp.</value>\n  </data>\n  <data name=\"Dlg_AlienGate_0525\" xml:space=\"preserve\">\n    <value>Career advancement?</value>\n  </data>\n  <data name=\"Dlg_AlienGate_0526\" xml:space=\"preserve\">\n    <value>My heart and soul are the same color as yours. Like you, I want money, I want recognition…</value>\n  </data>\n  <data name=\"Dlg_AlienGate_0527\" xml:space=\"preserve\">\n    <value>…and I want to be the first human to set eyes on what our predecessors built here. </value>\n  </data>\n  <data name=\"Dlg_AlienGate_0528\" xml:space=\"preserve\">\n    <value>I must admit, he’s right about that. We do want the same. </value>\n  </data>\n  <data name=\"Dlg_AlienGate_0529\" xml:space=\"preserve\">\n    <value>True. He is a traitor and I want him dead. But I do understand his motives.</value>\n  </data>\n  <data name=\"Dlg_AlienGate_0530\" xml:space=\"preserve\">\n    <value>Why did you join with the Russians? Wouldn’t you have been in a better position with us? </value>\n  </data>\n  <data name=\"Dlg_AlienGate_0531\" xml:space=\"preserve\">\n    <value>I was… considering that, Mr. Rainier. </value>\n  </data>\n  <data name=\"Dlg_AlienGate_0532\" xml:space=\"preserve\">\n    <value>But the Russians have… well… Much more than you could ever imagine. </value>\n  </data>\n  <data name=\"Dlg_AlienGate_0533\" xml:space=\"preserve\">\n    <value>They’ll use you and kill you as soon as they’re finished here.</value>\n  </data>\n  <data name=\"Dlg_AlienGate_0534\" xml:space=\"preserve\">\n    <value>I don’t see that happening.</value>\n  </data>\n  <data name=\"Dlg_AlienGate_0535\" xml:space=\"preserve\">\n    <value>You see, I have access to technology you and they can only dream of…</value>\n  </data>\n  <data name=\"Dlg_AlienGate_0536\" xml:space=\"preserve\">\n    <value>…at least for the few next years.</value>\n  </data>\n  <data name=\"Dlg_AlienGate_0537\" xml:space=\"preserve\">\n    <value>Without me, they can’t take one step toward analyzing and reproducing those alien devices.</value>\n  </data>\n  <data name=\"Dlg_AlienGate_0538\" xml:space=\"preserve\">\n    <value>Reproducing?</value>\n  </data>\n  <data name=\"Dlg_AlienGate_0539\" xml:space=\"preserve\">\n    <value>You really think we are archeologists, young Mr. Rainier?</value>\n  </data>\n  <data name=\"Dlg_AlienGate_0540\" xml:space=\"preserve\">\n    <value>They’ve got top engineers and scientists of their own. Loyal ones, too.</value>\n  </data>\n  <data name=\"Dlg_AlienGate_0541\" xml:space=\"preserve\">\n    <value>Not traitors. I’m surprised you fell for their fairy tale; </value>\n  </data>\n  <data name=\"Dlg_AlienGate_0542\" xml:space=\"preserve\">\n    <value>I thought you were smarter than that.</value>\n  </data>\n  <data name=\"Dlg_AlienGate_0543\" xml:space=\"preserve\">\n    <value>We’ve talked enough. I wish you swift death, no pain. Let us resolve this once and for all</value>\n  </data>\n  <data name=\"Dlg_AlienGate_0544\" xml:space=\"preserve\">\n    <value>Fine. Not the end I hoped for, but at least we’ll enjoy the sweet taste of revenge.</value>\n  </data>\n  <data name=\"Dlg_AlienGate_0545\" xml:space=\"preserve\">\n    <value>Men, women, do your best. </value>\n  </data>\n  <data name=\"Dlg_AlienGate_0546\" xml:space=\"preserve\">\n    <value>We won’t have another chance. Make it final.</value>\n  </data>\n  <data name=\"Dlg_AlienGate_0547\" xml:space=\"preserve\">\n    <value>Marcus, just a side note. We have one mother ship and four fighters…</value>\n  </data>\n  <data name=\"Dlg_AlienGate_0548\" xml:space=\"preserve\">\n    <value>…and they have three mother ships and probably dozens of fighters…</value>\n  </data>\n  <data name=\"Dlg_AlienGate_0549\" xml:space=\"preserve\">\n    <value>I assume you have a plan?</value>\n  </data>\n  <data name=\"Dlg_AlienGate_0550\" xml:space=\"preserve\">\n    <value>Yes… Improvise!</value>\n  </data>\n  <data name=\"Dlg_AlienGate_0600\" xml:space=\"preserve\">\n    <value>Go, go, go!!! </value>\n  </data>\n  <data name=\"Dlg_AlienGate_0601\" xml:space=\"preserve\">\n    <value>Use the asteroids as cover. Guerilla warfare.</value>\n  </data>\n  <data name=\"Dlg_AlienGate_0602\" xml:space=\"preserve\">\n    <value>Madelyn, avoid direct fire and get out of here.</value>\n  </data>\n  <data name=\"Dlg_AlienGate_0603\" xml:space=\"preserve\">\n    <value>We can do this! </value>\n  </data>\n  <data name=\"Dlg_AlienGate_0604\" xml:space=\"preserve\">\n    <value>Shoot that mother ship down!</value>\n  </data>\n  <data name=\"Dlg_AlienGate_0700\" xml:space=\"preserve\">\n    <value>Madelyn, are you ok?</value>\n  </data>\n  <data name=\"Dlg_AlienGate_0800\" xml:space=\"preserve\">\n    <value>That was close but I’m fine.</value>\n  </data>\n  <data name=\"Dlg_AlienGate_0801\" xml:space=\"preserve\">\n    <value>I’ll regroup with you in a couple of minutes to give you some fire support.</value>\n  </data>\n  <data name=\"Dlg_AlienGate_0802\" xml:space=\"preserve\">\n    <value>This position isn’t safe. Enemy ships will be here in no time.</value>\n  </data>\n  <data name=\"Dlg_AlienGate_0803\" xml:space=\"preserve\">\n    <value>Let’s meet at these new coordinates. Be the hunter, not the prey.</value>\n  </data>\n  <data name=\"Dlg_AlienGate_0804\" xml:space=\"preserve\">\n    <value>I’ll be there soon.</value>\n  </data>\n  <data name=\"Dlg_AlienGate_0805\" xml:space=\"preserve\">\n    <value>Enemy ships incoming, let’s hurry.</value>\n  </data>\n  <data name=\"Dlg_AlienGate_0900\" xml:space=\"preserve\">\n    <value>Here she comes, at last!</value>\n  </data>\n  <data name=\"Dlg_AlienGate_0901\" xml:space=\"preserve\">\n    <value>Looks like we’re safe for the moment. Did you guys come up with a plan?</value>\n  </data>\n  <data name=\"Dlg_AlienGate_0902\" xml:space=\"preserve\">\n    <value>Those Russian battleships are heavily fortified. </value>\n  </data>\n  <data name=\"Dlg_AlienGate_0903\" xml:space=\"preserve\">\n    <value>There’s no way we could charge them and survive. </value>\n  </data>\n  <data name=\"Dlg_AlienGate_0904\" xml:space=\"preserve\">\n    <value>Let’s use the size and speed of your ships to our advantage.</value>\n  </data>\n  <data name=\"Dlg_AlienGate_0905\" xml:space=\"preserve\">\n    <value>Their guns are big, but can’t easily target a small object. </value>\n  </data>\n  <data name=\"Dlg_AlienGate_0906\" xml:space=\"preserve\">\n    <value>I notice their ships are heavily armored on the side, but not the back. </value>\n  </data>\n  <data name=\"Dlg_AlienGate_0907\" xml:space=\"preserve\">\n    <value>We can duck behind asteroids and strike them from behind. </value>\n  </data>\n  <data name=\"Dlg_AlienGate_0908\" xml:space=\"preserve\">\n    <value>I’ll just avoid their mother ships and give you support fire against their fighters. </value>\n  </data>\n  <data name=\"Dlg_AlienGate_0909\" xml:space=\"preserve\">\n    <value>We can do this if we focus on their vital systems. </value>\n  </data>\n  <data name=\"Dlg_AlienGate_0910\" xml:space=\"preserve\">\n    <value>This is the fight of our lives, guys. We either die now or remember this battle forever.</value>\n  </data>\n  <data name=\"Dlg_AlienGate_0911\" xml:space=\"preserve\">\n    <value>Apollo, Tarja, Valentyn, come with me. We’ll start with the mothership on the right wing.</value>\n  </data>\n  <data name=\"Dlg_AlienGate_0912\" xml:space=\"preserve\">\n    <value>Madelyn – hold off their fighters till we’re done. </value>\n  </data>\n  <data name=\"Dlg_AlienGate_0913\" xml:space=\"preserve\">\n    <value>Affirmative!</value>\n  </data>\n  <data name=\"Dlg_AlienGate_1000\" xml:space=\"preserve\">\n    <value>They are trying to outflank us, shoot them down!</value>\n  </data>\n  <data name=\"Dlg_AlienGate_1001\" xml:space=\"preserve\">\n    <value>We need to take cover behind the asteroids, there are too many rocket turrets.</value>\n  </data>\n  <data name=\"Dlg_AlienGate_1002\" xml:space=\"preserve\">\n    <value>Enemy fighters approaching!</value>\n  </data>\n  <data name=\"Dlg_AlienGate_1003\" xml:space=\"preserve\">\n    <value>We have to stay behind asteroids no matter what.</value>\n  </data>\n  <data name=\"Dlg_AlienGate_1100\" xml:space=\"preserve\">\n    <value>We made it!</value>\n  </data>\n  <data name=\"Dlg_AlienGate_1200\" xml:space=\"preserve\">\n    <value>They’ve boarded the ship. Fighters, engage the threat! Top priority!</value>\n  </data>\n  <data name=\"Dlg_AlienGate_1201\" xml:space=\"preserve\">\n    <value>Now comes the hardest part. We have to destroy the ship from inside.</value>\n  </data>\n  <data name=\"Dlg_AlienGate_1202\" xml:space=\"preserve\">\n    <value>Overcharging the generators should do the job and buy us some time to leave the ship.</value>\n  </data>\n  <data name=\"Dlg_AlienGate_1203\" xml:space=\"preserve\">\n    <value>We have to start with the power generator. </value>\n  </data>\n  <data name=\"Dlg_AlienGate_1204\" xml:space=\"preserve\">\n    <value>Then we’ll sabotage the protective devices on the core engine. </value>\n  </data>\n  <data name=\"Dlg_AlienGate_1300\" xml:space=\"preserve\">\n    <value>Great job, quickly overcharge it and get out.</value>\n  </data>\n  <data name=\"Dlg_AlienGate_1301\" xml:space=\"preserve\">\n    <value>On our way!</value>\n  </data>\n  <data name=\"Dlg_AlienGate_1302\" xml:space=\"preserve\">\n    <value>The core should be located in the upper floors of the ship.</value>\n  </data>\n  <data name=\"Dlg_AlienGate_1400\" xml:space=\"preserve\">\n    <value>We have to get out as soon as possible after we sabotage this one.</value>\n  </data>\n  <data name=\"Dlg_AlienGate_1500\" xml:space=\"preserve\">\n    <value>The core is highly unstable; we have about 40 seconds to get out. </value>\n  </data>\n  <data name=\"Dlg_AlienGate_1501\" xml:space=\"preserve\">\n    <value>No sightseeing on the way then.</value>\n  </data>\n  <data name=\"Dlg_AlienGate_1502\" xml:space=\"preserve\">\n    <value>Just go!! </value>\n  </data>\n  <data name=\"Dlg_AlienGate_1600\" xml:space=\"preserve\">\n    <value>Well, that was close. </value>\n  </data>\n  <data name=\"Dlg_AlienGate_1601\" xml:space=\"preserve\">\n    <value>Quick, get to Madelyn. The Russian ships are going to be here soon.</value>\n  </data>\n  <data name=\"Dlg_AlienGate_1700\" xml:space=\"preserve\">\n    <value>Apollo, make sure to stop by here at Sapho to refuel and have your ship repaired! </value>\n  </data>\n  <data name=\"Dlg_AlienGate_1701\" xml:space=\"preserve\">\n    <value>I think I still have some spare equipment and ammunition. </value>\n  </data>\n  <data name=\"Dlg_AlienGate_1702\" xml:space=\"preserve\">\n    <value>Now let’s move on to the second Russian mothership.</value>\n  </data>\n  <data name=\"Dlg_AlienGate_1703\" xml:space=\"preserve\">\n    <value>They’re going to be prepared this time; this won’t be as easy as the first one.</value>\n  </data>\n  <data name=\"Dlg_AlienGate_1704\" xml:space=\"preserve\">\n    <value>Let’s just do it!</value>\n  </data>\n  <data name=\"Dlg_AlienGate_1800\" xml:space=\"preserve\">\n    <value>Enemy approaching…</value>\n  </data>\n  <data name=\"Dlg_AlienGate_1900\" xml:space=\"preserve\">\n    <value>Quickly, get in, there are no asteroids to cover us. </value>\n  </data>\n  <data name=\"Dlg_AlienGate_2000\" xml:space=\"preserve\">\n    <value>Guys you know what to do, so let’s get this done.</value>\n  </data>\n  <data name=\"Dlg_AlienGate_2001\" xml:space=\"preserve\">\n    <value>Affirmative!</value>\n  </data>\n  <data name=\"Dlg_AlienGate_2200\" xml:space=\"preserve\">\n    <value>What is this? Armored doors?</value>\n  </data>\n  <data name=\"Dlg_AlienGate_2201\" xml:space=\"preserve\">\n    <value>They’re as tough as the walls of the ship!</value>\n  </data>\n  <data name=\"Dlg_AlienGate_2202\" xml:space=\"preserve\">\n    <value>You’ve got to find a way through. There has to be a control room somewhere. </value>\n  </data>\n  <data name=\"Dlg_AlienGate_2203\" xml:space=\"preserve\">\n    <value>Follow me. </value>\n  </data>\n  <data name=\"Dlg_AlienGate_2300\" xml:space=\"preserve\">\n    <value>Check the hub systems!</value>\n  </data>\n  <data name=\"Dlg_AlienGate_2301\" xml:space=\"preserve\">\n    <value>Got it, the door should be open now! </value>\n  </data>\n  <data name=\"Dlg_AlienGate_2400\" xml:space=\"preserve\">\n    <value>What is this? Madelyn, any ideas?</value>\n  </data>\n  <data name=\"Dlg_AlienGate_2401\" xml:space=\"preserve\">\n    <value>It looks like a laboratory. It must be where they study the alien technology.</value>\n  </data>\n  <data name=\"Dlg_AlienGate_2402\" xml:space=\"preserve\">\n    <value>It might be wise to get all their data, before we blow this whole thing up. </value>\n  </data>\n  <data name=\"Dlg_AlienGate_2403\" xml:space=\"preserve\">\n    <value>Workin’ on it.</value>\n  </data>\n  <data name=\"Dlg_AlienGate_2500\" xml:space=\"preserve\">\n    <value>Ok, let’s go. Any interesting findings?</value>\n  </data>\n  <data name=\"Dlg_AlienGate_2501\" xml:space=\"preserve\">\n    <value>I don’t have time to go through all the data right now. But it looks… </value>\n  </data>\n  <data name=\"Dlg_AlienGate_2502\" xml:space=\"preserve\">\n    <value>…promising. We’ll discuss it with Thomas later.</value>\n  </data>\n  <data name=\"Dlg_AlienGate_2600\" xml:space=\"preserve\">\n    <value>Go, go, go!</value>\n  </data>\n  <data name=\"Dlg_AlienGate_2601\" xml:space=\"preserve\">\n    <value>Enemy interceptors again!</value>\n  </data>\n  <data name=\"Dlg_AlienGate_2602\" xml:space=\"preserve\">\n    <value>Never mind, there’s no time for fighting. Get out now!</value>\n  </data>\n  <data name=\"Dlg_AlienGate_2700\" xml:space=\"preserve\">\n    <value>Great job! You’ve done it, guys.</value>\n  </data>\n  <data name=\"Dlg_AlienGate_2701\" xml:space=\"preserve\">\n    <value>What? How?</value>\n  </data>\n  <data name=\"Dlg_AlienGate_2702\" xml:space=\"preserve\">\n    <value>Now let’s hunt down Reef once and for all.</value>\n  </data>\n  <data name=\"Dlg_AlienGate_2703\" xml:space=\"preserve\">\n    <value>Any more… precise plan?</value>\n  </data>\n  <data name=\"Dlg_AlienGate_2704\" xml:space=\"preserve\">\n    <value>Cut off his weapons and generators. That should do the trick. </value>\n  </data>\n  <data name=\"Dlg_AlienGate_2705\" xml:space=\"preserve\">\n    <value>Confirmed. </value>\n  </data>\n  <data name=\"Dlg_AlienGate_2800\" xml:space=\"preserve\">\n    <value>This is not the last time we will meet.</value>\n  </data>\n  <data name=\"Dlg_AlienGate_2801\" xml:space=\"preserve\">\n    <value>Quick, stop him, he’s about to take off.</value>\n  </data>\n  <data name=\"Dlg_AlienGate_2802\" xml:space=\"preserve\">\n    <value>He’s too fast. Madelyn, block his way quick!</value>\n  </data>\n  <data name=\"Dlg_AlienGate_2803\" xml:space=\"preserve\">\n    <value>I’m trying!</value>\n  </data>\n  <data name=\"Dlg_AlienGate_2900\" xml:space=\"preserve\">\n    <value>What the hell…!</value>\n  </data>\n  <data name=\"Dlg_AlienGate_2901\" xml:space=\"preserve\">\n    <value>Nice! You got him.</value>\n  </data>\n  <data name=\"Dlg_AlienGate_3000\" xml:space=\"preserve\">\n    <value>Quickly, shoot the pursuers down!!!</value>\n  </data>\n  <data name=\"Dlg_AlienGate_3200\" xml:space=\"preserve\">\n    <value>Did you get him?</value>\n  </data>\n  <data name=\"Dlg_AlienGate_3201\" xml:space=\"preserve\">\n    <value>Of course we did… Where have you been?</value>\n  </data>\n  <data name=\"Dlg_AlienGate_3202\" xml:space=\"preserve\">\n    <value>I found something; you’re not going to believe this. Get in here, quick.</value>\n  </data>\n  <data name=\"Dlg_AlienGate_3300\" xml:space=\"preserve\">\n    <value>Oh my God!</value>\n  </data>\n  <data name=\"Dlg_AlienGate_3301\" xml:space=\"preserve\">\n    <value>So this is the source of the signal. </value>\n  </data>\n  <data name=\"Dlg_AlienGate_3302\" xml:space=\"preserve\">\n    <value>I must admit I wasn’t expecting something quite so… holy crap.</value>\n  </data>\n  <data name=\"Dlg_AlienGate_3303\" xml:space=\"preserve\">\n    <value>This is the moment I’ve waited for my entire life. </value>\n  </data>\n  <data name=\"Dlg_AlienGate_3304\" xml:space=\"preserve\">\n    <value>Any idea what it is?</value>\n  </data>\n  <data name=\"Dlg_AlienGate_3305\" xml:space=\"preserve\">\n    <value>A door. To another world. A wormhole generator, a gateway device…</value>\n  </data>\n  <data name=\"Dlg_AlienGate_3306\" xml:space=\"preserve\">\n    <value>Can we… use it?</value>\n  </data>\n  <data name=\"Dlg_AlienGate_3307\" xml:space=\"preserve\">\n    <value>It does not seem operational at the moment. </value>\n  </data>\n  <data name=\"Dlg_AlienGate_3308\" xml:space=\"preserve\">\n    <value>If we find a way to make it operational, it will take us –</value>\n  </data>\n  <data name=\"Dlg_AlienGate_3309\" xml:space=\"preserve\">\n    <value>To its other side. </value>\n  </data>\n  <data name=\"Dlg_AlienGate_3310\" xml:space=\"preserve\">\n    <value>Another galaxy… or maybe even another universe with its own laws of physics. </value>\n  </data>\n  <data name=\"Dlg_AlienGate_3311\" xml:space=\"preserve\">\n    <value>So what do we do?</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0101\" xml:space=\"preserve\">\n    <value>I can’t remember ever being this far from the Sun.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0108\" xml:space=\"preserve\">\n    <value>Ehm. So, Madelyn, are we close?</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0110\" xml:space=\"preserve\">\n    <value>According to my scans, there is a small base deeper in the asteroid field…</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0111\" xml:space=\"preserve\">\n    <value>I marked it on your GPS. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0112\" xml:space=\"preserve\">\n    <value>On our way.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0113\" xml:space=\"preserve\">\n    <value>Who is this Barth, again?</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0114\" xml:space=\"preserve\">\n    <value>He was one of my professors back at Greenbelt…</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0115\" xml:space=\"preserve\">\n    <value>Thomas Barth, a brilliant anthropologist from the old days…</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0116\" xml:space=\"preserve\">\n    <value>Sounds like he taught you more than anthropology.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0117\" xml:space=\"preserve\">\n    <value>Marcus!</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0118\" xml:space=\"preserve\">\n    <value>Please go on, Madelyn. Any idea where we might find him?</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0119\" xml:space=\"preserve\">\n    <value>He was always this kind of crazy scientist guy…</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0120\" xml:space=\"preserve\">\n    <value>The last time I saw him was before he left on his “hermitage”.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0121\" xml:space=\"preserve\">\n    <value>Hermitage?</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0122\" xml:space=\"preserve\">\n    <value>This guy REALLY doesn’t like neighbors.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0201\" xml:space=\"preserve\">\n    <value>This place looks kinda romantic even to me. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0301\" xml:space=\"preserve\">\n    <value>Greetings!</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0302\" xml:space=\"preserve\">\n    <value>Welcome, travelers! Make yourselves at home.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0304\" xml:space=\"preserve\">\n    <value>Are you Thomas Barth?</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0305\" xml:space=\"preserve\">\n    <value>– He is. –</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0306\" xml:space=\"preserve\">\n    <value>I am.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0307\" xml:space=\"preserve\">\n    <value>What brings you to these lands? Exploration? Adventure?</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0308\" xml:space=\"preserve\">\n    <value>Thomas, remember me? Madelyn Lloyd…</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0309\" xml:space=\"preserve\">\n    <value>I was in your graduate anthropology class at Greenbelt.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0310\" xml:space=\"preserve\">\n    <value>Fraulein! How could I forget…</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0311\" xml:space=\"preserve\">\n    <value>I always knew we would meet again! It was destiny.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0312\" xml:space=\"preserve\">\n    <value>Actually, Barth, we came to see you.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0313\" xml:space=\"preserve\">\n    <value>A Russian paramilitary group searching for something they call “alien artifacts”…</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0314\" xml:space=\"preserve\">\n    <value>…has your name on its list.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0315\" xml:space=\"preserve\">\n    <value>Any idea what they may be up to?</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0316\" xml:space=\"preserve\">\n    <value>Is this so? </value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0317\" xml:space=\"preserve\">\n    <value>I’ll show you all the data we found. That will explain everything.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0318\" xml:space=\"preserve\">\n    <value>My observations were correct! E-everyone – everyone thought…</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0319\" xml:space=\"preserve\">\n    <value>I was a madman, ranting about alien relics.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0320\" xml:space=\"preserve\">\n    <value>Now, fate has brought you here to be my… apostles!</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0321\" xml:space=\"preserve\">\n    <value>Let’s not get carried away.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0322\" xml:space=\"preserve\">\n    <value>I – I never thought of you as a madman, Thomas!</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0323\" xml:space=\"preserve\">\n    <value>I know. But most of the others did. That’s why I had to leave Greenbelt…</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0324\" xml:space=\"preserve\">\n    <value>Not because I grew old and tired, but because no one – except those…</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0325\" xml:space=\"preserve\">\n    <value>…in my closest circle – believed in my findings.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0326\" xml:space=\"preserve\">\n    <value>So, what are you saying?</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0327\" xml:space=\"preserve\">\n    <value>I am prepared to offer my services and full support to you.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0328\" xml:space=\"preserve\">\n    <value>…In exchange for…?</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0329\" xml:space=\"preserve\">\n    <value>No exchange necessary. However, consider my situation here. I am cut off from…</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0330\" xml:space=\"preserve\">\n    <value>…communication and commerce routes. And those damn Raider war parties have…</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0331\" xml:space=\"preserve\">\n    <value>…already hit my base twice. Each time they destroyed or stole some of my equipment.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0332\" xml:space=\"preserve\">\n    <value>We can take you with us. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0333\" xml:space=\"preserve\">\n    <value>I’m of better use here with my lab and tools. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0334\" xml:space=\"preserve\">\n    <value>So what can we do?</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0335\" xml:space=\"preserve\">\n    <value>In case you happen to run into some long-range antenna components, bring them here and…</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0336\" xml:space=\"preserve\">\n    <value>…help me build an array. That way we can stay in contact over a distance.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0337\" xml:space=\"preserve\">\n    <value>Also, one of the Raider warparties has established a temporary camp a few asteroids…</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0338\" xml:space=\"preserve\">\n    <value>…from here. It’s only a matter of time before they come here to loot again.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0339\" xml:space=\"preserve\">\n    <value>You’d like us to exterminate them and secure the area?</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0340\" xml:space=\"preserve\">\n    <value>It… would be helpful. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0341\" xml:space=\"preserve\">\n    <value>Fine. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0342\" xml:space=\"preserve\">\n    <value>So that’s it. Knock out a Raider warparty and search for long-range transmitter parts…</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0344\" xml:space=\"preserve\">\n    <value>On our way.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0345\" xml:space=\"preserve\">\n    <value>We can talk on the way. There are still issues to be… discussed.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0401\" xml:space=\"preserve\">\n    <value>Okay, team, I suggest dealing with those Raiders first.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0402\" xml:space=\"preserve\">\n    <value>Agreed. Best to make sure Barth will be here next time we arrive.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0403\" xml:space=\"preserve\">\n    <value>Thomas? So you believe there’s something to this?</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0404\" xml:space=\"preserve\">\n    <value>That there are aliens involved?</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0405\" xml:space=\"preserve\">\n    <value>No one has ever seen one… At least not in the past few thousand years.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0406\" xml:space=\"preserve\">\n    <value>Past few thousand years?</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0407\" xml:space=\"preserve\">\n    <value>Oh, yes, I remember from your classes: you believe there were “leaps” in the evolution…</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0408\" xml:space=\"preserve\">\n    <value>…of mankind.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0409\" xml:space=\"preserve\">\n    <value>“Leaps”?</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0410\" xml:space=\"preserve\">\n    <value>Mankind’s evolution was not, shall we say, continuous. There are very important missing…</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0411\" xml:space=\"preserve\">\n    <value>…links in the chain. You see, our evolution typically progressed in a gradual manner…</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0412\" xml:space=\"preserve\">\n    <value>…for long periods of time.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0413\" xml:space=\"preserve\">\n    <value>But at certain evolutionary moments? A leap occurred. A leap for which we can find…</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0414\" xml:space=\"preserve\">\n    <value>…no rational explanation.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0415\" xml:space=\"preserve\">\n    <value>Previously nonexistent genes appeared. Nothing that can be explained as a combination…</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0416\" xml:space=\"preserve\">\n    <value>…of any known species.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0417\" xml:space=\"preserve\">\n    <value>Something new.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0418\" xml:space=\"preserve\">\n    <value>You’re suggesting that… we have… alien genes?</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0419\" xml:space=\"preserve\">\n    <value>I do. Most indications suggest that our species was intentionally altered. </value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0420\" xml:space=\"preserve\">\n    <value>I call it genome implantation. Something we humans have been experimenting with for…</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0421\" xml:space=\"preserve\">\n    <value>…the last few decades. But there is… indirect evidence to believe that this has been…</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0422\" xml:space=\"preserve\">\n    <value>…done before. To us. Intentionally.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0423\" xml:space=\"preserve\">\n    <value>What the hell does that have to do with us and our current situation?</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0424\" xml:space=\"preserve\">\n    <value>And what are we supposed to do about it? I mean – right now.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0425\" xml:space=\"preserve\">\n    <value>Well, don’t forget that a pirate base was also mentioned in the Russians’ communication.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0426\" xml:space=\"preserve\">\n    <value>Right. We will find out sooner or later. Once you take out the Raiders, check out that…</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0427\" xml:space=\"preserve\">\n    <value>…location you know about from the Russians.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0501\" xml:space=\"preserve\">\n    <value>This must be their place.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0502\" xml:space=\"preserve\">\n    <value>Definitely. There are no reported settlements in this area. Gotta be the Raiders’ camp.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0503\" xml:space=\"preserve\">\n    <value>And… our plan?</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0504\" xml:space=\"preserve\">\n    <value>I don’t expect them to negotiate. All these people know is looting and plundering.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0601\" xml:space=\"preserve\">\n    <value>You dare approach our settlement?</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0602\" xml:space=\"preserve\">\n    <value>We’re here to end your looting spree.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0603\" xml:space=\"preserve\">\n    <value>You are either brave or foolish. Or both. I’ll do you the service…</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0604\" xml:space=\"preserve\">\n    <value>…of letting you die like a man.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0605\" xml:space=\"preserve\">\n    <value>Challenge accepted.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0701\" xml:space=\"preserve\">\n    <value>Looks like we’re done here.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0702\" xml:space=\"preserve\">\n    <value>Good job, guys!</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0703\" xml:space=\"preserve\">\n    <value>Now to the pirate base in the Damien Dust Field. The one mentioned in the data from Laika.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0704\" xml:space=\"preserve\">\n    <value>Your wish is my command. Jump in, I’ve already set the course.</value>\n  </data>\n  <data name=\"Dlg_BarthsMoonConvince_0705\" xml:space=\"preserve\">\n    <value>Affirmative.  </value>\n  </data>\n  <data name=\"Dlg_Challenger_0100_BEHIND01\" xml:space=\"preserve\">\n    <value>I’ll get you, freak!</value>\n  </data>\n  <data name=\"Dlg_Challenger_0100_BEHIND02\" xml:space=\"preserve\">\n    <value>You think you can outrun me?</value>\n  </data>\n  <data name=\"Dlg_Challenger_0100_BEHIND03\" xml:space=\"preserve\">\n    <value>Don’t get used to the lead!</value>\n  </data>\n  <data name=\"Dlg_Challenger_0100_BEHIND04\" xml:space=\"preserve\">\n    <value>Comin’ to get ya!</value>\n  </data>\n  <data name=\"Dlg_Challenger_0100_BEHIND05\" xml:space=\"preserve\">\n    <value>You won’t get far!</value>\n  </data>\n  <data name=\"Dlg_Challenger_0100_FRONT01\" xml:space=\"preserve\">\n    <value>Who’s the boss? Ha, ha, I’m unstoppable!</value>\n  </data>\n  <data name=\"Dlg_Challenger_0100_FRONT02\" xml:space=\"preserve\">\n    <value>Loser! Eat my wind!</value>\n  </data>\n  <data name=\"Dlg_Challenger_0100_FRONT03\" xml:space=\"preserve\">\n    <value>My grandma flies faster than you!</value>\n  </data>\n  <data name=\"Dlg_Challenger_0100_FRONT04\" xml:space=\"preserve\">\n    <value>Stop wasting your time. You’ve already lost!</value>\n  </data>\n  <data name=\"Dlg_Challenger_0100_FRONT05\" xml:space=\"preserve\">\n    <value>See my back? That’s all you’ll ever see!</value>\n  </data>\n  <data name=\"Dlg_JunkyardReturn_0100\" xml:space=\"preserve\">\n    <value>The Junkyard again. (grunts) Let’s just do what we came here for and get out.</value>\n  </data>\n  <data name=\"Dlg_JunkyardReturn_0101\" xml:space=\"preserve\">\n    <value>You don’t want to stay for a little R&amp;R? Or maybe some… research?</value>\n  </data>\n  <data name=\"Dlg_JunkyardReturn_0102\" xml:space=\"preserve\">\n    <value>Look at these people. This place makes me sick.</value>\n  </data>\n  <data name=\"Dlg_JunkyardReturn_0103\" xml:space=\"preserve\">\n    <value>It’s none of our business. </value>\n  </data>\n  <data name=\"Dlg_JunkyardReturn_0104\" xml:space=\"preserve\">\n    <value>We’re here for Manjeet. He should be somewhere in the city. Let’s find him.</value>\n  </data>\n  <data name=\"Dlg_JunkyardReturn_0200\" xml:space=\"preserve\">\n    <value>Oh, my friends. You have made it. So nice to see you again…</value>\n  </data>\n  <data name=\"Dlg_JunkyardReturn_0201\" xml:space=\"preserve\">\n    <value>Do you have good news for me?</value>\n  </data>\n  <data name=\"Dlg_JunkyardReturn_0202\" xml:space=\"preserve\">\n    <value>How ’bout a fully loaded transporter waiting outside the city.</value>\n  </data>\n  <data name=\"Dlg_JunkyardReturn_0203\" xml:space=\"preserve\">\n    <value>Wonderful! It’s really quite a pleasure to do business with you my friends.</value>\n  </data>\n  <data name=\"Dlg_JunkyardReturn_0204\" xml:space=\"preserve\">\n    <value>We’ve fulfilled our part of the agreement, now it’s your turn. </value>\n  </data>\n  <data name=\"Dlg_JunkyardReturn_0205\" xml:space=\"preserve\">\n    <value>I believe you have a little souvenir for us.</value>\n  </data>\n  <data name=\"Dlg_JunkyardReturn_0206\" xml:space=\"preserve\">\n    <value>In time, my friend. You don’t rush fine wine. I will inspect the cargo first.</value>\n  </data>\n  <data name=\"Dlg_JunkyardReturn_0207\" xml:space=\"preserve\">\n    <value>Meet me later by the transporter and don’t try anything fun–</value>\n  </data>\n  <data name=\"Dlg_JunkyardReturn_0208\" xml:space=\"preserve\">\n    <value>Really? You can’t be serious? You can't be serious! This is your ship? This is your ship?</value>\n  </data>\n  <data name=\"Dlg_JunkyardReturn_0209\" xml:space=\"preserve\">\n    <value>Piss off, pal. We don’t have time for children’s games</value>\n  </data>\n  <data name=\"Dlg_JunkyardReturn_0210\" xml:space=\"preserve\">\n    <value>No, seriously. Where did you get this thing? No, let me guess – you built it yourself. </value>\n  </data>\n  <data name=\"Dlg_JunkyardReturn_0211\" xml:space=\"preserve\">\n    <value>From dog shit. That explains a lot…</value>\n  </data>\n  <data name=\"Dlg_JunkyardReturn_0212\" xml:space=\"preserve\">\n    <value>Well, at least we don’t live in dog shit. </value>\n  </data>\n  <data name=\"Dlg_JunkyardReturn_0213\" xml:space=\"preserve\">\n    <value>My ship could eat yours for breakfast and crap out the bones.</value>\n  </data>\n  <data name=\"Dlg_JunkyardReturn_0214\" xml:space=\"preserve\">\n    <value>Ohh, tough guy. Let’s see what you’ve got. </value>\n  </data>\n  <data name=\"Dlg_JunkyardReturn_0215\" xml:space=\"preserve\">\n    <value>Me and you, one lap around the Junkyard. Or are you too scared?</value>\n  </data>\n  <data name=\"Dlg_JunkyardReturn_0216\" xml:space=\"preserve\">\n    <value>Apollo, don’t do this. Junkyard racing is brutal. It’s not worth the risk.</value>\n  </data>\n  <data name=\"Dlg_JunkyardReturn_0217\" xml:space=\"preserve\">\n    <value>And we don’t have time. </value>\n  </data>\n  <data name=\"Dlg_JunkyardReturn_0218\" xml:space=\"preserve\">\n    <value>It’ll only take a few minutes. Someone needs to teach this guy some respect.</value>\n    <comment>Dlg_JunkyardReturn_1023</comment>\n  </data>\n  <data name=\"Dlg_JunkyardReturn_0219\" xml:space=\"preserve\">\n    <value>Ha! That’s the word. So let’s get it on.</value>\n    <comment>Dlg_JunkyardReturn_1024</comment>\n  </data>\n  <data name=\"Dlg_JunkyardReturn_0220\" xml:space=\"preserve\">\n    <value>When you’re done, come back to me.</value>\n    <comment>Dlg_JunkyardReturn_1025</comment>\n  </data>\n  <data name=\"Dlg_JunkyardReturn_0300\" xml:space=\"preserve\">\n    <value>You’re going to beg for my mercy.</value>\n    <comment>Dlg_JunkyardReturn_1026</comment>\n  </data>\n  <data name=\"Dlg_JunkyardReturn_0301\" xml:space=\"preserve\">\n    <value>I’m shivering. Let’s get this over with.</value>\n    <comment>Dlg_JunkyardReturn_1027</comment>\n  </data>\n  <data name=\"Dlg_JunkyardReturn_0400\" xml:space=\"preserve\">\n    <value>A little applause from your fans! Oh look, they like you! </value>\n    <comment>Dlg_JunkyardReturn_1038</comment>\n  </data>\n  <data name=\"Dlg_JunkyardReturn_0401\" xml:space=\"preserve\">\n    <value>You bastard! You’ll pay for this, big time!</value>\n    <comment>Dlg_JunkyardReturn_1039</comment>\n  </data>\n  <data name=\"Dlg_JunkyardReturn_0500\" xml:space=\"preserve\">\n    <value>Oops, watch the road hazard!</value>\n    <comment>Dlg_JunkyardReturn_1040</comment>\n  </data>\n  <data name=\"Dlg_JunkyardReturn_0501\" xml:space=\"preserve\">\n    <value>Just blow it up! </value>\n    <comment>Dlg_JunkyardReturn_1041</comment>\n  </data>\n  <data name=\"Dlg_JunkyardReturn_0600\" xml:space=\"preserve\">\n    <value>Beware of those green clouds, they are highly radioactive toxic vapours! </value>\n    <comment>Dlg_JunkyardReturn_1042</comment>\n  </data>\n  <data name=\"Dlg_JunkyardReturn_0700\" xml:space=\"preserve\">\n    <value>Don’t give up! You’re past the worst! Keep it up!</value>\n    <comment>Dlg_JunkyardReturn_1043</comment>\n  </data>\n  <data name=\"Dlg_JunkyardReturn_0800\" xml:space=\"preserve\">\n    <value>Come on brother! Show him how to fly!</value>\n    <comment>Dlg_JunkyardReturn_1044</comment>\n  </data>\n  <data name=\"Dlg_JunkyardReturn_0900\" xml:space=\"preserve\">\n    <value>Minefield front and center. Careful!</value>\n    <comment>Dlg_JunkyardReturn_1045</comment>\n  </data>\n  <data name=\"Dlg_JunkyardReturn_1000\" xml:space=\"preserve\">\n    <value>Share some bullets with him. That should slow him down!</value>\n    <comment>Dlg_JunkyardReturn_1046</comment>\n  </data>\n  <data name=\"Dlg_JunkyardReturn_1100\" xml:space=\"preserve\">\n    <value>Ok, you’re heading into the last leg. The forge. Just don’t touch the walls!</value>\n    <comment>Dlg_JunkyardReturn_1047</comment>\n  </data>\n  <data name=\"Dlg_JunkyardReturn_1200\" xml:space=\"preserve\">\n    <value>I see you Apollo. You’re almost there! One more curve, then a straightaway to the finish!</value>\n    <comment>Dlg_JunkyardReturn_1048</comment>\n  </data>\n  <data name=\"Dlg_JunkyardReturn_1300\" xml:space=\"preserve\">\n    <value>That was awesome, brother! You owned him!</value>\n    <comment>Dlg_JunkyardReturn_1049</comment>\n  </data>\n  <data name=\"Dlg_JunkyardReturn_1301\" xml:space=\"preserve\">\n    <value>Nicely done, Apollo! Glad to see you in one piece.</value>\n    <comment>Dlg_JunkyardReturn_1050</comment>\n  </data>\n  <data name=\"Dlg_JunkyardReturn_1302\" xml:space=\"preserve\">\n    <value>That’s impossible! You couldn’t have won! </value>\n    <comment>Dlg_JunkyardReturn_1051</comment>\n  </data>\n  <data name=\"Dlg_JunkyardReturn_1303\" xml:space=\"preserve\">\n    <value>If you want a rematch, my grandma’s ready to roll.</value>\n  </data>\n  <data name=\"Dlg_JunkyardReturn_1304\" xml:space=\"preserve\">\n    <value>Whatever. Get out of my sight before I really get pissed off.</value>\n  </data>\n  <data name=\"Dlg_JunkyardReturn_1305\" xml:space=\"preserve\">\n    <value>Don’t you think you owe the victor a prize?</value>\n  </data>\n  <data name=\"Dlg_JunkyardReturn_1306\" xml:space=\"preserve\">\n    <value>Your prize is me not killing you. IF you leave NOW.</value>\n  </data>\n  <data name=\"Dlg_JunkyardReturn_1307\" xml:space=\"preserve\">\n    <value>Oh, he’s such a little weasel. </value>\n  </data>\n  <data name=\"Dlg_JunkyardReturn_1308\" xml:space=\"preserve\">\n    <value>I wonder what his ship would look like turned to scrap metal…</value>\n  </data>\n  <data name=\"Dlg_JunkyardReturn_1309\" xml:space=\"preserve\">\n    <value>Forget it. Your bullets are worth more than that piece of crap.</value>\n    <comment>Dlg_JunkyardReturn_1058</comment>\n  </data>\n  <data name=\"Dlg_JunkyardReturn_1310\" xml:space=\"preserve\">\n    <value>Yeah. I guess you’re right. Let’s just find Manjeet.</value>\n    <comment>Dlg_JunkyardReturn_1059</comment>\n  </data>\n  <data name=\"Dlg_JunkyardReturn_1400\" xml:space=\"preserve\">\n    <value>So, who won the race?</value>\n    <comment>Dlg_JunkyardReturn_1060</comment>\n  </data>\n  <data name=\"Dlg_JunkyardReturn_1401\" xml:space=\"preserve\">\n    <value>Three guesses. First two don’t count.</value>\n    <comment>Dlg_JunkyardReturn_1061</comment>\n  </data>\n  <data name=\"Dlg_JunkyardReturn_1402\" xml:space=\"preserve\">\n    <value>Glad to hear it. But there’s a little problem with your cargo…</value>\n    <comment>Dlg_JunkyardReturn_1062</comment>\n  </data>\n  <data name=\"Dlg_JunkyardReturn_1403\" xml:space=\"preserve\">\n    <value>What are you talking about? We almost killed ourselves for that stuff?!</value>\n    <comment>Dlg_JunkyardReturn_1063</comment>\n  </data>\n  <data name=\"Dlg_JunkyardReturn_1404\" xml:space=\"preserve\">\n    <value>TARJA, LOAD YOUR WEAPONS!!!</value>\n    <comment>Dlg_JunkyardReturn_1064</comment>\n  </data>\n  <data name=\"Dlg_JunkyardReturn_1405\" xml:space=\"preserve\">\n    <value>Just kidding, just kidding. Everything is fine. I will give you the item we agreed upon. </value>\n    <comment>Dlg_JunkyardReturn_1065</comment>\n  </data>\n  <data name=\"Dlg_JunkyardReturn_1406\" xml:space=\"preserve\">\n    <value>Valentin, my friend, you need to switch to decaf. </value>\n    <comment>Dlg_JunkyardReturn_1066</comment>\n  </data>\n  <data name=\"Dlg_JunkyardReturn_1407\" xml:space=\"preserve\">\n    <value>Sorry. When it comes to risking my life and not getting paid, I have “issues”.</value>\n    <comment>Dlg_JunkyardReturn_1067</comment>\n  </data>\n  <data name=\"Dlg_JunkyardReturn_1408\" xml:space=\"preserve\">\n    <value>Ok, just give us the artifact so we can get out of here.</value>\n    <comment>Dlg_JunkyardReturn_1068</comment>\n  </data>\n  <data name=\"Dlg_JunkyardReturn_1409\" xml:space=\"preserve\">\n    <value>I’m looking forward to never coming back here again.</value>\n    <comment>Dlg_JunkyardReturn_1069</comment>\n  </data>\n  <data name=\"Dlg_JunkyardReturn_1410\" xml:space=\"preserve\">\n    <value>Of course. I loaded it into the cargo hold of your mothership. </value>\n    <comment>Dlg_JunkyardReturn_1070</comment>\n  </data>\n  <data name=\"Dlg_JunkyardReturn_1411\" xml:space=\"preserve\">\n    <value>Copy that. Artifact loaded on Sapho.</value>\n    <comment>Dlg_JunkyardReturn_1071</comment>\n  </data>\n  <data name=\"Dlg_JunkyardReturn_1412\" xml:space=\"preserve\">\n    <value>And here is a little bonus for a job well done. </value>\n    <comment>Dlg_JunkyardReturn_1072</comment>\n  </data>\n  <data name=\"Dlg_JunkyardReturn_1413\" xml:space=\"preserve\">\n    <value>Take care of yourselves, my friends. Perhaps we’ll do business again.</value>\n  </data>\n  <data name=\"Dlg_JunkyardReturn_1414\" xml:space=\"preserve\">\n    <value>We sincerely hope not.</value>\n    <comment>Dlg_JunkyardReturn_1074</comment>\n  </data>\n  <data name=\"Dlg_JunkyardReturn_1415\" xml:space=\"preserve\">\n    <value>Thomas, do you copy?</value>\n    <comment>Dlg_JunkyardReturn_1075</comment>\n  </data>\n  <data name=\"Dlg_JunkyardReturn_1416\" xml:space=\"preserve\">\n    <value>I am online. Were you successful?</value>\n    <comment>Dlg_JunkyardReturn_1076</comment>\n  </data>\n  <data name=\"Dlg_JunkyardReturn_1417\" xml:space=\"preserve\">\n    <value>We have this alien thing. </value>\n    <comment>Dlg_JunkyardReturn_1077</comment>\n  </data>\n  <data name=\"Dlg_JunkyardReturn_1418\" xml:space=\"preserve\">\n    <value>Tell me about it!</value>\n  </data>\n  <data name=\"Dlg_JunkyardReturn_1419\" xml:space=\"preserve\">\n    <value>Looks more like Rosetta Stone than a superhuman device.</value>\n    <comment>Dlg_JunkyardReturn_1079</comment>\n  </data>\n  <data name=\"Dlg_JunkyardReturn_1420\" xml:space=\"preserve\">\n    <value>What did you expect? Light sabers and plasma guns?</value>\n    <comment>Dlg_JunkyardReturn_1080</comment>\n  </data>\n  <data name=\"Dlg_JunkyardReturn_1421\" xml:space=\"preserve\">\n    <value>What should we do with it?</value>\n  </data>\n  <data name=\"Dlg_JunkyardReturn_1422\" xml:space=\"preserve\">\n    <value>Drop it by my place, I will give it thorough examination.</value>\n  </data>\n  <data name=\"Dlg_JunkyardReturn_1423\" xml:space=\"preserve\">\n    <value>Only one of you needs to do the delivery – the rest of you, head on over to Valiant.</value>\n  </data>\n  <data name=\"Dlg_JunkyardReturn_1424\" xml:space=\"preserve\">\n    <value>Valiant? You mean the Templar fortress?</value>\n  </data>\n  <data name=\"Dlg_JunkyardReturn_1425\" xml:space=\"preserve\">\n    <value>Exactly. I checked some reliable sources and I am 99% sure the Templars stumbled…</value>\n  </data>\n  <data name=\"Dlg_JunkyardReturn_1426\" xml:space=\"preserve\">\n    <value>…upon one of the artifact pieces. You must check it out. </value>\n  </data>\n  <data name=\"Dlg_JunkyardReturn_1427\" xml:space=\"preserve\">\n    <value>On our way, then. I’ll take the artifact to Barth’s moon and we’ll meet up at Valiant.</value>\n  </data>\n  <data name=\"Dlg_JunkyardReturn_1428\" xml:space=\"preserve\">\n    <value>Chill a bit, guys, I might be a little late.</value>\n  </data>\n  <data name=\"Dlg_JunkyardReturn_1429\" xml:space=\"preserve\">\n    <value>We’ll take the scenic route and meet you at the gates of Valiant.</value>\n    <comment>Dlg_JunkyardReturn_1089</comment>\n  </data>\n  <data name=\"Dlg_JunkyardReturn_1430\" xml:space=\"preserve\">\n    <value>Ok, Apollo, Valentin, Tarja – dock in!</value>\n    <comment>Dlg_JunkyardReturn_1090</comment>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_01_01\" xml:space=\"preserve\">\n    <value>This is the place. </value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_01_02\" xml:space=\"preserve\">\n    <value>Too many sharp metal objects. I can’t proceed any further, you’re on your own.</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_01_03\" xml:space=\"preserve\">\n    <value>Any idea where the smuggler might be?</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_01_04\" xml:space=\"preserve\">\n    <value>I’ve been here before. It’s a small community. Everyone knows everyone.</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_01_05\" xml:space=\"preserve\">\n    <value>What do you suggest?</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_01_06\" xml:space=\"preserve\">\n    <value>I know a guy. Hangs around Old Shard tavern.</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_02_01\" xml:space=\"preserve\">\n    <value>By the way, Marcus. How do you know a seedy place like this?</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_02_02\" xml:space=\"preserve\">\n    <value>Um… research. </value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_02_03\" xml:space=\"preserve\">\n    <value>Ok, whatever.</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_03_01\" xml:space=\"preserve\">\n    <value>Marcus, is that you?</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_03_02\" xml:space=\"preserve\">\n    <value>You said know a guy around here.</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_03_03\" xml:space=\"preserve\">\n    <value>Guy: it’s a generic term. Like I said, research.</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_03_04\" xml:space=\"preserve\">\n    <value>It’s been years! You just left and I never–</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_03_05\" xml:space=\"preserve\">\n    <value>You and I can talk privately later, Tarja. We’re here for other matters.</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_03_06\" xml:space=\"preserve\">\n    <value>Such as?</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_03_07\" xml:space=\"preserve\">\n    <value>We’re looking for one Hindu guy. A smuggler by the name Manjeet.</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_03_08\" xml:space=\"preserve\">\n    <value>Sold you some rare “antiquity”, and you just found out it was a cheese grater from Q-Mart?</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_03_09\" xml:space=\"preserve\">\n    <value>We never met him before. But we heard he has… something.</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_03_10\" xml:space=\"preserve\">\n    <value>Something we’re interested in.</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_03_11\" xml:space=\"preserve\">\n    <value>Be gentle with him. </value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_03_12\" xml:space=\"preserve\">\n    <value>He may not be the bravest or the most virtuous man, or even the most… well, you get it. </value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_03_13\" xml:space=\"preserve\">\n    <value>But he’s a friend. </value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_03_14\" xml:space=\"preserve\">\n    <value>Duly noted.</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_03_15\" xml:space=\"preserve\">\n    <value>The last time I saw him was in the upper docks. Harbor district.</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_03_16\" xml:space=\"preserve\">\n    <value>We’ll check it out.  </value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_03_17\" xml:space=\"preserve\">\n    <value>Good luck finding… what you’re after.</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_04_01\" xml:space=\"preserve\">\n    <value>Shit! Zappa, I promise, I will deliver the “goods” in two hours! </value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_04_02\" xml:space=\"preserve\">\n    <value>I give you my word…–</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_04_03\" xml:space=\"preserve\">\n    <value>Ehm, we’re looking for… </value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_04_04\" xml:space=\"preserve\">\n    <value>I won’t take this crap! </value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_04_05\" xml:space=\"preserve\">\n    <value>You won’t screw with Manjeet – not anymore! …</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_04_06\" xml:space=\"preserve\">\n    <value>Guys, take out these brigands!</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_05_01\" xml:space=\"preserve\">\n    <value>I… I can pay you more than Zappa! I swear! Just –</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_05_02\" xml:space=\"preserve\">\n    <value>Calm down. We want to buy something from you.</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_05_03\" xml:space=\"preserve\">\n    <value>Oh. I nearly had a heart attack. </value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_05_04\" xml:space=\"preserve\">\n    <value>I’d love to do business, but this Momo Zappa and his gang are after me at the moment.</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_05_05\" xml:space=\"preserve\">\n    <value>We noticed.</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_05_06\" xml:space=\"preserve\">\n    <value>How about a deal?</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_05_07\" xml:space=\"preserve\">\n    <value>Get rid of those bastards and I will sell you my secret, top-of-the-line goods. </value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_05_08\" xml:space=\"preserve\">\n    <value>With 15% discount!</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_05_09\" xml:space=\"preserve\">\n    <value>All right, don’t go anywhere.</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_06_01\" xml:space=\"preserve\">\n    <value>Who is this Zappa, anyway?</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_06_02\" xml:space=\"preserve\">\n    <value>Head of some local gang. There are hundreds of guys like him around.</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_06_03\" xml:space=\"preserve\">\n    <value>Why do you think Manjeet has a dispute with this particular one?</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_06_04\" xml:space=\"preserve\">\n    <value>Better not to ask. Drugs, women, weapons? This is none of our business. </value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_06_05\" xml:space=\"preserve\">\n    <value>Let’s just get the job done. </value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_06_06\" xml:space=\"preserve\">\n    <value>Here we go.</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_06_07\" xml:space=\"preserve\">\n    <value>Watchoo want? Go playin’ somewhere else, this’ our quarter.</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_06_08\" xml:space=\"preserve\">\n    <value>Manjeet sent us.</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_06_09\" xml:space=\"preserve\">\n    <value>If you’re lookin’ for Momo, you come to the right place.</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_06_10\" xml:space=\"preserve\">\n    <value>Except. Could be the wrong place for you. </value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_06_11\" xml:space=\"preserve\">\n    <value>Why you riskin’ your life for that scrote sack, Manjeet?</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_06_12\" xml:space=\"preserve\">\n    <value>We have an agreement. You can understand that.</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_06_13\" xml:space=\"preserve\">\n    <value>Here’s what I understand!</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_07_01\" xml:space=\"preserve\">\n    <value>Manjeet’s trigger men! You dare disrespect me? Do you know who I am?</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_07_02\" xml:space=\"preserve\">\n    <value>That’s why we’re here.</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_08_01\" xml:space=\"preserve\">\n    <value>I am most impressed! Come back and browse through the finest selection of bright material.</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_08_02\" xml:space=\"preserve\">\n    <value>Bright material?</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_08_03\" xml:space=\"preserve\">\n    <value>You know, active nuclear gadgets. You came for a trade, right?</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_08_04\" xml:space=\"preserve\">\n    <value>We came for an artifact you bought from the pirates.</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_08_05\" xml:space=\"preserve\">\n    <value>Ah, the artifact. Sadly, that item is not for sale. Too expensive for you.</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_08_06\" xml:space=\"preserve\">\n    <value>But our agreement still stands – all nuclear material you can imagine, plus 15% dis–</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_08_07\" xml:space=\"preserve\">\n    <value>How much do you want for the artifact?</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_08_08\" xml:space=\"preserve\">\n    <value>Far, far too much for likes of you. No offense. Thirteen million, not a penny less. </value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_08_09\" xml:space=\"preserve\">\n    <value>As I said, too rich for your blood.</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_08_10\" xml:space=\"preserve\">\n    <value>What if we kill you right here and take it ourselves?</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_08_11\" xml:space=\"preserve\">\n    <value>I am not so stupid. Such expensive items… I keep them with friends.</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_08_12\" xml:space=\"preserve\">\n    <value>If you kill me or threaten me, you will never get it. </value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_08_13\" xml:space=\"preserve\">\n    <value>You want to keep the artifact for yourself or sell it to the highest bidder?</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_08_14\" xml:space=\"preserve\">\n    <value>Option B is more to my liking.</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_08_15\" xml:space=\"preserve\">\n    <value>What about this: We did you a favor once, we’ll do you a second one. </value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_08_16\" xml:space=\"preserve\">\n    <value>I bet a guy like you has a lot of enemies.</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_08_17\" xml:space=\"preserve\">\n    <value>I am fine now. As long as Zappa is dead, my friends can get me out of troubles…</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_08_18\" xml:space=\"preserve\">\n    <value>…except… </value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_08_19\" xml:space=\"preserve\">\n    <value>Yes?</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_08_20\" xml:space=\"preserve\">\n    <value>There is something I want. Perhaps we might barter. </value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_08_21\" xml:space=\"preserve\">\n    <value>Get me a cargo ship full of plutonium and you have a deal. </value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_08_22\" xml:space=\"preserve\">\n    <value>That should be doable. </value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_08_23\" xml:space=\"preserve\">\n    <value>Hijack a cargo ship, fly to some plutonium-rich asteroid field, fill it up… </value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_08_24\" xml:space=\"preserve\">\n    <value>We’ll be back in a few hours.</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_08_25\" xml:space=\"preserve\">\n    <value>No, my friend. If I wanted plutonium ore, I could get it myself. </value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_08_26\" xml:space=\"preserve\">\n    <value>I want a cargo ship full of REFINED plutonium. Military grade.</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_08_27\" xml:space=\"preserve\">\n    <value>Good Lord. What would you do with something like that?</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_08_28\" xml:space=\"preserve\">\n    <value>That’s my business. I have very… diversified enterprises.</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_08_29\" xml:space=\"preserve\">\n    <value>Where the hell could we get our hands on a cargo ship full of military grade plutonium?</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_08_30\" xml:space=\"preserve\">\n    <value>The Chinese. They have loads of the stuff.</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_08_31\" xml:space=\"preserve\">\n    <value>I assume you have some specific details.</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_08_32\" xml:space=\"preserve\">\n    <value>A complete plan, and a good one, too! </value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_08_33\" xml:space=\"preserve\">\n    <value>I just couldn’t find anyone stu– brave enough to do it for me. </value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_08_34\" xml:space=\"preserve\">\n    <value>There is a plutonium refinery at Jingzhou. You can’t take it by force. </value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_08_35\" xml:space=\"preserve\">\n    <value>And you can’t steal one of the ships loaded with refined plutonium. </value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_08_36\" xml:space=\"preserve\">\n    <value>They are too heavily guarded. So…</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_08_37\" xml:space=\"preserve\">\n    <value>You need to steal one of the poorly protected ships leaving the mining colony of Changde.</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_08_38\" xml:space=\"preserve\">\n    <value>Fly with it to Jingzhou. Unload the ore and then load it up with the refined stuff.</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_08_39\" xml:space=\"preserve\">\n    <value>Piece of cake! Why didn’t we think of that?</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_08_40\" xml:space=\"preserve\">\n    <value>It might actually work.</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_08_41\" xml:space=\"preserve\">\n    <value>Can we trust him? Maybe he just wants us to get killed?</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_08_42\" xml:space=\"preserve\">\n    <value>Nah. He wants the stuff so badly he can taste it.</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_08_43\" xml:space=\"preserve\">\n    <value>Okay. We’re in.</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_08_44\" xml:space=\"preserve\">\n    <value>Perfect. I transmitted you all the coordinates and relevant data. </value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_08_45\" xml:space=\"preserve\">\n    <value>Once you are ready, set a course for Changde. </value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_08_46\" xml:space=\"preserve\">\n    <value>Just before departure, pick up some explosives from my auxiliary depot. </value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_08_47\" xml:space=\"preserve\">\n    <value>You might find them useful.</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_08_48\" xml:space=\"preserve\">\n    <value>Guys, I’m going to do a little more… research. </value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_08_49\" xml:space=\"preserve\">\n    <value>Apollo, get those explosives, we’ll meet at Sapho.</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_09_01\" xml:space=\"preserve\">\n    <value>You here for a delivery for Manjeet?</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_09_02\" xml:space=\"preserve\">\n    <value>You know it.</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_09_03\" xml:space=\"preserve\">\n    <value>Your “package” is ready. And please, send my regards to Mr. Lata.</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_09_04\" xml:space=\"preserve\">\n    <value>Thanks.</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_09_05\" xml:space=\"preserve\">\n    <value>That was easy.</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_09_06\" xml:space=\"preserve\">\n    <value>Marcus, I’m ready, how about you? How’s that research coming?</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_09_07\" xml:space=\"preserve\">\n    <value>I need to probe a little… deeper. Why don’t you come here?</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_09_08\" xml:space=\"preserve\">\n    <value>On my way.</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_09_09\" xml:space=\"preserve\">\n    <value>As soon as possible.</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_09_10\" xml:space=\"preserve\">\n    <value>Uhm, roger that.</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_10_01\" xml:space=\"preserve\">\n    <value>What’s going on here? Some kind of key-swapping party tonight?</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_10_02\" xml:space=\"preserve\">\n    <value>No need to be rude, Mr. Rainier. A friend of ours got into some trouble.</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_10_03\" xml:space=\"preserve\">\n    <value>Just shut up and watch.</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_10_04\" xml:space=\"preserve\">\n    <value>…that stuff you sold us last time –</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_10_05\" xml:space=\"preserve\">\n    <value>What’s the problem with it?</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_10_06\" xml:space=\"preserve\">\n    <value>One of our boys died after sniffing a gram!</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_10_07\" xml:space=\"preserve\">\n    <value>Tragic. You guys know this stuff can have side effects.</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_10_08\" xml:space=\"preserve\">\n    <value>Bullshit! It was bad and you know it.</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_10_09\" xml:space=\"preserve\">\n    <value>And your point is…?</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_10_10\" xml:space=\"preserve\">\n    <value>I want my money back.</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_10_11\" xml:space=\"preserve\">\n    <value>You should have read the fine print. No refunds.</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_10_12\" xml:space=\"preserve\">\n    <value>Guys, give this jag-off a refund!</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_11_01\" xml:space=\"preserve\">\n    <value>We need to help my friend Valentin. Marcus? Apollo.</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_11_02\" xml:space=\"preserve\">\n    <value>Friends are friends, I guess.</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_11_03\" xml:space=\"preserve\">\n    <value>Whatever.</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_12_01\" xml:space=\"preserve\">\n    <value>Thank you, whoever you are.</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_12_02\" xml:space=\"preserve\">\n    <value>Friends of a friend.</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_12_03\" xml:space=\"preserve\">\n    <value>You fight well. Are you EAC militia?</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_12_04\" xml:space=\"preserve\">\n    <value>Freelancers. Just doing our business.</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_12_05\" xml:space=\"preserve\">\n    <value>Valentin, they’re after something big. Something that can lead to loads of cash.</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_12_06\" xml:space=\"preserve\">\n    <value>I’m listening.</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_12_07\" xml:space=\"preserve\">\n    <value>We could use a hand. In return we offer, um, high adventure. And a share of the loot.</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_12_08\" xml:space=\"preserve\">\n    <value>I’m in. Just like old times.</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_12_09\" xml:space=\"preserve\">\n    <value>Old times?</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_12_10\" xml:space=\"preserve\">\n    <value>It seems I have some explaining for you and Madelyn. We’ll save it for later.</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_12_11\" xml:space=\"preserve\">\n    <value>Let’s head back to Sapho. Destination Changde.</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_12_12\" xml:space=\"preserve\">\n    <value>Valentin, you with us?</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_12_13\" xml:space=\"preserve\">\n    <value>Like a bad case of crabs!</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_13_01\" xml:space=\"preserve\">\n    <value>Have a nice time, Marcus?</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_13_02\" xml:space=\"preserve\">\n    <value>I’ve always been fond of research.</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_13_03\" xml:space=\"preserve\">\n    <value>I see we have company.</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_13_04\" xml:space=\"preserve\">\n    <value>We’ll save the introductions for later. We’re heading for Changde.</value>\n  </data>\n  <data name=\"Dlg_JunkyardConvince_13_05\" xml:space=\"preserve\">\n    <value>You got it. We’ll talk on the way. And we WILL talk.</value>\n  </data>\n  <data name=\"Dlg_LastHope_0100\" xml:space=\"preserve\">\n    <value>We’re not too late, I hope. </value>\n  </data>\n  <data name=\"Dlg_LastHope_0101\" xml:space=\"preserve\">\n    <value>But I’m picking signals from several slaver mother ships. </value>\n  </data>\n  <data name=\"Dlg_LastHope_0102\" xml:space=\"preserve\">\n    <value>Let’s get this done fast.</value>\n  </data>\n  <data name=\"Dlg_LastHope_0103\" xml:space=\"preserve\">\n    <value>We’re on our way.</value>\n  </data>\n  <data name=\"Dlg_LastHope_0200\" xml:space=\"preserve\">\n    <value>Reinforcements? This base should have been unarmed, no defense fleet! </value>\n  </data>\n  <data name=\"Dlg_LastHope_0201\" xml:space=\"preserve\">\n    <value>This was not part of our contract. …</value>\n  </data>\n  <data name=\"Dlg_LastHope_0207\" xml:space=\"preserve\">\n    <value>Go away, strangers. This is none of your business.</value>\n  </data>\n  <data name=\"Dlg_LastHope_0208\" xml:space=\"preserve\">\n    <value>We’re here to help these people.</value>\n  </data>\n  <data name=\"Dlg_LastHope_0209\" xml:space=\"preserve\">\n    <value>And you stand in our way.</value>\n  </data>\n  <data name=\"Dlg_LastHope_0210\" xml:space=\"preserve\">\n    <value>You want trouble, you’ve got it.</value>\n  </data>\n  <data name=\"Dlg_LastHope_0300\" xml:space=\"preserve\">\n    <value>You… are you here to help us? Did you receive our call?</value>\n  </data>\n  <data name=\"Dlg_LastHope_0301\" xml:space=\"preserve\">\n    <value>We did. </value>\n  </data>\n  <data name=\"Dlg_LastHope_0302\" xml:space=\"preserve\">\n    <value>Please, hurry. A few of us are still here, the rest are being hauled away in cages.</value>\n  </data>\n  <data name=\"Dlg_LastHope_0303\" xml:space=\"preserve\">\n    <value>For now, hit the remaining raiding ships! </value>\n  </data>\n  <data name=\"Dlg_LastHope_0304\" xml:space=\"preserve\">\n    <value>At least that will save those who are still alive.</value>\n  </data>\n  <data name=\"Dlg_LastHope_0305\" xml:space=\"preserve\">\n    <value>Roger. </value>\n  </data>\n  <data name=\"Dlg_LastHope_0400\" xml:space=\"preserve\">\n    <value>May God bless you!</value>\n  </data>\n  <data name=\"Dlg_LastHope_0402\" xml:space=\"preserve\">\n    <value>Are we done here?</value>\n  </data>\n  <data name=\"Dlg_LastHope_0403\" xml:space=\"preserve\">\n    <value>No! We still need your help. </value>\n  </data>\n  <data name=\"Dlg_LastHope_0404\" xml:space=\"preserve\">\n    <value>The colony is safe, for now, but their cargo ships are full of our people.</value>\n  </data>\n  <data name=\"Dlg_LastHope_0405\" xml:space=\"preserve\">\n    <value>They’ve already left, but you should be able to catch up with them. </value>\n  </data>\n  <data name=\"Dlg_LastHope_0408\" xml:space=\"preserve\">\n    <value>We’ll do what we can. </value>\n  </data>\n  <data name=\"Dlg_LastHope_0500\" xml:space=\"preserve\">\n    <value>These must be the slave transports.</value>\n  </data>\n  <data name=\"Dlg_LastHope_0501\" xml:space=\"preserve\">\n    <value>Remember what the old man said. Don’t destroy the ships or the prisoners will die. </value>\n  </data>\n  <data name=\"Dlg_LastHope_0503\" xml:space=\"preserve\">\n    <value>Acknowledged. </value>\n  </data>\n  <data name=\"Dlg_LastHope_0600\" xml:space=\"preserve\">\n    <value>Job done. Transports disabled.</value>\n  </data>\n  <data name=\"Dlg_LastHope_0601\" xml:space=\"preserve\">\n    <value>Thank you again! </value>\n  </data>\n  <data name=\"Dlg_LastHope_0602\" xml:space=\"preserve\">\n    <value>So, are you safe now? We have other matters to attend to.</value>\n  </data>\n  <data name=\"Dlg_LastHope_0603\" xml:space=\"preserve\">\n    <value>Please… Wait! One more thing! It seems some of those slavers have…</value>\n  </data>\n  <data name=\"Dlg_LastHope_0604\" xml:space=\"preserve\">\n    <value>…gotten into our underground shafts.</value>\n  </data>\n  <data name=\"Dlg_LastHope_0605\" xml:space=\"preserve\">\n    <value>They’ve somehow damaged our power generator, along with the gas vents.</value>\n  </data>\n  <data name=\"Dlg_LastHope_0606\" xml:space=\"preserve\">\n    <value>Without that equipment, even the few of us who remain here will die within hours. </value>\n  </data>\n  <data name=\"Dlg_LastHope_0607\" xml:space=\"preserve\">\n    <value>How do we get into the shafts?</value>\n  </data>\n  <data name=\"Dlg_LastHope_0608\" xml:space=\"preserve\">\n    <value>The entrances are marked with red lights. </value>\n  </data>\n  <data name=\"Dlg_LastHope_0609\" xml:space=\"preserve\">\n    <value>You can’t miss them. Once you’re inside, watch out for slaver ships. </value>\n  </data>\n  <data name=\"Dlg_LastHope_0700\" xml:space=\"preserve\">\n    <value>How many ships should we expect?</value>\n  </data>\n  <data name=\"Dlg_LastHope_0701\" xml:space=\"preserve\">\n    <value>Only a handful. But… eh…</value>\n  </data>\n  <data name=\"Dlg_LastHope_0702\" xml:space=\"preserve\">\n    <value>Yes?</value>\n  </data>\n  <data name=\"Dlg_LastHope_0703\" xml:space=\"preserve\">\n    <value>Be careful. The generator is an old Russian nuclear model we got for cheap. </value>\n  </data>\n  <data name=\"Dlg_LastHope_0704\" xml:space=\"preserve\">\n    <value>Now that it’s been damaged, it’s leaking radiation all around. </value>\n  </data>\n  <data name=\"Dlg_LastHope_0713\" xml:space=\"preserve\">\n    <value>Let’s get to work. </value>\n  </data>\n  <data name=\"Dlg_LastHope_0714\" xml:space=\"preserve\">\n    <value>Fast. Roust the slavers, fix the leaking generator, and perform the minor repairs.</value>\n  </data>\n  <data name=\"Dlg_LastHope_0800\" xml:space=\"preserve\">\n    <value>This must be the entry.</value>\n  </data>\n  <data name=\"Dlg_LastHope_0801\" xml:space=\"preserve\">\n    <value>Looks like it. </value>\n  </data>\n  <data name=\"Dlg_LastHope_0900\" xml:space=\"preserve\">\n    <value>Jeff, you think we’ve done enough here?</value>\n  </data>\n  <data name=\"Dlg_LastHope_0901\" xml:space=\"preserve\">\n    <value>You hit the gas vents?</value>\n  </data>\n  <data name=\"Dlg_LastHope_0902\" xml:space=\"preserve\">\n    <value>Made holes in the pipes. In a few minutes, this whole place could blow. </value>\n  </data>\n  <data name=\"Dlg_LastHope_0909\" xml:space=\"preserve\">\n    <value>Good. Then let’s scram. </value>\n  </data>\n  <data name=\"Dlg_LastHope_0910\" xml:space=\"preserve\">\n    <value>In about three minutes this little piece of heaven is going to turn into Hell. </value>\n  </data>\n  <data name=\"Dlg_LastHope_1000\" xml:space=\"preserve\">\n    <value>Shit! </value>\n  </data>\n  <data name=\"Dlg_LastHope_1001\" xml:space=\"preserve\">\n    <value>We need to intercept those two ships before they exit. </value>\n  </data>\n  <data name=\"Dlg_LastHope_1002\" xml:space=\"preserve\">\n    <value>Otherwise they’ll blow the whole asteroid.</value>\n  </data>\n  <data name=\"Dlg_LastHope_1007\" xml:space=\"preserve\">\n    <value>Let’s hurry and find those two ships.</value>\n  </data>\n  <data name=\"Dlg_LastHope_1100\" xml:space=\"preserve\">\n    <value>Ah, brave Christians. You come to offer us a parting prayer?</value>\n  </data>\n  <data name=\"Dlg_LastHope_1200\" xml:space=\"preserve\">\n    <value>We need to disable those explosives. </value>\n  </data>\n  <data name=\"Dlg_LastHope_1300\" xml:space=\"preserve\">\n    <value>See those gas clouds? Don’t make any sparks around them.</value>\n  </data>\n  <data name=\"Dlg_LastHope_1301\" xml:space=\"preserve\">\n    <value>No fireworks today?</value>\n  </data>\n  <data name=\"Dlg_LastHope_1302\" xml:space=\"preserve\">\n    <value>We’ll have to wait for New Year!</value>\n  </data>\n  <data name=\"Dlg_LastHope_1400\" xml:space=\"preserve\">\n    <value>Done. Disarmed–</value>\n  </data>\n  <data name=\"Dlg_LastHope_1401\" xml:space=\"preserve\">\n    <value>Good. </value>\n  </data>\n  <data name=\"Dlg_LastHope_1402\" xml:space=\"preserve\">\n    <value>These vents seem like the source of the leaking gas. </value>\n  </data>\n  <data name=\"Dlg_LastHope_1403\" xml:space=\"preserve\">\n    <value>Yep, these are the leaks we’re looking for. </value>\n  </data>\n  <data name=\"Dlg_LastHope_1500\" xml:space=\"preserve\">\n    <value>One more.</value>\n  </data>\n  <data name=\"Dlg_LastHope_1600\" xml:space=\"preserve\">\n    <value>Done.</value>\n  </data>\n  <data name=\"Dlg_LastHope_1700\" xml:space=\"preserve\">\n    <value>I have a bad feeling about this place.</value>\n  </data>\n  <data name=\"Dlg_LastHope_1701\" xml:space=\"preserve\">\n    <value>Radiation. Hope you don’t mind little black spots on your face.</value>\n  </data>\n  <data name=\"Dlg_LastHope_1702\" xml:space=\"preserve\">\n    <value>We need to be really fast here. </value>\n  </data>\n  <data name=\"Dlg_LastHope_1800\" xml:space=\"preserve\">\n    <value>That’s it. The damaged nuclear generator. </value>\n  </data>\n  <data name=\"Dlg_LastHope_1900\" xml:space=\"preserve\">\n    <value>Good. Radiation stopped. </value>\n  </data>\n  <data name=\"Dlg_LastHope_1901\" xml:space=\"preserve\">\n    <value>Get out of there anyway. Fixing the core doesn’t eliminate the ambient radiation.  </value>\n  </data>\n  <data name=\"Dlg_LastHope_1902\" xml:space=\"preserve\">\n    <value>Right. Note to self: next trip, pack anti-radiation meds. </value>\n  </data>\n  <data name=\"Dlg_LastHope_1904\" xml:space=\"preserve\">\n    <value>Great work in the basement, guys!</value>\n  </data>\n  <data name=\"Dlg_LastHope_1907\" xml:space=\"preserve\">\n    <value>Let’s get back to the surface.</value>\n  </data>\n  <data name=\"Dlg_LastHope_1908\" xml:space=\"preserve\">\n    <value>Say hello to Father Tobias, then and say goodbye.</value>\n  </data>\n  <data name=\"Dlg_LastHope_2000\" xml:space=\"preserve\">\n    <value>Thank you, thank you, my friends! </value>\n  </data>\n  <data name=\"Dlg_LastHope_2001\" xml:space=\"preserve\">\n    <value>You’re welcome.</value>\n  </data>\n  <data name=\"Dlg_LastHope_2005\" xml:space=\"preserve\">\n    <value>And what’s your status here? NOW can we be on our way?</value>\n  </data>\n  <data name=\"Dlg_LastHope_2006\" xml:space=\"preserve\">\n    <value>They damaged much of our base and killed many of our people. </value>\n  </data>\n  <data name=\"Dlg_LastHope_2007\" xml:space=\"preserve\">\n    <value>But we are strong. It will take months to get things back to normal…</value>\n  </data>\n  <data name=\"Dlg_LastHope_2008\" xml:space=\"preserve\">\n    <value>…but with the guidance of heaven, nothing is impossible.</value>\n  </data>\n  <data name=\"Dlg_LastHope_2010\" xml:space=\"preserve\">\n    <value>Marcus, Apollo – good news. Still want to meet that smuggler, Manjeet?</value>\n  </data>\n  <data name=\"Dlg_LastHope_2011\" xml:space=\"preserve\">\n    <value>Definitely. Did he agree on a meeting?</value>\n  </data>\n  <data name=\"Dlg_LastHope_2012\" xml:space=\"preserve\">\n    <value>Well, not exactly. But rumor has it he’s currently at Duncan’s Faith. </value>\n  </data>\n  <data name=\"Dlg_LastHope_2013\" xml:space=\"preserve\">\n    <value>I suggest we head there and ask around. Lorraine out. </value>\n  </data>\n  <data name=\"Dlg_LastHope_2014\" xml:space=\"preserve\">\n    <value>Duncan’s Faith?</value>\n  </data>\n  <data name=\"Dlg_LastHope_2015\" xml:space=\"preserve\">\n    <value>Fancy name for the Junkyard. </value>\n  </data>\n  <data name=\"Dlg_LastHope_2016\" xml:space=\"preserve\">\n    <value>It was a battlefield during the war between EAC and Fourth Reich. </value>\n  </data>\n  <data name=\"Dlg_LastHope_2017\" xml:space=\"preserve\">\n    <value>The place where the last battle occurred. </value>\n  </data>\n  <data name=\"Dlg_LastHope_2018\" xml:space=\"preserve\">\n    <value>Officially, it’s called Duncan’s Faith after the EAC army commander. </value>\n  </data>\n  <data name=\"Dlg_LastHope_2019\" xml:space=\"preserve\">\n    <value>But everyone calls it the Junkyard…</value>\n  </data>\n  <data name=\"Dlg_LastHope_2020\" xml:space=\"preserve\">\n    <value>…’cause there’s thousands tons of metal parts floating around. </value>\n  </data>\n  <data name=\"Dlg_LastHope_2021\" xml:space=\"preserve\">\n    <value>Sounds like an adventure. </value>\n  </data>\n  <data name=\"Dlg_LastHope_2022\" xml:space=\"preserve\">\n    <value>Sounds like an intergalactic yard sale. </value>\n  </data>\n  <data name=\"Dlg_LastHope_2023\" xml:space=\"preserve\">\n    <value>I’m ready whenever you are, guys.</value>\n  </data>\n  <data name=\"Dlg_Rime_0602\" xml:space=\"preserve\">\n    <value>Right, tomorrow we’ll check out the Marimba Club.</value>\n  </data>\n  <data name=\"Dlg_Rime_0602a\" xml:space=\"preserve\">\n    <value>Stuart was there last week and he said the chicks are hot and they like to…</value>\n  </data>\n  <data name=\"Dlg_Rime_0603\" xml:space=\"preserve\">\n    <value>Ok, probably not important.</value>\n  </data>\n  <data name=\"Dlg_Rime_0702\" xml:space=\"preserve\">\n    <value>You’ll regret this… I’m going to tell all my friends and…</value>\n  </data>\n  <data name=\"Dlg_Rime_0703\" xml:space=\"preserve\">\n    <value>One more word and you’ll be talkin’ out of a new hole, pal.</value>\n  </data>\n  <data name=\"Dlg_Rime_0703a\" xml:space=\"preserve\">\n    <value>The one I’m going to rip in your neck.</value>\n  </data>\n  <data name=\"Dlg_Rime_0704\" xml:space=\"preserve\">\n    <value>Ah, the squalid human drama! I’m starting to enjoy this job.</value>\n  </data>\n  <data name=\"Dlg_Rime_0705\" xml:space=\"preserve\">\n    <value>Quiet! I think I’ve got something.</value>\n  </data>\n  <data name=\"Dlg_Rime_0802\" xml:space=\"preserve\">\n    <value>Ok, I’ll take care of inventory today.</value>\n  </data>\n  <data name=\"Dlg_Rime_0803\" xml:space=\"preserve\">\n    <value>Better hurry. We’ve got lots of customers today and not much in a reserve.</value>\n  </data>\n  <data name=\"Dlg_Rime_0805\" xml:space=\"preserve\">\n    <value>Apollo, tail this guy.</value>\n  </data>\n  <data name=\"Dlg_Rime_1002\" xml:space=\"preserve\">\n    <value>What? Damn!</value>\n  </data>\n  <data name=\"Dlg_Rime_1003\" xml:space=\"preserve\">\n    <value>This may seriously impact our working relationship. Guys, take care of the nosy bitch!</value>\n  </data>\n  <data name=\"Dlg_Rime_1004\" xml:space=\"preserve\">\n    <value>We’ve got your back, Apollo! Guys, let’s make this quick.</value>\n  </data>\n  <data name=\"Dlg_Rime_1005\" xml:space=\"preserve\">\n    <value>With pleasure.</value>\n  </data>\n  <data name=\"Dlg_Rime_1101a\" xml:space=\"preserve\">\n    <value>Hurry. I don’t want to be here when the rest of the gang shows up.</value>\n  </data>\n  <data name=\"Dlg_Rime_1102\" xml:space=\"preserve\">\n    <value>Ditto on that.</value>\n  </data>\n  <data name=\"Dlg_Rime_1202\" xml:space=\"preserve\">\n    <value>Ok, then let’s make some dust.</value>\n  </data>\n  <data name=\"Dlg_Rime_1301\" xml:space=\"preserve\">\n    <value>Reef, we’ve got the stuff. Give us the coordinates for Raynolds’ vessel.</value>\n  </data>\n  <data name=\"Dlg_Rime_1302\" xml:space=\"preserve\">\n    <value>Good, good. I just sent them. Reef out.</value>\n  </data>\n  <data name=\"Dlg_Rime_1303\" xml:space=\"preserve\">\n    <value>The next step’s clear. Just follow the coordinates.</value>\n  </data>\n  <data name=\"Dlg_Rime_1401\" xml:space=\"preserve\">\n    <value>Apollo, you want to handle this part?</value>\n  </data>\n  <data name=\"Dlg_Rime_1402\" xml:space=\"preserve\">\n    <value>Sure.</value>\n  </data>\n  <data name=\"Dlg_Rime_1403\" xml:space=\"preserve\">\n    <value>Ok, wait for the signal from Madelyn. We need to make sure no one’s watching.</value>\n  </data>\n  <data name=\"Dlg_Rime_1404\" xml:space=\"preserve\">\n    <value>Proceed to the exact coordinates I sent.</value>\n  </data>\n  <data name=\"Dlg_Rime_1501\" xml:space=\"preserve\">\n    <value>Sit pretty. Wait for my signal.</value>\n  </data>\n  <data name=\"Dlg_Rime_1502\" xml:space=\"preserve\">\n    <value>I’m checking the guard and maintenance ships in the area.</value>\n  </data>\n  <data name=\"Dlg_Rime_1503\" xml:space=\"preserve\">\n    <value>When I give the word, rush inside, place the cargo, and return to this position.</value>\n  </data>\n  <data name=\"Dlg_Rime_1504\" xml:space=\"preserve\">\n    <value>Understood?</value>\n  </data>\n  <data name=\"Dlg_Rime_1505\" xml:space=\"preserve\">\n    <value>I’m locked and loaded.</value>\n  </data>\n  <data name=\"Dlg_Rime_1506\" xml:space=\"preserve\">\n    <value>Ok. Two ships beyond the corner, your direction. Stay calm.</value>\n  </data>\n  <data name=\"Dlg_Rime_1601\" xml:space=\"preserve\">\n    <value>Okay, this is our chance!</value>\n  </data>\n  <data name=\"Dlg_Rime_1602\" xml:space=\"preserve\">\n    <value>Get ready… three, two, one – go, go, go!</value>\n  </data>\n  <data name=\"Dlg_Rime_1603\" xml:space=\"preserve\">\n    <value>Place the cargo boxes on the points marked on your HUD.</value>\n  </data>\n  <data name=\"Dlg_Rime_1604\" xml:space=\"preserve\">\n    <value>And hurry, I’m picking up several ships that might head our direction.</value>\n  </data>\n  <data name=\"Dlg_Rime_1701\" xml:space=\"preserve\">\n    <value>Ok, Apollo, incoming ships. You’ve got about ten or twenty seconds.</value>\n  </data>\n  <data name=\"Dlg_Rime_1702\" xml:space=\"preserve\">\n    <value>Hurry up, two ships, nearly visual contact!</value>\n  </data>\n  <data name=\"Dlg_Rime_1801\" xml:space=\"preserve\">\n    <value>Nice run, Apollo!</value>\n  </data>\n  <data name=\"Dlg_Rime_1802\" xml:space=\"preserve\">\n    <value>Thanks.</value>\n  </data>\n  <data name=\"Dlg_Rime_1803\" xml:space=\"preserve\">\n    <value>A little on the high-stress side, but nice.</value>\n  </data>\n  <data name=\"Dlg_Rime_1804\" xml:space=\"preserve\">\n    <value>So we’re on our way to Reef again?</value>\n  </data>\n  <data name=\"Dlg_Rime_1805\" xml:space=\"preserve\">\n    <value>That’s the plan.</value>\n  </data>\n  <data name=\"Dlg_Rime_1806\" xml:space=\"preserve\">\n    <value>I hope he’s happy.</value>\n  </data>\n  <data name=\"Dlg_Rime_1807\" xml:space=\"preserve\">\n    <value>We did what he wanted. Now it’s his turn.</value>\n  </data>\n  <data name=\"Dlg_Rime_1901\" xml:space=\"preserve\">\n    <value>Reef, you copy?</value>\n  </data>\n  <data name=\"Dlg_Rime_1902\" xml:space=\"preserve\">\n    <value>Affirmative. Nice job. I’ll jump right to the fine print, gentlemen.</value>\n  </data>\n  <data name=\"Dlg_Rime_1902a\" xml:space=\"preserve\">\n    <value>Consider this a done deal.</value>\n  </data>\n  <data name=\"Dlg_Rime_1903\" xml:space=\"preserve\">\n    <value>I’ll work for you. But these substance detectors you want to construct…</value>\n  </data>\n  <data name=\"Dlg_Rime_1904\" xml:space=\"preserve\">\n    <value>Yes?</value>\n  </data>\n  <data name=\"Dlg_Rime_1905\" xml:space=\"preserve\">\n    <value>They’re going to be a major pain in the ass.</value>\n  </data>\n  <data name=\"Dlg_Rime_1906\" xml:space=\"preserve\">\n    <value>I can build them, but I’m going to require some extremely nasty materials.</value>\n  </data>\n  <data name=\"Dlg_Rime_1907\" xml:space=\"preserve\">\n    <value>Such as?</value>\n  </data>\n  <data name=\"Dlg_Rime_1908\" xml:space=\"preserve\">\n    <value>I’ve just transmitted you the component list and some additional information.</value>\n  </data>\n  <data name=\"Dlg_Rime_1909\" xml:space=\"preserve\">\n    <value>Simply put, you need several components manufactured only by OmniCorp and EAC, …</value>\n  </data>\n  <data name=\"Dlg_Rime_1911\" xml:space=\"preserve\">\n    <value>…some heavy-duty power cells from the black market and last but not least…</value>\n  </data>\n  <data name=\"Dlg_Rime_1912\" xml:space=\"preserve\">\n    <value>…tons of rare plutonium isotopes to keep this thing operational long enough to do its job.</value>\n  </data>\n  <data name=\"Dlg_Rime_1914\" xml:space=\"preserve\">\n    <value>Good. Any tips as to possible sellers?</value>\n  </data>\n  <data name=\"Dlg_Rime_1915\" xml:space=\"preserve\">\n    <value>Ha! Most of these items are rare prototypes.</value>\n  </data>\n  <data name=\"Dlg_Rime_1916\" xml:space=\"preserve\">\n    <value>They won’t be publicly available for three to five years.</value>\n  </data>\n  <data name=\"Dlg_Rime_1917\" xml:space=\"preserve\">\n    <value>So?</value>\n  </data>\n  <data name=\"Dlg_Rime_1918\" xml:space=\"preserve\">\n    <value>I’ll be blunt. Apart from raiding Rime…</value>\n  </data>\n  <data name=\"Dlg_Rime_1919\" xml:space=\"preserve\">\n    <value>…the only way to get components of sufficient quality is to hit Eurydice.</value>\n  </data>\n  <data name=\"Dlg_Rime_1920\" xml:space=\"preserve\">\n    <value>Pretty famous research ship built out of an asteroid.</value>\n  </data>\n  <data name=\"Dlg_Rime_1921\" xml:space=\"preserve\">\n    <value>Doesn’t it belong to OmniCorp?</value>\n  </data>\n  <data name=\"Dlg_Rime_1922\" xml:space=\"preserve\">\n    <value>It’s currently in the Vandenberg Gas Field.</value>\n  </data>\n  <data name=\"Dlg_Rime_1923\" xml:space=\"preserve\">\n    <value>And yes, it’s… partly OmniCorp.</value>\n  </data>\n  <data name=\"Dlg_Rime_1924\" xml:space=\"preserve\">\n    <value>Are you suggesting we raid your own research vessel?</value>\n  </data>\n  <data name=\"Dlg_Rime_1925\" xml:space=\"preserve\">\n    <value>I am not suggesting anything. Just stating the possibilities.</value>\n  </data>\n  <data name=\"Dlg_Rime_1926\" xml:space=\"preserve\">\n    <value>You think we can find all the stuff we need there?</value>\n  </data>\n  <data name=\"Dlg_Rime_1927\" xml:space=\"preserve\">\n    <value>The components, yes. For the fuel cells, try some black market channels.</value>\n  </data>\n  <data name=\"Dlg_Rime_1927a\" xml:space=\"preserve\">\n    <value>Iranians or Indians.</value>\n  </data>\n  <data name=\"Dlg_Rime_1928\" xml:space=\"preserve\">\n    <value>Manjeet.</value>\n  </data>\n  <data name=\"Dlg_Rime_1929\" xml:space=\"preserve\">\n    <value>And as to the plutonium isotopes – I have no clue.</value>\n  </data>\n  <data name=\"Dlg_Rime_1930\" xml:space=\"preserve\">\n    <value>Standard plutonium won’t handle the long-range triangulation we need to try.</value>\n  </data>\n  <data name=\"Dlg_Rime_1932\" xml:space=\"preserve\">\n    <value>I suggest you ask the people you get the fuel cells from.</value>\n  </data>\n  <data name=\"Dlg_Rime_1933\" xml:space=\"preserve\">\n    <value>Ok, thanks for the info, Francis. We’ll be back.</value>\n  </data>\n  <data name=\"Dlg_Rime_1934\" xml:space=\"preserve\">\n    <value>I’ve got the approximate location of Eurydice.</value>\n  </data>\n  <data name=\"Dlg_Rime_1935\" xml:space=\"preserve\">\n    <value>Guys, when you’re ready, come back to Sapho and I’ll heat up the engines.</value>\n  </data>\n  <data name=\"Dlg_Rime_2101\" xml:space=\"preserve\">\n    <value>Dammit! He’s gone!</value>\n  </data>\n  <data name=\"Dlg_Rime_2201\" xml:space=\"preserve\">\n    <value>Dammit! He spotted us!</value>\n  </data>\n  <data name=\"Dlg_RussianWarehouse_0101\" xml:space=\"preserve\">\n    <value>Here we go.</value>\n  </data>\n  <data name=\"Dlg_RussianWarehouse_0102\" xml:space=\"preserve\">\n    <value>Launching the attack. Marcus, Apollo – go after your targets inside!</value>\n  </data>\n  <data name=\"Dlg_RussianWarehouse_0103\" xml:space=\"preserve\">\n    <value>On our way.</value>\n  </data>\n  <data name=\"Dlg_RussianWarehouse_0104\" xml:space=\"preserve\">\n    <value>Cut off their defenses first…</value>\n  </data>\n  <data name=\"Dlg_RussianWarehouse_0105\" xml:space=\"preserve\">\n    <value>I marked the important points of their security system on your GPS.</value>\n  </data>\n  <data name=\"Dlg_RussianWarehouse_0106\" xml:space=\"preserve\">\n    <value>Counting on you, guys! We can distract most of their fighters for a couple of minutes.</value>\n  </data>\n  <data name=\"Dlg_RussianWarehouse_0107\" xml:space=\"preserve\">\n    <value>Make sure you cut off the stationary defenses and other measures!</value>\n  </data>\n  <data name=\"Dlg_RussianWarehouse_0201\" xml:space=\"preserve\">\n    <value>This way, right?</value>\n  </data>\n  <data name=\"Dlg_RussianWarehouse_0202\" xml:space=\"preserve\">\n    <value>Yes. Head inside. This building contains most of the controls and hubs…</value>\n  </data>\n  <data name=\"Dlg_RussianWarehouse_0203\" xml:space=\"preserve\">\n    <value>…you need to infiltrate.</value>\n  </data>\n  <data name=\"Dlg_RussianWarehouse_0204\" xml:space=\"preserve\">\n    <value>Shouldn’t it be the most heavily guarded part of the base?</value>\n  </data>\n  <data name=\"Dlg_RussianWarehouse_0205\" xml:space=\"preserve\">\n    <value>It usually is. Hopefully the pirate attack distracted them, so you’ll only have…</value>\n  </data>\n  <data name=\"Dlg_RussianWarehouse_0206\" xml:space=\"preserve\">\n    <value>…the turrets to worry about, maybe a few fighters.</value>\n  </data>\n  <data name=\"Dlg_RussianWarehouse_0207\" xml:space=\"preserve\">\n    <value>We’ll check out the situation.</value>\n  </data>\n  <data name=\"Dlg_RussianWarehouse_0208\" xml:space=\"preserve\">\n    <value>Hurry up! Switch off those defenses! We’re under heavy fire here!</value>\n  </data>\n  <data name=\"Dlg_RussianWarehouse_0209\" xml:space=\"preserve\">\n    <value>Nearly there. Give us a few seconds.</value>\n  </data>\n  <data name=\"Dlg_RussianWarehouse_0301\" xml:space=\"preserve\">\n    <value>This should help.</value>\n  </data>\n  <data name=\"Dlg_RussianWarehouse_0302\" xml:space=\"preserve\">\n    <value>Thanks! We’re fine on our own for now. Get to the storage area and grab…</value>\n  </data>\n  <data name=\"Dlg_RussianWarehouse_0303\" xml:space=\"preserve\">\n    <value>…the components you need! We’ll take care of the ships outside.</value>\n  </data>\n  <data name=\"Dlg_RussianWarehouse_0304\" xml:space=\"preserve\">\n    <value>You’ll need to get to the main warehouse. Turn off the turrets…</value>\n  </data>\n  <data name=\"Dlg_RussianWarehouse_0305\" xml:space=\"preserve\">\n    <value>…at the old entrance and the exit door.</value>\n  </data>\n  <data name=\"Dlg_RussianWarehouse_0401\" xml:space=\"preserve\">\n    <value>You’re clear to go. Proceed to the old entrance. Use the coordinates from Lorraine.</value>\n  </data>\n  <data name=\"Dlg_RussianWarehouse_0501\" xml:space=\"preserve\">\n    <value>The old entry seems to be boarded-up.</value>\n  </data>\n  <data name=\"Dlg_RussianWarehouse_0502\" xml:space=\"preserve\">\n    <value>We’ll need to drill or smash our way through!</value>\n  </data>\n  <data name=\"Dlg_RussianWarehouse_0601\" xml:space=\"preserve\">\n    <value>Cool, we’re inside!</value>\n  </data>\n  <data name=\"Dlg_RussianWarehouse_0602\" xml:space=\"preserve\">\n    <value>Be careful! That pirate attack distracted most of the Russian ships, but…</value>\n  </data>\n  <data name=\"Dlg_RussianWarehouse_0603\" xml:space=\"preserve\">\n    <value>…there are still plenty of them around. At least according to my scans.</value>\n  </data>\n  <data name=\"Dlg_RussianWarehouse_0604\" xml:space=\"preserve\">\n    <value>Roger that.</value>\n  </data>\n  <data name=\"Dlg_RussianWarehouse_0605\" xml:space=\"preserve\">\n    <value>Get to the main storage room. You have the coordinates. Good luck! And hurry!</value>\n  </data>\n  <data name=\"Dlg_RussianWarehouse_0701\" xml:space=\"preserve\">\n    <value>The components should be somewhere in this area.</value>\n  </data>\n  <data name=\"Dlg_RussianWarehouse_0702\" xml:space=\"preserve\">\n    <value>I did some thorough scans. The placement of the components is marked on your HUD.</value>\n  </data>\n  <data name=\"Dlg_RussianWarehouse_0703\" xml:space=\"preserve\">\n    <value>Always a step ahead, right?</value>\n  </data>\n  <data name=\"Dlg_RussianWarehouse_0704\" xml:space=\"preserve\">\n    <value>You know you can always count on me!</value>\n  </data>\n  <data name=\"Dlg_RussianWarehouse_0801\" xml:space=\"preserve\">\n    <value>All done here.</value>\n  </data>\n  <data name=\"Dlg_RussianWarehouse_0802\" xml:space=\"preserve\">\n    <value>Let’s get out!</value>\n  </data>\n  <data name=\"Dlg_RussianWarehouse_0803\" xml:space=\"preserve\">\n    <value>You might want to check out what else is in storage. It won’t take long and…</value>\n  </data>\n  <data name=\"Dlg_RussianWarehouse_0804\" xml:space=\"preserve\">\n    <value>…we might find something useful.</value>\n  </data>\n  <data name=\"Dlg_RussianWarehouse_0805\" xml:space=\"preserve\">\n    <value>Sorry to cut in, but I have a favor to ask.</value>\n  </data>\n  <data name=\"Dlg_RussianWarehouse_0806\" xml:space=\"preserve\">\n    <value>What is it?</value>\n  </data>\n  <data name=\"Dlg_RussianWarehouse_0807\" xml:space=\"preserve\">\n    <value>Our boys were supposed to get us some data about transport ship vectors…</value>\n  </data>\n  <data name=\"Dlg_RussianWarehouse_0808\" xml:space=\"preserve\">\n    <value>…in this sector. But none of them made it alive. The data should be housed…</value>\n  </data>\n  <data name=\"Dlg_RussianWarehouse_0809\" xml:space=\"preserve\">\n    <value>…in a navigation computer, just a few hundred meters from where you are right now.</value>\n  </data>\n  <data name=\"Dlg_RussianWarehouse_0810\" xml:space=\"preserve\">\n    <value>If you can get it for us, we’ll figure out some way to repay you. Make it worth…</value>\n  </data>\n  <data name=\"Dlg_RussianWarehouse_0811\" xml:space=\"preserve\">\n    <value>…your while.</value>\n  </data>\n  <data name=\"Dlg_RussianWarehouse_0812\" xml:space=\"preserve\">\n    <value>We’re on it.</value>\n  </data>\n  <data name=\"Dlg_RussianWarehouse_0813\" xml:space=\"preserve\">\n    <value>I hope there won’t be too much trouble on the way.</value>\n  </data>\n  <data name=\"Dlg_RussianWarehouse_0901\" xml:space=\"preserve\">\n    <value>We have the data, ready to exit.</value>\n  </data>\n  <data name=\"Dlg_RussianWarehouse_0902\" xml:space=\"preserve\">\n    <value>Make sure to turn off the turrets, if you want to exit by the main door…</value>\n  </data>\n  <data name=\"Dlg_RussianWarehouse_0903\" xml:space=\"preserve\">\n    <value>Otherwise, prepare for a hot shower. Really hot.</value>\n  </data>\n  <data name=\"Dlg_RussianWarehouse_1001\" xml:space=\"preserve\">\n    <value>Nice to see you back, guys!</value>\n  </data>\n  <data name=\"Dlg_RussianWarehouse_1002\" xml:space=\"preserve\">\n    <value>I can’t wait to see Thomas again!</value>\n  </data>\n  <data name=\"Dlg_RussianWarehouse_1003\" xml:space=\"preserve\">\n    <value>I wonder what our next step will be.</value>\n  </data>\n  <data name=\"Dlg_RussianWarehouse_1004\" xml:space=\"preserve\">\n    <value>I’m dying to see the data he prepared for us.</value>\n  </data>\n  <data name=\"Dlg_RussianWarehouse_1101\" xml:space=\"preserve\">\n    <value>To all operating ships: The Russians have sent a distress signal…</value>\n  </data>\n  <data name=\"Dlg_RussianWarehouse_1102\" xml:space=\"preserve\">\n    <value>…requesting reinforcements.</value>\n  </data>\n  <data name=\"Dlg_RussianWarehouse_1103\" xml:space=\"preserve\">\n    <value>ETA 6 minutes.</value>\n  </data>\n  <data name=\"Dlg_RussianWarehouse_1104\" xml:space=\"preserve\">\n    <value>Complete your assignments and return to Famo prior to the arrival of Russian fleet.</value>\n  </data>\n  <data name=\"Dlg_RussianWarehouse_1105\" xml:space=\"preserve\">\n    <value>Repeat.</value>\n  </data>\n  <data name=\"Dlg_RussianWarehouse_1106\" xml:space=\"preserve\">\n    <value>Complete your assignments and return to Famo prior to the arrival of Russian fleet.</value>\n  </data>\n  <data name=\"Dlg_RussianWarehouse_1107\" xml:space=\"preserve\">\n    <value>Roger that. Let’s make it fast, I’m not much in the mood for company.</value>\n  </data>\n  <data name=\"Dlg_RussianWarehouse_1108\" xml:space=\"preserve\">\n    <value>Darn. And this was such a nice raid operation.</value>\n  </data>\n  <data name=\"Dlg_RussianWarehouse_1109\" xml:space=\"preserve\">\n    <value>Pillaging, looting, ransacking… oh, and don’t forget the marauding.</value>\n  </data>\n  <data name=\"Dlg_RussianWarehouse_1110\" xml:space=\"preserve\">\n    <value>Spare the stand-up routine. We need to concentrate!</value>\n  </data>\n  <data name=\"Dlg_EacTransmitter_0101\" xml:space=\"preserve\">\n    <value>Here we are. Silver Foresight. Our last location to place an alien material detector.</value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_0100\" xml:space=\"preserve\">\n    <value>Again, back at our favorite holiday hotspot!</value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_0101\" xml:space=\"preserve\">\n    <value>Let’s not waste time; let’s find Manjeet. </value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_0102\" xml:space=\"preserve\">\n    <value>I’m sure he can help us.</value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_0103\" xml:space=\"preserve\">\n    <value>We’ll find out soon enough. </value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_0104\" xml:space=\"preserve\">\n    <value>If anyone knows how to get super-charged plutonium fuel cells, it’s Manjeet. </value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_0105\" xml:space=\"preserve\">\n    <value>I hope you’re right. Since we have no other leads.</value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_0106\" xml:space=\"preserve\">\n    <value>Doesn’t look like it’ll be too hard to get radioactive shit around here. </value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_0200\" xml:space=\"preserve\">\n    <value>Greetings, my dear friends! What brings you here, business or…?</value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_0202\" xml:space=\"preserve\">\n    <value>We’re looking for plutonium fuel cells.</value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_0205\" xml:space=\"preserve\">\n    <value>We need three of them. What’s your price?</value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_0206\" xml:space=\"preserve\">\n    <value>Considering you did me a favor… I could give them to you as a sign of gratitude. </value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_0210\" xml:space=\"preserve\">\n    <value>Take those fuel cells and use them well!</value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_0213\" xml:space=\"preserve\">\n    <value>One more thing. Manjeet, you happen to know – by any chance…</value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_0214\" xml:space=\"preserve\">\n    <value>…where to get rare plutonium isotopes?</value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_0217\" xml:space=\"preserve\">\n    <value>If you want something really special, mine some plutonium isotopes from the Rift. </value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_0218\" xml:space=\"preserve\">\n    <value>The abandoned OmniCorp mines?</value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_0223\" xml:space=\"preserve\">\n    <value>On our way, then. </value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_0300\" xml:space=\"preserve\">\n    <value>Guys, hurry up, I’ve got a situation here.</value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_0301\" xml:space=\"preserve\">\n    <value>Another local gang flashing their tail feathers?</value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_0302\" xml:space=\"preserve\">\n    <value>Not exactly. EAC Police. </value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_0303\" xml:space=\"preserve\">\n    <value>They say they have an arrest warrant for us.</value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_0304\" xml:space=\"preserve\">\n    <value>We’ll be right there. Hang on.</value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_0406\" xml:space=\"preserve\">\n    <value>Marcus Rainier to EAC Police: What is all this about?</value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_0407\" xml:space=\"preserve\">\n    <value>Mr. Rainier, you and your companions are under arrest. </value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_0412\" xml:space=\"preserve\">\n    <value>We have orders to escort you to court, where all charges will be explained and…</value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_0416\" xml:space=\"preserve\">\n    <value>We did not do anything against the EAC. We’re freelancers. </value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_0418\" xml:space=\"preserve\">\n    <value>You will have a chance to defend yourself in court. We have our orders. </value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_0419\" xml:space=\"preserve\">\n    <value>I’m sorry. We’re not going anywhere without an explanation. </value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_0420\" xml:space=\"preserve\">\n    <value>Could you at the least state the reasons for the treason charges against the EAC?</value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_0421\" xml:space=\"preserve\">\n    <value>As if you didn’t know. Killing hundreds of civilians at the New Landswick survey site.</value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_0422\" xml:space=\"preserve\">\n    <value>Raiding a Russian civilian trade station… </value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_0424\" xml:space=\"preserve\">\n    <value>I repeat, we are NOT going anywhere!</value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_0428\" xml:space=\"preserve\">\n    <value>One little issue. Their motherships have engine disruptors. I can’t budge.</value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_0430\" xml:space=\"preserve\">\n    <value>We need their disruption devices knocked out. </value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_0431\" xml:space=\"preserve\">\n    <value>Destroy them on the way, then dock as fast as you can.</value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_0700\" xml:space=\"preserve\">\n    <value>I am taking heavy fire here. Destroy those engine disruptors – quick! …</value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_0701\" xml:space=\"preserve\">\n    <value>…or we won’t make it!</value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_0702\" xml:space=\"preserve\">\n    <value>We’ll take out the one on the left, me and Valentin. </value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_0703\" xml:space=\"preserve\">\n    <value>Count on me. </value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_0704\" xml:space=\"preserve\">\n    <value>Apollo, you and Tarja, take out the right one. </value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_0705\" xml:space=\"preserve\">\n    <value>Will do!</value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_0706\" xml:space=\"preserve\">\n    <value>Don’t waste time on their weapons and support ships. </value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_0707\" xml:space=\"preserve\">\n    <value>I’m telling you, we cannot win this fight. Our only chance is to escape. </value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_0800\" xml:space=\"preserve\">\n    <value>I’m taking this thing down!</value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_0801\" xml:space=\"preserve\">\n    <value>Come on! Keep pounding that disruptor unit!</value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_0802\" xml:space=\"preserve\">\n    <value>Almost there!</value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_0900\" xml:space=\"preserve\">\n    <value>We’re done here. Apollo, what’s your status?</value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_0901\" xml:space=\"preserve\">\n    <value>Hang on, the device isn’t dead yet. Almost!</value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_1000\" xml:space=\"preserve\">\n    <value>Done. Madelyn, you should be able to fly again.</value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_1001\" xml:space=\"preserve\">\n    <value>Hurry up and get here. I’m sustaining critical damage.</value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_1002\" xml:space=\"preserve\">\n    <value>Another minute and you’ll have nowhere to dock.</value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_1003\" xml:space=\"preserve\">\n    <value>Then we’ll be there in half a minute! </value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_1100\" xml:space=\"preserve\">\n    <value>Apollo and Tarja, get inside and cover us from the turrets while the engines warm up. </value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_1101\" xml:space=\"preserve\">\n    <value>I’m on it.</value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_1102\" xml:space=\"preserve\">\n    <value>Me and Valentin will hold them off from here and jump in on the way. </value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_1103\" xml:space=\"preserve\">\n    <value>Roger that.</value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_1104\" xml:space=\"preserve\">\n    <value>Don’t even think of doing anything stupid, Marcus! I know that’s your fallback position.</value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_1105\" xml:space=\"preserve\">\n    <value>No worries. </value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_1200\" xml:space=\"preserve\">\n    <value>Apollo, get rid of those missile ships shooting at our engines. Damn, this won’t be easy.</value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_1300\" xml:space=\"preserve\">\n    <value>Guys, would it be too much trouble to take out those fighters in front of us?!</value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_1301\" xml:space=\"preserve\">\n    <value>I’m a tad busy at the moment. Valentin?</value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_1302\" xml:space=\"preserve\">\n    <value>Negative. We’re outnumbered here. You’ll have to take care of them yourself, Madelyn.</value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_1303\" xml:space=\"preserve\">\n    <value>Hell! Okay, whatever. Damn, another hit. </value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_1304\" xml:space=\"preserve\">\n    <value>Guys, take down those interceptors or we’re screwed.</value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_1400\" xml:space=\"preserve\">\n    <value>Man! I guess they were serious about that arrest warrant!</value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_1401\" xml:space=\"preserve\">\n    <value>We’re taking too much damage!</value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_1501\" xml:space=\"preserve\">\n    <value>I can’t move at all, half of our systems are down. Engines at 30%, hull critical.</value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_1502\" xml:space=\"preserve\">\n    <value>We’re dead meat.</value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_1600\" xml:space=\"preserve\">\n    <value>Damn, I scanned the ship and its weapon systems.</value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_1602\" xml:space=\"preserve\">\n    <value>You won’t be able to defeat it with your weapons.</value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_1603\" xml:space=\"preserve\">\n    <value>I know. I’m not going to use my weapons.</value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_1604\" xml:space=\"preserve\">\n    <value>Guys and gals, it’s been an honor…</value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_1605\" xml:space=\"preserve\">\n    <value>Wha-what are you planning to do?</value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_1606\" xml:space=\"preserve\">\n    <value>I hope you’re not thinking of–</value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_1607\" xml:space=\"preserve\">\n    <value>Sometimes that’s the only solution… Take care, guys.</value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_1608\" xml:space=\"preserve\">\n    <value>Have you lost your mind, Marcus?</value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_1609\" xml:space=\"preserve\">\n    <value>There is no other way.</value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_1610\" xml:space=\"preserve\">\n    <value>There’s always another way! This is not the way we do things. </value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_1611\" xml:space=\"preserve\">\n    <value>Do you understand? We can tr–</value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_1612\" xml:space=\"preserve\">\n    <value>What must be done must be done.</value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_1613\" xml:space=\"preserve\">\n    <value>No – Marcus – this is insane! Stop!</value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_1614\" xml:space=\"preserve\">\n    <value>Farewell, little brother! See you on the other side. </value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_1700\" xml:space=\"preserve\">\n    <value>I hate you, Marcus! You hear me? I hate you!</value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_1701\" xml:space=\"preserve\">\n    <value>Marcus… Marcus? </value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_1703\" xml:space=\"preserve\">\n    <value>We can’t let his sacrifice be in vain.</value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_1704\" xml:space=\"preserve\">\n    <value>Now’s our only chance to make it out of here.</value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_1705\" xml:space=\"preserve\">\n    <value>…</value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_1706\" xml:space=\"preserve\">\n    <value>Madelyn, do you copy?</value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_1707\" xml:space=\"preserve\">\n    <value>I… I set the course to the Rift. Hold on a few more seconds and we’re off.</value>\n  </data>\n  <data name=\"Dlg_JunkyardEacAmbush_1708\" xml:space=\"preserve\">\n    <value>…</value>\n  </data>\n  <data name=\"Dlg_EacTransmitter_0102\" xml:space=\"preserve\">\n    <value>…and then what?</value>\n  </data>\n  <data name=\"Dlg_EacTransmitter_0103\" xml:space=\"preserve\">\n    <value>Who knows? Armageddon? Spiritual enlightenment? Tic-tac-toe? Anyway, we’ve got…</value>\n  </data>\n  <data name=\"Dlg_EacTransmitter_0104\" xml:space=\"preserve\">\n    <value>…business to do here first.</value>\n  </data>\n  <data name=\"Dlg_EacTransmitter_0105\" xml:space=\"preserve\">\n    <value>Ok, pay attention now. We’ll approach the cargo storage area and place an explosive…</value>\n  </data>\n  <data name=\"Dlg_EacTransmitter_0106\" xml:space=\"preserve\">\n    <value>…device on its doors. That’ll distract them for a while. Apollo, you and I will head to…</value>\n  </data>\n  <data name=\"Dlg_EacTransmitter_0107\" xml:space=\"preserve\">\n    <value>…the control room. Tarja and Valentin will stay put.</value>\n  </data>\n  <data name=\"Dlg_EacTransmitter_0108\" xml:space=\"preserve\">\n    <value>Nice, there should be some interesting stuff to loot.</value>\n  </data>\n  <data name=\"Dlg_EacTransmitter_0109\" xml:space=\"preserve\">\n    <value>Ought to help me pay for my new implants!</value>\n  </data>\n  <data name=\"Dlg_EacTransmitter_0110\" xml:space=\"preserve\">\n    <value>Tarja!</value>\n  </data>\n  <data name=\"Dlg_EacTransmitter_0111\" xml:space=\"preserve\">\n    <value>Retinal implants.</value>\n  </data>\n  <data name=\"Dlg_EacTransmitter_0112\" xml:space=\"preserve\">\n    <value>Come on folks, let’s move. I’ll stay at a safe distance as usual.</value>\n  </data>\n  <data name=\"Dlg_EacTransmitter_0201\" xml:space=\"preserve\">\n    <value>Ok, Valentin and I will stay here. Head to the control room and do what you need to do.</value>\n  </data>\n  <data name=\"Dlg_EacTransmitter_0202\" xml:space=\"preserve\">\n    <value>Get moving, guys. Watch out for military presence. It’s well known that this…</value>\n  </data>\n  <data name=\"Dlg_EacTransmitter_0203\" xml:space=\"preserve\">\n    <value>…radar array has tactical value.</value>\n  </data>\n  <data name=\"Dlg_EacTransmitter_0301\" xml:space=\"preserve\">\n    <value>So many doors, so little time.</value>\n  </data>\n  <data name=\"Dlg_EacTransmitter_0302\" xml:space=\"preserve\">\n    <value>Hope everything goes smoothly here. My energy’s a little low after that…</value>\n  </data>\n  <data name=\"Dlg_EacTransmitter_0303\" xml:space=\"preserve\">\n    <value>…golf vacation at Reway.</value>\n  </data>\n  <data name=\"Dlg_EacTransmitter_0304\" xml:space=\"preserve\">\n    <value>Don’t worry brother, I’ll pick up your slack. Let’s head to satellite A first, and…</value>\n  </data>\n  <data name=\"Dlg_EacTransmitter_0305\" xml:space=\"preserve\">\n    <value>…reprogram that puppy.</value>\n  </data>\n  <data name=\"Dlg_EacTransmitter_0401\" xml:space=\"preserve\">\n    <value>Damn, a security trap! We’ve set off an auto-destruct sequence. What’s going on?!</value>\n  </data>\n  <data name=\"Dlg_EacTransmitter_0402\" xml:space=\"preserve\">\n    <value>Apollo, watch out! Turrets have been activated…</value>\n  </data>\n  <data name=\"Dlg_EacTransmitter_0403\" xml:space=\"preserve\">\n    <value>Doors have been locked! Destroy that panel overhead, hurry!</value>\n  </data>\n  <data name=\"Dlg_EacTransmitter_0406\" xml:space=\"preserve\">\n    <value>Can you pick up the pace, guys?</value>\n  </data>\n  <data name=\"Dlg_EacTransmitter_0407\" xml:space=\"preserve\">\n    <value>Apollo, let’s head to control room. The main computer should be there…</value>\n  </data>\n  <data name=\"Dlg_EacTransmitter_0408\" xml:space=\"preserve\">\n    <value>Maybe we can use it to turn off the auto-destruct.</value>\n  </data>\n  <data name=\"Dlg_EacTransmitter_0501\" xml:space=\"preserve\">\n    <value>Marcus, what now? Auto-destruct can’t be turned off…</value>\n  </data>\n  <data name=\"Dlg_EacTransmitter_0502\" xml:space=\"preserve\">\n    <value>It seems there are some overburdened aggregators.</value>\n  </data>\n  <data name=\"Dlg_EacTransmitter_0503\" xml:space=\"preserve\">\n    <value>Aggregators? Ok bro, you go destroy the two on the right side of station…</value>\n  </data>\n  <data name=\"Dlg_EacTransmitter_0504\" xml:space=\"preserve\">\n    <value>I’ll take care of these two on the left side.</value>\n  </data>\n  <data name=\"Dlg_EacTransmitter_0505\" xml:space=\"preserve\">\n    <value>What makes you think that will work?</value>\n  </data>\n  <data name=\"Dlg_EacTransmitter_0506\" xml:space=\"preserve\">\n    <value>Hope and faith.</value>\n  </data>\n  <data name=\"Dlg_EacTransmitter_0601\" xml:space=\"preserve\">\n    <value>Great! Destroying the aggregators stopped the auto-destruct sequence.</value>\n  </data>\n  <data name=\"Dlg_EacTransmitter_0602\" xml:space=\"preserve\">\n    <value>Woohoo, they did it!</value>\n  </data>\n  <data name=\"Dlg_EacTransmitter_0603\" xml:space=\"preserve\">\n    <value>That’s our boy.</value>\n  </data>\n  <data name=\"Dlg_EacTransmitter_0604\" xml:space=\"preserve\">\n    <value>Marcus? Are you ready to rock’n’roll?</value>\n  </data>\n  <data name=\"Dlg_EacTransmitter_0605\" xml:space=\"preserve\">\n    <value>Crap! Apollo, get here, fast! I’ve got company. </value>\n  </data>\n  <data name=\"Dlg_EacTransmitter_0701\" xml:space=\"preserve\">\n    <value>Thanks, brother, I owe you again. That was close…</value>\n  </data>\n  <data name=\"Dlg_EacTransmitter_0702\" xml:space=\"preserve\">\n    <value>Come on! Time to hack satellites B and C.</value>\n  </data>\n  <data name=\"Dlg_EacTransmitter_0703\" xml:space=\"preserve\">\n    <value>Agreed. No time to waste.</value>\n  </data>\n  <data name=\"Dlg_EacTransmitter_0801\" xml:space=\"preserve\">\n    <value>Satellite B reprogrammed!</value>\n  </data>\n  <data name=\"Dlg_EacTransmitter_0802\" xml:space=\"preserve\">\n    <value>On to satellite C. Almost there!</value>\n  </data>\n  <data name=\"Dlg_EacTransmitter_0901\" xml:space=\"preserve\">\n    <value>Satellite C reprogrammed. We can start the transmission now!</value>\n  </data>\n  <data name=\"Dlg_EacTransmitter_0902\" xml:space=\"preserve\">\n    <value>Years of hard work, and it all comes down to this moment!</value>\n  </data>\n  <data name=\"Dlg_EacTransmitter_1001\" xml:space=\"preserve\">\n    <value>Damn it, it won’t start. </value>\n  </data>\n  <data name=\"Dlg_EacTransmitter_1002\" xml:space=\"preserve\">\n    <value>Try to find some components to repair the generator…</value>\n  </data>\n  <data name=\"Dlg_EacTransmitter_1003\" xml:space=\"preserve\">\n    <value>Then we can pull some energy from the lower solar panels to jump-start it.</value>\n  </data>\n  <data name=\"Dlg_EacTransmitter_1004\" xml:space=\"preserve\">\n    <value>Great idea, Madelyn. We can’t be defeated this close to our goal.</value>\n  </data>\n  <data name=\"Dlg_EacTransmitter_1005\" xml:space=\"preserve\">\n    <value>Go!</value>\n  </data>\n  <data name=\"Dlg_EacTransmitter_1101\" xml:space=\"preserve\">\n    <value>It reads “Generator Repair Kit”. Something tells me it’ll work.</value>\n  </data>\n  <data name=\"Dlg_EacTransmitter_1102\" xml:space=\"preserve\">\n    <value>Ok, I’ll get to work. According to the floor plan, the generator is in the neighborhood.</value>\n  </data>\n  <data name=\"Dlg_EacTransmitter_1201\" xml:space=\"preserve\">\n    <value>Good job. Now just redirect energy from the lower solar panels to this generator.</value>\n  </data>\n  <data name=\"Dlg_EacTransmitter_1202\" xml:space=\"preserve\">\n    <value>Hope it’ll work!</value>\n  </data>\n  <data name=\"Dlg_EacTransmitter_1203\" xml:space=\"preserve\">\n    <value>Of course it will, sweetheart!</value>\n  </data>\n  <data name=\"Dlg_EacTransmitter_1301\" xml:space=\"preserve\">\n    <value>Yeah, that’s what I’m talking about.</value>\n  </data>\n  <data name=\"Dlg_EacTransmitter_1302\" xml:space=\"preserve\">\n    <value>We can start the triangulation now. This is quite a moment in history!</value>\n  </data>\n  <data name=\"Dlg_EacTransmitter_1303\" xml:space=\"preserve\">\n    <value>I’m so proud of you, guys.</value>\n  </data>\n  <data name=\"Dlg_EacTransmitter_1304\" xml:space=\"preserve\">\n    <value>Me too. Seriously.</value>\n  </data>\n  <data name=\"Dlg_EacTransmitter_1401\" xml:space=\"preserve\">\n    <value>Triangulation in progress. Sending echo to Thomas…</value>\n  </data>\n  <data name=\"Dlg_EacTransmitter_1402\" xml:space=\"preserve\">\n    <value>All three detectors are functional! We’re getting the data! I’m picking up results! And…</value>\n  </data>\n  <data name=\"Dlg_EacTransmitter_1403\" xml:space=\"preserve\">\n    <value>You’ve got the locations of more alien artifacts?</value>\n  </data>\n  <data name=\"Dlg_EacTransmitter_1404\" xml:space=\"preserve\">\n    <value>I’ve got a location.</value>\n  </data>\n  <data name=\"Dlg_EacTransmitter_1405\" xml:space=\"preserve\">\n    <value>What do you mean? I thought there were multiple artifacts?</value>\n  </data>\n  <data name=\"Dlg_EacTransmitter_1406\" xml:space=\"preserve\">\n    <value>Ehm. According to the results, one of the spots containing this alien material is…</value>\n  </data>\n  <data name=\"Dlg_EacTransmitter_1407\" xml:space=\"preserve\">\n    <value>…far denser than the others. Also, the detectors don’t seem to be strong enough…</value>\n  </data>\n  <data name=\"Dlg_EacTransmitter_1408\" xml:space=\"preserve\">\n    <value>…to ping all the locations. They didn’t even find the two pieces we already have.</value>\n  </data>\n  <data name=\"Dlg_EacTransmitter_1409\" xml:space=\"preserve\">\n    <value>That means…?</value>\n  </data>\n  <data name=\"Dlg_EacTransmitter_1410\" xml:space=\"preserve\">\n    <value>That means we’ve found one location with one huge alien thing. Am I correct?</value>\n  </data>\n  <data name=\"Dlg_EacTransmitter_1411\" xml:space=\"preserve\">\n    <value>You are. When you depart from Foresight, pick me up…</value>\n  </data>\n  <data name=\"Dlg_EacTransmitter_1412\" xml:space=\"preserve\">\n    <value>…and we’ll head together to the marked location. I want to see it with my own eyes.</value>\n  </data>\n  <data name=\"Dlg_EacTransmitter_1413\" xml:space=\"preserve\">\n    <value>On our way.</value>\n  </data>\n  <data name=\"Dlg_ReichstagA_1000\" xml:space=\"preserve\">\n    <value>Willkommen in Reichstag!</value>\n  </data>\n  <data name=\"Dlg_ReichstagA_1001\" xml:space=\"preserve\">\n    <value>The Nazis have made themselves a pretty spectacular headquarters.</value>\n  </data>\n  <data name=\"Dlg_ReichstagA_1002\" xml:space=\"preserve\">\n    <value>Thomas arranged us a meeting in the main Reichstag building. </value>\n  </data>\n  <data name=\"Dlg_ReichstagA_1003\" xml:space=\"preserve\">\n    <value>Head there and find Colonel von Stauffenberg.</value>\n  </data>\n  <data name=\"Dlg_ReichstagA_1004\" xml:space=\"preserve\">\n    <value>On our way.</value>\n  </data>\n  <data name=\"Dlg_ReichstagA_1005\" xml:space=\"preserve\">\n    <value>I have this strange… feeling.</value>\n  </data>\n  <data name=\"Dlg_ReichstagA_1006\" xml:space=\"preserve\">\n    <value>What do you mean?</value>\n  </data>\n  <data name=\"Dlg_ReichstagA_1007\" xml:space=\"preserve\">\n    <value>Oh, I am not sure. Just kinda feel like committing genocide. Ever get that feeling?</value>\n  </data>\n  <data name=\"Dlg_ReichstagA_1008\" xml:space=\"preserve\">\n    <value>Maybe it’s the surroundings.</value>\n  </data>\n  <data name=\"Dlg_ReichstagA_1009\" xml:space=\"preserve\">\n    <value>Let’s stick to our mission!</value>\n  </data>\n  <data name=\"Dlg_ReichstagA_1012\" xml:space=\"preserve\">\n    <value>Colonel von Stauffenberg.</value>\n  </data>\n  <data name=\"Dlg_ReichstagA_1013\" xml:space=\"preserve\">\n    <value>Mr. Rainier! Thomas told me of your arrival.</value>\n  </data>\n  <data name=\"Dlg_ReichstagA_1014\" xml:space=\"preserve\">\n    <value>Did he also tell you about my brother? His name is Marcus Rainier. </value>\n  </data>\n  <data name=\"Dlg_ReichstagA_1015\" xml:space=\"preserve\">\n    <value>He is being held – unjustly – in Reway prison for treason. </value>\n  </data>\n  <data name=\"Dlg_ReichstagA_1016\" xml:space=\"preserve\">\n    <value>I was told you might be able to help.</value>\n  </data>\n  <data name=\"Dlg_ReichstagA_1017\" xml:space=\"preserve\">\n    <value>We will consider lending our support. </value>\n  </data>\n  <data name=\"Dlg_ReichstagA_1018\" xml:space=\"preserve\">\n    <value>First you must prove you are worthy soldiers and ready to fight for our cause. </value>\n  </data>\n  <data name=\"Dlg_ReichstagA_1019\" xml:space=\"preserve\">\n    <value>We can talk about the plan in more detail afterwards. </value>\n  </data>\n  <data name=\"Dlg_ReichstagA_1020\" xml:space=\"preserve\">\n    <value>I suppose you have something specific in mind?</value>\n  </data>\n  <data name=\"Dlg_ReichstagA_1021\" xml:space=\"preserve\">\n    <value>Recently, we had some… problems with one of our research stations. </value>\n  </data>\n  <data name=\"Dlg_ReichstagA_1022\" xml:space=\"preserve\">\n    <value>It was taken by a group of… separatists. We need someone, …</value>\n  </data>\n  <data name=\"Dlg_ReichstagA_1023\" xml:space=\"preserve\">\n    <value>…preferably from outside of the Reich, to go there, secure the research data…</value>\n  </data>\n  <data name=\"Dlg_ReichstagA_1024\" xml:space=\"preserve\">\n    <value>…and neutralize the facility.</value>\n  </data>\n  <data name=\"Dlg_ReichstagA_1025\" xml:space=\"preserve\">\n    <value>Any other information we might need?</value>\n  </data>\n  <data name=\"Dlg_ReichstagA_1026\" xml:space=\"preserve\">\n    <value>No. This is a fairly standard operation. </value>\n  </data>\n  <data name=\"Dlg_ReichstagA_1027\" xml:space=\"preserve\">\n    <value>But I hope you have a strong stomach, Mr. Rainier – it is a biological research lab.  </value>\n  </data>\n  <data name=\"Dlg_ReichstagA_1028\" xml:space=\"preserve\">\n    <value>Not a problem. Will this guarantee us your favor?</value>\n  </data>\n  <data name=\"Dlg_ReichstagA_1029\" xml:space=\"preserve\">\n    <value>No promises. But the Reich rewards those who are loyal to our cause. </value>\n  </data>\n  <data name=\"Dlg_ReichstagA_1030\" xml:space=\"preserve\">\n    <value>We will talk later.   </value>\n  </data>\n  <data name=\"Dlg_ReichstagA_1031\" xml:space=\"preserve\">\n    <value>Apollo out. Madelyn, I am sending you the coordinates for a Nazi research lab. </value>\n  </data>\n  <data name=\"Dlg_ReichstagA_1032\" xml:space=\"preserve\">\n    <value>Get ready, I’m docking in a minute.</value>\n  </data>\n  <data name=\"Dlg_ReichstagA_1033\" xml:space=\"preserve\">\n    <value>Roger that. </value>\n  </data>\n  <data name=\"Dlg_ReichstagA_1034\" xml:space=\"preserve\">\n    <value>We’re visiting a Nazi research lab? My childhood dreams, at last, are coming true? </value>\n  </data>\n  <data name=\"Dlg_ReichstagA_1035\" xml:space=\"preserve\">\n    <value>Valentin?</value>\n  </data>\n  <data name=\"Dlg_ReichstagA_1036\" xml:space=\"preserve\">\n    <value>Just joking. You know me.</value>\n  </data>\n  <data name=\"Dlg_ReichstagA_1037\" xml:space=\"preserve\">\n    <value>Consider getting some supplies before departure, Apollo.</value>\n  </data>\n  <data name=\"Dlg_ReichstagA_1038\" xml:space=\"preserve\">\n    <value>But that’s up to you. I’m ready when you are.</value>\n  </data>\n  <data name=\"Dlg_ReichstagC_1000\" xml:space=\"preserve\">\n    <value>Colonel von Stauffenberg? </value>\n  </data>\n  <data name=\"Dlg_ReichstagC_1001\" xml:space=\"preserve\">\n    <value>We’re back. Mission successful. Pretty nasty business, I must say!</value>\n  </data>\n  <data name=\"Dlg_ReichstagC_1002\" xml:space=\"preserve\">\n    <value>Soldiers follow orders. That is how it works. You proved strong, Mr. Rainier. </value>\n  </data>\n  <data name=\"Dlg_ReichstagC_1003\" xml:space=\"preserve\">\n    <value>You flatter me, Colonel. </value>\n  </data>\n  <data name=\"Dlg_ReichstagC_1004\" xml:space=\"preserve\">\n    <value>Strong enough for our cause. Shall we discuss your… request?</value>\n  </data>\n  <data name=\"Dlg_ReichstagC_1005\" xml:space=\"preserve\">\n    <value>Have you considered giving us your support with Reway? </value>\n  </data>\n  <data name=\"Dlg_ReichstagC_1006\" xml:space=\"preserve\">\n    <value>Whether it’s a frontal assault or some other way to get my brother out?</value>\n  </data>\n  <data name=\"Dlg_ReichstagC_1007\" xml:space=\"preserve\">\n    <value>Indeed. We already had a plan in place for attacking Reway. </value>\n  </data>\n  <data name=\"Dlg_ReichstagC_1008\" xml:space=\"preserve\">\n    <value>You see, many of our own officers and brave soldiers are being held there. </value>\n  </data>\n  <data name=\"Dlg_ReichstagC_1009\" xml:space=\"preserve\">\n    <value>However, the attack is scheduled months from now. </value>\n  </data>\n  <data name=\"Dlg_ReichstagC_1010\" xml:space=\"preserve\">\n    <value>And I know your brother is sentenced to death within a few days. </value>\n  </data>\n  <data name=\"Dlg_ReichstagC_1011\" xml:space=\"preserve\">\n    <value>So what do you suggest? </value>\n  </data>\n  <data name=\"Dlg_ReichstagC_1012\" xml:space=\"preserve\">\n    <value>I would propose to attack earlier. However, at the moment, …</value>\n  </data>\n  <data name=\"Dlg_ReichstagC_1013\" xml:space=\"preserve\">\n    <value>…it is militarily impossible for us – thanks to some small… “internal” problems.</value>\n  </data>\n  <data name=\"Dlg_ReichstagC_1014\" xml:space=\"preserve\">\n    <value>Internal problems?</value>\n  </data>\n  <data name=\"Dlg_ReichstagC_1015\" xml:space=\"preserve\">\n    <value>The base you were sent to – the one that was taken over by separatists; </value>\n  </data>\n  <data name=\"Dlg_ReichstagC_1016\" xml:space=\"preserve\">\n    <value>…it was not the only one. </value>\n  </data>\n  <data name=\"Dlg_ReichstagC_1017\" xml:space=\"preserve\">\n    <value>This group calling themselves the White Wolves – </value>\n  </data>\n  <data name=\"Dlg_ReichstagC_1018\" xml:space=\"preserve\">\n    <value>they’ve grown in strength over the past few months. We need to strike at their heart. </value>\n  </data>\n  <data name=\"Dlg_ReichstagC_1019\" xml:space=\"preserve\">\n    <value>Some time ago, they took over one of our most important mothership construction sites. </value>\n  </data>\n  <data name=\"Dlg_ReichstagC_1020\" xml:space=\"preserve\">\n    <value>As I’m sure you can understand, …</value>\n  </data>\n  <data name=\"Dlg_ReichstagC_1021\" xml:space=\"preserve\">\n    <value>…we do not want the other factions to know about this issue until it is resolved.</value>\n  </data>\n  <data name=\"Dlg_ReichstagC_1022\" xml:space=\"preserve\">\n    <value>We cannot attack the facility directly.</value>\n  </data>\n  <data name=\"Dlg_ReichstagC_1023\" xml:space=\"preserve\">\n    <value>Perhaps we can aid you. </value>\n  </data>\n  <data name=\"Dlg_ReichstagC_1024\" xml:space=\"preserve\">\n    <value>That’s what I hoped.</value>\n  </data>\n  <data name=\"Dlg_ReichstagC_1025\" xml:space=\"preserve\">\n    <value>And that is why I “tested” your skills and allegiance during the last assignment.</value>\n  </data>\n  <data name=\"Dlg_ReichstagC_1026\" xml:space=\"preserve\">\n    <value>If you solve this White Wolves problem of ours, </value>\n  </data>\n  <data name=\"Dlg_ReichstagC_1027\" xml:space=\"preserve\">\n    <value>I will do my best to convince our leadership to attack Reway as soon as possible.</value>\n  </data>\n  <data name=\"Dlg_ReichstagC_1028\" xml:space=\"preserve\">\n    <value>So… what’s the plan?</value>\n  </data>\n  <data name=\"Dlg_ReichstagC_1029\" xml:space=\"preserve\">\n    <value>Infiltrate Doppelburg.</value>\n  </data>\n  <data name=\"Dlg_ReichstagC_1030\" xml:space=\"preserve\">\n    <value>We have a few loyal men there, so you should be able to get inside without a problem.</value>\n  </data>\n  <data name=\"Dlg_ReichstagC_1031\" xml:space=\"preserve\">\n    <value>Take over the command center and disable the base defenses. Are you in?</value>\n  </data>\n  <data name=\"Dlg_ReichstagC_1032\" xml:space=\"preserve\">\n    <value>Affirmative. </value>\n  </data>\n  <data name=\"Dlg_ReichstagC_1033\" xml:space=\"preserve\">\n    <value>Perfect. </value>\n  </data>\n  <data name=\"Dlg_ReichstagC_1034\" xml:space=\"preserve\">\n    <value>Stop by the shipyard to pick up your own Fourth Reich fighters. </value>\n  </data>\n  <data name=\"Dlg_ReichstagC_1035\" xml:space=\"preserve\">\n    <value>This document will ensure you receive them from the supply officer without any problems. </value>\n  </data>\n  <data name=\"Dlg_ReichstagC_1036\" xml:space=\"preserve\">\n    <value>Once on board, proceed to landing bay 3. </value>\n  </data>\n  <data name=\"Dlg_ReichstagC_1037\" xml:space=\"preserve\">\n    <value>A transport ship will be waiting for you there, the one that will take you to Doppelburg. </value>\n  </data>\n  <data name=\"Dlg_ReichstagC_1038\" xml:space=\"preserve\">\n    <value>Confirmed. On my way.</value>\n  </data>\n  <data name=\"Dlg_ReichstagC_1039\" xml:space=\"preserve\">\n    <value>Once you take over Doppelburg – send us a signal. </value>\n  </data>\n  <data name=\"Dlg_ReichstagC_1040\" xml:space=\"preserve\">\n    <value>We’ll come to your aid and help knock out the zeppelins painlessly.  </value>\n  </data>\n  <data name=\"Dlg_ReichstagC_1041\" xml:space=\"preserve\">\n    <value>This should be it. </value>\n  </data>\n  <data name=\"Dlg_ReichstagC_1042\" xml:space=\"preserve\">\n    <value>Brand new vehicles at our command!</value>\n  </data>\n  <data name=\"Dlg_ReichstagC_1043\" xml:space=\"preserve\">\n    <value>Good day, how may I serve?</value>\n  </data>\n  <data name=\"Dlg_ReichstagC_1044\" xml:space=\"preserve\">\n    <value>We are here for re-equipping. This document was signed by Colonel von Stauffenberg. </value>\n  </data>\n  <data name=\"Dlg_ReichstagC_1045\" xml:space=\"preserve\">\n    <value>Good, good. You are to pick up three Baer B13 fighters. </value>\n  </data>\n  <data name=\"Dlg_ReichstagC_1046\" xml:space=\"preserve\">\n    <value>Head to the end of the hall, section S7.</value>\n  </data>\n  <data name=\"Dlg_ReichstagC_1047\" xml:space=\"preserve\">\n    <value>Great, thanks!</value>\n  </data>\n  <data name=\"Dlg_ReichstagC_1048\" xml:space=\"preserve\">\n    <value>You are welcome. </value>\n  </data>\n  <data name=\"Dlg_ReichstagC_1049\" xml:space=\"preserve\">\n    <value>Enjoy the best one-seat fighters in all of known space!</value>\n  </data>\n  <data name=\"Dlg_ReichstagC_1050\" xml:space=\"preserve\">\n    <value>Here we go. Take your pick, Apollo. </value>\n  </data>\n  <data name=\"Dlg_ReichstagC_1051\" xml:space=\"preserve\">\n    <value>Good choice. I’ll take that one.</value>\n  </data>\n  <data name=\"Dlg_ReichstagC_1052\" xml:space=\"preserve\">\n    <value>I think they’re all exactly the same. </value>\n  </data>\n  <data name=\"Dlg_ReichstagC_1053\" xml:space=\"preserve\">\n    <value>I see you are ready for takeoff. </value>\n  </data>\n  <data name=\"Dlg_ReichstagC_1054\" xml:space=\"preserve\">\n    <value>Make sure to check out the armory for weapons and other equipment you might find useful.</value>\n  </data>\n  <data name=\"Dlg_ReichstagC_1055\" xml:space=\"preserve\">\n    <value>Thanks; it might prove useful to get some new stuff.</value>\n  </data>\n  <data name=\"Dlg_ReichstagC_1056\" xml:space=\"preserve\">\n    <value>Wow, some of this gear kicks major ass!</value>\n  </data>\n  <data name=\"Dlg_ReichstagC_1057\" xml:space=\"preserve\">\n    <value>Let’s go shopping!</value>\n  </data>\n  <data name=\"Dlg_ReichstagC_1058\" xml:space=\"preserve\">\n    <value>If you want something else, Apollo, feel free to browse again. </value>\n  </data>\n  <data name=\"Dlg_ReichstagC_1059\" xml:space=\"preserve\">\n    <value>Otherwise, me and Valentin are ready for departure. </value>\n  </data>\n  <data name=\"Dlg_ReichstagC_1060\" xml:space=\"preserve\">\n    <value>Hail! You are the infiltrator squad for Doppelburg, correct?</value>\n  </data>\n  <data name=\"Dlg_ReichstagC_1061\" xml:space=\"preserve\">\n    <value>Yes.</value>\n  </data>\n  <data name=\"Dlg_ReichstagC_1062\" xml:space=\"preserve\">\n    <value>Right on time. Please head inside.</value>\n  </data>\n  <data name=\"Dlg_ReichstagC_1063\" xml:space=\"preserve\">\n    <value>The soldiers assigned to your command are already waiting!</value>\n  </data>\n  <data name=\"Dlg_ReichstagC_1064\" xml:space=\"preserve\">\n    <value>Helping one Nazi group against another. Not sure how I feel about this.</value>\n  </data>\n  <data name=\"Dlg_ReichstagC_1065\" xml:space=\"preserve\">\n    <value>Best not to feel too much.</value>\n  </data>\n  <data name=\"Dlg_ChineseRefinery_1000\" xml:space=\"preserve\">\n    <value>Approaching the Jingzhou refinery!</value>\n  </data>\n  <data name=\"Dlg_ChineseRefinery_1001\" xml:space=\"preserve\">\n    <value>I’m going through the main entrance.</value>\n  </data>\n  <data name=\"Dlg_ChineseRefinery_1002\" xml:space=\"preserve\">\n    <value>Apollo, you take the back door together with Tarja. Use the coordinates from Manjeet.</value>\n  </data>\n  <data name=\"Dlg_ChineseRefinery_1003\" xml:space=\"preserve\">\n    <value>On our own. See you later, bro!</value>\n  </data>\n  <data name=\"Dlg_ChineseRefinery_1004\" xml:space=\"preserve\">\n    <value>We need to cut our way through!</value>\n  </data>\n  <data name=\"Dlg_ChineseRefinery_1005\" xml:space=\"preserve\">\n    <value>God! What is this place? They can blow up a whole planet with those nukes.</value>\n  </data>\n  <data name=\"Dlg_ChineseRefinery_1006\" xml:space=\"preserve\">\n    <value>Seems like the Chinese are up to something. I prefer not to know what.</value>\n  </data>\n  <data name=\"Dlg_ChineseRefinery_1007\" xml:space=\"preserve\">\n    <value>This is none of our business, anyway. Let’s keep to our objectives. </value>\n  </data>\n  <data name=\"Dlg_ChineseRefinery_1008\" xml:space=\"preserve\">\n    <value>Holy shit! What is this place? Manjeet, this is NOT an ordinary refinery.</value>\n  </data>\n  <data name=\"Dlg_ChineseRefinery_1009\" xml:space=\"preserve\">\n    <value>Well… I should have mentioned that. Oh, and I forgot, I need a small favor from you.</value>\n  </data>\n  <data name=\"Dlg_ChineseRefinery_1010\" xml:space=\"preserve\">\n    <value>Changing our agreement on the fly?</value>\n  </data>\n  <data name=\"Dlg_ChineseRefinery_1011\" xml:space=\"preserve\">\n    <value>Just a small favor.</value>\n  </data>\n  <data name=\"Dlg_ChineseRefinery_1012\" xml:space=\"preserve\">\n    <value>I will give you some cash on top of the artifact if you do this for me.</value>\n  </data>\n  <data name=\"Dlg_ChineseRefinery_1013\" xml:space=\"preserve\">\n    <value>What do you want?</value>\n  </data>\n  <data name=\"Dlg_ChineseRefinery_1014\" xml:space=\"preserve\">\n    <value>I will send you a program. Upload it to the main computer. </value>\n  </data>\n  <data name=\"Dlg_ChineseRefinery_1015\" xml:space=\"preserve\">\n    <value>Sounds simple enough. </value>\n  </data>\n  <data name=\"Dlg_ChineseRefinery_1016\" xml:space=\"preserve\">\n    <value>That’s what I say. And you will be doing me a great favor.</value>\n  </data>\n  <data name=\"Dlg_ChineseRefinery_1017\" xml:space=\"preserve\">\n    <value>Done. On we go. </value>\n  </data>\n  <data name=\"Dlg_ChineseRefinery_1018\" xml:space=\"preserve\">\n    <value>Good, follow the plan.</value>\n  </data>\n  <data name=\"Dlg_ChineseRefinery_1019\" xml:space=\"preserve\">\n    <value>By the way, what did I just do?</value>\n  </data>\n  <data name=\"Dlg_ChineseRefinery_1020\" xml:space=\"preserve\">\n    <value>Planted a kind of virus. You’ve just sent me crucial data from their nuclear research…</value>\n  </data>\n  <data name=\"Dlg_ChineseRefinery_1021\" xml:space=\"preserve\">\n    <value>…and at the same time bugged their system.</value>\n  </data>\n  <data name=\"Dlg_ChineseRefinery_1022\" xml:space=\"preserve\">\n    <value>That’s fine with me. I don’t like the Chinese, anyway.</value>\n  </data>\n  <data name=\"Dlg_ChineseRefinery_1023\" xml:space=\"preserve\">\n    <value>Apollo, if you don’t mind…</value>\n  </data>\n  <data name=\"Dlg_ChineseRefinery_1024\" xml:space=\"preserve\">\n    <value>Yes?</value>\n  </data>\n  <data name=\"Dlg_ChineseRefinery_1025\" xml:space=\"preserve\">\n    <value>One more small computer hack. I will increase your reward, honestly!</value>\n  </data>\n  <data name=\"Dlg_ChineseRefinery_1026\" xml:space=\"preserve\">\n    <value>If I had known about this room before, I would have given you better equipment.</value>\n  </data>\n  <data name=\"Dlg_ChineseRefinery_1027\" xml:space=\"preserve\">\n    <value>Why are you so interested in this one?</value>\n  </data>\n  <data name=\"Dlg_ChineseRefinery_1028\" xml:space=\"preserve\">\n    <value>It is a communication center.</value>\n  </data>\n  <data name=\"Dlg_ChineseRefinery_1029\" xml:space=\"preserve\">\n    <value>It connects the refinery with all the surrounding mines and ships.</value>\n  </data>\n  <data name=\"Dlg_ChineseRefinery_1030\" xml:space=\"preserve\">\n    <value>It would be helpful to me for business reasons.</value>\n  </data>\n  <data name=\"Dlg_ChineseRefinery_1031\" xml:space=\"preserve\">\n    <value>Sounds innocent. Just don’t screw us with the reward, you understand?</value>\n  </data>\n  <data name=\"Dlg_ChineseRefinery_1032\" xml:space=\"preserve\">\n    <value>No need to be rude, Mr. Rainier! I am a man of honest trade!</value>\n  </data>\n  <data name=\"Dlg_ChineseRefinery_1033\" xml:space=\"preserve\">\n    <value>Done.</value>\n  </data>\n  <data name=\"Dlg_ChineseRefinery_1034\" xml:space=\"preserve\">\n    <value>I hope we can finally get to the command center now and get the cargo transport clearance.</value>\n  </data>\n  <data name=\"Dlg_ChineseRefinery_1035\" xml:space=\"preserve\">\n    <value>The path leads through living quarters. This area should not be well protected. </value>\n  </data>\n  <data name=\"Dlg_ChineseRefinery_1036\" xml:space=\"preserve\">\n    <value>Use the back door. The best way to the command center is through an old abandoned pathway.</value>\n  </data>\n  <data name=\"Dlg_ChineseRefinery_1037\" xml:space=\"preserve\">\n    <value>Gotta love an old abandoned pathway!</value>\n  </data>\n  <data name=\"Dlg_ChineseRefinery_1038\" xml:space=\"preserve\">\n    <value>This is it. Hack this computer to change the cargo transport clearance.</value>\n  </data>\n  <data name=\"Dlg_ChineseRefinery_1039\" xml:space=\"preserve\">\n    <value>I just got the clearance. I’ll try to delay the scheduled departure…</value>\n  </data>\n  <data name=\"Dlg_ChineseRefinery_1040\" xml:space=\"preserve\">\n    <value>…but we don’t want to make anyone suspicious.</value>\n  </data>\n  <data name=\"Dlg_ChineseRefinery_1041\" xml:space=\"preserve\">\n    <value>I’ll grab you on the way, just get out fast and jump in.</value>\n  </data>\n  <data name=\"Dlg_EACSurveySite_0301b\" xml:space=\"preserve\">\n    <value>What the hell are they up to?!</value>\n  </data>\n  <data name=\"Dlg_PirateBase_0101\" xml:space=\"preserve\">\n    <value>Here we are. Damien Dust Field.</value>\n  </data>\n  <data name=\"Dlg_PirateBase_0102\" xml:space=\"preserve\">\n    <value>I remember this from cadet classes. Is this all that’s…</value>\n  </data>\n  <data name=\"Dlg_PirateBase_0103\" xml:space=\"preserve\">\n    <value>Yes, the remains of the Solar Event. All that’s left.</value>\n  </data>\n  <data name=\"Dlg_PirateBase_0104\" xml:space=\"preserve\">\n    <value>It used to be a part of Mars. Then… blammo.</value>\n  </data>\n  <data name=\"Dlg_PirateBase_0301\" xml:space=\"preserve\">\n    <value>That was the last one!</value>\n  </data>\n  <data name=\"Dlg_PirateBase_0302\" xml:space=\"preserve\">\n    <value>Well done! </value>\n  </data>\n  <data name=\"Dlg_PirateBase_0401\" xml:space=\"preserve\">\n    <value>Another squad coming.</value>\n  </data>\n  <data name=\"Dlg_PirateBase_0402\" xml:space=\"preserve\">\n    <value>Well, well! What ’ave we here, guests for dinner!</value>\n  </data>\n  <data name=\"Dlg_PirateBase_0403\" xml:space=\"preserve\">\n    <value>We’re here to negotiate! </value>\n  </data>\n  <data name=\"Dlg_PirateBase_0404\" xml:space=\"preserve\">\n    <value>Diplomats, eh?</value>\n  </data>\n  <data name=\"Dlg_PirateBase_0405\" xml:space=\"preserve\">\n    <value>Our diplomacy skills are a bit rusty! On guard!</value>\n  </data>\n  <data name=\"Dlg_PirateBase_0406\" xml:space=\"preserve\">\n    <value>Hmm, that sounded familiar.</value>\n  </data>\n  <data name=\"Dlg_PirateBase_0408\" xml:space=\"preserve\">\n    <value>You will regret this!</value>\n  </data>\n  <data name=\"Dlg_PirateBase_0409\" xml:space=\"preserve\">\n    <value>Die, interlopers! </value>\n  </data>\n  <data name=\"Dlg_PirateBase_0501\" xml:space=\"preserve\">\n    <value>Arrgh, that was easier than snackin’ on doughboys.</value>\n  </data>\n  <data name=\"Dlg_PirateBase_0503\" xml:space=\"preserve\">\n    <value>Hmm, did someone open a can of ego around here?</value>\n  </data>\n  <data name=\"Dlg_PirateBase_0504\" xml:space=\"preserve\">\n    <value>Knocking out a handful of stragglers is not the same as attacking a…</value>\n  </data>\n  <data name=\"Dlg_PirateBase_0505\" xml:space=\"preserve\">\n    <value>…fully fortified pirate base.</value>\n  </data>\n  <data name=\"Dlg_PirateBase_0506\" xml:space=\"preserve\">\n    <value>Next time, do it the diplomatic way. </value>\n  </data>\n  <data name=\"Dlg_PirateBase_0507\" xml:space=\"preserve\">\n    <value>We’re always diplomatic.</value>\n  </data>\n  <data name=\"Dlg_PirateBase_0618\" xml:space=\"preserve\">\n    <value>I suggest you state your business.</value>\n  </data>\n  <data name=\"Dlg_PirateBase_0624\" xml:space=\"preserve\">\n    <value>Listen, here’s the deal. Some Russians are going to come after you… </value>\n  </data>\n  <data name=\"Dlg_PirateBase_0625\" xml:space=\"preserve\">\n    <value>The same ones that killed our friends. They’re after something WE want.</value>\n  </data>\n  <data name=\"Dlg_PirateBase_0626\" xml:space=\"preserve\">\n    <value>And they have your coordinates, just like we did. It’s only a matter of time…</value>\n  </data>\n  <data name=\"Dlg_PirateBase_0627\" xml:space=\"preserve\">\n    <value>…before they pay you a visit. And I’m not talking days.</value>\n  </data>\n  <data name=\"Dlg_PirateBase_0628\" xml:space=\"preserve\">\n    <value>Got it. We need to prepare. So… we have common enemies.</value>\n  </data>\n  <data name=\"Dlg_PirateBase_0701\" xml:space=\"preserve\">\n    <value>Let’s just say we’ll cooperate. For now.  </value>\n  </data>\n  <data name=\"Dlg_PirateBase_0705\" xml:space=\"preserve\">\n    <value>What do you need us to do? </value>\n  </data>\n  <data name=\"Dlg_PirateBase_0706\" xml:space=\"preserve\">\n    <value>We can’t fight off a whole Russian armada.</value>\n  </data>\n  <data name=\"Dlg_PirateBase_0707\" xml:space=\"preserve\">\n    <value>No, but together we can delay them. I’ll send a distress signal… </value>\n  </data>\n  <data name=\"Dlg_PirateBase_0708\" xml:space=\"preserve\">\n    <value>…to some allied pirate clans, but it will take time for them to get here.</value>\n  </data>\n  <data name=\"Dlg_PirateBase_0709\" xml:space=\"preserve\">\n    <value>Give us a hand in building our base defenses. Just pick a good spot.  </value>\n  </data>\n  <data name=\"Dlg_PirateBase_0801\" xml:space=\"preserve\">\n    <value>First get the equipment you’ll need at the Supply Base.</value>\n  </data>\n  <data name=\"Dlg_PirateBase_0901\" xml:space=\"preserve\">\n    <value>Enemy incoming!</value>\n  </data>\n  <data name=\"Dlg_PirateBase_0902\" xml:space=\"preserve\">\n    <value>How long till your pirate friends arrive?</value>\n  </data>\n  <data name=\"Dlg_PirateBase_0903\" xml:space=\"preserve\">\n    <value>The first squad just arrived. The main fleet of mother ships is a few minutes away.</value>\n  </data>\n  <data name=\"Dlg_PirateBase_0904\" xml:space=\"preserve\">\n    <value>Sounds good.</value>\n  </data>\n  <data name=\"Dlg_PirateBase_0905\" xml:space=\"preserve\">\n    <value>Prepare to fight! Take cover and attack in squads!</value>\n  </data>\n  <data name=\"Dlg_PirateBase_1001\" xml:space=\"preserve\">\n    <value>Holy crap! They’re crushing the asteroids!</value>\n  </data>\n  <data name=\"Dlg_PirateBase_1002\" xml:space=\"preserve\">\n    <value>Hope your friends get here soon, or the same thing’ll happen to us. </value>\n  </data>\n  <data name=\"Dlg_PirateBase_1003\" xml:space=\"preserve\">\n    <value>We can hold off the fighters, but once those motherships get here, we’ll have no chance.</value>\n  </data>\n  <data name=\"Dlg_PirateBase_1004\" xml:space=\"preserve\">\n    <value>I know. Trust me, we’ll make it.</value>\n  </data>\n  <data name=\"Dlg_PirateBase_1101\" xml:space=\"preserve\">\n    <value>Ready for reinforcements, lass?</value>\n  </data>\n  <data name=\"Dlg_PirateBase_1102\" xml:space=\"preserve\">\n    <value>Never leave a damsel in distress!</value>\n  </data>\n  <data name=\"Dlg_PirateBase_1103\" xml:space=\"preserve\">\n    <value>Battleschooner operational!</value>\n  </data>\n  <data name=\"Dlg_PirateBase_1104\" xml:space=\"preserve\">\n    <value>Our friends are here! </value>\n  </data>\n  <data name=\"Dlg_PirateBase_1105\" xml:space=\"preserve\">\n    <value>Man the cannons, lads!</value>\n  </data>\n  <data name=\"Dlg_PirateBase_1106\" xml:space=\"preserve\">\n    <value>Ramming speed!</value>\n  </data>\n  <data name=\"Dlg_PirateBase_1107\" xml:space=\"preserve\">\n    <value>Enemy on the horizon! </value>\n  </data>\n  <data name=\"Dlg_PirateBase_1108\" xml:space=\"preserve\">\n    <value>Let’s put these bilge-suckers out of business!</value>\n  </data>\n  <data name=\"Dlg_PirateBase_1109\" xml:space=\"preserve\">\n    <value>Revenge is delicious.</value>\n  </data>\n  <data name=\"Dlg_PirateBase_1110\" xml:space=\"preserve\">\n    <value>Let’s hit them hard!</value>\n  </data>\n  <data name=\"Dlg_PirateBase_1201\" xml:space=\"preserve\">\n    <value>The Russian mother ships are returning!</value>\n  </data>\n  <data name=\"Dlg_PirateBase_1202\" xml:space=\"preserve\">\n    <value>Damn!</value>\n  </data>\n  <data name=\"Dlg_PirateBase_1203\" xml:space=\"preserve\">\n    <value>We can beat them! Come on!</value>\n  </data>\n  <data name=\"Dlg_PirateBase_1204\" xml:space=\"preserve\">\n    <value>Not this time. We’re lucky to have come out of that skirmish alive…</value>\n  </data>\n  <data name=\"Dlg_PirateBase_1205\" xml:space=\"preserve\">\n    <value>You can have your revenge later.</value>\n  </data>\n  <data name=\"Dlg_PirateBase_1206\" xml:space=\"preserve\">\n    <value>Can’t we just join the pirates and hunt them down? One more time?</value>\n  </data>\n  <data name=\"Dlg_PirateBase_1207\" xml:space=\"preserve\">\n    <value>Once they hit interstellar speed, we’ll lose them. </value>\n  </data>\n  <data name=\"Dlg_PirateBase_1208\" xml:space=\"preserve\">\n    <value>Live to fight another day, guys. Next time we won’t let them escape. </value>\n  </data>\n  <data name=\"Dlg_PirateBase_1209\" xml:space=\"preserve\">\n    <value>That’s a solemn promise!</value>\n  </data>\n  <data name=\"Dlg_PirateBase_1210\" xml:space=\"preserve\">\n    <value>I guess that’ll have to do for now.</value>\n  </data>\n  <data name=\"Dlg_PirateBase_1301\" xml:space=\"preserve\">\n    <value>You guys, come to my base, I have a tasty surprise for you.</value>\n  </data>\n  <data name=\"Dlg_PirateBase_1302\" xml:space=\"preserve\">\n    <value>Does she mean…</value>\n  </data>\n  <data name=\"Dlg_PirateBase_1303\" xml:space=\"preserve\">\n    <value>Dream on, brother. Come on!</value>\n  </data>\n  <data name=\"Dlg_PirateBase_1401\" xml:space=\"preserve\">\n    <value>Now. What brought you here? And how did you find about those Russians and the artifacts?</value>\n  </data>\n  <data name=\"Dlg_PirateBase_1402\" xml:space=\"preserve\">\n    <value>It’s a long story. </value>\n  </data>\n  <data name=\"Dlg_PirateBase_1404\" xml:space=\"preserve\">\n    <value>We were on a survey operation at New Landswick. Got ambushed by the Russians, most of…</value>\n  </data>\n  <data name=\"Dlg_PirateBase_1405\" xml:space=\"preserve\">\n    <value>…the base personnel were killed, we managed to escape. Our only lead was the Russians’…</value>\n  </data>\n  <data name=\"Dlg_PirateBase_1406\" xml:space=\"preserve\">\n    <value>…communication data, which led us to the Laika trade station. When we got there, we…</value>\n  </data>\n  <data name=\"Dlg_PirateBase_1407\" xml:space=\"preserve\">\n    <value>…were ambushed again, but their mother ships were still back at New Landswick, so…</value>\n  </data>\n  <data name=\"Dlg_PirateBase_1408\" xml:space=\"preserve\">\n    <value>…we were able to make it. We picked up a couple of clues there – one led to your base, …</value>\n  </data>\n  <data name=\"Dlg_PirateBase_1409\" xml:space=\"preserve\">\n    <value>…the other was the name of a scientist, Thomas Barth. We checked him out first…</value>\n  </data>\n  <data name=\"Dlg_PirateBase_1410\" xml:space=\"preserve\">\n    <value>…and got some dirt about the alien artifacts the Russians are after…</value>\n  </data>\n  <data name=\"Dlg_PirateBase_1411\" xml:space=\"preserve\">\n    <value>And now – here we are.</value>\n  </data>\n  <data name=\"Dlg_PirateBase_1412\" xml:space=\"preserve\">\n    <value>Our story is simpler. We were on a raid and stumbled on an isolated base. Looked like…</value>\n  </data>\n  <data name=\"Dlg_PirateBase_1413\" xml:space=\"preserve\">\n    <value>…some half-operational Russian storage depot. Once we launched the attack, we realized…</value>\n  </data>\n  <data name=\"Dlg_PirateBase_1414\" xml:space=\"preserve\">\n    <value>…that was just a cover – it was a fully operational military base. Still, we won. We…</value>\n  </data>\n  <data name=\"Dlg_PirateBase_1415\" xml:space=\"preserve\">\n    <value>…found some nasty weapons and equipment, along with one antiquity. You know, the thing…</value>\n  </data>\n  <data name=\"Dlg_PirateBase_1416\" xml:space=\"preserve\">\n    <value>…you call an alien artifact.</value>\n  </data>\n  <data name=\"Dlg_PirateBase_1417\" xml:space=\"preserve\">\n    <value>So, you have it? You have it here?</value>\n  </data>\n  <data name=\"Dlg_PirateBase_1418\" xml:space=\"preserve\">\n    <value>Nah. We sold it to a smuggler, one of our “business partners”.</value>\n  </data>\n  <data name=\"Dlg_PirateBase_1423\" xml:space=\"preserve\">\n    <value>Can you put us in contact with him?</value>\n  </data>\n  <data name=\"Dlg_PirateBase_1424\" xml:space=\"preserve\">\n    <value>Guys, don’t forget about the transmitter we need for Thomas. I suggest…</value>\n  </data>\n  <data name=\"Dlg_PirateBase_1425\" xml:space=\"preserve\">\n    <value>…we handle that job first.</value>\n  </data>\n  <data name=\"Dlg_PirateBase_1426\" xml:space=\"preserve\">\n    <value>He might sell the artifact before we get to him.</value>\n  </data>\n  <data name=\"Dlg_PirateBase_1427\" xml:space=\"preserve\">\n    <value>I can arrange a meeting with him. But it might take some time. What kind…</value>\n  </data>\n  <data name=\"Dlg_PirateBase_1428\" xml:space=\"preserve\">\n    <value>…of transmitter do you have in mind, by the way?</value>\n  </data>\n  <data name=\"Dlg_PirateBase_1429\" xml:space=\"preserve\">\n    <value>A long-range model. Something heavy duty. It doesn’t have to be…</value>\n  </data>\n  <data name=\"Dlg_PirateBase_1430\" xml:space=\"preserve\">\n    <value>…super hi-tech — we just need the components.</value>\n  </data>\n  <data name=\"Dlg_PirateBase_1431\" xml:space=\"preserve\">\n    <value>I have a suggestion. I’ll arrange you the meeting with Manjeet the smuggler and meanwhile…</value>\n  </data>\n  <data name=\"Dlg_PirateBase_1432\" xml:space=\"preserve\">\n    <value>We’ll raid a Russian warehouse called Bratsk. Together. Simple stuff, nothing military.</value>\n  </data>\n  <data name=\"Dlg_PirateBase_1433\" xml:space=\"preserve\">\n    <value>Where have I heard that before?</value>\n  </data>\n  <data name=\"Dlg_PirateBase_1434\" xml:space=\"preserve\">\n    <value>No, really. It’s just a machinery factory and warehouse. We attack, you disable…</value>\n  </data>\n  <data name=\"Dlg_PirateBase_1435\" xml:space=\"preserve\">\n    <value>…the defenses and take the components you need. We loot the rest…</value>\n  </data>\n  <data name=\"Dlg_PirateBase_1436\" xml:space=\"preserve\">\n    <value>How does that sound to you?</value>\n  </data>\n  <data name=\"Dlg_PirateBase_1440\" xml:space=\"preserve\">\n    <value>We’re in. </value>\n  </data>\n  <data name=\"Dlg_PirateBase_1441\" xml:space=\"preserve\">\n    <value>Sounds like a deal. Check out the suppliers here at the base, make sure you have…</value>\n  </data>\n  <data name=\"Dlg_PirateBase_1442\" xml:space=\"preserve\">\n    <value>…enough fuel and ammo. </value>\n  </data>\n  <data name=\"Dlg_PirateBase_1443\" xml:space=\"preserve\">\n    <value>Once you’re ready, dock in, I’ll get the coordinates from Lorraine.</value>\n  </data>\n  <data name=\"Dlg_PirateBase_1501\" xml:space=\"preserve\">\n    <value>I think I like it!</value>\n  </data>\n  <data name=\"Dlg_PirateBase_1502\" xml:space=\"preserve\">\n    <value>Like I said, keep it.</value>\n  </data>\n  <data name=\"Dlg_PirateBase_1503\" xml:space=\"preserve\">\n    <value>And when you’re stocked up and ready for Bratsk, dock in!</value>\n  </data>\n  <data name=\"Dlg_PirateBase_0201\" xml:space=\"preserve\">\n    <value>How are we supposed to find the pirate base in all of this?</value>\n  </data>\n  <data name=\"Dlg_PirateBase_0202\" xml:space=\"preserve\">\n    <value>We do have some electromagnetic signals, I’ll try to…</value>\n  </data>\n  <data name=\"Dlg_PirateBase_0203\" xml:space=\"preserve\">\n    <value>Well, well! What ’ave we here, guests for dinner!</value>\n  </data>\n  <data name=\"Dlg_PirateBase_0204\" xml:space=\"preserve\">\n    <value>Jolly Roger ahead.</value>\n  </data>\n  <data name=\"Dlg_PirateBase_0205\" xml:space=\"preserve\">\n    <value>We’re here to discuss something, not to fight you.</value>\n  </data>\n  <data name=\"Dlg_PirateBase_0206\" xml:space=\"preserve\">\n    <value>Diplomats, eh?</value>\n  </data>\n  <data name=\"Dlg_PirateBase_0207\" xml:space=\"preserve\">\n    <value>Our diplomacy skills are a bit rusty!</value>\n  </data>\n  <data name=\"Dlg_PirateBase_0208\" xml:space=\"preserve\">\n    <value>On guard!</value>\n  </data>\n  <data name=\"Dlg_PirateBase_0209\" xml:space=\"preserve\">\n    <value>You will regret this.</value>\n  </data>\n  <data name=\"Dlg_EACSurveySite_0804\" xml:space=\"preserve\">\n    <value>Our next stop is Russian Trade Station Laika, the station with which the Russian…</value>\n  </data>\n  <data name=\"Dlg_EACSurveySite_0805\" xml:space=\"preserve\">\n    <value>…motherships had an open communication channel during the assault on EAC Survey Site.</value>\n  </data>\n  <data name=\"Dlg_Laika_1913\" xml:space=\"preserve\">\n    <value>…</value>\n  </data>\n  <data name=\"Dlg_ReichstagC_1022_2\" xml:space=\"preserve\">\n    <value>It is protected by heavy rail guns and we cannot afford losses at the moment.</value>\n  </data>\n  <data name=\"Dlg_AlienGate_0524_2\" xml:space=\"preserve\">\n    <value>This discovery means a great deal to me, Mr. Rainier.</value>\n  </data>\n  <data name=\"Dlg_AlienGate_0602_2\" xml:space=\"preserve\">\n    <value>The rest of us – get to the nearest asteroids.</value>\n  </data>\n  <data name=\"Dlg_ResearchVessel_1035\" xml:space=\"preserve\">\n    <value>…and phase antennas, and a feed horn.</value>\n  </data>\n</root>"
  },
  {
    "path": "Sources/MinerWars.GameLib/Resources/MyTexts.Designer.cs",
    "content": "﻿//------------------------------------------------------------------------------\n// <auto-generated>\n//     This code was generated by a tool.\n//     Runtime Version:4.0.30319.18034\n//\n//     Changes to this file may cause incorrect behavior and will be lost if\n//     the code is regenerated.\n// </auto-generated>\n//------------------------------------------------------------------------------\n\nnamespace MinerWars.Resources {\n    using System;\n    \n    \n    /// <summary>\n    ///   A strongly-typed resource class, for looking up localized strings, etc.\n    /// </summary>\n    // This class was auto-generated by the StronglyTypedResourceBuilder\n    // class via a tool like ResGen or Visual Studio.\n    // To add or remove a member, edit your .ResX file then rerun ResGen\n    // with the /str option, or rebuild your VS project.\n    [global::System.CodeDom.Compiler.GeneratedCodeAttribute(\"System.Resources.Tools.StronglyTypedResourceBuilder\", \"4.0.0.0\")]\n    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\n    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]\n    internal class MyTexts {\n        \n        private static global::System.Resources.ResourceManager resourceMan;\n        \n        private static global::System.Globalization.CultureInfo resourceCulture;\n        \n        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute(\"Microsoft.Performance\", \"CA1811:AvoidUncalledPrivateCode\")]\n        internal MyTexts() {\n        }\n        \n        /// <summary>\n        ///   Returns the cached ResourceManager instance used by this class.\n        /// </summary>\n        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]\n        internal static global::System.Resources.ResourceManager ResourceManager {\n            get {\n                if (object.ReferenceEquals(resourceMan, null)) {\n                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager(\"MinerWars.Resources.MyTexts\", typeof(MyTexts).Assembly);\n                    resourceMan = temp;\n                }\n                return resourceMan;\n            }\n        }\n        \n        /// <summary>\n        ///   Overrides the current thread's CurrentUICulture property for all\n        ///   resource lookups using this strongly typed resource class.\n        /// </summary>\n        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]\n        internal static global::System.Globalization.CultureInfo Culture {\n            get {\n                return resourceCulture;\n            }\n            set {\n                resourceCulture = value;\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Accept.\n        /// </summary>\n        internal static string Accept {\n            get {\n                return ResourceManager.GetString(\"Accept\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Acquire control.\n        /// </summary>\n        internal static string AcquireControl {\n            get {\n                return ResourceManager.GetString(\"AcquireControl\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Activated up to difficulty.\n        /// </summary>\n        internal static string ActivatedUpToDifficulty {\n            get {\n                return ResourceManager.GetString(\"ActivatedUpToDifficulty\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Activate health enhancing medicine.\n        /// </summary>\n        internal static string ActivateHealthEnhancingMedicine {\n            get {\n                return ResourceManager.GetString(\"ActivateHealthEnhancingMedicine\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Activate performance enhancing medicine.\n        /// </summary>\n        internal static string ActivatePerformanceEnhancingMedicine {\n            get {\n                return ResourceManager.GetString(\"ActivatePerformanceEnhancingMedicine\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Active.\n        /// </summary>\n        internal static string Active {\n            get {\n                return ResourceManager.GetString(\"Active\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Apollo.\n        /// </summary>\n        internal static string Actor_Apollo {\n            get {\n                return ResourceManager.GetString(\"Actor_Apollo\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Chinese guard.\n        /// </summary>\n        internal static string Actor_ChineseGuard {\n            get {\n                return ResourceManager.GetString(\"Actor_ChineseGuard\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to EAC police commander.\n        /// </summary>\n        internal static string Actor_EAC_Police_Mothership_Commander_F {\n            get {\n                return ResourceManager.GetString(\"Actor_EAC_Police_Mothership_Commander_F\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to EAC police commander.\n        /// </summary>\n        internal static string Actor_EAC_Police_Mothership_Commander_M {\n            get {\n                return ResourceManager.GetString(\"Actor_EAC_Police_Mothership_Commander_M\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Captain.\n        /// </summary>\n        internal static string Actor_EacSurveySite_MilitaryCaptain {\n            get {\n                return ResourceManager.GetString(\"Actor_EacSurveySite_MilitaryCaptain\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Officer.\n        /// </summary>\n        internal static string Actor_EacSurveySite_MilitaryOfficer {\n            get {\n                return ResourceManager.GetString(\"Actor_EacSurveySite_MilitaryOfficer\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to OPERATOR.\n        /// </summary>\n        internal static string Actor_EacSurveySite_StationOperator {\n            get {\n                return ResourceManager.GetString(\"Actor_EacSurveySite_StationOperator\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Father Tobias.\n        /// </summary>\n        internal static string Actor_Father_Tobias_Last_Hope {\n            get {\n                return ResourceManager.GetString(\"Actor_Father_Tobias_Last_Hope\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fourth Reich colonel.\n        /// </summary>\n        internal static string Actor_Fourth_Reich_Colone_2 {\n            get {\n                return ResourceManager.GetString(\"Actor_Fourth_Reich_Colone_2\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Francis Reef.\n        /// </summary>\n        internal static string Actor_Francis_Reef {\n            get {\n                return ResourceManager.GetString(\"Actor_Francis_Reef\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Indian smuggler.\n        /// </summary>\n        internal static string Actor_IndianSmuggler {\n            get {\n                return ResourceManager.GetString(\"Actor_IndianSmuggler\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Laika operator.\n        /// </summary>\n        internal static string Actor_LaikaOperator {\n            get {\n                return ResourceManager.GetString(\"Actor_LaikaOperator\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Lorraine.\n        /// </summary>\n        internal static string Actor_Lorraine {\n            get {\n                return ResourceManager.GetString(\"Actor_Lorraine\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Madelyn.\n        /// </summary>\n        internal static string Actor_Madelyn {\n            get {\n                return ResourceManager.GetString(\"Actor_Madelyn\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Manjeet Lata.\n        /// </summary>\n        internal static string Actor_Manjeet_Lata {\n            get {\n                return ResourceManager.GetString(\"Actor_Manjeet_Lata\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Marcus.\n        /// </summary>\n        internal static string Actor_Marcus {\n            get {\n                return ResourceManager.GetString(\"Actor_Marcus\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Mr. Stauffenberg.\n        /// </summary>\n        internal static string Actor_Mr_Stauffenberg {\n            get {\n                return ResourceManager.GetString(\"Actor_Mr_Stauffenberg\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Rainold Speedster.\n        /// </summary>\n        internal static string Actor_RaceChallenger {\n            get {\n                return ResourceManager.GetString(\"Actor_RaceChallenger\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Race Opponent.\n        /// </summary>\n        internal static string Actor_RaceOpponent {\n            get {\n                return ResourceManager.GetString(\"Actor_RaceOpponent\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tarja.\n        /// </summary>\n        internal static string Actor_RavenGirl {\n            get {\n                return ResourceManager.GetString(\"Actor_RavenGirl\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Valentin.\n        /// </summary>\n        internal static string Actor_RavenGuy {\n            get {\n                return ResourceManager.GetString(\"Actor_RavenGuy\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Captain.\n        /// </summary>\n        internal static string Actor_ReichstagCaptain {\n            get {\n                return ResourceManager.GetString(\"Actor_ReichstagCaptain\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Officer.\n        /// </summary>\n        internal static string Actor_ReichstagOfficer {\n            get {\n                return ResourceManager.GetString(\"Actor_ReichstagOfficer\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Miner Bob.\n        /// </summary>\n        internal static string Actor_Researcher1 {\n            get {\n                return ResourceManager.GetString(\"Actor_Researcher1\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Miner Tom.\n        /// </summary>\n        internal static string Actor_Researcher2 {\n            get {\n                return ResourceManager.GetString(\"Actor_Researcher2\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to RIFT–SION OPERATOR.\n        /// </summary>\n        internal static string Actor_Rift_Operator {\n            get {\n                return ResourceManager.GetString(\"Actor_Rift_Operator\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tourist office.\n        /// </summary>\n        internal static string Actor_Rift_Tourist {\n            get {\n                return ResourceManager.GetString(\"Actor_Rift_Tourist\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Barkeeper.\n        /// </summary>\n        internal static string Actor_RimeBarkeeper {\n            get {\n                return ResourceManager.GetString(\"Actor_RimeBarkeeper\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Duplex Bouncer.\n        /// </summary>\n        internal static string Actor_RimeBouncer {\n            get {\n                return ResourceManager.GetString(\"Actor_RimeBouncer\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Client.\n        /// </summary>\n        internal static string Actor_RimeClient1 {\n            get {\n                return ResourceManager.GetString(\"Actor_RimeClient1\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Client.\n        /// </summary>\n        internal static string Actor_RimeClient2 {\n            get {\n                return ResourceManager.GetString(\"Actor_RimeClient2\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Expelled client.\n        /// </summary>\n        internal static string Actor_RimeClient3 {\n            get {\n                return ResourceManager.GetString(\"Actor_RimeClient3\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Guard.\n        /// </summary>\n        internal static string Actor_RimeGuard {\n            get {\n                return ResourceManager.GetString(\"Actor_RimeGuard\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Mitchel.\n        /// </summary>\n        internal static string Actor_RimeMitchel {\n            get {\n                return ResourceManager.GetString(\"Actor_RimeMitchel\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Smuggler.\n        /// </summary>\n        internal static string Actor_RimeSmuggler {\n            get {\n                return ResourceManager.GetString(\"Actor_RimeSmuggler\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Russian captain.\n        /// </summary>\n        internal static string Actor_RussianCaptain {\n            get {\n                return ResourceManager.GetString(\"Actor_RussianCaptain\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Russian pilot.\n        /// </summary>\n        internal static string Actor_RussianCF1 {\n            get {\n                return ResourceManager.GetString(\"Actor_RussianCF1\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Russian pilot.\n        /// </summary>\n        internal static string Actor_RussianCF2 {\n            get {\n                return ResourceManager.GetString(\"Actor_RussianCF2\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Russian general.\n        /// </summary>\n        internal static string Actor_RussianGeneral {\n            get {\n                return ResourceManager.GetString(\"Actor_RussianGeneral\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Rec – Headquarters.\n        /// </summary>\n        internal static string Actor_RussianGeneral_Headquarters {\n            get {\n                return ResourceManager.GetString(\"Actor_RussianGeneral_Headquarters\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Rec – General.\n        /// </summary>\n        internal static string Actor_RussianGeneral_Recording {\n            get {\n                return ResourceManager.GetString(\"Actor_RussianGeneral_Recording\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Slave.\n        /// </summary>\n        internal static string Actor_Slave {\n            get {\n                return ResourceManager.GetString(\"Actor_Slave\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Informant.\n        /// </summary>\n        internal static string Actor_SmugglerInformator {\n            get {\n                return ResourceManager.GetString(\"Actor_SmugglerInformator\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tarja.\n        /// </summary>\n        internal static string Actor_Tarja {\n            get {\n                return ResourceManager.GetString(\"Actor_Tarja\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Templar guard.\n        /// </summary>\n        internal static string Actor_TemplarGuard {\n            get {\n                return ResourceManager.GetString(\"Actor_TemplarGuard\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Patriarch Lamorak.\n        /// </summary>\n        internal static string Actor_TemplarPatriarchLamorak {\n            get {\n                return ResourceManager.GetString(\"Actor_TemplarPatriarchLamorak\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sir Bedivere.\n        /// </summary>\n        internal static string Actor_TemplarSirBedivere {\n            get {\n                return ResourceManager.GetString(\"Actor_TemplarSirBedivere\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Thomas “The Crook”.\n        /// </summary>\n        internal static string Actor_TheCrook {\n            get {\n                return ResourceManager.GetString(\"Actor_TheCrook\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Thomas Barth.\n        /// </summary>\n        internal static string Actor_Thomas_Barth {\n            get {\n                return ResourceManager.GetString(\"Actor_Thomas_Barth\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to White Wolves general.\n        /// </summary>\n        internal static string Actor_White_Wolves_General_2 {\n            get {\n                return ResourceManager.GetString(\"Actor_White_Wolves_General_2\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Add.\n        /// </summary>\n        internal static string Add {\n            get {\n                return ResourceManager.GetString(\"Add\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Adds gameplay objects.\n        /// </summary>\n        internal static string AddGamePlayTooltip {\n            get {\n                return ResourceManager.GetString(\"AddGamePlayTooltip\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Adds mysterious cubes.\n        /// </summary>\n        internal static string AddMysteriousCubesTooltip {\n            get {\n                return ResourceManager.GetString(\"AddMysteriousCubesTooltip\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Add.\n        /// </summary>\n        internal static string AddObject {\n            get {\n                return ResourceManager.GetString(\"AddObject\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Add new object.\n        /// </summary>\n        internal static string AddObjectTooltip {\n            get {\n                return ResourceManager.GetString(\"AddObjectTooltip\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Adds prefab to active container.\n        /// </summary>\n        internal static string AddPrefabTooltip {\n            get {\n                return ResourceManager.GetString(\"AddPrefabTooltip\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Add selected to this sector.\n        /// </summary>\n        internal static string AddSelectedToSector {\n            get {\n                return ResourceManager.GetString(\"AddSelectedToSector\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Add voxels.\n        /// </summary>\n        internal static string AddVoxels {\n            get {\n                return ResourceManager.GetString(\"AddVoxels\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Adjust grid.\n        /// </summary>\n        internal static string AdjustGrid {\n            get {\n                return ResourceManager.GetString(\"AdjustGrid\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Press +/− to adjust length of one grid step.\n        /// </summary>\n        internal static string AdjustGridTooltip {\n            get {\n                return ResourceManager.GetString(\"AdjustGridTooltip\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to ADVANCED ARMOR | Projectile/explosion damage reduction: 60% | Solar wind damage reduction: 0%.\n        /// </summary>\n        internal static string AdvancedArmor {\n            get {\n                return ResourceManager.GetString(\"AdvancedArmor\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Afterburner.\n        /// </summary>\n        internal static string Afterburner {\n            get {\n                return ResourceManager.GetString(\"Afterburner\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Aggressive.\n        /// </summary>\n        internal static string Aggressive {\n            get {\n                return ResourceManager.GetString(\"Aggressive\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Aggressivity.\n        /// </summary>\n        internal static string Aggressivity {\n            get {\n                return ResourceManager.GetString(\"Aggressivity\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Aiming distance.\n        /// </summary>\n        internal static string AimingDistance {\n            get {\n                return ResourceManager.GetString(\"AimingDistance\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to AI template.\n        /// </summary>\n        internal static string AITemplate {\n            get {\n                return ResourceManager.GetString(\"AITemplate\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Alarm.\n        /// </summary>\n        internal static string Alarm {\n            get {\n                return ResourceManager.GetString(\"Alarm\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Alien artifact.\n        /// </summary>\n        internal static string alien_artefact {\n            get {\n                return ResourceManager.GetString(\"alien_artefact\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Alien detector unit.\n        /// </summary>\n        internal static string alien_detector_unit {\n            get {\n                return ResourceManager.GetString(\"alien_detector_unit\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Alien artifact.\n        /// </summary>\n        internal static string ALIEN_GATE {\n            get {\n                return ResourceManager.GetString(\"ALIEN_GATE\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string ALIEN_GATE_16_Description {\n            get {\n                return ResourceManager.GetString(\"ALIEN_GATE_16_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Download data about alien technology.\n        /// </summary>\n        internal static string ALIEN_GATE_16_Name {\n            get {\n                return ResourceManager.GetString(\"ALIEN_GATE_16_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string ALIEN_GATE_17_Description {\n            get {\n                return ResourceManager.GetString(\"ALIEN_GATE_17_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Overload energy generator.\n        /// </summary>\n        internal static string ALIEN_GATE_17_Name {\n            get {\n                return ResourceManager.GetString(\"ALIEN_GATE_17_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string ALIEN_GATE_18_Description {\n            get {\n                return ResourceManager.GetString(\"ALIEN_GATE_18_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Escape the ship.\n        /// </summary>\n        internal static string ALIEN_GATE_18_Name {\n            get {\n                return ResourceManager.GetString(\"ALIEN_GATE_18_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string ALIEN_GATE_19_Description {\n            get {\n                return ResourceManager.GetString(\"ALIEN_GATE_19_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Kill Francis Reef.\n        /// </summary>\n        internal static string ALIEN_GATE_19_Name {\n            get {\n                return ResourceManager.GetString(\"ALIEN_GATE_19_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string ALIEN_GATE_20_Description {\n            get {\n                return ResourceManager.GetString(\"ALIEN_GATE_20_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Prevent Francis Reef from escaping.\n        /// </summary>\n        internal static string ALIEN_GATE_20_Name {\n            get {\n                return ResourceManager.GetString(\"ALIEN_GATE_20_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string ALIEN_GATE_21_Description {\n            get {\n                return ResourceManager.GetString(\"ALIEN_GATE_21_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Finish Francis Reef.\n        /// </summary>\n        internal static string ALIEN_GATE_21_Name {\n            get {\n                return ResourceManager.GetString(\"ALIEN_GATE_21_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string ALIEN_GATE_22_Description {\n            get {\n                return ResourceManager.GetString(\"ALIEN_GATE_22_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Return to Sapho.\n        /// </summary>\n        internal static string ALIEN_GATE_22_Name {\n            get {\n                return ResourceManager.GetString(\"ALIEN_GATE_22_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string ALIEN_GATE_23_Description {\n            get {\n                return ResourceManager.GetString(\"ALIEN_GATE_23_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Explore alien gate.\n        /// </summary>\n        internal static string ALIEN_GATE_23_Name {\n            get {\n                return ResourceManager.GetString(\"ALIEN_GATE_23_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string ALIEN_GATE_BOARD_MOTHER_SHIP_Description {\n            get {\n                return ResourceManager.GetString(\"ALIEN_GATE_BOARD_MOTHER_SHIP_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Board Russian mothership.\n        /// </summary>\n        internal static string ALIEN_GATE_BOARD_MOTHER_SHIP_Name {\n            get {\n                return ResourceManager.GetString(\"ALIEN_GATE_BOARD_MOTHER_SHIP_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string ALIEN_GATE_BOARD_SECOND_Description {\n            get {\n                return ResourceManager.GetString(\"ALIEN_GATE_BOARD_SECOND_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Board second Russian mothership.\n        /// </summary>\n        internal static string ALIEN_GATE_BOARD_SECOND_Name {\n            get {\n                return ResourceManager.GetString(\"ALIEN_GATE_BOARD_SECOND_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string ALIEN_GATE_CONTINUE_SEARCHING_Description {\n            get {\n                return ResourceManager.GetString(\"ALIEN_GATE_CONTINUE_SEARCHING_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Continue searching.\n        /// </summary>\n        internal static string ALIEN_GATE_CONTINUE_SEARCHING_Name {\n            get {\n                return ResourceManager.GetString(\"ALIEN_GATE_CONTINUE_SEARCHING_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string ALIEN_GATE_COUGHT_IN_TRAP_Description {\n            get {\n                return ResourceManager.GetString(\"ALIEN_GATE_COUGHT_IN_TRAP_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Caught in a trap.\n        /// </summary>\n        internal static string ALIEN_GATE_COUGHT_IN_TRAP_Name {\n            get {\n                return ResourceManager.GetString(\"ALIEN_GATE_COUGHT_IN_TRAP_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Grand Finale\n        ///.\n        /// </summary>\n        internal static string ALIEN_GATE_Description {\n            get {\n                return ResourceManager.GetString(\"ALIEN_GATE_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string ALIEN_GATE_ENABLE_DOORS_Description {\n            get {\n                return ResourceManager.GetString(\"ALIEN_GATE_ENABLE_DOORS_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Breach the command deck to unlock the lab.\n        /// </summary>\n        internal static string ALIEN_GATE_ENABLE_DOORS_Name {\n            get {\n                return ResourceManager.GetString(\"ALIEN_GATE_ENABLE_DOORS_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string ALIEN_GATE_ENTER_LAB_Description {\n            get {\n                return ResourceManager.GetString(\"ALIEN_GATE_ENTER_LAB_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Enter the lab.\n        /// </summary>\n        internal static string ALIEN_GATE_ENTER_LAB_Name {\n            get {\n                return ResourceManager.GetString(\"ALIEN_GATE_ENTER_LAB_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string ALIEN_GATE_FOLLOW_COORDINATES_Description {\n            get {\n                return ResourceManager.GetString(\"ALIEN_GATE_FOLLOW_COORDINATES_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Follow received coordinates.\n        /// </summary>\n        internal static string ALIEN_GATE_FOLLOW_COORDINATES_Name {\n            get {\n                return ResourceManager.GetString(\"ALIEN_GATE_FOLLOW_COORDINATES_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string ALIEN_GATE_FOLLOW_DIRECTION_Description {\n            get {\n                return ResourceManager.GetString(\"ALIEN_GATE_FOLLOW_DIRECTION_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Follow the direction.\n        /// </summary>\n        internal static string ALIEN_GATE_FOLLOW_DIRECTION_Name {\n            get {\n                return ResourceManager.GetString(\"ALIEN_GATE_FOLLOW_DIRECTION_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string ALIEN_GATE_HACK_ENGINE_2_Description {\n            get {\n                return ResourceManager.GetString(\"ALIEN_GATE_HACK_ENGINE_2_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Overload core engine.\n        /// </summary>\n        internal static string ALIEN_GATE_HACK_ENGINE_2_Name {\n            get {\n                return ResourceManager.GetString(\"ALIEN_GATE_HACK_ENGINE_2_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string ALIEN_GATE_HACK_ENGINE_Description {\n            get {\n                return ResourceManager.GetString(\"ALIEN_GATE_HACK_ENGINE_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Overload core engine.\n        /// </summary>\n        internal static string ALIEN_GATE_HACK_ENGINE_Name {\n            get {\n                return ResourceManager.GetString(\"ALIEN_GATE_HACK_ENGINE_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string ALIEN_GATE_HACK_GENERATOR_Description {\n            get {\n                return ResourceManager.GetString(\"ALIEN_GATE_HACK_GENERATOR_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Overload energy generator.\n        /// </summary>\n        internal static string ALIEN_GATE_HACK_GENERATOR_Name {\n            get {\n                return ResourceManager.GetString(\"ALIEN_GATE_HACK_GENERATOR_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string ALIEN_GATE_HACK_GENERATOR2_Description {\n            get {\n                return ResourceManager.GetString(\"ALIEN_GATE_HACK_GENERATOR2_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Overload energy generator.\n        /// </summary>\n        internal static string ALIEN_GATE_HACK_GENERATOR2_Name {\n            get {\n                return ResourceManager.GetString(\"ALIEN_GATE_HACK_GENERATOR2_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string ALIEN_GATE_LEAVE_SHIP_Description {\n            get {\n                return ResourceManager.GetString(\"ALIEN_GATE_LEAVE_SHIP_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Leave the ship.\n        /// </summary>\n        internal static string ALIEN_GATE_LEAVE_SHIP_Name {\n            get {\n                return ResourceManager.GetString(\"ALIEN_GATE_LEAVE_SHIP_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string ALIEN_GATE_REGROPUP_WITH_MADELYN_Description {\n            get {\n                return ResourceManager.GetString(\"ALIEN_GATE_REGROPUP_WITH_MADELYN_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Regroup with Madelyn.\n        /// </summary>\n        internal static string ALIEN_GATE_REGROPUP_WITH_MADELYN_Name {\n            get {\n                return ResourceManager.GetString(\"ALIEN_GATE_REGROPUP_WITH_MADELYN_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string ALIEN_GATE_REGROUP_WITH_MADELYN_Description {\n            get {\n                return ResourceManager.GetString(\"ALIEN_GATE_REGROUP_WITH_MADELYN_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Regroup with Madelyn.\n        /// </summary>\n        internal static string ALIEN_GATE_REGROUP_WITH_MADELYN_Name {\n            get {\n                return ResourceManager.GetString(\"ALIEN_GATE_REGROUP_WITH_MADELYN_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string ALIEN_GATE_RIGHT_WING_Description {\n            get {\n                return ResourceManager.GetString(\"ALIEN_GATE_RIGHT_WING_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Keep formation with Sapho.\n        /// </summary>\n        internal static string ALIEN_GATE_RIGHT_WING_Name {\n            get {\n                return ResourceManager.GetString(\"ALIEN_GATE_RIGHT_WING_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string ALIEN_GATE_RUN_FOR_LIFE_Description {\n            get {\n                return ResourceManager.GetString(\"ALIEN_GATE_RUN_FOR_LIFE_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Run.\n        /// </summary>\n        internal static string ALIEN_GATE_RUN_FOR_LIFE_Name {\n            get {\n                return ResourceManager.GetString(\"ALIEN_GATE_RUN_FOR_LIFE_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The location of a supposed alien artifact, as revealed by a sophisticated triangulation \n        ///process. The triangulated signal led to this asteroid field near the Sun, an uninhabited area \n        ///with frequent solar winds and difficult survival conditions. Due to the harsh conditions, \n        ///no trade routes are reported in the area..\n        /// </summary>\n        internal static string ALIEN_GATE_SectorDescription {\n            get {\n                return ResourceManager.GetString(\"ALIEN_GATE_SectorDescription\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to UNKNOWN SECTOR NEAR THE SUN.\n        /// </summary>\n        internal static string ALIEN_GATE_SectorName {\n            get {\n                return ResourceManager.GetString(\"ALIEN_GATE_SectorName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Alien gate.\n        /// </summary>\n        internal static string AlienGate {\n            get {\n                return ResourceManager.GetString(\"AlienGate\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to All blueprints.\n        /// </summary>\n        internal static string AllBlueprints {\n            get {\n                return ResourceManager.GetString(\"AllBlueprints\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to All events.\n        /// </summary>\n        internal static string AllEvents {\n            get {\n                return ResourceManager.GetString(\"AllEvents\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to All items.\n        /// </summary>\n        internal static string AllItemsInventory {\n            get {\n                return ResourceManager.GetString(\"AllItemsInventory\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to All missions.\n        /// </summary>\n        internal static string AllMissions {\n            get {\n                return ResourceManager.GetString(\"AllMissions\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Allow.\n        /// </summary>\n        internal static string AllowEnter {\n            get {\n                return ResourceManager.GetString(\"AllowEnter\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to All weapons.\n        /// </summary>\n        internal static string AllWeapons {\n            get {\n                return ResourceManager.GetString(\"AllWeapons\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Alpha.\n        /// </summary>\n        internal static string Alpha {\n            get {\n                return ResourceManager.GetString(\"Alpha\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Alt.\n        /// </summary>\n        internal static string Alt {\n            get {\n                return ResourceManager.GetString(\"Alt\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ammo.\n        /// </summary>\n        internal static string Ammo {\n            get {\n                return ResourceManager.GetString(\"Ammo\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Armor piercing incendiary ammo for gatling gun.\n        /// </summary>\n        internal static string AmmoAutocannonArmorPiercingIncendiary {\n            get {\n                return ResourceManager.GetString(\"AmmoAutocannonArmorPiercingIncendiary\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to BASIC AMMO FOR GATLING GUN | Damage: 3.9 | Pilot damage: 0 | EMP damage: 0 | Speed: 2000m/s | Range: 2800m.\n        /// </summary>\n        internal static string AmmoAutocannonBasic {\n            get {\n                return ResourceManager.GetString(\"AmmoAutocannonBasic\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to BIOCHEM AMMO FOR GATLING GUN | Damage: 2 | Pilot damage: 10 | EMP damage: 0 | Speed: 1860m/s | Range: 1800m.\n        /// </summary>\n        internal static string AmmoAutocannonBioChem {\n            get {\n                return ResourceManager.GetString(\"AmmoAutocannonBioChem\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to EMP AMMO FOR GATLING GUN | Damage: 0.5 | Pilot damage: 0 | EMP damage: 5 | Speed: 1000m/s | Range: 1800m | Special: Can temporarily disable electrical objects.\n        /// </summary>\n        internal static string AmmoAutocannonEMP {\n            get {\n                return ResourceManager.GetString(\"AmmoAutocannonEMP\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to HIGH VELOCITY AMMO FOR GATLING GUN | Damage: 5.85 | Pilot damage: 0 | EMP damage: 0 | Speed: 3000m/s | Range: 3000m.\n        /// </summary>\n        internal static string AmmoAutocannonHighVelocity {\n            get {\n                return ResourceManager.GetString(\"AmmoAutocannonHighVelocity\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to SAPHEI AMMO FOR GATLING GUN | Damage: 9.75 | Pilot damage: 0 | EMP damage: 0 | Speed: 2000m/s | Range: 2200m | Special: Semi-Armor Piercing High Explosive Incendiary.\n        /// </summary>\n        internal static string AmmoAutocannonSAPHEI {\n            get {\n                return ResourceManager.GetString(\"AmmoAutocannonSAPHEI\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to BIOCHEM AMMO FOR AUTOMATIC RIFLE WITH SILENCER | Damage: 0.5 | Pilot damage: 10 | EMP damage: 0 | Speed: 900m/s | Range: 1500m.\n        /// </summary>\n        internal static string AmmoAutomaticRifleWithSilencerBioChem {\n            get {\n                return ResourceManager.GetString(\"AmmoAutomaticRifleWithSilencerBioChem\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to HIGH VELOCITY AMMO FOR AUTOMATIC RIFLE WITH SILENCER | Damage: 1 | Pilot damage: 0 | EMP damage: 0 | Speed: 1000m/s | Range: 2000m.\n        /// </summary>\n        internal static string AmmoAutomaticRifleWithSilencerHighVelocity {\n            get {\n                return ResourceManager.GetString(\"AmmoAutomaticRifleWithSilencerHighVelocity\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to SAPHEI AMMO FOR AUTOMATIC RIFLE WITH SILENCER | Damage: 2 | Pilot damage: 0 | EMP damage: 0 | Speed: 900m/s | Range: 1800m | Special: Semi-Armor Piercing High Explosive Incendiary.\n        /// </summary>\n        internal static string AmmoAutomaticRifleWithSilencerSAPHEI {\n            get {\n                return ResourceManager.GetString(\"AmmoAutomaticRifleWithSilencerSAPHEI\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Armor piercing incendiary ammo for cannon.\n        /// </summary>\n        internal static string AmmoCannonArmorPiercingIncendiary {\n            get {\n                return ResourceManager.GetString(\"AmmoCannonArmorPiercingIncendiary\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to BASIC AMMO FOR CANNON | Damage: 30 | Pilot damage: 0 | EMP damage: 0 | Speed: 1000m/s | Explosion radius: 22 m | Range: 14000m.\n        /// </summary>\n        internal static string AmmoCannonBasic {\n            get {\n                return ResourceManager.GetString(\"AmmoCannonBasic\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to BIOCHEM AMMO FOR CANNON | Damage: 3 | Pilot damage: 30 | EMP damage: 0 | Speed: 2000m/s | Explosion radius: 15 m | Range: 14000m.\n        /// </summary>\n        internal static string AmmoCannonBiochem {\n            get {\n                return ResourceManager.GetString(\"AmmoCannonBiochem\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to EMP AMMO FOR CANNON | Damage: 3 | Pilot damage: 0 | EMP damage: 30 | Speed: 2000m/s | Explosion radius: 15 m | Range: 14000m | Special: Can temporarily disable electrical objects.\n        /// </summary>\n        internal static string AmmoCannonEMP {\n            get {\n                return ResourceManager.GetString(\"AmmoCannonEMP\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to HIGH VELOCITY AMMO FOR CANNON | Damage: 40 | Pilot damage: 0 | EMP damage: 0 | Speed: 1500m/s | Explosion radius: 25 m | Range: 15000m.\n        /// </summary>\n        internal static string AmmoCannonHighVelocity {\n            get {\n                return ResourceManager.GetString(\"AmmoCannonHighVelocity\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to PROXIMITY EXPLOSIVE AMMO FOR CANNON | Damage: 50 | Pilot damage: 0 | EMP damage: 0 | Speed: 950m/s | Explosion radius: 32 m | Range: 12000m | Special: Proximity ammo explodes within 5m of a target. No direct hit necessary..\n        /// </summary>\n        internal static string AmmoCannonProximityExplosive {\n            get {\n                return ResourceManager.GetString(\"AmmoCannonProximityExplosive\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to SAPHEI AMMO FOR CANNON | Damage: 80 | Pilot damage: 0 | EMP damage: 0 | Speed: 1100m/s | Explosion radius: 30 m | Range: 15000m | Special: Semi-Armor Piercing High Explosive Incendiary.\n        /// </summary>\n        internal static string AmmoCannonSAPHEI {\n            get {\n                return ResourceManager.GetString(\"AmmoCannonSAPHEI\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to TUNNEL BUSTER AMMO FOR CANNON | Damage: 60 | Pilot damage: 0 | EMP damage: 0 | Speed: 300m/s | Explosion radius: 60 m | Range: 10000m | Special: Large explosion radius.\n        /// </summary>\n        internal static string AmmoCannonTunnelBuster {\n            get {\n                return ResourceManager.GetString(\"AmmoCannonTunnelBuster\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Bullet.\n        /// </summary>\n        internal static string AmmoGroupBullet {\n            get {\n                return ResourceManager.GetString(\"AmmoGroupBullet\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cannon.\n        /// </summary>\n        internal static string AmmoGroupCannon {\n            get {\n                return ResourceManager.GetString(\"AmmoGroupCannon\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Missile.\n        /// </summary>\n        internal static string AmmoGroupMissile {\n            get {\n                return ResourceManager.GetString(\"AmmoGroupMissile\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Universal launcher back.\n        /// </summary>\n        internal static string AmmoGroupUniversalLauncherBack {\n            get {\n                return ResourceManager.GetString(\"AmmoGroupUniversalLauncherBack\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Universal launcher front.\n        /// </summary>\n        internal static string AmmoGroupUniversalLauncherFront {\n            get {\n                return ResourceManager.GetString(\"AmmoGroupUniversalLauncherFront\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to ENGINE DETECTION MISSILE FOR GUIDED LAUNCHER | Damage: 20 | Pilot damage: 0 | EMP damage: 0 | Speed: 400m/s | Explosion radius: 30 m | Range: 15000m | Special: Guides missile toward ships emitting heat from engines..\n        /// </summary>\n        internal static string AmmoGuidedEngineDetection {\n            get {\n                return ResourceManager.GetString(\"AmmoGuidedEngineDetection\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to RADAR DETECTION MISSILE FOR GUIDED LAUNCHER | Damage: 20 | Pilot damage: 0 | EMP damage: 0 | Speed: 400m/s | Explosion radius: 30 m | Range: 15000m | Special: Guides missile towards ships emitting radar.\n        /// </summary>\n        internal static string AmmoGuidedRadarDetection {\n            get {\n                return ResourceManager.GetString(\"AmmoGuidedRadarDetection\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to VISUAL DETECTION MISSILE FOR GUIDED LAUNCHER | Damage: 20 | Pilot damage: 0 | EMP damage: 0 | Speed: 400m/s | Explosion radius: 30 m | Range: 15000m | Special: Guides missile at ships which are in line of sight.\n        /// </summary>\n        internal static string AmmoGuidedVisualDetection {\n            get {\n                return ResourceManager.GetString(\"AmmoGuidedVisualDetection\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Armor piercing incendiary ammo for machine gun.\n        /// </summary>\n        internal static string AmmoMachineGunArmorPiercingIncendiary {\n            get {\n                return ResourceManager.GetString(\"AmmoMachineGunArmorPiercingIncendiary\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to BASIC AMMO FOR MACHINE GUN | Damage: 6 | Pilot damage: 0 | EMP damage: 0 | Speed: 1700m/s | Range: 2300m.\n        /// </summary>\n        internal static string AmmoMachineGunBasic {\n            get {\n                return ResourceManager.GetString(\"AmmoMachineGunBasic\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to BIOCHEM AMMO FOR MACHINE GUN | Damage: 3 | Pilot damage: 30 | EMP damage: 0 | Speed: 900m/s | Range: 1900m.\n        /// </summary>\n        internal static string AmmoMachineGunBioChem {\n            get {\n                return ResourceManager.GetString(\"AmmoMachineGunBioChem\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to EMP AMMO FOR MACHINE GUN | Damage: 0.5 | Pilot damage: 0 | EMP damage: 5 | Speed: 900m/s | Range: 1900m | Special: Can temporarily disable electrical objects.\n        /// </summary>\n        internal static string AmmoMachineGunEMP {\n            get {\n                return ResourceManager.GetString(\"AmmoMachineGunEMP\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to HIGH VELOCITY AMMO FOR MACHINE GUN | Damage: 9 | Pilot damage: 0 | EMP damage: 0 | Speed: 2200m/s | Range: 2500m.\n        /// </summary>\n        internal static string AmmoMachineGunHighVelocity {\n            get {\n                return ResourceManager.GetString(\"AmmoMachineGunHighVelocity\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to SAPHEI AMMO FOR MACHINE GUN | Damage: 15 | Pilot damage: 0 | EMP damage: 0 | Speed: 1900m/s | Range: 1600m | Special: Semi-Armor Piercing High Explosive Incendiary.\n        /// </summary>\n        internal static string AmmoMachineGunSAPHEI {\n            get {\n                return ResourceManager.GetString(\"AmmoMachineGunSAPHEI\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to BASIC MISSILE | Damage: 70 | Pilot damage: 0 | EMP damage: 0 | Speed: 700m/s | Explosion radius: 30 m | Range: 10000m .\n        /// </summary>\n        internal static string AmmoMissileBasic {\n            get {\n                return ResourceManager.GetString(\"AmmoMissileBasic\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to BIOCHEM MISSILE AMMO FOR MISSILE LAUNCHER | Damage: 2 | Pilot damage: 40 | EMP damage: 0 | Speed: 500m/s | Explosion radius: 40 m | Range: 10000m.\n        /// </summary>\n        internal static string AmmoMissileBioChem {\n            get {\n                return ResourceManager.GetString(\"AmmoMissileBioChem\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to EMP MISSILE FOR GUIDED LAUNCHER | Damage: 2 | Pilot damage: 0 | EMP damage: 20 | Speed: 500m/s | Explosion radius: 40 m | Range: 10000m | Special: Can temporarily disable electrical objects.\n        /// </summary>\n        internal static string AmmoMissileEMP {\n            get {\n                return ResourceManager.GetString(\"AmmoMissileEMP\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Assign ammo types\n        ///to your weapon slots\n        ///by selecting an ammo type\n        ///and pressing fire..\n        /// </summary>\n        internal static string AmmoSelectText {\n            get {\n                return ResourceManager.GetString(\"AmmoSelectText\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Primary: {0}\n        ///Secondary: {1}\n        ///Third: {2}\n        ///Fourth: {3}\n        ///Fifth: {4}.\n        /// </summary>\n        internal static string AmmoSelectTextValues {\n            get {\n                return ResourceManager.GetString(\"AmmoSelectTextValues\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to ARMOR-PIERCING AMMO FOR SHOTGUN | Damage: 10 | Pilot damage: 0 | EMP damage: 0 | Speed: 800m/s | Range: 300m.\n        /// </summary>\n        internal static string AmmoShotgunArmorPiercing {\n            get {\n                return ResourceManager.GetString(\"AmmoShotgunArmorPiercing\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to BASIC AMMO FOR SHOTGUN | Damage: 5 | Pilot damage: 0 | EMP damage: 0 | Speed: 600m/s | Range: 300m.\n        /// </summary>\n        internal static string AmmoShotgunBasic {\n            get {\n                return ResourceManager.GetString(\"AmmoShotgunBasic\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to EXPLOSIVE AMMO FOR SHOTGUN | Damage: 10 | Pilot damage: 0 | EMP damage: 0 | Speed: 700m/s | Range: 300m.\n        /// </summary>\n        internal static string AmmoShotgunExplosive {\n            get {\n                return ResourceManager.GetString(\"AmmoShotgunExplosive\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to HIGH VELOCITY AMMO FOR SHOTGUN | Damage: 8 | Pilot damage: 0 | EMP damage: 0 | Speed: 1200m/s | Range: 400m.\n        /// </summary>\n        internal static string AmmoShotgunHighVelocity {\n            get {\n                return ResourceManager.GetString(\"AmmoShotgunHighVelocity\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to BIOCHEM AMMO FOR SNIPER | Damage: 10 | Pilot damage: 50 | EMP damage: 0 | Speed: 9000m/s | Range: 9600m.\n        /// </summary>\n        internal static string AmmoSniperBioChem {\n            get {\n                return ResourceManager.GetString(\"AmmoSniperBioChem\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to EMP AMMO FOR SNIPER | Damage: 15 | Pilot damage: 0 | EMP damage: 45 | Speed: 8000m/s | Range: 9600m | Special: Can temporarily disable electrical objects.\n        /// </summary>\n        internal static string AmmoSniperEMP {\n            get {\n                return ResourceManager.GetString(\"AmmoSniperEMP\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to HIGH VELOCITY AMMO FOR SNIPER | Damage: 60 | Pilot damage: 0 | EMP damage: 0 | Speed: 15000m/s | Range: 12000m.\n        /// </summary>\n        internal static string AmmoSniperHighVelocity {\n            get {\n                return ResourceManager.GetString(\"AmmoSniperHighVelocity\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to SAPHEI AMMO FOR SNIPER | Damage: 105 | Pilot damage: 0 | EMP damage: 0 | Speed: 8000m/s | Range: 11400m | Special: Semi-Armor Piercing High Explosive Incendiary.\n        /// </summary>\n        internal static string AmmoSniperSAPHEI {\n            get {\n                return ResourceManager.GetString(\"AmmoSniperSAPHEI\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to ASTEROID KILLER AMMO FOR UNIVERSAL LAUNCHER | Damage: 150 | Pilot damage: 100 | EMP damage: 0 | Speed: 5m/s | Explosion radius: 90 m | Range: 10000m | Special: Destroys a large area of mass and ore.\n        /// </summary>\n        internal static string AmmoUniversalLauncherAsteroidKiller {\n            get {\n                return ResourceManager.GetString(\"AmmoUniversalLauncherAsteroidKiller\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to DECOY FLARE AMMO FOR UNIVERSAL LAUNCHER | Speed: 100m/s | Range: 100 m | Creates a decoy flare and confuses most guided missiles.\n        /// </summary>\n        internal static string AmmoUniversalLauncherDecoyFlare {\n            get {\n                return ResourceManager.GetString(\"AmmoUniversalLauncherDecoyFlare\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to DIRECTIONAL EXPLOSIVE AMMO FOR UNIVERSAL LAUNCHER | Damage: 90 | Pilot damage: 60 | EMP damage: 0 | Speed: 5m/s | Explosion radius: 35 m | Range: 10000m | Special: Creates explosion in one direction.\n        /// </summary>\n        internal static string AmmoUniversalLauncherDirectionalExplosive {\n            get {\n                return ResourceManager.GetString(\"AmmoUniversalLauncherDirectionalExplosive\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to EMP BOMB AMMO FOR UNIVERSAL LAUNCHER | Damage: 20 | Pilot damage: 0 | EMP damage: 150 | Speed: 5m/s | Explosion radius: 100 m | Range: 10000m | Special: Can temporarily disable electrical objects.\n        /// </summary>\n        internal static string AmmoUniversalLauncherEMPBomb {\n            get {\n                return ResourceManager.GetString(\"AmmoUniversalLauncherEMPBomb\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to FLASH BOMB AMMO FOR UNIVERSAL LAUNCHER | Speed: 2m/s | Range: 100 m | Blinds pilots for a few seconds..\n        /// </summary>\n        internal static string AmmoUniversalLauncherFlashBomb {\n            get {\n                return ResourceManager.GetString(\"AmmoUniversalLauncherFlashBomb\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Gravitation bomb ammo for universal launcher.\n        /// </summary>\n        internal static string AmmoUniversalLauncherGravitationBomb {\n            get {\n                return ResourceManager.GetString(\"AmmoUniversalLauncherGravitationBomb\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to HOLOGRAM PROJECTOR AMMO FOR UNIVERSAL LAUNCHER | Speed: 2m/s | Range: 100 m | Projects a holographic view of your ship for 60 seconds and confuses most guided missiles and enemies.\n        /// </summary>\n        internal static string AmmoUniversalLauncherHologram {\n            get {\n                return ResourceManager.GetString(\"AmmoUniversalLauncherHologram\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to ILLUMINATING SHELL AMMO FOR UNIVERSAL LAUNCHER | Speed: 2m/s | Range: 100 m | Illuminates an area for 20 seconds, before burning out..\n        /// </summary>\n        internal static string AmmoUniversalLauncherIlluminatingShell {\n            get {\n                return ResourceManager.GetString(\"AmmoUniversalLauncherIlluminatingShell\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to BASIC MINE AMMO FOR UNIVERSAL LAUNCHER | Damage: 80 | Pilot damage: 0 | EMP damage: 0 | Speed: 5m/s | Explosion radius: 30 m | Range: 100m | Special: Stationary mine.\n        /// </summary>\n        internal static string AmmoUniversalLauncherMineBasic {\n            get {\n                return ResourceManager.GetString(\"AmmoUniversalLauncherMineBasic\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to BIOCHEM MINE AMMO FOR UNIVERSAL LAUNCHER | Damage: 6 | Pilot damage: 60 | EMP damage: 0 | Speed: 5m/s | Explosion radius: 20 m | Range: 10000m.\n        /// </summary>\n        internal static string AmmoUniversalLauncherMineBioChem {\n            get {\n                return ResourceManager.GetString(\"AmmoUniversalLauncherMineBioChem\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to SMART MINE AMMO FOR UNIVERSAL LAUNCHER | Damage: 60 | Pilot damage: 0 | EMP damage: 0 | Speed: 5m/s | Explosion radius: 50 m | Range: 300m | Special: Mine chasing enemy ship up to 300m with speed 5m/s.  .\n        /// </summary>\n        internal static string AmmoUniversalLauncherMineSmart {\n            get {\n                return ResourceManager.GetString(\"AmmoUniversalLauncherMineSmart\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to REMOTE BOMB AMMO FOR UNIVERSAL LAUNCHER | Damage: 120 | Pilot damage: 60 | EMP damage: 0 | Speed: 5m/s | Explosion radius: 40 m | Range: 10000m | Special: Bomb will be launched by special key.\n        /// </summary>\n        internal static string AmmoUniversalLauncherRemoteBomb {\n            get {\n                return ResourceManager.GetString(\"AmmoUniversalLauncherRemoteBomb\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to REMOTE CAMERA FOR UNIVERSAL LAUNCHER | Speed: 2m/s | Range: 100 m | Remote camera that can be stuck to walls.\n        /// </summary>\n        internal static string AmmoUniversalLauncherRemoteCamera {\n            get {\n                return ResourceManager.GetString(\"AmmoUniversalLauncherRemoteCamera\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to SMOKE BOMB CANISTER FOR UNIVERSAL LAUNCHER | Speed: 5m/s | Range: 10000 m | Generates a smoke cloud for 45 seconds..\n        /// </summary>\n        internal static string AmmoUniversalLauncherSmokeBomb {\n            get {\n                return ResourceManager.GetString(\"AmmoUniversalLauncherSmokeBomb\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to SPHERICAL EXPLOSIVE AMMO FOR UNIVERSAL LAUNCHER | Damage: 120 | Pilot damage: 50 | EMP damage: 0 | Speed: 5m/s | Explosion radius: 30 m | Range: 10000m | Special: Creates spherical area of effect..\n        /// </summary>\n        internal static string AmmoUniversalLauncherSphereExplosive {\n            get {\n                return ResourceManager.GetString(\"AmmoUniversalLauncherSphereExplosive\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to TIME BOMB AMMO FOR UNIVERSAL LAUNCHER | Damage: 100 | Pilot damage: 0 | EMP damage: 0 | Speed: 5m/s | Explosion radius: 30 m | Range: 10000m | Special: Timed bomb, explodes after time elapsed.\n        /// </summary>\n        internal static string AmmoUniversalLauncherTimeBomb {\n            get {\n                return ResourceManager.GetString(\"AmmoUniversalLauncherTimeBomb\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Analog.\n        /// </summary>\n        internal static string AnalogAxes {\n            get {\n                return ResourceManager.GetString(\"AnalogAxes\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Antiradiation medicine active.\n        /// </summary>\n        internal static string AntiradiationMedicineActive {\n            get {\n                return ResourceManager.GetString(\"AntiradiationMedicineActive\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Applying changes… please wait.\n        /// </summary>\n        internal static string ApplyingPleaseWait {\n            get {\n                return ResourceManager.GetString(\"ApplyingPleaseWait\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Arabian border.\n        /// </summary>\n        internal static string ARABIAN_BORDER {\n            get {\n                return ResourceManager.GetString(\"ARABIAN_BORDER\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Arabian Border 1 64x64x64.\n        /// </summary>\n        internal static string Arabian_Border_1 {\n            get {\n                return ResourceManager.GetString(\"Arabian_Border_1\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Arabian Border 2 64x64x64.\n        /// </summary>\n        internal static string Arabian_Border_2 {\n            get {\n                return ResourceManager.GetString(\"Arabian_Border_2\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Arabian Border 3 64x64x64.\n        /// </summary>\n        internal static string Arabian_Border_3 {\n            get {\n                return ResourceManager.GetString(\"Arabian_Border_3\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Arabian Border 4 64x64x64.\n        /// </summary>\n        internal static string Arabian_Border_4 {\n            get {\n                return ResourceManager.GetString(\"Arabian_Border_4\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Arabian Border 5 64x64x64.\n        /// </summary>\n        internal static string Arabian_Border_5 {\n            get {\n                return ResourceManager.GetString(\"Arabian_Border_5\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Arabian Border 6 64x64x64.\n        /// </summary>\n        internal static string Arabian_Border_6 {\n            get {\n                return ResourceManager.GetString(\"Arabian_Border_6\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Arabian Border 7 64x64x64.\n        /// </summary>\n        internal static string Arabian_Border_7 {\n            get {\n                return ResourceManager.GetString(\"Arabian_Border_7\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Arabian Border Arabian 128x128x128.\n        /// </summary>\n        internal static string Arabian_Border_Arabian {\n            get {\n                return ResourceManager.GetString(\"Arabian_Border_Arabian\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Help the Arabs, loot outposts\n        ///.\n        /// </summary>\n        internal static string ARABIAN_BORDER_Description {\n            get {\n                return ResourceManager.GetString(\"ARABIAN_BORDER_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Arabian Border EAC 128x128x128.\n        /// </summary>\n        internal static string Arabian_Border_EAC {\n            get {\n                return ResourceManager.GetString(\"Arabian_Border_EAC\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to New Istanbul – Arabian capital.\n        /// </summary>\n        internal static string ARABIAN_CAPITAL {\n            get {\n                return ResourceManager.GetString(\"ARABIAN_CAPITAL\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to New Istanbul – Arabian capital\n        ///.\n        /// </summary>\n        internal static string ARABIAN_CAPITAL_Description {\n            get {\n                return ResourceManager.GetString(\"ARABIAN_CAPITAL_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Are you sure you want to exit?.\n        /// </summary>\n        internal static string AreYouSureYouWantToExit {\n            get {\n                return ResourceManager.GetString(\"AreYouSureYouWantToExit\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Are you sure you want to log out? You will have \n        ///to re-enter your username and password on next login..\n        /// </summary>\n        internal static string AreYouSureYouWantToLogout {\n            get {\n                return ResourceManager.GetString(\"AreYouSureYouWantToLogout\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Armor.\n        /// </summary>\n        internal static string Armor {\n            get {\n                return ResourceManager.GetString(\"Armor\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Armor hull.\n        /// </summary>\n        internal static string Armor_hull {\n            get {\n                return ResourceManager.GetString(\"Armor_hull\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Artifact.\n        /// </summary>\n        internal static string Artifact {\n            get {\n                return ResourceManager.GetString(\"Artifact\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Dual 16:10.\n        /// </summary>\n        internal static string AspectRatio_Short_Dual_16_10 {\n            get {\n                return ResourceManager.GetString(\"AspectRatio_Short_Dual_16_10\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Dual 16:9.\n        /// </summary>\n        internal static string AspectRatio_Short_Dual_16_9 {\n            get {\n                return ResourceManager.GetString(\"AspectRatio_Short_Dual_16_9\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Dual 4:3.\n        /// </summary>\n        internal static string AspectRatio_Short_Dual_4_3 {\n            get {\n                return ResourceManager.GetString(\"AspectRatio_Short_Dual_4_3\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to 16:10.\n        /// </summary>\n        internal static string AspectRatio_Short_Normal_16_10 {\n            get {\n                return ResourceManager.GetString(\"AspectRatio_Short_Normal_16_10\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to 16:9.\n        /// </summary>\n        internal static string AspectRatio_Short_Normal_16_9 {\n            get {\n                return ResourceManager.GetString(\"AspectRatio_Short_Normal_16_9\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to 4:3.\n        /// </summary>\n        internal static string AspectRatio_Short_Normal_4_3 {\n            get {\n                return ResourceManager.GetString(\"AspectRatio_Short_Normal_4_3\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Triple 16:10.\n        /// </summary>\n        internal static string AspectRatio_Short_Triple_16_10 {\n            get {\n                return ResourceManager.GetString(\"AspectRatio_Short_Triple_16_10\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Triple 16:9.\n        /// </summary>\n        internal static string AspectRatio_Short_Triple_16_9 {\n            get {\n                return ResourceManager.GetString(\"AspectRatio_Short_Triple_16_9\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Triple 4:3.\n        /// </summary>\n        internal static string AspectRatio_Short_Triple_4_3 {\n            get {\n                return ResourceManager.GetString(\"AspectRatio_Short_Triple_4_3\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Dual Head normal 4:3.\n        /// </summary>\n        internal static string AspectRatioDualHeadNormal_4_3 {\n            get {\n                return ResourceManager.GetString(\"AspectRatioDualHeadNormal_4_3\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Dual Head wide 16:10.\n        /// </summary>\n        internal static string AspectRatioDualHeadWide_16_10 {\n            get {\n                return ResourceManager.GetString(\"AspectRatioDualHeadWide_16_10\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Dual Head wide 16:9.\n        /// </summary>\n        internal static string AspectRatioDualHeadWide_16_9 {\n            get {\n                return ResourceManager.GetString(\"AspectRatioDualHeadWide_16_9\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Normal 4:3.\n        /// </summary>\n        internal static string AspectRatioNormal_4_3 {\n            get {\n                return ResourceManager.GetString(\"AspectRatioNormal_4_3\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Triple Head normal 4:3.\n        /// </summary>\n        internal static string AspectRatioTripleHeadNormal_4_3 {\n            get {\n                return ResourceManager.GetString(\"AspectRatioTripleHeadNormal_4_3\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Triple Head wide 16:10.\n        /// </summary>\n        internal static string AspectRatioTripleHeadWide_16_10 {\n            get {\n                return ResourceManager.GetString(\"AspectRatioTripleHeadWide_16_10\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Triple Head wide 16:9.\n        /// </summary>\n        internal static string AspectRatioTripleHeadWide_16_9 {\n            get {\n                return ResourceManager.GetString(\"AspectRatioTripleHeadWide_16_9\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Wide 16:10.\n        /// </summary>\n        internal static string AspectRatioWide_16_10 {\n            get {\n                return ResourceManager.GetString(\"AspectRatioWide_16_10\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Wide 16:9.\n        /// </summary>\n        internal static string AspectRatioWide_16_9 {\n            get {\n                return ResourceManager.GetString(\"AspectRatioWide_16_9\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Please press a button\n        ///on the joystick/gamepad.\n        /// </summary>\n        internal static string AssignControlJoystick {\n            get {\n                return ResourceManager.GetString(\"AssignControlJoystick\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Please move an analog axis\n        ///on the joystick/gamepad.\n        /// </summary>\n        internal static string AssignControlJoystickAxis {\n            get {\n                return ResourceManager.GetString(\"AssignControlJoystickAxis\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Please press a key.\n        /// </summary>\n        internal static string AssignControlKeyboard {\n            get {\n                return ResourceManager.GetString(\"AssignControlKeyboard\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Please click a mouse button.\n        /// </summary>\n        internal static string AssignControlMouse {\n            get {\n                return ResourceManager.GetString(\"AssignControlMouse\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Asteroid.\n        /// </summary>\n        internal static string Asteroid {\n            get {\n                return ResourceManager.GetString(\"Asteroid\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Asteroid complex.\n        /// </summary>\n        internal static string ASTEROID_COMPLEX {\n            get {\n                return ResourceManager.GetString(\"ASTEROID_COMPLEX\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Asteroid complex\n        ///.\n        /// </summary>\n        internal static string ASTEROID_COMPLEX_Description {\n            get {\n                return ResourceManager.GetString(\"ASTEROID_COMPLEX_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Asteroid research field.\n        /// </summary>\n        internal static string ASTEROID_FIELD {\n            get {\n                return ResourceManager.GetString(\"ASTEROID_FIELD\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Asteroid research field\n        ///.\n        /// </summary>\n        internal static string ASTEROID_FIELD_Description {\n            get {\n                return ResourceManager.GetString(\"ASTEROID_FIELD_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Rift.\n        /// </summary>\n        internal static string Asteroid_Rift {\n            get {\n                return ResourceManager.GetString(\"Asteroid_Rift\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Rift Base Bigger.\n        /// </summary>\n        internal static string Asteroid_Rift_base_bigger {\n            get {\n                return ResourceManager.GetString(\"Asteroid_Rift_base_bigger\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Rift Base Smaller.\n        /// </summary>\n        internal static string Asteroid_Rift_base_smaller {\n            get {\n                return ResourceManager.GetString(\"Asteroid_Rift_base_smaller\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Rift small 1.\n        /// </summary>\n        internal static string Asteroid_Rift_small_1 {\n            get {\n                return ResourceManager.GetString(\"Asteroid_Rift_small_1\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Rift small 2.\n        /// </summary>\n        internal static string Asteroid_Rift_small_2 {\n            get {\n                return ResourceManager.GetString(\"Asteroid_Rift_small_2\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Asteroid.\n        /// </summary>\n        internal static string AsteroidContextMenuCaption {\n            get {\n                return ResourceManager.GetString(\"AsteroidContextMenuCaption\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Asteroid killer.\n        /// </summary>\n        internal static string AsteroidKillerHud {\n            get {\n                return ResourceManager.GetString(\"AsteroidKillerHud\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Choose material.\n        /// </summary>\n        internal static string AsteroidMaterial {\n            get {\n                return ResourceManager.GetString(\"AsteroidMaterial\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Choose asteroid.\n        /// </summary>\n        internal static string AsteroidName {\n            get {\n                return ResourceManager.GetString(\"AsteroidName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Asteroid with space station story sector start.\n        /// </summary>\n        internal static string AsteroidWithSpaceStationStartStorySector {\n            get {\n                return ResourceManager.GetString(\"AsteroidWithSpaceStationStartStorySector\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Attached to camera.\n        /// </summary>\n        internal static string AttachedContextMenuCaption {\n            get {\n                return ResourceManager.GetString(\"AttachedContextMenuCaption\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Attach to camera.\n        /// </summary>\n        internal static string AttachToCamera {\n            get {\n                return ResourceManager.GetString(\"AttachToCamera\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Press RMB on selected objects to attach them to spectator.\n        /// </summary>\n        internal static string AttachToCameraTooltip {\n            get {\n                return ResourceManager.GetString(\"AttachToCameraTooltip\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Attach voxel hand.\n        /// </summary>\n        internal static string AttachVoxelHand {\n            get {\n                return ResourceManager.GetString(\"AttachVoxelHand\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Audio.\n        /// </summary>\n        internal static string Audio {\n            get {\n                return ResourceManager.GetString(\"Audio\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Audio options.\n        /// </summary>\n        internal static string AudioOptions {\n            get {\n                return ResourceManager.GetString(\"AudioOptions\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Gatling gun.\n        /// </summary>\n        internal static string Autocannon {\n            get {\n                return ResourceManager.GetString(\"Autocannon\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Autodestruct in: .\n        /// </summary>\n        internal static string AutodestructIn {\n            get {\n                return ResourceManager.GetString(\"AutodestructIn\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Toggle autoleveling.\n        /// </summary>\n        internal static string AutoLevel {\n            get {\n                return ResourceManager.GetString(\"AutoLevel\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Auto-login.\n        /// </summary>\n        internal static string Autologin {\n            get {\n                return ResourceManager.GetString(\"Autologin\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Autonomous outpost.\n        /// </summary>\n        internal static string AUTONOMOUS_OUTPOST {\n            get {\n                return ResourceManager.GetString(\"AUTONOMOUS_OUTPOST\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Autonomous outpost\n        ///.\n        /// </summary>\n        internal static string AUTONOMOUS_OUTPOST_Description {\n            get {\n                return ResourceManager.GetString(\"AUTONOMOUS_OUTPOST_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to This feature is available only for administrators.\n        /// </summary>\n        internal static string AvailableOnlyForAdministrators {\n            get {\n                return ResourceManager.GetString(\"AvailableOnlyForAdministrators\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Available submissions.\n        /// </summary>\n        internal static string AvailableSubmissions {\n            get {\n                return ResourceManager.GetString(\"AvailableSubmissions\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to X.\n        /// </summary>\n        internal static string AxisX {\n            get {\n                return ResourceManager.GetString(\"AxisX\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Y.\n        /// </summary>\n        internal static string AxisY {\n            get {\n                return ResourceManager.GetString(\"AxisY\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Z.\n        /// </summary>\n        internal static string AxisZ {\n            get {\n                return ResourceManager.GetString(\"AxisZ\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Back.\n        /// </summary>\n        internal static string Back {\n            get {\n                return ResourceManager.GetString(\"Back\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Backsp..\n        /// </summary>\n        internal static string Backspace {\n            get {\n                return ResourceManager.GetString(\"Backspace\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Back Turret.\n        /// </summary>\n        internal static string BackTurret {\n            get {\n                return ResourceManager.GetString(\"BackTurret\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Bad sector identifier.\n        /// </summary>\n        internal static string BadSectorIdentifierInput {\n            get {\n                return ResourceManager.GetString(\"BadSectorIdentifierInput\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Bank node.\n        /// </summary>\n        internal static string BankNode {\n            get {\n                return ResourceManager.GetString(\"BankNode\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fuel Barrel 1.\n        /// </summary>\n        internal static string Barrel_prop_A {\n            get {\n                return ResourceManager.GetString(\"Barrel_prop_A\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Biohazzard Barrel 3.\n        /// </summary>\n        internal static string Barrel_prop_B {\n            get {\n                return ResourceManager.GetString(\"Barrel_prop_B\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Explosive Barrel 2.\n        /// </summary>\n        internal static string Barrel_prop_C {\n            get {\n                return ResourceManager.GetString(\"Barrel_prop_C\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Barrel prop D.\n        /// </summary>\n        internal static string Barrel_prop_D {\n            get {\n                return ResourceManager.GetString(\"Barrel_prop_D\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Barrel prop E.\n        /// </summary>\n        internal static string Barrel_prop_E {\n            get {\n                return ResourceManager.GetString(\"Barrel_prop_E\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Barths moon base.\n        /// </summary>\n        internal static string Barths_moon_base {\n            get {\n                return ResourceManager.GetString(\"Barths_moon_base\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Barths_moon_camp.\n        /// </summary>\n        internal static string Barths_moon_camp {\n            get {\n                return ResourceManager.GetString(\"Barths_moon_camp\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Barth’s moon.\n        /// </summary>\n        internal static string BARTHS_MOON_CONVINCE {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_CONVINCE\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Convince Thomas Barth to join your cause\n        ///.\n        /// </summary>\n        internal static string BARTHS_MOON_CONVINCE_Description {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_CONVINCE_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string BARTHS_MOON_CONVINCE_DESTROY_GENERATOR_Description {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_CONVINCE_DESTROY_GENERATOR_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Kill all enemies and disable the base.\n        /// </summary>\n        internal static string BARTHS_MOON_CONVINCE_DESTROY_GENERATOR_Name {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_CONVINCE_DESTROY_GENERATOR_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string BARTHS_MOON_CONVINCE_DESTROY_SHIP_Description {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_CONVINCE_DESTROY_SHIP_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Destroy mothership.\n        /// </summary>\n        internal static string BARTHS_MOON_CONVINCE_DESTROY_SHIP_Name {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_CONVINCE_DESTROY_SHIP_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string BARTHS_MOON_CONVINCE_FIND_TRANSMITTER_Description {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_CONVINCE_FIND_TRANSMITTER_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Get reward.\n        /// </summary>\n        internal static string BARTHS_MOON_CONVINCE_FIND_TRANSMITTER_Name {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_CONVINCE_FIND_TRANSMITTER_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string BARTHS_MOON_CONVINCE_FLY_TO_ENEMY_BASE_Description {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_CONVINCE_FLY_TO_ENEMY_BASE_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fly to the enemy base.\n        /// </summary>\n        internal static string BARTHS_MOON_CONVINCE_FLY_TO_ENEMY_BASE_Name {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_CONVINCE_FLY_TO_ENEMY_BASE_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string BARTHS_MOON_CONVINCE_MEET_THOMAS_BART_Description {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_CONVINCE_MEET_THOMAS_BART_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Meet Thomas Barth in his lab.\n        /// </summary>\n        internal static string BARTHS_MOON_CONVINCE_MEET_THOMAS_BART_Name {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_CONVINCE_MEET_THOMAS_BART_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string BARTHS_MOON_CONVINCE_RETURN_BACK_TO_MADELYN_Description {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_CONVINCE_RETURN_BACK_TO_MADELYN_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Return to Sapho.\n        /// </summary>\n        internal static string BARTHS_MOON_CONVINCE_RETURN_BACK_TO_MADELYN_Name {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_CONVINCE_RETURN_BACK_TO_MADELYN_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string BARTHS_MOON_CONVINCE_TALK_WITH_THOMAS_BART_Description {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_CONVINCE_TALK_WITH_THOMAS_BART_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Talk to Thomas Barth.\n        /// </summary>\n        internal static string BARTHS_MOON_CONVINCE_TALK_WITH_THOMAS_BART_Name {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_CONVINCE_TALK_WITH_THOMAS_BART_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to barths_moon_lab1.\n        /// </summary>\n        internal static string barths_moon_lab1 {\n            get {\n                return ResourceManager.GetString(\"barths_moon_lab1\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to barths_moon_lab2.\n        /// </summary>\n        internal static string barths_moon_lab2 {\n            get {\n                return ResourceManager.GetString(\"barths_moon_lab2\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Barth’s moon.\n        /// </summary>\n        internal static string BARTHS_MOON_PLANT {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_PLANT\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string BARTHS_MOON_PLANT_BUILD_DEFENCE_LINE_Description {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_PLANT_BUILD_DEFENCE_LINE_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Build defense.\n        /// </summary>\n        internal static string BARTHS_MOON_PLANT_BUILD_DEFENCE_LINE_Name {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_PLANT_BUILD_DEFENCE_LINE_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string BARTHS_MOON_PLANT_BUILD_PLANT_Description {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_PLANT_BUILD_PLANT_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Construct manufacturing plant.\n        /// </summary>\n        internal static string BARTHS_MOON_PLANT_BUILD_PLANT_Name {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_PLANT_BUILD_PLANT_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string BARTHS_MOON_PLANT_CONSTRUCT_DETECTORS_Description {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_PLANT_CONSTRUCT_DETECTORS_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Construct detectors.\n        /// </summary>\n        internal static string BARTHS_MOON_PLANT_CONSTRUCT_DETECTORS_Name {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_PLANT_CONSTRUCT_DETECTORS_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string BARTHS_MOON_PLANT_DEFENCE_Description {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_PLANT_DEFENCE_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Take turrets.\n        /// </summary>\n        internal static string BARTHS_MOON_PLANT_DEFENCE_Name {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_PLANT_DEFENCE_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Plant the device\n        ///.\n        /// </summary>\n        internal static string BARTHS_MOON_PLANT_Description {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_PLANT_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string BARTHS_MOON_PLANT_DESTROY_GENERATORS_Description {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_PLANT_DESTROY_GENERATORS_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Destroy mothership generators.\n        /// </summary>\n        internal static string BARTHS_MOON_PLANT_DESTROY_GENERATORS_Name {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_PLANT_DESTROY_GENERATORS_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string BARTHS_MOON_PLANT_ENEMY_Description {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_PLANT_ENEMY_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Prepare for the last stand.\n        /// </summary>\n        internal static string BARTHS_MOON_PLANT_ENEMY_Name {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_PLANT_ENEMY_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string BARTHS_MOON_PLANT_GET_NEEDED_COMPONENTS_Description {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_PLANT_GET_NEEDED_COMPONENTS_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Get components.\n        /// </summary>\n        internal static string BARTHS_MOON_PLANT_GET_NEEDED_COMPONENTS_Name {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_PLANT_GET_NEEDED_COMPONENTS_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string BARTHS_MOON_PLANT_KILL_ATTACKERS_Description {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_PLANT_KILL_ATTACKERS_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Kill attackers.\n        /// </summary>\n        internal static string BARTHS_MOON_PLANT_KILL_ATTACKERS_Name {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_PLANT_KILL_ATTACKERS_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string BARTHS_MOON_PLANT_PROTECT_BARTH_Description {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_PLANT_PROTECT_BARTH_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Protect Thomas Barth.\n        /// </summary>\n        internal static string BARTHS_MOON_PLANT_PROTECT_BARTH_Name {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_PLANT_PROTECT_BARTH_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string BARTHS_MOON_PLANT_PROTECT_MADELYN_Description {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_PLANT_PROTECT_MADELYN_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Protect Sapho from suicide ships.\n        /// </summary>\n        internal static string BARTHS_MOON_PLANT_PROTECT_MADELYN_Name {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_PLANT_PROTECT_MADELYN_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string BARTHS_MOON_PLANT_SAVE_BARTH_Description {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_PLANT_SAVE_BARTH_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Save Thomas Barth.\n        /// </summary>\n        internal static string BARTHS_MOON_PLANT_SAVE_BARTH_Name {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_PLANT_SAVE_BARTH_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string BARTHS_MOON_PLANT_TALK_BARTH_Description {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_PLANT_TALK_BARTH_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Talk to Thomas Barth.\n        /// </summary>\n        internal static string BARTHS_MOON_PLANT_TALK_BARTH_Name {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_PLANT_TALK_BARTH_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Barths moon satelite.\n        /// </summary>\n        internal static string Barths_moon_satelite {\n            get {\n                return ResourceManager.GetString(\"Barths_moon_satelite\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Located in the distant reaches of the Solar System, far beyond Jupiter’s belt, Barth’s Moon is \n        ///a small asteroid base. The hermit-scientist Thomas Barth makes his home in the solitude of its \n        ///frozen wastelands. Well off the path of all known trade routes, local traffic is generally\n        ///limited to random travelers, lost merchants, and wandering pirates and raiders..\n        /// </summary>\n        internal static string BARTHS_MOON_SectorDescription {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_SectorDescription\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to BARTH’S MOON.\n        /// </summary>\n        internal static string BARTHS_MOON_SectorName {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_SectorName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Barth’s moon.\n        /// </summary>\n        internal static string BARTHS_MOON_TRANSMITTER {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_TRANSMITTER\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string BARTHS_MOON_TRANSMITTER_BUILD_TRANSMITTER_Description {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_TRANSMITTER_BUILD_TRANSMITTER_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Build the transmitter.\n        /// </summary>\n        internal static string BARTHS_MOON_TRANSMITTER_BUILD_TRANSMITTER_Name {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_TRANSMITTER_BUILD_TRANSMITTER_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Barth’s moon\n        ///.\n        /// </summary>\n        internal static string BARTHS_MOON_TRANSMITTER_Description {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_TRANSMITTER_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string BARTHS_MOON_TRANSMITTER_DESTROY_COMPUTER_Description {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_TRANSMITTER_DESTROY_COMPUTER_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Destroy the AI.\n        /// </summary>\n        internal static string BARTHS_MOON_TRANSMITTER_DESTROY_COMPUTER_Name {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_TRANSMITTER_DESTROY_COMPUTER_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string BARTHS_MOON_TRANSMITTER_DESTROY_LAB_Description {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_TRANSMITTER_DESTROY_LAB_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Dig to reach the labs.\n        /// </summary>\n        internal static string BARTHS_MOON_TRANSMITTER_DESTROY_LAB_Name {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_TRANSMITTER_DESTROY_LAB_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string BARTHS_MOON_TRANSMITTER_DOWNLOAD_DATA1_Description {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_TRANSMITTER_DOWNLOAD_DATA1_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Download data from all hubs 1/4.\n        /// </summary>\n        internal static string BARTHS_MOON_TRANSMITTER_DOWNLOAD_DATA1_Name {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_TRANSMITTER_DOWNLOAD_DATA1_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string BARTHS_MOON_TRANSMITTER_DOWNLOAD_DATA2_Description {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_TRANSMITTER_DOWNLOAD_DATA2_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Download data from all hubs 2/4.\n        /// </summary>\n        internal static string BARTHS_MOON_TRANSMITTER_DOWNLOAD_DATA2_Name {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_TRANSMITTER_DOWNLOAD_DATA2_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string BARTHS_MOON_TRANSMITTER_DOWNLOAD_DATA3_Description {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_TRANSMITTER_DOWNLOAD_DATA3_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Download data from all hubs 3/4.\n        /// </summary>\n        internal static string BARTHS_MOON_TRANSMITTER_DOWNLOAD_DATA3_Name {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_TRANSMITTER_DOWNLOAD_DATA3_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string BARTHS_MOON_TRANSMITTER_DOWNLOAD_DATA4_Description {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_TRANSMITTER_DOWNLOAD_DATA4_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Download data from all hubs 4/4.\n        /// </summary>\n        internal static string BARTHS_MOON_TRANSMITTER_DOWNLOAD_DATA4_Name {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_TRANSMITTER_DOWNLOAD_DATA4_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string BARTHS_MOON_TRANSMITTER_DRONES_Description {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_TRANSMITTER_DRONES_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Release a drone.\n        /// </summary>\n        internal static string BARTHS_MOON_TRANSMITTER_DRONES_Name {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_TRANSMITTER_DRONES_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string BARTHS_MOON_TRANSMITTER_ENABLE_GENERATOR_Description {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_TRANSMITTER_ENABLE_GENERATOR_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string BARTHS_MOON_TRANSMITTER_ENABLE_GENERATOR_DRONE1_Description {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_TRANSMITTER_ENABLE_GENERATOR_DRONE1_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Start generator with drone.\n        /// </summary>\n        internal static string BARTHS_MOON_TRANSMITTER_ENABLE_GENERATOR_DRONE1_Name {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_TRANSMITTER_ENABLE_GENERATOR_DRONE1_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string BARTHS_MOON_TRANSMITTER_ENABLE_GENERATOR_DRONE2_Description {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_TRANSMITTER_ENABLE_GENERATOR_DRONE2_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Start second generator with drone.\n        /// </summary>\n        internal static string BARTHS_MOON_TRANSMITTER_ENABLE_GENERATOR_DRONE2_Name {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_TRANSMITTER_ENABLE_GENERATOR_DRONE2_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Turn on the backup.\n        /// </summary>\n        internal static string BARTHS_MOON_TRANSMITTER_ENABLE_GENERATOR_Name {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_TRANSMITTER_ENABLE_GENERATOR_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string BARTHS_MOON_TRANSMITTER_ENTER_MAINLAB_Description {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_TRANSMITTER_ENTER_MAINLAB_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Enter the main lab.\n        /// </summary>\n        internal static string BARTHS_MOON_TRANSMITTER_ENTER_MAINLAB_Name {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_TRANSMITTER_ENTER_MAINLAB_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string BARTHS_MOON_TRANSMITTER_FAN_Description {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_TRANSMITTER_FAN_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Find a vent entrance.\n        /// </summary>\n        internal static string BARTHS_MOON_TRANSMITTER_FAN_Name {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_TRANSMITTER_FAN_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string BARTHS_MOON_TRANSMITTER_FIND_PART3_Description {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_TRANSMITTER_FIND_PART3_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Collect needed parts.\n        /// </summary>\n        internal static string BARTHS_MOON_TRANSMITTER_FIND_PART3_Name {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_TRANSMITTER_FIND_PART3_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string BARTHS_MOON_TRANSMITTER_FIND_WAY_OUT_Description {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_TRANSMITTER_FIND_WAY_OUT_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Leave the labs.\n        /// </summary>\n        internal static string BARTHS_MOON_TRANSMITTER_FIND_WAY_OUT_Name {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_TRANSMITTER_FIND_WAY_OUT_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string BARTHS_MOON_TRANSMITTER_FIND_WAY_TO_MOON_Description {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_TRANSMITTER_FIND_WAY_TO_MOON_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Follow the path to Broken Moon.\n        /// </summary>\n        internal static string BARTHS_MOON_TRANSMITTER_FIND_WAY_TO_MOON_Name {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_TRANSMITTER_FIND_WAY_TO_MOON_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string BARTHS_MOON_TRANSMITTER_GET_ITEMS_Description {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_TRANSMITTER_GET_ITEMS_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Find drones and hacking tools.\n        /// </summary>\n        internal static string BARTHS_MOON_TRANSMITTER_GET_ITEMS_Name {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_TRANSMITTER_GET_ITEMS_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string BARTHS_MOON_TRANSMITTER_LOOK_HUBS_Description {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_TRANSMITTER_LOOK_HUBS_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Enter hub and check generators.\n        /// </summary>\n        internal static string BARTHS_MOON_TRANSMITTER_LOOK_HUBS_Name {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_TRANSMITTER_LOOK_HUBS_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string BARTHS_MOON_TRANSMITTER_LOOK_HUBS2_Description {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_TRANSMITTER_LOOK_HUBS2_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Enter the hub in the lab control room.\n        /// </summary>\n        internal static string BARTHS_MOON_TRANSMITTER_LOOK_HUBS2_Name {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_TRANSMITTER_LOOK_HUBS2_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string BARTHS_MOON_TRANSMITTER_MEET_BARTH_Description {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_TRANSMITTER_MEET_BARTH_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Meet Thomas Barth in his lab.\n        /// </summary>\n        internal static string BARTHS_MOON_TRANSMITTER_MEET_BARTH_Name {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_TRANSMITTER_MEET_BARTH_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string BARTHS_MOON_TRANSMITTER_RETURN_BACK_TO_MADELYN_Description {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_TRANSMITTER_RETURN_BACK_TO_MADELYN_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Return to Sapho.\n        /// </summary>\n        internal static string BARTHS_MOON_TRANSMITTER_RETURN_BACK_TO_MADELYN_Name {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_TRANSMITTER_RETURN_BACK_TO_MADELYN_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string BARTHS_MOON_TRANSMITTER_TALK_TO_BARTH_Description {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_TRANSMITTER_TALK_TO_BARTH_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Talk to Thomas Barth.\n        /// </summary>\n        internal static string BARTHS_MOON_TRANSMITTER_TALK_TO_BARTH_Name {\n            get {\n                return ResourceManager.GetString(\"BARTHS_MOON_TRANSMITTER_TALK_TO_BARTH_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Base Generator.\n        /// </summary>\n        internal static string BaseGenerator {\n            get {\n                return ResourceManager.GetString(\"BaseGenerator\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to BASIC ARMOR | Projectile/explosion damage reduction: 30% | Solar wind damage reduction: 0%.\n        /// </summary>\n        internal static string BasicArmor {\n            get {\n                return ResourceManager.GetString(\"BasicArmor\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Biofacility.\n        /// </summary>\n        internal static string BIOFACILITY {\n            get {\n                return ResourceManager.GetString(\"BIOFACILITY\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Biofacility\n        ///.\n        /// </summary>\n        internal static string BIOFACILITY_Description {\n            get {\n                return ResourceManager.GetString(\"BIOFACILITY_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Bioresearch asteroid 256.\n        /// </summary>\n        internal static string Bioresearch {\n            get {\n                return ResourceManager.GetString(\"Bioresearch\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string Blank {\n            get {\n                return ResourceManager.GetString(\"Blank\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Blondi.\n        /// </summary>\n        internal static string Blondi {\n            get {\n                return ResourceManager.GetString(\"Blondi\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Blue.\n        /// </summary>\n        internal static string Blue {\n            get {\n                return ResourceManager.GetString(\"Blue\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Advanced construction kit.\n        /// </summary>\n        internal static string BlueprintAdvancedConstructionKit {\n            get {\n                return ResourceManager.GetString(\"BlueprintAdvancedConstructionKit\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Basic construction kit.\n        /// </summary>\n        internal static string BlueprintBasicConstructionKit {\n            get {\n                return ResourceManager.GetString(\"BlueprintBasicConstructionKit\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fortification kit.\n        /// </summary>\n        internal static string BlueprintFortificationKit {\n            get {\n                return ResourceManager.GetString(\"BlueprintFortificationKit\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Honorable kit.\n        /// </summary>\n        internal static string BlueprintHonorableKit {\n            get {\n                return ResourceManager.GetString(\"BlueprintHonorableKit\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Superior construction kit.\n        /// </summary>\n        internal static string BlueprintSuperiorConstructionKit {\n            get {\n                return ResourceManager.GetString(\"BlueprintSuperiorConstructionKit\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Utilities kit.\n        /// </summary>\n        internal static string BlueprintUtilitiesKit {\n            get {\n                return ResourceManager.GetString(\"BlueprintUtilitiesKit\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Weapons kit.\n        /// </summary>\n        internal static string BlueprintWeaponKit {\n            get {\n                return ResourceManager.GetString(\"BlueprintWeaponKit\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Boarding in progress.\n        /// </summary>\n        internal static string BoardingInProgress {\n            get {\n                return ResourceManager.GetString(\"BoardingInProgress\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Bomb.\n        /// </summary>\n        internal static string Bomb {\n            get {\n                return ResourceManager.GetString(\"Bomb\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Bottom Turret.\n        /// </summary>\n        internal static string BottomTurret {\n            get {\n                return ResourceManager.GetString(\"BottomTurret\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to [Can build:{0}] [Built: {1}] [In queue: {2}] [State:{3}%].\n        /// </summary>\n        internal static string BuildingInformationWhenBuilding {\n            get {\n                return ResourceManager.GetString(\"BuildingInformationWhenBuilding\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to [Can build:{0}] [Built: {1}] [In queue: {2}].\n        /// </summary>\n        internal static string BuildingInformationWhenNotBuilding {\n            get {\n                return ResourceManager.GetString(\"BuildingInformationWhenNotBuilding\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Building in progress.\n        /// </summary>\n        internal static string BuildingInProgress {\n            get {\n                return ResourceManager.GetString(\"BuildingInProgress\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Building requirements.\n        /// </summary>\n        internal static string BuildingRequirements {\n            get {\n                return ResourceManager.GetString(\"BuildingRequirements\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Build turret.\n        /// </summary>\n        internal static string BuildTurret {\n            get {\n                return ResourceManager.GetString(\"BuildTurret\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Beams.\n        /// </summary>\n        internal static string buildTypeBeam {\n            get {\n                return ResourceManager.GetString(\"buildTypeBeam\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Connections.\n        /// </summary>\n        internal static string buildTypeConnection {\n            get {\n                return ResourceManager.GetString(\"buildTypeConnection\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Custom.\n        /// </summary>\n        internal static string buildTypeCustom {\n            get {\n                return ResourceManager.GetString(\"buildTypeCustom\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Details.\n        /// </summary>\n        internal static string buildTypeDetail {\n            get {\n                return ResourceManager.GetString(\"buildTypeDetail\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Modules.\n        /// </summary>\n        internal static string buildTypeModule {\n            get {\n                return ResourceManager.GetString(\"buildTypeModule\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Shells.\n        /// </summary>\n        internal static string buildTypePanel {\n            get {\n                return ResourceManager.GetString(\"buildTypePanel\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Don’t save.\n        /// </summary>\n        internal static string ButtonContinueWithoutSaving {\n            get {\n                return ResourceManager.GetString(\"ButtonContinueWithoutSaving\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Retry.\n        /// </summary>\n        internal static string ButtonRetry {\n            get {\n                return ResourceManager.GetString(\"ButtonRetry\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Buy for .\n        /// </summary>\n        internal static string BuyFor {\n            get {\n                return ResourceManager.GetString(\"BuyFor\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cable corner 25m.\n        /// </summary>\n        internal static string Cable_corner_25m {\n            get {\n                return ResourceManager.GetString(\"Cable_corner_25m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cable S 45m.\n        /// </summary>\n        internal static string Cable_S_45m {\n            get {\n                return ResourceManager.GetString(\"Cable_S_45m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cable straight 180.\n        /// </summary>\n        internal static string Cable_straight_180 {\n            get {\n                return ResourceManager.GetString(\"Cable_straight_180\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cable straight 45.\n        /// </summary>\n        internal static string Cable_straight_45 {\n            get {\n                return ResourceManager.GetString(\"Cable_straight_45\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cable straight 90.\n        /// </summary>\n        internal static string Cable_straight_90 {\n            get {\n                return ResourceManager.GetString(\"Cable_straight_90\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Camera.\n        /// </summary>\n        internal static string Camera {\n            get {\n                return ResourceManager.GetString(\"Camera\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Camera HUB.\n        /// </summary>\n        internal static string CameraHUB {\n            get {\n                return ResourceManager.GetString(\"CameraHUB\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Campaign completed.\n        /// </summary>\n        internal static string CampaignIsCompleted {\n            get {\n                return ResourceManager.GetString(\"CampaignIsCompleted\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cancel.\n        /// </summary>\n        internal static string Cancel {\n            get {\n                return ResourceManager.GetString(\"Cancel\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to CannonBall Capsule 1.\n        /// </summary>\n        internal static string CannonBall_Capsule_1 {\n            get {\n                return ResourceManager.GetString(\"CannonBall_Capsule_1\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to CANNOT ASSIGN CONTROL.\n        /// </summary>\n        internal static string CanNotAssignControl {\n            get {\n                return ResourceManager.GetString(\"CanNotAssignControl\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cannot copy because the maximum voxel shape count was reached.\n        /// </summary>\n        internal static string CannotCopyBecauseMaxVoxelShapesReached {\n            get {\n                return ResourceManager.GetString(\"CannotCopyBecauseMaxVoxelShapesReached\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You cannot copy because you don’t have enough objects stored..\n        /// </summary>\n        internal static string CannotCopyBecauseYouDontHaveEnoughObjectsStored {\n            get {\n                return ResourceManager.GetString(\"CannotCopyBecauseYouDontHaveEnoughObjectsStored\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cannot delete a template that is already saved on the server!.\n        /// </summary>\n        internal static string CannotDeleteSavedTemplate {\n            get {\n                return ResourceManager.GetString(\"CannotDeleteSavedTemplate\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sorry, you can’t log in. You don’t have permission to access the development build. \n        ///More info: www.MinerWars.com/Troubleshooting.\n        /// </summary>\n        internal static string CantLoginAccessRestrictedDevelop {\n            get {\n                return ResourceManager.GetString(\"CantLoginAccessRestrictedDevelop\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sorry, you can’t log in. You don’t have permission to access the test build. \n        ///More info: www.MinerWars.com/Troubleshooting.\n        /// </summary>\n        internal static string CantLoginAccessRestrictedTest {\n            get {\n                return ResourceManager.GetString(\"CantLoginAccessRestrictedTest\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sorry, you can’t log in. This version of Miner Wars is outdated. A newer version of Miner Wars \n        ///is available. Please run the updater or visit www.minerwars.com for the latest version..\n        /// </summary>\n        internal static string CantLoginClientVersionIsWrong {\n            get {\n                return ResourceManager.GetString(\"CantLoginClientVersionIsWrong\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Please enter a username and password..\n        /// </summary>\n        internal static string CantLoginEmptyUsernameOrPassword {\n            get {\n                return ResourceManager.GetString(\"CantLoginEmptyUsernameOrPassword\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sorry, you can’t log in. The username is already in use. If your connection has \n        ///been terminated, please wait 90 seconds and then login again..\n        /// </summary>\n        internal static string CantLoginPlayerAlreadyLoggedIn {\n            get {\n                return ResourceManager.GetString(\"CantLoginPlayerAlreadyLoggedIn\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sorry, you can’t log in. Wrong username or password, but this \n        ///may be caused by the difference between public and test builds. \n        ///More info: www.MinerWars.com/Troubleshooting.\n        /// </summary>\n        internal static string CantLoginWrongPlayerNameOrPassword {\n            get {\n                return ResourceManager.GetString(\"CantLoginWrongPlayerNameOrPassword\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sorry, you can’t log in. The username and/or password is incorrect. Please try again..\n        /// </summary>\n        internal static string CantLoginWrongPlayerNameOrPasswordPublic {\n            get {\n                return ResourceManager.GetString(\"CantLoginWrongPlayerNameOrPasswordPublic\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sorry, you can’t register. The server is not accessible. \n        ///Please check your firewall settings..\n        /// </summary>\n        internal static string CantRegisterServerIsUnavailable {\n            get {\n                return ResourceManager.GetString(\"CantRegisterServerIsUnavailable\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Can’t save sector – one of the prefab containers collides with other objects..\n        /// </summary>\n        internal static string CantSaveSectorContainerCollides {\n            get {\n                return ResourceManager.GetString(\"CantSaveSectorContainerCollides\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Saving sector failed.\n        /// </summary>\n        internal static string CantSaveSectorFailed {\n            get {\n                return ResourceManager.GetString(\"CantSaveSectorFailed\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sector save failed, the specified name is already in use..\n        /// </summary>\n        internal static string CantSaveSectorNameExists {\n            get {\n                return ResourceManager.GetString(\"CantSaveSectorNameExists\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Properties are not valid..\n        /// </summary>\n        internal static string CaptionPropertiesAreNotValid {\n            get {\n                return ResourceManager.GetString(\"CaptionPropertiesAreNotValid\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Property is not valid..\n        /// </summary>\n        internal static string CaptionPropertyIsNotValid {\n            get {\n                return ResourceManager.GetString(\"CaptionPropertyIsNotValid\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Captive.\n        /// </summary>\n        internal static string Captive {\n            get {\n                return ResourceManager.GetString(\"Captive\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Captive pilot.\n        /// </summary>\n        internal static string CaptivePilot {\n            get {\n                return ResourceManager.GetString(\"CaptivePilot\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cargo Box.\n        /// </summary>\n        internal static string CargoBox {\n            get {\n                return ResourceManager.GetString(\"CargoBox\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to CargoBox prop D.\n        /// </summary>\n        internal static string CargoBox_prop_D {\n            get {\n                return ResourceManager.GetString(\"CargoBox_prop_D\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ammo.\n        /// </summary>\n        internal static string CargoBoxAmmo {\n            get {\n                return ResourceManager.GetString(\"CargoBoxAmmo\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Small cargo box for items dropped from inventory.\n        /// </summary>\n        internal static string CargoBoxDroppedItems {\n            get {\n                return ResourceManager.GetString(\"CargoBoxDroppedItems\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fuel.\n        /// </summary>\n        internal static string CargoBoxFuel {\n            get {\n                return ResourceManager.GetString(\"CargoBoxFuel\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Medikit.\n        /// </summary>\n        internal static string CargoBoxMedikit {\n            get {\n                return ResourceManager.GetString(\"CargoBoxMedikit\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Oxygen.\n        /// </summary>\n        internal static string CargoBoxOxygen {\n            get {\n                return ResourceManager.GetString(\"CargoBoxOxygen\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Repair.\n        /// </summary>\n        internal static string CargoBoxRepair {\n            get {\n                return ResourceManager.GetString(\"CargoBoxRepair\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cargo Universal 1.\n        /// </summary>\n        internal static string CargoBoxType1 {\n            get {\n                return ResourceManager.GetString(\"CargoBoxType1\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cargo Universal 5.\n        /// </summary>\n        internal static string CargoBoxType10 {\n            get {\n                return ResourceManager.GetString(\"CargoBoxType10\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fuel 2.\n        /// </summary>\n        internal static string CargoBoxType11 {\n            get {\n                return ResourceManager.GetString(\"CargoBoxType11\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Repair 2.\n        /// </summary>\n        internal static string CargoBoxType12 {\n            get {\n                return ResourceManager.GetString(\"CargoBoxType12\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Repair 1.\n        /// </summary>\n        internal static string CargoBoxType2 {\n            get {\n                return ResourceManager.GetString(\"CargoBoxType2\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Medikit 1.\n        /// </summary>\n        internal static string CargoBoxType3 {\n            get {\n                return ResourceManager.GetString(\"CargoBoxType3\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cargo Universal 6.\n        /// </summary>\n        internal static string CargoBoxType4 {\n            get {\n                return ResourceManager.GetString(\"CargoBoxType4\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fuel 1.\n        /// </summary>\n        internal static string CargoBoxType5 {\n            get {\n                return ResourceManager.GetString(\"CargoBoxType5\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ammo 1.\n        /// </summary>\n        internal static string CargoBoxType6 {\n            get {\n                return ResourceManager.GetString(\"CargoBoxType6\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Medikit 2.\n        /// </summary>\n        internal static string CargoBoxType7 {\n            get {\n                return ResourceManager.GetString(\"CargoBoxType7\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ammo 2.\n        /// </summary>\n        internal static string CargoBoxType8 {\n            get {\n                return ResourceManager.GetString(\"CargoBoxType8\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Oxygen 1.\n        /// </summary>\n        internal static string CargoBoxType9 {\n            get {\n                return ResourceManager.GetString(\"CargoBoxType9\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Oxygen 2.\n        /// </summary>\n        internal static string CargoBoxTypeProp_A {\n            get {\n                return ResourceManager.GetString(\"CargoBoxTypeProp_A\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cargo Universal 2.\n        /// </summary>\n        internal static string CargoBoxTypeProp_B {\n            get {\n                return ResourceManager.GetString(\"CargoBoxTypeProp_B\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cargo Universal 3.\n        /// </summary>\n        internal static string CargoBoxTypeProp_C {\n            get {\n                return ResourceManager.GetString(\"CargoBoxTypeProp_C\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cargo Universal 4.\n        /// </summary>\n        internal static string CargoBoxTypeProp_D {\n            get {\n                return ResourceManager.GetString(\"CargoBoxTypeProp_D\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to {0}.\n        /// </summary>\n        internal static string Cash {\n            get {\n                return ResourceManager.GetString(\"Cash\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Armors.\n        /// </summary>\n        internal static string CategoryTypeArmors {\n            get {\n                return ResourceManager.GetString(\"CategoryTypeArmors\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Barrels.\n        /// </summary>\n        internal static string CategoryTypeBarrels {\n            get {\n                return ResourceManager.GetString(\"CategoryTypeBarrels\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Billboards.\n        /// </summary>\n        internal static string CategoryTypeBillboards {\n            get {\n                return ResourceManager.GetString(\"CategoryTypeBillboards\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cables.\n        /// </summary>\n        internal static string categoryTypeCables {\n            get {\n                return ResourceManager.GetString(\"categoryTypeCables\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Chambers.\n        /// </summary>\n        internal static string CategoryTypeChambers {\n            get {\n                return ResourceManager.GetString(\"CategoryTypeChambers\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Communications.\n        /// </summary>\n        internal static string categoryTypeCommunications {\n            get {\n                return ResourceManager.GetString(\"categoryTypeCommunications\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Doors.\n        /// </summary>\n        internal static string CategoryTypeDoorCases {\n            get {\n                return ResourceManager.GetString(\"CategoryTypeDoorCases\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Doors.\n        /// </summary>\n        internal static string CategoryTypeDoors {\n            get {\n                return ResourceManager.GetString(\"CategoryTypeDoors\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Flight.\n        /// </summary>\n        internal static string categoryTypeFlight {\n            get {\n                return ResourceManager.GetString(\"categoryTypeFlight\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Frame.\n        /// </summary>\n        internal static string CategoryTypeFrame {\n            get {\n                return ResourceManager.GetString(\"CategoryTypeFrame\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hangars.\n        /// </summary>\n        internal static string categoryTypeHangars {\n            get {\n                return ResourceManager.GetString(\"categoryTypeHangars\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Industry.\n        /// </summary>\n        internal static string categoryTypeIndustry {\n            get {\n                return ResourceManager.GetString(\"categoryTypeIndustry\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Large.\n        /// </summary>\n        internal static string categoryTypeLarge {\n            get {\n                return ResourceManager.GetString(\"categoryTypeLarge\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Large ships.\n        /// </summary>\n        internal static string CategoryTypeLargeShips {\n            get {\n                return ResourceManager.GetString(\"CategoryTypeLargeShips\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Life support.\n        /// </summary>\n        internal static string categoryTypeLifeSupport {\n            get {\n                return ResourceManager.GetString(\"categoryTypeLifeSupport\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Lights.\n        /// </summary>\n        internal static string CategoryTypeLights {\n            get {\n                return ResourceManager.GetString(\"CategoryTypeLights\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Manned objects.\n        /// </summary>\n        internal static string categoryTypeMannedObjects {\n            get {\n                return ResourceManager.GetString(\"categoryTypeMannedObjects\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Medium.\n        /// </summary>\n        internal static string categoryTypeMedium {\n            get {\n                return ResourceManager.GetString(\"categoryTypeMedium\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Mship.\n        /// </summary>\n        internal static string categoryTypeMship {\n            get {\n                return ResourceManager.GetString(\"categoryTypeMship\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Other.\n        /// </summary>\n        internal static string CategoryTypeOther {\n            get {\n                return ResourceManager.GetString(\"CategoryTypeOther\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Panels.\n        /// </summary>\n        internal static string CategoryTypePanels {\n            get {\n                return ResourceManager.GetString(\"CategoryTypePanels\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Particles.\n        /// </summary>\n        internal static string CategoryTypeParticles {\n            get {\n                return ResourceManager.GetString(\"CategoryTypeParticles\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Passages.\n        /// </summary>\n        internal static string CategoryTypePassages {\n            get {\n                return ResourceManager.GetString(\"CategoryTypePassages\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Pipes.\n        /// </summary>\n        internal static string categoryTypePipe {\n            get {\n                return ResourceManager.GetString(\"categoryTypePipe\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Shelves.\n        /// </summary>\n        internal static string CategoryTypeShelves {\n            get {\n                return ResourceManager.GetString(\"CategoryTypeShelves\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Signs.\n        /// </summary>\n        internal static string CategoryTypeSigns {\n            get {\n                return ResourceManager.GetString(\"CategoryTypeSigns\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Small.\n        /// </summary>\n        internal static string categoryTypeSmall {\n            get {\n                return ResourceManager.GetString(\"categoryTypeSmall\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sounds.\n        /// </summary>\n        internal static string CategoryTypeSounds {\n            get {\n                return ResourceManager.GetString(\"CategoryTypeSounds\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Supply.\n        /// </summary>\n        internal static string categoryTypeSupply {\n            get {\n                return ResourceManager.GetString(\"categoryTypeSupply\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Traffic signs.\n        /// </summary>\n        internal static string CategoryTypeTrafficSigns {\n            get {\n                return ResourceManager.GetString(\"CategoryTypeTrafficSigns\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnels.\n        /// </summary>\n        internal static string categoryTypeTunnel {\n            get {\n                return ResourceManager.GetString(\"categoryTypeTunnel\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Weaponry.\n        /// </summary>\n        internal static string categoryTypeWeaponry {\n            get {\n                return ResourceManager.GetString(\"categoryTypeWeaponry\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Captain Cedric.\n        /// </summary>\n        internal static string Cedric {\n            get {\n                return ResourceManager.GetString(\"Cedric\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Drone behavior.\n        /// </summary>\n        internal static string ChangeDroneMode {\n            get {\n                return ResourceManager.GetString(\"ChangeDroneMode\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Change material.\n        /// </summary>\n        internal static string ChangeMaterial {\n            get {\n                return ResourceManager.GetString(\"ChangeMaterial\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Radius of the voxel hand used for asteroid modification.\n        /// </summary>\n        internal static string ChangeRadiusTooltip {\n            get {\n                return ResourceManager.GetString(\"ChangeRadiusTooltip\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Choose between Box or Sphere voxel hand shapes.\n        /// </summary>\n        internal static string ChangeShapeTooltip {\n            get {\n                return ResourceManager.GetString(\"ChangeShapeTooltip\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Change material.\n        /// </summary>\n        internal static string ChangeVoxelMaterial {\n            get {\n                return ResourceManager.GetString(\"ChangeVoxelMaterial\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cheats.\n        /// </summary>\n        internal static string CheatsCaption {\n            get {\n                return ResourceManager.GetString(\"CheatsCaption\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to New Beijing – Chinese capital.\n        /// </summary>\n        internal static string CHINESE_CAPITAL {\n            get {\n                return ResourceManager.GetString(\"CHINESE_CAPITAL\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to New Beijing – Chinese capital\n        ///.\n        /// </summary>\n        internal static string CHINESE_CAPITAL_Description {\n            get {\n                return ResourceManager.GetString(\"CHINESE_CAPITAL_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Chinese Corridor 1 128x128x128.\n        /// </summary>\n        internal static string Chinese_Corridor_1 {\n            get {\n                return ResourceManager.GetString(\"Chinese_Corridor_1\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Chinese Corridor Last 126x126x126.\n        /// </summary>\n        internal static string Chinese_Corridor_Last_126x126x126 {\n            get {\n                return ResourceManager.GetString(\"Chinese_Corridor_Last_126x126x126\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Chinese Corridor Tunnel 256x256x256.\n        /// </summary>\n        internal static string Chinese_Corridor_Tunnel_256x256x256 {\n            get {\n                return ResourceManager.GetString(\"Chinese_Corridor_Tunnel_256x256x256\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Escape with Chinese plutonium transport.\n        /// </summary>\n        internal static string CHINESE_ESCAPE {\n            get {\n                return ResourceManager.GetString(\"CHINESE_ESCAPE\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Do not let the enemies destroy Sapho!\n        ///.\n        /// </summary>\n        internal static string CHINESE_ESCAPE_DEFEND_SHIP_Description {\n            get {\n                return ResourceManager.GetString(\"CHINESE_ESCAPE_DEFEND_SHIP_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Defend yourself.\n        /// </summary>\n        internal static string CHINESE_ESCAPE_DEFEND_SHIP_Name {\n            get {\n                return ResourceManager.GetString(\"CHINESE_ESCAPE_DEFEND_SHIP_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Defend Madelyn’s mothership and escape with stolen cargo\n        ///.\n        /// </summary>\n        internal static string CHINESE_ESCAPE_Description {\n            get {\n                return ResourceManager.GetString(\"CHINESE_ESCAPE_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Prepare for the fight!\n        ///.\n        /// </summary>\n        internal static string CHINESE_ESCAPE_GET_CLOSER_Description {\n            get {\n                return ResourceManager.GetString(\"CHINESE_ESCAPE_GET_CLOSER_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fly towards Sapho.\n        /// </summary>\n        internal static string CHINESE_ESCAPE_GET_CLOSER_Name {\n            get {\n                return ResourceManager.GetString(\"CHINESE_ESCAPE_GET_CLOSER_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The plutonium refinery and processing facility at Jingzhou. A well-protected Chinese base \n        ///specializing in processing of numerous grades of plutonium. Raw ore is transported here \n        ///from the Changde and Xining sectors and refined as fuel for nuclear weapons, reactors, \n        ///pocket fuel cells, and numerous experimental and technical devices, for both military and \n        ///industrial use..\n        /// </summary>\n        internal static string CHINESE_ESCAPE_SectorDescription {\n            get {\n                return ResourceManager.GetString(\"CHINESE_ESCAPE_SectorDescription\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to CHINESE REFINERY OF JINGZHOU.\n        /// </summary>\n        internal static string CHINESE_ESCAPE_SectorName {\n            get {\n                return ResourceManager.GetString(\"CHINESE_ESCAPE_SectorName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string CHINESE_ESCAPE_SPEAK_WITH_MADELYN_Description {\n            get {\n                return ResourceManager.GetString(\"CHINESE_ESCAPE_SPEAK_WITH_MADELYN_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Speak to Madelyn.\n        /// </summary>\n        internal static string CHINESE_ESCAPE_SPEAK_WITH_MADELYN_Name {\n            get {\n                return ResourceManager.GetString(\"CHINESE_ESCAPE_SPEAK_WITH_MADELYN_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Chinese Mines Center Asteroid.\n        /// </summary>\n        internal static string Chinese_Mines_CenterAsteroid {\n            get {\n                return ResourceManager.GetString(\"Chinese_Mines_CenterAsteroid\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Chinese Mines Front Asteroid.\n        /// </summary>\n        internal static string Chinese_Mines_FrontAsteroid {\n            get {\n                return ResourceManager.GetString(\"Chinese_Mines_FrontAsteroid\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Chinese Mines Front Right Asteroid.\n        /// </summary>\n        internal static string Chinese_Mines_FrontRightAsteroid {\n            get {\n                return ResourceManager.GetString(\"Chinese_Mines_FrontRightAsteroid\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Chinese Mines Left Asteroid.\n        /// </summary>\n        internal static string Chinese_Mines_LeftAsteroid {\n            get {\n                return ResourceManager.GetString(\"Chinese_Mines_LeftAsteroid\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Chinese Mines Main Asteroid.\n        /// </summary>\n        internal static string Chinese_Mines_MainAsteroid {\n            get {\n                return ResourceManager.GetString(\"Chinese_Mines_MainAsteroid\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Chinese Mines Right Asteroid.\n        /// </summary>\n        internal static string Chinese_Mines_RightAsteroid {\n            get {\n                return ResourceManager.GetString(\"Chinese_Mines_RightAsteroid\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The Mines of Changde are a harsh and dangerous place. Set in an asteroid field rich in \n        ///plutonium ore, they host thousands of workers who labor there for their daily living. \n        ///Numerous cargo ships pass through this sector, carrying mined ore from Changde to the \n        ///refinery complex at Jingzhou..\n        /// </summary>\n        internal static string CHINESE_MINES_SectorDescription {\n            get {\n                return ResourceManager.GetString(\"CHINESE_MINES_SectorDescription\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to CHINESE MINES OF CHANGDE.\n        /// </summary>\n        internal static string CHINESE_MINES_SectorName {\n            get {\n                return ResourceManager.GetString(\"CHINESE_MINES_SectorName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Chinese Mines Side 128x128x128.\n        /// </summary>\n        internal static string Chinese_Mines_Side {\n            get {\n                return ResourceManager.GetString(\"Chinese_Mines_Side\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Chinese Mines Small 64x64x64.\n        /// </summary>\n        internal static string Chinese_Mines_Small {\n            get {\n                return ResourceManager.GetString(\"Chinese_Mines_Small\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Chinese refinery of Jingzhou.\n        /// </summary>\n        internal static string CHINESE_REFINERY {\n            get {\n                return ResourceManager.GetString(\"CHINESE_REFINERY\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string CHINESE_REFINERY_01_GET_CLOSER_Description {\n            get {\n                return ResourceManager.GetString(\"CHINESE_REFINERY_01_GET_CLOSER_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Approach the asteroid.\n        /// </summary>\n        internal static string CHINESE_REFINERY_01_GET_CLOSER_Name {\n            get {\n                return ResourceManager.GetString(\"CHINESE_REFINERY_01_GET_CLOSER_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string CHINESE_REFINERY_02_GET_IN_Description {\n            get {\n                return ResourceManager.GetString(\"CHINESE_REFINERY_02_GET_IN_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Get inside.\n        /// </summary>\n        internal static string CHINESE_REFINERY_02_GET_IN_Name {\n            get {\n                return ResourceManager.GetString(\"CHINESE_REFINERY_02_GET_IN_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string CHINESE_REFINERY_03_D_FIND_SECRET_ROOM_Description {\n            get {\n                return ResourceManager.GetString(\"CHINESE_REFINERY_03_D_FIND_SECRET_ROOM_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Explore secret lab.\n        /// </summary>\n        internal static string CHINESE_REFINERY_03_D_FIND_SECRET_ROOM_Name {\n            get {\n                return ResourceManager.GetString(\"CHINESE_REFINERY_03_D_FIND_SECRET_ROOM_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string CHINESE_REFINERY_03_FIND_SECRET_ROOM_Description {\n            get {\n                return ResourceManager.GetString(\"CHINESE_REFINERY_03_FIND_SECRET_ROOM_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Find the secret lab.\n        /// </summary>\n        internal static string CHINESE_REFINERY_03_FIND_SECRET_ROOM_Name {\n            get {\n                return ResourceManager.GetString(\"CHINESE_REFINERY_03_FIND_SECRET_ROOM_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string CHINESE_REFINERY_04_SET_VIRUS_Description {\n            get {\n                return ResourceManager.GetString(\"CHINESE_REFINERY_04_SET_VIRUS_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Install virus.\n        /// </summary>\n        internal static string CHINESE_REFINERY_04_SET_VIRUS_Name {\n            get {\n                return ResourceManager.GetString(\"CHINESE_REFINERY_04_SET_VIRUS_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string CHINESE_REFINERY_05_DEACTIVATE_BOMB_Description {\n            get {\n                return ResourceManager.GetString(\"CHINESE_REFINERY_05_DEACTIVATE_BOMB_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Deactivate warhead.\n        /// </summary>\n        internal static string CHINESE_REFINERY_05_DEACTIVATE_BOMB_Name {\n            get {\n                return ResourceManager.GetString(\"CHINESE_REFINERY_05_DEACTIVATE_BOMB_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string CHINESE_REFINERY_06_GET_TO_FIRST_TUNNEL_Description {\n            get {\n                return ResourceManager.GetString(\"CHINESE_REFINERY_06_GET_TO_FIRST_TUNNEL_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Reach the tunnel.\n        /// </summary>\n        internal static string CHINESE_REFINERY_06_GET_TO_FIRST_TUNNEL_Name {\n            get {\n                return ResourceManager.GetString(\"CHINESE_REFINERY_06_GET_TO_FIRST_TUNNEL_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string CHINESE_REFINERY_07_PAST_FIRST_TUNNEL_Description {\n            get {\n                return ResourceManager.GetString(\"CHINESE_REFINERY_07_PAST_FIRST_TUNNEL_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fly to the other side.\n        /// </summary>\n        internal static string CHINESE_REFINERY_07_PAST_FIRST_TUNNEL_Name {\n            get {\n                return ResourceManager.GetString(\"CHINESE_REFINERY_07_PAST_FIRST_TUNNEL_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string CHINESE_REFINERY_08_SET_BUG_IN_COMPUTER_Description {\n            get {\n                return ResourceManager.GetString(\"CHINESE_REFINERY_08_SET_BUG_IN_COMPUTER_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hack the computer for Manjeet.\n        /// </summary>\n        internal static string CHINESE_REFINERY_08_SET_BUG_IN_COMPUTER_Name {\n            get {\n                return ResourceManager.GetString(\"CHINESE_REFINERY_08_SET_BUG_IN_COMPUTER_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string CHINESE_REFINERY_09_GET_TO_SECOND_TUNNEL_Description {\n            get {\n                return ResourceManager.GetString(\"CHINESE_REFINERY_09_GET_TO_SECOND_TUNNEL_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Reach the tunnel.\n        /// </summary>\n        internal static string CHINESE_REFINERY_09_GET_TO_SECOND_TUNNEL_Name {\n            get {\n                return ResourceManager.GetString(\"CHINESE_REFINERY_09_GET_TO_SECOND_TUNNEL_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string CHINESE_REFINERY_10_PAST_SECOND_TUNNEL_Description {\n            get {\n                return ResourceManager.GetString(\"CHINESE_REFINERY_10_PAST_SECOND_TUNNEL_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fly to the other side.\n        /// </summary>\n        internal static string CHINESE_REFINERY_10_PAST_SECOND_TUNNEL_Name {\n            get {\n                return ResourceManager.GetString(\"CHINESE_REFINERY_10_PAST_SECOND_TUNNEL_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string CHINESE_REFINERY_11_SNEAK_INSIDE_THE_STATION_Description {\n            get {\n                return ResourceManager.GetString(\"CHINESE_REFINERY_11_SNEAK_INSIDE_THE_STATION_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Enter the base.\n        /// </summary>\n        internal static string CHINESE_REFINERY_11_SNEAK_INSIDE_THE_STATION_Name {\n            get {\n                return ResourceManager.GetString(\"CHINESE_REFINERY_11_SNEAK_INSIDE_THE_STATION_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string CHINESE_REFINERY_12_GET_TO_OLD_PATH_Description {\n            get {\n                return ResourceManager.GetString(\"CHINESE_REFINERY_12_GET_TO_OLD_PATH_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Enter the control room through the backdoor.\n        /// </summary>\n        internal static string CHINESE_REFINERY_12_GET_TO_OLD_PATH_Name {\n            get {\n                return ResourceManager.GetString(\"CHINESE_REFINERY_12_GET_TO_OLD_PATH_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string CHINESE_REFINERY_13_HACK_REFINARY_COMPUTER_Description {\n            get {\n                return ResourceManager.GetString(\"CHINESE_REFINERY_13_HACK_REFINARY_COMPUTER_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Change the records.\n        /// </summary>\n        internal static string CHINESE_REFINERY_13_HACK_REFINARY_COMPUTER_Name {\n            get {\n                return ResourceManager.GetString(\"CHINESE_REFINERY_13_HACK_REFINARY_COMPUTER_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string CHINESE_REFINERY_14_GET_OUT_OF_THE_STATION_Description {\n            get {\n                return ResourceManager.GetString(\"CHINESE_REFINERY_14_GET_OUT_OF_THE_STATION_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Leave the station.\n        /// </summary>\n        internal static string CHINESE_REFINERY_14_GET_OUT_OF_THE_STATION_Name {\n            get {\n                return ResourceManager.GetString(\"CHINESE_REFINERY_14_GET_OUT_OF_THE_STATION_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string CHINESE_REFINERY_15_LAND_INSIDE_THE_TRANSPORTER_Description {\n            get {\n                return ResourceManager.GetString(\"CHINESE_REFINERY_15_LAND_INSIDE_THE_TRANSPORTER_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Join the others.\n        /// </summary>\n        internal static string CHINESE_REFINERY_15_LAND_INSIDE_THE_TRANSPORTER_Name {\n            get {\n                return ResourceManager.GetString(\"CHINESE_REFINERY_15_LAND_INSIDE_THE_TRANSPORTER_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sneak through the Chinese refinery and hack their systems\n        ///.\n        /// </summary>\n        internal static string CHINESE_REFINERY_Description {\n            get {\n                return ResourceManager.GetString(\"CHINESE_REFINERY_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The plutonium refinery and processing facility at Jingzhou. A well-protected Chinese base \n        ///specializing in processing of numerous grades of plutonium. Raw ore is transported here \n        ///from the Changde and Xining sectors and refined as fuel for nuclear weapons, reactors, \n        ///pocket fuel cells, and numerous experimental and technical devices, for both military and \n        ///industrial use..\n        /// </summary>\n        internal static string CHINESE_REFINERY_SectorDescription {\n            get {\n                return ResourceManager.GetString(\"CHINESE_REFINERY_SectorDescription\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to CHINESE REFINERY OF JINGZHOU.\n        /// </summary>\n        internal static string CHINESE_REFINERY_SectorName {\n            get {\n                return ResourceManager.GetString(\"CHINESE_REFINERY_SectorName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Chinese Solar Array Bottom 64x64x64.\n        /// </summary>\n        internal static string Chinese_Solar_Array_Bottom {\n            get {\n                return ResourceManager.GetString(\"Chinese_Solar_Array_Bottom\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Chinese Solar Array Main 256x128x256.\n        /// </summary>\n        internal static string Chinese_Solar_Array_Main {\n            get {\n                return ResourceManager.GetString(\"Chinese_Solar_Array_Main\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to PRC transmitter Yunzun.\n        /// </summary>\n        internal static string CHINESE_TRANSMITTER {\n            get {\n                return ResourceManager.GetString(\"CHINESE_TRANSMITTER\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Chinese_Transmitter_Asteroid.\n        /// </summary>\n        internal static string Chinese_Transmitter_Asteroid {\n            get {\n                return ResourceManager.GetString(\"Chinese_Transmitter_Asteroid\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string CHINESE_TRANSMITTER_CHECKPOINT_Description {\n            get {\n                return ResourceManager.GetString(\"CHINESE_TRANSMITTER_CHECKPOINT_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Proceed to the station.\n        /// </summary>\n        internal static string CHINESE_TRANSMITTER_CHECKPOINT_Name {\n            get {\n                return ResourceManager.GetString(\"CHINESE_TRANSMITTER_CHECKPOINT_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Get to the station\n        ///.\n        /// </summary>\n        internal static string CHINESE_TRANSMITTER_Description {\n            get {\n                return ResourceManager.GetString(\"CHINESE_TRANSMITTER_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string CHINESE_TRANSMITTER_DESTROY_SECURITY_CONTROL_Description {\n            get {\n                return ResourceManager.GetString(\"CHINESE_TRANSMITTER_DESTROY_SECURITY_CONTROL_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Destroy generator.\n        /// </summary>\n        internal static string CHINESE_TRANSMITTER_DESTROY_SECURITY_CONTROL_Name {\n            get {\n                return ResourceManager.GetString(\"CHINESE_TRANSMITTER_DESTROY_SECURITY_CONTROL_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string CHINESE_TRANSMITTER_DIALOGUE_1_Description {\n            get {\n                return ResourceManager.GetString(\"CHINESE_TRANSMITTER_DIALOGUE_1_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Pillage booty.\n        /// </summary>\n        internal static string CHINESE_TRANSMITTER_DIALOGUE_1_Name {\n            get {\n                return ResourceManager.GetString(\"CHINESE_TRANSMITTER_DIALOGUE_1_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string CHINESE_TRANSMITTER_DIALOGUE_3_Description {\n            get {\n                return ResourceManager.GetString(\"CHINESE_TRANSMITTER_DIALOGUE_3_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Explore security center.\n        /// </summary>\n        internal static string CHINESE_TRANSMITTER_DIALOGUE_3_Name {\n            get {\n                return ResourceManager.GetString(\"CHINESE_TRANSMITTER_DIALOGUE_3_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string CHINESE_TRANSMITTER_DIALOGUE_5_Description {\n            get {\n                return ResourceManager.GetString(\"CHINESE_TRANSMITTER_DIALOGUE_5_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Find the command center.\n        /// </summary>\n        internal static string CHINESE_TRANSMITTER_DIALOGUE_5_Name {\n            get {\n                return ResourceManager.GetString(\"CHINESE_TRANSMITTER_DIALOGUE_5_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string CHINESE_TRANSMITTER_DIALOGUE_6_Description {\n            get {\n                return ResourceManager.GetString(\"CHINESE_TRANSMITTER_DIALOGUE_6_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Place the alien detector.\n        /// </summary>\n        internal static string CHINESE_TRANSMITTER_DIALOGUE_6_Name {\n            get {\n                return ResourceManager.GetString(\"CHINESE_TRANSMITTER_DIALOGUE_6_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string CHINESE_TRANSMITTER_ESCAPE_Description {\n            get {\n                return ResourceManager.GetString(\"CHINESE_TRANSMITTER_ESCAPE_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Help Tarja and Valentin.\n        /// </summary>\n        internal static string CHINESE_TRANSMITTER_ESCAPE_Name {\n            get {\n                return ResourceManager.GetString(\"CHINESE_TRANSMITTER_ESCAPE_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string CHINESE_TRANSMITTER_ESCAPE3_Description {\n            get {\n                return ResourceManager.GetString(\"CHINESE_TRANSMITTER_ESCAPE3_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Escape.\n        /// </summary>\n        internal static string CHINESE_TRANSMITTER_ESCAPE3_Name {\n            get {\n                return ResourceManager.GetString(\"CHINESE_TRANSMITTER_ESCAPE3_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string CHINESE_TRANSMITTER_FIND_CIC_Description {\n            get {\n                return ResourceManager.GetString(\"CHINESE_TRANSMITTER_FIND_CIC_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Find the command center.\n        /// </summary>\n        internal static string CHINESE_TRANSMITTER_FIND_CIC_Name {\n            get {\n                return ResourceManager.GetString(\"CHINESE_TRANSMITTER_FIND_CIC_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string CHINESE_TRANSMITTER_FIND_SECURITY_CONTROL_Description {\n            get {\n                return ResourceManager.GetString(\"CHINESE_TRANSMITTER_FIND_SECURITY_CONTROL_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Find camera control center.\n        /// </summary>\n        internal static string CHINESE_TRANSMITTER_FIND_SECURITY_CONTROL_Name {\n            get {\n                return ResourceManager.GetString(\"CHINESE_TRANSMITTER_FIND_SECURITY_CONTROL_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string CHINESE_TRANSMITTER_LOOT_CARGO_Description {\n            get {\n                return ResourceManager.GetString(\"CHINESE_TRANSMITTER_LOOT_CARGO_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Pillage booty.\n        /// </summary>\n        internal static string CHINESE_TRANSMITTER_LOOT_CARGO_Name {\n            get {\n                return ResourceManager.GetString(\"CHINESE_TRANSMITTER_LOOT_CARGO_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string CHINESE_TRANSMITTER_OPEN_CIC_Description {\n            get {\n                return ResourceManager.GetString(\"CHINESE_TRANSMITTER_OPEN_CIC_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Open doors and disable command center defenses.\n        /// </summary>\n        internal static string CHINESE_TRANSMITTER_OPEN_CIC_Name {\n            get {\n                return ResourceManager.GetString(\"CHINESE_TRANSMITTER_OPEN_CIC_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string CHINESE_TRANSMITTER_PLACE_DEVICE_Description {\n            get {\n                return ResourceManager.GetString(\"CHINESE_TRANSMITTER_PLACE_DEVICE_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Place the alien detector.\n        /// </summary>\n        internal static string CHINESE_TRANSMITTER_PLACE_DEVICE_Name {\n            get {\n                return ResourceManager.GetString(\"CHINESE_TRANSMITTER_PLACE_DEVICE_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The National Chinese broadcasting array at Yunzun. The station sends and receives \n        ///long-distance communication signals from all important Chinese cities in the vicinity. These \n        ///consist of public safety messages, TV and radio broadcasts, and governmental propaganda..\n        /// </summary>\n        internal static string CHINESE_TRANSMITTER_SectorDescription {\n            get {\n                return ResourceManager.GetString(\"CHINESE_TRANSMITTER_SectorDescription\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to CHINESE TRANSMITTER YUNZUN.\n        /// </summary>\n        internal static string CHINESE_TRANSMITTER_SectorName {\n            get {\n                return ResourceManager.GetString(\"CHINESE_TRANSMITTER_SectorName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Chinese mines of Changde.\n        /// </summary>\n        internal static string CHINESE_TRANSPORT {\n            get {\n                return ResourceManager.GetString(\"CHINESE_TRANSPORT\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Kill all Chinese ships.\n        ///.\n        /// </summary>\n        internal static string CHINESE_TRANSPORT_DEFEND_MARCUS_Description {\n            get {\n                return ResourceManager.GetString(\"CHINESE_TRANSPORT_DEFEND_MARCUS_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Defend Marcus.\n        /// </summary>\n        internal static string CHINESE_TRANSPORT_DEFEND_MARCUS_Name {\n            get {\n                return ResourceManager.GetString(\"CHINESE_TRANSPORT_DEFEND_MARCUS_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Destroy the transmitter and steal the chinese transport\n        ///.\n        /// </summary>\n        internal static string CHINESE_TRANSPORT_Description {\n            get {\n                return ResourceManager.GetString(\"CHINESE_TRANSPORT_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hack the computer and get the first security key.\n        ///.\n        /// </summary>\n        internal static string CHINESE_TRANSPORT_GET_SECURITY_KEY_Description {\n            get {\n                return ResourceManager.GetString(\"CHINESE_TRANSPORT_GET_SECURITY_KEY_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Get the key.\n        /// </summary>\n        internal static string CHINESE_TRANSPORT_GET_SECURITY_KEY_Name {\n            get {\n                return ResourceManager.GetString(\"CHINESE_TRANSPORT_GET_SECURITY_KEY_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hack the hangar database to get the safety mark of your ship.\n        ///.\n        /// </summary>\n        internal static string CHINESE_TRANSPORT_HACK_HANGAR_SERVICE_PC_Description {\n            get {\n                return ResourceManager.GetString(\"CHINESE_TRANSPORT_HACK_HANGAR_SERVICE_PC_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hack hangar database.\n        /// </summary>\n        internal static string CHINESE_TRANSPORT_HACK_HANGAR_SERVICE_PC_Name {\n            get {\n                return ResourceManager.GetString(\"CHINESE_TRANSPORT_HACK_HANGAR_SERVICE_PC_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Use the security keys to disable the service computers inside the transmitter.\n        ///.\n        /// </summary>\n        internal static string CHINESE_TRANSPORT_HACK_TRANSMITTER_Description {\n            get {\n                return ResourceManager.GetString(\"CHINESE_TRANSPORT_HACK_TRANSMITTER_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Use the key.\n        /// </summary>\n        internal static string CHINESE_TRANSPORT_HACK_TRANSMITTER_Name {\n            get {\n                return ResourceManager.GetString(\"CHINESE_TRANSPORT_HACK_TRANSMITTER_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string CHINESE_TRANSPORT_KILL_BOSS_Description {\n            get {\n                return ResourceManager.GetString(\"CHINESE_TRANSPORT_KILL_BOSS_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Kill the Chinese commando.\n        /// </summary>\n        internal static string CHINESE_TRANSPORT_KILL_BOSS_Name {\n            get {\n                return ResourceManager.GetString(\"CHINESE_TRANSPORT_KILL_BOSS_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Kill the guards around the transmitter.\n        ///.\n        /// </summary>\n        internal static string CHINESE_TRANSPORT_KILL_GUARDS_Description {\n            get {\n                return ResourceManager.GetString(\"CHINESE_TRANSPORT_KILL_GUARDS_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Kill the guards.\n        /// </summary>\n        internal static string CHINESE_TRANSPORT_KILL_GUARDS_Name {\n            get {\n                return ResourceManager.GetString(\"CHINESE_TRANSPORT_KILL_GUARDS_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string CHINESE_TRANSPORT_LAND_IN_Description {\n            get {\n                return ResourceManager.GetString(\"CHINESE_TRANSPORT_LAND_IN_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Board the ship.\n        /// </summary>\n        internal static string CHINESE_TRANSPORT_LAND_IN_Name {\n            get {\n                return ResourceManager.GetString(\"CHINESE_TRANSPORT_LAND_IN_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Make sure the transmitter is completely destroyed.\n        ///.\n        /// </summary>\n        internal static string CHINESE_TRANSPORT_LOOK_ON_EXPLOSION_Description {\n            get {\n                return ResourceManager.GetString(\"CHINESE_TRANSPORT_LOOK_ON_EXPLOSION_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Enjoy fireworks.\n        /// </summary>\n        internal static string CHINESE_TRANSPORT_LOOK_ON_EXPLOSION_Name {\n            get {\n                return ResourceManager.GetString(\"CHINESE_TRANSPORT_LOOK_ON_EXPLOSION_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Reach the asteroid with the hangar.\n        ///.\n        /// </summary>\n        internal static string CHINESE_TRANSPORT_PAST_TUNNEL_2_Description {\n            get {\n                return ResourceManager.GetString(\"CHINESE_TRANSPORT_PAST_TUNNEL_2_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fly to the other side.\n        /// </summary>\n        internal static string CHINESE_TRANSPORT_PAST_TUNNEL_2_Name {\n            get {\n                return ResourceManager.GetString(\"CHINESE_TRANSPORT_PAST_TUNNEL_2_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Place the bomb on the transmitter.\n        ///.\n        /// </summary>\n        internal static string CHINESE_TRANSPORT_PLACE_BOMB_Description {\n            get {\n                return ResourceManager.GetString(\"CHINESE_TRANSPORT_PLACE_BOMB_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Place bomb.\n        /// </summary>\n        internal static string CHINESE_TRANSPORT_PLACE_BOMB_Name {\n            get {\n                return ResourceManager.GetString(\"CHINESE_TRANSPORT_PLACE_BOMB_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Reach the service room of the hangar.\n        ///.\n        /// </summary>\n        internal static string CHINESE_TRANSPORT_REACH_HANGAR_HACK_Description {\n            get {\n                return ResourceManager.GetString(\"CHINESE_TRANSPORT_REACH_HANGAR_HACK_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Enter service room.\n        /// </summary>\n        internal static string CHINESE_TRANSPORT_REACH_HANGAR_HACK_Name {\n            get {\n                return ResourceManager.GetString(\"CHINESE_TRANSPORT_REACH_HANGAR_HACK_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fly through the tunnel straight to the transmitter.\n        ///.\n        /// </summary>\n        internal static string CHINESE_TRANSPORT_REACH_TRANSMITTER_Description {\n            get {\n                return ResourceManager.GetString(\"CHINESE_TRANSPORT_REACH_TRANSMITTER_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Reach the transmitter.\n        /// </summary>\n        internal static string CHINESE_TRANSPORT_REACH_TRANSMITTER_Name {\n            get {\n                return ResourceManager.GetString(\"CHINESE_TRANSPORT_REACH_TRANSMITTER_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Reach the connection tunnel and fly straight to the transmitter.\n        ///.\n        /// </summary>\n        internal static string CHINESE_TRANSPORT_REACH_TUNNEL_1_Description {\n            get {\n                return ResourceManager.GetString(\"CHINESE_TRANSPORT_REACH_TUNNEL_1_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Reach the tunnel.\n        /// </summary>\n        internal static string CHINESE_TRANSPORT_REACH_TUNNEL_1_Name {\n            get {\n                return ResourceManager.GetString(\"CHINESE_TRANSPORT_REACH_TUNNEL_1_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Reach the second connection tunnel to the hangar.\n        ///.\n        /// </summary>\n        internal static string CHINESE_TRANSPORT_REACH_TUNNEL_2_Description {\n            get {\n                return ResourceManager.GetString(\"CHINESE_TRANSPORT_REACH_TUNNEL_2_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Reach second tunnel.\n        /// </summary>\n        internal static string CHINESE_TRANSPORT_REACH_TUNNEL_2_Name {\n            get {\n                return ResourceManager.GetString(\"CHINESE_TRANSPORT_REACH_TUNNEL_2_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hide before the explosion starts.\n        ///.\n        /// </summary>\n        internal static string CHINESE_TRANSPORT_RUN_EXPLOSION_Description {\n            get {\n                return ResourceManager.GetString(\"CHINESE_TRANSPORT_RUN_EXPLOSION_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hide from explosion.\n        /// </summary>\n        internal static string CHINESE_TRANSPORT_RUN_EXPLOSION_Name {\n            get {\n                return ResourceManager.GetString(\"CHINESE_TRANSPORT_RUN_EXPLOSION_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Chinese commando.\n        /// </summary>\n        internal static string ChineseCommando {\n            get {\n                return ResourceManager.GetString(\"ChineseCommando\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Chinese officer.\n        /// </summary>\n        internal static string ChineseOfficer {\n            get {\n                return ResourceManager.GetString(\"ChineseOfficer\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Chinese pilot.\n        /// </summary>\n        internal static string ChinesePilot {\n            get {\n                return ResourceManager.GetString(\"ChinesePilot\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Chinese Refinery First 128x128x128.\n        /// </summary>\n        internal static string ChineseRefinery_First_128x128x128 {\n            get {\n                return ResourceManager.GetString(\"ChineseRefinery_First_128x128x128\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Chinese Refinery Second 128x128x128.\n        /// </summary>\n        internal static string ChineseRefinery_Second_128x128x128 {\n            get {\n                return ResourceManager.GetString(\"ChineseRefinery_Second_128x128x128\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Chinese Refinery Third 128x256x128.\n        /// </summary>\n        internal static string ChineseRefinery_Third_128x256x128 {\n            get {\n                return ResourceManager.GetString(\"ChineseRefinery_Third_128x256x128\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Choose game.\n        /// </summary>\n        internal static string ChooseGameType {\n            get {\n                return ResourceManager.GetString(\"ChooseGameType\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Choose hand mode.\n        /// </summary>\n        internal static string ChooseHandMode {\n            get {\n                return ResourceManager.GetString(\"ChooseHandMode\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Choose type.\n        /// </summary>\n        internal static string ChooseInfluence {\n            get {\n                return ResourceManager.GetString(\"ChooseInfluence\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Choose model.\n        /// </summary>\n        internal static string ChooseModel {\n            get {\n                return ResourceManager.GetString(\"ChooseModel\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Choose object type.\n        /// </summary>\n        internal static string ChooseObject3D {\n            get {\n                return ResourceManager.GetString(\"ChooseObject3D\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Choose a password.\n        /// </summary>\n        internal static string ChoosePassword {\n            get {\n                return ResourceManager.GetString(\"ChoosePassword\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Build type.\n        /// </summary>\n        internal static string ChoosePrefabBuildType {\n            get {\n                return ResourceManager.GetString(\"ChoosePrefabBuildType\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Category.\n        /// </summary>\n        internal static string ChoosePrefabCategory {\n            get {\n                return ResourceManager.GetString(\"ChoosePrefabCategory\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Subcategory.\n        /// </summary>\n        internal static string ChoosePrefabSubcategory {\n            get {\n                return ResourceManager.GetString(\"ChoosePrefabSubcategory\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Choose shape.\n        /// </summary>\n        internal static string ChooseShapeMode {\n            get {\n                return ResourceManager.GetString(\"ChooseShapeMode\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Choose sound.\n        /// </summary>\n        internal static string ChooseSound {\n            get {\n                return ResourceManager.GetString(\"ChooseSound\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Choose a username.\n        /// </summary>\n        internal static string ChooseUsername {\n            get {\n                return ResourceManager.GetString(\"ChooseUsername\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cistern.\n        /// </summary>\n        internal static string Cistern {\n            get {\n                return ResourceManager.GetString(\"Cistern\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to CIWS.\n        /// </summary>\n        internal static string CIWS {\n            get {\n                return ResourceManager.GetString(\"CIWS\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to CKD mothership facility.\n        /// </summary>\n        internal static string CKD_MOTHERSHIP_FACILITY {\n            get {\n                return ResourceManager.GetString(\"CKD_MOTHERSHIP_FACILITY\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to CKD mothership facility\n        ///.\n        /// </summary>\n        internal static string CKD_MOTHERSHIP_FACILITY_Description {\n            get {\n                return ResourceManager.GetString(\"CKD_MOTHERSHIP_FACILITY_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Clear materials.\n        /// </summary>\n        internal static string ClearAsteroidMaterials {\n            get {\n                return ResourceManager.GetString(\"ClearAsteroidMaterials\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Reset all materials on currently selected asteroid.\n        /// </summary>\n        internal static string ClearAsteroidMaterialsTooltip {\n            get {\n                return ResourceManager.GetString(\"ClearAsteroidMaterialsTooltip\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Warning! You will not be able to save this asteroid to server after this operation, this is only for exporting voxels..\n        /// </summary>\n        internal static string ClearAsteroidWarning {\n            get {\n                return ResourceManager.GetString(\"ClearAsteroidWarning\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Clear inventory.\n        /// </summary>\n        internal static string ClearInventory {\n            get {\n                return ResourceManager.GetString(\"ClearInventory\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Do you want to delete all voxel hands from the selected voxel asteroid?.\n        /// </summary>\n        internal static string ClearVoxelHandsWarning {\n            get {\n                return ResourceManager.GetString(\"ClearVoxelHandsWarning\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Clear sector.\n        /// </summary>\n        internal static string ClearWholeSector {\n            get {\n                return ResourceManager.GetString(\"ClearWholeSector\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Remove everything from the sector (excluding the player ship).\n        /// </summary>\n        internal static string ClearWholeSectorTooltip {\n            get {\n                return ResourceManager.GetString(\"ClearWholeSectorTooltip\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Close.\n        /// </summary>\n        internal static string Close {\n            get {\n                return ResourceManager.GetString(\"Close\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cobalt.\n        /// </summary>\n        internal static string Cobalt_01 {\n            get {\n                return ResourceManager.GetString(\"Cobalt_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Colliding objects.\n        /// </summary>\n        internal static string CollidingObjects {\n            get {\n                return ResourceManager.GetString(\"CollidingObjects\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Color.\n        /// </summary>\n        internal static string Color {\n            get {\n                return ResourceManager.GetString(\"Color\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Color area.\n        /// </summary>\n        internal static string ColorArea {\n            get {\n                return ResourceManager.GetString(\"ColorArea\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Component.\n        /// </summary>\n        internal static string Component {\n            get {\n                return ResourceManager.GetString(\"Component\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Concrete 1.\n        /// </summary>\n        internal static string Concrete_01 {\n            get {\n                return ResourceManager.GetString(\"Concrete_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Concrete 2.\n        /// </summary>\n        internal static string Concrete_02 {\n            get {\n                return ResourceManager.GetString(\"Concrete_02\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Connected prefab IDs.\n        /// </summary>\n        internal static string ConnectedPrefabIds {\n            get {\n                return ResourceManager.GetString(\"ConnectedPrefabIds\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Connect entity with ID.\n        /// </summary>\n        internal static string ConnectEntityWithId {\n            get {\n                return ResourceManager.GetString(\"ConnectEntityWithId\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Connection box.\n        /// </summary>\n        internal static string Connection_box {\n            get {\n                return ResourceManager.GetString(\"Connection_box\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Connect waypoints.\n        /// </summary>\n        internal static string ConnectWaypoints {\n            get {\n                return ResourceManager.GetString(\"ConnectWaypoints\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Creates a connection between all selected waypoints.\n        /// </summary>\n        internal static string ConnectWaypointsTooltip {\n            get {\n                return ResourceManager.GetString(\"ConnectWaypointsTooltip\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Console.\n        /// </summary>\n        internal static string Console {\n            get {\n                return ResourceManager.GetString(\"Console\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to ConstantFlashing.\n        /// </summary>\n        internal static string ConstantFlashing {\n            get {\n                return ResourceManager.GetString(\"ConstantFlashing\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Continue last game.\n        /// </summary>\n        internal static string ContinueLastGame {\n            get {\n                return ResourceManager.GetString(\"ContinueLastGame\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to CONTINUE.\n        /// </summary>\n        internal static string ContinueUppercase {\n            get {\n                return ResourceManager.GetString(\"ContinueUppercase\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to {0} is already assigned to {1}.\n        ///Remove the original control?.\n        /// </summary>\n        internal static string ControlAlreadyAssigned {\n            get {\n                return ResourceManager.GetString(\"ControlAlreadyAssigned\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The pressed key may not be assigned to controls..\n        /// </summary>\n        internal static string ControlIsNotValid {\n            get {\n                return ResourceManager.GetString(\"ControlIsNotValid\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Controlling: .\n        /// </summary>\n        internal static string Controlling {\n            get {\n                return ResourceManager.GetString(\"Controlling\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Controls.\n        /// </summary>\n        internal static string Controls {\n            get {\n                return ResourceManager.GetString(\"Controls\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Control remote camera.\n        /// </summary>\n        internal static string ControlSecondaryCamera {\n            get {\n                return ResourceManager.GetString(\"ControlSecondaryCamera\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Convoy.\n        /// </summary>\n        internal static string CONVOY {\n            get {\n                return ResourceManager.GetString(\"CONVOY\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Convoy\n        ///.\n        /// </summary>\n        internal static string CONVOY_Description {\n            get {\n                return ResourceManager.GetString(\"CONVOY_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Copy.\n        /// </summary>\n        internal static string Copy {\n            get {\n                return ResourceManager.GetString(\"Copy\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Copy selected.\n        /// </summary>\n        internal static string CopySelected {\n            get {\n                return ResourceManager.GetString(\"CopySelected\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Press Left Ctrl+C to copy selection and Ctrl+V to paste.\n        /// </summary>\n        internal static string CopySelectedTooltip {\n            get {\n                return ResourceManager.GetString(\"CopySelectedTooltip\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Copy tool.\n        /// </summary>\n        internal static string CopyTool {\n            get {\n                return ResourceManager.GetString(\"CopyTool\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Correct snapped prefabs.\n        /// </summary>\n        internal static string CorrectSnappedPrefabs {\n            get {\n                return ResourceManager.GetString(\"CorrectSnappedPrefabs\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Align all prefabs by their snap points.\n        /// </summary>\n        internal static string CorrectSnappedPrefabsTooltip {\n            get {\n                return ResourceManager.GetString(\"CorrectSnappedPrefabsTooltip\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Council guard.\n        /// </summary>\n        internal static string COUNCIL_GUARD {\n            get {\n                return ResourceManager.GetString(\"COUNCIL_GUARD\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Time remaining: {0}.\n        /// </summary>\n        internal static string Countdown {\n            get {\n                return ResourceManager.GetString(\"Countdown\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Protect the hacker: {0}.\n        /// </summary>\n        internal static string CountdownHacker {\n            get {\n                return ResourceManager.GetString(\"CountdownHacker\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Crazy.\n        /// </summary>\n        internal static string Crazy {\n            get {\n                return ResourceManager.GetString(\"Crazy\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Create asteroid.\n        /// </summary>\n        internal static string CreateAsteroid {\n            get {\n                return ResourceManager.GetString(\"CreateAsteroid\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Create debris.\n        /// </summary>\n        internal static string CreateDebris {\n            get {\n                return ResourceManager.GetString(\"CreateDebris\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Create large ship.\n        /// </summary>\n        internal static string CreateLargeShip {\n            get {\n                return ResourceManager.GetString(\"CreateLargeShip\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Add prefab.\n        /// </summary>\n        internal static string CreatePrefab {\n            get {\n                return ResourceManager.GetString(\"CreatePrefab\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Create small ship.\n        /// </summary>\n        internal static string CreateSmallShip {\n            get {\n                return ResourceManager.GetString(\"CreateSmallShip\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Credits.\n        /// </summary>\n        internal static string Credits {\n            get {\n                return ResourceManager.GetString(\"Credits\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Friendly fire won’t be tolerated!.\n        /// </summary>\n        internal static string CriticalFriendlyFireDetected {\n            get {\n                return ResourceManager.GetString(\"CriticalFriendlyFireDetected\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ctrl.\n        /// </summary>\n        internal static string Ctrl {\n            get {\n                return ResourceManager.GetString(\"Ctrl\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cube_128x128x128.\n        /// </summary>\n        internal static string Cube_128x128x128 {\n            get {\n                return ResourceManager.GetString(\"Cube_128x128x128\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cube_128x128x256.\n        /// </summary>\n        internal static string Cube_128x128x256 {\n            get {\n                return ResourceManager.GetString(\"Cube_128x128x256\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cube_128x128x64.\n        /// </summary>\n        internal static string Cube_128x128x64 {\n            get {\n                return ResourceManager.GetString(\"Cube_128x128x64\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cube_128x256x128.\n        /// </summary>\n        internal static string Cube_128x256x128 {\n            get {\n                return ResourceManager.GetString(\"Cube_128x256x128\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cube_128x256x256.\n        /// </summary>\n        internal static string Cube_128x256x256 {\n            get {\n                return ResourceManager.GetString(\"Cube_128x256x256\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cube_128x256x64.\n        /// </summary>\n        internal static string Cube_128x256x64 {\n            get {\n                return ResourceManager.GetString(\"Cube_128x256x64\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cube_128x64x128.\n        /// </summary>\n        internal static string Cube_128x64x128 {\n            get {\n                return ResourceManager.GetString(\"Cube_128x64x128\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cube_128x64x256.\n        /// </summary>\n        internal static string Cube_128x64x256 {\n            get {\n                return ResourceManager.GetString(\"Cube_128x64x256\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cube_128x64x64.\n        /// </summary>\n        internal static string Cube_128x64x64 {\n            get {\n                return ResourceManager.GetString(\"Cube_128x64x64\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cube_256x128x128.\n        /// </summary>\n        internal static string Cube_256x128x128 {\n            get {\n                return ResourceManager.GetString(\"Cube_256x128x128\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cube_256x128x256.\n        /// </summary>\n        internal static string Cube_256x128x256 {\n            get {\n                return ResourceManager.GetString(\"Cube_256x128x256\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cube_256x128x512.\n        /// </summary>\n        internal static string Cube_256x128x512 {\n            get {\n                return ResourceManager.GetString(\"Cube_256x128x512\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cube_256x256x128.\n        /// </summary>\n        internal static string Cube_256x256x128 {\n            get {\n                return ResourceManager.GetString(\"Cube_256x256x128\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cube_256x256x256.\n        /// </summary>\n        internal static string Cube_256x256x256 {\n            get {\n                return ResourceManager.GetString(\"Cube_256x256x256\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cube_256x256x512.\n        /// </summary>\n        internal static string Cube_256x256x512 {\n            get {\n                return ResourceManager.GetString(\"Cube_256x256x512\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cube_256x512x128.\n        /// </summary>\n        internal static string Cube_256x512x128 {\n            get {\n                return ResourceManager.GetString(\"Cube_256x512x128\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cube_256x512x256.\n        /// </summary>\n        internal static string Cube_256x512x256 {\n            get {\n                return ResourceManager.GetString(\"Cube_256x512x256\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cube_256x512x512.\n        /// </summary>\n        internal static string Cube_256x512x512 {\n            get {\n                return ResourceManager.GetString(\"Cube_256x512x512\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cube_512x256x256.\n        /// </summary>\n        internal static string Cube_512x256x256 {\n            get {\n                return ResourceManager.GetString(\"Cube_512x256x256\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cube_512x256x512.\n        /// </summary>\n        internal static string Cube_512x256x512 {\n            get {\n                return ResourceManager.GetString(\"Cube_512x256x512\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cube_512x512x256.\n        /// </summary>\n        internal static string Cube_512x512x256 {\n            get {\n                return ResourceManager.GetString(\"Cube_512x512x256\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cube_512x512x512.\n        /// </summary>\n        internal static string Cube_512x512x512 {\n            get {\n                return ResourceManager.GetString(\"Cube_512x512x512\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cube_64x128x128.\n        /// </summary>\n        internal static string Cube_64x128x128 {\n            get {\n                return ResourceManager.GetString(\"Cube_64x128x128\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cube_64x128x64.\n        /// </summary>\n        internal static string Cube_64x128x64 {\n            get {\n                return ResourceManager.GetString(\"Cube_64x128x64\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cube_64x64x128.\n        /// </summary>\n        internal static string Cube_64x64x128 {\n            get {\n                return ResourceManager.GetString(\"Cube_64x64x128\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cube_64x64x64.\n        /// </summary>\n        internal static string Cube_64x64x64 {\n            get {\n                return ResourceManager.GetString(\"Cube_64x64x64\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Custom object.\n        /// </summary>\n        internal static string CustomObject {\n            get {\n                return ResourceManager.GetString(\"CustomObject\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cycle.\n        /// </summary>\n        internal static string Cycle {\n            get {\n                return ResourceManager.GetString(\"Cycle\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cycle secondary camera modes.\n        /// </summary>\n        internal static string CycleSecondaryCamera {\n            get {\n                return ResourceManager.GetString(\"CycleSecondaryCamera\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to d25asteroid_field.\n        /// </summary>\n        internal static string d25asteroid_field {\n            get {\n                return ResourceManager.GetString(\"d25asteroid_field\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to d25city_fight.\n        /// </summary>\n        internal static string d25city_fight {\n            get {\n                return ResourceManager.GetString(\"d25city_fight\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to d25gates_ofhell.\n        /// </summary>\n        internal static string d25gates_ofhell {\n            get {\n                return ResourceManager.GetString(\"d25gates_ofhell\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to d25junkyard.\n        /// </summary>\n        internal static string d25junkyard {\n            get {\n                return ResourceManager.GetString(\"d25junkyard\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to d25military_area.\n        /// </summary>\n        internal static string d25military_area {\n            get {\n                return ResourceManager.GetString(\"d25military_area\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to d25miner_outpost.\n        /// </summary>\n        internal static string d25miner_outpost {\n            get {\n                return ResourceManager.GetString(\"d25miner_outpost\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to d25plain.\n        /// </summary>\n        internal static string d25plain {\n            get {\n                return ResourceManager.GetString(\"d25plain\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to d25radioactive.\n        /// </summary>\n        internal static string d25radioactive {\n            get {\n                return ResourceManager.GetString(\"d25radioactive\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Danger!.\n        /// </summary>\n        internal static string Danger {\n            get {\n                return ResourceManager.GetString(\"Danger\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Data transfer.\n        /// </summary>\n        internal static string DataTransfer {\n            get {\n                return ResourceManager.GetString(\"DataTransfer\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to {0} days ago.\n        /// </summary>\n        internal static string DateDaysAgo {\n            get {\n                return ResourceManager.GetString(\"DateDaysAgo\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to {0} hours ago.\n        /// </summary>\n        internal static string DateHoursAgo {\n            get {\n                return ResourceManager.GetString(\"DateHoursAgo\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to {0} minutes ago.\n        /// </summary>\n        internal static string DateMinutesAgo {\n            get {\n                return ResourceManager.GetString(\"DateMinutesAgo\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to {0} months ago.\n        /// </summary>\n        internal static string DateMonthsAgo {\n            get {\n                return ResourceManager.GetString(\"DateMonthsAgo\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Deactivating in progress.\n        /// </summary>\n        internal static string DeactivatingInProgress {\n            get {\n                return ResourceManager.GetString(\"DeactivatingInProgress\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Dead pilot.\n        /// </summary>\n        internal static string DeadPilot {\n            get {\n                return ResourceManager.GetString(\"DeadPilot\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Dealer.\n        /// </summary>\n        internal static string Dealer {\n            get {\n                return ResourceManager.GetString(\"Dealer\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Deathmatch.\n        /// </summary>\n        internal static string Deathmatch {\n            get {\n                return ResourceManager.GetString(\"Deathmatch\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Debris.\n        /// </summary>\n        internal static string DebrisContextMenuCaption {\n            get {\n                return ResourceManager.GetString(\"DebrisContextMenuCaption\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Decline.\n        /// </summary>\n        internal static string Decline {\n            get {\n                return ResourceManager.GetString(\"Decline\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Decoy flare.\n        /// </summary>\n        internal static string DecoyFlareHud {\n            get {\n                return ResourceManager.GetString(\"DecoyFlareHud\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Don’t show again.\n        /// </summary>\n        internal static string DecreaseVideoSettingsCheckBox {\n            get {\n                return ResourceManager.GetString(\"DecreaseVideoSettingsCheckBox\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Default.\n        /// </summary>\n        internal static string Default {\n            get {\n                return ResourceManager.GetString(\"Default\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Default light.\n        /// </summary>\n        internal static string default_light_0 {\n            get {\n                return ResourceManager.GetString(\"default_light_0\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Default particles prefab.\n        /// </summary>\n        internal static string default_particles_prefab_0 {\n            get {\n                return ResourceManager.GetString(\"default_particles_prefab_0\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Default sound prefab.\n        /// </summary>\n        internal static string default_sound_prefab_0 {\n            get {\n                return ResourceManager.GetString(\"default_sound_prefab_0\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Default: {0:F1}.\n        /// </summary>\n        internal static string DefaultFOV {\n            get {\n                return ResourceManager.GetString(\"DefaultFOV\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to \n        ///    Press {0} to show..\n        /// </summary>\n        internal static string DefaultNotificationDisapearMessage {\n            get {\n                return ResourceManager.GetString(\"DefaultNotificationDisapearMessage\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Defend Madelyn:.\n        /// </summary>\n        internal static string DefendMadelyn {\n            get {\n                return ResourceManager.GetString(\"DefendMadelyn\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Defensive.\n        /// </summary>\n        internal static string Defensive {\n            get {\n                return ResourceManager.GetString(\"Defensive\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to 64x64x64\n        ///Deformed small sphere 1.\n        /// </summary>\n        internal static string DeformedSphere1_64x64x64 {\n            get {\n                return ResourceManager.GetString(\"DeformedSphere1_64x64x64\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to 64x64x64\n        ///Deformed small sphere 2.\n        /// </summary>\n        internal static string DeformedSphere2_64x64x64 {\n            get {\n                return ResourceManager.GetString(\"DeformedSphere2_64x64x64\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to 128x64x64\n        ///Deformed sphere.\n        /// </summary>\n        internal static string DeformedSphereWithCorridor_128x64x64 {\n            get {\n                return ResourceManager.GetString(\"DeformedSphereWithCorridor_128x64x64\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to 256x256x256\n        ///Deformed sphere.\n        /// </summary>\n        internal static string DeformedSphereWithCorridor_256x256x256 {\n            get {\n                return ResourceManager.GetString(\"DeformedSphereWithCorridor_256x256x256\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to 128x128x128\n        ///Deformed sphere.\n        /// </summary>\n        internal static string DeformedSphereWithCraters_128x128x128 {\n            get {\n                return ResourceManager.GetString(\"DeformedSphereWithCraters_128x128x128\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to 64x128x64\n        ///Deformed sphere.\n        /// </summary>\n        internal static string DeformedSphereWithHoles_64x128x64 {\n            get {\n                return ResourceManager.GetString(\"DeformedSphereWithHoles_64x128x64\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Delete.\n        /// </summary>\n        internal static string Delete {\n            get {\n                return ResourceManager.GetString(\"Delete\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Do you really want to delete selected objects?.\n        /// </summary>\n        internal static string DeleteObjects {\n            get {\n                return ResourceManager.GetString(\"DeleteObjects\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Delete selection.\n        /// </summary>\n        internal static string DeleteSelected {\n            get {\n                return ResourceManager.GetString(\"DeleteSelected\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Press Delete to remove selection.\n        /// </summary>\n        internal static string DeleteSelectedTooltip {\n            get {\n                return ResourceManager.GetString(\"DeleteSelectedTooltip\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cannot travel in demo.\n        /// </summary>\n        internal static string DemoUserCannotTravel {\n            get {\n                return ResourceManager.GetString(\"DemoUserCannotTravel\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Deny.\n        /// </summary>\n        internal static string DenyEnter {\n            get {\n                return ResourceManager.GetString(\"DenyEnter\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Deploying in progress.\n        /// </summary>\n        internal static string DeployingInProgress {\n            get {\n                return ResourceManager.GetString(\"DeployingInProgress\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Depth.\n        /// </summary>\n        internal static string Depth {\n            get {\n                return ResourceManager.GetString(\"Depth\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Description.\n        /// </summary>\n        internal static string Description {\n            get {\n                return ResourceManager.GetString(\"Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Destroy.\n        /// </summary>\n        internal static string Destroy {\n            get {\n                return ResourceManager.GetString(\"Destroy\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Destroyed.\n        /// </summary>\n        internal static string Destroyed {\n            get {\n                return ResourceManager.GetString(\"Destroyed\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Press LMB to detach objects at current position.\n        /// </summary>\n        internal static string DetachFromCameraTooltip {\n            get {\n                return ResourceManager.GetString(\"DetachFromCameraTooltip\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Detach voxel hand.\n        /// </summary>\n        internal static string DetachVoxelHand {\n            get {\n                return ResourceManager.GetString(\"DetachVoxelHand\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Detector.\n        /// </summary>\n        internal static string Detector {\n            get {\n                return ResourceManager.GetString(\"Detector\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Detector dummies.\n        /// </summary>\n        internal static string DetectorDummies {\n            get {\n                return ResourceManager.GetString(\"DetectorDummies\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Detector placement.\n        /// </summary>\n        internal static string DetectorPlacement {\n            get {\n                return ResourceManager.GetString(\"DetectorPlacement\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Detonate ammo inside drone.\n        /// </summary>\n        internal static string DetonateDrone {\n            get {\n                return ResourceManager.GetString(\"DetonateDrone\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to DEVELOP BUILD.\n        /// </summary>\n        internal static string DevelopBuild {\n            get {\n                return ResourceManager.GetString(\"DevelopBuild\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Developer screen.\n        /// </summary>\n        internal static string DeveloperCaption {\n            get {\n                return ResourceManager.GetString(\"DeveloperCaption\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to device.\n        /// </summary>\n        internal static string device {\n            get {\n                return ResourceManager.GetString(\"device\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Dialogue.\n        /// </summary>\n        internal static string Dialogue {\n            get {\n                return ResourceManager.GetString(\"Dialogue\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Choose difficulty.\n        /// </summary>\n        internal static string DifficultyCaption {\n            get {\n                return ResourceManager.GetString(\"DifficultyCaption\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Easy.\n        /// </summary>\n        internal static string DifficultyEasy {\n            get {\n                return ResourceManager.GetString(\"DifficultyEasy\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hard.\n        /// </summary>\n        internal static string DifficultyHard {\n            get {\n                return ResourceManager.GetString(\"DifficultyHard\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Normal.\n        /// </summary>\n        internal static string DifficultyNormal {\n            get {\n                return ResourceManager.GetString(\"DifficultyNormal\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Diffuse color.\n        /// </summary>\n        internal static string DiffuseColor {\n            get {\n                return ResourceManager.GetString(\"DiffuseColor\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Directional explosive.\n        /// </summary>\n        internal static string DirectionalExplosiveHud {\n            get {\n                return ResourceManager.GetString(\"DirectionalExplosiveHud\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Disable.\n        /// </summary>\n        internal static string Disable {\n            get {\n                return ResourceManager.GetString(\"Disable\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Disable coop.\n        /// </summary>\n        internal static string DisableCoop {\n            get {\n                return ResourceManager.GetString(\"DisableCoop\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Disabled.\n        /// </summary>\n        internal static string Disabled {\n            get {\n                return ResourceManager.GetString(\"Disabled\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Disable quick zoom.\n        /// </summary>\n        internal static string DisableQuickZoom {\n            get {\n                return ResourceManager.GetString(\"DisableQuickZoom\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Disable zoom.\n        /// </summary>\n        internal static string DisableZoom {\n            get {\n                return ResourceManager.GetString(\"DisableZoom\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to disconnected.\n        /// </summary>\n        internal static string Disconnected {\n            get {\n                return ResourceManager.GetString(\"Disconnected\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Disconnect?.\n        /// </summary>\n        internal static string DisconnectQuestion {\n            get {\n                return ResourceManager.GetString(\"DisconnectQuestion\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Disconnect waypoints.\n        /// </summary>\n        internal static string DisconnectWaypoints {\n            get {\n                return ResourceManager.GetString(\"DisconnectWaypoints\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Deletes all connections between selected waypoints.\n        /// </summary>\n        internal static string DisconnectWaypointsTooltip {\n            get {\n                return ResourceManager.GetString(\"DisconnectWaypointsTooltip\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Display deactivated entities.\n        /// </summary>\n        internal static string DisplayDeactivatedEntities {\n            get {\n                return ResourceManager.GetString(\"DisplayDeactivatedEntities\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Display HUD.\n        /// </summary>\n        internal static string DisplayHud {\n            get {\n                return ResourceManager.GetString(\"DisplayHud\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Display name.\n        /// </summary>\n        internal static string DisplayName {\n            get {\n                return ResourceManager.GetString(\"DisplayName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Display prefab container axis.\n        /// </summary>\n        internal static string DisplayPrefabContainerAxis {\n            get {\n                return ResourceManager.GetString(\"DisplayPrefabContainerAxis\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Display prefab container bounding.\n        /// </summary>\n        internal static string DisplayPrefabContainerBounding {\n            get {\n                return ResourceManager.GetString(\"DisplayPrefabContainerBounding\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Display unselected objects bounding.\n        /// </summary>\n        internal static string DisplayUnselectedBounding {\n            get {\n                return ResourceManager.GetString(\"DisplayUnselectedBounding\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Display voxel bounding.\n        /// </summary>\n        internal static string DisplayVoxelBounding {\n            get {\n                return ResourceManager.GetString(\"DisplayVoxelBounding\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Distant glare.\n        /// </summary>\n        internal static string DistantGlare {\n            get {\n                return ResourceManager.GetString(\"DistantGlare\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Distant glare - flashing.\n        /// </summary>\n        internal static string DistantGlareFlashing {\n            get {\n                return ResourceManager.GetString(\"DistantGlareFlashing\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Distant glare – random flashing.\n        /// </summary>\n        internal static string DistantGlareRandomFlashing {\n            get {\n                return ResourceManager.GetString(\"DistantGlareRandomFlashing\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Don’t go there!.\n        /// </summary>\n        internal static string DoNotGoThere {\n            get {\n                return ResourceManager.GetString(\"DoNotGoThere\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Don’t harvest here!.\n        /// </summary>\n        internal static string DontHarvest {\n            get {\n                return ResourceManager.GetString(\"DontHarvest\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Do not shoot here!.\n        /// </summary>\n        internal static string DontShoot {\n            get {\n                return ResourceManager.GetString(\"DontShoot\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Door.\n        /// </summary>\n        internal static string Door {\n            get {\n                return ResourceManager.GetString(\"Door\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Locked.\n        /// </summary>\n        internal static string DoorsLocked {\n            get {\n                return ResourceManager.GetString(\"DoorsLocked\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The zeppelin construction plant at Doppelburg. Formerly a Reichist facility, it was recently \n        ///taken over by the separatist White Wolves. The station consists of two towers, each with an \n        ///autonomous security system as well as life support and other vital systems. Destruction of \n        ///either of the towers does not pose a threat to the other; the “twin tower” concept allows for \n        ///easier reconstruction and recovery of the damaged tower. Both towers are equipped with \n        ///anti-mothership railguns, rendering Doppelbur [rest of string was truncated]&quot;;.\n        /// </summary>\n        internal static string DOPPELBURG_SectorDescription {\n            get {\n                return ResourceManager.GetString(\"DOPPELBURG_SectorDescription\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to DOPPELBURG.\n        /// </summary>\n        internal static string DOPPELBURG_SectorName {\n            get {\n                return ResourceManager.GetString(\"DOPPELBURG_SectorName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Down.\n        /// </summary>\n        internal static string Down {\n            get {\n                return ResourceManager.GetString(\"Down\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Download failed.\n        /// </summary>\n        internal static string DownloadFailed {\n            get {\n                return ResourceManager.GetString(\"DownloadFailed\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Downloading data.\n        /// </summary>\n        internal static string DownloadingData {\n            get {\n                return ResourceManager.GetString(\"DownloadingData\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Down thrust.\n        /// </summary>\n        internal static string DownThrust {\n            get {\n                return ResourceManager.GetString(\"DownThrust\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Do you want to disconnect from game?.\n        /// </summary>\n        internal static string DoYouWantToDisconnect {\n            get {\n                return ResourceManager.GetString(\"DoYouWantToDisconnect\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Do you want to keep these settings? {0} seconds remaining..\n        /// </summary>\n        internal static string DoYouWantToKeepTheseSettingsXSecondsRemaining {\n            get {\n                return ResourceManager.GetString(\"DoYouWantToKeepTheseSettingsXSecondsRemaining\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Draw collision spots in HUD.\n        /// </summary>\n        internal static string DrawCollisionSpotsInHud {\n            get {\n                return ResourceManager.GetString(\"DrawCollisionSpotsInHud\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Draw helper primitives.\n        /// </summary>\n        internal static string DrawHelperPrimitives {\n            get {\n                return ResourceManager.GetString(\"DrawHelperPrimitives\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Draw physics primitives.\n        /// </summary>\n        internal static string DrawPhysicsPrimitives {\n            get {\n                return ResourceManager.GetString(\"DrawPhysicsPrimitives\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Draw voxel content as billboards.\n        /// </summary>\n        internal static string DrawVoxelContentAsBillboards {\n            get {\n                return ResourceManager.GetString(\"DrawVoxelContentAsBillboards\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Drill.\n        /// </summary>\n        internal static string Drill {\n            get {\n                return ResourceManager.GetString(\"Drill\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Press {0} to activate drill.\n        /// </summary>\n        internal static string DrillNotification {\n            get {\n                return ResourceManager.GetString(\"DrillNotification\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Drone.\n        /// </summary>\n        internal static string Drone {\n            get {\n                return ResourceManager.GetString(\"Drone\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Drone camera.\n        /// </summary>\n        internal static string DroneCamera {\n            get {\n                return ResourceManager.GetString(\"DroneCamera\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to DRONE CHINA | China drone which can do simple work (detonate \n        ///basic mine, detonate smart mine, detonate biochem \n        ///mine, detonate remote bomb, detonate EMP bomb, \n        ///launch smoke bomb, launch flash bomb, detonate \n        ///sphere explosive, detonate directional explosive, \n        ///detonate asteroid killer.\n        /// </summary>\n        internal static string DroneCN {\n            get {\n                return ResourceManager.GetString(\"DroneCN\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Control drone.\n        /// </summary>\n        internal static string DroneControl {\n            get {\n                return ResourceManager.GetString(\"DroneControl\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Deploy drone.\n        /// </summary>\n        internal static string DroneDeploy {\n            get {\n                return ResourceManager.GetString(\"DroneDeploy\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Follow mode. Press {0} to change.\n        /// </summary>\n        internal static string DroneFollowPlayer {\n            get {\n                return ResourceManager.GetString(\"DroneFollowPlayer\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Stay mode. Press {0} to change.\n        /// </summary>\n        internal static string DroneHoldPosition {\n            get {\n                return ResourceManager.GetString(\"DroneHoldPosition\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Drone {0}: press {1} to take control.\n        /// </summary>\n        internal static string DroneNo {\n            get {\n                return ResourceManager.GetString(\"DroneNo\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to DRONE FOURTH REICH | Fourth Reich drone which can do simple work \n        ///(detonate basic mine, detonate smart mine, \n        ///detonate biochem mine, detonate remote bomb, \n        ///detonate EMP bomb, launch smoke bomb, launch \n        ///flash bomb, detonate sphere explosive, detonate \n        ///directional explosive, detonate asteroid killer.\n        /// </summary>\n        internal static string DroneSS {\n            get {\n                return ResourceManager.GetString(\"DroneSS\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to DRONE EAC | EAC drone which can do simple work (detonate \n        ///basic mine, detonate smart mine, detonate biochem \n        ///mine, detonate remote bomb, detonate EMP bomb, \n        ///launch smoke bomb, launch flash bomb, detonate \n        ///sphere explosive, detonate directional explosive, \n        ///detonate asteroid killer.\n        /// </summary>\n        internal static string DroneUS {\n            get {\n                return ResourceManager.GetString(\"DroneUS\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Dummies.\n        /// </summary>\n        internal static string Dummies {\n            get {\n                return ResourceManager.GetString(\"Dummies\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Dummy point.\n        /// </summary>\n        internal static string DummyPoint {\n            get {\n                return ResourceManager.GetString(\"DummyPoint\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Dumping ground.\n        /// </summary>\n        internal static string DUMPING_GROUND {\n            get {\n                return ResourceManager.GetString(\"DUMPING_GROUND\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Dumping ground\n        ///.\n        /// </summary>\n        internal static string DUMPING_GROUND_Description {\n            get {\n                return ResourceManager.GetString(\"DUMPING_GROUND_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Dust.\n        /// </summary>\n        internal static string DustInfluenceSphereType {\n            get {\n                return ResourceManager.GetString(\"DustInfluenceSphereType\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Defend Madelyn.\n        /// </summary>\n        internal static string EAC_AMBUSH_DEFEND_MADELYN1 {\n            get {\n                return ResourceManager.GetString(\"EAC_AMBUSH_DEFEND_MADELYN1\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string EAC_AMBUSH_DEFEND_MADELYN1_DESC {\n            get {\n                return ResourceManager.GetString(\"EAC_AMBUSH_DEFEND_MADELYN1_DESC\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Defend Madelyn.\n        /// </summary>\n        internal static string EAC_AMBUSH_DEFEND_MADELYN2 {\n            get {\n                return ResourceManager.GetString(\"EAC_AMBUSH_DEFEND_MADELYN2\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string EAC_AMBUSH_DEFEND_MADELYN2_DESC {\n            get {\n                return ResourceManager.GetString(\"EAC_AMBUSH_DEFEND_MADELYN2_DESC\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Destroy the disruptor generator.\n        /// </summary>\n        internal static string EAC_AMBUSH_DESTROY_GENERATOR {\n            get {\n                return ResourceManager.GetString(\"EAC_AMBUSH_DESTROY_GENERATOR\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string EAC_AMBUSH_DESTROY_GENERATOR_DESC {\n            get {\n                return ResourceManager.GetString(\"EAC_AMBUSH_DESTROY_GENERATOR_DESC\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fly to Manjeet.\n        /// </summary>\n        internal static string EAC_AMBUSH_FLY_TO_MANJEET {\n            get {\n                return ResourceManager.GetString(\"EAC_AMBUSH_FLY_TO_MANJEET\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Find Manjeet somewhere in the city..\n        /// </summary>\n        internal static string EAC_AMBUSH_FLY_TO_MANJEET_DESC {\n            get {\n                return ResourceManager.GetString(\"EAC_AMBUSH_FLY_TO_MANJEET_DESC\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Go back to Madelyn.\n        /// </summary>\n        internal static string EAC_AMBUSH_GO_BACK_TO_MADELYN {\n            get {\n                return ResourceManager.GetString(\"EAC_AMBUSH_GO_BACK_TO_MADELYN\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string EAC_AMBUSH_GO_BACK_TO_MADELYN_DESC {\n            get {\n                return ResourceManager.GetString(\"EAC_AMBUSH_GO_BACK_TO_MADELYN_DESC\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Go back to Madelyn.\n        /// </summary>\n        internal static string EAC_AMBUSH_RETURN_TO_MADELYN {\n            get {\n                return ResourceManager.GetString(\"EAC_AMBUSH_RETURN_TO_MADELYN\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string EAC_AMBUSH_RETURN_TO_MADELYN_DESC {\n            get {\n                return ResourceManager.GetString(\"EAC_AMBUSH_RETURN_TO_MADELYN_DESC\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to New NYC – EAC capital.\n        /// </summary>\n        internal static string EAC_CAPITAL {\n            get {\n                return ResourceManager.GetString(\"EAC_CAPITAL\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to New NYC – EAC capital\n        ///.\n        /// </summary>\n        internal static string EAC_CAPITAL_Description {\n            get {\n                return ResourceManager.GetString(\"EAC_CAPITAL_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to EAC prison of Reway.\n        /// </summary>\n        internal static string EAC_PRISON {\n            get {\n                return ResourceManager.GetString(\"EAC_PRISON\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string EAC_PRISON_ACQUIREIDCARD_Description {\n            get {\n                return ResourceManager.GetString(\"EAC_PRISON_ACQUIREIDCARD_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Acquire ID.\n        /// </summary>\n        internal static string EAC_PRISON_ACQUIREIDCARD_Name {\n            get {\n                return ResourceManager.GetString(\"EAC_PRISON_ACQUIREIDCARD_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Stop reading this, you have about 15 seconds before electricity will be restored.\n        ///.\n        /// </summary>\n        internal static string EAC_PRISON_BREAKIN_Description {\n            get {\n                return ResourceManager.GetString(\"EAC_PRISON_BREAKIN_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Break into the prison.\n        /// </summary>\n        internal static string EAC_PRISON_BREAKIN_Name {\n            get {\n                return ResourceManager.GetString(\"EAC_PRISON_BREAKIN_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to \n        ///.\n        /// </summary>\n        internal static string EAC_PRISON_COVERMARCUS_Description {\n            get {\n                return ResourceManager.GetString(\"EAC_PRISON_COVERMARCUS_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Steal ship for Marcus.\n        /// </summary>\n        internal static string EAC_PRISON_COVERMARCUS_Name {\n            get {\n                return ResourceManager.GetString(\"EAC_PRISON_COVERMARCUS_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to They think they can stop us. Fools!\n        ///.\n        /// </summary>\n        internal static string EAC_PRISON_CRUSHREINFORCEMENTS_Description {\n            get {\n                return ResourceManager.GetString(\"EAC_PRISON_CRUSHREINFORCEMENTS_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Crush reinforcements.\n        /// </summary>\n        internal static string EAC_PRISON_CRUSHREINFORCEMENTS_Name {\n            get {\n                return ResourceManager.GetString(\"EAC_PRISON_CRUSHREINFORCEMENTS_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Rescue Marcus from the EAC prison station\n        ///.\n        /// </summary>\n        internal static string EAC_PRISON_Description {\n            get {\n                return ResourceManager.GetString(\"EAC_PRISON_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to \n        ///.\n        /// </summary>\n        internal static string EAC_PRISON_FIGHTOUT_Description {\n            get {\n                return ResourceManager.GetString(\"EAC_PRISON_FIGHTOUT_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Escape.\n        /// </summary>\n        internal static string EAC_PRISON_FIGHTOUT_Name {\n            get {\n                return ResourceManager.GetString(\"EAC_PRISON_FIGHTOUT_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to \n        ///.\n        /// </summary>\n        internal static string EAC_PRISON_GETARMS_Description {\n            get {\n                return ResourceManager.GetString(\"EAC_PRISON_GETARMS_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Get Marcus’s former equipment.\n        /// </summary>\n        internal static string EAC_PRISON_GETARMS_Name {\n            get {\n                return ResourceManager.GetString(\"EAC_PRISON_GETARMS_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We need the specific location of his cell to get out of this hostile place ASAP.\n        ///.\n        /// </summary>\n        internal static string EAC_PRISON_LOCINTEL_Description {\n            get {\n                return ResourceManager.GetString(\"EAC_PRISON_LOCINTEL_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Find out Marcus’s location.\n        /// </summary>\n        internal static string EAC_PRISON_LOCINTEL_Name {\n            get {\n                return ResourceManager.GetString(\"EAC_PRISON_LOCINTEL_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to \n        ///.\n        /// </summary>\n        internal static string EAC_PRISON_LOCINTEL2_Description {\n            get {\n                return ResourceManager.GetString(\"EAC_PRISON_LOCINTEL2_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hack security hub again.\n        /// </summary>\n        internal static string EAC_PRISON_LOCINTEL2_Name {\n            get {\n                return ResourceManager.GetString(\"EAC_PRISON_LOCINTEL2_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string EAC_PRISON_MARCUSCELL_Description {\n            get {\n                return ResourceManager.GetString(\"EAC_PRISON_MARCUSCELL_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Get Marcus.\n        /// </summary>\n        internal static string EAC_PRISON_MARCUSCELL_Name {\n            get {\n                return ResourceManager.GetString(\"EAC_PRISON_MARCUSCELL_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to \n        ///.\n        /// </summary>\n        internal static string EAC_PRISON_MEETINGPOINT_Description {\n            get {\n                return ResourceManager.GetString(\"EAC_PRISON_MEETINGPOINT_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Return to Sapho.\n        /// </summary>\n        internal static string EAC_PRISON_MEETINGPOINT_Name {\n            get {\n                return ResourceManager.GetString(\"EAC_PRISON_MEETINGPOINT_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The FOR siege is in danger from that big Ardant class mothership.\n        ///.\n        /// </summary>\n        internal static string EAC_PRISON_MOTHERSHIPHELP_Description {\n            get {\n                return ResourceManager.GetString(\"EAC_PRISON_MOTHERSHIPHELP_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Destroy communications of EAC mothership.\n        /// </summary>\n        internal static string EAC_PRISON_MOTHERSHIPHELP_Name {\n            get {\n                return ResourceManager.GetString(\"EAC_PRISON_MOTHERSHIPHELP_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to \n        ///.\n        /// </summary>\n        internal static string EAC_PRISON_OPENACCESS_Description {\n            get {\n                return ResourceManager.GetString(\"EAC_PRISON_OPENACCESS_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Open doors to maintance area.\n        /// </summary>\n        internal static string EAC_PRISON_OPENACCESS_Name {\n            get {\n                return ResourceManager.GetString(\"EAC_PRISON_OPENACCESS_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Reway: a well-guarded and almost impenetrable space station-turned-prison. Reway offers\n        ///“accommodation” for hundreds of prominent political and military prisoners. The facility is\n        ///known for its strict security measures and permanent protection by a considerable division\n        ///of the EAC fleet..\n        /// </summary>\n        internal static string EAC_PRISON_SectorDescription {\n            get {\n                return ResourceManager.GetString(\"EAC_PRISON_SectorDescription\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to EAC PRISON REWAY.\n        /// </summary>\n        internal static string EAC_PRISON_SectorName {\n            get {\n                return ResourceManager.GetString(\"EAC_PRISON_SectorName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to There must be a hub from which it can be shut down in a safe way.\n        ///.\n        /// </summary>\n        internal static string EAC_PRISON_SECURITYOFF_Description {\n            get {\n                return ResourceManager.GetString(\"EAC_PRISON_SECURITYOFF_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Shut down the generator.\n        /// </summary>\n        internal static string EAC_PRISON_SECURITYOFF_Name {\n            get {\n                return ResourceManager.GetString(\"EAC_PRISON_SECURITYOFF_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Mind the missile turrets.\n        ///.\n        /// </summary>\n        internal static string EAC_PRISON_SOLARDEF_Description {\n            get {\n                return ResourceManager.GetString(\"EAC_PRISON_SOLARDEF_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Destroy solar panel defenses.\n        /// </summary>\n        internal static string EAC_PRISON_SOLARDEF_Name {\n            get {\n                return ResourceManager.GetString(\"EAC_PRISON_SOLARDEF_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to This will cut the electricity for a while before the backup generators take over.\n        ///.\n        /// </summary>\n        internal static string EAC_PRISON_SOLAROFF1_Description {\n            get {\n                return ResourceManager.GetString(\"EAC_PRISON_SOLAROFF1_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Destroy 75% of solar panels.\n        /// </summary>\n        internal static string EAC_PRISON_SOLAROFF1_Name {\n            get {\n                return ResourceManager.GetString(\"EAC_PRISON_SOLAROFF1_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string EAC_PRISON_SOLAROFF2_Description {\n            get {\n                return ResourceManager.GetString(\"EAC_PRISON_SOLAROFF2_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Destroy 75% of solar panels.\n        /// </summary>\n        internal static string EAC_PRISON_SOLAROFF2_Name {\n            get {\n                return ResourceManager.GetString(\"EAC_PRISON_SOLAROFF2_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You must survive! For your brother’s sake!\n        ///.\n        /// </summary>\n        internal static string EAC_PRISON_THRUSWARM_Description {\n            get {\n                return ResourceManager.GetString(\"EAC_PRISON_THRUSWARM_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Approach the prison station.\n        /// </summary>\n        internal static string EAC_PRISON_THRUSWARM_Name {\n            get {\n                return ResourceManager.GetString(\"EAC_PRISON_THRUSWARM_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to EAC survey site New Landswick.\n        /// </summary>\n        internal static string EAC_SURVEY_SITE {\n            get {\n                return ResourceManager.GetString(\"EAC_SURVEY_SITE\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Destroy the baricade to get through!\n        ///.\n        /// </summary>\n        internal static string EAC_SURVEY_SITE_CLEAR_THE_WAY_Description {\n            get {\n                return ResourceManager.GetString(\"EAC_SURVEY_SITE_CLEAR_THE_WAY_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Clear the way.\n        /// </summary>\n        internal static string EAC_SURVEY_SITE_CLEAR_THE_WAY_Name {\n            get {\n                return ResourceManager.GetString(\"EAC_SURVEY_SITE_CLEAR_THE_WAY_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to A unknown commando of Russian special forces got into the mines. Try to escape, search for survivors and equipment and find out what is going on. Why the hell have they attacked a civilian survey site? This can’t be a random hit-and-run attack, there must be something more behind this!\n        ///.\n        /// </summary>\n        internal static string EAC_SURVEY_SITE_Description {\n            get {\n                return ResourceManager.GetString(\"EAC_SURVEY_SITE_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to An auxiliary generator is near the workshop.\n        ///.\n        /// </summary>\n        internal static string EAC_SURVEY_SITE_GENERATOR_Description {\n            get {\n                return ResourceManager.GetString(\"EAC_SURVEY_SITE_GENERATOR_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Start generators.\n        /// </summary>\n        internal static string EAC_SURVEY_SITE_GENERATOR_Name {\n            get {\n                return ResourceManager.GetString(\"EAC_SURVEY_SITE_GENERATOR_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The exit is located in red hub above.\n        ///.\n        /// </summary>\n        internal static string EAC_SURVEY_SITE_GOTO_10_Description {\n            get {\n                return ResourceManager.GetString(\"EAC_SURVEY_SITE_GOTO_10_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Escape.\n        /// </summary>\n        internal static string EAC_SURVEY_SITE_GOTO_10_Name {\n            get {\n                return ResourceManager.GetString(\"EAC_SURVEY_SITE_GOTO_10_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cross the skyway to get to the main part of the base.\n        ///.\n        /// </summary>\n        internal static string EAC_SURVEY_SITE_GOTO_30_Description {\n            get {\n                return ResourceManager.GetString(\"EAC_SURVEY_SITE_GOTO_30_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fly to the main base.\n        /// </summary>\n        internal static string EAC_SURVEY_SITE_GOTO_30_Name {\n            get {\n                return ResourceManager.GetString(\"EAC_SURVEY_SITE_GOTO_30_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Get to the command center and use the transmiter.\n        ///.\n        /// </summary>\n        internal static string EAC_SURVEY_SITE_GOTO_40_Description {\n            get {\n                return ResourceManager.GetString(\"EAC_SURVEY_SITE_GOTO_40_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Contact Madelyn.\n        /// </summary>\n        internal static string EAC_SURVEY_SITE_GOTO_40_Name {\n            get {\n                return ResourceManager.GetString(\"EAC_SURVEY_SITE_GOTO_40_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We should be able to hold up there until someone comes to help.\n        ///.\n        /// </summary>\n        internal static string EAC_SURVEY_SITE_GOTO_60_Description {\n            get {\n                return ResourceManager.GetString(\"EAC_SURVEY_SITE_GOTO_60_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Return to the command center.\n        /// </summary>\n        internal static string EAC_SURVEY_SITE_GOTO_60_Name {\n            get {\n                return ResourceManager.GetString(\"EAC_SURVEY_SITE_GOTO_60_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to There are a few miners hiding in the sealed ore processing area..\n        /// </summary>\n        internal static string EAC_SURVEY_SITE_GOTO_65_Description {\n            get {\n                return ResourceManager.GetString(\"EAC_SURVEY_SITE_GOTO_65_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Save miners.\n        /// </summary>\n        internal static string EAC_SURVEY_SITE_GOTO_65_Name {\n            get {\n                return ResourceManager.GetString(\"EAC_SURVEY_SITE_GOTO_65_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Of all the areas in the base, the hangar has the heaviest defenses. Use it to our advantage.\n        ///.\n        /// </summary>\n        internal static string EAC_SURVEY_SITE_GOTO_70_Description {\n            get {\n                return ResourceManager.GetString(\"EAC_SURVEY_SITE_GOTO_70_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Get to the hangar.\n        /// </summary>\n        internal static string EAC_SURVEY_SITE_GOTO_70_Name {\n            get {\n                return ResourceManager.GetString(\"EAC_SURVEY_SITE_GOTO_70_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The way is clear, get out!.\n        /// </summary>\n        internal static string EAC_SURVEY_SITE_GOTO_90_Description {\n            get {\n                return ResourceManager.GetString(\"EAC_SURVEY_SITE_GOTO_90_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Board Sapho.\n        /// </summary>\n        internal static string EAC_SURVEY_SITE_GOTO_90_Name {\n            get {\n                return ResourceManager.GetString(\"EAC_SURVEY_SITE_GOTO_90_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string EAC_SURVEY_SITE_SAVEMINERS_Description {\n            get {\n                return ResourceManager.GetString(\"EAC_SURVEY_SITE_SAVEMINERS_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Save miners.\n        /// </summary>\n        internal static string EAC_SURVEY_SITE_SAVEMINERS_Name {\n            get {\n                return ResourceManager.GetString(\"EAC_SURVEY_SITE_SAVEMINERS_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The Euro-American experimental survey site at New Landswick. Hidden from the eyes of \n        ///the public, this facility mainly serves research purposes. Rare substances and isotopes are \n        ///utilized in laboratories to create weapon prototypes, test new drill devices, and experiment \n        ///with chemical and nuclear reactions of substances. The facility is operated by several \n        ///hundred scientists, geologists, and administrative staff..\n        /// </summary>\n        internal static string EAC_SURVEY_SITE_SectorDescription {\n            get {\n                return ResourceManager.GetString(\"EAC_SURVEY_SITE_SectorDescription\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to EAC SURVEY SITE NEW LANDSWICK.\n        /// </summary>\n        internal static string EAC_SURVEY_SITE_SectorName {\n            get {\n                return ResourceManager.GetString(\"EAC_SURVEY_SITE_SectorName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to It will take some time for Madelyn to get there. \n        ///.\n        /// </summary>\n        internal static string EAC_SURVEY_SITE_SURVIVE_Description {\n            get {\n                return ResourceManager.GetString(\"EAC_SURVEY_SITE_SURVIVE_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Wait for Madelyn.\n        /// </summary>\n        internal static string EAC_SURVEY_SITE_SURVIVE_Name {\n            get {\n                return ResourceManager.GetString(\"EAC_SURVEY_SITE_SURVIVE_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to EAC transmitter Silver Foresight.\n        /// </summary>\n        internal static string EAC_TRANSMITTER {\n            get {\n                return ResourceManager.GetString(\"EAC_TRANSMITTER\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Activate lower solar panels.\n        /// </summary>\n        internal static string EAC_TRANSMITTER_ACTIVATE_SOLARPANELS {\n            get {\n                return ResourceManager.GetString(\"EAC_TRANSMITTER_ACTIVATE_SOLARPANELS\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Get to the controls of the lower solar panels and activate them.\n        ///.\n        /// </summary>\n        internal static string EAC_TRANSMITTER_ACTIVATE_SOLARPANELS_Description {\n            get {\n                return ResourceManager.GetString(\"EAC_TRANSMITTER_ACTIVATE_SOLARPANELS_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Destroy aggregators.\n        /// </summary>\n        internal static string EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_DESTROY {\n            get {\n                return ResourceManager.GetString(\"EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_DESTROY\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Destroy them now.\n        ///.\n        /// </summary>\n        internal static string EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_DESTROY_Description {\n            get {\n                return ResourceManager.GetString(\"EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_DESTROY_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Escape.\n        /// </summary>\n        internal static string EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_ESCAPE {\n            get {\n                return ResourceManager.GetString(\"EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_ESCAPE\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Destroy the panel.\n        ///.\n        /// </summary>\n        internal static string EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_ESCAPE_Description {\n            get {\n                return ResourceManager.GetString(\"EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_ESCAPE_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Stop the autodestruction.\n        /// </summary>\n        internal static string EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_HACK {\n            get {\n                return ResourceManager.GetString(\"EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_HACK\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hack the alarm.\n        ///.\n        /// </summary>\n        internal static string EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_HACK_Description {\n            get {\n                return ResourceManager.GetString(\"EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_HACK_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Help Marcus.\n        /// </summary>\n        internal static string EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_HELP {\n            get {\n                return ResourceManager.GetString(\"EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_HELP\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Crush your enemies, see them driven before you, and hear the lamentation of their women.\n        ///.\n        /// </summary>\n        internal static string EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_HELP_Description {\n            get {\n                return ResourceManager.GetString(\"EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_HELP_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Enter the control room.\n        /// </summary>\n        internal static string EAC_TRANSMITTER_CENTRAL_ROOM {\n            get {\n                return ResourceManager.GetString(\"EAC_TRANSMITTER_CENTRAL_ROOM\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Use stealth.\n        ///.\n        /// </summary>\n        internal static string EAC_TRANSMITTER_CENTRAL_ROOM_Description {\n            get {\n                return ResourceManager.GetString(\"EAC_TRANSMITTER_CENTRAL_ROOM_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Set all three satellites according to your needs.\n        ///.\n        /// </summary>\n        internal static string EAC_TRANSMITTER_Description {\n            get {\n                return ResourceManager.GetString(\"EAC_TRANSMITTER_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Find the repair kit.\n        /// </summary>\n        internal static string EAC_TRANSMITTER_FIND_REPAIR {\n            get {\n                return ResourceManager.GetString(\"EAC_TRANSMITTER_FIND_REPAIR\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Look in the box.\n        ///.\n        /// </summary>\n        internal static string EAC_TRANSMITTER_FIND_REPAIR_Description {\n            get {\n                return ResourceManager.GetString(\"EAC_TRANSMITTER_FIND_REPAIR_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fix the generator.\n        /// </summary>\n        internal static string EAC_TRANSMITTER_FIX_GENERATOR {\n            get {\n                return ResourceManager.GetString(\"EAC_TRANSMITTER_FIX_GENERATOR\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The first thing to check are the fuel cells. Then try the battery-powered self-starters; change the batteries if they’re faulty.\n        ///If the generator starts out nicely but cuts out immediately, you might be overloading the third inlet; try to turn off some equipment and try again.\n        ///If the generator runs fine but doesn’t produce any voltage, you need to look for a blown fuse or a tripped in-built circuit breaker.\n        ///Finally, check the output gain and frequency under various loads.\n        ///Try to connect valve 42f to the [rest of string was truncated]&quot;;.\n        /// </summary>\n        internal static string EAC_TRANSMITTER_FIX_GENERATOR_Descrpition {\n            get {\n                return ResourceManager.GetString(\"EAC_TRANSMITTER_FIX_GENERATOR_Descrpition\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hack satellite A.\n        /// </summary>\n        internal static string EAC_TRANSMITTER_HACK_SATELLITE_A {\n            get {\n                return ResourceManager.GetString(\"EAC_TRANSMITTER_HACK_SATELLITE_A\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Reprogram satellite A to use our transmission frequency.\n        ///.\n        /// </summary>\n        internal static string EAC_TRANSMITTER_HACK_SATELLITE_A_Description {\n            get {\n                return ResourceManager.GetString(\"EAC_TRANSMITTER_HACK_SATELLITE_A_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hack satellite B.\n        /// </summary>\n        internal static string EAC_TRANSMITTER_HACK_SATELLITE_B {\n            get {\n                return ResourceManager.GetString(\"EAC_TRANSMITTER_HACK_SATELLITE_B\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Reprogram satellite B to use our transmission frequency.\n        ///.\n        /// </summary>\n        internal static string EAC_TRANSMITTER_HACK_SATELLITE_B_Descrption {\n            get {\n                return ResourceManager.GetString(\"EAC_TRANSMITTER_HACK_SATELLITE_B_Descrption\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hack satellite C.\n        /// </summary>\n        internal static string EAC_TRANSMITTER_HACK_SATELLITE_C {\n            get {\n                return ResourceManager.GetString(\"EAC_TRANSMITTER_HACK_SATELLITE_C\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Reprogram satellite C to use our transmission frequency.\n        ///.\n        /// </summary>\n        internal static string EAC_TRANSMITTER_HACK_SATELLITE_C_Description {\n            get {\n                return ResourceManager.GetString(\"EAC_TRANSMITTER_HACK_SATELLITE_C_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Return to the meeting point.\n        /// </summary>\n        internal static string EAC_TRANSMITTER_MEETMS {\n            get {\n                return ResourceManager.GetString(\"EAC_TRANSMITTER_MEETMS\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You will be able to travel through the solar map.\n        ///.\n        /// </summary>\n        internal static string EAC_TRANSMITTER_MEETMS_Description {\n            get {\n                return ResourceManager.GetString(\"EAC_TRANSMITTER_MEETMS_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Unlock outer cargo door.\n        /// </summary>\n        internal static string EAC_TRANSMITTER_OPEN_CARGO_DOOR {\n            get {\n                return ResourceManager.GetString(\"EAC_TRANSMITTER_OPEN_CARGO_DOOR\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Plant the bomb\n        ///.\n        /// </summary>\n        internal static string EAC_TRANSMITTER_OPEN_CARGO_DOOR_Description {\n            get {\n                return ResourceManager.GetString(\"EAC_TRANSMITTER_OPEN_CARGO_DOOR_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Open a connection to the arm part.\n        /// </summary>\n        internal static string EAC_TRANSMITTER_OPEN_CONNECTION {\n            get {\n                return ResourceManager.GetString(\"EAC_TRANSMITTER_OPEN_CONNECTION\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Look for a control hub labeled ‘Solar Arm Access’.\n        ///.\n        /// </summary>\n        internal static string EAC_TRANSMITTER_OPEN_CONNECTION_Description {\n            get {\n                return ResourceManager.GetString(\"EAC_TRANSMITTER_OPEN_CONNECTION_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Open your path to the solar arm.\n        /// </summary>\n        internal static string EAC_TRANSMITTER_OPEN_SOLAR_ARM {\n            get {\n                return ResourceManager.GetString(\"EAC_TRANSMITTER_OPEN_SOLAR_ARM\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Use the hub to open the door.\n        ///.\n        /// </summary>\n        internal static string EAC_TRANSMITTER_OPEN_SOLAR_ARM_Description {\n            get {\n                return ResourceManager.GetString(\"EAC_TRANSMITTER_OPEN_SOLAR_ARM_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Restart the transmission.\n        /// </summary>\n        internal static string EAC_TRANSMITTER_RESTART_TRANSMISSION {\n            get {\n                return ResourceManager.GetString(\"EAC_TRANSMITTER_RESTART_TRANSMISSION\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Use the transmitter.\n        ///.\n        /// </summary>\n        internal static string EAC_TRANSMITTER_RESTART_TRANSMISSION_Description {\n            get {\n                return ResourceManager.GetString(\"EAC_TRANSMITTER_RESTART_TRANSMISSION_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to A transmitter and a research facility, originally started as an adjunct to the 20th century SETI \n        ///program. The facility serves as a hub and switching station for personal, governmental, \n        ///and commercial communication, as well as a center for the scanning and analysis of radio \n        ///data from distant galaxies..\n        /// </summary>\n        internal static string EAC_TRANSMITTER_SectorDescription {\n            get {\n                return ResourceManager.GetString(\"EAC_TRANSMITTER_SectorDescription\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to EAC TRANSMITTER SILVER FORESIGHT.\n        /// </summary>\n        internal static string EAC_TRANSMITTER_SectorName {\n            get {\n                return ResourceManager.GetString(\"EAC_TRANSMITTER_SectorName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Start the transmission.\n        /// </summary>\n        internal static string EAC_TRANSMITTER_START_TRANSMISSION {\n            get {\n                return ResourceManager.GetString(\"EAC_TRANSMITTER_START_TRANSMISSION\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Start the transmission to triangulate the goal.\n        ///.\n        /// </summary>\n        internal static string EAC_TRANSMITTER_START_TRANSMISSION_Description {\n            get {\n                return ResourceManager.GetString(\"EAC_TRANSMITTER_START_TRANSMISSION_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Unlock the way to the satellites.\n        /// </summary>\n        internal static string EAC_TRANSMITTER_UNLOCK_WAY_TO_SATELLITES {\n            get {\n                return ResourceManager.GetString(\"EAC_TRANSMITTER_UNLOCK_WAY_TO_SATELLITES\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Look for a control hub labeled “Communication Access”.\n        ///.\n        /// </summary>\n        internal static string EAC_TRANSMITTER_UNLOCK_WAY_TO_SATELLITES_Descrption {\n            get {\n                return ResourceManager.GetString(\"EAC_TRANSMITTER_UNLOCK_WAY_TO_SATELLITES_Descrption\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Each light has internally two lights: point and spot..\n        /// </summary>\n        internal static string EachlightHasInternallyTwoLightsPointAndSpot {\n            get {\n                return ResourceManager.GetString(\"EachlightHasInternallyTwoLightsPointAndSpot\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Eac Prison Asteroid.\n        /// </summary>\n        internal static string EacPrisonAsteroid {\n            get {\n                return ResourceManager.GetString(\"EacPrisonAsteroid\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to EAC Survey Smaller.\n        /// </summary>\n        internal static string EACSurvaySmaller_256_256_256 {\n            get {\n                return ResourceManager.GetString(\"EACSurvaySmaller_256_256_256\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to EAC Survey bigger.\n        /// </summary>\n        internal static string EACSurveyBigger_512_256_256 {\n            get {\n                return ResourceManager.GetString(\"EACSurveyBigger_512_256_256\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Edit.\n        /// </summary>\n        internal static string Edit {\n            get {\n                return ResourceManager.GetString(\"Edit\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Edit asteroid.\n        /// </summary>\n        internal static string EditAsteroid {\n            get {\n                return ResourceManager.GetString(\"EditAsteroid\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Edit cargo box.\n        /// </summary>\n        internal static string EditCargoBox {\n            get {\n                return ResourceManager.GetString(\"EditCargoBox\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to YOU ARE EDITING PREFAB CONTAINER NOW.\n        /// </summary>\n        internal static string EditingActiveContainer {\n            get {\n                return ResourceManager.GetString(\"EditingActiveContainer\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Press Shift+J to connect selected waypoints by numbers\n        ///Press Shift+K to connect/disconnect all selected waypoints\n        ///Press Shift+N to create waypoint group\n        ///Click a waypoint to cycle between groups it belongs to.\n        /// </summary>\n        internal static string EditingWayPointConnections {\n            get {\n                return ResourceManager.GetString(\"EditingWayPointConnections\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Press Shift+J to connect selected waypoints by numbers\n        ///Press Shift+K to connect/disconnect all selected waypoints\n        ///Press Shift+N to rename waypoint group {0}\n        ///Ctrl+click waypoints to add/remove them from {0}.\n        /// </summary>\n        internal static string EditingWayPointConnectionsPathSelected {\n            get {\n                return ResourceManager.GetString(\"EditingWayPointConnectionsPathSelected\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Edit inventory.\n        /// </summary>\n        internal static string EditInventory {\n            get {\n                return ResourceManager.GetString(\"EditInventory\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Edit objects.\n        /// </summary>\n        internal static string EditObjects {\n            get {\n                return ResourceManager.GetString(\"EditObjects\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Editor.\n        /// </summary>\n        internal static string Editor {\n            get {\n                return ResourceManager.GetString(\"Editor\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Do you really want to clear the whole sector?.\n        /// </summary>\n        internal static string EditorClearWholeSector {\n            get {\n                return ResourceManager.GetString(\"EditorClearWholeSector\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Decrease grid scale.\n        /// </summary>\n        internal static string EditorDecreaseGridScale {\n            get {\n                return ResourceManager.GetString(\"EditorDecreaseGridScale\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Named groups.\n        /// </summary>\n        internal static string EditorGroups {\n            get {\n                return ResourceManager.GetString(\"EditorGroups\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Add to group.\n        /// </summary>\n        internal static string EditorGroupsAddObjects {\n            get {\n                return ResourceManager.GetString(\"EditorGroupsAddObjects\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Create group error.\n        /// </summary>\n        internal static string EditorGroupsCantCreateGroupCaption {\n            get {\n                return ResourceManager.GetString(\"EditorGroupsCantCreateGroupCaption\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Can’t create group..\n        /// </summary>\n        internal static string EditorGroupsCantCreateGroupText {\n            get {\n                return ResourceManager.GetString(\"EditorGroupsCantCreateGroupText\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Create group.\n        /// </summary>\n        internal static string EditorGroupsCreateGroup {\n            get {\n                return ResourceManager.GetString(\"EditorGroupsCreateGroup\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Delete group.\n        /// </summary>\n        internal static string EditorGroupsDeleteGroup {\n            get {\n                return ResourceManager.GetString(\"EditorGroupsDeleteGroup\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Load from sector.\n        /// </summary>\n        internal static string EditorGroupsLoadGroup {\n            get {\n                return ResourceManager.GetString(\"EditorGroupsLoadGroup\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Rename group error.\n        /// </summary>\n        internal static string EditorGroupsNameUsedCaption {\n            get {\n                return ResourceManager.GetString(\"EditorGroupsNameUsedCaption\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The group name is already used..\n        /// </summary>\n        internal static string EditorGroupsNameUsedText {\n            get {\n                return ResourceManager.GetString(\"EditorGroupsNameUsedText\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Remove from group.\n        /// </summary>\n        internal static string EditorGroupsRemoveObjects {\n            get {\n                return ResourceManager.GetString(\"EditorGroupsRemoveObjects\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Rename group.\n        /// </summary>\n        internal static string EditorGroupsRenameGroup {\n            get {\n                return ResourceManager.GetString(\"EditorGroupsRenameGroup\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Select group.\n        /// </summary>\n        internal static string EditorGroupsSelectGroup {\n            get {\n                return ResourceManager.GetString(\"EditorGroupsSelectGroup\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Unselect group.\n        /// </summary>\n        internal static string EditorGroupsUnselectGroup {\n            get {\n                return ResourceManager.GetString(\"EditorGroupsUnselectGroup\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Editor help.\n        /// </summary>\n        internal static string EditorHelpCaption {\n            get {\n                return ResourceManager.GetString(\"EditorHelpCaption\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Increase grid scale.\n        /// </summary>\n        internal static string EditorIncreaseGridScale {\n            get {\n                return ResourceManager.GetString(\"EditorIncreaseGridScale\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Are you sure you want to load? Any changes since your last save will be lost..\n        /// </summary>\n        internal static string EditorLoadSectorMessage {\n            get {\n                return ResourceManager.GetString(\"EditorLoadSectorMessage\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Menu.\n        /// </summary>\n        internal static string EditorMenuButtonText {\n            get {\n                return ResourceManager.GetString(\"EditorMenuButtonText\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Object rotation amount in degrees: .\n        /// </summary>\n        internal static string EditorObjectAxisRotationAmount {\n            get {\n                return ResourceManager.GetString(\"EditorObjectAxisRotationAmount\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Editor options.\n        /// </summary>\n        internal static string EditorOptions {\n            get {\n                return ResourceManager.GetString(\"EditorOptions\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Primary action key.\n        /// </summary>\n        internal static string EditorPrimaryActionKey {\n            get {\n                return ResourceManager.GetString(\"EditorPrimaryActionKey\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Secondary action key.\n        /// </summary>\n        internal static string EditorSecondaryActionKey {\n            get {\n                return ResourceManager.GetString(\"EditorSecondaryActionKey\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Type selectability &amp; visibility.\n        /// </summary>\n        internal static string EditorSelectAndHide {\n            get {\n                return ResourceManager.GetString(\"EditorSelectAndHide\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Switch gizmo mode.\n        /// </summary>\n        internal static string EditorSwitchGizmoMode {\n            get {\n                return ResourceManager.GetString(\"EditorSwitchGizmoMode\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Switch gizmo space.\n        /// </summary>\n        internal static string EditorSwitchGizmoSpace {\n            get {\n                return ResourceManager.GetString(\"EditorSwitchGizmoSpace\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Voxel hand.\n        /// </summary>\n        internal static string EditorVoxelHand {\n            get {\n                return ResourceManager.GetString(\"EditorVoxelHand\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Edit prefab.\n        /// </summary>\n        internal static string EditPrefab {\n            get {\n                return ResourceManager.GetString(\"EditPrefab\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Edit container.\n        /// </summary>\n        internal static string EditPrefabContainer {\n            get {\n                return ResourceManager.GetString(\"EditPrefabContainer\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Edit prefab kinematic parts health and max health.\n        /// </summary>\n        internal static string EditPrefabKinematicPartsHealthAndMaxHealth {\n            get {\n                return ResourceManager.GetString(\"EditPrefabKinematicPartsHealthAndMaxHealth\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Edit prefab large weapon.\n        /// </summary>\n        internal static string EditPrefabLargeWeapon {\n            get {\n                return ResourceManager.GetString(\"EditPrefabLargeWeapon\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Edit properties.\n        /// </summary>\n        internal static string EditProperties {\n            get {\n                return ResourceManager.GetString(\"EditProperties\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Edit entity properties.\n        /// </summary>\n        internal static string EditPropertiesTooltip {\n            get {\n                return ResourceManager.GetString(\"EditPropertiesTooltip\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Edit scanner.\n        /// </summary>\n        internal static string EditScanner {\n            get {\n                return ResourceManager.GetString(\"EditScanner\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Edit selected.\n        /// </summary>\n        internal static string EditSelected {\n            get {\n                return ResourceManager.GetString(\"EditSelected\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Edit currently selected object.\n        /// </summary>\n        internal static string EditSelectedTooltip {\n            get {\n                return ResourceManager.GetString(\"EditSelectedTooltip\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Edit small ship.\n        /// </summary>\n        internal static string EditSmallShip {\n            get {\n                return ResourceManager.GetString(\"EditSmallShip\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Edit voxel hand.\n        /// </summary>\n        internal static string EditVoxelHand {\n            get {\n                return ResourceManager.GetString(\"EditVoxelHand\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Project to voxel surface.\n        /// </summary>\n        internal static string EditVoxelHandIsProjected {\n            get {\n                return ResourceManager.GetString(\"EditVoxelHandIsProjected\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Project to waypoints.\n        /// </summary>\n        internal static string EditVoxelHandIsProjectedToWaypoints {\n            get {\n                return ResourceManager.GetString(\"EditVoxelHandIsProjectedToWaypoints\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Voxel hand box.\n        /// </summary>\n        internal static string EditVoxelHandShapeBox {\n            get {\n                return ResourceManager.GetString(\"EditVoxelHandShapeBox\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Voxel hand cuboid.\n        /// </summary>\n        internal static string EditVoxelHandShapeCuboid {\n            get {\n                return ResourceManager.GetString(\"EditVoxelHandShapeCuboid\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Voxel hand cylinder.\n        /// </summary>\n        internal static string EditVoxelHandShapeCylinder {\n            get {\n                return ResourceManager.GetString(\"EditVoxelHandShapeCylinder\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Distance.\n        /// </summary>\n        internal static string EditVoxelHandShapeDistance {\n            get {\n                return ResourceManager.GetString(\"EditVoxelHandShapeDistance\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Voxel hand material.\n        /// </summary>\n        internal static string EditVoxelHandShapeMaterial {\n            get {\n                return ResourceManager.GetString(\"EditVoxelHandShapeMaterial\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Voxel hand mode.\n        /// </summary>\n        internal static string EditVoxelHandShapeMode {\n            get {\n                return ResourceManager.GetString(\"EditVoxelHandShapeMode\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Offset.\n        /// </summary>\n        internal static string EditVoxelHandShapeOffset {\n            get {\n                return ResourceManager.GetString(\"EditVoxelHandShapeOffset\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Size.\n        /// </summary>\n        internal static string EditVoxelHandShapeSize {\n            get {\n                return ResourceManager.GetString(\"EditVoxelHandShapeSize\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Voxel hand sphere.\n        /// </summary>\n        internal static string EditVoxelHandShapeSphere {\n            get {\n                return ResourceManager.GetString(\"EditVoxelHandShapeSphere\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Voxel hand type.\n        /// </summary>\n        internal static string EditVoxelHandShapeType {\n            get {\n                return ResourceManager.GetString(\"EditVoxelHandShapeType\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You can also press V to enter voxel hand mode.\n        /// </summary>\n        internal static string EditVoxelHandTooltip {\n            get {\n                return ResourceManager.GetString(\"EditVoxelHandTooltip\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Electricity kit.\n        /// </summary>\n        internal static string ElectricityKit {\n            get {\n                return ResourceManager.GetString(\"ElectricityKit\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Email address.\n        /// </summary>\n        internal static string EmailAddress {\n            get {\n                return ResourceManager.GetString(\"EmailAddress\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to EMP bomb.\n        /// </summary>\n        internal static string EMPBombHud {\n            get {\n                return ResourceManager.GetString(\"EMPBombHud\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Empty 512x512x512.\n        /// </summary>\n        internal static string Empty512x512x512 {\n            get {\n                return ResourceManager.GetString(\"Empty512x512x512\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Empty description.\n        /// </summary>\n        internal static string EmptyDescription {\n            get {\n                return ResourceManager.GetString(\"EmptyDescription\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Enable coop.\n        /// </summary>\n        internal static string EnableCoop {\n            get {\n                return ResourceManager.GetString(\"EnableCoop\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Enabled.\n        /// </summary>\n        internal static string Enabled {\n            get {\n                return ResourceManager.GetString(\"Enabled\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Enable lights in editor.\n        /// </summary>\n        internal static string EnableLightsInEditor {\n            get {\n                return ResourceManager.GetString(\"EnableLightsInEditor\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Enable snap point filter.\n        /// </summary>\n        internal static string EnableSnapPointFilter {\n            get {\n                return ResourceManager.GetString(\"EnableSnapPointFilter\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to End.\n        /// </summary>\n        internal static string End {\n            get {\n                return ResourceManager.GetString(\"End\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Enemy.\n        /// </summary>\n        internal static string Enemy {\n            get {\n                return ResourceManager.GetString(\"Enemy\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Enemies can’t die.\n        /// </summary>\n        internal static string EnemyCantDie {\n            get {\n                return ResourceManager.GetString(\"EnemyCantDie\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Engine.\n        /// </summary>\n        internal static string Engine {\n            get {\n                return ResourceManager.GetString(\"Engine\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to CHEMICAL ENGINE 1 | Max speed: 100 m/s | Thurst: 900000 N | Fuel: Helium.\n        /// </summary>\n        internal static string EngineChemical1 {\n            get {\n                return ResourceManager.GetString(\"EngineChemical1\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to CHEMICAL ENGINE 2 | Max speed: 105 m/s | Thurst: 1000000 N | Fuel: Helium.\n        /// </summary>\n        internal static string EngineChemical2 {\n            get {\n                return ResourceManager.GetString(\"EngineChemical2\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to CHEMICAL ENGINE 3 | Max speed: 110 m/s | Thurst: 1100000 N | Fuel: Helium.\n        /// </summary>\n        internal static string EngineChemical3 {\n            get {\n                return ResourceManager.GetString(\"EngineChemical3\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to CHEMICAL ENGINE 4 | Max speed: 115 m/s | Thurst: 1200000 N | Fuel: Helium.\n        /// </summary>\n        internal static string EngineChemical4 {\n            get {\n                return ResourceManager.GetString(\"EngineChemical4\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to CHEMICAL ENGINE 5 | Max speed: 120 m/s | Thurst: 1300000 N | Fuel: Helium.\n        /// </summary>\n        internal static string EngineChemical5 {\n            get {\n                return ResourceManager.GetString(\"EngineChemical5\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to NUCLEAR ENGINE 1 | Max speed: 140 m/s | Thurst: 1100000 N | Fuel: Plutonium.\n        /// </summary>\n        internal static string EngineNuclear1 {\n            get {\n                return ResourceManager.GetString(\"EngineNuclear1\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to NUCLEAR ENGINE 2 | Max speed: 145 m/s | Thurst: 1200000 N | Fuel: Plutonium.\n        /// </summary>\n        internal static string EngineNuclear2 {\n            get {\n                return ResourceManager.GetString(\"EngineNuclear2\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to NUCLEAR ENGINE 3 | Max speed: 150 m/s | Thurst: 1300000 N | Fuel: Plutonium.\n        /// </summary>\n        internal static string EngineNuclear3 {\n            get {\n                return ResourceManager.GetString(\"EngineNuclear3\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to NUCLEAR ENGINE 4 | Max speed: 155 m/s | Thurst: 1400000 N | Fuel: Plutonium.\n        /// </summary>\n        internal static string EngineNuclear4 {\n            get {\n                return ResourceManager.GetString(\"EngineNuclear4\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to NUCLEAR ENGINE 5 | Max speed: 160 m/s | Thurst: 1500000 N | Fuel: Plutonium.\n        /// </summary>\n        internal static string EngineNuclear5 {\n            get {\n                return ResourceManager.GetString(\"EngineNuclear5\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to POWER CELLS ENGINE 1 | Max speed: 130 m/s | Thurst: 1000000 N | Fuel: Ice.\n        /// </summary>\n        internal static string EnginePowerCells1 {\n            get {\n                return ResourceManager.GetString(\"EnginePowerCells1\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to POWER CELLS ENGINE 2 | Max speed: 135 m/s | Thurst: 1075000 N | Fuel: Ice.\n        /// </summary>\n        internal static string EnginePowerCells2 {\n            get {\n                return ResourceManager.GetString(\"EnginePowerCells2\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to POWER CELLS ENGINE 3 | Max speed: 140 m/s | Thurst: 1150000 N | Fuel: Ice.\n        /// </summary>\n        internal static string EnginePowerCells3 {\n            get {\n                return ResourceManager.GetString(\"EnginePowerCells3\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to POWER CELLS ENGINE 4 | Max speed: 145 m/s | Thurst: 1225000 N | Fuel: Ice.\n        /// </summary>\n        internal static string EnginePowerCells4 {\n            get {\n                return ResourceManager.GetString(\"EnginePowerCells4\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to POWER CELLS ENGINE 5 | Max speed: 150 m/s | Thurst: 1300000 N | Fuel: Ice.\n        /// </summary>\n        internal static string EnginePowerCells5 {\n            get {\n                return ResourceManager.GetString(\"EnginePowerCells5\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Engines.\n        /// </summary>\n        internal static string EngineShutdown {\n            get {\n                return ResourceManager.GetString(\"EngineShutdown\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Enter at least 2 characters.\n        /// </summary>\n        internal static string EnterAtLeastTwoCharacters {\n            get {\n                return ResourceManager.GetString(\"EnterAtLeastTwoCharacters\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Enter the drone.\n        /// </summary>\n        internal static string EnterDrone {\n            get {\n                return ResourceManager.GetString(\"EnterDrone\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Enter prefab container.\n        /// </summary>\n        internal static string EnterPrefabContainer {\n            get {\n                return ResourceManager.GetString(\"EnterPrefabContainer\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Press LMB on prefab inside selected prefab container to enter container edit mode.\n        /// </summary>\n        internal static string EnterPrefabContainerTooltip {\n            get {\n                return ResourceManager.GetString(\"EnterPrefabContainerTooltip\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Entering sector… please wait..\n        /// </summary>\n        internal static string EnterSectorInProgressPleaseWait {\n            get {\n                return ResourceManager.GetString(\"EnterSectorInProgressPleaseWait\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Enter voxel hand.\n        /// </summary>\n        internal static string EnterVoxelHand {\n            get {\n                return ResourceManager.GetString(\"EnterVoxelHand\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Press V button to modify asteroids using the voxel hand.\n        /// </summary>\n        internal static string EnterVoxelHandTooltip {\n            get {\n                return ResourceManager.GetString(\"EnterVoxelHandTooltip\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to EntityId: .\n        /// </summary>\n        internal static string EntityId {\n            get {\n                return ResourceManager.GetString(\"EntityId\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Entity is already connected.\n        /// </summary>\n        internal static string EntityIsAlreadyConnected {\n            get {\n                return ResourceManager.GetString(\"EntityIsAlreadyConnected\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Entity does not exist.\n        /// </summary>\n        internal static string EntityIsNotExist {\n            get {\n                return ResourceManager.GetString(\"EntityIsNotExist\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Entity is not supported.\n        /// </summary>\n        internal static string EntityIsNotSupported {\n            get {\n                return ResourceManager.GetString(\"EntityIsNotSupported\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Entry point is already defined. Select the already defined entry point?.\n        /// </summary>\n        internal static string EntryPointAlreadyDefined {\n            get {\n                return ResourceManager.GetString(\"EntryPointAlreadyDefined\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Erhard.\n        /// </summary>\n        internal static string Erhard {\n            get {\n                return ResourceManager.GetString(\"Erhard\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Error.\n        /// </summary>\n        internal static string Error {\n            get {\n                return ResourceManager.GetString(\"Error\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Error creating network connection. Miner Wars will run in \n        ///offline mode. For more information see the log file..\n        /// </summary>\n        internal static string ErrorCreatingNetworkConnection {\n            get {\n                return ResourceManager.GetString(\"ErrorCreatingNetworkConnection\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Everyone.\n        /// </summary>\n        internal static string Everyone {\n            get {\n                return ResourceManager.GetString(\"Everyone\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Exit.\n        /// </summary>\n        internal static string Exit {\n            get {\n                return ResourceManager.GetString(\"Exit\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Exit the drone.\n        /// </summary>\n        internal static string ExitDrone {\n            get {\n                return ResourceManager.GetString(\"ExitDrone\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Exit prefab container.\n        /// </summary>\n        internal static string ExitEditingMode {\n            get {\n                return ResourceManager.GetString(\"ExitEditingMode\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Exits from prefab container editing mode.\n        /// </summary>\n        internal static string ExitEditingModeTooltip {\n            get {\n                return ResourceManager.GetString(\"ExitEditingModeTooltip\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Exit selected.\n        /// </summary>\n        internal static string ExitSelected {\n            get {\n                return ResourceManager.GetString(\"ExitSelected\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Exit to main menu.\n        /// </summary>\n        internal static string ExitToMainMenu {\n            get {\n                return ResourceManager.GetString(\"ExitToMainMenu\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Exit to Windows.\n        /// </summary>\n        internal static string ExitToWindows {\n            get {\n                return ResourceManager.GetString(\"ExitToWindows\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Exit voxel hand.\n        /// </summary>\n        internal static string ExitVoxelHand {\n            get {\n                return ResourceManager.GetString(\"ExitVoxelHand\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Press the V button again to exit voxel hand mode.\n        /// </summary>\n        internal static string ExitVoxelHandTooltip {\n            get {\n                return ResourceManager.GetString(\"ExitVoxelHandTooltip\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Explosion in: .\n        /// </summary>\n        internal static string ExplosionIn {\n            get {\n                return ResourceManager.GetString(\"ExplosionIn\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Explosives.\n        /// </summary>\n        internal static string Explosives {\n            get {\n                return ResourceManager.GetString(\"Explosives\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Add one milion credits.\n        /// </summary>\n        internal static string ExtraMoney {\n            get {\n                return ResourceManager.GetString(\"ExtraMoney\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Faction.\n        /// </summary>\n        internal static string Faction {\n            get {\n                return ResourceManager.GetString(\"Faction\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to People’s Republic of China.\n        /// </summary>\n        internal static string FactionChinese {\n            get {\n                return ResourceManager.GetString(\"FactionChinese\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Chinese.\n        /// </summary>\n        internal static string FactionChineseShort {\n            get {\n                return ResourceManager.GetString(\"FactionChineseShort\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Commonwealth of Holy Church.\n        /// </summary>\n        internal static string FactionChurch {\n            get {\n                return ResourceManager.GetString(\"FactionChurch\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Church.\n        /// </summary>\n        internal static string FactionChurchShort {\n            get {\n                return ResourceManager.GetString(\"FactionChurchShort\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Czecho-Slovak Federation.\n        /// </summary>\n        internal static string FactionCSR {\n            get {\n                return ResourceManager.GetString(\"FactionCSR\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Euro-American Confederation.\n        /// </summary>\n        internal static string FactionEuroamerican {\n            get {\n                return ResourceManager.GetString(\"FactionEuroamerican\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Euro-American.\n        /// </summary>\n        internal static string FactionEuroamericanShort {\n            get {\n                return ResourceManager.GetString(\"FactionEuroamericanShort\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fourth Reich.\n        /// </summary>\n        internal static string FactionFourthReich {\n            get {\n                return ResourceManager.GetString(\"FactionFourthReich\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fourth Reich.\n        /// </summary>\n        internal static string FactionFourthReichShort {\n            get {\n                return ResourceManager.GetString(\"FactionFourthReichShort\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Free Asia.\n        /// </summary>\n        internal static string FactionFreeAsia {\n            get {\n                return ResourceManager.GetString(\"FactionFreeAsia\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Freelancers.\n        /// </summary>\n        internal static string FactionFreelancers {\n            get {\n                return ResourceManager.GetString(\"FactionFreelancers\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to FSRE.\n        /// </summary>\n        internal static string FactionFSRE {\n            get {\n                return ResourceManager.GetString(\"FactionFSRE\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Free Republic of India.\n        /// </summary>\n        internal static string FactionIndia {\n            get {\n                return ResourceManager.GetString(\"FactionIndia\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Japanese Empire.\n        /// </summary>\n        internal static string FactionJapan {\n            get {\n                return ResourceManager.GetString(\"FactionJapan\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Miners.\n        /// </summary>\n        internal static string FactionMiners {\n            get {\n                return ResourceManager.GetString(\"FactionMiners\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Neutral.\n        /// </summary>\n        internal static string FactionNeutralShort {\n            get {\n                return ResourceManager.GetString(\"FactionNeutralShort\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to None.\n        /// </summary>\n        internal static string FactionNone {\n            get {\n                return ResourceManager.GetString(\"FactionNone\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to OmniCorp.\n        /// </summary>\n        internal static string FactionOmnicorp {\n            get {\n                return ResourceManager.GetString(\"FactionOmnicorp\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to OmniCorp.\n        /// </summary>\n        internal static string FactionOmnicorpShort {\n            get {\n                return ResourceManager.GetString(\"FactionOmnicorpShort\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Pirate.\n        /// </summary>\n        internal static string FactionPirate {\n            get {\n                return ResourceManager.GetString(\"FactionPirate\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Rainiers.\n        /// </summary>\n        internal static string FactionRainiers {\n            get {\n                return ResourceManager.GetString(\"FactionRainiers\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Space Rangers.\n        /// </summary>\n        internal static string FactionRangers {\n            get {\n                return ResourceManager.GetString(\"FactionRangers\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ravens Force.\n        /// </summary>\n        internal static string FactionRavens {\n            get {\n                return ResourceManager.GetString(\"FactionRavens\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Russian.\n        /// </summary>\n        internal static string FactionRussian {\n            get {\n                return ResourceManager.GetString(\"FactionRussian\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Russian Commando.\n        /// </summary>\n        internal static string FactionRussianKGB {\n            get {\n                return ResourceManager.GetString(\"FactionRussianKGB\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Russian.\n        /// </summary>\n        internal static string FactionRussianShort {\n            get {\n                return ResourceManager.GetString(\"FactionRussianShort\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Arabs.\n        /// </summary>\n        internal static string FactionSaudi {\n            get {\n                return ResourceManager.GetString(\"FactionSaudi\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Arabs.\n        /// </summary>\n        internal static string FactionSaudiShort {\n            get {\n                return ResourceManager.GetString(\"FactionSaudiShort\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Slavers.\n        /// </summary>\n        internal static string FactionSlavers {\n            get {\n                return ResourceManager.GetString(\"FactionSlavers\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Space Mining Ltd..\n        /// </summary>\n        internal static string FactionSMLtd {\n            get {\n                return ResourceManager.GetString(\"FactionSMLtd\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The Syndicate.\n        /// </summary>\n        internal static string FactionSyndicate {\n            get {\n                return ResourceManager.GetString(\"FactionSyndicate\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The Templars.\n        /// </summary>\n        internal static string FactionTemplars {\n            get {\n                return ResourceManager.GetString(\"FactionTemplars\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Space Trader’s Guild.\n        /// </summary>\n        internal static string FactionTraders {\n            get {\n                return ResourceManager.GetString(\"FactionTraders\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Trade &amp; Transport Ltd..\n        /// </summary>\n        internal static string FactionTTLtd {\n            get {\n                return ResourceManager.GetString(\"FactionTTLtd\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to White Wolves.\n        /// </summary>\n        internal static string FactionWhiteWolves {\n            get {\n                return ResourceManager.GetString(\"FactionWhiteWolves\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Factory ambush.\n        /// </summary>\n        internal static string FACTORY_AMBUSH {\n            get {\n                return ResourceManager.GetString(\"FACTORY_AMBUSH\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Factory ambush\n        ///.\n        /// </summary>\n        internal static string FACTORY_AMBUSH_Description {\n            get {\n                return ResourceManager.GetString(\"FACTORY_AMBUSH_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You were killed in the auto-destruction sequence.\n        /// </summary>\n        internal static string Fail_Autodestruction {\n            get {\n                return ResourceManager.GetString(\"Fail_Autodestruction\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You have been caught by the guards.\n        /// </summary>\n        internal static string Fail_CaughtByGuards {\n            get {\n                return ResourceManager.GetString(\"Fail_CaughtByGuards\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You have failed in protecting the hacker.\n        /// </summary>\n        internal static string Fail_HackerKilled {\n            get {\n                return ResourceManager.GetString(\"Fail_HackerKilled\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You have lost your target.\n        /// </summary>\n        internal static string Fail_LostTarget {\n            get {\n                return ResourceManager.GetString(\"Fail_LostTarget\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You have missed the window of opportunity.\n        /// </summary>\n        internal static string Fail_MissedTimeWindow {\n            get {\n                return ResourceManager.GetString(\"Fail_MissedTimeWindow\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Your mothership was destroyed.\n        /// </summary>\n        internal static string Fail_MothershipDestroyed {\n            get {\n                return ResourceManager.GetString(\"Fail_MothershipDestroyed\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Your objective was destroyed.\n        /// </summary>\n        internal static string Fail_ObjectiveDestroyed {\n            get {\n                return ResourceManager.GetString(\"Fail_ObjectiveDestroyed\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You have lost your plutonium.\n        /// </summary>\n        internal static string Fail_PlutoniumLost {\n            get {\n                return ResourceManager.GetString(\"Fail_PlutoniumLost\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You have lost the race.\n        /// </summary>\n        internal static string Fail_RaceLost {\n            get {\n                return ResourceManager.GetString(\"Fail_RaceLost\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You have been spotted by your target.\n        /// </summary>\n        internal static string Fail_SeenByTarget {\n            get {\n                return ResourceManager.GetString(\"Fail_SeenByTarget\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You have ran out of time.\n        /// </summary>\n        internal static string Fail_TimeIsUp {\n            get {\n                return ResourceManager.GetString(\"Fail_TimeIsUp\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The transport was destroyed.\n        /// </summary>\n        internal static string Fail_TransportDestroyed {\n            get {\n                return ResourceManager.GetString(\"Fail_TransportDestroyed\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Failure.\n        /// </summary>\n        internal static string Failure {\n            get {\n                return ResourceManager.GetString(\"Failure\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fake screen.\n        /// </summary>\n        internal static string FakeScreen {\n            get {\n                return ResourceManager.GetString(\"FakeScreen\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fast test mission.\n        /// </summary>\n        internal static string FAST_TEST_MISSION {\n            get {\n                return ResourceManager.GetString(\"FAST_TEST_MISSION\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fly through the tunnels\n        ///.\n        /// </summary>\n        internal static string FAST_TEST_MISSION_Description {\n            get {\n                return ResourceManager.GetString(\"FAST_TEST_MISSION_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Accessible only from main menu.\n        /// </summary>\n        internal static string FeatureAccessibleOnlyFromMainMenu {\n            get {\n                return ResourceManager.GetString(\"FeatureAccessibleOnlyFromMainMenu\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to This feature is disabled..\n        /// </summary>\n        internal static string FeatureNotYetImplemented {\n            get {\n                return ResourceManager.GetString(\"FeatureNotYetImplemented\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Female.\n        /// </summary>\n        internal static string Female {\n            get {\n                return ResourceManager.GetString(\"Female\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Field of view.\n        /// </summary>\n        internal static string FieldOfView {\n            get {\n                return ResourceManager.GetString(\"FieldOfView\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Display only items for which I have blueprints.\n        /// </summary>\n        internal static string FilterOnlyItemsOnWhichHasBlueprintsToolTip {\n            get {\n                return ResourceManager.GetString(\"FilterOnlyItemsOnWhichHasBlueprintsToolTip\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Display only items for which I have enough ore.\n        /// </summary>\n        internal static string FilterOnlyItemsOnWhichHasOreToolTip {\n            get {\n                return ResourceManager.GetString(\"FilterOnlyItemsOnWhichHasOreToolTip\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Display only items which I have already created.\n        /// </summary>\n        internal static string FilterOnlyItemsWhichHasBuildToolTip {\n            get {\n                return ResourceManager.GetString(\"FilterOnlyItemsWhichHasBuildToolTip\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Find.\n        /// </summary>\n        internal static string Find {\n            get {\n                return ResourceManager.GetString(\"Find\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Find\n        ///entity\n        ///by ID.\n        /// </summary>\n        internal static string FindEntityByID {\n            get {\n                return ResourceManager.GetString(\"FindEntityByID\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Finished missions.\n        /// </summary>\n        internal static string FinishedMissions {\n            get {\n                return ResourceManager.GetString(\"FinishedMissions\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Finished sub-missions.\n        /// </summary>\n        internal static string FinishedSubmissions {\n            get {\n                return ResourceManager.GetString(\"FinishedSubmissions\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fire basic mine.\n        /// </summary>\n        internal static string FireBasicMine {\n            get {\n                return ResourceManager.GetString(\"FireBasicMine\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fire basic mine back.\n        /// </summary>\n        internal static string FireBasicMineBack {\n            get {\n                return ResourceManager.GetString(\"FireBasicMineBack\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fire basic mine front.\n        /// </summary>\n        internal static string FireBasicMineFront {\n            get {\n                return ResourceManager.GetString(\"FireBasicMineFront\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fire decoy flare.\n        /// </summary>\n        internal static string FireDecoyFlare {\n            get {\n                return ResourceManager.GetString(\"FireDecoyFlare\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fire decoy flare back.\n        /// </summary>\n        internal static string FireDecoyFlareBack {\n            get {\n                return ResourceManager.GetString(\"FireDecoyFlareBack\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fire decoy flare front.\n        /// </summary>\n        internal static string FireDecoyFlareFront {\n            get {\n                return ResourceManager.GetString(\"FireDecoyFlareFront\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fire fifth weapon.\n        /// </summary>\n        internal static string FireFifthWeapon {\n            get {\n                return ResourceManager.GetString(\"FireFifthWeapon\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fire flash bomb.\n        /// </summary>\n        internal static string FireFlashBomb {\n            get {\n                return ResourceManager.GetString(\"FireFlashBomb\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fire flash bomb back.\n        /// </summary>\n        internal static string FireFlashBombBack {\n            get {\n                return ResourceManager.GetString(\"FireFlashBombBack\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fire flash bomb front.\n        /// </summary>\n        internal static string FireFlashBombFront {\n            get {\n                return ResourceManager.GetString(\"FireFlashBombFront\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fire fourth weapon.\n        /// </summary>\n        internal static string FireFourthWeapon {\n            get {\n                return ResourceManager.GetString(\"FireFourthWeapon\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fire hologram.\n        /// </summary>\n        internal static string FireHologram {\n            get {\n                return ResourceManager.GetString(\"FireHologram\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fire hologram back.\n        /// </summary>\n        internal static string FireHologramBack {\n            get {\n                return ResourceManager.GetString(\"FireHologramBack\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fire hologram front.\n        /// </summary>\n        internal static string FireHologramFront {\n            get {\n                return ResourceManager.GetString(\"FireHologramFront\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fire primary weapon.\n        /// </summary>\n        internal static string FirePrimaryWeapon {\n            get {\n                return ResourceManager.GetString(\"FirePrimaryWeapon\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fire secondary weapon.\n        /// </summary>\n        internal static string FireSecondaryWeapon {\n            get {\n                return ResourceManager.GetString(\"FireSecondaryWeapon\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fire smart mine.\n        /// </summary>\n        internal static string FireSmartMine {\n            get {\n                return ResourceManager.GetString(\"FireSmartMine\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fire smart mine back.\n        /// </summary>\n        internal static string FireSmartMineBack {\n            get {\n                return ResourceManager.GetString(\"FireSmartMineBack\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fire smart mine front.\n        /// </summary>\n        internal static string FireSmartMineFront {\n            get {\n                return ResourceManager.GetString(\"FireSmartMineFront\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fire smoke bomb.\n        /// </summary>\n        internal static string FireSmokeBomb {\n            get {\n                return ResourceManager.GetString(\"FireSmokeBomb\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fire smoke bomb back.\n        /// </summary>\n        internal static string FireSmokeBombBack {\n            get {\n                return ResourceManager.GetString(\"FireSmokeBombBack\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fire smoke bomb front.\n        /// </summary>\n        internal static string FireSmokeBombFront {\n            get {\n                return ResourceManager.GetString(\"FireSmokeBombFront\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fire third weapon.\n        /// </summary>\n        internal static string FireThirdWeapon {\n            get {\n                return ResourceManager.GetString(\"FireThirdWeapon\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to First spawn.\n        /// </summary>\n        internal static string FirstSpawn {\n            get {\n                return ResourceManager.GetString(\"FirstSpawn\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fix all collisions before returning back to game.\n        /// </summary>\n        internal static string FixCollisions {\n            get {\n                return ResourceManager.GetString(\"FixCollisions\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fixed snap point size.\n        /// </summary>\n        internal static string FixedSnapPointSize {\n            get {\n                return ResourceManager.GetString(\"FixedSnapPointSize\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fixing.\n        /// </summary>\n        internal static string Fixing {\n            get {\n                return ResourceManager.GetString(\"Fixing\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Flash bomb.\n        /// </summary>\n        internal static string FlashBombHud {\n            get {\n                return ResourceManager.GetString(\"FlashBombHud\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Flat_128x64x128.\n        /// </summary>\n        internal static string Flat_128x64x128 {\n            get {\n                return ResourceManager.GetString(\"Flat_128x64x128\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Flat_256x64x256.\n        /// </summary>\n        internal static string Flat_256x64x256 {\n            get {\n                return ResourceManager.GetString(\"Flat_256x64x256\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Flat_512x64x512.\n        /// </summary>\n        internal static string Flat_512x64x512 {\n            get {\n                return ResourceManager.GetString(\"Flat_512x64x512\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Flee.\n        /// </summary>\n        internal static string Flee {\n            get {\n                return ResourceManager.GetString(\"Flee\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fly to the start line.\n        /// </summary>\n        internal static string FlyToStartingPoint {\n            get {\n                return ResourceManager.GetString(\"FlyToStartingPoint\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fog settings.\n        /// </summary>\n        internal static string FogSettings {\n            get {\n                return ResourceManager.GetString(\"FogSettings\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Configure fog settings.\n        /// </summary>\n        internal static string FogSettingsTooltip {\n            get {\n                return ResourceManager.GetString(\"FogSettingsTooltip\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Follow target.\n        /// </summary>\n        internal static string FollowTarget {\n            get {\n                return ResourceManager.GetString(\"FollowTarget\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You cannot travel here..\n        /// </summary>\n        internal static string ForbiddenSolarMapAreaWarning {\n            get {\n                return ResourceManager.GetString(\"ForbiddenSolarMapAreaWarning\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fourth Reich captain.\n        /// </summary>\n        internal static string FORCaptain {\n            get {\n                return ResourceManager.GetString(\"FORCaptain\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Forgotten facility.\n        /// </summary>\n        internal static string FORGOTTEN_FACILITY {\n            get {\n                return ResourceManager.GetString(\"FORGOTTEN_FACILITY\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to There were many things to be said about this facility, but they are all forgotten.\n        ///.\n        /// </summary>\n        internal static string FORGOTTEN_FACILITY_Description {\n            get {\n                return ResourceManager.GetString(\"FORGOTTEN_FACILITY_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to By submitting this form, you confirm that you have read and agree to the Miner Wars Terms of Use.\n        /// </summary>\n        internal static string FormAgreement1 {\n            get {\n                return ResourceManager.GetString(\"FormAgreement1\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to and Privacy Policy. For more information visit www.minerwars.com..\n        /// </summary>\n        internal static string FormAgreement2 {\n            get {\n                return ResourceManager.GetString(\"FormAgreement2\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to fort_val_box_128.\n        /// </summary>\n        internal static string fort_val_box_128 {\n            get {\n                return ResourceManager.GetString(\"fort_val_box_128\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fort Valiant I.\n        /// </summary>\n        internal static string FORT_VALIANT {\n            get {\n                return ResourceManager.GetString(\"FORT_VALIANT\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fort Valiant II.\n        /// </summary>\n        internal static string FORT_VALIANT_B {\n            get {\n                return ResourceManager.GetString(\"FORT_VALIANT_B\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fort Valiant II\n        ///.\n        /// </summary>\n        internal static string FORT_VALIANT_B_Description {\n            get {\n                return ResourceManager.GetString(\"FORT_VALIANT_B_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string FORT_VALIANT_B_FLY_ONE_Description {\n            get {\n                return ResourceManager.GetString(\"FORT_VALIANT_B_FLY_ONE_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Approach Fort Valiant.\n        /// </summary>\n        internal static string FORT_VALIANT_B_FLY_ONE_Name {\n            get {\n                return ResourceManager.GetString(\"FORT_VALIANT_B_FLY_ONE_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string FORT_VALIANT_B_MEET_CAPTAIN_Description {\n            get {\n                return ResourceManager.GetString(\"FORT_VALIANT_B_MEET_CAPTAIN_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Report to captain Cedric.\n        /// </summary>\n        internal static string FORT_VALIANT_B_MEET_CAPTAIN_Name {\n            get {\n                return ResourceManager.GetString(\"FORT_VALIANT_B_MEET_CAPTAIN_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string FORT_VALIANT_B_VISIT_VENDOR_Description {\n            get {\n                return ResourceManager.GetString(\"FORT_VALIANT_B_VISIT_VENDOR_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Visit the Templar supplies and the equipment vendor.\n        /// </summary>\n        internal static string FORT_VALIANT_B_VISIT_VENDOR_Name {\n            get {\n                return ResourceManager.GetString(\"FORT_VALIANT_B_VISIT_VENDOR_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fort valiant base 256x512x256.\n        /// </summary>\n        internal static string Fort_valiant_base {\n            get {\n                return ResourceManager.GetString(\"Fort_valiant_base\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fort Valiant III.\n        /// </summary>\n        internal static string FORT_VALIANT_C {\n            get {\n                return ResourceManager.GetString(\"FORT_VALIANT_C\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string FORT_VALIANT_C_CAPTAIN_Description {\n            get {\n                return ResourceManager.GetString(\"FORT_VALIANT_C_CAPTAIN_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Report to captain Cedric.\n        /// </summary>\n        internal static string FORT_VALIANT_C_CAPTAIN_Name {\n            get {\n                return ResourceManager.GetString(\"FORT_VALIANT_C_CAPTAIN_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string FORT_VALIANT_C_CATACOMBS_Description {\n            get {\n                return ResourceManager.GetString(\"FORT_VALIANT_C_CATACOMBS_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Escape through the catacombs.\n        /// </summary>\n        internal static string FORT_VALIANT_C_CATACOMBS_Name {\n            get {\n                return ResourceManager.GetString(\"FORT_VALIANT_C_CATACOMBS_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Dungeons of Valiant\n        ///.\n        /// </summary>\n        internal static string FORT_VALIANT_C_Description {\n            get {\n                return ResourceManager.GetString(\"FORT_VALIANT_C_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string FORT_VALIANT_C_EQUIP_Description {\n            get {\n                return ResourceManager.GetString(\"FORT_VALIANT_C_EQUIP_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hand out your equipment.\n        /// </summary>\n        internal static string FORT_VALIANT_C_EQUIP_Name {\n            get {\n                return ResourceManager.GetString(\"FORT_VALIANT_C_EQUIP_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string FORT_VALIANT_C_EQUIP_TALK_Description {\n            get {\n                return ResourceManager.GetString(\"FORT_VALIANT_C_EQUIP_TALK_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Talk to the royal guard.\n        /// </summary>\n        internal static string FORT_VALIANT_C_EQUIP_TALK_Name {\n            get {\n                return ResourceManager.GetString(\"FORT_VALIANT_C_EQUIP_TALK_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string FORT_VALIANT_C_FOLLOW_FIND_VENTILATION_Description {\n            get {\n                return ResourceManager.GetString(\"FORT_VALIANT_C_FOLLOW_FIND_VENTILATION_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Find the vent entrance.\n        /// </summary>\n        internal static string FORT_VALIANT_C_FOLLOW_FIND_VENTILATION_Name {\n            get {\n                return ResourceManager.GetString(\"FORT_VALIANT_C_FOLLOW_FIND_VENTILATION_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string FORT_VALIANT_C_FOLLOW_TURN_OFF_GATE_Description {\n            get {\n                return ResourceManager.GetString(\"FORT_VALIANT_C_FOLLOW_TURN_OFF_GATE_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Turn off the gate.\n        /// </summary>\n        internal static string FORT_VALIANT_C_FOLLOW_TURN_OFF_GATE_Name {\n            get {\n                return ResourceManager.GetString(\"FORT_VALIANT_C_FOLLOW_TURN_OFF_GATE_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string FORT_VALIANT_C_GET_EQUP_CARGO_Description {\n            get {\n                return ResourceManager.GetString(\"FORT_VALIANT_C_GET_EQUP_CARGO_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Take equipment from the cargo box.\n        /// </summary>\n        internal static string FORT_VALIANT_C_GET_EQUP_CARGO_Name {\n            get {\n                return ResourceManager.GetString(\"FORT_VALIANT_C_GET_EQUP_CARGO_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string FORT_VALIANT_C_LEAVE_FOLLOW_Description {\n            get {\n                return ResourceManager.GetString(\"FORT_VALIANT_C_LEAVE_FOLLOW_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Follow given coordinates.\n        /// </summary>\n        internal static string FORT_VALIANT_C_LEAVE_FOLLOW_Name {\n            get {\n                return ResourceManager.GetString(\"FORT_VALIANT_C_LEAVE_FOLLOW_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string FORT_VALIANT_C_LEAVE_OFFICIALS_Description {\n            get {\n                return ResourceManager.GetString(\"FORT_VALIANT_C_LEAVE_OFFICIALS_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Leave the officials.\n        /// </summary>\n        internal static string FORT_VALIANT_C_LEAVE_OFFICIALS_Name {\n            get {\n                return ResourceManager.GetString(\"FORT_VALIANT_C_LEAVE_OFFICIALS_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string FORT_VALIANT_C_MEET_OFFICIALS_Description {\n            get {\n                return ResourceManager.GetString(\"FORT_VALIANT_C_MEET_OFFICIALS_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Meet the officials.\n        /// </summary>\n        internal static string FORT_VALIANT_C_MEET_OFFICIALS_Name {\n            get {\n                return ResourceManager.GetString(\"FORT_VALIANT_C_MEET_OFFICIALS_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string FORT_VALIANT_C_PICK_UP_EQUIP_Description {\n            get {\n                return ResourceManager.GetString(\"FORT_VALIANT_C_PICK_UP_EQUIP_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Pick up your equipment.\n        /// </summary>\n        internal static string FORT_VALIANT_C_PICK_UP_EQUIP_Name {\n            get {\n                return ResourceManager.GetString(\"FORT_VALIANT_C_PICK_UP_EQUIP_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string FORT_VALIANT_C_SCANNERS1_Description {\n            get {\n                return ResourceManager.GetString(\"FORT_VALIANT_C_SCANNERS1_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Find the entrance to the vault.\n        /// </summary>\n        internal static string FORT_VALIANT_C_SCANNERS1_Name {\n            get {\n                return ResourceManager.GetString(\"FORT_VALIANT_C_SCANNERS1_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string FORT_VALIANT_C_SCANNERS2_Description {\n            get {\n                return ResourceManager.GetString(\"FORT_VALIANT_C_SCANNERS2_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Reach the gate of the vault.\n        /// </summary>\n        internal static string FORT_VALIANT_C_SCANNERS2_Name {\n            get {\n                return ResourceManager.GetString(\"FORT_VALIANT_C_SCANNERS2_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string FORT_VALIANT_C_SCANNERS23_Description {\n            get {\n                return ResourceManager.GetString(\"FORT_VALIANT_C_SCANNERS23_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Enter the vault.\n        /// </summary>\n        internal static string FORT_VALIANT_C_SCANNERS23_Name {\n            get {\n                return ResourceManager.GetString(\"FORT_VALIANT_C_SCANNERS23_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string FORT_VALIANT_C_SCANNERS4_Description {\n            get {\n                return ResourceManager.GetString(\"FORT_VALIANT_C_SCANNERS4_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Get to higher floors.\n        /// </summary>\n        internal static string FORT_VALIANT_C_SCANNERS4_Name {\n            get {\n                return ResourceManager.GetString(\"FORT_VALIANT_C_SCANNERS4_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string FORT_VALIANT_C_SPEAK_SIR_Description {\n            get {\n                return ResourceManager.GetString(\"FORT_VALIANT_C_SPEAK_SIR_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Speak to Sir Geraint.\n        /// </summary>\n        internal static string FORT_VALIANT_C_SPEAK_SIR_Name {\n            get {\n                return ResourceManager.GetString(\"FORT_VALIANT_C_SPEAK_SIR_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string FORT_VALIANT_C_TAKE_ARTEFACT_Description {\n            get {\n                return ResourceManager.GetString(\"FORT_VALIANT_C_TAKE_ARTEFACT_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Find the artifact hidden in a concrete box.\n        /// </summary>\n        internal static string FORT_VALIANT_C_TAKE_ARTEFACT_Name {\n            get {\n                return ResourceManager.GetString(\"FORT_VALIANT_C_TAKE_ARTEFACT_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string FORT_VALIANT_C_TOP_ELEVATOR_Description {\n            get {\n                return ResourceManager.GetString(\"FORT_VALIANT_C_TOP_ELEVATOR_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Get to the top elevator.\n        /// </summary>\n        internal static string FORT_VALIANT_C_TOP_ELEVATOR_Name {\n            get {\n                return ResourceManager.GetString(\"FORT_VALIANT_C_TOP_ELEVATOR_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string FORT_VALIANT_C_TURN_OFF_SCANNER_Description {\n            get {\n                return ResourceManager.GetString(\"FORT_VALIANT_C_TURN_OFF_SCANNER_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Turn off the scanner.\n        /// </summary>\n        internal static string FORT_VALIANT_C_TURN_OFF_SCANNER_Name {\n            get {\n                return ResourceManager.GetString(\"FORT_VALIANT_C_TURN_OFF_SCANNER_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string FORT_VALIANT_C_UPPER_FLOOR_Description {\n            get {\n                return ResourceManager.GetString(\"FORT_VALIANT_C_UPPER_FLOOR_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Reach the upper floors.\n        /// </summary>\n        internal static string FORT_VALIANT_C_UPPER_FLOOR_Name {\n            get {\n                return ResourceManager.GetString(\"FORT_VALIANT_C_UPPER_FLOOR_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string FORT_VALIANT_C_VALUT_Description {\n            get {\n                return ResourceManager.GetString(\"FORT_VALIANT_C_VALUT_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Exit the vault.\n        /// </summary>\n        internal static string FORT_VALIANT_C_VALUT_Name {\n            get {\n                return ResourceManager.GetString(\"FORT_VALIANT_C_VALUT_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string FORT_VALIANT_C_VENT_SYSTEM_Description {\n            get {\n                return ResourceManager.GetString(\"FORT_VALIANT_C_VENT_SYSTEM_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Escape through the vents.\n        /// </summary>\n        internal static string FORT_VALIANT_C_VENT_SYSTEM_Name {\n            get {\n                return ResourceManager.GetString(\"FORT_VALIANT_C_VENT_SYSTEM_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fort Valiant\n        ///.\n        /// </summary>\n        internal static string FORT_VALIANT_Description {\n            get {\n                return ResourceManager.GetString(\"FORT_VALIANT_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fort valiant dungeon 512x512x512.\n        /// </summary>\n        internal static string Fort_valiant_dungeon {\n            get {\n                return ResourceManager.GetString(\"Fort_valiant_dungeon\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string FORT_VALIANT_FLY_ONE_Description {\n            get {\n                return ResourceManager.GetString(\"FORT_VALIANT_FLY_ONE_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Approach Fort Valiant.\n        /// </summary>\n        internal static string FORT_VALIANT_FLY_ONE_Name {\n            get {\n                return ResourceManager.GetString(\"FORT_VALIANT_FLY_ONE_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string FORT_VALIANT_MEET_CAPTAIN_Description {\n            get {\n                return ResourceManager.GetString(\"FORT_VALIANT_MEET_CAPTAIN_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Meet captain Cedric.\n        /// </summary>\n        internal static string FORT_VALIANT_MEET_CAPTAIN_Name {\n            get {\n                return ResourceManager.GetString(\"FORT_VALIANT_MEET_CAPTAIN_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fort Valiant is the main hub of the renewed Templar order. Located between the territories \n        ///of The Church and EAC, the Templars offer protection to pacifist Church citizens as well \n        ///as to traders and civilians seeking sanctuary. The base is heavily protected. No attempt to\n        ///take it by force is considered wise, thanks to highly advanced Templar weaponry and the \n        ///fact that most of the Templar fleet is garrisoned there..\n        /// </summary>\n        internal static string FORT_VALIANT_SectorDescription {\n            get {\n                return ResourceManager.GetString(\"FORT_VALIANT_SectorDescription\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to FORT VALIANT.\n        /// </summary>\n        internal static string FORT_VALIANT_SectorName {\n            get {\n                return ResourceManager.GetString(\"FORT_VALIANT_SectorName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string FORT_VALIANT_SPEAK_GATE_KEEPER_Description {\n            get {\n                return ResourceManager.GetString(\"FORT_VALIANT_SPEAK_GATE_KEEPER_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Reach the gate.\n        /// </summary>\n        internal static string FORT_VALIANT_SPEAK_GATE_KEEPER_Name {\n            get {\n                return ResourceManager.GetString(\"FORT_VALIANT_SPEAK_GATE_KEEPER_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string FORT_VALIANT_VISIT_VENDOR_Description {\n            get {\n                return ResourceManager.GetString(\"FORT_VALIANT_VISIT_VENDOR_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Visit the local vendor.\n        /// </summary>\n        internal static string FORT_VALIANT_VISIT_VENDOR_Name {\n            get {\n                return ResourceManager.GetString(\"FORT_VALIANT_VISIT_VENDOR_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fortress.\n        /// </summary>\n        internal static string Fortress {\n            get {\n                return ResourceManager.GetString(\"Fortress\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fortress Sanc 1 128x256x128.\n        /// </summary>\n        internal static string Fortress_Sanc_1 {\n            get {\n                return ResourceManager.GetString(\"Fortress_Sanc_1\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fortress Sanc 10 128x128x128.\n        /// </summary>\n        internal static string Fortress_Sanc_10 {\n            get {\n                return ResourceManager.GetString(\"Fortress_Sanc_10\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fortress Sanc 11 128x128x128.\n        /// </summary>\n        internal static string Fortress_Sanc_11 {\n            get {\n                return ResourceManager.GetString(\"Fortress_Sanc_11\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fortress Sanc 2 256x128x256.\n        /// </summary>\n        internal static string Fortress_Sanc_2 {\n            get {\n                return ResourceManager.GetString(\"Fortress_Sanc_2\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fortress Sanc 3 128x128x128.\n        /// </summary>\n        internal static string Fortress_Sanc_3 {\n            get {\n                return ResourceManager.GetString(\"Fortress_Sanc_3\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fortress Sanc 4 128s128s128.\n        /// </summary>\n        internal static string Fortress_Sanc_4 {\n            get {\n                return ResourceManager.GetString(\"Fortress_Sanc_4\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fortress Sanc 5 256x256x256.\n        /// </summary>\n        internal static string Fortress_Sanc_5 {\n            get {\n                return ResourceManager.GetString(\"Fortress_Sanc_5\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fortress Sanc 6 256x128x256.\n        /// </summary>\n        internal static string Fortress_Sanc_6 {\n            get {\n                return ResourceManager.GetString(\"Fortress_Sanc_6\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fortress Sanc 7 128x256x128.\n        /// </summary>\n        internal static string Fortress_Sanc_7 {\n            get {\n                return ResourceManager.GetString(\"Fortress_Sanc_7\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fortress Sanc 8 128x256x128.\n        /// </summary>\n        internal static string Fortress_Sanc_8 {\n            get {\n                return ResourceManager.GetString(\"Fortress_Sanc_8\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fortress Sanc 9 128x128x128.\n        /// </summary>\n        internal static string Fortress_Sanc_9 {\n            get {\n                return ResourceManager.GetString(\"Fortress_Sanc_9\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Forward thrust.\n        /// </summary>\n        internal static string ForwardThrust {\n            get {\n                return ResourceManager.GetString(\"ForwardThrust\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Foundation factory.\n        /// </summary>\n        internal static string FoundationFactory {\n            get {\n                return ResourceManager.GetString(\"FoundationFactory\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Add foundation factory.\n        /// </summary>\n        internal static string FoundationFactoryInInventory {\n            get {\n                return ResourceManager.GetString(\"FoundationFactoryInInventory\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to 4th reich wreck.\n        /// </summary>\n        internal static string Fourth_reich_wreck {\n            get {\n                return ResourceManager.GetString(\"Fourth_reich_wreck\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fourth Reich mothership.\n        /// </summary>\n        internal static string FourthReichMothership {\n            get {\n                return ResourceManager.GetString(\"FourthReichMothership\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fourth Reich mothership B.\n        /// </summary>\n        internal static string FourthReichMothership_B {\n            get {\n                return ResourceManager.GetString(\"FourthReichMothership_B\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fragile Sector 256x128x256.\n        /// </summary>\n        internal static string Fragile_Sector {\n            get {\n                return ResourceManager.GetString(\"Fragile_Sector\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Free-roaming.\n        /// </summary>\n        internal static string FreeRoaming {\n            get {\n                return ResourceManager.GetString(\"FreeRoaming\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Friend.\n        /// </summary>\n        internal static string Friend {\n            get {\n                return ResourceManager.GetString(\"Friend\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Friend name.\n        /// </summary>\n        internal static string FriendName {\n            get {\n                return ResourceManager.GetString(\"FriendName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Friends and neutrals can’t die.\n        /// </summary>\n        internal static string FriendNeutralCantDie {\n            get {\n                return ResourceManager.GetString(\"FriendNeutralCantDie\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Friend’s sector.\n        /// </summary>\n        internal static string FriendsSectorMap {\n            get {\n                return ResourceManager.GetString(\"FriendsSectorMap\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Friend’s sectors.\n        /// </summary>\n        internal static string FriendsSectors {\n            get {\n                return ResourceManager.GetString(\"FriendsSectors\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Front Turret.\n        /// </summary>\n        internal static string FrontTurret {\n            get {\n                return ResourceManager.GetString(\"FrontTurret\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to FUEL TANK | Uses same fuel type as ship’s engine. \n        ///Extends its storage by 100%.\n        /// </summary>\n        internal static string FuelKit {\n            get {\n                return ResourceManager.GetString(\"FuelKit\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Full screen.\n        /// </summary>\n        internal static string Fullscreen {\n            get {\n                return ResourceManager.GetString(\"Fullscreen\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Game.\n        /// </summary>\n        internal static string Game {\n            get {\n                return ResourceManager.GetString(\"Game\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Game options.\n        /// </summary>\n        internal static string GameOptions {\n            get {\n                return ResourceManager.GetString(\"GameOptions\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Press Esc to exit to the main menu.\n        /// </summary>\n        internal static string GameOverInstructionsPart1 {\n            get {\n                return ResourceManager.GetString(\"GameOverInstructionsPart1\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Press Enter to return to the last checkpoint.\n        /// </summary>\n        internal static string GameOverInstructionsPart2 {\n            get {\n                return ResourceManager.GetString(\"GameOverInstructionsPart2\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Wait for host.\n        /// </summary>\n        internal static string GameOverInstructionsPart2MP {\n            get {\n                return ResourceManager.GetString(\"GameOverInstructionsPart2MP\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Gamepad.\n        /// </summary>\n        internal static string Gamepad {\n            get {\n                return ResourceManager.GetString(\"Gamepad\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Gameplay.\n        /// </summary>\n        internal static string GamePlay {\n            get {\n                return ResourceManager.GetString(\"GamePlay\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sound volume.\n        /// </summary>\n        internal static string GameVolume {\n            get {\n                return ResourceManager.GetString(\"GameVolume\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Gangster.\n        /// </summary>\n        internal static string Gangster {\n            get {\n                return ResourceManager.GetString(\"Gangster\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Gangster boss.\n        /// </summary>\n        internal static string GangsterBoss {\n            get {\n                return ResourceManager.GetString(\"GangsterBoss\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Gas pipe.\n        /// </summary>\n        internal static string GasPipe {\n            get {\n                return ResourceManager.GetString(\"GasPipe\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Gatekeeper.\n        /// </summary>\n        internal static string GateKeeper {\n            get {\n                return ResourceManager.GetString(\"GateKeeper\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Gates of Hell.\n        /// </summary>\n        internal static string GATES_OF_HELL {\n            get {\n                return ResourceManager.GetString(\"GATES_OF_HELL\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Gates of Hell\n        ///.\n        /// </summary>\n        internal static string GATES_OF_HELL_Description {\n            get {\n                return ResourceManager.GetString(\"GATES_OF_HELL_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Gatling ammo belt.\n        /// </summary>\n        internal static string Gattling_ammo_belt {\n            get {\n                return ResourceManager.GetString(\"Gattling_ammo_belt\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to General.\n        /// </summary>\n        internal static string General {\n            get {\n                return ResourceManager.GetString(\"General\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to General Chen Lin.\n        /// </summary>\n        internal static string GeneralChenLin {\n            get {\n                return ResourceManager.GetString(\"GeneralChenLin\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to General.\n        /// </summary>\n        internal static string GeneralContextMenuCaption {\n            get {\n                return ResourceManager.GetString(\"GeneralContextMenuCaption\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Generator.\n        /// </summary>\n        internal static string Generator {\n            get {\n                return ResourceManager.GetString(\"Generator\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Generators range.\n        /// </summary>\n        internal static string GeneratorsRange {\n            get {\n                return ResourceManager.GetString(\"GeneratorsRange\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Generator under attack.\n        /// </summary>\n        internal static string GeneratorUnderAttack {\n            get {\n                return ResourceManager.GetString(\"GeneratorUnderAttack\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Get first security key.\n        /// </summary>\n        internal static string GetFirstSecurityKey {\n            get {\n                return ResourceManager.GetString(\"GetFirstSecurityKey\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Gizmo space: .\n        /// </summary>\n        internal static string GizmoSpaceEditorText {\n            get {\n                return ResourceManager.GetString(\"GizmoSpaceEditorText\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Local.\n        /// </summary>\n        internal static string GizmoSpaceLocal {\n            get {\n                return ResourceManager.GetString(\"GizmoSpaceLocal\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to World.\n        /// </summary>\n        internal static string GizmoSpaceWorld {\n            get {\n                return ResourceManager.GetString(\"GizmoSpaceWorld\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Factions have changed.\n        /// </summary>\n        internal static string GlobalEventFactionChangeDescription {\n            get {\n                return ResourceManager.GetString(\"GlobalEventFactionChangeDescription\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Factions have changed.\n        /// </summary>\n        internal static string GlobalEventFactionChangeName {\n            get {\n                return ResourceManager.GetString(\"GlobalEventFactionChangeName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Faction {0} signed a peace agreement with {1}..\n        /// </summary>\n        internal static string GlobalEventFactionRelationChange_EnemyToNeutral {\n            get {\n                return ResourceManager.GetString(\"GlobalEventFactionRelationChange_EnemyToNeutral\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to {0} and {1} are no longer friends..\n        /// </summary>\n        internal static string GlobalEventFactionRelationChange_FriendsToNeutral {\n            get {\n                return ResourceManager.GetString(\"GlobalEventFactionRelationChange_FriendsToNeutral\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Faction {0} declares war to {1}..\n        /// </summary>\n        internal static string GlobalEventFactionRelationChange_NeutralToEnemy {\n            get {\n                return ResourceManager.GetString(\"GlobalEventFactionRelationChange_NeutralToEnemy\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to {0} and {1} became friends..\n        /// </summary>\n        internal static string GlobalEventFactionRelationChange_NeutralToFriends {\n            get {\n                return ResourceManager.GetString(\"GlobalEventFactionRelationChange_NeutralToFriends\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ice comet.\n        /// </summary>\n        internal static string GlobalEventIceCometDescription {\n            get {\n                return ResourceManager.GetString(\"GlobalEventIceCometDescription\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ice comet.\n        /// </summary>\n        internal static string GlobalEventIceCometName {\n            get {\n                return ResourceManager.GetString(\"GlobalEventIceCometName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ice Storm.\n        /// </summary>\n        internal static string GlobalEventIceStormName {\n            get {\n                return ResourceManager.GetString(\"GlobalEventIceStormName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Meteor wind.\n        /// </summary>\n        internal static string GlobalEventMeteorWindName {\n            get {\n                return ResourceManager.GetString(\"GlobalEventMeteorWindName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Global Events.\n        /// </summary>\n        internal static string GlobalEvents {\n            get {\n                return ResourceManager.GetString(\"GlobalEvents\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The sun has errupted, prepare for the hot surge!.\n        /// </summary>\n        internal static string GlobalEventSunWindDescription {\n            get {\n                return ResourceManager.GetString(\"GlobalEventSunWindDescription\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sun wind.\n        /// </summary>\n        internal static string GlobalEventSunWindName {\n            get {\n                return ResourceManager.GetString(\"GlobalEventSunWindName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Go back to starting position.\n        /// </summary>\n        internal static string GoBackToStartingPosition {\n            get {\n                return ResourceManager.GetString(\"GoBackToStartingPosition\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Gold.\n        /// </summary>\n        internal static string Gold_01 {\n            get {\n                return ResourceManager.GetString(\"Gold_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to : {0:0} meters to next objective..\n        /// </summary>\n        internal static string GPSDistance {\n            get {\n                return ResourceManager.GetString(\"GPSDistance\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to : no objectives available..\n        /// </summary>\n        internal static string GPSNoObjectives {\n            get {\n                return ResourceManager.GetString(\"GPSNoObjectives\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to : no path found..\n        /// </summary>\n        internal static string GPSNoPath {\n            get {\n                return ResourceManager.GetString(\"GPSNoPath\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Press {0} to highlight the path to the next objective..\n        /// </summary>\n        internal static string GPSReminder {\n            get {\n                return ResourceManager.GetString(\"GPSReminder\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Grave Skull 256x256x256.\n        /// </summary>\n        internal static string Grave_Skull {\n            get {\n                return ResourceManager.GetString(\"Grave_Skull\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Gravitation bomb.\n        /// </summary>\n        internal static string GravityBombHud {\n            get {\n                return ResourceManager.GetString(\"GravityBombHud\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Green.\n        /// </summary>\n        internal static string Green {\n            get {\n                return ResourceManager.GetString(\"Green\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to  meters.\n        /// </summary>\n        internal static string GridInMeters {\n            get {\n                return ResourceManager.GetString(\"GridInMeters\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Grid scale indicator:   .\n        /// </summary>\n        internal static string GridScaleIndicator {\n            get {\n                return ResourceManager.GetString(\"GridScaleIndicator\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Grid snap: .\n        /// </summary>\n        internal static string GridSnapEditorText {\n            get {\n                return ResourceManager.GetString(\"GridSnapEditorText\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to GuiClick.\n        /// </summary>\n        internal static string GuiClick {\n            get {\n                return ResourceManager.GetString(\"GuiClick\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to GuiEditorFlyOutsideBorder.\n        /// </summary>\n        internal static string GuiEditorFlyOutsideBorder {\n            get {\n                return ResourceManager.GetString(\"GuiEditorFlyOutsideBorder\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to GuiEditorObjectAttach.\n        /// </summary>\n        internal static string GuiEditorObjectAttach {\n            get {\n                return ResourceManager.GetString(\"GuiEditorObjectAttach\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to GuiEditorObjectDelete.\n        /// </summary>\n        internal static string GuiEditorObjectDelete {\n            get {\n                return ResourceManager.GetString(\"GuiEditorObjectDelete\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to GuiEditorObjectDetach.\n        /// </summary>\n        internal static string GuiEditorObjectDetach {\n            get {\n                return ResourceManager.GetString(\"GuiEditorObjectDetach\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to GuiEditorObjectMoveInvalid.\n        /// </summary>\n        internal static string GuiEditorObjectMoveInvalid {\n            get {\n                return ResourceManager.GetString(\"GuiEditorObjectMoveInvalid\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to GuiEditorObjectMoveStep.\n        /// </summary>\n        internal static string GuiEditorObjectMoveStep {\n            get {\n                return ResourceManager.GetString(\"GuiEditorObjectMoveStep\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to GuiEditorObjectRotateStep.\n        /// </summary>\n        internal static string GuiEditorObjectRotateStep {\n            get {\n                return ResourceManager.GetString(\"GuiEditorObjectRotateStep\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to GuiEditorObjectSelect.\n        /// </summary>\n        internal static string GuiEditorObjectSelect {\n            get {\n                return ResourceManager.GetString(\"GuiEditorObjectSelect\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to GuiEditorPrefabCommit.\n        /// </summary>\n        internal static string GuiEditorPrefabCommit {\n            get {\n                return ResourceManager.GetString(\"GuiEditorPrefabCommit\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to GuiEditorPrefabEnter.\n        /// </summary>\n        internal static string GuiEditorPrefabEnter {\n            get {\n                return ResourceManager.GetString(\"GuiEditorPrefabEnter\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to GuiEditorPrefabExit.\n        /// </summary>\n        internal static string GuiEditorPrefabExit {\n            get {\n                return ResourceManager.GetString(\"GuiEditorPrefabExit\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to GuiEditorVoxelHandAdd.\n        /// </summary>\n        internal static string GuiEditorVoxelHandAdd {\n            get {\n                return ResourceManager.GetString(\"GuiEditorVoxelHandAdd\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to GuiEditorVoxelHandMaterial.\n        /// </summary>\n        internal static string GuiEditorVoxelHandMaterial {\n            get {\n                return ResourceManager.GetString(\"GuiEditorVoxelHandMaterial\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to GuiEditorVoxelHandRemove.\n        /// </summary>\n        internal static string GuiEditorVoxelHandRemove {\n            get {\n                return ResourceManager.GetString(\"GuiEditorVoxelHandRemove\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to GuiEditorVoxelHandSoften.\n        /// </summary>\n        internal static string GuiEditorVoxelHandSoften {\n            get {\n                return ResourceManager.GetString(\"GuiEditorVoxelHandSoften\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to GuiEditorVoxelHandSwitch.\n        /// </summary>\n        internal static string GuiEditorVoxelHandSwitch {\n            get {\n                return ResourceManager.GetString(\"GuiEditorVoxelHandSwitch\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to GuiMouseOver.\n        /// </summary>\n        internal static string GuiMouseOver {\n            get {\n                return ResourceManager.GetString(\"GuiMouseOver\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to GuiWheelControlClose.\n        /// </summary>\n        internal static string GuiWheelControlClose {\n            get {\n                return ResourceManager.GetString(\"GuiWheelControlClose\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to GuiWheelControlOpen.\n        /// </summary>\n        internal static string GuiWheelControlOpen {\n            get {\n                return ResourceManager.GetString(\"GuiWheelControlOpen\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hack from hub.\n        /// </summary>\n        internal static string HackFromHUB {\n            get {\n                return ResourceManager.GetString(\"HackFromHUB\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Database.\n        /// </summary>\n        internal static string HackHangarDatabase {\n            get {\n                return ResourceManager.GetString(\"HackHangarDatabase\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hacking.\n        /// </summary>\n        internal static string Hacking {\n            get {\n                return ResourceManager.GetString(\"Hacking\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hacking level.\n        /// </summary>\n        internal static string HackingLevel {\n            get {\n                return ResourceManager.GetString(\"HackingLevel\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hacking in progress….\n        /// </summary>\n        internal static string HackingProgress {\n            get {\n                return ResourceManager.GetString(\"HackingProgress\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Can’t be hacked.\n        /// </summary>\n        internal static string HackingResult_CanNotBeHacked {\n            get {\n                return ResourceManager.GetString(\"HackingResult_CanNotBeHacked\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You have no hacking tool.\n        /// </summary>\n        internal static string HackingResult_NoHackingTool {\n            get {\n                return ResourceManager.GetString(\"HackingResult_NoHackingTool\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You need a hacking tool of level {0}, but you have only {1}.\n        /// </summary>\n        internal static string HackingResult_NotEnoughLevel {\n            get {\n                return ResourceManager.GetString(\"HackingResult_NotEnoughLevel\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hacking time.\n        /// </summary>\n        internal static string HackingTime {\n            get {\n                return ResourceManager.GetString(\"HackingTime\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to HACKING TOOL LEVEL 1 | Hacks terminals protected by level 1.\n        /// </summary>\n        internal static string HackingTool_Level1 {\n            get {\n                return ResourceManager.GetString(\"HackingTool_Level1\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to HACKING TOOL LEVEL 2 | Hacks terminals protected by level 2, and speeds up hacking.\n        /// </summary>\n        internal static string HackingTool_Level2 {\n            get {\n                return ResourceManager.GetString(\"HackingTool_Level2\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to HACKING TOOL LEVEL 3 | Hacks terminals protected by level 3, and speeds up hacking.\n        /// </summary>\n        internal static string HackingTool_Level3 {\n            get {\n                return ResourceManager.GetString(\"HackingTool_Level3\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to HACKING TOOL LEVEL 4 | Hacks terminals protected by level 4, and speeds up hacking.\n        /// </summary>\n        internal static string HackingTool_Level4 {\n            get {\n                return ResourceManager.GetString(\"HackingTool_Level4\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to HACKING TOOL LEVEL 5 | Hacks terminals protected by level 5, and speeds up hacking.\n        /// </summary>\n        internal static string HackingTool_Level5 {\n            get {\n                return ResourceManager.GetString(\"HackingTool_Level5\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hack solo.\n        /// </summary>\n        internal static string HackSolo {\n            get {\n                return ResourceManager.GetString(\"HackSolo\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hack the system.\n        /// </summary>\n        internal static string HackSystem {\n            get {\n                return ResourceManager.GetString(\"HackSystem\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hall of Fame 256x128x256.\n        /// </summary>\n        internal static string HallOfFame {\n            get {\n                return ResourceManager.GetString(\"HallOfFame\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hangar.\n        /// </summary>\n        internal static string Hangar {\n            get {\n                return ResourceManager.GetString(\"Hangar\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hardware cursor.\n        /// </summary>\n        internal static string HardwareCursor {\n            get {\n                return ResourceManager.GetString(\"HardwareCursor\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Use harvesting device.\n        /// </summary>\n        internal static string Harvest {\n            get {\n                return ResourceManager.GetString(\"Harvest\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Harvester.\n        /// </summary>\n        internal static string Harvester {\n            get {\n                return ResourceManager.GetString(\"Harvester\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Harvested {0:0.00} units of {1}.\n        /// </summary>\n        internal static string HarvestNotification {\n            get {\n                return ResourceManager.GetString(\"HarvestNotification\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Inventory full, wasted {0:0.00} units of {1}.\n        /// </summary>\n        internal static string HarvestNotificationInventoryFull {\n            get {\n                return ResourceManager.GetString(\"HarvestNotificationInventoryFull\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to HOST NAME.\n        /// </summary>\n        internal static string HeaderHostName {\n            get {\n                return ResourceManager.GetString(\"HeaderHostName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to PING.\n        /// </summary>\n        internal static string HeaderPing {\n            get {\n                return ResourceManager.GetString(\"HeaderPing\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to PLAYERS.\n        /// </summary>\n        internal static string HeaderPlayerCount {\n            get {\n                return ResourceManager.GetString(\"HeaderPlayerCount\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to GAME NAME.\n        /// </summary>\n        internal static string HeaderSectorName {\n            get {\n                return ResourceManager.GetString(\"HeaderSectorName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to TYPE.\n        /// </summary>\n        internal static string HeaderType {\n            get {\n                return ResourceManager.GetString(\"HeaderType\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Headlights distance.\n        /// </summary>\n        internal static string HeadlightsDistance {\n            get {\n                return ResourceManager.GetString(\"HeadlightsDistance\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Headlights range.\n        /// </summary>\n        internal static string HeadlightsRange {\n            get {\n                return ResourceManager.GetString(\"HeadlightsRange\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Close.\n        /// </summary>\n        internal static string HeadlightsRangeClose {\n            get {\n                return ResourceManager.GetString(\"HeadlightsRangeClose\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Long.\n        /// </summary>\n        internal static string HeadlightsRangeLong {\n            get {\n                return ResourceManager.GetString(\"HeadlightsRangeLong\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Health.\n        /// </summary>\n        internal static string Health {\n            get {\n                return ResourceManager.GetString(\"Health\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Health Enhancing Medicine Active.\n        /// </summary>\n        internal static string HealthEnhancingMedicineActive {\n            get {\n                return ResourceManager.GetString(\"HealthEnhancingMedicineActive\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to HEALTH KIT | Heals player instantly. 1% health \n        ///for 1% item’s amount. Ship can \n        ///carry more health kits.\n        /// </summary>\n        internal static string HealthKit {\n            get {\n                return ResourceManager.GetString(\"HealthKit\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Health %.\n        /// </summary>\n        internal static string HealthPercentage {\n            get {\n                return ResourceManager.GetString(\"HealthPercentage\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Height.\n        /// </summary>\n        internal static string Height {\n            get {\n                return ResourceManager.GetString(\"Height\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Helium 1.\n        /// </summary>\n        internal static string Helium3_01 {\n            get {\n                return ResourceManager.GetString(\"Helium3_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Helium 2.\n        /// </summary>\n        internal static string Helium4_01 {\n            get {\n                return ResourceManager.GetString(\"Helium4_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Help.\n        /// </summary>\n        internal static string Help {\n            get {\n                return ResourceManager.GetString(\"Help\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Help.\n        /// </summary>\n        internal static string HelpCaption {\n            get {\n                return ResourceManager.GetString(\"HelpCaption\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to HemisphericLight.\n        /// </summary>\n        internal static string HemisphericLight {\n            get {\n                return ResourceManager.GetString(\"HemisphericLight\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hide.\n        /// </summary>\n        internal static string HidePassword {\n            get {\n                return ResourceManager.GetString(\"HidePassword\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hide snap points.\n        /// </summary>\n        internal static string HideSnapPoints {\n            get {\n                return ResourceManager.GetString(\"HideSnapPoints\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to HIGH ENDURANCE ARMOR | Projectile/explosion damage reduction: 100% | Solar wind damage reduction: 0%.\n        /// </summary>\n        internal static string HighEnduranceArmor {\n            get {\n                return ResourceManager.GetString(\"HighEnduranceArmor\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hippie outpost.\n        /// </summary>\n        internal static string HIPPIE_OUTPOST {\n            get {\n                return ResourceManager.GetString(\"HIPPIE_OUTPOST\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hippie Outpost Base 128x128x128.\n        /// </summary>\n        internal static string Hippie_Outpost_Base {\n            get {\n                return ResourceManager.GetString(\"Hippie_Outpost_Base\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Placate the karma spoilers!\n        ///.\n        /// </summary>\n        internal static string HIPPIE_OUTPOST_Description {\n            get {\n                return ResourceManager.GetString(\"HIPPIE_OUTPOST_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hippie Outpost Tree 512x512x512.\n        /// </summary>\n        internal static string Hippie_Outpost_Tree {\n            get {\n                return ResourceManager.GetString(\"Hippie_Outpost_Tree\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hold {0} to drill.\n        /// </summary>\n        internal static string HoldFireToDrillNotification {\n            get {\n                return ResourceManager.GetString(\"HoldFireToDrillNotification\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hold {0} to move Marcus.\n        /// </summary>\n        internal static string HoldToMoveMarcus {\n            get {\n                return ResourceManager.GetString(\"HoldToMoveMarcus\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hold {0} to move weapons.\n        /// </summary>\n        internal static string HoldToMoveWeapons {\n            get {\n                return ResourceManager.GetString(\"HoldToMoveWeapons\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hold {0} to plant cargo.\n        /// </summary>\n        internal static string HoldToPlantCargo {\n            get {\n                return ResourceManager.GetString(\"HoldToPlantCargo\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hold {0} to use the security key.\n        /// </summary>\n        internal static string HoldToUseSecurityKey {\n            get {\n                return ResourceManager.GetString(\"HoldToUseSecurityKey\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Home.\n        /// </summary>\n        internal static string Home {\n            get {\n                return ResourceManager.GetString(\"Home\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to hopebase512.\n        /// </summary>\n        internal static string hopebase512 {\n            get {\n                return ResourceManager.GetString(\"hopebase512\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to hopefood128.\n        /// </summary>\n        internal static string hopefood128 {\n            get {\n                return ResourceManager.GetString(\"hopefood128\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to hopevault128.\n        /// </summary>\n        internal static string hopevault128 {\n            get {\n                return ResourceManager.GetString(\"hopevault128\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Host friend sec..\n        /// </summary>\n        internal static string HostFriendSector {\n            get {\n                return ResourceManager.GetString(\"HostFriendSector\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Host game.\n        /// </summary>\n        internal static string HostGame {\n            get {\n                return ResourceManager.GetString(\"HostGame\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Host offic. sec..\n        /// </summary>\n        internal static string HostOfficSector {\n            get {\n                return ResourceManager.GetString(\"HostOfficSector\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Host your sec..\n        /// </summary>\n        internal static string HostYourSector {\n            get {\n                return ResourceManager.GetString(\"HostYourSector\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Press {0} to deploy a drone\n        ///Press {1} to control a drone.\n        /// </summary>\n        internal static string HowToControlDrone {\n            get {\n                return ResourceManager.GetString(\"HowToControlDrone\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hub Showcase.\n        /// </summary>\n        internal static string HUB_SHOWCASE {\n            get {\n                return ResourceManager.GetString(\"HUB_SHOWCASE\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Showcase of hubs, security elements and such\n        ///.\n        /// </summary>\n        internal static string HUB_SHOWCASE_Description {\n            get {\n                return ResourceManager.GetString(\"HUB_SHOWCASE_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Back door.\n        /// </summary>\n        internal static string HudBackDoor {\n            get {\n                return ResourceManager.GetString(\"HudBackDoor\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Thomas Barth.\n        /// </summary>\n        internal static string HudBarth {\n            get {\n                return ResourceManager.GetString(\"HudBarth\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Batteries.\n        /// </summary>\n        internal static string HudBatteries {\n            get {\n                return ResourceManager.GetString(\"HudBatteries\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Blondi.\n        /// </summary>\n        internal static string HudBlondi {\n            get {\n                return ResourceManager.GetString(\"HudBlondi\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Broken Moon.\n        /// </summary>\n        internal static string HudBrokenMoon {\n            get {\n                return ResourceManager.GetString(\"HudBrokenMoon\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cage.\n        /// </summary>\n        internal static string HudCage {\n            get {\n                return ResourceManager.GetString(\"HudCage\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Captain Cedric.\n        /// </summary>\n        internal static string HudCaptainCedric {\n            get {\n                return ResourceManager.GetString(\"HudCaptainCedric\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cargo.\n        /// </summary>\n        internal static string HudCargo {\n            get {\n                return ResourceManager.GetString(\"HudCargo\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cargo bay.\n        /// </summary>\n        internal static string HudCargoBay {\n            get {\n                return ResourceManager.GetString(\"HudCargoBay\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cave.\n        /// </summary>\n        internal static string HudCave {\n            get {\n                return ResourceManager.GetString(\"HudCave\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Chamber.\n        /// </summary>\n        internal static string HudChamber {\n            get {\n                return ResourceManager.GetString(\"HudChamber\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Colonel von Stauffenberg.\n        /// </summary>\n        internal static string HudColonelVonStauffenberg {\n            get {\n                return ResourceManager.GetString(\"HudColonelVonStauffenberg\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Command center.\n        /// </summary>\n        internal static string HudCommandCenter {\n            get {\n                return ResourceManager.GetString(\"HudCommandCenter\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Command room.\n        /// </summary>\n        internal static string HudCommandRoom {\n            get {\n                return ResourceManager.GetString(\"HudCommandRoom\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Communication hub.\n        /// </summary>\n        internal static string HudCommunicationHub {\n            get {\n                return ResourceManager.GetString(\"HudCommunicationHub\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Container.\n        /// </summary>\n        internal static string HudContainer {\n            get {\n                return ResourceManager.GetString(\"HudContainer\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Control center.\n        /// </summary>\n        internal static string HudControlCenter {\n            get {\n                return ResourceManager.GetString(\"HudControlCenter\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Control room.\n        /// </summary>\n        internal static string HudControlRoom {\n            get {\n                return ResourceManager.GetString(\"HudControlRoom\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Disruptor.\n        /// </summary>\n        internal static string HudDisruptor {\n            get {\n                return ResourceManager.GetString(\"HudDisruptor\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Drill room.\n        /// </summary>\n        internal static string HudDrillRoom {\n            get {\n                return ResourceManager.GetString(\"HudDrillRoom\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Duplex.\n        /// </summary>\n        internal static string HudDuplex {\n            get {\n                return ResourceManager.GetString(\"HudDuplex\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to End.\n        /// </summary>\n        internal static string HudEnd {\n            get {\n                return ResourceManager.GetString(\"HudEnd\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Enemy base.\n        /// </summary>\n        internal static string HudEnemyBase {\n            get {\n                return ResourceManager.GetString(\"HudEnemyBase\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Entrance.\n        /// </summary>\n        internal static string HudEntrance {\n            get {\n                return ResourceManager.GetString(\"HudEntrance\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Equipment.\n        /// </summary>\n        internal static string HudEquipment {\n            get {\n                return ResourceManager.GetString(\"HudEquipment\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Eurydice.\n        /// </summary>\n        internal static string HudEurydice {\n            get {\n                return ResourceManager.GetString(\"HudEurydice\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Follow.\n        /// </summary>\n        internal static string HudFollow {\n            get {\n                return ResourceManager.GetString(\"HudFollow\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fort Valiant.\n        /// </summary>\n        internal static string HudFortValiant {\n            get {\n                return ResourceManager.GetString(\"HudFortValiant\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Francis Reef.\n        /// </summary>\n        internal static string HudFrancisReef {\n            get {\n                return ResourceManager.GetString(\"HudFrancisReef\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Generator.\n        /// </summary>\n        internal static string HudGenerator {\n            get {\n                return ResourceManager.GetString(\"HudGenerator\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Generator repair kit.\n        /// </summary>\n        internal static string HudGeneratorRepairKit {\n            get {\n                return ResourceManager.GetString(\"HudGeneratorRepairKit\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Generator room.\n        /// </summary>\n        internal static string HudGeneratorRoom {\n            get {\n                return ResourceManager.GetString(\"HudGeneratorRoom\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hacker.\n        /// </summary>\n        internal static string HudHacker {\n            get {\n                return ResourceManager.GetString(\"HudHacker\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hangar.\n        /// </summary>\n        internal static string HudHangar {\n            get {\n                return ResourceManager.GetString(\"HudHangar\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hub.\n        /// </summary>\n        internal static string HudHub {\n            get {\n                return ResourceManager.GetString(\"HudHub\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hub A.\n        /// </summary>\n        internal static string HudHubA {\n            get {\n                return ResourceManager.GetString(\"HudHubA\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hub B.\n        /// </summary>\n        internal static string HudHubB {\n            get {\n                return ResourceManager.GetString(\"HudHubB\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to ID card.\n        /// </summary>\n        internal static string HudIdCard {\n            get {\n                return ResourceManager.GetString(\"HudIdCard\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Jammer.\n        /// </summary>\n        internal static string HudJammer {\n            get {\n                return ResourceManager.GetString(\"HudJammer\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Lab.\n        /// </summary>\n        internal static string HudLab {\n            get {\n                return ResourceManager.GetString(\"HudLab\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Last Hope.\n        /// </summary>\n        internal static string HudLastHope {\n            get {\n                return ResourceManager.GetString(\"HudLastHope\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Left wing.\n        /// </summary>\n        internal static string HudLeftWing {\n            get {\n                return ResourceManager.GetString(\"HudLeftWing\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Madelyn’s Sapho.\n        /// </summary>\n        internal static string HudMadelynsSapho {\n            get {\n                return ResourceManager.GetString(\"HudMadelynsSapho\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Main base.\n        /// </summary>\n        internal static string HudMainBase {\n            get {\n                return ResourceManager.GetString(\"HudMainBase\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Main building.\n        /// </summary>\n        internal static string HudMainBuilding {\n            get {\n                return ResourceManager.GetString(\"HudMainBuilding\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Manjeet.\n        /// </summary>\n        internal static string HudManjeet {\n            get {\n                return ResourceManager.GetString(\"HudManjeet\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Marcus.\n        /// </summary>\n        internal static string HudMarcus {\n            get {\n                return ResourceManager.GetString(\"HudMarcus\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Meeting point.\n        /// </summary>\n        internal static string HudMeetingPoint {\n            get {\n                return ResourceManager.GetString(\"HudMeetingPoint\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Miners.\n        /// </summary>\n        internal static string HudMiners {\n            get {\n                return ResourceManager.GetString(\"HudMiners\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Mothership.\n        /// </summary>\n        internal static string HudMothership {\n            get {\n                return ResourceManager.GetString(\"HudMothership\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to New missions available!.\n        /// </summary>\n        internal static string HudNewMissionAvailable {\n            get {\n                return ResourceManager.GetString(\"HudNewMissionAvailable\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to HudOxygenLeakingWarning.\n        /// </summary>\n        internal static string HudOxygenLeakingWarning {\n            get {\n                return ResourceManager.GetString(\"HudOxygenLeakingWarning\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Panel.\n        /// </summary>\n        internal static string HudPanel {\n            get {\n                return ResourceManager.GetString(\"HudPanel\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Part.\n        /// </summary>\n        internal static string HudPart {\n            get {\n                return ResourceManager.GetString(\"HudPart\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Pirate captain.\n        /// </summary>\n        internal static string HudPirateCaptain {\n            get {\n                return ResourceManager.GetString(\"HudPirateCaptain\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Prison.\n        /// </summary>\n        internal static string HudPrison {\n            get {\n                return ResourceManager.GetString(\"HudPrison\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Raynold’s vessel.\n        /// </summary>\n        internal static string HudRaynoldsVessel {\n            get {\n                return ResourceManager.GetString(\"HudRaynoldsVessel\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Regroup.\n        /// </summary>\n        internal static string HudRegroup {\n            get {\n                return ResourceManager.GetString(\"HudRegroup\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Research room.\n        /// </summary>\n        internal static string HudResearchRoom {\n            get {\n                return ResourceManager.GetString(\"HudResearchRoom\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The Rift.\n        /// </summary>\n        internal static string HudRift {\n            get {\n                return ResourceManager.GetString(\"HudRift\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Run.\n        /// </summary>\n        internal static string HudRun {\n            get {\n                return ResourceManager.GetString(\"HudRun\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Safe area.\n        /// </summary>\n        internal static string HudSafeArea {\n            get {\n                return ResourceManager.GetString(\"HudSafeArea\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Search.\n        /// </summary>\n        internal static string HudSearch {\n            get {\n                return ResourceManager.GetString(\"HudSearch\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Security hub.\n        /// </summary>\n        internal static string HudSecurityHub {\n            get {\n                return ResourceManager.GetString(\"HudSecurityHub\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Service room.\n        /// </summary>\n        internal static string HudServiceRoom {\n            get {\n                return ResourceManager.GetString(\"HudServiceRoom\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ship.\n        /// </summary>\n        internal static string HudShip {\n            get {\n                return ResourceManager.GetString(\"HudShip\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sir Geraint.\n        /// </summary>\n        internal static string HudSirGeraint {\n            get {\n                return ResourceManager.GetString(\"HudSirGeraint\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Start.\n        /// </summary>\n        internal static string HudStart {\n            get {\n                return ResourceManager.GetString(\"HudStart\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Station.\n        /// </summary>\n        internal static string HudStation {\n            get {\n                return ResourceManager.GetString(\"HudStation\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Stranger.\n        /// </summary>\n        internal static string HudStranger {\n            get {\n                return ResourceManager.GetString(\"HudStranger\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Supplies.\n        /// </summary>\n        internal static string HudSupplies {\n            get {\n                return ResourceManager.GetString(\"HudSupplies\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tower B.\n        /// </summary>\n        internal static string HudTowerB {\n            get {\n                return ResourceManager.GetString(\"HudTowerB\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Transformer.\n        /// </summary>\n        internal static string HudTransformer {\n            get {\n                return ResourceManager.GetString(\"HudTransformer\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Transmitter.\n        /// </summary>\n        internal static string HudTransmitter {\n            get {\n                return ResourceManager.GetString(\"HudTransmitter\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Transport.\n        /// </summary>\n        internal static string HudTransport {\n            get {\n                return ResourceManager.GetString(\"HudTransport\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel.\n        /// </summary>\n        internal static string HudTunnel {\n            get {\n                return ResourceManager.GetString(\"HudTunnel\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Warehouse.\n        /// </summary>\n        internal static string HudWarehouse {\n            get {\n                return ResourceManager.GetString(\"HudWarehouse\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Warhead.\n        /// </summary>\n        internal static string HudWarhead {\n            get {\n                return ResourceManager.GetString(\"HudWarhead\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hurry up, don’t let him fly away!.\n        /// </summary>\n        internal static string HurryUp {\n            get {\n                return ResourceManager.GetString(\"HurryUp\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ice.\n        /// </summary>\n        internal static string Ice_01 {\n            get {\n                return ResourceManager.GetString(\"Ice_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ice Cave Deathmatch 256x128x256.\n        /// </summary>\n        internal static string IceCaveDeathmatch {\n            get {\n                return ResourceManager.GetString(\"IceCaveDeathmatch\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Illegal cargo.\n        /// </summary>\n        internal static string IllegalCargo {\n            get {\n                return ResourceManager.GetString(\"IllegalCargo\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Illuminating shell.\n        /// </summary>\n        internal static string IlluminatingShellHud {\n            get {\n                return ResourceManager.GetString(\"IlluminatingShellHud\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Incoming missile.\n        /// </summary>\n        internal static string IncommingMissileAlarm {\n            get {\n                return ResourceManager.GetString(\"IncommingMissileAlarm\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Increase cargo capacity.\n        /// </summary>\n        internal static string IncreaseCargoCapacity {\n            get {\n                return ResourceManager.GetString(\"IncreaseCargoCapacity\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Indestructible.\n        /// </summary>\n        internal static string Indestructible {\n            get {\n                return ResourceManager.GetString(\"Indestructible\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Indestructible 1.\n        /// </summary>\n        internal static string Indestructible_01 {\n            get {\n                return ResourceManager.GetString(\"Indestructible_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Indestructible 2.\n        /// </summary>\n        internal static string Indestructible_02 {\n            get {\n                return ResourceManager.GetString(\"Indestructible_02\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Indestructible 3.\n        /// </summary>\n        internal static string Indestructible_03 {\n            get {\n                return ResourceManager.GetString(\"Indestructible_03\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Indestructible 4.\n        /// </summary>\n        internal static string Indestructible_04 {\n            get {\n                return ResourceManager.GetString(\"Indestructible_04\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Indestructible 5 Craters.\n        /// </summary>\n        internal static string Indestructible_05_Craters_01 {\n            get {\n                return ResourceManager.GetString(\"Indestructible_05_Craters_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Can’t destroy this type of asteroid.\n        /// </summary>\n        internal static string IndestructibleAsteroidNotification {\n            get {\n                return ResourceManager.GetString(\"IndestructibleAsteroidNotification\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Industrial sector.\n        /// </summary>\n        internal static string INDUSTRIAL_SECTOR {\n            get {\n                return ResourceManager.GetString(\"INDUSTRIAL_SECTOR\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Industrial sector\n        ///.\n        /// </summary>\n        internal static string INDUSTRIAL_SECTOR_Description {\n            get {\n                return ResourceManager.GetString(\"INDUSTRIAL_SECTOR_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Infinite ammo.\n        /// </summary>\n        internal static string InfiniteAmmo {\n            get {\n                return ResourceManager.GetString(\"InfiniteAmmo\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Infinite fuel.\n        /// </summary>\n        internal static string InfiniteFuel {\n            get {\n                return ResourceManager.GetString(\"InfiniteFuel\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Infinite oxygen.\n        /// </summary>\n        internal static string InfiniteOxygen {\n            get {\n                return ResourceManager.GetString(\"InfiniteOxygen\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Influence sphere.\n        /// </summary>\n        internal static string InfluenceSphereContextMenuCaption {\n            get {\n                return ResourceManager.GetString(\"InfluenceSphereContextMenuCaption\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Influence spheres.\n        /// </summary>\n        internal static string InfluenceSpheres {\n            get {\n                return ResourceManager.GetString(\"InfluenceSpheres\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Affiliate URL unique clicks:.\n        /// </summary>\n        internal static string InfoAffClick {\n            get {\n                return ResourceManager.GetString(\"InfoAffClick\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Affiliate URL registrations:.\n        /// </summary>\n        internal static string InfoAffReg {\n            get {\n                return ResourceManager.GetString(\"InfoAffReg\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Age:.\n        /// </summary>\n        internal static string InfoAge {\n            get {\n                return ResourceManager.GetString(\"InfoAge\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Contributions:.\n        /// </summary>\n        internal static string InfoContributions {\n            get {\n                return ResourceManager.GetString(\"InfoContributions\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Description:.\n        /// </summary>\n        internal static string InfoDescription {\n            get {\n                return ResourceManager.GetString(\"InfoDescription\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Display name:.\n        /// </summary>\n        internal static string InfoDisplayName {\n            get {\n                return ResourceManager.GetString(\"InfoDisplayName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to E-mail:.\n        /// </summary>\n        internal static string InfoEmail {\n            get {\n                return ResourceManager.GetString(\"InfoEmail\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Forum posts:.\n        /// </summary>\n        internal static string InfoForumPosts {\n            get {\n                return ResourceManager.GetString(\"InfoForumPosts\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Last game log in:.\n        /// </summary>\n        internal static string InfoGameLogin {\n            get {\n                return ResourceManager.GetString(\"InfoGameLogin\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Gender:.\n        /// </summary>\n        internal static string InfoGender {\n            get {\n                return ResourceManager.GetString(\"InfoGender\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Qualification points:.\n        /// </summary>\n        internal static string InfoQualificationPoints {\n            get {\n                return ResourceManager.GetString(\"InfoQualificationPoints\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Registered: .\n        /// </summary>\n        internal static string InfoRegistered {\n            get {\n                return ResourceManager.GetString(\"InfoRegistered\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Username:.\n        /// </summary>\n        internal static string InfoUserName {\n            get {\n                return ResourceManager.GetString(\"InfoUserName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Last website log in:.\n        /// </summary>\n        internal static string InfoWebLogin {\n            get {\n                return ResourceManager.GetString(\"InfoWebLogin\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Insert.\n        /// </summary>\n        internal static string Insert {\n            get {\n                return ResourceManager.GetString(\"Insert\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Instant building.\n        /// </summary>\n        internal static string InstantBuilding {\n            get {\n                return ResourceManager.GetString(\"InstantBuilding\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Intergalactic highway.\n        /// </summary>\n        internal static string INTERGALACTIC_HIGHWAY {\n            get {\n                return ResourceManager.GetString(\"INTERGALACTIC_HIGHWAY\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Intergalactic highway\n        ///.\n        /// </summary>\n        internal static string INTERGALACTIC_HIGHWAY_Description {\n            get {\n                return ResourceManager.GetString(\"INTERGALACTIC_HIGHWAY_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to In 2070, Project Genesis was launched..\n        /// </summary>\n        internal static string Intro01 {\n            get {\n                return ResourceManager.GetString(\"Intro01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to An experimental project aiming to harness the energy of the sun..\n        /// </summary>\n        internal static string Intro02 {\n            get {\n                return ResourceManager.GetString(\"Intro02\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to However, the experiment resulted in a temporary quantum change.\n        /// </summary>\n        internal static string Intro03 {\n            get {\n                return ResourceManager.GetString(\"Intro03\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to within gravitational laws and subatomic particle rotations..\n        /// </summary>\n        internal static string Intro04 {\n            get {\n                return ResourceManager.GetString(\"Intro04\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The gravitational quantum collapse tore all the larger objects\n        ///asunder throughout our solar system..\n        /// </summary>\n        internal static string Intro05 {\n            get {\n                return ResourceManager.GetString(\"Intro05\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Planets, moons and even larger asteroids and comets\n        ///were fragmented into thousands of pieces..\n        /// </summary>\n        internal static string Intro06 {\n            get {\n                return ResourceManager.GetString(\"Intro06\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Creating new asteroid belts, marking their former planet&apos;s orbits..\n        /// </summary>\n        internal static string Intro07 {\n            get {\n                return ResourceManager.GetString(\"Intro07\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Together with the rest of the planets and moons,\n        ///Earth was eventually destroyed..\n        /// </summary>\n        internal static string Intro08 {\n            get {\n                return ResourceManager.GetString(\"Intro08\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Billions of people died together along with our planet Earth..\n        /// </summary>\n        internal static string Intro09 {\n            get {\n                return ResourceManager.GetString(\"Intro09\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Concurrent massive solar storms killed additional\n        ///thousands of space colonists..\n        /// </summary>\n        internal static string Intro10 {\n            get {\n                return ResourceManager.GetString(\"Intro10\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The Euro-American Confederation is held responsible for the celestial accident, .\n        /// </summary>\n        internal static string Intro11 {\n            get {\n                return ResourceManager.GetString(\"Intro11\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to especially by its major opposition China..\n        /// </summary>\n        internal static string Intro12 {\n            get {\n                return ResourceManager.GetString(\"Intro12\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to 2081 – eleven years after the Solar Event.\n        /// </summary>\n        internal static string Intro13 {\n            get {\n                return ResourceManager.GetString(\"Intro13\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Here we are. According to the triangulation,\n        ///the source of the signal is somewhere nearby..\n        /// </summary>\n        internal static string Intro14 {\n            get {\n                return ResourceManager.GetString(\"Intro14\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to So this is the source of the signal. I must admit I wasn’t\n        ///expecting something quite so… Holy Crap..\n        /// </summary>\n        internal static string Intro15 {\n            get {\n                return ResourceManager.GetString(\"Intro15\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Oh my God!.\n        /// </summary>\n        internal static string Intro16 {\n            get {\n                return ResourceManager.GetString(\"Intro16\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to This is the moment I’ve waited for my entire life..\n        /// </summary>\n        internal static string Intro17 {\n            get {\n                return ResourceManager.GetString(\"Intro17\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Any idea what it is?.\n        /// </summary>\n        internal static string Intro18 {\n            get {\n                return ResourceManager.GetString(\"Intro18\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Three weeks earlier....\n        /// </summary>\n        internal static string Intro19 {\n            get {\n                return ResourceManager.GetString(\"Intro19\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Invalid faction.\n        /// </summary>\n        internal static string InvalidFaction {\n            get {\n                return ResourceManager.GetString(\"InvalidFaction\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Selection already on this position, please choose a different one.\n        /// </summary>\n        internal static string InvalidPositionCoordinates {\n            get {\n                return ResourceManager.GetString(\"InvalidPositionCoordinates\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Please check your timezone and time. Valid timezone and time (withing tolerance) is required to connect to server..\n        /// </summary>\n        internal static string InvalidTime {\n            get {\n                return ResourceManager.GetString(\"InvalidTime\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Inventory.\n        /// </summary>\n        internal static string Inventory {\n            get {\n                return ResourceManager.GetString(\"Inventory\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to {0} / {1}.\n        /// </summary>\n        internal static string InventoryCapacityLabel {\n            get {\n                return ResourceManager.GetString(\"InventoryCapacityLabel\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to All.\n        /// </summary>\n        internal static string InventoryShowAll {\n            get {\n                return ResourceManager.GetString(\"InventoryShowAll\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Medicine.\n        /// </summary>\n        internal static string InventoryShowConsumables {\n            get {\n                return ResourceManager.GetString(\"InventoryShowConsumables\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Engines, devices, drones, etc..\n        /// </summary>\n        internal static string InventoryShowEquipment {\n            get {\n                return ResourceManager.GetString(\"InventoryShowEquipment\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Goods.\n        /// </summary>\n        internal static string InventoryShowGods {\n            get {\n                return ResourceManager.GetString(\"InventoryShowGods\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ores.\n        /// </summary>\n        internal static string InventoryShowOres {\n            get {\n                return ResourceManager.GetString(\"InventoryShowOres\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Weapons &amp; ammo.\n        /// </summary>\n        internal static string InventoryShowWeapons {\n            get {\n                return ResourceManager.GetString(\"InventoryShowWeapons\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Inventory templates.\n        /// </summary>\n        internal static string InventoryTemplates {\n            get {\n                return ResourceManager.GetString(\"InventoryTemplates\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Invert mouse X axis.\n        /// </summary>\n        internal static string InvertMouseX {\n            get {\n                return ResourceManager.GetString(\"InvertMouseX\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Invert mouse Y axis.\n        /// </summary>\n        internal static string InvertMouseY {\n            get {\n                return ResourceManager.GetString(\"InvertMouseY\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Iron 1.\n        /// </summary>\n        internal static string Iron_01 {\n            get {\n                return ResourceManager.GetString(\"Iron_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Iron 2.\n        /// </summary>\n        internal static string Iron_02 {\n            get {\n                return ResourceManager.GetString(\"Iron_02\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Is hacked.\n        /// </summary>\n        internal static string IsHacked {\n            get {\n                return ResourceManager.GetString(\"IsHacked\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Items.\n        /// </summary>\n        internal static string Items {\n            get {\n                return ResourceManager.GetString(\"Items\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Jammer.\n        /// </summary>\n        internal static string Jammer {\n            get {\n                return ResourceManager.GetString(\"Jammer\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Join friend’s game.\n        /// </summary>\n        internal static string JoinFriendGame {\n            get {\n                return ResourceManager.GetString(\"JoinFriendGame\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Join game.\n        /// </summary>\n        internal static string JoinGame {\n            get {\n                return ResourceManager.GetString(\"JoinGame\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The request has timed out.\n        /// </summary>\n        internal static string JoinGameTimeout {\n            get {\n                return ResourceManager.GetString(\"JoinGameTimeout\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Joining game… please wait.\n        /// </summary>\n        internal static string JoiningGame {\n            get {\n                return ResourceManager.GetString(\"JoiningGame\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Closed.\n        /// </summary>\n        internal static string JoinModeClosed {\n            get {\n                return ResourceManager.GetString(\"JoinModeClosed\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Open.\n        /// </summary>\n        internal static string JoinModeOpen {\n            get {\n                return ResourceManager.GetString(\"JoinModeOpen\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Game runs in singleplayer mode..\n        /// </summary>\n        internal static string JoinModeStateClosed {\n            get {\n                return ResourceManager.GetString(\"JoinModeStateClosed\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Game runs in coop mode..\n        /// </summary>\n        internal static string JoinModeStateOpen {\n            get {\n                return ResourceManager.GetString(\"JoinModeStateOpen\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to {0} wants to join..\n        /// </summary>\n        internal static string JoinRequest {\n            get {\n                return ResourceManager.GetString(\"JoinRequest\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Join request.\n        /// </summary>\n        internal static string JoinRequestTitle {\n            get {\n                return ResourceManager.GetString(\"JoinRequestTitle\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Journal.\n        /// </summary>\n        internal static string JournalDialogTitle {\n            get {\n                return ResourceManager.GetString(\"JournalDialogTitle\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Joystick or gamepad.\n        /// </summary>\n        internal static string Joystick {\n            get {\n                return ResourceManager.GetString(\"Joystick\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to JX-.\n        /// </summary>\n        internal static string JoystickAxisXneg {\n            get {\n                return ResourceManager.GetString(\"JoystickAxisXneg\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to JX+.\n        /// </summary>\n        internal static string JoystickAxisXpos {\n            get {\n                return ResourceManager.GetString(\"JoystickAxisXpos\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to JY-.\n        /// </summary>\n        internal static string JoystickAxisYneg {\n            get {\n                return ResourceManager.GetString(\"JoystickAxisYneg\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to JY+.\n        /// </summary>\n        internal static string JoystickAxisYpos {\n            get {\n                return ResourceManager.GetString(\"JoystickAxisYpos\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to JZ-.\n        /// </summary>\n        internal static string JoystickAxisZneg {\n            get {\n                return ResourceManager.GetString(\"JoystickAxisZneg\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to JZ+.\n        /// </summary>\n        internal static string JoystickAxisZpos {\n            get {\n                return ResourceManager.GetString(\"JoystickAxisZpos\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to JB.\n        /// </summary>\n        internal static string JoystickButton {\n            get {\n                return ResourceManager.GetString(\"JoystickButton\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to JDDown.\n        /// </summary>\n        internal static string JoystickButtonDown {\n            get {\n                return ResourceManager.GetString(\"JoystickButtonDown\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to JDLeft.\n        /// </summary>\n        internal static string JoystickButtonLeft {\n            get {\n                return ResourceManager.GetString(\"JoystickButtonLeft\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to JDRight.\n        /// </summary>\n        internal static string JoystickButtonRight {\n            get {\n                return ResourceManager.GetString(\"JoystickButtonRight\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to JDUp.\n        /// </summary>\n        internal static string JoystickButtonUp {\n            get {\n                return ResourceManager.GetString(\"JoystickButtonUp\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Joystick deadzone width.\n        /// </summary>\n        internal static string JoystickDeadzone {\n            get {\n                return ResourceManager.GetString(\"JoystickDeadzone\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Joystick gradual precision.\n        /// </summary>\n        internal static string JoystickExponent {\n            get {\n                return ResourceManager.GetString(\"JoystickExponent\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to JRX-.\n        /// </summary>\n        internal static string JoystickRotationXneg {\n            get {\n                return ResourceManager.GetString(\"JoystickRotationXneg\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to JRX+.\n        /// </summary>\n        internal static string JoystickRotationXpos {\n            get {\n                return ResourceManager.GetString(\"JoystickRotationXpos\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to JRY-.\n        /// </summary>\n        internal static string JoystickRotationYneg {\n            get {\n                return ResourceManager.GetString(\"JoystickRotationYneg\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to JRY+.\n        /// </summary>\n        internal static string JoystickRotationYpos {\n            get {\n                return ResourceManager.GetString(\"JoystickRotationYpos\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to JRZ-.\n        /// </summary>\n        internal static string JoystickRotationZneg {\n            get {\n                return ResourceManager.GetString(\"JoystickRotationZneg\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to JRZ+.\n        /// </summary>\n        internal static string JoystickRotationZpos {\n            get {\n                return ResourceManager.GetString(\"JoystickRotationZpos\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Joystick sensitivity.\n        /// </summary>\n        internal static string JoystickSensitivity {\n            get {\n                return ResourceManager.GetString(\"JoystickSensitivity\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to JS1-.\n        /// </summary>\n        internal static string JoystickSlider1neg {\n            get {\n                return ResourceManager.GetString(\"JoystickSlider1neg\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to JS1+.\n        /// </summary>\n        internal static string JoystickSlider1pos {\n            get {\n                return ResourceManager.GetString(\"JoystickSlider1pos\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to JS2-.\n        /// </summary>\n        internal static string JoystickSlider2neg {\n            get {\n                return ResourceManager.GetString(\"JoystickSlider2neg\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to JS2+.\n        /// </summary>\n        internal static string JoystickSlider2pos {\n            get {\n                return ResourceManager.GetString(\"JoystickSlider2pos\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Junkyard.\n        /// </summary>\n        internal static string JUNKYARD_CONVINCE {\n            get {\n                return ResourceManager.GetString(\"JUNKYARD_CONVINCE\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Crush. Kill. Destroy. Swag.\n        ///.\n        /// </summary>\n        internal static string JUNKYARD_CONVINCE_BR_FIGHT_Description {\n            get {\n                return ResourceManager.GetString(\"JUNKYARD_CONVINCE_BR_FIGHT_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Kill the enemies.\n        /// </summary>\n        internal static string JUNKYARD_CONVINCE_BR_FIGHT_Name {\n            get {\n                return ResourceManager.GetString(\"JUNKYARD_CONVINCE_BR_FIGHT_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string JUNKYARD_CONVINCE_D_FIND_INFORMATOR_Description {\n            get {\n                return ResourceManager.GetString(\"JUNKYARD_CONVINCE_D_FIND_INFORMATOR_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Speak to Tarja.\n        /// </summary>\n        internal static string JUNKYARD_CONVINCE_D_FIND_INFORMATOR_Name {\n            get {\n                return ResourceManager.GetString(\"JUNKYARD_CONVINCE_D_FIND_INFORMATOR_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Convince Manjeet to give you the artifact.\n        /// </summary>\n        internal static string JUNKYARD_CONVINCE_D_FOLLOW_SMUGGLER_Description {\n            get {\n                return ResourceManager.GetString(\"JUNKYARD_CONVINCE_D_FOLLOW_SMUGGLER_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Speak to Manjeet.\n        /// </summary>\n        internal static string JUNKYARD_CONVINCE_D_FOLLOW_SMUGGLER_Name {\n            get {\n                return ResourceManager.GetString(\"JUNKYARD_CONVINCE_D_FOLLOW_SMUGGLER_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Get the bomb from the dealer..\n        /// </summary>\n        internal static string JUNKYARD_CONVINCE_D_GO_TO_BOMB_DEALER_Description {\n            get {\n                return ResourceManager.GetString(\"JUNKYARD_CONVINCE_D_GO_TO_BOMB_DEALER_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Speak to the bomb dealer.\n        /// </summary>\n        internal static string JUNKYARD_CONVINCE_D_GO_TO_BOMB_DEALER_Name {\n            get {\n                return ResourceManager.GetString(\"JUNKYARD_CONVINCE_D_GO_TO_BOMB_DEALER_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string JUNKYARD_CONVINCE_D_GO_TO_MARCUS_Description {\n            get {\n                return ResourceManager.GetString(\"JUNKYARD_CONVINCE_D_GO_TO_MARCUS_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Watch for trouble.\n        /// </summary>\n        internal static string JUNKYARD_CONVINCE_D_GO_TO_MARCUS_Name {\n            get {\n                return ResourceManager.GetString(\"JUNKYARD_CONVINCE_D_GO_TO_MARCUS_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Get information from Manjeet.\n        ///.\n        /// </summary>\n        internal static string JUNKYARD_CONVINCE_D_RETURN_TO_SMUGGLER_Description {\n            get {\n                return ResourceManager.GetString(\"JUNKYARD_CONVINCE_D_RETURN_TO_SMUGGLER_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Speak to Manjeet.\n        /// </summary>\n        internal static string JUNKYARD_CONVINCE_D_RETURN_TO_SMUGGLER_Name {\n            get {\n                return ResourceManager.GetString(\"JUNKYARD_CONVINCE_D_RETURN_TO_SMUGGLER_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string JUNKYARD_CONVINCE_D_SPEAK_WITH_MOMO_Description {\n            get {\n                return ResourceManager.GetString(\"JUNKYARD_CONVINCE_D_SPEAK_WITH_MOMO_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Speak to Momo.\n        /// </summary>\n        internal static string JUNKYARD_CONVINCE_D_SPEAK_WITH_MOMO_Name {\n            get {\n                return ResourceManager.GetString(\"JUNKYARD_CONVINCE_D_SPEAK_WITH_MOMO_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Convince the smuggler to join your cause\n        ///.\n        /// </summary>\n        internal static string JUNKYARD_CONVINCE_Description {\n            get {\n                return ResourceManager.GetString(\"JUNKYARD_CONVINCE_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string JUNKYARD_CONVINCE_FIGHT_MOMO_Description {\n            get {\n                return ResourceManager.GetString(\"JUNKYARD_CONVINCE_FIGHT_MOMO_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Kill Momo and his gang.\n        /// </summary>\n        internal static string JUNKYARD_CONVINCE_FIGHT_MOMO_Name {\n            get {\n                return ResourceManager.GetString(\"JUNKYARD_CONVINCE_FIGHT_MOMO_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Look for information about the smuggler in the City.\n        ///.\n        /// </summary>\n        internal static string JUNKYARD_CONVINCE_FIND_INFORMATOR_Description {\n            get {\n                return ResourceManager.GetString(\"JUNKYARD_CONVINCE_FIND_INFORMATOR_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Find the informant.\n        /// </summary>\n        internal static string JUNKYARD_CONVINCE_FIND_INFORMATOR_Name {\n            get {\n                return ResourceManager.GetString(\"JUNKYARD_CONVINCE_FIND_INFORMATOR_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string JUNKYARD_CONVINCE_FIND_SMUGGLER_Description {\n            get {\n                return ResourceManager.GetString(\"JUNKYARD_CONVINCE_FIND_SMUGGLER_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Look for Manjeet in the hangar.\n        /// </summary>\n        internal static string JUNKYARD_CONVINCE_FIND_SMUGGLER_Name {\n            get {\n                return ResourceManager.GetString(\"JUNKYARD_CONVINCE_FIND_SMUGGLER_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string JUNKYARD_CONVINCE_FLY_TO_ENEMY_Description {\n            get {\n                return ResourceManager.GetString(\"JUNKYARD_CONVINCE_FLY_TO_ENEMY_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Find Momo’s gang.\n        /// </summary>\n        internal static string JUNKYARD_CONVINCE_FLY_TO_ENEMY_Name {\n            get {\n                return ResourceManager.GetString(\"JUNKYARD_CONVINCE_FLY_TO_ENEMY_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string JUNKYARD_CONVINCE_FOLLOW_SMUGGLER_Description {\n            get {\n                return ResourceManager.GetString(\"JUNKYARD_CONVINCE_FOLLOW_SMUGGLER_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Catch Manjeet.\n        /// </summary>\n        internal static string JUNKYARD_CONVINCE_FOLLOW_SMUGGLER_Name {\n            get {\n                return ResourceManager.GetString(\"JUNKYARD_CONVINCE_FOLLOW_SMUGGLER_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Find the bomb dealer and get the bomb!\n        ///.\n        /// </summary>\n        internal static string JUNKYARD_CONVINCE_GO_TO_BOMB_DEALER_Description {\n            get {\n                return ResourceManager.GetString(\"JUNKYARD_CONVINCE_GO_TO_BOMB_DEALER_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fly to the bomb dealer.\n        /// </summary>\n        internal static string JUNKYARD_CONVINCE_GO_TO_BOMB_DEALER_Name {\n            get {\n                return ResourceManager.GetString(\"JUNKYARD_CONVINCE_GO_TO_BOMB_DEALER_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Marcus could be in trouble. Go help him.\n        ///.\n        /// </summary>\n        internal static string JUNKYARD_CONVINCE_GO_TO_MARCUS_Description {\n            get {\n                return ResourceManager.GetString(\"JUNKYARD_CONVINCE_GO_TO_MARCUS_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fly to Marcus.\n        /// </summary>\n        internal static string JUNKYARD_CONVINCE_GO_TO_MARCUS_Name {\n            get {\n                return ResourceManager.GetString(\"JUNKYARD_CONVINCE_GO_TO_MARCUS_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string JUNKYARD_CONVINCE_KILL_WAVES_Description {\n            get {\n                return ResourceManager.GetString(\"JUNKYARD_CONVINCE_KILL_WAVES_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Kill Momo’s men.\n        /// </summary>\n        internal static string JUNKYARD_CONVINCE_KILL_WAVES_Name {\n            get {\n                return ResourceManager.GetString(\"JUNKYARD_CONVINCE_KILL_WAVES_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string JUNKYARD_CONVINCE_RETURN_TO_MS_Description {\n            get {\n                return ResourceManager.GetString(\"JUNKYARD_CONVINCE_RETURN_TO_MS_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Return to Madelyn.\n        /// </summary>\n        internal static string JUNKYARD_CONVINCE_RETURN_TO_MS_Name {\n            get {\n                return ResourceManager.GetString(\"JUNKYARD_CONVINCE_RETURN_TO_MS_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Return to Manjeet for the reward.\n        ///.\n        /// </summary>\n        internal static string JUNKYARD_CONVINCE_RETURN_TO_SMUGGLER_Description {\n            get {\n                return ResourceManager.GetString(\"JUNKYARD_CONVINCE_RETURN_TO_SMUGGLER_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Return to Manjeet.\n        /// </summary>\n        internal static string JUNKYARD_CONVINCE_RETURN_TO_SMUGGLER_Name {\n            get {\n                return ResourceManager.GetString(\"JUNKYARD_CONVINCE_RETURN_TO_SMUGGLER_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Get closer to Momo and speak to him.\n        ///.\n        /// </summary>\n        internal static string JUNKYARD_CONVINCE_SPEAK_WITH_MOMO_Description {\n            get {\n                return ResourceManager.GetString(\"JUNKYARD_CONVINCE_SPEAK_WITH_MOMO_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Approach to Momo.\n        /// </summary>\n        internal static string JUNKYARD_CONVINCE_SPEAK_WITH_MOMO_Name {\n            get {\n                return ResourceManager.GetString(\"JUNKYARD_CONVINCE_SPEAK_WITH_MOMO_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Junkyard / EAC Ambush.\n        /// </summary>\n        internal static string JUNKYARD_EAC_AMBUSH {\n            get {\n                return ResourceManager.GetString(\"JUNKYARD_EAC_AMBUSH\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Go back to Manjeet for plutonium power cells\n        ///.\n        /// </summary>\n        internal static string JUNKYARD_EAC_AMBUSH_Description {\n            get {\n                return ResourceManager.GetString(\"JUNKYARD_EAC_AMBUSH_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Junkyard Race 256x256x256.\n        /// </summary>\n        internal static string Junkyard_Race_256x256x256 {\n            get {\n                return ResourceManager.GetString(\"Junkyard_Race_256x256x256\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Junkyard Race 2 256x256x256.\n        /// </summary>\n        internal static string Junkyard_RaceAsteroid_256x256x256 {\n            get {\n                return ResourceManager.GetString(\"Junkyard_RaceAsteroid_256x256x256\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Junkyard.\n        /// </summary>\n        internal static string JUNKYARD_RETURN {\n            get {\n                return ResourceManager.GetString(\"JUNKYARD_RETURN\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Return to Manjeet with the stolen cargo ship\n        ///.\n        /// </summary>\n        internal static string JUNKYARD_RETURN_Description {\n            get {\n                return ResourceManager.GetString(\"JUNKYARD_RETURN_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Speak to Manjeet and get the artifact.\n        ///.\n        /// </summary>\n        internal static string JUNKYARD_RETURN_DIALOGUE_RETURN_Description {\n            get {\n                return ResourceManager.GetString(\"JUNKYARD_RETURN_DIALOGUE_RETURN_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Speak to Manjeet.\n        /// </summary>\n        internal static string JUNKYARD_RETURN_DIALOGUE_RETURN_Name {\n            get {\n                return ResourceManager.GetString(\"JUNKYARD_RETURN_DIALOGUE_RETURN_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fly to the starting line and prepare for the race!\n        ///.\n        /// </summary>\n        internal static string JUNKYARD_RETURN_FLY_TO_START_Description {\n            get {\n                return ResourceManager.GetString(\"JUNKYARD_RETURN_FLY_TO_START_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Go to the starting line and wait for the race start.\n        /// </summary>\n        internal static string JUNKYARD_RETURN_FLY_TO_START_Name {\n            get {\n                return ResourceManager.GetString(\"JUNKYARD_RETURN_FLY_TO_START_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string JUNKYARD_RETURN_GO_TO_SMUGGLER_Description {\n            get {\n                return ResourceManager.GetString(\"JUNKYARD_RETURN_GO_TO_SMUGGLER_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Return to Manjeet.\n        /// </summary>\n        internal static string JUNKYARD_RETURN_GO_TO_SMUGGLER_name {\n            get {\n                return ResourceManager.GetString(\"JUNKYARD_RETURN_GO_TO_SMUGGLER_name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string JUNKYARD_RETURN_MEET_SMUGGLER_Description {\n            get {\n                return ResourceManager.GetString(\"JUNKYARD_RETURN_MEET_SMUGGLER_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Meet Manjeet in the city.\n        /// </summary>\n        internal static string JUNKYARD_RETURN_MEET_SMUGGLER_Name {\n            get {\n                return ResourceManager.GetString(\"JUNKYARD_RETURN_MEET_SMUGGLER_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string JUNKYARD_RETURN_RACE_Description {\n            get {\n                return ResourceManager.GetString(\"JUNKYARD_RETURN_RACE_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Win the race.\n        /// </summary>\n        internal static string JUNKYARD_RETURN_RACE_GoBackName {\n            get {\n                return ResourceManager.GetString(\"JUNKYARD_RETURN_RACE_GoBackName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Reach all checkpoints.\n        /// </summary>\n        internal static string JUNKYARD_RETURN_RACE_Name {\n            get {\n                return ResourceManager.GetString(\"JUNKYARD_RETURN_RACE_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string JUNKYARD_RETURN_RACE_PrepareName {\n            get {\n                return ResourceManager.GetString(\"JUNKYARD_RETURN_RACE_PrepareName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Get the artifact from Manjeet\n        ///.\n        /// </summary>\n        internal static string JUNKYARD_RETURN_WIN_Description {\n            get {\n                return ResourceManager.GetString(\"JUNKYARD_RETURN_WIN_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Bask in your victory.\n        /// </summary>\n        internal static string JUNKYARD_RETURN_WIN_Name {\n            get {\n                return ResourceManager.GetString(\"JUNKYARD_RETURN_WIN_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Duncan’s Faith, also commonly dubbed the “Junkyard” – site of a violent historic battle in\n        ///2074 between the Fourth Reich and EAC. It contains the metallic remnants of destroyed\n        ///motherships and thousands of tons of waste and abandoned equipment. Because of its\n        ///extensive battle damage and war debris, it has devolved into a popular destination for\n        ///pirates, scavengers, smugglers and others hiding from the eyes of legal authorities..\n        /// </summary>\n        internal static string JUNKYARD_SectorDescription {\n            get {\n                return ResourceManager.GetString(\"JUNKYARD_SectorDescription\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to DUNCAN’S FAITH (JUNKYARD).\n        /// </summary>\n        internal static string JUNKYARD_SectorName {\n            get {\n                return ResourceManager.GetString(\"JUNKYARD_SectorName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Junk Yard Forge 256x256x256.\n        /// </summary>\n        internal static string JunkYardForge_256x256x256 {\n            get {\n                return ResourceManager.GetString(\"JunkYardForge_256x256x256\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Junk Yard Inhabited 256x128x256.\n        /// </summary>\n        internal static string JunkYardInhabited_256x128x256 {\n            get {\n                return ResourceManager.GetString(\"JunkYardInhabited_256x128x256\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Junk Yard Toxic 128x128x128.\n        /// </summary>\n        internal static string JunkYardToxic_128x128x128 {\n            get {\n                return ResourceManager.GetString(\"JunkYardToxic_128x128x128\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Keyboard.\n        /// </summary>\n        internal static string Keyboard {\n            get {\n                return ResourceManager.GetString(\"Keyboard\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Num +.\n        /// </summary>\n        internal static string KeysAdd {\n            get {\n                return ResourceManager.GetString(\"KeysAdd\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Bkslash.\n        /// </summary>\n        internal static string KeysBackslash {\n            get {\n                return ResourceManager.GetString(\"KeysBackslash\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Caps.\n        /// </summary>\n        internal static string KeysCapsLock {\n            get {\n                return ResourceManager.GetString(\"KeysCapsLock\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to ].\n        /// </summary>\n        internal static string KeysCloseBracket {\n            get {\n                return ResourceManager.GetString(\"KeysCloseBracket\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Comma.\n        /// </summary>\n        internal static string KeysComma {\n            get {\n                return ResourceManager.GetString(\"KeysComma\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Num ..\n        /// </summary>\n        internal static string KeysDecimal {\n            get {\n                return ResourceManager.GetString(\"KeysDecimal\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Num /.\n        /// </summary>\n        internal static string KeysDivide {\n            get {\n                return ResourceManager.GetString(\"KeysDivide\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Enter.\n        /// </summary>\n        internal static string KeysEnter {\n            get {\n                return ResourceManager.GetString(\"KeysEnter\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Minus.\n        /// </summary>\n        internal static string KeysMinus {\n            get {\n                return ResourceManager.GetString(\"KeysMinus\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Num *.\n        /// </summary>\n        internal static string KeysMultiply {\n            get {\n                return ResourceManager.GetString(\"KeysMultiply\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to [.\n        /// </summary>\n        internal static string KeysOpenBracket {\n            get {\n                return ResourceManager.GetString(\"KeysOpenBracket\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Period.\n        /// </summary>\n        internal static string KeysPeriod {\n            get {\n                return ResourceManager.GetString(\"KeysPeriod\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Pipe.\n        /// </summary>\n        internal static string KeysPipe {\n            get {\n                return ResourceManager.GetString(\"KeysPipe\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Plus.\n        /// </summary>\n        internal static string KeysPlus {\n            get {\n                return ResourceManager.GetString(\"KeysPlus\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Slash.\n        /// </summary>\n        internal static string KeysQuestion {\n            get {\n                return ResourceManager.GetString(\"KeysQuestion\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Quote.\n        /// </summary>\n        internal static string KeysQuotes {\n            get {\n                return ResourceManager.GetString(\"KeysQuotes\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Colon.\n        /// </summary>\n        internal static string KeysSemicolon {\n            get {\n                return ResourceManager.GetString(\"KeysSemicolon\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Num −.\n        /// </summary>\n        internal static string KeysSubtract {\n            get {\n                return ResourceManager.GetString(\"KeysSubtract\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to ~.\n        /// </summary>\n        internal static string KeysTilde {\n            get {\n                return ResourceManager.GetString(\"KeysTilde\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Kill them all.\n        /// </summary>\n        internal static string KillAll {\n            get {\n                return ResourceManager.GetString(\"KillAll\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Enable object pivot.\n        /// </summary>\n        internal static string LabelEnableObjectPivot {\n            get {\n                return ResourceManager.GetString(\"LabelEnableObjectPivot\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Show text info.\n        /// </summary>\n        internal static string LabelEnableTextsDrawing {\n            get {\n                return ResourceManager.GetString(\"LabelEnableTextsDrawing\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Save player’s ship.\n        /// </summary>\n        internal static string LabelSavePlayerShip {\n            get {\n                return ResourceManager.GetString(\"LabelSavePlayerShip\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Trade station Laika.\n        /// </summary>\n        internal static string LAIKA {\n            get {\n                return ResourceManager.GetString(\"LAIKA\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Laika 1 64x64x64.\n        /// </summary>\n        internal static string Laika_1 {\n            get {\n                return ResourceManager.GetString(\"Laika_1\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Laika 2 256x128x256.\n        /// </summary>\n        internal static string Laika_2 {\n            get {\n                return ResourceManager.GetString(\"Laika_2\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Laika 3 64x64x64.\n        /// </summary>\n        internal static string Laika_3 {\n            get {\n                return ResourceManager.GetString(\"Laika_3\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Investigate the Russian trade station\n        ///.\n        /// </summary>\n        internal static string LAIKA_Description {\n            get {\n                return ResourceManager.GetString(\"LAIKA_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to That security check is fishy; don’t let your guard down.\n        ///.\n        /// </summary>\n        internal static string LAIKA_GOTO_10_Description {\n            get {\n                return ResourceManager.GetString(\"LAIKA_GOTO_10_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Reach the hangar.\n        /// </summary>\n        internal static string LAIKA_GOTO_10_Name {\n            get {\n                return ResourceManager.GetString(\"LAIKA_GOTO_10_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to They were surely involved in the attack. Try to hack their database and look for clues.\n        ///.\n        /// </summary>\n        internal static string LAIKA_GOTO_COMMAND_Description {\n            get {\n                return ResourceManager.GetString(\"LAIKA_GOTO_COMMAND_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Check the command center.\n        /// </summary>\n        internal static string LAIKA_GOTO_COMMAND_Name {\n            get {\n                return ResourceManager.GetString(\"LAIKA_GOTO_COMMAND_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The data was securely deleted from the main servers. Let’s hope there will be a backup in the communication hubs.\n        ///.\n        /// </summary>\n        internal static string LAIKA_GOTO_COMMUNICATION_01_Description {\n            get {\n                return ResourceManager.GetString(\"LAIKA_GOTO_COMMUNICATION_01_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Check communication hubs.\n        /// </summary>\n        internal static string LAIKA_GOTO_COMMUNICATION_01_Name {\n            get {\n                return ResourceManager.GetString(\"LAIKA_GOTO_COMMUNICATION_01_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The data was securely deleted from the main servers. Let’s hope there will be a backup in the communication hubs.\n        ///.\n        /// </summary>\n        internal static string LAIKA_GOTO_COMMUNICATION_02_Description {\n            get {\n                return ResourceManager.GetString(\"LAIKA_GOTO_COMMUNICATION_02_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Check communication hubs.\n        /// </summary>\n        internal static string LAIKA_GOTO_COMMUNICATION_02_Name {\n            get {\n                return ResourceManager.GetString(\"LAIKA_GOTO_COMMUNICATION_02_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The turrets are powered by a dedicated generator. Shutting it down should disable them.\n        ///.\n        /// </summary>\n        internal static string LAIKA_GOTO_GENERATOR_Description {\n            get {\n                return ResourceManager.GetString(\"LAIKA_GOTO_GENERATOR_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Destroy turret generator.\n        /// </summary>\n        internal static string LAIKA_GOTO_GENERATOR_Name {\n            get {\n                return ResourceManager.GetString(\"LAIKA_GOTO_GENERATOR_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string LAIKA_LASTSTAND_Description {\n            get {\n                return ResourceManager.GetString(\"LAIKA_LASTSTAND_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hide from the explosion.\n        /// </summary>\n        internal static string LAIKA_LASTSTAND_Name {\n            get {\n                return ResourceManager.GetString(\"LAIKA_LASTSTAND_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We’ve got what we came for. Let’s get out of there.\n        ///.\n        /// </summary>\n        internal static string LAIKA_RETURN_Description {\n            get {\n                return ResourceManager.GetString(\"LAIKA_RETURN_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Return to Sapho.\n        /// </summary>\n        internal static string LAIKA_RETURN_Name {\n            get {\n                return ResourceManager.GetString(\"LAIKA_RETURN_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The small, but widely known Russian trade station Laika. Located in the desolate outskirts \n        ///of Russian territory, Laika is by far the most politically neutral and popular station \n        ///amongst non-Russian traders, merchants, and freelancers. While the totalitarian regime \n        ///typically suppresses “uncontrolled business” with capitalist factions, Laika has its own life \n        ///and rules. Home to numerous Asian smugglers and tradesman, OmniCorp bureaus, and \n        ///even EAC shops..\n        /// </summary>\n        internal static string LAIKA_SectorDescription {\n            get {\n                return ResourceManager.GetString(\"LAIKA_SectorDescription\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to RUSSIAN TRADE STATION LAIKA.\n        /// </summary>\n        internal static string LAIKA_SectorName {\n            get {\n                return ResourceManager.GetString(\"LAIKA_SectorName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to We need to make a distraction.\n        ///.\n        /// </summary>\n        internal static string LAIKA_WARHEAD_Description {\n            get {\n                return ResourceManager.GetString(\"LAIKA_WARHEAD_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Activate warhead.\n        /// </summary>\n        internal static string LAIKA_WARHEAD_Name {\n            get {\n                return ResourceManager.GetString(\"LAIKA_WARHEAD_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Laika Asteroid 1.\n        /// </summary>\n        internal static string Laika1_128_128_128 {\n            get {\n                return ResourceManager.GetString(\"Laika1_128_128_128\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Laika Asteroid 2.\n        /// </summary>\n        internal static string Laika2_64_64_64 {\n            get {\n                return ResourceManager.GetString(\"Laika2_64_64_64\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Laika Asteroid3.\n        /// </summary>\n        internal static string Laika3_64_64_64 {\n            get {\n                return ResourceManager.GetString(\"Laika3_64_64_64\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Laika Asteroid 4.\n        /// </summary>\n        internal static string Laika4_256_128_128 {\n            get {\n                return ResourceManager.GetString(\"Laika4_256_128_128\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Laika Asteroid 5.\n        /// </summary>\n        internal static string Laika5_128_128_128 {\n            get {\n                return ResourceManager.GetString(\"Laika5_128_128_128\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Laika Asteroid 6.\n        /// </summary>\n        internal static string Laika6_64_64_64 {\n            get {\n                return ResourceManager.GetString(\"Laika6_64_64_64\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Laika Asteroid 7.\n        /// </summary>\n        internal static string Laika7_64_64_64 {\n            get {\n                return ResourceManager.GetString(\"Laika7_64_64_64\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Laika Asteroid 8.\n        /// </summary>\n        internal static string Laika8_128_128_128 {\n            get {\n                return ResourceManager.GetString(\"Laika8_128_128_128\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Laika Asteroid 9.\n        /// </summary>\n        internal static string Laika9_128_128_128 {\n            get {\n                return ResourceManager.GetString(\"Laika9_128_128_128\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Language.\n        /// </summary>\n        internal static string Language {\n            get {\n                return ResourceManager.GetString(\"Language\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Česky.\n        /// </summary>\n        internal static string LanguageCesky {\n            get {\n                return ResourceManager.GetString(\"LanguageCesky\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Deutsch.\n        /// </summary>\n        internal static string LanguageDeutsch {\n            get {\n                return ResourceManager.GetString(\"LanguageDeutsch\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to English.\n        /// </summary>\n        internal static string LanguageEnglish {\n            get {\n                return ResourceManager.GetString(\"LanguageEnglish\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Espanol.\n        /// </summary>\n        internal static string LanguageEspanol {\n            get {\n                return ResourceManager.GetString(\"LanguageEspanol\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to France.\n        /// </summary>\n        internal static string LanguageFrance {\n            get {\n                return ResourceManager.GetString(\"LanguageFrance\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Italian.\n        /// </summary>\n        internal static string LanguageItalian {\n            get {\n                return ResourceManager.GetString(\"LanguageItalian\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Russian.\n        /// </summary>\n        internal static string LanguageRussian {\n            get {\n                return ResourceManager.GetString(\"LanguageRussian\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Slovensky.\n        /// </summary>\n        internal static string LanguageSlovensky {\n            get {\n                return ResourceManager.GetString(\"LanguageSlovensky\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Largeship.\n        /// </summary>\n        internal static string Largeship {\n            get {\n                return ResourceManager.GetString(\"Largeship\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ardant.\n        /// </summary>\n        internal static string LargeShipArdant {\n            get {\n                return ResourceManager.GetString(\"LargeShipArdant\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Large ship Complets.\n        /// </summary>\n        internal static string LargeShipComplets {\n            get {\n                return ResourceManager.GetString(\"LargeShipComplets\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Large ship.\n        /// </summary>\n        internal static string LargeShipContextMenuCaption {\n            get {\n                return ResourceManager.GetString(\"LargeShipContextMenuCaption\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to KAI Mothership.\n        /// </summary>\n        internal static string LargeShipKai {\n            get {\n                return ResourceManager.GetString(\"LargeShipKai\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to SAYA Mothership.\n        /// </summary>\n        internal static string LargeShipSaya {\n            get {\n                return ResourceManager.GetString(\"LargeShipSaya\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Large weapons range.\n        /// </summary>\n        internal static string LargeWeaponsRange {\n            get {\n                return ResourceManager.GetString(\"LargeWeaponsRange\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Christian colony Last Hope.\n        /// </summary>\n        internal static string LAST_HOPE {\n            get {\n                return ResourceManager.GetString(\"LAST_HOPE\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Deactivate all bombs.\n        /// </summary>\n        internal static string LAST_HOPE_DEACTIVATE_BOMBS {\n            get {\n                return ResourceManager.GetString(\"LAST_HOPE_DEACTIVATE_BOMBS\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string LAST_HOPE_DEACTIVATE_BOMBS_DESC {\n            get {\n                return ResourceManager.GetString(\"LAST_HOPE_DEACTIVATE_BOMBS_DESC\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Follow a distress call from a remote Christian base\n        ///.\n        /// </summary>\n        internal static string LAST_HOPE_Description {\n            get {\n                return ResourceManager.GetString(\"LAST_HOPE_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Kill the saboteur squad.\n        /// </summary>\n        internal static string LAST_HOPE_KILL_SABOTERS {\n            get {\n                return ResourceManager.GetString(\"LAST_HOPE_KILL_SABOTERS\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string LAST_HOPE_KILL_SABOTERS_DESC {\n            get {\n                return ResourceManager.GetString(\"LAST_HOPE_KILL_SABOTERS_DESC\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fly back to the destroyed city.\n        /// </summary>\n        internal static string LAST_HOPE_LEAVE_SHAFTS {\n            get {\n                return ResourceManager.GetString(\"LAST_HOPE_LEAVE_SHAFTS\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string LAST_HOPE_LEAVE_SHAFTS_DESC {\n            get {\n                return ResourceManager.GetString(\"LAST_HOPE_LEAVE_SHAFTS_DESC\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Catch the slaver ships.\n        /// </summary>\n        internal static string LAST_HOPE_REACH_CATCH_SHIPS {\n            get {\n                return ResourceManager.GetString(\"LAST_HOPE_REACH_CATCH_SHIPS\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string LAST_HOPE_REACH_CATCH_SHIPS_DESC {\n            get {\n                return ResourceManager.GetString(\"LAST_HOPE_REACH_CATCH_SHIPS_DESC\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Reach the colony.\n        /// </summary>\n        internal static string LAST_HOPE_REACH_COLONY {\n            get {\n                return ResourceManager.GetString(\"LAST_HOPE_REACH_COLONY\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Get inside the asteroid ASAP\n        ///.\n        /// </summary>\n        internal static string LAST_HOPE_REACH_COLONY_DESCRIPTION {\n            get {\n                return ResourceManager.GetString(\"LAST_HOPE_REACH_COLONY_DESCRIPTION\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Disable slavers’ motherships.\n        /// </summary>\n        internal static string LAST_HOPE_REACH_DESTROY_RIDERS {\n            get {\n                return ResourceManager.GetString(\"LAST_HOPE_REACH_DESTROY_RIDERS\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string LAST_HOPE_REACH_DESTROY_RIDERS_DESC {\n            get {\n                return ResourceManager.GetString(\"LAST_HOPE_REACH_DESTROY_RIDERS_DESC\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Reach the cave entrance to the underground shaft.\n        /// </summary>\n        internal static string LAST_HOPE_REACH_REACH_CAVE {\n            get {\n                return ResourceManager.GetString(\"LAST_HOPE_REACH_REACH_CAVE\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string LAST_HOPE_REACH_REACH_CAVE_DESC {\n            get {\n                return ResourceManager.GetString(\"LAST_HOPE_REACH_REACH_CAVE_DESC\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Stop slaver ships from leaving.\n        /// </summary>\n        internal static string LAST_HOPE_REACH_STOP_SHIPS {\n            get {\n                return ResourceManager.GetString(\"LAST_HOPE_REACH_STOP_SHIPS\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string LAST_HOPE_REACH_STOP_SHIPS_DESC {\n            get {\n                return ResourceManager.GetString(\"LAST_HOPE_REACH_STOP_SHIPS_DESC\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Find the maintenance tunnel.\n        /// </summary>\n        internal static string LAST_HOPE_REACH_TUNNEL {\n            get {\n                return ResourceManager.GetString(\"LAST_HOPE_REACH_TUNNEL\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Go to the waypoint and look around. You’re looking for red lights in a tunnel. Beware of slaver smallships..\n        /// </summary>\n        internal static string LAST_HOPE_REACH_TUNNEL_DESC {\n            get {\n                return ResourceManager.GetString(\"LAST_HOPE_REACH_TUNNEL_DESC\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Last Hope is a colony established by Christian separatists and led by the charismatic Father\n        ///Tobias, who chose to secede from the political influence of the Commonwealth of the\n        ///Holy Church. It is a peaceful colony with virtually no defenses, deep within an asteroid field,\n        ///far from the civilized world, far from the Sun..\n        /// </summary>\n        internal static string LAST_HOPE_SectorDescription {\n            get {\n                return ResourceManager.GetString(\"LAST_HOPE_SectorDescription\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to CHRISTIAN CAMP LAST HOPE.\n        /// </summary>\n        internal static string LAST_HOPE_SectorName {\n            get {\n                return ResourceManager.GetString(\"LAST_HOPE_SectorName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Speak with Father Tobias.\n        /// </summary>\n        internal static string LAST_HOPE_SPEAK_WITH_FATHER {\n            get {\n                return ResourceManager.GetString(\"LAST_HOPE_SPEAK_WITH_FATHER\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string LAST_HOPE_SPEAK_WITH_FATHER_DESC {\n            get {\n                return ResourceManager.GetString(\"LAST_HOPE_SPEAK_WITH_FATHER_DESC\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Stabilize the sabotaged gas facilities.\n        /// </summary>\n        internal static string LAST_HOPE_STABILIZE_GAS {\n            get {\n                return ResourceManager.GetString(\"LAST_HOPE_STABILIZE_GAS\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string LAST_HOPE_STABILIZE_GAS_DESC {\n            get {\n                return ResourceManager.GetString(\"LAST_HOPE_STABILIZE_GAS_DESC\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string LAST_HOPE_STABILIZE_GAS_DESC1 {\n            get {\n                return ResourceManager.GetString(\"LAST_HOPE_STABILIZE_GAS_DESC1\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Stabilize the nuclear core.\n        /// </summary>\n        internal static string LAST_HOPE_STABILIZE_NUCLEAR_CORE {\n            get {\n                return ResourceManager.GetString(\"LAST_HOPE_STABILIZE_NUCLEAR_CORE\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Lava 1.\n        /// </summary>\n        internal static string Lava_01 {\n            get {\n                return ResourceManager.GetString(\"Lava_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Left.\n        /// </summary>\n        internal static string Left {\n            get {\n                return ResourceManager.GetString(\"Left\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to LAlt.\n        /// </summary>\n        internal static string LeftAlt {\n            get {\n                return ResourceManager.GetString(\"LeftAlt\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to LCtrl.\n        /// </summary>\n        internal static string LeftControl {\n            get {\n                return ResourceManager.GetString(\"LeftControl\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Left Door.\n        /// </summary>\n        internal static string LeftDoor {\n            get {\n                return ResourceManager.GetString(\"LeftDoor\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to LMB.\n        /// </summary>\n        internal static string LeftMouseButton {\n            get {\n                return ResourceManager.GetString(\"LeftMouseButton\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to LShift.\n        /// </summary>\n        internal static string LeftShift {\n            get {\n                return ResourceManager.GetString(\"LeftShift\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Left wing.\n        /// </summary>\n        internal static string LeftWeapons {\n            get {\n                return ResourceManager.GetString(\"LeftWeapons\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Link Snap Points.\n        /// </summary>\n        internal static string LinkSnapPoints {\n            get {\n                return ResourceManager.GetString(\"LinkSnapPoints\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Load.\n        /// </summary>\n        internal static string Load {\n            get {\n                return ResourceManager.GetString(\"Load\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Load chapter.\n        /// </summary>\n        internal static string LoadChapter {\n            get {\n                return ResourceManager.GetString(\"LoadChapter\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Load checkpoint.\n        /// </summary>\n        internal static string LoadCheckpoint {\n            get {\n                return ResourceManager.GetString(\"LoadCheckpoint\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Loading from server.\n        /// </summary>\n        internal static string LoadFromServer {\n            get {\n                return ResourceManager.GetString(\"LoadFromServer\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to LOADING … PLEASE WAIT.\n        /// </summary>\n        internal static string LoadingPleaseWait {\n            get {\n                return ResourceManager.GetString(\"LoadingPleaseWait\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Load sector.\n        /// </summary>\n        internal static string LoadSector {\n            get {\n                return ResourceManager.GetString(\"LoadSector\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Loading available sectors… please wait.\n        /// </summary>\n        internal static string LoadSectorIdentifiersPleaseWait {\n            get {\n                return ResourceManager.GetString(\"LoadSectorIdentifiersPleaseWait\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Load sector from server.\n        /// </summary>\n        internal static string LoadSectorTooltip {\n            get {\n                return ResourceManager.GetString(\"LoadSectorTooltip\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Local data corrupted.\n        /// </summary>\n        internal static string LocalDataCorrupted {\n            get {\n                return ResourceManager.GetString(\"LocalDataCorrupted\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Log garbage collection.\n        /// </summary>\n        internal static string LogGarbageCollection {\n            get {\n                return ResourceManager.GetString(\"LogGarbageCollection\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You are logged in as:.\n        /// </summary>\n        internal static string LoggedPlayer {\n            get {\n                return ResourceManager.GetString(\"LoggedPlayer\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Logging in draw/update.\n        /// </summary>\n        internal static string LoggingInDrawUpdate {\n            get {\n                return ResourceManager.GetString(\"LoggingInDrawUpdate\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Login.\n        /// </summary>\n        internal static string Login {\n            get {\n                return ResourceManager.GetString(\"Login\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Login in progress… please wait..\n        /// </summary>\n        internal static string LoginInProgressPleaseWait {\n            get {\n                return ResourceManager.GetString(\"LoginInProgressPleaseWait\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Logout.\n        /// </summary>\n        internal static string Logout {\n            get {\n                return ResourceManager.GetString(\"Logout\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Logout in progress… please wait..\n        /// </summary>\n        internal static string LogoutInProgressPleaseWait {\n            get {\n                return ResourceManager.GetString(\"LogoutInProgressPleaseWait\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Longer loading times are due to Miner Wars&apos; unique fully destructible and persistent environments.\n        /// </summary>\n        internal static string LongerLoadingTimes {\n            get {\n                return ResourceManager.GetString(\"LongerLoadingTimes\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Intro mission.\n        /// </summary>\n        internal static string M01_Intro {\n            get {\n                return ResourceManager.GetString(\"M01_Intro\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Welcome to our mining company!\n        ///You will learn how to mine and sell ore\n        ///and, of course, how to defend yourself in this dangerous sector..\n        /// </summary>\n        internal static string M01_Intro_Description {\n            get {\n                return ResourceManager.GetString(\"M01_Intro_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Machine gun.\n        /// </summary>\n        internal static string MachineGun {\n            get {\n                return ResourceManager.GetString(\"MachineGun\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to madeline_mothership_sound.\n        /// </summary>\n        internal static string madeline_mothership_sound {\n            get {\n                return ResourceManager.GetString(\"madeline_mothership_sound\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Madelyn’s Sapho has been destroyed..\n        /// </summary>\n        internal static string MadelynWasDestroyed {\n            get {\n                return ResourceManager.GetString(\"MadelynWasDestroyed\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Magnesium.\n        /// </summary>\n        internal static string Magnesium_01 {\n            get {\n                return ResourceManager.GetString(\"Magnesium_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Magnitude.\n        /// </summary>\n        internal static string Magnitude {\n            get {\n                return ResourceManager.GetString(\"Magnitude\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Male.\n        /// </summary>\n        internal static string Male {\n            get {\n                return ResourceManager.GetString(\"Male\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to many_medium_asteroids.\n        /// </summary>\n        internal static string many_medium_asteroids {\n            get {\n                return ResourceManager.GetString(\"many_medium_asteroids\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to many_small_asteroids.\n        /// </summary>\n        internal static string many_small_asteroids {\n            get {\n                return ResourceManager.GetString(\"many_small_asteroids\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to many2_small_asteroids.\n        /// </summary>\n        internal static string many2_small_asteroids {\n            get {\n                return ResourceManager.GetString(\"many2_small_asteroids\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Map.\n        /// </summary>\n        internal static string Map {\n            get {\n                return ResourceManager.GetString(\"Map\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Marcus and Tarja are leaving the party to get the other security key.\n        /// </summary>\n        internal static string MarcusAndTarjaAreLeavingForKey {\n            get {\n                return ResourceManager.GetString(\"MarcusAndTarjaAreLeavingForKey\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Marcus and Valentino are leaving the party.\n        /// </summary>\n        internal static string MarcusAndValentinoLeavingParty {\n            get {\n                return ResourceManager.GetString(\"MarcusAndValentinoLeavingParty\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Marcus is leaving the party.\n        /// </summary>\n        internal static string MarcusIsLeavingForTarja {\n            get {\n                return ResourceManager.GetString(\"MarcusIsLeavingForTarja\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Marcus and Tarja are leaving the party to steal the transporter.\n        /// </summary>\n        internal static string MarucsAndTarjaAreLeavingForTransporter {\n            get {\n                return ResourceManager.GetString(\"MarucsAndTarjaAreLeavingForTransporter\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Marcus is leaving the party to get the other security key.\n        /// </summary>\n        internal static string MarucsIsLeavingForKey {\n            get {\n                return ResourceManager.GetString(\"MarucsIsLeavingForKey\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Marcus is leaving the party to steal the transporter.\n        /// </summary>\n        internal static string MarucsIsLeavingForTransporter {\n            get {\n                return ResourceManager.GetString(\"MarucsIsLeavingForTransporter\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Max health.\n        /// </summary>\n        internal static string MaxHealth {\n            get {\n                return ResourceManager.GetString(\"MaxHealth\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Maximum allowed number of large ships has been reached.\n        /// </summary>\n        internal static string MaxLargeShipsCountReached {\n            get {\n                return ResourceManager.GetString(\"MaxLargeShipsCountReached\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Max number of objects reached.\n        /// </summary>\n        internal static string MaxObjectsReached {\n            get {\n                return ResourceManager.GetString(\"MaxObjectsReached\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Maximum asteroid count reached.\n        /// </summary>\n        internal static string MaxVoxelMapsLimitReached {\n            get {\n                return ResourceManager.GetString(\"MaxVoxelMapsLimitReached\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Medikit active.\n        /// </summary>\n        internal static string MedikitActive {\n            get {\n                return ResourceManager.GetString(\"MedikitActive\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Medina 622.\n        /// </summary>\n        internal static string MEDINA_622 {\n            get {\n                return ResourceManager.GetString(\"MEDINA_622\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Medina 622\n        ///.\n        /// </summary>\n        internal static string MEDINA_622_Description {\n            get {\n                return ResourceManager.GetString(\"MEDINA_622_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to MenuWelcome.\n        /// </summary>\n        internal static string MenuWelcome {\n            get {\n                return ResourceManager.GetString(\"MenuWelcome\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to merchant.\n        /// </summary>\n        internal static string Merchant {\n            get {\n                return ResourceManager.GetString(\"Merchant\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Merchant Army.\n        /// </summary>\n        internal static string MerchantArmy {\n            get {\n                return ResourceManager.GetString(\"MerchantArmy\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Merchant Army Tier 1.\n        /// </summary>\n        internal static string MerchantArmy_Tier_1 {\n            get {\n                return ResourceManager.GetString(\"MerchantArmy_Tier_1\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Merchant Army Tier 2.\n        /// </summary>\n        internal static string MerchantArmy_Tier_2 {\n            get {\n                return ResourceManager.GetString(\"MerchantArmy_Tier_2\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Merchant Army Tier 3.\n        /// </summary>\n        internal static string MerchantArmy_Tier_3 {\n            get {\n                return ResourceManager.GetString(\"MerchantArmy_Tier_3\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Merchant Army Tier 4.\n        /// </summary>\n        internal static string MerchantArmy_Tier_4 {\n            get {\n                return ResourceManager.GetString(\"MerchantArmy_Tier_4\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Merchant Army Tier 5.\n        /// </summary>\n        internal static string MerchantArmy_Tier_5 {\n            get {\n                return ResourceManager.GetString(\"MerchantArmy_Tier_5\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Merchant Army Tier 6.\n        /// </summary>\n        internal static string MerchantArmy_Tier_6 {\n            get {\n                return ResourceManager.GetString(\"MerchantArmy_Tier_6\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Merchant Army Tier 7.\n        /// </summary>\n        internal static string MerchantArmy_Tier_7 {\n            get {\n                return ResourceManager.GetString(\"MerchantArmy_Tier_7\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Merchant Army Tier 8.\n        /// </summary>\n        internal static string MerchantArmy_Tier_8 {\n            get {\n                return ResourceManager.GetString(\"MerchantArmy_Tier_8\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Merchant Army Tier 9.\n        /// </summary>\n        internal static string MerchantArmy_Tier_9 {\n            get {\n                return ResourceManager.GetString(\"MerchantArmy_Tier_9\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Merchant Army Tier Special.\n        /// </summary>\n        internal static string MerchantArmy_Tier_Special {\n            get {\n                return ResourceManager.GetString(\"MerchantArmy_Tier_Special\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Merchant Blueprint.\n        /// </summary>\n        internal static string MerchantBlueprint {\n            get {\n                return ResourceManager.GetString(\"MerchantBlueprint\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Merchant Medicine.\n        /// </summary>\n        internal static string MerchantMedicine {\n            get {\n                return ResourceManager.GetString(\"MerchantMedicine\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Merchant Medicine Tier 1.\n        /// </summary>\n        internal static string MerchantMedicine_Tier_1 {\n            get {\n                return ResourceManager.GetString(\"MerchantMedicine_Tier_1\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Merchant Medicine Tier 2.\n        /// </summary>\n        internal static string MerchantMedicine_Tier_2 {\n            get {\n                return ResourceManager.GetString(\"MerchantMedicine_Tier_2\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Merchant Medicine Tier 3.\n        /// </summary>\n        internal static string MerchantMedicine_Tier_3 {\n            get {\n                return ResourceManager.GetString(\"MerchantMedicine_Tier_3\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Merchant Medicine Tier 4.\n        /// </summary>\n        internal static string MerchantMedicine_Tier_4 {\n            get {\n                return ResourceManager.GetString(\"MerchantMedicine_Tier_4\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Merchant Medicine Tier 5.\n        /// </summary>\n        internal static string MerchantMedicine_Tier_5 {\n            get {\n                return ResourceManager.GetString(\"MerchantMedicine_Tier_5\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Merchant Medicine Tier 6.\n        /// </summary>\n        internal static string MerchantMedicine_Tier_6 {\n            get {\n                return ResourceManager.GetString(\"MerchantMedicine_Tier_6\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Merchant Medicine Tier 7.\n        /// </summary>\n        internal static string MerchantMedicine_Tier_7 {\n            get {\n                return ResourceManager.GetString(\"MerchantMedicine_Tier_7\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Merchant Medicine Tier 8.\n        /// </summary>\n        internal static string MerchantMedicine_Tier_8 {\n            get {\n                return ResourceManager.GetString(\"MerchantMedicine_Tier_8\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Merchant Medicine Tier 9.\n        /// </summary>\n        internal static string MerchantMedicine_Tier_9 {\n            get {\n                return ResourceManager.GetString(\"MerchantMedicine_Tier_9\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Merchant Medicine Tier Special.\n        /// </summary>\n        internal static string MerchantMedicine_Tier_Special {\n            get {\n                return ResourceManager.GetString(\"MerchantMedicine_Tier_Special\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Merchant Mixed.\n        /// </summary>\n        internal static string MerchantMixed {\n            get {\n                return ResourceManager.GetString(\"MerchantMixed\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Merchant Mixed Tier 1.\n        /// </summary>\n        internal static string MerchantMixed_Tier_1 {\n            get {\n                return ResourceManager.GetString(\"MerchantMixed_Tier_1\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Merchant Mixed Tier 2.\n        /// </summary>\n        internal static string MerchantMixed_Tier_2 {\n            get {\n                return ResourceManager.GetString(\"MerchantMixed_Tier_2\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Merchant Mixed Tier 3.\n        /// </summary>\n        internal static string MerchantMixed_Tier_3 {\n            get {\n                return ResourceManager.GetString(\"MerchantMixed_Tier_3\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Merchant Mixed Tier 4.\n        /// </summary>\n        internal static string MerchantMixed_Tier_4 {\n            get {\n                return ResourceManager.GetString(\"MerchantMixed_Tier_4\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Merchant Mixed Tier 5.\n        /// </summary>\n        internal static string MerchantMixed_Tier_5 {\n            get {\n                return ResourceManager.GetString(\"MerchantMixed_Tier_5\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Merchant Mixed Tier 6.\n        /// </summary>\n        internal static string MerchantMixed_Tier_6 {\n            get {\n                return ResourceManager.GetString(\"MerchantMixed_Tier_6\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Merchant Mixed Tier 7.\n        /// </summary>\n        internal static string MerchantMixed_Tier_7 {\n            get {\n                return ResourceManager.GetString(\"MerchantMixed_Tier_7\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Merchant Mixed Tier 8.\n        /// </summary>\n        internal static string MerchantMixed_Tier_8 {\n            get {\n                return ResourceManager.GetString(\"MerchantMixed_Tier_8\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Merchant Mixed Tier 9.\n        /// </summary>\n        internal static string MerchantMixed_Tier_9 {\n            get {\n                return ResourceManager.GetString(\"MerchantMixed_Tier_9\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Merchant Mixed Tier Special.\n        /// </summary>\n        internal static string MerchantMixed_Tier_Special {\n            get {\n                return ResourceManager.GetString(\"MerchantMixed_Tier_Special\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Merchant Tools.\n        /// </summary>\n        internal static string MerchantTools {\n            get {\n                return ResourceManager.GetString(\"MerchantTools\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Merchant Tools Tier 1.\n        /// </summary>\n        internal static string MerchantTools_Tier_1 {\n            get {\n                return ResourceManager.GetString(\"MerchantTools_Tier_1\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Merchant Tools Tier 2.\n        /// </summary>\n        internal static string MerchantTools_Tier_2 {\n            get {\n                return ResourceManager.GetString(\"MerchantTools_Tier_2\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Merchant Tools Tier 3.\n        /// </summary>\n        internal static string MerchantTools_Tier_3 {\n            get {\n                return ResourceManager.GetString(\"MerchantTools_Tier_3\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Merchant Tools Tier 4.\n        /// </summary>\n        internal static string MerchantTools_Tier_4 {\n            get {\n                return ResourceManager.GetString(\"MerchantTools_Tier_4\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Merchant Tools Tier 5.\n        /// </summary>\n        internal static string MerchantTools_Tier_5 {\n            get {\n                return ResourceManager.GetString(\"MerchantTools_Tier_5\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Merchant Tools Tier 6.\n        /// </summary>\n        internal static string MerchantTools_Tier_6 {\n            get {\n                return ResourceManager.GetString(\"MerchantTools_Tier_6\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Merchant Tools Tier 7.\n        /// </summary>\n        internal static string MerchantTools_Tier_7 {\n            get {\n                return ResourceManager.GetString(\"MerchantTools_Tier_7\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Merchant Tools Tier 8.\n        /// </summary>\n        internal static string MerchantTools_Tier_8 {\n            get {\n                return ResourceManager.GetString(\"MerchantTools_Tier_8\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Merchant Tools Tier 9.\n        /// </summary>\n        internal static string MerchantTools_Tier_9 {\n            get {\n                return ResourceManager.GetString(\"MerchantTools_Tier_9\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Merchant Tools Tier Special.\n        /// </summary>\n        internal static string MerchantTools_Tier_Special {\n            get {\n                return ResourceManager.GetString(\"MerchantTools_Tier_Special\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Are you sure you want to return to the last checkpoint?.\n        /// </summary>\n        internal static string MessageAreYouSureYouWantLoadCheckpoint {\n            get {\n                return ResourceManager.GetString(\"MessageAreYouSureYouWantLoadCheckpoint\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Are you sure you want to discard all your current progress?\n        ///Starting a New story deletes all saved checkpoints..\n        /// </summary>\n        internal static string MessageAreYouSureYouWantStartNewStory {\n            get {\n                return ResourceManager.GetString(\"MessageAreYouSureYouWantStartNewStory\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to ERROR.\n        /// </summary>\n        internal static string MessageBoxCaptionError {\n            get {\n                return ResourceManager.GetString(\"MessageBoxCaptionError\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to FEATURE DISABLED.\n        /// </summary>\n        internal static string MessageBoxCaptionFeatureDisabled {\n            get {\n                return ResourceManager.GetString(\"MessageBoxCaptionFeatureDisabled\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to PLEASE CONFIRM.\n        /// </summary>\n        internal static string MessageBoxCaptionPleaseConfirm {\n            get {\n                return ResourceManager.GetString(\"MessageBoxCaptionPleaseConfirm\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to EXIT.\n        /// </summary>\n        internal static string MessageBoxExitQuestion {\n            get {\n                return ResourceManager.GetString(\"MessageBoxExitQuestion\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to LOGOUT?.\n        /// </summary>\n        internal static string MessageBoxLogoutQuestion {\n            get {\n                return ResourceManager.GetString(\"MessageBoxLogoutQuestion\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to NETWORK ERROR.\n        /// </summary>\n        internal static string MessageBoxNetworkErrorCaption {\n            get {\n                return ResourceManager.GetString(\"MessageBoxNetworkErrorCaption\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Entity name already exists!.\n        /// </summary>\n        internal static string MessageEntityNameIsAlreadyExists {\n            get {\n                return ResourceManager.GetString(\"MessageEntityNameIsAlreadyExists\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Health can’t be less than or equal to zero!.\n        /// </summary>\n        internal static string MessageHealthCantBeLessOrEqualZero {\n            get {\n                return ResourceManager.GetString(\"MessageHealthCantBeLessOrEqualZero\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Health must be less or equal to max health!.\n        /// </summary>\n        internal static string MessageHealthMustBeLesserOrEqualMaxHealth {\n            get {\n                return ResourceManager.GetString(\"MessageHealthMustBeLesserOrEqualMaxHealth\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Health percentage can’t be greater than 100!.\n        /// </summary>\n        internal static string MessageHealthPercentageCantBeGreaterThen100 {\n            get {\n                return ResourceManager.GetString(\"MessageHealthPercentageCantBeGreaterThen100\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Max health can’t be less than or equal to zero!.\n        /// </summary>\n        internal static string MessageMaxHealthCantBeLessOrEqualZero {\n            get {\n                return ResourceManager.GetString(\"MessageMaxHealthCantBeLessOrEqualZero\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Please be aware that this is just a placeholder. The MMO mode will be added in the future..\n        /// </summary>\n        internal static string MessageMmoWillBeAddedLater {\n            get {\n                return ResourceManager.GetString(\"MessageMmoWillBeAddedLater\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Please, visit our web site “{0}” to buy the game now..\n        /// </summary>\n        internal static string MessagePleaseVisitOurWebSiteToBuyGameNow {\n            get {\n                return ResourceManager.GetString(\"MessagePleaseVisitOurWebSiteToBuyGameNow\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to (Press {0} to hide).\n        /// </summary>\n        internal static string MessagePressToHide {\n            get {\n                return ResourceManager.GetString(\"MessagePressToHide\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The price coefficient must be greater than or equal to 1!.\n        /// </summary>\n        internal static string MessagePriceCoeficientMustBeGreaterThanOrEqualToOne {\n            get {\n                return ResourceManager.GetString(\"MessagePriceCoeficientMustBeGreaterThanOrEqualToOne\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Demo mode – saving is disabled.\n        /// </summary>\n        internal static string MessageYouHaveDemoAccess {\n            get {\n                return ResourceManager.GetString(\"MessageYouHaveDemoAccess\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You must set the hacking time!.\n        /// </summary>\n        internal static string MessageYouMustSetHackingTime {\n            get {\n                return ResourceManager.GetString(\"MessageYouMustSetHackingTime\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You must set the health!.\n        /// </summary>\n        internal static string MessageYouMustSetHealth {\n            get {\n                return ResourceManager.GetString(\"MessageYouMustSetHealth\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You must set max health!.\n        /// </summary>\n        internal static string MessageYouMustSetMaxHealth {\n            get {\n                return ResourceManager.GetString(\"MessageYouMustSetMaxHealth\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You must set the price coefficient!.\n        /// </summary>\n        internal static string MessageYouMustSetPriceCoeficient {\n            get {\n                return ResourceManager.GetString(\"MessageYouMustSetPriceCoeficient\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You must set the template if you want to refill the inventory!.\n        /// </summary>\n        internal static string MessageYouMustSetTemplateIfYouWantRefillInventory {\n            get {\n                return ResourceManager.GetString(\"MessageYouMustSetTemplateIfYouWantRefillInventory\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to meters.\n        /// </summary>\n        internal static string MetersLong {\n            get {\n                return ResourceManager.GetString(\"MetersLong\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to m.\n        /// </summary>\n        internal static string MetersShort {\n            get {\n                return ResourceManager.GetString(\"MetersShort\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to MMB.\n        /// </summary>\n        internal static string MiddleMouseButton {\n            get {\n                return ResourceManager.GetString(\"MiddleMouseButton\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Military Base Asteroid.\n        /// </summary>\n        internal static string military_baseAsteroid {\n            get {\n                return ResourceManager.GetString(\"military_baseAsteroid\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Military outpost.\n        /// </summary>\n        internal static string MILITARY_OUTPOSMILITARY_OUTPOST {\n            get {\n                return ResourceManager.GetString(\"MILITARY_OUTPOSMILITARY_OUTPOST\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Military outpost.\n        /// </summary>\n        internal static string MILITARY_OUTPOST {\n            get {\n                return ResourceManager.GetString(\"MILITARY_OUTPOST\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Conquer the outposts.\n        ///.\n        /// </summary>\n        internal static string MILITARY_OUTPOST_Description {\n            get {\n                return ResourceManager.GetString(\"MILITARY_OUTPOST_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Mine.\n        /// </summary>\n        internal static string Mine {\n            get {\n                return ResourceManager.GetString(\"Mine\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Mine.\n        /// </summary>\n        internal static string MineBasicHud {\n            get {\n                return ResourceManager.GetString(\"MineBasicHud\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to BioChem mine.\n        /// </summary>\n        internal static string MineBioChemHud {\n            get {\n                return ResourceManager.GetString(\"MineBioChemHud\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Helium mines.\n        /// </summary>\n        internal static string MINER_OUTPOST {\n            get {\n                return ResourceManager.GetString(\"MINER_OUTPOST\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Helium mines\n        ///.\n        /// </summary>\n        internal static string MINER_OUTPOST_Description {\n            get {\n                return ResourceManager.GetString(\"MINER_OUTPOST_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Miner uprising.\n        /// </summary>\n        internal static string MINER_UPRISING {\n            get {\n                return ResourceManager.GetString(\"MINER_UPRISING\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Miner uprising\n        ///.\n        /// </summary>\n        internal static string MINER_UPRISING_Description {\n            get {\n                return ResourceManager.GetString(\"MINER_UPRISING_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Mines_Asteroid.\n        /// </summary>\n        internal static string Mines_Asteroid {\n            get {\n                return ResourceManager.GetString(\"Mines_Asteroid\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Smart mine.\n        /// </summary>\n        internal static string MineSmartHud {\n            get {\n                return ResourceManager.GetString(\"MineSmartHud\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Missile pack 01.\n        /// </summary>\n        internal static string Missile_pack01 {\n            get {\n                return ResourceManager.GetString(\"Missile_pack01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Missile pack 02.\n        /// </summary>\n        internal static string Missile_pack02 {\n            get {\n                return ResourceManager.GetString(\"Missile_pack02\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Missile plasma 01.\n        /// </summary>\n        internal static string Missile_plazma01 {\n            get {\n                return ResourceManager.GetString(\"Missile_plazma01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Missile stack biochem 01.\n        /// </summary>\n        internal static string Missile_stack_biochem01 {\n            get {\n                return ResourceManager.GetString(\"Missile_stack_biochem01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Missile cam.\n        /// </summary>\n        internal static string MissileCamera {\n            get {\n                return ResourceManager.GetString(\"MissileCamera\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Missile launcher.\n        /// </summary>\n        internal static string MissileLauncher {\n            get {\n                return ResourceManager.GetString(\"MissileLauncher\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Mission – {0}.\n        /// </summary>\n        internal static string Mission {\n            get {\n                return ResourceManager.GetString(\"Mission\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Mission dialog.\n        /// </summary>\n        internal static string MissionDialog {\n            get {\n                return ResourceManager.GetString(\"MissionDialog\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to A crucial mission object was destroyed.\n        /// </summary>\n        internal static string MissionFail_RequiredObjectDestroyed {\n            get {\n                return ResourceManager.GetString(\"MissionFail_RequiredObjectDestroyed\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Mission failed.\n        /// </summary>\n        internal static string MissionFailed {\n            get {\n                return ResourceManager.GetString(\"MissionFailed\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Modify selection.\n        /// </summary>\n        internal static string MixedContextMenuCaption {\n            get {\n                return ResourceManager.GetString(\"MixedContextMenuCaption\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to MMO sectors.\n        /// </summary>\n        internal static string MmoSectors {\n            get {\n                return ResourceManager.GetString(\"MmoSectors\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Modify asteroid.\n        /// </summary>\n        internal static string ModifyAsteroidContextMenuCaption {\n            get {\n                return ResourceManager.GetString(\"ModifyAsteroidContextMenuCaption\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Momo Zappa.\n        /// </summary>\n        internal static string MomoZappa {\n            get {\n                return ResourceManager.GetString(\"MomoZappa\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You have obtained ${0}..\n        /// </summary>\n        internal static string MoneyObtained {\n            get {\n                return ResourceManager.GetString(\"MoneyObtained\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Mothership crash.\n        /// </summary>\n        internal static string MOTHERSHIP_CRASH {\n            get {\n                return ResourceManager.GetString(\"MOTHERSHIP_CRASH\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Mothership crash\n        ///.\n        /// </summary>\n        internal static string MOTHERSHIP_CRASHL_Description {\n            get {\n                return ResourceManager.GetString(\"MOTHERSHIP_CRASHL_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to MotherShip Facility Asteroid.\n        /// </summary>\n        internal static string mothership_facilityAsteroid {\n            get {\n                return ResourceManager.GetString(\"mothership_facilityAsteroid\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to mothership_sound.\n        /// </summary>\n        internal static string mothership_sound {\n            get {\n                return ResourceManager.GetString(\"mothership_sound\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Mothership start.\n        /// </summary>\n        internal static string MothershipStart {\n            get {\n                return ResourceManager.GetString(\"MothershipStart\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Mouse.\n        /// </summary>\n        internal static string Mouse {\n            get {\n                return ResourceManager.GetString(\"Mouse\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Mouse sensitivity.\n        /// </summary>\n        internal static string MouseSensitivity {\n            get {\n                return ResourceManager.GetString(\"MouseSensitivity\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to MXB1.\n        /// </summary>\n        internal static string MouseXButton1 {\n            get {\n                return ResourceManager.GetString(\"MouseXButton1\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to MXB2.\n        /// </summary>\n        internal static string MouseXButton2 {\n            get {\n                return ResourceManager.GetString(\"MouseXButton2\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Inertial dampeners.\n        /// </summary>\n        internal static string MovementSlowdown {\n            get {\n                return ResourceManager.GetString(\"MovementSlowdown\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Moving.\n        /// </summary>\n        internal static string Moving {\n            get {\n                return ResourceManager.GetString(\"Moving\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Can’t connect to the multiplayer server, please check firewall settings (UDP port {0}).\n        /// </summary>\n        internal static string MP_CannotConnectServerJoin {\n            get {\n                return ResourceManager.GetString(\"MP_CannotConnectServerJoin\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cannot host game, the multiplayer server is unavailable.\n        /// </summary>\n        internal static string MP_CannotHost {\n            get {\n                return ResourceManager.GetString(\"MP_CannotHost\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Game has ended.\n        /// </summary>\n        internal static string MP_GameHasEnded {\n            get {\n                return ResourceManager.GetString(\"MP_GameHasEnded\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Multiplayer session successfully started.\n        /// </summary>\n        internal static string MP_GameHosted {\n            get {\n                return ResourceManager.GetString(\"MP_GameHosted\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Multiplayer session cannot be started, please check your internet connection and firewall..\n        /// </summary>\n        internal static string MP_GameHostFailed_X {\n            get {\n                return ResourceManager.GetString(\"MP_GameHostFailed_X\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Host has shut down the game, you will be returned to the main menu.\n        /// </summary>\n        internal static string MP_HostDisconnected {\n            get {\n                return ResourceManager.GetString(\"MP_HostDisconnected\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Game has shut down.\n        /// </summary>\n        internal static string MP_HostDisconnectedCaption {\n            get {\n                return ResourceManager.GetString(\"MP_HostDisconnectedCaption\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Only the host can travel.\n        /// </summary>\n        internal static string MP_OnlyHostCanTravel {\n            get {\n                return ResourceManager.GetString(\"MP_OnlyHostCanTravel\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Unavailable.\n        /// </summary>\n        internal static string MP_RemoteControlled {\n            get {\n                return ResourceManager.GetString(\"MP_RemoteControlled\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to {0} has been killed by {1}.\n        /// </summary>\n        internal static string MP_XHasBeenKilledByY {\n            get {\n                return ResourceManager.GetString(\"MP_XHasBeenKilledByY\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to {0} has joined the game.\n        /// </summary>\n        internal static string MP_XHasJoined {\n            get {\n                return ResourceManager.GetString(\"MP_XHasJoined\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to {0} has left the game.\n        /// </summary>\n        internal static string MP_XHasLeft {\n            get {\n                return ResourceManager.GetString(\"MP_XHasLeft\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to {0} was killed.\n        /// </summary>\n        internal static string MP_XKilled {\n            get {\n                return ResourceManager.GetString(\"MP_XKilled\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to {0} killed himself.\n        /// </summary>\n        internal static string MP_XKilledHimself {\n            get {\n                return ResourceManager.GetString(\"MP_XKilledHimself\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You have been killed.\n        /// </summary>\n        internal static string MP_YouHaveBeenKilled {\n            get {\n                return ResourceManager.GetString(\"MP_YouHaveBeenKilled\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You have been killed by {0}.\n        /// </summary>\n        internal static string MP_YouHaveBeenKilledByX {\n            get {\n                return ResourceManager.GetString(\"MP_YouHaveBeenKilledByX\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You have killed {0}.\n        /// </summary>\n        internal static string MP_YouHaveKilledX {\n            get {\n                return ResourceManager.GetString(\"MP_YouHaveKilledX\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You have killed yourself.\n        /// </summary>\n        internal static string MP_YouHaveKilledYourself {\n            get {\n                return ResourceManager.GetString(\"MP_YouHaveKilledYourself\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to [TEAM] .\n        /// </summary>\n        internal static string MPChatTeamMessagePrefix {\n            get {\n                return ResourceManager.GetString(\"MPChatTeamMessagePrefix\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Merchant FrontLine – MP.\n        /// </summary>\n        internal static string MPMerchantFrontLine {\n            get {\n                return ResourceManager.GetString(\"MPMerchantFrontLine\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Merchant Support – MP.\n        /// </summary>\n        internal static string MPMerchantSupport {\n            get {\n                return ResourceManager.GetString(\"MPMerchantSupport\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Mship.\n        /// </summary>\n        internal static string Mship {\n            get {\n                return ResourceManager.GetString(\"Mship\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Mship body.\n        /// </summary>\n        internal static string Mship_body {\n            get {\n                return ResourceManager.GetString(\"Mship_body\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Mship engine.\n        /// </summary>\n        internal static string Mship_engine {\n            get {\n                return ResourceManager.GetString(\"Mship_engine\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Mship shield back large left.\n        /// </summary>\n        internal static string Mship_shield_back_large_left {\n            get {\n                return ResourceManager.GetString(\"Mship_shield_back_large_left\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Mship shield back large right.\n        /// </summary>\n        internal static string Mship_shield_back_large_right {\n            get {\n                return ResourceManager.GetString(\"Mship_shield_back_large_right\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Mship shield back small left.\n        /// </summary>\n        internal static string Mship_shield_back_small_left {\n            get {\n                return ResourceManager.GetString(\"Mship_shield_back_small_left\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Mship shield back small right.\n        /// </summary>\n        internal static string Mship_shield_back_small_right {\n            get {\n                return ResourceManager.GetString(\"Mship_shield_back_small_right\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Mship shield front large left.\n        /// </summary>\n        internal static string Mship_shield_front_large_left {\n            get {\n                return ResourceManager.GetString(\"Mship_shield_front_large_left\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Mship shield front large right.\n        /// </summary>\n        internal static string Mship_shield_front_large_right {\n            get {\n                return ResourceManager.GetString(\"Mship_shield_front_large_right\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Mship shield front small left.\n        /// </summary>\n        internal static string Mship_shield_front_small_left {\n            get {\n                return ResourceManager.GetString(\"Mship_shield_front_small_left\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Mship shield front small right.\n        /// </summary>\n        internal static string Mship_shield_front_small_right {\n            get {\n                return ResourceManager.GetString(\"Mship_shield_front_small_right\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Mship shield front small02 left.\n        /// </summary>\n        internal static string Mship_shield_front_small02_left {\n            get {\n                return ResourceManager.GetString(\"Mship_shield_front_small02_left\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Mship shield front small02 right.\n        /// </summary>\n        internal static string Mship_shield_front_small02_right {\n            get {\n                return ResourceManager.GetString(\"Mship_shield_front_small02_right\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Music volume.\n        /// </summary>\n        internal static string MusicVolume {\n            get {\n                return ResourceManager.GetString(\"MusicVolume\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to MysteriousCube 01.\n        /// </summary>\n        internal static string MysteriousCube_01 {\n            get {\n                return ResourceManager.GetString(\"MysteriousCube_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to MysteriousCube 02.\n        /// </summary>\n        internal static string MysteriousCube_02 {\n            get {\n                return ResourceManager.GetString(\"MysteriousCube_02\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to MysteriousCube 03.\n        /// </summary>\n        internal static string MysteriousCube_03 {\n            get {\n                return ResourceManager.GetString(\"MysteriousCube_03\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Mysterious cubes.\n        /// </summary>\n        internal static string MysteriousCubes {\n            get {\n                return ResourceManager.GetString(\"MysteriousCubes\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Name.\n        /// </summary>\n        internal static string Name {\n            get {\n                return ResourceManager.GetString(\"Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Navigation.\n        /// </summary>\n        internal static string Navigation {\n            get {\n                return ResourceManager.GetString(\"Navigation\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to White Wolves bio research lab.\n        /// </summary>\n        internal static string NAZI_BIO_LAB {\n            get {\n                return ResourceManager.GetString(\"NAZI_BIO_LAB\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string NAZI_BIO_LAB_BLUEPRINTS_BIOMACH_Description {\n            get {\n                return ResourceManager.GetString(\"NAZI_BIO_LAB_BLUEPRINTS_BIOMACH_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Find blueprints.\n        /// </summary>\n        internal static string NAZI_BIO_LAB_BLUEPRINTS_BIOMACH_Name {\n            get {\n                return ResourceManager.GetString(\"NAZI_BIO_LAB_BLUEPRINTS_BIOMACH_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Download the blueprints from the biological research facility.\n        ///.\n        /// </summary>\n        internal static string NAZI_BIO_LAB_Description {\n            get {\n                return ResourceManager.GetString(\"NAZI_BIO_LAB_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string NAZI_BIO_LAB_DESTROY_Description {\n            get {\n                return ResourceManager.GetString(\"NAZI_BIO_LAB_DESTROY_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Destroy the machine.\n        /// </summary>\n        internal static string NAZI_BIO_LAB_DESTROY_Name {\n            get {\n                return ResourceManager.GetString(\"NAZI_BIO_LAB_DESTROY_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string NAZI_BIO_LAB_GET_INSIDE_Description {\n            get {\n                return ResourceManager.GetString(\"NAZI_BIO_LAB_GET_INSIDE_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Get inside.\n        /// </summary>\n        internal static string NAZI_BIO_LAB_GET_INSIDE_Name {\n            get {\n                return ResourceManager.GetString(\"NAZI_BIO_LAB_GET_INSIDE_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string NAZI_BIO_LAB_GET_OUT_Description {\n            get {\n                return ResourceManager.GetString(\"NAZI_BIO_LAB_GET_OUT_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Exit the station.\n        /// </summary>\n        internal static string NAZI_BIO_LAB_GET_OUT_Name {\n            get {\n                return ResourceManager.GetString(\"NAZI_BIO_LAB_GET_OUT_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string NAZI_BIO_LAB_REACH_MEETING_POINT_Description {\n            get {\n                return ResourceManager.GetString(\"NAZI_BIO_LAB_REACH_MEETING_POINT_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Return to Sapho.\n        /// </summary>\n        internal static string NAZI_BIO_LAB_REACH_MEETING_POINT_Name {\n            get {\n                return ResourceManager.GetString(\"NAZI_BIO_LAB_REACH_MEETING_POINT_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string NAZI_BIO_LAB_SAMPLES_BIOMACH_1_Description {\n            get {\n                return ResourceManager.GetString(\"NAZI_BIO_LAB_SAMPLES_BIOMACH_1_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Collect samples.\n        /// </summary>\n        internal static string NAZI_BIO_LAB_SAMPLES_BIOMACH_1_Name {\n            get {\n                return ResourceManager.GetString(\"NAZI_BIO_LAB_SAMPLES_BIOMACH_1_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string NAZI_BIO_LAB_SAMPLES_ORGANIC_Description {\n            get {\n                return ResourceManager.GetString(\"NAZI_BIO_LAB_SAMPLES_ORGANIC_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Collect samples.\n        /// </summary>\n        internal static string NAZI_BIO_LAB_SAMPLES_ORGANIC_Name {\n            get {\n                return ResourceManager.GetString(\"NAZI_BIO_LAB_SAMPLES_ORGANIC_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Nearby Station 1 128x128x128.\n        /// </summary>\n        internal static string Nearby_Station_1 {\n            get {\n                return ResourceManager.GetString(\"Nearby_Station_1\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Nearby Station 10 64x64x64.\n        /// </summary>\n        internal static string Nearby_Station_10 {\n            get {\n                return ResourceManager.GetString(\"Nearby_Station_10\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Nearby Station 11 128x64x64.\n        /// </summary>\n        internal static string Nearby_Station_11 {\n            get {\n                return ResourceManager.GetString(\"Nearby_Station_11\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Nearby Station 12 256x128x256.\n        /// </summary>\n        internal static string Nearby_Station_12 {\n            get {\n                return ResourceManager.GetString(\"Nearby_Station_12\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Nearby Station 2 64x128x64.\n        /// </summary>\n        internal static string Nearby_Station_2 {\n            get {\n                return ResourceManager.GetString(\"Nearby_Station_2\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Nearby Station 3 64x64x128.\n        /// </summary>\n        internal static string Nearby_Station_3 {\n            get {\n                return ResourceManager.GetString(\"Nearby_Station_3\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Nearby Station 4 64x128x64.\n        /// </summary>\n        internal static string Nearby_Station_4 {\n            get {\n                return ResourceManager.GetString(\"Nearby_Station_4\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Nearby Station 5 128x128x128.\n        /// </summary>\n        internal static string Nearby_Station_5 {\n            get {\n                return ResourceManager.GetString(\"Nearby_Station_5\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Nearby Station 6 128x128x128.\n        /// </summary>\n        internal static string Nearby_Station_6 {\n            get {\n                return ResourceManager.GetString(\"Nearby_Station_6\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Nearby Station 7 64x128x64.\n        /// </summary>\n        internal static string Nearby_Station_7 {\n            get {\n                return ResourceManager.GetString(\"Nearby_Station_7\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Nearby Station 8 64x64x64.\n        /// </summary>\n        internal static string Nearby_Station_8 {\n            get {\n                return ResourceManager.GetString(\"Nearby_Station_8\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Nearby Station 9 128x128x128.\n        /// </summary>\n        internal static string Nearby_Station_9 {\n            get {\n                return ResourceManager.GetString(\"Nearby_Station_9\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Neutral.\n        /// </summary>\n        internal static string Neutral {\n            get {\n                return ResourceManager.GetString(\"Neutral\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to New_Jerusalem_Asteroid.\n        /// </summary>\n        internal static string New_Jerusalem_Asteroid {\n            get {\n                return ResourceManager.GetString(\"New_Jerusalem_Asteroid\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to New Jerusalem.\n        /// </summary>\n        internal static string NEW_JERUSALEM_MISSION {\n            get {\n                return ResourceManager.GetString(\"NEW_JERUSALEM_MISSION\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to New Jerusalem\n        ///.\n        /// </summary>\n        internal static string NEW_JERUSALEM_MISSION_Description {\n            get {\n                return ResourceManager.GetString(\"NEW_JERUSALEM_MISSION_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to New Nanjing.\n        /// </summary>\n        internal static string NEW_NANJING {\n            get {\n                return ResourceManager.GetString(\"NEW_NANJING\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Conquer the outposts\n        ///.\n        /// </summary>\n        internal static string NEW_NANJING_Description {\n            get {\n                return ResourceManager.GetString(\"NEW_NANJING_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to New Singapore 512x512x256.\n        /// </summary>\n        internal static string New_Singapore {\n            get {\n                return ResourceManager.GetString(\"New_Singapore\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to New Singapore industry.\n        /// </summary>\n        internal static string NEW_SINGAPOUR {\n            get {\n                return ResourceManager.GetString(\"NEW_SINGAPOUR\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to New Singapore industry\n        ///.\n        /// </summary>\n        internal static string NEW_SINGAPOUR_Description {\n            get {\n                return ResourceManager.GetString(\"NEW_SINGAPOUR_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to First mission.\n        /// </summary>\n        internal static string NEW_STORY_M001 {\n            get {\n                return ResourceManager.GetString(\"NEW_STORY_M001\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Protect yourself and your spaceship!\n        ///.\n        /// </summary>\n        internal static string NEW_STORY_M001_Description {\n            get {\n                return ResourceManager.GetString(\"NEW_STORY_M001_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Learn how to build prefabs.\n        /// </summary>\n        internal static string NEW_STORY_M002_ADDITIONAL_MISSION {\n            get {\n                return ResourceManager.GetString(\"NEW_STORY_M002_ADDITIONAL_MISSION\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Travel to the marked sector and buy a new Foudation Factory.\n        ///Use your mothership to travel through the Solar system.\n        ///Travel back and deploy the Foundation Factory to the marked location.\n        ///.\n        /// </summary>\n        internal static string NEW_STORY_M002_ADDITIONAL_MISSION_Description {\n            get {\n                return ResourceManager.GetString(\"NEW_STORY_M002_ADDITIONAL_MISSION_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Destroy the space station.\n        /// </summary>\n        internal static string NEW_STORY_M003 {\n            get {\n                return ResourceManager.GetString(\"NEW_STORY_M003\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Chinese space station Xiamen prevents our mothership from reaching this sector. Destroy the station to call in your mothership!\n        ///- Find the entrance and get inside the station!\n        ///- Find the generator!\n        ///- Destroy the generator\n        ///- Get out as fast as possible!\n        ///.\n        /// </summary>\n        internal static string NEW_STORY_M003_Description {\n            get {\n                return ResourceManager.GetString(\"NEW_STORY_M003_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to New game.\n        /// </summary>\n        internal static string NewGame {\n            get {\n                return ResourceManager.GetString(\"NewGame\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to New mission:.\n        /// </summary>\n        internal static string NewMission {\n            get {\n                return ResourceManager.GetString(\"NewMission\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to A new mission has been recieved.\n        /// </summary>\n        internal static string NewMissionRecieved {\n            get {\n                return ResourceManager.GetString(\"NewMissionRecieved\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to New template name.\n        /// </summary>\n        internal static string NewTemplateName {\n            get {\n                return ResourceManager.GetString(\"NewTemplateName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Next secondary cam.\n        /// </summary>\n        internal static string NextCamera {\n            get {\n                return ResourceManager.GetString(\"NextCamera\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Next target.\n        /// </summary>\n        internal static string NextTarget {\n            get {\n                return ResourceManager.GetString(\"NextTarget\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Nickel.\n        /// </summary>\n        internal static string Nickel_01 {\n            get {\n                return ResourceManager.GetString(\"Nickel_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to No.\n        /// </summary>\n        internal static string No {\n            get {\n                return ResourceManager.GetString(\"No\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to None.\n        /// </summary>\n        internal static string None {\n            get {\n                return ResourceManager.GetString(\"None\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to No records.\n        /// </summary>\n        internal static string NoRecords {\n            get {\n                return ResourceManager.GetString(\"NoRecords\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Normal.\n        /// </summary>\n        internal static string Normal {\n            get {\n                return ResourceManager.GetString(\"Normal\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to No sectors available.\n        /// </summary>\n        internal static string NoSectorsAvailable {\n            get {\n                return ResourceManager.GetString(\"NoSectorsAvailable\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You do not have access rights to the test build.\n        /// </summary>\n        internal static string NotAccessRightsToTestBuild {\n            get {\n                return ResourceManager.GetString(\"NotAccessRightsToTestBuild\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to This feature is not available in demo mode.\n        /// </summary>\n        internal static string NotAvailableInDemoMode {\n            get {\n                return ResourceManager.GetString(\"NotAvailableInDemoMode\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Not available in offline mode.\n        /// </summary>\n        internal static string NotAvailableInOffline {\n            get {\n                return ResourceManager.GetString(\"NotAvailableInOffline\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Note.\n        /// </summary>\n        internal static string Note {\n            get {\n                return ResourceManager.GetString(\"Note\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string Nothing {\n            get {\n                return ResourceManager.GetString(\"Nothing\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to No ammo.\n        /// </summary>\n        internal static string NotificationAmmoNo {\n            get {\n                return ResourceManager.GetString(\"NotificationAmmoNo\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Armor critical.\n        /// </summary>\n        internal static string NotificationArmorCritical {\n            get {\n                return ResourceManager.GetString(\"NotificationArmorCritical\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Armor low.\n        /// </summary>\n        internal static string NotificationArmorLow {\n            get {\n                return ResourceManager.GetString(\"NotificationArmorLow\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to No armor.\n        /// </summary>\n        internal static string NotificationArmorNo {\n            get {\n                return ResourceManager.GetString(\"NotificationArmorNo\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Confirm notification.\n        /// </summary>\n        internal static string NotificationConfirmation {\n            get {\n                return ResourceManager.GetString(\"NotificationConfirmation\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ship damage alert.\n        /// </summary>\n        internal static string NotificationDamageAlert {\n            get {\n                return ResourceManager.GetString(\"NotificationDamageAlert\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ship damage critical.\n        /// </summary>\n        internal static string NotificationDamageCritical {\n            get {\n                return ResourceManager.GetString(\"NotificationDamageCritical\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to     Use the toolbar to manipulate objects (add, delete, select, move, …).\n        ///    Press {0} to select object\n        ///    Press {1} to rotate camera or snap two snap points together.\n        /// </summary>\n        internal static string NotificationEditorSelectAndRotate {\n            get {\n                return ResourceManager.GetString(\"NotificationEditorSelectAndRotate\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Engines are off. Start them from the action menu by pressing {0}.\n        /// </summary>\n        internal static string NotificationEngineOff {\n            get {\n                return ResourceManager.GetString(\"NotificationEngineOff\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Press {0} to exit.\n        /// </summary>\n        internal static string NotificationExitControlled {\n            get {\n                return ResourceManager.GetString(\"NotificationExitControlled\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fuel critical.\n        /// </summary>\n        internal static string NotificationFuelCritical {\n            get {\n                return ResourceManager.GetString(\"NotificationFuelCritical\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fuel low.\n        /// </summary>\n        internal static string NotificationFuelLow {\n            get {\n                return ResourceManager.GetString(\"NotificationFuelLow\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to No fuel.\n        /// </summary>\n        internal static string NotificationFuelNo {\n            get {\n                return ResourceManager.GetString(\"NotificationFuelNo\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Health critical.\n        /// </summary>\n        internal static string NotificationHealthCritical {\n            get {\n                return ResourceManager.GetString(\"NotificationHealthCritical\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Health low.\n        /// </summary>\n        internal static string NotificationHealthLow {\n            get {\n                return ResourceManager.GetString(\"NotificationHealthLow\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Host is loading the sector. Please wait..\n        /// </summary>\n        internal static string NotificationHostLoadingSector {\n            get {\n                return ResourceManager.GetString(\"NotificationHostLoadingSector\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Press {0} to show mission info.\n        /// </summary>\n        internal static string NotificationMissionAvailableInRange {\n            get {\n                return ResourceManager.GetString(\"NotificationMissionAvailableInRange\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Inertial dampeners are disabled. Press {0} to enable them.\n        /// </summary>\n        internal static string NotificationMovementSlowdownEnabled {\n            get {\n                return ResourceManager.GetString(\"NotificationMovementSlowdownEnabled\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Press F1 to see help.\n        /// </summary>\n        internal static string NotificationNeedShowHelpScreen {\n            get {\n                return ResourceManager.GetString(\"NotificationNeedShowHelpScreen\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to This item cannot be traded!.\n        /// </summary>\n        internal static string NotificationNonTradeableItem {\n            get {\n                return ResourceManager.GetString(\"NotificationNonTradeableItem\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to No oxygen.\n        /// </summary>\n        internal static string NotificationNoOxygen {\n            get {\n                return ResourceManager.GetString(\"NotificationNoOxygen\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Objective complete!.\n        /// </summary>\n        internal static string NotificationObjectiveComplete {\n            get {\n                return ResourceManager.GetString(\"NotificationObjectiveComplete\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Oxygen critical.\n        /// </summary>\n        internal static string NotificationOxygenCritical {\n            get {\n                return ResourceManager.GetString(\"NotificationOxygenCritical\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Oxygen leaking.\n        /// </summary>\n        internal static string NotificationOxygenLeaking {\n            get {\n                return ResourceManager.GetString(\"NotificationOxygenLeaking\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Oxygen low.\n        /// </summary>\n        internal static string NotificationOxygenLow {\n            get {\n                return ResourceManager.GetString(\"NotificationOxygenLow\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Radiation critical.\n        /// </summary>\n        internal static string NotificationRadiationCritical {\n            get {\n                return ResourceManager.GetString(\"NotificationRadiationCritical\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Notifications / warnings.\n        /// </summary>\n        internal static string Notifications {\n            get {\n                return ResourceManager.GetString(\"Notifications\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hold {0} to place explosives.\n        /// </summary>\n        internal static string NotificationSabotageSubmission {\n            get {\n                return ResourceManager.GetString(\"NotificationSabotageSubmission\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Press {0} to skip the introduction.\n        /// </summary>\n        internal static string NotificationSkipIntroduction {\n            get {\n                return ResourceManager.GetString(\"NotificationSkipIntroduction\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sun has errupted – solar flare approaching. Find cover..\n        /// </summary>\n        internal static string NotificationSolarWindWarning {\n            get {\n                return ResourceManager.GetString(\"NotificationSolarWindWarning\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hold {0} to take the artifact.\n        /// </summary>\n        internal static string NotificationTakeArtifact {\n            get {\n                return ResourceManager.GetString(\"NotificationTakeArtifact\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Press Num 0 to build.\n        /// </summary>\n        internal static string NotificationYouCanBuild {\n            get {\n                return ResourceManager.GetString(\"NotificationYouCanBuild\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Press {0} to examine {2}, press {1} to take all.\n        /// </summary>\n        internal static string NotificationYouCanExamine {\n            get {\n                return ResourceManager.GetString(\"NotificationYouCanExamine\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Press {0} to examine {1}.\n        /// </summary>\n        internal static string NotificationYouCanExamineEmpty {\n            get {\n                return ResourceManager.GetString(\"NotificationYouCanExamineEmpty\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hold {0} to hack {1}.\n        /// </summary>\n        internal static string NotificationYouCanHack {\n            get {\n                return ResourceManager.GetString(\"NotificationYouCanHack\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Press {0} to loot {1}.\n        /// </summary>\n        internal static string NotificationYouCanLoot {\n            get {\n                return ResourceManager.GetString(\"NotificationYouCanLoot\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hold {0} to take {1}.\n        /// </summary>\n        internal static string NotificationYouCanTake {\n            get {\n                return ResourceManager.GetString(\"NotificationYouCanTake\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You can’t interact with {0} because it’s accessed by another player.\n        /// </summary>\n        internal static string NotificationYouCantExamine {\n            get {\n                return ResourceManager.GetString(\"NotificationYouCantExamine\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Press {0} to trade with {1}.\n        /// </summary>\n        internal static string NotificationYouCanTradeWith {\n            get {\n                return ResourceManager.GetString(\"NotificationYouCanTradeWith\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Press {0} to travel.\n        /// </summary>\n        internal static string NotificationYouCanTravel {\n            get {\n                return ResourceManager.GetString(\"NotificationYouCanTravel\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Press {0} to use {1}.\n        /// </summary>\n        internal static string NotificationYouCanUse {\n            get {\n                return ResourceManager.GetString(\"NotificationYouCanUse\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You have no foundation factory in your inventory!.\n        /// </summary>\n        internal static string NotificationYouHaveNoFoundationFactory {\n            get {\n                return ResourceManager.GetString(\"NotificationYouHaveNoFoundationFactory\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You need to be near the mothership to enter solar map!.\n        /// </summary>\n        internal static string NotificationYouHaveToBeNearMothership {\n            get {\n                return ResourceManager.GetString(\"NotificationYouHaveToBeNearMothership\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You are not logged in.\n        /// </summary>\n        internal static string NotLoggedIn {\n            get {\n                return ResourceManager.GetString(\"NotLoggedIn\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Novaja_Zemlja.\n        /// </summary>\n        internal static string Novaja_Zemlja {\n            get {\n                return ResourceManager.GetString(\"Novaja_Zemlja\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Nuclear warhead closed.\n        /// </summary>\n        internal static string Nuclear_Warhead_closed {\n            get {\n                return ResourceManager.GetString(\"Nuclear_Warhead_closed\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Nuclear warhead open.\n        /// </summary>\n        internal static string Nuclear_Warhead_open {\n            get {\n                return ResourceManager.GetString(\"Nuclear_Warhead_open\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Nuclear warhead.\n        /// </summary>\n        internal static string NuclearHead {\n            get {\n                return ResourceManager.GetString(\"NuclearHead\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string Null {\n            get {\n                return ResourceManager.GetString(\"Null\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Number of asteroids in sector:      .\n        /// </summary>\n        internal static string NumberOfAsteroidsInSector {\n            get {\n                return ResourceManager.GetString(\"NumberOfAsteroidsInSector\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Number of objects in sector:     .\n        /// </summary>\n        internal static string NumberOfObjectsInSector {\n            get {\n                return ResourceManager.GetString(\"NumberOfObjectsInSector\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Number of voxel shapes in sector:      .\n        /// </summary>\n        internal static string NumberOfVoxelShapesInSector {\n            get {\n                return ResourceManager.GetString(\"NumberOfVoxelShapesInSector\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Num 0.\n        /// </summary>\n        internal static string NumPad0 {\n            get {\n                return ResourceManager.GetString(\"NumPad0\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Num 1.\n        /// </summary>\n        internal static string NumPad1 {\n            get {\n                return ResourceManager.GetString(\"NumPad1\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Num 2.\n        /// </summary>\n        internal static string NumPad2 {\n            get {\n                return ResourceManager.GetString(\"NumPad2\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Num 3.\n        /// </summary>\n        internal static string NumPad3 {\n            get {\n                return ResourceManager.GetString(\"NumPad3\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Num 4.\n        /// </summary>\n        internal static string NumPad4 {\n            get {\n                return ResourceManager.GetString(\"NumPad4\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Num 5.\n        /// </summary>\n        internal static string NumPad5 {\n            get {\n                return ResourceManager.GetString(\"NumPad5\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Num 6.\n        /// </summary>\n        internal static string NumPad6 {\n            get {\n                return ResourceManager.GetString(\"NumPad6\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Num 7.\n        /// </summary>\n        internal static string NumPad7 {\n            get {\n                return ResourceManager.GetString(\"NumPad7\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Num 8.\n        /// </summary>\n        internal static string NumPad8 {\n            get {\n                return ResourceManager.GetString(\"NumPad8\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Num 9.\n        /// </summary>\n        internal static string NumPad9 {\n            get {\n                return ResourceManager.GetString(\"NumPad9\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Object in collision with.\n        /// </summary>\n        internal static string ObjectInCollisionWith {\n            get {\n                return ResourceManager.GetString(\"ObjectInCollisionWith\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Objectives.\n        /// </summary>\n        internal static string Objectives {\n            get {\n                return ResourceManager.GetString(\"Objectives\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Object cannot be created at this position.\n        /// </summary>\n        internal static string ObjectOutOfBounds {\n            get {\n                return ResourceManager.GetString(\"ObjectOutOfBounds\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Objects in container.\n        /// </summary>\n        internal static string ObjectsInContainer {\n            get {\n                return ResourceManager.GetString(\"ObjectsInContainer\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Off.\n        /// </summary>\n        internal static string Off {\n            get {\n                return ResourceManager.GetString(\"Off\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to OK.\n        /// </summary>\n        internal static string Ok {\n            get {\n                return ResourceManager.GetString(\"Ok\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to On.\n        /// </summary>\n        internal static string On {\n            get {\n                return ResourceManager.GetString(\"On\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to One way.\n        /// </summary>\n        internal static string OneWay {\n            get {\n                return ResourceManager.GetString(\"OneWay\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Opacity.\n        /// </summary>\n        internal static string Opacity {\n            get {\n                return ResourceManager.GetString(\"Opacity\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Chat.\n        /// </summary>\n        internal static string OpenChat {\n            get {\n                return ResourceManager.GetString(\"OpenChat\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Open cheat screen.\n        /// </summary>\n        internal static string OpenCheats {\n            get {\n                return ResourceManager.GetString(\"OpenCheats\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Open help screen.\n        /// </summary>\n        internal static string OpenHelpScreen {\n            get {\n                return ResourceManager.GetString(\"OpenHelpScreen\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Multiplayer statistics.\n        /// </summary>\n        internal static string OpenScore {\n            get {\n                return ResourceManager.GetString(\"OpenScore\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Options.\n        /// </summary>\n        internal static string Options {\n            get {\n                return ResourceManager.GetString(\"Options\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to COBALT | Harvested ore.\n        /// </summary>\n        internal static string OreCobalt {\n            get {\n                return ResourceManager.GetString(\"OreCobalt\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cobalt.\n        /// </summary>\n        internal static string OreCobaltName {\n            get {\n                return ResourceManager.GetString(\"OreCobaltName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to CONCRETE | Harvested ore.\n        /// </summary>\n        internal static string OreConcrete {\n            get {\n                return ResourceManager.GetString(\"OreConcrete\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Concrete.\n        /// </summary>\n        internal static string OreConcreteName {\n            get {\n                return ResourceManager.GetString(\"OreConcreteName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to GOLD | Harvested ore.\n        /// </summary>\n        internal static string OreGold {\n            get {\n                return ResourceManager.GetString(\"OreGold\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Gold.\n        /// </summary>\n        internal static string OreGoldName {\n            get {\n                return ResourceManager.GetString(\"OreGoldName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to HELIUM | Harvested ore, refills fuel for chemical engine.\n        /// </summary>\n        internal static string OreHelium {\n            get {\n                return ResourceManager.GetString(\"OreHelium\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Helium.\n        /// </summary>\n        internal static string OreHeliumName {\n            get {\n                return ResourceManager.GetString(\"OreHeliumName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to ICE | Harvested ore, refills fuel for power cell engine.\n        /// </summary>\n        internal static string OreIce {\n            get {\n                return ResourceManager.GetString(\"OreIce\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ice.\n        /// </summary>\n        internal static string OreIceName {\n            get {\n                return ResourceManager.GetString(\"OreIceName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Indestructible.\n        /// </summary>\n        internal static string OreIndestructible {\n            get {\n                return ResourceManager.GetString(\"OreIndestructible\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to IRON | Harvested ore.\n        /// </summary>\n        internal static string OreIron {\n            get {\n                return ResourceManager.GetString(\"OreIron\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Iron.\n        /// </summary>\n        internal static string OreIronName {\n            get {\n                return ResourceManager.GetString(\"OreIronName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to LAVA | Harvested ore.\n        /// </summary>\n        internal static string OreLava {\n            get {\n                return ResourceManager.GetString(\"OreLava\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Lava.\n        /// </summary>\n        internal static string OreLavaName {\n            get {\n                return ResourceManager.GetString(\"OreLavaName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to MAGNESIUM | Harvested ore.\n        /// </summary>\n        internal static string OreMagnesium {\n            get {\n                return ResourceManager.GetString(\"OreMagnesium\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Magnesium.\n        /// </summary>\n        internal static string OreMagnesiumName {\n            get {\n                return ResourceManager.GetString(\"OreMagnesiumName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to NICKEL | Harvested ore.\n        /// </summary>\n        internal static string OreNickel {\n            get {\n                return ResourceManager.GetString(\"OreNickel\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Nickel.\n        /// </summary>\n        internal static string OreNickelName {\n            get {\n                return ResourceManager.GetString(\"OreNickelName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Press {0} to harvest ore.\n        /// </summary>\n        internal static string OreNotification {\n            get {\n                return ResourceManager.GetString(\"OreNotification\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to ORGANIC | Harvested ore.\n        /// </summary>\n        internal static string OreOrganic {\n            get {\n                return ResourceManager.GetString(\"OreOrganic\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Organic.\n        /// </summary>\n        internal static string OreOrganicName {\n            get {\n                return ResourceManager.GetString(\"OreOrganicName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to PLATINUM | Harvested ore.\n        /// </summary>\n        internal static string OrePlatinum {\n            get {\n                return ResourceManager.GetString(\"OrePlatinum\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Platinum.\n        /// </summary>\n        internal static string OrePlatinumName {\n            get {\n                return ResourceManager.GetString(\"OrePlatinumName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to SANDSTONE | Harvested ore.\n        /// </summary>\n        internal static string OreSandstone {\n            get {\n                return ResourceManager.GetString(\"OreSandstone\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sandstone.\n        /// </summary>\n        internal static string OreSandstoneName {\n            get {\n                return ResourceManager.GetString(\"OreSandstoneName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to SILICON | Harvested ore.\n        /// </summary>\n        internal static string OreSilicon {\n            get {\n                return ResourceManager.GetString(\"OreSilicon\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Silicon.\n        /// </summary>\n        internal static string OreSiliconName {\n            get {\n                return ResourceManager.GetString(\"OreSiliconName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to SILVER | Harvested ore.\n        /// </summary>\n        internal static string OreSilver {\n            get {\n                return ResourceManager.GetString(\"OreSilver\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Silver.\n        /// </summary>\n        internal static string OreSilverName {\n            get {\n                return ResourceManager.GetString(\"OreSilverName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to SNOW | Harvested ore.\n        /// </summary>\n        internal static string OreSnow {\n            get {\n                return ResourceManager.GetString(\"OreSnow\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Snow.\n        /// </summary>\n        internal static string OreSnowName {\n            get {\n                return ResourceManager.GetString(\"OreSnowName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to STONE | Harvested ore.\n        /// </summary>\n        internal static string OreStone {\n            get {\n                return ResourceManager.GetString(\"OreStone\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Stone.\n        /// </summary>\n        internal static string OreStoneName {\n            get {\n                return ResourceManager.GetString(\"OreStoneName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to TREASURE | Harvested ore.\n        /// </summary>\n        internal static string OreTreasure {\n            get {\n                return ResourceManager.GetString(\"OreTreasure\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Treasure.\n        /// </summary>\n        internal static string OreTreasureName {\n            get {\n                return ResourceManager.GetString(\"OreTreasureName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to PLUTONIUM | Harvested ore, refills fuel for nuclear engine.\n        /// </summary>\n        internal static string OreUranite {\n            get {\n                return ResourceManager.GetString(\"OreUranite\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Plutonium.\n        /// </summary>\n        internal static string OreUraniteName {\n            get {\n                return ResourceManager.GetString(\"OreUraniteName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Xenon.\n        /// </summary>\n        internal static string OreXenon {\n            get {\n                return ResourceManager.GetString(\"OreXenon\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Organic.\n        /// </summary>\n        internal static string Organic_01 {\n            get {\n                return ResourceManager.GetString(\"Organic_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Other side.\n        /// </summary>\n        internal static string OtherSide {\n            get {\n                return ResourceManager.GetString(\"OtherSide\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to ’s inventory.\n        /// </summary>\n        internal static string OtherSideInventory {\n            get {\n                return ResourceManager.GetString(\"OtherSideInventory\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to OXYGEN TANK | Extends oxygen storage for another \n        ///10 minutes worth of oxygen.\n        /// </summary>\n        internal static string OxygenKit {\n            get {\n                return ResourceManager.GetString(\"OxygenKit\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Solid Beam Straight 10 meters.\n        /// </summary>\n        internal static string p110a01_solid_beam_straight_10m {\n            get {\n                return ResourceManager.GetString(\"p110a01_solid_beam_straight_10m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Solid Beam Straight 20 meters.\n        /// </summary>\n        internal static string p110a02_solid_beam_straight_20m {\n            get {\n                return ResourceManager.GetString(\"p110a02_solid_beam_straight_20m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Solid Beam Straight 40 meters.\n        /// </summary>\n        internal static string p110a03_solid_beam_straight_40m_with_hole {\n            get {\n                return ResourceManager.GetString(\"p110a03_solid_beam_straight_40m_with_hole\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Solid Beam Straight 40 meters lattice.\n        /// </summary>\n        internal static string p110a04_solid_beam_straight_40m_lattice {\n            get {\n                return ResourceManager.GetString(\"p110a04_solid_beam_straight_40m_lattice\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Solid Beam Straight 80 meters.\n        /// </summary>\n        internal static string p110a05_solid_beam_straight_80m {\n            get {\n                return ResourceManager.GetString(\"p110a05_solid_beam_straight_80m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to p110a06_solid_beam_straight_420m.\n        /// </summary>\n        internal static string p110a06_solid_beam_straight_420m {\n            get {\n                return ResourceManager.GetString(\"p110a06_solid_beam_straight_420m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Basic T junction weak.\n        /// </summary>\n        internal static string p110A07BasicTJunctionWeak {\n            get {\n                return ResourceManager.GetString(\"p110A07BasicTJunctionWeak\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Basic T junction rotated.\n        /// </summary>\n        internal static string p110A08BasicTJunctionRotated {\n            get {\n                return ResourceManager.GetString(\"p110A08BasicTJunctionRotated\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Basic short unit lattice.\n        /// </summary>\n        internal static string p110A10BasicShortUnitLattice {\n            get {\n                return ResourceManager.GetString(\"p110A10BasicShortUnitLattice\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Solid Beam X-Junction Strong.\n        /// </summary>\n        internal static string p110a11_solid_beam_junction_x_strong {\n            get {\n                return ResourceManager.GetString(\"p110a11_solid_beam_junction_x_strong\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Basic short without hole.\n        /// </summary>\n        internal static string p110A11BasicShortWithoutHole {\n            get {\n                return ResourceManager.GetString(\"p110A11BasicShortWithoutHole\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Solid Beam X-Junction Weak.\n        /// </summary>\n        internal static string p110a12_solid_beam_junction_x_weak {\n            get {\n                return ResourceManager.GetString(\"p110a12_solid_beam_junction_x_weak\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Basic junction strong.\n        /// </summary>\n        internal static string p110A12BasicJunctionStrong {\n            get {\n                return ResourceManager.GetString(\"p110A12BasicJunctionStrong\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Solid Beam X-Junction Rotated.\n        /// </summary>\n        internal static string p110a13_solid_beam_junction_x_rotated {\n            get {\n                return ResourceManager.GetString(\"p110a13_solid_beam_junction_x_rotated\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Basic junction weak.\n        /// </summary>\n        internal static string p110A13BasicJunctionWeak {\n            get {\n                return ResourceManager.GetString(\"p110A13BasicJunctionWeak\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Basic junction rotated.\n        /// </summary>\n        internal static string p110A14BasicJunctionRotated {\n            get {\n                return ResourceManager.GetString(\"p110A14BasicJunctionRotated\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Basic joint longitudinal.\n        /// </summary>\n        internal static string p110A15BasicJointLongitudinal {\n            get {\n                return ResourceManager.GetString(\"p110A15BasicJointLongitudinal\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Solid Beam T-Junction Strong.\n        /// </summary>\n        internal static string p110a21_solid_beam_junction_t_strong {\n            get {\n                return ResourceManager.GetString(\"p110a21_solid_beam_junction_t_strong\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Solid Beam T-Junction Weak.\n        /// </summary>\n        internal static string p110a22_solid_beam_junction_t_weak {\n            get {\n                return ResourceManager.GetString(\"p110a22_solid_beam_junction_t_weak\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Solid Beam T-Junction Rotated.\n        /// </summary>\n        internal static string p110a23_solid_beam_junction_t_rotated {\n            get {\n                return ResourceManager.GetString(\"p110a23_solid_beam_junction_t_rotated\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Solid Beam Joint Horizontal.\n        /// </summary>\n        internal static string p110a31_solid_beam_joint_horizontal {\n            get {\n                return ResourceManager.GetString(\"p110a31_solid_beam_joint_horizontal\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Solid Beam Joint Vertical.\n        /// </summary>\n        internal static string p110a32_solid_beam_joint_vertical {\n            get {\n                return ResourceManager.GetString(\"p110a32_solid_beam_joint_vertical\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Solid Beam Joint Longitudinal.\n        /// </summary>\n        internal static string p110a33_solid_beam_joint_longitudinal {\n            get {\n                return ResourceManager.GetString(\"p110a33_solid_beam_joint_longitudinal\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Solid Beam Special Joint.\n        /// </summary>\n        internal static string p110a41_solid_beam_superjoint {\n            get {\n                return ResourceManager.GetString(\"p110a41_solid_beam_superjoint\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Lattice Beam Straight 10 meters.\n        /// </summary>\n        internal static string p110b01_lattice_beam_straight_10m {\n            get {\n                return ResourceManager.GetString(\"p110b01_lattice_beam_straight_10m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Frame straight unit.\n        /// </summary>\n        internal static string p110B01FrameStraightUnit {\n            get {\n                return ResourceManager.GetString(\"p110B01FrameStraightUnit\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Lattice Beam Straight 30 meters.\n        /// </summary>\n        internal static string p110b02_lattice_beam_straight_30m {\n            get {\n                return ResourceManager.GetString(\"p110b02_lattice_beam_straight_30m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Frame joint.\n        /// </summary>\n        internal static string p110B02FrameJoint {\n            get {\n                return ResourceManager.GetString(\"p110B02FrameJoint\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Lattice beam straight 420m.\n        /// </summary>\n        internal static string p110b03_lattice_beam_straight_420m {\n            get {\n                return ResourceManager.GetString(\"p110b03_lattice_beam_straight_420m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Lattice Beam Straight 60 meters.\n        /// </summary>\n        internal static string p110b03_lattice_beam_straight_60m {\n            get {\n                return ResourceManager.GetString(\"p110b03_lattice_beam_straight_60m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Frame triangle corner.\n        /// </summary>\n        internal static string p110B03FrameTriangleCorner {\n            get {\n                return ResourceManager.GetString(\"p110B03FrameTriangleCorner\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Lattice beam straight 420m with panels.\n        /// </summary>\n        internal static string p110b04_lattice_beam_straight_420m_with_panels {\n            get {\n                return ResourceManager.GetString(\"p110b04_lattice_beam_straight_420m_with_panels\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Lattice Beam Straight 60 meters with panels.\n        /// </summary>\n        internal static string p110b04_lattice_beam_straight_60m_with_panels {\n            get {\n                return ResourceManager.GetString(\"p110b04_lattice_beam_straight_60m_with_panels\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Frame corner.\n        /// </summary>\n        internal static string p110B04FrameCorner {\n            get {\n                return ResourceManager.GetString(\"p110B04FrameCorner\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Frame small unit.\n        /// </summary>\n        internal static string p110B05FrameSmallUnit {\n            get {\n                return ResourceManager.GetString(\"p110B05FrameSmallUnit\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Lattice Beam T-Junction Strong.\n        /// </summary>\n        internal static string p110b21_lattice_beam_junction_t_strong {\n            get {\n                return ResourceManager.GetString(\"p110b21_lattice_beam_junction_t_strong\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Lattice Beam T-Junction Weak.\n        /// </summary>\n        internal static string p110b22_lattice_beam_junction_t_weak {\n            get {\n                return ResourceManager.GetString(\"p110b22_lattice_beam_junction_t_weak\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Lattice Beam Joint Horizontal.\n        /// </summary>\n        internal static string p110b31_lattice_beam_joint_horizontal {\n            get {\n                return ResourceManager.GetString(\"p110b31_lattice_beam_joint_horizontal\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Lattice Beam Joint Vertical.\n        /// </summary>\n        internal static string p110b32_lattice_beam_joint_vertical {\n            get {\n                return ResourceManager.GetString(\"p110b32_lattice_beam_joint_vertical\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cage.\n        /// </summary>\n        internal static string p110C01Cage {\n            get {\n                return ResourceManager.GetString(\"p110C01Cage\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cage half.\n        /// </summary>\n        internal static string p110C02CageHalf {\n            get {\n                return ResourceManager.GetString(\"p110C02CageHalf\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cage grates.\n        /// </summary>\n        internal static string p110C03CageGrates {\n            get {\n                return ResourceManager.GetString(\"p110C03CageGrates\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cage grates tiny unit.\n        /// </summary>\n        internal static string p110C04CageGratesTinyUnit {\n            get {\n                return ResourceManager.GetString(\"p110C04CageGratesTinyUnit\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cage pillar.\n        /// </summary>\n        internal static string p110C05CagePillar {\n            get {\n                return ResourceManager.GetString(\"p110C05CagePillar\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cage corner.\n        /// </summary>\n        internal static string p110C06CageCorner {\n            get {\n                return ResourceManager.GetString(\"p110C06CageCorner\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cage solo.\n        /// </summary>\n        internal static string p110C08CageSolo {\n            get {\n                return ResourceManager.GetString(\"p110C08CageSolo\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hextunnel entrance cage to hextunnel adapter.\n        /// </summary>\n        internal static string p110C09HexTunnelEntranceCageToHexTunnelAdapter {\n            get {\n                return ResourceManager.GetString(\"p110C09HexTunnelEntranceCageToHexTunnelAdapter\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cage 2.\n        /// </summary>\n        internal static string p110D01Cage2 {\n            get {\n                return ResourceManager.GetString(\"p110D01Cage2\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Strong Lattice Beam Straight 10 meters.\n        /// </summary>\n        internal static string p120a01_strong_lattice_straight_10m {\n            get {\n                return ResourceManager.GetString(\"p120a01_strong_lattice_straight_10m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Strong Lattice Beam Straight 60 meters.\n        /// </summary>\n        internal static string p120a02_strong_lattice_straight_60m {\n            get {\n                return ResourceManager.GetString(\"p120a02_strong_lattice_straight_60m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Strong Lattice Beam Straight 120 meters.\n        /// </summary>\n        internal static string p120a03_strong_lattice_straight_120m {\n            get {\n                return ResourceManager.GetString(\"p120a03_strong_lattice_straight_120m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Strong Lattice Beam Straight T-Junction Strong.\n        /// </summary>\n        internal static string p120a21_strong_lattice_junction_t_strong {\n            get {\n                return ResourceManager.GetString(\"p120a21_strong_lattice_junction_t_strong\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Strong Lattice Beam T-Junction Weak.\n        /// </summary>\n        internal static string p120a22_strong_lattice_junction_t_weak {\n            get {\n                return ResourceManager.GetString(\"p120a22_strong_lattice_junction_t_weak\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Strong Lattice Beam T-Junction Rotated.\n        /// </summary>\n        internal static string p120a23_strong_lattice_junction_t_rotated {\n            get {\n                return ResourceManager.GetString(\"p120a23_strong_lattice_junction_t_rotated\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Strong to Weak Lattice (2 to 1).\n        /// </summary>\n        internal static string p120a51_strong_to_weak_lattice_2to1 {\n            get {\n                return ResourceManager.GetString(\"p120a51_strong_to_weak_lattice_2to1\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Strong to Weak Lattice (1 to 2).\n        /// </summary>\n        internal static string p120a52_strong_to_weak_lattice_1to2 {\n            get {\n                return ResourceManager.GetString(\"p120a52_strong_to_weak_lattice_1to2\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Weak Lattice Junction T-Rotated.\n        /// </summary>\n        internal static string p120a61_weak_lattice_junction_t_rotated {\n            get {\n                return ResourceManager.GetString(\"p120a61_weak_lattice_junction_t_rotated\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Medium Beam 01 10 meters.\n        /// </summary>\n        internal static string p120b01_b_straight_10m {\n            get {\n                return ResourceManager.GetString(\"p120b01_b_straight_10m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Strong lattice unit.\n        /// </summary>\n        internal static string p120B01StrongLatticeUnit {\n            get {\n                return ResourceManager.GetString(\"p120B01StrongLatticeUnit\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Medium Beam 01 40 meters.\n        /// </summary>\n        internal static string p120b02_b_straight_40m {\n            get {\n                return ResourceManager.GetString(\"p120b02_b_straight_40m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Strong lattice tiny unit.\n        /// </summary>\n        internal static string p120B02StrongLatticeTinyUnit {\n            get {\n                return ResourceManager.GetString(\"p120B02StrongLatticeTinyUnit\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Strong lattice long unit.\n        /// </summary>\n        internal static string p120B03StrongLatticeLongUnit {\n            get {\n                return ResourceManager.GetString(\"p120B03StrongLatticeLongUnit\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Strong lattice T junction strong.\n        /// </summary>\n        internal static string p120B04StrongLatticeTJunctionStrong {\n            get {\n                return ResourceManager.GetString(\"p120B04StrongLatticeTJunctionStrong\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Strong lattice T junction weak.\n        /// </summary>\n        internal static string p120B05StrongLatticeTJunctionWeak {\n            get {\n                return ResourceManager.GetString(\"p120B05StrongLatticeTJunctionWeak\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Strong lattice T junction rotated.\n        /// </summary>\n        internal static string p120B06StrongLatticeTJunctionRotated {\n            get {\n                return ResourceManager.GetString(\"p120B06StrongLatticeTJunctionRotated\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Single strong lattice T junction rotated2To1.\n        /// </summary>\n        internal static string p120B07SingleStrongLatticeTJunctionRotated2To1 {\n            get {\n                return ResourceManager.GetString(\"p120B07SingleStrongLatticeTJunctionRotated2To1\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Single strong lattice T junction rotated1To2.\n        /// </summary>\n        internal static string p120B08SingleStrongLatticeTJunctionRotated1To2 {\n            get {\n                return ResourceManager.GetString(\"p120B08SingleStrongLatticeTJunctionRotated1To2\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Single weak lattice T junction rotated.\n        /// </summary>\n        internal static string p120B09SingleWeakLatticeTJunctionRotated {\n            get {\n                return ResourceManager.GetString(\"p120B09SingleWeakLatticeTJunctionRotated\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Medium Beam 02 10 meters.\n        /// </summary>\n        internal static string p120c01_c_straight_10m {\n            get {\n                return ResourceManager.GetString(\"p120c01_c_straight_10m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Straight 400m.\n        /// </summary>\n        internal static string p120c02_c_straight_400m {\n            get {\n                return ResourceManager.GetString(\"p120c02_c_straight_400m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Medium Beam 02 40 meters.\n        /// </summary>\n        internal static string p120c02_c_straight_40m {\n            get {\n                return ResourceManager.GetString(\"p120c02_c_straight_40m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Medium Beam 03 10 meters.\n        /// </summary>\n        internal static string p120d01_d_straight_10m {\n            get {\n                return ResourceManager.GetString(\"p120d01_d_straight_10m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Medium Beam 03 40 meters.\n        /// </summary>\n        internal static string p120d02_d_straight_40m {\n            get {\n                return ResourceManager.GetString(\"p120d02_d_straight_40m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Small Beam 08 30m.\n        /// </summary>\n        internal static string p120h01_h_straight_30m {\n            get {\n                return ResourceManager.GetString(\"p120h01_h_straight_30m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Small Beam 09 30m.\n        /// </summary>\n        internal static string p120i01_i_straight_30m {\n            get {\n                return ResourceManager.GetString(\"p120i01_i_straight_30m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Small Beam 10 30m.\n        /// </summary>\n        internal static string p120j01_j_straight_30m {\n            get {\n                return ResourceManager.GetString(\"p120j01_j_straight_30m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Small Cross Beam 01 10m.\n        /// </summary>\n        internal static string p130a01_a_straight_10m {\n            get {\n                return ResourceManager.GetString(\"p130a01_a_straight_10m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Small Cross Beam 01 30m.\n        /// </summary>\n        internal static string p130a02_a_straight_30m {\n            get {\n                return ResourceManager.GetString(\"p130a02_a_straight_30m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hextunnel beam assembled.\n        /// </summary>\n        internal static string p130A02HexTunnelBeamAssembled {\n            get {\n                return ResourceManager.GetString(\"p130A02HexTunnelBeamAssembled\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hextunnel beam assembled long.\n        /// </summary>\n        internal static string p130A03HexTunnelBeamAssembledLong {\n            get {\n                return ResourceManager.GetString(\"p130A03HexTunnelBeamAssembledLong\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Small Cross Beam 02 10m.\n        /// </summary>\n        internal static string p130b01_b_straight_10m {\n            get {\n                return ResourceManager.GetString(\"p130b01_b_straight_10m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Small Cross Beam 02 30m.\n        /// </summary>\n        internal static string p130b02_b_straight_30m {\n            get {\n                return ResourceManager.GetString(\"p130b02_b_straight_30m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Small Cross Beam 03 10m.\n        /// </summary>\n        internal static string p130c01_c_straight_10m {\n            get {\n                return ResourceManager.GetString(\"p130c01_c_straight_10m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Small Cross Beam 03 30m.\n        /// </summary>\n        internal static string p130c02_c_straight_30m {\n            get {\n                return ResourceManager.GetString(\"p130c02_c_straight_30m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Small Cross Beam 04 10m.\n        /// </summary>\n        internal static string p130d01_d_straight_10m {\n            get {\n                return ResourceManager.GetString(\"p130d01_d_straight_10m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Straight 300m.\n        /// </summary>\n        internal static string p130d02_d_straight_300m {\n            get {\n                return ResourceManager.GetString(\"p130d02_d_straight_300m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Small Cross Beam 04 30m.\n        /// </summary>\n        internal static string p130d02_d_straight_30m {\n            get {\n                return ResourceManager.GetString(\"p130d02_d_straight_30m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Small Cross Beam 05 10m.\n        /// </summary>\n        internal static string p130e01_e_straight_10m {\n            get {\n                return ResourceManager.GetString(\"p130e01_e_straight_10m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Small Cross Beam 05 30m.\n        /// </summary>\n        internal static string p130e02_e_straight_30m {\n            get {\n                return ResourceManager.GetString(\"p130e02_e_straight_30m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Small Beam 08 10 meters.\n        /// </summary>\n        internal static string p130h02_h_straight_10m {\n            get {\n                return ResourceManager.GetString(\"p130h02_h_straight_10m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Small Beam 09 10 meters.\n        /// </summary>\n        internal static string p130i02_i_straight_10m {\n            get {\n                return ResourceManager.GetString(\"p130i02_i_straight_10m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Straight 300m.\n        /// </summary>\n        internal static string p130j01_j_straight_300m {\n            get {\n                return ResourceManager.GetString(\"p130j01_j_straight_300m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Small Beam 10 10 meters.\n        /// </summary>\n        internal static string p130j02_j_straight_10m {\n            get {\n                return ResourceManager.GetString(\"p130j02_j_straight_10m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Outer Frame 01 Straight 10 meters.\n        /// </summary>\n        internal static string p141a01_thick_frame_straight_10m {\n            get {\n                return ResourceManager.GetString(\"p141a01_thick_frame_straight_10m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Outer Frame 01 Straight 60 meters.\n        /// </summary>\n        internal static string p141a02_thick_frame_straight_60m {\n            get {\n                return ResourceManager.GetString(\"p141a02_thick_frame_straight_60m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Outer Frame 01 Edge.\n        /// </summary>\n        internal static string p141a11_thick_frame_edge {\n            get {\n                return ResourceManager.GetString(\"p141a11_thick_frame_edge\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Outer Frame 01 Corner.\n        /// </summary>\n        internal static string p141a12_thick_frame_corner {\n            get {\n                return ResourceManager.GetString(\"p141a12_thick_frame_corner\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Outer Frame 01 Joint.\n        /// </summary>\n        internal static string p141a31_thick_frame_joint {\n            get {\n                return ResourceManager.GetString(\"p141a31_thick_frame_joint\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Outer Frame 02 Straight 10 meters.\n        /// </summary>\n        internal static string p141b01_thick_frame_straight_10m {\n            get {\n                return ResourceManager.GetString(\"p141b01_thick_frame_straight_10m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Outer Frame 02 Straight 60 meters.\n        /// </summary>\n        internal static string p141b02_thick_frame_straight_60m {\n            get {\n                return ResourceManager.GetString(\"p141b02_thick_frame_straight_60m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Outer Frame 02 Edge.\n        /// </summary>\n        internal static string p141b11_thick_frame_edge {\n            get {\n                return ResourceManager.GetString(\"p141b11_thick_frame_edge\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Outer Frame 02 Corner.\n        /// </summary>\n        internal static string p141b12_thick_frame_corner {\n            get {\n                return ResourceManager.GetString(\"p141b12_thick_frame_corner\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Outer frame 02 Joint.\n        /// </summary>\n        internal static string p141b31_thick_frame_joint {\n            get {\n                return ResourceManager.GetString(\"p141b31_thick_frame_joint\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Inner Frame 01 Edge.\n        /// </summary>\n        internal static string p142a01_cage_empty {\n            get {\n                return ResourceManager.GetString(\"p142a01_cage_empty\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Inner Frame 01 Half.\n        /// </summary>\n        internal static string p142a02_cage_halfcut {\n            get {\n                return ResourceManager.GetString(\"p142a02_cage_halfcut\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Inner Frame 01 with corner struts.\n        /// </summary>\n        internal static string p142a03_cage_with_corners {\n            get {\n                return ResourceManager.GetString(\"p142a03_cage_with_corners\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Inner Frame 01 Strut.\n        /// </summary>\n        internal static string p142a11_cage_pillar {\n            get {\n                return ResourceManager.GetString(\"p142a11_cage_pillar\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Inner Frame 01 Edge.\n        /// </summary>\n        internal static string p142a12_cage_edge {\n            get {\n                return ResourceManager.GetString(\"p142a12_cage_edge\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Inner Frame 02.\n        /// </summary>\n        internal static string p142b01_cage_empty {\n            get {\n                return ResourceManager.GetString(\"p142b01_cage_empty\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Inner Frame 02 Half.\n        /// </summary>\n        internal static string p142b02_cage_halfcut {\n            get {\n                return ResourceManager.GetString(\"p142b02_cage_halfcut\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Inner Frame 02 with corner struts.\n        /// </summary>\n        internal static string p142b03_cage_with_corners {\n            get {\n                return ResourceManager.GetString(\"p142b03_cage_with_corners\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Inner Frame 02 Strut.\n        /// </summary>\n        internal static string p142b11_cage_pillar {\n            get {\n                return ResourceManager.GetString(\"p142b11_cage_pillar\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Inner Frame 02 Edge.\n        /// </summary>\n        internal static string p142b12_cage_edge {\n            get {\n                return ResourceManager.GetString(\"p142b12_cage_edge\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Shelf 1X3.\n        /// </summary>\n        internal static string p150a01_shelf_1X3 {\n            get {\n                return ResourceManager.GetString(\"p150a01_shelf_1X3\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Shelf 1X2.\n        /// </summary>\n        internal static string p150a02_shelf_1X2 {\n            get {\n                return ResourceManager.GetString(\"p150a02_shelf_1X2\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Shelf 1.\n        /// </summary>\n        internal static string p150a03_shelf_1 {\n            get {\n                return ResourceManager.GetString(\"p150a03_shelf_1\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Panel 01 120x60 meters.\n        /// </summary>\n        internal static string p211a01_panel_120mx60m {\n            get {\n                return ResourceManager.GetString(\"p211a01_panel_120mx60m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Panel 01 60x60 meters.\n        /// </summary>\n        internal static string p211a02_panel_60mx60m {\n            get {\n                return ResourceManager.GetString(\"p211a02_panel_60mx60m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Panel 01 60x30 meters.\n        /// </summary>\n        internal static string p211a03_panel_60mx30m {\n            get {\n                return ResourceManager.GetString(\"p211a03_panel_60mx30m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Panel 02 120x60 meters.\n        /// </summary>\n        internal static string p211b01_panel_120mx60m {\n            get {\n                return ResourceManager.GetString(\"p211b01_panel_120mx60m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Panel 02 60x60 meters.\n        /// </summary>\n        internal static string p211b02_panel_60mx60m {\n            get {\n                return ResourceManager.GetString(\"p211b02_panel_60mx60m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Panel 02 60x30 meters.\n        /// </summary>\n        internal static string p211b03_panel_60mx30m {\n            get {\n                return ResourceManager.GetString(\"p211b03_panel_60mx30m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Panel 03 120x60 meters.\n        /// </summary>\n        internal static string p211c01_panel_120mx60m {\n            get {\n                return ResourceManager.GetString(\"p211c01_panel_120mx60m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Panel 03 60x60 meters.\n        /// </summary>\n        internal static string p211c02_panel_60mx60m {\n            get {\n                return ResourceManager.GetString(\"p211c02_panel_60mx60m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Panel 03 60x30 meters.\n        /// </summary>\n        internal static string p211c03_panel_60mx30m {\n            get {\n                return ResourceManager.GetString(\"p211c03_panel_60mx30m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Panel 04 120x60 meters.\n        /// </summary>\n        internal static string p211d01_panel_120mx60m {\n            get {\n                return ResourceManager.GetString(\"p211d01_panel_120mx60m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Panel 04 60x60 meters.\n        /// </summary>\n        internal static string p211d02_panel_60mx60m {\n            get {\n                return ResourceManager.GetString(\"p211d02_panel_60mx60m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Panel 04 60x30 meters.\n        /// </summary>\n        internal static string p211d03_panel_60mx30m {\n            get {\n                return ResourceManager.GetString(\"p211d03_panel_60mx30m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Panel 05 120x60 meters.\n        /// </summary>\n        internal static string p211e01_panel_120mx60m {\n            get {\n                return ResourceManager.GetString(\"p211e01_panel_120mx60m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Panel 05 60x60 meters.\n        /// </summary>\n        internal static string p211e02_panel_60mx60m {\n            get {\n                return ResourceManager.GetString(\"p211e02_panel_60mx60m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Panel 05 60x30 meters.\n        /// </summary>\n        internal static string p211e03_panel_60mx30m {\n            get {\n                return ResourceManager.GetString(\"p211e03_panel_60mx30m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Panel 06 120x60 meters.\n        /// </summary>\n        internal static string p211f01_panel_120mx60m {\n            get {\n                return ResourceManager.GetString(\"p211f01_panel_120mx60m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Panel 06 60x60 meters.\n        /// </summary>\n        internal static string p211f02_panel_60mx60m {\n            get {\n                return ResourceManager.GetString(\"p211f02_panel_60mx60m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Panel 06 60x30 meters.\n        /// </summary>\n        internal static string p211f03_panel_60mx30m {\n            get {\n                return ResourceManager.GetString(\"p211f03_panel_60mx30m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Panel 07 120x60 meters.\n        /// </summary>\n        internal static string p211g01_panel_120mx60m {\n            get {\n                return ResourceManager.GetString(\"p211g01_panel_120mx60m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Panel 07 60x60 meters.\n        /// </summary>\n        internal static string p211g02_panel_60mx60m {\n            get {\n                return ResourceManager.GetString(\"p211g02_panel_60mx60m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Panel 07 60x30 meters.\n        /// </summary>\n        internal static string p211g03_panel_60mx30m {\n            get {\n                return ResourceManager.GetString(\"p211g03_panel_60mx30m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to p211h01_panel_535mx130m.\n        /// </summary>\n        internal static string p211h01_panel_535mx130m {\n            get {\n                return ResourceManager.GetString(\"p211h01_panel_535mx130m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to p212a01_panel_large.\n        /// </summary>\n        internal static string p212a01_panel_large {\n            get {\n                return ResourceManager.GetString(\"p212a01_panel_large\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to p212a01_panel_medium.\n        /// </summary>\n        internal static string p212a01_panel_medium {\n            get {\n                return ResourceManager.GetString(\"p212a01_panel_medium\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to p212a01_panel_small.\n        /// </summary>\n        internal static string p212a01_panel_small {\n            get {\n                return ResourceManager.GetString(\"p212a01_panel_small\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to p212b02_panel_large.\n        /// </summary>\n        internal static string p212b02_panel_large {\n            get {\n                return ResourceManager.GetString(\"p212b02_panel_large\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to p212b02_panel_medium.\n        /// </summary>\n        internal static string p212b02_panel_medium {\n            get {\n                return ResourceManager.GetString(\"p212b02_panel_medium\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to p212b02_panel_small.\n        /// </summary>\n        internal static string p212b02_panel_small {\n            get {\n                return ResourceManager.GetString(\"p212b02_panel_small\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to p212c03_panel_large.\n        /// </summary>\n        internal static string p212c03_panel_large {\n            get {\n                return ResourceManager.GetString(\"p212c03_panel_large\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to p212c03_panel_medium.\n        /// </summary>\n        internal static string p212c03_panel_medium {\n            get {\n                return ResourceManager.GetString(\"p212c03_panel_medium\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to p212c03_panel_small.\n        /// </summary>\n        internal static string p212c03_panel_small {\n            get {\n                return ResourceManager.GetString(\"p212c03_panel_small\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to p212d04_panel_large.\n        /// </summary>\n        internal static string p212d04_panel_large {\n            get {\n                return ResourceManager.GetString(\"p212d04_panel_large\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to p212d04_panel_medium.\n        /// </summary>\n        internal static string p212d04_panel_medium {\n            get {\n                return ResourceManager.GetString(\"p212d04_panel_medium\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to p212d04_panel_small.\n        /// </summary>\n        internal static string p212d04_panel_small {\n            get {\n                return ResourceManager.GetString(\"p212d04_panel_small\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to p212e05_panel_large.\n        /// </summary>\n        internal static string p212e05_panel_large {\n            get {\n                return ResourceManager.GetString(\"p212e05_panel_large\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to p212e05_panel_medium.\n        /// </summary>\n        internal static string p212e05_panel_medium {\n            get {\n                return ResourceManager.GetString(\"p212e05_panel_medium\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to p212e05_panel_small.\n        /// </summary>\n        internal static string p212e05_panel_small {\n            get {\n                return ResourceManager.GetString(\"p212e05_panel_small\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to p212f01_panel_large.\n        /// </summary>\n        internal static string p212f01_panel_large {\n            get {\n                return ResourceManager.GetString(\"p212f01_panel_large\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Panel doorlike.\n        /// </summary>\n        internal static string p220A01PanelDoorlike {\n            get {\n                return ResourceManager.GetString(\"p220A01PanelDoorlike\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Panel movietape.\n        /// </summary>\n        internal static string p220A02PanelMovietape {\n            get {\n                return ResourceManager.GetString(\"p220A02PanelMovietape\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Chamber Cyllinder.\n        /// </summary>\n        internal static string p221a01_chamber_v1 {\n            get {\n                return ResourceManager.GetString(\"p221a01_chamber_v1\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Chamber Cylinder 2.\n        /// </summary>\n        internal static string p221a02_chamber_v2 {\n            get {\n                return ResourceManager.GetString(\"p221a02_chamber_v2\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to chamber T.\n        /// </summary>\n        internal static string p221b01_chamber_v1 {\n            get {\n                return ResourceManager.GetString(\"p221b01_chamber_v1\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Chamber T 2.\n        /// </summary>\n        internal static string p221b02_chamber_v2 {\n            get {\n                return ResourceManager.GetString(\"p221b02_chamber_v2\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Chamber Arena.\n        /// </summary>\n        internal static string p221c01_chamber_v1 {\n            get {\n                return ResourceManager.GetString(\"p221c01_chamber_v1\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Chamber Arena 2.\n        /// </summary>\n        internal static string p221c02_chamber_v2 {\n            get {\n                return ResourceManager.GetString(\"p221c02_chamber_v2\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Chamber Cross.\n        /// </summary>\n        internal static string p221d01_chamber_v1 {\n            get {\n                return ResourceManager.GetString(\"p221d01_chamber_v1\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Chamber Cross 2.\n        /// </summary>\n        internal static string p221d02_chamber_v2 {\n            get {\n                return ResourceManager.GetString(\"p221d02_chamber_v2\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Chamber Zig-Zag.\n        /// </summary>\n        internal static string p221e01_chamber_v1 {\n            get {\n                return ResourceManager.GetString(\"p221e01_chamber_v1\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Chamber Turn.\n        /// </summary>\n        internal static string p221e02_chamber_v2 {\n            get {\n                return ResourceManager.GetString(\"p221e02_chamber_v2\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to p221f01_chamber_v1.\n        /// </summary>\n        internal static string p221f01_chamber_v1 {\n            get {\n                return ResourceManager.GetString(\"p221f01_chamber_v1\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to p221g01_chamber_v1.\n        /// </summary>\n        internal static string p221g01_chamber_v1 {\n            get {\n                return ResourceManager.GetString(\"p221g01_chamber_v1\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to p221h01_chamber_v1.\n        /// </summary>\n        internal static string p221h01_chamber_v1 {\n            get {\n                return ResourceManager.GetString(\"p221h01_chamber_v1\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to p221j01_chamber_v1.\n        /// </summary>\n        internal static string p221j01_chamber_v1 {\n            get {\n                return ResourceManager.GetString(\"p221j01_chamber_v1\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to p221k01_chamber_v1.\n        /// </summary>\n        internal static string p221k01_chamber_v1 {\n            get {\n                return ResourceManager.GetString(\"p221k01_chamber_v1\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Chamber v2.\n        /// </summary>\n        internal static string p221k01_chamber_v2 {\n            get {\n                return ResourceManager.GetString(\"p221k01_chamber_v2\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Chamber v1.\n        /// </summary>\n        internal static string p221L01_chamber_v1 {\n            get {\n                return ResourceManager.GetString(\"p221L01_chamber_v1\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to p221m01_chamber_bottom_v1.\n        /// </summary>\n        internal static string p221m01_chamber_bottom_v1 {\n            get {\n                return ResourceManager.GetString(\"p221m01_chamber_bottom_v1\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to p221m01_chamber_center_v1.\n        /// </summary>\n        internal static string p221m01_chamber_center_v1 {\n            get {\n                return ResourceManager.GetString(\"p221m01_chamber_center_v1\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to p221m01_chamber_top_v1.\n        /// </summary>\n        internal static string p221m01_chamber_top_v1 {\n            get {\n                return ResourceManager.GetString(\"p221m01_chamber_top_v1\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to p221n01_chamber_v1.\n        /// </summary>\n        internal static string p221n01_chamber_v1 {\n            get {\n                return ResourceManager.GetString(\"p221n01_chamber_v1\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hextunnel plate heavy stripes bottom.\n        /// </summary>\n        internal static string p230A01HexTunnelPlateHeavyStripesBottom {\n            get {\n                return ResourceManager.GetString(\"p230A01HexTunnelPlateHeavyStripesBottom\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hextunnel plate heavy stripes bottom left.\n        /// </summary>\n        internal static string p230A01HexTunnelPlateHeavyStripesBottomLeft {\n            get {\n                return ResourceManager.GetString(\"p230A01HexTunnelPlateHeavyStripesBottomLeft\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hextunnel plate heavy stripes bottom right.\n        /// </summary>\n        internal static string p230A01HexTunnelPlateHeavyStripesBottomRight {\n            get {\n                return ResourceManager.GetString(\"p230A01HexTunnelPlateHeavyStripesBottomRight\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hextunnel plate heavy stripes top.\n        /// </summary>\n        internal static string p230A01HexTunnelPlateHeavyStripesTop {\n            get {\n                return ResourceManager.GetString(\"p230A01HexTunnelPlateHeavyStripesTop\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hextunnel plate heavy stripes top left.\n        /// </summary>\n        internal static string p230A01HexTunnelPlateHeavyStripesTopLeft {\n            get {\n                return ResourceManager.GetString(\"p230A01HexTunnelPlateHeavyStripesTopLeft\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hextunnel plate heavy stripes top right.\n        /// </summary>\n        internal static string p230A01HexTunnelPlateHeavyStripesTopRight {\n            get {\n                return ResourceManager.GetString(\"p230A01HexTunnelPlateHeavyStripesTopRight\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hextunnel plate beam flat bottom.\n        /// </summary>\n        internal static string p230A02HexTunnelPlateBeamFlatBottom {\n            get {\n                return ResourceManager.GetString(\"p230A02HexTunnelPlateBeamFlatBottom\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hextunnel plate beam flat bottom left.\n        /// </summary>\n        internal static string p230A02HexTunnelPlateBeamFlatBottomLeft {\n            get {\n                return ResourceManager.GetString(\"p230A02HexTunnelPlateBeamFlatBottomLeft\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hextunnel plate beam flat bottom right.\n        /// </summary>\n        internal static string p230A02HexTunnelPlateBeamFlatBottomRight {\n            get {\n                return ResourceManager.GetString(\"p230A02HexTunnelPlateBeamFlatBottomRight\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hextunnel plate beam flat top.\n        /// </summary>\n        internal static string p230A02HexTunnelPlateBeamFlatTop {\n            get {\n                return ResourceManager.GetString(\"p230A02HexTunnelPlateBeamFlatTop\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hextunnel plate beam flat top left.\n        /// </summary>\n        internal static string p230A02HexTunnelPlateBeamFlatTopLeft {\n            get {\n                return ResourceManager.GetString(\"p230A02HexTunnelPlateBeamFlatTopLeft\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hextunnel plate beam flat top right.\n        /// </summary>\n        internal static string p230A02HexTunnelPlateBeamFlatTopRight {\n            get {\n                return ResourceManager.GetString(\"p230A02HexTunnelPlateBeamFlatTopRight\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hextunnel plate flat bottom.\n        /// </summary>\n        internal static string p230A03HexTunnelPlateFlatBottom {\n            get {\n                return ResourceManager.GetString(\"p230A03HexTunnelPlateFlatBottom\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hextunnel plate flat bottom left.\n        /// </summary>\n        internal static string p230A03HexTunnelPlateFlatBottomLeft {\n            get {\n                return ResourceManager.GetString(\"p230A03HexTunnelPlateFlatBottomLeft\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hextunnel plate flat bottom right.\n        /// </summary>\n        internal static string p230A03HexTunnelPlateFlatBottomRight {\n            get {\n                return ResourceManager.GetString(\"p230A03HexTunnelPlateFlatBottomRight\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hextunnel plate flat top.\n        /// </summary>\n        internal static string p230A03HexTunnelPlateFlatTop {\n            get {\n                return ResourceManager.GetString(\"p230A03HexTunnelPlateFlatTop\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hextunnel plate flat top left.\n        /// </summary>\n        internal static string p230A03HexTunnelPlateFlatTopLeft {\n            get {\n                return ResourceManager.GetString(\"p230A03HexTunnelPlateFlatTopLeft\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hextunnel plate flat top right.\n        /// </summary>\n        internal static string p230A03HexTunnelPlateFlatTopRight {\n            get {\n                return ResourceManager.GetString(\"p230A03HexTunnelPlateFlatTopRight\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hextunnel plate beam bottom.\n        /// </summary>\n        internal static string p230A04HexTunnelPlateBeamBottom {\n            get {\n                return ResourceManager.GetString(\"p230A04HexTunnelPlateBeamBottom\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hextunnel plate beam bottom left.\n        /// </summary>\n        internal static string p230A04HexTunnelPlateBeamBottomLeft {\n            get {\n                return ResourceManager.GetString(\"p230A04HexTunnelPlateBeamBottomLeft\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hextunnel plate beam bottom right.\n        /// </summary>\n        internal static string p230A04HexTunnelPlateBeamBottomRight {\n            get {\n                return ResourceManager.GetString(\"p230A04HexTunnelPlateBeamBottomRight\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hextunnel plate beam top.\n        /// </summary>\n        internal static string p230A04HexTunnelPlateBeamTop {\n            get {\n                return ResourceManager.GetString(\"p230A04HexTunnelPlateBeamTop\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hextunnel plate beam top left.\n        /// </summary>\n        internal static string p230A04HexTunnelPlateBeamTopLeft {\n            get {\n                return ResourceManager.GetString(\"p230A04HexTunnelPlateBeamTopLeft\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hextunnel plate beam top right.\n        /// </summary>\n        internal static string p230A04HexTunnelPlateBeamTopRight {\n            get {\n                return ResourceManager.GetString(\"p230A04HexTunnelPlateBeamTopRight\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hextunnel plate flat2 bottom.\n        /// </summary>\n        internal static string p230A05HexTunnelPlateFlat2Bottom {\n            get {\n                return ResourceManager.GetString(\"p230A05HexTunnelPlateFlat2Bottom\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hextunnel plate flat2 bottom left.\n        /// </summary>\n        internal static string p230A05HexTunnelPlateFlat2BottomLeft {\n            get {\n                return ResourceManager.GetString(\"p230A05HexTunnelPlateFlat2BottomLeft\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hextunnel plate flat2 bottom right.\n        /// </summary>\n        internal static string p230A05HexTunnelPlateFlat2BottomRight {\n            get {\n                return ResourceManager.GetString(\"p230A05HexTunnelPlateFlat2BottomRight\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hextunnel plate flat2 top.\n        /// </summary>\n        internal static string p230A05HexTunnelPlateFlat2Top {\n            get {\n                return ResourceManager.GetString(\"p230A05HexTunnelPlateFlat2Top\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hextunnel plate flat2 top left.\n        /// </summary>\n        internal static string p230A05HexTunnelPlateFlat2TopLeft {\n            get {\n                return ResourceManager.GetString(\"p230A05HexTunnelPlateFlat2TopLeft\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hextunnel plate flat2 top right.\n        /// </summary>\n        internal static string p230A05HexTunnelPlateFlat2TopRight {\n            get {\n                return ResourceManager.GetString(\"p230A05HexTunnelPlateFlat2TopRight\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hextunnel grate bottom.\n        /// </summary>\n        internal static string p230A06HexTunnelGrateBottom {\n            get {\n                return ResourceManager.GetString(\"p230A06HexTunnelGrateBottom\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hextunnel grate bottom left.\n        /// </summary>\n        internal static string p230A06HexTunnelGrateBottomLeft {\n            get {\n                return ResourceManager.GetString(\"p230A06HexTunnelGrateBottomLeft\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hextunnel grate bottom right.\n        /// </summary>\n        internal static string p230A06HexTunnelGrateBottomRight {\n            get {\n                return ResourceManager.GetString(\"p230A06HexTunnelGrateBottomRight\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hextunnel grate top.\n        /// </summary>\n        internal static string p230A06HexTunnelGrateTop {\n            get {\n                return ResourceManager.GetString(\"p230A06HexTunnelGrateTop\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hextunnel grate top left.\n        /// </summary>\n        internal static string p230A06HexTunnelGrateTopLeft {\n            get {\n                return ResourceManager.GetString(\"p230A06HexTunnelGrateTopLeft\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hextunnel grate top right.\n        /// </summary>\n        internal static string p230A06HexTunnelGrateTopRight {\n            get {\n                return ResourceManager.GetString(\"p230A06HexTunnelGrateTopRight\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Armor 01.\n        /// </summary>\n        internal static string p231a01_armor {\n            get {\n                return ResourceManager.GetString(\"p231a01_armor\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Armor 02.\n        /// </summary>\n        internal static string p231a02_armor {\n            get {\n                return ResourceManager.GetString(\"p231a02_armor\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Armor 03.\n        /// </summary>\n        internal static string p231a03_armor {\n            get {\n                return ResourceManager.GetString(\"p231a03_armor\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Armor 04.\n        /// </summary>\n        internal static string p231a04_armor {\n            get {\n                return ResourceManager.GetString(\"p231a04_armor\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Armor 05.\n        /// </summary>\n        internal static string p231a05_armor {\n            get {\n                return ResourceManager.GetString(\"p231a05_armor\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Armor 06.\n        /// </summary>\n        internal static string p231a06_armor {\n            get {\n                return ResourceManager.GetString(\"p231a06_armor\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Armor 07.\n        /// </summary>\n        internal static string p231a07_armor {\n            get {\n                return ResourceManager.GetString(\"p231a07_armor\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Armor 08.\n        /// </summary>\n        internal static string p231a08_armor {\n            get {\n                return ResourceManager.GetString(\"p231a08_armor\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Armor 09.\n        /// </summary>\n        internal static string p231a09_armor {\n            get {\n                return ResourceManager.GetString(\"p231a09_armor\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Armor 10.\n        /// </summary>\n        internal static string p231a10_armor {\n            get {\n                return ResourceManager.GetString(\"p231a10_armor\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Armor 11.\n        /// </summary>\n        internal static string p231a11_armor {\n            get {\n                return ResourceManager.GetString(\"p231a11_armor\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Armor 12.\n        /// </summary>\n        internal static string p231a12_armor {\n            get {\n                return ResourceManager.GetString(\"p231a12_armor\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Armor 13.\n        /// </summary>\n        internal static string p231a13_armor {\n            get {\n                return ResourceManager.GetString(\"p231a13_armor\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Armor 14.\n        /// </summary>\n        internal static string p231a14_armor {\n            get {\n                return ResourceManager.GetString(\"p231a14_armor\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Armor 15.\n        /// </summary>\n        internal static string p231a15_armor {\n            get {\n                return ResourceManager.GetString(\"p231a15_armor\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Armor 16.\n        /// </summary>\n        internal static string p231a16_armor {\n            get {\n                return ResourceManager.GetString(\"p231a16_armor\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Armor 17.\n        /// </summary>\n        internal static string p231a17_armor {\n            get {\n                return ResourceManager.GetString(\"p231a17_armor\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Armor 18.\n        /// </summary>\n        internal static string p231a18_armor {\n            get {\n                return ResourceManager.GetString(\"p231a18_armor\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Armor.\n        /// </summary>\n        internal static string p231b01_armor {\n            get {\n                return ResourceManager.GetString(\"p231b01_armor\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Armor corner.\n        /// </summary>\n        internal static string p231b01_armor_corner {\n            get {\n                return ResourceManager.GetString(\"p231b01_armor_corner\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Armor edge.\n        /// </summary>\n        internal static string p231b01_armor_edge {\n            get {\n                return ResourceManager.GetString(\"p231b01_armor_edge\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Armor hole.\n        /// </summary>\n        internal static string p231b01_armor_hole {\n            get {\n                return ResourceManager.GetString(\"p231b01_armor_hole\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Large Thruster.\n        /// </summary>\n        internal static string p311a01_long_term_thruster {\n            get {\n                return ResourceManager.GetString(\"p311a01_long_term_thruster\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Thruster large.\n        /// </summary>\n        internal static string p311A01ThrusterLarge {\n            get {\n                return ResourceManager.GetString(\"p311A01ThrusterLarge\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to p311b01_cut_thruster.\n        /// </summary>\n        internal static string p311b01_cut_thruster {\n            get {\n                return ResourceManager.GetString(\"p311b01_cut_thruster\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Long term thruster.\n        /// </summary>\n        internal static string p311b01_long_term_thruster {\n            get {\n                return ResourceManager.GetString(\"p311b01_long_term_thruster\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Medium Thruster Latitude.\n        /// </summary>\n        internal static string p312a01_short_term_thruster_latitude {\n            get {\n                return ResourceManager.GetString(\"p312a01_short_term_thruster_latitude\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Thruster small.\n        /// </summary>\n        internal static string p312A01SmallThruster {\n            get {\n                return ResourceManager.GetString(\"p312A01SmallThruster\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Medium Thruster Lateral.\n        /// </summary>\n        internal static string p312a02_short_term_thruster_lateral {\n            get {\n                return ResourceManager.GetString(\"p312a02_short_term_thruster_lateral\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Thruster small lateral.\n        /// </summary>\n        internal static string p312A02SmallThrusterLateral {\n            get {\n                return ResourceManager.GetString(\"p312A02SmallThrusterLateral\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to p312b01_cut_thruster_lateral.\n        /// </summary>\n        internal static string p312b01_cut_thruster_lateral {\n            get {\n                return ResourceManager.GetString(\"p312b01_cut_thruster_lateral\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to p312b02_cut_thruster_latitude.\n        /// </summary>\n        internal static string p312b02_cut_thruster_latitude {\n            get {\n                return ResourceManager.GetString(\"p312b02_cut_thruster_latitude\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Big Solar Panel.\n        /// </summary>\n        internal static string p321_d01_big_solar_panel {\n            get {\n                return ResourceManager.GetString(\"p321_d01_big_solar_panel\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Solar Panel 1.\n        /// </summary>\n        internal static string p321a01_solar_panel {\n            get {\n                return ResourceManager.GetString(\"p321a01_solar_panel\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Solar panel 1.\n        /// </summary>\n        internal static string p321A01SolarPanel {\n            get {\n                return ResourceManager.GetString(\"p321A01SolarPanel\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Nuclear Reactor.\n        /// </summary>\n        internal static string p321b01_nuclear_reactor {\n            get {\n                return ResourceManager.GetString(\"p321b01_nuclear_reactor\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Solar Panel 2.\n        /// </summary>\n        internal static string p321b01_solar_panel {\n            get {\n                return ResourceManager.GetString(\"p321b01_solar_panel\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Solar Panel 2.\n        /// </summary>\n        internal static string p321B01SolarPanel2 {\n            get {\n                return ResourceManager.GetString(\"p321B01SolarPanel2\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to inertia Generator.\n        /// </summary>\n        internal static string p321c01_inertia_generator {\n            get {\n                return ResourceManager.GetString(\"p321c01_inertia_generator\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Solar Panel 1.\n        /// </summary>\n        internal static string p321c01_solar_panel {\n            get {\n                return ResourceManager.GetString(\"p321c01_solar_panel\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Generator Wall Big.\n        /// </summary>\n        internal static string p321c02_generator_wall_big {\n            get {\n                return ResourceManager.GetString(\"p321c02_generator_wall_big\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Centrifuge.\n        /// </summary>\n        internal static string p321c03_centrifuge {\n            get {\n                return ResourceManager.GetString(\"p321c03_centrifuge\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Box Generator.\n        /// </summary>\n        internal static string p321c04_box_generator {\n            get {\n                return ResourceManager.GetString(\"p321c04_box_generator\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Centrifuge Big.\n        /// </summary>\n        internal static string p321c05_centrifuge_big {\n            get {\n                return ResourceManager.GetString(\"p321c05_centrifuge_big\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Inertia generator B.\n        /// </summary>\n        internal static string p321c06_inertia_generator_B {\n            get {\n                return ResourceManager.GetString(\"p321c06_inertia_generator_B\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Generator.\n        /// </summary>\n        internal static string p321c07_generator {\n            get {\n                return ResourceManager.GetString(\"p321c07_generator\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to p321e01_solar_panel.\n        /// </summary>\n        internal static string p321e01_solar_panel {\n            get {\n                return ResourceManager.GetString(\"p321e01_solar_panel\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Battery.\n        /// </summary>\n        internal static string p322a01_battery {\n            get {\n                return ResourceManager.GetString(\"p322a01_battery\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fuel Generator.\n        /// </summary>\n        internal static string p323a01_fuel_generator {\n            get {\n                return ResourceManager.GetString(\"p323a01_fuel_generator\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fuel Storage 01.\n        /// </summary>\n        internal static string p324a01_fuel_storage_a {\n            get {\n                return ResourceManager.GetString(\"p324a01_fuel_storage_a\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fuel Storage 02.\n        /// </summary>\n        internal static string p324b01_fuel_storage_b {\n            get {\n                return ResourceManager.GetString(\"p324b01_fuel_storage_b\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Oxygen Generator.\n        /// </summary>\n        internal static string p331_a01_oxygen_generator {\n            get {\n                return ResourceManager.GetString(\"p331_a01_oxygen_generator\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Oxygen Tank.\n        /// </summary>\n        internal static string p332_a01_oxygen_storage {\n            get {\n                return ResourceManager.GetString(\"p332_a01_oxygen_storage\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hydroponic Building.\n        /// </summary>\n        internal static string p333_a01_hydroponic_building {\n            get {\n                return ResourceManager.GetString(\"p333_a01_hydroponic_building\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Food grow.\n        /// </summary>\n        internal static string p334_a01_food_grow {\n            get {\n                return ResourceManager.GetString(\"p334_a01_food_grow\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Dock 01 Variation 01.\n        /// </summary>\n        internal static string p341_a01_open_dock_variation1 {\n            get {\n                return ResourceManager.GetString(\"p341_a01_open_dock_variation1\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Dock 01 Variation 02.\n        /// </summary>\n        internal static string p341_a02_open_dock_variation2 {\n            get {\n                return ResourceManager.GetString(\"p341_a02_open_dock_variation2\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Dock 02 Variation 01.\n        /// </summary>\n        internal static string p341_b01_open_dock_variation1 {\n            get {\n                return ResourceManager.GetString(\"p341_b01_open_dock_variation1\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Dock 02 Variation 02.\n        /// </summary>\n        internal static string p341_b02_open_dock_variation2 {\n            get {\n                return ResourceManager.GetString(\"p341_b02_open_dock_variation2\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to p341_c01_closed_dock_v1.\n        /// </summary>\n        internal static string p341_c01_closed_dock_v1 {\n            get {\n                return ResourceManager.GetString(\"p341_c01_closed_dock_v1\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Loading Bay.\n        /// </summary>\n        internal static string p342_a01_loading_bay {\n            get {\n                return ResourceManager.GetString(\"p342_a01_loading_bay\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Container arm empty.\n        /// </summary>\n        internal static string p342A01ContainerArmEmpty {\n            get {\n                return ResourceManager.GetString(\"p342A01ContainerArmEmpty\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Container arm filled.\n        /// </summary>\n        internal static string p342A02ContainerArmFilled {\n            get {\n                return ResourceManager.GetString(\"p342A02ContainerArmFilled\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ore Storage.\n        /// </summary>\n        internal static string p343_a01_ore_storage {\n            get {\n                return ResourceManager.GetString(\"p343_a01_ore_storage\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Container Arm with Container.\n        /// </summary>\n        internal static string p344_a01_container_arm_filled {\n            get {\n                return ResourceManager.GetString(\"p344_a01_container_arm_filled\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Container Arm Empty.\n        /// </summary>\n        internal static string p344_a02_container_arm_empty {\n            get {\n                return ResourceManager.GetString(\"p344_a02_container_arm_empty\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cargo storage container.\n        /// </summary>\n        internal static string p344_a03_container {\n            get {\n                return ResourceManager.GetString(\"p344_a03_container\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Double sphere tank one joint.\n        /// </summary>\n        internal static string p344A01DoubleSphereTankOneJoint {\n            get {\n                return ResourceManager.GetString(\"p344A01DoubleSphereTankOneJoint\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Double sphere tank two joints.\n        /// </summary>\n        internal static string p344A02DoubleSphereTankTwoJoints {\n            get {\n                return ResourceManager.GetString(\"p344A02DoubleSphereTankTwoJoints\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tank missing sphere one joint.\n        /// </summary>\n        internal static string p344A03TankMissingSphereOneJoint {\n            get {\n                return ResourceManager.GetString(\"p344A03TankMissingSphereOneJoint\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cylindrical tank.\n        /// </summary>\n        internal static string p344B01CylTank {\n            get {\n                return ResourceManager.GetString(\"p344B01CylTank\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Bio experiment.\n        /// </summary>\n        internal static string p345_a01_bio_exp {\n            get {\n                return ResourceManager.GetString(\"p345_a01_bio_exp\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Bio machine experiment.\n        /// </summary>\n        internal static string p345_a01_bio_mach_exp {\n            get {\n                return ResourceManager.GetString(\"p345_a01_bio_mach_exp\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Recycle.\n        /// </summary>\n        internal static string p345_a01_recycle {\n            get {\n                return ResourceManager.GetString(\"p345_a01_recycle\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to p345_a01_recycle_sphere.\n        /// </summary>\n        internal static string p345_a01_recycle_sphere {\n            get {\n                return ResourceManager.GetString(\"p345_a01_recycle_sphere\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Refinery.\n        /// </summary>\n        internal static string p345_a01_refinery {\n            get {\n                return ResourceManager.GetString(\"p345_a01_refinery\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to tower a.\n        /// </summary>\n        internal static string p349_a_tower {\n            get {\n                return ResourceManager.GetString(\"p349_a_tower\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to tower b.\n        /// </summary>\n        internal static string p349_b_tower {\n            get {\n                return ResourceManager.GetString(\"p349_b_tower\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to tower c.\n        /// </summary>\n        internal static string p349_c_tower {\n            get {\n                return ResourceManager.GetString(\"p349_c_tower\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Weapon gatling gun.\n        /// </summary>\n        internal static string p351_a01_largeship_autocannon {\n            get {\n                return ResourceManager.GetString(\"p351_a01_largeship_autocannon\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Weapon CIWS.\n        /// </summary>\n        internal static string p351_a01_largeship_ciws {\n            get {\n                return ResourceManager.GetString(\"p351_a01_largeship_ciws\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Weapon machinegun.\n        /// </summary>\n        internal static string p351_a01_largeship_machinegun {\n            get {\n                return ResourceManager.GetString(\"p351_a01_largeship_machinegun\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Missile launcher 4 barrels.\n        /// </summary>\n        internal static string p351_a01_largeship_missile_gun4 {\n            get {\n                return ResourceManager.GetString(\"p351_a01_largeship_missile_gun4\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Missile launcher 6 barrels.\n        /// </summary>\n        internal static string p351_a01_largeship_missile_gun6 {\n            get {\n                return ResourceManager.GetString(\"p351_a01_largeship_missile_gun6\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Missile launcher 9 barrels.\n        /// </summary>\n        internal static string p351_a01_largeship_missile_gun9 {\n            get {\n                return ResourceManager.GetString(\"p351_a01_largeship_missile_gun9\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Weapon Basing.\n        /// </summary>\n        internal static string p351_a01_weapon_mount {\n            get {\n                return ResourceManager.GetString(\"p351_a01_weapon_mount\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Missile launcher 4 guided.\n        /// </summary>\n        internal static string p351_a02_largeship_missile_gun_guided4 {\n            get {\n                return ResourceManager.GetString(\"p351_a02_largeship_missile_gun_guided4\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Missile launcher 6 guided.\n        /// </summary>\n        internal static string p351_a02_largeship_missile_gun_guided6 {\n            get {\n                return ResourceManager.GetString(\"p351_a02_largeship_missile_gun_guided6\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Missile launcher 9 guided.\n        /// </summary>\n        internal static string p351_a02_largeship_missile_gun_guided9 {\n            get {\n                return ResourceManager.GetString(\"p351_a02_largeship_missile_gun_guided9\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Long Distance Antenna.\n        /// </summary>\n        internal static string p361_a01_long_distance_antenna {\n            get {\n                return ResourceManager.GetString(\"p361_a01_long_distance_antenna\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Long distance antenna big.\n        /// </summary>\n        internal static string p361_b01_long_distance_antenna_big {\n            get {\n                return ResourceManager.GetString(\"p361_b01_long_distance_antenna_big\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Antenna stick.\n        /// </summary>\n        internal static string p361A01AntennaStick {\n            get {\n                return ResourceManager.GetString(\"p361A01AntennaStick\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Short Distance Antenna.\n        /// </summary>\n        internal static string p362_a01_short_distance_antenna {\n            get {\n                return ResourceManager.GetString(\"p362_a01_short_distance_antenna\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Big Antenna 1500m.\n        /// </summary>\n        internal static string p363_a01_big_antenna_1500m {\n            get {\n                return ResourceManager.GetString(\"p363_a01_big_antenna_1500m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Big antenna 300m.\n        /// </summary>\n        internal static string p363_a01_big_antenna_300m {\n            get {\n                return ResourceManager.GetString(\"p363_a01_big_antenna_300m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Building 01.\n        /// </summary>\n        internal static string p381_a01_building1 {\n            get {\n                return ResourceManager.GetString(\"p381_a01_building1\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Building 02.\n        /// </summary>\n        internal static string p381_b01_building2 {\n            get {\n                return ResourceManager.GetString(\"p381_b01_building2\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Building 03.\n        /// </summary>\n        internal static string p381_c01_building3 {\n            get {\n                return ResourceManager.GetString(\"p381_c01_building3\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Building 04.\n        /// </summary>\n        internal static string p381_c01_building4 {\n            get {\n                return ResourceManager.GetString(\"p381_c01_building4\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to p381_c01_building5.\n        /// </summary>\n        internal static string p381_c01_building5 {\n            get {\n                return ResourceManager.GetString(\"p381_c01_building5\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to p381_c01_building6.\n        /// </summary>\n        internal static string p381_c01_building6 {\n            get {\n                return ResourceManager.GetString(\"p381_c01_building6\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to p381_c01_building7.\n        /// </summary>\n        internal static string p381_c01_building7 {\n            get {\n                return ResourceManager.GetString(\"p381_c01_building7\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Bio Experiment.\n        /// </summary>\n        internal static string p381_d01_bio_exp {\n            get {\n                return ResourceManager.GetString(\"p381_d01_bio_exp\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Chuch.\n        /// </summary>\n        internal static string p381_d02_church {\n            get {\n                return ResourceManager.GetString(\"p381_d02_church\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hospital.\n        /// </summary>\n        internal static string p381_d03_hospital {\n            get {\n                return ResourceManager.GetString(\"p381_d03_hospital\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Recycle.\n        /// </summary>\n        internal static string p381_d04_recycle {\n            get {\n                return ResourceManager.GetString(\"p381_d04_recycle\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Food Grow.\n        /// </summary>\n        internal static string p381_d05_food_grow {\n            get {\n                return ResourceManager.GetString(\"p381_d05_food_grow\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Temple 900m.\n        /// </summary>\n        internal static string p381_d06_temple_900m {\n            get {\n                return ResourceManager.GetString(\"p381_d06_temple_900m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Bio Machine Experiment.\n        /// </summary>\n        internal static string p381_d07_bio_mach_exp {\n            get {\n                return ResourceManager.GetString(\"p381_d07_bio_mach_exp\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Command Bridge 01.\n        /// </summary>\n        internal static string p382_a01_bridge1 {\n            get {\n                return ResourceManager.GetString(\"p382_a01_bridge1\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Command Bridge 02.\n        /// </summary>\n        internal static string p382_b01_bridge2 {\n            get {\n                return ResourceManager.GetString(\"p382_b01_bridge2\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Command Bridge 03.\n        /// </summary>\n        internal static string p382_c01_bridge3 {\n            get {\n                return ResourceManager.GetString(\"p382_c01_bridge3\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Command Bridge 04.\n        /// </summary>\n        internal static string p382_d01_bridge4 {\n            get {\n                return ResourceManager.GetString(\"p382_d01_bridge4\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Command Bridge 05.\n        /// </summary>\n        internal static string p382_e01_bridge5 {\n            get {\n                return ResourceManager.GetString(\"p382_e01_bridge5\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Church.\n        /// </summary>\n        internal static string p383_a01_church {\n            get {\n                return ResourceManager.GetString(\"p383_a01_church\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hospital.\n        /// </summary>\n        internal static string p384_a01_hospital {\n            get {\n                return ResourceManager.GetString(\"p384_a01_hospital\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Temple 1200m.\n        /// </summary>\n        internal static string p385_a01_temple_900m {\n            get {\n                return ResourceManager.GetString(\"p385_a01_temple_900m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Puzzle Sharp Corner.\n        /// </summary>\n        internal static string p410_g01_turn_90_right_0m {\n            get {\n                return ResourceManager.GetString(\"p410_g01_turn_90_right_0m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel entrance.\n        /// </summary>\n        internal static string p410A01TunnelEntrance {\n            get {\n                return ResourceManager.GetString(\"p410A01TunnelEntrance\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel short unit.\n        /// </summary>\n        internal static string p410A02TunnelShortUnit {\n            get {\n                return ResourceManager.GetString(\"p410A02TunnelShortUnit\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel 6DOF junction.\n        /// </summary>\n        internal static string p410A03Tunnel6DofJunction {\n            get {\n                return ResourceManager.GetString(\"p410A03Tunnel6DofJunction\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel 90 turn.\n        /// </summary>\n        internal static string p410A04Tunnel90Turn {\n            get {\n                return ResourceManager.GetString(\"p410A04Tunnel90Turn\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel short unit lattice.\n        /// </summary>\n        internal static string p410A05TunnelShortUnitLattice {\n            get {\n                return ResourceManager.GetString(\"p410A05TunnelShortUnitLattice\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel short unit with gaps.\n        /// </summary>\n        internal static string p410A06TunnelShortUnitWithGaps {\n            get {\n                return ResourceManager.GetString(\"p410A06TunnelShortUnitWithGaps\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Cross Straight 10 meters.\n        /// </summary>\n        internal static string p411_a01_straight_10m {\n            get {\n                return ResourceManager.GetString(\"p411_a01_straight_10m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Cross Straight 60 meters with side-opening.\n        /// </summary>\n        internal static string p411_a02_straight_60m_with_hole {\n            get {\n                return ResourceManager.GetString(\"p411_a02_straight_60m_with_hole\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Cross Straight 120 meters.\n        /// </summary>\n        internal static string p411_a03_straight_120m {\n            get {\n                return ResourceManager.GetString(\"p411_a03_straight_120m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Cross Straight 80 meters.\n        /// </summary>\n        internal static string p411_a04_straight_80m {\n            get {\n                return ResourceManager.GetString(\"p411_a04_straight_80m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Cross Straight 80 meters with extension.\n        /// </summary>\n        internal static string p411_a05_straight_80m_with_extension {\n            get {\n                return ResourceManager.GetString(\"p411_a05_straight_80m_with_extension\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Round Straight 10 meters.\n        /// </summary>\n        internal static string p411_b01_straight_10m {\n            get {\n                return ResourceManager.GetString(\"p411_b01_straight_10m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to tunnel round straight 30 meters yellow .\n        /// </summary>\n        internal static string p411_b02_straight_30m_yellow {\n            get {\n                return ResourceManager.GetString(\"p411_b02_straight_30m_yellow\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Round Straight 60 meters with side-opening.\n        /// </summary>\n        internal static string p411_b02_straight_60m_with_hole {\n            get {\n                return ResourceManager.GetString(\"p411_b02_straight_60m_with_hole\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Round Straight 120 meters.\n        /// </summary>\n        internal static string p411_b03_straight_120m {\n            get {\n                return ResourceManager.GetString(\"p411_b03_straight_120m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to tunnel round straight 320 meters.\n        /// </summary>\n        internal static string p411_b03_straight_320m {\n            get {\n                return ResourceManager.GetString(\"p411_b03_straight_320m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Round Straight 80 meters.\n        /// </summary>\n        internal static string p411_b04_straight_80m_fat {\n            get {\n                return ResourceManager.GetString(\"p411_b04_straight_80m_fat\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to tunnel round straight 80 meters side grates.\n        /// </summary>\n        internal static string p411_b04_straight_80m_with_side_grates {\n            get {\n                return ResourceManager.GetString(\"p411_b04_straight_80m_with_side_grates\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Round Straight 60 meters.\n        /// </summary>\n        internal static string p411_b05_straight_60m_with_extension {\n            get {\n                return ResourceManager.GetString(\"p411_b05_straight_60m_with_extension\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to tunnel round straight 80 meters side open.\n        /// </summary>\n        internal static string p411_b05_straight_80m_with_side_open {\n            get {\n                return ResourceManager.GetString(\"p411_b05_straight_80m_with_side_open\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to tunnel round straight 180 meters concrete.\n        /// </summary>\n        internal static string p411_b06_straight_180m_concrete {\n            get {\n                return ResourceManager.GetString(\"p411_b06_straight_180m_concrete\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to tunnel round straight 200 meters.\n        /// </summary>\n        internal static string p411_b06_straight_200m {\n            get {\n                return ResourceManager.GetString(\"p411_b06_straight_200m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to tunnel round straight 180 meters blue.\n        /// </summary>\n        internal static string p411_b07_straight_180m_blue {\n            get {\n                return ResourceManager.GetString(\"p411_b07_straight_180m_blue\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to tunnel round straight 30 meters gray.\n        /// </summary>\n        internal static string p411_b09_straight_30m_gray {\n            get {\n                return ResourceManager.GetString(\"p411_b09_straight_30m_gray\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to tunnel round straight 220 meters.\n        /// </summary>\n        internal static string p411_b11_straight_220m {\n            get {\n                return ResourceManager.GetString(\"p411_b11_straight_220m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to tunnel round straight 160 meters dark metal.\n        /// </summary>\n        internal static string p411_b12_straight_160m_dark_metal {\n            get {\n                return ResourceManager.GetString(\"p411_b12_straight_160m_dark_metal\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to tunnel round straight 100 meters tube inside.\n        /// </summary>\n        internal static string p411_b13_straight_100m_tube_inside {\n            get {\n                return ResourceManager.GetString(\"p411_b13_straight_100m_tube_inside\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Bread Straight 10 meters.\n        /// </summary>\n        internal static string p411_c01_straight_10m {\n            get {\n                return ResourceManager.GetString(\"p411_c01_straight_10m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Bread Straight 40 meters with side-opening.\n        /// </summary>\n        internal static string p411_c02_straight_40m_with_hole {\n            get {\n                return ResourceManager.GetString(\"p411_c02_straight_40m_with_hole\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Bread Straight 60 meters.\n        /// </summary>\n        internal static string p411_c03_straight_60m {\n            get {\n                return ResourceManager.GetString(\"p411_c03_straight_60m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Bread Straight 120 meters.\n        /// </summary>\n        internal static string p411_c04_straight_120m {\n            get {\n                return ResourceManager.GetString(\"p411_c04_straight_120m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Bread Straight 180 meters.\n        /// </summary>\n        internal static string p411_c05_straight_180m {\n            get {\n                return ResourceManager.GetString(\"p411_c05_straight_180m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Octagon Straight 10 meters.\n        /// </summary>\n        internal static string p411_d01_straight_10m {\n            get {\n                return ResourceManager.GetString(\"p411_d01_straight_10m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Octagon Straight 40 meters with side-opening.\n        /// </summary>\n        internal static string p411_d02_straight_40m_with_hole {\n            get {\n                return ResourceManager.GetString(\"p411_d02_straight_40m_with_hole\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Octagon Straight 60 meters.\n        /// </summary>\n        internal static string p411_d03_straight_60m {\n            get {\n                return ResourceManager.GetString(\"p411_d03_straight_60m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Octagon Straight 120 meters.\n        /// </summary>\n        internal static string p411_d04_straight_120m {\n            get {\n                return ResourceManager.GetString(\"p411_d04_straight_120m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Octagon Straight 180 meters.\n        /// </summary>\n        internal static string p411_d05_straight_180m {\n            get {\n                return ResourceManager.GetString(\"p411_d05_straight_180m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Special Straight 01.\n        /// </summary>\n        internal static string p411_e01_straight_1 {\n            get {\n                return ResourceManager.GetString(\"p411_e01_straight_1\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Special Straight 02.\n        /// </summary>\n        internal static string p411_e02_straight_2 {\n            get {\n                return ResourceManager.GetString(\"p411_e02_straight_2\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Special Straight 03.\n        /// </summary>\n        internal static string p411_e03_straight_3 {\n            get {\n                return ResourceManager.GetString(\"p411_e03_straight_3\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Special Straight 04.\n        /// </summary>\n        internal static string p411_e04_straight_4 {\n            get {\n                return ResourceManager.GetString(\"p411_e04_straight_4\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Special Straight 05.\n        /// </summary>\n        internal static string p411_e05_straight_5 {\n            get {\n                return ResourceManager.GetString(\"p411_e05_straight_5\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Hexagon Straight 01.\n        /// </summary>\n        internal static string p411_f01_straight_1 {\n            get {\n                return ResourceManager.GetString(\"p411_f01_straight_1\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Hexagon Straight 02.\n        /// </summary>\n        internal static string p411_f02_straight_2 {\n            get {\n                return ResourceManager.GetString(\"p411_f02_straight_2\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Hexagon Straight 03.\n        /// </summary>\n        internal static string p411_f03_straight_3 {\n            get {\n                return ResourceManager.GetString(\"p411_f03_straight_3\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Special 01.\n        /// </summary>\n        internal static string p411_f04_straight_4 {\n            get {\n                return ResourceManager.GetString(\"p411_f04_straight_4\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Special 02.\n        /// </summary>\n        internal static string p411_f05_straight_5 {\n            get {\n                return ResourceManager.GetString(\"p411_f05_straight_5\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Puzzle Straight 01.\n        /// </summary>\n        internal static string p411_g01_straight_1 {\n            get {\n                return ResourceManager.GetString(\"p411_g01_straight_1\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Puzzle Straight 02.\n        /// </summary>\n        internal static string p411_g02_straight_2 {\n            get {\n                return ResourceManager.GetString(\"p411_g02_straight_2\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Puzzle Straight 03.\n        /// </summary>\n        internal static string p411_g03_straight_3 {\n            get {\n                return ResourceManager.GetString(\"p411_g03_straight_3\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Puzzle Straight 04.\n        /// </summary>\n        internal static string p411_g04_straight_4 {\n            get {\n                return ResourceManager.GetString(\"p411_g04_straight_4\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Special 03.\n        /// </summary>\n        internal static string p411_g05_straight_5 {\n            get {\n                return ResourceManager.GetString(\"p411_g05_straight_5\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Cross Corner 80 radius Up.\n        /// </summary>\n        internal static string p412_a01_turn_90_up_80m {\n            get {\n                return ResourceManager.GetString(\"p412_a01_turn_90_up_80m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Cross Corner 80 radius Left.\n        /// </summary>\n        internal static string p412_a02_turn_90_left_80m {\n            get {\n                return ResourceManager.GetString(\"p412_a02_turn_90_left_80m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Cross Corner 80 radius Right.\n        /// </summary>\n        internal static string p412_a03_turn_90_right_80m {\n            get {\n                return ResourceManager.GetString(\"p412_a03_turn_90_right_80m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Cross Corner 80 radius Down.\n        /// </summary>\n        internal static string p412_a04_turn_90_down_80m {\n            get {\n                return ResourceManager.GetString(\"p412_a04_turn_90_down_80m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Cross Corner 160 radius Up.\n        /// </summary>\n        internal static string p412_a11_turn_90_up_160m {\n            get {\n                return ResourceManager.GetString(\"p412_a11_turn_90_up_160m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Cross Corner 160 radius Left.\n        /// </summary>\n        internal static string p412_a12_turn_90_left_160m {\n            get {\n                return ResourceManager.GetString(\"p412_a12_turn_90_left_160m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Cross Corner 160 radius Right.\n        /// </summary>\n        internal static string p412_a13_turn_90_right_160m {\n            get {\n                return ResourceManager.GetString(\"p412_a13_turn_90_right_160m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Cross Corner 160 radius Down.\n        /// </summary>\n        internal static string p412_a14_turn_90_down_160m {\n            get {\n                return ResourceManager.GetString(\"p412_a14_turn_90_down_160m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Cross S-Curve Up.\n        /// </summary>\n        internal static string p412_a21_turn_s_up {\n            get {\n                return ResourceManager.GetString(\"p412_a21_turn_s_up\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Cross S-Curve Left.\n        /// </summary>\n        internal static string p412_a22_turn_s_left {\n            get {\n                return ResourceManager.GetString(\"p412_a22_turn_s_left\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Cross S-Curve Right.\n        /// </summary>\n        internal static string p412_a23_turn_s_right {\n            get {\n                return ResourceManager.GetString(\"p412_a23_turn_s_right\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Cross S-Curve Down.\n        /// </summary>\n        internal static string p412_a24_turn_s_down {\n            get {\n                return ResourceManager.GetString(\"p412_a24_turn_s_down\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Round Corner 80 radius Up.\n        /// </summary>\n        internal static string p412_b01_turn_90_up_80m {\n            get {\n                return ResourceManager.GetString(\"p412_b01_turn_90_up_80m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Round Corner 80 radius Left.\n        /// </summary>\n        internal static string p412_b02_turn_90_left_80m {\n            get {\n                return ResourceManager.GetString(\"p412_b02_turn_90_left_80m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Round Corner 80 radius Right.\n        /// </summary>\n        internal static string p412_b03_turn_90_right_80m {\n            get {\n                return ResourceManager.GetString(\"p412_b03_turn_90_right_80m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Round Corner 80 radius Down.\n        /// </summary>\n        internal static string p412_b04_turn_90_down_80m {\n            get {\n                return ResourceManager.GetString(\"p412_b04_turn_90_down_80m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Round Corner 160 radius Up.\n        /// </summary>\n        internal static string p412_b11_turn_90_up_160m {\n            get {\n                return ResourceManager.GetString(\"p412_b11_turn_90_up_160m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Round Corner 160 radius Left.\n        /// </summary>\n        internal static string p412_b12_turn_90_left_160m {\n            get {\n                return ResourceManager.GetString(\"p412_b12_turn_90_left_160m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Round Corner 160 radius Right.\n        /// </summary>\n        internal static string p412_b13_turn_90_right_160m {\n            get {\n                return ResourceManager.GetString(\"p412_b13_turn_90_right_160m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Round Corner 160 radius Down.\n        /// </summary>\n        internal static string p412_b14_turn_90_down_160m {\n            get {\n                return ResourceManager.GetString(\"p412_b14_turn_90_down_160m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Round S-Curve Up.\n        /// </summary>\n        internal static string p412_b21_turn_s_up {\n            get {\n                return ResourceManager.GetString(\"p412_b21_turn_s_up\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Round S-Curve Left.\n        /// </summary>\n        internal static string p412_b22_turn_s_left {\n            get {\n                return ResourceManager.GetString(\"p412_b22_turn_s_left\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Round S-Curve Right.\n        /// </summary>\n        internal static string p412_b23_turn_s_right {\n            get {\n                return ResourceManager.GetString(\"p412_b23_turn_s_right\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Round S-Curve Down.\n        /// </summary>\n        internal static string p412_b24_turn_s_down {\n            get {\n                return ResourceManager.GetString(\"p412_b24_turn_s_down\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Hexagon Corner 230 radius Up.\n        /// </summary>\n        internal static string p412_f01_turn_90_up_230m {\n            get {\n                return ResourceManager.GetString(\"p412_f01_turn_90_up_230m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Hexagon Corner 230 radius Left.\n        /// </summary>\n        internal static string p412_f02_turn_90_left_230m {\n            get {\n                return ResourceManager.GetString(\"p412_f02_turn_90_left_230m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Hexagon Corner 230 radius Right.\n        /// </summary>\n        internal static string p412_f03_turn_90_right_230m {\n            get {\n                return ResourceManager.GetString(\"p412_f03_turn_90_right_230m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Hexagon Corner 230 radius Down.\n        /// </summary>\n        internal static string p412_f04_turn_90_down_230m {\n            get {\n                return ResourceManager.GetString(\"p412_f04_turn_90_down_230m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Ngon Turn 90 Up.\n        /// </summary>\n        internal static string p412_f11_turn_90_up_230m {\n            get {\n                return ResourceManager.GetString(\"p412_f11_turn_90_up_230m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Ngon Turn 90 Left.\n        /// </summary>\n        internal static string p412_f12_turn_90_left_230m {\n            get {\n                return ResourceManager.GetString(\"p412_f12_turn_90_left_230m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Ngon Turn 90 Right.\n        /// </summary>\n        internal static string p412_f13_turn_90_right_230m {\n            get {\n                return ResourceManager.GetString(\"p412_f13_turn_90_right_230m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Ngon Turn 90 Down.\n        /// </summary>\n        internal static string p412_f14_turn_90_down_230m {\n            get {\n                return ResourceManager.GetString(\"p412_f14_turn_90_down_230m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Hexagon S-Curve Up.\n        /// </summary>\n        internal static string p412_f21_turn_s_up {\n            get {\n                return ResourceManager.GetString(\"p412_f21_turn_s_up\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Hexagon S-Curve Left.\n        /// </summary>\n        internal static string p412_f22_turn_s_left {\n            get {\n                return ResourceManager.GetString(\"p412_f22_turn_s_left\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Hexagon S-Curve Right.\n        /// </summary>\n        internal static string p412_f23_turn_s_right {\n            get {\n                return ResourceManager.GetString(\"p412_f23_turn_s_right\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Hexagon S-Curve Down.\n        /// </summary>\n        internal static string p412_f24_turn_s_down {\n            get {\n                return ResourceManager.GetString(\"p412_f24_turn_s_down\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hextunnel 90 turn vertical.\n        /// </summary>\n        internal static string p412A01HexTunnel90TurnVertical {\n            get {\n                return ResourceManager.GetString(\"p412A01HexTunnel90TurnVertical\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hextunnel S turn horizontal.\n        /// </summary>\n        internal static string p412A01HexTunnelSTurnHorizontal {\n            get {\n                return ResourceManager.GetString(\"p412A01HexTunnelSTurnHorizontal\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hextunnel S turn vertical.\n        /// </summary>\n        internal static string p412A01HexTunnelSTurnVertical {\n            get {\n                return ResourceManager.GetString(\"p412A01HexTunnelSTurnVertical\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hextunnel 90 turn horizontal.\n        /// </summary>\n        internal static string p412A02HexTunnel90TurnHorizontal {\n            get {\n                return ResourceManager.GetString(\"p412A02HexTunnel90TurnHorizontal\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cross Junction T Horizontal.\n        /// </summary>\n        internal static string p413_a01_junction_t_horizontal {\n            get {\n                return ResourceManager.GetString(\"p413_a01_junction_t_horizontal\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cross Junction T Vertical.\n        /// </summary>\n        internal static string p413_a02_junction_t_vertical {\n            get {\n                return ResourceManager.GetString(\"p413_a02_junction_t_vertical\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Round T-Junction Horizontal.\n        /// </summary>\n        internal static string p413_b01_junction_t_horizontal {\n            get {\n                return ResourceManager.GetString(\"p413_b01_junction_t_horizontal\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Round X-Junction Horizontal.\n        /// </summary>\n        internal static string p413_b02_junction_t_vertical {\n            get {\n                return ResourceManager.GetString(\"p413_b02_junction_t_vertical\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Bread T-Junction Horizontal.\n        /// </summary>\n        internal static string p413_c01_junction_t_horizontal {\n            get {\n                return ResourceManager.GetString(\"p413_c01_junction_t_horizontal\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Bread X-Junction Horizontal.\n        /// </summary>\n        internal static string p413_c01_junction_x_horizontal {\n            get {\n                return ResourceManager.GetString(\"p413_c01_junction_x_horizontal\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Rectangle Junction T Horizontal.\n        /// </summary>\n        internal static string p413_d01_junction_t_horizontal {\n            get {\n                return ResourceManager.GetString(\"p413_d01_junction_t_horizontal\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Ngon Junction T Vertical.\n        /// </summary>\n        internal static string p413_d02_junction_t_vertical {\n            get {\n                return ResourceManager.GetString(\"p413_d02_junction_t_vertical\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Rectangle Junction X Horizontal.\n        /// </summary>\n        internal static string p413_d03_junction_x_horizontal {\n            get {\n                return ResourceManager.GetString(\"p413_d03_junction_x_horizontal\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Ngon Junction X Vertical.\n        /// </summary>\n        internal static string p413_d04_junction_x_vertical {\n            get {\n                return ResourceManager.GetString(\"p413_d04_junction_x_vertical\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Puzzle 6-way Junction.\n        /// </summary>\n        internal static string p413_g01_junction_6axes {\n            get {\n                return ResourceManager.GetString(\"p413_g01_junction_6axes\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Cross Connector.\n        /// </summary>\n        internal static string p414_a02_entrance_60m {\n            get {\n                return ResourceManager.GetString(\"p414_a02_entrance_60m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Round Connector.\n        /// </summary>\n        internal static string p414_b02_entrance_60m {\n            get {\n                return ResourceManager.GetString(\"p414_b02_entrance_60m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Bread Connector.\n        /// </summary>\n        internal static string p414_c01_entrance_60m {\n            get {\n                return ResourceManager.GetString(\"p414_c01_entrance_60m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Octagon Connector.\n        /// </summary>\n        internal static string p414_d01_entrance_60m {\n            get {\n                return ResourceManager.GetString(\"p414_d01_entrance_60m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Special Connector.\n        /// </summary>\n        internal static string p414_e01_entrance_60m {\n            get {\n                return ResourceManager.GetString(\"p414_e01_entrance_60m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Entrance Special 01 60m.\n        /// </summary>\n        internal static string p414_f01_entrance_60m {\n            get {\n                return ResourceManager.GetString(\"p414_f01_entrance_60m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Entrance Special 02 60m.\n        /// </summary>\n        internal static string p414_g01_entrance_60m {\n            get {\n                return ResourceManager.GetString(\"p414_g01_entrance_60m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Puzzle Connector.\n        /// </summary>\n        internal static string p414_g02_entrance_60m {\n            get {\n                return ResourceManager.GetString(\"p414_g02_entrance_60m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Cross Doorframe.\n        /// </summary>\n        internal static string p415_a01_doorcase {\n            get {\n                return ResourceManager.GetString(\"p415_a01_doorcase\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Cross Door.\n        /// </summary>\n        internal static string p415_a02_door {\n            get {\n                return ResourceManager.GetString(\"p415_a02_door\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Round Doorframe.\n        /// </summary>\n        internal static string p415_b01_doorcase {\n            get {\n                return ResourceManager.GetString(\"p415_b01_doorcase\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Doorframe Straight A.\n        /// </summary>\n        internal static string p415_c01_door1 {\n            get {\n                return ResourceManager.GetString(\"p415_c01_door1\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Doorframe Narrow A.\n        /// </summary>\n        internal static string p415_c01_door2 {\n            get {\n                return ResourceManager.GetString(\"p415_c01_door2\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Doorframe Narrow B.\n        /// </summary>\n        internal static string p415_c01_door3 {\n            get {\n                return ResourceManager.GetString(\"p415_c01_door3\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Doorframe Straight B.\n        /// </summary>\n        internal static string p415_c01_door4 {\n            get {\n                return ResourceManager.GetString(\"p415_c01_door4\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Bread Doorframe.\n        /// </summary>\n        internal static string p415_c01_doorcase {\n            get {\n                return ResourceManager.GetString(\"p415_c01_doorcase\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Bread Door 01.\n        /// </summary>\n        internal static string p415_c02_door1 {\n            get {\n                return ResourceManager.GetString(\"p415_c02_door1\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Bread Door 02 Left.\n        /// </summary>\n        internal static string p415_c03_door2_a {\n            get {\n                return ResourceManager.GetString(\"p415_c03_door2_a\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Bread Door 02 Right.\n        /// </summary>\n        internal static string p415_c03_door2_b {\n            get {\n                return ResourceManager.GetString(\"p415_c03_door2_b\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Bread Door 03.\n        /// </summary>\n        internal static string p415_c04_door3 {\n            get {\n                return ResourceManager.GetString(\"p415_c04_door3\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Octagon Doorframe.\n        /// </summary>\n        internal static string p415_d01_doorcase {\n            get {\n                return ResourceManager.GetString(\"p415_d01_doorcase\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Octagon Door 01.\n        /// </summary>\n        internal static string p415_d02_door1 {\n            get {\n                return ResourceManager.GetString(\"p415_d02_door1\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Octagon Door 02 Left.\n        /// </summary>\n        internal static string p415_d03_door2_a {\n            get {\n                return ResourceManager.GetString(\"p415_d03_door2_a\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tunnel Octagon Door 02 Right.\n        /// </summary>\n        internal static string p415_d03_door2_b {\n            get {\n                return ResourceManager.GetString(\"p415_d03_door2_b\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Pipe straight long.\n        /// </summary>\n        internal static string p420A01PipeStraightLong {\n            get {\n                return ResourceManager.GetString(\"p420A01PipeStraightLong\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Pipe straight medium.\n        /// </summary>\n        internal static string p420A02PipeStraightMedium {\n            get {\n                return ResourceManager.GetString(\"p420A02PipeStraightMedium\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Pipe straight tiny.\n        /// </summary>\n        internal static string p420A03PipeStraightTiny {\n            get {\n                return ResourceManager.GetString(\"p420A03PipeStraightTiny\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Pipe T junction.\n        /// </summary>\n        internal static string p420A04PipeTJunction {\n            get {\n                return ResourceManager.GetString(\"p420A04PipeTJunction\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Pipe turn.\n        /// </summary>\n        internal static string p420A05PipeTurn {\n            get {\n                return ResourceManager.GetString(\"p420A05PipeTurn\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Pipe Straight 80 meters.\n        /// </summary>\n        internal static string p421_a01_pipe_straight_80m {\n            get {\n                return ResourceManager.GetString(\"p421_a01_pipe_straight_80m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Pipe Straight 40 meters.\n        /// </summary>\n        internal static string p421_a02_pipe_straight_40m {\n            get {\n                return ResourceManager.GetString(\"p421_a02_pipe_straight_40m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Pipe Straight 10 meters.\n        /// </summary>\n        internal static string p421_a03_pipe_straight_10m {\n            get {\n                return ResourceManager.GetString(\"p421_a03_pipe_straight_10m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Pipe Corner.\n        /// </summary>\n        internal static string p422_a01_pipe_turn_90 {\n            get {\n                return ResourceManager.GetString(\"p422_a01_pipe_turn_90\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cooling device wall 340x400.\n        /// </summary>\n        internal static string p4221_a01_cooling_device_wall_340x400 {\n            get {\n                return ResourceManager.GetString(\"p4221_a01_cooling_device_wall_340x400\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Pipes connector.\n        /// </summary>\n        internal static string p4222_a01_pipes_connector {\n            get {\n                return ResourceManager.GetString(\"p4222_a01_pipes_connector\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Open pipe.\n        /// </summary>\n        internal static string p4223_a01_open_pipe {\n            get {\n                return ResourceManager.GetString(\"p4223_a01_open_pipe\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Pipe T-Junction.\n        /// </summary>\n        internal static string p423_a01_pipe_junction {\n            get {\n                return ResourceManager.GetString(\"p423_a01_pipe_junction\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Pipe Base.\n        /// </summary>\n        internal static string p424_a01_pipe_base {\n            get {\n                return ResourceManager.GetString(\"p424_a01_pipe_base\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Passage 10 meters.\n        /// </summary>\n        internal static string p430_a01_passage_10m {\n            get {\n                return ResourceManager.GetString(\"p430_a01_passage_10m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Passage 160 meters.\n        /// </summary>\n        internal static string p430_a02_passage_40m {\n            get {\n                return ResourceManager.GetString(\"p430_a02_passage_40m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Billboard 1.\n        /// </summary>\n        internal static string p511_a01_billboard {\n            get {\n                return ResourceManager.GetString(\"p511_a01_billboard\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Billboard 2.\n        /// </summary>\n        internal static string p511_a02_billboard {\n            get {\n                return ResourceManager.GetString(\"p511_a02_billboard\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Billboard 3.\n        /// </summary>\n        internal static string p511_a03_billboard {\n            get {\n                return ResourceManager.GetString(\"p511_a03_billboard\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Billboard 4.\n        /// </summary>\n        internal static string p511_a04_billboard {\n            get {\n                return ResourceManager.GetString(\"p511_a04_billboard\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Billboard 5.\n        /// </summary>\n        internal static string p511_a05_billboard {\n            get {\n                return ResourceManager.GetString(\"p511_a05_billboard\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Billboard 6.\n        /// </summary>\n        internal static string p511_a06_billboard {\n            get {\n                return ResourceManager.GetString(\"p511_a06_billboard\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Billboard 7.\n        /// </summary>\n        internal static string p511_a07_billboard {\n            get {\n                return ResourceManager.GetString(\"p511_a07_billboard\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Billboard 8.\n        /// </summary>\n        internal static string p511_a08_billboard {\n            get {\n                return ResourceManager.GetString(\"p511_a08_billboard\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Billboard 9.\n        /// </summary>\n        internal static string p511_a09_billboard {\n            get {\n                return ResourceManager.GetString(\"p511_a09_billboard\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Billboard 10.\n        /// </summary>\n        internal static string p511_a10_billboard {\n            get {\n                return ResourceManager.GetString(\"p511_a10_billboard\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Billboard 11.\n        /// </summary>\n        internal static string p511_a11_billboard {\n            get {\n                return ResourceManager.GetString(\"p511_a11_billboard\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Billboard 12.\n        /// </summary>\n        internal static string p511_a12_billboard {\n            get {\n                return ResourceManager.GetString(\"p511_a12_billboard\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Billboard 13.\n        /// </summary>\n        internal static string p511_a13_billboard {\n            get {\n                return ResourceManager.GetString(\"p511_a13_billboard\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Billboard 14.\n        /// </summary>\n        internal static string p511_a14_billboard {\n            get {\n                return ResourceManager.GetString(\"p511_a14_billboard\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Billboard 15.\n        /// </summary>\n        internal static string p511_a15_billboard {\n            get {\n                return ResourceManager.GetString(\"p511_a15_billboard\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Billboard 16.\n        /// </summary>\n        internal static string p511_a16_billboard {\n            get {\n                return ResourceManager.GetString(\"p511_a16_billboard\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to p511_a17_billboard_portrait_1.\n        /// </summary>\n        internal static string p511_a17_billboard_portrait_1 {\n            get {\n                return ResourceManager.GetString(\"p511_a17_billboard_portrait_1\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to p511_a17_billboard_portrait_2.\n        /// </summary>\n        internal static string p511_a17_billboard_portrait_2 {\n            get {\n                return ResourceManager.GetString(\"p511_a17_billboard_portrait_2\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Large Billboard 18.\n        /// </summary>\n        internal static string p511_a18_billboard {\n            get {\n                return ResourceManager.GetString(\"p511_a18_billboard\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Large Billboard 19.\n        /// </summary>\n        internal static string p511_a19_billboard {\n            get {\n                return ResourceManager.GetString(\"p511_a19_billboard\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Light 1.\n        /// </summary>\n        internal static string p521_a01_light1 {\n            get {\n                return ResourceManager.GetString(\"p521_a01_light1\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Light 2.\n        /// </summary>\n        internal static string p521_a02_light2 {\n            get {\n                return ResourceManager.GetString(\"p521_a02_light2\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Light 3.\n        /// </summary>\n        internal static string p521_a03_light3 {\n            get {\n                return ResourceManager.GetString(\"p521_a03_light3\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Light 4.\n        /// </summary>\n        internal static string p521_a04_light4 {\n            get {\n                return ResourceManager.GetString(\"p521_a04_light4\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sign 1.\n        /// </summary>\n        internal static string p531_a01_sign1 {\n            get {\n                return ResourceManager.GetString(\"p531_a01_sign1\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sign 2.\n        /// </summary>\n        internal static string p531_a02_sign2 {\n            get {\n                return ResourceManager.GetString(\"p531_a02_sign2\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sign 3.\n        /// </summary>\n        internal static string p531_a03_sign3 {\n            get {\n                return ResourceManager.GetString(\"p531_a03_sign3\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sign 4.\n        /// </summary>\n        internal static string p531_a04_sign4 {\n            get {\n                return ResourceManager.GetString(\"p531_a04_sign4\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sign 5.\n        /// </summary>\n        internal static string p531_a05_sign5 {\n            get {\n                return ResourceManager.GetString(\"p531_a05_sign5\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sign 6.\n        /// </summary>\n        internal static string p531_a06_sign6 {\n            get {\n                return ResourceManager.GetString(\"p531_a06_sign6\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sign 7.\n        /// </summary>\n        internal static string p531_a07_sign7 {\n            get {\n                return ResourceManager.GetString(\"p531_a07_sign7\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sign 8.\n        /// </summary>\n        internal static string p531_a08_sign8 {\n            get {\n                return ResourceManager.GetString(\"p531_a08_sign8\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sign 9.\n        /// </summary>\n        internal static string p531_a09_sign9 {\n            get {\n                return ResourceManager.GetString(\"p531_a09_sign9\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sign 10.\n        /// </summary>\n        internal static string p531_a10_sign10 {\n            get {\n                return ResourceManager.GetString(\"p531_a10_sign10\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sign 11.\n        /// </summary>\n        internal static string p531_a11_sign11 {\n            get {\n                return ResourceManager.GetString(\"p531_a11_sign11\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sign 12.\n        /// </summary>\n        internal static string p531_a12_sign12 {\n            get {\n                return ResourceManager.GetString(\"p531_a12_sign12\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to faction sign.\n        /// </summary>\n        internal static string p531_b_faction {\n            get {\n                return ResourceManager.GetString(\"p531_b_faction\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to faction sign holo.\n        /// </summary>\n        internal static string p531_b_faction_holo {\n            get {\n                return ResourceManager.GetString(\"p531_b_faction_holo\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Administrative Area.\n        /// </summary>\n        internal static string p531_c_administrative_area {\n            get {\n                return ResourceManager.GetString(\"p531_c_administrative_area\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Armory.\n        /// </summary>\n        internal static string p531_c_armory {\n            get {\n                return ResourceManager.GetString(\"p531_c_armory\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Left.\n        /// </summary>\n        internal static string p531_c_arrow_l {\n            get {\n                return ResourceManager.GetString(\"p531_c_arrow_l\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Right.\n        /// </summary>\n        internal static string p531_c_arrow_r {\n            get {\n                return ResourceManager.GetString(\"p531_c_arrow_r\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Forward.\n        /// </summary>\n        internal static string p531_c_arrow_str {\n            get {\n                return ResourceManager.GetString(\"p531_c_arrow_str\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cargo Bay.\n        /// </summary>\n        internal static string p531_c_cargo_bay {\n            get {\n                return ResourceManager.GetString(\"p531_c_cargo_bay\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Command Center.\n        /// </summary>\n        internal static string p531_c_command_center {\n            get {\n                return ResourceManager.GetString(\"p531_c_command_center\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Commercial Area.\n        /// </summary>\n        internal static string p531_c_commercial_area {\n            get {\n                return ResourceManager.GetString(\"p531_c_commercial_area\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Communications.\n        /// </summary>\n        internal static string p531_c_communications {\n            get {\n                return ResourceManager.GetString(\"p531_c_communications\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Defenses.\n        /// </summary>\n        internal static string p531_c_defenses {\n            get {\n                return ResourceManager.GetString(\"p531_c_defenses\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Docks.\n        /// </summary>\n        internal static string p531_c_docks {\n            get {\n                return ResourceManager.GetString(\"p531_c_docks\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Emergency Exit.\n        /// </summary>\n        internal static string p531_c_emergency_exit {\n            get {\n                return ResourceManager.GetString(\"p531_c_emergency_exit\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Engineering Area.\n        /// </summary>\n        internal static string p531_c_engineering_area {\n            get {\n                return ResourceManager.GetString(\"p531_c_engineering_area\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Exit.\n        /// </summary>\n        internal static string p531_c_exit {\n            get {\n                return ResourceManager.GetString(\"p531_c_exit\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Experimental Labs.\n        /// </summary>\n        internal static string p531_c_experimental_labs {\n            get {\n                return ResourceManager.GetString(\"p531_c_experimental_labs\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Foundry.\n        /// </summary>\n        internal static string p531_c_foundry {\n            get {\n                return ResourceManager.GetString(\"p531_c_foundry\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Habitat.\n        /// </summary>\n        internal static string p531_c_habitats {\n            get {\n                return ResourceManager.GetString(\"p531_c_habitats\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hangar.\n        /// </summary>\n        internal static string p531_c_hangars {\n            get {\n                return ResourceManager.GetString(\"p531_c_hangars\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Industrial Area.\n        /// </summary>\n        internal static string p531_c_industrial_area {\n            get {\n                return ResourceManager.GetString(\"p531_c_industrial_area\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Landing Bay.\n        /// </summary>\n        internal static string p531_c_landing_bay {\n            get {\n                return ResourceManager.GetString(\"p531_c_landing_bay\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Maintenance.\n        /// </summary>\n        internal static string p531_c_maintenance {\n            get {\n                return ResourceManager.GetString(\"p531_c_maintenance\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Military Area.\n        /// </summary>\n        internal static string p531_c_military_area {\n            get {\n                return ResourceManager.GetString(\"p531_c_military_area\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Mines.\n        /// </summary>\n        internal static string p531_c_mines {\n            get {\n                return ResourceManager.GetString(\"p531_c_mines\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ore Processing.\n        /// </summary>\n        internal static string p531_c_ore_processing {\n            get {\n                return ResourceManager.GetString(\"p531_c_ore_processing\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Outer Area.\n        /// </summary>\n        internal static string p531_c_outer_area {\n            get {\n                return ResourceManager.GetString(\"p531_c_outer_area\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Prison.\n        /// </summary>\n        internal static string p531_c_prison {\n            get {\n                return ResourceManager.GetString(\"p531_c_prison\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Public Area.\n        /// </summary>\n        internal static string p531_c_public_area {\n            get {\n                return ResourceManager.GetString(\"p531_c_public_area\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Reactor.\n        /// </summary>\n        internal static string p531_c_reactor {\n            get {\n                return ResourceManager.GetString(\"p531_c_reactor\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Research.\n        /// </summary>\n        internal static string p531_c_research {\n            get {\n                return ResourceManager.GetString(\"p531_c_research\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Restricted Area.\n        /// </summary>\n        internal static string p531_c_restricted_area {\n            get {\n                return ResourceManager.GetString(\"p531_c_restricted_area\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Security.\n        /// </summary>\n        internal static string p531_c_security {\n            get {\n                return ResourceManager.GetString(\"p531_c_security\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sign.\n        /// </summary>\n        internal static string p531_c_sign {\n            get {\n                return ResourceManager.GetString(\"p531_c_sign\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Storage.\n        /// </summary>\n        internal static string p531_c_storage {\n            get {\n                return ResourceManager.GetString(\"p531_c_storage\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Technical Area.\n        /// </summary>\n        internal static string p531_c_technical_area {\n            get {\n                return ResourceManager.GetString(\"p531_c_technical_area\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Trade Port.\n        /// </summary>\n        internal static string p531_c_trade_port {\n            get {\n                return ResourceManager.GetString(\"p531_c_trade_port\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to p531_d_medic_cross.\n        /// </summary>\n        internal static string p531_d_medic_cross {\n            get {\n                return ResourceManager.GetString(\"p531_d_medic_cross\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Escape pod.\n        /// </summary>\n        internal static string p541_escape_pod {\n            get {\n                return ResourceManager.GetString(\"p541_escape_pod\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Escape pod base.\n        /// </summary>\n        internal static string p541_escape_pod_base {\n            get {\n                return ResourceManager.GetString(\"p541_escape_pod_base\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to p541_screen_A.\n        /// </summary>\n        internal static string p541_screen_A {\n            get {\n                return ResourceManager.GetString(\"p541_screen_A\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to p541_screen_B.\n        /// </summary>\n        internal static string p541_screen_B {\n            get {\n                return ResourceManager.GetString(\"p541_screen_B\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to p541_terminal_A.\n        /// </summary>\n        internal static string p541_terminal_A {\n            get {\n                return ResourceManager.GetString(\"p541_terminal_A\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ventilator.\n        /// </summary>\n        internal static string p541_ventilator {\n            get {\n                return ResourceManager.GetString(\"p541_ventilator\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ventilator body.\n        /// </summary>\n        internal static string p541_ventilator_body {\n            get {\n                return ResourceManager.GetString(\"p541_ventilator_body\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ventilator propeller.\n        /// </summary>\n        internal static string p541_ventilator_propeller {\n            get {\n                return ResourceManager.GetString(\"p541_ventilator_propeller\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Leaking Steam White.\n        /// </summary>\n        internal static string p551_a01_particles {\n            get {\n                return ResourceManager.GetString(\"p551_a01_particles\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Leaking Steam Grey.\n        /// </summary>\n        internal static string p551_b01_particles {\n            get {\n                return ResourceManager.GetString(\"p551_b01_particles\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Leaking Steam Black.\n        /// </summary>\n        internal static string p551_c01_particles {\n            get {\n                return ResourceManager.GetString(\"p551_c01_particles\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Dust.\n        /// </summary>\n        internal static string p551_d01_particles {\n            get {\n                return ResourceManager.GetString(\"p551_d01_particles\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sound 1.\n        /// </summary>\n        internal static string p561_a01_sound {\n            get {\n                return ResourceManager.GetString(\"p561_a01_sound\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sound 2.\n        /// </summary>\n        internal static string p561_b01_sound {\n            get {\n                return ResourceManager.GetString(\"p561_b01_sound\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sound 3.\n        /// </summary>\n        internal static string p561_c01_sound {\n            get {\n                return ResourceManager.GetString(\"p561_c01_sound\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sound 4.\n        /// </summary>\n        internal static string p561_d01_sound {\n            get {\n                return ResourceManager.GetString(\"p561_d01_sound\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Trafic Sign 01.\n        /// </summary>\n        internal static string p571_a01_traffic_sign {\n            get {\n                return ResourceManager.GetString(\"p571_a01_traffic_sign\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Trafic Sign 02.\n        /// </summary>\n        internal static string p571_b01_traffic_sign {\n            get {\n                return ResourceManager.GetString(\"p571_b01_traffic_sign\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Trafic Box Sign 01.\n        /// </summary>\n        internal static string p571_box01_traffic_sign {\n            get {\n                return ResourceManager.GetString(\"p571_box01_traffic_sign\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Trafic Box Sign 02.\n        /// </summary>\n        internal static string p571_box02_traffic_sign {\n            get {\n                return ResourceManager.GetString(\"p571_box02_traffic_sign\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Trafic Sign 03.\n        /// </summary>\n        internal static string p571_c01_traffic_sign {\n            get {\n                return ResourceManager.GetString(\"p571_c01_traffic_sign\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Trafic Sign 04.\n        /// </summary>\n        internal static string p571_d01_traffic_sign {\n            get {\n                return ResourceManager.GetString(\"p571_d01_traffic_sign\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Trafic Sign 05.\n        /// </summary>\n        internal static string p571_e01_traffic_sign {\n            get {\n                return ResourceManager.GetString(\"p571_e01_traffic_sign\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Trafic Sign 06.\n        /// </summary>\n        internal static string p571_f01_traffic_sign {\n            get {\n                return ResourceManager.GetString(\"p571_f01_traffic_sign\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Trafic Sign 07.\n        /// </summary>\n        internal static string p571_g01_traffic_sign {\n            get {\n                return ResourceManager.GetString(\"p571_g01_traffic_sign\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Trafic Sign 08.\n        /// </summary>\n        internal static string p571_h01_traffic_sign {\n            get {\n                return ResourceManager.GetString(\"p571_h01_traffic_sign\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Trafic Sign 09.\n        /// </summary>\n        internal static string p571_i01_traffic_sign {\n            get {\n                return ResourceManager.GetString(\"p571_i01_traffic_sign\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Trafic Sign 10.\n        /// </summary>\n        internal static string p571_j01_traffic_sign {\n            get {\n                return ResourceManager.GetString(\"p571_j01_traffic_sign\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Trafic Sign 11.\n        /// </summary>\n        internal static string p571_k01_traffic_sign {\n            get {\n                return ResourceManager.GetString(\"p571_k01_traffic_sign\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Trafic Sign 12.\n        /// </summary>\n        internal static string p571_l01_traffic_sign {\n            get {\n                return ResourceManager.GetString(\"p571_l01_traffic_sign\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Barrel Biohazard 1.\n        /// </summary>\n        internal static string p581_a01_barrel_biohazard {\n            get {\n                return ResourceManager.GetString(\"p581_a01_barrel_biohazard\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Barrel Biohazard 2.\n        /// </summary>\n        internal static string p581_a01_barrel_biohazard_2 {\n            get {\n                return ResourceManager.GetString(\"p581_a01_barrel_biohazard_2\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Nuke Barrel 1.\n        /// </summary>\n        internal static string p581_a01_nuke_barrel {\n            get {\n                return ResourceManager.GetString(\"p581_a01_nuke_barrel\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Nuke Barrel 3.\n        /// </summary>\n        internal static string p581_a01_nuke_barrel_1 {\n            get {\n                return ResourceManager.GetString(\"p581_a01_nuke_barrel_1\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to O2 barrel.\n        /// </summary>\n        internal static string p581_a01_o2_barrel {\n            get {\n                return ResourceManager.GetString(\"p581_a01_o2_barrel\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Explosive Barrel 1.\n        /// </summary>\n        internal static string p581_a01_red_barrel {\n            get {\n                return ResourceManager.GetString(\"p581_a01_red_barrel\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Plasma Barrel 1.\n        /// </summary>\n        internal static string p581_a01_simple_barrel {\n            get {\n                return ResourceManager.GetString(\"p581_a01_simple_barrel\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Nuke Barrel 2.\n        /// </summary>\n        internal static string p581_a01_simple_barrel_2 {\n            get {\n                return ResourceManager.GetString(\"p581_a01_simple_barrel_2\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fuel Barrel 2.\n        /// </summary>\n        internal static string p581_a01_simple_barrel_3 {\n            get {\n                return ResourceManager.GetString(\"p581_a01_simple_barrel_3\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Asteroid part A.\n        /// </summary>\n        internal static string p611_asteroid_part_A {\n            get {\n                return ResourceManager.GetString(\"p611_asteroid_part_A\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Asteroid part B.\n        /// </summary>\n        internal static string p611_asteroid_part_B {\n            get {\n                return ResourceManager.GetString(\"p611_asteroid_part_B\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to PgDown.\n        /// </summary>\n        internal static string PageDown {\n            get {\n                return ResourceManager.GetString(\"PageDown\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to PgUp.\n        /// </summary>\n        internal static string PageUp {\n            get {\n                return ResourceManager.GetString(\"PageUp\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Particle dummies.\n        /// </summary>\n        internal static string ParticleDummies {\n            get {\n                return ResourceManager.GetString(\"ParticleDummies\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Particle effect.\n        /// </summary>\n        internal static string ParticleEffect {\n            get {\n                return ResourceManager.GetString(\"ParticleEffect\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Passive.\n        /// </summary>\n        internal static string Passive {\n            get {\n                return ResourceManager.GetString(\"Passive\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Password.\n        /// </summary>\n        internal static string Password {\n            get {\n                return ResourceManager.GetString(\"Password\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Paste.\n        /// </summary>\n        internal static string Paste {\n            get {\n                return ResourceManager.GetString(\"Paste\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Patriarch Caradoc.\n        /// </summary>\n        internal static string PATRIARCH_CARADOC {\n            get {\n                return ResourceManager.GetString(\"PATRIARCH_CARADOC\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Patriarch Dagonet.\n        /// </summary>\n        internal static string PATRIARCH_DAGONET {\n            get {\n                return ResourceManager.GetString(\"PATRIARCH_DAGONET\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Patriarch Lamorak.\n        /// </summary>\n        internal static string PATRIARCH_LAMORAK {\n            get {\n                return ResourceManager.GetString(\"PATRIARCH_LAMORAK\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Patrol mode.\n        /// </summary>\n        internal static string PatrolMode {\n            get {\n                return ResourceManager.GetString(\"PatrolMode\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to 512x512x512\n        ///Splitted sphere.\n        /// </summary>\n        internal static string PerfectSphereSplitted_512x512x512 {\n            get {\n                return ResourceManager.GetString(\"PerfectSphereSplitted_512x512x512\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to 512x512x512\n        ///Sphere with few tunnels.\n        /// </summary>\n        internal static string PerfectSphereWithFewTunnels_512x512x512 {\n            get {\n                return ResourceManager.GetString(\"PerfectSphereWithFewTunnels_512x512x512\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to 512x512x512\n        ///Sphere with big tunnels 1.\n        /// </summary>\n        internal static string PerfectSphereWithMassiveTunnels_512x512x512 {\n            get {\n                return ResourceManager.GetString(\"PerfectSphereWithMassiveTunnels_512x512x512\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to 512x512x512\n        ///Sphere with big tunnels 2.\n        /// </summary>\n        internal static string PerfectSphereWithMassiveTunnels2_512x512x512 {\n            get {\n                return ResourceManager.GetString(\"PerfectSphereWithMassiveTunnels2_512x512x512\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to 512x512x512\n        ///Sphere with tunnels 1.\n        /// </summary>\n        internal static string PerfectSphereWithRaceTunnel_512x512x512 {\n            get {\n                return ResourceManager.GetString(\"PerfectSphereWithRaceTunnel_512x512x512\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to 512x512x512\n        ///Sphere with tunnels 2.\n        /// </summary>\n        internal static string PerfectSphereWithRaceTunnel2_512x512x512 {\n            get {\n                return ResourceManager.GetString(\"PerfectSphereWithRaceTunnel2_512x512x512\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Performance Enhancing Medicine Active.\n        /// </summary>\n        internal static string PerformanceEnhancingMedicineActive {\n            get {\n                return ResourceManager.GetString(\"PerformanceEnhancingMedicineActive\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to LONG LOADING TIMES ARE DUE TO MINER WARS&apos;.\n        /// </summary>\n        internal static string PerfWarning1_0 {\n            get {\n                return ResourceManager.GetString(\"PerfWarning1_0\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to FULLY DESTRUCTIBLE AND PERSISTENT ENVIRONMENTS.\n        /// </summary>\n        internal static string PerfWarning2_0 {\n            get {\n                return ResourceManager.GetString(\"PerfWarning2_0\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to TO PERFORM THESE FEATURES WE&apos;VE HAD TO BUILD.\n        /// </summary>\n        internal static string PerfWarning3_0 {\n            get {\n                return ResourceManager.GetString(\"PerfWarning3_0\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to OUR OWN.\n        /// </summary>\n        internal static string PerfWarning4_0 {\n            get {\n                return ResourceManager.GetString(\"PerfWarning4_0\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to VOXEL.\n        /// </summary>\n        internal static string PerfWarning4_1 {\n            get {\n                return ResourceManager.GetString(\"PerfWarning4_1\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to ENGINE.\n        /// </summary>\n        internal static string PerfWarning4_2 {\n            get {\n                return ResourceManager.GetString(\"PerfWarning4_2\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to THIS TYPE OF GEOMETRY NATURALLY NEEDS A.\n        /// </summary>\n        internal static string PerfWarning5_0 {\n            get {\n                return ResourceManager.GetString(\"PerfWarning5_0\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to POWERFUL CPU AND GPU.\n        /// </summary>\n        internal static string PerfWarning6_0 {\n            get {\n                return ResourceManager.GetString(\"PerfWarning6_0\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Taking in progress.\n        /// </summary>\n        internal static string PickingInProgress {\n            get {\n                return ResourceManager.GetString(\"PickingInProgress\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ping-pong.\n        /// </summary>\n        internal static string PingPong {\n            get {\n                return ResourceManager.GetString(\"PingPong\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Bundle of pipes.\n        /// </summary>\n        internal static string pipe_bundle {\n            get {\n                return ResourceManager.GetString(\"pipe_bundle\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Pirate.\n        /// </summary>\n        internal static string Pirate {\n            get {\n                return ResourceManager.GetString(\"Pirate\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Pirate base at Damien dust field.\n        /// </summary>\n        internal static string PIRATE_BASE {\n            get {\n                return ResourceManager.GetString(\"PIRATE_BASE\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Small pirate base.\n        /// </summary>\n        internal static string PIRATE_BASE_1 {\n            get {\n                return ResourceManager.GetString(\"PIRATE_BASE_1\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Destroy the station\n        ///.\n        /// </summary>\n        internal static string PIRATE_BASE_1_Description {\n            get {\n                return ResourceManager.GetString(\"PIRATE_BASE_1_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string PIRATE_BASE_ALLY_ARRIVED_Description {\n            get {\n                return ResourceManager.GetString(\"PIRATE_BASE_ALLY_ARRIVED_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Allies have arrived.\n        /// </summary>\n        internal static string PIRATE_BASE_ALLY_ARRIVED_Name {\n            get {\n                return ResourceManager.GetString(\"PIRATE_BASE_ALLY_ARRIVED_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Pirate Base 1 64x64x64.\n        /// </summary>\n        internal static string Pirate_Base_Asteroid_1 {\n            get {\n                return ResourceManager.GetString(\"Pirate_Base_Asteroid_1\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Pirate Base 2 128x128x128.\n        /// </summary>\n        internal static string Pirate_Base_Asteroid_2 {\n            get {\n                return ResourceManager.GetString(\"Pirate_Base_Asteroid_2\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Pirate Base 3 64x128x64.\n        /// </summary>\n        internal static string Pirate_Base_Asteroid_3 {\n            get {\n                return ResourceManager.GetString(\"Pirate_Base_Asteroid_3\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Defend the generator from incoming Russian commandoes..\n        /// </summary>\n        internal static string PIRATE_BASE_DEFEND_Description {\n            get {\n                return ResourceManager.GetString(\"PIRATE_BASE_DEFEND_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Protect the generator.\n        /// </summary>\n        internal static string PIRATE_BASE_DEFEND_Name {\n            get {\n                return ResourceManager.GetString(\"PIRATE_BASE_DEFEND_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The enemy forces are coming; help the pirates defend their base. Build up to six turrets on asteroids to defend the cave entrance..\n        /// </summary>\n        internal static string PIRATE_BASE_DEFENSE_SETUP_Description {\n            get {\n                return ResourceManager.GetString(\"PIRATE_BASE_DEFENSE_SETUP_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Place turrets outside the base.\n        /// </summary>\n        internal static string PIRATE_BASE_DEFENSE_SETUP_Name {\n            get {\n                return ResourceManager.GetString(\"PIRATE_BASE_DEFENSE_SETUP_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Make contact with the pirates and get more information about the unknown artifact.\n        ///.\n        /// </summary>\n        internal static string PIRATE_BASE_Description {\n            get {\n                return ResourceManager.GetString(\"PIRATE_BASE_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string PIRATE_BASE_GET_TURRETS_Description {\n            get {\n                return ResourceManager.GetString(\"PIRATE_BASE_GET_TURRETS_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Get turrets.\n        /// </summary>\n        internal static string PIRATE_BASE_GET_TURRETS_Name {\n            get {\n                return ResourceManager.GetString(\"PIRATE_BASE_GET_TURRETS_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string PIRATE_BASE_PREPARE_FOR_DEFENSE_Description {\n            get {\n                return ResourceManager.GetString(\"PIRATE_BASE_PREPARE_FOR_DEFENSE_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Prepare for the attack.\n        /// </summary>\n        internal static string PIRATE_BASE_PREPARE_FOR_DEFENSE_Name {\n            get {\n                return ResourceManager.GetString(\"PIRATE_BASE_PREPARE_FOR_DEFENSE_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Damien Dust Field – the shattered remains of what was once known as the planet Mars. The\n        ///Solar Event of 2070 destroyed that planet and reduced it to dust, shards, and ashes, as well\n        ///as thousands of asteroids. Today this dense asteroid field offers spectacular visuals thanks\n        ///to the dust particles that create a unique form of sunbeam refraction. No known human\n        ///settlements are reported in the area, apart from illegal pirate bases and some rumored\n        ///separatist and rebel colonies..\n        /// </summary>\n        internal static string PIRATE_BASE_SectorDescription {\n            get {\n                return ResourceManager.GetString(\"PIRATE_BASE_SectorDescription\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to DAMIEN DUST FIELD PIRATE BASE.\n        /// </summary>\n        internal static string PIRATE_BASE_SectorName {\n            get {\n                return ResourceManager.GetString(\"PIRATE_BASE_SectorName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string PIRATE_BASE_SPEAK_WITH_PIRATES_Description {\n            get {\n                return ResourceManager.GetString(\"PIRATE_BASE_SPEAK_WITH_PIRATES_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Speak to the captain.\n        /// </summary>\n        internal static string PIRATE_BASE_SPEAK_WITH_PIRATES_Name {\n            get {\n                return ResourceManager.GetString(\"PIRATE_BASE_SPEAK_WITH_PIRATES_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Find the pirate base hidden in the asteroid field..\n        /// </summary>\n        internal static string PIRATE_BASE_TRAVEL_TO_BASE_Description {\n            get {\n                return ResourceManager.GetString(\"PIRATE_BASE_TRAVEL_TO_BASE_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Find the pirate base.\n        /// </summary>\n        internal static string PIRATE_BASE_TRAVEL_TO_BASE_Name {\n            get {\n                return ResourceManager.GetString(\"PIRATE_BASE_TRAVEL_TO_BASE_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Pirate base cave.\n        /// </summary>\n        internal static string piratebase_export {\n            get {\n                return ResourceManager.GetString(\"piratebase_export\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You have failed in protecting the generator.\n        /// </summary>\n        internal static string PirateBaseGeneratorFailMessage {\n            get {\n                return ResourceManager.GetString(\"PirateBaseGeneratorFailMessage\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to PirateBaseStaticAsteroid_A_1000m.\n        /// </summary>\n        internal static string PirateBaseStaticAsteroid_A_1000m {\n            get {\n                return ResourceManager.GetString(\"PirateBaseStaticAsteroid_A_1000m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to PirateBaseStaticAsteroid_A_5000m_1.\n        /// </summary>\n        internal static string PirateBaseStaticAsteroid_A_5000m_1 {\n            get {\n                return ResourceManager.GetString(\"PirateBaseStaticAsteroid_A_5000m_1\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to PirateBaseStaticAsteroid_A_5000m_2.\n        /// </summary>\n        internal static string PirateBaseStaticAsteroid_A_5000m_2 {\n            get {\n                return ResourceManager.GetString(\"PirateBaseStaticAsteroid_A_5000m_2\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Pirate captain Clegg.\n        /// </summary>\n        internal static string PirateCaptainClegg {\n            get {\n                return ResourceManager.GetString(\"PirateCaptainClegg\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Pirate captain Gorg.\n        /// </summary>\n        internal static string PirateCaptainGorg {\n            get {\n                return ResourceManager.GetString(\"PirateCaptainGorg\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Pirate captain Vane.\n        /// </summary>\n        internal static string PirateCaptainVane {\n            get {\n                return ResourceManager.GetString(\"PirateCaptainVane\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You have obtained $50,000..\n        /// </summary>\n        internal static string PiratesRewardObtained {\n            get {\n                return ResourceManager.GetString(\"PiratesRewardObtained\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Placement.\n        /// </summary>\n        internal static string Placement {\n            get {\n                return ResourceManager.GetString(\"Placement\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Placement in progress.\n        /// </summary>\n        internal static string PlacementInProgress {\n            get {\n                return ResourceManager.GetString(\"PlacementInProgress\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Placing the bomb….\n        /// </summary>\n        internal static string PlacingBomb {\n            get {\n                return ResourceManager.GetString(\"PlacingBomb\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Placing explosives.\n        /// </summary>\n        internal static string PlacingExplosives {\n            get {\n                return ResourceManager.GetString(\"PlacingExplosives\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Planting in progress.\n        /// </summary>\n        internal static string PlantingInProgress {\n            get {\n                return ResourceManager.GetString(\"PlantingInProgress\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Platinum.\n        /// </summary>\n        internal static string Platinum_01 {\n            get {\n                return ResourceManager.GetString(\"Platinum_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Play demo.\n        /// </summary>\n        internal static string PlayDemo {\n            get {\n                return ResourceManager.GetString(\"PlayDemo\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Player health indestructible.\n        /// </summary>\n        internal static string PlayerHealthIndestructible {\n            get {\n                return ResourceManager.GetString(\"PlayerHealthIndestructible\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Player name.\n        /// </summary>\n        internal static string PlayerName {\n            get {\n                return ResourceManager.GetString(\"PlayerName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Player not found..\n        /// </summary>\n        internal static string PlayerNotFound {\n            get {\n                return ResourceManager.GetString(\"PlayerNotFound\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Player ship indestructible.\n        /// </summary>\n        internal static string PlayerShipIndestructible {\n            get {\n                return ResourceManager.GetString(\"PlayerShipIndestructible\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Player start.\n        /// </summary>\n        internal static string PlayerStart {\n            get {\n                return ResourceManager.GetString(\"PlayerStart\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Player ship position:     .\n        /// </summary>\n        internal static string PlayerStartPosition {\n            get {\n                return ResourceManager.GetString(\"PlayerStartPosition\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Playground.\n        /// </summary>\n        internal static string PLAYGROUND {\n            get {\n                return ResourceManager.GetString(\"PLAYGROUND\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Multiplayer.\n        /// </summary>\n        internal static string PlaySandbox {\n            get {\n                return ResourceManager.GetString(\"PlaySandbox\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Singleplayer / Co-op.\n        /// </summary>\n        internal static string PlayStory {\n            get {\n                return ResourceManager.GetString(\"PlayStory\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Please select a valid faction (other than ‘None’).\n        /// </summary>\n        internal static string PleaseSelectValidFaction {\n            get {\n                return ResourceManager.GetString(\"PleaseSelectValidFaction\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Please try again..\n        /// </summary>\n        internal static string PleaseTryAgain {\n            get {\n                return ResourceManager.GetString(\"PleaseTryAgain\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Plutonium Mines 256x256x256.\n        /// </summary>\n        internal static string Plutonium_Mines {\n            get {\n                return ResourceManager.GetString(\"Plutonium_Mines\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to {0} units of super-efficient plutonium safely stored.\n        /// </summary>\n        internal static string PlutoniumStored {\n            get {\n                return ResourceManager.GetString(\"PlutoniumStored\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to PointLight.\n        /// </summary>\n        internal static string PointLight {\n            get {\n                return ResourceManager.GetString(\"PointLight\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Portable turrets.\n        /// </summary>\n        internal static string PortableTurrets {\n            get {\n                return ResourceManager.GetString(\"PortableTurrets\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Position.\n        /// </summary>\n        internal static string Position {\n            get {\n                return ResourceManager.GetString(\"Position\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Prefab Container.\n        /// </summary>\n        internal static string PrefabContainer {\n            get {\n                return ResourceManager.GetString(\"PrefabContainer\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Prefab container already contains foundation factory.\n        /// </summary>\n        internal static string PrefabContainerAlreadyContainsFoundationFactory {\n            get {\n                return ResourceManager.GetString(\"PrefabContainerAlreadyContainsFoundationFactory\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Prefab container.\n        /// </summary>\n        internal static string PrefabContainerContextMenuCaption {\n            get {\n                return ResourceManager.GetString(\"PrefabContainerContextMenuCaption\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Prefab.\n        /// </summary>\n        internal static string PrefabContextMenuCaption {\n            get {\n                return ResourceManager.GetString(\"PrefabContextMenuCaption\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Prefab materials.\n        /// </summary>\n        internal static string PrefabMaterials {\n            get {\n                return ResourceManager.GetString(\"PrefabMaterials\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Prefabs.\n        /// </summary>\n        internal static string Prefabs {\n            get {\n                return ResourceManager.GetString(\"Prefabs\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Press {0} to deactivate drill.\n        /// </summary>\n        internal static string PressMToDeactivateDrill {\n            get {\n                return ResourceManager.GetString(\"PressMToDeactivateDrill\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hold {0} to board the ship.\n        /// </summary>\n        internal static string PressToBoardShip {\n            get {\n                return ResourceManager.GetString(\"PressToBoardShip\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hold {0} to build a {1} here.\n        /// </summary>\n        internal static string PressToBuildHere {\n            get {\n                return ResourceManager.GetString(\"PressToBuildHere\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hold {0} to build the transmitter.\n        /// </summary>\n        internal static string PressToBuildTransmitter {\n            get {\n                return ResourceManager.GetString(\"PressToBuildTransmitter\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hold {0} to build a turret here..\n        /// </summary>\n        internal static string PressToBuildTurret {\n            get {\n                return ResourceManager.GetString(\"PressToBuildTurret\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hold {0} to collect cargo.\n        /// </summary>\n        internal static string PressToCollectCargo {\n            get {\n                return ResourceManager.GetString(\"PressToCollectCargo\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hold {0} to collect the reward.\n        /// </summary>\n        internal static string PressToCollectReward {\n            get {\n                return ResourceManager.GetString(\"PressToCollectReward\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hold {0} to deactivate the nuclear warhead.\n        /// </summary>\n        internal static string PressToDeactivateNuclearHead {\n            get {\n                return ResourceManager.GetString(\"PressToDeactivateNuclearHead\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hold {0} to download the blueprints.\n        /// </summary>\n        internal static string PressToDownloadBluePrints {\n            get {\n                return ResourceManager.GetString(\"PressToDownloadBluePrints\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hold {0} to download data.\n        /// </summary>\n        internal static string PressToDownloadData {\n            get {\n                return ResourceManager.GetString(\"PressToDownloadData\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hold {0} to hand out your equipment.\n        /// </summary>\n        internal static string PressToGiveEquipment {\n            get {\n                return ResourceManager.GetString(\"PressToGiveEquipment\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hold {0} to hack.\n        /// </summary>\n        internal static string PressToHack {\n            get {\n                return ResourceManager.GetString(\"PressToHack\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hold {0} to pick up items.\n        /// </summary>\n        internal static string PressToPickItems {\n            get {\n                return ResourceManager.GetString(\"PressToPickItems\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hold {0} to pick up samples.\n        /// </summary>\n        internal static string PressToPickSamples {\n            get {\n                return ResourceManager.GetString(\"PressToPickSamples\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hold {0} to place the bomb.\n        /// </summary>\n        internal static string PressToPlaceBomb {\n            get {\n                return ResourceManager.GetString(\"PressToPlaceBomb\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hold {0} to place the detector.\n        /// </summary>\n        internal static string PressToPlaceDetector {\n            get {\n                return ResourceManager.GetString(\"PressToPlaceDetector\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hold {0} to place the transmitter device.\n        /// </summary>\n        internal static string PressToPlaceDevice {\n            get {\n                return ResourceManager.GetString(\"PressToPlaceDevice\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hold {0} to place explosives.\n        /// </summary>\n        internal static string PressToPlaceExplosive {\n            get {\n                return ResourceManager.GetString(\"PressToPlaceExplosive\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hold {0} to redirect energy.\n        /// </summary>\n        internal static string PressToRedirectEnergy {\n            get {\n                return ResourceManager.GetString(\"PressToRedirectEnergy\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hold {0} to repair the gas pipe.\n        /// </summary>\n        internal static string PressToRepairGasPipe {\n            get {\n                return ResourceManager.GetString(\"PressToRepairGasPipe\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hold {0} to fix the radiation leak.\n        /// </summary>\n        internal static string PressToRepairRadiation {\n            get {\n                return ResourceManager.GetString(\"PressToRepairRadiation\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hold {0} to repair the turret.\n        /// </summary>\n        internal static string PressToRepairTurret {\n            get {\n                return ResourceManager.GetString(\"PressToRepairTurret\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Press {0} to launch the attack..\n        /// </summary>\n        internal static string PressToSkipTimer {\n            get {\n                return ResourceManager.GetString(\"PressToSkipTimer\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hold {0} to start generator.\n        /// </summary>\n        internal static string PressToStartGenerator {\n            get {\n                return ResourceManager.GetString(\"PressToStartGenerator\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hold {0} to start the transmission.\n        /// </summary>\n        internal static string PressToStartTransmission {\n            get {\n                return ResourceManager.GetString(\"PressToStartTransmission\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hold {0} to take the biomachine parts.\n        /// </summary>\n        internal static string PressToTakeBio {\n            get {\n                return ResourceManager.GetString(\"PressToTakeBio\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hold {0} to take cargo.\n        /// </summary>\n        internal static string PressToTakeCargo {\n            get {\n                return ResourceManager.GetString(\"PressToTakeCargo\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hold {0} to take the component.\n        /// </summary>\n        internal static string PressToTakeComponent {\n            get {\n                return ResourceManager.GetString(\"PressToTakeComponent\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hold {0} to take the transmitter.\n        /// </summary>\n        internal static string PressToTakeTransmitter {\n            get {\n                return ResourceManager.GetString(\"PressToTakeTransmitter\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hold {0} to take the turrets.\n        /// </summary>\n        internal static string PressToTakeTurrets {\n            get {\n                return ResourceManager.GetString(\"PressToTakeTurrets\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Previous secondary cam.\n        /// </summary>\n        internal static string PreviousCamera {\n            get {\n                return ResourceManager.GetString(\"PreviousCamera\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Previous target.\n        /// </summary>\n        internal static string PreviousTarget {\n            get {\n                return ResourceManager.GetString(\"PreviousTarget\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Price coefficient.\n        /// </summary>\n        internal static string PriceCoeficient {\n            get {\n                return ResourceManager.GetString(\"PriceCoeficient\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Prison.\n        /// </summary>\n        internal static string prison {\n            get {\n                return ResourceManager.GetString(\"prison\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Prison cell.\n        /// </summary>\n        internal static string PrisonCell {\n            get {\n                return ResourceManager.GetString(\"PrisonCell\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Probe placement.\n        /// </summary>\n        internal static string ProbePlacement {\n            get {\n                return ResourceManager.GetString(\"ProbePlacement\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Profile.\n        /// </summary>\n        internal static string Profile {\n            get {\n                return ResourceManager.GetString(\"Profile\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Repairing.\n        /// </summary>\n        internal static string ProgressRepairing {\n            get {\n                return ResourceManager.GetString(\"ProgressRepairing\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Protect Sapho’s bridge.\n        /// </summary>\n        internal static string ProtectSaphosCommandCenter {\n            get {\n                return ResourceManager.GetString(\"ProtectSaphosCommandCenter\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Purchase cheats at www.minerwars.com/Store.\n        /// </summary>\n        internal static string PurchaseCheats {\n            get {\n                return ResourceManager.GetString(\"PurchaseCheats\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Quick zoom.\n        /// </summary>\n        internal static string QuickZoom {\n            get {\n                return ResourceManager.GetString(\"QuickZoom\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Press F1 during gameplay to show help and current controls..\n        /// </summary>\n        internal static string QuoteOfTheDay00 {\n            get {\n                return ResourceManager.GetString(\"QuoteOfTheDay00\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The Templars are the protectors of righteousness in the Solar System,\n        ///counting up to 314 guardians..\n        /// </summary>\n        internal static string QuoteOfTheDay01 {\n            get {\n                return ResourceManager.GetString(\"QuoteOfTheDay01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The Solar Event is the consequence of failure in Project Genesis,\n        ///the gigantic positron generator..\n        /// </summary>\n        internal static string QuoteOfTheDay02 {\n            get {\n                return ResourceManager.GetString(\"QuoteOfTheDay02\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Maulerian Eugenics is an ideology of creating a genetically perfected human race,\n        ///originally conceived by the scientist Gregor Fitzgerald Mauler..\n        /// </summary>\n        internal static string QuoteOfTheDay03 {\n            get {\n                return ResourceManager.GetString(\"QuoteOfTheDay03\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The official OmniCorp motto is inscribed within three conjoined hexagons\n        ///signifying the “3 P’s” – Progress, Profit, Prosperity..\n        /// </summary>\n        internal static string QuoteOfTheDay04 {\n            get {\n                return ResourceManager.GetString(\"QuoteOfTheDay04\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Apollo was only sixteen during the Solar Event.\n        ///His brother took care of him, taking him on many mining and survey missions..\n        /// </summary>\n        internal static string QuoteOfTheDay05 {\n            get {\n                return ResourceManager.GetString(\"QuoteOfTheDay05\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Madelyn first met the brothers in 2072 on a mission for FSRE on an outer belt survey mission..\n        /// </summary>\n        internal static string QuoteOfTheDay06 {\n            get {\n                return ResourceManager.GetString(\"QuoteOfTheDay06\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Watch carefully for cargo boxes. They can provide you with extra equipment and ammo!.\n        /// </summary>\n        internal static string QuoteOfTheDay07 {\n            get {\n                return ResourceManager.GetString(\"QuoteOfTheDay07\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Missiles are most efficient against large groups of enemies\n        ///thanks to the damage radius caused by the explosion!.\n        /// </summary>\n        internal static string QuoteOfTheDay08 {\n            get {\n                return ResourceManager.GetString(\"QuoteOfTheDay08\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Utilize the destructible environment while in combat\n        ///and reveal secret paths or hidden areas during a mission!.\n        /// </summary>\n        internal static string QuoteOfTheDay09 {\n            get {\n                return ResourceManager.GetString(\"QuoteOfTheDay09\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Harvesting ores from asteroids will provide you with materials\n        ///that are tradeable by vendors..\n        /// </summary>\n        internal static string QuoteOfTheDay10 {\n            get {\n                return ResourceManager.GetString(\"QuoteOfTheDay10\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to GPS will help you navigate to your next objective..\n        /// </summary>\n        internal static string QuoteOfTheDay11 {\n            get {\n                return ResourceManager.GetString(\"QuoteOfTheDay11\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Security hubs allow you to disable or control cameras, turrets, doors\n        ///and other dynamic structures remotely..\n        /// </summary>\n        internal static string QuoteOfTheDay12 {\n            get {\n                return ResourceManager.GetString(\"QuoteOfTheDay12\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Use drones to get through tight corridors and other places your ship is unable to fit..\n        /// </summary>\n        internal static string QuoteOfTheDay13 {\n            get {\n                return ResourceManager.GetString(\"QuoteOfTheDay13\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Your enemies do not detect you while your engines are turned off.\n        ///Use this in multiplayer to fool your opponents..\n        /// </summary>\n        internal static string QuoteOfTheDay14 {\n            get {\n                return ResourceManager.GetString(\"QuoteOfTheDay14\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Every game session is in co-op mode by default.\n        ///If you don’t want others to join you, disable co-op in menu..\n        /// </summary>\n        internal static string QuoteOfTheDay15 {\n            get {\n                return ResourceManager.GetString(\"QuoteOfTheDay15\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Afterburner increases your speed temporarily and recharges automatically over time.\n        ///Beware of increased fuel consumption!.\n        /// </summary>\n        internal static string QuoteOfTheDay16 {\n            get {\n                return ResourceManager.GetString(\"QuoteOfTheDay16\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to If you run out of ammo, you can always use your drill to crush your enemies!.\n        /// </summary>\n        internal static string QuoteOfTheDay17 {\n            get {\n                return ResourceManager.GetString(\"QuoteOfTheDay17\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Use your mothership to travel quickly across the Solar System..\n        /// </summary>\n        internal static string QuoteOfTheDay18 {\n            get {\n                return ResourceManager.GetString(\"QuoteOfTheDay18\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Some objects/terminals are usable from close distance directly,\n        ///that is even without hacking a security hub..\n        /// </summary>\n        internal static string QuoteOfTheDay19 {\n            get {\n                return ResourceManager.GetString(\"QuoteOfTheDay19\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Play multiplayer with your friends to show them who’s boss!.\n        /// </summary>\n        internal static string QuoteOfTheDay20 {\n            get {\n                return ResourceManager.GetString(\"QuoteOfTheDay20\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Use the environment properly to hide and take cover\n        ///against large groups of enemy fighters!.\n        /// </summary>\n        internal static string QuoteOfTheDay21 {\n            get {\n                return ResourceManager.GetString(\"QuoteOfTheDay21\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Use the editor to create your own custom multiplayer maps, space stations,\n        ///asteroids and other awesome structures!.\n        /// </summary>\n        internal static string QuoteOfTheDay22 {\n            get {\n                return ResourceManager.GetString(\"QuoteOfTheDay22\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Some enemies are tougher than others…\n        ///Try to learn the weak and strong points of each ship type!.\n        /// </summary>\n        internal static string QuoteOfTheDay23 {\n            get {\n                return ResourceManager.GetString(\"QuoteOfTheDay23\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to If you don’t like the cockpit,\n        ///you can always switch to third-person mode..\n        /// </summary>\n        internal static string QuoteOfTheDay24 {\n            get {\n                return ResourceManager.GetString(\"QuoteOfTheDay24\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Solar wind will hit you hard if you do not manage to find cover\n        ///behind asteroids or other large objects quickly enough!.\n        /// </summary>\n        internal static string QuoteOfTheDay25 {\n            get {\n                return ResourceManager.GetString(\"QuoteOfTheDay25\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Smart mines will automatically chase enemies once they get close enough..\n        /// </summary>\n        internal static string QuoteOfTheDay26 {\n            get {\n                return ResourceManager.GetString(\"QuoteOfTheDay26\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Use holograms to distract your enemies\n        ///and relieve the pressure of engaging enemies for a short time..\n        /// </summary>\n        internal static string QuoteOfTheDay27 {\n            get {\n                return ResourceManager.GetString(\"QuoteOfTheDay27\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You can use drones to explore dangerous and radioactive areas\n        ///without putting yourself in harm..\n        /// </summary>\n        internal static string QuoteOfTheDay28 {\n            get {\n                return ResourceManager.GetString(\"QuoteOfTheDay28\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You may shake off your enemies by turning off engines;\n        ///however, you’ll still be prone to harm and unable to react promptly..\n        /// </summary>\n        internal static string QuoteOfTheDay29 {\n            get {\n                return ResourceManager.GetString(\"QuoteOfTheDay29\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to To maximize your efficiency while mining,\n        ///try harvesting from a hole drilled in the material..\n        /// </summary>\n        internal static string QuoteOfTheDay30 {\n            get {\n                return ResourceManager.GetString(\"QuoteOfTheDay30\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to If a co-op game becomes a little out of hand, try playing multiplayer deathmatch!.\n        /// </summary>\n        internal static string QuoteOfTheDay31 {\n            get {\n                return ResourceManager.GetString(\"QuoteOfTheDay31\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You can turn off most notifications and warnings in Game options..\n        /// </summary>\n        internal static string QuoteOfTheDay32 {\n            get {\n                return ResourceManager.GetString(\"QuoteOfTheDay32\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Try playing both with and without autoleveling\n        ///to find out which better suits your playing style..\n        /// </summary>\n        internal static string QuoteOfTheDay33 {\n            get {\n                return ResourceManager.GetString(\"QuoteOfTheDay33\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Travel long distances for free by speeding up and turning off the engines..\n        /// </summary>\n        internal static string QuoteOfTheDay34 {\n            get {\n                return ResourceManager.GetString(\"QuoteOfTheDay34\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Race Oponent.\n        /// </summary>\n        internal static string RaceOpponent {\n            get {\n                return ResourceManager.GetString(\"RaceOpponent\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Racing fan.\n        /// </summary>\n        internal static string RacingFan {\n            get {\n                return ResourceManager.GetString(\"RacingFan\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Radar I.\n        /// </summary>\n        internal static string Radar1 {\n            get {\n                return ResourceManager.GetString(\"Radar1\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Radar II.\n        /// </summary>\n        internal static string Radar2 {\n            get {\n                return ResourceManager.GetString(\"Radar2\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Radar III.\n        /// </summary>\n        internal static string Radar3 {\n            get {\n                return ResourceManager.GetString(\"Radar3\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Radar jammer detected.\n        /// </summary>\n        internal static string RadarJammed {\n            get {\n                return ResourceManager.GetString(\"RadarJammed\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Radar type.\n        /// </summary>\n        internal static string RadarType {\n            get {\n                return ResourceManager.GetString(\"RadarType\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Normal3D.\n        /// </summary>\n        internal static string RadarTypeNormal3D {\n            get {\n                return ResourceManager.GetString(\"RadarTypeNormal3D\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Player2D.\n        /// </summary>\n        internal static string RadarTypePlayer2D {\n            get {\n                return ResourceManager.GetString(\"RadarTypePlayer2D\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Solar2D.\n        /// </summary>\n        internal static string RadarTypeSolar2D {\n            get {\n                return ResourceManager.GetString(\"RadarTypeSolar2D\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Radiation leak.\n        /// </summary>\n        internal static string RadiationLeak {\n            get {\n                return ResourceManager.GetString(\"RadiationLeak\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Radioactivity.\n        /// </summary>\n        internal static string RadioactivityInfluenceSphereType {\n            get {\n                return ResourceManager.GetString(\"RadioactivityInfluenceSphereType\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Radius.\n        /// </summary>\n        internal static string Radius {\n            get {\n                return ResourceManager.GetString(\"Radius\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Radius max.\n        /// </summary>\n        internal static string RadiusMax {\n            get {\n                return ResourceManager.GetString(\"RadiusMax\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Max radius must be bigger than min radius.\n        /// </summary>\n        internal static string RadiusMaxLowerThanRadiusMin {\n            get {\n                return ResourceManager.GetString(\"RadiusMaxLowerThanRadiusMin\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Radius min.\n        /// </summary>\n        internal static string RadiusMin {\n            get {\n                return ResourceManager.GetString(\"RadiusMin\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Raider.\n        /// </summary>\n        internal static string Raider {\n            get {\n                return ResourceManager.GetString(\"Raider\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Raider leader.\n        /// </summary>\n        internal static string RaiderLeader {\n            get {\n                return ResourceManager.GetString(\"RaiderLeader\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Raider navigator.\n        /// </summary>\n        internal static string RaiderNavigator {\n            get {\n                return ResourceManager.GetString(\"RaiderNavigator\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Rail gun.\n        /// </summary>\n        internal static string rail_gun {\n            get {\n                return ResourceManager.GetString(\"rail_gun\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Random.\n        /// </summary>\n        internal static string Random {\n            get {\n                return ResourceManager.GetString(\"Random\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to RandomFlashing.\n        /// </summary>\n        internal static string RandomFlashing {\n            get {\n                return ResourceManager.GetString(\"RandomFlashing\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Toggle secondary cam.\n        /// </summary>\n        internal static string RearCam {\n            get {\n                return ResourceManager.GetString(\"RearCam\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Rear-view mirror.\n        /// </summary>\n        internal static string RearViewMirror {\n            get {\n                return ResourceManager.GetString(\"RearViewMirror\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Recommended: {0}.\n        /// </summary>\n        internal static string RecommendedAspectRatio {\n            get {\n                return ResourceManager.GetString(\"RecommendedAspectRatio\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Red.\n        /// </summary>\n        internal static string Red {\n            get {\n                return ResourceManager.GetString(\"Red\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to * Red-colored properties are not the same!.\n        /// </summary>\n        internal static string RedColoredPropertiesAreNotSame {\n            get {\n                return ResourceManager.GetString(\"RedColoredPropertiesAreNotSame\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Redirect energy.\n        /// </summary>\n        internal static string RedirectEnergy {\n            get {\n                return ResourceManager.GetString(\"RedirectEnergy\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Redirecting….\n        /// </summary>\n        internal static string RedirectionInProgress {\n            get {\n                return ResourceManager.GetString(\"RedirectionInProgress\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to reef_ast.\n        /// </summary>\n        internal static string reef_ast {\n            get {\n                return ResourceManager.GetString(\"reef_ast\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Refill time (sec).\n        /// </summary>\n        internal static string RefillTime {\n            get {\n                return ResourceManager.GetString(\"RefillTime\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Refresh.\n        /// </summary>\n        internal static string Refresh {\n            get {\n                return ResourceManager.GetString(\"Refresh\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Register.\n        /// </summary>\n        internal static string Register {\n            get {\n                return ResourceManager.GetString(\"Register\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Registration.\n        /// </summary>\n        internal static string Registration {\n            get {\n                return ResourceManager.GetString(\"Registration\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fill and submit this form in order to create your Miner Wars account.\n        /// </summary>\n        internal static string RegistrationInfo {\n            get {\n                return ResourceManager.GetString(\"RegistrationInfo\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Registration in progress… please wait..\n        /// </summary>\n        internal static string RegistrationInProgressPleaseWait {\n            get {\n                return ResourceManager.GetString(\"RegistrationInProgressPleaseWait\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Reichstag.\n        /// </summary>\n        internal static string REICHSTAG {\n            get {\n                return ResourceManager.GetString(\"REICHSTAG\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to ReichStag 1 128x128x128.\n        /// </summary>\n        internal static string ReichStag_1 {\n            get {\n                return ResourceManager.GetString(\"ReichStag_1\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to ReichStag 2 256x128x256.\n        /// </summary>\n        internal static string ReichStag_2 {\n            get {\n                return ResourceManager.GetString(\"ReichStag_2\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Reichstag I.\n        /// </summary>\n        internal static string REICHSTAG_A {\n            get {\n                return ResourceManager.GetString(\"REICHSTAG_A\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Meet FOR representatives in Reichstag\n        ///.\n        /// </summary>\n        internal static string REICHSTAG_A_Description {\n            get {\n                return ResourceManager.GetString(\"REICHSTAG_A_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Get to the main building and seek Colonel von Stauffenberg!.\n        /// </summary>\n        internal static string REICHSTAG_A_GET_TO_MAIN_BUILDING_Description {\n            get {\n                return ResourceManager.GetString(\"REICHSTAG_A_GET_TO_MAIN_BUILDING_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Get to the main building.\n        /// </summary>\n        internal static string REICHSTAG_A_GET_TO_MAIN_BUILDING_Name {\n            get {\n                return ResourceManager.GetString(\"REICHSTAG_A_GET_TO_MAIN_BUILDING_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string REICHSTAG_A_MEET_COLONEL_Description {\n            get {\n                return ResourceManager.GetString(\"REICHSTAG_A_MEET_COLONEL_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Meet Colonel von Stauffenberg.\n        /// </summary>\n        internal static string REICHSTAG_A_MEET_COLONEL_Name {\n            get {\n                return ResourceManager.GetString(\"REICHSTAG_A_MEET_COLONEL_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Reichstag II.\n        /// </summary>\n        internal static string REICHSTAG_C {\n            get {\n                return ResourceManager.GetString(\"REICHSTAG_C\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string REICHSTAG_C_CHANGESHIP_Description {\n            get {\n                return ResourceManager.GetString(\"REICHSTAG_C_CHANGESHIP_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Change the ship’s affiliation to Fourth Reich.\n        /// </summary>\n        internal static string REICHSTAG_C_CHANGESHIP_Name {\n            get {\n                return ResourceManager.GetString(\"REICHSTAG_C_CHANGESHIP_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Meet FOR representatives in Reichstag\n        ///.\n        /// </summary>\n        internal static string REICHSTAG_C_Description {\n            get {\n                return ResourceManager.GetString(\"REICHSTAG_C_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Talk to the Colonel about your deal..\n        /// </summary>\n        internal static string REICHSTAG_C_FOR_Description {\n            get {\n                return ResourceManager.GetString(\"REICHSTAG_C_FOR_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Meet the colonel.\n        /// </summary>\n        internal static string REICHSTAG_C_FOR_Name {\n            get {\n                return ResourceManager.GetString(\"REICHSTAG_C_FOR_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string REICHSTAG_C_GO_TO_HANGAR_Description {\n            get {\n                return ResourceManager.GetString(\"REICHSTAG_C_GO_TO_HANGAR_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Board the transporter.\n        /// </summary>\n        internal static string REICHSTAG_C_GO_TO_HANGAR_Name {\n            get {\n                return ResourceManager.GetString(\"REICHSTAG_C_GO_TO_HANGAR_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Go to the shipyard and pick up your ship.\n        /// </summary>\n        internal static string REICHSTAG_C_GO_TO_SHIPYARD_Description {\n            get {\n                return ResourceManager.GetString(\"REICHSTAG_C_GO_TO_SHIPYARD_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Proceed to the shipyard.\n        /// </summary>\n        internal static string REICHSTAG_C_GO_TO_SHIPYARD_Name {\n            get {\n                return ResourceManager.GetString(\"REICHSTAG_C_GO_TO_SHIPYARD_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string REICHSTAG_C_MOTHERSHIP_Description {\n            get {\n                return ResourceManager.GetString(\"REICHSTAG_C_MOTHERSHIP_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Board the White Wolves mothership.\n        /// </summary>\n        internal static string REICHSTAG_C_MOTHERSHIP_Name {\n            get {\n                return ResourceManager.GetString(\"REICHSTAG_C_MOTHERSHIP_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string REICHSTAG_C_WEAPONS_Description {\n            get {\n                return ResourceManager.GetString(\"REICHSTAG_C_WEAPONS_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Arm yourself.\n        /// </summary>\n        internal static string REICHSTAG_C_WEAPONS_Name {\n            get {\n                return ResourceManager.GetString(\"REICHSTAG_C_WEAPONS_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Reichstag – an extravagant Reichist symbol, architectural masterpiece, and capital of the \n        ///whole Fourth Reich. Reichstag accommodates hundreds of governmental buildings and \n        ///houses over one third of the FOR Space Forces. Although open to foreign merchants and \n        ///bureaus, it does not host many visitors – since most people either sympathize with the \n        ///Reich, and have joined it, or despise it and refuse to even trade with it..\n        /// </summary>\n        internal static string REICHSTAG_SectorDescription {\n            get {\n                return ResourceManager.GetString(\"REICHSTAG_SectorDescription\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to REICHSTAG.\n        /// </summary>\n        internal static string REICHSTAG_SectorName {\n            get {\n                return ResourceManager.GetString(\"REICHSTAG_SectorName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You’ve placed {0} turrets, {1} remaining..\n        /// </summary>\n        internal static string RemainingTurrets {\n            get {\n                return ResourceManager.GetString(\"RemainingTurrets\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Remember.\n        /// </summary>\n        internal static string Remember {\n            get {\n                return ResourceManager.GetString(\"Remember\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Remember me.\n        /// </summary>\n        internal static string RememberMe {\n            get {\n                return ResourceManager.GetString(\"RememberMe\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Press {0} to detonate all {1} bombs.\n        /// </summary>\n        internal static string RemoteBombHelp {\n            get {\n                return ResourceManager.GetString(\"RemoteBombHelp\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Remote bomb.\n        /// </summary>\n        internal static string RemoteBombHud {\n            get {\n                return ResourceManager.GetString(\"RemoteBombHud\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Remote camera.\n        /// </summary>\n        internal static string RemoteCameraHud {\n            get {\n                return ResourceManager.GetString(\"RemoteCameraHud\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cam {0}.\n        /// </summary>\n        internal static string RemoteCameraNo {\n            get {\n                return ResourceManager.GetString(\"RemoteCameraNo\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cam {0}: Hold {1} to look around.\n        /// </summary>\n        internal static string RemoteCameraNoRotate {\n            get {\n                return ResourceManager.GetString(\"RemoteCameraNoRotate\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hold {0} to look around with the camera.\n        /// </summary>\n        internal static string RemoteCameraRotate {\n            get {\n                return ResourceManager.GetString(\"RemoteCameraRotate\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Remove all.\n        /// </summary>\n        internal static string RemoveAll {\n            get {\n                return ResourceManager.GetString(\"RemoveAll\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Remove all blueprints.\n        /// </summary>\n        internal static string RemoveAllBlueprints {\n            get {\n                return ResourceManager.GetString(\"RemoveAllBlueprints\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Remove all voxel hands.\n        /// </summary>\n        internal static string RemoveAllVoxelHands {\n            get {\n                return ResourceManager.GetString(\"RemoveAllVoxelHands\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Remove voxels.\n        /// </summary>\n        internal static string RemoveVoxels {\n            get {\n                return ResourceManager.GetString(\"RemoveVoxels\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Rename.\n        /// </summary>\n        internal static string Rename {\n            get {\n                return ResourceManager.GetString(\"Rename\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Rename checkpoint.\n        /// </summary>\n        internal static string RenameCheckpoint {\n            get {\n                return ResourceManager.GetString(\"RenameCheckpoint\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Render quality.\n        /// </summary>\n        internal static string RenderQuality {\n            get {\n                return ResourceManager.GetString(\"RenderQuality\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Extreme.\n        /// </summary>\n        internal static string RenderQualityExtreme {\n            get {\n                return ResourceManager.GetString(\"RenderQualityExtreme\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to High.\n        /// </summary>\n        internal static string RenderQualityHigh {\n            get {\n                return ResourceManager.GetString(\"RenderQualityHigh\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Very Ugly.\n        /// </summary>\n        internal static string RenderQualityLow {\n            get {\n                return ResourceManager.GetString(\"RenderQualityLow\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Normal.\n        /// </summary>\n        internal static string RenderQualityNormal {\n            get {\n                return ResourceManager.GetString(\"RenderQualityNormal\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Repair.\n        /// </summary>\n        internal static string Repair {\n            get {\n                return ResourceManager.GetString(\"Repair\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Repair damaged turrets.\n        /// </summary>\n        internal static string RepairDamagedTurrets {\n            get {\n                return ResourceManager.GetString(\"RepairDamagedTurrets\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to REPAIR KIT | Repairs ship instantly. 1% ship’s \n        ///health for 1% item’s amount. Ship \n        ///can carry more repair kits.\n        /// </summary>\n        internal static string RepairKit {\n            get {\n                return ResourceManager.GetString(\"RepairKit\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Requires Energy.\n        /// </summary>\n        internal static string RequiresEnergy {\n            get {\n                return ResourceManager.GetString(\"RequiresEnergy\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Research vessel Eurydice.\n        /// </summary>\n        internal static string RESEARCH_VESSEL {\n            get {\n                return ResourceManager.GetString(\"RESEARCH_VESSEL\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Check the secured cargo.\n        /// </summary>\n        internal static string RESEARCH_VESSEL_CHECK_CARGO {\n            get {\n                return ResourceManager.GetString(\"RESEARCH_VESSEL_CHECK_CARGO\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Check the door.\n        /// </summary>\n        internal static string RESEARCH_VESSEL_CHECK_CARGO_AGAIN {\n            get {\n                return ResourceManager.GetString(\"RESEARCH_VESSEL_CHECK_CARGO_AGAIN\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to \n        ///.\n        /// </summary>\n        internal static string RESEARCH_VESSEL_CHECK_CARGO_AGAIN_Description {\n            get {\n                return ResourceManager.GetString(\"RESEARCH_VESSEL_CHECK_CARGO_AGAIN_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The first component should be there.\n        ///.\n        /// </summary>\n        internal static string RESEARCH_VESSEL_CHECK_CARGO_Description {\n            get {\n                return ResourceManager.GetString(\"RESEARCH_VESSEL_CHECK_CARGO_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to It’s locked, check the command room.\n        /// </summary>\n        internal static string RESEARCH_VESSEL_CHECK_COMMAND_ROOM {\n            get {\n                return ResourceManager.GetString(\"RESEARCH_VESSEL_CHECK_COMMAND_ROOM\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to \n        ///.\n        /// </summary>\n        internal static string RESEARCH_VESSEL_CHECK_COMMAND_ROOM_Description {\n            get {\n                return ResourceManager.GetString(\"RESEARCH_VESSEL_CHECK_COMMAND_ROOM_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Check the drill room.\n        /// </summary>\n        internal static string RESEARCH_VESSEL_CHECK_DRILL_ROOM {\n            get {\n                return ResourceManager.GetString(\"RESEARCH_VESSEL_CHECK_DRILL_ROOM\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to \n        ///.\n        /// </summary>\n        internal static string RESEARCH_VESSEL_CHECK_DRILL_ROOM_Description {\n            get {\n                return ResourceManager.GetString(\"RESEARCH_VESSEL_CHECK_DRILL_ROOM_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Check the first hangar.\n        /// </summary>\n        internal static string RESEARCH_VESSEL_CHECK_FIRST_HANGAR {\n            get {\n                return ResourceManager.GetString(\"RESEARCH_VESSEL_CHECK_FIRST_HANGAR\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to \n        ///.\n        /// </summary>\n        internal static string RESEARCH_VESSEL_CHECK_FIRST_HANGAR_Description {\n            get {\n                return ResourceManager.GetString(\"RESEARCH_VESSEL_CHECK_FIRST_HANGAR_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Check the generator room.\n        /// </summary>\n        internal static string RESEARCH_VESSEL_CHECK_GENERATOR {\n            get {\n                return ResourceManager.GetString(\"RESEARCH_VESSEL_CHECK_GENERATOR\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to \n        ///.\n        /// </summary>\n        internal static string RESEARCH_VESSEL_CHECK_GENERATOR_Description {\n            get {\n                return ResourceManager.GetString(\"RESEARCH_VESSEL_CHECK_GENERATOR_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Check the laboratory.\n        /// </summary>\n        internal static string RESEARCH_VESSEL_CHECK_LABORATORY {\n            get {\n                return ResourceManager.GetString(\"RESEARCH_VESSEL_CHECK_LABORATORY\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to \n        ///.\n        /// </summary>\n        internal static string RESEARCH_VESSEL_CHECK_LABORATORY_Description {\n            get {\n                return ResourceManager.GetString(\"RESEARCH_VESSEL_CHECK_LABORATORY_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Check the second hangar.\n        /// </summary>\n        internal static string RESEARCH_VESSEL_CHECK_SECOND_HANGAR {\n            get {\n                return ResourceManager.GetString(\"RESEARCH_VESSEL_CHECK_SECOND_HANGAR\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to \n        ///.\n        /// </summary>\n        internal static string RESEARCH_VESSEL_CHECK_SECOND_HANGAR_Description {\n            get {\n                return ResourceManager.GetString(\"RESEARCH_VESSEL_CHECK_SECOND_HANGAR_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Check the second warehouse.\n        /// </summary>\n        internal static string RESEARCH_VESSEL_CHECK_SECOND_WAREHOUSE {\n            get {\n                return ResourceManager.GetString(\"RESEARCH_VESSEL_CHECK_SECOND_WAREHOUSE\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to \n        ///.\n        /// </summary>\n        internal static string RESEARCH_VESSEL_CHECK_SECOND_WAREHOUSE_Description {\n            get {\n                return ResourceManager.GetString(\"RESEARCH_VESSEL_CHECK_SECOND_WAREHOUSE_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Check the third hangar.\n        /// </summary>\n        internal static string RESEARCH_VESSEL_CHECK_THIRD_HANGAR {\n            get {\n                return ResourceManager.GetString(\"RESEARCH_VESSEL_CHECK_THIRD_HANGAR\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to \n        ///.\n        /// </summary>\n        internal static string RESEARCH_VESSEL_CHECK_THIRD_HANGAR_Description {\n            get {\n                return ResourceManager.GetString(\"RESEARCH_VESSEL_CHECK_THIRD_HANGAR_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Check the warehouse.\n        /// </summary>\n        internal static string RESEARCH_VESSEL_CHECK_WAREHOUSE {\n            get {\n                return ResourceManager.GetString(\"RESEARCH_VESSEL_CHECK_WAREHOUSE\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to \n        ///.\n        /// </summary>\n        internal static string RESEARCH_VESSEL_CHECK_WAREHOUSE_Description {\n            get {\n                return ResourceManager.GetString(\"RESEARCH_VESSEL_CHECK_WAREHOUSE_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Acquire four probe parts\n        ///.\n        /// </summary>\n        internal static string RESEARCH_VESSEL_Description {\n            get {\n                return ResourceManager.GetString(\"RESEARCH_VESSEL_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Reach the ship.\n        /// </summary>\n        internal static string RESEARCH_VESSEL_REACH_SHIP {\n            get {\n                return ResourceManager.GetString(\"RESEARCH_VESSEL_REACH_SHIP\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to \n        ///.\n        /// </summary>\n        internal static string RESEARCH_VESSEL_REACH_SHIP_Description {\n            get {\n                return ResourceManager.GetString(\"RESEARCH_VESSEL_REACH_SHIP_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to OC Research vessel Eurydice, a huge scientific complex built upon an asteroid. It was later \n        ///enhanced by the addition of thrusters to allow it to relocate between research missions. \n        ///Currently deployed in Vandenberg Gas Field, Eurydice specializes in scans, probes, and \n        ///analysis of data..\n        /// </summary>\n        internal static string RESEARCH_VESSEL_SectorDescription {\n            get {\n                return ResourceManager.GetString(\"RESEARCH_VESSEL_SectorDescription\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to OC RESEARCH VESSEL EURYDICE.\n        /// </summary>\n        internal static string RESEARCH_VESSEL_SectorName {\n            get {\n                return ResourceManager.GetString(\"RESEARCH_VESSEL_SectorName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Take the first probe component.\n        /// </summary>\n        internal static string RESEARCH_VESSEL_TAKE_FIRST {\n            get {\n                return ResourceManager.GetString(\"RESEARCH_VESSEL_TAKE_FIRST\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to \n        ///.\n        /// </summary>\n        internal static string RESEARCH_VESSEL_TAKE_FIRST_Description {\n            get {\n                return ResourceManager.GetString(\"RESEARCH_VESSEL_TAKE_FIRST_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Take the final probe component.\n        /// </summary>\n        internal static string RESEARCH_VESSEL_TAKE_FOURTH {\n            get {\n                return ResourceManager.GetString(\"RESEARCH_VESSEL_TAKE_FOURTH\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to \n        ///.\n        /// </summary>\n        internal static string RESEARCH_VESSEL_TAKE_FOURTH_Description {\n            get {\n                return ResourceManager.GetString(\"RESEARCH_VESSEL_TAKE_FOURTH_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Take the second probe component.\n        /// </summary>\n        internal static string RESEARCH_VESSEL_TAKE_SECOND {\n            get {\n                return ResourceManager.GetString(\"RESEARCH_VESSEL_TAKE_SECOND\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to \n        ///.\n        /// </summary>\n        internal static string RESEARCH_VESSEL_TAKE_SECOND_Description {\n            get {\n                return ResourceManager.GetString(\"RESEARCH_VESSEL_TAKE_SECOND_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Take the third probe component.\n        /// </summary>\n        internal static string RESEARCH_VESSEL_TAKE_THIRD {\n            get {\n                return ResourceManager.GetString(\"RESEARCH_VESSEL_TAKE_THIRD\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to \n        ///.\n        /// </summary>\n        internal static string RESEARCH_VESSEL_TAKE_THIRD_Description {\n            get {\n                return ResourceManager.GetString(\"RESEARCH_VESSEL_TAKE_THIRD_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Use the hub to unlock secured cargo.\n        /// </summary>\n        internal static string RESEARCH_VESSEL_USE_HUB_1 {\n            get {\n                return ResourceManager.GetString(\"RESEARCH_VESSEL_USE_HUB_1\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to \n        ///.\n        /// </summary>\n        internal static string RESEARCH_VESSEL_USE_HUB_1_Description {\n            get {\n                return ResourceManager.GetString(\"RESEARCH_VESSEL_USE_HUB_1_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Use the second hub to unlock secured cargo.\n        /// </summary>\n        internal static string RESEARCH_VESSEL_USE_HUB_2 {\n            get {\n                return ResourceManager.GetString(\"RESEARCH_VESSEL_USE_HUB_2\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to \n        ///.\n        /// </summary>\n        internal static string RESEARCH_VESSEL_USE_HUB_2_Description {\n            get {\n                return ResourceManager.GetString(\"RESEARCH_VESSEL_USE_HUB_2_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Use the third hub to unlock secured cargo.\n        /// </summary>\n        internal static string RESEARCH_VESSEL_USE_HUB_3 {\n            get {\n                return ResourceManager.GetString(\"RESEARCH_VESSEL_USE_HUB_3\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to \n        ///.\n        /// </summary>\n        internal static string RESEARCH_VESSEL_USE_HUB_3_Description {\n            get {\n                return ResourceManager.GetString(\"RESEARCH_VESSEL_USE_HUB_3_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Research Vessel Asteroid.\n        /// </summary>\n        internal static string research_vesselAsteroid {\n            get {\n                return ResourceManager.GetString(\"research_vesselAsteroid\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Research vessel captain.\n        /// </summary>\n        internal static string ResearchVesselCaptain {\n            get {\n                return ResourceManager.GetString(\"ResearchVesselCaptain\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Reset asteroid.\n        /// </summary>\n        internal static string ResetAsteroid {\n            get {\n                return ResourceManager.GetString(\"ResetAsteroid\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Removes any merged asteroids from the current selection.\n        /// </summary>\n        internal static string ResetAsteroidTooltip {\n            get {\n                return ResourceManager.GetString(\"ResetAsteroidTooltip\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Reset rotation.\n        /// </summary>\n        internal static string ResetRotation {\n            get {\n                return ResourceManager.GetString(\"ResetRotation\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Resets any rotation modifications for the current selection.\n        /// </summary>\n        internal static string ResetRotationTooltip {\n            get {\n                return ResourceManager.GetString(\"ResetRotationTooltip\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Respawn.\n        /// </summary>\n        internal static string Respawn {\n            get {\n                return ResourceManager.GetString(\"Respawn\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Respawn point.\n        /// </summary>\n        internal static string RespawnPoint {\n            get {\n                return ResourceManager.GetString(\"RespawnPoint\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Retype password.\n        /// </summary>\n        internal static string RetypePassword {\n            get {\n                return ResourceManager.GetString(\"RetypePassword\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Reverse thrust.\n        /// </summary>\n        internal static string ReverseThrust {\n            get {\n                return ResourceManager.GetString(\"ReverseThrust\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Defaults.\n        /// </summary>\n        internal static string Revert {\n            get {\n                return ResourceManager.GetString(\"Revert\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Reward.\n        /// </summary>\n        internal static string Reward {\n            get {\n                return ResourceManager.GetString(\"Reward\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The Rift.\n        /// </summary>\n        internal static string RIFT {\n            get {\n                return ResourceManager.GetString(\"RIFT\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to A place between hell and nowhere, which once used to be one of the most prominent OmniCorp mining sites. Giant surface mines cracked the main asteroid with ore deposit in halves and radiation and heavy solar activity is finishing the job over the years. A small OC experimental lab is nearby, with sunshields and hi-tech equipment for the small crew on-board to survive.\n        ///.\n        /// </summary>\n        internal static string RIFT_Description {\n            get {\n                return ResourceManager.GetString(\"RIFT_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Don’t get killed by meteors or by the extreme heat!.\n        /// </summary>\n        internal static string RIFT_GOTO_10_Description {\n            get {\n                return ResourceManager.GetString(\"RIFT_GOTO_10_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Reach the Rift.\n        /// </summary>\n        internal static string RIFT_GOTO_10_Name {\n            get {\n                return ResourceManager.GetString(\"RIFT_GOTO_10_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string RIFT_GOTO_30_Description {\n            get {\n                return ResourceManager.GetString(\"RIFT_GOTO_30_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Return to Sapho.\n        /// </summary>\n        internal static string RIFT_GOTO_30_Name {\n            get {\n                return ResourceManager.GetString(\"RIFT_GOTO_30_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string RIFT_GOTO_GETSUPPLIES1_Description {\n            get {\n                return ResourceManager.GetString(\"RIFT_GOTO_GETSUPPLIES1_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Prepare for the Rift.\n        /// </summary>\n        internal static string RIFT_GOTO_GETSUPPLIES1_Name {\n            get {\n                return ResourceManager.GetString(\"RIFT_GOTO_GETSUPPLIES1_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to A place described as “between hell and nowhere”, the Rift was once one of the most\n        ///prominent OmniCorp mining sites. Giant surface mines cracked the main asteroid in half.\n        ///Radiation and heavy solar activity have been finishing the job over the years. A small OC\n        ///experimental lab sits nearby, with sunshields and hi-tech equipment to help the small\n        ///on-board crew survive. The Rift is said to contain the rarest of ores, including super-efficient\n        ///plutonium isotopes..\n        /// </summary>\n        internal static string RIFT_SectorDescription {\n            get {\n                return ResourceManager.GetString(\"RIFT_SectorDescription\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to THE RIFT.\n        /// </summary>\n        internal static string RIFT_SectorName {\n            get {\n                return ResourceManager.GetString(\"RIFT_SectorName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Harvest at least two units of plutonium..\n        /// </summary>\n        internal static string RIFT_URANITE_Description {\n            get {\n                return ResourceManager.GetString(\"RIFT_URANITE_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Harvest plutonium.\n        /// </summary>\n        internal static string RIFT_URANITE_Name {\n            get {\n                return ResourceManager.GetString(\"RIFT_URANITE_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Rift Station Smaller 64x128x64.\n        /// </summary>\n        internal static string RiftStationSmaller {\n            get {\n                return ResourceManager.GetString(\"RiftStationSmaller\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Right.\n        /// </summary>\n        internal static string Right {\n            get {\n                return ResourceManager.GetString(\"Right\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to RAlt.\n        /// </summary>\n        internal static string RightAlt {\n            get {\n                return ResourceManager.GetString(\"RightAlt\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to RCtrl.\n        /// </summary>\n        internal static string RightControl {\n            get {\n                return ResourceManager.GetString(\"RightControl\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Right Door.\n        /// </summary>\n        internal static string RightDoor {\n            get {\n                return ResourceManager.GetString(\"RightDoor\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to RMB.\n        /// </summary>\n        internal static string RightMouseButton {\n            get {\n                return ResourceManager.GetString(\"RightMouseButton\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to RShift.\n        /// </summary>\n        internal static string RightShift {\n            get {\n                return ResourceManager.GetString(\"RightShift\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Right wing.\n        /// </summary>\n        internal static string RighWeapons {\n            get {\n                return ResourceManager.GetString(\"RighWeapons\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Rime.\n        /// </summary>\n        internal static string RIME_CONVINCE {\n            get {\n                return ResourceManager.GetString(\"RIME_CONVINCE\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string RIME_CONVINCE_CARGO_COLLECTED_DIALOG_Description {\n            get {\n                return ResourceManager.GetString(\"RIME_CONVINCE_CARGO_COLLECTED_DIALOG_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Listen to the conversation.\n        /// </summary>\n        internal static string RIME_CONVINCE_CARGO_COLLECTED_DIALOG_Name {\n            get {\n                return ResourceManager.GetString(\"RIME_CONVINCE_CARGO_COLLECTED_DIALOG_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string RIME_CONVINCE_COLLECT_CARGO_Description {\n            get {\n                return ResourceManager.GetString(\"RIME_CONVINCE_COLLECT_CARGO_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Collect illegal cargo.\n        /// </summary>\n        internal static string RIME_CONVINCE_COLLECT_CARGO_Name {\n            get {\n                return ResourceManager.GetString(\"RIME_CONVINCE_COLLECT_CARGO_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string RIME_CONVINCE_CONTACT_APPEARS_Description {\n            get {\n                return ResourceManager.GetString(\"RIME_CONVINCE_CONTACT_APPEARS_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The contact has appeared.\n        /// </summary>\n        internal static string RIME_CONVINCE_CONTACT_APPEARS_Name {\n            get {\n                return ResourceManager.GetString(\"RIME_CONVINCE_CONTACT_APPEARS_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Speak with Francis Reef and convince him to help you\n        ///.\n        /// </summary>\n        internal static string RIME_CONVINCE_Description {\n            get {\n                return ResourceManager.GetString(\"RIME_CONVINCE_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string RIME_CONVINCE_DESTROY_FACTORY_BOTS_Description {\n            get {\n                return ResourceManager.GetString(\"RIME_CONVINCE_DESTROY_FACTORY_BOTS_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Kill guards.\n        /// </summary>\n        internal static string RIME_CONVINCE_DESTROY_FACTORY_BOTS_Name {\n            get {\n                return ResourceManager.GetString(\"RIME_CONVINCE_DESTROY_FACTORY_BOTS_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string RIME_CONVINCE_FACTORY_FOUND_DIALOGUE_Description {\n            get {\n                return ResourceManager.GetString(\"RIME_CONVINCE_FACTORY_FOUND_DIALOGUE_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Listen to the conversation.\n        /// </summary>\n        internal static string RIME_CONVINCE_FACTORY_FOUND_DIALOGUE_Name {\n            get {\n                return ResourceManager.GetString(\"RIME_CONVINCE_FACTORY_FOUND_DIALOGUE_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string RIME_CONVINCE_FLY_TO_VESSEL_Description {\n            get {\n                return ResourceManager.GetString(\"RIME_CONVINCE_FLY_TO_VESSEL_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Approach Raynold’s vessel.\n        /// </summary>\n        internal static string RIME_CONVINCE_FLY_TO_VESSEL_Name {\n            get {\n                return ResourceManager.GetString(\"RIME_CONVINCE_FLY_TO_VESSEL_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string RIME_CONVINCE_FOLLOW_CONTACT_Description {\n            get {\n                return ResourceManager.GetString(\"RIME_CONVINCE_FOLLOW_CONTACT_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Follow the contact.\n        /// </summary>\n        internal static string RIME_CONVINCE_FOLLOW_CONTACT_Name {\n            get {\n                return ResourceManager.GetString(\"RIME_CONVINCE_FOLLOW_CONTACT_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string RIME_CONVINCE_GET_FRANCIS_REEF_Description {\n            get {\n                return ResourceManager.GetString(\"RIME_CONVINCE_GET_FRANCIS_REEF_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Meet Francis Reef.\n        /// </summary>\n        internal static string RIME_CONVINCE_GET_FRANCIS_REEF_Name {\n            get {\n                return ResourceManager.GetString(\"RIME_CONVINCE_GET_FRANCIS_REEF_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Get out of the vessel before the guards will notice you.\n        ///.\n        /// </summary>\n        internal static string RIME_CONVINCE_GET_OUT_OF_THE_VESSEL_Description {\n            get {\n                return ResourceManager.GetString(\"RIME_CONVINCE_GET_OUT_OF_THE_VESSEL_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Get out.\n        /// </summary>\n        internal static string RIME_CONVINCE_GET_OUT_OF_THE_VESSEL_Name {\n            get {\n                return ResourceManager.GetString(\"RIME_CONVINCE_GET_OUT_OF_THE_VESSEL_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string RIME_CONVINCE_GO_BACK_TO_FRANCIS_Description {\n            get {\n                return ResourceManager.GetString(\"RIME_CONVINCE_GO_BACK_TO_FRANCIS_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Return to Francis Reef.\n        /// </summary>\n        internal static string RIME_CONVINCE_GO_BACK_TO_FRANCIS_Name {\n            get {\n                return ResourceManager.GetString(\"RIME_CONVINCE_GO_BACK_TO_FRANCIS_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string RIME_CONVINCE_GO_TO_DUPLEX_Description {\n            get {\n                return ResourceManager.GetString(\"RIME_CONVINCE_GO_TO_DUPLEX_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Approach the Duplex.\n        /// </summary>\n        internal static string RIME_CONVINCE_GO_TO_DUPLEX_Name {\n            get {\n                return ResourceManager.GetString(\"RIME_CONVINCE_GO_TO_DUPLEX_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Frame Raynold by planting illegal cargo in his vessel.\n        ///.\n        /// </summary>\n        internal static string RIME_CONVINCE_PLANT_CARGO_Description {\n            get {\n                return ResourceManager.GetString(\"RIME_CONVINCE_PLANT_CARGO_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Plant cargo in the vessel.\n        /// </summary>\n        internal static string RIME_CONVINCE_PLANT_CARGO_Name {\n            get {\n                return ResourceManager.GetString(\"RIME_CONVINCE_PLANT_CARGO_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string RIME_CONVINCE_RETURN_TO_POSITION_Description {\n            get {\n                return ResourceManager.GetString(\"RIME_CONVINCE_RETURN_TO_POSITION_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Return to your position.\n        /// </summary>\n        internal static string RIME_CONVINCE_RETURN_TO_POSITION_Name {\n            get {\n                return ResourceManager.GetString(\"RIME_CONVINCE_RETURN_TO_POSITION_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Wait for the right moment to fly in.\n        ///.\n        /// </summary>\n        internal static string RIME_CONVINCE_WAIT_FOR_THE_MOMENT_Description {\n            get {\n                return ResourceManager.GetString(\"RIME_CONVINCE_WAIT_FOR_THE_MOMENT_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Wait for the right moment.\n        /// </summary>\n        internal static string RIME_CONVINCE_WAIT_FOR_THE_MOMENT_Name {\n            get {\n                return ResourceManager.GetString(\"RIME_CONVINCE_WAIT_FOR_THE_MOMENT_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Rime represents the heart and soul of OmniCorp, the main administrative and executive\n        ///center of its corporate cluster. The station contains several research facilities, shipyards, and\n        ///entertainment centers as well as most other services and facilities one would expect to find\n        ///within a major city. Rime is rightfully regarded to be among the top 5 space destinations,\n        ///visited daily by tens of thousands of travelers, traders, and politicians..\n        /// </summary>\n        internal static string RIME_SectorDescription {\n            get {\n                return ResourceManager.GetString(\"RIME_SectorDescription\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to RIME.\n        /// </summary>\n        internal static string RIME_SectorName {\n            get {\n                return ResourceManager.GetString(\"RIME_SectorName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Roll left.\n        /// </summary>\n        internal static string RollLeft {\n            get {\n                return ResourceManager.GetString(\"RollLeft\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Roll right.\n        /// </summary>\n        internal static string RollRight {\n            get {\n                return ResourceManager.GetString(\"RollRight\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Rotate snapping: .\n        /// </summary>\n        internal static string RotateSnapping {\n            get {\n                return ResourceManager.GetString(\"RotateSnapping\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Rotate down.\n        /// </summary>\n        internal static string RotationDown {\n            get {\n                return ResourceManager.GetString(\"RotationDown\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Rotate left.\n        /// </summary>\n        internal static string RotationLeft {\n            get {\n                return ResourceManager.GetString(\"RotationLeft\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Rotate right.\n        /// </summary>\n        internal static string RotationRight {\n            get {\n                return ResourceManager.GetString(\"RotationRight\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Rotate up.\n        /// </summary>\n        internal static string RotationUp {\n            get {\n                return ResourceManager.GetString(\"RotationUp\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to rus_attack.\n        /// </summary>\n        internal static string rus_attack {\n            get {\n                return ResourceManager.GetString(\"rus_attack\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Russian mothership.\n        /// </summary>\n        internal static string RusMothership {\n            get {\n                return ResourceManager.GetString(\"RusMothership\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to New Moscow – Russian capital.\n        /// </summary>\n        internal static string RUSSIAN_CAPITAL {\n            get {\n                return ResourceManager.GetString(\"RUSSIAN_CAPITAL\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to New Moscow – Russian capital\n        ///.\n        /// </summary>\n        internal static string RUSSIAN_CAPITAL_Description {\n            get {\n                return ResourceManager.GetString(\"RUSSIAN_CAPITAL_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Russian transmitter.\n        /// </summary>\n        internal static string RUSSIAN_TRANSMITTER {\n            get {\n                return ResourceManager.GetString(\"RUSSIAN_TRANSMITTER\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Russian Transmitter 1 128x128x128.\n        /// </summary>\n        internal static string Russian_Transmitter_1 {\n            get {\n                return ResourceManager.GetString(\"Russian_Transmitter_1\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Russian Transmitter 2 256x128x256.\n        /// </summary>\n        internal static string Russian_Transmitter_2 {\n            get {\n                return ResourceManager.GetString(\"Russian_Transmitter_2\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Russian Transmitter 3 256x128x256.\n        /// </summary>\n        internal static string Russian_Transmitter_3 {\n            get {\n                return ResourceManager.GetString(\"Russian_Transmitter_3\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Return back to Madelyn.\n        /// </summary>\n        internal static string RUSSIAN_TRANSMITTER_BACK_TO_MADELYN {\n            get {\n                return ResourceManager.GetString(\"RUSSIAN_TRANSMITTER_BACK_TO_MADELYN\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string RUSSIAN_TRANSMITTER_BACK_TO_MADELYN_Description {\n            get {\n                return ResourceManager.GetString(\"RUSSIAN_TRANSMITTER_BACK_TO_MADELYN_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fly back to the transmitter.\n        /// </summary>\n        internal static string RUSSIAN_TRANSMITTER_BACK_TO_TRANSMITTER {\n            get {\n                return ResourceManager.GetString(\"RUSSIAN_TRANSMITTER_BACK_TO_TRANSMITTER\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string RUSSIAN_TRANSMITTER_BACK_TO_TRANSMITTER_Description {\n            get {\n                return ResourceManager.GetString(\"RUSSIAN_TRANSMITTER_BACK_TO_TRANSMITTER_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hack the hub to decrypt the frequency.\n        /// </summary>\n        internal static string RUSSIAN_TRANSMITTER_DECRYPT_FREQUENCY {\n            get {\n                return ResourceManager.GetString(\"RUSSIAN_TRANSMITTER_DECRYPT_FREQUENCY\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string RUSSIAN_TRANSMITTER_DECRYPT_FREQUENCY_Description {\n            get {\n                return ResourceManager.GetString(\"RUSSIAN_TRANSMITTER_DECRYPT_FREQUENCY_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Enter the outpost, sabotage electricity and place a device on the transmitter.\n        ///.\n        /// </summary>\n        internal static string RUSSIAN_TRANSMITTER_Description {\n            get {\n                return ResourceManager.GetString(\"RUSSIAN_TRANSMITTER_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Enter the base.\n        /// </summary>\n        internal static string RUSSIAN_TRANSMITTER_ENTER_THE_BASE {\n            get {\n                return ResourceManager.GetString(\"RUSSIAN_TRANSMITTER_ENTER_THE_BASE\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string RUSSIAN_TRANSMITTER_ENTER_THE_BASE_Description {\n            get {\n                return ResourceManager.GetString(\"RUSSIAN_TRANSMITTER_ENTER_THE_BASE_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fight the Russian commando.\n        /// </summary>\n        internal static string RUSSIAN_TRANSMITTER_FIGHT_RUSSIAN_COMMANDO {\n            get {\n                return ResourceManager.GetString(\"RUSSIAN_TRANSMITTER_FIGHT_RUSSIAN_COMMANDO\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Try not to die.\n        ///.\n        /// </summary>\n        internal static string RUSSIAN_TRANSMITTER_FIGHT_RUSSIAN_COMMANDO_Description {\n            get {\n                return ResourceManager.GetString(\"RUSSIAN_TRANSMITTER_FIGHT_RUSSIAN_COMMANDO_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Find out the transmission frequency.\n        /// </summary>\n        internal static string RUSSIAN_TRANSMITTER_FIND_FREQUENCY {\n            get {\n                return ResourceManager.GetString(\"RUSSIAN_TRANSMITTER_FIND_FREQUENCY\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string RUSSIAN_TRANSMITTER_FIND_FREQUENCY_Description {\n            get {\n                return ResourceManager.GetString(\"RUSSIAN_TRANSMITTER_FIND_FREQUENCY_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Find the main room entrance.\n        /// </summary>\n        internal static string RUSSIAN_TRANSMITTER_FIND_MAIN_ROOM_ENTRANCE {\n            get {\n                return ResourceManager.GetString(\"RUSSIAN_TRANSMITTER_FIND_MAIN_ROOM_ENTRANCE\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The transmitter is supposedly there.\n        ///.\n        /// </summary>\n        internal static string RUSSIAN_TRANSMITTER_FIND_MAIN_ROOM_ENTRANCE_Description {\n            get {\n                return ResourceManager.GetString(\"RUSSIAN_TRANSMITTER_FIND_MAIN_ROOM_ENTRANCE_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Russian Transmitter Main.\n        /// </summary>\n        internal static string Russian_Transmitter_Main {\n            get {\n                return ResourceManager.GetString(\"Russian_Transmitter_Main\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Meet the stranger.\n        /// </summary>\n        internal static string RUSSIAN_TRANSMITTER_MEET_STRANGER {\n            get {\n                return ResourceManager.GetString(\"RUSSIAN_TRANSMITTER_MEET_STRANGER\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Answer the strangers’ call and find him.\n        ///.\n        /// </summary>\n        internal static string RUSSIAN_TRANSMITTER_MEET_STRANGER_Description {\n            get {\n                return ResourceManager.GetString(\"RUSSIAN_TRANSMITTER_MEET_STRANGER_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Use the hub to open doors.\n        /// </summary>\n        internal static string RUSSIAN_TRANSMITTER_OPEN_DOORS {\n            get {\n                return ResourceManager.GetString(\"RUSSIAN_TRANSMITTER_OPEN_DOORS\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string RUSSIAN_TRANSMITTER_OPEN_DOORS_Description {\n            get {\n                return ResourceManager.GetString(\"RUSSIAN_TRANSMITTER_OPEN_DOORS_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Place the device on the transmitter.\n        /// </summary>\n        internal static string RUSSIAN_TRANSMITTER_PLACE_DEVICE_ON_TRANSMITTER {\n            get {\n                return ResourceManager.GetString(\"RUSSIAN_TRANSMITTER_PLACE_DEVICE_ON_TRANSMITTER\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Start the broadcast of your triangulation signal.\n        ///.\n        /// </summary>\n        internal static string RUSSIAN_TRANSMITTER_PLACE_DEVICE_ON_TRANSMITTER_Description {\n            get {\n                return ResourceManager.GetString(\"RUSSIAN_TRANSMITTER_PLACE_DEVICE_ON_TRANSMITTER_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Reach the side entrance.\n        /// </summary>\n        internal static string RUSSIAN_TRANSMITTER_REACH_SIDE_ENTRANCE {\n            get {\n                return ResourceManager.GetString(\"RUSSIAN_TRANSMITTER_REACH_SIDE_ENTRANCE\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Reach side entrance – there are too many turrets at the transmitter!\n        ///.\n        /// </summary>\n        internal static string RUSSIAN_TRANSMITTER_REACH_SIDE_ENTRANCE_Description {\n            get {\n                return ResourceManager.GetString(\"RUSSIAN_TRANSMITTER_REACH_SIDE_ENTRANCE_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Reach the warehouse.\n        /// </summary>\n        internal static string RUSSIAN_TRANSMITTER_REACH_WAREHOUSE {\n            get {\n                return ResourceManager.GetString(\"RUSSIAN_TRANSMITTER_REACH_WAREHOUSE\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Reach the Russian military warehouse.\n        ///.\n        /// </summary>\n        internal static string RUSSIAN_TRANSMITTER_REACH_WAREHOUSE_Description {\n            get {\n                return ResourceManager.GetString(\"RUSSIAN_TRANSMITTER_REACH_WAREHOUSE_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tver – one of seven Russian long-distance communication arrays serving to connect \n        ///transmitters and receivers across inhabited parts of the Solar System. The station is \n        ///protected by the military; however, the garrison is rather light and symbolic because of the \n        ///station’s ease of replacement and relatively low political and military value..\n        /// </summary>\n        internal static string RUSSIAN_TRANSMITTER_SectorDescritpion {\n            get {\n                return ResourceManager.GetString(\"RUSSIAN_TRANSMITTER_SectorDescritpion\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to RUSSIAN TRANSMITTER TVER.\n        /// </summary>\n        internal static string RUSSIAN_TRANSMITTER_SectorName {\n            get {\n                return ResourceManager.GetString(\"RUSSIAN_TRANSMITTER_SectorName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Steal the military supplies.\n        /// </summary>\n        internal static string RUSSIAN_TRANSMITTER_STEAL_MILITARY_SUPPLY {\n            get {\n                return ResourceManager.GetString(\"RUSSIAN_TRANSMITTER_STEAL_MILITARY_SUPPLY\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Steal supplies from the warehouse.\n        ///.\n        /// </summary>\n        internal static string RUSSIAN_TRANSMITTER_STEAL_MILITARY_SUPPLY_Description {\n            get {\n                return ResourceManager.GetString(\"RUSSIAN_TRANSMITTER_STEAL_MILITARY_SUPPLY_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Trade with Volodia.\n        /// </summary>\n        internal static string RUSSIAN_TRANSMITTER_TRADE_WITH_VOLODIA {\n            get {\n                return ResourceManager.GetString(\"RUSSIAN_TRANSMITTER_TRADE_WITH_VOLODIA\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Take the military supplies back to Volodia. He’s inside the solar powerplant mothership..\n        /// </summary>\n        internal static string RUSSIAN_TRANSMITTER_TRADE_WITH_VOLODIA_Description {\n            get {\n                return ResourceManager.GetString(\"RUSSIAN_TRANSMITTER_TRADE_WITH_VOLODIA_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Upload triangulation data.\n        /// </summary>\n        internal static string RUSSIAN_TRANSMITTER_UPLOAD_DATA {\n            get {\n                return ResourceManager.GetString(\"RUSSIAN_TRANSMITTER_UPLOAD_DATA\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Prepare for the broadcast..\n        /// </summary>\n        internal static string RUSSIAN_TRANSMITTER_UPLOAD_DATA_Description {\n            get {\n                return ResourceManager.GetString(\"RUSSIAN_TRANSMITTER_UPLOAD_DATA_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Russian warehouse Bratsk.\n        /// </summary>\n        internal static string RUSSIAN_WAREHOUSE {\n            get {\n                return ResourceManager.GetString(\"RUSSIAN_WAREHOUSE\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You may need to use rockets or the drill to clear the rocks.\n        ///.\n        /// </summary>\n        internal static string RUSSIAN_WAREHOUSE_BREAKOLDENTRANCE_Description {\n            get {\n                return ResourceManager.GetString(\"RUSSIAN_WAREHOUSE_BREAKOLDENTRANCE_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Break through the old entrance.\n        /// </summary>\n        internal static string RUSSIAN_WAREHOUSE_BREAKOLDENTRANCE_Name {\n            get {\n                return ResourceManager.GetString(\"RUSSIAN_WAREHOUSE_BREAKOLDENTRANCE_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to A few brave Russians are still resisting. Crush their hopes. Their weakness is bullets. Rockets may work, too.\n        ///.\n        /// </summary>\n        internal static string RUSSIAN_WAREHOUSE_CRUSHREMAINGSHIPS_Description {\n            get {\n                return ResourceManager.GetString(\"RUSSIAN_WAREHOUSE_CRUSHREMAINGSHIPS_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Destroy remaining Russian ships.\n        /// </summary>\n        internal static string RUSSIAN_WAREHOUSE_CRUSHREMAINGSHIPS_Name {\n            get {\n                return ResourceManager.GetString(\"RUSSIAN_WAREHOUSE_CRUSHREMAINGSHIPS_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string RUSSIAN_WAREHOUSE_CTRLTURRET_Description {\n            get {\n                return ResourceManager.GetString(\"RUSSIAN_WAREHOUSE_CTRLTURRET_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Disable turrets at the old entrance.\n        /// </summary>\n        internal static string RUSSIAN_WAREHOUSE_CTRLTURRET_Name {\n            get {\n                return ResourceManager.GetString(\"RUSSIAN_WAREHOUSE_CTRLTURRET_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Grab a long-range transmitter from the warehouse.\n        ///.\n        /// </summary>\n        internal static string RUSSIAN_WAREHOUSE_Description {\n            get {\n                return ResourceManager.GetString(\"RUSSIAN_WAREHOUSE_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string RUSSIAN_WAREHOUSE_DOWNLOAD_DATA_Description {\n            get {\n                return ResourceManager.GetString(\"RUSSIAN_WAREHOUSE_DOWNLOAD_DATA_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Download data.\n        /// </summary>\n        internal static string RUSSIAN_WAREHOUSE_DOWNLOAD_DATA_Name {\n            get {\n                return ResourceManager.GetString(\"RUSSIAN_WAREHOUSE_DOWNLOAD_DATA_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string RUSSIAN_WAREHOUSE_FINDTRANSMITTER_Description {\n            get {\n                return ResourceManager.GetString(\"RUSSIAN_WAREHOUSE_FINDTRANSMITTER_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Find the transmitter.\n        /// </summary>\n        internal static string RUSSIAN_WAREHOUSE_FINDTRANSMITTER_Name {\n            get {\n                return ResourceManager.GetString(\"RUSSIAN_WAREHOUSE_FINDTRANSMITTER_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Use the door at the very bottom of the station.\n        ///.\n        /// </summary>\n        internal static string RUSSIAN_WAREHOUSE_GETOUTMAINBASE_Description {\n            get {\n                return ResourceManager.GetString(\"RUSSIAN_WAREHOUSE_GETOUTMAINBASE_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Leave the station.\n        /// </summary>\n        internal static string RUSSIAN_WAREHOUSE_GETOUTMAINBASE_Name {\n            get {\n                return ResourceManager.GetString(\"RUSSIAN_WAREHOUSE_GETOUTMAINBASE_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The pirate mothership will arrive.\n        ///.\n        /// </summary>\n        internal static string RUSSIAN_WAREHOUSE_GETOUTWAREHOUSE_Description {\n            get {\n                return ResourceManager.GetString(\"RUSSIAN_WAREHOUSE_GETOUTWAREHOUSE_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Leave warehouse through cargo bay.\n        /// </summary>\n        internal static string RUSSIAN_WAREHOUSE_GETOUTWAREHOUSE_Name {\n            get {\n                return ResourceManager.GetString(\"RUSSIAN_WAREHOUSE_GETOUTWAREHOUSE_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to It’s supposed to be in a cave carved inside the asteroid.\n        ///.\n        /// </summary>\n        internal static string RUSSIAN_WAREHOUSE_LOCATEWAREHOUSE_Description {\n            get {\n                return ResourceManager.GetString(\"RUSSIAN_WAREHOUSE_LOCATEWAREHOUSE_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Locate the warehouse.\n        /// </summary>\n        internal static string RUSSIAN_WAREHOUSE_LOCATEWAREHOUSE_Name {\n            get {\n                return ResourceManager.GetString(\"RUSSIAN_WAREHOUSE_LOCATEWAREHOUSE_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string RUSSIAN_WAREHOUSE_MEETINGPOINT_Description {\n            get {\n                return ResourceManager.GetString(\"RUSSIAN_WAREHOUSE_MEETINGPOINT_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Return to Sapho.\n        /// </summary>\n        internal static string RUSSIAN_WAREHOUSE_MEETINGPOINT_Name {\n            get {\n                return ResourceManager.GetString(\"RUSSIAN_WAREHOUSE_MEETINGPOINT_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Russian Warehouse New 64x64x64.\n        /// </summary>\n        internal static string Russian_Warehouse_New {\n            get {\n                return ResourceManager.GetString(\"Russian_Warehouse_New\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string RUSSIAN_WAREHOUSE_OPEN_DOORS_Description {\n            get {\n                return ResourceManager.GetString(\"RUSSIAN_WAREHOUSE_OPEN_DOORS_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Open doors.\n        /// </summary>\n        internal static string RUSSIAN_WAREHOUSE_OPEN_DOORS_Name {\n            get {\n                return ResourceManager.GetString(\"RUSSIAN_WAREHOUSE_OPEN_DOORS_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Not much is known about Bratsk. It is one of several generic Russian warehouses under \n        ///governmental protection. However, all known data sources describe it as an unremarkable \n        ///storage and manufacturing facility, specializing in non-military device parts: radar arrays, \n        ///transmitters, ore processing units, and housewares..\n        /// </summary>\n        internal static string RUSSIAN_WAREHOUSE_SectorDescription {\n            get {\n                return ResourceManager.GetString(\"RUSSIAN_WAREHOUSE_SectorDescription\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to RUSSIAN WAREHOUSE BRATSK.\n        /// </summary>\n        internal static string RUSSIAN_WAREHOUSE_SectorName {\n            get {\n                return ResourceManager.GetString(\"RUSSIAN_WAREHOUSE_SectorName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to It should be a breeze with all the fighting around you.\n        ///.\n        /// </summary>\n        internal static string RUSSIAN_WAREHOUSE_SNEAKINMAINBASE_Description {\n            get {\n                return ResourceManager.GetString(\"RUSSIAN_WAREHOUSE_SNEAKINMAINBASE_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Enter the main station.\n        /// </summary>\n        internal static string RUSSIAN_WAREHOUSE_SNEAKINMAINBASE_Name {\n            get {\n                return ResourceManager.GetString(\"RUSSIAN_WAREHOUSE_SNEAKINMAINBASE_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The security hub should be located in the right wing.\n        ///.\n        /// </summary>\n        internal static string RUSSIAN_WAREHOUSE_TURNOFFCAMS_Description {\n            get {\n                return ResourceManager.GetString(\"RUSSIAN_WAREHOUSE_TURNOFFCAMS_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Disable security cameras.\n        /// </summary>\n        internal static string RUSSIAN_WAREHOUSE_TURNOFFCAMS_Name {\n            get {\n                return ResourceManager.GetString(\"RUSSIAN_WAREHOUSE_TURNOFFCAMS_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to This will allow the pirate mothership arrive and loot unhindered.\n        ///.\n        /// </summary>\n        internal static string RUSSIAN_WAREHOUSE_TURNOFFMAINDEF_PART1_Description {\n            get {\n                return ResourceManager.GetString(\"RUSSIAN_WAREHOUSE_TURNOFFMAINDEF_PART1_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Disable hub A turrets.\n        /// </summary>\n        internal static string RUSSIAN_WAREHOUSE_TURNOFFMAINDEF_PART1_Name {\n            get {\n                return ResourceManager.GetString(\"RUSSIAN_WAREHOUSE_TURNOFFMAINDEF_PART1_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to This will allow the pirate mothership arrive and loot unhindered.\n        ///.\n        /// </summary>\n        internal static string RUSSIAN_WAREHOUSE_TURNOFFMAINDEF_PART2_Description {\n            get {\n                return ResourceManager.GetString(\"RUSSIAN_WAREHOUSE_TURNOFFMAINDEF_PART2_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Disable hub B turrets.\n        /// </summary>\n        internal static string RUSSIAN_WAREHOUSE_TURNOFFMAINDEF_PART2_Name {\n            get {\n                return ResourceManager.GetString(\"RUSSIAN_WAREHOUSE_TURNOFFMAINDEF_PART2_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Russian general.\n        /// </summary>\n        internal static string RussianGeneral {\n            get {\n                return ResourceManager.GetString(\"RussianGeneral\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Russian mothership Hummer.\n        /// </summary>\n        internal static string RussianMothershipHummer {\n            get {\n                return ResourceManager.GetString(\"RussianMothershipHummer\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Russian reinforcements.\n        /// </summary>\n        internal static string RussianReinforcements {\n            get {\n                return ResourceManager.GetString(\"RussianReinforcements\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Russian Warehouse Asteroid.\n        /// </summary>\n        internal static string RussianWarehouseAsteroid {\n            get {\n                return ResourceManager.GetString(\"RussianWarehouseAsteroid\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Safe area.\n        /// </summary>\n        internal static string SafeArea {\n            get {\n                return ResourceManager.GetString(\"SafeArea\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Safe area dummies.\n        /// </summary>\n        internal static string SafeAreaDummies {\n            get {\n                return ResourceManager.GetString(\"SafeAreaDummies\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Samples.\n        /// </summary>\n        internal static string Samples {\n            get {\n                return ResourceManager.GetString(\"Samples\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Official sectors.\n        /// </summary>\n        internal static string SandboxSectors {\n            get {\n                return ResourceManager.GetString(\"SandboxSectors\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sandstone 1.\n        /// </summary>\n        internal static string Sandstone_01 {\n            get {\n                return ResourceManager.GetString(\"Sandstone_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Madelyn’s Sapho.\n        /// </summary>\n        internal static string Sapho {\n            get {\n                return ResourceManager.GetString(\"Sapho\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Save asteroids.\n        /// </summary>\n        internal static string SaveAsteroids {\n            get {\n                return ResourceManager.GetString(\"SaveAsteroids\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Export asteroids to a file.\n        /// </summary>\n        internal static string SaveAsteroidsTooltip {\n            get {\n                return ResourceManager.GetString(\"SaveAsteroidsTooltip\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Save asteroid.\n        /// </summary>\n        internal static string SaveAsteroidToFile {\n            get {\n                return ResourceManager.GetString(\"SaveAsteroidToFile\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Saves asteroid to a file.\n        /// </summary>\n        internal static string SaveAsteroidToFileTooltip {\n            get {\n                return ResourceManager.GetString(\"SaveAsteroidToFileTooltip\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Save checkpoint.\n        /// </summary>\n        internal static string SaveCheckpoint {\n            get {\n                return ResourceManager.GetString(\"SaveCheckpoint\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Saved game corrupted.\n        /// </summary>\n        internal static string SaveCorruptedCaption {\n            get {\n                return ResourceManager.GetString(\"SaveCorruptedCaption\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Saved game is corrupted, please load different saved game (use Load Chapter).\n        /// </summary>\n        internal static string SaveCorruptedText {\n            get {\n                return ResourceManager.GetString(\"SaveCorruptedText\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Do you want to save before exiting?.\n        /// </summary>\n        internal static string SaveCurrentProgress {\n            get {\n                return ResourceManager.GetString(\"SaveCurrentProgress\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Save?.\n        /// </summary>\n        internal static string SaveCurrentProgressCaption {\n            get {\n                return ResourceManager.GetString(\"SaveCurrentProgressCaption\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Save screenshot to user folder.\n        /// </summary>\n        internal static string SaveScreenshotToUserFolder {\n            get {\n                return ResourceManager.GetString(\"SaveScreenshotToUserFolder\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Save sector.\n        /// </summary>\n        internal static string SaveSector {\n            get {\n                return ResourceManager.GetString(\"SaveSector\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Saving sector to server… \n        ///please wait.\n        /// </summary>\n        internal static string SaveSectorInProgressPleaseWait {\n            get {\n                return ResourceManager.GetString(\"SaveSectorInProgressPleaseWait\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Saves sector to server.\n        /// </summary>\n        internal static string SaveSectorTooltip {\n            get {\n                return ResourceManager.GetString(\"SaveSectorTooltip\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Save to server.\n        /// </summary>\n        internal static string SaveToServer {\n            get {\n                return ResourceManager.GetString(\"SaveToServer\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Saving sector to server….\n        /// </summary>\n        internal static string SavingSectorToServer {\n            get {\n                return ResourceManager.GetString(\"SavingSectorToServer\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Scanner.\n        /// </summary>\n        internal static string Scanner {\n            get {\n                return ResourceManager.GetString(\"Scanner\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Scanner plane.\n        /// </summary>\n        internal static string ScannerPlane {\n            get {\n                return ResourceManager.GetString(\"ScannerPlane\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Scanner rays.\n        /// </summary>\n        internal static string ScannerRays {\n            get {\n                return ResourceManager.GetString(\"ScannerRays\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Scanning speed.\n        /// </summary>\n        internal static string ScanningSpeed {\n            get {\n                return ResourceManager.GetString(\"ScanningSpeed\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to DEATHS.\n        /// </summary>\n        internal static string ScoreDeaths {\n            get {\n                return ResourceManager.GetString(\"ScoreDeaths\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to KILLS.\n        /// </summary>\n        internal static string ScoreKills {\n            get {\n                return ResourceManager.GetString(\"ScoreKills\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to NAME.\n        /// </summary>\n        internal static string ScoreName {\n            get {\n                return ResourceManager.GetString(\"ScoreName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to PING.\n        /// </summary>\n        internal static string ScorePing {\n            get {\n                return ResourceManager.GetString(\"ScorePing\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to 128x128x128\n        ///Scratched boulder.\n        /// </summary>\n        internal static string ScratchedBoulder_128x128x128 {\n            get {\n                return ResourceManager.GetString(\"ScratchedBoulder_128x128x128\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Search.\n        /// </summary>\n        internal static string Search {\n            get {\n                return ResourceManager.GetString(\"Search\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Search game.\n        /// </summary>\n        internal static string SearchGameToJoin {\n            get {\n                return ResourceManager.GetString(\"SearchGameToJoin\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Searching distance.\n        /// </summary>\n        internal static string SearchingDistance {\n            get {\n                return ResourceManager.GetString(\"SearchingDistance\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to seconds.\n        /// </summary>\n        internal static string SecondsLong {\n            get {\n                return ResourceManager.GetString(\"SecondsLong\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Secret.\n        /// </summary>\n        internal static string Secret {\n            get {\n                return ResourceManager.GetString(\"Secret\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Secret rooms found:.\n        /// </summary>\n        internal static string SecretRoomsFound {\n            get {\n                return ResourceManager.GetString(\"SecretRoomsFound\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Approaching sector border: .\n        /// </summary>\n        internal static string SectorBorderBegin {\n            get {\n                return ResourceManager.GetString(\"SectorBorderBegin\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to  m.\n        /// </summary>\n        internal static string SectorBorderEnd {\n            get {\n                return ResourceManager.GetString(\"SectorBorderEnd\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sector identifier:      .\n        /// </summary>\n        internal static string SectorIdentifier {\n            get {\n                return ResourceManager.GetString(\"SectorIdentifier\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sector name:.\n        /// </summary>\n        internal static string SectorName {\n            get {\n                return ResourceManager.GetString(\"SectorName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sector not found..\n        /// </summary>\n        internal static string SectorNotFound {\n            get {\n                return ResourceManager.GetString(\"SectorNotFound\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Security control hub.\n        /// </summary>\n        internal static string SecurityControlHUB {\n            get {\n                return ResourceManager.GetString(\"SecurityControlHUB\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to See all.\n        /// </summary>\n        internal static string SeeAll {\n            get {\n                return ResourceManager.GetString(\"SeeAll\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to See distance.\n        /// </summary>\n        internal static string SeeDistance {\n            get {\n                return ResourceManager.GetString(\"SeeDistance\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Selectable.\n        /// </summary>\n        internal static string Selectable {\n            get {\n                return ResourceManager.GetString(\"Selectable\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Select all / none.\n        /// </summary>\n        internal static string SelectAllNone {\n            get {\n                return ResourceManager.GetString(\"SelectAllNone\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Select all objects.\n        /// </summary>\n        internal static string SelectAllObjects {\n            get {\n                return ResourceManager.GetString(\"SelectAllObjects\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Press Left Ctrl+A to select all objects in sector.\n        /// </summary>\n        internal static string SelectAllObjectsTooltip {\n            get {\n                return ResourceManager.GetString(\"SelectAllObjectsTooltip\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Switch weapons and ammo.\n        /// </summary>\n        internal static string SelectAmmo {\n            get {\n                return ResourceManager.GetString(\"SelectAmmo\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Back launcher ammo.\n        /// </summary>\n        internal static string SelectBackLauncherAmmo {\n            get {\n                return ResourceManager.GetString(\"SelectBackLauncherAmmo\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Bullet ammo.\n        /// </summary>\n        internal static string SelectBulletAmmo {\n            get {\n                return ResourceManager.GetString(\"SelectBulletAmmo\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cannon ammo.\n        /// </summary>\n        internal static string SelectCannonAmmo {\n            get {\n                return ResourceManager.GetString(\"SelectCannonAmmo\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to SELECT CONTROL.\n        /// </summary>\n        internal static string SelectControl {\n            get {\n                return ResourceManager.GetString(\"SelectControl\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Select deactivated entity.\n        /// </summary>\n        internal static string SelectDeactivatedEntity {\n            get {\n                return ResourceManager.GetString(\"SelectDeactivatedEntity\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to HUD label text:      .\n        /// </summary>\n        internal static string SelectedObjectHudLabelText {\n            get {\n                return ResourceManager.GetString(\"SelectedObjectHudLabelText\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Orientation forward:     .\n        /// </summary>\n        internal static string SelectedObjectOrientationForward {\n            get {\n                return ResourceManager.GetString(\"SelectedObjectOrientationForward\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Orientation up:     .\n        /// </summary>\n        internal static string SelectedObjectOrientationUp {\n            get {\n                return ResourceManager.GetString(\"SelectedObjectOrientationUp\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Position:      .\n        /// </summary>\n        internal static string SelectedObjectPosition {\n            get {\n                return ResourceManager.GetString(\"SelectedObjectPosition\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Size in meters:   .\n        /// </summary>\n        internal static string SelectedObjectSizeInMeters {\n            get {\n                return ResourceManager.GetString(\"SelectedObjectSizeInMeters\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Object Type:   .\n        /// </summary>\n        internal static string SelectedObjectType {\n            get {\n                return ResourceManager.GetString(\"SelectedObjectType\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Remaining count of explosions saved with asteroid:    .\n        /// </summary>\n        internal static string SelectedVoxelMapRemainingSaveExplosions {\n            get {\n                return ResourceManager.GetString(\"SelectedVoxelMapRemainingSaveExplosions\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Front launcher ammo.\n        /// </summary>\n        internal static string SelectFrontLauncherAmmo {\n            get {\n                return ResourceManager.GetString(\"SelectFrontLauncherAmmo\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Missile ammo.\n        /// </summary>\n        internal static string SelectMissileAmmo {\n            get {\n                return ResourceManager.GetString(\"SelectMissileAmmo\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Loading sandbox sectors….\n        /// </summary>\n        internal static string SelectSandboxInProgressPleaseWait {\n            get {\n                return ResourceManager.GetString(\"SelectSandboxInProgressPleaseWait\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Select sector.\n        /// </summary>\n        internal static string SelectSector {\n            get {\n                return ResourceManager.GetString(\"SelectSector\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sell for .\n        /// </summary>\n        internal static string SellFor {\n            get {\n                return ResourceManager.GetString(\"SellFor\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Send.\n        /// </summary>\n        internal static string Send {\n            get {\n                return ResourceManager.GetString(\"Send\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Send me Miner Wars newsletters.\n        /// </summary>\n        internal static string SendNewsletters {\n            get {\n                return ResourceManager.GetString(\"SendNewsletters\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Send to all.\n        /// </summary>\n        internal static string SendToAll {\n            get {\n                return ResourceManager.GetString(\"SendToAll\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Send to team.\n        /// </summary>\n        internal static string SendToTeam {\n            get {\n                return ResourceManager.GetString(\"SendToTeam\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Server maintenance in {1} minutes. Server will be down for {0} minutes..\n        /// </summary>\n        internal static string ServerShutdownNotification {\n            get {\n                return ResourceManager.GetString(\"ServerShutdownNotification\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to SCHEDULED SERVER SHUTDOWN.\n        /// </summary>\n        internal static string ServerShutdownNotificationCaption {\n            get {\n                return ResourceManager.GetString(\"ServerShutdownNotificationCaption\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Session type:   .\n        /// </summary>\n        internal static string SessionType {\n            get {\n                return ResourceManager.GetString(\"SessionType\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Computer.\n        /// </summary>\n        internal static string SetBugInComputer {\n            get {\n                return ResourceManager.GetString(\"SetBugInComputer\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Choose faction.\n        /// </summary>\n        internal static string SetShipFaction {\n            get {\n                return ResourceManager.GetString(\"SetShipFaction\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Computer.\n        /// </summary>\n        internal static string SetVirusInComputer {\n            get {\n                return ResourceManager.GetString(\"SetVirusInComputer\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Shift.\n        /// </summary>\n        internal static string Shift {\n            get {\n                return ResourceManager.GetString(\"Shift\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ship.\n        /// </summary>\n        internal static string Ship {\n            get {\n                return ResourceManager.GetString(\"Ship\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ship customization.\n        /// </summary>\n        internal static string ShipCustomizationCaption {\n            get {\n                return ResourceManager.GetString(\"ShipCustomizationCaption\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to My inventory.\n        /// </summary>\n        internal static string ShipInventory {\n            get {\n                return ResourceManager.GetString(\"ShipInventory\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Inventory.\n        /// </summary>\n        internal static string ShipInventoryCaption {\n            get {\n                return ResourceManager.GetString(\"ShipInventoryCaption\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fourth Reich pilot.\n        /// </summary>\n        internal static string ShouterReichJE {\n            get {\n                return ResourceManager.GetString(\"ShouterReichJE\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Russian pilot.\n        /// </summary>\n        internal static string ShouterRussianJE {\n            get {\n                return ResourceManager.GetString(\"ShouterRussianJE\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Show normals (must be enabled).\n        /// </summary>\n        internal static string ShowVertexNormals {\n            get {\n                return ResourceManager.GetString(\"ShowVertexNormals\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sht_Reich_JE_ForTheFuture.\n        /// </summary>\n        internal static string Sht_Reich_JE_ForTheFuture {\n            get {\n                return ResourceManager.GetString(\"Sht_Reich_JE_ForTheFuture\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sht_Reich_JE_Vanquish.\n        /// </summary>\n        internal static string Sht_Reich_JE_Vanquish {\n            get {\n                return ResourceManager.GetString(\"Sht_Reich_JE_Vanquish\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sht_Reich_JE_WeControl.\n        /// </summary>\n        internal static string Sht_Reich_JE_WeControl {\n            get {\n                return ResourceManager.GetString(\"Sht_Reich_JE_WeControl\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sht_Reich_JE_YouAreTheWeakLink.\n        /// </summary>\n        internal static string Sht_Reich_JE_YouAreTheWeakLink {\n            get {\n                return ResourceManager.GetString(\"Sht_Reich_JE_YouAreTheWeakLink\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sht_Reich_JE_YourFinalDay.\n        /// </summary>\n        internal static string Sht_Reich_JE_YourFinalDay {\n            get {\n                return ResourceManager.GetString(\"Sht_Reich_JE_YourFinalDay\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Kill the target\n        ///.\n        /// </summary>\n        internal static string SIDE_MISSION_01_ASSASSINATION_Description {\n            get {\n                return ResourceManager.GetString(\"SIDE_MISSION_01_ASSASSINATION_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Side mission.\n        /// </summary>\n        internal static string SideMission {\n            get {\n                return ResourceManager.GetString(\"SideMission\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Silicon.\n        /// </summary>\n        internal static string Silicon_01 {\n            get {\n                return ResourceManager.GetString(\"Silicon_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Silver.\n        /// </summary>\n        internal static string Silver_01 {\n            get {\n                return ResourceManager.GetString(\"Silver_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Simulate lost messages sent out.\n        /// </summary>\n        internal static string SimulateLostMessages {\n            get {\n                return ResourceManager.GetString(\"SimulateLostMessages\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Simulate slow draw.\n        /// </summary>\n        internal static string SimulateSlowDraw {\n            get {\n                return ResourceManager.GetString(\"SimulateSlowDraw\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Simulate slow update.\n        /// </summary>\n        internal static string SimulateSlowUpdate {\n            get {\n                return ResourceManager.GetString(\"SimulateSlowUpdate\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sir Geraint.\n        /// </summary>\n        internal static string SIR_GERAINT {\n            get {\n                return ResourceManager.GetString(\"SIR_GERAINT\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Slave.\n        /// </summary>\n        internal static string Slave {\n            get {\n                return ResourceManager.GetString(\"Slave\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string SLAVER_BASE_1_DESTROY_BATTERIES_Description {\n            get {\n                return ResourceManager.GetString(\"SLAVER_BASE_1_DESTROY_BATTERIES_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Destroy backup batteries.\n        /// </summary>\n        internal static string SLAVER_BASE_1_DESTROY_BATTERIES_Name {\n            get {\n                return ResourceManager.GetString(\"SLAVER_BASE_1_DESTROY_BATTERIES_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string SLAVER_BASE_1_DESTROY_ENEMIES_Description {\n            get {\n                return ResourceManager.GetString(\"SLAVER_BASE_1_DESTROY_ENEMIES_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Destroy enemy reinforcements.\n        /// </summary>\n        internal static string SLAVER_BASE_1_DESTROY_ENEMIES_Name {\n            get {\n                return ResourceManager.GetString(\"SLAVER_BASE_1_DESTROY_ENEMIES_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string SLAVER_BASE_1_DESTROY_GENERATOR_Description {\n            get {\n                return ResourceManager.GetString(\"SLAVER_BASE_1_DESTROY_GENERATOR_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Destroy generators.\n        /// </summary>\n        internal static string SLAVER_BASE_1_DESTROY_GENERATOR_Name {\n            get {\n                return ResourceManager.GetString(\"SLAVER_BASE_1_DESTROY_GENERATOR_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string SLAVER_BASE_1_DIALOG_1_Description {\n            get {\n                return ResourceManager.GetString(\"SLAVER_BASE_1_DIALOG_1_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Find the best way inside.\n        /// </summary>\n        internal static string SLAVER_BASE_1_DIALOG_1_Name {\n            get {\n                return ResourceManager.GetString(\"SLAVER_BASE_1_DIALOG_1_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string SLAVER_BASE_1_DIALOG_10_Description {\n            get {\n                return ResourceManager.GetString(\"SLAVER_BASE_1_DIALOG_10_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Watch the mothership leave.\n        /// </summary>\n        internal static string SLAVER_BASE_1_DIALOG_10_Name {\n            get {\n                return ResourceManager.GetString(\"SLAVER_BASE_1_DIALOG_10_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string SLAVER_BASE_1_DIALOG_2_Description {\n            get {\n                return ResourceManager.GetString(\"SLAVER_BASE_1_DIALOG_2_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Disable the transmitter.\n        /// </summary>\n        internal static string SLAVER_BASE_1_DIALOG_2_Name {\n            get {\n                return ResourceManager.GetString(\"SLAVER_BASE_1_DIALOG_2_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string SLAVER_BASE_1_DIALOG_6_Description {\n            get {\n                return ResourceManager.GetString(\"SLAVER_BASE_1_DIALOG_6_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Find out where pilots are held.\n        /// </summary>\n        internal static string SLAVER_BASE_1_DIALOG_6_Name {\n            get {\n                return ResourceManager.GetString(\"SLAVER_BASE_1_DIALOG_6_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string SLAVER_BASE_1_DIALOG_7_Description {\n            get {\n                return ResourceManager.GetString(\"SLAVER_BASE_1_DIALOG_7_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Protect the slaves.\n        /// </summary>\n        internal static string SLAVER_BASE_1_DIALOG_7_Name {\n            get {\n                return ResourceManager.GetString(\"SLAVER_BASE_1_DIALOG_7_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string SLAVER_BASE_1_DIALOG_9_Description {\n            get {\n                return ResourceManager.GetString(\"SLAVER_BASE_1_DIALOG_9_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Help slaves.\n        /// </summary>\n        internal static string SLAVER_BASE_1_DIALOG_9_Name {\n            get {\n                return ResourceManager.GetString(\"SLAVER_BASE_1_DIALOG_9_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string SLAVER_BASE_1_FIND_PRISON_Description {\n            get {\n                return ResourceManager.GetString(\"SLAVER_BASE_1_FIND_PRISON_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Find the prison.\n        /// </summary>\n        internal static string SLAVER_BASE_1_FIND_PRISON_Name {\n            get {\n                return ResourceManager.GetString(\"SLAVER_BASE_1_FIND_PRISON_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string SLAVER_BASE_1_FIND_SLAVES_Description {\n            get {\n                return ResourceManager.GetString(\"SLAVER_BASE_1_FIND_SLAVES_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Free the pilots.\n        /// </summary>\n        internal static string SLAVER_BASE_1_FIND_SLAVES_Name {\n            get {\n                return ResourceManager.GetString(\"SLAVER_BASE_1_FIND_SLAVES_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string SLAVER_BASE_1_FREE_SLAVES_2_Description {\n            get {\n                return ResourceManager.GetString(\"SLAVER_BASE_1_FREE_SLAVES_2_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Free the slaves.\n        /// </summary>\n        internal static string SLAVER_BASE_1_FREE_SLAVES_2_Name {\n            get {\n                return ResourceManager.GetString(\"SLAVER_BASE_1_FREE_SLAVES_2_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string SLAVER_BASE_1_FREE_SLAVES_Description {\n            get {\n                return ResourceManager.GetString(\"SLAVER_BASE_1_FREE_SLAVES_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Free the slaves.\n        /// </summary>\n        internal static string SLAVER_BASE_1_FREE_SLAVES_Name {\n            get {\n                return ResourceManager.GetString(\"SLAVER_BASE_1_FREE_SLAVES_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string SLAVER_BASE_1_HACK_HANGAR_Description {\n            get {\n                return ResourceManager.GetString(\"SLAVER_BASE_1_HACK_HANGAR_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Open ship doors.\n        /// </summary>\n        internal static string SLAVER_BASE_1_HACK_HANGAR_Name {\n            get {\n                return ResourceManager.GetString(\"SLAVER_BASE_1_HACK_HANGAR_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string SLAVER_BASE_1_HACK_NUKE_Description {\n            get {\n                return ResourceManager.GetString(\"SLAVER_BASE_1_HACK_NUKE_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Open hangar doors.\n        /// </summary>\n        internal static string SLAVER_BASE_1_HACK_NUKE_Name {\n            get {\n                return ResourceManager.GetString(\"SLAVER_BASE_1_HACK_NUKE_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Not much is publicly known about the slaver base called Delta Earnings. Several merchants \n        ///report having been ambushed by slaver forces here, as well as at other colonies and \n        ///outposts in the vicinity. Delta Earnings appears to be the home base for one of the many \n        ///existent slaver groups, each of which has a specific hierarchy of its own, as well as a \n        ///reputation for dealing in second-hand equipment..\n        /// </summary>\n        internal static string SLAVER_BASE_1_SectorDescription {\n            get {\n                return ResourceManager.GetString(\"SLAVER_BASE_1_SectorDescription\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to SLAVER BASE DELTA EARNINGS.\n        /// </summary>\n        internal static string SLAVER_BASE_1_SectorName {\n            get {\n                return ResourceManager.GetString(\"SLAVER_BASE_1_SectorName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Slaver_Base_2_Asteroid.\n        /// </summary>\n        internal static string Slaver_Base_2_Asteroid {\n            get {\n                return ResourceManager.GetString(\"Slaver_Base_2_Asteroid\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Blow up the power generator.\n        /// </summary>\n        internal static string SLAVER_BASE_2_BREAK_THE_CHAINS {\n            get {\n                return ResourceManager.GetString(\"SLAVER_BASE_2_BREAK_THE_CHAINS\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Open the prison cell.\n        /// </summary>\n        internal static string SLAVER_BASE_2_FREE_SLAVES {\n            get {\n                return ResourceManager.GetString(\"SLAVER_BASE_2_FREE_SLAVES\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Destroy all turrets.\n        /// </summary>\n        internal static string SLAVER_BASE_2_PARALYZE_DEFENSE {\n            get {\n                return ResourceManager.GetString(\"SLAVER_BASE_2_PARALYZE_DEFENSE\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Paralyze the defense by destroying all turrets.\n        ///.\n        /// </summary>\n        internal static string SLAVER_BASE_2_PARALYZE_DEFENSE_Description {\n            get {\n                return ResourceManager.GetString(\"SLAVER_BASE_2_PARALYZE_DEFENSE_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Grand Burrow is an unwelcoming place where hundreds of captives wait to be sold as \n        ///slaves to new “masters”. Many pilots choose suicide over the prospect of capture by slavers. \n        ///To be turned into a slave is considered a fate worse than death: several neural poisons as \n        ///well as cybernetic devices are implanted in the victim’s body and brain, resulting in an \n        ///inability to refuse orders – even to voluntarily terminate one’s own life..\n        /// </summary>\n        internal static string SLAVER_BASE_2_SectorDescription {\n            get {\n                return ResourceManager.GetString(\"SLAVER_BASE_2_SectorDescription\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to SLAVER BASE GRAND BURROW.\n        /// </summary>\n        internal static string SLAVER_BASE_2_SectorName {\n            get {\n                return ResourceManager.GetString(\"SLAVER_BASE_2_SectorName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Slaver base Delta Earnings.\n        /// </summary>\n        internal static string SLAVER_BASE_DELTA_EARNINGS {\n            get {\n                return ResourceManager.GetString(\"SLAVER_BASE_DELTA_EARNINGS\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Slaver base Delta Earnings.\n        /// </summary>\n        internal static string SLAVER_BASE_DELTA_EARNINGS_Description {\n            get {\n                return ResourceManager.GetString(\"SLAVER_BASE_DELTA_EARNINGS_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Slaver base Grand Burrow.\n        /// </summary>\n        internal static string SLAVER_BASE_GRAND_BURROW {\n            get {\n                return ResourceManager.GetString(\"SLAVER_BASE_GRAND_BURROW\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Eliminate the slaver air defense, destroy the power generator, free the slaves and take them to the transport.\n        ///.\n        /// </summary>\n        internal static string SLAVER_BASE_GRAND_BURROW_Description {\n            get {\n                return ResourceManager.GetString(\"SLAVER_BASE_GRAND_BURROW_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Slaver base asteroid.\n        /// </summary>\n        internal static string slaver_baseAsteroid {\n            get {\n                return ResourceManager.GetString(\"slaver_baseAsteroid\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Slaver base captain.\n        /// </summary>\n        internal static string SlaverBaseCaptain {\n            get {\n                return ResourceManager.GetString(\"SlaverBaseCaptain\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cole.\n        /// </summary>\n        internal static string SlaverCole {\n            get {\n                return ResourceManager.GetString(\"SlaverCole\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Jeff.\n        /// </summary>\n        internal static string SlaverJeff {\n            get {\n                return ResourceManager.GetString(\"SlaverJeff\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Slaver leader.\n        /// </summary>\n        internal static string SlaverLeader {\n            get {\n                return ResourceManager.GetString(\"SlaverLeader\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Slow down, don’t let him notice you!.\n        /// </summary>\n        internal static string SlowDown {\n            get {\n                return ResourceManager.GetString(\"SlowDown\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Small Pirate Base 2.\n        /// </summary>\n        internal static string SMALL_PIRATE_BASE_2 {\n            get {\n                return ResourceManager.GetString(\"SMALL_PIRATE_BASE_2\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Small_Pirate_Base_2_Asteroid.\n        /// </summary>\n        internal static string Small_Pirate_Base_2_Asteroid {\n            get {\n                return ResourceManager.GetString(\"Small_Pirate_Base_2_Asteroid\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Destroy the station\n        ///.\n        /// </summary>\n        internal static string SMALL_PIRATE_BASE_2_Description {\n            get {\n                return ResourceManager.GetString(\"SMALL_PIRATE_BASE_2_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Small_Pirate_Base_3_1.\n        /// </summary>\n        internal static string Small_Pirate_Base_3_1 {\n            get {\n                return ResourceManager.GetString(\"Small_Pirate_Base_3_1\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Small_Pirate_Base_3_2.\n        /// </summary>\n        internal static string Small_Pirate_Base_3_2 {\n            get {\n                return ResourceManager.GetString(\"Small_Pirate_Base_3_2\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Small_Pirate_Base_3_3.\n        /// </summary>\n        internal static string Small_Pirate_Base_3_3 {\n            get {\n                return ResourceManager.GetString(\"Small_Pirate_Base_3_3\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Small_Pirate_Base_Asteroid.\n        /// </summary>\n        internal static string Small_Pirate_Base_Asteroid {\n            get {\n                return ResourceManager.GetString(\"Small_Pirate_Base_Asteroid\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to small2_asteroids.\n        /// </summary>\n        internal static string small2_asteroids {\n            get {\n                return ResourceManager.GetString(\"small2_asteroids\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to small3_asteroids.\n        /// </summary>\n        internal static string small3_asteroids {\n            get {\n                return ResourceManager.GetString(\"small3_asteroids\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to SmallShip.\n        /// </summary>\n        internal static string SmallShip {\n            get {\n                return ResourceManager.GetString(\"SmallShip\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Small Ship.\n        /// </summary>\n        internal static string SmallShipContextMenuCaption {\n            get {\n                return ResourceManager.GetString(\"SmallShipContextMenuCaption\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to DOON | Ship of class Doon | Weight: 5200 kg | Max weapons: 4 | Max cargo capacity: 36.\n        /// </summary>\n        internal static string SmallShipDoon {\n            get {\n                return ResourceManager.GetString(\"SmallShipDoon\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Doon.\n        /// </summary>\n        internal static string SmallShipDoonName {\n            get {\n                return ResourceManager.GetString(\"SmallShipDoonName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to HAMMER | Ship of class Hammer | Weight: 7500 kg | Max weapons: 8 | Max cargo capacity: 60.\n        /// </summary>\n        internal static string SmallShipHammer {\n            get {\n                return ResourceManager.GetString(\"SmallShipHammer\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hammer.\n        /// </summary>\n        internal static string SmallShipHammerName {\n            get {\n                return ResourceManager.GetString(\"SmallShipHammerName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to HAWK | Ship of class Hawk | Weight: 6600 kg | Max weapons: 8 | Max cargo capacity: 36.\n        /// </summary>\n        internal static string SmallShipHawk {\n            get {\n                return ResourceManager.GetString(\"SmallShipHawk\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hawk.\n        /// </summary>\n        internal static string SmallShipHawkName {\n            get {\n                return ResourceManager.GetString(\"SmallShipHawkName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to JACKNIFE | Ship of class Jacknife | Weight: 6100 kg | Max weapons: 6 | Max cargo capacity: 36.\n        /// </summary>\n        internal static string SmallShipJackKnife {\n            get {\n                return ResourceManager.GetString(\"SmallShipJackKnife\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Jacknife.\n        /// </summary>\n        internal static string SmallShipJackKnifeName {\n            get {\n                return ResourceManager.GetString(\"SmallShipJackKnifeName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to LEVIATHAN | Ship of class Leviathan | Weight: 9000 kg | Max weapons: 8 | Max cargo capacity: 36.\n        /// </summary>\n        internal static string SmallShipLeviathan {\n            get {\n                return ResourceManager.GetString(\"SmallShipLeviathan\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Leviathan.\n        /// </summary>\n        internal static string SmallShipLeviathanName {\n            get {\n                return ResourceManager.GetString(\"SmallShipLeviathanName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to LIBERATOR | Ship of class Liberator | Weight: 7000 kg | Max weapons: 6 | Max cargo capacity: 60.\n        /// </summary>\n        internal static string SmallShipMinerShip01 {\n            get {\n                return ResourceManager.GetString(\"SmallShipMinerShip01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Liberator.\n        /// </summary>\n        internal static string SmallShipMinerShip01Name {\n            get {\n                return ResourceManager.GetString(\"SmallShipMinerShip01Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to ENFORCER | Ship of class Enforcer | Weight: 8000 kg | Max weapons: 6 | Max cargo capacity: 60.\n        /// </summary>\n        internal static string SmallShipMinerShip02 {\n            get {\n                return ResourceManager.GetString(\"SmallShipMinerShip02\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Enforcer.\n        /// </summary>\n        internal static string SmallShipMinerShip02Name {\n            get {\n                return ResourceManager.GetString(\"SmallShipMinerShip02Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to KAMMLER | Ship of class Kammler | Weight: 8500 kg | Max weapons: 6 | Max cargo capacity: 60.\n        /// </summary>\n        internal static string SmallShipMinerShip03 {\n            get {\n                return ResourceManager.GetString(\"SmallShipMinerShip03\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Kammler.\n        /// </summary>\n        internal static string SmallShipMinerShip03Name {\n            get {\n                return ResourceManager.GetString(\"SmallShipMinerShip03Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to GETTYSBURG | Ship of class Gettysburg | Weight: 6600 kg | Max weapons: 6 | Max cargo capacity: 60.\n        /// </summary>\n        internal static string SmallShipMinerShip04 {\n            get {\n                return ResourceManager.GetString(\"SmallShipMinerShip04\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Gettysburg.\n        /// </summary>\n        internal static string SmallShipMinerShip04Name {\n            get {\n                return ResourceManager.GetString(\"SmallShipMinerShip04Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to VIRGINIA | Ship of class Virginia | Weight: 5000 kg | Max weapons: 4 | Max cargo capacity: 36.\n        /// </summary>\n        internal static string SmallShipMinerShip05 {\n            get {\n                return ResourceManager.GetString(\"SmallShipMinerShip05\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Virginia.\n        /// </summary>\n        internal static string SmallShipMinerShip05Name {\n            get {\n                return ResourceManager.GetString(\"SmallShipMinerShip05Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to BAER | Ship of class Baer | Weight: 5500 kg | Max weapons: 4 | Max cargo capacity: 36.\n        /// </summary>\n        internal static string SmallShipMinerShip06 {\n            get {\n                return ResourceManager.GetString(\"SmallShipMinerShip06\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Baer.\n        /// </summary>\n        internal static string SmallShipMinerShip06Name {\n            get {\n                return ResourceManager.GetString(\"SmallShipMinerShip06Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to HEWER | Ship of class Hewer | Weight: 4300 kg | Max weapons: 2 | Max cargo capacity: 36.\n        /// </summary>\n        internal static string SmallShipMinerShip07 {\n            get {\n                return ResourceManager.GetString(\"SmallShipMinerShip07\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hewer.\n        /// </summary>\n        internal static string SmallShipMinerShip07Name {\n            get {\n                return ResourceManager.GetString(\"SmallShipMinerShip07Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to RAZOR CLAW | Ship of class Razor Claw | Weight: 4800 kg | Max weapons: 4 | Max cargo capacity: 36.\n        /// </summary>\n        internal static string SmallShipMinerShip08 {\n            get {\n                return ResourceManager.GetString(\"SmallShipMinerShip08\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Razor Claw.\n        /// </summary>\n        internal static string SmallShipMinerShip08Name {\n            get {\n                return ResourceManager.GetString(\"SmallShipMinerShip08Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to GREISER | Ship of class Greiser | Weight: 6200 kg | Max weapons: 6 | Max cargo capacity: 36.\n        /// </summary>\n        internal static string SmallShipMinerShip09 {\n            get {\n                return ResourceManager.GetString(\"SmallShipMinerShip09\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Greiser.\n        /// </summary>\n        internal static string SmallShipMinerShip09Name {\n            get {\n                return ResourceManager.GetString(\"SmallShipMinerShip09Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to TRACER | Ship of class Tracer | Weight: 5900 kg | Max weapons: 6 | Max cargo capacity: 36.\n        /// </summary>\n        internal static string SmallShipMinerShip10 {\n            get {\n                return ResourceManager.GetString(\"SmallShipMinerShip10\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tracer.\n        /// </summary>\n        internal static string SmallShipMinerShip10Name {\n            get {\n                return ResourceManager.GetString(\"SmallShipMinerShip10Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to ORG | Ship of class Org | Weight: 9900 kg | Max weapons: 10 | Max cargo capacity: 60.\n        /// </summary>\n        internal static string SmallShipOrg {\n            get {\n                return ResourceManager.GetString(\"SmallShipOrg\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Org.\n        /// </summary>\n        internal static string SmallShipOrgName {\n            get {\n                return ResourceManager.GetString(\"SmallShipOrgName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to PHOENIX | Ship of class Phoenix | Weight: 6300 kg | Max weapons: 8 | Max cargo capacity: 24.\n        /// </summary>\n        internal static string SmallShipPhoenix {\n            get {\n                return ResourceManager.GetString(\"SmallShipPhoenix\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Phoenix.\n        /// </summary>\n        internal static string SmallShipPhoenixName {\n            get {\n                return ResourceManager.GetString(\"SmallShipPhoenixName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Dead.\n        /// </summary>\n        internal static string SmallShipPilotDead {\n            get {\n                return ResourceManager.GetString(\"SmallShipPilotDead\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to ROCKHEATER | Ship of class Rockheater | Weight: 5500 kg | Max weapons: 4 | Max cargo capacity: 24.\n        /// </summary>\n        internal static string SmallShipRockheater {\n            get {\n                return ResourceManager.GetString(\"SmallShipRockheater\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Rockheater.\n        /// </summary>\n        internal static string SmallShipRockheaterName {\n            get {\n                return ResourceManager.GetString(\"SmallShipRockheaterName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to STANISLAV | Ship of class Stanislav | Weight: 23000 kg | Max weapons: 10 | Max cargo capacity: 60.\n        /// </summary>\n        internal static string SmallShipStanislav {\n            get {\n                return ResourceManager.GetString(\"SmallShipStanislav\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Stanislav.\n        /// </summary>\n        internal static string SmallShipStanislavName {\n            get {\n                return ResourceManager.GetString(\"SmallShipStanislavName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to STEELHEAD | Ship of class Steelhead | Weight: 6000 kg | Max weapons: 6 | Max cargo capacity: 60.\n        /// </summary>\n        internal static string SmallShipSteelHead {\n            get {\n                return ResourceManager.GetString(\"SmallShipSteelHead\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Steelhead.\n        /// </summary>\n        internal static string SmallShipSteelHeadName {\n            get {\n                return ResourceManager.GetString(\"SmallShipSteelHeadName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to FEDER | Ship of class Feder | Weight: 25000 kg | Max weapons: 10 | Max cargo capacity: 60.\n        /// </summary>\n        internal static string SmallShipTalon {\n            get {\n                return ResourceManager.GetString(\"SmallShipTalon\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Feder.\n        /// </summary>\n        internal static string SmallShipTalonName {\n            get {\n                return ResourceManager.GetString(\"SmallShipTalonName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Small ship templates.\n        /// </summary>\n        internal static string SmallShipTemplates {\n            get {\n                return ResourceManager.GetString(\"SmallShipTemplates\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to YG | Ship of class Yg | Weight: 7500 kg | Max weapons: 8 | Max cargo capacity: 24.\n        /// </summary>\n        internal static string SmallShipYg {\n            get {\n                return ResourceManager.GetString(\"SmallShipYg\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Yg.\n        /// </summary>\n        internal static string SmallShipYgName {\n            get {\n                return ResourceManager.GetString(\"SmallShipYgName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Smart waves test mission.\n        /// </summary>\n        internal static string SMART_WAVES_TEST_MISSION {\n            get {\n                return ResourceManager.GetString(\"SMART_WAVES_TEST_MISSION\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Testing mission for smart waves, 4 bots are always attacking, never spawns near to player\n        ///.\n        /// </summary>\n        internal static string SMART_WAVES_TEST_MISSION_Description {\n            get {\n                return ResourceManager.GetString(\"SMART_WAVES_TEST_MISSION_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Smoke bomb.\n        /// </summary>\n        internal static string SmokeBombHud {\n            get {\n                return ResourceManager.GetString(\"SmokeBombHud\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to 15 Degrees.\n        /// </summary>\n        internal static string Snap15Deg {\n            get {\n                return ResourceManager.GetString(\"Snap15Deg\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to 45 Degrees.\n        /// </summary>\n        internal static string Snap45Degs {\n            get {\n                return ResourceManager.GetString(\"Snap45Degs\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to 5 Degrees.\n        /// </summary>\n        internal static string Snap5Deg {\n            get {\n                return ResourceManager.GetString(\"Snap5Deg\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to 90 Degrees.\n        /// </summary>\n        internal static string Snap90Deg {\n            get {\n                return ResourceManager.GetString(\"Snap90Deg\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Off.\n        /// </summary>\n        internal static string SnapOff {\n            get {\n                return ResourceManager.GetString(\"SnapOff\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Can’t link these snap points..\n        /// </summary>\n        internal static string SnapPointLinkError {\n            get {\n                return ResourceManager.GetString(\"SnapPointLinkError\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Snap points.\n        /// </summary>\n        internal static string SnapPoints {\n            get {\n                return ResourceManager.GetString(\"SnapPoints\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Snow 1.\n        /// </summary>\n        internal static string Snow_01 {\n            get {\n                return ResourceManager.GetString(\"Snow_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Soften voxels.\n        /// </summary>\n        internal static string SoftenVoxels {\n            get {\n                return ResourceManager.GetString(\"SoftenVoxels\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Solar_Factory_EAC_Asteroid.\n        /// </summary>\n        internal static string Solar_Factory_EAC_Asteroid {\n            get {\n                return ResourceManager.GetString(\"Solar_Factory_EAC_Asteroid\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Chinese solar plant.\n        /// </summary>\n        internal static string SOLAR_PLANT_CHINA {\n            get {\n                return ResourceManager.GetString(\"SOLAR_PLANT_CHINA\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The Chinese solar plant must be destroyed.\n        ///.\n        /// </summary>\n        internal static string SOLAR_PLANT_CHINA_Description {\n            get {\n                return ResourceManager.GetString(\"SOLAR_PLANT_CHINA_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Solar factory – EAC.\n        /// </summary>\n        internal static string SOLAR_PLANT_EAC {\n            get {\n                return ResourceManager.GetString(\"SOLAR_PLANT_EAC\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Total {0}% destroyed.\n        /// </summary>\n        internal static string SolarPanelsLeft {\n            get {\n                return ResourceManager.GetString(\"SolarPanelsLeft\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Solar system map.\n        /// </summary>\n        internal static string SolarSystemMap {\n            get {\n                return ResourceManager.GetString(\"SolarSystemMap\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to SOLAR WIND ARMOR | Projectile/explosion damage reduction: 0% | Solar wind damage reduction: 100%.\n        /// </summary>\n        internal static string SolarWindArmor {\n            get {\n                return ResourceManager.GetString(\"SolarWindArmor\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sorry, but the settings you have chosen are not supported by your hardware..\n        /// </summary>\n        internal static string SorryButSelectedSettingsAreNotSupportedByYourHardware {\n            get {\n                return ResourceManager.GetString(\"SorryButSelectedSettingsAreNotSupportedByYourHardware\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sound.\n        /// </summary>\n        internal static string SoundInfluenceSphereType {\n            get {\n                return ResourceManager.GetString(\"SoundInfluenceSphereType\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Space.\n        /// </summary>\n        internal static string Space {\n            get {\n                return ResourceManager.GetString(\"Space\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Spawned bots.\n        /// </summary>\n        internal static string SpawnedBots {\n            get {\n                return ResourceManager.GetString(\"SpawnedBots\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Spawn in groups.\n        /// </summary>\n        internal static string SpawnInGroups {\n            get {\n                return ResourceManager.GetString(\"SpawnInGroups\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to SpawnPoint.\n        /// </summary>\n        internal static string SpawnPoint {\n            get {\n                return ResourceManager.GetString(\"SpawnPoint\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Spawn points.\n        /// </summary>\n        internal static string SpawnPoints {\n            get {\n                return ResourceManager.GetString(\"SpawnPoints\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Special weapons.\n        /// </summary>\n        internal static string SpecialWeapons {\n            get {\n                return ResourceManager.GetString(\"SpecialWeapons\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Spectator position:     .\n        /// </summary>\n        internal static string SpectatorPosition {\n            get {\n                return ResourceManager.GetString(\"SpectatorPosition\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Spectator speed indicator:      .\n        /// </summary>\n        internal static string SpectatorSpeedIndicator {\n            get {\n                return ResourceManager.GetString(\"SpectatorSpeedIndicator\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Specular color.\n        /// </summary>\n        internal static string SpecularColor {\n            get {\n                return ResourceManager.GetString(\"SpecularColor\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Spherical explosive.\n        /// </summary>\n        internal static string SphereExplosiveHud {\n            get {\n                return ResourceManager.GetString(\"SphereExplosiveHud\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sphere Full 1024.\n        /// </summary>\n        internal static string SphereFull_1024 {\n            get {\n                return ResourceManager.GetString(\"SphereFull_1024\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sphere Full 128.\n        /// </summary>\n        internal static string SphereFull_128 {\n            get {\n                return ResourceManager.GetString(\"SphereFull_128\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sphere Full 256.\n        /// </summary>\n        internal static string SphereFull_256 {\n            get {\n                return ResourceManager.GetString(\"SphereFull_256\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sphere Full 512.\n        /// </summary>\n        internal static string SphereFull_512 {\n            get {\n                return ResourceManager.GetString(\"SphereFull_512\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sphere Full 64.\n        /// </summary>\n        internal static string SphereFull_64 {\n            get {\n                return ResourceManager.GetString(\"SphereFull_64\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to 128x128x128\n        ///Sphere with large cut-out.\n        /// </summary>\n        internal static string SphereWithLargeCutOut_128x128x128 {\n            get {\n                return ResourceManager.GetString(\"SphereWithLargeCutOut_128x128x128\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to SpotLight.\n        /// </summary>\n        internal static string SpotLight {\n            get {\n                return ResourceManager.GetString(\"SpotLight\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Standard container 1.\n        /// </summary>\n        internal static string Standard_Container_1 {\n            get {\n                return ResourceManager.GetString(\"Standard_Container_1\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Standard container 2.\n        /// </summary>\n        internal static string Standard_Container_2 {\n            get {\n                return ResourceManager.GetString(\"Standard_Container_2\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Standard container 3.\n        /// </summary>\n        internal static string Standard_Container_3 {\n            get {\n                return ResourceManager.GetString(\"Standard_Container_3\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Standard container 4.\n        /// </summary>\n        internal static string Standard_Container_4 {\n            get {\n                return ResourceManager.GetString(\"Standard_Container_4\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Start!.\n        /// </summary>\n        internal static string Start {\n            get {\n                return ResourceManager.GetString(\"Start\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Starting editor… please wait..\n        /// </summary>\n        internal static string StartEditorInProgressPleaseWait {\n            get {\n                return ResourceManager.GetString(\"StartEditorInProgressPleaseWait\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Started missions.\n        /// </summary>\n        internal static string StartedMissions {\n            get {\n                return ResourceManager.GetString(\"StartedMissions\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You do not have permission to start this game, or wrong input parameters..\n        /// </summary>\n        internal static string StartGameFailed {\n            get {\n                return ResourceManager.GetString(\"StartGameFailed\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Starting game… please wait..\n        /// </summary>\n        internal static string StartGameInProgressPleaseWait {\n            get {\n                return ResourceManager.GetString(\"StartGameInProgressPleaseWait\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Starting in progress.\n        /// </summary>\n        internal static string StartingProgress {\n            get {\n                return ResourceManager.GetString(\"StartingProgress\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Starting the transmission….\n        /// </summary>\n        internal static string StartingTransmission {\n            get {\n                return ResourceManager.GetString(\"StartingTransmission\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Static.\n        /// </summary>\n        internal static string Static {\n            get {\n                return ResourceManager.GetString(\"Static\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to 10 km.\n        /// </summary>\n        internal static string StaticAsteroid10000m {\n            get {\n                return ResourceManager.GetString(\"StaticAsteroid10000m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to 1 km.\n        /// </summary>\n        internal static string StaticAsteroid1000m {\n            get {\n                return ResourceManager.GetString(\"StaticAsteroid1000m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to 100 meters.\n        /// </summary>\n        internal static string StaticAsteroid100m {\n            get {\n                return ResourceManager.GetString(\"StaticAsteroid100m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to 10 meters.\n        /// </summary>\n        internal static string StaticAsteroid10m {\n            get {\n                return ResourceManager.GetString(\"StaticAsteroid10m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to 2 km.\n        /// </summary>\n        internal static string StaticAsteroid2000m {\n            get {\n                return ResourceManager.GetString(\"StaticAsteroid2000m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to 20 meters.\n        /// </summary>\n        internal static string StaticAsteroid20m {\n            get {\n                return ResourceManager.GetString(\"StaticAsteroid20m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to 300 meters.\n        /// </summary>\n        internal static string StaticAsteroid300m {\n            get {\n                return ResourceManager.GetString(\"StaticAsteroid300m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to 30 meters.\n        /// </summary>\n        internal static string StaticAsteroid30m {\n            get {\n                return ResourceManager.GetString(\"StaticAsteroid30m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to 40 km.\n        /// </summary>\n        internal static string StaticAsteroid40000m {\n            get {\n                return ResourceManager.GetString(\"StaticAsteroid40000m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to 5 km.\n        /// </summary>\n        internal static string StaticAsteroid5000m {\n            get {\n                return ResourceManager.GetString(\"StaticAsteroid5000m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to 500 meters.\n        /// </summary>\n        internal static string StaticAsteroid500m {\n            get {\n                return ResourceManager.GetString(\"StaticAsteroid500m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to 50 meters.\n        /// </summary>\n        internal static string StaticAsteroid50m {\n            get {\n                return ResourceManager.GetString(\"StaticAsteroid50m\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Static asteroid.\n        /// </summary>\n        internal static string StaticAsteroidContextMenuCaption {\n            get {\n                return ResourceManager.GetString(\"StaticAsteroidContextMenuCaption\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Steam offline!.\n        /// </summary>\n        internal static string SteamInvalidTicketCaption {\n            get {\n                return ResourceManager.GetString(\"SteamInvalidTicketCaption\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Steam is offline, you have been probably logged out from Steam, please login to Steam and try again.\n        ///Make sure you&apos;re not using offline mode (Steam menu / Go online...)\n        ///When this problem persist, please send your logfile to support@minerwars.com.\n        /// </summary>\n        internal static string SteamInvalidTicketText {\n            get {\n                return ResourceManager.GetString(\"SteamInvalidTicketText\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to No products owned.\n        /// </summary>\n        internal static string SteamNoProductsCaption {\n            get {\n                return ResourceManager.GetString(\"SteamNoProductsCaption\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You have activated MinerWars on Steam using Steam key from Profile page,\n        ///however you don&apos;t own MinerWars, so you&apos;re unable to play on Steam.\n        ///Buy MinerWars on www.minerwars.com to play on Steam..\n        /// </summary>\n        internal static string SteamNoProductsText {\n            get {\n                return ResourceManager.GetString(\"SteamNoProductsText\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Steam connection error.\n        /// </summary>\n        internal static string SteamRegisterErrorCaption {\n            get {\n                return ResourceManager.GetString(\"SteamRegisterErrorCaption\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cannot connect Steam account to MinerWars,\n        ///please contact MinerWars support at support@minerwars.com.\n        ///\n        ///Please provide following information:\n        ///SteamId: {0}\n        ///Error Message: {1}\n        ///CD key: {2}\n        ///Where did you bought MinerWars\n        ///\n        ///(data was copied to clipboard).\n        /// </summary>\n        internal static string SteamRegisterErrorText {\n            get {\n                return ResourceManager.GetString(\"SteamRegisterErrorText\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You don&apos;t own this game on Steam.\n        /// </summary>\n        internal static string SteamYouDontOwnTheGameCaption {\n            get {\n                return ResourceManager.GetString(\"SteamYouDontOwnTheGameCaption\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You don&apos;t own this game on Steam or game was not launched through steam.\n        /// </summary>\n        internal static string SteamYouDontOwnTheGameText {\n            get {\n                return ResourceManager.GetString(\"SteamYouDontOwnTheGameText\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Stone 1.\n        /// </summary>\n        internal static string Stone_01 {\n            get {\n                return ResourceManager.GetString(\"Stone_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Stone 2.\n        /// </summary>\n        internal static string Stone_02 {\n            get {\n                return ResourceManager.GetString(\"Stone_02\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Stone 3.\n        /// </summary>\n        internal static string Stone_03 {\n            get {\n                return ResourceManager.GetString(\"Stone_03\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Stone 4.\n        /// </summary>\n        internal static string Stone_04 {\n            get {\n                return ResourceManager.GetString(\"Stone_04\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Stone 5.\n        /// </summary>\n        internal static string Stone_05 {\n            get {\n                return ResourceManager.GetString(\"Stone_05\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Stone 6.\n        /// </summary>\n        internal static string Stone_06 {\n            get {\n                return ResourceManager.GetString(\"Stone_06\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Stone 7.\n        /// </summary>\n        internal static string Stone_07 {\n            get {\n                return ResourceManager.GetString(\"Stone_07\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Stone 8.\n        /// </summary>\n        internal static string Stone_08 {\n            get {\n                return ResourceManager.GetString(\"Stone_08\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Stone 10.\n        /// </summary>\n        internal static string Stone_10 {\n            get {\n                return ResourceManager.GetString(\"Stone_10\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Stone 13.\n        /// </summary>\n        internal static string Stone_13_Wall_01 {\n            get {\n                return ResourceManager.GetString(\"Stone_13_Wall_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Stone red.\n        /// </summary>\n        internal static string Stone_Red {\n            get {\n                return ResourceManager.GetString(\"Stone_Red\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Story.\n        /// </summary>\n        internal static string Story {\n            get {\n                return ResourceManager.GetString(\"Story\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Story sector can be saved only when its Y coordinate is 0..\n        /// </summary>\n        internal static string StorySectorPositionYMustBeZero {\n            get {\n                return ResourceManager.GetString(\"StorySectorPositionYMustBeZero\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Story sectors.\n        /// </summary>\n        internal static string StorySectors {\n            get {\n                return ResourceManager.GetString(\"StorySectors\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Strafe left.\n        /// </summary>\n        internal static string StrafeLeft {\n            get {\n                return ResourceManager.GetString(\"StrafeLeft\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Strafe right.\n        /// </summary>\n        internal static string StrafeRight {\n            get {\n                return ResourceManager.GetString(\"StrafeRight\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string String1 {\n            get {\n                return ResourceManager.GetString(\"String1\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ammunition box.\n        /// </summary>\n        internal static string subCategoryTypeAmmunitionBox {\n            get {\n                return ResourceManager.GetString(\"subCategoryTypeAmmunitionBox\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Biodome.\n        /// </summary>\n        internal static string subCategoryTypeBiodome {\n            get {\n                return ResourceManager.GetString(\"subCategoryTypeBiodome\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Bridge.\n        /// </summary>\n        internal static string subCategoryTypeBridge {\n            get {\n                return ResourceManager.GetString(\"subCategoryTypeBridge\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cable holders.\n        /// </summary>\n        internal static string subCategoryTypeCableHolders {\n            get {\n                return ResourceManager.GetString(\"subCategoryTypeCableHolders\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Connection boxes.\n        /// </summary>\n        internal static string subCategoryTypeConnectionBoxes {\n            get {\n                return ResourceManager.GetString(\"subCategoryTypeConnectionBoxes\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Docks.\n        /// </summary>\n        internal static string subCategoryTypeDocks {\n            get {\n                return ResourceManager.GetString(\"subCategoryTypeDocks\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Escape pods.\n        /// </summary>\n        internal static string subCategoryTypeEscapePods {\n            get {\n                return ResourceManager.GetString(\"subCategoryTypeEscapePods\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Factory.\n        /// </summary>\n        internal static string subCategoryTypeFactory {\n            get {\n                return ResourceManager.GetString(\"subCategoryTypeFactory\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fuel generation.\n        /// </summary>\n        internal static string subCategoryTypeFuelGeneration {\n            get {\n                return ResourceManager.GetString(\"subCategoryTypeFuelGeneration\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fuel storage.\n        /// </summary>\n        internal static string subCategoryTypeFuelStorage {\n            get {\n                return ResourceManager.GetString(\"subCategoryTypeFuelStorage\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Gas storage.\n        /// </summary>\n        internal static string subCategoryTypeGasStorage {\n            get {\n                return ResourceManager.GetString(\"subCategoryTypeGasStorage\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Junction.\n        /// </summary>\n        internal static string subCategoryTypeJunction {\n            get {\n                return ResourceManager.GetString(\"subCategoryTypeJunction\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Large.\n        /// </summary>\n        internal static string subCategoryTypeLarge {\n            get {\n                return ResourceManager.GetString(\"subCategoryTypeLarge\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Living quarters.\n        /// </summary>\n        internal static string subCategoryTypeLivingQuarters {\n            get {\n                return ResourceManager.GetString(\"subCategoryTypeLivingQuarters\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Loading/Unloading.\n        /// </summary>\n        internal static string subCategoryTypeLoadingUnloading {\n            get {\n                return ResourceManager.GetString(\"subCategoryTypeLoadingUnloading\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Long distance antenna.\n        /// </summary>\n        internal static string subCategoryTypeLongDistanceAntenna {\n            get {\n                return ResourceManager.GetString(\"subCategoryTypeLongDistanceAntenna\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Long Term Thrusters.\n        /// </summary>\n        internal static string subCategoryTypeLongTermThrusters {\n            get {\n                return ResourceManager.GetString(\"subCategoryTypeLongTermThrusters\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ore storage.\n        /// </summary>\n        internal static string subCategoryTypeOreStorage {\n            get {\n                return ResourceManager.GetString(\"subCategoryTypeOreStorage\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Other.\n        /// </summary>\n        internal static string subCategoryTypeOther {\n            get {\n                return ResourceManager.GetString(\"subCategoryTypeOther\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Oxygen generation.\n        /// </summary>\n        internal static string subCategoryTypeOxygenGeneration {\n            get {\n                return ResourceManager.GetString(\"subCategoryTypeOxygenGeneration\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Oxygen storage.\n        /// </summary>\n        internal static string subCategoryTypeOxygenStorage {\n            get {\n                return ResourceManager.GetString(\"subCategoryTypeOxygenStorage\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Passage.\n        /// </summary>\n        internal static string subCategoryTypePassage {\n            get {\n                return ResourceManager.GetString(\"subCategoryTypePassage\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Power generation.\n        /// </summary>\n        internal static string subCategoryTypePowerGeneration {\n            get {\n                return ResourceManager.GetString(\"subCategoryTypePowerGeneration\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Power storage.\n        /// </summary>\n        internal static string subCategoryTypePowerStorage {\n            get {\n                return ResourceManager.GetString(\"subCategoryTypePowerStorage\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Refinery.\n        /// </summary>\n        internal static string subCategoryTypeRefinery {\n            get {\n                return ResourceManager.GetString(\"subCategoryTypeRefinery\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Short distance antenna.\n        /// </summary>\n        internal static string subCategoryTypeShortDistanceAntenna {\n            get {\n                return ResourceManager.GetString(\"subCategoryTypeShortDistanceAntenna\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Short term thrusters.\n        /// </summary>\n        internal static string subCategoryTypeShortTermThrusters {\n            get {\n                return ResourceManager.GetString(\"subCategoryTypeShortTermThrusters\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Small.\n        /// </summary>\n        internal static string subCategoryTypeSmall {\n            get {\n                return ResourceManager.GetString(\"subCategoryTypeSmall\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Straight.\n        /// </summary>\n        internal static string subCategoryTypeStraight {\n            get {\n                return ResourceManager.GetString(\"subCategoryTypeStraight\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Turn.\n        /// </summary>\n        internal static string subCategoryTypeTurn {\n            get {\n                return ResourceManager.GetString(\"subCategoryTypeTurn\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Weapon mount.\n        /// </summary>\n        internal static string subCategoryTypeWeaponMount {\n            get {\n                return ResourceManager.GetString(\"subCategoryTypeWeaponMount\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Wires.\n        /// </summary>\n        internal static string subCategoryTypeWires {\n            get {\n                return ResourceManager.GetString(\"subCategoryTypeWires\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Dialogues / subtitles.\n        /// </summary>\n        internal static string Subtitles {\n            get {\n                return ResourceManager.GetString(\"Subtitles\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Success.\n        /// </summary>\n        internal static string Success {\n            get {\n                return ResourceManager.GetString(\"Success\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sun.\n        /// </summary>\n        internal static string Sun {\n            get {\n                return ResourceManager.GetString(\"Sun\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sun settings.\n        /// </summary>\n        internal static string SunSettings {\n            get {\n                return ResourceManager.GetString(\"SunSettings\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Configure sun settings.\n        /// </summary>\n        internal static string SunSettingsTooltip {\n            get {\n                return ResourceManager.GetString(\"SunSettingsTooltip\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Survive prefab destruction.\n        /// </summary>\n        internal static string SurvivePrefabDestruction {\n            get {\n                return ResourceManager.GetString(\"SurvivePrefabDestruction\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Switch gizmo mode.\n        /// </summary>\n        internal static string SwitchGizmoMode {\n            get {\n                return ResourceManager.GetString(\"SwitchGizmoMode\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Press T to move objects, R to rotate objects.\n        /// </summary>\n        internal static string SwitchGizmoModeTooltip {\n            get {\n                return ResourceManager.GetString(\"SwitchGizmoModeTooltip\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Switch gizmo space.\n        /// </summary>\n        internal static string SwitchGizmoSpace {\n            get {\n                return ResourceManager.GetString(\"SwitchGizmoSpace\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Press Space to change gizmo transformation space (local, world).\n        /// </summary>\n        internal static string SwitchGizmoSpaceTooltip {\n            get {\n                return ResourceManager.GetString(\"SwitchGizmoSpaceTooltip\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Press {0}/{1} to switch between cameras.\n        /// </summary>\n        internal static string SwitchInHUBCameras {\n            get {\n                return ResourceManager.GetString(\"SwitchInHUBCameras\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Press {0}/{1} to switch between turrets.\n        /// </summary>\n        internal static string SwitchInHUBTurrets {\n            get {\n                return ResourceManager.GetString(\"SwitchInHUBTurrets\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Switch to point light.\n        /// </summary>\n        internal static string SwitchToPointLight {\n            get {\n                return ResourceManager.GetString(\"SwitchToPointLight\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Switch to spot light.\n        /// </summary>\n        internal static string SwitchToSpotLight {\n            get {\n                return ResourceManager.GetString(\"SwitchToSpotLight\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Systems 1.\n        /// </summary>\n        internal static string Systems1 {\n            get {\n                return ResourceManager.GetString(\"Systems1\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Systems 2.\n        /// </summary>\n        internal static string Systems2 {\n            get {\n                return ResourceManager.GetString(\"Systems2\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tab.\n        /// </summary>\n        internal static string Tab {\n            get {\n                return ResourceManager.GetString(\"Tab\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Take all.\n        /// </summary>\n        internal static string TakeAll {\n            get {\n                return ResourceManager.GetString(\"TakeAll\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Taking in progress.\n        /// </summary>\n        internal static string TakingInProgress {\n            get {\n                return ResourceManager.GetString(\"TakingInProgress\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Tarja and Valentin are staying in the cargo bay.\n        /// </summary>\n        internal static string TarjaAndValentinStaying {\n            get {\n                return ResourceManager.GetString(\"TarjaAndValentinStaying\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Template checkpoint has been deleted, please start a new game.\n        /// </summary>\n        internal static string TemplateCheckpointDeleted {\n            get {\n                return ResourceManager.GetString(\"TemplateCheckpointDeleted\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Load templates error!.\n        /// </summary>\n        internal static string TemplatesLoadError {\n            get {\n                return ResourceManager.GetString(\"TemplatesLoadError\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Load templates complete!.\n        /// </summary>\n        internal static string TemplatesLoadSuccess {\n            get {\n                return ResourceManager.GetString(\"TemplatesLoadSuccess\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Save templates error!.\n        /// </summary>\n        internal static string TemplatesSaveError {\n            get {\n                return ResourceManager.GetString(\"TemplatesSaveError\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Save templates complete!.\n        /// </summary>\n        internal static string TemplatesSaveSuccess {\n            get {\n                return ResourceManager.GetString(\"TemplatesSaveSuccess\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sector map.\n        /// </summary>\n        internal static string TemporarySectorMap {\n            get {\n                return ResourceManager.GetString(\"TemporarySectorMap\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to TEST BUILD.\n        /// </summary>\n        internal static string TestBuild {\n            get {\n                return ResourceManager.GetString(\"TestBuild\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Texture quad.\n        /// </summary>\n        internal static string TextureQuad {\n            get {\n                return ResourceManager.GetString(\"TextureQuad\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to this object.\n        /// </summary>\n        internal static string ThisObject {\n            get {\n                return ResourceManager.GetString(\"ThisObject\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to {0} seconds – Press {1} to change.\n        /// </summary>\n        internal static string TimeBombHelp {\n            get {\n                return ResourceManager.GetString(\"TimeBombHelp\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Time bomb – {0}s.\n        /// </summary>\n        internal static string TimeBombHud {\n            get {\n                return ResourceManager.GetString(\"TimeBombHud\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Time bomb timer.\n        /// </summary>\n        internal static string TimeBombTimer {\n            get {\n                return ResourceManager.GetString(\"TimeBombTimer\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to TIP:.\n        /// </summary>\n        internal static string Tip {\n            get {\n                return ResourceManager.GetString(\"Tip\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Failed to start the browser..\n        /// </summary>\n        internal static string TitleFailedToStartInternetBrowser {\n            get {\n                return ResourceManager.GetString(\"TitleFailedToStartInternetBrowser\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Start a new story.\n        /// </summary>\n        internal static string TitleStartNewStory {\n            get {\n                return ResourceManager.GetString(\"TitleStartNewStory\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You can’t build.\n        /// </summary>\n        internal static string TitleYouCantBuild {\n            get {\n                return ResourceManager.GetString(\"TitleYouCantBuild\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Toggle headlights.\n        /// </summary>\n        internal static string ToggleHeadlights {\n            get {\n                return ResourceManager.GetString(\"ToggleHeadlights\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Toggle snap points.\n        /// </summary>\n        internal static string ToggleSnapPoints {\n            get {\n                return ResourceManager.GetString(\"ToggleSnapPoints\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Alien object detector.\n        /// </summary>\n        internal static string ToolAlienObjectDetector {\n            get {\n                return ResourceManager.GetString(\"ToolAlienObjectDetector\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to ANTIRADIATION MEDICINE | Protects player against radiation \n        ///(for about 100 seconds) and solar \n        ///wind (about 10 waves).\n        /// </summary>\n        internal static string ToolAntiradiationMedicine {\n            get {\n                return ResourceManager.GetString(\"ToolAntiradiationMedicine\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Auto-targeting.\n        /// </summary>\n        internal static string ToolAutoTargeting {\n            get {\n                return ResourceManager.GetString(\"ToolAutoTargeting\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to   Add\n        ///object.\n        /// </summary>\n        internal static string ToolbarAddObject {\n            get {\n                return ResourceManager.GetString(\"ToolbarAddObject\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Attach\n        ///to cam..\n        /// </summary>\n        internal static string ToolbarAttachToCamera {\n            get {\n                return ResourceManager.GetString(\"ToolbarAttachToCamera\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Clear\n        ///  all.\n        /// </summary>\n        internal static string ToolbarClearWholeSector {\n            get {\n                return ResourceManager.GetString(\"ToolbarClearWholeSector\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to   Copy\n        ///selected.\n        /// </summary>\n        internal static string ToolbarCopySelected {\n            get {\n                return ResourceManager.GetString(\"ToolbarCopySelected\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Copy\n        /// tool.\n        /// </summary>\n        internal static string ToolbarCopyTool {\n            get {\n                return ResourceManager.GetString(\"ToolbarCopyTool\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Correct\n        ///  snap.\n        /// </summary>\n        internal static string ToolbarCorrectSnappedPrefabs {\n            get {\n                return ResourceManager.GetString(\"ToolbarCorrectSnappedPrefabs\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Detach\n        ///  from\n        ///  cam..\n        /// </summary>\n        internal static string ToolbarDetachFromCamera {\n            get {\n                return ResourceManager.GetString(\"ToolbarDetachFromCamera\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to   Edit\n        ///object.\n        /// </summary>\n        internal static string ToolbarEditObjects {\n            get {\n                return ResourceManager.GetString(\"ToolbarEditObjects\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Prefab\n        ///groups.\n        /// </summary>\n        internal static string ToolbarEditorGroups {\n            get {\n                return ResourceManager.GetString(\"ToolbarEditorGroups\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Options.\n        /// </summary>\n        internal static string ToolbarEditorOptions {\n            get {\n                return ResourceManager.GetString(\"ToolbarEditorOptions\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to    Visi.\n        ///options.\n        /// </summary>\n        internal static string ToolbarEditorSelectAndHide {\n            get {\n                return ResourceManager.GetString(\"ToolbarEditorSelectAndHide\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to  Edit\n        ///props..\n        /// </summary>\n        internal static string ToolbarEditProperties {\n            get {\n                return ResourceManager.GetString(\"ToolbarEditProperties\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Prefab\n        /// cont..\n        /// </summary>\n        internal static string ToolbarEnterPrefabContainer {\n            get {\n                return ResourceManager.GetString(\"ToolbarEnterPrefabContainer\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Voxel\n        ///hand.\n        /// </summary>\n        internal static string ToolbarEnterVoxelHand {\n            get {\n                return ResourceManager.GetString(\"ToolbarEnterVoxelHand\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to    Exit\n        ///editing\n        /// mode.\n        /// </summary>\n        internal static string ToolbarExitEditingMode {\n            get {\n                return ResourceManager.GetString(\"ToolbarExitEditingMode\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to   Exit\n        ///select.\n        /// </summary>\n        internal static string ToolbarExitSelected {\n            get {\n                return ResourceManager.GetString(\"ToolbarExitSelected\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to  Exit\n        ///voxel\n        ///hand.\n        /// </summary>\n        internal static string ToolbarExitVoxelHand {\n            get {\n                return ResourceManager.GetString(\"ToolbarExitVoxelHand\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to  Hide\n        /// snap \n        ///points.\n        /// </summary>\n        internal static string ToolbarHideSnapPoints {\n            get {\n                return ResourceManager.GetString(\"ToolbarHideSnapPoints\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to  Link\n        /// snap.\n        /// </summary>\n        internal static string ToolbarLinkSnapPoints {\n            get {\n                return ResourceManager.GetString(\"ToolbarLinkSnapPoints\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to  Load\n        ///sector.\n        /// </summary>\n        internal static string ToolbarLoadSector {\n            get {\n                return ResourceManager.GetString(\"ToolbarLoadSector\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Reset\n        ///  rot..\n        /// </summary>\n        internal static string ToolbarResetRotation {\n            get {\n                return ResourceManager.GetString(\"ToolbarResetRotation\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to  Save\n        ///sector.\n        /// </summary>\n        internal static string ToolbarSaveSector {\n            get {\n                return ResourceManager.GetString(\"ToolbarSaveSector\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Select\n        ///   all.\n        /// </summary>\n        internal static string ToolbarSelectAllObjects {\n            get {\n                return ResourceManager.GetString(\"ToolbarSelectAllObjects\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Select\n        ///deac.\n        ///entity.\n        /// </summary>\n        internal static string ToolbarSelectDeactivatedEntity {\n            get {\n                return ResourceManager.GetString(\"ToolbarSelectDeactivatedEntity\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Show\n        /// snap\n        ///points.\n        /// </summary>\n        internal static string ToolbarShowSnapPoints {\n            get {\n                return ResourceManager.GetString(\"ToolbarShowSnapPoints\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Temp\n        ///lates.\n        /// </summary>\n        internal static string ToolbarSmallShipTemplates {\n            get {\n                return ResourceManager.GetString(\"ToolbarSmallShipTemplates\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Gizmo\n        ///mode.\n        /// </summary>\n        internal static string ToolbarSwitchGizmoMode {\n            get {\n                return ResourceManager.GetString(\"ToolbarSwitchGizmoMode\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Gizmo\n        ///space.\n        /// </summary>\n        internal static string ToolbarSwitchGizmoSpace {\n            get {\n                return ResourceManager.GetString(\"ToolbarSwitchGizmoSpace\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Toggle\n        ///  snap.\n        /// </summary>\n        internal static string ToolbarToggleSnapPoints {\n            get {\n                return ResourceManager.GetString(\"ToolbarToggleSnapPoints\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Unlink\n        ///snap\n        ///points.\n        /// </summary>\n        internal static string ToolbarUnlinkSnapPoints {\n            get {\n                return ResourceManager.GetString(\"ToolbarUnlinkSnapPoints\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to  Way\n        ///points.\n        /// </summary>\n        internal static string ToolbarWaypoints {\n            get {\n                return ResourceManager.GetString(\"ToolbarWaypoints\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Booby trap.\n        /// </summary>\n        internal static string ToolBoobyTrap {\n            get {\n                return ResourceManager.GetString(\"ToolBoobyTrap\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Extra electricity container.\n        /// </summary>\n        internal static string ToolExtraElectricityContainer {\n            get {\n                return ResourceManager.GetString(\"ToolExtraElectricityContainer\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Extra fuel container.\n        /// </summary>\n        internal static string ToolExtraFuelContainer {\n            get {\n                return ResourceManager.GetString(\"ToolExtraFuelContainer\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Extra oxygen container.\n        /// </summary>\n        internal static string ToolExtraOxygenContainer {\n            get {\n                return ResourceManager.GetString(\"ToolExtraOxygenContainer\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fuel converter.\n        /// </summary>\n        internal static string ToolFuelConverter {\n            get {\n                return ResourceManager.GetString(\"ToolFuelConverter\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to HEALTH ENHANCING MEDICINE | Decrease received damage to player \n        ///down to 20% for 30 seconds.\n        /// </summary>\n        internal static string ToolHealthEnhancingMedicine {\n            get {\n                return ResourceManager.GetString(\"ToolHealthEnhancingMedicine\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Laser pointer.\n        /// </summary>\n        internal static string ToolLaserPointer {\n            get {\n                return ResourceManager.GetString(\"ToolLaserPointer\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to MEDIKIT | Automatically heals player, 20% per second. \n        ///It has one parameter – remaining % of full..\n        /// </summary>\n        internal static string ToolMedikit {\n            get {\n                return ResourceManager.GetString(\"ToolMedikit\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to NANO REPAIR TOOL | Repairs ship, 0.4% per second to max 75%. \n        ///Unlimited capacity and lifespan..\n        /// </summary>\n        internal static string ToolNanoRepairTool {\n            get {\n                return ResourceManager.GetString(\"ToolNanoRepairTool\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Night vision.\n        /// </summary>\n        internal static string ToolNightVision {\n            get {\n                return ResourceManager.GetString(\"ToolNightVision\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Oxygen converter.\n        /// </summary>\n        internal static string ToolOxygenConverter {\n            get {\n                return ResourceManager.GetString(\"ToolOxygenConverter\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to PERFORMANCE ENHANCING MEDICINE | Decrease oxygen consumption \n        ///down to 20% for 30 seconds.\n        /// </summary>\n        internal static string ToolPerformanceEnhancingMedicine {\n            get {\n                return ResourceManager.GetString(\"ToolPerformanceEnhancingMedicine\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to RADAR JAMMER | Blocks all radar transmissions in 500m \n        ///radius, even friendly radars, so player \n        ///won’t distinguish friend from enemy..\n        /// </summary>\n        internal static string ToolRadarJammer {\n            get {\n                return ResourceManager.GetString(\"ToolRadarJammer\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Radar jammer.\n        /// </summary>\n        internal static string ToolRadarJammerName {\n            get {\n                return ResourceManager.GetString(\"ToolRadarJammerName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Rear / Missile camera.\n        /// </summary>\n        internal static string ToolRearCamera {\n            get {\n                return ResourceManager.GetString(\"ToolRearCamera\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Remote camera.\n        /// </summary>\n        internal static string ToolRemoteCamera {\n            get {\n                return ResourceManager.GetString(\"ToolRemoteCamera\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Remote camera on drone.\n        /// </summary>\n        internal static string ToolRemoteCameraOnDrone {\n            get {\n                return ResourceManager.GetString(\"ToolRemoteCameraOnDrone\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sensor.\n        /// </summary>\n        internal static string ToolSensor {\n            get {\n                return ResourceManager.GetString(\"ToolSensor\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Solar panel.\n        /// </summary>\n        internal static string ToolSolarPanel {\n            get {\n                return ResourceManager.GetString(\"ToolSolarPanel\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to X-Ray.\n        /// </summary>\n        internal static string ToolXRay {\n            get {\n                return ResourceManager.GetString(\"ToolXRay\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to 256x128x256\n        ///Torus with cave entrance.\n        /// </summary>\n        internal static string TorusStorySector_256x128x256 {\n            get {\n                return ResourceManager.GetString(\"TorusStorySector_256x128x256\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to 256x128x256\n        ///Torus with tunnels 3.\n        /// </summary>\n        internal static string TorusWithManyTunnels_2_256x128x256 {\n            get {\n                return ResourceManager.GetString(\"TorusWithManyTunnels_2_256x128x256\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to 256x128x256\n        ///Torus with tunnels 2.\n        /// </summary>\n        internal static string TorusWithManyTunnels_256x128x256 {\n            get {\n                return ResourceManager.GetString(\"TorusWithManyTunnels_256x128x256\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to 256x128x256\n        ///Torus with tunnels 1.\n        /// </summary>\n        internal static string TorusWithSmallTunnel_256x128x256 {\n            get {\n                return ResourceManager.GetString(\"TorusWithSmallTunnel_256x128x256\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Twin Tower 1.\n        /// </summary>\n        internal static string TowerWithConcreteBlock1 {\n            get {\n                return ResourceManager.GetString(\"TowerWithConcreteBlock1\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Twin Tower 2.\n        /// </summary>\n        internal static string TowerWithConcreteBlock2 {\n            get {\n                return ResourceManager.GetString(\"TowerWithConcreteBlock2\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Trade station China.\n        /// </summary>\n        internal static string TRADE_STATION_CHINA {\n            get {\n                return ResourceManager.GetString(\"TRADE_STATION_CHINA\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Trade station China\n        ///.\n        /// </summary>\n        internal static string TRADE_STATION_CHINA_Description {\n            get {\n                return ResourceManager.GetString(\"TRADE_STATION_CHINA_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Trade station – EAC.\n        /// </summary>\n        internal static string TRADE_STATION_EAC {\n            get {\n                return ResourceManager.GetString(\"TRADE_STATION_EAC\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string TRADE_STATION_EAC_DIALOGUE_Description {\n            get {\n                return ResourceManager.GetString(\"TRADE_STATION_EAC_DIALOGUE_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Join the conversation.\n        /// </summary>\n        internal static string TRADE_STATION_EAC_DIALOGUE_Name {\n            get {\n                return ResourceManager.GetString(\"TRADE_STATION_EAC_DIALOGUE_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Trade result.\n        /// </summary>\n        internal static string TradeResultTitle {\n            get {\n                return ResourceManager.GetString(\"TradeResultTitle\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Trade was canceled.\n        /// </summary>\n        internal static string TradeWasCanceled {\n            get {\n                return ResourceManager.GetString(\"TradeWasCanceled\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Transfer in progress.\n        /// </summary>\n        internal static string TransferInProgress {\n            get {\n                return ResourceManager.GetString(\"TransferInProgress\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Transmission.\n        /// </summary>\n        internal static string Transmission {\n            get {\n                return ResourceManager.GetString(\"Transmission\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Transmitter.\n        /// </summary>\n        internal static string Transmitter {\n            get {\n                return ResourceManager.GetString(\"Transmitter\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Transporter captain.\n        /// </summary>\n        internal static string TransporterCaptain {\n            get {\n                return ResourceManager.GetString(\"TransporterCaptain\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Travel.\n        /// </summary>\n        internal static string Travel {\n            get {\n                return ResourceManager.GetString(\"Travel\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Travel to {0}.\n        /// </summary>\n        internal static string TravelTo {\n            get {\n                return ResourceManager.GetString(\"TravelTo\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Treasure 1.\n        /// </summary>\n        internal static string Treasure_01 {\n            get {\n                return ResourceManager.GetString(\"Treasure_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Treasure 2.\n        /// </summary>\n        internal static string Treasure_02 {\n            get {\n                return ResourceManager.GetString(\"Treasure_02\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Press {0}: camera on/off, {1} {2} to switch.\n        /// </summary>\n        internal static string TurnOffCamera {\n            get {\n                return ResourceManager.GetString(\"TurnOffCamera\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Turret.\n        /// </summary>\n        internal static string Turret {\n            get {\n                return ResourceManager.GetString(\"Turret\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Turrets.\n        /// </summary>\n        internal static string Turrets {\n            get {\n                return ResourceManager.GetString(\"Turrets\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Doppelburg.\n        /// </summary>\n        internal static string TWIN_TOWERS {\n            get {\n                return ResourceManager.GetString(\"TWIN_TOWERS\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string TWIN_TOWERS_ASSAULT_Description {\n            get {\n                return ResourceManager.GetString(\"TWIN_TOWERS_ASSAULT_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Seize the command center.\n        /// </summary>\n        internal static string TWIN_TOWERS_ASSAULT_Name {\n            get {\n                return ResourceManager.GetString(\"TWIN_TOWERS_ASSAULT_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string TWIN_TOWERS_COMMAND_Description {\n            get {\n                return ResourceManager.GetString(\"TWIN_TOWERS_COMMAND_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Seize the command center.\n        /// </summary>\n        internal static string TWIN_TOWERS_COMMAND_Name {\n            get {\n                return ResourceManager.GetString(\"TWIN_TOWERS_COMMAND_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Help Fourth Reich regain their base from the White Wolves.\n        ///.\n        /// </summary>\n        internal static string TWIN_TOWERS_Description {\n            get {\n                return ResourceManager.GetString(\"TWIN_TOWERS_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string TWIN_TOWERS_GENERATOR_Description {\n            get {\n                return ResourceManager.GetString(\"TWIN_TOWERS_GENERATOR_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Disable generator.\n        /// </summary>\n        internal static string TWIN_TOWERS_GENERATOR_Name {\n            get {\n                return ResourceManager.GetString(\"TWIN_TOWERS_GENERATOR_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string TWIN_TOWERS_GOTO_RIGHT_Description {\n            get {\n                return ResourceManager.GetString(\"TWIN_TOWERS_GOTO_RIGHT_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Approach the other base.\n        /// </summary>\n        internal static string TWIN_TOWERS_GOTO_RIGHT_Name {\n            get {\n                return ResourceManager.GetString(\"TWIN_TOWERS_GOTO_RIGHT_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string TWIN_TOWERS_HACKING_CONTINUE_Description {\n            get {\n                return ResourceManager.GetString(\"TWIN_TOWERS_HACKING_CONTINUE_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Protect the hacker.\n        /// </summary>\n        internal static string TWIN_TOWERS_HACKING_CONTINUE_Name {\n            get {\n                return ResourceManager.GetString(\"TWIN_TOWERS_HACKING_CONTINUE_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string TWIN_TOWERS_HACKING_Description {\n            get {\n                return ResourceManager.GetString(\"TWIN_TOWERS_HACKING_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Protect the hacker.\n        /// </summary>\n        internal static string TWIN_TOWERS_HACKING_Name {\n            get {\n                return ResourceManager.GetString(\"TWIN_TOWERS_HACKING_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string TWIN_TOWERS_JAMMER_Description {\n            get {\n                return ResourceManager.GetString(\"TWIN_TOWERS_JAMMER_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Destroy jammer.\n        /// </summary>\n        internal static string TWIN_TOWERS_JAMMER_Name {\n            get {\n                return ResourceManager.GetString(\"TWIN_TOWERS_JAMMER_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string TWIN_TOWERS_MOTHERSHIP1_Description {\n            get {\n                return ResourceManager.GetString(\"TWIN_TOWERS_MOTHERSHIP1_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Destroy generator.\n        /// </summary>\n        internal static string TWIN_TOWERS_MOTHERSHIP1_Name {\n            get {\n                return ResourceManager.GetString(\"TWIN_TOWERS_MOTHERSHIP1_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string TWIN_TOWERS_MOTHERSHIP1_V2_Description {\n            get {\n                return ResourceManager.GetString(\"TWIN_TOWERS_MOTHERSHIP1_V2_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Destroy batteries.\n        /// </summary>\n        internal static string TWIN_TOWERS_MOTHERSHIP1_V2_Name {\n            get {\n                return ResourceManager.GetString(\"TWIN_TOWERS_MOTHERSHIP1_V2_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string TWIN_TOWERS_RAILGUN1_Description {\n            get {\n                return ResourceManager.GetString(\"TWIN_TOWERS_RAILGUN1_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Seize upper railgun control room.\n        /// </summary>\n        internal static string TWIN_TOWERS_RAILGUN1_Name {\n            get {\n                return ResourceManager.GetString(\"TWIN_TOWERS_RAILGUN1_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string TWIN_TOWERS_RAILGUN2_Description {\n            get {\n                return ResourceManager.GetString(\"TWIN_TOWERS_RAILGUN2_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Seize bottom railgun control room.\n        /// </summary>\n        internal static string TWIN_TOWERS_RAILGUN2_Name {\n            get {\n                return ResourceManager.GetString(\"TWIN_TOWERS_RAILGUN2_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string TWIN_TOWERS_RANDEVOUZ_Description {\n            get {\n                return ResourceManager.GetString(\"TWIN_TOWERS_RANDEVOUZ_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Get to the meeting point.\n        /// </summary>\n        internal static string TWIN_TOWERS_RANDEVOUZ_Name {\n            get {\n                return ResourceManager.GetString(\"TWIN_TOWERS_RANDEVOUZ_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string TWIN_TOWERS_SABOTAGE_Description {\n            get {\n                return ResourceManager.GetString(\"TWIN_TOWERS_SABOTAGE_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Place explosives.\n        /// </summary>\n        internal static string TWIN_TOWERS_SABOTAGE_Name {\n            get {\n                return ResourceManager.GetString(\"TWIN_TOWERS_SABOTAGE_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to .\n        /// </summary>\n        internal static string TWIN_TOWERS_WAIT_Description {\n            get {\n                return ResourceManager.GetString(\"TWIN_TOWERS_WAIT_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Prepare for battle.\n        /// </summary>\n        internal static string TWIN_TOWERS_WAIT_Name {\n            get {\n                return ResourceManager.GetString(\"TWIN_TOWERS_WAIT_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Unable to leave the sector.\n        /// </summary>\n        internal static string UnableToLeaveSector {\n            get {\n                return ResourceManager.GetString(\"UnableToLeaveSector\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Finish the mission before leaving the sector.\n        /// </summary>\n        internal static string UnableToLeaveSectorMission {\n            get {\n                return ResourceManager.GetString(\"UnableToLeaveSectorMission\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Unknown.\n        /// </summary>\n        internal static string UNKNOWN {\n            get {\n                return ResourceManager.GetString(\"UNKNOWN\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to none.\n        /// </summary>\n        internal static string UnknownControl {\n            get {\n                return ResourceManager.GetString(\"UnknownControl\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Unknown sector.\n        /// </summary>\n        internal static string UnknownSector {\n            get {\n                return ResourceManager.GetString(\"UnknownSector\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Unlimited trading.\n        /// </summary>\n        internal static string UnlimitedTrading {\n            get {\n                return ResourceManager.GetString(\"UnlimitedTrading\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Unlink snap points.\n        /// </summary>\n        internal static string UnlinkSnapPoints {\n            get {\n                return ResourceManager.GetString(\"UnlinkSnapPoints\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Unlock prison cells in the HQ.\n        /// </summary>\n        internal static string UNLOCK_PRISON_1 {\n            get {\n                return ResourceManager.GetString(\"UNLOCK_PRISON_1\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Unlock underground cells.\n        /// </summary>\n        internal static string UNLOCK_PRISON_2 {\n            get {\n                return ResourceManager.GetString(\"UNLOCK_PRISON_2\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hold {0} to unlock the prison cell.\n        /// </summary>\n        internal static string UnlockCell {\n            get {\n                return ResourceManager.GetString(\"UnlockCell\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Unlocking in progress.\n        /// </summary>\n        internal static string UnlockingInProgress {\n            get {\n                return ResourceManager.GetString(\"UnlockingInProgress\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Unpowered.\n        /// </summary>\n        internal static string Unpowered {\n            get {\n                return ResourceManager.GetString(\"Unpowered\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Up.\n        /// </summary>\n        internal static string Up {\n            get {\n                return ResourceManager.GetString(\"Up\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Up thrust.\n        /// </summary>\n        internal static string UpThrust {\n            get {\n                return ResourceManager.GetString(\"UpThrust\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Plutonium.\n        /// </summary>\n        internal static string Uranite_01 {\n            get {\n                return ResourceManager.GetString(\"Uranite_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Plutonium mine.\n        /// </summary>\n        internal static string URANITE_MINE {\n            get {\n                return ResourceManager.GetString(\"URANITE_MINE\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Clear the mine, harvest plutonium ore.\n        ///.\n        /// </summary>\n        internal static string URANITE_MINE_Description {\n            get {\n                return ResourceManager.GetString(\"URANITE_MINE_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Use camera crosshair.\n        /// </summary>\n        internal static string UseCameraCrosshair {\n            get {\n                return ResourceManager.GetString(\"UseCameraCrosshair\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Use drilling device.\n        /// </summary>\n        internal static string UseDrill {\n            get {\n                return ResourceManager.GetString(\"UseDrill\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Use first security key.\n        /// </summary>\n        internal static string UseFirstSecurityKey {\n            get {\n                return ResourceManager.GetString(\"UseFirstSecurityKey\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Use from hub.\n        /// </summary>\n        internal static string UseFromHUB {\n            get {\n                return ResourceManager.GetString(\"UseFromHUB\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Use the GPS.\n        /// </summary>\n        internal static string UseGPS {\n            get {\n                return ResourceManager.GetString(\"UseGPS\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Use / Hack / Take.\n        /// </summary>\n        internal static string UseHackTake {\n            get {\n                return ResourceManager.GetString(\"UseHackTake\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to User folder.\n        /// </summary>\n        internal static string UserFolder {\n            get {\n                return ResourceManager.GetString(\"UserFolder\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to User info.\n        /// </summary>\n        internal static string UserInfo {\n            get {\n                return ResourceManager.GetString(\"UserInfo\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to User scale.\n        /// </summary>\n        internal static string UserScale {\n            get {\n                return ResourceManager.GetString(\"UserScale\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Use second security key.\n        /// </summary>\n        internal static string UseSecondSecurityKey {\n            get {\n                return ResourceManager.GetString(\"UseSecondSecurityKey\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Use solo.\n        /// </summary>\n        internal static string UseSolo {\n            get {\n                return ResourceManager.GetString(\"UseSolo\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Using.\n        /// </summary>\n        internal static string Using {\n            get {\n                return ResourceManager.GetString(\"Using\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Utility vehicle 1.\n        /// </summary>\n        internal static string UtilityVehicle_1 {\n            get {\n                return ResourceManager.GetString(\"UtilityVehicle_1\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Please enter an email address in valid email format (e.g. yourname@domain.com),\n        ///not longer than 50 characters..\n        /// </summary>\n        internal static string ValidationEmailWrong {\n            get {\n                return ResourceManager.GetString(\"ValidationEmailWrong\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Please enter the same password in ‘Password’ and ‘Retype password’ fields..\n        /// </summary>\n        internal static string ValidationPasswordsDoNotMatch {\n            get {\n                return ResourceManager.GetString(\"ValidationPasswordsDoNotMatch\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Please enter a password not shorter than 6 and not longer than 10 alphanumeric characters (a–z, A–Z, 0–9)..\n        /// </summary>\n        internal static string ValidationPasswordWrong {\n            get {\n                return ResourceManager.GetString(\"ValidationPasswordWrong\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Please enter a username not shorter than 3 and not longer than 15 alphanumeric characters (a–z, A–Z, 0–9)..\n        /// </summary>\n        internal static string ValidationUsername {\n            get {\n                return ResourceManager.GetString(\"ValidationUsername\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to This username is already taken..\n        /// </summary>\n        internal static string ValidationUsernameAlreadyUsed {\n            get {\n                return ResourceManager.GetString(\"ValidationUsernameAlreadyUsed\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Vendor.\n        /// </summary>\n        internal static string vendor {\n            get {\n                return ResourceManager.GetString(\"vendor\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Version:.\n        /// </summary>\n        internal static string Version {\n            get {\n                return ResourceManager.GetString(\"Version\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to 128x128x128\n        ///Vertical island 1.\n        /// </summary>\n        internal static string VerticalIsland_128x128x128 {\n            get {\n                return ResourceManager.GetString(\"VerticalIsland_128x128x128\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to 128x256x128\n        ///Vertical island 2.\n        /// </summary>\n        internal static string VerticalIsland_128x256x128 {\n            get {\n                return ResourceManager.GetString(\"VerticalIsland_128x256x128\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to 128x256x128\n        ///Vertical island tunneled.\n        /// </summary>\n        internal static string VerticalIslandStorySector_128x256x128 {\n            get {\n                return ResourceManager.GetString(\"VerticalIslandStorySector_128x256x128\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Vertical sync.\n        /// </summary>\n        internal static string VerticalSync {\n            get {\n                return ResourceManager.GetString(\"VerticalSync\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Video.\n        /// </summary>\n        internal static string Video {\n            get {\n                return ResourceManager.GetString(\"Video\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Video adapter.\n        /// </summary>\n        internal static string VideoAdapter {\n            get {\n                return ResourceManager.GetString(\"VideoAdapter\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Video mode.\n        /// </summary>\n        internal static string VideoMode {\n            get {\n                return ResourceManager.GetString(\"VideoMode\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Video options.\n        /// </summary>\n        internal static string VideoOptions {\n            get {\n                return ResourceManager.GetString(\"VideoOptions\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to View mode.\n        /// </summary>\n        internal static string ViewMode {\n            get {\n                return ResourceManager.GetString(\"ViewMode\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cockpit off.\n        /// </summary>\n        internal static string ViewModeCockpitOff {\n            get {\n                return ResourceManager.GetString(\"ViewModeCockpitOff\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cockpit on.\n        /// </summary>\n        internal static string ViewModeCockpitOn {\n            get {\n                return ResourceManager.GetString(\"ViewModeCockpitOn\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Third person.\n        /// </summary>\n        internal static string ViewModeThirdPerson {\n            get {\n                return ResourceManager.GetString(\"ViewModeThirdPerson\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Visible.\n        /// </summary>\n        internal static string Visible {\n            get {\n                return ResourceManager.GetString(\"Visible\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Volodia.\n        /// </summary>\n        internal static string Volodia {\n            get {\n                return ResourceManager.GetString(\"Volodia\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Stranger.\n        /// </summary>\n        internal static string VolodiaStranger {\n            get {\n                return ResourceManager.GetString(\"VolodiaStranger\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Voxel.\n        /// </summary>\n        internal static string Voxel {\n            get {\n                return ResourceManager.GetString(\"Voxel\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Voxel_Arena_Tunnels.\n        /// </summary>\n        internal static string Voxel_Arena_Tunnels {\n            get {\n                return ResourceManager.GetString(\"Voxel_Arena_Tunnels\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Voxel Arena Deathmatch 256x256x256.\n        /// </summary>\n        internal static string VoxelArenaDeathmatch {\n            get {\n                return ResourceManager.GetString(\"VoxelArenaDeathmatch\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Voxel import test.\n        /// </summary>\n        internal static string VoxelImportTest {\n            get {\n                return ResourceManager.GetString(\"VoxelImportTest\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Mission 1 voxel map 1.\n        /// </summary>\n        internal static string VoxelMission01_01 {\n            get {\n                return ResourceManager.GetString(\"VoxelMission01_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Mission 1 voxel map 2.\n        /// </summary>\n        internal static string VoxelMission01_02 {\n            get {\n                return ResourceManager.GetString(\"VoxelMission01_02\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Mission01_big.\n        /// </summary>\n        internal static string VoxelMission01_asteroid_big {\n            get {\n                return ResourceManager.GetString(\"VoxelMission01_asteroid_big\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Mission01_mine.\n        /// </summary>\n        internal static string VoxelMission01_asteroid_mine {\n            get {\n                return ResourceManager.GetString(\"VoxelMission01_asteroid_mine\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Voxel mission 07 01.\n        /// </summary>\n        internal static string VoxelMission07_01 {\n            get {\n                return ResourceManager.GetString(\"VoxelMission07_01\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Voxels.\n        /// </summary>\n        internal static string Voxels {\n            get {\n                return ResourceManager.GetString(\"Voxels\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Voxel Asteroid Story02.\n        /// </summary>\n        internal static string VoxelStory02 {\n            get {\n                return ResourceManager.GetString(\"VoxelStory02\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Walther von Stauffenberg.\n        /// </summary>\n        internal static string WaltherStaufenberg {\n            get {\n                return ResourceManager.GetString(\"WaltherStaufenberg\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Warehouse asteroid 256.\n        /// </summary>\n        internal static string Warehouse {\n            get {\n                return ResourceManager.GetString(\"Warehouse\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Warehouse Deathmatch 256x128x256.\n        /// </summary>\n        internal static string WarehouseDeatmatch {\n            get {\n                return ResourceManager.GetString(\"WarehouseDeatmatch\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Warning.\n        /// </summary>\n        internal static string Warning {\n            get {\n                return ResourceManager.GetString(\"Warning\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Mind the health of your mothership!.\n        /// </summary>\n        internal static string WatchMothershipHealth {\n            get {\n                return ResourceManager.GetString(\"WatchMothershipHealth\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Waypoint.\n        /// </summary>\n        internal static string WayPoint {\n            get {\n                return ResourceManager.GetString(\"WayPoint\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Waypoint path.\n        /// </summary>\n        internal static string WayPointPath {\n            get {\n                return ResourceManager.GetString(\"WayPointPath\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Name.\n        /// </summary>\n        internal static string WaypointPathName {\n            get {\n                return ResourceManager.GetString(\"WaypointPathName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Named waypoint group.\n        /// </summary>\n        internal static string WaypointPathNameCaption {\n            get {\n                return ResourceManager.GetString(\"WaypointPathNameCaption\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Create named waypoint group.\n        /// </summary>\n        internal static string WaypointPathNameCreateCaption {\n            get {\n                return ResourceManager.GetString(\"WaypointPathNameCreateCaption\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Waypoints.\n        /// </summary>\n        internal static string Waypoints {\n            get {\n                return ResourceManager.GetString(\"Waypoints\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Waypoints visible through.\n        /// </summary>\n        internal static string WaypointsIgnoreDepth {\n            get {\n                return ResourceManager.GetString(\"WaypointsIgnoreDepth\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to GATLING GUN | Rate of fire: 630 rounds/min.\n        /// </summary>\n        internal static string WeaponAutocannon {\n            get {\n                return ResourceManager.GetString(\"WeaponAutocannon\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to AUTOMATIC RIFLE WITH SILENCER | Rate of fire: 120 rounds/min.\n        /// </summary>\n        internal static string WeaponAutomaticRifleWithSilencer {\n            get {\n                return ResourceManager.GetString(\"WeaponAutomaticRifleWithSilencer\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to CANNON | Rate of fire: 120 rounds/min.\n        /// </summary>\n        internal static string WeaponCannon {\n            get {\n                return ResourceManager.GetString(\"WeaponCannon\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to CIWS.\n        /// </summary>\n        internal static string WeaponCIWS {\n            get {\n                return ResourceManager.GetString(\"WeaponCIWS\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Weapon Control.\n        /// </summary>\n        internal static string WeaponControl {\n            get {\n                return ResourceManager.GetString(\"WeaponControl\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to DRILLING DEVICE CRUSHER | Drills asteroids with mechanical drill head. Can be used against enemies and buildings..\n        /// </summary>\n        internal static string WeaponDrillingDeviceCrusher {\n            get {\n                return ResourceManager.GetString(\"WeaponDrillingDeviceCrusher\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Drilling device Laser.\n        /// </summary>\n        internal static string WeaponDrillingDeviceLaser {\n            get {\n                return ResourceManager.GetString(\"WeaponDrillingDeviceLaser\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Drilling device Nuclear.\n        /// </summary>\n        internal static string WeaponDrillingDeviceNuclear {\n            get {\n                return ResourceManager.GetString(\"WeaponDrillingDeviceNuclear\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Drilling device Pressure.\n        /// </summary>\n        internal static string WeaponDrillingDevicePressure {\n            get {\n                return ResourceManager.GetString(\"WeaponDrillingDevicePressure\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Drilling device Saw.\n        /// </summary>\n        internal static string WeaponDrillingDeviceSaw {\n            get {\n                return ResourceManager.GetString(\"WeaponDrillingDeviceSaw\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Drilling device Thermal.\n        /// </summary>\n        internal static string WeaponDrillingDeviceThermal {\n            get {\n                return ResourceManager.GetString(\"WeaponDrillingDeviceThermal\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to MISSILE LAUNCHER | Rate of fire: 60 rounds/min.\n        /// </summary>\n        internal static string WeaponGuidedMissileLauncher {\n            get {\n                return ResourceManager.GetString(\"WeaponGuidedMissileLauncher\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to HARVESTING DEVICE | Harvest ore from asteroids..\n        /// </summary>\n        internal static string WeaponHarvestingDevice {\n            get {\n                return ResourceManager.GetString(\"WeaponHarvestingDevice\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to MACHINE GUN | Rate of fire: 430 rounds/min.\n        /// </summary>\n        internal static string WeaponMachineGun {\n            get {\n                return ResourceManager.GetString(\"WeaponMachineGun\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Weapons.\n        /// </summary>\n        internal static string Weapons {\n            get {\n                return ResourceManager.GetString(\"Weapons\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to SHOTGUN | Rate of fire: 120 rounds/min | Shoots 16–20 projectiles.\n        /// </summary>\n        internal static string WeaponShotgun {\n            get {\n                return ResourceManager.GetString(\"WeaponShotgun\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to SNIPER | Rate of fire: 60 rounds/min.\n        /// </summary>\n        internal static string WeaponSniper {\n            get {\n                return ResourceManager.GetString(\"WeaponSniper\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Weapon special.\n        /// </summary>\n        internal static string WeaponSpecial {\n            get {\n                return ResourceManager.GetString(\"WeaponSpecial\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to launcher.\n        /// </summary>\n        internal static string WeaponUniversalLauncher {\n            get {\n                return ResourceManager.GetString(\"WeaponUniversalLauncher\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to BACK LAUNCHER | Rate of fire: 120 rounds/min | Universal launcher for various types of ammo and projectiles.\n        /// </summary>\n        internal static string WeaponUniversalLauncherBack {\n            get {\n                return ResourceManager.GetString(\"WeaponUniversalLauncherBack\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Back.\n        /// </summary>\n        internal static string WeaponUniversalLauncherBackTitle {\n            get {\n                return ResourceManager.GetString(\"WeaponUniversalLauncherBackTitle\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to FRONT LAUNCHER | Rate of fire: 120 rounds/min | Universal launcher for various types of ammo and projectiles.\n        /// </summary>\n        internal static string WeaponUniversalLauncherFront {\n            get {\n                return ResourceManager.GetString(\"WeaponUniversalLauncherFront\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Front.\n        /// </summary>\n        internal static string WeaponUniversalLauncherFrontTitle {\n            get {\n                return ResourceManager.GetString(\"WeaponUniversalLauncherFrontTitle\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Action menu.\n        /// </summary>\n        internal static string WheelControl {\n            get {\n                return ResourceManager.GetString(\"WheelControl\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to VÝZKUMNÁ ZÁKLADNA BÍLÝCH VLKŮ.\n        /// </summary>\n        internal static string WHITE_WOLVES {\n            get {\n                return ResourceManager.GetString(\"WHITE_WOLVES\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to This bio-research facility is a common type of a R&amp;D structure built in the late 21st century \n        ///thanks to advances in DNA alteration, genome modification, and embryonal enhancement. \n        ///Most of the research at these labs was performed on animals and even humans. Thus, the \n        ///more successful and “efficient” a biolab was, the more cruel and inhumane were its \n        ///research methods..\n        /// </summary>\n        internal static string WHITE_WOLVES_RESEARCH_LAB_SectorDescription {\n            get {\n                return ResourceManager.GetString(\"WHITE_WOLVES_RESEARCH_LAB_SectorDescription\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to WHITE WOLF BIO RESEARCH LAB.\n        /// </summary>\n        internal static string WHITE_WOLVES_RESEARCH_LAB_SectorName {\n            get {\n                return ResourceManager.GetString(\"WHITE_WOLVES_RESEARCH_LAB_SectorName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Width.\n        /// </summary>\n        internal static string Width {\n            get {\n                return ResourceManager.GetString(\"Width\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Wrinkle voxels.\n        /// </summary>\n        internal static string WrinkleVoxels {\n            get {\n                return ResourceManager.GetString(\"WrinkleVoxels\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Wrong number format.\n        /// </summary>\n        internal static string WrongNumberFormat {\n            get {\n                return ResourceManager.GetString(\"WrongNumberFormat\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to X.\n        /// </summary>\n        internal static string X {\n            get {\n                return ResourceManager.GetString(\"X\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Y.\n        /// </summary>\n        internal static string Y {\n            get {\n                return ResourceManager.GetString(\"Y\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Yes.\n        /// </summary>\n        internal static string Yes {\n            get {\n                return ResourceManager.GetString(\"Yes\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You can’t add foundation factory.\n        /// </summary>\n        internal static string YouCantAddFoundationFactory {\n            get {\n                return ResourceManager.GetString(\"YouCantAddFoundationFactory\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You have to select something..\n        /// </summary>\n        internal static string YouHaveToSelect {\n            get {\n                return ResourceManager.GetString(\"YouHaveToSelect\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You need to own “2.5D Experiment” / Arena.\n        /// </summary>\n        internal static string YouNeed25D {\n            get {\n                return ResourceManager.GetString(\"YouNeed25D\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You need to own MinerWars 2081.\n        /// </summary>\n        internal static string YouNeedFullGame {\n            get {\n                return ResourceManager.GetString(\"YouNeedFullGame\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You obtain {0}.\n        /// </summary>\n        internal static string YouObtainNotification {\n            get {\n                return ResourceManager.GetString(\"YouObtainNotification\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to My sectors.\n        /// </summary>\n        internal static string YourSectors {\n            get {\n                return ResourceManager.GetString(\"YourSectors\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You were detected!.\n        /// </summary>\n        internal static string YouWereDetected {\n            get {\n                return ResourceManager.GetString(\"YouWereDetected\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Z.\n        /// </summary>\n        internal static string Z {\n            get {\n                return ResourceManager.GetString(\"Z\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Zappa’s gang member.\n        /// </summary>\n        internal static string ZappasGangman {\n            get {\n                return ResourceManager.GetString(\"ZappasGangman\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Zombie level.\n        /// </summary>\n        internal static string ZOMBIE_LEVEL {\n            get {\n                return ResourceManager.GetString(\"ZOMBIE_LEVEL\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to No video game is complete without zombies.\n        ///.\n        /// </summary>\n        internal static string ZOMBIE_LEVEL_Description {\n            get {\n                return ResourceManager.GetString(\"ZOMBIE_LEVEL_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Zoom in.\n        /// </summary>\n        internal static string ZoomIn {\n            get {\n                return ResourceManager.GetString(\"ZoomIn\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Zoom out.\n        /// </summary>\n        internal static string ZoomOut {\n            get {\n                return ResourceManager.GetString(\"ZoomOut\", resourceCulture);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/Resources/MyTexts.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"Accept\" xml:space=\"preserve\">\n    <value>Accept</value>\n  </data>\n  <data name=\"Active\" xml:space=\"preserve\">\n    <value>Active</value>\n  </data>\n  <data name=\"Add\" xml:space=\"preserve\">\n    <value>Add</value>\n  </data>\n  <data name=\"AddGamePlayTooltip\" xml:space=\"preserve\">\n    <value>Adds gameplay objects</value>\n  </data>\n  <data name=\"AddMysteriousCubesTooltip\" xml:space=\"preserve\">\n    <value>Adds mysterious cubes</value>\n  </data>\n  <data name=\"AddObject\" xml:space=\"preserve\">\n    <value>Add</value>\n  </data>\n  <data name=\"AddObjectTooltip\" xml:space=\"preserve\">\n    <value>Add new object</value>\n  </data>\n  <data name=\"AddPrefabTooltip\" xml:space=\"preserve\">\n    <value>Adds prefab to active container</value>\n  </data>\n  <data name=\"AddSelectedToSector\" xml:space=\"preserve\">\n    <value>Add selected to this sector</value>\n  </data>\n  <data name=\"AddVoxels\" xml:space=\"preserve\">\n    <value>Add voxels</value>\n  </data>\n  <data name=\"AdjustGrid\" xml:space=\"preserve\">\n    <value>Adjust grid</value>\n  </data>\n  <data name=\"AdjustGridTooltip\" xml:space=\"preserve\">\n    <value>Press +/− to adjust length of one grid step</value>\n  </data>\n  <data name=\"AdvancedArmor\" xml:space=\"preserve\">\n    <value>ADVANCED ARMOR | Projectile/explosion damage reduction: 60% | Solar wind damage reduction: 0%</value>\n  </data>\n  <data name=\"Afterburner\" xml:space=\"preserve\">\n    <value>Afterburner</value>\n  </data>\n  <data name=\"Aggressive\" xml:space=\"preserve\">\n    <value>Aggressive</value>\n  </data>\n  <data name=\"Aggressivity\" xml:space=\"preserve\">\n    <value>Aggressivity</value>\n  </data>\n  <data name=\"AITemplate\" xml:space=\"preserve\">\n    <value>AI template</value>\n  </data>\n  <data name=\"Alarm\" xml:space=\"preserve\">\n    <value>Alarm</value>\n  </data>\n  <data name=\"AlienGate\" xml:space=\"preserve\">\n    <value>Alien gate</value>\n  </data>\n  <data name=\"AllBlueprints\" xml:space=\"preserve\">\n    <value>All blueprints</value>\n  </data>\n  <data name=\"AllEvents\" xml:space=\"preserve\">\n    <value>All events</value>\n  </data>\n  <data name=\"AllItemsInventory\" xml:space=\"preserve\">\n    <value>All items</value>\n  </data>\n  <data name=\"AllMissions\" xml:space=\"preserve\">\n    <value>All missions</value>\n  </data>\n  <data name=\"AllWeapons\" xml:space=\"preserve\">\n    <value>All weapons</value>\n  </data>\n  <data name=\"Alpha\" xml:space=\"preserve\">\n    <value>Alpha</value>\n  </data>\n  <data name=\"Ammo\" xml:space=\"preserve\">\n    <value>Ammo</value>\n  </data>\n  <data name=\"AmmoAutocannonArmorPiercingIncendiary\" xml:space=\"preserve\">\n    <value>Armor piercing incendiary ammo for gatling gun</value>\n  </data>\n  <data name=\"AmmoAutocannonBasic\" xml:space=\"preserve\">\n    <value>BASIC AMMO FOR GATLING GUN | Damage: 3.9 | Pilot damage: 0 | EMP damage: 0 | Speed: 2000m/s | Range: 2800m</value>\n  </data>\n  <data name=\"AmmoAutocannonBioChem\" xml:space=\"preserve\">\n    <value>BIOCHEM AMMO FOR GATLING GUN | Damage: 2 | Pilot damage: 10 | EMP damage: 0 | Speed: 1860m/s | Range: 1800m</value>\n  </data>\n  <data name=\"AmmoAutocannonEMP\" xml:space=\"preserve\">\n    <value>EMP AMMO FOR GATLING GUN | Damage: 0.5 | Pilot damage: 0 | EMP damage: 5 | Speed: 1000m/s | Range: 1800m | Special: Can temporarily disable electrical objects</value>\n  </data>\n  <data name=\"AmmoAutocannonHighVelocity\" xml:space=\"preserve\">\n    <value>HIGH VELOCITY AMMO FOR GATLING GUN | Damage: 5.85 | Pilot damage: 0 | EMP damage: 0 | Speed: 3000m/s | Range: 3000m</value>\n  </data>\n  <data name=\"AmmoAutocannonSAPHEI\" xml:space=\"preserve\">\n    <value>SAPHEI AMMO FOR GATLING GUN | Damage: 9.75 | Pilot damage: 0 | EMP damage: 0 | Speed: 2000m/s | Range: 2200m | Special: Semi-Armor Piercing High Explosive Incendiary</value>\n  </data>\n  <data name=\"AmmoAutomaticRifleWithSilencerBioChem\" xml:space=\"preserve\">\n    <value>BIOCHEM AMMO FOR AUTOMATIC RIFLE WITH SILENCER | Damage: 0.5 | Pilot damage: 10 | EMP damage: 0 | Speed: 900m/s | Range: 1500m</value>\n  </data>\n  <data name=\"AmmoAutomaticRifleWithSilencerHighVelocity\" xml:space=\"preserve\">\n    <value>HIGH VELOCITY AMMO FOR AUTOMATIC RIFLE WITH SILENCER | Damage: 1 | Pilot damage: 0 | EMP damage: 0 | Speed: 1000m/s | Range: 2000m</value>\n  </data>\n  <data name=\"AmmoAutomaticRifleWithSilencerSAPHEI\" xml:space=\"preserve\">\n    <value>SAPHEI AMMO FOR AUTOMATIC RIFLE WITH SILENCER | Damage: 2 | Pilot damage: 0 | EMP damage: 0 | Speed: 900m/s | Range: 1800m | Special: Semi-Armor Piercing High Explosive Incendiary</value>\n  </data>\n  <data name=\"AmmoCannonArmorPiercingIncendiary\" xml:space=\"preserve\">\n    <value>Armor piercing incendiary ammo for cannon</value>\n  </data>\n  <data name=\"AmmoCannonBasic\" xml:space=\"preserve\">\n    <value>BASIC AMMO FOR CANNON | Damage: 30 | Pilot damage: 0 | EMP damage: 0 | Speed: 1000m/s | Explosion radius: 22 m | Range: 14000m</value>\n  </data>\n  <data name=\"AmmoCannonBiochem\" xml:space=\"preserve\">\n    <value>BIOCHEM AMMO FOR CANNON | Damage: 3 | Pilot damage: 30 | EMP damage: 0 | Speed: 2000m/s | Explosion radius: 15 m | Range: 14000m</value>\n  </data>\n  <data name=\"AmmoCannonEMP\" xml:space=\"preserve\">\n    <value>EMP AMMO FOR CANNON | Damage: 3 | Pilot damage: 0 | EMP damage: 30 | Speed: 2000m/s | Explosion radius: 15 m | Range: 14000m | Special: Can temporarily disable electrical objects</value>\n  </data>\n  <data name=\"AmmoCannonHighVelocity\" xml:space=\"preserve\">\n    <value>HIGH VELOCITY AMMO FOR CANNON | Damage: 40 | Pilot damage: 0 | EMP damage: 0 | Speed: 1500m/s | Explosion radius: 25 m | Range: 15000m</value>\n  </data>\n  <data name=\"AmmoCannonProximityExplosive\" xml:space=\"preserve\">\n    <value>PROXIMITY EXPLOSIVE AMMO FOR CANNON | Damage: 50 | Pilot damage: 0 | EMP damage: 0 | Speed: 950m/s | Explosion radius: 32 m | Range: 12000m | Special: Proximity ammo explodes within 5m of a target. No direct hit necessary.</value>\n  </data>\n  <data name=\"AmmoCannonSAPHEI\" xml:space=\"preserve\">\n    <value>SAPHEI AMMO FOR CANNON | Damage: 80 | Pilot damage: 0 | EMP damage: 0 | Speed: 1100m/s | Explosion radius: 30 m | Range: 15000m | Special: Semi-Armor Piercing High Explosive Incendiary</value>\n  </data>\n  <data name=\"AmmoCannonTunnelBuster\" xml:space=\"preserve\">\n    <value>TUNNEL BUSTER AMMO FOR CANNON | Damage: 60 | Pilot damage: 0 | EMP damage: 0 | Speed: 300m/s | Explosion radius: 60 m | Range: 10000m | Special: Large explosion radius</value>\n  </data>\n  <data name=\"AmmoGroupBullet\" xml:space=\"preserve\">\n    <value>Bullet</value>\n  </data>\n  <data name=\"AmmoGroupCannon\" xml:space=\"preserve\">\n    <value>Cannon</value>\n  </data>\n  <data name=\"AmmoGroupMissile\" xml:space=\"preserve\">\n    <value>Missile</value>\n  </data>\n  <data name=\"AmmoGroupUniversalLauncherBack\" xml:space=\"preserve\">\n    <value>Universal launcher back</value>\n  </data>\n  <data name=\"AmmoGroupUniversalLauncherFront\" xml:space=\"preserve\">\n    <value>Universal launcher front</value>\n  </data>\n  <data name=\"AmmoGuidedEngineDetection\" xml:space=\"preserve\">\n    <value>ENGINE DETECTION MISSILE FOR GUIDED LAUNCHER | Damage: 20 | Pilot damage: 0 | EMP damage: 0 | Speed: 400m/s | Explosion radius: 30 m | Range: 15000m | Special: Guides missile toward ships emitting heat from engines.</value>\n  </data>\n  <data name=\"AmmoGuidedRadarDetection\" xml:space=\"preserve\">\n    <value>RADAR DETECTION MISSILE FOR GUIDED LAUNCHER | Damage: 20 | Pilot damage: 0 | EMP damage: 0 | Speed: 400m/s | Explosion radius: 30 m | Range: 15000m | Special: Guides missile towards ships emitting radar</value>\n  </data>\n  <data name=\"AmmoGuidedVisualDetection\" xml:space=\"preserve\">\n    <value>VISUAL DETECTION MISSILE FOR GUIDED LAUNCHER | Damage: 20 | Pilot damage: 0 | EMP damage: 0 | Speed: 400m/s | Explosion radius: 30 m | Range: 15000m | Special: Guides missile at ships which are in line of sight</value>\n  </data>\n  <data name=\"AmmoMachineGunArmorPiercingIncendiary\" xml:space=\"preserve\">\n    <value>Armor piercing incendiary ammo for machine gun</value>\n  </data>\n  <data name=\"AmmoMachineGunBasic\" xml:space=\"preserve\">\n    <value>BASIC AMMO FOR MACHINE GUN | Damage: 6 | Pilot damage: 0 | EMP damage: 0 | Speed: 1700m/s | Range: 2300m</value>\n  </data>\n  <data name=\"AmmoMachineGunBioChem\" xml:space=\"preserve\">\n    <value>BIOCHEM AMMO FOR MACHINE GUN | Damage: 3 | Pilot damage: 30 | EMP damage: 0 | Speed: 900m/s | Range: 1900m</value>\n  </data>\n  <data name=\"AmmoMachineGunEMP\" xml:space=\"preserve\">\n    <value>EMP AMMO FOR MACHINE GUN | Damage: 0.5 | Pilot damage: 0 | EMP damage: 5 | Speed: 900m/s | Range: 1900m | Special: Can temporarily disable electrical objects</value>\n  </data>\n  <data name=\"AmmoMachineGunHighVelocity\" xml:space=\"preserve\">\n    <value>HIGH VELOCITY AMMO FOR MACHINE GUN | Damage: 9 | Pilot damage: 0 | EMP damage: 0 | Speed: 2200m/s | Range: 2500m</value>\n  </data>\n  <data name=\"AmmoMachineGunSAPHEI\" xml:space=\"preserve\">\n    <value>SAPHEI AMMO FOR MACHINE GUN | Damage: 15 | Pilot damage: 0 | EMP damage: 0 | Speed: 1900m/s | Range: 1600m | Special: Semi-Armor Piercing High Explosive Incendiary</value>\n  </data>\n  <data name=\"AmmoMissileBasic\" xml:space=\"preserve\">\n    <value>BASIC MISSILE | Damage: 70 | Pilot damage: 0 | EMP damage: 0 | Speed: 700m/s | Explosion radius: 30 m | Range: 10000m </value>\n  </data>\n  <data name=\"AmmoMissileBioChem\" xml:space=\"preserve\">\n    <value>BIOCHEM MISSILE AMMO FOR MISSILE LAUNCHER | Damage: 2 | Pilot damage: 40 | EMP damage: 0 | Speed: 500m/s | Explosion radius: 40 m | Range: 10000m</value>\n  </data>\n  <data name=\"AmmoMissileEMP\" xml:space=\"preserve\">\n    <value>EMP MISSILE FOR GUIDED LAUNCHER | Damage: 2 | Pilot damage: 0 | EMP damage: 20 | Speed: 500m/s | Explosion radius: 40 m | Range: 10000m | Special: Can temporarily disable electrical objects</value>\n  </data>\n  <data name=\"AmmoSelectText\" xml:space=\"preserve\">\n    <value>Assign ammo types\nto your weapon slots\nby selecting an ammo type\nand pressing fire.</value>\n  </data>\n  <data name=\"AmmoSelectTextValues\" xml:space=\"preserve\">\n    <value>Primary: {0}\nSecondary: {1}\nThird: {2}\nFourth: {3}\nFifth: {4}</value>\n  </data>\n  <data name=\"AmmoShotgunArmorPiercing\" xml:space=\"preserve\">\n    <value>ARMOR-PIERCING AMMO FOR SHOTGUN | Damage: 10 | Pilot damage: 0 | EMP damage: 0 | Speed: 800m/s | Range: 300m</value>\n  </data>\n  <data name=\"AmmoShotgunBasic\" xml:space=\"preserve\">\n    <value>BASIC AMMO FOR SHOTGUN | Damage: 5 | Pilot damage: 0 | EMP damage: 0 | Speed: 600m/s | Range: 300m</value>\n  </data>\n  <data name=\"AmmoShotgunExplosive\" xml:space=\"preserve\">\n    <value>EXPLOSIVE AMMO FOR SHOTGUN | Damage: 10 | Pilot damage: 0 | EMP damage: 0 | Speed: 700m/s | Range: 300m</value>\n  </data>\n  <data name=\"AmmoShotgunHighVelocity\" xml:space=\"preserve\">\n    <value>HIGH VELOCITY AMMO FOR SHOTGUN | Damage: 8 | Pilot damage: 0 | EMP damage: 0 | Speed: 1200m/s | Range: 400m</value>\n  </data>\n  <data name=\"AmmoSniperBioChem\" xml:space=\"preserve\">\n    <value>BIOCHEM AMMO FOR SNIPER | Damage: 10 | Pilot damage: 50 | EMP damage: 0 | Speed: 9000m/s | Range: 9600m</value>\n  </data>\n  <data name=\"AmmoSniperEMP\" xml:space=\"preserve\">\n    <value>EMP AMMO FOR SNIPER | Damage: 15 | Pilot damage: 0 | EMP damage: 45 | Speed: 8000m/s | Range: 9600m | Special: Can temporarily disable electrical objects</value>\n  </data>\n  <data name=\"AmmoSniperHighVelocity\" xml:space=\"preserve\">\n    <value>HIGH VELOCITY AMMO FOR SNIPER | Damage: 60 | Pilot damage: 0 | EMP damage: 0 | Speed: 15000m/s | Range: 12000m</value>\n  </data>\n  <data name=\"AmmoSniperSAPHEI\" xml:space=\"preserve\">\n    <value>SAPHEI AMMO FOR SNIPER | Damage: 105 | Pilot damage: 0 | EMP damage: 0 | Speed: 8000m/s | Range: 11400m | Special: Semi-Armor Piercing High Explosive Incendiary</value>\n  </data>\n  <data name=\"AmmoUniversalLauncherAsteroidKiller\" xml:space=\"preserve\">\n    <value>ASTEROID KILLER AMMO FOR UNIVERSAL LAUNCHER | Damage: 150 | Pilot damage: 100 | EMP damage: 0 | Speed: 5m/s | Explosion radius: 90 m | Range: 10000m | Special: Destroys a large area of mass and ore</value>\n  </data>\n  <data name=\"AmmoUniversalLauncherDecoyFlare\" xml:space=\"preserve\">\n    <value>DECOY FLARE AMMO FOR UNIVERSAL LAUNCHER | Speed: 100m/s | Range: 100 m | Creates a decoy flare and confuses most guided missiles</value>\n  </data>\n  <data name=\"AmmoUniversalLauncherDirectionalExplosive\" xml:space=\"preserve\">\n    <value>DIRECTIONAL EXPLOSIVE AMMO FOR UNIVERSAL LAUNCHER | Damage: 90 | Pilot damage: 60 | EMP damage: 0 | Speed: 5m/s | Explosion radius: 35 m | Range: 10000m | Special: Creates explosion in one direction</value>\n  </data>\n  <data name=\"AmmoUniversalLauncherEMPBomb\" xml:space=\"preserve\">\n    <value>EMP BOMB AMMO FOR UNIVERSAL LAUNCHER | Damage: 20 | Pilot damage: 0 | EMP damage: 150 | Speed: 5m/s | Explosion radius: 100 m | Range: 10000m | Special: Can temporarily disable electrical objects</value>\n  </data>\n  <data name=\"AmmoUniversalLauncherFlashBomb\" xml:space=\"preserve\">\n    <value>FLASH BOMB AMMO FOR UNIVERSAL LAUNCHER | Speed: 2m/s | Range: 100 m | Blinds pilots for a few seconds.</value>\n  </data>\n  <data name=\"AmmoUniversalLauncherGravitationBomb\" xml:space=\"preserve\">\n    <value>Gravitation bomb ammo for universal launcher</value>\n  </data>\n  <data name=\"AmmoUniversalLauncherHologram\" xml:space=\"preserve\">\n    <value>HOLOGRAM PROJECTOR AMMO FOR UNIVERSAL LAUNCHER | Speed: 2m/s | Range: 100 m | Projects a holographic view of your ship for 60 seconds and confuses most guided missiles and enemies</value>\n  </data>\n  <data name=\"AmmoUniversalLauncherIlluminatingShell\" xml:space=\"preserve\">\n    <value>ILLUMINATING SHELL AMMO FOR UNIVERSAL LAUNCHER | Speed: 2m/s | Range: 100 m | Illuminates an area for 20 seconds, before burning out.</value>\n  </data>\n  <data name=\"AmmoUniversalLauncherMineBasic\" xml:space=\"preserve\">\n    <value>BASIC MINE AMMO FOR UNIVERSAL LAUNCHER | Damage: 80 | Pilot damage: 0 | EMP damage: 0 | Speed: 5m/s | Explosion radius: 30 m | Range: 100m | Special: Stationary mine</value>\n  </data>\n  <data name=\"AmmoUniversalLauncherMineBioChem\" xml:space=\"preserve\">\n    <value>BIOCHEM MINE AMMO FOR UNIVERSAL LAUNCHER | Damage: 6 | Pilot damage: 60 | EMP damage: 0 | Speed: 5m/s | Explosion radius: 20 m | Range: 10000m</value>\n  </data>\n  <data name=\"AmmoUniversalLauncherMineSmart\" xml:space=\"preserve\">\n    <value>SMART MINE AMMO FOR UNIVERSAL LAUNCHER | Damage: 60 | Pilot damage: 0 | EMP damage: 0 | Speed: 5m/s | Explosion radius: 50 m | Range: 300m | Special: Mine chasing enemy ship up to 300m with speed 5m/s.  </value>\n  </data>\n  <data name=\"AmmoUniversalLauncherRemoteBomb\" xml:space=\"preserve\">\n    <value>REMOTE BOMB AMMO FOR UNIVERSAL LAUNCHER | Damage: 120 | Pilot damage: 60 | EMP damage: 0 | Speed: 5m/s | Explosion radius: 40 m | Range: 10000m | Special: Bomb will be launched by special key</value>\n  </data>\n  <data name=\"AmmoUniversalLauncherRemoteCamera\" xml:space=\"preserve\">\n    <value>REMOTE CAMERA FOR UNIVERSAL LAUNCHER | Speed: 2m/s | Range: 100 m | Remote camera that can be stuck to walls</value>\n  </data>\n  <data name=\"AmmoUniversalLauncherSmokeBomb\" xml:space=\"preserve\">\n    <value>SMOKE BOMB CANISTER FOR UNIVERSAL LAUNCHER | Speed: 5m/s | Range: 10000 m | Generates a smoke cloud for 45 seconds.</value>\n  </data>\n  <data name=\"AmmoUniversalLauncherSphereExplosive\" xml:space=\"preserve\">\n    <value>SPHERICAL EXPLOSIVE AMMO FOR UNIVERSAL LAUNCHER | Damage: 120 | Pilot damage: 50 | EMP damage: 0 | Speed: 5m/s | Explosion radius: 30 m | Range: 10000m | Special: Creates spherical area of effect.</value>\n  </data>\n  <data name=\"AmmoUniversalLauncherTimeBomb\" xml:space=\"preserve\">\n    <value>TIME BOMB AMMO FOR UNIVERSAL LAUNCHER | Damage: 100 | Pilot damage: 0 | EMP damage: 0 | Speed: 5m/s | Explosion radius: 30 m | Range: 10000m | Special: Timed bomb, explodes after time elapsed</value>\n  </data>\n  <data name=\"AreYouSureYouWantToExit\" xml:space=\"preserve\">\n    <value>Are you sure you want to exit?</value>\n  </data>\n  <data name=\"AreYouSureYouWantToLogout\" xml:space=\"preserve\">\n    <value>Are you sure you want to log out? You will have \nto re-enter your username and password on next login.</value>\n  </data>\n  <data name=\"Armor\" xml:space=\"preserve\">\n    <value>Armor</value>\n  </data>\n  <data name=\"Armor_hull\" xml:space=\"preserve\">\n    <value>Armor hull</value>\n  </data>\n  <data name=\"AspectRatioDualHeadNormal_4_3\" xml:space=\"preserve\">\n    <value>Dual Head normal 4:3</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"AspectRatioDualHeadWide_16_10\" xml:space=\"preserve\">\n    <value>Dual Head wide 16:10</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"AspectRatioDualHeadWide_16_9\" xml:space=\"preserve\">\n    <value>Dual Head wide 16:9</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"AspectRatioNormal_4_3\" xml:space=\"preserve\">\n    <value>Normal 4:3</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"AspectRatioTripleHeadNormal_4_3\" xml:space=\"preserve\">\n    <value>Triple Head normal 4:3</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"AspectRatioTripleHeadWide_16_10\" xml:space=\"preserve\">\n    <value>Triple Head wide 16:10</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"AspectRatioTripleHeadWide_16_9\" xml:space=\"preserve\">\n    <value>Triple Head wide 16:9</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"AspectRatioWide_16_10\" xml:space=\"preserve\">\n    <value>Wide 16:10</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"AspectRatioWide_16_9\" xml:space=\"preserve\">\n    <value>Wide 16:9</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"AspectRatio_Short_Dual_16_10\" xml:space=\"preserve\">\n    <value>Dual 16:10</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"AspectRatio_Short_Dual_16_9\" xml:space=\"preserve\">\n    <value>Dual 16:9</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"AspectRatio_Short_Dual_4_3\" xml:space=\"preserve\">\n    <value>Dual 4:3</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"AspectRatio_Short_Normal_16_10\" xml:space=\"preserve\">\n    <value>16:10</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"AspectRatio_Short_Normal_16_9\" xml:space=\"preserve\">\n    <value>16:9</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"AspectRatio_Short_Normal_4_3\" xml:space=\"preserve\">\n    <value>4:3</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"AspectRatio_Short_Triple_16_10\" xml:space=\"preserve\">\n    <value>Triple 16:10</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"AspectRatio_Short_Triple_16_9\" xml:space=\"preserve\">\n    <value>Triple 16:9</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"AspectRatio_Short_Triple_4_3\" xml:space=\"preserve\">\n    <value>Triple 4:3</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"AssignControlJoystick\" xml:space=\"preserve\">\n    <value>Please press a button\non the joystick/gamepad</value>\n  </data>\n  <data name=\"AssignControlJoystickAxis\" xml:space=\"preserve\">\n    <value>Please move an analog axis\non the joystick/gamepad</value>\n  </data>\n  <data name=\"AssignControlKeyboard\" xml:space=\"preserve\">\n    <value>Please press a key</value>\n  </data>\n  <data name=\"AssignControlMouse\" xml:space=\"preserve\">\n    <value>Please click a mouse button</value>\n  </data>\n  <data name=\"Asteroid\" xml:space=\"preserve\">\n    <value>Asteroid</value>\n  </data>\n  <data name=\"AsteroidContextMenuCaption\" xml:space=\"preserve\">\n    <value>Asteroid</value>\n  </data>\n  <data name=\"AsteroidKillerHud\" xml:space=\"preserve\">\n    <value>Asteroid killer</value>\n  </data>\n  <data name=\"AsteroidMaterial\" xml:space=\"preserve\">\n    <value>Choose material</value>\n  </data>\n  <data name=\"AsteroidName\" xml:space=\"preserve\">\n    <value>Choose asteroid</value>\n  </data>\n  <data name=\"AsteroidWithSpaceStationStartStorySector\" xml:space=\"preserve\">\n    <value>Asteroid with space station story sector start</value>\n  </data>\n  <data name=\"AttachedContextMenuCaption\" xml:space=\"preserve\">\n    <value>Attached to camera</value>\n  </data>\n  <data name=\"AttachToCamera\" xml:space=\"preserve\">\n    <value>Attach to camera</value>\n  </data>\n  <data name=\"AttachToCameraTooltip\" xml:space=\"preserve\">\n    <value>Press RMB on selected objects to attach them to spectator</value>\n  </data>\n  <data name=\"Audio\" xml:space=\"preserve\">\n    <value>Audio</value>\n  </data>\n  <data name=\"AudioOptions\" xml:space=\"preserve\">\n    <value>Audio options</value>\n  </data>\n  <data name=\"AutoLevel\" xml:space=\"preserve\">\n    <value>Toggle autoleveling</value>\n  </data>\n  <data name=\"Autologin\" xml:space=\"preserve\">\n    <value>Auto-login</value>\n  </data>\n  <data name=\"AvailableOnlyForAdministrators\" xml:space=\"preserve\">\n    <value>This feature is available only for administrators</value>\n  </data>\n  <data name=\"AvailableSubmissions\" xml:space=\"preserve\">\n    <value>Available submissions</value>\n  </data>\n  <data name=\"Back\" xml:space=\"preserve\">\n    <value>Back</value>\n  </data>\n  <data name=\"BadSectorIdentifierInput\" xml:space=\"preserve\">\n    <value>Bad sector identifier</value>\n  </data>\n  <data name=\"BankNode\" xml:space=\"preserve\">\n    <value>Bank node</value>\n  </data>\n  <data name=\"BasicArmor\" xml:space=\"preserve\">\n    <value>BASIC ARMOR | Projectile/explosion damage reduction: 30% | Solar wind damage reduction: 0%</value>\n  </data>\n  <data name=\"Blank\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"Blue\" xml:space=\"preserve\">\n    <value>Blue</value>\n  </data>\n  <data name=\"BlueprintAdvancedConstructionKit\" xml:space=\"preserve\">\n    <value>Advanced construction kit</value>\n  </data>\n  <data name=\"BlueprintBasicConstructionKit\" xml:space=\"preserve\">\n    <value>Basic construction kit</value>\n  </data>\n  <data name=\"BlueprintFortificationKit\" xml:space=\"preserve\">\n    <value>Fortification kit</value>\n  </data>\n  <data name=\"BlueprintHonorableKit\" xml:space=\"preserve\">\n    <value>Honorable kit</value>\n  </data>\n  <data name=\"BlueprintSuperiorConstructionKit\" xml:space=\"preserve\">\n    <value>Superior construction kit</value>\n  </data>\n  <data name=\"BlueprintUtilitiesKit\" xml:space=\"preserve\">\n    <value>Utilities kit</value>\n  </data>\n  <data name=\"BlueprintWeaponKit\" xml:space=\"preserve\">\n    <value>Weapons kit</value>\n  </data>\n  <data name=\"BuildingInformationWhenBuilding\" xml:space=\"preserve\">\n    <value>[Can build:{0}] [Built: {1}] [In queue: {2}] [State:{3}%]</value>\n  </data>\n  <data name=\"BuildingInformationWhenNotBuilding\" xml:space=\"preserve\">\n    <value>[Can build:{0}] [Built: {1}] [In queue: {2}]</value>\n  </data>\n  <data name=\"BuildingRequirements\" xml:space=\"preserve\">\n    <value>Building requirements</value>\n  </data>\n  <data name=\"buildTypeBeam\" xml:space=\"preserve\">\n    <value>Beams</value>\n  </data>\n  <data name=\"buildTypeConnection\" xml:space=\"preserve\">\n    <value>Connections</value>\n  </data>\n  <data name=\"buildTypeCustom\" xml:space=\"preserve\">\n    <value>Custom</value>\n  </data>\n  <data name=\"buildTypeDetail\" xml:space=\"preserve\">\n    <value>Details</value>\n  </data>\n  <data name=\"buildTypeModule\" xml:space=\"preserve\">\n    <value>Modules</value>\n  </data>\n  <data name=\"buildTypePanel\" xml:space=\"preserve\">\n    <value>Shells</value>\n  </data>\n  <data name=\"ButtonContinueWithoutSaving\" xml:space=\"preserve\">\n    <value>Don’t save</value>\n  </data>\n  <data name=\"ButtonRetry\" xml:space=\"preserve\">\n    <value>Retry</value>\n  </data>\n  <data name=\"Cable_corner_25m\" xml:space=\"preserve\">\n    <value>Cable corner 25m</value>\n  </data>\n  <data name=\"Cable_straight_180\" xml:space=\"preserve\">\n    <value>Cable straight 180</value>\n  </data>\n  <data name=\"Cable_straight_45\" xml:space=\"preserve\">\n    <value>Cable straight 45</value>\n  </data>\n  <data name=\"Cable_straight_90\" xml:space=\"preserve\">\n    <value>Cable straight 90</value>\n  </data>\n  <data name=\"Cable_S_45m\" xml:space=\"preserve\">\n    <value>Cable S 45m</value>\n  </data>\n  <data name=\"Camera\" xml:space=\"preserve\">\n    <value>Camera</value>\n  </data>\n  <data name=\"Cancel\" xml:space=\"preserve\">\n    <value>Cancel</value>\n  </data>\n  <data name=\"CanNotAssignControl\" xml:space=\"preserve\">\n    <value>CANNOT ASSIGN CONTROL</value>\n  </data>\n  <data name=\"CannotCopyBecauseMaxVoxelShapesReached\" xml:space=\"preserve\">\n    <value>Cannot copy because the maximum voxel shape count was reached</value>\n  </data>\n  <data name=\"CannotCopyBecauseYouDontHaveEnoughObjectsStored\" xml:space=\"preserve\">\n    <value>You cannot copy because you don’t have enough objects stored.</value>\n  </data>\n  <data name=\"CantLoginAccessRestrictedDevelop\" xml:space=\"preserve\">\n    <value>Sorry, you can’t log in. You don’t have permission to access the development build. \nMore info: www.MinerWars.com/Troubleshooting</value>\n  </data>\n  <data name=\"CantLoginAccessRestrictedTest\" xml:space=\"preserve\">\n    <value>Sorry, you can’t log in. You don’t have permission to access the test build. \nMore info: www.MinerWars.com/Troubleshooting</value>\n  </data>\n  <data name=\"CantLoginClientVersionIsWrong\" xml:space=\"preserve\">\n    <value>Sorry, you can’t log in. This version of Miner Wars is outdated. A newer version of Miner Wars \nis available. Please run the updater or visit www.minerwars.com for the latest version.</value>\n  </data>\n  <data name=\"CantLoginPlayerAlreadyLoggedIn\" xml:space=\"preserve\">\n    <value>Sorry, you can’t log in. The username is already in use. If your connection has \nbeen terminated, please wait 90 seconds and then login again.</value>\n  </data>\n  <data name=\"CantLoginWrongPlayerNameOrPassword\" xml:space=\"preserve\">\n    <value>Sorry, you can’t log in. Wrong username or password, but this \nmay be caused by the difference between public and test builds. \nMore info: www.MinerWars.com/Troubleshooting</value>\n  </data>\n  <data name=\"CantLoginWrongPlayerNameOrPasswordPublic\" xml:space=\"preserve\">\n    <value>Sorry, you can’t log in. The username and/or password is incorrect. Please try again.</value>\n  </data>\n  <data name=\"CantRegisterServerIsUnavailable\" xml:space=\"preserve\">\n    <value>Sorry, you can’t register. The server is not accessible. \nPlease check your firewall settings.</value>\n  </data>\n  <data name=\"CantSaveSectorContainerCollides\" xml:space=\"preserve\">\n    <value>Can’t save sector – one of the prefab containers collides with other objects.</value>\n  </data>\n  <data name=\"CantSaveSectorFailed\" xml:space=\"preserve\">\n    <value>Saving sector failed</value>\n  </data>\n  <data name=\"CantSaveSectorNameExists\" xml:space=\"preserve\">\n    <value>Sector save failed, the specified name is already in use.</value>\n  </data>\n  <data name=\"CaptionPropertiesAreNotValid\" xml:space=\"preserve\">\n    <value>Properties are not valid.</value>\n  </data>\n  <data name=\"CaptionPropertyIsNotValid\" xml:space=\"preserve\">\n    <value>Property is not valid.</value>\n  </data>\n  <data name=\"CargoBox\" xml:space=\"preserve\">\n    <value>Cargo Box</value>\n  </data>\n  <data name=\"Cash\" xml:space=\"preserve\">\n    <value>{0}</value>\n  </data>\n  <data name=\"CategoryTypeArmors\" xml:space=\"preserve\">\n    <value>Armors</value>\n  </data>\n  <data name=\"CategoryTypeBillboards\" xml:space=\"preserve\">\n    <value>Billboards</value>\n  </data>\n  <data name=\"categoryTypeCables\" xml:space=\"preserve\">\n    <value>Cables</value>\n  </data>\n  <data name=\"CategoryTypeChambers\" xml:space=\"preserve\">\n    <value>Chambers</value>\n  </data>\n  <data name=\"categoryTypeCommunications\" xml:space=\"preserve\">\n    <value>Communications</value>\n  </data>\n  <data name=\"CategoryTypeDoorCases\" xml:space=\"preserve\">\n    <value>Doors</value>\n  </data>\n  <data name=\"CategoryTypeDoors\" xml:space=\"preserve\">\n    <value>Doors</value>\n  </data>\n  <data name=\"categoryTypeFlight\" xml:space=\"preserve\">\n    <value>Flight</value>\n  </data>\n  <data name=\"CategoryTypeFrame\" xml:space=\"preserve\">\n    <value>Frame</value>\n  </data>\n  <data name=\"categoryTypeHangars\" xml:space=\"preserve\">\n    <value>Hangars</value>\n  </data>\n  <data name=\"categoryTypeIndustry\" xml:space=\"preserve\">\n    <value>Industry</value>\n  </data>\n  <data name=\"categoryTypeLarge\" xml:space=\"preserve\">\n    <value>Large</value>\n  </data>\n  <data name=\"CategoryTypeLargeShips\" xml:space=\"preserve\">\n    <value>Large ships</value>\n  </data>\n  <data name=\"categoryTypeLifeSupport\" xml:space=\"preserve\">\n    <value>Life support</value>\n  </data>\n  <data name=\"CategoryTypeLights\" xml:space=\"preserve\">\n    <value>Lights</value>\n  </data>\n  <data name=\"categoryTypeMannedObjects\" xml:space=\"preserve\">\n    <value>Manned objects</value>\n  </data>\n  <data name=\"categoryTypeMedium\" xml:space=\"preserve\">\n    <value>Medium</value>\n  </data>\n  <data name=\"categoryTypeMship\" xml:space=\"preserve\">\n    <value>Mship</value>\n  </data>\n  <data name=\"CategoryTypeOther\" xml:space=\"preserve\">\n    <value>Other</value>\n  </data>\n  <data name=\"CategoryTypePanels\" xml:space=\"preserve\">\n    <value>Panels</value>\n  </data>\n  <data name=\"CategoryTypeParticles\" xml:space=\"preserve\">\n    <value>Particles</value>\n  </data>\n  <data name=\"CategoryTypePassages\" xml:space=\"preserve\">\n    <value>Passages</value>\n  </data>\n  <data name=\"categoryTypePipe\" xml:space=\"preserve\">\n    <value>Pipes</value>\n  </data>\n  <data name=\"CategoryTypeSigns\" xml:space=\"preserve\">\n    <value>Signs</value>\n  </data>\n  <data name=\"categoryTypeSmall\" xml:space=\"preserve\">\n    <value>Small</value>\n  </data>\n  <data name=\"CategoryTypeSounds\" xml:space=\"preserve\">\n    <value>Sounds</value>\n  </data>\n  <data name=\"categoryTypeSupply\" xml:space=\"preserve\">\n    <value>Supply</value>\n  </data>\n  <data name=\"CategoryTypeTrafficSigns\" xml:space=\"preserve\">\n    <value>Traffic signs</value>\n  </data>\n  <data name=\"categoryTypeTunnel\" xml:space=\"preserve\">\n    <value>Tunnels</value>\n  </data>\n  <data name=\"categoryTypeWeaponry\" xml:space=\"preserve\">\n    <value>Weaponry</value>\n  </data>\n  <data name=\"ChangeRadiusTooltip\" xml:space=\"preserve\">\n    <value>Radius of the voxel hand used for asteroid modification</value>\n  </data>\n  <data name=\"ChangeShapeTooltip\" xml:space=\"preserve\">\n    <value>Choose between Box or Sphere voxel hand shapes</value>\n  </data>\n  <data name=\"ChangeVoxelMaterial\" xml:space=\"preserve\">\n    <value>Change material</value>\n  </data>\n  <data name=\"CheatsCaption\" xml:space=\"preserve\">\n    <value>Cheats</value>\n  </data>\n  <data name=\"Chinese_Mines_CenterAsteroid\" xml:space=\"preserve\">\n    <value>Chinese Mines Center Asteroid</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Chinese_Mines_FrontAsteroid\" xml:space=\"preserve\">\n    <value>Chinese Mines Front Asteroid</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Chinese_Mines_FrontRightAsteroid\" xml:space=\"preserve\">\n    <value>Chinese Mines Front Right Asteroid</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Chinese_Mines_LeftAsteroid\" xml:space=\"preserve\">\n    <value>Chinese Mines Left Asteroid</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Chinese_Mines_MainAsteroid\" xml:space=\"preserve\">\n    <value>Chinese Mines Main Asteroid</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Chinese_Mines_RightAsteroid\" xml:space=\"preserve\">\n    <value>Chinese Mines Right Asteroid</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"ChooseGameType\" xml:space=\"preserve\">\n    <value>Choose game</value>\n  </data>\n  <data name=\"ChooseHandMode\" xml:space=\"preserve\">\n    <value>Choose hand mode</value>\n  </data>\n  <data name=\"ChooseInfluence\" xml:space=\"preserve\">\n    <value>Choose type</value>\n  </data>\n  <data name=\"ChooseModel\" xml:space=\"preserve\">\n    <value>Choose model</value>\n  </data>\n  <data name=\"ChooseObject3D\" xml:space=\"preserve\">\n    <value>Choose object type</value>\n  </data>\n  <data name=\"ChoosePassword\" xml:space=\"preserve\">\n    <value>Choose a password</value>\n  </data>\n  <data name=\"ChoosePrefabBuildType\" xml:space=\"preserve\">\n    <value>Build type</value>\n  </data>\n  <data name=\"ChoosePrefabCategory\" xml:space=\"preserve\">\n    <value>Category</value>\n  </data>\n  <data name=\"ChoosePrefabSubcategory\" xml:space=\"preserve\">\n    <value>Subcategory</value>\n  </data>\n  <data name=\"ChooseShapeMode\" xml:space=\"preserve\">\n    <value>Choose shape</value>\n  </data>\n  <data name=\"ChooseSound\" xml:space=\"preserve\">\n    <value>Choose sound</value>\n  </data>\n  <data name=\"ChooseUsername\" xml:space=\"preserve\">\n    <value>Choose a username</value>\n  </data>\n  <data name=\"Cistern\" xml:space=\"preserve\">\n    <value>Cistern</value>\n  </data>\n  <data name=\"ClearAsteroidMaterials\" xml:space=\"preserve\">\n    <value>Clear materials</value>\n  </data>\n  <data name=\"ClearAsteroidMaterialsTooltip\" xml:space=\"preserve\">\n    <value>Reset all materials on currently selected asteroid</value>\n  </data>\n  <data name=\"ClearInventory\" xml:space=\"preserve\">\n    <value>Clear inventory</value>\n  </data>\n  <data name=\"ClearWholeSector\" xml:space=\"preserve\">\n    <value>Clear sector</value>\n  </data>\n  <data name=\"ClearWholeSectorTooltip\" xml:space=\"preserve\">\n    <value>Remove everything from the sector (excluding the player ship)</value>\n  </data>\n  <data name=\"Cobalt_01\" xml:space=\"preserve\">\n    <value>Cobalt</value>\n  </data>\n  <data name=\"CollidingObjects\" xml:space=\"preserve\">\n    <value>Colliding objects</value>\n  </data>\n  <data name=\"Color\" xml:space=\"preserve\">\n    <value>Color</value>\n  </data>\n  <data name=\"ColorArea\" xml:space=\"preserve\">\n    <value>Color area</value>\n  </data>\n  <data name=\"Concrete_01\" xml:space=\"preserve\">\n    <value>Concrete 1</value>\n  </data>\n  <data name=\"Concrete_02\" xml:space=\"preserve\">\n    <value>Concrete 2</value>\n  </data>\n  <data name=\"ConnectedPrefabIds\" xml:space=\"preserve\">\n    <value>Connected prefab IDs</value>\n  </data>\n  <data name=\"ConnectEntityWithId\" xml:space=\"preserve\">\n    <value>Connect entity with ID</value>\n  </data>\n  <data name=\"Connection_box\" xml:space=\"preserve\">\n    <value>Connection box</value>\n  </data>\n  <data name=\"ConnectWaypoints\" xml:space=\"preserve\">\n    <value>Connect waypoints</value>\n  </data>\n  <data name=\"ConnectWaypointsTooltip\" xml:space=\"preserve\">\n    <value>Creates a connection between all selected waypoints</value>\n  </data>\n  <data name=\"ConstantFlashing\" xml:space=\"preserve\">\n    <value>ConstantFlashing</value>\n  </data>\n  <data name=\"ContinueLastGame\" xml:space=\"preserve\">\n    <value>Continue last game</value>\n  </data>\n  <data name=\"ContinueUppercase\" xml:space=\"preserve\">\n    <value>CONTINUE</value>\n  </data>\n  <data name=\"ControlAlreadyAssigned\" xml:space=\"preserve\">\n    <value>{0} is already assigned to {1}.\nRemove the original control?</value>\n  </data>\n  <data name=\"ControlIsNotValid\" xml:space=\"preserve\">\n    <value>The pressed key may not be assigned to controls.</value>\n  </data>\n  <data name=\"Controlling\" xml:space=\"preserve\">\n    <value>Controlling: </value>\n  </data>\n  <data name=\"Controls\" xml:space=\"preserve\">\n    <value>Controls</value>\n  </data>\n  <data name=\"Copy\" xml:space=\"preserve\">\n    <value>Copy</value>\n  </data>\n  <data name=\"CopySelected\" xml:space=\"preserve\">\n    <value>Copy selected</value>\n  </data>\n  <data name=\"CopySelectedTooltip\" xml:space=\"preserve\">\n    <value>Press Left Ctrl+C to copy selection and Ctrl+V to paste</value>\n  </data>\n  <data name=\"CopyTool\" xml:space=\"preserve\">\n    <value>Copy tool</value>\n  </data>\n  <data name=\"CorrectSnappedPrefabs\" xml:space=\"preserve\">\n    <value>Correct snapped prefabs</value>\n  </data>\n  <data name=\"CorrectSnappedPrefabsTooltip\" xml:space=\"preserve\">\n    <value>Align all prefabs by their snap points</value>\n  </data>\n  <data name=\"Countdown\" xml:space=\"preserve\">\n    <value>Time remaining: {0}</value>\n  </data>\n  <data name=\"Crazy\" xml:space=\"preserve\">\n    <value>Crazy</value>\n  </data>\n  <data name=\"CreateAsteroid\" xml:space=\"preserve\">\n    <value>Create asteroid</value>\n  </data>\n  <data name=\"CreateDebris\" xml:space=\"preserve\">\n    <value>Create debris</value>\n  </data>\n  <data name=\"CreateLargeShip\" xml:space=\"preserve\">\n    <value>Create large ship</value>\n  </data>\n  <data name=\"CreatePrefab\" xml:space=\"preserve\">\n    <value>Add prefab</value>\n  </data>\n  <data name=\"CreateSmallShip\" xml:space=\"preserve\">\n    <value>Create small ship</value>\n  </data>\n  <data name=\"Credits\" xml:space=\"preserve\">\n    <value>Credits</value>\n  </data>\n  <data name=\"Cube_128x128x128\" xml:space=\"preserve\">\n    <value>Cube_128x128x128</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Cube_128x128x256\" xml:space=\"preserve\">\n    <value>Cube_128x128x256</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Cube_128x128x64\" xml:space=\"preserve\">\n    <value>Cube_128x128x64</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Cube_128x256x128\" xml:space=\"preserve\">\n    <value>Cube_128x256x128</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Cube_128x256x256\" xml:space=\"preserve\">\n    <value>Cube_128x256x256</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Cube_128x256x64\" xml:space=\"preserve\">\n    <value>Cube_128x256x64</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Cube_128x64x128\" xml:space=\"preserve\">\n    <value>Cube_128x64x128</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Cube_128x64x256\" xml:space=\"preserve\">\n    <value>Cube_128x64x256</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Cube_128x64x64\" xml:space=\"preserve\">\n    <value>Cube_128x64x64</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Cube_256x128x128\" xml:space=\"preserve\">\n    <value>Cube_256x128x128</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Cube_256x128x256\" xml:space=\"preserve\">\n    <value>Cube_256x128x256</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Cube_256x128x512\" xml:space=\"preserve\">\n    <value>Cube_256x128x512</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Cube_256x256x128\" xml:space=\"preserve\">\n    <value>Cube_256x256x128</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Cube_256x256x256\" xml:space=\"preserve\">\n    <value>Cube_256x256x256</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Cube_256x256x512\" xml:space=\"preserve\">\n    <value>Cube_256x256x512</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Cube_256x512x128\" xml:space=\"preserve\">\n    <value>Cube_256x512x128</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Cube_256x512x256\" xml:space=\"preserve\">\n    <value>Cube_256x512x256</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Cube_256x512x512\" xml:space=\"preserve\">\n    <value>Cube_256x512x512</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Cube_512x256x256\" xml:space=\"preserve\">\n    <value>Cube_512x256x256</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Cube_512x256x512\" xml:space=\"preserve\">\n    <value>Cube_512x256x512</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Cube_512x512x256\" xml:space=\"preserve\">\n    <value>Cube_512x512x256</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Cube_512x512x512\" xml:space=\"preserve\">\n    <value>Cube_512x512x512</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Cube_64x128x128\" xml:space=\"preserve\">\n    <value>Cube_64x128x128</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Cube_64x128x64\" xml:space=\"preserve\">\n    <value>Cube_64x128x64</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Cube_64x64x128\" xml:space=\"preserve\">\n    <value>Cube_64x64x128</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Cube_64x64x64\" xml:space=\"preserve\">\n    <value>Cube_64x64x64</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"CustomObject\" xml:space=\"preserve\">\n    <value>Custom object</value>\n  </data>\n  <data name=\"Cycle\" xml:space=\"preserve\">\n    <value>Cycle</value>\n  </data>\n  <data name=\"DebrisContextMenuCaption\" xml:space=\"preserve\">\n    <value>Debris</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Decline\" xml:space=\"preserve\">\n    <value>Decline</value>\n  </data>\n  <data name=\"DecoyFlareHud\" xml:space=\"preserve\">\n    <value>Decoy flare</value>\n  </data>\n  <data name=\"DecreaseVideoSettingsCheckBox\" xml:space=\"preserve\">\n    <value>Don’t show again</value>\n  </data>\n  <data name=\"Default\" xml:space=\"preserve\">\n    <value>Default</value>\n  </data>\n  <data name=\"DefaultNotificationDisapearMessage\" xml:space=\"preserve\">\n    <value>\n    Press {0} to show.</value>\n  </data>\n  <data name=\"default_light_0\" xml:space=\"preserve\">\n    <value>Default light</value>\n  </data>\n  <data name=\"default_particles_prefab_0\" xml:space=\"preserve\">\n    <value>Default particles prefab</value>\n  </data>\n  <data name=\"default_sound_prefab_0\" xml:space=\"preserve\">\n    <value>Default sound prefab</value>\n  </data>\n  <data name=\"Defensive\" xml:space=\"preserve\">\n    <value>Defensive</value>\n  </data>\n  <data name=\"DeformedSphere1_64x64x64\" xml:space=\"preserve\">\n    <value>64x64x64\nDeformed small sphere 1</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"DeformedSphere2_64x64x64\" xml:space=\"preserve\">\n    <value>64x64x64\nDeformed small sphere 2</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"DeformedSphereWithCorridor_128x64x64\" xml:space=\"preserve\">\n    <value>128x64x64\nDeformed sphere</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"DeformedSphereWithCorridor_256x256x256\" xml:space=\"preserve\">\n    <value>256x256x256\nDeformed sphere</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"DeformedSphereWithCraters_128x128x128\" xml:space=\"preserve\">\n    <value>128x128x128\nDeformed sphere</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"DeformedSphereWithHoles_64x128x64\" xml:space=\"preserve\">\n    <value>64x128x64\nDeformed sphere</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Delete\" xml:space=\"preserve\">\n    <value>Delete</value>\n  </data>\n  <data name=\"DeleteObjects\" xml:space=\"preserve\">\n    <value>Do you really want to delete selected objects?</value>\n  </data>\n  <data name=\"DeleteSelected\" xml:space=\"preserve\">\n    <value>Delete selection</value>\n  </data>\n  <data name=\"DeleteSelectedTooltip\" xml:space=\"preserve\">\n    <value>Press Delete to remove selection</value>\n  </data>\n  <data name=\"DemoUserCannotTravel\" xml:space=\"preserve\">\n    <value>Cannot travel in demo</value>\n  </data>\n  <data name=\"Depth\" xml:space=\"preserve\">\n    <value>Depth</value>\n  </data>\n  <data name=\"Description\" xml:space=\"preserve\">\n    <value>Description</value>\n  </data>\n  <data name=\"DetachFromCameraTooltip\" xml:space=\"preserve\">\n    <value>Press LMB to detach objects at current position</value>\n  </data>\n  <data name=\"DetonateDrone\" xml:space=\"preserve\">\n    <value>Detonate ammo inside drone</value>\n  </data>\n  <data name=\"Detector\" xml:space=\"preserve\">\n    <value>Detector</value>\n  </data>\n  <data name=\"DeveloperCaption\" xml:space=\"preserve\">\n    <value>Developer screen</value>\n  </data>\n  <data name=\"DifficultyCaption\" xml:space=\"preserve\">\n    <value>Choose difficulty</value>\n  </data>\n  <data name=\"DifficultyEasy\" xml:space=\"preserve\">\n    <value>Easy</value>\n  </data>\n  <data name=\"DifficultyHard\" xml:space=\"preserve\">\n    <value>Hard</value>\n  </data>\n  <data name=\"DifficultyNormal\" xml:space=\"preserve\">\n    <value>Normal</value>\n  </data>\n  <data name=\"DiffuseColor\" xml:space=\"preserve\">\n    <value>Diffuse color</value>\n  </data>\n  <data name=\"DirectionalExplosiveHud\" xml:space=\"preserve\">\n    <value>Directional explosive</value>\n  </data>\n  <data name=\"Disconnected\" xml:space=\"preserve\">\n    <value>disconnected</value>\n  </data>\n  <data name=\"DisconnectWaypoints\" xml:space=\"preserve\">\n    <value>Disconnect waypoints</value>\n  </data>\n  <data name=\"DisconnectWaypointsTooltip\" xml:space=\"preserve\">\n    <value>Deletes all connections between selected waypoints</value>\n  </data>\n  <data name=\"DisplayName\" xml:space=\"preserve\">\n    <value>Display name</value>\n  </data>\n  <data name=\"DisplayPrefabContainerBounding\" xml:space=\"preserve\">\n    <value>Display prefab container bounding</value>\n  </data>\n  <data name=\"DisplayUnselectedBounding\" xml:space=\"preserve\">\n    <value>Display unselected objects bounding</value>\n  </data>\n  <data name=\"DistantGlare\" xml:space=\"preserve\">\n    <value>Distant glare</value>\n  </data>\n  <data name=\"DistantGlareFlashing\" xml:space=\"preserve\">\n    <value>Distant glare - flashing</value>\n  </data>\n  <data name=\"Down\" xml:space=\"preserve\">\n    <value>Down</value>\n  </data>\n  <data name=\"DownThrust\" xml:space=\"preserve\">\n    <value>Down thrust</value>\n  </data>\n  <data name=\"DoYouWantToKeepTheseSettingsXSecondsRemaining\" xml:space=\"preserve\">\n    <value>Do you want to keep these settings? {0} seconds remaining.</value>\n  </data>\n  <data name=\"DrawCollisionSpotsInHud\" xml:space=\"preserve\">\n    <value>Draw collision spots in HUD</value>\n  </data>\n  <data name=\"DrawHelperPrimitives\" xml:space=\"preserve\">\n    <value>Draw helper primitives</value>\n  </data>\n  <data name=\"DrawPhysicsPrimitives\" xml:space=\"preserve\">\n    <value>Draw physics primitives</value>\n  </data>\n  <data name=\"DrawVoxelContentAsBillboards\" xml:space=\"preserve\">\n    <value>Draw voxel content as billboards</value>\n  </data>\n  <data name=\"Drill\" xml:space=\"preserve\">\n    <value>Drill</value>\n  </data>\n  <data name=\"Drone\" xml:space=\"preserve\">\n    <value>Drone</value>\n  </data>\n  <data name=\"DroneCamera\" xml:space=\"preserve\">\n    <value>Drone camera</value>\n  </data>\n  <data name=\"DroneNo\" xml:space=\"preserve\">\n    <value>Drone {0}: press {1} to take control</value>\n  </data>\n  <data name=\"Dummies\" xml:space=\"preserve\">\n    <value>Dummies</value>\n  </data>\n  <data name=\"DummyPoint\" xml:space=\"preserve\">\n    <value>Dummy point</value>\n  </data>\n  <data name=\"DustInfluenceSphereType\" xml:space=\"preserve\">\n    <value>Dust</value>\n  </data>\n  <data name=\"EachlightHasInternallyTwoLightsPointAndSpot\" xml:space=\"preserve\">\n    <value>Each light has internally two lights: point and spot.</value>\n  </data>\n  <data name=\"EacPrisonAsteroid\" xml:space=\"preserve\">\n    <value>Eac Prison Asteroid</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Edit\" xml:space=\"preserve\">\n    <value>Edit</value>\n  </data>\n  <data name=\"EditAsteroid\" xml:space=\"preserve\">\n    <value>Edit asteroid</value>\n  </data>\n  <data name=\"EditCargoBox\" xml:space=\"preserve\">\n    <value>Edit cargo box</value>\n  </data>\n  <data name=\"EditingActiveContainer\" xml:space=\"preserve\">\n    <value>YOU ARE EDITING PREFAB CONTAINER NOW</value>\n  </data>\n  <data name=\"EditingWayPointConnections\" xml:space=\"preserve\">\n    <value>Press Shift+J to connect selected waypoints by numbers\nPress Shift+K to connect/disconnect all selected waypoints\nPress Shift+N to create waypoint group\nClick a waypoint to cycle between groups it belongs to</value>\n  </data>\n  <data name=\"EditingWayPointConnectionsPathSelected\" xml:space=\"preserve\">\n    <value>Press Shift+J to connect selected waypoints by numbers\nPress Shift+K to connect/disconnect all selected waypoints\nPress Shift+N to rename waypoint group {0}\nCtrl+click waypoints to add/remove them from {0}</value>\n  </data>\n  <data name=\"EditObjects\" xml:space=\"preserve\">\n    <value>Edit objects</value>\n  </data>\n  <data name=\"Editor\" xml:space=\"preserve\">\n    <value>Editor</value>\n  </data>\n  <data name=\"EditorClearWholeSector\" xml:space=\"preserve\">\n    <value>Do you really want to clear the whole sector?</value>\n  </data>\n  <data name=\"EditorDecreaseGridScale\" xml:space=\"preserve\">\n    <value>Decrease grid scale</value>\n  </data>\n  <data name=\"EditorGroups\" xml:space=\"preserve\">\n    <value>Named groups</value>\n  </data>\n  <data name=\"EditorGroupsAddObjects\" xml:space=\"preserve\">\n    <value>Add to group</value>\n  </data>\n  <data name=\"EditorGroupsCantCreateGroupCaption\" xml:space=\"preserve\">\n    <value>Create group error</value>\n  </data>\n  <data name=\"EditorGroupsCantCreateGroupText\" xml:space=\"preserve\">\n    <value>Can’t create group.</value>\n  </data>\n  <data name=\"EditorGroupsCreateGroup\" xml:space=\"preserve\">\n    <value>Create group</value>\n  </data>\n  <data name=\"EditorGroupsDeleteGroup\" xml:space=\"preserve\">\n    <value>Delete group</value>\n  </data>\n  <data name=\"EditorGroupsLoadGroup\" xml:space=\"preserve\">\n    <value>Load from sector</value>\n  </data>\n  <data name=\"EditorGroupsNameUsedCaption\" xml:space=\"preserve\">\n    <value>Rename group error</value>\n  </data>\n  <data name=\"EditorGroupsNameUsedText\" xml:space=\"preserve\">\n    <value>The group name is already used.</value>\n  </data>\n  <data name=\"EditorGroupsRemoveObjects\" xml:space=\"preserve\">\n    <value>Remove from group</value>\n  </data>\n  <data name=\"EditorGroupsRenameGroup\" xml:space=\"preserve\">\n    <value>Rename group</value>\n  </data>\n  <data name=\"EditorGroupsSelectGroup\" xml:space=\"preserve\">\n    <value>Select group</value>\n  </data>\n  <data name=\"EditorGroupsUnselectGroup\" xml:space=\"preserve\">\n    <value>Unselect group</value>\n  </data>\n  <data name=\"EditorHelpCaption\" xml:space=\"preserve\">\n    <value>Editor help</value>\n  </data>\n  <data name=\"EditorIncreaseGridScale\" xml:space=\"preserve\">\n    <value>Increase grid scale</value>\n  </data>\n  <data name=\"EditorLoadSectorMessage\" xml:space=\"preserve\">\n    <value>Are you sure you want to load? Any changes since your last save will be lost.</value>\n  </data>\n  <data name=\"EditorMenuButtonText\" xml:space=\"preserve\">\n    <value>Menu</value>\n  </data>\n  <data name=\"EditorObjectAxisRotationAmount\" xml:space=\"preserve\">\n    <value>Object rotation amount in degrees: </value>\n  </data>\n  <data name=\"EditorOptions\" xml:space=\"preserve\">\n    <value>Editor options</value>\n  </data>\n  <data name=\"EditorPrimaryActionKey\" xml:space=\"preserve\">\n    <value>Primary action key</value>\n  </data>\n  <data name=\"EditorSecondaryActionKey\" xml:space=\"preserve\">\n    <value>Secondary action key</value>\n  </data>\n  <data name=\"EditorSelectAndHide\" xml:space=\"preserve\">\n    <value>Type selectability &amp; visibility</value>\n  </data>\n  <data name=\"EditorSwitchGizmoMode\" xml:space=\"preserve\">\n    <value>Switch gizmo mode</value>\n  </data>\n  <data name=\"EditorSwitchGizmoSpace\" xml:space=\"preserve\">\n    <value>Switch gizmo space</value>\n  </data>\n  <data name=\"EditorVoxelHand\" xml:space=\"preserve\">\n    <value>Voxel hand</value>\n  </data>\n  <data name=\"EditPrefab\" xml:space=\"preserve\">\n    <value>Edit prefab</value>\n  </data>\n  <data name=\"EditPrefabContainer\" xml:space=\"preserve\">\n    <value>Edit container</value>\n  </data>\n  <data name=\"EditProperties\" xml:space=\"preserve\">\n    <value>Edit properties</value>\n  </data>\n  <data name=\"EditPropertiesTooltip\" xml:space=\"preserve\">\n    <value>Edit entity properties</value>\n  </data>\n  <data name=\"EditScanner\" xml:space=\"preserve\">\n    <value>Edit scanner</value>\n  </data>\n  <data name=\"EditSelected\" xml:space=\"preserve\">\n    <value>Edit selected</value>\n  </data>\n  <data name=\"EditSelectedTooltip\" xml:space=\"preserve\">\n    <value>Edit currently selected object</value>\n  </data>\n  <data name=\"EditSmallShip\" xml:space=\"preserve\">\n    <value>Edit small ship</value>\n  </data>\n  <data name=\"EditVoxelHand\" xml:space=\"preserve\">\n    <value>Edit voxel hand</value>\n  </data>\n  <data name=\"EditVoxelHandIsProjected\" xml:space=\"preserve\">\n    <value>Project to voxel surface</value>\n  </data>\n  <data name=\"EditVoxelHandShapeBox\" xml:space=\"preserve\">\n    <value>Voxel hand box</value>\n  </data>\n  <data name=\"EditVoxelHandShapeCuboid\" xml:space=\"preserve\">\n    <value>Voxel hand cuboid</value>\n  </data>\n  <data name=\"EditVoxelHandShapeDistance\" xml:space=\"preserve\">\n    <value>Distance</value>\n  </data>\n  <data name=\"EditVoxelHandShapeMaterial\" xml:space=\"preserve\">\n    <value>Voxel hand material</value>\n  </data>\n  <data name=\"EditVoxelHandShapeMode\" xml:space=\"preserve\">\n    <value>Voxel hand mode</value>\n  </data>\n  <data name=\"EditVoxelHandShapeOffset\" xml:space=\"preserve\">\n    <value>Offset</value>\n  </data>\n  <data name=\"EditVoxelHandShapeSize\" xml:space=\"preserve\">\n    <value>Size</value>\n  </data>\n  <data name=\"EditVoxelHandShapeSphere\" xml:space=\"preserve\">\n    <value>Voxel hand sphere</value>\n  </data>\n  <data name=\"EditVoxelHandShapeType\" xml:space=\"preserve\">\n    <value>Voxel hand type</value>\n  </data>\n  <data name=\"EditVoxelHandTooltip\" xml:space=\"preserve\">\n    <value>You can also press V to enter voxel hand mode</value>\n  </data>\n  <data name=\"EmailAddress\" xml:space=\"preserve\">\n    <value>Email address</value>\n  </data>\n  <data name=\"EMPBombHud\" xml:space=\"preserve\">\n    <value>EMP bomb</value>\n  </data>\n  <data name=\"EmptyDescription\" xml:space=\"preserve\">\n    <value>Empty description</value>\n  </data>\n  <data name=\"Enabled\" xml:space=\"preserve\">\n    <value>Enabled</value>\n  </data>\n  <data name=\"EnableLightsInEditor\" xml:space=\"preserve\">\n    <value>Enable lights in editor</value>\n  </data>\n  <data name=\"EnableSnapPointFilter\" xml:space=\"preserve\">\n    <value>Enable snap point filter</value>\n  </data>\n  <data name=\"End\" xml:space=\"preserve\">\n    <value>End</value>\n  </data>\n  <data name=\"Enemy\" xml:space=\"preserve\">\n    <value>Enemy</value>\n  </data>\n  <data name=\"PurchaseCheats\" xml:space=\"preserve\">\n    <value>Purchase cheats at www.minerwars.com/Store</value>\n  </data>\n  <data name=\"EnemyCantDie\" xml:space=\"preserve\">\n    <value>Enemies can’t die</value>\n  </data>\n  <data name=\"Engine\" xml:space=\"preserve\">\n    <value>Engine</value>\n  </data>\n  <data name=\"EngineChemical1\" xml:space=\"preserve\">\n    <value>CHEMICAL ENGINE 1 | Max speed: 100 m/s | Thurst: 900000 N | Fuel: Helium</value>\n  </data>\n  <data name=\"EngineChemical2\" xml:space=\"preserve\">\n    <value>CHEMICAL ENGINE 2 | Max speed: 105 m/s | Thurst: 1000000 N | Fuel: Helium</value>\n  </data>\n  <data name=\"EngineChemical3\" xml:space=\"preserve\">\n    <value>CHEMICAL ENGINE 3 | Max speed: 110 m/s | Thurst: 1100000 N | Fuel: Helium</value>\n  </data>\n  <data name=\"EngineChemical4\" xml:space=\"preserve\">\n    <value>CHEMICAL ENGINE 4 | Max speed: 115 m/s | Thurst: 1200000 N | Fuel: Helium</value>\n  </data>\n  <data name=\"EngineChemical5\" xml:space=\"preserve\">\n    <value>CHEMICAL ENGINE 5 | Max speed: 120 m/s | Thurst: 1300000 N | Fuel: Helium</value>\n  </data>\n  <data name=\"EngineNuclear1\" xml:space=\"preserve\">\n    <value>NUCLEAR ENGINE 1 | Max speed: 140 m/s | Thurst: 1100000 N | Fuel: Plutonium</value>\n  </data>\n  <data name=\"EngineNuclear2\" xml:space=\"preserve\">\n    <value>NUCLEAR ENGINE 2 | Max speed: 145 m/s | Thurst: 1200000 N | Fuel: Plutonium</value>\n  </data>\n  <data name=\"EngineNuclear3\" xml:space=\"preserve\">\n    <value>NUCLEAR ENGINE 3 | Max speed: 150 m/s | Thurst: 1300000 N | Fuel: Plutonium</value>\n  </data>\n  <data name=\"EngineNuclear4\" xml:space=\"preserve\">\n    <value>NUCLEAR ENGINE 4 | Max speed: 155 m/s | Thurst: 1400000 N | Fuel: Plutonium</value>\n  </data>\n  <data name=\"EngineNuclear5\" xml:space=\"preserve\">\n    <value>NUCLEAR ENGINE 5 | Max speed: 160 m/s | Thurst: 1500000 N | Fuel: Plutonium</value>\n  </data>\n  <data name=\"EnginePowerCells1\" xml:space=\"preserve\">\n    <value>POWER CELLS ENGINE 1 | Max speed: 130 m/s | Thurst: 1000000 N | Fuel: Ice</value>\n  </data>\n  <data name=\"EnginePowerCells2\" xml:space=\"preserve\">\n    <value>POWER CELLS ENGINE 2 | Max speed: 135 m/s | Thurst: 1075000 N | Fuel: Ice</value>\n  </data>\n  <data name=\"EnginePowerCells3\" xml:space=\"preserve\">\n    <value>POWER CELLS ENGINE 3 | Max speed: 140 m/s | Thurst: 1150000 N | Fuel: Ice</value>\n  </data>\n  <data name=\"EnginePowerCells4\" xml:space=\"preserve\">\n    <value>POWER CELLS ENGINE 4 | Max speed: 145 m/s | Thurst: 1225000 N | Fuel: Ice</value>\n  </data>\n  <data name=\"EnginePowerCells5\" xml:space=\"preserve\">\n    <value>POWER CELLS ENGINE 5 | Max speed: 150 m/s | Thurst: 1300000 N | Fuel: Ice</value>\n  </data>\n  <data name=\"EngineShutdown\" xml:space=\"preserve\">\n    <value>Engines</value>\n  </data>\n  <data name=\"EnterAtLeastTwoCharacters\" xml:space=\"preserve\">\n    <value>Enter at least 2 characters</value>\n  </data>\n  <data name=\"EnterPrefabContainer\" xml:space=\"preserve\">\n    <value>Enter prefab container</value>\n  </data>\n  <data name=\"EnterPrefabContainerTooltip\" xml:space=\"preserve\">\n    <value>Press LMB on prefab inside selected prefab container to enter container edit mode</value>\n  </data>\n  <data name=\"EnterSectorInProgressPleaseWait\" xml:space=\"preserve\">\n    <value>Entering sector… please wait.</value>\n  </data>\n  <data name=\"EnterVoxelHand\" xml:space=\"preserve\">\n    <value>Enter voxel hand</value>\n  </data>\n  <data name=\"EnterVoxelHandTooltip\" xml:space=\"preserve\">\n    <value>Press V button to modify asteroids using the voxel hand</value>\n  </data>\n  <data name=\"EntityId\" xml:space=\"preserve\">\n    <value>EntityId: </value>\n  </data>\n  <data name=\"EntityIsAlreadyConnected\" xml:space=\"preserve\">\n    <value>Entity is already connected</value>\n  </data>\n  <data name=\"EntityIsNotExist\" xml:space=\"preserve\">\n    <value>Entity does not exist</value>\n  </data>\n  <data name=\"EntityIsNotSupported\" xml:space=\"preserve\">\n    <value>Entity is not supported</value>\n  </data>\n  <data name=\"EntryPointAlreadyDefined\" xml:space=\"preserve\">\n    <value>Entry point is already defined. Select the already defined entry point?</value>\n  </data>\n  <data name=\"ErrorCreatingNetworkConnection\" xml:space=\"preserve\">\n    <value>Error creating network connection. Miner Wars will run in \noffline mode. For more information see the log file.</value>\n  </data>\n  <data name=\"Exit\" xml:space=\"preserve\">\n    <value>Exit</value>\n  </data>\n  <data name=\"ExitEditingMode\" xml:space=\"preserve\">\n    <value>Exit prefab container</value>\n  </data>\n  <data name=\"ExitEditingModeTooltip\" xml:space=\"preserve\">\n    <value>Exits from prefab container editing mode</value>\n  </data>\n  <data name=\"ExitSelected\" xml:space=\"preserve\">\n    <value>Exit selected</value>\n  </data>\n  <data name=\"ExitToMainMenu\" xml:space=\"preserve\">\n    <value>Exit to main menu</value>\n  </data>\n  <data name=\"ExitToWindows\" xml:space=\"preserve\">\n    <value>Exit to Windows</value>\n  </data>\n  <data name=\"ExitVoxelHand\" xml:space=\"preserve\">\n    <value>Exit voxel hand</value>\n  </data>\n  <data name=\"ExitVoxelHandTooltip\" xml:space=\"preserve\">\n    <value>Press the V button again to exit voxel hand mode</value>\n  </data>\n  <data name=\"ExtraMoney\" xml:space=\"preserve\">\n    <value>Add one milion credits</value>\n  </data>\n  <data name=\"Faction\" xml:space=\"preserve\">\n    <value>Faction</value>\n  </data>\n  <data name=\"FactionChinese\" xml:space=\"preserve\">\n    <value>People’s Republic of China</value>\n  </data>\n  <data name=\"FactionChurch\" xml:space=\"preserve\">\n    <value>Commonwealth of Holy Church</value>\n  </data>\n  <data name=\"FactionCSR\" xml:space=\"preserve\">\n    <value>Czecho-Slovak Federation</value>\n  </data>\n  <data name=\"FactionEuroamerican\" xml:space=\"preserve\">\n    <value>Euro-American Confederation</value>\n  </data>\n  <data name=\"FactionFourthReich\" xml:space=\"preserve\">\n    <value>Fourth Reich</value>\n  </data>\n  <data name=\"FactionFreeAsia\" xml:space=\"preserve\">\n    <value>Free Asia</value>\n  </data>\n  <data name=\"FactionFreelancers\" xml:space=\"preserve\">\n    <value>Freelancers</value>\n  </data>\n  <data name=\"FactionFSRE\" xml:space=\"preserve\">\n    <value>FSRE</value>\n  </data>\n  <data name=\"FactionIndia\" xml:space=\"preserve\">\n    <value>Free Republic of India</value>\n  </data>\n  <data name=\"FactionJapan\" xml:space=\"preserve\">\n    <value>Japanese Empire</value>\n  </data>\n  <data name=\"FactionMiners\" xml:space=\"preserve\">\n    <value>Miners</value>\n  </data>\n  <data name=\"FactionNone\" xml:space=\"preserve\">\n    <value>None</value>\n  </data>\n  <data name=\"FactionOmnicorp\" xml:space=\"preserve\">\n    <value>OmniCorp</value>\n  </data>\n  <data name=\"FactionPirate\" xml:space=\"preserve\">\n    <value>Pirate</value>\n  </data>\n  <data name=\"FactionRangers\" xml:space=\"preserve\">\n    <value>Space Rangers</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"FactionRavens\" xml:space=\"preserve\">\n    <value>Ravens Force</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"FactionRussian\" xml:space=\"preserve\">\n    <value>Russian</value>\n  </data>\n  <data name=\"FactionRussianKGB\" xml:space=\"preserve\">\n    <value>Russian Commando</value>\n  </data>\n  <data name=\"FactionSaudi\" xml:space=\"preserve\">\n    <value>Arabs</value>\n  </data>\n  <data name=\"FactionSlavers\" xml:space=\"preserve\">\n    <value>Slavers</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"FactionSMLtd\" xml:space=\"preserve\">\n    <value>Space Mining Ltd.</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"FactionSyndicate\" xml:space=\"preserve\">\n    <value>The Syndicate</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"FactionTemplars\" xml:space=\"preserve\">\n    <value>The Templars</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"FactionTraders\" xml:space=\"preserve\">\n    <value>Space Trader’s Guild</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"FactionTTLtd\" xml:space=\"preserve\">\n    <value>Trade &amp; Transport Ltd.</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"FakeScreen\" xml:space=\"preserve\">\n    <value>Fake screen</value>\n  </data>\n  <data name=\"FeatureNotYetImplemented\" xml:space=\"preserve\">\n    <value>This feature is disabled.</value>\n  </data>\n  <data name=\"FieldOfView\" xml:space=\"preserve\">\n    <value>Field of view</value>\n  </data>\n  <data name=\"FilterOnlyItemsOnWhichHasBlueprintsToolTip\" xml:space=\"preserve\">\n    <value>Display only items for which I have blueprints</value>\n  </data>\n  <data name=\"FilterOnlyItemsOnWhichHasOreToolTip\" xml:space=\"preserve\">\n    <value>Display only items for which I have enough ore</value>\n  </data>\n  <data name=\"FilterOnlyItemsWhichHasBuildToolTip\" xml:space=\"preserve\">\n    <value>Display only items which I have already created</value>\n  </data>\n  <data name=\"FinishedMissions\" xml:space=\"preserve\">\n    <value>Finished missions</value>\n  </data>\n  <data name=\"FinishedSubmissions\" xml:space=\"preserve\">\n    <value>Finished sub-missions</value>\n  </data>\n  <data name=\"FireFifthWeapon\" xml:space=\"preserve\">\n    <value>Fire fifth weapon</value>\n  </data>\n  <data name=\"FireFourthWeapon\" xml:space=\"preserve\">\n    <value>Fire fourth weapon</value>\n  </data>\n  <data name=\"FirePrimaryWeapon\" xml:space=\"preserve\">\n    <value>Fire primary weapon</value>\n  </data>\n  <data name=\"FireSecondaryWeapon\" xml:space=\"preserve\">\n    <value>Fire secondary weapon</value>\n  </data>\n  <data name=\"FireThirdWeapon\" xml:space=\"preserve\">\n    <value>Fire third weapon</value>\n  </data>\n  <data name=\"FirstSpawn\" xml:space=\"preserve\">\n    <value>First spawn</value>\n  </data>\n  <data name=\"FixCollisions\" xml:space=\"preserve\">\n    <value>Fix all collisions before returning back to game</value>\n  </data>\n  <data name=\"FixedSnapPointSize\" xml:space=\"preserve\">\n    <value>Fixed snap point size</value>\n  </data>\n  <data name=\"FlashBombHud\" xml:space=\"preserve\">\n    <value>Flash bomb</value>\n  </data>\n  <data name=\"Flee\" xml:space=\"preserve\">\n    <value>Flee</value>\n  </data>\n  <data name=\"FogSettings\" xml:space=\"preserve\">\n    <value>Fog settings</value>\n  </data>\n  <data name=\"FogSettingsTooltip\" xml:space=\"preserve\">\n    <value>Configure fog settings</value>\n  </data>\n  <data name=\"FollowTarget\" xml:space=\"preserve\">\n    <value>Follow target</value>\n  </data>\n  <data name=\"ForbiddenSolarMapAreaWarning\" xml:space=\"preserve\">\n    <value>You cannot travel here.</value>\n  </data>\n  <data name=\"FormAgreement1\" xml:space=\"preserve\">\n    <value>By submitting this form, you confirm that you have read and agree to the Miner Wars Terms of Use</value>\n  </data>\n  <data name=\"FormAgreement2\" xml:space=\"preserve\">\n    <value>and Privacy Policy. For more information visit www.minerwars.com.</value>\n  </data>\n  <data name=\"Fortress\" xml:space=\"preserve\">\n    <value>Fortress</value>\n  </data>\n  <data name=\"ForwardThrust\" xml:space=\"preserve\">\n    <value>Forward thrust</value>\n  </data>\n  <data name=\"FoundationFactory\" xml:space=\"preserve\">\n    <value>Foundation factory</value>\n  </data>\n  <data name=\"FoundationFactoryInInventory\" xml:space=\"preserve\">\n    <value>Add foundation factory</value>\n  </data>\n  <data name=\"FourthReichMothership\" xml:space=\"preserve\">\n    <value>Fourth Reich mothership</value>\n  </data>\n  <data name=\"FourthReichMothership_B\" xml:space=\"preserve\">\n    <value>Fourth Reich mothership B</value>\n  </data>\n  <data name=\"Friend\" xml:space=\"preserve\">\n    <value>Friend</value>\n  </data>\n  <data name=\"FriendName\" xml:space=\"preserve\">\n    <value>Friend name</value>\n  </data>\n  <data name=\"FriendNeutralCantDie\" xml:space=\"preserve\">\n    <value>Friends and neutrals can’t die</value>\n  </data>\n  <data name=\"FriendsSectorMap\" xml:space=\"preserve\">\n    <value>Friend’s sector</value>\n  </data>\n  <data name=\"FriendsSectors\" xml:space=\"preserve\">\n    <value>Friend’s sectors</value>\n  </data>\n  <data name=\"Fullscreen\" xml:space=\"preserve\">\n    <value>Full screen</value>\n  </data>\n  <data name=\"Game\" xml:space=\"preserve\">\n    <value>Game</value>\n  </data>\n  <data name=\"GameOptions\" xml:space=\"preserve\">\n    <value>Game options</value>\n  </data>\n  <data name=\"GameOverInstructionsPart1\" xml:space=\"preserve\">\n    <value>Press Esc to exit to the main menu</value>\n  </data>\n  <data name=\"Gamepad\" xml:space=\"preserve\">\n    <value>Gamepad</value>\n  </data>\n  <data name=\"AnalogAxes\" xml:space=\"preserve\">\n    <value>Analog</value>\n  </data>\n  <data name=\"GamePlay\" xml:space=\"preserve\">\n    <value>Gameplay</value>\n  </data>\n  <data name=\"GameVolume\" xml:space=\"preserve\">\n    <value>Sound volume</value>\n  </data>\n  <data name=\"General\" xml:space=\"preserve\">\n    <value>General</value>\n  </data>\n  <data name=\"GeneralContextMenuCaption\" xml:space=\"preserve\">\n    <value>General</value>\n  </data>\n  <data name=\"Generator\" xml:space=\"preserve\">\n    <value>Generator</value>\n  </data>\n  <data name=\"GizmoSpaceEditorText\" xml:space=\"preserve\">\n    <value>Gizmo space: </value>\n  </data>\n  <data name=\"GizmoSpaceLocal\" xml:space=\"preserve\">\n    <value>Local</value>\n  </data>\n  <data name=\"GizmoSpaceWorld\" xml:space=\"preserve\">\n    <value>World</value>\n  </data>\n  <data name=\"GlobalEventFactionChangeDescription\" xml:space=\"preserve\">\n    <value>Factions have changed</value>\n  </data>\n  <data name=\"GlobalEventFactionChangeName\" xml:space=\"preserve\">\n    <value>Factions have changed</value>\n  </data>\n  <data name=\"GlobalEventFactionRelationChange_EnemyToNeutral\" xml:space=\"preserve\">\n    <value>Faction {0} signed a peace agreement with {1}.</value>\n  </data>\n  <data name=\"GlobalEventFactionRelationChange_FriendsToNeutral\" xml:space=\"preserve\">\n    <value>{0} and {1} are no longer friends.</value>\n  </data>\n  <data name=\"GlobalEventFactionRelationChange_NeutralToEnemy\" xml:space=\"preserve\">\n    <value>Faction {0} declares war to {1}.</value>\n  </data>\n  <data name=\"GlobalEventFactionRelationChange_NeutralToFriends\" xml:space=\"preserve\">\n    <value>{0} and {1} became friends.</value>\n  </data>\n  <data name=\"GlobalEvents\" xml:space=\"preserve\">\n    <value>Global Events</value>\n  </data>\n  <data name=\"GlobalEventSunWindDescription\" xml:space=\"preserve\">\n    <value>The sun has errupted, prepare for the hot surge!</value>\n  </data>\n  <data name=\"GlobalEventSunWindName\" xml:space=\"preserve\">\n    <value>Sun wind</value>\n  </data>\n  <data name=\"GlobalEventMeteorWindName\" xml:space=\"preserve\">\n    <value>Meteor wind</value>\n  </data>\n  <data name=\"GlobalEventIceStormName\" xml:space=\"preserve\">\n    <value>Ice Storm</value>\n  </data>\n  <data name=\"Gold_01\" xml:space=\"preserve\">\n    <value>Gold</value>\n  </data>\n  <data name=\"GravityBombHud\" xml:space=\"preserve\">\n    <value>Gravitation bomb</value>\n  </data>\n  <data name=\"Green\" xml:space=\"preserve\">\n    <value>Green</value>\n  </data>\n  <data name=\"GridInMeters\" xml:space=\"preserve\">\n    <value> meters</value>\n  </data>\n  <data name=\"GridScaleIndicator\" xml:space=\"preserve\">\n    <value>Grid scale indicator:   </value>\n  </data>\n  <data name=\"GridSnapEditorText\" xml:space=\"preserve\">\n    <value>Grid snap: </value>\n  </data>\n  <data name=\"HackFromHUB\" xml:space=\"preserve\">\n    <value>Hack from hub</value>\n  </data>\n  <data name=\"Hacking\" xml:space=\"preserve\">\n    <value>Hacking</value>\n  </data>\n  <data name=\"HackingLevel\" xml:space=\"preserve\">\n    <value>Hacking level</value>\n  </data>\n  <data name=\"HackingProgress\" xml:space=\"preserve\">\n    <value>Hacking in progress…</value>\n  </data>\n  <data name=\"HackingResult_CanNotBeHacked\" xml:space=\"preserve\">\n    <value>Can’t be hacked</value>\n  </data>\n  <data name=\"HackingResult_NotEnoughLevel\" xml:space=\"preserve\">\n    <value>You need a hacking tool of level {0}, but you have only {1}</value>\n  </data>\n  <data name=\"HackingTime\" xml:space=\"preserve\">\n    <value>Hacking time</value>\n  </data>\n  <data name=\"HackingTool_Level1\" xml:space=\"preserve\">\n    <value>HACKING TOOL LEVEL 1 | Hacks terminals protected by level 1</value>\n  </data>\n  <data name=\"HackingTool_Level2\" xml:space=\"preserve\">\n    <value>HACKING TOOL LEVEL 2 | Hacks terminals protected by level 2, and speeds up hacking</value>\n  </data>\n  <data name=\"HackingTool_Level3\" xml:space=\"preserve\">\n    <value>HACKING TOOL LEVEL 3 | Hacks terminals protected by level 3, and speeds up hacking</value>\n  </data>\n  <data name=\"HackingTool_Level4\" xml:space=\"preserve\">\n    <value>HACKING TOOL LEVEL 4 | Hacks terminals protected by level 4, and speeds up hacking</value>\n  </data>\n  <data name=\"HackingTool_Level5\" xml:space=\"preserve\">\n    <value>HACKING TOOL LEVEL 5 | Hacks terminals protected by level 5, and speeds up hacking</value>\n  </data>\n  <data name=\"HackSolo\" xml:space=\"preserve\">\n    <value>Hack solo</value>\n  </data>\n  <data name=\"Hangar\" xml:space=\"preserve\">\n    <value>Hangar</value>\n  </data>\n  <data name=\"HardwareCursor\" xml:space=\"preserve\">\n    <value>Hardware cursor</value>\n  </data>\n  <data name=\"Harvest\" xml:space=\"preserve\">\n    <value>Use harvesting device</value>\n  </data>\n  <data name=\"Harvester\" xml:space=\"preserve\">\n    <value>Harvester</value>\n  </data>\n  <data name=\"ToggleHeadlights\" xml:space=\"preserve\">\n    <value>Toggle headlights</value>\n  </data>\n  <data name=\"HeadlightsDistance\" xml:space=\"preserve\">\n    <value>Headlights distance</value>\n  </data>\n  <data name=\"HeadlightsRange\" xml:space=\"preserve\">\n    <value>Headlights range</value>\n  </data>\n  <data name=\"HeadlightsRangeClose\" xml:space=\"preserve\">\n    <value>Close</value>\n  </data>\n  <data name=\"HeadlightsRangeLong\" xml:space=\"preserve\">\n    <value>Long</value>\n  </data>\n  <data name=\"Health\" xml:space=\"preserve\">\n    <value>Health</value>\n  </data>\n  <data name=\"Height\" xml:space=\"preserve\">\n    <value>Height</value>\n  </data>\n  <data name=\"Helium3_01\" xml:space=\"preserve\">\n    <value>Helium 1</value>\n  </data>\n  <data name=\"Helium4_01\" xml:space=\"preserve\">\n    <value>Helium 2</value>\n  </data>\n  <data name=\"Help\" xml:space=\"preserve\">\n    <value>Help</value>\n  </data>\n  <data name=\"HelpCaption\" xml:space=\"preserve\">\n    <value>Help</value>\n  </data>\n  <data name=\"HemisphericLight\" xml:space=\"preserve\">\n    <value>HemisphericLight</value>\n  </data>\n  <data name=\"Visible\" xml:space=\"preserve\">\n    <value>Visible</value>\n  </data>\n  <data name=\"HideSnapPoints\" xml:space=\"preserve\">\n    <value>Hide snap points</value>\n  </data>\n  <data name=\"HighEnduranceArmor\" xml:space=\"preserve\">\n    <value>HIGH ENDURANCE ARMOR | Projectile/explosion damage reduction: 100% | Solar wind damage reduction: 0%</value>\n  </data>\n  <data name=\"Home\" xml:space=\"preserve\">\n    <value>Home</value>\n  </data>\n  <data name=\"HudNewMissionAvailable\" xml:space=\"preserve\">\n    <value>New missions available!</value>\n  </data>\n  <data name=\"Ice_01\" xml:space=\"preserve\">\n    <value>Ice</value>\n  </data>\n  <data name=\"IlluminatingShellHud\" xml:space=\"preserve\">\n    <value>Illuminating shell</value>\n  </data>\n  <data name=\"Indestructible\" xml:space=\"preserve\">\n    <value>Indestructible</value>\n  </data>\n  <data name=\"Indestructible_01\" xml:space=\"preserve\">\n    <value>Indestructible 1</value>\n  </data>\n  <data name=\"Indestructible_02\" xml:space=\"preserve\">\n    <value>Indestructible 2</value>\n  </data>\n  <data name=\"Indestructible_03\" xml:space=\"preserve\">\n    <value>Indestructible 3</value>\n  </data>\n  <data name=\"Indestructible_04\" xml:space=\"preserve\">\n    <value>Indestructible 4</value>\n  </data>\n  <data name=\"Indestructible_05_Craters_01\" xml:space=\"preserve\">\n    <value>Indestructible 5 Craters</value>\n  </data>\n  <data name=\"InfiniteAmmo\" xml:space=\"preserve\">\n    <value>Infinite ammo</value>\n  </data>\n  <data name=\"InfiniteFuel\" xml:space=\"preserve\">\n    <value>Infinite fuel</value>\n  </data>\n  <data name=\"InfiniteOxygen\" xml:space=\"preserve\">\n    <value>Infinite oxygen</value>\n  </data>\n  <data name=\"InfluenceSpheres\" xml:space=\"preserve\">\n    <value>Influence spheres</value>\n  </data>\n  <data name=\"InfluenceSphereContextMenuCaption\" xml:space=\"preserve\">\n    <value>Influence sphere</value>\n  </data>\n  <data name=\"Insert\" xml:space=\"preserve\">\n    <value>Insert</value>\n  </data>\n  <data name=\"InstantBuilding\" xml:space=\"preserve\">\n    <value>Instant building</value>\n  </data>\n  <data name=\"InvalidPositionCoordinates\" xml:space=\"preserve\">\n    <value>Selection already on this position, please choose a different one</value>\n  </data>\n  <data name=\"InvalidTime\" xml:space=\"preserve\">\n    <value>Please check your timezone and time. Valid timezone and time (withing tolerance) is required to connect to server.</value>\n  </data>\n  <data name=\"Inventory\" xml:space=\"preserve\">\n    <value>Inventory</value>\n  </data>\n  <data name=\"InvertMouseX\" xml:space=\"preserve\">\n    <value>Invert mouse X axis</value>\n  </data>\n  <data name=\"InvertMouseY\" xml:space=\"preserve\">\n    <value>Invert mouse Y axis</value>\n  </data>\n  <data name=\"Iron_01\" xml:space=\"preserve\">\n    <value>Iron 1</value>\n  </data>\n  <data name=\"Iron_02\" xml:space=\"preserve\">\n    <value>Iron 2</value>\n  </data>\n  <data name=\"IsHacked\" xml:space=\"preserve\">\n    <value>Is hacked</value>\n  </data>\n  <data name=\"JoinFriendGame\" xml:space=\"preserve\">\n    <value>Join friend’s game</value>\n  </data>\n  <data name=\"JournalDialogTitle\" xml:space=\"preserve\">\n    <value>Journal</value>\n  </data>\n  <data name=\"Joystick\" xml:space=\"preserve\">\n    <value>Joystick or gamepad</value>\n  </data>\n  <data name=\"JoystickButton\" xml:space=\"preserve\">\n    <value>JB</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"JoystickButtonLeft\" xml:space=\"preserve\">\n    <value>JDLeft</value>\n  </data>\n  <data name=\"JoystickButtonRight\" xml:space=\"preserve\">\n    <value>JDRight</value>\n  </data>\n  <data name=\"JoystickButtonUp\" xml:space=\"preserve\">\n    <value>JDUp</value>\n  </data>\n  <data name=\"JoystickButtonDown\" xml:space=\"preserve\">\n    <value>JDDown</value>\n  </data>\n  <data name=\"JoystickDeadzone\" xml:space=\"preserve\">\n    <value>Joystick deadzone width</value>\n  </data>\n  <data name=\"JoystickExponent\" xml:space=\"preserve\">\n    <value>Joystick gradual precision</value>\n  </data>\n  <data name=\"JoystickSensitivity\" xml:space=\"preserve\">\n    <value>Joystick sensitivity</value>\n  </data>\n  <data name=\"Keyboard\" xml:space=\"preserve\">\n    <value>Keyboard</value>\n  </data>\n  <data name=\"KillAll\" xml:space=\"preserve\">\n    <value>Kill them all</value>\n  </data>\n  <data name=\"LabelEnableObjectPivot\" xml:space=\"preserve\">\n    <value>Enable object pivot</value>\n  </data>\n  <data name=\"LabelSavePlayerShip\" xml:space=\"preserve\">\n    <value>Save player’s ship</value>\n  </data>\n  <data name=\"Language\" xml:space=\"preserve\">\n    <value>Language</value>\n  </data>\n  <data name=\"LanguageCesky\" xml:space=\"preserve\">\n    <value>Česky</value>\n  </data>\n  <data name=\"LanguageDeutsch\" xml:space=\"preserve\">\n    <value>Deutsch</value>\n  </data>\n  <data name=\"LanguageEnglish\" xml:space=\"preserve\">\n    <value>English</value>\n  </data>\n  <data name=\"LanguageEspanol\" xml:space=\"preserve\">\n    <value>Espanol</value>\n  </data>\n  <data name=\"LanguageFrance\" xml:space=\"preserve\">\n    <value>France</value>\n  </data>\n  <data name=\"LanguageItalian\" xml:space=\"preserve\">\n    <value>Italian</value>\n  </data>\n  <data name=\"LanguageRussian\" xml:space=\"preserve\">\n    <value>Russian</value>\n  </data>\n  <data name=\"LanguageSlovensky\" xml:space=\"preserve\">\n    <value>Slovensky</value>\n  </data>\n  <data name=\"Largeship\" xml:space=\"preserve\">\n    <value>Largeship</value>\n  </data>\n  <data name=\"LargeShipArdant\" xml:space=\"preserve\">\n    <value>Ardant</value>\n  </data>\n  <data name=\"LargeShipComplets\" xml:space=\"preserve\">\n    <value>Large ship Complets</value>\n  </data>\n  <data name=\"LargeShipContextMenuCaption\" xml:space=\"preserve\">\n    <value>Large ship</value>\n  </data>\n  <data name=\"LargeShipKai\" xml:space=\"preserve\">\n    <value>KAI Mothership</value>\n  </data>\n  <data name=\"LargeShipSaya\" xml:space=\"preserve\">\n    <value>SAYA Mothership</value>\n  </data>\n  <data name=\"Lava_01\" xml:space=\"preserve\">\n    <value>Lava 1</value>\n  </data>\n  <data name=\"Left\" xml:space=\"preserve\">\n    <value>Left</value>\n  </data>\n  <data name=\"LeftAlt\" xml:space=\"preserve\">\n    <value>LAlt</value>\n  </data>\n  <data name=\"LeftControl\" xml:space=\"preserve\">\n    <value>LCtrl</value>\n  </data>\n  <data name=\"LeftMouseButton\" xml:space=\"preserve\">\n    <value>LMB</value>\n  </data>\n  <data name=\"LeftShift\" xml:space=\"preserve\">\n    <value>LShift</value>\n  </data>\n  <data name=\"LeftWeapons\" xml:space=\"preserve\">\n    <value>Left wing</value>\n  </data>\n  <data name=\"LinkSnapPoints\" xml:space=\"preserve\">\n    <value>Link Snap Points</value>\n  </data>\n  <data name=\"Load\" xml:space=\"preserve\">\n    <value>Load</value>\n  </data>\n  <data name=\"LoadChapter\" xml:space=\"preserve\">\n    <value>Load chapter</value>\n  </data>\n  <data name=\"LoadCheckpoint\" xml:space=\"preserve\">\n    <value>Load checkpoint</value>\n  </data>\n  <data name=\"LoadingPleaseWait\" xml:space=\"preserve\">\n    <value>LOADING … PLEASE WAIT</value>\n  </data>\n  <data name=\"LoadSector\" xml:space=\"preserve\">\n    <value>Load sector</value>\n  </data>\n  <data name=\"LoadSectorIdentifiersPleaseWait\" xml:space=\"preserve\">\n    <value>Loading available sectors… please wait</value>\n  </data>\n  <data name=\"LoadSectorTooltip\" xml:space=\"preserve\">\n    <value>Load sector from server</value>\n  </data>\n  <data name=\"LogGarbageCollection\" xml:space=\"preserve\">\n    <value>Log garbage collection</value>\n  </data>\n  <data name=\"LoggedPlayer\" xml:space=\"preserve\">\n    <value>You are logged in as:</value>\n  </data>\n  <data name=\"LoggingInDrawUpdate\" xml:space=\"preserve\">\n    <value>Logging in draw/update</value>\n  </data>\n  <data name=\"Login\" xml:space=\"preserve\">\n    <value>Login</value>\n  </data>\n  <data name=\"LoginInProgressPleaseWait\" xml:space=\"preserve\">\n    <value>Login in progress… please wait.</value>\n  </data>\n  <data name=\"Logout\" xml:space=\"preserve\">\n    <value>Logout</value>\n  </data>\n  <data name=\"LogoutInProgressPleaseWait\" xml:space=\"preserve\">\n    <value>Logout in progress… please wait.</value>\n  </data>\n  <data name=\"Magnesium_01\" xml:space=\"preserve\">\n    <value>Magnesium</value>\n  </data>\n  <data name=\"Map\" xml:space=\"preserve\">\n    <value>Map</value>\n  </data>\n  <data name=\"MaxHealth\" xml:space=\"preserve\">\n    <value>Max health</value>\n  </data>\n  <data name=\"MaxLargeShipsCountReached\" xml:space=\"preserve\">\n    <value>Maximum allowed number of large ships has been reached</value>\n  </data>\n  <data name=\"MaxObjectsReached\" xml:space=\"preserve\">\n    <value>Max number of objects reached</value>\n  </data>\n  <data name=\"MaxVoxelMapsLimitReached\" xml:space=\"preserve\">\n    <value>Maximum asteroid count reached</value>\n  </data>\n  <data name=\"MessageAreYouSureYouWantStartNewStory\" xml:space=\"preserve\">\n    <value>Are you sure you want to discard all your current progress?\nStarting a New story deletes all saved checkpoints.</value>\n  </data>\n  <data name=\"MessageBoxCaptionError\" xml:space=\"preserve\">\n    <value>ERROR</value>\n  </data>\n  <data name=\"MessageBoxCaptionFeatureDisabled\" xml:space=\"preserve\">\n    <value>FEATURE DISABLED</value>\n  </data>\n  <data name=\"MessageBoxCaptionPleaseConfirm\" xml:space=\"preserve\">\n    <value>PLEASE CONFIRM</value>\n  </data>\n  <data name=\"MessageBoxExitQuestion\" xml:space=\"preserve\">\n    <value>EXIT</value>\n  </data>\n  <data name=\"MessageBoxLogoutQuestion\" xml:space=\"preserve\">\n    <value>LOGOUT?</value>\n  </data>\n  <data name=\"MessageEntityNameIsAlreadyExists\" xml:space=\"preserve\">\n    <value>Entity name already exists!</value>\n  </data>\n  <data name=\"MessageHealthCantBeLessOrEqualZero\" xml:space=\"preserve\">\n    <value>Health can’t be less than or equal to zero!</value>\n  </data>\n  <data name=\"MessageMaxHealthCantBeLessOrEqualZero\" xml:space=\"preserve\">\n    <value>Max health can’t be less than or equal to zero!</value>\n  </data>\n  <data name=\"MessageMmoWillBeAddedLater\" xml:space=\"preserve\">\n    <value>Please be aware that this is just a placeholder. The MMO mode will be added in the future.</value>\n  </data>\n  <data name=\"MessagePleaseVisitOurWebSiteToBuyGameNow\" xml:space=\"preserve\">\n    <value>Please, visit our web site “{0}” to buy the game now.</value>\n  </data>\n  <data name=\"MessagePressToHide\" xml:space=\"preserve\">\n    <value>(Press {0} to hide)</value>\n  </data>\n  <data name=\"MessageYouHaveDemoAccess\" xml:space=\"preserve\">\n    <value>Demo mode – saving is disabled</value>\n  </data>\n  <data name=\"MessageYouMustSetHackingTime\" xml:space=\"preserve\">\n    <value>You must set the hacking time!</value>\n  </data>\n  <data name=\"MessageYouMustSetHealth\" xml:space=\"preserve\">\n    <value>You must set the health!</value>\n  </data>\n  <data name=\"MessageYouMustSetMaxHealth\" xml:space=\"preserve\">\n    <value>You must set max health!</value>\n  </data>\n  <data name=\"MetersShort\" xml:space=\"preserve\">\n    <value>m</value>\n  </data>\n  <data name=\"MiddleMouseButton\" xml:space=\"preserve\">\n    <value>MMB</value>\n  </data>\n  <data name=\"MineBasicHud\" xml:space=\"preserve\">\n    <value>Mine</value>\n  </data>\n  <data name=\"MineBioChemHud\" xml:space=\"preserve\">\n    <value>BioChem mine</value>\n  </data>\n  <data name=\"MineSmartHud\" xml:space=\"preserve\">\n    <value>Smart mine</value>\n  </data>\n  <data name=\"MissileCamera\" xml:space=\"preserve\">\n    <value>Missile cam</value>\n  </data>\n  <data name=\"Mission\" xml:space=\"preserve\">\n    <value>Mission – {0}</value>\n  </data>\n  <data name=\"MissionDialog\" xml:space=\"preserve\">\n    <value>Mission dialog</value>\n  </data>\n  <data name=\"MixedContextMenuCaption\" xml:space=\"preserve\">\n    <value>Modify selection</value>\n  </data>\n  <data name=\"MmoSectors\" xml:space=\"preserve\">\n    <value>MMO sectors</value>\n  </data>\n  <data name=\"ModifyAsteroidContextMenuCaption\" xml:space=\"preserve\">\n    <value>Modify asteroid</value>\n  </data>\n  <data name=\"Mouse\" xml:space=\"preserve\">\n    <value>Mouse</value>\n  </data>\n  <data name=\"MouseSensitivity\" xml:space=\"preserve\">\n    <value>Mouse sensitivity</value>\n  </data>\n  <data name=\"MouseXButton1\" xml:space=\"preserve\">\n    <value>MXB1</value>\n  </data>\n  <data name=\"MouseXButton2\" xml:space=\"preserve\">\n    <value>MXB2</value>\n  </data>\n  <data name=\"MovementSlowdown\" xml:space=\"preserve\">\n    <value>Inertial dampeners</value>\n  </data>\n  <data name=\"Mship\" xml:space=\"preserve\">\n    <value>Mship</value>\n  </data>\n  <data name=\"Mship_body\" xml:space=\"preserve\">\n    <value>Mship body</value>\n  </data>\n  <data name=\"Mship_engine\" xml:space=\"preserve\">\n    <value>Mship engine</value>\n  </data>\n  <data name=\"Mship_shield_back_large_left\" xml:space=\"preserve\">\n    <value>Mship shield back large left</value>\n  </data>\n  <data name=\"Mship_shield_back_large_right\" xml:space=\"preserve\">\n    <value>Mship shield back large right</value>\n  </data>\n  <data name=\"Mship_shield_back_small_left\" xml:space=\"preserve\">\n    <value>Mship shield back small left</value>\n  </data>\n  <data name=\"Mship_shield_back_small_right\" xml:space=\"preserve\">\n    <value>Mship shield back small right</value>\n  </data>\n  <data name=\"Mship_shield_front_large_left\" xml:space=\"preserve\">\n    <value>Mship shield front large left</value>\n  </data>\n  <data name=\"Mship_shield_front_large_right\" xml:space=\"preserve\">\n    <value>Mship shield front large right</value>\n  </data>\n  <data name=\"Mship_shield_front_small02_left\" xml:space=\"preserve\">\n    <value>Mship shield front small02 left</value>\n  </data>\n  <data name=\"Mship_shield_front_small02_right\" xml:space=\"preserve\">\n    <value>Mship shield front small02 right</value>\n  </data>\n  <data name=\"Mship_shield_front_small_left\" xml:space=\"preserve\">\n    <value>Mship shield front small left</value>\n  </data>\n  <data name=\"Mship_shield_front_small_right\" xml:space=\"preserve\">\n    <value>Mship shield front small right</value>\n  </data>\n  <data name=\"MysteriousCubes\" xml:space=\"preserve\">\n    <value>Mysterious cubes</value>\n  </data>\n  <data name=\"MysteriousCube_01\" xml:space=\"preserve\">\n    <value>MysteriousCube 01</value>\n  </data>\n  <data name=\"MysteriousCube_02\" xml:space=\"preserve\">\n    <value>MysteriousCube 02</value>\n  </data>\n  <data name=\"MysteriousCube_03\" xml:space=\"preserve\">\n    <value>MysteriousCube 03</value>\n  </data>\n  <data name=\"Name\" xml:space=\"preserve\">\n    <value>Name</value>\n  </data>\n  <data name=\"Navigation\" xml:space=\"preserve\">\n    <value>Navigation</value>\n  </data>\n  <data name=\"Neutral\" xml:space=\"preserve\">\n    <value>Neutral</value>\n  </data>\n  <data name=\"NewGame\" xml:space=\"preserve\">\n    <value>New game</value>\n  </data>\n  <data name=\"NextCamera\" xml:space=\"preserve\">\n    <value>Next secondary cam</value>\n  </data>\n  <data name=\"Nickel_01\" xml:space=\"preserve\">\n    <value>Nickel</value>\n  </data>\n  <data name=\"No\" xml:space=\"preserve\">\n    <value>No</value>\n  </data>\n  <data name=\"None\" xml:space=\"preserve\">\n    <value>None</value>\n  </data>\n  <data name=\"NoRecords\" xml:space=\"preserve\">\n    <value>No records</value>\n  </data>\n  <data name=\"Normal\" xml:space=\"preserve\">\n    <value>Normal</value>\n  </data>\n  <data name=\"NoSectorsAvailable\" xml:space=\"preserve\">\n    <value>No sectors available</value>\n  </data>\n  <data name=\"NotAccessRightsToTestBuild\" xml:space=\"preserve\">\n    <value>You do not have access rights to the test build</value>\n  </data>\n  <data name=\"NotAvailableInDemoMode\" xml:space=\"preserve\">\n    <value>This feature is not available in demo mode</value>\n  </data>\n  <data name=\"Notifications\" xml:space=\"preserve\">\n    <value>Notifications / warnings</value>\n  </data>\n  <data name=\"NotificationArmorCritical\" xml:space=\"preserve\">\n    <value>Armor critical</value>\n  </data>\n  <data name=\"NotificationArmorLow\" xml:space=\"preserve\">\n    <value>Armor low</value>\n  </data>\n  <data name=\"NotificationConfirmation\" xml:space=\"preserve\">\n    <value>Confirm notification</value>\n  </data>\n  <data name=\"NotificationDamageAlert\" xml:space=\"preserve\">\n    <value>Ship damage alert</value>\n  </data>\n  <data name=\"NotificationDamageCritical\" xml:space=\"preserve\">\n    <value>Ship damage critical</value>\n  </data>\n  <data name=\"NotificationEditorSelectAndRotate\" xml:space=\"preserve\">\n    <value>    Use the toolbar to manipulate objects (add, delete, select, move, …).\n    Press {0} to select object\n    Press {1} to rotate camera or snap two snap points together</value>\n  </data>\n  <data name=\"NotificationFuelCritical\" xml:space=\"preserve\">\n    <value>Fuel critical</value>\n  </data>\n  <data name=\"NotificationFuelLow\" xml:space=\"preserve\">\n    <value>Fuel low</value>\n  </data>\n  <data name=\"NotificationHealthCritical\" xml:space=\"preserve\">\n    <value>Health critical</value>\n  </data>\n  <data name=\"NotificationHealthLow\" xml:space=\"preserve\">\n    <value>Health low</value>\n  </data>\n  <data name=\"NotificationMissionAvailableInRange\" xml:space=\"preserve\">\n    <value>Press {0} to show mission info</value>\n  </data>\n  <data name=\"NotificationObjectiveComplete\" xml:space=\"preserve\">\n    <value>Objective complete!</value>\n  </data>\n  <data name=\"NotificationOxygenCritical\" xml:space=\"preserve\">\n    <value>Oxygen critical</value>\n  </data>\n  <data name=\"NotificationOxygenLow\" xml:space=\"preserve\">\n    <value>Oxygen low</value>\n  </data>\n  <data name=\"NotificationYouCanBuild\" xml:space=\"preserve\">\n    <value>Press Num 0 to build</value>\n  </data>\n  <data name=\"NotificationYouCanExamine\" xml:space=\"preserve\">\n    <value>Press {0} to examine {2}, press {1} to take all</value>\n  </data>\n  <data name=\"NotificationYouCanHack\" xml:space=\"preserve\">\n    <value>Hold {0} to hack {1}</value>\n  </data>\n  <data name=\"NotificationYouCanLoot\" xml:space=\"preserve\">\n    <value>Press {0} to loot {1}</value>\n  </data>\n  <data name=\"NotificationYouCanTradeWith\" xml:space=\"preserve\">\n    <value>Press {0} to trade with {1}</value>\n  </data>\n  <data name=\"NotificationYouCanTravel\" xml:space=\"preserve\">\n    <value>Press {0} to travel</value>\n  </data>\n  <data name=\"NotificationYouCanUse\" xml:space=\"preserve\">\n    <value>Press {0} to use {1}</value>\n  </data>\n  <data name=\"NotificationYouHaveNoFoundationFactory\" xml:space=\"preserve\">\n    <value>You have no foundation factory in your inventory!</value>\n  </data>\n  <data name=\"NotificationYouHaveToBeNearMothership\" xml:space=\"preserve\">\n    <value>You need to be near the mothership to enter solar map!</value>\n  </data>\n  <data name=\"NotLoggedIn\" xml:space=\"preserve\">\n    <value>You are not logged in</value>\n  </data>\n  <data name=\"NumberOfAsteroidsInSector\" xml:space=\"preserve\">\n    <value>Number of asteroids in sector:      </value>\n  </data>\n  <data name=\"NumberOfObjectsInSector\" xml:space=\"preserve\">\n    <value>Number of objects in sector:     </value>\n  </data>\n  <data name=\"NumberOfVoxelShapesInSector\" xml:space=\"preserve\">\n    <value>Number of voxel shapes in sector:      </value>\n  </data>\n  <data name=\"NumPad0\" xml:space=\"preserve\">\n    <value>Num 0</value>\n  </data>\n  <data name=\"NumPad1\" xml:space=\"preserve\">\n    <value>Num 1</value>\n  </data>\n  <data name=\"NumPad2\" xml:space=\"preserve\">\n    <value>Num 2</value>\n  </data>\n  <data name=\"NumPad3\" xml:space=\"preserve\">\n    <value>Num 3</value>\n  </data>\n  <data name=\"NumPad4\" xml:space=\"preserve\">\n    <value>Num 4</value>\n  </data>\n  <data name=\"NumPad5\" xml:space=\"preserve\">\n    <value>Num 5</value>\n  </data>\n  <data name=\"NumPad6\" xml:space=\"preserve\">\n    <value>Num 6</value>\n  </data>\n  <data name=\"NumPad7\" xml:space=\"preserve\">\n    <value>Num 7</value>\n  </data>\n  <data name=\"NumPad8\" xml:space=\"preserve\">\n    <value>Num 8</value>\n  </data>\n  <data name=\"NumPad9\" xml:space=\"preserve\">\n    <value>Num 9</value>\n  </data>\n  <data name=\"ObjectInCollisionWith\" xml:space=\"preserve\">\n    <value>Object in collision with</value>\n  </data>\n  <data name=\"Objectives\" xml:space=\"preserve\">\n    <value>Objectives</value>\n  </data>\n  <data name=\"ObjectOutOfBounds\" xml:space=\"preserve\">\n    <value>Object cannot be created at this position</value>\n  </data>\n  <data name=\"ObjectsInContainer\" xml:space=\"preserve\">\n    <value>Objects in container</value>\n  </data>\n  <data name=\"Off\" xml:space=\"preserve\">\n    <value>Off</value>\n  </data>\n  <data name=\"Ok\" xml:space=\"preserve\">\n    <value>OK</value>\n  </data>\n  <data name=\"On\" xml:space=\"preserve\">\n    <value>On</value>\n  </data>\n  <data name=\"OneWay\" xml:space=\"preserve\">\n    <value>One way</value>\n  </data>\n  <data name=\"Opacity\" xml:space=\"preserve\">\n    <value>Opacity</value>\n  </data>\n  <data name=\"Options\" xml:space=\"preserve\">\n    <value>Options</value>\n  </data>\n  <data name=\"OreCobalt\" xml:space=\"preserve\">\n    <value>COBALT | Harvested ore</value>\n  </data>\n  <data name=\"OreConcrete\" xml:space=\"preserve\">\n    <value>CONCRETE | Harvested ore</value>\n  </data>\n  <data name=\"OreGold\" xml:space=\"preserve\">\n    <value>GOLD | Harvested ore</value>\n  </data>\n  <data name=\"OreHelium\" xml:space=\"preserve\">\n    <value>HELIUM | Harvested ore, refills fuel for chemical engine</value>\n  </data>\n  <data name=\"OreIce\" xml:space=\"preserve\">\n    <value>ICE | Harvested ore, refills fuel for power cell engine</value>\n  </data>\n  <data name=\"OreIndestructible\" xml:space=\"preserve\">\n    <value>Indestructible</value>\n  </data>\n  <data name=\"OreIron\" xml:space=\"preserve\">\n    <value>IRON | Harvested ore</value>\n  </data>\n  <data name=\"OreLava\" xml:space=\"preserve\">\n    <value>LAVA | Harvested ore</value>\n  </data>\n  <data name=\"OreMagnesium\" xml:space=\"preserve\">\n    <value>MAGNESIUM | Harvested ore</value>\n  </data>\n  <data name=\"OreNickel\" xml:space=\"preserve\">\n    <value>NICKEL | Harvested ore</value>\n  </data>\n  <data name=\"OreOrganic\" xml:space=\"preserve\">\n    <value>ORGANIC | Harvested ore</value>\n  </data>\n  <data name=\"OrePlatinum\" xml:space=\"preserve\">\n    <value>PLATINUM | Harvested ore</value>\n  </data>\n  <data name=\"OreSandstone\" xml:space=\"preserve\">\n    <value>SANDSTONE | Harvested ore</value>\n  </data>\n  <data name=\"OreSilicon\" xml:space=\"preserve\">\n    <value>SILICON | Harvested ore</value>\n  </data>\n  <data name=\"OreSilver\" xml:space=\"preserve\">\n    <value>SILVER | Harvested ore</value>\n  </data>\n  <data name=\"OreSnow\" xml:space=\"preserve\">\n    <value>SNOW | Harvested ore</value>\n  </data>\n  <data name=\"OreStone\" xml:space=\"preserve\">\n    <value>STONE | Harvested ore</value>\n  </data>\n  <data name=\"OreTreasure\" xml:space=\"preserve\">\n    <value>TREASURE | Harvested ore</value>\n  </data>\n  <data name=\"OreUranite\" xml:space=\"preserve\">\n    <value>PLUTONIUM | Harvested ore, refills fuel for nuclear engine</value>\n  </data>\n  <data name=\"OreXenon\" xml:space=\"preserve\">\n    <value>Xenon</value>\n  </data>\n  <data name=\"Organic_01\" xml:space=\"preserve\">\n    <value>Organic</value>\n  </data>\n  <data name=\"OtherSideInventory\" xml:space=\"preserve\">\n    <value>’s inventory</value>\n  </data>\n  <data name=\"p110a01_solid_beam_straight_10m\" xml:space=\"preserve\">\n    <value>Solid Beam Straight 10 meters</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p110a02_solid_beam_straight_20m\" xml:space=\"preserve\">\n    <value>Solid Beam Straight 20 meters</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p110a03_solid_beam_straight_40m_with_hole\" xml:space=\"preserve\">\n    <value>Solid Beam Straight 40 meters</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p110a04_solid_beam_straight_40m_lattice\" xml:space=\"preserve\">\n    <value>Solid Beam Straight 40 meters lattice</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p110a05_solid_beam_straight_80m\" xml:space=\"preserve\">\n    <value>Solid Beam Straight 80 meters</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p110A07BasicTJunctionWeak\" xml:space=\"preserve\">\n    <value>Basic T junction weak</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p110A08BasicTJunctionRotated\" xml:space=\"preserve\">\n    <value>Basic T junction rotated</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p110A10BasicShortUnitLattice\" xml:space=\"preserve\">\n    <value>Basic short unit lattice</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p110A11BasicShortWithoutHole\" xml:space=\"preserve\">\n    <value>Basic short without hole</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p110a11_solid_beam_junction_x_strong\" xml:space=\"preserve\">\n    <value>Solid Beam X-Junction Strong</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p110A12BasicJunctionStrong\" xml:space=\"preserve\">\n    <value>Basic junction strong</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p110a12_solid_beam_junction_x_weak\" xml:space=\"preserve\">\n    <value>Solid Beam X-Junction Weak</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p110A13BasicJunctionWeak\" xml:space=\"preserve\">\n    <value>Basic junction weak</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p110a13_solid_beam_junction_x_rotated\" xml:space=\"preserve\">\n    <value>Solid Beam X-Junction Rotated</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p110A14BasicJunctionRotated\" xml:space=\"preserve\">\n    <value>Basic junction rotated</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p110A15BasicJointLongitudinal\" xml:space=\"preserve\">\n    <value>Basic joint longitudinal</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p110a21_solid_beam_junction_t_strong\" xml:space=\"preserve\">\n    <value>Solid Beam T-Junction Strong</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p110a22_solid_beam_junction_t_weak\" xml:space=\"preserve\">\n    <value>Solid Beam T-Junction Weak</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p110a23_solid_beam_junction_t_rotated\" xml:space=\"preserve\">\n    <value>Solid Beam T-Junction Rotated</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p110a31_solid_beam_joint_horizontal\" xml:space=\"preserve\">\n    <value>Solid Beam Joint Horizontal</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p110a32_solid_beam_joint_vertical\" xml:space=\"preserve\">\n    <value>Solid Beam Joint Vertical</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p110a33_solid_beam_joint_longitudinal\" xml:space=\"preserve\">\n    <value>Solid Beam Joint Longitudinal</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p110a41_solid_beam_superjoint\" xml:space=\"preserve\">\n    <value>Solid Beam Special Joint</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p110B01FrameStraightUnit\" xml:space=\"preserve\">\n    <value>Frame straight unit</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p110b01_lattice_beam_straight_10m\" xml:space=\"preserve\">\n    <value>Lattice Beam Straight 10 meters</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p110B02FrameJoint\" xml:space=\"preserve\">\n    <value>Frame joint</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p110b02_lattice_beam_straight_30m\" xml:space=\"preserve\">\n    <value>Lattice Beam Straight 30 meters</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p110B03FrameTriangleCorner\" xml:space=\"preserve\">\n    <value>Frame triangle corner</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p110b03_lattice_beam_straight_60m\" xml:space=\"preserve\">\n    <value>Lattice Beam Straight 60 meters</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p110B04FrameCorner\" xml:space=\"preserve\">\n    <value>Frame corner</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p110b04_lattice_beam_straight_60m_with_panels\" xml:space=\"preserve\">\n    <value>Lattice Beam Straight 60 meters with panels</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p110B05FrameSmallUnit\" xml:space=\"preserve\">\n    <value>Frame small unit</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p110b21_lattice_beam_junction_t_strong\" xml:space=\"preserve\">\n    <value>Lattice Beam T-Junction Strong</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p110b22_lattice_beam_junction_t_weak\" xml:space=\"preserve\">\n    <value>Lattice Beam T-Junction Weak</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p110b31_lattice_beam_joint_horizontal\" xml:space=\"preserve\">\n    <value>Lattice Beam Joint Horizontal</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p110b32_lattice_beam_joint_vertical\" xml:space=\"preserve\">\n    <value>Lattice Beam Joint Vertical</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p110C01Cage\" xml:space=\"preserve\">\n    <value>Cage</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p110C02CageHalf\" xml:space=\"preserve\">\n    <value>Cage half</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p110C03CageGrates\" xml:space=\"preserve\">\n    <value>Cage grates</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p110C04CageGratesTinyUnit\" xml:space=\"preserve\">\n    <value>Cage grates tiny unit</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p110C05CagePillar\" xml:space=\"preserve\">\n    <value>Cage pillar</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p110C06CageCorner\" xml:space=\"preserve\">\n    <value>Cage corner</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p110C08CageSolo\" xml:space=\"preserve\">\n    <value>Cage solo</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p110C09HexTunnelEntranceCageToHexTunnelAdapter\" xml:space=\"preserve\">\n    <value>Hextunnel entrance cage to hextunnel adapter</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p110D01Cage2\" xml:space=\"preserve\">\n    <value>Cage 2</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p120a01_strong_lattice_straight_10m\" xml:space=\"preserve\">\n    <value>Strong Lattice Beam Straight 10 meters</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p120a02_strong_lattice_straight_60m\" xml:space=\"preserve\">\n    <value>Strong Lattice Beam Straight 60 meters</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p120a03_strong_lattice_straight_120m\" xml:space=\"preserve\">\n    <value>Strong Lattice Beam Straight 120 meters</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p120a21_strong_lattice_junction_t_strong\" xml:space=\"preserve\">\n    <value>Strong Lattice Beam Straight T-Junction Strong</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p120a22_strong_lattice_junction_t_weak\" xml:space=\"preserve\">\n    <value>Strong Lattice Beam T-Junction Weak</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p120a23_strong_lattice_junction_t_rotated\" xml:space=\"preserve\">\n    <value>Strong Lattice Beam T-Junction Rotated</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p120a51_strong_to_weak_lattice_2to1\" xml:space=\"preserve\">\n    <value>Strong to Weak Lattice (2 to 1)</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p120a52_strong_to_weak_lattice_1to2\" xml:space=\"preserve\">\n    <value>Strong to Weak Lattice (1 to 2)</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p120a61_weak_lattice_junction_t_rotated\" xml:space=\"preserve\">\n    <value>Weak Lattice Junction T-Rotated</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p120B01StrongLatticeUnit\" xml:space=\"preserve\">\n    <value>Strong lattice unit</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p120b01_b_straight_10m\" xml:space=\"preserve\">\n    <value>Medium Beam 01 10 meters</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p120B02StrongLatticeTinyUnit\" xml:space=\"preserve\">\n    <value>Strong lattice tiny unit</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p120b02_b_straight_40m\" xml:space=\"preserve\">\n    <value>Medium Beam 01 40 meters</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p120B03StrongLatticeLongUnit\" xml:space=\"preserve\">\n    <value>Strong lattice long unit</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p120B04StrongLatticeTJunctionStrong\" xml:space=\"preserve\">\n    <value>Strong lattice T junction strong</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p120B05StrongLatticeTJunctionWeak\" xml:space=\"preserve\">\n    <value>Strong lattice T junction weak</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p120B06StrongLatticeTJunctionRotated\" xml:space=\"preserve\">\n    <value>Strong lattice T junction rotated</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p120B07SingleStrongLatticeTJunctionRotated2To1\" xml:space=\"preserve\">\n    <value>Single strong lattice T junction rotated2To1</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p120B08SingleStrongLatticeTJunctionRotated1To2\" xml:space=\"preserve\">\n    <value>Single strong lattice T junction rotated1To2</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p120B09SingleWeakLatticeTJunctionRotated\" xml:space=\"preserve\">\n    <value>Single weak lattice T junction rotated</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p120c01_c_straight_10m\" xml:space=\"preserve\">\n    <value>Medium Beam 02 10 meters</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p120c02_c_straight_40m\" xml:space=\"preserve\">\n    <value>Medium Beam 02 40 meters</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p120d01_d_straight_10m\" xml:space=\"preserve\">\n    <value>Medium Beam 03 10 meters</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p120d02_d_straight_40m\" xml:space=\"preserve\">\n    <value>Medium Beam 03 40 meters</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p120h01_h_straight_30m\" xml:space=\"preserve\">\n    <value>Small Beam 08 30m</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p120i01_i_straight_30m\" xml:space=\"preserve\">\n    <value>Small Beam 09 30m</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p120j01_j_straight_30m\" xml:space=\"preserve\">\n    <value>Small Beam 10 30m</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p130a01_a_straight_10m\" xml:space=\"preserve\">\n    <value>Small Cross Beam 01 10m</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p130A02HexTunnelBeamAssembled\" xml:space=\"preserve\">\n    <value>Hextunnel beam assembled</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p130a02_a_straight_30m\" xml:space=\"preserve\">\n    <value>Small Cross Beam 01 30m</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p130A03HexTunnelBeamAssembledLong\" xml:space=\"preserve\">\n    <value>Hextunnel beam assembled long</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p130b01_b_straight_10m\" xml:space=\"preserve\">\n    <value>Small Cross Beam 02 10m</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p130b02_b_straight_30m\" xml:space=\"preserve\">\n    <value>Small Cross Beam 02 30m</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p130c01_c_straight_10m\" xml:space=\"preserve\">\n    <value>Small Cross Beam 03 10m</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p130c02_c_straight_30m\" xml:space=\"preserve\">\n    <value>Small Cross Beam 03 30m</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p130d01_d_straight_10m\" xml:space=\"preserve\">\n    <value>Small Cross Beam 04 10m</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p130d02_d_straight_30m\" xml:space=\"preserve\">\n    <value>Small Cross Beam 04 30m</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p130e01_e_straight_10m\" xml:space=\"preserve\">\n    <value>Small Cross Beam 05 10m</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p130e02_e_straight_30m\" xml:space=\"preserve\">\n    <value>Small Cross Beam 05 30m</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p130h02_h_straight_10m\" xml:space=\"preserve\">\n    <value>Small Beam 08 10 meters</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p130i02_i_straight_10m\" xml:space=\"preserve\">\n    <value>Small Beam 09 10 meters</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p130j02_j_straight_10m\" xml:space=\"preserve\">\n    <value>Small Beam 10 10 meters</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p141a01_thick_frame_straight_10m\" xml:space=\"preserve\">\n    <value>Outer Frame 01 Straight 10 meters</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p141a02_thick_frame_straight_60m\" xml:space=\"preserve\">\n    <value>Outer Frame 01 Straight 60 meters</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p141a11_thick_frame_edge\" xml:space=\"preserve\">\n    <value>Outer Frame 01 Edge</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p141a12_thick_frame_corner\" xml:space=\"preserve\">\n    <value>Outer Frame 01 Corner</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p141a31_thick_frame_joint\" xml:space=\"preserve\">\n    <value>Outer Frame 01 Joint</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p141b01_thick_frame_straight_10m\" xml:space=\"preserve\">\n    <value>Outer Frame 02 Straight 10 meters</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p141b02_thick_frame_straight_60m\" xml:space=\"preserve\">\n    <value>Outer Frame 02 Straight 60 meters</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p141b11_thick_frame_edge\" xml:space=\"preserve\">\n    <value>Outer Frame 02 Edge</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p141b12_thick_frame_corner\" xml:space=\"preserve\">\n    <value>Outer Frame 02 Corner</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p141b31_thick_frame_joint\" xml:space=\"preserve\">\n    <value>Outer frame 02 Joint</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p142a01_cage_empty\" xml:space=\"preserve\">\n    <value>Inner Frame 01 Edge</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p142a02_cage_halfcut\" xml:space=\"preserve\">\n    <value>Inner Frame 01 Half</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p142a03_cage_with_corners\" xml:space=\"preserve\">\n    <value>Inner Frame 01 with corner struts</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p142a11_cage_pillar\" xml:space=\"preserve\">\n    <value>Inner Frame 01 Strut</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p142a12_cage_edge\" xml:space=\"preserve\">\n    <value>Inner Frame 01 Edge</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p142b01_cage_empty\" xml:space=\"preserve\">\n    <value>Inner Frame 02</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p142b02_cage_halfcut\" xml:space=\"preserve\">\n    <value>Inner Frame 02 Half</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p142b03_cage_with_corners\" xml:space=\"preserve\">\n    <value>Inner Frame 02 with corner struts</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p142b11_cage_pillar\" xml:space=\"preserve\">\n    <value>Inner Frame 02 Strut</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p142b12_cage_edge\" xml:space=\"preserve\">\n    <value>Inner Frame 02 Edge</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p211a01_panel_120mx60m\" xml:space=\"preserve\">\n    <value>Panel 01 120x60 meters</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p211a02_panel_60mx60m\" xml:space=\"preserve\">\n    <value>Panel 01 60x60 meters</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p211a03_panel_60mx30m\" xml:space=\"preserve\">\n    <value>Panel 01 60x30 meters</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p211b01_panel_120mx60m\" xml:space=\"preserve\">\n    <value>Panel 02 120x60 meters</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p211b02_panel_60mx60m\" xml:space=\"preserve\">\n    <value>Panel 02 60x60 meters</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p211b03_panel_60mx30m\" xml:space=\"preserve\">\n    <value>Panel 02 60x30 meters</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p211c01_panel_120mx60m\" xml:space=\"preserve\">\n    <value>Panel 03 120x60 meters</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p211c02_panel_60mx60m\" xml:space=\"preserve\">\n    <value>Panel 03 60x60 meters</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p211c03_panel_60mx30m\" xml:space=\"preserve\">\n    <value>Panel 03 60x30 meters</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p211d01_panel_120mx60m\" xml:space=\"preserve\">\n    <value>Panel 04 120x60 meters</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p211d02_panel_60mx60m\" xml:space=\"preserve\">\n    <value>Panel 04 60x60 meters</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p211d03_panel_60mx30m\" xml:space=\"preserve\">\n    <value>Panel 04 60x30 meters</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p211e01_panel_120mx60m\" xml:space=\"preserve\">\n    <value>Panel 05 120x60 meters</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p211e02_panel_60mx60m\" xml:space=\"preserve\">\n    <value>Panel 05 60x60 meters</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p211e03_panel_60mx30m\" xml:space=\"preserve\">\n    <value>Panel 05 60x30 meters</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p211f01_panel_120mx60m\" xml:space=\"preserve\">\n    <value>Panel 06 120x60 meters</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p211f02_panel_60mx60m\" xml:space=\"preserve\">\n    <value>Panel 06 60x60 meters</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p211f03_panel_60mx30m\" xml:space=\"preserve\">\n    <value>Panel 06 60x30 meters</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p211g01_panel_120mx60m\" xml:space=\"preserve\">\n    <value>Panel 07 120x60 meters</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p211g02_panel_60mx60m\" xml:space=\"preserve\">\n    <value>Panel 07 60x60 meters</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p211g03_panel_60mx30m\" xml:space=\"preserve\">\n    <value>Panel 07 60x30 meters</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p211h01_panel_535mx130m\" xml:space=\"preserve\">\n    <value>p211h01_panel_535mx130m</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p212a01_panel_large\" xml:space=\"preserve\">\n    <value>p212a01_panel_large</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p212a01_panel_medium\" xml:space=\"preserve\">\n    <value>p212a01_panel_medium</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p212a01_panel_small\" xml:space=\"preserve\">\n    <value>p212a01_panel_small</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p212b02_panel_large\" xml:space=\"preserve\">\n    <value>p212b02_panel_large</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p212b02_panel_medium\" xml:space=\"preserve\">\n    <value>p212b02_panel_medium</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p212b02_panel_small\" xml:space=\"preserve\">\n    <value>p212b02_panel_small</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p212c03_panel_large\" xml:space=\"preserve\">\n    <value>p212c03_panel_large</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p212c03_panel_medium\" xml:space=\"preserve\">\n    <value>p212c03_panel_medium</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p212c03_panel_small\" xml:space=\"preserve\">\n    <value>p212c03_panel_small</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p212d04_panel_large\" xml:space=\"preserve\">\n    <value>p212d04_panel_large</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p212d04_panel_medium\" xml:space=\"preserve\">\n    <value>p212d04_panel_medium</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p212d04_panel_small\" xml:space=\"preserve\">\n    <value>p212d04_panel_small</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p212e05_panel_large\" xml:space=\"preserve\">\n    <value>p212e05_panel_large</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p212e05_panel_medium\" xml:space=\"preserve\">\n    <value>p212e05_panel_medium</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p212e05_panel_small\" xml:space=\"preserve\">\n    <value>p212e05_panel_small</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p212f01_panel_large\" xml:space=\"preserve\">\n    <value>p212f01_panel_large</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p220A01PanelDoorlike\" xml:space=\"preserve\">\n    <value>Panel doorlike</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p220A02PanelMovietape\" xml:space=\"preserve\">\n    <value>Panel movietape</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p221a01_chamber_v1\" xml:space=\"preserve\">\n    <value>Chamber Cyllinder</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p221a02_chamber_v2\" xml:space=\"preserve\">\n    <value>Chamber Cylinder 2</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p221b01_chamber_v1\" xml:space=\"preserve\">\n    <value>chamber T</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p221b02_chamber_v2\" xml:space=\"preserve\">\n    <value>Chamber T 2</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p221c01_chamber_v1\" xml:space=\"preserve\">\n    <value>Chamber Arena</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p221c02_chamber_v2\" xml:space=\"preserve\">\n    <value>Chamber Arena 2</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p221d01_chamber_v1\" xml:space=\"preserve\">\n    <value>Chamber Cross</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p221d02_chamber_v2\" xml:space=\"preserve\">\n    <value>Chamber Cross 2</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p221e01_chamber_v1\" xml:space=\"preserve\">\n    <value>Chamber Zig-Zag</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p221e02_chamber_v2\" xml:space=\"preserve\">\n    <value>Chamber Turn</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p221f01_chamber_v1\" xml:space=\"preserve\">\n    <value>p221f01_chamber_v1</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p221g01_chamber_v1\" xml:space=\"preserve\">\n    <value>p221g01_chamber_v1</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p221h01_chamber_v1\" xml:space=\"preserve\">\n    <value>p221h01_chamber_v1</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p221j01_chamber_v1\" xml:space=\"preserve\">\n    <value>p221j01_chamber_v1</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p221k01_chamber_v1\" xml:space=\"preserve\">\n    <value>p221k01_chamber_v1</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p230A01HexTunnelPlateHeavyStripesBottom\" xml:space=\"preserve\">\n    <value>Hextunnel plate heavy stripes bottom</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p230A01HexTunnelPlateHeavyStripesBottomLeft\" xml:space=\"preserve\">\n    <value>Hextunnel plate heavy stripes bottom left</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p230A01HexTunnelPlateHeavyStripesBottomRight\" xml:space=\"preserve\">\n    <value>Hextunnel plate heavy stripes bottom right</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p230A01HexTunnelPlateHeavyStripesTop\" xml:space=\"preserve\">\n    <value>Hextunnel plate heavy stripes top</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p230A01HexTunnelPlateHeavyStripesTopLeft\" xml:space=\"preserve\">\n    <value>Hextunnel plate heavy stripes top left</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p230A01HexTunnelPlateHeavyStripesTopRight\" xml:space=\"preserve\">\n    <value>Hextunnel plate heavy stripes top right</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p230A02HexTunnelPlateBeamFlatBottom\" xml:space=\"preserve\">\n    <value>Hextunnel plate beam flat bottom</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p230A02HexTunnelPlateBeamFlatBottomLeft\" xml:space=\"preserve\">\n    <value>Hextunnel plate beam flat bottom left</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p230A02HexTunnelPlateBeamFlatBottomRight\" xml:space=\"preserve\">\n    <value>Hextunnel plate beam flat bottom right</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p230A02HexTunnelPlateBeamFlatTop\" xml:space=\"preserve\">\n    <value>Hextunnel plate beam flat top</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p230A02HexTunnelPlateBeamFlatTopLeft\" xml:space=\"preserve\">\n    <value>Hextunnel plate beam flat top left</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p230A02HexTunnelPlateBeamFlatTopRight\" xml:space=\"preserve\">\n    <value>Hextunnel plate beam flat top right</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p230A03HexTunnelPlateFlatBottom\" xml:space=\"preserve\">\n    <value>Hextunnel plate flat bottom</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p230A03HexTunnelPlateFlatBottomLeft\" xml:space=\"preserve\">\n    <value>Hextunnel plate flat bottom left</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p230A03HexTunnelPlateFlatBottomRight\" xml:space=\"preserve\">\n    <value>Hextunnel plate flat bottom right</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p230A03HexTunnelPlateFlatTop\" xml:space=\"preserve\">\n    <value>Hextunnel plate flat top</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p230A03HexTunnelPlateFlatTopLeft\" xml:space=\"preserve\">\n    <value>Hextunnel plate flat top left</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p230A03HexTunnelPlateFlatTopRight\" xml:space=\"preserve\">\n    <value>Hextunnel plate flat top right</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p230A04HexTunnelPlateBeamBottom\" xml:space=\"preserve\">\n    <value>Hextunnel plate beam bottom</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p230A04HexTunnelPlateBeamBottomLeft\" xml:space=\"preserve\">\n    <value>Hextunnel plate beam bottom left</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p230A04HexTunnelPlateBeamBottomRight\" xml:space=\"preserve\">\n    <value>Hextunnel plate beam bottom right</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p230A04HexTunnelPlateBeamTop\" xml:space=\"preserve\">\n    <value>Hextunnel plate beam top</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p230A04HexTunnelPlateBeamTopLeft\" xml:space=\"preserve\">\n    <value>Hextunnel plate beam top left</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p230A04HexTunnelPlateBeamTopRight\" xml:space=\"preserve\">\n    <value>Hextunnel plate beam top right</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p230A05HexTunnelPlateFlat2Bottom\" xml:space=\"preserve\">\n    <value>Hextunnel plate flat2 bottom</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p230A05HexTunnelPlateFlat2BottomLeft\" xml:space=\"preserve\">\n    <value>Hextunnel plate flat2 bottom left</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p230A05HexTunnelPlateFlat2BottomRight\" xml:space=\"preserve\">\n    <value>Hextunnel plate flat2 bottom right</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p230A05HexTunnelPlateFlat2Top\" xml:space=\"preserve\">\n    <value>Hextunnel plate flat2 top</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p230A05HexTunnelPlateFlat2TopLeft\" xml:space=\"preserve\">\n    <value>Hextunnel plate flat2 top left</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p230A05HexTunnelPlateFlat2TopRight\" xml:space=\"preserve\">\n    <value>Hextunnel plate flat2 top right</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p230A06HexTunnelGrateBottom\" xml:space=\"preserve\">\n    <value>Hextunnel grate bottom</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p230A06HexTunnelGrateBottomLeft\" xml:space=\"preserve\">\n    <value>Hextunnel grate bottom left</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p230A06HexTunnelGrateBottomRight\" xml:space=\"preserve\">\n    <value>Hextunnel grate bottom right</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p230A06HexTunnelGrateTop\" xml:space=\"preserve\">\n    <value>Hextunnel grate top</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p230A06HexTunnelGrateTopLeft\" xml:space=\"preserve\">\n    <value>Hextunnel grate top left</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p230A06HexTunnelGrateTopRight\" xml:space=\"preserve\">\n    <value>Hextunnel grate top right</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p231a01_armor\" xml:space=\"preserve\">\n    <value>Armor 01</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p231a02_armor\" xml:space=\"preserve\">\n    <value>Armor 02</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p231a03_armor\" xml:space=\"preserve\">\n    <value>Armor 03</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p231a04_armor\" xml:space=\"preserve\">\n    <value>Armor 04</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p231a05_armor\" xml:space=\"preserve\">\n    <value>Armor 05</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p231a06_armor\" xml:space=\"preserve\">\n    <value>Armor 06</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p231a07_armor\" xml:space=\"preserve\">\n    <value>Armor 07</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p231a08_armor\" xml:space=\"preserve\">\n    <value>Armor 08</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p231a09_armor\" xml:space=\"preserve\">\n    <value>Armor 09</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p231a10_armor\" xml:space=\"preserve\">\n    <value>Armor 10</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p231a11_armor\" xml:space=\"preserve\">\n    <value>Armor 11</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p231a12_armor\" xml:space=\"preserve\">\n    <value>Armor 12</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p231a13_armor\" xml:space=\"preserve\">\n    <value>Armor 13</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p231a14_armor\" xml:space=\"preserve\">\n    <value>Armor 14</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p231a15_armor\" xml:space=\"preserve\">\n    <value>Armor 15</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p231a16_armor\" xml:space=\"preserve\">\n    <value>Armor 16</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p231a17_armor\" xml:space=\"preserve\">\n    <value>Armor 17</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p231a18_armor\" xml:space=\"preserve\">\n    <value>Armor 18</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p311A01ThrusterLarge\" xml:space=\"preserve\">\n    <value>Thruster large</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p311a01_long_term_thruster\" xml:space=\"preserve\">\n    <value>Large Thruster</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p312A01SmallThruster\" xml:space=\"preserve\">\n    <value>Thruster small</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p312a01_short_term_thruster_latitude\" xml:space=\"preserve\">\n    <value>Medium Thruster Latitude</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p312A02SmallThrusterLateral\" xml:space=\"preserve\">\n    <value>Thruster small lateral</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p312a02_short_term_thruster_lateral\" xml:space=\"preserve\">\n    <value>Medium Thruster Lateral</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p321A01SolarPanel\" xml:space=\"preserve\">\n    <value>Solar panel 1</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p321a01_solar_panel\" xml:space=\"preserve\">\n    <value>Solar Panel 1</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p321B01SolarPanel2\" xml:space=\"preserve\">\n    <value>Solar Panel 2</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p321b01_nuclear_reactor\" xml:space=\"preserve\">\n    <value>Nuclear Reactor</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p321b01_solar_panel\" xml:space=\"preserve\">\n    <value>Solar Panel 2</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p321c01_inertia_generator\" xml:space=\"preserve\">\n    <value>inertia Generator</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p321c01_solar_panel\" xml:space=\"preserve\">\n    <value>Solar Panel 1</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p321_d01_big_solar_panel\" xml:space=\"preserve\">\n    <value>Big Solar Panel</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p322a01_battery\" xml:space=\"preserve\">\n    <value>Battery</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p323a01_fuel_generator\" xml:space=\"preserve\">\n    <value>Fuel Generator</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p324a01_fuel_storage_a\" xml:space=\"preserve\">\n    <value>Fuel Storage 01</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p324b01_fuel_storage_b\" xml:space=\"preserve\">\n    <value>Fuel Storage 02</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p331_a01_oxygen_generator\" xml:space=\"preserve\">\n    <value>Oxygen Generator</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p332_a01_oxygen_storage\" xml:space=\"preserve\">\n    <value>Oxygen Tank</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p333_a01_hydroponic_building\" xml:space=\"preserve\">\n    <value>Hydroponic Building</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p334_a01_food_grow\" xml:space=\"preserve\">\n    <value>Food grow</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p341_a01_open_dock_variation1\" xml:space=\"preserve\">\n    <value>Dock 01 Variation 01</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p341_a02_open_dock_variation2\" xml:space=\"preserve\">\n    <value>Dock 01 Variation 02</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p341_b01_open_dock_variation1\" xml:space=\"preserve\">\n    <value>Dock 02 Variation 01</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p341_b02_open_dock_variation2\" xml:space=\"preserve\">\n    <value>Dock 02 Variation 02</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p341_c01_closed_dock_v1\" xml:space=\"preserve\">\n    <value>p341_c01_closed_dock_v1</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p342A01ContainerArmEmpty\" xml:space=\"preserve\">\n    <value>Container arm empty</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p342A02ContainerArmFilled\" xml:space=\"preserve\">\n    <value>Container arm filled</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p342_a01_loading_bay\" xml:space=\"preserve\">\n    <value>Loading Bay</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p343_a01_ore_storage\" xml:space=\"preserve\">\n    <value>Ore Storage</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p344A01DoubleSphereTankOneJoint\" xml:space=\"preserve\">\n    <value>Double sphere tank one joint</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p344A02DoubleSphereTankTwoJoints\" xml:space=\"preserve\">\n    <value>Double sphere tank two joints</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p344A03TankMissingSphereOneJoint\" xml:space=\"preserve\">\n    <value>Tank missing sphere one joint</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p344B01CylTank\" xml:space=\"preserve\">\n    <value>Cylindrical tank</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p344_a01_container_arm_filled\" xml:space=\"preserve\">\n    <value>Container Arm with Container</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p344_a02_container_arm_empty\" xml:space=\"preserve\">\n    <value>Container Arm Empty</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p345_a01_bio_exp\" xml:space=\"preserve\">\n    <value>Bio experiment</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p345_a01_bio_mach_exp\" xml:space=\"preserve\">\n    <value>Bio machine experiment</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p345_a01_recycle\" xml:space=\"preserve\">\n    <value>Recycle</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p345_a01_refinery\" xml:space=\"preserve\">\n    <value>Refinery</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p349_a_tower\" xml:space=\"preserve\">\n    <value>tower a</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p349_b_tower\" xml:space=\"preserve\">\n    <value>tower b</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p349_c_tower\" xml:space=\"preserve\">\n    <value>tower c</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p351_a01_largeship_autocannon\" xml:space=\"preserve\">\n    <value>Weapon gatling gun</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p351_a01_largeship_ciws\" xml:space=\"preserve\">\n    <value>Weapon CIWS</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p351_a01_largeship_machinegun\" xml:space=\"preserve\">\n    <value>Weapon machinegun</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p351_a01_largeship_missile_gun4\" xml:space=\"preserve\">\n    <value>Missile launcher 4 barrels</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p351_a01_largeship_missile_gun6\" xml:space=\"preserve\">\n    <value>Missile launcher 6 barrels</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p351_a01_largeship_missile_gun9\" xml:space=\"preserve\">\n    <value>Missile launcher 9 barrels</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p351_a01_weapon_mount\" xml:space=\"preserve\">\n    <value>Weapon Basing</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p351_a02_largeship_missile_gun_guided4\" xml:space=\"preserve\">\n    <value>Missile launcher 4 guided</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p351_a02_largeship_missile_gun_guided6\" xml:space=\"preserve\">\n    <value>Missile launcher 6 guided</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p351_a02_largeship_missile_gun_guided9\" xml:space=\"preserve\">\n    <value>Missile launcher 9 guided</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p361A01AntennaStick\" xml:space=\"preserve\">\n    <value>Antenna stick</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p361_a01_long_distance_antenna\" xml:space=\"preserve\">\n    <value>Long Distance Antenna</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p362_a01_short_distance_antenna\" xml:space=\"preserve\">\n    <value>Short Distance Antenna</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p381_a01_building1\" xml:space=\"preserve\">\n    <value>Building 01</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p381_b01_building2\" xml:space=\"preserve\">\n    <value>Building 02</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p381_c01_building3\" xml:space=\"preserve\">\n    <value>Building 03</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p381_c01_building4\" xml:space=\"preserve\">\n    <value>Building 04</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p381_d01_bio_exp\" xml:space=\"preserve\">\n    <value>Bio Experiment</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p381_d02_church\" xml:space=\"preserve\">\n    <value>Chuch</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p381_d03_hospital\" xml:space=\"preserve\">\n    <value>Hospital</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p381_d04_recycle\" xml:space=\"preserve\">\n    <value>Recycle</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p381_d05_food_grow\" xml:space=\"preserve\">\n    <value>Food Grow</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p381_d06_temple_900m\" xml:space=\"preserve\">\n    <value>Temple 900m</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p381_d07_bio_mach_exp\" xml:space=\"preserve\">\n    <value>Bio Machine Experiment</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p382_a01_bridge1\" xml:space=\"preserve\">\n    <value>Command Bridge 01</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p382_b01_bridge2\" xml:space=\"preserve\">\n    <value>Command Bridge 02</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p382_c01_bridge3\" xml:space=\"preserve\">\n    <value>Command Bridge 03</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p382_d01_bridge4\" xml:space=\"preserve\">\n    <value>Command Bridge 04</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p382_e01_bridge5\" xml:space=\"preserve\">\n    <value>Command Bridge 05</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p383_a01_church\" xml:space=\"preserve\">\n    <value>Church</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p384_a01_hospital\" xml:space=\"preserve\">\n    <value>Hospital</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p385_a01_temple_900m\" xml:space=\"preserve\">\n    <value>Temple 1200m</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p410A01TunnelEntrance\" xml:space=\"preserve\">\n    <value>Tunnel entrance</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p410A02TunnelShortUnit\" xml:space=\"preserve\">\n    <value>Tunnel short unit</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p410A03Tunnel6DofJunction\" xml:space=\"preserve\">\n    <value>Tunnel 6DOF junction</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p410A04Tunnel90Turn\" xml:space=\"preserve\">\n    <value>Tunnel 90 turn</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p410A05TunnelShortUnitLattice\" xml:space=\"preserve\">\n    <value>Tunnel short unit lattice</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p410A06TunnelShortUnitWithGaps\" xml:space=\"preserve\">\n    <value>Tunnel short unit with gaps</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p410_g01_turn_90_right_0m\" xml:space=\"preserve\">\n    <value>Tunnel Puzzle Sharp Corner</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p411_a01_straight_10m\" xml:space=\"preserve\">\n    <value>Tunnel Cross Straight 10 meters</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p411_a02_straight_60m_with_hole\" xml:space=\"preserve\">\n    <value>Tunnel Cross Straight 60 meters with side-opening</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p411_a03_straight_120m\" xml:space=\"preserve\">\n    <value>Tunnel Cross Straight 120 meters</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p411_a04_straight_80m\" xml:space=\"preserve\">\n    <value>Tunnel Cross Straight 80 meters</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p411_a05_straight_80m_with_extension\" xml:space=\"preserve\">\n    <value>Tunnel Cross Straight 80 meters with extension</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p411_b01_straight_10m\" xml:space=\"preserve\">\n    <value>Tunnel Round Straight 10 meters</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p411_b02_straight_30m_yellow\" xml:space=\"preserve\">\n    <value>tunnel round straight 30 meters yellow </value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p411_b02_straight_60m_with_hole\" xml:space=\"preserve\">\n    <value>Tunnel Round Straight 60 meters with side-opening</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p411_b03_straight_120m\" xml:space=\"preserve\">\n    <value>Tunnel Round Straight 120 meters</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p411_b03_straight_320m\" xml:space=\"preserve\">\n    <value>tunnel round straight 320 meters</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p411_b04_straight_80m_fat\" xml:space=\"preserve\">\n    <value>Tunnel Round Straight 80 meters</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p411_b04_straight_80m_with_side_grates\" xml:space=\"preserve\">\n    <value>tunnel round straight 80 meters side grates</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p411_b05_straight_60m_with_extension\" xml:space=\"preserve\">\n    <value>Tunnel Round Straight 60 meters</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p411_b05_straight_80m_with_side_open\" xml:space=\"preserve\">\n    <value>tunnel round straight 80 meters side open</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p411_b06_straight_180m_concrete\" xml:space=\"preserve\">\n    <value>tunnel round straight 180 meters concrete</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p411_b06_straight_200m\" xml:space=\"preserve\">\n    <value>tunnel round straight 200 meters</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p411_b07_straight_180m_blue\" xml:space=\"preserve\">\n    <value>tunnel round straight 180 meters blue</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p411_b09_straight_30m_gray\" xml:space=\"preserve\">\n    <value>tunnel round straight 30 meters gray</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p411_b11_straight_220m\" xml:space=\"preserve\">\n    <value>tunnel round straight 220 meters</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p411_b12_straight_160m_dark_metal\" xml:space=\"preserve\">\n    <value>tunnel round straight 160 meters dark metal</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p411_b13_straight_100m_tube_inside\" xml:space=\"preserve\">\n    <value>tunnel round straight 100 meters tube inside</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p411_c01_straight_10m\" xml:space=\"preserve\">\n    <value>Tunnel Bread Straight 10 meters</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p411_c02_straight_40m_with_hole\" xml:space=\"preserve\">\n    <value>Tunnel Bread Straight 40 meters with side-opening</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p411_c03_straight_60m\" xml:space=\"preserve\">\n    <value>Tunnel Bread Straight 60 meters</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p411_c04_straight_120m\" xml:space=\"preserve\">\n    <value>Tunnel Bread Straight 120 meters</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p411_c05_straight_180m\" xml:space=\"preserve\">\n    <value>Tunnel Bread Straight 180 meters</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p411_d01_straight_10m\" xml:space=\"preserve\">\n    <value>Tunnel Octagon Straight 10 meters</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p411_d02_straight_40m_with_hole\" xml:space=\"preserve\">\n    <value>Tunnel Octagon Straight 40 meters with side-opening</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p411_d03_straight_60m\" xml:space=\"preserve\">\n    <value>Tunnel Octagon Straight 60 meters</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p411_d04_straight_120m\" xml:space=\"preserve\">\n    <value>Tunnel Octagon Straight 120 meters</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p411_d05_straight_180m\" xml:space=\"preserve\">\n    <value>Tunnel Octagon Straight 180 meters</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p411_e01_straight_1\" xml:space=\"preserve\">\n    <value>Tunnel Special Straight 01</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p411_e02_straight_2\" xml:space=\"preserve\">\n    <value>Tunnel Special Straight 02</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p411_e03_straight_3\" xml:space=\"preserve\">\n    <value>Tunnel Special Straight 03</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p411_e04_straight_4\" xml:space=\"preserve\">\n    <value>Tunnel Special Straight 04</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p411_e05_straight_5\" xml:space=\"preserve\">\n    <value>Tunnel Special Straight 05</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p411_f01_straight_1\" xml:space=\"preserve\">\n    <value>Tunnel Hexagon Straight 01</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p411_f02_straight_2\" xml:space=\"preserve\">\n    <value>Tunnel Hexagon Straight 02</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p411_f03_straight_3\" xml:space=\"preserve\">\n    <value>Tunnel Hexagon Straight 03</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p411_f04_straight_4\" xml:space=\"preserve\">\n    <value>Tunnel Special 01</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p411_f05_straight_5\" xml:space=\"preserve\">\n    <value>Tunnel Special 02</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p411_g01_straight_1\" xml:space=\"preserve\">\n    <value>Tunnel Puzzle Straight 01</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p411_g02_straight_2\" xml:space=\"preserve\">\n    <value>Tunnel Puzzle Straight 02</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p411_g03_straight_3\" xml:space=\"preserve\">\n    <value>Tunnel Puzzle Straight 03</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p411_g04_straight_4\" xml:space=\"preserve\">\n    <value>Tunnel Puzzle Straight 04</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p411_g05_straight_5\" xml:space=\"preserve\">\n    <value>Tunnel Special 03</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p412A01HexTunnel90TurnVertical\" xml:space=\"preserve\">\n    <value>Hextunnel 90 turn vertical</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p412A01HexTunnelSTurnHorizontal\" xml:space=\"preserve\">\n    <value>Hextunnel S turn horizontal</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p412A01HexTunnelSTurnVertical\" xml:space=\"preserve\">\n    <value>Hextunnel S turn vertical</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p412A02HexTunnel90TurnHorizontal\" xml:space=\"preserve\">\n    <value>Hextunnel 90 turn horizontal</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p412_a01_turn_90_up_80m\" xml:space=\"preserve\">\n    <value>Tunnel Cross Corner 80 radius Up</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p412_a02_turn_90_left_80m\" xml:space=\"preserve\">\n    <value>Tunnel Cross Corner 80 radius Left</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p412_a03_turn_90_right_80m\" xml:space=\"preserve\">\n    <value>Tunnel Cross Corner 80 radius Right</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p412_a04_turn_90_down_80m\" xml:space=\"preserve\">\n    <value>Tunnel Cross Corner 80 radius Down</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p412_a11_turn_90_up_160m\" xml:space=\"preserve\">\n    <value>Tunnel Cross Corner 160 radius Up</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p412_a12_turn_90_left_160m\" xml:space=\"preserve\">\n    <value>Tunnel Cross Corner 160 radius Left</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p412_a13_turn_90_right_160m\" xml:space=\"preserve\">\n    <value>Tunnel Cross Corner 160 radius Right</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p412_a14_turn_90_down_160m\" xml:space=\"preserve\">\n    <value>Tunnel Cross Corner 160 radius Down</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p412_a21_turn_s_up\" xml:space=\"preserve\">\n    <value>Tunnel Cross S-Curve Up</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p412_a22_turn_s_left\" xml:space=\"preserve\">\n    <value>Tunnel Cross S-Curve Left</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p412_a23_turn_s_right\" xml:space=\"preserve\">\n    <value>Tunnel Cross S-Curve Right</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p412_a24_turn_s_down\" xml:space=\"preserve\">\n    <value>Tunnel Cross S-Curve Down</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p412_b01_turn_90_up_80m\" xml:space=\"preserve\">\n    <value>Tunnel Round Corner 80 radius Up</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p412_b02_turn_90_left_80m\" xml:space=\"preserve\">\n    <value>Tunnel Round Corner 80 radius Left</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p412_b03_turn_90_right_80m\" xml:space=\"preserve\">\n    <value>Tunnel Round Corner 80 radius Right</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p412_b04_turn_90_down_80m\" xml:space=\"preserve\">\n    <value>Tunnel Round Corner 80 radius Down</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p412_b11_turn_90_up_160m\" xml:space=\"preserve\">\n    <value>Tunnel Round Corner 160 radius Up</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p412_b12_turn_90_left_160m\" xml:space=\"preserve\">\n    <value>Tunnel Round Corner 160 radius Left</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p412_b13_turn_90_right_160m\" xml:space=\"preserve\">\n    <value>Tunnel Round Corner 160 radius Right</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p412_b14_turn_90_down_160m\" xml:space=\"preserve\">\n    <value>Tunnel Round Corner 160 radius Down</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p412_b21_turn_s_up\" xml:space=\"preserve\">\n    <value>Tunnel Round S-Curve Up</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p412_b22_turn_s_left\" xml:space=\"preserve\">\n    <value>Tunnel Round S-Curve Left</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p412_b23_turn_s_right\" xml:space=\"preserve\">\n    <value>Tunnel Round S-Curve Right</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p412_b24_turn_s_down\" xml:space=\"preserve\">\n    <value>Tunnel Round S-Curve Down</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p412_f01_turn_90_up_230m\" xml:space=\"preserve\">\n    <value>Tunnel Hexagon Corner 230 radius Up</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p412_f02_turn_90_left_230m\" xml:space=\"preserve\">\n    <value>Tunnel Hexagon Corner 230 radius Left</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p412_f03_turn_90_right_230m\" xml:space=\"preserve\">\n    <value>Tunnel Hexagon Corner 230 radius Right</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p412_f04_turn_90_down_230m\" xml:space=\"preserve\">\n    <value>Tunnel Hexagon Corner 230 radius Down</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p412_f11_turn_90_up_230m\" xml:space=\"preserve\">\n    <value>Tunnel Ngon Turn 90 Up</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p412_f12_turn_90_left_230m\" xml:space=\"preserve\">\n    <value>Tunnel Ngon Turn 90 Left</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p412_f13_turn_90_right_230m\" xml:space=\"preserve\">\n    <value>Tunnel Ngon Turn 90 Right</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p412_f14_turn_90_down_230m\" xml:space=\"preserve\">\n    <value>Tunnel Ngon Turn 90 Down</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p412_f21_turn_s_up\" xml:space=\"preserve\">\n    <value>Tunnel Hexagon S-Curve Up</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p412_f22_turn_s_left\" xml:space=\"preserve\">\n    <value>Tunnel Hexagon S-Curve Left</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p412_f23_turn_s_right\" xml:space=\"preserve\">\n    <value>Tunnel Hexagon S-Curve Right</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p412_f24_turn_s_down\" xml:space=\"preserve\">\n    <value>Tunnel Hexagon S-Curve Down</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p413_a01_junction_t_horizontal\" xml:space=\"preserve\">\n    <value>Cross Junction T Horizontal</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p413_a02_junction_t_vertical\" xml:space=\"preserve\">\n    <value>Cross Junction T Vertical</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p413_b01_junction_t_horizontal\" xml:space=\"preserve\">\n    <value>Tunnel Round T-Junction Horizontal</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p413_b02_junction_t_vertical\" xml:space=\"preserve\">\n    <value>Tunnel Round X-Junction Horizontal</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p413_c01_junction_t_horizontal\" xml:space=\"preserve\">\n    <value>Tunnel Bread T-Junction Horizontal</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p413_c01_junction_x_horizontal\" xml:space=\"preserve\">\n    <value>Tunnel Bread X-Junction Horizontal</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p413_d01_junction_t_horizontal\" xml:space=\"preserve\">\n    <value>Rectangle Junction T Horizontal</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p413_d02_junction_t_vertical\" xml:space=\"preserve\">\n    <value>Tunnel Ngon Junction T Vertical</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p413_d03_junction_x_horizontal\" xml:space=\"preserve\">\n    <value>Rectangle Junction X Horizontal</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p413_d04_junction_x_vertical\" xml:space=\"preserve\">\n    <value>Tunnel Ngon Junction X Vertical</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p413_g01_junction_6axes\" xml:space=\"preserve\">\n    <value>Tunnel Puzzle 6-way Junction</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p414_a02_entrance_60m\" xml:space=\"preserve\">\n    <value>Tunnel Cross Connector</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p414_b02_entrance_60m\" xml:space=\"preserve\">\n    <value>Tunnel Round Connector</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p414_c01_entrance_60m\" xml:space=\"preserve\">\n    <value>Tunnel Bread Connector</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p414_d01_entrance_60m\" xml:space=\"preserve\">\n    <value>Tunnel Octagon Connector</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p414_e01_entrance_60m\" xml:space=\"preserve\">\n    <value>Tunnel Special Connector</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p414_f01_entrance_60m\" xml:space=\"preserve\">\n    <value>Entrance Special 01 60m</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p414_g01_entrance_60m\" xml:space=\"preserve\">\n    <value>Entrance Special 02 60m</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p414_g02_entrance_60m\" xml:space=\"preserve\">\n    <value>Tunnel Puzzle Connector</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p415_a01_doorcase\" xml:space=\"preserve\">\n    <value>Tunnel Cross Doorframe</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p415_a02_door\" xml:space=\"preserve\">\n    <value>Tunnel Cross Door</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p415_b01_doorcase\" xml:space=\"preserve\">\n    <value>Tunnel Round Doorframe</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p415_c01_door1\" xml:space=\"preserve\">\n    <value>Tunnel Doorframe Straight A</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p415_c01_door2\" xml:space=\"preserve\">\n    <value>Tunnel Doorframe Narrow A</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p415_c01_door3\" xml:space=\"preserve\">\n    <value>Tunnel Doorframe Narrow B</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p415_c01_door4\" xml:space=\"preserve\">\n    <value>Tunnel Doorframe Straight B</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p415_c01_doorcase\" xml:space=\"preserve\">\n    <value>Tunnel Bread Doorframe</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p415_c02_door1\" xml:space=\"preserve\">\n    <value>Tunnel Bread Door 01</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p415_c03_door2_a\" xml:space=\"preserve\">\n    <value>Tunnel Bread Door 02 Left</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p415_c03_door2_b\" xml:space=\"preserve\">\n    <value>Tunnel Bread Door 02 Right</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p415_c04_door3\" xml:space=\"preserve\">\n    <value>Tunnel Bread Door 03</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p415_d01_doorcase\" xml:space=\"preserve\">\n    <value>Tunnel Octagon Doorframe</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p415_d02_door1\" xml:space=\"preserve\">\n    <value>Tunnel Octagon Door 01</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p415_d03_door2_a\" xml:space=\"preserve\">\n    <value>Tunnel Octagon Door 02 Left</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p415_d03_door2_b\" xml:space=\"preserve\">\n    <value>Tunnel Octagon Door 02 Right</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p420A01PipeStraightLong\" xml:space=\"preserve\">\n    <value>Pipe straight long</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p420A02PipeStraightMedium\" xml:space=\"preserve\">\n    <value>Pipe straight medium</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p420A03PipeStraightTiny\" xml:space=\"preserve\">\n    <value>Pipe straight tiny</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p420A04PipeTJunction\" xml:space=\"preserve\">\n    <value>Pipe T junction</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p420A05PipeTurn\" xml:space=\"preserve\">\n    <value>Pipe turn</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p421_a01_pipe_straight_80m\" xml:space=\"preserve\">\n    <value>Pipe Straight 80 meters</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p421_a02_pipe_straight_40m\" xml:space=\"preserve\">\n    <value>Pipe Straight 40 meters</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p421_a03_pipe_straight_10m\" xml:space=\"preserve\">\n    <value>Pipe Straight 10 meters</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p422_a01_pipe_turn_90\" xml:space=\"preserve\">\n    <value>Pipe Corner</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p423_a01_pipe_junction\" xml:space=\"preserve\">\n    <value>Pipe T-Junction</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p424_a01_pipe_base\" xml:space=\"preserve\">\n    <value>Pipe Base</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p430_a01_passage_10m\" xml:space=\"preserve\">\n    <value>Passage 10 meters</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p430_a02_passage_40m\" xml:space=\"preserve\">\n    <value>Passage 160 meters</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p511_a01_billboard\" xml:space=\"preserve\">\n    <value>Billboard 1</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p511_a02_billboard\" xml:space=\"preserve\">\n    <value>Billboard 2</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p511_a03_billboard\" xml:space=\"preserve\">\n    <value>Billboard 3</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p511_a04_billboard\" xml:space=\"preserve\">\n    <value>Billboard 4</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p511_a05_billboard\" xml:space=\"preserve\">\n    <value>Billboard 5</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p511_a06_billboard\" xml:space=\"preserve\">\n    <value>Billboard 6</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p511_a07_billboard\" xml:space=\"preserve\">\n    <value>Billboard 7</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p511_a08_billboard\" xml:space=\"preserve\">\n    <value>Billboard 8</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p511_a09_billboard\" xml:space=\"preserve\">\n    <value>Billboard 9</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p511_a10_billboard\" xml:space=\"preserve\">\n    <value>Billboard 10</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p511_a11_billboard\" xml:space=\"preserve\">\n    <value>Billboard 11</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p511_a12_billboard\" xml:space=\"preserve\">\n    <value>Billboard 12</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p511_a13_billboard\" xml:space=\"preserve\">\n    <value>Billboard 13</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p511_a14_billboard\" xml:space=\"preserve\">\n    <value>Billboard 14</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p511_a15_billboard\" xml:space=\"preserve\">\n    <value>Billboard 15</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p511_a16_billboard\" xml:space=\"preserve\">\n    <value>Billboard 16</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p521_a01_light1\" xml:space=\"preserve\">\n    <value>Light 1</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p521_a02_light2\" xml:space=\"preserve\">\n    <value>Light 2</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p521_a03_light3\" xml:space=\"preserve\">\n    <value>Light 3</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p521_a04_light4\" xml:space=\"preserve\">\n    <value>Light 4</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p531_a01_sign1\" xml:space=\"preserve\">\n    <value>Sign 1</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p531_a02_sign2\" xml:space=\"preserve\">\n    <value>Sign 2</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p531_a03_sign3\" xml:space=\"preserve\">\n    <value>Sign 3</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p531_a04_sign4\" xml:space=\"preserve\">\n    <value>Sign 4</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p531_a05_sign5\" xml:space=\"preserve\">\n    <value>Sign 5</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p531_a06_sign6\" xml:space=\"preserve\">\n    <value>Sign 6</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p531_a07_sign7\" xml:space=\"preserve\">\n    <value>Sign 7</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p531_a08_sign8\" xml:space=\"preserve\">\n    <value>Sign 8</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p531_a09_sign9\" xml:space=\"preserve\">\n    <value>Sign 9</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p531_a10_sign10\" xml:space=\"preserve\">\n    <value>Sign 10</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p531_a11_sign11\" xml:space=\"preserve\">\n    <value>Sign 11</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p531_a12_sign12\" xml:space=\"preserve\">\n    <value>Sign 12</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p531_b_faction\" xml:space=\"preserve\">\n    <value>faction sign</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p531_b_faction_holo\" xml:space=\"preserve\">\n    <value>faction sign holo</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p531_c_administrative_area\" xml:space=\"preserve\">\n    <value>Administrative Area</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p531_c_armory\" xml:space=\"preserve\">\n    <value>Armory</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p531_c_arrow_l\" xml:space=\"preserve\">\n    <value>Left</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p531_c_arrow_r\" xml:space=\"preserve\">\n    <value>Right</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p531_c_arrow_str\" xml:space=\"preserve\">\n    <value>Forward</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p531_c_cargo_bay\" xml:space=\"preserve\">\n    <value>Cargo Bay</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p531_c_command_center\" xml:space=\"preserve\">\n    <value>Command Center</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p531_c_commercial_area\" xml:space=\"preserve\">\n    <value>Commercial Area</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p531_c_communications\" xml:space=\"preserve\">\n    <value>Communications</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p531_c_defenses\" xml:space=\"preserve\">\n    <value>Defenses</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p531_c_docks\" xml:space=\"preserve\">\n    <value>Docks</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p531_c_emergency_exit\" xml:space=\"preserve\">\n    <value>Emergency Exit</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p531_c_engineering_area\" xml:space=\"preserve\">\n    <value>Engineering Area</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p531_c_exit\" xml:space=\"preserve\">\n    <value>Exit</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p531_c_experimental_labs\" xml:space=\"preserve\">\n    <value>Experimental Labs</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p531_c_foundry\" xml:space=\"preserve\">\n    <value>Foundry</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p531_c_habitats\" xml:space=\"preserve\">\n    <value>Habitat</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p531_c_hangars\" xml:space=\"preserve\">\n    <value>Hangar</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p531_c_industrial_area\" xml:space=\"preserve\">\n    <value>Industrial Area</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p531_c_landing_bay\" xml:space=\"preserve\">\n    <value>Landing Bay</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p531_c_maintenance\" xml:space=\"preserve\">\n    <value>Maintenance</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p531_c_military_area\" xml:space=\"preserve\">\n    <value>Military Area</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p531_c_mines\" xml:space=\"preserve\">\n    <value>Mines</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p531_c_ore_processing\" xml:space=\"preserve\">\n    <value>Ore Processing</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p531_c_outer_area\" xml:space=\"preserve\">\n    <value>Outer Area</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p531_c_prison\" xml:space=\"preserve\">\n    <value>Prison</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p531_c_public_area\" xml:space=\"preserve\">\n    <value>Public Area</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p531_c_reactor\" xml:space=\"preserve\">\n    <value>Reactor</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p531_c_research\" xml:space=\"preserve\">\n    <value>Research</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p531_c_restricted_area\" xml:space=\"preserve\">\n    <value>Restricted Area</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p531_c_security\" xml:space=\"preserve\">\n    <value>Security</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p531_c_sign\" xml:space=\"preserve\">\n    <value>Sign</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p531_c_storage\" xml:space=\"preserve\">\n    <value>Storage</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p531_c_technical_area\" xml:space=\"preserve\">\n    <value>Technical Area</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p531_c_trade_port\" xml:space=\"preserve\">\n    <value>Trade Port</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p541_escape_pod\" xml:space=\"preserve\">\n    <value>Escape pod</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p541_escape_pod_base\" xml:space=\"preserve\">\n    <value>Escape pod base</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p541_ventilator_body\" xml:space=\"preserve\">\n    <value>Ventilator body</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p541_ventilator_propeller\" xml:space=\"preserve\">\n    <value>Ventilator propeller</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p551_a01_particles\" xml:space=\"preserve\">\n    <value>Leaking Steam White</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p551_b01_particles\" xml:space=\"preserve\">\n    <value>Leaking Steam Grey</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p551_c01_particles\" xml:space=\"preserve\">\n    <value>Leaking Steam Black</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p551_d01_particles\" xml:space=\"preserve\">\n    <value>Dust</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p561_a01_sound\" xml:space=\"preserve\">\n    <value>Sound 1</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p561_b01_sound\" xml:space=\"preserve\">\n    <value>Sound 2</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p561_c01_sound\" xml:space=\"preserve\">\n    <value>Sound 3</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p561_d01_sound\" xml:space=\"preserve\">\n    <value>Sound 4</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p571_a01_traffic_sign\" xml:space=\"preserve\">\n    <value>Trafic Sign 01</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p571_b01_traffic_sign\" xml:space=\"preserve\">\n    <value>Trafic Sign 02</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p571_box01_traffic_sign\" xml:space=\"preserve\">\n    <value>Trafic Box Sign 01</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p571_box02_traffic_sign\" xml:space=\"preserve\">\n    <value>Trafic Box Sign 02</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p571_c01_traffic_sign\" xml:space=\"preserve\">\n    <value>Trafic Sign 03</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p571_d01_traffic_sign\" xml:space=\"preserve\">\n    <value>Trafic Sign 04</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p571_e01_traffic_sign\" xml:space=\"preserve\">\n    <value>Trafic Sign 05</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p571_f01_traffic_sign\" xml:space=\"preserve\">\n    <value>Trafic Sign 06</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p571_g01_traffic_sign\" xml:space=\"preserve\">\n    <value>Trafic Sign 07</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p571_h01_traffic_sign\" xml:space=\"preserve\">\n    <value>Trafic Sign 08</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p571_i01_traffic_sign\" xml:space=\"preserve\">\n    <value>Trafic Sign 09</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p571_j01_traffic_sign\" xml:space=\"preserve\">\n    <value>Trafic Sign 10</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p571_k01_traffic_sign\" xml:space=\"preserve\">\n    <value>Trafic Sign 11</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p571_l01_traffic_sign\" xml:space=\"preserve\">\n    <value>Trafic Sign 12</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"PageDown\" xml:space=\"preserve\">\n    <value>PgDown</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"PageUp\" xml:space=\"preserve\">\n    <value>PgUp</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"ParticleEffect\" xml:space=\"preserve\">\n    <value>Particle effect</value>\n  </data>\n  <data name=\"Passive\" xml:space=\"preserve\">\n    <value>Passive</value>\n  </data>\n  <data name=\"Password\" xml:space=\"preserve\">\n    <value>Password</value>\n  </data>\n  <data name=\"PatrolMode\" xml:space=\"preserve\">\n    <value>Patrol mode</value>\n  </data>\n  <data name=\"PerfectSphereSplitted_512x512x512\" xml:space=\"preserve\">\n    <value>512x512x512\nSplitted sphere</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"PerfectSphereWithFewTunnels_512x512x512\" xml:space=\"preserve\">\n    <value>512x512x512\nSphere with few tunnels</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"PerfectSphereWithMassiveTunnels2_512x512x512\" xml:space=\"preserve\">\n    <value>512x512x512\nSphere with big tunnels 2</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"PerfectSphereWithMassiveTunnels_512x512x512\" xml:space=\"preserve\">\n    <value>512x512x512\nSphere with big tunnels 1</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"PerfectSphereWithRaceTunnel2_512x512x512\" xml:space=\"preserve\">\n    <value>512x512x512\nSphere with tunnels 2</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"PerfectSphereWithRaceTunnel_512x512x512\" xml:space=\"preserve\">\n    <value>512x512x512\nSphere with tunnels 1</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"PingPong\" xml:space=\"preserve\">\n    <value>Ping-pong</value>\n  </data>\n  <data name=\"pipe_bundle\" xml:space=\"preserve\">\n    <value>Bundle of pipes</value>\n  </data>\n  <data name=\"piratebase_export\" xml:space=\"preserve\">\n    <value>Pirate base cave</value>\n  </data>\n  <data name=\"Platinum_01\" xml:space=\"preserve\">\n    <value>Platinum</value>\n  </data>\n  <data name=\"PlayDemo\" xml:space=\"preserve\">\n    <value>Play demo</value>\n  </data>\n  <data name=\"PlayerHealthIndestructible\" xml:space=\"preserve\">\n    <value>Player health indestructible</value>\n  </data>\n  <data name=\"PlayerName\" xml:space=\"preserve\">\n    <value>Player name</value>\n  </data>\n  <data name=\"PlayerNotFound\" xml:space=\"preserve\">\n    <value>Player not found.</value>\n  </data>\n  <data name=\"PlayerShipIndestructible\" xml:space=\"preserve\">\n    <value>Player ship indestructible</value>\n  </data>\n  <data name=\"PlayerStart\" xml:space=\"preserve\">\n    <value>Player start</value>\n  </data>\n  <data name=\"PlayerStartPosition\" xml:space=\"preserve\">\n    <value>Player ship position:     </value>\n  </data>\n  <data name=\"PlaySandbox\" xml:space=\"preserve\">\n    <value>Multiplayer</value>\n  </data>\n  <data name=\"PlayStory\" xml:space=\"preserve\">\n    <value>Singleplayer / Co-op</value>\n  </data>\n  <data name=\"PointLight\" xml:space=\"preserve\">\n    <value>PointLight</value>\n  </data>\n  <data name=\"Position\" xml:space=\"preserve\">\n    <value>Position</value>\n  </data>\n  <data name=\"PrefabContainer\" xml:space=\"preserve\">\n    <value>Prefab Container</value>\n  </data>\n  <data name=\"PrefabContainerAlreadyContainsFoundationFactory\" xml:space=\"preserve\">\n    <value>Prefab container already contains foundation factory</value>\n  </data>\n  <data name=\"PrefabContainerContextMenuCaption\" xml:space=\"preserve\">\n    <value>Prefab container</value>\n  </data>\n  <data name=\"PrefabContextMenuCaption\" xml:space=\"preserve\">\n    <value>Prefab</value>\n  </data>\n  <data name=\"PrefabMaterials\" xml:space=\"preserve\">\n    <value>Prefab materials</value>\n  </data>\n  <data name=\"Prefabs\" xml:space=\"preserve\">\n    <value>Prefabs</value>\n  </data>\n  <data name=\"SpawnPoints\" xml:space=\"preserve\">\n    <value>Spawn points</value>\n  </data>\n  <data name=\"PressToBuildTurret\" xml:space=\"preserve\">\n    <value>Hold {0} to build a turret here.</value>\n  </data>\n  <data name=\"PressToSkipTimer\" xml:space=\"preserve\">\n    <value>Press {0} to launch the attack.</value>\n  </data>\n  <data name=\"PreviousCamera\" xml:space=\"preserve\">\n    <value>Previous secondary cam</value>\n  </data>\n  <data name=\"Profile\" xml:space=\"preserve\">\n    <value>Profile</value>\n  </data>\n  <data name=\"QuickZoom\" xml:space=\"preserve\">\n    <value>Quick zoom</value>\n  </data>\n  <data name=\"QuoteOfTheDay00\" xml:space=\"preserve\">\n    <value>Press F1 during gameplay to show help and current controls.</value>\n  </data>\n  <data name=\"QuoteOfTheDay01\" xml:space=\"preserve\">\n    <value>The Templars are the protectors of righteousness in the Solar System,\ncounting up to 314 guardians.</value>\n  </data>\n  <data name=\"QuoteOfTheDay02\" xml:space=\"preserve\">\n    <value>The Solar Event is the consequence of failure in Project Genesis,\nthe gigantic positron generator.</value>\n  </data>\n  <data name=\"QuoteOfTheDay03\" xml:space=\"preserve\">\n    <value>Maulerian Eugenics is an ideology of creating a genetically perfected human race,\noriginally conceived by the scientist Gregor Fitzgerald Mauler.</value>\n  </data>\n  <data name=\"QuoteOfTheDay04\" xml:space=\"preserve\">\n    <value>The official OmniCorp motto is inscribed within three conjoined hexagons\nsignifying the “3 P’s” – Progress, Profit, Prosperity.</value>\n  </data>\n  <data name=\"QuoteOfTheDay05\" xml:space=\"preserve\">\n    <value>Apollo was only sixteen during the Solar Event.\nHis brother took care of him, taking him on many mining and survey missions.</value>\n  </data>\n  <data name=\"QuoteOfTheDay06\" xml:space=\"preserve\">\n    <value>Madelyn first met the brothers in 2072 on a mission for FSRE on an outer belt survey mission.</value>\n  </data>\n  <data name=\"QuoteOfTheDay07\" xml:space=\"preserve\">\n    <value>Watch carefully for cargo boxes. They can provide you with extra equipment and ammo!</value>\n  </data>\n  <data name=\"QuoteOfTheDay08\" xml:space=\"preserve\">\n    <value>Missiles are most efficient against large groups of enemies\nthanks to the damage radius caused by the explosion!</value>\n  </data>\n  <data name=\"QuoteOfTheDay09\" xml:space=\"preserve\">\n    <value>Utilize the destructible environment while in combat\nand reveal secret paths or hidden areas during a mission!</value>\n  </data>\n  <data name=\"QuoteOfTheDay10\" xml:space=\"preserve\">\n    <value>Harvesting ores from asteroids will provide you with materials\nthat are tradeable by vendors.</value>\n  </data>\n  <data name=\"QuoteOfTheDay11\" xml:space=\"preserve\">\n    <value>GPS will help you navigate to your next objective.</value>\n  </data>\n  <data name=\"QuoteOfTheDay12\" xml:space=\"preserve\">\n    <value>Security hubs allow you to disable or control cameras, turrets, doors\nand other dynamic structures remotely.</value>\n  </data>\n  <data name=\"QuoteOfTheDay13\" xml:space=\"preserve\">\n    <value>Use drones to get through tight corridors and other places your ship is unable to fit.</value>\n  </data>\n  <data name=\"QuoteOfTheDay14\" xml:space=\"preserve\">\n    <value>Your enemies do not detect you while your engines are turned off.\nUse this in multiplayer to fool your opponents.</value>\n  </data>\n  <data name=\"QuoteOfTheDay15\" xml:space=\"preserve\">\n    <value>Every game session is in co-op mode by default.\nIf you don’t want others to join you, disable co-op in menu.</value>\n  </data>\n  <data name=\"QuoteOfTheDay16\" xml:space=\"preserve\">\n    <value>Afterburner increases your speed temporarily and recharges automatically over time.\nBeware of increased fuel consumption!</value>\n  </data>\n  <data name=\"QuoteOfTheDay17\" xml:space=\"preserve\">\n    <value>If you run out of ammo, you can always use your drill to crush your enemies!</value>\n  </data>\n  <data name=\"QuoteOfTheDay18\" xml:space=\"preserve\">\n    <value>Use your mothership to travel quickly across the Solar System.</value>\n  </data>\n  <data name=\"QuoteOfTheDay19\" xml:space=\"preserve\">\n    <value>Some objects/terminals are usable from close distance directly,\nthat is even without hacking a security hub.</value>\n  </data>\n  <data name=\"QuoteOfTheDay20\" xml:space=\"preserve\">\n    <value>Play multiplayer with your friends to show them who’s boss!</value>\n  </data>\n  <data name=\"QuoteOfTheDay21\" xml:space=\"preserve\">\n    <value>Use the environment properly to hide and take cover\nagainst large groups of enemy fighters!</value>\n  </data>\n  <data name=\"QuoteOfTheDay22\" xml:space=\"preserve\">\n    <value>Use the editor to create your own custom multiplayer maps, space stations,\nasteroids and other awesome structures!</value>\n  </data>\n  <data name=\"QuoteOfTheDay23\" xml:space=\"preserve\">\n    <value>Some enemies are tougher than others…\nTry to learn the weak and strong points of each ship type!</value>\n  </data>\n  <data name=\"QuoteOfTheDay24\" xml:space=\"preserve\">\n    <value>If you don’t like the cockpit,\nyou can always switch to third-person mode.</value>\n  </data>\n  <data name=\"QuoteOfTheDay25\" xml:space=\"preserve\">\n    <value>Solar wind will hit you hard if you do not manage to find cover\nbehind asteroids or other large objects quickly enough!</value>\n  </data>\n  <data name=\"QuoteOfTheDay26\" xml:space=\"preserve\">\n    <value>Smart mines will automatically chase enemies once they get close enough.</value>\n  </data>\n  <data name=\"QuoteOfTheDay27\" xml:space=\"preserve\">\n    <value>Use holograms to distract your enemies\nand relieve the pressure of engaging enemies for a short time.</value>\n  </data>\n  <data name=\"QuoteOfTheDay28\" xml:space=\"preserve\">\n    <value>You can use drones to explore dangerous and radioactive areas\nwithout putting yourself in harm.</value>\n  </data>\n  <data name=\"QuoteOfTheDay29\" xml:space=\"preserve\">\n    <value>You may shake off your enemies by turning off engines;\nhowever, you’ll still be prone to harm and unable to react promptly.</value>\n  </data>\n  <data name=\"QuoteOfTheDay30\" xml:space=\"preserve\">\n    <value>To maximize your efficiency while mining,\ntry harvesting from a hole drilled in the material.</value>\n  </data>\n  <data name=\"QuoteOfTheDay31\" xml:space=\"preserve\">\n    <value>If a co-op game becomes a little out of hand, try playing multiplayer deathmatch!</value>\n  </data>\n  <data name=\"QuoteOfTheDay32\" xml:space=\"preserve\">\n    <value>You can turn off most notifications and warnings in Game options.</value>\n  </data>\n  <data name=\"QuoteOfTheDay33\" xml:space=\"preserve\">\n    <value>Try playing both with and without autoleveling\nto find out which better suits your playing style.</value>\n  </data>\n  <data name=\"QuoteOfTheDay34\" xml:space=\"preserve\">\n    <value>Travel long distances for free by speeding up and turning off the engines.</value>\n  </data>\n  <data name=\"RadarType\" xml:space=\"preserve\">\n    <value>Radar type</value>\n  </data>\n  <data name=\"RadarTypeNormal3D\" xml:space=\"preserve\">\n    <value>Normal3D</value>\n  </data>\n  <data name=\"RadarTypePlayer2D\" xml:space=\"preserve\">\n    <value>Player2D</value>\n  </data>\n  <data name=\"RadarTypeSolar2D\" xml:space=\"preserve\">\n    <value>Solar2D</value>\n  </data>\n  <data name=\"Radius\" xml:space=\"preserve\">\n    <value>Radius</value>\n  </data>\n  <data name=\"RadiusMax\" xml:space=\"preserve\">\n    <value>Radius max</value>\n  </data>\n  <data name=\"RadiusMaxLowerThanRadiusMin\" xml:space=\"preserve\">\n    <value>Max radius must be bigger than min radius</value>\n  </data>\n  <data name=\"RadiusMin\" xml:space=\"preserve\">\n    <value>Radius min</value>\n  </data>\n  <data name=\"Random\" xml:space=\"preserve\">\n    <value>Random</value>\n  </data>\n  <data name=\"RandomFlashing\" xml:space=\"preserve\">\n    <value>RandomFlashing</value>\n  </data>\n  <data name=\"RearCam\" xml:space=\"preserve\">\n    <value>Toggle secondary cam</value>\n  </data>\n  <data name=\"RearViewMirror\" xml:space=\"preserve\">\n    <value>Rear-view mirror</value>\n  </data>\n  <data name=\"RecommendedAspectRatio\" xml:space=\"preserve\">\n    <value>Recommended: {0}</value>\n  </data>\n  <data name=\"Red\" xml:space=\"preserve\">\n    <value>Red</value>\n  </data>\n  <data name=\"RedColoredPropertiesAreNotSame\" xml:space=\"preserve\">\n    <value>* Red-colored properties are not the same!</value>\n  </data>\n  <data name=\"Register\" xml:space=\"preserve\">\n    <value>Register</value>\n  </data>\n  <data name=\"Registration\" xml:space=\"preserve\">\n    <value>Registration</value>\n  </data>\n  <data name=\"RegistrationInfo\" xml:space=\"preserve\">\n    <value>Fill and submit this form in order to create your Miner Wars account</value>\n  </data>\n  <data name=\"RegistrationInProgressPleaseWait\" xml:space=\"preserve\">\n    <value>Registration in progress… please wait.</value>\n  </data>\n  <data name=\"RemainingTurrets\" xml:space=\"preserve\">\n    <value>You’ve placed {0} turrets, {1} remaining.</value>\n  </data>\n  <data name=\"RememberMe\" xml:space=\"preserve\">\n    <value>Remember me</value>\n  </data>\n  <data name=\"RemoteBombHud\" xml:space=\"preserve\">\n    <value>Remote bomb</value>\n  </data>\n  <data name=\"RemoteCameraHud\" xml:space=\"preserve\">\n    <value>Remote camera</value>\n  </data>\n  <data name=\"RemoteCameraNo\" xml:space=\"preserve\">\n    <value>Cam {0}</value>\n  </data>\n  <data name=\"RemoteCameraNoRotate\" xml:space=\"preserve\">\n    <value>Cam {0}: Hold {1} to look around</value>\n  </data>\n  <data name=\"RemoteCameraRotate\" xml:space=\"preserve\">\n    <value>Hold {0} to look around with the camera</value>\n  </data>\n  <data name=\"RemoveAllBlueprints\" xml:space=\"preserve\">\n    <value>Remove all blueprints</value>\n  </data>\n  <data name=\"RemoveVoxels\" xml:space=\"preserve\">\n    <value>Remove voxels</value>\n  </data>\n  <data name=\"Rename\" xml:space=\"preserve\">\n    <value>Rename</value>\n  </data>\n  <data name=\"RenameCheckpoint\" xml:space=\"preserve\">\n    <value>Rename checkpoint</value>\n  </data>\n  <data name=\"RenderQuality\" xml:space=\"preserve\">\n    <value>Render quality</value>\n  </data>\n  <data name=\"RenderQualityExtreme\" xml:space=\"preserve\">\n    <value>Extreme</value>\n  </data>\n  <data name=\"RenderQualityHigh\" xml:space=\"preserve\">\n    <value>High</value>\n  </data>\n  <data name=\"RenderQualityLow\" xml:space=\"preserve\">\n    <value>Very Ugly</value>\n  </data>\n  <data name=\"RenderQualityNormal\" xml:space=\"preserve\">\n    <value>Normal</value>\n  </data>\n  <data name=\"Repair\" xml:space=\"preserve\">\n    <value>Repair</value>\n  </data>\n  <data name=\"ResetAsteroid\" xml:space=\"preserve\">\n    <value>Reset asteroid</value>\n  </data>\n  <data name=\"ResetAsteroidTooltip\" xml:space=\"preserve\">\n    <value>Removes any merged asteroids from the current selection</value>\n  </data>\n  <data name=\"ResetRotation\" xml:space=\"preserve\">\n    <value>Reset rotation</value>\n  </data>\n  <data name=\"ResetRotationTooltip\" xml:space=\"preserve\">\n    <value>Resets any rotation modifications for the current selection</value>\n  </data>\n  <data name=\"Respawn\" xml:space=\"preserve\">\n    <value>Respawn</value>\n  </data>\n  <data name=\"RetypePassword\" xml:space=\"preserve\">\n    <value>Retype password</value>\n  </data>\n  <data name=\"ReverseThrust\" xml:space=\"preserve\">\n    <value>Reverse thrust</value>\n  </data>\n  <data name=\"Revert\" xml:space=\"preserve\">\n    <value>Defaults</value>\n  </data>\n  <data name=\"Right\" xml:space=\"preserve\">\n    <value>Right</value>\n  </data>\n  <data name=\"RightAlt\" xml:space=\"preserve\">\n    <value>RAlt</value>\n  </data>\n  <data name=\"RightControl\" xml:space=\"preserve\">\n    <value>RCtrl</value>\n  </data>\n  <data name=\"RightMouseButton\" xml:space=\"preserve\">\n    <value>RMB</value>\n  </data>\n  <data name=\"RightShift\" xml:space=\"preserve\">\n    <value>RShift</value>\n  </data>\n  <data name=\"RighWeapons\" xml:space=\"preserve\">\n    <value>Right wing</value>\n  </data>\n  <data name=\"RollLeft\" xml:space=\"preserve\">\n    <value>Roll left</value>\n  </data>\n  <data name=\"RollRight\" xml:space=\"preserve\">\n    <value>Roll right</value>\n  </data>\n  <data name=\"RotationDown\" xml:space=\"preserve\">\n    <value>Rotate down</value>\n  </data>\n  <data name=\"RotationLeft\" xml:space=\"preserve\">\n    <value>Rotate left</value>\n  </data>\n  <data name=\"RotationRight\" xml:space=\"preserve\">\n    <value>Rotate right</value>\n  </data>\n  <data name=\"RotationUp\" xml:space=\"preserve\">\n    <value>Rotate up</value>\n  </data>\n  <data name=\"RusMothership\" xml:space=\"preserve\">\n    <value>Russian mothership</value>\n  </data>\n  <data name=\"RussianMothershipHummer\" xml:space=\"preserve\">\n    <value>Russian mothership Hummer</value>\n  </data>\n  <data name=\"SafeArea\" xml:space=\"preserve\">\n    <value>Safe area</value>\n  </data>\n  <data name=\"Sandstone_01\" xml:space=\"preserve\">\n    <value>Sandstone 1</value>\n  </data>\n  <data name=\"SaveAsteroids\" xml:space=\"preserve\">\n    <value>Save asteroids</value>\n  </data>\n  <data name=\"SaveAsteroidsTooltip\" xml:space=\"preserve\">\n    <value>Export asteroids to a file</value>\n  </data>\n  <data name=\"SaveAsteroidToFile\" xml:space=\"preserve\">\n    <value>Save asteroid</value>\n  </data>\n  <data name=\"SaveAsteroidToFileTooltip\" xml:space=\"preserve\">\n    <value>Saves asteroid to a file</value>\n  </data>\n  <data name=\"SaveCheckpoint\" xml:space=\"preserve\">\n    <value>Save checkpoint</value>\n  </data>\n  <data name=\"SaveSector\" xml:space=\"preserve\">\n    <value>Save sector</value>\n  </data>\n  <data name=\"SaveSectorInProgressPleaseWait\" xml:space=\"preserve\">\n    <value>Saving sector to server… \nplease wait</value>\n  </data>\n  <data name=\"SaveSectorTooltip\" xml:space=\"preserve\">\n    <value>Saves sector to server</value>\n  </data>\n  <data name=\"Scanner\" xml:space=\"preserve\">\n    <value>Scanner</value>\n  </data>\n  <data name=\"ScannerPlane\" xml:space=\"preserve\">\n    <value>Scanner plane</value>\n  </data>\n  <data name=\"ScannerRays\" xml:space=\"preserve\">\n    <value>Scanner rays</value>\n  </data>\n  <data name=\"ScanningSpeed\" xml:space=\"preserve\">\n    <value>Scanning speed</value>\n  </data>\n  <data name=\"ScratchedBoulder_128x128x128\" xml:space=\"preserve\">\n    <value>128x128x128\nScratched boulder</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Search\" xml:space=\"preserve\">\n    <value>Search</value>\n  </data>\n  <data name=\"SectorBorderBegin\" xml:space=\"preserve\">\n    <value>Approaching sector border: </value>\n  </data>\n  <data name=\"SectorBorderEnd\" xml:space=\"preserve\">\n    <value> m</value>\n  </data>\n  <data name=\"SectorIdentifier\" xml:space=\"preserve\">\n    <value>Sector identifier:      </value>\n  </data>\n  <data name=\"SectorName\" xml:space=\"preserve\">\n    <value>Sector name:</value>\n  </data>\n  <data name=\"SectorNotFound\" xml:space=\"preserve\">\n    <value>Sector not found.</value>\n  </data>\n  <data name=\"SecurityControlHUB\" xml:space=\"preserve\">\n    <value>Security control hub</value>\n  </data>\n  <data name=\"SeeAll\" xml:space=\"preserve\">\n    <value>See all</value>\n  </data>\n  <data name=\"SeeDistance\" xml:space=\"preserve\">\n    <value>See distance</value>\n  </data>\n  <data name=\"Selectable\" xml:space=\"preserve\">\n    <value>Selectable</value>\n  </data>\n  <data name=\"SelectAllNone\" xml:space=\"preserve\">\n    <value>Select all / none</value>\n  </data>\n  <data name=\"SelectAllObjects\" xml:space=\"preserve\">\n    <value>Select all objects</value>\n  </data>\n  <data name=\"SelectAllObjectsTooltip\" xml:space=\"preserve\">\n    <value>Press Left Ctrl+A to select all objects in sector</value>\n  </data>\n  <data name=\"SelectControl\" xml:space=\"preserve\">\n    <value>SELECT CONTROL</value>\n  </data>\n  <data name=\"SelectedObjectHudLabelText\" xml:space=\"preserve\">\n    <value>HUD label text:      </value>\n  </data>\n  <data name=\"SelectedObjectOrientationForward\" xml:space=\"preserve\">\n    <value>Orientation forward:     </value>\n  </data>\n  <data name=\"SelectedObjectOrientationUp\" xml:space=\"preserve\">\n    <value>Orientation up:     </value>\n  </data>\n  <data name=\"SelectedObjectPosition\" xml:space=\"preserve\">\n    <value>Position:      </value>\n  </data>\n  <data name=\"SelectedObjectSizeInMeters\" xml:space=\"preserve\">\n    <value>Size in meters:   </value>\n  </data>\n  <data name=\"SelectedObjectType\" xml:space=\"preserve\">\n    <value>Object Type:   </value>\n  </data>\n  <data name=\"SelectedVoxelMapRemainingSaveExplosions\" xml:space=\"preserve\">\n    <value>Remaining count of explosions saved with asteroid:    </value>\n  </data>\n  <data name=\"SelectBackLauncherAmmo\" xml:space=\"preserve\">\n    <value>Back launcher ammo</value>\n  </data>\n  <data name=\"SelectFrontLauncherAmmo\" xml:space=\"preserve\">\n    <value>Front launcher ammo</value>\n  </data>\n  <data name=\"SelectAmmo\" xml:space=\"preserve\">\n    <value>Switch weapons and ammo</value>\n  </data>\n  <data name=\"SelectBulletAmmo\" xml:space=\"preserve\">\n    <value>Bullet ammo</value>\n  </data>\n  <data name=\"SelectSandboxInProgressPleaseWait\" xml:space=\"preserve\">\n    <value>Loading sandbox sectors…</value>\n  </data>\n  <data name=\"SelectMissileAmmo\" xml:space=\"preserve\">\n    <value>Missile ammo</value>\n  </data>\n  <data name=\"SelectSector\" xml:space=\"preserve\">\n    <value>Select sector</value>\n  </data>\n  <data name=\"SelectCannonAmmo\" xml:space=\"preserve\">\n    <value>Cannon ammo</value>\n  </data>\n  <data name=\"SendNewsletters\" xml:space=\"preserve\">\n    <value>Send me Miner Wars newsletters</value>\n  </data>\n  <data name=\"ServerShutdownNotification\" xml:space=\"preserve\">\n    <value>Server maintenance in {1} minutes. Server will be down for {0} minutes.</value>\n  </data>\n  <data name=\"ServerShutdownNotificationCaption\" xml:space=\"preserve\">\n    <value>SCHEDULED SERVER SHUTDOWN</value>\n  </data>\n  <data name=\"SessionType\" xml:space=\"preserve\">\n    <value>Session type:   </value>\n  </data>\n  <data name=\"SetShipFaction\" xml:space=\"preserve\">\n    <value>Choose faction</value>\n  </data>\n  <data name=\"Ship\" xml:space=\"preserve\">\n    <value>Ship</value>\n  </data>\n  <data name=\"ShipCustomizationCaption\" xml:space=\"preserve\">\n    <value>Ship customization</value>\n  </data>\n  <data name=\"ShipInventory\" xml:space=\"preserve\">\n    <value>My inventory</value>\n  </data>\n  <data name=\"ShipInventoryCaption\" xml:space=\"preserve\">\n    <value>Inventory</value>\n  </data>\n  <data name=\"UseGPS\" xml:space=\"preserve\">\n    <value>Use the GPS</value>\n  </data>\n  <data name=\"ShowVertexNormals\" xml:space=\"preserve\">\n    <value>Show normals (must be enabled)</value>\n  </data>\n  <data name=\"SideMission\" xml:space=\"preserve\">\n    <value>Side mission</value>\n  </data>\n  <data name=\"Silicon_01\" xml:space=\"preserve\">\n    <value>Silicon</value>\n  </data>\n  <data name=\"Silver_01\" xml:space=\"preserve\">\n    <value>Silver</value>\n  </data>\n  <data name=\"SimulateLostMessages\" xml:space=\"preserve\">\n    <value>Simulate lost messages sent out</value>\n  </data>\n  <data name=\"SimulateSlowDraw\" xml:space=\"preserve\">\n    <value>Simulate slow draw</value>\n  </data>\n  <data name=\"SimulateSlowUpdate\" xml:space=\"preserve\">\n    <value>Simulate slow update</value>\n  </data>\n  <data name=\"SmallShip\" xml:space=\"preserve\">\n    <value>SmallShip</value>\n  </data>\n  <data name=\"SmallShipContextMenuCaption\" xml:space=\"preserve\">\n    <value>Small Ship</value>\n  </data>\n  <data name=\"SmallShipDoon\" xml:space=\"preserve\">\n    <value>DOON | Ship of class Doon | Weight: 5200 kg | Max weapons: 4 | Max cargo capacity: 36</value>\n  </data>\n  <data name=\"SmallShipHammer\" xml:space=\"preserve\">\n    <value>HAMMER | Ship of class Hammer | Weight: 7500 kg | Max weapons: 8 | Max cargo capacity: 60</value>\n  </data>\n  <data name=\"SmallShipHawk\" xml:space=\"preserve\">\n    <value>HAWK | Ship of class Hawk | Weight: 6600 kg | Max weapons: 8 | Max cargo capacity: 36</value>\n  </data>\n  <data name=\"SmallShipJackKnife\" xml:space=\"preserve\">\n    <value>JACKNIFE | Ship of class Jacknife | Weight: 6100 kg | Max weapons: 6 | Max cargo capacity: 36</value>\n  </data>\n  <data name=\"SmallShipLeviathan\" xml:space=\"preserve\">\n    <value>LEVIATHAN | Ship of class Leviathan | Weight: 9000 kg | Max weapons: 8 | Max cargo capacity: 36</value>\n  </data>\n  <data name=\"SmallShipMinerShip01\" xml:space=\"preserve\">\n    <value>LIBERATOR | Ship of class Liberator | Weight: 7000 kg | Max weapons: 6 | Max cargo capacity: 60</value>\n  </data>\n  <data name=\"SmallShipMinerShip02\" xml:space=\"preserve\">\n    <value>ENFORCER | Ship of class Enforcer | Weight: 8000 kg | Max weapons: 6 | Max cargo capacity: 60</value>\n  </data>\n  <data name=\"SmallShipMinerShip03\" xml:space=\"preserve\">\n    <value>KAMMLER | Ship of class Kammler | Weight: 8500 kg | Max weapons: 6 | Max cargo capacity: 60</value>\n  </data>\n  <data name=\"SmallShipMinerShip04\" xml:space=\"preserve\">\n    <value>GETTYSBURG | Ship of class Gettysburg | Weight: 6600 kg | Max weapons: 6 | Max cargo capacity: 60</value>\n  </data>\n  <data name=\"SmallShipMinerShip05\" xml:space=\"preserve\">\n    <value>VIRGINIA | Ship of class Virginia | Weight: 5000 kg | Max weapons: 4 | Max cargo capacity: 36</value>\n  </data>\n  <data name=\"SmallShipMinerShip06\" xml:space=\"preserve\">\n    <value>BAER | Ship of class Baer | Weight: 5500 kg | Max weapons: 4 | Max cargo capacity: 36</value>\n  </data>\n  <data name=\"SmallShipMinerShip07\" xml:space=\"preserve\">\n    <value>HEWER | Ship of class Hewer | Weight: 4300 kg | Max weapons: 2 | Max cargo capacity: 36</value>\n  </data>\n  <data name=\"SmallShipMinerShip08\" xml:space=\"preserve\">\n    <value>RAZOR CLAW | Ship of class Razor Claw | Weight: 4800 kg | Max weapons: 4 | Max cargo capacity: 36</value>\n  </data>\n  <data name=\"SmallShipMinerShip09\" xml:space=\"preserve\">\n    <value>GREISER | Ship of class Greiser | Weight: 6200 kg | Max weapons: 6 | Max cargo capacity: 36</value>\n  </data>\n  <data name=\"SmallShipMinerShip10\" xml:space=\"preserve\">\n    <value>TRACER | Ship of class Tracer | Weight: 5900 kg | Max weapons: 6 | Max cargo capacity: 36</value>\n  </data>\n  <data name=\"SmallShipOrg\" xml:space=\"preserve\">\n    <value>ORG | Ship of class Org | Weight: 9900 kg | Max weapons: 10 | Max cargo capacity: 60</value>\n  </data>\n  <data name=\"SmallShipPhoenix\" xml:space=\"preserve\">\n    <value>PHOENIX | Ship of class Phoenix | Weight: 6300 kg | Max weapons: 8 | Max cargo capacity: 24</value>\n  </data>\n  <data name=\"SmallShipRockheater\" xml:space=\"preserve\">\n    <value>ROCKHEATER | Ship of class Rockheater | Weight: 5500 kg | Max weapons: 4 | Max cargo capacity: 24</value>\n  </data>\n  <data name=\"SmallShipStanislav\" xml:space=\"preserve\">\n    <value>STANISLAV | Ship of class Stanislav | Weight: 23000 kg | Max weapons: 10 | Max cargo capacity: 60</value>\n  </data>\n  <data name=\"SmallShipSteelHead\" xml:space=\"preserve\">\n    <value>STEELHEAD | Ship of class Steelhead | Weight: 6000 kg | Max weapons: 6 | Max cargo capacity: 60</value>\n  </data>\n  <data name=\"SmallShipTalon\" xml:space=\"preserve\">\n    <value>FEDER | Ship of class Feder | Weight: 25000 kg | Max weapons: 10 | Max cargo capacity: 60</value>\n  </data>\n  <data name=\"SmallShipYg\" xml:space=\"preserve\">\n    <value>YG | Ship of class Yg | Weight: 7500 kg | Max weapons: 8 | Max cargo capacity: 24</value>\n  </data>\n  <data name=\"SmokeBombHud\" xml:space=\"preserve\">\n    <value>Smoke bomb</value>\n  </data>\n  <data name=\"SnapPointLinkError\" xml:space=\"preserve\">\n    <value>Can’t link these snap points.</value>\n  </data>\n  <data name=\"SnapPoints\" xml:space=\"preserve\">\n    <value>Snap points</value>\n  </data>\n  <data name=\"Snow_01\" xml:space=\"preserve\">\n    <value>Snow 1</value>\n  </data>\n  <data name=\"SoftenVoxels\" xml:space=\"preserve\">\n    <value>Soften voxels</value>\n  </data>\n  <data name=\"SolarSystemMap\" xml:space=\"preserve\">\n    <value>Solar system map</value>\n  </data>\n  <data name=\"SolarWindArmor\" xml:space=\"preserve\">\n    <value>SOLAR WIND ARMOR | Projectile/explosion damage reduction: 0% | Solar wind damage reduction: 100%</value>\n  </data>\n  <data name=\"SorryButSelectedSettingsAreNotSupportedByYourHardware\" xml:space=\"preserve\">\n    <value>Sorry, but the settings you have chosen are not supported by your hardware.</value>\n  </data>\n  <data name=\"SoundInfluenceSphereType\" xml:space=\"preserve\">\n    <value>Sound</value>\n  </data>\n  <data name=\"Space\" xml:space=\"preserve\">\n    <value>Space</value>\n  </data>\n  <data name=\"SpawnedBots\" xml:space=\"preserve\">\n    <value>Spawned bots</value>\n  </data>\n  <data name=\"SpawnInGroups\" xml:space=\"preserve\">\n    <value>Spawn in groups</value>\n  </data>\n  <data name=\"SpawnPoint\" xml:space=\"preserve\">\n    <value>SpawnPoint</value>\n  </data>\n  <data name=\"SpectatorPosition\" xml:space=\"preserve\">\n    <value>Spectator position:     </value>\n  </data>\n  <data name=\"SpectatorSpeedIndicator\" xml:space=\"preserve\">\n    <value>Spectator speed indicator:      </value>\n  </data>\n  <data name=\"SpecularColor\" xml:space=\"preserve\">\n    <value>Specular color</value>\n  </data>\n  <data name=\"SphereExplosiveHud\" xml:space=\"preserve\">\n    <value>Spherical explosive</value>\n  </data>\n  <data name=\"SphereFull_128\" xml:space=\"preserve\">\n    <value>Sphere Full 128</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"SphereFull_256\" xml:space=\"preserve\">\n    <value>Sphere Full 256</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"SphereFull_512\" xml:space=\"preserve\">\n    <value>Sphere Full 512</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"SphereFull_64\" xml:space=\"preserve\">\n    <value>Sphere Full 64</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"SphereWithLargeCutOut_128x128x128\" xml:space=\"preserve\">\n    <value>128x128x128\nSphere with large cut-out</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"SpotLight\" xml:space=\"preserve\">\n    <value>SpotLight</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Standard_Container_1\" xml:space=\"preserve\">\n    <value>Standard container 1</value>\n  </data>\n  <data name=\"Standard_Container_2\" xml:space=\"preserve\">\n    <value>Standard container 2</value>\n  </data>\n  <data name=\"Standard_Container_3\" xml:space=\"preserve\">\n    <value>Standard container 3</value>\n  </data>\n  <data name=\"Standard_Container_4\" xml:space=\"preserve\">\n    <value>Standard container 4</value>\n  </data>\n  <data name=\"StartedMissions\" xml:space=\"preserve\">\n    <value>Started missions</value>\n  </data>\n  <data name=\"StartGameFailed\" xml:space=\"preserve\">\n    <value>You do not have permission to start this game, or wrong input parameters.</value>\n  </data>\n  <data name=\"StartGameInProgressPleaseWait\" xml:space=\"preserve\">\n    <value>Starting game… please wait.</value>\n  </data>\n  <data name=\"Static\" xml:space=\"preserve\">\n    <value>Static</value>\n  </data>\n  <data name=\"StaticAsteroid10000m\" xml:space=\"preserve\">\n    <value>10 km</value>\n  </data>\n  <data name=\"StaticAsteroid1000m\" xml:space=\"preserve\">\n    <value>1 km</value>\n  </data>\n  <data name=\"StaticAsteroid100m\" xml:space=\"preserve\">\n    <value>100 meters</value>\n  </data>\n  <data name=\"StaticAsteroid10m\" xml:space=\"preserve\">\n    <value>10 meters</value>\n  </data>\n  <data name=\"StaticAsteroid2000m\" xml:space=\"preserve\">\n    <value>2 km</value>\n  </data>\n  <data name=\"StaticAsteroid20m\" xml:space=\"preserve\">\n    <value>20 meters</value>\n  </data>\n  <data name=\"StaticAsteroid300m\" xml:space=\"preserve\">\n    <value>300 meters</value>\n  </data>\n  <data name=\"StaticAsteroid30m\" xml:space=\"preserve\">\n    <value>30 meters</value>\n  </data>\n  <data name=\"StaticAsteroid5000m\" xml:space=\"preserve\">\n    <value>5 km</value>\n  </data>\n  <data name=\"StaticAsteroid500m\" xml:space=\"preserve\">\n    <value>500 meters</value>\n  </data>\n  <data name=\"StaticAsteroid50m\" xml:space=\"preserve\">\n    <value>50 meters</value>\n  </data>\n  <data name=\"StaticAsteroidContextMenuCaption\" xml:space=\"preserve\">\n    <value>Static asteroid</value>\n  </data>\n  <data name=\"Stone_01\" xml:space=\"preserve\">\n    <value>Stone 1</value>\n  </data>\n  <data name=\"Stone_02\" xml:space=\"preserve\">\n    <value>Stone 2</value>\n  </data>\n  <data name=\"Stone_03\" xml:space=\"preserve\">\n    <value>Stone 3</value>\n  </data>\n  <data name=\"Stone_04\" xml:space=\"preserve\">\n    <value>Stone 4</value>\n  </data>\n  <data name=\"Stone_05\" xml:space=\"preserve\">\n    <value>Stone 5</value>\n  </data>\n  <data name=\"Stone_06\" xml:space=\"preserve\">\n    <value>Stone 6</value>\n  </data>\n  <data name=\"Stone_07\" xml:space=\"preserve\">\n    <value>Stone 7</value>\n  </data>\n  <data name=\"Stone_08\" xml:space=\"preserve\">\n    <value>Stone 8</value>\n  </data>\n  <data name=\"Stone_10\" xml:space=\"preserve\">\n    <value>Stone 10</value>\n  </data>\n  <data name=\"Stone_13_Wall_01\" xml:space=\"preserve\">\n    <value>Stone 13</value>\n  </data>\n  <data name=\"StorySectorPositionYMustBeZero\" xml:space=\"preserve\">\n    <value>Story sector can be saved only when its Y coordinate is 0.</value>\n  </data>\n  <data name=\"StorySectors\" xml:space=\"preserve\">\n    <value>Story sectors</value>\n  </data>\n  <data name=\"StrafeLeft\" xml:space=\"preserve\">\n    <value>Strafe left</value>\n  </data>\n  <data name=\"StrafeRight\" xml:space=\"preserve\">\n    <value>Strafe right</value>\n  </data>\n  <data name=\"subCategoryTypeAmmunitionBox\" xml:space=\"preserve\">\n    <value>Ammunition box</value>\n  </data>\n  <data name=\"subCategoryTypeBiodome\" xml:space=\"preserve\">\n    <value>Biodome</value>\n  </data>\n  <data name=\"subCategoryTypeBridge\" xml:space=\"preserve\">\n    <value>Bridge</value>\n  </data>\n  <data name=\"subCategoryTypeCableHolders\" xml:space=\"preserve\">\n    <value>Cable holders</value>\n  </data>\n  <data name=\"subCategoryTypeConnectionBoxes\" xml:space=\"preserve\">\n    <value>Connection boxes</value>\n  </data>\n  <data name=\"subCategoryTypeDocks\" xml:space=\"preserve\">\n    <value>Docks</value>\n  </data>\n  <data name=\"subCategoryTypeEscapePods\" xml:space=\"preserve\">\n    <value>Escape pods</value>\n  </data>\n  <data name=\"subCategoryTypeFactory\" xml:space=\"preserve\">\n    <value>Factory</value>\n  </data>\n  <data name=\"subCategoryTypeFuelGeneration\" xml:space=\"preserve\">\n    <value>Fuel generation</value>\n  </data>\n  <data name=\"subCategoryTypeFuelStorage\" xml:space=\"preserve\">\n    <value>Fuel storage</value>\n  </data>\n  <data name=\"subCategoryTypeGasStorage\" xml:space=\"preserve\">\n    <value>Gas storage</value>\n  </data>\n  <data name=\"subCategoryTypeJunction\" xml:space=\"preserve\">\n    <value>Junction</value>\n  </data>\n  <data name=\"subCategoryTypeLarge\" xml:space=\"preserve\">\n    <value>Large</value>\n  </data>\n  <data name=\"subCategoryTypeLivingQuarters\" xml:space=\"preserve\">\n    <value>Living quarters</value>\n  </data>\n  <data name=\"subCategoryTypeLoadingUnloading\" xml:space=\"preserve\">\n    <value>Loading/Unloading</value>\n  </data>\n  <data name=\"subCategoryTypeLongDistanceAntenna\" xml:space=\"preserve\">\n    <value>Long distance antenna</value>\n  </data>\n  <data name=\"subCategoryTypeLongTermThrusters\" xml:space=\"preserve\">\n    <value>Long Term Thrusters</value>\n  </data>\n  <data name=\"subCategoryTypeOreStorage\" xml:space=\"preserve\">\n    <value>Ore storage</value>\n  </data>\n  <data name=\"subCategoryTypeOther\" xml:space=\"preserve\">\n    <value>Other</value>\n  </data>\n  <data name=\"subCategoryTypeOxygenGeneration\" xml:space=\"preserve\">\n    <value>Oxygen generation</value>\n  </data>\n  <data name=\"subCategoryTypeOxygenStorage\" xml:space=\"preserve\">\n    <value>Oxygen storage</value>\n  </data>\n  <data name=\"subCategoryTypePassage\" xml:space=\"preserve\">\n    <value>Passage</value>\n  </data>\n  <data name=\"subCategoryTypePowerGeneration\" xml:space=\"preserve\">\n    <value>Power generation</value>\n  </data>\n  <data name=\"subCategoryTypePowerStorage\" xml:space=\"preserve\">\n    <value>Power storage</value>\n  </data>\n  <data name=\"subCategoryTypeRefinery\" xml:space=\"preserve\">\n    <value>Refinery</value>\n  </data>\n  <data name=\"subCategoryTypeShortDistanceAntenna\" xml:space=\"preserve\">\n    <value>Short distance antenna</value>\n  </data>\n  <data name=\"subCategoryTypeShortTermThrusters\" xml:space=\"preserve\">\n    <value>Short term thrusters</value>\n  </data>\n  <data name=\"subCategoryTypeSmall\" xml:space=\"preserve\">\n    <value>Small</value>\n  </data>\n  <data name=\"subCategoryTypeStraight\" xml:space=\"preserve\">\n    <value>Straight</value>\n  </data>\n  <data name=\"subCategoryTypeTurn\" xml:space=\"preserve\">\n    <value>Turn</value>\n  </data>\n  <data name=\"subCategoryTypeWeaponMount\" xml:space=\"preserve\">\n    <value>Weapon mount</value>\n  </data>\n  <data name=\"subCategoryTypeWires\" xml:space=\"preserve\">\n    <value>Wires</value>\n  </data>\n  <data name=\"Subtitles\" xml:space=\"preserve\">\n    <value>Dialogues / subtitles</value>\n  </data>\n  <data name=\"SunSettings\" xml:space=\"preserve\">\n    <value>Sun settings</value>\n  </data>\n  <data name=\"SunSettingsTooltip\" xml:space=\"preserve\">\n    <value>Configure sun settings</value>\n  </data>\n  <data name=\"SwitchGizmoMode\" xml:space=\"preserve\">\n    <value>Switch gizmo mode</value>\n  </data>\n  <data name=\"SwitchGizmoModeTooltip\" xml:space=\"preserve\">\n    <value>Press T to move objects, R to rotate objects</value>\n  </data>\n  <data name=\"SwitchGizmoSpace\" xml:space=\"preserve\">\n    <value>Switch gizmo space</value>\n  </data>\n  <data name=\"SwitchGizmoSpaceTooltip\" xml:space=\"preserve\">\n    <value>Press Space to change gizmo transformation space (local, world)</value>\n  </data>\n  <data name=\"ChangeDroneMode\" xml:space=\"preserve\">\n    <value>Drone behavior</value>\n  </data>\n  <data name=\"PreviousTarget\" xml:space=\"preserve\">\n    <value>Previous target</value>\n  </data>\n  <data name=\"NextTarget\" xml:space=\"preserve\">\n    <value>Next target</value>\n  </data>\n  <data name=\"SwitchToPointLight\" xml:space=\"preserve\">\n    <value>Switch to point light</value>\n  </data>\n  <data name=\"SwitchToSpotLight\" xml:space=\"preserve\">\n    <value>Switch to spot light</value>\n  </data>\n  <data name=\"Systems1\" xml:space=\"preserve\">\n    <value>Systems 1</value>\n  </data>\n  <data name=\"Systems2\" xml:space=\"preserve\">\n    <value>Systems 2</value>\n  </data>\n  <data name=\"Tab\" xml:space=\"preserve\">\n    <value>Tab</value>\n  </data>\n  <data name=\"TemplateCheckpointDeleted\" xml:space=\"preserve\">\n    <value>Template checkpoint has been deleted, please start a new game</value>\n  </data>\n  <data name=\"TemporarySectorMap\" xml:space=\"preserve\">\n    <value>Sector map</value>\n  </data>\n  <data name=\"TimeBombHud\" xml:space=\"preserve\">\n    <value>Time bomb – {0}s</value>\n  </data>\n  <data name=\"TitleFailedToStartInternetBrowser\" xml:space=\"preserve\">\n    <value>Failed to start the browser.</value>\n  </data>\n  <data name=\"TitleStartNewStory\" xml:space=\"preserve\">\n    <value>Start a new story</value>\n  </data>\n  <data name=\"TitleYouCantBuild\" xml:space=\"preserve\">\n    <value>You can’t build</value>\n  </data>\n  <data name=\"ToggleSnapPoints\" xml:space=\"preserve\">\n    <value>Toggle snap points</value>\n  </data>\n  <data name=\"ToolAlienObjectDetector\" xml:space=\"preserve\">\n    <value>Alien object detector</value>\n  </data>\n  <data name=\"ToolAntiradiationMedicine\" xml:space=\"preserve\">\n    <value>ANTIRADIATION MEDICINE | Protects player against radiation \n(for about 100 seconds) and solar \nwind (about 10 waves)</value>\n  </data>\n  <data name=\"AntiradiationMedicineActive\" xml:space=\"preserve\">\n    <value>Antiradiation medicine active</value>\n  </data>\n  <data name=\"ToolAutoTargeting\" xml:space=\"preserve\">\n    <value>Auto-targeting</value>\n  </data>\n  <data name=\"ToolBoobyTrap\" xml:space=\"preserve\">\n    <value>Booby trap</value>\n  </data>\n  <data name=\"ToolExtraElectricityContainer\" xml:space=\"preserve\">\n    <value>Extra electricity container</value>\n  </data>\n  <data name=\"ToolExtraFuelContainer\" xml:space=\"preserve\">\n    <value>Extra fuel container</value>\n  </data>\n  <data name=\"ToolExtraOxygenContainer\" xml:space=\"preserve\">\n    <value>Extra oxygen container</value>\n  </data>\n  <data name=\"ToolFuelConverter\" xml:space=\"preserve\">\n    <value>Fuel converter</value>\n  </data>\n  <data name=\"ToolHealthEnhancingMedicine\" xml:space=\"preserve\">\n    <value>HEALTH ENHANCING MEDICINE | Decrease received damage to player \ndown to 20% for 30 seconds</value>\n  </data>\n  <data name=\"ActivateHealthEnhancingMedicine\" xml:space=\"preserve\">\n    <value>Activate health enhancing medicine</value>\n  </data>\n  <data name=\"ToolLaserPointer\" xml:space=\"preserve\">\n    <value>Laser pointer</value>\n  </data>\n  <data name=\"ToolMedikit\" xml:space=\"preserve\">\n    <value>MEDIKIT | Automatically heals player, 20% per second. \nIt has one parameter – remaining % of full.</value>\n  </data>\n  <data name=\"MedikitActive\" xml:space=\"preserve\">\n    <value>Medikit active</value>\n  </data>\n  <data name=\"ToolNanoRepairTool\" xml:space=\"preserve\">\n    <value>NANO REPAIR TOOL | Repairs ship, 0.4% per second to max 75%. \nUnlimited capacity and lifespan.</value>\n  </data>\n  <data name=\"ToolNightVision\" xml:space=\"preserve\">\n    <value>Night vision</value>\n  </data>\n  <data name=\"ToolOxygenConverter\" xml:space=\"preserve\">\n    <value>Oxygen converter</value>\n  </data>\n  <data name=\"ToolPerformanceEnhancingMedicine\" xml:space=\"preserve\">\n    <value>PERFORMANCE ENHANCING MEDICINE | Decrease oxygen consumption \ndown to 20% for 30 seconds</value>\n  </data>\n  <data name=\"ActivatePerformanceEnhancingMedicine\" xml:space=\"preserve\">\n    <value>Activate performance enhancing medicine</value>\n  </data>\n  <data name=\"ToolRadarJammer\" xml:space=\"preserve\">\n    <value>RADAR JAMMER | Blocks all radar transmissions in 500m \nradius, even friendly radars, so player \nwon’t distinguish friend from enemy.</value>\n  </data>\n  <data name=\"ToolRearCamera\" xml:space=\"preserve\">\n    <value>Rear / Missile camera</value>\n  </data>\n  <data name=\"ToolRemoteCamera\" xml:space=\"preserve\">\n    <value>Remote camera</value>\n  </data>\n  <data name=\"ToolRemoteCameraOnDrone\" xml:space=\"preserve\">\n    <value>Remote camera on drone</value>\n  </data>\n  <data name=\"ToolSensor\" xml:space=\"preserve\">\n    <value>Sensor</value>\n  </data>\n  <data name=\"ToolSolarPanel\" xml:space=\"preserve\">\n    <value>Solar panel</value>\n  </data>\n  <data name=\"ToolXRay\" xml:space=\"preserve\">\n    <value>X-Ray</value>\n  </data>\n  <data name=\"TorusStorySector_256x128x256\" xml:space=\"preserve\">\n    <value>256x128x256\nTorus with cave entrance</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"TorusWithManyTunnels_256x128x256\" xml:space=\"preserve\">\n    <value>256x128x256\nTorus with tunnels 2</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"TorusWithManyTunnels_2_256x128x256\" xml:space=\"preserve\">\n    <value>256x128x256\nTorus with tunnels 3</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"TorusWithSmallTunnel_256x128x256\" xml:space=\"preserve\">\n    <value>256x128x256\nTorus with tunnels 1</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"TradeResultTitle\" xml:space=\"preserve\">\n    <value>Trade result</value>\n  </data>\n  <data name=\"TradeWasCanceled\" xml:space=\"preserve\">\n    <value>Trade was canceled</value>\n  </data>\n  <data name=\"Travel\" xml:space=\"preserve\">\n    <value>Travel</value>\n  </data>\n  <data name=\"Treasure_01\" xml:space=\"preserve\">\n    <value>Treasure 1</value>\n  </data>\n  <data name=\"Treasure_02\" xml:space=\"preserve\">\n    <value>Treasure 2</value>\n  </data>\n  <data name=\"TurnOffCamera\" xml:space=\"preserve\">\n    <value>Press {0}: camera on/off, {1} {2} to switch</value>\n  </data>\n  <data name=\"UnableToLeaveSector\" xml:space=\"preserve\">\n    <value>Unable to leave the sector</value>\n  </data>\n  <data name=\"UnableToLeaveSectorMission\" xml:space=\"preserve\">\n    <value>Finish the mission before leaving the sector</value>\n  </data>\n  <data name=\"UnknownControl\" xml:space=\"preserve\">\n    <value>none</value>\n  </data>\n  <data name=\"UnlimitedTrading\" xml:space=\"preserve\">\n    <value>Unlimited trading</value>\n  </data>\n  <data name=\"UnlinkSnapPoints\" xml:space=\"preserve\">\n    <value>Unlink snap points</value>\n  </data>\n  <data name=\"Up\" xml:space=\"preserve\">\n    <value>Up</value>\n  </data>\n  <data name=\"UpThrust\" xml:space=\"preserve\">\n    <value>Up thrust</value>\n  </data>\n  <data name=\"Uranite_01\" xml:space=\"preserve\">\n    <value>Plutonium</value>\n  </data>\n  <data name=\"UseCameraCrosshair\" xml:space=\"preserve\">\n    <value>Use camera crosshair</value>\n  </data>\n  <data name=\"UseDrill\" xml:space=\"preserve\">\n    <value>Use drilling device</value>\n  </data>\n  <data name=\"UseFromHUB\" xml:space=\"preserve\">\n    <value>Use from hub</value>\n  </data>\n  <data name=\"UseHackTake\" xml:space=\"preserve\">\n    <value>Use / Hack / Take</value>\n  </data>\n  <data name=\"UseSolo\" xml:space=\"preserve\">\n    <value>Use solo</value>\n  </data>\n  <data name=\"UtilityVehicle_1\" xml:space=\"preserve\">\n    <value>Utility vehicle 1</value>\n  </data>\n  <data name=\"ValidationEmailWrong\" xml:space=\"preserve\">\n    <value>Please enter an email address in valid email format (e.g. yourname@domain.com),\nnot longer than 50 characters.</value>\n  </data>\n  <data name=\"ValidationPasswordsDoNotMatch\" xml:space=\"preserve\">\n    <value>Please enter the same password in ‘Password’ and ‘Retype password’ fields.</value>\n  </data>\n  <data name=\"ValidationPasswordWrong\" xml:space=\"preserve\">\n    <value>Please enter a password not shorter than 6 and not longer than 10 alphanumeric characters (a–z, A–Z, 0–9).</value>\n  </data>\n  <data name=\"ValidationUsername\" xml:space=\"preserve\">\n    <value>Please enter a username not shorter than 3 and not longer than 15 alphanumeric characters (a–z, A–Z, 0–9).</value>\n  </data>\n  <data name=\"ValidationUsernameAlreadyUsed\" xml:space=\"preserve\">\n    <value>This username is already taken.</value>\n  </data>\n  <data name=\"Version\" xml:space=\"preserve\">\n    <value>Version:</value>\n  </data>\n  <data name=\"VerticalIslandStorySector_128x256x128\" xml:space=\"preserve\">\n    <value>128x256x128\nVertical island tunneled</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"VerticalIsland_128x128x128\" xml:space=\"preserve\">\n    <value>128x128x128\nVertical island 1</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"VerticalIsland_128x256x128\" xml:space=\"preserve\">\n    <value>128x256x128\nVertical island 2</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"VerticalSync\" xml:space=\"preserve\">\n    <value>Vertical sync</value>\n  </data>\n  <data name=\"Video\" xml:space=\"preserve\">\n    <value>Video</value>\n  </data>\n  <data name=\"VideoMode\" xml:space=\"preserve\">\n    <value>Video mode</value>\n  </data>\n  <data name=\"VideoOptions\" xml:space=\"preserve\">\n    <value>Video options</value>\n  </data>\n  <data name=\"ViewMode\" xml:space=\"preserve\">\n    <value>View mode</value>\n  </data>\n  <data name=\"ViewModeCockpitOff\" xml:space=\"preserve\">\n    <value>Cockpit off</value>\n  </data>\n  <data name=\"ViewModeCockpitOn\" xml:space=\"preserve\">\n    <value>Cockpit on</value>\n  </data>\n  <data name=\"ViewModeThirdPerson\" xml:space=\"preserve\">\n    <value>Third person</value>\n  </data>\n  <data name=\"Voxel\" xml:space=\"preserve\">\n    <value>Voxel</value>\n  </data>\n  <data name=\"VoxelImportTest\" xml:space=\"preserve\">\n    <value>Voxel import test</value>\n  </data>\n  <data name=\"VoxelMission01_01\" xml:space=\"preserve\">\n    <value>Mission 1 voxel map 1</value>\n  </data>\n  <data name=\"VoxelMission01_02\" xml:space=\"preserve\">\n    <value>Mission 1 voxel map 2</value>\n  </data>\n  <data name=\"VoxelMission01_asteroid_big\" xml:space=\"preserve\">\n    <value>Mission01_big</value>\n  </data>\n  <data name=\"VoxelMission01_asteroid_mine\" xml:space=\"preserve\">\n    <value>Mission01_mine</value>\n  </data>\n  <data name=\"VoxelMission07_01\" xml:space=\"preserve\">\n    <value>Voxel mission 07 01</value>\n  </data>\n  <data name=\"Voxels\" xml:space=\"preserve\">\n    <value>Voxels</value>\n  </data>\n  <data name=\"VoxelStory02\" xml:space=\"preserve\">\n    <value>Voxel Asteroid Story02</value>\n  </data>\n  <data name=\"Warning\" xml:space=\"preserve\">\n    <value>Warning</value>\n  </data>\n  <data name=\"WayPoint\" xml:space=\"preserve\">\n    <value>Waypoint</value>\n  </data>\n  <data name=\"WayPointPath\" xml:space=\"preserve\">\n    <value>Waypoint path</value>\n  </data>\n  <data name=\"WaypointPathName\" xml:space=\"preserve\">\n    <value>Name</value>\n  </data>\n  <data name=\"WaypointPathNameCaption\" xml:space=\"preserve\">\n    <value>Named waypoint group</value>\n  </data>\n  <data name=\"WaypointPathNameCreateCaption\" xml:space=\"preserve\">\n    <value>Create named waypoint group</value>\n  </data>\n  <data name=\"Waypoints\" xml:space=\"preserve\">\n    <value>Waypoints</value>\n  </data>\n  <data name=\"WaypointsIgnoreDepth\" xml:space=\"preserve\">\n    <value>Waypoints visible through</value>\n  </data>\n  <data name=\"WeaponAutocannon\" xml:space=\"preserve\">\n    <value>GATLING GUN | Rate of fire: 630 rounds/min</value>\n  </data>\n  <data name=\"WeaponAutomaticRifleWithSilencer\" xml:space=\"preserve\">\n    <value>AUTOMATIC RIFLE WITH SILENCER | Rate of fire: 120 rounds/min</value>\n  </data>\n  <data name=\"WeaponCannon\" xml:space=\"preserve\">\n    <value>CANNON | Rate of fire: 120 rounds/min</value>\n  </data>\n  <data name=\"WeaponDrillingDeviceCrusher\" xml:space=\"preserve\">\n    <value>DRILLING DEVICE CRUSHER | Drills asteroids with mechanical drill head. Can be used against enemies and buildings.</value>\n  </data>\n  <data name=\"WeaponDrillingDeviceLaser\" xml:space=\"preserve\">\n    <value>Drilling device Laser</value>\n  </data>\n  <data name=\"WeaponDrillingDeviceNuclear\" xml:space=\"preserve\">\n    <value>Drilling device Nuclear</value>\n  </data>\n  <data name=\"WeaponDrillingDevicePressure\" xml:space=\"preserve\">\n    <value>Drilling device Pressure</value>\n  </data>\n  <data name=\"WeaponDrillingDeviceSaw\" xml:space=\"preserve\">\n    <value>Drilling device Saw</value>\n  </data>\n  <data name=\"WeaponDrillingDeviceThermal\" xml:space=\"preserve\">\n    <value>Drilling device Thermal</value>\n  </data>\n  <data name=\"WeaponGuidedMissileLauncher\" xml:space=\"preserve\">\n    <value>MISSILE LAUNCHER | Rate of fire: 60 rounds/min</value>\n  </data>\n  <data name=\"WeaponHarvestingDevice\" xml:space=\"preserve\">\n    <value>HARVESTING DEVICE | Harvest ore from asteroids.</value>\n  </data>\n  <data name=\"WeaponMachineGun\" xml:space=\"preserve\">\n    <value>MACHINE GUN | Rate of fire: 430 rounds/min</value>\n  </data>\n  <data name=\"Weapons\" xml:space=\"preserve\">\n    <value>Weapons</value>\n  </data>\n  <data name=\"WeaponShotgun\" xml:space=\"preserve\">\n    <value>SHOTGUN | Rate of fire: 120 rounds/min | Shoots 16–20 projectiles</value>\n  </data>\n  <data name=\"WeaponSniper\" xml:space=\"preserve\">\n    <value>SNIPER | Rate of fire: 60 rounds/min</value>\n  </data>\n  <data name=\"WeaponSpecial\" xml:space=\"preserve\">\n    <value>Weapon special</value>\n  </data>\n  <data name=\"WeaponUniversalLauncherBack\" xml:space=\"preserve\">\n    <value>BACK LAUNCHER | Rate of fire: 120 rounds/min | Universal launcher for various types of ammo and projectiles</value>\n  </data>\n  <data name=\"WeaponUniversalLauncherFront\" xml:space=\"preserve\">\n    <value>FRONT LAUNCHER | Rate of fire: 120 rounds/min | Universal launcher for various types of ammo and projectiles</value>\n  </data>\n  <data name=\"WheelControl\" xml:space=\"preserve\">\n    <value>Action menu</value>\n  </data>\n  <data name=\"Width\" xml:space=\"preserve\">\n    <value>Width</value>\n  </data>\n  <data name=\"WrinkleVoxels\" xml:space=\"preserve\">\n    <value>Wrinkle voxels</value>\n  </data>\n  <data name=\"X\" xml:space=\"preserve\">\n    <value>X</value>\n  </data>\n  <data name=\"Y\" xml:space=\"preserve\">\n    <value>Y</value>\n  </data>\n  <data name=\"Yes\" xml:space=\"preserve\">\n    <value>Yes</value>\n  </data>\n  <data name=\"YouCantAddFoundationFactory\" xml:space=\"preserve\">\n    <value>You can’t add foundation factory</value>\n  </data>\n  <data name=\"YouObtainNotification\" xml:space=\"preserve\">\n    <value>You obtain {0}</value>\n  </data>\n  <data name=\"YourSectors\" xml:space=\"preserve\">\n    <value>My sectors</value>\n  </data>\n  <data name=\"Z\" xml:space=\"preserve\">\n    <value>Z</value>\n  </data>\n  <data name=\"ZoomIn\" xml:space=\"preserve\">\n    <value>Zoom in</value>\n  </data>\n  <data name=\"ZoomOut\" xml:space=\"preserve\">\n    <value>Zoom out</value>\n  </data>\n  <data name=\"AcquireControl\" xml:space=\"preserve\">\n    <value>Acquire control</value>\n  </data>\n  <data name=\"Paste\" xml:space=\"preserve\">\n    <value>Paste</value>\n  </data>\n  <data name=\"p541_ventilator\" xml:space=\"preserve\">\n    <value>Ventilator</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"DistantGlareRandomFlashing\" xml:space=\"preserve\">\n    <value>Distant glare – random flashing</value>\n  </data>\n  <data name=\"TowerWithConcreteBlock1\" xml:space=\"preserve\">\n    <value>Twin Tower 1</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"TowerWithConcreteBlock2\" xml:space=\"preserve\">\n    <value>Twin Tower 2</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"FactionWhiteWolves\" xml:space=\"preserve\">\n    <value>White Wolves</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"NotificationExitControlled\" xml:space=\"preserve\">\n    <value>Press {0} to exit</value>\n  </data>\n  <data name=\"Warehouse\" xml:space=\"preserve\">\n    <value>Warehouse asteroid 256</value>\n  </data>\n  <data name=\"DisplayVoxelBounding\" xml:space=\"preserve\">\n    <value>Display voxel bounding</value>\n  </data>\n  <data name=\"FactionRainiers\" xml:space=\"preserve\">\n    <value>Rainiers</value>\n  </data>\n  <data name=\"Barths_moon_base\" xml:space=\"preserve\">\n    <value>Barths moon base</value>\n  </data>\n  <data name=\"Barths_moon_satelite\" xml:space=\"preserve\">\n    <value>Barths moon satelite</value>\n  </data>\n  <data name=\"Fort_valiant_base\" xml:space=\"preserve\">\n    <value>Fort valiant base 256x512x256</value>\n  </data>\n  <data name=\"Fort_valiant_dungeon\" xml:space=\"preserve\">\n    <value>Fort valiant dungeon 512x512x512</value>\n  </data>\n  <data name=\"Secret\" xml:space=\"preserve\">\n    <value>Secret</value>\n  </data>\n  <data name=\"NotificationSabotageSubmission\" xml:space=\"preserve\">\n    <value>Hold {0} to place explosives</value>\n  </data>\n  <data name=\"CountdownHacker\" xml:space=\"preserve\">\n    <value>Protect the hacker: {0}</value>\n  </data>\n  <data name=\"ToolbarAddObject\" xml:space=\"preserve\">\n    <value>  Add\nobject</value>\n  </data>\n  <data name=\"ToolbarAttachToCamera\" xml:space=\"preserve\">\n    <value>Attach\nto cam.</value>\n  </data>\n  <data name=\"ToolbarClearWholeSector\" xml:space=\"preserve\">\n    <value>Clear\n  all</value>\n  </data>\n  <data name=\"ToolbarCopySelected\" xml:space=\"preserve\">\n    <value>  Copy\nselected</value>\n  </data>\n  <data name=\"ToolbarCopyTool\" xml:space=\"preserve\">\n    <value>Copy\n tool</value>\n  </data>\n  <data name=\"ToolbarCorrectSnappedPrefabs\" xml:space=\"preserve\">\n    <value>Correct\n  snap</value>\n  </data>\n  <data name=\"ToolbarDetachFromCamera\" xml:space=\"preserve\">\n    <value>Detach\n  from\n  cam.</value>\n  </data>\n  <data name=\"ToolbarEditObjects\" xml:space=\"preserve\">\n    <value>  Edit\nobject</value>\n  </data>\n  <data name=\"ToolbarEditorGroups\" xml:space=\"preserve\">\n    <value>Prefab\ngroups</value>\n  </data>\n  <data name=\"ToolbarEditorOptions\" xml:space=\"preserve\">\n    <value>Options</value>\n  </data>\n  <data name=\"ToolbarEditorSelectAndHide\" xml:space=\"preserve\">\n    <value>   Visi.\noptions</value>\n  </data>\n  <data name=\"ToolbarEditProperties\" xml:space=\"preserve\">\n    <value> Edit\nprops.</value>\n  </data>\n  <data name=\"ToolbarEnterPrefabContainer\" xml:space=\"preserve\">\n    <value>Prefab\n cont.</value>\n  </data>\n  <data name=\"ToolbarEnterVoxelHand\" xml:space=\"preserve\">\n    <value>Voxel\nhand</value>\n  </data>\n  <data name=\"ToolbarExitEditingMode\" xml:space=\"preserve\">\n    <value>   Exit\nediting\n mode</value>\n  </data>\n  <data name=\"ToolbarExitSelected\" xml:space=\"preserve\">\n    <value>  Exit\nselect</value>\n  </data>\n  <data name=\"ToolbarExitVoxelHand\" xml:space=\"preserve\">\n    <value> Exit\nvoxel\nhand</value>\n  </data>\n  <data name=\"ToolbarHideSnapPoints\" xml:space=\"preserve\">\n    <value> Hide\n snap \npoints</value>\n  </data>\n  <data name=\"ToolbarLinkSnapPoints\" xml:space=\"preserve\">\n    <value> Link\n snap</value>\n  </data>\n  <data name=\"ToolbarLoadSector\" xml:space=\"preserve\">\n    <value> Load\nsector</value>\n  </data>\n  <data name=\"ToolbarResetRotation\" xml:space=\"preserve\">\n    <value>Reset\n  rot.</value>\n  </data>\n  <data name=\"ToolbarSaveSector\" xml:space=\"preserve\">\n    <value> Save\nsector</value>\n  </data>\n  <data name=\"ToolbarSelectAllObjects\" xml:space=\"preserve\">\n    <value>Select\n   all</value>\n  </data>\n  <data name=\"ToolbarShowSnapPoints\" xml:space=\"preserve\">\n    <value>Show\n snap\npoints</value>\n  </data>\n  <data name=\"ToolbarSwitchGizmoMode\" xml:space=\"preserve\">\n    <value>Gizmo\nmode</value>\n  </data>\n  <data name=\"ToolbarSwitchGizmoSpace\" xml:space=\"preserve\">\n    <value>Gizmo\nspace</value>\n  </data>\n  <data name=\"ToolbarToggleSnapPoints\" xml:space=\"preserve\">\n    <value>Toggle\n  snap</value>\n  </data>\n  <data name=\"ToolbarUnlinkSnapPoints\" xml:space=\"preserve\">\n    <value>Unlink\nsnap\npoints</value>\n  </data>\n  <data name=\"ToolbarWaypoints\" xml:space=\"preserve\">\n    <value> Way\npoints</value>\n  </data>\n  <data name=\"SmallShipTemplates\" xml:space=\"preserve\">\n    <value>Small ship templates</value>\n  </data>\n  <data name=\"ToolbarSmallShipTemplates\" xml:space=\"preserve\">\n    <value>Temp\nlates</value>\n  </data>\n  <data name=\"Fourth_reich_wreck\" xml:space=\"preserve\">\n    <value>4th reich wreck</value>\n  </data>\n  <data name=\"p231b01_armor\" xml:space=\"preserve\">\n    <value>Armor</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p231b01_armor_corner\" xml:space=\"preserve\">\n    <value>Armor corner</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p231b01_armor_edge\" xml:space=\"preserve\">\n    <value>Armor edge</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p231b01_armor_hole\" xml:space=\"preserve\">\n    <value>Armor hole</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p344_a03_container\" xml:space=\"preserve\">\n    <value>Cargo storage container</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p361_b01_long_distance_antenna_big\" xml:space=\"preserve\">\n    <value>Long distance antenna big</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"NewTemplateName\" xml:space=\"preserve\">\n    <value>New template name</value>\n  </data>\n  <data name=\"SaveToServer\" xml:space=\"preserve\">\n    <value>Save to server</value>\n  </data>\n  <data name=\"CannotDeleteSavedTemplate\" xml:space=\"preserve\">\n    <value>Cannot delete a template that is already saved on the server!</value>\n  </data>\n  <data name=\"Failure\" xml:space=\"preserve\">\n    <value>Failure</value>\n  </data>\n  <data name=\"YouHaveToSelect\" xml:space=\"preserve\">\n    <value>You have to select something.</value>\n  </data>\n  <data name=\"StaticAsteroid40000m\" xml:space=\"preserve\">\n    <value>40 km</value>\n  </data>\n  <data name=\"p150a01_shelf_1X3\" xml:space=\"preserve\">\n    <value>Shelf 1X3</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p150a02_shelf_1X2\" xml:space=\"preserve\">\n    <value>Shelf 1X2</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p150a03_shelf_1\" xml:space=\"preserve\">\n    <value>Shelf 1</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"CategoryTypeShelves\" xml:space=\"preserve\">\n    <value>Shelves</value>\n  </data>\n  <data name=\"RotateSnapping\" xml:space=\"preserve\">\n    <value>Rotate snapping: </value>\n  </data>\n  <data name=\"Snap15Deg\" xml:space=\"preserve\">\n    <value>15 Degrees</value>\n  </data>\n  <data name=\"Snap90Deg\" xml:space=\"preserve\">\n    <value>90 Degrees</value>\n  </data>\n  <data name=\"SnapOff\" xml:space=\"preserve\">\n    <value>Off</value>\n  </data>\n  <data name=\"Sun\" xml:space=\"preserve\">\n    <value>Sun</value>\n  </data>\n  <data name=\"Actor_Apollo\" xml:space=\"preserve\">\n    <value>Apollo</value>\n  </data>\n  <data name=\"Actor_Marcus\" xml:space=\"preserve\">\n    <value>Marcus</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Actor_EacSurveySite_MilitaryOfficer\" xml:space=\"preserve\">\n    <value>Officer</value>\n  </data>\n  <data name=\"Actor_EacSurveySite_StationOperator\" xml:space=\"preserve\">\n    <value>OPERATOR</value>\n  </data>\n  <data name=\"RadioactivityInfluenceSphereType\" xml:space=\"preserve\">\n    <value>Radioactivity</value>\n  </data>\n  <data name=\"JunkYardInhabited_256x128x256\" xml:space=\"preserve\">\n    <value>Junk Yard Inhabited 256x128x256</value>\n  </data>\n  <data name=\"JunkYardToxic_128x128x128\" xml:space=\"preserve\">\n    <value>Junk Yard Toxic 128x128x128</value>\n  </data>\n  <data name=\"GlobalEventIceCometDescription\" xml:space=\"preserve\">\n    <value>Ice comet</value>\n  </data>\n  <data name=\"GlobalEventIceCometName\" xml:space=\"preserve\">\n    <value>Ice comet</value>\n  </data>\n  <data name=\"Empty512x512x512\" xml:space=\"preserve\">\n    <value>Empty 512x512x512</value>\n  </data>\n  <data name=\"Magnitude\" xml:space=\"preserve\">\n    <value>Magnitude</value>\n  </data>\n  <data name=\"Snap45Degs\" xml:space=\"preserve\">\n    <value>45 Degrees</value>\n  </data>\n  <data name=\"device\" xml:space=\"preserve\">\n    <value>device</value>\n  </data>\n  <data name=\"TakeAll\" xml:space=\"preserve\">\n    <value>Take all</value>\n  </data>\n  <data name=\"WeaponUniversalLauncher\" xml:space=\"preserve\">\n    <value>launcher</value>\n  </data>\n  <data name=\"JunkYardForge_256x256x256\" xml:space=\"preserve\">\n    <value>Junk Yard Forge 256x256x256</value>\n  </data>\n  <data name=\"Actor_Madelyn\" xml:space=\"preserve\">\n    <value>Madelyn</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p110b03_lattice_beam_straight_420m\" xml:space=\"preserve\">\n    <value>Lattice beam straight 420m</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p110b04_lattice_beam_straight_420m_with_panels\" xml:space=\"preserve\">\n    <value>Lattice beam straight 420m with panels</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p120c02_c_straight_400m\" xml:space=\"preserve\">\n    <value>Straight 400m</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p130d02_d_straight_300m\" xml:space=\"preserve\">\n    <value>Straight 300m</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p130j01_j_straight_300m\" xml:space=\"preserve\">\n    <value>Straight 300m</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p363_a01_big_antenna_300m\" xml:space=\"preserve\">\n    <value>Big antenna 300m</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p611_asteroid_part_A\" xml:space=\"preserve\">\n    <value>Asteroid part A</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p611_asteroid_part_B\" xml:space=\"preserve\">\n    <value>Asteroid part B</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"GuiClick\" xml:space=\"preserve\">\n    <value>GuiClick</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"GuiEditorFlyOutsideBorder\" xml:space=\"preserve\">\n    <value>GuiEditorFlyOutsideBorder</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"GuiEditorObjectAttach\" xml:space=\"preserve\">\n    <value>GuiEditorObjectAttach</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"GuiEditorObjectDelete\" xml:space=\"preserve\">\n    <value>GuiEditorObjectDelete</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"GuiEditorObjectDetach\" xml:space=\"preserve\">\n    <value>GuiEditorObjectDetach</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"GuiEditorObjectMoveInvalid\" xml:space=\"preserve\">\n    <value>GuiEditorObjectMoveInvalid</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"GuiEditorObjectMoveStep\" xml:space=\"preserve\">\n    <value>GuiEditorObjectMoveStep</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"GuiEditorObjectRotateStep\" xml:space=\"preserve\">\n    <value>GuiEditorObjectRotateStep</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"GuiEditorObjectSelect\" xml:space=\"preserve\">\n    <value>GuiEditorObjectSelect</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"GuiEditorPrefabCommit\" xml:space=\"preserve\">\n    <value>GuiEditorPrefabCommit</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"GuiEditorPrefabEnter\" xml:space=\"preserve\">\n    <value>GuiEditorPrefabEnter</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"GuiEditorPrefabExit\" xml:space=\"preserve\">\n    <value>GuiEditorPrefabExit</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"GuiEditorVoxelHandAdd\" xml:space=\"preserve\">\n    <value>GuiEditorVoxelHandAdd</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"GuiEditorVoxelHandMaterial\" xml:space=\"preserve\">\n    <value>GuiEditorVoxelHandMaterial</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"GuiEditorVoxelHandRemove\" xml:space=\"preserve\">\n    <value>GuiEditorVoxelHandRemove</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"GuiEditorVoxelHandSoften\" xml:space=\"preserve\">\n    <value>GuiEditorVoxelHandSoften</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"GuiEditorVoxelHandSwitch\" xml:space=\"preserve\">\n    <value>GuiEditorVoxelHandSwitch</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"GuiMouseOver\" xml:space=\"preserve\">\n    <value>GuiMouseOver</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"GuiWheelControlClose\" xml:space=\"preserve\">\n    <value>GuiWheelControlClose</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"GuiWheelControlOpen\" xml:space=\"preserve\">\n    <value>GuiWheelControlOpen</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"MenuWelcome\" xml:space=\"preserve\">\n    <value>MenuWelcome</value>\n  </data>\n  <data name=\"GPSReminder\" xml:space=\"preserve\">\n    <value>Press {0} to highlight the path to the next objective.</value>\n  </data>\n  <data name=\"DroneCN\" xml:space=\"preserve\">\n    <value>DRONE CHINA | China drone which can do simple work (detonate \nbasic mine, detonate smart mine, detonate biochem \nmine, detonate remote bomb, detonate EMP bomb, \nlaunch smoke bomb, launch flash bomb, detonate \nsphere explosive, detonate directional explosive, \ndetonate asteroid killer</value>\n  </data>\n  <data name=\"DroneSS\" xml:space=\"preserve\">\n    <value>DRONE FOURTH REICH | Fourth Reich drone which can do simple work \n(detonate basic mine, detonate smart mine, \ndetonate biochem mine, detonate remote bomb, \ndetonate EMP bomb, launch smoke bomb, launch \nflash bomb, detonate sphere explosive, detonate \ndirectional explosive, detonate asteroid killer</value>\n  </data>\n  <data name=\"DroneUS\" xml:space=\"preserve\">\n    <value>DRONE EAC | EAC drone which can do simple work (detonate \nbasic mine, detonate smart mine, detonate biochem \nmine, detonate remote bomb, detonate EMP bomb, \nlaunch smoke bomb, launch flash bomb, detonate \nsphere explosive, detonate directional explosive, \ndetonate asteroid killer</value>\n  </data>\n  <data name=\"AimingDistance\" xml:space=\"preserve\">\n    <value>Aiming distance</value>\n  </data>\n  <data name=\"EditPrefabLargeWeapon\" xml:space=\"preserve\">\n    <value>Edit prefab large weapon</value>\n  </data>\n  <data name=\"SearchingDistance\" xml:space=\"preserve\">\n    <value>Searching distance</value>\n  </data>\n  <data name=\"Error\" xml:space=\"preserve\">\n    <value>Error</value>\n  </data>\n  <data name=\"GeneratorsRange\" xml:space=\"preserve\">\n    <value>Generators range</value>\n  </data>\n  <data name=\"LargeWeaponsRange\" xml:space=\"preserve\">\n    <value>Large weapons range</value>\n  </data>\n  <data name=\"CargoBoxType1\" xml:space=\"preserve\">\n    <value>Cargo Universal 1</value>\n  </data>\n  <data name=\"CargoBoxType10\" xml:space=\"preserve\">\n    <value>Cargo Universal 5</value>\n  </data>\n  <data name=\"CargoBoxType2\" xml:space=\"preserve\">\n    <value>Repair 1</value>\n  </data>\n  <data name=\"CargoBoxType3\" xml:space=\"preserve\">\n    <value>Medikit 1</value>\n  </data>\n  <data name=\"CargoBoxType4\" xml:space=\"preserve\">\n    <value>Cargo Universal 6</value>\n  </data>\n  <data name=\"CargoBoxType5\" xml:space=\"preserve\">\n    <value>Fuel 1</value>\n  </data>\n  <data name=\"CargoBoxType6\" xml:space=\"preserve\">\n    <value>Ammo 1</value>\n  </data>\n  <data name=\"CargoBoxType7\" xml:space=\"preserve\">\n    <value>Medikit 2</value>\n  </data>\n  <data name=\"CargoBoxType8\" xml:space=\"preserve\">\n    <value>Ammo 2</value>\n  </data>\n  <data name=\"CargoBoxType9\" xml:space=\"preserve\">\n    <value>Oxygen 1</value>\n  </data>\n  <data name=\"p321c03_centrifuge\" xml:space=\"preserve\">\n    <value>Centrifuge</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p321c04_box_generator\" xml:space=\"preserve\">\n    <value>Box Generator</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p321c05_centrifuge_big\" xml:space=\"preserve\">\n    <value>Centrifuge Big</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p363_a01_big_antenna_1500m\" xml:space=\"preserve\">\n    <value>Big Antenna 1500m</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p321c02_generator_wall_big\" xml:space=\"preserve\">\n    <value>Generator Wall Big</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"ClearAsteroidWarning\" xml:space=\"preserve\">\n    <value>Warning! You will not be able to save this asteroid to server after this operation, this is only for exporting voxels.</value>\n  </data>\n  <data name=\"Actor_Researcher1\" xml:space=\"preserve\">\n    <value>Miner Bob</value>\n  </data>\n  <data name=\"Actor_Researcher2\" xml:space=\"preserve\">\n    <value>Miner Tom</value>\n  </data>\n  <data name=\"Actor_RussianCaptain\" xml:space=\"preserve\">\n    <value>Russian captain</value>\n  </data>\n  <data name=\"Actor_RussianCF1\" xml:space=\"preserve\">\n    <value>Russian pilot</value>\n  </data>\n  <data name=\"Actor_RussianCF2\" xml:space=\"preserve\">\n    <value>Russian pilot</value>\n  </data>\n  <data name=\"Actor_RussianGeneral\" xml:space=\"preserve\">\n    <value>Russian general</value>\n  </data>\n  <data name=\"p221k01_chamber_v2\" xml:space=\"preserve\">\n    <value>Chamber v2</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p311b01_long_term_thruster\" xml:space=\"preserve\">\n    <value>Long term thruster</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p321c06_inertia_generator_B\" xml:space=\"preserve\">\n    <value>Inertia generator B</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p321c07_generator\" xml:space=\"preserve\">\n    <value>Generator</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p4221_a01_cooling_device_wall_340x400\" xml:space=\"preserve\">\n    <value>Cooling device wall 340x400</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p4222_a01_pipes_connector\" xml:space=\"preserve\">\n    <value>Pipes connector</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p4223_a01_open_pipe\" xml:space=\"preserve\">\n    <value>Open pipe</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"NotificationSkipIntroduction\" xml:space=\"preserve\">\n    <value>Press {0} to skip the introduction</value>\n  </data>\n  <data name=\"DroneFollowPlayer\" xml:space=\"preserve\">\n    <value>Follow mode. Press {0} to change</value>\n  </data>\n  <data name=\"DroneHoldPosition\" xml:space=\"preserve\">\n    <value>Stay mode. Press {0} to change</value>\n  </data>\n  <data name=\"StartingProgress\" xml:space=\"preserve\">\n    <value>Starting in progress</value>\n  </data>\n  <data name=\"PressToStartGenerator\" xml:space=\"preserve\">\n    <value>Hold {0} to start generator</value>\n  </data>\n  <data name=\"UserScale\" xml:space=\"preserve\">\n    <value>User scale</value>\n  </data>\n  <data name=\"LoadFromServer\" xml:space=\"preserve\">\n    <value>Loading from server</value>\n  </data>\n  <data name=\"Success\" xml:space=\"preserve\">\n    <value>Success</value>\n  </data>\n  <data name=\"TemplatesLoadError\" xml:space=\"preserve\">\n    <value>Load templates error!</value>\n  </data>\n  <data name=\"TemplatesLoadSuccess\" xml:space=\"preserve\">\n    <value>Load templates complete!</value>\n  </data>\n  <data name=\"TemplatesSaveError\" xml:space=\"preserve\">\n    <value>Save templates error!</value>\n  </data>\n  <data name=\"TemplatesSaveSuccess\" xml:space=\"preserve\">\n    <value>Save templates complete!</value>\n  </data>\n  <data name=\"CategoryTypeBarrels\" xml:space=\"preserve\">\n    <value>Barrels</value>\n  </data>\n  <data name=\"CargoBoxType11\" xml:space=\"preserve\">\n    <value>Fuel 2</value>\n  </data>\n  <data name=\"CargoBoxType12\" xml:space=\"preserve\">\n    <value>Repair 2</value>\n  </data>\n  <data name=\"CargoBoxTypeProp_A\" xml:space=\"preserve\">\n    <value>Oxygen 2</value>\n  </data>\n  <data name=\"CargoBoxTypeProp_B\" xml:space=\"preserve\">\n    <value>Cargo Universal 2</value>\n  </data>\n  <data name=\"CargoBoxTypeProp_C\" xml:space=\"preserve\">\n    <value>Cargo Universal 3</value>\n  </data>\n  <data name=\"Barrel_prop_A\" xml:space=\"preserve\">\n    <value>Fuel Barrel 1</value>\n  </data>\n  <data name=\"Barrel_prop_B\" xml:space=\"preserve\">\n    <value>Biohazzard Barrel 3</value>\n  </data>\n  <data name=\"Barrel_prop_C\" xml:space=\"preserve\">\n    <value>Explosive Barrel 2</value>\n  </data>\n  <data name=\"CannonBall_Capsule_1\" xml:space=\"preserve\">\n    <value>CannonBall Capsule 1</value>\n  </data>\n  <data name=\"Missile_pack01\" xml:space=\"preserve\">\n    <value>Missile pack 01</value>\n  </data>\n  <data name=\"Missile_plazma01\" xml:space=\"preserve\">\n    <value>Missile plasma 01</value>\n  </data>\n  <data name=\"Missile_stack_biochem01\" xml:space=\"preserve\">\n    <value>Missile stack biochem 01</value>\n  </data>\n  <data name=\"p581_a01_barrel_biohazard\" xml:space=\"preserve\">\n    <value>Barrel Biohazard 1</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p581_a01_barrel_biohazard_2\" xml:space=\"preserve\">\n    <value>Barrel Biohazard 2</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p581_a01_nuke_barrel\" xml:space=\"preserve\">\n    <value>Nuke Barrel 1</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p581_a01_red_barrel\" xml:space=\"preserve\">\n    <value>Explosive Barrel 1</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p581_a01_simple_barrel\" xml:space=\"preserve\">\n    <value>Plasma Barrel 1</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p581_a01_simple_barrel_2\" xml:space=\"preserve\">\n    <value>Nuke Barrel 2</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"NotificationYouCanExamineEmpty\" xml:space=\"preserve\">\n    <value>Press {0} to examine {1}</value>\n  </data>\n  <data name=\"RemoveAll\" xml:space=\"preserve\">\n    <value>Remove all</value>\n  </data>\n  <data name=\"ElectricityKit\" xml:space=\"preserve\">\n    <value>Electricity kit</value>\n  </data>\n  <data name=\"FuelKit\" xml:space=\"preserve\">\n    <value>FUEL TANK | Uses same fuel type as ship’s engine. \nExtends its storage by 100%</value>\n  </data>\n  <data name=\"HealthKit\" xml:space=\"preserve\">\n    <value>HEALTH KIT | Heals player instantly. 1% health \nfor 1% item’s amount. Ship can \ncarry more health kits</value>\n  </data>\n  <data name=\"OxygenKit\" xml:space=\"preserve\">\n    <value>OXYGEN TANK | Extends oxygen storage for another \n10 minutes worth of oxygen</value>\n  </data>\n  <data name=\"RepairKit\" xml:space=\"preserve\">\n    <value>REPAIR KIT | Repairs ship instantly. 1% ship’s \nhealth for 1% item’s amount. Ship \ncan carry more repair kits</value>\n  </data>\n  <data name=\"SavingSectorToServer\" xml:space=\"preserve\">\n    <value>Saving sector to server…</value>\n  </data>\n  <data name=\"p581_a01_o2_barrel\" xml:space=\"preserve\">\n    <value>O2 barrel</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"CargoBox_prop_D\" xml:space=\"preserve\">\n    <value>CargoBox prop D</value>\n  </data>\n  <data name=\"Nuclear_Warhead_closed\" xml:space=\"preserve\">\n    <value>Nuclear warhead closed</value>\n  </data>\n  <data name=\"Nuclear_Warhead_open\" xml:space=\"preserve\">\n    <value>Nuclear warhead open</value>\n  </data>\n  <data name=\"p581_a01_nuke_barrel_1\" xml:space=\"preserve\">\n    <value>Nuke Barrel 3</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p581_a01_simple_barrel_3\" xml:space=\"preserve\">\n    <value>Fuel Barrel 2</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"CargoBoxTypeProp_D\" xml:space=\"preserve\">\n    <value>Cargo Universal 4</value>\n  </data>\n  <data name=\"EditInventory\" xml:space=\"preserve\">\n    <value>Edit inventory</value>\n  </data>\n  <data name=\"Actor_TemplarPatriarchLamorak\" xml:space=\"preserve\">\n    <value>Patriarch Lamorak</value>\n  </data>\n  <data name=\"Actor_TemplarSirBedivere\" xml:space=\"preserve\">\n    <value>Sir Bedivere</value>\n  </data>\n  <data name=\"NotificationTakeArtifact\" xml:space=\"preserve\">\n    <value>Hold {0} to take the artifact</value>\n  </data>\n  <data name=\"p221L01_chamber_v1\" xml:space=\"preserve\">\n    <value>Chamber v1</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"PressToBuildHere\" xml:space=\"preserve\">\n    <value>Hold {0} to build a {1} here</value>\n  </data>\n  <data name=\"FactionChineseShort\" xml:space=\"preserve\">\n    <value>Chinese</value>\n  </data>\n  <data name=\"FactionChurchShort\" xml:space=\"preserve\">\n    <value>Church</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"FactionEuroamericanShort\" xml:space=\"preserve\">\n    <value>Euro-American</value>\n  </data>\n  <data name=\"FactionFourthReichShort\" xml:space=\"preserve\">\n    <value>Fourth Reich</value>\n  </data>\n  <data name=\"FactionNeutralShort\" xml:space=\"preserve\">\n    <value>Neutral</value>\n  </data>\n  <data name=\"FactionOmnicorpShort\" xml:space=\"preserve\">\n    <value>OmniCorp</value>\n  </data>\n  <data name=\"FactionRussianShort\" xml:space=\"preserve\">\n    <value>Russian</value>\n  </data>\n  <data name=\"FactionSaudiShort\" xml:space=\"preserve\">\n    <value>Arabs</value>\n  </data>\n  <data name=\"Actor_Lorraine\" xml:space=\"preserve\">\n    <value>Lorraine</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Actor_TemplarGuard\" xml:space=\"preserve\">\n    <value>Templar guard</value>\n  </data>\n  <data name=\"HealthPercentage\" xml:space=\"preserve\">\n    <value>Health %</value>\n  </data>\n  <data name=\"MessageHealthPercentageCantBeGreaterThen100\" xml:space=\"preserve\">\n    <value>Health percentage can’t be greater than 100!</value>\n  </data>\n  <data name=\"p110a06_solid_beam_straight_420m\" xml:space=\"preserve\">\n    <value>p110a06_solid_beam_straight_420m</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p221m01_chamber_bottom_v1\" xml:space=\"preserve\">\n    <value>p221m01_chamber_bottom_v1</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p221m01_chamber_center_v1\" xml:space=\"preserve\">\n    <value>p221m01_chamber_center_v1</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p221m01_chamber_top_v1\" xml:space=\"preserve\">\n    <value>p221m01_chamber_top_v1</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p321e01_solar_panel\" xml:space=\"preserve\">\n    <value>p321e01_solar_panel</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Barrel_prop_D\" xml:space=\"preserve\">\n    <value>Barrel prop D</value>\n  </data>\n  <data name=\"Barrel_prop_E\" xml:space=\"preserve\">\n    <value>Barrel prop E</value>\n  </data>\n  <data name=\"Gattling_ammo_belt\" xml:space=\"preserve\">\n    <value>Gatling ammo belt</value>\n  </data>\n  <data name=\"Missile_pack02\" xml:space=\"preserve\">\n    <value>Missile pack 02</value>\n  </data>\n  <data name=\"RequiresEnergy\" xml:space=\"preserve\">\n    <value>Requires Energy</value>\n  </data>\n  <data name=\"Actor_IndianSmuggler\" xml:space=\"preserve\">\n    <value>Indian smuggler</value>\n  </data>\n  <data name=\"Actor_SmugglerInformator\" xml:space=\"preserve\">\n    <value>Informant</value>\n  </data>\n  <data name=\"PressToCollectReward\" xml:space=\"preserve\">\n    <value>Hold {0} to collect the reward</value>\n  </data>\n  <data name=\"Transmitter\" xml:space=\"preserve\">\n    <value>Transmitter</value>\n  </data>\n  <data name=\"TransferInProgress\" xml:space=\"preserve\">\n    <value>Transfer in progress</value>\n  </data>\n  <data name=\"Console\" xml:space=\"preserve\">\n    <value>Console</value>\n  </data>\n  <data name=\"DownloadingData\" xml:space=\"preserve\">\n    <value>Downloading data</value>\n  </data>\n  <data name=\"PressToDownloadData\" xml:space=\"preserve\">\n    <value>Hold {0} to download data</value>\n  </data>\n  <data name=\"Barths_moon_camp\" xml:space=\"preserve\">\n    <value>Barths_moon_camp</value>\n  </data>\n  <data name=\"Actor_TheCrook\" xml:space=\"preserve\">\n    <value>Thomas “The Crook”</value>\n  </data>\n  <data name=\"MothershipStart\" xml:space=\"preserve\">\n    <value>Mothership start</value>\n  </data>\n  <data name=\"alien_detector_unit\" xml:space=\"preserve\">\n    <value>Alien detector unit</value>\n  </data>\n  <data name=\"p221n01_chamber_v1\" xml:space=\"preserve\">\n    <value>p221n01_chamber_v1</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p311b01_cut_thruster\" xml:space=\"preserve\">\n    <value>p311b01_cut_thruster</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p312b01_cut_thruster_lateral\" xml:space=\"preserve\">\n    <value>p312b01_cut_thruster_lateral</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p312b02_cut_thruster_latitude\" xml:space=\"preserve\">\n    <value>p312b02_cut_thruster_latitude</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p381_c01_building5\" xml:space=\"preserve\">\n    <value>p381_c01_building5</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p381_c01_building6\" xml:space=\"preserve\">\n    <value>p381_c01_building6</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p381_c01_building7\" xml:space=\"preserve\">\n    <value>p381_c01_building7</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p531_d_medic_cross\" xml:space=\"preserve\">\n    <value>p531_d_medic_cross</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"SurvivePrefabDestruction\" xml:space=\"preserve\">\n    <value>Survive prefab destruction</value>\n  </data>\n  <data name=\"IndestructibleAsteroidNotification\" xml:space=\"preserve\">\n    <value>Can’t destroy this type of asteroid</value>\n  </data>\n  <data name=\"NotificationEngineOff\" xml:space=\"preserve\">\n    <value>Engines are off. Start them from the action menu by pressing {0}</value>\n  </data>\n  <data name=\"NotificationMovementSlowdownEnabled\" xml:space=\"preserve\">\n    <value>Inertial dampeners are disabled. Press {0} to enable them</value>\n  </data>\n  <data name=\"IncommingMissileAlarm\" xml:space=\"preserve\">\n    <value>Incoming missile</value>\n  </data>\n  <data name=\"Story\" xml:space=\"preserve\">\n    <value>Story</value>\n  </data>\n  <data name=\"MessageBoxNetworkErrorCaption\" xml:space=\"preserve\">\n    <value>NETWORK ERROR</value>\n  </data>\n  <data name=\"PleaseTryAgain\" xml:space=\"preserve\">\n    <value>Please try again.</value>\n  </data>\n  <data name=\"SolarPanelsLeft\" xml:space=\"preserve\">\n    <value>Total {0}% destroyed</value>\n  </data>\n  <data name=\"Asteroid_Rift_base_bigger\" xml:space=\"preserve\">\n    <value>Rift Base Bigger</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Asteroid_Rift_base_smaller\" xml:space=\"preserve\">\n    <value>Rift Base Smaller</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"SmallShipPilotDead\" xml:space=\"preserve\">\n    <value>Dead</value>\n  </data>\n  <data name=\"p541_screen_A\" xml:space=\"preserve\">\n    <value>p541_screen_A</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p541_screen_B\" xml:space=\"preserve\">\n    <value>p541_screen_B</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p541_terminal_A\" xml:space=\"preserve\">\n    <value>p541_terminal_A</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Moving\" xml:space=\"preserve\">\n    <value>Moving</value>\n  </data>\n  <data name=\"HoldToMoveMarcus\" xml:space=\"preserve\">\n    <value>Hold {0} to move Marcus</value>\n  </data>\n  <data name=\"alien_artefact\" xml:space=\"preserve\">\n    <value>Alien artifact</value>\n  </data>\n  <data name=\"DisplayPrefabContainerAxis\" xml:space=\"preserve\">\n    <value>Display prefab container axis</value>\n  </data>\n  <data name=\"HoldToMoveWeapons\" xml:space=\"preserve\">\n    <value>Hold {0} to move weapons</value>\n  </data>\n  <data name=\"Actor_ChineseGuard\" xml:space=\"preserve\">\n    <value>Chinese guard</value>\n  </data>\n  <data name=\"Bomb\" xml:space=\"preserve\">\n    <value>Bomb</value>\n  </data>\n  <data name=\"PlacementInProgress\" xml:space=\"preserve\">\n    <value>Placement in progress</value>\n  </data>\n  <data name=\"PressToPlaceBomb\" xml:space=\"preserve\">\n    <value>Hold {0} to place the bomb</value>\n  </data>\n  <data name=\"Actor_Tarja\" xml:space=\"preserve\">\n    <value>Tarja</value>\n  </data>\n  <data name=\"DeactivatingInProgress\" xml:space=\"preserve\">\n    <value>Deactivating in progress</value>\n  </data>\n  <data name=\"PressToDeactivateNuclearHead\" xml:space=\"preserve\">\n    <value>Hold {0} to deactivate the nuclear warhead</value>\n  </data>\n  <data name=\"ParticleDummies\" xml:space=\"preserve\">\n    <value>Particle dummies</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"SafeAreaDummies\" xml:space=\"preserve\">\n    <value>Safe area dummies</value>\n  </data>\n  <data name=\"DetectorDummies\" xml:space=\"preserve\">\n    <value>Detector dummies</value>\n  </data>\n  <data name=\"Actor_RavenGirl\" xml:space=\"preserve\">\n    <value>Tarja</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Actor_RavenGuy\" xml:space=\"preserve\">\n    <value>Valentin</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"NuclearHead\" xml:space=\"preserve\">\n    <value>Nuclear warhead</value>\n  </data>\n  <data name=\"EditPrefabKinematicPartsHealthAndMaxHealth\" xml:space=\"preserve\">\n    <value>Edit prefab kinematic parts health and max health</value>\n  </data>\n  <data name=\"Destroyed\" xml:space=\"preserve\">\n    <value>Destroyed</value>\n  </data>\n  <data name=\"MessageHealthMustBeLesserOrEqualMaxHealth\" xml:space=\"preserve\">\n    <value>Health must be less or equal to max health!</value>\n  </data>\n  <data name=\"Actor_Slave\" xml:space=\"preserve\">\n    <value>Slave</value>\n  </data>\n  <data name=\"barths_moon_lab1\" xml:space=\"preserve\">\n    <value>barths_moon_lab1</value>\n  </data>\n  <data name=\"barths_moon_lab2\" xml:space=\"preserve\">\n    <value>barths_moon_lab2</value>\n  </data>\n  <data name=\"Component\" xml:space=\"preserve\">\n    <value>Component</value>\n  </data>\n  <data name=\"PressToTakeComponent\" xml:space=\"preserve\">\n    <value>Hold {0} to take the component</value>\n  </data>\n  <data name=\"TakingInProgress\" xml:space=\"preserve\">\n    <value>Taking in progress</value>\n  </data>\n  <data name=\"Radar1\" xml:space=\"preserve\">\n    <value>Radar I</value>\n  </data>\n  <data name=\"Radar2\" xml:space=\"preserve\">\n    <value>Radar II</value>\n  </data>\n  <data name=\"Radar3\" xml:space=\"preserve\">\n    <value>Radar III</value>\n  </data>\n  <data name=\"WatchMothershipHealth\" xml:space=\"preserve\">\n    <value>Mind the health of your mothership!</value>\n  </data>\n  <data name=\"Dialogue\" xml:space=\"preserve\">\n    <value>Dialogue</value>\n  </data>\n  <data name=\"DisplayHud\" xml:space=\"preserve\">\n    <value>Display HUD</value>\n  </data>\n  <data name=\"Disabled\" xml:space=\"preserve\">\n    <value>Disabled</value>\n  </data>\n  <data name=\"PressToTakeTurrets\" xml:space=\"preserve\">\n    <value>Hold {0} to take the turrets</value>\n  </data>\n  <data name=\"Turrets\" xml:space=\"preserve\">\n    <value>Turrets</value>\n  </data>\n  <data name=\"PressToHack\" xml:space=\"preserve\">\n    <value>Hold {0} to hack</value>\n  </data>\n  <data name=\"PressToPlaceDevice\" xml:space=\"preserve\">\n    <value>Hold {0} to place the transmitter device</value>\n  </data>\n  <data name=\"PressToTakeCargo\" xml:space=\"preserve\">\n    <value>Hold {0} to take cargo</value>\n  </data>\n  <data name=\"RadarJammed\" xml:space=\"preserve\">\n    <value>Radar jammer detected</value>\n  </data>\n  <data name=\"UnlockCell\" xml:space=\"preserve\">\n    <value>Hold {0} to unlock the prison cell</value>\n  </data>\n  <data name=\"HowToControlDrone\" xml:space=\"preserve\">\n    <value>Press {0} to deploy a drone\nPress {1} to control a drone</value>\n  </data>\n  <data name=\"InventoryShowAll\" xml:space=\"preserve\">\n    <value>All</value>\n  </data>\n  <data name=\"InventoryShowConsumables\" xml:space=\"preserve\">\n    <value>Medicine</value>\n  </data>\n  <data name=\"InventoryShowEquipment\" xml:space=\"preserve\">\n    <value>Engines, devices, drones, etc.</value>\n  </data>\n  <data name=\"InventoryShowGods\" xml:space=\"preserve\">\n    <value>Goods</value>\n  </data>\n  <data name=\"InventoryShowOres\" xml:space=\"preserve\">\n    <value>Ores</value>\n  </data>\n  <data name=\"InventoryShowWeapons\" xml:space=\"preserve\">\n    <value>Weapons &amp; ammo</value>\n  </data>\n  <data name=\"Actor_RaceChallenger\" xml:space=\"preserve\">\n    <value>Rainold Speedster</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Start\" xml:space=\"preserve\">\n    <value>Start!</value>\n  </data>\n  <data name=\"Unpowered\" xml:space=\"preserve\">\n    <value>Unpowered</value>\n  </data>\n  <data name=\"SandboxSectors\" xml:space=\"preserve\">\n    <value>Official sectors</value>\n  </data>\n  <data name=\"DisplayDeactivatedEntities\" xml:space=\"preserve\">\n    <value>Display deactivated entities</value>\n  </data>\n  <data name=\"rail_gun\" xml:space=\"preserve\">\n    <value>Rail gun</value>\n  </data>\n  <data name=\"p345_a01_recycle_sphere\" xml:space=\"preserve\">\n    <value>p345_a01_recycle_sphere</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"MissionFailed\" xml:space=\"preserve\">\n    <value>Mission failed</value>\n  </data>\n  <data name=\"DontShoot\" xml:space=\"preserve\">\n    <value>Do not shoot here!</value>\n  </data>\n  <data name=\"Slave\" xml:space=\"preserve\">\n    <value>Slave</value>\n  </data>\n  <data name=\"EAC_TRANSMITTER\" xml:space=\"preserve\">\n    <value>EAC transmitter Silver Foresight</value>\n  </data>\n  <data name=\"EAC_TRANSMITTER_CENTRAL_ROOM\" xml:space=\"preserve\">\n    <value>Enter the control room</value>\n  </data>\n  <data name=\"EAC_TRANSMITTER_Description\" xml:space=\"preserve\">\n    <value>Set all three satellites according to your needs.\n</value>\n  </data>\n  <data name=\"EAC_TRANSMITTER_OPEN_CARGO_DOOR\" xml:space=\"preserve\">\n    <value>Unlock outer cargo door</value>\n  </data>\n  <data name=\"EAC_TRANSMITTER_OPEN_CARGO_DOOR_Description\" xml:space=\"preserve\">\n    <value>Plant the bomb\n</value>\n  </data>\n  <data name=\"EAC_TRANSMITTER_ACTIVATE_SOLARPANELS\" xml:space=\"preserve\">\n    <value>Activate lower solar panels</value>\n  </data>\n  <data name=\"EAC_TRANSMITTER_ACTIVATE_SOLARPANELS_Description\" xml:space=\"preserve\">\n    <value>Get to the controls of the lower solar panels and activate them.\n</value>\n  </data>\n  <data name=\"EAC_TRANSMITTER_START_TRANSMISSION\" xml:space=\"preserve\">\n    <value>Start the transmission</value>\n  </data>\n  <data name=\"EAC_TRANSMITTER_START_TRANSMISSION_Description\" xml:space=\"preserve\">\n    <value>Start the transmission to triangulate the goal.\n</value>\n  </data>\n  <data name=\"EAC_TRANSMITTER_HACK_SATELLITE_A\" xml:space=\"preserve\">\n    <value>Hack satellite A</value>\n  </data>\n  <data name=\"EAC_TRANSMITTER_HACK_SATELLITE_A_Description\" xml:space=\"preserve\">\n    <value>Reprogram satellite A to use our transmission frequency.\n</value>\n  </data>\n  <data name=\"EAC_TRANSMITTER_HACK_SATELLITE_B\" xml:space=\"preserve\">\n    <value>Hack satellite B</value>\n  </data>\n  <data name=\"EAC_TRANSMITTER_HACK_SATELLITE_B_Descrption\" xml:space=\"preserve\">\n    <value>Reprogram satellite B to use our transmission frequency.\n</value>\n  </data>\n  <data name=\"EAC_TRANSMITTER_HACK_SATELLITE_C\" xml:space=\"preserve\">\n    <value>Hack satellite C</value>\n  </data>\n  <data name=\"EAC_TRANSMITTER_HACK_SATELLITE_C_Description\" xml:space=\"preserve\">\n    <value>Reprogram satellite C to use our transmission frequency.\n</value>\n  </data>\n  <data name=\"EAC_TRANSMITTER_MEETMS\" xml:space=\"preserve\">\n    <value>Return to the meeting point</value>\n  </data>\n  <data name=\"EAC_TRANSMITTER_MEETMS_Description\" xml:space=\"preserve\">\n    <value>You will be able to travel through the solar map.\n</value>\n  </data>\n  <data name=\"EAC_TRANSMITTER_OPEN_CONNECTION\" xml:space=\"preserve\">\n    <value>Open a connection to the arm part</value>\n  </data>\n  <data name=\"EAC_TRANSMITTER_OPEN_CONNECTION_Description\" xml:space=\"preserve\">\n    <value>Look for a control hub labeled ‘Solar Arm Access’.\n</value>\n  </data>\n  <data name=\"EAC_TRANSMITTER_UNLOCK_WAY_TO_SATELLITES\" xml:space=\"preserve\">\n    <value>Unlock the way to the satellites</value>\n  </data>\n  <data name=\"EAC_TRANSMITTER_UNLOCK_WAY_TO_SATELLITES_Descrption\" xml:space=\"preserve\">\n    <value>Look for a control hub labeled “Communication Access”.\n</value>\n  </data>\n  <data name=\"EAC_TRANSMITTER_CENTRAL_ROOM_Description\" xml:space=\"preserve\">\n    <value>Use stealth.\n</value>\n  </data>\n  <data name=\"EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_DESTROY\" xml:space=\"preserve\">\n    <value>Destroy aggregators</value>\n  </data>\n  <data name=\"EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_DESTROY_Description\" xml:space=\"preserve\">\n    <value>Destroy them now.\n</value>\n  </data>\n  <data name=\"EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_ESCAPE\" xml:space=\"preserve\">\n    <value>Escape</value>\n  </data>\n  <data name=\"EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_ESCAPE_Description\" xml:space=\"preserve\">\n    <value>Destroy the panel.\n</value>\n  </data>\n  <data name=\"EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_HACK\" xml:space=\"preserve\">\n    <value>Stop the autodestruction</value>\n  </data>\n  <data name=\"EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_HACK_Description\" xml:space=\"preserve\">\n    <value>Hack the alarm.\n</value>\n  </data>\n  <data name=\"EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_HELP\" xml:space=\"preserve\">\n    <value>Help Marcus</value>\n  </data>\n  <data name=\"EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_HELP_Description\" xml:space=\"preserve\">\n    <value>Crush your enemies, see them driven before you, and hear the lamentation of their women.\n</value>\n  </data>\n  <data name=\"EAC_TRANSMITTER_FIND_REPAIR\" xml:space=\"preserve\">\n    <value>Find the repair kit</value>\n  </data>\n  <data name=\"EAC_TRANSMITTER_FIND_REPAIR_Description\" xml:space=\"preserve\">\n    <value>Look in the box.\n</value>\n  </data>\n  <data name=\"EAC_TRANSMITTER_FIX_GENERATOR\" xml:space=\"preserve\">\n    <value>Fix the generator</value>\n  </data>\n  <data name=\"EAC_TRANSMITTER_FIX_GENERATOR_Descrpition\" xml:space=\"preserve\">\n    <value>The first thing to check are the fuel cells. Then try the battery-powered self-starters; change the batteries if they’re faulty.\nIf the generator starts out nicely but cuts out immediately, you might be overloading the third inlet; try to turn off some equipment and try again.\nIf the generator runs fine but doesn’t produce any voltage, you need to look for a blown fuse or a tripped in-built circuit breaker.\nFinally, check the output gain and frequency under various loads.\nTry to connect valve 42f to the outlet B and check the thermal gauge for short peaks.\nIf the measurements don’t match the values in the manual, you might have to change the exhaust system, piston rings, the governor or some of the valves.\nIf you still have problems, call a professional.\n</value>\n  </data>\n  <data name=\"EAC_TRANSMITTER_OPEN_SOLAR_ARM\" xml:space=\"preserve\">\n    <value>Open your path to the solar arm</value>\n  </data>\n  <data name=\"EAC_TRANSMITTER_OPEN_SOLAR_ARM_Description\" xml:space=\"preserve\">\n    <value>Use the hub to open the door.\n</value>\n  </data>\n  <data name=\"EAC_TRANSMITTER_RESTART_TRANSMISSION\" xml:space=\"preserve\">\n    <value>Restart the transmission</value>\n  </data>\n  <data name=\"EAC_TRANSMITTER_RESTART_TRANSMISSION_Description\" xml:space=\"preserve\">\n    <value>Use the transmitter.\n</value>\n  </data>\n  <data name=\"BuildingInProgress\" xml:space=\"preserve\">\n    <value>Building in progress</value>\n  </data>\n  <data name=\"NewMissionRecieved\" xml:space=\"preserve\">\n    <value>A new mission has been recieved</value>\n  </data>\n  <data name=\"PressToBuildTransmitter\" xml:space=\"preserve\">\n    <value>Hold {0} to build the transmitter</value>\n  </data>\n  <data name=\"HeaderHostName\" xml:space=\"preserve\">\n    <value>HOST NAME</value>\n  </data>\n  <data name=\"HeaderPing\" xml:space=\"preserve\">\n    <value>PING</value>\n  </data>\n  <data name=\"HeaderSectorName\" xml:space=\"preserve\">\n    <value>GAME NAME</value>\n  </data>\n  <data name=\"HeaderType\" xml:space=\"preserve\">\n    <value>TYPE</value>\n  </data>\n  <data name=\"HostFriendSector\" xml:space=\"preserve\">\n    <value>Host friend sec.</value>\n  </data>\n  <data name=\"HostOfficSector\" xml:space=\"preserve\">\n    <value>Host offic. sec.</value>\n  </data>\n  <data name=\"HostYourSector\" xml:space=\"preserve\">\n    <value>Host your sec.</value>\n  </data>\n  <data name=\"JoinGame\" xml:space=\"preserve\">\n    <value>Join game</value>\n  </data>\n  <data name=\"SearchGameToJoin\" xml:space=\"preserve\">\n    <value>Search game</value>\n  </data>\n  <data name=\"JoystickAxisXpos\" xml:space=\"preserve\">\n    <value>JX+</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"JoystickAxisYpos\" xml:space=\"preserve\">\n    <value>JY+</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"JoystickAxisZpos\" xml:space=\"preserve\">\n    <value>JZ+</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"JoystickRotationXpos\" xml:space=\"preserve\">\n    <value>JRX+</value>\n  </data>\n  <data name=\"JoystickRotationYpos\" xml:space=\"preserve\">\n    <value>JRY+</value>\n  </data>\n  <data name=\"JoystickRotationZpos\" xml:space=\"preserve\">\n    <value>JRZ+</value>\n  </data>\n  <data name=\"JoystickSlider1pos\" xml:space=\"preserve\">\n    <value>JS1+</value>\n  </data>\n  <data name=\"JoystickSlider2pos\" xml:space=\"preserve\">\n    <value>JS2+</value>\n  </data>\n  <data name=\"JoystickAxisXneg\" xml:space=\"preserve\">\n    <value>JX-</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"JoystickAxisYneg\" xml:space=\"preserve\">\n    <value>JY-</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"JoystickAxisZneg\" xml:space=\"preserve\">\n    <value>JZ-</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"JoystickRotationXneg\" xml:space=\"preserve\">\n    <value>JRX-</value>\n  </data>\n  <data name=\"JoystickRotationYneg\" xml:space=\"preserve\">\n    <value>JRY-</value>\n  </data>\n  <data name=\"JoystickRotationZneg\" xml:space=\"preserve\">\n    <value>JRZ-</value>\n  </data>\n  <data name=\"JoystickSlider1neg\" xml:space=\"preserve\">\n    <value>JS1-</value>\n  </data>\n  <data name=\"JoystickSlider2neg\" xml:space=\"preserve\">\n    <value>JS2-</value>\n  </data>\n  <data name=\"Send\" xml:space=\"preserve\">\n    <value>Send</value>\n  </data>\n  <data name=\"SendToAll\" xml:space=\"preserve\">\n    <value>Send to all</value>\n  </data>\n  <data name=\"SendToTeam\" xml:space=\"preserve\">\n    <value>Send to team</value>\n  </data>\n  <data name=\"PressToGiveEquipment\" xml:space=\"preserve\">\n    <value>Hold {0} to hand out your equipment</value>\n  </data>\n  <data name=\"MarucsIsLeavingForKey\" xml:space=\"preserve\">\n    <value>Marcus is leaving the party to get the other security key</value>\n  </data>\n  <data name=\"MarucsIsLeavingForTransporter\" xml:space=\"preserve\">\n    <value>Marcus is leaving the party to steal the transporter</value>\n  </data>\n  <data name=\"Artifact\" xml:space=\"preserve\">\n    <value>Artifact</value>\n  </data>\n  <data name=\"Refresh\" xml:space=\"preserve\">\n    <value>Refresh</value>\n  </data>\n  <data name=\"HeaderPlayerCount\" xml:space=\"preserve\">\n    <value>PLAYERS</value>\n  </data>\n  <data name=\"HostGame\" xml:space=\"preserve\">\n    <value>Host game</value>\n  </data>\n  <data name=\"UserInfo\" xml:space=\"preserve\">\n    <value>User info</value>\n  </data>\n  <data name=\"InfoAge\" xml:space=\"preserve\">\n    <value>Age:</value>\n  </data>\n  <data name=\"InfoDisplayName\" xml:space=\"preserve\">\n    <value>Display name:</value>\n  </data>\n  <data name=\"InfoEmail\" xml:space=\"preserve\">\n    <value>E-mail:</value>\n  </data>\n  <data name=\"InfoGender\" xml:space=\"preserve\">\n    <value>Gender:</value>\n  </data>\n  <data name=\"InfoUserName\" xml:space=\"preserve\">\n    <value>Username:</value>\n  </data>\n  <data name=\"NewMission\" xml:space=\"preserve\">\n    <value>New mission:</value>\n  </data>\n  <data name=\"UnknownSector\" xml:space=\"preserve\">\n    <value>Unknown sector</value>\n  </data>\n  <data name=\"RemoteBombHelp\" xml:space=\"preserve\">\n    <value>Press {0} to detonate all {1} bombs</value>\n  </data>\n  <data name=\"TimeBombTimer\" xml:space=\"preserve\">\n    <value>Time bomb timer</value>\n  </data>\n  <data name=\"TimeBombHelp\" xml:space=\"preserve\">\n    <value>{0} seconds – Press {1} to change</value>\n  </data>\n  <data name=\"MP_XHasBeenKilledByY\" xml:space=\"preserve\">\n    <value>{0} has been killed by {1}</value>\n  </data>\n  <data name=\"MP_XHasJoined\" xml:space=\"preserve\">\n    <value>{0} has joined the game</value>\n  </data>\n  <data name=\"MP_XHasLeft\" xml:space=\"preserve\">\n    <value>{0} has left the game</value>\n  </data>\n  <data name=\"MP_XKilledHimself\" xml:space=\"preserve\">\n    <value>{0} killed himself</value>\n  </data>\n  <data name=\"MP_YouHaveBeenKilledByX\" xml:space=\"preserve\">\n    <value>You have been killed by {0}</value>\n  </data>\n  <data name=\"MP_YouHaveKilledX\" xml:space=\"preserve\">\n    <value>You have killed {0}</value>\n  </data>\n  <data name=\"JoinGameTimeout\" xml:space=\"preserve\">\n    <value>The request has timed out</value>\n  </data>\n  <data name=\"fort_val_box_128\" xml:space=\"preserve\">\n    <value>fort_val_box_128</value>\n  </data>\n  <data name=\"PressToRepairTurret\" xml:space=\"preserve\">\n    <value>Hold {0} to repair the turret</value>\n  </data>\n  <data name=\"Asteroid_Rift\" xml:space=\"preserve\">\n    <value>Rift</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Asteroid_Rift_small_1\" xml:space=\"preserve\">\n    <value>Rift small 1</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Asteroid_Rift_small_2\" xml:space=\"preserve\">\n    <value>Rift small 2</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"SelectDeactivatedEntity\" xml:space=\"preserve\">\n    <value>Select deactivated entity</value>\n  </data>\n  <data name=\"ToolbarSelectDeactivatedEntity\" xml:space=\"preserve\">\n    <value>Select\ndeac.\nentity</value>\n  </data>\n  <data name=\"ProgressRepairing\" xml:space=\"preserve\">\n    <value>Repairing</value>\n  </data>\n  <data name=\"Turret\" xml:space=\"preserve\">\n    <value>Turret</value>\n  </data>\n  <data name=\"TravelTo\" xml:space=\"preserve\">\n    <value>Travel to {0}</value>\n  </data>\n  <data name=\"NotificationAmmoNo\" xml:space=\"preserve\">\n    <value>No ammo</value>\n  </data>\n  <data name=\"NotificationArmorNo\" xml:space=\"preserve\">\n    <value>No armor</value>\n  </data>\n  <data name=\"MarcusIsLeavingForTarja\" xml:space=\"preserve\">\n    <value>Marcus is leaving the party</value>\n  </data>\n  <data name=\"GeneratorUnderAttack\" xml:space=\"preserve\">\n    <value>Generator under attack</value>\n  </data>\n  <data name=\"RespawnPoint\" xml:space=\"preserve\">\n    <value>Respawn point</value>\n  </data>\n  <data name=\"KeysDecimal\" xml:space=\"preserve\">\n    <value>Num .</value>\n  </data>\n  <data name=\"KeysBackslash\" xml:space=\"preserve\">\n    <value>Bkslash</value>\n  </data>\n  <data name=\"KeysComma\" xml:space=\"preserve\">\n    <value>Comma</value>\n  </data>\n  <data name=\"KeysMinus\" xml:space=\"preserve\">\n    <value>Minus</value>\n  </data>\n  <data name=\"KeysOpenBracket\" xml:space=\"preserve\">\n    <value>[</value>\n  </data>\n  <data name=\"KeysCloseBracket\" xml:space=\"preserve\">\n    <value>]</value>\n  </data>\n  <data name=\"KeysPeriod\" xml:space=\"preserve\">\n    <value>Period</value>\n  </data>\n  <data name=\"KeysPipe\" xml:space=\"preserve\">\n    <value>Pipe</value>\n  </data>\n  <data name=\"KeysPlus\" xml:space=\"preserve\">\n    <value>Plus</value>\n  </data>\n  <data name=\"KeysQuestion\" xml:space=\"preserve\">\n    <value>Slash</value>\n  </data>\n  <data name=\"KeysQuotes\" xml:space=\"preserve\">\n    <value>Quote</value>\n  </data>\n  <data name=\"KeysSemicolon\" xml:space=\"preserve\">\n    <value>Colon</value>\n  </data>\n  <data name=\"KeysTilde\" xml:space=\"preserve\">\n    <value>~</value>\n  </data>\n  <data name=\"KeysMultiply\" xml:space=\"preserve\">\n    <value>Num *</value>\n  </data>\n  <data name=\"KeysDivide\" xml:space=\"preserve\">\n    <value>Num /</value>\n  </data>\n  <data name=\"KeysAdd\" xml:space=\"preserve\">\n    <value>Num +</value>\n  </data>\n  <data name=\"KeysSubtract\" xml:space=\"preserve\">\n    <value>Num −</value>\n  </data>\n  <data name=\"KeysCapsLock\" xml:space=\"preserve\">\n    <value>Caps</value>\n  </data>\n  <data name=\"KeysEnter\" xml:space=\"preserve\">\n    <value>Enter</value>\n  </data>\n  <data name=\"Backspace\" xml:space=\"preserve\">\n    <value>Backsp.</value>\n  </data>\n  <data name=\"SpecialWeapons\" xml:space=\"preserve\">\n    <value>Special weapons</value>\n  </data>\n  <data name=\"FireHologram\" xml:space=\"preserve\">\n    <value>Fire hologram</value>\n  </data>\n  <data name=\"FireHologramFront\" xml:space=\"preserve\">\n    <value>Fire hologram front</value>\n  </data>\n  <data name=\"FireHologramBack\" xml:space=\"preserve\">\n    <value>Fire hologram back</value>\n  </data>\n  <data name=\"FireBasicMine\" xml:space=\"preserve\">\n    <value>Fire basic mine</value>\n  </data>\n  <data name=\"FireBasicMineFront\" xml:space=\"preserve\">\n    <value>Fire basic mine front</value>\n  </data>\n  <data name=\"FireBasicMineBack\" xml:space=\"preserve\">\n    <value>Fire basic mine back</value>\n  </data>\n  <data name=\"FireSmartMine\" xml:space=\"preserve\">\n    <value>Fire smart mine</value>\n  </data>\n  <data name=\"FireSmartMineFront\" xml:space=\"preserve\">\n    <value>Fire smart mine front</value>\n  </data>\n  <data name=\"FireSmartMineBack\" xml:space=\"preserve\">\n    <value>Fire smart mine back</value>\n  </data>\n  <data name=\"FireFlashBomb\" xml:space=\"preserve\">\n    <value>Fire flash bomb</value>\n  </data>\n  <data name=\"FireFlashBombFront\" xml:space=\"preserve\">\n    <value>Fire flash bomb front</value>\n  </data>\n  <data name=\"FireFlashBombBack\" xml:space=\"preserve\">\n    <value>Fire flash bomb back</value>\n  </data>\n  <data name=\"FireDecoyFlare\" xml:space=\"preserve\">\n    <value>Fire decoy flare</value>\n  </data>\n  <data name=\"FireDecoyFlareFront\" xml:space=\"preserve\">\n    <value>Fire decoy flare front</value>\n  </data>\n  <data name=\"FireDecoyFlareBack\" xml:space=\"preserve\">\n    <value>Fire decoy flare back</value>\n  </data>\n  <data name=\"FireSmokeBomb\" xml:space=\"preserve\">\n    <value>Fire smoke bomb</value>\n  </data>\n  <data name=\"FireSmokeBombFront\" xml:space=\"preserve\">\n    <value>Fire smoke bomb front</value>\n  </data>\n  <data name=\"FireSmokeBombBack\" xml:space=\"preserve\">\n    <value>Fire smoke bomb back</value>\n  </data>\n  <data name=\"MP_GameHosted\" xml:space=\"preserve\">\n    <value>Multiplayer session successfully started</value>\n  </data>\n  <data name=\"MP_GameHostFailed_X\" xml:space=\"preserve\">\n    <value>Multiplayer session cannot be started, please check your internet connection and firewall.</value>\n  </data>\n  <data name=\"CantLoginEmptyUsernameOrPassword\" xml:space=\"preserve\">\n    <value>Please enter a username and password.</value>\n  </data>\n  <data name=\"prison\" xml:space=\"preserve\">\n    <value>Prison</value>\n  </data>\n  <data name=\"Actor_EAC_Police_Mothership_Commander_F\" xml:space=\"preserve\">\n    <value>EAC police commander</value>\n  </data>\n  <data name=\"Actor_EAC_Police_Mothership_Commander_M\" xml:space=\"preserve\">\n    <value>EAC police commander</value>\n  </data>\n  <data name=\"Actor_Father_Tobias_Last_Hope\" xml:space=\"preserve\">\n    <value>Father Tobias</value>\n  </data>\n  <data name=\"Actor_Fourth_Reich_Colone_2\" xml:space=\"preserve\">\n    <value>Fourth Reich colonel</value>\n  </data>\n  <data name=\"Actor_Francis_Reef\" xml:space=\"preserve\">\n    <value>Francis Reef</value>\n  </data>\n  <data name=\"Actor_Manjeet_Lata\" xml:space=\"preserve\">\n    <value>Manjeet Lata</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Actor_Mr_Stauffenberg\" xml:space=\"preserve\">\n    <value>Mr. Stauffenberg</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Actor_Thomas_Barth\" xml:space=\"preserve\">\n    <value>Thomas Barth</value>\n  </data>\n  <data name=\"Actor_White_Wolves_General_2\" xml:space=\"preserve\">\n    <value>White Wolves general</value>\n  </data>\n  <data name=\"DroneDeploy\" xml:space=\"preserve\">\n    <value>Deploy drone</value>\n  </data>\n  <data name=\"DroneControl\" xml:space=\"preserve\">\n    <value>Control drone</value>\n  </data>\n  <data name=\"ControlSecondaryCamera\" xml:space=\"preserve\">\n    <value>Control remote camera</value>\n  </data>\n  <data name=\"CycleSecondaryCamera\" xml:space=\"preserve\">\n    <value>Cycle secondary camera modes</value>\n  </data>\n  <data name=\"Items\" xml:space=\"preserve\">\n    <value>Items</value>\n  </data>\n  <data name=\"Shift\" xml:space=\"preserve\">\n    <value>Shift</value>\n  </data>\n  <data name=\"Ctrl\" xml:space=\"preserve\">\n    <value>Ctrl</value>\n  </data>\n  <data name=\"Alt\" xml:space=\"preserve\">\n    <value>Alt</value>\n  </data>\n  <data name=\"OpenHelpScreen\" xml:space=\"preserve\">\n    <value>Open help screen</value>\n  </data>\n  <data name=\"OpenCheats\" xml:space=\"preserve\">\n    <value>Open cheat screen</value>\n  </data>\n  <data name=\"SaveScreenshotToUserFolder\" xml:space=\"preserve\">\n    <value>Save screenshot to user folder</value>\n  </data>\n  <data name=\"UserFolder\" xml:space=\"preserve\">\n    <value>User folder</value>\n  </data>\n  <data name=\"PickingInProgress\" xml:space=\"preserve\">\n    <value>Taking in progress</value>\n  </data>\n  <data name=\"PressToPickItems\" xml:space=\"preserve\">\n    <value>Hold {0} to pick up items</value>\n  </data>\n  <data name=\"PressToPickSamples\" xml:space=\"preserve\">\n    <value>Hold {0} to pick up samples</value>\n  </data>\n  <data name=\"Samples\" xml:space=\"preserve\">\n    <value>Samples</value>\n  </data>\n  <data name=\"ChineseRefinery_First_128x128x128\" xml:space=\"preserve\">\n    <value>Chinese Refinery First 128x128x128</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"ChineseRefinery_Second_128x128x128\" xml:space=\"preserve\">\n    <value>Chinese Refinery Second 128x128x128</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"ChineseRefinery_Third_128x256x128\" xml:space=\"preserve\">\n    <value>Chinese Refinery Third 128x256x128</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Chinese_Corridor_Last_126x126x126\" xml:space=\"preserve\">\n    <value>Chinese Corridor Last 126x126x126</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Chinese_Corridor_Tunnel_256x256x256\" xml:space=\"preserve\">\n    <value>Chinese Corridor Tunnel 256x256x256</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Junkyard_RaceAsteroid_256x256x256\" xml:space=\"preserve\">\n    <value>Junkyard Race 2 256x256x256</value>\n  </data>\n  <data name=\"Junkyard_Race_256x256x256\" xml:space=\"preserve\">\n    <value>Junkyard Race 256x256x256</value>\n  </data>\n  <data name=\"DataTransfer\" xml:space=\"preserve\">\n    <value>Data transfer</value>\n  </data>\n  <data name=\"PressToDownloadBluePrints\" xml:space=\"preserve\">\n    <value>Hold {0} to download the blueprints</value>\n  </data>\n  <data name=\"PressToTakeBio\" xml:space=\"preserve\">\n    <value>Hold {0} to take the biomachine parts</value>\n  </data>\n  <data name=\"vendor\" xml:space=\"preserve\">\n    <value>Vendor</value>\n  </data>\n  <data name=\"MerchantArmy\" xml:space=\"preserve\">\n    <value>Merchant Army</value>\n  </data>\n  <data name=\"MerchantBlueprint\" xml:space=\"preserve\">\n    <value>Merchant Blueprint</value>\n  </data>\n  <data name=\"InventoryTemplates\" xml:space=\"preserve\">\n    <value>Inventory templates</value>\n  </data>\n  <data name=\"MerchantMedicine\" xml:space=\"preserve\">\n    <value>Merchant Medicine</value>\n  </data>\n  <data name=\"MerchantMixed\" xml:space=\"preserve\">\n    <value>Merchant Mixed</value>\n  </data>\n  <data name=\"PriceCoeficient\" xml:space=\"preserve\">\n    <value>Price coefficient</value>\n  </data>\n  <data name=\"MerchantTools\" xml:space=\"preserve\">\n    <value>Merchant Tools</value>\n  </data>\n  <data name=\"MessagePriceCoeficientMustBeGreaterThanOrEqualToOne\" xml:space=\"preserve\">\n    <value>The price coefficient must be greater than or equal to 1!</value>\n  </data>\n  <data name=\"MessageYouMustSetPriceCoeficient\" xml:space=\"preserve\">\n    <value>You must set the price coefficient!</value>\n  </data>\n  <data name=\"DoNotGoThere\" xml:space=\"preserve\">\n    <value>Don’t go there!</value>\n  </data>\n  <data name=\"HurryUp\" xml:space=\"preserve\">\n    <value>Hurry up, don’t let him fly away!</value>\n  </data>\n  <data name=\"PressToCollectCargo\" xml:space=\"preserve\">\n    <value>Hold {0} to collect cargo</value>\n  </data>\n  <data name=\"HoldToPlantCargo\" xml:space=\"preserve\">\n    <value>Hold {0} to plant cargo</value>\n  </data>\n  <data name=\"SlowDown\" xml:space=\"preserve\">\n    <value>Slow down, don’t let him notice you!</value>\n  </data>\n  <data name=\"JoiningGame\" xml:space=\"preserve\">\n    <value>Joining game… please wait</value>\n  </data>\n  <data name=\"AllowEnter\" xml:space=\"preserve\">\n    <value>Allow</value>\n  </data>\n  <data name=\"DenyEnter\" xml:space=\"preserve\">\n    <value>Deny</value>\n  </data>\n  <data name=\"ApplyingPleaseWait\" xml:space=\"preserve\">\n    <value>Applying changes… please wait</value>\n  </data>\n  <data name=\"Bioresearch\" xml:space=\"preserve\">\n    <value>Bioresearch asteroid 256</value>\n  </data>\n  <data name=\"NotificationOxygenLeaking\" xml:space=\"preserve\">\n    <value>Oxygen leaking</value>\n  </data>\n  <data name=\"HudOxygenLeakingWarning\" xml:space=\"preserve\">\n    <value>HudOxygenLeakingWarning</value>\n  </data>\n  <data name=\"OtherSide\" xml:space=\"preserve\">\n    <value>Other side</value>\n  </data>\n  <data name=\"Close\" xml:space=\"preserve\">\n    <value>Close</value>\n  </data>\n  <data name=\"many2_small_asteroids\" xml:space=\"preserve\">\n    <value>many2_small_asteroids</value>\n  </data>\n  <data name=\"many_medium_asteroids\" xml:space=\"preserve\">\n    <value>many_medium_asteroids</value>\n  </data>\n  <data name=\"many_small_asteroids\" xml:space=\"preserve\">\n    <value>many_small_asteroids</value>\n  </data>\n  <data name=\"rus_attack\" xml:space=\"preserve\">\n    <value>rus_attack</value>\n  </data>\n  <data name=\"small2_asteroids\" xml:space=\"preserve\">\n    <value>small2_asteroids</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"small3_asteroids\" xml:space=\"preserve\">\n    <value>small3_asteroids</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"TarjaAndValentinStaying\" xml:space=\"preserve\">\n    <value>Tarja and Valentin are staying in the cargo bay</value>\n  </data>\n  <data name=\"MPChatTeamMessagePrefix\" xml:space=\"preserve\">\n    <value>[TEAM] </value>\n  </data>\n  <data name=\"NotificationYouCantExamine\" xml:space=\"preserve\">\n    <value>You can’t interact with {0} because it’s accessed by another player</value>\n  </data>\n  <data name=\"SwitchInHUBTurrets\" xml:space=\"preserve\">\n    <value>Press {0}/{1} to switch between turrets</value>\n  </data>\n  <data name=\"SwitchInHUBCameras\" xml:space=\"preserve\">\n    <value>Press {0}/{1} to switch between cameras</value>\n  </data>\n  <data name=\"GameOverInstructionsPart2\" xml:space=\"preserve\">\n    <value>Press Enter to return to the last checkpoint</value>\n  </data>\n  <data name=\"military_baseAsteroid\" xml:space=\"preserve\">\n    <value>Military Base Asteroid</value>\n  </data>\n  <data name=\"mothership_facilityAsteroid\" xml:space=\"preserve\">\n    <value>MotherShip Facility Asteroid</value>\n  </data>\n  <data name=\"research_vesselAsteroid\" xml:space=\"preserve\">\n    <value>Research Vessel Asteroid</value>\n  </data>\n  <data name=\"RussianWarehouseAsteroid\" xml:space=\"preserve\">\n    <value>Russian Warehouse Asteroid</value>\n  </data>\n  <data name=\"slaver_baseAsteroid\" xml:space=\"preserve\">\n    <value>Slaver base asteroid</value>\n  </data>\n  <data name=\"reef_ast\" xml:space=\"preserve\">\n    <value>reef_ast</value>\n  </data>\n  <data name=\"JoinRequest\" xml:space=\"preserve\">\n    <value>{0} wants to join.</value>\n  </data>\n  <data name=\"Remember\" xml:space=\"preserve\">\n    <value>Remember</value>\n  </data>\n  <data name=\"JoinRequestTitle\" xml:space=\"preserve\">\n    <value>Join request</value>\n  </data>\n  <data name=\"LabelEnableTextsDrawing\" xml:space=\"preserve\">\n    <value>Show text info</value>\n  </data>\n  <data name=\"JoinModeClosed\" xml:space=\"preserve\">\n    <value>Closed</value>\n  </data>\n  <data name=\"JoinModeStateOpen\" xml:space=\"preserve\">\n    <value>Game runs in coop mode.</value>\n  </data>\n  <data name=\"JoinModeOpen\" xml:space=\"preserve\">\n    <value>Open</value>\n  </data>\n  <data name=\"hopebase512\" xml:space=\"preserve\">\n    <value>hopebase512</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"hopefood128\" xml:space=\"preserve\">\n    <value>hopefood128</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"hopevault128\" xml:space=\"preserve\">\n    <value>hopevault128</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"MP_HostDisconnected\" xml:space=\"preserve\">\n    <value>Host has shut down the game, you will be returned to the main menu</value>\n  </data>\n  <data name=\"MP_HostDisconnectedCaption\" xml:space=\"preserve\">\n    <value>Game has shut down</value>\n  </data>\n  <data name=\"Actor_Rift_Operator\" xml:space=\"preserve\">\n    <value>RIFT–SION OPERATOR</value>\n  </data>\n  <data name=\"Actor_Rift_Tourist\" xml:space=\"preserve\">\n    <value>Tourist office</value>\n  </data>\n  <data name=\"InvalidFaction\" xml:space=\"preserve\">\n    <value>Invalid faction</value>\n  </data>\n  <data name=\"PleaseSelectValidFaction\" xml:space=\"preserve\">\n    <value>Please select a valid faction (other than ‘None’)</value>\n  </data>\n  <data name=\"ScoreDeaths\" xml:space=\"preserve\">\n    <value>DEATHS</value>\n  </data>\n  <data name=\"ScoreKills\" xml:space=\"preserve\">\n    <value>KILLS</value>\n  </data>\n  <data name=\"ScoreName\" xml:space=\"preserve\">\n    <value>NAME</value>\n  </data>\n  <data name=\"ScorePing\" xml:space=\"preserve\">\n    <value>PING</value>\n  </data>\n  <data name=\"NotificationNonTradeableItem\" xml:space=\"preserve\">\n    <value>This item cannot be traded!</value>\n  </data>\n  <data name=\"BoardingInProgress\" xml:space=\"preserve\">\n    <value>Boarding in progress</value>\n  </data>\n  <data name=\"PressToBoardShip\" xml:space=\"preserve\">\n    <value>Hold {0} to board the ship</value>\n  </data>\n  <data name=\"Chinese_Transmitter_Asteroid\" xml:space=\"preserve\">\n    <value>Chinese_Transmitter_Asteroid</value>\n  </data>\n  <data name=\"New_Jerusalem_Asteroid\" xml:space=\"preserve\">\n    <value>New_Jerusalem_Asteroid</value>\n  </data>\n  <data name=\"Slaver_Base_2_Asteroid\" xml:space=\"preserve\">\n    <value>Slaver_Base_2_Asteroid</value>\n  </data>\n  <data name=\"Small_Pirate_Base_2_Asteroid\" xml:space=\"preserve\">\n    <value>Small_Pirate_Base_2_Asteroid</value>\n  </data>\n  <data name=\"Small_Pirate_Base_Asteroid\" xml:space=\"preserve\">\n    <value>Small_Pirate_Base_Asteroid</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Solar_Factory_EAC_Asteroid\" xml:space=\"preserve\">\n    <value>Solar_Factory_EAC_Asteroid</value>\n  </data>\n  <data name=\"BuyFor\" xml:space=\"preserve\">\n    <value>Buy for </value>\n  </data>\n  <data name=\"SellFor\" xml:space=\"preserve\">\n    <value>Sell for </value>\n  </data>\n  <data name=\"GameOverInstructionsPart2MP\" xml:space=\"preserve\">\n    <value>Wait for host</value>\n  </data>\n  <data name=\"JoinModeStateClosed\" xml:space=\"preserve\">\n    <value>Game runs in singleplayer mode.</value>\n  </data>\n  <data name=\"WeaponCIWS\" xml:space=\"preserve\">\n    <value>CIWS</value>\n  </data>\n  <data name=\"Door\" xml:space=\"preserve\">\n    <value>Door</value>\n  </data>\n  <data name=\"FreeRoaming\" xml:space=\"preserve\">\n    <value>Free-roaming</value>\n  </data>\n  <data name=\"MP_XKilled\" xml:space=\"preserve\">\n    <value>{0} was killed</value>\n  </data>\n  <data name=\"MP_YouHaveBeenKilled\" xml:space=\"preserve\">\n    <value>You have been killed</value>\n  </data>\n  <data name=\"MP_YouHaveKilledYourself\" xml:space=\"preserve\">\n    <value>You have killed yourself</value>\n  </data>\n  <data name=\"Placement\" xml:space=\"preserve\">\n    <value>Placement</value>\n  </data>\n  <data name=\"p511_a17_billboard_portrait_1\" xml:space=\"preserve\">\n    <value>p511_a17_billboard_portrait_1</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"CargoBoxDroppedItems\" xml:space=\"preserve\">\n    <value>Small cargo box for items dropped from inventory</value>\n  </data>\n  <data name=\"Mines_Asteroid\" xml:space=\"preserve\">\n    <value>Mines_Asteroid</value>\n  </data>\n  <data name=\"Small_Pirate_Base_3_1\" xml:space=\"preserve\">\n    <value>Small_Pirate_Base_3_1</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Small_Pirate_Base_3_2\" xml:space=\"preserve\">\n    <value>Small_Pirate_Base_3_2</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Small_Pirate_Base_3_3\" xml:space=\"preserve\">\n    <value>Small_Pirate_Base_3_3</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Voxel_Arena_Tunnels\" xml:space=\"preserve\">\n    <value>Voxel_Arena_Tunnels</value>\n  </data>\n  <data name=\"madeline_mothership_sound\" xml:space=\"preserve\">\n    <value>madeline_mothership_sound</value>\n  </data>\n  <data name=\"mothership_sound\" xml:space=\"preserve\">\n    <value>mothership_sound</value>\n  </data>\n  <data name=\"DeployingInProgress\" xml:space=\"preserve\">\n    <value>Deploying in progress</value>\n  </data>\n  <data name=\"ProbePlacement\" xml:space=\"preserve\">\n    <value>Probe placement</value>\n  </data>\n  <data name=\"DetectorPlacement\" xml:space=\"preserve\">\n    <value>Detector placement</value>\n  </data>\n  <data name=\"NotificationNoOxygen\" xml:space=\"preserve\">\n    <value>No oxygen</value>\n  </data>\n  <data name=\"Female\" xml:space=\"preserve\">\n    <value>Female</value>\n  </data>\n  <data name=\"Male\" xml:space=\"preserve\">\n    <value>Male</value>\n  </data>\n  <data name=\"InfoAffClick\" xml:space=\"preserve\">\n    <value>Affiliate URL unique clicks:</value>\n  </data>\n  <data name=\"InfoAffReg\" xml:space=\"preserve\">\n    <value>Affiliate URL registrations:</value>\n  </data>\n  <data name=\"InfoContributions\" xml:space=\"preserve\">\n    <value>Contributions:</value>\n  </data>\n  <data name=\"InfoDescription\" xml:space=\"preserve\">\n    <value>Description:</value>\n  </data>\n  <data name=\"InfoForumPosts\" xml:space=\"preserve\">\n    <value>Forum posts:</value>\n  </data>\n  <data name=\"InfoGameLogin\" xml:space=\"preserve\">\n    <value>Last game log in:</value>\n  </data>\n  <data name=\"InfoQualificationPoints\" xml:space=\"preserve\">\n    <value>Qualification points:</value>\n  </data>\n  <data name=\"InfoRegistered\" xml:space=\"preserve\">\n    <value>Registered: </value>\n  </data>\n  <data name=\"InfoWebLogin\" xml:space=\"preserve\">\n    <value>Last website log in:</value>\n  </data>\n  <data name=\"InventoryCapacityLabel\" xml:space=\"preserve\">\n    <value>{0} / {1}</value>\n  </data>\n  <data name=\"NotificationHostLoadingSector\" xml:space=\"preserve\">\n    <value>Host is loading the sector. Please wait.</value>\n  </data>\n  <data name=\"DisconnectQuestion\" xml:space=\"preserve\">\n    <value>Disconnect?</value>\n  </data>\n  <data name=\"DoYouWantToDisconnect\" xml:space=\"preserve\">\n    <value>Do you want to disconnect from game?</value>\n  </data>\n  <data name=\"EACSurvaySmaller_256_256_256\" xml:space=\"preserve\">\n    <value>EAC Survey Smaller</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"EACSurveyBigger_512_256_256\" xml:space=\"preserve\">\n    <value>EAC Survey bigger</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Laika1_128_128_128\" xml:space=\"preserve\">\n    <value>Laika Asteroid 1</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Laika2_64_64_64\" xml:space=\"preserve\">\n    <value>Laika Asteroid 2</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Laika3_64_64_64\" xml:space=\"preserve\">\n    <value>Laika Asteroid3</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Laika4_256_128_128\" xml:space=\"preserve\">\n    <value>Laika Asteroid 4</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Laika5_128_128_128\" xml:space=\"preserve\">\n    <value>Laika Asteroid 5</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Laika6_64_64_64\" xml:space=\"preserve\">\n    <value>Laika Asteroid 6</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Laika7_64_64_64\" xml:space=\"preserve\">\n    <value>Laika Asteroid 7</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Laika8_128_128_128\" xml:space=\"preserve\">\n    <value>Laika Asteroid 8</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Laika9_128_128_128\" xml:space=\"preserve\">\n    <value>Laika Asteroid 9</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Novaja_Zemlja\" xml:space=\"preserve\">\n    <value>Novaja_Zemlja</value>\n  </data>\n  <data name=\"Sht_Reich_JE_ForTheFuture\" xml:space=\"preserve\">\n    <value>Sht_Reich_JE_ForTheFuture</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Sht_Reich_JE_Vanquish\" xml:space=\"preserve\">\n    <value>Sht_Reich_JE_Vanquish</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Sht_Reich_JE_WeControl\" xml:space=\"preserve\">\n    <value>Sht_Reich_JE_WeControl</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Sht_Reich_JE_YouAreTheWeakLink\" xml:space=\"preserve\">\n    <value>Sht_Reich_JE_YouAreTheWeakLink</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Sht_Reich_JE_YourFinalDay\" xml:space=\"preserve\">\n    <value>Sht_Reich_JE_YourFinalDay</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"ShouterReichJE\" xml:space=\"preserve\">\n    <value>Fourth Reich pilot</value>\n  </data>\n  <data name=\"RUSSIAN_TRANSMITTER\" xml:space=\"preserve\">\n    <value>Russian transmitter</value>\n  </data>\n  <data name=\"RUSSIAN_TRANSMITTER_Description\" xml:space=\"preserve\">\n    <value>Enter the outpost, sabotage electricity and place a device on the transmitter.\n</value>\n  </data>\n  <data name=\"ChineseOfficer\" xml:space=\"preserve\">\n    <value>Chinese officer</value>\n  </data>\n  <data name=\"ShouterRussianJE\" xml:space=\"preserve\">\n    <value>Russian pilot</value>\n  </data>\n  <data name=\"Actor_RussianGeneral_Headquarters\" xml:space=\"preserve\">\n    <value>Rec – Headquarters</value>\n  </data>\n  <data name=\"Actor_RussianGeneral_Recording\" xml:space=\"preserve\">\n    <value>Rec – General</value>\n  </data>\n  <data name=\"Volodia\" xml:space=\"preserve\">\n    <value>Volodia</value>\n  </data>\n  <data name=\"VolodiaStranger\" xml:space=\"preserve\">\n    <value>Stranger</value>\n  </data>\n  <data name=\"SlaverBaseCaptain\" xml:space=\"preserve\">\n    <value>Slaver base captain</value>\n  </data>\n  <data name=\"FindEntityByID\" xml:space=\"preserve\">\n    <value>Find\nentity\nby ID</value>\n  </data>\n  <data name=\"WrongNumberFormat\" xml:space=\"preserve\">\n    <value>Wrong number format</value>\n  </data>\n  <data name=\"Find\" xml:space=\"preserve\">\n    <value>Find</value>\n  </data>\n  <data name=\"PrisonCell\" xml:space=\"preserve\">\n    <value>Prison cell</value>\n  </data>\n  <data name=\"UnlockingInProgress\" xml:space=\"preserve\">\n    <value>Unlocking in progress</value>\n  </data>\n  <data name=\"MessageAreYouSureYouWantLoadCheckpoint\" xml:space=\"preserve\">\n    <value>Are you sure you want to return to the last checkpoint?</value>\n  </data>\n  <data name=\"Null\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"RUSSIAN_TRANSMITTER_BACK_TO_MADELYN\" xml:space=\"preserve\">\n    <value>Return back to Madelyn</value>\n  </data>\n  <data name=\"RUSSIAN_TRANSMITTER_BACK_TO_MADELYN_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"RUSSIAN_TRANSMITTER_BACK_TO_TRANSMITTER\" xml:space=\"preserve\">\n    <value>Fly back to the transmitter</value>\n  </data>\n  <data name=\"RUSSIAN_TRANSMITTER_BACK_TO_TRANSMITTER_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"RUSSIAN_TRANSMITTER_DECRYPT_FREQUENCY\" xml:space=\"preserve\">\n    <value>Hack the hub to decrypt the frequency</value>\n  </data>\n  <data name=\"RUSSIAN_TRANSMITTER_DECRYPT_FREQUENCY_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"RUSSIAN_TRANSMITTER_ENTER_THE_BASE\" xml:space=\"preserve\">\n    <value>Enter the base</value>\n  </data>\n  <data name=\"RUSSIAN_TRANSMITTER_ENTER_THE_BASE_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"RUSSIAN_TRANSMITTER_FIGHT_RUSSIAN_COMMANDO\" xml:space=\"preserve\">\n    <value>Fight the Russian commando</value>\n  </data>\n  <data name=\"RUSSIAN_TRANSMITTER_FIGHT_RUSSIAN_COMMANDO_Description\" xml:space=\"preserve\">\n    <value>Try not to die.\n</value>\n  </data>\n  <data name=\"RUSSIAN_TRANSMITTER_FIND_FREQUENCY\" xml:space=\"preserve\">\n    <value>Find out the transmission frequency</value>\n  </data>\n  <data name=\"RUSSIAN_TRANSMITTER_FIND_FREQUENCY_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"RUSSIAN_TRANSMITTER_FIND_MAIN_ROOM_ENTRANCE\" xml:space=\"preserve\">\n    <value>Find the main room entrance</value>\n  </data>\n  <data name=\"RUSSIAN_TRANSMITTER_FIND_MAIN_ROOM_ENTRANCE_Description\" xml:space=\"preserve\">\n    <value>The transmitter is supposedly there.\n</value>\n  </data>\n  <data name=\"RUSSIAN_TRANSMITTER_MEET_STRANGER\" xml:space=\"preserve\">\n    <value>Meet the stranger</value>\n  </data>\n  <data name=\"RUSSIAN_TRANSMITTER_MEET_STRANGER_Description\" xml:space=\"preserve\">\n    <value>Answer the strangers’ call and find him.\n</value>\n  </data>\n  <data name=\"RUSSIAN_TRANSMITTER_OPEN_DOORS\" xml:space=\"preserve\">\n    <value>Use the hub to open doors</value>\n  </data>\n  <data name=\"RUSSIAN_TRANSMITTER_OPEN_DOORS_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"RUSSIAN_TRANSMITTER_PLACE_DEVICE_ON_TRANSMITTER\" xml:space=\"preserve\">\n    <value>Place the device on the transmitter</value>\n  </data>\n  <data name=\"RUSSIAN_TRANSMITTER_PLACE_DEVICE_ON_TRANSMITTER_Description\" xml:space=\"preserve\">\n    <value>Start the broadcast of your triangulation signal.\n</value>\n  </data>\n  <data name=\"RUSSIAN_TRANSMITTER_REACH_SIDE_ENTRANCE\" xml:space=\"preserve\">\n    <value>Reach the side entrance</value>\n  </data>\n  <data name=\"RUSSIAN_TRANSMITTER_REACH_SIDE_ENTRANCE_Description\" xml:space=\"preserve\">\n    <value>Reach side entrance – there are too many turrets at the transmitter!\n</value>\n  </data>\n  <data name=\"RUSSIAN_TRANSMITTER_REACH_WAREHOUSE\" xml:space=\"preserve\">\n    <value>Reach the warehouse</value>\n  </data>\n  <data name=\"RUSSIAN_TRANSMITTER_REACH_WAREHOUSE_Description\" xml:space=\"preserve\">\n    <value>Reach the Russian military warehouse.\n</value>\n  </data>\n  <data name=\"RUSSIAN_TRANSMITTER_STEAL_MILITARY_SUPPLY\" xml:space=\"preserve\">\n    <value>Steal the military supplies</value>\n  </data>\n  <data name=\"RUSSIAN_TRANSMITTER_STEAL_MILITARY_SUPPLY_Description\" xml:space=\"preserve\">\n    <value>Steal supplies from the warehouse.\n</value>\n  </data>\n  <data name=\"RUSSIAN_TRANSMITTER_TRADE_WITH_VOLODIA\" xml:space=\"preserve\">\n    <value>Trade with Volodia</value>\n  </data>\n  <data name=\"RUSSIAN_TRANSMITTER_TRADE_WITH_VOLODIA_Description\" xml:space=\"preserve\">\n    <value>Take the military supplies back to Volodia. He’s inside the solar powerplant mothership.</value>\n  </data>\n  <data name=\"RUSSIAN_TRANSMITTER_UPLOAD_DATA\" xml:space=\"preserve\">\n    <value>Upload triangulation data</value>\n  </data>\n  <data name=\"RUSSIAN_TRANSMITTER_UPLOAD_DATA_Description\" xml:space=\"preserve\">\n    <value>Prepare for the broadcast.</value>\n  </data>\n  <data name=\"Blondi\" xml:space=\"preserve\">\n    <value>Blondi</value>\n  </data>\n  <data name=\"Raider\" xml:space=\"preserve\">\n    <value>Raider</value>\n  </data>\n  <data name=\"Cedric\" xml:space=\"preserve\">\n    <value>Captain Cedric</value>\n  </data>\n  <data name=\"GateKeeper\" xml:space=\"preserve\">\n    <value>Gatekeeper</value>\n  </data>\n  <data name=\"SlaverLeader\" xml:space=\"preserve\">\n    <value>Slaver leader</value>\n  </data>\n  <data name=\"Captive\" xml:space=\"preserve\">\n    <value>Captive</value>\n  </data>\n  <data name=\"CaptivePilot\" xml:space=\"preserve\">\n    <value>Captive pilot</value>\n  </data>\n  <data name=\"NotificationRadiationCritical\" xml:space=\"preserve\">\n    <value>Radiation critical</value>\n  </data>\n  <data name=\"WaltherStaufenberg\" xml:space=\"preserve\">\n    <value>Walther von Stauffenberg</value>\n  </data>\n  <data name=\"Erhard\" xml:space=\"preserve\">\n    <value>Erhard</value>\n  </data>\n  <data name=\"TransporterCaptain\" xml:space=\"preserve\">\n    <value>Transporter captain</value>\n  </data>\n  <data name=\"FORCaptain\" xml:space=\"preserve\">\n    <value>Fourth Reich captain</value>\n  </data>\n  <data name=\"ChinesePilot\" xml:space=\"preserve\">\n    <value>Chinese pilot</value>\n  </data>\n  <data name=\"RaiderLeader\" xml:space=\"preserve\">\n    <value>Raider leader</value>\n  </data>\n  <data name=\"RaiderNavigator\" xml:space=\"preserve\">\n    <value>Raider navigator</value>\n  </data>\n  <data name=\"ALIEN_GATE\" xml:space=\"preserve\">\n    <value>Alien artifact</value>\n  </data>\n  <data name=\"ALIEN_GATE_Description\" xml:space=\"preserve\">\n    <value>Grand Finale\n</value>\n  </data>\n  <data name=\"ARABIAN_BORDER\" xml:space=\"preserve\">\n    <value>Arabian border</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"ARABIAN_BORDER_Description\" xml:space=\"preserve\">\n    <value>Help the Arabs, loot outposts\n</value>\n  </data>\n  <data name=\"BARTHS_MOON_CONVINCE\" xml:space=\"preserve\">\n    <value>Barth’s moon</value>\n  </data>\n  <data name=\"BARTHS_MOON_CONVINCE_Description\" xml:space=\"preserve\">\n    <value>Convince Thomas Barth to join your cause\n</value>\n  </data>\n  <data name=\"BARTHS_MOON_PLANT\" xml:space=\"preserve\">\n    <value>Barth’s moon</value>\n  </data>\n  <data name=\"BARTHS_MOON_PLANT_Description\" xml:space=\"preserve\">\n    <value>Plant the device\n</value>\n  </data>\n  <data name=\"BARTHS_MOON_TRANSMITTER\" xml:space=\"preserve\">\n    <value>Barth’s moon</value>\n  </data>\n  <data name=\"BARTHS_MOON_TRANSMITTER_Description\" xml:space=\"preserve\">\n    <value>Barth’s moon\n</value>\n  </data>\n  <data name=\"CHINESE_ESCAPE\" xml:space=\"preserve\">\n    <value>Escape with Chinese plutonium transport</value>\n  </data>\n  <data name=\"CHINESE_ESCAPE_Description\" xml:space=\"preserve\">\n    <value>Defend Madelyn’s mothership and escape with stolen cargo\n</value>\n  </data>\n  <data name=\"CHINESE_REFINERY\" xml:space=\"preserve\">\n    <value>Chinese refinery of Jingzhou</value>\n  </data>\n  <data name=\"CHINESE_REFINERY_Description\" xml:space=\"preserve\">\n    <value>Sneak through the Chinese refinery and hack their systems\n</value>\n  </data>\n  <data name=\"CHINESE_TRANSMITTER\" xml:space=\"preserve\">\n    <value>PRC transmitter Yunzun</value>\n  </data>\n  <data name=\"CHINESE_TRANSMITTER_Description\" xml:space=\"preserve\">\n    <value>Get to the station\n</value>\n  </data>\n  <data name=\"CHINESE_TRANSPORT\" xml:space=\"preserve\">\n    <value>Chinese mines of Changde</value>\n  </data>\n  <data name=\"CHINESE_TRANSPORT_Description\" xml:space=\"preserve\">\n    <value>Destroy the transmitter and steal the chinese transport\n</value>\n  </data>\n  <data name=\"CKD_MOTHERSHIP_FACILITY\" xml:space=\"preserve\">\n    <value>CKD mothership facility</value>\n  </data>\n  <data name=\"CKD_MOTHERSHIP_FACILITY_Description\" xml:space=\"preserve\">\n    <value>CKD mothership facility\n</value>\n  </data>\n  <data name=\"EAC_PRISON\" xml:space=\"preserve\">\n    <value>EAC prison of Reway</value>\n  </data>\n  <data name=\"EAC_PRISON_Description\" xml:space=\"preserve\">\n    <value>Rescue Marcus from the EAC prison station\n</value>\n  </data>\n  <data name=\"EAC_SURVEY_SITE\" xml:space=\"preserve\">\n    <value>EAC survey site New Landswick</value>\n  </data>\n  <data name=\"EAC_SURVEY_SITE_Description\" xml:space=\"preserve\">\n    <value>A unknown commando of Russian special forces got into the mines. Try to escape, search for survivors and equipment and find out what is going on. Why the hell have they attacked a civilian survey site? This can’t be a random hit-and-run attack, there must be something more behind this!\n</value>\n  </data>\n  <data name=\"FAST_TEST_MISSION\" xml:space=\"preserve\">\n    <value>Fast test mission</value>\n  </data>\n  <data name=\"FAST_TEST_MISSION_Description\" xml:space=\"preserve\">\n    <value>Fly through the tunnels\n</value>\n  </data>\n  <data name=\"FORT_VALIANT\" xml:space=\"preserve\">\n    <value>Fort Valiant I</value>\n  </data>\n  <data name=\"FORT_VALIANT_B\" xml:space=\"preserve\">\n    <value>Fort Valiant II</value>\n  </data>\n  <data name=\"FORT_VALIANT_B_Description\" xml:space=\"preserve\">\n    <value>Fort Valiant II\n</value>\n  </data>\n  <data name=\"FORT_VALIANT_C\" xml:space=\"preserve\">\n    <value>Fort Valiant III</value>\n  </data>\n  <data name=\"FORT_VALIANT_C_Description\" xml:space=\"preserve\">\n    <value>Dungeons of Valiant\n</value>\n  </data>\n  <data name=\"FORT_VALIANT_Description\" xml:space=\"preserve\">\n    <value>Fort Valiant\n</value>\n  </data>\n  <data name=\"HIPPIE_OUTPOST\" xml:space=\"preserve\">\n    <value>Hippie outpost</value>\n  </data>\n  <data name=\"HIPPIE_OUTPOST_Description\" xml:space=\"preserve\">\n    <value>Placate the karma spoilers!\n</value>\n  </data>\n  <data name=\"HUB_SHOWCASE\" xml:space=\"preserve\">\n    <value>Hub Showcase</value>\n  </data>\n  <data name=\"HUB_SHOWCASE_Description\" xml:space=\"preserve\">\n    <value>Showcase of hubs, security elements and such\n</value>\n  </data>\n  <data name=\"JUNKYARD_CONVINCE\" xml:space=\"preserve\">\n    <value>Junkyard</value>\n  </data>\n  <data name=\"JUNKYARD_CONVINCE_Description\" xml:space=\"preserve\">\n    <value>Convince the smuggler to join your cause\n</value>\n  </data>\n  <data name=\"JUNKYARD_EAC_AMBUSH\" xml:space=\"preserve\">\n    <value>Junkyard / EAC Ambush</value>\n  </data>\n  <data name=\"JUNKYARD_EAC_AMBUSH_Description\" xml:space=\"preserve\">\n    <value>Go back to Manjeet for plutonium power cells\n</value>\n  </data>\n  <data name=\"JUNKYARD_RETURN\" xml:space=\"preserve\">\n    <value>Junkyard</value>\n  </data>\n  <data name=\"JUNKYARD_RETURN_Description\" xml:space=\"preserve\">\n    <value>Return to Manjeet with the stolen cargo ship\n</value>\n  </data>\n  <data name=\"LAIKA\" xml:space=\"preserve\">\n    <value>Trade station Laika</value>\n  </data>\n  <data name=\"LAIKA_Description\" xml:space=\"preserve\">\n    <value>Investigate the Russian trade station\n</value>\n  </data>\n  <data name=\"LAST_HOPE\" xml:space=\"preserve\">\n    <value>Christian colony Last Hope</value>\n  </data>\n  <data name=\"LAST_HOPE_Description\" xml:space=\"preserve\">\n    <value>Follow a distress call from a remote Christian base\n</value>\n  </data>\n  <data name=\"M01_Intro\" xml:space=\"preserve\">\n    <value>Intro mission</value>\n  </data>\n  <data name=\"M01_Intro_Description\" xml:space=\"preserve\">\n    <value>Welcome to our mining company!\nYou will learn how to mine and sell ore\nand, of course, how to defend yourself in this dangerous sector.</value>\n  </data>\n  <data name=\"MILITARY_OUTPOSMILITARY_OUTPOST\" xml:space=\"preserve\">\n    <value>Military outpost</value>\n  </data>\n  <data name=\"MILITARY_OUTPOST\" xml:space=\"preserve\">\n    <value>Military outpost</value>\n  </data>\n  <data name=\"MILITARY_OUTPOST_Description\" xml:space=\"preserve\">\n    <value>Conquer the outposts.\n</value>\n  </data>\n  <data name=\"NAZI_BIO_LAB\" xml:space=\"preserve\">\n    <value>White Wolves bio research lab</value>\n  </data>\n  <data name=\"NAZI_BIO_LAB_Description\" xml:space=\"preserve\">\n    <value>Download the blueprints from the biological research facility.\n</value>\n  </data>\n  <data name=\"NEW_JERUSALEM_MISSION\" xml:space=\"preserve\">\n    <value>New Jerusalem</value>\n  </data>\n  <data name=\"NEW_JERUSALEM_MISSION_Description\" xml:space=\"preserve\">\n    <value>New Jerusalem\n</value>\n  </data>\n  <data name=\"NEW_NANJING\" xml:space=\"preserve\">\n    <value>New Nanjing</value>\n  </data>\n  <data name=\"NEW_NANJING_Description\" xml:space=\"preserve\">\n    <value>Conquer the outposts\n</value>\n  </data>\n  <data name=\"NEW_SINGAPOUR\" xml:space=\"preserve\">\n    <value>New Singapore industry</value>\n  </data>\n  <data name=\"NEW_SINGAPOUR_Description\" xml:space=\"preserve\">\n    <value>New Singapore industry\n</value>\n  </data>\n  <data name=\"NEW_STORY_M001\" xml:space=\"preserve\">\n    <value>First mission</value>\n  </data>\n  <data name=\"NEW_STORY_M001_Description\" xml:space=\"preserve\">\n    <value>Protect yourself and your spaceship!\n</value>\n  </data>\n  <data name=\"NEW_STORY_M002_ADDITIONAL_MISSION\" xml:space=\"preserve\">\n    <value>Learn how to build prefabs</value>\n  </data>\n  <data name=\"NEW_STORY_M002_ADDITIONAL_MISSION_Description\" xml:space=\"preserve\">\n    <value>Travel to the marked sector and buy a new Foudation Factory.\nUse your mothership to travel through the Solar system.\nTravel back and deploy the Foundation Factory to the marked location.\n</value>\n  </data>\n  <data name=\"NEW_STORY_M003\" xml:space=\"preserve\">\n    <value>Destroy the space station</value>\n  </data>\n  <data name=\"NEW_STORY_M003_Description\" xml:space=\"preserve\">\n    <value>Chinese space station Xiamen prevents our mothership from reaching this sector. Destroy the station to call in your mothership!\n- Find the entrance and get inside the station!\n- Find the generator!\n- Destroy the generator\n- Get out as fast as possible!\n</value>\n  </data>\n  <data name=\"PIRATE_BASE\" xml:space=\"preserve\">\n    <value>Pirate base at Damien dust field</value>\n  </data>\n  <data name=\"PIRATE_BASE_1\" xml:space=\"preserve\">\n    <value>Small pirate base</value>\n  </data>\n  <data name=\"PIRATE_BASE_1_Description\" xml:space=\"preserve\">\n    <value>Destroy the station\n</value>\n  </data>\n  <data name=\"PIRATE_BASE_Description\" xml:space=\"preserve\">\n    <value>Make contact with the pirates and get more information about the unknown artifact.\n</value>\n  </data>\n  <data name=\"REICHSTAG_A\" xml:space=\"preserve\">\n    <value>Reichstag I</value>\n  </data>\n  <data name=\"REICHSTAG_A_Description\" xml:space=\"preserve\">\n    <value>Meet FOR representatives in Reichstag\n</value>\n  </data>\n  <data name=\"REICHSTAG_C\" xml:space=\"preserve\">\n    <value>Reichstag II</value>\n  </data>\n  <data name=\"REICHSTAG_C_Description\" xml:space=\"preserve\">\n    <value>Meet FOR representatives in Reichstag\n</value>\n  </data>\n  <data name=\"RESEARCH_VESSEL\" xml:space=\"preserve\">\n    <value>Research vessel Eurydice</value>\n  </data>\n  <data name=\"RESEARCH_VESSEL_Description\" xml:space=\"preserve\">\n    <value>Acquire four probe parts\n</value>\n  </data>\n  <data name=\"RIFT\" xml:space=\"preserve\">\n    <value>The Rift</value>\n  </data>\n  <data name=\"RIFT_Description\" xml:space=\"preserve\">\n    <value>A place between hell and nowhere, which once used to be one of the most prominent OmniCorp mining sites. Giant surface mines cracked the main asteroid with ore deposit in halves and radiation and heavy solar activity is finishing the job over the years. A small OC experimental lab is nearby, with sunshields and hi-tech equipment for the small crew on-board to survive.\n</value>\n  </data>\n  <data name=\"RIME_CONVINCE\" xml:space=\"preserve\">\n    <value>Rime</value>\n  </data>\n  <data name=\"RIME_CONVINCE_Description\" xml:space=\"preserve\">\n    <value>Speak with Francis Reef and convince him to help you\n</value>\n  </data>\n  <data name=\"RUSSIAN_WAREHOUSE\" xml:space=\"preserve\">\n    <value>Russian warehouse Bratsk</value>\n  </data>\n  <data name=\"RUSSIAN_WAREHOUSE_Description\" xml:space=\"preserve\">\n    <value>Grab a long-range transmitter from the warehouse.\n</value>\n  </data>\n  <data name=\"SIDE_MISSION_01_ASSASSINATION_Description\" xml:space=\"preserve\">\n    <value>Kill the target\n</value>\n  </data>\n  <data name=\"SLAVER_BASE_GRAND_BURROW\" xml:space=\"preserve\">\n    <value>Slaver base Grand Burrow</value>\n  </data>\n  <data name=\"SLAVER_BASE_GRAND_BURROW_Description\" xml:space=\"preserve\">\n    <value>Eliminate the slaver air defense, destroy the power generator, free the slaves and take them to the transport.\n</value>\n  </data>\n  <data name=\"SLAVER_BASE_DELTA_EARNINGS\" xml:space=\"preserve\">\n    <value>Slaver base Delta Earnings</value>\n  </data>\n  <data name=\"SLAVER_BASE_DELTA_EARNINGS_Description\" xml:space=\"preserve\">\n    <value>Slaver base Delta Earnings</value>\n  </data>\n  <data name=\"SMALL_PIRATE_BASE_2\" xml:space=\"preserve\">\n    <value>Small Pirate Base 2</value>\n  </data>\n  <data name=\"SMALL_PIRATE_BASE_2_Description\" xml:space=\"preserve\">\n    <value>Destroy the station\n</value>\n  </data>\n  <data name=\"SMART_WAVES_TEST_MISSION\" xml:space=\"preserve\">\n    <value>Smart waves test mission</value>\n  </data>\n  <data name=\"SMART_WAVES_TEST_MISSION_Description\" xml:space=\"preserve\">\n    <value>Testing mission for smart waves, 4 bots are always attacking, never spawns near to player\n</value>\n  </data>\n  <data name=\"SOLAR_PLANT_CHINA\" xml:space=\"preserve\">\n    <value>Chinese solar plant</value>\n  </data>\n  <data name=\"SOLAR_PLANT_CHINA_Description\" xml:space=\"preserve\">\n    <value>The Chinese solar plant must be destroyed.\n</value>\n  </data>\n  <data name=\"SOLAR_PLANT_EAC\" xml:space=\"preserve\">\n    <value>Solar factory – EAC</value>\n  </data>\n  <data name=\"TRADE_STATION_CHINA\" xml:space=\"preserve\">\n    <value>Trade station China</value>\n  </data>\n  <data name=\"TRADE_STATION_CHINA_Description\" xml:space=\"preserve\">\n    <value>Trade station China\n</value>\n  </data>\n  <data name=\"TRADE_STATION_EAC\" xml:space=\"preserve\">\n    <value>Trade station – EAC</value>\n  </data>\n  <data name=\"TWIN_TOWERS\" xml:space=\"preserve\">\n    <value>Doppelburg</value>\n  </data>\n  <data name=\"TWIN_TOWERS_Description\" xml:space=\"preserve\">\n    <value>Help Fourth Reich regain their base from the White Wolves.\n</value>\n  </data>\n  <data name=\"URANITE_MINE\" xml:space=\"preserve\">\n    <value>Plutonium mine</value>\n  </data>\n  <data name=\"URANITE_MINE_Description\" xml:space=\"preserve\">\n    <value>Clear the mine, harvest plutonium ore.\n</value>\n  </data>\n  <data name=\"ChineseCommando\" xml:space=\"preserve\">\n    <value>Chinese commando</value>\n  </data>\n  <data name=\"RESEARCH_VESSEL_CHECK_CARGO\" xml:space=\"preserve\">\n    <value>Check the secured cargo</value>\n  </data>\n  <data name=\"RESEARCH_VESSEL_CHECK_CARGO_AGAIN\" xml:space=\"preserve\">\n    <value>Check the door</value>\n  </data>\n  <data name=\"RESEARCH_VESSEL_CHECK_CARGO_AGAIN_Description\" xml:space=\"preserve\">\n    <value>\n</value>\n  </data>\n  <data name=\"RESEARCH_VESSEL_CHECK_CARGO_Description\" xml:space=\"preserve\">\n    <value>The first component should be there.\n</value>\n  </data>\n  <data name=\"RESEARCH_VESSEL_CHECK_COMMAND_ROOM\" xml:space=\"preserve\">\n    <value>It’s locked, check the command room</value>\n  </data>\n  <data name=\"RESEARCH_VESSEL_CHECK_COMMAND_ROOM_Description\" xml:space=\"preserve\">\n    <value>\n</value>\n  </data>\n  <data name=\"RESEARCH_VESSEL_CHECK_DRILL_ROOM\" xml:space=\"preserve\">\n    <value>Check the drill room</value>\n  </data>\n  <data name=\"RESEARCH_VESSEL_CHECK_DRILL_ROOM_Description\" xml:space=\"preserve\">\n    <value>\n</value>\n  </data>\n  <data name=\"RESEARCH_VESSEL_CHECK_FIRST_HANGAR\" xml:space=\"preserve\">\n    <value>Check the first hangar</value>\n  </data>\n  <data name=\"RESEARCH_VESSEL_CHECK_FIRST_HANGAR_Description\" xml:space=\"preserve\">\n    <value>\n</value>\n  </data>\n  <data name=\"RESEARCH_VESSEL_CHECK_GENERATOR\" xml:space=\"preserve\">\n    <value>Check the generator room</value>\n  </data>\n  <data name=\"RESEARCH_VESSEL_CHECK_GENERATOR_Description\" xml:space=\"preserve\">\n    <value>\n</value>\n  </data>\n  <data name=\"RESEARCH_VESSEL_CHECK_LABORATORY\" xml:space=\"preserve\">\n    <value>Check the laboratory</value>\n  </data>\n  <data name=\"RESEARCH_VESSEL_CHECK_LABORATORY_Description\" xml:space=\"preserve\">\n    <value>\n</value>\n  </data>\n  <data name=\"RESEARCH_VESSEL_CHECK_SECOND_HANGAR\" xml:space=\"preserve\">\n    <value>Check the second hangar</value>\n  </data>\n  <data name=\"RESEARCH_VESSEL_CHECK_SECOND_HANGAR_Description\" xml:space=\"preserve\">\n    <value>\n</value>\n  </data>\n  <data name=\"RESEARCH_VESSEL_CHECK_SECOND_WAREHOUSE\" xml:space=\"preserve\">\n    <value>Check the second warehouse</value>\n  </data>\n  <data name=\"RESEARCH_VESSEL_CHECK_SECOND_WAREHOUSE_Description\" xml:space=\"preserve\">\n    <value>\n</value>\n  </data>\n  <data name=\"RESEARCH_VESSEL_CHECK_THIRD_HANGAR\" xml:space=\"preserve\">\n    <value>Check the third hangar</value>\n  </data>\n  <data name=\"RESEARCH_VESSEL_CHECK_THIRD_HANGAR_Description\" xml:space=\"preserve\">\n    <value>\n</value>\n  </data>\n  <data name=\"RESEARCH_VESSEL_CHECK_WAREHOUSE\" xml:space=\"preserve\">\n    <value>Check the warehouse</value>\n  </data>\n  <data name=\"RESEARCH_VESSEL_CHECK_WAREHOUSE_Description\" xml:space=\"preserve\">\n    <value>\n</value>\n  </data>\n  <data name=\"RESEARCH_VESSEL_REACH_SHIP\" xml:space=\"preserve\">\n    <value>Reach the ship</value>\n  </data>\n  <data name=\"RESEARCH_VESSEL_REACH_SHIP_Description\" xml:space=\"preserve\">\n    <value>\n</value>\n  </data>\n  <data name=\"RESEARCH_VESSEL_TAKE_FIRST\" xml:space=\"preserve\">\n    <value>Take the first probe component</value>\n  </data>\n  <data name=\"RESEARCH_VESSEL_TAKE_FIRST_Description\" xml:space=\"preserve\">\n    <value>\n</value>\n  </data>\n  <data name=\"RESEARCH_VESSEL_TAKE_FOURTH\" xml:space=\"preserve\">\n    <value>Take the final probe component</value>\n  </data>\n  <data name=\"RESEARCH_VESSEL_TAKE_FOURTH_Description\" xml:space=\"preserve\">\n    <value>\n</value>\n  </data>\n  <data name=\"RESEARCH_VESSEL_TAKE_SECOND\" xml:space=\"preserve\">\n    <value>Take the second probe component</value>\n  </data>\n  <data name=\"RESEARCH_VESSEL_TAKE_SECOND_Description\" xml:space=\"preserve\">\n    <value>\n</value>\n  </data>\n  <data name=\"RESEARCH_VESSEL_TAKE_THIRD\" xml:space=\"preserve\">\n    <value>Take the third probe component</value>\n  </data>\n  <data name=\"RESEARCH_VESSEL_TAKE_THIRD_Description\" xml:space=\"preserve\">\n    <value>\n</value>\n  </data>\n  <data name=\"RESEARCH_VESSEL_USE_HUB_1\" xml:space=\"preserve\">\n    <value>Use the hub to unlock secured cargo</value>\n  </data>\n  <data name=\"RESEARCH_VESSEL_USE_HUB_1_Description\" xml:space=\"preserve\">\n    <value>\n</value>\n  </data>\n  <data name=\"RESEARCH_VESSEL_USE_HUB_2\" xml:space=\"preserve\">\n    <value>Use the second hub to unlock secured cargo</value>\n  </data>\n  <data name=\"RESEARCH_VESSEL_USE_HUB_2_Description\" xml:space=\"preserve\">\n    <value>\n</value>\n  </data>\n  <data name=\"RESEARCH_VESSEL_USE_HUB_3\" xml:space=\"preserve\">\n    <value>Use the third hub to unlock secured cargo</value>\n  </data>\n  <data name=\"RESEARCH_VESSEL_USE_HUB_3_Description\" xml:space=\"preserve\">\n    <value>\n</value>\n  </data>\n  <data name=\"Merchant\" xml:space=\"preserve\">\n    <value>merchant</value>\n  </data>\n  <data name=\"COUNCIL_GUARD\" xml:space=\"preserve\">\n    <value>Council guard</value>\n  </data>\n  <data name=\"PATRIARCH_CARADOC\" xml:space=\"preserve\">\n    <value>Patriarch Caradoc</value>\n  </data>\n  <data name=\"PATRIARCH_DAGONET\" xml:space=\"preserve\">\n    <value>Patriarch Dagonet</value>\n  </data>\n  <data name=\"PATRIARCH_LAMORAK\" xml:space=\"preserve\">\n    <value>Patriarch Lamorak</value>\n  </data>\n  <data name=\"SIR_GERAINT\" xml:space=\"preserve\">\n    <value>Sir Geraint</value>\n  </data>\n  <data name=\"UNKNOWN\" xml:space=\"preserve\">\n    <value>Unknown</value>\n  </data>\n  <data name=\"SLAVER_BASE_2_BREAK_THE_CHAINS\" xml:space=\"preserve\">\n    <value>Blow up the power generator</value>\n  </data>\n  <data name=\"SLAVER_BASE_2_FREE_SLAVES\" xml:space=\"preserve\">\n    <value>Open the prison cell</value>\n  </data>\n  <data name=\"SLAVER_BASE_2_PARALYZE_DEFENSE\" xml:space=\"preserve\">\n    <value>Destroy all turrets</value>\n  </data>\n  <data name=\"SLAVER_BASE_2_PARALYZE_DEFENSE_Description\" xml:space=\"preserve\">\n    <value>Paralyze the defense by destroying all turrets.\n</value>\n  </data>\n  <data name=\"UNLOCK_PRISON_1\" xml:space=\"preserve\">\n    <value>Unlock prison cells in the HQ</value>\n  </data>\n  <data name=\"UNLOCK_PRISON_2\" xml:space=\"preserve\">\n    <value>Unlock underground cells</value>\n  </data>\n  <data name=\"PLAYGROUND\" xml:space=\"preserve\">\n    <value>Playground</value>\n  </data>\n  <data name=\"PressToPlaceExplosive\" xml:space=\"preserve\">\n    <value>Hold {0} to place explosives</value>\n  </data>\n  <data name=\"PlacingExplosives\" xml:space=\"preserve\">\n    <value>Placing explosives</value>\n  </data>\n  <data name=\"Everyone\" xml:space=\"preserve\">\n    <value>Everyone</value>\n  </data>\n  <data name=\"RussianGeneral\" xml:space=\"preserve\">\n    <value>Russian general</value>\n  </data>\n  <data name=\"CriticalFriendlyFireDetected\" xml:space=\"preserve\">\n    <value>Friendly fire won’t be tolerated!</value>\n  </data>\n  <data name=\"HoldToUseSecurityKey\" xml:space=\"preserve\">\n    <value>Hold {0} to use the security key</value>\n  </data>\n  <data name=\"Using\" xml:space=\"preserve\">\n    <value>Using</value>\n  </data>\n  <data name=\"MPMerchantFrontLine\" xml:space=\"preserve\">\n    <value>Merchant FrontLine – MP</value>\n  </data>\n  <data name=\"MPMerchantSupport\" xml:space=\"preserve\">\n    <value>Merchant Support – MP</value>\n  </data>\n  <data name=\"MarucsAndTarjaAreLeavingForTransporter\" xml:space=\"preserve\">\n    <value>Marcus and Tarja are leaving the party to steal the transporter</value>\n  </data>\n  <data name=\"MarcusAndTarjaAreLeavingForKey\" xml:space=\"preserve\">\n    <value>Marcus and Tarja are leaving the party to get the other security key</value>\n  </data>\n  <data name=\"Pirate\" xml:space=\"preserve\">\n    <value>Pirate</value>\n  </data>\n  <data name=\"PirateCaptainClegg\" xml:space=\"preserve\">\n    <value>Pirate captain Clegg</value>\n  </data>\n  <data name=\"PirateCaptainGorg\" xml:space=\"preserve\">\n    <value>Pirate captain Gorg</value>\n  </data>\n  <data name=\"PirateCaptainVane\" xml:space=\"preserve\">\n    <value>Pirate captain Vane</value>\n  </data>\n  <data name=\"CHINESE_CAPITAL\" xml:space=\"preserve\">\n    <value>New Beijing – Chinese capital</value>\n  </data>\n  <data name=\"CHINESE_CAPITAL_Description\" xml:space=\"preserve\">\n    <value>New Beijing – Chinese capital\n</value>\n  </data>\n  <data name=\"MP_OnlyHostCanTravel\" xml:space=\"preserve\">\n    <value>Only the host can travel</value>\n  </data>\n  <data name=\"MP_CannotHost\" xml:space=\"preserve\">\n    <value>Cannot host game, the multiplayer server is unavailable</value>\n  </data>\n  <data name=\"EAC_SURVEY_SITE_SectorDescription\" xml:space=\"preserve\">\n    <value>The Euro-American experimental survey site at New Landswick. Hidden from the eyes of \nthe public, this facility mainly serves research purposes. Rare substances and isotopes are \nutilized in laboratories to create weapon prototypes, test new drill devices, and experiment \nwith chemical and nuclear reactions of substances. The facility is operated by several \nhundred scientists, geologists, and administrative staff.</value>\n  </data>\n  <data name=\"EAC_SURVEY_SITE_SectorName\" xml:space=\"preserve\">\n    <value>EAC SURVEY SITE NEW LANDSWICK</value>\n  </data>\n  <data name=\"ALIEN_GATE_SectorDescription\" xml:space=\"preserve\">\n    <value>The location of a supposed alien artifact, as revealed by a sophisticated triangulation \nprocess. The triangulated signal led to this asteroid field near the Sun, an uninhabited area \nwith frequent solar winds and difficult survival conditions. Due to the harsh conditions, \nno trade routes are reported in the area.</value>\n  </data>\n  <data name=\"ALIEN_GATE_SectorName\" xml:space=\"preserve\">\n    <value>UNKNOWN SECTOR NEAR THE SUN</value>\n  </data>\n  <data name=\"BARTHS_MOON_SectorDescription\" xml:space=\"preserve\">\n    <value>Located in the distant reaches of the Solar System, far beyond Jupiter’s belt, Barth’s Moon is \na small asteroid base. The hermit-scientist Thomas Barth makes his home in the solitude of its \nfrozen wastelands. Well off the path of all known trade routes, local traffic is generally\nlimited to random travelers, lost merchants, and wandering pirates and raiders.</value>\n  </data>\n  <data name=\"BARTHS_MOON_SectorName\" xml:space=\"preserve\">\n    <value>BARTH’S MOON</value>\n  </data>\n  <data name=\"CHINESE_MINES_SectorDescription\" xml:space=\"preserve\">\n    <value>The Mines of Changde are a harsh and dangerous place. Set in an asteroid field rich in \nplutonium ore, they host thousands of workers who labor there for their daily living. \nNumerous cargo ships pass through this sector, carrying mined ore from Changde to the \nrefinery complex at Jingzhou.</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"CHINESE_MINES_SectorName\" xml:space=\"preserve\">\n    <value>CHINESE MINES OF CHANGDE</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"CHINESE_REFINERY_SectorDescription\" xml:space=\"preserve\">\n    <value>The plutonium refinery and processing facility at Jingzhou. A well-protected Chinese base \nspecializing in processing of numerous grades of plutonium. Raw ore is transported here \nfrom the Changde and Xining sectors and refined as fuel for nuclear weapons, reactors, \npocket fuel cells, and numerous experimental and technical devices, for both military and \nindustrial use.</value>\n  </data>\n  <data name=\"CHINESE_REFINERY_SectorName\" xml:space=\"preserve\">\n    <value>CHINESE REFINERY OF JINGZHOU</value>\n  </data>\n  <data name=\"CHINESE_TRANSMITTER_SectorDescription\" xml:space=\"preserve\">\n    <value>The National Chinese broadcasting array at Yunzun. The station sends and receives \nlong-distance communication signals from all important Chinese cities in the vicinity. These \nconsist of public safety messages, TV and radio broadcasts, and governmental propaganda.</value>\n  </data>\n  <data name=\"CHINESE_TRANSMITTER_SectorName\" xml:space=\"preserve\">\n    <value>CHINESE TRANSMITTER YUNZUN</value>\n  </data>\n  <data name=\"DOPPELBURG_SectorDescription\" xml:space=\"preserve\">\n    <value>The zeppelin construction plant at Doppelburg. Formerly a Reichist facility, it was recently \ntaken over by the separatist White Wolves. The station consists of two towers, each with an \nautonomous security system as well as life support and other vital systems. Destruction of \neither of the towers does not pose a threat to the other; the “twin tower” concept allows for \neasier reconstruction and recovery of the damaged tower. Both towers are equipped with \nanti-mothership railguns, rendering Doppelburg heavily protected against enemy forces.</value>\n  </data>\n  <data name=\"DOPPELBURG_SectorName\" xml:space=\"preserve\">\n    <value>DOPPELBURG</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"EAC_PRISON_SectorDescription\" xml:space=\"preserve\">\n    <value>Reway: a well-guarded and almost impenetrable space station-turned-prison. Reway offers\n“accommodation” for hundreds of prominent political and military prisoners. The facility is\nknown for its strict security measures and permanent protection by a considerable division\nof the EAC fleet.</value>\n  </data>\n  <data name=\"EAC_PRISON_SectorName\" xml:space=\"preserve\">\n    <value>EAC PRISON REWAY</value>\n  </data>\n  <data name=\"EAC_TRANSMITTER_SectorDescription\" xml:space=\"preserve\">\n    <value>A transmitter and a research facility, originally started as an adjunct to the 20th century SETI \nprogram. The facility serves as a hub and switching station for personal, governmental, \nand commercial communication, as well as a center for the scanning and analysis of radio \ndata from distant galaxies.</value>\n  </data>\n  <data name=\"EAC_TRANSMITTER_SectorName\" xml:space=\"preserve\">\n    <value>EAC TRANSMITTER SILVER FORESIGHT</value>\n  </data>\n  <data name=\"FORT_VALIANT_SectorDescription\" xml:space=\"preserve\">\n    <value>Fort Valiant is the main hub of the renewed Templar order. Located between the territories \nof The Church and EAC, the Templars offer protection to pacifist Church citizens as well \nas to traders and civilians seeking sanctuary. The base is heavily protected. No attempt to\ntake it by force is considered wise, thanks to highly advanced Templar weaponry and the \nfact that most of the Templar fleet is garrisoned there.</value>\n  </data>\n  <data name=\"FORT_VALIANT_SectorName\" xml:space=\"preserve\">\n    <value>FORT VALIANT</value>\n  </data>\n  <data name=\"JUNKYARD_SectorDescription\" xml:space=\"preserve\">\n    <value>Duncan’s Faith, also commonly dubbed the “Junkyard” – site of a violent historic battle in\n2074 between the Fourth Reich and EAC. It contains the metallic remnants of destroyed\nmotherships and thousands of tons of waste and abandoned equipment. Because of its\nextensive battle damage and war debris, it has devolved into a popular destination for\npirates, scavengers, smugglers and others hiding from the eyes of legal authorities.</value>\n  </data>\n  <data name=\"JUNKYARD_SectorName\" xml:space=\"preserve\">\n    <value>DUNCAN’S FAITH (JUNKYARD)</value>\n  </data>\n  <data name=\"LAIKA_SectorDescription\" xml:space=\"preserve\">\n    <value>The small, but widely known Russian trade station Laika. Located in the desolate outskirts \nof Russian territory, Laika is by far the most politically neutral and popular station \namongst non-Russian traders, merchants, and freelancers. While the totalitarian regime \ntypically suppresses “uncontrolled business” with capitalist factions, Laika has its own life \nand rules. Home to numerous Asian smugglers and tradesman, OmniCorp bureaus, and \neven EAC shops.</value>\n  </data>\n  <data name=\"LAIKA_SectorName\" xml:space=\"preserve\">\n    <value>RUSSIAN TRADE STATION LAIKA</value>\n  </data>\n  <data name=\"LAST_HOPE_SectorDescription\" xml:space=\"preserve\">\n    <value>Last Hope is a colony established by Christian separatists and led by the charismatic Father\nTobias, who chose to secede from the political influence of the Commonwealth of the\nHoly Church. It is a peaceful colony with virtually no defenses, deep within an asteroid field,\nfar from the civilized world, far from the Sun.</value>\n  </data>\n  <data name=\"LAST_HOPE_SectorName\" xml:space=\"preserve\">\n    <value>CHRISTIAN CAMP LAST HOPE</value>\n  </data>\n  <data name=\"PIRATE_BASE_SectorDescription\" xml:space=\"preserve\">\n    <value>Damien Dust Field – the shattered remains of what was once known as the planet Mars. The\nSolar Event of 2070 destroyed that planet and reduced it to dust, shards, and ashes, as well\nas thousands of asteroids. Today this dense asteroid field offers spectacular visuals thanks\nto the dust particles that create a unique form of sunbeam refraction. No known human\nsettlements are reported in the area, apart from illegal pirate bases and some rumored\nseparatist and rebel colonies.</value>\n  </data>\n  <data name=\"PIRATE_BASE_SectorName\" xml:space=\"preserve\">\n    <value>DAMIEN DUST FIELD PIRATE BASE</value>\n  </data>\n  <data name=\"REICHSTAG_SectorDescription\" xml:space=\"preserve\">\n    <value>Reichstag – an extravagant Reichist symbol, architectural masterpiece, and capital of the \nwhole Fourth Reich. Reichstag accommodates hundreds of governmental buildings and \nhouses over one third of the FOR Space Forces. Although open to foreign merchants and \nbureaus, it does not host many visitors – since most people either sympathize with the \nReich, and have joined it, or despise it and refuse to even trade with it.</value>\n  </data>\n  <data name=\"REICHSTAG_SectorName\" xml:space=\"preserve\">\n    <value>REICHSTAG</value>\n  </data>\n  <data name=\"RESEARCH_VESSEL_SectorDescription\" xml:space=\"preserve\">\n    <value>OC Research vessel Eurydice, a huge scientific complex built upon an asteroid. It was later \nenhanced by the addition of thrusters to allow it to relocate between research missions. \nCurrently deployed in Vandenberg Gas Field, Eurydice specializes in scans, probes, and \nanalysis of data.</value>\n  </data>\n  <data name=\"RESEARCH_VESSEL_SectorName\" xml:space=\"preserve\">\n    <value>OC RESEARCH VESSEL EURYDICE</value>\n  </data>\n  <data name=\"RIFT_SectorDescription\" xml:space=\"preserve\">\n    <value>A place described as “between hell and nowhere”, the Rift was once one of the most\nprominent OmniCorp mining sites. Giant surface mines cracked the main asteroid in half.\nRadiation and heavy solar activity have been finishing the job over the years. A small OC\nexperimental lab sits nearby, with sunshields and hi-tech equipment to help the small\non-board crew survive. The Rift is said to contain the rarest of ores, including super-efficient\nplutonium isotopes.</value>\n  </data>\n  <data name=\"RIFT_SectorName\" xml:space=\"preserve\">\n    <value>THE RIFT</value>\n  </data>\n  <data name=\"RIME_SectorDescription\" xml:space=\"preserve\">\n    <value>Rime represents the heart and soul of OmniCorp, the main administrative and executive\ncenter of its corporate cluster. The station contains several research facilities, shipyards, and\nentertainment centers as well as most other services and facilities one would expect to find\nwithin a major city. Rime is rightfully regarded to be among the top 5 space destinations,\nvisited daily by tens of thousands of travelers, traders, and politicians.</value>\n  </data>\n  <data name=\"RIME_SectorName\" xml:space=\"preserve\">\n    <value>RIME</value>\n  </data>\n  <data name=\"RUSSIAN_TRANSMITTER_SectorDescritpion\" xml:space=\"preserve\">\n    <value>Tver – one of seven Russian long-distance communication arrays serving to connect \ntransmitters and receivers across inhabited parts of the Solar System. The station is \nprotected by the military; however, the garrison is rather light and symbolic because of the \nstation’s ease of replacement and relatively low political and military value.</value>\n  </data>\n  <data name=\"RUSSIAN_TRANSMITTER_SectorName\" xml:space=\"preserve\">\n    <value>RUSSIAN TRANSMITTER TVER</value>\n  </data>\n  <data name=\"RUSSIAN_WAREHOUSE_SectorDescription\" xml:space=\"preserve\">\n    <value>Not much is known about Bratsk. It is one of several generic Russian warehouses under \ngovernmental protection. However, all known data sources describe it as an unremarkable \nstorage and manufacturing facility, specializing in non-military device parts: radar arrays, \ntransmitters, ore processing units, and housewares.</value>\n  </data>\n  <data name=\"RUSSIAN_WAREHOUSE_SectorName\" xml:space=\"preserve\">\n    <value>RUSSIAN WAREHOUSE BRATSK</value>\n  </data>\n  <data name=\"SLAVER_BASE_1_SectorDescription\" xml:space=\"preserve\">\n    <value>Not much is publicly known about the slaver base called Delta Earnings. Several merchants \nreport having been ambushed by slaver forces here, as well as at other colonies and \noutposts in the vicinity. Delta Earnings appears to be the home base for one of the many \nexistent slaver groups, each of which has a specific hierarchy of its own, as well as a \nreputation for dealing in second-hand equipment.</value>\n  </data>\n  <data name=\"SLAVER_BASE_1_SectorName\" xml:space=\"preserve\">\n    <value>SLAVER BASE DELTA EARNINGS</value>\n  </data>\n  <data name=\"SLAVER_BASE_2_SectorDescription\" xml:space=\"preserve\">\n    <value>Grand Burrow is an unwelcoming place where hundreds of captives wait to be sold as \nslaves to new “masters”. Many pilots choose suicide over the prospect of capture by slavers. \nTo be turned into a slave is considered a fate worse than death: several neural poisons as \nwell as cybernetic devices are implanted in the victim’s body and brain, resulting in an \ninability to refuse orders – even to voluntarily terminate one’s own life.</value>\n  </data>\n  <data name=\"SLAVER_BASE_2_SectorName\" xml:space=\"preserve\">\n    <value>SLAVER BASE GRAND BURROW</value>\n  </data>\n  <data name=\"WHITE_WOLVES_RESEARCH_LAB_SectorDescription\" xml:space=\"preserve\">\n    <value>This bio-research facility is a common type of a R&amp;D structure built in the late 21st century \nthanks to advances in DNA alteration, genome modification, and embryonal enhancement. \nMost of the research at these labs was performed on animals and even humans. Thus, the \nmore successful and “efficient” a biolab was, the more cruel and inhumane were its \nresearch methods.</value>\n  </data>\n  <data name=\"WHITE_WOLVES_RESEARCH_LAB_SectorName\" xml:space=\"preserve\">\n    <value>WHITE WOLF BIO RESEARCH LAB</value>\n  </data>\n  <data name=\"MP_CannotConnectServerJoin\" xml:space=\"preserve\">\n    <value>Can’t connect to the multiplayer server, please check firewall settings (UDP port {0})</value>\n  </data>\n  <data name=\"ZappasGangman\" xml:space=\"preserve\">\n    <value>Zappa’s gang member</value>\n  </data>\n  <data name=\"MomoZappa\" xml:space=\"preserve\">\n    <value>Momo Zappa</value>\n  </data>\n  <data name=\"Dealer\" xml:space=\"preserve\">\n    <value>Dealer</value>\n  </data>\n  <data name=\"Gangster\" xml:space=\"preserve\">\n    <value>Gangster</value>\n  </data>\n  <data name=\"NotificationFuelNo\" xml:space=\"preserve\">\n    <value>No fuel</value>\n  </data>\n  <data name=\"RUSSIAN_CAPITAL\" xml:space=\"preserve\">\n    <value>New Moscow – Russian capital</value>\n  </data>\n  <data name=\"RUSSIAN_CAPITAL_Description\" xml:space=\"preserve\">\n    <value>New Moscow – Russian capital\n</value>\n  </data>\n  <data name=\"ARABIAN_CAPITAL\" xml:space=\"preserve\">\n    <value>New Istanbul – Arabian capital</value>\n  </data>\n  <data name=\"ARABIAN_CAPITAL_Description\" xml:space=\"preserve\">\n    <value>New Istanbul – Arabian capital\n</value>\n  </data>\n  <data name=\"MEDINA_622\" xml:space=\"preserve\">\n    <value>Medina 622</value>\n  </data>\n  <data name=\"MEDINA_622_Description\" xml:space=\"preserve\">\n    <value>Medina 622\n</value>\n  </data>\n  <data name=\"MessageYouMustSetTemplateIfYouWantRefillInventory\" xml:space=\"preserve\">\n    <value>You must set the template if you want to refill the inventory!</value>\n  </data>\n  <data name=\"RefillTime\" xml:space=\"preserve\">\n    <value>Refill time (sec)</value>\n  </data>\n  <data name=\"SlaverCole\" xml:space=\"preserve\">\n    <value>Cole</value>\n  </data>\n  <data name=\"SlaverJeff\" xml:space=\"preserve\">\n    <value>Jeff</value>\n  </data>\n  <data name=\"IllegalCargo\" xml:space=\"preserve\">\n    <value>Illegal cargo</value>\n  </data>\n  <data name=\"MissionFail_RequiredObjectDestroyed\" xml:space=\"preserve\">\n    <value>A crucial mission object was destroyed</value>\n  </data>\n  <data name=\"Actor_RimeBouncer\" xml:space=\"preserve\">\n    <value>Duplex Bouncer</value>\n  </data>\n  <data name=\"Actor_RimeClient1\" xml:space=\"preserve\">\n    <value>Client</value>\n  </data>\n  <data name=\"Actor_RimeClient2\" xml:space=\"preserve\">\n    <value>Client</value>\n  </data>\n  <data name=\"Actor_RimeClient3\" xml:space=\"preserve\">\n    <value>Expelled client</value>\n  </data>\n  <data name=\"Actor_RimeSmuggler\" xml:space=\"preserve\">\n    <value>Smuggler</value>\n  </data>\n  <data name=\"Fail_LostTarget\" xml:space=\"preserve\">\n    <value>You have lost your target</value>\n  </data>\n  <data name=\"Fail_SeenByTarget\" xml:space=\"preserve\">\n    <value>You have been spotted by your target</value>\n  </data>\n  <data name=\"Fail_CaughtByGuards\" xml:space=\"preserve\">\n    <value>You have been caught by the guards</value>\n  </data>\n  <data name=\"Fail_MissedTimeWindow\" xml:space=\"preserve\">\n    <value>You have missed the window of opportunity</value>\n  </data>\n  <data name=\"EAC_CAPITAL\" xml:space=\"preserve\">\n    <value>New NYC – EAC capital</value>\n  </data>\n  <data name=\"EAC_CAPITAL_Description\" xml:space=\"preserve\">\n    <value>New NYC – EAC capital\n</value>\n  </data>\n  <data name=\"WeaponUniversalLauncherBackTitle\" xml:space=\"preserve\">\n    <value>Back</value>\n  </data>\n  <data name=\"WeaponUniversalLauncherFrontTitle\" xml:space=\"preserve\">\n    <value>Front</value>\n  </data>\n  <data name=\"Arabian_Border_1\" xml:space=\"preserve\">\n    <value>Arabian Border 1 64x64x64</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Arabian_Border_2\" xml:space=\"preserve\">\n    <value>Arabian Border 2 64x64x64</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Arabian_Border_3\" xml:space=\"preserve\">\n    <value>Arabian Border 3 64x64x64</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Arabian_Border_4\" xml:space=\"preserve\">\n    <value>Arabian Border 4 64x64x64</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Arabian_Border_5\" xml:space=\"preserve\">\n    <value>Arabian Border 5 64x64x64</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Arabian_Border_6\" xml:space=\"preserve\">\n    <value>Arabian Border 6 64x64x64</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Arabian_Border_7\" xml:space=\"preserve\">\n    <value>Arabian Border 7 64x64x64</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Arabian_Border_Arabian\" xml:space=\"preserve\">\n    <value>Arabian Border Arabian 128x128x128</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Arabian_Border_EAC\" xml:space=\"preserve\">\n    <value>Arabian Border EAC 128x128x128</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Chinese_Corridor_1\" xml:space=\"preserve\">\n    <value>Chinese Corridor 1 128x128x128</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Chinese_Mines_Side\" xml:space=\"preserve\">\n    <value>Chinese Mines Side 128x128x128</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Chinese_Mines_Small\" xml:space=\"preserve\">\n    <value>Chinese Mines Small 64x64x64</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Chinese_Solar_Array_Bottom\" xml:space=\"preserve\">\n    <value>Chinese Solar Array Bottom 64x64x64</value>\n  </data>\n  <data name=\"Chinese_Solar_Array_Main\" xml:space=\"preserve\">\n    <value>Chinese Solar Array Main 256x128x256</value>\n  </data>\n  <data name=\"Fortress_Sanc_1\" xml:space=\"preserve\">\n    <value>Fortress Sanc 1 128x256x128</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Fortress_Sanc_10\" xml:space=\"preserve\">\n    <value>Fortress Sanc 10 128x128x128</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Fortress_Sanc_11\" xml:space=\"preserve\">\n    <value>Fortress Sanc 11 128x128x128</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Fortress_Sanc_2\" xml:space=\"preserve\">\n    <value>Fortress Sanc 2 256x128x256</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Fortress_Sanc_3\" xml:space=\"preserve\">\n    <value>Fortress Sanc 3 128x128x128</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Fortress_Sanc_4\" xml:space=\"preserve\">\n    <value>Fortress Sanc 4 128s128s128</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Fortress_Sanc_5\" xml:space=\"preserve\">\n    <value>Fortress Sanc 5 256x256x256</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Fortress_Sanc_6\" xml:space=\"preserve\">\n    <value>Fortress Sanc 6 256x128x256</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Fortress_Sanc_7\" xml:space=\"preserve\">\n    <value>Fortress Sanc 7 128x256x128</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Fortress_Sanc_8\" xml:space=\"preserve\">\n    <value>Fortress Sanc 8 128x256x128</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Fortress_Sanc_9\" xml:space=\"preserve\">\n    <value>Fortress Sanc 9 128x128x128</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Fragile_Sector\" xml:space=\"preserve\">\n    <value>Fragile Sector 256x128x256</value>\n  </data>\n  <data name=\"Grave_Skull\" xml:space=\"preserve\">\n    <value>Grave Skull 256x256x256</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"HallOfFame\" xml:space=\"preserve\">\n    <value>Hall of Fame 256x128x256</value>\n  </data>\n  <data name=\"Hippie_Outpost_Base\" xml:space=\"preserve\">\n    <value>Hippie Outpost Base 128x128x128</value>\n  </data>\n  <data name=\"Hippie_Outpost_Tree\" xml:space=\"preserve\">\n    <value>Hippie Outpost Tree 512x512x512</value>\n  </data>\n  <data name=\"IceCaveDeathmatch\" xml:space=\"preserve\">\n    <value>Ice Cave Deathmatch 256x128x256</value>\n  </data>\n  <data name=\"Laika_1\" xml:space=\"preserve\">\n    <value>Laika 1 64x64x64</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Laika_2\" xml:space=\"preserve\">\n    <value>Laika 2 256x128x256</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Laika_3\" xml:space=\"preserve\">\n    <value>Laika 3 64x64x64</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Nearby_Station_1\" xml:space=\"preserve\">\n    <value>Nearby Station 1 128x128x128</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Nearby_Station_10\" xml:space=\"preserve\">\n    <value>Nearby Station 10 64x64x64</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Nearby_Station_11\" xml:space=\"preserve\">\n    <value>Nearby Station 11 128x64x64</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Nearby_Station_12\" xml:space=\"preserve\">\n    <value>Nearby Station 12 256x128x256</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Nearby_Station_2\" xml:space=\"preserve\">\n    <value>Nearby Station 2 64x128x64</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Nearby_Station_3\" xml:space=\"preserve\">\n    <value>Nearby Station 3 64x64x128</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Nearby_Station_4\" xml:space=\"preserve\">\n    <value>Nearby Station 4 64x128x64</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Nearby_Station_5\" xml:space=\"preserve\">\n    <value>Nearby Station 5 128x128x128</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Nearby_Station_6\" xml:space=\"preserve\">\n    <value>Nearby Station 6 128x128x128</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Nearby_Station_7\" xml:space=\"preserve\">\n    <value>Nearby Station 7 64x128x64</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Nearby_Station_8\" xml:space=\"preserve\">\n    <value>Nearby Station 8 64x64x64</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Nearby_Station_9\" xml:space=\"preserve\">\n    <value>Nearby Station 9 128x128x128</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"New_Singapore\" xml:space=\"preserve\">\n    <value>New Singapore 512x512x256</value>\n  </data>\n  <data name=\"Pirate_Base_Asteroid_1\" xml:space=\"preserve\">\n    <value>Pirate Base 1 64x64x64</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Pirate_Base_Asteroid_2\" xml:space=\"preserve\">\n    <value>Pirate Base 2 128x128x128</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Pirate_Base_Asteroid_3\" xml:space=\"preserve\">\n    <value>Pirate Base 3 64x128x64</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Plutonium_Mines\" xml:space=\"preserve\">\n    <value>Plutonium Mines 256x256x256</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"ReichStag_1\" xml:space=\"preserve\">\n    <value>ReichStag 1 128x128x128</value>\n  </data>\n  <data name=\"ReichStag_2\" xml:space=\"preserve\">\n    <value>ReichStag 2 256x128x256</value>\n  </data>\n  <data name=\"RiftStationSmaller\" xml:space=\"preserve\">\n    <value>Rift Station Smaller 64x128x64</value>\n  </data>\n  <data name=\"Russian_Transmitter_1\" xml:space=\"preserve\">\n    <value>Russian Transmitter 1 128x128x128</value>\n  </data>\n  <data name=\"Russian_Transmitter_2\" xml:space=\"preserve\">\n    <value>Russian Transmitter 2 256x128x256</value>\n  </data>\n  <data name=\"Russian_Transmitter_3\" xml:space=\"preserve\">\n    <value>Russian Transmitter 3 256x128x256</value>\n  </data>\n  <data name=\"Russian_Warehouse_New\" xml:space=\"preserve\">\n    <value>Russian Warehouse New 64x64x64</value>\n  </data>\n  <data name=\"VoxelArenaDeathmatch\" xml:space=\"preserve\">\n    <value>Voxel Arena Deathmatch 256x256x256</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"WarehouseDeatmatch\" xml:space=\"preserve\">\n    <value>Warehouse Deathmatch 256x128x256</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"LAST_HOPE_DEACTIVATE_BOMBS\" xml:space=\"preserve\">\n    <value>Deactivate all bombs</value>\n  </data>\n  <data name=\"LAST_HOPE_DEACTIVATE_BOMBS_DESC\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"LAST_HOPE_KILL_SABOTERS\" xml:space=\"preserve\">\n    <value>Kill the saboteur squad</value>\n  </data>\n  <data name=\"LAST_HOPE_KILL_SABOTERS_DESC\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"LAST_HOPE_LEAVE_SHAFTS\" xml:space=\"preserve\">\n    <value>Fly back to the destroyed city</value>\n  </data>\n  <data name=\"LAST_HOPE_LEAVE_SHAFTS_DESC\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"LAST_HOPE_REACH_CATCH_SHIPS\" xml:space=\"preserve\">\n    <value>Catch the slaver ships</value>\n  </data>\n  <data name=\"LAST_HOPE_REACH_CATCH_SHIPS_DESC\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"LAST_HOPE_REACH_COLONY\" xml:space=\"preserve\">\n    <value>Reach the colony</value>\n  </data>\n  <data name=\"LAST_HOPE_REACH_COLONY_DESCRIPTION\" xml:space=\"preserve\">\n    <value>Get inside the asteroid ASAP\n</value>\n  </data>\n  <data name=\"LAST_HOPE_REACH_DESTROY_RIDERS\" xml:space=\"preserve\">\n    <value>Disable slavers’ motherships</value>\n  </data>\n  <data name=\"LAST_HOPE_REACH_DESTROY_RIDERS_DESC\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"LAST_HOPE_REACH_REACH_CAVE\" xml:space=\"preserve\">\n    <value>Reach the cave entrance to the underground shaft</value>\n  </data>\n  <data name=\"LAST_HOPE_REACH_REACH_CAVE_DESC\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"LAST_HOPE_REACH_STOP_SHIPS\" xml:space=\"preserve\">\n    <value>Stop slaver ships from leaving</value>\n  </data>\n  <data name=\"LAST_HOPE_REACH_STOP_SHIPS_DESC\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"LAST_HOPE_REACH_TUNNEL\" xml:space=\"preserve\">\n    <value>Find the maintenance tunnel</value>\n  </data>\n  <data name=\"LAST_HOPE_REACH_TUNNEL_DESC\" xml:space=\"preserve\">\n    <value>Go to the waypoint and look around. You’re looking for red lights in a tunnel. Beware of slaver smallships.</value>\n  </data>\n  <data name=\"LAST_HOPE_STABILIZE_GAS\" xml:space=\"preserve\">\n    <value>Stabilize the sabotaged gas facilities</value>\n  </data>\n  <data name=\"LAST_HOPE_STABILIZE_GAS_DESC\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"LAST_HOPE_STABILIZE_GAS_DESC1\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"LAST_HOPE_STABILIZE_NUCLEAR_CORE\" xml:space=\"preserve\">\n    <value>Stabilize the nuclear core</value>\n  </data>\n  <data name=\"ChangeMaterial\" xml:space=\"preserve\">\n    <value>Change material</value>\n  </data>\n  <data name=\"Actor_ReichstagOfficer\" xml:space=\"preserve\">\n    <value>Officer</value>\n  </data>\n  <data name=\"Actor_ReichstagCaptain\" xml:space=\"preserve\">\n    <value>Captain</value>\n  </data>\n  <data name=\"Flat_256x64x256\" xml:space=\"preserve\">\n    <value>Flat_256x64x256</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"ASTEROID_COMPLEX_Description\" xml:space=\"preserve\">\n    <value>Asteroid complex\n</value>\n  </data>\n  <data name=\"ASTEROID_COMPLEX\" xml:space=\"preserve\">\n    <value>Asteroid complex</value>\n  </data>\n  <data name=\"EAC_AMBUSH_DEFEND_MADELYN1\" xml:space=\"preserve\">\n    <value>Defend Madelyn</value>\n  </data>\n  <data name=\"EAC_AMBUSH_DEFEND_MADELYN1_DESC\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"EAC_AMBUSH_DEFEND_MADELYN2\" xml:space=\"preserve\">\n    <value>Defend Madelyn</value>\n  </data>\n  <data name=\"EAC_AMBUSH_DEFEND_MADELYN2_DESC\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"EAC_AMBUSH_DESTROY_GENERATOR\" xml:space=\"preserve\">\n    <value>Destroy the disruptor generator</value>\n  </data>\n  <data name=\"EAC_AMBUSH_DESTROY_GENERATOR_DESC\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"EAC_AMBUSH_FLY_TO_MANJEET\" xml:space=\"preserve\">\n    <value>Fly to Manjeet</value>\n  </data>\n  <data name=\"EAC_AMBUSH_FLY_TO_MANJEET_DESC\" xml:space=\"preserve\">\n    <value>Find Manjeet somewhere in the city.</value>\n  </data>\n  <data name=\"EAC_AMBUSH_GO_BACK_TO_MADELYN\" xml:space=\"preserve\">\n    <value>Go back to Madelyn</value>\n  </data>\n  <data name=\"EAC_AMBUSH_GO_BACK_TO_MADELYN_DESC\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"EAC_AMBUSH_RETURN_TO_MADELYN\" xml:space=\"preserve\">\n    <value>Go back to Madelyn</value>\n  </data>\n  <data name=\"EAC_AMBUSH_RETURN_TO_MADELYN_DESC\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"p511_a18_billboard\" xml:space=\"preserve\">\n    <value>Large Billboard 18</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p511_a19_billboard\" xml:space=\"preserve\">\n    <value>Large Billboard 19</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"DevelopBuild\" xml:space=\"preserve\">\n    <value>DEVELOP BUILD</value>\n  </data>\n  <data name=\"TestBuild\" xml:space=\"preserve\">\n    <value>TEST BUILD</value>\n  </data>\n  <data name=\"LAST_HOPE_SPEAK_WITH_FATHER\" xml:space=\"preserve\">\n    <value>Speak with Father Tobias</value>\n  </data>\n  <data name=\"LAST_HOPE_SPEAK_WITH_FATHER_DESC\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"Reward\" xml:space=\"preserve\">\n    <value>Reward</value>\n  </data>\n  <data name=\"PressToTakeTransmitter\" xml:space=\"preserve\">\n    <value>Hold {0} to take the transmitter</value>\n  </data>\n  <data name=\"PressToPlaceDetector\" xml:space=\"preserve\">\n    <value>Hold {0} to place the detector</value>\n  </data>\n  <data name=\"PressToStartTransmission\" xml:space=\"preserve\">\n    <value>Hold {0} to start the transmission</value>\n  </data>\n  <data name=\"Transmission\" xml:space=\"preserve\">\n    <value>Transmission</value>\n  </data>\n  <data name=\"PlacingBomb\" xml:space=\"preserve\">\n    <value>Placing the bomb…</value>\n  </data>\n  <data name=\"StartingTransmission\" xml:space=\"preserve\">\n    <value>Starting the transmission…</value>\n  </data>\n  <data name=\"PiratesRewardObtained\" xml:space=\"preserve\">\n    <value>You have obtained $50,000.</value>\n  </data>\n  <data name=\"NotificationYouCanTake\" xml:space=\"preserve\">\n    <value>Hold {0} to take {1}</value>\n  </data>\n  <data name=\"ResearchVesselCaptain\" xml:space=\"preserve\">\n    <value>Research vessel captain</value>\n  </data>\n  <data name=\"Flat_128x64x128\" xml:space=\"preserve\">\n    <value>Flat_128x64x128</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Flat_512x64x512\" xml:space=\"preserve\">\n    <value>Flat_512x64x512</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"Fixing\" xml:space=\"preserve\">\n    <value>Fixing</value>\n  </data>\n  <data name=\"GasPipe\" xml:space=\"preserve\">\n    <value>Gas pipe</value>\n  </data>\n  <data name=\"PressToRepairGasPipe\" xml:space=\"preserve\">\n    <value>Hold {0} to repair the gas pipe</value>\n  </data>\n  <data name=\"PressToRepairRadiation\" xml:space=\"preserve\">\n    <value>Hold {0} to fix the radiation leak</value>\n  </data>\n  <data name=\"RadiationLeak\" xml:space=\"preserve\">\n    <value>Radiation leak</value>\n  </data>\n  <data name=\"Actor_LaikaOperator\" xml:space=\"preserve\">\n    <value>Laika operator</value>\n  </data>\n  <data name=\"Fail_PlutoniumLost\" xml:space=\"preserve\">\n    <value>You have lost your plutonium</value>\n  </data>\n  <data name=\"YouWereDetected\" xml:space=\"preserve\">\n    <value>You were detected!</value>\n  </data>\n  <data name=\"DontHarvest\" xml:space=\"preserve\">\n    <value>Don’t harvest here!</value>\n  </data>\n  <data name=\"MarcusAndValentinoLeavingParty\" xml:space=\"preserve\">\n    <value>Marcus and Valentino are leaving the party</value>\n  </data>\n  <data name=\"MP_RemoteControlled\" xml:space=\"preserve\">\n    <value>Unavailable</value>\n  </data>\n  <data name=\"AUTONOMOUS_OUTPOST\" xml:space=\"preserve\">\n    <value>Autonomous outpost</value>\n  </data>\n  <data name=\"AUTONOMOUS_OUTPOST_Description\" xml:space=\"preserve\">\n    <value>Autonomous outpost\n</value>\n  </data>\n  <data name=\"BIOFACILITY\" xml:space=\"preserve\">\n    <value>Biofacility</value>\n  </data>\n  <data name=\"BIOFACILITY_Description\" xml:space=\"preserve\">\n    <value>Biofacility\n</value>\n  </data>\n  <data name=\"CONVOY\" xml:space=\"preserve\">\n    <value>Convoy</value>\n  </data>\n  <data name=\"CONVOY_Description\" xml:space=\"preserve\">\n    <value>Convoy\n</value>\n  </data>\n  <data name=\"INTERGALACTIC_HIGHWAY\" xml:space=\"preserve\">\n    <value>Intergalactic highway</value>\n  </data>\n  <data name=\"INTERGALACTIC_HIGHWAY_Description\" xml:space=\"preserve\">\n    <value>Intergalactic highway\n</value>\n  </data>\n  <data name=\"MOTHERSHIP_CRASH\" xml:space=\"preserve\">\n    <value>Mothership crash</value>\n  </data>\n  <data name=\"MOTHERSHIP_CRASHL_Description\" xml:space=\"preserve\">\n    <value>Mothership crash\n</value>\n  </data>\n  <data name=\"MP_GameHasEnded\" xml:space=\"preserve\">\n    <value>Game has ended</value>\n  </data>\n  <data name=\"MadelynWasDestroyed\" xml:space=\"preserve\">\n    <value>Madelyn’s Sapho has been destroyed.</value>\n  </data>\n  <data name=\"Sapho\" xml:space=\"preserve\">\n    <value>Madelyn’s Sapho</value>\n  </data>\n  <data name=\"GATES_OF_HELL\" xml:space=\"preserve\">\n    <value>Gates of Hell</value>\n  </data>\n  <data name=\"GATES_OF_HELL_Description\" xml:space=\"preserve\">\n    <value>Gates of Hell\n</value>\n  </data>\n  <data name=\"MINER_OUTPOST\" xml:space=\"preserve\">\n    <value>Helium mines</value>\n  </data>\n  <data name=\"MINER_OUTPOST_Description\" xml:space=\"preserve\">\n    <value>Helium mines\n</value>\n  </data>\n  <data name=\"MINER_UPRISING\" xml:space=\"preserve\">\n    <value>Miner uprising</value>\n  </data>\n  <data name=\"MINER_UPRISING_Description\" xml:space=\"preserve\">\n    <value>Miner uprising\n</value>\n  </data>\n  <data name=\"Fail_Autodestruction\" xml:space=\"preserve\">\n    <value>You were killed in the auto-destruction sequence</value>\n  </data>\n  <data name=\"Fail_MothershipDestroyed\" xml:space=\"preserve\">\n    <value>Your mothership was destroyed</value>\n  </data>\n  <data name=\"Fail_ObjectiveDestroyed\" xml:space=\"preserve\">\n    <value>Your objective was destroyed</value>\n  </data>\n  <data name=\"Fail_RaceLost\" xml:space=\"preserve\">\n    <value>You have lost the race</value>\n  </data>\n  <data name=\"Fail_TimeIsUp\" xml:space=\"preserve\">\n    <value>You have ran out of time</value>\n  </data>\n  <data name=\"PirateBaseGeneratorFailMessage\" xml:space=\"preserve\">\n    <value>You have failed in protecting the generator</value>\n  </data>\n  <data name=\"Fail_HackerKilled\" xml:space=\"preserve\">\n    <value>You have failed in protecting the hacker</value>\n  </data>\n  <data name=\"Fail_TransportDestroyed\" xml:space=\"preserve\">\n    <value>The transport was destroyed</value>\n  </data>\n  <data name=\"MerchantMixed_Tier_1\" xml:space=\"preserve\">\n    <value>Merchant Mixed Tier 1</value>\n  </data>\n  <data name=\"MerchantMixed_Tier_2\" xml:space=\"preserve\">\n    <value>Merchant Mixed Tier 2</value>\n  </data>\n  <data name=\"MerchantMixed_Tier_3\" xml:space=\"preserve\">\n    <value>Merchant Mixed Tier 3</value>\n  </data>\n  <data name=\"MerchantMixed_Tier_4\" xml:space=\"preserve\">\n    <value>Merchant Mixed Tier 4</value>\n  </data>\n  <data name=\"MerchantMixed_Tier_5\" xml:space=\"preserve\">\n    <value>Merchant Mixed Tier 5</value>\n  </data>\n  <data name=\"MerchantMixed_Tier_6\" xml:space=\"preserve\">\n    <value>Merchant Mixed Tier 6</value>\n  </data>\n  <data name=\"MerchantMixed_Tier_7\" xml:space=\"preserve\">\n    <value>Merchant Mixed Tier 7</value>\n  </data>\n  <data name=\"MerchantMixed_Tier_8\" xml:space=\"preserve\">\n    <value>Merchant Mixed Tier 8</value>\n  </data>\n  <data name=\"MerchantMixed_Tier_9\" xml:space=\"preserve\">\n    <value>Merchant Mixed Tier 9</value>\n  </data>\n  <data name=\"MerchantMixed_Tier_Special\" xml:space=\"preserve\">\n    <value>Merchant Mixed Tier Special</value>\n  </data>\n  <data name=\"MerchantArmy_Tier_1\" xml:space=\"preserve\">\n    <value>Merchant Army Tier 1</value>\n  </data>\n  <data name=\"MerchantArmy_Tier_2\" xml:space=\"preserve\">\n    <value>Merchant Army Tier 2</value>\n  </data>\n  <data name=\"MerchantArmy_Tier_3\" xml:space=\"preserve\">\n    <value>Merchant Army Tier 3</value>\n  </data>\n  <data name=\"MerchantArmy_Tier_4\" xml:space=\"preserve\">\n    <value>Merchant Army Tier 4</value>\n  </data>\n  <data name=\"MerchantArmy_Tier_5\" xml:space=\"preserve\">\n    <value>Merchant Army Tier 5</value>\n  </data>\n  <data name=\"MerchantArmy_Tier_6\" xml:space=\"preserve\">\n    <value>Merchant Army Tier 6</value>\n  </data>\n  <data name=\"MerchantArmy_Tier_7\" xml:space=\"preserve\">\n    <value>Merchant Army Tier 7</value>\n  </data>\n  <data name=\"MerchantArmy_Tier_8\" xml:space=\"preserve\">\n    <value>Merchant Army Tier 8</value>\n  </data>\n  <data name=\"MerchantArmy_Tier_9\" xml:space=\"preserve\">\n    <value>Merchant Army Tier 9</value>\n  </data>\n  <data name=\"MerchantArmy_Tier_Special\" xml:space=\"preserve\">\n    <value>Merchant Army Tier Special</value>\n  </data>\n  <data name=\"MerchantMedicine_Tier_1\" xml:space=\"preserve\">\n    <value>Merchant Medicine Tier 1</value>\n  </data>\n  <data name=\"MerchantMedicine_Tier_2\" xml:space=\"preserve\">\n    <value>Merchant Medicine Tier 2</value>\n  </data>\n  <data name=\"MerchantMedicine_Tier_3\" xml:space=\"preserve\">\n    <value>Merchant Medicine Tier 3</value>\n  </data>\n  <data name=\"MerchantMedicine_Tier_4\" xml:space=\"preserve\">\n    <value>Merchant Medicine Tier 4</value>\n  </data>\n  <data name=\"MerchantMedicine_Tier_5\" xml:space=\"preserve\">\n    <value>Merchant Medicine Tier 5</value>\n  </data>\n  <data name=\"MerchantMedicine_Tier_6\" xml:space=\"preserve\">\n    <value>Merchant Medicine Tier 6</value>\n  </data>\n  <data name=\"MerchantMedicine_Tier_7\" xml:space=\"preserve\">\n    <value>Merchant Medicine Tier 7</value>\n  </data>\n  <data name=\"MerchantMedicine_Tier_8\" xml:space=\"preserve\">\n    <value>Merchant Medicine Tier 8</value>\n  </data>\n  <data name=\"MerchantMedicine_Tier_9\" xml:space=\"preserve\">\n    <value>Merchant Medicine Tier 9</value>\n  </data>\n  <data name=\"MerchantMedicine_Tier_Special\" xml:space=\"preserve\">\n    <value>Merchant Medicine Tier Special</value>\n  </data>\n  <data name=\"MerchantTools_Tier_1\" xml:space=\"preserve\">\n    <value>Merchant Tools Tier 1</value>\n  </data>\n  <data name=\"MerchantTools_Tier_2\" xml:space=\"preserve\">\n    <value>Merchant Tools Tier 2</value>\n  </data>\n  <data name=\"MerchantTools_Tier_3\" xml:space=\"preserve\">\n    <value>Merchant Tools Tier 3</value>\n  </data>\n  <data name=\"MerchantTools_Tier_4\" xml:space=\"preserve\">\n    <value>Merchant Tools Tier 4</value>\n  </data>\n  <data name=\"MerchantTools_Tier_5\" xml:space=\"preserve\">\n    <value>Merchant Tools Tier 5</value>\n  </data>\n  <data name=\"MerchantTools_Tier_6\" xml:space=\"preserve\">\n    <value>Merchant Tools Tier 6</value>\n  </data>\n  <data name=\"MerchantTools_Tier_7\" xml:space=\"preserve\">\n    <value>Merchant Tools Tier 7</value>\n  </data>\n  <data name=\"MerchantTools_Tier_8\" xml:space=\"preserve\">\n    <value>Merchant Tools Tier 8</value>\n  </data>\n  <data name=\"MerchantTools_Tier_9\" xml:space=\"preserve\">\n    <value>Merchant Tools Tier 9</value>\n  </data>\n  <data name=\"MerchantTools_Tier_Special\" xml:space=\"preserve\">\n    <value>Merchant Tools Tier Special</value>\n  </data>\n  <data name=\"Actor_EacSurveySite_MilitaryCaptain\" xml:space=\"preserve\">\n    <value>Captain</value>\n  </data>\n  <data name=\"OpenChat\" xml:space=\"preserve\">\n    <value>Chat</value>\n  </data>\n  <data name=\"OpenScore\" xml:space=\"preserve\">\n    <value>Multiplayer statistics</value>\n  </data>\n  <data name=\"IncreaseCargoCapacity\" xml:space=\"preserve\">\n    <value>Increase cargo capacity</value>\n  </data>\n  <data name=\"NotificationSolarWindWarning\" xml:space=\"preserve\">\n    <value>Sun has errupted – solar flare approaching. Find cover.</value>\n  </data>\n  <data name=\"ASTEROID_FIELD\" xml:space=\"preserve\">\n    <value>Asteroid research field</value>\n  </data>\n  <data name=\"ASTEROID_FIELD_Description\" xml:space=\"preserve\">\n    <value>Asteroid research field\n</value>\n  </data>\n  <data name=\"DUMPING_GROUND\" xml:space=\"preserve\">\n    <value>Dumping ground</value>\n  </data>\n  <data name=\"DUMPING_GROUND_Description\" xml:space=\"preserve\">\n    <value>Dumping ground\n</value>\n  </data>\n  <data name=\"FACTORY_AMBUSH\" xml:space=\"preserve\">\n    <value>Factory ambush</value>\n  </data>\n  <data name=\"FACTORY_AMBUSH_Description\" xml:space=\"preserve\">\n    <value>Factory ambush\n</value>\n  </data>\n  <data name=\"INDUSTRIAL_SECTOR\" xml:space=\"preserve\">\n    <value>Industrial sector</value>\n  </data>\n  <data name=\"INDUSTRIAL_SECTOR_Description\" xml:space=\"preserve\">\n    <value>Industrial sector\n</value>\n  </data>\n  <data name=\"HackingResult_NoHackingTool\" xml:space=\"preserve\">\n    <value>You have no hacking tool</value>\n  </data>\n  <data name=\"RemoveAllVoxelHands\" xml:space=\"preserve\">\n    <value>Remove all voxel hands</value>\n  </data>\n  <data name=\"ClearVoxelHandsWarning\" xml:space=\"preserve\">\n    <value>Do you want to delete all voxel hands from the selected voxel asteroid?</value>\n  </data>\n  <data name=\"ThisObject\" xml:space=\"preserve\">\n    <value>this object</value>\n  </data>\n  <data name=\"FORGOTTEN_FACILITY\" xml:space=\"preserve\">\n    <value>Forgotten facility</value>\n  </data>\n  <data name=\"FORGOTTEN_FACILITY_Description\" xml:space=\"preserve\">\n    <value>There were many things to be said about this facility, but they are all forgotten.\n</value>\n  </data>\n  <data name=\"ExitDrone\" xml:space=\"preserve\">\n    <value>Exit the drone</value>\n  </data>\n  <data name=\"EnterDrone\" xml:space=\"preserve\">\n    <value>Enter the drone</value>\n  </data>\n  <data name=\"ActivatedUpToDifficulty\" xml:space=\"preserve\">\n    <value>Activated up to difficulty</value>\n  </data>\n  <data name=\"ZOMBIE_LEVEL\" xml:space=\"preserve\">\n    <value>Zombie level</value>\n  </data>\n  <data name=\"ZOMBIE_LEVEL_Description\" xml:space=\"preserve\">\n    <value>No video game is complete without zombies.\n</value>\n  </data>\n  <data name=\"PirateBaseStaticAsteroid_A_1000m\" xml:space=\"preserve\">\n    <value>PirateBaseStaticAsteroid_A_1000m</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"PirateBaseStaticAsteroid_A_5000m_1\" xml:space=\"preserve\">\n    <value>PirateBaseStaticAsteroid_A_5000m_1</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"PirateBaseStaticAsteroid_A_5000m_2\" xml:space=\"preserve\">\n    <value>PirateBaseStaticAsteroid_A_5000m_2</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"EditVoxelHandShapeCylinder\" xml:space=\"preserve\">\n    <value>Voxel hand cylinder</value>\n  </data>\n  <data name=\"SmallShipMinerShip01Name\" xml:space=\"preserve\">\n    <value>Liberator</value>\n  </data>\n  <data name=\"SmallShipMinerShip02Name\" xml:space=\"preserve\">\n    <value>Enforcer</value>\n  </data>\n  <data name=\"SmallShipMinerShip03Name\" xml:space=\"preserve\">\n    <value>Kammler</value>\n  </data>\n  <data name=\"SmallShipMinerShip04Name\" xml:space=\"preserve\">\n    <value>Gettysburg</value>\n  </data>\n  <data name=\"SmallShipMinerShip05Name\" xml:space=\"preserve\">\n    <value>Virginia</value>\n  </data>\n  <data name=\"SmallShipMinerShip06Name\" xml:space=\"preserve\">\n    <value>Baer</value>\n  </data>\n  <data name=\"SmallShipMinerShip07Name\" xml:space=\"preserve\">\n    <value>Hewer</value>\n  </data>\n  <data name=\"SmallShipMinerShip08Name\" xml:space=\"preserve\">\n    <value>Razor Claw</value>\n  </data>\n  <data name=\"SmallShipMinerShip09Name\" xml:space=\"preserve\">\n    <value>Greiser</value>\n  </data>\n  <data name=\"SmallShipMinerShip10Name\" xml:space=\"preserve\">\n    <value>Tracer</value>\n  </data>\n  <data name=\"SmallShipJackKnifeName\" xml:space=\"preserve\">\n    <value>Jacknife</value>\n  </data>\n  <data name=\"SmallShipDoonName\" xml:space=\"preserve\">\n    <value>Doon</value>\n  </data>\n  <data name=\"SmallShipHammerName\" xml:space=\"preserve\">\n    <value>Hammer</value>\n  </data>\n  <data name=\"SmallShipOrgName\" xml:space=\"preserve\">\n    <value>Org</value>\n  </data>\n  <data name=\"SmallShipYgName\" xml:space=\"preserve\">\n    <value>Yg</value>\n  </data>\n  <data name=\"SmallShipHawkName\" xml:space=\"preserve\">\n    <value>Hawk</value>\n  </data>\n  <data name=\"SmallShipPhoenixName\" xml:space=\"preserve\">\n    <value>Phoenix</value>\n  </data>\n  <data name=\"SmallShipLeviathanName\" xml:space=\"preserve\">\n    <value>Leviathan</value>\n  </data>\n  <data name=\"SmallShipRockheaterName\" xml:space=\"preserve\">\n    <value>Rockheater</value>\n  </data>\n  <data name=\"SmallShipSteelHeadName\" xml:space=\"preserve\">\n    <value>Steelhead</value>\n  </data>\n  <data name=\"SmallShipTalonName\" xml:space=\"preserve\">\n    <value>Feder</value>\n  </data>\n  <data name=\"SmallShipStanislavName\" xml:space=\"preserve\">\n    <value>Stanislav</value>\n  </data>\n  <data name=\"OreStoneName\" xml:space=\"preserve\">\n    <value>Stone</value>\n  </data>\n  <data name=\"OreIronName\" xml:space=\"preserve\">\n    <value>Iron</value>\n  </data>\n  <data name=\"OreUraniteName\" xml:space=\"preserve\">\n    <value>Plutonium</value>\n  </data>\n  <data name=\"OreHeliumName\" xml:space=\"preserve\">\n    <value>Helium</value>\n  </data>\n  <data name=\"OreIceName\" xml:space=\"preserve\">\n    <value>Ice</value>\n  </data>\n  <data name=\"OreGoldName\" xml:space=\"preserve\">\n    <value>Gold</value>\n  </data>\n  <data name=\"OreSilverName\" xml:space=\"preserve\">\n    <value>Silver</value>\n  </data>\n  <data name=\"OreSiliconName\" xml:space=\"preserve\">\n    <value>Silicon</value>\n  </data>\n  <data name=\"OrePlatinumName\" xml:space=\"preserve\">\n    <value>Platinum</value>\n  </data>\n  <data name=\"OreNickelName\" xml:space=\"preserve\">\n    <value>Nickel</value>\n  </data>\n  <data name=\"OreCobaltName\" xml:space=\"preserve\">\n    <value>Cobalt</value>\n  </data>\n  <data name=\"OreMagnesiumName\" xml:space=\"preserve\">\n    <value>Magnesium</value>\n  </data>\n  <data name=\"OreTreasureName\" xml:space=\"preserve\">\n    <value>Treasure</value>\n  </data>\n  <data name=\"OreOrganicName\" xml:space=\"preserve\">\n    <value>Organic</value>\n  </data>\n  <data name=\"OreLavaName\" xml:space=\"preserve\">\n    <value>Lava</value>\n  </data>\n  <data name=\"OreSnowName\" xml:space=\"preserve\">\n    <value>Snow</value>\n  </data>\n  <data name=\"OreSandstoneName\" xml:space=\"preserve\">\n    <value>Sandstone</value>\n  </data>\n  <data name=\"OreConcreteName\" xml:space=\"preserve\">\n    <value>Concrete</value>\n  </data>\n  <data name=\"SaveCurrentProgress\" xml:space=\"preserve\">\n    <value>Do you want to save before exiting?</value>\n  </data>\n  <data name=\"SaveCurrentProgressCaption\" xml:space=\"preserve\">\n    <value>Save?</value>\n  </data>\n  <data name=\"CHINESE_ESCAPE_SectorDescription\" xml:space=\"preserve\">\n    <value>The plutonium refinery and processing facility at Jingzhou. A well-protected Chinese base \nspecializing in processing of numerous grades of plutonium. Raw ore is transported here \nfrom the Changde and Xining sectors and refined as fuel for nuclear weapons, reactors, \npocket fuel cells, and numerous experimental and technical devices, for both military and \nindustrial use.</value>\n  </data>\n  <data name=\"CHINESE_ESCAPE_SectorName\" xml:space=\"preserve\">\n    <value>CHINESE REFINERY OF JINGZHOU</value>\n  </data>\n  <data name=\"Actor_RaceOpponent\" xml:space=\"preserve\">\n    <value>Race Opponent</value>\n  </data>\n  <data name=\"ToolRadarJammerName\" xml:space=\"preserve\">\n    <value>Radar jammer</value>\n  </data>\n  <data name=\"RacingFan\" xml:space=\"preserve\">\n    <value>Racing fan</value>\n  </data>\n  <data name=\"Actor_RimeBarkeeper\" xml:space=\"preserve\">\n    <value>Barkeeper</value>\n  </data>\n  <data name=\"Actor_RimeMitchel\" xml:space=\"preserve\">\n    <value>Mitchel</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"PlantingInProgress\" xml:space=\"preserve\">\n    <value>Planting in progress</value>\n  </data>\n  <data name=\"LocalDataCorrupted\" xml:space=\"preserve\">\n    <value>Local data corrupted</value>\n  </data>\n  <data name=\"NotAvailableInOffline\" xml:space=\"preserve\">\n    <value>Not available in offline mode</value>\n  </data>\n  <data name=\"HarvestNotification\" xml:space=\"preserve\">\n    <value>Harvested {0:0.00} units of {1}</value>\n  </data>\n  <data name=\"HarvestNotificationInventoryFull\" xml:space=\"preserve\">\n    <value>Inventory full, wasted {0:0.00} units of {1}</value>\n  </data>\n  <data name=\"d25asteroid_field\" xml:space=\"preserve\">\n    <value>d25asteroid_field</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"d25city_fight\" xml:space=\"preserve\">\n    <value>d25city_fight</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"d25gates_ofhell\" xml:space=\"preserve\">\n    <value>d25gates_ofhell</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"d25junkyard\" xml:space=\"preserve\">\n    <value>d25junkyard</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"d25military_area\" xml:space=\"preserve\">\n    <value>d25military_area</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"d25miner_outpost\" xml:space=\"preserve\">\n    <value>d25miner_outpost</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"d25plain\" xml:space=\"preserve\">\n    <value>d25plain</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"d25radioactive\" xml:space=\"preserve\">\n    <value>d25radioactive</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"YouNeed25D\" xml:space=\"preserve\">\n    <value>You need to own “2.5D Experiment” / Arena</value>\n  </data>\n  <data name=\"Russian_Transmitter_Main\" xml:space=\"preserve\">\n    <value>Russian Transmitter Main</value>\n  </data>\n  <data name=\"EAC_SURVEY_SITE_GOTO_10_Name\" xml:space=\"preserve\">\n    <value>Escape</value>\n  </data>\n  <data name=\"EAC_SURVEY_SITE_GOTO_10_Description\" xml:space=\"preserve\">\n    <value>The exit is located in red hub above.\n</value>\n  </data>\n  <data name=\"EAC_SURVEY_SITE_CLEAR_THE_WAY_Name\" xml:space=\"preserve\">\n    <value>Clear the way</value>\n  </data>\n  <data name=\"EAC_SURVEY_SITE_CLEAR_THE_WAY_Description\" xml:space=\"preserve\">\n    <value>Destroy the baricade to get through!\n</value>\n  </data>\n  <data name=\"EAC_SURVEY_SITE_GOTO_30_Name\" xml:space=\"preserve\">\n    <value>Fly to the main base</value>\n  </data>\n  <data name=\"EAC_SURVEY_SITE_GOTO_30_Description\" xml:space=\"preserve\">\n    <value>Cross the skyway to get to the main part of the base.\n</value>\n  </data>\n  <data name=\"EAC_SURVEY_SITE_GOTO_40_Name\" xml:space=\"preserve\">\n    <value>Contact Madelyn</value>\n  </data>\n  <data name=\"EAC_SURVEY_SITE_GOTO_40_Description\" xml:space=\"preserve\">\n    <value>Get to the command center and use the transmiter.\n</value>\n  </data>\n  <data name=\"EAC_SURVEY_SITE_GENERATOR_Name\" xml:space=\"preserve\">\n    <value>Start generators</value>\n  </data>\n  <data name=\"EAC_SURVEY_SITE_GENERATOR_Description\" xml:space=\"preserve\">\n    <value>An auxiliary generator is near the workshop.\n</value>\n  </data>\n  <data name=\"EAC_SURVEY_SITE_GOTO_60_Name\" xml:space=\"preserve\">\n    <value>Return to the command center</value>\n  </data>\n  <data name=\"EAC_SURVEY_SITE_GOTO_60_Description\" xml:space=\"preserve\">\n    <value>We should be able to hold up there until someone comes to help.\n</value>\n  </data>\n  <data name=\"EAC_SURVEY_SITE_GOTO_65_Name\" xml:space=\"preserve\">\n    <value>Save miners</value>\n  </data>\n  <data name=\"EAC_SURVEY_SITE_GOTO_65_Description\" xml:space=\"preserve\">\n    <value>There are a few miners hiding in the sealed ore processing area.</value>\n  </data>\n  <data name=\"EAC_SURVEY_SITE_SAVEMINERS_Name\" xml:space=\"preserve\">\n    <value>Save miners</value>\n  </data>\n  <data name=\"EAC_SURVEY_SITE_SAVEMINERS_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"EAC_SURVEY_SITE_GOTO_70_Name\" xml:space=\"preserve\">\n    <value>Get to the hangar</value>\n  </data>\n  <data name=\"EAC_SURVEY_SITE_GOTO_70_Description\" xml:space=\"preserve\">\n    <value>Of all the areas in the base, the hangar has the heaviest defenses. Use it to our advantage.\n</value>\n  </data>\n  <data name=\"EAC_SURVEY_SITE_SURVIVE_Name\" xml:space=\"preserve\">\n    <value>Wait for Madelyn</value>\n  </data>\n  <data name=\"EAC_SURVEY_SITE_SURVIVE_Description\" xml:space=\"preserve\">\n    <value>It will take some time for Madelyn to get there. \n</value>\n  </data>\n  <data name=\"EAC_SURVEY_SITE_GOTO_90_Name\" xml:space=\"preserve\">\n    <value>Board Sapho</value>\n  </data>\n  <data name=\"EAC_SURVEY_SITE_GOTO_90_Description\" xml:space=\"preserve\">\n    <value>The way is clear, get out!</value>\n  </data>\n  <data name=\"Danger\" xml:space=\"preserve\">\n    <value>Danger!</value>\n  </data>\n  <data name=\"LAIKA_GOTO_10_Name\" xml:space=\"preserve\">\n    <value>Reach the hangar</value>\n  </data>\n  <data name=\"LAIKA_GOTO_10_Description\" xml:space=\"preserve\">\n    <value>That security check is fishy; don’t let your guard down.\n</value>\n  </data>\n  <data name=\"LAIKA_GOTO_GENERATOR_Name\" xml:space=\"preserve\">\n    <value>Destroy turret generator</value>\n  </data>\n  <data name=\"LAIKA_GOTO_GENERATOR_Description\" xml:space=\"preserve\">\n    <value>The turrets are powered by a dedicated generator. Shutting it down should disable them.\n</value>\n  </data>\n  <data name=\"LAIKA_GOTO_COMMAND_Name\" xml:space=\"preserve\">\n    <value>Check the command center</value>\n  </data>\n  <data name=\"LAIKA_GOTO_COMMAND_Description\" xml:space=\"preserve\">\n    <value>They were surely involved in the attack. Try to hack their database and look for clues.\n</value>\n  </data>\n  <data name=\"LAIKA_GOTO_COMMUNICATION_01_Name\" xml:space=\"preserve\">\n    <value>Check communication hubs</value>\n  </data>\n  <data name=\"LAIKA_GOTO_COMMUNICATION_01_Description\" xml:space=\"preserve\">\n    <value>The data was securely deleted from the main servers. Let’s hope there will be a backup in the communication hubs.\n</value>\n  </data>\n  <data name=\"LAIKA_GOTO_COMMUNICATION_02_Name\" xml:space=\"preserve\">\n    <value>Check communication hubs</value>\n  </data>\n  <data name=\"LAIKA_GOTO_COMMUNICATION_02_Description\" xml:space=\"preserve\">\n    <value>The data was securely deleted from the main servers. Let’s hope there will be a backup in the communication hubs.\n</value>\n  </data>\n  <data name=\"LAIKA_WARHEAD_Name\" xml:space=\"preserve\">\n    <value>Activate warhead</value>\n  </data>\n  <data name=\"LAIKA_WARHEAD_Description\" xml:space=\"preserve\">\n    <value>We need to make a distraction.\n</value>\n  </data>\n  <data name=\"LAIKA_RETURN_Name\" xml:space=\"preserve\">\n    <value>Return to Sapho</value>\n  </data>\n  <data name=\"LAIKA_RETURN_Description\" xml:space=\"preserve\">\n    <value>We’ve got what we came for. Let’s get out of there.\n</value>\n  </data>\n  <data name=\"LAIKA_LASTSTAND_Name\" xml:space=\"preserve\">\n    <value>Hide from the explosion</value>\n  </data>\n  <data name=\"LAIKA_LASTSTAND_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"ALIEN_GATE_RIGHT_WING_Name\" xml:space=\"preserve\">\n    <value>Keep formation with Sapho</value>\n  </data>\n  <data name=\"ALIEN_GATE_RIGHT_WING_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"ALIEN_GATE_FOLLOW_COORDINATES_Name\" xml:space=\"preserve\">\n    <value>Follow received coordinates</value>\n  </data>\n  <data name=\"ALIEN_GATE_CONTINUE_SEARCHING_Name\" xml:space=\"preserve\">\n    <value>Continue searching</value>\n  </data>\n  <data name=\"ALIEN_GATE_CONTINUE_SEARCHING_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"ALIEN_GATE_FOLLOW_DIRECTION_Name\" xml:space=\"preserve\">\n    <value>Follow the direction</value>\n  </data>\n  <data name=\"ALIEN_GATE_FOLLOW_DIRECTION_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"ALIEN_GATE_COUGHT_IN_TRAP_Name\" xml:space=\"preserve\">\n    <value>Caught in a trap</value>\n  </data>\n  <data name=\"ALIEN_GATE_COUGHT_IN_TRAP_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"ALIEN_GATE_RUN_FOR_LIFE_Name\" xml:space=\"preserve\">\n    <value>Run</value>\n  </data>\n  <data name=\"ALIEN_GATE_RUN_FOR_LIFE_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"ALIEN_GATE_REGROUP_WITH_MADELYN_Name\" xml:space=\"preserve\">\n    <value>Regroup with Madelyn</value>\n  </data>\n  <data name=\"ALIEN_GATE_REGROUP_WITH_MADELYN_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"ALIEN_GATE_BOARD_MOTHER_SHIP_Name\" xml:space=\"preserve\">\n    <value>Board Russian mothership</value>\n  </data>\n  <data name=\"ALIEN_GATE_BOARD_MOTHER_SHIP_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"ALIEN_GATE_HACK_GENERATOR_Name\" xml:space=\"preserve\">\n    <value>Overload energy generator</value>\n  </data>\n  <data name=\"ALIEN_GATE_HACK_GENERATOR_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"ALIEN_GATE_HACK_ENGINE_Name\" xml:space=\"preserve\">\n    <value>Overload core engine</value>\n  </data>\n  <data name=\"ALIEN_GATE_HACK_ENGINE_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"ALIEN_GATE_LEAVE_SHIP_Name\" xml:space=\"preserve\">\n    <value>Leave the ship</value>\n  </data>\n  <data name=\"ALIEN_GATE_LEAVE_SHIP_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"ALIEN_GATE_REGROPUP_WITH_MADELYN_Name\" xml:space=\"preserve\">\n    <value>Regroup with Madelyn</value>\n  </data>\n  <data name=\"ALIEN_GATE_REGROPUP_WITH_MADELYN_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"ALIEN_GATE_BOARD_SECOND_Name\" xml:space=\"preserve\">\n    <value>Board second Russian mothership</value>\n  </data>\n  <data name=\"ALIEN_GATE_HACK_GENERATOR2_Name\" xml:space=\"preserve\">\n    <value>Overload energy generator</value>\n  </data>\n  <data name=\"ALIEN_GATE_BOARD_SECOND_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"ALIEN_GATE_HACK_GENERATOR2_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"ALIEN_GATE_HACK_ENGINE_2_Name\" xml:space=\"preserve\">\n    <value>Overload core engine</value>\n  </data>\n  <data name=\"ALIEN_GATE_HACK_ENGINE_2_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"ALIEN_GATE_ENABLE_DOORS_Name\" xml:space=\"preserve\">\n    <value>Breach the command deck to unlock the lab</value>\n  </data>\n  <data name=\"ALIEN_GATE_ENABLE_DOORS_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"ALIEN_GATE_ENTER_LAB_Name\" xml:space=\"preserve\">\n    <value>Enter the lab</value>\n  </data>\n  <data name=\"ALIEN_GATE_ENTER_LAB_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"ALIEN_GATE_16_Name\" xml:space=\"preserve\">\n    <value>Download data about alien technology</value>\n  </data>\n  <data name=\"ALIEN_GATE_16_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"ALIEN_GATE_17_Name\" xml:space=\"preserve\">\n    <value>Overload energy generator</value>\n  </data>\n  <data name=\"ALIEN_GATE_17_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"ALIEN_GATE_18_Name\" xml:space=\"preserve\">\n    <value>Escape the ship</value>\n  </data>\n  <data name=\"ALIEN_GATE_18_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"ALIEN_GATE_19_Name\" xml:space=\"preserve\">\n    <value>Kill Francis Reef</value>\n  </data>\n  <data name=\"ALIEN_GATE_19_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"ALIEN_GATE_20_Name\" xml:space=\"preserve\">\n    <value>Prevent Francis Reef from escaping</value>\n  </data>\n  <data name=\"ALIEN_GATE_20_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"ALIEN_GATE_21_Name\" xml:space=\"preserve\">\n    <value>Finish Francis Reef</value>\n  </data>\n  <data name=\"ALIEN_GATE_21_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"ALIEN_GATE_22_Name\" xml:space=\"preserve\">\n    <value>Return to Sapho</value>\n  </data>\n  <data name=\"ALIEN_GATE_22_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"ALIEN_GATE_23_Name\" xml:space=\"preserve\">\n    <value>Explore alien gate</value>\n  </data>\n  <data name=\"ALIEN_GATE_23_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"CampaignIsCompleted\" xml:space=\"preserve\">\n    <value>Campaign completed</value>\n  </data>\n  <data name=\"Destroy\" xml:space=\"preserve\">\n    <value>Destroy</value>\n  </data>\n  <data name=\"AutodestructIn\" xml:space=\"preserve\">\n    <value>Autodestruct in: </value>\n  </data>\n  <data name=\"EAC_PRISON_THRUSWARM_Name\" xml:space=\"preserve\">\n    <value>Approach the prison station</value>\n  </data>\n  <data name=\"EAC_PRISON_THRUSWARM_Description\" xml:space=\"preserve\">\n    <value>You must survive! For your brother’s sake!\n</value>\n  </data>\n  <data name=\"EAC_PRISON_SOLARDEF_Name\" xml:space=\"preserve\">\n    <value>Destroy solar panel defenses</value>\n  </data>\n  <data name=\"EAC_PRISON_SOLARDEF_Description\" xml:space=\"preserve\">\n    <value>Mind the missile turrets.\n</value>\n  </data>\n  <data name=\"EAC_PRISON_SOLAROFF1_Name\" xml:space=\"preserve\">\n    <value>Destroy 75% of solar panels</value>\n  </data>\n  <data name=\"EAC_PRISON_SOLAROFF1_Description\" xml:space=\"preserve\">\n    <value>This will cut the electricity for a while before the backup generators take over.\n</value>\n  </data>\n  <data name=\"EAC_PRISON_MOTHERSHIPHELP_Name\" xml:space=\"preserve\">\n    <value>Destroy communications of EAC mothership</value>\n  </data>\n  <data name=\"EAC_PRISON_MOTHERSHIPHELP_Description\" xml:space=\"preserve\">\n    <value>The FOR siege is in danger from that big Ardant class mothership.\n</value>\n  </data>\n  <data name=\"EAC_PRISON_SOLAROFF2_Name\" xml:space=\"preserve\">\n    <value>Destroy 75% of solar panels</value>\n  </data>\n  <data name=\"EAC_PRISON_SOLAROFF2_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"EAC_PRISON_BREAKIN_Name\" xml:space=\"preserve\">\n    <value>Break into the prison</value>\n  </data>\n  <data name=\"EAC_PRISON_BREAKIN_Description\" xml:space=\"preserve\">\n    <value>Stop reading this, you have about 15 seconds before electricity will be restored.\n</value>\n  </data>\n  <data name=\"EAC_PRISON_LOCINTEL_Name\" xml:space=\"preserve\">\n    <value>Find out Marcus’s location</value>\n  </data>\n  <data name=\"EAC_PRISON_LOCINTEL_Description\" xml:space=\"preserve\">\n    <value>We need the specific location of his cell to get out of this hostile place ASAP.\n</value>\n  </data>\n  <data name=\"EAC_PRISON_ACQUIREIDCARD_Name\" xml:space=\"preserve\">\n    <value>Acquire ID</value>\n  </data>\n  <data name=\"EAC_PRISON_ACQUIREIDCARD_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"EAC_PRISON_LOCINTEL2_Name\" xml:space=\"preserve\">\n    <value>Hack security hub again</value>\n  </data>\n  <data name=\"EAC_PRISON_LOCINTEL2_Description\" xml:space=\"preserve\">\n    <value>\n</value>\n  </data>\n  <data name=\"EAC_PRISON_OPENACCESS_Name\" xml:space=\"preserve\">\n    <value>Open doors to maintance area</value>\n  </data>\n  <data name=\"EAC_PRISON_OPENACCESS_Description\" xml:space=\"preserve\">\n    <value>\n</value>\n  </data>\n  <data name=\"EAC_PRISON_SECURITYOFF_Name\" xml:space=\"preserve\">\n    <value>Shut down the generator</value>\n  </data>\n  <data name=\"EAC_PRISON_SECURITYOFF_Description\" xml:space=\"preserve\">\n    <value>There must be a hub from which it can be shut down in a safe way.\n</value>\n  </data>\n  <data name=\"EAC_PRISON_MARCUSCELL_Name\" xml:space=\"preserve\">\n    <value>Get Marcus</value>\n  </data>\n  <data name=\"EAC_PRISON_MARCUSCELL_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"EAC_PRISON_COVERMARCUS_Name\" xml:space=\"preserve\">\n    <value>Steal ship for Marcus</value>\n  </data>\n  <data name=\"EAC_PRISON_COVERMARCUS_Description\" xml:space=\"preserve\">\n    <value>\n</value>\n  </data>\n  <data name=\"EAC_PRISON_GETARMS_Name\" xml:space=\"preserve\">\n    <value>Get Marcus’s former equipment</value>\n  </data>\n  <data name=\"EAC_PRISON_GETARMS_Description\" xml:space=\"preserve\">\n    <value>\n</value>\n  </data>\n  <data name=\"EAC_PRISON_FIGHTOUT_Name\" xml:space=\"preserve\">\n    <value>Escape</value>\n  </data>\n  <data name=\"EAC_PRISON_FIGHTOUT_Description\" xml:space=\"preserve\">\n    <value>\n</value>\n  </data>\n  <data name=\"EAC_PRISON_CRUSHREINFORCEMENTS_Name\" xml:space=\"preserve\">\n    <value>Crush reinforcements</value>\n  </data>\n  <data name=\"EAC_PRISON_CRUSHREINFORCEMENTS_Description\" xml:space=\"preserve\">\n    <value>They think they can stop us. Fools!\n</value>\n  </data>\n  <data name=\"EAC_PRISON_MEETINGPOINT_Name\" xml:space=\"preserve\">\n    <value>Return to Sapho</value>\n  </data>\n  <data name=\"EAC_PRISON_MEETINGPOINT_Description\" xml:space=\"preserve\">\n    <value>\n</value>\n  </data>\n  <data name=\"DownloadFailed\" xml:space=\"preserve\">\n    <value>Download failed</value>\n  </data>\n  <data name=\"TWIN_TOWERS_SABOTAGE_Name\" xml:space=\"preserve\">\n    <value>Place explosives</value>\n  </data>\n  <data name=\"TWIN_TOWERS_SABOTAGE_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"TWIN_TOWERS_RANDEVOUZ_Name\" xml:space=\"preserve\">\n    <value>Get to the meeting point</value>\n  </data>\n  <data name=\"TWIN_TOWERS_RANDEVOUZ_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"TWIN_TOWERS_ASSAULT_Name\" xml:space=\"preserve\">\n    <value>Seize the command center</value>\n  </data>\n  <data name=\"TWIN_TOWERS_ASSAULT_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"TWIN_TOWERS_HACKING_Name\" xml:space=\"preserve\">\n    <value>Protect the hacker</value>\n  </data>\n  <data name=\"TWIN_TOWERS_HACKING_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"TWIN_TOWERS_JAMMER_Name\" xml:space=\"preserve\">\n    <value>Destroy jammer</value>\n  </data>\n  <data name=\"TWIN_TOWERS_JAMMER_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"Jammer\" xml:space=\"preserve\">\n    <value>Jammer</value>\n  </data>\n  <data name=\"TWIN_TOWERS_HACKING_CONTINUE_Name\" xml:space=\"preserve\">\n    <value>Protect the hacker</value>\n  </data>\n  <data name=\"TWIN_TOWERS_HACKING_CONTINUE_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"TWIN_TOWERS_RAILGUN1_Name\" xml:space=\"preserve\">\n    <value>Seize upper railgun control room</value>\n  </data>\n  <data name=\"TWIN_TOWERS_RAILGUN1_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"TWIN_TOWERS_RAILGUN2_Name\" xml:space=\"preserve\">\n    <value>Seize bottom railgun control room</value>\n  </data>\n  <data name=\"TWIN_TOWERS_RAILGUN2_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"TWIN_TOWERS_GOTO_RIGHT_Name\" xml:space=\"preserve\">\n    <value>Approach the other base</value>\n  </data>\n  <data name=\"TWIN_TOWERS_GOTO_RIGHT_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"TWIN_TOWERS_GENERATOR_Name\" xml:space=\"preserve\">\n    <value>Disable generator</value>\n  </data>\n  <data name=\"TWIN_TOWERS_GENERATOR_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"TWIN_TOWERS_COMMAND_Name\" xml:space=\"preserve\">\n    <value>Seize the command center</value>\n  </data>\n  <data name=\"TWIN_TOWERS_COMMAND_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"TWIN_TOWERS_WAIT_Name\" xml:space=\"preserve\">\n    <value>Prepare for battle</value>\n  </data>\n  <data name=\"TWIN_TOWERS_WAIT_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"TWIN_TOWERS_MOTHERSHIP1_Name\" xml:space=\"preserve\">\n    <value>Destroy generator</value>\n  </data>\n  <data name=\"TWIN_TOWERS_MOTHERSHIP1_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"TWIN_TOWERS_MOTHERSHIP1_V2_Name\" xml:space=\"preserve\">\n    <value>Destroy batteries</value>\n  </data>\n  <data name=\"TWIN_TOWERS_MOTHERSHIP1_V2_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"Explosives\" xml:space=\"preserve\">\n    <value>Explosives</value>\n  </data>\n  <data name=\"REICHSTAG_C_FOR_Name\" xml:space=\"preserve\">\n    <value>Meet the colonel</value>\n  </data>\n  <data name=\"REICHSTAG_C_FOR_Description\" xml:space=\"preserve\">\n    <value>Talk to the Colonel about your deal.</value>\n  </data>\n  <data name=\"REICHSTAG_C_GO_TO_SHIPYARD_Name\" xml:space=\"preserve\">\n    <value>Proceed to the shipyard</value>\n  </data>\n  <data name=\"REICHSTAG_C_GO_TO_SHIPYARD_Description\" xml:space=\"preserve\">\n    <value>Go to the shipyard and pick up your ship</value>\n  </data>\n  <data name=\"REICHSTAG_C_CHANGESHIP_Name\" xml:space=\"preserve\">\n    <value>Change the ship’s affiliation to Fourth Reich</value>\n  </data>\n  <data name=\"REICHSTAG_C_CHANGESHIP_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"REICHSTAG_C_WEAPONS_Name\" xml:space=\"preserve\">\n    <value>Arm yourself</value>\n  </data>\n  <data name=\"REICHSTAG_C_WEAPONS_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"REICHSTAG_C_GO_TO_HANGAR_Name\" xml:space=\"preserve\">\n    <value>Board the transporter</value>\n  </data>\n  <data name=\"REICHSTAG_C_GO_TO_HANGAR_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"REICHSTAG_C_MOTHERSHIP_Name\" xml:space=\"preserve\">\n    <value>Board the White Wolves mothership</value>\n  </data>\n  <data name=\"REICHSTAG_C_MOTHERSHIP_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"NAZI_BIO_LAB_SAMPLES_BIOMACH_1_Name\" xml:space=\"preserve\">\n    <value>Collect samples</value>\n  </data>\n  <data name=\"NAZI_BIO_LAB_SAMPLES_BIOMACH_1_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"NAZI_BIO_LAB_GET_INSIDE_Name\" xml:space=\"preserve\">\n    <value>Get inside</value>\n  </data>\n  <data name=\"NAZI_BIO_LAB_GET_INSIDE_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"NAZI_BIO_LAB_SAMPLES_ORGANIC_Name\" xml:space=\"preserve\">\n    <value>Collect samples</value>\n  </data>\n  <data name=\"NAZI_BIO_LAB_SAMPLES_ORGANIC_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"NAZI_BIO_LAB_BLUEPRINTS_BIOMACH_Name\" xml:space=\"preserve\">\n    <value>Find blueprints</value>\n  </data>\n  <data name=\"NAZI_BIO_LAB_BLUEPRINTS_BIOMACH_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"NAZI_BIO_LAB_GET_OUT_Name\" xml:space=\"preserve\">\n    <value>Exit the station</value>\n  </data>\n  <data name=\"NAZI_BIO_LAB_GET_OUT_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"NAZI_BIO_LAB_DESTROY_Name\" xml:space=\"preserve\">\n    <value>Destroy the machine</value>\n  </data>\n  <data name=\"NAZI_BIO_LAB_DESTROY_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"NAZI_BIO_LAB_REACH_MEETING_POINT_Name\" xml:space=\"preserve\">\n    <value>Return to Sapho</value>\n  </data>\n  <data name=\"NAZI_BIO_LAB_REACH_MEETING_POINT_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"REICHSTAG_A_GET_TO_MAIN_BUILDING_Name\" xml:space=\"preserve\">\n    <value>Get to the main building</value>\n  </data>\n  <data name=\"REICHSTAG_A_GET_TO_MAIN_BUILDING_Description\" xml:space=\"preserve\">\n    <value>Get to the main building and seek Colonel von Stauffenberg!</value>\n  </data>\n  <data name=\"REICHSTAG_A_MEET_COLONEL_Name\" xml:space=\"preserve\">\n    <value>Meet Colonel von Stauffenberg</value>\n  </data>\n  <data name=\"REICHSTAG_A_MEET_COLONEL_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"CHINESE_TRANSMITTER_LOOT_CARGO_Name\" xml:space=\"preserve\">\n    <value>Pillage booty</value>\n  </data>\n  <data name=\"CHINESE_TRANSMITTER_LOOT_CARGO_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"CHINESE_TRANSMITTER_DIALOGUE_1_Name\" xml:space=\"preserve\">\n    <value>Pillage booty</value>\n  </data>\n  <data name=\"CHINESE_TRANSMITTER_DIALOGUE_1_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"CHINESE_TRANSMITTER_CHECKPOINT_Name\" xml:space=\"preserve\">\n    <value>Proceed to the station</value>\n  </data>\n  <data name=\"CHINESE_TRANSMITTER_CHECKPOINT_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"CHINESE_TRANSMITTER_FIND_SECURITY_CONTROL_Name\" xml:space=\"preserve\">\n    <value>Find camera control center</value>\n  </data>\n  <data name=\"CHINESE_TRANSMITTER_FIND_SECURITY_CONTROL_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"CHINESE_TRANSMITTER_DIALOGUE_3_Name\" xml:space=\"preserve\">\n    <value>Explore security center</value>\n  </data>\n  <data name=\"CHINESE_TRANSMITTER_DIALOGUE_3_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"CHINESE_TRANSMITTER_DESTROY_SECURITY_CONTROL_Name\" xml:space=\"preserve\">\n    <value>Destroy generator</value>\n  </data>\n  <data name=\"CHINESE_TRANSMITTER_DESTROY_SECURITY_CONTROL_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"CHINESE_TRANSMITTER_FIND_CIC_Name\" xml:space=\"preserve\">\n    <value>Find the command center</value>\n  </data>\n  <data name=\"CHINESE_TRANSMITTER_FIND_CIC_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"CHINESE_TRANSMITTER_DIALOGUE_5_Name\" xml:space=\"preserve\">\n    <value>Find the command center</value>\n  </data>\n  <data name=\"CHINESE_TRANSMITTER_DIALOGUE_5_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"CHINESE_TRANSMITTER_OPEN_CIC_Name\" xml:space=\"preserve\">\n    <value>Open doors and disable command center defenses</value>\n  </data>\n  <data name=\"CHINESE_TRANSMITTER_OPEN_CIC_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"CHINESE_TRANSMITTER_DIALOGUE_6_Name\" xml:space=\"preserve\">\n    <value>Place the alien detector</value>\n  </data>\n  <data name=\"CHINESE_TRANSMITTER_DIALOGUE_6_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"CHINESE_TRANSMITTER_PLACE_DEVICE_Name\" xml:space=\"preserve\">\n    <value>Place the alien detector</value>\n  </data>\n  <data name=\"CHINESE_TRANSMITTER_PLACE_DEVICE_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"CHINESE_TRANSMITTER_ESCAPE_Name\" xml:space=\"preserve\">\n    <value>Help Tarja and Valentin</value>\n  </data>\n  <data name=\"CHINESE_TRANSMITTER_ESCAPE_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"CHINESE_TRANSMITTER_ESCAPE3_Name\" xml:space=\"preserve\">\n    <value>Escape</value>\n  </data>\n  <data name=\"CHINESE_TRANSMITTER_ESCAPE3_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"BARTHS_MOON_PLANT_SAVE_BARTH_Name\" xml:space=\"preserve\">\n    <value>Save Thomas Barth</value>\n  </data>\n  <data name=\"BARTHS_MOON_PLANT_SAVE_BARTH_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"BARTHS_MOON_PLANT_KILL_ATTACKERS_Name\" xml:space=\"preserve\">\n    <value>Kill attackers</value>\n  </data>\n  <data name=\"BARTHS_MOON_PLANT_KILL_ATTACKERS_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"BARTHS_MOON_PLANT_DEFENCE_Name\" xml:space=\"preserve\">\n    <value>Take turrets</value>\n  </data>\n  <data name=\"BARTHS_MOON_PLANT_DEFENCE_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"BARTHS_MOON_PLANT_BUILD_DEFENCE_LINE_Name\" xml:space=\"preserve\">\n    <value>Build defense</value>\n  </data>\n  <data name=\"BARTHS_MOON_PLANT_BUILD_DEFENCE_LINE_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"BARTHS_MOON_PLANT_PROTECT_BARTH_Name\" xml:space=\"preserve\">\n    <value>Protect Thomas Barth</value>\n  </data>\n  <data name=\"BARTHS_MOON_PLANT_PROTECT_BARTH_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"BARTHS_MOON_PLANT_PROTECT_MADELYN_Name\" xml:space=\"preserve\">\n    <value>Protect Sapho from suicide ships</value>\n  </data>\n  <data name=\"BARTHS_MOON_PLANT_PROTECT_MADELYN_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"BARTHS_MOON_PLANT_ENEMY_Name\" xml:space=\"preserve\">\n    <value>Prepare for the last stand</value>\n  </data>\n  <data name=\"BARTHS_MOON_PLANT_ENEMY_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"BARTHS_MOON_PLANT_DESTROY_GENERATORS_Name\" xml:space=\"preserve\">\n    <value>Destroy mothership generators</value>\n  </data>\n  <data name=\"BARTHS_MOON_PLANT_DESTROY_GENERATORS_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"BARTHS_MOON_PLANT_GET_NEEDED_COMPONENTS_Name\" xml:space=\"preserve\">\n    <value>Get components</value>\n  </data>\n  <data name=\"BARTHS_MOON_PLANT_GET_NEEDED_COMPONENTS_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"BARTHS_MOON_PLANT_CONSTRUCT_DETECTORS_Name\" xml:space=\"preserve\">\n    <value>Construct detectors</value>\n  </data>\n  <data name=\"BARTHS_MOON_PLANT_CONSTRUCT_DETECTORS_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"BARTHS_MOON_PLANT_TALK_BARTH_Name\" xml:space=\"preserve\">\n    <value>Talk to Thomas Barth</value>\n  </data>\n  <data name=\"BARTHS_MOON_PLANT_TALK_BARTH_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"RepairDamagedTurrets\" xml:space=\"preserve\">\n    <value>Repair damaged turrets</value>\n  </data>\n  <data name=\"PortableTurrets\" xml:space=\"preserve\">\n    <value>Portable turrets</value>\n  </data>\n  <data name=\"BuildTurret\" xml:space=\"preserve\">\n    <value>Build turret</value>\n  </data>\n  <data name=\"RIFT_GOTO_GETSUPPLIES1_Name\" xml:space=\"preserve\">\n    <value>Prepare for the Rift</value>\n  </data>\n  <data name=\"RIFT_GOTO_GETSUPPLIES1_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"RIFT_GOTO_10_Name\" xml:space=\"preserve\">\n    <value>Reach the Rift</value>\n  </data>\n  <data name=\"RIFT_GOTO_10_Description\" xml:space=\"preserve\">\n    <value>Don’t get killed by meteors or by the extreme heat!</value>\n  </data>\n  <data name=\"RIFT_URANITE_Name\" xml:space=\"preserve\">\n    <value>Harvest plutonium</value>\n  </data>\n  <data name=\"RIFT_URANITE_Description\" xml:space=\"preserve\">\n    <value>Harvest at least two units of plutonium.</value>\n  </data>\n  <data name=\"RIFT_GOTO_30_Name\" xml:space=\"preserve\">\n    <value>Return to Sapho</value>\n  </data>\n  <data name=\"RIFT_GOTO_30_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"RIME_CONVINCE_GET_FRANCIS_REEF_Name\" xml:space=\"preserve\">\n    <value>Meet Francis Reef</value>\n  </data>\n  <data name=\"RIME_CONVINCE_GET_FRANCIS_REEF_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"RIME_CONVINCE_GO_TO_DUPLEX_Name\" xml:space=\"preserve\">\n    <value>Approach the Duplex</value>\n  </data>\n  <data name=\"RIME_CONVINCE_GO_TO_DUPLEX_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"TRADE_STATION_EAC_DIALOGUE_Name\" xml:space=\"preserve\">\n    <value>Join the conversation</value>\n  </data>\n  <data name=\"TRADE_STATION_EAC_DIALOGUE_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"SLAVER_BASE_1_DIALOG_9_Name\" xml:space=\"preserve\">\n    <value>Help slaves</value>\n  </data>\n  <data name=\"SLAVER_BASE_1_DIALOG_9_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"JUNKYARD_CONVINCE_D_GO_TO_MARCUS_Name\" xml:space=\"preserve\">\n    <value>Watch for trouble</value>\n  </data>\n  <data name=\"JUNKYARD_CONVINCE_D_GO_TO_MARCUS_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"JUNKYARD_CONVINCE_D_RETURN_TO_SMUGGLER_Name\" xml:space=\"preserve\">\n    <value>Speak to Manjeet</value>\n  </data>\n  <data name=\"JUNKYARD_CONVINCE_D_RETURN_TO_SMUGGLER_Description\" xml:space=\"preserve\">\n    <value>Get information from Manjeet.\n</value>\n  </data>\n  <data name=\"CHINESE_ESCAPE_SPEAK_WITH_MADELYN_Name\" xml:space=\"preserve\">\n    <value>Speak to Madelyn</value>\n  </data>\n  <data name=\"CHINESE_ESCAPE_SPEAK_WITH_MADELYN_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"JUNKYARD_CONVINCE_D_FIND_INFORMATOR_Name\" xml:space=\"preserve\">\n    <value>Speak to Tarja</value>\n  </data>\n  <data name=\"JUNKYARD_CONVINCE_D_FIND_INFORMATOR_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"RIME_CONVINCE_CONTACT_APPEARS_Name\" xml:space=\"preserve\">\n    <value>The contact has appeared</value>\n  </data>\n  <data name=\"RIME_CONVINCE_CONTACT_APPEARS_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"RIME_CONVINCE_CARGO_COLLECTED_DIALOG_Name\" xml:space=\"preserve\">\n    <value>Listen to the conversation</value>\n  </data>\n  <data name=\"RIME_CONVINCE_CARGO_COLLECTED_DIALOG_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"CHINESE_ESCAPE_GET_CLOSER_Name\" xml:space=\"preserve\">\n    <value>Fly towards Sapho</value>\n  </data>\n  <data name=\"CHINESE_ESCAPE_GET_CLOSER_Description\" xml:space=\"preserve\">\n    <value>Prepare for the fight!\n</value>\n  </data>\n  <data name=\"CHINESE_ESCAPE_DEFEND_SHIP_Name\" xml:space=\"preserve\">\n    <value>Defend yourself</value>\n  </data>\n  <data name=\"CHINESE_ESCAPE_DEFEND_SHIP_Description\" xml:space=\"preserve\">\n    <value>Do not let the enemies destroy Sapho!\n</value>\n  </data>\n  <data name=\"RIME_CONVINCE_RETURN_TO_POSITION_Name\" xml:space=\"preserve\">\n    <value>Return to your position</value>\n  </data>\n  <data name=\"RIME_CONVINCE_RETURN_TO_POSITION_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"RIME_CONVINCE_FOLLOW_CONTACT_Name\" xml:space=\"preserve\">\n    <value>Follow the contact</value>\n  </data>\n  <data name=\"RIME_CONVINCE_FOLLOW_CONTACT_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"RIME_CONVINCE_FACTORY_FOUND_DIALOGUE_Name\" xml:space=\"preserve\">\n    <value>Listen to the conversation</value>\n  </data>\n  <data name=\"RIME_CONVINCE_FACTORY_FOUND_DIALOGUE_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"RIME_CONVINCE_DESTROY_FACTORY_BOTS_Name\" xml:space=\"preserve\">\n    <value>Kill guards</value>\n  </data>\n  <data name=\"RIME_CONVINCE_DESTROY_FACTORY_BOTS_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"RIME_CONVINCE_COLLECT_CARGO_Name\" xml:space=\"preserve\">\n    <value>Collect illegal cargo</value>\n  </data>\n  <data name=\"RIME_CONVINCE_COLLECT_CARGO_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"RIME_CONVINCE_FLY_TO_VESSEL_Name\" xml:space=\"preserve\">\n    <value>Approach Raynold’s vessel</value>\n  </data>\n  <data name=\"RIME_CONVINCE_FLY_TO_VESSEL_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"RIME_CONVINCE_WAIT_FOR_THE_MOMENT_Name\" xml:space=\"preserve\">\n    <value>Wait for the right moment</value>\n  </data>\n  <data name=\"RIME_CONVINCE_WAIT_FOR_THE_MOMENT_Description\" xml:space=\"preserve\">\n    <value>Wait for the right moment to fly in.\n</value>\n  </data>\n  <data name=\"RIME_CONVINCE_PLANT_CARGO_Name\" xml:space=\"preserve\">\n    <value>Plant cargo in the vessel</value>\n  </data>\n  <data name=\"RIME_CONVINCE_PLANT_CARGO_Description\" xml:space=\"preserve\">\n    <value>Frame Raynold by planting illegal cargo in his vessel.\n</value>\n  </data>\n  <data name=\"RIME_CONVINCE_GET_OUT_OF_THE_VESSEL_Name\" xml:space=\"preserve\">\n    <value>Get out</value>\n  </data>\n  <data name=\"RIME_CONVINCE_GET_OUT_OF_THE_VESSEL_Description\" xml:space=\"preserve\">\n    <value>Get out of the vessel before the guards will notice you.\n</value>\n  </data>\n  <data name=\"RIME_CONVINCE_GO_BACK_TO_FRANCIS_Name\" xml:space=\"preserve\">\n    <value>Return to Francis Reef</value>\n  </data>\n  <data name=\"RIME_CONVINCE_GO_BACK_TO_FRANCIS_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"Mine\" xml:space=\"preserve\">\n    <value>Mine</value>\n  </data>\n  <data name=\"FORT_VALIANT_C_CAPTAIN_Name\" xml:space=\"preserve\">\n    <value>Report to captain Cedric</value>\n  </data>\n  <data name=\"FORT_VALIANT_C_CAPTAIN_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"FORT_VALIANT_C_UPPER_FLOOR_Name\" xml:space=\"preserve\">\n    <value>Reach the upper floors</value>\n  </data>\n  <data name=\"FORT_VALIANT_C_UPPER_FLOOR_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"FORT_VALIANT_C_EQUIP_TALK_Name\" xml:space=\"preserve\">\n    <value>Talk to the royal guard</value>\n  </data>\n  <data name=\"FORT_VALIANT_C_EQUIP_TALK_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"FORT_VALIANT_C_EQUIP_Name\" xml:space=\"preserve\">\n    <value>Hand out your equipment</value>\n  </data>\n  <data name=\"FORT_VALIANT_C_EQUIP_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"FORT_VALIANT_C_MEET_OFFICIALS_Name\" xml:space=\"preserve\">\n    <value>Meet the officials</value>\n  </data>\n  <data name=\"FORT_VALIANT_C_MEET_OFFICIALS_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"FORT_VALIANT_C_LEAVE_OFFICIALS_Name\" xml:space=\"preserve\">\n    <value>Leave the officials</value>\n  </data>\n  <data name=\"FORT_VALIANT_C_LEAVE_OFFICIALS_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"FORT_VALIANT_C_LEAVE_FOLLOW_Name\" xml:space=\"preserve\">\n    <value>Follow given coordinates</value>\n  </data>\n  <data name=\"FORT_VALIANT_C_LEAVE_FOLLOW_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"FORT_VALIANT_C_SPEAK_SIR_Name\" xml:space=\"preserve\">\n    <value>Speak to Sir Geraint</value>\n  </data>\n  <data name=\"FORT_VALIANT_C_SPEAK_SIR_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"FORT_VALIANT_C_GET_EQUP_CARGO_Name\" xml:space=\"preserve\">\n    <value>Take equipment from the cargo box</value>\n  </data>\n  <data name=\"FORT_VALIANT_C_GET_EQUP_CARGO_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"FORT_VALIANT_C_FOLLOW_FIND_VENTILATION_Name\" xml:space=\"preserve\">\n    <value>Find the vent entrance</value>\n  </data>\n  <data name=\"FORT_VALIANT_C_FOLLOW_FIND_VENTILATION_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"FORT_VALIANT_C_FOLLOW_TURN_OFF_GATE_Name\" xml:space=\"preserve\">\n    <value>Turn off the gate</value>\n  </data>\n  <data name=\"FORT_VALIANT_C_FOLLOW_TURN_OFF_GATE_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"FORT_VALIANT_C_SCANNERS1_Name\" xml:space=\"preserve\">\n    <value>Find the entrance to the vault</value>\n  </data>\n  <data name=\"FORT_VALIANT_C_SCANNERS1_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"FORT_VALIANT_C_SCANNERS2_Name\" xml:space=\"preserve\">\n    <value>Reach the gate of the vault</value>\n  </data>\n  <data name=\"FORT_VALIANT_C_SCANNERS2_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"FORT_VALIANT_C_SCANNERS23_Name\" xml:space=\"preserve\">\n    <value>Enter the vault</value>\n  </data>\n  <data name=\"FORT_VALIANT_C_SCANNERS23_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"FORT_VALIANT_C_TAKE_ARTEFACT_Name\" xml:space=\"preserve\">\n    <value>Find the artifact hidden in a concrete box</value>\n  </data>\n  <data name=\"FORT_VALIANT_C_TAKE_ARTEFACT_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"FORT_VALIANT_C_VALUT_Name\" xml:space=\"preserve\">\n    <value>Exit the vault</value>\n  </data>\n  <data name=\"FORT_VALIANT_C_VALUT_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"FORT_VALIANT_C_TURN_OFF_SCANNER_Name\" xml:space=\"preserve\">\n    <value>Turn off the scanner</value>\n  </data>\n  <data name=\"FORT_VALIANT_C_TURN_OFF_SCANNER_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"FORT_VALIANT_C_SCANNERS4_Name\" xml:space=\"preserve\">\n    <value>Get to higher floors</value>\n  </data>\n  <data name=\"FORT_VALIANT_C_SCANNERS4_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"FORT_VALIANT_C_TOP_ELEVATOR_Name\" xml:space=\"preserve\">\n    <value>Get to the top elevator</value>\n  </data>\n  <data name=\"FORT_VALIANT_C_TOP_ELEVATOR_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"FORT_VALIANT_C_VENT_SYSTEM_Name\" xml:space=\"preserve\">\n    <value>Escape through the vents</value>\n  </data>\n  <data name=\"FORT_VALIANT_C_VENT_SYSTEM_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"FORT_VALIANT_C_CATACOMBS_Name\" xml:space=\"preserve\">\n    <value>Escape through the catacombs</value>\n  </data>\n  <data name=\"FORT_VALIANT_C_CATACOMBS_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"FORT_VALIANT_C_PICK_UP_EQUIP_Name\" xml:space=\"preserve\">\n    <value>Pick up your equipment</value>\n  </data>\n  <data name=\"FORT_VALIANT_C_PICK_UP_EQUIP_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"FORT_VALIANT_B_FLY_ONE_Name\" xml:space=\"preserve\">\n    <value>Approach Fort Valiant</value>\n  </data>\n  <data name=\"FORT_VALIANT_B_FLY_ONE_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"FORT_VALIANT_B_MEET_CAPTAIN_Name\" xml:space=\"preserve\">\n    <value>Report to captain Cedric</value>\n  </data>\n  <data name=\"FORT_VALIANT_B_MEET_CAPTAIN_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"FORT_VALIANT_B_VISIT_VENDOR_Name\" xml:space=\"preserve\">\n    <value>Visit the Templar supplies and the equipment vendor</value>\n  </data>\n  <data name=\"FORT_VALIANT_B_VISIT_VENDOR_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"SLAVER_BASE_1_DIALOG_1_Name\" xml:space=\"preserve\">\n    <value>Find the best way inside</value>\n  </data>\n  <data name=\"SLAVER_BASE_1_DIALOG_1_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"SLAVER_BASE_1_DESTROY_GENERATOR_Name\" xml:space=\"preserve\">\n    <value>Destroy generators</value>\n  </data>\n  <data name=\"SLAVER_BASE_1_DESTROY_GENERATOR_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"SLAVER_BASE_1_DIALOG_2_Name\" xml:space=\"preserve\">\n    <value>Disable the transmitter</value>\n  </data>\n  <data name=\"SLAVER_BASE_1_DIALOG_2_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"SLAVER_BASE_1_DESTROY_BATTERIES_Name\" xml:space=\"preserve\">\n    <value>Destroy backup batteries</value>\n  </data>\n  <data name=\"SLAVER_BASE_1_DESTROY_BATTERIES_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"SLAVER_BASE_1_FIND_PRISON_Name\" xml:space=\"preserve\">\n    <value>Find the prison</value>\n  </data>\n  <data name=\"SLAVER_BASE_1_FIND_PRISON_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"SLAVER_BASE_1_FREE_SLAVES_Name\" xml:space=\"preserve\">\n    <value>Free the slaves</value>\n  </data>\n  <data name=\"SLAVER_BASE_1_FREE_SLAVES_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"SLAVER_BASE_1_HACK_HANGAR_Name\" xml:space=\"preserve\">\n    <value>Open ship doors</value>\n  </data>\n  <data name=\"SLAVER_BASE_1_HACK_HANGAR_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"SLAVER_BASE_1_FREE_SLAVES_2_Name\" xml:space=\"preserve\">\n    <value>Free the slaves</value>\n  </data>\n  <data name=\"SLAVER_BASE_1_FREE_SLAVES_2_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"SLAVER_BASE_1_DIALOG_6_Name\" xml:space=\"preserve\">\n    <value>Find out where pilots are held</value>\n  </data>\n  <data name=\"SLAVER_BASE_1_DIALOG_6_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"SLAVER_BASE_1_FIND_SLAVES_Name\" xml:space=\"preserve\">\n    <value>Free the pilots</value>\n  </data>\n  <data name=\"SLAVER_BASE_1_FIND_SLAVES_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"SLAVER_BASE_1_DIALOG_7_Name\" xml:space=\"preserve\">\n    <value>Protect the slaves</value>\n  </data>\n  <data name=\"SLAVER_BASE_1_DIALOG_7_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"SLAVER_BASE_1_DESTROY_ENEMIES_Name\" xml:space=\"preserve\">\n    <value>Destroy enemy reinforcements</value>\n  </data>\n  <data name=\"SLAVER_BASE_1_DESTROY_ENEMIES_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"SLAVER_BASE_1_HACK_NUKE_Name\" xml:space=\"preserve\">\n    <value>Open hangar doors</value>\n  </data>\n  <data name=\"SLAVER_BASE_1_HACK_NUKE_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"SLAVER_BASE_1_DIALOG_10_Name\" xml:space=\"preserve\">\n    <value>Watch the mothership leave</value>\n  </data>\n  <data name=\"SLAVER_BASE_1_DIALOG_10_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"FORT_VALIANT_FLY_ONE_Name\" xml:space=\"preserve\">\n    <value>Approach Fort Valiant</value>\n  </data>\n  <data name=\"FORT_VALIANT_FLY_ONE_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"FORT_VALIANT_SPEAK_GATE_KEEPER_Name\" xml:space=\"preserve\">\n    <value>Reach the gate</value>\n  </data>\n  <data name=\"FORT_VALIANT_SPEAK_GATE_KEEPER_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"FORT_VALIANT_MEET_CAPTAIN_Name\" xml:space=\"preserve\">\n    <value>Meet captain Cedric</value>\n  </data>\n  <data name=\"FORT_VALIANT_MEET_CAPTAIN_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"FORT_VALIANT_VISIT_VENDOR_Name\" xml:space=\"preserve\">\n    <value>Visit the local vendor</value>\n  </data>\n  <data name=\"FORT_VALIANT_VISIT_VENDOR_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"JUNKYARD_RETURN_MEET_SMUGGLER_Name\" xml:space=\"preserve\">\n    <value>Meet Manjeet in the city</value>\n  </data>\n  <data name=\"JUNKYARD_RETURN_MEET_SMUGGLER_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"JUNKYARD_RETURN_FLY_TO_START_Name\" xml:space=\"preserve\">\n    <value>Go to the starting line and wait for the race start</value>\n  </data>\n  <data name=\"JUNKYARD_RETURN_FLY_TO_START_Description\" xml:space=\"preserve\">\n    <value>Fly to the starting line and prepare for the race!\n</value>\n  </data>\n  <data name=\"JUNKYARD_RETURN_RACE_Name\" xml:space=\"preserve\">\n    <value>Reach all checkpoints</value>\n  </data>\n  <data name=\"JUNKYARD_RETURN_RACE_PrepareName\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"JUNKYARD_RETURN_RACE_GoBackName\" xml:space=\"preserve\">\n    <value>Win the race</value>\n  </data>\n  <data name=\"JUNKYARD_RETURN_RACE_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"JUNKYARD_RETURN_WIN_Name\" xml:space=\"preserve\">\n    <value>Bask in your victory</value>\n  </data>\n  <data name=\"JUNKYARD_RETURN_WIN_Description\" xml:space=\"preserve\">\n    <value>Get the artifact from Manjeet\n</value>\n  </data>\n  <data name=\"JUNKYARD_RETURN_GO_TO_SMUGGLER_name\" xml:space=\"preserve\">\n    <value>Return to Manjeet</value>\n  </data>\n  <data name=\"JUNKYARD_RETURN_GO_TO_SMUGGLER_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"JUNKYARD_RETURN_DIALOGUE_RETURN_Name\" xml:space=\"preserve\">\n    <value>Speak to Manjeet</value>\n  </data>\n  <data name=\"JUNKYARD_RETURN_DIALOGUE_RETURN_Description\" xml:space=\"preserve\">\n    <value>Speak to Manjeet and get the artifact.\n</value>\n  </data>\n  <data name=\"FlyToStartingPoint\" xml:space=\"preserve\">\n    <value>Fly to the start line</value>\n  </data>\n  <data name=\"RaceOpponent\" xml:space=\"preserve\">\n    <value>Race Oponent</value>\n  </data>\n  <data name=\"CHINESE_REFINERY_01_GET_CLOSER_Name\" xml:space=\"preserve\">\n    <value>Approach the asteroid</value>\n  </data>\n  <data name=\"CHINESE_REFINERY_01_GET_CLOSER_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"CHINESE_REFINERY_02_GET_IN_Name\" xml:space=\"preserve\">\n    <value>Get inside</value>\n  </data>\n  <data name=\"CHINESE_REFINERY_02_GET_IN_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"CHINESE_REFINERY_03_FIND_SECRET_ROOM_Name\" xml:space=\"preserve\">\n    <value>Find the secret lab</value>\n  </data>\n  <data name=\"CHINESE_REFINERY_03_FIND_SECRET_ROOM_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"CHINESE_REFINERY_03_D_FIND_SECRET_ROOM_Name\" xml:space=\"preserve\">\n    <value>Explore secret lab</value>\n  </data>\n  <data name=\"CHINESE_REFINERY_03_D_FIND_SECRET_ROOM_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"CHINESE_REFINERY_04_SET_VIRUS_Name\" xml:space=\"preserve\">\n    <value>Install virus</value>\n  </data>\n  <data name=\"CHINESE_REFINERY_04_SET_VIRUS_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"CHINESE_REFINERY_05_DEACTIVATE_BOMB_Name\" xml:space=\"preserve\">\n    <value>Deactivate warhead</value>\n  </data>\n  <data name=\"CHINESE_REFINERY_05_DEACTIVATE_BOMB_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"CHINESE_REFINERY_06_GET_TO_FIRST_TUNNEL_Name\" xml:space=\"preserve\">\n    <value>Reach the tunnel</value>\n  </data>\n  <data name=\"CHINESE_REFINERY_06_GET_TO_FIRST_TUNNEL_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"CHINESE_REFINERY_07_PAST_FIRST_TUNNEL_Name\" xml:space=\"preserve\">\n    <value>Fly to the other side</value>\n  </data>\n  <data name=\"CHINESE_REFINERY_07_PAST_FIRST_TUNNEL_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"CHINESE_REFINERY_08_SET_BUG_IN_COMPUTER_Name\" xml:space=\"preserve\">\n    <value>Hack the computer for Manjeet</value>\n  </data>\n  <data name=\"CHINESE_REFINERY_08_SET_BUG_IN_COMPUTER_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"CHINESE_REFINERY_09_GET_TO_SECOND_TUNNEL_Name\" xml:space=\"preserve\">\n    <value>Reach the tunnel</value>\n  </data>\n  <data name=\"CHINESE_REFINERY_09_GET_TO_SECOND_TUNNEL_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"CHINESE_REFINERY_10_PAST_SECOND_TUNNEL_Name\" xml:space=\"preserve\">\n    <value>Fly to the other side</value>\n  </data>\n  <data name=\"CHINESE_REFINERY_10_PAST_SECOND_TUNNEL_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"CHINESE_REFINERY_11_SNEAK_INSIDE_THE_STATION_Name\" xml:space=\"preserve\">\n    <value>Enter the base</value>\n  </data>\n  <data name=\"CHINESE_REFINERY_11_SNEAK_INSIDE_THE_STATION_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"CHINESE_REFINERY_12_GET_TO_OLD_PATH_Name\" xml:space=\"preserve\">\n    <value>Enter the control room through the backdoor</value>\n  </data>\n  <data name=\"CHINESE_REFINERY_12_GET_TO_OLD_PATH_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"CHINESE_REFINERY_13_HACK_REFINARY_COMPUTER_Name\" xml:space=\"preserve\">\n    <value>Change the records</value>\n  </data>\n  <data name=\"CHINESE_REFINERY_13_HACK_REFINARY_COMPUTER_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"CHINESE_REFINERY_14_GET_OUT_OF_THE_STATION_Name\" xml:space=\"preserve\">\n    <value>Leave the station</value>\n  </data>\n  <data name=\"CHINESE_REFINERY_14_GET_OUT_OF_THE_STATION_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"CHINESE_REFINERY_15_LAND_INSIDE_THE_TRANSPORTER_Name\" xml:space=\"preserve\">\n    <value>Join the others</value>\n  </data>\n  <data name=\"CHINESE_REFINERY_15_LAND_INSIDE_THE_TRANSPORTER_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"SetVirusInComputer\" xml:space=\"preserve\">\n    <value>Computer</value>\n  </data>\n  <data name=\"SetBugInComputer\" xml:space=\"preserve\">\n    <value>Computer</value>\n  </data>\n  <data name=\"HackSystem\" xml:space=\"preserve\">\n    <value>Hack the system</value>\n  </data>\n  <data name=\"CHINESE_TRANSPORT_GET_SECURITY_KEY_Name\" xml:space=\"preserve\">\n    <value>Get the key</value>\n  </data>\n  <data name=\"CHINESE_TRANSPORT_GET_SECURITY_KEY_Description\" xml:space=\"preserve\">\n    <value>Hack the computer and get the first security key.\n</value>\n  </data>\n  <data name=\"CHINESE_TRANSPORT_REACH_TUNNEL_1_Name\" xml:space=\"preserve\">\n    <value>Reach the tunnel</value>\n  </data>\n  <data name=\"CHINESE_TRANSPORT_REACH_TUNNEL_1_Description\" xml:space=\"preserve\">\n    <value>Reach the connection tunnel and fly straight to the transmitter.\n</value>\n  </data>\n  <data name=\"CHINESE_TRANSPORT_REACH_TRANSMITTER_Name\" xml:space=\"preserve\">\n    <value>Reach the transmitter</value>\n  </data>\n  <data name=\"CHINESE_TRANSPORT_REACH_TRANSMITTER_Description\" xml:space=\"preserve\">\n    <value>Fly through the tunnel straight to the transmitter.\n</value>\n  </data>\n  <data name=\"CHINESE_TRANSPORT_KILL_GUARDS_Name\" xml:space=\"preserve\">\n    <value>Kill the guards</value>\n  </data>\n  <data name=\"CHINESE_TRANSPORT_KILL_GUARDS_Description\" xml:space=\"preserve\">\n    <value>Kill the guards around the transmitter.\n</value>\n  </data>\n  <data name=\"CHINESE_TRANSPORT_HACK_TRANSMITTER_Name\" xml:space=\"preserve\">\n    <value>Use the key</value>\n  </data>\n  <data name=\"CHINESE_TRANSPORT_HACK_TRANSMITTER_Description\" xml:space=\"preserve\">\n    <value>Use the security keys to disable the service computers inside the transmitter.\n</value>\n  </data>\n  <data name=\"CHINESE_TRANSPORT_PLACE_BOMB_Name\" xml:space=\"preserve\">\n    <value>Place bomb</value>\n  </data>\n  <data name=\"CHINESE_TRANSPORT_PLACE_BOMB_Description\" xml:space=\"preserve\">\n    <value>Place the bomb on the transmitter.\n</value>\n  </data>\n  <data name=\"CHINESE_TRANSPORT_RUN_EXPLOSION_Name\" xml:space=\"preserve\">\n    <value>Hide from explosion</value>\n  </data>\n  <data name=\"CHINESE_TRANSPORT_RUN_EXPLOSION_Description\" xml:space=\"preserve\">\n    <value>Hide before the explosion starts.\n</value>\n  </data>\n  <data name=\"CHINESE_TRANSPORT_LOOK_ON_EXPLOSION_Name\" xml:space=\"preserve\">\n    <value>Enjoy fireworks</value>\n  </data>\n  <data name=\"CHINESE_TRANSPORT_LOOK_ON_EXPLOSION_Description\" xml:space=\"preserve\">\n    <value>Make sure the transmitter is completely destroyed.\n</value>\n  </data>\n  <data name=\"CHINESE_TRANSPORT_REACH_TUNNEL_2_Name\" xml:space=\"preserve\">\n    <value>Reach second tunnel</value>\n  </data>\n  <data name=\"CHINESE_TRANSPORT_REACH_TUNNEL_2_Description\" xml:space=\"preserve\">\n    <value>Reach the second connection tunnel to the hangar.\n</value>\n  </data>\n  <data name=\"CHINESE_TRANSPORT_PAST_TUNNEL_2_Name\" xml:space=\"preserve\">\n    <value>Fly to the other side</value>\n  </data>\n  <data name=\"CHINESE_TRANSPORT_PAST_TUNNEL_2_Description\" xml:space=\"preserve\">\n    <value>Reach the asteroid with the hangar.\n</value>\n  </data>\n  <data name=\"CHINESE_TRANSPORT_REACH_HANGAR_HACK_Name\" xml:space=\"preserve\">\n    <value>Enter service room</value>\n  </data>\n  <data name=\"CHINESE_TRANSPORT_REACH_HANGAR_HACK_Description\" xml:space=\"preserve\">\n    <value>Reach the service room of the hangar.\n</value>\n  </data>\n  <data name=\"CHINESE_TRANSPORT_HACK_HANGAR_SERVICE_PC_Name\" xml:space=\"preserve\">\n    <value>Hack hangar database</value>\n  </data>\n  <data name=\"CHINESE_TRANSPORT_HACK_HANGAR_SERVICE_PC_Description\" xml:space=\"preserve\">\n    <value>Hack the hangar database to get the safety mark of your ship.\n</value>\n  </data>\n  <data name=\"CHINESE_TRANSPORT_DEFEND_MARCUS_Name\" xml:space=\"preserve\">\n    <value>Defend Marcus</value>\n  </data>\n  <data name=\"CHINESE_TRANSPORT_DEFEND_MARCUS_Description\" xml:space=\"preserve\">\n    <value>Kill all Chinese ships.\n</value>\n  </data>\n  <data name=\"CHINESE_TRANSPORT_KILL_BOSS_Name\" xml:space=\"preserve\">\n    <value>Kill the Chinese commando</value>\n  </data>\n  <data name=\"CHINESE_TRANSPORT_KILL_BOSS_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"CHINESE_TRANSPORT_LAND_IN_Name\" xml:space=\"preserve\">\n    <value>Board the ship</value>\n  </data>\n  <data name=\"CHINESE_TRANSPORT_LAND_IN_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"GeneralChenLin\" xml:space=\"preserve\">\n    <value>General Chen Lin</value>\n  </data>\n  <data name=\"GetFirstSecurityKey\" xml:space=\"preserve\">\n    <value>Get first security key</value>\n  </data>\n  <data name=\"UseFirstSecurityKey\" xml:space=\"preserve\">\n    <value>Use first security key</value>\n  </data>\n  <data name=\"UseSecondSecurityKey\" xml:space=\"preserve\">\n    <value>Use second security key</value>\n  </data>\n  <data name=\"HackHangarDatabase\" xml:space=\"preserve\">\n    <value>Database</value>\n  </data>\n  <data name=\"JUNKYARD_CONVINCE_FIND_INFORMATOR_Name\" xml:space=\"preserve\">\n    <value>Find the informant</value>\n  </data>\n  <data name=\"JUNKYARD_CONVINCE_FIND_INFORMATOR_Description\" xml:space=\"preserve\">\n    <value>Look for information about the smuggler in the City.\n</value>\n  </data>\n  <data name=\"JUNKYARD_CONVINCE_FIND_SMUGGLER_Name\" xml:space=\"preserve\">\n    <value>Look for Manjeet in the hangar</value>\n  </data>\n  <data name=\"JUNKYARD_CONVINCE_FIND_SMUGGLER_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"JUNKYARD_CONVINCE_FOLLOW_SMUGGLER_Name\" xml:space=\"preserve\">\n    <value>Catch Manjeet</value>\n  </data>\n  <data name=\"JUNKYARD_CONVINCE_FOLLOW_SMUGGLER_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"JUNKYARD_CONVINCE_D_FOLLOW_SMUGGLER_Name\" xml:space=\"preserve\">\n    <value>Speak to Manjeet</value>\n  </data>\n  <data name=\"JUNKYARD_CONVINCE_D_FOLLOW_SMUGGLER_Description\" xml:space=\"preserve\">\n    <value>Convince Manjeet to give you the artifact</value>\n  </data>\n  <data name=\"JUNKYARD_CONVINCE_FLY_TO_ENEMY_Name\" xml:space=\"preserve\">\n    <value>Find Momo’s gang</value>\n  </data>\n  <data name=\"JUNKYARD_CONVINCE_FLY_TO_ENEMY_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"JUNKYARD_CONVINCE_KILL_WAVES_Name\" xml:space=\"preserve\">\n    <value>Kill Momo’s men</value>\n  </data>\n  <data name=\"JUNKYARD_CONVINCE_KILL_WAVES_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"JUNKYARD_CONVINCE_SPEAK_WITH_MOMO_Name\" xml:space=\"preserve\">\n    <value>Approach to Momo</value>\n  </data>\n  <data name=\"JUNKYARD_CONVINCE_SPEAK_WITH_MOMO_Description\" xml:space=\"preserve\">\n    <value>Get closer to Momo and speak to him.\n</value>\n  </data>\n  <data name=\"JUNKYARD_CONVINCE_D_SPEAK_WITH_MOMO_Name\" xml:space=\"preserve\">\n    <value>Speak to Momo</value>\n  </data>\n  <data name=\"JUNKYARD_CONVINCE_D_SPEAK_WITH_MOMO_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"JUNKYARD_CONVINCE_FIGHT_MOMO_Name\" xml:space=\"preserve\">\n    <value>Kill Momo and his gang</value>\n  </data>\n  <data name=\"JUNKYARD_CONVINCE_FIGHT_MOMO_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"JUNKYARD_CONVINCE_RETURN_TO_SMUGGLER_Name\" xml:space=\"preserve\">\n    <value>Return to Manjeet</value>\n  </data>\n  <data name=\"JUNKYARD_CONVINCE_RETURN_TO_SMUGGLER_Description\" xml:space=\"preserve\">\n    <value>Return to Manjeet for the reward.\n</value>\n  </data>\n  <data name=\"JUNKYARD_CONVINCE_GO_TO_BOMB_DEALER_Name\" xml:space=\"preserve\">\n    <value>Fly to the bomb dealer</value>\n  </data>\n  <data name=\"JUNKYARD_CONVINCE_GO_TO_BOMB_DEALER_Description\" xml:space=\"preserve\">\n    <value>Find the bomb dealer and get the bomb!\n</value>\n  </data>\n  <data name=\"JUNKYARD_CONVINCE_D_GO_TO_BOMB_DEALER_Name\" xml:space=\"preserve\">\n    <value>Speak to the bomb dealer</value>\n  </data>\n  <data name=\"JUNKYARD_CONVINCE_D_GO_TO_BOMB_DEALER_Description\" xml:space=\"preserve\">\n    <value>Get the bomb from the dealer.</value>\n  </data>\n  <data name=\"JUNKYARD_CONVINCE_GO_TO_MARCUS_Name\" xml:space=\"preserve\">\n    <value>Fly to Marcus</value>\n  </data>\n  <data name=\"JUNKYARD_CONVINCE_GO_TO_MARCUS_Description\" xml:space=\"preserve\">\n    <value>Marcus could be in trouble. Go help him.\n</value>\n  </data>\n  <data name=\"JUNKYARD_CONVINCE_BR_FIGHT_Name\" xml:space=\"preserve\">\n    <value>Kill the enemies</value>\n  </data>\n  <data name=\"JUNKYARD_CONVINCE_BR_FIGHT_Description\" xml:space=\"preserve\">\n    <value>Crush. Kill. Destroy. Swag.\n</value>\n  </data>\n  <data name=\"JUNKYARD_CONVINCE_RETURN_TO_MS_Name\" xml:space=\"preserve\">\n    <value>Return to Madelyn</value>\n  </data>\n  <data name=\"JUNKYARD_CONVINCE_RETURN_TO_MS_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"GangsterBoss\" xml:space=\"preserve\">\n    <value>Gangster boss</value>\n  </data>\n  <data name=\"BARTHS_MOON_TRANSMITTER_MEET_BARTH_Name\" xml:space=\"preserve\">\n    <value>Meet Thomas Barth in his lab</value>\n  </data>\n  <data name=\"BARTHS_MOON_TRANSMITTER_MEET_BARTH_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"BARTHS_MOON_TRANSMITTER_TALK_TO_BARTH_Name\" xml:space=\"preserve\">\n    <value>Talk to Thomas Barth</value>\n  </data>\n  <data name=\"BARTHS_MOON_TRANSMITTER_TALK_TO_BARTH_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"BARTHS_MOON_TRANSMITTER_FIND_WAY_TO_MOON_Name\" xml:space=\"preserve\">\n    <value>Follow the path to Broken Moon</value>\n  </data>\n  <data name=\"BARTHS_MOON_TRANSMITTER_FIND_WAY_TO_MOON_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"BARTHS_MOON_TRANSMITTER_DESTROY_LAB_Name\" xml:space=\"preserve\">\n    <value>Dig to reach the labs</value>\n  </data>\n  <data name=\"BARTHS_MOON_TRANSMITTER_DESTROY_LAB_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"BARTHS_MOON_TRANSMITTER_ENABLE_GENERATOR_Name\" xml:space=\"preserve\">\n    <value>Turn on the backup</value>\n  </data>\n  <data name=\"BARTHS_MOON_TRANSMITTER_ENABLE_GENERATOR_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"BARTHS_MOON_TRANSMITTER_LOOK_HUBS_Name\" xml:space=\"preserve\">\n    <value>Enter hub and check generators</value>\n  </data>\n  <data name=\"BARTHS_MOON_TRANSMITTER_LOOK_HUBS_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"BARTHS_MOON_TRANSMITTER_GET_ITEMS_Name\" xml:space=\"preserve\">\n    <value>Find drones and hacking tools</value>\n  </data>\n  <data name=\"BARTHS_MOON_TRANSMITTER_GET_ITEMS_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"BARTHS_MOON_TRANSMITTER_FAN_Name\" xml:space=\"preserve\">\n    <value>Find a vent entrance</value>\n  </data>\n  <data name=\"BARTHS_MOON_TRANSMITTER_FAN_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"BARTHS_MOON_TRANSMITTER_DRONES_Name\" xml:space=\"preserve\">\n    <value>Release a drone</value>\n  </data>\n  <data name=\"BARTHS_MOON_TRANSMITTER_DRONES_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"BARTHS_MOON_TRANSMITTER_ENABLE_GENERATOR_DRONE1_Name\" xml:space=\"preserve\">\n    <value>Start generator with drone</value>\n  </data>\n  <data name=\"BARTHS_MOON_TRANSMITTER_ENABLE_GENERATOR_DRONE1_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"BARTHS_MOON_TRANSMITTER_ENABLE_GENERATOR_DRONE2_Name\" xml:space=\"preserve\">\n    <value>Start second generator with drone</value>\n  </data>\n  <data name=\"BARTHS_MOON_TRANSMITTER_ENABLE_GENERATOR_DRONE2_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"BARTHS_MOON_TRANSMITTER_LOOK_HUBS2_Name\" xml:space=\"preserve\">\n    <value>Enter the hub in the lab control room</value>\n  </data>\n  <data name=\"BARTHS_MOON_TRANSMITTER_LOOK_HUBS2_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"BARTHS_MOON_TRANSMITTER_DOWNLOAD_DATA1_Name\" xml:space=\"preserve\">\n    <value>Download data from all hubs 1/4</value>\n  </data>\n  <data name=\"BARTHS_MOON_TRANSMITTER_DOWNLOAD_DATA1_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"BARTHS_MOON_TRANSMITTER_DOWNLOAD_DATA2_Name\" xml:space=\"preserve\">\n    <value>Download data from all hubs 2/4</value>\n  </data>\n  <data name=\"BARTHS_MOON_TRANSMITTER_DOWNLOAD_DATA2_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"BARTHS_MOON_TRANSMITTER_DOWNLOAD_DATA3_Name\" xml:space=\"preserve\">\n    <value>Download data from all hubs 3/4</value>\n  </data>\n  <data name=\"BARTHS_MOON_TRANSMITTER_DOWNLOAD_DATA3_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"BARTHS_MOON_TRANSMITTER_DOWNLOAD_DATA4_Name\" xml:space=\"preserve\">\n    <value>Download data from all hubs 4/4</value>\n  </data>\n  <data name=\"BARTHS_MOON_TRANSMITTER_DOWNLOAD_DATA4_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"BARTHS_MOON_TRANSMITTER_ENTER_MAINLAB_Name\" xml:space=\"preserve\">\n    <value>Enter the main lab</value>\n  </data>\n  <data name=\"BARTHS_MOON_TRANSMITTER_ENTER_MAINLAB_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"BARTHS_MOON_TRANSMITTER_DESTROY_COMPUTER_Name\" xml:space=\"preserve\">\n    <value>Destroy the AI</value>\n  </data>\n  <data name=\"BARTHS_MOON_TRANSMITTER_DESTROY_COMPUTER_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"BARTHS_MOON_TRANSMITTER_FIND_PART3_Name\" xml:space=\"preserve\">\n    <value>Collect needed parts</value>\n  </data>\n  <data name=\"BARTHS_MOON_TRANSMITTER_FIND_PART3_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"BARTHS_MOON_TRANSMITTER_FIND_WAY_OUT_Name\" xml:space=\"preserve\">\n    <value>Leave the labs</value>\n  </data>\n  <data name=\"BARTHS_MOON_TRANSMITTER_FIND_WAY_OUT_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"BARTHS_MOON_TRANSMITTER_BUILD_TRANSMITTER_Name\" xml:space=\"preserve\">\n    <value>Build the transmitter</value>\n  </data>\n  <data name=\"BARTHS_MOON_TRANSMITTER_BUILD_TRANSMITTER_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"BARTHS_MOON_TRANSMITTER_RETURN_BACK_TO_MADELYN_Name\" xml:space=\"preserve\">\n    <value>Return to Sapho</value>\n  </data>\n  <data name=\"BARTHS_MOON_TRANSMITTER_RETURN_BACK_TO_MADELYN_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"RUSSIAN_WAREHOUSE_SNEAKINMAINBASE_Name\" xml:space=\"preserve\">\n    <value>Enter the main station</value>\n  </data>\n  <data name=\"RUSSIAN_WAREHOUSE_SNEAKINMAINBASE_Description\" xml:space=\"preserve\">\n    <value>It should be a breeze with all the fighting around you.\n</value>\n  </data>\n  <data name=\"RUSSIAN_WAREHOUSE_TURNOFFCAMS_Name\" xml:space=\"preserve\">\n    <value>Disable security cameras</value>\n  </data>\n  <data name=\"RUSSIAN_WAREHOUSE_TURNOFFCAMS_Description\" xml:space=\"preserve\">\n    <value>The security hub should be located in the right wing.\n</value>\n  </data>\n  <data name=\"RUSSIAN_WAREHOUSE_CTRLTURRET_Name\" xml:space=\"preserve\">\n    <value>Disable turrets at the old entrance</value>\n  </data>\n  <data name=\"RUSSIAN_WAREHOUSE_CTRLTURRET_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"RUSSIAN_WAREHOUSE_OPEN_DOORS_Name\" xml:space=\"preserve\">\n    <value>Open doors</value>\n  </data>\n  <data name=\"RUSSIAN_WAREHOUSE_OPEN_DOORS_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"RUSSIAN_WAREHOUSE_GETOUTMAINBASE_Name\" xml:space=\"preserve\">\n    <value>Leave the station</value>\n  </data>\n  <data name=\"RUSSIAN_WAREHOUSE_GETOUTMAINBASE_Description\" xml:space=\"preserve\">\n    <value>Use the door at the very bottom of the station.\n</value>\n  </data>\n  <data name=\"RUSSIAN_WAREHOUSE_BREAKOLDENTRANCE_Name\" xml:space=\"preserve\">\n    <value>Break through the old entrance</value>\n  </data>\n  <data name=\"RUSSIAN_WAREHOUSE_BREAKOLDENTRANCE_Description\" xml:space=\"preserve\">\n    <value>You may need to use rockets or the drill to clear the rocks.\n</value>\n  </data>\n  <data name=\"RUSSIAN_WAREHOUSE_LOCATEWAREHOUSE_Name\" xml:space=\"preserve\">\n    <value>Locate the warehouse</value>\n  </data>\n  <data name=\"RUSSIAN_WAREHOUSE_LOCATEWAREHOUSE_Description\" xml:space=\"preserve\">\n    <value>It’s supposed to be in a cave carved inside the asteroid.\n</value>\n  </data>\n  <data name=\"RUSSIAN_WAREHOUSE_FINDTRANSMITTER_Name\" xml:space=\"preserve\">\n    <value>Find the transmitter</value>\n  </data>\n  <data name=\"RUSSIAN_WAREHOUSE_FINDTRANSMITTER_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"RUSSIAN_WAREHOUSE_DOWNLOAD_DATA_Name\" xml:space=\"preserve\">\n    <value>Download data</value>\n  </data>\n  <data name=\"RUSSIAN_WAREHOUSE_DOWNLOAD_DATA_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"RUSSIAN_WAREHOUSE_TURNOFFMAINDEF_PART1_Name\" xml:space=\"preserve\">\n    <value>Disable hub A turrets</value>\n  </data>\n  <data name=\"RUSSIAN_WAREHOUSE_TURNOFFMAINDEF_PART1_Description\" xml:space=\"preserve\">\n    <value>This will allow the pirate mothership arrive and loot unhindered.\n</value>\n  </data>\n  <data name=\"RUSSIAN_WAREHOUSE_TURNOFFMAINDEF_PART2_Name\" xml:space=\"preserve\">\n    <value>Disable hub B turrets</value>\n  </data>\n  <data name=\"RUSSIAN_WAREHOUSE_TURNOFFMAINDEF_PART2_Description\" xml:space=\"preserve\">\n    <value>This will allow the pirate mothership arrive and loot unhindered.\n</value>\n  </data>\n  <data name=\"RUSSIAN_WAREHOUSE_GETOUTWAREHOUSE_Name\" xml:space=\"preserve\">\n    <value>Leave warehouse through cargo bay</value>\n  </data>\n  <data name=\"RUSSIAN_WAREHOUSE_GETOUTWAREHOUSE_Description\" xml:space=\"preserve\">\n    <value>The pirate mothership will arrive.\n</value>\n  </data>\n  <data name=\"RUSSIAN_WAREHOUSE_CRUSHREMAINGSHIPS_Name\" xml:space=\"preserve\">\n    <value>Destroy remaining Russian ships</value>\n  </data>\n  <data name=\"RUSSIAN_WAREHOUSE_CRUSHREMAINGSHIPS_Description\" xml:space=\"preserve\">\n    <value>A few brave Russians are still resisting. Crush their hopes. Their weakness is bullets. Rockets may work, too.\n</value>\n  </data>\n  <data name=\"RUSSIAN_WAREHOUSE_MEETINGPOINT_Name\" xml:space=\"preserve\">\n    <value>Return to Sapho</value>\n  </data>\n  <data name=\"RUSSIAN_WAREHOUSE_MEETINGPOINT_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"RussianReinforcements\" xml:space=\"preserve\">\n    <value>Russian reinforcements</value>\n  </data>\n  <data name=\"PIRATE_BASE_TRAVEL_TO_BASE_Name\" xml:space=\"preserve\">\n    <value>Find the pirate base</value>\n  </data>\n  <data name=\"PIRATE_BASE_TRAVEL_TO_BASE_Description\" xml:space=\"preserve\">\n    <value>Find the pirate base hidden in the asteroid field.</value>\n  </data>\n  <data name=\"PIRATE_BASE_SPEAK_WITH_PIRATES_Name\" xml:space=\"preserve\">\n    <value>Speak to the captain</value>\n  </data>\n  <data name=\"PIRATE_BASE_SPEAK_WITH_PIRATES_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"PIRATE_BASE_PREPARE_FOR_DEFENSE_Name\" xml:space=\"preserve\">\n    <value>Prepare for the attack</value>\n  </data>\n  <data name=\"PIRATE_BASE_PREPARE_FOR_DEFENSE_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"PIRATE_BASE_GET_TURRETS_Name\" xml:space=\"preserve\">\n    <value>Get turrets</value>\n  </data>\n  <data name=\"PIRATE_BASE_GET_TURRETS_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"PIRATE_BASE_DEFENSE_SETUP_Name\" xml:space=\"preserve\">\n    <value>Place turrets outside the base</value>\n  </data>\n  <data name=\"PIRATE_BASE_DEFENSE_SETUP_Description\" xml:space=\"preserve\">\n    <value>The enemy forces are coming; help the pirates defend their base. Build up to six turrets on asteroids to defend the cave entrance.</value>\n  </data>\n  <data name=\"PIRATE_BASE_DEFEND_Name\" xml:space=\"preserve\">\n    <value>Protect the generator</value>\n  </data>\n  <data name=\"PIRATE_BASE_DEFEND_Description\" xml:space=\"preserve\">\n    <value>Defend the generator from incoming Russian commandoes.</value>\n  </data>\n  <data name=\"PIRATE_BASE_ALLY_ARRIVED_Name\" xml:space=\"preserve\">\n    <value>Allies have arrived</value>\n  </data>\n  <data name=\"PIRATE_BASE_ALLY_ARRIVED_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"BaseGenerator\" xml:space=\"preserve\">\n    <value>Base Generator</value>\n  </data>\n  <data name=\"BARTHS_MOON_CONVINCE_MEET_THOMAS_BART_Name\" xml:space=\"preserve\">\n    <value>Meet Thomas Barth in his lab</value>\n  </data>\n  <data name=\"BARTHS_MOON_CONVINCE_MEET_THOMAS_BART_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"BARTHS_MOON_CONVINCE_TALK_WITH_THOMAS_BART_Name\" xml:space=\"preserve\">\n    <value>Talk to Thomas Barth</value>\n  </data>\n  <data name=\"BARTHS_MOON_CONVINCE_TALK_WITH_THOMAS_BART_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"BARTHS_MOON_CONVINCE_FLY_TO_ENEMY_BASE_Name\" xml:space=\"preserve\">\n    <value>Fly to the enemy base</value>\n  </data>\n  <data name=\"BARTHS_MOON_CONVINCE_FLY_TO_ENEMY_BASE_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"BARTHS_MOON_CONVINCE_DESTROY_SHIP_Name\" xml:space=\"preserve\">\n    <value>Destroy mothership</value>\n  </data>\n  <data name=\"BARTHS_MOON_CONVINCE_DESTROY_SHIP_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"BARTHS_MOON_CONVINCE_DESTROY_GENERATOR_Name\" xml:space=\"preserve\">\n    <value>Kill all enemies and disable the base</value>\n  </data>\n  <data name=\"BARTHS_MOON_CONVINCE_DESTROY_GENERATOR_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"BARTHS_MOON_CONVINCE_FIND_TRANSMITTER_Name\" xml:space=\"preserve\">\n    <value>Get reward</value>\n  </data>\n  <data name=\"BARTHS_MOON_CONVINCE_FIND_TRANSMITTER_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"BARTHS_MOON_CONVINCE_RETURN_BACK_TO_MADELYN_Name\" xml:space=\"preserve\">\n    <value>Return to Sapho</value>\n  </data>\n  <data name=\"BARTHS_MOON_CONVINCE_RETURN_BACK_TO_MADELYN_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"Disable\" xml:space=\"preserve\">\n    <value>Disable</value>\n  </data>\n  <data name=\"Nothing\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"HudMainBase\" xml:space=\"preserve\">\n    <value>Main base</value>\n  </data>\n  <data name=\"HudCommandCenter\" xml:space=\"preserve\">\n    <value>Command center</value>\n  </data>\n  <data name=\"HudGenerator\" xml:space=\"preserve\">\n    <value>Generator</value>\n  </data>\n  <data name=\"HudHub\" xml:space=\"preserve\">\n    <value>Hub</value>\n  </data>\n  <data name=\"HudMiners\" xml:space=\"preserve\">\n    <value>Miners</value>\n  </data>\n  <data name=\"HudHangar\" xml:space=\"preserve\">\n    <value>Hangar</value>\n  </data>\n  <data name=\"HudMothership\" xml:space=\"preserve\">\n    <value>Mothership</value>\n  </data>\n  <data name=\"HudPirateCaptain\" xml:space=\"preserve\">\n    <value>Pirate captain</value>\n  </data>\n  <data name=\"HudMeetingPoint\" xml:space=\"preserve\">\n    <value>Meeting point</value>\n  </data>\n  <data name=\"HudHacker\" xml:space=\"preserve\">\n    <value>Hacker</value>\n  </data>\n  <data name=\"HudJammer\" xml:space=\"preserve\">\n    <value>Jammer</value>\n  </data>\n  <data name=\"HudControlRoom\" xml:space=\"preserve\">\n    <value>Control room</value>\n  </data>\n  <data name=\"HudTowerB\" xml:space=\"preserve\">\n    <value>Tower B</value>\n  </data>\n  <data name=\"HudBatteries\" xml:space=\"preserve\">\n    <value>Batteries</value>\n  </data>\n  <data name=\"HudTunnel\" xml:space=\"preserve\">\n    <value>Tunnel</value>\n  </data>\n  <data name=\"HudTransmitter\" xml:space=\"preserve\">\n    <value>Transmitter</value>\n  </data>\n  <data name=\"HudSafeArea\" xml:space=\"preserve\">\n    <value>Safe area</value>\n  </data>\n  <data name=\"HudEnd\" xml:space=\"preserve\">\n    <value>End</value>\n  </data>\n  <data name=\"HudContainer\" xml:space=\"preserve\">\n    <value>Container</value>\n  </data>\n  <data name=\"HudServiceRoom\" xml:space=\"preserve\">\n    <value>Service room</value>\n  </data>\n  <data name=\"HudCommandRoom\" xml:space=\"preserve\">\n    <value>Command room</value>\n  </data>\n  <data name=\"HudGeneratorRoom\" xml:space=\"preserve\">\n    <value>Generator room</value>\n  </data>\n  <data name=\"HudLab\" xml:space=\"preserve\">\n    <value>Lab</value>\n  </data>\n  <data name=\"HudDrillRoom\" xml:space=\"preserve\">\n    <value>Drill room</value>\n  </data>\n  <data name=\"HudEurydice\" xml:space=\"preserve\">\n    <value>Eurydice</value>\n  </data>\n  <data name=\"HudShip\" xml:space=\"preserve\">\n    <value>Ship</value>\n  </data>\n  <data name=\"HudCargoBay\" xml:space=\"preserve\">\n    <value>Cargo bay</value>\n  </data>\n  <data name=\"HudEquipment\" xml:space=\"preserve\">\n    <value>Equipment</value>\n  </data>\n  <data name=\"HudIdCard\" xml:space=\"preserve\">\n    <value>ID card</value>\n  </data>\n  <data name=\"HudSecurityHub\" xml:space=\"preserve\">\n    <value>Security hub</value>\n  </data>\n  <data name=\"HudControlCenter\" xml:space=\"preserve\">\n    <value>Control center</value>\n  </data>\n  <data name=\"HudMarcus\" xml:space=\"preserve\">\n    <value>Marcus</value>\n  </data>\n  <data name=\"HudEntrance\" xml:space=\"preserve\">\n    <value>Entrance</value>\n  </data>\n  <data name=\"HudHubA\" xml:space=\"preserve\">\n    <value>Hub A</value>\n  </data>\n  <data name=\"HudHubB\" xml:space=\"preserve\">\n    <value>Hub B</value>\n  </data>\n  <data name=\"HudCommunicationHub\" xml:space=\"preserve\">\n    <value>Communication hub</value>\n  </data>\n  <data name=\"HudWarhead\" xml:space=\"preserve\">\n    <value>Warhead</value>\n  </data>\n  <data name=\"HudMadelynsSapho\" xml:space=\"preserve\">\n    <value>Madelyn’s Sapho</value>\n  </data>\n  <data name=\"HudLastHope\" xml:space=\"preserve\">\n    <value>Last Hope</value>\n  </data>\n  <data name=\"HudFortValiant\" xml:space=\"preserve\">\n    <value>Fort Valiant</value>\n  </data>\n  <data name=\"HudTransformer\" xml:space=\"preserve\">\n    <value>Transformer</value>\n  </data>\n  <data name=\"HudBackDoor\" xml:space=\"preserve\">\n    <value>Back door</value>\n  </data>\n  <data name=\"HudResearchRoom\" xml:space=\"preserve\">\n    <value>Research room</value>\n  </data>\n  <data name=\"HudCaptainCedric\" xml:space=\"preserve\">\n    <value>Captain Cedric</value>\n  </data>\n  <data name=\"HudColonelVonStauffenberg\" xml:space=\"preserve\">\n    <value>Colonel von Stauffenberg</value>\n  </data>\n  <data name=\"HudSirGeraint\" xml:space=\"preserve\">\n    <value>Sir Geraint</value>\n  </data>\n  <data name=\"HudBrokenMoon\" xml:space=\"preserve\">\n    <value>Broken Moon</value>\n  </data>\n  <data name=\"HudMainBuilding\" xml:space=\"preserve\">\n    <value>Main building</value>\n  </data>\n  <data name=\"HudPrison\" xml:space=\"preserve\">\n    <value>Prison</value>\n  </data>\n  <data name=\"HudPanel\" xml:space=\"preserve\">\n    <value>Panel</value>\n  </data>\n  <data name=\"HudCave\" xml:space=\"preserve\">\n    <value>Cave</value>\n  </data>\n  <data name=\"HudBlondi\" xml:space=\"preserve\">\n    <value>Blondi</value>\n  </data>\n  <data name=\"HudTransport\" xml:space=\"preserve\">\n    <value>Transport</value>\n  </data>\n  <data name=\"HudChamber\" xml:space=\"preserve\">\n    <value>Chamber</value>\n  </data>\n  <data name=\"HudCage\" xml:space=\"preserve\">\n    <value>Cage</value>\n  </data>\n  <data name=\"HudCargo\" xml:space=\"preserve\">\n    <value>Cargo</value>\n  </data>\n  <data name=\"HudDuplex\" xml:space=\"preserve\">\n    <value>Duplex</value>\n  </data>\n  <data name=\"HudRaynoldsVessel\" xml:space=\"preserve\">\n    <value>Raynold’s vessel</value>\n  </data>\n  <data name=\"HudManjeet\" xml:space=\"preserve\">\n    <value>Manjeet</value>\n  </data>\n  <data name=\"HudDisruptor\" xml:space=\"preserve\">\n    <value>Disruptor</value>\n  </data>\n  <data name=\"HudFrancisReef\" xml:space=\"preserve\">\n    <value>Francis Reef</value>\n  </data>\n  <data name=\"HudRun\" xml:space=\"preserve\">\n    <value>Run</value>\n  </data>\n  <data name=\"HudStart\" xml:space=\"preserve\">\n    <value>Start</value>\n  </data>\n  <data name=\"HudRegroup\" xml:space=\"preserve\">\n    <value>Regroup</value>\n  </data>\n  <data name=\"HudStation\" xml:space=\"preserve\">\n    <value>Station</value>\n  </data>\n  <data name=\"HudLeftWing\" xml:space=\"preserve\">\n    <value>Left wing</value>\n  </data>\n  <data name=\"HudSearch\" xml:space=\"preserve\">\n    <value>Search</value>\n  </data>\n  <data name=\"HudFollow\" xml:space=\"preserve\">\n    <value>Follow</value>\n  </data>\n  <data name=\"HudRift\" xml:space=\"preserve\">\n    <value>The Rift</value>\n  </data>\n  <data name=\"HudSupplies\" xml:space=\"preserve\">\n    <value>Supplies</value>\n  </data>\n  <data name=\"HudStranger\" xml:space=\"preserve\">\n    <value>Stranger</value>\n  </data>\n  <data name=\"HudBarth\" xml:space=\"preserve\">\n    <value>Thomas Barth</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"HudWarehouse\" xml:space=\"preserve\">\n    <value>Warehouse</value>\n  </data>\n  <data name=\"HudEnemyBase\" xml:space=\"preserve\">\n    <value>Enemy base</value>\n  </data>\n  <data name=\"PlutoniumStored\" xml:space=\"preserve\">\n    <value>{0} units of super-efficient plutonium safely stored</value>\n  </data>\n  <data name=\"HudGeneratorRepairKit\" xml:space=\"preserve\">\n    <value>Generator repair kit</value>\n  </data>\n  <data name=\"PressToRedirectEnergy\" xml:space=\"preserve\">\n    <value>Hold {0} to redirect energy</value>\n  </data>\n  <data name=\"RedirectEnergy\" xml:space=\"preserve\">\n    <value>Redirect energy</value>\n  </data>\n  <data name=\"RedirectionInProgress\" xml:space=\"preserve\">\n    <value>Redirecting…</value>\n  </data>\n  <data name=\"GoBackToStartingPosition\" xml:space=\"preserve\">\n    <value>Go back to starting position</value>\n  </data>\n  <data name=\"BARTHS_MOON_PLANT_BUILD_PLANT_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"BARTHS_MOON_PLANT_BUILD_PLANT_Name\" xml:space=\"preserve\">\n    <value>Construct manufacturing plant</value>\n  </data>\n  <data name=\"YouNeedFullGame\" xml:space=\"preserve\">\n    <value>You need to own MinerWars 2081</value>\n  </data>\n  <data name=\"ALIEN_GATE_FOLLOW_COORDINATES_Description\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"MoneyObtained\" xml:space=\"preserve\">\n    <value>You have obtained ${0}.</value>\n  </data>\n  <data name=\"Autocannon\" xml:space=\"preserve\">\n    <value>Gatling gun</value>\n  </data>\n  <data name=\"CIWS\" xml:space=\"preserve\">\n    <value>CIWS</value>\n  </data>\n  <data name=\"MachineGun\" xml:space=\"preserve\">\n    <value>Machine gun</value>\n  </data>\n  <data name=\"MissileLauncher\" xml:space=\"preserve\">\n    <value>Missile launcher</value>\n  </data>\n  <data name=\"Note\" xml:space=\"preserve\">\n    <value>Note</value>\n  </data>\n  <data name=\"TextureQuad\" xml:space=\"preserve\">\n    <value>Texture quad</value>\n  </data>\n  <data name=\"EditVoxelHandIsProjectedToWaypoints\" xml:space=\"preserve\">\n    <value>Project to waypoints</value>\n  </data>\n  <data name=\"Stone_Red\" xml:space=\"preserve\">\n    <value>Stone red</value>\n  </data>\n  <data name=\"AttachVoxelHand\" xml:space=\"preserve\">\n    <value>Attach voxel hand</value>\n  </data>\n  <data name=\"DetachVoxelHand\" xml:space=\"preserve\">\n    <value>Detach voxel hand</value>\n  </data>\n  <data name=\"HudPart\" xml:space=\"preserve\">\n    <value>Part</value>\n  </data>\n  <data name=\"DateDaysAgo\" xml:space=\"preserve\">\n    <value>{0} days ago</value>\n  </data>\n  <data name=\"DateHoursAgo\" xml:space=\"preserve\">\n    <value>{0} hours ago</value>\n  </data>\n  <data name=\"DateMinutesAgo\" xml:space=\"preserve\">\n    <value>{0} minutes ago</value>\n  </data>\n  <data name=\"DateMonthsAgo\" xml:space=\"preserve\">\n    <value>{0} months ago</value>\n  </data>\n  <data name=\"NotificationNeedShowHelpScreen\" xml:space=\"preserve\">\n    <value>Press F1 to see help</value>\n  </data>\n  <data name=\"SteamRegisterErrorCaption\" xml:space=\"preserve\">\n    <value>Steam connection error</value>\n  </data>\n  <data name=\"SteamRegisterErrorText\" xml:space=\"preserve\">\n    <value>Cannot connect Steam account to MinerWars,\nplease contact MinerWars support at support@minerwars.com.\n\nPlease provide following information:\nSteamId: {0}\nError Message: {1}\nCD key: {2}\nWhere did you bought MinerWars\n\n(data was copied to clipboard)</value>\n  </data>\n  <data name=\"HealthEnhancingMedicineActive\" xml:space=\"preserve\">\n    <value>Health Enhancing Medicine Active</value>\n  </data>\n  <data name=\"PerformanceEnhancingMedicineActive\" xml:space=\"preserve\">\n    <value>Performance Enhancing Medicine Active</value>\n  </data>\n  <data name=\"DrillNotification\" xml:space=\"preserve\">\n    <value>Press {0} to activate drill</value>\n  </data>\n  <data name=\"OreNotification\" xml:space=\"preserve\">\n    <value>Press {0} to harvest ore</value>\n  </data>\n  <data name=\"Actor_RimeGuard\" xml:space=\"preserve\">\n    <value>Guard</value>\n  </data>\n  <data name=\"AxisX\" xml:space=\"preserve\">\n    <value>X</value>\n  </data>\n  <data name=\"AxisY\" xml:space=\"preserve\">\n    <value>Y</value>\n  </data>\n  <data name=\"AxisZ\" xml:space=\"preserve\">\n    <value>Z</value>\n  </data>\n  <data name=\"ExplosionIn\" xml:space=\"preserve\">\n    <value>Explosion in: </value>\n  </data>\n  <data name=\"HidePassword\" xml:space=\"preserve\">\n    <value>Hide</value>\n  </data>\n  <data name=\"MusicVolume\" xml:space=\"preserve\">\n    <value>Music volume</value>\n  </data>\n  <data name=\"ProtectSaphosCommandCenter\" xml:space=\"preserve\">\n    <value>Protect Sapho’s bridge</value>\n  </data>\n  <data name=\"StartEditorInProgressPleaseWait\" xml:space=\"preserve\">\n    <value>Starting editor… please wait.</value>\n  </data>\n  <data name=\"Intro01\" xml:space=\"preserve\">\n    <value>In 2070, Project Genesis was launched.</value>\n  </data>\n  <data name=\"Intro02\" xml:space=\"preserve\">\n    <value>An experimental project aiming to harness the energy of the sun.</value>\n  </data>\n  <data name=\"Intro03\" xml:space=\"preserve\">\n    <value>However, the experiment resulted in a temporary quantum change</value>\n  </data>\n  <data name=\"Intro04\" xml:space=\"preserve\">\n    <value>within gravitational laws and subatomic particle rotations.</value>\n  </data>\n  <data name=\"Intro05\" xml:space=\"preserve\">\n    <value>The gravitational quantum collapse tore all the larger objects\nasunder throughout our solar system.</value>\n  </data>\n  <data name=\"Intro06\" xml:space=\"preserve\">\n    <value>Planets, moons and even larger asteroids and comets\nwere fragmented into thousands of pieces.</value>\n  </data>\n  <data name=\"Intro07\" xml:space=\"preserve\">\n    <value>Creating new asteroid belts, marking their former planet's orbits.</value>\n  </data>\n  <data name=\"Intro08\" xml:space=\"preserve\">\n    <value>Together with the rest of the planets and moons,\nEarth was eventually destroyed.</value>\n  </data>\n  <data name=\"Intro09\" xml:space=\"preserve\">\n    <value>Billions of people died together along with our planet Earth.</value>\n  </data>\n  <data name=\"Intro10\" xml:space=\"preserve\">\n    <value>Concurrent massive solar storms killed additional\nthousands of space colonists.</value>\n  </data>\n  <data name=\"Intro11\" xml:space=\"preserve\">\n    <value>The Euro-American Confederation is held responsible for the celestial accident, </value>\n  </data>\n  <data name=\"Intro12\" xml:space=\"preserve\">\n    <value>especially by its major opposition China.</value>\n  </data>\n  <data name=\"Intro13\" xml:space=\"preserve\">\n    <value>2081 – eleven years after the Solar Event</value>\n  </data>\n  <data name=\"Intro14\" xml:space=\"preserve\">\n    <value>Here we are. According to the triangulation,\nthe source of the signal is somewhere nearby.</value>\n  </data>\n  <data name=\"Intro15\" xml:space=\"preserve\">\n    <value>So this is the source of the signal. I must admit I wasn’t\nexpecting something quite so… Holy Crap.</value>\n  </data>\n  <data name=\"Intro16\" xml:space=\"preserve\">\n    <value>Oh my God!</value>\n  </data>\n  <data name=\"Intro17\" xml:space=\"preserve\">\n    <value>This is the moment I’ve waited for my entire life.</value>\n  </data>\n  <data name=\"Intro18\" xml:space=\"preserve\">\n    <value>Any idea what it is?</value>\n  </data>\n  <data name=\"Intro19\" xml:space=\"preserve\">\n    <value>Three weeks earlier...</value>\n  </data>\n  <data name=\"HoldFireToDrillNotification\" xml:space=\"preserve\">\n    <value>Hold {0} to drill</value>\n  </data>\n  <data name=\"PressMToDeactivateDrill\" xml:space=\"preserve\">\n    <value>Press {0} to deactivate drill</value>\n  </data>\n  <data name=\"PerfWarning1_0\" xml:space=\"preserve\">\n    <value>LONG LOADING TIMES ARE DUE TO MINER WARS'</value>\n  </data>\n  <data name=\"PerfWarning2_0\" xml:space=\"preserve\">\n    <value>FULLY DESTRUCTIBLE AND PERSISTENT ENVIRONMENTS</value>\n  </data>\n  <data name=\"PerfWarning3_0\" xml:space=\"preserve\">\n    <value>TO PERFORM THESE FEATURES WE'VE HAD TO BUILD</value>\n  </data>\n  <data name=\"PerfWarning4_0\" xml:space=\"preserve\">\n    <value>OUR OWN</value>\n  </data>\n  <data name=\"PerfWarning4_1\" xml:space=\"preserve\">\n    <value>VOXEL</value>\n  </data>\n  <data name=\"PerfWarning4_2\" xml:space=\"preserve\">\n    <value>ENGINE</value>\n  </data>\n  <data name=\"PerfWarning5_0\" xml:space=\"preserve\">\n    <value>THIS TYPE OF GEOMETRY NATURALLY NEEDS A</value>\n  </data>\n  <data name=\"PerfWarning6_0\" xml:space=\"preserve\">\n    <value>POWERFUL CPU AND GPU</value>\n  </data>\n  <data name=\"SteamNoProductsCaption\" xml:space=\"preserve\">\n    <value>No products owned</value>\n  </data>\n  <data name=\"SteamNoProductsText\" xml:space=\"preserve\">\n    <value>You have activated MinerWars on Steam using Steam key from Profile page,\nhowever you don't own MinerWars, so you're unable to play on Steam.\nBuy MinerWars on www.minerwars.com to play on Steam.</value>\n  </data>\n  <data name=\"LongerLoadingTimes\" xml:space=\"preserve\">\n    <value>Longer loading times are due to Miner Wars' unique fully destructible and persistent environments</value>\n  </data>\n  <data name=\"Tip\" xml:space=\"preserve\">\n    <value>TIP:</value>\n  </data>\n  <data name=\"SteamYouDontOwnTheGameCaption\" xml:space=\"preserve\">\n    <value>You don't own this game on Steam</value>\n  </data>\n  <data name=\"SteamYouDontOwnTheGameText\" xml:space=\"preserve\">\n    <value>You don't own this game on Steam or game was not launched through steam</value>\n  </data>\n  <data name=\"DisableQuickZoom\" xml:space=\"preserve\">\n    <value>Disable quick zoom</value>\n  </data>\n  <data name=\"DisableZoom\" xml:space=\"preserve\">\n    <value>Disable zoom</value>\n  </data>\n  <data name=\"DefendMadelyn\" xml:space=\"preserve\">\n    <value>Defend Madelyn:</value>\n  </data>\n  <data name=\"Snap5Deg\" xml:space=\"preserve\">\n    <value>5 Degrees</value>\n  </data>\n  <data name=\"SaveCorruptedCaption\" xml:space=\"preserve\">\n    <value>Saved game corrupted</value>\n  </data>\n  <data name=\"SaveCorruptedText\" xml:space=\"preserve\">\n    <value>Saved game is corrupted, please load different saved game (use Load Chapter)</value>\n  </data>\n  <data name=\"FeatureAccessibleOnlyFromMainMenu\" xml:space=\"preserve\">\n    <value>Accessible only from main menu</value>\n  </data>\n  <data name=\"String1\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <data name=\"Deathmatch\" xml:space=\"preserve\">\n    <value>Deathmatch</value>\n  </data>\n  <data name=\"SteamInvalidTicketCaption\" xml:space=\"preserve\">\n    <value>Steam offline!</value>\n  </data>\n  <data name=\"SteamInvalidTicketText\" xml:space=\"preserve\">\n    <value>Steam is offline, you have been probably logged out from Steam, please login to Steam and try again.\nMake sure you're not using offline mode (Steam menu / Go online...)\nWhen this problem persist, please send your logfile to support@minerwars.com</value>\n  </data>\n  <data name=\"VideoAdapter\" xml:space=\"preserve\">\n    <value>Video adapter</value>\n  </data>\n  <data name=\"GPSDistance\" xml:space=\"preserve\">\n    <value>: {0:0} meters to next objective.</value>\n  </data>\n  <data name=\"GPSNoPath\" xml:space=\"preserve\">\n    <value>: no path found.</value>\n  </data>\n  <data name=\"SphereFull_1024\" xml:space=\"preserve\">\n    <value>Sphere Full 1024</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"p511_a17_billboard_portrait_2\" xml:space=\"preserve\">\n    <value>p511_a17_billboard_portrait_2</value>\n    <comment>DONT TRANSLATE</comment>\n  </data>\n  <data name=\"DefaultFOV\" xml:space=\"preserve\">\n    <value>Default: {0:F1}</value>\n  </data>\n  <data name=\"DisableCoop\" xml:space=\"preserve\">\n    <value>Disable coop</value>\n  </data>\n  <data name=\"EnableCoop\" xml:space=\"preserve\">\n    <value>Enable coop</value>\n  </data>\n  <data name=\"CargoBoxAmmo\" xml:space=\"preserve\">\n    <value>Ammo</value>\n  </data>\n  <data name=\"CargoBoxFuel\" xml:space=\"preserve\">\n    <value>Fuel</value>\n  </data>\n  <data name=\"CargoBoxMedikit\" xml:space=\"preserve\">\n    <value>Medikit</value>\n  </data>\n  <data name=\"CargoBoxOxygen\" xml:space=\"preserve\">\n    <value>Oxygen</value>\n  </data>\n  <data name=\"CargoBoxRepair\" xml:space=\"preserve\">\n    <value>Repair</value>\n  </data>\n  <data name=\"DoorsLocked\" xml:space=\"preserve\">\n    <value>Locked</value>\n  </data>\n  <data name=\"REICHSTAG\" xml:space=\"preserve\">\n    <value>Reichstag</value>\n  </data>\n  <data name=\"WHITE_WOLVES\" xml:space=\"preserve\">\n    <value>VÝZKUMNÁ ZÁKLADNA BÍLÝCH VLKŮ</value>\n  </data>\n  <data name=\"DeadPilot\" xml:space=\"preserve\">\n    <value>Dead pilot</value>\n  </data>\n  <data name=\"GPSNoObjectives\" xml:space=\"preserve\">\n    <value>: no objectives available.</value>\n  </data>\n  <data name=\"CameraHUB\" xml:space=\"preserve\">\n    <value>Camera HUB</value>\n  </data>\n  <data name=\"WeaponControl\" xml:space=\"preserve\">\n    <value>Weapon Control</value>\n  </data>\n  <data name=\"SecretRoomsFound\" xml:space=\"preserve\">\n    <value>Secret rooms found:</value>\n  </data>\n  <data name=\"BackTurret\" xml:space=\"preserve\">\n    <value>Back Turret</value>\n  </data>\n  <data name=\"BottomTurret\" xml:space=\"preserve\">\n    <value>Bottom Turret</value>\n  </data>\n  <data name=\"FrontTurret\" xml:space=\"preserve\">\n    <value>Front Turret</value>\n  </data>\n  <data name=\"LeftDoor\" xml:space=\"preserve\">\n    <value>Left Door</value>\n  </data>\n  <data name=\"RightDoor\" xml:space=\"preserve\">\n    <value>Right Door</value>\n  </data>\n  <data name=\"MetersLong\" xml:space=\"preserve\">\n    <value>meters</value>\n  </data>\n  <data name=\"SecondsLong\" xml:space=\"preserve\">\n    <value>seconds</value>\n  </data>\n</root>"
  },
  {
    "path": "Sources/MinerWars.GameLib/RunTemplate.bat",
    "content": "@echo off\n\nSET FrameworkPath=\"%ProgramFiles%\\Reference Assemblies\\Microsoft\\Framework\\v3.5\"\n\n\nIF \"%CommonProgramFiles(x86)%\"==\"\" (\n\tSET TextTransformPath=\"%CommonProgramFiles%\\Microsoft Shared\\TextTemplating\\10.0\\TextTransform.exe\"\n) ELSE (\n\tSET TextTransformPath=\"%CommonProgramFiles(x86)%\\Microsoft Shared\\TextTemplating\\10.0\\TextTransform.exe\"\n)\n\necho Framework: %FrameworkPath%\necho Text Template: %TextTransformPath%\n\necho %TextTransformPath% -out \"%1.cs\" -P \"%2\" -P %FrameworkPath% \"%1.tt\"\n%TextTransformPath% -out \"%1.cs\" -P \"%2\" -P %FrameworkPath% \"%1.tt\""
  },
  {
    "path": "Sources/MinerWars.GameLib/Service References/AppCode.Networking.MasterService/Arrays.xsd",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema xmlns:tns=\"http://schemas.microsoft.com/2003/10/Serialization/Arrays\" elementFormDefault=\"qualified\" targetNamespace=\"http://schemas.microsoft.com/2003/10/Serialization/Arrays\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">\n  <xs:complexType name=\"ArrayOfstring\">\n    <xs:sequence>\n      <xs:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"string\" nillable=\"true\" type=\"xs:string\" />\n    </xs:sequence>\n  </xs:complexType>\n  <xs:element name=\"ArrayOfstring\" nillable=\"true\" type=\"tns:ArrayOfstring\" />\n</xs:schema>"
  },
  {
    "path": "Sources/MinerWars.GameLib/Service References/AppCode.Networking.MasterService/MinerWars.CommonLIB.AppCode.Networking.Services.xsd",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema xmlns:tns=\"http://schemas.datacontract.org/2004/07/MinerWars.CommonLIB.AppCode.Networking.Services\" elementFormDefault=\"qualified\" targetNamespace=\"http://schemas.datacontract.org/2004/07/MinerWars.CommonLIB.AppCode.Networking.Services\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">\n  <xs:complexType name=\"MyVersionFault\">\n    <xs:sequence>\n      <xs:element minOccurs=\"0\" name=\"RequiredVersion\" type=\"xs:int\" />\n    </xs:sequence>\n  </xs:complexType>\n  <xs:element name=\"MyVersionFault\" nillable=\"true\" type=\"tns:MyVersionFault\" />\n</xs:schema>"
  },
  {
    "path": "Sources/MinerWars.GameLib/Service References/AppCode.Networking.MasterService/MinerWars.CommonLIB.AppCode.Networking.xsd",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema xmlns:tns=\"http://schemas.datacontract.org/2004/07/MinerWars.CommonLIB.AppCode.Networking\" elementFormDefault=\"qualified\" targetNamespace=\"http://schemas.datacontract.org/2004/07/MinerWars.CommonLIB.AppCode.Networking\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">\n  <xs:simpleType name=\"MyMwcRegisterResponseResultEnum\">\n    <xs:annotation>\n      <xs:appinfo>\n        <ActualType Name=\"unsignedByte\" Namespace=\"http://www.w3.org/2001/XMLSchema\" xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/\">\n        </ActualType>\n      </xs:appinfo>\n    </xs:annotation>\n    <xs:restriction base=\"xs:string\">\n      <xs:enumeration value=\"OK\" />\n      <xs:enumeration value=\"USERNAME_FORMAT_INVALID\" />\n      <xs:enumeration value=\"USERNAME_ALREADY_USED\" />\n      <xs:enumeration value=\"PASSWORD_FORMAT_INVALID\" />\n      <xs:enumeration value=\"EMAIL_FORMAT_INVALID\" />\n      <xs:enumeration value=\"WRONG_CLIENT_VERSION\" />\n      <xs:enumeration value=\"UNKNOWN_ERROR\" />\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:element name=\"MyMwcRegisterResponseResultEnum\" nillable=\"true\" type=\"tns:MyMwcRegisterResponseResultEnum\" />\n</xs:schema>"
  },
  {
    "path": "Sources/MinerWars.GameLib/Service References/AppCode.Networking.MasterService/MinerWars.MasterServerLIB.MasterService.xsd",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema xmlns:tns=\"http://schemas.datacontract.org/2004/07/MinerWars.MasterServerLIB.MasterService\" elementFormDefault=\"qualified\" targetNamespace=\"http://schemas.datacontract.org/2004/07/MinerWars.MasterServerLIB.MasterService\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">\n  <xs:import namespace=\"http://schemas.datacontract.org/2004/07/MinerWars.CommonLIB.AppCode.Networking\" />\n  <xs:complexType name=\"MyRegistrationFault\">\n    <xs:sequence>\n      <xs:element xmlns:q1=\"http://schemas.datacontract.org/2004/07/MinerWars.CommonLIB.AppCode.Networking\" minOccurs=\"0\" name=\"ErrorCode\" type=\"q1:MyMwcRegisterResponseResultEnum\" />\n    </xs:sequence>\n  </xs:complexType>\n  <xs:element name=\"MyRegistrationFault\" nillable=\"true\" type=\"tns:MyRegistrationFault\" />\n  <xs:complexType name=\"MySteamFault\">\n    <xs:sequence>\n      <xs:element minOccurs=\"0\" name=\"SteamFaultCode\" type=\"tns:SteamFaultCode\" />\n    </xs:sequence>\n  </xs:complexType>\n  <xs:element name=\"MySteamFault\" nillable=\"true\" type=\"tns:MySteamFault\" />\n  <xs:simpleType name=\"SteamFaultCode\">\n    <xs:restriction base=\"xs:string\">\n      <xs:enumeration value=\"InvalidTicket\" />\n      <xs:enumeration value=\"InvalidUsernameAndPassword\" />\n      <xs:enumeration value=\"NotRegistered\" />\n      <xs:enumeration value=\"SerialKeyIsNotAssignedToAccount\" />\n      <xs:enumeration value=\"AlreadyRegistered\" />\n      <xs:enumeration value=\"SerialKeyNotFound\" />\n      <xs:enumeration value=\"SerialKeyProductIsInvalid\" />\n      <xs:enumeration value=\"SerialKeyAlreadyUsed\" />\n      <xs:enumeration value=\"SerialKeyDeleted\" />\n      <xs:enumeration value=\"NoMW1ProductsOwned\" />\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:element name=\"SteamFaultCode\" nillable=\"true\" type=\"tns:SteamFaultCode\" />\n</xs:schema>"
  },
  {
    "path": "Sources/MinerWars.GameLib/Service References/AppCode.Networking.MasterService/Reference.cs",
    "content": "﻿//------------------------------------------------------------------------------\n// <auto-generated>\n//     This code was generated by a tool.\n//     Runtime Version:4.0.30319.296\n//\n//     Changes to this file may cause incorrect behavior and will be lost if\n//     the code is regenerated.\n// </auto-generated>\n//------------------------------------------------------------------------------\n\nnamespace MinerWars.AppCode.Networking.MasterService {\n    using System.Runtime.Serialization;\n    using System;\n    \n    \n    [System.Diagnostics.DebuggerStepThroughAttribute()]\n    [System.CodeDom.Compiler.GeneratedCodeAttribute(\"System.Runtime.Serialization\", \"4.0.0.0\")]\n    [System.Runtime.Serialization.DataContractAttribute(Name=\"MyRegistrationFault\", Namespace=\"http://schemas.datacontract.org/2004/07/MinerWars.MasterServerLIB.MasterService\")]\n    [System.SerializableAttribute()]\n    public partial class MyRegistrationFault : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {\n        \n        [System.NonSerializedAttribute()]\n        private System.Runtime.Serialization.ExtensionDataObject extensionDataField;\n        \n        [System.Runtime.Serialization.OptionalFieldAttribute()]\n        private MinerWars.CommonLIB.AppCode.Networking.MyMwcRegisterResponseResultEnum ErrorCodeField;\n        \n        [global::System.ComponentModel.BrowsableAttribute(false)]\n        public System.Runtime.Serialization.ExtensionDataObject ExtensionData {\n            get {\n                return this.extensionDataField;\n            }\n            set {\n                this.extensionDataField = value;\n            }\n        }\n        \n        [System.Runtime.Serialization.DataMemberAttribute()]\n        public MinerWars.CommonLIB.AppCode.Networking.MyMwcRegisterResponseResultEnum ErrorCode {\n            get {\n                return this.ErrorCodeField;\n            }\n            set {\n                if ((this.ErrorCodeField.Equals(value) != true)) {\n                    this.ErrorCodeField = value;\n                    this.RaisePropertyChanged(\"ErrorCode\");\n                }\n            }\n        }\n        \n        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;\n        \n        protected void RaisePropertyChanged(string propertyName) {\n            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;\n            if ((propertyChanged != null)) {\n                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));\n            }\n        }\n    }\n    \n    [System.Diagnostics.DebuggerStepThroughAttribute()]\n    [System.CodeDom.Compiler.GeneratedCodeAttribute(\"System.Runtime.Serialization\", \"4.0.0.0\")]\n    [System.Runtime.Serialization.DataContractAttribute(Name=\"MySteamFault\", Namespace=\"http://schemas.datacontract.org/2004/07/MinerWars.MasterServerLIB.MasterService\")]\n    [System.SerializableAttribute()]\n    public partial class MySteamFault : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {\n        \n        [System.NonSerializedAttribute()]\n        private System.Runtime.Serialization.ExtensionDataObject extensionDataField;\n        \n        [System.Runtime.Serialization.OptionalFieldAttribute()]\n        private MinerWars.AppCode.Networking.MasterService.SteamFaultCode SteamFaultCodeField;\n        \n        [global::System.ComponentModel.BrowsableAttribute(false)]\n        public System.Runtime.Serialization.ExtensionDataObject ExtensionData {\n            get {\n                return this.extensionDataField;\n            }\n            set {\n                this.extensionDataField = value;\n            }\n        }\n        \n        [System.Runtime.Serialization.DataMemberAttribute()]\n        public MinerWars.AppCode.Networking.MasterService.SteamFaultCode SteamFaultCode {\n            get {\n                return this.SteamFaultCodeField;\n            }\n            set {\n                if ((this.SteamFaultCodeField.Equals(value) != true)) {\n                    this.SteamFaultCodeField = value;\n                    this.RaisePropertyChanged(\"SteamFaultCode\");\n                }\n            }\n        }\n        \n        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;\n        \n        protected void RaisePropertyChanged(string propertyName) {\n            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;\n            if ((propertyChanged != null)) {\n                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));\n            }\n        }\n    }\n    \n    [System.CodeDom.Compiler.GeneratedCodeAttribute(\"System.Runtime.Serialization\", \"4.0.0.0\")]\n    [System.Runtime.Serialization.DataContractAttribute(Name=\"SteamFaultCode\", Namespace=\"http://schemas.datacontract.org/2004/07/MinerWars.MasterServerLIB.MasterService\")]\n    public enum SteamFaultCode : int {\n        \n        [System.Runtime.Serialization.EnumMemberAttribute()]\n        InvalidTicket = 0,\n        \n        [System.Runtime.Serialization.EnumMemberAttribute()]\n        InvalidUsernameAndPassword = 1,\n        \n        [System.Runtime.Serialization.EnumMemberAttribute()]\n        NotRegistered = 2,\n        \n        [System.Runtime.Serialization.EnumMemberAttribute()]\n        SerialKeyIsNotAssignedToAccount = 3,\n        \n        [System.Runtime.Serialization.EnumMemberAttribute()]\n        AlreadyRegistered = 4,\n        \n        [System.Runtime.Serialization.EnumMemberAttribute()]\n        SerialKeyNotFound = 5,\n        \n        [System.Runtime.Serialization.EnumMemberAttribute()]\n        SerialKeyProductIsInvalid = 6,\n        \n        [System.Runtime.Serialization.EnumMemberAttribute()]\n        SerialKeyAlreadyUsed = 7,\n        \n        [System.Runtime.Serialization.EnumMemberAttribute()]\n        SerialKeyDeleted = 8,\n        \n        [System.Runtime.Serialization.EnumMemberAttribute()]\n        NoMW1ProductsOwned = 9,\n    }\n    \n    [System.CodeDom.Compiler.GeneratedCodeAttribute(\"System.ServiceModel\", \"4.0.0.0\")]\n    [System.ServiceModel.ServiceContractAttribute(ConfigurationName=\"AppCode.Networking.MasterService.IMyMasterService\")]\n    public interface IMyMasterService {\n        \n        [System.ServiceModel.OperationContractAttribute(Action=\"http://tempuri.org/IMyMasterService/CheckVersion\", ReplyAction=\"http://tempuri.org/IMyMasterService/CheckVersionResponse\")]\n        [System.ServiceModel.FaultContractAttribute(typeof(MinerWars.CommonLIB.AppCode.Networking.Services.MyVersionFault), Action=\"http://tempuri.org/IMyMasterService/CheckVersionMyVersionFaultFault\", Name=\"MyVersionFault\", Namespace=\"http://schemas.datacontract.org/2004/07/MinerWars.CommonLIB.AppCode.Networking.Se\" +\n            \"rvices\")]\n        void CheckVersion(int appVersion);\n        \n        [System.ServiceModel.OperationContractAttribute(AsyncPattern=true, Action=\"http://tempuri.org/IMyMasterService/CheckVersion\", ReplyAction=\"http://tempuri.org/IMyMasterService/CheckVersionResponse\")]\n        System.IAsyncResult BeginCheckVersion(int appVersion, System.AsyncCallback callback, object asyncState);\n        \n        void EndCheckVersion(System.IAsyncResult result);\n        \n        [System.ServiceModel.OperationContractAttribute(Action=\"http://tempuri.org/IMyMasterService/GetSectorServer\", ReplyAction=\"http://tempuri.org/IMyMasterService/GetSectorServerResponse\")]\n        string GetSectorServer();\n        \n        [System.ServiceModel.OperationContractAttribute(AsyncPattern=true, Action=\"http://tempuri.org/IMyMasterService/GetSectorServer\", ReplyAction=\"http://tempuri.org/IMyMasterService/GetSectorServerResponse\")]\n        System.IAsyncResult BeginGetSectorServer(System.AsyncCallback callback, object asyncState);\n        \n        string EndGetSectorServer(System.IAsyncResult result);\n        \n        [System.ServiceModel.OperationContractAttribute(Action=\"http://tempuri.org/IMyMasterService/GetAllServers\", ReplyAction=\"http://tempuri.org/IMyMasterService/GetAllServersResponse\")]\n        string[] GetAllServers();\n        \n        [System.ServiceModel.OperationContractAttribute(AsyncPattern=true, Action=\"http://tempuri.org/IMyMasterService/GetAllServers\", ReplyAction=\"http://tempuri.org/IMyMasterService/GetAllServersResponse\")]\n        System.IAsyncResult BeginGetAllServers(System.AsyncCallback callback, object asyncState);\n        \n        string[] EndGetAllServers(System.IAsyncResult result);\n        \n        [System.ServiceModel.OperationContractAttribute(Action=\"http://tempuri.org/IMyMasterService/Register\", ReplyAction=\"http://tempuri.org/IMyMasterService/RegisterResponse\")]\n        [System.ServiceModel.FaultContractAttribute(typeof(MinerWars.AppCode.Networking.MasterService.MyRegistrationFault), Action=\"http://tempuri.org/IMyMasterService/RegisterMyRegistrationFaultFault\", Name=\"MyRegistrationFault\", Namespace=\"http://schemas.datacontract.org/2004/07/MinerWars.MasterServerLIB.MasterService\")]\n        void Register(string username, string passwordHash, string email, bool sendNewsletter);\n        \n        [System.ServiceModel.OperationContractAttribute(AsyncPattern=true, Action=\"http://tempuri.org/IMyMasterService/Register\", ReplyAction=\"http://tempuri.org/IMyMasterService/RegisterResponse\")]\n        System.IAsyncResult BeginRegister(string username, string passwordHash, string email, bool sendNewsletter, System.AsyncCallback callback, object asyncState);\n        \n        void EndRegister(System.IAsyncResult result);\n        \n        [System.ServiceModel.OperationContractAttribute(Action=\"http://tempuri.org/IMyMasterService/SteamDemoLogin\", ReplyAction=\"http://tempuri.org/IMyMasterService/SteamDemoLoginResponse\")]\n        [return: System.ServiceModel.MessageParameterAttribute(Name=\"username\")]\n        string SteamDemoLogin(out string token, long steamUserId, byte[] ticket);\n        \n        [System.ServiceModel.OperationContractAttribute(AsyncPattern=true, Action=\"http://tempuri.org/IMyMasterService/SteamDemoLogin\", ReplyAction=\"http://tempuri.org/IMyMasterService/SteamDemoLoginResponse\")]\n        System.IAsyncResult BeginSteamDemoLogin(long steamUserId, byte[] ticket, System.AsyncCallback callback, object asyncState);\n        \n        [return: System.ServiceModel.MessageParameterAttribute(Name=\"username\")]\n        string EndSteamDemoLogin(out string token, System.IAsyncResult result);\n        \n        [System.ServiceModel.OperationContractAttribute(Action=\"http://tempuri.org/IMyMasterService/SteamLogin\", ReplyAction=\"http://tempuri.org/IMyMasterService/SteamLoginResponse\")]\n        [System.ServiceModel.FaultContractAttribute(typeof(MinerWars.AppCode.Networking.MasterService.MySteamFault), Action=\"http://tempuri.org/IMyMasterService/SteamLoginMySteamFaultFault\", Name=\"MySteamFault\", Namespace=\"http://schemas.datacontract.org/2004/07/MinerWars.MasterServerLIB.MasterService\")]\n        [return: System.ServiceModel.MessageParameterAttribute(Name=\"username\")]\n        string SteamLogin(out string token, long steamUserId, byte[] ticket);\n        \n        [System.ServiceModel.OperationContractAttribute(AsyncPattern=true, Action=\"http://tempuri.org/IMyMasterService/SteamLogin\", ReplyAction=\"http://tempuri.org/IMyMasterService/SteamLoginResponse\")]\n        System.IAsyncResult BeginSteamLogin(long steamUserId, byte[] ticket, System.AsyncCallback callback, object asyncState);\n        \n        [return: System.ServiceModel.MessageParameterAttribute(Name=\"username\")]\n        string EndSteamLogin(out string token, System.IAsyncResult result);\n        \n        [System.ServiceModel.OperationContractAttribute(Action=\"http://tempuri.org/IMyMasterService/SteamRegister\", ReplyAction=\"http://tempuri.org/IMyMasterService/SteamRegisterResponse\")]\n        [System.ServiceModel.FaultContractAttribute(typeof(MinerWars.AppCode.Networking.MasterService.MySteamFault), Action=\"http://tempuri.org/IMyMasterService/SteamRegisterMySteamFaultFault\", Name=\"MySteamFault\", Namespace=\"http://schemas.datacontract.org/2004/07/MinerWars.MasterServerLIB.MasterService\")]\n        void SteamRegister(long steamUserId, byte[] ticket, string serialKey, string steamUserName);\n        \n        [System.ServiceModel.OperationContractAttribute(AsyncPattern=true, Action=\"http://tempuri.org/IMyMasterService/SteamRegister\", ReplyAction=\"http://tempuri.org/IMyMasterService/SteamRegisterResponse\")]\n        System.IAsyncResult BeginSteamRegister(long steamUserId, byte[] ticket, string serialKey, string steamUserName, System.AsyncCallback callback, object asyncState);\n        \n        void EndSteamRegister(System.IAsyncResult result);\n    }\n    \n    [System.CodeDom.Compiler.GeneratedCodeAttribute(\"System.ServiceModel\", \"4.0.0.0\")]\n    public interface IMyMasterServiceChannel : MinerWars.AppCode.Networking.MasterService.IMyMasterService, System.ServiceModel.IClientChannel {\n    }\n    \n    [System.Diagnostics.DebuggerStepThroughAttribute()]\n    [System.CodeDom.Compiler.GeneratedCodeAttribute(\"System.ServiceModel\", \"4.0.0.0\")]\n    public partial class GetSectorServerCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {\n        \n        private object[] results;\n        \n        public GetSectorServerCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : \n                base(exception, cancelled, userState) {\n            this.results = results;\n        }\n        \n        public string Result {\n            get {\n                base.RaiseExceptionIfNecessary();\n                return ((string)(this.results[0]));\n            }\n        }\n    }\n    \n    [System.Diagnostics.DebuggerStepThroughAttribute()]\n    [System.CodeDom.Compiler.GeneratedCodeAttribute(\"System.ServiceModel\", \"4.0.0.0\")]\n    public partial class GetAllServersCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {\n        \n        private object[] results;\n        \n        public GetAllServersCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : \n                base(exception, cancelled, userState) {\n            this.results = results;\n        }\n        \n        public string[] Result {\n            get {\n                base.RaiseExceptionIfNecessary();\n                return ((string[])(this.results[0]));\n            }\n        }\n    }\n    \n    [System.Diagnostics.DebuggerStepThroughAttribute()]\n    [System.CodeDom.Compiler.GeneratedCodeAttribute(\"System.ServiceModel\", \"4.0.0.0\")]\n    public partial class SteamDemoLoginCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {\n        \n        private object[] results;\n        \n        public SteamDemoLoginCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : \n                base(exception, cancelled, userState) {\n            this.results = results;\n        }\n        \n        public string token {\n            get {\n                base.RaiseExceptionIfNecessary();\n                return ((string)(this.results[0]));\n            }\n        }\n        \n        public string Result {\n            get {\n                base.RaiseExceptionIfNecessary();\n                return ((string)(this.results[1]));\n            }\n        }\n    }\n    \n    [System.Diagnostics.DebuggerStepThroughAttribute()]\n    [System.CodeDom.Compiler.GeneratedCodeAttribute(\"System.ServiceModel\", \"4.0.0.0\")]\n    public partial class SteamLoginCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {\n        \n        private object[] results;\n        \n        public SteamLoginCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : \n                base(exception, cancelled, userState) {\n            this.results = results;\n        }\n        \n        public string token {\n            get {\n                base.RaiseExceptionIfNecessary();\n                return ((string)(this.results[0]));\n            }\n        }\n        \n        public string Result {\n            get {\n                base.RaiseExceptionIfNecessary();\n                return ((string)(this.results[1]));\n            }\n        }\n    }\n    \n    [System.Diagnostics.DebuggerStepThroughAttribute()]\n    [System.CodeDom.Compiler.GeneratedCodeAttribute(\"System.ServiceModel\", \"4.0.0.0\")]\n    public partial class MyMasterServiceClient : System.ServiceModel.ClientBase<MinerWars.AppCode.Networking.MasterService.IMyMasterService>, MinerWars.AppCode.Networking.MasterService.IMyMasterService {\n        \n        private BeginOperationDelegate onBeginCheckVersionDelegate;\n        \n        private EndOperationDelegate onEndCheckVersionDelegate;\n        \n        private System.Threading.SendOrPostCallback onCheckVersionCompletedDelegate;\n        \n        private BeginOperationDelegate onBeginGetSectorServerDelegate;\n        \n        private EndOperationDelegate onEndGetSectorServerDelegate;\n        \n        private System.Threading.SendOrPostCallback onGetSectorServerCompletedDelegate;\n        \n        private BeginOperationDelegate onBeginGetAllServersDelegate;\n        \n        private EndOperationDelegate onEndGetAllServersDelegate;\n        \n        private System.Threading.SendOrPostCallback onGetAllServersCompletedDelegate;\n        \n        private BeginOperationDelegate onBeginRegisterDelegate;\n        \n        private EndOperationDelegate onEndRegisterDelegate;\n        \n        private System.Threading.SendOrPostCallback onRegisterCompletedDelegate;\n        \n        private BeginOperationDelegate onBeginSteamDemoLoginDelegate;\n        \n        private EndOperationDelegate onEndSteamDemoLoginDelegate;\n        \n        private System.Threading.SendOrPostCallback onSteamDemoLoginCompletedDelegate;\n        \n        private BeginOperationDelegate onBeginSteamLoginDelegate;\n        \n        private EndOperationDelegate onEndSteamLoginDelegate;\n        \n        private System.Threading.SendOrPostCallback onSteamLoginCompletedDelegate;\n        \n        private BeginOperationDelegate onBeginSteamRegisterDelegate;\n        \n        private EndOperationDelegate onEndSteamRegisterDelegate;\n        \n        private System.Threading.SendOrPostCallback onSteamRegisterCompletedDelegate;\n        \n        public MyMasterServiceClient() {\n        }\n        \n        public MyMasterServiceClient(string endpointConfigurationName) : \n                base(endpointConfigurationName) {\n        }\n        \n        public MyMasterServiceClient(string endpointConfigurationName, string remoteAddress) : \n                base(endpointConfigurationName, remoteAddress) {\n        }\n        \n        public MyMasterServiceClient(string endpointConfigurationName, System.ServiceModel.EndpointAddress remoteAddress) : \n                base(endpointConfigurationName, remoteAddress) {\n        }\n        \n        public MyMasterServiceClient(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) : \n                base(binding, remoteAddress) {\n        }\n        \n        public event System.EventHandler<System.ComponentModel.AsyncCompletedEventArgs> CheckVersionCompleted;\n        \n        public event System.EventHandler<GetSectorServerCompletedEventArgs> GetSectorServerCompleted;\n        \n        public event System.EventHandler<GetAllServersCompletedEventArgs> GetAllServersCompleted;\n        \n        public event System.EventHandler<System.ComponentModel.AsyncCompletedEventArgs> RegisterCompleted;\n        \n        public event System.EventHandler<SteamDemoLoginCompletedEventArgs> SteamDemoLoginCompleted;\n        \n        public event System.EventHandler<SteamLoginCompletedEventArgs> SteamLoginCompleted;\n        \n        public event System.EventHandler<System.ComponentModel.AsyncCompletedEventArgs> SteamRegisterCompleted;\n        \n        public void CheckVersion(int appVersion) {\n            base.Channel.CheckVersion(appVersion);\n        }\n        \n        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]\n        public System.IAsyncResult BeginCheckVersion(int appVersion, System.AsyncCallback callback, object asyncState) {\n            return base.Channel.BeginCheckVersion(appVersion, callback, asyncState);\n        }\n        \n        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]\n        public void EndCheckVersion(System.IAsyncResult result) {\n            base.Channel.EndCheckVersion(result);\n        }\n        \n        private System.IAsyncResult OnBeginCheckVersion(object[] inValues, System.AsyncCallback callback, object asyncState) {\n            int appVersion = ((int)(inValues[0]));\n            return this.BeginCheckVersion(appVersion, callback, asyncState);\n        }\n        \n        private object[] OnEndCheckVersion(System.IAsyncResult result) {\n            this.EndCheckVersion(result);\n            return null;\n        }\n        \n        private void OnCheckVersionCompleted(object state) {\n            if ((this.CheckVersionCompleted != null)) {\n                InvokeAsyncCompletedEventArgs e = ((InvokeAsyncCompletedEventArgs)(state));\n                this.CheckVersionCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(e.Error, e.Cancelled, e.UserState));\n            }\n        }\n        \n        public void CheckVersionAsync(int appVersion) {\n            this.CheckVersionAsync(appVersion, null);\n        }\n        \n        public void CheckVersionAsync(int appVersion, object userState) {\n            if ((this.onBeginCheckVersionDelegate == null)) {\n                this.onBeginCheckVersionDelegate = new BeginOperationDelegate(this.OnBeginCheckVersion);\n            }\n            if ((this.onEndCheckVersionDelegate == null)) {\n                this.onEndCheckVersionDelegate = new EndOperationDelegate(this.OnEndCheckVersion);\n            }\n            if ((this.onCheckVersionCompletedDelegate == null)) {\n                this.onCheckVersionCompletedDelegate = new System.Threading.SendOrPostCallback(this.OnCheckVersionCompleted);\n            }\n            base.InvokeAsync(this.onBeginCheckVersionDelegate, new object[] {\n                        appVersion}, this.onEndCheckVersionDelegate, this.onCheckVersionCompletedDelegate, userState);\n        }\n        \n        public string GetSectorServer() {\n            return base.Channel.GetSectorServer();\n        }\n        \n        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]\n        public System.IAsyncResult BeginGetSectorServer(System.AsyncCallback callback, object asyncState) {\n            return base.Channel.BeginGetSectorServer(callback, asyncState);\n        }\n        \n        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]\n        public string EndGetSectorServer(System.IAsyncResult result) {\n            return base.Channel.EndGetSectorServer(result);\n        }\n        \n        private System.IAsyncResult OnBeginGetSectorServer(object[] inValues, System.AsyncCallback callback, object asyncState) {\n            return this.BeginGetSectorServer(callback, asyncState);\n        }\n        \n        private object[] OnEndGetSectorServer(System.IAsyncResult result) {\n            string retVal = this.EndGetSectorServer(result);\n            return new object[] {\n                    retVal};\n        }\n        \n        private void OnGetSectorServerCompleted(object state) {\n            if ((this.GetSectorServerCompleted != null)) {\n                InvokeAsyncCompletedEventArgs e = ((InvokeAsyncCompletedEventArgs)(state));\n                this.GetSectorServerCompleted(this, new GetSectorServerCompletedEventArgs(e.Results, e.Error, e.Cancelled, e.UserState));\n            }\n        }\n        \n        public void GetSectorServerAsync() {\n            this.GetSectorServerAsync(null);\n        }\n        \n        public void GetSectorServerAsync(object userState) {\n            if ((this.onBeginGetSectorServerDelegate == null)) {\n                this.onBeginGetSectorServerDelegate = new BeginOperationDelegate(this.OnBeginGetSectorServer);\n            }\n            if ((this.onEndGetSectorServerDelegate == null)) {\n                this.onEndGetSectorServerDelegate = new EndOperationDelegate(this.OnEndGetSectorServer);\n            }\n            if ((this.onGetSectorServerCompletedDelegate == null)) {\n                this.onGetSectorServerCompletedDelegate = new System.Threading.SendOrPostCallback(this.OnGetSectorServerCompleted);\n            }\n            base.InvokeAsync(this.onBeginGetSectorServerDelegate, null, this.onEndGetSectorServerDelegate, this.onGetSectorServerCompletedDelegate, userState);\n        }\n        \n        public string[] GetAllServers() {\n            return base.Channel.GetAllServers();\n        }\n        \n        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]\n        public System.IAsyncResult BeginGetAllServers(System.AsyncCallback callback, object asyncState) {\n            return base.Channel.BeginGetAllServers(callback, asyncState);\n        }\n        \n        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]\n        public string[] EndGetAllServers(System.IAsyncResult result) {\n            return base.Channel.EndGetAllServers(result);\n        }\n        \n        private System.IAsyncResult OnBeginGetAllServers(object[] inValues, System.AsyncCallback callback, object asyncState) {\n            return this.BeginGetAllServers(callback, asyncState);\n        }\n        \n        private object[] OnEndGetAllServers(System.IAsyncResult result) {\n            string[] retVal = this.EndGetAllServers(result);\n            return new object[] {\n                    retVal};\n        }\n        \n        private void OnGetAllServersCompleted(object state) {\n            if ((this.GetAllServersCompleted != null)) {\n                InvokeAsyncCompletedEventArgs e = ((InvokeAsyncCompletedEventArgs)(state));\n                this.GetAllServersCompleted(this, new GetAllServersCompletedEventArgs(e.Results, e.Error, e.Cancelled, e.UserState));\n            }\n        }\n        \n        public void GetAllServersAsync() {\n            this.GetAllServersAsync(null);\n        }\n        \n        public void GetAllServersAsync(object userState) {\n            if ((this.onBeginGetAllServersDelegate == null)) {\n                this.onBeginGetAllServersDelegate = new BeginOperationDelegate(this.OnBeginGetAllServers);\n            }\n            if ((this.onEndGetAllServersDelegate == null)) {\n                this.onEndGetAllServersDelegate = new EndOperationDelegate(this.OnEndGetAllServers);\n            }\n            if ((this.onGetAllServersCompletedDelegate == null)) {\n                this.onGetAllServersCompletedDelegate = new System.Threading.SendOrPostCallback(this.OnGetAllServersCompleted);\n            }\n            base.InvokeAsync(this.onBeginGetAllServersDelegate, null, this.onEndGetAllServersDelegate, this.onGetAllServersCompletedDelegate, userState);\n        }\n        \n        public void Register(string username, string passwordHash, string email, bool sendNewsletter) {\n            base.Channel.Register(username, passwordHash, email, sendNewsletter);\n        }\n        \n        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]\n        public System.IAsyncResult BeginRegister(string username, string passwordHash, string email, bool sendNewsletter, System.AsyncCallback callback, object asyncState) {\n            return base.Channel.BeginRegister(username, passwordHash, email, sendNewsletter, callback, asyncState);\n        }\n        \n        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]\n        public void EndRegister(System.IAsyncResult result) {\n            base.Channel.EndRegister(result);\n        }\n        \n        private System.IAsyncResult OnBeginRegister(object[] inValues, System.AsyncCallback callback, object asyncState) {\n            string username = ((string)(inValues[0]));\n            string passwordHash = ((string)(inValues[1]));\n            string email = ((string)(inValues[2]));\n            bool sendNewsletter = ((bool)(inValues[3]));\n            return this.BeginRegister(username, passwordHash, email, sendNewsletter, callback, asyncState);\n        }\n        \n        private object[] OnEndRegister(System.IAsyncResult result) {\n            this.EndRegister(result);\n            return null;\n        }\n        \n        private void OnRegisterCompleted(object state) {\n            if ((this.RegisterCompleted != null)) {\n                InvokeAsyncCompletedEventArgs e = ((InvokeAsyncCompletedEventArgs)(state));\n                this.RegisterCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(e.Error, e.Cancelled, e.UserState));\n            }\n        }\n        \n        public void RegisterAsync(string username, string passwordHash, string email, bool sendNewsletter) {\n            this.RegisterAsync(username, passwordHash, email, sendNewsletter, null);\n        }\n        \n        public void RegisterAsync(string username, string passwordHash, string email, bool sendNewsletter, object userState) {\n            if ((this.onBeginRegisterDelegate == null)) {\n                this.onBeginRegisterDelegate = new BeginOperationDelegate(this.OnBeginRegister);\n            }\n            if ((this.onEndRegisterDelegate == null)) {\n                this.onEndRegisterDelegate = new EndOperationDelegate(this.OnEndRegister);\n            }\n            if ((this.onRegisterCompletedDelegate == null)) {\n                this.onRegisterCompletedDelegate = new System.Threading.SendOrPostCallback(this.OnRegisterCompleted);\n            }\n            base.InvokeAsync(this.onBeginRegisterDelegate, new object[] {\n                        username,\n                        passwordHash,\n                        email,\n                        sendNewsletter}, this.onEndRegisterDelegate, this.onRegisterCompletedDelegate, userState);\n        }\n        \n        public string SteamDemoLogin(out string token, long steamUserId, byte[] ticket) {\n            return base.Channel.SteamDemoLogin(out token, steamUserId, ticket);\n        }\n        \n        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]\n        public System.IAsyncResult BeginSteamDemoLogin(long steamUserId, byte[] ticket, System.AsyncCallback callback, object asyncState) {\n            return base.Channel.BeginSteamDemoLogin(steamUserId, ticket, callback, asyncState);\n        }\n        \n        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]\n        public string EndSteamDemoLogin(out string token, System.IAsyncResult result) {\n            return base.Channel.EndSteamDemoLogin(out token, result);\n        }\n        \n        private System.IAsyncResult OnBeginSteamDemoLogin(object[] inValues, System.AsyncCallback callback, object asyncState) {\n            long steamUserId = ((long)(inValues[0]));\n            byte[] ticket = ((byte[])(inValues[1]));\n            return this.BeginSteamDemoLogin(steamUserId, ticket, callback, asyncState);\n        }\n        \n        private object[] OnEndSteamDemoLogin(System.IAsyncResult result) {\n            string token = this.GetDefaultValueForInitialization<string>();\n            string retVal = this.EndSteamDemoLogin(out token, result);\n            return new object[] {\n                    token,\n                    retVal};\n        }\n        \n        private void OnSteamDemoLoginCompleted(object state) {\n            if ((this.SteamDemoLoginCompleted != null)) {\n                InvokeAsyncCompletedEventArgs e = ((InvokeAsyncCompletedEventArgs)(state));\n                this.SteamDemoLoginCompleted(this, new SteamDemoLoginCompletedEventArgs(e.Results, e.Error, e.Cancelled, e.UserState));\n            }\n        }\n        \n        public void SteamDemoLoginAsync(long steamUserId, byte[] ticket) {\n            this.SteamDemoLoginAsync(steamUserId, ticket, null);\n        }\n        \n        public void SteamDemoLoginAsync(long steamUserId, byte[] ticket, object userState) {\n            if ((this.onBeginSteamDemoLoginDelegate == null)) {\n                this.onBeginSteamDemoLoginDelegate = new BeginOperationDelegate(this.OnBeginSteamDemoLogin);\n            }\n            if ((this.onEndSteamDemoLoginDelegate == null)) {\n                this.onEndSteamDemoLoginDelegate = new EndOperationDelegate(this.OnEndSteamDemoLogin);\n            }\n            if ((this.onSteamDemoLoginCompletedDelegate == null)) {\n                this.onSteamDemoLoginCompletedDelegate = new System.Threading.SendOrPostCallback(this.OnSteamDemoLoginCompleted);\n            }\n            base.InvokeAsync(this.onBeginSteamDemoLoginDelegate, new object[] {\n                        steamUserId,\n                        ticket}, this.onEndSteamDemoLoginDelegate, this.onSteamDemoLoginCompletedDelegate, userState);\n        }\n        \n        public string SteamLogin(out string token, long steamUserId, byte[] ticket) {\n            return base.Channel.SteamLogin(out token, steamUserId, ticket);\n        }\n        \n        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]\n        public System.IAsyncResult BeginSteamLogin(long steamUserId, byte[] ticket, System.AsyncCallback callback, object asyncState) {\n            return base.Channel.BeginSteamLogin(steamUserId, ticket, callback, asyncState);\n        }\n        \n        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]\n        public string EndSteamLogin(out string token, System.IAsyncResult result) {\n            return base.Channel.EndSteamLogin(out token, result);\n        }\n        \n        private System.IAsyncResult OnBeginSteamLogin(object[] inValues, System.AsyncCallback callback, object asyncState) {\n            long steamUserId = ((long)(inValues[0]));\n            byte[] ticket = ((byte[])(inValues[1]));\n            return this.BeginSteamLogin(steamUserId, ticket, callback, asyncState);\n        }\n        \n        private object[] OnEndSteamLogin(System.IAsyncResult result) {\n            string token = this.GetDefaultValueForInitialization<string>();\n            string retVal = this.EndSteamLogin(out token, result);\n            return new object[] {\n                    token,\n                    retVal};\n        }\n        \n        private void OnSteamLoginCompleted(object state) {\n            if ((this.SteamLoginCompleted != null)) {\n                InvokeAsyncCompletedEventArgs e = ((InvokeAsyncCompletedEventArgs)(state));\n                this.SteamLoginCompleted(this, new SteamLoginCompletedEventArgs(e.Results, e.Error, e.Cancelled, e.UserState));\n            }\n        }\n        \n        public void SteamLoginAsync(long steamUserId, byte[] ticket) {\n            this.SteamLoginAsync(steamUserId, ticket, null);\n        }\n        \n        public void SteamLoginAsync(long steamUserId, byte[] ticket, object userState) {\n            if ((this.onBeginSteamLoginDelegate == null)) {\n                this.onBeginSteamLoginDelegate = new BeginOperationDelegate(this.OnBeginSteamLogin);\n            }\n            if ((this.onEndSteamLoginDelegate == null)) {\n                this.onEndSteamLoginDelegate = new EndOperationDelegate(this.OnEndSteamLogin);\n            }\n            if ((this.onSteamLoginCompletedDelegate == null)) {\n                this.onSteamLoginCompletedDelegate = new System.Threading.SendOrPostCallback(this.OnSteamLoginCompleted);\n            }\n            base.InvokeAsync(this.onBeginSteamLoginDelegate, new object[] {\n                        steamUserId,\n                        ticket}, this.onEndSteamLoginDelegate, this.onSteamLoginCompletedDelegate, userState);\n        }\n        \n        public void SteamRegister(long steamUserId, byte[] ticket, string serialKey, string steamUserName) {\n            base.Channel.SteamRegister(steamUserId, ticket, serialKey, steamUserName);\n        }\n        \n        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]\n        public System.IAsyncResult BeginSteamRegister(long steamUserId, byte[] ticket, string serialKey, string steamUserName, System.AsyncCallback callback, object asyncState) {\n            return base.Channel.BeginSteamRegister(steamUserId, ticket, serialKey, steamUserName, callback, asyncState);\n        }\n        \n        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]\n        public void EndSteamRegister(System.IAsyncResult result) {\n            base.Channel.EndSteamRegister(result);\n        }\n        \n        private System.IAsyncResult OnBeginSteamRegister(object[] inValues, System.AsyncCallback callback, object asyncState) {\n            long steamUserId = ((long)(inValues[0]));\n            byte[] ticket = ((byte[])(inValues[1]));\n            string serialKey = ((string)(inValues[2]));\n            string steamUserName = ((string)(inValues[3]));\n            return this.BeginSteamRegister(steamUserId, ticket, serialKey, steamUserName, callback, asyncState);\n        }\n        \n        private object[] OnEndSteamRegister(System.IAsyncResult result) {\n            this.EndSteamRegister(result);\n            return null;\n        }\n        \n        private void OnSteamRegisterCompleted(object state) {\n            if ((this.SteamRegisterCompleted != null)) {\n                InvokeAsyncCompletedEventArgs e = ((InvokeAsyncCompletedEventArgs)(state));\n                this.SteamRegisterCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(e.Error, e.Cancelled, e.UserState));\n            }\n        }\n        \n        public void SteamRegisterAsync(long steamUserId, byte[] ticket, string serialKey, string steamUserName) {\n            this.SteamRegisterAsync(steamUserId, ticket, serialKey, steamUserName, null);\n        }\n        \n        public void SteamRegisterAsync(long steamUserId, byte[] ticket, string serialKey, string steamUserName, object userState) {\n            if ((this.onBeginSteamRegisterDelegate == null)) {\n                this.onBeginSteamRegisterDelegate = new BeginOperationDelegate(this.OnBeginSteamRegister);\n            }\n            if ((this.onEndSteamRegisterDelegate == null)) {\n                this.onEndSteamRegisterDelegate = new EndOperationDelegate(this.OnEndSteamRegister);\n            }\n            if ((this.onSteamRegisterCompletedDelegate == null)) {\n                this.onSteamRegisterCompletedDelegate = new System.Threading.SendOrPostCallback(this.OnSteamRegisterCompleted);\n            }\n            base.InvokeAsync(this.onBeginSteamRegisterDelegate, new object[] {\n                        steamUserId,\n                        ticket,\n                        serialKey,\n                        steamUserName}, this.onEndSteamRegisterDelegate, this.onSteamRegisterCompletedDelegate, userState);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/Service References/AppCode.Networking.MasterService/Reference.svcmap",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<ReferenceGroup xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" ID=\"99a7839c-7a3e-4ff2-8692-71c174948037\" xmlns=\"urn:schemas-microsoft-com:xml-wcfservicemap\">\n  <ClientOptions>\n    <GenerateAsynchronousMethods>true</GenerateAsynchronousMethods>\n    <EnableDataBinding>true</EnableDataBinding>\n    <ExcludedTypes />\n    <ImportXmlTypes>false</ImportXmlTypes>\n    <GenerateInternalTypes>false</GenerateInternalTypes>\n    <GenerateMessageContracts>false</GenerateMessageContracts>\n    <NamespaceMappings />\n    <CollectionMappings />\n    <GenerateSerializableTypes>true</GenerateSerializableTypes>\n    <Serializer>Auto</Serializer>\n    <UseSerializerForFaults>true</UseSerializerForFaults>\n    <ReferenceAllAssemblies>true</ReferenceAllAssemblies>\n    <ReferencedAssemblies />\n    <ReferencedDataContractTypes />\n    <ServiceContractMappings />\n  </ClientOptions>\n  <MetadataSources>\n    <MetadataSource Address=\"net.tcp://localhost:24501/\" Protocol=\"mex\" SourceId=\"1\" />\n  </MetadataSources>\n  <Metadata>\n    <MetadataFile FileName=\"service.wsdl\" MetadataType=\"Wsdl\" ID=\"e6ad1467-42c8-458f-987a-5722ca40133d\" SourceId=\"1\" SourceUrl=\"net.tcp://localhost:24501/\" />\n    <MetadataFile FileName=\"service.xsd\" MetadataType=\"Schema\" ID=\"afcde400-de1b-4d92-b0bb-c5c289d8c532\" SourceId=\"1\" SourceUrl=\"net.tcp://localhost:24501/\" />\n    <MetadataFile FileName=\"service1.xsd\" MetadataType=\"Schema\" ID=\"0f4f831e-2e91-46c6-bda5-a250b2e7d305\" SourceId=\"1\" SourceUrl=\"net.tcp://localhost:24501/\" />\n    <MetadataFile FileName=\"MinerWars.CommonLIB.AppCode.Networking.Services.xsd\" MetadataType=\"Schema\" ID=\"63b4ab2a-a9fb-40ce-b4e8-8b71721ae075\" SourceId=\"1\" SourceUrl=\"net.tcp://localhost:24501/\" />\n    <MetadataFile FileName=\"Arrays.xsd\" MetadataType=\"Schema\" ID=\"70795bd1-1c61-4154-bfd2-038dea61a6c7\" SourceId=\"1\" SourceUrl=\"net.tcp://localhost:24501/\" />\n    <MetadataFile FileName=\"MinerWars.MasterServerLIB.MasterService.xsd\" MetadataType=\"Schema\" ID=\"d2294b4d-19db-4eae-9dfe-c409739c2926\" SourceId=\"1\" SourceUrl=\"net.tcp://localhost:24501/\" />\n    <MetadataFile FileName=\"MinerWars.CommonLIB.AppCode.Networking.xsd\" MetadataType=\"Schema\" ID=\"4b17f8ff-971b-447c-8425-2ceff36b9ad7\" SourceId=\"1\" SourceUrl=\"net.tcp://localhost:24501/\" />\n  </Metadata>\n  <Extensions>\n    <ExtensionFile FileName=\"configuration91.svcinfo\" Name=\"configuration91.svcinfo\" />\n    <ExtensionFile FileName=\"configuration.svcinfo\" Name=\"configuration.svcinfo\" />\n  </Extensions>\n</ReferenceGroup>"
  },
  {
    "path": "Sources/MinerWars.GameLib/Service References/AppCode.Networking.MasterService/configuration.svcinfo",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<configurationSnapshot xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns=\"urn:schemas-microsoft-com:xml-wcfconfigurationsnapshot\">\n  <behaviors />\n  <bindings>\n    <binding digest=\"System.ServiceModel.Configuration.CustomBindingElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089:&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;Data name=&quot;NetTcpBinding_IMyMasterService&quot;&gt;&lt;binaryMessageEncoding maxReadPoolSize=&quot;64&quot; maxSessionSize=&quot;2048&quot; maxWritePoolSize=&quot;16&quot;&gt;&lt;readerQuotas maxArrayLength=&quot;16384&quot; maxBytesPerRead=&quot;4096&quot; maxDepth=&quot;32&quot; maxNameTableCharCount=&quot;16384&quot; maxStringContentLength=&quot;8192&quot; /&gt;&lt;/binaryMessageEncoding&gt;&lt;security authenticationMode=&quot;SecureConversation&quot; defaultAlgorithmSuite=&quot;Default&quot; includeTimestamp=&quot;false&quot; keyEntropyMode=&quot;CombinedEntropy&quot; messageProtectionOrder=&quot;SignBeforeEncryptAndEncryptSignature&quot; messageSecurityVersion=&quot;WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10&quot; requireDerivedKeys=&quot;true&quot; requireSecurityContextCancellation=&quot;true&quot; requireSignatureConfirmation=&quot;false&quot; securityHeaderLayout=&quot;Strict&quot;&gt;&lt;localClientSettings cacheCookies=&quot;true&quot; cookieRenewalThresholdPercentage=&quot;60&quot; detectReplays=&quot;true&quot; maxClockSkew=&quot;00:05:00&quot; maxCookieCachingTime=&quot;Infinite&quot; reconnectTransportOnFailure=&quot;true&quot; replayCacheSize=&quot;900000&quot; replayWindow=&quot;00:05:00&quot; sessionKeyRenewalInterval=&quot;10:00:00&quot; sessionKeyRolloverInterval=&quot;00:05:00&quot; timestampValidityDuration=&quot;00:05:00&quot; /&gt;&lt;localServiceSettings detectReplays=&quot;true&quot; inactivityTimeout=&quot;00:02:00&quot; issuedCookieLifetime=&quot;10:00:00&quot; maxCachedCookies=&quot;1000&quot; maxClockSkew=&quot;00:05:00&quot; maxPendingSessions=&quot;128&quot; maxStatefulNegotiations=&quot;128&quot; negotiationTimeout=&quot;00:01:00&quot; reconnectTransportOnFailure=&quot;true&quot; replayCacheSize=&quot;900000&quot; replayWindow=&quot;00:05:00&quot; sessionKeyRenewalInterval=&quot;15:00:00&quot; sessionKeyRolloverInterval=&quot;00:05:00&quot; timestampValidityDuration=&quot;00:05:00&quot; /&gt;&lt;secureConversationBootstrap authenticationMode=&quot;UserNameForSslNegotiated&quot; defaultAlgorithmSuite=&quot;Default&quot; includeTimestamp=&quot;false&quot; keyEntropyMode=&quot;CombinedEntropy&quot; messageProtectionOrder=&quot;SignBeforeEncryptAndEncryptSignature&quot; messageSecurityVersion=&quot;WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10&quot; requireDerivedKeys=&quot;true&quot; requireSecurityContextCancellation=&quot;true&quot; requireSignatureConfirmation=&quot;false&quot; securityHeaderLayout=&quot;Strict&quot;&gt;&lt;localClientSettings cacheCookies=&quot;true&quot; cookieRenewalThresholdPercentage=&quot;60&quot; detectReplays=&quot;true&quot; maxClockSkew=&quot;00:05:00&quot; maxCookieCachingTime=&quot;Infinite&quot; reconnectTransportOnFailure=&quot;true&quot; replayCacheSize=&quot;900000&quot; replayWindow=&quot;00:05:00&quot; sessionKeyRenewalInterval=&quot;10:00:00&quot; sessionKeyRolloverInterval=&quot;00:05:00&quot; timestampValidityDuration=&quot;00:05:00&quot; /&gt;&lt;localServiceSettings detectReplays=&quot;true&quot; inactivityTimeout=&quot;00:02:00&quot; issuedCookieLifetime=&quot;10:00:00&quot; maxCachedCookies=&quot;1000&quot; maxClockSkew=&quot;00:05:00&quot; maxPendingSessions=&quot;128&quot; maxStatefulNegotiations=&quot;128&quot; negotiationTimeout=&quot;00:01:00&quot; reconnectTransportOnFailure=&quot;true&quot; replayCacheSize=&quot;900000&quot; replayWindow=&quot;00:05:00&quot; sessionKeyRenewalInterval=&quot;15:00:00&quot; sessionKeyRolloverInterval=&quot;00:05:00&quot; timestampValidityDuration=&quot;00:05:00&quot; /&gt;&lt;/secureConversationBootstrap&gt;&lt;/security&gt;&lt;tcpTransport channelInitializationTimeout=&quot;00:00:05&quot; connectionBufferSize=&quot;8192&quot; hostNameComparisonMode=&quot;StrongWildcard&quot; listenBacklog=&quot;10&quot; manualAddressing=&quot;false&quot; maxBufferPoolSize=&quot;524288&quot; maxBufferSize=&quot;65536&quot; maxOutputDelay=&quot;00:00:00.2000000&quot; maxPendingAccepts=&quot;1&quot; maxPendingConnections=&quot;10&quot; maxReceivedMessageSize=&quot;65536&quot; portSharingEnabled=&quot;false&quot; teredoEnabled=&quot;false&quot; transferMode=&quot;Buffered&quot;&gt;&lt;connectionPoolSettings groupName=&quot;default&quot; idleTimeout=&quot;00:02:00&quot; leaseTimeout=&quot;00:05:00&quot; maxOutboundConnectionsPerEndpoint=&quot;10&quot; /&gt;&lt;/tcpTransport&gt;&lt;/Data&gt;\" bindingType=\"customBinding\" name=\"NetTcpBinding_IMyMasterService\" />\n  </bindings>\n  <endpoints>\n    <endpoint normalizedDigest=\"&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;Data address=&quot;net.tcp://localhost:24500/&quot; binding=&quot;customBinding&quot; bindingConfiguration=&quot;NetTcpBinding_IMyMasterService&quot; contract=&quot;AppCode.Networking.MasterService.IMyMasterService&quot; name=&quot;NetTcpBinding_IMyMasterService&quot;&gt;&lt;identity&gt;&lt;certificate encodedValue=&quot;AwAAAAEAAAAUAAAA/fJ4Ig3DDxNYYkYd1hYQg2KD7AggAAAAAQAAALgBAAAwggG0MIIBYqADAgECAhDGOyfwraZ+rEghfFiX/h7cMAkGBSsOAwIdBQAwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3kwHhcNMTIwMTIzMTM0MjAyWhcNMzkxMjMxMjM1OTU5WjAXMRUwEwYDVQQDEwxNYXN0ZXJTZXJ2ZXIwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAJvJm/lomTit6yN5VUrENMNOyc+2Hs6EtsikR+znpj55hgQIPZ41iEtQB7dZgB5XBKa6DXvaijLyX5LCuxt8a7fd16fnXrnCOZ55RasHX0YslJsWUEEHu0755meKDbfdyDEm8A1ZHhMTUTHKHBVW+0boaBuY5vJVMWDCTRHSEaMHAgMBAAGjSzBJMEcGA1UdAQRAMD6AEBLkCS0GHR1PAI1hIdwWZGOhGDAWMRQwEgYDVQQDEwtSb290IEFnZW5jeYIQBjdsAKoAZIoRz7jUqlw19DAJBgUrDgMCHQUAA0EAQACpYqd9Zy0TXklnRsiRBURKChTZ0jB7Tf55R4Xuj6zKDsz9bk20KYwXsqMgEITyFgLmzyZqghcNcpb2NClU6w==&quot; /&gt;&lt;/identity&gt;&lt;/Data&gt;\" digest=\"&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;Data address=&quot;net.tcp://localhost:24500/&quot; binding=&quot;customBinding&quot; bindingConfiguration=&quot;NetTcpBinding_IMyMasterService&quot; contract=&quot;AppCode.Networking.MasterService.IMyMasterService&quot; name=&quot;NetTcpBinding_IMyMasterService&quot;&gt;&lt;identity&gt;&lt;certificate encodedValue=&quot;AwAAAAEAAAAUAAAA/fJ4Ig3DDxNYYkYd1hYQg2KD7AggAAAAAQAAALgBAAAwggG0MIIBYqADAgECAhDGOyfwraZ+rEghfFiX/h7cMAkGBSsOAwIdBQAwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3kwHhcNMTIwMTIzMTM0MjAyWhcNMzkxMjMxMjM1OTU5WjAXMRUwEwYDVQQDEwxNYXN0ZXJTZXJ2ZXIwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAJvJm/lomTit6yN5VUrENMNOyc+2Hs6EtsikR+znpj55hgQIPZ41iEtQB7dZgB5XBKa6DXvaijLyX5LCuxt8a7fd16fnXrnCOZ55RasHX0YslJsWUEEHu0755meKDbfdyDEm8A1ZHhMTUTHKHBVW+0boaBuY5vJVMWDCTRHSEaMHAgMBAAGjSzBJMEcGA1UdAQRAMD6AEBLkCS0GHR1PAI1hIdwWZGOhGDAWMRQwEgYDVQQDEwtSb290IEFnZW5jeYIQBjdsAKoAZIoRz7jUqlw19DAJBgUrDgMCHQUAA0EAQACpYqd9Zy0TXklnRsiRBURKChTZ0jB7Tf55R4Xuj6zKDsz9bk20KYwXsqMgEITyFgLmzyZqghcNcpb2NClU6w==&quot; /&gt;&lt;/identity&gt;&lt;/Data&gt;\" contractName=\"AppCode.Networking.MasterService.IMyMasterService\" name=\"NetTcpBinding_IMyMasterService\" />\n  </endpoints>\n</configurationSnapshot>"
  },
  {
    "path": "Sources/MinerWars.GameLib/Service References/AppCode.Networking.MasterService/configuration91.svcinfo",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<SavedWcfConfigurationInformation xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" Version=\"9.1\" CheckSum=\"hFi+l9ZBOGsPKDP9Odg9TII/dtw=\">\n  <bindingConfigurations>\n    <bindingConfiguration bindingType=\"customBinding\" name=\"NetTcpBinding_IMyMasterService\">\n      <properties>\n        <property path=\"/name\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>NetTcpBinding_IMyMasterService</serializedValue>\n        </property>\n        <property path=\"/closeTimeout\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/openTimeout\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/receiveTimeout\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/sendTimeout\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/security\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.SecurityElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.SecurityElement</serializedValue>\n        </property>\n        <property path=\"/security/defaultAlgorithmSuite\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.ServiceModel.Security.SecurityAlgorithmSuite, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>Default</serializedValue>\n        </property>\n        <property path=\"/security/allowSerializedSigningTokenOnReply\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>False</serializedValue>\n        </property>\n        <property path=\"/security/enableUnsecuredResponse\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>False</serializedValue>\n        </property>\n        <property path=\"/security/authenticationMode\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.ServiceModel.Configuration.AuthenticationMode, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>SecureConversation</serializedValue>\n        </property>\n        <property path=\"/security/requireDerivedKeys\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>True</serializedValue>\n        </property>\n        <property path=\"/security/securityHeaderLayout\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.ServiceModel.Channels.SecurityHeaderLayout, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>Strict</serializedValue>\n        </property>\n        <property path=\"/security/includeTimestamp\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>False</serializedValue>\n        </property>\n        <property path=\"/security/allowInsecureTransport\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>False</serializedValue>\n        </property>\n        <property path=\"/security/keyEntropyMode\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.ServiceModel.Security.SecurityKeyEntropyMode, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>CombinedEntropy</serializedValue>\n        </property>\n        <property path=\"/security/issuedTokenParameters\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.IssuedTokenParametersElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.IssuedTokenParametersElement</serializedValue>\n        </property>\n        <property path=\"/security/issuedTokenParameters/defaultMessageSecurityVersion\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.MessageSecurityVersion, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/security/issuedTokenParameters/additionalRequestParameters\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.XmlElementElementCollection, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>(Collection)</serializedValue>\n        </property>\n        <property path=\"/security/issuedTokenParameters/claimTypeRequirements\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.ClaimTypeElementCollection, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>(Collection)</serializedValue>\n        </property>\n        <property path=\"/security/issuedTokenParameters/issuer\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.IssuedTokenParametersEndpointAddressElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.IssuedTokenParametersEndpointAddressElement</serializedValue>\n        </property>\n        <property path=\"/security/issuedTokenParameters/issuer/address\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.Uri, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/security/issuedTokenParameters/issuer/headers\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.AddressHeaderCollectionElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.AddressHeaderCollectionElement</serializedValue>\n        </property>\n        <property path=\"/security/issuedTokenParameters/issuer/headers/headers\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Channels.AddressHeaderCollection, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\n        <property path=\"/security/issuedTokenParameters/issuer/identity\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.IdentityElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.IdentityElement</serializedValue>\n        </property>\n        <property path=\"/security/issuedTokenParameters/issuer/identity/userPrincipalName\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.UserPrincipalNameElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.UserPrincipalNameElement</serializedValue>\n        </property>\n        <property path=\"/security/issuedTokenParameters/issuer/identity/userPrincipalName/value\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/security/issuedTokenParameters/issuer/identity/servicePrincipalName\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.ServicePrincipalNameElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.ServicePrincipalNameElement</serializedValue>\n        </property>\n        <property path=\"/security/issuedTokenParameters/issuer/identity/servicePrincipalName/value\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/security/issuedTokenParameters/issuer/identity/dns\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.DnsElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.DnsElement</serializedValue>\n        </property>\n        <property path=\"/security/issuedTokenParameters/issuer/identity/dns/value\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/security/issuedTokenParameters/issuer/identity/rsa\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.RsaElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.RsaElement</serializedValue>\n        </property>\n        <property path=\"/security/issuedTokenParameters/issuer/identity/rsa/value\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/security/issuedTokenParameters/issuer/identity/certificate\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.CertificateElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.CertificateElement</serializedValue>\n        </property>\n        <property path=\"/security/issuedTokenParameters/issuer/identity/certificate/encodedValue\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/security/issuedTokenParameters/issuer/identity/certificateReference\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.CertificateReferenceElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.CertificateReferenceElement</serializedValue>\n        </property>\n        <property path=\"/security/issuedTokenParameters/issuer/identity/certificateReference/storeName\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.Security.Cryptography.X509Certificates.StoreName, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>My</serializedValue>\n        </property>\n        <property path=\"/security/issuedTokenParameters/issuer/identity/certificateReference/storeLocation\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.Security.Cryptography.X509Certificates.StoreLocation, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>LocalMachine</serializedValue>\n        </property>\n        <property path=\"/security/issuedTokenParameters/issuer/identity/certificateReference/x509FindType\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.Security.Cryptography.X509Certificates.X509FindType, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>FindBySubjectDistinguishedName</serializedValue>\n        </property>\n        <property path=\"/security/issuedTokenParameters/issuer/identity/certificateReference/findValue\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/security/issuedTokenParameters/issuer/identity/certificateReference/isChainIncluded\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>False</serializedValue>\n        </property>\n        <property path=\"/security/issuedTokenParameters/issuer/binding\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/security/issuedTokenParameters/issuer/bindingConfiguration\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/security/issuedTokenParameters/issuerMetadata\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.EndpointAddressElementBase, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.EndpointAddressElementBase</serializedValue>\n        </property>\n        <property path=\"/security/issuedTokenParameters/issuerMetadata/address\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.Uri, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/security/issuedTokenParameters/issuerMetadata/headers\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.AddressHeaderCollectionElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.AddressHeaderCollectionElement</serializedValue>\n        </property>\n        <property path=\"/security/issuedTokenParameters/issuerMetadata/headers/headers\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Channels.AddressHeaderCollection, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\n        <property path=\"/security/issuedTokenParameters/issuerMetadata/identity\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.IdentityElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.IdentityElement</serializedValue>\n        </property>\n        <property path=\"/security/issuedTokenParameters/issuerMetadata/identity/userPrincipalName\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.UserPrincipalNameElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.UserPrincipalNameElement</serializedValue>\n        </property>\n        <property path=\"/security/issuedTokenParameters/issuerMetadata/identity/userPrincipalName/value\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/security/issuedTokenParameters/issuerMetadata/identity/servicePrincipalName\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.ServicePrincipalNameElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.ServicePrincipalNameElement</serializedValue>\n        </property>\n        <property path=\"/security/issuedTokenParameters/issuerMetadata/identity/servicePrincipalName/value\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/security/issuedTokenParameters/issuerMetadata/identity/dns\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.DnsElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.DnsElement</serializedValue>\n        </property>\n        <property path=\"/security/issuedTokenParameters/issuerMetadata/identity/dns/value\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/security/issuedTokenParameters/issuerMetadata/identity/rsa\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.RsaElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.RsaElement</serializedValue>\n        </property>\n        <property path=\"/security/issuedTokenParameters/issuerMetadata/identity/rsa/value\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/security/issuedTokenParameters/issuerMetadata/identity/certificate\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.CertificateElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.CertificateElement</serializedValue>\n        </property>\n        <property path=\"/security/issuedTokenParameters/issuerMetadata/identity/certificate/encodedValue\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/security/issuedTokenParameters/issuerMetadata/identity/certificateReference\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.CertificateReferenceElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.CertificateReferenceElement</serializedValue>\n        </property>\n        <property path=\"/security/issuedTokenParameters/issuerMetadata/identity/certificateReference/storeName\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.Security.Cryptography.X509Certificates.StoreName, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>My</serializedValue>\n        </property>\n        <property path=\"/security/issuedTokenParameters/issuerMetadata/identity/certificateReference/storeLocation\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.Security.Cryptography.X509Certificates.StoreLocation, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>LocalMachine</serializedValue>\n        </property>\n        <property path=\"/security/issuedTokenParameters/issuerMetadata/identity/certificateReference/x509FindType\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.Security.Cryptography.X509Certificates.X509FindType, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>FindBySubjectDistinguishedName</serializedValue>\n        </property>\n        <property path=\"/security/issuedTokenParameters/issuerMetadata/identity/certificateReference/findValue\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/security/issuedTokenParameters/issuerMetadata/identity/certificateReference/isChainIncluded\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>False</serializedValue>\n        </property>\n        <property path=\"/security/issuedTokenParameters/keySize\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>0</serializedValue>\n        </property>\n        <property path=\"/security/issuedTokenParameters/keyType\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.IdentityModel.Tokens.SecurityKeyType, System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>SymmetricKey</serializedValue>\n        </property>\n        <property path=\"/security/issuedTokenParameters/tokenType\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/security/localClientSettings\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.LocalClientSecuritySettingsElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.LocalClientSecuritySettingsElement</serializedValue>\n        </property>\n        <property path=\"/security/localClientSettings/cacheCookies\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>True</serializedValue>\n        </property>\n        <property path=\"/security/localClientSettings/detectReplays\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>True</serializedValue>\n        </property>\n        <property path=\"/security/localClientSettings/replayCacheSize\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>900000</serializedValue>\n        </property>\n        <property path=\"/security/localClientSettings/maxClockSkew\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>00:05:00</serializedValue>\n        </property>\n        <property path=\"/security/localClientSettings/maxCookieCachingTime\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>10675199.02:48:05.4775807</serializedValue>\n        </property>\n        <property path=\"/security/localClientSettings/replayWindow\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>00:05:00</serializedValue>\n        </property>\n        <property path=\"/security/localClientSettings/sessionKeyRenewalInterval\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>10:00:00</serializedValue>\n        </property>\n        <property path=\"/security/localClientSettings/sessionKeyRolloverInterval\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>00:05:00</serializedValue>\n        </property>\n        <property path=\"/security/localClientSettings/reconnectTransportOnFailure\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>True</serializedValue>\n        </property>\n        <property path=\"/security/localClientSettings/timestampValidityDuration\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>00:05:00</serializedValue>\n        </property>\n        <property path=\"/security/localClientSettings/cookieRenewalThresholdPercentage\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>60</serializedValue>\n        </property>\n        <property path=\"/security/localServiceSettings\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.LocalServiceSecuritySettingsElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.LocalServiceSecuritySettingsElement</serializedValue>\n        </property>\n        <property path=\"/security/localServiceSettings/detectReplays\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>True</serializedValue>\n        </property>\n        <property path=\"/security/localServiceSettings/issuedCookieLifetime\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>10:00:00</serializedValue>\n        </property>\n        <property path=\"/security/localServiceSettings/maxStatefulNegotiations\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>128</serializedValue>\n        </property>\n        <property path=\"/security/localServiceSettings/replayCacheSize\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>900000</serializedValue>\n        </property>\n        <property path=\"/security/localServiceSettings/maxClockSkew\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>00:05:00</serializedValue>\n        </property>\n        <property path=\"/security/localServiceSettings/negotiationTimeout\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>00:01:00</serializedValue>\n        </property>\n        <property path=\"/security/localServiceSettings/replayWindow\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>00:05:00</serializedValue>\n        </property>\n        <property path=\"/security/localServiceSettings/inactivityTimeout\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>00:02:00</serializedValue>\n        </property>\n        <property path=\"/security/localServiceSettings/sessionKeyRenewalInterval\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>15:00:00</serializedValue>\n        </property>\n        <property path=\"/security/localServiceSettings/sessionKeyRolloverInterval\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>00:05:00</serializedValue>\n        </property>\n        <property path=\"/security/localServiceSettings/reconnectTransportOnFailure\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>True</serializedValue>\n        </property>\n        <property path=\"/security/localServiceSettings/maxPendingSessions\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>128</serializedValue>\n        </property>\n        <property path=\"/security/localServiceSettings/maxCachedCookies\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>1000</serializedValue>\n        </property>\n        <property path=\"/security/localServiceSettings/timestampValidityDuration\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>00:05:00</serializedValue>\n        </property>\n        <property path=\"/security/messageProtectionOrder\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.ServiceModel.Security.MessageProtectionOrder, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>SignBeforeEncryptAndEncryptSignature</serializedValue>\n        </property>\n        <property path=\"/security/messageSecurityVersion\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.ServiceModel.MessageSecurityVersion, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10</serializedValue>\n        </property>\n        <property path=\"/security/requireSecurityContextCancellation\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>True</serializedValue>\n        </property>\n        <property path=\"/security/requireSignatureConfirmation\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>False</serializedValue>\n        </property>\n        <property path=\"/security/canRenewSecurityContextToken\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>True</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.SecurityElementBase, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.SecurityElementBase</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/defaultAlgorithmSuite\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.ServiceModel.Security.SecurityAlgorithmSuite, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>Default</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/allowSerializedSigningTokenOnReply\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>False</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/enableUnsecuredResponse\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>False</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/authenticationMode\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.ServiceModel.Configuration.AuthenticationMode, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>UserNameForSslNegotiated</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/requireDerivedKeys\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>True</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/securityHeaderLayout\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.ServiceModel.Channels.SecurityHeaderLayout, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>Strict</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/includeTimestamp\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>False</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/allowInsecureTransport\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>False</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/keyEntropyMode\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.ServiceModel.Security.SecurityKeyEntropyMode, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>CombinedEntropy</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.IssuedTokenParametersElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.IssuedTokenParametersElement</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/defaultMessageSecurityVersion\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.MessageSecurityVersion, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/additionalRequestParameters\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.XmlElementElementCollection, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>(Collection)</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/claimTypeRequirements\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.ClaimTypeElementCollection, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>(Collection)</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuer\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.IssuedTokenParametersEndpointAddressElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.IssuedTokenParametersEndpointAddressElement</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuer/address\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.Uri, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuer/headers\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.AddressHeaderCollectionElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.AddressHeaderCollectionElement</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuer/headers/headers\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Channels.AddressHeaderCollection, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuer/identity\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.IdentityElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.IdentityElement</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuer/identity/userPrincipalName\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.UserPrincipalNameElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.UserPrincipalNameElement</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuer/identity/userPrincipalName/value\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuer/identity/servicePrincipalName\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.ServicePrincipalNameElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.ServicePrincipalNameElement</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuer/identity/servicePrincipalName/value\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuer/identity/dns\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.DnsElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.DnsElement</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuer/identity/dns/value\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuer/identity/rsa\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.RsaElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.RsaElement</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuer/identity/rsa/value\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuer/identity/certificate\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.CertificateElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.CertificateElement</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuer/identity/certificate/encodedValue\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuer/identity/certificateReference\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.CertificateReferenceElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.CertificateReferenceElement</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuer/identity/certificateReference/storeName\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.Security.Cryptography.X509Certificates.StoreName, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>My</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuer/identity/certificateReference/storeLocation\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.Security.Cryptography.X509Certificates.StoreLocation, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>LocalMachine</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuer/identity/certificateReference/x509FindType\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.Security.Cryptography.X509Certificates.X509FindType, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>FindBySubjectDistinguishedName</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuer/identity/certificateReference/findValue\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuer/identity/certificateReference/isChainIncluded\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>False</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuer/binding\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuer/bindingConfiguration\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuerMetadata\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.EndpointAddressElementBase, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.EndpointAddressElementBase</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuerMetadata/address\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.Uri, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuerMetadata/headers\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.AddressHeaderCollectionElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.AddressHeaderCollectionElement</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuerMetadata/headers/headers\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Channels.AddressHeaderCollection, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuerMetadata/identity\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.IdentityElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.IdentityElement</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuerMetadata/identity/userPrincipalName\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.UserPrincipalNameElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.UserPrincipalNameElement</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuerMetadata/identity/userPrincipalName/value\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuerMetadata/identity/servicePrincipalName\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.ServicePrincipalNameElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.ServicePrincipalNameElement</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuerMetadata/identity/servicePrincipalName/value\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuerMetadata/identity/dns\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.DnsElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.DnsElement</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuerMetadata/identity/dns/value\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuerMetadata/identity/rsa\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.RsaElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.RsaElement</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuerMetadata/identity/rsa/value\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuerMetadata/identity/certificate\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.CertificateElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.CertificateElement</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuerMetadata/identity/certificate/encodedValue\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuerMetadata/identity/certificateReference\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.CertificateReferenceElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.CertificateReferenceElement</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuerMetadata/identity/certificateReference/storeName\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.Security.Cryptography.X509Certificates.StoreName, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>My</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuerMetadata/identity/certificateReference/storeLocation\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.Security.Cryptography.X509Certificates.StoreLocation, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>LocalMachine</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuerMetadata/identity/certificateReference/x509FindType\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.Security.Cryptography.X509Certificates.X509FindType, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>FindBySubjectDistinguishedName</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuerMetadata/identity/certificateReference/findValue\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuerMetadata/identity/certificateReference/isChainIncluded\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>False</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/keySize\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>0</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/keyType\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.IdentityModel.Tokens.SecurityKeyType, System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>SymmetricKey</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/tokenType\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/security/secureConversationBootstrap/localClientSettings\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.LocalClientSecuritySettingsElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.LocalClientSecuritySettingsElement</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/localClientSettings/cacheCookies\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>True</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/localClientSettings/detectReplays\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>True</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/localClientSettings/replayCacheSize\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>900000</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/localClientSettings/maxClockSkew\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>00:05:00</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/localClientSettings/maxCookieCachingTime\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>10675199.02:48:05.4775807</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/localClientSettings/replayWindow\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>00:05:00</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/localClientSettings/sessionKeyRenewalInterval\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>10:00:00</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/localClientSettings/sessionKeyRolloverInterval\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>00:05:00</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/localClientSettings/reconnectTransportOnFailure\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>True</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/localClientSettings/timestampValidityDuration\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>00:05:00</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/localClientSettings/cookieRenewalThresholdPercentage\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>60</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/localServiceSettings\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.LocalServiceSecuritySettingsElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.LocalServiceSecuritySettingsElement</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/localServiceSettings/detectReplays\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>True</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/localServiceSettings/issuedCookieLifetime\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>10:00:00</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/localServiceSettings/maxStatefulNegotiations\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>128</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/localServiceSettings/replayCacheSize\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>900000</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/localServiceSettings/maxClockSkew\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>00:05:00</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/localServiceSettings/negotiationTimeout\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>00:01:00</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/localServiceSettings/replayWindow\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>00:05:00</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/localServiceSettings/inactivityTimeout\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>00:02:00</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/localServiceSettings/sessionKeyRenewalInterval\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>15:00:00</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/localServiceSettings/sessionKeyRolloverInterval\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>00:05:00</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/localServiceSettings/reconnectTransportOnFailure\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>True</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/localServiceSettings/maxPendingSessions\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>128</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/localServiceSettings/maxCachedCookies\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>1000</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/localServiceSettings/timestampValidityDuration\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>00:05:00</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/messageProtectionOrder\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.ServiceModel.Security.MessageProtectionOrder, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>SignBeforeEncryptAndEncryptSignature</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/messageSecurityVersion\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.ServiceModel.MessageSecurityVersion, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/requireSecurityContextCancellation\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>True</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/requireSignatureConfirmation\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>False</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/canRenewSecurityContextToken\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>True</serializedValue>\n        </property>\n        <property path=\"/binaryMessageEncoding\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.BinaryMessageEncodingElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.BinaryMessageEncodingElement</serializedValue>\n        </property>\n        <property path=\"/binaryMessageEncoding/maxReadPoolSize\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>64</serializedValue>\n        </property>\n        <property path=\"/binaryMessageEncoding/maxWritePoolSize\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>16</serializedValue>\n        </property>\n        <property path=\"/binaryMessageEncoding/maxSessionSize\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>2048</serializedValue>\n        </property>\n        <property path=\"/binaryMessageEncoding/readerQuotas\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.XmlDictionaryReaderQuotasElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.XmlDictionaryReaderQuotasElement</serializedValue>\n        </property>\n        <property path=\"/binaryMessageEncoding/readerQuotas/maxDepth\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>32</serializedValue>\n        </property>\n        <property path=\"/binaryMessageEncoding/readerQuotas/maxStringContentLength\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>8192</serializedValue>\n        </property>\n        <property path=\"/binaryMessageEncoding/readerQuotas/maxArrayLength\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>16384</serializedValue>\n        </property>\n        <property path=\"/binaryMessageEncoding/readerQuotas/maxBytesPerRead\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>4096</serializedValue>\n        </property>\n        <property path=\"/binaryMessageEncoding/readerQuotas/maxNameTableCharCount\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>16384</serializedValue>\n        </property>\n        <property path=\"/tcpTransport\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.TcpTransportElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.TcpTransportElement</serializedValue>\n        </property>\n        <property path=\"/tcpTransport/manualAddressing\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>False</serializedValue>\n        </property>\n        <property path=\"/tcpTransport/maxBufferPoolSize\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Int64, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>524288</serializedValue>\n        </property>\n        <property path=\"/tcpTransport/maxReceivedMessageSize\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Int64, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>65536</serializedValue>\n        </property>\n        <property path=\"/tcpTransport/connectionBufferSize\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>8192</serializedValue>\n        </property>\n        <property path=\"/tcpTransport/hostNameComparisonMode\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.ServiceModel.HostNameComparisonMode, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>StrongWildcard</serializedValue>\n        </property>\n        <property path=\"/tcpTransport/channelInitializationTimeout\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>00:00:05</serializedValue>\n        </property>\n        <property path=\"/tcpTransport/maxBufferSize\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>65536</serializedValue>\n        </property>\n        <property path=\"/tcpTransport/maxPendingConnections\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>10</serializedValue>\n        </property>\n        <property path=\"/tcpTransport/maxOutputDelay\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>00:00:00.2000000</serializedValue>\n        </property>\n        <property path=\"/tcpTransport/maxPendingAccepts\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>1</serializedValue>\n        </property>\n        <property path=\"/tcpTransport/transferMode\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.ServiceModel.TransferMode, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>Buffered</serializedValue>\n        </property>\n        <property path=\"/tcpTransport/listenBacklog\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>10</serializedValue>\n        </property>\n        <property path=\"/tcpTransport/portSharingEnabled\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>False</serializedValue>\n        </property>\n        <property path=\"/tcpTransport/teredoEnabled\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>False</serializedValue>\n        </property>\n        <property path=\"/tcpTransport/connectionPoolSettings\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.TcpConnectionPoolSettingsElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.TcpConnectionPoolSettingsElement</serializedValue>\n        </property>\n        <property path=\"/tcpTransport/connectionPoolSettings/groupName\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>default</serializedValue>\n        </property>\n        <property path=\"/tcpTransport/connectionPoolSettings/leaseTimeout\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>00:05:00</serializedValue>\n        </property>\n        <property path=\"/tcpTransport/connectionPoolSettings/idleTimeout\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>00:02:00</serializedValue>\n        </property>\n        <property path=\"/tcpTransport/connectionPoolSettings/maxOutboundConnectionsPerEndpoint\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>10</serializedValue>\n        </property>\n        <property path=\"/tcpTransport/extendedProtectionPolicy\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.Security.Authentication.ExtendedProtection.Configuration.ExtendedProtectionPolicyElement, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.Security.Authentication.ExtendedProtection.Configuration.ExtendedProtectionPolicyElement</serializedValue>\n        </property>\n        <property path=\"/tcpTransport/extendedProtectionPolicy/policyEnforcement\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.Security.Authentication.ExtendedProtection.PolicyEnforcement, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>Never</serializedValue>\n        </property>\n        <property path=\"/tcpTransport/extendedProtectionPolicy/protectionScenario\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.Security.Authentication.ExtendedProtection.ProtectionScenario, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>TransportSelected</serializedValue>\n        </property>\n        <property path=\"/tcpTransport/extendedProtectionPolicy/customServiceNames\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.Security.Authentication.ExtendedProtection.Configuration.ServiceNameElementCollection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>(Collection)</serializedValue>\n        </property>\n      </properties>\n    </bindingConfiguration>\n  </bindingConfigurations>\n  <endpoints>\n    <endpoint name=\"NetTcpBinding_IMyMasterService\" contract=\"AppCode.Networking.MasterService.IMyMasterService\" bindingType=\"customBinding\" address=\"net.tcp://localhost:24500/\" bindingConfiguration=\"NetTcpBinding_IMyMasterService\">\n      <properties>\n        <property path=\"/address\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Uri, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>net.tcp://localhost:24500/</serializedValue>\n        </property>\n        <property path=\"/behaviorConfiguration\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/binding\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>customBinding</serializedValue>\n        </property>\n        <property path=\"/bindingConfiguration\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>NetTcpBinding_IMyMasterService</serializedValue>\n        </property>\n        <property path=\"/contract\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>AppCode.Networking.MasterService.IMyMasterService</serializedValue>\n        </property>\n        <property path=\"/headers\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.AddressHeaderCollectionElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.AddressHeaderCollectionElement</serializedValue>\n        </property>\n        <property path=\"/headers/headers\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.ServiceModel.Channels.AddressHeaderCollection, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>&lt;Header /&gt;</serializedValue>\n        </property>\n        <property path=\"/identity\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.IdentityElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.IdentityElement</serializedValue>\n        </property>\n        <property path=\"/identity/userPrincipalName\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.UserPrincipalNameElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.UserPrincipalNameElement</serializedValue>\n        </property>\n        <property path=\"/identity/userPrincipalName/value\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/identity/servicePrincipalName\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.ServicePrincipalNameElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.ServicePrincipalNameElement</serializedValue>\n        </property>\n        <property path=\"/identity/servicePrincipalName/value\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/identity/dns\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.DnsElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.DnsElement</serializedValue>\n        </property>\n        <property path=\"/identity/dns/value\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/identity/rsa\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.RsaElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.RsaElement</serializedValue>\n        </property>\n        <property path=\"/identity/rsa/value\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/identity/certificate\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.CertificateElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.CertificateElement</serializedValue>\n        </property>\n        <property path=\"/identity/certificate/encodedValue\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>AwAAAAEAAAAUAAAA/fJ4Ig3DDxNYYkYd1hYQg2KD7AggAAAAAQAAALgBAAAwggG0MIIBYqADAgECAhDGOyfwraZ+rEghfFiX/h7cMAkGBSsOAwIdBQAwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3kwHhcNMTIwMTIzMTM0MjAyWhcNMzkxMjMxMjM1OTU5WjAXMRUwEwYDVQQDEwxNYXN0ZXJTZXJ2ZXIwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAJvJm/lomTit6yN5VUrENMNOyc+2Hs6EtsikR+znpj55hgQIPZ41iEtQB7dZgB5XBKa6DXvaijLyX5LCuxt8a7fd16fnXrnCOZ55RasHX0YslJsWUEEHu0755meKDbfdyDEm8A1ZHhMTUTHKHBVW+0boaBuY5vJVMWDCTRHSEaMHAgMBAAGjSzBJMEcGA1UdAQRAMD6AEBLkCS0GHR1PAI1hIdwWZGOhGDAWMRQwEgYDVQQDEwtSb290IEFnZW5jeYIQBjdsAKoAZIoRz7jUqlw19DAJBgUrDgMCHQUAA0EAQACpYqd9Zy0TXklnRsiRBURKChTZ0jB7Tf55R4Xuj6zKDsz9bk20KYwXsqMgEITyFgLmzyZqghcNcpb2NClU6w==</serializedValue>\n        </property>\n        <property path=\"/identity/certificateReference\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.CertificateReferenceElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.CertificateReferenceElement</serializedValue>\n        </property>\n        <property path=\"/identity/certificateReference/storeName\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.Security.Cryptography.X509Certificates.StoreName, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>My</serializedValue>\n        </property>\n        <property path=\"/identity/certificateReference/storeLocation\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.Security.Cryptography.X509Certificates.StoreLocation, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>LocalMachine</serializedValue>\n        </property>\n        <property path=\"/identity/certificateReference/x509FindType\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.Security.Cryptography.X509Certificates.X509FindType, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>FindBySubjectDistinguishedName</serializedValue>\n        </property>\n        <property path=\"/identity/certificateReference/findValue\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/identity/certificateReference/isChainIncluded\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>False</serializedValue>\n        </property>\n        <property path=\"/name\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>NetTcpBinding_IMyMasterService</serializedValue>\n        </property>\n        <property path=\"/kind\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/endpointConfiguration\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n      </properties>\n    </endpoint>\n  </endpoints>\n</SavedWcfConfigurationInformation>"
  },
  {
    "path": "Sources/MinerWars.GameLib/Service References/AppCode.Networking.MasterService/service.wsdl",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<wsdl:definitions xmlns:wsap=\"http://schemas.xmlsoap.org/ws/2004/08/addressing/policy\" xmlns:wsa10=\"http://www.w3.org/2005/08/addressing\" xmlns:tns=\"http://tempuri.org/\" xmlns:msc=\"http://schemas.microsoft.com/ws/2005/12/wsdl/contract\" xmlns:soapenc=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:wsp=\"http://schemas.xmlsoap.org/ws/2004/09/policy\" xmlns:wsam=\"http://www.w3.org/2007/05/addressing/metadata\" xmlns:soap12=\"http://schemas.xmlsoap.org/wsdl/soap12/\" xmlns:wsa=\"http://schemas.xmlsoap.org/ws/2004/08/addressing\" xmlns:wsaw=\"http://www.w3.org/2006/05/addressing/wsdl\" xmlns:soap=\"http://schemas.xmlsoap.org/wsdl/soap/\" xmlns:wsu=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" name=\"MyMasterService\" targetNamespace=\"http://tempuri.org/\" xmlns:wsdl=\"http://schemas.xmlsoap.org/wsdl/\">\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMyMasterService_policy\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SymmetricBinding xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <wsp:Policy>\n            <sp:ProtectionToken>\n              <wsp:Policy>\n                <sp:SecureConversationToken sp:IncludeToken=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient\">\n                  <wsp:Policy>\n                    <sp:RequireDerivedKeys>\n                    </sp:RequireDerivedKeys>\n                    <sp:BootstrapPolicy>\n                      <wsp:Policy>\n                        <sp:SignedParts>\n                          <sp:Body>\n                          </sp:Body>\n                          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n                          </sp:Header>\n                          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n                          </sp:Header>\n                          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n                          </sp:Header>\n                          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n                          </sp:Header>\n                          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n                          </sp:Header>\n                          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n                          </sp:Header>\n                          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n                          </sp:Header>\n                        </sp:SignedParts>\n                        <sp:EncryptedParts>\n                          <sp:Body>\n                          </sp:Body>\n                        </sp:EncryptedParts>\n                        <sp:SymmetricBinding>\n                          <wsp:Policy>\n                            <sp:ProtectionToken>\n                              <wsp:Policy>\n                                <mssp:SslContextToken sp:IncludeToken=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient\" xmlns:mssp=\"http://schemas.microsoft.com/ws/2005/07/securitypolicy\">\n                                  <wsp:Policy>\n                                    <sp:RequireDerivedKeys>\n                                    </sp:RequireDerivedKeys>\n                                  </wsp:Policy>\n                                </mssp:SslContextToken>\n                              </wsp:Policy>\n                            </sp:ProtectionToken>\n                            <sp:AlgorithmSuite>\n                              <wsp:Policy>\n                                <sp:Basic256>\n                                </sp:Basic256>\n                              </wsp:Policy>\n                            </sp:AlgorithmSuite>\n                            <sp:Layout>\n                              <wsp:Policy>\n                                <sp:Strict>\n                                </sp:Strict>\n                              </wsp:Policy>\n                            </sp:Layout>\n                            <sp:EncryptSignature>\n                            </sp:EncryptSignature>\n                            <sp:OnlySignEntireHeadersAndBody>\n                            </sp:OnlySignEntireHeadersAndBody>\n                          </wsp:Policy>\n                        </sp:SymmetricBinding>\n                        <sp:SignedSupportingTokens>\n                          <wsp:Policy>\n                            <sp:UsernameToken sp:IncludeToken=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient\">\n                              <wsp:Policy>\n                                <sp:WssUsernameToken10>\n                                </sp:WssUsernameToken10>\n                              </wsp:Policy>\n                            </sp:UsernameToken>\n                          </wsp:Policy>\n                        </sp:SignedSupportingTokens>\n                        <sp:Wss11>\n                          <wsp:Policy>\n                          </wsp:Policy>\n                        </sp:Wss11>\n                        <sp:Trust10>\n                          <wsp:Policy>\n                            <sp:MustSupportIssuedTokens>\n                            </sp:MustSupportIssuedTokens>\n                            <sp:RequireClientEntropy>\n                            </sp:RequireClientEntropy>\n                            <sp:RequireServerEntropy>\n                            </sp:RequireServerEntropy>\n                          </wsp:Policy>\n                        </sp:Trust10>\n                      </wsp:Policy>\n                    </sp:BootstrapPolicy>\n                  </wsp:Policy>\n                </sp:SecureConversationToken>\n              </wsp:Policy>\n            </sp:ProtectionToken>\n            <sp:AlgorithmSuite>\n              <wsp:Policy>\n                <sp:Basic256>\n                </sp:Basic256>\n              </wsp:Policy>\n            </sp:AlgorithmSuite>\n            <sp:Layout>\n              <wsp:Policy>\n                <sp:Strict>\n                </sp:Strict>\n              </wsp:Policy>\n            </sp:Layout>\n            <sp:EncryptSignature>\n            </sp:EncryptSignature>\n            <sp:OnlySignEntireHeadersAndBody>\n            </sp:OnlySignEntireHeadersAndBody>\n          </wsp:Policy>\n        </sp:SymmetricBinding>\n        <sp:Wss11 xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <wsp:Policy>\n          </wsp:Policy>\n        </sp:Wss11>\n        <sp:Trust10 xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <wsp:Policy>\n            <sp:MustSupportIssuedTokens>\n            </sp:MustSupportIssuedTokens>\n            <sp:RequireClientEntropy>\n            </sp:RequireClientEntropy>\n            <sp:RequireServerEntropy>\n            </sp:RequireServerEntropy>\n          </wsp:Policy>\n        </sp:Trust10>\n        <msb:BinaryEncoding xmlns:msb=\"http://schemas.microsoft.com/ws/06/2004/mspolicy/netbinary1\">\n        </msb:BinaryEncoding>\n        <wsaw:UsingAddressing>\n        </wsaw:UsingAddressing>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMyMasterService_CheckVersion_Input_policy\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMyMasterService_CheckVersion_output_policy\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMyMasterService_CheckVersion_MyVersionFaultFault_Fault\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMyMasterService_GetSectorServer_Input_policy\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMyMasterService_GetSectorServer_output_policy\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMyMasterService_GetAllServers_Input_policy\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMyMasterService_GetAllServers_output_policy\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMyMasterService_Register_Input_policy\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMyMasterService_Register_output_policy\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMyMasterService_Register_MyRegistrationFaultFault_Fault\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMyMasterService_SteamDemoLogin_Input_policy\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMyMasterService_SteamDemoLogin_output_policy\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMyMasterService_SteamLogin_Input_policy\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMyMasterService_SteamLogin_output_policy\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMyMasterService_SteamLogin_MySteamFaultFault_Fault\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMyMasterService_SteamRegister_Input_policy\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMyMasterService_SteamRegister_output_policy\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMyMasterService_SteamRegister_MySteamFaultFault_Fault\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsdl:types>\n    <xsd:schema targetNamespace=\"http://tempuri.org/Imports\">\n      <xsd:import namespace=\"http://tempuri.org/\" />\n      <xsd:import namespace=\"http://schemas.datacontract.org/2004/07/MinerWars.CommonLIB.AppCode.Networking.Services\" />\n      <xsd:import namespace=\"http://schemas.microsoft.com/2003/10/Serialization/\" />\n      <xsd:import namespace=\"http://schemas.microsoft.com/2003/10/Serialization/Arrays\" />\n      <xsd:import namespace=\"http://schemas.datacontract.org/2004/07/MinerWars.MasterServerLIB.MasterService\" />\n      <xsd:import namespace=\"http://schemas.datacontract.org/2004/07/MinerWars.CommonLIB.AppCode.Networking\" />\n    </xsd:schema>\n  </wsdl:types>\n  <wsdl:message name=\"IMyMasterService_CheckVersion_InputMessage\">\n    <wsdl:part name=\"parameters\" element=\"tns:CheckVersion\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMyMasterService_CheckVersion_OutputMessage\">\n    <wsdl:part name=\"parameters\" element=\"tns:CheckVersionResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMyMasterService_CheckVersion_MyVersionFaultFault_FaultMessage\">\n    <wsdl:part xmlns:q1=\"http://schemas.datacontract.org/2004/07/MinerWars.CommonLIB.AppCode.Networking.Services\" name=\"detail\" element=\"q1:MyVersionFault\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMyMasterService_GetSectorServer_InputMessage\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetSectorServer\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMyMasterService_GetSectorServer_OutputMessage\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetSectorServerResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMyMasterService_GetAllServers_InputMessage\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetAllServers\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMyMasterService_GetAllServers_OutputMessage\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetAllServersResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMyMasterService_Register_InputMessage\">\n    <wsdl:part name=\"parameters\" element=\"tns:Register\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMyMasterService_Register_OutputMessage\">\n    <wsdl:part name=\"parameters\" element=\"tns:RegisterResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMyMasterService_Register_MyRegistrationFaultFault_FaultMessage\">\n    <wsdl:part xmlns:q2=\"http://schemas.datacontract.org/2004/07/MinerWars.MasterServerLIB.MasterService\" name=\"detail\" element=\"q2:MyRegistrationFault\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMyMasterService_SteamDemoLogin_InputMessage\">\n    <wsdl:part name=\"parameters\" element=\"tns:SteamDemoLogin\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMyMasterService_SteamDemoLogin_OutputMessage\">\n    <wsdl:part name=\"parameters\" element=\"tns:SteamDemoLoginResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMyMasterService_SteamLogin_InputMessage\">\n    <wsdl:part name=\"parameters\" element=\"tns:SteamLogin\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMyMasterService_SteamLogin_OutputMessage\">\n    <wsdl:part name=\"parameters\" element=\"tns:SteamLoginResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMyMasterService_SteamLogin_MySteamFaultFault_FaultMessage\">\n    <wsdl:part xmlns:q3=\"http://schemas.datacontract.org/2004/07/MinerWars.MasterServerLIB.MasterService\" name=\"detail\" element=\"q3:MySteamFault\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMyMasterService_SteamRegister_InputMessage\">\n    <wsdl:part name=\"parameters\" element=\"tns:SteamRegister\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMyMasterService_SteamRegister_OutputMessage\">\n    <wsdl:part name=\"parameters\" element=\"tns:SteamRegisterResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMyMasterService_SteamRegister_MySteamFaultFault_FaultMessage\">\n    <wsdl:part xmlns:q4=\"http://schemas.datacontract.org/2004/07/MinerWars.MasterServerLIB.MasterService\" name=\"detail\" element=\"q4:MySteamFault\" />\n  </wsdl:message>\n  <wsdl:portType name=\"IMyMasterService\">\n    <wsdl:operation name=\"CheckVersion\">\n      <wsdl:input wsaw:Action=\"http://tempuri.org/IMyMasterService/CheckVersion\" message=\"tns:IMyMasterService_CheckVersion_InputMessage\" />\n      <wsdl:output wsaw:Action=\"http://tempuri.org/IMyMasterService/CheckVersionResponse\" message=\"tns:IMyMasterService_CheckVersion_OutputMessage\" />\n      <wsdl:fault wsaw:Action=\"http://tempuri.org/IMyMasterService/CheckVersionMyVersionFaultFault\" name=\"MyVersionFaultFault\" message=\"tns:IMyMasterService_CheckVersion_MyVersionFaultFault_FaultMessage\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"GetSectorServer\">\n      <wsdl:input wsaw:Action=\"http://tempuri.org/IMyMasterService/GetSectorServer\" message=\"tns:IMyMasterService_GetSectorServer_InputMessage\" />\n      <wsdl:output wsaw:Action=\"http://tempuri.org/IMyMasterService/GetSectorServerResponse\" message=\"tns:IMyMasterService_GetSectorServer_OutputMessage\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"GetAllServers\">\n      <wsdl:input wsaw:Action=\"http://tempuri.org/IMyMasterService/GetAllServers\" message=\"tns:IMyMasterService_GetAllServers_InputMessage\" />\n      <wsdl:output wsaw:Action=\"http://tempuri.org/IMyMasterService/GetAllServersResponse\" message=\"tns:IMyMasterService_GetAllServers_OutputMessage\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Register\">\n      <wsdl:input wsaw:Action=\"http://tempuri.org/IMyMasterService/Register\" message=\"tns:IMyMasterService_Register_InputMessage\" />\n      <wsdl:output wsaw:Action=\"http://tempuri.org/IMyMasterService/RegisterResponse\" message=\"tns:IMyMasterService_Register_OutputMessage\" />\n      <wsdl:fault wsaw:Action=\"http://tempuri.org/IMyMasterService/RegisterMyRegistrationFaultFault\" name=\"MyRegistrationFaultFault\" message=\"tns:IMyMasterService_Register_MyRegistrationFaultFault_FaultMessage\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"SteamDemoLogin\">\n      <wsdl:input wsaw:Action=\"http://tempuri.org/IMyMasterService/SteamDemoLogin\" message=\"tns:IMyMasterService_SteamDemoLogin_InputMessage\" />\n      <wsdl:output wsaw:Action=\"http://tempuri.org/IMyMasterService/SteamDemoLoginResponse\" message=\"tns:IMyMasterService_SteamDemoLogin_OutputMessage\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"SteamLogin\">\n      <wsdl:input wsaw:Action=\"http://tempuri.org/IMyMasterService/SteamLogin\" message=\"tns:IMyMasterService_SteamLogin_InputMessage\" />\n      <wsdl:output wsaw:Action=\"http://tempuri.org/IMyMasterService/SteamLoginResponse\" message=\"tns:IMyMasterService_SteamLogin_OutputMessage\" />\n      <wsdl:fault wsaw:Action=\"http://tempuri.org/IMyMasterService/SteamLoginMySteamFaultFault\" name=\"MySteamFaultFault\" message=\"tns:IMyMasterService_SteamLogin_MySteamFaultFault_FaultMessage\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"SteamRegister\">\n      <wsdl:input wsaw:Action=\"http://tempuri.org/IMyMasterService/SteamRegister\" message=\"tns:IMyMasterService_SteamRegister_InputMessage\" />\n      <wsdl:output wsaw:Action=\"http://tempuri.org/IMyMasterService/SteamRegisterResponse\" message=\"tns:IMyMasterService_SteamRegister_OutputMessage\" />\n      <wsdl:fault wsaw:Action=\"http://tempuri.org/IMyMasterService/SteamRegisterMySteamFaultFault\" name=\"MySteamFaultFault\" message=\"tns:IMyMasterService_SteamRegister_MySteamFaultFault_FaultMessage\" />\n    </wsdl:operation>\n  </wsdl:portType>\n  <wsdl:binding name=\"NetTcpBinding_IMyMasterService\" type=\"tns:IMyMasterService\">\n    <wsp:PolicyReference URI=\"#NetTcpBinding_IMyMasterService_policy\">\n    </wsp:PolicyReference>\n    <soap12:binding transport=\"http://schemas.microsoft.com/soap/tcp\" />\n    <wsdl:operation name=\"CheckVersion\">\n      <soap12:operation soapAction=\"http://tempuri.org/IMyMasterService/CheckVersion\" style=\"document\" />\n      <wsdl:input>\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMyMasterService_CheckVersion_Input_policy\">\n        </wsp:PolicyReference>\n        <soap12:body use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMyMasterService_CheckVersion_output_policy\">\n        </wsp:PolicyReference>\n        <soap12:body use=\"literal\" />\n      </wsdl:output>\n      <wsdl:fault name=\"MyVersionFaultFault\">\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMyMasterService_CheckVersion_MyVersionFaultFault_Fault\">\n        </wsp:PolicyReference>\n        <soap12:fault use=\"literal\" name=\"MyVersionFaultFault\" namespace=\"\" />\n      </wsdl:fault>\n    </wsdl:operation>\n    <wsdl:operation name=\"GetSectorServer\">\n      <soap12:operation soapAction=\"http://tempuri.org/IMyMasterService/GetSectorServer\" style=\"document\" />\n      <wsdl:input>\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMyMasterService_GetSectorServer_Input_policy\">\n        </wsp:PolicyReference>\n        <soap12:body use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMyMasterService_GetSectorServer_output_policy\">\n        </wsp:PolicyReference>\n        <soap12:body use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"GetAllServers\">\n      <soap12:operation soapAction=\"http://tempuri.org/IMyMasterService/GetAllServers\" style=\"document\" />\n      <wsdl:input>\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMyMasterService_GetAllServers_Input_policy\">\n        </wsp:PolicyReference>\n        <soap12:body use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMyMasterService_GetAllServers_output_policy\">\n        </wsp:PolicyReference>\n        <soap12:body use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Register\">\n      <soap12:operation soapAction=\"http://tempuri.org/IMyMasterService/Register\" style=\"document\" />\n      <wsdl:input>\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMyMasterService_Register_Input_policy\">\n        </wsp:PolicyReference>\n        <soap12:body use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMyMasterService_Register_output_policy\">\n        </wsp:PolicyReference>\n        <soap12:body use=\"literal\" />\n      </wsdl:output>\n      <wsdl:fault name=\"MyRegistrationFaultFault\">\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMyMasterService_Register_MyRegistrationFaultFault_Fault\">\n        </wsp:PolicyReference>\n        <soap12:fault use=\"literal\" name=\"MyRegistrationFaultFault\" namespace=\"\" />\n      </wsdl:fault>\n    </wsdl:operation>\n    <wsdl:operation name=\"SteamDemoLogin\">\n      <soap12:operation soapAction=\"http://tempuri.org/IMyMasterService/SteamDemoLogin\" style=\"document\" />\n      <wsdl:input>\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMyMasterService_SteamDemoLogin_Input_policy\">\n        </wsp:PolicyReference>\n        <soap12:body use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMyMasterService_SteamDemoLogin_output_policy\">\n        </wsp:PolicyReference>\n        <soap12:body use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"SteamLogin\">\n      <soap12:operation soapAction=\"http://tempuri.org/IMyMasterService/SteamLogin\" style=\"document\" />\n      <wsdl:input>\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMyMasterService_SteamLogin_Input_policy\">\n        </wsp:PolicyReference>\n        <soap12:body use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMyMasterService_SteamLogin_output_policy\">\n        </wsp:PolicyReference>\n        <soap12:body use=\"literal\" />\n      </wsdl:output>\n      <wsdl:fault name=\"MySteamFaultFault\">\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMyMasterService_SteamLogin_MySteamFaultFault_Fault\">\n        </wsp:PolicyReference>\n        <soap12:fault use=\"literal\" name=\"MySteamFaultFault\" namespace=\"\" />\n      </wsdl:fault>\n    </wsdl:operation>\n    <wsdl:operation name=\"SteamRegister\">\n      <soap12:operation soapAction=\"http://tempuri.org/IMyMasterService/SteamRegister\" style=\"document\" />\n      <wsdl:input>\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMyMasterService_SteamRegister_Input_policy\">\n        </wsp:PolicyReference>\n        <soap12:body use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMyMasterService_SteamRegister_output_policy\">\n        </wsp:PolicyReference>\n        <soap12:body use=\"literal\" />\n      </wsdl:output>\n      <wsdl:fault name=\"MySteamFaultFault\">\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMyMasterService_SteamRegister_MySteamFaultFault_Fault\">\n        </wsp:PolicyReference>\n        <soap12:fault use=\"literal\" name=\"MySteamFaultFault\" namespace=\"\" />\n      </wsdl:fault>\n    </wsdl:operation>\n  </wsdl:binding>\n  <wsdl:service name=\"MyMasterService\">\n    <wsdl:port name=\"NetTcpBinding_IMyMasterService\" binding=\"tns:NetTcpBinding_IMyMasterService\">\n      <soap12:address location=\"net.tcp://localhost:24500/\" />\n      <wsa10:EndpointReference>\n        <wsa10:Address>net.tcp://localhost:24500/</wsa10:Address>\n        <Identity xmlns=\"http://schemas.xmlsoap.org/ws/2006/02/addressingidentity\">\n          <KeyInfo xmlns=\"http://www.w3.org/2000/09/xmldsig#\">\n            <X509Data>\n              <X509Certificate>MIIBtDCCAWKgAwIBAgIQxjsn8K2mfqxIIXxYl/4e3DAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTEyMDEyMzEzNDIwMloXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMTWFzdGVyU2VydmVyMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCbyZv5aJk4resjeVVKxDTDTsnPth7OhLbIpEfs56Y+eYYECD2eNYhLUAe3WYAeVwSmug172ooy8l+SwrsbfGu33den5165wjmeeUWrB19GLJSbFlBBB7tO+eZnig233cgxJvANWR4TE1ExyhwVVvtG6GgbmObyVTFgwk0R0hGjBwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAEAAqWKnfWctE15JZ0bIkQVESgoU2dIwe03+eUeF7o+syg7M/W5NtCmMF7KjIBCE8hYC5s8maoIXDXKW9jQpVOs=</X509Certificate>\n            </X509Data>\n          </KeyInfo>\n        </Identity>\n      </wsa10:EndpointReference>\n    </wsdl:port>\n  </wsdl:service>\n</wsdl:definitions>"
  },
  {
    "path": "Sources/MinerWars.GameLib/Service References/AppCode.Networking.MasterService/service.xsd",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema xmlns:tns=\"http://tempuri.org/\" elementFormDefault=\"qualified\" targetNamespace=\"http://tempuri.org/\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">\n  <xs:import namespace=\"http://schemas.microsoft.com/2003/10/Serialization/Arrays\" />\n  <xs:element name=\"CheckVersion\">\n    <xs:complexType>\n      <xs:sequence>\n        <xs:element minOccurs=\"0\" name=\"appVersion\" type=\"xs:int\" />\n      </xs:sequence>\n    </xs:complexType>\n  </xs:element>\n  <xs:element name=\"CheckVersionResponse\">\n    <xs:complexType>\n      <xs:sequence />\n    </xs:complexType>\n  </xs:element>\n  <xs:element name=\"GetSectorServer\">\n    <xs:complexType>\n      <xs:sequence />\n    </xs:complexType>\n  </xs:element>\n  <xs:element name=\"GetSectorServerResponse\">\n    <xs:complexType>\n      <xs:sequence>\n        <xs:element minOccurs=\"0\" name=\"GetSectorServerResult\" nillable=\"true\" type=\"xs:string\" />\n      </xs:sequence>\n    </xs:complexType>\n  </xs:element>\n  <xs:element name=\"GetAllServers\">\n    <xs:complexType>\n      <xs:sequence />\n    </xs:complexType>\n  </xs:element>\n  <xs:element name=\"GetAllServersResponse\">\n    <xs:complexType>\n      <xs:sequence>\n        <xs:element xmlns:q1=\"http://schemas.microsoft.com/2003/10/Serialization/Arrays\" minOccurs=\"0\" name=\"GetAllServersResult\" nillable=\"true\" type=\"q1:ArrayOfstring\" />\n      </xs:sequence>\n    </xs:complexType>\n  </xs:element>\n  <xs:element name=\"Register\">\n    <xs:complexType>\n      <xs:sequence>\n        <xs:element minOccurs=\"0\" name=\"username\" nillable=\"true\" type=\"xs:string\" />\n        <xs:element minOccurs=\"0\" name=\"passwordHash\" nillable=\"true\" type=\"xs:string\" />\n        <xs:element minOccurs=\"0\" name=\"email\" nillable=\"true\" type=\"xs:string\" />\n        <xs:element minOccurs=\"0\" name=\"sendNewsletter\" type=\"xs:boolean\" />\n      </xs:sequence>\n    </xs:complexType>\n  </xs:element>\n  <xs:element name=\"RegisterResponse\">\n    <xs:complexType>\n      <xs:sequence />\n    </xs:complexType>\n  </xs:element>\n  <xs:element name=\"SteamDemoLogin\">\n    <xs:complexType>\n      <xs:sequence>\n        <xs:element minOccurs=\"0\" name=\"steamUserId\" type=\"xs:long\" />\n        <xs:element minOccurs=\"0\" name=\"ticket\" nillable=\"true\" type=\"xs:base64Binary\" />\n      </xs:sequence>\n    </xs:complexType>\n  </xs:element>\n  <xs:element name=\"SteamDemoLoginResponse\">\n    <xs:complexType>\n      <xs:sequence>\n        <xs:element minOccurs=\"0\" name=\"username\" nillable=\"true\" type=\"xs:string\" />\n        <xs:element minOccurs=\"0\" name=\"token\" nillable=\"true\" type=\"xs:string\" />\n      </xs:sequence>\n    </xs:complexType>\n  </xs:element>\n  <xs:element name=\"SteamLogin\">\n    <xs:complexType>\n      <xs:sequence>\n        <xs:element minOccurs=\"0\" name=\"steamUserId\" type=\"xs:long\" />\n        <xs:element minOccurs=\"0\" name=\"ticket\" nillable=\"true\" type=\"xs:base64Binary\" />\n      </xs:sequence>\n    </xs:complexType>\n  </xs:element>\n  <xs:element name=\"SteamLoginResponse\">\n    <xs:complexType>\n      <xs:sequence>\n        <xs:element minOccurs=\"0\" name=\"username\" nillable=\"true\" type=\"xs:string\" />\n        <xs:element minOccurs=\"0\" name=\"token\" nillable=\"true\" type=\"xs:string\" />\n      </xs:sequence>\n    </xs:complexType>\n  </xs:element>\n  <xs:element name=\"SteamRegister\">\n    <xs:complexType>\n      <xs:sequence>\n        <xs:element minOccurs=\"0\" name=\"steamUserId\" type=\"xs:long\" />\n        <xs:element minOccurs=\"0\" name=\"ticket\" nillable=\"true\" type=\"xs:base64Binary\" />\n        <xs:element minOccurs=\"0\" name=\"serialKey\" nillable=\"true\" type=\"xs:string\" />\n        <xs:element minOccurs=\"0\" name=\"steamUserName\" nillable=\"true\" type=\"xs:string\" />\n      </xs:sequence>\n    </xs:complexType>\n  </xs:element>\n  <xs:element name=\"SteamRegisterResponse\">\n    <xs:complexType>\n      <xs:sequence />\n    </xs:complexType>\n  </xs:element>\n</xs:schema>"
  },
  {
    "path": "Sources/MinerWars.GameLib/Service References/AppCode.Networking.MasterService/service1.xsd",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema xmlns:tns=\"http://schemas.microsoft.com/2003/10/Serialization/\" attributeFormDefault=\"qualified\" elementFormDefault=\"qualified\" targetNamespace=\"http://schemas.microsoft.com/2003/10/Serialization/\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">\n  <xs:element name=\"anyType\" nillable=\"true\" type=\"xs:anyType\" />\n  <xs:element name=\"anyURI\" nillable=\"true\" type=\"xs:anyURI\" />\n  <xs:element name=\"base64Binary\" nillable=\"true\" type=\"xs:base64Binary\" />\n  <xs:element name=\"boolean\" nillable=\"true\" type=\"xs:boolean\" />\n  <xs:element name=\"byte\" nillable=\"true\" type=\"xs:byte\" />\n  <xs:element name=\"dateTime\" nillable=\"true\" type=\"xs:dateTime\" />\n  <xs:element name=\"decimal\" nillable=\"true\" type=\"xs:decimal\" />\n  <xs:element name=\"double\" nillable=\"true\" type=\"xs:double\" />\n  <xs:element name=\"float\" nillable=\"true\" type=\"xs:float\" />\n  <xs:element name=\"int\" nillable=\"true\" type=\"xs:int\" />\n  <xs:element name=\"long\" nillable=\"true\" type=\"xs:long\" />\n  <xs:element name=\"QName\" nillable=\"true\" type=\"xs:QName\" />\n  <xs:element name=\"short\" nillable=\"true\" type=\"xs:short\" />\n  <xs:element name=\"string\" nillable=\"true\" type=\"xs:string\" />\n  <xs:element name=\"unsignedByte\" nillable=\"true\" type=\"xs:unsignedByte\" />\n  <xs:element name=\"unsignedInt\" nillable=\"true\" type=\"xs:unsignedInt\" />\n  <xs:element name=\"unsignedLong\" nillable=\"true\" type=\"xs:unsignedLong\" />\n  <xs:element name=\"unsignedShort\" nillable=\"true\" type=\"xs:unsignedShort\" />\n  <xs:element name=\"char\" nillable=\"true\" type=\"tns:char\" />\n  <xs:simpleType name=\"char\">\n    <xs:restriction base=\"xs:int\" />\n  </xs:simpleType>\n  <xs:element name=\"duration\" nillable=\"true\" type=\"tns:duration\" />\n  <xs:simpleType name=\"duration\">\n    <xs:restriction base=\"xs:duration\">\n      <xs:pattern value=\"\\-?P(\\d*D)?(T(\\d*H)?(\\d*M)?(\\d*(\\.\\d*)?S)?)?\" />\n      <xs:minInclusive value=\"-P10675199DT2H48M5.4775808S\" />\n      <xs:maxInclusive value=\"P10675199DT2H48M5.4775807S\" />\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:element name=\"guid\" nillable=\"true\" type=\"tns:guid\" />\n  <xs:simpleType name=\"guid\">\n    <xs:restriction base=\"xs:string\">\n      <xs:pattern value=\"[\\da-fA-F]{8}-[\\da-fA-F]{4}-[\\da-fA-F]{4}-[\\da-fA-F]{4}-[\\da-fA-F]{12}\" />\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:attribute name=\"FactoryType\" type=\"xs:QName\" />\n  <xs:attribute name=\"Id\" type=\"xs:ID\" />\n  <xs:attribute name=\"Ref\" type=\"xs:IDREF\" />\n</xs:schema>"
  },
  {
    "path": "Sources/MinerWars.GameLib/Service References/AppCode.Networking.SectorService/Arrays.xsd",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema xmlns:tns=\"http://schemas.microsoft.com/2003/10/Serialization/Arrays\" elementFormDefault=\"qualified\" targetNamespace=\"http://schemas.microsoft.com/2003/10/Serialization/Arrays\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">\n  <xs:complexType name=\"ArrayOfstring\">\n    <xs:sequence>\n      <xs:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"string\" nillable=\"true\" type=\"xs:string\" />\n    </xs:sequence>\n  </xs:complexType>\n  <xs:element name=\"ArrayOfstring\" nillable=\"true\" type=\"tns:ArrayOfstring\" />\n</xs:schema>"
  },
  {
    "path": "Sources/MinerWars.GameLib/Service References/AppCode.Networking.SectorService/Microsoft.Xna.Framework.xsd",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema xmlns:tns=\"http://schemas.datacontract.org/2004/07/VRageMath\" elementFormDefault=\"qualified\" targetNamespace=\"http://schemas.datacontract.org/2004/07/VRageMath\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">\n  <xs:import namespace=\"http://schemas.microsoft.com/2003/10/Serialization/\" />\n  <xs:complexType name=\"Vector3\">\n    <xs:annotation>\n      <xs:appinfo>\n        <IsValueType xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/\">true</IsValueType>\n      </xs:appinfo>\n    </xs:annotation>\n    <xs:sequence>\n      <xs:element name=\"X\" type=\"xs:float\" />\n      <xs:element name=\"Y\" type=\"xs:float\" />\n      <xs:element name=\"Z\" type=\"xs:float\" />\n    </xs:sequence>\n  </xs:complexType>\n  <xs:element name=\"Vector3\" nillable=\"true\" type=\"tns:Vector3\" />\n</xs:schema>"
  },
  {
    "path": "Sources/MinerWars.GameLib/Service References/AppCode.Networking.SectorService/MinerWars.AppCode.Networking.SectorService.ExportInfo.datasource",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n    This file is automatically generated by Visual Studio .Net. It is \n    used to store generic object data source configuration information.  \n    Renaming the file extension or editing the content of this file may   \n    cause the file to be unrecognizable by the program.\n-->\n<GenericObjectDataSource DisplayName=\"ExportInfo\" Version=\"1.0\" xmlns=\"urn:schemas-microsoft-com:xml-msdatasource\">\n   <TypeInfo>MinerWars.AppCode.Networking.SectorService.ExportInfo, Service References.AppCode.Networking.SectorService.Reference.cs, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>\n</GenericObjectDataSource>"
  },
  {
    "path": "Sources/MinerWars.GameLib/Service References/AppCode.Networking.SectorService/MinerWars.AppCode.Networking.SectorService.MyUserInfo.datasource",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n    This file is automatically generated by Visual Studio .Net. It is \n    used to store generic object data source configuration information.  \n    Renaming the file extension or editing the content of this file may   \n    cause the file to be unrecognizable by the program.\n-->\n<GenericObjectDataSource DisplayName=\"MyUserInfo\" Version=\"1.0\" xmlns=\"urn:schemas-microsoft-com:xml-msdatasource\">\n   <TypeInfo>MinerWars.AppCode.Networking.SectorService.MyUserInfo, Service References.AppCode.Networking.SectorService.Reference.cs, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>\n</GenericObjectDataSource>"
  },
  {
    "path": "Sources/MinerWars.GameLib/Service References/AppCode.Networking.SectorService/MinerWars.CommonLIB.AppCode.Networking.Services.xsd",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema xmlns:tns=\"http://schemas.datacontract.org/2004/07/MinerWars.CommonLIB.AppCode.Networking.Services\" elementFormDefault=\"qualified\" targetNamespace=\"http://schemas.datacontract.org/2004/07/MinerWars.CommonLIB.AppCode.Networking.Services\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">\n  <xs:complexType name=\"MyVersionFault\">\n    <xs:sequence>\n      <xs:element minOccurs=\"0\" name=\"RequiredVersion\" type=\"xs:int\" />\n    </xs:sequence>\n  </xs:complexType>\n  <xs:element name=\"MyVersionFault\" nillable=\"true\" type=\"tns:MyVersionFault\" />\n  <xs:complexType name=\"MyAlreadyLoggedInFault\">\n    <xs:sequence />\n  </xs:complexType>\n  <xs:element name=\"MyAlreadyLoggedInFault\" nillable=\"true\" type=\"tns:MyAlreadyLoggedInFault\" />\n  <xs:complexType name=\"MyCustomFault\">\n    <xs:sequence>\n      <xs:element minOccurs=\"0\" name=\"ErrorCode\" type=\"tns:MyCustomFaultCode\" />\n      <xs:element minOccurs=\"0\" name=\"FullText\" nillable=\"true\" type=\"xs:string\" />\n      <xs:element minOccurs=\"0\" name=\"Message\" nillable=\"true\" type=\"xs:string\" />\n      <xs:element minOccurs=\"0\" name=\"StackTrace\" nillable=\"true\" type=\"xs:string\" />\n    </xs:sequence>\n  </xs:complexType>\n  <xs:element name=\"MyCustomFault\" nillable=\"true\" type=\"tns:MyCustomFault\" />\n  <xs:simpleType name=\"MyCustomFaultCode\">\n    <xs:restriction base=\"xs:string\">\n      <xs:enumeration value=\"Unknown\" />\n      <xs:enumeration value=\"SectorNameExists\" />\n      <xs:enumeration value=\"UserNotFound\" />\n      <xs:enumeration value=\"SectorNotFound\" />\n      <xs:enumeration value=\"CheckpointTemplateNotExists\" />\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:element name=\"MyCustomFaultCode\" nillable=\"true\" type=\"tns:MyCustomFaultCode\" />\n  <xs:complexType name=\"MyCheckpointNotExistsFault\">\n    <xs:sequence>\n      <xs:element minOccurs=\"0\" name=\"Message\" nillable=\"true\" type=\"xs:string\" />\n    </xs:sequence>\n  </xs:complexType>\n  <xs:element name=\"MyCheckpointNotExistsFault\" nillable=\"true\" type=\"tns:MyCheckpointNotExistsFault\" />\n</xs:schema>"
  },
  {
    "path": "Sources/MinerWars.GameLib/Service References/AppCode.Networking.SectorService/MinerWars.CommonLIB.AppCode.Networking.xsd",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema xmlns:tns=\"http://schemas.datacontract.org/2004/07/MinerWars.CommonLIB.AppCode.Networking\" elementFormDefault=\"qualified\" targetNamespace=\"http://schemas.datacontract.org/2004/07/MinerWars.CommonLIB.AppCode.Networking\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">\n  <xs:import namespace=\"http://schemas.datacontract.org/2004/07/MinerWars.CommonLIB.AppCode.Utils\" />\n  <xs:import namespace=\"http://schemas.microsoft.com/2003/10/Serialization/\" />\n  <xs:complexType name=\"MyMwcSectorIdentifier\">\n    <xs:annotation>\n      <xs:appinfo>\n        <IsValueType xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/\">true</IsValueType>\n      </xs:appinfo>\n    </xs:annotation>\n    <xs:sequence>\n      <xs:element xmlns:q1=\"http://schemas.datacontract.org/2004/07/MinerWars.CommonLIB.AppCode.Utils\" minOccurs=\"0\" name=\"Position\" type=\"q1:MyMwcVector3Int\" />\n      <xs:element minOccurs=\"0\" name=\"SectorName\" nillable=\"true\" type=\"xs:string\" />\n      <xs:element minOccurs=\"0\" name=\"SectorType\" type=\"tns:MyMwcSectorTypeEnum\" />\n      <xs:element minOccurs=\"0\" name=\"UserId\" nillable=\"true\" type=\"xs:int\" />\n    </xs:sequence>\n  </xs:complexType>\n  <xs:element name=\"MyMwcSectorIdentifier\" nillable=\"true\" type=\"tns:MyMwcSectorIdentifier\" />\n  <xs:simpleType name=\"MyMwcSectorTypeEnum\">\n    <xs:annotation>\n      <xs:appinfo>\n        <ActualType Name=\"short\" Namespace=\"http://www.w3.org/2001/XMLSchema\" xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/\">\n        </ActualType>\n      </xs:appinfo>\n    </xs:annotation>\n    <xs:restriction base=\"xs:string\">\n      <xs:enumeration value=\"STORY\">\n        <xs:annotation>\n          <xs:appinfo>\n            <EnumerationValue xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/\">1</EnumerationValue>\n          </xs:appinfo>\n        </xs:annotation>\n      </xs:enumeration>\n      <xs:enumeration value=\"MMO\">\n        <xs:annotation>\n          <xs:appinfo>\n            <EnumerationValue xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/\">2</EnumerationValue>\n          </xs:appinfo>\n        </xs:annotation>\n      </xs:enumeration>\n      <xs:enumeration value=\"SANDBOX\">\n        <xs:annotation>\n          <xs:appinfo>\n            <EnumerationValue xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/\">3</EnumerationValue>\n          </xs:appinfo>\n        </xs:annotation>\n      </xs:enumeration>\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:element name=\"MyMwcSectorTypeEnum\" nillable=\"true\" type=\"tns:MyMwcSectorTypeEnum\" />\n  <xs:complexType name=\"ArrayOfMyMwcSectorIdentifier\">\n    <xs:sequence>\n      <xs:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"MyMwcSectorIdentifier\" type=\"tns:MyMwcSectorIdentifier\" />\n    </xs:sequence>\n  </xs:complexType>\n  <xs:element name=\"ArrayOfMyMwcSectorIdentifier\" nillable=\"true\" type=\"tns:ArrayOfMyMwcSectorIdentifier\" />\n  <xs:simpleType name=\"MyMwcSelectSectorRequestTypeEnum\">\n    <xs:annotation>\n      <xs:appinfo>\n        <ActualType Name=\"unsignedByte\" Namespace=\"http://www.w3.org/2001/XMLSchema\" xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/\">\n        </ActualType>\n      </xs:appinfo>\n    </xs:annotation>\n    <xs:restriction base=\"xs:string\">\n      <xs:enumeration value=\"RANDOM_FRIENDS\" />\n      <xs:enumeration value=\"FIND_BY_PLAYER_NAME\" />\n      <xs:enumeration value=\"FIND_BY_PLAYER_NAME_FULLTEXT\" />\n      <xs:enumeration value=\"STORY\" />\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:element name=\"MyMwcSelectSectorRequestTypeEnum\" nillable=\"true\" type=\"tns:MyMwcSelectSectorRequestTypeEnum\" />\n  <xs:complexType name=\"ArrayOfMyMwcUserDetail\">\n    <xs:sequence>\n      <xs:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"MyMwcUserDetail\" type=\"tns:MyMwcUserDetail\" />\n    </xs:sequence>\n  </xs:complexType>\n  <xs:element name=\"ArrayOfMyMwcUserDetail\" nillable=\"true\" type=\"tns:ArrayOfMyMwcUserDetail\" />\n  <xs:complexType name=\"MyMwcUserDetail\">\n    <xs:annotation>\n      <xs:appinfo>\n        <IsValueType xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/\">true</IsValueType>\n      </xs:appinfo>\n    </xs:annotation>\n    <xs:sequence>\n      <xs:element minOccurs=\"0\" name=\"DisplayName\" nillable=\"true\" type=\"xs:string\" />\n      <xs:element minOccurs=\"0\" name=\"UserId\" type=\"xs:int\" />\n    </xs:sequence>\n  </xs:complexType>\n  <xs:element name=\"MyMwcUserDetail\" nillable=\"true\" type=\"tns:MyMwcUserDetail\" />\n  <xs:simpleType name=\"MyMwcSessionStateEnum\">\n    <xs:restriction base=\"xs:string\">\n      <xs:enumeration value=\"NEW_GAME\">\n        <xs:annotation>\n          <xs:appinfo>\n            <EnumerationValue xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/\">1</EnumerationValue>\n          </xs:appinfo>\n        </xs:annotation>\n      </xs:enumeration>\n      <xs:enumeration value=\"LOAD_CHECKPOINT\">\n        <xs:annotation>\n          <xs:appinfo>\n            <EnumerationValue xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/\">2</EnumerationValue>\n          </xs:appinfo>\n        </xs:annotation>\n      </xs:enumeration>\n      <xs:enumeration value=\"JOIN_GAME\">\n        <xs:annotation>\n          <xs:appinfo>\n            <EnumerationValue xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/\">3</EnumerationValue>\n          </xs:appinfo>\n        </xs:annotation>\n      </xs:enumeration>\n      <xs:enumeration value=\"EDITOR\">\n        <xs:annotation>\n          <xs:appinfo>\n            <EnumerationValue xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/\">4</EnumerationValue>\n          </xs:appinfo>\n        </xs:annotation>\n      </xs:enumeration>\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:element name=\"MyMwcSessionStateEnum\" nillable=\"true\" type=\"tns:MyMwcSessionStateEnum\" />\n  <xs:simpleType name=\"MyMwcTravelTypeEnum\">\n    <xs:restriction base=\"xs:string\">\n      <xs:enumeration value=\"NEIGHBOUR\">\n        <xs:annotation>\n          <xs:appinfo>\n            <EnumerationValue xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/\">1</EnumerationValue>\n          </xs:appinfo>\n        </xs:annotation>\n      </xs:enumeration>\n      <xs:enumeration value=\"SOLAR\">\n        <xs:annotation>\n          <xs:appinfo>\n            <EnumerationValue xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/\">2</EnumerationValue>\n          </xs:appinfo>\n        </xs:annotation>\n      </xs:enumeration>\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:element name=\"MyMwcTravelTypeEnum\" nillable=\"true\" type=\"tns:MyMwcTravelTypeEnum\" />\n  <xs:simpleType name=\"MyMwcLeaveSectorReasonEnum\">\n    <xs:annotation>\n      <xs:appinfo>\n        <ActualType Name=\"unsignedByte\" Namespace=\"http://www.w3.org/2001/XMLSchema\" xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/\">\n        </ActualType>\n      </xs:appinfo>\n    </xs:annotation>\n    <xs:restriction base=\"xs:string\">\n      <xs:enumeration value=\"LOGOUT\" />\n      <xs:enumeration value=\"EXIT_TO_MAIN_MENU\" />\n      <xs:enumeration value=\"TRAVEL\" />\n      <xs:enumeration value=\"RELOAD\" />\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:element name=\"MyMwcLeaveSectorReasonEnum\" nillable=\"true\" type=\"tns:MyMwcLeaveSectorReasonEnum\" />\n  <xs:simpleType name=\"MyMwcVoxelMaterialsEnum\">\n    <xs:annotation>\n      <xs:appinfo>\n        <ActualType Name=\"unsignedByte\" Namespace=\"http://www.w3.org/2001/XMLSchema\" xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/\">\n        </ActualType>\n      </xs:appinfo>\n    </xs:annotation>\n    <xs:restriction base=\"xs:string\">\n      <xs:enumeration value=\"Indestructible_01\" />\n      <xs:enumeration value=\"Indestructible_02\" />\n      <xs:enumeration value=\"Treasure_01\" />\n      <xs:enumeration value=\"Treasure_02\" />\n      <xs:enumeration value=\"Iron_01\" />\n      <xs:enumeration value=\"Iron_02\" />\n      <xs:enumeration value=\"Helium3_01\" />\n      <xs:enumeration value=\"Helium4_01\" />\n      <xs:enumeration value=\"Stone_01\" />\n      <xs:enumeration value=\"Stone_02\" />\n      <xs:enumeration value=\"Stone_03\" />\n      <xs:enumeration value=\"Stone_04\" />\n      <xs:enumeration value=\"Stone_05\" />\n      <xs:enumeration value=\"Stone_06\" />\n      <xs:enumeration value=\"Stone_07\" />\n      <xs:enumeration value=\"Stone_08\" />\n      <xs:enumeration value=\"Indestructible_03\" />\n      <xs:enumeration value=\"Stone_10\" />\n      <xs:enumeration value=\"Indestructible_04\" />\n      <xs:enumeration value=\"Indestructible_05_Craters_01\" />\n      <xs:enumeration value=\"Stone_13_Wall_01\" />\n      <xs:enumeration value=\"Ice_01\" />\n      <xs:enumeration value=\"Gold_01\" />\n      <xs:enumeration value=\"Silver_01\" />\n      <xs:enumeration value=\"Organic_01\" />\n      <xs:enumeration value=\"Nickel_01\" />\n      <xs:enumeration value=\"Magnesium_01\" />\n      <xs:enumeration value=\"Platinum_01\" />\n      <xs:enumeration value=\"Uranite_01\" />\n      <xs:enumeration value=\"Silicon_01\" />\n      <xs:enumeration value=\"Cobalt_01\" />\n      <xs:enumeration value=\"Snow_01\" />\n      <xs:enumeration value=\"Lava_01\" />\n      <xs:enumeration value=\"Concrete_01\" />\n      <xs:enumeration value=\"Concrete_02\" />\n      <xs:enumeration value=\"Sandstone_01\" />\n      <xs:enumeration value=\"Stone_Red\" />\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:element name=\"MyMwcVoxelMaterialsEnum\" nillable=\"true\" type=\"tns:MyMwcVoxelMaterialsEnum\" />\n</xs:schema>"
  },
  {
    "path": "Sources/MinerWars.GameLib/Service References/AppCode.Networking.SectorService/MinerWars.CommonLIB.AppCode.Utils.xsd",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema xmlns:tns=\"http://schemas.datacontract.org/2004/07/MinerWars.CommonLIB.AppCode.Utils\" elementFormDefault=\"qualified\" targetNamespace=\"http://schemas.datacontract.org/2004/07/MinerWars.CommonLIB.AppCode.Utils\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">\n  <xs:import namespace=\"http://schemas.microsoft.com/2003/10/Serialization/\" />\n  <xs:complexType name=\"MyMwcVector3Int\">\n    <xs:annotation>\n      <xs:appinfo>\n        <IsValueType xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/\">true</IsValueType>\n      </xs:appinfo>\n    </xs:annotation>\n    <xs:sequence>\n      <xs:element minOccurs=\"0\" name=\"X\" type=\"xs:int\" />\n      <xs:element minOccurs=\"0\" name=\"Y\" type=\"xs:int\" />\n      <xs:element minOccurs=\"0\" name=\"Z\" type=\"xs:int\" />\n    </xs:sequence>\n  </xs:complexType>\n  <xs:element name=\"MyMwcVector3Int\" nillable=\"true\" type=\"tns:MyMwcVector3Int\" />\n</xs:schema>"
  },
  {
    "path": "Sources/MinerWars.GameLib/Service References/AppCode.Networking.SectorService/Reference.cs",
    "content": "﻿//------------------------------------------------------------------------------\n// <auto-generated>\n//     This code was generated by a tool.\n//     Runtime Version:4.0.30319.296\n//\n//     Changes to this file may cause incorrect behavior and will be lost if\n//     the code is regenerated.\n// </auto-generated>\n//------------------------------------------------------------------------------\n\nnamespace MinerWars.AppCode.Networking.SectorService {\n    using System.Runtime.Serialization;\n    using System;\n    using VRageMath = MinerWarsMath;\n    \n    [System.Diagnostics.DebuggerStepThroughAttribute()]\n    [System.CodeDom.Compiler.GeneratedCodeAttribute(\"System.Runtime.Serialization\", \"4.0.0.0\")]\n    [System.Runtime.Serialization.DataContractAttribute(Name=\"ExportInfo\", Namespace=\"http://schemas.datacontract.org/2004/07/SectorServerLIB.SectorService\")]\n    [System.SerializableAttribute()]\n    public partial struct ExportInfo : System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {\n        \n        [System.NonSerializedAttribute()]\n        private System.Runtime.Serialization.ExtensionDataObject extensionDataField;\n        \n        [System.Runtime.Serialization.OptionalFieldAttribute()]\n        private MinerWars.CommonLIB.AppCode.Networking.MyMwcSectorIdentifier SectorIdField;\n        \n        [System.Runtime.Serialization.OptionalFieldAttribute()]\n        private int VersionField;\n        \n        public System.Runtime.Serialization.ExtensionDataObject ExtensionData {\n            get {\n                return this.extensionDataField;\n            }\n            set {\n                this.extensionDataField = value;\n            }\n        }\n        \n        [System.Runtime.Serialization.DataMemberAttribute()]\n        public MinerWars.CommonLIB.AppCode.Networking.MyMwcSectorIdentifier SectorId {\n            get {\n                return this.SectorIdField;\n            }\n            set {\n                if ((this.SectorIdField.Equals(value) != true)) {\n                    this.SectorIdField = value;\n                    this.RaisePropertyChanged(\"SectorId\");\n                }\n            }\n        }\n        \n        [System.Runtime.Serialization.DataMemberAttribute()]\n        public int Version {\n            get {\n                return this.VersionField;\n            }\n            set {\n                if ((this.VersionField.Equals(value) != true)) {\n                    this.VersionField = value;\n                    this.RaisePropertyChanged(\"Version\");\n                }\n            }\n        }\n        \n        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;\n        \n        void RaisePropertyChanged(string propertyName) {\n            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;\n            if ((propertyChanged != null)) {\n                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));\n            }\n        }\n    }\n    \n    [System.Diagnostics.DebuggerStepThroughAttribute()]\n    [System.CodeDom.Compiler.GeneratedCodeAttribute(\"System.Runtime.Serialization\", \"4.0.0.0\")]\n    [System.Runtime.Serialization.DataContractAttribute(Name=\"MyUserInfo\", Namespace=\"http://schemas.datacontract.org/2004/07/SectorServerLIB.SectorService\")]\n    [System.SerializableAttribute()]\n    public partial class MyUserInfo : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {\n        \n        [System.NonSerializedAttribute()]\n        private System.Runtime.Serialization.ExtensionDataObject extensionDataField;\n        \n        [System.Runtime.Serialization.OptionalFieldAttribute()]\n        private MinerWars.AppCode.Networking.SectorService.MyAdditionalUserInfo AdditionalInfoField;\n        \n        [System.Runtime.Serialization.OptionalFieldAttribute()]\n        private bool CanAccess25DField;\n        \n        [System.Runtime.Serialization.OptionalFieldAttribute()]\n        private bool CanAccessDemoField;\n        \n        [System.Runtime.Serialization.OptionalFieldAttribute()]\n        private bool CanAccessEditorForMMOField;\n        \n        [System.Runtime.Serialization.OptionalFieldAttribute()]\n        private bool CanAccessEditorForStoryField;\n        \n        [System.Runtime.Serialization.OptionalFieldAttribute()]\n        private bool CanAccessMMOField;\n        \n        [System.Runtime.Serialization.OptionalFieldAttribute()]\n        private bool CanSaveField;\n        \n        [System.Runtime.Serialization.OptionalFieldAttribute()]\n        private bool CanUseCheatsField;\n        \n        [System.Runtime.Serialization.OptionalFieldAttribute()]\n        private string DisplayNameField;\n        \n        [System.Runtime.Serialization.OptionalFieldAttribute()]\n        private bool HasAnyCheckpointsField;\n        \n        [System.Runtime.Serialization.OptionalFieldAttribute()]\n        private int UserIdField;\n        \n        [global::System.ComponentModel.BrowsableAttribute(false)]\n        public System.Runtime.Serialization.ExtensionDataObject ExtensionData {\n            get {\n                return this.extensionDataField;\n            }\n            set {\n                this.extensionDataField = value;\n            }\n        }\n        \n        [System.Runtime.Serialization.DataMemberAttribute()]\n        public MinerWars.AppCode.Networking.SectorService.MyAdditionalUserInfo AdditionalInfo {\n            get {\n                return this.AdditionalInfoField;\n            }\n            set {\n                if ((object.ReferenceEquals(this.AdditionalInfoField, value) != true)) {\n                    this.AdditionalInfoField = value;\n                    this.RaisePropertyChanged(\"AdditionalInfo\");\n                }\n            }\n        }\n        \n        [System.Runtime.Serialization.DataMemberAttribute()]\n        public bool CanAccess25D {\n            get {\n                return this.CanAccess25DField;\n            }\n            set {\n                if ((this.CanAccess25DField.Equals(value) != true)) {\n                    this.CanAccess25DField = value;\n                    this.RaisePropertyChanged(\"CanAccess25D\");\n                }\n            }\n        }\n        \n        [System.Runtime.Serialization.DataMemberAttribute()]\n        public bool CanAccessDemo {\n            get {\n                return this.CanAccessDemoField;\n            }\n            set {\n                if ((this.CanAccessDemoField.Equals(value) != true)) {\n                    this.CanAccessDemoField = value;\n                    this.RaisePropertyChanged(\"CanAccessDemo\");\n                }\n            }\n        }\n        \n        [System.Runtime.Serialization.DataMemberAttribute()]\n        public bool CanAccessEditorForMMO {\n            get {\n                return this.CanAccessEditorForMMOField;\n            }\n            set {\n                if ((this.CanAccessEditorForMMOField.Equals(value) != true)) {\n                    this.CanAccessEditorForMMOField = value;\n                    this.RaisePropertyChanged(\"CanAccessEditorForMMO\");\n                }\n            }\n        }\n        \n        [System.Runtime.Serialization.DataMemberAttribute()]\n        public bool CanAccessEditorForStory {\n            get {\n                return this.CanAccessEditorForStoryField;\n            }\n            set {\n                if ((this.CanAccessEditorForStoryField.Equals(value) != true)) {\n                    this.CanAccessEditorForStoryField = value;\n                    this.RaisePropertyChanged(\"CanAccessEditorForStory\");\n                }\n            }\n        }\n        \n        [System.Runtime.Serialization.DataMemberAttribute()]\n        public bool CanAccessMMO {\n            get {\n                return this.CanAccessMMOField;\n            }\n            set {\n                if ((this.CanAccessMMOField.Equals(value) != true)) {\n                    this.CanAccessMMOField = value;\n                    this.RaisePropertyChanged(\"CanAccessMMO\");\n                }\n            }\n        }\n        \n        [System.Runtime.Serialization.DataMemberAttribute()]\n        public bool CanSave {\n            get {\n                return this.CanSaveField;\n            }\n            set {\n                if ((this.CanSaveField.Equals(value) != true)) {\n                    this.CanSaveField = value;\n                    this.RaisePropertyChanged(\"CanSave\");\n                }\n            }\n        }\n        \n        [System.Runtime.Serialization.DataMemberAttribute()]\n        public bool CanUseCheats {\n            get {\n                return this.CanUseCheatsField;\n            }\n            set {\n                if ((this.CanUseCheatsField.Equals(value) != true)) {\n                    this.CanUseCheatsField = value;\n                    this.RaisePropertyChanged(\"CanUseCheats\");\n                }\n            }\n        }\n        \n        [System.Runtime.Serialization.DataMemberAttribute()]\n        public string DisplayName {\n            get {\n                return this.DisplayNameField;\n            }\n            set {\n                if ((object.ReferenceEquals(this.DisplayNameField, value) != true)) {\n                    this.DisplayNameField = value;\n                    this.RaisePropertyChanged(\"DisplayName\");\n                }\n            }\n        }\n        \n        [System.Runtime.Serialization.DataMemberAttribute()]\n        public bool HasAnyCheckpoints {\n            get {\n                return this.HasAnyCheckpointsField;\n            }\n            set {\n                if ((this.HasAnyCheckpointsField.Equals(value) != true)) {\n                    this.HasAnyCheckpointsField = value;\n                    this.RaisePropertyChanged(\"HasAnyCheckpoints\");\n                }\n            }\n        }\n        \n        [System.Runtime.Serialization.DataMemberAttribute()]\n        public int UserId {\n            get {\n                return this.UserIdField;\n            }\n            set {\n                if ((this.UserIdField.Equals(value) != true)) {\n                    this.UserIdField = value;\n                    this.RaisePropertyChanged(\"UserId\");\n                }\n            }\n        }\n        \n        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;\n        \n        protected void RaisePropertyChanged(string propertyName) {\n            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;\n            if ((propertyChanged != null)) {\n                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));\n            }\n        }\n    }\n    \n    [System.Diagnostics.DebuggerStepThroughAttribute()]\n    [System.CodeDom.Compiler.GeneratedCodeAttribute(\"System.Runtime.Serialization\", \"4.0.0.0\")]\n    [System.Runtime.Serialization.DataContractAttribute(Name=\"MyAdditionalUserInfo\", Namespace=\"http://schemas.datacontract.org/2004/07/SectorServerLIB.SectorService\")]\n    [System.SerializableAttribute()]\n    public partial class MyAdditionalUserInfo : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {\n        \n        [System.NonSerializedAttribute()]\n        private System.Runtime.Serialization.ExtensionDataObject extensionDataField;\n        \n        [System.Runtime.Serialization.OptionalFieldAttribute()]\n        private int AffiliateUniqueClicksField;\n        \n        [System.Runtime.Serialization.OptionalFieldAttribute()]\n        private int AffiliateUrlRegistrationsField;\n        \n        [System.Runtime.Serialization.OptionalFieldAttribute()]\n        private System.Nullable<int> AgeField;\n        \n        [System.Runtime.Serialization.OptionalFieldAttribute()]\n        private float ContributionsField;\n        \n        [System.Runtime.Serialization.OptionalFieldAttribute()]\n        private string DescriptionField;\n        \n        [System.Runtime.Serialization.OptionalFieldAttribute()]\n        private int ForumPostsField;\n        \n        [System.Runtime.Serialization.OptionalFieldAttribute()]\n        private System.Nullable<int> GenderField;\n        \n        [System.Runtime.Serialization.OptionalFieldAttribute()]\n        private System.Nullable<System.DateTime> LastGameLoginField;\n        \n        [System.Runtime.Serialization.OptionalFieldAttribute()]\n        private System.Nullable<System.DateTime> LastWebsiteLoginField;\n        \n        [System.Runtime.Serialization.OptionalFieldAttribute()]\n        private float QualificationPoinstsField;\n        \n        [System.Runtime.Serialization.OptionalFieldAttribute()]\n        private System.Nullable<System.DateTime> RegisteredField;\n        \n        [global::System.ComponentModel.BrowsableAttribute(false)]\n        public System.Runtime.Serialization.ExtensionDataObject ExtensionData {\n            get {\n                return this.extensionDataField;\n            }\n            set {\n                this.extensionDataField = value;\n            }\n        }\n        \n        [System.Runtime.Serialization.DataMemberAttribute()]\n        public int AffiliateUniqueClicks {\n            get {\n                return this.AffiliateUniqueClicksField;\n            }\n            set {\n                if ((this.AffiliateUniqueClicksField.Equals(value) != true)) {\n                    this.AffiliateUniqueClicksField = value;\n                    this.RaisePropertyChanged(\"AffiliateUniqueClicks\");\n                }\n            }\n        }\n        \n        [System.Runtime.Serialization.DataMemberAttribute()]\n        public int AffiliateUrlRegistrations {\n            get {\n                return this.AffiliateUrlRegistrationsField;\n            }\n            set {\n                if ((this.AffiliateUrlRegistrationsField.Equals(value) != true)) {\n                    this.AffiliateUrlRegistrationsField = value;\n                    this.RaisePropertyChanged(\"AffiliateUrlRegistrations\");\n                }\n            }\n        }\n        \n        [System.Runtime.Serialization.DataMemberAttribute()]\n        public System.Nullable<int> Age {\n            get {\n                return this.AgeField;\n            }\n            set {\n                if ((this.AgeField.Equals(value) != true)) {\n                    this.AgeField = value;\n                    this.RaisePropertyChanged(\"Age\");\n                }\n            }\n        }\n        \n        [System.Runtime.Serialization.DataMemberAttribute()]\n        public float Contributions {\n            get {\n                return this.ContributionsField;\n            }\n            set {\n                if ((this.ContributionsField.Equals(value) != true)) {\n                    this.ContributionsField = value;\n                    this.RaisePropertyChanged(\"Contributions\");\n                }\n            }\n        }\n        \n        [System.Runtime.Serialization.DataMemberAttribute()]\n        public string Description {\n            get {\n                return this.DescriptionField;\n            }\n            set {\n                if ((object.ReferenceEquals(this.DescriptionField, value) != true)) {\n                    this.DescriptionField = value;\n                    this.RaisePropertyChanged(\"Description\");\n                }\n            }\n        }\n        \n        [System.Runtime.Serialization.DataMemberAttribute()]\n        public int ForumPosts {\n            get {\n                return this.ForumPostsField;\n            }\n            set {\n                if ((this.ForumPostsField.Equals(value) != true)) {\n                    this.ForumPostsField = value;\n                    this.RaisePropertyChanged(\"ForumPosts\");\n                }\n            }\n        }\n        \n        [System.Runtime.Serialization.DataMemberAttribute()]\n        public System.Nullable<int> Gender {\n            get {\n                return this.GenderField;\n            }\n            set {\n                if ((this.GenderField.Equals(value) != true)) {\n                    this.GenderField = value;\n                    this.RaisePropertyChanged(\"Gender\");\n                }\n            }\n        }\n        \n        [System.Runtime.Serialization.DataMemberAttribute()]\n        public System.Nullable<System.DateTime> LastGameLogin {\n            get {\n                return this.LastGameLoginField;\n            }\n            set {\n                if ((this.LastGameLoginField.Equals(value) != true)) {\n                    this.LastGameLoginField = value;\n                    this.RaisePropertyChanged(\"LastGameLogin\");\n                }\n            }\n        }\n        \n        [System.Runtime.Serialization.DataMemberAttribute()]\n        public System.Nullable<System.DateTime> LastWebsiteLogin {\n            get {\n                return this.LastWebsiteLoginField;\n            }\n            set {\n                if ((this.LastWebsiteLoginField.Equals(value) != true)) {\n                    this.LastWebsiteLoginField = value;\n                    this.RaisePropertyChanged(\"LastWebsiteLogin\");\n                }\n            }\n        }\n        \n        [System.Runtime.Serialization.DataMemberAttribute()]\n        public float QualificationPoinsts {\n            get {\n                return this.QualificationPoinstsField;\n            }\n            set {\n                if ((this.QualificationPoinstsField.Equals(value) != true)) {\n                    this.QualificationPoinstsField = value;\n                    this.RaisePropertyChanged(\"QualificationPoinsts\");\n                }\n            }\n        }\n        \n        [System.Runtime.Serialization.DataMemberAttribute()]\n        public System.Nullable<System.DateTime> Registered {\n            get {\n                return this.RegisteredField;\n            }\n            set {\n                if ((this.RegisteredField.Equals(value) != true)) {\n                    this.RegisteredField = value;\n                    this.RaisePropertyChanged(\"Registered\");\n                }\n            }\n        }\n        \n        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;\n        \n        protected void RaisePropertyChanged(string propertyName) {\n            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;\n            if ((propertyChanged != null)) {\n                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));\n            }\n        }\n    }\n    \n    [System.CodeDom.Compiler.GeneratedCodeAttribute(\"System.ServiceModel\", \"4.0.0.0\")]\n    [System.ServiceModel.ServiceContractAttribute(ConfigurationName=\"AppCode.Networking.SectorService.IMySectorService\", CallbackContract=typeof(MinerWars.AppCode.Networking.SectorService.IMySectorServiceCallback), SessionMode=System.ServiceModel.SessionMode.Required)]\n    public interface IMySectorService {\n        \n        [System.ServiceModel.OperationContractAttribute(IsInitiating=false, Action=\"http://tempuri.org/IMySectorService/GetGameMoney\", ReplyAction=\"http://tempuri.org/IMySectorService/GetGameMoneyResponse\")]\n        decimal GetGameMoney();\n        \n        [System.ServiceModel.OperationContractAttribute(IsInitiating=false, AsyncPattern=true, Action=\"http://tempuri.org/IMySectorService/GetGameMoney\", ReplyAction=\"http://tempuri.org/IMySectorService/GetGameMoneyResponse\")]\n        System.IAsyncResult BeginGetGameMoney(System.AsyncCallback callback, object asyncState);\n        \n        decimal EndGetGameMoney(System.IAsyncResult result);\n        \n        [System.ServiceModel.OperationContractAttribute(IsInitiating=false, Action=\"http://tempuri.org/IMySectorService/UpdateGameMoney\", ReplyAction=\"http://tempuri.org/IMySectorService/UpdateGameMoneyResponse\")]\n        void UpdateGameMoney(decimal moneyAdded);\n        \n        [System.ServiceModel.OperationContractAttribute(IsInitiating=false, AsyncPattern=true, Action=\"http://tempuri.org/IMySectorService/UpdateGameMoney\", ReplyAction=\"http://tempuri.org/IMySectorService/UpdateGameMoneyResponse\")]\n        System.IAsyncResult BeginUpdateGameMoney(decimal moneyAdded, System.AsyncCallback callback, object asyncState);\n        \n        void EndUpdateGameMoney(System.IAsyncResult result);\n        \n        [System.ServiceModel.OperationContractAttribute(Action=\"http://tempuri.org/IMySectorService/LoadExportInfo\", ReplyAction=\"http://tempuri.org/IMySectorService/LoadExportInfoResponse\")]\n        System.Collections.Generic.List<MinerWars.AppCode.Networking.SectorService.ExportInfo> LoadExportInfo();\n        \n        [System.ServiceModel.OperationContractAttribute(AsyncPattern=true, Action=\"http://tempuri.org/IMySectorService/LoadExportInfo\", ReplyAction=\"http://tempuri.org/IMySectorService/LoadExportInfoResponse\")]\n        System.IAsyncResult BeginLoadExportInfo(System.AsyncCallback callback, object asyncState);\n        \n        System.Collections.Generic.List<MinerWars.AppCode.Networking.SectorService.ExportInfo> EndLoadExportInfo(System.IAsyncResult result);\n        \n        [System.ServiceModel.OperationContractAttribute(Action=\"http://tempuri.org/IMySectorService/ExportGlobalData\", ReplyAction=\"http://tempuri.org/IMySectorService/ExportGlobalDataResponse\")]\n        [return: System.ServiceModel.MessageParameterAttribute(Name=\"globalData\")]\n        byte[] ExportGlobalData(out byte[] storyCheckpoint, out byte[] sandboxCheckpoint);\n        \n        [System.ServiceModel.OperationContractAttribute(AsyncPattern=true, Action=\"http://tempuri.org/IMySectorService/ExportGlobalData\", ReplyAction=\"http://tempuri.org/IMySectorService/ExportGlobalDataResponse\")]\n        System.IAsyncResult BeginExportGlobalData(System.AsyncCallback callback, object asyncState);\n        \n        [return: System.ServiceModel.MessageParameterAttribute(Name=\"globalData\")]\n        byte[] EndExportGlobalData(out byte[] storyCheckpoint, out byte[] sandboxCheckpoint, System.IAsyncResult result);\n        \n        [System.ServiceModel.OperationContractAttribute(Action=\"http://tempuri.org/IMySectorService/ExportSector\", ReplyAction=\"http://tempuri.org/IMySectorService/ExportSectorResponse\")]\n        byte[] ExportSector(MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int sectorPosition, System.Nullable<int> userId, MinerWars.CommonLIB.AppCode.Networking.MyMwcSectorTypeEnum sectorType);\n        \n        [System.ServiceModel.OperationContractAttribute(AsyncPattern=true, Action=\"http://tempuri.org/IMySectorService/ExportSector\", ReplyAction=\"http://tempuri.org/IMySectorService/ExportSectorResponse\")]\n        System.IAsyncResult BeginExportSector(MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int sectorPosition, System.Nullable<int> userId, MinerWars.CommonLIB.AppCode.Networking.MyMwcSectorTypeEnum sectorType, System.AsyncCallback callback, object asyncState);\n        \n        byte[] EndExportSector(System.IAsyncResult result);\n        \n        [System.ServiceModel.OperationContractAttribute(Action=\"http://tempuri.org/IMySectorService/Login\", ReplyAction=\"http://tempuri.org/IMySectorService/LoginResponse\")]\n        [System.ServiceModel.FaultContractAttribute(typeof(MinerWars.CommonLIB.AppCode.Networking.Services.MyVersionFault), Action=\"http://tempuri.org/IMySectorService/LoginMyVersionFaultFault\", Name=\"MyVersionFault\", Namespace=\"http://schemas.datacontract.org/2004/07/MinerWars.CommonLIB.AppCode.Networking.Se\" +\n            \"rvices\")]\n        [System.ServiceModel.FaultContractAttribute(typeof(MinerWars.CommonLIB.AppCode.Networking.Services.MyAlreadyLoggedInFault), Action=\"http://tempuri.org/IMySectorService/LoginMyAlreadyLoggedInFaultFault\", Name=\"MyAlreadyLoggedInFault\", Namespace=\"http://schemas.datacontract.org/2004/07/MinerWars.CommonLIB.AppCode.Networking.Se\" +\n            \"rvices\")]\n        MinerWars.AppCode.Networking.SectorService.MyUserInfo Login(int gameVersion);\n        \n        [System.ServiceModel.OperationContractAttribute(AsyncPattern=true, Action=\"http://tempuri.org/IMySectorService/Login\", ReplyAction=\"http://tempuri.org/IMySectorService/LoginResponse\")]\n        System.IAsyncResult BeginLogin(int gameVersion, System.AsyncCallback callback, object asyncState);\n        \n        MinerWars.AppCode.Networking.SectorService.MyUserInfo EndLogin(System.IAsyncResult result);\n        \n        [System.ServiceModel.OperationContractAttribute(IsTerminating=true, Action=\"http://tempuri.org/IMySectorService/Logout\", ReplyAction=\"http://tempuri.org/IMySectorService/LogoutResponse\")]\n        void Logout();\n        \n        [System.ServiceModel.OperationContractAttribute(IsTerminating=true, AsyncPattern=true, Action=\"http://tempuri.org/IMySectorService/Logout\", ReplyAction=\"http://tempuri.org/IMySectorService/LogoutResponse\")]\n        System.IAsyncResult BeginLogout(System.AsyncCallback callback, object asyncState);\n        \n        void EndLogout(System.IAsyncResult result);\n        \n        [System.ServiceModel.OperationContractAttribute(IsInitiating=false, Action=\"http://tempuri.org/IMySectorService/LoadSectorIdentifiers\", ReplyAction=\"http://tempuri.org/IMySectorService/LoadSectorIdentifiersResponse\")]\n        System.Collections.Generic.List<MinerWars.CommonLIB.AppCode.Networking.MyMwcSectorIdentifier> LoadSectorIdentifiers(MinerWars.CommonLIB.AppCode.Networking.MyMwcSectorTypeEnum sectorType);\n        \n        [System.ServiceModel.OperationContractAttribute(IsInitiating=false, AsyncPattern=true, Action=\"http://tempuri.org/IMySectorService/LoadSectorIdentifiers\", ReplyAction=\"http://tempuri.org/IMySectorService/LoadSectorIdentifiersResponse\")]\n        System.IAsyncResult BeginLoadSectorIdentifiers(MinerWars.CommonLIB.AppCode.Networking.MyMwcSectorTypeEnum sectorType, System.AsyncCallback callback, object asyncState);\n        \n        System.Collections.Generic.List<MinerWars.CommonLIB.AppCode.Networking.MyMwcSectorIdentifier> EndLoadSectorIdentifiers(System.IAsyncResult result);\n        \n        [System.ServiceModel.OperationContractAttribute(IsInitiating=false, Action=\"http://tempuri.org/IMySectorService/LoadUserSectorIdentifiers\", ReplyAction=\"http://tempuri.org/IMySectorService/LoadUserSectorIdentifiersResponse\")]\n        System.Collections.Generic.List<MinerWars.CommonLIB.AppCode.Networking.MyMwcSectorIdentifier> LoadUserSectorIdentifiers();\n        \n        [System.ServiceModel.OperationContractAttribute(IsInitiating=false, AsyncPattern=true, Action=\"http://tempuri.org/IMySectorService/LoadUserSectorIdentifiers\", ReplyAction=\"http://tempuri.org/IMySectorService/LoadUserSectorIdentifiersResponse\")]\n        System.IAsyncResult BeginLoadUserSectorIdentifiers(System.AsyncCallback callback, object asyncState);\n        \n        System.Collections.Generic.List<MinerWars.CommonLIB.AppCode.Networking.MyMwcSectorIdentifier> EndLoadUserSectorIdentifiers(System.IAsyncResult result);\n        \n        [System.ServiceModel.OperationContractAttribute(IsInitiating=false, Action=\"http://tempuri.org/IMySectorService/SelectSandbox\", ReplyAction=\"http://tempuri.org/IMySectorService/SelectSandboxResponse\")]\n        System.Collections.Generic.List<MinerWars.CommonLIB.AppCode.Networking.MyMwcSectorIdentifier> SelectSandbox(out System.Collections.Generic.List<MinerWars.CommonLIB.AppCode.Networking.MyMwcUserDetail> userDetails, MinerWars.CommonLIB.AppCode.Networking.MyMwcSelectSectorRequestTypeEnum selectSandboxType, string findPlayerName);\n        \n        [System.ServiceModel.OperationContractAttribute(IsInitiating=false, AsyncPattern=true, Action=\"http://tempuri.org/IMySectorService/SelectSandbox\", ReplyAction=\"http://tempuri.org/IMySectorService/SelectSandboxResponse\")]\n        System.IAsyncResult BeginSelectSandbox(MinerWars.CommonLIB.AppCode.Networking.MyMwcSelectSectorRequestTypeEnum selectSandboxType, string findPlayerName, System.AsyncCallback callback, object asyncState);\n        \n        System.Collections.Generic.List<MinerWars.CommonLIB.AppCode.Networking.MyMwcSectorIdentifier> EndSelectSandbox(out System.Collections.Generic.List<MinerWars.CommonLIB.AppCode.Networking.MyMwcUserDetail> userDetails, System.IAsyncResult result);\n        \n        [System.ServiceModel.OperationContractAttribute(IsInitiating=false, Action=\"http://tempuri.org/IMySectorService/LoadCheckpoint\", ReplyAction=\"http://tempuri.org/IMySectorService/LoadCheckpointResponse\")]\n        [System.ServiceModel.FaultContractAttribute(typeof(MinerWars.CommonLIB.AppCode.Networking.Services.MyCustomFault), Action=\"http://tempuri.org/IMySectorService/LoadCheckpointMyCustomFaultFault\", Name=\"MyCustomFault\", Namespace=\"http://schemas.datacontract.org/2004/07/MinerWars.CommonLIB.AppCode.Networking.Se\" +\n            \"rvices\")]\n        byte[] LoadCheckpoint(MinerWars.CommonLIB.AppCode.Networking.MyMwcSectorTypeEnum sessionType, MinerWars.CommonLIB.AppCode.Networking.MyMwcSessionStateEnum sessionStartType, System.Nullable<int> userId, System.Nullable<MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int> sectorPosition, string checkpointName);\n        \n        [System.ServiceModel.OperationContractAttribute(IsInitiating=false, AsyncPattern=true, Action=\"http://tempuri.org/IMySectorService/LoadCheckpoint\", ReplyAction=\"http://tempuri.org/IMySectorService/LoadCheckpointResponse\")]\n        System.IAsyncResult BeginLoadCheckpoint(MinerWars.CommonLIB.AppCode.Networking.MyMwcSectorTypeEnum sessionType, MinerWars.CommonLIB.AppCode.Networking.MyMwcSessionStateEnum sessionStartType, System.Nullable<int> userId, System.Nullable<MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int> sectorPosition, string checkpointName, System.AsyncCallback callback, object asyncState);\n        \n        byte[] EndLoadCheckpoint(System.IAsyncResult result);\n        \n        [System.ServiceModel.OperationContractAttribute(IsInitiating=false, Action=\"http://tempuri.org/IMySectorService/LoadObjectGroups\", ReplyAction=\"http://tempuri.org/IMySectorService/LoadObjectGroupsResponse\")]\n        byte[] LoadObjectGroups(MinerWars.CommonLIB.AppCode.Networking.MyMwcSectorTypeEnum sessionType, System.Nullable<int> userId, MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int sectorPosition);\n        \n        [System.ServiceModel.OperationContractAttribute(IsInitiating=false, AsyncPattern=true, Action=\"http://tempuri.org/IMySectorService/LoadObjectGroups\", ReplyAction=\"http://tempuri.org/IMySectorService/LoadObjectGroupsResponse\")]\n        System.IAsyncResult BeginLoadObjectGroups(MinerWars.CommonLIB.AppCode.Networking.MyMwcSectorTypeEnum sessionType, System.Nullable<int> userId, MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int sectorPosition, System.AsyncCallback callback, object asyncState);\n        \n        byte[] EndLoadObjectGroups(System.IAsyncResult result);\n        \n        [System.ServiceModel.OperationContractAttribute(IsInitiating=false, Action=\"http://tempuri.org/IMySectorService/SaveCheckpoint\", ReplyAction=\"http://tempuri.org/IMySectorService/SaveCheckpointResponse\")]\n        [System.ServiceModel.FaultContractAttribute(typeof(MinerWars.CommonLIB.AppCode.Networking.Services.MyCustomFault), Action=\"http://tempuri.org/IMySectorService/SaveCheckpointMyCustomFaultFault\", Name=\"MyCustomFault\", Namespace=\"http://schemas.datacontract.org/2004/07/MinerWars.CommonLIB.AppCode.Networking.Se\" +\n            \"rvices\")]\n        void SaveCheckpoint(byte[] checkpoint, bool savePlayer);\n        \n        [System.ServiceModel.OperationContractAttribute(IsInitiating=false, AsyncPattern=true, Action=\"http://tempuri.org/IMySectorService/SaveCheckpoint\", ReplyAction=\"http://tempuri.org/IMySectorService/SaveCheckpointResponse\")]\n        System.IAsyncResult BeginSaveCheckpoint(byte[] checkpoint, bool savePlayer, System.AsyncCallback callback, object asyncState);\n        \n        void EndSaveCheckpoint(System.IAsyncResult result);\n        \n        [System.ServiceModel.OperationContractAttribute(IsInitiating=false, Action=\"http://tempuri.org/IMySectorService/TravelToSector\", ReplyAction=\"http://tempuri.org/IMySectorService/TravelToSectorResponse\")]\n        byte[] TravelToSector(out VRageMath.Vector3 newShipPosition, MinerWars.CommonLIB.AppCode.Networking.MyMwcTravelTypeEnum travelType, MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int targetSector, VRageMath.Vector3 currentShipPosition, int currentSectorVersion);\n        \n        [System.ServiceModel.OperationContractAttribute(IsInitiating=false, AsyncPattern=true, Action=\"http://tempuri.org/IMySectorService/TravelToSector\", ReplyAction=\"http://tempuri.org/IMySectorService/TravelToSectorResponse\")]\n        System.IAsyncResult BeginTravelToSector(MinerWars.CommonLIB.AppCode.Networking.MyMwcTravelTypeEnum travelType, MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int targetSector, VRageMath.Vector3 currentShipPosition, int currentSectorVersion, System.AsyncCallback callback, object asyncState);\n        \n        byte[] EndTravelToSector(out VRageMath.Vector3 newShipPosition, System.IAsyncResult result);\n        \n        [System.ServiceModel.OperationContractAttribute(IsInitiating=false, Action=\"http://tempuri.org/IMySectorService/LeaveSector\", ReplyAction=\"http://tempuri.org/IMySectorService/LeaveSectorResponse\")]\n        void LeaveSector(MinerWars.CommonLIB.AppCode.Networking.MyMwcLeaveSectorReasonEnum reason);\n        \n        [System.ServiceModel.OperationContractAttribute(IsInitiating=false, AsyncPattern=true, Action=\"http://tempuri.org/IMySectorService/LeaveSector\", ReplyAction=\"http://tempuri.org/IMySectorService/LeaveSectorResponse\")]\n        System.IAsyncResult BeginLeaveSector(MinerWars.CommonLIB.AppCode.Networking.MyMwcLeaveSectorReasonEnum reason, System.AsyncCallback callback, object asyncState);\n        \n        void EndLeaveSector(System.IAsyncResult result);\n        \n        [System.ServiceModel.OperationContractAttribute(IsInitiating=false, Action=\"http://tempuri.org/IMySectorService/LoadSectorObjects\", ReplyAction=\"http://tempuri.org/IMySectorService/LoadSectorObjectsResponse\")]\n        [System.ServiceModel.FaultContractAttribute(typeof(MinerWars.CommonLIB.AppCode.Networking.Services.MyCustomFault), Action=\"http://tempuri.org/IMySectorService/LoadSectorObjectsMyCustomFaultFault\", Name=\"MyCustomFault\", Namespace=\"http://schemas.datacontract.org/2004/07/MinerWars.CommonLIB.AppCode.Networking.Se\" +\n            \"rvices\")]\n        byte[] LoadSectorObjects(string playerName, string sectorName, MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int sectorPosition);\n        \n        [System.ServiceModel.OperationContractAttribute(IsInitiating=false, AsyncPattern=true, Action=\"http://tempuri.org/IMySectorService/LoadSectorObjects\", ReplyAction=\"http://tempuri.org/IMySectorService/LoadSectorObjectsResponse\")]\n        System.IAsyncResult BeginLoadSectorObjects(string playerName, string sectorName, MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int sectorPosition, System.AsyncCallback callback, object asyncState);\n        \n        byte[] EndLoadSectorObjects(System.IAsyncResult result);\n        \n        [System.ServiceModel.OperationContractAttribute(Action=\"http://tempuri.org/IMySectorService/CheckAlive\", ReplyAction=\"http://tempuri.org/IMySectorService/CheckAliveResponse\")]\n        bool CheckAlive();\n        \n        [System.ServiceModel.OperationContractAttribute(AsyncPattern=true, Action=\"http://tempuri.org/IMySectorService/CheckAlive\", ReplyAction=\"http://tempuri.org/IMySectorService/CheckAliveResponse\")]\n        System.IAsyncResult BeginCheckAlive(System.AsyncCallback callback, object asyncState);\n        \n        bool EndCheckAlive(System.IAsyncResult result);\n        \n        [System.ServiceModel.OperationContractAttribute(Action=\"http://tempuri.org/IMySectorService/GetActiveUsers\", ReplyAction=\"http://tempuri.org/IMySectorService/GetActiveUsersResponse\")]\n        System.Collections.Generic.List<string> GetActiveUsers();\n        \n        [System.ServiceModel.OperationContractAttribute(AsyncPattern=true, Action=\"http://tempuri.org/IMySectorService/GetActiveUsers\", ReplyAction=\"http://tempuri.org/IMySectorService/GetActiveUsersResponse\")]\n        System.IAsyncResult BeginGetActiveUsers(System.AsyncCallback callback, object asyncState);\n        \n        System.Collections.Generic.List<string> EndGetActiveUsers(System.IAsyncResult result);\n        \n        [System.ServiceModel.OperationContractAttribute(Action=\"http://tempuri.org/IMySectorService/AnnounceShutdown\", ReplyAction=\"http://tempuri.org/IMySectorService/AnnounceShutdownResponse\")]\n        int AnnounceShutdown(System.TimeSpan timeToShutdown, System.TimeSpan shutdownLength, string message);\n        \n        [System.ServiceModel.OperationContractAttribute(AsyncPattern=true, Action=\"http://tempuri.org/IMySectorService/AnnounceShutdown\", ReplyAction=\"http://tempuri.org/IMySectorService/AnnounceShutdownResponse\")]\n        System.IAsyncResult BeginAnnounceShutdown(System.TimeSpan timeToShutdown, System.TimeSpan shutdownLength, string message, System.AsyncCallback callback, object asyncState);\n        \n        int EndAnnounceShutdown(System.IAsyncResult result);\n        \n        [System.ServiceModel.OperationContractAttribute(IsInitiating=false, Action=\"http://tempuri.org/IMySectorService/HarvestingFinished\", ReplyAction=\"http://tempuri.org/IMySectorService/HarvestingFinishedResponse\")]\n        void HarvestingFinished(MinerWars.CommonLIB.AppCode.Networking.MyMwcVoxelMaterialsEnum materialEnum, byte voxelContentHarvested);\n        \n        [System.ServiceModel.OperationContractAttribute(IsInitiating=false, AsyncPattern=true, Action=\"http://tempuri.org/IMySectorService/HarvestingFinished\", ReplyAction=\"http://tempuri.org/IMySectorService/HarvestingFinishedResponse\")]\n        System.IAsyncResult BeginHarvestingFinished(MinerWars.CommonLIB.AppCode.Networking.MyMwcVoxelMaterialsEnum materialEnum, byte voxelContentHarvested, System.AsyncCallback callback, object asyncState);\n        \n        void EndHarvestingFinished(System.IAsyncResult result);\n        \n        [System.ServiceModel.OperationContractAttribute(IsInitiating=false, Action=\"http://tempuri.org/IMySectorService/LoadSmallShipTemplates\", ReplyAction=\"http://tempuri.org/IMySectorService/LoadSmallShipTemplatesResponse\")]\n        byte[] LoadSmallShipTemplates();\n        \n        [System.ServiceModel.OperationContractAttribute(IsInitiating=false, AsyncPattern=true, Action=\"http://tempuri.org/IMySectorService/LoadSmallShipTemplates\", ReplyAction=\"http://tempuri.org/IMySectorService/LoadSmallShipTemplatesResponse\")]\n        System.IAsyncResult BeginLoadSmallShipTemplates(System.AsyncCallback callback, object asyncState);\n        \n        byte[] EndLoadSmallShipTemplates(System.IAsyncResult result);\n        \n        [System.ServiceModel.OperationContractAttribute(IsInitiating=false, Action=\"http://tempuri.org/IMySectorService/SaveSmallShipTemplates\", ReplyAction=\"http://tempuri.org/IMySectorService/SaveSmallShipTemplatesResponse\")]\n        void SaveSmallShipTemplates(byte[] smallShipTemplates);\n        \n        [System.ServiceModel.OperationContractAttribute(IsInitiating=false, AsyncPattern=true, Action=\"http://tempuri.org/IMySectorService/SaveSmallShipTemplates\", ReplyAction=\"http://tempuri.org/IMySectorService/SaveSmallShipTemplatesResponse\")]\n        System.IAsyncResult BeginSaveSmallShipTemplates(byte[] smallShipTemplates, System.AsyncCallback callback, object asyncState);\n        \n        void EndSaveSmallShipTemplates(System.IAsyncResult result);\n        \n        [System.ServiceModel.OperationContractAttribute(IsInitiating=false, Action=\"http://tempuri.org/IMySectorService/NewGame\", ReplyAction=\"http://tempuri.org/IMySectorService/NewGameResponse\")]\n        byte[] NewGame(System.Nullable<MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int> startSector);\n        \n        [System.ServiceModel.OperationContractAttribute(IsInitiating=false, AsyncPattern=true, Action=\"http://tempuri.org/IMySectorService/NewGame\", ReplyAction=\"http://tempuri.org/IMySectorService/NewGameResponse\")]\n        System.IAsyncResult BeginNewGame(System.Nullable<MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int> startSector, System.AsyncCallback callback, object asyncState);\n        \n        byte[] EndNewGame(System.IAsyncResult result);\n        \n        [System.ServiceModel.OperationContractAttribute(IsInitiating=false, Action=\"http://tempuri.org/IMySectorService/LoadLastCheckpoint\", ReplyAction=\"http://tempuri.org/IMySectorService/LoadLastCheckpointResponse\")]\n        [System.ServiceModel.FaultContractAttribute(typeof(MinerWars.CommonLIB.AppCode.Networking.Services.MyCheckpointNotExistsFault), Action=\"http://tempuri.org/IMySectorService/LoadLastCheckpointMyCheckpointNotExistsFaultF\" +\n            \"ault\", Name=\"MyCheckpointNotExistsFault\", Namespace=\"http://schemas.datacontract.org/2004/07/MinerWars.CommonLIB.AppCode.Networking.Se\" +\n            \"rvices\")]\n        byte[] LoadLastCheckpoint();\n        \n        [System.ServiceModel.OperationContractAttribute(IsInitiating=false, AsyncPattern=true, Action=\"http://tempuri.org/IMySectorService/LoadLastCheckpoint\", ReplyAction=\"http://tempuri.org/IMySectorService/LoadLastCheckpointResponse\")]\n        System.IAsyncResult BeginLoadLastCheckpoint(System.AsyncCallback callback, object asyncState);\n        \n        byte[] EndLoadLastCheckpoint(System.IAsyncResult result);\n        \n        [System.ServiceModel.OperationContractAttribute(IsInitiating=false, Action=\"http://tempuri.org/IMySectorService/SaveLastCheckpoint\", ReplyAction=\"http://tempuri.org/IMySectorService/SaveLastCheckpointResponse\")]\n        void SaveLastCheckpoint(byte[] checkpointBuilder);\n        \n        [System.ServiceModel.OperationContractAttribute(IsInitiating=false, AsyncPattern=true, Action=\"http://tempuri.org/IMySectorService/SaveLastCheckpoint\", ReplyAction=\"http://tempuri.org/IMySectorService/SaveLastCheckpointResponse\")]\n        System.IAsyncResult BeginSaveLastCheckpoint(byte[] checkpointBuilder, System.AsyncCallback callback, object asyncState);\n        \n        void EndSaveLastCheckpoint(System.IAsyncResult result);\n        \n        [System.ServiceModel.OperationContractAttribute(IsInitiating=false, Action=\"http://tempuri.org/IMySectorService/LoadSandbox\", ReplyAction=\"http://tempuri.org/IMySectorService/LoadSandboxResponse\")]\n        byte[] LoadSandbox(MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int sectorPosition, System.Nullable<int> userId, System.Nullable<int> clientSectorVersion);\n        \n        [System.ServiceModel.OperationContractAttribute(IsInitiating=false, AsyncPattern=true, Action=\"http://tempuri.org/IMySectorService/LoadSandbox\", ReplyAction=\"http://tempuri.org/IMySectorService/LoadSandboxResponse\")]\n        System.IAsyncResult BeginLoadSandbox(MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int sectorPosition, System.Nullable<int> userId, System.Nullable<int> clientSectorVersion, System.AsyncCallback callback, object asyncState);\n        \n        byte[] EndLoadSandbox(System.IAsyncResult result);\n        \n        [System.ServiceModel.OperationContractAttribute(IsInitiating=false, Action=\"http://tempuri.org/IMySectorService/LoadStoryEditor\", ReplyAction=\"http://tempuri.org/IMySectorService/LoadStoryEditorResponse\")]\n        byte[] LoadStoryEditor(MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int sectorPosition);\n        \n        [System.ServiceModel.OperationContractAttribute(IsInitiating=false, AsyncPattern=true, Action=\"http://tempuri.org/IMySectorService/LoadStoryEditor\", ReplyAction=\"http://tempuri.org/IMySectorService/LoadStoryEditorResponse\")]\n        System.IAsyncResult BeginLoadStoryEditor(MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int sectorPosition, System.AsyncCallback callback, object asyncState);\n        \n        byte[] EndLoadStoryEditor(System.IAsyncResult result);\n        \n        [System.ServiceModel.OperationContractAttribute(IsInitiating=false, Action=\"http://tempuri.org/IMySectorService/SaveStoryEditor\", ReplyAction=\"http://tempuri.org/IMySectorService/SaveStoryEditorResponse\")]\n        void SaveStoryEditor(byte[] sectorObjectBuilder);\n        \n        [System.ServiceModel.OperationContractAttribute(IsInitiating=false, AsyncPattern=true, Action=\"http://tempuri.org/IMySectorService/SaveStoryEditor\", ReplyAction=\"http://tempuri.org/IMySectorService/SaveStoryEditorResponse\")]\n        System.IAsyncResult BeginSaveStoryEditor(byte[] sectorObjectBuilder, System.AsyncCallback callback, object asyncState);\n        \n        void EndSaveStoryEditor(System.IAsyncResult result);\n        \n        [System.ServiceModel.OperationContractAttribute(IsInitiating=false, Action=\"http://tempuri.org/IMySectorService/LoadSandboxEditor\", ReplyAction=\"http://tempuri.org/IMySectorService/LoadSandboxEditorResponse\")]\n        byte[] LoadSandboxEditor(MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int sectorPosition, System.Nullable<int> clientSectorVersion);\n        \n        [System.ServiceModel.OperationContractAttribute(IsInitiating=false, AsyncPattern=true, Action=\"http://tempuri.org/IMySectorService/LoadSandboxEditor\", ReplyAction=\"http://tempuri.org/IMySectorService/LoadSandboxEditorResponse\")]\n        System.IAsyncResult BeginLoadSandboxEditor(MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int sectorPosition, System.Nullable<int> clientSectorVersion, System.AsyncCallback callback, object asyncState);\n        \n        byte[] EndLoadSandboxEditor(System.IAsyncResult result);\n        \n        [System.ServiceModel.OperationContractAttribute(IsInitiating=false, Action=\"http://tempuri.org/IMySectorService/SaveSandboxEditor\", ReplyAction=\"http://tempuri.org/IMySectorService/SaveSandboxEditorResponse\")]\n        void SaveSandboxEditor(byte[] sectorObjectBuilder);\n        \n        [System.ServiceModel.OperationContractAttribute(IsInitiating=false, AsyncPattern=true, Action=\"http://tempuri.org/IMySectorService/SaveSandboxEditor\", ReplyAction=\"http://tempuri.org/IMySectorService/SaveSandboxEditorResponse\")]\n        System.IAsyncResult BeginSaveSandboxEditor(byte[] sectorObjectBuilder, System.AsyncCallback callback, object asyncState);\n        \n        void EndSaveSandboxEditor(System.IAsyncResult result);\n        \n        [System.ServiceModel.OperationContractAttribute(IsInitiating=false, Action=\"http://tempuri.org/IMySectorService/LoadSector\", ReplyAction=\"http://tempuri.org/IMySectorService/LoadSectorResponse\")]\n        byte[] LoadSector();\n        \n        [System.ServiceModel.OperationContractAttribute(IsInitiating=false, AsyncPattern=true, Action=\"http://tempuri.org/IMySectorService/LoadSector\", ReplyAction=\"http://tempuri.org/IMySectorService/LoadSectorResponse\")]\n        System.IAsyncResult BeginLoadSector(System.AsyncCallback callback, object asyncState);\n        \n        byte[] EndLoadSector(System.IAsyncResult result);\n        \n        [System.ServiceModel.OperationContractAttribute(IsInitiating=false, Action=\"http://tempuri.org/IMySectorService/Travel\", ReplyAction=\"http://tempuri.org/IMySectorService/TravelResponse\")]\n        byte[] Travel(MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int targetSector, System.Nullable<int> clientSectorVersion);\n        \n        [System.ServiceModel.OperationContractAttribute(IsInitiating=false, AsyncPattern=true, Action=\"http://tempuri.org/IMySectorService/Travel\", ReplyAction=\"http://tempuri.org/IMySectorService/TravelResponse\")]\n        System.IAsyncResult BeginTravel(MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int targetSector, System.Nullable<int> clientSectorVersion, System.AsyncCallback callback, object asyncState);\n        \n        byte[] EndTravel(System.IAsyncResult result);\n        \n        [System.ServiceModel.OperationContractAttribute(IsInitiating=false, Action=\"http://tempuri.org/IMySectorService/LoadSectorGroups\", ReplyAction=\"http://tempuri.org/IMySectorService/LoadSectorGroupsResponse\")]\n        byte[] LoadSectorGroups(MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int sectorPosition, System.Nullable<int> clientSectorVersion);\n        \n        [System.ServiceModel.OperationContractAttribute(IsInitiating=false, AsyncPattern=true, Action=\"http://tempuri.org/IMySectorService/LoadSectorGroups\", ReplyAction=\"http://tempuri.org/IMySectorService/LoadSectorGroupsResponse\")]\n        System.IAsyncResult BeginLoadSectorGroups(MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int sectorPosition, System.Nullable<int> clientSectorVersion, System.AsyncCallback callback, object asyncState);\n        \n        byte[] EndLoadSectorGroups(System.IAsyncResult result);\n    }\n    \n    [System.CodeDom.Compiler.GeneratedCodeAttribute(\"System.ServiceModel\", \"4.0.0.0\")]\n    public interface IMySectorServiceCallback {\n        \n        [System.ServiceModel.OperationContractAttribute(IsOneWay=true, Action=\"http://tempuri.org/IMySectorService/NotifyShutdown\")]\n        void NotifyShutdown(System.TimeSpan shutdownIn, System.TimeSpan shutdownLength, string shutdownMessage);\n        \n        [System.ServiceModel.OperationContractAttribute(IsOneWay=true, AsyncPattern=true, Action=\"http://tempuri.org/IMySectorService/NotifyShutdown\")]\n        System.IAsyncResult BeginNotifyShutdown(System.TimeSpan shutdownIn, System.TimeSpan shutdownLength, string shutdownMessage, System.AsyncCallback callback, object asyncState);\n        \n        void EndNotifyShutdown(System.IAsyncResult result);\n    }\n    \n    [System.CodeDom.Compiler.GeneratedCodeAttribute(\"System.ServiceModel\", \"4.0.0.0\")]\n    public interface IMySectorServiceChannel : MinerWars.AppCode.Networking.SectorService.IMySectorService, System.ServiceModel.IClientChannel {\n    }\n    \n    [System.Diagnostics.DebuggerStepThroughAttribute()]\n    [System.CodeDom.Compiler.GeneratedCodeAttribute(\"System.ServiceModel\", \"4.0.0.0\")]\n    public partial class GetGameMoneyCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {\n        \n        private object[] results;\n        \n        public GetGameMoneyCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : \n                base(exception, cancelled, userState) {\n            this.results = results;\n        }\n        \n        public decimal Result {\n            get {\n                base.RaiseExceptionIfNecessary();\n                return ((decimal)(this.results[0]));\n            }\n        }\n    }\n    \n    [System.Diagnostics.DebuggerStepThroughAttribute()]\n    [System.CodeDom.Compiler.GeneratedCodeAttribute(\"System.ServiceModel\", \"4.0.0.0\")]\n    public partial class LoadExportInfoCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {\n        \n        private object[] results;\n        \n        public LoadExportInfoCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : \n                base(exception, cancelled, userState) {\n            this.results = results;\n        }\n        \n        public System.Collections.Generic.List<MinerWars.AppCode.Networking.SectorService.ExportInfo> Result {\n            get {\n                base.RaiseExceptionIfNecessary();\n                return ((System.Collections.Generic.List<MinerWars.AppCode.Networking.SectorService.ExportInfo>)(this.results[0]));\n            }\n        }\n    }\n    \n    [System.Diagnostics.DebuggerStepThroughAttribute()]\n    [System.CodeDom.Compiler.GeneratedCodeAttribute(\"System.ServiceModel\", \"4.0.0.0\")]\n    public partial class ExportGlobalDataCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {\n        \n        private object[] results;\n        \n        public ExportGlobalDataCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : \n                base(exception, cancelled, userState) {\n            this.results = results;\n        }\n        \n        public byte[] storyCheckpoint {\n            get {\n                base.RaiseExceptionIfNecessary();\n                return ((byte[])(this.results[0]));\n            }\n        }\n        \n        public byte[] sandboxCheckpoint {\n            get {\n                base.RaiseExceptionIfNecessary();\n                return ((byte[])(this.results[1]));\n            }\n        }\n        \n        public byte[] Result {\n            get {\n                base.RaiseExceptionIfNecessary();\n                return ((byte[])(this.results[2]));\n            }\n        }\n    }\n    \n    [System.Diagnostics.DebuggerStepThroughAttribute()]\n    [System.CodeDom.Compiler.GeneratedCodeAttribute(\"System.ServiceModel\", \"4.0.0.0\")]\n    public partial class ExportSectorCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {\n        \n        private object[] results;\n        \n        public ExportSectorCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : \n                base(exception, cancelled, userState) {\n            this.results = results;\n        }\n        \n        public byte[] Result {\n            get {\n                base.RaiseExceptionIfNecessary();\n                return ((byte[])(this.results[0]));\n            }\n        }\n    }\n    \n    [System.Diagnostics.DebuggerStepThroughAttribute()]\n    [System.CodeDom.Compiler.GeneratedCodeAttribute(\"System.ServiceModel\", \"4.0.0.0\")]\n    public partial class LoginCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {\n        \n        private object[] results;\n        \n        public LoginCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : \n                base(exception, cancelled, userState) {\n            this.results = results;\n        }\n        \n        public MinerWars.AppCode.Networking.SectorService.MyUserInfo Result {\n            get {\n                base.RaiseExceptionIfNecessary();\n                return ((MinerWars.AppCode.Networking.SectorService.MyUserInfo)(this.results[0]));\n            }\n        }\n    }\n    \n    [System.Diagnostics.DebuggerStepThroughAttribute()]\n    [System.CodeDom.Compiler.GeneratedCodeAttribute(\"System.ServiceModel\", \"4.0.0.0\")]\n    public partial class LoadSectorIdentifiersCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {\n        \n        private object[] results;\n        \n        public LoadSectorIdentifiersCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : \n                base(exception, cancelled, userState) {\n            this.results = results;\n        }\n        \n        public System.Collections.Generic.List<MinerWars.CommonLIB.AppCode.Networking.MyMwcSectorIdentifier> Result {\n            get {\n                base.RaiseExceptionIfNecessary();\n                return ((System.Collections.Generic.List<MinerWars.CommonLIB.AppCode.Networking.MyMwcSectorIdentifier>)(this.results[0]));\n            }\n        }\n    }\n    \n    [System.Diagnostics.DebuggerStepThroughAttribute()]\n    [System.CodeDom.Compiler.GeneratedCodeAttribute(\"System.ServiceModel\", \"4.0.0.0\")]\n    public partial class LoadUserSectorIdentifiersCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {\n        \n        private object[] results;\n        \n        public LoadUserSectorIdentifiersCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : \n                base(exception, cancelled, userState) {\n            this.results = results;\n        }\n        \n        public System.Collections.Generic.List<MinerWars.CommonLIB.AppCode.Networking.MyMwcSectorIdentifier> Result {\n            get {\n                base.RaiseExceptionIfNecessary();\n                return ((System.Collections.Generic.List<MinerWars.CommonLIB.AppCode.Networking.MyMwcSectorIdentifier>)(this.results[0]));\n            }\n        }\n    }\n    \n    [System.Diagnostics.DebuggerStepThroughAttribute()]\n    [System.CodeDom.Compiler.GeneratedCodeAttribute(\"System.ServiceModel\", \"4.0.0.0\")]\n    public partial class SelectSandboxCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {\n        \n        private object[] results;\n        \n        public SelectSandboxCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : \n                base(exception, cancelled, userState) {\n            this.results = results;\n        }\n        \n        public System.Collections.Generic.List<MinerWars.CommonLIB.AppCode.Networking.MyMwcUserDetail> userDetails {\n            get {\n                base.RaiseExceptionIfNecessary();\n                return ((System.Collections.Generic.List<MinerWars.CommonLIB.AppCode.Networking.MyMwcUserDetail>)(this.results[0]));\n            }\n        }\n        \n        public System.Collections.Generic.List<MinerWars.CommonLIB.AppCode.Networking.MyMwcSectorIdentifier> Result {\n            get {\n                base.RaiseExceptionIfNecessary();\n                return ((System.Collections.Generic.List<MinerWars.CommonLIB.AppCode.Networking.MyMwcSectorIdentifier>)(this.results[1]));\n            }\n        }\n    }\n    \n    [System.Diagnostics.DebuggerStepThroughAttribute()]\n    [System.CodeDom.Compiler.GeneratedCodeAttribute(\"System.ServiceModel\", \"4.0.0.0\")]\n    public partial class LoadCheckpointCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {\n        \n        private object[] results;\n        \n        public LoadCheckpointCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : \n                base(exception, cancelled, userState) {\n            this.results = results;\n        }\n        \n        public byte[] Result {\n            get {\n                base.RaiseExceptionIfNecessary();\n                return ((byte[])(this.results[0]));\n            }\n        }\n    }\n    \n    [System.Diagnostics.DebuggerStepThroughAttribute()]\n    [System.CodeDom.Compiler.GeneratedCodeAttribute(\"System.ServiceModel\", \"4.0.0.0\")]\n    public partial class LoadObjectGroupsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {\n        \n        private object[] results;\n        \n        public LoadObjectGroupsCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : \n                base(exception, cancelled, userState) {\n            this.results = results;\n        }\n        \n        public byte[] Result {\n            get {\n                base.RaiseExceptionIfNecessary();\n                return ((byte[])(this.results[0]));\n            }\n        }\n    }\n    \n    [System.Diagnostics.DebuggerStepThroughAttribute()]\n    [System.CodeDom.Compiler.GeneratedCodeAttribute(\"System.ServiceModel\", \"4.0.0.0\")]\n    public partial class TravelToSectorCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {\n        \n        private object[] results;\n        \n        public TravelToSectorCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : \n                base(exception, cancelled, userState) {\n            this.results = results;\n        }\n        \n        public VRageMath.Vector3 newShipPosition {\n            get {\n                base.RaiseExceptionIfNecessary();\n                return ((VRageMath.Vector3)(this.results[0]));\n            }\n        }\n        \n        public byte[] Result {\n            get {\n                base.RaiseExceptionIfNecessary();\n                return ((byte[])(this.results[1]));\n            }\n        }\n    }\n    \n    [System.Diagnostics.DebuggerStepThroughAttribute()]\n    [System.CodeDom.Compiler.GeneratedCodeAttribute(\"System.ServiceModel\", \"4.0.0.0\")]\n    public partial class LoadSectorObjectsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {\n        \n        private object[] results;\n        \n        public LoadSectorObjectsCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : \n                base(exception, cancelled, userState) {\n            this.results = results;\n        }\n        \n        public byte[] Result {\n            get {\n                base.RaiseExceptionIfNecessary();\n                return ((byte[])(this.results[0]));\n            }\n        }\n    }\n    \n    [System.Diagnostics.DebuggerStepThroughAttribute()]\n    [System.CodeDom.Compiler.GeneratedCodeAttribute(\"System.ServiceModel\", \"4.0.0.0\")]\n    public partial class CheckAliveCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {\n        \n        private object[] results;\n        \n        public CheckAliveCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : \n                base(exception, cancelled, userState) {\n            this.results = results;\n        }\n        \n        public bool Result {\n            get {\n                base.RaiseExceptionIfNecessary();\n                return ((bool)(this.results[0]));\n            }\n        }\n    }\n    \n    [System.Diagnostics.DebuggerStepThroughAttribute()]\n    [System.CodeDom.Compiler.GeneratedCodeAttribute(\"System.ServiceModel\", \"4.0.0.0\")]\n    public partial class GetActiveUsersCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {\n        \n        private object[] results;\n        \n        public GetActiveUsersCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : \n                base(exception, cancelled, userState) {\n            this.results = results;\n        }\n        \n        public System.Collections.Generic.List<string> Result {\n            get {\n                base.RaiseExceptionIfNecessary();\n                return ((System.Collections.Generic.List<string>)(this.results[0]));\n            }\n        }\n    }\n    \n    [System.Diagnostics.DebuggerStepThroughAttribute()]\n    [System.CodeDom.Compiler.GeneratedCodeAttribute(\"System.ServiceModel\", \"4.0.0.0\")]\n    public partial class AnnounceShutdownCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {\n        \n        private object[] results;\n        \n        public AnnounceShutdownCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : \n                base(exception, cancelled, userState) {\n            this.results = results;\n        }\n        \n        public int Result {\n            get {\n                base.RaiseExceptionIfNecessary();\n                return ((int)(this.results[0]));\n            }\n        }\n    }\n    \n    [System.Diagnostics.DebuggerStepThroughAttribute()]\n    [System.CodeDom.Compiler.GeneratedCodeAttribute(\"System.ServiceModel\", \"4.0.0.0\")]\n    public partial class LoadSmallShipTemplatesCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {\n        \n        private object[] results;\n        \n        public LoadSmallShipTemplatesCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : \n                base(exception, cancelled, userState) {\n            this.results = results;\n        }\n        \n        public byte[] Result {\n            get {\n                base.RaiseExceptionIfNecessary();\n                return ((byte[])(this.results[0]));\n            }\n        }\n    }\n    \n    [System.Diagnostics.DebuggerStepThroughAttribute()]\n    [System.CodeDom.Compiler.GeneratedCodeAttribute(\"System.ServiceModel\", \"4.0.0.0\")]\n    public partial class NewGameCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {\n        \n        private object[] results;\n        \n        public NewGameCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : \n                base(exception, cancelled, userState) {\n            this.results = results;\n        }\n        \n        public byte[] Result {\n            get {\n                base.RaiseExceptionIfNecessary();\n                return ((byte[])(this.results[0]));\n            }\n        }\n    }\n    \n    [System.Diagnostics.DebuggerStepThroughAttribute()]\n    [System.CodeDom.Compiler.GeneratedCodeAttribute(\"System.ServiceModel\", \"4.0.0.0\")]\n    public partial class LoadLastCheckpointCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {\n        \n        private object[] results;\n        \n        public LoadLastCheckpointCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : \n                base(exception, cancelled, userState) {\n            this.results = results;\n        }\n        \n        public byte[] Result {\n            get {\n                base.RaiseExceptionIfNecessary();\n                return ((byte[])(this.results[0]));\n            }\n        }\n    }\n    \n    [System.Diagnostics.DebuggerStepThroughAttribute()]\n    [System.CodeDom.Compiler.GeneratedCodeAttribute(\"System.ServiceModel\", \"4.0.0.0\")]\n    public partial class LoadSandboxCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {\n        \n        private object[] results;\n        \n        public LoadSandboxCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : \n                base(exception, cancelled, userState) {\n            this.results = results;\n        }\n        \n        public byte[] Result {\n            get {\n                base.RaiseExceptionIfNecessary();\n                return ((byte[])(this.results[0]));\n            }\n        }\n    }\n    \n    [System.Diagnostics.DebuggerStepThroughAttribute()]\n    [System.CodeDom.Compiler.GeneratedCodeAttribute(\"System.ServiceModel\", \"4.0.0.0\")]\n    public partial class LoadStoryEditorCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {\n        \n        private object[] results;\n        \n        public LoadStoryEditorCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : \n                base(exception, cancelled, userState) {\n            this.results = results;\n        }\n        \n        public byte[] Result {\n            get {\n                base.RaiseExceptionIfNecessary();\n                return ((byte[])(this.results[0]));\n            }\n        }\n    }\n    \n    [System.Diagnostics.DebuggerStepThroughAttribute()]\n    [System.CodeDom.Compiler.GeneratedCodeAttribute(\"System.ServiceModel\", \"4.0.0.0\")]\n    public partial class LoadSandboxEditorCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {\n        \n        private object[] results;\n        \n        public LoadSandboxEditorCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : \n                base(exception, cancelled, userState) {\n            this.results = results;\n        }\n        \n        public byte[] Result {\n            get {\n                base.RaiseExceptionIfNecessary();\n                return ((byte[])(this.results[0]));\n            }\n        }\n    }\n    \n    [System.Diagnostics.DebuggerStepThroughAttribute()]\n    [System.CodeDom.Compiler.GeneratedCodeAttribute(\"System.ServiceModel\", \"4.0.0.0\")]\n    public partial class LoadSectorCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {\n        \n        private object[] results;\n        \n        public LoadSectorCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : \n                base(exception, cancelled, userState) {\n            this.results = results;\n        }\n        \n        public byte[] Result {\n            get {\n                base.RaiseExceptionIfNecessary();\n                return ((byte[])(this.results[0]));\n            }\n        }\n    }\n    \n    [System.Diagnostics.DebuggerStepThroughAttribute()]\n    [System.CodeDom.Compiler.GeneratedCodeAttribute(\"System.ServiceModel\", \"4.0.0.0\")]\n    public partial class TravelCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {\n        \n        private object[] results;\n        \n        public TravelCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : \n                base(exception, cancelled, userState) {\n            this.results = results;\n        }\n        \n        public byte[] Result {\n            get {\n                base.RaiseExceptionIfNecessary();\n                return ((byte[])(this.results[0]));\n            }\n        }\n    }\n    \n    [System.Diagnostics.DebuggerStepThroughAttribute()]\n    [System.CodeDom.Compiler.GeneratedCodeAttribute(\"System.ServiceModel\", \"4.0.0.0\")]\n    public partial class LoadSectorGroupsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {\n        \n        private object[] results;\n        \n        public LoadSectorGroupsCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : \n                base(exception, cancelled, userState) {\n            this.results = results;\n        }\n        \n        public byte[] Result {\n            get {\n                base.RaiseExceptionIfNecessary();\n                return ((byte[])(this.results[0]));\n            }\n        }\n    }\n    \n    [System.Diagnostics.DebuggerStepThroughAttribute()]\n    [System.CodeDom.Compiler.GeneratedCodeAttribute(\"System.ServiceModel\", \"4.0.0.0\")]\n    public partial class MySectorServiceClient : System.ServiceModel.DuplexClientBase<MinerWars.AppCode.Networking.SectorService.IMySectorService>, MinerWars.AppCode.Networking.SectorService.IMySectorService {\n        \n        private BeginOperationDelegate onBeginGetGameMoneyDelegate;\n        \n        private EndOperationDelegate onEndGetGameMoneyDelegate;\n        \n        private System.Threading.SendOrPostCallback onGetGameMoneyCompletedDelegate;\n        \n        private BeginOperationDelegate onBeginUpdateGameMoneyDelegate;\n        \n        private EndOperationDelegate onEndUpdateGameMoneyDelegate;\n        \n        private System.Threading.SendOrPostCallback onUpdateGameMoneyCompletedDelegate;\n        \n        private BeginOperationDelegate onBeginLoadExportInfoDelegate;\n        \n        private EndOperationDelegate onEndLoadExportInfoDelegate;\n        \n        private System.Threading.SendOrPostCallback onLoadExportInfoCompletedDelegate;\n        \n        private BeginOperationDelegate onBeginExportGlobalDataDelegate;\n        \n        private EndOperationDelegate onEndExportGlobalDataDelegate;\n        \n        private System.Threading.SendOrPostCallback onExportGlobalDataCompletedDelegate;\n        \n        private BeginOperationDelegate onBeginExportSectorDelegate;\n        \n        private EndOperationDelegate onEndExportSectorDelegate;\n        \n        private System.Threading.SendOrPostCallback onExportSectorCompletedDelegate;\n        \n        private BeginOperationDelegate onBeginLoginDelegate;\n        \n        private EndOperationDelegate onEndLoginDelegate;\n        \n        private System.Threading.SendOrPostCallback onLoginCompletedDelegate;\n        \n        private BeginOperationDelegate onBeginLogoutDelegate;\n        \n        private EndOperationDelegate onEndLogoutDelegate;\n        \n        private System.Threading.SendOrPostCallback onLogoutCompletedDelegate;\n        \n        private BeginOperationDelegate onBeginLoadSectorIdentifiersDelegate;\n        \n        private EndOperationDelegate onEndLoadSectorIdentifiersDelegate;\n        \n        private System.Threading.SendOrPostCallback onLoadSectorIdentifiersCompletedDelegate;\n        \n        private BeginOperationDelegate onBeginLoadUserSectorIdentifiersDelegate;\n        \n        private EndOperationDelegate onEndLoadUserSectorIdentifiersDelegate;\n        \n        private System.Threading.SendOrPostCallback onLoadUserSectorIdentifiersCompletedDelegate;\n        \n        private BeginOperationDelegate onBeginSelectSandboxDelegate;\n        \n        private EndOperationDelegate onEndSelectSandboxDelegate;\n        \n        private System.Threading.SendOrPostCallback onSelectSandboxCompletedDelegate;\n        \n        private BeginOperationDelegate onBeginLoadCheckpointDelegate;\n        \n        private EndOperationDelegate onEndLoadCheckpointDelegate;\n        \n        private System.Threading.SendOrPostCallback onLoadCheckpointCompletedDelegate;\n        \n        private BeginOperationDelegate onBeginLoadObjectGroupsDelegate;\n        \n        private EndOperationDelegate onEndLoadObjectGroupsDelegate;\n        \n        private System.Threading.SendOrPostCallback onLoadObjectGroupsCompletedDelegate;\n        \n        private BeginOperationDelegate onBeginSaveCheckpointDelegate;\n        \n        private EndOperationDelegate onEndSaveCheckpointDelegate;\n        \n        private System.Threading.SendOrPostCallback onSaveCheckpointCompletedDelegate;\n        \n        private BeginOperationDelegate onBeginTravelToSectorDelegate;\n        \n        private EndOperationDelegate onEndTravelToSectorDelegate;\n        \n        private System.Threading.SendOrPostCallback onTravelToSectorCompletedDelegate;\n        \n        private BeginOperationDelegate onBeginLeaveSectorDelegate;\n        \n        private EndOperationDelegate onEndLeaveSectorDelegate;\n        \n        private System.Threading.SendOrPostCallback onLeaveSectorCompletedDelegate;\n        \n        private BeginOperationDelegate onBeginLoadSectorObjectsDelegate;\n        \n        private EndOperationDelegate onEndLoadSectorObjectsDelegate;\n        \n        private System.Threading.SendOrPostCallback onLoadSectorObjectsCompletedDelegate;\n        \n        private BeginOperationDelegate onBeginCheckAliveDelegate;\n        \n        private EndOperationDelegate onEndCheckAliveDelegate;\n        \n        private System.Threading.SendOrPostCallback onCheckAliveCompletedDelegate;\n        \n        private BeginOperationDelegate onBeginGetActiveUsersDelegate;\n        \n        private EndOperationDelegate onEndGetActiveUsersDelegate;\n        \n        private System.Threading.SendOrPostCallback onGetActiveUsersCompletedDelegate;\n        \n        private BeginOperationDelegate onBeginAnnounceShutdownDelegate;\n        \n        private EndOperationDelegate onEndAnnounceShutdownDelegate;\n        \n        private System.Threading.SendOrPostCallback onAnnounceShutdownCompletedDelegate;\n        \n        private BeginOperationDelegate onBeginHarvestingFinishedDelegate;\n        \n        private EndOperationDelegate onEndHarvestingFinishedDelegate;\n        \n        private System.Threading.SendOrPostCallback onHarvestingFinishedCompletedDelegate;\n        \n        private BeginOperationDelegate onBeginLoadSmallShipTemplatesDelegate;\n        \n        private EndOperationDelegate onEndLoadSmallShipTemplatesDelegate;\n        \n        private System.Threading.SendOrPostCallback onLoadSmallShipTemplatesCompletedDelegate;\n        \n        private BeginOperationDelegate onBeginSaveSmallShipTemplatesDelegate;\n        \n        private EndOperationDelegate onEndSaveSmallShipTemplatesDelegate;\n        \n        private System.Threading.SendOrPostCallback onSaveSmallShipTemplatesCompletedDelegate;\n        \n        private BeginOperationDelegate onBeginNewGameDelegate;\n        \n        private EndOperationDelegate onEndNewGameDelegate;\n        \n        private System.Threading.SendOrPostCallback onNewGameCompletedDelegate;\n        \n        private BeginOperationDelegate onBeginLoadLastCheckpointDelegate;\n        \n        private EndOperationDelegate onEndLoadLastCheckpointDelegate;\n        \n        private System.Threading.SendOrPostCallback onLoadLastCheckpointCompletedDelegate;\n        \n        private BeginOperationDelegate onBeginSaveLastCheckpointDelegate;\n        \n        private EndOperationDelegate onEndSaveLastCheckpointDelegate;\n        \n        private System.Threading.SendOrPostCallback onSaveLastCheckpointCompletedDelegate;\n        \n        private BeginOperationDelegate onBeginLoadSandboxDelegate;\n        \n        private EndOperationDelegate onEndLoadSandboxDelegate;\n        \n        private System.Threading.SendOrPostCallback onLoadSandboxCompletedDelegate;\n        \n        private BeginOperationDelegate onBeginLoadStoryEditorDelegate;\n        \n        private EndOperationDelegate onEndLoadStoryEditorDelegate;\n        \n        private System.Threading.SendOrPostCallback onLoadStoryEditorCompletedDelegate;\n        \n        private BeginOperationDelegate onBeginSaveStoryEditorDelegate;\n        \n        private EndOperationDelegate onEndSaveStoryEditorDelegate;\n        \n        private System.Threading.SendOrPostCallback onSaveStoryEditorCompletedDelegate;\n        \n        private BeginOperationDelegate onBeginLoadSandboxEditorDelegate;\n        \n        private EndOperationDelegate onEndLoadSandboxEditorDelegate;\n        \n        private System.Threading.SendOrPostCallback onLoadSandboxEditorCompletedDelegate;\n        \n        private BeginOperationDelegate onBeginSaveSandboxEditorDelegate;\n        \n        private EndOperationDelegate onEndSaveSandboxEditorDelegate;\n        \n        private System.Threading.SendOrPostCallback onSaveSandboxEditorCompletedDelegate;\n        \n        private BeginOperationDelegate onBeginLoadSectorDelegate;\n        \n        private EndOperationDelegate onEndLoadSectorDelegate;\n        \n        private System.Threading.SendOrPostCallback onLoadSectorCompletedDelegate;\n        \n        private BeginOperationDelegate onBeginTravelDelegate;\n        \n        private EndOperationDelegate onEndTravelDelegate;\n        \n        private System.Threading.SendOrPostCallback onTravelCompletedDelegate;\n        \n        private BeginOperationDelegate onBeginLoadSectorGroupsDelegate;\n        \n        private EndOperationDelegate onEndLoadSectorGroupsDelegate;\n        \n        private System.Threading.SendOrPostCallback onLoadSectorGroupsCompletedDelegate;\n        \n        public MySectorServiceClient(System.ServiceModel.InstanceContext callbackInstance) : \n                base(callbackInstance) {\n        }\n        \n        public MySectorServiceClient(System.ServiceModel.InstanceContext callbackInstance, string endpointConfigurationName) : \n                base(callbackInstance, endpointConfigurationName) {\n        }\n        \n        public MySectorServiceClient(System.ServiceModel.InstanceContext callbackInstance, string endpointConfigurationName, string remoteAddress) : \n                base(callbackInstance, endpointConfigurationName, remoteAddress) {\n        }\n        \n        public MySectorServiceClient(System.ServiceModel.InstanceContext callbackInstance, string endpointConfigurationName, System.ServiceModel.EndpointAddress remoteAddress) : \n                base(callbackInstance, endpointConfigurationName, remoteAddress) {\n        }\n        \n        public MySectorServiceClient(System.ServiceModel.InstanceContext callbackInstance, System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) : \n                base(callbackInstance, binding, remoteAddress) {\n        }\n        \n        public event System.EventHandler<GetGameMoneyCompletedEventArgs> GetGameMoneyCompleted;\n        \n        public event System.EventHandler<System.ComponentModel.AsyncCompletedEventArgs> UpdateGameMoneyCompleted;\n        \n        public event System.EventHandler<LoadExportInfoCompletedEventArgs> LoadExportInfoCompleted;\n        \n        public event System.EventHandler<ExportGlobalDataCompletedEventArgs> ExportGlobalDataCompleted;\n        \n        public event System.EventHandler<ExportSectorCompletedEventArgs> ExportSectorCompleted;\n        \n        public event System.EventHandler<LoginCompletedEventArgs> LoginCompleted;\n        \n        public event System.EventHandler<System.ComponentModel.AsyncCompletedEventArgs> LogoutCompleted;\n        \n        public event System.EventHandler<LoadSectorIdentifiersCompletedEventArgs> LoadSectorIdentifiersCompleted;\n        \n        public event System.EventHandler<LoadUserSectorIdentifiersCompletedEventArgs> LoadUserSectorIdentifiersCompleted;\n        \n        public event System.EventHandler<SelectSandboxCompletedEventArgs> SelectSandboxCompleted;\n        \n        public event System.EventHandler<LoadCheckpointCompletedEventArgs> LoadCheckpointCompleted;\n        \n        public event System.EventHandler<LoadObjectGroupsCompletedEventArgs> LoadObjectGroupsCompleted;\n        \n        public event System.EventHandler<System.ComponentModel.AsyncCompletedEventArgs> SaveCheckpointCompleted;\n        \n        public event System.EventHandler<TravelToSectorCompletedEventArgs> TravelToSectorCompleted;\n        \n        public event System.EventHandler<System.ComponentModel.AsyncCompletedEventArgs> LeaveSectorCompleted;\n        \n        public event System.EventHandler<LoadSectorObjectsCompletedEventArgs> LoadSectorObjectsCompleted;\n        \n        public event System.EventHandler<CheckAliveCompletedEventArgs> CheckAliveCompleted;\n        \n        public event System.EventHandler<GetActiveUsersCompletedEventArgs> GetActiveUsersCompleted;\n        \n        public event System.EventHandler<AnnounceShutdownCompletedEventArgs> AnnounceShutdownCompleted;\n        \n        public event System.EventHandler<System.ComponentModel.AsyncCompletedEventArgs> HarvestingFinishedCompleted;\n        \n        public event System.EventHandler<LoadSmallShipTemplatesCompletedEventArgs> LoadSmallShipTemplatesCompleted;\n        \n        public event System.EventHandler<System.ComponentModel.AsyncCompletedEventArgs> SaveSmallShipTemplatesCompleted;\n        \n        public event System.EventHandler<NewGameCompletedEventArgs> NewGameCompleted;\n        \n        public event System.EventHandler<LoadLastCheckpointCompletedEventArgs> LoadLastCheckpointCompleted;\n        \n        public event System.EventHandler<System.ComponentModel.AsyncCompletedEventArgs> SaveLastCheckpointCompleted;\n        \n        public event System.EventHandler<LoadSandboxCompletedEventArgs> LoadSandboxCompleted;\n        \n        public event System.EventHandler<LoadStoryEditorCompletedEventArgs> LoadStoryEditorCompleted;\n        \n        public event System.EventHandler<System.ComponentModel.AsyncCompletedEventArgs> SaveStoryEditorCompleted;\n        \n        public event System.EventHandler<LoadSandboxEditorCompletedEventArgs> LoadSandboxEditorCompleted;\n        \n        public event System.EventHandler<System.ComponentModel.AsyncCompletedEventArgs> SaveSandboxEditorCompleted;\n        \n        public event System.EventHandler<LoadSectorCompletedEventArgs> LoadSectorCompleted;\n        \n        public event System.EventHandler<TravelCompletedEventArgs> TravelCompleted;\n        \n        public event System.EventHandler<LoadSectorGroupsCompletedEventArgs> LoadSectorGroupsCompleted;\n        \n        public decimal GetGameMoney() {\n            return base.Channel.GetGameMoney();\n        }\n        \n        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]\n        public System.IAsyncResult BeginGetGameMoney(System.AsyncCallback callback, object asyncState) {\n            return base.Channel.BeginGetGameMoney(callback, asyncState);\n        }\n        \n        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]\n        public decimal EndGetGameMoney(System.IAsyncResult result) {\n            return base.Channel.EndGetGameMoney(result);\n        }\n        \n        private System.IAsyncResult OnBeginGetGameMoney(object[] inValues, System.AsyncCallback callback, object asyncState) {\n            return this.BeginGetGameMoney(callback, asyncState);\n        }\n        \n        private object[] OnEndGetGameMoney(System.IAsyncResult result) {\n            decimal retVal = this.EndGetGameMoney(result);\n            return new object[] {\n                    retVal};\n        }\n        \n        private void OnGetGameMoneyCompleted(object state) {\n            if ((this.GetGameMoneyCompleted != null)) {\n                InvokeAsyncCompletedEventArgs e = ((InvokeAsyncCompletedEventArgs)(state));\n                this.GetGameMoneyCompleted(this, new GetGameMoneyCompletedEventArgs(e.Results, e.Error, e.Cancelled, e.UserState));\n            }\n        }\n        \n        public void GetGameMoneyAsync() {\n            this.GetGameMoneyAsync(null);\n        }\n        \n        public void GetGameMoneyAsync(object userState) {\n            if ((this.onBeginGetGameMoneyDelegate == null)) {\n                this.onBeginGetGameMoneyDelegate = new BeginOperationDelegate(this.OnBeginGetGameMoney);\n            }\n            if ((this.onEndGetGameMoneyDelegate == null)) {\n                this.onEndGetGameMoneyDelegate = new EndOperationDelegate(this.OnEndGetGameMoney);\n            }\n            if ((this.onGetGameMoneyCompletedDelegate == null)) {\n                this.onGetGameMoneyCompletedDelegate = new System.Threading.SendOrPostCallback(this.OnGetGameMoneyCompleted);\n            }\n            base.InvokeAsync(this.onBeginGetGameMoneyDelegate, null, this.onEndGetGameMoneyDelegate, this.onGetGameMoneyCompletedDelegate, userState);\n        }\n        \n        public void UpdateGameMoney(decimal moneyAdded) {\n            base.Channel.UpdateGameMoney(moneyAdded);\n        }\n        \n        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]\n        public System.IAsyncResult BeginUpdateGameMoney(decimal moneyAdded, System.AsyncCallback callback, object asyncState) {\n            return base.Channel.BeginUpdateGameMoney(moneyAdded, callback, asyncState);\n        }\n        \n        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]\n        public void EndUpdateGameMoney(System.IAsyncResult result) {\n            base.Channel.EndUpdateGameMoney(result);\n        }\n        \n        private System.IAsyncResult OnBeginUpdateGameMoney(object[] inValues, System.AsyncCallback callback, object asyncState) {\n            decimal moneyAdded = ((decimal)(inValues[0]));\n            return this.BeginUpdateGameMoney(moneyAdded, callback, asyncState);\n        }\n        \n        private object[] OnEndUpdateGameMoney(System.IAsyncResult result) {\n            this.EndUpdateGameMoney(result);\n            return null;\n        }\n        \n        private void OnUpdateGameMoneyCompleted(object state) {\n            if ((this.UpdateGameMoneyCompleted != null)) {\n                InvokeAsyncCompletedEventArgs e = ((InvokeAsyncCompletedEventArgs)(state));\n                this.UpdateGameMoneyCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(e.Error, e.Cancelled, e.UserState));\n            }\n        }\n        \n        public void UpdateGameMoneyAsync(decimal moneyAdded) {\n            this.UpdateGameMoneyAsync(moneyAdded, null);\n        }\n        \n        public void UpdateGameMoneyAsync(decimal moneyAdded, object userState) {\n            if ((this.onBeginUpdateGameMoneyDelegate == null)) {\n                this.onBeginUpdateGameMoneyDelegate = new BeginOperationDelegate(this.OnBeginUpdateGameMoney);\n            }\n            if ((this.onEndUpdateGameMoneyDelegate == null)) {\n                this.onEndUpdateGameMoneyDelegate = new EndOperationDelegate(this.OnEndUpdateGameMoney);\n            }\n            if ((this.onUpdateGameMoneyCompletedDelegate == null)) {\n                this.onUpdateGameMoneyCompletedDelegate = new System.Threading.SendOrPostCallback(this.OnUpdateGameMoneyCompleted);\n            }\n            base.InvokeAsync(this.onBeginUpdateGameMoneyDelegate, new object[] {\n                        moneyAdded}, this.onEndUpdateGameMoneyDelegate, this.onUpdateGameMoneyCompletedDelegate, userState);\n        }\n        \n        public System.Collections.Generic.List<MinerWars.AppCode.Networking.SectorService.ExportInfo> LoadExportInfo() {\n            return base.Channel.LoadExportInfo();\n        }\n        \n        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]\n        public System.IAsyncResult BeginLoadExportInfo(System.AsyncCallback callback, object asyncState) {\n            return base.Channel.BeginLoadExportInfo(callback, asyncState);\n        }\n        \n        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]\n        public System.Collections.Generic.List<MinerWars.AppCode.Networking.SectorService.ExportInfo> EndLoadExportInfo(System.IAsyncResult result) {\n            return base.Channel.EndLoadExportInfo(result);\n        }\n        \n        private System.IAsyncResult OnBeginLoadExportInfo(object[] inValues, System.AsyncCallback callback, object asyncState) {\n            return this.BeginLoadExportInfo(callback, asyncState);\n        }\n        \n        private object[] OnEndLoadExportInfo(System.IAsyncResult result) {\n            System.Collections.Generic.List<MinerWars.AppCode.Networking.SectorService.ExportInfo> retVal = this.EndLoadExportInfo(result);\n            return new object[] {\n                    retVal};\n        }\n        \n        private void OnLoadExportInfoCompleted(object state) {\n            if ((this.LoadExportInfoCompleted != null)) {\n                InvokeAsyncCompletedEventArgs e = ((InvokeAsyncCompletedEventArgs)(state));\n                this.LoadExportInfoCompleted(this, new LoadExportInfoCompletedEventArgs(e.Results, e.Error, e.Cancelled, e.UserState));\n            }\n        }\n        \n        public void LoadExportInfoAsync() {\n            this.LoadExportInfoAsync(null);\n        }\n        \n        public void LoadExportInfoAsync(object userState) {\n            if ((this.onBeginLoadExportInfoDelegate == null)) {\n                this.onBeginLoadExportInfoDelegate = new BeginOperationDelegate(this.OnBeginLoadExportInfo);\n            }\n            if ((this.onEndLoadExportInfoDelegate == null)) {\n                this.onEndLoadExportInfoDelegate = new EndOperationDelegate(this.OnEndLoadExportInfo);\n            }\n            if ((this.onLoadExportInfoCompletedDelegate == null)) {\n                this.onLoadExportInfoCompletedDelegate = new System.Threading.SendOrPostCallback(this.OnLoadExportInfoCompleted);\n            }\n            base.InvokeAsync(this.onBeginLoadExportInfoDelegate, null, this.onEndLoadExportInfoDelegate, this.onLoadExportInfoCompletedDelegate, userState);\n        }\n        \n        public byte[] ExportGlobalData(out byte[] storyCheckpoint, out byte[] sandboxCheckpoint) {\n            return base.Channel.ExportGlobalData(out storyCheckpoint, out sandboxCheckpoint);\n        }\n        \n        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]\n        public System.IAsyncResult BeginExportGlobalData(System.AsyncCallback callback, object asyncState) {\n            return base.Channel.BeginExportGlobalData(callback, asyncState);\n        }\n        \n        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]\n        public byte[] EndExportGlobalData(out byte[] storyCheckpoint, out byte[] sandboxCheckpoint, System.IAsyncResult result) {\n            return base.Channel.EndExportGlobalData(out storyCheckpoint, out sandboxCheckpoint, result);\n        }\n        \n        private System.IAsyncResult OnBeginExportGlobalData(object[] inValues, System.AsyncCallback callback, object asyncState) {\n            return this.BeginExportGlobalData(callback, asyncState);\n        }\n        \n        private object[] OnEndExportGlobalData(System.IAsyncResult result) {\n            byte[] storyCheckpoint = this.GetDefaultValueForInitialization<byte[]>();\n            byte[] sandboxCheckpoint = this.GetDefaultValueForInitialization<byte[]>();\n            byte[] retVal = this.EndExportGlobalData(out storyCheckpoint, out sandboxCheckpoint, result);\n            return new object[] {\n                    storyCheckpoint,\n                    sandboxCheckpoint,\n                    retVal};\n        }\n        \n        private void OnExportGlobalDataCompleted(object state) {\n            if ((this.ExportGlobalDataCompleted != null)) {\n                InvokeAsyncCompletedEventArgs e = ((InvokeAsyncCompletedEventArgs)(state));\n                this.ExportGlobalDataCompleted(this, new ExportGlobalDataCompletedEventArgs(e.Results, e.Error, e.Cancelled, e.UserState));\n            }\n        }\n        \n        public void ExportGlobalDataAsync() {\n            this.ExportGlobalDataAsync(null);\n        }\n        \n        public void ExportGlobalDataAsync(object userState) {\n            if ((this.onBeginExportGlobalDataDelegate == null)) {\n                this.onBeginExportGlobalDataDelegate = new BeginOperationDelegate(this.OnBeginExportGlobalData);\n            }\n            if ((this.onEndExportGlobalDataDelegate == null)) {\n                this.onEndExportGlobalDataDelegate = new EndOperationDelegate(this.OnEndExportGlobalData);\n            }\n            if ((this.onExportGlobalDataCompletedDelegate == null)) {\n                this.onExportGlobalDataCompletedDelegate = new System.Threading.SendOrPostCallback(this.OnExportGlobalDataCompleted);\n            }\n            base.InvokeAsync(this.onBeginExportGlobalDataDelegate, null, this.onEndExportGlobalDataDelegate, this.onExportGlobalDataCompletedDelegate, userState);\n        }\n        \n        public byte[] ExportSector(MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int sectorPosition, System.Nullable<int> userId, MinerWars.CommonLIB.AppCode.Networking.MyMwcSectorTypeEnum sectorType) {\n            return base.Channel.ExportSector(sectorPosition, userId, sectorType);\n        }\n        \n        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]\n        public System.IAsyncResult BeginExportSector(MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int sectorPosition, System.Nullable<int> userId, MinerWars.CommonLIB.AppCode.Networking.MyMwcSectorTypeEnum sectorType, System.AsyncCallback callback, object asyncState) {\n            return base.Channel.BeginExportSector(sectorPosition, userId, sectorType, callback, asyncState);\n        }\n        \n        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]\n        public byte[] EndExportSector(System.IAsyncResult result) {\n            return base.Channel.EndExportSector(result);\n        }\n        \n        private System.IAsyncResult OnBeginExportSector(object[] inValues, System.AsyncCallback callback, object asyncState) {\n            MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int sectorPosition = ((MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int)(inValues[0]));\n            System.Nullable<int> userId = ((System.Nullable<int>)(inValues[1]));\n            MinerWars.CommonLIB.AppCode.Networking.MyMwcSectorTypeEnum sectorType = ((MinerWars.CommonLIB.AppCode.Networking.MyMwcSectorTypeEnum)(inValues[2]));\n            return this.BeginExportSector(sectorPosition, userId, sectorType, callback, asyncState);\n        }\n        \n        private object[] OnEndExportSector(System.IAsyncResult result) {\n            byte[] retVal = this.EndExportSector(result);\n            return new object[] {\n                    retVal};\n        }\n        \n        private void OnExportSectorCompleted(object state) {\n            if ((this.ExportSectorCompleted != null)) {\n                InvokeAsyncCompletedEventArgs e = ((InvokeAsyncCompletedEventArgs)(state));\n                this.ExportSectorCompleted(this, new ExportSectorCompletedEventArgs(e.Results, e.Error, e.Cancelled, e.UserState));\n            }\n        }\n        \n        public void ExportSectorAsync(MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int sectorPosition, System.Nullable<int> userId, MinerWars.CommonLIB.AppCode.Networking.MyMwcSectorTypeEnum sectorType) {\n            this.ExportSectorAsync(sectorPosition, userId, sectorType, null);\n        }\n        \n        public void ExportSectorAsync(MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int sectorPosition, System.Nullable<int> userId, MinerWars.CommonLIB.AppCode.Networking.MyMwcSectorTypeEnum sectorType, object userState) {\n            if ((this.onBeginExportSectorDelegate == null)) {\n                this.onBeginExportSectorDelegate = new BeginOperationDelegate(this.OnBeginExportSector);\n            }\n            if ((this.onEndExportSectorDelegate == null)) {\n                this.onEndExportSectorDelegate = new EndOperationDelegate(this.OnEndExportSector);\n            }\n            if ((this.onExportSectorCompletedDelegate == null)) {\n                this.onExportSectorCompletedDelegate = new System.Threading.SendOrPostCallback(this.OnExportSectorCompleted);\n            }\n            base.InvokeAsync(this.onBeginExportSectorDelegate, new object[] {\n                        sectorPosition,\n                        userId,\n                        sectorType}, this.onEndExportSectorDelegate, this.onExportSectorCompletedDelegate, userState);\n        }\n        \n        public MinerWars.AppCode.Networking.SectorService.MyUserInfo Login(int gameVersion) {\n            return base.Channel.Login(gameVersion);\n        }\n        \n        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]\n        public System.IAsyncResult BeginLogin(int gameVersion, System.AsyncCallback callback, object asyncState) {\n            return base.Channel.BeginLogin(gameVersion, callback, asyncState);\n        }\n        \n        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]\n        public MinerWars.AppCode.Networking.SectorService.MyUserInfo EndLogin(System.IAsyncResult result) {\n            return base.Channel.EndLogin(result);\n        }\n        \n        private System.IAsyncResult OnBeginLogin(object[] inValues, System.AsyncCallback callback, object asyncState) {\n            int gameVersion = ((int)(inValues[0]));\n            return this.BeginLogin(gameVersion, callback, asyncState);\n        }\n        \n        private object[] OnEndLogin(System.IAsyncResult result) {\n            MinerWars.AppCode.Networking.SectorService.MyUserInfo retVal = this.EndLogin(result);\n            return new object[] {\n                    retVal};\n        }\n        \n        private void OnLoginCompleted(object state) {\n            if ((this.LoginCompleted != null)) {\n                InvokeAsyncCompletedEventArgs e = ((InvokeAsyncCompletedEventArgs)(state));\n                this.LoginCompleted(this, new LoginCompletedEventArgs(e.Results, e.Error, e.Cancelled, e.UserState));\n            }\n        }\n        \n        public void LoginAsync(int gameVersion) {\n            this.LoginAsync(gameVersion, null);\n        }\n        \n        public void LoginAsync(int gameVersion, object userState) {\n            if ((this.onBeginLoginDelegate == null)) {\n                this.onBeginLoginDelegate = new BeginOperationDelegate(this.OnBeginLogin);\n            }\n            if ((this.onEndLoginDelegate == null)) {\n                this.onEndLoginDelegate = new EndOperationDelegate(this.OnEndLogin);\n            }\n            if ((this.onLoginCompletedDelegate == null)) {\n                this.onLoginCompletedDelegate = new System.Threading.SendOrPostCallback(this.OnLoginCompleted);\n            }\n            base.InvokeAsync(this.onBeginLoginDelegate, new object[] {\n                        gameVersion}, this.onEndLoginDelegate, this.onLoginCompletedDelegate, userState);\n        }\n        \n        public void Logout() {\n            base.Channel.Logout();\n        }\n        \n        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]\n        public System.IAsyncResult BeginLogout(System.AsyncCallback callback, object asyncState) {\n            return base.Channel.BeginLogout(callback, asyncState);\n        }\n        \n        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]\n        public void EndLogout(System.IAsyncResult result) {\n            base.Channel.EndLogout(result);\n        }\n        \n        private System.IAsyncResult OnBeginLogout(object[] inValues, System.AsyncCallback callback, object asyncState) {\n            return this.BeginLogout(callback, asyncState);\n        }\n        \n        private object[] OnEndLogout(System.IAsyncResult result) {\n            this.EndLogout(result);\n            return null;\n        }\n        \n        private void OnLogoutCompleted(object state) {\n            if ((this.LogoutCompleted != null)) {\n                InvokeAsyncCompletedEventArgs e = ((InvokeAsyncCompletedEventArgs)(state));\n                this.LogoutCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(e.Error, e.Cancelled, e.UserState));\n            }\n        }\n        \n        public void LogoutAsync() {\n            this.LogoutAsync(null);\n        }\n        \n        public void LogoutAsync(object userState) {\n            if ((this.onBeginLogoutDelegate == null)) {\n                this.onBeginLogoutDelegate = new BeginOperationDelegate(this.OnBeginLogout);\n            }\n            if ((this.onEndLogoutDelegate == null)) {\n                this.onEndLogoutDelegate = new EndOperationDelegate(this.OnEndLogout);\n            }\n            if ((this.onLogoutCompletedDelegate == null)) {\n                this.onLogoutCompletedDelegate = new System.Threading.SendOrPostCallback(this.OnLogoutCompleted);\n            }\n            base.InvokeAsync(this.onBeginLogoutDelegate, null, this.onEndLogoutDelegate, this.onLogoutCompletedDelegate, userState);\n        }\n        \n        public System.Collections.Generic.List<MinerWars.CommonLIB.AppCode.Networking.MyMwcSectorIdentifier> LoadSectorIdentifiers(MinerWars.CommonLIB.AppCode.Networking.MyMwcSectorTypeEnum sectorType) {\n            return base.Channel.LoadSectorIdentifiers(sectorType);\n        }\n        \n        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]\n        public System.IAsyncResult BeginLoadSectorIdentifiers(MinerWars.CommonLIB.AppCode.Networking.MyMwcSectorTypeEnum sectorType, System.AsyncCallback callback, object asyncState) {\n            return base.Channel.BeginLoadSectorIdentifiers(sectorType, callback, asyncState);\n        }\n        \n        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]\n        public System.Collections.Generic.List<MinerWars.CommonLIB.AppCode.Networking.MyMwcSectorIdentifier> EndLoadSectorIdentifiers(System.IAsyncResult result) {\n            return base.Channel.EndLoadSectorIdentifiers(result);\n        }\n        \n        private System.IAsyncResult OnBeginLoadSectorIdentifiers(object[] inValues, System.AsyncCallback callback, object asyncState) {\n            MinerWars.CommonLIB.AppCode.Networking.MyMwcSectorTypeEnum sectorType = ((MinerWars.CommonLIB.AppCode.Networking.MyMwcSectorTypeEnum)(inValues[0]));\n            return this.BeginLoadSectorIdentifiers(sectorType, callback, asyncState);\n        }\n        \n        private object[] OnEndLoadSectorIdentifiers(System.IAsyncResult result) {\n            System.Collections.Generic.List<MinerWars.CommonLIB.AppCode.Networking.MyMwcSectorIdentifier> retVal = this.EndLoadSectorIdentifiers(result);\n            return new object[] {\n                    retVal};\n        }\n        \n        private void OnLoadSectorIdentifiersCompleted(object state) {\n            if ((this.LoadSectorIdentifiersCompleted != null)) {\n                InvokeAsyncCompletedEventArgs e = ((InvokeAsyncCompletedEventArgs)(state));\n                this.LoadSectorIdentifiersCompleted(this, new LoadSectorIdentifiersCompletedEventArgs(e.Results, e.Error, e.Cancelled, e.UserState));\n            }\n        }\n        \n        public void LoadSectorIdentifiersAsync(MinerWars.CommonLIB.AppCode.Networking.MyMwcSectorTypeEnum sectorType) {\n            this.LoadSectorIdentifiersAsync(sectorType, null);\n        }\n        \n        public void LoadSectorIdentifiersAsync(MinerWars.CommonLIB.AppCode.Networking.MyMwcSectorTypeEnum sectorType, object userState) {\n            if ((this.onBeginLoadSectorIdentifiersDelegate == null)) {\n                this.onBeginLoadSectorIdentifiersDelegate = new BeginOperationDelegate(this.OnBeginLoadSectorIdentifiers);\n            }\n            if ((this.onEndLoadSectorIdentifiersDelegate == null)) {\n                this.onEndLoadSectorIdentifiersDelegate = new EndOperationDelegate(this.OnEndLoadSectorIdentifiers);\n            }\n            if ((this.onLoadSectorIdentifiersCompletedDelegate == null)) {\n                this.onLoadSectorIdentifiersCompletedDelegate = new System.Threading.SendOrPostCallback(this.OnLoadSectorIdentifiersCompleted);\n            }\n            base.InvokeAsync(this.onBeginLoadSectorIdentifiersDelegate, new object[] {\n                        sectorType}, this.onEndLoadSectorIdentifiersDelegate, this.onLoadSectorIdentifiersCompletedDelegate, userState);\n        }\n        \n        public System.Collections.Generic.List<MinerWars.CommonLIB.AppCode.Networking.MyMwcSectorIdentifier> LoadUserSectorIdentifiers() {\n            return base.Channel.LoadUserSectorIdentifiers();\n        }\n        \n        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]\n        public System.IAsyncResult BeginLoadUserSectorIdentifiers(System.AsyncCallback callback, object asyncState) {\n            return base.Channel.BeginLoadUserSectorIdentifiers(callback, asyncState);\n        }\n        \n        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]\n        public System.Collections.Generic.List<MinerWars.CommonLIB.AppCode.Networking.MyMwcSectorIdentifier> EndLoadUserSectorIdentifiers(System.IAsyncResult result) {\n            return base.Channel.EndLoadUserSectorIdentifiers(result);\n        }\n        \n        private System.IAsyncResult OnBeginLoadUserSectorIdentifiers(object[] inValues, System.AsyncCallback callback, object asyncState) {\n            return this.BeginLoadUserSectorIdentifiers(callback, asyncState);\n        }\n        \n        private object[] OnEndLoadUserSectorIdentifiers(System.IAsyncResult result) {\n            System.Collections.Generic.List<MinerWars.CommonLIB.AppCode.Networking.MyMwcSectorIdentifier> retVal = this.EndLoadUserSectorIdentifiers(result);\n            return new object[] {\n                    retVal};\n        }\n        \n        private void OnLoadUserSectorIdentifiersCompleted(object state) {\n            if ((this.LoadUserSectorIdentifiersCompleted != null)) {\n                InvokeAsyncCompletedEventArgs e = ((InvokeAsyncCompletedEventArgs)(state));\n                this.LoadUserSectorIdentifiersCompleted(this, new LoadUserSectorIdentifiersCompletedEventArgs(e.Results, e.Error, e.Cancelled, e.UserState));\n            }\n        }\n        \n        public void LoadUserSectorIdentifiersAsync() {\n            this.LoadUserSectorIdentifiersAsync(null);\n        }\n        \n        public void LoadUserSectorIdentifiersAsync(object userState) {\n            if ((this.onBeginLoadUserSectorIdentifiersDelegate == null)) {\n                this.onBeginLoadUserSectorIdentifiersDelegate = new BeginOperationDelegate(this.OnBeginLoadUserSectorIdentifiers);\n            }\n            if ((this.onEndLoadUserSectorIdentifiersDelegate == null)) {\n                this.onEndLoadUserSectorIdentifiersDelegate = new EndOperationDelegate(this.OnEndLoadUserSectorIdentifiers);\n            }\n            if ((this.onLoadUserSectorIdentifiersCompletedDelegate == null)) {\n                this.onLoadUserSectorIdentifiersCompletedDelegate = new System.Threading.SendOrPostCallback(this.OnLoadUserSectorIdentifiersCompleted);\n            }\n            base.InvokeAsync(this.onBeginLoadUserSectorIdentifiersDelegate, null, this.onEndLoadUserSectorIdentifiersDelegate, this.onLoadUserSectorIdentifiersCompletedDelegate, userState);\n        }\n        \n        public System.Collections.Generic.List<MinerWars.CommonLIB.AppCode.Networking.MyMwcSectorIdentifier> SelectSandbox(out System.Collections.Generic.List<MinerWars.CommonLIB.AppCode.Networking.MyMwcUserDetail> userDetails, MinerWars.CommonLIB.AppCode.Networking.MyMwcSelectSectorRequestTypeEnum selectSandboxType, string findPlayerName) {\n            return base.Channel.SelectSandbox(out userDetails, selectSandboxType, findPlayerName);\n        }\n        \n        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]\n        public System.IAsyncResult BeginSelectSandbox(MinerWars.CommonLIB.AppCode.Networking.MyMwcSelectSectorRequestTypeEnum selectSandboxType, string findPlayerName, System.AsyncCallback callback, object asyncState) {\n            return base.Channel.BeginSelectSandbox(selectSandboxType, findPlayerName, callback, asyncState);\n        }\n        \n        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]\n        public System.Collections.Generic.List<MinerWars.CommonLIB.AppCode.Networking.MyMwcSectorIdentifier> EndSelectSandbox(out System.Collections.Generic.List<MinerWars.CommonLIB.AppCode.Networking.MyMwcUserDetail> userDetails, System.IAsyncResult result) {\n            return base.Channel.EndSelectSandbox(out userDetails, result);\n        }\n        \n        private System.IAsyncResult OnBeginSelectSandbox(object[] inValues, System.AsyncCallback callback, object asyncState) {\n            MinerWars.CommonLIB.AppCode.Networking.MyMwcSelectSectorRequestTypeEnum selectSandboxType = ((MinerWars.CommonLIB.AppCode.Networking.MyMwcSelectSectorRequestTypeEnum)(inValues[0]));\n            string findPlayerName = ((string)(inValues[1]));\n            return this.BeginSelectSandbox(selectSandboxType, findPlayerName, callback, asyncState);\n        }\n        \n        private object[] OnEndSelectSandbox(System.IAsyncResult result) {\n            System.Collections.Generic.List<MinerWars.CommonLIB.AppCode.Networking.MyMwcUserDetail> userDetails = this.GetDefaultValueForInitialization<System.Collections.Generic.List<MinerWars.CommonLIB.AppCode.Networking.MyMwcUserDetail>>();\n            System.Collections.Generic.List<MinerWars.CommonLIB.AppCode.Networking.MyMwcSectorIdentifier> retVal = this.EndSelectSandbox(out userDetails, result);\n            return new object[] {\n                    userDetails,\n                    retVal};\n        }\n        \n        private void OnSelectSandboxCompleted(object state) {\n            if ((this.SelectSandboxCompleted != null)) {\n                InvokeAsyncCompletedEventArgs e = ((InvokeAsyncCompletedEventArgs)(state));\n                this.SelectSandboxCompleted(this, new SelectSandboxCompletedEventArgs(e.Results, e.Error, e.Cancelled, e.UserState));\n            }\n        }\n        \n        public void SelectSandboxAsync(MinerWars.CommonLIB.AppCode.Networking.MyMwcSelectSectorRequestTypeEnum selectSandboxType, string findPlayerName) {\n            this.SelectSandboxAsync(selectSandboxType, findPlayerName, null);\n        }\n        \n        public void SelectSandboxAsync(MinerWars.CommonLIB.AppCode.Networking.MyMwcSelectSectorRequestTypeEnum selectSandboxType, string findPlayerName, object userState) {\n            if ((this.onBeginSelectSandboxDelegate == null)) {\n                this.onBeginSelectSandboxDelegate = new BeginOperationDelegate(this.OnBeginSelectSandbox);\n            }\n            if ((this.onEndSelectSandboxDelegate == null)) {\n                this.onEndSelectSandboxDelegate = new EndOperationDelegate(this.OnEndSelectSandbox);\n            }\n            if ((this.onSelectSandboxCompletedDelegate == null)) {\n                this.onSelectSandboxCompletedDelegate = new System.Threading.SendOrPostCallback(this.OnSelectSandboxCompleted);\n            }\n            base.InvokeAsync(this.onBeginSelectSandboxDelegate, new object[] {\n                        selectSandboxType,\n                        findPlayerName}, this.onEndSelectSandboxDelegate, this.onSelectSandboxCompletedDelegate, userState);\n        }\n        \n        public byte[] LoadCheckpoint(MinerWars.CommonLIB.AppCode.Networking.MyMwcSectorTypeEnum sessionType, MinerWars.CommonLIB.AppCode.Networking.MyMwcSessionStateEnum sessionStartType, System.Nullable<int> userId, System.Nullable<MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int> sectorPosition, string checkpointName) {\n            return base.Channel.LoadCheckpoint(sessionType, sessionStartType, userId, sectorPosition, checkpointName);\n        }\n        \n        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]\n        public System.IAsyncResult BeginLoadCheckpoint(MinerWars.CommonLIB.AppCode.Networking.MyMwcSectorTypeEnum sessionType, MinerWars.CommonLIB.AppCode.Networking.MyMwcSessionStateEnum sessionStartType, System.Nullable<int> userId, System.Nullable<MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int> sectorPosition, string checkpointName, System.AsyncCallback callback, object asyncState) {\n            return base.Channel.BeginLoadCheckpoint(sessionType, sessionStartType, userId, sectorPosition, checkpointName, callback, asyncState);\n        }\n        \n        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]\n        public byte[] EndLoadCheckpoint(System.IAsyncResult result) {\n            return base.Channel.EndLoadCheckpoint(result);\n        }\n        \n        private System.IAsyncResult OnBeginLoadCheckpoint(object[] inValues, System.AsyncCallback callback, object asyncState) {\n            MinerWars.CommonLIB.AppCode.Networking.MyMwcSectorTypeEnum sessionType = ((MinerWars.CommonLIB.AppCode.Networking.MyMwcSectorTypeEnum)(inValues[0]));\n            MinerWars.CommonLIB.AppCode.Networking.MyMwcSessionStateEnum sessionStartType = ((MinerWars.CommonLIB.AppCode.Networking.MyMwcSessionStateEnum)(inValues[1]));\n            System.Nullable<int> userId = ((System.Nullable<int>)(inValues[2]));\n            System.Nullable<MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int> sectorPosition = ((System.Nullable<MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int>)(inValues[3]));\n            string checkpointName = ((string)(inValues[4]));\n            return this.BeginLoadCheckpoint(sessionType, sessionStartType, userId, sectorPosition, checkpointName, callback, asyncState);\n        }\n        \n        private object[] OnEndLoadCheckpoint(System.IAsyncResult result) {\n            byte[] retVal = this.EndLoadCheckpoint(result);\n            return new object[] {\n                    retVal};\n        }\n        \n        private void OnLoadCheckpointCompleted(object state) {\n            if ((this.LoadCheckpointCompleted != null)) {\n                InvokeAsyncCompletedEventArgs e = ((InvokeAsyncCompletedEventArgs)(state));\n                this.LoadCheckpointCompleted(this, new LoadCheckpointCompletedEventArgs(e.Results, e.Error, e.Cancelled, e.UserState));\n            }\n        }\n        \n        public void LoadCheckpointAsync(MinerWars.CommonLIB.AppCode.Networking.MyMwcSectorTypeEnum sessionType, MinerWars.CommonLIB.AppCode.Networking.MyMwcSessionStateEnum sessionStartType, System.Nullable<int> userId, System.Nullable<MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int> sectorPosition, string checkpointName) {\n            this.LoadCheckpointAsync(sessionType, sessionStartType, userId, sectorPosition, checkpointName, null);\n        }\n        \n        public void LoadCheckpointAsync(MinerWars.CommonLIB.AppCode.Networking.MyMwcSectorTypeEnum sessionType, MinerWars.CommonLIB.AppCode.Networking.MyMwcSessionStateEnum sessionStartType, System.Nullable<int> userId, System.Nullable<MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int> sectorPosition, string checkpointName, object userState) {\n            if ((this.onBeginLoadCheckpointDelegate == null)) {\n                this.onBeginLoadCheckpointDelegate = new BeginOperationDelegate(this.OnBeginLoadCheckpoint);\n            }\n            if ((this.onEndLoadCheckpointDelegate == null)) {\n                this.onEndLoadCheckpointDelegate = new EndOperationDelegate(this.OnEndLoadCheckpoint);\n            }\n            if ((this.onLoadCheckpointCompletedDelegate == null)) {\n                this.onLoadCheckpointCompletedDelegate = new System.Threading.SendOrPostCallback(this.OnLoadCheckpointCompleted);\n            }\n            base.InvokeAsync(this.onBeginLoadCheckpointDelegate, new object[] {\n                        sessionType,\n                        sessionStartType,\n                        userId,\n                        sectorPosition,\n                        checkpointName}, this.onEndLoadCheckpointDelegate, this.onLoadCheckpointCompletedDelegate, userState);\n        }\n        \n        public byte[] LoadObjectGroups(MinerWars.CommonLIB.AppCode.Networking.MyMwcSectorTypeEnum sessionType, System.Nullable<int> userId, MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int sectorPosition) {\n            return base.Channel.LoadObjectGroups(sessionType, userId, sectorPosition);\n        }\n        \n        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]\n        public System.IAsyncResult BeginLoadObjectGroups(MinerWars.CommonLIB.AppCode.Networking.MyMwcSectorTypeEnum sessionType, System.Nullable<int> userId, MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int sectorPosition, System.AsyncCallback callback, object asyncState) {\n            return base.Channel.BeginLoadObjectGroups(sessionType, userId, sectorPosition, callback, asyncState);\n        }\n        \n        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]\n        public byte[] EndLoadObjectGroups(System.IAsyncResult result) {\n            return base.Channel.EndLoadObjectGroups(result);\n        }\n        \n        private System.IAsyncResult OnBeginLoadObjectGroups(object[] inValues, System.AsyncCallback callback, object asyncState) {\n            MinerWars.CommonLIB.AppCode.Networking.MyMwcSectorTypeEnum sessionType = ((MinerWars.CommonLIB.AppCode.Networking.MyMwcSectorTypeEnum)(inValues[0]));\n            System.Nullable<int> userId = ((System.Nullable<int>)(inValues[1]));\n            MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int sectorPosition = ((MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int)(inValues[2]));\n            return this.BeginLoadObjectGroups(sessionType, userId, sectorPosition, callback, asyncState);\n        }\n        \n        private object[] OnEndLoadObjectGroups(System.IAsyncResult result) {\n            byte[] retVal = this.EndLoadObjectGroups(result);\n            return new object[] {\n                    retVal};\n        }\n        \n        private void OnLoadObjectGroupsCompleted(object state) {\n            if ((this.LoadObjectGroupsCompleted != null)) {\n                InvokeAsyncCompletedEventArgs e = ((InvokeAsyncCompletedEventArgs)(state));\n                this.LoadObjectGroupsCompleted(this, new LoadObjectGroupsCompletedEventArgs(e.Results, e.Error, e.Cancelled, e.UserState));\n            }\n        }\n        \n        public void LoadObjectGroupsAsync(MinerWars.CommonLIB.AppCode.Networking.MyMwcSectorTypeEnum sessionType, System.Nullable<int> userId, MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int sectorPosition) {\n            this.LoadObjectGroupsAsync(sessionType, userId, sectorPosition, null);\n        }\n        \n        public void LoadObjectGroupsAsync(MinerWars.CommonLIB.AppCode.Networking.MyMwcSectorTypeEnum sessionType, System.Nullable<int> userId, MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int sectorPosition, object userState) {\n            if ((this.onBeginLoadObjectGroupsDelegate == null)) {\n                this.onBeginLoadObjectGroupsDelegate = new BeginOperationDelegate(this.OnBeginLoadObjectGroups);\n            }\n            if ((this.onEndLoadObjectGroupsDelegate == null)) {\n                this.onEndLoadObjectGroupsDelegate = new EndOperationDelegate(this.OnEndLoadObjectGroups);\n            }\n            if ((this.onLoadObjectGroupsCompletedDelegate == null)) {\n                this.onLoadObjectGroupsCompletedDelegate = new System.Threading.SendOrPostCallback(this.OnLoadObjectGroupsCompleted);\n            }\n            base.InvokeAsync(this.onBeginLoadObjectGroupsDelegate, new object[] {\n                        sessionType,\n                        userId,\n                        sectorPosition}, this.onEndLoadObjectGroupsDelegate, this.onLoadObjectGroupsCompletedDelegate, userState);\n        }\n        \n        public void SaveCheckpoint(byte[] checkpoint, bool savePlayer) {\n            base.Channel.SaveCheckpoint(checkpoint, savePlayer);\n        }\n        \n        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]\n        public System.IAsyncResult BeginSaveCheckpoint(byte[] checkpoint, bool savePlayer, System.AsyncCallback callback, object asyncState) {\n            return base.Channel.BeginSaveCheckpoint(checkpoint, savePlayer, callback, asyncState);\n        }\n        \n        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]\n        public void EndSaveCheckpoint(System.IAsyncResult result) {\n            base.Channel.EndSaveCheckpoint(result);\n        }\n        \n        private System.IAsyncResult OnBeginSaveCheckpoint(object[] inValues, System.AsyncCallback callback, object asyncState) {\n            byte[] checkpoint = ((byte[])(inValues[0]));\n            bool savePlayer = ((bool)(inValues[1]));\n            return this.BeginSaveCheckpoint(checkpoint, savePlayer, callback, asyncState);\n        }\n        \n        private object[] OnEndSaveCheckpoint(System.IAsyncResult result) {\n            this.EndSaveCheckpoint(result);\n            return null;\n        }\n        \n        private void OnSaveCheckpointCompleted(object state) {\n            if ((this.SaveCheckpointCompleted != null)) {\n                InvokeAsyncCompletedEventArgs e = ((InvokeAsyncCompletedEventArgs)(state));\n                this.SaveCheckpointCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(e.Error, e.Cancelled, e.UserState));\n            }\n        }\n        \n        public void SaveCheckpointAsync(byte[] checkpoint, bool savePlayer) {\n            this.SaveCheckpointAsync(checkpoint, savePlayer, null);\n        }\n        \n        public void SaveCheckpointAsync(byte[] checkpoint, bool savePlayer, object userState) {\n            if ((this.onBeginSaveCheckpointDelegate == null)) {\n                this.onBeginSaveCheckpointDelegate = new BeginOperationDelegate(this.OnBeginSaveCheckpoint);\n            }\n            if ((this.onEndSaveCheckpointDelegate == null)) {\n                this.onEndSaveCheckpointDelegate = new EndOperationDelegate(this.OnEndSaveCheckpoint);\n            }\n            if ((this.onSaveCheckpointCompletedDelegate == null)) {\n                this.onSaveCheckpointCompletedDelegate = new System.Threading.SendOrPostCallback(this.OnSaveCheckpointCompleted);\n            }\n            base.InvokeAsync(this.onBeginSaveCheckpointDelegate, new object[] {\n                        checkpoint,\n                        savePlayer}, this.onEndSaveCheckpointDelegate, this.onSaveCheckpointCompletedDelegate, userState);\n        }\n        \n        public byte[] TravelToSector(out VRageMath.Vector3 newShipPosition, MinerWars.CommonLIB.AppCode.Networking.MyMwcTravelTypeEnum travelType, MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int targetSector, VRageMath.Vector3 currentShipPosition, int currentSectorVersion) {\n            return base.Channel.TravelToSector(out newShipPosition, travelType, targetSector, currentShipPosition, currentSectorVersion);\n        }\n        \n        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]\n        public System.IAsyncResult BeginTravelToSector(MinerWars.CommonLIB.AppCode.Networking.MyMwcTravelTypeEnum travelType, MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int targetSector, VRageMath.Vector3 currentShipPosition, int currentSectorVersion, System.AsyncCallback callback, object asyncState) {\n            return base.Channel.BeginTravelToSector(travelType, targetSector, currentShipPosition, currentSectorVersion, callback, asyncState);\n        }\n        \n        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]\n        public byte[] EndTravelToSector(out VRageMath.Vector3 newShipPosition, System.IAsyncResult result) {\n            return base.Channel.EndTravelToSector(out newShipPosition, result);\n        }\n        \n        private System.IAsyncResult OnBeginTravelToSector(object[] inValues, System.AsyncCallback callback, object asyncState) {\n            MinerWars.CommonLIB.AppCode.Networking.MyMwcTravelTypeEnum travelType = ((MinerWars.CommonLIB.AppCode.Networking.MyMwcTravelTypeEnum)(inValues[0]));\n            MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int targetSector = ((MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int)(inValues[1]));\n            VRageMath.Vector3 currentShipPosition = ((VRageMath.Vector3)(inValues[2]));\n            int currentSectorVersion = ((int)(inValues[3]));\n            return this.BeginTravelToSector(travelType, targetSector, currentShipPosition, currentSectorVersion, callback, asyncState);\n        }\n        \n        private object[] OnEndTravelToSector(System.IAsyncResult result) {\n            VRageMath.Vector3 newShipPosition = this.GetDefaultValueForInitialization<VRageMath.Vector3>();\n            byte[] retVal = this.EndTravelToSector(out newShipPosition, result);\n            return new object[] {\n                    newShipPosition,\n                    retVal};\n        }\n        \n        private void OnTravelToSectorCompleted(object state) {\n            if ((this.TravelToSectorCompleted != null)) {\n                InvokeAsyncCompletedEventArgs e = ((InvokeAsyncCompletedEventArgs)(state));\n                this.TravelToSectorCompleted(this, new TravelToSectorCompletedEventArgs(e.Results, e.Error, e.Cancelled, e.UserState));\n            }\n        }\n        \n        public void TravelToSectorAsync(MinerWars.CommonLIB.AppCode.Networking.MyMwcTravelTypeEnum travelType, MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int targetSector, VRageMath.Vector3 currentShipPosition, int currentSectorVersion) {\n            this.TravelToSectorAsync(travelType, targetSector, currentShipPosition, currentSectorVersion, null);\n        }\n        \n        public void TravelToSectorAsync(MinerWars.CommonLIB.AppCode.Networking.MyMwcTravelTypeEnum travelType, MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int targetSector, VRageMath.Vector3 currentShipPosition, int currentSectorVersion, object userState) {\n            if ((this.onBeginTravelToSectorDelegate == null)) {\n                this.onBeginTravelToSectorDelegate = new BeginOperationDelegate(this.OnBeginTravelToSector);\n            }\n            if ((this.onEndTravelToSectorDelegate == null)) {\n                this.onEndTravelToSectorDelegate = new EndOperationDelegate(this.OnEndTravelToSector);\n            }\n            if ((this.onTravelToSectorCompletedDelegate == null)) {\n                this.onTravelToSectorCompletedDelegate = new System.Threading.SendOrPostCallback(this.OnTravelToSectorCompleted);\n            }\n            base.InvokeAsync(this.onBeginTravelToSectorDelegate, new object[] {\n                        travelType,\n                        targetSector,\n                        currentShipPosition,\n                        currentSectorVersion}, this.onEndTravelToSectorDelegate, this.onTravelToSectorCompletedDelegate, userState);\n        }\n        \n        public void LeaveSector(MinerWars.CommonLIB.AppCode.Networking.MyMwcLeaveSectorReasonEnum reason) {\n            base.Channel.LeaveSector(reason);\n        }\n        \n        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]\n        public System.IAsyncResult BeginLeaveSector(MinerWars.CommonLIB.AppCode.Networking.MyMwcLeaveSectorReasonEnum reason, System.AsyncCallback callback, object asyncState) {\n            return base.Channel.BeginLeaveSector(reason, callback, asyncState);\n        }\n        \n        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]\n        public void EndLeaveSector(System.IAsyncResult result) {\n            base.Channel.EndLeaveSector(result);\n        }\n        \n        private System.IAsyncResult OnBeginLeaveSector(object[] inValues, System.AsyncCallback callback, object asyncState) {\n            MinerWars.CommonLIB.AppCode.Networking.MyMwcLeaveSectorReasonEnum reason = ((MinerWars.CommonLIB.AppCode.Networking.MyMwcLeaveSectorReasonEnum)(inValues[0]));\n            return this.BeginLeaveSector(reason, callback, asyncState);\n        }\n        \n        private object[] OnEndLeaveSector(System.IAsyncResult result) {\n            this.EndLeaveSector(result);\n            return null;\n        }\n        \n        private void OnLeaveSectorCompleted(object state) {\n            if ((this.LeaveSectorCompleted != null)) {\n                InvokeAsyncCompletedEventArgs e = ((InvokeAsyncCompletedEventArgs)(state));\n                this.LeaveSectorCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(e.Error, e.Cancelled, e.UserState));\n            }\n        }\n        \n        public void LeaveSectorAsync(MinerWars.CommonLIB.AppCode.Networking.MyMwcLeaveSectorReasonEnum reason) {\n            this.LeaveSectorAsync(reason, null);\n        }\n        \n        public void LeaveSectorAsync(MinerWars.CommonLIB.AppCode.Networking.MyMwcLeaveSectorReasonEnum reason, object userState) {\n            if ((this.onBeginLeaveSectorDelegate == null)) {\n                this.onBeginLeaveSectorDelegate = new BeginOperationDelegate(this.OnBeginLeaveSector);\n            }\n            if ((this.onEndLeaveSectorDelegate == null)) {\n                this.onEndLeaveSectorDelegate = new EndOperationDelegate(this.OnEndLeaveSector);\n            }\n            if ((this.onLeaveSectorCompletedDelegate == null)) {\n                this.onLeaveSectorCompletedDelegate = new System.Threading.SendOrPostCallback(this.OnLeaveSectorCompleted);\n            }\n            base.InvokeAsync(this.onBeginLeaveSectorDelegate, new object[] {\n                        reason}, this.onEndLeaveSectorDelegate, this.onLeaveSectorCompletedDelegate, userState);\n        }\n        \n        public byte[] LoadSectorObjects(string playerName, string sectorName, MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int sectorPosition) {\n            return base.Channel.LoadSectorObjects(playerName, sectorName, sectorPosition);\n        }\n        \n        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]\n        public System.IAsyncResult BeginLoadSectorObjects(string playerName, string sectorName, MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int sectorPosition, System.AsyncCallback callback, object asyncState) {\n            return base.Channel.BeginLoadSectorObjects(playerName, sectorName, sectorPosition, callback, asyncState);\n        }\n        \n        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]\n        public byte[] EndLoadSectorObjects(System.IAsyncResult result) {\n            return base.Channel.EndLoadSectorObjects(result);\n        }\n        \n        private System.IAsyncResult OnBeginLoadSectorObjects(object[] inValues, System.AsyncCallback callback, object asyncState) {\n            string playerName = ((string)(inValues[0]));\n            string sectorName = ((string)(inValues[1]));\n            MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int sectorPosition = ((MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int)(inValues[2]));\n            return this.BeginLoadSectorObjects(playerName, sectorName, sectorPosition, callback, asyncState);\n        }\n        \n        private object[] OnEndLoadSectorObjects(System.IAsyncResult result) {\n            byte[] retVal = this.EndLoadSectorObjects(result);\n            return new object[] {\n                    retVal};\n        }\n        \n        private void OnLoadSectorObjectsCompleted(object state) {\n            if ((this.LoadSectorObjectsCompleted != null)) {\n                InvokeAsyncCompletedEventArgs e = ((InvokeAsyncCompletedEventArgs)(state));\n                this.LoadSectorObjectsCompleted(this, new LoadSectorObjectsCompletedEventArgs(e.Results, e.Error, e.Cancelled, e.UserState));\n            }\n        }\n        \n        public void LoadSectorObjectsAsync(string playerName, string sectorName, MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int sectorPosition) {\n            this.LoadSectorObjectsAsync(playerName, sectorName, sectorPosition, null);\n        }\n        \n        public void LoadSectorObjectsAsync(string playerName, string sectorName, MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int sectorPosition, object userState) {\n            if ((this.onBeginLoadSectorObjectsDelegate == null)) {\n                this.onBeginLoadSectorObjectsDelegate = new BeginOperationDelegate(this.OnBeginLoadSectorObjects);\n            }\n            if ((this.onEndLoadSectorObjectsDelegate == null)) {\n                this.onEndLoadSectorObjectsDelegate = new EndOperationDelegate(this.OnEndLoadSectorObjects);\n            }\n            if ((this.onLoadSectorObjectsCompletedDelegate == null)) {\n                this.onLoadSectorObjectsCompletedDelegate = new System.Threading.SendOrPostCallback(this.OnLoadSectorObjectsCompleted);\n            }\n            base.InvokeAsync(this.onBeginLoadSectorObjectsDelegate, new object[] {\n                        playerName,\n                        sectorName,\n                        sectorPosition}, this.onEndLoadSectorObjectsDelegate, this.onLoadSectorObjectsCompletedDelegate, userState);\n        }\n        \n        public bool CheckAlive() {\n            return base.Channel.CheckAlive();\n        }\n        \n        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]\n        public System.IAsyncResult BeginCheckAlive(System.AsyncCallback callback, object asyncState) {\n            return base.Channel.BeginCheckAlive(callback, asyncState);\n        }\n        \n        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]\n        public bool EndCheckAlive(System.IAsyncResult result) {\n            return base.Channel.EndCheckAlive(result);\n        }\n        \n        private System.IAsyncResult OnBeginCheckAlive(object[] inValues, System.AsyncCallback callback, object asyncState) {\n            return this.BeginCheckAlive(callback, asyncState);\n        }\n        \n        private object[] OnEndCheckAlive(System.IAsyncResult result) {\n            bool retVal = this.EndCheckAlive(result);\n            return new object[] {\n                    retVal};\n        }\n        \n        private void OnCheckAliveCompleted(object state) {\n            if ((this.CheckAliveCompleted != null)) {\n                InvokeAsyncCompletedEventArgs e = ((InvokeAsyncCompletedEventArgs)(state));\n                this.CheckAliveCompleted(this, new CheckAliveCompletedEventArgs(e.Results, e.Error, e.Cancelled, e.UserState));\n            }\n        }\n        \n        public void CheckAliveAsync() {\n            this.CheckAliveAsync(null);\n        }\n        \n        public void CheckAliveAsync(object userState) {\n            if ((this.onBeginCheckAliveDelegate == null)) {\n                this.onBeginCheckAliveDelegate = new BeginOperationDelegate(this.OnBeginCheckAlive);\n            }\n            if ((this.onEndCheckAliveDelegate == null)) {\n                this.onEndCheckAliveDelegate = new EndOperationDelegate(this.OnEndCheckAlive);\n            }\n            if ((this.onCheckAliveCompletedDelegate == null)) {\n                this.onCheckAliveCompletedDelegate = new System.Threading.SendOrPostCallback(this.OnCheckAliveCompleted);\n            }\n            base.InvokeAsync(this.onBeginCheckAliveDelegate, null, this.onEndCheckAliveDelegate, this.onCheckAliveCompletedDelegate, userState);\n        }\n        \n        public System.Collections.Generic.List<string> GetActiveUsers() {\n            return base.Channel.GetActiveUsers();\n        }\n        \n        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]\n        public System.IAsyncResult BeginGetActiveUsers(System.AsyncCallback callback, object asyncState) {\n            return base.Channel.BeginGetActiveUsers(callback, asyncState);\n        }\n        \n        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]\n        public System.Collections.Generic.List<string> EndGetActiveUsers(System.IAsyncResult result) {\n            return base.Channel.EndGetActiveUsers(result);\n        }\n        \n        private System.IAsyncResult OnBeginGetActiveUsers(object[] inValues, System.AsyncCallback callback, object asyncState) {\n            return this.BeginGetActiveUsers(callback, asyncState);\n        }\n        \n        private object[] OnEndGetActiveUsers(System.IAsyncResult result) {\n            System.Collections.Generic.List<string> retVal = this.EndGetActiveUsers(result);\n            return new object[] {\n                    retVal};\n        }\n        \n        private void OnGetActiveUsersCompleted(object state) {\n            if ((this.GetActiveUsersCompleted != null)) {\n                InvokeAsyncCompletedEventArgs e = ((InvokeAsyncCompletedEventArgs)(state));\n                this.GetActiveUsersCompleted(this, new GetActiveUsersCompletedEventArgs(e.Results, e.Error, e.Cancelled, e.UserState));\n            }\n        }\n        \n        public void GetActiveUsersAsync() {\n            this.GetActiveUsersAsync(null);\n        }\n        \n        public void GetActiveUsersAsync(object userState) {\n            if ((this.onBeginGetActiveUsersDelegate == null)) {\n                this.onBeginGetActiveUsersDelegate = new BeginOperationDelegate(this.OnBeginGetActiveUsers);\n            }\n            if ((this.onEndGetActiveUsersDelegate == null)) {\n                this.onEndGetActiveUsersDelegate = new EndOperationDelegate(this.OnEndGetActiveUsers);\n            }\n            if ((this.onGetActiveUsersCompletedDelegate == null)) {\n                this.onGetActiveUsersCompletedDelegate = new System.Threading.SendOrPostCallback(this.OnGetActiveUsersCompleted);\n            }\n            base.InvokeAsync(this.onBeginGetActiveUsersDelegate, null, this.onEndGetActiveUsersDelegate, this.onGetActiveUsersCompletedDelegate, userState);\n        }\n        \n        public int AnnounceShutdown(System.TimeSpan timeToShutdown, System.TimeSpan shutdownLength, string message) {\n            return base.Channel.AnnounceShutdown(timeToShutdown, shutdownLength, message);\n        }\n        \n        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]\n        public System.IAsyncResult BeginAnnounceShutdown(System.TimeSpan timeToShutdown, System.TimeSpan shutdownLength, string message, System.AsyncCallback callback, object asyncState) {\n            return base.Channel.BeginAnnounceShutdown(timeToShutdown, shutdownLength, message, callback, asyncState);\n        }\n        \n        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]\n        public int EndAnnounceShutdown(System.IAsyncResult result) {\n            return base.Channel.EndAnnounceShutdown(result);\n        }\n        \n        private System.IAsyncResult OnBeginAnnounceShutdown(object[] inValues, System.AsyncCallback callback, object asyncState) {\n            System.TimeSpan timeToShutdown = ((System.TimeSpan)(inValues[0]));\n            System.TimeSpan shutdownLength = ((System.TimeSpan)(inValues[1]));\n            string message = ((string)(inValues[2]));\n            return this.BeginAnnounceShutdown(timeToShutdown, shutdownLength, message, callback, asyncState);\n        }\n        \n        private object[] OnEndAnnounceShutdown(System.IAsyncResult result) {\n            int retVal = this.EndAnnounceShutdown(result);\n            return new object[] {\n                    retVal};\n        }\n        \n        private void OnAnnounceShutdownCompleted(object state) {\n            if ((this.AnnounceShutdownCompleted != null)) {\n                InvokeAsyncCompletedEventArgs e = ((InvokeAsyncCompletedEventArgs)(state));\n                this.AnnounceShutdownCompleted(this, new AnnounceShutdownCompletedEventArgs(e.Results, e.Error, e.Cancelled, e.UserState));\n            }\n        }\n        \n        public void AnnounceShutdownAsync(System.TimeSpan timeToShutdown, System.TimeSpan shutdownLength, string message) {\n            this.AnnounceShutdownAsync(timeToShutdown, shutdownLength, message, null);\n        }\n        \n        public void AnnounceShutdownAsync(System.TimeSpan timeToShutdown, System.TimeSpan shutdownLength, string message, object userState) {\n            if ((this.onBeginAnnounceShutdownDelegate == null)) {\n                this.onBeginAnnounceShutdownDelegate = new BeginOperationDelegate(this.OnBeginAnnounceShutdown);\n            }\n            if ((this.onEndAnnounceShutdownDelegate == null)) {\n                this.onEndAnnounceShutdownDelegate = new EndOperationDelegate(this.OnEndAnnounceShutdown);\n            }\n            if ((this.onAnnounceShutdownCompletedDelegate == null)) {\n                this.onAnnounceShutdownCompletedDelegate = new System.Threading.SendOrPostCallback(this.OnAnnounceShutdownCompleted);\n            }\n            base.InvokeAsync(this.onBeginAnnounceShutdownDelegate, new object[] {\n                        timeToShutdown,\n                        shutdownLength,\n                        message}, this.onEndAnnounceShutdownDelegate, this.onAnnounceShutdownCompletedDelegate, userState);\n        }\n        \n        public void HarvestingFinished(MinerWars.CommonLIB.AppCode.Networking.MyMwcVoxelMaterialsEnum materialEnum, byte voxelContentHarvested) {\n            base.Channel.HarvestingFinished(materialEnum, voxelContentHarvested);\n        }\n        \n        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]\n        public System.IAsyncResult BeginHarvestingFinished(MinerWars.CommonLIB.AppCode.Networking.MyMwcVoxelMaterialsEnum materialEnum, byte voxelContentHarvested, System.AsyncCallback callback, object asyncState) {\n            return base.Channel.BeginHarvestingFinished(materialEnum, voxelContentHarvested, callback, asyncState);\n        }\n        \n        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]\n        public void EndHarvestingFinished(System.IAsyncResult result) {\n            base.Channel.EndHarvestingFinished(result);\n        }\n        \n        private System.IAsyncResult OnBeginHarvestingFinished(object[] inValues, System.AsyncCallback callback, object asyncState) {\n            MinerWars.CommonLIB.AppCode.Networking.MyMwcVoxelMaterialsEnum materialEnum = ((MinerWars.CommonLIB.AppCode.Networking.MyMwcVoxelMaterialsEnum)(inValues[0]));\n            byte voxelContentHarvested = ((byte)(inValues[1]));\n            return this.BeginHarvestingFinished(materialEnum, voxelContentHarvested, callback, asyncState);\n        }\n        \n        private object[] OnEndHarvestingFinished(System.IAsyncResult result) {\n            this.EndHarvestingFinished(result);\n            return null;\n        }\n        \n        private void OnHarvestingFinishedCompleted(object state) {\n            if ((this.HarvestingFinishedCompleted != null)) {\n                InvokeAsyncCompletedEventArgs e = ((InvokeAsyncCompletedEventArgs)(state));\n                this.HarvestingFinishedCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(e.Error, e.Cancelled, e.UserState));\n            }\n        }\n        \n        public void HarvestingFinishedAsync(MinerWars.CommonLIB.AppCode.Networking.MyMwcVoxelMaterialsEnum materialEnum, byte voxelContentHarvested) {\n            this.HarvestingFinishedAsync(materialEnum, voxelContentHarvested, null);\n        }\n        \n        public void HarvestingFinishedAsync(MinerWars.CommonLIB.AppCode.Networking.MyMwcVoxelMaterialsEnum materialEnum, byte voxelContentHarvested, object userState) {\n            if ((this.onBeginHarvestingFinishedDelegate == null)) {\n                this.onBeginHarvestingFinishedDelegate = new BeginOperationDelegate(this.OnBeginHarvestingFinished);\n            }\n            if ((this.onEndHarvestingFinishedDelegate == null)) {\n                this.onEndHarvestingFinishedDelegate = new EndOperationDelegate(this.OnEndHarvestingFinished);\n            }\n            if ((this.onHarvestingFinishedCompletedDelegate == null)) {\n                this.onHarvestingFinishedCompletedDelegate = new System.Threading.SendOrPostCallback(this.OnHarvestingFinishedCompleted);\n            }\n            base.InvokeAsync(this.onBeginHarvestingFinishedDelegate, new object[] {\n                        materialEnum,\n                        voxelContentHarvested}, this.onEndHarvestingFinishedDelegate, this.onHarvestingFinishedCompletedDelegate, userState);\n        }\n        \n        public byte[] LoadSmallShipTemplates() {\n            return base.Channel.LoadSmallShipTemplates();\n        }\n        \n        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]\n        public System.IAsyncResult BeginLoadSmallShipTemplates(System.AsyncCallback callback, object asyncState) {\n            return base.Channel.BeginLoadSmallShipTemplates(callback, asyncState);\n        }\n        \n        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]\n        public byte[] EndLoadSmallShipTemplates(System.IAsyncResult result) {\n            return base.Channel.EndLoadSmallShipTemplates(result);\n        }\n        \n        private System.IAsyncResult OnBeginLoadSmallShipTemplates(object[] inValues, System.AsyncCallback callback, object asyncState) {\n            return this.BeginLoadSmallShipTemplates(callback, asyncState);\n        }\n        \n        private object[] OnEndLoadSmallShipTemplates(System.IAsyncResult result) {\n            byte[] retVal = this.EndLoadSmallShipTemplates(result);\n            return new object[] {\n                    retVal};\n        }\n        \n        private void OnLoadSmallShipTemplatesCompleted(object state) {\n            if ((this.LoadSmallShipTemplatesCompleted != null)) {\n                InvokeAsyncCompletedEventArgs e = ((InvokeAsyncCompletedEventArgs)(state));\n                this.LoadSmallShipTemplatesCompleted(this, new LoadSmallShipTemplatesCompletedEventArgs(e.Results, e.Error, e.Cancelled, e.UserState));\n            }\n        }\n        \n        public void LoadSmallShipTemplatesAsync() {\n            this.LoadSmallShipTemplatesAsync(null);\n        }\n        \n        public void LoadSmallShipTemplatesAsync(object userState) {\n            if ((this.onBeginLoadSmallShipTemplatesDelegate == null)) {\n                this.onBeginLoadSmallShipTemplatesDelegate = new BeginOperationDelegate(this.OnBeginLoadSmallShipTemplates);\n            }\n            if ((this.onEndLoadSmallShipTemplatesDelegate == null)) {\n                this.onEndLoadSmallShipTemplatesDelegate = new EndOperationDelegate(this.OnEndLoadSmallShipTemplates);\n            }\n            if ((this.onLoadSmallShipTemplatesCompletedDelegate == null)) {\n                this.onLoadSmallShipTemplatesCompletedDelegate = new System.Threading.SendOrPostCallback(this.OnLoadSmallShipTemplatesCompleted);\n            }\n            base.InvokeAsync(this.onBeginLoadSmallShipTemplatesDelegate, null, this.onEndLoadSmallShipTemplatesDelegate, this.onLoadSmallShipTemplatesCompletedDelegate, userState);\n        }\n        \n        public void SaveSmallShipTemplates(byte[] smallShipTemplates) {\n            base.Channel.SaveSmallShipTemplates(smallShipTemplates);\n        }\n        \n        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]\n        public System.IAsyncResult BeginSaveSmallShipTemplates(byte[] smallShipTemplates, System.AsyncCallback callback, object asyncState) {\n            return base.Channel.BeginSaveSmallShipTemplates(smallShipTemplates, callback, asyncState);\n        }\n        \n        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]\n        public void EndSaveSmallShipTemplates(System.IAsyncResult result) {\n            base.Channel.EndSaveSmallShipTemplates(result);\n        }\n        \n        private System.IAsyncResult OnBeginSaveSmallShipTemplates(object[] inValues, System.AsyncCallback callback, object asyncState) {\n            byte[] smallShipTemplates = ((byte[])(inValues[0]));\n            return this.BeginSaveSmallShipTemplates(smallShipTemplates, callback, asyncState);\n        }\n        \n        private object[] OnEndSaveSmallShipTemplates(System.IAsyncResult result) {\n            this.EndSaveSmallShipTemplates(result);\n            return null;\n        }\n        \n        private void OnSaveSmallShipTemplatesCompleted(object state) {\n            if ((this.SaveSmallShipTemplatesCompleted != null)) {\n                InvokeAsyncCompletedEventArgs e = ((InvokeAsyncCompletedEventArgs)(state));\n                this.SaveSmallShipTemplatesCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(e.Error, e.Cancelled, e.UserState));\n            }\n        }\n        \n        public void SaveSmallShipTemplatesAsync(byte[] smallShipTemplates) {\n            this.SaveSmallShipTemplatesAsync(smallShipTemplates, null);\n        }\n        \n        public void SaveSmallShipTemplatesAsync(byte[] smallShipTemplates, object userState) {\n            if ((this.onBeginSaveSmallShipTemplatesDelegate == null)) {\n                this.onBeginSaveSmallShipTemplatesDelegate = new BeginOperationDelegate(this.OnBeginSaveSmallShipTemplates);\n            }\n            if ((this.onEndSaveSmallShipTemplatesDelegate == null)) {\n                this.onEndSaveSmallShipTemplatesDelegate = new EndOperationDelegate(this.OnEndSaveSmallShipTemplates);\n            }\n            if ((this.onSaveSmallShipTemplatesCompletedDelegate == null)) {\n                this.onSaveSmallShipTemplatesCompletedDelegate = new System.Threading.SendOrPostCallback(this.OnSaveSmallShipTemplatesCompleted);\n            }\n            base.InvokeAsync(this.onBeginSaveSmallShipTemplatesDelegate, new object[] {\n                        smallShipTemplates}, this.onEndSaveSmallShipTemplatesDelegate, this.onSaveSmallShipTemplatesCompletedDelegate, userState);\n        }\n        \n        public byte[] NewGame(System.Nullable<MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int> startSector) {\n            return base.Channel.NewGame(startSector);\n        }\n        \n        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]\n        public System.IAsyncResult BeginNewGame(System.Nullable<MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int> startSector, System.AsyncCallback callback, object asyncState) {\n            return base.Channel.BeginNewGame(startSector, callback, asyncState);\n        }\n        \n        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]\n        public byte[] EndNewGame(System.IAsyncResult result) {\n            return base.Channel.EndNewGame(result);\n        }\n        \n        private System.IAsyncResult OnBeginNewGame(object[] inValues, System.AsyncCallback callback, object asyncState) {\n            System.Nullable<MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int> startSector = ((System.Nullable<MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int>)(inValues[0]));\n            return this.BeginNewGame(startSector, callback, asyncState);\n        }\n        \n        private object[] OnEndNewGame(System.IAsyncResult result) {\n            byte[] retVal = this.EndNewGame(result);\n            return new object[] {\n                    retVal};\n        }\n        \n        private void OnNewGameCompleted(object state) {\n            if ((this.NewGameCompleted != null)) {\n                InvokeAsyncCompletedEventArgs e = ((InvokeAsyncCompletedEventArgs)(state));\n                this.NewGameCompleted(this, new NewGameCompletedEventArgs(e.Results, e.Error, e.Cancelled, e.UserState));\n            }\n        }\n        \n        public void NewGameAsync(System.Nullable<MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int> startSector) {\n            this.NewGameAsync(startSector, null);\n        }\n        \n        public void NewGameAsync(System.Nullable<MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int> startSector, object userState) {\n            if ((this.onBeginNewGameDelegate == null)) {\n                this.onBeginNewGameDelegate = new BeginOperationDelegate(this.OnBeginNewGame);\n            }\n            if ((this.onEndNewGameDelegate == null)) {\n                this.onEndNewGameDelegate = new EndOperationDelegate(this.OnEndNewGame);\n            }\n            if ((this.onNewGameCompletedDelegate == null)) {\n                this.onNewGameCompletedDelegate = new System.Threading.SendOrPostCallback(this.OnNewGameCompleted);\n            }\n            base.InvokeAsync(this.onBeginNewGameDelegate, new object[] {\n                        startSector}, this.onEndNewGameDelegate, this.onNewGameCompletedDelegate, userState);\n        }\n        \n        public byte[] LoadLastCheckpoint() {\n            return base.Channel.LoadLastCheckpoint();\n        }\n        \n        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]\n        public System.IAsyncResult BeginLoadLastCheckpoint(System.AsyncCallback callback, object asyncState) {\n            return base.Channel.BeginLoadLastCheckpoint(callback, asyncState);\n        }\n        \n        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]\n        public byte[] EndLoadLastCheckpoint(System.IAsyncResult result) {\n            return base.Channel.EndLoadLastCheckpoint(result);\n        }\n        \n        private System.IAsyncResult OnBeginLoadLastCheckpoint(object[] inValues, System.AsyncCallback callback, object asyncState) {\n            return this.BeginLoadLastCheckpoint(callback, asyncState);\n        }\n        \n        private object[] OnEndLoadLastCheckpoint(System.IAsyncResult result) {\n            byte[] retVal = this.EndLoadLastCheckpoint(result);\n            return new object[] {\n                    retVal};\n        }\n        \n        private void OnLoadLastCheckpointCompleted(object state) {\n            if ((this.LoadLastCheckpointCompleted != null)) {\n                InvokeAsyncCompletedEventArgs e = ((InvokeAsyncCompletedEventArgs)(state));\n                this.LoadLastCheckpointCompleted(this, new LoadLastCheckpointCompletedEventArgs(e.Results, e.Error, e.Cancelled, e.UserState));\n            }\n        }\n        \n        public void LoadLastCheckpointAsync() {\n            this.LoadLastCheckpointAsync(null);\n        }\n        \n        public void LoadLastCheckpointAsync(object userState) {\n            if ((this.onBeginLoadLastCheckpointDelegate == null)) {\n                this.onBeginLoadLastCheckpointDelegate = new BeginOperationDelegate(this.OnBeginLoadLastCheckpoint);\n            }\n            if ((this.onEndLoadLastCheckpointDelegate == null)) {\n                this.onEndLoadLastCheckpointDelegate = new EndOperationDelegate(this.OnEndLoadLastCheckpoint);\n            }\n            if ((this.onLoadLastCheckpointCompletedDelegate == null)) {\n                this.onLoadLastCheckpointCompletedDelegate = new System.Threading.SendOrPostCallback(this.OnLoadLastCheckpointCompleted);\n            }\n            base.InvokeAsync(this.onBeginLoadLastCheckpointDelegate, null, this.onEndLoadLastCheckpointDelegate, this.onLoadLastCheckpointCompletedDelegate, userState);\n        }\n        \n        public void SaveLastCheckpoint(byte[] checkpointBuilder) {\n            base.Channel.SaveLastCheckpoint(checkpointBuilder);\n        }\n        \n        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]\n        public System.IAsyncResult BeginSaveLastCheckpoint(byte[] checkpointBuilder, System.AsyncCallback callback, object asyncState) {\n            return base.Channel.BeginSaveLastCheckpoint(checkpointBuilder, callback, asyncState);\n        }\n        \n        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]\n        public void EndSaveLastCheckpoint(System.IAsyncResult result) {\n            base.Channel.EndSaveLastCheckpoint(result);\n        }\n        \n        private System.IAsyncResult OnBeginSaveLastCheckpoint(object[] inValues, System.AsyncCallback callback, object asyncState) {\n            byte[] checkpointBuilder = ((byte[])(inValues[0]));\n            return this.BeginSaveLastCheckpoint(checkpointBuilder, callback, asyncState);\n        }\n        \n        private object[] OnEndSaveLastCheckpoint(System.IAsyncResult result) {\n            this.EndSaveLastCheckpoint(result);\n            return null;\n        }\n        \n        private void OnSaveLastCheckpointCompleted(object state) {\n            if ((this.SaveLastCheckpointCompleted != null)) {\n                InvokeAsyncCompletedEventArgs e = ((InvokeAsyncCompletedEventArgs)(state));\n                this.SaveLastCheckpointCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(e.Error, e.Cancelled, e.UserState));\n            }\n        }\n        \n        public void SaveLastCheckpointAsync(byte[] checkpointBuilder) {\n            this.SaveLastCheckpointAsync(checkpointBuilder, null);\n        }\n        \n        public void SaveLastCheckpointAsync(byte[] checkpointBuilder, object userState) {\n            if ((this.onBeginSaveLastCheckpointDelegate == null)) {\n                this.onBeginSaveLastCheckpointDelegate = new BeginOperationDelegate(this.OnBeginSaveLastCheckpoint);\n            }\n            if ((this.onEndSaveLastCheckpointDelegate == null)) {\n                this.onEndSaveLastCheckpointDelegate = new EndOperationDelegate(this.OnEndSaveLastCheckpoint);\n            }\n            if ((this.onSaveLastCheckpointCompletedDelegate == null)) {\n                this.onSaveLastCheckpointCompletedDelegate = new System.Threading.SendOrPostCallback(this.OnSaveLastCheckpointCompleted);\n            }\n            base.InvokeAsync(this.onBeginSaveLastCheckpointDelegate, new object[] {\n                        checkpointBuilder}, this.onEndSaveLastCheckpointDelegate, this.onSaveLastCheckpointCompletedDelegate, userState);\n        }\n        \n        public byte[] LoadSandbox(MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int sectorPosition, System.Nullable<int> userId, System.Nullable<int> clientSectorVersion) {\n            return base.Channel.LoadSandbox(sectorPosition, userId, clientSectorVersion);\n        }\n        \n        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]\n        public System.IAsyncResult BeginLoadSandbox(MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int sectorPosition, System.Nullable<int> userId, System.Nullable<int> clientSectorVersion, System.AsyncCallback callback, object asyncState) {\n            return base.Channel.BeginLoadSandbox(sectorPosition, userId, clientSectorVersion, callback, asyncState);\n        }\n        \n        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]\n        public byte[] EndLoadSandbox(System.IAsyncResult result) {\n            return base.Channel.EndLoadSandbox(result);\n        }\n        \n        private System.IAsyncResult OnBeginLoadSandbox(object[] inValues, System.AsyncCallback callback, object asyncState) {\n            MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int sectorPosition = ((MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int)(inValues[0]));\n            System.Nullable<int> userId = ((System.Nullable<int>)(inValues[1]));\n            System.Nullable<int> clientSectorVersion = ((System.Nullable<int>)(inValues[2]));\n            return this.BeginLoadSandbox(sectorPosition, userId, clientSectorVersion, callback, asyncState);\n        }\n        \n        private object[] OnEndLoadSandbox(System.IAsyncResult result) {\n            byte[] retVal = this.EndLoadSandbox(result);\n            return new object[] {\n                    retVal};\n        }\n        \n        private void OnLoadSandboxCompleted(object state) {\n            if ((this.LoadSandboxCompleted != null)) {\n                InvokeAsyncCompletedEventArgs e = ((InvokeAsyncCompletedEventArgs)(state));\n                this.LoadSandboxCompleted(this, new LoadSandboxCompletedEventArgs(e.Results, e.Error, e.Cancelled, e.UserState));\n            }\n        }\n        \n        public void LoadSandboxAsync(MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int sectorPosition, System.Nullable<int> userId, System.Nullable<int> clientSectorVersion) {\n            this.LoadSandboxAsync(sectorPosition, userId, clientSectorVersion, null);\n        }\n        \n        public void LoadSandboxAsync(MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int sectorPosition, System.Nullable<int> userId, System.Nullable<int> clientSectorVersion, object userState) {\n            if ((this.onBeginLoadSandboxDelegate == null)) {\n                this.onBeginLoadSandboxDelegate = new BeginOperationDelegate(this.OnBeginLoadSandbox);\n            }\n            if ((this.onEndLoadSandboxDelegate == null)) {\n                this.onEndLoadSandboxDelegate = new EndOperationDelegate(this.OnEndLoadSandbox);\n            }\n            if ((this.onLoadSandboxCompletedDelegate == null)) {\n                this.onLoadSandboxCompletedDelegate = new System.Threading.SendOrPostCallback(this.OnLoadSandboxCompleted);\n            }\n            base.InvokeAsync(this.onBeginLoadSandboxDelegate, new object[] {\n                        sectorPosition,\n                        userId,\n                        clientSectorVersion}, this.onEndLoadSandboxDelegate, this.onLoadSandboxCompletedDelegate, userState);\n        }\n        \n        public byte[] LoadStoryEditor(MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int sectorPosition) {\n            return base.Channel.LoadStoryEditor(sectorPosition);\n        }\n        \n        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]\n        public System.IAsyncResult BeginLoadStoryEditor(MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int sectorPosition, System.AsyncCallback callback, object asyncState) {\n            return base.Channel.BeginLoadStoryEditor(sectorPosition, callback, asyncState);\n        }\n        \n        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]\n        public byte[] EndLoadStoryEditor(System.IAsyncResult result) {\n            return base.Channel.EndLoadStoryEditor(result);\n        }\n        \n        private System.IAsyncResult OnBeginLoadStoryEditor(object[] inValues, System.AsyncCallback callback, object asyncState) {\n            MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int sectorPosition = ((MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int)(inValues[0]));\n            return this.BeginLoadStoryEditor(sectorPosition, callback, asyncState);\n        }\n        \n        private object[] OnEndLoadStoryEditor(System.IAsyncResult result) {\n            byte[] retVal = this.EndLoadStoryEditor(result);\n            return new object[] {\n                    retVal};\n        }\n        \n        private void OnLoadStoryEditorCompleted(object state) {\n            if ((this.LoadStoryEditorCompleted != null)) {\n                InvokeAsyncCompletedEventArgs e = ((InvokeAsyncCompletedEventArgs)(state));\n                this.LoadStoryEditorCompleted(this, new LoadStoryEditorCompletedEventArgs(e.Results, e.Error, e.Cancelled, e.UserState));\n            }\n        }\n        \n        public void LoadStoryEditorAsync(MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int sectorPosition) {\n            this.LoadStoryEditorAsync(sectorPosition, null);\n        }\n        \n        public void LoadStoryEditorAsync(MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int sectorPosition, object userState) {\n            if ((this.onBeginLoadStoryEditorDelegate == null)) {\n                this.onBeginLoadStoryEditorDelegate = new BeginOperationDelegate(this.OnBeginLoadStoryEditor);\n            }\n            if ((this.onEndLoadStoryEditorDelegate == null)) {\n                this.onEndLoadStoryEditorDelegate = new EndOperationDelegate(this.OnEndLoadStoryEditor);\n            }\n            if ((this.onLoadStoryEditorCompletedDelegate == null)) {\n                this.onLoadStoryEditorCompletedDelegate = new System.Threading.SendOrPostCallback(this.OnLoadStoryEditorCompleted);\n            }\n            base.InvokeAsync(this.onBeginLoadStoryEditorDelegate, new object[] {\n                        sectorPosition}, this.onEndLoadStoryEditorDelegate, this.onLoadStoryEditorCompletedDelegate, userState);\n        }\n        \n        public void SaveStoryEditor(byte[] sectorObjectBuilder) {\n            base.Channel.SaveStoryEditor(sectorObjectBuilder);\n        }\n        \n        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]\n        public System.IAsyncResult BeginSaveStoryEditor(byte[] sectorObjectBuilder, System.AsyncCallback callback, object asyncState) {\n            return base.Channel.BeginSaveStoryEditor(sectorObjectBuilder, callback, asyncState);\n        }\n        \n        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]\n        public void EndSaveStoryEditor(System.IAsyncResult result) {\n            base.Channel.EndSaveStoryEditor(result);\n        }\n        \n        private System.IAsyncResult OnBeginSaveStoryEditor(object[] inValues, System.AsyncCallback callback, object asyncState) {\n            byte[] sectorObjectBuilder = ((byte[])(inValues[0]));\n            return this.BeginSaveStoryEditor(sectorObjectBuilder, callback, asyncState);\n        }\n        \n        private object[] OnEndSaveStoryEditor(System.IAsyncResult result) {\n            this.EndSaveStoryEditor(result);\n            return null;\n        }\n        \n        private void OnSaveStoryEditorCompleted(object state) {\n            if ((this.SaveStoryEditorCompleted != null)) {\n                InvokeAsyncCompletedEventArgs e = ((InvokeAsyncCompletedEventArgs)(state));\n                this.SaveStoryEditorCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(e.Error, e.Cancelled, e.UserState));\n            }\n        }\n        \n        public void SaveStoryEditorAsync(byte[] sectorObjectBuilder) {\n            this.SaveStoryEditorAsync(sectorObjectBuilder, null);\n        }\n        \n        public void SaveStoryEditorAsync(byte[] sectorObjectBuilder, object userState) {\n            if ((this.onBeginSaveStoryEditorDelegate == null)) {\n                this.onBeginSaveStoryEditorDelegate = new BeginOperationDelegate(this.OnBeginSaveStoryEditor);\n            }\n            if ((this.onEndSaveStoryEditorDelegate == null)) {\n                this.onEndSaveStoryEditorDelegate = new EndOperationDelegate(this.OnEndSaveStoryEditor);\n            }\n            if ((this.onSaveStoryEditorCompletedDelegate == null)) {\n                this.onSaveStoryEditorCompletedDelegate = new System.Threading.SendOrPostCallback(this.OnSaveStoryEditorCompleted);\n            }\n            base.InvokeAsync(this.onBeginSaveStoryEditorDelegate, new object[] {\n                        sectorObjectBuilder}, this.onEndSaveStoryEditorDelegate, this.onSaveStoryEditorCompletedDelegate, userState);\n        }\n        \n        public byte[] LoadSandboxEditor(MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int sectorPosition, System.Nullable<int> clientSectorVersion) {\n            return base.Channel.LoadSandboxEditor(sectorPosition, clientSectorVersion);\n        }\n        \n        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]\n        public System.IAsyncResult BeginLoadSandboxEditor(MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int sectorPosition, System.Nullable<int> clientSectorVersion, System.AsyncCallback callback, object asyncState) {\n            return base.Channel.BeginLoadSandboxEditor(sectorPosition, clientSectorVersion, callback, asyncState);\n        }\n        \n        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]\n        public byte[] EndLoadSandboxEditor(System.IAsyncResult result) {\n            return base.Channel.EndLoadSandboxEditor(result);\n        }\n        \n        private System.IAsyncResult OnBeginLoadSandboxEditor(object[] inValues, System.AsyncCallback callback, object asyncState) {\n            MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int sectorPosition = ((MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int)(inValues[0]));\n            System.Nullable<int> clientSectorVersion = ((System.Nullable<int>)(inValues[1]));\n            return this.BeginLoadSandboxEditor(sectorPosition, clientSectorVersion, callback, asyncState);\n        }\n        \n        private object[] OnEndLoadSandboxEditor(System.IAsyncResult result) {\n            byte[] retVal = this.EndLoadSandboxEditor(result);\n            return new object[] {\n                    retVal};\n        }\n        \n        private void OnLoadSandboxEditorCompleted(object state) {\n            if ((this.LoadSandboxEditorCompleted != null)) {\n                InvokeAsyncCompletedEventArgs e = ((InvokeAsyncCompletedEventArgs)(state));\n                this.LoadSandboxEditorCompleted(this, new LoadSandboxEditorCompletedEventArgs(e.Results, e.Error, e.Cancelled, e.UserState));\n            }\n        }\n        \n        public void LoadSandboxEditorAsync(MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int sectorPosition, System.Nullable<int> clientSectorVersion) {\n            this.LoadSandboxEditorAsync(sectorPosition, clientSectorVersion, null);\n        }\n        \n        public void LoadSandboxEditorAsync(MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int sectorPosition, System.Nullable<int> clientSectorVersion, object userState) {\n            if ((this.onBeginLoadSandboxEditorDelegate == null)) {\n                this.onBeginLoadSandboxEditorDelegate = new BeginOperationDelegate(this.OnBeginLoadSandboxEditor);\n            }\n            if ((this.onEndLoadSandboxEditorDelegate == null)) {\n                this.onEndLoadSandboxEditorDelegate = new EndOperationDelegate(this.OnEndLoadSandboxEditor);\n            }\n            if ((this.onLoadSandboxEditorCompletedDelegate == null)) {\n                this.onLoadSandboxEditorCompletedDelegate = new System.Threading.SendOrPostCallback(this.OnLoadSandboxEditorCompleted);\n            }\n            base.InvokeAsync(this.onBeginLoadSandboxEditorDelegate, new object[] {\n                        sectorPosition,\n                        clientSectorVersion}, this.onEndLoadSandboxEditorDelegate, this.onLoadSandboxEditorCompletedDelegate, userState);\n        }\n        \n        public void SaveSandboxEditor(byte[] sectorObjectBuilder) {\n            base.Channel.SaveSandboxEditor(sectorObjectBuilder);\n        }\n        \n        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]\n        public System.IAsyncResult BeginSaveSandboxEditor(byte[] sectorObjectBuilder, System.AsyncCallback callback, object asyncState) {\n            return base.Channel.BeginSaveSandboxEditor(sectorObjectBuilder, callback, asyncState);\n        }\n        \n        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]\n        public void EndSaveSandboxEditor(System.IAsyncResult result) {\n            base.Channel.EndSaveSandboxEditor(result);\n        }\n        \n        private System.IAsyncResult OnBeginSaveSandboxEditor(object[] inValues, System.AsyncCallback callback, object asyncState) {\n            byte[] sectorObjectBuilder = ((byte[])(inValues[0]));\n            return this.BeginSaveSandboxEditor(sectorObjectBuilder, callback, asyncState);\n        }\n        \n        private object[] OnEndSaveSandboxEditor(System.IAsyncResult result) {\n            this.EndSaveSandboxEditor(result);\n            return null;\n        }\n        \n        private void OnSaveSandboxEditorCompleted(object state) {\n            if ((this.SaveSandboxEditorCompleted != null)) {\n                InvokeAsyncCompletedEventArgs e = ((InvokeAsyncCompletedEventArgs)(state));\n                this.SaveSandboxEditorCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(e.Error, e.Cancelled, e.UserState));\n            }\n        }\n        \n        public void SaveSandboxEditorAsync(byte[] sectorObjectBuilder) {\n            this.SaveSandboxEditorAsync(sectorObjectBuilder, null);\n        }\n        \n        public void SaveSandboxEditorAsync(byte[] sectorObjectBuilder, object userState) {\n            if ((this.onBeginSaveSandboxEditorDelegate == null)) {\n                this.onBeginSaveSandboxEditorDelegate = new BeginOperationDelegate(this.OnBeginSaveSandboxEditor);\n            }\n            if ((this.onEndSaveSandboxEditorDelegate == null)) {\n                this.onEndSaveSandboxEditorDelegate = new EndOperationDelegate(this.OnEndSaveSandboxEditor);\n            }\n            if ((this.onSaveSandboxEditorCompletedDelegate == null)) {\n                this.onSaveSandboxEditorCompletedDelegate = new System.Threading.SendOrPostCallback(this.OnSaveSandboxEditorCompleted);\n            }\n            base.InvokeAsync(this.onBeginSaveSandboxEditorDelegate, new object[] {\n                        sectorObjectBuilder}, this.onEndSaveSandboxEditorDelegate, this.onSaveSandboxEditorCompletedDelegate, userState);\n        }\n        \n        public byte[] LoadSector() {\n            return base.Channel.LoadSector();\n        }\n        \n        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]\n        public System.IAsyncResult BeginLoadSector(System.AsyncCallback callback, object asyncState) {\n            return base.Channel.BeginLoadSector(callback, asyncState);\n        }\n        \n        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]\n        public byte[] EndLoadSector(System.IAsyncResult result) {\n            return base.Channel.EndLoadSector(result);\n        }\n        \n        private System.IAsyncResult OnBeginLoadSector(object[] inValues, System.AsyncCallback callback, object asyncState) {\n            return this.BeginLoadSector(callback, asyncState);\n        }\n        \n        private object[] OnEndLoadSector(System.IAsyncResult result) {\n            byte[] retVal = this.EndLoadSector(result);\n            return new object[] {\n                    retVal};\n        }\n        \n        private void OnLoadSectorCompleted(object state) {\n            if ((this.LoadSectorCompleted != null)) {\n                InvokeAsyncCompletedEventArgs e = ((InvokeAsyncCompletedEventArgs)(state));\n                this.LoadSectorCompleted(this, new LoadSectorCompletedEventArgs(e.Results, e.Error, e.Cancelled, e.UserState));\n            }\n        }\n        \n        public void LoadSectorAsync() {\n            this.LoadSectorAsync(null);\n        }\n        \n        public void LoadSectorAsync(object userState) {\n            if ((this.onBeginLoadSectorDelegate == null)) {\n                this.onBeginLoadSectorDelegate = new BeginOperationDelegate(this.OnBeginLoadSector);\n            }\n            if ((this.onEndLoadSectorDelegate == null)) {\n                this.onEndLoadSectorDelegate = new EndOperationDelegate(this.OnEndLoadSector);\n            }\n            if ((this.onLoadSectorCompletedDelegate == null)) {\n                this.onLoadSectorCompletedDelegate = new System.Threading.SendOrPostCallback(this.OnLoadSectorCompleted);\n            }\n            base.InvokeAsync(this.onBeginLoadSectorDelegate, null, this.onEndLoadSectorDelegate, this.onLoadSectorCompletedDelegate, userState);\n        }\n        \n        public byte[] Travel(MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int targetSector, System.Nullable<int> clientSectorVersion) {\n            return base.Channel.Travel(targetSector, clientSectorVersion);\n        }\n        \n        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]\n        public System.IAsyncResult BeginTravel(MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int targetSector, System.Nullable<int> clientSectorVersion, System.AsyncCallback callback, object asyncState) {\n            return base.Channel.BeginTravel(targetSector, clientSectorVersion, callback, asyncState);\n        }\n        \n        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]\n        public byte[] EndTravel(System.IAsyncResult result) {\n            return base.Channel.EndTravel(result);\n        }\n        \n        private System.IAsyncResult OnBeginTravel(object[] inValues, System.AsyncCallback callback, object asyncState) {\n            MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int targetSector = ((MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int)(inValues[0]));\n            System.Nullable<int> clientSectorVersion = ((System.Nullable<int>)(inValues[1]));\n            return this.BeginTravel(targetSector, clientSectorVersion, callback, asyncState);\n        }\n        \n        private object[] OnEndTravel(System.IAsyncResult result) {\n            byte[] retVal = this.EndTravel(result);\n            return new object[] {\n                    retVal};\n        }\n        \n        private void OnTravelCompleted(object state) {\n            if ((this.TravelCompleted != null)) {\n                InvokeAsyncCompletedEventArgs e = ((InvokeAsyncCompletedEventArgs)(state));\n                this.TravelCompleted(this, new TravelCompletedEventArgs(e.Results, e.Error, e.Cancelled, e.UserState));\n            }\n        }\n        \n        public void TravelAsync(MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int targetSector, System.Nullable<int> clientSectorVersion) {\n            this.TravelAsync(targetSector, clientSectorVersion, null);\n        }\n        \n        public void TravelAsync(MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int targetSector, System.Nullable<int> clientSectorVersion, object userState) {\n            if ((this.onBeginTravelDelegate == null)) {\n                this.onBeginTravelDelegate = new BeginOperationDelegate(this.OnBeginTravel);\n            }\n            if ((this.onEndTravelDelegate == null)) {\n                this.onEndTravelDelegate = new EndOperationDelegate(this.OnEndTravel);\n            }\n            if ((this.onTravelCompletedDelegate == null)) {\n                this.onTravelCompletedDelegate = new System.Threading.SendOrPostCallback(this.OnTravelCompleted);\n            }\n            base.InvokeAsync(this.onBeginTravelDelegate, new object[] {\n                        targetSector,\n                        clientSectorVersion}, this.onEndTravelDelegate, this.onTravelCompletedDelegate, userState);\n        }\n        \n        public byte[] LoadSectorGroups(MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int sectorPosition, System.Nullable<int> clientSectorVersion) {\n            return base.Channel.LoadSectorGroups(sectorPosition, clientSectorVersion);\n        }\n        \n        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]\n        public System.IAsyncResult BeginLoadSectorGroups(MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int sectorPosition, System.Nullable<int> clientSectorVersion, System.AsyncCallback callback, object asyncState) {\n            return base.Channel.BeginLoadSectorGroups(sectorPosition, clientSectorVersion, callback, asyncState);\n        }\n        \n        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]\n        public byte[] EndLoadSectorGroups(System.IAsyncResult result) {\n            return base.Channel.EndLoadSectorGroups(result);\n        }\n        \n        private System.IAsyncResult OnBeginLoadSectorGroups(object[] inValues, System.AsyncCallback callback, object asyncState) {\n            MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int sectorPosition = ((MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int)(inValues[0]));\n            System.Nullable<int> clientSectorVersion = ((System.Nullable<int>)(inValues[1]));\n            return this.BeginLoadSectorGroups(sectorPosition, clientSectorVersion, callback, asyncState);\n        }\n        \n        private object[] OnEndLoadSectorGroups(System.IAsyncResult result) {\n            byte[] retVal = this.EndLoadSectorGroups(result);\n            return new object[] {\n                    retVal};\n        }\n        \n        private void OnLoadSectorGroupsCompleted(object state) {\n            if ((this.LoadSectorGroupsCompleted != null)) {\n                InvokeAsyncCompletedEventArgs e = ((InvokeAsyncCompletedEventArgs)(state));\n                this.LoadSectorGroupsCompleted(this, new LoadSectorGroupsCompletedEventArgs(e.Results, e.Error, e.Cancelled, e.UserState));\n            }\n        }\n        \n        public void LoadSectorGroupsAsync(MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int sectorPosition, System.Nullable<int> clientSectorVersion) {\n            this.LoadSectorGroupsAsync(sectorPosition, clientSectorVersion, null);\n        }\n        \n        public void LoadSectorGroupsAsync(MinerWars.CommonLIB.AppCode.Utils.MyMwcVector3Int sectorPosition, System.Nullable<int> clientSectorVersion, object userState) {\n            if ((this.onBeginLoadSectorGroupsDelegate == null)) {\n                this.onBeginLoadSectorGroupsDelegate = new BeginOperationDelegate(this.OnBeginLoadSectorGroups);\n            }\n            if ((this.onEndLoadSectorGroupsDelegate == null)) {\n                this.onEndLoadSectorGroupsDelegate = new EndOperationDelegate(this.OnEndLoadSectorGroups);\n            }\n            if ((this.onLoadSectorGroupsCompletedDelegate == null)) {\n                this.onLoadSectorGroupsCompletedDelegate = new System.Threading.SendOrPostCallback(this.OnLoadSectorGroupsCompleted);\n            }\n            base.InvokeAsync(this.onBeginLoadSectorGroupsDelegate, new object[] {\n                        sectorPosition,\n                        clientSectorVersion}, this.onEndLoadSectorGroupsDelegate, this.onLoadSectorGroupsCompletedDelegate, userState);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameLib/Service References/AppCode.Networking.SectorService/Reference.svcmap",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<ReferenceGroup xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" ID=\"a3726471-0d59-4158-ba04-e327cf59848b\" xmlns=\"urn:schemas-microsoft-com:xml-wcfservicemap\">\n  <ClientOptions>\n    <GenerateAsynchronousMethods>true</GenerateAsynchronousMethods>\n    <EnableDataBinding>true</EnableDataBinding>\n    <ExcludedTypes />\n    <ImportXmlTypes>false</ImportXmlTypes>\n    <GenerateInternalTypes>false</GenerateInternalTypes>\n    <GenerateMessageContracts>false</GenerateMessageContracts>\n    <NamespaceMappings />\n    <CollectionMappings>\n      <CollectionMapping TypeName=\"System.Collections.Generic.List`1\" Category=\"List\" />\n    </CollectionMappings>\n    <GenerateSerializableTypes>true</GenerateSerializableTypes>\n    <Serializer>Auto</Serializer>\n    <UseSerializerForFaults>true</UseSerializerForFaults>\n    <ReferenceAllAssemblies>true</ReferenceAllAssemblies>\n    <ReferencedAssemblies />\n    <ReferencedDataContractTypes />\n    <ServiceContractMappings />\n  </ClientOptions>\n  <MetadataSources>\n    <MetadataSource Address=\"net.tcp://localhost:25001/\" Protocol=\"mex\" SourceId=\"1\" />\n  </MetadataSources>\n  <Metadata>\n    <MetadataFile FileName=\"service.wsdl\" MetadataType=\"Wsdl\" ID=\"9f67b996-d3c2-489c-b52e-f24cb4bb9411\" SourceId=\"1\" SourceUrl=\"net.tcp://localhost:25001/\" />\n    <MetadataFile FileName=\"service.xsd\" MetadataType=\"Schema\" ID=\"e98c2034-f291-4e49-83aa-2d513bcf8d9c\" SourceId=\"1\" SourceUrl=\"net.tcp://localhost:25001/\" />\n    <MetadataFile FileName=\"service1.xsd\" MetadataType=\"Schema\" ID=\"dad296d6-dffc-4ce3-aad3-5d6730c949ca\" SourceId=\"1\" SourceUrl=\"net.tcp://localhost:25001/\" />\n    <MetadataFile FileName=\"SectorServerLIB.SectorService.xsd\" MetadataType=\"Schema\" ID=\"3917aafa-9b5e-4726-97fe-bf81d27335d0\" SourceId=\"1\" SourceUrl=\"net.tcp://localhost:25001/\" />\n    <MetadataFile FileName=\"MinerWars.CommonLIB.AppCode.Networking.xsd\" MetadataType=\"Schema\" ID=\"d5bac3f5-1c32-4f5e-81eb-1894b07b3177\" SourceId=\"1\" SourceUrl=\"net.tcp://localhost:25001/\" />\n    <MetadataFile FileName=\"MinerWars.CommonLIB.AppCode.Utils.xsd\" MetadataType=\"Schema\" ID=\"6304f84b-23e3-4dba-bccb-b1831e7f555e\" SourceId=\"1\" SourceUrl=\"net.tcp://localhost:25001/\" />\n    <MetadataFile FileName=\"MinerWars.CommonLIB.AppCode.Networking.Services.xsd\" MetadataType=\"Schema\" ID=\"c1fcf9a8-aeaa-43b1-8e08-db9a99765f95\" SourceId=\"1\" SourceUrl=\"net.tcp://localhost:25001/\" />\n    <MetadataFile FileName=\"Microsoft.Xna.Framework.xsd\" MetadataType=\"Schema\" ID=\"f1d99c10-5f18-4cbb-a2e3-4a8e98e6dfde\" SourceId=\"1\" SourceUrl=\"net.tcp://localhost:25001/\" />\n    <MetadataFile FileName=\"Arrays.xsd\" MetadataType=\"Schema\" ID=\"ed94c747-a7cb-45dc-9784-40a3c02a88a0\" SourceId=\"1\" SourceUrl=\"net.tcp://localhost:25001/\" />\n  </Metadata>\n  <Extensions>\n    <ExtensionFile FileName=\"configuration91.svcinfo\" Name=\"configuration91.svcinfo\" />\n    <ExtensionFile FileName=\"configuration.svcinfo\" Name=\"configuration.svcinfo\" />\n  </Extensions>\n</ReferenceGroup>"
  },
  {
    "path": "Sources/MinerWars.GameLib/Service References/AppCode.Networking.SectorService/SectorServerLIB.SectorService.xsd",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema xmlns:tns=\"http://schemas.datacontract.org/2004/07/SectorServerLIB.SectorService\" elementFormDefault=\"qualified\" targetNamespace=\"http://schemas.datacontract.org/2004/07/SectorServerLIB.SectorService\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">\n  <xs:import namespace=\"http://schemas.datacontract.org/2004/07/MinerWars.CommonLIB.AppCode.Networking\" />\n  <xs:import namespace=\"http://schemas.microsoft.com/2003/10/Serialization/\" />\n  <xs:complexType name=\"ArrayOfExportInfo\">\n    <xs:sequence>\n      <xs:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"ExportInfo\" type=\"tns:ExportInfo\" />\n    </xs:sequence>\n  </xs:complexType>\n  <xs:element name=\"ArrayOfExportInfo\" nillable=\"true\" type=\"tns:ArrayOfExportInfo\" />\n  <xs:complexType name=\"ExportInfo\">\n    <xs:annotation>\n      <xs:appinfo>\n        <IsValueType xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/\">true</IsValueType>\n      </xs:appinfo>\n    </xs:annotation>\n    <xs:sequence>\n      <xs:element xmlns:q1=\"http://schemas.datacontract.org/2004/07/MinerWars.CommonLIB.AppCode.Networking\" minOccurs=\"0\" name=\"SectorId\" type=\"q1:MyMwcSectorIdentifier\" />\n      <xs:element minOccurs=\"0\" name=\"Version\" type=\"xs:int\" />\n    </xs:sequence>\n  </xs:complexType>\n  <xs:element name=\"ExportInfo\" nillable=\"true\" type=\"tns:ExportInfo\" />\n  <xs:complexType name=\"MyUserInfo\">\n    <xs:sequence>\n      <xs:element minOccurs=\"0\" name=\"AdditionalInfo\" nillable=\"true\" type=\"tns:MyAdditionalUserInfo\" />\n      <xs:element minOccurs=\"0\" name=\"CanAccess25D\" type=\"xs:boolean\" />\n      <xs:element minOccurs=\"0\" name=\"CanAccessDemo\" type=\"xs:boolean\" />\n      <xs:element minOccurs=\"0\" name=\"CanAccessEditorForMMO\" type=\"xs:boolean\" />\n      <xs:element minOccurs=\"0\" name=\"CanAccessEditorForStory\" type=\"xs:boolean\" />\n      <xs:element minOccurs=\"0\" name=\"CanAccessMMO\" type=\"xs:boolean\" />\n      <xs:element minOccurs=\"0\" name=\"CanSave\" type=\"xs:boolean\" />\n      <xs:element minOccurs=\"0\" name=\"CanUseCheats\" type=\"xs:boolean\" />\n      <xs:element minOccurs=\"0\" name=\"DisplayName\" nillable=\"true\" type=\"xs:string\" />\n      <xs:element minOccurs=\"0\" name=\"HasAnyCheckpoints\" type=\"xs:boolean\" />\n      <xs:element minOccurs=\"0\" name=\"UserId\" type=\"xs:int\" />\n    </xs:sequence>\n  </xs:complexType>\n  <xs:element name=\"MyUserInfo\" nillable=\"true\" type=\"tns:MyUserInfo\" />\n  <xs:complexType name=\"MyAdditionalUserInfo\">\n    <xs:sequence>\n      <xs:element minOccurs=\"0\" name=\"AffiliateUniqueClicks\" type=\"xs:int\" />\n      <xs:element minOccurs=\"0\" name=\"AffiliateUrlRegistrations\" type=\"xs:int\" />\n      <xs:element minOccurs=\"0\" name=\"Age\" nillable=\"true\" type=\"xs:int\" />\n      <xs:element minOccurs=\"0\" name=\"Contributions\" type=\"xs:float\" />\n      <xs:element minOccurs=\"0\" name=\"Description\" nillable=\"true\" type=\"xs:string\" />\n      <xs:element minOccurs=\"0\" name=\"ForumPosts\" type=\"xs:int\" />\n      <xs:element minOccurs=\"0\" name=\"Gender\" nillable=\"true\" type=\"xs:int\" />\n      <xs:element minOccurs=\"0\" name=\"LastGameLogin\" nillable=\"true\" type=\"xs:dateTime\" />\n      <xs:element minOccurs=\"0\" name=\"LastWebsiteLogin\" nillable=\"true\" type=\"xs:dateTime\" />\n      <xs:element minOccurs=\"0\" name=\"QualificationPoinsts\" type=\"xs:float\" />\n      <xs:element minOccurs=\"0\" name=\"Registered\" nillable=\"true\" type=\"xs:dateTime\" />\n    </xs:sequence>\n  </xs:complexType>\n  <xs:element name=\"MyAdditionalUserInfo\" nillable=\"true\" type=\"tns:MyAdditionalUserInfo\" />\n</xs:schema>"
  },
  {
    "path": "Sources/MinerWars.GameLib/Service References/AppCode.Networking.SectorService/configuration.svcinfo",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<configurationSnapshot xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns=\"urn:schemas-microsoft-com:xml-wcfconfigurationsnapshot\">\n  <behaviors />\n  <bindings>\n    <binding digest=\"System.ServiceModel.Configuration.CustomBindingElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089:&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;Data name=&quot;NetTcpBinding_IMySectorService&quot;&gt;&lt;binaryMessageEncoding maxReadPoolSize=&quot;64&quot; maxSessionSize=&quot;2048&quot; maxWritePoolSize=&quot;16&quot;&gt;&lt;readerQuotas maxArrayLength=&quot;16384&quot; maxBytesPerRead=&quot;4096&quot; maxDepth=&quot;32&quot; maxNameTableCharCount=&quot;16384&quot; maxStringContentLength=&quot;8192&quot; /&gt;&lt;/binaryMessageEncoding&gt;&lt;reliableSession acknowledgementInterval=&quot;00:00:00.2000000&quot; flowControlEnabled=&quot;true&quot; inactivityTimeout=&quot;00:00:20&quot; maxPendingChannels=&quot;4&quot; maxRetryCount=&quot;8&quot; maxTransferWindowSize=&quot;8&quot; ordered=&quot;true&quot; reliableMessagingVersion=&quot;Default&quot; /&gt;&lt;security authenticationMode=&quot;SecureConversation&quot; defaultAlgorithmSuite=&quot;Default&quot; includeTimestamp=&quot;false&quot; keyEntropyMode=&quot;CombinedEntropy&quot; messageProtectionOrder=&quot;SignBeforeEncryptAndEncryptSignature&quot; messageSecurityVersion=&quot;WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10&quot; requireDerivedKeys=&quot;true&quot; requireSecurityContextCancellation=&quot;true&quot; requireSignatureConfirmation=&quot;false&quot; securityHeaderLayout=&quot;Strict&quot;&gt;&lt;localClientSettings cacheCookies=&quot;true&quot; cookieRenewalThresholdPercentage=&quot;60&quot; detectReplays=&quot;true&quot; maxClockSkew=&quot;00:05:00&quot; maxCookieCachingTime=&quot;Infinite&quot; reconnectTransportOnFailure=&quot;true&quot; replayCacheSize=&quot;900000&quot; replayWindow=&quot;00:05:00&quot; sessionKeyRenewalInterval=&quot;10:00:00&quot; sessionKeyRolloverInterval=&quot;00:05:00&quot; timestampValidityDuration=&quot;00:05:00&quot; /&gt;&lt;localServiceSettings detectReplays=&quot;true&quot; inactivityTimeout=&quot;00:02:00&quot; issuedCookieLifetime=&quot;10:00:00&quot; maxCachedCookies=&quot;1000&quot; maxClockSkew=&quot;00:05:00&quot; maxPendingSessions=&quot;128&quot; maxStatefulNegotiations=&quot;128&quot; negotiationTimeout=&quot;00:01:00&quot; reconnectTransportOnFailure=&quot;true&quot; replayCacheSize=&quot;900000&quot; replayWindow=&quot;00:05:00&quot; sessionKeyRenewalInterval=&quot;15:00:00&quot; sessionKeyRolloverInterval=&quot;00:05:00&quot; timestampValidityDuration=&quot;00:05:00&quot; /&gt;&lt;secureConversationBootstrap authenticationMode=&quot;UserNameForSslNegotiated&quot; defaultAlgorithmSuite=&quot;Default&quot; includeTimestamp=&quot;false&quot; keyEntropyMode=&quot;CombinedEntropy&quot; messageProtectionOrder=&quot;SignBeforeEncryptAndEncryptSignature&quot; messageSecurityVersion=&quot;WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10&quot; requireDerivedKeys=&quot;true&quot; requireSecurityContextCancellation=&quot;true&quot; requireSignatureConfirmation=&quot;false&quot; securityHeaderLayout=&quot;Strict&quot;&gt;&lt;localClientSettings cacheCookies=&quot;true&quot; cookieRenewalThresholdPercentage=&quot;60&quot; detectReplays=&quot;true&quot; maxClockSkew=&quot;00:05:00&quot; maxCookieCachingTime=&quot;Infinite&quot; reconnectTransportOnFailure=&quot;true&quot; replayCacheSize=&quot;900000&quot; replayWindow=&quot;00:05:00&quot; sessionKeyRenewalInterval=&quot;10:00:00&quot; sessionKeyRolloverInterval=&quot;00:05:00&quot; timestampValidityDuration=&quot;00:05:00&quot; /&gt;&lt;localServiceSettings detectReplays=&quot;true&quot; inactivityTimeout=&quot;00:02:00&quot; issuedCookieLifetime=&quot;10:00:00&quot; maxCachedCookies=&quot;1000&quot; maxClockSkew=&quot;00:05:00&quot; maxPendingSessions=&quot;128&quot; maxStatefulNegotiations=&quot;128&quot; negotiationTimeout=&quot;00:01:00&quot; reconnectTransportOnFailure=&quot;true&quot; replayCacheSize=&quot;900000&quot; replayWindow=&quot;00:05:00&quot; sessionKeyRenewalInterval=&quot;15:00:00&quot; sessionKeyRolloverInterval=&quot;00:05:00&quot; timestampValidityDuration=&quot;00:05:00&quot; /&gt;&lt;/secureConversationBootstrap&gt;&lt;/security&gt;&lt;tcpTransport channelInitializationTimeout=&quot;00:00:05&quot; connectionBufferSize=&quot;8192&quot; hostNameComparisonMode=&quot;StrongWildcard&quot; listenBacklog=&quot;10&quot; manualAddressing=&quot;false&quot; maxBufferPoolSize=&quot;524288&quot; maxBufferSize=&quot;65536&quot; maxOutputDelay=&quot;00:00:00.2000000&quot; maxPendingAccepts=&quot;1&quot; maxPendingConnections=&quot;10&quot; maxReceivedMessageSize=&quot;65536&quot; portSharingEnabled=&quot;false&quot; teredoEnabled=&quot;false&quot; transferMode=&quot;Buffered&quot;&gt;&lt;connectionPoolSettings groupName=&quot;default&quot; idleTimeout=&quot;00:02:00&quot; leaseTimeout=&quot;00:05:00&quot; maxOutboundConnectionsPerEndpoint=&quot;10&quot; /&gt;&lt;/tcpTransport&gt;&lt;/Data&gt;\" bindingType=\"customBinding\" name=\"NetTcpBinding_IMySectorService\" />\n  </bindings>\n  <endpoints>\n    <endpoint normalizedDigest=\"&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;Data address=&quot;net.tcp://localhost:25000/&quot; binding=&quot;customBinding&quot; bindingConfiguration=&quot;NetTcpBinding_IMySectorService&quot; contract=&quot;AppCode.Networking.SectorService.IMySectorService&quot; name=&quot;NetTcpBinding_IMySectorService&quot;&gt;&lt;identity&gt;&lt;certificate encodedValue=&quot;AwAAAAEAAAAUAAAAscIYpV4abFhYeX36Gbc8Pcmljq0gAAAAAQAAAPsBAAAwggH3MIIBZKADAgECAhAAh8zUya1VqEh10HdJ8UAsMAkGBSsOAwIdBQAwFzEVMBMGA1UEAxMMU2VjdG9yU2VydmVyMB4XDTEyMDIyMzA4NTM1M1oXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMU2VjdG9yU2VydmVyMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCDM4pmaC5OSkwq+9XjqgpUE6q+SzMOsEvCdhO0g1Yo43JgLIuutwZsJB/jDU13/bP0e968TrG3nNBRbhVvWN/JzzY+JuQXT0imY8lkzGcrrCz4xEaCh+uwmQuw2umMIkWyCehvt99OG4tkoJvL3QG4esZbhFTq7uOodb3npVawIQIDAQABo0wwSjBIBgNVHQEEQTA/gBAt/nrhYEd7/7i4xU2mEfHioRkwFzEVMBMGA1UEAxMMU2VjdG9yU2VydmVyghAAh8zUya1VqEh10HdJ8UAsMAkGBSsOAwIdBQADgYEAOMWo1to+DEnSr4Qj5KfDDJhoBzFXV9KtQjSWyeafg1ezehJIX97q1M3DOc302ZfGkcRuyGjxPUYFvnODeTx3vvRYv63YObMm8IKHPtv1kbjnt3vw3Exzc/6jm55vlIQ95Y0FvIP95ejOwPob/r/fkGJfY3qFWkOWEir4PPrC20c=&quot; /&gt;&lt;/identity&gt;&lt;/Data&gt;\" digest=\"&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;Data address=&quot;net.tcp://localhost:25000/&quot; binding=&quot;customBinding&quot; bindingConfiguration=&quot;NetTcpBinding_IMySectorService&quot; contract=&quot;AppCode.Networking.SectorService.IMySectorService&quot; name=&quot;NetTcpBinding_IMySectorService&quot;&gt;&lt;identity&gt;&lt;certificate encodedValue=&quot;AwAAAAEAAAAUAAAAscIYpV4abFhYeX36Gbc8Pcmljq0gAAAAAQAAAPsBAAAwggH3MIIBZKADAgECAhAAh8zUya1VqEh10HdJ8UAsMAkGBSsOAwIdBQAwFzEVMBMGA1UEAxMMU2VjdG9yU2VydmVyMB4XDTEyMDIyMzA4NTM1M1oXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMU2VjdG9yU2VydmVyMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCDM4pmaC5OSkwq+9XjqgpUE6q+SzMOsEvCdhO0g1Yo43JgLIuutwZsJB/jDU13/bP0e968TrG3nNBRbhVvWN/JzzY+JuQXT0imY8lkzGcrrCz4xEaCh+uwmQuw2umMIkWyCehvt99OG4tkoJvL3QG4esZbhFTq7uOodb3npVawIQIDAQABo0wwSjBIBgNVHQEEQTA/gBAt/nrhYEd7/7i4xU2mEfHioRkwFzEVMBMGA1UEAxMMU2VjdG9yU2VydmVyghAAh8zUya1VqEh10HdJ8UAsMAkGBSsOAwIdBQADgYEAOMWo1to+DEnSr4Qj5KfDDJhoBzFXV9KtQjSWyeafg1ezehJIX97q1M3DOc302ZfGkcRuyGjxPUYFvnODeTx3vvRYv63YObMm8IKHPtv1kbjnt3vw3Exzc/6jm55vlIQ95Y0FvIP95ejOwPob/r/fkGJfY3qFWkOWEir4PPrC20c=&quot; /&gt;&lt;/identity&gt;&lt;/Data&gt;\" contractName=\"AppCode.Networking.SectorService.IMySectorService\" name=\"NetTcpBinding_IMySectorService\" />\n  </endpoints>\n</configurationSnapshot>"
  },
  {
    "path": "Sources/MinerWars.GameLib/Service References/AppCode.Networking.SectorService/configuration91.svcinfo",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<SavedWcfConfigurationInformation xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" Version=\"9.1\" CheckSum=\"cwbDuLq3EyvAjZQeGDA8qY7ZQvM=\">\n  <bindingConfigurations>\n    <bindingConfiguration bindingType=\"customBinding\" name=\"NetTcpBinding_IMySectorService\">\n      <properties>\n        <property path=\"/name\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>NetTcpBinding_IMySectorService</serializedValue>\n        </property>\n        <property path=\"/closeTimeout\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/openTimeout\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/receiveTimeout\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/sendTimeout\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/reliableSession\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.ReliableSessionElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.ReliableSessionElement</serializedValue>\n        </property>\n        <property path=\"/reliableSession/acknowledgementInterval\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>00:00:00.2000000</serializedValue>\n        </property>\n        <property path=\"/reliableSession/flowControlEnabled\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>True</serializedValue>\n        </property>\n        <property path=\"/reliableSession/inactivityTimeout\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>00:00:20</serializedValue>\n        </property>\n        <property path=\"/reliableSession/maxPendingChannels\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>4</serializedValue>\n        </property>\n        <property path=\"/reliableSession/maxRetryCount\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>8</serializedValue>\n        </property>\n        <property path=\"/reliableSession/maxTransferWindowSize\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>8</serializedValue>\n        </property>\n        <property path=\"/reliableSession/ordered\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>True</serializedValue>\n        </property>\n        <property path=\"/reliableSession/reliableMessagingVersion\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.ServiceModel.ReliableMessagingVersion, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>Default</serializedValue>\n        </property>\n        <property path=\"/security\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.SecurityElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.SecurityElement</serializedValue>\n        </property>\n        <property path=\"/security/defaultAlgorithmSuite\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.ServiceModel.Security.SecurityAlgorithmSuite, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>Default</serializedValue>\n        </property>\n        <property path=\"/security/allowSerializedSigningTokenOnReply\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>False</serializedValue>\n        </property>\n        <property path=\"/security/enableUnsecuredResponse\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>False</serializedValue>\n        </property>\n        <property path=\"/security/authenticationMode\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.ServiceModel.Configuration.AuthenticationMode, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>SecureConversation</serializedValue>\n        </property>\n        <property path=\"/security/requireDerivedKeys\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>True</serializedValue>\n        </property>\n        <property path=\"/security/securityHeaderLayout\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.ServiceModel.Channels.SecurityHeaderLayout, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>Strict</serializedValue>\n        </property>\n        <property path=\"/security/includeTimestamp\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>False</serializedValue>\n        </property>\n        <property path=\"/security/allowInsecureTransport\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>False</serializedValue>\n        </property>\n        <property path=\"/security/keyEntropyMode\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.ServiceModel.Security.SecurityKeyEntropyMode, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>CombinedEntropy</serializedValue>\n        </property>\n        <property path=\"/security/issuedTokenParameters\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.IssuedTokenParametersElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.IssuedTokenParametersElement</serializedValue>\n        </property>\n        <property path=\"/security/issuedTokenParameters/defaultMessageSecurityVersion\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.MessageSecurityVersion, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/security/issuedTokenParameters/additionalRequestParameters\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.XmlElementElementCollection, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>(Collection)</serializedValue>\n        </property>\n        <property path=\"/security/issuedTokenParameters/claimTypeRequirements\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.ClaimTypeElementCollection, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>(Collection)</serializedValue>\n        </property>\n        <property path=\"/security/issuedTokenParameters/issuer\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.IssuedTokenParametersEndpointAddressElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.IssuedTokenParametersEndpointAddressElement</serializedValue>\n        </property>\n        <property path=\"/security/issuedTokenParameters/issuer/address\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.Uri, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/security/issuedTokenParameters/issuer/headers\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.AddressHeaderCollectionElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.AddressHeaderCollectionElement</serializedValue>\n        </property>\n        <property path=\"/security/issuedTokenParameters/issuer/headers/headers\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Channels.AddressHeaderCollection, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\n        <property path=\"/security/issuedTokenParameters/issuer/identity\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.IdentityElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.IdentityElement</serializedValue>\n        </property>\n        <property path=\"/security/issuedTokenParameters/issuer/identity/userPrincipalName\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.UserPrincipalNameElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.UserPrincipalNameElement</serializedValue>\n        </property>\n        <property path=\"/security/issuedTokenParameters/issuer/identity/userPrincipalName/value\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/security/issuedTokenParameters/issuer/identity/servicePrincipalName\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.ServicePrincipalNameElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.ServicePrincipalNameElement</serializedValue>\n        </property>\n        <property path=\"/security/issuedTokenParameters/issuer/identity/servicePrincipalName/value\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/security/issuedTokenParameters/issuer/identity/dns\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.DnsElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.DnsElement</serializedValue>\n        </property>\n        <property path=\"/security/issuedTokenParameters/issuer/identity/dns/value\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/security/issuedTokenParameters/issuer/identity/rsa\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.RsaElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.RsaElement</serializedValue>\n        </property>\n        <property path=\"/security/issuedTokenParameters/issuer/identity/rsa/value\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/security/issuedTokenParameters/issuer/identity/certificate\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.CertificateElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.CertificateElement</serializedValue>\n        </property>\n        <property path=\"/security/issuedTokenParameters/issuer/identity/certificate/encodedValue\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/security/issuedTokenParameters/issuer/identity/certificateReference\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.CertificateReferenceElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.CertificateReferenceElement</serializedValue>\n        </property>\n        <property path=\"/security/issuedTokenParameters/issuer/identity/certificateReference/storeName\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.Security.Cryptography.X509Certificates.StoreName, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>My</serializedValue>\n        </property>\n        <property path=\"/security/issuedTokenParameters/issuer/identity/certificateReference/storeLocation\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.Security.Cryptography.X509Certificates.StoreLocation, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>LocalMachine</serializedValue>\n        </property>\n        <property path=\"/security/issuedTokenParameters/issuer/identity/certificateReference/x509FindType\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.Security.Cryptography.X509Certificates.X509FindType, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>FindBySubjectDistinguishedName</serializedValue>\n        </property>\n        <property path=\"/security/issuedTokenParameters/issuer/identity/certificateReference/findValue\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/security/issuedTokenParameters/issuer/identity/certificateReference/isChainIncluded\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>False</serializedValue>\n        </property>\n        <property path=\"/security/issuedTokenParameters/issuer/binding\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/security/issuedTokenParameters/issuer/bindingConfiguration\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/security/issuedTokenParameters/issuerMetadata\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.EndpointAddressElementBase, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.EndpointAddressElementBase</serializedValue>\n        </property>\n        <property path=\"/security/issuedTokenParameters/issuerMetadata/address\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.Uri, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/security/issuedTokenParameters/issuerMetadata/headers\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.AddressHeaderCollectionElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.AddressHeaderCollectionElement</serializedValue>\n        </property>\n        <property path=\"/security/issuedTokenParameters/issuerMetadata/headers/headers\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Channels.AddressHeaderCollection, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\n        <property path=\"/security/issuedTokenParameters/issuerMetadata/identity\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.IdentityElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.IdentityElement</serializedValue>\n        </property>\n        <property path=\"/security/issuedTokenParameters/issuerMetadata/identity/userPrincipalName\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.UserPrincipalNameElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.UserPrincipalNameElement</serializedValue>\n        </property>\n        <property path=\"/security/issuedTokenParameters/issuerMetadata/identity/userPrincipalName/value\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/security/issuedTokenParameters/issuerMetadata/identity/servicePrincipalName\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.ServicePrincipalNameElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.ServicePrincipalNameElement</serializedValue>\n        </property>\n        <property path=\"/security/issuedTokenParameters/issuerMetadata/identity/servicePrincipalName/value\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/security/issuedTokenParameters/issuerMetadata/identity/dns\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.DnsElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.DnsElement</serializedValue>\n        </property>\n        <property path=\"/security/issuedTokenParameters/issuerMetadata/identity/dns/value\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/security/issuedTokenParameters/issuerMetadata/identity/rsa\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.RsaElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.RsaElement</serializedValue>\n        </property>\n        <property path=\"/security/issuedTokenParameters/issuerMetadata/identity/rsa/value\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/security/issuedTokenParameters/issuerMetadata/identity/certificate\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.CertificateElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.CertificateElement</serializedValue>\n        </property>\n        <property path=\"/security/issuedTokenParameters/issuerMetadata/identity/certificate/encodedValue\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/security/issuedTokenParameters/issuerMetadata/identity/certificateReference\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.CertificateReferenceElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.CertificateReferenceElement</serializedValue>\n        </property>\n        <property path=\"/security/issuedTokenParameters/issuerMetadata/identity/certificateReference/storeName\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.Security.Cryptography.X509Certificates.StoreName, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>My</serializedValue>\n        </property>\n        <property path=\"/security/issuedTokenParameters/issuerMetadata/identity/certificateReference/storeLocation\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.Security.Cryptography.X509Certificates.StoreLocation, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>LocalMachine</serializedValue>\n        </property>\n        <property path=\"/security/issuedTokenParameters/issuerMetadata/identity/certificateReference/x509FindType\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.Security.Cryptography.X509Certificates.X509FindType, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>FindBySubjectDistinguishedName</serializedValue>\n        </property>\n        <property path=\"/security/issuedTokenParameters/issuerMetadata/identity/certificateReference/findValue\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/security/issuedTokenParameters/issuerMetadata/identity/certificateReference/isChainIncluded\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>False</serializedValue>\n        </property>\n        <property path=\"/security/issuedTokenParameters/keySize\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>0</serializedValue>\n        </property>\n        <property path=\"/security/issuedTokenParameters/keyType\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.IdentityModel.Tokens.SecurityKeyType, System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>SymmetricKey</serializedValue>\n        </property>\n        <property path=\"/security/issuedTokenParameters/tokenType\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/security/localClientSettings\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.LocalClientSecuritySettingsElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.LocalClientSecuritySettingsElement</serializedValue>\n        </property>\n        <property path=\"/security/localClientSettings/cacheCookies\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>True</serializedValue>\n        </property>\n        <property path=\"/security/localClientSettings/detectReplays\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>True</serializedValue>\n        </property>\n        <property path=\"/security/localClientSettings/replayCacheSize\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>900000</serializedValue>\n        </property>\n        <property path=\"/security/localClientSettings/maxClockSkew\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>00:05:00</serializedValue>\n        </property>\n        <property path=\"/security/localClientSettings/maxCookieCachingTime\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>10675199.02:48:05.4775807</serializedValue>\n        </property>\n        <property path=\"/security/localClientSettings/replayWindow\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>00:05:00</serializedValue>\n        </property>\n        <property path=\"/security/localClientSettings/sessionKeyRenewalInterval\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>10:00:00</serializedValue>\n        </property>\n        <property path=\"/security/localClientSettings/sessionKeyRolloverInterval\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>00:05:00</serializedValue>\n        </property>\n        <property path=\"/security/localClientSettings/reconnectTransportOnFailure\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>True</serializedValue>\n        </property>\n        <property path=\"/security/localClientSettings/timestampValidityDuration\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>00:05:00</serializedValue>\n        </property>\n        <property path=\"/security/localClientSettings/cookieRenewalThresholdPercentage\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>60</serializedValue>\n        </property>\n        <property path=\"/security/localServiceSettings\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.LocalServiceSecuritySettingsElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.LocalServiceSecuritySettingsElement</serializedValue>\n        </property>\n        <property path=\"/security/localServiceSettings/detectReplays\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>True</serializedValue>\n        </property>\n        <property path=\"/security/localServiceSettings/issuedCookieLifetime\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>10:00:00</serializedValue>\n        </property>\n        <property path=\"/security/localServiceSettings/maxStatefulNegotiations\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>128</serializedValue>\n        </property>\n        <property path=\"/security/localServiceSettings/replayCacheSize\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>900000</serializedValue>\n        </property>\n        <property path=\"/security/localServiceSettings/maxClockSkew\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>00:05:00</serializedValue>\n        </property>\n        <property path=\"/security/localServiceSettings/negotiationTimeout\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>00:01:00</serializedValue>\n        </property>\n        <property path=\"/security/localServiceSettings/replayWindow\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>00:05:00</serializedValue>\n        </property>\n        <property path=\"/security/localServiceSettings/inactivityTimeout\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>00:02:00</serializedValue>\n        </property>\n        <property path=\"/security/localServiceSettings/sessionKeyRenewalInterval\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>15:00:00</serializedValue>\n        </property>\n        <property path=\"/security/localServiceSettings/sessionKeyRolloverInterval\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>00:05:00</serializedValue>\n        </property>\n        <property path=\"/security/localServiceSettings/reconnectTransportOnFailure\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>True</serializedValue>\n        </property>\n        <property path=\"/security/localServiceSettings/maxPendingSessions\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>128</serializedValue>\n        </property>\n        <property path=\"/security/localServiceSettings/maxCachedCookies\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>1000</serializedValue>\n        </property>\n        <property path=\"/security/localServiceSettings/timestampValidityDuration\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>00:05:00</serializedValue>\n        </property>\n        <property path=\"/security/messageProtectionOrder\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.ServiceModel.Security.MessageProtectionOrder, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>SignBeforeEncryptAndEncryptSignature</serializedValue>\n        </property>\n        <property path=\"/security/messageSecurityVersion\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.ServiceModel.MessageSecurityVersion, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10</serializedValue>\n        </property>\n        <property path=\"/security/requireSecurityContextCancellation\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>True</serializedValue>\n        </property>\n        <property path=\"/security/requireSignatureConfirmation\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>False</serializedValue>\n        </property>\n        <property path=\"/security/canRenewSecurityContextToken\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>True</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.SecurityElementBase, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.SecurityElementBase</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/defaultAlgorithmSuite\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.ServiceModel.Security.SecurityAlgorithmSuite, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>Default</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/allowSerializedSigningTokenOnReply\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>False</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/enableUnsecuredResponse\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>False</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/authenticationMode\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.ServiceModel.Configuration.AuthenticationMode, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>UserNameForSslNegotiated</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/requireDerivedKeys\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>True</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/securityHeaderLayout\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.ServiceModel.Channels.SecurityHeaderLayout, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>Strict</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/includeTimestamp\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>False</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/allowInsecureTransport\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>False</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/keyEntropyMode\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.ServiceModel.Security.SecurityKeyEntropyMode, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>CombinedEntropy</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.IssuedTokenParametersElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.IssuedTokenParametersElement</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/defaultMessageSecurityVersion\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.MessageSecurityVersion, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/additionalRequestParameters\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.XmlElementElementCollection, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>(Collection)</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/claimTypeRequirements\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.ClaimTypeElementCollection, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>(Collection)</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuer\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.IssuedTokenParametersEndpointAddressElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.IssuedTokenParametersEndpointAddressElement</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuer/address\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.Uri, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuer/headers\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.AddressHeaderCollectionElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.AddressHeaderCollectionElement</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuer/headers/headers\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Channels.AddressHeaderCollection, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuer/identity\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.IdentityElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.IdentityElement</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuer/identity/userPrincipalName\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.UserPrincipalNameElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.UserPrincipalNameElement</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuer/identity/userPrincipalName/value\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuer/identity/servicePrincipalName\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.ServicePrincipalNameElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.ServicePrincipalNameElement</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuer/identity/servicePrincipalName/value\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuer/identity/dns\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.DnsElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.DnsElement</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuer/identity/dns/value\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuer/identity/rsa\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.RsaElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.RsaElement</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuer/identity/rsa/value\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuer/identity/certificate\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.CertificateElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.CertificateElement</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuer/identity/certificate/encodedValue\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuer/identity/certificateReference\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.CertificateReferenceElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.CertificateReferenceElement</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuer/identity/certificateReference/storeName\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.Security.Cryptography.X509Certificates.StoreName, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>My</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuer/identity/certificateReference/storeLocation\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.Security.Cryptography.X509Certificates.StoreLocation, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>LocalMachine</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuer/identity/certificateReference/x509FindType\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.Security.Cryptography.X509Certificates.X509FindType, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>FindBySubjectDistinguishedName</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuer/identity/certificateReference/findValue\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuer/identity/certificateReference/isChainIncluded\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>False</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuer/binding\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuer/bindingConfiguration\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuerMetadata\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.EndpointAddressElementBase, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.EndpointAddressElementBase</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuerMetadata/address\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.Uri, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuerMetadata/headers\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.AddressHeaderCollectionElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.AddressHeaderCollectionElement</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuerMetadata/headers/headers\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Channels.AddressHeaderCollection, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuerMetadata/identity\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.IdentityElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.IdentityElement</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuerMetadata/identity/userPrincipalName\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.UserPrincipalNameElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.UserPrincipalNameElement</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuerMetadata/identity/userPrincipalName/value\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuerMetadata/identity/servicePrincipalName\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.ServicePrincipalNameElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.ServicePrincipalNameElement</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuerMetadata/identity/servicePrincipalName/value\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuerMetadata/identity/dns\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.DnsElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.DnsElement</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuerMetadata/identity/dns/value\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuerMetadata/identity/rsa\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.RsaElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.RsaElement</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuerMetadata/identity/rsa/value\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuerMetadata/identity/certificate\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.CertificateElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.CertificateElement</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuerMetadata/identity/certificate/encodedValue\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuerMetadata/identity/certificateReference\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.CertificateReferenceElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.CertificateReferenceElement</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuerMetadata/identity/certificateReference/storeName\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.Security.Cryptography.X509Certificates.StoreName, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>My</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuerMetadata/identity/certificateReference/storeLocation\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.Security.Cryptography.X509Certificates.StoreLocation, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>LocalMachine</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuerMetadata/identity/certificateReference/x509FindType\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.Security.Cryptography.X509Certificates.X509FindType, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>FindBySubjectDistinguishedName</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuerMetadata/identity/certificateReference/findValue\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/issuerMetadata/identity/certificateReference/isChainIncluded\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>False</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/keySize\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>0</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/keyType\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.IdentityModel.Tokens.SecurityKeyType, System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>SymmetricKey</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/issuedTokenParameters/tokenType\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/security/secureConversationBootstrap/localClientSettings\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.LocalClientSecuritySettingsElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.LocalClientSecuritySettingsElement</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/localClientSettings/cacheCookies\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>True</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/localClientSettings/detectReplays\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>True</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/localClientSettings/replayCacheSize\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>900000</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/localClientSettings/maxClockSkew\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>00:05:00</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/localClientSettings/maxCookieCachingTime\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>10675199.02:48:05.4775807</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/localClientSettings/replayWindow\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>00:05:00</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/localClientSettings/sessionKeyRenewalInterval\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>10:00:00</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/localClientSettings/sessionKeyRolloverInterval\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>00:05:00</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/localClientSettings/reconnectTransportOnFailure\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>True</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/localClientSettings/timestampValidityDuration\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>00:05:00</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/localClientSettings/cookieRenewalThresholdPercentage\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>60</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/localServiceSettings\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.LocalServiceSecuritySettingsElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.LocalServiceSecuritySettingsElement</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/localServiceSettings/detectReplays\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>True</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/localServiceSettings/issuedCookieLifetime\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>10:00:00</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/localServiceSettings/maxStatefulNegotiations\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>128</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/localServiceSettings/replayCacheSize\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>900000</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/localServiceSettings/maxClockSkew\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>00:05:00</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/localServiceSettings/negotiationTimeout\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>00:01:00</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/localServiceSettings/replayWindow\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>00:05:00</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/localServiceSettings/inactivityTimeout\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>00:02:00</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/localServiceSettings/sessionKeyRenewalInterval\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>15:00:00</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/localServiceSettings/sessionKeyRolloverInterval\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>00:05:00</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/localServiceSettings/reconnectTransportOnFailure\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>True</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/localServiceSettings/maxPendingSessions\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>128</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/localServiceSettings/maxCachedCookies\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>1000</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/localServiceSettings/timestampValidityDuration\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>00:05:00</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/messageProtectionOrder\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.ServiceModel.Security.MessageProtectionOrder, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>SignBeforeEncryptAndEncryptSignature</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/messageSecurityVersion\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.ServiceModel.MessageSecurityVersion, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/requireSecurityContextCancellation\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>True</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/requireSignatureConfirmation\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>False</serializedValue>\n        </property>\n        <property path=\"/security/secureConversationBootstrap/canRenewSecurityContextToken\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>True</serializedValue>\n        </property>\n        <property path=\"/binaryMessageEncoding\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.BinaryMessageEncodingElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.BinaryMessageEncodingElement</serializedValue>\n        </property>\n        <property path=\"/binaryMessageEncoding/maxReadPoolSize\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>64</serializedValue>\n        </property>\n        <property path=\"/binaryMessageEncoding/maxWritePoolSize\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>16</serializedValue>\n        </property>\n        <property path=\"/binaryMessageEncoding/maxSessionSize\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>2048</serializedValue>\n        </property>\n        <property path=\"/binaryMessageEncoding/readerQuotas\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.XmlDictionaryReaderQuotasElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.XmlDictionaryReaderQuotasElement</serializedValue>\n        </property>\n        <property path=\"/binaryMessageEncoding/readerQuotas/maxDepth\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>32</serializedValue>\n        </property>\n        <property path=\"/binaryMessageEncoding/readerQuotas/maxStringContentLength\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>8192</serializedValue>\n        </property>\n        <property path=\"/binaryMessageEncoding/readerQuotas/maxArrayLength\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>16384</serializedValue>\n        </property>\n        <property path=\"/binaryMessageEncoding/readerQuotas/maxBytesPerRead\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>4096</serializedValue>\n        </property>\n        <property path=\"/binaryMessageEncoding/readerQuotas/maxNameTableCharCount\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>16384</serializedValue>\n        </property>\n        <property path=\"/tcpTransport\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.TcpTransportElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.TcpTransportElement</serializedValue>\n        </property>\n        <property path=\"/tcpTransport/manualAddressing\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>False</serializedValue>\n        </property>\n        <property path=\"/tcpTransport/maxBufferPoolSize\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Int64, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>524288</serializedValue>\n        </property>\n        <property path=\"/tcpTransport/maxReceivedMessageSize\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Int64, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>65536</serializedValue>\n        </property>\n        <property path=\"/tcpTransport/connectionBufferSize\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>8192</serializedValue>\n        </property>\n        <property path=\"/tcpTransport/hostNameComparisonMode\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.ServiceModel.HostNameComparisonMode, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>StrongWildcard</serializedValue>\n        </property>\n        <property path=\"/tcpTransport/channelInitializationTimeout\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>00:00:05</serializedValue>\n        </property>\n        <property path=\"/tcpTransport/maxBufferSize\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>65536</serializedValue>\n        </property>\n        <property path=\"/tcpTransport/maxPendingConnections\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>10</serializedValue>\n        </property>\n        <property path=\"/tcpTransport/maxOutputDelay\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>00:00:00.2000000</serializedValue>\n        </property>\n        <property path=\"/tcpTransport/maxPendingAccepts\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>1</serializedValue>\n        </property>\n        <property path=\"/tcpTransport/transferMode\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.ServiceModel.TransferMode, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>Buffered</serializedValue>\n        </property>\n        <property path=\"/tcpTransport/listenBacklog\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>10</serializedValue>\n        </property>\n        <property path=\"/tcpTransport/portSharingEnabled\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>False</serializedValue>\n        </property>\n        <property path=\"/tcpTransport/teredoEnabled\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>False</serializedValue>\n        </property>\n        <property path=\"/tcpTransport/connectionPoolSettings\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.TcpConnectionPoolSettingsElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.TcpConnectionPoolSettingsElement</serializedValue>\n        </property>\n        <property path=\"/tcpTransport/connectionPoolSettings/groupName\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>default</serializedValue>\n        </property>\n        <property path=\"/tcpTransport/connectionPoolSettings/leaseTimeout\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>00:05:00</serializedValue>\n        </property>\n        <property path=\"/tcpTransport/connectionPoolSettings/idleTimeout\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>00:02:00</serializedValue>\n        </property>\n        <property path=\"/tcpTransport/connectionPoolSettings/maxOutboundConnectionsPerEndpoint\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>10</serializedValue>\n        </property>\n        <property path=\"/tcpTransport/extendedProtectionPolicy\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.Security.Authentication.ExtendedProtection.Configuration.ExtendedProtectionPolicyElement, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.Security.Authentication.ExtendedProtection.Configuration.ExtendedProtectionPolicyElement</serializedValue>\n        </property>\n        <property path=\"/tcpTransport/extendedProtectionPolicy/policyEnforcement\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.Security.Authentication.ExtendedProtection.PolicyEnforcement, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>Never</serializedValue>\n        </property>\n        <property path=\"/tcpTransport/extendedProtectionPolicy/protectionScenario\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.Security.Authentication.ExtendedProtection.ProtectionScenario, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>TransportSelected</serializedValue>\n        </property>\n        <property path=\"/tcpTransport/extendedProtectionPolicy/customServiceNames\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.Security.Authentication.ExtendedProtection.Configuration.ServiceNameElementCollection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>(Collection)</serializedValue>\n        </property>\n      </properties>\n    </bindingConfiguration>\n  </bindingConfigurations>\n  <endpoints>\n    <endpoint name=\"NetTcpBinding_IMySectorService\" contract=\"AppCode.Networking.SectorService.IMySectorService\" bindingType=\"customBinding\" address=\"net.tcp://localhost:25000/\" bindingConfiguration=\"NetTcpBinding_IMySectorService\">\n      <properties>\n        <property path=\"/address\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.Uri, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>net.tcp://localhost:25000/</serializedValue>\n        </property>\n        <property path=\"/behaviorConfiguration\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/binding\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>customBinding</serializedValue>\n        </property>\n        <property path=\"/bindingConfiguration\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>NetTcpBinding_IMySectorService</serializedValue>\n        </property>\n        <property path=\"/contract\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>AppCode.Networking.SectorService.IMySectorService</serializedValue>\n        </property>\n        <property path=\"/headers\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.AddressHeaderCollectionElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.AddressHeaderCollectionElement</serializedValue>\n        </property>\n        <property path=\"/headers/headers\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.ServiceModel.Channels.AddressHeaderCollection, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>&lt;Header /&gt;</serializedValue>\n        </property>\n        <property path=\"/identity\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.IdentityElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.IdentityElement</serializedValue>\n        </property>\n        <property path=\"/identity/userPrincipalName\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.UserPrincipalNameElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.UserPrincipalNameElement</serializedValue>\n        </property>\n        <property path=\"/identity/userPrincipalName/value\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/identity/servicePrincipalName\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.ServicePrincipalNameElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.ServicePrincipalNameElement</serializedValue>\n        </property>\n        <property path=\"/identity/servicePrincipalName/value\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/identity/dns\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.DnsElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.DnsElement</serializedValue>\n        </property>\n        <property path=\"/identity/dns/value\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/identity/rsa\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.RsaElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.RsaElement</serializedValue>\n        </property>\n        <property path=\"/identity/rsa/value\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/identity/certificate\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.CertificateElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.CertificateElement</serializedValue>\n        </property>\n        <property path=\"/identity/certificate/encodedValue\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>AwAAAAEAAAAUAAAAscIYpV4abFhYeX36Gbc8Pcmljq0gAAAAAQAAAPsBAAAwggH3MIIBZKADAgECAhAAh8zUya1VqEh10HdJ8UAsMAkGBSsOAwIdBQAwFzEVMBMGA1UEAxMMU2VjdG9yU2VydmVyMB4XDTEyMDIyMzA4NTM1M1oXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMU2VjdG9yU2VydmVyMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCDM4pmaC5OSkwq+9XjqgpUE6q+SzMOsEvCdhO0g1Yo43JgLIuutwZsJB/jDU13/bP0e968TrG3nNBRbhVvWN/JzzY+JuQXT0imY8lkzGcrrCz4xEaCh+uwmQuw2umMIkWyCehvt99OG4tkoJvL3QG4esZbhFTq7uOodb3npVawIQIDAQABo0wwSjBIBgNVHQEEQTA/gBAt/nrhYEd7/7i4xU2mEfHioRkwFzEVMBMGA1UEAxMMU2VjdG9yU2VydmVyghAAh8zUya1VqEh10HdJ8UAsMAkGBSsOAwIdBQADgYEAOMWo1to+DEnSr4Qj5KfDDJhoBzFXV9KtQjSWyeafg1ezehJIX97q1M3DOc302ZfGkcRuyGjxPUYFvnODeTx3vvRYv63YObMm8IKHPtv1kbjnt3vw3Exzc/6jm55vlIQ95Y0FvIP95ejOwPob/r/fkGJfY3qFWkOWEir4PPrC20c=</serializedValue>\n        </property>\n        <property path=\"/identity/certificateReference\" isComplexType=\"true\" isExplicitlyDefined=\"false\" clrType=\"System.ServiceModel.Configuration.CertificateReferenceElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>System.ServiceModel.Configuration.CertificateReferenceElement</serializedValue>\n        </property>\n        <property path=\"/identity/certificateReference/storeName\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.Security.Cryptography.X509Certificates.StoreName, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>My</serializedValue>\n        </property>\n        <property path=\"/identity/certificateReference/storeLocation\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.Security.Cryptography.X509Certificates.StoreLocation, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>LocalMachine</serializedValue>\n        </property>\n        <property path=\"/identity/certificateReference/x509FindType\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.Security.Cryptography.X509Certificates.X509FindType, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>FindBySubjectDistinguishedName</serializedValue>\n        </property>\n        <property path=\"/identity/certificateReference/findValue\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/identity/certificateReference/isChainIncluded\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>False</serializedValue>\n        </property>\n        <property path=\"/name\" isComplexType=\"false\" isExplicitlyDefined=\"true\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue>NetTcpBinding_IMySectorService</serializedValue>\n        </property>\n        <property path=\"/kind\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n        <property path=\"/endpointConfiguration\" isComplexType=\"false\" isExplicitlyDefined=\"false\" clrType=\"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n          <serializedValue />\n        </property>\n      </properties>\n    </endpoint>\n  </endpoints>\n</SavedWcfConfigurationInformation>"
  },
  {
    "path": "Sources/MinerWars.GameLib/Service References/AppCode.Networking.SectorService/service.wsdl",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<wsdl:definitions xmlns:wsap=\"http://schemas.xmlsoap.org/ws/2004/08/addressing/policy\" xmlns:wsa10=\"http://www.w3.org/2005/08/addressing\" xmlns:tns=\"http://tempuri.org/\" xmlns:msc=\"http://schemas.microsoft.com/ws/2005/12/wsdl/contract\" xmlns:soapenc=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:wsp=\"http://schemas.xmlsoap.org/ws/2004/09/policy\" xmlns:wsam=\"http://www.w3.org/2007/05/addressing/metadata\" xmlns:soap12=\"http://schemas.xmlsoap.org/wsdl/soap12/\" xmlns:wsa=\"http://schemas.xmlsoap.org/ws/2004/08/addressing\" xmlns:wsaw=\"http://www.w3.org/2006/05/addressing/wsdl\" xmlns:soap=\"http://schemas.xmlsoap.org/wsdl/soap/\" xmlns:wsu=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" name=\"MySectorService\" targetNamespace=\"http://tempuri.org/\" xmlns:wsdl=\"http://schemas.xmlsoap.org/wsdl/\">\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMySectorService_policy\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <wsrm:RMAssertion xmlns:wsrm=\"http://schemas.xmlsoap.org/ws/2005/02/rm/policy\">\n          <wsrm:InactivityTimeout Milliseconds=\"20000\">\n          </wsrm:InactivityTimeout>\n          <wsrm:AcknowledgementInterval Milliseconds=\"200\">\n          </wsrm:AcknowledgementInterval>\n        </wsrm:RMAssertion>\n        <sp:SymmetricBinding xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <wsp:Policy>\n            <sp:ProtectionToken>\n              <wsp:Policy>\n                <sp:SecureConversationToken sp:IncludeToken=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient\">\n                  <wsp:Policy>\n                    <sp:RequireDerivedKeys>\n                    </sp:RequireDerivedKeys>\n                    <sp:BootstrapPolicy>\n                      <wsp:Policy>\n                        <sp:SignedParts>\n                          <sp:Body>\n                          </sp:Body>\n                          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n                          </sp:Header>\n                          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n                          </sp:Header>\n                          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n                          </sp:Header>\n                          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n                          </sp:Header>\n                          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n                          </sp:Header>\n                          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n                          </sp:Header>\n                          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n                          </sp:Header>\n                        </sp:SignedParts>\n                        <sp:EncryptedParts>\n                          <sp:Body>\n                          </sp:Body>\n                        </sp:EncryptedParts>\n                        <sp:SymmetricBinding>\n                          <wsp:Policy>\n                            <sp:ProtectionToken>\n                              <wsp:Policy>\n                                <mssp:SslContextToken sp:IncludeToken=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient\" xmlns:mssp=\"http://schemas.microsoft.com/ws/2005/07/securitypolicy\">\n                                  <wsp:Policy>\n                                    <sp:RequireDerivedKeys>\n                                    </sp:RequireDerivedKeys>\n                                  </wsp:Policy>\n                                </mssp:SslContextToken>\n                              </wsp:Policy>\n                            </sp:ProtectionToken>\n                            <sp:AlgorithmSuite>\n                              <wsp:Policy>\n                                <sp:Basic256>\n                                </sp:Basic256>\n                              </wsp:Policy>\n                            </sp:AlgorithmSuite>\n                            <sp:Layout>\n                              <wsp:Policy>\n                                <sp:Strict>\n                                </sp:Strict>\n                              </wsp:Policy>\n                            </sp:Layout>\n                            <sp:EncryptSignature>\n                            </sp:EncryptSignature>\n                            <sp:OnlySignEntireHeadersAndBody>\n                            </sp:OnlySignEntireHeadersAndBody>\n                          </wsp:Policy>\n                        </sp:SymmetricBinding>\n                        <sp:SignedSupportingTokens>\n                          <wsp:Policy>\n                            <sp:UsernameToken sp:IncludeToken=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient\">\n                              <wsp:Policy>\n                                <sp:WssUsernameToken10>\n                                </sp:WssUsernameToken10>\n                              </wsp:Policy>\n                            </sp:UsernameToken>\n                          </wsp:Policy>\n                        </sp:SignedSupportingTokens>\n                        <sp:Wss11>\n                          <wsp:Policy>\n                          </wsp:Policy>\n                        </sp:Wss11>\n                        <sp:Trust10>\n                          <wsp:Policy>\n                            <sp:MustSupportIssuedTokens>\n                            </sp:MustSupportIssuedTokens>\n                            <sp:RequireClientEntropy>\n                            </sp:RequireClientEntropy>\n                            <sp:RequireServerEntropy>\n                            </sp:RequireServerEntropy>\n                          </wsp:Policy>\n                        </sp:Trust10>\n                      </wsp:Policy>\n                    </sp:BootstrapPolicy>\n                  </wsp:Policy>\n                </sp:SecureConversationToken>\n              </wsp:Policy>\n            </sp:ProtectionToken>\n            <sp:AlgorithmSuite>\n              <wsp:Policy>\n                <sp:Basic256>\n                </sp:Basic256>\n              </wsp:Policy>\n            </sp:AlgorithmSuite>\n            <sp:Layout>\n              <wsp:Policy>\n                <sp:Strict>\n                </sp:Strict>\n              </wsp:Policy>\n            </sp:Layout>\n            <sp:EncryptSignature>\n            </sp:EncryptSignature>\n            <sp:OnlySignEntireHeadersAndBody>\n            </sp:OnlySignEntireHeadersAndBody>\n          </wsp:Policy>\n        </sp:SymmetricBinding>\n        <sp:Wss11 xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <wsp:Policy>\n          </wsp:Policy>\n        </sp:Wss11>\n        <sp:Trust10 xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <wsp:Policy>\n            <sp:MustSupportIssuedTokens>\n            </sp:MustSupportIssuedTokens>\n            <sp:RequireClientEntropy>\n            </sp:RequireClientEntropy>\n            <sp:RequireServerEntropy>\n            </sp:RequireServerEntropy>\n          </wsp:Policy>\n        </sp:Trust10>\n        <msb:BinaryEncoding xmlns:msb=\"http://schemas.microsoft.com/ws/06/2004/mspolicy/netbinary1\">\n        </msb:BinaryEncoding>\n        <wsaw:UsingAddressing>\n        </wsaw:UsingAddressing>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMySectorService_GetGameMoney_Input_policy\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"Sequence\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"SequenceAcknowledgement\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"AckRequested\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMySectorService_GetGameMoney_output_policy\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"Sequence\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"SequenceAcknowledgement\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"AckRequested\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMySectorService_UpdateGameMoney_Input_policy\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"Sequence\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"SequenceAcknowledgement\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"AckRequested\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMySectorService_UpdateGameMoney_output_policy\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"Sequence\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"SequenceAcknowledgement\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"AckRequested\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMySectorService_LoadExportInfo_Input_policy\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"Sequence\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"SequenceAcknowledgement\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"AckRequested\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMySectorService_LoadExportInfo_output_policy\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"Sequence\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"SequenceAcknowledgement\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"AckRequested\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMySectorService_ExportGlobalData_Input_policy\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"Sequence\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"SequenceAcknowledgement\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"AckRequested\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMySectorService_ExportGlobalData_output_policy\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"Sequence\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"SequenceAcknowledgement\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"AckRequested\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMySectorService_ExportSector_Input_policy\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"Sequence\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"SequenceAcknowledgement\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"AckRequested\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMySectorService_ExportSector_output_policy\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"Sequence\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"SequenceAcknowledgement\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"AckRequested\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMySectorService_Login_Input_policy\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"Sequence\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"SequenceAcknowledgement\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"AckRequested\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMySectorService_Login_output_policy\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"Sequence\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"SequenceAcknowledgement\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"AckRequested\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMySectorService_Login_MyVersionFaultFault_Fault\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"Sequence\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"SequenceAcknowledgement\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"AckRequested\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMySectorService_Login_MyAlreadyLoggedInFaultFault_Fault\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"Sequence\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"SequenceAcknowledgement\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"AckRequested\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMySectorService_Logout_Input_policy\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"Sequence\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"SequenceAcknowledgement\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"AckRequested\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMySectorService_Logout_output_policy\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"Sequence\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"SequenceAcknowledgement\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"AckRequested\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMySectorService_LoadSectorIdentifiers_Input_policy\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"Sequence\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"SequenceAcknowledgement\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"AckRequested\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMySectorService_LoadSectorIdentifiers_output_policy\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"Sequence\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"SequenceAcknowledgement\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"AckRequested\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMySectorService_LoadUserSectorIdentifiers_Input_policy\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"Sequence\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"SequenceAcknowledgement\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"AckRequested\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMySectorService_LoadUserSectorIdentifiers_output_policy\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"Sequence\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"SequenceAcknowledgement\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"AckRequested\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMySectorService_SelectSandbox_Input_policy\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"Sequence\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"SequenceAcknowledgement\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"AckRequested\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMySectorService_SelectSandbox_output_policy\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"Sequence\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"SequenceAcknowledgement\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"AckRequested\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMySectorService_LoadCheckpoint_Input_policy\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"Sequence\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"SequenceAcknowledgement\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"AckRequested\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMySectorService_LoadCheckpoint_output_policy\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"Sequence\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"SequenceAcknowledgement\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"AckRequested\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMySectorService_LoadCheckpoint_MyCustomFaultFault_Fault\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"Sequence\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"SequenceAcknowledgement\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"AckRequested\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMySectorService_LoadObjectGroups_Input_policy\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"Sequence\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"SequenceAcknowledgement\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"AckRequested\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMySectorService_LoadObjectGroups_output_policy\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"Sequence\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"SequenceAcknowledgement\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"AckRequested\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMySectorService_SaveCheckpoint_Input_policy\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"Sequence\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"SequenceAcknowledgement\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"AckRequested\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMySectorService_SaveCheckpoint_output_policy\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"Sequence\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"SequenceAcknowledgement\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"AckRequested\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMySectorService_SaveCheckpoint_MyCustomFaultFault_Fault\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"Sequence\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"SequenceAcknowledgement\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"AckRequested\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMySectorService_TravelToSector_Input_policy\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"Sequence\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"SequenceAcknowledgement\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"AckRequested\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMySectorService_TravelToSector_output_policy\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"Sequence\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"SequenceAcknowledgement\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"AckRequested\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMySectorService_LeaveSector_Input_policy\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"Sequence\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"SequenceAcknowledgement\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"AckRequested\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMySectorService_LeaveSector_output_policy\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"Sequence\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"SequenceAcknowledgement\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"AckRequested\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMySectorService_LoadSectorObjects_Input_policy\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"Sequence\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"SequenceAcknowledgement\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"AckRequested\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMySectorService_LoadSectorObjects_output_policy\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"Sequence\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"SequenceAcknowledgement\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"AckRequested\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMySectorService_LoadSectorObjects_MyCustomFaultFault_Fault\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"Sequence\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"SequenceAcknowledgement\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"AckRequested\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMySectorService_CheckAlive_Input_policy\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"Sequence\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"SequenceAcknowledgement\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"AckRequested\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMySectorService_CheckAlive_output_policy\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"Sequence\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"SequenceAcknowledgement\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"AckRequested\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMySectorService_GetActiveUsers_Input_policy\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"Sequence\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"SequenceAcknowledgement\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"AckRequested\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMySectorService_GetActiveUsers_output_policy\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"Sequence\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"SequenceAcknowledgement\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"AckRequested\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMySectorService_AnnounceShutdown_Input_policy\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"Sequence\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"SequenceAcknowledgement\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"AckRequested\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMySectorService_AnnounceShutdown_output_policy\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"Sequence\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"SequenceAcknowledgement\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"AckRequested\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMySectorService_HarvestingFinished_Input_policy\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"Sequence\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"SequenceAcknowledgement\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"AckRequested\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMySectorService_HarvestingFinished_output_policy\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"Sequence\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"SequenceAcknowledgement\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"AckRequested\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMySectorService_LoadSmallShipTemplates_Input_policy\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"Sequence\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"SequenceAcknowledgement\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"AckRequested\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMySectorService_LoadSmallShipTemplates_output_policy\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"Sequence\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"SequenceAcknowledgement\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"AckRequested\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMySectorService_SaveSmallShipTemplates_Input_policy\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"Sequence\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"SequenceAcknowledgement\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"AckRequested\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMySectorService_SaveSmallShipTemplates_output_policy\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"Sequence\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"SequenceAcknowledgement\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"AckRequested\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMySectorService_NewGame_Input_policy\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"Sequence\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"SequenceAcknowledgement\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"AckRequested\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMySectorService_NewGame_output_policy\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"Sequence\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"SequenceAcknowledgement\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"AckRequested\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMySectorService_LoadLastCheckpoint_Input_policy\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"Sequence\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"SequenceAcknowledgement\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"AckRequested\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMySectorService_LoadLastCheckpoint_output_policy\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"Sequence\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"SequenceAcknowledgement\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"AckRequested\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMySectorService_LoadLastCheckpoint_MyCheckpointNotExistsFaultFault_Fault\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"Sequence\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"SequenceAcknowledgement\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"AckRequested\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMySectorService_SaveLastCheckpoint_Input_policy\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"Sequence\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"SequenceAcknowledgement\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"AckRequested\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMySectorService_SaveLastCheckpoint_output_policy\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"Sequence\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"SequenceAcknowledgement\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"AckRequested\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMySectorService_LoadSandbox_Input_policy\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"Sequence\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"SequenceAcknowledgement\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"AckRequested\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMySectorService_LoadSandbox_output_policy\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"Sequence\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"SequenceAcknowledgement\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"AckRequested\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMySectorService_LoadStoryEditor_Input_policy\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"Sequence\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"SequenceAcknowledgement\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"AckRequested\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMySectorService_LoadStoryEditor_output_policy\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"Sequence\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"SequenceAcknowledgement\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"AckRequested\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMySectorService_SaveStoryEditor_Input_policy\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"Sequence\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"SequenceAcknowledgement\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"AckRequested\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMySectorService_SaveStoryEditor_output_policy\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"Sequence\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"SequenceAcknowledgement\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"AckRequested\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMySectorService_LoadSandboxEditor_Input_policy\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"Sequence\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"SequenceAcknowledgement\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"AckRequested\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMySectorService_LoadSandboxEditor_output_policy\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"Sequence\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"SequenceAcknowledgement\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"AckRequested\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMySectorService_SaveSandboxEditor_Input_policy\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"Sequence\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"SequenceAcknowledgement\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"AckRequested\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMySectorService_SaveSandboxEditor_output_policy\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"Sequence\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"SequenceAcknowledgement\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"AckRequested\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMySectorService_LoadSector_Input_policy\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"Sequence\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"SequenceAcknowledgement\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"AckRequested\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMySectorService_LoadSector_output_policy\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"Sequence\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"SequenceAcknowledgement\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"AckRequested\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMySectorService_Travel_Input_policy\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"Sequence\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"SequenceAcknowledgement\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"AckRequested\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMySectorService_Travel_output_policy\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"Sequence\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"SequenceAcknowledgement\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"AckRequested\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMySectorService_LoadSectorGroups_Input_policy\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"Sequence\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"SequenceAcknowledgement\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"AckRequested\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMySectorService_LoadSectorGroups_output_policy\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"Sequence\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"SequenceAcknowledgement\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"AckRequested\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsp:Policy wsu:Id=\"NetTcpBinding_IMySectorService_NotifyShutdown_output_policy\">\n    <wsp:ExactlyOne>\n      <wsp:All>\n        <sp:SignedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n          <sp:Header Name=\"Sequence\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"SequenceAcknowledgement\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"AckRequested\" Namespace=\"http://schemas.xmlsoap.org/ws/2005/02/rm\">\n          </sp:Header>\n          <sp:Header Name=\"To\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"From\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"FaultTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"ReplyTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"MessageID\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"RelatesTo\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n          <sp:Header Name=\"Action\" Namespace=\"http://www.w3.org/2005/08/addressing\">\n          </sp:Header>\n        </sp:SignedParts>\n        <sp:EncryptedParts xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\">\n          <sp:Body>\n          </sp:Body>\n        </sp:EncryptedParts>\n      </wsp:All>\n    </wsp:ExactlyOne>\n  </wsp:Policy>\n  <wsdl:types>\n    <xsd:schema targetNamespace=\"http://tempuri.org/Imports\">\n      <xsd:import namespace=\"http://tempuri.org/\" />\n      <xsd:import namespace=\"http://schemas.microsoft.com/2003/10/Serialization/\" />\n      <xsd:import namespace=\"http://schemas.datacontract.org/2004/07/SectorServerLIB.SectorService\" />\n      <xsd:import namespace=\"http://schemas.datacontract.org/2004/07/MinerWars.CommonLIB.AppCode.Networking\" />\n      <xsd:import namespace=\"http://schemas.datacontract.org/2004/07/MinerWars.CommonLIB.AppCode.Utils\" />\n      <xsd:import namespace=\"http://schemas.datacontract.org/2004/07/MinerWars.CommonLIB.AppCode.Networking.Services\" />\n      <xsd:import namespace=\"http://schemas.datacontract.org/2004/07/VRageMath\" />\n      <xsd:import namespace=\"http://schemas.microsoft.com/2003/10/Serialization/Arrays\" />\n    </xsd:schema>\n  </wsdl:types>\n  <wsdl:message name=\"IMySectorService_GetGameMoney_InputMessage\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetGameMoney\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMySectorService_GetGameMoney_OutputMessage\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetGameMoneyResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMySectorService_UpdateGameMoney_InputMessage\">\n    <wsdl:part name=\"parameters\" element=\"tns:UpdateGameMoney\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMySectorService_UpdateGameMoney_OutputMessage\">\n    <wsdl:part name=\"parameters\" element=\"tns:UpdateGameMoneyResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMySectorService_LoadExportInfo_InputMessage\">\n    <wsdl:part name=\"parameters\" element=\"tns:LoadExportInfo\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMySectorService_LoadExportInfo_OutputMessage\">\n    <wsdl:part name=\"parameters\" element=\"tns:LoadExportInfoResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMySectorService_ExportGlobalData_InputMessage\">\n    <wsdl:part name=\"parameters\" element=\"tns:ExportGlobalData\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMySectorService_ExportGlobalData_OutputMessage\">\n    <wsdl:part name=\"parameters\" element=\"tns:ExportGlobalDataResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMySectorService_ExportSector_InputMessage\">\n    <wsdl:part name=\"parameters\" element=\"tns:ExportSector\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMySectorService_ExportSector_OutputMessage\">\n    <wsdl:part name=\"parameters\" element=\"tns:ExportSectorResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMySectorService_Login_InputMessage\">\n    <wsdl:part name=\"parameters\" element=\"tns:Login\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMySectorService_Login_OutputMessage\">\n    <wsdl:part name=\"parameters\" element=\"tns:LoginResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMySectorService_Login_MyVersionFaultFault_FaultMessage\">\n    <wsdl:part xmlns:q1=\"http://schemas.datacontract.org/2004/07/MinerWars.CommonLIB.AppCode.Networking.Services\" name=\"detail\" element=\"q1:MyVersionFault\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMySectorService_Login_MyAlreadyLoggedInFaultFault_FaultMessage\">\n    <wsdl:part xmlns:q2=\"http://schemas.datacontract.org/2004/07/MinerWars.CommonLIB.AppCode.Networking.Services\" name=\"detail\" element=\"q2:MyAlreadyLoggedInFault\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMySectorService_Logout_InputMessage\">\n    <wsdl:part name=\"parameters\" element=\"tns:Logout\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMySectorService_Logout_OutputMessage\">\n    <wsdl:part name=\"parameters\" element=\"tns:LogoutResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMySectorService_LoadSectorIdentifiers_InputMessage\">\n    <wsdl:part name=\"parameters\" element=\"tns:LoadSectorIdentifiers\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMySectorService_LoadSectorIdentifiers_OutputMessage\">\n    <wsdl:part name=\"parameters\" element=\"tns:LoadSectorIdentifiersResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMySectorService_LoadUserSectorIdentifiers_InputMessage\">\n    <wsdl:part name=\"parameters\" element=\"tns:LoadUserSectorIdentifiers\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMySectorService_LoadUserSectorIdentifiers_OutputMessage\">\n    <wsdl:part name=\"parameters\" element=\"tns:LoadUserSectorIdentifiersResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMySectorService_SelectSandbox_InputMessage\">\n    <wsdl:part name=\"parameters\" element=\"tns:SelectSandbox\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMySectorService_SelectSandbox_OutputMessage\">\n    <wsdl:part name=\"parameters\" element=\"tns:SelectSandboxResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMySectorService_LoadCheckpoint_InputMessage\">\n    <wsdl:part name=\"parameters\" element=\"tns:LoadCheckpoint\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMySectorService_LoadCheckpoint_OutputMessage\">\n    <wsdl:part name=\"parameters\" element=\"tns:LoadCheckpointResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMySectorService_LoadCheckpoint_MyCustomFaultFault_FaultMessage\">\n    <wsdl:part xmlns:q3=\"http://schemas.datacontract.org/2004/07/MinerWars.CommonLIB.AppCode.Networking.Services\" name=\"detail\" element=\"q3:MyCustomFault\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMySectorService_LoadObjectGroups_InputMessage\">\n    <wsdl:part name=\"parameters\" element=\"tns:LoadObjectGroups\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMySectorService_LoadObjectGroups_OutputMessage\">\n    <wsdl:part name=\"parameters\" element=\"tns:LoadObjectGroupsResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMySectorService_SaveCheckpoint_InputMessage\">\n    <wsdl:part name=\"parameters\" element=\"tns:SaveCheckpoint\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMySectorService_SaveCheckpoint_OutputMessage\">\n    <wsdl:part name=\"parameters\" element=\"tns:SaveCheckpointResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMySectorService_SaveCheckpoint_MyCustomFaultFault_FaultMessage\">\n    <wsdl:part xmlns:q4=\"http://schemas.datacontract.org/2004/07/MinerWars.CommonLIB.AppCode.Networking.Services\" name=\"detail\" element=\"q4:MyCustomFault\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMySectorService_TravelToSector_InputMessage\">\n    <wsdl:part name=\"parameters\" element=\"tns:TravelToSector\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMySectorService_TravelToSector_OutputMessage\">\n    <wsdl:part name=\"parameters\" element=\"tns:TravelToSectorResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMySectorService_LeaveSector_InputMessage\">\n    <wsdl:part name=\"parameters\" element=\"tns:LeaveSector\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMySectorService_LeaveSector_OutputMessage\">\n    <wsdl:part name=\"parameters\" element=\"tns:LeaveSectorResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMySectorService_LoadSectorObjects_InputMessage\">\n    <wsdl:part name=\"parameters\" element=\"tns:LoadSectorObjects\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMySectorService_LoadSectorObjects_OutputMessage\">\n    <wsdl:part name=\"parameters\" element=\"tns:LoadSectorObjectsResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMySectorService_LoadSectorObjects_MyCustomFaultFault_FaultMessage\">\n    <wsdl:part xmlns:q5=\"http://schemas.datacontract.org/2004/07/MinerWars.CommonLIB.AppCode.Networking.Services\" name=\"detail\" element=\"q5:MyCustomFault\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMySectorService_CheckAlive_InputMessage\">\n    <wsdl:part name=\"parameters\" element=\"tns:CheckAlive\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMySectorService_CheckAlive_OutputMessage\">\n    <wsdl:part name=\"parameters\" element=\"tns:CheckAliveResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMySectorService_GetActiveUsers_InputMessage\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetActiveUsers\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMySectorService_GetActiveUsers_OutputMessage\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetActiveUsersResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMySectorService_AnnounceShutdown_InputMessage\">\n    <wsdl:part name=\"parameters\" element=\"tns:AnnounceShutdown\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMySectorService_AnnounceShutdown_OutputMessage\">\n    <wsdl:part name=\"parameters\" element=\"tns:AnnounceShutdownResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMySectorService_HarvestingFinished_InputMessage\">\n    <wsdl:part name=\"parameters\" element=\"tns:HarvestingFinished\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMySectorService_HarvestingFinished_OutputMessage\">\n    <wsdl:part name=\"parameters\" element=\"tns:HarvestingFinishedResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMySectorService_LoadSmallShipTemplates_InputMessage\">\n    <wsdl:part name=\"parameters\" element=\"tns:LoadSmallShipTemplates\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMySectorService_LoadSmallShipTemplates_OutputMessage\">\n    <wsdl:part name=\"parameters\" element=\"tns:LoadSmallShipTemplatesResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMySectorService_SaveSmallShipTemplates_InputMessage\">\n    <wsdl:part name=\"parameters\" element=\"tns:SaveSmallShipTemplates\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMySectorService_SaveSmallShipTemplates_OutputMessage\">\n    <wsdl:part name=\"parameters\" element=\"tns:SaveSmallShipTemplatesResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMySectorService_NewGame_InputMessage\">\n    <wsdl:part name=\"parameters\" element=\"tns:NewGame\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMySectorService_NewGame_OutputMessage\">\n    <wsdl:part name=\"parameters\" element=\"tns:NewGameResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMySectorService_LoadLastCheckpoint_InputMessage\">\n    <wsdl:part name=\"parameters\" element=\"tns:LoadLastCheckpoint\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMySectorService_LoadLastCheckpoint_OutputMessage\">\n    <wsdl:part name=\"parameters\" element=\"tns:LoadLastCheckpointResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMySectorService_LoadLastCheckpoint_MyCheckpointNotExistsFaultFault_FaultMessage\">\n    <wsdl:part xmlns:q6=\"http://schemas.datacontract.org/2004/07/MinerWars.CommonLIB.AppCode.Networking.Services\" name=\"detail\" element=\"q6:MyCheckpointNotExistsFault\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMySectorService_SaveLastCheckpoint_InputMessage\">\n    <wsdl:part name=\"parameters\" element=\"tns:SaveLastCheckpoint\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMySectorService_SaveLastCheckpoint_OutputMessage\">\n    <wsdl:part name=\"parameters\" element=\"tns:SaveLastCheckpointResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMySectorService_LoadSandbox_InputMessage\">\n    <wsdl:part name=\"parameters\" element=\"tns:LoadSandbox\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMySectorService_LoadSandbox_OutputMessage\">\n    <wsdl:part name=\"parameters\" element=\"tns:LoadSandboxResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMySectorService_LoadStoryEditor_InputMessage\">\n    <wsdl:part name=\"parameters\" element=\"tns:LoadStoryEditor\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMySectorService_LoadStoryEditor_OutputMessage\">\n    <wsdl:part name=\"parameters\" element=\"tns:LoadStoryEditorResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMySectorService_SaveStoryEditor_InputMessage\">\n    <wsdl:part name=\"parameters\" element=\"tns:SaveStoryEditor\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMySectorService_SaveStoryEditor_OutputMessage\">\n    <wsdl:part name=\"parameters\" element=\"tns:SaveStoryEditorResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMySectorService_LoadSandboxEditor_InputMessage\">\n    <wsdl:part name=\"parameters\" element=\"tns:LoadSandboxEditor\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMySectorService_LoadSandboxEditor_OutputMessage\">\n    <wsdl:part name=\"parameters\" element=\"tns:LoadSandboxEditorResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMySectorService_SaveSandboxEditor_InputMessage\">\n    <wsdl:part name=\"parameters\" element=\"tns:SaveSandboxEditor\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMySectorService_SaveSandboxEditor_OutputMessage\">\n    <wsdl:part name=\"parameters\" element=\"tns:SaveSandboxEditorResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMySectorService_LoadSector_InputMessage\">\n    <wsdl:part name=\"parameters\" element=\"tns:LoadSector\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMySectorService_LoadSector_OutputMessage\">\n    <wsdl:part name=\"parameters\" element=\"tns:LoadSectorResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMySectorService_Travel_InputMessage\">\n    <wsdl:part name=\"parameters\" element=\"tns:Travel\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMySectorService_Travel_OutputMessage\">\n    <wsdl:part name=\"parameters\" element=\"tns:TravelResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMySectorService_LoadSectorGroups_InputMessage\">\n    <wsdl:part name=\"parameters\" element=\"tns:LoadSectorGroups\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMySectorService_LoadSectorGroups_OutputMessage\">\n    <wsdl:part name=\"parameters\" element=\"tns:LoadSectorGroupsResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"IMySectorService_NotifyShutdown_OutputCallbackMessage\">\n    <wsdl:part name=\"parameters\" element=\"tns:NotifyShutdown\" />\n  </wsdl:message>\n  <wsdl:portType msc:usingSession=\"true\" name=\"IMySectorService\">\n    <wsdl:operation msc:isInitiating=\"false\" msc:isTerminating=\"false\" name=\"GetGameMoney\">\n      <wsdl:input wsaw:Action=\"http://tempuri.org/IMySectorService/GetGameMoney\" message=\"tns:IMySectorService_GetGameMoney_InputMessage\" />\n      <wsdl:output wsaw:Action=\"http://tempuri.org/IMySectorService/GetGameMoneyResponse\" message=\"tns:IMySectorService_GetGameMoney_OutputMessage\" />\n    </wsdl:operation>\n    <wsdl:operation msc:isInitiating=\"false\" msc:isTerminating=\"false\" name=\"UpdateGameMoney\">\n      <wsdl:input wsaw:Action=\"http://tempuri.org/IMySectorService/UpdateGameMoney\" message=\"tns:IMySectorService_UpdateGameMoney_InputMessage\" />\n      <wsdl:output wsaw:Action=\"http://tempuri.org/IMySectorService/UpdateGameMoneyResponse\" message=\"tns:IMySectorService_UpdateGameMoney_OutputMessage\" />\n    </wsdl:operation>\n    <wsdl:operation msc:isInitiating=\"true\" msc:isTerminating=\"false\" name=\"LoadExportInfo\">\n      <wsdl:input wsaw:Action=\"http://tempuri.org/IMySectorService/LoadExportInfo\" message=\"tns:IMySectorService_LoadExportInfo_InputMessage\" />\n      <wsdl:output wsaw:Action=\"http://tempuri.org/IMySectorService/LoadExportInfoResponse\" message=\"tns:IMySectorService_LoadExportInfo_OutputMessage\" />\n    </wsdl:operation>\n    <wsdl:operation msc:isInitiating=\"true\" msc:isTerminating=\"false\" name=\"ExportGlobalData\">\n      <wsdl:input wsaw:Action=\"http://tempuri.org/IMySectorService/ExportGlobalData\" message=\"tns:IMySectorService_ExportGlobalData_InputMessage\" />\n      <wsdl:output wsaw:Action=\"http://tempuri.org/IMySectorService/ExportGlobalDataResponse\" message=\"tns:IMySectorService_ExportGlobalData_OutputMessage\" />\n    </wsdl:operation>\n    <wsdl:operation msc:isInitiating=\"true\" msc:isTerminating=\"false\" name=\"ExportSector\">\n      <wsdl:input wsaw:Action=\"http://tempuri.org/IMySectorService/ExportSector\" message=\"tns:IMySectorService_ExportSector_InputMessage\" />\n      <wsdl:output wsaw:Action=\"http://tempuri.org/IMySectorService/ExportSectorResponse\" message=\"tns:IMySectorService_ExportSector_OutputMessage\" />\n    </wsdl:operation>\n    <wsdl:operation msc:isInitiating=\"true\" msc:isTerminating=\"false\" name=\"Login\">\n      <wsdl:input wsaw:Action=\"http://tempuri.org/IMySectorService/Login\" message=\"tns:IMySectorService_Login_InputMessage\" />\n      <wsdl:output wsaw:Action=\"http://tempuri.org/IMySectorService/LoginResponse\" message=\"tns:IMySectorService_Login_OutputMessage\" />\n      <wsdl:fault wsaw:Action=\"http://tempuri.org/IMySectorService/LoginMyVersionFaultFault\" name=\"MyVersionFaultFault\" message=\"tns:IMySectorService_Login_MyVersionFaultFault_FaultMessage\" />\n      <wsdl:fault wsaw:Action=\"http://tempuri.org/IMySectorService/LoginMyAlreadyLoggedInFaultFault\" name=\"MyAlreadyLoggedInFaultFault\" message=\"tns:IMySectorService_Login_MyAlreadyLoggedInFaultFault_FaultMessage\" />\n    </wsdl:operation>\n    <wsdl:operation msc:isInitiating=\"true\" msc:isTerminating=\"true\" name=\"Logout\">\n      <wsdl:input wsaw:Action=\"http://tempuri.org/IMySectorService/Logout\" message=\"tns:IMySectorService_Logout_InputMessage\" />\n      <wsdl:output wsaw:Action=\"http://tempuri.org/IMySectorService/LogoutResponse\" message=\"tns:IMySectorService_Logout_OutputMessage\" />\n    </wsdl:operation>\n    <wsdl:operation msc:isInitiating=\"false\" msc:isTerminating=\"false\" name=\"LoadSectorIdentifiers\">\n      <wsdl:input wsaw:Action=\"http://tempuri.org/IMySectorService/LoadSectorIdentifiers\" message=\"tns:IMySectorService_LoadSectorIdentifiers_InputMessage\" />\n      <wsdl:output wsaw:Action=\"http://tempuri.org/IMySectorService/LoadSectorIdentifiersResponse\" message=\"tns:IMySectorService_LoadSectorIdentifiers_OutputMessage\" />\n    </wsdl:operation>\n    <wsdl:operation msc:isInitiating=\"false\" msc:isTerminating=\"false\" name=\"LoadUserSectorIdentifiers\">\n      <wsdl:input wsaw:Action=\"http://tempuri.org/IMySectorService/LoadUserSectorIdentifiers\" message=\"tns:IMySectorService_LoadUserSectorIdentifiers_InputMessage\" />\n      <wsdl:output wsaw:Action=\"http://tempuri.org/IMySectorService/LoadUserSectorIdentifiersResponse\" message=\"tns:IMySectorService_LoadUserSectorIdentifiers_OutputMessage\" />\n    </wsdl:operation>\n    <wsdl:operation msc:isInitiating=\"false\" msc:isTerminating=\"false\" name=\"SelectSandbox\">\n      <wsdl:input wsaw:Action=\"http://tempuri.org/IMySectorService/SelectSandbox\" message=\"tns:IMySectorService_SelectSandbox_InputMessage\" />\n      <wsdl:output wsaw:Action=\"http://tempuri.org/IMySectorService/SelectSandboxResponse\" message=\"tns:IMySectorService_SelectSandbox_OutputMessage\" />\n    </wsdl:operation>\n    <wsdl:operation msc:isInitiating=\"false\" msc:isTerminating=\"false\" name=\"LoadCheckpoint\">\n      <wsdl:input wsaw:Action=\"http://tempuri.org/IMySectorService/LoadCheckpoint\" message=\"tns:IMySectorService_LoadCheckpoint_InputMessage\" />\n      <wsdl:output wsaw:Action=\"http://tempuri.org/IMySectorService/LoadCheckpointResponse\" message=\"tns:IMySectorService_LoadCheckpoint_OutputMessage\" />\n      <wsdl:fault wsaw:Action=\"http://tempuri.org/IMySectorService/LoadCheckpointMyCustomFaultFault\" name=\"MyCustomFaultFault\" message=\"tns:IMySectorService_LoadCheckpoint_MyCustomFaultFault_FaultMessage\" />\n    </wsdl:operation>\n    <wsdl:operation msc:isInitiating=\"false\" msc:isTerminating=\"false\" name=\"LoadObjectGroups\">\n      <wsdl:input wsaw:Action=\"http://tempuri.org/IMySectorService/LoadObjectGroups\" message=\"tns:IMySectorService_LoadObjectGroups_InputMessage\" />\n      <wsdl:output wsaw:Action=\"http://tempuri.org/IMySectorService/LoadObjectGroupsResponse\" message=\"tns:IMySectorService_LoadObjectGroups_OutputMessage\" />\n    </wsdl:operation>\n    <wsdl:operation msc:isInitiating=\"false\" msc:isTerminating=\"false\" name=\"SaveCheckpoint\">\n      <wsdl:input wsaw:Action=\"http://tempuri.org/IMySectorService/SaveCheckpoint\" message=\"tns:IMySectorService_SaveCheckpoint_InputMessage\" />\n      <wsdl:output wsaw:Action=\"http://tempuri.org/IMySectorService/SaveCheckpointResponse\" message=\"tns:IMySectorService_SaveCheckpoint_OutputMessage\" />\n      <wsdl:fault wsaw:Action=\"http://tempuri.org/IMySectorService/SaveCheckpointMyCustomFaultFault\" name=\"MyCustomFaultFault\" message=\"tns:IMySectorService_SaveCheckpoint_MyCustomFaultFault_FaultMessage\" />\n    </wsdl:operation>\n    <wsdl:operation msc:isInitiating=\"false\" msc:isTerminating=\"false\" name=\"TravelToSector\">\n      <wsdl:input wsaw:Action=\"http://tempuri.org/IMySectorService/TravelToSector\" message=\"tns:IMySectorService_TravelToSector_InputMessage\" />\n      <wsdl:output wsaw:Action=\"http://tempuri.org/IMySectorService/TravelToSectorResponse\" message=\"tns:IMySectorService_TravelToSector_OutputMessage\" />\n    </wsdl:operation>\n    <wsdl:operation msc:isInitiating=\"false\" msc:isTerminating=\"false\" name=\"LeaveSector\">\n      <wsdl:input wsaw:Action=\"http://tempuri.org/IMySectorService/LeaveSector\" message=\"tns:IMySectorService_LeaveSector_InputMessage\" />\n      <wsdl:output wsaw:Action=\"http://tempuri.org/IMySectorService/LeaveSectorResponse\" message=\"tns:IMySectorService_LeaveSector_OutputMessage\" />\n    </wsdl:operation>\n    <wsdl:operation msc:isInitiating=\"false\" msc:isTerminating=\"false\" name=\"LoadSectorObjects\">\n      <wsdl:input wsaw:Action=\"http://tempuri.org/IMySectorService/LoadSectorObjects\" message=\"tns:IMySectorService_LoadSectorObjects_InputMessage\" />\n      <wsdl:output wsaw:Action=\"http://tempuri.org/IMySectorService/LoadSectorObjectsResponse\" message=\"tns:IMySectorService_LoadSectorObjects_OutputMessage\" />\n      <wsdl:fault wsaw:Action=\"http://tempuri.org/IMySectorService/LoadSectorObjectsMyCustomFaultFault\" name=\"MyCustomFaultFault\" message=\"tns:IMySectorService_LoadSectorObjects_MyCustomFaultFault_FaultMessage\" />\n    </wsdl:operation>\n    <wsdl:operation msc:isInitiating=\"true\" msc:isTerminating=\"false\" name=\"CheckAlive\">\n      <wsdl:input wsaw:Action=\"http://tempuri.org/IMySectorService/CheckAlive\" message=\"tns:IMySectorService_CheckAlive_InputMessage\" />\n      <wsdl:output wsaw:Action=\"http://tempuri.org/IMySectorService/CheckAliveResponse\" message=\"tns:IMySectorService_CheckAlive_OutputMessage\" />\n    </wsdl:operation>\n    <wsdl:operation msc:isInitiating=\"true\" msc:isTerminating=\"false\" name=\"GetActiveUsers\">\n      <wsdl:input wsaw:Action=\"http://tempuri.org/IMySectorService/GetActiveUsers\" message=\"tns:IMySectorService_GetActiveUsers_InputMessage\" />\n      <wsdl:output wsaw:Action=\"http://tempuri.org/IMySectorService/GetActiveUsersResponse\" message=\"tns:IMySectorService_GetActiveUsers_OutputMessage\" />\n    </wsdl:operation>\n    <wsdl:operation msc:isInitiating=\"true\" msc:isTerminating=\"false\" name=\"AnnounceShutdown\">\n      <wsdl:input wsaw:Action=\"http://tempuri.org/IMySectorService/AnnounceShutdown\" message=\"tns:IMySectorService_AnnounceShutdown_InputMessage\" />\n      <wsdl:output wsaw:Action=\"http://tempuri.org/IMySectorService/AnnounceShutdownResponse\" message=\"tns:IMySectorService_AnnounceShutdown_OutputMessage\" />\n    </wsdl:operation>\n    <wsdl:operation msc:isInitiating=\"false\" msc:isTerminating=\"false\" name=\"HarvestingFinished\">\n      <wsdl:input wsaw:Action=\"http://tempuri.org/IMySectorService/HarvestingFinished\" message=\"tns:IMySectorService_HarvestingFinished_InputMessage\" />\n      <wsdl:output wsaw:Action=\"http://tempuri.org/IMySectorService/HarvestingFinishedResponse\" message=\"tns:IMySectorService_HarvestingFinished_OutputMessage\" />\n    </wsdl:operation>\n    <wsdl:operation msc:isInitiating=\"false\" msc:isTerminating=\"false\" name=\"LoadSmallShipTemplates\">\n      <wsdl:input wsaw:Action=\"http://tempuri.org/IMySectorService/LoadSmallShipTemplates\" message=\"tns:IMySectorService_LoadSmallShipTemplates_InputMessage\" />\n      <wsdl:output wsaw:Action=\"http://tempuri.org/IMySectorService/LoadSmallShipTemplatesResponse\" message=\"tns:IMySectorService_LoadSmallShipTemplates_OutputMessage\" />\n    </wsdl:operation>\n    <wsdl:operation msc:isInitiating=\"false\" msc:isTerminating=\"false\" name=\"SaveSmallShipTemplates\">\n      <wsdl:input wsaw:Action=\"http://tempuri.org/IMySectorService/SaveSmallShipTemplates\" message=\"tns:IMySectorService_SaveSmallShipTemplates_InputMessage\" />\n      <wsdl:output wsaw:Action=\"http://tempuri.org/IMySectorService/SaveSmallShipTemplatesResponse\" message=\"tns:IMySectorService_SaveSmallShipTemplates_OutputMessage\" />\n    </wsdl:operation>\n    <wsdl:operation msc:isInitiating=\"false\" msc:isTerminating=\"false\" name=\"NewGame\">\n      <wsdl:input wsaw:Action=\"http://tempuri.org/IMySectorService/NewGame\" message=\"tns:IMySectorService_NewGame_InputMessage\" />\n      <wsdl:output wsaw:Action=\"http://tempuri.org/IMySectorService/NewGameResponse\" message=\"tns:IMySectorService_NewGame_OutputMessage\" />\n    </wsdl:operation>\n    <wsdl:operation msc:isInitiating=\"false\" msc:isTerminating=\"false\" name=\"LoadLastCheckpoint\">\n      <wsdl:input wsaw:Action=\"http://tempuri.org/IMySectorService/LoadLastCheckpoint\" message=\"tns:IMySectorService_LoadLastCheckpoint_InputMessage\" />\n      <wsdl:output wsaw:Action=\"http://tempuri.org/IMySectorService/LoadLastCheckpointResponse\" message=\"tns:IMySectorService_LoadLastCheckpoint_OutputMessage\" />\n      <wsdl:fault wsaw:Action=\"http://tempuri.org/IMySectorService/LoadLastCheckpointMyCheckpointNotExistsFaultFault\" name=\"MyCheckpointNotExistsFaultFault\" message=\"tns:IMySectorService_LoadLastCheckpoint_MyCheckpointNotExistsFaultFault_FaultMessage\" />\n    </wsdl:operation>\n    <wsdl:operation msc:isInitiating=\"false\" msc:isTerminating=\"false\" name=\"SaveLastCheckpoint\">\n      <wsdl:input wsaw:Action=\"http://tempuri.org/IMySectorService/SaveLastCheckpoint\" message=\"tns:IMySectorService_SaveLastCheckpoint_InputMessage\" />\n      <wsdl:output wsaw:Action=\"http://tempuri.org/IMySectorService/SaveLastCheckpointResponse\" message=\"tns:IMySectorService_SaveLastCheckpoint_OutputMessage\" />\n    </wsdl:operation>\n    <wsdl:operation msc:isInitiating=\"false\" msc:isTerminating=\"false\" name=\"LoadSandbox\">\n      <wsdl:input wsaw:Action=\"http://tempuri.org/IMySectorService/LoadSandbox\" message=\"tns:IMySectorService_LoadSandbox_InputMessage\" />\n      <wsdl:output wsaw:Action=\"http://tempuri.org/IMySectorService/LoadSandboxResponse\" message=\"tns:IMySectorService_LoadSandbox_OutputMessage\" />\n    </wsdl:operation>\n    <wsdl:operation msc:isInitiating=\"false\" msc:isTerminating=\"false\" name=\"LoadStoryEditor\">\n      <wsdl:input wsaw:Action=\"http://tempuri.org/IMySectorService/LoadStoryEditor\" message=\"tns:IMySectorService_LoadStoryEditor_InputMessage\" />\n      <wsdl:output wsaw:Action=\"http://tempuri.org/IMySectorService/LoadStoryEditorResponse\" message=\"tns:IMySectorService_LoadStoryEditor_OutputMessage\" />\n    </wsdl:operation>\n    <wsdl:operation msc:isInitiating=\"false\" msc:isTerminating=\"false\" name=\"SaveStoryEditor\">\n      <wsdl:input wsaw:Action=\"http://tempuri.org/IMySectorService/SaveStoryEditor\" message=\"tns:IMySectorService_SaveStoryEditor_InputMessage\" />\n      <wsdl:output wsaw:Action=\"http://tempuri.org/IMySectorService/SaveStoryEditorResponse\" message=\"tns:IMySectorService_SaveStoryEditor_OutputMessage\" />\n    </wsdl:operation>\n    <wsdl:operation msc:isInitiating=\"false\" msc:isTerminating=\"false\" name=\"LoadSandboxEditor\">\n      <wsdl:input wsaw:Action=\"http://tempuri.org/IMySectorService/LoadSandboxEditor\" message=\"tns:IMySectorService_LoadSandboxEditor_InputMessage\" />\n      <wsdl:output wsaw:Action=\"http://tempuri.org/IMySectorService/LoadSandboxEditorResponse\" message=\"tns:IMySectorService_LoadSandboxEditor_OutputMessage\" />\n    </wsdl:operation>\n    <wsdl:operation msc:isInitiating=\"false\" msc:isTerminating=\"false\" name=\"SaveSandboxEditor\">\n      <wsdl:input wsaw:Action=\"http://tempuri.org/IMySectorService/SaveSandboxEditor\" message=\"tns:IMySectorService_SaveSandboxEditor_InputMessage\" />\n      <wsdl:output wsaw:Action=\"http://tempuri.org/IMySectorService/SaveSandboxEditorResponse\" message=\"tns:IMySectorService_SaveSandboxEditor_OutputMessage\" />\n    </wsdl:operation>\n    <wsdl:operation msc:isInitiating=\"false\" msc:isTerminating=\"false\" name=\"LoadSector\">\n      <wsdl:input wsaw:Action=\"http://tempuri.org/IMySectorService/LoadSector\" message=\"tns:IMySectorService_LoadSector_InputMessage\" />\n      <wsdl:output wsaw:Action=\"http://tempuri.org/IMySectorService/LoadSectorResponse\" message=\"tns:IMySectorService_LoadSector_OutputMessage\" />\n    </wsdl:operation>\n    <wsdl:operation msc:isInitiating=\"false\" msc:isTerminating=\"false\" name=\"Travel\">\n      <wsdl:input wsaw:Action=\"http://tempuri.org/IMySectorService/Travel\" message=\"tns:IMySectorService_Travel_InputMessage\" />\n      <wsdl:output wsaw:Action=\"http://tempuri.org/IMySectorService/TravelResponse\" message=\"tns:IMySectorService_Travel_OutputMessage\" />\n    </wsdl:operation>\n    <wsdl:operation msc:isInitiating=\"false\" msc:isTerminating=\"false\" name=\"LoadSectorGroups\">\n      <wsdl:input wsaw:Action=\"http://tempuri.org/IMySectorService/LoadSectorGroups\" message=\"tns:IMySectorService_LoadSectorGroups_InputMessage\" />\n      <wsdl:output wsaw:Action=\"http://tempuri.org/IMySectorService/LoadSectorGroupsResponse\" message=\"tns:IMySectorService_LoadSectorGroups_OutputMessage\" />\n    </wsdl:operation>\n    <wsdl:operation msc:isInitiating=\"true\" msc:isTerminating=\"false\" name=\"NotifyShutdown\">\n      <wsdl:output wsaw:Action=\"http://tempuri.org/IMySectorService/NotifyShutdown\" message=\"tns:IMySectorService_NotifyShutdown_OutputCallbackMessage\" />\n    </wsdl:operation>\n  </wsdl:portType>\n  <wsdl:binding name=\"NetTcpBinding_IMySectorService\" type=\"tns:IMySectorService\">\n    <wsp:PolicyReference URI=\"#NetTcpBinding_IMySectorService_policy\">\n    </wsp:PolicyReference>\n    <soap12:binding transport=\"http://schemas.microsoft.com/soap/tcp\" />\n    <wsdl:operation name=\"GetGameMoney\">\n      <soap12:operation soapAction=\"http://tempuri.org/IMySectorService/GetGameMoney\" style=\"document\" />\n      <wsdl:input>\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMySectorService_GetGameMoney_Input_policy\">\n        </wsp:PolicyReference>\n        <soap12:body use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMySectorService_GetGameMoney_output_policy\">\n        </wsp:PolicyReference>\n        <soap12:body use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"UpdateGameMoney\">\n      <soap12:operation soapAction=\"http://tempuri.org/IMySectorService/UpdateGameMoney\" style=\"document\" />\n      <wsdl:input>\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMySectorService_UpdateGameMoney_Input_policy\">\n        </wsp:PolicyReference>\n        <soap12:body use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMySectorService_UpdateGameMoney_output_policy\">\n        </wsp:PolicyReference>\n        <soap12:body use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"LoadExportInfo\">\n      <soap12:operation soapAction=\"http://tempuri.org/IMySectorService/LoadExportInfo\" style=\"document\" />\n      <wsdl:input>\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMySectorService_LoadExportInfo_Input_policy\">\n        </wsp:PolicyReference>\n        <soap12:body use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMySectorService_LoadExportInfo_output_policy\">\n        </wsp:PolicyReference>\n        <soap12:body use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"ExportGlobalData\">\n      <soap12:operation soapAction=\"http://tempuri.org/IMySectorService/ExportGlobalData\" style=\"document\" />\n      <wsdl:input>\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMySectorService_ExportGlobalData_Input_policy\">\n        </wsp:PolicyReference>\n        <soap12:body use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMySectorService_ExportGlobalData_output_policy\">\n        </wsp:PolicyReference>\n        <soap12:body use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"ExportSector\">\n      <soap12:operation soapAction=\"http://tempuri.org/IMySectorService/ExportSector\" style=\"document\" />\n      <wsdl:input>\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMySectorService_ExportSector_Input_policy\">\n        </wsp:PolicyReference>\n        <soap12:body use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMySectorService_ExportSector_output_policy\">\n        </wsp:PolicyReference>\n        <soap12:body use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Login\">\n      <soap12:operation soapAction=\"http://tempuri.org/IMySectorService/Login\" style=\"document\" />\n      <wsdl:input>\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMySectorService_Login_Input_policy\">\n        </wsp:PolicyReference>\n        <soap12:body use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMySectorService_Login_output_policy\">\n        </wsp:PolicyReference>\n        <soap12:body use=\"literal\" />\n      </wsdl:output>\n      <wsdl:fault name=\"MyVersionFaultFault\">\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMySectorService_Login_MyVersionFaultFault_Fault\">\n        </wsp:PolicyReference>\n        <soap12:fault use=\"literal\" name=\"MyVersionFaultFault\" namespace=\"\" />\n      </wsdl:fault>\n      <wsdl:fault name=\"MyAlreadyLoggedInFaultFault\">\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMySectorService_Login_MyAlreadyLoggedInFaultFault_Fault\">\n        </wsp:PolicyReference>\n        <soap12:fault use=\"literal\" name=\"MyAlreadyLoggedInFaultFault\" namespace=\"\" />\n      </wsdl:fault>\n    </wsdl:operation>\n    <wsdl:operation name=\"Logout\">\n      <soap12:operation soapAction=\"http://tempuri.org/IMySectorService/Logout\" style=\"document\" />\n      <wsdl:input>\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMySectorService_Logout_Input_policy\">\n        </wsp:PolicyReference>\n        <soap12:body use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMySectorService_Logout_output_policy\">\n        </wsp:PolicyReference>\n        <soap12:body use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"LoadSectorIdentifiers\">\n      <soap12:operation soapAction=\"http://tempuri.org/IMySectorService/LoadSectorIdentifiers\" style=\"document\" />\n      <wsdl:input>\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMySectorService_LoadSectorIdentifiers_Input_policy\">\n        </wsp:PolicyReference>\n        <soap12:body use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMySectorService_LoadSectorIdentifiers_output_policy\">\n        </wsp:PolicyReference>\n        <soap12:body use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"LoadUserSectorIdentifiers\">\n      <soap12:operation soapAction=\"http://tempuri.org/IMySectorService/LoadUserSectorIdentifiers\" style=\"document\" />\n      <wsdl:input>\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMySectorService_LoadUserSectorIdentifiers_Input_policy\">\n        </wsp:PolicyReference>\n        <soap12:body use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMySectorService_LoadUserSectorIdentifiers_output_policy\">\n        </wsp:PolicyReference>\n        <soap12:body use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"SelectSandbox\">\n      <soap12:operation soapAction=\"http://tempuri.org/IMySectorService/SelectSandbox\" style=\"document\" />\n      <wsdl:input>\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMySectorService_SelectSandbox_Input_policy\">\n        </wsp:PolicyReference>\n        <soap12:body use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMySectorService_SelectSandbox_output_policy\">\n        </wsp:PolicyReference>\n        <soap12:body use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"LoadCheckpoint\">\n      <soap12:operation soapAction=\"http://tempuri.org/IMySectorService/LoadCheckpoint\" style=\"document\" />\n      <wsdl:input>\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMySectorService_LoadCheckpoint_Input_policy\">\n        </wsp:PolicyReference>\n        <soap12:body use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMySectorService_LoadCheckpoint_output_policy\">\n        </wsp:PolicyReference>\n        <soap12:body use=\"literal\" />\n      </wsdl:output>\n      <wsdl:fault name=\"MyCustomFaultFault\">\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMySectorService_LoadCheckpoint_MyCustomFaultFault_Fault\">\n        </wsp:PolicyReference>\n        <soap12:fault use=\"literal\" name=\"MyCustomFaultFault\" namespace=\"\" />\n      </wsdl:fault>\n    </wsdl:operation>\n    <wsdl:operation name=\"LoadObjectGroups\">\n      <soap12:operation soapAction=\"http://tempuri.org/IMySectorService/LoadObjectGroups\" style=\"document\" />\n      <wsdl:input>\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMySectorService_LoadObjectGroups_Input_policy\">\n        </wsp:PolicyReference>\n        <soap12:body use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMySectorService_LoadObjectGroups_output_policy\">\n        </wsp:PolicyReference>\n        <soap12:body use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"SaveCheckpoint\">\n      <soap12:operation soapAction=\"http://tempuri.org/IMySectorService/SaveCheckpoint\" style=\"document\" />\n      <wsdl:input>\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMySectorService_SaveCheckpoint_Input_policy\">\n        </wsp:PolicyReference>\n        <soap12:body use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMySectorService_SaveCheckpoint_output_policy\">\n        </wsp:PolicyReference>\n        <soap12:body use=\"literal\" />\n      </wsdl:output>\n      <wsdl:fault name=\"MyCustomFaultFault\">\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMySectorService_SaveCheckpoint_MyCustomFaultFault_Fault\">\n        </wsp:PolicyReference>\n        <soap12:fault use=\"literal\" name=\"MyCustomFaultFault\" namespace=\"\" />\n      </wsdl:fault>\n    </wsdl:operation>\n    <wsdl:operation name=\"TravelToSector\">\n      <soap12:operation soapAction=\"http://tempuri.org/IMySectorService/TravelToSector\" style=\"document\" />\n      <wsdl:input>\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMySectorService_TravelToSector_Input_policy\">\n        </wsp:PolicyReference>\n        <soap12:body use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMySectorService_TravelToSector_output_policy\">\n        </wsp:PolicyReference>\n        <soap12:body use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"LeaveSector\">\n      <soap12:operation soapAction=\"http://tempuri.org/IMySectorService/LeaveSector\" style=\"document\" />\n      <wsdl:input>\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMySectorService_LeaveSector_Input_policy\">\n        </wsp:PolicyReference>\n        <soap12:body use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMySectorService_LeaveSector_output_policy\">\n        </wsp:PolicyReference>\n        <soap12:body use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"LoadSectorObjects\">\n      <soap12:operation soapAction=\"http://tempuri.org/IMySectorService/LoadSectorObjects\" style=\"document\" />\n      <wsdl:input>\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMySectorService_LoadSectorObjects_Input_policy\">\n        </wsp:PolicyReference>\n        <soap12:body use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMySectorService_LoadSectorObjects_output_policy\">\n        </wsp:PolicyReference>\n        <soap12:body use=\"literal\" />\n      </wsdl:output>\n      <wsdl:fault name=\"MyCustomFaultFault\">\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMySectorService_LoadSectorObjects_MyCustomFaultFault_Fault\">\n        </wsp:PolicyReference>\n        <soap12:fault use=\"literal\" name=\"MyCustomFaultFault\" namespace=\"\" />\n      </wsdl:fault>\n    </wsdl:operation>\n    <wsdl:operation name=\"CheckAlive\">\n      <soap12:operation soapAction=\"http://tempuri.org/IMySectorService/CheckAlive\" style=\"document\" />\n      <wsdl:input>\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMySectorService_CheckAlive_Input_policy\">\n        </wsp:PolicyReference>\n        <soap12:body use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMySectorService_CheckAlive_output_policy\">\n        </wsp:PolicyReference>\n        <soap12:body use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"GetActiveUsers\">\n      <soap12:operation soapAction=\"http://tempuri.org/IMySectorService/GetActiveUsers\" style=\"document\" />\n      <wsdl:input>\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMySectorService_GetActiveUsers_Input_policy\">\n        </wsp:PolicyReference>\n        <soap12:body use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMySectorService_GetActiveUsers_output_policy\">\n        </wsp:PolicyReference>\n        <soap12:body use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"AnnounceShutdown\">\n      <soap12:operation soapAction=\"http://tempuri.org/IMySectorService/AnnounceShutdown\" style=\"document\" />\n      <wsdl:input>\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMySectorService_AnnounceShutdown_Input_policy\">\n        </wsp:PolicyReference>\n        <soap12:body use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMySectorService_AnnounceShutdown_output_policy\">\n        </wsp:PolicyReference>\n        <soap12:body use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"HarvestingFinished\">\n      <soap12:operation soapAction=\"http://tempuri.org/IMySectorService/HarvestingFinished\" style=\"document\" />\n      <wsdl:input>\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMySectorService_HarvestingFinished_Input_policy\">\n        </wsp:PolicyReference>\n        <soap12:body use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMySectorService_HarvestingFinished_output_policy\">\n        </wsp:PolicyReference>\n        <soap12:body use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"LoadSmallShipTemplates\">\n      <soap12:operation soapAction=\"http://tempuri.org/IMySectorService/LoadSmallShipTemplates\" style=\"document\" />\n      <wsdl:input>\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMySectorService_LoadSmallShipTemplates_Input_policy\">\n        </wsp:PolicyReference>\n        <soap12:body use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMySectorService_LoadSmallShipTemplates_output_policy\">\n        </wsp:PolicyReference>\n        <soap12:body use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"SaveSmallShipTemplates\">\n      <soap12:operation soapAction=\"http://tempuri.org/IMySectorService/SaveSmallShipTemplates\" style=\"document\" />\n      <wsdl:input>\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMySectorService_SaveSmallShipTemplates_Input_policy\">\n        </wsp:PolicyReference>\n        <soap12:body use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMySectorService_SaveSmallShipTemplates_output_policy\">\n        </wsp:PolicyReference>\n        <soap12:body use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"NewGame\">\n      <soap12:operation soapAction=\"http://tempuri.org/IMySectorService/NewGame\" style=\"document\" />\n      <wsdl:input>\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMySectorService_NewGame_Input_policy\">\n        </wsp:PolicyReference>\n        <soap12:body use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMySectorService_NewGame_output_policy\">\n        </wsp:PolicyReference>\n        <soap12:body use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"LoadLastCheckpoint\">\n      <soap12:operation soapAction=\"http://tempuri.org/IMySectorService/LoadLastCheckpoint\" style=\"document\" />\n      <wsdl:input>\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMySectorService_LoadLastCheckpoint_Input_policy\">\n        </wsp:PolicyReference>\n        <soap12:body use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMySectorService_LoadLastCheckpoint_output_policy\">\n        </wsp:PolicyReference>\n        <soap12:body use=\"literal\" />\n      </wsdl:output>\n      <wsdl:fault name=\"MyCheckpointNotExistsFaultFault\">\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMySectorService_LoadLastCheckpoint_MyCheckpointNotExistsFaultFault_Fault\">\n        </wsp:PolicyReference>\n        <soap12:fault use=\"literal\" name=\"MyCheckpointNotExistsFaultFault\" namespace=\"\" />\n      </wsdl:fault>\n    </wsdl:operation>\n    <wsdl:operation name=\"SaveLastCheckpoint\">\n      <soap12:operation soapAction=\"http://tempuri.org/IMySectorService/SaveLastCheckpoint\" style=\"document\" />\n      <wsdl:input>\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMySectorService_SaveLastCheckpoint_Input_policy\">\n        </wsp:PolicyReference>\n        <soap12:body use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMySectorService_SaveLastCheckpoint_output_policy\">\n        </wsp:PolicyReference>\n        <soap12:body use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"LoadSandbox\">\n      <soap12:operation soapAction=\"http://tempuri.org/IMySectorService/LoadSandbox\" style=\"document\" />\n      <wsdl:input>\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMySectorService_LoadSandbox_Input_policy\">\n        </wsp:PolicyReference>\n        <soap12:body use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMySectorService_LoadSandbox_output_policy\">\n        </wsp:PolicyReference>\n        <soap12:body use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"LoadStoryEditor\">\n      <soap12:operation soapAction=\"http://tempuri.org/IMySectorService/LoadStoryEditor\" style=\"document\" />\n      <wsdl:input>\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMySectorService_LoadStoryEditor_Input_policy\">\n        </wsp:PolicyReference>\n        <soap12:body use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMySectorService_LoadStoryEditor_output_policy\">\n        </wsp:PolicyReference>\n        <soap12:body use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"SaveStoryEditor\">\n      <soap12:operation soapAction=\"http://tempuri.org/IMySectorService/SaveStoryEditor\" style=\"document\" />\n      <wsdl:input>\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMySectorService_SaveStoryEditor_Input_policy\">\n        </wsp:PolicyReference>\n        <soap12:body use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMySectorService_SaveStoryEditor_output_policy\">\n        </wsp:PolicyReference>\n        <soap12:body use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"LoadSandboxEditor\">\n      <soap12:operation soapAction=\"http://tempuri.org/IMySectorService/LoadSandboxEditor\" style=\"document\" />\n      <wsdl:input>\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMySectorService_LoadSandboxEditor_Input_policy\">\n        </wsp:PolicyReference>\n        <soap12:body use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMySectorService_LoadSandboxEditor_output_policy\">\n        </wsp:PolicyReference>\n        <soap12:body use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"SaveSandboxEditor\">\n      <soap12:operation soapAction=\"http://tempuri.org/IMySectorService/SaveSandboxEditor\" style=\"document\" />\n      <wsdl:input>\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMySectorService_SaveSandboxEditor_Input_policy\">\n        </wsp:PolicyReference>\n        <soap12:body use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMySectorService_SaveSandboxEditor_output_policy\">\n        </wsp:PolicyReference>\n        <soap12:body use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"LoadSector\">\n      <soap12:operation soapAction=\"http://tempuri.org/IMySectorService/LoadSector\" style=\"document\" />\n      <wsdl:input>\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMySectorService_LoadSector_Input_policy\">\n        </wsp:PolicyReference>\n        <soap12:body use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMySectorService_LoadSector_output_policy\">\n        </wsp:PolicyReference>\n        <soap12:body use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Travel\">\n      <soap12:operation soapAction=\"http://tempuri.org/IMySectorService/Travel\" style=\"document\" />\n      <wsdl:input>\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMySectorService_Travel_Input_policy\">\n        </wsp:PolicyReference>\n        <soap12:body use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMySectorService_Travel_output_policy\">\n        </wsp:PolicyReference>\n        <soap12:body use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"LoadSectorGroups\">\n      <soap12:operation soapAction=\"http://tempuri.org/IMySectorService/LoadSectorGroups\" style=\"document\" />\n      <wsdl:input>\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMySectorService_LoadSectorGroups_Input_policy\">\n        </wsp:PolicyReference>\n        <soap12:body use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMySectorService_LoadSectorGroups_output_policy\">\n        </wsp:PolicyReference>\n        <soap12:body use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"NotifyShutdown\">\n      <soap12:operation soapAction=\"http://tempuri.org/IMySectorService/NotifyShutdown\" style=\"document\" />\n      <wsdl:output>\n        <wsp:PolicyReference URI=\"#NetTcpBinding_IMySectorService_NotifyShutdown_output_policy\">\n        </wsp:PolicyReference>\n        <soap12:body use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n  </wsdl:binding>\n  <wsdl:service name=\"MySectorService\">\n    <wsdl:port name=\"NetTcpBinding_IMySectorService\" binding=\"tns:NetTcpBinding_IMySectorService\">\n      <soap12:address location=\"net.tcp://localhost:25000/\" />\n      <wsa10:EndpointReference>\n        <wsa10:Address>net.tcp://localhost:25000/</wsa10:Address>\n        <Identity xmlns=\"http://schemas.xmlsoap.org/ws/2006/02/addressingidentity\">\n          <KeyInfo xmlns=\"http://www.w3.org/2000/09/xmldsig#\">\n            <X509Data>\n              <X509Certificate>MIIB9zCCAWSgAwIBAgIQAIfM1MmtVahIddB3SfFALDAJBgUrDgMCHQUAMBcxFTATBgNVBAMTDFNlY3RvclNlcnZlcjAeFw0xMjAyMjMwODUzNTNaFw0zOTEyMzEyMzU5NTlaMBcxFTATBgNVBAMTDFNlY3RvclNlcnZlcjCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAgzOKZmguTkpMKvvV46oKVBOqvkszDrBLwnYTtINWKONyYCyLrrcGbCQf4w1Nd/2z9HvevE6xt5zQUW4Vb1jfyc82PibkF09IpmPJZMxnK6ws+MRGgofrsJkLsNrpjCJFsgnob7ffThuLZKCby90BuHrGW4RU6u7jqHW956VWsCECAwEAAaNMMEowSAYDVR0BBEEwP4AQLf564WBHe/+4uMVNphHx4qEZMBcxFTATBgNVBAMTDFNlY3RvclNlcnZlcoIQAIfM1MmtVahIddB3SfFALDAJBgUrDgMCHQUAA4GBADjFqNbaPgxJ0q+EI+SnwwyYaAcxV1fSrUI0lsnmn4NXs3oSSF/e6tTNwznN9NmXxpHEbsho8T1GBb5zg3k8d770WL+t2DmzJvCChz7b9ZG457d78NxMc3P+o5ueb5SEPeWNBbyD/eXozsD6G/6/35BiX2N6hVpDlhIq+Dz6wttH</X509Certificate>\n            </X509Data>\n          </KeyInfo>\n        </Identity>\n      </wsa10:EndpointReference>\n    </wsdl:port>\n  </wsdl:service>\n</wsdl:definitions>"
  },
  {
    "path": "Sources/MinerWars.GameLib/Service References/AppCode.Networking.SectorService/service.xsd",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema xmlns:tns=\"http://tempuri.org/\" elementFormDefault=\"qualified\" targetNamespace=\"http://tempuri.org/\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">\n  <xs:import namespace=\"http://schemas.datacontract.org/2004/07/SectorServerLIB.SectorService\" />\n  <xs:import namespace=\"http://schemas.datacontract.org/2004/07/MinerWars.CommonLIB.AppCode.Utils\" />\n  <xs:import namespace=\"http://schemas.datacontract.org/2004/07/MinerWars.CommonLIB.AppCode.Networking\" />\n  <xs:import namespace=\"http://schemas.datacontract.org/2004/07/VRageMath\" />\n  <xs:import namespace=\"http://schemas.microsoft.com/2003/10/Serialization/Arrays\" />\n  <xs:import namespace=\"http://schemas.microsoft.com/2003/10/Serialization/\" />\n  <xs:element name=\"GetGameMoney\">\n    <xs:complexType>\n      <xs:sequence />\n    </xs:complexType>\n  </xs:element>\n  <xs:element name=\"GetGameMoneyResponse\">\n    <xs:complexType>\n      <xs:sequence>\n        <xs:element minOccurs=\"0\" name=\"GetGameMoneyResult\" type=\"xs:decimal\" />\n      </xs:sequence>\n    </xs:complexType>\n  </xs:element>\n  <xs:element name=\"UpdateGameMoney\">\n    <xs:complexType>\n      <xs:sequence>\n        <xs:element minOccurs=\"0\" name=\"moneyAdded\" type=\"xs:decimal\" />\n      </xs:sequence>\n    </xs:complexType>\n  </xs:element>\n  <xs:element name=\"UpdateGameMoneyResponse\">\n    <xs:complexType>\n      <xs:sequence />\n    </xs:complexType>\n  </xs:element>\n  <xs:element name=\"LoadExportInfo\">\n    <xs:complexType>\n      <xs:sequence />\n    </xs:complexType>\n  </xs:element>\n  <xs:element name=\"LoadExportInfoResponse\">\n    <xs:complexType>\n      <xs:sequence>\n        <xs:element xmlns:q1=\"http://schemas.datacontract.org/2004/07/SectorServerLIB.SectorService\" minOccurs=\"0\" name=\"LoadExportInfoResult\" nillable=\"true\" type=\"q1:ArrayOfExportInfo\" />\n      </xs:sequence>\n    </xs:complexType>\n  </xs:element>\n  <xs:element name=\"ExportGlobalData\">\n    <xs:complexType>\n      <xs:sequence />\n    </xs:complexType>\n  </xs:element>\n  <xs:element name=\"ExportGlobalDataResponse\">\n    <xs:complexType>\n      <xs:sequence>\n        <xs:element minOccurs=\"0\" name=\"globalData\" nillable=\"true\" type=\"xs:base64Binary\" />\n        <xs:element minOccurs=\"0\" name=\"storyCheckpoint\" nillable=\"true\" type=\"xs:base64Binary\" />\n        <xs:element minOccurs=\"0\" name=\"sandboxCheckpoint\" nillable=\"true\" type=\"xs:base64Binary\" />\n      </xs:sequence>\n    </xs:complexType>\n  </xs:element>\n  <xs:element name=\"ExportSector\">\n    <xs:complexType>\n      <xs:sequence>\n        <xs:element xmlns:q2=\"http://schemas.datacontract.org/2004/07/MinerWars.CommonLIB.AppCode.Utils\" minOccurs=\"0\" name=\"sectorPosition\" type=\"q2:MyMwcVector3Int\" />\n        <xs:element minOccurs=\"0\" name=\"userId\" nillable=\"true\" type=\"xs:int\" />\n        <xs:element xmlns:q3=\"http://schemas.datacontract.org/2004/07/MinerWars.CommonLIB.AppCode.Networking\" minOccurs=\"0\" name=\"sectorType\" type=\"q3:MyMwcSectorTypeEnum\" />\n      </xs:sequence>\n    </xs:complexType>\n  </xs:element>\n  <xs:element name=\"ExportSectorResponse\">\n    <xs:complexType>\n      <xs:sequence>\n        <xs:element minOccurs=\"0\" name=\"ExportSectorResult\" nillable=\"true\" type=\"xs:base64Binary\" />\n      </xs:sequence>\n    </xs:complexType>\n  </xs:element>\n  <xs:element name=\"Login\">\n    <xs:complexType>\n      <xs:sequence>\n        <xs:element minOccurs=\"0\" name=\"gameVersion\" type=\"xs:int\" />\n      </xs:sequence>\n    </xs:complexType>\n  </xs:element>\n  <xs:element name=\"LoginResponse\">\n    <xs:complexType>\n      <xs:sequence>\n        <xs:element xmlns:q4=\"http://schemas.datacontract.org/2004/07/SectorServerLIB.SectorService\" minOccurs=\"0\" name=\"LoginResult\" nillable=\"true\" type=\"q4:MyUserInfo\" />\n      </xs:sequence>\n    </xs:complexType>\n  </xs:element>\n  <xs:element name=\"Logout\">\n    <xs:complexType>\n      <xs:sequence />\n    </xs:complexType>\n  </xs:element>\n  <xs:element name=\"LogoutResponse\">\n    <xs:complexType>\n      <xs:sequence />\n    </xs:complexType>\n  </xs:element>\n  <xs:element name=\"LoadSectorIdentifiers\">\n    <xs:complexType>\n      <xs:sequence>\n        <xs:element xmlns:q5=\"http://schemas.datacontract.org/2004/07/MinerWars.CommonLIB.AppCode.Networking\" minOccurs=\"0\" name=\"sectorType\" type=\"q5:MyMwcSectorTypeEnum\" />\n      </xs:sequence>\n    </xs:complexType>\n  </xs:element>\n  <xs:element name=\"LoadSectorIdentifiersResponse\">\n    <xs:complexType>\n      <xs:sequence>\n        <xs:element xmlns:q6=\"http://schemas.datacontract.org/2004/07/MinerWars.CommonLIB.AppCode.Networking\" minOccurs=\"0\" name=\"LoadSectorIdentifiersResult\" nillable=\"true\" type=\"q6:ArrayOfMyMwcSectorIdentifier\" />\n      </xs:sequence>\n    </xs:complexType>\n  </xs:element>\n  <xs:element name=\"LoadUserSectorIdentifiers\">\n    <xs:complexType>\n      <xs:sequence />\n    </xs:complexType>\n  </xs:element>\n  <xs:element name=\"LoadUserSectorIdentifiersResponse\">\n    <xs:complexType>\n      <xs:sequence>\n        <xs:element xmlns:q7=\"http://schemas.datacontract.org/2004/07/MinerWars.CommonLIB.AppCode.Networking\" minOccurs=\"0\" name=\"LoadUserSectorIdentifiersResult\" nillable=\"true\" type=\"q7:ArrayOfMyMwcSectorIdentifier\" />\n      </xs:sequence>\n    </xs:complexType>\n  </xs:element>\n  <xs:element name=\"SelectSandbox\">\n    <xs:complexType>\n      <xs:sequence>\n        <xs:element xmlns:q8=\"http://schemas.datacontract.org/2004/07/MinerWars.CommonLIB.AppCode.Networking\" minOccurs=\"0\" name=\"selectSandboxType\" type=\"q8:MyMwcSelectSectorRequestTypeEnum\" />\n        <xs:element minOccurs=\"0\" name=\"findPlayerName\" nillable=\"true\" type=\"xs:string\" />\n      </xs:sequence>\n    </xs:complexType>\n  </xs:element>\n  <xs:element name=\"SelectSandboxResponse\">\n    <xs:complexType>\n      <xs:sequence>\n        <xs:element xmlns:q9=\"http://schemas.datacontract.org/2004/07/MinerWars.CommonLIB.AppCode.Networking\" minOccurs=\"0\" name=\"SelectSandboxResult\" nillable=\"true\" type=\"q9:ArrayOfMyMwcSectorIdentifier\" />\n        <xs:element xmlns:q10=\"http://schemas.datacontract.org/2004/07/MinerWars.CommonLIB.AppCode.Networking\" minOccurs=\"0\" name=\"userDetails\" nillable=\"true\" type=\"q10:ArrayOfMyMwcUserDetail\" />\n      </xs:sequence>\n    </xs:complexType>\n  </xs:element>\n  <xs:element name=\"LoadCheckpoint\">\n    <xs:complexType>\n      <xs:sequence>\n        <xs:element xmlns:q11=\"http://schemas.datacontract.org/2004/07/MinerWars.CommonLIB.AppCode.Networking\" minOccurs=\"0\" name=\"sessionType\" type=\"q11:MyMwcSectorTypeEnum\" />\n        <xs:element xmlns:q12=\"http://schemas.datacontract.org/2004/07/MinerWars.CommonLIB.AppCode.Networking\" minOccurs=\"0\" name=\"sessionStartType\" type=\"q12:MyMwcSessionStateEnum\" />\n        <xs:element minOccurs=\"0\" name=\"userId\" nillable=\"true\" type=\"xs:int\" />\n        <xs:element xmlns:q13=\"http://schemas.datacontract.org/2004/07/MinerWars.CommonLIB.AppCode.Utils\" minOccurs=\"0\" name=\"sectorPosition\" nillable=\"true\" type=\"q13:MyMwcVector3Int\" />\n        <xs:element minOccurs=\"0\" name=\"checkpointName\" nillable=\"true\" type=\"xs:string\" />\n      </xs:sequence>\n    </xs:complexType>\n  </xs:element>\n  <xs:element name=\"LoadCheckpointResponse\">\n    <xs:complexType>\n      <xs:sequence>\n        <xs:element minOccurs=\"0\" name=\"LoadCheckpointResult\" nillable=\"true\" type=\"xs:base64Binary\" />\n      </xs:sequence>\n    </xs:complexType>\n  </xs:element>\n  <xs:element name=\"LoadObjectGroups\">\n    <xs:complexType>\n      <xs:sequence>\n        <xs:element xmlns:q14=\"http://schemas.datacontract.org/2004/07/MinerWars.CommonLIB.AppCode.Networking\" minOccurs=\"0\" name=\"sessionType\" type=\"q14:MyMwcSectorTypeEnum\" />\n        <xs:element minOccurs=\"0\" name=\"userId\" nillable=\"true\" type=\"xs:int\" />\n        <xs:element xmlns:q15=\"http://schemas.datacontract.org/2004/07/MinerWars.CommonLIB.AppCode.Utils\" minOccurs=\"0\" name=\"sectorPosition\" type=\"q15:MyMwcVector3Int\" />\n      </xs:sequence>\n    </xs:complexType>\n  </xs:element>\n  <xs:element name=\"LoadObjectGroupsResponse\">\n    <xs:complexType>\n      <xs:sequence>\n        <xs:element minOccurs=\"0\" name=\"LoadObjectGroupsResult\" nillable=\"true\" type=\"xs:base64Binary\" />\n      </xs:sequence>\n    </xs:complexType>\n  </xs:element>\n  <xs:element name=\"SaveCheckpoint\">\n    <xs:complexType>\n      <xs:sequence>\n        <xs:element minOccurs=\"0\" name=\"checkpoint\" nillable=\"true\" type=\"xs:base64Binary\" />\n        <xs:element minOccurs=\"0\" name=\"savePlayer\" type=\"xs:boolean\" />\n      </xs:sequence>\n    </xs:complexType>\n  </xs:element>\n  <xs:element name=\"SaveCheckpointResponse\">\n    <xs:complexType>\n      <xs:sequence />\n    </xs:complexType>\n  </xs:element>\n  <xs:element name=\"TravelToSector\">\n    <xs:complexType>\n      <xs:sequence>\n        <xs:element xmlns:q16=\"http://schemas.datacontract.org/2004/07/MinerWars.CommonLIB.AppCode.Networking\" minOccurs=\"0\" name=\"travelType\" type=\"q16:MyMwcTravelTypeEnum\" />\n        <xs:element xmlns:q17=\"http://schemas.datacontract.org/2004/07/MinerWars.CommonLIB.AppCode.Utils\" minOccurs=\"0\" name=\"targetSector\" type=\"q17:MyMwcVector3Int\" />\n        <xs:element xmlns:q18=\"http://schemas.datacontract.org/2004/07/VRageMath\" minOccurs=\"0\" name=\"currentShipPosition\" type=\"q18:Vector3\" />\n        <xs:element minOccurs=\"0\" name=\"currentSectorVersion\" type=\"xs:int\" />\n      </xs:sequence>\n    </xs:complexType>\n  </xs:element>\n  <xs:element name=\"TravelToSectorResponse\">\n    <xs:complexType>\n      <xs:sequence>\n        <xs:element minOccurs=\"0\" name=\"TravelToSectorResult\" nillable=\"true\" type=\"xs:base64Binary\" />\n        <xs:element xmlns:q19=\"http://schemas.datacontract.org/2004/07/VRageMath\" minOccurs=\"0\" name=\"newShipPosition\" type=\"q19:Vector3\" />\n      </xs:sequence>\n    </xs:complexType>\n  </xs:element>\n  <xs:element name=\"LeaveSector\">\n    <xs:complexType>\n      <xs:sequence>\n        <xs:element xmlns:q20=\"http://schemas.datacontract.org/2004/07/MinerWars.CommonLIB.AppCode.Networking\" minOccurs=\"0\" name=\"reason\" type=\"q20:MyMwcLeaveSectorReasonEnum\" />\n      </xs:sequence>\n    </xs:complexType>\n  </xs:element>\n  <xs:element name=\"LeaveSectorResponse\">\n    <xs:complexType>\n      <xs:sequence />\n    </xs:complexType>\n  </xs:element>\n  <xs:element name=\"LoadSectorObjects\">\n    <xs:complexType>\n      <xs:sequence>\n        <xs:element minOccurs=\"0\" name=\"playerName\" nillable=\"true\" type=\"xs:string\" />\n        <xs:element minOccurs=\"0\" name=\"sectorName\" nillable=\"true\" type=\"xs:string\" />\n        <xs:element xmlns:q21=\"http://schemas.datacontract.org/2004/07/MinerWars.CommonLIB.AppCode.Utils\" minOccurs=\"0\" name=\"sectorPosition\" type=\"q21:MyMwcVector3Int\" />\n      </xs:sequence>\n    </xs:complexType>\n  </xs:element>\n  <xs:element name=\"LoadSectorObjectsResponse\">\n    <xs:complexType>\n      <xs:sequence>\n        <xs:element minOccurs=\"0\" name=\"LoadSectorObjectsResult\" nillable=\"true\" type=\"xs:base64Binary\" />\n      </xs:sequence>\n    </xs:complexType>\n  </xs:element>\n  <xs:element name=\"CheckAlive\">\n    <xs:complexType>\n      <xs:sequence />\n    </xs:complexType>\n  </xs:element>\n  <xs:element name=\"CheckAliveResponse\">\n    <xs:complexType>\n      <xs:sequence>\n        <xs:element minOccurs=\"0\" name=\"CheckAliveResult\" type=\"xs:boolean\" />\n      </xs:sequence>\n    </xs:complexType>\n  </xs:element>\n  <xs:element name=\"GetActiveUsers\">\n    <xs:complexType>\n      <xs:sequence />\n    </xs:complexType>\n  </xs:element>\n  <xs:element name=\"GetActiveUsersResponse\">\n    <xs:complexType>\n      <xs:sequence>\n        <xs:element xmlns:q22=\"http://schemas.microsoft.com/2003/10/Serialization/Arrays\" minOccurs=\"0\" name=\"GetActiveUsersResult\" nillable=\"true\" type=\"q22:ArrayOfstring\" />\n      </xs:sequence>\n    </xs:complexType>\n  </xs:element>\n  <xs:element name=\"AnnounceShutdown\">\n    <xs:complexType>\n      <xs:sequence>\n        <xs:element xmlns:q23=\"http://schemas.microsoft.com/2003/10/Serialization/\" minOccurs=\"0\" name=\"timeToShutdown\" type=\"q23:duration\" />\n        <xs:element xmlns:q24=\"http://schemas.microsoft.com/2003/10/Serialization/\" minOccurs=\"0\" name=\"shutdownLength\" type=\"q24:duration\" />\n        <xs:element minOccurs=\"0\" name=\"message\" nillable=\"true\" type=\"xs:string\" />\n      </xs:sequence>\n    </xs:complexType>\n  </xs:element>\n  <xs:element name=\"AnnounceShutdownResponse\">\n    <xs:complexType>\n      <xs:sequence>\n        <xs:element minOccurs=\"0\" name=\"AnnounceShutdownResult\" type=\"xs:int\" />\n      </xs:sequence>\n    </xs:complexType>\n  </xs:element>\n  <xs:element name=\"HarvestingFinished\">\n    <xs:complexType>\n      <xs:sequence>\n        <xs:element xmlns:q25=\"http://schemas.datacontract.org/2004/07/MinerWars.CommonLIB.AppCode.Networking\" minOccurs=\"0\" name=\"materialEnum\" type=\"q25:MyMwcVoxelMaterialsEnum\" />\n        <xs:element minOccurs=\"0\" name=\"voxelContentHarvested\" type=\"xs:unsignedByte\" />\n      </xs:sequence>\n    </xs:complexType>\n  </xs:element>\n  <xs:element name=\"HarvestingFinishedResponse\">\n    <xs:complexType>\n      <xs:sequence />\n    </xs:complexType>\n  </xs:element>\n  <xs:element name=\"LoadSmallShipTemplates\">\n    <xs:complexType>\n      <xs:sequence />\n    </xs:complexType>\n  </xs:element>\n  <xs:element name=\"LoadSmallShipTemplatesResponse\">\n    <xs:complexType>\n      <xs:sequence>\n        <xs:element minOccurs=\"0\" name=\"LoadSmallShipTemplatesResult\" nillable=\"true\" type=\"xs:base64Binary\" />\n      </xs:sequence>\n    </xs:complexType>\n  </xs:element>\n  <xs:element name=\"SaveSmallShipTemplates\">\n    <xs:complexType>\n      <xs:sequence>\n        <xs:element minOccurs=\"0\" name=\"smallShipTemplates\" nillable=\"true\" type=\"xs:base64Binary\" />\n      </xs:sequence>\n    </xs:complexType>\n  </xs:element>\n  <xs:element name=\"SaveSmallShipTemplatesResponse\">\n    <xs:complexType>\n      <xs:sequence />\n    </xs:complexType>\n  </xs:element>\n  <xs:element name=\"NewGame\">\n    <xs:complexType>\n      <xs:sequence>\n        <xs:element xmlns:q26=\"http://schemas.datacontract.org/2004/07/MinerWars.CommonLIB.AppCode.Utils\" minOccurs=\"0\" name=\"startSector\" nillable=\"true\" type=\"q26:MyMwcVector3Int\" />\n      </xs:sequence>\n    </xs:complexType>\n  </xs:element>\n  <xs:element name=\"NewGameResponse\">\n    <xs:complexType>\n      <xs:sequence>\n        <xs:element minOccurs=\"0\" name=\"NewGameResult\" nillable=\"true\" type=\"xs:base64Binary\" />\n      </xs:sequence>\n    </xs:complexType>\n  </xs:element>\n  <xs:element name=\"LoadLastCheckpoint\">\n    <xs:complexType>\n      <xs:sequence />\n    </xs:complexType>\n  </xs:element>\n  <xs:element name=\"LoadLastCheckpointResponse\">\n    <xs:complexType>\n      <xs:sequence>\n        <xs:element minOccurs=\"0\" name=\"LoadLastCheckpointResult\" nillable=\"true\" type=\"xs:base64Binary\" />\n      </xs:sequence>\n    </xs:complexType>\n  </xs:element>\n  <xs:element name=\"SaveLastCheckpoint\">\n    <xs:complexType>\n      <xs:sequence>\n        <xs:element minOccurs=\"0\" name=\"checkpointBuilder\" nillable=\"true\" type=\"xs:base64Binary\" />\n      </xs:sequence>\n    </xs:complexType>\n  </xs:element>\n  <xs:element name=\"SaveLastCheckpointResponse\">\n    <xs:complexType>\n      <xs:sequence />\n    </xs:complexType>\n  </xs:element>\n  <xs:element name=\"LoadSandbox\">\n    <xs:complexType>\n      <xs:sequence>\n        <xs:element xmlns:q27=\"http://schemas.datacontract.org/2004/07/MinerWars.CommonLIB.AppCode.Utils\" minOccurs=\"0\" name=\"sectorPosition\" type=\"q27:MyMwcVector3Int\" />\n        <xs:element minOccurs=\"0\" name=\"userId\" nillable=\"true\" type=\"xs:int\" />\n        <xs:element minOccurs=\"0\" name=\"clientSectorVersion\" nillable=\"true\" type=\"xs:int\" />\n      </xs:sequence>\n    </xs:complexType>\n  </xs:element>\n  <xs:element name=\"LoadSandboxResponse\">\n    <xs:complexType>\n      <xs:sequence>\n        <xs:element minOccurs=\"0\" name=\"LoadSandboxResult\" nillable=\"true\" type=\"xs:base64Binary\" />\n      </xs:sequence>\n    </xs:complexType>\n  </xs:element>\n  <xs:element name=\"LoadStoryEditor\">\n    <xs:complexType>\n      <xs:sequence>\n        <xs:element xmlns:q28=\"http://schemas.datacontract.org/2004/07/MinerWars.CommonLIB.AppCode.Utils\" minOccurs=\"0\" name=\"sectorPosition\" type=\"q28:MyMwcVector3Int\" />\n      </xs:sequence>\n    </xs:complexType>\n  </xs:element>\n  <xs:element name=\"LoadStoryEditorResponse\">\n    <xs:complexType>\n      <xs:sequence>\n        <xs:element minOccurs=\"0\" name=\"LoadStoryEditorResult\" nillable=\"true\" type=\"xs:base64Binary\" />\n      </xs:sequence>\n    </xs:complexType>\n  </xs:element>\n  <xs:element name=\"SaveStoryEditor\">\n    <xs:complexType>\n      <xs:sequence>\n        <xs:element minOccurs=\"0\" name=\"sectorObjectBuilder\" nillable=\"true\" type=\"xs:base64Binary\" />\n      </xs:sequence>\n    </xs:complexType>\n  </xs:element>\n  <xs:element name=\"SaveStoryEditorResponse\">\n    <xs:complexType>\n      <xs:sequence />\n    </xs:complexType>\n  </xs:element>\n  <xs:element name=\"LoadSandboxEditor\">\n    <xs:complexType>\n      <xs:sequence>\n        <xs:element xmlns:q29=\"http://schemas.datacontract.org/2004/07/MinerWars.CommonLIB.AppCode.Utils\" minOccurs=\"0\" name=\"sectorPosition\" type=\"q29:MyMwcVector3Int\" />\n        <xs:element minOccurs=\"0\" name=\"clientSectorVersion\" nillable=\"true\" type=\"xs:int\" />\n      </xs:sequence>\n    </xs:complexType>\n  </xs:element>\n  <xs:element name=\"LoadSandboxEditorResponse\">\n    <xs:complexType>\n      <xs:sequence>\n        <xs:element minOccurs=\"0\" name=\"LoadSandboxEditorResult\" nillable=\"true\" type=\"xs:base64Binary\" />\n      </xs:sequence>\n    </xs:complexType>\n  </xs:element>\n  <xs:element name=\"SaveSandboxEditor\">\n    <xs:complexType>\n      <xs:sequence>\n        <xs:element minOccurs=\"0\" name=\"sectorObjectBuilder\" nillable=\"true\" type=\"xs:base64Binary\" />\n      </xs:sequence>\n    </xs:complexType>\n  </xs:element>\n  <xs:element name=\"SaveSandboxEditorResponse\">\n    <xs:complexType>\n      <xs:sequence />\n    </xs:complexType>\n  </xs:element>\n  <xs:element name=\"LoadSector\">\n    <xs:complexType>\n      <xs:sequence />\n    </xs:complexType>\n  </xs:element>\n  <xs:element name=\"LoadSectorResponse\">\n    <xs:complexType>\n      <xs:sequence>\n        <xs:element minOccurs=\"0\" name=\"LoadSectorResult\" nillable=\"true\" type=\"xs:base64Binary\" />\n      </xs:sequence>\n    </xs:complexType>\n  </xs:element>\n  <xs:element name=\"Travel\">\n    <xs:complexType>\n      <xs:sequence>\n        <xs:element xmlns:q30=\"http://schemas.datacontract.org/2004/07/MinerWars.CommonLIB.AppCode.Utils\" minOccurs=\"0\" name=\"targetSector\" type=\"q30:MyMwcVector3Int\" />\n        <xs:element minOccurs=\"0\" name=\"clientSectorVersion\" nillable=\"true\" type=\"xs:int\" />\n      </xs:sequence>\n    </xs:complexType>\n  </xs:element>\n  <xs:element name=\"TravelResponse\">\n    <xs:complexType>\n      <xs:sequence>\n        <xs:element minOccurs=\"0\" name=\"TravelResult\" nillable=\"true\" type=\"xs:base64Binary\" />\n      </xs:sequence>\n    </xs:complexType>\n  </xs:element>\n  <xs:element name=\"LoadSectorGroups\">\n    <xs:complexType>\n      <xs:sequence>\n        <xs:element xmlns:q31=\"http://schemas.datacontract.org/2004/07/MinerWars.CommonLIB.AppCode.Utils\" minOccurs=\"0\" name=\"sectorPosition\" type=\"q31:MyMwcVector3Int\" />\n        <xs:element minOccurs=\"0\" name=\"clientSectorVersion\" nillable=\"true\" type=\"xs:int\" />\n      </xs:sequence>\n    </xs:complexType>\n  </xs:element>\n  <xs:element name=\"LoadSectorGroupsResponse\">\n    <xs:complexType>\n      <xs:sequence>\n        <xs:element minOccurs=\"0\" name=\"LoadSectorGroupsResult\" nillable=\"true\" type=\"xs:base64Binary\" />\n      </xs:sequence>\n    </xs:complexType>\n  </xs:element>\n  <xs:element name=\"NotifyShutdown\">\n    <xs:complexType>\n      <xs:sequence>\n        <xs:element xmlns:q32=\"http://schemas.microsoft.com/2003/10/Serialization/\" minOccurs=\"0\" name=\"shutdownIn\" type=\"q32:duration\" />\n        <xs:element xmlns:q33=\"http://schemas.microsoft.com/2003/10/Serialization/\" minOccurs=\"0\" name=\"shutdownLength\" type=\"q33:duration\" />\n        <xs:element minOccurs=\"0\" name=\"shutdownMessage\" nillable=\"true\" type=\"xs:string\" />\n      </xs:sequence>\n    </xs:complexType>\n  </xs:element>\n</xs:schema>"
  },
  {
    "path": "Sources/MinerWars.GameLib/Service References/AppCode.Networking.SectorService/service1.xsd",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema xmlns:tns=\"http://schemas.microsoft.com/2003/10/Serialization/\" attributeFormDefault=\"qualified\" elementFormDefault=\"qualified\" targetNamespace=\"http://schemas.microsoft.com/2003/10/Serialization/\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">\n  <xs:element name=\"anyType\" nillable=\"true\" type=\"xs:anyType\" />\n  <xs:element name=\"anyURI\" nillable=\"true\" type=\"xs:anyURI\" />\n  <xs:element name=\"base64Binary\" nillable=\"true\" type=\"xs:base64Binary\" />\n  <xs:element name=\"boolean\" nillable=\"true\" type=\"xs:boolean\" />\n  <xs:element name=\"byte\" nillable=\"true\" type=\"xs:byte\" />\n  <xs:element name=\"dateTime\" nillable=\"true\" type=\"xs:dateTime\" />\n  <xs:element name=\"decimal\" nillable=\"true\" type=\"xs:decimal\" />\n  <xs:element name=\"double\" nillable=\"true\" type=\"xs:double\" />\n  <xs:element name=\"float\" nillable=\"true\" type=\"xs:float\" />\n  <xs:element name=\"int\" nillable=\"true\" type=\"xs:int\" />\n  <xs:element name=\"long\" nillable=\"true\" type=\"xs:long\" />\n  <xs:element name=\"QName\" nillable=\"true\" type=\"xs:QName\" />\n  <xs:element name=\"short\" nillable=\"true\" type=\"xs:short\" />\n  <xs:element name=\"string\" nillable=\"true\" type=\"xs:string\" />\n  <xs:element name=\"unsignedByte\" nillable=\"true\" type=\"xs:unsignedByte\" />\n  <xs:element name=\"unsignedInt\" nillable=\"true\" type=\"xs:unsignedInt\" />\n  <xs:element name=\"unsignedLong\" nillable=\"true\" type=\"xs:unsignedLong\" />\n  <xs:element name=\"unsignedShort\" nillable=\"true\" type=\"xs:unsignedShort\" />\n  <xs:element name=\"char\" nillable=\"true\" type=\"tns:char\" />\n  <xs:simpleType name=\"char\">\n    <xs:restriction base=\"xs:int\" />\n  </xs:simpleType>\n  <xs:element name=\"duration\" nillable=\"true\" type=\"tns:duration\" />\n  <xs:simpleType name=\"duration\">\n    <xs:restriction base=\"xs:duration\">\n      <xs:pattern value=\"\\-?P(\\d*D)?(T(\\d*H)?(\\d*M)?(\\d*(\\.\\d*)?S)?)?\" />\n      <xs:minInclusive value=\"-P10675199DT2H48M5.4775808S\" />\n      <xs:maxInclusive value=\"P10675199DT2H48M5.4775807S\" />\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:element name=\"guid\" nillable=\"true\" type=\"tns:guid\" />\n  <xs:simpleType name=\"guid\">\n    <xs:restriction base=\"xs:string\">\n      <xs:pattern value=\"[\\da-fA-F]{8}-[\\da-fA-F]{4}-[\\da-fA-F]{4}-[\\da-fA-F]{4}-[\\da-fA-F]{12}\" />\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:attribute name=\"FactoryType\" type=\"xs:QName\" />\n  <xs:attribute name=\"Id\" type=\"xs:ID\" />\n  <xs:attribute name=\"Ref\" type=\"xs:IDREF\" />\n</xs:schema>"
  },
  {
    "path": "Sources/MinerWars.GameServices/IMySteam.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace MinerWars.GameServices\n{\n    public interface IMySteam\n    {\n        bool IsActive { get; }\n        bool IsOnline { get; }\n\n        Int64 UserId { get; }\n        string UserName { get; }\n\n        byte[] SessionTicket { get; }\n        String SerialKey { get; }\n        void RefreshSessionTicket();\n\n        void StoreStats();\n        void SetAchievement(string name, bool immediatellyUpload);\n        void IndicateAchievementProgress(string achievement, uint value, uint maxValue);\n        void SetStat(string statName, int value);\n        int GetStatInt(string statName);\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWars.GameServices/MinerWars.GameServices.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"4.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProductVersion>8.0.30703</ProductVersion>\n    <SchemaVersion>2.0</SchemaVersion>\n    <ProjectGuid>{7B22B556-B0CD-4EA0-A638-1F33975C7764}</ProjectGuid>\n    <OutputType>Library</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>MinerWars.GameServices</RootNamespace>\n    <AssemblyName>MinerWars.GameServices</AssemblyName>\n    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>\n    <FileAlignment>512</FileAlignment>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x86'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x86\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE</DefineConstants>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <ErrorReport>prompt</ErrorReport>\n    <CodeAnalysisIgnoreBuiltInRuleSets>true</CodeAnalysisIgnoreBuiltInRuleSets>\n    <CodeAnalysisIgnoreBuiltInRules>true</CodeAnalysisIgnoreBuiltInRules>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x86'\">\n    <OutputPath>bin\\x86\\Release\\</OutputPath>\n    <DefineConstants>TRACE</DefineConstants>\n    <Optimize>true</Optimize>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <ErrorReport>prompt</ErrorReport>\n    <CodeAnalysisIgnoreBuiltInRuleSets>false</CodeAnalysisIgnoreBuiltInRuleSets>\n    <CodeAnalysisIgnoreBuiltInRules>true</CodeAnalysisIgnoreBuiltInRules>\n    <CodeAnalysisFailOnMissingRules>true</CodeAnalysisFailOnMissingRules>\n  </PropertyGroup>\n  <ItemGroup>\n    <Reference Include=\"System\" />\n    <Reference Include=\"System.Core\" />\n    <Reference Include=\"System.Xml.Linq\" />\n    <Reference Include=\"System.Data.DataSetExtensions\" />\n    <Reference Include=\"Microsoft.CSharp\" />\n    <Reference Include=\"System.Data\" />\n    <Reference Include=\"System.Xml\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Compile Include=\"ServiceContainer.cs\" />\n    <Compile Include=\"IMySteam.cs\" />\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n  </ItemGroup>\n  <Import Project=\"$(MSBuildToolsPath)\\Microsoft.CSharp.targets\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "Sources/MinerWars.GameServices/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"MinerWarsGameServices\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"MinerWarsGameServices\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2013\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Setting ComVisible to false makes the types in this assembly not visible \n// to COM components.  If you need to access a type in this assembly from \n// COM, set the ComVisible attribute to true on that type.\n[assembly: ComVisible(false)]\n\n// The following GUID is for the ID of the typelib if this project is exposed to COM\n[assembly: Guid(\"22e50996-c195-41b8-9900-12519549424d\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n"
  },
  {
    "path": "Sources/MinerWars.GameServices/ServiceContainer.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Reflection;\n\nnamespace MinerWars.GameServices\n{\n    public class ServiceContainer\n    {\n        public readonly IMySteam Steam;\n        public readonly bool RunningMod;\n        public readonly string ModDir;\n        public readonly string AppDir;\n\n        public ServiceContainer(IMySteam steam, string appDir, string modDir)\n        {\n            this.Steam = steam;\n            this.AppDir = appDir;\n            this.ModDir = modDir;\n            this.RunningMod = modDir != null;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWarsExpressLauncher/MinerWarsExpressLauncher.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"4.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">x86</Platform>\n    <ProductVersion>8.0.30703</ProductVersion>\n    <SchemaVersion>2.0</SchemaVersion>\n    <ProjectGuid>{0565D1C3-0F16-41AE-8561-44FF4E0494B4}</ProjectGuid>\n    <OutputType>WinExe</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>MinerWarsExpressLauncher</RootNamespace>\n    <AssemblyName>MinerWarsExpressLauncher</AssemblyName>\n    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>\n    <TargetFrameworkProfile>Client</TargetFrameworkProfile>\n    <FileAlignment>512</FileAlignment>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|x86' \">\n    <PlatformTarget>x86</PlatformTarget>\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>bin\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|x86' \">\n    <PlatformTarget>x86</PlatformTarget>\n    <DebugType>pdbonly</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>bin\\Release\\</OutputPath>\n    <DefineConstants>TRACE</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <ItemGroup>\n    <Reference Include=\"System\" />\n    <Reference Include=\"System.Core\" />\n    <Reference Include=\"System.Xml.Linq\" />\n    <Reference Include=\"System.Data.DataSetExtensions\" />\n    <Reference Include=\"Microsoft.CSharp\" />\n    <Reference Include=\"System.Data\" />\n    <Reference Include=\"System.Deployment\" />\n    <Reference Include=\"System.Drawing\" />\n    <Reference Include=\"System.Windows.Forms\" />\n    <Reference Include=\"System.Xml\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Compile Include=\"Program.cs\" />\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n    <EmbeddedResource Include=\"Properties\\Resources.resx\">\n      <Generator>ResXFileCodeGenerator</Generator>\n      <LastGenOutput>Resources.Designer.cs</LastGenOutput>\n      <SubType>Designer</SubType>\n    </EmbeddedResource>\n    <Compile Include=\"Properties\\Resources.Designer.cs\">\n      <AutoGen>True</AutoGen>\n      <DependentUpon>Resources.resx</DependentUpon>\n    </Compile>\n    <None Include=\"Properties\\Settings.settings\">\n      <Generator>SettingsSingleFileGenerator</Generator>\n      <LastGenOutput>Settings.Designer.cs</LastGenOutput>\n    </None>\n    <Compile Include=\"Properties\\Settings.Designer.cs\">\n      <AutoGen>True</AutoGen>\n      <DependentUpon>Settings.settings</DependentUpon>\n      <DesignTimeSharedInput>True</DesignTimeSharedInput>\n    </Compile>\n  </ItemGroup>\n  <ItemGroup>\n    <ProjectReference Include=\"..\\MinerWars.GameLib\\MinerWars.GameLib.csproj\">\n      <Project>{F2AA32D9-F560-4DEF-BBF2-3DCCF4B17320}</Project>\n      <Name>MinerWars.GameLib</Name>\n    </ProjectReference>\n  </ItemGroup>\n  <Import Project=\"$(MSBuildToolsPath)\\Microsoft.CSharp.targets\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "Sources/MinerWarsExpressLauncher/MinerWarsExpressLauncher.csproj.user",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"4.0\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x86'\">\n    <StartArguments>\n    </StartArguments>\n  </PropertyGroup>\n</Project>"
  },
  {
    "path": "Sources/MinerWarsExpressLauncher/Program.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Windows.Forms;\nusing System.Diagnostics;\nusing System.IO;\nusing Microsoft.Win32;\nusing System.Text;\n\nnamespace MinerWarsExpressLauncher\n{\n    static class Program\n    {\n        static readonly string ExeName = \"MinerWars.exe\";\n        static readonly string DefaultPath = @\"C:\\Program Files (x86)\\Steam\\steamapps\\common\\MinerWars\\MinerWars.exe\";\n\n        static string FromRegistryPath\n        {\n            get\n            {\n                string steamPath = Registry.CurrentUser.OpenSubKey(@\"Software\\Valve\\Steam\").GetValue(\"SteamPath\").ToString();\n                return Path.Combine(steamPath, \"steamapps\", \"common\", \"MinerWars\", ExeName);\n            }\n        }\n\n        static string InstallPath64\n        {\n            get\n            {\n                string installPath = Registry.LocalMachine.OpenSubKey(@\"SOFTWARE\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\Steam App 223430\").GetValue(\"InstallLocation\").ToString();\n                return Path.Combine(installPath, ExeName);\n            }\n        }\n\n        static string InstallPath\n        {\n            get\n            {\n                string installPath = Registry.LocalMachine.OpenSubKey(@\"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\Steam App 223430\").GetValue(\"InstallLocation\").ToString();\n                return Path.Combine(installPath, ExeName);\n            }\n        }\n\n        static string TestPaths(params string[] paths)\n        {\n            foreach (var p in paths)\n            {\n                try\n                {\n                    FileInfo fi = new FileInfo(p);\n                    if (fi.Exists && fi.Name == ExeName)\n                        return p;\n                }\n                catch { }\n            }\n            return null;\n        }\n\n        static bool VerifySteamAppIdTxt(string path)\n        {\n            const string steam_appid = \"steam_appid.txt\";\n            string dir = Path.GetDirectoryName(path);\n            string appIdPath = Path.Combine(dir, steam_appid);\n\n            if (!File.Exists(appIdPath))\n            {\n                try\n                {\n                    Process p = new Process();\n                    p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;\n                    p.StartInfo.FileName = \"cmd\";\n                    p.StartInfo.Arguments = string.Format(\"/C \\\"echo 223430> \\\"{0}\\\"\\\"\", appIdPath);\n                    p.StartInfo.UseShellExecute = true;\n                    if (System.Environment.OSVersion.Version.Major >= 6)\n                    {\n                        p.StartInfo.Verb = \"runas\";\n                    }\n                    if (!p.Start())\n                    {\n                        throw new InvalidOperationException();\n                    }\n                    p.WaitForExit();\n                }\n                catch\n                {\n                    StringBuilder text = new StringBuilder();\n                    text.AppendFormat(\"Cannot create file '{0}'\", appIdPath);\n                    text.AppendLine();\n                    text.Append(\"Please create this file and write '223430' (without quotes) into this file\");\n                    MessageBox.Show(text.ToString(), String.Format(\"Cannot create {0}\", steam_appid));\n                    return false;\n                }\n            }\n            return true;\n        }\n\n        [STAThread]\n        static void Main(string[] args)\n        {\n            string path = TestPaths(args.FirstOrDefault(), InstallPath64, InstallPath, FromRegistryPath, DefaultPath);\n\n            while (path == null)\n            {\n                OpenFileDialog dlg = new OpenFileDialog();\n                dlg.Title = \"Please locate MinerWars.exe\";\n                dlg.Filter = \"MinerWars.exe |MinerWars.exe\";\n                dlg.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86);\n                dlg.Multiselect = false;\n                if (dlg.ShowDialog() != DialogResult.OK)\n                {\n                    return;\n                }\n                path = TestPaths(dlg.FileName);\n            }\n            if (VerifySteamAppIdTxt(path))\n            {\n                AppDomain.CurrentDomain.ExecuteAssembly(path, new string[] { \"-FromLauncher\", \"-modd\", \"-restarted\" });\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWarsExpressLauncher/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"MinerWarsExpressLauncher\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"MinerWarsExpressLauncher\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2013\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Setting ComVisible to false makes the types in this assembly not visible \n// to COM components.  If you need to access a type in this assembly from \n// COM, set the ComVisible attribute to true on that type.\n[assembly: ComVisible(false)]\n\n// The following GUID is for the ID of the typelib if this project is exposed to COM\n[assembly: Guid(\"abc38e3d-5887-4ab2-b42e-1d6d66f7a726\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n"
  },
  {
    "path": "Sources/MinerWarsExpressLauncher/Properties/Resources.Designer.cs",
    "content": "﻿//------------------------------------------------------------------------------\n// <auto-generated>\n//     This code was generated by a tool.\n//     Runtime Version:4.0.30319.296\n//\n//     Changes to this file may cause incorrect behavior and will be lost if\n//     the code is regenerated.\n// </auto-generated>\n//------------------------------------------------------------------------------\n\nnamespace MinerWarsExpressLauncher.Properties\n{\n\n\n    /// <summary>\n    ///   A strongly-typed resource class, for looking up localized strings, etc.\n    /// </summary>\n    // This class was auto-generated by the StronglyTypedResourceBuilder\n    // class via a tool like ResGen or Visual Studio.\n    // To add or remove a member, edit your .ResX file then rerun ResGen\n    // with the /str option, or rebuild your VS project.\n    [global::System.CodeDom.Compiler.GeneratedCodeAttribute(\"System.Resources.Tools.StronglyTypedResourceBuilder\", \"4.0.0.0\")]\n    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\n    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]\n    internal class Resources\n    {\n\n        private static global::System.Resources.ResourceManager resourceMan;\n\n        private static global::System.Globalization.CultureInfo resourceCulture;\n\n        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute(\"Microsoft.Performance\", \"CA1811:AvoidUncalledPrivateCode\")]\n        internal Resources()\n        {\n        }\n\n        /// <summary>\n        ///   Returns the cached ResourceManager instance used by this class.\n        /// </summary>\n        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]\n        internal static global::System.Resources.ResourceManager ResourceManager\n        {\n            get\n            {\n                if ((resourceMan == null))\n                {\n                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager(\"MinerWarsExpressLauncher.Properties.Resources\", typeof(Resources).Assembly);\n                    resourceMan = temp;\n                }\n                return resourceMan;\n            }\n        }\n\n        /// <summary>\n        ///   Overrides the current thread's CurrentUICulture property for all\n        ///   resource lookups using this strongly typed resource class.\n        /// </summary>\n        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]\n        internal static global::System.Globalization.CultureInfo Culture\n        {\n            get\n            {\n                return resourceCulture;\n            }\n            set\n            {\n                resourceCulture = value;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWarsExpressLauncher/Properties/Resources.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n</root>"
  },
  {
    "path": "Sources/MinerWarsExpressLauncher/Properties/Settings.Designer.cs",
    "content": "﻿//------------------------------------------------------------------------------\n// <auto-generated>\n//     This code was generated by a tool.\n//     Runtime Version:4.0.30319.296\n//\n//     Changes to this file may cause incorrect behavior and will be lost if\n//     the code is regenerated.\n// </auto-generated>\n//------------------------------------------------------------------------------\n\nnamespace MinerWarsExpressLauncher.Properties\n{\n\n\n    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]\n    [global::System.CodeDom.Compiler.GeneratedCodeAttribute(\"Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator\", \"10.0.0.0\")]\n    internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase\n    {\n\n        private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));\n\n        public static Settings Default\n        {\n            get\n            {\n                return defaultInstance;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWarsExpressLauncher/Properties/Settings.settings",
    "content": "﻿<?xml version='1.0' encoding='utf-8'?>\n<SettingsFile xmlns=\"http://schemas.microsoft.com/VisualStudio/2004/01/settings\" CurrentProfile=\"(Default)\">\n  <Profiles>\n    <Profile Name=\"(Default)\" />\n  </Profiles>\n  <Settings />\n</SettingsFile>\n"
  },
  {
    "path": "Sources/MinerWarsMath/BoundingBox.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Globalization;\n\nnamespace MinerWarsMath\n{\n    /// <summary>\n    /// Defines an axis-aligned box-shaped 3D volume.\n    /// </summary>\n    [Serializable]\n    public struct BoundingBox : IEquatable<BoundingBox>\n    {\n        /// <summary>\n        /// Specifies the total number of corners (8) in the BoundingBox.\n        /// </summary>\n        public const int CornerCount = 8;\n        /// <summary>\n        /// The minimum point the BoundingBox contains.\n        /// </summary>\n        public Vector3 Min;\n        /// <summary>\n        /// The maximum point the BoundingBox contains.\n        /// </summary>\n        public Vector3 Max;\n\n        /// <summary>\n        /// Creates an instance of BoundingBox.\n        /// </summary>\n        /// <param name=\"min\">The minimum point the BoundingBox includes.</param><param name=\"max\">The maximum point the BoundingBox includes.</param>\n        public BoundingBox(Vector3 min, Vector3 max)\n        {\n            this.Min = min;\n            this.Max = max;\n        }\n\n        /// <summary>\n        /// Determines whether two instances of BoundingBox are equal.\n        /// </summary>\n        /// <param name=\"a\">BoundingBox to compare.</param><param name=\"b\">BoundingBox to compare.</param>\n        public static bool operator ==(BoundingBox a, BoundingBox b)\n        {\n            return a.Equals(b);\n        }\n\n        /// <summary>\n        /// Determines whether two instances of BoundingBox are not equal.\n        /// </summary>\n        /// <param name=\"a\">The object to the left of the inequality operator.</param><param name=\"b\">The object to the right of the inequality operator.</param>\n        public static bool operator !=(BoundingBox a, BoundingBox b)\n        {\n            if (!(a.Min != b.Min))\n                return a.Max != b.Max;\n            else\n                return true;\n        }\n\n        /// <summary>\n        /// Gets an array of points that make up the corners of the BoundingBox.\n        /// </summary>\n        public Vector3[] GetCorners()\n        {\n            return new Vector3[8]\n      {\n        new Vector3(this.Min.X, this.Max.Y, this.Max.Z),\n        new Vector3(this.Max.X, this.Max.Y, this.Max.Z),\n        new Vector3(this.Max.X, this.Min.Y, this.Max.Z),\n        new Vector3(this.Min.X, this.Min.Y, this.Max.Z),\n        new Vector3(this.Min.X, this.Max.Y, this.Min.Z),\n        new Vector3(this.Max.X, this.Max.Y, this.Min.Z),\n        new Vector3(this.Max.X, this.Min.Y, this.Min.Z),\n        new Vector3(this.Min.X, this.Min.Y, this.Min.Z)\n      };\n        }\n\n        /// <summary>\n        /// Gets the array of points that make up the corners of the BoundingBox.\n        /// </summary>\n        /// <param name=\"corners\">An existing array of at least 8 Vector3 points where the corners of the BoundingBox are written.</param>\n        public void GetCorners(Vector3[] corners)\n        {\n            corners[0].X = this.Min.X;\n            corners[0].Y = this.Max.Y;\n            corners[0].Z = this.Max.Z;\n            corners[1].X = this.Max.X;\n            corners[1].Y = this.Max.Y;\n            corners[1].Z = this.Max.Z;\n            corners[2].X = this.Max.X;\n            corners[2].Y = this.Min.Y;\n            corners[2].Z = this.Max.Z;\n            corners[3].X = this.Min.X;\n            corners[3].Y = this.Min.Y;\n            corners[3].Z = this.Max.Z;\n            corners[4].X = this.Min.X;\n            corners[4].Y = this.Max.Y;\n            corners[4].Z = this.Min.Z;\n            corners[5].X = this.Max.X;\n            corners[5].Y = this.Max.Y;\n            corners[5].Z = this.Min.Z;\n            corners[6].X = this.Max.X;\n            corners[6].Y = this.Min.Y;\n            corners[6].Z = this.Min.Z;\n            corners[7].X = this.Min.X;\n            corners[7].Y = this.Min.Y;\n            corners[7].Z = this.Min.Z;\n        }\n\n        /// <summary>\n        /// Determines whether two instances of BoundingBox are equal.\n        /// </summary>\n        /// <param name=\"other\">The BoundingBox to compare with the current BoundingBox.</param>\n        public bool Equals(BoundingBox other)\n        {\n            if (this.Min == other.Min)\n                return this.Max == other.Max;\n            else\n                return false;\n        }\n\n        /// <summary>\n        /// Determines whether two instances of BoundingBox are equal.\n        /// </summary>\n        /// <param name=\"obj\">The Object to compare with the current BoundingBox.</param>\n        public override bool Equals(object obj)\n        {\n            bool flag = false;\n            if (obj is BoundingBox)\n                flag = this.Equals((BoundingBox)obj);\n            return flag;\n        }\n\n        /// <summary>\n        /// Gets the hash code for this instance.\n        /// </summary>\n        public override int GetHashCode()\n        {\n            return this.Min.GetHashCode() + this.Max.GetHashCode();\n        }\n\n        /// <summary>\n        /// Returns a String that represents the current BoundingBox.\n        /// </summary>\n        public override string ToString()\n        {\n            return string.Format((IFormatProvider)CultureInfo.CurrentCulture, \"{{Min:{0} Max:{1}}}\", new object[2]\n      {\n        (object) this.Min.ToString(),\n        (object) this.Max.ToString()\n      });\n        }\n\n        /// <summary>\n        /// Creates the smallest BoundingBox that contains the two specified BoundingBox instances.\n        /// </summary>\n        /// <param name=\"original\">One of the BoundingBoxs to contain.</param><param name=\"additional\">One of the BoundingBoxs to contain.</param>\n        public static BoundingBox CreateMerged(BoundingBox original, BoundingBox additional)\n        {\n            BoundingBox boundingBox;\n            Vector3.Min(ref original.Min, ref additional.Min, out boundingBox.Min);\n            Vector3.Max(ref original.Max, ref additional.Max, out boundingBox.Max);\n            return boundingBox;\n        }\n\n        /// <summary>\n        /// Creates the smallest BoundingBox that contains the two specified BoundingBox instances.\n        /// </summary>\n        /// <param name=\"original\">One of the BoundingBox instances to contain.</param><param name=\"additional\">One of the BoundingBox instances to contain.</param><param name=\"result\">[OutAttribute] The created BoundingBox.</param>\n        public static void CreateMerged(ref BoundingBox original, ref BoundingBox additional, out BoundingBox result)\n        {\n            Vector3 result1;\n            Vector3.Min(ref original.Min, ref additional.Min, out result1);\n            Vector3 result2;\n            Vector3.Max(ref original.Max, ref additional.Max, out result2);\n            result.Min = result1;\n            result.Max = result2;\n        }\n\n        /// <summary>\n        /// Creates the smallest BoundingBox that will contain the specified BoundingSphere.\n        /// </summary>\n        /// <param name=\"sphere\">The BoundingSphere to contain.</param>\n        public static BoundingBox CreateFromSphere(BoundingSphere sphere)\n        {\n            BoundingBox boundingBox;\n            boundingBox.Min.X = sphere.Center.X - sphere.Radius;\n            boundingBox.Min.Y = sphere.Center.Y - sphere.Radius;\n            boundingBox.Min.Z = sphere.Center.Z - sphere.Radius;\n            boundingBox.Max.X = sphere.Center.X + sphere.Radius;\n            boundingBox.Max.Y = sphere.Center.Y + sphere.Radius;\n            boundingBox.Max.Z = sphere.Center.Z + sphere.Radius;\n            return boundingBox;\n        }\n\n        /// <summary>\n        /// Creates the smallest BoundingBox that will contain the specified BoundingSphere.\n        /// </summary>\n        /// <param name=\"sphere\">The BoundingSphere to contain.</param><param name=\"result\">[OutAttribute] The created BoundingBox.</param>\n        public static void CreateFromSphere(ref BoundingSphere sphere, out BoundingBox result)\n        {\n            result.Min.X = sphere.Center.X - sphere.Radius;\n            result.Min.Y = sphere.Center.Y - sphere.Radius;\n            result.Min.Z = sphere.Center.Z - sphere.Radius;\n            result.Max.X = sphere.Center.X + sphere.Radius;\n            result.Max.Y = sphere.Center.Y + sphere.Radius;\n            result.Max.Z = sphere.Center.Z + sphere.Radius;\n        }\n\n        /// <summary>\n        /// Creates the smallest BoundingBox that will contain a group of points.\n        /// </summary>\n        /// <param name=\"points\">A list of points the BoundingBox should contain.</param>\n        public static BoundingBox CreateFromPoints(IEnumerable<Vector3> points)\n        {\n            if (points == null)\n                throw new ArgumentNullException();\n            bool flag = false;\n            Vector3 result1 = new Vector3(float.MaxValue);\n            Vector3 result2 = new Vector3(float.MinValue);\n            foreach (Vector3 vector3 in points)\n            {\n                Vector3 vec3 = vector3;\n                Vector3.Min(ref result1, ref vec3, out result1);\n                Vector3.Max(ref result2, ref vec3, out result2);\n                flag = true;\n            }\n            if (!flag)\n                throw new ArgumentException();\n            else\n                return new BoundingBox(result1, result2);\n        }\n\n        /// <summary>\n        /// Checks whether the current BoundingBox intersects another BoundingBox.\n        /// </summary>\n        /// <param name=\"box\">The BoundingBox to check for intersection with.</param>\n        public bool Intersects(BoundingBox box)\n        {\n            return (double)this.Max.X >= (double)box.Min.X && (double)this.Min.X <= (double)box.Max.X && ((double)this.Max.Y >= (double)box.Min.Y && (double)this.Min.Y <= (double)box.Max.Y) && ((double)this.Max.Z >= (double)box.Min.Z && (double)this.Min.Z <= (double)box.Max.Z);\n        }\n\n        /// <summary>\n        /// Checks whether the current BoundingBox intersects another BoundingBox.\n        /// </summary>\n        /// <param name=\"box\">The BoundingBox to check for intersection with.</param><param name=\"result\">[OutAttribute] true if the BoundingBox instances intersect; false otherwise.</param>\n        public void Intersects(ref BoundingBox box, out bool result)\n        {\n            result = false;\n            if ((double)this.Max.X < (double)box.Min.X || (double)this.Min.X > (double)box.Max.X || ((double)this.Max.Y < (double)box.Min.Y || (double)this.Min.Y > (double)box.Max.Y) || ((double)this.Max.Z < (double)box.Min.Z || (double)this.Min.Z > (double)box.Max.Z))\n                return;\n            result = true;\n        }\n\n        /// <summary>\n        /// Checks whether the current BoundingBox intersects a BoundingFrustum.\n        /// </summary>\n        /// <param name=\"frustum\">The BoundingFrustum to check for intersection with.</param>\n        public bool Intersects(BoundingFrustum frustum)\n        {\n            if ((BoundingFrustum)null == frustum)\n                throw new ArgumentNullException(\"frustum\");\n            else\n                return frustum.Intersects(this);\n        }\n\n        /// <summary>\n        /// Checks whether the current BoundingBox intersects a Plane.\n        /// </summary>\n        /// <param name=\"plane\">The Plane to check for intersection with.</param>\n        public PlaneIntersectionType Intersects(Plane plane)\n        {\n            Vector3 vector3_1;\n            vector3_1.X = (double)plane.Normal.X >= 0.0 ? this.Min.X : this.Max.X;\n            vector3_1.Y = (double)plane.Normal.Y >= 0.0 ? this.Min.Y : this.Max.Y;\n            vector3_1.Z = (double)plane.Normal.Z >= 0.0 ? this.Min.Z : this.Max.Z;\n            Vector3 vector3_2;\n            vector3_2.X = (double)plane.Normal.X >= 0.0 ? this.Max.X : this.Min.X;\n            vector3_2.Y = (double)plane.Normal.Y >= 0.0 ? this.Max.Y : this.Min.Y;\n            vector3_2.Z = (double)plane.Normal.Z >= 0.0 ? this.Max.Z : this.Min.Z;\n            if ((double)plane.Normal.X * (double)vector3_1.X + (double)plane.Normal.Y * (double)vector3_1.Y + (double)plane.Normal.Z * (double)vector3_1.Z + (double)plane.D > 0.0)\n                return PlaneIntersectionType.Front;\n            return (double)plane.Normal.X * (double)vector3_2.X + (double)plane.Normal.Y * (double)vector3_2.Y + (double)plane.Normal.Z * (double)vector3_2.Z + (double)plane.D < 0.0 ? PlaneIntersectionType.Back : PlaneIntersectionType.Intersecting;\n        }\n\n        /// <summary>\n        /// Checks whether the current BoundingBox intersects a Plane.\n        /// </summary>\n        /// <param name=\"plane\">The Plane to check for intersection with.</param><param name=\"result\">[OutAttribute] An enumeration indicating whether the BoundingBox intersects the Plane.</param>\n        public void Intersects(ref Plane plane, out PlaneIntersectionType result)\n        {\n            Vector3 vector3_1;\n            vector3_1.X = (double)plane.Normal.X >= 0.0 ? this.Min.X : this.Max.X;\n            vector3_1.Y = (double)plane.Normal.Y >= 0.0 ? this.Min.Y : this.Max.Y;\n            vector3_1.Z = (double)plane.Normal.Z >= 0.0 ? this.Min.Z : this.Max.Z;\n            Vector3 vector3_2;\n            vector3_2.X = (double)plane.Normal.X >= 0.0 ? this.Max.X : this.Min.X;\n            vector3_2.Y = (double)plane.Normal.Y >= 0.0 ? this.Max.Y : this.Min.Y;\n            vector3_2.Z = (double)plane.Normal.Z >= 0.0 ? this.Max.Z : this.Min.Z;\n            if ((double)plane.Normal.X * (double)vector3_1.X + (double)plane.Normal.Y * (double)vector3_1.Y + (double)plane.Normal.Z * (double)vector3_1.Z + (double)plane.D > 0.0)\n                result = PlaneIntersectionType.Front;\n            else if ((double)plane.Normal.X * (double)vector3_2.X + (double)plane.Normal.Y * (double)vector3_2.Y + (double)plane.Normal.Z * (double)vector3_2.Z + (double)plane.D < 0.0)\n                result = PlaneIntersectionType.Back;\n            else\n                result = PlaneIntersectionType.Intersecting;\n        }\n\n        /// <summary>\n        /// Checks whether the current BoundingBox intersects a Ray.\n        /// </summary>\n        /// <param name=\"ray\">The Ray to check for intersection with.</param>\n        public float? Intersects(Ray ray)\n        {\n            float num1 = 0.0f;\n            float num2 = float.MaxValue;\n            if ((double)Math.Abs(ray.Direction.X) < 9.99999997475243E-07)\n            {\n                if ((double)ray.Position.X < (double)this.Min.X || (double)ray.Position.X > (double)this.Max.X)\n                    return new float?();\n            }\n            else\n            {\n                float num3 = 1f / ray.Direction.X;\n                float num4 = (this.Min.X - ray.Position.X) * num3;\n                float num5 = (this.Max.X - ray.Position.X) * num3;\n                if ((double)num4 > (double)num5)\n                {\n                    float num6 = num4;\n                    num4 = num5;\n                    num5 = num6;\n                }\n                num1 = MathHelper.Max(num4, num1);\n                num2 = MathHelper.Min(num5, num2);\n                if ((double)num1 > (double)num2)\n                    return new float?();\n            }\n            if ((double)Math.Abs(ray.Direction.Y) < 9.99999997475243E-07)\n            {\n                if ((double)ray.Position.Y < (double)this.Min.Y || (double)ray.Position.Y > (double)this.Max.Y)\n                    return new float?();\n            }\n            else\n            {\n                float num3 = 1f / ray.Direction.Y;\n                float num4 = (this.Min.Y - ray.Position.Y) * num3;\n                float num5 = (this.Max.Y - ray.Position.Y) * num3;\n                if ((double)num4 > (double)num5)\n                {\n                    float num6 = num4;\n                    num4 = num5;\n                    num5 = num6;\n                }\n                num1 = MathHelper.Max(num4, num1);\n                num2 = MathHelper.Min(num5, num2);\n                if ((double)num1 > (double)num2)\n                    return new float?();\n            }\n            if ((double)Math.Abs(ray.Direction.Z) < 9.99999997475243E-07)\n            {\n                if ((double)ray.Position.Z < (double)this.Min.Z || (double)ray.Position.Z > (double)this.Max.Z)\n                    return new float?();\n            }\n            else\n            {\n                float num3 = 1f / ray.Direction.Z;\n                float num4 = (this.Min.Z - ray.Position.Z) * num3;\n                float num5 = (this.Max.Z - ray.Position.Z) * num3;\n                if ((double)num4 > (double)num5)\n                {\n                    float num6 = num4;\n                    num4 = num5;\n                    num5 = num6;\n                }\n                num1 = MathHelper.Max(num4, num1);\n                float num7 = MathHelper.Min(num5, num2);\n                if ((double)num1 > (double)num7)\n                    return new float?();\n            }\n            return new float?(num1);\n        }\n\n        /// <summary>\n        /// Checks whether the current BoundingBox intersects a Ray.\n        /// </summary>\n        /// <param name=\"ray\">The Ray to check for intersection with.</param><param name=\"result\">[OutAttribute] Distance at which the ray intersects the BoundingBox, or null if there is no intersection.</param>\n        public void Intersects(ref Ray ray, out float? result)\n        {\n            result = new float?();\n            float num1 = 0.0f;\n            float num2 = float.MaxValue;\n            if ((double)Math.Abs(ray.Direction.X) < 9.99999997475243E-07)\n            {\n                if ((double)ray.Position.X < (double)this.Min.X || (double)ray.Position.X > (double)this.Max.X)\n                    return;\n            }\n            else\n            {\n                float num3 = 1f / ray.Direction.X;\n                float num4 = (this.Min.X - ray.Position.X) * num3;\n                float num5 = (this.Max.X - ray.Position.X) * num3;\n                if ((double)num4 > (double)num5)\n                {\n                    float num6 = num4;\n                    num4 = num5;\n                    num5 = num6;\n                }\n                num1 = MathHelper.Max(num4, num1);\n                num2 = MathHelper.Min(num5, num2);\n                if ((double)num1 > (double)num2)\n                    return;\n            }\n            if ((double)Math.Abs(ray.Direction.Y) < 9.99999997475243E-07)\n            {\n                if ((double)ray.Position.Y < (double)this.Min.Y || (double)ray.Position.Y > (double)this.Max.Y)\n                    return;\n            }\n            else\n            {\n                float num3 = 1f / ray.Direction.Y;\n                float num4 = (this.Min.Y - ray.Position.Y) * num3;\n                float num5 = (this.Max.Y - ray.Position.Y) * num3;\n                if ((double)num4 > (double)num5)\n                {\n                    float num6 = num4;\n                    num4 = num5;\n                    num5 = num6;\n                }\n                num1 = MathHelper.Max(num4, num1);\n                num2 = MathHelper.Min(num5, num2);\n                if ((double)num1 > (double)num2)\n                    return;\n            }\n            if ((double)Math.Abs(ray.Direction.Z) < 9.99999997475243E-07)\n            {\n                if ((double)ray.Position.Z < (double)this.Min.Z || (double)ray.Position.Z > (double)this.Max.Z)\n                    return;\n            }\n            else\n            {\n                float num3 = 1f / ray.Direction.Z;\n                float num4 = (this.Min.Z - ray.Position.Z) * num3;\n                float num5 = (this.Max.Z - ray.Position.Z) * num3;\n                if ((double)num4 > (double)num5)\n                {\n                    float num6 = num4;\n                    num4 = num5;\n                    num5 = num6;\n                }\n                num1 = MathHelper.Max(num4, num1);\n                float num7 = MathHelper.Min(num5, num2);\n                if ((double)num1 > (double)num7)\n                    return;\n            }\n            result = new float?(num1);\n        }\n\n        /// <summary>\n        /// Checks whether the current BoundingBox intersects a BoundingSphere.\n        /// </summary>\n        /// <param name=\"sphere\">The BoundingSphere to check for intersection with.</param>\n        public bool Intersects(BoundingSphere sphere)\n        {\n            Vector3 result1;\n            Vector3.Clamp(ref sphere.Center, ref this.Min, ref this.Max, out result1);\n            float result2;\n            Vector3.DistanceSquared(ref sphere.Center, ref result1, out result2);\n            return (double)result2 <= (double)sphere.Radius * (double)sphere.Radius;\n        }\n\n        /// <summary>\n        /// Checks whether the current BoundingBox intersects a BoundingSphere.\n        /// </summary>\n        /// <param name=\"sphere\">The BoundingSphere to check for intersection with.</param><param name=\"result\">[OutAttribute] true if the BoundingBox and BoundingSphere intersect; false otherwise.</param>\n        public void Intersects(ref BoundingSphere sphere, out bool result)\n        {\n            Vector3 result1;\n            Vector3.Clamp(ref sphere.Center, ref this.Min, ref this.Max, out result1);\n            float result2;\n            Vector3.DistanceSquared(ref sphere.Center, ref result1, out result2);\n            result = (double)result2 <= (double)sphere.Radius * (double)sphere.Radius;\n        }\n\n        /// <summary>\n        /// Tests whether the BoundingBox contains another BoundingBox.\n        /// </summary>\n        /// <param name=\"box\">The BoundingBox to test for overlap.</param>\n        public ContainmentType Contains(BoundingBox box)\n        {\n            if ((double)this.Max.X < (double)box.Min.X || (double)this.Min.X > (double)box.Max.X || ((double)this.Max.Y < (double)box.Min.Y || (double)this.Min.Y > (double)box.Max.Y) || ((double)this.Max.Z < (double)box.Min.Z || (double)this.Min.Z > (double)box.Max.Z))\n                return ContainmentType.Disjoint;\n            return (double)this.Min.X > (double)box.Min.X || (double)box.Max.X > (double)this.Max.X || ((double)this.Min.Y > (double)box.Min.Y || (double)box.Max.Y > (double)this.Max.Y) || ((double)this.Min.Z > (double)box.Min.Z || (double)box.Max.Z > (double)this.Max.Z) ? ContainmentType.Intersects : ContainmentType.Contains;\n        }\n\n        /// <summary>\n        /// Tests whether the BoundingBox contains a BoundingBox.\n        /// </summary>\n        /// <param name=\"box\">The BoundingBox to test for overlap.</param><param name=\"result\">[OutAttribute] Enumeration indicating the extent of overlap.</param>\n        public void Contains(ref BoundingBox box, out ContainmentType result)\n        {\n            result = ContainmentType.Disjoint;\n            if ((double)this.Max.X < (double)box.Min.X || (double)this.Min.X > (double)box.Max.X || ((double)this.Max.Y < (double)box.Min.Y || (double)this.Min.Y > (double)box.Max.Y) || ((double)this.Max.Z < (double)box.Min.Z || (double)this.Min.Z > (double)box.Max.Z))\n                return;\n            result = (double)this.Min.X > (double)box.Min.X || (double)box.Max.X > (double)this.Max.X || ((double)this.Min.Y > (double)box.Min.Y || (double)box.Max.Y > (double)this.Max.Y) || ((double)this.Min.Z > (double)box.Min.Z || (double)box.Max.Z > (double)this.Max.Z) ? ContainmentType.Intersects : ContainmentType.Contains;\n        }\n\n        /// <summary>\n        /// Tests whether the BoundingBox contains a BoundingFrustum.\n        /// </summary>\n        /// <param name=\"frustum\">The BoundingFrustum to test for overlap.</param>\n        public ContainmentType Contains(BoundingFrustum frustum)\n        {\n            if (!frustum.Intersects(this))\n                return ContainmentType.Disjoint;\n            foreach (Vector3 point in frustum.cornerArray)\n            {\n                if (this.Contains(point) == ContainmentType.Disjoint)\n                    return ContainmentType.Intersects;\n            }\n            return ContainmentType.Contains;\n        }\n\n        /// <summary>\n        /// Tests whether the BoundingBox contains a point.\n        /// </summary>\n        /// <param name=\"point\">The point to test for overlap.</param>\n        public ContainmentType Contains(Vector3 point)\n        {\n            return (double)this.Min.X > (double)point.X || (double)point.X > (double)this.Max.X || ((double)this.Min.Y > (double)point.Y || (double)point.Y > (double)this.Max.Y) || ((double)this.Min.Z > (double)point.Z || (double)point.Z > (double)this.Max.Z) ? ContainmentType.Disjoint : ContainmentType.Contains;\n        }\n\n        /// <summary>\n        /// Tests whether the BoundingBox contains a point.\n        /// </summary>\n        /// <param name=\"point\">The point to test for overlap.</param><param name=\"result\">[OutAttribute] Enumeration indicating the extent of overlap.</param>\n        public void Contains(ref Vector3 point, out ContainmentType result)\n        {\n            result = (double)this.Min.X > (double)point.X || (double)point.X > (double)this.Max.X || ((double)this.Min.Y > (double)point.Y || (double)point.Y > (double)this.Max.Y) || ((double)this.Min.Z > (double)point.Z || (double)point.Z > (double)this.Max.Z) ? ContainmentType.Disjoint : ContainmentType.Contains;\n        }\n\n        /// <summary>\n        /// Tests whether the BoundingBox contains a BoundingSphere.\n        /// </summary>\n        /// <param name=\"sphere\">The BoundingSphere to test for overlap.</param>\n        public ContainmentType Contains(BoundingSphere sphere)\n        {\n            Vector3 result1;\n            Vector3.Clamp(ref sphere.Center, ref this.Min, ref this.Max, out result1);\n            float result2;\n            Vector3.DistanceSquared(ref sphere.Center, ref result1, out result2);\n            float num = sphere.Radius;\n            if ((double)result2 > (double)num * (double)num)\n                return ContainmentType.Disjoint;\n            return (double)this.Min.X + (double)num > (double)sphere.Center.X || (double)sphere.Center.X > (double)this.Max.X - (double)num || ((double)this.Max.X - (double)this.Min.X <= (double)num || (double)this.Min.Y + (double)num > (double)sphere.Center.Y) || ((double)sphere.Center.Y > (double)this.Max.Y - (double)num || (double)this.Max.Y - (double)this.Min.Y <= (double)num || ((double)this.Min.Z + (double)num > (double)sphere.Center.Z || (double)sphere.Center.Z > (double)this.Max.Z - (double)num)) || (double)this.Max.X - (double)this.Min.X <= (double)num ? ContainmentType.Intersects : ContainmentType.Contains;\n        }\n\n        /// <summary>\n        /// Tests whether the BoundingBox contains a BoundingSphere.\n        /// </summary>\n        /// <param name=\"sphere\">The BoundingSphere to test for overlap.</param><param name=\"result\">[OutAttribute] Enumeration indicating the extent of overlap.</param>\n        public void Contains(ref BoundingSphere sphere, out ContainmentType result)\n        {\n            Vector3 result1;\n            Vector3.Clamp(ref sphere.Center, ref this.Min, ref this.Max, out result1);\n            float result2;\n            Vector3.DistanceSquared(ref sphere.Center, ref result1, out result2);\n            float num = sphere.Radius;\n            if ((double)result2 > (double)num * (double)num)\n                result = ContainmentType.Disjoint;\n            else\n                result = (double)this.Min.X + (double)num > (double)sphere.Center.X || (double)sphere.Center.X > (double)this.Max.X - (double)num || ((double)this.Max.X - (double)this.Min.X <= (double)num || (double)this.Min.Y + (double)num > (double)sphere.Center.Y) || ((double)sphere.Center.Y > (double)this.Max.Y - (double)num || (double)this.Max.Y - (double)this.Min.Y <= (double)num || ((double)this.Min.Z + (double)num > (double)sphere.Center.Z || (double)sphere.Center.Z > (double)this.Max.Z - (double)num)) || (double)this.Max.X - (double)this.Min.X <= (double)num ? ContainmentType.Intersects : ContainmentType.Contains;\n        }\n\n        internal void SupportMapping(ref Vector3 v, out Vector3 result)\n        {\n            result.X = (double)v.X >= 0.0 ? this.Max.X : this.Min.X;\n            result.Y = (double)v.Y >= 0.0 ? this.Max.Y : this.Min.Y;\n            result.Z = (double)v.Z >= 0.0 ? this.Max.Z : this.Min.Z;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWarsMath/BoundingFrustum.cs",
    "content": "﻿using System;\nusing System.ComponentModel;\nusing System.Globalization;\n\nnamespace MinerWarsMath\n{\n    /// <summary>\n    /// Defines a frustum and helps determine whether forms intersect with it.\n    /// </summary>\n    [Serializable]\n    public class BoundingFrustum : IEquatable<BoundingFrustum>\n    {\n        private Plane[] planes = new Plane[6];\n        internal Vector3[] cornerArray = new Vector3[8];\n        /// <summary>\n        /// Specifies the total number of corners (8) in the BoundingFrustum.\n        /// </summary>\n        public const int CornerCount = 8;\n        private const int NearPlaneIndex = 0;\n        private const int FarPlaneIndex = 1;\n        private const int LeftPlaneIndex = 2;\n        private const int RightPlaneIndex = 3;\n        private const int TopPlaneIndex = 4;\n        private const int BottomPlaneIndex = 5;\n        private const int NumPlanes = 6;\n        private Matrix matrix;\n        private Gjk gjk;\n\n        public Plane this[int index]\n        {\n            get\n            {\n                return this.planes[index];\n            }\n        }\n\n        /// <summary>\n        /// Gets the near plane of the BoundingFrustum.\n        /// </summary>\n        public Plane Near\n        {\n            get\n            {\n                return this.planes[0];\n            }\n        }\n\n        /// <summary>\n        /// Gets the far plane of the BoundingFrustum.\n        /// </summary>\n        public Plane Far\n        {\n            get\n            {\n                return this.planes[1];\n            }\n        }\n\n        /// <summary>\n        /// Gets the left plane of the BoundingFrustum.\n        /// </summary>\n        public Plane Left\n        {\n            get\n            {\n                return this.planes[2];\n            }\n        }\n\n        /// <summary>\n        /// Gets the right plane of the BoundingFrustum.\n        /// </summary>\n        public Plane Right\n        {\n            get\n            {\n                return this.planes[3];\n            }\n        }\n\n        /// <summary>\n        /// Gets the top plane of the BoundingFrustum.\n        /// </summary>\n        public Plane Top\n        {\n            get\n            {\n                return this.planes[4];\n            }\n        }\n\n        /// <summary>\n        /// Gets the bottom plane of the BoundingFrustum.\n        /// </summary>\n        public Plane Bottom\n        {\n            get\n            {\n                return this.planes[5];\n            }\n        }\n\n        /// <summary>\n        /// Gets or sets the Matrix that describes this bounding frustum.\n        /// </summary>\n        public Matrix Matrix\n        {\n            get\n            {\n                return this.matrix;\n            }\n            set\n            {\n                this.SetMatrix(ref value);\n            }\n        }\n\n        private BoundingFrustum()\n        {\n        }\n\n        /// <summary>\n        /// Creates a new instance of BoundingFrustum.\n        /// </summary>\n        /// <param name=\"value\">Combined matrix that usually takes view × projection matrix.</param>\n        public BoundingFrustum(Matrix value)\n        {\n            this.SetMatrix(ref value);\n        }\n\n        /// <summary>\n        /// Determines whether two instances of BoundingFrustum are equal.\n        /// </summary>\n        /// <param name=\"a\">The BoundingFrustum to the left of the equality operator.</param><param name=\"b\">The BoundingFrustum to the right of the equality operator.</param>\n        public static bool operator ==(BoundingFrustum a, BoundingFrustum b)\n        {\n            return object.Equals((object)a, (object)b);\n        }\n\n        /// <summary>\n        /// Determines whether two instances of BoundingFrustum are not equal.\n        /// </summary>\n        /// <param name=\"a\">The BoundingFrustum to the left of the inequality operator.</param><param name=\"b\">The BoundingFrustum to the right of the inequality operator.</param>\n        public static bool operator !=(BoundingFrustum a, BoundingFrustum b)\n        {\n            return !object.Equals((object)a, (object)b);\n        }\n\n        /// <summary>\n        /// Gets an array of points that make up the corners of the BoundingFrustum.\n        /// </summary>\n        public Vector3[] GetCorners()\n        {\n            return (Vector3[])this.cornerArray.Clone();\n        }\n\n        /// <summary>\n        /// Gets an array of points that make up the corners of the BoundingFrustum.\n        /// </summary>\n        /// <param name=\"corners\">An existing array of at least 8 Vector3 points where the corners of the BoundingFrustum are written.</param>\n        public void GetCorners(Vector3[] corners)\n        {\n            this.cornerArray.CopyTo((Array)corners, 0);\n        }\n\n        /// <summary>\n        /// Determines whether the specified BoundingFrustum is equal to the current BoundingFrustum.\n        /// </summary>\n        /// <param name=\"other\">The BoundingFrustum to compare with the current BoundingFrustum.</param>\n        public bool Equals(BoundingFrustum other)\n        {\n            if (other == (BoundingFrustum)null)\n                return false;\n            else\n                return this.matrix == other.matrix;\n        }\n\n        /// <summary>\n        /// Determines whether the specified Object is equal to the BoundingFrustum.\n        /// </summary>\n        /// <param name=\"obj\">The Object to compare with the current BoundingFrustum.</param>\n        public override bool Equals(object obj)\n        {\n            bool flag = false;\n            BoundingFrustum boundingFrustum = obj as BoundingFrustum;\n            if (boundingFrustum != (BoundingFrustum)null)\n                flag = this.matrix == boundingFrustum.matrix;\n            return flag;\n        }\n\n        /// <summary>\n        /// Gets the hash code for this instance.\n        /// </summary>\n        public override int GetHashCode()\n        {\n            return this.matrix.GetHashCode();\n        }\n\n        /// <summary>\n        /// Returns a String that represents the current BoundingFrustum.\n        /// </summary>\n        public override string ToString()\n        {\n            return string.Format((IFormatProvider)CultureInfo.CurrentCulture, \"{{Near:{0} Far:{1} Left:{2} Right:{3} Top:{4} Bottom:{5}}}\", (object)this.Near.ToString(), (object)this.Far.ToString(), (object)this.Left.ToString(), (object)this.Right.ToString(), (object)this.Top.ToString(), (object)this.Bottom.ToString());\n        }\n\n        private void SetMatrix(ref Matrix value)\n        {\n            this.matrix = value;\n            this.planes[2].Normal.X = -value.M14 - value.M11;\n            this.planes[2].Normal.Y = -value.M24 - value.M21;\n            this.planes[2].Normal.Z = -value.M34 - value.M31;\n            this.planes[2].D = -value.M44 - value.M41;\n            this.planes[3].Normal.X = -value.M14 + value.M11;\n            this.planes[3].Normal.Y = -value.M24 + value.M21;\n            this.planes[3].Normal.Z = -value.M34 + value.M31;\n            this.planes[3].D = -value.M44 + value.M41;\n            this.planes[4].Normal.X = -value.M14 + value.M12;\n            this.planes[4].Normal.Y = -value.M24 + value.M22;\n            this.planes[4].Normal.Z = -value.M34 + value.M32;\n            this.planes[4].D = -value.M44 + value.M42;\n            this.planes[5].Normal.X = -value.M14 - value.M12;\n            this.planes[5].Normal.Y = -value.M24 - value.M22;\n            this.planes[5].Normal.Z = -value.M34 - value.M32;\n            this.planes[5].D = -value.M44 - value.M42;\n            this.planes[0].Normal.X = -value.M13;\n            this.planes[0].Normal.Y = -value.M23;\n            this.planes[0].Normal.Z = -value.M33;\n            this.planes[0].D = -value.M43;\n            this.planes[1].Normal.X = -value.M14 + value.M13;\n            this.planes[1].Normal.Y = -value.M24 + value.M23;\n            this.planes[1].Normal.Z = -value.M34 + value.M33;\n            this.planes[1].D = -value.M44 + value.M43;\n            for (int index = 0; index < 6; ++index)\n            {\n                float num = this.planes[index].Normal.Length();\n                this.planes[index].Normal /= num;\n                this.planes[index].D /= num;\n            }\n            Ray intersectionLine1 = BoundingFrustum.ComputeIntersectionLine(ref this.planes[0], ref this.planes[2]);\n            this.cornerArray[0] = BoundingFrustum.ComputeIntersection(ref this.planes[4], ref intersectionLine1);\n            this.cornerArray[3] = BoundingFrustum.ComputeIntersection(ref this.planes[5], ref intersectionLine1);\n            Ray intersectionLine2 = BoundingFrustum.ComputeIntersectionLine(ref this.planes[3], ref this.planes[0]);\n            this.cornerArray[1] = BoundingFrustum.ComputeIntersection(ref this.planes[4], ref intersectionLine2);\n            this.cornerArray[2] = BoundingFrustum.ComputeIntersection(ref this.planes[5], ref intersectionLine2);\n            intersectionLine2 = BoundingFrustum.ComputeIntersectionLine(ref this.planes[2], ref this.planes[1]);\n            this.cornerArray[4] = BoundingFrustum.ComputeIntersection(ref this.planes[4], ref intersectionLine2);\n            this.cornerArray[7] = BoundingFrustum.ComputeIntersection(ref this.planes[5], ref intersectionLine2);\n            intersectionLine2 = BoundingFrustum.ComputeIntersectionLine(ref this.planes[1], ref this.planes[3]);\n            this.cornerArray[5] = BoundingFrustum.ComputeIntersection(ref this.planes[4], ref intersectionLine2);\n            this.cornerArray[6] = BoundingFrustum.ComputeIntersection(ref this.planes[5], ref intersectionLine2);\n        }\n\n        private static Ray ComputeIntersectionLine(ref Plane p1, ref Plane p2)\n        {\n            Ray ray = new Ray();\n            ray.Direction = Vector3.Cross(p1.Normal, p2.Normal);\n            float num = ray.Direction.LengthSquared();\n            ray.Position = Vector3.Cross(-p1.D * p2.Normal + p2.D * p1.Normal, ray.Direction) / num;\n            return ray;\n        }\n\n        private static Vector3 ComputeIntersection(ref Plane plane, ref Ray ray)\n        {\n            float num = (-plane.D - Vector3.Dot(plane.Normal, ray.Position)) / Vector3.Dot(plane.Normal, ray.Direction);\n            return ray.Position + ray.Direction * num;\n        }\n\n        /// <summary>\n        /// Checks whether the current BoundingFrustum intersects the specified BoundingBox.\n        /// </summary>\n        /// <param name=\"box\">The BoundingBox to check for intersection.</param>\n        public bool Intersects(BoundingBox box)\n        {\n            bool result;\n            this.Intersects(ref box, out result);\n            return result;\n        }\n\n        /// <summary>\n        /// Checks whether the current BoundingFrustum intersects a BoundingBox.\n        /// </summary>\n        /// <param name=\"box\">The BoundingBox to check for intersection with.</param><param name=\"result\">[OutAttribute] true if the BoundingFrustum and BoundingBox intersect; false otherwise.</param>\n        public void Intersects(ref BoundingBox box, out bool result)\n        {\n            if (this.gjk == null)\n                this.gjk = new Gjk();\n            this.gjk.Reset();\n            Vector3 result1;\n            Vector3.Subtract(ref this.cornerArray[0], ref box.Min, out result1);\n            if ((double)result1.LengthSquared() < 9.99999974737875E-06)\n                Vector3.Subtract(ref this.cornerArray[0], ref box.Max, out result1);\n            float num1 = float.MaxValue;\n            result = false;\n            float num2;\n            do\n            {\n                Vector3 v;\n                v.X = -result1.X;\n                v.Y = -result1.Y;\n                v.Z = -result1.Z;\n                Vector3 result2;\n                this.SupportMapping(ref v, out result2);\n                Vector3 result3;\n                box.SupportMapping(ref result1, out result3);\n                Vector3 result4;\n                Vector3.Subtract(ref result2, ref result3, out result4);\n                if ((double)result1.X * (double)result4.X + (double)result1.Y * (double)result4.Y + (double)result1.Z * (double)result4.Z > 0.0)\n                    return;\n                this.gjk.AddSupportPoint(ref result4);\n                result1 = this.gjk.ClosestPoint;\n                float num3 = num1;\n                num1 = result1.LengthSquared();\n                if ((double)num3 - (double)num1 <= 9.99999974737875E-06 * (double)num3)\n                    return;\n                num2 = 4E-05f * this.gjk.MaxLengthSquared;\n            }\n            while (!this.gjk.FullSimplex && (double)num1 >= (double)num2);\n            result = true;\n        }\n\n        /// <summary>\n        /// Checks whether the current BoundingFrustum intersects the specified BoundingFrustum.\n        /// </summary>\n        /// <param name=\"frustum\">The BoundingFrustum to check for intersection.</param>\n        public bool Intersects(BoundingFrustum frustum)\n        {\n            if (frustum == (BoundingFrustum)null)\n                throw new ArgumentNullException(\"frustum\");\n            if (this.gjk == null)\n                this.gjk = new Gjk();\n            this.gjk.Reset();\n            Vector3 result1;\n            Vector3.Subtract(ref this.cornerArray[0], ref frustum.cornerArray[0], out result1);\n            if ((double)result1.LengthSquared() < 9.99999974737875E-06)\n                Vector3.Subtract(ref this.cornerArray[0], ref frustum.cornerArray[1], out result1);\n            float num1 = float.MaxValue;\n            float num2;\n            do\n            {\n                Vector3 v;\n                v.X = -result1.X;\n                v.Y = -result1.Y;\n                v.Z = -result1.Z;\n                Vector3 result2;\n                this.SupportMapping(ref v, out result2);\n                Vector3 result3;\n                frustum.SupportMapping(ref result1, out result3);\n                Vector3 result4;\n                Vector3.Subtract(ref result2, ref result3, out result4);\n                if ((double)result1.X * (double)result4.X + (double)result1.Y * (double)result4.Y + (double)result1.Z * (double)result4.Z > 0.0)\n                    return false;\n                this.gjk.AddSupportPoint(ref result4);\n                result1 = this.gjk.ClosestPoint;\n                float num3 = num1;\n                num1 = result1.LengthSquared();\n                num2 = 4E-05f * this.gjk.MaxLengthSquared;\n                if ((double)num3 - (double)num1 <= 9.99999974737875E-06 * (double)num3)\n                    return false;\n            }\n            while (!this.gjk.FullSimplex && (double)num1 >= (double)num2);\n            return true;\n        }\n\n        /// <summary>\n        /// Checks whether the current BoundingFrustum intersects the specified Plane.\n        /// </summary>\n        /// <param name=\"plane\">The Plane to check for intersection.</param>\n        public PlaneIntersectionType Intersects(Plane plane)\n        {\n            int num = 0;\n            for (int index = 0; index < 8; ++index)\n            {\n                float result;\n                Vector3.Dot(ref this.cornerArray[index], ref plane.Normal, out result);\n                if ((double)result + (double)plane.D > 0.0)\n                    num |= 1;\n                else\n                    num |= 2;\n                if (num == 3)\n                    return PlaneIntersectionType.Intersecting;\n            }\n            return num != 1 ? PlaneIntersectionType.Back : PlaneIntersectionType.Front;\n        }\n\n        /// <summary>\n        /// Checks whether the current BoundingFrustum intersects a Plane.\n        /// </summary>\n        /// <param name=\"plane\">The Plane to check for intersection with.</param><param name=\"result\">[OutAttribute] An enumeration indicating whether the BoundingFrustum intersects the Plane.</param>\n        public void Intersects(ref Plane plane, out PlaneIntersectionType result)\n        {\n            int num = 0;\n            for (int index = 0; index < 8; ++index)\n            {\n                float result1;\n                Vector3.Dot(ref this.cornerArray[index], ref plane.Normal, out result1);\n                if ((double)result1 + (double)plane.D > 0.0)\n                    num |= 1;\n                else\n                    num |= 2;\n                if (num == 3)\n                {\n                    result = PlaneIntersectionType.Intersecting;\n                    return;\n                }\n            }\n            result = num == 1 ? PlaneIntersectionType.Front : PlaneIntersectionType.Back;\n        }\n\n        /// <summary>\n        /// Checks whether the current BoundingFrustum intersects the specified Ray.\n        /// </summary>\n        /// <param name=\"ray\">The Ray to check for intersection.</param>\n        public float? Intersects(Ray ray)\n        {\n            float? result;\n            this.Intersects(ref ray, out result);\n            return result;\n        }\n\n        /// <summary>\n        /// Checks whether the current BoundingFrustum intersects a Ray.\n        /// </summary>\n        /// <param name=\"ray\">The Ray to check for intersection with.</param><param name=\"result\">[OutAttribute] Distance at which the ray intersects the BoundingFrustum or null if there is no intersection.</param>\n        public void Intersects(ref Ray ray, out float? result)\n        {\n            ContainmentType result1;\n            this.Contains(ref ray.Position, out result1);\n            if (result1 == ContainmentType.Contains)\n            {\n                result = new float?(0.0f);\n            }\n            else\n            {\n                float num1 = float.MinValue;\n                float num2 = float.MaxValue;\n                result = new float?();\n                foreach (Plane plane in this.planes)\n                {\n                    Vector3 vector2 = plane.Normal;\n                    float result2;\n                    Vector3.Dot(ref ray.Direction, ref vector2, out result2);\n                    float result3;\n                    Vector3.Dot(ref ray.Position, ref vector2, out result3);\n                    result3 += plane.D;\n                    if ((double)Math.Abs(result2) < 9.99999974737875E-06)\n                    {\n                        if ((double)result3 > 0.0)\n                            return;\n                    }\n                    else\n                    {\n                        float num3 = -result3 / result2;\n                        if ((double)result2 < 0.0)\n                        {\n                            if ((double)num3 > (double)num2)\n                                return;\n                            if ((double)num3 > (double)num1)\n                                num1 = num3;\n                        }\n                        else\n                        {\n                            if ((double)num3 < (double)num1)\n                                return;\n                            if ((double)num3 < (double)num2)\n                                num2 = num3;\n                        }\n                    }\n                }\n                float num4 = (double)num1 >= 0.0 ? num1 : num2;\n                if ((double)num4 < 0.0)\n                    return;\n                result = new float?(num4);\n            }\n        }\n\n        /// <summary>\n        /// Checks whether the current BoundingFrustum intersects the specified BoundingSphere.\n        /// </summary>\n        /// <param name=\"sphere\">The BoundingSphere to check for intersection.</param>\n        public bool Intersects(BoundingSphere sphere)\n        {\n            bool result;\n            this.Intersects(ref sphere, out result);\n            return result;\n        }\n\n        /// <summary>\n        /// Checks whether the current BoundingFrustum intersects a BoundingSphere.\n        /// </summary>\n        /// <param name=\"sphere\">The BoundingSphere to check for intersection with.</param><param name=\"result\">[OutAttribute] true if the BoundingFrustum and BoundingSphere intersect; false otherwise.</param>\n        public void Intersects(ref BoundingSphere sphere, out bool result)\n        {\n            if (this.gjk == null)\n                this.gjk = new Gjk();\n            this.gjk.Reset();\n            Vector3 result1;\n            Vector3.Subtract(ref this.cornerArray[0], ref sphere.Center, out result1);\n            if ((double)result1.LengthSquared() < 9.99999974737875E-06)\n                result1 = Vector3.UnitX;\n            float num1 = float.MaxValue;\n            result = false;\n            float num2;\n            do\n            {\n                Vector3 v;\n                v.X = -result1.X;\n                v.Y = -result1.Y;\n                v.Z = -result1.Z;\n                Vector3 result2;\n                this.SupportMapping(ref v, out result2);\n                Vector3 result3;\n                sphere.SupportMapping(ref result1, out result3);\n                Vector3 result4;\n                Vector3.Subtract(ref result2, ref result3, out result4);\n                if ((double)result1.X * (double)result4.X + (double)result1.Y * (double)result4.Y + (double)result1.Z * (double)result4.Z > 0.0)\n                    return;\n                this.gjk.AddSupportPoint(ref result4);\n                result1 = this.gjk.ClosestPoint;\n                float num3 = num1;\n                num1 = result1.LengthSquared();\n                if ((double)num3 - (double)num1 <= 9.99999974737875E-06 * (double)num3)\n                    return;\n                num2 = 4E-05f * this.gjk.MaxLengthSquared;\n            }\n            while (!this.gjk.FullSimplex && (double)num1 >= (double)num2);\n            result = true;\n        }\n\n        /// <summary>\n        /// Checks whether the current BoundingFrustum contains the specified BoundingBox.\n        /// </summary>\n        /// <param name=\"box\">The BoundingBox to check against the current BoundingFrustum.</param>\n        public ContainmentType Contains(BoundingBox box)\n        {\n            bool flag = false;\n            foreach (Plane plane in this.planes)\n            {\n                switch (box.Intersects(plane))\n                {\n                    case PlaneIntersectionType.Front:\n                        return ContainmentType.Disjoint;\n                    case PlaneIntersectionType.Intersecting:\n                        flag = true;\n                        break;\n                }\n            }\n            return !flag ? ContainmentType.Contains : ContainmentType.Intersects;\n        }\n\n        /// <summary>\n        /// Checks whether the current BoundingFrustum contains the specified BoundingBox.\n        /// </summary>\n        /// <param name=\"box\">The BoundingBox to test for overlap.</param><param name=\"result\">[OutAttribute] Enumeration indicating the extent of overlap.</param>\n        public void Contains(ref BoundingBox box, out ContainmentType result)\n        {\n            bool flag = false;\n            foreach (Plane plane in this.planes)\n            {\n                switch (box.Intersects(plane))\n                {\n                    case PlaneIntersectionType.Front:\n                        result = ContainmentType.Disjoint;\n                        return;\n                    case PlaneIntersectionType.Intersecting:\n                        flag = true;\n                        break;\n                }\n            }\n            result = flag ? ContainmentType.Intersects : ContainmentType.Contains;\n        }\n\n        /// <summary>\n        /// Checks whether the current BoundingFrustum contains the specified BoundingFrustum.\n        /// </summary>\n        /// <param name=\"frustum\">The BoundingFrustum to check against the current BoundingFrustum.</param>\n        public ContainmentType Contains(BoundingFrustum frustum)\n        {\n            if (frustum == (BoundingFrustum)null)\n                throw new ArgumentNullException(\"frustum\");\n            ContainmentType containmentType = ContainmentType.Disjoint;\n            if (this.Intersects(frustum))\n            {\n                containmentType = ContainmentType.Contains;\n                for (int index = 0; index < this.cornerArray.Length; ++index)\n                {\n                    if (this.Contains(frustum.cornerArray[index]) == ContainmentType.Disjoint)\n                    {\n                        containmentType = ContainmentType.Intersects;\n                        break;\n                    }\n                }\n            }\n            return containmentType;\n        }\n\n        /// <summary>\n        /// Checks whether the current BoundingFrustum contains the specified point.\n        /// </summary>\n        /// <param name=\"point\">The point to check against the current BoundingFrustum.</param>\n        public ContainmentType Contains(Vector3 point)\n        {\n            foreach (Plane plane in this.planes)\n            {\n                if ((double)((float)((double)plane.Normal.X * (double)point.X + (double)plane.Normal.Y * (double)point.Y + (double)plane.Normal.Z * (double)point.Z) + plane.D) > 9.99999974737875E-06)\n                    return ContainmentType.Disjoint;\n            }\n            return ContainmentType.Contains;\n        }\n\n        /// <summary>\n        /// Checks whether the current BoundingFrustum contains the specified point.\n        /// </summary>\n        /// <param name=\"point\">The point to test for overlap.</param><param name=\"result\">[OutAttribute] Enumeration indicating the extent of overlap.</param>\n        public void Contains(ref Vector3 point, out ContainmentType result)\n        {\n            foreach (Plane plane in this.planes)\n            {\n                if ((double)((float)((double)plane.Normal.X * (double)point.X + (double)plane.Normal.Y * (double)point.Y + (double)plane.Normal.Z * (double)point.Z) + plane.D) > 9.99999974737875E-06)\n                {\n                    result = ContainmentType.Disjoint;\n                    return;\n                }\n            }\n            result = ContainmentType.Contains;\n        }\n\n        /// <summary>\n        /// Checks whether the current BoundingFrustum contains the specified BoundingSphere.\n        /// </summary>\n        /// <param name=\"sphere\">The BoundingSphere to check against the current BoundingFrustum.</param>\n        public ContainmentType Contains(BoundingSphere sphere)\n        {\n            Vector3 vector3 = sphere.Center;\n            float num1 = sphere.Radius;\n            int num2 = 0;\n            foreach (Plane plane in this.planes)\n            {\n                float num3 = (float)((double)plane.Normal.X * (double)vector3.X + (double)plane.Normal.Y * (double)vector3.Y + (double)plane.Normal.Z * (double)vector3.Z) + plane.D;\n                if ((double)num3 > (double)num1)\n                    return ContainmentType.Disjoint;\n                if ((double)num3 < -(double)num1)\n                    ++num2;\n            }\n            return num2 != 6 ? ContainmentType.Intersects : ContainmentType.Contains;\n        }\n\n        /// <summary>\n        /// Checks whether the current BoundingFrustum contains the specified BoundingSphere.\n        /// </summary>\n        /// <param name=\"sphere\">The BoundingSphere to test for overlap.</param><param name=\"result\">[OutAttribute] Enumeration indicating the extent of overlap.</param>\n        public void Contains(ref BoundingSphere sphere, out ContainmentType result)\n        {\n            Vector3 vector3 = sphere.Center;\n            float num1 = sphere.Radius;\n            int num2 = 0;\n            foreach (Plane plane in this.planes)\n            {\n                float num3 = (float)((double)plane.Normal.X * (double)vector3.X + (double)plane.Normal.Y * (double)vector3.Y + (double)plane.Normal.Z * (double)vector3.Z) + plane.D;\n                if ((double)num3 > (double)num1)\n                {\n                    result = ContainmentType.Disjoint;\n                    return;\n                }\n                else if ((double)num3 < -(double)num1)\n                    ++num2;\n            }\n            result = num2 == 6 ? ContainmentType.Contains : ContainmentType.Intersects;\n        }\n\n        internal void SupportMapping(ref Vector3 v, out Vector3 result)\n        {\n            int index1 = 0;\n            float result1;\n            Vector3.Dot(ref this.cornerArray[0], ref v, out result1);\n            for (int index2 = 1; index2 < this.cornerArray.Length; ++index2)\n            {\n                float result2;\n                Vector3.Dot(ref this.cornerArray[index2], ref v, out result2);\n                if ((double)result2 > (double)result1)\n                {\n                    index1 = index2;\n                    result1 = result2;\n                }\n            }\n            result = this.cornerArray[index1];\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWarsMath/BoundingSphere.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Globalization;\n\nnamespace MinerWarsMath\n{\n    /// <summary>\n    /// Defines a sphere.\n    /// </summary>\n    [Serializable]\n    public struct BoundingSphere : IEquatable<BoundingSphere>\n    {\n        /// <summary>\n        /// The center point of the sphere.\n        /// </summary>\n        public Vector3 Center;\n        /// <summary>\n        /// The radius of the sphere.\n        /// </summary>\n        public float Radius;\n\n        /// <summary>\n        /// Creates a new instance of BoundingSphere.\n        /// </summary>\n        /// <param name=\"center\">Center point of the sphere.</param><param name=\"radius\">Radius of the sphere.</param>\n        public BoundingSphere(Vector3 center, float radius)\n        {\n            this.Center = center;\n            this.Radius = radius;\n        }\n\n        /// <summary>\n        /// Determines whether two instances of BoundingSphere are equal.\n        /// </summary>\n        /// <param name=\"a\">The object to the left of the equality operator.</param><param name=\"b\">The object to the right of the equality operator.</param>\n        public static bool operator ==(BoundingSphere a, BoundingSphere b)\n        {\n            return a.Equals(b);\n        }\n\n        /// <summary>\n        /// Determines whether two instances of BoundingSphere are not equal.\n        /// </summary>\n        /// <param name=\"a\">The BoundingSphere to the left of the inequality operator.</param><param name=\"b\">The BoundingSphere to the right of the inequality operator.</param>\n        public static bool operator !=(BoundingSphere a, BoundingSphere b)\n        {\n            if (!(a.Center != b.Center))\n                return (double)a.Radius != (double)b.Radius;\n            else\n                return true;\n        }\n\n        /// <summary>\n        /// Determines whether the specified BoundingSphere is equal to the current BoundingSphere.\n        /// </summary>\n        /// <param name=\"other\">The BoundingSphere to compare with the current BoundingSphere.</param>\n        public bool Equals(BoundingSphere other)\n        {\n            if (this.Center == other.Center)\n                return (double)this.Radius == (double)other.Radius;\n            else\n                return false;\n        }\n\n        /// <summary>\n        /// Determines whether the specified Object is equal to the BoundingSphere.\n        /// </summary>\n        /// <param name=\"obj\">The Object to compare with the current BoundingSphere.</param>\n        public override bool Equals(object obj)\n        {\n            bool flag = false;\n            if (obj is BoundingSphere)\n                flag = this.Equals((BoundingSphere)obj);\n            return flag;\n        }\n\n        /// <summary>\n        /// Gets the hash code for this instance.\n        /// </summary>\n        public override int GetHashCode()\n        {\n            return this.Center.GetHashCode() + this.Radius.GetHashCode();\n        }\n\n        /// <summary>\n        /// Returns a String that represents the current BoundingSphere.\n        /// </summary>\n        public override string ToString()\n        {\n            CultureInfo currentCulture = CultureInfo.CurrentCulture;\n            return string.Format((IFormatProvider)currentCulture, \"{{Center:{0} Radius:{1}}}\", new object[2]\n      {\n        (object) this.Center.ToString(),\n        (object) this.Radius.ToString((IFormatProvider) currentCulture)\n      });\n        }\n\n        /// <summary>\n        /// Creates a BoundingSphere that contains the two specified BoundingSphere instances.\n        /// </summary>\n        /// <param name=\"original\">BoundingSphere to be merged.</param><param name=\"additional\">BoundingSphere to be merged.</param>\n        public static BoundingSphere CreateMerged(BoundingSphere original, BoundingSphere additional)\n        {\n            Vector3 result;\n            Vector3.Subtract(ref additional.Center, ref original.Center, out result);\n            float num1 = result.Length();\n            float num2 = original.Radius;\n            float num3 = additional.Radius;\n            if ((double)num2 + (double)num3 >= (double)num1)\n            {\n                if ((double)num2 - (double)num3 >= (double)num1)\n                    return original;\n                if ((double)num3 - (double)num2 >= (double)num1)\n                    return additional;\n            }\n            Vector3 vector3 = result * (1f / num1);\n            float num4 = MathHelper.Min(-num2, num1 - num3);\n            float num5 = (float)(((double)MathHelper.Max(num2, num1 + num3) - (double)num4) * 0.5);\n            BoundingSphere boundingSphere;\n            boundingSphere.Center = original.Center + vector3 * (num5 + num4);\n            boundingSphere.Radius = num5;\n            return boundingSphere;\n        }\n\n        /// <summary>\n        /// Creates a BoundingSphere that contains the two specified BoundingSphere instances.\n        /// </summary>\n        /// <param name=\"original\">BoundingSphere to be merged.</param><param name=\"additional\">BoundingSphere to be merged.</param><param name=\"result\">[OutAttribute] The created BoundingSphere.</param>\n        public static void CreateMerged(ref BoundingSphere original, ref BoundingSphere additional, out BoundingSphere result)\n        {\n            Vector3 result1;\n            Vector3.Subtract(ref additional.Center, ref original.Center, out result1);\n            float num1 = result1.Length();\n            float num2 = original.Radius;\n            float num3 = additional.Radius;\n            if ((double)num2 + (double)num3 >= (double)num1)\n            {\n                if ((double)num2 - (double)num3 >= (double)num1)\n                {\n                    result = original;\n                    return;\n                }\n                else if ((double)num3 - (double)num2 >= (double)num1)\n                {\n                    result = additional;\n                    return;\n                }\n            }\n            Vector3 vector3 = result1 * (1f / num1);\n            float num4 = MathHelper.Min(-num2, num1 - num3);\n            float num5 = (float)(((double)MathHelper.Max(num2, num1 + num3) - (double)num4) * 0.5);\n            result.Center = original.Center + vector3 * (num5 + num4);\n            result.Radius = num5;\n        }\n\n        /// <summary>\n        /// Creates the smallest BoundingSphere that can contain a specified BoundingBox.\n        /// </summary>\n        /// <param name=\"box\">The BoundingBox to create the BoundingSphere from.</param>\n        public static BoundingSphere CreateFromBoundingBox(BoundingBox box)\n        {\n            BoundingSphere boundingSphere;\n            Vector3.Lerp(ref box.Min, ref box.Max, 0.5f, out boundingSphere.Center);\n            float result;\n            Vector3.Distance(ref box.Min, ref box.Max, out result);\n            boundingSphere.Radius = result * 0.5f;\n            return boundingSphere;\n        }\n\n        /// <summary>\n        /// Creates the smallest BoundingSphere that can contain a specified BoundingBox.\n        /// </summary>\n        /// <param name=\"box\">The BoundingBox to create the BoundingSphere from.</param><param name=\"result\">[OutAttribute] The created BoundingSphere.</param>\n        public static void CreateFromBoundingBox(ref BoundingBox box, out BoundingSphere result)\n        {\n            Vector3.Lerp(ref box.Min, ref box.Max, 0.5f, out result.Center);\n            float result1;\n            Vector3.Distance(ref box.Min, ref box.Max, out result1);\n            result.Radius = result1 * 0.5f;\n        }\n\n        /// <summary>\n        /// Creates a BoundingSphere that can contain a specified list of points.\n        /// </summary>\n        /// <param name=\"points\">List of points the BoundingSphere must contain.</param>\n        public static BoundingSphere CreateFromPoints(IEnumerable<Vector3> points)\n        {\n            IEnumerator<Vector3> enumerator = points.GetEnumerator();\n            Vector3 current;\n            Vector3 vector3_1 = current = enumerator.Current;\n            Vector3 vector3_2 = current;\n            Vector3 vector3_3 = current;\n            Vector3 vector3_4 = current;\n            Vector3 vector3_5 = current;\n            Vector3 vector3_6 = current;\n            foreach (Vector3 vector3_7 in points)\n            {\n                if ((double)vector3_7.X < (double)vector3_6.X)\n                    vector3_6 = vector3_7;\n                if ((double)vector3_7.X > (double)vector3_5.X)\n                    vector3_5 = vector3_7;\n                if ((double)vector3_7.Y < (double)vector3_4.Y)\n                    vector3_4 = vector3_7;\n                if ((double)vector3_7.Y > (double)vector3_3.Y)\n                    vector3_3 = vector3_7;\n                if ((double)vector3_7.Z < (double)vector3_2.Z)\n                    vector3_2 = vector3_7;\n                if ((double)vector3_7.Z > (double)vector3_1.Z)\n                    vector3_1 = vector3_7;\n            }\n            float result1;\n            Vector3.Distance(ref vector3_5, ref vector3_6, out result1);\n            float result2;\n            Vector3.Distance(ref vector3_3, ref vector3_4, out result2);\n            float result3;\n            Vector3.Distance(ref vector3_1, ref vector3_2, out result3);\n            Vector3 result4;\n            float num1;\n            if ((double)result1 > (double)result2)\n            {\n                if ((double)result1 > (double)result3)\n                {\n                    Vector3.Lerp(ref vector3_5, ref vector3_6, 0.5f, out result4);\n                    num1 = result1 * 0.5f;\n                }\n                else\n                {\n                    Vector3.Lerp(ref vector3_1, ref vector3_2, 0.5f, out result4);\n                    num1 = result3 * 0.5f;\n                }\n            }\n            else if ((double)result2 > (double)result3)\n            {\n                Vector3.Lerp(ref vector3_3, ref vector3_4, 0.5f, out result4);\n                num1 = result2 * 0.5f;\n            }\n            else\n            {\n                Vector3.Lerp(ref vector3_1, ref vector3_2, 0.5f, out result4);\n                num1 = result3 * 0.5f;\n            }\n            foreach (Vector3 vector3_7 in points)\n            {\n                Vector3 vector3_8;\n                vector3_8.X = vector3_7.X - result4.X;\n                vector3_8.Y = vector3_7.Y - result4.Y;\n                vector3_8.Z = vector3_7.Z - result4.Z;\n                float num2 = vector3_8.Length();\n                if ((double)num2 > (double)num1)\n                {\n                    num1 = (float)(((double)num1 + (double)num2) * 0.5);\n                    result4 += (float)(1.0 - (double)num1 / (double)num2) * vector3_8;\n                }\n            }\n            BoundingSphere boundingSphere;\n            boundingSphere.Center = result4;\n            boundingSphere.Radius = num1;\n            return boundingSphere;\n        }\n\n        /// <summary>\n        /// Creates the smallest BoundingSphere that can contain a specified BoundingFrustum.\n        /// </summary>\n        /// <param name=\"frustum\">The BoundingFrustum to create the BoundingSphere with.</param>\n        public static BoundingSphere CreateFromFrustum(BoundingFrustum frustum)\n        {\n            if (frustum == (BoundingFrustum)null)\n                throw new ArgumentNullException(\"frustum\");\n            else\n                return BoundingSphere.CreateFromPoints((IEnumerable<Vector3>)frustum.cornerArray);\n        }\n\n        /// <summary>\n        /// Checks whether the current BoundingSphere intersects with a specified BoundingBox.\n        /// </summary>\n        /// <param name=\"box\">The BoundingBox to check for intersection with the current BoundingSphere.</param>\n        public bool Intersects(BoundingBox box)\n        {\n            Vector3 result1;\n            Vector3.Clamp(ref this.Center, ref box.Min, ref box.Max, out result1);\n            float result2;\n            Vector3.DistanceSquared(ref this.Center, ref result1, out result2);\n            return (double)result2 <= (double)this.Radius * (double)this.Radius;\n        }\n\n        /// <summary>\n        /// Checks whether the current BoundingSphere intersects a BoundingBox.\n        /// </summary>\n        /// <param name=\"box\">The BoundingBox to check for intersection with.</param><param name=\"result\">[OutAttribute] true if the BoundingSphere and BoundingBox intersect; false otherwise.</param>\n        public void Intersects(ref BoundingBox box, out bool result)\n        {\n            Vector3 result1;\n            Vector3.Clamp(ref this.Center, ref box.Min, ref box.Max, out result1);\n            float result2;\n            Vector3.DistanceSquared(ref this.Center, ref result1, out result2);\n            result = (double)result2 <= (double)this.Radius * (double)this.Radius;\n        }\n\n        /// <summary>\n        /// Checks whether the current BoundingSphere intersects with a specified BoundingFrustum.\n        /// </summary>\n        /// <param name=\"frustum\">The BoundingFrustum to check for intersection with the current BoundingSphere.</param>\n        public bool Intersects(BoundingFrustum frustum)\n        {\n            bool result;\n            frustum.Intersects(ref this, out result);\n            return result;\n        }\n\n        /// <summary>\n        /// Checks whether the current BoundingSphere intersects with a specified Plane.\n        /// </summary>\n        /// <param name=\"plane\">The Plane to check for intersection with the current BoundingSphere.</param>\n        public PlaneIntersectionType Intersects(Plane plane)\n        {\n            return plane.Intersects(this);\n        }\n\n        /// <summary>\n        /// Checks whether the current BoundingSphere intersects a Plane.\n        /// </summary>\n        /// <param name=\"plane\">The Plane to check for intersection with.</param><param name=\"result\">[OutAttribute] An enumeration indicating whether the BoundingSphere intersects the Plane.</param>\n        public void Intersects(ref Plane plane, out PlaneIntersectionType result)\n        {\n            plane.Intersects(ref this, out result);\n        }\n\n        /// <summary>\n        /// Checks whether the current BoundingSphere intersects with a specified Ray.\n        /// </summary>\n        /// <param name=\"ray\">The Ray to check for intersection with the current BoundingSphere.</param>\n        public float? Intersects(Ray ray)\n        {\n            return ray.Intersects(this);\n        }\n\n        /// <summary>\n        /// Checks whether the current BoundingSphere intersects a Ray.\n        /// </summary>\n        /// <param name=\"ray\">The Ray to check for intersection with.</param><param name=\"result\">[OutAttribute] Distance at which the ray intersects the BoundingSphere or null if there is no intersection.</param>\n        public void Intersects(ref Ray ray, out float? result)\n        {\n            ray.Intersects(ref this, out result);\n        }\n\n        /// <summary>\n        /// Checks whether the current BoundingSphere intersects with a specified BoundingSphere.\n        /// </summary>\n        /// <param name=\"sphere\">The BoundingSphere to check for intersection with the current BoundingSphere.</param>\n        public bool Intersects(BoundingSphere sphere)\n        {\n            float result;\n            Vector3.DistanceSquared(ref this.Center, ref sphere.Center, out result);\n            float num1 = this.Radius;\n            float num2 = sphere.Radius;\n            return (double)num1 * (double)num1 + 2.0 * (double)num1 * (double)num2 + (double)num2 * (double)num2 > (double)result;\n        }\n\n        /// <summary>\n        /// Checks whether the current BoundingSphere intersects another BoundingSphere.\n        /// </summary>\n        /// <param name=\"sphere\">The BoundingSphere to check for intersection with.</param><param name=\"result\">[OutAttribute] true if the BoundingSphere instances intersect; false otherwise.</param>\n        public void Intersects(ref BoundingSphere sphere, out bool result)\n        {\n            float result1;\n            Vector3.DistanceSquared(ref this.Center, ref sphere.Center, out result1);\n            float num1 = this.Radius;\n            float num2 = sphere.Radius;\n            result = (double)num1 * (double)num1 + 2.0 * (double)num1 * (double)num2 + (double)num2 * (double)num2 > (double)result1;\n        }\n\n        /// <summary>\n        /// Checks whether the current BoundingSphere contains the specified BoundingBox.\n        /// </summary>\n        /// <param name=\"box\">The BoundingBox to check against the current BoundingSphere.</param>\n        public ContainmentType Contains(BoundingBox box)\n        {\n            if (!box.Intersects(this))\n                return ContainmentType.Disjoint;\n            float num = this.Radius * this.Radius;\n            Vector3 vector3;\n            vector3.X = this.Center.X - box.Min.X;\n            vector3.Y = this.Center.Y - box.Max.Y;\n            vector3.Z = this.Center.Z - box.Max.Z;\n            if ((double)vector3.LengthSquared() > (double)num)\n                return ContainmentType.Intersects;\n            vector3.X = this.Center.X - box.Max.X;\n            vector3.Y = this.Center.Y - box.Max.Y;\n            vector3.Z = this.Center.Z - box.Max.Z;\n            if ((double)vector3.LengthSquared() > (double)num)\n                return ContainmentType.Intersects;\n            vector3.X = this.Center.X - box.Max.X;\n            vector3.Y = this.Center.Y - box.Min.Y;\n            vector3.Z = this.Center.Z - box.Max.Z;\n            if ((double)vector3.LengthSquared() > (double)num)\n                return ContainmentType.Intersects;\n            vector3.X = this.Center.X - box.Min.X;\n            vector3.Y = this.Center.Y - box.Min.Y;\n            vector3.Z = this.Center.Z - box.Max.Z;\n            if ((double)vector3.LengthSquared() > (double)num)\n                return ContainmentType.Intersects;\n            vector3.X = this.Center.X - box.Min.X;\n            vector3.Y = this.Center.Y - box.Max.Y;\n            vector3.Z = this.Center.Z - box.Min.Z;\n            if ((double)vector3.LengthSquared() > (double)num)\n                return ContainmentType.Intersects;\n            vector3.X = this.Center.X - box.Max.X;\n            vector3.Y = this.Center.Y - box.Max.Y;\n            vector3.Z = this.Center.Z - box.Min.Z;\n            if ((double)vector3.LengthSquared() > (double)num)\n                return ContainmentType.Intersects;\n            vector3.X = this.Center.X - box.Max.X;\n            vector3.Y = this.Center.Y - box.Min.Y;\n            vector3.Z = this.Center.Z - box.Min.Z;\n            if ((double)vector3.LengthSquared() > (double)num)\n                return ContainmentType.Intersects;\n            vector3.X = this.Center.X - box.Min.X;\n            vector3.Y = this.Center.Y - box.Min.Y;\n            vector3.Z = this.Center.Z - box.Min.Z;\n            return (double)vector3.LengthSquared() > (double)num ? ContainmentType.Intersects : ContainmentType.Contains;\n        }\n\n        /// <summary>\n        /// Checks whether the current BoundingSphere contains the specified BoundingBox.\n        /// </summary>\n        /// <param name=\"box\">The BoundingBox to test for overlap.</param><param name=\"result\">[OutAttribute] Enumeration indicating the extent of overlap.</param>\n        public void Contains(ref BoundingBox box, out ContainmentType result)\n        {\n            bool result1;\n            box.Intersects(ref this, out result1);\n            if (!result1)\n            {\n                result = ContainmentType.Disjoint;\n            }\n            else\n            {\n                float num = this.Radius * this.Radius;\n                result = ContainmentType.Intersects;\n                Vector3 vector3;\n                vector3.X = this.Center.X - box.Min.X;\n                vector3.Y = this.Center.Y - box.Max.Y;\n                vector3.Z = this.Center.Z - box.Max.Z;\n                if ((double)vector3.LengthSquared() > (double)num)\n                    return;\n                vector3.X = this.Center.X - box.Max.X;\n                vector3.Y = this.Center.Y - box.Max.Y;\n                vector3.Z = this.Center.Z - box.Max.Z;\n                if ((double)vector3.LengthSquared() > (double)num)\n                    return;\n                vector3.X = this.Center.X - box.Max.X;\n                vector3.Y = this.Center.Y - box.Min.Y;\n                vector3.Z = this.Center.Z - box.Max.Z;\n                if ((double)vector3.LengthSquared() > (double)num)\n                    return;\n                vector3.X = this.Center.X - box.Min.X;\n                vector3.Y = this.Center.Y - box.Min.Y;\n                vector3.Z = this.Center.Z - box.Max.Z;\n                if ((double)vector3.LengthSquared() > (double)num)\n                    return;\n                vector3.X = this.Center.X - box.Min.X;\n                vector3.Y = this.Center.Y - box.Max.Y;\n                vector3.Z = this.Center.Z - box.Min.Z;\n                if ((double)vector3.LengthSquared() > (double)num)\n                    return;\n                vector3.X = this.Center.X - box.Max.X;\n                vector3.Y = this.Center.Y - box.Max.Y;\n                vector3.Z = this.Center.Z - box.Min.Z;\n                if ((double)vector3.LengthSquared() > (double)num)\n                    return;\n                vector3.X = this.Center.X - box.Max.X;\n                vector3.Y = this.Center.Y - box.Min.Y;\n                vector3.Z = this.Center.Z - box.Min.Z;\n                if ((double)vector3.LengthSquared() > (double)num)\n                    return;\n                vector3.X = this.Center.X - box.Min.X;\n                vector3.Y = this.Center.Y - box.Min.Y;\n                vector3.Z = this.Center.Z - box.Min.Z;\n                if ((double)vector3.LengthSquared() > (double)num)\n                    return;\n                result = ContainmentType.Contains;\n            }\n        }\n\n        /// <summary>\n        /// Checks whether the current BoundingSphere contains the specified BoundingFrustum.\n        /// </summary>\n        /// <param name=\"frustum\">The BoundingFrustum to check against the current BoundingSphere.</param>\n        public ContainmentType Contains(BoundingFrustum frustum)\n        {\n            if (!frustum.Intersects(this))\n                return ContainmentType.Disjoint;\n            float num = this.Radius * this.Radius;\n            foreach (Vector3 vector3_1 in frustum.cornerArray)\n            {\n                Vector3 vector3_2;\n                vector3_2.X = vector3_1.X - this.Center.X;\n                vector3_2.Y = vector3_1.Y - this.Center.Y;\n                vector3_2.Z = vector3_1.Z - this.Center.Z;\n                if ((double)vector3_2.LengthSquared() > (double)num)\n                    return ContainmentType.Intersects;\n            }\n            return ContainmentType.Contains;\n        }\n\n        /// <summary>\n        /// Checks whether the current BoundingSphere contains the specified point.\n        /// </summary>\n        /// <param name=\"point\">The point to check against the current BoundingSphere.</param>\n        public ContainmentType Contains(Vector3 point)\n        {\n            return (double)Vector3.DistanceSquared(point, this.Center) >= (double)this.Radius * (double)this.Radius ? ContainmentType.Disjoint : ContainmentType.Contains;\n        }\n\n        /// <summary>\n        /// Checks whether the current BoundingSphere contains the specified point.\n        /// </summary>\n        /// <param name=\"point\">The point to test for overlap.</param><param name=\"result\">[OutAttribute] Enumeration indicating the extent of overlap.</param>\n        public void Contains(ref Vector3 point, out ContainmentType result)\n        {\n            float result1;\n            Vector3.DistanceSquared(ref point, ref this.Center, out result1);\n            result = (double)result1 < (double)this.Radius * (double)this.Radius ? ContainmentType.Contains : ContainmentType.Disjoint;\n        }\n\n        /// <summary>\n        /// Checks whether the current BoundingSphere contains the specified BoundingSphere.\n        /// </summary>\n        /// <param name=\"sphere\">The BoundingSphere to check against the current BoundingSphere.</param>\n        public ContainmentType Contains(BoundingSphere sphere)\n        {\n            float result;\n            Vector3.Distance(ref this.Center, ref sphere.Center, out result);\n            float num1 = this.Radius;\n            float num2 = sphere.Radius;\n            if ((double)num1 + (double)num2 < (double)result)\n                return ContainmentType.Disjoint;\n            return (double)num1 - (double)num2 < (double)result ? ContainmentType.Intersects : ContainmentType.Contains;\n        }\n\n        /// <summary>\n        /// Checks whether the current BoundingSphere contains the specified BoundingSphere.\n        /// </summary>\n        /// <param name=\"sphere\">The BoundingSphere to test for overlap.</param><param name=\"result\">[OutAttribute] Enumeration indicating the extent of overlap.</param>\n        public void Contains(ref BoundingSphere sphere, out ContainmentType result)\n        {\n            float result1;\n            Vector3.Distance(ref this.Center, ref sphere.Center, out result1);\n            float num1 = this.Radius;\n            float num2 = sphere.Radius;\n            result = (double)num1 + (double)num2 >= (double)result1 ? ((double)num1 - (double)num2 >= (double)result1 ? ContainmentType.Contains : ContainmentType.Intersects) : ContainmentType.Disjoint;\n        }\n\n        internal void SupportMapping(ref Vector3 v, out Vector3 result)\n        {\n            float num = this.Radius / v.Length();\n            result.X = this.Center.X + v.X * num;\n            result.Y = this.Center.Y + v.Y * num;\n            result.Z = this.Center.Z + v.Z * num;\n        }\n\n        /// <summary>\n        /// Translates and scales the BoundingSphere using a given Matrix.\n        /// </summary>\n        /// <param name=\"matrix\">A transformation matrix that might include translation, rotation, or uniform scaling. Note that BoundingSphere.Transform will not return correct results if there are non-uniform scaling, shears, or other unusual transforms in this transformation matrix. This is because there is no way to shear or non-uniformly scale a sphere. Such an operation would cause the sphere to lose its shape as a sphere.</param>\n        public BoundingSphere Transform(Matrix matrix)\n        {\n            BoundingSphere boundingSphere = new BoundingSphere();\n            boundingSphere.Center = Vector3.Transform(this.Center, matrix);\n            float num = Math.Max((float)((double)matrix.M11 * (double)matrix.M11 + (double)matrix.M12 * (double)matrix.M12 + (double)matrix.M13 * (double)matrix.M13), Math.Max((float)((double)matrix.M21 * (double)matrix.M21 + (double)matrix.M22 * (double)matrix.M22 + (double)matrix.M23 * (double)matrix.M23), (float)((double)matrix.M31 * (double)matrix.M31 + (double)matrix.M32 * (double)matrix.M32 + (double)matrix.M33 * (double)matrix.M33)));\n            boundingSphere.Radius = this.Radius * (float)Math.Sqrt((double)num);\n            return boundingSphere;\n        }\n\n        /// <summary>\n        /// Translates and scales the BoundingSphere using a given Matrix.\n        /// </summary>\n        /// <param name=\"matrix\">A transformation matrix that might include translation, rotation, or uniform scaling. Note that BoundingSphere.Transform will not return correct results if there are non-uniform scaling, shears, or other unusual transforms in this transformation matrix. This is because there is no way to shear or non-uniformly scale a sphere. Such an operation would cause the sphere to lose its shape as a sphere.</param><param name=\"result\">[OutAttribute] The transformed BoundingSphere.</param>\n        public void Transform(ref Matrix matrix, out BoundingSphere result)\n        {\n            result.Center = Vector3.Transform(this.Center, matrix);\n            float num = Math.Max((float)((double)matrix.M11 * (double)matrix.M11 + (double)matrix.M12 * (double)matrix.M12 + (double)matrix.M13 * (double)matrix.M13), Math.Max((float)((double)matrix.M21 * (double)matrix.M21 + (double)matrix.M22 * (double)matrix.M22 + (double)matrix.M23 * (double)matrix.M23), (float)((double)matrix.M31 * (double)matrix.M31 + (double)matrix.M32 * (double)matrix.M32 + (double)matrix.M33 * (double)matrix.M33)));\n            result.Radius = this.Radius * (float)Math.Sqrt((double)num);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWarsMath/Color.cs",
    "content": "﻿using MinerWarsMath.Graphics.PackedVector;\nusing System;\nusing System.ComponentModel;\nusing System.Globalization;\n\nnamespace MinerWarsMath\n{\n    /// <summary>\n    /// Represents a four-component color using red, green, blue, and alpha data.\n    /// </summary>\n    [Serializable]\n    public struct Color : IPackedVector<uint>, IPackedVector, IEquatable<Color>\n    {\n        private uint packedValue;\n\n        /// <summary>\n        /// Gets or sets the red component value of this Color.\n        /// </summary>\n        public byte R\n        {\n            get\n            {\n                return (byte)this.packedValue;\n            }\n            set\n            {\n                this.packedValue = this.packedValue & 4294967040U | (uint)value;\n            }\n        }\n\n        /// <summary>\n        /// Gets or sets the green component value of this Color.\n        /// </summary>\n        public byte G\n        {\n            get\n            {\n                return (byte)(this.packedValue >> 8);\n            }\n            set\n            {\n                this.packedValue = (uint)((int)this.packedValue & -65281 | (int)value << 8);\n            }\n        }\n\n        /// <summary>\n        /// Gets or sets the blue component value of this Color.\n        /// </summary>\n        public byte B\n        {\n            get\n            {\n                return (byte)(this.packedValue >> 16);\n            }\n            set\n            {\n                this.packedValue = (uint)((int)this.packedValue & -16711681 | (int)value << 16);\n            }\n        }\n\n        /// <summary>\n        /// Gets or sets the alpha component value.\n        /// </summary>\n        public byte A\n        {\n            get\n            {\n                return (byte)(this.packedValue >> 24);\n            }\n            set\n            {\n                this.packedValue = (uint)((int)this.packedValue & 16777215 | (int)value << 24);\n            }\n        }\n\n        /// <summary>\n        /// Gets the current color as a packed value.\n        /// </summary>\n        [CLSCompliant(false)]\n        public uint PackedValue\n        {\n            get\n            {\n                return this.packedValue;\n            }\n            set\n            {\n                this.packedValue = value;\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:0 G:0 B:0 A:0.\n        /// </summary>\n        public static Color Transparent\n        {\n            get\n            {\n                return new Color(0U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:240 G:248 B:255 A:255.\n        /// </summary>\n        public static Color AliceBlue\n        {\n            get\n            {\n                return new Color(4294965488U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:250 G:235 B:215 A:255.\n        /// </summary>\n        public static Color AntiqueWhite\n        {\n            get\n            {\n                return new Color(4292340730U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:0 G:255 B:255 A:255.\n        /// </summary>\n        public static Color Aqua\n        {\n            get\n            {\n                return new Color(4294967040U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:127 G:255 B:212 A:255.\n        /// </summary>\n        public static Color Aquamarine\n        {\n            get\n            {\n                return new Color(4292149119U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:240 G:255 B:255 A:255.\n        /// </summary>\n        public static Color Azure\n        {\n            get\n            {\n                return new Color(4294967280U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:245 G:245 B:220 A:255.\n        /// </summary>\n        public static Color Beige\n        {\n            get\n            {\n                return new Color(4292670965U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:255 G:228 B:196 A:255.\n        /// </summary>\n        public static Color Bisque\n        {\n            get\n            {\n                return new Color(4291093759U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:0 G:0 B:0 A:255.\n        /// </summary>\n        public static Color Black\n        {\n            get\n            {\n                return new Color(4278190080U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:255 G:235 B:205 A:255.\n        /// </summary>\n        public static Color BlanchedAlmond\n        {\n            get\n            {\n                return new Color(4291685375U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:0 G:0 B:255 A:255.\n        /// </summary>\n        public static Color Blue\n        {\n            get\n            {\n                return new Color(4294901760U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:138 G:43 B:226 A:255.\n        /// </summary>\n        public static Color BlueViolet\n        {\n            get\n            {\n                return new Color(4293012362U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:165 G:42 B:42 A:255.\n        /// </summary>\n        public static Color Brown\n        {\n            get\n            {\n                return new Color(4280953509U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:222 G:184 B:135 A:255.\n        /// </summary>\n        public static Color BurlyWood\n        {\n            get\n            {\n                return new Color(4287084766U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:95 G:158 B:160 A:255.\n        /// </summary>\n        public static Color CadetBlue\n        {\n            get\n            {\n                return new Color(4288716383U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:127 G:255 B:0 A:255.\n        /// </summary>\n        public static Color Chartreuse\n        {\n            get\n            {\n                return new Color(4278255487U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:210 G:105 B:30 A:255.\n        /// </summary>\n        public static Color Chocolate\n        {\n            get\n            {\n                return new Color(4280183250U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:255 G:127 B:80 A:255.\n        /// </summary>\n        public static Color Coral\n        {\n            get\n            {\n                return new Color(4283465727U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:100 G:149 B:237 A:255.\n        /// </summary>\n        public static Color CornflowerBlue\n        {\n            get\n            {\n                return new Color(4293760356U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:255 G:248 B:220 A:255.\n        /// </summary>\n        public static Color Cornsilk\n        {\n            get\n            {\n                return new Color(4292671743U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:220 G:20 B:60 A:255.\n        /// </summary>\n        public static Color Crimson\n        {\n            get\n            {\n                return new Color(4282127580U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:0 G:255 B:255 A:255.\n        /// </summary>\n        public static Color Cyan\n        {\n            get\n            {\n                return new Color(4294967040U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:0 G:0 B:139 A:255.\n        /// </summary>\n        public static Color DarkBlue\n        {\n            get\n            {\n                return new Color(4287299584U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:0 G:139 B:139 A:255.\n        /// </summary>\n        public static Color DarkCyan\n        {\n            get\n            {\n                return new Color(4287335168U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:184 G:134 B:11 A:255.\n        /// </summary>\n        public static Color DarkGoldenrod\n        {\n            get\n            {\n                return new Color(4278945464U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:169 G:169 B:169 A:255.\n        /// </summary>\n        public static Color DarkGray\n        {\n            get\n            {\n                return new Color(4289309097U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:0 G:100 B:0 A:255.\n        /// </summary>\n        public static Color DarkGreen\n        {\n            get\n            {\n                return new Color(4278215680U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:189 G:183 B:107 A:255.\n        /// </summary>\n        public static Color DarkKhaki\n        {\n            get\n            {\n                return new Color(4285249469U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:139 G:0 B:139 A:255.\n        /// </summary>\n        public static Color DarkMagenta\n        {\n            get\n            {\n                return new Color(4287299723U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:85 G:107 B:47 A:255.\n        /// </summary>\n        public static Color DarkOliveGreen\n        {\n            get\n            {\n                return new Color(4281297749U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:255 G:140 B:0 A:255.\n        /// </summary>\n        public static Color DarkOrange\n        {\n            get\n            {\n                return new Color(4278226175U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:153 G:50 B:204 A:255.\n        /// </summary>\n        public static Color DarkOrchid\n        {\n            get\n            {\n                return new Color(4291572377U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:139 G:0 B:0 A:255.\n        /// </summary>\n        public static Color DarkRed\n        {\n            get\n            {\n                return new Color(4278190219U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:233 G:150 B:122 A:255.\n        /// </summary>\n        public static Color DarkSalmon\n        {\n            get\n            {\n                return new Color(4286224105U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:143 G:188 B:139 A:255.\n        /// </summary>\n        public static Color DarkSeaGreen\n        {\n            get\n            {\n                return new Color(4287347855U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:72 G:61 B:139 A:255.\n        /// </summary>\n        public static Color DarkSlateBlue\n        {\n            get\n            {\n                return new Color(4287315272U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:47 G:79 B:79 A:255.\n        /// </summary>\n        public static Color DarkSlateGray\n        {\n            get\n            {\n                return new Color(4283387695U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:0 G:206 B:209 A:255.\n        /// </summary>\n        public static Color DarkTurquoise\n        {\n            get\n            {\n                return new Color(4291939840U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:148 G:0 B:211 A:255.\n        /// </summary>\n        public static Color DarkViolet\n        {\n            get\n            {\n                return new Color(4292018324U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:255 G:20 B:147 A:255.\n        /// </summary>\n        public static Color DeepPink\n        {\n            get\n            {\n                return new Color(4287829247U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:0 G:191 B:255 A:255.\n        /// </summary>\n        public static Color DeepSkyBlue\n        {\n            get\n            {\n                return new Color(4294950656U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:105 G:105 B:105 A:255.\n        /// </summary>\n        public static Color DimGray\n        {\n            get\n            {\n                return new Color(4285098345U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:30 G:144 B:255 A:255.\n        /// </summary>\n        public static Color DodgerBlue\n        {\n            get\n            {\n                return new Color(4294938654U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:178 G:34 B:34 A:255.\n        /// </summary>\n        public static Color Firebrick\n        {\n            get\n            {\n                return new Color(4280427186U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:255 G:250 B:240 A:255.\n        /// </summary>\n        public static Color FloralWhite\n        {\n            get\n            {\n                return new Color(4293982975U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:34 G:139 B:34 A:255.\n        /// </summary>\n        public static Color ForestGreen\n        {\n            get\n            {\n                return new Color(4280453922U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:255 G:0 B:255 A:255.\n        /// </summary>\n        public static Color Fuchsia\n        {\n            get\n            {\n                return new Color(4294902015U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:220 G:220 B:220 A:255.\n        /// </summary>\n        public static Color Gainsboro\n        {\n            get\n            {\n                return new Color(4292664540U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:248 G:248 B:255 A:255.\n        /// </summary>\n        public static Color GhostWhite\n        {\n            get\n            {\n                return new Color(4294965496U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:255 G:215 B:0 A:255.\n        /// </summary>\n        public static Color Gold\n        {\n            get\n            {\n                return new Color(4278245375U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:218 G:165 B:32 A:255.\n        /// </summary>\n        public static Color Goldenrod\n        {\n            get\n            {\n                return new Color(4280329690U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:128 G:128 B:128 A:255.\n        /// </summary>\n        public static Color Gray\n        {\n            get\n            {\n                return new Color(4286611584U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:0 G:128 B:0 A:255.\n        /// </summary>\n        public static Color Green\n        {\n            get\n            {\n                return new Color(4278222848U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:173 G:255 B:47 A:255.\n        /// </summary>\n        public static Color GreenYellow\n        {\n            get\n            {\n                return new Color(4281335725U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:240 G:255 B:240 A:255.\n        /// </summary>\n        public static Color Honeydew\n        {\n            get\n            {\n                return new Color(4293984240U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:255 G:105 B:180 A:255.\n        /// </summary>\n        public static Color HotPink\n        {\n            get\n            {\n                return new Color(4290013695U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:205 G:92 B:92 A:255.\n        /// </summary>\n        public static Color IndianRed\n        {\n            get\n            {\n                return new Color(4284243149U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:75 G:0 B:130 A:255.\n        /// </summary>\n        public static Color Indigo\n        {\n            get\n            {\n                return new Color(4286709835U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:255 G:255 B:240 A:255.\n        /// </summary>\n        public static Color Ivory\n        {\n            get\n            {\n                return new Color(4293984255U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:240 G:230 B:140 A:255.\n        /// </summary>\n        public static Color Khaki\n        {\n            get\n            {\n                return new Color(4287424240U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:230 G:230 B:250 A:255.\n        /// </summary>\n        public static Color Lavender\n        {\n            get\n            {\n                return new Color(4294633190U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:255 G:240 B:245 A:255.\n        /// </summary>\n        public static Color LavenderBlush\n        {\n            get\n            {\n                return new Color(4294308095U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:124 G:252 B:0 A:255.\n        /// </summary>\n        public static Color LawnGreen\n        {\n            get\n            {\n                return new Color(4278254716U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:255 G:250 B:205 A:255.\n        /// </summary>\n        public static Color LemonChiffon\n        {\n            get\n            {\n                return new Color(4291689215U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:173 G:216 B:230 A:255.\n        /// </summary>\n        public static Color LightBlue\n        {\n            get\n            {\n                return new Color(4293318829U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:240 G:128 B:128 A:255.\n        /// </summary>\n        public static Color LightCoral\n        {\n            get\n            {\n                return new Color(4286611696U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:224 G:255 B:255 A:255.\n        /// </summary>\n        public static Color LightCyan\n        {\n            get\n            {\n                return new Color(4294967264U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:250 G:250 B:210 A:255.\n        /// </summary>\n        public static Color LightGoldenrodYellow\n        {\n            get\n            {\n                return new Color(4292016890U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:144 G:238 B:144 A:255.\n        /// </summary>\n        public static Color LightGreen\n        {\n            get\n            {\n                return new Color(4287688336U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:211 G:211 B:211 A:255.\n        /// </summary>\n        public static Color LightGray\n        {\n            get\n            {\n                return new Color(4292072403U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:255 G:182 B:193 A:255.\n        /// </summary>\n        public static Color LightPink\n        {\n            get\n            {\n                return new Color(4290885375U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:255 G:160 B:122 A:255.\n        /// </summary>\n        public static Color LightSalmon\n        {\n            get\n            {\n                return new Color(4286226687U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:32 G:178 B:170 A:255.\n        /// </summary>\n        public static Color LightSeaGreen\n        {\n            get\n            {\n                return new Color(4289376800U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:135 G:206 B:250 A:255.\n        /// </summary>\n        public static Color LightSkyBlue\n        {\n            get\n            {\n                return new Color(4294626951U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:119 G:136 B:153 A:255.\n        /// </summary>\n        public static Color LightSlateGray\n        {\n            get\n            {\n                return new Color(4288252023U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:176 G:196 B:222 A:255.\n        /// </summary>\n        public static Color LightSteelBlue\n        {\n            get\n            {\n                return new Color(4292789424U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:255 G:255 B:224 A:255.\n        /// </summary>\n        public static Color LightYellow\n        {\n            get\n            {\n                return new Color(4292935679U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:0 G:255 B:0 A:255.\n        /// </summary>\n        public static Color Lime\n        {\n            get\n            {\n                return new Color(4278255360U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:50 G:205 B:50 A:255.\n        /// </summary>\n        public static Color LimeGreen\n        {\n            get\n            {\n                return new Color(4281519410U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:250 G:240 B:230 A:255.\n        /// </summary>\n        public static Color Linen\n        {\n            get\n            {\n                return new Color(4293325050U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:255 G:0 B:255 A:255.\n        /// </summary>\n        public static Color Magenta\n        {\n            get\n            {\n                return new Color(4294902015U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:128 G:0 B:0 A:255.\n        /// </summary>\n        public static Color Maroon\n        {\n            get\n            {\n                return new Color(4278190208U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:102 G:205 B:170 A:255.\n        /// </summary>\n        public static Color MediumAquamarine\n        {\n            get\n            {\n                return new Color(4289383782U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:0 G:0 B:205 A:255.\n        /// </summary>\n        public static Color MediumBlue\n        {\n            get\n            {\n                return new Color(4291624960U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:186 G:85 B:211 A:255.\n        /// </summary>\n        public static Color MediumOrchid\n        {\n            get\n            {\n                return new Color(4292040122U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:147 G:112 B:219 A:255.\n        /// </summary>\n        public static Color MediumPurple\n        {\n            get\n            {\n                return new Color(4292571283U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:60 G:179 B:113 A:255.\n        /// </summary>\n        public static Color MediumSeaGreen\n        {\n            get\n            {\n                return new Color(4285641532U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:123 G:104 B:238 A:255.\n        /// </summary>\n        public static Color MediumSlateBlue\n        {\n            get\n            {\n                return new Color(4293814395U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:0 G:250 B:154 A:255.\n        /// </summary>\n        public static Color MediumSpringGreen\n        {\n            get\n            {\n                return new Color(4288346624U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:72 G:209 B:204 A:255.\n        /// </summary>\n        public static Color MediumTurquoise\n        {\n            get\n            {\n                return new Color(4291613000U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:199 G:21 B:133 A:255.\n        /// </summary>\n        public static Color MediumVioletRed\n        {\n            get\n            {\n                return new Color(4286911943U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:25 G:25 B:112 A:255.\n        /// </summary>\n        public static Color MidnightBlue\n        {\n            get\n            {\n                return new Color(4285536537U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:245 G:255 B:250 A:255.\n        /// </summary>\n        public static Color MintCream\n        {\n            get\n            {\n                return new Color(4294639605U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:255 G:228 B:225 A:255.\n        /// </summary>\n        public static Color MistyRose\n        {\n            get\n            {\n                return new Color(4292994303U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:255 G:228 B:181 A:255.\n        /// </summary>\n        public static Color Moccasin\n        {\n            get\n            {\n                return new Color(4290110719U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:255 G:222 B:173 A:255.\n        /// </summary>\n        public static Color NavajoWhite\n        {\n            get\n            {\n                return new Color(4289584895U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color R:0 G:0 B:128 A:255.\n        /// </summary>\n        public static Color Navy\n        {\n            get\n            {\n                return new Color(4286578688U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:253 G:245 B:230 A:255.\n        /// </summary>\n        public static Color OldLace\n        {\n            get\n            {\n                return new Color(4293326333U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:128 G:128 B:0 A:255.\n        /// </summary>\n        public static Color Olive\n        {\n            get\n            {\n                return new Color(4278222976U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:107 G:142 B:35 A:255.\n        /// </summary>\n        public static Color OliveDrab\n        {\n            get\n            {\n                return new Color(4280520299U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:255 G:165 B:0 A:255.\n        /// </summary>\n        public static Color Orange\n        {\n            get\n            {\n                return new Color(4278232575U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:255 G:69 B:0 A:255.\n        /// </summary>\n        public static Color OrangeRed\n        {\n            get\n            {\n                return new Color(4278207999U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:218 G:112 B:214 A:255.\n        /// </summary>\n        public static Color Orchid\n        {\n            get\n            {\n                return new Color(4292243674U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:238 G:232 B:170 A:255.\n        /// </summary>\n        public static Color PaleGoldenrod\n        {\n            get\n            {\n                return new Color(4289390830U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:152 G:251 B:152 A:255.\n        /// </summary>\n        public static Color PaleGreen\n        {\n            get\n            {\n                return new Color(4288215960U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:175 G:238 B:238 A:255.\n        /// </summary>\n        public static Color PaleTurquoise\n        {\n            get\n            {\n                return new Color(4293848751U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:219 G:112 B:147 A:255.\n        /// </summary>\n        public static Color PaleVioletRed\n        {\n            get\n            {\n                return new Color(4287852763U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:255 G:239 B:213 A:255.\n        /// </summary>\n        public static Color PapayaWhip\n        {\n            get\n            {\n                return new Color(4292210687U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:255 G:218 B:185 A:255.\n        /// </summary>\n        public static Color PeachPuff\n        {\n            get\n            {\n                return new Color(4290370303U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:205 G:133 B:63 A:255.\n        /// </summary>\n        public static Color Peru\n        {\n            get\n            {\n                return new Color(4282353101U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:255 G:192 B:203 A:255.\n        /// </summary>\n        public static Color Pink\n        {\n            get\n            {\n                return new Color(4291543295U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:221 G:160 B:221 A:255.\n        /// </summary>\n        public static Color Plum\n        {\n            get\n            {\n                return new Color(4292714717U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:176 G:224 B:230 A:255.\n        /// </summary>\n        public static Color PowderBlue\n        {\n            get\n            {\n                return new Color(4293320880U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:128 G:0 B:128 A:255.\n        /// </summary>\n        public static Color Purple\n        {\n            get\n            {\n                return new Color(4286578816U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:255 G:0 B:0 A:255.\n        /// </summary>\n        public static Color Red\n        {\n            get\n            {\n                return new Color(4278190335U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:188 G:143 B:143 A:255.\n        /// </summary>\n        public static Color RosyBrown\n        {\n            get\n            {\n                return new Color(4287598524U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:65 G:105 B:225 A:255.\n        /// </summary>\n        public static Color RoyalBlue\n        {\n            get\n            {\n                return new Color(4292962625U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:139 G:69 B:19 A:255.\n        /// </summary>\n        public static Color SaddleBrown\n        {\n            get\n            {\n                return new Color(4279453067U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:250 G:128 B:114 A:255.\n        /// </summary>\n        public static Color Salmon\n        {\n            get\n            {\n                return new Color(4285694202U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:244 G:164 B:96 A:255.\n        /// </summary>\n        public static Color SandyBrown\n        {\n            get\n            {\n                return new Color(4284523764U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:46 G:139 B:87 A:255.\n        /// </summary>\n        public static Color SeaGreen\n        {\n            get\n            {\n                return new Color(4283927342U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:255 G:245 B:238 A:255.\n        /// </summary>\n        public static Color SeaShell\n        {\n            get\n            {\n                return new Color(4293850623U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:160 G:82 B:45 A:255.\n        /// </summary>\n        public static Color Sienna\n        {\n            get\n            {\n                return new Color(4281160352U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:192 G:192 B:192 A:255.\n        /// </summary>\n        public static Color Silver\n        {\n            get\n            {\n                return new Color(4290822336U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:135 G:206 B:235 A:255.\n        /// </summary>\n        public static Color SkyBlue\n        {\n            get\n            {\n                return new Color(4293643911U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:106 G:90 B:205 A:255.\n        /// </summary>\n        public static Color SlateBlue\n        {\n            get\n            {\n                return new Color(4291648106U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:112 G:128 B:144 A:255.\n        /// </summary>\n        public static Color SlateGray\n        {\n            get\n            {\n                return new Color(4287660144U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:255 G:250 B:250 A:255.\n        /// </summary>\n        public static Color Snow\n        {\n            get\n            {\n                return new Color(4294638335U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:0 G:255 B:127 A:255.\n        /// </summary>\n        public static Color SpringGreen\n        {\n            get\n            {\n                return new Color(4286578432U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:70 G:130 B:180 A:255.\n        /// </summary>\n        public static Color SteelBlue\n        {\n            get\n            {\n                return new Color(4290019910U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:210 G:180 B:140 A:255.\n        /// </summary>\n        public static Color Tan\n        {\n            get\n            {\n                return new Color(4287411410U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:0 G:128 B:128 A:255.\n        /// </summary>\n        public static Color Teal\n        {\n            get\n            {\n                return new Color(4286611456U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:216 G:191 B:216 A:255.\n        /// </summary>\n        public static Color Thistle\n        {\n            get\n            {\n                return new Color(4292394968U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:255 G:99 B:71 A:255.\n        /// </summary>\n        public static Color Tomato\n        {\n            get\n            {\n                return new Color(4282868735U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:64 G:224 B:208 A:255.\n        /// </summary>\n        public static Color Turquoise\n        {\n            get\n            {\n                return new Color(4291878976U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:238 G:130 B:238 A:255.\n        /// </summary>\n        public static Color Violet\n        {\n            get\n            {\n                return new Color(4293821166U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:245 G:222 B:179 A:255.\n        /// </summary>\n        public static Color Wheat\n        {\n            get\n            {\n                return new Color(4289978101U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:255 G:255 B:255 A:255.\n        /// </summary>\n        public static Color White\n        {\n            get\n            {\n                return new Color(uint.MaxValue);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:245 G:245 B:245 A:255.\n        /// </summary>\n        public static Color WhiteSmoke\n        {\n            get\n            {\n                return new Color(4294309365U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:255 G:255 B:0 A:255.\n        /// </summary>\n        public static Color Yellow\n        {\n            get\n            {\n                return new Color(4278255615U);\n            }\n        }\n\n        /// <summary>\n        /// Gets a system-defined color with the value R:154 G:205 B:50 A:255.\n        /// </summary>\n        public static Color YellowGreen\n        {\n            get\n            {\n                return new Color(4281519514U);\n            }\n        }\n\n        private Color(uint packedValue)\n        {\n            this.packedValue = packedValue;\n        }\n\n        /// <summary>\n        /// Creates a new instance of the class.\n        /// </summary>\n        /// <param name=\"r\">Red component.</param><param name=\"g\">Green component.</param><param name=\"b\">Blue component.</param>\n        public Color(int r, int g, int b)\n        {\n            if (((r | g | b) & -256) != 0)\n            {\n                r = Color.ClampToByte64((long)r);\n                g = Color.ClampToByte64((long)g);\n                b = Color.ClampToByte64((long)b);\n            }\n            g <<= 8;\n            b <<= 16;\n            this.packedValue = (uint)(r | g | b | -16777216);\n        }\n\n        /// <summary>\n        /// Creates a new instance of the class.\n        /// </summary>\n        /// <param name=\"r\">Red component.</param><param name=\"g\">Green component.</param><param name=\"b\">Blue component.</param><param name=\"a\">Alpha component.</param>\n        public Color(int r, int g, int b, int a)\n        {\n            if (((r | g | b | a) & -256) != 0)\n            {\n                r = Color.ClampToByte32(r);\n                g = Color.ClampToByte32(g);\n                b = Color.ClampToByte32(b);\n                a = Color.ClampToByte32(a);\n            }\n            g <<= 8;\n            b <<= 16;\n            a <<= 24;\n            this.packedValue = (uint)(r | g | b | a);\n        }\n\n        /// <summary>\n        /// Creates a new instance of the class.\n        /// </summary>\n        /// <param name=\"r\">Red component.</param><param name=\"g\">Green component.</param><param name=\"b\">Blue component.</param>\n        public Color(float r, float g, float b)\n        {\n            this.packedValue = Color.PackHelper(r, g, b, 1f);\n        }\n\n        /// <summary>\n        /// Creates a new instance of the class.\n        /// </summary>\n        /// <param name=\"r\">Red component.</param><param name=\"g\">Green component.</param><param name=\"b\">Blue component.</param><param name=\"a\">Alpha component.</param>\n        public Color(float r, float g, float b, float a)\n        {\n            this.packedValue = Color.PackHelper(r, g, b, a);\n        }\n\n        /// <summary>\n        /// Creates a new instance of the class.\n        /// </summary>\n        /// <param name=\"vector\">A three-component color.</param>\n        public Color(Vector3 vector)\n        {\n            this.packedValue = Color.PackHelper(vector.X, vector.Y, vector.Z, 1f);\n        }\n\n        /// <summary>\n        /// Creates a new instance of the class.\n        /// </summary>\n        /// <param name=\"vector\">A four-component color.</param>\n        public Color(Vector4 vector)\n        {\n            this.packedValue = Color.PackHelper(vector.X, vector.Y, vector.Z, vector.W);\n        }\n\n        /// <summary>\n        /// Multiply operator.\n        /// </summary>\n        /// <param name=\"value\">A four-component color</param><param name=\"scale\">Scale factor.</param>\n        public static Color operator *(Color value, float scale)\n        {\n            uint num1 = value.packedValue;\n            uint num2 = (uint)(byte)num1;\n            uint num3 = (uint)(byte)(num1 >> 8);\n            uint num4 = (uint)(byte)(num1 >> 16);\n            uint num5 = (uint)(byte)(num1 >> 24);\n            scale *= 65536f;\n            uint num6 = (double)scale >= 0.0 ? ((double)scale <= 16777215.0 ? (uint)scale : 16777215U) : 0U;\n            uint num7 = num2 * num6 >> 16;\n            uint num8 = num3 * num6 >> 16;\n            uint num9 = num4 * num6 >> 16;\n            uint num10 = num5 * num6 >> 16;\n            if (num7 > (uint)byte.MaxValue)\n                num7 = (uint)byte.MaxValue;\n            if (num8 > (uint)byte.MaxValue)\n                num8 = (uint)byte.MaxValue;\n            if (num9 > (uint)byte.MaxValue)\n                num9 = (uint)byte.MaxValue;\n            if (num10 > (uint)byte.MaxValue)\n                num10 = (uint)byte.MaxValue;\n            Color color;\n            color.packedValue = (uint)((int)num7 | (int)num8 << 8 | (int)num9 << 16 | (int)num10 << 24);\n            return color;\n        }\n\n        /// <summary>\n        /// Equality operator.\n        /// </summary>\n        /// <param name=\"a\">A four-component color.</param><param name=\"b\">A four-component color.</param>\n        public static bool operator ==(Color a, Color b)\n        {\n            return a.Equals(b);\n        }\n\n        /// <summary>\n        /// Equality operator for Testing two color objects to see if they are equal.\n        /// </summary>\n        /// <param name=\"a\">A four-component color.</param><param name=\"b\">A four-component color.</param>\n        public static bool operator !=(Color a, Color b)\n        {\n            return !a.Equals(b);\n        }\n\n        void IPackedVector.PackFromVector4(Vector4 vector)\n        {\n            this.packedValue = Color.PackHelper(vector.X, vector.Y, vector.Z, vector.W);\n        }\n\n        /// <summary>\n        /// Convert a non premultipled color into color data that contains alpha.\n        /// </summary>\n        /// <param name=\"vector\">A four-component color.</param>\n        public static Color FromNonPremultiplied(Vector4 vector)\n        {\n            Color color;\n            color.packedValue = Color.PackHelper(vector.X * vector.W, vector.Y * vector.W, vector.Z * vector.W, vector.W);\n            return color;\n        }\n\n        /// <summary>\n        /// Converts a non-premultipled alpha color to a color that contains premultiplied alpha.\n        /// </summary>\n        /// <param name=\"r\">Red component.</param><param name=\"g\">Green component.</param><param name=\"b\">Blue component.</param><param name=\"a\">Alpha component.</param>\n        public static Color FromNonPremultiplied(int r, int g, int b, int a)\n        {\n            r = Color.ClampToByte64((long)r * (long)a / (long)byte.MaxValue);\n            g = Color.ClampToByte64((long)g * (long)a / (long)byte.MaxValue);\n            b = Color.ClampToByte64((long)b * (long)a / (long)byte.MaxValue);\n            a = Color.ClampToByte32(a);\n            g <<= 8;\n            b <<= 16;\n            a <<= 24;\n            Color color;\n            color.packedValue = (uint)(r | g | b | a);\n            return color;\n        }\n\n        private static uint PackHelper(float vectorX, float vectorY, float vectorZ, float vectorW)\n        {\n            return PackUtils.PackUNorm((float)byte.MaxValue, vectorX) | PackUtils.PackUNorm((float)byte.MaxValue, vectorY) << 8 | PackUtils.PackUNorm((float)byte.MaxValue, vectorZ) << 16 | PackUtils.PackUNorm((float)byte.MaxValue, vectorW) << 24;\n        }\n\n        private static int ClampToByte32(int value)\n        {\n            if (value < 0)\n                return 0;\n            if (value > (int)byte.MaxValue)\n                return (int)byte.MaxValue;\n            else\n                return value;\n        }\n\n        private static int ClampToByte64(long value)\n        {\n            if (value < 0L)\n                return 0;\n            if (value > (long)byte.MaxValue)\n                return (int)byte.MaxValue;\n            else\n                return (int)value;\n        }\n\n        /// <summary>\n        /// Gets a three-component vector representation for this object.\n        /// </summary>\n        public Vector3 ToVector3()\n        {\n            Vector3 vector3;\n            vector3.X = PackUtils.UnpackUNorm((uint)byte.MaxValue, this.packedValue);\n            vector3.Y = PackUtils.UnpackUNorm((uint)byte.MaxValue, this.packedValue >> 8);\n            vector3.Z = PackUtils.UnpackUNorm((uint)byte.MaxValue, this.packedValue >> 16);\n            return vector3;\n        }\n\n        /// <summary>\n        /// Gets a four-component vector representation for this object.\n        /// </summary>\n        public Vector4 ToVector4()\n        {\n            Vector4 vector4;\n            vector4.X = PackUtils.UnpackUNorm((uint)byte.MaxValue, this.packedValue);\n            vector4.Y = PackUtils.UnpackUNorm((uint)byte.MaxValue, this.packedValue >> 8);\n            vector4.Z = PackUtils.UnpackUNorm((uint)byte.MaxValue, this.packedValue >> 16);\n            vector4.W = PackUtils.UnpackUNorm((uint)byte.MaxValue, this.packedValue >> 24);\n            return vector4;\n        }\n\n        /// <summary>\n        /// Linearly interpolate a color.\n        /// </summary>\n        /// <param name=\"value1\">A four-component color.</param><param name=\"value2\">A four-component color.</param><param name=\"amount\">Interpolation factor.</param>\n        public static Color Lerp(Color value1, Color value2, float amount)\n        {\n            uint num1 = value1.packedValue;\n            uint num2 = value2.packedValue;\n            int num3 = (int)(byte)num1;\n            int num4 = (int)(byte)(num1 >> 8);\n            int num5 = (int)(byte)(num1 >> 16);\n            int num6 = (int)(byte)(num1 >> 24);\n            int num7 = (int)(byte)num2;\n            int num8 = (int)(byte)(num2 >> 8);\n            int num9 = (int)(byte)(num2 >> 16);\n            int num10 = (int)(byte)(num2 >> 24);\n            int num11 = (int)PackUtils.PackUNorm(65536f, amount);\n            int num12 = num3 + ((num7 - num3) * num11 >> 16);\n            int num13 = num4 + ((num8 - num4) * num11 >> 16);\n            int num14 = num5 + ((num9 - num5) * num11 >> 16);\n            int num15 = num6 + ((num10 - num6) * num11 >> 16);\n            Color color;\n            color.packedValue = (uint)(num12 | num13 << 8 | num14 << 16 | num15 << 24);\n            return color;\n        }\n\n        /// <summary>\n        /// Multiply each color component by the scale factor.\n        /// </summary>\n        /// <param name=\"value\">The source, four-component color.</param><param name=\"scale\">The scale factor.</param>\n        public static Color Multiply(Color value, float scale)\n        {\n            uint num1 = value.packedValue;\n            uint num2 = (uint)(byte)num1;\n            uint num3 = (uint)(byte)(num1 >> 8);\n            uint num4 = (uint)(byte)(num1 >> 16);\n            uint num5 = (uint)(byte)(num1 >> 24);\n            scale *= 65536f;\n            uint num6 = (double)scale >= 0.0 ? ((double)scale <= 16777215.0 ? (uint)scale : 16777215U) : 0U;\n            uint num7 = num2 * num6 >> 16;\n            uint num8 = num3 * num6 >> 16;\n            uint num9 = num4 * num6 >> 16;\n            uint num10 = num5 * num6 >> 16;\n            if (num7 > (uint)byte.MaxValue)\n                num7 = (uint)byte.MaxValue;\n            if (num8 > (uint)byte.MaxValue)\n                num8 = (uint)byte.MaxValue;\n            if (num9 > (uint)byte.MaxValue)\n                num9 = (uint)byte.MaxValue;\n            if (num10 > (uint)byte.MaxValue)\n                num10 = (uint)byte.MaxValue;\n            Color color;\n            color.packedValue = (uint)((int)num7 | (int)num8 << 8 | (int)num9 << 16 | (int)num10 << 24);\n            return color;\n        }\n\n        /// <summary>\n        /// Gets a string representation of this object.\n        /// </summary>\n        public override string ToString()\n        {\n            return string.Format((IFormatProvider)CultureInfo.CurrentCulture, \"{{R:{0} G:{1} B:{2} A:{3}}}\", (object)this.R, (object)this.G, (object)this.B, (object)this.A);\n        }\n\n        /// <summary>\n        /// Serves as a hash function for a particular type.\n        /// </summary>\n        public override int GetHashCode()\n        {\n            return this.packedValue.GetHashCode();\n        }\n\n        /// <summary>\n        /// Test an instance of a color object to see if it is equal to this object.\n        /// </summary>\n        /// <param name=\"obj\">A color object.</param>\n        public override bool Equals(object obj)\n        {\n            if (obj is Color)\n                return this.Equals((Color)obj);\n            else\n                return false;\n        }\n\n        /// <summary>\n        /// Test a color to see if it is equal to the color in this instance.\n        /// </summary>\n        /// <param name=\"other\">A four-component color.</param>\n        public bool Equals(Color other)\n        {\n            return this.packedValue.Equals(other.packedValue);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWarsMath/ContainmentType.cs",
    "content": "﻿namespace MinerWarsMath\n{\n    /// <summary>\n    /// Indicates the extent to which bounding volumes intersect or contain one another.\n    /// </summary>\n    /// <param name=\"Contains\">Indicates that one bounding volume completely contains the other.</param><param name=\"Disjoint\">Indicates there is no overlap between the bounding volumes.</param><param name=\"Intersects\">Indicates that the bounding volumes partially overlap.</param>\n    public enum ContainmentType\n    {\n        Disjoint,\n        Contains,\n        Intersects,\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWarsMath/Curve.cs",
    "content": "﻿using System;\nusing System.ComponentModel;\n\nnamespace MinerWarsMath\n{\n    /// <summary>\n    /// Stores an arbitrary collection of 2D CurveKey points, and provides methods for evaluating features of the curve they define.\n    /// </summary>\n    [Serializable]\n    public class Curve\n    {\n        private CurveKeyCollection keys = new CurveKeyCollection();\n        private CurveLoopType preLoop;\n        private CurveLoopType postLoop;\n\n        /// <summary>\n        /// Specifies how to handle weighting values that are less than the first control point in the curve.\n        /// </summary>\n        public CurveLoopType PreLoop\n        {\n            get\n            {\n                return this.preLoop;\n            }\n            set\n            {\n                this.preLoop = value;\n            }\n        }\n\n        /// <summary>\n        /// Specifies how to handle weighting values that are greater than the last control point in the curve.\n        /// </summary>\n        public CurveLoopType PostLoop\n        {\n            get\n            {\n                return this.postLoop;\n            }\n            set\n            {\n                this.postLoop = value;\n            }\n        }\n\n        /// <summary>\n        /// The points that make up the curve.\n        /// </summary>\n        public CurveKeyCollection Keys\n        {\n            get\n            {\n                return this.keys;\n            }\n        }\n\n        /// <summary>\n        /// Gets a value indicating whether the curve is constant.\n        /// </summary>\n        public bool IsConstant\n        {\n            get\n            {\n                return this.keys.Count <= 1;\n            }\n        }\n\n        /// <summary>\n        /// Creates a copy of the Curve.\n        /// </summary>\n        public Curve Clone()\n        {\n            return new Curve()\n            {\n                preLoop = this.preLoop,\n                postLoop = this.postLoop,\n                keys = this.keys.Clone()\n            };\n        }\n\n        /// <summary>\n        /// Computes both the TangentIn and the TangentOut for a CurveKey specified by its index.\n        /// </summary>\n        /// <param name=\"keyIndex\">The index of the CurveKey for which to compute tangents (in the Keys collection of the Curve).</param><param name=\"tangentType\">The type of tangents to compute (one of the types specified in the CurveTangent enumeration).</param>\n        public void ComputeTangent(int keyIndex, CurveTangent tangentType)\n        {\n            this.ComputeTangent(keyIndex, tangentType, tangentType);\n        }\n\n        /// <summary>\n        /// Computes a specified type of TangentIn and a specified type of TangentOut for a given CurveKey.\n        /// </summary>\n        /// <param name=\"keyIndex\">The index of the CurveKey for which to compute tangents (in the Keys collection of the Curve).</param><param name=\"tangentInType\">The type of TangentIn to compute (one of the types specified in the CurveTangent enumeration).</param><param name=\"tangentOutType\">The type of TangentOut to compute (one of the types specified in the CurveTangent enumeration).</param>\n        public void ComputeTangent(int keyIndex, CurveTangent tangentInType, CurveTangent tangentOutType)\n        {\n            if (this.keys.Count <= keyIndex || keyIndex < 0)\n                throw new ArgumentOutOfRangeException(\"keyIndex\");\n            CurveKey curveKey = this.Keys[keyIndex];\n            double num1;\n            float num2 = (float)(num1 = (double)curveKey.Position);\n            float num3 = (float)num1;\n            float num4 = (float)num1;\n            double num5;\n            float num6 = (float)(num5 = (double)curveKey.Value);\n            float num7 = (float)num5;\n            float num8 = (float)num5;\n            if (keyIndex > 0)\n            {\n                num4 = this.Keys[keyIndex - 1].Position;\n                num8 = this.Keys[keyIndex - 1].Value;\n            }\n            if (keyIndex + 1 < this.keys.Count)\n            {\n                num2 = this.Keys[keyIndex + 1].Position;\n                num6 = this.Keys[keyIndex + 1].Value;\n            }\n            if (tangentInType == CurveTangent.Smooth)\n            {\n                float num9 = num2 - num4;\n                float num10 = num6 - num8;\n                curveKey.TangentIn = (double)Math.Abs(num10) >= 1.19209289550781E-07 ? num10 * Math.Abs(num4 - num3) / num9 : 0.0f;\n            }\n            else\n                curveKey.TangentIn = tangentInType != CurveTangent.Linear ? 0.0f : num7 - num8;\n            if (tangentOutType == CurveTangent.Smooth)\n            {\n                float num9 = num2 - num4;\n                float num10 = num6 - num8;\n                if ((double)Math.Abs(num10) < 1.19209289550781E-07)\n                    curveKey.TangentOut = 0.0f;\n                else\n                    curveKey.TangentOut = num10 * Math.Abs(num2 - num3) / num9;\n            }\n            else if (tangentOutType == CurveTangent.Linear)\n                curveKey.TangentOut = num6 - num7;\n            else\n                curveKey.TangentOut = 0.0f;\n        }\n\n        /// <summary>\n        /// Computes all tangents for all CurveKeys in this Curve, using a specified tangent type for both TangentIn and TangentOut.\n        /// </summary>\n        /// <param name=\"tangentType\">The type of TangentOut and TangentIn to compute (one of the types specified in the CurveTangent enumeration).</param>\n        public void ComputeTangents(CurveTangent tangentType)\n        {\n            this.ComputeTangents(tangentType, tangentType);\n        }\n\n        /// <summary>\n        /// Computes all tangents for all CurveKeys in this Curve, using different tangent types for TangentOut and TangentIn.\n        /// </summary>\n        /// <param name=\"tangentInType\">The type of TangentIn to compute (one of the types specified in the CurveTangent enumeration).</param><param name=\"tangentOutType\">The type of TangentOut to compute (one of the types specified in the CurveTangent enumeration).</param>\n        public void ComputeTangents(CurveTangent tangentInType, CurveTangent tangentOutType)\n        {\n            for (int keyIndex = 0; keyIndex < this.Keys.Count; ++keyIndex)\n                this.ComputeTangent(keyIndex, tangentInType, tangentOutType);\n        }\n\n        /// <summary>\n        /// Finds the value at a position on the Curve.\n        /// </summary>\n        /// <param name=\"position\">The position on the Curve.</param>\n        public float Evaluate(float position)\n        {\n            if (this.keys.Count == 0)\n                return 0.0f;\n            if (this.keys.Count == 1)\n                return this.keys[0].internalValue;\n            CurveKey curveKey1 = this.keys[0];\n            CurveKey curveKey2 = this.keys[this.keys.Count - 1];\n            float t = position;\n            float num1 = 0.0f;\n            if ((double)t < (double)curveKey1.position)\n            {\n                if (this.preLoop == CurveLoopType.Constant)\n                    return curveKey1.internalValue;\n                if (this.preLoop == CurveLoopType.Linear)\n                    return curveKey1.internalValue - curveKey1.tangentIn * (curveKey1.position - t);\n                if (!this.keys.IsCacheAvailable)\n                    this.keys.ComputeCacheValues();\n                float num2 = this.CalcCycle(t);\n                float num3 = t - (curveKey1.position + num2 * this.keys.TimeRange);\n                if (this.preLoop == CurveLoopType.Cycle)\n                    t = curveKey1.position + num3;\n                else if (this.preLoop == CurveLoopType.CycleOffset)\n                {\n                    t = curveKey1.position + num3;\n                    num1 = (curveKey2.internalValue - curveKey1.internalValue) * num2;\n                }\n                else\n                    t = ((int)num2 & 1) != 0 ? curveKey2.position - num3 : curveKey1.position + num3;\n            }\n            else if ((double)curveKey2.position < (double)t)\n            {\n                if (this.postLoop == CurveLoopType.Constant)\n                    return curveKey2.internalValue;\n                if (this.postLoop == CurveLoopType.Linear)\n                    return curveKey2.internalValue - curveKey2.tangentOut * (curveKey2.position - t);\n                if (!this.keys.IsCacheAvailable)\n                    this.keys.ComputeCacheValues();\n                float num2 = this.CalcCycle(t);\n                float num3 = t - (curveKey1.position + num2 * this.keys.TimeRange);\n                if (this.postLoop == CurveLoopType.Cycle)\n                    t = curveKey1.position + num3;\n                else if (this.postLoop == CurveLoopType.CycleOffset)\n                {\n                    t = curveKey1.position + num3;\n                    num1 = (curveKey2.internalValue - curveKey1.internalValue) * num2;\n                }\n                else\n                    t = ((int)num2 & 1) != 0 ? curveKey2.position - num3 : curveKey1.position + num3;\n            }\n            CurveKey k0 = (CurveKey)null;\n            CurveKey k1 = (CurveKey)null;\n            float segment = this.FindSegment(t, ref k0, ref k1);\n            return num1 + Curve.Hermite(k0, k1, segment);\n        }\n\n        private float CalcCycle(float t)\n        {\n            float num = (t - this.keys[0].position) * this.keys.InvTimeRange;\n            if ((double)num < 0.0)\n                --num;\n            return (float)(int)num;\n        }\n\n        private float FindSegment(float t, ref CurveKey k0, ref CurveKey k1)\n        {\n            float num1 = t;\n            k0 = this.keys[0];\n            for (int index = 1; index < this.keys.Count; ++index)\n            {\n                k1 = this.keys[index];\n                if ((double)k1.position >= (double)t)\n                {\n                    double num2 = (double)k0.position;\n                    double num3 = (double)k1.position;\n                    double num4 = (double)t;\n                    double num5 = num3 - num2;\n                    num1 = 0.0f;\n                    if (num5 > 0.0 / 1.0)\n                    {\n                        num1 = (float)((num4 - num2) / num5);\n                        break;\n                    }\n                    else\n                        break;\n                }\n                else\n                    k0 = k1;\n            }\n            return num1;\n        }\n\n        private static float Hermite(CurveKey k0, CurveKey k1, float t)\n        {\n            if (k0.Continuity == CurveContinuity.Step)\n            {\n                if ((double)t >= 1.0)\n                    return k1.internalValue;\n                else\n                    return k0.internalValue;\n            }\n            else\n            {\n                float num1 = t * t;\n                float num2 = num1 * t;\n                float num3 = k0.internalValue;\n                float num4 = k1.internalValue;\n                float num5 = k0.tangentOut;\n                float num6 = k1.tangentIn;\n                return (float)((double)num3 * (2.0 * (double)num2 - 3.0 * (double)num1 + 1.0) + (double)num4 * (-2.0 * (double)num2 + 3.0 * (double)num1) + (double)num5 * ((double)num2 - 2.0 * (double)num1 + (double)t) + (double)num6 * ((double)num2 - (double)num1));\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWarsMath/CurveContinuity.cs",
    "content": "﻿namespace MinerWarsMath\n{\n    /// <summary>\n    /// Defines the continuity of CurveKeys on a Curve.\n    /// </summary>\n    /// <param name=\"Smooth\">Interpolation can be used between this CurveKey and the next.</param><param name=\"Step\">Interpolation cannot be used between this CurveKey and the next. Specifying a position between the two points returns this point.</param>\n    public enum CurveContinuity\n    {\n        Smooth,\n        Step,\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWarsMath/CurveKey.cs",
    "content": "﻿using System;\nusing System.ComponentModel;\n\nnamespace MinerWarsMath\n{\n    /// <summary>\n    /// Represents a point in a multi-point curve.\n    /// </summary>\n    [TypeConverter(typeof(ExpandableObjectConverter))]\n    [Serializable]\n    public class CurveKey : IEquatable<CurveKey>, IComparable<CurveKey>\n    {\n        internal float position;\n        internal float internalValue;\n        internal float tangentOut;\n        internal float tangentIn;\n        internal CurveContinuity continuity;\n\n        /// <summary>\n        /// Position of the CurveKey in the curve.\n        /// </summary>\n        public float Position\n        {\n            get\n            {\n                return this.position;\n            }\n        }\n\n        /// <summary>\n        /// Describes the value of this point.\n        /// </summary>\n        public float Value\n        {\n            get\n            {\n                return this.internalValue;\n            }\n            set\n            {\n                this.internalValue = value;\n            }\n        }\n\n        /// <summary>\n        /// Describes the tangent when approaching this point from the previous point in the curve.\n        /// </summary>\n        public float TangentIn\n        {\n            get\n            {\n                return this.tangentIn;\n            }\n            set\n            {\n                this.tangentIn = value;\n            }\n        }\n\n        /// <summary>\n        /// Describes the tangent when leaving this point to the next point in the curve.\n        /// </summary>\n        public float TangentOut\n        {\n            get\n            {\n                return this.tangentOut;\n            }\n            set\n            {\n                this.tangentOut = value;\n            }\n        }\n\n        /// <summary>\n        /// Describes whether the segment between this point and the next point in the curve is discrete or continuous.\n        /// </summary>\n        public CurveContinuity Continuity\n        {\n            get\n            {\n                return this.continuity;\n            }\n            set\n            {\n                this.continuity = value;\n            }\n        }\n\n        /// <summary>\n        /// Initializes a new instance of CurveKey.\n        /// </summary>\n        /// <param name=\"position\">Position in the curve.</param><param name=\"value\">Value of the control point.</param>\n        public CurveKey(float position, float value)\n        {\n            this.position = position;\n            this.internalValue = value;\n        }\n\n        /// <summary>\n        /// Initializes a new instance of CurveKey.\n        /// </summary>\n        /// <param name=\"position\">Position in the curve.</param><param name=\"value\">Value of the control point.</param><param name=\"tangentIn\">Tangent approaching point from the previous point in the curve.</param><param name=\"tangentOut\">Tangent leaving point toward next point in the curve.</param>\n        public CurveKey(float position, float value, float tangentIn, float tangentOut)\n        {\n            this.position = position;\n            this.internalValue = value;\n            this.tangentIn = tangentIn;\n            this.tangentOut = tangentOut;\n        }\n\n        /// <summary>\n        /// Initializes a new instance of CurveKey.\n        /// </summary>\n        /// <param name=\"position\">Position in the curve.</param><param name=\"value\">Value of the control point.</param><param name=\"tangentIn\">Tangent approaching point from the previous point in the curve.</param><param name=\"tangentOut\">Tangent leaving point toward next point in the curve.</param><param name=\"continuity\">Enum indicating whether the curve is discrete or continuous.</param>\n        public CurveKey(float position, float value, float tangentIn, float tangentOut, CurveContinuity continuity)\n        {\n            this.position = position;\n            this.internalValue = value;\n            this.tangentIn = tangentIn;\n            this.tangentOut = tangentOut;\n            this.continuity = continuity;\n        }\n\n        /// <summary>\n        /// Determines whether two CurveKey instances are equal.\n        /// </summary>\n        /// <param name=\"a\">CurveKey on the left of the equal sign.</param><param name=\"b\">CurveKey on the right of the equal sign.</param>\n        public static bool operator ==(CurveKey a, CurveKey b)\n        {\n            bool flag1 = null == (object)a;\n            bool flag2 = null == (object)b;\n            return flag1 || flag2 ? flag1 == flag2 : a.Equals(b);\n        }\n\n        /// <summary>\n        /// Determines whether two CurveKey instances are not equal.\n        /// </summary>\n        /// <param name=\"a\">CurveKey on the left of the equal sign.</param><param name=\"b\">CurveKey on the right of the equal sign.</param>\n        public static bool operator !=(CurveKey a, CurveKey b)\n        {\n            bool flag1 = a == (CurveKey)null;\n            bool flag2 = b == (CurveKey)null;\n            return flag1 || flag2 ? flag1 != flag2 : (double)a.position != (double)b.position || (double)a.internalValue != (double)b.internalValue || ((double)a.tangentIn != (double)b.tangentIn || (double)a.tangentOut != (double)b.tangentOut) || a.continuity != b.continuity;\n        }\n\n        /// <summary>\n        /// Creates a copy of the CurveKey.\n        /// </summary>\n        public CurveKey Clone()\n        {\n            return new CurveKey(this.position, this.internalValue, this.tangentIn, this.tangentOut, this.continuity);\n        }\n\n        /// <summary>\n        /// Determines whether the specified Object is equal to the CurveKey.\n        /// </summary>\n        /// <param name=\"other\">The Object to compare with the current CurveKey.</param>\n        public bool Equals(CurveKey other)\n        {\n            if (other != (CurveKey)null && (double)other.position == (double)this.position && ((double)other.internalValue == (double)this.internalValue && (double)other.tangentIn == (double)this.tangentIn) && (double)other.tangentOut == (double)this.tangentOut)\n                return other.continuity == this.continuity;\n            else\n                return false;\n        }\n\n        /// <summary>\n        /// Returns a value that indicates whether the current instance is equal to a specified object.\n        /// </summary>\n        /// <param name=\"obj\">Object with which to make the comparison.</param>\n        public override bool Equals(object obj)\n        {\n            return this.Equals(obj as CurveKey);\n        }\n\n        /// <summary>\n        /// Returns the hash code for this instance.\n        /// </summary>\n        public override int GetHashCode()\n        {\n            return this.position.GetHashCode() + this.internalValue.GetHashCode() + this.tangentIn.GetHashCode() + this.tangentOut.GetHashCode() + this.continuity.GetHashCode();\n        }\n\n        /// <summary>\n        /// Compares this instance to another CurveKey and returns an indication of their relative values.\n        /// </summary>\n        /// <param name=\"other\">CurveKey to compare to.</param>\n        public int CompareTo(CurveKey other)\n        {\n            if ((double)this.position == (double)other.position)\n                return 0;\n            return (double)this.position >= (double)other.position ? 1 : -1;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWarsMath/CurveKeyCollection.cs",
    "content": "﻿using System;\nusing System.Collections;\nusing System.Collections.Generic;\nusing System.ComponentModel;\n\nnamespace MinerWarsMath\n{\n    /// <summary>\n    /// Contains the CurveKeys making up a Curve.\n    /// </summary>\n    [TypeConverter(typeof(ExpandableObjectConverter))]\n    [Serializable]\n    public class CurveKeyCollection : ICollection<CurveKey>, IEnumerable<CurveKey>, IEnumerable\n    {\n        private List<CurveKey> Keys = new List<CurveKey>();\n        internal bool IsCacheAvailable = true;\n        internal float TimeRange;\n        internal float InvTimeRange;\n\n        /// <summary>\n        /// Gets or sets the element at the specified index.\n        /// </summary>\n        /// <param name=\"index\">The array index of the element.</param>\n        public CurveKey this[int index]\n        {\n            get\n            {\n                return this.Keys[index];\n            }\n            set\n            {\n                if (value == (CurveKey)null)\n                    throw new ArgumentNullException();\n                if ((double)this.Keys[index].Position == (double)value.Position)\n                {\n                    this.Keys[index] = value;\n                }\n                else\n                {\n                    this.Keys.RemoveAt(index);\n                    this.Add(value);\n                }\n            }\n        }\n\n        /// <summary>\n        /// Gets the number of elements contained in the CurveKeyCollection.\n        /// </summary>\n        public int Count\n        {\n            get\n            {\n                return this.Keys.Count;\n            }\n        }\n\n        /// <summary>\n        /// Returns a value indicating whether the CurveKeyCollection is read-only.\n        /// </summary>\n        public bool IsReadOnly\n        {\n            get\n            {\n                return false;\n            }\n        }\n\n        /// <summary>\n        /// Determines the index of a CurveKey in the CurveKeyCollection.\n        /// </summary>\n        /// <param name=\"item\">CurveKey to locate in the CurveKeyCollection.</param>\n        public int IndexOf(CurveKey item)\n        {\n            return this.Keys.IndexOf(item);\n        }\n\n        /// <summary>\n        /// Removes the CurveKey at the specified index.\n        /// </summary>\n        /// <param name=\"index\">The zero-based index of the item to remove.</param>\n        public void RemoveAt(int index)\n        {\n            this.Keys.RemoveAt(index);\n            this.IsCacheAvailable = false;\n        }\n\n        /// <summary>\n        /// Adds a CurveKey to the CurveKeyCollection.\n        /// </summary>\n        /// <param name=\"item\">The CurveKey to add.</param>\n        public void Add(CurveKey item)\n        {\n            if (item == (CurveKey)null)\n                throw new ArgumentNullException();\n            int index = this.Keys.BinarySearch(item);\n            if (index >= 0)\n            {\n                while (index < this.Keys.Count && (double)item.Position == (double)this.Keys[index].Position)\n                    ++index;\n            }\n            else\n                index = ~index;\n            this.Keys.Insert(index, item);\n            this.IsCacheAvailable = false;\n        }\n\n        /// <summary>\n        /// Removes all CurveKeys from the CurveKeyCollection.\n        /// </summary>\n        public void Clear()\n        {\n            this.Keys.Clear();\n            this.TimeRange = this.InvTimeRange = 0.0f;\n            this.IsCacheAvailable = false;\n        }\n\n        /// <summary>\n        /// Determines whether the CurveKeyCollection contains a specific CurveKey.\n        /// </summary>\n        /// <param name=\"item\">true if the CurveKey is found in the CurveKeyCollection; false otherwise.</param>\n        public bool Contains(CurveKey item)\n        {\n            return this.Keys.Contains(item);\n        }\n\n        /// <summary>\n        /// Copies the CurveKeys of the CurveKeyCollection to an array, starting at the array index provided.\n        /// </summary>\n        /// <param name=\"array\">The destination of the CurveKeys copied from CurveKeyCollection. The array must have zero-based indexing.</param><param name=\"arrayIndex\">The zero-based index in the array to start copying from.</param>\n        public void CopyTo(CurveKey[] array, int arrayIndex)\n        {\n            this.Keys.CopyTo(array, arrayIndex);\n            this.IsCacheAvailable = false;\n        }\n\n        /// <summary>\n        /// Removes the first occurrence of a specific CurveKey from the CurveKeyCollection.\n        /// </summary>\n        /// <param name=\"item\">The CurveKey to remove from the CurveKeyCollection.</param>\n        public bool Remove(CurveKey item)\n        {\n            this.IsCacheAvailable = false;\n            return this.Keys.Remove(item);\n        }\n\n        /// <summary>\n        /// Returns an enumerator that iterates through the CurveKeyCollection.\n        /// </summary>\n        public IEnumerator<CurveKey> GetEnumerator()\n        {\n            return (IEnumerator<CurveKey>)this.Keys.GetEnumerator();\n        }\n\n        IEnumerator IEnumerable.GetEnumerator()\n        {\n            return this.Keys.GetEnumerator();\n        }\n\n        /// <summary>\n        /// Creates a copy of the CurveKeyCollection.\n        /// </summary>\n        public CurveKeyCollection Clone()\n        {\n            return new CurveKeyCollection()\n            {\n                Keys = new List<CurveKey>((IEnumerable<CurveKey>)this.Keys),\n                InvTimeRange = this.InvTimeRange,\n                TimeRange = this.TimeRange,\n                IsCacheAvailable = true\n            };\n        }\n\n        internal void ComputeCacheValues()\n        {\n            this.TimeRange = this.InvTimeRange = 0.0f;\n            if (this.Keys.Count > 1)\n            {\n                this.TimeRange = this.Keys[this.Keys.Count - 1].Position - this.Keys[0].Position;\n                if ((double)this.TimeRange > 1.40129846432482E-45)\n                    this.InvTimeRange = 1f / this.TimeRange;\n            }\n            this.IsCacheAvailable = true;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWarsMath/CurveLoopType.cs",
    "content": "﻿namespace MinerWarsMath\n{\n    /// <summary>\n    /// Defines how the value of a Curve will be determined for positions before the first point on the Curve or after the last point on the Curve.\n    /// </summary>\n    /// <param name=\"Constant\">The Curve will evaluate to its first key for positions before the first point in the Curve and to the last key for positions after the last point.</param><param name=\"Cycle\">Positions specified past the ends of the curve will wrap around to the opposite side of the Curve.</param><param name=\"CycleOffset\">Positions specified past the ends of the curve will wrap around to the opposite side of the Curve. The value will be offset by the difference between the values of the first and last CurveKey multiplied by the number of times the position wraps around. If the position is before the first point in the Curve, the difference will be subtracted from its value; otherwise, the difference will be added.</param><param name=\"Linear\">Linear interpolation will be performed to determine the value.</param><param name=\"Oscillate\">Positions specified past the ends of the Curve act as an offset from the same side of the Curve toward the opposite side.</param>\n    public enum CurveLoopType\n    {\n        Constant,\n        Cycle,\n        CycleOffset,\n        Oscillate,\n        Linear,\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWarsMath/CurveTangent.cs",
    "content": "﻿namespace MinerWarsMath\n{\n    /// <summary>\n    /// Specifies different tangent types to be calculated for CurveKey points in a Curve.\n    /// </summary>\n    /// <param name=\"Flat\">A Flat tangent always has a value equal to zero.</param><param name=\"Linear\">A Linear tangent at a CurveKey is equal to the difference between its Value and the Value of the preceding or succeeding CurveKey. For example, in Curve MyCurve, where i is greater than zero and (i + 1) is less than the total number of CurveKeys in MyCurve, the linear TangentIn of MyCurve.Keys[i] is equal to: ( MyCurve.Keys[i].Value - MyCurve.Keys[i - 1].Value ) Similarly, the linear TangentOut is equal to: ( MyCurve.Keys[i + 1].Value - MyCurve.Keys[i].Value.)</param><param name=\"Smooth\">A Smooth tangent smooths the inflection between a TangentIn and TangentOut by taking into account the values of both neighbors of the CurveKey. The smooth TangentIn of MyCurve.Keys[i] is equal to: ( ( MyCurve.Keys[i + 1].Value - MyCurve.Keys[i - 1].Value ) * ( ( MyCurve.Keys[i].Position - MyCurve.Keys[i - 1].Position ) / ( MyCurve.Keys[i + 1].Position - MyCurve.Keys[i-1].Position ) ) ) Similarly, the smooth TangentOut is equal to: ( ( MyCurve.Keys[i + 1].Value - MyCurve.Keys[i - 1].Value ) * ( ( MyCurve.Keys[i + 1].Position - MyCurve.Keys[i].Position ) / ( MyCurve.Keys[i + 1].Position - MyCurve.Keys[i - 1].Position ) ) )</param>\n    public enum CurveTangent\n    {\n        Flat,\n        Linear,\n        Smooth,\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWarsMath/Gjk.cs",
    "content": "﻿using System;\n\nnamespace MinerWarsMath\n{\n    [Serializable]\n    internal class Gjk\n    {\n        private static int[] BitsToIndices = new int[16]\n    {\n      0,\n      1,\n      2,\n      17,\n      3,\n      25,\n      26,\n      209,\n      4,\n      33,\n      34,\n      273,\n      35,\n      281,\n      282,\n      2257\n    };\n        private Vector3 closestPoint;\n        private Vector3[] y;\n        private float[] yLengthSq;\n        private Vector3[][] edges;\n        private float[][] edgeLengthSq;\n        private float[][] det;\n        private int simplexBits;\n        private float maxLengthSq;\n\n        public bool FullSimplex\n        {\n            get\n            {\n                return this.simplexBits == 15;\n            }\n        }\n\n        public float MaxLengthSquared\n        {\n            get\n            {\n                return this.maxLengthSq;\n            }\n        }\n\n        public Vector3 ClosestPoint\n        {\n            get\n            {\n                return this.closestPoint;\n            }\n        }\n\n        static Gjk()\n        {\n        }\n\n        public Gjk()\n        {\n            this.y = new Vector3[4];\n            this.yLengthSq = new float[4];\n            this.edges = new Vector3[4][]\n      {\n        new Vector3[4],\n        new Vector3[4],\n        new Vector3[4],\n        new Vector3[4]\n      };\n            this.edgeLengthSq = new float[4][]\n      {\n        new float[4],\n        new float[4],\n        new float[4],\n        new float[4]\n      };\n            this.det = new float[16][];\n            for (int index = 0; index < 16; ++index)\n                this.det[index] = new float[4];\n        }\n\n        public void Reset()\n        {\n            this.simplexBits = 0;\n            this.maxLengthSq = 0.0f;\n        }\n\n        public bool AddSupportPoint(ref Vector3 newPoint)\n        {\n            int index1 = (Gjk.BitsToIndices[this.simplexBits ^ 15] & 7) - 1;\n            this.y[index1] = newPoint;\n            this.yLengthSq[index1] = newPoint.LengthSquared();\n            int num = Gjk.BitsToIndices[this.simplexBits];\n            while (num != 0)\n            {\n                int index2 = (num & 7) - 1;\n                Vector3 vector3 = this.y[index2] - newPoint;\n                this.edges[index2][index1] = vector3;\n                this.edges[index1][index2] = -vector3;\n                this.edgeLengthSq[index1][index2] = this.edgeLengthSq[index2][index1] = vector3.LengthSquared();\n                num >>= 3;\n            }\n            this.UpdateDeterminant(index1);\n            return this.UpdateSimplex(index1);\n        }\n\n        private static float Dot(ref Vector3 a, ref Vector3 b)\n        {\n            return (float)((double)a.X * (double)b.X + (double)a.Y * (double)b.Y + (double)a.Z * (double)b.Z);\n        }\n\n        private void UpdateDeterminant(int xmIdx)\n        {\n            int index1 = 1 << xmIdx;\n            this.det[index1][xmIdx] = 1f;\n            int num1 = Gjk.BitsToIndices[this.simplexBits];\n            int num2 = num1;\n            int num3 = 0;\n            while (num2 != 0)\n            {\n                int index2 = (num2 & 7) - 1;\n                int num4 = 1 << index2;\n                int index3 = num4 | index1;\n                this.det[index3][index2] = Gjk.Dot(ref this.edges[xmIdx][index2], ref this.y[xmIdx]);\n                this.det[index3][xmIdx] = Gjk.Dot(ref this.edges[index2][xmIdx], ref this.y[index2]);\n                int num5 = num1;\n                for (int index4 = 0; index4 < num3; ++index4)\n                {\n                    int index5 = (num5 & 7) - 1;\n                    int num6 = 1 << index5;\n                    int index6 = index3 | num6;\n                    int index7 = (double)this.edgeLengthSq[index2][index5] < (double)this.edgeLengthSq[xmIdx][index5] ? index2 : xmIdx;\n                    this.det[index6][index5] = (float)((double)this.det[index3][index2] * (double)Gjk.Dot(ref this.edges[index7][index5], ref this.y[index2]) + (double)this.det[index3][xmIdx] * (double)Gjk.Dot(ref this.edges[index7][index5], ref this.y[xmIdx]));\n                    int index8 = (double)this.edgeLengthSq[index5][index2] < (double)this.edgeLengthSq[xmIdx][index2] ? index5 : xmIdx;\n                    this.det[index6][index2] = (float)((double)this.det[num6 | index1][index5] * (double)Gjk.Dot(ref this.edges[index8][index2], ref this.y[index5]) + (double)this.det[num6 | index1][xmIdx] * (double)Gjk.Dot(ref this.edges[index8][index2], ref this.y[xmIdx]));\n                    int index9 = (double)this.edgeLengthSq[index2][xmIdx] < (double)this.edgeLengthSq[index5][xmIdx] ? index2 : index5;\n                    this.det[index6][xmIdx] = (float)((double)this.det[num4 | num6][index5] * (double)Gjk.Dot(ref this.edges[index9][xmIdx], ref this.y[index5]) + (double)this.det[num4 | num6][index2] * (double)Gjk.Dot(ref this.edges[index9][xmIdx], ref this.y[index2]));\n                    num5 >>= 3;\n                }\n                num2 >>= 3;\n                ++num3;\n            }\n            if ((this.simplexBits | index1) != 15)\n                return;\n            int index10 = (double)this.edgeLengthSq[1][0] < (double)this.edgeLengthSq[2][0] ? ((double)this.edgeLengthSq[1][0] < (double)this.edgeLengthSq[3][0] ? 1 : 3) : ((double)this.edgeLengthSq[2][0] < (double)this.edgeLengthSq[3][0] ? 2 : 3);\n            this.det[15][0] = (float)((double)this.det[14][1] * (double)Gjk.Dot(ref this.edges[index10][0], ref this.y[1]) + (double)this.det[14][2] * (double)Gjk.Dot(ref this.edges[index10][0], ref this.y[2]) + (double)this.det[14][3] * (double)Gjk.Dot(ref this.edges[index10][0], ref this.y[3]));\n            int index11 = (double)this.edgeLengthSq[0][1] < (double)this.edgeLengthSq[2][1] ? ((double)this.edgeLengthSq[0][1] < (double)this.edgeLengthSq[3][1] ? 0 : 3) : ((double)this.edgeLengthSq[2][1] < (double)this.edgeLengthSq[3][1] ? 2 : 3);\n            this.det[15][1] = (float)((double)this.det[13][0] * (double)Gjk.Dot(ref this.edges[index11][1], ref this.y[0]) + (double)this.det[13][2] * (double)Gjk.Dot(ref this.edges[index11][1], ref this.y[2]) + (double)this.det[13][3] * (double)Gjk.Dot(ref this.edges[index11][1], ref this.y[3]));\n            int index12 = (double)this.edgeLengthSq[0][2] < (double)this.edgeLengthSq[1][2] ? ((double)this.edgeLengthSq[0][2] < (double)this.edgeLengthSq[3][2] ? 0 : 3) : ((double)this.edgeLengthSq[1][2] < (double)this.edgeLengthSq[3][2] ? 1 : 3);\n            this.det[15][2] = (float)((double)this.det[11][0] * (double)Gjk.Dot(ref this.edges[index12][2], ref this.y[0]) + (double)this.det[11][1] * (double)Gjk.Dot(ref this.edges[index12][2], ref this.y[1]) + (double)this.det[11][3] * (double)Gjk.Dot(ref this.edges[index12][2], ref this.y[3]));\n            int index13 = (double)this.edgeLengthSq[0][3] < (double)this.edgeLengthSq[1][3] ? ((double)this.edgeLengthSq[0][3] < (double)this.edgeLengthSq[2][3] ? 0 : 2) : ((double)this.edgeLengthSq[1][3] < (double)this.edgeLengthSq[2][3] ? 1 : 2);\n            this.det[15][3] = (float)((double)this.det[7][0] * (double)Gjk.Dot(ref this.edges[index13][3], ref this.y[0]) + (double)this.det[7][1] * (double)Gjk.Dot(ref this.edges[index13][3], ref this.y[1]) + (double)this.det[7][2] * (double)Gjk.Dot(ref this.edges[index13][3], ref this.y[2]));\n        }\n\n        private bool UpdateSimplex(int newIndex)\n        {\n            int yBits = this.simplexBits | 1 << newIndex;\n            int xBits = 1 << newIndex;\n            for (int index = this.simplexBits; index != 0; --index)\n            {\n                if ((index & yBits) == index && this.IsSatisfiesRule(index | xBits, yBits))\n                {\n                    this.simplexBits = index | xBits;\n                    this.closestPoint = this.ComputeClosestPoint();\n                    return true;\n                }\n            }\n            bool flag = false;\n            if (this.IsSatisfiesRule(xBits, yBits))\n            {\n                this.simplexBits = xBits;\n                this.closestPoint = this.y[newIndex];\n                this.maxLengthSq = this.yLengthSq[newIndex];\n                flag = true;\n            }\n            return flag;\n        }\n\n        private Vector3 ComputeClosestPoint()\n        {\n            float num1 = 0.0f;\n            Vector3 zero = Vector3.Zero;\n            this.maxLengthSq = 0.0f;\n            int num2 = Gjk.BitsToIndices[this.simplexBits];\n            while (num2 != 0)\n            {\n                int index = (num2 & 7) - 1;\n                float num3 = this.det[this.simplexBits][index];\n                num1 += num3;\n                zero += this.y[index] * num3;\n                this.maxLengthSq = MathHelper.Max(this.maxLengthSq, this.yLengthSq[index]);\n                num2 >>= 3;\n            }\n            return zero / num1;\n        }\n\n        private bool IsSatisfiesRule(int xBits, int yBits)\n        {\n            bool flag = true;\n            int num1 = Gjk.BitsToIndices[yBits];\n            while (num1 != 0)\n            {\n                int index = (num1 & 7) - 1;\n                int num2 = 1 << index;\n                if ((num2 & xBits) != 0)\n                {\n                    if ((double)this.det[xBits][index] <= 0.0)\n                    {\n                        flag = false;\n                        break;\n                    }\n                }\n                else if ((double)this.det[xBits | num2][index] > 0.0)\n                {\n                    flag = false;\n                    break;\n                }\n                num1 >>= 3;\n            }\n            return flag;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWarsMath/MathHelper.cs",
    "content": "﻿using System;\n\nnamespace MinerWarsMath\n{\n    /// <summary>\n    /// Contains commonly used precalculated values.\n    /// </summary>\n    public static class MathHelper\n    {\n        /// <summary>\n        /// Represents the mathematical constant e.\n        /// </summary>\n        public const float E = 2.718282f;\n        /// <summary>\n        /// Represents the log base two of e.\n        /// </summary>\n        public const float Log2E = 1.442695f;\n        /// <summary>\n        /// Represents the log base ten of e.\n        /// </summary>\n        public const float Log10E = 0.4342945f;\n        /// <summary>\n        /// Represents the value of pi.\n        /// </summary>\n        public const float Pi = 3.141593f;\n        /// <summary>\n        /// Represents the value of pi times two.\n        /// </summary>\n        public const float TwoPi = 6.283185f;\n        /// <summary>\n        /// Represents the value of pi divided by two.\n        /// </summary>\n        public const float PiOver2 = 1.570796f;\n        /// <summary>\n        /// Represents the value of pi divided by four.\n        /// </summary>\n        public const float PiOver4 = 0.7853982f;\n\n        /// <summary>\n        /// Converts degrees to radians.\n        /// </summary>\n        /// <param name=\"degrees\">The angle in degrees.</param>\n        public static float ToRadians(float degrees)\n        {\n            return (degrees / 360.0f) * TwoPi;\n        }\n\n        /// <summary>\n        /// Converts radians to degrees.\n        /// </summary>\n        /// <param name=\"radians\">The angle in radians.</param>\n        public static float ToDegrees(float radians)\n        {\n            return radians * 57.29578f;\n        }\n\n        /// <summary>\n        /// Calculates the absolute value of the difference of two values.\n        /// </summary>\n        /// <param name=\"value1\">Source value.</param><param name=\"value2\">Source value.</param>\n        public static float Distance(float value1, float value2)\n        {\n            return Math.Abs(value1 - value2);\n        }\n\n        /// <summary>\n        /// Returns the lesser of two values.\n        /// </summary>\n        /// <param name=\"value1\">Source value.</param><param name=\"value2\">Source value.</param>\n        public static float Min(float value1, float value2)\n        {\n            return Math.Min(value1, value2);\n        }\n\n        /// <summary>\n        /// Returns the greater of two values.\n        /// </summary>\n        /// <param name=\"value1\">Source value.</param><param name=\"value2\">Source value.</param>\n        public static float Max(float value1, float value2)\n        {\n            return Math.Max(value1, value2);\n        }\n\n        /// <summary>\n        /// Restricts a value to be within a specified range. Reference page contains links to related code samples.\n        /// </summary>\n        /// <param name=\"value\">The value to clamp.</param><param name=\"min\">The minimum value. If value is less than min, min will be returned.</param><param name=\"max\">The maximum value. If value is greater than max, max will be returned.</param>\n        public static float Clamp(float value, float min, float max)\n        {\n            value = (double)value > (double)max ? max : value;\n            value = (double)value < (double)min ? min : value;\n            return value;\n        }\n\n        /// <summary>\n        /// Linearly interpolates between two values.\n        /// </summary>\n        /// <param name=\"value1\">Source value.</param><param name=\"value2\">Source value.</param><param name=\"amount\">Value between 0 and 1 indicating the weight of value2.</param>\n        public static float Lerp(float value1, float value2, float amount)\n        {\n            return value1 + (value2 - value1) * amount;\n        }\n\n        /// <summary>\n        /// Returns the Cartesian coordinate for one axis of a point that is defined by a given triangle and two normalized barycentric (areal) coordinates.\n        /// </summary>\n        /// <param name=\"value1\">The coordinate on one axis of vertex 1 of the defining triangle.</param><param name=\"value2\">The coordinate on the same axis of vertex 2 of the defining triangle.</param><param name=\"value3\">The coordinate on the same axis of vertex 3 of the defining triangle.</param><param name=\"amount1\">The normalized barycentric (areal) coordinate b2, equal to the weighting factor for vertex 2, the coordinate of which is specified in value2.</param><param name=\"amount2\">The normalized barycentric (areal) coordinate b3, equal to the weighting factor for vertex 3, the coordinate of which is specified in value3.</param>\n        public static float Barycentric(float value1, float value2, float value3, float amount1, float amount2)\n        {\n            return (float)((double)value1 + (double)amount1 * ((double)value2 - (double)value1) + (double)amount2 * ((double)value3 - (double)value1));\n        }\n\n        /// <summary>\n        /// Interpolates between two values using a cubic equation.\n        /// </summary>\n        /// <param name=\"value1\">Source value.</param><param name=\"value2\">Source value.</param><param name=\"amount\">Weighting value.</param>\n        public static float SmoothStep(float value1, float value2, float amount)\n        {\n            float num = MathHelper.Clamp(amount, 0.0f, 1f);\n            return MathHelper.Lerp(value1, value2, (float)((double)num * (double)num * (3.0 - 2.0 * (double)num)));\n        }\n\n        /// <summary>\n        /// Performs a Catmull-Rom interpolation using the specified positions.\n        /// </summary>\n        /// <param name=\"value1\">The first position in the interpolation.</param><param name=\"value2\">The second position in the interpolation.</param><param name=\"value3\">The third position in the interpolation.</param><param name=\"value4\">The fourth position in the interpolation.</param><param name=\"amount\">Weighting factor.</param>\n        public static float CatmullRom(float value1, float value2, float value3, float value4, float amount)\n        {\n            float num1 = amount * amount;\n            float num2 = amount * num1;\n            return (float)(0.5 * (2.0 * (double)value2 + (-(double)value1 + (double)value3) * (double)amount + (2.0 * (double)value1 - 5.0 * (double)value2 + 4.0 * (double)value3 - (double)value4) * (double)num1 + (-(double)value1 + 3.0 * (double)value2 - 3.0 * (double)value3 + (double)value4) * (double)num2));\n        }\n\n        /// <summary>\n        /// Performs a Hermite spline interpolation.\n        /// </summary>\n        /// <param name=\"value1\">Source position.</param><param name=\"tangent1\">Source tangent.</param><param name=\"value2\">Source position.</param><param name=\"tangent2\">Source tangent.</param><param name=\"amount\">Weighting factor.</param>\n        public static float Hermite(float value1, float tangent1, float value2, float tangent2, float amount)\n        {\n            float num1 = amount;\n            float num2 = num1 * num1;\n            float num3 = num1 * num2;\n            float num4 = (float)(2.0 * (double)num3 - 3.0 * (double)num2 + 1.0);\n            float num5 = (float)(-2.0 * (double)num3 + 3.0 * (double)num2);\n            float num6 = num3 - 2f * num2 + num1;\n            float num7 = num3 - num2;\n            return (float)((double)value1 * (double)num4 + (double)value2 * (double)num5 + (double)tangent1 * (double)num6 + (double)tangent2 * (double)num7);\n        }\n\n        /// <summary>\n        /// Reduces a given angle to a value between π and -π.\n        /// </summary>\n        /// <param name=\"angle\">The angle to reduce, in radians.</param>\n        public static float WrapAngle(float angle)\n        {\n            angle = (float)Math.IEEERemainder((double)angle, 6.28318548202515);\n            if ((double)angle <= -3.14159274101257)\n                angle += 6.283185f;\n            else if ((double)angle > 3.14159274101257)\n                angle -= 6.283185f;\n            return angle;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWarsMath/Matrix.cs",
    "content": "﻿#define NATIVE_SUPPORT\n\nusing System;\nusing System.ComponentModel;\nusing System.Globalization;\nusing System.Security;\nusing System.Runtime.InteropServices;\n\nnamespace MinerWarsMath\n{\n    /// <summary>\n    /// Defines a matrix.\n    /// </summary>\n    [Serializable]\n    public struct Matrix : IEquatable<Matrix>\n    {\n        private static Matrix _identity = new Matrix(1f, 0.0f, 0.0f, 0.0f, 0.0f, 1f, 0.0f, 0.0f, 0.0f, 0.0f, 1f, 0.0f, 0.0f, 0.0f, 0.0f, 1f);\n        /// <summary>\n        /// Value at row 1 column 1 of the matrix.\n        /// </summary>\n        public float M11;\n        /// <summary>\n        /// Value at row 1 column 2 of the matrix.\n        /// </summary>\n        public float M12;\n        /// <summary>\n        /// Value at row 1 column 3 of the matrix.\n        /// </summary>\n        public float M13;\n        /// <summary>\n        /// Value at row 1 column 4 of the matrix.\n        /// </summary>\n        public float M14;\n        /// <summary>\n        /// Value at row 2 column 1 of the matrix.\n        /// </summary>\n        public float M21;\n        /// <summary>\n        /// Value at row 2 column 2 of the matrix.\n        /// </summary>\n        public float M22;\n        /// <summary>\n        /// Value at row 2 column 3 of the matrix.\n        /// </summary>\n        public float M23;\n        /// <summary>\n        /// Value at row 2 column 4 of the matrix.\n        /// </summary>\n        public float M24;\n        /// <summary>\n        /// Value at row 3 column 1 of the matrix.\n        /// </summary>\n        public float M31;\n        /// <summary>\n        /// Value at row 3 column 2 of the matrix.\n        /// </summary>\n        public float M32;\n        /// <summary>\n        /// Value at row 3 column 3 of the matrix.\n        /// </summary>\n        public float M33;\n        /// <summary>\n        /// Value at row 3 column 4 of the matrix.\n        /// </summary>\n        public float M34;\n        /// <summary>\n        /// Value at row 4 column 1 of the matrix.\n        /// </summary>\n        public float M41;\n        /// <summary>\n        /// Value at row 4 column 2 of the matrix.\n        /// </summary>\n        public float M42;\n        /// <summary>\n        /// Value at row 4 column 3 of the matrix.\n        /// </summary>\n        public float M43;\n        /// <summary>\n        /// Value at row 4 column 4 of the matrix.\n        /// </summary>\n        public float M44;\n\n        /// <summary>\n        /// Returns an instance of the identity matrix.\n        /// </summary>\n        public static Matrix Identity\n        {\n            get\n            {\n                return Matrix._identity;\n            }\n        }\n\n        /// <summary>\n        /// Gets and sets the up vector of the Matrix.\n        /// </summary>\n        public Vector3 Up\n        {\n            get\n            {\n                Vector3 vector3;\n                vector3.X = this.M21;\n                vector3.Y = this.M22;\n                vector3.Z = this.M23;\n                return vector3;\n            }\n            set\n            {\n                this.M21 = value.X;\n                this.M22 = value.Y;\n                this.M23 = value.Z;\n            }\n        }\n\n        /// <summary>\n        /// Gets and sets the down vector of the Matrix.\n        /// </summary>\n        public Vector3 Down\n        {\n            get\n            {\n                Vector3 vector3;\n                vector3.X = -this.M21;\n                vector3.Y = -this.M22;\n                vector3.Z = -this.M23;\n                return vector3;\n            }\n            set\n            {\n                this.M21 = -value.X;\n                this.M22 = -value.Y;\n                this.M23 = -value.Z;\n            }\n        }\n\n        /// <summary>\n        /// Gets and sets the right vector of the Matrix.\n        /// </summary>\n        public Vector3 Right\n        {\n            get\n            {\n                Vector3 vector3;\n                vector3.X = this.M11;\n                vector3.Y = this.M12;\n                vector3.Z = this.M13;\n                return vector3;\n            }\n            set\n            {\n                this.M11 = value.X;\n                this.M12 = value.Y;\n                this.M13 = value.Z;\n            }\n        }\n\n        /// <summary>\n        /// Gets and sets the left vector of the Matrix.\n        /// </summary>\n        public Vector3 Left\n        {\n            get\n            {\n                Vector3 vector3;\n                vector3.X = -this.M11;\n                vector3.Y = -this.M12;\n                vector3.Z = -this.M13;\n                return vector3;\n            }\n            set\n            {\n                this.M11 = -value.X;\n                this.M12 = -value.Y;\n                this.M13 = -value.Z;\n            }\n        }\n\n        /// <summary>\n        /// Gets and sets the forward vector of the Matrix.\n        /// </summary>\n        public Vector3 Forward\n        {\n            get\n            {\n                Vector3 vector3;\n                vector3.X = -this.M31;\n                vector3.Y = -this.M32;\n                vector3.Z = -this.M33;\n                return vector3;\n            }\n            set\n            {\n                this.M31 = -value.X;\n                this.M32 = -value.Y;\n                this.M33 = -value.Z;\n            }\n        }\n\n        /// <summary>\n        /// Gets and sets the backward vector of the Matrix.\n        /// </summary>\n        public Vector3 Backward\n        {\n            get\n            {\n                Vector3 vector3;\n                vector3.X = this.M31;\n                vector3.Y = this.M32;\n                vector3.Z = this.M33;\n                return vector3;\n            }\n            set\n            {\n                this.M31 = value.X;\n                this.M32 = value.Y;\n                this.M33 = value.Z;\n            }\n        }\n\n        /// <summary>\n        /// Gets and sets the translation vector of the Matrix.\n        /// </summary>\n        public Vector3 Translation\n        {\n            get\n            {\n                Vector3 vector3;\n                vector3.X = this.M41;\n                vector3.Y = this.M42;\n                vector3.Z = this.M43;\n                return vector3;\n            }\n            set\n            {\n                this.M41 = value.X;\n                this.M42 = value.Y;\n                this.M43 = value.Z;\n            }\n        }\n\n        static Matrix()\n        {\n        }\n\n        /// <summary>\n        /// Initializes a new instance of Matrix.\n        /// </summary>\n        /// <param name=\"m11\">Value to initialize m11 to.</param><param name=\"m12\">Value to initialize m12 to.</param><param name=\"m13\">Value to initialize m13 to.</param><param name=\"m14\">Value to initialize m14 to.</param><param name=\"m21\">Value to initialize m21 to.</param><param name=\"m22\">Value to initialize m22 to.</param><param name=\"m23\">Value to initialize m23 to.</param><param name=\"m24\">Value to initialize m24 to.</param><param name=\"m31\">Value to initialize m31 to.</param><param name=\"m32\">Value to initialize m32 to.</param><param name=\"m33\">Value to initialize m33 to.</param><param name=\"m34\">Value to initialize m34 to.</param><param name=\"m41\">Value to initialize m41 to.</param><param name=\"m42\">Value to initialize m42 to.</param><param name=\"m43\">Value to initialize m43 to.</param><param name=\"m44\">Value to initialize m44 to.</param>\n        public Matrix(float m11, float m12, float m13, float m14, float m21, float m22, float m23, float m24, float m31, float m32, float m33, float m34, float m41, float m42, float m43, float m44)\n        {\n            this.M11 = m11;\n            this.M12 = m12;\n            this.M13 = m13;\n            this.M14 = m14;\n            this.M21 = m21;\n            this.M22 = m22;\n            this.M23 = m23;\n            this.M24 = m24;\n            this.M31 = m31;\n            this.M32 = m32;\n            this.M33 = m33;\n            this.M34 = m34;\n            this.M41 = m41;\n            this.M42 = m42;\n            this.M43 = m43;\n            this.M44 = m44;\n        }\n\n        /// <summary>\n        /// Negates individual elements of a matrix.\n        /// </summary>\n        /// <param name=\"matrix1\">Source matrix.</param>\n        public static Matrix operator -(Matrix matrix1)\n        {\n            Matrix matrix;\n            matrix.M11 = -matrix1.M11;\n            matrix.M12 = -matrix1.M12;\n            matrix.M13 = -matrix1.M13;\n            matrix.M14 = -matrix1.M14;\n            matrix.M21 = -matrix1.M21;\n            matrix.M22 = -matrix1.M22;\n            matrix.M23 = -matrix1.M23;\n            matrix.M24 = -matrix1.M24;\n            matrix.M31 = -matrix1.M31;\n            matrix.M32 = -matrix1.M32;\n            matrix.M33 = -matrix1.M33;\n            matrix.M34 = -matrix1.M34;\n            matrix.M41 = -matrix1.M41;\n            matrix.M42 = -matrix1.M42;\n            matrix.M43 = -matrix1.M43;\n            matrix.M44 = -matrix1.M44;\n            return matrix;\n        }\n\n        /// <summary>\n        /// Compares a matrix for equality with another matrix.\n        /// </summary>\n        /// <param name=\"matrix1\">Source matrix.</param><param name=\"matrix2\">Source matrix.</param>\n        public static bool operator ==(Matrix matrix1, Matrix matrix2)\n        {\n            if ((double)matrix1.M11 == (double)matrix2.M11 && (double)matrix1.M22 == (double)matrix2.M22 && ((double)matrix1.M33 == (double)matrix2.M33 && (double)matrix1.M44 == (double)matrix2.M44) && ((double)matrix1.M12 == (double)matrix2.M12 && (double)matrix1.M13 == (double)matrix2.M13 && ((double)matrix1.M14 == (double)matrix2.M14 && (double)matrix1.M21 == (double)matrix2.M21)) && ((double)matrix1.M23 == (double)matrix2.M23 && (double)matrix1.M24 == (double)matrix2.M24 && ((double)matrix1.M31 == (double)matrix2.M31 && (double)matrix1.M32 == (double)matrix2.M32) && ((double)matrix1.M34 == (double)matrix2.M34 && (double)matrix1.M41 == (double)matrix2.M41 && (double)matrix1.M42 == (double)matrix2.M42)))\n                return (double)matrix1.M43 == (double)matrix2.M43;\n            else\n                return false;\n        }\n\n        /// <summary>\n        /// Tests a matrix for inequality with another matrix.\n        /// </summary>\n        /// <param name=\"matrix1\">The matrix on the left of the equal sign.</param><param name=\"matrix2\">The matrix on the right of the equal sign.</param>\n        public static bool operator !=(Matrix matrix1, Matrix matrix2)\n        {\n            if ((double)matrix1.M11 == (double)matrix2.M11 && (double)matrix1.M12 == (double)matrix2.M12 && ((double)matrix1.M13 == (double)matrix2.M13 && (double)matrix1.M14 == (double)matrix2.M14) && ((double)matrix1.M21 == (double)matrix2.M21 && (double)matrix1.M22 == (double)matrix2.M22 && ((double)matrix1.M23 == (double)matrix2.M23 && (double)matrix1.M24 == (double)matrix2.M24)) && ((double)matrix1.M31 == (double)matrix2.M31 && (double)matrix1.M32 == (double)matrix2.M32 && ((double)matrix1.M33 == (double)matrix2.M33 && (double)matrix1.M34 == (double)matrix2.M34) && ((double)matrix1.M41 == (double)matrix2.M41 && (double)matrix1.M42 == (double)matrix2.M42 && (double)matrix1.M43 == (double)matrix2.M43)))\n                return (double)matrix1.M44 != (double)matrix2.M44;\n            else\n                return true;\n        }\n\n        /// <summary>\n        /// Adds a matrix to another matrix.\n        /// </summary>\n        /// <param name=\"matrix1\">Source matrix.</param><param name=\"matrix2\">Source matrix.</param>\n        public static Matrix operator +(Matrix matrix1, Matrix matrix2)\n        {\n            Matrix matrix;\n            matrix.M11 = matrix1.M11 + matrix2.M11;\n            matrix.M12 = matrix1.M12 + matrix2.M12;\n            matrix.M13 = matrix1.M13 + matrix2.M13;\n            matrix.M14 = matrix1.M14 + matrix2.M14;\n            matrix.M21 = matrix1.M21 + matrix2.M21;\n            matrix.M22 = matrix1.M22 + matrix2.M22;\n            matrix.M23 = matrix1.M23 + matrix2.M23;\n            matrix.M24 = matrix1.M24 + matrix2.M24;\n            matrix.M31 = matrix1.M31 + matrix2.M31;\n            matrix.M32 = matrix1.M32 + matrix2.M32;\n            matrix.M33 = matrix1.M33 + matrix2.M33;\n            matrix.M34 = matrix1.M34 + matrix2.M34;\n            matrix.M41 = matrix1.M41 + matrix2.M41;\n            matrix.M42 = matrix1.M42 + matrix2.M42;\n            matrix.M43 = matrix1.M43 + matrix2.M43;\n            matrix.M44 = matrix1.M44 + matrix2.M44;\n            return matrix;\n        }\n\n        /// <summary>\n        /// Subtracts matrices.\n        /// </summary>\n        /// <param name=\"matrix1\">Source matrix.</param><param name=\"matrix2\">Source matrix.</param>\n        public static Matrix operator -(Matrix matrix1, Matrix matrix2)\n        {\n            Matrix matrix;\n            matrix.M11 = matrix1.M11 - matrix2.M11;\n            matrix.M12 = matrix1.M12 - matrix2.M12;\n            matrix.M13 = matrix1.M13 - matrix2.M13;\n            matrix.M14 = matrix1.M14 - matrix2.M14;\n            matrix.M21 = matrix1.M21 - matrix2.M21;\n            matrix.M22 = matrix1.M22 - matrix2.M22;\n            matrix.M23 = matrix1.M23 - matrix2.M23;\n            matrix.M24 = matrix1.M24 - matrix2.M24;\n            matrix.M31 = matrix1.M31 - matrix2.M31;\n            matrix.M32 = matrix1.M32 - matrix2.M32;\n            matrix.M33 = matrix1.M33 - matrix2.M33;\n            matrix.M34 = matrix1.M34 - matrix2.M34;\n            matrix.M41 = matrix1.M41 - matrix2.M41;\n            matrix.M42 = matrix1.M42 - matrix2.M42;\n            matrix.M43 = matrix1.M43 - matrix2.M43;\n            matrix.M44 = matrix1.M44 - matrix2.M44;\n            return matrix;\n        }\n\n        /// <summary>\n        /// Multiplies a matrix by another matrix.\n        /// </summary>\n        /// <param name=\"matrix1\">Source matrix.</param><param name=\"matrix2\">Source matrix.</param>\n        public static Matrix operator *(Matrix matrix1, Matrix matrix2)\n        {\n#if NATIVE_SUPPORT\n            Matrix result;\n            Multiply_Native(ref matrix1, ref matrix2, out result);\n            return result;\n#else\n            Matrix matrix;\n            matrix.M11 = (float)((double)matrix1.M11 * (double)matrix2.M11 + (double)matrix1.M12 * (double)matrix2.M21 + (double)matrix1.M13 * (double)matrix2.M31 + (double)matrix1.M14 * (double)matrix2.M41);\n            matrix.M12 = (float)((double)matrix1.M11 * (double)matrix2.M12 + (double)matrix1.M12 * (double)matrix2.M22 + (double)matrix1.M13 * (double)matrix2.M32 + (double)matrix1.M14 * (double)matrix2.M42);\n            matrix.M13 = (float)((double)matrix1.M11 * (double)matrix2.M13 + (double)matrix1.M12 * (double)matrix2.M23 + (double)matrix1.M13 * (double)matrix2.M33 + (double)matrix1.M14 * (double)matrix2.M43);\n            matrix.M14 = (float)((double)matrix1.M11 * (double)matrix2.M14 + (double)matrix1.M12 * (double)matrix2.M24 + (double)matrix1.M13 * (double)matrix2.M34 + (double)matrix1.M14 * (double)matrix2.M44);\n            matrix.M21 = (float)((double)matrix1.M21 * (double)matrix2.M11 + (double)matrix1.M22 * (double)matrix2.M21 + (double)matrix1.M23 * (double)matrix2.M31 + (double)matrix1.M24 * (double)matrix2.M41);\n            matrix.M22 = (float)((double)matrix1.M21 * (double)matrix2.M12 + (double)matrix1.M22 * (double)matrix2.M22 + (double)matrix1.M23 * (double)matrix2.M32 + (double)matrix1.M24 * (double)matrix2.M42);\n            matrix.M23 = (float)((double)matrix1.M21 * (double)matrix2.M13 + (double)matrix1.M22 * (double)matrix2.M23 + (double)matrix1.M23 * (double)matrix2.M33 + (double)matrix1.M24 * (double)matrix2.M43);\n            matrix.M24 = (float)((double)matrix1.M21 * (double)matrix2.M14 + (double)matrix1.M22 * (double)matrix2.M24 + (double)matrix1.M23 * (double)matrix2.M34 + (double)matrix1.M24 * (double)matrix2.M44);\n            matrix.M31 = (float)((double)matrix1.M31 * (double)matrix2.M11 + (double)matrix1.M32 * (double)matrix2.M21 + (double)matrix1.M33 * (double)matrix2.M31 + (double)matrix1.M34 * (double)matrix2.M41);\n            matrix.M32 = (float)((double)matrix1.M31 * (double)matrix2.M12 + (double)matrix1.M32 * (double)matrix2.M22 + (double)matrix1.M33 * (double)matrix2.M32 + (double)matrix1.M34 * (double)matrix2.M42);\n            matrix.M33 = (float)((double)matrix1.M31 * (double)matrix2.M13 + (double)matrix1.M32 * (double)matrix2.M23 + (double)matrix1.M33 * (double)matrix2.M33 + (double)matrix1.M34 * (double)matrix2.M43);\n            matrix.M34 = (float)((double)matrix1.M31 * (double)matrix2.M14 + (double)matrix1.M32 * (double)matrix2.M24 + (double)matrix1.M33 * (double)matrix2.M34 + (double)matrix1.M34 * (double)matrix2.M44);\n            matrix.M41 = (float)((double)matrix1.M41 * (double)matrix2.M11 + (double)matrix1.M42 * (double)matrix2.M21 + (double)matrix1.M43 * (double)matrix2.M31 + (double)matrix1.M44 * (double)matrix2.M41);\n            matrix.M42 = (float)((double)matrix1.M41 * (double)matrix2.M12 + (double)matrix1.M42 * (double)matrix2.M22 + (double)matrix1.M43 * (double)matrix2.M32 + (double)matrix1.M44 * (double)matrix2.M42);\n            matrix.M43 = (float)((double)matrix1.M41 * (double)matrix2.M13 + (double)matrix1.M42 * (double)matrix2.M23 + (double)matrix1.M43 * (double)matrix2.M33 + (double)matrix1.M44 * (double)matrix2.M43);\n            matrix.M44 = (float)((double)matrix1.M41 * (double)matrix2.M14 + (double)matrix1.M42 * (double)matrix2.M24 + (double)matrix1.M43 * (double)matrix2.M34 + (double)matrix1.M44 * (double)matrix2.M44);\n            return matrix;\n#endif\n        }\n\n        /// <summary>\n        /// Multiplies a matrix by a scalar value.\n        /// </summary>\n        /// <param name=\"matrix\">Source matrix.</param><param name=\"scaleFactor\">Scalar value.</param>\n        public static Matrix operator *(Matrix matrix, float scaleFactor)\n        {\n            float num = scaleFactor;\n            Matrix matrix1;\n            matrix1.M11 = matrix.M11 * num;\n            matrix1.M12 = matrix.M12 * num;\n            matrix1.M13 = matrix.M13 * num;\n            matrix1.M14 = matrix.M14 * num;\n            matrix1.M21 = matrix.M21 * num;\n            matrix1.M22 = matrix.M22 * num;\n            matrix1.M23 = matrix.M23 * num;\n            matrix1.M24 = matrix.M24 * num;\n            matrix1.M31 = matrix.M31 * num;\n            matrix1.M32 = matrix.M32 * num;\n            matrix1.M33 = matrix.M33 * num;\n            matrix1.M34 = matrix.M34 * num;\n            matrix1.M41 = matrix.M41 * num;\n            matrix1.M42 = matrix.M42 * num;\n            matrix1.M43 = matrix.M43 * num;\n            matrix1.M44 = matrix.M44 * num;\n            return matrix1;\n        }\n\n        /// <summary>\n        /// Multiplies a matrix by a scalar value.\n        /// </summary>\n        /// <param name=\"scaleFactor\">Scalar value.</param><param name=\"matrix\">Source matrix.</param>\n        public static Matrix operator *(float scaleFactor, Matrix matrix)\n        {\n            float num = scaleFactor;\n            Matrix matrix1;\n            matrix1.M11 = matrix.M11 * num;\n            matrix1.M12 = matrix.M12 * num;\n            matrix1.M13 = matrix.M13 * num;\n            matrix1.M14 = matrix.M14 * num;\n            matrix1.M21 = matrix.M21 * num;\n            matrix1.M22 = matrix.M22 * num;\n            matrix1.M23 = matrix.M23 * num;\n            matrix1.M24 = matrix.M24 * num;\n            matrix1.M31 = matrix.M31 * num;\n            matrix1.M32 = matrix.M32 * num;\n            matrix1.M33 = matrix.M33 * num;\n            matrix1.M34 = matrix.M34 * num;\n            matrix1.M41 = matrix.M41 * num;\n            matrix1.M42 = matrix.M42 * num;\n            matrix1.M43 = matrix.M43 * num;\n            matrix1.M44 = matrix.M44 * num;\n            return matrix1;\n        }\n\n        /// <summary>\n        /// Divides the components of a matrix by the corresponding components of another matrix.\n        /// </summary>\n        /// <param name=\"matrix1\">Source matrix.</param><param name=\"matrix2\">The divisor.</param>\n        public static Matrix operator /(Matrix matrix1, Matrix matrix2)\n        {\n            Matrix matrix;\n            matrix.M11 = matrix1.M11 / matrix2.M11;\n            matrix.M12 = matrix1.M12 / matrix2.M12;\n            matrix.M13 = matrix1.M13 / matrix2.M13;\n            matrix.M14 = matrix1.M14 / matrix2.M14;\n            matrix.M21 = matrix1.M21 / matrix2.M21;\n            matrix.M22 = matrix1.M22 / matrix2.M22;\n            matrix.M23 = matrix1.M23 / matrix2.M23;\n            matrix.M24 = matrix1.M24 / matrix2.M24;\n            matrix.M31 = matrix1.M31 / matrix2.M31;\n            matrix.M32 = matrix1.M32 / matrix2.M32;\n            matrix.M33 = matrix1.M33 / matrix2.M33;\n            matrix.M34 = matrix1.M34 / matrix2.M34;\n            matrix.M41 = matrix1.M41 / matrix2.M41;\n            matrix.M42 = matrix1.M42 / matrix2.M42;\n            matrix.M43 = matrix1.M43 / matrix2.M43;\n            matrix.M44 = matrix1.M44 / matrix2.M44;\n            return matrix;\n        }\n\n        /// <summary>\n        /// Divides the components of a matrix by a scalar.\n        /// </summary>\n        /// <param name=\"matrix1\">Source matrix.</param><param name=\"divider\">The divisor.</param>\n        public static Matrix operator /(Matrix matrix1, float divider)\n        {\n            float num = 1f / divider;\n            Matrix matrix;\n            matrix.M11 = matrix1.M11 * num;\n            matrix.M12 = matrix1.M12 * num;\n            matrix.M13 = matrix1.M13 * num;\n            matrix.M14 = matrix1.M14 * num;\n            matrix.M21 = matrix1.M21 * num;\n            matrix.M22 = matrix1.M22 * num;\n            matrix.M23 = matrix1.M23 * num;\n            matrix.M24 = matrix1.M24 * num;\n            matrix.M31 = matrix1.M31 * num;\n            matrix.M32 = matrix1.M32 * num;\n            matrix.M33 = matrix1.M33 * num;\n            matrix.M34 = matrix1.M34 * num;\n            matrix.M41 = matrix1.M41 * num;\n            matrix.M42 = matrix1.M42 * num;\n            matrix.M43 = matrix1.M43 * num;\n            matrix.M44 = matrix1.M44 * num;\n            return matrix;\n        }\n\n        /// <summary>\n        /// Creates a spherical billboard that rotates around a specified object position.\n        /// </summary>\n        /// <param name=\"objectPosition\">Position of the object the billboard will rotate around.</param><param name=\"cameraPosition\">Position of the camera.</param><param name=\"cameraUpVector\">The up vector of the camera.</param><param name=\"cameraForwardVector\">Optional forward vector of the camera.</param>\n        public static Matrix CreateBillboard(Vector3 objectPosition, Vector3 cameraPosition, Vector3 cameraUpVector, Vector3? cameraForwardVector)\n        {\n            Vector3 result1;\n            result1.X = objectPosition.X - cameraPosition.X;\n            result1.Y = objectPosition.Y - cameraPosition.Y;\n            result1.Z = objectPosition.Z - cameraPosition.Z;\n            float num = result1.LengthSquared();\n            if ((double)num < 9.99999974737875E-05)\n                result1 = cameraForwardVector.HasValue ? -cameraForwardVector.Value : Vector3.Forward;\n            else\n                Vector3.Multiply(ref result1, 1f / (float)Math.Sqrt((double)num), out result1);\n            Vector3 result2;\n            Vector3.Cross(ref cameraUpVector, ref result1, out result2);\n            result2.Normalize();\n            Vector3 result3;\n            Vector3.Cross(ref result1, ref result2, out result3);\n            Matrix matrix;\n            matrix.M11 = result2.X;\n            matrix.M12 = result2.Y;\n            matrix.M13 = result2.Z;\n            matrix.M14 = 0.0f;\n            matrix.M21 = result3.X;\n            matrix.M22 = result3.Y;\n            matrix.M23 = result3.Z;\n            matrix.M24 = 0.0f;\n            matrix.M31 = result1.X;\n            matrix.M32 = result1.Y;\n            matrix.M33 = result1.Z;\n            matrix.M34 = 0.0f;\n            matrix.M41 = objectPosition.X;\n            matrix.M42 = objectPosition.Y;\n            matrix.M43 = objectPosition.Z;\n            matrix.M44 = 1f;\n            return matrix;\n        }\n\n        /// <summary>\n        /// Creates a spherical billboard that rotates around a specified object position.\n        /// </summary>\n        /// <param name=\"objectPosition\">Position of the object the billboard will rotate around.</param><param name=\"cameraPosition\">Position of the camera.</param><param name=\"cameraUpVector\">The up vector of the camera.</param><param name=\"cameraForwardVector\">Optional forward vector of the camera.</param><param name=\"result\">[OutAttribute] The created billboard matrix.</param>\n        public static void CreateBillboard(ref Vector3 objectPosition, ref Vector3 cameraPosition, ref Vector3 cameraUpVector, Vector3? cameraForwardVector, out Matrix result)\n        {\n            Vector3 result1;\n            result1.X = objectPosition.X - cameraPosition.X;\n            result1.Y = objectPosition.Y - cameraPosition.Y;\n            result1.Z = objectPosition.Z - cameraPosition.Z;\n            float num = result1.LengthSquared();\n            if ((double)num < 9.99999974737875E-05)\n                result1 = cameraForwardVector.HasValue ? -cameraForwardVector.Value : Vector3.Forward;\n            else\n                Vector3.Multiply(ref result1, 1f / (float)Math.Sqrt((double)num), out result1);\n            Vector3 result2;\n            Vector3.Cross(ref cameraUpVector, ref result1, out result2);\n            result2.Normalize();\n            Vector3 result3;\n            Vector3.Cross(ref result1, ref result2, out result3);\n            result.M11 = result2.X;\n            result.M12 = result2.Y;\n            result.M13 = result2.Z;\n            result.M14 = 0.0f;\n            result.M21 = result3.X;\n            result.M22 = result3.Y;\n            result.M23 = result3.Z;\n            result.M24 = 0.0f;\n            result.M31 = result1.X;\n            result.M32 = result1.Y;\n            result.M33 = result1.Z;\n            result.M34 = 0.0f;\n            result.M41 = objectPosition.X;\n            result.M42 = objectPosition.Y;\n            result.M43 = objectPosition.Z;\n            result.M44 = 1f;\n        }\n\n        /// <summary>\n        /// Creates a cylindrical billboard that rotates around a specified axis.\n        /// </summary>\n        /// <param name=\"objectPosition\">Position of the object the billboard will rotate around.</param><param name=\"cameraPosition\">Position of the camera.</param><param name=\"rotateAxis\">Axis to rotate the billboard around.</param><param name=\"cameraForwardVector\">Optional forward vector of the camera.</param><param name=\"objectForwardVector\">Optional forward vector of the object.</param>\n        public static Matrix CreateConstrainedBillboard(Vector3 objectPosition, Vector3 cameraPosition, Vector3 rotateAxis, Vector3? cameraForwardVector, Vector3? objectForwardVector)\n        {\n            Vector3 result1;\n            result1.X = objectPosition.X - cameraPosition.X;\n            result1.Y = objectPosition.Y - cameraPosition.Y;\n            result1.Z = objectPosition.Z - cameraPosition.Z;\n            float num = result1.LengthSquared();\n            if ((double)num < 9.99999974737875E-05)\n                result1 = cameraForwardVector.HasValue ? -cameraForwardVector.Value : Vector3.Forward;\n            else\n                Vector3.Multiply(ref result1, 1f / (float)Math.Sqrt((double)num), out result1);\n            Vector3 vector2 = rotateAxis;\n            float result2;\n            Vector3.Dot(ref rotateAxis, ref result1, out result2);\n            Vector3 result3;\n            Vector3 result4;\n            if ((double)Math.Abs(result2) > 0.998254656791687)\n            {\n                if (objectForwardVector.HasValue)\n                {\n                    result3 = objectForwardVector.Value;\n                    Vector3.Dot(ref rotateAxis, ref result3, out result2);\n                    if ((double)Math.Abs(result2) > 0.998254656791687)\n                        result3 = (double)Math.Abs((float)((double)rotateAxis.X * (double)Vector3.Forward.X + (double)rotateAxis.Y * (double)Vector3.Forward.Y + (double)rotateAxis.Z * (double)Vector3.Forward.Z)) > 0.998254656791687 ? Vector3.Right : Vector3.Forward;\n                }\n                else\n                    result3 = (double)Math.Abs((float)((double)rotateAxis.X * (double)Vector3.Forward.X + (double)rotateAxis.Y * (double)Vector3.Forward.Y + (double)rotateAxis.Z * (double)Vector3.Forward.Z)) > 0.998254656791687 ? Vector3.Right : Vector3.Forward;\n                Vector3.Cross(ref rotateAxis, ref result3, out result4);\n                result4.Normalize();\n                Vector3.Cross(ref result4, ref rotateAxis, out result3);\n                result3.Normalize();\n            }\n            else\n            {\n                Vector3.Cross(ref rotateAxis, ref result1, out result4);\n                result4.Normalize();\n                Vector3.Cross(ref result4, ref vector2, out result3);\n                result3.Normalize();\n            }\n            Matrix matrix;\n            matrix.M11 = result4.X;\n            matrix.M12 = result4.Y;\n            matrix.M13 = result4.Z;\n            matrix.M14 = 0.0f;\n            matrix.M21 = vector2.X;\n            matrix.M22 = vector2.Y;\n            matrix.M23 = vector2.Z;\n            matrix.M24 = 0.0f;\n            matrix.M31 = result3.X;\n            matrix.M32 = result3.Y;\n            matrix.M33 = result3.Z;\n            matrix.M34 = 0.0f;\n            matrix.M41 = objectPosition.X;\n            matrix.M42 = objectPosition.Y;\n            matrix.M43 = objectPosition.Z;\n            matrix.M44 = 1f;\n            return matrix;\n        }\n\n        /// <summary>\n        /// Creates a cylindrical billboard that rotates around a specified axis.\n        /// </summary>\n        /// <param name=\"objectPosition\">Position of the object the billboard will rotate around.</param><param name=\"cameraPosition\">Position of the camera.</param><param name=\"rotateAxis\">Axis to rotate the billboard around.</param><param name=\"cameraForwardVector\">Optional forward vector of the camera.</param><param name=\"objectForwardVector\">Optional forward vector of the object.</param><param name=\"result\">[OutAttribute] The created billboard matrix.</param>\n        public static void CreateConstrainedBillboard(ref Vector3 objectPosition, ref Vector3 cameraPosition, ref Vector3 rotateAxis, Vector3? cameraForwardVector, Vector3? objectForwardVector, out Matrix result)\n        {\n            Vector3 result1;\n            result1.X = objectPosition.X - cameraPosition.X;\n            result1.Y = objectPosition.Y - cameraPosition.Y;\n            result1.Z = objectPosition.Z - cameraPosition.Z;\n            float num = result1.LengthSquared();\n            if ((double)num < 9.99999974737875E-05)\n                result1 = cameraForwardVector.HasValue ? -cameraForwardVector.Value : Vector3.Forward;\n            else\n                Vector3.Multiply(ref result1, 1f / (float)Math.Sqrt((double)num), out result1);\n            Vector3 vector2 = rotateAxis;\n            float result2;\n            Vector3.Dot(ref rotateAxis, ref result1, out result2);\n            Vector3 result3;\n            Vector3 result4;\n            if ((double)Math.Abs(result2) > 0.998254656791687)\n            {\n                if (objectForwardVector.HasValue)\n                {\n                    result3 = objectForwardVector.Value;\n                    Vector3.Dot(ref rotateAxis, ref result3, out result2);\n                    if ((double)Math.Abs(result2) > 0.998254656791687)\n                        result3 = (double)Math.Abs((float)((double)rotateAxis.X * (double)Vector3.Forward.X + (double)rotateAxis.Y * (double)Vector3.Forward.Y + (double)rotateAxis.Z * (double)Vector3.Forward.Z)) > 0.998254656791687 ? Vector3.Right : Vector3.Forward;\n                }\n                else\n                    result3 = (double)Math.Abs((float)((double)rotateAxis.X * (double)Vector3.Forward.X + (double)rotateAxis.Y * (double)Vector3.Forward.Y + (double)rotateAxis.Z * (double)Vector3.Forward.Z)) > 0.998254656791687 ? Vector3.Right : Vector3.Forward;\n                Vector3.Cross(ref rotateAxis, ref result3, out result4);\n                result4.Normalize();\n                Vector3.Cross(ref result4, ref rotateAxis, out result3);\n                result3.Normalize();\n            }\n            else\n            {\n                Vector3.Cross(ref rotateAxis, ref result1, out result4);\n                result4.Normalize();\n                Vector3.Cross(ref result4, ref vector2, out result3);\n                result3.Normalize();\n            }\n            result.M11 = result4.X;\n            result.M12 = result4.Y;\n            result.M13 = result4.Z;\n            result.M14 = 0.0f;\n            result.M21 = vector2.X;\n            result.M22 = vector2.Y;\n            result.M23 = vector2.Z;\n            result.M24 = 0.0f;\n            result.M31 = result3.X;\n            result.M32 = result3.Y;\n            result.M33 = result3.Z;\n            result.M34 = 0.0f;\n            result.M41 = objectPosition.X;\n            result.M42 = objectPosition.Y;\n            result.M43 = objectPosition.Z;\n            result.M44 = 1f;\n        }\n\n        /// <summary>\n        /// Creates a translation Matrix.\n        /// </summary>\n        /// <param name=\"position\">Amounts to translate by on the x, y, and z axes.</param>\n        public static Matrix CreateTranslation(Vector3 position)\n        {\n            Matrix matrix;\n            matrix.M11 = 1f;\n            matrix.M12 = 0.0f;\n            matrix.M13 = 0.0f;\n            matrix.M14 = 0.0f;\n            matrix.M21 = 0.0f;\n            matrix.M22 = 1f;\n            matrix.M23 = 0.0f;\n            matrix.M24 = 0.0f;\n            matrix.M31 = 0.0f;\n            matrix.M32 = 0.0f;\n            matrix.M33 = 1f;\n            matrix.M34 = 0.0f;\n            matrix.M41 = position.X;\n            matrix.M42 = position.Y;\n            matrix.M43 = position.Z;\n            matrix.M44 = 1f;\n            return matrix;\n        }\n\n        /// <summary>\n        /// Creates a translation Matrix.\n        /// </summary>\n        /// <param name=\"position\">Amounts to translate by on the x, y, and z axes.</param><param name=\"result\">[OutAttribute] The created translation Matrix.</param>\n        public static void CreateTranslation(ref Vector3 position, out Matrix result)\n        {\n            result.M11 = 1f;\n            result.M12 = 0.0f;\n            result.M13 = 0.0f;\n            result.M14 = 0.0f;\n            result.M21 = 0.0f;\n            result.M22 = 1f;\n            result.M23 = 0.0f;\n            result.M24 = 0.0f;\n            result.M31 = 0.0f;\n            result.M32 = 0.0f;\n            result.M33 = 1f;\n            result.M34 = 0.0f;\n            result.M41 = position.X;\n            result.M42 = position.Y;\n            result.M43 = position.Z;\n            result.M44 = 1f;\n        }\n\n        /// <summary>\n        /// Creates a translation Matrix.\n        /// </summary>\n        /// <param name=\"xPosition\">Value to translate by on the x-axis.</param><param name=\"yPosition\">Value to translate by on the y-axis.</param><param name=\"zPosition\">Value to translate by on the z-axis.</param>\n        public static Matrix CreateTranslation(float xPosition, float yPosition, float zPosition)\n        {\n            Matrix matrix;\n            matrix.M11 = 1f;\n            matrix.M12 = 0.0f;\n            matrix.M13 = 0.0f;\n            matrix.M14 = 0.0f;\n            matrix.M21 = 0.0f;\n            matrix.M22 = 1f;\n            matrix.M23 = 0.0f;\n            matrix.M24 = 0.0f;\n            matrix.M31 = 0.0f;\n            matrix.M32 = 0.0f;\n            matrix.M33 = 1f;\n            matrix.M34 = 0.0f;\n            matrix.M41 = xPosition;\n            matrix.M42 = yPosition;\n            matrix.M43 = zPosition;\n            matrix.M44 = 1f;\n            return matrix;\n        }\n\n        /// <summary>\n        /// Creates a translation Matrix.\n        /// </summary>\n        /// <param name=\"xPosition\">Value to translate by on the x-axis.</param><param name=\"yPosition\">Value to translate by on the y-axis.</param><param name=\"zPosition\">Value to translate by on the z-axis.</param><param name=\"result\">[OutAttribute] The created translation Matrix.</param>\n        public static void CreateTranslation(float xPosition, float yPosition, float zPosition, out Matrix result)\n        {\n            result.M11 = 1f;\n            result.M12 = 0.0f;\n            result.M13 = 0.0f;\n            result.M14 = 0.0f;\n            result.M21 = 0.0f;\n            result.M22 = 1f;\n            result.M23 = 0.0f;\n            result.M24 = 0.0f;\n            result.M31 = 0.0f;\n            result.M32 = 0.0f;\n            result.M33 = 1f;\n            result.M34 = 0.0f;\n            result.M41 = xPosition;\n            result.M42 = yPosition;\n            result.M43 = zPosition;\n            result.M44 = 1f;\n        }\n\n        /// <summary>\n        /// Creates a scaling Matrix.\n        /// </summary>\n        /// <param name=\"xScale\">Value to scale by on the x-axis.</param><param name=\"yScale\">Value to scale by on the y-axis.</param><param name=\"zScale\">Value to scale by on the z-axis.</param>\n        public static Matrix CreateScale(float xScale, float yScale, float zScale)\n        {\n            float num1 = xScale;\n            float num2 = yScale;\n            float num3 = zScale;\n            Matrix matrix;\n            matrix.M11 = num1;\n            matrix.M12 = 0.0f;\n            matrix.M13 = 0.0f;\n            matrix.M14 = 0.0f;\n            matrix.M21 = 0.0f;\n            matrix.M22 = num2;\n            matrix.M23 = 0.0f;\n            matrix.M24 = 0.0f;\n            matrix.M31 = 0.0f;\n            matrix.M32 = 0.0f;\n            matrix.M33 = num3;\n            matrix.M34 = 0.0f;\n            matrix.M41 = 0.0f;\n            matrix.M42 = 0.0f;\n            matrix.M43 = 0.0f;\n            matrix.M44 = 1f;\n            return matrix;\n        }\n\n        /// <summary>\n        /// Creates a scaling Matrix.\n        /// </summary>\n        /// <param name=\"xScale\">Value to scale by on the x-axis.</param><param name=\"yScale\">Value to scale by on the y-axis.</param><param name=\"zScale\">Value to scale by on the z-axis.</param><param name=\"result\">[OutAttribute] The created scaling Matrix.</param>\n        public static void CreateScale(float xScale, float yScale, float zScale, out Matrix result)\n        {\n            float num1 = xScale;\n            float num2 = yScale;\n            float num3 = zScale;\n            result.M11 = num1;\n            result.M12 = 0.0f;\n            result.M13 = 0.0f;\n            result.M14 = 0.0f;\n            result.M21 = 0.0f;\n            result.M22 = num2;\n            result.M23 = 0.0f;\n            result.M24 = 0.0f;\n            result.M31 = 0.0f;\n            result.M32 = 0.0f;\n            result.M33 = num3;\n            result.M34 = 0.0f;\n            result.M41 = 0.0f;\n            result.M42 = 0.0f;\n            result.M43 = 0.0f;\n            result.M44 = 1f;\n        }\n\n        /// <summary>\n        /// Creates a scaling Matrix.\n        /// </summary>\n        /// <param name=\"scales\">Amounts to scale by on the x, y, and z axes.</param>\n        public static Matrix CreateScale(Vector3 scales)\n        {\n            float num1 = scales.X;\n            float num2 = scales.Y;\n            float num3 = scales.Z;\n            Matrix matrix;\n            matrix.M11 = num1;\n            matrix.M12 = 0.0f;\n            matrix.M13 = 0.0f;\n            matrix.M14 = 0.0f;\n            matrix.M21 = 0.0f;\n            matrix.M22 = num2;\n            matrix.M23 = 0.0f;\n            matrix.M24 = 0.0f;\n            matrix.M31 = 0.0f;\n            matrix.M32 = 0.0f;\n            matrix.M33 = num3;\n            matrix.M34 = 0.0f;\n            matrix.M41 = 0.0f;\n            matrix.M42 = 0.0f;\n            matrix.M43 = 0.0f;\n            matrix.M44 = 1f;\n            return matrix;\n        }\n\n        /// <summary>\n        /// Creates a scaling Matrix.\n        /// </summary>\n        /// <param name=\"scales\">Amounts to scale by on the x, y, and z axes.</param><param name=\"result\">[OutAttribute] The created scaling Matrix.</param>\n        public static void CreateScale(ref Vector3 scales, out Matrix result)\n        {\n            float num1 = scales.X;\n            float num2 = scales.Y;\n            float num3 = scales.Z;\n            result.M11 = num1;\n            result.M12 = 0.0f;\n            result.M13 = 0.0f;\n            result.M14 = 0.0f;\n            result.M21 = 0.0f;\n            result.M22 = num2;\n            result.M23 = 0.0f;\n            result.M24 = 0.0f;\n            result.M31 = 0.0f;\n            result.M32 = 0.0f;\n            result.M33 = num3;\n            result.M34 = 0.0f;\n            result.M41 = 0.0f;\n            result.M42 = 0.0f;\n            result.M43 = 0.0f;\n            result.M44 = 1f;\n        }\n\n        /// <summary>\n        /// Creates a scaling Matrix.\n        /// </summary>\n        /// <param name=\"scale\">Amount to scale by.</param>\n        public static Matrix CreateScale(float scale)\n        {\n            float num = scale;\n            Matrix matrix;\n            matrix.M11 = num;\n            matrix.M12 = 0.0f;\n            matrix.M13 = 0.0f;\n            matrix.M14 = 0.0f;\n            matrix.M21 = 0.0f;\n            matrix.M22 = num;\n            matrix.M23 = 0.0f;\n            matrix.M24 = 0.0f;\n            matrix.M31 = 0.0f;\n            matrix.M32 = 0.0f;\n            matrix.M33 = num;\n            matrix.M34 = 0.0f;\n            matrix.M41 = 0.0f;\n            matrix.M42 = 0.0f;\n            matrix.M43 = 0.0f;\n            matrix.M44 = 1f;\n            return matrix;\n        }\n\n        /// <summary>\n        /// Creates a scaling Matrix.\n        /// </summary>\n        /// <param name=\"scale\">Value to scale by.</param><param name=\"result\">[OutAttribute] The created scaling Matrix.</param>\n        public static void CreateScale(float scale, out Matrix result)\n        {\n            float num = scale;\n            result.M11 = num;\n            result.M12 = 0.0f;\n            result.M13 = 0.0f;\n            result.M14 = 0.0f;\n            result.M21 = 0.0f;\n            result.M22 = num;\n            result.M23 = 0.0f;\n            result.M24 = 0.0f;\n            result.M31 = 0.0f;\n            result.M32 = 0.0f;\n            result.M33 = num;\n            result.M34 = 0.0f;\n            result.M41 = 0.0f;\n            result.M42 = 0.0f;\n            result.M43 = 0.0f;\n            result.M44 = 1f;\n        }\n\n        /// <summary>\n        /// Returns a matrix that can be used to rotate a set of vertices around the x-axis.\n        /// </summary>\n        /// <param name=\"radians\">The amount, in radians, in which to rotate around the x-axis. Note that you can use ToRadians to convert degrees to radians.</param>\n        public static Matrix CreateRotationX(float radians)\n        {\n            float num1 = (float)Math.Cos((double)radians);\n            float num2 = (float)Math.Sin((double)radians);\n            Matrix matrix;\n            matrix.M11 = 1f;\n            matrix.M12 = 0.0f;\n            matrix.M13 = 0.0f;\n            matrix.M14 = 0.0f;\n            matrix.M21 = 0.0f;\n            matrix.M22 = num1;\n            matrix.M23 = num2;\n            matrix.M24 = 0.0f;\n            matrix.M31 = 0.0f;\n            matrix.M32 = -num2;\n            matrix.M33 = num1;\n            matrix.M34 = 0.0f;\n            matrix.M41 = 0.0f;\n            matrix.M42 = 0.0f;\n            matrix.M43 = 0.0f;\n            matrix.M44 = 1f;\n            return matrix;\n        }\n\n        /// <summary>\n        /// Populates data into a user-specified matrix that can be used to rotate a set of vertices around the x-axis.\n        /// </summary>\n        /// <param name=\"radians\">The amount, in radians, in which to rotate around the x-axis. Note that you can use ToRadians to convert degrees to radians.</param><param name=\"result\">[OutAttribute] The matrix in which to place the calculated data.</param>\n        public static void CreateRotationX(float radians, out Matrix result)\n        {\n            float num1 = (float)Math.Cos((double)radians);\n            float num2 = (float)Math.Sin((double)radians);\n            result.M11 = 1f;\n            result.M12 = 0.0f;\n            result.M13 = 0.0f;\n            result.M14 = 0.0f;\n            result.M21 = 0.0f;\n            result.M22 = num1;\n            result.M23 = num2;\n            result.M24 = 0.0f;\n            result.M31 = 0.0f;\n            result.M32 = -num2;\n            result.M33 = num1;\n            result.M34 = 0.0f;\n            result.M41 = 0.0f;\n            result.M42 = 0.0f;\n            result.M43 = 0.0f;\n            result.M44 = 1f;\n        }\n\n        /// <summary>\n        /// Returns a matrix that can be used to rotate a set of vertices around the y-axis.\n        /// </summary>\n        /// <param name=\"radians\">The amount, in radians, in which to rotate around the y-axis. Note that you can use ToRadians to convert degrees to radians.</param>\n        public static Matrix CreateRotationY(float radians)\n        {\n            float num1 = (float)Math.Cos((double)radians);\n            float num2 = (float)Math.Sin((double)radians);\n            Matrix matrix;\n            matrix.M11 = num1;\n            matrix.M12 = 0.0f;\n            matrix.M13 = -num2;\n            matrix.M14 = 0.0f;\n            matrix.M21 = 0.0f;\n            matrix.M22 = 1f;\n            matrix.M23 = 0.0f;\n            matrix.M24 = 0.0f;\n            matrix.M31 = num2;\n            matrix.M32 = 0.0f;\n            matrix.M33 = num1;\n            matrix.M34 = 0.0f;\n            matrix.M41 = 0.0f;\n            matrix.M42 = 0.0f;\n            matrix.M43 = 0.0f;\n            matrix.M44 = 1f;\n            return matrix;\n        }\n\n        /// <summary>\n        /// Populates data into a user-specified matrix that can be used to rotate a set of vertices around the y-axis.\n        /// </summary>\n        /// <param name=\"radians\">The amount, in radians, in which to rotate around the y-axis. Note that you can use ToRadians to convert degrees to radians.</param><param name=\"result\">[OutAttribute] The matrix in which to place the calculated data.</param>\n        public static void CreateRotationY(float radians, out Matrix result)\n        {\n            float num1 = (float)Math.Cos((double)radians);\n            float num2 = (float)Math.Sin((double)radians);\n            result.M11 = num1;\n            result.M12 = 0.0f;\n            result.M13 = -num2;\n            result.M14 = 0.0f;\n            result.M21 = 0.0f;\n            result.M22 = 1f;\n            result.M23 = 0.0f;\n            result.M24 = 0.0f;\n            result.M31 = num2;\n            result.M32 = 0.0f;\n            result.M33 = num1;\n            result.M34 = 0.0f;\n            result.M41 = 0.0f;\n            result.M42 = 0.0f;\n            result.M43 = 0.0f;\n            result.M44 = 1f;\n        }\n\n        /// <summary>\n        /// Returns a matrix that can be used to rotate a set of vertices around the z-axis.\n        /// </summary>\n        /// <param name=\"radians\">The amount, in radians, in which to rotate around the z-axis. Note that you can use ToRadians to convert degrees to radians.</param>\n        public static Matrix CreateRotationZ(float radians)\n        {\n            float num1 = (float)Math.Cos((double)radians);\n            float num2 = (float)Math.Sin((double)radians);\n            Matrix matrix;\n            matrix.M11 = num1;\n            matrix.M12 = num2;\n            matrix.M13 = 0.0f;\n            matrix.M14 = 0.0f;\n            matrix.M21 = -num2;\n            matrix.M22 = num1;\n            matrix.M23 = 0.0f;\n            matrix.M24 = 0.0f;\n            matrix.M31 = 0.0f;\n            matrix.M32 = 0.0f;\n            matrix.M33 = 1f;\n            matrix.M34 = 0.0f;\n            matrix.M41 = 0.0f;\n            matrix.M42 = 0.0f;\n            matrix.M43 = 0.0f;\n            matrix.M44 = 1f;\n            return matrix;\n        }\n\n        /// <summary>\n        /// Populates data into a user-specified matrix that can be used to rotate a set of vertices around the z-axis.\n        /// </summary>\n        /// <param name=\"radians\">The amount, in radians, in which to rotate around the z-axis. Note that you can use ToRadians to convert degrees to radians.</param><param name=\"result\">[OutAttribute] The rotation matrix.</param>\n        public static void CreateRotationZ(float radians, out Matrix result)\n        {\n            float num1 = (float)Math.Cos((double)radians);\n            float num2 = (float)Math.Sin((double)radians);\n            result.M11 = num1;\n            result.M12 = num2;\n            result.M13 = 0.0f;\n            result.M14 = 0.0f;\n            result.M21 = -num2;\n            result.M22 = num1;\n            result.M23 = 0.0f;\n            result.M24 = 0.0f;\n            result.M31 = 0.0f;\n            result.M32 = 0.0f;\n            result.M33 = 1f;\n            result.M34 = 0.0f;\n            result.M41 = 0.0f;\n            result.M42 = 0.0f;\n            result.M43 = 0.0f;\n            result.M44 = 1f;\n        }\n\n        /// <summary>\n        /// Creates a new Matrix that rotates around an arbitrary vector.\n        /// </summary>\n        /// <param name=\"axis\">The axis to rotate around.</param><param name=\"angle\">The angle to rotate around the vector.</param>\n        public static Matrix CreateFromAxisAngle(Vector3 axis, float angle)\n        {\n            float num1 = axis.X;\n            float num2 = axis.Y;\n            float num3 = axis.Z;\n            float num4 = (float)Math.Sin((double)angle);\n            float num5 = (float)Math.Cos((double)angle);\n            float num6 = num1 * num1;\n            float num7 = num2 * num2;\n            float num8 = num3 * num3;\n            float num9 = num1 * num2;\n            float num10 = num1 * num3;\n            float num11 = num2 * num3;\n            Matrix matrix;\n            matrix.M11 = num6 + num5 * (1f - num6);\n            matrix.M12 = (float)((double)num9 - (double)num5 * (double)num9 + (double)num4 * (double)num3);\n            matrix.M13 = (float)((double)num10 - (double)num5 * (double)num10 - (double)num4 * (double)num2);\n            matrix.M14 = 0.0f;\n            matrix.M21 = (float)((double)num9 - (double)num5 * (double)num9 - (double)num4 * (double)num3);\n            matrix.M22 = num7 + num5 * (1f - num7);\n            matrix.M23 = (float)((double)num11 - (double)num5 * (double)num11 + (double)num4 * (double)num1);\n            matrix.M24 = 0.0f;\n            matrix.M31 = (float)((double)num10 - (double)num5 * (double)num10 + (double)num4 * (double)num2);\n            matrix.M32 = (float)((double)num11 - (double)num5 * (double)num11 - (double)num4 * (double)num1);\n            matrix.M33 = num8 + num5 * (1f - num8);\n            matrix.M34 = 0.0f;\n            matrix.M41 = 0.0f;\n            matrix.M42 = 0.0f;\n            matrix.M43 = 0.0f;\n            matrix.M44 = 1f;\n            return matrix;\n        }\n\n        /// <summary>\n        /// Creates a new Matrix that rotates around an arbitrary vector.\n        /// </summary>\n        /// <param name=\"axis\">The axis to rotate around.</param><param name=\"angle\">The angle to rotate around the vector.</param><param name=\"result\">[OutAttribute] The created Matrix.</param>\n        public static void CreateFromAxisAngle(ref Vector3 axis, float angle, out Matrix result)\n        {\n            float num1 = axis.X;\n            float num2 = axis.Y;\n            float num3 = axis.Z;\n            float num4 = (float)Math.Sin((double)angle);\n            float num5 = (float)Math.Cos((double)angle);\n            float num6 = num1 * num1;\n            float num7 = num2 * num2;\n            float num8 = num3 * num3;\n            float num9 = num1 * num2;\n            float num10 = num1 * num3;\n            float num11 = num2 * num3;\n            result.M11 = num6 + num5 * (1f - num6);\n            result.M12 = (float)((double)num9 - (double)num5 * (double)num9 + (double)num4 * (double)num3);\n            result.M13 = (float)((double)num10 - (double)num5 * (double)num10 - (double)num4 * (double)num2);\n            result.M14 = 0.0f;\n            result.M21 = (float)((double)num9 - (double)num5 * (double)num9 - (double)num4 * (double)num3);\n            result.M22 = num7 + num5 * (1f - num7);\n            result.M23 = (float)((double)num11 - (double)num5 * (double)num11 + (double)num4 * (double)num1);\n            result.M24 = 0.0f;\n            result.M31 = (float)((double)num10 - (double)num5 * (double)num10 + (double)num4 * (double)num2);\n            result.M32 = (float)((double)num11 - (double)num5 * (double)num11 - (double)num4 * (double)num1);\n            result.M33 = num8 + num5 * (1f - num8);\n            result.M34 = 0.0f;\n            result.M41 = 0.0f;\n            result.M42 = 0.0f;\n            result.M43 = 0.0f;\n            result.M44 = 1f;\n        }\n\n        /// <summary>\n        /// Builds a perspective projection matrix based on a field of view and returns by value.\n        /// </summary>\n        /// <param name=\"fieldOfView\">Field of view in the y direction, in radians.</param><param name=\"aspectRatio\">Aspect ratio, defined as view space width divided by height. To match the aspect ratio of the viewport, the property AspectRatio.</param><param name=\"nearPlaneDistance\">Distance to the near view plane.</param><param name=\"farPlaneDistance\">Distance to the far view plane.</param>\n        public static Matrix CreatePerspectiveFieldOfView(float fieldOfView, float aspectRatio, float nearPlaneDistance, float farPlaneDistance)\n        {\n            if ((double)fieldOfView <= 0.0 || (double)fieldOfView >= 3.14159274101257)\n                throw new ArgumentOutOfRangeException(\"fieldOfView\", string.Format((IFormatProvider)CultureInfo.CurrentCulture, \"OutRangeFieldOfView\", new object[1]\n        {\n          (object) \"fieldOfView\"\n        }));\n            else if ((double)nearPlaneDistance <= 0.0)\n                throw new ArgumentOutOfRangeException(\"nearPlaneDistance\", string.Format((IFormatProvider)CultureInfo.CurrentCulture, \"NegativePlaneDistance\", new object[1]\n        {\n          (object) \"nearPlaneDistance\"\n        }));\n            else if ((double)farPlaneDistance <= 0.0)\n            {\n                throw new ArgumentOutOfRangeException(\"farPlaneDistance\", string.Format((IFormatProvider)CultureInfo.CurrentCulture, \"NegativePlaneDistance\", new object[1]\n        {\n          (object) \"farPlaneDistance\"\n        }));\n            }\n            else\n            {\n                if ((double)nearPlaneDistance >= (double)farPlaneDistance)\n                    throw new ArgumentOutOfRangeException(\"nearPlaneDistance\", \"OppositePlanes\");\n                float num1 = 1f / (float)Math.Tan((double)fieldOfView * 0.5);\n                float num2 = num1 / aspectRatio;\n                Matrix matrix;\n                matrix.M11 = num2;\n                matrix.M12 = matrix.M13 = matrix.M14 = 0.0f;\n                matrix.M22 = num1;\n                matrix.M21 = matrix.M23 = matrix.M24 = 0.0f;\n                matrix.M31 = matrix.M32 = 0.0f;\n                matrix.M33 = farPlaneDistance / (nearPlaneDistance - farPlaneDistance);\n                matrix.M34 = -1f;\n                matrix.M41 = matrix.M42 = matrix.M44 = 0.0f;\n                matrix.M43 = (float)((double)nearPlaneDistance * (double)farPlaneDistance / ((double)nearPlaneDistance - (double)farPlaneDistance));\n                return matrix;\n            }\n        }\n\n        /// <summary>\n        /// Builds a perspective projection matrix based on a field of view and returns by reference.\n        /// </summary>\n        /// <param name=\"fieldOfView\">Field of view in the y direction, in radians.</param><param name=\"aspectRatio\">Aspect ratio, defined as view space width divided by height. To match the aspect ratio of the viewport, the property AspectRatio.</param><param name=\"nearPlaneDistance\">Distance to the near view plane.</param><param name=\"farPlaneDistance\">Distance to the far view plane.</param><param name=\"result\">[OutAttribute] The perspective projection matrix.</param>\n        public static void CreatePerspectiveFieldOfView(float fieldOfView, float aspectRatio, float nearPlaneDistance, float farPlaneDistance, out Matrix result)\n        {\n            if ((double)fieldOfView <= 0.0 || (double)fieldOfView >= 3.14159274101257)\n                throw new ArgumentOutOfRangeException(\"fieldOfView\", string.Format((IFormatProvider)CultureInfo.CurrentCulture, \"OutRangeFieldOfView\", new object[1]\n        {\n          (object) \"fieldOfView\"\n        }));\n            else if ((double)nearPlaneDistance <= 0.0)\n                throw new ArgumentOutOfRangeException(\"nearPlaneDistance\", string.Format((IFormatProvider)CultureInfo.CurrentCulture, \"NegativePlaneDistance\", new object[1]\n        {\n          (object) \"nearPlaneDistance\"\n        }));\n            else if ((double)farPlaneDistance <= 0.0)\n            {\n                throw new ArgumentOutOfRangeException(\"farPlaneDistance\", string.Format((IFormatProvider)CultureInfo.CurrentCulture, \"NegativePlaneDistance\", new object[1]\n        {\n          (object) \"farPlaneDistance\"\n        }));\n            }\n            else\n            {\n                if ((double)nearPlaneDistance >= (double)farPlaneDistance)\n                    throw new ArgumentOutOfRangeException(\"nearPlaneDistance\", \"OppositePlanes\");\n                float num1 = 1f / (float)Math.Tan((double)fieldOfView * 0.5);\n                float num2 = num1 / aspectRatio;\n                result.M11 = num2;\n                result.M12 = result.M13 = result.M14 = 0.0f;\n                result.M22 = num1;\n                result.M21 = result.M23 = result.M24 = 0.0f;\n                result.M31 = result.M32 = 0.0f;\n                result.M33 = farPlaneDistance / (nearPlaneDistance - farPlaneDistance);\n                result.M34 = -1f;\n                result.M41 = result.M42 = result.M44 = 0.0f;\n                result.M43 = (float)((double)nearPlaneDistance * (double)farPlaneDistance / ((double)nearPlaneDistance - (double)farPlaneDistance));\n            }\n        }\n\n        /// <summary>\n        /// Builds a perspective projection matrix and returns the result by value.\n        /// </summary>\n        /// <param name=\"width\">Width of the view volume at the near view plane.</param><param name=\"height\">Height of the view volume at the near view plane.</param><param name=\"nearPlaneDistance\">Distance to the near view plane.</param><param name=\"farPlaneDistance\">Distance to the far view plane.</param>\n        public static Matrix CreatePerspective(float width, float height, float nearPlaneDistance, float farPlaneDistance)\n        {\n            if ((double)nearPlaneDistance <= 0.0)\n                throw new ArgumentOutOfRangeException(\"nearPlaneDistance\", string.Format((IFormatProvider)CultureInfo.CurrentCulture, \"NegativePlaneDistance\", new object[1]\n        {\n          (object) \"nearPlaneDistance\"\n        }));\n            else if ((double)farPlaneDistance <= 0.0)\n            {\n                throw new ArgumentOutOfRangeException(\"farPlaneDistance\", string.Format((IFormatProvider)CultureInfo.CurrentCulture, \"NegativePlaneDistance\", new object[1]\n        {\n          (object) \"farPlaneDistance\"\n        }));\n            }\n            else\n            {\n                if ((double)nearPlaneDistance >= (double)farPlaneDistance)\n                    throw new ArgumentOutOfRangeException(\"nearPlaneDistance\", \"OppositePlanes\");\n                Matrix matrix;\n                matrix.M11 = 2f * nearPlaneDistance / width;\n                matrix.M12 = matrix.M13 = matrix.M14 = 0.0f;\n                matrix.M22 = 2f * nearPlaneDistance / height;\n                matrix.M21 = matrix.M23 = matrix.M24 = 0.0f;\n                matrix.M33 = farPlaneDistance / (nearPlaneDistance - farPlaneDistance);\n                matrix.M31 = matrix.M32 = 0.0f;\n                matrix.M34 = -1f;\n                matrix.M41 = matrix.M42 = matrix.M44 = 0.0f;\n                matrix.M43 = (float)((double)nearPlaneDistance * (double)farPlaneDistance / ((double)nearPlaneDistance - (double)farPlaneDistance));\n                return matrix;\n            }\n        }\n\n        /// <summary>\n        /// Builds a perspective projection matrix and returns the result by reference.\n        /// </summary>\n        /// <param name=\"width\">Width of the view volume at the near view plane.</param><param name=\"height\">Height of the view volume at the near view plane.</param><param name=\"nearPlaneDistance\">Distance to the near view plane.</param><param name=\"farPlaneDistance\">Distance to the far view plane.</param><param name=\"result\">[OutAttribute] The projection matrix.</param>\n        public static void CreatePerspective(float width, float height, float nearPlaneDistance, float farPlaneDistance, out Matrix result)\n        {\n            if ((double)nearPlaneDistance <= 0.0)\n                throw new ArgumentOutOfRangeException(\"nearPlaneDistance\", string.Format((IFormatProvider)CultureInfo.CurrentCulture, \"NegativePlaneDistance\", new object[1]\n        {\n          (object) \"nearPlaneDistance\"\n        }));\n            else if ((double)farPlaneDistance <= 0.0)\n            {\n                throw new ArgumentOutOfRangeException(\"farPlaneDistance\", string.Format((IFormatProvider)CultureInfo.CurrentCulture, \"NegativePlaneDistance\", new object[1]\n        {\n          (object) \"farPlaneDistance\"\n        }));\n            }\n            else\n            {\n                if ((double)nearPlaneDistance >= (double)farPlaneDistance)\n                    throw new ArgumentOutOfRangeException(\"nearPlaneDistance\", \"OppositePlanes\");\n                result.M11 = 2f * nearPlaneDistance / width;\n                result.M12 = result.M13 = result.M14 = 0.0f;\n                result.M22 = 2f * nearPlaneDistance / height;\n                result.M21 = result.M23 = result.M24 = 0.0f;\n                result.M33 = farPlaneDistance / (nearPlaneDistance - farPlaneDistance);\n                result.M31 = result.M32 = 0.0f;\n                result.M34 = -1f;\n                result.M41 = result.M42 = result.M44 = 0.0f;\n                result.M43 = (float)((double)nearPlaneDistance * (double)farPlaneDistance / ((double)nearPlaneDistance - (double)farPlaneDistance));\n            }\n        }\n\n        /// <summary>\n        /// Builds a customized, perspective projection matrix.\n        /// </summary>\n        /// <param name=\"left\">Minimum x-value of the view volume at the near view plane.</param><param name=\"right\">Maximum x-value of the view volume at the near view plane.</param><param name=\"bottom\">Minimum y-value of the view volume at the near view plane.</param><param name=\"top\">Maximum y-value of the view volume at the near view plane.</param><param name=\"nearPlaneDistance\">Distance to the near view plane.</param><param name=\"farPlaneDistance\">Distance to of the far view plane.</param>\n        public static Matrix CreatePerspectiveOffCenter(float left, float right, float bottom, float top, float nearPlaneDistance, float farPlaneDistance)\n        {\n            if ((double)nearPlaneDistance <= 0.0)\n                throw new ArgumentOutOfRangeException(\"nearPlaneDistance\", string.Format((IFormatProvider)CultureInfo.CurrentCulture, \"NegativePlaneDistance\", new object[1]\n        {\n          (object) \"nearPlaneDistance\"\n        }));\n            else if ((double)farPlaneDistance <= 0.0)\n            {\n                throw new ArgumentOutOfRangeException(\"farPlaneDistance\", string.Format((IFormatProvider)CultureInfo.CurrentCulture, \"NegativePlaneDistance\", new object[1]\n        {\n          (object) \"farPlaneDistance\"\n        }));\n            }\n            else\n            {\n                if ((double)nearPlaneDistance >= (double)farPlaneDistance)\n                    throw new ArgumentOutOfRangeException(\"nearPlaneDistance\", \"OppositePlanes\");\n                Matrix matrix;\n                matrix.M11 = (float)(2.0 * (double)nearPlaneDistance / ((double)right - (double)left));\n                matrix.M12 = matrix.M13 = matrix.M14 = 0.0f;\n                matrix.M22 = (float)(2.0 * (double)nearPlaneDistance / ((double)top - (double)bottom));\n                matrix.M21 = matrix.M23 = matrix.M24 = 0.0f;\n                matrix.M31 = (float)(((double)left + (double)right) / ((double)right - (double)left));\n                matrix.M32 = (float)(((double)top + (double)bottom) / ((double)top - (double)bottom));\n                matrix.M33 = farPlaneDistance / (nearPlaneDistance - farPlaneDistance);\n                matrix.M34 = -1f;\n                matrix.M43 = (float)((double)nearPlaneDistance * (double)farPlaneDistance / ((double)nearPlaneDistance - (double)farPlaneDistance));\n                matrix.M41 = matrix.M42 = matrix.M44 = 0.0f;\n                return matrix;\n            }\n        }\n\n        /// <summary>\n        /// Builds a customized, perspective projection matrix.\n        /// </summary>\n        /// <param name=\"left\">Minimum x-value of the view volume at the near view plane.</param><param name=\"right\">Maximum x-value of the view volume at the near view plane.</param><param name=\"bottom\">Minimum y-value of the view volume at the near view plane.</param><param name=\"top\">Maximum y-value of the view volume at the near view plane.</param><param name=\"nearPlaneDistance\">Distance to the near view plane.</param><param name=\"farPlaneDistance\">Distance to of the far view plane.</param><param name=\"result\">[OutAttribute] The created projection matrix.</param>\n        public static void CreatePerspectiveOffCenter(float left, float right, float bottom, float top, float nearPlaneDistance, float farPlaneDistance, out Matrix result)\n        {\n            if ((double)nearPlaneDistance <= 0.0)\n                throw new ArgumentOutOfRangeException(\"nearPlaneDistance\", string.Format((IFormatProvider)CultureInfo.CurrentCulture, \"NegativePlaneDistance\", new object[1]\n        {\n          (object) \"nearPlaneDistance\"\n        }));\n            else if ((double)farPlaneDistance <= 0.0)\n            {\n                throw new ArgumentOutOfRangeException(\"farPlaneDistance\", string.Format((IFormatProvider)CultureInfo.CurrentCulture, \"NegativePlaneDistance\", new object[1]\n        {\n          (object) \"farPlaneDistance\"\n        }));\n            }\n            else\n            {\n                if ((double)nearPlaneDistance >= (double)farPlaneDistance)\n                    throw new ArgumentOutOfRangeException(\"nearPlaneDistance\", \"OppositePlanes\");\n                result.M11 = (float)(2.0 * (double)nearPlaneDistance / ((double)right - (double)left));\n                result.M12 = result.M13 = result.M14 = 0.0f;\n                result.M22 = (float)(2.0 * (double)nearPlaneDistance / ((double)top - (double)bottom));\n                result.M21 = result.M23 = result.M24 = 0.0f;\n                result.M31 = (float)(((double)left + (double)right) / ((double)right - (double)left));\n                result.M32 = (float)(((double)top + (double)bottom) / ((double)top - (double)bottom));\n                result.M33 = farPlaneDistance / (nearPlaneDistance - farPlaneDistance);\n                result.M34 = -1f;\n                result.M43 = (float)((double)nearPlaneDistance * (double)farPlaneDistance / ((double)nearPlaneDistance - (double)farPlaneDistance));\n                result.M41 = result.M42 = result.M44 = 0.0f;\n            }\n        }\n\n        /// <summary>\n        /// Builds an orthogonal projection matrix.\n        /// </summary>\n        /// <param name=\"width\">Width of the view volume.</param><param name=\"height\">Height of the view volume.</param><param name=\"zNearPlane\">Minimum z-value of the view volume.</param><param name=\"zFarPlane\">Maximum z-value of the view volume.</param>\n        public static Matrix CreateOrthographic(float width, float height, float zNearPlane, float zFarPlane)\n        {\n            Matrix matrix;\n            matrix.M11 = 2f / width;\n            matrix.M12 = matrix.M13 = matrix.M14 = 0.0f;\n            matrix.M22 = 2f / height;\n            matrix.M21 = matrix.M23 = matrix.M24 = 0.0f;\n            matrix.M33 = (float)(1.0 / ((double)zNearPlane - (double)zFarPlane));\n            matrix.M31 = matrix.M32 = matrix.M34 = 0.0f;\n            matrix.M41 = matrix.M42 = 0.0f;\n            matrix.M43 = zNearPlane / (zNearPlane - zFarPlane);\n            matrix.M44 = 1f;\n            return matrix;\n        }\n\n        /// <summary>\n        /// Builds an orthogonal projection matrix.\n        /// </summary>\n        /// <param name=\"width\">Width of the view volume.</param><param name=\"height\">Height of the view volume.</param><param name=\"zNearPlane\">Minimum z-value of the view volume.</param><param name=\"zFarPlane\">Maximum z-value of the view volume.</param><param name=\"result\">[OutAttribute] The projection matrix.</param>\n        public static void CreateOrthographic(float width, float height, float zNearPlane, float zFarPlane, out Matrix result)\n        {\n            result.M11 = 2f / width;\n            result.M12 = result.M13 = result.M14 = 0.0f;\n            result.M22 = 2f / height;\n            result.M21 = result.M23 = result.M24 = 0.0f;\n            result.M33 = (float)(1.0 / ((double)zNearPlane - (double)zFarPlane));\n            result.M31 = result.M32 = result.M34 = 0.0f;\n            result.M41 = result.M42 = 0.0f;\n            result.M43 = zNearPlane / (zNearPlane - zFarPlane);\n            result.M44 = 1f;\n        }\n\n        /// <summary>\n        /// Builds a customized, orthogonal projection matrix.\n        /// </summary>\n        /// <param name=\"left\">Minimum x-value of the view volume.</param><param name=\"right\">Maximum x-value of the view volume.</param><param name=\"bottom\">Minimum y-value of the view volume.</param><param name=\"top\">Maximum y-value of the view volume.</param><param name=\"zNearPlane\">Minimum z-value of the view volume.</param><param name=\"zFarPlane\">Maximum z-value of the view volume.</param>\n        public static Matrix CreateOrthographicOffCenter(float left, float right, float bottom, float top, float zNearPlane, float zFarPlane)\n        {\n            Matrix matrix;\n            matrix.M11 = (float)(2.0 / ((double)right - (double)left));\n            matrix.M12 = matrix.M13 = matrix.M14 = 0.0f;\n            matrix.M22 = (float)(2.0 / ((double)top - (double)bottom));\n            matrix.M21 = matrix.M23 = matrix.M24 = 0.0f;\n            matrix.M33 = (float)(1.0 / ((double)zNearPlane - (double)zFarPlane));\n            matrix.M31 = matrix.M32 = matrix.M34 = 0.0f;\n            matrix.M41 = (float)(((double)left + (double)right) / ((double)left - (double)right));\n            matrix.M42 = (float)(((double)top + (double)bottom) / ((double)bottom - (double)top));\n            matrix.M43 = zNearPlane / (zNearPlane - zFarPlane);\n            matrix.M44 = 1f;\n            return matrix;\n        }\n\n        /// <summary>\n        /// Builds a customized, orthogonal projection matrix.\n        /// </summary>\n        /// <param name=\"left\">Minimum x-value of the view volume.</param><param name=\"right\">Maximum x-value of the view volume.</param><param name=\"bottom\">Minimum y-value of the view volume.</param><param name=\"top\">Maximum y-value of the view volume.</param><param name=\"zNearPlane\">Minimum z-value of the view volume.</param><param name=\"zFarPlane\">Maximum z-value of the view volume.</param><param name=\"result\">[OutAttribute] The projection matrix.</param>\n        public static void CreateOrthographicOffCenter(float left, float right, float bottom, float top, float zNearPlane, float zFarPlane, out Matrix result)\n        {\n            result.M11 = (float)(2.0 / ((double)right - (double)left));\n            result.M12 = result.M13 = result.M14 = 0.0f;\n            result.M22 = (float)(2.0 / ((double)top - (double)bottom));\n            result.M21 = result.M23 = result.M24 = 0.0f;\n            result.M33 = (float)(1.0 / ((double)zNearPlane - (double)zFarPlane));\n            result.M31 = result.M32 = result.M34 = 0.0f;\n            result.M41 = (float)(((double)left + (double)right) / ((double)left - (double)right));\n            result.M42 = (float)(((double)top + (double)bottom) / ((double)bottom - (double)top));\n            result.M43 = zNearPlane / (zNearPlane - zFarPlane);\n            result.M44 = 1f;\n        }\n\n        /// <summary>\n        /// Creates a view matrix.\n        /// </summary>\n        /// <param name=\"cameraPosition\">The position of the camera.</param><param name=\"cameraTarget\">The target towards which the camera is pointing.</param><param name=\"cameraUpVector\">The direction that is \"up\" from the camera's point of view.</param>\n        public static Matrix CreateLookAt(Vector3 cameraPosition, Vector3 cameraTarget, Vector3 cameraUpVector)\n        {\n            Vector3 vector3_1 = Vector3.Normalize(cameraPosition - cameraTarget);\n            Vector3 vector3_2 = Vector3.Normalize(Vector3.Cross(cameraUpVector, vector3_1));\n            Vector3 vector1 = Vector3.Cross(vector3_1, vector3_2);\n            Matrix matrix;\n            matrix.M11 = vector3_2.X;\n            matrix.M12 = vector1.X;\n            matrix.M13 = vector3_1.X;\n            matrix.M14 = 0.0f;\n            matrix.M21 = vector3_2.Y;\n            matrix.M22 = vector1.Y;\n            matrix.M23 = vector3_1.Y;\n            matrix.M24 = 0.0f;\n            matrix.M31 = vector3_2.Z;\n            matrix.M32 = vector1.Z;\n            matrix.M33 = vector3_1.Z;\n            matrix.M34 = 0.0f;\n            matrix.M41 = -Vector3.Dot(vector3_2, cameraPosition);\n            matrix.M42 = -Vector3.Dot(vector1, cameraPosition);\n            matrix.M43 = -Vector3.Dot(vector3_1, cameraPosition);\n            matrix.M44 = 1f;\n            return matrix;\n        }\n\n        /// <summary>\n        /// Creates a view matrix.\n        /// </summary>\n        /// <param name=\"cameraPosition\">The position of the camera.</param><param name=\"cameraTarget\">The target towards which the camera is pointing.</param><param name=\"cameraUpVector\">The direction that is \"up\" from the camera's point of view.</param><param name=\"result\">[OutAttribute] The created view matrix.</param>\n        public static void CreateLookAt(ref Vector3 cameraPosition, ref Vector3 cameraTarget, ref Vector3 cameraUpVector, out Matrix result)\n        {\n            Vector3 vector3_1 = Vector3.Normalize(cameraPosition - cameraTarget);\n            Vector3 vector3_2 = Vector3.Normalize(Vector3.Cross(cameraUpVector, vector3_1));\n            Vector3 vector1 = Vector3.Cross(vector3_1, vector3_2);\n            result.M11 = vector3_2.X;\n            result.M12 = vector1.X;\n            result.M13 = vector3_1.X;\n            result.M14 = 0.0f;\n            result.M21 = vector3_2.Y;\n            result.M22 = vector1.Y;\n            result.M23 = vector3_1.Y;\n            result.M24 = 0.0f;\n            result.M31 = vector3_2.Z;\n            result.M32 = vector1.Z;\n            result.M33 = vector3_1.Z;\n            result.M34 = 0.0f;\n            result.M41 = -Vector3.Dot(vector3_2, cameraPosition);\n            result.M42 = -Vector3.Dot(vector1, cameraPosition);\n            result.M43 = -Vector3.Dot(vector3_1, cameraPosition);\n            result.M44 = 1f;\n        }\n\n        /// <summary>\n        /// Creates a world matrix with the specified parameters.\n        /// </summary>\n        /// <param name=\"position\">Position of the object. This value is used in translation operations.</param><param name=\"forward\">Forward direction of the object.</param><param name=\"up\">Upward direction of the object; usually [0, 1, 0].</param>\n        public static Matrix CreateWorld(Vector3 position, Vector3 forward, Vector3 up)\n        {\n            Vector3 vector3_1 = Vector3.Normalize(-forward);\n            Vector3 vector2 = Vector3.Normalize(Vector3.Cross(up, vector3_1));\n            Vector3 vector3_2 = Vector3.Cross(vector3_1, vector2);\n            Matrix matrix;\n            matrix.M11 = vector2.X;\n            matrix.M12 = vector2.Y;\n            matrix.M13 = vector2.Z;\n            matrix.M14 = 0.0f;\n            matrix.M21 = vector3_2.X;\n            matrix.M22 = vector3_2.Y;\n            matrix.M23 = vector3_2.Z;\n            matrix.M24 = 0.0f;\n            matrix.M31 = vector3_1.X;\n            matrix.M32 = vector3_1.Y;\n            matrix.M33 = vector3_1.Z;\n            matrix.M34 = 0.0f;\n            matrix.M41 = position.X;\n            matrix.M42 = position.Y;\n            matrix.M43 = position.Z;\n            matrix.M44 = 1f;\n            return matrix;\n        }\n\n        /// <summary>\n        /// Creates a world matrix with the specified parameters.\n        /// </summary>\n        /// <param name=\"position\">Position of the object. This value is used in translation operations.</param><param name=\"forward\">Forward direction of the object.</param><param name=\"up\">Upward direction of the object; usually [0, 1, 0].</param><param name=\"result\">[OutAttribute] The created world matrix.</param>\n        public static void CreateWorld(ref Vector3 position, ref Vector3 forward, ref Vector3 up, out Matrix result)\n        {\n            Vector3 vector3_1 = Vector3.Normalize(-forward);\n            Vector3 vector2 = Vector3.Normalize(Vector3.Cross(up, vector3_1));\n            Vector3 vector3_2 = Vector3.Cross(vector3_1, vector2);\n            result.M11 = vector2.X;\n            result.M12 = vector2.Y;\n            result.M13 = vector2.Z;\n            result.M14 = 0.0f;\n            result.M21 = vector3_2.X;\n            result.M22 = vector3_2.Y;\n            result.M23 = vector3_2.Z;\n            result.M24 = 0.0f;\n            result.M31 = vector3_1.X;\n            result.M32 = vector3_1.Y;\n            result.M33 = vector3_1.Z;\n            result.M34 = 0.0f;\n            result.M41 = position.X;\n            result.M42 = position.Y;\n            result.M43 = position.Z;\n            result.M44 = 1f;\n        }\n\n        /// <summary>\n        /// Creates a rotation Matrix from a Quaternion.\n        /// </summary>\n        /// <param name=\"quaternion\">Quaternion to create the Matrix from.</param>\n        public static Matrix CreateFromQuaternion(Quaternion quaternion)\n        {\n            float num1 = quaternion.X * quaternion.X;\n            float num2 = quaternion.Y * quaternion.Y;\n            float num3 = quaternion.Z * quaternion.Z;\n            float num4 = quaternion.X * quaternion.Y;\n            float num5 = quaternion.Z * quaternion.W;\n            float num6 = quaternion.Z * quaternion.X;\n            float num7 = quaternion.Y * quaternion.W;\n            float num8 = quaternion.Y * quaternion.Z;\n            float num9 = quaternion.X * quaternion.W;\n            Matrix matrix;\n            matrix.M11 = (float)(1.0 - 2.0 * ((double)num2 + (double)num3));\n            matrix.M12 = (float)(2.0 * ((double)num4 + (double)num5));\n            matrix.M13 = (float)(2.0 * ((double)num6 - (double)num7));\n            matrix.M14 = 0.0f;\n            matrix.M21 = (float)(2.0 * ((double)num4 - (double)num5));\n            matrix.M22 = (float)(1.0 - 2.0 * ((double)num3 + (double)num1));\n            matrix.M23 = (float)(2.0 * ((double)num8 + (double)num9));\n            matrix.M24 = 0.0f;\n            matrix.M31 = (float)(2.0 * ((double)num6 + (double)num7));\n            matrix.M32 = (float)(2.0 * ((double)num8 - (double)num9));\n            matrix.M33 = (float)(1.0 - 2.0 * ((double)num2 + (double)num1));\n            matrix.M34 = 0.0f;\n            matrix.M41 = 0.0f;\n            matrix.M42 = 0.0f;\n            matrix.M43 = 0.0f;\n            matrix.M44 = 1f;\n            return matrix;\n        }\n\n        /// <summary>\n        /// Creates a rotation Matrix from a Quaternion.\n        /// </summary>\n        /// <param name=\"quaternion\">Quaternion to create the Matrix from.</param><param name=\"result\">[OutAttribute] The created Matrix.</param>\n        public static void CreateFromQuaternion(ref Quaternion quaternion, out Matrix result)\n        {\n            float num1 = quaternion.X * quaternion.X;\n            float num2 = quaternion.Y * quaternion.Y;\n            float num3 = quaternion.Z * quaternion.Z;\n            float num4 = quaternion.X * quaternion.Y;\n            float num5 = quaternion.Z * quaternion.W;\n            float num6 = quaternion.Z * quaternion.X;\n            float num7 = quaternion.Y * quaternion.W;\n            float num8 = quaternion.Y * quaternion.Z;\n            float num9 = quaternion.X * quaternion.W;\n            result.M11 = (float)(1.0 - 2.0 * ((double)num2 + (double)num3));\n            result.M12 = (float)(2.0 * ((double)num4 + (double)num5));\n            result.M13 = (float)(2.0 * ((double)num6 - (double)num7));\n            result.M14 = 0.0f;\n            result.M21 = (float)(2.0 * ((double)num4 - (double)num5));\n            result.M22 = (float)(1.0 - 2.0 * ((double)num3 + (double)num1));\n            result.M23 = (float)(2.0 * ((double)num8 + (double)num9));\n            result.M24 = 0.0f;\n            result.M31 = (float)(2.0 * ((double)num6 + (double)num7));\n            result.M32 = (float)(2.0 * ((double)num8 - (double)num9));\n            result.M33 = (float)(1.0 - 2.0 * ((double)num2 + (double)num1));\n            result.M34 = 0.0f;\n            result.M41 = 0.0f;\n            result.M42 = 0.0f;\n            result.M43 = 0.0f;\n            result.M44 = 1f;\n        }\n\n        /// <summary>\n        /// Creates a new rotation matrix from a specified yaw, pitch, and roll.\n        /// </summary>\n        /// <param name=\"yaw\">Angle of rotation, in radians, around the y-axis.</param><param name=\"pitch\">Angle of rotation, in radians, around the x-axis.</param><param name=\"roll\">Angle of rotation, in radians, around the z-axis.</param>\n        public static Matrix CreateFromYawPitchRoll(float yaw, float pitch, float roll)\n        {\n            Quaternion result1;\n            Quaternion.CreateFromYawPitchRoll(yaw, pitch, roll, out result1);\n            Matrix result2;\n            Matrix.CreateFromQuaternion(ref result1, out result2);\n            return result2;\n        }\n\n        /// <summary>\n        /// Fills in a rotation matrix from a specified yaw, pitch, and roll.\n        /// </summary>\n        /// <param name=\"yaw\">Angle of rotation, in radians, around the y-axis.</param><param name=\"pitch\">Angle of rotation, in radians, around the x-axis.</param><param name=\"roll\">Angle of rotation, in radians, around the z-axis.</param><param name=\"result\">[OutAttribute] An existing matrix filled in to represent the specified yaw, pitch, and roll.</param>\n        public static void CreateFromYawPitchRoll(float yaw, float pitch, float roll, out Matrix result)\n        {\n            Quaternion result1;\n            Quaternion.CreateFromYawPitchRoll(yaw, pitch, roll, out result1);\n            Matrix.CreateFromQuaternion(ref result1, out result);\n        }\n\n        /// <summary>\n        /// Creates a Matrix that flattens geometry into a specified Plane as if casting a shadow from a specified light source.\n        /// </summary>\n        /// <param name=\"lightDirection\">A Vector3 specifying the direction from which the light that will cast the shadow is coming.</param><param name=\"plane\">The Plane onto which the new matrix should flatten geometry so as to cast a shadow.</param>\n        public static Matrix CreateShadow(Vector3 lightDirection, Plane plane)\n        {\n            Plane result;\n            Plane.Normalize(ref plane, out result);\n            float num1 = (float)((double)result.Normal.X * (double)lightDirection.X + (double)result.Normal.Y * (double)lightDirection.Y + (double)result.Normal.Z * (double)lightDirection.Z);\n            float num2 = -result.Normal.X;\n            float num3 = -result.Normal.Y;\n            float num4 = -result.Normal.Z;\n            float num5 = -result.D;\n            Matrix matrix;\n            matrix.M11 = num2 * lightDirection.X + num1;\n            matrix.M21 = num3 * lightDirection.X;\n            matrix.M31 = num4 * lightDirection.X;\n            matrix.M41 = num5 * lightDirection.X;\n            matrix.M12 = num2 * lightDirection.Y;\n            matrix.M22 = num3 * lightDirection.Y + num1;\n            matrix.M32 = num4 * lightDirection.Y;\n            matrix.M42 = num5 * lightDirection.Y;\n            matrix.M13 = num2 * lightDirection.Z;\n            matrix.M23 = num3 * lightDirection.Z;\n            matrix.M33 = num4 * lightDirection.Z + num1;\n            matrix.M43 = num5 * lightDirection.Z;\n            matrix.M14 = 0.0f;\n            matrix.M24 = 0.0f;\n            matrix.M34 = 0.0f;\n            matrix.M44 = num1;\n            return matrix;\n        }\n\n        /// <summary>\n        /// Fills in a Matrix to flatten geometry into a specified Plane as if casting a shadow from a specified light source.\n        /// </summary>\n        /// <param name=\"lightDirection\">A Vector3 specifying the direction from which the light that will cast the shadow is coming.</param><param name=\"plane\">The Plane onto which the new matrix should flatten geometry so as to cast a shadow.</param><param name=\"result\">[OutAttribute] A Matrix that can be used to flatten geometry onto the specified plane from the specified direction.</param>\n        public static void CreateShadow(ref Vector3 lightDirection, ref Plane plane, out Matrix result)\n        {\n            Plane result1;\n            Plane.Normalize(ref plane, out result1);\n            float num1 = (float)((double)result1.Normal.X * (double)lightDirection.X + (double)result1.Normal.Y * (double)lightDirection.Y + (double)result1.Normal.Z * (double)lightDirection.Z);\n            float num2 = -result1.Normal.X;\n            float num3 = -result1.Normal.Y;\n            float num4 = -result1.Normal.Z;\n            float num5 = -result1.D;\n            result.M11 = num2 * lightDirection.X + num1;\n            result.M21 = num3 * lightDirection.X;\n            result.M31 = num4 * lightDirection.X;\n            result.M41 = num5 * lightDirection.X;\n            result.M12 = num2 * lightDirection.Y;\n            result.M22 = num3 * lightDirection.Y + num1;\n            result.M32 = num4 * lightDirection.Y;\n            result.M42 = num5 * lightDirection.Y;\n            result.M13 = num2 * lightDirection.Z;\n            result.M23 = num3 * lightDirection.Z;\n            result.M33 = num4 * lightDirection.Z + num1;\n            result.M43 = num5 * lightDirection.Z;\n            result.M14 = 0.0f;\n            result.M24 = 0.0f;\n            result.M34 = 0.0f;\n            result.M44 = num1;\n        }\n\n        /// <summary>\n        /// Creates a Matrix that reflects the coordinate system about a specified Plane.\n        /// </summary>\n        /// <param name=\"value\">The Plane about which to create a reflection.</param>\n        public static Matrix CreateReflection(Plane value)\n        {\n            value.Normalize();\n            float num1 = value.Normal.X;\n            float num2 = value.Normal.Y;\n            float num3 = value.Normal.Z;\n            float num4 = -2f * num1;\n            float num5 = -2f * num2;\n            float num6 = -2f * num3;\n            Matrix matrix;\n            matrix.M11 = (float)((double)num4 * (double)num1 + 1.0);\n            matrix.M12 = num5 * num1;\n            matrix.M13 = num6 * num1;\n            matrix.M14 = 0.0f;\n            matrix.M21 = num4 * num2;\n            matrix.M22 = (float)((double)num5 * (double)num2 + 1.0);\n            matrix.M23 = num6 * num2;\n            matrix.M24 = 0.0f;\n            matrix.M31 = num4 * num3;\n            matrix.M32 = num5 * num3;\n            matrix.M33 = (float)((double)num6 * (double)num3 + 1.0);\n            matrix.M34 = 0.0f;\n            matrix.M41 = num4 * value.D;\n            matrix.M42 = num5 * value.D;\n            matrix.M43 = num6 * value.D;\n            matrix.M44 = 1f;\n            return matrix;\n        }\n\n        /// <summary>\n        /// Fills in an existing Matrix so that it reflects the coordinate system about a specified Plane.\n        /// </summary>\n        /// <param name=\"value\">The Plane about which to create a reflection.</param><param name=\"result\">[OutAttribute] A Matrix that creates the reflection.</param>\n        public static void CreateReflection(ref Plane value, out Matrix result)\n        {\n            Plane result1;\n            Plane.Normalize(ref value, out result1);\n            value.Normalize();\n            float num1 = result1.Normal.X;\n            float num2 = result1.Normal.Y;\n            float num3 = result1.Normal.Z;\n            float num4 = -2f * num1;\n            float num5 = -2f * num2;\n            float num6 = -2f * num3;\n            result.M11 = (float)((double)num4 * (double)num1 + 1.0);\n            result.M12 = num5 * num1;\n            result.M13 = num6 * num1;\n            result.M14 = 0.0f;\n            result.M21 = num4 * num2;\n            result.M22 = (float)((double)num5 * (double)num2 + 1.0);\n            result.M23 = num6 * num2;\n            result.M24 = 0.0f;\n            result.M31 = num4 * num3;\n            result.M32 = num5 * num3;\n            result.M33 = (float)((double)num6 * (double)num3 + 1.0);\n            result.M34 = 0.0f;\n            result.M41 = num4 * result1.D;\n            result.M42 = num5 * result1.D;\n            result.M43 = num6 * result1.D;\n            result.M44 = 1f;\n        }\n                  /*\n        /// <summary>\n        /// Extracts the scalar, translation, and rotation components from a 3D scale/rotate/translate (SRT) Matrix.  Reference page contains code sample.\n        /// </summary>\n        /// <param name=\"scale\">[OutAttribute] The scalar component of the transform matrix, expressed as a Vector3.</param><param name=\"rotation\">[OutAttribute] The rotation component of the transform matrix, expressed as a Quaternion.</param><param name=\"translation\">[OutAttribute] The translation component of the transform matrix, expressed as a Vector3.</param>\n        public unsafe bool Decompose(out Vector3 scale, out Quaternion rotation, out Vector3 translation)\n    {\n      bool flag = true;\n      fixed (float* numPtr = &scale.X)\n      {\n        Matrix.VectorBasis vectorBasis;\n        Vector3** vector3Ptr1 = (Vector3**) &vectorBasis;\n        Matrix identity = Matrix.Identity;\n        Matrix.CanonicalBasis canonicalBasis = new Matrix.CanonicalBasis();\n        Vector3* vector3Ptr2 = &canonicalBasis.Row0;\n        canonicalBasis.Row0 = new Vector3(1f, 0.0f, 0.0f);\n        canonicalBasis.Row1 = new Vector3(0.0f, 1f, 0.0f);\n        canonicalBasis.Row2 = new Vector3(0.0f, 0.0f, 1f);\n        translation.X = this.M41;\n        translation.Y = this.M42;\n        translation.Z = this.M43;\n        *vector3Ptr1 = (Vector3*) &identity.M11;\n        vector3Ptr1[1] = (Vector3*) &identity.M21;\n        vector3Ptr1[2] = (Vector3*) &identity.M31;\n        **vector3Ptr1 = new Vector3(this.M11, this.M12, this.M13);\n        *vector3Ptr1[1] = new Vector3(this.M21, this.M22, this.M23);\n        *vector3Ptr1[2] = new Vector3(this.M31, this.M32, this.M33);\n        scale.X = (*vector3Ptr1)->Length();\n        scale.Y = vector3Ptr1[1]->Length();\n        scale.Z = vector3Ptr1[2]->Length();\n        float num1 = *numPtr;\n        float num2 = numPtr[1];\n        float num3 = numPtr[2];\n        uint index1;\n        uint index2;\n        uint index3;\n        if ((double) num1 < (double) num2)\n        {\n          if ((double) num2 < (double) num3)\n          {\n            index1 = 2U;\n            index2 = 1U;\n            index3 = 0U;\n          }\n          else\n          {\n            index1 = 1U;\n            if ((double) num1 < (double) num3)\n            {\n              index2 = 2U;\n              index3 = 0U;\n            }\n            else\n            {\n              index2 = 0U;\n              index3 = 2U;\n            }\n          }\n        }\n        else if ((double) num1 < (double) num3)\n        {\n          index1 = 2U;\n          index2 = 0U;\n          index3 = 1U;\n        }\n        else\n        {\n          index1 = 0U;\n          if ((double) num2 < (double) num3)\n          {\n            index2 = 2U;\n            index3 = 1U;\n          }\n          else\n          {\n            index2 = 1U;\n            index3 = 2U;\n          }\n        }\n        if ((double) numPtr[index1] < 9.99999974737875E-05)\n          *(Vector3*) *(IntPtr*) ((IntPtr) vector3Ptr1 + (IntPtr) ((long) index1 * (long) sizeof (Vector3*))) = *(Vector3*) ((IntPtr) vector3Ptr2 + (IntPtr) ((long) index1 * (long) sizeof (Vector3)));\n        ((Vector3*) *(IntPtr*) ((IntPtr) vector3Ptr1 + (IntPtr) ((long) index1 * (long) sizeof (Vector3*))))->Normalize();\n        if ((double) numPtr[index2] < 9.99999974737875E-05)\n        {\n          float num4 = Math.Abs(((Vector3*) *(IntPtr*) ((IntPtr) vector3Ptr1 + (IntPtr) ((long) index1 * (long) sizeof (Vector3*))))->X);\n          float num5 = Math.Abs(((Vector3*) *(IntPtr*) ((IntPtr) vector3Ptr1 + (IntPtr) ((long) index1 * (long) sizeof (Vector3*))))->Y);\n          float num6 = Math.Abs(((Vector3*) *(IntPtr*) ((IntPtr) vector3Ptr1 + (IntPtr) ((long) index1 * (long) sizeof (Vector3*))))->Z);\n          uint num7 = (double) num4 >= (double) num5 ? ((double) num4 >= (double) num6 ? ((double) num5 >= (double) num6 ? 2U : 1U) : 1U) : ((double) num5 >= (double) num6 ? ((double) num4 >= (double) num6 ? 2U : 0U) : 0U);\n          // ISSUE: cast to a reference type\n          // ISSUE: cast to a reference type\n          // ISSUE: cast to a reference type\n          Vector3.Cross((Vector3&) *(IntPtr*) ((IntPtr) vector3Ptr1 + (IntPtr) ((long) index2 * (long) sizeof (Vector3*))), (Vector3&) *(IntPtr*) ((IntPtr) vector3Ptr1 + (IntPtr) ((long) index1 * (long) sizeof (Vector3*))), (Vector3&) ((IntPtr) vector3Ptr2 + (IntPtr) ((long) num7 * (long) sizeof (Vector3))));\n        }\n        ((Vector3*) *(IntPtr*) ((IntPtr) vector3Ptr1 + (IntPtr) ((long) index2 * (long) sizeof (Vector3*))))->Normalize();\n        if ((double) numPtr[index3] < 9.99999974737875E-05)\n        {\n          // ISSUE: cast to a reference type\n          // ISSUE: cast to a reference type\n          // ISSUE: cast to a reference type\n          Vector3.Cross((Vector3&) *(IntPtr*) ((IntPtr) vector3Ptr1 + (IntPtr) ((long) index3 * (long) sizeof (Vector3*))), (Vector3&) *(IntPtr*) ((IntPtr) vector3Ptr1 + (IntPtr) ((long) index1 * (long) sizeof (Vector3*))), (Vector3&) *(IntPtr*) ((IntPtr) vector3Ptr1 + (IntPtr) ((long) index2 * (long) sizeof (Vector3*))));\n        }\n        ((Vector3*) *(IntPtr*) ((IntPtr) vector3Ptr1 + (IntPtr) ((long) index3 * (long) sizeof (Vector3*))))->Normalize();\n        float num8 = identity.Determinant();\n        if ((double) num8 < 0.0)\n        {\n          numPtr[index1] = -numPtr[index1];\n          *(Vector3*) *(IntPtr*) ((IntPtr) vector3Ptr1 + (IntPtr) ((long) index1 * (long) sizeof (Vector3*))) = -*(Vector3*) *(IntPtr*) ((IntPtr) vector3Ptr1 + (IntPtr) ((long) index1 * (long) sizeof (Vector3*)));\n          num8 = -num8;\n        }\n        float num9 = num8 - 1f;\n        if (9.99999974737875E-05 < (double) (num9 * num9))\n        {\n          rotation = Quaternion.Identity;\n          flag = false;\n        }\n        else\n          Quaternion.CreateFromRotationMatrix(ref identity, out rotation);\n      }\n      return flag;\n    }\n        */\n        /// <summary>\n        /// Transforms a Matrix by applying a Quaternion rotation.\n        /// </summary>\n        /// <param name=\"value\">The Matrix to transform.</param><param name=\"rotation\">The rotation to apply, expressed as a Quaternion.</param>\n        public static Matrix Transform(Matrix value, Quaternion rotation)\n        {\n            float num1 = rotation.X + rotation.X;\n            float num2 = rotation.Y + rotation.Y;\n            float num3 = rotation.Z + rotation.Z;\n            float num4 = rotation.W * num1;\n            float num5 = rotation.W * num2;\n            float num6 = rotation.W * num3;\n            float num7 = rotation.X * num1;\n            float num8 = rotation.X * num2;\n            float num9 = rotation.X * num3;\n            float num10 = rotation.Y * num2;\n            float num11 = rotation.Y * num3;\n            float num12 = rotation.Z * num3;\n            float num13 = 1f - num10 - num12;\n            float num14 = num8 - num6;\n            float num15 = num9 + num5;\n            float num16 = num8 + num6;\n            float num17 = 1f - num7 - num12;\n            float num18 = num11 - num4;\n            float num19 = num9 - num5;\n            float num20 = num11 + num4;\n            float num21 = 1f - num7 - num10;\n            Matrix matrix;\n            matrix.M11 = (float)((double)value.M11 * (double)num13 + (double)value.M12 * (double)num14 + (double)value.M13 * (double)num15);\n            matrix.M12 = (float)((double)value.M11 * (double)num16 + (double)value.M12 * (double)num17 + (double)value.M13 * (double)num18);\n            matrix.M13 = (float)((double)value.M11 * (double)num19 + (double)value.M12 * (double)num20 + (double)value.M13 * (double)num21);\n            matrix.M14 = value.M14;\n            matrix.M21 = (float)((double)value.M21 * (double)num13 + (double)value.M22 * (double)num14 + (double)value.M23 * (double)num15);\n            matrix.M22 = (float)((double)value.M21 * (double)num16 + (double)value.M22 * (double)num17 + (double)value.M23 * (double)num18);\n            matrix.M23 = (float)((double)value.M21 * (double)num19 + (double)value.M22 * (double)num20 + (double)value.M23 * (double)num21);\n            matrix.M24 = value.M24;\n            matrix.M31 = (float)((double)value.M31 * (double)num13 + (double)value.M32 * (double)num14 + (double)value.M33 * (double)num15);\n            matrix.M32 = (float)((double)value.M31 * (double)num16 + (double)value.M32 * (double)num17 + (double)value.M33 * (double)num18);\n            matrix.M33 = (float)((double)value.M31 * (double)num19 + (double)value.M32 * (double)num20 + (double)value.M33 * (double)num21);\n            matrix.M34 = value.M34;\n            matrix.M41 = (float)((double)value.M41 * (double)num13 + (double)value.M42 * (double)num14 + (double)value.M43 * (double)num15);\n            matrix.M42 = (float)((double)value.M41 * (double)num16 + (double)value.M42 * (double)num17 + (double)value.M43 * (double)num18);\n            matrix.M43 = (float)((double)value.M41 * (double)num19 + (double)value.M42 * (double)num20 + (double)value.M43 * (double)num21);\n            matrix.M44 = value.M44;\n            return matrix;\n        }\n\n        /// <summary>\n        /// Transforms a Matrix by applying a Quaternion rotation.\n        /// </summary>\n        /// <param name=\"value\">The Matrix to transform.</param><param name=\"rotation\">The rotation to apply, expressed as a Quaternion.</param><param name=\"result\">[OutAttribute] An existing Matrix filled in with the result of the transform.</param>\n        public static void Transform(ref Matrix value, ref Quaternion rotation, out Matrix result)\n        {\n            float num1 = rotation.X + rotation.X;\n            float num2 = rotation.Y + rotation.Y;\n            float num3 = rotation.Z + rotation.Z;\n            float num4 = rotation.W * num1;\n            float num5 = rotation.W * num2;\n            float num6 = rotation.W * num3;\n            float num7 = rotation.X * num1;\n            float num8 = rotation.X * num2;\n            float num9 = rotation.X * num3;\n            float num10 = rotation.Y * num2;\n            float num11 = rotation.Y * num3;\n            float num12 = rotation.Z * num3;\n            float num13 = 1f - num10 - num12;\n            float num14 = num8 - num6;\n            float num15 = num9 + num5;\n            float num16 = num8 + num6;\n            float num17 = 1f - num7 - num12;\n            float num18 = num11 - num4;\n            float num19 = num9 - num5;\n            float num20 = num11 + num4;\n            float num21 = 1f - num7 - num10;\n            float num22 = (float)((double)value.M11 * (double)num13 + (double)value.M12 * (double)num14 + (double)value.M13 * (double)num15);\n            float num23 = (float)((double)value.M11 * (double)num16 + (double)value.M12 * (double)num17 + (double)value.M13 * (double)num18);\n            float num24 = (float)((double)value.M11 * (double)num19 + (double)value.M12 * (double)num20 + (double)value.M13 * (double)num21);\n            float num25 = value.M14;\n            float num26 = (float)((double)value.M21 * (double)num13 + (double)value.M22 * (double)num14 + (double)value.M23 * (double)num15);\n            float num27 = (float)((double)value.M21 * (double)num16 + (double)value.M22 * (double)num17 + (double)value.M23 * (double)num18);\n            float num28 = (float)((double)value.M21 * (double)num19 + (double)value.M22 * (double)num20 + (double)value.M23 * (double)num21);\n            float num29 = value.M24;\n            float num30 = (float)((double)value.M31 * (double)num13 + (double)value.M32 * (double)num14 + (double)value.M33 * (double)num15);\n            float num31 = (float)((double)value.M31 * (double)num16 + (double)value.M32 * (double)num17 + (double)value.M33 * (double)num18);\n            float num32 = (float)((double)value.M31 * (double)num19 + (double)value.M32 * (double)num20 + (double)value.M33 * (double)num21);\n            float num33 = value.M34;\n            float num34 = (float)((double)value.M41 * (double)num13 + (double)value.M42 * (double)num14 + (double)value.M43 * (double)num15);\n            float num35 = (float)((double)value.M41 * (double)num16 + (double)value.M42 * (double)num17 + (double)value.M43 * (double)num18);\n            float num36 = (float)((double)value.M41 * (double)num19 + (double)value.M42 * (double)num20 + (double)value.M43 * (double)num21);\n            float num37 = value.M44;\n            result.M11 = num22;\n            result.M12 = num23;\n            result.M13 = num24;\n            result.M14 = num25;\n            result.M21 = num26;\n            result.M22 = num27;\n            result.M23 = num28;\n            result.M24 = num29;\n            result.M31 = num30;\n            result.M32 = num31;\n            result.M33 = num32;\n            result.M34 = num33;\n            result.M41 = num34;\n            result.M42 = num35;\n            result.M43 = num36;\n            result.M44 = num37;\n        }\n\n        /// <summary>\n        /// Retrieves a string representation of the current object.\n        /// </summary>\n        public override string ToString()\n        {\n            CultureInfo currentCulture = CultureInfo.CurrentCulture;\n            return \"{ \" + string.Format((IFormatProvider)currentCulture, \"{{M11:{0} M12:{1} M13:{2} M14:{3}}} \", (object)this.M11.ToString((IFormatProvider)currentCulture), (object)this.M12.ToString((IFormatProvider)currentCulture), (object)this.M13.ToString((IFormatProvider)currentCulture), (object)this.M14.ToString((IFormatProvider)currentCulture)) + string.Format((IFormatProvider)currentCulture, \"{{M21:{0} M22:{1} M23:{2} M24:{3}}} \", (object)this.M21.ToString((IFormatProvider)currentCulture), (object)this.M22.ToString((IFormatProvider)currentCulture), (object)this.M23.ToString((IFormatProvider)currentCulture), (object)this.M24.ToString((IFormatProvider)currentCulture)) + string.Format((IFormatProvider)currentCulture, \"{{M31:{0} M32:{1} M33:{2} M34:{3}}} \", (object)this.M31.ToString((IFormatProvider)currentCulture), (object)this.M32.ToString((IFormatProvider)currentCulture), (object)this.M33.ToString((IFormatProvider)currentCulture), (object)this.M34.ToString((IFormatProvider)currentCulture)) + string.Format((IFormatProvider)currentCulture, \"{{M41:{0} M42:{1} M43:{2} M44:{3}}} \", (object)this.M41.ToString((IFormatProvider)currentCulture), (object)this.M42.ToString((IFormatProvider)currentCulture), (object)this.M43.ToString((IFormatProvider)currentCulture), (object)this.M44.ToString((IFormatProvider)currentCulture)) + \"}\";\n        }\n\n        /// <summary>\n        /// Determines whether the specified Object is equal to the Matrix.\n        /// </summary>\n        /// <param name=\"other\">The Object to compare with the current Matrix.</param>\n        public bool Equals(Matrix other)\n        {\n            if ((double)this.M11 == (double)other.M11 && (double)this.M22 == (double)other.M22 && ((double)this.M33 == (double)other.M33 && (double)this.M44 == (double)other.M44) && ((double)this.M12 == (double)other.M12 && (double)this.M13 == (double)other.M13 && ((double)this.M14 == (double)other.M14 && (double)this.M21 == (double)other.M21)) && ((double)this.M23 == (double)other.M23 && (double)this.M24 == (double)other.M24 && ((double)this.M31 == (double)other.M31 && (double)this.M32 == (double)other.M32) && ((double)this.M34 == (double)other.M34 && (double)this.M41 == (double)other.M41 && (double)this.M42 == (double)other.M42)))\n                return (double)this.M43 == (double)other.M43;\n            else\n                return false;\n        }\n\n        /// <summary>\n        /// Returns a value that indicates whether the current instance is equal to a specified object.\n        /// </summary>\n        /// <param name=\"obj\">Object with which to make the comparison.</param>\n        public override bool Equals(object obj)\n        {\n            bool flag = false;\n            if (obj is Matrix)\n                flag = this.Equals((Matrix)obj);\n            return flag;\n        }\n\n        /// <summary>\n        /// Gets the hash code of this object.\n        /// </summary>\n        public override int GetHashCode()\n        {\n            return this.M11.GetHashCode() + this.M12.GetHashCode() + this.M13.GetHashCode() + this.M14.GetHashCode() + this.M21.GetHashCode() + this.M22.GetHashCode() + this.M23.GetHashCode() + this.M24.GetHashCode() + this.M31.GetHashCode() + this.M32.GetHashCode() + this.M33.GetHashCode() + this.M34.GetHashCode() + this.M41.GetHashCode() + this.M42.GetHashCode() + this.M43.GetHashCode() + this.M44.GetHashCode();\n        }\n\n        /// <summary>\n        /// Transposes the rows and columns of a matrix.\n        /// </summary>\n        /// <param name=\"matrix\">Source matrix.</param>\n        public static Matrix Transpose(Matrix matrix)\n        {\n            Matrix matrix1;\n            matrix1.M11 = matrix.M11;\n            matrix1.M12 = matrix.M21;\n            matrix1.M13 = matrix.M31;\n            matrix1.M14 = matrix.M41;\n            matrix1.M21 = matrix.M12;\n            matrix1.M22 = matrix.M22;\n            matrix1.M23 = matrix.M32;\n            matrix1.M24 = matrix.M42;\n            matrix1.M31 = matrix.M13;\n            matrix1.M32 = matrix.M23;\n            matrix1.M33 = matrix.M33;\n            matrix1.M34 = matrix.M43;\n            matrix1.M41 = matrix.M14;\n            matrix1.M42 = matrix.M24;\n            matrix1.M43 = matrix.M34;\n            matrix1.M44 = matrix.M44;\n            return matrix1;\n        }\n\n        /// <summary>\n        /// Transposes the rows and columns of a matrix.\n        /// </summary>\n        /// <param name=\"matrix\">Source matrix.</param><param name=\"result\">[OutAttribute] Transposed matrix.</param>\n        public static void Transpose(ref Matrix matrix, out Matrix result)\n        {\n            float num1 = matrix.M11;\n            float num2 = matrix.M12;\n            float num3 = matrix.M13;\n            float num4 = matrix.M14;\n            float num5 = matrix.M21;\n            float num6 = matrix.M22;\n            float num7 = matrix.M23;\n            float num8 = matrix.M24;\n            float num9 = matrix.M31;\n            float num10 = matrix.M32;\n            float num11 = matrix.M33;\n            float num12 = matrix.M34;\n            float num13 = matrix.M41;\n            float num14 = matrix.M42;\n            float num15 = matrix.M43;\n            float num16 = matrix.M44;\n            result.M11 = num1;\n            result.M12 = num5;\n            result.M13 = num9;\n            result.M14 = num13;\n            result.M21 = num2;\n            result.M22 = num6;\n            result.M23 = num10;\n            result.M24 = num14;\n            result.M31 = num3;\n            result.M32 = num7;\n            result.M33 = num11;\n            result.M34 = num15;\n            result.M41 = num4;\n            result.M42 = num8;\n            result.M43 = num12;\n            result.M44 = num16;\n        }\n\n        /// <summary>\n        /// Calculates the determinant of the matrix.\n        /// </summary>\n        public float Determinant()\n        {\n            float num1 = this.M11;\n            float num2 = this.M12;\n            float num3 = this.M13;\n            float num4 = this.M14;\n            float num5 = this.M21;\n            float num6 = this.M22;\n            float num7 = this.M23;\n            float num8 = this.M24;\n            float num9 = this.M31;\n            float num10 = this.M32;\n            float num11 = this.M33;\n            float num12 = this.M34;\n            float num13 = this.M41;\n            float num14 = this.M42;\n            float num15 = this.M43;\n            float num16 = this.M44;\n            float num17 = (float)((double)num11 * (double)num16 - (double)num12 * (double)num15);\n            float num18 = (float)((double)num10 * (double)num16 - (double)num12 * (double)num14);\n            float num19 = (float)((double)num10 * (double)num15 - (double)num11 * (double)num14);\n            float num20 = (float)((double)num9 * (double)num16 - (double)num12 * (double)num13);\n            float num21 = (float)((double)num9 * (double)num15 - (double)num11 * (double)num13);\n            float num22 = (float)((double)num9 * (double)num14 - (double)num10 * (double)num13);\n            return (float)((double)num1 * ((double)num6 * (double)num17 - (double)num7 * (double)num18 + (double)num8 * (double)num19) - (double)num2 * ((double)num5 * (double)num17 - (double)num7 * (double)num20 + (double)num8 * (double)num21) + (double)num3 * ((double)num5 * (double)num18 - (double)num6 * (double)num20 + (double)num8 * (double)num22) - (double)num4 * ((double)num5 * (double)num19 - (double)num6 * (double)num21 + (double)num7 * (double)num22));\n        }\n\n        /// <summary>\n        /// Calculates the inverse of a matrix.\n        /// </summary>\n        /// <param name=\"matrix\">Source matrix.</param>\n        public static Matrix Invert(Matrix matrix)\n        {\n            float num1 = matrix.M11;\n            float num2 = matrix.M12;\n            float num3 = matrix.M13;\n            float num4 = matrix.M14;\n            float num5 = matrix.M21;\n            float num6 = matrix.M22;\n            float num7 = matrix.M23;\n            float num8 = matrix.M24;\n            float num9 = matrix.M31;\n            float num10 = matrix.M32;\n            float num11 = matrix.M33;\n            float num12 = matrix.M34;\n            float num13 = matrix.M41;\n            float num14 = matrix.M42;\n            float num15 = matrix.M43;\n            float num16 = matrix.M44;\n            float num17 = (float)((double)num11 * (double)num16 - (double)num12 * (double)num15);\n            float num18 = (float)((double)num10 * (double)num16 - (double)num12 * (double)num14);\n            float num19 = (float)((double)num10 * (double)num15 - (double)num11 * (double)num14);\n            float num20 = (float)((double)num9 * (double)num16 - (double)num12 * (double)num13);\n            float num21 = (float)((double)num9 * (double)num15 - (double)num11 * (double)num13);\n            float num22 = (float)((double)num9 * (double)num14 - (double)num10 * (double)num13);\n            float num23 = (float)((double)num6 * (double)num17 - (double)num7 * (double)num18 + (double)num8 * (double)num19);\n            float num24 = (float)-((double)num5 * (double)num17 - (double)num7 * (double)num20 + (double)num8 * (double)num21);\n            float num25 = (float)((double)num5 * (double)num18 - (double)num6 * (double)num20 + (double)num8 * (double)num22);\n            float num26 = (float)-((double)num5 * (double)num19 - (double)num6 * (double)num21 + (double)num7 * (double)num22);\n            float num27 = (float)(1.0 / ((double)num1 * (double)num23 + (double)num2 * (double)num24 + (double)num3 * (double)num25 + (double)num4 * (double)num26));\n            Matrix matrix1;\n            matrix1.M11 = num23 * num27;\n            matrix1.M21 = num24 * num27;\n            matrix1.M31 = num25 * num27;\n            matrix1.M41 = num26 * num27;\n            matrix1.M12 = (float)-((double)num2 * (double)num17 - (double)num3 * (double)num18 + (double)num4 * (double)num19) * num27;\n            matrix1.M22 = (float)((double)num1 * (double)num17 - (double)num3 * (double)num20 + (double)num4 * (double)num21) * num27;\n            matrix1.M32 = (float)-((double)num1 * (double)num18 - (double)num2 * (double)num20 + (double)num4 * (double)num22) * num27;\n            matrix1.M42 = (float)((double)num1 * (double)num19 - (double)num2 * (double)num21 + (double)num3 * (double)num22) * num27;\n            float num28 = (float)((double)num7 * (double)num16 - (double)num8 * (double)num15);\n            float num29 = (float)((double)num6 * (double)num16 - (double)num8 * (double)num14);\n            float num30 = (float)((double)num6 * (double)num15 - (double)num7 * (double)num14);\n            float num31 = (float)((double)num5 * (double)num16 - (double)num8 * (double)num13);\n            float num32 = (float)((double)num5 * (double)num15 - (double)num7 * (double)num13);\n            float num33 = (float)((double)num5 * (double)num14 - (double)num6 * (double)num13);\n            matrix1.M13 = (float)((double)num2 * (double)num28 - (double)num3 * (double)num29 + (double)num4 * (double)num30) * num27;\n            matrix1.M23 = (float)-((double)num1 * (double)num28 - (double)num3 * (double)num31 + (double)num4 * (double)num32) * num27;\n            matrix1.M33 = (float)((double)num1 * (double)num29 - (double)num2 * (double)num31 + (double)num4 * (double)num33) * num27;\n            matrix1.M43 = (float)-((double)num1 * (double)num30 - (double)num2 * (double)num32 + (double)num3 * (double)num33) * num27;\n            float num34 = (float)((double)num7 * (double)num12 - (double)num8 * (double)num11);\n            float num35 = (float)((double)num6 * (double)num12 - (double)num8 * (double)num10);\n            float num36 = (float)((double)num6 * (double)num11 - (double)num7 * (double)num10);\n            float num37 = (float)((double)num5 * (double)num12 - (double)num8 * (double)num9);\n            float num38 = (float)((double)num5 * (double)num11 - (double)num7 * (double)num9);\n            float num39 = (float)((double)num5 * (double)num10 - (double)num6 * (double)num9);\n            matrix1.M14 = (float)-((double)num2 * (double)num34 - (double)num3 * (double)num35 + (double)num4 * (double)num36) * num27;\n            matrix1.M24 = (float)((double)num1 * (double)num34 - (double)num3 * (double)num37 + (double)num4 * (double)num38) * num27;\n            matrix1.M34 = (float)-((double)num1 * (double)num35 - (double)num2 * (double)num37 + (double)num4 * (double)num39) * num27;\n            matrix1.M44 = (float)((double)num1 * (double)num36 - (double)num2 * (double)num38 + (double)num3 * (double)num39) * num27;\n            return matrix1;\n        }\n\n        /// <summary>\n        /// Calculates the inverse of a matrix.\n        /// </summary>\n        /// <param name=\"matrix\">The source matrix.</param><param name=\"result\">[OutAttribute] The inverse of matrix. The same matrix can be used for both arguments.</param>\n        public static void Invert(ref Matrix matrix, out Matrix result)\n        {\n            float num1 = matrix.M11;\n            float num2 = matrix.M12;\n            float num3 = matrix.M13;\n            float num4 = matrix.M14;\n            float num5 = matrix.M21;\n            float num6 = matrix.M22;\n            float num7 = matrix.M23;\n            float num8 = matrix.M24;\n            float num9 = matrix.M31;\n            float num10 = matrix.M32;\n            float num11 = matrix.M33;\n            float num12 = matrix.M34;\n            float num13 = matrix.M41;\n            float num14 = matrix.M42;\n            float num15 = matrix.M43;\n            float num16 = matrix.M44;\n            float num17 = (float)((double)num11 * (double)num16 - (double)num12 * (double)num15);\n            float num18 = (float)((double)num10 * (double)num16 - (double)num12 * (double)num14);\n            float num19 = (float)((double)num10 * (double)num15 - (double)num11 * (double)num14);\n            float num20 = (float)((double)num9 * (double)num16 - (double)num12 * (double)num13);\n            float num21 = (float)((double)num9 * (double)num15 - (double)num11 * (double)num13);\n            float num22 = (float)((double)num9 * (double)num14 - (double)num10 * (double)num13);\n            float num23 = (float)((double)num6 * (double)num17 - (double)num7 * (double)num18 + (double)num8 * (double)num19);\n            float num24 = (float)-((double)num5 * (double)num17 - (double)num7 * (double)num20 + (double)num8 * (double)num21);\n            float num25 = (float)((double)num5 * (double)num18 - (double)num6 * (double)num20 + (double)num8 * (double)num22);\n            float num26 = (float)-((double)num5 * (double)num19 - (double)num6 * (double)num21 + (double)num7 * (double)num22);\n            float num27 = (float)(1.0 / ((double)num1 * (double)num23 + (double)num2 * (double)num24 + (double)num3 * (double)num25 + (double)num4 * (double)num26));\n            result.M11 = num23 * num27;\n            result.M21 = num24 * num27;\n            result.M31 = num25 * num27;\n            result.M41 = num26 * num27;\n            result.M12 = (float)-((double)num2 * (double)num17 - (double)num3 * (double)num18 + (double)num4 * (double)num19) * num27;\n            result.M22 = (float)((double)num1 * (double)num17 - (double)num3 * (double)num20 + (double)num4 * (double)num21) * num27;\n            result.M32 = (float)-((double)num1 * (double)num18 - (double)num2 * (double)num20 + (double)num4 * (double)num22) * num27;\n            result.M42 = (float)((double)num1 * (double)num19 - (double)num2 * (double)num21 + (double)num3 * (double)num22) * num27;\n            float num28 = (float)((double)num7 * (double)num16 - (double)num8 * (double)num15);\n            float num29 = (float)((double)num6 * (double)num16 - (double)num8 * (double)num14);\n            float num30 = (float)((double)num6 * (double)num15 - (double)num7 * (double)num14);\n            float num31 = (float)((double)num5 * (double)num16 - (double)num8 * (double)num13);\n            float num32 = (float)((double)num5 * (double)num15 - (double)num7 * (double)num13);\n            float num33 = (float)((double)num5 * (double)num14 - (double)num6 * (double)num13);\n            result.M13 = (float)((double)num2 * (double)num28 - (double)num3 * (double)num29 + (double)num4 * (double)num30) * num27;\n            result.M23 = (float)-((double)num1 * (double)num28 - (double)num3 * (double)num31 + (double)num4 * (double)num32) * num27;\n            result.M33 = (float)((double)num1 * (double)num29 - (double)num2 * (double)num31 + (double)num4 * (double)num33) * num27;\n            result.M43 = (float)-((double)num1 * (double)num30 - (double)num2 * (double)num32 + (double)num3 * (double)num33) * num27;\n            float num34 = (float)((double)num7 * (double)num12 - (double)num8 * (double)num11);\n            float num35 = (float)((double)num6 * (double)num12 - (double)num8 * (double)num10);\n            float num36 = (float)((double)num6 * (double)num11 - (double)num7 * (double)num10);\n            float num37 = (float)((double)num5 * (double)num12 - (double)num8 * (double)num9);\n            float num38 = (float)((double)num5 * (double)num11 - (double)num7 * (double)num9);\n            float num39 = (float)((double)num5 * (double)num10 - (double)num6 * (double)num9);\n            result.M14 = (float)-((double)num2 * (double)num34 - (double)num3 * (double)num35 + (double)num4 * (double)num36) * num27;\n            result.M24 = (float)((double)num1 * (double)num34 - (double)num3 * (double)num37 + (double)num4 * (double)num38) * num27;\n            result.M34 = (float)-((double)num1 * (double)num35 - (double)num2 * (double)num37 + (double)num4 * (double)num39) * num27;\n            result.M44 = (float)((double)num1 * (double)num36 - (double)num2 * (double)num38 + (double)num3 * (double)num39) * num27;\n        }\n\n        /// <summary>\n        /// Linearly interpolates between the corresponding values of two matrices.\n        /// </summary>\n        /// <param name=\"matrix1\">Source matrix.</param><param name=\"matrix2\">Source matrix.</param><param name=\"amount\">Interpolation value.</param>\n        public static Matrix Lerp(Matrix matrix1, Matrix matrix2, float amount)\n        {\n            Matrix matrix;\n            matrix.M11 = matrix1.M11 + (matrix2.M11 - matrix1.M11) * amount;\n            matrix.M12 = matrix1.M12 + (matrix2.M12 - matrix1.M12) * amount;\n            matrix.M13 = matrix1.M13 + (matrix2.M13 - matrix1.M13) * amount;\n            matrix.M14 = matrix1.M14 + (matrix2.M14 - matrix1.M14) * amount;\n            matrix.M21 = matrix1.M21 + (matrix2.M21 - matrix1.M21) * amount;\n            matrix.M22 = matrix1.M22 + (matrix2.M22 - matrix1.M22) * amount;\n            matrix.M23 = matrix1.M23 + (matrix2.M23 - matrix1.M23) * amount;\n            matrix.M24 = matrix1.M24 + (matrix2.M24 - matrix1.M24) * amount;\n            matrix.M31 = matrix1.M31 + (matrix2.M31 - matrix1.M31) * amount;\n            matrix.M32 = matrix1.M32 + (matrix2.M32 - matrix1.M32) * amount;\n            matrix.M33 = matrix1.M33 + (matrix2.M33 - matrix1.M33) * amount;\n            matrix.M34 = matrix1.M34 + (matrix2.M34 - matrix1.M34) * amount;\n            matrix.M41 = matrix1.M41 + (matrix2.M41 - matrix1.M41) * amount;\n            matrix.M42 = matrix1.M42 + (matrix2.M42 - matrix1.M42) * amount;\n            matrix.M43 = matrix1.M43 + (matrix2.M43 - matrix1.M43) * amount;\n            matrix.M44 = matrix1.M44 + (matrix2.M44 - matrix1.M44) * amount;\n            return matrix;\n        }\n\n        /// <summary>\n        /// Linearly interpolates between the corresponding values of two matrices.\n        /// </summary>\n        /// <param name=\"matrix1\">Source matrix.</param><param name=\"matrix2\">Source matrix.</param><param name=\"amount\">Interpolation value.</param><param name=\"result\">[OutAttribute] Resulting matrix.</param>\n        public static void Lerp(ref Matrix matrix1, ref Matrix matrix2, float amount, out Matrix result)\n        {\n            result.M11 = matrix1.M11 + (matrix2.M11 - matrix1.M11) * amount;\n            result.M12 = matrix1.M12 + (matrix2.M12 - matrix1.M12) * amount;\n            result.M13 = matrix1.M13 + (matrix2.M13 - matrix1.M13) * amount;\n            result.M14 = matrix1.M14 + (matrix2.M14 - matrix1.M14) * amount;\n            result.M21 = matrix1.M21 + (matrix2.M21 - matrix1.M21) * amount;\n            result.M22 = matrix1.M22 + (matrix2.M22 - matrix1.M22) * amount;\n            result.M23 = matrix1.M23 + (matrix2.M23 - matrix1.M23) * amount;\n            result.M24 = matrix1.M24 + (matrix2.M24 - matrix1.M24) * amount;\n            result.M31 = matrix1.M31 + (matrix2.M31 - matrix1.M31) * amount;\n            result.M32 = matrix1.M32 + (matrix2.M32 - matrix1.M32) * amount;\n            result.M33 = matrix1.M33 + (matrix2.M33 - matrix1.M33) * amount;\n            result.M34 = matrix1.M34 + (matrix2.M34 - matrix1.M34) * amount;\n            result.M41 = matrix1.M41 + (matrix2.M41 - matrix1.M41) * amount;\n            result.M42 = matrix1.M42 + (matrix2.M42 - matrix1.M42) * amount;\n            result.M43 = matrix1.M43 + (matrix2.M43 - matrix1.M43) * amount;\n            result.M44 = matrix1.M44 + (matrix2.M44 - matrix1.M44) * amount;\n        }\n\n        /// <summary>\n        /// Negates individual elements of a matrix.\n        /// </summary>\n        /// <param name=\"matrix\">Source matrix.</param>\n        public static Matrix Negate(Matrix matrix)\n        {\n            Matrix matrix1;\n            matrix1.M11 = -matrix.M11;\n            matrix1.M12 = -matrix.M12;\n            matrix1.M13 = -matrix.M13;\n            matrix1.M14 = -matrix.M14;\n            matrix1.M21 = -matrix.M21;\n            matrix1.M22 = -matrix.M22;\n            matrix1.M23 = -matrix.M23;\n            matrix1.M24 = -matrix.M24;\n            matrix1.M31 = -matrix.M31;\n            matrix1.M32 = -matrix.M32;\n            matrix1.M33 = -matrix.M33;\n            matrix1.M34 = -matrix.M34;\n            matrix1.M41 = -matrix.M41;\n            matrix1.M42 = -matrix.M42;\n            matrix1.M43 = -matrix.M43;\n            matrix1.M44 = -matrix.M44;\n            return matrix1;\n        }\n\n        /// <summary>\n        /// Negates individual elements of a matrix.\n        /// </summary>\n        /// <param name=\"matrix\">Source matrix.</param><param name=\"result\">[OutAttribute] Negated matrix.</param>\n        public static void Negate(ref Matrix matrix, out Matrix result)\n        {\n            result.M11 = -matrix.M11;\n            result.M12 = -matrix.M12;\n            result.M13 = -matrix.M13;\n            result.M14 = -matrix.M14;\n            result.M21 = -matrix.M21;\n            result.M22 = -matrix.M22;\n            result.M23 = -matrix.M23;\n            result.M24 = -matrix.M24;\n            result.M31 = -matrix.M31;\n            result.M32 = -matrix.M32;\n            result.M33 = -matrix.M33;\n            result.M34 = -matrix.M34;\n            result.M41 = -matrix.M41;\n            result.M42 = -matrix.M42;\n            result.M43 = -matrix.M43;\n            result.M44 = -matrix.M44;\n        }\n\n        /// <summary>\n        /// Adds a matrix to another matrix.\n        /// </summary>\n        /// <param name=\"matrix1\">Source matrix.</param><param name=\"matrix2\">Source matrix.</param>\n        public static Matrix Add(Matrix matrix1, Matrix matrix2)\n        {\n            Matrix matrix;\n            matrix.M11 = matrix1.M11 + matrix2.M11;\n            matrix.M12 = matrix1.M12 + matrix2.M12;\n            matrix.M13 = matrix1.M13 + matrix2.M13;\n            matrix.M14 = matrix1.M14 + matrix2.M14;\n            matrix.M21 = matrix1.M21 + matrix2.M21;\n            matrix.M22 = matrix1.M22 + matrix2.M22;\n            matrix.M23 = matrix1.M23 + matrix2.M23;\n            matrix.M24 = matrix1.M24 + matrix2.M24;\n            matrix.M31 = matrix1.M31 + matrix2.M31;\n            matrix.M32 = matrix1.M32 + matrix2.M32;\n            matrix.M33 = matrix1.M33 + matrix2.M33;\n            matrix.M34 = matrix1.M34 + matrix2.M34;\n            matrix.M41 = matrix1.M41 + matrix2.M41;\n            matrix.M42 = matrix1.M42 + matrix2.M42;\n            matrix.M43 = matrix1.M43 + matrix2.M43;\n            matrix.M44 = matrix1.M44 + matrix2.M44;\n            return matrix;\n        }\n\n        /// <summary>\n        /// Adds a matrix to another matrix.\n        /// </summary>\n        /// <param name=\"matrix1\">Source matrix.</param><param name=\"matrix2\">Source matrix.</param><param name=\"result\">[OutAttribute] Resulting matrix.</param>\n        public static void Add(ref Matrix matrix1, ref Matrix matrix2, out Matrix result)\n        {\n            result.M11 = matrix1.M11 + matrix2.M11;\n            result.M12 = matrix1.M12 + matrix2.M12;\n            result.M13 = matrix1.M13 + matrix2.M13;\n            result.M14 = matrix1.M14 + matrix2.M14;\n            result.M21 = matrix1.M21 + matrix2.M21;\n            result.M22 = matrix1.M22 + matrix2.M22;\n            result.M23 = matrix1.M23 + matrix2.M23;\n            result.M24 = matrix1.M24 + matrix2.M24;\n            result.M31 = matrix1.M31 + matrix2.M31;\n            result.M32 = matrix1.M32 + matrix2.M32;\n            result.M33 = matrix1.M33 + matrix2.M33;\n            result.M34 = matrix1.M34 + matrix2.M34;\n            result.M41 = matrix1.M41 + matrix2.M41;\n            result.M42 = matrix1.M42 + matrix2.M42;\n            result.M43 = matrix1.M43 + matrix2.M43;\n            result.M44 = matrix1.M44 + matrix2.M44;\n        }\n\n        /// <summary>\n        /// Subtracts matrices.\n        /// </summary>\n        /// <param name=\"matrix1\">Source matrix.</param><param name=\"matrix2\">Source matrix.</param>\n        public static Matrix Subtract(Matrix matrix1, Matrix matrix2)\n        {\n            Matrix matrix;\n            matrix.M11 = matrix1.M11 - matrix2.M11;\n            matrix.M12 = matrix1.M12 - matrix2.M12;\n            matrix.M13 = matrix1.M13 - matrix2.M13;\n            matrix.M14 = matrix1.M14 - matrix2.M14;\n            matrix.M21 = matrix1.M21 - matrix2.M21;\n            matrix.M22 = matrix1.M22 - matrix2.M22;\n            matrix.M23 = matrix1.M23 - matrix2.M23;\n            matrix.M24 = matrix1.M24 - matrix2.M24;\n            matrix.M31 = matrix1.M31 - matrix2.M31;\n            matrix.M32 = matrix1.M32 - matrix2.M32;\n            matrix.M33 = matrix1.M33 - matrix2.M33;\n            matrix.M34 = matrix1.M34 - matrix2.M34;\n            matrix.M41 = matrix1.M41 - matrix2.M41;\n            matrix.M42 = matrix1.M42 - matrix2.M42;\n            matrix.M43 = matrix1.M43 - matrix2.M43;\n            matrix.M44 = matrix1.M44 - matrix2.M44;\n            return matrix;\n        }\n\n        /// <summary>\n        /// Subtracts matrices.\n        /// </summary>\n        /// <param name=\"matrix1\">Source matrix.</param><param name=\"matrix2\">Source matrix.</param><param name=\"result\">[OutAttribute] Result of the subtraction.</param>\n        public static void Subtract(ref Matrix matrix1, ref Matrix matrix2, out Matrix result)\n        {\n            result.M11 = matrix1.M11 - matrix2.M11;\n            result.M12 = matrix1.M12 - matrix2.M12;\n            result.M13 = matrix1.M13 - matrix2.M13;\n            result.M14 = matrix1.M14 - matrix2.M14;\n            result.M21 = matrix1.M21 - matrix2.M21;\n            result.M22 = matrix1.M22 - matrix2.M22;\n            result.M23 = matrix1.M23 - matrix2.M23;\n            result.M24 = matrix1.M24 - matrix2.M24;\n            result.M31 = matrix1.M31 - matrix2.M31;\n            result.M32 = matrix1.M32 - matrix2.M32;\n            result.M33 = matrix1.M33 - matrix2.M33;\n            result.M34 = matrix1.M34 - matrix2.M34;\n            result.M41 = matrix1.M41 - matrix2.M41;\n            result.M42 = matrix1.M42 - matrix2.M42;\n            result.M43 = matrix1.M43 - matrix2.M43;\n            result.M44 = matrix1.M44 - matrix2.M44;\n        }\n\n        /// <summary>\n        /// Multiplies a matrix by another matrix.\n        /// </summary>\n        /// <param name=\"matrix1\">Source matrix.</param><param name=\"matrix2\">Source matrix.</param>\n        public static Matrix Multiply(Matrix matrix1, Matrix matrix2)\n        {\n#if NATIVE_SUPPORT\n            Matrix result;\n            Multiply_Native(ref matrix1, ref matrix2, out result);\n            return result;\n#else\n            Matrix matrix;\n            matrix.M11 = (float)((double)matrix1.M11 * (double)matrix2.M11 + (double)matrix1.M12 * (double)matrix2.M21 + (double)matrix1.M13 * (double)matrix2.M31 + (double)matrix1.M14 * (double)matrix2.M41);\n            matrix.M12 = (float)((double)matrix1.M11 * (double)matrix2.M12 + (double)matrix1.M12 * (double)matrix2.M22 + (double)matrix1.M13 * (double)matrix2.M32 + (double)matrix1.M14 * (double)matrix2.M42);\n            matrix.M13 = (float)((double)matrix1.M11 * (double)matrix2.M13 + (double)matrix1.M12 * (double)matrix2.M23 + (double)matrix1.M13 * (double)matrix2.M33 + (double)matrix1.M14 * (double)matrix2.M43);\n            matrix.M14 = (float)((double)matrix1.M11 * (double)matrix2.M14 + (double)matrix1.M12 * (double)matrix2.M24 + (double)matrix1.M13 * (double)matrix2.M34 + (double)matrix1.M14 * (double)matrix2.M44);\n            matrix.M21 = (float)((double)matrix1.M21 * (double)matrix2.M11 + (double)matrix1.M22 * (double)matrix2.M21 + (double)matrix1.M23 * (double)matrix2.M31 + (double)matrix1.M24 * (double)matrix2.M41);\n            matrix.M22 = (float)((double)matrix1.M21 * (double)matrix2.M12 + (double)matrix1.M22 * (double)matrix2.M22 + (double)matrix1.M23 * (double)matrix2.M32 + (double)matrix1.M24 * (double)matrix2.M42);\n            matrix.M23 = (float)((double)matrix1.M21 * (double)matrix2.M13 + (double)matrix1.M22 * (double)matrix2.M23 + (double)matrix1.M23 * (double)matrix2.M33 + (double)matrix1.M24 * (double)matrix2.M43);\n            matrix.M24 = (float)((double)matrix1.M21 * (double)matrix2.M14 + (double)matrix1.M22 * (double)matrix2.M24 + (double)matrix1.M23 * (double)matrix2.M34 + (double)matrix1.M24 * (double)matrix2.M44);\n            matrix.M31 = (float)((double)matrix1.M31 * (double)matrix2.M11 + (double)matrix1.M32 * (double)matrix2.M21 + (double)matrix1.M33 * (double)matrix2.M31 + (double)matrix1.M34 * (double)matrix2.M41);\n            matrix.M32 = (float)((double)matrix1.M31 * (double)matrix2.M12 + (double)matrix1.M32 * (double)matrix2.M22 + (double)matrix1.M33 * (double)matrix2.M32 + (double)matrix1.M34 * (double)matrix2.M42);\n            matrix.M33 = (float)((double)matrix1.M31 * (double)matrix2.M13 + (double)matrix1.M32 * (double)matrix2.M23 + (double)matrix1.M33 * (double)matrix2.M33 + (double)matrix1.M34 * (double)matrix2.M43);\n            matrix.M34 = (float)((double)matrix1.M31 * (double)matrix2.M14 + (double)matrix1.M32 * (double)matrix2.M24 + (double)matrix1.M33 * (double)matrix2.M34 + (double)matrix1.M34 * (double)matrix2.M44);\n            matrix.M41 = (float)((double)matrix1.M41 * (double)matrix2.M11 + (double)matrix1.M42 * (double)matrix2.M21 + (double)matrix1.M43 * (double)matrix2.M31 + (double)matrix1.M44 * (double)matrix2.M41);\n            matrix.M42 = (float)((double)matrix1.M41 * (double)matrix2.M12 + (double)matrix1.M42 * (double)matrix2.M22 + (double)matrix1.M43 * (double)matrix2.M32 + (double)matrix1.M44 * (double)matrix2.M42);\n            matrix.M43 = (float)((double)matrix1.M41 * (double)matrix2.M13 + (double)matrix1.M42 * (double)matrix2.M23 + (double)matrix1.M43 * (double)matrix2.M33 + (double)matrix1.M44 * (double)matrix2.M43);\n            matrix.M44 = (float)((double)matrix1.M41 * (double)matrix2.M14 + (double)matrix1.M42 * (double)matrix2.M24 + (double)matrix1.M43 * (double)matrix2.M34 + (double)matrix1.M44 * (double)matrix2.M44);\n            return matrix;\n#endif\n        }\n\n        // Matrix multiplication.  The result represents the transformation M2\n// followed by the transformation M1.  (Out = M1 * M2)\n//D3DXMATRIX* WINAPI D3DXMatrixMultiply\n  //  ( D3DXMATRIX *pOut, CONST D3DXMATRIX *pM1, CONST D3DXMATRIX *pM2 );\n\n        /// <summary>Native Interop Function</summary>\n        [DllImport(\"d3dx9_43.dll\", EntryPoint = \"D3DXMatrixMultiply\", CallingConvention = CallingConvention.StdCall, SetLastError=false, PreserveSig = true ), SuppressUnmanagedCodeSecurityAttribute]\n        private unsafe extern static Matrix* D3DXMatrixMultiply_([Out] Matrix* pOut, [In] Matrix* pM1, [In] Matrix* pM2);\n\n        public static void Multiply_Native(ref Matrix matrix1, ref Matrix matrix2, out Matrix result)\n        {\n            unsafe\n            {\n                fixed (Matrix* resultRef_ = &result)\n                    fixed (Matrix* m1Ref_ = &matrix1)\n                    fixed (Matrix* m2Ref_ = &matrix2)\n\n                        D3DXMatrixMultiply_(resultRef_, m1Ref_, m2Ref_);\n            }\n        }\n\n        /// <summary>\n        /// Multiplies a matrix by another matrix.\n        /// </summary>\n        /// <param name=\"matrix1\">Source matrix.</param><param name=\"matrix2\">Source matrix.</param><param name=\"result\">[OutAttribute] Result of the multiplication.</param>\n        public static void Multiply(ref Matrix matrix1, ref Matrix matrix2, out Matrix result)\n        {\n#if NATIVE_SUPPORT\n            Multiply_Native(ref matrix1, ref matrix2, out result);\n#else\n            float num1 = (float)((double)matrix1.M11 * (double)matrix2.M11 + (double)matrix1.M12 * (double)matrix2.M21 + (double)matrix1.M13 * (double)matrix2.M31 + (double)matrix1.M14 * (double)matrix2.M41);\n            float num2 = (float)((double)matrix1.M11 * (double)matrix2.M12 + (double)matrix1.M12 * (double)matrix2.M22 + (double)matrix1.M13 * (double)matrix2.M32 + (double)matrix1.M14 * (double)matrix2.M42);\n            float num3 = (float)((double)matrix1.M11 * (double)matrix2.M13 + (double)matrix1.M12 * (double)matrix2.M23 + (double)matrix1.M13 * (double)matrix2.M33 + (double)matrix1.M14 * (double)matrix2.M43);\n            float num4 = (float)((double)matrix1.M11 * (double)matrix2.M14 + (double)matrix1.M12 * (double)matrix2.M24 + (double)matrix1.M13 * (double)matrix2.M34 + (double)matrix1.M14 * (double)matrix2.M44);\n            float num5 = (float)((double)matrix1.M21 * (double)matrix2.M11 + (double)matrix1.M22 * (double)matrix2.M21 + (double)matrix1.M23 * (double)matrix2.M31 + (double)matrix1.M24 * (double)matrix2.M41);\n            float num6 = (float)((double)matrix1.M21 * (double)matrix2.M12 + (double)matrix1.M22 * (double)matrix2.M22 + (double)matrix1.M23 * (double)matrix2.M32 + (double)matrix1.M24 * (double)matrix2.M42);\n            float num7 = (float)((double)matrix1.M21 * (double)matrix2.M13 + (double)matrix1.M22 * (double)matrix2.M23 + (double)matrix1.M23 * (double)matrix2.M33 + (double)matrix1.M24 * (double)matrix2.M43);\n            float num8 = (float)((double)matrix1.M21 * (double)matrix2.M14 + (double)matrix1.M22 * (double)matrix2.M24 + (double)matrix1.M23 * (double)matrix2.M34 + (double)matrix1.M24 * (double)matrix2.M44);\n            float num9 = (float)((double)matrix1.M31 * (double)matrix2.M11 + (double)matrix1.M32 * (double)matrix2.M21 + (double)matrix1.M33 * (double)matrix2.M31 + (double)matrix1.M34 * (double)matrix2.M41);\n            float num10 = (float)((double)matrix1.M31 * (double)matrix2.M12 + (double)matrix1.M32 * (double)matrix2.M22 + (double)matrix1.M33 * (double)matrix2.M32 + (double)matrix1.M34 * (double)matrix2.M42);\n            float num11 = (float)((double)matrix1.M31 * (double)matrix2.M13 + (double)matrix1.M32 * (double)matrix2.M23 + (double)matrix1.M33 * (double)matrix2.M33 + (double)matrix1.M34 * (double)matrix2.M43);\n            float num12 = (float)((double)matrix1.M31 * (double)matrix2.M14 + (double)matrix1.M32 * (double)matrix2.M24 + (double)matrix1.M33 * (double)matrix2.M34 + (double)matrix1.M34 * (double)matrix2.M44);\n            float num13 = (float)((double)matrix1.M41 * (double)matrix2.M11 + (double)matrix1.M42 * (double)matrix2.M21 + (double)matrix1.M43 * (double)matrix2.M31 + (double)matrix1.M44 * (double)matrix2.M41);\n            float num14 = (float)((double)matrix1.M41 * (double)matrix2.M12 + (double)matrix1.M42 * (double)matrix2.M22 + (double)matrix1.M43 * (double)matrix2.M32 + (double)matrix1.M44 * (double)matrix2.M42);\n            float num15 = (float)((double)matrix1.M41 * (double)matrix2.M13 + (double)matrix1.M42 * (double)matrix2.M23 + (double)matrix1.M43 * (double)matrix2.M33 + (double)matrix1.M44 * (double)matrix2.M43);\n            float num16 = (float)((double)matrix1.M41 * (double)matrix2.M14 + (double)matrix1.M42 * (double)matrix2.M24 + (double)matrix1.M43 * (double)matrix2.M34 + (double)matrix1.M44 * (double)matrix2.M44);\n            result.M11 = num1;\n            result.M12 = num2;\n            result.M13 = num3;\n            result.M14 = num4;\n            result.M21 = num5;\n            result.M22 = num6;\n            result.M23 = num7;\n            result.M24 = num8;\n            result.M31 = num9;\n            result.M32 = num10;\n            result.M33 = num11;\n            result.M34 = num12;\n            result.M41 = num13;\n            result.M42 = num14;\n            result.M43 = num15;\n            result.M44 = num16;\n#endif\n        }\n\n        /// <summary>\n        /// Multiplies a matrix by a scalar value.\n        /// </summary>\n        /// <param name=\"matrix1\">Source matrix.</param><param name=\"scaleFactor\">Scalar value.</param>\n        public static Matrix Multiply(Matrix matrix1, float scaleFactor)\n        {\n            float num = scaleFactor;\n            Matrix matrix;\n            matrix.M11 = matrix1.M11 * num;\n            matrix.M12 = matrix1.M12 * num;\n            matrix.M13 = matrix1.M13 * num;\n            matrix.M14 = matrix1.M14 * num;\n            matrix.M21 = matrix1.M21 * num;\n            matrix.M22 = matrix1.M22 * num;\n            matrix.M23 = matrix1.M23 * num;\n            matrix.M24 = matrix1.M24 * num;\n            matrix.M31 = matrix1.M31 * num;\n            matrix.M32 = matrix1.M32 * num;\n            matrix.M33 = matrix1.M33 * num;\n            matrix.M34 = matrix1.M34 * num;\n            matrix.M41 = matrix1.M41 * num;\n            matrix.M42 = matrix1.M42 * num;\n            matrix.M43 = matrix1.M43 * num;\n            matrix.M44 = matrix1.M44 * num;\n            return matrix;\n        }\n\n        /// <summary>\n        /// Multiplies a matrix by a scalar value.\n        /// </summary>\n        /// <param name=\"matrix1\">Source matrix.</param><param name=\"scaleFactor\">Scalar value.</param><param name=\"result\">[OutAttribute] The result of the multiplication.</param>\n        public static void Multiply(ref Matrix matrix1, float scaleFactor, out Matrix result)\n        {\n            float num = scaleFactor;\n            result.M11 = matrix1.M11 * num;\n            result.M12 = matrix1.M12 * num;\n            result.M13 = matrix1.M13 * num;\n            result.M14 = matrix1.M14 * num;\n            result.M21 = matrix1.M21 * num;\n            result.M22 = matrix1.M22 * num;\n            result.M23 = matrix1.M23 * num;\n            result.M24 = matrix1.M24 * num;\n            result.M31 = matrix1.M31 * num;\n            result.M32 = matrix1.M32 * num;\n            result.M33 = matrix1.M33 * num;\n            result.M34 = matrix1.M34 * num;\n            result.M41 = matrix1.M41 * num;\n            result.M42 = matrix1.M42 * num;\n            result.M43 = matrix1.M43 * num;\n            result.M44 = matrix1.M44 * num;\n        }\n\n        /// <summary>\n        /// Divides the components of a matrix by the corresponding components of another matrix.\n        /// </summary>\n        /// <param name=\"matrix1\">Source matrix.</param><param name=\"matrix2\">The divisor.</param>\n        public static Matrix Divide(Matrix matrix1, Matrix matrix2)\n        {\n            Matrix matrix;\n            matrix.M11 = matrix1.M11 / matrix2.M11;\n            matrix.M12 = matrix1.M12 / matrix2.M12;\n            matrix.M13 = matrix1.M13 / matrix2.M13;\n            matrix.M14 = matrix1.M14 / matrix2.M14;\n            matrix.M21 = matrix1.M21 / matrix2.M21;\n            matrix.M22 = matrix1.M22 / matrix2.M22;\n            matrix.M23 = matrix1.M23 / matrix2.M23;\n            matrix.M24 = matrix1.M24 / matrix2.M24;\n            matrix.M31 = matrix1.M31 / matrix2.M31;\n            matrix.M32 = matrix1.M32 / matrix2.M32;\n            matrix.M33 = matrix1.M33 / matrix2.M33;\n            matrix.M34 = matrix1.M34 / matrix2.M34;\n            matrix.M41 = matrix1.M41 / matrix2.M41;\n            matrix.M42 = matrix1.M42 / matrix2.M42;\n            matrix.M43 = matrix1.M43 / matrix2.M43;\n            matrix.M44 = matrix1.M44 / matrix2.M44;\n            return matrix;\n        }\n\n        /// <summary>\n        /// Divides the components of a matrix by the corresponding components of another matrix.\n        /// </summary>\n        /// <param name=\"matrix1\">Source matrix.</param><param name=\"matrix2\">The divisor.</param><param name=\"result\">[OutAttribute] Result of the division.</param>\n        public static void Divide(ref Matrix matrix1, ref Matrix matrix2, out Matrix result)\n        {\n            result.M11 = matrix1.M11 / matrix2.M11;\n            result.M12 = matrix1.M12 / matrix2.M12;\n            result.M13 = matrix1.M13 / matrix2.M13;\n            result.M14 = matrix1.M14 / matrix2.M14;\n            result.M21 = matrix1.M21 / matrix2.M21;\n            result.M22 = matrix1.M22 / matrix2.M22;\n            result.M23 = matrix1.M23 / matrix2.M23;\n            result.M24 = matrix1.M24 / matrix2.M24;\n            result.M31 = matrix1.M31 / matrix2.M31;\n            result.M32 = matrix1.M32 / matrix2.M32;\n            result.M33 = matrix1.M33 / matrix2.M33;\n            result.M34 = matrix1.M34 / matrix2.M34;\n            result.M41 = matrix1.M41 / matrix2.M41;\n            result.M42 = matrix1.M42 / matrix2.M42;\n            result.M43 = matrix1.M43 / matrix2.M43;\n            result.M44 = matrix1.M44 / matrix2.M44;\n        }\n\n        /// <summary>\n        /// Divides the components of a matrix by a scalar.\n        /// </summary>\n        /// <param name=\"matrix1\">Source matrix.</param><param name=\"divider\">The divisor.</param>\n        public static Matrix Divide(Matrix matrix1, float divider)\n        {\n            float num = 1f / divider;\n            Matrix matrix;\n            matrix.M11 = matrix1.M11 * num;\n            matrix.M12 = matrix1.M12 * num;\n            matrix.M13 = matrix1.M13 * num;\n            matrix.M14 = matrix1.M14 * num;\n            matrix.M21 = matrix1.M21 * num;\n            matrix.M22 = matrix1.M22 * num;\n            matrix.M23 = matrix1.M23 * num;\n            matrix.M24 = matrix1.M24 * num;\n            matrix.M31 = matrix1.M31 * num;\n            matrix.M32 = matrix1.M32 * num;\n            matrix.M33 = matrix1.M33 * num;\n            matrix.M34 = matrix1.M34 * num;\n            matrix.M41 = matrix1.M41 * num;\n            matrix.M42 = matrix1.M42 * num;\n            matrix.M43 = matrix1.M43 * num;\n            matrix.M44 = matrix1.M44 * num;\n            return matrix;\n        }\n\n        /// <summary>\n        /// Divides the components of a matrix by a scalar.\n        /// </summary>\n        /// <param name=\"matrix1\">Source matrix.</param><param name=\"divider\">The divisor.</param><param name=\"result\">[OutAttribute] Result of the division.</param>\n        public static void Divide(ref Matrix matrix1, float divider, out Matrix result)\n        {\n            float num = 1f / divider;\n            result.M11 = matrix1.M11 * num;\n            result.M12 = matrix1.M12 * num;\n            result.M13 = matrix1.M13 * num;\n            result.M14 = matrix1.M14 * num;\n            result.M21 = matrix1.M21 * num;\n            result.M22 = matrix1.M22 * num;\n            result.M23 = matrix1.M23 * num;\n            result.M24 = matrix1.M24 * num;\n            result.M31 = matrix1.M31 * num;\n            result.M32 = matrix1.M32 * num;\n            result.M33 = matrix1.M33 * num;\n            result.M34 = matrix1.M34 * num;\n            result.M41 = matrix1.M41 * num;\n            result.M42 = matrix1.M42 * num;\n            result.M43 = matrix1.M43 * num;\n            result.M44 = matrix1.M44 * num;\n        }\n\n        private struct CanonicalBasis\n        {\n            public Vector3 Row0;\n            public Vector3 Row1;\n            public Vector3 Row2;\n        }\n\n        private struct VectorBasis\n        {\n            public unsafe Vector3* Element0;\n            public unsafe Vector3* Element1;\n            public unsafe Vector3* Element2;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWarsMath/MinerWarsMath.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"4.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">x86</Platform>\n    <ProductVersion>8.0.30703</ProductVersion>\n    <SchemaVersion>2.0</SchemaVersion>\n    <ProjectGuid>{40CE67D5-C89F-4A56-AE52-85DB1BEA07FE}</ProjectGuid>\n    <OutputType>Library</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>MinerWarsMath</RootNamespace>\n    <AssemblyName>MinerWarsMath</AssemblyName>\n    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>\n    <TargetFrameworkProfile>\n    </TargetFrameworkProfile>\n    <FileAlignment>512</FileAlignment>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|x86' \">\n    <PlatformTarget>x86</PlatformTarget>\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>bin\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|x86' \">\n    <PlatformTarget>x86</PlatformTarget>\n    <DebugType>pdbonly</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>bin\\Release\\</OutputPath>\n    <DefineConstants>TRACE</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>\n  </PropertyGroup>\n  <PropertyGroup>\n    <StartupObject />\n  </PropertyGroup>\n  <ItemGroup>\n    <Compile Include=\"BoundingBox.cs\" />\n    <Compile Include=\"BoundingFrustum.cs\" />\n    <Compile Include=\"BoundingSphere.cs\" />\n    <Compile Include=\"Color.cs\" />\n    <Compile Include=\"ContainmentType.cs\" />\n    <Compile Include=\"Curve.cs\" />\n    <Compile Include=\"CurveContinuity.cs\" />\n    <Compile Include=\"CurveKey.cs\" />\n    <Compile Include=\"CurveKeyCollection.cs\" />\n    <Compile Include=\"CurveLoopType.cs\" />\n    <Compile Include=\"CurveTangent.cs\" />\n    <Compile Include=\"Gjk.cs\" />\n    <Compile Include=\"MathHelper.cs\" />\n    <Compile Include=\"Matrix.cs\" />\n    <Compile Include=\"NativeDAABBTree.cs\" />\n    <Compile Include=\"NativeDAABBTreeInterop.cs\" />\n    <Compile Include=\"PackedVector\\Byte4.cs\" />\n    <Compile Include=\"PackedVector\\HalfUtils.cs\" />\n    <Compile Include=\"PackedVector\\HalfVector2.cs\" />\n    <Compile Include=\"PackedVector\\HalfVector4.cs\" />\n    <Compile Include=\"PackedVector\\IPackedVector.cs\" />\n    <Compile Include=\"PackedVector\\NormalizedByte4.cs\" />\n    <Compile Include=\"PackedVector\\PackUtils.cs\" />\n    <Compile Include=\"Plane.cs\" />\n    <Compile Include=\"PlaneIntersectionType.cs\" />\n    <Compile Include=\"Point.cs\" />\n    <Compile Include=\"Quaternion.cs\" />\n    <Compile Include=\"Ray.cs\" />\n    <Compile Include=\"Rectangle.cs\" />\n    <Compile Include=\"Vector2.cs\" />\n    <Compile Include=\"Vector3.cs\" />\n    <Compile Include=\"Vector4.cs\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Reference Include=\"System\" />\n  </ItemGroup>\n  <Import Project=\"$(MSBuildToolsPath)\\Microsoft.CSharp.targets\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "Sources/MinerWarsMath/NativeDAABBTree.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Runtime.InteropServices;\n\nnamespace MinerWarsMath\n{\n    public class NativeDAABBTree<T>\n    {\n        public struct Node\n        {\n            public readonly IntPtr Handle;\n            public T UserData;\n\n            public Node(IntPtr handle, T userData)\n            {\n                Handle = handle;\n                UserData = userData;\n            }\n        }\n\n        [ThreadStatic]\n        private static int[] m_resultList;\n\n        const int DEFAULT_SIZE = 1024;\n\n        private List<Node> m_nodes = new List<Node>(DEFAULT_SIZE);\n        private IntPtr m_handle;\n        private float m_margin;\n\n        public NativeDAABBTree(float extension)\n        {\n            m_handle = NativeDAABBTreeInterop.Create();\n            m_margin = extension;\n        }\n\n        ~NativeDAABBTree()\n        {\n            NativeDAABBTreeInterop.Destroy(m_handle);\n        }\n\n        public void Clear()\n        {\n            NativeDAABBTreeInterop.Clear(m_handle);\n            m_nodes.Clear();\n        }\n\n        public Node AddProxy(T data, ref BoundingBox aabb)\n        {\n            int nextIndex = m_nodes.Count;\n            var handle = NativeDAABBTreeInterop.Insert(m_handle, ref aabb, nextIndex);\n            var node = new Node(handle, data);\n            m_nodes.Add(node);\n            return node;\n        }\n\n        public void MoveProxy(Node node, ref BoundingBox aabb)\n        {\n            NativeDAABBTreeInterop.Move(m_handle, node.Handle, ref aabb, m_margin);\n        }\n\n        public void MoveProxy(Node node, ref BoundingBox aabb, Vector3 velocity, float margin)\n        {\n            NativeDAABBTreeInterop.Move(m_handle, node.Handle, ref aabb, ref velocity, margin);\n        }\n\n        public void RemoveProxy(Node node)\n        {\n            int lastIndex = m_nodes.Count - 1;\n            int index = NativeDAABBTreeInterop.RemoveAndChangeData(m_handle, node.Handle, m_nodes[lastIndex].Handle);\n            m_nodes[index] = m_nodes[lastIndex];\n            m_nodes.RemoveAt(lastIndex);\n        }\n\n        public bool IsEmpty\n        {\n            get\n            {\n                return NativeDAABBTreeInterop.IsEmpty(m_handle);\n            }\n        }\n\n        public void OptimizeBottomUp()\n        {\n            NativeDAABBTreeInterop.OptimizeBottomUp(m_handle);\n        }\n\n        public void OptimizeTopDown(int bu_threshold = 128)\n        {\n            NativeDAABBTreeInterop.OptimizeTopDown(m_handle, bu_threshold);\n        }\n\n        public void OptimizeIncremental(int passes)\n        {\n            NativeDAABBTreeInterop.OptimizeIncremental(m_handle, passes);\n        }\n\n        public void GetAll(List<T> addToList)\n        {\n            foreach (var node in m_nodes)\n            {\n                addToList.Add(node.UserData);\n            }\n        }\n\n        public void OverlapAABB(List<T> addToList, ref BoundingBox aabb)\n        {\n            if (m_resultList == null)\n                m_resultList = new int[DEFAULT_SIZE];\n\n            int count;\n\n            while ((count = NativeDAABBTreeInterop.QueryAABB(m_handle, ref aabb, m_resultList, 0, m_resultList.Length)) < 0)\n            {\n                m_resultList = new int[m_resultList.Length * 2];\n            }\n\n            for (int i = 0; i < count; i++)\n            {\n                int dataIndex = m_resultList[i];\n                addToList.Add(m_nodes[dataIndex].UserData);\n            }\n        }\n\n        public void OverlapFrustum(List<T> addToList, ref BoundingFrustum frustum)\n        {\n            if (m_resultList == null)\n                m_resultList = new int[DEFAULT_SIZE];\n\n            int count;            \n\n            while ((count = NatDAABB.OverlapFrustum(m_resultList, ref frustum, m_handle)) < 0)\n            {\n                m_resultList = new int[m_resultList.Length * 2];\n            }\n\n            for (int i = 0; i < count; i++)\n            {\n                int dataIndex = m_resultList[i];\n                addToList.Add(m_nodes[dataIndex].UserData);\n            }\n        }\n\n        public void OverlapSphere(List<T> addToList, ref BoundingSphere sphere)\n        {\n            if (m_resultList == null)\n                m_resultList = new int[DEFAULT_SIZE];\n\n            int count;\n\n            while ((count = NativeDAABBTreeInterop.QuerySphere(m_handle, ref sphere.Center, sphere.Radius, m_resultList, 0, m_resultList.Length)) < 0)\n            {\n                m_resultList = new int[m_resultList.Length * 2];\n            }\n\n            for (int i = 0; i < count; i++)\n            {\n                int dataIndex = m_resultList[i];\n                addToList.Add(m_nodes[dataIndex].UserData);\n            }\n        }\n\n        public void RayQuery(List<T> addToList, Vector3 from, Vector3 to)\n        {\n            if (m_resultList == null)\n                m_resultList = new int[DEFAULT_SIZE];\n\n            int count;\n\n            while ((count = NativeDAABBTreeInterop.QueryRay(m_handle, ref from, ref to, m_resultList, 0, m_resultList.Length)) < 0)\n            {\n                m_resultList = new int[m_resultList.Length * 2];\n            }\n\n            for (int i = 0; i < count; i++)\n            {\n                int dataIndex = m_resultList[i];\n                addToList.Add(m_nodes[dataIndex].UserData);\n            }\n        }\n\n        public void RayQuery(List<T> addToList, ref Ray ray)\n        {\n            Vector3 to = ray.Position + ray.Direction * 10000;\n            RayQuery(addToList, ray.Position, to);\n        }\n    }\n\n    class NatDAABB\n    {\n        public static unsafe int OverlapFrustum(int[] resultList, ref BoundingFrustum frustum, IntPtr handle)\n        {\n            float* x = stackalloc float[6];\n            float* y = stackalloc float[6];\n            float* z = stackalloc float[6];\n            float* d = stackalloc float[6];\n\n            Over(ref frustum, x, y, z, d);\n\n            return NativeDAABBTreeInterop.QuerySixPlanes(handle, x, y, z, d, resultList, 0, resultList.Length);\n        }\n\n        public static unsafe void Over(ref BoundingFrustum frustum, float* x, float* y, float* z, float* d)\n        {\n            for (int i = 0; i < 6; i++)\n            {\n                Plane p = frustum[i];\n                x[i] = -p.Normal.X;\n                y[i] = -p.Normal.Y;\n                z[i] = -p.Normal.Z;\n                d[i] = -p.D;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWarsMath/NativeDAABBTreeInterop.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Runtime.InteropServices;\nusing System.Security;\n\nnamespace MinerWarsMath\n{\n    partial class NativeDAABBTreeInterop\n    {\n        /// Return Type: btDbvt*\n        [SuppressUnmanagedCodeSecurity]\n        [DllImportAttribute(\"NativeDAABBTree.dll\", EntryPoint = \"Create\", CallingConvention = CallingConvention.Cdecl)]\n        public static extern IntPtr Create();\n\n\n        /// Return Type: void\n        ///tree: btDbvt*\n        [SuppressUnmanagedCodeSecurity]\n        [DllImportAttribute(\"NativeDAABBTree.dll\", EntryPoint = \"Destroy\", CallingConvention = CallingConvention.Cdecl)]\n        public static extern void Destroy(IntPtr tree);\n\n\n        /// Return Type: void\n        ///tree: btDbvt*\n        [SuppressUnmanagedCodeSecurity]\n        [DllImportAttribute(\"NativeDAABBTree.dll\", EntryPoint = \"Clear\", CallingConvention = CallingConvention.Cdecl)]\n        public static extern void Clear(IntPtr tree);\n\n        /// Return Type: btDbvtNode*\n        ///tree: btDbvt*\n        ///volume: btDbvtVolume\n        ///data: void*\n        [SuppressUnmanagedCodeSecurity]\n        [DllImportAttribute(\"NativeDAABBTree.dll\", EntryPoint = \"Insert\", CallingConvention = CallingConvention.Cdecl)]\n        public static extern IntPtr Insert(IntPtr tree, ref BoundingBox box, int data);\n\n        /// Return Type: btDbvtNode*\n        ///tree: btDbvt*\n        ///volume: btDbvtVolume\n        ///data: void*\n        [SuppressUnmanagedCodeSecurity]\n        [DllImportAttribute(\"NativeDAABBTree.dll\", EntryPoint = \"Move\", CallingConvention = CallingConvention.Cdecl)]\n        public static extern IntPtr Move(IntPtr tree, IntPtr node, ref BoundingBox box);\n\n        [SuppressUnmanagedCodeSecurity]\n        [DllImportAttribute(\"NativeDAABBTree.dll\", EntryPoint = \"Move2\", CallingConvention = CallingConvention.Cdecl)]\n        public static extern IntPtr Move(IntPtr tree, IntPtr node, ref BoundingBox box, ref Vector3 velocity);\n\n        [SuppressUnmanagedCodeSecurity]\n        [DllImportAttribute(\"NativeDAABBTree.dll\", EntryPoint = \"Move3\", CallingConvention = CallingConvention.Cdecl)]\n        public static extern IntPtr Move(IntPtr tree, IntPtr node, ref BoundingBox box, float margin);\n\n        [SuppressUnmanagedCodeSecurity]\n        [DllImportAttribute(\"NativeDAABBTree.dll\", EntryPoint = \"Move4\", CallingConvention = CallingConvention.Cdecl)]\n        public static extern IntPtr Move(IntPtr tree, IntPtr node, ref BoundingBox box, ref Vector3 velocity, float margin);\n\n        /// Return Type: void\n        ///tree: btDbvt*\n        ///node: btDbvtNode*\n        [SuppressUnmanagedCodeSecurity]\n        [DllImportAttribute(\"NativeDAABBTree.dll\", EntryPoint = \"Remove\", CallingConvention = CallingConvention.Cdecl)]\n        public static extern void Remove(IntPtr tree, IntPtr node);\n\n        [SuppressUnmanagedCodeSecurity]\n        [DllImportAttribute(\"NativeDAABBTree.dll\", EntryPoint = \"ChangeData\", CallingConvention = CallingConvention.Cdecl)]\n        public static extern void ChangeData(IntPtr tree, IntPtr node, int newValue);\n\n        /// <summary>\n        /// For performance reasons, when removing node, almost always changing data\n        /// </summary>\n        [SuppressUnmanagedCodeSecurity]\n        [DllImportAttribute(\"NativeDAABBTree.dll\", EntryPoint = \"RemoveAndChangeData\", CallingConvention = CallingConvention.Cdecl)]\n        public static extern int RemoveAndChangeData(IntPtr tree, IntPtr removeNode, IntPtr changeDataNode);\n\n        /// Return Type: int\n        ///tree: btDbvt*\n        ///node: btDbvtNode*\n        [SuppressUnmanagedCodeSecurity]\n        [DllImportAttribute(\"NativeDAABBTree.dll\", EntryPoint = \"MaxDepth\", CallingConvention = CallingConvention.Cdecl)]\n        public static extern int MaxDepth(IntPtr tree, IntPtr node);\n\n\n        /// Return Type: int\n        ///tree: btDbvt*\n        ///node: btDbvtNode*\n        [SuppressUnmanagedCodeSecurity]\n        [DllImportAttribute(\"NativeDAABBTree.dll\", EntryPoint = \"CountLeaves\", CallingConvention = CallingConvention.Cdecl)]\n        public static extern int CountLeaves(IntPtr tree, IntPtr node);\n\n\n        /// Return Type: boolean\n        ///tree: btDbvt*\n        [SuppressUnmanagedCodeSecurity]\n        [DllImportAttribute(\"NativeDAABBTree.dll\", EntryPoint = \"IsEmpty\", CallingConvention = CallingConvention.Cdecl)]\n        [return: MarshalAsAttribute(UnmanagedType.I1)]\n        public static extern bool IsEmpty(IntPtr tree);\n\n\n        /// Return Type: void\n        ///tree: btDbvt*\n        [SuppressUnmanagedCodeSecurity]\n        [DllImportAttribute(\"NativeDAABBTree.dll\", EntryPoint = \"OptimizeBottomUp\", CallingConvention = CallingConvention.Cdecl)]\n        public static extern void OptimizeBottomUp(IntPtr tree);\n\n\n        /// Return Type: void\n        ///tree: btDbvt*\n        ///bu_treshold: int\n        [SuppressUnmanagedCodeSecurity]\n        [DllImportAttribute(\"NativeDAABBTree.dll\", EntryPoint = \"OptimizeTopDown\", CallingConvention = CallingConvention.Cdecl)]\n        public static extern void OptimizeTopDown(IntPtr tree, int bu_treshold);\n\n\n        /// Return Type: void\n        ///tree: btDbvt*\n        ///passes: int\n        [SuppressUnmanagedCodeSecurity]\n        [DllImportAttribute(\"NativeDAABBTree.dll\", EntryPoint = \"OptimizeIncremental\", CallingConvention = CallingConvention.Cdecl)]\n        public static extern void OptimizeIncremental(IntPtr tree, int passes);\n\n\n        /// Return Type: boolean\n        ///tree: btDbvt*\n        ///dataArray: btDbvtNode**\n        ///offset: int\n        ///count: int\n        [SuppressUnmanagedCodeSecurity]\n        [DllImportAttribute(\"NativeDAABBTree.dll\", EntryPoint = \"QueryAll\", CallingConvention = CallingConvention.Cdecl)]\n        public static extern int QueryAll(IntPtr tree, int[] dataArray, int offset, int count);\n\n\n        /// Return Type: boolean\n        ///tree: btDbvt*\n        ///volume: btDbvtVolume\n        ///dataArray: btDbvtNode*\n        ///offset: int\n        ///count: int\n        [SuppressUnmanagedCodeSecurity]\n        [DllImportAttribute(\"NativeDAABBTree.dll\", EntryPoint = \"QueryAABB\", CallingConvention = CallingConvention.Cdecl)]\n        public static extern int QueryAABB(IntPtr tree, ref BoundingBox box, int[] dataArray, int offset, int count);\n\n\n        /// Return Type: boolean\n        ///tree: btDbvt*\n        ///sphereCenter: btVector3\n        ///sphereRadius: float\n        ///dataArray: btDbvtNode*\n        ///offset: int\n        ///count: int\n        [SuppressUnmanagedCodeSecurity]\n        [DllImportAttribute(\"NativeDAABBTree.dll\", EntryPoint = \"QuerySphere\", CallingConvention = CallingConvention.Cdecl)]\n        public static extern int QuerySphere(IntPtr tree, ref Vector3 center, float sphereRadius, int[] dataArray, int offset, int count);\n\n\n        /// Return Type: boolean\n        ///tree: btDbvt*\n        ///normals: btVector3*\n        ///offsets: float*\n        ///planeCount: int\n        ///dataArray: btDbvtNode**\n        ///offset: int\n        ///count: int\n        [SuppressUnmanagedCodeSecurity]\n        [DllImportAttribute(\"NativeDAABBTree.dll\", EntryPoint = \"QuerySixPlanes\", CallingConvention = CallingConvention.Cdecl)]\n        public static unsafe extern int QuerySixPlanes(IntPtr tree, float* normalX, float* normalY, float* normalZ, float* offsets, int[] dataArray, int offset, int count);\n\n        [SuppressUnmanagedCodeSecurity]\n        [DllImportAttribute(\"NativeDAABBTree.dll\", EntryPoint = \"QueryRay\", CallingConvention = CallingConvention.Cdecl)]\n        public static extern int QueryRay(IntPtr tree, ref Vector3 from, ref Vector3 to, int[] dataArray, int offset, int count);\n\n        [SuppressUnmanagedCodeSecurity]\n        [DllImportAttribute(\"NativeDAABBTree.dll\", EntryPoint = \"QueryRayNotThreadSafe\", CallingConvention = CallingConvention.Cdecl)]\n        public static extern int QueryRayNotThreadSafe(IntPtr tree, ref Vector3 from, ref Vector3 to, int[] dataArray, int offset, int count);\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWarsMath/PackedVector/Byte4.cs",
    "content": "﻿// Type: MinerWarsMath.Graphics.PackedVector.Byte4\n// Assembly: MinerWarsMath, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553\n// Assembly location: C:\\Program Files (x86)\\Microsoft XNA\\XNA Game Studio\\v4.0\\References\\Windows\\x86\\MinerWarsMath.dll\n\nusing MinerWarsMath;\nusing System;\nusing System.Globalization;\n\nnamespace MinerWarsMath.Graphics.PackedVector\n{\n    /// <summary>\n    /// Packed vector type containing four 8-bit unsigned integer values, ranging from 0 to 255.\n    /// </summary>\n    public struct Byte4 : IPackedVector<uint>, IPackedVector, IEquatable<Byte4>\n    {\n        private uint packedValue;\n\n        /// <summary>\n        /// Directly gets or sets the packed representation of the value.\n        /// </summary>\n        [CLSCompliant(false)]\n        public uint PackedValue\n        {\n            get\n            {\n                return this.packedValue;\n            }\n            set\n            {\n                this.packedValue = value;\n            }\n        }\n\n        /// <summary>\n        /// Initializes a new instance of the Byte4 class.\n        /// </summary>\n        /// <param name=\"x\">Initial value for the x component.</param><param name=\"y\">Initial value for the y component.</param><param name=\"z\">Initial value for the z component.</param><param name=\"w\">Initial value for the w component.</param>\n        public Byte4(float x, float y, float z, float w)\n        {\n            this.packedValue = Byte4.PackHelper(x, y, z, w);\n        }\n\n        /// <summary>\n        /// Initializes a new instance of the Byte4 structure.\n        /// </summary>\n        /// <param name=\"vector\">A vector containing the initial values for the components of the Byte4 structure.</param>\n        public Byte4(Vector4 vector)\n        {\n            this.packedValue = Byte4.PackHelper(vector.X, vector.Y, vector.Z, vector.W);\n        }\n\n        /// <summary>\n        /// Compares the current instance of a class to another instance to determine whether they are the same.\n        /// </summary>\n        /// <param name=\"a\">The object to the left of the equality operator.</param><param name=\"b\">The object to the right of the equality operator.</param>\n        public static bool operator ==(Byte4 a, Byte4 b)\n        {\n            return a.Equals(b);\n        }\n\n        /// <summary>\n        /// Compares the current instance of a class to another instance to determine whether they are different.\n        /// </summary>\n        /// <param name=\"a\">The object to the left of the equality operator.</param><param name=\"b\">The object to the right of the equality operator.</param>\n        public static bool operator !=(Byte4 a, Byte4 b)\n        {\n            return !a.Equals(b);\n        }\n\n        void IPackedVector.PackFromVector4(Vector4 vector)\n        {\n            this.packedValue = Byte4.PackHelper(vector.X, vector.Y, vector.Z, vector.W);\n        }\n\n        private static uint PackHelper(float vectorX, float vectorY, float vectorZ, float vectorW)\n        {\n            return PackUtils.PackUnsigned((float)byte.MaxValue, vectorX) | PackUtils.PackUnsigned((float)byte.MaxValue, vectorY) << 8 | PackUtils.PackUnsigned((float)byte.MaxValue, vectorZ) << 16 | PackUtils.PackUnsigned((float)byte.MaxValue, vectorW) << 24;\n        }\n\n        /// <summary>\n        /// Expands the packed representation into a Vector4.\n        /// </summary>\n        public Vector4 ToVector4()\n        {\n            Vector4 vector4;\n            vector4.X = (float)(this.packedValue & (uint)byte.MaxValue);\n            vector4.Y = (float)(this.packedValue >> 8 & (uint)byte.MaxValue);\n            vector4.Z = (float)(this.packedValue >> 16 & (uint)byte.MaxValue);\n            vector4.W = (float)(this.packedValue >> 24 & (uint)byte.MaxValue);\n            return vector4;\n        }\n\n        /// <summary>\n        /// Returns a string representation of the current instance.\n        /// </summary>\n        public override string ToString()\n        {\n            return this.packedValue.ToString(\"X8\", (IFormatProvider)CultureInfo.InvariantCulture);\n        }\n\n        /// <summary>\n        /// Gets the hash code for the current instance.\n        /// </summary>\n        public override int GetHashCode()\n        {\n            return this.packedValue.GetHashCode();\n        }\n\n        /// <summary>\n        /// Returns a value that indicates whether the current instance is equal to a specified object.\n        /// </summary>\n        /// <param name=\"obj\">The object with which to make the comparison.</param>\n        public override bool Equals(object obj)\n        {\n            if (obj is Byte4)\n                return this.Equals((Byte4)obj);\n            else\n                return false;\n        }\n\n        /// <summary>\n        /// Returns a value that indicates whether the current instance is equal to a specified object.\n        /// </summary>\n        /// <param name=\"other\">The object with which to make the comparison.</param>\n        public bool Equals(Byte4 other)\n        {\n            return this.packedValue.Equals(other.packedValue);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWarsMath/PackedVector/HalfUtils.cs",
    "content": "﻿// Type: MinerWarsMath.Graphics.PackedVector.HalfUtils\n// Assembly: MinerWarsMath, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553\n// Assembly location: C:\\Program Files (x86)\\Microsoft XNA\\XNA Game Studio\\v4.0\\References\\Windows\\x86\\MinerWarsMath.dll\n\nnamespace MinerWarsMath.Graphics.PackedVector\n{\n    internal static class HalfUtils\n    {\n        private const int cFracBits = 10;\n        private const int cExpBits = 5;\n        private const int cSignBit = 15;\n        private const uint cSignMask = 32768U;\n        private const uint cFracMask = 1023U;\n        private const int cExpBias = 15;\n        private const uint cRoundBit = 4096U;\n        private const uint eMax = 16U;\n        private const int eMin = -14;\n        private const uint wMaxNormal = 1207955455U;\n        private const uint wMinNormal = 947912704U;\n        private const uint BiasDiffo = 3355443200U;\n        private const int cFracBitsDiff = 13;\n\n        public static unsafe ushort Pack(float value)\n        {\n            unchecked\n            {\n                uint num1 = *(uint*)&value;\n                uint num2 = (num1 & (uint)int.MinValue) >> 16;\n                uint num3 = num1 & (uint)int.MaxValue;\n                ushort num4;\n                if (num3 > 1207955455U)\n                    num4 = (ushort)(num2 | (uint)short.MaxValue);\n                else if (num3 < 947912704U)\n                {\n                    uint num5 = (uint)((int)num3 & 8388607 | 8388608);\n                    int num6 = 113 - (int)(num3 >> 23);\n                    uint num7 = num6 > 31 ? 0U : num5 >> num6;\n                    num4 = (ushort)(num2 | (uint)((int)num7 + 4095 + ((int)(num7 >> 13) & 1)) >> 13);\n                }\n                else\n                    num4 = (ushort)(num2 | (uint)((int)num3 - 939524096 + 4095 + ((int)(num3 >> 13) & 1)) >> 13);\n                return num4;\n            }\n        }\n\n        public static unsafe float Unpack(ushort value)\n        {\n            uint num1;\n            if (((int)value & -33792) == 0)\n            {\n                if (((int)value & 1023) != 0)\n                {\n                    uint num2 = 4294967282U;\n                    uint num3 = (uint)value & 1023U;\n                    while (((int)num3 & 1024) == 0)\n                    {\n                        --num2;\n                        num3 <<= 1;\n                    }\n                    uint num4 = num3 & 4294966271U;\n                    num1 = (uint)(((int)value & 32768) << 16 | (int)num2 + (int)sbyte.MaxValue << 23 | (int)num4 << 13);\n                }\n                else\n                    num1 = (uint)(((int)value & 32768) << 16);\n            }\n            else\n                num1 = (uint)(((int)value & 32768) << 16 | ((int)value >> 10 & 31) - 15 + (int)sbyte.MaxValue << 23 | ((int)value & 1023) << 13);\n            return *(float*)&num1;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWarsMath/PackedVector/HalfVector2.cs",
    "content": "﻿// Type: MinerWarsMath.Graphics.PackedVector.HalfVector2\n// Assembly: MinerWarsMath, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553\n// Assembly location: C:\\Program Files (x86)\\Microsoft XNA\\XNA Game Studio\\v4.0\\References\\Windows\\x86\\MinerWarsMath.dll\n\nusing MinerWarsMath;\nusing System;\n\nnamespace MinerWarsMath.Graphics.PackedVector\n{\n    /// <summary>\n    /// Packed vector type containing two 16-bit floating-point values.\n    /// </summary>\n    public struct HalfVector2 : IPackedVector<uint>, IPackedVector, IEquatable<HalfVector2>\n    {\n        private uint packedValue;\n\n        /// <summary>\n        /// Directly gets or sets the packed representation of the value.\n        /// </summary>\n        [CLSCompliant(false)]\n        public uint PackedValue\n        {\n            get\n            {\n                return this.packedValue;\n            }\n            set\n            {\n                this.packedValue = value;\n            }\n        }\n\n        /// <summary>\n        /// Initializes a new instance of the HalfVector2 structure.\n        /// </summary>\n        /// <param name=\"x\">Initial value for the x component.</param><param name=\"y\">Initial value for the y component.</param>\n        public HalfVector2(float x, float y)\n        {\n            this.packedValue = HalfVector2.PackHelper(x, y);\n        }\n\n        /// <summary>\n        /// Initializes a new instance of the HalfVector2 structure.\n        /// </summary>\n        /// <param name=\"vector\">A vector containing the initial values for the components of the HalfVector2 structure.</param>\n        public HalfVector2(Vector2 vector)\n        {\n            this.packedValue = HalfVector2.PackHelper(vector.X, vector.Y);\n        }\n\n        /// <summary>\n        /// Compares the current instance of a class to another instance to determine whether they are the same.\n        /// </summary>\n        /// <param name=\"a\">The object to the left of the equality operator.</param><param name=\"b\">The object to the right of the equality operator.</param>\n        public static bool operator ==(HalfVector2 a, HalfVector2 b)\n        {\n            return a.Equals(b);\n        }\n\n        /// <summary>\n        /// Compares the current instance of a class to another instance to determine whether they are different.\n        /// </summary>\n        /// <param name=\"a\">The object to the left of the equality operator.</param><param name=\"b\">The object to the right of the equality operator.</param>\n        public static bool operator !=(HalfVector2 a, HalfVector2 b)\n        {\n            return !a.Equals(b);\n        }\n\n        void IPackedVector.PackFromVector4(Vector4 vector)\n        {\n            this.packedValue = HalfVector2.PackHelper(vector.X, vector.Y);\n        }\n\n        private static uint PackHelper(float vectorX, float vectorY)\n        {\n            return (uint)HalfUtils.Pack(vectorX) | (uint)HalfUtils.Pack(vectorY) << 16;\n        }\n\n        /// <summary>\n        /// Expands the HalfVector2 to a Vector2.\n        /// </summary>\n        public Vector2 ToVector2()\n        {\n            Vector2 vector2;\n            vector2.X = HalfUtils.Unpack((ushort)this.packedValue);\n            vector2.Y = HalfUtils.Unpack((ushort)(this.packedValue >> 16));\n            return vector2;\n        }\n\n        Vector4 IPackedVector.ToVector4()\n        {\n            Vector2 vector2 = this.ToVector2();\n            return new Vector4(vector2.X, vector2.Y, 0.0f, 1f);\n        }\n\n        /// <summary>\n        /// Returns a string representation of the current instance.\n        /// </summary>\n        public override string ToString()\n        {\n            return this.ToVector2().ToString();\n        }\n\n        /// <summary>\n        /// Gets the hash code for the current instance.\n        /// </summary>\n        public override int GetHashCode()\n        {\n            return this.packedValue.GetHashCode();\n        }\n\n        /// <summary>\n        /// Returns a value that indicates whether the current instance is equal to a specified object.\n        /// </summary>\n        /// <param name=\"obj\">The object with which to make the comparison.</param>\n        public override bool Equals(object obj)\n        {\n            if (obj is HalfVector2)\n                return this.Equals((HalfVector2)obj);\n            else\n                return false;\n        }\n\n        /// <summary>\n        /// Returns a value that indicates whether the current instance is equal to a specified object.\n        /// </summary>\n        /// <param name=\"other\">The object with which to make the comparison.</param>\n        public bool Equals(HalfVector2 other)\n        {\n            return this.packedValue.Equals(other.packedValue);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWarsMath/PackedVector/HalfVector4.cs",
    "content": "﻿// Type: MinerWarsMath.Graphics.PackedVector.HalfVector4\n// Assembly: MinerWarsMath, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553\n// Assembly location: C:\\Program Files (x86)\\Microsoft XNA\\XNA Game Studio\\v4.0\\References\\Windows\\x86\\MinerWarsMath.dll\n\nusing MinerWarsMath;\nusing System;\n\nnamespace MinerWarsMath.Graphics.PackedVector\n{\n    /// <summary>\n    /// Packed vector type containing four 16-bit floating-point values.\n    /// </summary>\n    public struct HalfVector4 : IPackedVector<ulong>, IPackedVector, IEquatable<HalfVector4>\n    {\n        private ulong packedValue;\n\n        /// <summary>\n        /// Directly gets or sets the packed representation of the value.\n        /// </summary>\n        [CLSCompliant(false)]\n        public ulong PackedValue\n        {\n            get\n            {\n                return this.packedValue;\n            }\n            set\n            {\n                this.packedValue = value;\n            }\n        }\n\n        /// <summary>\n        /// Initializes a new instance of the HalfVector4 class.\n        /// </summary>\n        /// <param name=\"x\">Initial value for the x component.</param><param name=\"y\">Initial value for the y component.</param><param name=\"z\">Initial value for the z component.</param><param name=\"w\">Initial value for the w component.</param>\n        public HalfVector4(float x, float y, float z, float w)\n        {\n            this.packedValue = HalfVector4.PackHelper(x, y, z, w);\n        }\n\n        /// <summary>\n        /// Initializes a new instance of the HalfVector4 structure.\n        /// </summary>\n        /// <param name=\"vector\">A vector containing the initial values for the components of the HalfVector4 structure.</param>\n        public HalfVector4(Vector4 vector)\n        {\n            this.packedValue = HalfVector4.PackHelper(vector.X, vector.Y, vector.Z, vector.W);\n        }\n\n        /// <summary>\n        /// Compares the current instance of a class to another instance to determine whether they are the same.\n        /// </summary>\n        /// <param name=\"a\">The object to the left of the equality operator.</param><param name=\"b\">The object to the right of the equality operator.</param>\n        public static bool operator ==(HalfVector4 a, HalfVector4 b)\n        {\n            return a.Equals(b);\n        }\n\n        /// <summary>\n        /// Compares the current instance of a class to another instance to determine whether they are different.\n        /// </summary>\n        /// <param name=\"a\">The object to the left of the equality operator.</param><param name=\"b\">The object to the right of the equality operator.</param>\n        public static bool operator !=(HalfVector4 a, HalfVector4 b)\n        {\n            return !a.Equals(b);\n        }\n\n        void IPackedVector.PackFromVector4(Vector4 vector)\n        {\n            this.packedValue = HalfVector4.PackHelper(vector.X, vector.Y, vector.Z, vector.W);\n        }\n\n        private static ulong PackHelper(float vectorX, float vectorY, float vectorZ, float vectorW)\n        {\n            return (ulong)HalfUtils.Pack(vectorX) | (ulong)HalfUtils.Pack(vectorY) << 16 | (ulong)HalfUtils.Pack(vectorZ) << 32 | (ulong)HalfUtils.Pack(vectorW) << 48;\n        }\n\n        /// <summary>\n        /// Expands the packed representation into a Vector4.\n        /// </summary>\n        public Vector4 ToVector4()\n        {\n            Vector4 vector4;\n            vector4.X = HalfUtils.Unpack((ushort)this.packedValue);\n            vector4.Y = HalfUtils.Unpack((ushort)(this.packedValue >> 16));\n            vector4.Z = HalfUtils.Unpack((ushort)(this.packedValue >> 32));\n            vector4.W = HalfUtils.Unpack((ushort)(this.packedValue >> 48));\n            return vector4;\n        }\n\n        /// <summary>\n        /// Returns a string representation of the current instance.\n        /// </summary>\n        public override string ToString()\n        {\n            return this.ToVector4().ToString();\n        }\n\n        /// <summary>\n        /// Gets the hash code for the current instance.\n        /// </summary>\n        public override int GetHashCode()\n        {\n            return this.packedValue.GetHashCode();\n        }\n\n        /// <summary>\n        /// Returns a value that indicates whether the current instance is equal to a specified object.\n        /// </summary>\n        /// <param name=\"obj\">The object with which to make the comparison.</param>\n        public override bool Equals(object obj)\n        {\n            if (obj is HalfVector4)\n                return this.Equals((HalfVector4)obj);\n            else\n                return false;\n        }\n\n        /// <summary>\n        /// Returns a value that indicates whether the current instance is equal to a specified object.\n        /// </summary>\n        /// <param name=\"other\">The object with which to make the comparison.</param>\n        public bool Equals(HalfVector4 other)\n        {\n            return this.packedValue.Equals(other.packedValue);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWarsMath/PackedVector/IPackedVector.cs",
    "content": "﻿// Type: MinerWarsMath.Graphics.PackedVector.IPackedVector\n// Assembly: MinerWarsMath, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553\n// Assembly location: C:\\Program Files (x86)\\Microsoft XNA\\XNA Game Studio\\v4.0\\References\\Windows\\x86\\MinerWarsMath.dll\n\nusing MinerWarsMath;\n\nnamespace MinerWarsMath.Graphics.PackedVector\n{\n    /// <summary>\n    /// Interface that converts packed vector types to and from Vector4 values, allowing multiple encodings to be manipulated in a generic way.\n    /// </summary>\n    public interface IPackedVector\n    {\n        /// <summary>\n        /// Expands the packed representation into a Vector4.\n        /// </summary>\n        Vector4 ToVector4();\n\n        /// <summary>\n        /// Sets the packed representation from a Vector4.\n        /// </summary>\n        /// <param name=\"vector\">The vector to create the packed representation from.</param>\n        void PackFromVector4(Vector4 vector);\n    }\n}\n\n// Type: MinerWarsMath.Graphics.PackedVector.IPackedVector\n// Assembly: MinerWarsMath, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553\n// Assembly location: C:\\Program Files (x86)\\Microsoft XNA\\XNA Game Studio\\v4.0\\References\\Windows\\x86\\MinerWarsMath.dll\n\n\nnamespace MinerWarsMath.Graphics.PackedVector\n{\n    /// <summary>\n    /// Converts packed vector types to and from Vector4 values.\n    /// </summary>\n    public interface IPackedVector<TPacked> : IPackedVector\n    {\n        /// <summary>\n        /// Directly gets or sets the packed representation of the value.\n        /// </summary>\n        TPacked PackedValue { get; set; }\n    }\n}\n\n"
  },
  {
    "path": "Sources/MinerWarsMath/PackedVector/NormalizedByte4.cs",
    "content": "﻿// Type: MinerWarsMath.Graphics.PackedVector.NormalizedByte4\n// Assembly: MinerWarsMath, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553\n// Assembly location: C:\\Program Files (x86)\\Microsoft XNA\\XNA Game Studio\\v4.0\\References\\Windows\\x86\\MinerWarsMath.dll\n\nusing MinerWarsMath;\nusing System;\nusing System.Globalization;\n\nnamespace MinerWarsMath.Graphics.PackedVector\n{\n    /// <summary>\n    /// Packed vector type containing four 8-bit signed normalized values, ranging from −1 to 1.\n    /// </summary>\n    public struct NormalizedByte4 : IPackedVector<uint>, IPackedVector, IEquatable<NormalizedByte4>\n    {\n        private uint packedValue;\n\n        /// <summary>\n        /// Directly gets or sets the packed representation of the value.\n        /// </summary>\n        [CLSCompliant(false)]\n        public uint PackedValue\n        {\n            get\n            {\n                return this.packedValue;\n            }\n            set\n            {\n                this.packedValue = value;\n            }\n        }\n\n        /// <summary>\n        /// Initializes a new instance of the NormalizedByte4 class.\n        /// </summary>\n        /// <param name=\"x\">Initial value for the x component.</param><param name=\"y\">Initial value for the y component.</param><param name=\"z\">Initial value for the z component.</param><param name=\"w\">Initial value for the w component.</param>\n        public NormalizedByte4(float x, float y, float z, float w)\n        {\n            this.packedValue = NormalizedByte4.PackHelper(x, y, z, w);\n        }\n\n        /// <summary>\n        /// Initializes a new instance of the NormalizedByte4 structure.\n        /// </summary>\n        /// <param name=\"vector\">A vector containing the initial values for the components of the NormalizedByte4 structure.</param>\n        public NormalizedByte4(Vector4 vector)\n        {\n            this.packedValue = NormalizedByte4.PackHelper(vector.X, vector.Y, vector.Z, vector.W);\n        }\n\n        /// <summary>\n        /// Compares the current instance of a class to another instance to determine whether they are the same.\n        /// </summary>\n        /// <param name=\"a\">The object to the left of the equality operator.</param><param name=\"b\">The object to the right of the equality operator.</param>\n        public static bool operator ==(NormalizedByte4 a, NormalizedByte4 b)\n        {\n            return a.Equals(b);\n        }\n\n        /// <summary>\n        /// Compares the current instance of a class to another instance to determine whether they are different.\n        /// </summary>\n        /// <param name=\"a\">The object to the left of the equality operator.</param><param name=\"b\">The object to the right of the equality operator.</param>\n        public static bool operator !=(NormalizedByte4 a, NormalizedByte4 b)\n        {\n            return !a.Equals(b);\n        }\n\n        void IPackedVector.PackFromVector4(Vector4 vector)\n        {\n            this.packedValue = NormalizedByte4.PackHelper(vector.X, vector.Y, vector.Z, vector.W);\n        }\n\n        private static uint PackHelper(float vectorX, float vectorY, float vectorZ, float vectorW)\n        {\n            return PackUtils.PackSNorm((uint)byte.MaxValue, vectorX) | PackUtils.PackSNorm((uint)byte.MaxValue, vectorY) << 8 | PackUtils.PackSNorm((uint)byte.MaxValue, vectorZ) << 16 | PackUtils.PackSNorm((uint)byte.MaxValue, vectorW) << 24;\n        }\n\n        /// <summary>\n        /// Expands the packed representation into a Vector4.\n        /// </summary>\n        public Vector4 ToVector4()\n        {\n            Vector4 vector4;\n            vector4.X = PackUtils.UnpackSNorm((uint)byte.MaxValue, this.packedValue);\n            vector4.Y = PackUtils.UnpackSNorm((uint)byte.MaxValue, this.packedValue >> 8);\n            vector4.Z = PackUtils.UnpackSNorm((uint)byte.MaxValue, this.packedValue >> 16);\n            vector4.W = PackUtils.UnpackSNorm((uint)byte.MaxValue, this.packedValue >> 24);\n            return vector4;\n        }\n\n        /// <summary>\n        /// Returns a string representation of the current instance.\n        /// </summary>\n        public override string ToString()\n        {\n            return this.packedValue.ToString(\"X8\", (IFormatProvider)CultureInfo.InvariantCulture);\n        }\n\n        /// <summary>\n        /// Gets the hash code for the current instance.\n        /// </summary>\n        public override int GetHashCode()\n        {\n            return this.packedValue.GetHashCode();\n        }\n\n        /// <summary>\n        /// Returns a value that indicates whether the current instance is equal to a specified object.\n        /// </summary>\n        /// <param name=\"obj\">The object with which to make the comparison.</param>\n        public override bool Equals(object obj)\n        {\n            if (obj is NormalizedByte4)\n                return this.Equals((NormalizedByte4)obj);\n            else\n                return false;\n        }\n\n        /// <summary>\n        /// Returns a value that indicates whether the current instance is equal to a specified object.\n        /// </summary>\n        /// <param name=\"other\">The object with which to make the comparison.</param>\n        public bool Equals(NormalizedByte4 other)\n        {\n            return this.packedValue.Equals(other.packedValue);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWarsMath/PackedVector/PackUtils.cs",
    "content": "﻿// Type: MinerWarsMath.Graphics.PackedVector.PackUtils\n// Assembly: MinerWarsMath, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553\n// Assembly location: C:\\Program Files (x86)\\Microsoft XNA\\XNA Game Studio\\v4.0\\References\\Windows\\x86\\MinerWarsMath.dll\n\nusing System;\n\nnamespace MinerWarsMath.Graphics.PackedVector\n{\n    internal static class PackUtils\n    {\n        public static uint PackUnsigned(float bitmask, float value)\n        {\n            return (uint)PackUtils.ClampAndRound(value, 0.0f, bitmask);\n        }\n\n        public static uint PackSigned(uint bitmask, float value)\n        {\n            float max = (float)(bitmask >> 1);\n            float min = (float)(-(double)max - 1.0);\n            return (uint)(int)PackUtils.ClampAndRound(value, min, max) & bitmask;\n        }\n\n        public static uint PackUNorm(float bitmask, float value)\n        {\n            value *= bitmask;\n            return (uint)PackUtils.ClampAndRound(value, 0.0f, bitmask);\n        }\n\n        public static float UnpackUNorm(uint bitmask, uint value)\n        {\n            value &= bitmask;\n            return (float)value / (float)bitmask;\n        }\n\n        public static uint PackSNorm(uint bitmask, float value)\n        {\n            float max = (float)(bitmask >> 1);\n            value *= max;\n            return (uint)(int)PackUtils.ClampAndRound(value, -max, max) & bitmask;\n        }\n\n        public static float UnpackSNorm(uint bitmask, uint value)\n        {\n            uint num1 = bitmask + 1U >> 1;\n            if (((int)value & (int)num1) != 0)\n            {\n                if (((int)value & (int)bitmask) == (int)num1)\n                    return -1f;\n                value |= ~bitmask;\n            }\n            else\n                value &= bitmask;\n            float num2 = (float)(bitmask >> 1);\n            return (float)(int)value / num2;\n        }\n\n        private static double ClampAndRound(float value, float min, float max)\n        {\n            if (float.IsNaN(value))\n                return 0.0;\n            if (float.IsInfinity(value))\n                return float.IsNegativeInfinity(value) ? (double)min : (double)max;\n            if ((double)value < (double)min)\n                return (double)min;\n            if ((double)value > (double)max)\n                return (double)max;\n            else\n                return Math.Round((double)value);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWarsMath/Plane.cs",
    "content": "﻿using System;\nusing System.ComponentModel;\nusing System.Globalization;\n\nnamespace MinerWarsMath\n{\n    /// <summary>\n    /// Defines a plane.\n    /// </summary>\n    [Serializable]\n    public struct Plane : IEquatable<Plane>\n    {\n        /// <summary>\n        /// The normal vector of the Plane.\n        /// </summary>\n        public Vector3 Normal;\n        /// <summary>\n        /// The distance of the Plane along its normal from the origin.\n        /// </summary>\n        public float D;\n\n        /// <summary>\n        /// Creates a new instance of Plane.\n        /// </summary>\n        /// <param name=\"a\">X component of the normal defining the Plane.</param><param name=\"b\">Y component of the normal defining the Plane.</param><param name=\"c\">Z component of the normal defining the Plane.</param><param name=\"d\">Distance of the Plane along its normal from the origin.</param>\n        public Plane(float a, float b, float c, float d)\n        {\n            this.Normal.X = a;\n            this.Normal.Y = b;\n            this.Normal.Z = c;\n            this.D = d;\n        }\n\n        /// <summary>\n        /// Creates a new instance of Plane.\n        /// </summary>\n        /// <param name=\"normal\">The normal vector to the Plane.</param><param name=\"d\">The Plane's distance along its normal from the origin.</param>\n        public Plane(Vector3 normal, float d)\n        {\n            this.Normal = normal;\n            this.D = d;\n        }\n\n        /// <summary>\n        /// Creates a new instance of Plane.\n        /// </summary>\n        /// <param name=\"value\">Vector4 with X, Y, and Z components defining the normal of the Plane. The W component defines the distance of the Plane along the normal from the origin.</param>\n        public Plane(Vector4 value)\n        {\n            this.Normal.X = value.X;\n            this.Normal.Y = value.Y;\n            this.Normal.Z = value.Z;\n            this.D = value.W;\n        }\n\n        /// <summary>\n        /// Creates a new instance of Plane.\n        /// </summary>\n        /// <param name=\"point1\">One point of a triangle defining the Plane.</param><param name=\"point2\">One point of a triangle defining the Plane.</param><param name=\"point3\">One point of a triangle defining the Plane.</param>\n        public Plane(Vector3 point1, Vector3 point2, Vector3 point3)\n        {\n            float num1 = point2.X - point1.X;\n            float num2 = point2.Y - point1.Y;\n            float num3 = point2.Z - point1.Z;\n            float num4 = point3.X - point1.X;\n            float num5 = point3.Y - point1.Y;\n            float num6 = point3.Z - point1.Z;\n            float num7 = (float)((double)num2 * (double)num6 - (double)num3 * (double)num5);\n            float num8 = (float)((double)num3 * (double)num4 - (double)num1 * (double)num6);\n            float num9 = (float)((double)num1 * (double)num5 - (double)num2 * (double)num4);\n            float num10 = 1f / (float)Math.Sqrt((double)num7 * (double)num7 + (double)num8 * (double)num8 + (double)num9 * (double)num9);\n            this.Normal.X = num7 * num10;\n            this.Normal.Y = num8 * num10;\n            this.Normal.Z = num9 * num10;\n            this.D = (float)-((double)this.Normal.X * (double)point1.X + (double)this.Normal.Y * (double)point1.Y + (double)this.Normal.Z * (double)point1.Z);\n        }\n\n        /// <summary>\n        /// Determines whether two instances of Plane are equal.\n        /// </summary>\n        /// <param name=\"lhs\">The object to the left of the equality operator.</param><param name=\"rhs\">The object to the right of the equality operator.</param>\n        public static bool operator ==(Plane lhs, Plane rhs)\n        {\n            return lhs.Equals(rhs);\n        }\n\n        /// <summary>\n        /// Determines whether two instances of Plane are not equal.\n        /// </summary>\n        /// <param name=\"lhs\">The object to the left of the inequality operator.</param><param name=\"rhs\">The object to the right of the inequality operator.</param>\n        public static bool operator !=(Plane lhs, Plane rhs)\n        {\n            if ((double)lhs.Normal.X == (double)rhs.Normal.X && (double)lhs.Normal.Y == (double)rhs.Normal.Y && (double)lhs.Normal.Z == (double)rhs.Normal.Z)\n                return (double)lhs.D != (double)rhs.D;\n            else\n                return true;\n        }\n\n        /// <summary>\n        /// Determines whether the specified Plane is equal to the Plane.\n        /// </summary>\n        /// <param name=\"other\">The Plane to compare with the current Plane.</param>\n        public bool Equals(Plane other)\n        {\n            if ((double)this.Normal.X == (double)other.Normal.X && (double)this.Normal.Y == (double)other.Normal.Y && (double)this.Normal.Z == (double)other.Normal.Z)\n                return (double)this.D == (double)other.D;\n            else\n                return false;\n        }\n\n        /// <summary>\n        /// Determines whether the specified Object is equal to the Plane.\n        /// </summary>\n        /// <param name=\"obj\">The Object to compare with the current Plane.</param>\n        public override bool Equals(object obj)\n        {\n            bool flag = false;\n            if (obj is Plane)\n                flag = this.Equals((Plane)obj);\n            return flag;\n        }\n\n        /// <summary>\n        /// Gets the hash code for this object.\n        /// </summary>\n        public override int GetHashCode()\n        {\n            return this.Normal.GetHashCode() + this.D.GetHashCode();\n        }\n\n        /// <summary>\n        /// Returns a String that represents the current Plane.\n        /// </summary>\n        public override string ToString()\n        {\n            CultureInfo currentCulture = CultureInfo.CurrentCulture;\n            return string.Format((IFormatProvider)currentCulture, \"{{Normal:{0} D:{1}}}\", new object[2]\n      {\n        (object) this.Normal.ToString(),\n        (object) this.D.ToString((IFormatProvider) currentCulture)\n      });\n        }\n\n        /// <summary>\n        /// Changes the coefficients of the Normal vector of this Plane to make it of unit length.\n        /// </summary>\n        public void Normalize()\n        {\n            float num1 = (float)((double)this.Normal.X * (double)this.Normal.X + (double)this.Normal.Y * (double)this.Normal.Y + (double)this.Normal.Z * (double)this.Normal.Z);\n            if ((double)Math.Abs(num1 - 1f) < 1.19209289550781E-07)\n                return;\n            float num2 = 1f / (float)Math.Sqrt((double)num1);\n            this.Normal.X *= num2;\n            this.Normal.Y *= num2;\n            this.Normal.Z *= num2;\n            this.D *= num2;\n        }\n\n        /// <summary>\n        /// Changes the coefficients of the Normal vector of a Plane to make it of unit length.\n        /// </summary>\n        /// <param name=\"value\">The Plane to normalize.</param>\n        public static Plane Normalize(Plane value)\n        {\n            float num1 = (float)((double)value.Normal.X * (double)value.Normal.X + (double)value.Normal.Y * (double)value.Normal.Y + (double)value.Normal.Z * (double)value.Normal.Z);\n            if ((double)Math.Abs(num1 - 1f) < 1.19209289550781E-07)\n            {\n                Plane plane;\n                plane.Normal = value.Normal;\n                plane.D = value.D;\n                return plane;\n            }\n            else\n            {\n                float num2 = 1f / (float)Math.Sqrt((double)num1);\n                Plane plane;\n                plane.Normal.X = value.Normal.X * num2;\n                plane.Normal.Y = value.Normal.Y * num2;\n                plane.Normal.Z = value.Normal.Z * num2;\n                plane.D = value.D * num2;\n                return plane;\n            }\n        }\n\n        /// <summary>\n        /// Changes the coefficients of the Normal vector of a Plane to make it of unit length.\n        /// </summary>\n        /// <param name=\"value\">The Plane to normalize.</param><param name=\"result\">[OutAttribute] An existing plane Plane filled in with a normalized version of the specified plane.</param>\n        public static void Normalize(ref Plane value, out Plane result)\n        {\n            float num1 = (float)((double)value.Normal.X * (double)value.Normal.X + (double)value.Normal.Y * (double)value.Normal.Y + (double)value.Normal.Z * (double)value.Normal.Z);\n            if ((double)Math.Abs(num1 - 1f) < 1.19209289550781E-07)\n            {\n                result.Normal = value.Normal;\n                result.D = value.D;\n            }\n            else\n            {\n                float num2 = 1f / (float)Math.Sqrt((double)num1);\n                result.Normal.X = value.Normal.X * num2;\n                result.Normal.Y = value.Normal.Y * num2;\n                result.Normal.Z = value.Normal.Z * num2;\n                result.D = value.D * num2;\n            }\n        }\n\n        /// <summary>\n        /// Transforms a normalized Plane by a Matrix.\n        /// </summary>\n        /// <param name=\"plane\">The normalized Plane to transform. This Plane must already be normalized, so that its Normal vector is of unit length, before this method is called.</param><param name=\"matrix\">The transform Matrix to apply to the Plane.</param>\n        public static Plane Transform(Plane plane, Matrix matrix)\n        {\n            Matrix result;\n            Matrix.Invert(ref matrix, out result);\n            float num1 = plane.Normal.X;\n            float num2 = plane.Normal.Y;\n            float num3 = plane.Normal.Z;\n            float num4 = plane.D;\n            Plane plane1;\n            plane1.Normal.X = (float)((double)num1 * (double)result.M11 + (double)num2 * (double)result.M12 + (double)num3 * (double)result.M13 + (double)num4 * (double)result.M14);\n            plane1.Normal.Y = (float)((double)num1 * (double)result.M21 + (double)num2 * (double)result.M22 + (double)num3 * (double)result.M23 + (double)num4 * (double)result.M24);\n            plane1.Normal.Z = (float)((double)num1 * (double)result.M31 + (double)num2 * (double)result.M32 + (double)num3 * (double)result.M33 + (double)num4 * (double)result.M34);\n            plane1.D = (float)((double)num1 * (double)result.M41 + (double)num2 * (double)result.M42 + (double)num3 * (double)result.M43 + (double)num4 * (double)result.M44);\n            return plane1;\n        }\n\n        /// <summary>\n        /// Transforms a normalized Plane by a Matrix.\n        /// </summary>\n        /// <param name=\"plane\">The normalized Plane to transform. This Plane must already be normalized, so that its Normal vector is of unit length, before this method is called.</param><param name=\"matrix\">The transform Matrix to apply to the Plane.</param><param name=\"result\">[OutAttribute] An existing Plane filled in with the results of applying the transform.</param>\n        public static void Transform(ref Plane plane, ref Matrix matrix, out Plane result)\n        {\n            Matrix result1;\n            Matrix.Invert(ref matrix, out result1);\n            float num1 = plane.Normal.X;\n            float num2 = plane.Normal.Y;\n            float num3 = plane.Normal.Z;\n            float num4 = plane.D;\n            result.Normal.X = (float)((double)num1 * (double)result1.M11 + (double)num2 * (double)result1.M12 + (double)num3 * (double)result1.M13 + (double)num4 * (double)result1.M14);\n            result.Normal.Y = (float)((double)num1 * (double)result1.M21 + (double)num2 * (double)result1.M22 + (double)num3 * (double)result1.M23 + (double)num4 * (double)result1.M24);\n            result.Normal.Z = (float)((double)num1 * (double)result1.M31 + (double)num2 * (double)result1.M32 + (double)num3 * (double)result1.M33 + (double)num4 * (double)result1.M34);\n            result.D = (float)((double)num1 * (double)result1.M41 + (double)num2 * (double)result1.M42 + (double)num3 * (double)result1.M43 + (double)num4 * (double)result1.M44);\n        }\n\n        /// <summary>\n        /// Transforms a normalized Plane by a Quaternion rotation.\n        /// </summary>\n        /// <param name=\"plane\">The normalized Plane to transform. This Plane must already be normalized, so that its Normal vector is of unit length, before this method is called.</param><param name=\"rotation\">The Quaternion rotation to apply to the Plane.</param>\n        public static Plane Transform(Plane plane, Quaternion rotation)\n        {\n            float num1 = rotation.X + rotation.X;\n            float num2 = rotation.Y + rotation.Y;\n            float num3 = rotation.Z + rotation.Z;\n            float num4 = rotation.W * num1;\n            float num5 = rotation.W * num2;\n            float num6 = rotation.W * num3;\n            float num7 = rotation.X * num1;\n            float num8 = rotation.X * num2;\n            float num9 = rotation.X * num3;\n            float num10 = rotation.Y * num2;\n            float num11 = rotation.Y * num3;\n            float num12 = rotation.Z * num3;\n            float num13 = 1f - num10 - num12;\n            float num14 = num8 - num6;\n            float num15 = num9 + num5;\n            float num16 = num8 + num6;\n            float num17 = 1f - num7 - num12;\n            float num18 = num11 - num4;\n            float num19 = num9 - num5;\n            float num20 = num11 + num4;\n            float num21 = 1f - num7 - num10;\n            float num22 = plane.Normal.X;\n            float num23 = plane.Normal.Y;\n            float num24 = plane.Normal.Z;\n            Plane plane1;\n            plane1.Normal.X = (float)((double)num22 * (double)num13 + (double)num23 * (double)num14 + (double)num24 * (double)num15);\n            plane1.Normal.Y = (float)((double)num22 * (double)num16 + (double)num23 * (double)num17 + (double)num24 * (double)num18);\n            plane1.Normal.Z = (float)((double)num22 * (double)num19 + (double)num23 * (double)num20 + (double)num24 * (double)num21);\n            plane1.D = plane.D;\n            return plane1;\n        }\n\n        /// <summary>\n        /// Transforms a normalized Plane by a Quaternion rotation.\n        /// </summary>\n        /// <param name=\"plane\">The normalized Plane to transform. This Plane must already be normalized, so that its Normal vector is of unit length, before this method is called.</param><param name=\"rotation\">The Quaternion rotation to apply to the Plane.</param><param name=\"result\">[OutAttribute] An existing Plane filled in with the results of applying the rotation.</param>\n        public static void Transform(ref Plane plane, ref Quaternion rotation, out Plane result)\n        {\n            float num1 = rotation.X + rotation.X;\n            float num2 = rotation.Y + rotation.Y;\n            float num3 = rotation.Z + rotation.Z;\n            float num4 = rotation.W * num1;\n            float num5 = rotation.W * num2;\n            float num6 = rotation.W * num3;\n            float num7 = rotation.X * num1;\n            float num8 = rotation.X * num2;\n            float num9 = rotation.X * num3;\n            float num10 = rotation.Y * num2;\n            float num11 = rotation.Y * num3;\n            float num12 = rotation.Z * num3;\n            float num13 = 1f - num10 - num12;\n            float num14 = num8 - num6;\n            float num15 = num9 + num5;\n            float num16 = num8 + num6;\n            float num17 = 1f - num7 - num12;\n            float num18 = num11 - num4;\n            float num19 = num9 - num5;\n            float num20 = num11 + num4;\n            float num21 = 1f - num7 - num10;\n            float num22 = plane.Normal.X;\n            float num23 = plane.Normal.Y;\n            float num24 = plane.Normal.Z;\n            result.Normal.X = (float)((double)num22 * (double)num13 + (double)num23 * (double)num14 + (double)num24 * (double)num15);\n            result.Normal.Y = (float)((double)num22 * (double)num16 + (double)num23 * (double)num17 + (double)num24 * (double)num18);\n            result.Normal.Z = (float)((double)num22 * (double)num19 + (double)num23 * (double)num20 + (double)num24 * (double)num21);\n            result.D = plane.D;\n        }\n\n        /// <summary>\n        /// Calculates the dot product of a specified Vector4 and this Plane.\n        /// </summary>\n        /// <param name=\"value\">The Vector4 to multiply this Plane by.</param>\n        public float Dot(Vector4 value)\n        {\n            return (float)((double)this.Normal.X * (double)value.X + (double)this.Normal.Y * (double)value.Y + (double)this.Normal.Z * (double)value.Z + (double)this.D * (double)value.W);\n        }\n\n        /// <summary>\n        /// Calculates the dot product of a specified Vector4 and this Plane.\n        /// </summary>\n        /// <param name=\"value\">The Vector4 to multiply this Plane by.</param><param name=\"result\">[OutAttribute] The dot product of the specified Vector4 and this Plane.</param>\n        public void Dot(ref Vector4 value, out float result)\n        {\n            result = (float)((double)this.Normal.X * (double)value.X + (double)this.Normal.Y * (double)value.Y + (double)this.Normal.Z * (double)value.Z + (double)this.D * (double)value.W);\n        }\n\n        /// <summary>\n        /// Returns the dot product of a specified Vector3 and the Normal vector of this Plane plus the distance (D) value of the Plane.\n        /// </summary>\n        /// <param name=\"value\">The Vector3 to multiply by.</param>\n        public float DotCoordinate(Vector3 value)\n        {\n            return (float)((double)this.Normal.X * (double)value.X + (double)this.Normal.Y * (double)value.Y + (double)this.Normal.Z * (double)value.Z) + this.D;\n        }\n\n        /// <summary>\n        /// Returns the dot product of a specified Vector3 and the Normal vector of this Plane plus the distance (D) value of the Plane.\n        /// </summary>\n        /// <param name=\"value\">The Vector3 to multiply by.</param><param name=\"result\">[OutAttribute] The resulting value.</param>\n        public void DotCoordinate(ref Vector3 value, out float result)\n        {\n            result = (float)((double)this.Normal.X * (double)value.X + (double)this.Normal.Y * (double)value.Y + (double)this.Normal.Z * (double)value.Z) + this.D;\n        }\n\n        /// <summary>\n        /// Returns the dot product of a specified Vector3 and the Normal vector of this Plane.\n        /// </summary>\n        /// <param name=\"value\">The Vector3 to multiply by.</param>\n        public float DotNormal(Vector3 value)\n        {\n            return (float)((double)this.Normal.X * (double)value.X + (double)this.Normal.Y * (double)value.Y + (double)this.Normal.Z * (double)value.Z);\n        }\n\n        /// <summary>\n        /// Returns the dot product of a specified Vector3 and the Normal vector of this Plane.\n        /// </summary>\n        /// <param name=\"value\">The Vector3 to multiply by.</param><param name=\"result\">[OutAttribute] The resulting dot product.</param>\n        public void DotNormal(ref Vector3 value, out float result)\n        {\n            result = (float)((double)this.Normal.X * (double)value.X + (double)this.Normal.Y * (double)value.Y + (double)this.Normal.Z * (double)value.Z);\n        }\n\n        /// <summary>\n        /// Checks whether the current Plane intersects a specified BoundingBox.\n        /// </summary>\n        /// <param name=\"box\">The BoundingBox to test for intersection with.</param>\n        public PlaneIntersectionType Intersects(BoundingBox box)\n        {\n            Vector3 vector3_1;\n            vector3_1.X = (double)this.Normal.X >= 0.0 ? box.Min.X : box.Max.X;\n            vector3_1.Y = (double)this.Normal.Y >= 0.0 ? box.Min.Y : box.Max.Y;\n            vector3_1.Z = (double)this.Normal.Z >= 0.0 ? box.Min.Z : box.Max.Z;\n            Vector3 vector3_2;\n            vector3_2.X = (double)this.Normal.X >= 0.0 ? box.Max.X : box.Min.X;\n            vector3_2.Y = (double)this.Normal.Y >= 0.0 ? box.Max.Y : box.Min.Y;\n            vector3_2.Z = (double)this.Normal.Z >= 0.0 ? box.Max.Z : box.Min.Z;\n            if ((double)this.Normal.X * (double)vector3_1.X + (double)this.Normal.Y * (double)vector3_1.Y + (double)this.Normal.Z * (double)vector3_1.Z + (double)this.D > 0.0)\n                return PlaneIntersectionType.Front;\n            return (double)this.Normal.X * (double)vector3_2.X + (double)this.Normal.Y * (double)vector3_2.Y + (double)this.Normal.Z * (double)vector3_2.Z + (double)this.D < 0.0 ? PlaneIntersectionType.Back : PlaneIntersectionType.Intersecting;\n        }\n\n        /// <summary>\n        /// Checks whether the current Plane intersects a BoundingBox.\n        /// </summary>\n        /// <param name=\"box\">The BoundingBox to check for intersection with.</param><param name=\"result\">[OutAttribute] An enumeration indicating whether the Plane intersects the BoundingBox.</param>\n        public void Intersects(ref BoundingBox box, out PlaneIntersectionType result)\n        {\n            Vector3 vector3_1;\n            vector3_1.X = (double)this.Normal.X >= 0.0 ? box.Min.X : box.Max.X;\n            vector3_1.Y = (double)this.Normal.Y >= 0.0 ? box.Min.Y : box.Max.Y;\n            vector3_1.Z = (double)this.Normal.Z >= 0.0 ? box.Min.Z : box.Max.Z;\n            Vector3 vector3_2;\n            vector3_2.X = (double)this.Normal.X >= 0.0 ? box.Max.X : box.Min.X;\n            vector3_2.Y = (double)this.Normal.Y >= 0.0 ? box.Max.Y : box.Min.Y;\n            vector3_2.Z = (double)this.Normal.Z >= 0.0 ? box.Max.Z : box.Min.Z;\n            if ((double)this.Normal.X * (double)vector3_1.X + (double)this.Normal.Y * (double)vector3_1.Y + (double)this.Normal.Z * (double)vector3_1.Z + (double)this.D > 0.0)\n                result = PlaneIntersectionType.Front;\n            else if ((double)this.Normal.X * (double)vector3_2.X + (double)this.Normal.Y * (double)vector3_2.Y + (double)this.Normal.Z * (double)vector3_2.Z + (double)this.D < 0.0)\n                result = PlaneIntersectionType.Back;\n            else\n                result = PlaneIntersectionType.Intersecting;\n        }\n\n        /// <summary>\n        /// Checks whether the current Plane intersects a specified BoundingFrustum.\n        /// </summary>\n        /// <param name=\"frustum\">The BoundingFrustum to check for intersection with.</param>\n        public PlaneIntersectionType Intersects(BoundingFrustum frustum)\n        {\n            return frustum.Intersects(this);\n        }\n\n        /// <summary>\n        /// Checks whether the current Plane intersects a specified BoundingSphere.\n        /// </summary>\n        /// <param name=\"sphere\">The BoundingSphere to check for intersection with.</param>\n        public PlaneIntersectionType Intersects(BoundingSphere sphere)\n        {\n            float num = (float)((double)sphere.Center.X * (double)this.Normal.X + (double)sphere.Center.Y * (double)this.Normal.Y + (double)sphere.Center.Z * (double)this.Normal.Z) + this.D;\n            if ((double)num > (double)sphere.Radius)\n                return PlaneIntersectionType.Front;\n            return (double)num < -(double)sphere.Radius ? PlaneIntersectionType.Back : PlaneIntersectionType.Intersecting;\n        }\n\n        /// <summary>\n        /// Checks whether the current Plane intersects a BoundingSphere.\n        /// </summary>\n        /// <param name=\"sphere\">The BoundingSphere to check for intersection with.</param><param name=\"result\">[OutAttribute] An enumeration indicating whether the Plane intersects the BoundingSphere.</param>\n        public void Intersects(ref BoundingSphere sphere, out PlaneIntersectionType result)\n        {\n            float num = (float)((double)sphere.Center.X * (double)this.Normal.X + (double)sphere.Center.Y * (double)this.Normal.Y + (double)sphere.Center.Z * (double)this.Normal.Z) + this.D;\n            if ((double)num > (double)sphere.Radius)\n                result = PlaneIntersectionType.Front;\n            else if ((double)num < -(double)sphere.Radius)\n                result = PlaneIntersectionType.Back;\n            else\n                result = PlaneIntersectionType.Intersecting;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWarsMath/PlaneIntersectionType.cs",
    "content": "﻿namespace MinerWarsMath\n{\n    /// <summary>\n    /// Describes the intersection between a plane and a bounding volume.\n    /// </summary>\n    /// <param name=\"Back\">There is no intersection, and the bounding volume is in the negative half-space of the Plane.</param><param name=\"Front\">There is no intersection, and the bounding volume is in the positive half-space of the Plane.</param><param name=\"Intersecting\">The Plane is intersected.</param>\n    public enum PlaneIntersectionType\n    {\n        Front,\n        Back,\n        Intersecting,\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWarsMath/Point.cs",
    "content": "﻿using System;\nusing System.ComponentModel;\nusing System.Globalization;\n\nnamespace MinerWarsMath\n{\n    /// <summary>\n    /// Defines a point in 2D space.\n    /// </summary>\n    [Serializable]\n    public struct Point : IEquatable<Point>\n    {\n        private static Point _zero = new Point();\n        /// <summary>\n        /// Specifies the x-coordinate of the Point.\n        /// </summary>\n        public int X;\n        /// <summary>\n        /// Specifies the y-coordinate of the Point.\n        /// </summary>\n        public int Y;\n\n        /// <summary>\n        /// Returns the point (0,0).\n        /// </summary>\n        public static Point Zero\n        {\n            get\n            {\n                return Point._zero;\n            }\n        }\n\n        static Point()\n        {\n        }\n\n        /// <summary>\n        /// Initializes a new instance of Point.\n        /// </summary>\n        /// <param name=\"x\">The x-coordinate of the Point.</param><param name=\"y\">The y-coordinate of the Point.</param>\n        public Point(int x, int y)\n        {\n            this.X = x;\n            this.Y = y;\n        }\n\n        /// <summary>\n        /// Determines whether two Point instances are equal.\n        /// </summary>\n        /// <param name=\"a\">Point on the left side of the equal sign.</param><param name=\"b\">Point on the right side of the equal sign.</param>\n        public static bool operator ==(Point a, Point b)\n        {\n            return a.Equals(b);\n        }\n\n        /// <summary>\n        /// Determines whether two Point instances are not equal.\n        /// </summary>\n        /// <param name=\"a\">The Point on the left side of the equal sign.</param><param name=\"b\">The Point on the right side of the equal sign.</param>\n        public static bool operator !=(Point a, Point b)\n        {\n            if (a.X == b.X)\n                return a.Y != b.Y;\n            else\n                return true;\n        }\n\n        /// <summary>\n        /// Determines whether two Point instances are equal.\n        /// </summary>\n        /// <param name=\"other\">The Point to compare this instance to.</param>\n        public bool Equals(Point other)\n        {\n            if (this.X == other.X)\n                return this.Y == other.Y;\n            else\n                return false;\n        }\n\n        /// <summary>\n        /// Determines whether two Point instances are equal.\n        /// </summary>\n        /// <param name=\"obj\">The object to compare this instance to.</param>\n        public override bool Equals(object obj)\n        {\n            bool flag = false;\n            if (obj is Point)\n                flag = this.Equals((Point)obj);\n            return flag;\n        }\n\n        /// <summary>\n        /// Gets the hash code for this object.\n        /// </summary>\n        public override int GetHashCode()\n        {\n            return this.X.GetHashCode() + this.Y.GetHashCode();\n        }\n\n        /// <summary>\n        /// Returns a String that represents the current Point.\n        /// </summary>\n        public override string ToString()\n        {\n            CultureInfo currentCulture = CultureInfo.CurrentCulture;\n            return string.Format((IFormatProvider)currentCulture, \"{{X:{0} Y:{1}}}\", new object[2]\n      {\n        (object) this.X.ToString((IFormatProvider) currentCulture),\n        (object) this.Y.ToString((IFormatProvider) currentCulture)\n      });\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWarsMath/Quaternion.cs",
    "content": "﻿using System;\nusing System.ComponentModel;\nusing System.Globalization;\n\nnamespace MinerWarsMath\n{\n    /// <summary>\n    /// Defines a four-dimensional vector (x,y,z,w), which is used to efficiently rotate an object about the (x, y, z) vector by the angle theta, where w = cos(theta/2).\n    /// </summary>\n    [Serializable]\n    public struct Quaternion : IEquatable<Quaternion>\n    {\n        private static Quaternion _identity = new Quaternion(0.0f, 0.0f, 0.0f, 1f);\n        /// <summary>\n        /// Specifies the x-value of the vector component of the quaternion.\n        /// </summary>\n        public float X;\n        /// <summary>\n        /// Specifies the y-value of the vector component of the quaternion.\n        /// </summary>\n        public float Y;\n        /// <summary>\n        /// Specifies the z-value of the vector component of the quaternion.\n        /// </summary>\n        public float Z;\n        /// <summary>\n        /// Specifies the rotation component of the quaternion.\n        /// </summary>\n        public float W;\n\n        /// <summary>\n        /// Returns a Quaternion representing no rotation.\n        /// </summary>\n        public static Quaternion Identity\n        {\n            get\n            {\n                return Quaternion._identity;\n            }\n        }\n\n        static Quaternion()\n        {\n        }\n\n        /// <summary>\n        /// Initializes a new instance of Quaternion.\n        /// </summary>\n        /// <param name=\"x\">The x-value of the quaternion.</param><param name=\"y\">The y-value of the quaternion.</param><param name=\"z\">The z-value of the quaternion.</param><param name=\"w\">The w-value of the quaternion.</param>\n        public Quaternion(float x, float y, float z, float w)\n        {\n            this.X = x;\n            this.Y = y;\n            this.Z = z;\n            this.W = w;\n        }\n\n        /// <summary>\n        /// Initializes a new instance of Quaternion.\n        /// </summary>\n        /// <param name=\"vectorPart\">The vector component of the quaternion.</param><param name=\"scalarPart\">The rotation component of the quaternion.</param>\n        public Quaternion(Vector3 vectorPart, float scalarPart)\n        {\n            this.X = vectorPart.X;\n            this.Y = vectorPart.Y;\n            this.Z = vectorPart.Z;\n            this.W = scalarPart;\n        }\n\n        /// <summary>\n        /// Flips the sign of each component of the quaternion.\n        /// </summary>\n        /// <param name=\"quaternion\">Source quaternion.</param>\n        public static Quaternion operator -(Quaternion quaternion)\n        {\n            Quaternion quaternion1;\n            quaternion1.X = -quaternion.X;\n            quaternion1.Y = -quaternion.Y;\n            quaternion1.Z = -quaternion.Z;\n            quaternion1.W = -quaternion.W;\n            return quaternion1;\n        }\n\n        /// <summary>\n        /// Compares two Quaternions for equality.\n        /// </summary>\n        /// <param name=\"quaternion1\">Source Quaternion.</param><param name=\"quaternion2\">Source Quaternion.</param>\n        public static bool operator ==(Quaternion quaternion1, Quaternion quaternion2)\n        {\n            if ((double)quaternion1.X == (double)quaternion2.X && (double)quaternion1.Y == (double)quaternion2.Y && (double)quaternion1.Z == (double)quaternion2.Z)\n                return (double)quaternion1.W == (double)quaternion2.W;\n            else\n                return false;\n        }\n\n        /// <summary>\n        /// Compare two Quaternions for inequality.\n        /// </summary>\n        /// <param name=\"quaternion1\">Source Quaternion.</param><param name=\"quaternion2\">Source Quaternion.</param>\n        public static bool operator !=(Quaternion quaternion1, Quaternion quaternion2)\n        {\n            if ((double)quaternion1.X == (double)quaternion2.X && (double)quaternion1.Y == (double)quaternion2.Y && (double)quaternion1.Z == (double)quaternion2.Z)\n                return (double)quaternion1.W != (double)quaternion2.W;\n            else\n                return true;\n        }\n\n        /// <summary>\n        /// Adds two Quaternions.\n        /// </summary>\n        /// <param name=\"quaternion1\">Quaternion to add.</param><param name=\"quaternion2\">Quaternion to add.</param>\n        public static Quaternion operator +(Quaternion quaternion1, Quaternion quaternion2)\n        {\n            Quaternion quaternion;\n            quaternion.X = quaternion1.X + quaternion2.X;\n            quaternion.Y = quaternion1.Y + quaternion2.Y;\n            quaternion.Z = quaternion1.Z + quaternion2.Z;\n            quaternion.W = quaternion1.W + quaternion2.W;\n            return quaternion;\n        }\n\n        /// <summary>\n        /// Subtracts a quaternion from another quaternion.\n        /// </summary>\n        /// <param name=\"quaternion1\">Source quaternion.</param><param name=\"quaternion2\">Source quaternion.</param>\n        public static Quaternion operator -(Quaternion quaternion1, Quaternion quaternion2)\n        {\n            Quaternion quaternion;\n            quaternion.X = quaternion1.X - quaternion2.X;\n            quaternion.Y = quaternion1.Y - quaternion2.Y;\n            quaternion.Z = quaternion1.Z - quaternion2.Z;\n            quaternion.W = quaternion1.W - quaternion2.W;\n            return quaternion;\n        }\n\n        /// <summary>\n        /// Multiplies two quaternions.\n        /// </summary>\n        /// <param name=\"quaternion1\">Source quaternion.</param><param name=\"quaternion2\">Source quaternion.</param>\n        public static Quaternion operator *(Quaternion quaternion1, Quaternion quaternion2)\n        {\n            float num1 = quaternion1.X;\n            float num2 = quaternion1.Y;\n            float num3 = quaternion1.Z;\n            float num4 = quaternion1.W;\n            float num5 = quaternion2.X;\n            float num6 = quaternion2.Y;\n            float num7 = quaternion2.Z;\n            float num8 = quaternion2.W;\n            float num9 = (float)((double)num2 * (double)num7 - (double)num3 * (double)num6);\n            float num10 = (float)((double)num3 * (double)num5 - (double)num1 * (double)num7);\n            float num11 = (float)((double)num1 * (double)num6 - (double)num2 * (double)num5);\n            float num12 = (float)((double)num1 * (double)num5 + (double)num2 * (double)num6 + (double)num3 * (double)num7);\n            Quaternion quaternion;\n            quaternion.X = (float)((double)num1 * (double)num8 + (double)num5 * (double)num4) + num9;\n            quaternion.Y = (float)((double)num2 * (double)num8 + (double)num6 * (double)num4) + num10;\n            quaternion.Z = (float)((double)num3 * (double)num8 + (double)num7 * (double)num4) + num11;\n            quaternion.W = num4 * num8 - num12;\n            return quaternion;\n        }\n\n        /// <summary>\n        /// Multiplies a quaternion by a scalar value.\n        /// </summary>\n        /// <param name=\"quaternion1\">Source quaternion.</param><param name=\"scaleFactor\">Scalar value.</param>\n        public static Quaternion operator *(Quaternion quaternion1, float scaleFactor)\n        {\n            Quaternion quaternion;\n            quaternion.X = quaternion1.X * scaleFactor;\n            quaternion.Y = quaternion1.Y * scaleFactor;\n            quaternion.Z = quaternion1.Z * scaleFactor;\n            quaternion.W = quaternion1.W * scaleFactor;\n            return quaternion;\n        }\n\n        /// <summary>\n        /// Divides a Quaternion by another Quaternion.\n        /// </summary>\n        /// <param name=\"quaternion1\">Source Quaternion.</param><param name=\"quaternion2\">The divisor.</param>\n        public static Quaternion operator /(Quaternion quaternion1, Quaternion quaternion2)\n        {\n            float num1 = quaternion1.X;\n            float num2 = quaternion1.Y;\n            float num3 = quaternion1.Z;\n            float num4 = quaternion1.W;\n            float num5 = 1f / (float)((double)quaternion2.X * (double)quaternion2.X + (double)quaternion2.Y * (double)quaternion2.Y + (double)quaternion2.Z * (double)quaternion2.Z + (double)quaternion2.W * (double)quaternion2.W);\n            float num6 = -quaternion2.X * num5;\n            float num7 = -quaternion2.Y * num5;\n            float num8 = -quaternion2.Z * num5;\n            float num9 = quaternion2.W * num5;\n            float num10 = (float)((double)num2 * (double)num8 - (double)num3 * (double)num7);\n            float num11 = (float)((double)num3 * (double)num6 - (double)num1 * (double)num8);\n            float num12 = (float)((double)num1 * (double)num7 - (double)num2 * (double)num6);\n            float num13 = (float)((double)num1 * (double)num6 + (double)num2 * (double)num7 + (double)num3 * (double)num8);\n            Quaternion quaternion;\n            quaternion.X = (float)((double)num1 * (double)num9 + (double)num6 * (double)num4) + num10;\n            quaternion.Y = (float)((double)num2 * (double)num9 + (double)num7 * (double)num4) + num11;\n            quaternion.Z = (float)((double)num3 * (double)num9 + (double)num8 * (double)num4) + num12;\n            quaternion.W = num4 * num9 - num13;\n            return quaternion;\n        }\n\n        /// <summary>\n        /// Retireves a string representation of the current object.\n        /// </summary>\n        public override string ToString()\n        {\n            CultureInfo currentCulture = CultureInfo.CurrentCulture;\n            return string.Format((IFormatProvider)currentCulture, \"{{X:{0} Y:{1} Z:{2} W:{3}}}\", (object)this.X.ToString((IFormatProvider)currentCulture), (object)this.Y.ToString((IFormatProvider)currentCulture), (object)this.Z.ToString((IFormatProvider)currentCulture), (object)this.W.ToString((IFormatProvider)currentCulture));\n        }\n\n        /// <summary>\n        /// Determines whether the specified Object is equal to the Quaternion.\n        /// </summary>\n        /// <param name=\"other\">The Quaternion to compare with the current Quaternion.</param>\n        public bool Equals(Quaternion other)\n        {\n            if ((double)this.X == (double)other.X && (double)this.Y == (double)other.Y && (double)this.Z == (double)other.Z)\n                return (double)this.W == (double)other.W;\n            else\n                return false;\n        }\n\n        /// <summary>\n        /// Returns a value that indicates whether the current instance is equal to a specified object.\n        /// </summary>\n        /// <param name=\"obj\">Object to make the comparison with.</param>\n        public override bool Equals(object obj)\n        {\n            bool flag = false;\n            if (obj is Quaternion)\n                flag = this.Equals((Quaternion)obj);\n            return flag;\n        }\n\n        /// <summary>\n        /// Get the hash code of this object.\n        /// </summary>\n        public override int GetHashCode()\n        {\n            return this.X.GetHashCode() + this.Y.GetHashCode() + this.Z.GetHashCode() + this.W.GetHashCode();\n        }\n\n        /// <summary>\n        /// Calculates the length squared of a Quaternion.\n        /// </summary>\n        public float LengthSquared()\n        {\n            return (float)((double)this.X * (double)this.X + (double)this.Y * (double)this.Y + (double)this.Z * (double)this.Z + (double)this.W * (double)this.W);\n        }\n\n        /// <summary>\n        /// Calculates the length of a Quaternion.\n        /// </summary>\n        public float Length()\n        {\n            return (float)Math.Sqrt((double)this.X * (double)this.X + (double)this.Y * (double)this.Y + (double)this.Z * (double)this.Z + (double)this.W * (double)this.W);\n        }\n\n        /// <summary>\n        /// Divides each component of the quaternion by the length of the quaternion.\n        /// </summary>\n        public void Normalize()\n        {\n            float num = 1f / (float)Math.Sqrt((double)this.X * (double)this.X + (double)this.Y * (double)this.Y + (double)this.Z * (double)this.Z + (double)this.W * (double)this.W);\n            this.X *= num;\n            this.Y *= num;\n            this.Z *= num;\n            this.W *= num;\n        }\n\n        /// <summary>\n        /// Divides each component of the quaternion by the length of the quaternion.\n        /// </summary>\n        /// <param name=\"quaternion\">Source quaternion.</param>\n        public static Quaternion Normalize(Quaternion quaternion)\n        {\n            float num = 1f / (float)Math.Sqrt((double)quaternion.X * (double)quaternion.X + (double)quaternion.Y * (double)quaternion.Y + (double)quaternion.Z * (double)quaternion.Z + (double)quaternion.W * (double)quaternion.W);\n            Quaternion quaternion1;\n            quaternion1.X = quaternion.X * num;\n            quaternion1.Y = quaternion.Y * num;\n            quaternion1.Z = quaternion.Z * num;\n            quaternion1.W = quaternion.W * num;\n            return quaternion1;\n        }\n\n        /// <summary>\n        /// Divides each component of the quaternion by the length of the quaternion.\n        /// </summary>\n        /// <param name=\"quaternion\">Source quaternion.</param><param name=\"result\">[OutAttribute] Normalized quaternion.</param>\n        public static void Normalize(ref Quaternion quaternion, out Quaternion result)\n        {\n            float num = 1f / (float)Math.Sqrt((double)quaternion.X * (double)quaternion.X + (double)quaternion.Y * (double)quaternion.Y + (double)quaternion.Z * (double)quaternion.Z + (double)quaternion.W * (double)quaternion.W);\n            result.X = quaternion.X * num;\n            result.Y = quaternion.Y * num;\n            result.Z = quaternion.Z * num;\n            result.W = quaternion.W * num;\n        }\n\n        /// <summary>\n        /// Transforms this Quaternion into its conjugate.\n        /// </summary>\n        public void Conjugate()\n        {\n            this.X = -this.X;\n            this.Y = -this.Y;\n            this.Z = -this.Z;\n        }\n\n        /// <summary>\n        /// Returns the conjugate of a specified Quaternion.\n        /// </summary>\n        /// <param name=\"value\">The Quaternion of which to return the conjugate.</param>\n        public static Quaternion Conjugate(Quaternion value)\n        {\n            Quaternion quaternion;\n            quaternion.X = -value.X;\n            quaternion.Y = -value.Y;\n            quaternion.Z = -value.Z;\n            quaternion.W = value.W;\n            return quaternion;\n        }\n\n        /// <summary>\n        /// Returns the conjugate of a specified Quaternion.\n        /// </summary>\n        /// <param name=\"value\">The Quaternion of which to return the conjugate.</param><param name=\"result\">[OutAttribute] An existing Quaternion filled in to be the conjugate of the specified one.</param>\n        public static void Conjugate(ref Quaternion value, out Quaternion result)\n        {\n            result.X = -value.X;\n            result.Y = -value.Y;\n            result.Z = -value.Z;\n            result.W = value.W;\n        }\n\n        /// <summary>\n        /// Returns the inverse of a Quaternion.\n        /// </summary>\n        /// <param name=\"quaternion\">Source Quaternion.</param>\n        public static Quaternion Inverse(Quaternion quaternion)\n        {\n            float num = 1f / (float)((double)quaternion.X * (double)quaternion.X + (double)quaternion.Y * (double)quaternion.Y + (double)quaternion.Z * (double)quaternion.Z + (double)quaternion.W * (double)quaternion.W);\n            Quaternion quaternion1;\n            quaternion1.X = -quaternion.X * num;\n            quaternion1.Y = -quaternion.Y * num;\n            quaternion1.Z = -quaternion.Z * num;\n            quaternion1.W = quaternion.W * num;\n            return quaternion1;\n        }\n\n        /// <summary>\n        /// Returns the inverse of a Quaternion.\n        /// </summary>\n        /// <param name=\"quaternion\">Source Quaternion.</param><param name=\"result\">[OutAttribute] The inverse of the Quaternion.</param>\n        public static void Inverse(ref Quaternion quaternion, out Quaternion result)\n        {\n            float num = 1f / (float)((double)quaternion.X * (double)quaternion.X + (double)quaternion.Y * (double)quaternion.Y + (double)quaternion.Z * (double)quaternion.Z + (double)quaternion.W * (double)quaternion.W);\n            result.X = -quaternion.X * num;\n            result.Y = -quaternion.Y * num;\n            result.Z = -quaternion.Z * num;\n            result.W = quaternion.W * num;\n        }\n\n        /// <summary>\n        /// Creates a Quaternion from a vector and an angle to rotate about the vector.\n        /// </summary>\n        /// <param name=\"axis\">The vector to rotate around.</param><param name=\"angle\">The angle to rotate around the vector.</param>\n        public static Quaternion CreateFromAxisAngle(Vector3 axis, float angle)\n        {\n            float num1 = angle * 0.5f;\n            float num2 = (float)Math.Sin((double)num1);\n            float num3 = (float)Math.Cos((double)num1);\n            Quaternion quaternion;\n            quaternion.X = axis.X * num2;\n            quaternion.Y = axis.Y * num2;\n            quaternion.Z = axis.Z * num2;\n            quaternion.W = num3;\n            return quaternion;\n        }\n\n        /// <summary>\n        /// Creates a Quaternion from a vector and an angle to rotate about the vector.\n        /// </summary>\n        /// <param name=\"axis\">The vector to rotate around.</param><param name=\"angle\">The angle to rotate around the vector.</param><param name=\"result\">[OutAttribute] The created Quaternion.</param>\n        public static void CreateFromAxisAngle(ref Vector3 axis, float angle, out Quaternion result)\n        {\n            float num1 = angle * 0.5f;\n            float num2 = (float)Math.Sin((double)num1);\n            float num3 = (float)Math.Cos((double)num1);\n            result.X = axis.X * num2;\n            result.Y = axis.Y * num2;\n            result.Z = axis.Z * num2;\n            result.W = num3;\n        }\n\n        /// <summary>\n        /// Creates a new Quaternion from specified yaw, pitch, and roll angles.\n        /// </summary>\n        /// <param name=\"yaw\">The yaw angle, in radians, around the y-axis.</param><param name=\"pitch\">The pitch angle, in radians, around the x-axis.</param><param name=\"roll\">The roll angle, in radians, around the z-axis.</param>\n        public static Quaternion CreateFromYawPitchRoll(float yaw, float pitch, float roll)\n        {\n            float num1 = roll * 0.5f;\n            float num2 = (float)Math.Sin((double)num1);\n            float num3 = (float)Math.Cos((double)num1);\n            float num4 = pitch * 0.5f;\n            float num5 = (float)Math.Sin((double)num4);\n            float num6 = (float)Math.Cos((double)num4);\n            float num7 = yaw * 0.5f;\n            float num8 = (float)Math.Sin((double)num7);\n            float num9 = (float)Math.Cos((double)num7);\n            Quaternion quaternion;\n            quaternion.X = (float)((double)num9 * (double)num5 * (double)num3 + (double)num8 * (double)num6 * (double)num2);\n            quaternion.Y = (float)((double)num8 * (double)num6 * (double)num3 - (double)num9 * (double)num5 * (double)num2);\n            quaternion.Z = (float)((double)num9 * (double)num6 * (double)num2 - (double)num8 * (double)num5 * (double)num3);\n            quaternion.W = (float)((double)num9 * (double)num6 * (double)num3 + (double)num8 * (double)num5 * (double)num2);\n            return quaternion;\n        }\n\n        /// <summary>\n        /// Creates a new Quaternion from specified yaw, pitch, and roll angles.\n        /// </summary>\n        /// <param name=\"yaw\">The yaw angle, in radians, around the y-axis.</param><param name=\"pitch\">The pitch angle, in radians, around the x-axis.</param><param name=\"roll\">The roll angle, in radians, around the z-axis.</param><param name=\"result\">[OutAttribute] An existing Quaternion filled in to express the specified yaw, pitch, and roll angles.</param>\n        public static void CreateFromYawPitchRoll(float yaw, float pitch, float roll, out Quaternion result)\n        {\n            float num1 = roll * 0.5f;\n            float num2 = (float)Math.Sin((double)num1);\n            float num3 = (float)Math.Cos((double)num1);\n            float num4 = pitch * 0.5f;\n            float num5 = (float)Math.Sin((double)num4);\n            float num6 = (float)Math.Cos((double)num4);\n            float num7 = yaw * 0.5f;\n            float num8 = (float)Math.Sin((double)num7);\n            float num9 = (float)Math.Cos((double)num7);\n            result.X = (float)((double)num9 * (double)num5 * (double)num3 + (double)num8 * (double)num6 * (double)num2);\n            result.Y = (float)((double)num8 * (double)num6 * (double)num3 - (double)num9 * (double)num5 * (double)num2);\n            result.Z = (float)((double)num9 * (double)num6 * (double)num2 - (double)num8 * (double)num5 * (double)num3);\n            result.W = (float)((double)num9 * (double)num6 * (double)num3 + (double)num8 * (double)num5 * (double)num2);\n        }\n\n        /// <summary>\n        /// Creates a Quaternion from a rotation Matrix.\n        /// </summary>\n        /// <param name=\"matrix\">The rotation Matrix to create the Quaternion from.</param>\n        public static Quaternion CreateFromRotationMatrix(Matrix matrix)\n        {\n            float num1 = matrix.M11 + matrix.M22 + matrix.M33;\n            Quaternion quaternion = new Quaternion();\n            if ((double)num1 > 0.0)\n            {\n                float num2 = (float)Math.Sqrt((double)num1 + 1.0);\n                quaternion.W = num2 * 0.5f;\n                float num3 = 0.5f / num2;\n                quaternion.X = (matrix.M23 - matrix.M32) * num3;\n                quaternion.Y = (matrix.M31 - matrix.M13) * num3;\n                quaternion.Z = (matrix.M12 - matrix.M21) * num3;\n            }\n            else if ((double)matrix.M11 >= (double)matrix.M22 && (double)matrix.M11 >= (double)matrix.M33)\n            {\n                float num2 = (float)Math.Sqrt(1.0 + (double)matrix.M11 - (double)matrix.M22 - (double)matrix.M33);\n                float num3 = 0.5f / num2;\n                quaternion.X = 0.5f * num2;\n                quaternion.Y = (matrix.M12 + matrix.M21) * num3;\n                quaternion.Z = (matrix.M13 + matrix.M31) * num3;\n                quaternion.W = (matrix.M23 - matrix.M32) * num3;\n            }\n            else if ((double)matrix.M22 > (double)matrix.M33)\n            {\n                float num2 = (float)Math.Sqrt(1.0 + (double)matrix.M22 - (double)matrix.M11 - (double)matrix.M33);\n                float num3 = 0.5f / num2;\n                quaternion.X = (matrix.M21 + matrix.M12) * num3;\n                quaternion.Y = 0.5f * num2;\n                quaternion.Z = (matrix.M32 + matrix.M23) * num3;\n                quaternion.W = (matrix.M31 - matrix.M13) * num3;\n            }\n            else\n            {\n                float num2 = (float)Math.Sqrt(1.0 + (double)matrix.M33 - (double)matrix.M11 - (double)matrix.M22);\n                float num3 = 0.5f / num2;\n                quaternion.X = (matrix.M31 + matrix.M13) * num3;\n                quaternion.Y = (matrix.M32 + matrix.M23) * num3;\n                quaternion.Z = 0.5f * num2;\n                quaternion.W = (matrix.M12 - matrix.M21) * num3;\n            }\n            return quaternion;\n        }\n\n        /// <summary>\n        /// Creates a Quaternion from a rotation Matrix.\n        /// </summary>\n        /// <param name=\"matrix\">The rotation Matrix to create the Quaternion from.</param><param name=\"result\">[OutAttribute] The created Quaternion.</param>\n        public static void CreateFromRotationMatrix(ref Matrix matrix, out Quaternion result)\n        {\n            float num1 = matrix.M11 + matrix.M22 + matrix.M33;\n            if ((double)num1 > 0.0)\n            {\n                float num2 = (float)Math.Sqrt((double)num1 + 1.0);\n                result.W = num2 * 0.5f;\n                float num3 = 0.5f / num2;\n                result.X = (matrix.M23 - matrix.M32) * num3;\n                result.Y = (matrix.M31 - matrix.M13) * num3;\n                result.Z = (matrix.M12 - matrix.M21) * num3;\n            }\n            else if ((double)matrix.M11 >= (double)matrix.M22 && (double)matrix.M11 >= (double)matrix.M33)\n            {\n                float num2 = (float)Math.Sqrt(1.0 + (double)matrix.M11 - (double)matrix.M22 - (double)matrix.M33);\n                float num3 = 0.5f / num2;\n                result.X = 0.5f * num2;\n                result.Y = (matrix.M12 + matrix.M21) * num3;\n                result.Z = (matrix.M13 + matrix.M31) * num3;\n                result.W = (matrix.M23 - matrix.M32) * num3;\n            }\n            else if ((double)matrix.M22 > (double)matrix.M33)\n            {\n                float num2 = (float)Math.Sqrt(1.0 + (double)matrix.M22 - (double)matrix.M11 - (double)matrix.M33);\n                float num3 = 0.5f / num2;\n                result.X = (matrix.M21 + matrix.M12) * num3;\n                result.Y = 0.5f * num2;\n                result.Z = (matrix.M32 + matrix.M23) * num3;\n                result.W = (matrix.M31 - matrix.M13) * num3;\n            }\n            else\n            {\n                float num2 = (float)Math.Sqrt(1.0 + (double)matrix.M33 - (double)matrix.M11 - (double)matrix.M22);\n                float num3 = 0.5f / num2;\n                result.X = (matrix.M31 + matrix.M13) * num3;\n                result.Y = (matrix.M32 + matrix.M23) * num3;\n                result.Z = 0.5f * num2;\n                result.W = (matrix.M12 - matrix.M21) * num3;\n            }\n        }\n\n        /// <summary>\n        /// Calculates the dot product of two Quaternions.\n        /// </summary>\n        /// <param name=\"quaternion1\">Source Quaternion.</param><param name=\"quaternion2\">Source Quaternion.</param>\n        public static float Dot(Quaternion quaternion1, Quaternion quaternion2)\n        {\n            return (float)((double)quaternion1.X * (double)quaternion2.X + (double)quaternion1.Y * (double)quaternion2.Y + (double)quaternion1.Z * (double)quaternion2.Z + (double)quaternion1.W * (double)quaternion2.W);\n        }\n\n        /// <summary>\n        /// Calculates the dot product of two Quaternions.\n        /// </summary>\n        /// <param name=\"quaternion1\">Source Quaternion.</param><param name=\"quaternion2\">Source Quaternion.</param><param name=\"result\">[OutAttribute] Dot product of the Quaternions.</param>\n        public static void Dot(ref Quaternion quaternion1, ref Quaternion quaternion2, out float result)\n        {\n            result = (float)((double)quaternion1.X * (double)quaternion2.X + (double)quaternion1.Y * (double)quaternion2.Y + (double)quaternion1.Z * (double)quaternion2.Z + (double)quaternion1.W * (double)quaternion2.W);\n        }\n\n        /// <summary>\n        /// Interpolates between two quaternions, using spherical linear interpolation.\n        /// </summary>\n        /// <param name=\"quaternion1\">Source quaternion.</param><param name=\"quaternion2\">Source quaternion.</param><param name=\"amount\">Value that indicates how far to interpolate between the quaternions.</param>\n        public static Quaternion Slerp(Quaternion quaternion1, Quaternion quaternion2, float amount)\n        {\n            float num1 = amount;\n            float num2 = (float)((double)quaternion1.X * (double)quaternion2.X + (double)quaternion1.Y * (double)quaternion2.Y + (double)quaternion1.Z * (double)quaternion2.Z + (double)quaternion1.W * (double)quaternion2.W);\n            bool flag = false;\n            if ((double)num2 < 0.0)\n            {\n                flag = true;\n                num2 = -num2;\n            }\n            float num3;\n            float num4;\n            if ((double)num2 > 0.999998986721039)\n            {\n                num3 = 1f - num1;\n                num4 = flag ? -num1 : num1;\n            }\n            else\n            {\n                float num5 = (float)Math.Acos((double)num2);\n                float num6 = (float)(1.0 / Math.Sin((double)num5));\n                num3 = (float)Math.Sin((1.0 - (double)num1) * (double)num5) * num6;\n                num4 = flag ? (float)-Math.Sin((double)num1 * (double)num5) * num6 : (float)Math.Sin((double)num1 * (double)num5) * num6;\n            }\n            Quaternion quaternion;\n            quaternion.X = (float)((double)num3 * (double)quaternion1.X + (double)num4 * (double)quaternion2.X);\n            quaternion.Y = (float)((double)num3 * (double)quaternion1.Y + (double)num4 * (double)quaternion2.Y);\n            quaternion.Z = (float)((double)num3 * (double)quaternion1.Z + (double)num4 * (double)quaternion2.Z);\n            quaternion.W = (float)((double)num3 * (double)quaternion1.W + (double)num4 * (double)quaternion2.W);\n            return quaternion;\n        }\n\n        /// <summary>\n        /// Interpolates between two quaternions, using spherical linear interpolation.\n        /// </summary>\n        /// <param name=\"quaternion1\">Source quaternion.</param><param name=\"quaternion2\">Source quaternion.</param><param name=\"amount\">Value that indicates how far to interpolate between the quaternions.</param><param name=\"result\">[OutAttribute] Result of the interpolation.</param>\n        public static void Slerp(ref Quaternion quaternion1, ref Quaternion quaternion2, float amount, out Quaternion result)\n        {\n            float num1 = amount;\n            float num2 = (float)((double)quaternion1.X * (double)quaternion2.X + (double)quaternion1.Y * (double)quaternion2.Y + (double)quaternion1.Z * (double)quaternion2.Z + (double)quaternion1.W * (double)quaternion2.W);\n            bool flag = false;\n            if ((double)num2 < 0.0)\n            {\n                flag = true;\n                num2 = -num2;\n            }\n            float num3;\n            float num4;\n            if ((double)num2 > 0.999998986721039)\n            {\n                num3 = 1f - num1;\n                num4 = flag ? -num1 : num1;\n            }\n            else\n            {\n                float num5 = (float)Math.Acos((double)num2);\n                float num6 = (float)(1.0 / Math.Sin((double)num5));\n                num3 = (float)Math.Sin((1.0 - (double)num1) * (double)num5) * num6;\n                num4 = flag ? (float)-Math.Sin((double)num1 * (double)num5) * num6 : (float)Math.Sin((double)num1 * (double)num5) * num6;\n            }\n            result.X = (float)((double)num3 * (double)quaternion1.X + (double)num4 * (double)quaternion2.X);\n            result.Y = (float)((double)num3 * (double)quaternion1.Y + (double)num4 * (double)quaternion2.Y);\n            result.Z = (float)((double)num3 * (double)quaternion1.Z + (double)num4 * (double)quaternion2.Z);\n            result.W = (float)((double)num3 * (double)quaternion1.W + (double)num4 * (double)quaternion2.W);\n        }\n\n        /// <summary>\n        /// Linearly interpolates between two quaternions.\n        /// </summary>\n        /// <param name=\"quaternion1\">Source quaternion.</param><param name=\"quaternion2\">Source quaternion.</param><param name=\"amount\">Value indicating how far to interpolate between the quaternions.</param>\n        public static Quaternion Lerp(Quaternion quaternion1, Quaternion quaternion2, float amount)\n        {\n            float num1 = amount;\n            float num2 = 1f - num1;\n            Quaternion quaternion = new Quaternion();\n            if ((double)quaternion1.X * (double)quaternion2.X + (double)quaternion1.Y * (double)quaternion2.Y + (double)quaternion1.Z * (double)quaternion2.Z + (double)quaternion1.W * (double)quaternion2.W >= 0.0)\n            {\n                quaternion.X = (float)((double)num2 * (double)quaternion1.X + (double)num1 * (double)quaternion2.X);\n                quaternion.Y = (float)((double)num2 * (double)quaternion1.Y + (double)num1 * (double)quaternion2.Y);\n                quaternion.Z = (float)((double)num2 * (double)quaternion1.Z + (double)num1 * (double)quaternion2.Z);\n                quaternion.W = (float)((double)num2 * (double)quaternion1.W + (double)num1 * (double)quaternion2.W);\n            }\n            else\n            {\n                quaternion.X = (float)((double)num2 * (double)quaternion1.X - (double)num1 * (double)quaternion2.X);\n                quaternion.Y = (float)((double)num2 * (double)quaternion1.Y - (double)num1 * (double)quaternion2.Y);\n                quaternion.Z = (float)((double)num2 * (double)quaternion1.Z - (double)num1 * (double)quaternion2.Z);\n                quaternion.W = (float)((double)num2 * (double)quaternion1.W - (double)num1 * (double)quaternion2.W);\n            }\n            float num3 = 1f / (float)Math.Sqrt((double)quaternion.X * (double)quaternion.X + (double)quaternion.Y * (double)quaternion.Y + (double)quaternion.Z * (double)quaternion.Z + (double)quaternion.W * (double)quaternion.W);\n            quaternion.X *= num3;\n            quaternion.Y *= num3;\n            quaternion.Z *= num3;\n            quaternion.W *= num3;\n            return quaternion;\n        }\n\n        /// <summary>\n        /// Linearly interpolates between two quaternions.\n        /// </summary>\n        /// <param name=\"quaternion1\">Source quaternion.</param><param name=\"quaternion2\">Source quaternion.</param><param name=\"amount\">Value indicating how far to interpolate between the quaternions.</param><param name=\"result\">[OutAttribute] The resulting quaternion.</param>\n        public static void Lerp(ref Quaternion quaternion1, ref Quaternion quaternion2, float amount, out Quaternion result)\n        {\n            float num1 = amount;\n            float num2 = 1f - num1;\n            if ((double)quaternion1.X * (double)quaternion2.X + (double)quaternion1.Y * (double)quaternion2.Y + (double)quaternion1.Z * (double)quaternion2.Z + (double)quaternion1.W * (double)quaternion2.W >= 0.0)\n            {\n                result.X = (float)((double)num2 * (double)quaternion1.X + (double)num1 * (double)quaternion2.X);\n                result.Y = (float)((double)num2 * (double)quaternion1.Y + (double)num1 * (double)quaternion2.Y);\n                result.Z = (float)((double)num2 * (double)quaternion1.Z + (double)num1 * (double)quaternion2.Z);\n                result.W = (float)((double)num2 * (double)quaternion1.W + (double)num1 * (double)quaternion2.W);\n            }\n            else\n            {\n                result.X = (float)((double)num2 * (double)quaternion1.X - (double)num1 * (double)quaternion2.X);\n                result.Y = (float)((double)num2 * (double)quaternion1.Y - (double)num1 * (double)quaternion2.Y);\n                result.Z = (float)((double)num2 * (double)quaternion1.Z - (double)num1 * (double)quaternion2.Z);\n                result.W = (float)((double)num2 * (double)quaternion1.W - (double)num1 * (double)quaternion2.W);\n            }\n            float num3 = 1f / (float)Math.Sqrt((double)result.X * (double)result.X + (double)result.Y * (double)result.Y + (double)result.Z * (double)result.Z + (double)result.W * (double)result.W);\n            result.X *= num3;\n            result.Y *= num3;\n            result.Z *= num3;\n            result.W *= num3;\n        }\n\n        /// <summary>\n        /// Concatenates two Quaternions; the result represents the value1 rotation followed by the value2 rotation.\n        /// </summary>\n        /// <param name=\"value1\">The first Quaternion rotation in the series.</param><param name=\"value2\">The second Quaternion rotation in the series.</param>\n        public static Quaternion Concatenate(Quaternion value1, Quaternion value2)\n        {\n            float num1 = value2.X;\n            float num2 = value2.Y;\n            float num3 = value2.Z;\n            float num4 = value2.W;\n            float num5 = value1.X;\n            float num6 = value1.Y;\n            float num7 = value1.Z;\n            float num8 = value1.W;\n            float num9 = (float)((double)num2 * (double)num7 - (double)num3 * (double)num6);\n            float num10 = (float)((double)num3 * (double)num5 - (double)num1 * (double)num7);\n            float num11 = (float)((double)num1 * (double)num6 - (double)num2 * (double)num5);\n            float num12 = (float)((double)num1 * (double)num5 + (double)num2 * (double)num6 + (double)num3 * (double)num7);\n            Quaternion quaternion;\n            quaternion.X = (float)((double)num1 * (double)num8 + (double)num5 * (double)num4) + num9;\n            quaternion.Y = (float)((double)num2 * (double)num8 + (double)num6 * (double)num4) + num10;\n            quaternion.Z = (float)((double)num3 * (double)num8 + (double)num7 * (double)num4) + num11;\n            quaternion.W = num4 * num8 - num12;\n            return quaternion;\n        }\n\n        /// <summary>\n        /// Concatenates two Quaternions; the result represents the value1 rotation followed by the value2 rotation.\n        /// </summary>\n        /// <param name=\"value1\">The first Quaternion rotation in the series.</param><param name=\"value2\">The second Quaternion rotation in the series.</param><param name=\"result\">[OutAttribute] The Quaternion rotation representing the concatenation of value1 followed by value2.</param>\n        public static void Concatenate(ref Quaternion value1, ref Quaternion value2, out Quaternion result)\n        {\n            float num1 = value2.X;\n            float num2 = value2.Y;\n            float num3 = value2.Z;\n            float num4 = value2.W;\n            float num5 = value1.X;\n            float num6 = value1.Y;\n            float num7 = value1.Z;\n            float num8 = value1.W;\n            float num9 = (float)((double)num2 * (double)num7 - (double)num3 * (double)num6);\n            float num10 = (float)((double)num3 * (double)num5 - (double)num1 * (double)num7);\n            float num11 = (float)((double)num1 * (double)num6 - (double)num2 * (double)num5);\n            float num12 = (float)((double)num1 * (double)num5 + (double)num2 * (double)num6 + (double)num3 * (double)num7);\n            result.X = (float)((double)num1 * (double)num8 + (double)num5 * (double)num4) + num9;\n            result.Y = (float)((double)num2 * (double)num8 + (double)num6 * (double)num4) + num10;\n            result.Z = (float)((double)num3 * (double)num8 + (double)num7 * (double)num4) + num11;\n            result.W = num4 * num8 - num12;\n        }\n\n        /// <summary>\n        /// Flips the sign of each component of the quaternion.\n        /// </summary>\n        /// <param name=\"quaternion\">Source quaternion.</param>\n        public static Quaternion Negate(Quaternion quaternion)\n        {\n            Quaternion quaternion1;\n            quaternion1.X = -quaternion.X;\n            quaternion1.Y = -quaternion.Y;\n            quaternion1.Z = -quaternion.Z;\n            quaternion1.W = -quaternion.W;\n            return quaternion1;\n        }\n\n        /// <summary>\n        /// Flips the sign of each component of the quaternion.\n        /// </summary>\n        /// <param name=\"quaternion\">Source quaternion.</param><param name=\"result\">[OutAttribute] Negated quaternion.</param>\n        public static void Negate(ref Quaternion quaternion, out Quaternion result)\n        {\n            result.X = -quaternion.X;\n            result.Y = -quaternion.Y;\n            result.Z = -quaternion.Z;\n            result.W = -quaternion.W;\n        }\n\n        /// <summary>\n        /// Adds two Quaternions.\n        /// </summary>\n        /// <param name=\"quaternion1\">Quaternion to add.</param><param name=\"quaternion2\">Quaternion to add.</param>\n        public static Quaternion Add(Quaternion quaternion1, Quaternion quaternion2)\n        {\n            Quaternion quaternion;\n            quaternion.X = quaternion1.X + quaternion2.X;\n            quaternion.Y = quaternion1.Y + quaternion2.Y;\n            quaternion.Z = quaternion1.Z + quaternion2.Z;\n            quaternion.W = quaternion1.W + quaternion2.W;\n            return quaternion;\n        }\n\n        /// <summary>\n        /// Adds two Quaternions.\n        /// </summary>\n        /// <param name=\"quaternion1\">Quaternion to add.</param><param name=\"quaternion2\">Quaternion to add.</param><param name=\"result\">[OutAttribute] Result of adding the Quaternions.</param>\n        public static void Add(ref Quaternion quaternion1, ref Quaternion quaternion2, out Quaternion result)\n        {\n            result.X = quaternion1.X + quaternion2.X;\n            result.Y = quaternion1.Y + quaternion2.Y;\n            result.Z = quaternion1.Z + quaternion2.Z;\n            result.W = quaternion1.W + quaternion2.W;\n        }\n\n        /// <summary>\n        /// Subtracts a quaternion from another quaternion.\n        /// </summary>\n        /// <param name=\"quaternion1\">Source quaternion.</param><param name=\"quaternion2\">Source quaternion.</param>\n        public static Quaternion Subtract(Quaternion quaternion1, Quaternion quaternion2)\n        {\n            Quaternion quaternion;\n            quaternion.X = quaternion1.X - quaternion2.X;\n            quaternion.Y = quaternion1.Y - quaternion2.Y;\n            quaternion.Z = quaternion1.Z - quaternion2.Z;\n            quaternion.W = quaternion1.W - quaternion2.W;\n            return quaternion;\n        }\n\n        /// <summary>\n        /// Subtracts a quaternion from another quaternion.\n        /// </summary>\n        /// <param name=\"quaternion1\">Source quaternion.</param><param name=\"quaternion2\">Source quaternion.</param><param name=\"result\">[OutAttribute] Result of the subtraction.</param>\n        public static void Subtract(ref Quaternion quaternion1, ref Quaternion quaternion2, out Quaternion result)\n        {\n            result.X = quaternion1.X - quaternion2.X;\n            result.Y = quaternion1.Y - quaternion2.Y;\n            result.Z = quaternion1.Z - quaternion2.Z;\n            result.W = quaternion1.W - quaternion2.W;\n        }\n\n        /// <summary>\n        /// Multiplies two quaternions.\n        /// </summary>\n        /// <param name=\"quaternion1\">The quaternion on the left of the multiplication.</param><param name=\"quaternion2\">The quaternion on the right of the multiplication.</param>\n        public static Quaternion Multiply(Quaternion quaternion1, Quaternion quaternion2)\n        {\n            float num1 = quaternion1.X;\n            float num2 = quaternion1.Y;\n            float num3 = quaternion1.Z;\n            float num4 = quaternion1.W;\n            float num5 = quaternion2.X;\n            float num6 = quaternion2.Y;\n            float num7 = quaternion2.Z;\n            float num8 = quaternion2.W;\n            float num9 = (float)((double)num2 * (double)num7 - (double)num3 * (double)num6);\n            float num10 = (float)((double)num3 * (double)num5 - (double)num1 * (double)num7);\n            float num11 = (float)((double)num1 * (double)num6 - (double)num2 * (double)num5);\n            float num12 = (float)((double)num1 * (double)num5 + (double)num2 * (double)num6 + (double)num3 * (double)num7);\n            Quaternion quaternion;\n            quaternion.X = (float)((double)num1 * (double)num8 + (double)num5 * (double)num4) + num9;\n            quaternion.Y = (float)((double)num2 * (double)num8 + (double)num6 * (double)num4) + num10;\n            quaternion.Z = (float)((double)num3 * (double)num8 + (double)num7 * (double)num4) + num11;\n            quaternion.W = num4 * num8 - num12;\n            return quaternion;\n        }\n\n        /// <summary>\n        /// Multiplies two quaternions.\n        /// </summary>\n        /// <param name=\"quaternion1\">The quaternion on the left of the multiplication.</param><param name=\"quaternion2\">The quaternion on the right of the multiplication.</param><param name=\"result\">[OutAttribute] The result of the multiplication.</param>\n        public static void Multiply(ref Quaternion quaternion1, ref Quaternion quaternion2, out Quaternion result)\n        {\n            float num1 = quaternion1.X;\n            float num2 = quaternion1.Y;\n            float num3 = quaternion1.Z;\n            float num4 = quaternion1.W;\n            float num5 = quaternion2.X;\n            float num6 = quaternion2.Y;\n            float num7 = quaternion2.Z;\n            float num8 = quaternion2.W;\n            float num9 = (float)((double)num2 * (double)num7 - (double)num3 * (double)num6);\n            float num10 = (float)((double)num3 * (double)num5 - (double)num1 * (double)num7);\n            float num11 = (float)((double)num1 * (double)num6 - (double)num2 * (double)num5);\n            float num12 = (float)((double)num1 * (double)num5 + (double)num2 * (double)num6 + (double)num3 * (double)num7);\n            result.X = (float)((double)num1 * (double)num8 + (double)num5 * (double)num4) + num9;\n            result.Y = (float)((double)num2 * (double)num8 + (double)num6 * (double)num4) + num10;\n            result.Z = (float)((double)num3 * (double)num8 + (double)num7 * (double)num4) + num11;\n            result.W = num4 * num8 - num12;\n        }\n\n        /// <summary>\n        /// Multiplies a quaternion by a scalar value.\n        /// </summary>\n        /// <param name=\"quaternion1\">Source quaternion.</param><param name=\"scaleFactor\">Scalar value.</param>\n        public static Quaternion Multiply(Quaternion quaternion1, float scaleFactor)\n        {\n            Quaternion quaternion;\n            quaternion.X = quaternion1.X * scaleFactor;\n            quaternion.Y = quaternion1.Y * scaleFactor;\n            quaternion.Z = quaternion1.Z * scaleFactor;\n            quaternion.W = quaternion1.W * scaleFactor;\n            return quaternion;\n        }\n\n        /// <summary>\n        /// Multiplies a quaternion by a scalar value.\n        /// </summary>\n        /// <param name=\"quaternion1\">Source quaternion.</param><param name=\"scaleFactor\">Scalar value.</param><param name=\"result\">[OutAttribute] The result of the multiplication.</param>\n        public static void Multiply(ref Quaternion quaternion1, float scaleFactor, out Quaternion result)\n        {\n            result.X = quaternion1.X * scaleFactor;\n            result.Y = quaternion1.Y * scaleFactor;\n            result.Z = quaternion1.Z * scaleFactor;\n            result.W = quaternion1.W * scaleFactor;\n        }\n\n        /// <summary>\n        /// Divides a Quaternion by another Quaternion.\n        /// </summary>\n        /// <param name=\"quaternion1\">Source Quaternion.</param><param name=\"quaternion2\">The divisor.</param>\n        public static Quaternion Divide(Quaternion quaternion1, Quaternion quaternion2)\n        {\n            float num1 = quaternion1.X;\n            float num2 = quaternion1.Y;\n            float num3 = quaternion1.Z;\n            float num4 = quaternion1.W;\n            float num5 = 1f / (float)((double)quaternion2.X * (double)quaternion2.X + (double)quaternion2.Y * (double)quaternion2.Y + (double)quaternion2.Z * (double)quaternion2.Z + (double)quaternion2.W * (double)quaternion2.W);\n            float num6 = -quaternion2.X * num5;\n            float num7 = -quaternion2.Y * num5;\n            float num8 = -quaternion2.Z * num5;\n            float num9 = quaternion2.W * num5;\n            float num10 = (float)((double)num2 * (double)num8 - (double)num3 * (double)num7);\n            float num11 = (float)((double)num3 * (double)num6 - (double)num1 * (double)num8);\n            float num12 = (float)((double)num1 * (double)num7 - (double)num2 * (double)num6);\n            float num13 = (float)((double)num1 * (double)num6 + (double)num2 * (double)num7 + (double)num3 * (double)num8);\n            Quaternion quaternion;\n            quaternion.X = (float)((double)num1 * (double)num9 + (double)num6 * (double)num4) + num10;\n            quaternion.Y = (float)((double)num2 * (double)num9 + (double)num7 * (double)num4) + num11;\n            quaternion.Z = (float)((double)num3 * (double)num9 + (double)num8 * (double)num4) + num12;\n            quaternion.W = num4 * num9 - num13;\n            return quaternion;\n        }\n\n        /// <summary>\n        /// Divides a Quaternion by another Quaternion.\n        /// </summary>\n        /// <param name=\"quaternion1\">Source Quaternion.</param><param name=\"quaternion2\">The divisor.</param><param name=\"result\">[OutAttribute] Result of the division.</param>\n        public static void Divide(ref Quaternion quaternion1, ref Quaternion quaternion2, out Quaternion result)\n        {\n            float num1 = quaternion1.X;\n            float num2 = quaternion1.Y;\n            float num3 = quaternion1.Z;\n            float num4 = quaternion1.W;\n            float num5 = 1f / (float)((double)quaternion2.X * (double)quaternion2.X + (double)quaternion2.Y * (double)quaternion2.Y + (double)quaternion2.Z * (double)quaternion2.Z + (double)quaternion2.W * (double)quaternion2.W);\n            float num6 = -quaternion2.X * num5;\n            float num7 = -quaternion2.Y * num5;\n            float num8 = -quaternion2.Z * num5;\n            float num9 = quaternion2.W * num5;\n            float num10 = (float)((double)num2 * (double)num8 - (double)num3 * (double)num7);\n            float num11 = (float)((double)num3 * (double)num6 - (double)num1 * (double)num8);\n            float num12 = (float)((double)num1 * (double)num7 - (double)num2 * (double)num6);\n            float num13 = (float)((double)num1 * (double)num6 + (double)num2 * (double)num7 + (double)num3 * (double)num8);\n            result.X = (float)((double)num1 * (double)num9 + (double)num6 * (double)num4) + num10;\n            result.Y = (float)((double)num2 * (double)num9 + (double)num7 * (double)num4) + num11;\n            result.Z = (float)((double)num3 * (double)num9 + (double)num8 * (double)num4) + num12;\n            result.W = num4 * num9 - num13;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWarsMath/Ray.cs",
    "content": "﻿using System;\nusing System.ComponentModel;\nusing System.Globalization;\n\nnamespace MinerWarsMath\n{\n    /// <summary>\n    /// Defines a ray.\n    /// </summary>\n    [Serializable]\n    public struct Ray : IEquatable<Ray>\n    {\n        /// <summary>\n        /// Specifies the starting point of the Ray.\n        /// </summary>\n        public Vector3 Position;\n        /// <summary>\n        /// Unit vector specifying the direction the Ray is pointing.\n        /// </summary>\n        public Vector3 Direction;\n\n        /// <summary>\n        /// Creates a new instance of Ray.\n        /// </summary>\n        /// <param name=\"position\">The starting point of the Ray.</param><param name=\"direction\">Unit vector describing the direction of the Ray.</param>\n        public Ray(Vector3 position, Vector3 direction)\n        {\n            this.Position = position;\n            this.Direction = direction;\n        }\n\n        /// <summary>\n        /// Determines whether two instances of Ray are equal.\n        /// </summary>\n        /// <param name=\"a\">The object to the left of the equality operator.</param><param name=\"b\">The object to the right of the equality operator.</param>\n        public static bool operator ==(Ray a, Ray b)\n        {\n            if ((double)a.Position.X == (double)b.Position.X && (double)a.Position.Y == (double)b.Position.Y && ((double)a.Position.Z == (double)b.Position.Z && (double)a.Direction.X == (double)b.Direction.X) && (double)a.Direction.Y == (double)b.Direction.Y)\n                return (double)a.Direction.Z == (double)b.Direction.Z;\n            else\n                return false;\n        }\n\n        /// <summary>\n        /// Determines whether two instances of Ray are not equal.\n        /// </summary>\n        /// <param name=\"a\">The object to the left of the inequality operator.</param><param name=\"b\">The object to the right of the inequality operator.</param>\n        public static bool operator !=(Ray a, Ray b)\n        {\n            if ((double)a.Position.X == (double)b.Position.X && (double)a.Position.Y == (double)b.Position.Y && ((double)a.Position.Z == (double)b.Position.Z && (double)a.Direction.X == (double)b.Direction.X) && (double)a.Direction.Y == (double)b.Direction.Y)\n                return (double)a.Direction.Z != (double)b.Direction.Z;\n            else\n                return true;\n        }\n\n        /// <summary>\n        /// Determines whether the specified Ray is equal to the current Ray.\n        /// </summary>\n        /// <param name=\"other\">The Ray to compare with the current Ray.</param>\n        public bool Equals(Ray other)\n        {\n            if ((double)this.Position.X == (double)other.Position.X && (double)this.Position.Y == (double)other.Position.Y && ((double)this.Position.Z == (double)other.Position.Z && (double)this.Direction.X == (double)other.Direction.X) && (double)this.Direction.Y == (double)other.Direction.Y)\n                return (double)this.Direction.Z == (double)other.Direction.Z;\n            else\n                return false;\n        }\n\n        /// <summary>\n        /// Determines whether two instances of Ray are equal.\n        /// </summary>\n        /// <param name=\"obj\">The Object to compare with the current Ray.</param>\n        public override bool Equals(object obj)\n        {\n            bool flag = false;\n            if (obj != null && obj is Ray)\n                flag = this.Equals((Ray)obj);\n            return flag;\n        }\n\n        /// <summary>\n        /// Gets the hash code for this instance.\n        /// </summary>\n        public override int GetHashCode()\n        {\n            return this.Position.GetHashCode() + this.Direction.GetHashCode();\n        }\n\n        /// <summary>\n        /// Returns a String that represents the current Ray.\n        /// </summary>\n        public override string ToString()\n        {\n            return string.Format((IFormatProvider)CultureInfo.CurrentCulture, \"{{Position:{0} Direction:{1}}}\", new object[2]\n      {\n        (object) this.Position.ToString(),\n        (object) this.Direction.ToString()\n      });\n        }\n\n        /// <summary>\n        /// Checks whether the Ray intersects a specified BoundingBox.\n        /// </summary>\n        /// <param name=\"box\">The BoundingBox to check for intersection with the Ray.</param>\n        public float? Intersects(BoundingBox box)\n        {\n            return box.Intersects(this);\n        }\n\n        /// <summary>\n        /// Checks whether the current Ray intersects a BoundingBox.\n        /// </summary>\n        /// <param name=\"box\">The BoundingBox to check for intersection with.</param><param name=\"result\">[OutAttribute] Distance at which the ray intersects the BoundingBox or null if there is no intersection.</param>\n        public void Intersects(ref BoundingBox box, out float? result)\n        {\n            box.Intersects(ref this, out result);\n        }\n\n        /// <summary>\n        /// Checks whether the Ray intersects a specified BoundingFrustum.\n        /// </summary>\n        /// <param name=\"frustum\">The BoundingFrustum to check for intersection with the Ray.</param>\n        public float? Intersects(BoundingFrustum frustum)\n        {\n            if (frustum == (BoundingFrustum)null)\n                throw new ArgumentNullException(\"frustum\");\n            else\n                return frustum.Intersects(this);\n        }\n\n        /// <summary>\n        /// Determines whether this Ray intersects a specified Plane.\n        /// </summary>\n        /// <param name=\"plane\">The Plane with which to calculate this Ray's intersection.</param>\n        public float? Intersects(Plane plane)\n        {\n            float num1 = (float)((double)plane.Normal.X * (double)this.Direction.X + (double)plane.Normal.Y * (double)this.Direction.Y + (double)plane.Normal.Z * (double)this.Direction.Z);\n            if ((double)Math.Abs(num1) < 9.99999974737875E-06)\n                return new float?();\n            float num2 = (float)((double)plane.Normal.X * (double)this.Position.X + (double)plane.Normal.Y * (double)this.Position.Y + (double)plane.Normal.Z * (double)this.Position.Z);\n            float num3 = (-plane.D - num2) / num1;\n            if ((double)num3 < 0.0)\n            {\n                if ((double)num3 < -9.99999974737875E-06)\n                    return new float?();\n                num3 = 0.0f;\n            }\n            return new float?(num3);\n        }\n\n        /// <summary>\n        /// Determines whether this Ray intersects a specified Plane.\n        /// </summary>\n        /// <param name=\"plane\">The Plane with which to calculate this Ray's intersection.</param><param name=\"result\">[OutAttribute] The distance at which this Ray intersects the specified Plane, or null if there is no intersection.</param>\n        public void Intersects(ref Plane plane, out float? result)\n        {\n            float num1 = (float)((double)plane.Normal.X * (double)this.Direction.X + (double)plane.Normal.Y * (double)this.Direction.Y + (double)plane.Normal.Z * (double)this.Direction.Z);\n            if ((double)Math.Abs(num1) < 9.99999974737875E-06)\n            {\n                result = new float?();\n            }\n            else\n            {\n                float num2 = (float)((double)plane.Normal.X * (double)this.Position.X + (double)plane.Normal.Y * (double)this.Position.Y + (double)plane.Normal.Z * (double)this.Position.Z);\n                float num3 = (-plane.D - num2) / num1;\n                if ((double)num3 < 0.0)\n                {\n                    if ((double)num3 < -9.99999974737875E-06)\n                    {\n                        result = new float?();\n                        return;\n                    }\n                    else\n                        result = new float?(0.0f);\n                }\n                result = new float?(num3);\n            }\n        }\n\n        /// <summary>\n        /// Checks whether the Ray intersects a specified BoundingSphere.\n        /// </summary>\n        /// <param name=\"sphere\">The BoundingSphere to check for intersection with the Ray.</param>\n        public float? Intersects(BoundingSphere sphere)\n        {\n            float num1 = sphere.Center.X - this.Position.X;\n            float num2 = sphere.Center.Y - this.Position.Y;\n            float num3 = sphere.Center.Z - this.Position.Z;\n            float num4 = (float)((double)num1 * (double)num1 + (double)num2 * (double)num2 + (double)num3 * (double)num3);\n            float num5 = sphere.Radius * sphere.Radius;\n            if ((double)num4 <= (double)num5)\n                return new float?(0.0f);\n            float num6 = (float)((double)num1 * (double)this.Direction.X + (double)num2 * (double)this.Direction.Y + (double)num3 * (double)this.Direction.Z);\n            if ((double)num6 < 0.0)\n                return new float?();\n            float num7 = num4 - num6 * num6;\n            if ((double)num7 > (double)num5)\n                return new float?();\n            float num8 = (float)Math.Sqrt((double)num5 - (double)num7);\n            return new float?(num6 - num8);\n        }\n\n        /// <summary>\n        /// Checks whether the current Ray intersects a BoundingSphere.\n        /// </summary>\n        /// <param name=\"sphere\">The BoundingSphere to check for intersection with.</param><param name=\"result\">[OutAttribute] Distance at which the ray intersects the BoundingSphere or null if there is no intersection.</param>\n        public void Intersects(ref BoundingSphere sphere, out float? result)\n        {\n            float num1 = sphere.Center.X - this.Position.X;\n            float num2 = sphere.Center.Y - this.Position.Y;\n            float num3 = sphere.Center.Z - this.Position.Z;\n            float num4 = (float)((double)num1 * (double)num1 + (double)num2 * (double)num2 + (double)num3 * (double)num3);\n            float num5 = sphere.Radius * sphere.Radius;\n            if ((double)num4 <= (double)num5)\n            {\n                result = new float?(0.0f);\n            }\n            else\n            {\n                result = new float?();\n                float num6 = (float)((double)num1 * (double)this.Direction.X + (double)num2 * (double)this.Direction.Y + (double)num3 * (double)this.Direction.Z);\n                if ((double)num6 < 0.0)\n                    return;\n                float num7 = num4 - num6 * num6;\n                if ((double)num7 > (double)num5)\n                    return;\n                float num8 = (float)Math.Sqrt((double)num5 - (double)num7);\n                result = new float?(num6 - num8);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWarsMath/Rectangle.cs",
    "content": "﻿using System;\nusing System.ComponentModel;\nusing System.Globalization;\n\nnamespace MinerWarsMath\n{\n    /// <summary>\n    /// Defines a rectangle.\n    /// </summary>\n    [Serializable]\n    public struct Rectangle : IEquatable<Rectangle>\n    {\n        private static Rectangle _empty = new Rectangle();\n        /// <summary>\n        /// Specifies the x-coordinate of the rectangle.\n        /// </summary>\n        public int X;\n        /// <summary>\n        /// Specifies the y-coordinate of the rectangle.\n        /// </summary>\n        public int Y;\n        /// <summary>\n        /// Specifies the width of the rectangle.\n        /// </summary>\n        public int Width;\n        /// <summary>\n        /// Specifies the height of the rectangle.\n        /// </summary>\n        public int Height;\n\n        /// <summary>\n        /// Returns the x-coordinate of the left side of the rectangle.\n        /// </summary>\n        public int Left\n        {\n            get\n            {\n                return this.X;\n            }\n        }\n\n        /// <summary>\n        /// Returns the x-coordinate of the right side of the rectangle.\n        /// </summary>\n        public int Right\n        {\n            get\n            {\n                return this.X + this.Width;\n            }\n        }\n\n        /// <summary>\n        /// Returns the y-coordinate of the top of the rectangle.\n        /// </summary>\n        public int Top\n        {\n            get\n            {\n                return this.Y;\n            }\n        }\n\n        /// <summary>\n        /// Returns the y-coordinate of the bottom of the rectangle.\n        /// </summary>\n        public int Bottom\n        {\n            get\n            {\n                return this.Y + this.Height;\n            }\n        }\n\n        /// <summary>\n        /// Gets or sets the upper-left value of the Rectangle.\n        /// </summary>\n        public Point Location\n        {\n            get\n            {\n                return new Point(this.X, this.Y);\n            }\n            set\n            {\n                this.X = value.X;\n                this.Y = value.Y;\n            }\n        }\n\n        /// <summary>\n        /// Gets the Point that specifies the center of the rectangle.\n        /// </summary>\n        public Point Center\n        {\n            get\n            {\n                return new Point(this.X + this.Width / 2, this.Y + this.Height / 2);\n            }\n        }\n\n        /// <summary>\n        /// Returns a Rectangle with all of its values set to zero.\n        /// </summary>\n        public static Rectangle Empty\n        {\n            get\n            {\n                return Rectangle._empty;\n            }\n        }\n\n        /// <summary>\n        /// Gets a value that indicates whether the Rectangle is empty.\n        /// </summary>\n        public bool IsEmpty\n        {\n            get\n            {\n                if (this.Width == 0 && this.Height == 0 && this.X == 0)\n                    return this.Y == 0;\n                else\n                    return false;\n            }\n        }\n\n        static Rectangle()\n        {\n        }\n\n        /// <summary>\n        /// Initializes a new instance of Rectangle.\n        /// </summary>\n        /// <param name=\"x\">The x-coordinate of the rectangle.</param><param name=\"y\">The y-coordinate of the rectangle.</param><param name=\"width\">Width of the rectangle.</param><param name=\"height\">Height of the rectangle.</param>\n        public Rectangle(int x, int y, int width, int height)\n        {\n            this.X = x;\n            this.Y = y;\n            this.Width = width;\n            this.Height = height;\n        }\n\n        /// <summary>\n        /// Compares two rectangles for equality.\n        /// </summary>\n        /// <param name=\"a\">Source rectangle.</param><param name=\"b\">Source rectangle.</param>\n        public static bool operator ==(Rectangle a, Rectangle b)\n        {\n            if (a.X == b.X && a.Y == b.Y && a.Width == b.Width)\n                return a.Height == b.Height;\n            else\n                return false;\n        }\n\n        /// <summary>\n        /// Compares two rectangles for inequality.\n        /// </summary>\n        /// <param name=\"a\">Source rectangle.</param><param name=\"b\">Source rectangle.</param>\n        public static bool operator !=(Rectangle a, Rectangle b)\n        {\n            if (a.X == b.X && a.Y == b.Y && a.Width == b.Width)\n                return a.Height != b.Height;\n            else\n                return true;\n        }\n\n        /// <summary>\n        /// Changes the position of the Rectangle.\n        /// </summary>\n        /// <param name=\"amount\">The values to adjust the position of the Rectangle by.</param>\n        public void Offset(Point amount)\n        {\n            this.X += amount.X;\n            this.Y += amount.Y;\n        }\n\n        /// <summary>\n        /// Changes the position of the Rectangle.\n        /// </summary>\n        /// <param name=\"offsetX\">Change in the x-position.</param><param name=\"offsetY\">Change in the y-position.</param>\n        public void Offset(int offsetX, int offsetY)\n        {\n            this.X += offsetX;\n            this.Y += offsetY;\n        }\n\n        /// <summary>\n        /// Pushes the edges of the Rectangle out by the horizontal and vertical values specified.\n        /// </summary>\n        /// <param name=\"horizontalAmount\">Value to push the sides out by.</param><param name=\"verticalAmount\">Value to push the top and bottom out by.</param>\n        public void Inflate(int horizontalAmount, int verticalAmount)\n        {\n            this.X -= horizontalAmount;\n            this.Y -= verticalAmount;\n            this.Width += horizontalAmount * 2;\n            this.Height += verticalAmount * 2;\n        }\n\n        /// <summary>\n        /// Determines whether this Rectangle contains a specified point represented by its x- and y-coordinates.\n        /// </summary>\n        /// <param name=\"x\">The x-coordinate of the specified point.</param><param name=\"y\">The y-coordinate of the specified point.</param>\n        public bool Contains(int x, int y)\n        {\n            if (this.X <= x && x < this.X + this.Width && this.Y <= y)\n                return y < this.Y + this.Height;\n            else\n                return false;\n        }\n\n        /// <summary>\n        /// Determines whether this Rectangle contains a specified Point.\n        /// </summary>\n        /// <param name=\"value\">The Point to evaluate.</param>\n        public bool Contains(Point value)\n        {\n            if (this.X <= value.X && value.X < this.X + this.Width && this.Y <= value.Y)\n                return value.Y < this.Y + this.Height;\n            else\n                return false;\n        }\n\n        /// <summary>\n        /// Determines whether this Rectangle contains a specified Point.\n        /// </summary>\n        /// <param name=\"value\">The Point to evaluate.</param><param name=\"result\">[OutAttribute] true if the specified Point is contained within this Rectangle; false otherwise.</param>\n        public void Contains(ref Point value, out bool result)\n        {\n            result = this.X <= value.X && value.X < this.X + this.Width && this.Y <= value.Y && value.Y < this.Y + this.Height;\n        }\n\n        /// <summary>\n        /// Determines whether this Rectangle entirely contains a specified Rectangle.\n        /// </summary>\n        /// <param name=\"value\">The Rectangle to evaluate.</param>\n        public bool Contains(Rectangle value)\n        {\n            if (this.X <= value.X && value.X + value.Width <= this.X + this.Width && this.Y <= value.Y)\n                return value.Y + value.Height <= this.Y + this.Height;\n            else\n                return false;\n        }\n\n        /// <summary>\n        /// Determines whether this Rectangle entirely contains a specified Rectangle.\n        /// </summary>\n        /// <param name=\"value\">The Rectangle to evaluate.</param><param name=\"result\">[OutAttribute] On exit, is true if this Rectangle entirely contains the specified Rectangle, or false if not.</param>\n        public void Contains(ref Rectangle value, out bool result)\n        {\n            result = this.X <= value.X && value.X + value.Width <= this.X + this.Width && this.Y <= value.Y && value.Y + value.Height <= this.Y + this.Height;\n        }\n\n        /// <summary>\n        /// Determines whether a specified Rectangle intersects with this Rectangle.\n        /// </summary>\n        /// <param name=\"value\">The Rectangle to evaluate.</param>\n        public bool Intersects(Rectangle value)\n        {\n            if (value.X < this.X + this.Width && this.X < value.X + value.Width && value.Y < this.Y + this.Height)\n                return this.Y < value.Y + value.Height;\n            else\n                return false;\n        }\n\n        /// <summary>\n        /// Determines whether a specified Rectangle intersects with this Rectangle.\n        /// </summary>\n        /// <param name=\"value\">The Rectangle to evaluate</param><param name=\"result\">[OutAttribute] true if the specified Rectangle intersects with this one; false otherwise.</param>\n        public void Intersects(ref Rectangle value, out bool result)\n        {\n            result = value.X < this.X + this.Width && this.X < value.X + value.Width && value.Y < this.Y + this.Height && this.Y < value.Y + value.Height;\n        }\n\n        /// <summary>\n        /// Creates a Rectangle defining the area where one rectangle overlaps with another rectangle.\n        /// </summary>\n        /// <param name=\"value1\">The first Rectangle to compare.</param><param name=\"value2\">The second Rectangle to compare.</param>\n        public static Rectangle Intersect(Rectangle value1, Rectangle value2)\n        {\n            int num1 = value1.X + value1.Width;\n            int num2 = value2.X + value2.Width;\n            int num3 = value1.Y + value1.Height;\n            int num4 = value2.Y + value2.Height;\n            int num5 = value1.X > value2.X ? value1.X : value2.X;\n            int num6 = value1.Y > value2.Y ? value1.Y : value2.Y;\n            int num7 = num1 < num2 ? num1 : num2;\n            int num8 = num3 < num4 ? num3 : num4;\n            Rectangle rectangle;\n            if (num7 > num5 && num8 > num6)\n            {\n                rectangle.X = num5;\n                rectangle.Y = num6;\n                rectangle.Width = num7 - num5;\n                rectangle.Height = num8 - num6;\n            }\n            else\n            {\n                rectangle.X = 0;\n                rectangle.Y = 0;\n                rectangle.Width = 0;\n                rectangle.Height = 0;\n            }\n            return rectangle;\n        }\n\n        /// <summary>\n        /// Creates a Rectangle defining the area where one rectangle overlaps with another rectangle.\n        /// </summary>\n        /// <param name=\"value1\">The first Rectangle to compare.</param><param name=\"value2\">The second Rectangle to compare.</param><param name=\"result\">[OutAttribute] The area where the two first parameters overlap.</param>\n        public static void Intersect(ref Rectangle value1, ref Rectangle value2, out Rectangle result)\n        {\n            int num1 = value1.X + value1.Width;\n            int num2 = value2.X + value2.Width;\n            int num3 = value1.Y + value1.Height;\n            int num4 = value2.Y + value2.Height;\n            int num5 = value1.X > value2.X ? value1.X : value2.X;\n            int num6 = value1.Y > value2.Y ? value1.Y : value2.Y;\n            int num7 = num1 < num2 ? num1 : num2;\n            int num8 = num3 < num4 ? num3 : num4;\n            if (num7 > num5 && num8 > num6)\n            {\n                result.X = num5;\n                result.Y = num6;\n                result.Width = num7 - num5;\n                result.Height = num8 - num6;\n            }\n            else\n            {\n                result.X = 0;\n                result.Y = 0;\n                result.Width = 0;\n                result.Height = 0;\n            }\n        }\n\n        /// <summary>\n        /// Creates a new Rectangle that exactly contains two other rectangles.\n        /// </summary>\n        /// <param name=\"value1\">The first Rectangle to contain.</param><param name=\"value2\">The second Rectangle to contain.</param>\n        public static Rectangle Union(Rectangle value1, Rectangle value2)\n        {\n            int num1 = value1.X + value1.Width;\n            int num2 = value2.X + value2.Width;\n            int num3 = value1.Y + value1.Height;\n            int num4 = value2.Y + value2.Height;\n            int num5 = value1.X < value2.X ? value1.X : value2.X;\n            int num6 = value1.Y < value2.Y ? value1.Y : value2.Y;\n            int num7 = num1 > num2 ? num1 : num2;\n            int num8 = num3 > num4 ? num3 : num4;\n            Rectangle rectangle;\n            rectangle.X = num5;\n            rectangle.Y = num6;\n            rectangle.Width = num7 - num5;\n            rectangle.Height = num8 - num6;\n            return rectangle;\n        }\n\n        /// <summary>\n        /// Creates a new Rectangle that exactly contains two other rectangles.\n        /// </summary>\n        /// <param name=\"value1\">The first Rectangle to contain.</param><param name=\"value2\">The second Rectangle to contain.</param><param name=\"result\">[OutAttribute] The Rectangle that must be the union of the first two rectangles.</param>\n        public static void Union(ref Rectangle value1, ref Rectangle value2, out Rectangle result)\n        {\n            int num1 = value1.X + value1.Width;\n            int num2 = value2.X + value2.Width;\n            int num3 = value1.Y + value1.Height;\n            int num4 = value2.Y + value2.Height;\n            int num5 = value1.X < value2.X ? value1.X : value2.X;\n            int num6 = value1.Y < value2.Y ? value1.Y : value2.Y;\n            int num7 = num1 > num2 ? num1 : num2;\n            int num8 = num3 > num4 ? num3 : num4;\n            result.X = num5;\n            result.Y = num6;\n            result.Width = num7 - num5;\n            result.Height = num8 - num6;\n        }\n\n        /// <summary>\n        /// Determines whether the specified Object is equal to the Rectangle.\n        /// </summary>\n        /// <param name=\"other\">The Object to compare with the current Rectangle.</param>\n        public bool Equals(Rectangle other)\n        {\n            if (this.X == other.X && this.Y == other.Y && this.Width == other.Width)\n                return this.Height == other.Height;\n            else\n                return false;\n        }\n\n        /// <summary>\n        /// Returns a value that indicates whether the current instance is equal to a specified object.\n        /// </summary>\n        /// <param name=\"obj\">Object to make the comparison with.</param>\n        public override bool Equals(object obj)\n        {\n            bool flag = false;\n            if (obj is Rectangle)\n                flag = this.Equals((Rectangle)obj);\n            return flag;\n        }\n\n        /// <summary>\n        /// Retrieves a string representation of the current object.\n        /// </summary>\n        public override string ToString()\n        {\n            CultureInfo currentCulture = CultureInfo.CurrentCulture;\n            return string.Format((IFormatProvider)currentCulture, \"{{X:{0} Y:{1} Width:{2} Height:{3}}}\", (object)this.X.ToString((IFormatProvider)currentCulture), (object)this.Y.ToString((IFormatProvider)currentCulture), (object)this.Width.ToString((IFormatProvider)currentCulture), (object)this.Height.ToString((IFormatProvider)currentCulture));\n        }\n\n        /// <summary>\n        /// Gets the hash code for this object.\n        /// </summary>\n        public override int GetHashCode()\n        {\n            return this.X.GetHashCode() + this.Y.GetHashCode() + this.Width.GetHashCode() + this.Height.GetHashCode();\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWarsMath/Vector2.cs",
    "content": "﻿using System;\nusing System.ComponentModel;\nusing System.Globalization;\n\nnamespace MinerWarsMath\n{\n    /// <summary>\n    /// Defines a vector with two components.\n    /// </summary>\n    [Serializable]\n    public struct Vector2 : IEquatable<Vector2>\n    {\n        private static Vector2 _zero = new Vector2();\n        private static Vector2 _one = new Vector2(1f, 1f);\n        private static Vector2 _unitX = new Vector2(1f, 0.0f);\n        private static Vector2 _unitY = new Vector2(0.0f, 1f);\n        /// <summary>\n        /// Gets or sets the x-component of the vector.\n        /// </summary>\n        public float X;\n        /// <summary>\n        /// Gets or sets the y-component of the vector.\n        /// </summary>\n        public float Y;\n\n        /// <summary>\n        /// Returns a Vector2 with all of its components set to zero.\n        /// </summary>\n        public static Vector2 Zero\n        {\n            get\n            {\n                return Vector2._zero;\n            }\n        }\n\n        /// <summary>\n        /// Returns a Vector2 with both of its components set to one.\n        /// </summary>\n        public static Vector2 One\n        {\n            get\n            {\n                return Vector2._one;\n            }\n        }\n\n        /// <summary>\n        /// Returns the unit vector for the x-axis.\n        /// </summary>\n        public static Vector2 UnitX\n        {\n            get\n            {\n                return Vector2._unitX;\n            }\n        }\n\n        /// <summary>\n        /// Returns the unit vector for the y-axis.\n        /// </summary>\n        public static Vector2 UnitY\n        {\n            get\n            {\n                return Vector2._unitY;\n            }\n        }\n\n        static Vector2()\n        {\n        }\n\n        /// <summary>\n        /// Initializes a new instance of Vector2.\n        /// </summary>\n        /// <param name=\"x\">Initial value for the x-component of the vector.</param><param name=\"y\">Initial value for the y-component of the vector.</param>\n        public Vector2(float x, float y)\n        {\n            this.X = x;\n            this.Y = y;\n        }\n\n        /// <summary>\n        /// Creates a new instance of Vector2.\n        /// </summary>\n        /// <param name=\"value\">Value to initialize both components to.</param>\n        public Vector2(float value)\n        {\n            this.X = this.Y = value;\n        }\n\n        /// <summary>\n        /// Returns a vector pointing in the opposite direction.\n        /// </summary>\n        /// <param name=\"value\">Source vector.</param>\n        public static Vector2 operator -(Vector2 value)\n        {\n            Vector2 vector2;\n            vector2.X = -value.X;\n            vector2.Y = -value.Y;\n            return vector2;\n        }\n\n        /// <summary>\n        /// Tests vectors for equality.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"value2\">Source vector.</param>\n        public static bool operator ==(Vector2 value1, Vector2 value2)\n        {\n            if ((double)value1.X == (double)value2.X)\n                return (double)value1.Y == (double)value2.Y;\n            else\n                return false;\n        }\n\n        /// <summary>\n        /// Tests vectors for inequality.\n        /// </summary>\n        /// <param name=\"value1\">Vector to compare.</param><param name=\"value2\">Vector to compare.</param>\n        public static bool operator !=(Vector2 value1, Vector2 value2)\n        {\n            if ((double)value1.X == (double)value2.X)\n                return (double)value1.Y != (double)value2.Y;\n            else\n                return true;\n        }\n\n        /// <summary>\n        /// Adds two vectors.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"value2\">Source vector.</param>\n        public static Vector2 operator +(Vector2 value1, Vector2 value2)\n        {\n            Vector2 vector2;\n            vector2.X = value1.X + value2.X;\n            vector2.Y = value1.Y + value2.Y;\n            return vector2;\n        }\n\n        /// <summary>\n        /// Subtracts a vector from a vector.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"value2\">source vector.</param>\n        public static Vector2 operator -(Vector2 value1, Vector2 value2)\n        {\n            Vector2 vector2;\n            vector2.X = value1.X - value2.X;\n            vector2.Y = value1.Y - value2.Y;\n            return vector2;\n        }\n\n        /// <summary>\n        /// Multiplies the components of two vectors by each other.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"value2\">Source vector.</param>\n        public static Vector2 operator *(Vector2 value1, Vector2 value2)\n        {\n            Vector2 vector2;\n            vector2.X = value1.X * value2.X;\n            vector2.Y = value1.Y * value2.Y;\n            return vector2;\n        }\n\n        /// <summary>\n        /// Multiplies a vector by a scalar value.\n        /// </summary>\n        /// <param name=\"value\">Source vector.</param><param name=\"scaleFactor\">Scalar value.</param>\n        public static Vector2 operator *(Vector2 value, float scaleFactor)\n        {\n            Vector2 vector2;\n            vector2.X = value.X * scaleFactor;\n            vector2.Y = value.Y * scaleFactor;\n            return vector2;\n        }\n\n        /// <summary>\n        /// Multiplies a vector by a scalar value.\n        /// </summary>\n        /// <param name=\"scaleFactor\">Scalar value.</param><param name=\"value\">Source vector.</param>\n        public static Vector2 operator *(float scaleFactor, Vector2 value)\n        {\n            Vector2 vector2;\n            vector2.X = value.X * scaleFactor;\n            vector2.Y = value.Y * scaleFactor;\n            return vector2;\n        }\n\n        /// <summary>\n        /// Divides the components of a vector by the components of another vector.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"value2\">Divisor vector.</param>\n        public static Vector2 operator /(Vector2 value1, Vector2 value2)\n        {\n            Vector2 vector2;\n            vector2.X = value1.X / value2.X;\n            vector2.Y = value1.Y / value2.Y;\n            return vector2;\n        }\n\n        /// <summary>\n        /// Divides a vector by a scalar value.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"divider\">The divisor.</param>\n        public static Vector2 operator /(Vector2 value1, float divider)\n        {\n            float num = 1f / divider;\n            Vector2 vector2;\n            vector2.X = value1.X * num;\n            vector2.Y = value1.Y * num;\n            return vector2;\n        }\n\n        /// <summary>\n        /// Retrieves a string representation of the current object.\n        /// </summary>\n        public override string ToString()\n        {\n            CultureInfo currentCulture = CultureInfo.CurrentCulture;\n            return string.Format((IFormatProvider)currentCulture, \"{{X:{0} Y:{1}}}\", new object[2]\n      {\n        (object) this.X.ToString((IFormatProvider) currentCulture),\n        (object) this.Y.ToString((IFormatProvider) currentCulture)\n      });\n        }\n\n        /// <summary>\n        /// Determines whether the specified Object is equal to the Vector2.\n        /// </summary>\n        /// <param name=\"other\">The Object to compare with the current Vector2.</param>\n        public bool Equals(Vector2 other)\n        {\n            if ((double)this.X == (double)other.X)\n                return (double)this.Y == (double)other.Y;\n            else\n                return false;\n        }\n\n        /// <summary>\n        /// Returns a value that indicates whether the current instance is equal to a specified object.\n        /// </summary>\n        /// <param name=\"obj\">Object to make the comparison with.</param>\n        public override bool Equals(object obj)\n        {\n            bool flag = false;\n            if (obj is Vector2)\n                flag = this.Equals((Vector2)obj);\n            return flag;\n        }\n\n        /// <summary>\n        /// Gets the hash code of the vector object.\n        /// </summary>\n        public override int GetHashCode()\n        {\n            return this.X.GetHashCode() + this.Y.GetHashCode();\n        }\n\n        /// <summary>\n        /// Calculates the length of the vector.\n        /// </summary>\n        public float Length()\n        {\n            return (float)Math.Sqrt((double)this.X * (double)this.X + (double)this.Y * (double)this.Y);\n        }\n\n        /// <summary>\n        /// Calculates the length of the vector squared.\n        /// </summary>\n        public float LengthSquared()\n        {\n            return (float)((double)this.X * (double)this.X + (double)this.Y * (double)this.Y);\n        }\n\n        /// <summary>\n        /// Calculates the distance between two vectors.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"value2\">Source vector.</param>\n        public static float Distance(Vector2 value1, Vector2 value2)\n        {\n            float num1 = value1.X - value2.X;\n            float num2 = value1.Y - value2.Y;\n            return (float)Math.Sqrt((double)num1 * (double)num1 + (double)num2 * (double)num2);\n        }\n\n        /// <summary>\n        /// Calculates the distance between two vectors.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"value2\">Source vector.</param><param name=\"result\">[OutAttribute] The distance between the vectors.</param>\n        public static void Distance(ref Vector2 value1, ref Vector2 value2, out float result)\n        {\n            float num1 = value1.X - value2.X;\n            float num2 = value1.Y - value2.Y;\n            float num3 = (float)((double)num1 * (double)num1 + (double)num2 * (double)num2);\n            result = (float)Math.Sqrt((double)num3);\n        }\n\n        /// <summary>\n        /// Calculates the distance between two vectors squared.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"value2\">Source vector.</param>\n        public static float DistanceSquared(Vector2 value1, Vector2 value2)\n        {\n            float num1 = value1.X - value2.X;\n            float num2 = value1.Y - value2.Y;\n            return (float)((double)num1 * (double)num1 + (double)num2 * (double)num2);\n        }\n\n        /// <summary>\n        /// Calculates the distance between two vectors squared.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"value2\">Source vector.</param><param name=\"result\">[OutAttribute] The distance between the vectors squared.</param>\n        public static void DistanceSquared(ref Vector2 value1, ref Vector2 value2, out float result)\n        {\n            float num1 = value1.X - value2.X;\n            float num2 = value1.Y - value2.Y;\n            result = (float)((double)num1 * (double)num1 + (double)num2 * (double)num2);\n        }\n\n        /// <summary>\n        /// Calculates the dot product of two vectors. If the two vectors are unit vectors, the dot product returns a floating point value between -1 and 1 that can be used to determine some properties of the angle between two vectors. For example, it can show whether the vectors are orthogonal, parallel, or have an acute or obtuse angle between them.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"value2\">Source vector.</param>\n        public static float Dot(Vector2 value1, Vector2 value2)\n        {\n            return (float)((double)value1.X * (double)value2.X + (double)value1.Y * (double)value2.Y);\n        }\n\n        /// <summary>\n        /// Calculates the dot product of two vectors and writes the result to a user-specified variable. If the two vectors are unit vectors, the dot product returns a floating point value between -1 and 1 that can be used to determine some properties of the angle between two vectors. For example, it can show whether the vectors are orthogonal, parallel, or have an acute or obtuse angle between them.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"value2\">Source vector.</param><param name=\"result\">[OutAttribute] The dot product of the two vectors.</param>\n        public static void Dot(ref Vector2 value1, ref Vector2 value2, out float result)\n        {\n            result = (float)((double)value1.X * (double)value2.X + (double)value1.Y * (double)value2.Y);\n        }\n\n        /// <summary>\n        /// Turns the current vector into a unit vector. The result is a vector one unit in length pointing in the same direction as the original vector.\n        /// </summary>\n        public void Normalize()\n        {\n            float num = 1f / (float)Math.Sqrt((double)this.X * (double)this.X + (double)this.Y * (double)this.Y);\n            this.X *= num;\n            this.Y *= num;\n        }\n\n        /// <summary>\n        /// Creates a unit vector from the specified vector. The result is a vector one unit in length pointing in the same direction as the original vector.\n        /// </summary>\n        /// <param name=\"value\">Source Vector2.</param>\n        public static Vector2 Normalize(Vector2 value)\n        {\n            float num = 1f / (float)Math.Sqrt((double)value.X * (double)value.X + (double)value.Y * (double)value.Y);\n            Vector2 vector2;\n            vector2.X = value.X * num;\n            vector2.Y = value.Y * num;\n            return vector2;\n        }\n\n        /// <summary>\n        /// Creates a unit vector from the specified vector, writing the result to a user-specified variable. The result is a vector one unit in length pointing in the same direction as the original vector.\n        /// </summary>\n        /// <param name=\"value\">Source vector.</param><param name=\"result\">[OutAttribute] Normalized vector.</param>\n        public static void Normalize(ref Vector2 value, out Vector2 result)\n        {\n            float num = 1f / (float)Math.Sqrt((double)value.X * (double)value.X + (double)value.Y * (double)value.Y);\n            result.X = value.X * num;\n            result.Y = value.Y * num;\n        }\n\n        /// <summary>\n        /// Determines the reflect vector of the given vector and normal.\n        /// </summary>\n        /// <param name=\"vector\">Source vector.</param><param name=\"normal\">Normal of vector.</param>\n        public static Vector2 Reflect(Vector2 vector, Vector2 normal)\n        {\n            float num = (float)((double)vector.X * (double)normal.X + (double)vector.Y * (double)normal.Y);\n            Vector2 vector2;\n            vector2.X = vector.X - 2f * num * normal.X;\n            vector2.Y = vector.Y - 2f * num * normal.Y;\n            return vector2;\n        }\n\n        /// <summary>\n        /// Determines the reflect vector of the given vector and normal.\n        /// </summary>\n        /// <param name=\"vector\">Source vector.</param><param name=\"normal\">Normal of vector.</param><param name=\"result\">[OutAttribute] The created reflect vector.</param>\n        public static void Reflect(ref Vector2 vector, ref Vector2 normal, out Vector2 result)\n        {\n            float num = (float)((double)vector.X * (double)normal.X + (double)vector.Y * (double)normal.Y);\n            result.X = vector.X - 2f * num * normal.X;\n            result.Y = vector.Y - 2f * num * normal.Y;\n        }\n\n        /// <summary>\n        /// Returns a vector that contains the lowest value from each matching pair of components.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"value2\">Source vector.</param>\n        public static Vector2 Min(Vector2 value1, Vector2 value2)\n        {\n            Vector2 vector2;\n            vector2.X = (double)value1.X < (double)value2.X ? value1.X : value2.X;\n            vector2.Y = (double)value1.Y < (double)value2.Y ? value1.Y : value2.Y;\n            return vector2;\n        }\n\n        /// <summary>\n        /// Returns a vector that contains the lowest value from each matching pair of components.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"value2\">Source vector.</param><param name=\"result\">[OutAttribute] The minimized vector.</param>\n        public static void Min(ref Vector2 value1, ref Vector2 value2, out Vector2 result)\n        {\n            result.X = (double)value1.X < (double)value2.X ? value1.X : value2.X;\n            result.Y = (double)value1.Y < (double)value2.Y ? value1.Y : value2.Y;\n        }\n\n        /// <summary>\n        /// Returns a vector that contains the highest value from each matching pair of components.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"value2\">Source vector.</param>\n        public static Vector2 Max(Vector2 value1, Vector2 value2)\n        {\n            Vector2 vector2;\n            vector2.X = (double)value1.X > (double)value2.X ? value1.X : value2.X;\n            vector2.Y = (double)value1.Y > (double)value2.Y ? value1.Y : value2.Y;\n            return vector2;\n        }\n\n        /// <summary>\n        /// Returns a vector that contains the highest value from each matching pair of components.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"value2\">Source vector.</param><param name=\"result\">[OutAttribute] The maximized vector.</param>\n        public static void Max(ref Vector2 value1, ref Vector2 value2, out Vector2 result)\n        {\n            result.X = (double)value1.X > (double)value2.X ? value1.X : value2.X;\n            result.Y = (double)value1.Y > (double)value2.Y ? value1.Y : value2.Y;\n        }\n\n        /// <summary>\n        /// Restricts a value to be within a specified range.\n        /// </summary>\n        /// <param name=\"value1\">The value to clamp.</param><param name=\"min\">The minimum value.</param><param name=\"max\">The maximum value.</param>\n        public static Vector2 Clamp(Vector2 value1, Vector2 min, Vector2 max)\n        {\n            float num1 = value1.X;\n            float num2 = (double)num1 > (double)max.X ? max.X : num1;\n            float num3 = (double)num2 < (double)min.X ? min.X : num2;\n            float num4 = value1.Y;\n            float num5 = (double)num4 > (double)max.Y ? max.Y : num4;\n            float num6 = (double)num5 < (double)min.Y ? min.Y : num5;\n            Vector2 vector2;\n            vector2.X = num3;\n            vector2.Y = num6;\n            return vector2;\n        }\n\n        /// <summary>\n        /// Restricts a value to be within a specified range.\n        /// </summary>\n        /// <param name=\"value1\">The value to clamp.</param><param name=\"min\">The minimum value.</param><param name=\"max\">The maximum value.</param><param name=\"result\">[OutAttribute] The clamped value.</param>\n        public static void Clamp(ref Vector2 value1, ref Vector2 min, ref Vector2 max, out Vector2 result)\n        {\n            float num1 = value1.X;\n            float num2 = (double)num1 > (double)max.X ? max.X : num1;\n            float num3 = (double)num2 < (double)min.X ? min.X : num2;\n            float num4 = value1.Y;\n            float num5 = (double)num4 > (double)max.Y ? max.Y : num4;\n            float num6 = (double)num5 < (double)min.Y ? min.Y : num5;\n            result.X = num3;\n            result.Y = num6;\n        }\n\n        /// <summary>\n        /// Performs a linear interpolation between two vectors.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"value2\">Source vector.</param><param name=\"amount\">Value between 0 and 1 indicating the weight of value2.</param>\n        public static Vector2 Lerp(Vector2 value1, Vector2 value2, float amount)\n        {\n            Vector2 vector2;\n            vector2.X = value1.X + (value2.X - value1.X) * amount;\n            vector2.Y = value1.Y + (value2.Y - value1.Y) * amount;\n            return vector2;\n        }\n\n        /// <summary>\n        /// Performs a linear interpolation between two vectors.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"value2\">Source vector.</param><param name=\"amount\">Value between 0 and 1 indicating the weight of value2.</param><param name=\"result\">[OutAttribute] The result of the interpolation.</param>\n        public static void Lerp(ref Vector2 value1, ref Vector2 value2, float amount, out Vector2 result)\n        {\n            result.X = value1.X + (value2.X - value1.X) * amount;\n            result.Y = value1.Y + (value2.Y - value1.Y) * amount;\n        }\n\n        /// <summary>\n        /// Returns a Vector2 containing the 2D Cartesian coordinates of a point specified in barycentric (areal) coordinates relative to a 2D triangle.\n        /// </summary>\n        /// <param name=\"value1\">A Vector2 containing the 2D Cartesian coordinates of vertex 1 of the triangle.</param><param name=\"value2\">A Vector2 containing the 2D Cartesian coordinates of vertex 2 of the triangle.</param><param name=\"value3\">A Vector2 containing the 2D Cartesian coordinates of vertex 3 of the triangle.</param><param name=\"amount1\">Barycentric coordinate b2, which expresses the weighting factor toward vertex 2 (specified in value2).</param><param name=\"amount2\">Barycentric coordinate b3, which expresses the weighting factor toward vertex 3 (specified in value3).</param>\n        public static Vector2 Barycentric(Vector2 value1, Vector2 value2, Vector2 value3, float amount1, float amount2)\n        {\n            Vector2 vector2;\n            vector2.X = (float)((double)value1.X + (double)amount1 * ((double)value2.X - (double)value1.X) + (double)amount2 * ((double)value3.X - (double)value1.X));\n            vector2.Y = (float)((double)value1.Y + (double)amount1 * ((double)value2.Y - (double)value1.Y) + (double)amount2 * ((double)value3.Y - (double)value1.Y));\n            return vector2;\n        }\n\n        /// <summary>\n        /// Returns a Vector2 containing the 2D Cartesian coordinates of a point specified in barycentric (areal) coordinates relative to a 2D triangle.\n        /// </summary>\n        /// <param name=\"value1\">A Vector2 containing the 2D Cartesian coordinates of vertex 1 of the triangle.</param><param name=\"value2\">A Vector2 containing the 2D Cartesian coordinates of vertex 2 of the triangle.</param><param name=\"value3\">A Vector2 containing the 2D Cartesian coordinates of vertex 3 of the triangle.</param><param name=\"amount1\">Barycentric coordinate b2, which expresses the weighting factor toward vertex 2 (specified in value2).</param><param name=\"amount2\">Barycentric coordinate b3, which expresses the weighting factor toward vertex 3 (specified in value3).</param><param name=\"result\">[OutAttribute] The 2D Cartesian coordinates of the specified point are placed in this Vector2 on exit.</param>\n        public static void Barycentric(ref Vector2 value1, ref Vector2 value2, ref Vector2 value3, float amount1, float amount2, out Vector2 result)\n        {\n            result.X = (float)((double)value1.X + (double)amount1 * ((double)value2.X - (double)value1.X) + (double)amount2 * ((double)value3.X - (double)value1.X));\n            result.Y = (float)((double)value1.Y + (double)amount1 * ((double)value2.Y - (double)value1.Y) + (double)amount2 * ((double)value3.Y - (double)value1.Y));\n        }\n\n        /// <summary>\n        /// Interpolates between two values using a cubic equation.\n        /// </summary>\n        /// <param name=\"value1\">Source value.</param><param name=\"value2\">Source value.</param><param name=\"amount\">Weighting value.</param>\n        public static Vector2 SmoothStep(Vector2 value1, Vector2 value2, float amount)\n        {\n            amount = (double)amount > 1.0 ? 1f : ((double)amount < 0.0 ? 0.0f : amount);\n            amount = (float)((double)amount * (double)amount * (3.0 - 2.0 * (double)amount));\n            Vector2 vector2;\n            vector2.X = value1.X + (value2.X - value1.X) * amount;\n            vector2.Y = value1.Y + (value2.Y - value1.Y) * amount;\n            return vector2;\n        }\n\n        /// <summary>\n        /// Interpolates between two values using a cubic equation.\n        /// </summary>\n        /// <param name=\"value1\">Source value.</param><param name=\"value2\">Source value.</param><param name=\"amount\">Weighting value.</param><param name=\"result\">[OutAttribute] The interpolated value.</param>\n        public static void SmoothStep(ref Vector2 value1, ref Vector2 value2, float amount, out Vector2 result)\n        {\n            amount = (double)amount > 1.0 ? 1f : ((double)amount < 0.0 ? 0.0f : amount);\n            amount = (float)((double)amount * (double)amount * (3.0 - 2.0 * (double)amount));\n            result.X = value1.X + (value2.X - value1.X) * amount;\n            result.Y = value1.Y + (value2.Y - value1.Y) * amount;\n        }\n\n        /// <summary>\n        /// Performs a Catmull-Rom interpolation using the specified positions.\n        /// </summary>\n        /// <param name=\"value1\">The first position in the interpolation.</param><param name=\"value2\">The second position in the interpolation.</param><param name=\"value3\">The third position in the interpolation.</param><param name=\"value4\">The fourth position in the interpolation.</param><param name=\"amount\">Weighting factor.</param>\n        public static Vector2 CatmullRom(Vector2 value1, Vector2 value2, Vector2 value3, Vector2 value4, float amount)\n        {\n            float num1 = amount * amount;\n            float num2 = amount * num1;\n            Vector2 vector2;\n            vector2.X = (float)(0.5 * (2.0 * (double)value2.X + (-(double)value1.X + (double)value3.X) * (double)amount + (2.0 * (double)value1.X - 5.0 * (double)value2.X + 4.0 * (double)value3.X - (double)value4.X) * (double)num1 + (-(double)value1.X + 3.0 * (double)value2.X - 3.0 * (double)value3.X + (double)value4.X) * (double)num2));\n            vector2.Y = (float)(0.5 * (2.0 * (double)value2.Y + (-(double)value1.Y + (double)value3.Y) * (double)amount + (2.0 * (double)value1.Y - 5.0 * (double)value2.Y + 4.0 * (double)value3.Y - (double)value4.Y) * (double)num1 + (-(double)value1.Y + 3.0 * (double)value2.Y - 3.0 * (double)value3.Y + (double)value4.Y) * (double)num2));\n            return vector2;\n        }\n\n        /// <summary>\n        /// Performs a Catmull-Rom interpolation using the specified positions.\n        /// </summary>\n        /// <param name=\"value1\">The first position in the interpolation.</param><param name=\"value2\">The second position in the interpolation.</param><param name=\"value3\">The third position in the interpolation.</param><param name=\"value4\">The fourth position in the interpolation.</param><param name=\"amount\">Weighting factor.</param><param name=\"result\">[OutAttribute] A vector that is the result of the Catmull-Rom interpolation.</param>\n        public static void CatmullRom(ref Vector2 value1, ref Vector2 value2, ref Vector2 value3, ref Vector2 value4, float amount, out Vector2 result)\n        {\n            float num1 = amount * amount;\n            float num2 = amount * num1;\n            result.X = (float)(0.5 * (2.0 * (double)value2.X + (-(double)value1.X + (double)value3.X) * (double)amount + (2.0 * (double)value1.X - 5.0 * (double)value2.X + 4.0 * (double)value3.X - (double)value4.X) * (double)num1 + (-(double)value1.X + 3.0 * (double)value2.X - 3.0 * (double)value3.X + (double)value4.X) * (double)num2));\n            result.Y = (float)(0.5 * (2.0 * (double)value2.Y + (-(double)value1.Y + (double)value3.Y) * (double)amount + (2.0 * (double)value1.Y - 5.0 * (double)value2.Y + 4.0 * (double)value3.Y - (double)value4.Y) * (double)num1 + (-(double)value1.Y + 3.0 * (double)value2.Y - 3.0 * (double)value3.Y + (double)value4.Y) * (double)num2));\n        }\n\n        /// <summary>\n        /// Performs a Hermite spline interpolation.\n        /// </summary>\n        /// <param name=\"value1\">Source position vector.</param><param name=\"tangent1\">Source tangent vector.</param><param name=\"value2\">Source position vector.</param><param name=\"tangent2\">Source tangent vector.</param><param name=\"amount\">Weighting factor.</param>\n        public static Vector2 Hermite(Vector2 value1, Vector2 tangent1, Vector2 value2, Vector2 tangent2, float amount)\n        {\n            float num1 = amount * amount;\n            float num2 = amount * num1;\n            float num3 = (float)(2.0 * (double)num2 - 3.0 * (double)num1 + 1.0);\n            float num4 = (float)(-2.0 * (double)num2 + 3.0 * (double)num1);\n            float num5 = num2 - 2f * num1 + amount;\n            float num6 = num2 - num1;\n            Vector2 vector2;\n            vector2.X = (float)((double)value1.X * (double)num3 + (double)value2.X * (double)num4 + (double)tangent1.X * (double)num5 + (double)tangent2.X * (double)num6);\n            vector2.Y = (float)((double)value1.Y * (double)num3 + (double)value2.Y * (double)num4 + (double)tangent1.Y * (double)num5 + (double)tangent2.Y * (double)num6);\n            return vector2;\n        }\n\n        /// <summary>\n        /// Performs a Hermite spline interpolation.\n        /// </summary>\n        /// <param name=\"value1\">Source position vector.</param><param name=\"tangent1\">Source tangent vector.</param><param name=\"value2\">Source position vector.</param><param name=\"tangent2\">Source tangent vector.</param><param name=\"amount\">Weighting factor.</param><param name=\"result\">[OutAttribute] The result of the Hermite spline interpolation.</param>\n        public static void Hermite(ref Vector2 value1, ref Vector2 tangent1, ref Vector2 value2, ref Vector2 tangent2, float amount, out Vector2 result)\n        {\n            float num1 = amount * amount;\n            float num2 = amount * num1;\n            float num3 = (float)(2.0 * (double)num2 - 3.0 * (double)num1 + 1.0);\n            float num4 = (float)(-2.0 * (double)num2 + 3.0 * (double)num1);\n            float num5 = num2 - 2f * num1 + amount;\n            float num6 = num2 - num1;\n            result.X = (float)((double)value1.X * (double)num3 + (double)value2.X * (double)num4 + (double)tangent1.X * (double)num5 + (double)tangent2.X * (double)num6);\n            result.Y = (float)((double)value1.Y * (double)num3 + (double)value2.Y * (double)num4 + (double)tangent1.Y * (double)num5 + (double)tangent2.Y * (double)num6);\n        }\n\n        /// <summary>\n        /// Transforms the vector (x, y, 0, 1) by the specified matrix.\n        /// </summary>\n        /// <param name=\"position\">The source vector.</param><param name=\"matrix\">The transformation matrix.</param>\n        public static Vector2 Transform(Vector2 position, Matrix matrix)\n        {\n            float num1 = (float)((double)position.X * (double)matrix.M11 + (double)position.Y * (double)matrix.M21) + matrix.M41;\n            float num2 = (float)((double)position.X * (double)matrix.M12 + (double)position.Y * (double)matrix.M22) + matrix.M42;\n            Vector2 vector2;\n            vector2.X = num1;\n            vector2.Y = num2;\n            return vector2;\n        }\n\n        /// <summary>\n        /// Transforms a Vector2 by the given Matrix.\n        /// </summary>\n        /// <param name=\"position\">The source Vector2.</param><param name=\"matrix\">The transformation Matrix.</param><param name=\"result\">[OutAttribute] The Vector2 resulting from the transformation.</param>\n        public static void Transform(ref Vector2 position, ref Matrix matrix, out Vector2 result)\n        {\n            float num1 = (float)((double)position.X * (double)matrix.M11 + (double)position.Y * (double)matrix.M21) + matrix.M41;\n            float num2 = (float)((double)position.X * (double)matrix.M12 + (double)position.Y * (double)matrix.M22) + matrix.M42;\n            result.X = num1;\n            result.Y = num2;\n        }\n\n        /// <summary>\n        /// Transforms a 2D vector normal by a matrix.\n        /// </summary>\n        /// <param name=\"normal\">The source vector.</param><param name=\"matrix\">The transformation matrix.</param>\n        public static Vector2 TransformNormal(Vector2 normal, Matrix matrix)\n        {\n            float num1 = (float)((double)normal.X * (double)matrix.M11 + (double)normal.Y * (double)matrix.M21);\n            float num2 = (float)((double)normal.X * (double)matrix.M12 + (double)normal.Y * (double)matrix.M22);\n            Vector2 vector2;\n            vector2.X = num1;\n            vector2.Y = num2;\n            return vector2;\n        }\n\n        /// <summary>\n        /// Transforms a vector normal by a matrix.\n        /// </summary>\n        /// <param name=\"normal\">The source vector.</param><param name=\"matrix\">The transformation matrix.</param><param name=\"result\">[OutAttribute] The Vector2 resulting from the transformation.</param>\n        public static void TransformNormal(ref Vector2 normal, ref Matrix matrix, out Vector2 result)\n        {\n            float num1 = (float)((double)normal.X * (double)matrix.M11 + (double)normal.Y * (double)matrix.M21);\n            float num2 = (float)((double)normal.X * (double)matrix.M12 + (double)normal.Y * (double)matrix.M22);\n            result.X = num1;\n            result.Y = num2;\n        }\n\n        /// <summary>\n        /// Transforms a single Vector2, or the vector normal (x, y, 0, 0), by a specified Quaternion rotation.\n        /// </summary>\n        /// <param name=\"value\">The vector to rotate.</param><param name=\"rotation\">The Quaternion rotation to apply.</param>\n        public static Vector2 Transform(Vector2 value, Quaternion rotation)\n        {\n            float num1 = rotation.X + rotation.X;\n            float num2 = rotation.Y + rotation.Y;\n            float num3 = rotation.Z + rotation.Z;\n            float num4 = rotation.W * num3;\n            float num5 = rotation.X * num1;\n            float num6 = rotation.X * num2;\n            float num7 = rotation.Y * num2;\n            float num8 = rotation.Z * num3;\n            float num9 = (float)((double)value.X * (1.0 - (double)num7 - (double)num8) + (double)value.Y * ((double)num6 - (double)num4));\n            float num10 = (float)((double)value.X * ((double)num6 + (double)num4) + (double)value.Y * (1.0 - (double)num5 - (double)num8));\n            Vector2 vector2;\n            vector2.X = num9;\n            vector2.Y = num10;\n            return vector2;\n        }\n\n        /// <summary>\n        /// Transforms a Vector2, or the vector normal (x, y, 0, 0), by a specified Quaternion rotation.\n        /// </summary>\n        /// <param name=\"value\">The vector to rotate.</param><param name=\"rotation\">The Quaternion rotation to apply.</param><param name=\"result\">[OutAttribute] An existing Vector2 filled in with the result of the rotation.</param>\n        public static void Transform(ref Vector2 value, ref Quaternion rotation, out Vector2 result)\n        {\n            float num1 = rotation.X + rotation.X;\n            float num2 = rotation.Y + rotation.Y;\n            float num3 = rotation.Z + rotation.Z;\n            float num4 = rotation.W * num3;\n            float num5 = rotation.X * num1;\n            float num6 = rotation.X * num2;\n            float num7 = rotation.Y * num2;\n            float num8 = rotation.Z * num3;\n            float num9 = (float)((double)value.X * (1.0 - (double)num7 - (double)num8) + (double)value.Y * ((double)num6 - (double)num4));\n            float num10 = (float)((double)value.X * ((double)num6 + (double)num4) + (double)value.Y * (1.0 - (double)num5 - (double)num8));\n            result.X = num9;\n            result.Y = num10;\n        }\n\n        /// <summary>\n        /// Transforms an array of Vector2s by a specified Matrix.\n        /// </summary>\n        /// <param name=\"sourceArray\">The array of Vector2s to transform.</param><param name=\"matrix\">The transform Matrix to apply.</param><param name=\"destinationArray\">An existing array into which the transformed Vector2s are written.</param>\n        public static void Transform(Vector2[] sourceArray, ref Matrix matrix, Vector2[] destinationArray)\n        {\n            for (int index = 0; index < sourceArray.Length; ++index)\n            {\n                float num1 = sourceArray[index].X;\n                float num2 = sourceArray[index].Y;\n                destinationArray[index].X = (float)((double)num1 * (double)matrix.M11 + (double)num2 * (double)matrix.M21) + matrix.M41;\n                destinationArray[index].Y = (float)((double)num1 * (double)matrix.M12 + (double)num2 * (double)matrix.M22) + matrix.M42;\n            }\n        }\n\n        /// <summary>\n        /// Transforms a specified range in an array of Vector2s by a specified Matrix and places the results in a specified range in a destination array.\n        /// </summary>\n        /// <param name=\"sourceArray\">The source array.</param><param name=\"sourceIndex\">The index of the first Vector2 to transform in the source array.</param><param name=\"matrix\">The Matrix to transform by.</param><param name=\"destinationArray\">The destination array into which the resulting Vector2s will be written.</param><param name=\"destinationIndex\">The index of the position in the destination array where the first result Vector2 should be written.</param><param name=\"length\">The number of Vector2s to be transformed.</param>\n        public static void Transform(Vector2[] sourceArray, int sourceIndex, ref Matrix matrix, Vector2[] destinationArray, int destinationIndex, int length)\n        {\n            for (; length > 0; --length)\n            {\n                float num1 = sourceArray[sourceIndex].X;\n                float num2 = sourceArray[sourceIndex].Y;\n                destinationArray[destinationIndex].X = (float)((double)num1 * (double)matrix.M11 + (double)num2 * (double)matrix.M21) + matrix.M41;\n                destinationArray[destinationIndex].Y = (float)((double)num1 * (double)matrix.M12 + (double)num2 * (double)matrix.M22) + matrix.M42;\n                ++sourceIndex;\n                ++destinationIndex;\n            }\n        }\n\n        /// <summary>\n        /// Transforms an array of Vector2 vector normals by a specified Matrix.\n        /// </summary>\n        /// <param name=\"sourceArray\">The array of vector normals to transform.</param><param name=\"matrix\">The transform Matrix to apply.</param><param name=\"destinationArray\">An existing array into which the transformed vector normals are written.</param>\n        public static void TransformNormal(Vector2[] sourceArray, ref Matrix matrix, Vector2[] destinationArray)\n        {\n            for (int index = 0; index < sourceArray.Length; ++index)\n            {\n                float num1 = sourceArray[index].X;\n                float num2 = sourceArray[index].Y;\n                destinationArray[index].X = (float)((double)num1 * (double)matrix.M11 + (double)num2 * (double)matrix.M21);\n                destinationArray[index].Y = (float)((double)num1 * (double)matrix.M12 + (double)num2 * (double)matrix.M22);\n            }\n        }\n\n        /// <summary>\n        /// Transforms a specified range in an array of Vector2 vector normals by a specified Matrix and places the results in a specified range in a destination array.\n        /// </summary>\n        /// <param name=\"sourceArray\">The source array.</param><param name=\"sourceIndex\">The index of the first Vector2 to transform in the source array.</param><param name=\"matrix\">The Matrix to apply.</param><param name=\"destinationArray\">The destination array into which the resulting Vector2s are written.</param><param name=\"destinationIndex\">The index of the position in the destination array where the first result Vector2 should be written.</param><param name=\"length\">The number of vector normals to be transformed.</param>\n        public static void TransformNormal(Vector2[] sourceArray, int sourceIndex, ref Matrix matrix, Vector2[] destinationArray, int destinationIndex, int length)\n        {\n            for (; length > 0; --length)\n            {\n                float num1 = sourceArray[sourceIndex].X;\n                float num2 = sourceArray[sourceIndex].Y;\n                destinationArray[destinationIndex].X = (float)((double)num1 * (double)matrix.M11 + (double)num2 * (double)matrix.M21);\n                destinationArray[destinationIndex].Y = (float)((double)num1 * (double)matrix.M12 + (double)num2 * (double)matrix.M22);\n                ++sourceIndex;\n                ++destinationIndex;\n            }\n        }\n\n        /// <summary>\n        /// Transforms an array of Vector2s by a specified Quaternion.\n        /// </summary>\n        /// <param name=\"sourceArray\">The array of Vector2s to transform.</param><param name=\"rotation\">The transform Matrix to use.</param><param name=\"destinationArray\">An existing array into which the transformed Vector2s are written.</param>\n        public static void Transform(Vector2[] sourceArray, ref Quaternion rotation, Vector2[] destinationArray)\n        {\n            float num1 = rotation.X + rotation.X;\n            float num2 = rotation.Y + rotation.Y;\n            float num3 = rotation.Z + rotation.Z;\n            float num4 = rotation.W * num3;\n            float num5 = rotation.X * num1;\n            float num6 = rotation.X * num2;\n            float num7 = rotation.Y * num2;\n            float num8 = rotation.Z * num3;\n            float num9 = 1f - num7 - num8;\n            float num10 = num6 - num4;\n            float num11 = num6 + num4;\n            float num12 = 1f - num5 - num8;\n            for (int index = 0; index < sourceArray.Length; ++index)\n            {\n                float num13 = sourceArray[index].X;\n                float num14 = sourceArray[index].Y;\n                destinationArray[index].X = (float)((double)num13 * (double)num9 + (double)num14 * (double)num10);\n                destinationArray[index].Y = (float)((double)num13 * (double)num11 + (double)num14 * (double)num12);\n            }\n        }\n\n        /// <summary>\n        /// Transforms a specified range in an array of Vector2s by a specified Quaternion and places the results in a specified range in a destination array.\n        /// </summary>\n        /// <param name=\"sourceArray\">The source array.</param><param name=\"sourceIndex\">The index of the first Vector2 to transform in the source array.</param><param name=\"rotation\">The Quaternion rotation to apply.</param><param name=\"destinationArray\">The destination array into which the resulting Vector2s are written.</param><param name=\"destinationIndex\">The index of the position in the destination array where the first result Vector2 should be written.</param><param name=\"length\">The number of Vector2s to be transformed.</param>\n        public static void Transform(Vector2[] sourceArray, int sourceIndex, ref Quaternion rotation, Vector2[] destinationArray, int destinationIndex, int length)\n        {\n            float num1 = rotation.X + rotation.X;\n            float num2 = rotation.Y + rotation.Y;\n            float num3 = rotation.Z + rotation.Z;\n            float num4 = rotation.W * num3;\n            float num5 = rotation.X * num1;\n            float num6 = rotation.X * num2;\n            float num7 = rotation.Y * num2;\n            float num8 = rotation.Z * num3;\n            float num9 = 1f - num7 - num8;\n            float num10 = num6 - num4;\n            float num11 = num6 + num4;\n            float num12 = 1f - num5 - num8;\n            for (; length > 0; --length)\n            {\n                float num13 = sourceArray[sourceIndex].X;\n                float num14 = sourceArray[sourceIndex].Y;\n                destinationArray[destinationIndex].X = (float)((double)num13 * (double)num9 + (double)num14 * (double)num10);\n                destinationArray[destinationIndex].Y = (float)((double)num13 * (double)num11 + (double)num14 * (double)num12);\n                ++sourceIndex;\n                ++destinationIndex;\n            }\n        }\n\n        /// <summary>\n        /// Returns a vector pointing in the opposite direction.\n        /// </summary>\n        /// <param name=\"value\">Source vector.</param>\n        public static Vector2 Negate(Vector2 value)\n        {\n            Vector2 vector2;\n            vector2.X = -value.X;\n            vector2.Y = -value.Y;\n            return vector2;\n        }\n\n        /// <summary>\n        /// Returns a vector pointing in the opposite direction.\n        /// </summary>\n        /// <param name=\"value\">Source vector.</param><param name=\"result\">[OutAttribute] Vector pointing in the opposite direction.</param>\n        public static void Negate(ref Vector2 value, out Vector2 result)\n        {\n            result.X = -value.X;\n            result.Y = -value.Y;\n        }\n\n        /// <summary>\n        /// Adds two vectors.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"value2\">Source vector.</param>\n        public static Vector2 Add(Vector2 value1, Vector2 value2)\n        {\n            Vector2 vector2;\n            vector2.X = value1.X + value2.X;\n            vector2.Y = value1.Y + value2.Y;\n            return vector2;\n        }\n\n        /// <summary>\n        /// Adds two vectors.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"value2\">Source vector.</param><param name=\"result\">[OutAttribute] Sum of the source vectors.</param>\n        public static void Add(ref Vector2 value1, ref Vector2 value2, out Vector2 result)\n        {\n            result.X = value1.X + value2.X;\n            result.Y = value1.Y + value2.Y;\n        }\n\n        /// <summary>\n        /// Subtracts a vector from a vector.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"value2\">Source vector.</param>\n        public static Vector2 Subtract(Vector2 value1, Vector2 value2)\n        {\n            Vector2 vector2;\n            vector2.X = value1.X - value2.X;\n            vector2.Y = value1.Y - value2.Y;\n            return vector2;\n        }\n\n        /// <summary>\n        /// Subtracts a vector from a vector.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"value2\">Source vector.</param><param name=\"result\">[OutAttribute] The result of the subtraction.</param>\n        public static void Subtract(ref Vector2 value1, ref Vector2 value2, out Vector2 result)\n        {\n            result.X = value1.X - value2.X;\n            result.Y = value1.Y - value2.Y;\n        }\n\n        /// <summary>\n        /// Multiplies the components of two vectors by each other.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"value2\">Source vector.</param>\n        public static Vector2 Multiply(Vector2 value1, Vector2 value2)\n        {\n            Vector2 vector2;\n            vector2.X = value1.X * value2.X;\n            vector2.Y = value1.Y * value2.Y;\n            return vector2;\n        }\n\n        /// <summary>\n        /// Multiplies the components of two vectors by each other.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"value2\">Source vector.</param><param name=\"result\">[OutAttribute] The result of the multiplication.</param>\n        public static void Multiply(ref Vector2 value1, ref Vector2 value2, out Vector2 result)\n        {\n            result.X = value1.X * value2.X;\n            result.Y = value1.Y * value2.Y;\n        }\n\n        /// <summary>\n        /// Multiplies a vector by a scalar value.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"scaleFactor\">Scalar value.</param>\n        public static Vector2 Multiply(Vector2 value1, float scaleFactor)\n        {\n            Vector2 vector2;\n            vector2.X = value1.X * scaleFactor;\n            vector2.Y = value1.Y * scaleFactor;\n            return vector2;\n        }\n\n        /// <summary>\n        /// Multiplies a vector by a scalar value.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"scaleFactor\">Scalar value.</param><param name=\"result\">[OutAttribute] The result of the multiplication.</param>\n        public static void Multiply(ref Vector2 value1, float scaleFactor, out Vector2 result)\n        {\n            result.X = value1.X * scaleFactor;\n            result.Y = value1.Y * scaleFactor;\n        }\n\n        /// <summary>\n        /// Divides the components of a vector by the components of another vector.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"value2\">Divisor vector.</param>\n        public static Vector2 Divide(Vector2 value1, Vector2 value2)\n        {\n            Vector2 vector2;\n            vector2.X = value1.X / value2.X;\n            vector2.Y = value1.Y / value2.Y;\n            return vector2;\n        }\n\n        /// <summary>\n        /// Divides the components of a vector by the components of another vector.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"value2\">The divisor.</param><param name=\"result\">[OutAttribute] The result of the division.</param>\n        public static void Divide(ref Vector2 value1, ref Vector2 value2, out Vector2 result)\n        {\n            result.X = value1.X / value2.X;\n            result.Y = value1.Y / value2.Y;\n        }\n\n        /// <summary>\n        /// Divides a vector by a scalar value.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"divider\">The divisor.</param>\n        public static Vector2 Divide(Vector2 value1, float divider)\n        {\n            float num = 1f / divider;\n            Vector2 vector2;\n            vector2.X = value1.X * num;\n            vector2.Y = value1.Y * num;\n            return vector2;\n        }\n\n        /// <summary>\n        /// Divides a vector by a scalar value.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"divider\">The divisor.</param><param name=\"result\">[OutAttribute] The result of the division.</param>\n        public static void Divide(ref Vector2 value1, float divider, out Vector2 result)\n        {\n            float num = 1f / divider;\n            result.X = value1.X * num;\n            result.Y = value1.Y * num;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWarsMath/Vector3.cs",
    "content": "﻿#define NATIVE_SUPPORT\n\nusing System;\nusing System.ComponentModel;\nusing System.Globalization;\nusing System.Runtime.InteropServices;\nusing System.Security;\n\nnamespace MinerWarsMath\n{\n    /// <summary>\n    /// Defines a vector with three components.\n    /// </summary>\n    [Serializable]\n    public struct Vector3 : IEquatable<Vector3>\n    {\n        private static Vector3 _zero = new Vector3();\n        private static Vector3 _one = new Vector3(1f, 1f, 1f);\n        private static Vector3 _unitX = new Vector3(1f, 0.0f, 0.0f);\n        private static Vector3 _unitY = new Vector3(0.0f, 1f, 0.0f);\n        private static Vector3 _unitZ = new Vector3(0.0f, 0.0f, 1f);\n        private static Vector3 _up = new Vector3(0.0f, 1f, 0.0f);\n        private static Vector3 _down = new Vector3(0.0f, -1f, 0.0f);\n        private static Vector3 _right = new Vector3(1f, 0.0f, 0.0f);\n        private static Vector3 _left = new Vector3(-1f, 0.0f, 0.0f);\n        private static Vector3 _forward = new Vector3(0.0f, 0.0f, -1f);\n        private static Vector3 _backward = new Vector3(0.0f, 0.0f, 1f);\n        /// <summary>\n        /// Gets or sets the x-component of the vector.\n        /// </summary>\n        public float X;\n        /// <summary>\n        /// Gets or sets the y-component of the vector.\n        /// </summary>\n        public float Y;\n        /// <summary>\n        /// Gets or sets the z-component of the vector.\n        /// </summary>\n        public float Z;\n\n        /// <summary>\n        /// Returns a Vector3 with all of its components set to zero.\n        /// </summary>\n        public static Vector3 Zero\n        {\n            get\n            {\n                return Vector3._zero;\n            }\n        }\n\n        /// <summary>\n        /// Returns a Vector3 with ones in all of its components.\n        /// </summary>\n        public static Vector3 One\n        {\n            get\n            {\n                return Vector3._one;\n            }\n        }\n\n        /// <summary>\n        /// Returns the x unit Vector3 (1, 0, 0).\n        /// </summary>\n        public static Vector3 UnitX\n        {\n            get\n            {\n                return Vector3._unitX;\n            }\n        }\n\n        /// <summary>\n        /// Returns the y unit Vector3 (0, 1, 0).\n        /// </summary>\n        public static Vector3 UnitY\n        {\n            get\n            {\n                return Vector3._unitY;\n            }\n        }\n\n        /// <summary>\n        /// Returns the z unit Vector3 (0, 0, 1).\n        /// </summary>\n        public static Vector3 UnitZ\n        {\n            get\n            {\n                return Vector3._unitZ;\n            }\n        }\n\n        /// <summary>\n        /// Returns a unit vector designating up (0, 1, 0).\n        /// </summary>\n        public static Vector3 Up\n        {\n            get\n            {\n                return Vector3._up;\n            }\n        }\n\n        /// <summary>\n        /// Returns a unit Vector3 designating down (0, −1, 0).\n        /// </summary>\n        public static Vector3 Down\n        {\n            get\n            {\n                return Vector3._down;\n            }\n        }\n\n        /// <summary>\n        /// Returns a unit Vector3 pointing to the right (1, 0, 0).\n        /// </summary>\n        public static Vector3 Right\n        {\n            get\n            {\n                return Vector3._right;\n            }\n        }\n\n        /// <summary>\n        /// Returns a unit Vector3 designating left (−1, 0, 0).\n        /// </summary>\n        public static Vector3 Left\n        {\n            get\n            {\n                return Vector3._left;\n            }\n        }\n\n        /// <summary>\n        /// Returns a unit Vector3 designating forward in a right-handed coordinate system(0, 0, −1).\n        /// </summary>\n        public static Vector3 Forward\n        {\n            get\n            {\n                return Vector3._forward;\n            }\n        }\n\n        /// <summary>\n        /// Returns a unit Vector3 designating backward in a right-handed coordinate system (0, 0, 1).\n        /// </summary>\n        public static Vector3 Backward\n        {\n            get\n            {\n                return Vector3._backward;\n            }\n        }\n\n        static Vector3()\n        {\n        }\n\n        /// <summary>\n        /// Initializes a new instance of Vector3.\n        /// </summary>\n        /// <param name=\"x\">Initial value for the x-component of the vector.</param><param name=\"y\">Initial value for the y-component of the vector.</param><param name=\"z\">Initial value for the z-component of the vector.</param>\n        public Vector3(float x, float y, float z)\n        {\n            this.X = x;\n            this.Y = y;\n            this.Z = z;\n        }\n\n        /// <summary>\n        /// Creates a new instance of Vector3.\n        /// </summary>\n        /// <param name=\"value\">Value to initialize each component to.</param>\n        public Vector3(float value)\n        {\n            this.X = this.Y = this.Z = value;\n        }\n\n        /// <summary>\n        /// Initializes a new instance of Vector3.\n        /// </summary>\n        /// <param name=\"value\">A vector containing the values to initialize x and y components with.</param><param name=\"z\">Initial value for the z-component of the vector.</param>\n        public Vector3(Vector2 value, float z)\n        {\n            this.X = value.X;\n            this.Y = value.Y;\n            this.Z = z;\n        }\n\n        /// <summary>\n        /// Returns a vector pointing in the opposite direction.\n        /// </summary>\n        /// <param name=\"value\">Source vector.</param>\n        public static Vector3 operator -(Vector3 value)\n        {\n            Vector3 vector3;\n            vector3.X = -value.X;\n            vector3.Y = -value.Y;\n            vector3.Z = -value.Z;\n            return vector3;\n        }\n\n        /// <summary>\n        /// Tests vectors for equality.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"value2\">Source vector.</param>\n        public static bool operator ==(Vector3 value1, Vector3 value2)\n        {\n            if ((double)value1.X == (double)value2.X && (double)value1.Y == (double)value2.Y)\n                return (double)value1.Z == (double)value2.Z;\n            else\n                return false;\n        }\n\n        /// <summary>\n        /// Tests vectors for inequality.\n        /// </summary>\n        /// <param name=\"value1\">Vector to compare.</param><param name=\"value2\">Vector to compare.</param>\n        public static bool operator !=(Vector3 value1, Vector3 value2)\n        {\n            if ((double)value1.X == (double)value2.X && (double)value1.Y == (double)value2.Y)\n                return (double)value1.Z != (double)value2.Z;\n            else\n                return true;\n        }\n\n        /// <summary>\n        /// Adds two vectors.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"value2\">Source vector.</param>\n        public static Vector3 operator +(Vector3 value1, Vector3 value2)\n        {\n            Vector3 vector3;\n            vector3.X = value1.X + value2.X;\n            vector3.Y = value1.Y + value2.Y;\n            vector3.Z = value1.Z + value2.Z;\n            return vector3;\n        }\n\n        /// <summary>\n        /// Subtracts a vector from a vector.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"value2\">Source vector.</param>\n        public static Vector3 operator -(Vector3 value1, Vector3 value2)\n        {\n            Vector3 vector3;\n            vector3.X = value1.X - value2.X;\n            vector3.Y = value1.Y - value2.Y;\n            vector3.Z = value1.Z - value2.Z;\n            return vector3;\n        }\n\n        /// <summary>\n        /// Multiplies the components of two vectors by each other.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"value2\">Source vector.</param>\n        public static Vector3 operator *(Vector3 value1, Vector3 value2)\n        {\n            Vector3 vector3;\n            vector3.X = value1.X * value2.X;\n            vector3.Y = value1.Y * value2.Y;\n            vector3.Z = value1.Z * value2.Z;\n            return vector3;\n        }\n\n        /// <summary>\n        /// Multiplies a vector by a scalar value.\n        /// </summary>\n        /// <param name=\"value\">Source vector.</param><param name=\"scaleFactor\">Scalar value.</param>\n        public static Vector3 operator *(Vector3 value, float scaleFactor)\n        {\n            Vector3 vector3;\n            vector3.X = value.X * scaleFactor;\n            vector3.Y = value.Y * scaleFactor;\n            vector3.Z = value.Z * scaleFactor;\n            return vector3;\n        }\n\n        /// <summary>\n        /// Multiplies a vector by a scalar value.\n        /// </summary>\n        /// <param name=\"scaleFactor\">Scalar value.</param><param name=\"value\">Source vector.</param>\n        public static Vector3 operator *(float scaleFactor, Vector3 value)\n        {\n            Vector3 vector3;\n            vector3.X = value.X * scaleFactor;\n            vector3.Y = value.Y * scaleFactor;\n            vector3.Z = value.Z * scaleFactor;\n            return vector3;\n        }\n\n        /// <summary>\n        /// Divides the components of a vector by the components of another vector.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"value2\">Divisor vector.</param>\n        public static Vector3 operator /(Vector3 value1, Vector3 value2)\n        {\n            Vector3 vector3;\n            vector3.X = value1.X / value2.X;\n            vector3.Y = value1.Y / value2.Y;\n            vector3.Z = value1.Z / value2.Z;\n            return vector3;\n        }\n\n        /// <summary>\n        /// Divides a vector by a scalar value.\n        /// </summary>\n        /// <param name=\"value\">Source vector.</param><param name=\"divider\">The divisor.</param>\n        public static Vector3 operator /(Vector3 value, float divider)\n        {\n            float num = 1f / divider;\n            Vector3 vector3;\n            vector3.X = value.X * num;\n            vector3.Y = value.Y * num;\n            vector3.Z = value.Z * num;\n            return vector3;\n        }\n\n        /// <summary>\n        /// Retrieves a string representation of the current object.\n        /// </summary>\n        public override string ToString()\n        {\n            CultureInfo currentCulture = CultureInfo.CurrentCulture;\n            return string.Format((IFormatProvider)currentCulture, \"{{X:{0} Y:{1} Z:{2}}}\", (object)this.X.ToString((IFormatProvider)currentCulture), (object)this.Y.ToString((IFormatProvider)currentCulture), (object)this.Z.ToString((IFormatProvider)currentCulture));\n        }\n\n        /// <summary>\n        /// Determines whether the specified Object is equal to the Vector3.\n        /// </summary>\n        /// <param name=\"other\">The Vector3 to compare with the current Vector3.</param>\n        public bool Equals(Vector3 other)\n        {\n            if ((double)this.X == (double)other.X && (double)this.Y == (double)other.Y)\n                return (double)this.Z == (double)other.Z;\n            else\n                return false;\n        }\n\n        /// <summary>\n        /// Returns a value that indicates whether the current instance is equal to a specified object.\n        /// </summary>\n        /// <param name=\"obj\">Object to make the comparison with.</param>\n        public override bool Equals(object obj)\n        {\n            bool flag = false;\n            if (obj is Vector3)\n                flag = this.Equals((Vector3)obj);\n            return flag;\n        }\n\n        /// <summary>\n        /// Gets the hash code of the vector object.\n        /// </summary>\n        public override int GetHashCode()\n        {\n            return this.X.GetHashCode() + this.Y.GetHashCode() + this.Z.GetHashCode();\n        }\n\n        /// <summary>\n        /// Calculates the length of the vector.\n        /// </summary>\n        public float Length()\n        {\n            return (float)Math.Sqrt((double)this.X * (double)this.X + (double)this.Y * (double)this.Y + (double)this.Z * (double)this.Z);\n        }\n\n        /// <summary>\n        /// Calculates the length of the vector squared.\n        /// </summary>\n        public float LengthSquared()\n        {\n            return (float)((double)this.X * (double)this.X + (double)this.Y * (double)this.Y + (double)this.Z * (double)this.Z);\n        }\n\n        /// <summary>\n        /// Calculates the distance between two vectors.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"value2\">Source vector.</param>\n        public static float Distance(Vector3 value1, Vector3 value2)\n        {\n            float num1 = value1.X - value2.X;\n            float num2 = value1.Y - value2.Y;\n            float num3 = value1.Z - value2.Z;\n            return (float)Math.Sqrt((double)num1 * (double)num1 + (double)num2 * (double)num2 + (double)num3 * (double)num3);\n        }\n\n        /// <summary>\n        /// Calculates the distance between two vectors.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"value2\">Source vector.</param><param name=\"result\">[OutAttribute] The distance between the vectors.</param>\n        public static void Distance(ref Vector3 value1, ref Vector3 value2, out float result)\n        {\n            float num1 = value1.X - value2.X;\n            float num2 = value1.Y - value2.Y;\n            float num3 = value1.Z - value2.Z;\n            float num4 = (float)((double)num1 * (double)num1 + (double)num2 * (double)num2 + (double)num3 * (double)num3);\n            result = (float)Math.Sqrt((double)num4);\n        }\n\n        /// <summary>\n        /// Calculates the distance between two vectors squared.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"value2\">Source vector.</param>\n        public static float DistanceSquared(Vector3 value1, Vector3 value2)\n        {\n            float num1 = value1.X - value2.X;\n            float num2 = value1.Y - value2.Y;\n            float num3 = value1.Z - value2.Z;\n            return (float)((double)num1 * (double)num1 + (double)num2 * (double)num2 + (double)num3 * (double)num3);\n        }\n\n        /// <summary>\n        /// Calculates the distance between two vectors squared.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"value2\">Source vector.</param><param name=\"result\">[OutAttribute] The distance between the two vectors squared.</param>\n        public static void DistanceSquared(ref Vector3 value1, ref Vector3 value2, out float result)\n        {\n            float num1 = value1.X - value2.X;\n            float num2 = value1.Y - value2.Y;\n            float num3 = value1.Z - value2.Z;\n            result = (float)((double)num1 * (double)num1 + (double)num2 * (double)num2 + (double)num3 * (double)num3);\n        }\n\n        /// <summary>\n        /// Calculates the dot product of two vectors. If the two vectors are unit vectors, the dot product returns a floating point value between -1 and 1 that can be used to determine some properties of the angle between two vectors. For example, it can show whether the vectors are orthogonal, parallel, or have an acute or obtuse angle between them.\n        /// </summary>\n        /// <param name=\"vector1\">Source vector.</param><param name=\"vector2\">Source vector.</param>\n        public static float Dot(Vector3 vector1, Vector3 vector2)\n        {\n            return (float)((double)vector1.X * (double)vector2.X + (double)vector1.Y * (double)vector2.Y + (double)vector1.Z * (double)vector2.Z);\n        }\n\n        /// <summary>\n        /// Calculates the dot product of two vectors and writes the result to a user-specified variable. If the two vectors are unit vectors, the dot product returns a floating point value between -1 and 1 that can be used to determine some properties of the angle between two vectors. For example, it can show whether the vectors are orthogonal, parallel, or have an acute or obtuse angle between them.\n        /// </summary>\n        /// <param name=\"vector1\">Source vector.</param><param name=\"vector2\">Source vector.</param><param name=\"result\">[OutAttribute] The dot product of the two vectors.</param>\n        public static void Dot(ref Vector3 vector1, ref Vector3 vector2, out float result)\n        {\n            result = (float)((double)vector1.X * (double)vector2.X + (double)vector1.Y * (double)vector2.Y + (double)vector1.Z * (double)vector2.Z);\n        }\n\n        /// <summary>\n        /// Turns the current vector into a unit vector. The result is a vector one unit in length pointing in the same direction as the original vector.\n        /// </summary>\n        public void Normalize()\n        {\n            float num = 1f / (float)Math.Sqrt((double)this.X * (double)this.X + (double)this.Y * (double)this.Y + (double)this.Z * (double)this.Z);\n            this.X *= num;\n            this.Y *= num;\n            this.Z *= num;\n        }\n\n        /// <summary>\n        /// Creates a unit vector from the specified vector. The result is a vector one unit in length pointing in the same direction as the original vector.\n        /// </summary>\n        /// <param name=\"value\">The source Vector3.</param>\n        public static Vector3 Normalize(Vector3 value)\n        {\n            float num = 1f / (float)Math.Sqrt((double)value.X * (double)value.X + (double)value.Y * (double)value.Y + (double)value.Z * (double)value.Z);\n            Vector3 vector3;\n            vector3.X = value.X * num;\n            vector3.Y = value.Y * num;\n            vector3.Z = value.Z * num;\n            return vector3;\n        }\n\n        /// <summary>\n        /// Creates a unit vector from the specified vector, writing the result to a user-specified variable. The result is a vector one unit in length pointing in the same direction as the original vector.\n        /// </summary>\n        /// <param name=\"value\">Source vector.</param><param name=\"result\">[OutAttribute] The normalized vector.</param>\n        public static void Normalize(ref Vector3 value, out Vector3 result)\n        {\n            float num = 1f / (float)Math.Sqrt((double)value.X * (double)value.X + (double)value.Y * (double)value.Y + (double)value.Z * (double)value.Z);\n            result.X = value.X * num;\n            result.Y = value.Y * num;\n            result.Z = value.Z * num;\n        }\n\n        /// <summary>\n        /// Calculates the cross product of two vectors.\n        /// </summary>\n        /// <param name=\"vector1\">Source vector.</param><param name=\"vector2\">Source vector.</param>\n        public static Vector3 Cross(Vector3 vector1, Vector3 vector2)\n        {\n            Vector3 vector3;\n            vector3.X = (float)((double)vector1.Y * (double)vector2.Z - (double)vector1.Z * (double)vector2.Y);\n            vector3.Y = (float)((double)vector1.Z * (double)vector2.X - (double)vector1.X * (double)vector2.Z);\n            vector3.Z = (float)((double)vector1.X * (double)vector2.Y - (double)vector1.Y * (double)vector2.X);\n            return vector3;\n        }\n\n        /// <summary>\n        /// Calculates the cross product of two vectors.\n        /// </summary>\n        /// <param name=\"vector1\">Source vector.</param><param name=\"vector2\">Source vector.</param><param name=\"result\">[OutAttribute] The cross product of the vectors.</param>\n        public static void Cross(ref Vector3 vector1, ref Vector3 vector2, out Vector3 result)\n        {\n            float num1 = (float)((double)vector1.Y * (double)vector2.Z - (double)vector1.Z * (double)vector2.Y);\n            float num2 = (float)((double)vector1.Z * (double)vector2.X - (double)vector1.X * (double)vector2.Z);\n            float num3 = (float)((double)vector1.X * (double)vector2.Y - (double)vector1.Y * (double)vector2.X);\n            result.X = num1;\n            result.Y = num2;\n            result.Z = num3;\n        }\n\n        /// <summary>\n        /// Returns the reflection of a vector off a surface that has the specified normal.  Reference page contains code sample.\n        /// </summary>\n        /// <param name=\"vector\">Source vector.</param><param name=\"normal\">Normal of the surface.</param>\n        public static Vector3 Reflect(Vector3 vector, Vector3 normal)\n        {\n            float num = (float)((double)vector.X * (double)normal.X + (double)vector.Y * (double)normal.Y + (double)vector.Z * (double)normal.Z);\n            Vector3 vector3;\n            vector3.X = vector.X - 2f * num * normal.X;\n            vector3.Y = vector.Y - 2f * num * normal.Y;\n            vector3.Z = vector.Z - 2f * num * normal.Z;\n            return vector3;\n        }\n\n        /// <summary>\n        /// Returns the reflection of a vector off a surface that has the specified normal.  Reference page contains code sample.\n        /// </summary>\n        /// <param name=\"vector\">Source vector.</param><param name=\"normal\">Normal of the surface.</param><param name=\"result\">[OutAttribute] The reflected vector.</param>\n        public static void Reflect(ref Vector3 vector, ref Vector3 normal, out Vector3 result)\n        {\n            float num = (float)((double)vector.X * (double)normal.X + (double)vector.Y * (double)normal.Y + (double)vector.Z * (double)normal.Z);\n            result.X = vector.X - 2f * num * normal.X;\n            result.Y = vector.Y - 2f * num * normal.Y;\n            result.Z = vector.Z - 2f * num * normal.Z;\n        }\n\n        /// <summary>\n        /// Returns a vector that contains the lowest value from each matching pair of components.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"value2\">Source vector.</param>\n        public static Vector3 Min(Vector3 value1, Vector3 value2)\n        {\n            Vector3 vector3;\n            vector3.X = (double)value1.X < (double)value2.X ? value1.X : value2.X;\n            vector3.Y = (double)value1.Y < (double)value2.Y ? value1.Y : value2.Y;\n            vector3.Z = (double)value1.Z < (double)value2.Z ? value1.Z : value2.Z;\n            return vector3;\n        }\n\n        /// <summary>\n        /// Returns a vector that contains the lowest value from each matching pair of components.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"value2\">Source vector.</param><param name=\"result\">[OutAttribute] The minimized vector.</param>\n        public static void Min(ref Vector3 value1, ref Vector3 value2, out Vector3 result)\n        {\n            result.X = (double)value1.X < (double)value2.X ? value1.X : value2.X;\n            result.Y = (double)value1.Y < (double)value2.Y ? value1.Y : value2.Y;\n            result.Z = (double)value1.Z < (double)value2.Z ? value1.Z : value2.Z;\n        }\n\n        /// <summary>\n        /// Returns a vector that contains the highest value from each matching pair of components.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"value2\">Source vector.</param>\n        public static Vector3 Max(Vector3 value1, Vector3 value2)\n        {\n            Vector3 vector3;\n            vector3.X = (double)value1.X > (double)value2.X ? value1.X : value2.X;\n            vector3.Y = (double)value1.Y > (double)value2.Y ? value1.Y : value2.Y;\n            vector3.Z = (double)value1.Z > (double)value2.Z ? value1.Z : value2.Z;\n            return vector3;\n        }\n\n        /// <summary>\n        /// Returns a vector that contains the highest value from each matching pair of components.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"value2\">Source vector.</param><param name=\"result\">[OutAttribute] The maximized vector.</param>\n        public static void Max(ref Vector3 value1, ref Vector3 value2, out Vector3 result)\n        {\n            result.X = (double)value1.X > (double)value2.X ? value1.X : value2.X;\n            result.Y = (double)value1.Y > (double)value2.Y ? value1.Y : value2.Y;\n            result.Z = (double)value1.Z > (double)value2.Z ? value1.Z : value2.Z;\n        }\n\n        /// <summary>\n        /// Restricts a value to be within a specified range.\n        /// </summary>\n        /// <param name=\"value1\">The value to clamp.</param><param name=\"min\">The minimum value.</param><param name=\"max\">The maximum value.</param>\n        public static Vector3 Clamp(Vector3 value1, Vector3 min, Vector3 max)\n        {\n            float num1 = value1.X;\n            float num2 = (double)num1 > (double)max.X ? max.X : num1;\n            float num3 = (double)num2 < (double)min.X ? min.X : num2;\n            float num4 = value1.Y;\n            float num5 = (double)num4 > (double)max.Y ? max.Y : num4;\n            float num6 = (double)num5 < (double)min.Y ? min.Y : num5;\n            float num7 = value1.Z;\n            float num8 = (double)num7 > (double)max.Z ? max.Z : num7;\n            float num9 = (double)num8 < (double)min.Z ? min.Z : num8;\n            Vector3 vector3;\n            vector3.X = num3;\n            vector3.Y = num6;\n            vector3.Z = num9;\n            return vector3;\n        }\n\n        /// <summary>\n        /// Restricts a value to be within a specified range.\n        /// </summary>\n        /// <param name=\"value1\">The value to clamp.</param><param name=\"min\">The minimum value.</param><param name=\"max\">The maximum value.</param><param name=\"result\">[OutAttribute] The clamped value.</param>\n        public static void Clamp(ref Vector3 value1, ref Vector3 min, ref Vector3 max, out Vector3 result)\n        {\n            float num1 = value1.X;\n            float num2 = (double)num1 > (double)max.X ? max.X : num1;\n            float num3 = (double)num2 < (double)min.X ? min.X : num2;\n            float num4 = value1.Y;\n            float num5 = (double)num4 > (double)max.Y ? max.Y : num4;\n            float num6 = (double)num5 < (double)min.Y ? min.Y : num5;\n            float num7 = value1.Z;\n            float num8 = (double)num7 > (double)max.Z ? max.Z : num7;\n            float num9 = (double)num8 < (double)min.Z ? min.Z : num8;\n            result.X = num3;\n            result.Y = num6;\n            result.Z = num9;\n        }\n\n        /// <summary>\n        /// Performs a linear interpolation between two vectors.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"value2\">Source vector.</param><param name=\"amount\">Value between 0 and 1 indicating the weight of value2.</param>\n        public static Vector3 Lerp(Vector3 value1, Vector3 value2, float amount)\n        {\n            Vector3 vector3;\n            vector3.X = value1.X + (value2.X - value1.X) * amount;\n            vector3.Y = value1.Y + (value2.Y - value1.Y) * amount;\n            vector3.Z = value1.Z + (value2.Z - value1.Z) * amount;\n            return vector3;\n        }\n\n        /// <summary>\n        /// Performs a linear interpolation between two vectors.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"value2\">Source vector.</param><param name=\"amount\">Value between 0 and 1 indicating the weight of value2.</param><param name=\"result\">[OutAttribute] The result of the interpolation.</param>\n        public static void Lerp(ref Vector3 value1, ref Vector3 value2, float amount, out Vector3 result)\n        {\n            result.X = value1.X + (value2.X - value1.X) * amount;\n            result.Y = value1.Y + (value2.Y - value1.Y) * amount;\n            result.Z = value1.Z + (value2.Z - value1.Z) * amount;\n        }\n\n        /// <summary>\n        /// Returns a Vector3 containing the 3D Cartesian coordinates of a point specified in Barycentric coordinates relative to a 3D triangle.\n        /// </summary>\n        /// <param name=\"value1\">A Vector3 containing the 3D Cartesian coordinates of vertex 1 of the triangle.</param><param name=\"value2\">A Vector3 containing the 3D Cartesian coordinates of vertex 2 of the triangle.</param><param name=\"value3\">A Vector3 containing the 3D Cartesian coordinates of vertex 3 of the triangle.</param><param name=\"amount1\">Barycentric coordinate b2, which expresses the weighting factor toward vertex 2 (specified in value2).</param><param name=\"amount2\">Barycentric coordinate b3, which expresses the weighting factor toward vertex 3 (specified in value3).</param>\n        public static Vector3 Barycentric(Vector3 value1, Vector3 value2, Vector3 value3, float amount1, float amount2)\n        {\n            Vector3 vector3;\n            vector3.X = (float)((double)value1.X + (double)amount1 * ((double)value2.X - (double)value1.X) + (double)amount2 * ((double)value3.X - (double)value1.X));\n            vector3.Y = (float)((double)value1.Y + (double)amount1 * ((double)value2.Y - (double)value1.Y) + (double)amount2 * ((double)value3.Y - (double)value1.Y));\n            vector3.Z = (float)((double)value1.Z + (double)amount1 * ((double)value2.Z - (double)value1.Z) + (double)amount2 * ((double)value3.Z - (double)value1.Z));\n            return vector3;\n        }\n\n        /// <summary>\n        /// Returns a Vector3 containing the 3D Cartesian coordinates of a point specified in barycentric (areal) coordinates relative to a 3D triangle.\n        /// </summary>\n        /// <param name=\"value1\">A Vector3 containing the 3D Cartesian coordinates of vertex 1 of the triangle.</param><param name=\"value2\">A Vector3 containing the 3D Cartesian coordinates of vertex 2 of the triangle.</param><param name=\"value3\">A Vector3 containing the 3D Cartesian coordinates of vertex 3 of the triangle.</param><param name=\"amount1\">Barycentric coordinate b2, which expresses the weighting factor toward vertex 2 (specified in value2).</param><param name=\"amount2\">Barycentric coordinate b3, which expresses the weighting factor toward vertex 3 (specified in value3).</param><param name=\"result\">[OutAttribute] The 3D Cartesian coordinates of the specified point are placed in this Vector3 on exit.</param>\n        public static void Barycentric(ref Vector3 value1, ref Vector3 value2, ref Vector3 value3, float amount1, float amount2, out Vector3 result)\n        {\n            result.X = (float)((double)value1.X + (double)amount1 * ((double)value2.X - (double)value1.X) + (double)amount2 * ((double)value3.X - (double)value1.X));\n            result.Y = (float)((double)value1.Y + (double)amount1 * ((double)value2.Y - (double)value1.Y) + (double)amount2 * ((double)value3.Y - (double)value1.Y));\n            result.Z = (float)((double)value1.Z + (double)amount1 * ((double)value2.Z - (double)value1.Z) + (double)amount2 * ((double)value3.Z - (double)value1.Z));\n        }\n\n        /// <summary>\n        /// Interpolates between two values using a cubic equation.\n        /// </summary>\n        /// <param name=\"value1\">Source value.</param><param name=\"value2\">Source value.</param><param name=\"amount\">Weighting value.</param>\n        public static Vector3 SmoothStep(Vector3 value1, Vector3 value2, float amount)\n        {\n            amount = (double)amount > 1.0 ? 1f : ((double)amount < 0.0 ? 0.0f : amount);\n            amount = (float)((double)amount * (double)amount * (3.0 - 2.0 * (double)amount));\n            Vector3 vector3;\n            vector3.X = value1.X + (value2.X - value1.X) * amount;\n            vector3.Y = value1.Y + (value2.Y - value1.Y) * amount;\n            vector3.Z = value1.Z + (value2.Z - value1.Z) * amount;\n            return vector3;\n        }\n\n        /// <summary>\n        /// Interpolates between two values using a cubic equation.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"value2\">Source vector.</param><param name=\"amount\">Weighting value.</param><param name=\"result\">[OutAttribute] The interpolated value.</param>\n        public static void SmoothStep(ref Vector3 value1, ref Vector3 value2, float amount, out Vector3 result)\n        {\n            amount = (double)amount > 1.0 ? 1f : ((double)amount < 0.0 ? 0.0f : amount);\n            amount = (float)((double)amount * (double)amount * (3.0 - 2.0 * (double)amount));\n            result.X = value1.X + (value2.X - value1.X) * amount;\n            result.Y = value1.Y + (value2.Y - value1.Y) * amount;\n            result.Z = value1.Z + (value2.Z - value1.Z) * amount;\n        }\n\n        /// <summary>\n        /// Performs a Catmull-Rom interpolation using the specified positions.\n        /// </summary>\n        /// <param name=\"value1\">The first position in the interpolation.</param><param name=\"value2\">The second position in the interpolation.</param><param name=\"value3\">The third position in the interpolation.</param><param name=\"value4\">The fourth position in the interpolation.</param><param name=\"amount\">Weighting factor.</param>\n        public static Vector3 CatmullRom(Vector3 value1, Vector3 value2, Vector3 value3, Vector3 value4, float amount)\n        {\n            float num1 = amount * amount;\n            float num2 = amount * num1;\n            Vector3 vector3;\n            vector3.X = (float)(0.5 * (2.0 * (double)value2.X + (-(double)value1.X + (double)value3.X) * (double)amount + (2.0 * (double)value1.X - 5.0 * (double)value2.X + 4.0 * (double)value3.X - (double)value4.X) * (double)num1 + (-(double)value1.X + 3.0 * (double)value2.X - 3.0 * (double)value3.X + (double)value4.X) * (double)num2));\n            vector3.Y = (float)(0.5 * (2.0 * (double)value2.Y + (-(double)value1.Y + (double)value3.Y) * (double)amount + (2.0 * (double)value1.Y - 5.0 * (double)value2.Y + 4.0 * (double)value3.Y - (double)value4.Y) * (double)num1 + (-(double)value1.Y + 3.0 * (double)value2.Y - 3.0 * (double)value3.Y + (double)value4.Y) * (double)num2));\n            vector3.Z = (float)(0.5 * (2.0 * (double)value2.Z + (-(double)value1.Z + (double)value3.Z) * (double)amount + (2.0 * (double)value1.Z - 5.0 * (double)value2.Z + 4.0 * (double)value3.Z - (double)value4.Z) * (double)num1 + (-(double)value1.Z + 3.0 * (double)value2.Z - 3.0 * (double)value3.Z + (double)value4.Z) * (double)num2));\n            return vector3;\n        }\n\n        /// <summary>\n        /// Performs a Catmull-Rom interpolation using the specified positions.\n        /// </summary>\n        /// <param name=\"value1\">The first position in the interpolation.</param><param name=\"value2\">The second position in the interpolation.</param><param name=\"value3\">The third position in the interpolation.</param><param name=\"value4\">The fourth position in the interpolation.</param><param name=\"amount\">Weighting factor.</param><param name=\"result\">[OutAttribute] A vector that is the result of the Catmull-Rom interpolation.</param>\n        public static void CatmullRom(ref Vector3 value1, ref Vector3 value2, ref Vector3 value3, ref Vector3 value4, float amount, out Vector3 result)\n        {\n            float num1 = amount * amount;\n            float num2 = amount * num1;\n            result.X = (float)(0.5 * (2.0 * (double)value2.X + (-(double)value1.X + (double)value3.X) * (double)amount + (2.0 * (double)value1.X - 5.0 * (double)value2.X + 4.0 * (double)value3.X - (double)value4.X) * (double)num1 + (-(double)value1.X + 3.0 * (double)value2.X - 3.0 * (double)value3.X + (double)value4.X) * (double)num2));\n            result.Y = (float)(0.5 * (2.0 * (double)value2.Y + (-(double)value1.Y + (double)value3.Y) * (double)amount + (2.0 * (double)value1.Y - 5.0 * (double)value2.Y + 4.0 * (double)value3.Y - (double)value4.Y) * (double)num1 + (-(double)value1.Y + 3.0 * (double)value2.Y - 3.0 * (double)value3.Y + (double)value4.Y) * (double)num2));\n            result.Z = (float)(0.5 * (2.0 * (double)value2.Z + (-(double)value1.Z + (double)value3.Z) * (double)amount + (2.0 * (double)value1.Z - 5.0 * (double)value2.Z + 4.0 * (double)value3.Z - (double)value4.Z) * (double)num1 + (-(double)value1.Z + 3.0 * (double)value2.Z - 3.0 * (double)value3.Z + (double)value4.Z) * (double)num2));\n        }\n\n        /// <summary>\n        /// Performs a Hermite spline interpolation.\n        /// </summary>\n        /// <param name=\"value1\">Source position vector.</param><param name=\"tangent1\">Source tangent vector.</param><param name=\"value2\">Source position vector.</param><param name=\"tangent2\">Source tangent vector.</param><param name=\"amount\">Weighting factor.</param>\n        public static Vector3 Hermite(Vector3 value1, Vector3 tangent1, Vector3 value2, Vector3 tangent2, float amount)\n        {\n            float num1 = amount * amount;\n            float num2 = amount * num1;\n            float num3 = (float)(2.0 * (double)num2 - 3.0 * (double)num1 + 1.0);\n            float num4 = (float)(-2.0 * (double)num2 + 3.0 * (double)num1);\n            float num5 = num2 - 2f * num1 + amount;\n            float num6 = num2 - num1;\n            Vector3 vector3;\n            vector3.X = (float)((double)value1.X * (double)num3 + (double)value2.X * (double)num4 + (double)tangent1.X * (double)num5 + (double)tangent2.X * (double)num6);\n            vector3.Y = (float)((double)value1.Y * (double)num3 + (double)value2.Y * (double)num4 + (double)tangent1.Y * (double)num5 + (double)tangent2.Y * (double)num6);\n            vector3.Z = (float)((double)value1.Z * (double)num3 + (double)value2.Z * (double)num4 + (double)tangent1.Z * (double)num5 + (double)tangent2.Z * (double)num6);\n            return vector3;\n        }\n\n        /// <summary>\n        /// Performs a Hermite spline interpolation.\n        /// </summary>\n        /// <param name=\"value1\">Source position vector.</param><param name=\"tangent1\">Source tangent vector.</param><param name=\"value2\">Source position vector.</param><param name=\"tangent2\">Source tangent vector.</param><param name=\"amount\">Weighting factor.</param><param name=\"result\">[OutAttribute] The result of the Hermite spline interpolation.</param>\n        public static void Hermite(ref Vector3 value1, ref Vector3 tangent1, ref Vector3 value2, ref Vector3 tangent2, float amount, out Vector3 result)\n        {\n            float num1 = amount * amount;\n            float num2 = amount * num1;\n            float num3 = (float)(2.0 * (double)num2 - 3.0 * (double)num1 + 1.0);\n            float num4 = (float)(-2.0 * (double)num2 + 3.0 * (double)num1);\n            float num5 = num2 - 2f * num1 + amount;\n            float num6 = num2 - num1;\n            result.X = (float)((double)value1.X * (double)num3 + (double)value2.X * (double)num4 + (double)tangent1.X * (double)num5 + (double)tangent2.X * (double)num6);\n            result.Y = (float)((double)value1.Y * (double)num3 + (double)value2.Y * (double)num4 + (double)tangent1.Y * (double)num5 + (double)tangent2.Y * (double)num6);\n            result.Z = (float)((double)value1.Z * (double)num3 + (double)value2.Z * (double)num4 + (double)tangent1.Z * (double)num5 + (double)tangent2.Z * (double)num6);\n        }\n\n        /// <summary>\n        /// Transforms a 3D vector by the given matrix.\n        /// </summary>\n        /// <param name=\"position\">The source vector.</param><param name=\"matrix\">The transformation matrix.</param>\n        public static Vector3 Transform(Vector3 position, Matrix matrix)\n        {\n#if NATIVE_SUPPORT\n            Vector3 vector3;\n            Transform_Native(ref position, ref matrix, out vector3);\n            return vector3;\n#else\n            float num1 = (float)((double)position.X * (double)matrix.M11 + (double)position.Y * (double)matrix.M21 + (double)position.Z * (double)matrix.M31) + matrix.M41;\n            float num2 = (float)((double)position.X * (double)matrix.M12 + (double)position.Y * (double)matrix.M22 + (double)position.Z * (double)matrix.M32) + matrix.M42;\n            float num3 = (float)((double)position.X * (double)matrix.M13 + (double)position.Y * (double)matrix.M23 + (double)position.Z * (double)matrix.M33) + matrix.M43;\n            Vector3 vector3;\n            vector3.X = num1;\n            vector3.Y = num2;\n            vector3.Z = num3;\n            return vector3;\n#endif\n        }\n\n        /// <summary>\n        /// Transforms a Vector3 by the given Matrix.\n        /// </summary>\n        /// <param name=\"position\">The source Vector3.</param><param name=\"matrix\">The transformation Matrix.</param><param name=\"result\">[OutAttribute] The transformed vector.</param>\n        public static void Transform(ref Vector3 position, ref Matrix matrix, out Vector3 result)\n        {\n#if NATIVE_SUPPORT\n            Transform_Native(ref position, ref matrix, out result);\n#else\n            float num1 = (float)((double)position.X * (double)matrix.M11 + (double)position.Y * (double)matrix.M21 + (double)position.Z * (double)matrix.M31) + matrix.M41;\n            float num2 = (float)((double)position.X * (double)matrix.M12 + (double)position.Y * (double)matrix.M22 + (double)position.Z * (double)matrix.M32) + matrix.M42;\n            float num3 = (float)((double)position.X * (double)matrix.M13 + (double)position.Y * (double)matrix.M23 + (double)position.Z * (double)matrix.M33) + matrix.M43;\n            result.X = num1;\n            result.Y = num2;\n            result.Z = num3;\n#endif\n        }\n\n\n\n\n        // Transform (x, y, z, 1) by matrix, project result back into w=1.\n        //D3DXVECTOR3* WINAPI D3DXVec3TransformCoord\n        //  ( D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV, CONST D3DXMATRIX *pM );\n\n        /// <summary>Native Interop Function</summary>\n        [DllImport(\"d3dx9_43.dll\", EntryPoint = \"D3DXVec3TransformCoord\", CallingConvention = CallingConvention.StdCall, PreserveSig = true), SuppressUnmanagedCodeSecurityAttribute]\n        private unsafe extern static Vector3* D3DXVec3TransformCoord_([Out] Vector3* pOut, [In] Vector3* pV,[In] Matrix* pM);\n\n        public static void Transform_Native(ref Vector3 position, ref Matrix matrix, out Vector3 result)\n        {\n            unsafe\n            {\n                fixed (Vector3* resultRef_ = &result)\n                fixed (Vector3* posRef_ = &position)\n                fixed (Matrix* matRef_ = &matrix)\n\n                    D3DXVec3TransformCoord_(resultRef_, posRef_, matRef_);\n            }\n        }\n\n\n\n\n        /// <summary>\n        /// Transforms a 3D vector normal by a matrix.\n        /// </summary>\n        /// <param name=\"normal\">The source vector.</param><param name=\"matrix\">The transformation matrix.</param>\n        public static Vector3 TransformNormal(Vector3 normal, Matrix matrix)\n        {\n            float num1 = (float)((double)normal.X * (double)matrix.M11 + (double)normal.Y * (double)matrix.M21 + (double)normal.Z * (double)matrix.M31);\n            float num2 = (float)((double)normal.X * (double)matrix.M12 + (double)normal.Y * (double)matrix.M22 + (double)normal.Z * (double)matrix.M32);\n            float num3 = (float)((double)normal.X * (double)matrix.M13 + (double)normal.Y * (double)matrix.M23 + (double)normal.Z * (double)matrix.M33);\n            Vector3 vector3;\n            vector3.X = num1;\n            vector3.Y = num2;\n            vector3.Z = num3;\n            return vector3;\n        }\n\n        /// <summary>\n        /// Transforms a vector normal by a matrix.\n        /// </summary>\n        /// <param name=\"normal\">The source vector.</param><param name=\"matrix\">The transformation Matrix.</param><param name=\"result\">[OutAttribute] The Vector3 resulting from the transformation.</param>\n        public static void TransformNormal(ref Vector3 normal, ref Matrix matrix, out Vector3 result)\n        {\n            float num1 = (float)((double)normal.X * (double)matrix.M11 + (double)normal.Y * (double)matrix.M21 + (double)normal.Z * (double)matrix.M31);\n            float num2 = (float)((double)normal.X * (double)matrix.M12 + (double)normal.Y * (double)matrix.M22 + (double)normal.Z * (double)matrix.M32);\n            float num3 = (float)((double)normal.X * (double)matrix.M13 + (double)normal.Y * (double)matrix.M23 + (double)normal.Z * (double)matrix.M33);\n            result.X = num1;\n            result.Y = num2;\n            result.Z = num3;\n        }\n\n        /// <summary>\n        /// Transforms a Vector3 by a specified Quaternion rotation.\n        /// </summary>\n        /// <param name=\"value\">The Vector3 to rotate.</param><param name=\"rotation\">The Quaternion rotation to apply.</param>\n        public static Vector3 Transform(Vector3 value, Quaternion rotation)\n        {\n            float num1 = rotation.X + rotation.X;\n            float num2 = rotation.Y + rotation.Y;\n            float num3 = rotation.Z + rotation.Z;\n            float num4 = rotation.W * num1;\n            float num5 = rotation.W * num2;\n            float num6 = rotation.W * num3;\n            float num7 = rotation.X * num1;\n            float num8 = rotation.X * num2;\n            float num9 = rotation.X * num3;\n            float num10 = rotation.Y * num2;\n            float num11 = rotation.Y * num3;\n            float num12 = rotation.Z * num3;\n            float num13 = (float)((double)value.X * (1.0 - (double)num10 - (double)num12) + (double)value.Y * ((double)num8 - (double)num6) + (double)value.Z * ((double)num9 + (double)num5));\n            float num14 = (float)((double)value.X * ((double)num8 + (double)num6) + (double)value.Y * (1.0 - (double)num7 - (double)num12) + (double)value.Z * ((double)num11 - (double)num4));\n            float num15 = (float)((double)value.X * ((double)num9 - (double)num5) + (double)value.Y * ((double)num11 + (double)num4) + (double)value.Z * (1.0 - (double)num7 - (double)num10));\n            Vector3 vector3;\n            vector3.X = num13;\n            vector3.Y = num14;\n            vector3.Z = num15;\n            return vector3;\n        }\n\n        /// <summary>\n        /// Transforms a Vector3 by a specified Quaternion rotation.\n        /// </summary>\n        /// <param name=\"value\">The Vector3 to rotate.</param><param name=\"rotation\">The Quaternion rotation to apply.</param><param name=\"result\">[OutAttribute] An existing Vector3 filled in with the results of the rotation.</param>\n        public static void Transform(ref Vector3 value, ref Quaternion rotation, out Vector3 result)\n        {\n            float num1 = rotation.X + rotation.X;\n            float num2 = rotation.Y + rotation.Y;\n            float num3 = rotation.Z + rotation.Z;\n            float num4 = rotation.W * num1;\n            float num5 = rotation.W * num2;\n            float num6 = rotation.W * num3;\n            float num7 = rotation.X * num1;\n            float num8 = rotation.X * num2;\n            float num9 = rotation.X * num3;\n            float num10 = rotation.Y * num2;\n            float num11 = rotation.Y * num3;\n            float num12 = rotation.Z * num3;\n            float num13 = (float)((double)value.X * (1.0 - (double)num10 - (double)num12) + (double)value.Y * ((double)num8 - (double)num6) + (double)value.Z * ((double)num9 + (double)num5));\n            float num14 = (float)((double)value.X * ((double)num8 + (double)num6) + (double)value.Y * (1.0 - (double)num7 - (double)num12) + (double)value.Z * ((double)num11 - (double)num4));\n            float num15 = (float)((double)value.X * ((double)num9 - (double)num5) + (double)value.Y * ((double)num11 + (double)num4) + (double)value.Z * (1.0 - (double)num7 - (double)num10));\n            result.X = num13;\n            result.Y = num14;\n            result.Z = num15;\n        }\n\n        /// <summary>\n        /// Transforms a source array of Vector3s by a specified Matrix and writes the results to an existing destination array.\n        /// </summary>\n        /// <param name=\"sourceArray\">The source array.</param><param name=\"matrix\">The transform Matrix to apply.</param><param name=\"destinationArray\">An existing destination array into which the transformed Vector3s are written.</param>\n        public static void Transform(Vector3[] sourceArray, ref Matrix matrix, Vector3[] destinationArray)\n        {\n            for (int index = 0; index < sourceArray.Length; ++index)\n            {\n                float num1 = sourceArray[index].X;\n                float num2 = sourceArray[index].Y;\n                float num3 = sourceArray[index].Z;\n                destinationArray[index].X = (float)((double)num1 * (double)matrix.M11 + (double)num2 * (double)matrix.M21 + (double)num3 * (double)matrix.M31) + matrix.M41;\n                destinationArray[index].Y = (float)((double)num1 * (double)matrix.M12 + (double)num2 * (double)matrix.M22 + (double)num3 * (double)matrix.M32) + matrix.M42;\n                destinationArray[index].Z = (float)((double)num1 * (double)matrix.M13 + (double)num2 * (double)matrix.M23 + (double)num3 * (double)matrix.M33) + matrix.M43;\n            }\n        }\n\n        /// <summary>\n        /// Applies a specified transform Matrix to a specified range of an array of Vector3s and writes the results into a specified range of a destination array.\n        /// </summary>\n        /// <param name=\"sourceArray\">The source array.</param><param name=\"sourceIndex\">The index in the source array at which to start.</param><param name=\"matrix\">The transform Matrix to apply.</param><param name=\"destinationArray\">The existing destination array.</param><param name=\"destinationIndex\">The index in the destination array at which to start.</param><param name=\"length\">The number of Vector3s to transform.</param>\n        public static void Transform(Vector3[] sourceArray, int sourceIndex, ref Matrix matrix, Vector3[] destinationArray, int destinationIndex, int length)\n        {\n            for (; length > 0; --length)\n            {\n                float num1 = sourceArray[sourceIndex].X;\n                float num2 = sourceArray[sourceIndex].Y;\n                float num3 = sourceArray[sourceIndex].Z;\n                destinationArray[destinationIndex].X = (float)((double)num1 * (double)matrix.M11 + (double)num2 * (double)matrix.M21 + (double)num3 * (double)matrix.M31) + matrix.M41;\n                destinationArray[destinationIndex].Y = (float)((double)num1 * (double)matrix.M12 + (double)num2 * (double)matrix.M22 + (double)num3 * (double)matrix.M32) + matrix.M42;\n                destinationArray[destinationIndex].Z = (float)((double)num1 * (double)matrix.M13 + (double)num2 * (double)matrix.M23 + (double)num3 * (double)matrix.M33) + matrix.M43;\n                ++sourceIndex;\n                ++destinationIndex;\n            }\n        }\n\n        /// <summary>\n        /// Transforms an array of 3D vector normals by a specified Matrix.\n        /// </summary>\n        /// <param name=\"sourceArray\">The array of Vector3 normals to transform.</param><param name=\"matrix\">The transform matrix to apply.</param><param name=\"destinationArray\">An existing Vector3 array into which the results of the transforms are written.</param>\n        public static void TransformNormal(Vector3[] sourceArray, ref Matrix matrix, Vector3[] destinationArray)\n        {\n            for (int index = 0; index < sourceArray.Length; ++index)\n            {\n                float num1 = sourceArray[index].X;\n                float num2 = sourceArray[index].Y;\n                float num3 = sourceArray[index].Z;\n                destinationArray[index].X = (float)((double)num1 * (double)matrix.M11 + (double)num2 * (double)matrix.M21 + (double)num3 * (double)matrix.M31);\n                destinationArray[index].Y = (float)((double)num1 * (double)matrix.M12 + (double)num2 * (double)matrix.M22 + (double)num3 * (double)matrix.M32);\n                destinationArray[index].Z = (float)((double)num1 * (double)matrix.M13 + (double)num2 * (double)matrix.M23 + (double)num3 * (double)matrix.M33);\n            }\n        }\n\n        /// <summary>\n        /// Transforms a specified range in an array of 3D vector normals by a specified Matrix and writes the results to a specified range in a destination array.\n        /// </summary>\n        /// <param name=\"sourceArray\">The source array of Vector3 normals.</param><param name=\"sourceIndex\">The starting index in the source array.</param><param name=\"matrix\">The transform Matrix to apply.</param><param name=\"destinationArray\">The destination Vector3 array.</param><param name=\"destinationIndex\">The starting index in the destination array.</param><param name=\"length\">The number of vectors to transform.</param>\n        public static void TransformNormal(Vector3[] sourceArray, int sourceIndex, ref Matrix matrix, Vector3[] destinationArray, int destinationIndex, int length)\n        {\n            for (; length > 0; --length)\n            {\n                float num1 = sourceArray[sourceIndex].X;\n                float num2 = sourceArray[sourceIndex].Y;\n                float num3 = sourceArray[sourceIndex].Z;\n                destinationArray[destinationIndex].X = (float)((double)num1 * (double)matrix.M11 + (double)num2 * (double)matrix.M21 + (double)num3 * (double)matrix.M31);\n                destinationArray[destinationIndex].Y = (float)((double)num1 * (double)matrix.M12 + (double)num2 * (double)matrix.M22 + (double)num3 * (double)matrix.M32);\n                destinationArray[destinationIndex].Z = (float)((double)num1 * (double)matrix.M13 + (double)num2 * (double)matrix.M23 + (double)num3 * (double)matrix.M33);\n                ++sourceIndex;\n                ++destinationIndex;\n            }\n        }\n\n        /// <summary>\n        /// Transforms a source array of Vector3s by a specified Quaternion rotation and writes the results to an existing destination array.\n        /// </summary>\n        /// <param name=\"sourceArray\">The source array.</param><param name=\"rotation\">The Quaternion rotation to apply.</param><param name=\"destinationArray\">An existing destination array into which the transformed Vector3s are written.</param>\n        public static void Transform(Vector3[] sourceArray, ref Quaternion rotation, Vector3[] destinationArray)\n        {\n            float num1 = rotation.X + rotation.X;\n            float num2 = rotation.Y + rotation.Y;\n            float num3 = rotation.Z + rotation.Z;\n            float num4 = rotation.W * num1;\n            float num5 = rotation.W * num2;\n            float num6 = rotation.W * num3;\n            float num7 = rotation.X * num1;\n            float num8 = rotation.X * num2;\n            float num9 = rotation.X * num3;\n            float num10 = rotation.Y * num2;\n            float num11 = rotation.Y * num3;\n            float num12 = rotation.Z * num3;\n            float num13 = 1f - num10 - num12;\n            float num14 = num8 - num6;\n            float num15 = num9 + num5;\n            float num16 = num8 + num6;\n            float num17 = 1f - num7 - num12;\n            float num18 = num11 - num4;\n            float num19 = num9 - num5;\n            float num20 = num11 + num4;\n            float num21 = 1f - num7 - num10;\n            for (int index = 0; index < sourceArray.Length; ++index)\n            {\n                float num22 = sourceArray[index].X;\n                float num23 = sourceArray[index].Y;\n                float num24 = sourceArray[index].Z;\n                destinationArray[index].X = (float)((double)num22 * (double)num13 + (double)num23 * (double)num14 + (double)num24 * (double)num15);\n                destinationArray[index].Y = (float)((double)num22 * (double)num16 + (double)num23 * (double)num17 + (double)num24 * (double)num18);\n                destinationArray[index].Z = (float)((double)num22 * (double)num19 + (double)num23 * (double)num20 + (double)num24 * (double)num21);\n            }\n        }\n\n        /// <summary>\n        /// Applies a specified Quaternion rotation to a specified range of an array of Vector3s and writes the results into a specified range of a destination array.\n        /// </summary>\n        /// <param name=\"sourceArray\">The source array.</param><param name=\"sourceIndex\">The index in the source array at which to start.</param><param name=\"rotation\">The Quaternion rotation to apply.</param><param name=\"destinationArray\">The existing destination array.</param><param name=\"destinationIndex\">The index in the destination array at which to start.</param><param name=\"length\">The number of Vector3s to transform.</param>\n        public static void Transform(Vector3[] sourceArray, int sourceIndex, ref Quaternion rotation, Vector3[] destinationArray, int destinationIndex, int length)\n        {\n            float num1 = rotation.X + rotation.X;\n            float num2 = rotation.Y + rotation.Y;\n            float num3 = rotation.Z + rotation.Z;\n            float num4 = rotation.W * num1;\n            float num5 = rotation.W * num2;\n            float num6 = rotation.W * num3;\n            float num7 = rotation.X * num1;\n            float num8 = rotation.X * num2;\n            float num9 = rotation.X * num3;\n            float num10 = rotation.Y * num2;\n            float num11 = rotation.Y * num3;\n            float num12 = rotation.Z * num3;\n            float num13 = 1f - num10 - num12;\n            float num14 = num8 - num6;\n            float num15 = num9 + num5;\n            float num16 = num8 + num6;\n            float num17 = 1f - num7 - num12;\n            float num18 = num11 - num4;\n            float num19 = num9 - num5;\n            float num20 = num11 + num4;\n            float num21 = 1f - num7 - num10;\n            for (; length > 0; --length)\n            {\n                float num22 = sourceArray[sourceIndex].X;\n                float num23 = sourceArray[sourceIndex].Y;\n                float num24 = sourceArray[sourceIndex].Z;\n                destinationArray[destinationIndex].X = (float)((double)num22 * (double)num13 + (double)num23 * (double)num14 + (double)num24 * (double)num15);\n                destinationArray[destinationIndex].Y = (float)((double)num22 * (double)num16 + (double)num23 * (double)num17 + (double)num24 * (double)num18);\n                destinationArray[destinationIndex].Z = (float)((double)num22 * (double)num19 + (double)num23 * (double)num20 + (double)num24 * (double)num21);\n                ++sourceIndex;\n                ++destinationIndex;\n            }\n        }\n\n        /// <summary>\n        /// Returns a vector pointing in the opposite direction.\n        /// </summary>\n        /// <param name=\"value\">Source vector.</param>\n        public static Vector3 Negate(Vector3 value)\n        {\n            Vector3 vector3;\n            vector3.X = -value.X;\n            vector3.Y = -value.Y;\n            vector3.Z = -value.Z;\n            return vector3;\n        }\n\n        /// <summary>\n        /// Returns a vector pointing in the opposite direction.\n        /// </summary>\n        /// <param name=\"value\">Source vector.</param><param name=\"result\">[OutAttribute] Vector pointing in the opposite direction.</param>\n        public static void Negate(ref Vector3 value, out Vector3 result)\n        {\n            result.X = -value.X;\n            result.Y = -value.Y;\n            result.Z = -value.Z;\n        }\n\n        /// <summary>\n        /// Adds two vectors.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"value2\">Source vector.</param>\n        public static Vector3 Add(Vector3 value1, Vector3 value2)\n        {\n            Vector3 vector3;\n            vector3.X = value1.X + value2.X;\n            vector3.Y = value1.Y + value2.Y;\n            vector3.Z = value1.Z + value2.Z;\n            return vector3;\n        }\n\n        /// <summary>\n        /// Adds two vectors.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"value2\">Source vector.</param><param name=\"result\">[OutAttribute] Sum of the source vectors.</param>\n        public static void Add(ref Vector3 value1, ref Vector3 value2, out Vector3 result)\n        {\n            result.X = value1.X + value2.X;\n            result.Y = value1.Y + value2.Y;\n            result.Z = value1.Z + value2.Z;\n        }\n\n        /// <summary>\n        /// Subtracts a vector from a vector.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"value2\">Source vector.</param>\n        public static Vector3 Subtract(Vector3 value1, Vector3 value2)\n        {\n            Vector3 vector3;\n            vector3.X = value1.X - value2.X;\n            vector3.Y = value1.Y - value2.Y;\n            vector3.Z = value1.Z - value2.Z;\n            return vector3;\n        }\n\n        /// <summary>\n        /// Subtracts a vector from a vector.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"value2\">Source vector.</param><param name=\"result\">[OutAttribute] The result of the subtraction.</param>\n        public static void Subtract(ref Vector3 value1, ref Vector3 value2, out Vector3 result)\n        {\n            result.X = value1.X - value2.X;\n            result.Y = value1.Y - value2.Y;\n            result.Z = value1.Z - value2.Z;\n        }\n\n        /// <summary>\n        /// Multiplies the components of two vectors by each other.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"value2\">Source vector.</param>\n        public static Vector3 Multiply(Vector3 value1, Vector3 value2)\n        {\n            Vector3 vector3;\n            vector3.X = value1.X * value2.X;\n            vector3.Y = value1.Y * value2.Y;\n            vector3.Z = value1.Z * value2.Z;\n            return vector3;\n        }\n\n        /// <summary>\n        /// Multiplies the components of two vectors by each other.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"value2\">Source vector.</param><param name=\"result\">[OutAttribute] The result of the multiplication.</param>\n        public static void Multiply(ref Vector3 value1, ref Vector3 value2, out Vector3 result)\n        {\n            result.X = value1.X * value2.X;\n            result.Y = value1.Y * value2.Y;\n            result.Z = value1.Z * value2.Z;\n        }\n\n        /// <summary>\n        /// Multiplies a vector by a scalar value.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"scaleFactor\">Scalar value.</param>\n        public static Vector3 Multiply(Vector3 value1, float scaleFactor)\n        {\n            Vector3 vector3;\n            vector3.X = value1.X * scaleFactor;\n            vector3.Y = value1.Y * scaleFactor;\n            vector3.Z = value1.Z * scaleFactor;\n            return vector3;\n        }\n\n        /// <summary>\n        /// Multiplies a vector by a scalar value.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"scaleFactor\">Scalar value.</param><param name=\"result\">[OutAttribute] The result of the multiplication.</param>\n        public static void Multiply(ref Vector3 value1, float scaleFactor, out Vector3 result)\n        {\n            result.X = value1.X * scaleFactor;\n            result.Y = value1.Y * scaleFactor;\n            result.Z = value1.Z * scaleFactor;\n        }\n\n        /// <summary>\n        /// Divides the components of a vector by the components of another vector.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"value2\">Divisor vector.</param>\n        public static Vector3 Divide(Vector3 value1, Vector3 value2)\n        {\n            Vector3 vector3;\n            vector3.X = value1.X / value2.X;\n            vector3.Y = value1.Y / value2.Y;\n            vector3.Z = value1.Z / value2.Z;\n            return vector3;\n        }\n\n        /// <summary>\n        /// Divides the components of a vector by the components of another vector.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"value2\">The divisor.</param><param name=\"result\">[OutAttribute] The result of the division.</param>\n        public static void Divide(ref Vector3 value1, ref Vector3 value2, out Vector3 result)\n        {\n            result.X = value1.X / value2.X;\n            result.Y = value1.Y / value2.Y;\n            result.Z = value1.Z / value2.Z;\n        }\n\n        /// <summary>\n        /// Divides a vector by a scalar value.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"value2\">The divisor.</param>\n        public static Vector3 Divide(Vector3 value1, float value2)\n        {\n            float num = 1f / value2;\n            Vector3 vector3;\n            vector3.X = value1.X * num;\n            vector3.Y = value1.Y * num;\n            vector3.Z = value1.Z * num;\n            return vector3;\n        }\n\n        /// <summary>\n        /// Divides a vector by a scalar value.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"value2\">The divisor.</param><param name=\"result\">[OutAttribute] The result of the division.</param>\n        public static void Divide(ref Vector3 value1, float value2, out Vector3 result)\n        {\n            float num = 1f / value2;\n            result.X = value1.X * num;\n            result.Y = value1.Y * num;\n            result.Z = value1.Z * num;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWarsMath/Vector4.cs",
    "content": "﻿using System;\nusing System.ComponentModel;\nusing System.Globalization;\n\nnamespace MinerWarsMath\n{\n    /// <summary>\n    /// Defines a vector with four components.\n    /// </summary>\n    [Serializable]\n    public struct Vector4 : IEquatable<Vector4>\n    {\n        private static Vector4 _zero = new Vector4();\n        private static Vector4 _one = new Vector4(1f, 1f, 1f, 1f);\n        private static Vector4 _unitX = new Vector4(1f, 0.0f, 0.0f, 0.0f);\n        private static Vector4 _unitY = new Vector4(0.0f, 1f, 0.0f, 0.0f);\n        private static Vector4 _unitZ = new Vector4(0.0f, 0.0f, 1f, 0.0f);\n        private static Vector4 _unitW = new Vector4(0.0f, 0.0f, 0.0f, 1f);\n        /// <summary>\n        /// Gets or sets the x-component of the vector.\n        /// </summary>\n        public float X;\n        /// <summary>\n        /// Gets or sets the y-component of the vector.\n        /// </summary>\n        public float Y;\n        /// <summary>\n        /// Gets or sets the z-component of the vector.\n        /// </summary>\n        public float Z;\n        /// <summary>\n        /// Gets or sets the w-component of the vector.\n        /// </summary>\n        public float W;\n\n        /// <summary>\n        /// Returns a Vector4 with all of its components set to zero.\n        /// </summary>\n        public static Vector4 Zero\n        {\n            get\n            {\n                return Vector4._zero;\n            }\n        }\n\n        /// <summary>\n        /// Returns a Vector4 with all of its components set to one.\n        /// </summary>\n        public static Vector4 One\n        {\n            get\n            {\n                return Vector4._one;\n            }\n        }\n\n        /// <summary>\n        /// Returns the Vector4 (1, 0, 0, 0).\n        /// </summary>\n        public static Vector4 UnitX\n        {\n            get\n            {\n                return Vector4._unitX;\n            }\n        }\n\n        /// <summary>\n        /// Returns the Vector4 (0, 1, 0, 0).\n        /// </summary>\n        public static Vector4 UnitY\n        {\n            get\n            {\n                return Vector4._unitY;\n            }\n        }\n\n        /// <summary>\n        /// Returns the Vector4 (0, 0, 1, 0).\n        /// </summary>\n        public static Vector4 UnitZ\n        {\n            get\n            {\n                return Vector4._unitZ;\n            }\n        }\n\n        /// <summary>\n        /// Returns the Vector4 (0, 0, 0, 1).\n        /// </summary>\n        public static Vector4 UnitW\n        {\n            get\n            {\n                return Vector4._unitW;\n            }\n        }\n\n        static Vector4()\n        {\n        }\n\n        /// <summary>\n        /// Initializes a new instance of Vector4.\n        /// </summary>\n        /// <param name=\"x\">Initial value for the x-component of the vector.</param><param name=\"y\">Initial value for the y-component of the vector.</param><param name=\"z\">Initial value for the z-component of the vector.</param><param name=\"w\">Initial value for the w-component of the vector.</param>\n        public Vector4(float x, float y, float z, float w)\n        {\n            this.X = x;\n            this.Y = y;\n            this.Z = z;\n            this.W = w;\n        }\n\n        /// <summary>\n        /// Initializes a new instance of Vector4.\n        /// </summary>\n        /// <param name=\"value\">A vector containing the values to initialize x and y components with.</param><param name=\"z\">Initial value for the z-component of the vector.</param><param name=\"w\">Initial value for the w-component of the vector.</param>\n        public Vector4(Vector2 value, float z, float w)\n        {\n            this.X = value.X;\n            this.Y = value.Y;\n            this.Z = z;\n            this.W = w;\n        }\n\n        /// <summary>\n        /// Initializes a new instance of Vector4.\n        /// </summary>\n        /// <param name=\"value\">A vector containing the values to initialize x, y, and z components with.</param><param name=\"w\">Initial value for the w-component of the vector.</param>\n        public Vector4(Vector3 value, float w)\n        {\n            this.X = value.X;\n            this.Y = value.Y;\n            this.Z = value.Z;\n            this.W = w;\n        }\n\n        /// <summary>\n        /// Creates a new instance of Vector4.\n        /// </summary>\n        /// <param name=\"value\">Value to initialize each component to.</param>\n        public Vector4(float value)\n        {\n            this.X = this.Y = this.Z = this.W = value;\n        }\n\n        /// <summary>\n        /// Returns a vector pointing in the opposite direction.\n        /// </summary>\n        /// <param name=\"value\">Source vector.</param>\n        public static Vector4 operator -(Vector4 value)\n        {\n            Vector4 vector4;\n            vector4.X = -value.X;\n            vector4.Y = -value.Y;\n            vector4.Z = -value.Z;\n            vector4.W = -value.W;\n            return vector4;\n        }\n\n        /// <summary>\n        /// Tests vectors for equality.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"value2\">Source vector.</param>\n        public static bool operator ==(Vector4 value1, Vector4 value2)\n        {\n            if ((double)value1.X == (double)value2.X && (double)value1.Y == (double)value2.Y && (double)value1.Z == (double)value2.Z)\n                return (double)value1.W == (double)value2.W;\n            else\n                return false;\n        }\n\n        /// <summary>\n        /// Tests vectors for inequality.\n        /// </summary>\n        /// <param name=\"value1\">Vector to compare.</param><param name=\"value2\">Vector to compare.</param>\n        public static bool operator !=(Vector4 value1, Vector4 value2)\n        {\n            if ((double)value1.X == (double)value2.X && (double)value1.Y == (double)value2.Y && (double)value1.Z == (double)value2.Z)\n                return (double)value1.W != (double)value2.W;\n            else\n                return true;\n        }\n\n        /// <summary>\n        /// Adds two vectors.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"value2\">Source vector.</param>\n        public static Vector4 operator +(Vector4 value1, Vector4 value2)\n        {\n            Vector4 vector4;\n            vector4.X = value1.X + value2.X;\n            vector4.Y = value1.Y + value2.Y;\n            vector4.Z = value1.Z + value2.Z;\n            vector4.W = value1.W + value2.W;\n            return vector4;\n        }\n\n        /// <summary>\n        /// Subtracts a vector from a vector.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"value2\">Source vector.</param>\n        public static Vector4 operator -(Vector4 value1, Vector4 value2)\n        {\n            Vector4 vector4;\n            vector4.X = value1.X - value2.X;\n            vector4.Y = value1.Y - value2.Y;\n            vector4.Z = value1.Z - value2.Z;\n            vector4.W = value1.W - value2.W;\n            return vector4;\n        }\n\n        /// <summary>\n        /// Multiplies the components of two vectors by each other.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"value2\">Source vector.</param>\n        public static Vector4 operator *(Vector4 value1, Vector4 value2)\n        {\n            Vector4 vector4;\n            vector4.X = value1.X * value2.X;\n            vector4.Y = value1.Y * value2.Y;\n            vector4.Z = value1.Z * value2.Z;\n            vector4.W = value1.W * value2.W;\n            return vector4;\n        }\n\n        /// <summary>\n        /// Multiplies a vector by a scalar.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"scaleFactor\">Scalar value.</param>\n        public static Vector4 operator *(Vector4 value1, float scaleFactor)\n        {\n            Vector4 vector4;\n            vector4.X = value1.X * scaleFactor;\n            vector4.Y = value1.Y * scaleFactor;\n            vector4.Z = value1.Z * scaleFactor;\n            vector4.W = value1.W * scaleFactor;\n            return vector4;\n        }\n\n        /// <summary>\n        /// Multiplies a vector by a scalar.\n        /// </summary>\n        /// <param name=\"scaleFactor\">Scalar value.</param><param name=\"value1\">Source vector.</param>\n        public static Vector4 operator *(float scaleFactor, Vector4 value1)\n        {\n            Vector4 vector4;\n            vector4.X = value1.X * scaleFactor;\n            vector4.Y = value1.Y * scaleFactor;\n            vector4.Z = value1.Z * scaleFactor;\n            vector4.W = value1.W * scaleFactor;\n            return vector4;\n        }\n\n        /// <summary>\n        /// Divides the components of a vector by the components of another vector.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"value2\">Divisor vector.</param>\n        public static Vector4 operator /(Vector4 value1, Vector4 value2)\n        {\n            Vector4 vector4;\n            vector4.X = value1.X / value2.X;\n            vector4.Y = value1.Y / value2.Y;\n            vector4.Z = value1.Z / value2.Z;\n            vector4.W = value1.W / value2.W;\n            return vector4;\n        }\n\n        /// <summary>\n        /// Divides a vector by a scalar value.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"divider\">The divisor.</param>\n        public static Vector4 operator /(Vector4 value1, float divider)\n        {\n            float num = 1f / divider;\n            Vector4 vector4;\n            vector4.X = value1.X * num;\n            vector4.Y = value1.Y * num;\n            vector4.Z = value1.Z * num;\n            vector4.W = value1.W * num;\n            return vector4;\n        }\n\n        /// <summary>\n        /// Retrieves a string representation of the current object.\n        /// </summary>\n        public override string ToString()\n        {\n            CultureInfo currentCulture = CultureInfo.CurrentCulture;\n            return string.Format((IFormatProvider)currentCulture, \"{{X:{0} Y:{1} Z:{2} W:{3}}}\", (object)this.X.ToString((IFormatProvider)currentCulture), (object)this.Y.ToString((IFormatProvider)currentCulture), (object)this.Z.ToString((IFormatProvider)currentCulture), (object)this.W.ToString((IFormatProvider)currentCulture));\n        }\n\n        /// <summary>\n        /// Determines whether the specified Object is equal to the Vector4.\n        /// </summary>\n        /// <param name=\"other\">The Vector4 to compare with the current Vector4.</param>\n        public bool Equals(Vector4 other)\n        {\n            if ((double)this.X == (double)other.X && (double)this.Y == (double)other.Y && (double)this.Z == (double)other.Z)\n                return (double)this.W == (double)other.W;\n            else\n                return false;\n        }\n\n        /// <summary>\n        /// Returns a value that indicates whether the current instance is equal to a specified object.\n        /// </summary>\n        /// <param name=\"obj\">Object with which to make the comparison.</param>\n        public override bool Equals(object obj)\n        {\n            bool flag = false;\n            if (obj is Vector4)\n                flag = this.Equals((Vector4)obj);\n            return flag;\n        }\n\n        /// <summary>\n        /// Gets the hash code of this object.\n        /// </summary>\n        public override int GetHashCode()\n        {\n            return this.X.GetHashCode() + this.Y.GetHashCode() + this.Z.GetHashCode() + this.W.GetHashCode();\n        }\n\n        /// <summary>\n        /// Calculates the length of the vector.\n        /// </summary>\n        public float Length()\n        {\n            return (float)Math.Sqrt((double)this.X * (double)this.X + (double)this.Y * (double)this.Y + (double)this.Z * (double)this.Z + (double)this.W * (double)this.W);\n        }\n\n        /// <summary>\n        /// Calculates the length of the vector squared.\n        /// </summary>\n        public float LengthSquared()\n        {\n            return (float)((double)this.X * (double)this.X + (double)this.Y * (double)this.Y + (double)this.Z * (double)this.Z + (double)this.W * (double)this.W);\n        }\n\n        /// <summary>\n        /// Calculates the distance between two vectors.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"value2\">Source vector.</param>\n        public static float Distance(Vector4 value1, Vector4 value2)\n        {\n            float num1 = value1.X - value2.X;\n            float num2 = value1.Y - value2.Y;\n            float num3 = value1.Z - value2.Z;\n            float num4 = value1.W - value2.W;\n            return (float)Math.Sqrt((double)num1 * (double)num1 + (double)num2 * (double)num2 + (double)num3 * (double)num3 + (double)num4 * (double)num4);\n        }\n\n        /// <summary>\n        /// Calculates the distance between two vectors.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"value2\">Source vector.</param><param name=\"result\">[OutAttribute] The distance between the vectors.</param>\n        public static void Distance(ref Vector4 value1, ref Vector4 value2, out float result)\n        {\n            float num1 = value1.X - value2.X;\n            float num2 = value1.Y - value2.Y;\n            float num3 = value1.Z - value2.Z;\n            float num4 = value1.W - value2.W;\n            float num5 = (float)((double)num1 * (double)num1 + (double)num2 * (double)num2 + (double)num3 * (double)num3 + (double)num4 * (double)num4);\n            result = (float)Math.Sqrt((double)num5);\n        }\n\n        /// <summary>\n        /// Calculates the distance between two vectors squared.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"value2\">Source vector.</param>\n        public static float DistanceSquared(Vector4 value1, Vector4 value2)\n        {\n            float num1 = value1.X - value2.X;\n            float num2 = value1.Y - value2.Y;\n            float num3 = value1.Z - value2.Z;\n            float num4 = value1.W - value2.W;\n            return (float)((double)num1 * (double)num1 + (double)num2 * (double)num2 + (double)num3 * (double)num3 + (double)num4 * (double)num4);\n        }\n\n        /// <summary>\n        /// Calculates the distance between two vectors squared.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"value2\">Source vector.</param><param name=\"result\">[OutAttribute] The distance between the two vectors squared.</param>\n        public static void DistanceSquared(ref Vector4 value1, ref Vector4 value2, out float result)\n        {\n            float num1 = value1.X - value2.X;\n            float num2 = value1.Y - value2.Y;\n            float num3 = value1.Z - value2.Z;\n            float num4 = value1.W - value2.W;\n            result = (float)((double)num1 * (double)num1 + (double)num2 * (double)num2 + (double)num3 * (double)num3 + (double)num4 * (double)num4);\n        }\n\n        /// <summary>\n        /// Calculates the dot product of two vectors.\n        /// </summary>\n        /// <param name=\"vector1\">Source vector.</param><param name=\"vector2\">Source vector.</param>\n        public static float Dot(Vector4 vector1, Vector4 vector2)\n        {\n            return (float)((double)vector1.X * (double)vector2.X + (double)vector1.Y * (double)vector2.Y + (double)vector1.Z * (double)vector2.Z + (double)vector1.W * (double)vector2.W);\n        }\n\n        /// <summary>\n        /// Calculates the dot product of two vectors.\n        /// </summary>\n        /// <param name=\"vector1\">Source vector.</param><param name=\"vector2\">Source vector.</param><param name=\"result\">[OutAttribute] The dot product of the two vectors.</param>\n        public static void Dot(ref Vector4 vector1, ref Vector4 vector2, out float result)\n        {\n            result = (float)((double)vector1.X * (double)vector2.X + (double)vector1.Y * (double)vector2.Y + (double)vector1.Z * (double)vector2.Z + (double)vector1.W * (double)vector2.W);\n        }\n\n        /// <summary>\n        /// Turns the current vector into a unit vector.\n        /// </summary>\n        public void Normalize()\n        {\n            float num = 1f / (float)Math.Sqrt((double)this.X * (double)this.X + (double)this.Y * (double)this.Y + (double)this.Z * (double)this.Z + (double)this.W * (double)this.W);\n            this.X *= num;\n            this.Y *= num;\n            this.Z *= num;\n            this.W *= num;\n        }\n\n        /// <summary>\n        /// Creates a unit vector from the specified vector.\n        /// </summary>\n        /// <param name=\"vector\">The source Vector4.</param>\n        public static Vector4 Normalize(Vector4 vector)\n        {\n            float num = 1f / (float)Math.Sqrt((double)vector.X * (double)vector.X + (double)vector.Y * (double)vector.Y + (double)vector.Z * (double)vector.Z + (double)vector.W * (double)vector.W);\n            Vector4 vector4;\n            vector4.X = vector.X * num;\n            vector4.Y = vector.Y * num;\n            vector4.Z = vector.Z * num;\n            vector4.W = vector.W * num;\n            return vector4;\n        }\n\n        /// <summary>\n        /// Returns a normalized version of the specified vector.\n        /// </summary>\n        /// <param name=\"vector\">Source vector.</param><param name=\"result\">[OutAttribute] The normalized vector.</param>\n        public static void Normalize(ref Vector4 vector, out Vector4 result)\n        {\n            float num = 1f / (float)Math.Sqrt((double)vector.X * (double)vector.X + (double)vector.Y * (double)vector.Y + (double)vector.Z * (double)vector.Z + (double)vector.W * (double)vector.W);\n            result.X = vector.X * num;\n            result.Y = vector.Y * num;\n            result.Z = vector.Z * num;\n            result.W = vector.W * num;\n        }\n\n        /// <summary>\n        /// Returns a vector that contains the lowest value from each matching pair of components.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"value2\">Source vector.</param>\n        public static Vector4 Min(Vector4 value1, Vector4 value2)\n        {\n            Vector4 vector4;\n            vector4.X = (double)value1.X < (double)value2.X ? value1.X : value2.X;\n            vector4.Y = (double)value1.Y < (double)value2.Y ? value1.Y : value2.Y;\n            vector4.Z = (double)value1.Z < (double)value2.Z ? value1.Z : value2.Z;\n            vector4.W = (double)value1.W < (double)value2.W ? value1.W : value2.W;\n            return vector4;\n        }\n\n        /// <summary>\n        /// Returns a vector that contains the lowest value from each matching pair of components.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"value2\">Source vector.</param><param name=\"result\">[OutAttribute] The minimized vector.</param>\n        public static void Min(ref Vector4 value1, ref Vector4 value2, out Vector4 result)\n        {\n            result.X = (double)value1.X < (double)value2.X ? value1.X : value2.X;\n            result.Y = (double)value1.Y < (double)value2.Y ? value1.Y : value2.Y;\n            result.Z = (double)value1.Z < (double)value2.Z ? value1.Z : value2.Z;\n            result.W = (double)value1.W < (double)value2.W ? value1.W : value2.W;\n        }\n\n        /// <summary>\n        /// Returns a vector that contains the highest value from each matching pair of components.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"value2\">Source vector.</param>\n        public static Vector4 Max(Vector4 value1, Vector4 value2)\n        {\n            Vector4 vector4;\n            vector4.X = (double)value1.X > (double)value2.X ? value1.X : value2.X;\n            vector4.Y = (double)value1.Y > (double)value2.Y ? value1.Y : value2.Y;\n            vector4.Z = (double)value1.Z > (double)value2.Z ? value1.Z : value2.Z;\n            vector4.W = (double)value1.W > (double)value2.W ? value1.W : value2.W;\n            return vector4;\n        }\n\n        /// <summary>\n        /// Returns a vector that contains the highest value from each matching pair of components.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"value2\">Source vector.</param><param name=\"result\">[OutAttribute] The maximized vector.</param>\n        public static void Max(ref Vector4 value1, ref Vector4 value2, out Vector4 result)\n        {\n            result.X = (double)value1.X > (double)value2.X ? value1.X : value2.X;\n            result.Y = (double)value1.Y > (double)value2.Y ? value1.Y : value2.Y;\n            result.Z = (double)value1.Z > (double)value2.Z ? value1.Z : value2.Z;\n            result.W = (double)value1.W > (double)value2.W ? value1.W : value2.W;\n        }\n\n        /// <summary>\n        /// Restricts a value to be within a specified range.\n        /// </summary>\n        /// <param name=\"value1\">The value to clamp.</param><param name=\"min\">The minimum value.</param><param name=\"max\">The maximum value.</param>\n        public static Vector4 Clamp(Vector4 value1, Vector4 min, Vector4 max)\n        {\n            float num1 = value1.X;\n            float num2 = (double)num1 > (double)max.X ? max.X : num1;\n            float num3 = (double)num2 < (double)min.X ? min.X : num2;\n            float num4 = value1.Y;\n            float num5 = (double)num4 > (double)max.Y ? max.Y : num4;\n            float num6 = (double)num5 < (double)min.Y ? min.Y : num5;\n            float num7 = value1.Z;\n            float num8 = (double)num7 > (double)max.Z ? max.Z : num7;\n            float num9 = (double)num8 < (double)min.Z ? min.Z : num8;\n            float num10 = value1.W;\n            float num11 = (double)num10 > (double)max.W ? max.W : num10;\n            float num12 = (double)num11 < (double)min.W ? min.W : num11;\n            Vector4 vector4;\n            vector4.X = num3;\n            vector4.Y = num6;\n            vector4.Z = num9;\n            vector4.W = num12;\n            return vector4;\n        }\n\n        /// <summary>\n        /// Restricts a value to be within a specified range.\n        /// </summary>\n        /// <param name=\"value1\">The value to clamp.</param><param name=\"min\">The minimum value.</param><param name=\"max\">The maximum value.</param><param name=\"result\">[OutAttribute] The clamped value.</param>\n        public static void Clamp(ref Vector4 value1, ref Vector4 min, ref Vector4 max, out Vector4 result)\n        {\n            float num1 = value1.X;\n            float num2 = (double)num1 > (double)max.X ? max.X : num1;\n            float num3 = (double)num2 < (double)min.X ? min.X : num2;\n            float num4 = value1.Y;\n            float num5 = (double)num4 > (double)max.Y ? max.Y : num4;\n            float num6 = (double)num5 < (double)min.Y ? min.Y : num5;\n            float num7 = value1.Z;\n            float num8 = (double)num7 > (double)max.Z ? max.Z : num7;\n            float num9 = (double)num8 < (double)min.Z ? min.Z : num8;\n            float num10 = value1.W;\n            float num11 = (double)num10 > (double)max.W ? max.W : num10;\n            float num12 = (double)num11 < (double)min.W ? min.W : num11;\n            result.X = num3;\n            result.Y = num6;\n            result.Z = num9;\n            result.W = num12;\n        }\n\n        /// <summary>\n        /// Performs a linear interpolation between two vectors.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"value2\">Source vector.</param><param name=\"amount\">Value between 0 and 1 indicating the weight of value2.</param>\n        public static Vector4 Lerp(Vector4 value1, Vector4 value2, float amount)\n        {\n            Vector4 vector4;\n            vector4.X = value1.X + (value2.X - value1.X) * amount;\n            vector4.Y = value1.Y + (value2.Y - value1.Y) * amount;\n            vector4.Z = value1.Z + (value2.Z - value1.Z) * amount;\n            vector4.W = value1.W + (value2.W - value1.W) * amount;\n            return vector4;\n        }\n\n        /// <summary>\n        /// Performs a linear interpolation between two vectors.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"value2\">Source vector.</param><param name=\"amount\">Value between 0 and 1 indicating the weight of value2.</param><param name=\"result\">[OutAttribute] The result of the interpolation.</param>\n        public static void Lerp(ref Vector4 value1, ref Vector4 value2, float amount, out Vector4 result)\n        {\n            result.X = value1.X + (value2.X - value1.X) * amount;\n            result.Y = value1.Y + (value2.Y - value1.Y) * amount;\n            result.Z = value1.Z + (value2.Z - value1.Z) * amount;\n            result.W = value1.W + (value2.W - value1.W) * amount;\n        }\n\n        /// <summary>\n        /// Returns a Vector4 containing the 4D Cartesian coordinates of a point specified in barycentric (areal) coordinates relative to a 4D triangle.\n        /// </summary>\n        /// <param name=\"value1\">A Vector4 containing the 4D Cartesian coordinates of vertex 1 of the triangle.</param><param name=\"value2\">A Vector4 containing the 4D Cartesian coordinates of vertex 2 of the triangle.</param><param name=\"value3\">A Vector4 containing the 4D Cartesian coordinates of vertex 3 of the triangle.</param><param name=\"amount1\">Barycentric coordinate b2, which expresses the weighting factor toward vertex 2 (specified in value2).</param><param name=\"amount2\">Barycentric coordinate b3, which expresses the weighting factor toward vertex 3 (specified in value3).</param>\n        public static Vector4 Barycentric(Vector4 value1, Vector4 value2, Vector4 value3, float amount1, float amount2)\n        {\n            Vector4 vector4;\n            vector4.X = (float)((double)value1.X + (double)amount1 * ((double)value2.X - (double)value1.X) + (double)amount2 * ((double)value3.X - (double)value1.X));\n            vector4.Y = (float)((double)value1.Y + (double)amount1 * ((double)value2.Y - (double)value1.Y) + (double)amount2 * ((double)value3.Y - (double)value1.Y));\n            vector4.Z = (float)((double)value1.Z + (double)amount1 * ((double)value2.Z - (double)value1.Z) + (double)amount2 * ((double)value3.Z - (double)value1.Z));\n            vector4.W = (float)((double)value1.W + (double)amount1 * ((double)value2.W - (double)value1.W) + (double)amount2 * ((double)value3.W - (double)value1.W));\n            return vector4;\n        }\n\n        /// <summary>\n        /// Returns a Vector4 containing the 4D Cartesian coordinates of a point specified in Barycentric (areal) coordinates relative to a 4D triangle.\n        /// </summary>\n        /// <param name=\"value1\">A Vector4 containing the 4D Cartesian coordinates of vertex 1 of the triangle.</param><param name=\"value2\">A Vector4 containing the 4D Cartesian coordinates of vertex 2 of the triangle.</param><param name=\"value3\">A Vector4 containing the 4D Cartesian coordinates of vertex 3 of the triangle.</param><param name=\"amount1\">Barycentric coordinate b2, which expresses the weighting factor toward vertex 2 (specified in value2).</param><param name=\"amount2\">Barycentric coordinate b3, which expresses the weighting factor toward vertex 3 (specified in value3).</param><param name=\"result\">[OutAttribute] The 4D Cartesian coordinates of the specified point are placed in this Vector4 on exit.</param>\n        public static void Barycentric(ref Vector4 value1, ref Vector4 value2, ref Vector4 value3, float amount1, float amount2, out Vector4 result)\n        {\n            result.X = (float)((double)value1.X + (double)amount1 * ((double)value2.X - (double)value1.X) + (double)amount2 * ((double)value3.X - (double)value1.X));\n            result.Y = (float)((double)value1.Y + (double)amount1 * ((double)value2.Y - (double)value1.Y) + (double)amount2 * ((double)value3.Y - (double)value1.Y));\n            result.Z = (float)((double)value1.Z + (double)amount1 * ((double)value2.Z - (double)value1.Z) + (double)amount2 * ((double)value3.Z - (double)value1.Z));\n            result.W = (float)((double)value1.W + (double)amount1 * ((double)value2.W - (double)value1.W) + (double)amount2 * ((double)value3.W - (double)value1.W));\n        }\n\n        /// <summary>\n        /// Interpolates between two values using a cubic equation.\n        /// </summary>\n        /// <param name=\"value1\">Source value.</param><param name=\"value2\">Source value.</param><param name=\"amount\">Weighting value.</param>\n        public static Vector4 SmoothStep(Vector4 value1, Vector4 value2, float amount)\n        {\n            amount = (double)amount > 1.0 ? 1f : ((double)amount < 0.0 ? 0.0f : amount);\n            amount = (float)((double)amount * (double)amount * (3.0 - 2.0 * (double)amount));\n            Vector4 vector4;\n            vector4.X = value1.X + (value2.X - value1.X) * amount;\n            vector4.Y = value1.Y + (value2.Y - value1.Y) * amount;\n            vector4.Z = value1.Z + (value2.Z - value1.Z) * amount;\n            vector4.W = value1.W + (value2.W - value1.W) * amount;\n            return vector4;\n        }\n\n        /// <summary>\n        /// Interpolates between two values using a cubic equation.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"value2\">Source vector.</param><param name=\"amount\">Weighting factor.</param><param name=\"result\">[OutAttribute] The interpolated value.</param>\n        public static void SmoothStep(ref Vector4 value1, ref Vector4 value2, float amount, out Vector4 result)\n        {\n            amount = (double)amount > 1.0 ? 1f : ((double)amount < 0.0 ? 0.0f : amount);\n            amount = (float)((double)amount * (double)amount * (3.0 - 2.0 * (double)amount));\n            result.X = value1.X + (value2.X - value1.X) * amount;\n            result.Y = value1.Y + (value2.Y - value1.Y) * amount;\n            result.Z = value1.Z + (value2.Z - value1.Z) * amount;\n            result.W = value1.W + (value2.W - value1.W) * amount;\n        }\n\n        /// <summary>\n        /// Performs a Catmull-Rom interpolation using the specified positions.\n        /// </summary>\n        /// <param name=\"value1\">The first position in the interpolation.</param><param name=\"value2\">The second position in the interpolation.</param><param name=\"value3\">The third position in the interpolation.</param><param name=\"value4\">The fourth position in the interpolation.</param><param name=\"amount\">Weighting factor.</param>\n        public static Vector4 CatmullRom(Vector4 value1, Vector4 value2, Vector4 value3, Vector4 value4, float amount)\n        {\n            float num1 = amount * amount;\n            float num2 = amount * num1;\n            Vector4 vector4;\n            vector4.X = (float)(0.5 * (2.0 * (double)value2.X + (-(double)value1.X + (double)value3.X) * (double)amount + (2.0 * (double)value1.X - 5.0 * (double)value2.X + 4.0 * (double)value3.X - (double)value4.X) * (double)num1 + (-(double)value1.X + 3.0 * (double)value2.X - 3.0 * (double)value3.X + (double)value4.X) * (double)num2));\n            vector4.Y = (float)(0.5 * (2.0 * (double)value2.Y + (-(double)value1.Y + (double)value3.Y) * (double)amount + (2.0 * (double)value1.Y - 5.0 * (double)value2.Y + 4.0 * (double)value3.Y - (double)value4.Y) * (double)num1 + (-(double)value1.Y + 3.0 * (double)value2.Y - 3.0 * (double)value3.Y + (double)value4.Y) * (double)num2));\n            vector4.Z = (float)(0.5 * (2.0 * (double)value2.Z + (-(double)value1.Z + (double)value3.Z) * (double)amount + (2.0 * (double)value1.Z - 5.0 * (double)value2.Z + 4.0 * (double)value3.Z - (double)value4.Z) * (double)num1 + (-(double)value1.Z + 3.0 * (double)value2.Z - 3.0 * (double)value3.Z + (double)value4.Z) * (double)num2));\n            vector4.W = (float)(0.5 * (2.0 * (double)value2.W + (-(double)value1.W + (double)value3.W) * (double)amount + (2.0 * (double)value1.W - 5.0 * (double)value2.W + 4.0 * (double)value3.W - (double)value4.W) * (double)num1 + (-(double)value1.W + 3.0 * (double)value2.W - 3.0 * (double)value3.W + (double)value4.W) * (double)num2));\n            return vector4;\n        }\n\n        /// <summary>\n        /// Performs a Catmull-Rom interpolation using the specified positions.\n        /// </summary>\n        /// <param name=\"value1\">The first position in the interpolation.</param><param name=\"value2\">The second position in the interpolation.</param><param name=\"value3\">The third position in the interpolation.</param><param name=\"value4\">The fourth position in the interpolation.</param><param name=\"amount\">Weighting factor.</param><param name=\"result\">[OutAttribute] A vector that is the result of the Catmull-Rom interpolation.</param>\n        public static void CatmullRom(ref Vector4 value1, ref Vector4 value2, ref Vector4 value3, ref Vector4 value4, float amount, out Vector4 result)\n        {\n            float num1 = amount * amount;\n            float num2 = amount * num1;\n            result.X = (float)(0.5 * (2.0 * (double)value2.X + (-(double)value1.X + (double)value3.X) * (double)amount + (2.0 * (double)value1.X - 5.0 * (double)value2.X + 4.0 * (double)value3.X - (double)value4.X) * (double)num1 + (-(double)value1.X + 3.0 * (double)value2.X - 3.0 * (double)value3.X + (double)value4.X) * (double)num2));\n            result.Y = (float)(0.5 * (2.0 * (double)value2.Y + (-(double)value1.Y + (double)value3.Y) * (double)amount + (2.0 * (double)value1.Y - 5.0 * (double)value2.Y + 4.0 * (double)value3.Y - (double)value4.Y) * (double)num1 + (-(double)value1.Y + 3.0 * (double)value2.Y - 3.0 * (double)value3.Y + (double)value4.Y) * (double)num2));\n            result.Z = (float)(0.5 * (2.0 * (double)value2.Z + (-(double)value1.Z + (double)value3.Z) * (double)amount + (2.0 * (double)value1.Z - 5.0 * (double)value2.Z + 4.0 * (double)value3.Z - (double)value4.Z) * (double)num1 + (-(double)value1.Z + 3.0 * (double)value2.Z - 3.0 * (double)value3.Z + (double)value4.Z) * (double)num2));\n            result.W = (float)(0.5 * (2.0 * (double)value2.W + (-(double)value1.W + (double)value3.W) * (double)amount + (2.0 * (double)value1.W - 5.0 * (double)value2.W + 4.0 * (double)value3.W - (double)value4.W) * (double)num1 + (-(double)value1.W + 3.0 * (double)value2.W - 3.0 * (double)value3.W + (double)value4.W) * (double)num2));\n        }\n\n        /// <summary>\n        /// Performs a Hermite spline interpolation.\n        /// </summary>\n        /// <param name=\"value1\">Source position vector.</param><param name=\"tangent1\">Source tangent vector.</param><param name=\"value2\">Source position vector.</param><param name=\"tangent2\">Source tangent vector.</param><param name=\"amount\">Weighting factor.</param>\n        public static Vector4 Hermite(Vector4 value1, Vector4 tangent1, Vector4 value2, Vector4 tangent2, float amount)\n        {\n            float num1 = amount * amount;\n            float num2 = amount * num1;\n            float num3 = (float)(2.0 * (double)num2 - 3.0 * (double)num1 + 1.0);\n            float num4 = (float)(-2.0 * (double)num2 + 3.0 * (double)num1);\n            float num5 = num2 - 2f * num1 + amount;\n            float num6 = num2 - num1;\n            Vector4 vector4;\n            vector4.X = (float)((double)value1.X * (double)num3 + (double)value2.X * (double)num4 + (double)tangent1.X * (double)num5 + (double)tangent2.X * (double)num6);\n            vector4.Y = (float)((double)value1.Y * (double)num3 + (double)value2.Y * (double)num4 + (double)tangent1.Y * (double)num5 + (double)tangent2.Y * (double)num6);\n            vector4.Z = (float)((double)value1.Z * (double)num3 + (double)value2.Z * (double)num4 + (double)tangent1.Z * (double)num5 + (double)tangent2.Z * (double)num6);\n            vector4.W = (float)((double)value1.W * (double)num3 + (double)value2.W * (double)num4 + (double)tangent1.W * (double)num5 + (double)tangent2.W * (double)num6);\n            return vector4;\n        }\n\n        /// <summary>\n        /// Performs a Hermite spline interpolation.\n        /// </summary>\n        /// <param name=\"value1\">Source position vector.</param><param name=\"tangent1\">Source tangent vector.</param><param name=\"value2\">Source position vector.</param><param name=\"tangent2\">Source tangent vector.</param><param name=\"amount\">Weighting factor.</param><param name=\"result\">[OutAttribute] The result of the Hermite spline interpolation.</param>\n        public static void Hermite(ref Vector4 value1, ref Vector4 tangent1, ref Vector4 value2, ref Vector4 tangent2, float amount, out Vector4 result)\n        {\n            float num1 = amount * amount;\n            float num2 = amount * num1;\n            float num3 = (float)(2.0 * (double)num2 - 3.0 * (double)num1 + 1.0);\n            float num4 = (float)(-2.0 * (double)num2 + 3.0 * (double)num1);\n            float num5 = num2 - 2f * num1 + amount;\n            float num6 = num2 - num1;\n            result.X = (float)((double)value1.X * (double)num3 + (double)value2.X * (double)num4 + (double)tangent1.X * (double)num5 + (double)tangent2.X * (double)num6);\n            result.Y = (float)((double)value1.Y * (double)num3 + (double)value2.Y * (double)num4 + (double)tangent1.Y * (double)num5 + (double)tangent2.Y * (double)num6);\n            result.Z = (float)((double)value1.Z * (double)num3 + (double)value2.Z * (double)num4 + (double)tangent1.Z * (double)num5 + (double)tangent2.Z * (double)num6);\n            result.W = (float)((double)value1.W * (double)num3 + (double)value2.W * (double)num4 + (double)tangent1.W * (double)num5 + (double)tangent2.W * (double)num6);\n        }\n\n        /// <summary>\n        /// Transforms a Vector2 by the given Matrix.\n        /// </summary>\n        /// <param name=\"position\">The source Vector2.</param><param name=\"matrix\">The transformation Matrix.</param>\n        public static Vector4 Transform(Vector2 position, Matrix matrix)\n        {\n            float num1 = (float)((double)position.X * (double)matrix.M11 + (double)position.Y * (double)matrix.M21) + matrix.M41;\n            float num2 = (float)((double)position.X * (double)matrix.M12 + (double)position.Y * (double)matrix.M22) + matrix.M42;\n            float num3 = (float)((double)position.X * (double)matrix.M13 + (double)position.Y * (double)matrix.M23) + matrix.M43;\n            float num4 = (float)((double)position.X * (double)matrix.M14 + (double)position.Y * (double)matrix.M24) + matrix.M44;\n            Vector4 vector4;\n            vector4.X = num1;\n            vector4.Y = num2;\n            vector4.Z = num3;\n            vector4.W = num4;\n            return vector4;\n        }\n\n        /// <summary>\n        /// Transforms a Vector2 by the given Matrix.\n        /// </summary>\n        /// <param name=\"position\">The source Vector2.</param><param name=\"matrix\">The transformation Matrix.</param><param name=\"result\">[OutAttribute] The Vector4 resulting from the transformation.</param>\n        public static void Transform(ref Vector2 position, ref Matrix matrix, out Vector4 result)\n        {\n            float num1 = (float)((double)position.X * (double)matrix.M11 + (double)position.Y * (double)matrix.M21) + matrix.M41;\n            float num2 = (float)((double)position.X * (double)matrix.M12 + (double)position.Y * (double)matrix.M22) + matrix.M42;\n            float num3 = (float)((double)position.X * (double)matrix.M13 + (double)position.Y * (double)matrix.M23) + matrix.M43;\n            float num4 = (float)((double)position.X * (double)matrix.M14 + (double)position.Y * (double)matrix.M24) + matrix.M44;\n            result.X = num1;\n            result.Y = num2;\n            result.Z = num3;\n            result.W = num4;\n        }\n\n        /// <summary>\n        /// Transforms a Vector3 by the given Matrix.\n        /// </summary>\n        /// <param name=\"position\">The source Vector3.</param><param name=\"matrix\">The transformation Matrix.</param>\n        public static Vector4 Transform(Vector3 position, Matrix matrix)\n        {\n            float num1 = (float)((double)position.X * (double)matrix.M11 + (double)position.Y * (double)matrix.M21 + (double)position.Z * (double)matrix.M31) + matrix.M41;\n            float num2 = (float)((double)position.X * (double)matrix.M12 + (double)position.Y * (double)matrix.M22 + (double)position.Z * (double)matrix.M32) + matrix.M42;\n            float num3 = (float)((double)position.X * (double)matrix.M13 + (double)position.Y * (double)matrix.M23 + (double)position.Z * (double)matrix.M33) + matrix.M43;\n            float num4 = (float)((double)position.X * (double)matrix.M14 + (double)position.Y * (double)matrix.M24 + (double)position.Z * (double)matrix.M34) + matrix.M44;\n            Vector4 vector4;\n            vector4.X = num1;\n            vector4.Y = num2;\n            vector4.Z = num3;\n            vector4.W = num4;\n            return vector4;\n        }\n\n        /// <summary>\n        /// Transforms a Vector3 by the given Matrix.\n        /// </summary>\n        /// <param name=\"position\">The source Vector3.</param><param name=\"matrix\">The transformation Matrix.</param><param name=\"result\">[OutAttribute] The Vector4 resulting from the transformation.</param>\n        public static void Transform(ref Vector3 position, ref Matrix matrix, out Vector4 result)\n        {\n            float num1 = (float)((double)position.X * (double)matrix.M11 + (double)position.Y * (double)matrix.M21 + (double)position.Z * (double)matrix.M31) + matrix.M41;\n            float num2 = (float)((double)position.X * (double)matrix.M12 + (double)position.Y * (double)matrix.M22 + (double)position.Z * (double)matrix.M32) + matrix.M42;\n            float num3 = (float)((double)position.X * (double)matrix.M13 + (double)position.Y * (double)matrix.M23 + (double)position.Z * (double)matrix.M33) + matrix.M43;\n            float num4 = (float)((double)position.X * (double)matrix.M14 + (double)position.Y * (double)matrix.M24 + (double)position.Z * (double)matrix.M34) + matrix.M44;\n            result.X = num1;\n            result.Y = num2;\n            result.Z = num3;\n            result.W = num4;\n        }\n\n        /// <summary>\n        /// Transforms a Vector4 by the specified Matrix.\n        /// </summary>\n        /// <param name=\"vector\">The source Vector4.</param><param name=\"matrix\">The transformation Matrix.</param>\n        public static Vector4 Transform(Vector4 vector, Matrix matrix)\n        {\n            float num1 = (float)((double)vector.X * (double)matrix.M11 + (double)vector.Y * (double)matrix.M21 + (double)vector.Z * (double)matrix.M31 + (double)vector.W * (double)matrix.M41);\n            float num2 = (float)((double)vector.X * (double)matrix.M12 + (double)vector.Y * (double)matrix.M22 + (double)vector.Z * (double)matrix.M32 + (double)vector.W * (double)matrix.M42);\n            float num3 = (float)((double)vector.X * (double)matrix.M13 + (double)vector.Y * (double)matrix.M23 + (double)vector.Z * (double)matrix.M33 + (double)vector.W * (double)matrix.M43);\n            float num4 = (float)((double)vector.X * (double)matrix.M14 + (double)vector.Y * (double)matrix.M24 + (double)vector.Z * (double)matrix.M34 + (double)vector.W * (double)matrix.M44);\n            Vector4 vector4;\n            vector4.X = num1;\n            vector4.Y = num2;\n            vector4.Z = num3;\n            vector4.W = num4;\n            return vector4;\n        }\n\n        /// <summary>\n        /// Transforms a Vector4 by the given Matrix.\n        /// </summary>\n        /// <param name=\"vector\">The source Vector4.</param><param name=\"matrix\">The transformation Matrix.</param><param name=\"result\">[OutAttribute] The Vector4 resulting from the transformation.</param>\n        public static void Transform(ref Vector4 vector, ref Matrix matrix, out Vector4 result)\n        {\n            float num1 = (float)((double)vector.X * (double)matrix.M11 + (double)vector.Y * (double)matrix.M21 + (double)vector.Z * (double)matrix.M31 + (double)vector.W * (double)matrix.M41);\n            float num2 = (float)((double)vector.X * (double)matrix.M12 + (double)vector.Y * (double)matrix.M22 + (double)vector.Z * (double)matrix.M32 + (double)vector.W * (double)matrix.M42);\n            float num3 = (float)((double)vector.X * (double)matrix.M13 + (double)vector.Y * (double)matrix.M23 + (double)vector.Z * (double)matrix.M33 + (double)vector.W * (double)matrix.M43);\n            float num4 = (float)((double)vector.X * (double)matrix.M14 + (double)vector.Y * (double)matrix.M24 + (double)vector.Z * (double)matrix.M34 + (double)vector.W * (double)matrix.M44);\n            result.X = num1;\n            result.Y = num2;\n            result.Z = num3;\n            result.W = num4;\n        }\n\n        /// <summary>\n        /// Transforms a Vector2 by a specified Quaternion into a Vector4.\n        /// </summary>\n        /// <param name=\"value\">The Vector2 to transform.</param><param name=\"rotation\">The Quaternion rotation to apply.</param>\n        public static Vector4 Transform(Vector2 value, Quaternion rotation)\n        {\n            float num1 = rotation.X + rotation.X;\n            float num2 = rotation.Y + rotation.Y;\n            float num3 = rotation.Z + rotation.Z;\n            float num4 = rotation.W * num1;\n            float num5 = rotation.W * num2;\n            float num6 = rotation.W * num3;\n            float num7 = rotation.X * num1;\n            float num8 = rotation.X * num2;\n            float num9 = rotation.X * num3;\n            float num10 = rotation.Y * num2;\n            float num11 = rotation.Y * num3;\n            float num12 = rotation.Z * num3;\n            float num13 = (float)((double)value.X * (1.0 - (double)num10 - (double)num12) + (double)value.Y * ((double)num8 - (double)num6));\n            float num14 = (float)((double)value.X * ((double)num8 + (double)num6) + (double)value.Y * (1.0 - (double)num7 - (double)num12));\n            float num15 = (float)((double)value.X * ((double)num9 - (double)num5) + (double)value.Y * ((double)num11 + (double)num4));\n            Vector4 vector4;\n            vector4.X = num13;\n            vector4.Y = num14;\n            vector4.Z = num15;\n            vector4.W = 1f;\n            return vector4;\n        }\n\n        /// <summary>\n        /// Transforms a Vector2 by a specified Quaternion into a Vector4.\n        /// </summary>\n        /// <param name=\"value\">The Vector2 to transform.</param><param name=\"rotation\">The Quaternion rotation to apply.</param><param name=\"result\">[OutAttribute] The Vector4 resulting from the transformation.</param>\n        public static void Transform(ref Vector2 value, ref Quaternion rotation, out Vector4 result)\n        {\n            float num1 = rotation.X + rotation.X;\n            float num2 = rotation.Y + rotation.Y;\n            float num3 = rotation.Z + rotation.Z;\n            float num4 = rotation.W * num1;\n            float num5 = rotation.W * num2;\n            float num6 = rotation.W * num3;\n            float num7 = rotation.X * num1;\n            float num8 = rotation.X * num2;\n            float num9 = rotation.X * num3;\n            float num10 = rotation.Y * num2;\n            float num11 = rotation.Y * num3;\n            float num12 = rotation.Z * num3;\n            float num13 = (float)((double)value.X * (1.0 - (double)num10 - (double)num12) + (double)value.Y * ((double)num8 - (double)num6));\n            float num14 = (float)((double)value.X * ((double)num8 + (double)num6) + (double)value.Y * (1.0 - (double)num7 - (double)num12));\n            float num15 = (float)((double)value.X * ((double)num9 - (double)num5) + (double)value.Y * ((double)num11 + (double)num4));\n            result.X = num13;\n            result.Y = num14;\n            result.Z = num15;\n            result.W = 1f;\n        }\n\n        /// <summary>\n        /// Transforms a Vector3 by a specified Quaternion into a Vector4.\n        /// </summary>\n        /// <param name=\"value\">The Vector3 to transform.</param><param name=\"rotation\">The Quaternion rotation to apply.</param>\n        public static Vector4 Transform(Vector3 value, Quaternion rotation)\n        {\n            float num1 = rotation.X + rotation.X;\n            float num2 = rotation.Y + rotation.Y;\n            float num3 = rotation.Z + rotation.Z;\n            float num4 = rotation.W * num1;\n            float num5 = rotation.W * num2;\n            float num6 = rotation.W * num3;\n            float num7 = rotation.X * num1;\n            float num8 = rotation.X * num2;\n            float num9 = rotation.X * num3;\n            float num10 = rotation.Y * num2;\n            float num11 = rotation.Y * num3;\n            float num12 = rotation.Z * num3;\n            float num13 = (float)((double)value.X * (1.0 - (double)num10 - (double)num12) + (double)value.Y * ((double)num8 - (double)num6) + (double)value.Z * ((double)num9 + (double)num5));\n            float num14 = (float)((double)value.X * ((double)num8 + (double)num6) + (double)value.Y * (1.0 - (double)num7 - (double)num12) + (double)value.Z * ((double)num11 - (double)num4));\n            float num15 = (float)((double)value.X * ((double)num9 - (double)num5) + (double)value.Y * ((double)num11 + (double)num4) + (double)value.Z * (1.0 - (double)num7 - (double)num10));\n            Vector4 vector4;\n            vector4.X = num13;\n            vector4.Y = num14;\n            vector4.Z = num15;\n            vector4.W = 1f;\n            return vector4;\n        }\n\n        /// <summary>\n        /// Transforms a Vector3 by a specified Quaternion into a Vector4.\n        /// </summary>\n        /// <param name=\"value\">The Vector3 to transform.</param><param name=\"rotation\">The Quaternion rotation to apply.</param><param name=\"result\">[OutAttribute] The Vector4 resulting from the transformation.</param>\n        public static void Transform(ref Vector3 value, ref Quaternion rotation, out Vector4 result)\n        {\n            float num1 = rotation.X + rotation.X;\n            float num2 = rotation.Y + rotation.Y;\n            float num3 = rotation.Z + rotation.Z;\n            float num4 = rotation.W * num1;\n            float num5 = rotation.W * num2;\n            float num6 = rotation.W * num3;\n            float num7 = rotation.X * num1;\n            float num8 = rotation.X * num2;\n            float num9 = rotation.X * num3;\n            float num10 = rotation.Y * num2;\n            float num11 = rotation.Y * num3;\n            float num12 = rotation.Z * num3;\n            float num13 = (float)((double)value.X * (1.0 - (double)num10 - (double)num12) + (double)value.Y * ((double)num8 - (double)num6) + (double)value.Z * ((double)num9 + (double)num5));\n            float num14 = (float)((double)value.X * ((double)num8 + (double)num6) + (double)value.Y * (1.0 - (double)num7 - (double)num12) + (double)value.Z * ((double)num11 - (double)num4));\n            float num15 = (float)((double)value.X * ((double)num9 - (double)num5) + (double)value.Y * ((double)num11 + (double)num4) + (double)value.Z * (1.0 - (double)num7 - (double)num10));\n            result.X = num13;\n            result.Y = num14;\n            result.Z = num15;\n            result.W = 1f;\n        }\n\n        /// <summary>\n        /// Transforms a Vector4 by a specified Quaternion.\n        /// </summary>\n        /// <param name=\"value\">The Vector4 to transform.</param><param name=\"rotation\">The Quaternion rotation to apply.</param>\n        public static Vector4 Transform(Vector4 value, Quaternion rotation)\n        {\n            float num1 = rotation.X + rotation.X;\n            float num2 = rotation.Y + rotation.Y;\n            float num3 = rotation.Z + rotation.Z;\n            float num4 = rotation.W * num1;\n            float num5 = rotation.W * num2;\n            float num6 = rotation.W * num3;\n            float num7 = rotation.X * num1;\n            float num8 = rotation.X * num2;\n            float num9 = rotation.X * num3;\n            float num10 = rotation.Y * num2;\n            float num11 = rotation.Y * num3;\n            float num12 = rotation.Z * num3;\n            float num13 = (float)((double)value.X * (1.0 - (double)num10 - (double)num12) + (double)value.Y * ((double)num8 - (double)num6) + (double)value.Z * ((double)num9 + (double)num5));\n            float num14 = (float)((double)value.X * ((double)num8 + (double)num6) + (double)value.Y * (1.0 - (double)num7 - (double)num12) + (double)value.Z * ((double)num11 - (double)num4));\n            float num15 = (float)((double)value.X * ((double)num9 - (double)num5) + (double)value.Y * ((double)num11 + (double)num4) + (double)value.Z * (1.0 - (double)num7 - (double)num10));\n            Vector4 vector4;\n            vector4.X = num13;\n            vector4.Y = num14;\n            vector4.Z = num15;\n            vector4.W = value.W;\n            return vector4;\n        }\n\n        /// <summary>\n        /// Transforms a Vector4 by a specified Quaternion.\n        /// </summary>\n        /// <param name=\"value\">The Vector4 to transform.</param><param name=\"rotation\">The Quaternion rotation to apply.</param><param name=\"result\">[OutAttribute] The Vector4 resulting from the transformation.</param>\n        public static void Transform(ref Vector4 value, ref Quaternion rotation, out Vector4 result)\n        {\n            float num1 = rotation.X + rotation.X;\n            float num2 = rotation.Y + rotation.Y;\n            float num3 = rotation.Z + rotation.Z;\n            float num4 = rotation.W * num1;\n            float num5 = rotation.W * num2;\n            float num6 = rotation.W * num3;\n            float num7 = rotation.X * num1;\n            float num8 = rotation.X * num2;\n            float num9 = rotation.X * num3;\n            float num10 = rotation.Y * num2;\n            float num11 = rotation.Y * num3;\n            float num12 = rotation.Z * num3;\n            float num13 = (float)((double)value.X * (1.0 - (double)num10 - (double)num12) + (double)value.Y * ((double)num8 - (double)num6) + (double)value.Z * ((double)num9 + (double)num5));\n            float num14 = (float)((double)value.X * ((double)num8 + (double)num6) + (double)value.Y * (1.0 - (double)num7 - (double)num12) + (double)value.Z * ((double)num11 - (double)num4));\n            float num15 = (float)((double)value.X * ((double)num9 - (double)num5) + (double)value.Y * ((double)num11 + (double)num4) + (double)value.Z * (1.0 - (double)num7 - (double)num10));\n            result.X = num13;\n            result.Y = num14;\n            result.Z = num15;\n            result.W = value.W;\n        }\n\n        /// <summary>\n        /// Transforms an array of Vector4s by a specified Matrix.\n        /// </summary>\n        /// <param name=\"sourceArray\">The array of Vector4s to transform.</param><param name=\"matrix\">The transform Matrix to apply.</param><param name=\"destinationArray\">The existing destination array into which the transformed Vector4s are written.</param>\n        public static void Transform(Vector4[] sourceArray, ref Matrix matrix, Vector4[] destinationArray)\n        {\n            for (int index = 0; index < sourceArray.Length; ++index)\n            {\n                float num1 = sourceArray[index].X;\n                float num2 = sourceArray[index].Y;\n                float num3 = sourceArray[index].Z;\n                float num4 = sourceArray[index].W;\n                destinationArray[index].X = (float)((double)num1 * (double)matrix.M11 + (double)num2 * (double)matrix.M21 + (double)num3 * (double)matrix.M31 + (double)num4 * (double)matrix.M41);\n                destinationArray[index].Y = (float)((double)num1 * (double)matrix.M12 + (double)num2 * (double)matrix.M22 + (double)num3 * (double)matrix.M32 + (double)num4 * (double)matrix.M42);\n                destinationArray[index].Z = (float)((double)num1 * (double)matrix.M13 + (double)num2 * (double)matrix.M23 + (double)num3 * (double)matrix.M33 + (double)num4 * (double)matrix.M43);\n                destinationArray[index].W = (float)((double)num1 * (double)matrix.M14 + (double)num2 * (double)matrix.M24 + (double)num3 * (double)matrix.M34 + (double)num4 * (double)matrix.M44);\n            }\n        }\n\n        /// <summary>\n        /// Transforms a specified range in an array of Vector4s by a specified Matrix into a specified range in a destination array.\n        /// </summary>\n        /// <param name=\"sourceArray\">The array of Vector4s containing the range to transform.</param><param name=\"sourceIndex\">The index in the source array of the first Vector4 to transform.</param><param name=\"matrix\">The transform Matrix to apply.</param><param name=\"destinationArray\">The existing destination array of Vector4s into which to write the results.</param><param name=\"destinationIndex\">The index in the destination array of the first result Vector4 to write.</param><param name=\"length\">The number of Vector4s to transform.</param>\n        public static void Transform(Vector4[] sourceArray, int sourceIndex, ref Matrix matrix, Vector4[] destinationArray, int destinationIndex, int length)\n        {\n            for (; length > 0; --length)\n            {\n                float num1 = sourceArray[sourceIndex].X;\n                float num2 = sourceArray[sourceIndex].Y;\n                float num3 = sourceArray[sourceIndex].Z;\n                float num4 = sourceArray[sourceIndex].W;\n                destinationArray[destinationIndex].X = (float)((double)num1 * (double)matrix.M11 + (double)num2 * (double)matrix.M21 + (double)num3 * (double)matrix.M31 + (double)num4 * (double)matrix.M41);\n                destinationArray[destinationIndex].Y = (float)((double)num1 * (double)matrix.M12 + (double)num2 * (double)matrix.M22 + (double)num3 * (double)matrix.M32 + (double)num4 * (double)matrix.M42);\n                destinationArray[destinationIndex].Z = (float)((double)num1 * (double)matrix.M13 + (double)num2 * (double)matrix.M23 + (double)num3 * (double)matrix.M33 + (double)num4 * (double)matrix.M43);\n                destinationArray[destinationIndex].W = (float)((double)num1 * (double)matrix.M14 + (double)num2 * (double)matrix.M24 + (double)num3 * (double)matrix.M34 + (double)num4 * (double)matrix.M44);\n                ++sourceIndex;\n                ++destinationIndex;\n            }\n        }\n\n        /// <summary>\n        /// Transforms an array of Vector4s by a specified Quaternion.\n        /// </summary>\n        /// <param name=\"sourceArray\">The array of Vector4s to transform.</param><param name=\"rotation\">The Quaternion rotation to apply.</param><param name=\"destinationArray\">The existing destination array into which the transformed Vector4s are written.</param>\n        public static void Transform(Vector4[] sourceArray, ref Quaternion rotation, Vector4[] destinationArray)\n        {\n\n            float num1 = rotation.X + rotation.X;\n            float num2 = rotation.Y + rotation.Y;\n            float num3 = rotation.Z + rotation.Z;\n            float num4 = rotation.W * num1;\n            float num5 = rotation.W * num2;\n            float num6 = rotation.W * num3;\n            float num7 = rotation.X * num1;\n            float num8 = rotation.X * num2;\n            float num9 = rotation.X * num3;\n            float num10 = rotation.Y * num2;\n            float num11 = rotation.Y * num3;\n            float num12 = rotation.Z * num3;\n            float num13 = 1f - num10 - num12;\n            float num14 = num8 - num6;\n            float num15 = num9 + num5;\n            float num16 = num8 + num6;\n            float num17 = 1f - num7 - num12;\n            float num18 = num11 - num4;\n            float num19 = num9 - num5;\n            float num20 = num11 + num4;\n            float num21 = 1f - num7 - num10;\n            for (int index = 0; index < sourceArray.Length; ++index)\n            {\n                float num22 = sourceArray[index].X;\n                float num23 = sourceArray[index].Y;\n                float num24 = sourceArray[index].Z;\n                destinationArray[index].X = (float)((double)num22 * (double)num13 + (double)num23 * (double)num14 + (double)num24 * (double)num15);\n                destinationArray[index].Y = (float)((double)num22 * (double)num16 + (double)num23 * (double)num17 + (double)num24 * (double)num18);\n                destinationArray[index].Z = (float)((double)num22 * (double)num19 + (double)num23 * (double)num20 + (double)num24 * (double)num21);\n                destinationArray[index].W = sourceArray[index].W;\n            }\n        }\n\n        /// <summary>\n        /// Transforms a specified range in an array of Vector4s by a specified Quaternion into a specified range in a destination array.\n        /// </summary>\n        /// <param name=\"sourceArray\">The array of Vector4s containing the range to transform.</param><param name=\"sourceIndex\">The index in the source array of the first Vector4 to transform.</param><param name=\"rotation\">The Quaternion rotation to apply.</param><param name=\"destinationArray\">The existing destination array of Vector4s into which to write the results.</param><param name=\"destinationIndex\">The index in the destination array of the first result Vector4 to write.</param><param name=\"length\">The number of Vector4s to transform.</param>\n        public static void Transform(Vector4[] sourceArray, int sourceIndex, ref Quaternion rotation, Vector4[] destinationArray, int destinationIndex, int length)\n        {\n            \n            float num1 = rotation.X + rotation.X;\n            float num2 = rotation.Y + rotation.Y;\n            float num3 = rotation.Z + rotation.Z;\n            float num4 = rotation.W * num1;\n            float num5 = rotation.W * num2;\n            float num6 = rotation.W * num3;\n            float num7 = rotation.X * num1;\n            float num8 = rotation.X * num2;\n            float num9 = rotation.X * num3;\n            float num10 = rotation.Y * num2;\n            float num11 = rotation.Y * num3;\n            float num12 = rotation.Z * num3;\n            float num13 = 1f - num10 - num12;\n            float num14 = num8 - num6;\n            float num15 = num9 + num5;\n            float num16 = num8 + num6;\n            float num17 = 1f - num7 - num12;\n            float num18 = num11 - num4;\n            float num19 = num9 - num5;\n            float num20 = num11 + num4;\n            float num21 = 1f - num7 - num10;\n            for (; length > 0; --length)\n            {\n                float num22 = sourceArray[sourceIndex].X;\n                float num23 = sourceArray[sourceIndex].Y;\n                float num24 = sourceArray[sourceIndex].Z;\n                float num25 = sourceArray[sourceIndex].W;\n                destinationArray[destinationIndex].X = (float)((double)num22 * (double)num13 + (double)num23 * (double)num14 + (double)num24 * (double)num15);\n                destinationArray[destinationIndex].Y = (float)((double)num22 * (double)num16 + (double)num23 * (double)num17 + (double)num24 * (double)num18);\n                destinationArray[destinationIndex].Z = (float)((double)num22 * (double)num19 + (double)num23 * (double)num20 + (double)num24 * (double)num21);\n                destinationArray[destinationIndex].W = num25;\n                ++sourceIndex;\n                ++destinationIndex;\n            }\n        }\n\n        /// <summary>\n        /// Returns a vector pointing in the opposite direction.\n        /// </summary>\n        /// <param name=\"value\">Source vector.</param>\n        public static Vector4 Negate(Vector4 value)\n        {\n            Vector4 vector4;\n            vector4.X = -value.X;\n            vector4.Y = -value.Y;\n            vector4.Z = -value.Z;\n            vector4.W = -value.W;\n            return vector4;\n        }\n\n        /// <summary>\n        /// Returns a vector pointing in the opposite direction.\n        /// </summary>\n        /// <param name=\"value\">Source vector.</param><param name=\"result\">[OutAttribute] Vector pointing in the opposite direction.</param>\n        public static void Negate(ref Vector4 value, out Vector4 result)\n        {\n            result.X = -value.X;\n            result.Y = -value.Y;\n            result.Z = -value.Z;\n            result.W = -value.W;\n        }\n\n        /// <summary>\n        /// Adds two vectors.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"value2\">Source vector.</param>\n        public static Vector4 Add(Vector4 value1, Vector4 value2)\n        {\n            Vector4 vector4;\n            vector4.X = value1.X + value2.X;\n            vector4.Y = value1.Y + value2.Y;\n            vector4.Z = value1.Z + value2.Z;\n            vector4.W = value1.W + value2.W;\n            return vector4;\n        }\n\n        /// <summary>\n        /// Adds two vectors.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"value2\">Source vector.</param><param name=\"result\">[OutAttribute] Sum of the source vectors.</param>\n        public static void Add(ref Vector4 value1, ref Vector4 value2, out Vector4 result)\n        {\n            result.X = value1.X + value2.X;\n            result.Y = value1.Y + value2.Y;\n            result.Z = value1.Z + value2.Z;\n            result.W = value1.W + value2.W;\n        }\n\n        /// <summary>\n        /// Subtracts a vector from a vector.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"value2\">Source vector.</param>\n        public static Vector4 Subtract(Vector4 value1, Vector4 value2)\n        {\n            Vector4 vector4;\n            vector4.X = value1.X - value2.X;\n            vector4.Y = value1.Y - value2.Y;\n            vector4.Z = value1.Z - value2.Z;\n            vector4.W = value1.W - value2.W;\n            return vector4;\n        }\n\n        /// <summary>\n        /// Subtracts a vector from a vector.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"value2\">Source vector.</param><param name=\"result\">[OutAttribute] The result of the subtraction.</param>\n        public static void Subtract(ref Vector4 value1, ref Vector4 value2, out Vector4 result)\n        {\n            result.X = value1.X - value2.X;\n            result.Y = value1.Y - value2.Y;\n            result.Z = value1.Z - value2.Z;\n            result.W = value1.W - value2.W;\n        }\n\n        /// <summary>\n        /// Multiplies the components of two vectors by each other.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"value2\">Source vector.</param>\n        public static Vector4 Multiply(Vector4 value1, Vector4 value2)\n        {\n            Vector4 vector4;\n            vector4.X = value1.X * value2.X;\n            vector4.Y = value1.Y * value2.Y;\n            vector4.Z = value1.Z * value2.Z;\n            vector4.W = value1.W * value2.W;\n            return vector4;\n        }\n\n        /// <summary>\n        /// Multiplies the components of two vectors by each other.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"value2\">Source vector.</param><param name=\"result\">[OutAttribute] The result of the multiplication.</param>\n        public static void Multiply(ref Vector4 value1, ref Vector4 value2, out Vector4 result)\n        {\n            result.X = value1.X * value2.X;\n            result.Y = value1.Y * value2.Y;\n            result.Z = value1.Z * value2.Z;\n            result.W = value1.W * value2.W;\n        }\n\n        /// <summary>\n        /// Multiplies a vector by a scalar.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"scaleFactor\">Scalar value.</param>\n        public static Vector4 Multiply(Vector4 value1, float scaleFactor)\n        {\n            Vector4 vector4;\n            vector4.X = value1.X * scaleFactor;\n            vector4.Y = value1.Y * scaleFactor;\n            vector4.Z = value1.Z * scaleFactor;\n            vector4.W = value1.W * scaleFactor;\n            return vector4;\n        }\n\n        /// <summary>\n        /// Multiplies a vector by a scalar value.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"scaleFactor\">Scalar value.</param><param name=\"result\">[OutAttribute] The result of the multiplication.</param>\n        public static void Multiply(ref Vector4 value1, float scaleFactor, out Vector4 result)\n        {\n            result.X = value1.X * scaleFactor;\n            result.Y = value1.Y * scaleFactor;\n            result.Z = value1.Z * scaleFactor;\n            result.W = value1.W * scaleFactor;\n        }\n\n        /// <summary>\n        /// Divides the components of a vector by the components of another vector.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"value2\">Divisor vector.</param>\n        public static Vector4 Divide(Vector4 value1, Vector4 value2)\n        {\n            Vector4 vector4;\n            vector4.X = value1.X / value2.X;\n            vector4.Y = value1.Y / value2.Y;\n            vector4.Z = value1.Z / value2.Z;\n            vector4.W = value1.W / value2.W;\n            return vector4;\n        }\n\n        /// <summary>\n        /// Divides the components of a vector by the components of another vector.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"value2\">The divisor.</param><param name=\"result\">[OutAttribute] The result of the division.</param>\n        public static void Divide(ref Vector4 value1, ref Vector4 value2, out Vector4 result)\n        {\n            result.X = value1.X / value2.X;\n            result.Y = value1.Y / value2.Y;\n            result.Z = value1.Z / value2.Z;\n            result.W = value1.W / value2.W;\n        }\n\n        /// <summary>\n        /// Divides a vector by a scalar value.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"divider\">The divisor.</param>\n        public static Vector4 Divide(Vector4 value1, float divider)\n        {\n            float num = 1f / divider;\n            Vector4 vector4;\n            vector4.X = value1.X * num;\n            vector4.Y = value1.Y * num;\n            vector4.Z = value1.Z * num;\n            vector4.W = value1.W * num;\n            return vector4;\n        }\n\n        /// <summary>\n        /// Divides a vector by a scalar value.\n        /// </summary>\n        /// <param name=\"value1\">Source vector.</param><param name=\"divider\">The divisor.</param><param name=\"result\">[OutAttribute] The result of the division.</param>\n        public static void Divide(ref Vector4 value1, float divider, out Vector4 result)\n        {\n            float num = 1f / divider;\n            result.X = value1.X * num;\n            result.Y = value1.Y * num;\n            result.Z = value1.Z * num;\n            result.W = value1.W * num;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWarsPluginAPI/MinerWarsPluginAPI.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"4.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProductVersion>9.0.30729</ProductVersion>\n    <SchemaVersion>2.0</SchemaVersion>\n    <ProjectGuid>{5609DC59-63E9-4262-90BB-4E31329244B1}</ProjectGuid>\n    <OutputType>Library</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>MinerWars.PluginAPI</RootNamespace>\n    <AssemblyName>MinerWarsPluginAPI</AssemblyName>\n    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>\n    <FileAlignment>512</FileAlignment>\n    <IsWebBootstrapper>false</IsWebBootstrapper>\n    <SignAssembly>false</SignAssembly>\n    <AssemblyOriginatorKeyFile>\n    </AssemblyOriginatorKeyFile>\n    <PublishUrl>publish\\</PublishUrl>\n    <Install>true</Install>\n    <InstallFrom>Disk</InstallFrom>\n    <UpdateEnabled>false</UpdateEnabled>\n    <UpdateMode>Foreground</UpdateMode>\n    <UpdateInterval>7</UpdateInterval>\n    <UpdateIntervalUnits>Days</UpdateIntervalUnits>\n    <UpdatePeriodically>false</UpdatePeriodically>\n    <UpdateRequired>false</UpdateRequired>\n    <MapFileExtensions>true</MapFileExtensions>\n    <ApplicationRevision>0</ApplicationRevision>\n    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>\n    <UseApplicationTrust>false</UseApplicationTrust>\n    <BootstrapperEnabled>true</BootstrapperEnabled>\n    <FileUpgradeFlags>\n    </FileUpgradeFlags>\n    <UpgradeBackupLocation>\n    </UpgradeBackupLocation>\n    <OldToolsVersion>3.5</OldToolsVersion>\n    <TargetFrameworkProfile>\n    </TargetFrameworkProfile>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x86'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x86\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE</DefineConstants>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <ErrorReport>prompt</ErrorReport>\n    <CodeAnalysisIgnoreBuiltInRuleSets>true</CodeAnalysisIgnoreBuiltInRuleSets>\n    <CodeAnalysisIgnoreBuiltInRules>true</CodeAnalysisIgnoreBuiltInRules>\n    <CodeAnalysisFailOnMissingRules>false</CodeAnalysisFailOnMissingRules>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x86'\">\n    <OutputPath>bin\\x86\\Release\\</OutputPath>\n    <DefineConstants>TRACE</DefineConstants>\n    <PlatformTarget>x86</PlatformTarget>\n    <GenerateSerializationAssemblies>On</GenerateSerializationAssemblies>\n    <ErrorReport>prompt</ErrorReport>\n    <CodeAnalysisIgnoreBuiltInRuleSets>false</CodeAnalysisIgnoreBuiltInRuleSets>\n    <CodeAnalysisIgnoreBuiltInRules>false</CodeAnalysisIgnoreBuiltInRules>\n  </PropertyGroup>\n  <ItemGroup>\n    <Reference Include=\"System\" />\n    <Reference Include=\"System.Core\">\n      <RequiredTargetFramework>3.5</RequiredTargetFramework>\n    </Reference>\n    <Reference Include=\"System.Xml.Linq\">\n      <RequiredTargetFramework>3.5</RequiredTargetFramework>\n    </Reference>\n    <Reference Include=\"System.Data.DataSetExtensions\">\n      <RequiredTargetFramework>3.5</RequiredTargetFramework>\n    </Reference>\n    <Reference Include=\"System.Data\" />\n    <Reference Include=\"System.Xml\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Compile Include=\"MyIPlugin.cs\" />\n    <Compile Include=\"MyIPluginHost.cs\" />\n    <Compile Include=\"MyPluginLoader.cs\" />\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n  </ItemGroup>\n  <ItemGroup>\n    <BootstrapperPackage Include=\"Microsoft.Net.Client.3.5\">\n      <Visible>False</Visible>\n      <ProductName>.NET Framework Client Profile</ProductName>\n      <Install>false</Install>\n    </BootstrapperPackage>\n    <BootstrapperPackage Include=\"Microsoft.Net.Framework.2.0\">\n      <Visible>False</Visible>\n      <ProductName>.NET Framework 2.0 %28x86%29</ProductName>\n      <Install>false</Install>\n    </BootstrapperPackage>\n    <BootstrapperPackage Include=\"Microsoft.Net.Framework.3.0\">\n      <Visible>False</Visible>\n      <ProductName>.NET Framework 3.0 %28x86%29</ProductName>\n      <Install>false</Install>\n    </BootstrapperPackage>\n    <BootstrapperPackage Include=\"Microsoft.Net.Framework.3.5\">\n      <Visible>False</Visible>\n      <ProductName>.NET Framework 3.5</ProductName>\n      <Install>false</Install>\n    </BootstrapperPackage>\n    <BootstrapperPackage Include=\"Microsoft.Net.Framework.3.5.SP1\">\n      <Visible>False</Visible>\n      <ProductName>.NET Framework 3.5 SP1</ProductName>\n      <Install>true</Install>\n    </BootstrapperPackage>\n    <BootstrapperPackage Include=\"Microsoft.Windows.Installer.3.1\">\n      <Visible>False</Visible>\n      <ProductName>Windows Installer 3.1</ProductName>\n      <Install>true</Install>\n    </BootstrapperPackage>\n  </ItemGroup>\n  <Import Project=\"$(MSBuildToolsPath)\\Microsoft.CSharp.targets\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "Sources/MinerWarsPluginAPI/MinerWarsPluginAPI3.csproj.user",
    "content": "﻿<Project xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <PropertyGroup>\n    <PublishUrlHistory>\n    </PublishUrlHistory>\n    <InstallUrlHistory>\n    </InstallUrlHistory>\n    <SupportUrlHistory>\n    </SupportUrlHistory>\n    <UpdateUrlHistory>\n    </UpdateUrlHistory>\n    <BootstrapperUrlHistory>\n    </BootstrapperUrlHistory>\n    <ErrorReportUrlHistory>\n    </ErrorReportUrlHistory>\n    <FallbackCulture>en-US</FallbackCulture>\n    <VerifyUploadedFiles>false</VerifyUploadedFiles>\n  </PropertyGroup>\n</Project>"
  },
  {
    "path": "Sources/MinerWarsPluginAPI/MyIPlugin.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace MinerWars.PluginAPI\n{\n    public interface MyIPlugin\n    {\n        MyIPluginHost Host { get; set; }\n        \n        string GetAudioFolder();\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWarsPluginAPI/MyIPluginHost.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace MinerWars.PluginAPI\n{\n    public interface MyIPluginHost\n    {\n        \n    }\n}\n"
  },
  {
    "path": "Sources/MinerWarsPluginAPI/MyPluginLoader.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Reflection;\n\nnamespace MinerWars.PluginAPI\n{\n    public class MyPluginLoader : MyIPluginHost\n    {\n        public MyIPlugin Plugin;\n\n\n        private MyPluginLoader() { }\n\n        //  IMPORTANT: Caller of this constructor must check if dll file exists and better put it into try/catch\n        public MyPluginLoader(string dllPath)\n        {\n            Type objType = null;\n\n            Assembly ass = Assembly.LoadFile(dllPath);\n            objType = ass.GetType(\"MinerWars.SimplePlugin.MySimplePlugin\");\n\n            Plugin = (MyIPlugin)Activator.CreateInstance(objType);\n            Plugin.Host = this;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/MinerWarsPluginAPI/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"MinerWarsPluginAPI\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"Keen Software House\")]\n[assembly: AssemblyProduct(\"MinerWarsPluginAPI\")]\n[assembly: AssemblyCopyright(\"Copyright © Keen Software House 2010\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Setting ComVisible to false makes the types in this assembly not visible \n// to COM components.  If you need to access a type in this assembly from \n// COM, set the ComVisible attribute to true on that type.\n[assembly: ComVisible(false)]\n\n// The following GUID is for the ID of the typelib if this project is exposed to COM\n[assembly: Guid(\"a984179d-1e3d-4638-8771-39cd0efed002\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n"
  },
  {
    "path": "Sources/NativeDAABBTree/CollideArrayWriter.h",
    "content": "#pragma once\n#include \"btDbvt.h\"\n\nstruct CollideArrayWriter: public btDbvt::ICollide\n{\nprivate:\n\tint* nodePointerArray;\n\tint offset;\n\tint offsetEnd;\n\tint count;\n\npublic:\n\tCollideArrayWriter(int* nodePointerArray, int offset, int count)\n\t{\n\t\tthis->nodePointerArray = nodePointerArray;\n\t\tthis->offset = offset;\n\t\tthis->offsetEnd = offset + count;\n\t\tthis->count = 0;\n\t}\n\n\t__forceinline int GetResult()\n\t{\n\t\treturn count;\n\t}\n\n\tvoid Process(const btDbvtNode* left, const btDbvtNode* right)\n\t{\n\t\t// ??\n\t}\n\n\tvoid Process(const btDbvtNode* node)\n\t{\n\t\tif(offset < offsetEnd)\n\t\t{\n\t\t\tnodePointerArray[offset] = node->dataAsInt;\n\t\t\toffset++;\n\t\t\tcount++;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis->count = -1;\n\t\t}\n\t}\n};\n\n"
  },
  {
    "path": "Sources/NativeDAABBTree/CollideArrayWriterSphere.h",
    "content": "#pragma once\n#include \"btdbvt.h\"\n\nclass CollideArrayWriterSphere: public btDbvt::ICollide\n{\nprivate:\n\tint* nodePointerArray;\n\tint offset;\n\tint offsetEnd;\n\tint count;\n\n\tbtVector3 center;\n\tbtScalar radius2;\n\npublic:\n\tCollideArrayWriterSphere(int* nodePointerArray, int offset, int count, btVector3& sphereCenter, btScalar sphereRadius)\n\t{\n\t\tthis->nodePointerArray = nodePointerArray;\n\t\tthis->offset = offset;\n\t\tthis->offsetEnd = offset + count;\n\t\tthis->count = 0;\n\t\tthis->center = sphereCenter;\n\t\tthis->radius2 = sphereRadius * sphereRadius;\n\t}\n\n\t__forceinline int GetResult()\n\t{\n\t\treturn count;\n\t}\n\n\tvoid Process(const btDbvtNode* left, const btDbvtNode* right)\n\t{\n\t\t// ??\n\t}\n\n\tvoid Process(const btDbvtNode* node)\n\t{\n\t\tif(offset < offsetEnd)\n\t\t{\n\t\t\tnodePointerArray[offset] = node->dataAsInt;\n\t\t\toffset++;\n\t\t\tcount++;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis->count = -1;\n\t\t}\n\t}\n\n\tbool Descent(const btDbvtNode* node)\n\t{\n\t\tbtVector3 clamp = center;\n\t\tclamp.setMin(node->volume.Mins());\n\t\tclamp.setMax(node->volume.Maxs());\n\n\t\tbtScalar distance2 = clamp.distance2(center);\n\t\treturn distance2 <= radius2;\n\t}\n};\n\n"
  },
  {
    "path": "Sources/NativeDAABBTree/LinearMath/CMakeLists.txt",
    "content": "\nINCLUDE_DIRECTORIES(\n\t${BULLET_PHYSICS_SOURCE_DIR}/src\n)\n\nSET(LinearMath_SRCS\n\tbtAlignedAllocator.cpp\n\tbtConvexHull.cpp\n\tbtConvexHullComputer.cpp\n\tbtGeometryUtil.cpp\n\tbtPolarDecomposition.cpp\n\tbtQuickprof.cpp\n\tbtSerializer.cpp\n\tbtVector3.cpp\n)\n\nSET(LinearMath_HDRS\n\tbtAabbUtil2.h\n\tbtAlignedAllocator.h\n\tbtAlignedObjectArray.h\n\tbtConvexHull.h\n\tbtConvexHullComputer.h\n\tbtDefaultMotionState.h\n\tbtGeometryUtil.h\n\tbtGrahamScan2dConvexHull.h\n\tbtHashMap.h\n\tbtIDebugDraw.h\n\tbtList.h\n\tbtMatrix3x3.h\n\tbtMinMax.h\n\tbtMotionState.h\n\tbtPolarDecomposition.h\n\tbtPoolAllocator.h\n\tbtQuadWord.h\n\tbtQuaternion.h\n\tbtQuickprof.h\n\tbtRandom.h\n\tbtScalar.h\n\tbtSerializer.h\n\tbtStackAlloc.h\n\tbtTransform.h\n\tbtTransformUtil.h\n\tbtVector3.h\n)\n\nADD_LIBRARY(LinearMath ${LinearMath_SRCS} ${LinearMath_HDRS})\nSET_TARGET_PROPERTIES(LinearMath PROPERTIES VERSION ${BULLET_VERSION})\nSET_TARGET_PROPERTIES(LinearMath PROPERTIES SOVERSION ${BULLET_VERSION})\n\nIF (INSTALL_LIBS)\n\tIF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES)\n\t\t#FILES_MATCHING requires CMake 2.6\n\t\tIF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)\n\t\t\tIF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)\n\t\t\t\tINSTALL(TARGETS LinearMath DESTINATION .)\n\t\t\tELSE (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)\n\t\t\t\tINSTALL(TARGETS LinearMath DESTINATION lib${LIB_SUFFIX})\n\t\t\t\tINSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}\nDESTINATION ${INCLUDE_INSTALL_DIR} FILES_MATCHING PATTERN \"*.h\"  PATTERN\n\".svn\" EXCLUDE PATTERN \"CMakeFiles\" EXCLUDE)\n\t\t\tENDIF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)\n\t\tENDIF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)\n\n\t\tIF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)\n\t\t\tSET_TARGET_PROPERTIES(LinearMath PROPERTIES FRAMEWORK true)\n\t\t\tSET_TARGET_PROPERTIES(LinearMath PROPERTIES PUBLIC_HEADER \"${LinearMath_HDRS}\")\n\t\tENDIF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)\n\tENDIF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES)\nENDIF (INSTALL_LIBS)\n"
  },
  {
    "path": "Sources/NativeDAABBTree/LinearMath/btAabbUtil2.h",
    "content": "/*\nCopyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n\n\n#ifndef BT_AABB_UTIL2\n#define BT_AABB_UTIL2\n\n#include \"btTransform.h\"\n#include \"btVector3.h\"\n#include \"btMinMax.h\"\n\n\n\nSIMD_FORCE_INLINE void AabbExpand (btVector3& aabbMin,\n\t\t\t\t\t\t\t\t   btVector3& aabbMax,\n\t\t\t\t\t\t\t\t   const btVector3& expansionMin,\n\t\t\t\t\t\t\t\t   const btVector3& expansionMax)\n{\n\taabbMin = aabbMin + expansionMin;\n\taabbMax = aabbMax + expansionMax;\n}\n\n/// conservative test for overlap between two aabbs\nSIMD_FORCE_INLINE bool TestPointAgainstAabb2(const btVector3 &aabbMin1, const btVector3 &aabbMax1,\n\t\t\t\t\t\t\t\tconst btVector3 &point)\n{\n\tbool overlap = true;\n\toverlap = (aabbMin1.getX() > point.getX() || aabbMax1.getX() < point.getX()) ? false : overlap;\n\toverlap = (aabbMin1.getZ() > point.getZ() || aabbMax1.getZ() < point.getZ()) ? false : overlap;\n\toverlap = (aabbMin1.getY() > point.getY() || aabbMax1.getY() < point.getY()) ? false : overlap;\n\treturn overlap;\n}\n\n\n/// conservative test for overlap between two aabbs\nSIMD_FORCE_INLINE bool TestAabbAgainstAabb2(const btVector3 &aabbMin1, const btVector3 &aabbMax1,\n\t\t\t\t\t\t\t\tconst btVector3 &aabbMin2, const btVector3 &aabbMax2)\n{\n\tbool overlap = true;\n\toverlap = (aabbMin1.getX() > aabbMax2.getX() || aabbMax1.getX() < aabbMin2.getX()) ? false : overlap;\n\toverlap = (aabbMin1.getZ() > aabbMax2.getZ() || aabbMax1.getZ() < aabbMin2.getZ()) ? false : overlap;\n\toverlap = (aabbMin1.getY() > aabbMax2.getY() || aabbMax1.getY() < aabbMin2.getY()) ? false : overlap;\n\treturn overlap;\n}\n\n/// conservative test for overlap between triangle and aabb\nSIMD_FORCE_INLINE bool TestTriangleAgainstAabb2(const btVector3 *vertices,\n\t\t\t\t\t\t\t\t\tconst btVector3 &aabbMin, const btVector3 &aabbMax)\n{\n\tconst btVector3 &p1 = vertices[0];\n\tconst btVector3 &p2 = vertices[1];\n\tconst btVector3 &p3 = vertices[2];\n\n\tif (btMin(btMin(p1[0], p2[0]), p3[0]) > aabbMax[0]) return false;\n\tif (btMax(btMax(p1[0], p2[0]), p3[0]) < aabbMin[0]) return false;\n\n\tif (btMin(btMin(p1[2], p2[2]), p3[2]) > aabbMax[2]) return false;\n\tif (btMax(btMax(p1[2], p2[2]), p3[2]) < aabbMin[2]) return false;\n  \n\tif (btMin(btMin(p1[1], p2[1]), p3[1]) > aabbMax[1]) return false;\n\tif (btMax(btMax(p1[1], p2[1]), p3[1]) < aabbMin[1]) return false;\n\treturn true;\n}\n\n\nSIMD_FORCE_INLINE int\tbtOutcode(const btVector3& p,const btVector3& halfExtent) \n{\n\treturn (p.getX()  < -halfExtent.getX() ? 0x01 : 0x0) |    \n\t\t   (p.getX() >  halfExtent.getX() ? 0x08 : 0x0) |\n\t\t   (p.getY() < -halfExtent.getY() ? 0x02 : 0x0) |    \n\t\t   (p.getY() >  halfExtent.getY() ? 0x10 : 0x0) |\n\t\t   (p.getZ() < -halfExtent.getZ() ? 0x4 : 0x0) |    \n\t\t   (p.getZ() >  halfExtent.getZ() ? 0x20 : 0x0);\n}\n\n\n\nSIMD_FORCE_INLINE bool btRayAabb2(const btVector3& rayFrom,\n\t\t\t\t\t\t\t\t  const btVector3& rayInvDirection,\n\t\t\t\t\t\t\t\t  const unsigned int raySign[3],\n\t\t\t\t\t\t\t\t  const btVector3 bounds[2],\n\t\t\t\t\t\t\t\t  btScalar& tmin,\n\t\t\t\t\t\t\t\t  btScalar lambda_min,\n\t\t\t\t\t\t\t\t  btScalar lambda_max)\n{\n\tbtScalar tmax, tymin, tymax, tzmin, tzmax;\n\ttmin = (bounds[raySign[0]].getX() - rayFrom.getX()) * rayInvDirection.getX();\n\ttmax = (bounds[1-raySign[0]].getX() - rayFrom.getX()) * rayInvDirection.getX();\n\ttymin = (bounds[raySign[1]].getY() - rayFrom.getY()) * rayInvDirection.getY();\n\ttymax = (bounds[1-raySign[1]].getY() - rayFrom.getY()) * rayInvDirection.getY();\n\n\tif ( (tmin > tymax) || (tymin > tmax) )\n\t\treturn false;\n\n\tif (tymin > tmin)\n\t\ttmin = tymin;\n\n\tif (tymax < tmax)\n\t\ttmax = tymax;\n\n\ttzmin = (bounds[raySign[2]].getZ() - rayFrom.getZ()) * rayInvDirection.getZ();\n\ttzmax = (bounds[1-raySign[2]].getZ() - rayFrom.getZ()) * rayInvDirection.getZ();\n\n\tif ( (tmin > tzmax) || (tzmin > tmax) )\n\t\treturn false;\n\tif (tzmin > tmin)\n\t\ttmin = tzmin;\n\tif (tzmax < tmax)\n\t\ttmax = tzmax;\n\treturn ( (tmin < lambda_max) && (tmax > lambda_min) );\n}\n\nSIMD_FORCE_INLINE bool btRayAabb(const btVector3& rayFrom, \n\t\t\t\t\t\t\t\t const btVector3& rayTo, \n\t\t\t\t\t\t\t\t const btVector3& aabbMin, \n\t\t\t\t\t\t\t\t const btVector3& aabbMax,\n\t\t\t\t\t  btScalar& param, btVector3& normal) \n{\n\tbtVector3 aabbHalfExtent = (aabbMax-aabbMin)* btScalar(0.5);\n\tbtVector3 aabbCenter = (aabbMax+aabbMin)* btScalar(0.5);\n\tbtVector3\tsource = rayFrom - aabbCenter;\n\tbtVector3\ttarget = rayTo - aabbCenter;\n\tint\tsourceOutcode = btOutcode(source,aabbHalfExtent);\n\tint targetOutcode = btOutcode(target,aabbHalfExtent);\n\tif ((sourceOutcode & targetOutcode) == 0x0)\n\t{\n\t\tbtScalar lambda_enter = btScalar(0.0);\n\t\tbtScalar lambda_exit  = param;\n\t\tbtVector3 r = target - source;\n\t\tint i;\n\t\tbtScalar\tnormSign = 1;\n\t\tbtVector3\thitNormal(0,0,0);\n\t\tint bit=1;\n\n\t\tfor (int j=0;j<2;j++)\n\t\t{\n\t\t\tfor (i = 0; i != 3; ++i)\n\t\t\t{\n\t\t\t\tif (sourceOutcode & bit)\n\t\t\t\t{\n\t\t\t\t\tbtScalar lambda = (-source[i] - aabbHalfExtent[i]*normSign) / r[i];\n\t\t\t\t\tif (lambda_enter <= lambda)\n\t\t\t\t\t{\n\t\t\t\t\t\tlambda_enter = lambda;\n\t\t\t\t\t\thitNormal.setValue(0,0,0);\n\t\t\t\t\t\thitNormal[i] = normSign;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if (targetOutcode & bit) \n\t\t\t\t{\n\t\t\t\t\tbtScalar lambda = (-source[i] - aabbHalfExtent[i]*normSign) / r[i];\n\t\t\t\t\tbtSetMin(lambda_exit, lambda);\n\t\t\t\t}\n\t\t\t\tbit<<=1;\n\t\t\t}\n\t\t\tnormSign = btScalar(-1.);\n\t\t}\n\t\tif (lambda_enter <= lambda_exit)\n\t\t{\n\t\t\tparam = lambda_enter;\n\t\t\tnormal = hitNormal;\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n\n\n\nSIMD_FORCE_INLINE\tvoid btTransformAabb(const btVector3& halfExtents, btScalar margin,const btTransform& t,btVector3& aabbMinOut,btVector3& aabbMaxOut)\n{\n\tbtVector3 halfExtentsWithMargin = halfExtents+btVector3(margin,margin,margin);\n\tbtMatrix3x3 abs_b = t.getBasis().absolute();  \n\tbtVector3 center = t.getOrigin();\n    btVector3 extent = halfExtentsWithMargin.dot3( abs_b[0], abs_b[1], abs_b[2] );\n\taabbMinOut = center - extent;\n\taabbMaxOut = center + extent;\n}\n\n\nSIMD_FORCE_INLINE\tvoid btTransformAabb(const btVector3& localAabbMin,const btVector3& localAabbMax, btScalar margin,const btTransform& trans,btVector3& aabbMinOut,btVector3& aabbMaxOut)\n{\n\t\tbtAssert(localAabbMin.getX() <= localAabbMax.getX());\n\t\tbtAssert(localAabbMin.getY() <= localAabbMax.getY());\n\t\tbtAssert(localAabbMin.getZ() <= localAabbMax.getZ());\n\t\tbtVector3 localHalfExtents = btScalar(0.5)*(localAabbMax-localAabbMin);\n\t\tlocalHalfExtents+=btVector3(margin,margin,margin);\n\n\t\tbtVector3 localCenter = btScalar(0.5)*(localAabbMax+localAabbMin);\n\t\tbtMatrix3x3 abs_b = trans.getBasis().absolute();  \n\t\tbtVector3 center = trans(localCenter);\n        btVector3 extent = localHalfExtents.dot3( abs_b[0], abs_b[1], abs_b[2] );\n\t\taabbMinOut = center-extent;\n\t\taabbMaxOut = center+extent;\n}\n\n#define USE_BANCHLESS 1\n#ifdef USE_BANCHLESS\n\t//This block replaces the block below and uses no branches, and replaces the 8 bit return with a 32 bit return for improved performance (~3x on XBox 360)\n\tSIMD_FORCE_INLINE unsigned testQuantizedAabbAgainstQuantizedAabb(const unsigned short int* aabbMin1,const unsigned short int* aabbMax1,const unsigned short int* aabbMin2,const unsigned short int* aabbMax2)\n\t{\t\t\n\t\treturn static_cast<unsigned int>(btSelect((unsigned)((aabbMin1[0] <= aabbMax2[0]) & (aabbMax1[0] >= aabbMin2[0])\n\t\t\t& (aabbMin1[2] <= aabbMax2[2]) & (aabbMax1[2] >= aabbMin2[2])\n\t\t\t& (aabbMin1[1] <= aabbMax2[1]) & (aabbMax1[1] >= aabbMin2[1])),\n\t\t\t1, 0));\n\t}\n#else\n\tSIMD_FORCE_INLINE bool testQuantizedAabbAgainstQuantizedAabb(const unsigned short int* aabbMin1,const unsigned short int* aabbMax1,const unsigned short int* aabbMin2,const unsigned short int* aabbMax2)\n\t{\n\t\tbool overlap = true;\n\t\toverlap = (aabbMin1[0] > aabbMax2[0] || aabbMax1[0] < aabbMin2[0]) ? false : overlap;\n\t\toverlap = (aabbMin1[2] > aabbMax2[2] || aabbMax1[2] < aabbMin2[2]) ? false : overlap;\n\t\toverlap = (aabbMin1[1] > aabbMax2[1] || aabbMax1[1] < aabbMin2[1]) ? false : overlap;\n\t\treturn overlap;\n\t}\n#endif //USE_BANCHLESS\n\n#endif //BT_AABB_UTIL2\n\n\n"
  },
  {
    "path": "Sources/NativeDAABBTree/LinearMath/btAlignedAllocator.cpp",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose,\nincluding commercial applications, and to alter it and redistribute it freely,\nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#include \"btAlignedAllocator.h\"\n\nint gNumAlignedAllocs = 0;\nint gNumAlignedFree = 0;\nint gTotalBytesAlignedAllocs = 0;//detect memory leaks\n\nstatic void *btAllocDefault(size_t size)\n{\n\treturn malloc(size);\n}\n\nstatic void btFreeDefault(void *ptr)\n{\n\tfree(ptr);\n}\n\nstatic btAllocFunc *sAllocFunc = btAllocDefault;\nstatic btFreeFunc *sFreeFunc = btFreeDefault;\n\n\n\n#if defined (BT_HAS_ALIGNED_ALLOCATOR)\n#include <malloc.h>\nstatic void *btAlignedAllocDefault(size_t size, int alignment)\n{\n\treturn _aligned_malloc(size, (size_t)alignment);\n}\n\nstatic void btAlignedFreeDefault(void *ptr)\n{\n\t_aligned_free(ptr);\n}\n#elif defined(__CELLOS_LV2__)\n#include <stdlib.h>\n\nstatic inline void *btAlignedAllocDefault(size_t size, int alignment)\n{\n\treturn memalign(alignment, size);\n}\n\nstatic inline void btAlignedFreeDefault(void *ptr)\n{\n\tfree(ptr);\n}\n#else\n\n\n\n\n\nstatic inline void *btAlignedAllocDefault(size_t size, int alignment)\n{\n  void *ret;\n  char *real;\n  real = (char *)sAllocFunc(size + sizeof(void *) + (alignment-1));\n  if (real) {\n\tret = btAlignPointer(real + sizeof(void *),alignment);\n    *((void **)(ret)-1) = (void *)(real);\n  } else {\n    ret = (void *)(real);\n  }\n  return (ret);\n}\n\nstatic inline void btAlignedFreeDefault(void *ptr)\n{\n  void* real;\n\n  if (ptr) {\n    real = *((void **)(ptr)-1);\n    sFreeFunc(real);\n  }\n}\n#endif\n\n\nstatic btAlignedAllocFunc *sAlignedAllocFunc = btAlignedAllocDefault;\nstatic btAlignedFreeFunc *sAlignedFreeFunc = btAlignedFreeDefault;\n\nvoid btAlignedAllocSetCustomAligned(btAlignedAllocFunc *allocFunc, btAlignedFreeFunc *freeFunc)\n{\n  sAlignedAllocFunc = allocFunc ? allocFunc : btAlignedAllocDefault;\n  sAlignedFreeFunc = freeFunc ? freeFunc : btAlignedFreeDefault;\n}\n\nvoid btAlignedAllocSetCustom(btAllocFunc *allocFunc, btFreeFunc *freeFunc)\n{\n  sAllocFunc = allocFunc ? allocFunc : btAllocDefault;\n  sFreeFunc = freeFunc ? freeFunc : btFreeDefault;\n}\n\n#ifdef BT_DEBUG_MEMORY_ALLOCATIONS\n//this generic allocator provides the total allocated number of bytes\n#include <stdio.h>\n\nvoid*   btAlignedAllocInternal  (size_t size, int alignment,int line,char* filename)\n{\n void *ret;\n char *real;\n\n gTotalBytesAlignedAllocs += size;\n gNumAlignedAllocs++;\n\n \n real = (char *)sAllocFunc(size + 2*sizeof(void *) + (alignment-1));\n if (real) {\n   ret = (void*) btAlignPointer(real + 2*sizeof(void *), alignment);\n   *((void **)(ret)-1) = (void *)(real);\n       *((int*)(ret)-2) = size;\n\n } else {\n   ret = (void *)(real);//??\n }\n\n printf(\"allocation#%d at address %x, from %s,line %d, size %d\\n\",gNumAlignedAllocs,real, filename,line,size);\n\n int* ptr = (int*)ret;\n *ptr = 12;\n return (ret);\n}\n\nvoid    btAlignedFreeInternal   (void* ptr,int line,char* filename)\n{\n\n void* real;\n gNumAlignedFree++;\n\n if (ptr) {\n   real = *((void **)(ptr)-1);\n       int size = *((int*)(ptr)-2);\n       gTotalBytesAlignedAllocs -= size;\n\n\t   printf(\"free #%d at address %x, from %s,line %d, size %d\\n\",gNumAlignedFree,real, filename,line,size);\n\n   sFreeFunc(real);\n } else\n {\n\t printf(\"NULL ptr\\n\");\n }\n}\n\n#else //BT_DEBUG_MEMORY_ALLOCATIONS\n\nvoid*\tbtAlignedAllocInternal\t(size_t size, int alignment)\n{\n\tgNumAlignedAllocs++;\n\tvoid* ptr;\n\tptr = sAlignedAllocFunc(size, alignment);\n//\tprintf(\"btAlignedAllocInternal %d, %x\\n\",size,ptr);\n\treturn ptr;\n}\n\nvoid\tbtAlignedFreeInternal\t(void* ptr)\n{\n\tif (!ptr)\n\t{\n\t\treturn;\n\t}\n\n\tgNumAlignedFree++;\n//\tprintf(\"btAlignedFreeInternal %x\\n\",ptr);\n\tsAlignedFreeFunc(ptr);\n}\n\n#endif //BT_DEBUG_MEMORY_ALLOCATIONS\n\n"
  },
  {
    "path": "Sources/NativeDAABBTree/LinearMath/btAlignedAllocator.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose,\nincluding commercial applications, and to alter it and redistribute it freely,\nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_ALIGNED_ALLOCATOR\n#define BT_ALIGNED_ALLOCATOR\n\n///we probably replace this with our own aligned memory allocator\n///so we replace _aligned_malloc and _aligned_free with our own\n///that is better portable and more predictable\n\n#include \"btScalar.h\"\n//#define BT_DEBUG_MEMORY_ALLOCATIONS 1\n#ifdef BT_DEBUG_MEMORY_ALLOCATIONS\n\n#define btAlignedAlloc(a,b) \\\n\t\tbtAlignedAllocInternal(a,b,__LINE__,__FILE__)\n\n#define btAlignedFree(ptr) \\\n\t\tbtAlignedFreeInternal(ptr,__LINE__,__FILE__)\n\nvoid*\tbtAlignedAllocInternal\t(size_t size, int alignment,int line,char* filename);\n\nvoid\tbtAlignedFreeInternal\t(void* ptr,int line,char* filename);\n\n#else\n\tvoid*\tbtAlignedAllocInternal\t(size_t size, int alignment);\n\tvoid\tbtAlignedFreeInternal\t(void* ptr);\n\n\t#define btAlignedAlloc(size,alignment) btAlignedAllocInternal(size,alignment)\n\t#define btAlignedFree(ptr) btAlignedFreeInternal(ptr)\n\n#endif\ntypedef int\tsize_type;\n\ntypedef void *(btAlignedAllocFunc)(size_t size, int alignment);\ntypedef void (btAlignedFreeFunc)(void *memblock);\ntypedef void *(btAllocFunc)(size_t size);\ntypedef void (btFreeFunc)(void *memblock);\n\n///The developer can let all Bullet memory allocations go through a custom memory allocator, using btAlignedAllocSetCustom\nvoid btAlignedAllocSetCustom(btAllocFunc *allocFunc, btFreeFunc *freeFunc);\n///If the developer has already an custom aligned allocator, then btAlignedAllocSetCustomAligned can be used. The default aligned allocator pre-allocates extra memory using the non-aligned allocator, and instruments it.\nvoid btAlignedAllocSetCustomAligned(btAlignedAllocFunc *allocFunc, btAlignedFreeFunc *freeFunc);\n\n\n///The btAlignedAllocator is a portable class for aligned memory allocations.\n///Default implementations for unaligned and aligned allocations can be overridden by a custom allocator using btAlignedAllocSetCustom and btAlignedAllocSetCustomAligned.\ntemplate < typename T , unsigned Alignment >\nclass btAlignedAllocator {\n\t\n\ttypedef btAlignedAllocator< T , Alignment > self_type;\n\t\npublic:\n\n\t//just going down a list:\n\tbtAlignedAllocator() {}\n\t/*\n\tbtAlignedAllocator( const self_type & ) {}\n\t*/\n\n\ttemplate < typename Other >\n\tbtAlignedAllocator( const btAlignedAllocator< Other , Alignment > & ) {}\n\n\ttypedef const T*         const_pointer;\n\ttypedef const T&         const_reference;\n\ttypedef T*               pointer;\n\ttypedef T&               reference;\n\ttypedef T                value_type;\n\n\tpointer       address   ( reference        ref ) const                           { return &ref; }\n\tconst_pointer address   ( const_reference  ref ) const                           { return &ref; }\n\tpointer       allocate  ( size_type        n   , const_pointer *      hint = 0 ) {\n\t\t(void)hint;\n\t\treturn reinterpret_cast< pointer >(btAlignedAlloc( sizeof(value_type) * n , Alignment ));\n\t}\n\tvoid          construct ( pointer          ptr , const value_type &   value    ) { new (ptr) value_type( value ); }\n\tvoid          deallocate( pointer          ptr ) {\n\t\tbtAlignedFree( reinterpret_cast< void * >( ptr ) );\n\t}\n\tvoid          destroy   ( pointer          ptr )                                 { ptr->~value_type(); }\n\t\n\n\ttemplate < typename O > struct rebind {\n\t\ttypedef btAlignedAllocator< O , Alignment > other;\n\t};\n\ttemplate < typename O >\n\tself_type & operator=( const btAlignedAllocator< O , Alignment > & ) { return *this; }\n\n\tfriend bool operator==( const self_type & , const self_type & ) { return true; }\n};\n\n\n\n#endif //BT_ALIGNED_ALLOCATOR\n\n"
  },
  {
    "path": "Sources/NativeDAABBTree/LinearMath/btAlignedObjectArray.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n\n#ifndef BT_OBJECT_ARRAY__\n#define BT_OBJECT_ARRAY__\n\n#include \"btScalar.h\" // has definitions like SIMD_FORCE_INLINE\n#include \"btAlignedAllocator.h\"\n\n///If the platform doesn't support placement new, you can disable BT_USE_PLACEMENT_NEW\n///then the btAlignedObjectArray doesn't support objects with virtual methods, and non-trivial constructors/destructors\n///You can enable BT_USE_MEMCPY, then swapping elements in the array will use memcpy instead of operator=\n///see discussion here: http://continuousphysics.com/Bullet/phpBB2/viewtopic.php?t=1231 and\n///http://www.continuousphysics.com/Bullet/phpBB2/viewtopic.php?t=1240\n\n#define BT_USE_PLACEMENT_NEW 1\n//#define BT_USE_MEMCPY 1 //disable, because it is cumbersome to find out for each platform where memcpy is defined. It can be in <memory.h> or <string.h> or otherwise...\n#define BT_ALLOW_ARRAY_COPY_OPERATOR // enabling this can accidently perform deep copies of data if you are not careful\n\n#ifdef BT_USE_MEMCPY\n#include <memory.h>\n#include <string.h>\n#endif //BT_USE_MEMCPY\n\n#ifdef BT_USE_PLACEMENT_NEW\n#include <new> //for placement new\n#endif //BT_USE_PLACEMENT_NEW\n\n\n///The btAlignedObjectArray template class uses a subset of the stl::vector interface for its methods\n///It is developed to replace stl::vector to avoid portability issues, including STL alignment issues to add SIMD/SSE data\ntemplate <typename T> \n//template <class T> \nclass btAlignedObjectArray\n{\n\tbtAlignedAllocator<T , 16>\tm_allocator;\n\n\tint\t\t\t\t\tm_size;\n\tint\t\t\t\t\tm_capacity;\n\tT*\t\t\t\t\tm_data;\n\t//PCK: added this line\n\tbool\t\t\t\tm_ownsMemory;\n\n#ifdef BT_ALLOW_ARRAY_COPY_OPERATOR\npublic:\n\tSIMD_FORCE_INLINE btAlignedObjectArray<T>& operator=(const btAlignedObjectArray<T> &other)\n\t{\n\t\tcopyFromArray(other);\n\t\treturn *this;\n\t}\n#else//BT_ALLOW_ARRAY_COPY_OPERATOR\nprivate:\n\t\tSIMD_FORCE_INLINE btAlignedObjectArray<T>& operator=(const btAlignedObjectArray<T> &other);\n#endif//BT_ALLOW_ARRAY_COPY_OPERATOR\n\nprotected:\n\t\tSIMD_FORCE_INLINE\tint\tallocSize(int size)\n\t\t{\n\t\t\treturn (size ? size*2 : 1);\n\t\t}\n\t\tSIMD_FORCE_INLINE\tvoid\tcopy(int start,int end, T* dest) const\n\t\t{\n\t\t\tint i;\n\t\t\tfor (i=start;i<end;++i)\n#ifdef BT_USE_PLACEMENT_NEW\n\t\t\t\tnew (&dest[i]) T(m_data[i]);\n#else\n\t\t\t\tdest[i] = m_data[i];\n#endif //BT_USE_PLACEMENT_NEW\n\t\t}\n\n\t\tSIMD_FORCE_INLINE\tvoid\tinit()\n\t\t{\n\t\t\t//PCK: added this line\n\t\t\tm_ownsMemory = true;\n\t\t\tm_data = 0;\n\t\t\tm_size = 0;\n\t\t\tm_capacity = 0;\n\t\t}\n\t\tSIMD_FORCE_INLINE\tvoid\tdestroy(int first,int last)\n\t\t{\n\t\t\tint i;\n\t\t\tfor (i=first; i<last;i++)\n\t\t\t{\n\t\t\t\tm_data[i].~T();\n\t\t\t}\n\t\t}\n\n\t\tSIMD_FORCE_INLINE\tvoid* allocate(int size)\n\t\t{\n\t\t\tif (size)\n\t\t\t\treturn m_allocator.allocate(size);\n\t\t\treturn 0;\n\t\t}\n\n\t\tSIMD_FORCE_INLINE\tvoid\tdeallocate()\n\t\t{\n\t\t\tif(m_data)\t{\n\t\t\t\t//PCK: enclosed the deallocation in this block\n\t\t\t\tif (m_ownsMemory)\n\t\t\t\t{\n\t\t\t\t\tm_allocator.deallocate(m_data);\n\t\t\t\t}\n\t\t\t\tm_data = 0;\n\t\t\t}\n\t\t}\n\n\t\n\n\n\tpublic:\n\t\t\n\t\tbtAlignedObjectArray()\n\t\t{\n\t\t\tinit();\n\t\t}\n\n\t\t~btAlignedObjectArray()\n\t\t{\n\t\t\tclear();\n\t\t}\n\n\t\t///Generally it is best to avoid using the copy constructor of an btAlignedObjectArray, and use a (const) reference to the array instead.\n\t\tbtAlignedObjectArray(const btAlignedObjectArray& otherArray)\n\t\t{\n\t\t\tinit();\n\n\t\t\tint otherSize = otherArray.size();\n\t\t\tresize (otherSize);\n\t\t\totherArray.copy(0, otherSize, m_data);\n\t\t}\n\n\t\t\n\t\t\n\t\t/// return the number of elements in the array\n\t\tSIMD_FORCE_INLINE\tint size() const\n\t\t{\t\n\t\t\treturn m_size;\n\t\t}\n\t\t\n\t\tSIMD_FORCE_INLINE const T& at(int n) const\n\t\t{\n\t\t\tbtAssert(n>=0);\n\t\t\tbtAssert(n<size());\n\t\t\treturn m_data[n];\n\t\t}\n\n\t\tSIMD_FORCE_INLINE T& at(int n)\n\t\t{\n\t\t\tbtAssert(n>=0);\n\t\t\tbtAssert(n<size());\n\t\t\treturn m_data[n];\n\t\t}\n\n\t\tSIMD_FORCE_INLINE const T& operator[](int n) const\n\t\t{\n\t\t\tbtAssert(n>=0);\n\t\t\tbtAssert(n<size());\n\t\t\treturn m_data[n];\n\t\t}\n\n\t\tSIMD_FORCE_INLINE T& operator[](int n)\n\t\t{\n\t\t\tbtAssert(n>=0);\n\t\t\tbtAssert(n<size());\n\t\t\treturn m_data[n];\n\t\t}\n\t\t\n\n\t\t///clear the array, deallocated memory. Generally it is better to use array.resize(0), to reduce performance overhead of run-time memory (de)allocations.\n\t\tSIMD_FORCE_INLINE\tvoid\tclear()\n\t\t{\n\t\t\tdestroy(0,size());\n\t\t\t\n\t\t\tdeallocate();\n\t\t\t\n\t\t\tinit();\n\t\t}\n\n\t\tSIMD_FORCE_INLINE\tvoid\tpop_back()\n\t\t{\n\t\t\tbtAssert(m_size>0);\n\t\t\tm_size--;\n\t\t\tm_data[m_size].~T();\n\t\t}\n\n\n\t\t///resize changes the number of elements in the array. If the new size is larger, the new elements will be constructed using the optional second argument.\n\t\t///when the new number of elements is smaller, the destructor will be called, but memory will not be freed, to reduce performance overhead of run-time memory (de)allocations.\n\t\tSIMD_FORCE_INLINE\tvoid\tresizeNoInitialize(int newsize)\n\t\t{\n\t\t\tint curSize = size();\n\n\t\t\tif (newsize < curSize)\n\t\t\t{\n\t\t\t} else\n\t\t\t{\n\t\t\t\tif (newsize > size())\n\t\t\t\t{\n\t\t\t\t\treserve(newsize);\n\t\t\t\t}\n\t\t\t\t//leave this uninitialized\n\t\t\t}\n\t\t\tm_size = newsize;\n\t\t}\n\t\n\t\tSIMD_FORCE_INLINE\tvoid\tresize(int newsize, const T& fillData=T())\n\t\t{\n\t\t\tint curSize = size();\n\n\t\t\tif (newsize < curSize)\n\t\t\t{\n\t\t\t\tfor(int i = newsize; i < curSize; i++)\n\t\t\t\t{\n\t\t\t\t\tm_data[i].~T();\n\t\t\t\t}\n\t\t\t} else\n\t\t\t{\n\t\t\t\tif (newsize > size())\n\t\t\t\t{\n\t\t\t\t\treserve(newsize);\n\t\t\t\t}\n#ifdef BT_USE_PLACEMENT_NEW\n\t\t\t\tfor (int i=curSize;i<newsize;i++)\n\t\t\t\t{\n\t\t\t\t\tnew ( &m_data[i]) T(fillData);\n\t\t\t\t}\n#endif //BT_USE_PLACEMENT_NEW\n\n\t\t\t}\n\n\t\t\tm_size = newsize;\n\t\t}\n\t\tSIMD_FORCE_INLINE\tT&  expandNonInitializing( )\n\t\t{\t\n\t\t\tint sz = size();\n\t\t\tif( sz == capacity() )\n\t\t\t{\n\t\t\t\treserve( allocSize(size()) );\n\t\t\t}\n\t\t\tm_size++;\n\n\t\t\treturn m_data[sz];\t\t\n\t\t}\n\n\n\t\tSIMD_FORCE_INLINE\tT&  expand( const T& fillValue=T())\n\t\t{\t\n\t\t\tint sz = size();\n\t\t\tif( sz == capacity() )\n\t\t\t{\n\t\t\t\treserve( allocSize(size()) );\n\t\t\t}\n\t\t\tm_size++;\n#ifdef BT_USE_PLACEMENT_NEW\n\t\t\tnew (&m_data[sz]) T(fillValue); //use the in-place new (not really allocating heap memory)\n#endif\n\n\t\t\treturn m_data[sz];\t\t\n\t\t}\n\n\n\t\tSIMD_FORCE_INLINE\tvoid push_back(const T& _Val)\n\t\t{\t\n\t\t\tint sz = size();\n\t\t\tif( sz == capacity() )\n\t\t\t{\n\t\t\t\treserve( allocSize(size()) );\n\t\t\t}\n\t\t\t\n#ifdef BT_USE_PLACEMENT_NEW\n\t\t\tnew ( &m_data[m_size] ) T(_Val);\n#else\n\t\t\tm_data[size()] = _Val;\t\t\t\n#endif //BT_USE_PLACEMENT_NEW\n\n\t\t\tm_size++;\n\t\t}\n\n\t\n\t\t/// return the pre-allocated (reserved) elements, this is at least as large as the total number of elements,see size() and reserve()\n\t\tSIMD_FORCE_INLINE\tint capacity() const\n\t\t{\t\n\t\t\treturn m_capacity;\n\t\t}\n\t\t\n\t\tSIMD_FORCE_INLINE\tvoid reserve(int _Count)\n\t\t{\t// determine new minimum length of allocated storage\n\t\t\tif (capacity() < _Count)\n\t\t\t{\t// not enough room, reallocate\n\t\t\t\tT*\ts = (T*)allocate(_Count);\n\n\t\t\t\tcopy(0, size(), s);\n\n\t\t\t\tdestroy(0,size());\n\n\t\t\t\tdeallocate();\n\t\t\t\t\n\t\t\t\t//PCK: added this line\n\t\t\t\tm_ownsMemory = true;\n\n\t\t\t\tm_data = s;\n\t\t\t\t\n\t\t\t\tm_capacity = _Count;\n\n\t\t\t}\n\t\t}\n\n\n\t\tclass less\n\t\t{\n\t\t\tpublic:\n\n\t\t\t\tbool operator() ( const T& a, const T& b )\n\t\t\t\t{\n\t\t\t\t\treturn ( a < b );\n\t\t\t\t}\n\t\t};\n\t\n\n\t\ttemplate <typename L>\n\t\tvoid quickSortInternal(const L& CompareFunc,int lo, int hi)\n\t\t{\n\t\t//  lo is the lower index, hi is the upper index\n\t\t//  of the region of array a that is to be sorted\n\t\t\tint i=lo, j=hi;\n\t\t\tT x=m_data[(lo+hi)/2];\n\n\t\t\t//  partition\n\t\t\tdo\n\t\t\t{    \n\t\t\t\twhile (CompareFunc(m_data[i],x)) \n\t\t\t\t\ti++; \n\t\t\t\twhile (CompareFunc(x,m_data[j])) \n\t\t\t\t\tj--;\n\t\t\t\tif (i<=j)\n\t\t\t\t{\n\t\t\t\t\tswap(i,j);\n\t\t\t\t\ti++; j--;\n\t\t\t\t}\n\t\t\t} while (i<=j);\n\n\t\t\t//  recursion\n\t\t\tif (lo<j) \n\t\t\t\tquickSortInternal( CompareFunc, lo, j);\n\t\t\tif (i<hi) \n\t\t\t\tquickSortInternal( CompareFunc, i, hi);\n\t\t}\n\n\n\t\ttemplate <typename L>\n\t\tvoid quickSort(const L& CompareFunc)\n\t\t{\n\t\t\t//don't sort 0 or 1 elements\n\t\t\tif (size()>1)\n\t\t\t{\n\t\t\t\tquickSortInternal(CompareFunc,0,size()-1);\n\t\t\t}\n\t\t}\n\n\n\t\t///heap sort from http://www.csse.monash.edu.au/~lloyd/tildeAlgDS/Sort/Heap/\n\t\ttemplate <typename L>\n\t\tvoid downHeap(T *pArr, int k, int n, const L& CompareFunc)\n\t\t{\n\t\t\t/*  PRE: a[k+1..N] is a heap */\n\t\t\t/* POST:  a[k..N]  is a heap */\n\t\t\t\n\t\t\tT temp = pArr[k - 1];\n\t\t\t/* k has child(s) */\n\t\t\twhile (k <= n/2) \n\t\t\t{\n\t\t\t\tint child = 2*k;\n\t\t\t\t\n\t\t\t\tif ((child < n) && CompareFunc(pArr[child - 1] , pArr[child]))\n\t\t\t\t{\n\t\t\t\t\tchild++;\n\t\t\t\t}\n\t\t\t\t/* pick larger child */\n\t\t\t\tif (CompareFunc(temp , pArr[child - 1]))\n\t\t\t\t{\n\t\t\t\t\t/* move child up */\n\t\t\t\t\tpArr[k - 1] = pArr[child - 1];\n\t\t\t\t\tk = child;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tpArr[k - 1] = temp;\n\t\t} /*downHeap*/\n\n\t\tvoid\tswap(int index0,int index1)\n\t\t{\n#ifdef BT_USE_MEMCPY\n\t\t\tchar\ttemp[sizeof(T)];\n\t\t\tmemcpy(temp,&m_data[index0],sizeof(T));\n\t\t\tmemcpy(&m_data[index0],&m_data[index1],sizeof(T));\n\t\t\tmemcpy(&m_data[index1],temp,sizeof(T));\n#else\n\t\t\tT temp = m_data[index0];\n\t\t\tm_data[index0] = m_data[index1];\n\t\t\tm_data[index1] = temp;\n#endif //BT_USE_PLACEMENT_NEW\n\n\t\t}\n\n\ttemplate <typename L>\n\tvoid heapSort(const L& CompareFunc)\n\t{\n\t\t/* sort a[0..N-1],  N.B. 0 to N-1 */\n\t\tint k;\n\t\tint n = m_size;\n\t\tfor (k = n/2; k > 0; k--) \n\t\t{\n\t\t\tdownHeap(m_data, k, n, CompareFunc);\n\t\t}\n\n\t\t/* a[1..N] is now a heap */\n\t\twhile ( n>=1 ) \n\t\t{\n\t\t\tswap(0,n-1); /* largest of a[0..n-1] */\n\n\n\t\t\tn = n - 1;\n\t\t\t/* restore a[1..i-1] heap */\n\t\t\tdownHeap(m_data, 1, n, CompareFunc);\n\t\t} \n\t}\n\n\t///non-recursive binary search, assumes sorted array\n\tint\tfindBinarySearch(const T& key) const\n\t{\n\t\tint first = 0;\n\t\tint last = size()-1;\n\n\t\t//assume sorted array\n\t\twhile (first <= last) {\n\t\t\tint mid = (first + last) / 2;  // compute mid point.\n\t\t\tif (key > m_data[mid]) \n\t\t\t\tfirst = mid + 1;  // repeat search in top half.\n\t\t\telse if (key < m_data[mid]) \n\t\t\t\tlast = mid - 1; // repeat search in bottom half.\n\t\t\telse\n\t\t\t\treturn mid;     // found it. return position /////\n\t\t}\n\t\treturn size();    // failed to find key\n\t}\n\n\n\tint\tfindLinearSearch(const T& key) const\n\t{\n\t\tint index=size();\n\t\tint i;\n\n\t\tfor (i=0;i<size();i++)\n\t\t{\n\t\t\tif (m_data[i] == key)\n\t\t\t{\n\t\t\t\tindex = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\treturn index;\n\t}\n\n\tvoid\tremove(const T& key)\n\t{\n\n\t\tint findIndex = findLinearSearch(key);\n\t\tif (findIndex<size())\n\t\t{\n\t\t\tswap( findIndex,size()-1);\n\t\t\tpop_back();\n\t\t}\n\t}\n\n\t//PCK: whole function\n\tvoid initializeFromBuffer(void *buffer, int size, int capacity)\n\t{\n\t\tclear();\n\t\tm_ownsMemory = false;\n\t\tm_data = (T*)buffer;\n\t\tm_size = size;\n\t\tm_capacity = capacity;\n\t}\n\n\tvoid copyFromArray(const btAlignedObjectArray& otherArray)\n\t{\n\t\tint otherSize = otherArray.size();\n\t\tresize (otherSize);\n\t\totherArray.copy(0, otherSize, m_data);\n\t}\n\n};\n\n#endif //BT_OBJECT_ARRAY__\n"
  },
  {
    "path": "Sources/NativeDAABBTree/LinearMath/btConvexHull.cpp",
    "content": "/*\nStan Melax Convex Hull Computation\nCopyright (c) 2003-2006 Stan Melax http://www.melax.com/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#include <string.h>\n\n#include \"btConvexHull.h\"\n#include \"btAlignedObjectArray.h\"\n#include \"btMinMax.h\"\n#include \"btVector3.h\"\n\n\n\n\n\n//----------------------------------\n\nclass int3  \n{\npublic:\n\tint x,y,z;\n\tint3(){};\n\tint3(int _x,int _y, int _z){x=_x;y=_y;z=_z;}\n\tconst int& operator[](int i) const {return (&x)[i];}\n\tint& operator[](int i) {return (&x)[i];}\n};\n\n\n//------- btPlane ----------\n\n\ninline btPlane PlaneFlip(const btPlane &plane){return btPlane(-plane.normal,-plane.dist);}\ninline int operator==( const btPlane &a, const btPlane &b ) { return (a.normal==b.normal && a.dist==b.dist); }\ninline int coplanar( const btPlane &a, const btPlane &b ) { return (a==b || a==PlaneFlip(b)); }\n\n\n//--------- Utility Functions ------\n\nbtVector3  PlaneLineIntersection(const btPlane &plane, const btVector3 &p0, const btVector3 &p1);\nbtVector3  PlaneProject(const btPlane &plane, const btVector3 &point);\n\nbtVector3  ThreePlaneIntersection(const btPlane &p0,const btPlane &p1, const btPlane &p2);\nbtVector3  ThreePlaneIntersection(const btPlane &p0,const btPlane &p1, const btPlane &p2)\n{\n\tbtVector3 N1 = p0.normal;\n\tbtVector3 N2 = p1.normal;\n\tbtVector3 N3 = p2.normal;\n\n\tbtVector3 n2n3; n2n3 = N2.cross(N3);\n\tbtVector3 n3n1; n3n1 = N3.cross(N1);\n\tbtVector3 n1n2; n1n2 = N1.cross(N2);\n\n\tbtScalar quotient = (N1.dot(n2n3));\n\n\tbtAssert(btFabs(quotient) > btScalar(0.000001));\n\t\n\tquotient = btScalar(-1.) / quotient;\n\tn2n3 *= p0.dist;\n\tn3n1 *= p1.dist;\n\tn1n2 *= p2.dist;\n\tbtVector3 potentialVertex = n2n3;\n\tpotentialVertex += n3n1;\n\tpotentialVertex += n1n2;\n\tpotentialVertex *= quotient;\n\n\tbtVector3 result(potentialVertex.getX(),potentialVertex.getY(),potentialVertex.getZ());\n\treturn result;\n\n}\n\nbtScalar   DistanceBetweenLines(const btVector3 &ustart, const btVector3 &udir, const btVector3 &vstart, const btVector3 &vdir, btVector3 *upoint=NULL, btVector3 *vpoint=NULL);\nbtVector3  TriNormal(const btVector3 &v0, const btVector3 &v1, const btVector3 &v2);\nbtVector3  NormalOf(const btVector3 *vert, const int n);\n\n\nbtVector3 PlaneLineIntersection(const btPlane &plane, const btVector3 &p0, const btVector3 &p1)\n{\n\t// returns the point where the line p0-p1 intersects the plane n&d\n\t\t\t\tstatic btVector3 dif;\n\t\tdif = p1-p0;\n\t\t\t\tbtScalar dn= btDot(plane.normal,dif);\n\t\t\t\tbtScalar t = -(plane.dist+btDot(plane.normal,p0) )/dn;\n\t\t\t\treturn p0 + (dif*t);\n}\n\nbtVector3 PlaneProject(const btPlane &plane, const btVector3 &point)\n{\n\treturn point - plane.normal * (btDot(point,plane.normal)+plane.dist);\n}\n\nbtVector3 TriNormal(const btVector3 &v0, const btVector3 &v1, const btVector3 &v2)\n{\n\t// return the normal of the triangle\n\t// inscribed by v0, v1, and v2\n\tbtVector3 cp=btCross(v1-v0,v2-v1);\n\tbtScalar m=cp.length();\n\tif(m==0) return btVector3(1,0,0);\n\treturn cp*(btScalar(1.0)/m);\n}\n\n\nbtScalar DistanceBetweenLines(const btVector3 &ustart, const btVector3 &udir, const btVector3 &vstart, const btVector3 &vdir, btVector3 *upoint, btVector3 *vpoint)\n{\n\tstatic btVector3 cp;\n\tcp = btCross(udir,vdir).normalized();\n\n\tbtScalar distu = -btDot(cp,ustart);\n\tbtScalar distv = -btDot(cp,vstart);\n\tbtScalar dist = (btScalar)fabs(distu-distv);\n\tif(upoint) \n\t\t{\n\t\tbtPlane plane;\n\t\tplane.normal = btCross(vdir,cp).normalized();\n\t\tplane.dist = -btDot(plane.normal,vstart);\n\t\t*upoint = PlaneLineIntersection(plane,ustart,ustart+udir);\n\t}\n\tif(vpoint) \n\t\t{\n\t\tbtPlane plane;\n\t\tplane.normal = btCross(udir,cp).normalized();\n\t\tplane.dist = -btDot(plane.normal,ustart);\n\t\t*vpoint = PlaneLineIntersection(plane,vstart,vstart+vdir);\n\t}\n\treturn dist;\n}\n\n\n\n\n\n\n\n#define COPLANAR   (0)\n#define UNDER      (1)\n#define OVER       (2)\n#define SPLIT      (OVER|UNDER)\n#define PAPERWIDTH (btScalar(0.001))\n\nbtScalar planetestepsilon = PAPERWIDTH;\n\n\n\ntypedef ConvexH::HalfEdge HalfEdge;\n\nConvexH::ConvexH(int vertices_size,int edges_size,int facets_size)\n{\n\tvertices.resize(vertices_size);\n\tedges.resize(edges_size);\n\tfacets.resize(facets_size);\n}\n\n\nint PlaneTest(const btPlane &p, const btVector3 &v);\nint PlaneTest(const btPlane &p, const btVector3 &v) {\n\tbtScalar a  = btDot(v,p.normal)+p.dist;\n\tint   flag = (a>planetestepsilon)?OVER:((a<-planetestepsilon)?UNDER:COPLANAR);\n\treturn flag;\n}\n\nint SplitTest(ConvexH &convex,const btPlane &plane);\nint SplitTest(ConvexH &convex,const btPlane &plane) {\n\tint flag=0;\n\tfor(int i=0;i<convex.vertices.size();i++) {\n\t\tflag |= PlaneTest(plane,convex.vertices[i]);\n\t}\n\treturn flag;\n}\n\nclass VertFlag\n{\npublic:\n\tunsigned char planetest;\n\tunsigned char junk;\n\tunsigned char undermap;\n\tunsigned char overmap;\n};\nclass EdgeFlag \n{\npublic:\n\tunsigned char planetest;\n\tunsigned char fixes;\n\tshort undermap;\n\tshort overmap;\n};\nclass PlaneFlag\n{\npublic:\n\tunsigned char undermap;\n\tunsigned char overmap;\n};\nclass Coplanar{\npublic:\n\tunsigned short ea;\n\tunsigned char v0;\n\tunsigned char v1;\n};\n\n\n\n\n\n\n\n\ntemplate<class T>\nint maxdirfiltered(const T *p,int count,const T &dir,btAlignedObjectArray<int> &allow)\n{\n\tbtAssert(count);\n\tint m=-1;\n\tfor(int i=0;i<count;i++) \n\t\tif(allow[i])\n\t\t{\n\t\t\tif(m==-1 || btDot(p[i],dir)>btDot(p[m],dir))\n\t\t\t\tm=i;\n\t\t}\n\tbtAssert(m!=-1);\n\treturn m;\n} \n\nbtVector3 orth(const btVector3 &v);\nbtVector3 orth(const btVector3 &v)\n{\n\tbtVector3 a=btCross(v,btVector3(0,0,1));\n\tbtVector3 b=btCross(v,btVector3(0,1,0));\n\tif (a.length() > b.length())\n\t{\n\t\treturn a.normalized();\n\t} else {\n\t\treturn b.normalized();\n\t}\n}\n\n\ntemplate<class T>\nint maxdirsterid(const T *p,int count,const T &dir,btAlignedObjectArray<int> &allow)\n{\n\tint m=-1;\n\twhile(m==-1)\n\t{\n\t\tm = maxdirfiltered(p,count,dir,allow);\n\t\tif(allow[m]==3) return m;\n\t\tT u = orth(dir);\n\t\tT v = btCross(u,dir);\n\t\tint ma=-1;\n\t\tfor(btScalar x = btScalar(0.0) ; x<= btScalar(360.0) ; x+= btScalar(45.0))\n\t\t{\n\t\t\tbtScalar s = btSin(SIMD_RADS_PER_DEG*(x));\n\t\t\tbtScalar c = btCos(SIMD_RADS_PER_DEG*(x));\n\t\t\tint mb = maxdirfiltered(p,count,dir+(u*s+v*c)*btScalar(0.025),allow);\n\t\t\tif(ma==m && mb==m)\n\t\t\t{\n\t\t\t\tallow[m]=3;\n\t\t\t\treturn m;\n\t\t\t}\n\t\t\tif(ma!=-1 && ma!=mb)  // Yuck - this is really ugly\n\t\t\t{\n\t\t\t\tint mc = ma;\n\t\t\t\tfor(btScalar xx = x-btScalar(40.0) ; xx <= x ; xx+= btScalar(5.0))\n\t\t\t\t{\n\t\t\t\t\tbtScalar s = btSin(SIMD_RADS_PER_DEG*(xx));\n\t\t\t\t\tbtScalar c = btCos(SIMD_RADS_PER_DEG*(xx));\n\t\t\t\t\tint md = maxdirfiltered(p,count,dir+(u*s+v*c)*btScalar(0.025),allow);\n\t\t\t\t\tif(mc==m && md==m)\n\t\t\t\t\t{\n\t\t\t\t\t\tallow[m]=3;\n\t\t\t\t\t\treturn m;\n\t\t\t\t\t}\n\t\t\t\t\tmc=md;\n\t\t\t\t}\n\t\t\t}\n\t\t\tma=mb;\n\t\t}\n\t\tallow[m]=0;\n\t\tm=-1;\n\t}\n\tbtAssert(0);\n\treturn m;\n} \n\n\n\n\nint operator ==(const int3 &a,const int3 &b);\nint operator ==(const int3 &a,const int3 &b) \n{\n\tfor(int i=0;i<3;i++) \n\t{\n\t\tif(a[i]!=b[i]) return 0;\n\t}\n\treturn 1;\n}\n\n\nint above(btVector3* vertices,const int3& t, const btVector3 &p, btScalar epsilon);\nint above(btVector3* vertices,const int3& t, const btVector3 &p, btScalar epsilon) \n{\n\tbtVector3 n=TriNormal(vertices[t[0]],vertices[t[1]],vertices[t[2]]);\n\treturn (btDot(n,p-vertices[t[0]]) > epsilon); // EPSILON???\n}\nint hasedge(const int3 &t, int a,int b);\nint hasedge(const int3 &t, int a,int b)\n{\n\tfor(int i=0;i<3;i++)\n\t{\n\t\tint i1= (i+1)%3;\n\t\tif(t[i]==a && t[i1]==b) return 1;\n\t}\n\treturn 0;\n}\nint hasvert(const int3 &t, int v);\nint hasvert(const int3 &t, int v)\n{\n\treturn (t[0]==v || t[1]==v || t[2]==v) ;\n}\nint shareedge(const int3 &a,const int3 &b);\nint shareedge(const int3 &a,const int3 &b)\n{\n\tint i;\n\tfor(i=0;i<3;i++)\n\t{\n\t\tint i1= (i+1)%3;\n\t\tif(hasedge(a,b[i1],b[i])) return 1;\n\t}\n\treturn 0;\n}\n\nclass btHullTriangle;\n\n\n\nclass btHullTriangle : public int3\n{\npublic:\n\tint3 n;\n\tint id;\n\tint vmax;\n\tbtScalar rise;\n\tbtHullTriangle(int a,int b,int c):int3(a,b,c),n(-1,-1,-1)\n\t{\n\t\tvmax=-1;\n\t\trise = btScalar(0.0);\n\t}\n\t~btHullTriangle()\n\t{\n\t}\n\tint &neib(int a,int b);\n};\n\n\nint &btHullTriangle::neib(int a,int b)\n{\n\tstatic int er=-1;\n\tint i;\n\tfor(i=0;i<3;i++) \n\t{\n\t\tint i1=(i+1)%3;\n\t\tint i2=(i+2)%3;\n\t\tif((*this)[i]==a && (*this)[i1]==b) return n[i2];\n\t\tif((*this)[i]==b && (*this)[i1]==a) return n[i2];\n\t}\n\tbtAssert(0);\n\treturn er;\n}\nvoid HullLibrary::b2bfix(btHullTriangle* s,btHullTriangle*t)\n{\n\tint i;\n\tfor(i=0;i<3;i++) \n\t{\n\t\tint i1=(i+1)%3;\n\t\tint i2=(i+2)%3;\n\t\tint a = (*s)[i1];\n\t\tint b = (*s)[i2];\n\t\tbtAssert(m_tris[s->neib(a,b)]->neib(b,a) == s->id);\n\t\tbtAssert(m_tris[t->neib(a,b)]->neib(b,a) == t->id);\n\t\tm_tris[s->neib(a,b)]->neib(b,a) = t->neib(b,a);\n\t\tm_tris[t->neib(b,a)]->neib(a,b) = s->neib(a,b);\n\t}\n}\n\nvoid HullLibrary::removeb2b(btHullTriangle* s,btHullTriangle*t)\n{\n\tb2bfix(s,t);\n\tdeAllocateTriangle(s);\n\n\tdeAllocateTriangle(t);\n}\n\nvoid HullLibrary::checkit(btHullTriangle *t)\n{\n\t(void)t;\n\n\tint i;\n\tbtAssert(m_tris[t->id]==t);\n\tfor(i=0;i<3;i++)\n\t{\n\t\tint i1=(i+1)%3;\n\t\tint i2=(i+2)%3;\n\t\tint a = (*t)[i1];\n\t\tint b = (*t)[i2];\n\n\t\t// release compile fix\n\t\t(void)i1;\n\t\t(void)i2;\n\t\t(void)a;\n\t\t(void)b;\n\n\t\tbtAssert(a!=b);\n\t\tbtAssert( m_tris[t->n[i]]->neib(b,a) == t->id);\n\t}\n}\n\nbtHullTriangle*\tHullLibrary::allocateTriangle(int a,int b,int c)\n{\n\tvoid* mem = btAlignedAlloc(sizeof(btHullTriangle),16);\n\tbtHullTriangle* tr = new (mem)btHullTriangle(a,b,c);\n\ttr->id = m_tris.size();\n\tm_tris.push_back(tr);\n\n\treturn tr;\n}\n\nvoid\tHullLibrary::deAllocateTriangle(btHullTriangle* tri)\n{\n\tbtAssert(m_tris[tri->id]==tri);\n\tm_tris[tri->id]=NULL;\n\ttri->~btHullTriangle();\n\tbtAlignedFree(tri);\n}\n\n\nvoid HullLibrary::extrude(btHullTriangle *t0,int v)\n{\n\tint3 t= *t0;\n\tint n = m_tris.size();\n\tbtHullTriangle* ta = allocateTriangle(v,t[1],t[2]);\n\tta->n = int3(t0->n[0],n+1,n+2);\n\tm_tris[t0->n[0]]->neib(t[1],t[2]) = n+0;\n\tbtHullTriangle* tb = allocateTriangle(v,t[2],t[0]);\n\ttb->n = int3(t0->n[1],n+2,n+0);\n\tm_tris[t0->n[1]]->neib(t[2],t[0]) = n+1;\n\tbtHullTriangle* tc = allocateTriangle(v,t[0],t[1]);\n\ttc->n = int3(t0->n[2],n+0,n+1);\n\tm_tris[t0->n[2]]->neib(t[0],t[1]) = n+2;\n\tcheckit(ta);\n\tcheckit(tb);\n\tcheckit(tc);\n\tif(hasvert(*m_tris[ta->n[0]],v)) removeb2b(ta,m_tris[ta->n[0]]);\n\tif(hasvert(*m_tris[tb->n[0]],v)) removeb2b(tb,m_tris[tb->n[0]]);\n\tif(hasvert(*m_tris[tc->n[0]],v)) removeb2b(tc,m_tris[tc->n[0]]);\n\tdeAllocateTriangle(t0);\n\n}\n\nbtHullTriangle* HullLibrary::extrudable(btScalar epsilon)\n{\n\tint i;\n\tbtHullTriangle *t=NULL;\n\tfor(i=0;i<m_tris.size();i++)\n\t{\n\t\tif(!t || (m_tris[i] && t->rise<m_tris[i]->rise))\n\t\t{\n\t\t\tt = m_tris[i];\n\t\t}\n\t}\n\treturn (t->rise >epsilon)?t:NULL ;\n}\n\n\n\n\nint4 HullLibrary::FindSimplex(btVector3 *verts,int verts_count,btAlignedObjectArray<int> &allow)\n{\n\tbtVector3 basis[3];\n\tbasis[0] = btVector3( btScalar(0.01), btScalar(0.02), btScalar(1.0) );      \n\tint p0 = maxdirsterid(verts,verts_count, basis[0],allow);   \n\tint\tp1 = maxdirsterid(verts,verts_count,-basis[0],allow);\n\tbasis[0] = verts[p0]-verts[p1];\n\tif(p0==p1 || basis[0]==btVector3(0,0,0)) \n\t\treturn int4(-1,-1,-1,-1);\n\tbasis[1] = btCross(btVector3(     btScalar(1),btScalar(0.02), btScalar(0)),basis[0]);\n\tbasis[2] = btCross(btVector3(btScalar(-0.02),     btScalar(1), btScalar(0)),basis[0]);\n\tif (basis[1].length() > basis[2].length())\n\t{\n\t\tbasis[1].normalize();\n\t} else {\n\t\tbasis[1] = basis[2];\n\t\tbasis[1].normalize ();\n\t}\n\tint p2 = maxdirsterid(verts,verts_count,basis[1],allow);\n\tif(p2 == p0 || p2 == p1)\n\t{\n\t\tp2 = maxdirsterid(verts,verts_count,-basis[1],allow);\n\t}\n\tif(p2 == p0 || p2 == p1) \n\t\treturn int4(-1,-1,-1,-1);\n\tbasis[1] = verts[p2] - verts[p0];\n\tbasis[2] = btCross(basis[1],basis[0]).normalized();\n\tint p3 = maxdirsterid(verts,verts_count,basis[2],allow);\n\tif(p3==p0||p3==p1||p3==p2) p3 = maxdirsterid(verts,verts_count,-basis[2],allow);\n\tif(p3==p0||p3==p1||p3==p2) \n\t\treturn int4(-1,-1,-1,-1);\n\tbtAssert(!(p0==p1||p0==p2||p0==p3||p1==p2||p1==p3||p2==p3));\n\tif(btDot(verts[p3]-verts[p0],btCross(verts[p1]-verts[p0],verts[p2]-verts[p0])) <0) {btSwap(p2,p3);}\n\treturn int4(p0,p1,p2,p3);\n}\n\nint HullLibrary::calchullgen(btVector3 *verts,int verts_count, int vlimit)\n{\n\tif(verts_count <4) return 0;\n\tif(vlimit==0) vlimit=1000000000;\n\tint j;\n\tbtVector3 bmin(*verts),bmax(*verts);\n\tbtAlignedObjectArray<int> isextreme;\n\tisextreme.reserve(verts_count);\n\tbtAlignedObjectArray<int> allow;\n\tallow.reserve(verts_count);\n\n\tfor(j=0;j<verts_count;j++) \n\t{\n\t\tallow.push_back(1);\n\t\tisextreme.push_back(0);\n\t\tbmin.setMin (verts[j]);\n\t\tbmax.setMax (verts[j]);\n\t}\n\tbtScalar epsilon = (bmax-bmin).length() * btScalar(0.001);\n\tbtAssert (epsilon != 0.0);\n\n\n\tint4 p = FindSimplex(verts,verts_count,allow);\n\tif(p.x==-1) return 0; // simplex failed\n\n\n\n\tbtVector3 center = (verts[p[0]]+verts[p[1]]+verts[p[2]]+verts[p[3]]) / btScalar(4.0);  // a valid interior point\n\tbtHullTriangle *t0 = allocateTriangle(p[2],p[3],p[1]); t0->n=int3(2,3,1);\n\tbtHullTriangle *t1 = allocateTriangle(p[3],p[2],p[0]); t1->n=int3(3,2,0);\n\tbtHullTriangle *t2 = allocateTriangle(p[0],p[1],p[3]); t2->n=int3(0,1,3);\n\tbtHullTriangle *t3 = allocateTriangle(p[1],p[0],p[2]); t3->n=int3(1,0,2);\n\tisextreme[p[0]]=isextreme[p[1]]=isextreme[p[2]]=isextreme[p[3]]=1;\n\tcheckit(t0);checkit(t1);checkit(t2);checkit(t3);\n\n\tfor(j=0;j<m_tris.size();j++)\n\t{\n\t\tbtHullTriangle *t=m_tris[j];\n\t\tbtAssert(t);\n\t\tbtAssert(t->vmax<0);\n\t\tbtVector3 n=TriNormal(verts[(*t)[0]],verts[(*t)[1]],verts[(*t)[2]]);\n\t\tt->vmax = maxdirsterid(verts,verts_count,n,allow);\n\t\tt->rise = btDot(n,verts[t->vmax]-verts[(*t)[0]]);\n\t}\n\tbtHullTriangle *te;\n\tvlimit-=4;\n\twhile(vlimit >0 && ((te=extrudable(epsilon)) != 0))\n\t{\n\t\t//int3 ti=*te;\n\t\tint v=te->vmax;\n\t\tbtAssert(v != -1);\n\t\tbtAssert(!isextreme[v]);  // wtf we've already done this vertex\n\t\tisextreme[v]=1;\n\t\t//if(v==p0 || v==p1 || v==p2 || v==p3) continue; // done these already\n\t\tj=m_tris.size();\n\t\twhile(j--) {\n\t\t\tif(!m_tris[j]) continue;\n\t\t\tint3 t=*m_tris[j];\n\t\t\tif(above(verts,t,verts[v],btScalar(0.01)*epsilon)) \n\t\t\t{\n\t\t\t\textrude(m_tris[j],v);\n\t\t\t}\n\t\t}\n\t\t// now check for those degenerate cases where we have a flipped triangle or a really skinny triangle\n\t\tj=m_tris.size();\n\t\twhile(j--)\n\t\t{\n\t\t\tif(!m_tris[j]) continue;\n\t\t\tif(!hasvert(*m_tris[j],v)) break;\n\t\t\tint3 nt=*m_tris[j];\n\t\t\tif(above(verts,nt,center,btScalar(0.01)*epsilon)  || btCross(verts[nt[1]]-verts[nt[0]],verts[nt[2]]-verts[nt[1]]).length()< epsilon*epsilon*btScalar(0.1) )\n\t\t\t{\n\t\t\t\tbtHullTriangle *nb = m_tris[m_tris[j]->n[0]];\n\t\t\t\tbtAssert(nb);btAssert(!hasvert(*nb,v));btAssert(nb->id<j);\n\t\t\t\textrude(nb,v);\n\t\t\t\tj=m_tris.size(); \n\t\t\t}\n\t\t} \n\t\tj=m_tris.size();\n\t\twhile(j--)\n\t\t{\n\t\t\tbtHullTriangle *t=m_tris[j];\n\t\t\tif(!t) continue;\n\t\t\tif(t->vmax>=0) break;\n\t\t\tbtVector3 n=TriNormal(verts[(*t)[0]],verts[(*t)[1]],verts[(*t)[2]]);\n\t\t\tt->vmax = maxdirsterid(verts,verts_count,n,allow);\n\t\t\tif(isextreme[t->vmax]) \n\t\t\t{\n\t\t\t\tt->vmax=-1; // already done that vertex - algorithm needs to be able to terminate.\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tt->rise = btDot(n,verts[t->vmax]-verts[(*t)[0]]);\n\t\t\t}\n\t\t}\n\t\tvlimit --;\n\t}\n\treturn 1;\n}\n\nint HullLibrary::calchull(btVector3 *verts,int verts_count, TUIntArray& tris_out, int &tris_count,int vlimit) \n{\n\tint rc=calchullgen(verts,verts_count,  vlimit) ;\n\tif(!rc) return 0;\n\tbtAlignedObjectArray<int> ts;\n\tint i;\n\n\tfor(i=0;i<m_tris.size();i++)\n\t{\n\t\tif(m_tris[i])\n\t\t{\n\t\t\tfor(int j=0;j<3;j++)\n\t\t\t\tts.push_back((*m_tris[i])[j]);\n\t\t\tdeAllocateTriangle(m_tris[i]);\n\t\t}\n\t}\n\ttris_count = ts.size()/3;\n\ttris_out.resize(ts.size());\n\t\n\tfor (i=0;i<ts.size();i++)\n\t{\n\t\ttris_out[i] = static_cast<unsigned int>(ts[i]);\n\t}\n\tm_tris.resize(0);\n\n\treturn 1;\n}\n\n\n\n\n\nbool HullLibrary::ComputeHull(unsigned int vcount,const btVector3 *vertices,PHullResult &result,unsigned int vlimit)\n{\n\t\n\tint    tris_count;\n\tint ret = calchull( (btVector3 *) vertices, (int) vcount, result.m_Indices, tris_count, static_cast<int>(vlimit) );\n\tif(!ret) return false;\n\tresult.mIndexCount = (unsigned int) (tris_count*3);\n\tresult.mFaceCount  = (unsigned int) tris_count;\n\tresult.mVertices   = (btVector3*) vertices;\n\tresult.mVcount     = (unsigned int) vcount;\n\treturn true;\n\n}\n\n\nvoid ReleaseHull(PHullResult &result);\nvoid ReleaseHull(PHullResult &result)\n{\n\tif ( result.m_Indices.size() )\n\t{\n\t\tresult.m_Indices.clear();\n\t}\n\n\tresult.mVcount = 0;\n\tresult.mIndexCount = 0;\n\tresult.mVertices = 0;\n}\n\n\n//*********************************************************************\n//*********************************************************************\n//********  HullLib header\n//*********************************************************************\n//*********************************************************************\n\n//*********************************************************************\n//*********************************************************************\n//********  HullLib implementation\n//*********************************************************************\n//*********************************************************************\n\nHullError HullLibrary::CreateConvexHull(const HullDesc       &desc,           // describes the input request\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tHullResult           &result)         // contains the resulst\n{\n\tHullError ret = QE_FAIL;\n\n\n\tPHullResult hr;\n\n\tunsigned int vcount = desc.mVcount;\n\tif ( vcount < 8 ) vcount = 8;\n\n\tbtAlignedObjectArray<btVector3> vertexSource;\n\tvertexSource.resize(static_cast<int>(vcount));\n\n\tbtVector3 scale;\n\n\tunsigned int ovcount;\n\n\tbool ok = CleanupVertices(desc.mVcount,desc.mVertices, desc.mVertexStride, ovcount, &vertexSource[0], desc.mNormalEpsilon, scale ); // normalize point cloud, remove duplicates!\n\n\tif ( ok )\n\t{\n\n\n//\t\tif ( 1 ) // scale vertices back to their original size.\n\t\t{\n\t\t\tfor (unsigned int i=0; i<ovcount; i++)\n\t\t\t{\n\t\t\t\tbtVector3& v = vertexSource[static_cast<int>(i)];\n\t\t\t\tv[0]*=scale[0];\n\t\t\t\tv[1]*=scale[1];\n\t\t\t\tv[2]*=scale[2];\n\t\t\t}\n\t\t}\n\n\t\tok = ComputeHull(ovcount,&vertexSource[0],hr,desc.mMaxVertices);\n\n\t\tif ( ok )\n\t\t{\n\n\t\t\t// re-index triangle mesh so it refers to only used vertices, rebuild a new vertex table.\n\t\t\tbtAlignedObjectArray<btVector3>\tvertexScratch;\n\t\t\tvertexScratch.resize(static_cast<int>(hr.mVcount));\n\n\t\t\tBringOutYourDead(hr.mVertices,hr.mVcount, &vertexScratch[0], ovcount, &hr.m_Indices[0], hr.mIndexCount );\n\n\t\t\tret = QE_OK;\n\n\t\t\tif ( desc.HasHullFlag(QF_TRIANGLES) ) // if he wants the results as triangle!\n\t\t\t{\n\t\t\t\tresult.mPolygons          = false;\n\t\t\t\tresult.mNumOutputVertices = ovcount;\n\t\t\t\tresult.m_OutputVertices.resize(static_cast<int>(ovcount));\n\t\t\t\tresult.mNumFaces          = hr.mFaceCount;\n\t\t\t\tresult.mNumIndices        = hr.mIndexCount;\n\n\t\t\t\tresult.m_Indices.resize(static_cast<int>(hr.mIndexCount));\n\n\t\t\t\tmemcpy(&result.m_OutputVertices[0], &vertexScratch[0], sizeof(btVector3)*ovcount );\n\n  \t\t\tif ( desc.HasHullFlag(QF_REVERSE_ORDER) )\n\t\t\t\t{\n\n\t\t\t\t\tconst unsigned int *source = &hr.m_Indices[0];\n\t\t\t\t\tunsigned int *dest   = &result.m_Indices[0];\n\n\t\t\t\t\tfor (unsigned int i=0; i<hr.mFaceCount; i++)\n\t\t\t\t\t{\n\t\t\t\t\t\tdest[0] = source[2];\n\t\t\t\t\t\tdest[1] = source[1];\n\t\t\t\t\t\tdest[2] = source[0];\n\t\t\t\t\t\tdest+=3;\n\t\t\t\t\t\tsource+=3;\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tmemcpy(&result.m_Indices[0], &hr.m_Indices[0], sizeof(unsigned int)*hr.mIndexCount);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tresult.mPolygons          = true;\n\t\t\t\tresult.mNumOutputVertices = ovcount;\n\t\t\t\tresult.m_OutputVertices.resize(static_cast<int>(ovcount));\n\t\t\t\tresult.mNumFaces          = hr.mFaceCount;\n\t\t\t\tresult.mNumIndices        = hr.mIndexCount+hr.mFaceCount;\n\t\t\t\tresult.m_Indices.resize(static_cast<int>(result.mNumIndices));\n\t\t\t\tmemcpy(&result.m_OutputVertices[0], &vertexScratch[0], sizeof(btVector3)*ovcount );\n\n//\t\t\t\tif ( 1 )\n\t\t\t\t{\n\t\t\t\t\tconst unsigned int *source = &hr.m_Indices[0];\n\t\t\t\t\tunsigned int *dest   = &result.m_Indices[0];\n\t\t\t\t\tfor (unsigned int i=0; i<hr.mFaceCount; i++)\n\t\t\t\t\t{\n\t\t\t\t\t\tdest[0] = 3;\n\t\t\t\t\t\tif ( desc.HasHullFlag(QF_REVERSE_ORDER) )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tdest[1] = source[2];\n\t\t\t\t\t\t\tdest[2] = source[1];\n\t\t\t\t\t\t\tdest[3] = source[0];\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tdest[1] = source[0];\n\t\t\t\t\t\t\tdest[2] = source[1];\n\t\t\t\t\t\t\tdest[3] = source[2];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tdest+=4;\n\t\t\t\t\t\tsource+=3;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tReleaseHull(hr);\n\t\t}\n\t}\n\n\treturn ret;\n}\n\n\n\nHullError HullLibrary::ReleaseResult(HullResult &result) // release memory allocated for this result, we are done with it.\n{\n\tif ( result.m_OutputVertices.size())\n\t{\n\t\tresult.mNumOutputVertices=0;\n\t\tresult.m_OutputVertices.clear();\n\t}\n\tif ( result.m_Indices.size() )\n\t{\n\t\tresult.mNumIndices=0;\n\t\tresult.m_Indices.clear();\n\t}\n\treturn QE_OK;\n}\n\n\nstatic void addPoint(unsigned int &vcount,btVector3 *p,btScalar x,btScalar y,btScalar z)\n{\n\t// XXX, might be broken\n\tbtVector3& dest = p[vcount];\n\tdest[0] = x;\n\tdest[1] = y;\n\tdest[2] = z;\n\tvcount++;\n}\n\nbtScalar GetDist(btScalar px,btScalar py,btScalar pz,const btScalar *p2);\nbtScalar GetDist(btScalar px,btScalar py,btScalar pz,const btScalar *p2)\n{\n\n\tbtScalar dx = px - p2[0];\n\tbtScalar dy = py - p2[1];\n\tbtScalar dz = pz - p2[2];\n\n\treturn dx*dx+dy*dy+dz*dz;\n}\n\n\n\nbool  HullLibrary::CleanupVertices(unsigned int svcount,\n\t\t\t\t   const btVector3 *svertices,\n\t\t\t\t   unsigned int stride,\n\t\t\t\t   unsigned int &vcount,       // output number of vertices\n\t\t\t\t   btVector3 *vertices,                 // location to store the results.\n\t\t\t\t   btScalar  normalepsilon,\n\t\t\t\t   btVector3& scale)\n{\n\tif ( svcount == 0 ) return false;\n\n\tm_vertexIndexMapping.resize(0);\n\n\n#define EPSILON btScalar(0.000001) /* close enough to consider two btScalaring point numbers to be 'the same'. */\n\n\tvcount = 0;\n\n\tbtScalar recip[3]={0.f,0.f,0.f};\n\n\tif ( scale )\n\t{\n\t\tscale[0] = 1;\n\t\tscale[1] = 1;\n\t\tscale[2] = 1;\n\t}\n\n\tbtScalar bmin[3] = {  FLT_MAX,  FLT_MAX,  FLT_MAX };\n\tbtScalar bmax[3] = { -FLT_MAX, -FLT_MAX, -FLT_MAX };\n\n\tconst char *vtx = (const char *) svertices;\n\n//\tif ( 1 )\n\t{\n\t\tfor (unsigned int i=0; i<svcount; i++)\n\t\t{\n\t\t\tconst btScalar *p = (const btScalar *) vtx;\n\n\t\t\tvtx+=stride;\n\n\t\t\tfor (int j=0; j<3; j++)\n\t\t\t{\n\t\t\t\tif ( p[j] < bmin[j] ) bmin[j] = p[j];\n\t\t\t\tif ( p[j] > bmax[j] ) bmax[j] = p[j];\n\t\t\t}\n\t\t}\n\t}\n\n\tbtScalar dx = bmax[0] - bmin[0];\n\tbtScalar dy = bmax[1] - bmin[1];\n\tbtScalar dz = bmax[2] - bmin[2];\n\n\tbtVector3 center;\n\n\tcenter[0] = dx*btScalar(0.5) + bmin[0];\n\tcenter[1] = dy*btScalar(0.5) + bmin[1];\n\tcenter[2] = dz*btScalar(0.5) + bmin[2];\n\n\tif ( dx < EPSILON || dy < EPSILON || dz < EPSILON || svcount < 3 )\n\t{\n\n\t\tbtScalar len = FLT_MAX;\n\n\t\tif ( dx > EPSILON && dx < len ) len = dx;\n\t\tif ( dy > EPSILON && dy < len ) len = dy;\n\t\tif ( dz > EPSILON && dz < len ) len = dz;\n\n\t\tif ( len == FLT_MAX )\n\t\t{\n\t\t\tdx = dy = dz = btScalar(0.01); // one centimeter\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif ( dx < EPSILON ) dx = len * btScalar(0.05); // 1/5th the shortest non-zero edge.\n\t\t\tif ( dy < EPSILON ) dy = len * btScalar(0.05);\n\t\t\tif ( dz < EPSILON ) dz = len * btScalar(0.05);\n\t\t}\n\n\t\tbtScalar x1 = center[0] - dx;\n\t\tbtScalar x2 = center[0] + dx;\n\n\t\tbtScalar y1 = center[1] - dy;\n\t\tbtScalar y2 = center[1] + dy;\n\n\t\tbtScalar z1 = center[2] - dz;\n\t\tbtScalar z2 = center[2] + dz;\n\n\t\taddPoint(vcount,vertices,x1,y1,z1);\n\t\taddPoint(vcount,vertices,x2,y1,z1);\n\t\taddPoint(vcount,vertices,x2,y2,z1);\n\t\taddPoint(vcount,vertices,x1,y2,z1);\n\t\taddPoint(vcount,vertices,x1,y1,z2);\n\t\taddPoint(vcount,vertices,x2,y1,z2);\n\t\taddPoint(vcount,vertices,x2,y2,z2);\n\t\taddPoint(vcount,vertices,x1,y2,z2);\n\n\t\treturn true; // return cube\n\n\n\t}\n\telse\n\t{\n\t\tif ( scale )\n\t\t{\n\t\t\tscale[0] = dx;\n\t\t\tscale[1] = dy;\n\t\t\tscale[2] = dz;\n\n\t\t\trecip[0] = 1 / dx;\n\t\t\trecip[1] = 1 / dy;\n\t\t\trecip[2] = 1 / dz;\n\n\t\t\tcenter[0]*=recip[0];\n\t\t\tcenter[1]*=recip[1];\n\t\t\tcenter[2]*=recip[2];\n\n\t\t}\n\n\t}\n\n\n\n\tvtx = (const char *) svertices;\n\n\tfor (unsigned int i=0; i<svcount; i++)\n\t{\n\t\tconst btVector3 *p = (const btVector3 *)vtx;\n\t\tvtx+=stride;\n\n\t\tbtScalar px = p->getX();\n\t\tbtScalar py = p->getY();\n\t\tbtScalar pz = p->getZ();\n\n\t\tif ( scale )\n\t\t{\n\t\t\tpx = px*recip[0]; // normalize\n\t\t\tpy = py*recip[1]; // normalize\n\t\t\tpz = pz*recip[2]; // normalize\n\t\t}\n\n//\t\tif ( 1 )\n\t\t{\n\t\t\tunsigned int j;\n\n\t\t\tfor (j=0; j<vcount; j++)\n\t\t\t{\n\t\t\t\t/// XXX might be broken\n\t\t\t\tbtVector3& v = vertices[j];\n\n\t\t\t\tbtScalar x = v[0];\n\t\t\t\tbtScalar y = v[1];\n\t\t\t\tbtScalar z = v[2];\n\n\t\t\t\tbtScalar dx = btFabs(x - px );\n\t\t\t\tbtScalar dy = btFabs(y - py );\n\t\t\t\tbtScalar dz = btFabs(z - pz );\n\n\t\t\t\tif ( dx < normalepsilon && dy < normalepsilon && dz < normalepsilon )\n\t\t\t\t{\n\t\t\t\t\t// ok, it is close enough to the old one\n\t\t\t\t\t// now let us see if it is further from the center of the point cloud than the one we already recorded.\n\t\t\t\t\t// in which case we keep this one instead.\n\n\t\t\t\t\tbtScalar dist1 = GetDist(px,py,pz,center);\n\t\t\t\t\tbtScalar dist2 = GetDist(v[0],v[1],v[2],center);\n\n\t\t\t\t\tif ( dist1 > dist2 )\n\t\t\t\t\t{\n\t\t\t\t\t\tv[0] = px;\n\t\t\t\t\t\tv[1] = py;\n\t\t\t\t\t\tv[2] = pz;\n\t\t\t\t\t\t\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( j == vcount )\n\t\t\t{\n\t\t\t\tbtVector3& dest = vertices[vcount];\n\t\t\t\tdest[0] = px;\n\t\t\t\tdest[1] = py;\n\t\t\t\tdest[2] = pz;\n\t\t\t\tvcount++;\n\t\t\t}\n\t\t\tm_vertexIndexMapping.push_back(j);\n\t\t}\n\t}\n\n\t// ok..now make sure we didn't prune so many vertices it is now invalid.\n//\tif ( 1 )\n\t{\n\t\tbtScalar bmin[3] = {  FLT_MAX,  FLT_MAX,  FLT_MAX };\n\t\tbtScalar bmax[3] = { -FLT_MAX, -FLT_MAX, -FLT_MAX };\n\n\t\tfor (unsigned int i=0; i<vcount; i++)\n\t\t{\n\t\t\tconst btVector3& p = vertices[i];\n\t\t\tfor (int j=0; j<3; j++)\n\t\t\t{\n\t\t\t\tif ( p[j] < bmin[j] ) bmin[j] = p[j];\n\t\t\t\tif ( p[j] > bmax[j] ) bmax[j] = p[j];\n\t\t\t}\n\t\t}\n\n\t\tbtScalar dx = bmax[0] - bmin[0];\n\t\tbtScalar dy = bmax[1] - bmin[1];\n\t\tbtScalar dz = bmax[2] - bmin[2];\n\n\t\tif ( dx < EPSILON || dy < EPSILON || dz < EPSILON || vcount < 3)\n\t\t{\n\t\t\tbtScalar cx = dx*btScalar(0.5) + bmin[0];\n\t\t\tbtScalar cy = dy*btScalar(0.5) + bmin[1];\n\t\t\tbtScalar cz = dz*btScalar(0.5) + bmin[2];\n\n\t\t\tbtScalar len = FLT_MAX;\n\n\t\t\tif ( dx >= EPSILON && dx < len ) len = dx;\n\t\t\tif ( dy >= EPSILON && dy < len ) len = dy;\n\t\t\tif ( dz >= EPSILON && dz < len ) len = dz;\n\n\t\t\tif ( len == FLT_MAX )\n\t\t\t{\n\t\t\t\tdx = dy = dz = btScalar(0.01); // one centimeter\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tif ( dx < EPSILON ) dx = len * btScalar(0.05); // 1/5th the shortest non-zero edge.\n\t\t\t\tif ( dy < EPSILON ) dy = len * btScalar(0.05);\n\t\t\t\tif ( dz < EPSILON ) dz = len * btScalar(0.05);\n\t\t\t}\n\n\t\t\tbtScalar x1 = cx - dx;\n\t\t\tbtScalar x2 = cx + dx;\n\n\t\t\tbtScalar y1 = cy - dy;\n\t\t\tbtScalar y2 = cy + dy;\n\n\t\t\tbtScalar z1 = cz - dz;\n\t\t\tbtScalar z2 = cz + dz;\n\n\t\t\tvcount = 0; // add box\n\n\t\t\taddPoint(vcount,vertices,x1,y1,z1);\n\t\t\taddPoint(vcount,vertices,x2,y1,z1);\n\t\t\taddPoint(vcount,vertices,x2,y2,z1);\n\t\t\taddPoint(vcount,vertices,x1,y2,z1);\n\t\t\taddPoint(vcount,vertices,x1,y1,z2);\n\t\t\taddPoint(vcount,vertices,x2,y1,z2);\n\t\t\taddPoint(vcount,vertices,x2,y2,z2);\n\t\t\taddPoint(vcount,vertices,x1,y2,z2);\n\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn true;\n}\n\nvoid HullLibrary::BringOutYourDead(const btVector3* verts,unsigned int vcount, btVector3* overts,unsigned int &ocount,unsigned int *indices,unsigned indexcount)\n{\n\tbtAlignedObjectArray<int>tmpIndices;\n\ttmpIndices.resize(m_vertexIndexMapping.size());\n\tint i;\n\n\tfor (i=0;i<m_vertexIndexMapping.size();i++)\n\t{\n\t\ttmpIndices[i] = m_vertexIndexMapping[i];\n\t}\n\n\tTUIntArray usedIndices;\n\tusedIndices.resize(static_cast<int>(vcount));\n\tmemset(&usedIndices[0],0,sizeof(unsigned int)*vcount);\n\n\tocount = 0;\n\n\tfor (i=0; i<int (indexcount); i++)\n\t{\n\t\tunsigned int v = indices[i]; // original array index\n\n\t\tbtAssert( v >= 0 && v < vcount );\n\n\t\tif ( usedIndices[static_cast<int>(v)] ) // if already remapped\n\t\t{\n\t\t\tindices[i] = usedIndices[static_cast<int>(v)]-1; // index to new array\n\t\t}\n\t\telse\n\t\t{\n\n\t\t\tindices[i] = ocount;      // new index mapping\n\n\t\t\toverts[ocount][0] = verts[v][0]; // copy old vert to new vert array\n\t\t\toverts[ocount][1] = verts[v][1];\n\t\t\toverts[ocount][2] = verts[v][2];\n\n\t\t\tfor (int k=0;k<m_vertexIndexMapping.size();k++)\n\t\t\t{\n\t\t\t\tif (tmpIndices[k]==int(v))\n\t\t\t\t\tm_vertexIndexMapping[k]=ocount;\n\t\t\t}\n\n\t\t\tocount++; // increment output vert count\n\n\t\t\tbtAssert( ocount >=0 && ocount <= vcount );\n\n\t\t\tusedIndices[static_cast<int>(v)] = ocount; // assign new index remapping\n\n\t\t\n\t\t}\n\t}\n\n\t\n}\n"
  },
  {
    "path": "Sources/NativeDAABBTree/LinearMath/btConvexHull.h",
    "content": "\n/*\nStan Melax Convex Hull Computation\nCopyright (c) 2008 Stan Melax http://www.melax.com/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n///includes modifications/improvements by John Ratcliff, see BringOutYourDead below.\n\n#ifndef BT_CD_HULL_H\n#define BT_CD_HULL_H\n\n#include \"btVector3.h\"\n#include \"btAlignedObjectArray.h\"\n\ntypedef btAlignedObjectArray<unsigned int> TUIntArray;\n\nclass HullResult\n{\npublic:\n\tHullResult(void)\n\t{\n\t\tmPolygons = true;\n\t\tmNumOutputVertices = 0;\n\t\tmNumFaces = 0;\n\t\tmNumIndices = 0;\n\t}\n\tbool                    mPolygons;                  // true if indices represents polygons, false indices are triangles\n\tunsigned int            mNumOutputVertices;         // number of vertices in the output hull\n\tbtAlignedObjectArray<btVector3>\tm_OutputVertices;            // array of vertices\n\tunsigned int            mNumFaces;                  // the number of faces produced\n\tunsigned int            mNumIndices;                // the total number of indices\n\tbtAlignedObjectArray<unsigned int>    m_Indices;                   // pointer to indices.\n\n// If triangles, then indices are array indexes into the vertex list.\n// If polygons, indices are in the form (number of points in face) (p1, p2, p3, ..) etc..\n};\n\nenum HullFlag\n{\n\tQF_TRIANGLES         = (1<<0),             // report results as triangles, not polygons.\n\tQF_REVERSE_ORDER     = (1<<1),             // reverse order of the triangle indices.\n\tQF_DEFAULT           = QF_TRIANGLES\n};\n\n\nclass HullDesc\n{\npublic:\n\tHullDesc(void)\n\t{\n\t\tmFlags          = QF_DEFAULT;\n\t\tmVcount         = 0;\n\t\tmVertices       = 0;\n\t\tmVertexStride   = sizeof(btVector3);\n\t\tmNormalEpsilon  = 0.001f;\n\t\tmMaxVertices\t= 4096; // maximum number of points to be considered for a convex hull.\n\t\tmMaxFaces\t= 4096;\n\t};\n\n\tHullDesc(HullFlag flag,\n\t\t unsigned int vcount,\n\t\t const btVector3 *vertices,\n\t\t unsigned int stride = sizeof(btVector3))\n\t{\n\t\tmFlags          = flag;\n\t\tmVcount         = vcount;\n\t\tmVertices       = vertices;\n\t\tmVertexStride   = stride;\n\t\tmNormalEpsilon  = btScalar(0.001);\n\t\tmMaxVertices    = 4096;\n\t}\n\n\tbool HasHullFlag(HullFlag flag) const\n\t{\n\t\tif ( mFlags & flag ) return true;\n\t\treturn false;\n\t}\n\n\tvoid SetHullFlag(HullFlag flag)\n\t{\n\t\tmFlags|=flag;\n\t}\n\n\tvoid ClearHullFlag(HullFlag flag)\n\t{\n\t\tmFlags&=~flag;\n\t}\n\n\tunsigned int      mFlags;           // flags to use when generating the convex hull.\n\tunsigned int      mVcount;          // number of vertices in the input point cloud\n\tconst btVector3  *mVertices;        // the array of vertices.\n\tunsigned int      mVertexStride;    // the stride of each vertex, in bytes.\n\tbtScalar             mNormalEpsilon;   // the epsilon for removing duplicates.  This is a normalized value, if normalized bit is on.\n\tunsigned int      mMaxVertices;     // maximum number of vertices to be considered for the hull!\n\tunsigned int      mMaxFaces;\n};\n\nenum HullError\n{\n\tQE_OK,            // success!\n\tQE_FAIL           // failed.\n};\n\nclass btPlane\n{\n\tpublic:\n\tbtVector3\tnormal;\n\tbtScalar\tdist;   // distance below origin - the D from plane equasion Ax+By+Cz+D=0\n\t\t\tbtPlane(const btVector3 &n,btScalar d):normal(n),dist(d){}\n\t\t\tbtPlane():normal(),dist(0){}\n\t\n};\n\n\n\nclass ConvexH \n{\n  public:\n\tclass HalfEdge\n\t{\n\t  public:\n\t\tshort ea;         // the other half of the edge (index into edges list)\n\t\tunsigned char v;  // the vertex at the start of this edge (index into vertices list)\n\t\tunsigned char p;  // the facet on which this edge lies (index into facets list)\n\t\tHalfEdge(){}\n\t\tHalfEdge(short _ea,unsigned char _v, unsigned char _p):ea(_ea),v(_v),p(_p){}\n\t};\n\tConvexH()\n\t{\n\t}\n\t~ConvexH()\n\t{\n\t}\n\tbtAlignedObjectArray<btVector3> vertices;\n\tbtAlignedObjectArray<HalfEdge> edges;\n\tbtAlignedObjectArray<btPlane>  facets;\n\tConvexH(int vertices_size,int edges_size,int facets_size);\n};\n\n\nclass int4\n{\npublic:\n\tint x,y,z,w;\n\tint4(){};\n\tint4(int _x,int _y, int _z,int _w){x=_x;y=_y;z=_z;w=_w;}\n\tconst int& operator[](int i) const {return (&x)[i];}\n\tint& operator[](int i) {return (&x)[i];}\n};\n\nclass PHullResult\n{\npublic:\n\n\tPHullResult(void)\n\t{\n\t\tmVcount = 0;\n\t\tmIndexCount = 0;\n\t\tmFaceCount = 0;\n\t\tmVertices = 0;\n\t}\n\n\tunsigned int mVcount;\n\tunsigned int mIndexCount;\n\tunsigned int mFaceCount;\n\tbtVector3*   mVertices;\n\tTUIntArray m_Indices;\n};\n\n\n\n///The HullLibrary class can create a convex hull from a collection of vertices, using the ComputeHull method.\n///The btShapeHull class uses this HullLibrary to create a approximate convex mesh given a general (non-polyhedral) convex shape.\nclass HullLibrary\n{\n\n\tbtAlignedObjectArray<class btHullTriangle*> m_tris;\n\npublic:\n\n\tbtAlignedObjectArray<int> m_vertexIndexMapping;\n\n\n\tHullError CreateConvexHull(const HullDesc& desc, // describes the input request\n\t\t\t\t   HullResult&     result);        // contains the resulst\n\tHullError ReleaseResult(HullResult &result); // release memory allocated for this result, we are done with it.\n\nprivate:\n\n\tbool ComputeHull(unsigned int vcount,const btVector3 *vertices,PHullResult &result,unsigned int vlimit);\n\n\tclass btHullTriangle*\tallocateTriangle(int a,int b,int c);\n\tvoid\tdeAllocateTriangle(btHullTriangle*);\n\tvoid b2bfix(btHullTriangle* s,btHullTriangle*t);\n\n\tvoid removeb2b(btHullTriangle* s,btHullTriangle*t);\n\n\tvoid checkit(btHullTriangle *t);\n\n\tbtHullTriangle* extrudable(btScalar epsilon);\n\n\tint calchull(btVector3 *verts,int verts_count, TUIntArray& tris_out, int &tris_count,int vlimit);\n\n\tint calchullgen(btVector3 *verts,int verts_count, int vlimit);\n\n\tint4 FindSimplex(btVector3 *verts,int verts_count,btAlignedObjectArray<int> &allow);\n\n\tclass ConvexH* ConvexHCrop(ConvexH& convex,const btPlane& slice);\n\n\tvoid extrude(class btHullTriangle* t0,int v);\n\n\tConvexH* test_cube();\n\n\t//BringOutYourDead (John Ratcliff): When you create a convex hull you hand it a large input set of vertices forming a 'point cloud'. \n\t//After the hull is generated it give you back a set of polygon faces which index the *original* point cloud.\n\t//The thing is, often times, there are many 'dead vertices' in the point cloud that are on longer referenced by the hull.\n\t//The routine 'BringOutYourDead' find only the referenced vertices, copies them to an new buffer, and re-indexes the hull so that it is a minimal representation.\n\tvoid BringOutYourDead(const btVector3* verts,unsigned int vcount, btVector3* overts,unsigned int &ocount,unsigned int* indices,unsigned indexcount);\n\n\tbool CleanupVertices(unsigned int svcount,\n\t\t\t     const btVector3* svertices,\n\t\t\t     unsigned int stride,\n\t\t\t     unsigned int &vcount, // output number of vertices\n\t\t\t     btVector3* vertices, // location to store the results.\n\t\t\t     btScalar  normalepsilon,\n\t\t\t     btVector3& scale);\n};\n\n\n#endif //BT_CD_HULL_H\n\n"
  },
  {
    "path": "Sources/NativeDAABBTree/LinearMath/btConvexHullComputer.cpp",
    "content": "/*\nCopyright (c) 2011 Ole Kniemeyer, MAXON, www.maxon.net\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#include <string.h>\n\n#include \"btConvexHullComputer.h\"\n#include \"btAlignedObjectArray.h\"\n#include \"btMinMax.h\"\n#include \"btVector3.h\"\n\n#ifdef __GNUC__\n\t#include <stdint.h>\n#elif defined(_MSC_VER)\n\ttypedef __int32 int32_t;\n\ttypedef __int64 int64_t;\n\ttypedef unsigned __int32 uint32_t;\n\ttypedef unsigned __int64 uint64_t;\n#else\n\ttypedef int int32_t;\n\ttypedef long long int int64_t;\n\ttypedef unsigned int uint32_t;\n\ttypedef unsigned long long int uint64_t;\n#endif\n\n\n//The definition of USE_X86_64_ASM is moved into the build system. You can enable it manually by commenting out the following lines\n//#if (defined(__GNUC__) && defined(__x86_64__) && !defined(__ICL))  // || (defined(__ICL) && defined(_M_X64))   bug in Intel compiler, disable inline assembly\n//\t#define USE_X86_64_ASM\n//#endif\n\n\n//#define DEBUG_CONVEX_HULL\n//#define SHOW_ITERATIONS\n\n#if defined(DEBUG_CONVEX_HULL) || defined(SHOW_ITERATIONS)\n\t#include <stdio.h>\n#endif\n\n// Convex hull implementation based on Preparata and Hong\n// Ole Kniemeyer, MAXON Computer GmbH\nclass btConvexHullInternal\n{\n\tpublic:\n\t\t\n\t\tclass Point64\n\t\t{\n\t\t\tpublic:\n\t\t\t\tint64_t x;\n\t\t\t\tint64_t y;\n\t\t\t\tint64_t z;\n\t\t\t\t\n\t\t\t\tPoint64(int64_t x, int64_t y, int64_t z): x(x), y(y), z(z)\n\t\t\t\t{\n\t\t\t\t}\n\n\t\t\t\tbool isZero()\n\t\t\t\t{\n\t\t\t\t\treturn (x == 0) && (y == 0) && (z == 0);\n\t\t\t\t}\n\n\t\t\t\tint64_t dot(const Point64& b) const\n\t\t\t\t{\n\t\t\t\t\treturn x * b.x + y * b.y + z * b.z;\n\t\t\t\t}\n\t\t};\n\t\t\n\t\tclass Point32\n\t\t{\n\t\t\tpublic:\n\t\t\t\tint32_t x;\n\t\t\t\tint32_t y;\n\t\t\t\tint32_t z;\n\t\t\t\tint index;\n\t\t\t\t\n\t\t\t\tPoint32()\n\t\t\t\t{\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tPoint32(int32_t x, int32_t y, int32_t z): x(x), y(y), z(z), index(-1)\n\t\t\t\t{\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tbool operator==(const Point32& b) const\n\t\t\t\t{\n\t\t\t\t\treturn (x == b.x) && (y == b.y) && (z == b.z);\n\t\t\t\t}\n\n\t\t\t\tbool operator!=(const Point32& b) const\n\t\t\t\t{\n\t\t\t\t\treturn (x != b.x) || (y != b.y) || (z != b.z);\n\t\t\t\t}\n\n\t\t\t\tbool isZero()\n\t\t\t\t{\n\t\t\t\t\treturn (x == 0) && (y == 0) && (z == 0);\n\t\t\t\t}\n\n\t\t\t\tPoint64 cross(const Point32& b) const\n\t\t\t\t{\n\t\t\t\t\treturn Point64(y * b.z - z * b.y, z * b.x - x * b.z, x * b.y - y * b.x);\n\t\t\t\t}\n\n\t\t\t\tPoint64 cross(const Point64& b) const\n\t\t\t\t{\n\t\t\t\t\treturn Point64(y * b.z - z * b.y, z * b.x - x * b.z, x * b.y - y * b.x);\n\t\t\t\t}\n\n\t\t\t\tint64_t dot(const Point32& b) const\n\t\t\t\t{\n\t\t\t\t\treturn x * b.x + y * b.y + z * b.z;\n\t\t\t\t}\n\n\t\t\t\tint64_t dot(const Point64& b) const\n\t\t\t\t{\n\t\t\t\t\treturn x * b.x + y * b.y + z * b.z;\n\t\t\t\t}\n\n\t\t\t\tPoint32 operator+(const Point32& b) const\n\t\t\t\t{\n\t\t\t\t\treturn Point32(x + b.x, y + b.y, z + b.z);\n\t\t\t\t}\n\n\t\t\t\tPoint32 operator-(const Point32& b) const\n\t\t\t\t{\n\t\t\t\t\treturn Point32(x - b.x, y - b.y, z - b.z);\n\t\t\t\t}\n\t\t};\n\n\t\tclass Int128\n\t\t{\n\t\t\tpublic:\n\t\t\t\tuint64_t low;\n\t\t\t\tuint64_t high;\n\n\t\t\t\tInt128()\n\t\t\t\t{\n\t\t\t\t}\n\n\t\t\t\tInt128(uint64_t low, uint64_t high): low(low), high(high)\n\t\t\t\t{\n\t\t\t\t}\n\n\t\t\t\tInt128(uint64_t low): low(low), high(0)\n\t\t\t\t{\n\t\t\t\t}\n\n\t\t\t\tInt128(int64_t value): low(value), high((value >= 0) ? 0 : (uint64_t) -1LL)\n\t\t\t\t{\n\t\t\t\t}\n\n\t\t\t\tstatic Int128 mul(int64_t a, int64_t b);\n\n\t\t\t\tstatic Int128 mul(uint64_t a, uint64_t b);\n\n\t\t\t\tInt128 operator-() const\n\t\t\t\t{\n\t\t\t\t\treturn Int128((uint64_t) -(int64_t)low, ~high + (low == 0));\n\t\t\t\t}\n\n\t\t\t\tInt128 operator+(const Int128& b) const\n\t\t\t\t{\n#ifdef USE_X86_64_ASM\n\t\t\t\t\tInt128 result;\n\t\t\t\t\t__asm__ (\"addq %[bl], %[rl]\\n\\t\"\n\t\t\t\t\t\t\t\t\t \"adcq %[bh], %[rh]\\n\\t\"\n\t\t\t\t\t\t\t\t\t : [rl] \"=r\" (result.low), [rh] \"=r\" (result.high)\n\t\t\t\t\t\t\t\t\t : \"0\"(low), \"1\"(high), [bl] \"g\"(b.low), [bh] \"g\"(b.high)\n\t\t\t\t\t\t\t\t\t : \"cc\" );\n\t\t\t\t\treturn result;\n#else\n\t\t\t\t\tuint64_t lo = low + b.low;\n\t\t\t\t\treturn Int128(lo, high + b.high + (lo < low));\n#endif\n\t\t\t\t}\n\n\t\t\t\tInt128 operator-(const Int128& b) const\n\t\t\t\t{\n#ifdef USE_X86_64_ASM\n\t\t\t\t\tInt128 result;\n\t\t\t\t\t__asm__ (\"subq %[bl], %[rl]\\n\\t\"\n\t\t\t\t\t\t\t\t\t \"sbbq %[bh], %[rh]\\n\\t\"\n\t\t\t\t\t\t\t\t\t : [rl] \"=r\" (result.low), [rh] \"=r\" (result.high)\n\t\t\t\t\t\t\t\t\t : \"0\"(low), \"1\"(high), [bl] \"g\"(b.low), [bh] \"g\"(b.high)\n\t\t\t\t\t\t\t\t\t : \"cc\" );\n\t\t\t\t\treturn result;\n#else\n\t\t\t\t\treturn *this + -b;\n#endif\n\t\t\t\t}\n\n\t\t\t\tInt128& operator+=(const Int128& b)\n\t\t\t\t{\n#ifdef USE_X86_64_ASM\n\t\t\t\t\t__asm__ (\"addq %[bl], %[rl]\\n\\t\"\n\t\t\t\t\t\t\t\t\t \"adcq %[bh], %[rh]\\n\\t\"\n\t\t\t\t\t\t\t\t\t : [rl] \"=r\" (low), [rh] \"=r\" (high)\n\t\t\t\t\t\t\t\t\t : \"0\"(low), \"1\"(high), [bl] \"g\"(b.low), [bh] \"g\"(b.high)\n\t\t\t\t\t\t\t\t\t : \"cc\" );\n#else\n\t\t\t\t\tuint64_t lo = low + b.low;\n\t\t\t\t\tif (lo < low)\n\t\t\t\t\t{\n\t\t\t\t\t\t++high;\n\t\t\t\t\t}\n\t\t\t\t\tlow = lo;\n\t\t\t\t\thigh += b.high;\n#endif\n\t\t\t\t\treturn *this;\n\t\t\t\t}\n\n\t\t\t\tInt128& operator++()\n\t\t\t\t{\n\t\t\t\t\tif (++low == 0)\n\t\t\t\t\t{\n\t\t\t\t\t\t++high;\n\t\t\t\t\t}\n\t\t\t\t\treturn *this;\n\t\t\t\t}\n\n\t\t\t\tInt128 operator*(int64_t b) const;\n\n\t\t\t\tbtScalar toScalar() const\n\t\t\t\t{\n\t\t\t\t\treturn ((int64_t) high >= 0) ? btScalar(high) * (btScalar(0x100000000LL) * btScalar(0x100000000LL)) + btScalar(low)\n\t\t\t\t\t\t: -(-*this).toScalar();\n\t\t\t\t}\n\n\t\t\t\tint getSign() const\n\t\t\t\t{\n\t\t\t\t\treturn ((int64_t) high < 0) ? -1 : (high || low) ? 1 : 0;\n\t\t\t\t}\n\n\t\t\t\tbool operator<(const Int128& b) const\n\t\t\t\t{\n\t\t\t\t\treturn (high < b.high) || ((high == b.high) && (low < b.low));\n\t\t\t\t}\n\n\t\t\t\tint ucmp(const Int128&b) const\n\t\t\t\t{\n\t\t\t\t\tif (high < b.high)\n\t\t\t\t\t{\n\t\t\t\t\t\treturn -1;\n\t\t\t\t\t}\n\t\t\t\t\tif (high > b.high)\n\t\t\t\t\t{\n\t\t\t\t\t\treturn 1;\n\t\t\t\t\t}\n\t\t\t\t\tif (low < b.low)\n\t\t\t\t\t{\n\t\t\t\t\t\treturn -1;\n\t\t\t\t\t}\n\t\t\t\t\tif (low > b.low)\n\t\t\t\t\t{\n\t\t\t\t\t\treturn 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\t\t};\n\n\n\t\tclass Rational64\n\t\t{\n\t\t\tprivate:\n\t\t\t\tuint64_t m_numerator;\n\t\t\t\tuint64_t m_denominator;\n\t\t\t\tint sign;\n\t\t\t\t\n\t\t\tpublic:\n\t\t\t\tRational64(int64_t numerator, int64_t denominator)\n\t\t\t\t{\n\t\t\t\t\tif (numerator > 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tsign = 1;\n\t\t\t\t\t\tm_numerator = (uint64_t) numerator;\n\t\t\t\t\t}\n\t\t\t\t\telse if (numerator < 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tsign = -1;\n\t\t\t\t\t\tm_numerator = (uint64_t) -numerator;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tsign = 0;\n\t\t\t\t\t\tm_numerator = 0;\n\t\t\t\t\t}\n\t\t\t\t\tif (denominator > 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tm_denominator = (uint64_t) denominator;\n\t\t\t\t\t}\n\t\t\t\t\telse if (denominator < 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tsign = -sign;\n\t\t\t\t\t\tm_denominator = (uint64_t) -denominator;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tm_denominator = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tbool isNegativeInfinity() const\n\t\t\t\t{\n\t\t\t\t\treturn (sign < 0) && (m_denominator == 0);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tbool isNaN() const\n\t\t\t\t{\n\t\t\t\t\treturn (sign == 0) && (m_denominator == 0);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tint compare(const Rational64& b) const;\n\t\t\t\t\n\t\t\t\tbtScalar toScalar() const\n\t\t\t\t{\n\t\t\t\t\treturn sign * ((m_denominator == 0) ? SIMD_INFINITY : (btScalar) m_numerator / m_denominator);\n\t\t\t\t}\n\t\t};\n\n\n\t\tclass Rational128\n\t\t{\n\t\t\tprivate:\n\t\t\t\tInt128 numerator;\n\t\t\t\tInt128 denominator;\n\t\t\t\tint sign;\n\t\t\t\tbool isInt64;\n\n\t\t\tpublic:\n\t\t\t\tRational128(int64_t value)\n\t\t\t\t{\n\t\t\t\t\tif (value > 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tsign = 1;\n\t\t\t\t\t\tthis->numerator = value;\n\t\t\t\t\t}\n\t\t\t\t\telse if (value < 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tsign = -1;\n\t\t\t\t\t\tthis->numerator = -value;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tsign = 0;\n\t\t\t\t\t\tthis->numerator = (uint64_t) 0;\n\t\t\t\t\t}\n\t\t\t\t\tthis->denominator = (uint64_t) 1;\n\t\t\t\t\tisInt64 = true;\n\t\t\t\t}\n\n\t\t\t\tRational128(const Int128& numerator, const Int128& denominator)\n\t\t\t\t{\n\t\t\t\t\tsign = numerator.getSign();\n\t\t\t\t\tif (sign >= 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis->numerator = numerator;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tthis->numerator = -numerator;\n\t\t\t\t\t}\n\t\t\t\t\tint dsign = denominator.getSign();\n\t\t\t\t\tif (dsign >= 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis->denominator = denominator;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tsign = -sign;\n\t\t\t\t\t\tthis->denominator = -denominator;\n\t\t\t\t\t}\n\t\t\t\t\tisInt64 = false;\n\t\t\t\t}\n\n\t\t\t\tint compare(const Rational128& b) const;\n\n\t\t\t\tint compare(int64_t b) const;\n\n\t\t\t\tbtScalar toScalar() const\n\t\t\t\t{\n\t\t\t\t\treturn sign * ((denominator.getSign() == 0) ? SIMD_INFINITY : numerator.toScalar() / denominator.toScalar());\n\t\t\t\t}\n\t\t};\n\n\t\tclass PointR128\n\t\t{\n\t\t\tpublic:\n\t\t\t\tInt128 x;\n\t\t\t\tInt128 y;\n\t\t\t\tInt128 z;\n\t\t\t\tInt128 denominator;\n\n\t\t\t\tPointR128()\n\t\t\t\t{\n\t\t\t\t}\n\n\t\t\t\tPointR128(Int128 x, Int128 y, Int128 z, Int128 denominator): x(x), y(y), z(z), denominator(denominator)\n\t\t\t\t{\n\t\t\t\t}\n\n\t\t\t\tbtScalar xvalue() const\n\t\t\t\t{\n\t\t\t\t\treturn x.toScalar() / denominator.toScalar();\n\t\t\t\t}\n\n\t\t\t\tbtScalar yvalue() const\n\t\t\t\t{\n\t\t\t\t\treturn y.toScalar() / denominator.toScalar();\n\t\t\t\t}\n\n\t\t\t\tbtScalar zvalue() const\n\t\t\t\t{\n\t\t\t\t\treturn z.toScalar() / denominator.toScalar();\n\t\t\t\t}\n\t\t};\n\n\n\t\tclass Edge;\n\t\tclass Face;\n\n\t\tclass Vertex\n\t\t{\n\t\t\tpublic:\n\t\t\t\tVertex* next;\n\t\t\t\tVertex* prev;\n\t\t\t\tEdge* edges;\n\t\t\t\tFace* firstNearbyFace;\n\t\t\t\tFace* lastNearbyFace;\n\t\t\t\tPointR128 point128;\n\t\t\t\tPoint32 point;\n\t\t\t\tint copy;\n\t\t\t\t\n\t\t\t\tVertex(): next(NULL), prev(NULL), edges(NULL), firstNearbyFace(NULL), lastNearbyFace(NULL), copy(-1)\n\t\t\t\t{\n\t\t\t\t}\n\n#ifdef DEBUG_CONVEX_HULL\n\t\t\t\tvoid print()\n\t\t\t\t{\n\t\t\t\t\tprintf(\"V%d (%d, %d, %d)\", point.index, point.x, point.y, point.z);\n\t\t\t\t}\n\n\t\t\t\tvoid printGraph();\n#endif\n\n\t\t\t\tPoint32 operator-(const Vertex& b) const\n\t\t\t\t{\n\t\t\t\t\treturn point - b.point;\n\t\t\t\t}\n\n\t\t\t\tRational128 dot(const Point64& b) const\n\t\t\t\t{\n\t\t\t\t\treturn (point.index >= 0) ? Rational128(point.dot(b))\n\t\t\t\t\t\t: Rational128(point128.x * b.x + point128.y * b.y + point128.z * b.z, point128.denominator);\n\t\t\t\t}\n\n\t\t\t\tbtScalar xvalue() const\n\t\t\t\t{\n\t\t\t\t\treturn (point.index >= 0) ? btScalar(point.x) : point128.xvalue();\n\t\t\t\t}\n\n\t\t\t\tbtScalar yvalue() const\n\t\t\t\t{\n\t\t\t\t\treturn (point.index >= 0) ? btScalar(point.y) : point128.yvalue();\n\t\t\t\t}\n\n\t\t\t\tbtScalar zvalue() const\n\t\t\t\t{\n\t\t\t\t\treturn (point.index >= 0) ? btScalar(point.z) : point128.zvalue();\n\t\t\t\t}\n\n\t\t\t\tvoid receiveNearbyFaces(Vertex* src)\n\t\t\t\t{\n\t\t\t\t\tif (lastNearbyFace)\n\t\t\t\t\t{\n\t\t\t\t\t\tlastNearbyFace->nextWithSameNearbyVertex = src->firstNearbyFace;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tfirstNearbyFace = src->firstNearbyFace;\n\t\t\t\t\t}\n\t\t\t\t\tif (src->lastNearbyFace)\n\t\t\t\t\t{\n\t\t\t\t\t\tlastNearbyFace = src->lastNearbyFace;\n\t\t\t\t\t}\n\t\t\t\t\tfor (Face* f = src->firstNearbyFace; f; f = f->nextWithSameNearbyVertex)\n\t\t\t\t\t{\n\t\t\t\t\t\tbtAssert(f->nearbyVertex == src);\n\t\t\t\t\t\tf->nearbyVertex = this;\n\t\t\t\t\t}\n\t\t\t\t\tsrc->firstNearbyFace = NULL;\n\t\t\t\t\tsrc->lastNearbyFace = NULL;\n\t\t\t\t}\n\t\t};\n\n\n\t\tclass Edge\n\t\t{\n\t\t\tpublic:\n\t\t\t\tEdge* next;\n\t\t\t\tEdge* prev;\n\t\t\t\tEdge* reverse;\n\t\t\t\tVertex* target;\n\t\t\t\tFace* face;\n\t\t\t\tint copy;\n\n\t\t\t\t~Edge()\n\t\t\t\t{\n\t\t\t\t\tnext = NULL;\n\t\t\t\t\tprev = NULL;\n\t\t\t\t\treverse = NULL;\n\t\t\t\t\ttarget = NULL;\n\t\t\t\t\tface = NULL;\n\t\t\t\t}\n\n\t\t\t\tvoid link(Edge* n)\n\t\t\t\t{\n\t\t\t\t\tbtAssert(reverse->target == n->reverse->target);\n\t\t\t\t\tnext = n;\n\t\t\t\t\tn->prev = this;\n\t\t\t\t}\n\n#ifdef DEBUG_CONVEX_HULL\n\t\t\t\tvoid print()\n\t\t\t\t{\n\t\t\t\t\tprintf(\"E%p : %d -> %d,  n=%p p=%p   (0 %d\\t%d\\t%d) -> (%d %d %d)\", this, reverse->target->point.index, target->point.index, next, prev,\n\t\t\t\t\t\t\t\t reverse->target->point.x, reverse->target->point.y, reverse->target->point.z, target->point.x, target->point.y, target->point.z);\n\t\t\t\t}\n#endif\n\t\t};\n\n\t\tclass Face\n\t\t{\n\t\t\tpublic:\n\t\t\t\tFace* next;\n\t\t\t\tVertex* nearbyVertex;\n\t\t\t\tFace* nextWithSameNearbyVertex;\n\t\t\t\tPoint32 origin;\n\t\t\t\tPoint32 dir0;\n\t\t\t\tPoint32 dir1;\n\n\t\t\t\tFace(): next(NULL), nearbyVertex(NULL), nextWithSameNearbyVertex(NULL)\n\t\t\t\t{\n\t\t\t\t}\n\n\t\t\t\tvoid init(Vertex* a, Vertex* b, Vertex* c)\n\t\t\t\t{\n\t\t\t\t\tnearbyVertex = a;\n\t\t\t\t\torigin = a->point;\n\t\t\t\t\tdir0 = *b - *a;\n\t\t\t\t\tdir1 = *c - *a;\n\t\t\t\t\tif (a->lastNearbyFace)\n\t\t\t\t\t{\n\t\t\t\t\t\ta->lastNearbyFace->nextWithSameNearbyVertex = this;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\ta->firstNearbyFace = this;\n\t\t\t\t\t}\n\t\t\t\t\ta->lastNearbyFace = this;\n\t\t\t\t}\n\n\t\t\t\tPoint64 getNormal()\n\t\t\t\t{\n\t\t\t\t\treturn dir0.cross(dir1);\n\t\t\t\t}\n\t\t};\n\n\t\ttemplate<typename UWord, typename UHWord> class DMul\n\t\t{\n\t\t\tprivate:\n\t\t\t\tstatic uint32_t high(uint64_t value)\n\t\t\t\t{\n\t\t\t\t\treturn (uint32_t) (value >> 32);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tstatic uint32_t low(uint64_t value)\n\t\t\t\t{\n\t\t\t\t\treturn (uint32_t) value;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tstatic uint64_t mul(uint32_t a, uint32_t b)\n\t\t\t\t{\n\t\t\t\t\treturn (uint64_t) a * (uint64_t) b;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tstatic void shlHalf(uint64_t& value)\n\t\t\t\t{\n\t\t\t\t\tvalue <<= 32;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tstatic uint64_t high(Int128 value)\n\t\t\t\t{\n\t\t\t\t\treturn value.high;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tstatic uint64_t low(Int128 value)\n\t\t\t\t{\n\t\t\t\t\treturn value.low;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tstatic Int128 mul(uint64_t a, uint64_t b)\n\t\t\t\t{\n\t\t\t\t\treturn Int128::mul(a, b);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tstatic void shlHalf(Int128& value)\n\t\t\t\t{\n\t\t\t\t\tvalue.high = value.low;\n\t\t\t\t\tvalue.low = 0;\n\t\t\t\t}\n\t\t\t\t\n\t\t\tpublic:\n\t\t\t\t\n\t\t\t\tstatic void mul(UWord a, UWord b, UWord& resLow, UWord& resHigh)\n\t\t\t\t{\n\t\t\t\t\tUWord p00 = mul(low(a), low(b));\n\t\t\t\t\tUWord p01 = mul(low(a), high(b));\n\t\t\t\t\tUWord p10 = mul(high(a), low(b));\n\t\t\t\t\tUWord p11 = mul(high(a), high(b));\n\t\t\t\t\tUWord p0110 = UWord(low(p01)) + UWord(low(p10));\n\t\t\t\t\tp11 += high(p01);\n\t\t\t\t\tp11 += high(p10);\n\t\t\t\t\tp11 += high(p0110);\n\t\t\t\t\tshlHalf(p0110);\n\t\t\t\t\tp00 += p0110;\n\t\t\t\t\tif (p00 < p0110)\n\t\t\t\t\t{\n\t\t\t\t\t\t++p11;\n\t\t\t\t\t}\n\t\t\t\t\tresLow = p00;\n\t\t\t\t\tresHigh = p11;\n\t\t\t\t}\n\t\t};\n\t\n\tprivate:\n\n\t\tclass IntermediateHull\n\t\t{\n\t\t\tpublic:\n\t\t\t\tVertex* minXy;\n\t\t\t\tVertex* maxXy;\n\t\t\t\tVertex* minYx;\n\t\t\t\tVertex* maxYx;\n\t\t\t\t\n\t\t\t\tIntermediateHull(): minXy(NULL), maxXy(NULL), minYx(NULL), maxYx(NULL)\n\t\t\t\t{\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tvoid print();\n\t\t};\n\t\n\t\tenum Orientation {NONE, CLOCKWISE, COUNTER_CLOCKWISE};\n\n\t\ttemplate <typename T> class PoolArray\n\t\t{\n\t\t\tprivate:\n\t\t\t\tT* array;\n\t\t\t\tint size;\n\n\t\t\tpublic:\n\t\t\t\tPoolArray<T>* next;\n\n\t\t\t\tPoolArray(int size): size(size), next(NULL)\n\t\t\t\t{\n\t\t\t\t\tarray = (T*) btAlignedAlloc(sizeof(T) * size, 16);\n\t\t\t\t}\n\n\t\t\t\t~PoolArray()\n\t\t\t\t{\n\t\t\t\t\tbtAlignedFree(array);\n\t\t\t\t}\n\n\t\t\t\tT* init()\n\t\t\t\t{\n\t\t\t\t\tT* o = array;\n\t\t\t\t\tfor (int i = 0; i < size; i++, o++)\n\t\t\t\t\t{\n\t\t\t\t\t\to->next = (i+1 < size) ? o + 1 : NULL;\n\t\t\t\t\t}\n\t\t\t\t\treturn array;\n\t\t\t\t}\n\t\t};\n\n\t\ttemplate <typename T> class Pool\n\t\t{\n\t\t\tprivate:\n\t\t\t\tPoolArray<T>* arrays;\n\t\t\t\tPoolArray<T>* nextArray;\n\t\t\t\tT* freeObjects;\n\t\t\t\tint arraySize;\n\n\t\t\tpublic:\n\t\t\t\tPool(): arrays(NULL), nextArray(NULL), freeObjects(NULL), arraySize(256)\n\t\t\t\t{\n\t\t\t\t}\n\n\t\t\t\t~Pool()\n\t\t\t\t{\n\t\t\t\t\twhile (arrays)\n\t\t\t\t\t{\n\t\t\t\t\t\tPoolArray<T>* p = arrays;\n\t\t\t\t\t\tarrays = p->next;\n\t\t\t\t\t\tp->~PoolArray<T>();\n\t\t\t\t\t\tbtAlignedFree(p);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tvoid reset()\n\t\t\t\t{\n\t\t\t\t\tnextArray = arrays;\n\t\t\t\t\tfreeObjects = NULL;\n\t\t\t\t}\n\n\t\t\t\tvoid setArraySize(int arraySize)\n\t\t\t\t{\n\t\t\t\t\tthis->arraySize = arraySize;\n\t\t\t\t}\n\n\t\t\t\tT* newObject()\n\t\t\t\t{\n\t\t\t\t\tT* o = freeObjects;\n\t\t\t\t\tif (!o)\n\t\t\t\t\t{\n\t\t\t\t\t\tPoolArray<T>* p = nextArray;\n\t\t\t\t\t\tif (p)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tnextArray = p->next;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tp = new(btAlignedAlloc(sizeof(PoolArray<T>), 16)) PoolArray<T>(arraySize);\n\t\t\t\t\t\t\tp->next = arrays;\n\t\t\t\t\t\t\tarrays = p;\n\t\t\t\t\t\t}\n\t\t\t\t\t\to = p->init();\n\t\t\t\t\t}\n\t\t\t\t\tfreeObjects = o->next;\n\t\t\t\t\treturn new(o) T();\n\t\t\t\t};\n\n\t\t\t\tvoid freeObject(T* object)\n\t\t\t\t{\n\t\t\t\t\tobject->~T();\n\t\t\t\t\tobject->next = freeObjects;\n\t\t\t\t\tfreeObjects = object;\n\t\t\t\t}\n\t\t};\n\n\t\tbtVector3 scaling;\n\t\tbtVector3 center;\n\t\tPool<Vertex> vertexPool;\n\t\tPool<Edge> edgePool;\n\t\tPool<Face> facePool;\n\t\tbtAlignedObjectArray<Vertex*> originalVertices;\n\t\tint mergeStamp;\n\t\tint minAxis;\n\t\tint medAxis;\n\t\tint maxAxis;\n\t\tint usedEdgePairs;\n\t\tint maxUsedEdgePairs;\n\n\t\tstatic Orientation getOrientation(const Edge* prev, const Edge* next, const Point32& s, const Point32& t);\n\t\tEdge* findMaxAngle(bool ccw, const Vertex* start, const Point32& s, const Point64& rxs, const Point64& sxrxs, Rational64& minCot);\n\t\tvoid findEdgeForCoplanarFaces(Vertex* c0, Vertex* c1, Edge*& e0, Edge*& e1, Vertex* stop0, Vertex* stop1);\n\n\t\tEdge* newEdgePair(Vertex* from, Vertex* to);\n\n\t\tvoid removeEdgePair(Edge* edge)\n\t\t{\n\t\t\tEdge* n = edge->next;\n\t\t\tEdge* r = edge->reverse;\n\n\t\t\tbtAssert(edge->target && r->target);\n\n\t\t\tif (n != edge)\n\t\t\t{\n\t\t\t\tn->prev = edge->prev;\n\t\t\t\tedge->prev->next = n;\n\t\t\t\tr->target->edges = n;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tr->target->edges = NULL;\n\t\t\t}\n\t\t\t\n\t\t\tn = r->next;\n\t\t\t\n\t\t\tif (n != r)\n\t\t\t{\n\t\t\t\tn->prev = r->prev;\n\t\t\t\tr->prev->next = n;\n\t\t\t\tedge->target->edges = n;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tedge->target->edges = NULL;\n\t\t\t}\n\n\t\t\tedgePool.freeObject(edge);\n\t\t\tedgePool.freeObject(r);\n\t\t\tusedEdgePairs--;\n\t\t}\n\t\t\n\t\tvoid computeInternal(int start, int end, IntermediateHull& result);\n\t\t\n\t\tbool mergeProjection(IntermediateHull& h0, IntermediateHull& h1, Vertex*& c0, Vertex*& c1);\n\t\t\n\t\tvoid merge(IntermediateHull& h0, IntermediateHull& h1);\n\n\t\tbtVector3 toBtVector(const Point32& v);\n\n\t\tbtVector3 getBtNormal(Face* face);\n\n\t\tbool shiftFace(Face* face, btScalar amount, btAlignedObjectArray<Vertex*> stack);\n\n\tpublic:\n\t\tVertex* vertexList;\n\n\t\tvoid compute(const void* coords, bool doubleCoords, int stride, int count);\n\n\t\tbtVector3 getCoordinates(const Vertex* v);\n\n\t\tbtScalar shrink(btScalar amount, btScalar clampAmount);\n};\n\n\nbtConvexHullInternal::Int128 btConvexHullInternal::Int128::operator*(int64_t b) const\n{\n\tbool negative = (int64_t) high < 0;\n\tInt128 a = negative ? -*this : *this;\n\tif (b < 0)\n\t{\n\t\tnegative = !negative;\n\t\tb = -b;\n\t}\n\tInt128 result = mul(a.low, (uint64_t) b);\n\tresult.high += a.high * (uint64_t) b;\n\treturn negative ? -result : result;\n}\n\nbtConvexHullInternal::Int128 btConvexHullInternal::Int128::mul(int64_t a, int64_t b)\n{\n\tInt128 result;\n\t\n#ifdef USE_X86_64_ASM\n\t__asm__ (\"imulq %[b]\"\n\t\t\t\t\t : \"=a\" (result.low), \"=d\" (result.high)\n\t\t\t\t\t : \"0\"(a), [b] \"r\"(b)\n\t\t\t\t\t : \"cc\" );\n\treturn result;\n\t\n#else\n\tbool negative = a < 0;\n\tif (negative)\n\t{\n\t\ta = -a;\n\t}\n\tif (b < 0)\n\t{\n\t\tnegative = !negative;\n\t\tb = -b;\n\t}\n\tDMul<uint64_t, uint32_t>::mul((uint64_t) a, (uint64_t) b, result.low, result.high);\n\treturn negative ? -result : result;\n#endif\n}\n\nbtConvexHullInternal::Int128 btConvexHullInternal::Int128::mul(uint64_t a, uint64_t b)\n{\n\tInt128 result;\n\n#ifdef USE_X86_64_ASM\n\t__asm__ (\"mulq %[b]\"\n\t\t\t\t\t : \"=a\" (result.low), \"=d\" (result.high)\n\t\t\t\t\t : \"0\"(a), [b] \"r\"(b)\n\t\t\t\t\t : \"cc\" );\n\n#else\n\tDMul<uint64_t, uint32_t>::mul(a, b, result.low, result.high);\n#endif\n\n\treturn result;\n}\n\nint btConvexHullInternal::Rational64::compare(const Rational64& b) const\n{\n\tif (sign != b.sign)\n\t{\n\t\treturn sign - b.sign;\n\t}\n\telse if (sign == 0)\n\t{\n\t\treturn 0;\n\t}\n\n\t//\treturn (numerator * b.denominator > b.numerator * denominator) ? sign : (numerator * b.denominator < b.numerator * denominator) ? -sign : 0;\n\n#ifdef USE_X86_64_ASM\n\n\tint result;\n\tint64_t tmp;\n\tint64_t dummy;\n\t__asm__ (\"mulq %[bn]\\n\\t\"\n\t\t\t\t\t \"movq %%rax, %[tmp]\\n\\t\"\n\t\t\t\t\t \"movq %%rdx, %%rbx\\n\\t\"\n\t\t\t\t\t \"movq %[tn], %%rax\\n\\t\"\n\t\t\t\t\t \"mulq %[bd]\\n\\t\"\n\t\t\t\t\t \"subq %[tmp], %%rax\\n\\t\"\n\t\t\t\t\t \"sbbq %%rbx, %%rdx\\n\\t\" // rdx:rax contains 128-bit-difference \"numerator*b.denominator - b.numerator*denominator\"\n\t\t\t\t\t \"setnsb %%bh\\n\\t\" // bh=1 if difference is non-negative, bh=0 otherwise\n\t\t\t\t\t \"orq %%rdx, %%rax\\n\\t\"\n\t\t\t\t\t \"setnzb %%bl\\n\\t\" // bl=1 if difference if non-zero, bl=0 if it is zero\n\t\t\t\t\t \"decb %%bh\\n\\t\" // now bx=0x0000 if difference is zero, 0xff01 if it is negative, 0x0001 if it is positive (i.e., same sign as difference)\n\t\t\t\t\t \"shll $16, %%ebx\\n\\t\" // ebx has same sign as difference\n\t\t\t\t\t : \"=&b\"(result), [tmp] \"=&r\"(tmp), \"=a\"(dummy)\n\t\t\t\t\t : \"a\"(denominator), [bn] \"g\"(b.numerator), [tn] \"g\"(numerator), [bd] \"g\"(b.denominator)\n\t\t\t\t\t : \"%rdx\", \"cc\" );\n\treturn result ? result ^ sign // if sign is +1, only bit 0 of result is inverted, which does not change the sign of result (and cannot result in zero)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// if sign is -1, all bits of result are inverted, which changes the sign of result (and again cannot result in zero)\n\t\t\t\t\t\t\t\t: 0;\n\n#else\n\n\treturn sign * Int128::mul(m_numerator, b.m_denominator).ucmp(Int128::mul(m_denominator, b.m_numerator));\n\n#endif\n}\n\nint btConvexHullInternal::Rational128::compare(const Rational128& b) const\n{\n\tif (sign != b.sign)\n\t{\n\t\treturn sign - b.sign;\n\t}\n\telse if (sign == 0)\n\t{\n\t\treturn 0;\n\t}\n\tif (isInt64)\n\t{\n\t\treturn -b.compare(sign * (int64_t) numerator.low);\n\t}\n\n\tInt128 nbdLow, nbdHigh, dbnLow, dbnHigh;\n\tDMul<Int128, uint64_t>::mul(numerator, b.denominator, nbdLow, nbdHigh);\n\tDMul<Int128, uint64_t>::mul(denominator, b.numerator, dbnLow, dbnHigh);\n\n\tint cmp = nbdHigh.ucmp(dbnHigh);\n\tif (cmp)\n\t{\n\t\treturn cmp * sign;\n\t}\n\treturn nbdLow.ucmp(dbnLow) * sign;\n}\n\nint btConvexHullInternal::Rational128::compare(int64_t b) const\n{\n\tif (isInt64)\n\t{\n\t\tint64_t a = sign * (int64_t) numerator.low;\n\t\treturn (a > b) ? 1 : (a < b) ? -1 : 0;\n\t}\n\tif (b > 0)\n\t{\n\t\tif (sign <= 0)\n\t\t{\n\t\t\treturn -1;\n\t\t}\n\t}\n\telse if (b < 0)\n\t{\n\t\tif (sign >= 0)\n\t\t{\n\t\t\treturn 1;\n\t\t}\n\t\tb = -b;\n\t}\n\telse\n\t{\n\t\treturn sign;\n\t}\n\n\treturn numerator.ucmp(denominator * b) * sign;\n}\n\n\nbtConvexHullInternal::Edge* btConvexHullInternal::newEdgePair(Vertex* from, Vertex* to)\n{\n\tbtAssert(from && to);\n\tEdge* e = edgePool.newObject();\n\tEdge* r = edgePool.newObject();\n\te->reverse = r;\n\tr->reverse = e;\n\te->copy = mergeStamp;\n\tr->copy = mergeStamp;\n\te->target = to;\n\tr->target = from;\n\te->face = NULL;\n\tr->face = NULL;\n\tusedEdgePairs++;\n\tif (usedEdgePairs > maxUsedEdgePairs)\n\t{\n\t\tmaxUsedEdgePairs = usedEdgePairs;\n\t}\n\treturn e;\n}\n\nbool btConvexHullInternal::mergeProjection(IntermediateHull& h0, IntermediateHull& h1, Vertex*& c0, Vertex*& c1)\n{\n\tVertex* v0 = h0.maxYx;\n\tVertex* v1 = h1.minYx;\n\tif ((v0->point.x == v1->point.x) && (v0->point.y == v1->point.y))\n\t{\n\t\tbtAssert(v0->point.z < v1->point.z);\n\t\tVertex* v1p = v1->prev;\n\t\tif (v1p == v1)\n\t\t{\n\t\t\tc0 = v0;\n\t\t\tif (v1->edges)\n\t\t\t{\n\t\t\t\tbtAssert(v1->edges->next == v1->edges);\n\t\t\t\tv1 = v1->edges->target;\n\t\t\t\tbtAssert(v1->edges->next == v1->edges);\n\t\t\t}\n\t\t\tc1 = v1;\n\t\t\treturn false;\n\t\t}\n\t\tVertex* v1n = v1->next;\n\t\tv1p->next = v1n;\n\t\tv1n->prev = v1p;\n\t\tif (v1 == h1.minXy)\n\t\t{\n\t\t\tif ((v1n->point.x < v1p->point.x) || ((v1n->point.x == v1p->point.x) && (v1n->point.y < v1p->point.y)))\n\t\t\t{\n\t\t\t\th1.minXy = v1n;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\th1.minXy = v1p;\n\t\t\t}\n\t\t}\n\t\tif (v1 == h1.maxXy)\n\t\t{\n\t\t\tif ((v1n->point.x > v1p->point.x) || ((v1n->point.x == v1p->point.x) && (v1n->point.y > v1p->point.y)))\n\t\t\t{\n\t\t\t\th1.maxXy = v1n;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\th1.maxXy = v1p;\n\t\t\t}\n\t\t}\n\t}\n\t\n\tv0 = h0.maxXy;\n\tv1 = h1.maxXy;\n\tVertex* v00 = NULL;\n\tVertex* v10 = NULL;\n\tint32_t sign = 1;\n\n\tfor (int side = 0; side <= 1; side++)\n\t{\t\t\n\t\tint32_t dx = (v1->point.x - v0->point.x) * sign;\n\t\tif (dx > 0)\n\t\t{\n\t\t\twhile (true)\n\t\t\t{\n\t\t\t\tint32_t dy = v1->point.y - v0->point.y;\n\n\t\t\t\tVertex* w0 = side ? v0->next : v0->prev;\n\t\t\t\tif (w0 != v0)\n\t\t\t\t{\n\t\t\t\t\tint32_t dx0 = (w0->point.x - v0->point.x) * sign;\n\t\t\t\t\tint32_t dy0 = w0->point.y - v0->point.y;\n\t\t\t\t\tif ((dy0 <= 0) && ((dx0 == 0) || ((dx0 < 0) && (dy0 * dx <= dy * dx0))))\n\t\t\t\t\t{\n\t\t\t\t\t\tv0 = w0;\n\t\t\t\t\t\tdx = (v1->point.x - v0->point.x) * sign;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tVertex* w1 = side ? v1->next : v1->prev;\n\t\t\t\tif (w1 != v1)\n\t\t\t\t{\n\t\t\t\t\tint32_t dx1 = (w1->point.x - v1->point.x) * sign;\n\t\t\t\t\tint32_t dy1 = w1->point.y - v1->point.y;\n\t\t\t\t\tint32_t dxn = (w1->point.x - v0->point.x) * sign;\n\t\t\t\t\tif ((dxn > 0) && (dy1 < 0) && ((dx1 == 0) || ((dx1 < 0) && (dy1 * dx < dy * dx1))))\n\t\t\t\t\t{\n\t\t\t\t\t\tv1 = w1;\n\t\t\t\t\t\tdx = dxn;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\telse if (dx < 0)\n\t\t{\n\t\t\twhile (true)\n\t\t\t{\n\t\t\t\tint32_t dy = v1->point.y - v0->point.y;\n\t\t\t\t\n\t\t\t\tVertex* w1 = side ? v1->prev : v1->next;\n\t\t\t\tif (w1 != v1)\n\t\t\t\t{\n\t\t\t\t\tint32_t dx1 = (w1->point.x - v1->point.x) * sign;\n\t\t\t\t\tint32_t dy1 = w1->point.y - v1->point.y;\n\t\t\t\t\tif ((dy1 >= 0) && ((dx1 == 0) || ((dx1 < 0) && (dy1 * dx <= dy * dx1))))\n\t\t\t\t\t{\n\t\t\t\t\t\tv1 = w1;\n\t\t\t\t\t\tdx = (v1->point.x - v0->point.x) * sign;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tVertex* w0 = side ? v0->prev : v0->next;\n\t\t\t\tif (w0 != v0)\n\t\t\t\t{\n\t\t\t\t\tint32_t dx0 = (w0->point.x - v0->point.x) * sign;\n\t\t\t\t\tint32_t dy0 = w0->point.y - v0->point.y;\n\t\t\t\t\tint32_t dxn = (v1->point.x - w0->point.x) * sign;\n\t\t\t\t\tif ((dxn < 0) && (dy0 > 0) && ((dx0 == 0) || ((dx0 < 0) && (dy0 * dx < dy * dx0))))\n\t\t\t\t\t{\n\t\t\t\t\t\tv0 = w0;\n\t\t\t\t\t\tdx = dxn;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tint32_t x = v0->point.x;\n\t\t\tint32_t y0 = v0->point.y;\n\t\t\tVertex* w0 = v0;\n\t\t\tVertex* t;\n\t\t\twhile (((t = side ? w0->next : w0->prev) != v0) && (t->point.x == x) && (t->point.y <= y0))\n\t\t\t{\n\t\t\t\tw0 = t;\n\t\t\t\ty0 = t->point.y;\n\t\t\t}\n\t\t\tv0 = w0;\n\n\t\t\tint32_t y1 = v1->point.y;\n\t\t\tVertex* w1 = v1;\n\t\t\twhile (((t = side ? w1->prev : w1->next) != v1) && (t->point.x == x) && (t->point.y >= y1))\n\t\t\t{\n\t\t\t\tw1 = t;\n\t\t\t\ty1 = t->point.y;\n\t\t\t}\n\t\t\tv1 = w1;\n\t\t}\n\t\t\n\t\tif (side == 0)\n\t\t{\n\t\t\tv00 = v0;\n\t\t\tv10 = v1;\n\n\t\t\tv0 = h0.minXy;\n\t\t\tv1 = h1.minXy;\n\t\t\tsign = -1;\n\t\t}\n\t}\n\n\tv0->prev = v1;\n\tv1->next = v0;\n\n\tv00->next = v10;\n\tv10->prev = v00;\n\n\tif (h1.minXy->point.x < h0.minXy->point.x)\n\t{\n\t\th0.minXy = h1.minXy;\n\t}\n\tif (h1.maxXy->point.x >= h0.maxXy->point.x)\n\t{\n\t\th0.maxXy = h1.maxXy;\n\t}\n\t\n\th0.maxYx = h1.maxYx;\n\n\tc0 = v00;\n\tc1 = v10;\n\n\treturn true;\n}\n\nvoid btConvexHullInternal::computeInternal(int start, int end, IntermediateHull& result)\n{\n\tint n = end - start;\n\tswitch (n)\n\t{\n\t\tcase 0:\n\t\t\tresult.minXy = NULL;\n\t\t\tresult.maxXy = NULL;\n\t\t\tresult.minYx = NULL;\n\t\t\tresult.maxYx = NULL;\n\t\t\treturn;\n\t\tcase 2:\n\t\t{\n\t\t\tVertex* v = originalVertices[start];\n\t\t\tVertex* w = v + 1;\n\t\t\tif (v->point != w->point)\n\t\t\t{\n\t\t\t\tint32_t dx = v->point.x - w->point.x;\n\t\t\t\tint32_t dy = v->point.y - w->point.y;\n\n\t\t\t\tif ((dx == 0) && (dy == 0))\n\t\t\t\t{\n\t\t\t\t\tif (v->point.z > w->point.z)\n\t\t\t\t\t{\n\t\t\t\t\t\tVertex* t = w;\n\t\t\t\t\t\tw = v;\n\t\t\t\t\t\tv = t;\n\t\t\t\t\t}\n\t\t\t\t\tbtAssert(v->point.z < w->point.z);\n\t\t\t\t\tv->next = v;\n\t\t\t\t\tv->prev = v;\n\t\t\t\t\tresult.minXy = v;\n\t\t\t\t\tresult.maxXy = v;\n\t\t\t\t\tresult.minYx = v;\n\t\t\t\t\tresult.maxYx = v;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tv->next = w;\n\t\t\t\t\tv->prev = w;\n\t\t\t\t\tw->next = v;\n\t\t\t\t\tw->prev = v;\n\n\t\t\t\t\tif ((dx < 0) || ((dx == 0) && (dy < 0)))\n\t\t\t\t\t{\n\t\t\t\t\t\tresult.minXy = v;\n\t\t\t\t\t\tresult.maxXy = w;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tresult.minXy = w;\n\t\t\t\t\t\tresult.maxXy = v;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ((dy < 0) || ((dy == 0) && (dx < 0)))\n\t\t\t\t\t{\n\t\t\t\t\t\tresult.minYx = v;\n\t\t\t\t\t\tresult.maxYx = w;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tresult.minYx = w;\n\t\t\t\t\t\tresult.maxYx = v;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tEdge* e = newEdgePair(v, w);\n\t\t\t\te->link(e);\n\t\t\t\tv->edges = e;\n\n\t\t\t\te = e->reverse;\n\t\t\t\te->link(e);\n\t\t\t\tw->edges = e;\n\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\t// lint -fallthrough\n\t\tcase 1:\n\t\t{\n\t\t\tVertex* v = originalVertices[start];\n\t\t\tv->edges = NULL;\n\t\t\tv->next = v;\n\t\t\tv->prev = v;\n\n\t\t\tresult.minXy = v;\n\t\t\tresult.maxXy = v;\n\t\t\tresult.minYx = v;\n\t\t\tresult.maxYx = v;\n\n\t\t\treturn;\n\t\t}\n\t}\n\n\tint split0 = start + n / 2;\n\tPoint32 p = originalVertices[split0-1]->point;\n\tint split1 = split0;\n\twhile ((split1 < end) && (originalVertices[split1]->point == p))\n\t{\n\t\tsplit1++;\n\t}\n\tcomputeInternal(start, split0, result);\n\tIntermediateHull hull1;\n\tcomputeInternal(split1, end, hull1);\n#ifdef DEBUG_CONVEX_HULL\n\tprintf(\"\\n\\nMerge\\n\");\n\tresult.print();\n\thull1.print();\n#endif\n\tmerge(result, hull1);\n#ifdef DEBUG_CONVEX_HULL\n\tprintf(\"\\n  Result\\n\");\n\tresult.print();\n#endif\n}\n\n#ifdef DEBUG_CONVEX_HULL\nvoid btConvexHullInternal::IntermediateHull::print()\n{\n\tprintf(\"    Hull\\n\");\n\tfor (Vertex* v = minXy; v; )\n\t{\n\t\tprintf(\"      \");\n\t\tv->print();\n\t\tif (v == maxXy)\n\t\t{\n\t\t\tprintf(\" maxXy\");\n\t\t}\n\t\tif (v == minYx)\n\t\t{\n\t\t\tprintf(\" minYx\");\n\t\t}\n\t\tif (v == maxYx)\n\t\t{\n\t\t\tprintf(\" maxYx\");\n\t\t}\n\t\tif (v->next->prev != v)\n\t\t{\n\t\t\tprintf(\" Inconsistency\");\n\t\t}\n\t\tprintf(\"\\n\");\n\t\tv = v->next;\n\t\tif (v == minXy)\n\t\t{\n\t\t\tbreak;\n\t\t}\n\t}\n\tif (minXy)\n\t{\t\t\n\t\tminXy->copy = (minXy->copy == -1) ? -2 : -1;\n\t\tminXy->printGraph();\n\t}\n}\n\nvoid btConvexHullInternal::Vertex::printGraph()\n{\n\tprint();\n\tprintf(\"\\nEdges\\n\");\n\tEdge* e = edges;\n\tif (e)\n\t{\n\t\tdo\n\t\t{\n\t\t\te->print();\n\t\t\tprintf(\"\\n\");\n\t\t\te = e->next;\n\t\t} while (e != edges);\n\t\tdo\n\t\t{\n\t\t\tVertex* v = e->target;\n\t\t\tif (v->copy != copy)\n\t\t\t{\n\t\t\t\tv->copy = copy;\n\t\t\t\tv->printGraph();\n\t\t\t}\n\t\t\te = e->next;\n\t\t} while (e != edges);\n\t}\n}\n#endif\n\nbtConvexHullInternal::Orientation btConvexHullInternal::getOrientation(const Edge* prev, const Edge* next, const Point32& s, const Point32& t)\n{\n\tbtAssert(prev->reverse->target == next->reverse->target);\n\tif (prev->next == next)\n\t{\n\t\tif (prev->prev == next)\n\t\t{\n\t\t\tPoint64 n = t.cross(s);\n\t\t\tPoint64 m = (*prev->target - *next->reverse->target).cross(*next->target - *next->reverse->target);\n\t\t\tbtAssert(!m.isZero());\n\t\t\tint64_t dot = n.dot(m);\n\t\t\tbtAssert(dot != 0);\n\t\t\treturn (dot > 0) ? COUNTER_CLOCKWISE : CLOCKWISE;\n\t\t}\n\t\treturn COUNTER_CLOCKWISE;\n\t}\n\telse if (prev->prev == next)\n\t{\n\t\treturn CLOCKWISE;\n\t}\n\telse\n\t{\n\t\treturn NONE;\n\t}\n}\n\nbtConvexHullInternal::Edge* btConvexHullInternal::findMaxAngle(bool ccw, const Vertex* start, const Point32& s, const Point64& rxs, const Point64& sxrxs, Rational64& minCot)\n{\n\tEdge* minEdge = NULL;\n\n#ifdef DEBUG_CONVEX_HULL\n\tprintf(\"find max edge for %d\\n\", start->point.index);\n#endif\n\tEdge* e = start->edges;\n\tif (e)\n\t{\n\t\tdo\n\t\t{\n\t\t\tif (e->copy > mergeStamp)\n\t\t\t{\n\t\t\t\tPoint32 t = *e->target - *start;\n\t\t\t\tRational64 cot(t.dot(sxrxs), t.dot(rxs));\n#ifdef DEBUG_CONVEX_HULL\n\t\t\t\tprintf(\"      Angle is %f (%d) for \", (float) btAtan(cot.toScalar()), (int) cot.isNaN());\n\t\t\t\te->print();\n#endif\n\t\t\t\tif (cot.isNaN())\n\t\t\t\t{\n\t\t\t\t\tbtAssert(ccw ? (t.dot(s) < 0) : (t.dot(s) > 0));\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tint cmp;\n\t\t\t\t\tif (minEdge == NULL)\n\t\t\t\t\t{\n\t\t\t\t\t\tminCot = cot;\n\t\t\t\t\t\tminEdge = e;\n\t\t\t\t\t}\n\t\t\t\t\telse if ((cmp = cot.compare(minCot)) < 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tminCot = cot;\n\t\t\t\t\t\tminEdge = e;\n\t\t\t\t\t}\n\t\t\t\t\telse if ((cmp == 0) && (ccw == (getOrientation(minEdge, e, s, t) == COUNTER_CLOCKWISE)))\n\t\t\t\t\t{\n\t\t\t\t\t\tminEdge = e;\n\t\t\t\t\t}\n\t\t\t\t}\n#ifdef DEBUG_CONVEX_HULL\n\t\t\t\tprintf(\"\\n\");\n#endif\n\t\t\t}\n\t\t\te = e->next;\n\t\t} while (e != start->edges);\n\t}\n\treturn minEdge;\n}\n\nvoid btConvexHullInternal::findEdgeForCoplanarFaces(Vertex* c0, Vertex* c1, Edge*& e0, Edge*& e1, Vertex* stop0, Vertex* stop1)\n{\n\tEdge* start0 = e0;\n\tEdge* start1 = e1;\n\tPoint32 et0 = start0 ? start0->target->point : c0->point;\n\tPoint32 et1 = start1 ? start1->target->point : c1->point;\n\tPoint32 s = c1->point - c0->point;\n\tPoint64 normal = ((start0 ? start0 : start1)->target->point - c0->point).cross(s);\n\tint64_t dist = c0->point.dot(normal);\n\tbtAssert(!start1 || (start1->target->point.dot(normal) == dist));\n\tPoint64 perp = s.cross(normal);\n\tbtAssert(!perp.isZero());\n\t\n#ifdef DEBUG_CONVEX_HULL\n\tprintf(\"   Advancing %d %d  (%p %p, %d %d)\\n\", c0->point.index, c1->point.index, start0, start1, start0 ? start0->target->point.index : -1, start1 ? start1->target->point.index : -1);\n#endif\n\n\tint64_t maxDot0 = et0.dot(perp);\n\tif (e0)\n\t{\n\t\twhile (e0->target != stop0)\n\t\t{\n\t\t\tEdge* e = e0->reverse->prev;\n\t\t\tif (e->target->point.dot(normal) < dist)\n\t\t\t{\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tbtAssert(e->target->point.dot(normal) == dist);\n\t\t\tif (e->copy == mergeStamp)\n\t\t\t{\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tint64_t dot = e->target->point.dot(perp);\n\t\t\tif (dot <= maxDot0)\n\t\t\t{\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmaxDot0 = dot;\n\t\t\te0 = e;\n\t\t\tet0 = e->target->point;\n\t\t}\n\t}\n\t\n\tint64_t maxDot1 = et1.dot(perp);\n\tif (e1)\n\t{\n\t\twhile (e1->target != stop1)\n\t\t{\n\t\t\tEdge* e = e1->reverse->next;\n\t\t\tif (e->target->point.dot(normal) < dist)\n\t\t\t{\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tbtAssert(e->target->point.dot(normal) == dist);\n\t\t\tif (e->copy == mergeStamp)\n\t\t\t{\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tint64_t dot = e->target->point.dot(perp);\n\t\t\tif (dot <= maxDot1)\n\t\t\t{\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmaxDot1 = dot;\n\t\t\te1 = e;\n\t\t\tet1 = e->target->point;\n\t\t}\n\t}\n\n#ifdef DEBUG_CONVEX_HULL\n\tprintf(\"   Starting at %d %d\\n\", et0.index, et1.index);\n#endif\n\n\tint64_t dx = maxDot1 - maxDot0;\n\tif (dx > 0)\n\t{\n\t\twhile (true)\n\t\t{\n\t\t\tint64_t dy = (et1 - et0).dot(s);\n\t\t\t\n\t\t\tif (e0 && (e0->target != stop0))\n\t\t\t{\n\t\t\t\tEdge* f0 = e0->next->reverse;\n\t\t\t\tif (f0->copy > mergeStamp)\n\t\t\t\t{\n\t\t\t\t\tint64_t dx0 = (f0->target->point - et0).dot(perp);\n\t\t\t\t\tint64_t dy0 = (f0->target->point - et0).dot(s);\n\t\t\t\t\tif ((dx0 == 0) ? (dy0 < 0) : ((dx0 < 0) && (Rational64(dy0, dx0).compare(Rational64(dy, dx)) >= 0)))\n\t\t\t\t\t{\n\t\t\t\t\t\tet0 = f0->target->point;\n\t\t\t\t\t\tdx = (et1 - et0).dot(perp);\n\t\t\t\t\t\te0 = (e0 == start0) ? NULL : f0;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif (e1 && (e1->target != stop1))\n\t\t\t{\n\t\t\t\tEdge* f1 = e1->reverse->next;\n\t\t\t\tif (f1->copy > mergeStamp)\n\t\t\t\t{\n\t\t\t\t\tPoint32 d1 = f1->target->point - et1;\n\t\t\t\t\tif (d1.dot(normal) == 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tint64_t dx1 = d1.dot(perp);\n\t\t\t\t\t\tint64_t dy1 = d1.dot(s);\n\t\t\t\t\t\tint64_t dxn = (f1->target->point - et0).dot(perp);\n\t\t\t\t\t\tif ((dxn > 0) && ((dx1 == 0) ? (dy1 < 0) : ((dx1 < 0) && (Rational64(dy1, dx1).compare(Rational64(dy, dx)) > 0))))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\te1 = f1;\n\t\t\t\t\t\t\tet1 = e1->target->point;\n\t\t\t\t\t\t\tdx = dxn;\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tbtAssert((e1 == start1) && (d1.dot(normal) < 0));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tbreak;\n\t\t}\n\t}\n\telse if (dx < 0)\n\t{\n\t\twhile (true)\n\t\t{\n\t\t\tint64_t dy = (et1 - et0).dot(s);\n\t\t\t\n\t\t\tif (e1 && (e1->target != stop1))\n\t\t\t{\n\t\t\t\tEdge* f1 = e1->prev->reverse;\n\t\t\t\tif (f1->copy > mergeStamp)\n\t\t\t\t{\n\t\t\t\t\tint64_t dx1 = (f1->target->point - et1).dot(perp);\n\t\t\t\t\tint64_t dy1 = (f1->target->point - et1).dot(s);\n\t\t\t\t\tif ((dx1 == 0) ? (dy1 > 0) : ((dx1 < 0) && (Rational64(dy1, dx1).compare(Rational64(dy, dx)) <= 0)))\n\t\t\t\t\t{\n\t\t\t\t\t\tet1 = f1->target->point;\n\t\t\t\t\t\tdx = (et1 - et0).dot(perp);\n\t\t\t\t\t\te1 = (e1 == start1) ? NULL : f1;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif (e0 && (e0->target != stop0))\n\t\t\t{\n\t\t\t\tEdge* f0 = e0->reverse->prev;\n\t\t\t\tif (f0->copy > mergeStamp)\n\t\t\t\t{\n\t\t\t\t\tPoint32 d0 = f0->target->point - et0;\n\t\t\t\t\tif (d0.dot(normal) == 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tint64_t dx0 = d0.dot(perp);\n\t\t\t\t\t\tint64_t dy0 = d0.dot(s);\n\t\t\t\t\t\tint64_t dxn = (et1 - f0->target->point).dot(perp);\n\t\t\t\t\t\tif ((dxn < 0) && ((dx0 == 0) ? (dy0 > 0) : ((dx0 < 0) && (Rational64(dy0, dx0).compare(Rational64(dy, dx)) < 0))))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\te0 = f0;\n\t\t\t\t\t\t\tet0 = e0->target->point;\n\t\t\t\t\t\t\tdx = dxn;\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tbtAssert((e0 == start0) && (d0.dot(normal) < 0));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tbreak;\n\t\t}\n\t}\n#ifdef DEBUG_CONVEX_HULL\n\tprintf(\"   Advanced edges to %d %d\\n\", et0.index, et1.index);\n#endif\n}\n\n\nvoid btConvexHullInternal::merge(IntermediateHull& h0, IntermediateHull& h1)\n{\n\tif (!h1.maxXy)\n\t{\n\t\treturn;\n\t}\n\tif (!h0.maxXy)\n\t{\n\t\th0 = h1;\n\t\treturn;\n\t}\n\t\n\tmergeStamp--;\n\n\tVertex* c0 = NULL;\n\tEdge* toPrev0 = NULL;\n\tEdge* firstNew0 = NULL;\n\tEdge* pendingHead0 = NULL;\n\tEdge* pendingTail0 = NULL;\n\tVertex* c1 = NULL;\n\tEdge* toPrev1 = NULL;\n\tEdge* firstNew1 = NULL;\n\tEdge* pendingHead1 = NULL;\n\tEdge* pendingTail1 = NULL;\n\tPoint32 prevPoint;\n\n\tif (mergeProjection(h0, h1, c0, c1))\n\t{\n\t\tPoint32 s = *c1 - *c0;\n\t\tPoint64 normal = Point32(0, 0, -1).cross(s);\n\t\tPoint64 t = s.cross(normal);\n\t\tbtAssert(!t.isZero());\n\n\t\tEdge* e = c0->edges;\n\t\tEdge* start0 = NULL;\n\t\tif (e)\n\t\t{\n\t\t\tdo\n\t\t\t{\n\t\t\t\tint64_t dot = (*e->target - *c0).dot(normal);\n\t\t\t\tbtAssert(dot <= 0);\n\t\t\t\tif ((dot == 0) && ((*e->target - *c0).dot(t) > 0))\n\t\t\t\t{\n\t\t\t\t\tif (!start0 || (getOrientation(start0, e, s, Point32(0, 0, -1)) == CLOCKWISE))\n\t\t\t\t\t{\n\t\t\t\t\t\tstart0 = e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\te = e->next;\n\t\t\t} while (e != c0->edges);\n\t\t}\n\t\t\n\t\te = c1->edges;\n\t\tEdge* start1 = NULL;\n\t\tif (e)\n\t\t{\n\t\t\tdo\n\t\t\t{\n\t\t\t\tint64_t dot = (*e->target - *c1).dot(normal);\n\t\t\t\tbtAssert(dot <= 0);\n\t\t\t\tif ((dot == 0) && ((*e->target - *c1).dot(t) > 0))\n\t\t\t\t{\n\t\t\t\t\tif (!start1 || (getOrientation(start1, e, s, Point32(0, 0, -1)) == COUNTER_CLOCKWISE))\n\t\t\t\t\t{\n\t\t\t\t\t\tstart1 = e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\te = e->next;\n\t\t\t} while (e != c1->edges);\n\t\t}\n\n\t\tif (start0 || start1)\n\t\t{\n\t\t\tfindEdgeForCoplanarFaces(c0, c1, start0, start1, NULL, NULL);\n\t\t\tif (start0)\n\t\t\t{\n\t\t\t\tc0 = start0->target;\n\t\t\t}\n\t\t\tif (start1)\n\t\t\t{\n\t\t\t\tc1 = start1->target;\n\t\t\t}\n\t\t}\n\n\t\tprevPoint = c1->point;\n\t\tprevPoint.z++;\n\t}\n\telse\n\t{\n\t\tprevPoint = c1->point;\n\t\tprevPoint.x++;\n\t}\n\n\tVertex* first0 = c0;\n\tVertex* first1 = c1;\n\tbool firstRun = true;\n\n\twhile (true)\n\t{\n\t\tPoint32 s = *c1 - *c0;\n\t\tPoint32 r = prevPoint - c0->point;\n\t\tPoint64 rxs = r.cross(s);\n\t\tPoint64 sxrxs = s.cross(rxs);\n\t\t\n#ifdef DEBUG_CONVEX_HULL\n\t\tprintf(\"\\n  Checking %d %d\\n\", c0->point.index, c1->point.index);\n#endif\n\t\tRational64 minCot0(0, 0);\n\t\tEdge* min0 = findMaxAngle(false, c0, s, rxs, sxrxs, minCot0);\n\t\tRational64 minCot1(0, 0);\n\t\tEdge* min1 = findMaxAngle(true, c1, s, rxs, sxrxs, minCot1);\n\t\tif (!min0 && !min1)\n\t\t{\n\t\t\tEdge* e = newEdgePair(c0, c1);\n\t\t\te->link(e);\n\t\t\tc0->edges = e;\n\n\t\t\te = e->reverse;\n\t\t\te->link(e);\n\t\t\tc1->edges = e;\n\t\t\treturn;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tint cmp = !min0 ? 1 : !min1 ? -1 : minCot0.compare(minCot1);\n#ifdef DEBUG_CONVEX_HULL\n\t\t\tprintf(\"    -> Result %d\\n\", cmp);\n#endif\n\t\t\tif (firstRun || ((cmp >= 0) ? !minCot1.isNegativeInfinity() : !minCot0.isNegativeInfinity()))\n\t\t\t{\n\t\t\t\tEdge* e = newEdgePair(c0, c1);\n\t\t\t\tif (pendingTail0)\n\t\t\t\t{\n\t\t\t\t\tpendingTail0->prev = e;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tpendingHead0 = e;\n\t\t\t\t}\n\t\t\t\te->next = pendingTail0;\n\t\t\t\tpendingTail0 = e;\n\n\t\t\t\te = e->reverse;\n\t\t\t\tif (pendingTail1)\n\t\t\t\t{\n\t\t\t\t\tpendingTail1->next = e;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tpendingHead1 = e;\n\t\t\t\t}\n\t\t\t\te->prev = pendingTail1;\n\t\t\t\tpendingTail1 = e;\n\t\t\t}\n\t\t\t\n\t\t\tEdge* e0 = min0;\n\t\t\tEdge* e1 = min1;\n\n#ifdef DEBUG_CONVEX_HULL\n\t\t\tprintf(\"   Found min edges to %d %d\\n\", e0 ? e0->target->point.index : -1, e1 ? e1->target->point.index : -1);\n#endif\n\n\t\t\tif (cmp == 0)\n\t\t\t{\n\t\t\t\tfindEdgeForCoplanarFaces(c0, c1, e0, e1, NULL, NULL);\n\t\t\t}\n\n\t\t\tif ((cmp >= 0) && e1)\n\t\t\t{\n\t\t\t\tif (toPrev1)\n\t\t\t\t{\n\t\t\t\t\tfor (Edge* e = toPrev1->next, *n = NULL; e != min1; e = n)\n\t\t\t\t\t{\n\t\t\t\t\t\tn = e->next;\n\t\t\t\t\t\tremoveEdgePair(e);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (pendingTail1)\n\t\t\t\t{\n\t\t\t\t\tif (toPrev1)\n\t\t\t\t\t{\n\t\t\t\t\t\ttoPrev1->link(pendingHead1);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tmin1->prev->link(pendingHead1);\n\t\t\t\t\t\tfirstNew1 = pendingHead1;\n\t\t\t\t\t}\n\t\t\t\t\tpendingTail1->link(min1);\n\t\t\t\t\tpendingHead1 = NULL;\n\t\t\t\t\tpendingTail1 = NULL;\n\t\t\t\t}\n\t\t\t\telse if (!toPrev1)\n\t\t\t\t{\n\t\t\t\t\tfirstNew1 = min1;\n\t\t\t\t}\n\n\t\t\t\tprevPoint = c1->point;\n\t\t\t\tc1 = e1->target;\n\t\t\t\ttoPrev1 = e1->reverse;\n\t\t\t}\n\n\t\t\tif ((cmp <= 0) && e0)\n\t\t\t{\n\t\t\t\tif (toPrev0)\n\t\t\t\t{\n\t\t\t\t\tfor (Edge* e = toPrev0->prev, *n = NULL; e != min0; e = n)\n\t\t\t\t\t{\n\t\t\t\t\t\tn = e->prev;\n\t\t\t\t\t\tremoveEdgePair(e);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (pendingTail0)\n\t\t\t\t{\n\t\t\t\t\tif (toPrev0)\n\t\t\t\t\t{\n\t\t\t\t\t\tpendingHead0->link(toPrev0);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tpendingHead0->link(min0->next);\n\t\t\t\t\t\tfirstNew0 = pendingHead0;\n\t\t\t\t\t}\n\t\t\t\t\tmin0->link(pendingTail0);\n\t\t\t\t\tpendingHead0 = NULL;\n\t\t\t\t\tpendingTail0 = NULL;\n\t\t\t\t}\n\t\t\t\telse if (!toPrev0)\n\t\t\t\t{\n\t\t\t\t\tfirstNew0 = min0;\n\t\t\t\t}\n\n\t\t\t\tprevPoint = c0->point;\n\t\t\t\tc0 = e0->target;\n\t\t\t\ttoPrev0 = e0->reverse;\n\t\t\t}\n\t\t}\n\n\t\tif ((c0 == first0) && (c1 == first1))\n\t\t{\n\t\t\tif (toPrev0 == NULL)\n\t\t\t{\n\t\t\t\tpendingHead0->link(pendingTail0);\n\t\t\t\tc0->edges = pendingTail0;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tfor (Edge* e = toPrev0->prev, *n = NULL; e != firstNew0; e = n)\n\t\t\t\t{\n\t\t\t\t\tn = e->prev;\n\t\t\t\t\tremoveEdgePair(e);\n\t\t\t\t}\n\t\t\t\tif (pendingTail0)\n\t\t\t\t{\n\t\t\t\t\tpendingHead0->link(toPrev0);\n\t\t\t\t\tfirstNew0->link(pendingTail0);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (toPrev1 == NULL)\n\t\t\t{\n\t\t\t\tpendingTail1->link(pendingHead1);\n\t\t\t\tc1->edges = pendingTail1;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tfor (Edge* e = toPrev1->next, *n = NULL; e != firstNew1; e = n)\n\t\t\t\t{\n\t\t\t\t\tn = e->next;\n\t\t\t\t\tremoveEdgePair(e);\n\t\t\t\t}\n\t\t\t\tif (pendingTail1)\n\t\t\t\t{\n\t\t\t\t\ttoPrev1->link(pendingHead1);\n\t\t\t\t\tpendingTail1->link(firstNew1);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn;\n\t\t}\n\n\t\tfirstRun = false;\n\t}\n}\n\n\nstatic bool pointCmp(const btConvexHullInternal::Point32& p, const btConvexHullInternal::Point32& q)\n{\n\treturn (p.y < q.y) || ((p.y == q.y) && ((p.x < q.x) || ((p.x == q.x) && (p.z < q.z))));\n}\n\nvoid btConvexHullInternal::compute(const void* coords, bool doubleCoords, int stride, int count)\n{\n\tbtVector3 min(btScalar(1e30), btScalar(1e30), btScalar(1e30)), max(btScalar(-1e30), btScalar(-1e30), btScalar(-1e30));\n\tconst char* ptr = (const char*) coords;\n\tif (doubleCoords)\n\t{\n\t\tfor (int i = 0; i < count; i++)\n\t\t{\n\t\t\tconst double* v = (const double*) ptr;\n\t\t\tbtVector3 p((btScalar) v[0], (btScalar) v[1], (btScalar) v[2]);\n\t\t\tptr += stride;\n\t\t\tmin.setMin(p);\n\t\t\tmax.setMax(p);\n\t\t}\n\t}\n\telse\n\t{\n\t\tfor (int i = 0; i < count; i++)\n\t\t{\n\t\t\tconst float* v = (const float*) ptr;\n\t\t\tbtVector3 p(v[0], v[1], v[2]);\n\t\t\tptr += stride;\n\t\t\tmin.setMin(p);\n\t\t\tmax.setMax(p);\n\t\t}\n\t}\n\n\tbtVector3 s = max - min;\n\tmaxAxis = s.maxAxis();\n\tminAxis = s.minAxis();\n\tif (minAxis == maxAxis)\n\t{\n\t\tminAxis = (maxAxis + 1) % 3;\n\t}\n\tmedAxis = 3 - maxAxis - minAxis;\n\n\ts /= btScalar(10216);\n\tif (((medAxis + 1) % 3) != maxAxis)\n\t{\n\t\ts *= -1;\n\t}\n\tscaling = s;\n\n\tif (s[0] != 0)\n\t{\n\t\ts[0] = btScalar(1) / s[0];\n\t}\n\tif (s[1] != 0)\n\t{\n\t\ts[1] = btScalar(1) / s[1];\n\t}\n\tif (s[2] != 0)\n\t{\n\t\ts[2] = btScalar(1) / s[2];\n\t}\n\n\tcenter = (min + max) * btScalar(0.5);\n\n\tbtAlignedObjectArray<Point32> points;\n\tpoints.resize(count);\n\tptr = (const char*) coords;\n\tif (doubleCoords)\n\t{\n\t\tfor (int i = 0; i < count; i++)\n\t\t{\n\t\t\tconst double* v = (const double*) ptr;\n\t\t\tbtVector3 p((btScalar) v[0], (btScalar) v[1], (btScalar) v[2]);\n\t\t\tptr += stride;\n\t\t\tp = (p - center) * s;\n\t\t\tpoints[i].x = (int32_t) p[medAxis];\n\t\t\tpoints[i].y = (int32_t) p[maxAxis];\n\t\t\tpoints[i].z = (int32_t) p[minAxis];\n\t\t\tpoints[i].index = i;\n\t\t}\n\t}\n\telse\n\t{\n\t\tfor (int i = 0; i < count; i++)\n\t\t{\n\t\t\tconst float* v = (const float*) ptr;\n\t\t\tbtVector3 p(v[0], v[1], v[2]);\n\t\t\tptr += stride;\n\t\t\tp = (p - center) * s;\n\t\t\tpoints[i].x = (int32_t) p[medAxis];\n\t\t\tpoints[i].y = (int32_t) p[maxAxis];\n\t\t\tpoints[i].z = (int32_t) p[minAxis];\n\t\t\tpoints[i].index = i;\n\t\t}\n\t}\n\tpoints.quickSort(pointCmp);\n\n\tvertexPool.reset();\n\tvertexPool.setArraySize(count);\n\toriginalVertices.resize(count);\n\tfor (int i = 0; i < count; i++)\n\t{\n\t\tVertex* v = vertexPool.newObject();\n\t\tv->edges = NULL;\n\t\tv->point = points[i];\n\t\tv->copy = -1;\n\t\toriginalVertices[i] = v;\n\t}\n\n\tpoints.clear();\n\n\tedgePool.reset();\n\tedgePool.setArraySize(6 * count);\n\n\tusedEdgePairs = 0;\n\tmaxUsedEdgePairs = 0;\n\n\tmergeStamp = -3;\n\n\tIntermediateHull hull;\n\tcomputeInternal(0, count, hull);\n\tvertexList = hull.minXy;\n#ifdef DEBUG_CONVEX_HULL\n\tprintf(\"max. edges %d (3v = %d)\", maxUsedEdgePairs, 3 * count);\n#endif\n}\n\nbtVector3 btConvexHullInternal::toBtVector(const Point32& v)\n{\n\tbtVector3 p;\n\tp[medAxis] = btScalar(v.x);\n\tp[maxAxis] = btScalar(v.y);\n\tp[minAxis] = btScalar(v.z);\n\treturn p * scaling;\n}\n\nbtVector3 btConvexHullInternal::getBtNormal(Face* face)\n{\n\treturn toBtVector(face->dir0).cross(toBtVector(face->dir1)).normalized();\n}\n\nbtVector3 btConvexHullInternal::getCoordinates(const Vertex* v)\n{\n\tbtVector3 p;\n\tp[medAxis] = v->xvalue();\n\tp[maxAxis] = v->yvalue();\n\tp[minAxis] = v->zvalue();\n\treturn p * scaling + center;\n}\n\nbtScalar btConvexHullInternal::shrink(btScalar amount, btScalar clampAmount)\n{\n\tif (!vertexList)\n\t{\n\t\treturn 0;\n\t}\n\tint stamp = --mergeStamp;\n\tbtAlignedObjectArray<Vertex*> stack;\n\tvertexList->copy = stamp;\n\tstack.push_back(vertexList);\n\tbtAlignedObjectArray<Face*> faces;\n\n\tPoint32 ref = vertexList->point;\n\tInt128 hullCenterX(0, 0);\n\tInt128 hullCenterY(0, 0);\n\tInt128 hullCenterZ(0, 0);\n\tInt128 volume(0, 0);\n\n\twhile (stack.size() > 0)\n\t{\n\t\tVertex* v = stack[stack.size() - 1];\n\t\tstack.pop_back();\n\t\tEdge* e = v->edges;\n\t\tif (e)\n\t\t{\n\t\t\tdo\n\t\t\t{\n\t\t\t\tif (e->target->copy != stamp)\n\t\t\t\t{\n\t\t\t\t\te->target->copy = stamp;\n\t\t\t\t\tstack.push_back(e->target);\n\t\t\t\t}\n\t\t\t\tif (e->copy != stamp)\n\t\t\t\t{\n\t\t\t\t\tFace* face = facePool.newObject();\n\t\t\t\t\tface->init(e->target, e->reverse->prev->target, v);\n\t\t\t\t\tfaces.push_back(face);\n\t\t\t\t\tEdge* f = e;\n\n\t\t\t\t\tVertex* a = NULL;\n\t\t\t\t\tVertex* b = NULL;\n\t\t\t\t\tdo\n\t\t\t\t\t{\n\t\t\t\t\t\tif (a && b)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tint64_t vol = (v->point - ref).dot((a->point - ref).cross(b->point - ref));\n\t\t\t\t\t\t\tbtAssert(vol >= 0);\n\t\t\t\t\t\t\tPoint32 c = v->point + a->point + b->point + ref;\n\t\t\t\t\t\t\thullCenterX += vol * c.x;\n\t\t\t\t\t\t\thullCenterY += vol * c.y;\n\t\t\t\t\t\t\thullCenterZ += vol * c.z;\n\t\t\t\t\t\t\tvolume += vol;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbtAssert(f->copy != stamp);\n\t\t\t\t\t\tf->copy = stamp;\n\t\t\t\t\t\tf->face = face;\n\n\t\t\t\t\t\ta = b;\n\t\t\t\t\t\tb = f->target;\n\n\t\t\t\t\t\tf = f->reverse->prev;\n\t\t\t\t\t} while (f != e);\n\t\t\t\t}\n\t\t\t\te = e->next;\n\t\t\t} while (e != v->edges);\n\t\t}\n\t}\n\n\tif (volume.getSign() <= 0)\n\t{\n\t\treturn 0;\n\t}\n\n\tbtVector3 hullCenter;\n\thullCenter[medAxis] = hullCenterX.toScalar();\n\thullCenter[maxAxis] = hullCenterY.toScalar();\n\thullCenter[minAxis] = hullCenterZ.toScalar();\n\thullCenter /= 4 * volume.toScalar();\n\thullCenter *= scaling;\n\n\tint faceCount = faces.size();\n\n\tif (clampAmount > 0)\n\t{\n\t\tbtScalar minDist = SIMD_INFINITY;\n\t\tfor (int i = 0; i < faceCount; i++)\n\t\t{\n\t\t\tbtVector3 normal = getBtNormal(faces[i]);\n\t\t\tbtScalar dist = normal.dot(toBtVector(faces[i]->origin) - hullCenter);\n\t\t\tif (dist < minDist)\n\t\t\t{\n\t\t\t\tminDist = dist;\n\t\t\t}\n\t\t}\n\t\t\n\t\tif (minDist <= 0)\n\t\t{\n\t\t\treturn 0;\n\t\t}\n\n\t\tamount = btMin(amount, minDist * clampAmount);\n\t}\n\n\tunsigned int seed = 243703;\n\tfor (int i = 0; i < faceCount; i++, seed = 1664525 * seed + 1013904223)\n\t{\n\t\tbtSwap(faces[i], faces[seed % faceCount]);\n\t}\n\n\tfor (int i = 0; i < faceCount; i++)\n\t{\n\t\tif (!shiftFace(faces[i], amount, stack))\n\t\t{\n\t\t\treturn -amount;\n\t\t}\n\t}\n\n\treturn amount;\n}\n\nbool btConvexHullInternal::shiftFace(Face* face, btScalar amount, btAlignedObjectArray<Vertex*> stack)\n{\n\tbtVector3 origShift = getBtNormal(face) * -amount;\n\tif (scaling[0] != 0)\n\t{\n\t\torigShift[0] /= scaling[0];\n\t}\n\tif (scaling[1] != 0)\n\t{\n\t\torigShift[1] /= scaling[1];\n\t}\n\tif (scaling[2] != 0)\n\t{\n\t\torigShift[2] /= scaling[2];\n\t}\n\tPoint32 shift((int32_t) origShift[medAxis], (int32_t) origShift[maxAxis], (int32_t) origShift[minAxis]);\n\tif (shift.isZero())\n\t{\n\t\treturn true;\n\t}\n\tPoint64 normal = face->getNormal();\n#ifdef DEBUG_CONVEX_HULL\n\tprintf(\"\\nShrinking face (%d %d %d) (%d %d %d) (%d %d %d) by (%d %d %d)\\n\",\n\t\t\t\t face->origin.x, face->origin.y, face->origin.z, face->dir0.x, face->dir0.y, face->dir0.z, face->dir1.x, face->dir1.y, face->dir1.z, shift.x, shift.y, shift.z);\n#endif\n\tint64_t origDot = face->origin.dot(normal);\n\tPoint32 shiftedOrigin = face->origin + shift;\n\tint64_t shiftedDot = shiftedOrigin.dot(normal);\n\tbtAssert(shiftedDot <= origDot);\n\tif (shiftedDot >= origDot)\n\t{\n\t\treturn false;\n\t}\n\n\tEdge* intersection = NULL;\n\n\tEdge* startEdge = face->nearbyVertex->edges;\n#ifdef DEBUG_CONVEX_HULL\n\tprintf(\"Start edge is \");\n\tstartEdge->print();\n\tprintf(\", normal is (%lld %lld %lld), shifted dot is %lld\\n\", normal.x, normal.y, normal.z, shiftedDot);\n#endif\n\tRational128 optDot = face->nearbyVertex->dot(normal);\n\tint cmp = optDot.compare(shiftedDot);\n#ifdef SHOW_ITERATIONS\n\tint n = 0;\n#endif\n\tif (cmp >= 0)\n\t{\n\t\tEdge* e = startEdge;\n\t\tdo\n\t\t{\n#ifdef SHOW_ITERATIONS\n\t\t\tn++;\n#endif\n\t\t\tRational128 dot = e->target->dot(normal);\n\t\t\tbtAssert(dot.compare(origDot) <= 0);\n#ifdef DEBUG_CONVEX_HULL\n\t\t\tprintf(\"Moving downwards, edge is \");\n\t\t\te->print();\n\t\t\tprintf(\", dot is %f (%f %lld)\\n\", (float) dot.toScalar(), (float) optDot.toScalar(), shiftedDot);\n#endif\n\t\t\tif (dot.compare(optDot) < 0)\n\t\t\t{\n\t\t\t\tint c = dot.compare(shiftedDot);\n\t\t\t\toptDot = dot;\n\t\t\t\te = e->reverse;\n\t\t\t\tstartEdge = e;\n\t\t\t\tif (c < 0)\n\t\t\t\t{\n\t\t\t\t\tintersection = e;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcmp = c;\n\t\t\t}\n\t\t\te = e->prev;\n\t\t} while (e != startEdge);\n\n\t\tif (!intersection)\n\t\t{\n\t\t\treturn false;\n\t\t}\n\t}\n\telse\n\t{\n\t\tEdge* e = startEdge;\n\t\tdo\n\t\t{\n#ifdef SHOW_ITERATIONS\n\t\t\tn++;\n#endif\n\t\t\tRational128 dot = e->target->dot(normal);\n\t\t\tbtAssert(dot.compare(origDot) <= 0);\n#ifdef DEBUG_CONVEX_HULL\n\t\t\tprintf(\"Moving upwards, edge is \");\n\t\t\te->print();\n\t\t\tprintf(\", dot is %f (%f %lld)\\n\", (float) dot.toScalar(), (float) optDot.toScalar(), shiftedDot);\n#endif\n\t\t\tif (dot.compare(optDot) > 0)\n\t\t\t{\n\t\t\t\tcmp = dot.compare(shiftedDot);\n\t\t\t\tif (cmp >= 0)\n\t\t\t\t{\n\t\t\t\t\tintersection = e;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\toptDot = dot;\n\t\t\t\te = e->reverse;\n\t\t\t\tstartEdge = e;\n\t\t\t}\n\t\t\te = e->prev;\n\t\t} while (e != startEdge);\n\t\t\n\t\tif (!intersection)\n\t\t{\n\t\t\treturn true;\n\t\t}\n\t}\n\n#ifdef SHOW_ITERATIONS\n\tprintf(\"Needed %d iterations to find initial intersection\\n\", n);\n#endif\n\n\tif (cmp == 0)\n\t{\n\t\tEdge* e = intersection->reverse->next;\n#ifdef SHOW_ITERATIONS\n\t\tn = 0;\n#endif\n\t\twhile (e->target->dot(normal).compare(shiftedDot) <= 0)\n\t\t{\n#ifdef SHOW_ITERATIONS\n\t\t\tn++;\n#endif\n\t\t\te = e->next;\n\t\t\tif (e == intersection->reverse)\n\t\t\t{\n\t\t\t\treturn true;\n\t\t\t}\n#ifdef DEBUG_CONVEX_HULL\n\t\t\tprintf(\"Checking for outwards edge, current edge is \");\n\t\t\te->print();\n\t\t\tprintf(\"\\n\");\n#endif\n\t\t}\n#ifdef SHOW_ITERATIONS\n\t\tprintf(\"Needed %d iterations to check for complete containment\\n\", n);\n#endif\n\t}\n\t\n\tEdge* firstIntersection = NULL;\n\tEdge* faceEdge = NULL;\n\tEdge* firstFaceEdge = NULL;\n\n#ifdef SHOW_ITERATIONS\n\tint m = 0;\n#endif\n\twhile (true)\n\t{\n#ifdef SHOW_ITERATIONS\n\t\tm++;\n#endif\n#ifdef DEBUG_CONVEX_HULL\n\t\tprintf(\"Intersecting edge is \");\n\t\tintersection->print();\n\t\tprintf(\"\\n\");\n#endif\n\t\tif (cmp == 0)\n\t\t{\n\t\t\tEdge* e = intersection->reverse->next;\n\t\t\tstartEdge = e;\n#ifdef SHOW_ITERATIONS\n\t\t\tn = 0;\n#endif\n\t\t\twhile (true)\n\t\t\t{\n#ifdef SHOW_ITERATIONS\n\t\t\t\tn++;\n#endif\n\t\t\t\tif (e->target->dot(normal).compare(shiftedDot) >= 0)\n\t\t\t\t{\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tintersection = e->reverse;\n\t\t\t\te = e->next;\n\t\t\t\tif (e == startEdge)\n\t\t\t\t{\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n#ifdef SHOW_ITERATIONS\n\t\t\tprintf(\"Needed %d iterations to advance intersection\\n\", n);\n#endif\n\t\t}\n\n#ifdef DEBUG_CONVEX_HULL\n\t\tprintf(\"Advanced intersecting edge to \");\n\t\tintersection->print();\n\t\tprintf(\", cmp = %d\\n\", cmp);\n#endif\n\n\t\tif (!firstIntersection)\n\t\t{\n\t\t\tfirstIntersection = intersection;\n\t\t}\n\t\telse if (intersection == firstIntersection)\n\t\t{\n\t\t\tbreak;\n\t\t}\n\n\t\tint prevCmp = cmp;\n\t\tEdge* prevIntersection = intersection;\n\t\tEdge* prevFaceEdge = faceEdge;\n\n\t\tEdge* e = intersection->reverse;\n#ifdef SHOW_ITERATIONS\n\t\tn = 0;\n#endif\n\t\twhile (true)\n\t\t{\n#ifdef SHOW_ITERATIONS\n\t\t\tn++;\n#endif\n\t\t\te = e->reverse->prev;\n\t\t\tbtAssert(e != intersection->reverse);\n\t\t\tcmp = e->target->dot(normal).compare(shiftedDot);\n#ifdef DEBUG_CONVEX_HULL\n\t\t\tprintf(\"Testing edge \");\n\t\t\te->print();\n\t\t\tprintf(\" -> cmp = %d\\n\", cmp);\n#endif\n\t\t\tif (cmp >= 0)\n\t\t\t{\n\t\t\t\tintersection = e;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n#ifdef SHOW_ITERATIONS\n\t\tprintf(\"Needed %d iterations to find other intersection of face\\n\", n);\n#endif\n\n\t\tif (cmp > 0)\n\t\t{\n\t\t\tVertex* removed = intersection->target;\n\t\t\te = intersection->reverse;\n\t\t\tif (e->prev == e)\n\t\t\t{\n\t\t\t\tremoved->edges = NULL;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tremoved->edges = e->prev;\n\t\t\t\te->prev->link(e->next);\n\t\t\t\te->link(e);\n\t\t\t}\n#ifdef DEBUG_CONVEX_HULL\n\t\t\tprintf(\"1: Removed part contains (%d %d %d)\\n\", removed->point.x, removed->point.y, removed->point.z);\n#endif\n\t\t\t\n\t\t\tPoint64 n0 = intersection->face->getNormal();\n\t\t\tPoint64 n1 = intersection->reverse->face->getNormal();\n\t\t\tint64_t m00 = face->dir0.dot(n0);\n\t\t\tint64_t m01 = face->dir1.dot(n0);\n\t\t\tint64_t m10 = face->dir0.dot(n1);\n\t\t\tint64_t m11 = face->dir1.dot(n1);\n\t\t\tint64_t r0 = (intersection->face->origin - shiftedOrigin).dot(n0);\n\t\t\tint64_t r1 = (intersection->reverse->face->origin - shiftedOrigin).dot(n1);\n\t\t\tInt128 det = Int128::mul(m00, m11) - Int128::mul(m01, m10);\n\t\t\tbtAssert(det.getSign() != 0);\n\t\t\tVertex* v = vertexPool.newObject();\n\t\t\tv->point.index = -1;\n\t\t\tv->copy = -1;\n\t\t\tv->point128 = PointR128(Int128::mul(face->dir0.x * r0, m11) - Int128::mul(face->dir0.x * r1, m01)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ Int128::mul(face->dir1.x * r1, m00) - Int128::mul(face->dir1.x * r0, m10) + det * shiftedOrigin.x,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tInt128::mul(face->dir0.y * r0, m11) - Int128::mul(face->dir0.y * r1, m01)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ Int128::mul(face->dir1.y * r1, m00) - Int128::mul(face->dir1.y * r0, m10) + det * shiftedOrigin.y,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tInt128::mul(face->dir0.z * r0, m11) - Int128::mul(face->dir0.z * r1, m01)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ Int128::mul(face->dir1.z * r1, m00) - Int128::mul(face->dir1.z * r0, m10) + det * shiftedOrigin.z,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdet);\n\t\t\tv->point.x = (int32_t) v->point128.xvalue();\n\t\t\tv->point.y = (int32_t) v->point128.yvalue();\n\t\t\tv->point.z = (int32_t) v->point128.zvalue();\n\t\t\tintersection->target = v;\n\t\t\tv->edges = e;\n\n\t\t\tstack.push_back(v);\n\t\t\tstack.push_back(removed);\n\t\t\tstack.push_back(NULL);\n\t\t}\n\n\t\tif (cmp || prevCmp || (prevIntersection->reverse->next->target != intersection->target))\n\t\t{\n\t\t\tfaceEdge = newEdgePair(prevIntersection->target, intersection->target);\n\t\t\tif (prevCmp == 0)\n\t\t\t{\n\t\t\t\tfaceEdge->link(prevIntersection->reverse->next);\n\t\t\t}\n\t\t\tif ((prevCmp == 0) || prevFaceEdge)\n\t\t\t{\n\t\t\t\tprevIntersection->reverse->link(faceEdge);\n\t\t\t}\n\t\t\tif (cmp == 0)\n\t\t\t{\n\t\t\t\tintersection->reverse->prev->link(faceEdge->reverse);\n\t\t\t}\n\t\t\tfaceEdge->reverse->link(intersection->reverse);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tfaceEdge = prevIntersection->reverse->next;\n\t\t}\n\n\t\tif (prevFaceEdge)\n\t\t{\n\t\t\tif (prevCmp > 0)\n\t\t\t{\n\t\t\t\tfaceEdge->link(prevFaceEdge->reverse);\n\t\t\t}\n\t\t\telse if (faceEdge != prevFaceEdge->reverse)\n\t\t\t{\n\t\t\t\tstack.push_back(prevFaceEdge->target);\n\t\t\t\twhile (faceEdge->next != prevFaceEdge->reverse)\n\t\t\t\t{\n\t\t\t\t\tVertex* removed = faceEdge->next->target;\n\t\t\t\t\tremoveEdgePair(faceEdge->next);\n\t\t\t\t\tstack.push_back(removed);\n#ifdef DEBUG_CONVEX_HULL\n\t\t\t\t\tprintf(\"2: Removed part contains (%d %d %d)\\n\", removed->point.x, removed->point.y, removed->point.z);\n#endif\n\t\t\t\t}\n\t\t\t\tstack.push_back(NULL);\n\t\t\t}\n\t\t}\n\t\tfaceEdge->face = face;\n\t\tfaceEdge->reverse->face = intersection->face;\n\n\t\tif (!firstFaceEdge)\n\t\t{\n\t\t\tfirstFaceEdge = faceEdge;\n\t\t}\n\t}\n#ifdef SHOW_ITERATIONS\n\tprintf(\"Needed %d iterations to process all intersections\\n\", m);\n#endif\n\n\tif (cmp > 0)\n\t{\n\t\tfirstFaceEdge->reverse->target = faceEdge->target;\n\t\tfirstIntersection->reverse->link(firstFaceEdge);\n\t\tfirstFaceEdge->link(faceEdge->reverse);\n\t}\n\telse if (firstFaceEdge != faceEdge->reverse)\n\t{\n\t\tstack.push_back(faceEdge->target);\n\t\twhile (firstFaceEdge->next != faceEdge->reverse)\n\t\t{\n\t\t\tVertex* removed = firstFaceEdge->next->target;\n\t\t\tremoveEdgePair(firstFaceEdge->next);\n\t\t\tstack.push_back(removed);\n#ifdef DEBUG_CONVEX_HULL\n\t\t\tprintf(\"3: Removed part contains (%d %d %d)\\n\", removed->point.x, removed->point.y, removed->point.z);\n#endif\n\t\t}\n\t\tstack.push_back(NULL);\n\t}\n\n\tbtAssert(stack.size() > 0);\n\tvertexList = stack[0];\n\n#ifdef DEBUG_CONVEX_HULL\n\tprintf(\"Removing part\\n\");\n#endif\n#ifdef SHOW_ITERATIONS\n\tn = 0;\n#endif\n\tint pos = 0;\n\twhile (pos < stack.size())\n\t{\n\t\tint end = stack.size();\n\t\twhile (pos < end)\n\t\t{\n\t\t\tVertex* kept = stack[pos++];\n#ifdef DEBUG_CONVEX_HULL\n\t\t\tkept->print();\n#endif\n\t\t\tbool deeper = false;\n\t\t\tVertex* removed;\n\t\t\twhile ((removed = stack[pos++]) != NULL)\n\t\t\t{\n#ifdef SHOW_ITERATIONS\n\t\t\t\tn++;\n#endif\n\t\t\t\tkept->receiveNearbyFaces(removed);\n\t\t\t\twhile (removed->edges)\n\t\t\t\t{\n\t\t\t\t\tif (!deeper)\n\t\t\t\t\t{\n\t\t\t\t\t\tdeeper = true;\n\t\t\t\t\t\tstack.push_back(kept);\n\t\t\t\t\t}\n\t\t\t\t\tstack.push_back(removed->edges->target);\n\t\t\t\t\tremoveEdgePair(removed->edges);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (deeper)\n\t\t\t{\n\t\t\t\tstack.push_back(NULL);\n\t\t\t}\n\t\t}\n\t}\n#ifdef SHOW_ITERATIONS\n\tprintf(\"Needed %d iterations to remove part\\n\", n);\n#endif\n\n\tstack.resize(0);\n\tface->origin = shiftedOrigin;\n\n\treturn true;\n}\n\n\nstatic int getVertexCopy(btConvexHullInternal::Vertex* vertex, btAlignedObjectArray<btConvexHullInternal::Vertex*>& vertices)\n{\n\tint index = vertex->copy;\n\tif (index < 0)\n\t{\n\t\tindex = vertices.size();\n\t\tvertex->copy = index;\n\t\tvertices.push_back(vertex);\n#ifdef DEBUG_CONVEX_HULL\n\t\tprintf(\"Vertex %d gets index *%d\\n\", vertex->point.index, index);\n#endif\n\t}\n\treturn index;\n}\n\nbtScalar btConvexHullComputer::compute(const void* coords, bool doubleCoords, int stride, int count, btScalar shrink, btScalar shrinkClamp)\n{\n\tif (count <= 0)\n\t{\n\t\tvertices.clear();\n\t\tedges.clear();\n\t\tfaces.clear();\n\t\treturn 0;\n\t}\n\n\tbtConvexHullInternal hull;\n\thull.compute(coords, doubleCoords, stride, count);\n\n\tbtScalar shift = 0;\n\tif ((shrink > 0) && ((shift = hull.shrink(shrink, shrinkClamp)) < 0))\n\t{\n\t\tvertices.clear();\n\t\tedges.clear();\n\t\tfaces.clear();\n\t\treturn shift;\n\t}\n\n\tvertices.resize(0);\n\tedges.resize(0);\n\tfaces.resize(0);\n\n\tbtAlignedObjectArray<btConvexHullInternal::Vertex*> oldVertices;\n\tgetVertexCopy(hull.vertexList, oldVertices);\n\tint copied = 0;\n\twhile (copied < oldVertices.size())\n\t{\n\t\tbtConvexHullInternal::Vertex* v = oldVertices[copied];\n\t\tvertices.push_back(hull.getCoordinates(v));\n\t\tbtConvexHullInternal::Edge* firstEdge = v->edges;\n\t\tif (firstEdge)\n\t\t{\n\t\t\tint firstCopy = -1;\n\t\t\tint prevCopy = -1;\n\t\t\tbtConvexHullInternal::Edge* e = firstEdge;\n\t\t\tdo\n\t\t\t{\n\t\t\t\tif (e->copy < 0)\n\t\t\t\t{\n\t\t\t\t\tint s = edges.size();\n\t\t\t\t\tedges.push_back(Edge());\n\t\t\t\t\tedges.push_back(Edge());\n\t\t\t\t\tEdge* c = &edges[s];\n\t\t\t\t\tEdge* r = &edges[s + 1];\n\t\t\t\t\te->copy = s;\n\t\t\t\t\te->reverse->copy = s + 1;\n\t\t\t\t\tc->reverse = 1;\n\t\t\t\t\tr->reverse = -1;\n\t\t\t\t\tc->targetVertex = getVertexCopy(e->target, oldVertices);\n\t\t\t\t\tr->targetVertex = copied;\n#ifdef DEBUG_CONVEX_HULL\n\t\t\t\t\tprintf(\"      CREATE: Vertex *%d has edge to *%d\\n\", copied, c->getTargetVertex());\n#endif\n\t\t\t\t}\n\t\t\t\tif (prevCopy >= 0)\n\t\t\t\t{\n\t\t\t\t\tedges[e->copy].next = prevCopy - e->copy;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tfirstCopy = e->copy;\n\t\t\t\t}\n\t\t\t\tprevCopy = e->copy;\n\t\t\t\te = e->next;\n\t\t\t} while (e != firstEdge);\n\t\t\tedges[firstCopy].next = prevCopy - firstCopy;\n\t\t}\n\t\tcopied++;\n\t}\n\n\tfor (int i = 0; i < copied; i++)\n\t{\n\t\tbtConvexHullInternal::Vertex* v = oldVertices[i];\n\t\tbtConvexHullInternal::Edge* firstEdge = v->edges;\n\t\tif (firstEdge)\n\t\t{\n\t\t\tbtConvexHullInternal::Edge* e = firstEdge;\n\t\t\tdo\n\t\t\t{\n\t\t\t\tif (e->copy >= 0)\n\t\t\t\t{\n#ifdef DEBUG_CONVEX_HULL\n\t\t\t\t\tprintf(\"Vertex *%d has edge to *%d\\n\", i, edges[e->copy].getTargetVertex());\n#endif\n\t\t\t\t\tfaces.push_back(e->copy);\n\t\t\t\t\tbtConvexHullInternal::Edge* f = e;\n\t\t\t\t\tdo\n\t\t\t\t\t{\n#ifdef DEBUG_CONVEX_HULL\n\t\t\t\t\t\tprintf(\"   Face *%d\\n\", edges[f->copy].getTargetVertex());\n#endif\n\t\t\t\t\t\tf->copy = -1;\n\t\t\t\t\t\tf = f->reverse->prev;\n\t\t\t\t\t} while (f != e);\n\t\t\t\t}\n\t\t\t\te = e->next;\n\t\t\t} while (e != firstEdge);\n\t\t}\n\t}\n\n\treturn shift;\n}\n\n\n\n\n\n"
  },
  {
    "path": "Sources/NativeDAABBTree/LinearMath/btConvexHullComputer.h",
    "content": "/*\nCopyright (c) 2011 Ole Kniemeyer, MAXON, www.maxon.net\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_CONVEX_HULL_COMPUTER_H\n#define BT_CONVEX_HULL_COMPUTER_H\n\n#include \"btVector3.h\"\n#include \"btAlignedObjectArray.h\"\n\n/// Convex hull implementation based on Preparata and Hong\n/// See http://code.google.com/p/bullet/issues/detail?id=275\n/// Ole Kniemeyer, MAXON Computer GmbH\nclass btConvexHullComputer\n{\n\tprivate:\n\t\tbtScalar compute(const void* coords, bool doubleCoords, int stride, int count, btScalar shrink, btScalar shrinkClamp);\n\n\tpublic:\n\n\t\tclass Edge\n\t\t{\n\t\t\tprivate:\n\t\t\t\tint next;\n\t\t\t\tint reverse;\n\t\t\t\tint targetVertex;\n\n\t\t\t\tfriend class btConvexHullComputer;\n\n\t\t\tpublic:\n\t\t\t\tint getSourceVertex() const\n\t\t\t\t{\n\t\t\t\t\treturn (this + reverse)->targetVertex;\n\t\t\t\t}\n\n\t\t\t\tint getTargetVertex() const\n\t\t\t\t{\n\t\t\t\t\treturn targetVertex;\n\t\t\t\t}\n\n\t\t\t\tconst Edge* getNextEdgeOfVertex() const // clockwise list of all edges of a vertex\n\t\t\t\t{\n\t\t\t\t\treturn this + next;\n\t\t\t\t}\n\n\t\t\t\tconst Edge* getNextEdgeOfFace() const // counter-clockwise list of all edges of a face\n\t\t\t\t{\n\t\t\t\t\treturn (this + reverse)->getNextEdgeOfVertex();\n\t\t\t\t}\n\n\t\t\t\tconst Edge* getReverseEdge() const\n\t\t\t\t{\n\t\t\t\t\treturn this + reverse;\n\t\t\t\t}\n\t\t};\n\n\n\t\t// Vertices of the output hull\n\t\tbtAlignedObjectArray<btVector3> vertices;\n\n\t\t// Edges of the output hull\n\t\tbtAlignedObjectArray<Edge> edges;\n\n\t\t// Faces of the convex hull. Each entry is an index into the \"edges\" array pointing to an edge of the face. Faces are planar n-gons\n\t\tbtAlignedObjectArray<int> faces;\n\n\t\t/*\n\t\tCompute convex hull of \"count\" vertices stored in \"coords\". \"stride\" is the difference in bytes\n\t\tbetween the addresses of consecutive vertices. If \"shrink\" is positive, the convex hull is shrunken\n\t\tby that amount (each face is moved by \"shrink\" length units towards the center along its normal).\n\t\tIf \"shrinkClamp\" is positive, \"shrink\" is clamped to not exceed \"shrinkClamp * innerRadius\", where \"innerRadius\"\n\t\tis the minimum distance of a face to the center of the convex hull.\n\n\t\tThe returned value is the amount by which the hull has been shrunken. If it is negative, the amount was so large\n\t\tthat the resulting convex hull is empty.\n\n\t\tThe output convex hull can be found in the member variables \"vertices\", \"edges\", \"faces\".\n\t\t*/\n\t\tbtScalar compute(const float* coords, int stride, int count, btScalar shrink, btScalar shrinkClamp)\n\t\t{\n\t\t\treturn compute(coords, false, stride, count, shrink, shrinkClamp);\n\t\t}\n\n\t\t// same as above, but double precision\n\t\tbtScalar compute(const double* coords, int stride, int count, btScalar shrink, btScalar shrinkClamp)\n\t\t{\n\t\t\treturn compute(coords, true, stride, count, shrink, shrinkClamp);\n\t\t}\n};\n\n\n#endif //BT_CONVEX_HULL_COMPUTER_H\n\n"
  },
  {
    "path": "Sources/NativeDAABBTree/LinearMath/btDefaultMotionState.h",
    "content": "#ifndef BT_DEFAULT_MOTION_STATE_H\n#define BT_DEFAULT_MOTION_STATE_H\n\n#include \"btMotionState.h\"\n\n///The btDefaultMotionState provides a common implementation to synchronize world transforms with offsets.\nATTRIBUTE_ALIGNED16(struct)\tbtDefaultMotionState : public btMotionState\n{\n\tbtTransform m_graphicsWorldTrans;\n\tbtTransform\tm_centerOfMassOffset;\n\tbtTransform m_startWorldTrans;\n\tvoid*\t\tm_userPointer;\n\n\tBT_DECLARE_ALIGNED_ALLOCATOR();\n\n\tbtDefaultMotionState(const btTransform& startTrans = btTransform::getIdentity(),const btTransform& centerOfMassOffset = btTransform::getIdentity())\n\t\t: m_graphicsWorldTrans(startTrans),\n\t\tm_centerOfMassOffset(centerOfMassOffset),\n\t\tm_startWorldTrans(startTrans),\n\t\tm_userPointer(0)\n\n\t{\n\t}\n\n\t///synchronizes world transform from user to physics\n\tvirtual void\tgetWorldTransform(btTransform& centerOfMassWorldTrans ) const \n\t{\n\t\t\tcenterOfMassWorldTrans = \tm_centerOfMassOffset.inverse() * m_graphicsWorldTrans ;\n\t}\n\n\t///synchronizes world transform from physics to user\n\t///Bullet only calls the update of worldtransform for active objects\n\tvirtual void\tsetWorldTransform(const btTransform& centerOfMassWorldTrans)\n\t{\n\t\t\tm_graphicsWorldTrans = centerOfMassWorldTrans * m_centerOfMassOffset ;\n\t}\n\n\t\n\n};\n\n#endif //BT_DEFAULT_MOTION_STATE_H\n"
  },
  {
    "path": "Sources/NativeDAABBTree/LinearMath/btGeometryUtil.cpp",
    "content": "/*\nCopyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n\n\n#include \"btGeometryUtil.h\"\n\n\n/*\n  Make sure this dummy function never changes so that it\n  can be used by probes that are checking whether the\n  library is actually installed.\n*/\nextern \"C\"\n{\t\n\tvoid btBulletMathProbe ();\n\n\tvoid btBulletMathProbe () {}\n}\n\n\nbool\tbtGeometryUtil::isPointInsidePlanes(const btAlignedObjectArray<btVector3>& planeEquations, const btVector3& point, btScalar\tmargin)\n{\n\tint numbrushes = planeEquations.size();\n\tfor (int i=0;i<numbrushes;i++)\n\t{\n\t\tconst btVector3& N1 = planeEquations[i];\n\t\tbtScalar dist = btScalar(N1.dot(point))+btScalar(N1[3])-margin;\n\t\tif (dist>btScalar(0.))\n\t\t{\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n\t\t\n}\n\n\nbool\tbtGeometryUtil::areVerticesBehindPlane(const btVector3& planeNormal, const btAlignedObjectArray<btVector3>& vertices, btScalar\tmargin)\n{\n\tint numvertices = vertices.size();\n\tfor (int i=0;i<numvertices;i++)\n\t{\n\t\tconst btVector3& N1 = vertices[i];\n\t\tbtScalar dist = btScalar(planeNormal.dot(N1))+btScalar(planeNormal[3])-margin;\n\t\tif (dist>btScalar(0.))\n\t\t{\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n\nbool notExist(const btVector3& planeEquation,const btAlignedObjectArray<btVector3>& planeEquations);\n\nbool notExist(const btVector3& planeEquation,const btAlignedObjectArray<btVector3>& planeEquations)\n{\n\tint numbrushes = planeEquations.size();\n\tfor (int i=0;i<numbrushes;i++)\n\t{\n\t\tconst btVector3& N1 = planeEquations[i];\n\t\tif (planeEquation.dot(N1) > btScalar(0.999))\n\t\t{\n\t\t\treturn false;\n\t\t} \n\t}\n\treturn true;\n}\n\nvoid\tbtGeometryUtil::getPlaneEquationsFromVertices(btAlignedObjectArray<btVector3>& vertices, btAlignedObjectArray<btVector3>& planeEquationsOut )\n{\n\t\tconst int numvertices = vertices.size();\n\t// brute force:\n\tfor (int i=0;i<numvertices;i++)\n\t{\n\t\tconst btVector3& N1 = vertices[i];\n\t\t\n\n\t\tfor (int j=i+1;j<numvertices;j++)\n\t\t{\n\t\t\tconst btVector3& N2 = vertices[j];\n\t\t\t\t\n\t\t\tfor (int k=j+1;k<numvertices;k++)\n\t\t\t{\n\n\t\t\t\tconst btVector3& N3 = vertices[k];\n\n\t\t\t\tbtVector3 planeEquation,edge0,edge1;\n\t\t\t\tedge0 = N2-N1;\n\t\t\t\tedge1 = N3-N1;\n\t\t\t\tbtScalar normalSign = btScalar(1.);\n\t\t\t\tfor (int ww=0;ww<2;ww++)\n\t\t\t\t{\n\t\t\t\t\tplaneEquation = normalSign * edge0.cross(edge1);\n\t\t\t\t\tif (planeEquation.length2() > btScalar(0.0001))\n\t\t\t\t\t{\n\t\t\t\t\t\tplaneEquation.normalize();\n\t\t\t\t\t\tif (notExist(planeEquation,planeEquationsOut))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tplaneEquation[3] = -planeEquation.dot(N1);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t//check if inside, and replace supportingVertexOut if needed\n\t\t\t\t\t\t\t\tif (areVerticesBehindPlane(planeEquation,vertices,btScalar(0.01)))\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tplaneEquationsOut.push_back(planeEquation);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tnormalSign = btScalar(-1.);\n\t\t\t\t}\n\t\t\t\n\t\t\t}\n\t\t}\n\t}\n\n}\n\nvoid\tbtGeometryUtil::getVerticesFromPlaneEquations(const btAlignedObjectArray<btVector3>& planeEquations , btAlignedObjectArray<btVector3>& verticesOut )\n{\n\tconst int numbrushes = planeEquations.size();\n\t// brute force:\n\tfor (int i=0;i<numbrushes;i++)\n\t{\n\t\tconst btVector3& N1 = planeEquations[i];\n\t\t\n\n\t\tfor (int j=i+1;j<numbrushes;j++)\n\t\t{\n\t\t\tconst btVector3& N2 = planeEquations[j];\n\t\t\t\t\n\t\t\tfor (int k=j+1;k<numbrushes;k++)\n\t\t\t{\n\n\t\t\t\tconst btVector3& N3 = planeEquations[k];\n\n\t\t\t\tbtVector3 n2n3; n2n3 = N2.cross(N3);\n\t\t\t\tbtVector3 n3n1; n3n1 = N3.cross(N1);\n\t\t\t\tbtVector3 n1n2; n1n2 = N1.cross(N2);\n\t\t\t\t\n\t\t\t\tif ( ( n2n3.length2() > btScalar(0.0001) ) &&\n\t\t\t\t\t ( n3n1.length2() > btScalar(0.0001) ) &&\n\t\t\t\t\t ( n1n2.length2() > btScalar(0.0001) ) )\n\t\t\t\t{\n\t\t\t\t\t//point P out of 3 plane equations:\n\n\t\t\t\t\t//\td1 ( N2 * N3 ) + d2 ( N3 * N1 ) + d3 ( N1 * N2 )  \n\t\t\t\t\t//P =  -------------------------------------------------------------------------  \n\t\t\t\t\t//   N1 . ( N2 * N3 )  \n\n\n\t\t\t\t\tbtScalar quotient = (N1.dot(n2n3));\n\t\t\t\t\tif (btFabs(quotient) > btScalar(0.000001))\n\t\t\t\t\t{\n\t\t\t\t\t\tquotient = btScalar(-1.) / quotient;\n\t\t\t\t\t\tn2n3 *= N1[3];\n\t\t\t\t\t\tn3n1 *= N2[3];\n\t\t\t\t\t\tn1n2 *= N3[3];\n\t\t\t\t\t\tbtVector3 potentialVertex = n2n3;\n\t\t\t\t\t\tpotentialVertex += n3n1;\n\t\t\t\t\t\tpotentialVertex += n1n2;\n\t\t\t\t\t\tpotentialVertex *= quotient;\n\n\t\t\t\t\t\t//check if inside, and replace supportingVertexOut if needed\n\t\t\t\t\t\tif (isPointInsidePlanes(planeEquations,potentialVertex,btScalar(0.01)))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tverticesOut.push_back(potentialVertex);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n"
  },
  {
    "path": "Sources/NativeDAABBTree/LinearMath/btGeometryUtil.h",
    "content": "/*\nCopyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n\n#ifndef BT_GEOMETRY_UTIL_H\n#define BT_GEOMETRY_UTIL_H\n\n#include \"btVector3.h\"\n#include \"btAlignedObjectArray.h\"\n\n///The btGeometryUtil helper class provides a few methods to convert between plane equations and vertices.\nclass btGeometryUtil\n{\n\tpublic:\n\t\n\t\n\t\tstatic void\tgetPlaneEquationsFromVertices(btAlignedObjectArray<btVector3>& vertices, btAlignedObjectArray<btVector3>& planeEquationsOut );\n\n\t\tstatic void\tgetVerticesFromPlaneEquations(const btAlignedObjectArray<btVector3>& planeEquations , btAlignedObjectArray<btVector3>& verticesOut );\n\t\n\t\tstatic bool\tisInside(const btAlignedObjectArray<btVector3>& vertices, const btVector3& planeNormal, btScalar\tmargin);\n\t\t\n\t\tstatic bool\tisPointInsidePlanes(const btAlignedObjectArray<btVector3>& planeEquations, const btVector3& point, btScalar\tmargin);\n\n\t\tstatic bool\tareVerticesBehindPlane(const btVector3& planeNormal, const btAlignedObjectArray<btVector3>& vertices, btScalar\tmargin);\n\n};\n\n\n#endif //BT_GEOMETRY_UTIL_H\n\n"
  },
  {
    "path": "Sources/NativeDAABBTree/LinearMath/btGrahamScan2dConvexHull.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2011 Advanced Micro Devices, Inc.  http://bulletphysics.org\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n\n#ifndef GRAHAM_SCAN_2D_CONVEX_HULL_H\n#define GRAHAM_SCAN_2D_CONVEX_HULL_H\n\n\n#include \"btVector3.h\"\n#include \"btAlignedObjectArray.h\"\n\nstruct GrahamVector3 : public btVector3\n{\n\tGrahamVector3(const btVector3& org, int orgIndex)\n\t\t:btVector3(org),\n\t\t\tm_orgIndex(orgIndex)\n\t{\n\t}\n\tbtScalar\tm_angle;\n\tint m_orgIndex;\n};\n\n\nstruct btAngleCompareFunc {\n\tbtVector3 m_anchor;\n\tbtAngleCompareFunc(const btVector3& anchor)\n\t: m_anchor(anchor) \n\t{\n\t}\n\tbool operator()(const GrahamVector3& a, const GrahamVector3& b) const {\n\t\tif (a.m_angle != b.m_angle)\n\t\t\treturn a.m_angle < b.m_angle;\n\t\telse\n\t\t{\n\t\t\tbtScalar al = (a-m_anchor).length2();\n\t\t\tbtScalar bl = (b-m_anchor).length2();\n\t\t\tif (al != bl)\n\t\t\t\treturn  al < bl;\n\t\t\telse\n\t\t\t{\n\t\t\t\treturn a.m_orgIndex < b.m_orgIndex;\n\t\t\t}\n\t\t}\n\t}\n};\n\ninline void GrahamScanConvexHull2D(btAlignedObjectArray<GrahamVector3>& originalPoints, btAlignedObjectArray<GrahamVector3>& hull, const btVector3& normalAxis)\n{\n\tbtVector3 axis0,axis1;\n\tbtPlaneSpace1(normalAxis,axis0,axis1);\n\t\n\n\tif (originalPoints.size()<=1)\n\t{\n\t\tfor (int i=0;i<originalPoints.size();i++)\n\t\t\thull.push_back(originalPoints[0]);\n\t\treturn;\n\t}\n\t//step1 : find anchor point with smallest projection on axis0 and move it to first location\n\tfor (int i=0;i<originalPoints.size();i++)\n\t{\n//\t\tconst btVector3& left = originalPoints[i];\n//\t\tconst btVector3& right = originalPoints[0];\n\t\tbtScalar projL = originalPoints[i].dot(axis0);\n\t\tbtScalar projR = originalPoints[0].dot(axis0);\n\t\tif (projL < projR)\n\t\t{\n\t\t\toriginalPoints.swap(0,i);\n\t\t}\n\t}\n\n\t//also precompute angles\n\toriginalPoints[0].m_angle = -1e30f;\n\tfor (int i=1;i<originalPoints.size();i++)\n\t{\n\t\tbtVector3 xvec = axis0;\n\t\tbtVector3 ar = originalPoints[i]-originalPoints[0];\n\t\toriginalPoints[i].m_angle = btCross(xvec, ar).dot(normalAxis) / ar.length();\n\t}\n\n\t//step 2: sort all points, based on 'angle' with this anchor\n\tbtAngleCompareFunc comp(originalPoints[0]);\n\toriginalPoints.quickSortInternal(comp,1,originalPoints.size()-1);\n\n\tint i;\n\tfor (i = 0; i<2; i++) \n\t\thull.push_back(originalPoints[i]);\n\n\t//step 3: keep all 'convex' points and discard concave points (using back tracking)\n\tfor (; i != originalPoints.size(); i++) \n\t{\n\t\tbool isConvex = false;\n\t\twhile (!isConvex&& hull.size()>1) {\n\t\t\tbtVector3& a = hull[hull.size()-2];\n\t\t\tbtVector3& b = hull[hull.size()-1];\n\t\t\tisConvex = btCross(a-b,a-originalPoints[i]).dot(normalAxis)> 0;\n\t\t\tif (!isConvex)\n\t\t\t\thull.pop_back();\n\t\t\telse \n\t\t\t\thull.push_back(originalPoints[i]);\n\t\t}\n\t}\n}\n\n#endif //GRAHAM_SCAN_2D_CONVEX_HULL_H\n"
  },
  {
    "path": "Sources/NativeDAABBTree/LinearMath/btHashMap.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n\n#ifndef BT_HASH_MAP_H\n#define BT_HASH_MAP_H\n\n#include \"btAlignedObjectArray.h\"\n\n///very basic hashable string implementation, compatible with btHashMap\nstruct btHashString\n{\n\tconst char* m_string;\n\tunsigned int\tm_hash;\n\n\tSIMD_FORCE_INLINE\tunsigned int getHash()const\n\t{\n\t\treturn m_hash;\n\t}\n\n\tbtHashString(const char* name)\n\t\t:m_string(name)\n\t{\n\t\t/* magic numbers from http://www.isthe.com/chongo/tech/comp/fnv/ */\n\t\tstatic const unsigned int  InitialFNV = 2166136261u;\n\t\tstatic const unsigned int FNVMultiple = 16777619u;\n\n\t\t/* Fowler / Noll / Vo (FNV) Hash */\n\t\tunsigned int hash = InitialFNV;\n\t\t\n\t\tfor(int i = 0; m_string[i]; i++)\n\t\t{\n\t\t\thash = hash ^ (m_string[i]);       /* xor  the low 8 bits */\n\t\t\thash = hash * FNVMultiple;  /* multiply by the magic number */\n\t\t}\n\t\tm_hash = hash;\n\t}\n\n\tint portableStringCompare(const char* src,\tconst char* dst) const\n\t{\n\t\t\tint ret = 0 ;\n\n\t\t\twhile( ! (ret = *(unsigned char *)src - *(unsigned char *)dst) && *dst)\n\t\t\t\t\t++src, ++dst;\n\n\t\t\tif ( ret < 0 )\n\t\t\t\t\tret = -1 ;\n\t\t\telse if ( ret > 0 )\n\t\t\t\t\tret = 1 ;\n\n\t\t\treturn( ret );\n\t}\n\n\tbool equals(const btHashString& other) const\n\t{\n\t\treturn (m_string == other.m_string) ||\n\t\t\t(0==portableStringCompare(m_string,other.m_string));\n\n\t}\n\n};\n\nconst int BT_HASH_NULL=0xffffffff;\n\n\nclass btHashInt\n{\n\tint\tm_uid;\npublic:\n\tbtHashInt(int uid)\t:m_uid(uid)\n\t{\n\t}\n\n\tint\tgetUid1() const\n\t{\n\t\treturn m_uid;\n\t}\n\n\tvoid\tsetUid1(int uid)\n\t{\n\t\tm_uid = uid;\n\t}\n\n\tbool equals(const btHashInt& other) const\n\t{\n\t\treturn getUid1() == other.getUid1();\n\t}\n\t//to our success\n\tSIMD_FORCE_INLINE\tunsigned int getHash()const\n\t{\n\t\tint key = m_uid;\n\t\t// Thomas Wang's hash\n\t\tkey += ~(key << 15);\tkey ^=  (key >> 10);\tkey +=  (key << 3);\tkey ^=  (key >> 6);\tkey += ~(key << 11);\tkey ^=  (key >> 16);\n\t\treturn key;\n\t}\n};\n\n\n\nclass btHashPtr\n{\n\n\tunion\n\t{\n\t\tconst void*\tm_pointer;\n\t\tint\tm_hashValues[2];\n\t};\n\npublic:\n\n\tbtHashPtr(const void* ptr)\n\t\t:m_pointer(ptr)\n\t{\n\t}\n\n\tconst void*\tgetPointer() const\n\t{\n\t\treturn m_pointer;\n\t}\n\n\tbool equals(const btHashPtr& other) const\n\t{\n\t\treturn getPointer() == other.getPointer();\n\t}\n\n\t//to our success\n\tSIMD_FORCE_INLINE\tunsigned int getHash()const\n\t{\n\t\tconst bool VOID_IS_8 = ((sizeof(void*)==8));\n\t\t\n\t\tint key = VOID_IS_8? m_hashValues[0]+m_hashValues[1] : m_hashValues[0];\n\t\n\t\t// Thomas Wang's hash\n\t\tkey += ~(key << 15);\tkey ^=  (key >> 10);\tkey +=  (key << 3);\tkey ^=  (key >> 6);\tkey += ~(key << 11);\tkey ^=  (key >> 16);\n\t\treturn key;\n\t}\n\n\t\n};\n\n\ntemplate <class Value>\nclass btHashKeyPtr\n{\n        int     m_uid;\npublic:\n\n        btHashKeyPtr(int uid)    :m_uid(uid)\n        {\n        }\n\n        int     getUid1() const\n        {\n                return m_uid;\n        }\n\n        bool equals(const btHashKeyPtr<Value>& other) const\n        {\n                return getUid1() == other.getUid1();\n        }\n\n        //to our success\n        SIMD_FORCE_INLINE       unsigned int getHash()const\n        {\n                int key = m_uid;\n                // Thomas Wang's hash\n                key += ~(key << 15);\tkey ^=  (key >> 10);\tkey +=  (key << 3);\tkey ^=  (key >> 6);\tkey += ~(key << 11);\tkey ^=  (key >> 16);\n                return key;\n        }\n\n        \n};\n\n\ntemplate <class Value>\nclass btHashKey\n{\n\tint\tm_uid;\npublic:\n\n\tbtHashKey(int uid)\t:m_uid(uid)\n\t{\n\t}\n\n\tint\tgetUid1() const\n\t{\n\t\treturn m_uid;\n\t}\n\n\tbool equals(const btHashKey<Value>& other) const\n\t{\n\t\treturn getUid1() == other.getUid1();\n\t}\n\t//to our success\n\tSIMD_FORCE_INLINE\tunsigned int getHash()const\n\t{\n\t\tint key = m_uid;\n\t\t// Thomas Wang's hash\n\t\tkey += ~(key << 15);\tkey ^=  (key >> 10);\tkey +=  (key << 3);\tkey ^=  (key >> 6);\tkey += ~(key << 11);\tkey ^=  (key >> 16);\n\t\treturn key;\n\t}\n};\n\n\n///The btHashMap template class implements a generic and lightweight hashmap.\n///A basic sample of how to use btHashMap is located in Demos\\BasicDemo\\main.cpp\ntemplate <class Key, class Value>\nclass btHashMap\n{\n\nprotected:\n\tbtAlignedObjectArray<int>\t\tm_hashTable;\n\tbtAlignedObjectArray<int>\t\tm_next;\n\t\n\tbtAlignedObjectArray<Value>\t\tm_valueArray;\n\tbtAlignedObjectArray<Key>\t\tm_keyArray;\n\n\tvoid\tgrowTables(const Key& /*key*/)\n\t{\n\t\tint newCapacity = m_valueArray.capacity();\n\n\t\tif (m_hashTable.size() < newCapacity)\n\t\t{\n\t\t\t//grow hashtable and next table\n\t\t\tint curHashtableSize = m_hashTable.size();\n\n\t\t\tm_hashTable.resize(newCapacity);\n\t\t\tm_next.resize(newCapacity);\n\n\t\t\tint i;\n\n\t\t\tfor (i= 0; i < newCapacity; ++i)\n\t\t\t{\n\t\t\t\tm_hashTable[i] = BT_HASH_NULL;\n\t\t\t}\n\t\t\tfor (i = 0; i < newCapacity; ++i)\n\t\t\t{\n\t\t\t\tm_next[i] = BT_HASH_NULL;\n\t\t\t}\n\n\t\t\tfor(i=0;i<curHashtableSize;i++)\n\t\t\t{\n\t\t\t\t//const Value& value = m_valueArray[i];\n\t\t\t\t//const Key& key = m_keyArray[i];\n\n\t\t\t\tint\thashValue = m_keyArray[i].getHash() & (m_valueArray.capacity()-1);\t// New hash value with new mask\n\t\t\t\tm_next[i] = m_hashTable[hashValue];\n\t\t\t\tm_hashTable[hashValue] = i;\n\t\t\t}\n\n\n\t\t}\n\t}\n\n\tpublic:\n\n\tvoid insert(const Key& key, const Value& value) {\n\t\tint hash = key.getHash() & (m_valueArray.capacity()-1);\n\n\t\t//replace value if the key is already there\n\t\tint index = findIndex(key);\n\t\tif (index != BT_HASH_NULL)\n\t\t{\n\t\t\tm_valueArray[index]=value;\n\t\t\treturn;\n\t\t}\n\n\t\tint count = m_valueArray.size();\n\t\tint oldCapacity = m_valueArray.capacity();\n\t\tm_valueArray.push_back(value);\n\t\tm_keyArray.push_back(key);\n\n\t\tint newCapacity = m_valueArray.capacity();\n\t\tif (oldCapacity < newCapacity)\n\t\t{\n\t\t\tgrowTables(key);\n\t\t\t//hash with new capacity\n\t\t\thash = key.getHash() & (m_valueArray.capacity()-1);\n\t\t}\n\t\tm_next[count] = m_hashTable[hash];\n\t\tm_hashTable[hash] = count;\n\t}\n\n\tvoid remove(const Key& key) {\n\n\t\tint hash = key.getHash() & (m_valueArray.capacity()-1);\n\n\t\tint pairIndex = findIndex(key);\n\t\t\n\t\tif (pairIndex ==BT_HASH_NULL)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\t// Remove the pair from the hash table.\n\t\tint index = m_hashTable[hash];\n\t\tbtAssert(index != BT_HASH_NULL);\n\n\t\tint previous = BT_HASH_NULL;\n\t\twhile (index != pairIndex)\n\t\t{\n\t\t\tprevious = index;\n\t\t\tindex = m_next[index];\n\t\t}\n\n\t\tif (previous != BT_HASH_NULL)\n\t\t{\n\t\t\tbtAssert(m_next[previous] == pairIndex);\n\t\t\tm_next[previous] = m_next[pairIndex];\n\t\t}\n\t\telse\n\t\t{\n\t\t\tm_hashTable[hash] = m_next[pairIndex];\n\t\t}\n\n\t\t// We now move the last pair into spot of the\n\t\t// pair being removed. We need to fix the hash\n\t\t// table indices to support the move.\n\n\t\tint lastPairIndex = m_valueArray.size() - 1;\n\n\t\t// If the removed pair is the last pair, we are done.\n\t\tif (lastPairIndex == pairIndex)\n\t\t{\n\t\t\tm_valueArray.pop_back();\n\t\t\tm_keyArray.pop_back();\n\t\t\treturn;\n\t\t}\n\n\t\t// Remove the last pair from the hash table.\n\t\tint lastHash = m_keyArray[lastPairIndex].getHash() & (m_valueArray.capacity()-1);\n\n\t\tindex = m_hashTable[lastHash];\n\t\tbtAssert(index != BT_HASH_NULL);\n\n\t\tprevious = BT_HASH_NULL;\n\t\twhile (index != lastPairIndex)\n\t\t{\n\t\t\tprevious = index;\n\t\t\tindex = m_next[index];\n\t\t}\n\n\t\tif (previous != BT_HASH_NULL)\n\t\t{\n\t\t\tbtAssert(m_next[previous] == lastPairIndex);\n\t\t\tm_next[previous] = m_next[lastPairIndex];\n\t\t}\n\t\telse\n\t\t{\n\t\t\tm_hashTable[lastHash] = m_next[lastPairIndex];\n\t\t}\n\n\t\t// Copy the last pair into the remove pair's spot.\n\t\tm_valueArray[pairIndex] = m_valueArray[lastPairIndex];\n\t\tm_keyArray[pairIndex] = m_keyArray[lastPairIndex];\n\n\t\t// Insert the last pair into the hash table\n\t\tm_next[pairIndex] = m_hashTable[lastHash];\n\t\tm_hashTable[lastHash] = pairIndex;\n\n\t\tm_valueArray.pop_back();\n\t\tm_keyArray.pop_back();\n\n\t}\n\n\n\tint size() const\n\t{\n\t\treturn m_valueArray.size();\n\t}\n\n\tconst Value* getAtIndex(int index) const\n\t{\n\t\tbtAssert(index < m_valueArray.size());\n\n\t\treturn &m_valueArray[index];\n\t}\n\n\tValue* getAtIndex(int index)\n\t{\n\t\tbtAssert(index < m_valueArray.size());\n\n\t\treturn &m_valueArray[index];\n\t}\n\n\tValue* operator[](const Key& key) {\n\t\treturn find(key);\n\t}\n\n\tconst Value*\tfind(const Key& key) const\n\t{\n\t\tint index = findIndex(key);\n\t\tif (index == BT_HASH_NULL)\n\t\t{\n\t\t\treturn NULL;\n\t\t}\n\t\treturn &m_valueArray[index];\n\t}\n\n\tValue*\tfind(const Key& key)\n\t{\n\t\tint index = findIndex(key);\n\t\tif (index == BT_HASH_NULL)\n\t\t{\n\t\t\treturn NULL;\n\t\t}\n\t\treturn &m_valueArray[index];\n\t}\n\n\n\tint\tfindIndex(const Key& key) const\n\t{\n\t\tunsigned int hash = key.getHash() & (m_valueArray.capacity()-1);\n\n\t\tif (hash >= (unsigned int)m_hashTable.size())\n\t\t{\n\t\t\treturn BT_HASH_NULL;\n\t\t}\n\n\t\tint index = m_hashTable[hash];\n\t\twhile ((index != BT_HASH_NULL) && key.equals(m_keyArray[index]) == false)\n\t\t{\n\t\t\tindex = m_next[index];\n\t\t}\n\t\treturn index;\n\t}\n\n\tvoid\tclear()\n\t{\n\t\tm_hashTable.clear();\n\t\tm_next.clear();\n\t\tm_valueArray.clear();\n\t\tm_keyArray.clear();\n\t}\n\n};\n\n#endif //BT_HASH_MAP_H\n"
  },
  {
    "path": "Sources/NativeDAABBTree/LinearMath/btIDebugDraw.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n\n#ifndef BT_IDEBUG_DRAW__H\n#define BT_IDEBUG_DRAW__H\n\n#include \"btVector3.h\"\n#include \"btTransform.h\"\n\n\n///The btIDebugDraw interface class allows hooking up a debug renderer to visually debug simulations.\n///Typical use case: create a debug drawer object, and assign it to a btCollisionWorld or btDynamicsWorld using setDebugDrawer and call debugDrawWorld.\n///A class that implements the btIDebugDraw interface has to implement the drawLine method at a minimum.\n///For color arguments the X,Y,Z components refer to Red, Green and Blue each in the range [0..1]\nclass\tbtIDebugDraw\n{\n\tpublic:\n\n\tenum\tDebugDrawModes\n\t{\n\t\tDBG_NoDebug=0,\n\t\tDBG_DrawWireframe = 1,\n\t\tDBG_DrawAabb=2,\n\t\tDBG_DrawFeaturesText=4,\n\t\tDBG_DrawContactPoints=8,\n\t\tDBG_NoDeactivation=16,\n\t\tDBG_NoHelpText = 32,\n\t\tDBG_DrawText=64,\n\t\tDBG_ProfileTimings = 128,\n\t\tDBG_EnableSatComparison = 256,\n\t\tDBG_DisableBulletLCP = 512,\n\t\tDBG_EnableCCD = 1024,\n\t\tDBG_DrawConstraints = (1 << 11),\n\t\tDBG_DrawConstraintLimits = (1 << 12),\n\t\tDBG_FastWireframe = (1<<13),\n        DBG_DrawNormals = (1<<14),\n\t\tDBG_MAX_DEBUG_DRAW_MODE\n\t};\n\n\tvirtual ~btIDebugDraw() {};\n\n\tvirtual void\tdrawLine(const btVector3& from,const btVector3& to,const btVector3& color)=0;\n\t\t\n\tvirtual void    drawLine(const btVector3& from,const btVector3& to, const btVector3& fromColor, const btVector3& toColor)\n\t{\n        (void) toColor;\n\t\tdrawLine (from, to, fromColor);\n\t}\n\n\tvirtual void\tdrawSphere(btScalar radius, const btTransform& transform, const btVector3& color)\n\t{\n\t\tbtVector3 start = transform.getOrigin();\n\n\t\tconst btVector3 xoffs = transform.getBasis() * btVector3(radius,0,0);\n\t\tconst btVector3 yoffs = transform.getBasis() * btVector3(0,radius,0);\n\t\tconst btVector3 zoffs = transform.getBasis() * btVector3(0,0,radius);\n\n\t\t// XY \n\t\tdrawLine(start-xoffs, start+yoffs, color);\n\t\tdrawLine(start+yoffs, start+xoffs, color);\n\t\tdrawLine(start+xoffs, start-yoffs, color);\n\t\tdrawLine(start-yoffs, start-xoffs, color);\n\n\t\t// XZ\n\t\tdrawLine(start-xoffs, start+zoffs, color);\n\t\tdrawLine(start+zoffs, start+xoffs, color);\n\t\tdrawLine(start+xoffs, start-zoffs, color);\n\t\tdrawLine(start-zoffs, start-xoffs, color);\n\n\t\t// YZ\n\t\tdrawLine(start-yoffs, start+zoffs, color);\n\t\tdrawLine(start+zoffs, start+yoffs, color);\n\t\tdrawLine(start+yoffs, start-zoffs, color);\n\t\tdrawLine(start-zoffs, start-yoffs, color);\n\t}\n\t\n\tvirtual void\tdrawSphere (const btVector3& p, btScalar radius, const btVector3& color)\n\t{\n\t\tbtTransform tr;\n\t\ttr.setIdentity();\n\t\ttr.setOrigin(p);\n\t\tdrawSphere(radius,tr,color);\n\t}\n\t\n\tvirtual\tvoid\tdrawTriangle(const btVector3& v0,const btVector3& v1,const btVector3& v2,const btVector3& /*n0*/,const btVector3& /*n1*/,const btVector3& /*n2*/,const btVector3& color, btScalar alpha)\n\t{\n\t\tdrawTriangle(v0,v1,v2,color,alpha);\n\t}\n\tvirtual\tvoid\tdrawTriangle(const btVector3& v0,const btVector3& v1,const btVector3& v2,const btVector3& color, btScalar /*alpha*/)\n\t{\n\t\tdrawLine(v0,v1,color);\n\t\tdrawLine(v1,v2,color);\n\t\tdrawLine(v2,v0,color);\n\t}\n\n\tvirtual void\tdrawContactPoint(const btVector3& PointOnB,const btVector3& normalOnB,btScalar distance,int lifeTime,const btVector3& color)=0;\n\n\tvirtual void\treportErrorWarning(const char* warningString) = 0;\n\n\tvirtual void\tdraw3dText(const btVector3& location,const char* textString) = 0;\n\t\n\tvirtual void\tsetDebugMode(int debugMode) =0;\n\t\n\tvirtual int\t\tgetDebugMode() const = 0;\n\n\tvirtual void drawAabb(const btVector3& from,const btVector3& to,const btVector3& color)\n\t{\n\n\t\tbtVector3 halfExtents = (to-from)* 0.5f;\n\t\tbtVector3 center = (to+from) *0.5f;\n\t\tint i,j;\n\n\t\tbtVector3 edgecoord(1.f,1.f,1.f),pa,pb;\n\t\tfor (i=0;i<4;i++)\n\t\t{\n\t\t\tfor (j=0;j<3;j++)\n\t\t\t{\n\t\t\t\tpa = btVector3(edgecoord[0]*halfExtents[0], edgecoord[1]*halfExtents[1],\t\t\n\t\t\t\t\tedgecoord[2]*halfExtents[2]);\n\t\t\t\tpa+=center;\n\n\t\t\t\tint othercoord = j%3;\n\t\t\t\tedgecoord[othercoord]*=-1.f;\n\t\t\t\tpb = btVector3(edgecoord[0]*halfExtents[0], edgecoord[1]*halfExtents[1],\t\n\t\t\t\t\tedgecoord[2]*halfExtents[2]);\n\t\t\t\tpb+=center;\n\n\t\t\t\tdrawLine(pa,pb,color);\n\t\t\t}\n\t\t\tedgecoord = btVector3(-1.f,-1.f,-1.f);\n\t\t\tif (i<3)\n\t\t\t\tedgecoord[i]*=-1.f;\n\t\t}\n\t}\n\tvirtual void drawTransform(const btTransform& transform, btScalar orthoLen)\n\t{\n\t\tbtVector3 start = transform.getOrigin();\n\t\tdrawLine(start, start+transform.getBasis() * btVector3(orthoLen, 0, 0), btVector3(0.7f,0,0));\n\t\tdrawLine(start, start+transform.getBasis() * btVector3(0, orthoLen, 0), btVector3(0,0.7f,0));\n\t\tdrawLine(start, start+transform.getBasis() * btVector3(0, 0, orthoLen), btVector3(0,0,0.7f));\n\t}\n\n\tvirtual void drawArc(const btVector3& center, const btVector3& normal, const btVector3& axis, btScalar radiusA, btScalar radiusB, btScalar minAngle, btScalar maxAngle, \n\t\t\t\tconst btVector3& color, bool drawSect, btScalar stepDegrees = btScalar(10.f))\n\t{\n\t\tconst btVector3& vx = axis;\n\t\tbtVector3 vy = normal.cross(axis);\n\t\tbtScalar step = stepDegrees * SIMD_RADS_PER_DEG;\n\t\tint nSteps = (int)((maxAngle - minAngle) / step);\n\t\tif(!nSteps) nSteps = 1;\n\t\tbtVector3 prev = center + radiusA * vx * btCos(minAngle) + radiusB * vy * btSin(minAngle);\n\t\tif(drawSect)\n\t\t{\n\t\t\tdrawLine(center, prev, color);\n\t\t}\n\t\tfor(int i = 1; i <= nSteps; i++)\n\t\t{\n\t\t\tbtScalar angle = minAngle + (maxAngle - minAngle) * btScalar(i) / btScalar(nSteps);\n\t\t\tbtVector3 next = center + radiusA * vx * btCos(angle) + radiusB * vy * btSin(angle);\n\t\t\tdrawLine(prev, next, color);\n\t\t\tprev = next;\n\t\t}\n\t\tif(drawSect)\n\t\t{\n\t\t\tdrawLine(center, prev, color);\n\t\t}\n\t}\n\tvirtual void drawSpherePatch(const btVector3& center, const btVector3& up, const btVector3& axis, btScalar radius, \n\t\tbtScalar minTh, btScalar maxTh, btScalar minPs, btScalar maxPs, const btVector3& color, btScalar stepDegrees = btScalar(10.f))\n\t{\n\t\tbtVector3 vA[74];\n\t\tbtVector3 vB[74];\n\t\tbtVector3 *pvA = vA, *pvB = vB, *pT;\n\t\tbtVector3 npole = center + up * radius;\n\t\tbtVector3 spole = center - up * radius;\n\t\tbtVector3 arcStart;\n\t\tbtScalar step = stepDegrees * SIMD_RADS_PER_DEG;\n\t\tconst btVector3& kv = up;\n\t\tconst btVector3& iv = axis;\n\t\tbtVector3 jv = kv.cross(iv);\n\t\tbool drawN = false;\n\t\tbool drawS = false;\n\t\tif(minTh <= -SIMD_HALF_PI)\n\t\t{\n\t\t\tminTh = -SIMD_HALF_PI + step;\n\t\t\tdrawN = true;\n\t\t}\n\t\tif(maxTh >= SIMD_HALF_PI)\n\t\t{\n\t\t\tmaxTh = SIMD_HALF_PI - step;\n\t\t\tdrawS = true;\n\t\t}\n\t\tif(minTh > maxTh)\n\t\t{\n\t\t\tminTh = -SIMD_HALF_PI + step;\n\t\t\tmaxTh =  SIMD_HALF_PI - step;\n\t\t\tdrawN = drawS = true;\n\t\t}\n\t\tint n_hor = (int)((maxTh - minTh) / step) + 1;\n\t\tif(n_hor < 2) n_hor = 2;\n\t\tbtScalar step_h = (maxTh - minTh) / btScalar(n_hor - 1);\n\t\tbool isClosed = false;\n\t\tif(minPs > maxPs)\n\t\t{\n\t\t\tminPs = -SIMD_PI + step;\n\t\t\tmaxPs =  SIMD_PI;\n\t\t\tisClosed = true;\n\t\t}\n\t\telse if((maxPs - minPs) >= SIMD_PI * btScalar(2.f))\n\t\t{\n\t\t\tisClosed = true;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tisClosed = false;\n\t\t}\n\t\tint n_vert = (int)((maxPs - minPs) / step) + 1;\n\t\tif(n_vert < 2) n_vert = 2;\n\t\tbtScalar step_v = (maxPs - minPs) / btScalar(n_vert - 1);\n\t\tfor(int i = 0; i < n_hor; i++)\n\t\t{\n\t\t\tbtScalar th = minTh + btScalar(i) * step_h;\n\t\t\tbtScalar sth = radius * btSin(th);\n\t\t\tbtScalar cth = radius * btCos(th);\n\t\t\tfor(int j = 0; j < n_vert; j++)\n\t\t\t{\n\t\t\t\tbtScalar psi = minPs + btScalar(j) * step_v;\n\t\t\t\tbtScalar sps = btSin(psi);\n\t\t\t\tbtScalar cps = btCos(psi);\n\t\t\t\tpvB[j] = center + cth * cps * iv + cth * sps * jv + sth * kv;\n\t\t\t\tif(i)\n\t\t\t\t{\n\t\t\t\t\tdrawLine(pvA[j], pvB[j], color);\n\t\t\t\t}\n\t\t\t\telse if(drawS)\n\t\t\t\t{\n\t\t\t\t\tdrawLine(spole, pvB[j], color);\n\t\t\t\t}\n\t\t\t\tif(j)\n\t\t\t\t{\n\t\t\t\t\tdrawLine(pvB[j-1], pvB[j], color);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tarcStart = pvB[j];\n\t\t\t\t}\n\t\t\t\tif((i == (n_hor - 1)) && drawN)\n\t\t\t\t{\n\t\t\t\t\tdrawLine(npole, pvB[j], color);\n\t\t\t\t}\n\t\t\t\tif(isClosed)\n\t\t\t\t{\n\t\t\t\t\tif(j == (n_vert-1))\n\t\t\t\t\t{\n\t\t\t\t\t\tdrawLine(arcStart, pvB[j], color);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tif(((!i) || (i == (n_hor-1))) && ((!j) || (j == (n_vert-1))))\n\t\t\t\t\t{\n\t\t\t\t\t\tdrawLine(center, pvB[j], color);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tpT = pvA; pvA = pvB; pvB = pT;\n\t\t}\n\t}\n\t\n  \n\tvirtual void drawBox(const btVector3& bbMin, const btVector3& bbMax, const btVector3& color)\n\t{\n\t\tdrawLine(btVector3(bbMin[0], bbMin[1], bbMin[2]), btVector3(bbMax[0], bbMin[1], bbMin[2]), color);\n\t\tdrawLine(btVector3(bbMax[0], bbMin[1], bbMin[2]), btVector3(bbMax[0], bbMax[1], bbMin[2]), color);\n\t\tdrawLine(btVector3(bbMax[0], bbMax[1], bbMin[2]), btVector3(bbMin[0], bbMax[1], bbMin[2]), color);\n\t\tdrawLine(btVector3(bbMin[0], bbMax[1], bbMin[2]), btVector3(bbMin[0], bbMin[1], bbMin[2]), color);\n\t\tdrawLine(btVector3(bbMin[0], bbMin[1], bbMin[2]), btVector3(bbMin[0], bbMin[1], bbMax[2]), color);\n\t\tdrawLine(btVector3(bbMax[0], bbMin[1], bbMin[2]), btVector3(bbMax[0], bbMin[1], bbMax[2]), color);\n\t\tdrawLine(btVector3(bbMax[0], bbMax[1], bbMin[2]), btVector3(bbMax[0], bbMax[1], bbMax[2]), color);\n\t\tdrawLine(btVector3(bbMin[0], bbMax[1], bbMin[2]), btVector3(bbMin[0], bbMax[1], bbMax[2]), color);\n\t\tdrawLine(btVector3(bbMin[0], bbMin[1], bbMax[2]), btVector3(bbMax[0], bbMin[1], bbMax[2]), color);\n\t\tdrawLine(btVector3(bbMax[0], bbMin[1], bbMax[2]), btVector3(bbMax[0], bbMax[1], bbMax[2]), color);\n\t\tdrawLine(btVector3(bbMax[0], bbMax[1], bbMax[2]), btVector3(bbMin[0], bbMax[1], bbMax[2]), color);\n\t\tdrawLine(btVector3(bbMin[0], bbMax[1], bbMax[2]), btVector3(bbMin[0], bbMin[1], bbMax[2]), color);\n\t}\n\tvirtual void drawBox(const btVector3& bbMin, const btVector3& bbMax, const btTransform& trans, const btVector3& color)\n\t{\n\t\tdrawLine(trans * btVector3(bbMin[0], bbMin[1], bbMin[2]), trans * btVector3(bbMax[0], bbMin[1], bbMin[2]), color);\n\t\tdrawLine(trans * btVector3(bbMax[0], bbMin[1], bbMin[2]), trans * btVector3(bbMax[0], bbMax[1], bbMin[2]), color);\n\t\tdrawLine(trans * btVector3(bbMax[0], bbMax[1], bbMin[2]), trans * btVector3(bbMin[0], bbMax[1], bbMin[2]), color);\n\t\tdrawLine(trans * btVector3(bbMin[0], bbMax[1], bbMin[2]), trans * btVector3(bbMin[0], bbMin[1], bbMin[2]), color);\n\t\tdrawLine(trans * btVector3(bbMin[0], bbMin[1], bbMin[2]), trans * btVector3(bbMin[0], bbMin[1], bbMax[2]), color);\n\t\tdrawLine(trans * btVector3(bbMax[0], bbMin[1], bbMin[2]), trans * btVector3(bbMax[0], bbMin[1], bbMax[2]), color);\n\t\tdrawLine(trans * btVector3(bbMax[0], bbMax[1], bbMin[2]), trans * btVector3(bbMax[0], bbMax[1], bbMax[2]), color);\n\t\tdrawLine(trans * btVector3(bbMin[0], bbMax[1], bbMin[2]), trans * btVector3(bbMin[0], bbMax[1], bbMax[2]), color);\n\t\tdrawLine(trans * btVector3(bbMin[0], bbMin[1], bbMax[2]), trans * btVector3(bbMax[0], bbMin[1], bbMax[2]), color);\n\t\tdrawLine(trans * btVector3(bbMax[0], bbMin[1], bbMax[2]), trans * btVector3(bbMax[0], bbMax[1], bbMax[2]), color);\n\t\tdrawLine(trans * btVector3(bbMax[0], bbMax[1], bbMax[2]), trans * btVector3(bbMin[0], bbMax[1], bbMax[2]), color);\n\t\tdrawLine(trans * btVector3(bbMin[0], bbMax[1], bbMax[2]), trans * btVector3(bbMin[0], bbMin[1], bbMax[2]), color);\n\t}\n\n\tvirtual void drawCapsule(btScalar radius, btScalar halfHeight, int upAxis, const btTransform& transform, const btVector3& color)\n\t{\n\t\tbtVector3 capStart(0.f,0.f,0.f);\n\t\tcapStart[upAxis] = -halfHeight;\n\n\t\tbtVector3 capEnd(0.f,0.f,0.f);\n\t\tcapEnd[upAxis] = halfHeight;\n\n\t\t// Draw the ends\n\t\t{\n\n\t\t\tbtTransform childTransform = transform;\n\t\t\tchildTransform.getOrigin() = transform * capStart;\n\t\t\tdrawSphere(radius, childTransform, color);\n\t\t}\n\n\t\t{\n\t\t\tbtTransform childTransform = transform;\n\t\t\tchildTransform.getOrigin() = transform * capEnd;\n\t\t\tdrawSphere(radius, childTransform, color);\n\t\t}\n\n\t\t// Draw some additional lines\n\t\tbtVector3 start = transform.getOrigin();\n\n\t\tcapStart[(upAxis+1)%3] = radius;\n\t\tcapEnd[(upAxis+1)%3] = radius;\n\t\tdrawLine(start+transform.getBasis() * capStart,start+transform.getBasis() * capEnd, color);\n\t\tcapStart[(upAxis+1)%3] = -radius;\n\t\tcapEnd[(upAxis+1)%3] = -radius;\n\t\tdrawLine(start+transform.getBasis() * capStart,start+transform.getBasis() * capEnd, color);\n\n\t\tcapStart[(upAxis+1)%3] = 0.f;\n\t\tcapEnd[(upAxis+1)%3] = 0.f;\n\n\t\tcapStart[(upAxis+2)%3] = radius;\n\t\tcapEnd[(upAxis+2)%3] = radius;\n\t\tdrawLine(start+transform.getBasis() * capStart,start+transform.getBasis() * capEnd, color);\n\t\tcapStart[(upAxis+2)%3] = -radius;\n\t\tcapEnd[(upAxis+2)%3] = -radius;\n\t\tdrawLine(start+transform.getBasis() * capStart,start+transform.getBasis() * capEnd, color);\n\t}\n\n\tvirtual void drawCylinder(btScalar radius, btScalar halfHeight, int upAxis, const btTransform& transform, const btVector3& color)\n\t{\n\t\tbtVector3 start = transform.getOrigin();\n\t\tbtVector3\toffsetHeight(0,0,0);\n\t\toffsetHeight[upAxis] = halfHeight;\n\t\tbtVector3\toffsetRadius(0,0,0);\n\t\toffsetRadius[(upAxis+1)%3] = radius;\n\t\tdrawLine(start+transform.getBasis() * (offsetHeight+offsetRadius),start+transform.getBasis() * (-offsetHeight+offsetRadius),color);\n\t\tdrawLine(start+transform.getBasis() * (offsetHeight-offsetRadius),start+transform.getBasis() * (-offsetHeight-offsetRadius),color);\n\n\t\t// Drawing top and bottom caps of the cylinder\n\t\tbtVector3 yaxis(0,0,0);\n\t\tyaxis[upAxis] = btScalar(1.0);\n\t\tbtVector3 xaxis(0,0,0);\n\t\txaxis[(upAxis+1)%3] = btScalar(1.0);\n\t\tdrawArc(start-transform.getBasis()*(offsetHeight),transform.getBasis()*yaxis,transform.getBasis()*xaxis,radius,radius,0,SIMD_2_PI,color,false,btScalar(10.0));\n\t\tdrawArc(start+transform.getBasis()*(offsetHeight),transform.getBasis()*yaxis,transform.getBasis()*xaxis,radius,radius,0,SIMD_2_PI,color,false,btScalar(10.0));\n\t}\n\n\tvirtual void drawCone(btScalar radius, btScalar height, int upAxis, const btTransform& transform, const btVector3& color)\n\t{\n\n\t\tbtVector3 start = transform.getOrigin();\n\n\t\tbtVector3\toffsetHeight(0,0,0);\n\t\toffsetHeight[upAxis] = height * btScalar(0.5);\n\t\tbtVector3\toffsetRadius(0,0,0);\n\t\toffsetRadius[(upAxis+1)%3] = radius;\n\t\tbtVector3\toffset2Radius(0,0,0);\n\t\toffset2Radius[(upAxis+2)%3] = radius;\n\n\t\tdrawLine(start+transform.getBasis() * (offsetHeight),start+transform.getBasis() * (-offsetHeight+offsetRadius),color);\n\t\tdrawLine(start+transform.getBasis() * (offsetHeight),start+transform.getBasis() * (-offsetHeight-offsetRadius),color);\n\t\tdrawLine(start+transform.getBasis() * (offsetHeight),start+transform.getBasis() * (-offsetHeight+offset2Radius),color);\n\t\tdrawLine(start+transform.getBasis() * (offsetHeight),start+transform.getBasis() * (-offsetHeight-offset2Radius),color);\n\n\t\t// Drawing the base of the cone\n\t\tbtVector3 yaxis(0,0,0);\n\t\tyaxis[upAxis] = btScalar(1.0);\n\t\tbtVector3 xaxis(0,0,0);\n\t\txaxis[(upAxis+1)%3] = btScalar(1.0);\n\t\tdrawArc(start-transform.getBasis()*(offsetHeight),transform.getBasis()*yaxis,transform.getBasis()*xaxis,radius,radius,0,SIMD_2_PI,color,false,10.0);\n\t}\n\n\tvirtual void drawPlane(const btVector3& planeNormal, btScalar planeConst, const btTransform& transform, const btVector3& color)\n\t{\n\t\tbtVector3 planeOrigin = planeNormal * planeConst;\n\t\tbtVector3 vec0,vec1;\n\t\tbtPlaneSpace1(planeNormal,vec0,vec1);\n\t\tbtScalar vecLen = 100.f;\n\t\tbtVector3 pt0 = planeOrigin + vec0*vecLen;\n\t\tbtVector3 pt1 = planeOrigin - vec0*vecLen;\n\t\tbtVector3 pt2 = planeOrigin + vec1*vecLen;\n\t\tbtVector3 pt3 = planeOrigin - vec1*vecLen;\n\t\tdrawLine(transform*pt0,transform*pt1,color);\n\t\tdrawLine(transform*pt2,transform*pt3,color);\n\t}\n};\n\n\n#endif //BT_IDEBUG_DRAW__H\n\n"
  },
  {
    "path": "Sources/NativeDAABBTree/LinearMath/btList.h",
    "content": "/*\nCopyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n\n\n#ifndef BT_GEN_LIST_H\n#define BT_GEN_LIST_H\n\nclass btGEN_Link {\npublic:\n    btGEN_Link() : m_next(0), m_prev(0) {}\n    btGEN_Link(btGEN_Link *next, btGEN_Link *prev) : m_next(next), m_prev(prev) {}\n    \n    btGEN_Link *getNext() const { return m_next; }  \n    btGEN_Link *getPrev() const { return m_prev; }  \n\n    bool isHead() const { return m_prev == 0; }\n    bool isTail() const { return m_next == 0; }\n\n    void insertBefore(btGEN_Link *link) {\n        m_next         = link;\n        m_prev         = link->m_prev;\n        m_next->m_prev = this;\n        m_prev->m_next = this;\n    } \n\n    void insertAfter(btGEN_Link *link) {\n        m_next         = link->m_next;\n        m_prev         = link;\n        m_next->m_prev = this;\n        m_prev->m_next = this;\n    } \n\n    void remove() { \n        m_next->m_prev = m_prev; \n        m_prev->m_next = m_next;\n    }\n\nprivate:  \n    btGEN_Link  *m_next;\n    btGEN_Link  *m_prev;\n};\n\nclass btGEN_List {\npublic:\n    btGEN_List() : m_head(&m_tail, 0), m_tail(0, &m_head) {}\n\n    btGEN_Link *getHead() const { return m_head.getNext(); } \n    btGEN_Link *getTail() const { return m_tail.getPrev(); } \n\n    void addHead(btGEN_Link *link) { link->insertAfter(&m_head); }\n    void addTail(btGEN_Link *link) { link->insertBefore(&m_tail); }\n    \nprivate:\n    btGEN_Link m_head;\n    btGEN_Link m_tail;\n};\n\n#endif //BT_GEN_LIST_H\n\n\n\n"
  },
  {
    "path": "Sources/NativeDAABBTree/LinearMath/btMatrix3x3.h",
    "content": "/*\nCopyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n\n#ifndef\tBT_MATRIX3x3_H\n#define BT_MATRIX3x3_H\n\n#include \"btVector3.h\"\n#include \"btQuaternion.h\"\n#include <stdio.h>\n\n#ifdef BT_USE_SSE\n//const __m128 ATTRIBUTE_ALIGNED16(v2220) = {2.0f, 2.0f, 2.0f, 0.0f};\nconst __m128 ATTRIBUTE_ALIGNED16(vMPPP) = {-0.0f, +0.0f, +0.0f, +0.0f};\n#endif\n\n#if defined(BT_USE_SSE) || defined(BT_USE_NEON)\nconst btSimdFloat4 ATTRIBUTE_ALIGNED16(v1000) = {1.0f, 0.0f, 0.0f, 0.0f};\nconst btSimdFloat4 ATTRIBUTE_ALIGNED16(v0100) = {0.0f, 1.0f, 0.0f, 0.0f};\nconst btSimdFloat4 ATTRIBUTE_ALIGNED16(v0010) = {0.0f, 0.0f, 1.0f, 0.0f};\n#endif\n\n#ifdef BT_USE_DOUBLE_PRECISION\n#define btMatrix3x3Data\tbtMatrix3x3DoubleData \n#else\n#define btMatrix3x3Data\tbtMatrix3x3FloatData\n#endif //BT_USE_DOUBLE_PRECISION\n\n\n/**@brief The btMatrix3x3 class implements a 3x3 rotation matrix, to perform linear algebra in combination with btQuaternion, btTransform and btVector3.\n* Make sure to only include a pure orthogonal matrix without scaling. */\nATTRIBUTE_ALIGNED16(class) btMatrix3x3 {\n\n\t///Data storage for the matrix, each vector is a row of the matrix\n\tbtVector3 m_el[3];\n\npublic:\n\t/** @brief No initializaion constructor */\n\tbtMatrix3x3 () {}\n\n\t//\t\texplicit btMatrix3x3(const btScalar *m) { setFromOpenGLSubMatrix(m); }\n\n\t/**@brief Constructor from Quaternion */\n\texplicit btMatrix3x3(const btQuaternion& q) { setRotation(q); }\n\t/*\n\ttemplate <typename btScalar>\n\tMatrix3x3(const btScalar& yaw, const btScalar& pitch, const btScalar& roll)\n\t{ \n\tsetEulerYPR(yaw, pitch, roll);\n\t}\n\t*/\n\t/** @brief Constructor with row major formatting */\n\tbtMatrix3x3(const btScalar& xx, const btScalar& xy, const btScalar& xz,\n\t\tconst btScalar& yx, const btScalar& yy, const btScalar& yz,\n\t\tconst btScalar& zx, const btScalar& zy, const btScalar& zz)\n\t{ \n\t\tsetValue(xx, xy, xz, \n\t\t\tyx, yy, yz, \n\t\t\tzx, zy, zz);\n\t}\n\n#if (defined (BT_USE_SSE_IN_API) && defined (BT_USE_SSE))|| defined (BT_USE_NEON)\n\tSIMD_FORCE_INLINE btMatrix3x3 (const btSimdFloat4 v0, const btSimdFloat4 v1, const btSimdFloat4 v2 ) \n\t{\n        m_el[0].mVec128 = v0;\n        m_el[1].mVec128 = v1;\n        m_el[2].mVec128 = v2;\n\t}\n\n\tSIMD_FORCE_INLINE btMatrix3x3 (const btVector3& v0, const btVector3& v1, const btVector3& v2 ) \n\t{\n        m_el[0] = v0;\n        m_el[1] = v1;\n        m_el[2] = v2;\n\t}\n\n\t// Copy constructor\n\tSIMD_FORCE_INLINE btMatrix3x3(const btMatrix3x3& rhs)\n\t{\n\t\tm_el[0].mVec128 = rhs.m_el[0].mVec128;\n\t\tm_el[1].mVec128 = rhs.m_el[1].mVec128;\n\t\tm_el[2].mVec128 = rhs.m_el[2].mVec128;\n\t}\n\n\t// Assignment Operator\n\tSIMD_FORCE_INLINE btMatrix3x3& operator=(const btMatrix3x3& m) \n\t{\n\t\tm_el[0].mVec128 = m.m_el[0].mVec128;\n\t\tm_el[1].mVec128 = m.m_el[1].mVec128;\n\t\tm_el[2].mVec128 = m.m_el[2].mVec128;\n\t\t\n\t\treturn *this;\n\t}\n\n#else\n\n\t/** @brief Copy constructor */\n\tSIMD_FORCE_INLINE btMatrix3x3 (const btMatrix3x3& other)\n\t{\n\t\tm_el[0] = other.m_el[0];\n\t\tm_el[1] = other.m_el[1];\n\t\tm_el[2] = other.m_el[2];\n\t}\n    \n\t/** @brief Assignment Operator */\n\tSIMD_FORCE_INLINE btMatrix3x3& operator=(const btMatrix3x3& other)\n\t{\n\t\tm_el[0] = other.m_el[0];\n\t\tm_el[1] = other.m_el[1];\n\t\tm_el[2] = other.m_el[2];\n\t\treturn *this;\n\t}\n\n#endif\n\n\t/** @brief Get a column of the matrix as a vector \n\t*  @param i Column number 0 indexed */\n\tSIMD_FORCE_INLINE btVector3 getColumn(int i) const\n\t{\n\t\treturn btVector3(m_el[0][i],m_el[1][i],m_el[2][i]);\n\t}\n\n\n\t/** @brief Get a row of the matrix as a vector \n\t*  @param i Row number 0 indexed */\n\tSIMD_FORCE_INLINE const btVector3& getRow(int i) const\n\t{\n\t\tbtFullAssert(0 <= i && i < 3);\n\t\treturn m_el[i];\n\t}\n\n\t/** @brief Get a mutable reference to a row of the matrix as a vector \n\t*  @param i Row number 0 indexed */\n\tSIMD_FORCE_INLINE btVector3&  operator[](int i)\n\t{ \n\t\tbtFullAssert(0 <= i && i < 3);\n\t\treturn m_el[i]; \n\t}\n\n\t/** @brief Get a const reference to a row of the matrix as a vector \n\t*  @param i Row number 0 indexed */\n\tSIMD_FORCE_INLINE const btVector3& operator[](int i) const\n\t{\n\t\tbtFullAssert(0 <= i && i < 3);\n\t\treturn m_el[i]; \n\t}\n\n\t/** @brief Multiply by the target matrix on the right\n\t*  @param m Rotation matrix to be applied \n\t* Equivilant to this = this * m */\n\tbtMatrix3x3& operator*=(const btMatrix3x3& m); \n\n\t/** @brief Adds by the target matrix on the right\n\t*  @param m matrix to be applied \n\t* Equivilant to this = this + m */\n\tbtMatrix3x3& operator+=(const btMatrix3x3& m); \n\n\t/** @brief Substractss by the target matrix on the right\n\t*  @param m matrix to be applied \n\t* Equivilant to this = this - m */\n\tbtMatrix3x3& operator-=(const btMatrix3x3& m); \n\n\t/** @brief Set from the rotational part of a 4x4 OpenGL matrix\n\t*  @param m A pointer to the beginning of the array of scalars*/\n\tvoid setFromOpenGLSubMatrix(const btScalar *m)\n\t{\n\t\tm_el[0].setValue(m[0],m[4],m[8]);\n\t\tm_el[1].setValue(m[1],m[5],m[9]);\n\t\tm_el[2].setValue(m[2],m[6],m[10]);\n\n\t}\n\t/** @brief Set the values of the matrix explicitly (row major)\n\t*  @param xx Top left\n\t*  @param xy Top Middle\n\t*  @param xz Top Right\n\t*  @param yx Middle Left\n\t*  @param yy Middle Middle\n\t*  @param yz Middle Right\n\t*  @param zx Bottom Left\n\t*  @param zy Bottom Middle\n\t*  @param zz Bottom Right*/\n\tvoid setValue(const btScalar& xx, const btScalar& xy, const btScalar& xz, \n\t\tconst btScalar& yx, const btScalar& yy, const btScalar& yz, \n\t\tconst btScalar& zx, const btScalar& zy, const btScalar& zz)\n\t{\n\t\tm_el[0].setValue(xx,xy,xz);\n\t\tm_el[1].setValue(yx,yy,yz);\n\t\tm_el[2].setValue(zx,zy,zz);\n\t}\n\n\t/** @brief Set the matrix from a quaternion\n\t*  @param q The Quaternion to match */  \n\tvoid setRotation(const btQuaternion& q) \n\t{\n\t\tbtScalar d = q.length2();\n\t\tbtFullAssert(d != btScalar(0.0));\n\t\tbtScalar s = btScalar(2.0) / d;\n    \n    #if defined (BT_USE_SSE_IN_API) && defined (BT_USE_SSE)\n        __m128\tvs, Q = q.get128();\n\t\t__m128i Qi = btCastfTo128i(Q);\n        __m128\tY, Z;\n        __m128\tV1, V2, V3;\n        __m128\tV11, V21, V31;\n        __m128\tNQ = _mm_xor_ps(Q, btvMzeroMask);\n\t\t__m128i NQi = btCastfTo128i(NQ);\n        \n        V1 = btCastiTo128f(_mm_shuffle_epi32 (Qi, BT_SHUFFLE(1,0,2,3)));\t// Y X Z W\n\t\tV2 = _mm_shuffle_ps(NQ, Q, BT_SHUFFLE(0,0,1,3));     // -X -X  Y  W\n        V3 = btCastiTo128f(_mm_shuffle_epi32 (Qi, BT_SHUFFLE(2,1,0,3)));\t// Z Y X W\n        V1 = _mm_xor_ps(V1, vMPPP);\t//\tchange the sign of the first element\n\t\t\t\n        V11\t= btCastiTo128f(_mm_shuffle_epi32 (Qi, BT_SHUFFLE(1,1,0,3)));\t// Y Y X W\n\t\tV21 = _mm_unpackhi_ps(Q, Q);                    //  Z  Z  W  W\n\t\tV31 = _mm_shuffle_ps(Q, NQ, BT_SHUFFLE(0,2,0,3));\t//  X  Z -X -W\n\n\t\tV2 = V2 * V1;\t//\n\t\tV1 = V1 * V11;\t//\n\t\tV3 = V3 * V31;\t//\n\n        V11 = _mm_shuffle_ps(NQ, Q, BT_SHUFFLE(2,3,1,3));\t//\t-Z -W  Y  W\n\t\tV11 = V11 * V21;\t//\n        V21 = _mm_xor_ps(V21, vMPPP);\t//\tchange the sign of the first element\n\t\tV31 = _mm_shuffle_ps(Q, NQ, BT_SHUFFLE(3,3,1,3));\t//\t W  W -Y -W\n        V31 = _mm_xor_ps(V31, vMPPP);\t//\tchange the sign of the first element\n\t\tY = btCastiTo128f(_mm_shuffle_epi32 (NQi, BT_SHUFFLE(3,2,0,3)));\t// -W -Z -X -W\n\t\tZ = btCastiTo128f(_mm_shuffle_epi32 (Qi, BT_SHUFFLE(1,0,1,3)));\t//  Y  X  Y  W\n\n\t\tvs = _mm_load_ss(&s);\n\t\tV21 = V21 * Y;\n\t\tV31 = V31 * Z;\n\n\t\tV1 = V1 + V11;\n        V2 = V2 + V21;\n        V3 = V3 + V31;\n\n        vs = bt_splat3_ps(vs, 0);\n            //\ts ready\n        V1 = V1 * vs;\n        V2 = V2 * vs;\n        V3 = V3 * vs;\n        \n        V1 = V1 + v1000;\n        V2 = V2 + v0100;\n        V3 = V3 + v0010;\n        \n        m_el[0] = V1; \n        m_el[1] = V2;\n        m_el[2] = V3;\n    #else    \n\t\tbtScalar xs = q.x() * s,   ys = q.y() * s,   zs = q.z() * s;\n\t\tbtScalar wx = q.w() * xs,  wy = q.w() * ys,  wz = q.w() * zs;\n\t\tbtScalar xx = q.x() * xs,  xy = q.x() * ys,  xz = q.x() * zs;\n\t\tbtScalar yy = q.y() * ys,  yz = q.y() * zs,  zz = q.z() * zs;\n\t\tsetValue(\n            btScalar(1.0) - (yy + zz), xy - wz, xz + wy,\n\t\t\txy + wz, btScalar(1.0) - (xx + zz), yz - wx,\n\t\t\txz - wy, yz + wx, btScalar(1.0) - (xx + yy));\n\t#endif\n    }\n\n\n\t/** @brief Set the matrix from euler angles using YPR around YXZ respectively\n\t*  @param yaw Yaw about Y axis\n\t*  @param pitch Pitch about X axis\n\t*  @param roll Roll about Z axis \n\t*/\n\tvoid setEulerYPR(const btScalar& yaw, const btScalar& pitch, const btScalar& roll) \n\t{\n\t\tsetEulerZYX(roll, pitch, yaw);\n\t}\n\n\t/** @brief Set the matrix from euler angles YPR around ZYX axes\n\t* @param eulerX Roll about X axis\n\t* @param eulerY Pitch around Y axis\n\t* @param eulerZ Yaw aboud Z axis\n\t* \n\t* These angles are used to produce a rotation matrix. The euler\n\t* angles are applied in ZYX order. I.e a vector is first rotated \n\t* about X then Y and then Z\n\t**/\n\tvoid setEulerZYX(btScalar eulerX,btScalar eulerY,btScalar eulerZ) { \n\t\t///@todo proposed to reverse this since it's labeled zyx but takes arguments xyz and it will match all other parts of the code\n\t\tbtScalar ci ( btCos(eulerX)); \n\t\tbtScalar cj ( btCos(eulerY)); \n\t\tbtScalar ch ( btCos(eulerZ)); \n\t\tbtScalar si ( btSin(eulerX)); \n\t\tbtScalar sj ( btSin(eulerY)); \n\t\tbtScalar sh ( btSin(eulerZ)); \n\t\tbtScalar cc = ci * ch; \n\t\tbtScalar cs = ci * sh; \n\t\tbtScalar sc = si * ch; \n\t\tbtScalar ss = si * sh;\n\n\t\tsetValue(cj * ch, sj * sc - cs, sj * cc + ss,\n\t\t\tcj * sh, sj * ss + cc, sj * cs - sc, \n\t\t\t-sj,      cj * si,      cj * ci);\n\t}\n\n\t/**@brief Set the matrix to the identity */\n\tvoid setIdentity()\n\t{ \n#if (defined(BT_USE_SSE_IN_API)&& defined (BT_USE_SSE)) || defined(BT_USE_NEON)\n\t\t\tm_el[0] = v1000; \n\t\t\tm_el[1] = v0100;\n\t\t\tm_el[2] = v0010;\n#else\n\t\tsetValue(btScalar(1.0), btScalar(0.0), btScalar(0.0), \n\t\t\tbtScalar(0.0), btScalar(1.0), btScalar(0.0), \n\t\t\tbtScalar(0.0), btScalar(0.0), btScalar(1.0)); \n#endif\n\t}\n\n\tstatic const btMatrix3x3&\tgetIdentity()\n\t{\n#if (defined(BT_USE_SSE_IN_API)&& defined (BT_USE_SSE)) || defined(BT_USE_NEON)\n        static const btMatrix3x3 \n        identityMatrix(v1000, v0100, v0010);\n#else\n\t\tstatic const btMatrix3x3 \n        identityMatrix(\n            btScalar(1.0), btScalar(0.0), btScalar(0.0), \n\t\t\tbtScalar(0.0), btScalar(1.0), btScalar(0.0), \n\t\t\tbtScalar(0.0), btScalar(0.0), btScalar(1.0));\n#endif\n\t\treturn identityMatrix;\n\t}\n\n\t/**@brief Fill the rotational part of an OpenGL matrix and clear the shear/perspective\n\t* @param m The array to be filled */\n\tvoid getOpenGLSubMatrix(btScalar *m) const \n\t{\n#if defined (BT_USE_SSE_IN_API) && defined (BT_USE_SSE)\n        __m128 v0 = m_el[0].mVec128;\n        __m128 v1 = m_el[1].mVec128;\n        __m128 v2 = m_el[2].mVec128;    //  x2 y2 z2 w2\n        __m128 *vm = (__m128 *)m;\n        __m128 vT;\n        \n        v2 = _mm_and_ps(v2, btvFFF0fMask);  //  x2 y2 z2 0\n        \n        vT = _mm_unpackhi_ps(v0, v1);\t//\tz0 z1 * *\n        v0 = _mm_unpacklo_ps(v0, v1);\t//\tx0 x1 y0 y1\n\n        v1 = _mm_shuffle_ps(v0, v2, BT_SHUFFLE(2, 3, 1, 3) );\t// y0 y1 y2 0\n        v0 = _mm_shuffle_ps(v0, v2, BT_SHUFFLE(0, 1, 0, 3) );\t// x0 x1 x2 0\n        v2 = btCastdTo128f(_mm_move_sd(btCastfTo128d(v2), btCastfTo128d(vT)));\t// z0 z1 z2 0\n\n        vm[0] = v0;\n        vm[1] = v1;\n        vm[2] = v2;\n#elif defined(BT_USE_NEON)\n        // note: zeros the w channel. We can preserve it at the cost of two more vtrn instructions.\n        static const uint32x2_t zMask = (const uint32x2_t) {-1, 0 };\n        float32x4_t *vm = (float32x4_t *)m;\n        float32x4x2_t top = vtrnq_f32( m_el[0].mVec128, m_el[1].mVec128 );  // {x0 x1 z0 z1}, {y0 y1 w0 w1}\n        float32x2x2_t bl = vtrn_f32( vget_low_f32(m_el[2].mVec128), vdup_n_f32(0.0f) );       // {x2  0 }, {y2 0}\n        float32x4_t v0 = vcombine_f32( vget_low_f32(top.val[0]), bl.val[0] );\n        float32x4_t v1 = vcombine_f32( vget_low_f32(top.val[1]), bl.val[1] );\n        float32x2_t q = (float32x2_t) vand_u32( (uint32x2_t) vget_high_f32( m_el[2].mVec128), zMask );\n        float32x4_t v2 = vcombine_f32( vget_high_f32(top.val[0]), q );       // z0 z1 z2  0\n\n        vm[0] = v0;\n        vm[1] = v1;\n        vm[2] = v2;\n#else\n\t\tm[0]  = btScalar(m_el[0].x()); \n\t\tm[1]  = btScalar(m_el[1].x());\n\t\tm[2]  = btScalar(m_el[2].x());\n\t\tm[3]  = btScalar(0.0); \n\t\tm[4]  = btScalar(m_el[0].y());\n\t\tm[5]  = btScalar(m_el[1].y());\n\t\tm[6]  = btScalar(m_el[2].y());\n\t\tm[7]  = btScalar(0.0); \n\t\tm[8]  = btScalar(m_el[0].z()); \n\t\tm[9]  = btScalar(m_el[1].z());\n\t\tm[10] = btScalar(m_el[2].z());\n\t\tm[11] = btScalar(0.0); \n#endif\n\t}\n\n\t/**@brief Get the matrix represented as a quaternion \n\t* @param q The quaternion which will be set */\n\tvoid getRotation(btQuaternion& q) const\n\t{\n#if (defined (BT_USE_SSE_IN_API) && defined (BT_USE_SSE))|| defined (BT_USE_NEON)\n        btScalar trace = m_el[0].x() + m_el[1].y() + m_el[2].z();\n        btScalar s, x;\n        \n        union {\n            btSimdFloat4 vec;\n            btScalar f[4];\n        } temp;\n        \n        if (trace > btScalar(0.0)) \n        {\n            x = trace + btScalar(1.0);\n\n            temp.f[0]=m_el[2].y() - m_el[1].z();\n            temp.f[1]=m_el[0].z() - m_el[2].x();\n            temp.f[2]=m_el[1].x() - m_el[0].y();\n            temp.f[3]=x;\n            //temp.f[3]= s * btScalar(0.5);\n        } \n        else \n        {\n            int i, j, k;\n            if(m_el[0].x() < m_el[1].y()) \n            { \n                if( m_el[1].y() < m_el[2].z() )\n                    { i = 2; j = 0; k = 1; }\n                else\n                    { i = 1; j = 2; k = 0; }\n            }\n            else\n            {\n                if( m_el[0].x() < m_el[2].z())\n                    { i = 2; j = 0; k = 1; }\n                else\n                    { i = 0; j = 1; k = 2; }\n            }\n\n            x = m_el[i][i] - m_el[j][j] - m_el[k][k] + btScalar(1.0);\n\n            temp.f[3] = (m_el[k][j] - m_el[j][k]);\n            temp.f[j] = (m_el[j][i] + m_el[i][j]);\n            temp.f[k] = (m_el[k][i] + m_el[i][k]);\n            temp.f[i] = x;\n            //temp.f[i] = s * btScalar(0.5);\n        }\n\n        s = btSqrt(x);\n        q.set128(temp.vec);\n        s = btScalar(0.5) / s;\n\n        q *= s;\n#else    \n\t\tbtScalar trace = m_el[0].x() + m_el[1].y() + m_el[2].z();\n\n\t\tbtScalar temp[4];\n\n\t\tif (trace > btScalar(0.0)) \n\t\t{\n\t\t\tbtScalar s = btSqrt(trace + btScalar(1.0));\n\t\t\ttemp[3]=(s * btScalar(0.5));\n\t\t\ts = btScalar(0.5) / s;\n\n\t\t\ttemp[0]=((m_el[2].y() - m_el[1].z()) * s);\n\t\t\ttemp[1]=((m_el[0].z() - m_el[2].x()) * s);\n\t\t\ttemp[2]=((m_el[1].x() - m_el[0].y()) * s);\n\t\t} \n\t\telse \n\t\t{\n\t\t\tint i = m_el[0].x() < m_el[1].y() ? \n\t\t\t\t(m_el[1].y() < m_el[2].z() ? 2 : 1) :\n\t\t\t\t(m_el[0].x() < m_el[2].z() ? 2 : 0); \n\t\t\tint j = (i + 1) % 3;  \n\t\t\tint k = (i + 2) % 3;\n\n\t\t\tbtScalar s = btSqrt(m_el[i][i] - m_el[j][j] - m_el[k][k] + btScalar(1.0));\n\t\t\ttemp[i] = s * btScalar(0.5);\n\t\t\ts = btScalar(0.5) / s;\n\n\t\t\ttemp[3] = (m_el[k][j] - m_el[j][k]) * s;\n\t\t\ttemp[j] = (m_el[j][i] + m_el[i][j]) * s;\n\t\t\ttemp[k] = (m_el[k][i] + m_el[i][k]) * s;\n\t\t}\n\t\tq.setValue(temp[0],temp[1],temp[2],temp[3]);\n#endif\n\t}\n\n\t/**@brief Get the matrix represented as euler angles around YXZ, roundtrip with setEulerYPR\n\t* @param yaw Yaw around Y axis\n\t* @param pitch Pitch around X axis\n\t* @param roll around Z axis */\t\n\tvoid getEulerYPR(btScalar& yaw, btScalar& pitch, btScalar& roll) const\n\t{\n\n\t\t// first use the normal calculus\n\t\tyaw = btScalar(btAtan2(m_el[1].x(), m_el[0].x()));\n\t\tpitch = btScalar(btAsin(-m_el[2].x()));\n\t\troll = btScalar(btAtan2(m_el[2].y(), m_el[2].z()));\n\n\t\t// on pitch = +/-HalfPI\n\t\tif (btFabs(pitch)==SIMD_HALF_PI)\n\t\t{\n\t\t\tif (yaw>0)\n\t\t\t\tyaw-=SIMD_PI;\n\t\t\telse\n\t\t\t\tyaw+=SIMD_PI;\n\n\t\t\tif (roll>0)\n\t\t\t\troll-=SIMD_PI;\n\t\t\telse\n\t\t\t\troll+=SIMD_PI;\n\t\t}\n\t};\n\n\n\t/**@brief Get the matrix represented as euler angles around ZYX\n\t* @param yaw Yaw around X axis\n\t* @param pitch Pitch around Y axis\n\t* @param roll around X axis \n\t* @param solution_number Which solution of two possible solutions ( 1 or 2) are possible values*/\t\n\tvoid getEulerZYX(btScalar& yaw, btScalar& pitch, btScalar& roll, unsigned int solution_number = 1) const\n\t{\n\t\tstruct Euler\n\t\t{\n\t\t\tbtScalar yaw;\n\t\t\tbtScalar pitch;\n\t\t\tbtScalar roll;\n\t\t};\n\n\t\tEuler euler_out;\n\t\tEuler euler_out2; //second solution\n\t\t//get the pointer to the raw data\n\n\t\t// Check that pitch is not at a singularity\n\t\tif (btFabs(m_el[2].x()) >= 1)\n\t\t{\n\t\t\teuler_out.yaw = 0;\n\t\t\teuler_out2.yaw = 0;\n\n\t\t\t// From difference of angles formula\n\t\t\tbtScalar delta = btAtan2(m_el[0].x(),m_el[0].z());\n\t\t\tif (m_el[2].x() > 0)  //gimbal locked up\n\t\t\t{\n\t\t\t\teuler_out.pitch = SIMD_PI / btScalar(2.0);\n\t\t\t\teuler_out2.pitch = SIMD_PI / btScalar(2.0);\n\t\t\t\teuler_out.roll = euler_out.pitch + delta;\n\t\t\t\teuler_out2.roll = euler_out.pitch + delta;\n\t\t\t}\n\t\t\telse // gimbal locked down\n\t\t\t{\n\t\t\t\teuler_out.pitch = -SIMD_PI / btScalar(2.0);\n\t\t\t\teuler_out2.pitch = -SIMD_PI / btScalar(2.0);\n\t\t\t\teuler_out.roll = -euler_out.pitch + delta;\n\t\t\t\teuler_out2.roll = -euler_out.pitch + delta;\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\teuler_out.pitch = - btAsin(m_el[2].x());\n\t\t\teuler_out2.pitch = SIMD_PI - euler_out.pitch;\n\n\t\t\teuler_out.roll = btAtan2(m_el[2].y()/btCos(euler_out.pitch), \n\t\t\t\tm_el[2].z()/btCos(euler_out.pitch));\n\t\t\teuler_out2.roll = btAtan2(m_el[2].y()/btCos(euler_out2.pitch), \n\t\t\t\tm_el[2].z()/btCos(euler_out2.pitch));\n\n\t\t\teuler_out.yaw = btAtan2(m_el[1].x()/btCos(euler_out.pitch), \n\t\t\t\tm_el[0].x()/btCos(euler_out.pitch));\n\t\t\teuler_out2.yaw = btAtan2(m_el[1].x()/btCos(euler_out2.pitch), \n\t\t\t\tm_el[0].x()/btCos(euler_out2.pitch));\n\t\t}\n\n\t\tif (solution_number == 1)\n\t\t{ \n\t\t\tyaw = euler_out.yaw; \n\t\t\tpitch = euler_out.pitch;\n\t\t\troll = euler_out.roll;\n\t\t}\n\t\telse\n\t\t{ \n\t\t\tyaw = euler_out2.yaw; \n\t\t\tpitch = euler_out2.pitch;\n\t\t\troll = euler_out2.roll;\n\t\t}\n\t}\n\n\t/**@brief Create a scaled copy of the matrix \n\t* @param s Scaling vector The elements of the vector will scale each column */\n\n\tbtMatrix3x3 scaled(const btVector3& s) const\n\t{\n#if (defined (BT_USE_SSE_IN_API) && defined (BT_USE_SSE))|| defined (BT_USE_NEON)\n\t\treturn btMatrix3x3(m_el[0] * s, m_el[1] * s, m_el[2] * s);\n#else\t\t\n\t\treturn btMatrix3x3(\n            m_el[0].x() * s.x(), m_el[0].y() * s.y(), m_el[0].z() * s.z(),\n\t\t\tm_el[1].x() * s.x(), m_el[1].y() * s.y(), m_el[1].z() * s.z(),\n\t\t\tm_el[2].x() * s.x(), m_el[2].y() * s.y(), m_el[2].z() * s.z());\n#endif\n\t}\n\n\t/**@brief Return the determinant of the matrix */\n\tbtScalar            determinant() const;\n\t/**@brief Return the adjoint of the matrix */\n\tbtMatrix3x3 adjoint() const;\n\t/**@brief Return the matrix with all values non negative */\n\tbtMatrix3x3 absolute() const;\n\t/**@brief Return the transpose of the matrix */\n\tbtMatrix3x3 transpose() const;\n\t/**@brief Return the inverse of the matrix */\n\tbtMatrix3x3 inverse() const; \n\n\tbtMatrix3x3 transposeTimes(const btMatrix3x3& m) const;\n\tbtMatrix3x3 timesTranspose(const btMatrix3x3& m) const;\n\n\tSIMD_FORCE_INLINE btScalar tdotx(const btVector3& v) const \n\t{\n\t\treturn m_el[0].x() * v.x() + m_el[1].x() * v.y() + m_el[2].x() * v.z();\n\t}\n\tSIMD_FORCE_INLINE btScalar tdoty(const btVector3& v) const \n\t{\n\t\treturn m_el[0].y() * v.x() + m_el[1].y() * v.y() + m_el[2].y() * v.z();\n\t}\n\tSIMD_FORCE_INLINE btScalar tdotz(const btVector3& v) const \n\t{\n\t\treturn m_el[0].z() * v.x() + m_el[1].z() * v.y() + m_el[2].z() * v.z();\n\t}\n\n\n\t/**@brief diagonalizes this matrix by the Jacobi method.\n\t* @param rot stores the rotation from the coordinate system in which the matrix is diagonal to the original\n\t* coordinate system, i.e., old_this = rot * new_this * rot^T. \n\t* @param threshold See iteration\n\t* @param iteration The iteration stops when all off-diagonal elements are less than the threshold multiplied \n\t* by the sum of the absolute values of the diagonal, or when maxSteps have been executed. \n\t* \n\t* Note that this matrix is assumed to be symmetric. \n\t*/\n\tvoid diagonalize(btMatrix3x3& rot, btScalar threshold, int maxSteps)\n\t{\n\t\trot.setIdentity();\n\t\tfor (int step = maxSteps; step > 0; step--)\n\t\t{\n\t\t\t// find off-diagonal element [p][q] with largest magnitude\n\t\t\tint p = 0;\n\t\t\tint q = 1;\n\t\t\tint r = 2;\n\t\t\tbtScalar max = btFabs(m_el[0][1]);\n\t\t\tbtScalar v = btFabs(m_el[0][2]);\n\t\t\tif (v > max)\n\t\t\t{\n\t\t\t\tq = 2;\n\t\t\t\tr = 1;\n\t\t\t\tmax = v;\n\t\t\t}\n\t\t\tv = btFabs(m_el[1][2]);\n\t\t\tif (v > max)\n\t\t\t{\n\t\t\t\tp = 1;\n\t\t\t\tq = 2;\n\t\t\t\tr = 0;\n\t\t\t\tmax = v;\n\t\t\t}\n\n\t\t\tbtScalar t = threshold * (btFabs(m_el[0][0]) + btFabs(m_el[1][1]) + btFabs(m_el[2][2]));\n\t\t\tif (max <= t)\n\t\t\t{\n\t\t\t\tif (max <= SIMD_EPSILON * t)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tstep = 1;\n\t\t\t}\n\n\t\t\t// compute Jacobi rotation J which leads to a zero for element [p][q] \n\t\t\tbtScalar mpq = m_el[p][q];\n\t\t\tbtScalar theta = (m_el[q][q] - m_el[p][p]) / (2 * mpq);\n\t\t\tbtScalar theta2 = theta * theta;\n\t\t\tbtScalar cos;\n\t\t\tbtScalar sin;\n\t\t\tif (theta2 * theta2 < btScalar(10 / SIMD_EPSILON))\n\t\t\t{\n\t\t\t\tt = (theta >= 0) ? 1 / (theta + btSqrt(1 + theta2))\n\t\t\t\t\t: 1 / (theta - btSqrt(1 + theta2));\n\t\t\t\tcos = 1 / btSqrt(1 + t * t);\n\t\t\t\tsin = cos * t;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t// approximation for large theta-value, i.e., a nearly diagonal matrix\n\t\t\t\tt = 1 / (theta * (2 + btScalar(0.5) / theta2));\n\t\t\t\tcos = 1 - btScalar(0.5) * t * t;\n\t\t\t\tsin = cos * t;\n\t\t\t}\n\n\t\t\t// apply rotation to matrix (this = J^T * this * J)\n\t\t\tm_el[p][q] = m_el[q][p] = 0;\n\t\t\tm_el[p][p] -= t * mpq;\n\t\t\tm_el[q][q] += t * mpq;\n\t\t\tbtScalar mrp = m_el[r][p];\n\t\t\tbtScalar mrq = m_el[r][q];\n\t\t\tm_el[r][p] = m_el[p][r] = cos * mrp - sin * mrq;\n\t\t\tm_el[r][q] = m_el[q][r] = cos * mrq + sin * mrp;\n\n\t\t\t// apply rotation to rot (rot = rot * J)\n\t\t\tfor (int i = 0; i < 3; i++)\n\t\t\t{\n\t\t\t\tbtVector3& row = rot[i];\n\t\t\t\tmrp = row[p];\n\t\t\t\tmrq = row[q];\n\t\t\t\trow[p] = cos * mrp - sin * mrq;\n\t\t\t\trow[q] = cos * mrq + sin * mrp;\n\t\t\t}\n\t\t}\n\t}\n\n\n\n\n\t/**@brief Calculate the matrix cofactor \n\t* @param r1 The first row to use for calculating the cofactor\n\t* @param c1 The first column to use for calculating the cofactor\n\t* @param r1 The second row to use for calculating the cofactor\n\t* @param c1 The second column to use for calculating the cofactor\n\t* See http://en.wikipedia.org/wiki/Cofactor_(linear_algebra) for more details\n\t*/\n\tbtScalar cofac(int r1, int c1, int r2, int c2) const \n\t{\n\t\treturn m_el[r1][c1] * m_el[r2][c2] - m_el[r1][c2] * m_el[r2][c1];\n\t}\n\n\tvoid\tserialize(struct\tbtMatrix3x3Data& dataOut) const;\n\n\tvoid\tserializeFloat(struct\tbtMatrix3x3FloatData& dataOut) const;\n\n\tvoid\tdeSerialize(const struct\tbtMatrix3x3Data& dataIn);\n\n\tvoid\tdeSerializeFloat(const struct\tbtMatrix3x3FloatData& dataIn);\n\n\tvoid\tdeSerializeDouble(const struct\tbtMatrix3x3DoubleData& dataIn);\n\n};\n\n\nSIMD_FORCE_INLINE btMatrix3x3& \nbtMatrix3x3::operator*=(const btMatrix3x3& m)\n{\n#if defined (BT_USE_SSE_IN_API) && defined (BT_USE_SSE)\n    __m128 rv00, rv01, rv02;\n    __m128 rv10, rv11, rv12;\n    __m128 rv20, rv21, rv22;\n    __m128 mv0, mv1, mv2;\n\n    rv02 = m_el[0].mVec128;\n    rv12 = m_el[1].mVec128;\n    rv22 = m_el[2].mVec128;\n\n    mv0 = _mm_and_ps(m[0].mVec128, btvFFF0fMask); \n    mv1 = _mm_and_ps(m[1].mVec128, btvFFF0fMask); \n    mv2 = _mm_and_ps(m[2].mVec128, btvFFF0fMask); \n    \n    // rv0\n    rv00 = bt_splat_ps(rv02, 0);\n    rv01 = bt_splat_ps(rv02, 1);\n    rv02 = bt_splat_ps(rv02, 2);\n    \n    rv00 = _mm_mul_ps(rv00, mv0);\n    rv01 = _mm_mul_ps(rv01, mv1);\n    rv02 = _mm_mul_ps(rv02, mv2);\n    \n    // rv1\n    rv10 = bt_splat_ps(rv12, 0);\n    rv11 = bt_splat_ps(rv12, 1);\n    rv12 = bt_splat_ps(rv12, 2);\n    \n    rv10 = _mm_mul_ps(rv10, mv0);\n    rv11 = _mm_mul_ps(rv11, mv1);\n    rv12 = _mm_mul_ps(rv12, mv2);\n    \n    // rv2\n    rv20 = bt_splat_ps(rv22, 0);\n    rv21 = bt_splat_ps(rv22, 1);\n    rv22 = bt_splat_ps(rv22, 2);\n    \n    rv20 = _mm_mul_ps(rv20, mv0);\n    rv21 = _mm_mul_ps(rv21, mv1);\n    rv22 = _mm_mul_ps(rv22, mv2);\n\n    rv00 = _mm_add_ps(rv00, rv01);\n    rv10 = _mm_add_ps(rv10, rv11);\n    rv20 = _mm_add_ps(rv20, rv21);\n\n    m_el[0].mVec128 = _mm_add_ps(rv00, rv02);\n    m_el[1].mVec128 = _mm_add_ps(rv10, rv12);\n    m_el[2].mVec128 = _mm_add_ps(rv20, rv22);\n\n#elif defined(BT_USE_NEON)\n\n    float32x4_t rv0, rv1, rv2;\n    float32x4_t v0, v1, v2;\n    float32x4_t mv0, mv1, mv2;\n\n    v0 = m_el[0].mVec128;\n    v1 = m_el[1].mVec128;\n    v2 = m_el[2].mVec128;\n\n    mv0 = (float32x4_t) vandq_s32((int32x4_t)m[0].mVec128, btvFFF0Mask); \n    mv1 = (float32x4_t) vandq_s32((int32x4_t)m[1].mVec128, btvFFF0Mask); \n    mv2 = (float32x4_t) vandq_s32((int32x4_t)m[2].mVec128, btvFFF0Mask); \n    \n    rv0 = vmulq_lane_f32(mv0, vget_low_f32(v0), 0);\n    rv1 = vmulq_lane_f32(mv0, vget_low_f32(v1), 0);\n    rv2 = vmulq_lane_f32(mv0, vget_low_f32(v2), 0);\n    \n    rv0 = vmlaq_lane_f32(rv0, mv1, vget_low_f32(v0), 1);\n    rv1 = vmlaq_lane_f32(rv1, mv1, vget_low_f32(v1), 1);\n    rv2 = vmlaq_lane_f32(rv2, mv1, vget_low_f32(v2), 1);\n    \n    rv0 = vmlaq_lane_f32(rv0, mv2, vget_high_f32(v0), 0);\n    rv1 = vmlaq_lane_f32(rv1, mv2, vget_high_f32(v1), 0);\n    rv2 = vmlaq_lane_f32(rv2, mv2, vget_high_f32(v2), 0);\n\n    m_el[0].mVec128 = rv0;\n    m_el[1].mVec128 = rv1;\n    m_el[2].mVec128 = rv2;\n#else    \n\tsetValue(\n        m.tdotx(m_el[0]), m.tdoty(m_el[0]), m.tdotz(m_el[0]),\n\t\tm.tdotx(m_el[1]), m.tdoty(m_el[1]), m.tdotz(m_el[1]),\n\t\tm.tdotx(m_el[2]), m.tdoty(m_el[2]), m.tdotz(m_el[2]));\n#endif\n\treturn *this;\n}\n\nSIMD_FORCE_INLINE btMatrix3x3& \nbtMatrix3x3::operator+=(const btMatrix3x3& m)\n{\n#if (defined (BT_USE_SSE_IN_API) && defined (BT_USE_SSE))|| defined (BT_USE_NEON)\n    m_el[0].mVec128 = m_el[0].mVec128 + m.m_el[0].mVec128;\n    m_el[1].mVec128 = m_el[1].mVec128 + m.m_el[1].mVec128;\n    m_el[2].mVec128 = m_el[2].mVec128 + m.m_el[2].mVec128;\n#else\n\tsetValue(\n\t\tm_el[0][0]+m.m_el[0][0], \n\t\tm_el[0][1]+m.m_el[0][1],\n\t\tm_el[0][2]+m.m_el[0][2],\n\t\tm_el[1][0]+m.m_el[1][0], \n\t\tm_el[1][1]+m.m_el[1][1],\n\t\tm_el[1][2]+m.m_el[1][2],\n\t\tm_el[2][0]+m.m_el[2][0], \n\t\tm_el[2][1]+m.m_el[2][1],\n\t\tm_el[2][2]+m.m_el[2][2]);\n#endif\n\treturn *this;\n}\n\nSIMD_FORCE_INLINE btMatrix3x3\noperator*(const btMatrix3x3& m, const btScalar & k)\n{\n#if (defined (BT_USE_SSE_IN_API) && defined (BT_USE_SSE))\n    __m128 vk = bt_splat_ps(_mm_load_ss((float *)&k), 0x80);\n    return btMatrix3x3(\n                _mm_mul_ps(m[0].mVec128, vk), \n                _mm_mul_ps(m[1].mVec128, vk), \n                _mm_mul_ps(m[2].mVec128, vk)); \n#elif defined(BT_USE_NEON)\n    return btMatrix3x3(\n                vmulq_n_f32(m[0].mVec128, k),\n                vmulq_n_f32(m[1].mVec128, k),\n                vmulq_n_f32(m[2].mVec128, k)); \n#else\n\treturn btMatrix3x3(\n\t\tm[0].x()*k,m[0].y()*k,m[0].z()*k,\n\t\tm[1].x()*k,m[1].y()*k,m[1].z()*k,\n\t\tm[2].x()*k,m[2].y()*k,m[2].z()*k);\n#endif\n}\n\nSIMD_FORCE_INLINE btMatrix3x3 \noperator+(const btMatrix3x3& m1, const btMatrix3x3& m2)\n{\n#if (defined (BT_USE_SSE_IN_API) && defined (BT_USE_SSE))|| defined (BT_USE_NEON)\n\treturn btMatrix3x3(\n        m1[0].mVec128 + m2[0].mVec128,\n        m1[1].mVec128 + m2[1].mVec128,\n        m1[2].mVec128 + m2[2].mVec128);\n#else\n\treturn btMatrix3x3(\n        m1[0][0]+m2[0][0], \n        m1[0][1]+m2[0][1],\n        m1[0][2]+m2[0][2],\n        \n        m1[1][0]+m2[1][0], \n        m1[1][1]+m2[1][1],\n        m1[1][2]+m2[1][2],\n        \n        m1[2][0]+m2[2][0], \n        m1[2][1]+m2[2][1],\n        m1[2][2]+m2[2][2]);\n#endif    \n}\n\nSIMD_FORCE_INLINE btMatrix3x3 \noperator-(const btMatrix3x3& m1, const btMatrix3x3& m2)\n{\n#if (defined (BT_USE_SSE_IN_API) && defined (BT_USE_SSE))|| defined (BT_USE_NEON)\n\treturn btMatrix3x3(\n        m1[0].mVec128 - m2[0].mVec128,\n        m1[1].mVec128 - m2[1].mVec128,\n        m1[2].mVec128 - m2[2].mVec128);\n#else\n\treturn btMatrix3x3(\n        m1[0][0]-m2[0][0], \n        m1[0][1]-m2[0][1],\n        m1[0][2]-m2[0][2],\n        \n        m1[1][0]-m2[1][0], \n        m1[1][1]-m2[1][1],\n        m1[1][2]-m2[1][2],\n        \n        m1[2][0]-m2[2][0], \n        m1[2][1]-m2[2][1],\n        m1[2][2]-m2[2][2]);\n#endif\n}\n\n\nSIMD_FORCE_INLINE btMatrix3x3& \nbtMatrix3x3::operator-=(const btMatrix3x3& m)\n{\n#if (defined (BT_USE_SSE_IN_API) && defined (BT_USE_SSE))|| defined (BT_USE_NEON)\n    m_el[0].mVec128 = m_el[0].mVec128 - m.m_el[0].mVec128;\n    m_el[1].mVec128 = m_el[1].mVec128 - m.m_el[1].mVec128;\n    m_el[2].mVec128 = m_el[2].mVec128 - m.m_el[2].mVec128;\n#else\n\tsetValue(\n\tm_el[0][0]-m.m_el[0][0], \n\tm_el[0][1]-m.m_el[0][1],\n\tm_el[0][2]-m.m_el[0][2],\n\tm_el[1][0]-m.m_el[1][0], \n\tm_el[1][1]-m.m_el[1][1],\n\tm_el[1][2]-m.m_el[1][2],\n\tm_el[2][0]-m.m_el[2][0], \n\tm_el[2][1]-m.m_el[2][1],\n\tm_el[2][2]-m.m_el[2][2]);\n#endif\n\treturn *this;\n}\n\n\nSIMD_FORCE_INLINE btScalar \nbtMatrix3x3::determinant() const\n{ \n\treturn btTriple((*this)[0], (*this)[1], (*this)[2]);\n}\n\n\nSIMD_FORCE_INLINE btMatrix3x3 \nbtMatrix3x3::absolute() const\n{\n#if (defined (BT_USE_SSE_IN_API) && defined (BT_USE_SSE))\n    return btMatrix3x3(\n            _mm_and_ps(m_el[0].mVec128, btvAbsfMask),\n            _mm_and_ps(m_el[1].mVec128, btvAbsfMask),\n            _mm_and_ps(m_el[2].mVec128, btvAbsfMask));\n#elif defined(BT_USE_NEON)\n    return btMatrix3x3(\n            (float32x4_t)vandq_s32((int32x4_t)m_el[0].mVec128, btv3AbsMask),\n            (float32x4_t)vandq_s32((int32x4_t)m_el[1].mVec128, btv3AbsMask),\n            (float32x4_t)vandq_s32((int32x4_t)m_el[2].mVec128, btv3AbsMask));\n#else\t\n\treturn btMatrix3x3(\n            btFabs(m_el[0].x()), btFabs(m_el[0].y()), btFabs(m_el[0].z()),\n            btFabs(m_el[1].x()), btFabs(m_el[1].y()), btFabs(m_el[1].z()),\n            btFabs(m_el[2].x()), btFabs(m_el[2].y()), btFabs(m_el[2].z()));\n#endif\n}\n\nSIMD_FORCE_INLINE btMatrix3x3 \nbtMatrix3x3::transpose() const \n{\n#if (defined (BT_USE_SSE_IN_API) && defined (BT_USE_SSE))\n    __m128 v0 = m_el[0].mVec128;\n    __m128 v1 = m_el[1].mVec128;\n    __m128 v2 = m_el[2].mVec128;    //  x2 y2 z2 w2\n    __m128 vT;\n    \n    v2 = _mm_and_ps(v2, btvFFF0fMask);  //  x2 y2 z2 0\n    \n    vT = _mm_unpackhi_ps(v0, v1);\t//\tz0 z1 * *\n    v0 = _mm_unpacklo_ps(v0, v1);\t//\tx0 x1 y0 y1\n\n    v1 = _mm_shuffle_ps(v0, v2, BT_SHUFFLE(2, 3, 1, 3) );\t// y0 y1 y2 0\n    v0 = _mm_shuffle_ps(v0, v2, BT_SHUFFLE(0, 1, 0, 3) );\t// x0 x1 x2 0\n    v2 = btCastdTo128f(_mm_move_sd(btCastfTo128d(v2), btCastfTo128d(vT)));\t// z0 z1 z2 0\n\n\n    return btMatrix3x3( v0, v1, v2 );\n#elif defined(BT_USE_NEON)\n    // note: zeros the w channel. We can preserve it at the cost of two more vtrn instructions.\n    static const uint32x2_t zMask = (const uint32x2_t) {-1, 0 };\n    float32x4x2_t top = vtrnq_f32( m_el[0].mVec128, m_el[1].mVec128 );  // {x0 x1 z0 z1}, {y0 y1 w0 w1}\n    float32x2x2_t bl = vtrn_f32( vget_low_f32(m_el[2].mVec128), vdup_n_f32(0.0f) );       // {x2  0 }, {y2 0}\n    float32x4_t v0 = vcombine_f32( vget_low_f32(top.val[0]), bl.val[0] );\n    float32x4_t v1 = vcombine_f32( vget_low_f32(top.val[1]), bl.val[1] );\n    float32x2_t q = (float32x2_t) vand_u32( (uint32x2_t) vget_high_f32( m_el[2].mVec128), zMask );\n    float32x4_t v2 = vcombine_f32( vget_high_f32(top.val[0]), q );       // z0 z1 z2  0\n    return btMatrix3x3( v0, v1, v2 ); \n#else\n\treturn btMatrix3x3( m_el[0].x(), m_el[1].x(), m_el[2].x(),\n                        m_el[0].y(), m_el[1].y(), m_el[2].y(),\n                        m_el[0].z(), m_el[1].z(), m_el[2].z());\n#endif\n}\n\nSIMD_FORCE_INLINE btMatrix3x3 \nbtMatrix3x3::adjoint() const \n{\n\treturn btMatrix3x3(cofac(1, 1, 2, 2), cofac(0, 2, 2, 1), cofac(0, 1, 1, 2),\n\t\tcofac(1, 2, 2, 0), cofac(0, 0, 2, 2), cofac(0, 2, 1, 0),\n\t\tcofac(1, 0, 2, 1), cofac(0, 1, 2, 0), cofac(0, 0, 1, 1));\n}\n\nSIMD_FORCE_INLINE btMatrix3x3 \nbtMatrix3x3::inverse() const\n{\n\tbtVector3 co(cofac(1, 1, 2, 2), cofac(1, 2, 2, 0), cofac(1, 0, 2, 1));\n\tbtScalar det = (*this)[0].dot(co);\n\tbtFullAssert(det != btScalar(0.0));\n\tbtScalar s = btScalar(1.0) / det;\n\treturn btMatrix3x3(co.x() * s, cofac(0, 2, 2, 1) * s, cofac(0, 1, 1, 2) * s,\n\t\tco.y() * s, cofac(0, 0, 2, 2) * s, cofac(0, 2, 1, 0) * s,\n\t\tco.z() * s, cofac(0, 1, 2, 0) * s, cofac(0, 0, 1, 1) * s);\n}\n\nSIMD_FORCE_INLINE btMatrix3x3 \nbtMatrix3x3::transposeTimes(const btMatrix3x3& m) const\n{\n#if (defined (BT_USE_SSE_IN_API) && defined (BT_USE_SSE))\n    // zeros w\n//    static const __m128i xyzMask = (const __m128i){ -1ULL, 0xffffffffULL };\n    __m128 row = m_el[0].mVec128;\n    __m128 m0 = _mm_and_ps( m.getRow(0).mVec128, btvFFF0fMask );\n    __m128 m1 = _mm_and_ps( m.getRow(1).mVec128, btvFFF0fMask);\n    __m128 m2 = _mm_and_ps( m.getRow(2).mVec128, btvFFF0fMask );\n    __m128 r0 = _mm_mul_ps(m0, _mm_shuffle_ps(row, row, 0));\n    __m128 r1 = _mm_mul_ps(m0, _mm_shuffle_ps(row, row, 0x55));\n    __m128 r2 = _mm_mul_ps(m0, _mm_shuffle_ps(row, row, 0xaa));\n    row = m_el[1].mVec128;\n    r0 = _mm_add_ps( r0, _mm_mul_ps(m1, _mm_shuffle_ps(row, row, 0)));\n    r1 = _mm_add_ps( r1, _mm_mul_ps(m1, _mm_shuffle_ps(row, row, 0x55)));\n    r2 = _mm_add_ps( r2, _mm_mul_ps(m1, _mm_shuffle_ps(row, row, 0xaa)));\n    row = m_el[2].mVec128;\n    r0 = _mm_add_ps( r0, _mm_mul_ps(m2, _mm_shuffle_ps(row, row, 0)));\n    r1 = _mm_add_ps( r1, _mm_mul_ps(m2, _mm_shuffle_ps(row, row, 0x55)));\n    r2 = _mm_add_ps( r2, _mm_mul_ps(m2, _mm_shuffle_ps(row, row, 0xaa)));\n    return btMatrix3x3( r0, r1, r2 );\n\n#elif defined BT_USE_NEON\n    // zeros w\n    static const uint32x4_t xyzMask = (const uint32x4_t){ -1, -1, -1, 0 };\n    float32x4_t m0 = (float32x4_t) vandq_u32( (uint32x4_t) m.getRow(0).mVec128, xyzMask );\n    float32x4_t m1 = (float32x4_t) vandq_u32( (uint32x4_t) m.getRow(1).mVec128, xyzMask );\n    float32x4_t m2 = (float32x4_t) vandq_u32( (uint32x4_t) m.getRow(2).mVec128, xyzMask );\n    float32x4_t row = m_el[0].mVec128;\n    float32x4_t r0 = vmulq_lane_f32( m0, vget_low_f32(row), 0);\n    float32x4_t r1 = vmulq_lane_f32( m0, vget_low_f32(row), 1);\n    float32x4_t r2 = vmulq_lane_f32( m0, vget_high_f32(row), 0);\n    row = m_el[1].mVec128;\n    r0 = vmlaq_lane_f32( r0, m1, vget_low_f32(row), 0);\n    r1 = vmlaq_lane_f32( r1, m1, vget_low_f32(row), 1);\n    r2 = vmlaq_lane_f32( r2, m1, vget_high_f32(row), 0);\n    row = m_el[2].mVec128;\n    r0 = vmlaq_lane_f32( r0, m2, vget_low_f32(row), 0);\n    r1 = vmlaq_lane_f32( r1, m2, vget_low_f32(row), 1);\n    r2 = vmlaq_lane_f32( r2, m2, vget_high_f32(row), 0);\n    return btMatrix3x3( r0, r1, r2 );\n#else\n    return btMatrix3x3(\n\t\tm_el[0].x() * m[0].x() + m_el[1].x() * m[1].x() + m_el[2].x() * m[2].x(),\n\t\tm_el[0].x() * m[0].y() + m_el[1].x() * m[1].y() + m_el[2].x() * m[2].y(),\n\t\tm_el[0].x() * m[0].z() + m_el[1].x() * m[1].z() + m_el[2].x() * m[2].z(),\n\t\tm_el[0].y() * m[0].x() + m_el[1].y() * m[1].x() + m_el[2].y() * m[2].x(),\n\t\tm_el[0].y() * m[0].y() + m_el[1].y() * m[1].y() + m_el[2].y() * m[2].y(),\n\t\tm_el[0].y() * m[0].z() + m_el[1].y() * m[1].z() + m_el[2].y() * m[2].z(),\n\t\tm_el[0].z() * m[0].x() + m_el[1].z() * m[1].x() + m_el[2].z() * m[2].x(),\n\t\tm_el[0].z() * m[0].y() + m_el[1].z() * m[1].y() + m_el[2].z() * m[2].y(),\n\t\tm_el[0].z() * m[0].z() + m_el[1].z() * m[1].z() + m_el[2].z() * m[2].z());\n#endif\n}\n\nSIMD_FORCE_INLINE btMatrix3x3 \nbtMatrix3x3::timesTranspose(const btMatrix3x3& m) const\n{\n#if (defined (BT_USE_SSE_IN_API) && defined (BT_USE_SSE))\n    __m128 a0 = m_el[0].mVec128;\n    __m128 a1 = m_el[1].mVec128;\n    __m128 a2 = m_el[2].mVec128;\n    \n    btMatrix3x3 mT = m.transpose(); // we rely on transpose() zeroing w channel so that we don't have to do it here\n    __m128 mx = mT[0].mVec128;\n    __m128 my = mT[1].mVec128;\n    __m128 mz = mT[2].mVec128;\n    \n    __m128 r0 = _mm_mul_ps(mx, _mm_shuffle_ps(a0, a0, 0x00));\n    __m128 r1 = _mm_mul_ps(mx, _mm_shuffle_ps(a1, a1, 0x00));\n    __m128 r2 = _mm_mul_ps(mx, _mm_shuffle_ps(a2, a2, 0x00));\n    r0 = _mm_add_ps(r0, _mm_mul_ps(my, _mm_shuffle_ps(a0, a0, 0x55)));\n    r1 = _mm_add_ps(r1, _mm_mul_ps(my, _mm_shuffle_ps(a1, a1, 0x55)));\n    r2 = _mm_add_ps(r2, _mm_mul_ps(my, _mm_shuffle_ps(a2, a2, 0x55)));\n    r0 = _mm_add_ps(r0, _mm_mul_ps(mz, _mm_shuffle_ps(a0, a0, 0xaa)));\n    r1 = _mm_add_ps(r1, _mm_mul_ps(mz, _mm_shuffle_ps(a1, a1, 0xaa)));\n    r2 = _mm_add_ps(r2, _mm_mul_ps(mz, _mm_shuffle_ps(a2, a2, 0xaa)));\n    return btMatrix3x3( r0, r1, r2);\n            \n#elif defined BT_USE_NEON\n    float32x4_t a0 = m_el[0].mVec128;\n    float32x4_t a1 = m_el[1].mVec128;\n    float32x4_t a2 = m_el[2].mVec128;\n    \n    btMatrix3x3 mT = m.transpose(); // we rely on transpose() zeroing w channel so that we don't have to do it here\n    float32x4_t mx = mT[0].mVec128;\n    float32x4_t my = mT[1].mVec128;\n    float32x4_t mz = mT[2].mVec128;\n    \n    float32x4_t r0 = vmulq_lane_f32( mx, vget_low_f32(a0), 0);\n    float32x4_t r1 = vmulq_lane_f32( mx, vget_low_f32(a1), 0);\n    float32x4_t r2 = vmulq_lane_f32( mx, vget_low_f32(a2), 0);\n    r0 = vmlaq_lane_f32( r0, my, vget_low_f32(a0), 1);\n    r1 = vmlaq_lane_f32( r1, my, vget_low_f32(a1), 1);\n    r2 = vmlaq_lane_f32( r2, my, vget_low_f32(a2), 1);\n    r0 = vmlaq_lane_f32( r0, mz, vget_high_f32(a0), 0);\n    r1 = vmlaq_lane_f32( r1, mz, vget_high_f32(a1), 0);\n    r2 = vmlaq_lane_f32( r2, mz, vget_high_f32(a2), 0);\n    return btMatrix3x3( r0, r1, r2 );\n    \n#else\n\treturn btMatrix3x3(\n\t\tm_el[0].dot(m[0]), m_el[0].dot(m[1]), m_el[0].dot(m[2]),\n\t\tm_el[1].dot(m[0]), m_el[1].dot(m[1]), m_el[1].dot(m[2]),\n\t\tm_el[2].dot(m[0]), m_el[2].dot(m[1]), m_el[2].dot(m[2]));\n#endif\n}\n\nSIMD_FORCE_INLINE btVector3 \noperator*(const btMatrix3x3& m, const btVector3& v) \n{\n#if (defined (BT_USE_SSE_IN_API) && defined (BT_USE_SSE))|| defined (BT_USE_NEON)\n    return v.dot3(m[0], m[1], m[2]);\n#else\n\treturn btVector3(m[0].dot(v), m[1].dot(v), m[2].dot(v));\n#endif\n}\n\n\nSIMD_FORCE_INLINE btVector3\noperator*(const btVector3& v, const btMatrix3x3& m)\n{\n#if (defined (BT_USE_SSE_IN_API) && defined (BT_USE_SSE))\n\n    const __m128 vv = v.mVec128;\n\n    __m128 c0 = bt_splat_ps( vv, 0);\n    __m128 c1 = bt_splat_ps( vv, 1);\n    __m128 c2 = bt_splat_ps( vv, 2);\n\n    c0 = _mm_mul_ps(c0, _mm_and_ps(m[0].mVec128, btvFFF0fMask) );\n    c1 = _mm_mul_ps(c1, _mm_and_ps(m[1].mVec128, btvFFF0fMask) );\n    c0 = _mm_add_ps(c0, c1);\n    c2 = _mm_mul_ps(c2, _mm_and_ps(m[2].mVec128, btvFFF0fMask) );\n    \n    return btVector3(_mm_add_ps(c0, c2));\n#elif defined(BT_USE_NEON)\n    const float32x4_t vv = v.mVec128;\n    const float32x2_t vlo = vget_low_f32(vv);\n    const float32x2_t vhi = vget_high_f32(vv);\n\n    float32x4_t c0, c1, c2;\n\n    c0 = (float32x4_t) vandq_s32((int32x4_t)m[0].mVec128, btvFFF0Mask);\n    c1 = (float32x4_t) vandq_s32((int32x4_t)m[1].mVec128, btvFFF0Mask);\n    c2 = (float32x4_t) vandq_s32((int32x4_t)m[2].mVec128, btvFFF0Mask);\n\n    c0 = vmulq_lane_f32(c0, vlo, 0);\n    c1 = vmulq_lane_f32(c1, vlo, 1);\n    c2 = vmulq_lane_f32(c2, vhi, 0);\n    c0 = vaddq_f32(c0, c1);\n    c0 = vaddq_f32(c0, c2);\n    \n    return btVector3(c0);\n#else\n\treturn btVector3(m.tdotx(v), m.tdoty(v), m.tdotz(v));\n#endif\n}\n\nSIMD_FORCE_INLINE btMatrix3x3 \noperator*(const btMatrix3x3& m1, const btMatrix3x3& m2)\n{\n#if (defined (BT_USE_SSE_IN_API) && defined (BT_USE_SSE))\n\n    __m128 m10 = m1[0].mVec128;  \n    __m128 m11 = m1[1].mVec128;\n    __m128 m12 = m1[2].mVec128;\n    \n    __m128 m2v = _mm_and_ps(m2[0].mVec128, btvFFF0fMask);\n    \n    __m128 c0 = bt_splat_ps( m10, 0);\n    __m128 c1 = bt_splat_ps( m11, 0);\n    __m128 c2 = bt_splat_ps( m12, 0);\n    \n    c0 = _mm_mul_ps(c0, m2v);\n    c1 = _mm_mul_ps(c1, m2v);\n    c2 = _mm_mul_ps(c2, m2v);\n    \n    m2v = _mm_and_ps(m2[1].mVec128, btvFFF0fMask);\n    \n    __m128 c0_1 = bt_splat_ps( m10, 1);\n    __m128 c1_1 = bt_splat_ps( m11, 1);\n    __m128 c2_1 = bt_splat_ps( m12, 1);\n    \n    c0_1 = _mm_mul_ps(c0_1, m2v);\n    c1_1 = _mm_mul_ps(c1_1, m2v);\n    c2_1 = _mm_mul_ps(c2_1, m2v);\n    \n    m2v = _mm_and_ps(m2[2].mVec128, btvFFF0fMask);\n    \n    c0 = _mm_add_ps(c0, c0_1);\n    c1 = _mm_add_ps(c1, c1_1);\n    c2 = _mm_add_ps(c2, c2_1);\n    \n    m10 = bt_splat_ps( m10, 2);\n    m11 = bt_splat_ps( m11, 2);\n    m12 = bt_splat_ps( m12, 2);\n    \n    m10 = _mm_mul_ps(m10, m2v);\n    m11 = _mm_mul_ps(m11, m2v);\n    m12 = _mm_mul_ps(m12, m2v);\n    \n    c0 = _mm_add_ps(c0, m10);\n    c1 = _mm_add_ps(c1, m11);\n    c2 = _mm_add_ps(c2, m12);\n    \n    return btMatrix3x3(c0, c1, c2);\n\n#elif defined(BT_USE_NEON)\n\n    float32x4_t rv0, rv1, rv2;\n    float32x4_t v0, v1, v2;\n    float32x4_t mv0, mv1, mv2;\n\n    v0 = m1[0].mVec128;\n    v1 = m1[1].mVec128;\n    v2 = m1[2].mVec128;\n\n    mv0 = (float32x4_t) vandq_s32((int32x4_t)m2[0].mVec128, btvFFF0Mask); \n    mv1 = (float32x4_t) vandq_s32((int32x4_t)m2[1].mVec128, btvFFF0Mask); \n    mv2 = (float32x4_t) vandq_s32((int32x4_t)m2[2].mVec128, btvFFF0Mask); \n    \n    rv0 = vmulq_lane_f32(mv0, vget_low_f32(v0), 0);\n    rv1 = vmulq_lane_f32(mv0, vget_low_f32(v1), 0);\n    rv2 = vmulq_lane_f32(mv0, vget_low_f32(v2), 0);\n    \n    rv0 = vmlaq_lane_f32(rv0, mv1, vget_low_f32(v0), 1);\n    rv1 = vmlaq_lane_f32(rv1, mv1, vget_low_f32(v1), 1);\n    rv2 = vmlaq_lane_f32(rv2, mv1, vget_low_f32(v2), 1);\n    \n    rv0 = vmlaq_lane_f32(rv0, mv2, vget_high_f32(v0), 0);\n    rv1 = vmlaq_lane_f32(rv1, mv2, vget_high_f32(v1), 0);\n    rv2 = vmlaq_lane_f32(rv2, mv2, vget_high_f32(v2), 0);\n\n\treturn btMatrix3x3(rv0, rv1, rv2);\n        \n#else\t\n\treturn btMatrix3x3(\n\t\tm2.tdotx( m1[0]), m2.tdoty( m1[0]), m2.tdotz( m1[0]),\n\t\tm2.tdotx( m1[1]), m2.tdoty( m1[1]), m2.tdotz( m1[1]),\n\t\tm2.tdotx( m1[2]), m2.tdoty( m1[2]), m2.tdotz( m1[2]));\n#endif\n}\n\n/*\nSIMD_FORCE_INLINE btMatrix3x3 btMultTransposeLeft(const btMatrix3x3& m1, const btMatrix3x3& m2) {\nreturn btMatrix3x3(\nm1[0][0] * m2[0][0] + m1[1][0] * m2[1][0] + m1[2][0] * m2[2][0],\nm1[0][0] * m2[0][1] + m1[1][0] * m2[1][1] + m1[2][0] * m2[2][1],\nm1[0][0] * m2[0][2] + m1[1][0] * m2[1][2] + m1[2][0] * m2[2][2],\nm1[0][1] * m2[0][0] + m1[1][1] * m2[1][0] + m1[2][1] * m2[2][0],\nm1[0][1] * m2[0][1] + m1[1][1] * m2[1][1] + m1[2][1] * m2[2][1],\nm1[0][1] * m2[0][2] + m1[1][1] * m2[1][2] + m1[2][1] * m2[2][2],\nm1[0][2] * m2[0][0] + m1[1][2] * m2[1][0] + m1[2][2] * m2[2][0],\nm1[0][2] * m2[0][1] + m1[1][2] * m2[1][1] + m1[2][2] * m2[2][1],\nm1[0][2] * m2[0][2] + m1[1][2] * m2[1][2] + m1[2][2] * m2[2][2]);\n}\n*/\n\n/**@brief Equality operator between two matrices\n* It will test all elements are equal.  */\nSIMD_FORCE_INLINE bool operator==(const btMatrix3x3& m1, const btMatrix3x3& m2)\n{\n#if (defined (BT_USE_SSE_IN_API) && defined (BT_USE_SSE))\n\n    __m128 c0, c1, c2;\n\n    c0 = _mm_cmpeq_ps(m1[0].mVec128, m2[0].mVec128);\n    c1 = _mm_cmpeq_ps(m1[1].mVec128, m2[1].mVec128);\n    c2 = _mm_cmpeq_ps(m1[2].mVec128, m2[2].mVec128);\n    \n    c0 = _mm_and_ps(c0, c1);\n    c0 = _mm_and_ps(c0, c2);\n\n    return (0x7 == _mm_movemask_ps((__m128)c0));\n#else \n\treturn \n    (   m1[0][0] == m2[0][0] && m1[1][0] == m2[1][0] && m1[2][0] == m2[2][0] &&\n\t\tm1[0][1] == m2[0][1] && m1[1][1] == m2[1][1] && m1[2][1] == m2[2][1] &&\n\t\tm1[0][2] == m2[0][2] && m1[1][2] == m2[1][2] && m1[2][2] == m2[2][2] );\n#endif\n}\n\n///for serialization\nstruct\tbtMatrix3x3FloatData\n{\n\tbtVector3FloatData m_el[3];\n};\n\n///for serialization\nstruct\tbtMatrix3x3DoubleData\n{\n\tbtVector3DoubleData m_el[3];\n};\n\n\n\t\n\nSIMD_FORCE_INLINE\tvoid\tbtMatrix3x3::serialize(struct\tbtMatrix3x3Data& dataOut) const\n{\n\tfor (int i=0;i<3;i++)\n\t\tm_el[i].serialize(dataOut.m_el[i]);\n}\n\nSIMD_FORCE_INLINE\tvoid\tbtMatrix3x3::serializeFloat(struct\tbtMatrix3x3FloatData& dataOut) const\n{\n\tfor (int i=0;i<3;i++)\n\t\tm_el[i].serializeFloat(dataOut.m_el[i]);\n}\n\n\nSIMD_FORCE_INLINE\tvoid\tbtMatrix3x3::deSerialize(const struct\tbtMatrix3x3Data& dataIn)\n{\n\tfor (int i=0;i<3;i++)\n\t\tm_el[i].deSerialize(dataIn.m_el[i]);\n}\n\nSIMD_FORCE_INLINE\tvoid\tbtMatrix3x3::deSerializeFloat(const struct\tbtMatrix3x3FloatData& dataIn)\n{\n\tfor (int i=0;i<3;i++)\n\t\tm_el[i].deSerializeFloat(dataIn.m_el[i]);\n}\n\nSIMD_FORCE_INLINE\tvoid\tbtMatrix3x3::deSerializeDouble(const struct\tbtMatrix3x3DoubleData& dataIn)\n{\n\tfor (int i=0;i<3;i++)\n\t\tm_el[i].deSerializeDouble(dataIn.m_el[i]);\n}\n\n#endif //BT_MATRIX3x3_H\n\n"
  },
  {
    "path": "Sources/NativeDAABBTree/LinearMath/btMinMax.h",
    "content": "/*\nCopyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n\n\n#ifndef BT_GEN_MINMAX_H\n#define BT_GEN_MINMAX_H\n\n#include \"btScalar.h\"\n\ntemplate <class T>\nSIMD_FORCE_INLINE const T& btMin(const T& a, const T& b) \n{\n  return a < b ? a : b ;\n}\n\ntemplate <class T>\nSIMD_FORCE_INLINE const T& btMax(const T& a, const T& b) \n{\n  return  a > b ? a : b;\n}\n\ntemplate <class T>\nSIMD_FORCE_INLINE const T& btClamped(const T& a, const T& lb, const T& ub) \n{\n\treturn a < lb ? lb : (ub < a ? ub : a); \n}\n\ntemplate <class T>\nSIMD_FORCE_INLINE void btSetMin(T& a, const T& b) \n{\n    if (b < a) \n\t{\n\t\ta = b;\n\t}\n}\n\ntemplate <class T>\nSIMD_FORCE_INLINE void btSetMax(T& a, const T& b) \n{\n    if (a < b) \n\t{\n\t\ta = b;\n\t}\n}\n\ntemplate <class T>\nSIMD_FORCE_INLINE void btClamp(T& a, const T& lb, const T& ub) \n{\n\tif (a < lb) \n\t{\n\t\ta = lb; \n\t}\n\telse if (ub < a) \n\t{\n\t\ta = ub;\n\t}\n}\n\n#endif //BT_GEN_MINMAX_H\n"
  },
  {
    "path": "Sources/NativeDAABBTree/LinearMath/btMotionState.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_MOTIONSTATE_H\n#define BT_MOTIONSTATE_H\n\n#include \"btTransform.h\"\n\n///The btMotionState interface class allows the dynamics world to synchronize and interpolate the updated world transforms with graphics\n///For optimizations, potentially only moving objects get synchronized (using setWorldPosition/setWorldOrientation)\nclass\tbtMotionState\n{\n\tpublic:\n\t\t\n\t\tvirtual ~btMotionState()\n\t\t{\n\t\t\t\n\t\t}\n\t\t\n\t\tvirtual void\tgetWorldTransform(btTransform& worldTrans ) const =0;\n\n\t\t//Bullet only calls the update of worldtransform for active objects\n\t\tvirtual void\tsetWorldTransform(const btTransform& worldTrans)=0;\n\t\t\n\t\n};\n\n#endif //BT_MOTIONSTATE_H\n"
  },
  {
    "path": "Sources/NativeDAABBTree/LinearMath/btPolarDecomposition.cpp",
    "content": "#include \"btPolarDecomposition.h\"\n#include \"btMinMax.h\"\n\nnamespace\n{\n  btScalar abs_column_sum(const btMatrix3x3& a, int i)\n  {\n    return btFabs(a[0][i]) + btFabs(a[1][i]) + btFabs(a[2][i]);\n  }\n\n  btScalar abs_row_sum(const btMatrix3x3& a, int i)\n  {\n    return btFabs(a[i][0]) + btFabs(a[i][1]) + btFabs(a[i][2]);\n  }\n\n  btScalar p1_norm(const btMatrix3x3& a)\n  {\n    const btScalar sum0 = abs_column_sum(a,0);\n    const btScalar sum1 = abs_column_sum(a,1);\n    const btScalar sum2 = abs_column_sum(a,2);\n    return btMax(btMax(sum0, sum1), sum2);\n  }\n\n  btScalar pinf_norm(const btMatrix3x3& a)\n  {\n    const btScalar sum0 = abs_row_sum(a,0);\n    const btScalar sum1 = abs_row_sum(a,1);\n    const btScalar sum2 = abs_row_sum(a,2);\n    return btMax(btMax(sum0, sum1), sum2);\n  }\n}\n\nconst btScalar btPolarDecomposition::DEFAULT_TOLERANCE = btScalar(0.0001);\nconst unsigned int btPolarDecomposition::DEFAULT_MAX_ITERATIONS = 16;\n\nbtPolarDecomposition::btPolarDecomposition(btScalar tolerance, unsigned int maxIterations)\n: m_tolerance(tolerance)\n, m_maxIterations(maxIterations)\n{\n}\n\nunsigned int btPolarDecomposition::decompose(const btMatrix3x3& a, btMatrix3x3& u, btMatrix3x3& h) const\n{\n  // Use the 'u' and 'h' matrices for intermediate calculations\n  u = a;\n  h = a.inverse();\n\n  for (unsigned int i = 0; i < m_maxIterations; ++i)\n  {\n    const btScalar h_1 = p1_norm(h);\n    const btScalar h_inf = pinf_norm(h);\n    const btScalar u_1 = p1_norm(u);\n    const btScalar u_inf = pinf_norm(u);\n\n    const btScalar h_norm = h_1 * h_inf;\n    const btScalar u_norm = u_1 * u_inf;\n\n    // The matrix is effectively singular so we cannot invert it\n    if (btFuzzyZero(h_norm) || btFuzzyZero(u_norm))\n      break;\n\n    const btScalar gamma = btPow(h_norm / u_norm, 0.25f);\n    const btScalar inv_gamma = 1.0 / gamma;\n\n    // Determine the delta to 'u'\n    const btMatrix3x3 delta = (u * (gamma - 2.0) + h.transpose() * inv_gamma) * 0.5;\n\n    // Update the matrices\n    u += delta;\n    h = u.inverse();\n\n    // Check for convergence\n    if (p1_norm(delta) <= m_tolerance * u_1)\n    {\n      h = u.transpose() * a;\n      h = (h + h.transpose()) * 0.5;\n      return i;\n    }\n  }\n\n  // The algorithm has failed to converge to the specified tolerance, but we\n  // want to make sure that the matrices returned are in the right form.\n  h = u.transpose() * a;\n  h = (h + h.transpose()) * 0.5;\n\n  return m_maxIterations;\n}\n\nunsigned int btPolarDecomposition::maxIterations() const\n{\n  return m_maxIterations;\n}\n\nunsigned int polarDecompose(const btMatrix3x3& a, btMatrix3x3& u, btMatrix3x3& h)\n{\n  static btPolarDecomposition polar;\n  return polar.decompose(a, u, h);\n}\n\n"
  },
  {
    "path": "Sources/NativeDAABBTree/LinearMath/btPolarDecomposition.h",
    "content": "#ifndef POLARDECOMPOSITION_H\n#define POLARDECOMPOSITION_H\n\n#include \"btMatrix3x3.h\"\n\n/**\n * This class is used to compute the polar decomposition of a matrix. In\n * general, the polar decomposition factorizes a matrix, A, into two parts: a\n * unitary matrix (U) and a positive, semi-definite Hermitian matrix (H).\n * However, in this particular implementation the original matrix, A, is\n * required to be a square 3x3 matrix with real elements. This means that U will\n * be an orthogonal matrix and H with be a positive-definite, symmetric matrix.\n */\nclass btPolarDecomposition\n{\n  public:\n    static const btScalar DEFAULT_TOLERANCE;\n    static const unsigned int DEFAULT_MAX_ITERATIONS;\n\n    /**\n     * Creates an instance with optional parameters.\n     *\n     * @param tolerance     - the tolerance used to determine convergence of the\n     *                        algorithm\n     * @param maxIterations - the maximum number of iterations used to achieve\n     *                        convergence\n     */\n    btPolarDecomposition(btScalar tolerance = DEFAULT_TOLERANCE, \n      unsigned int maxIterations = DEFAULT_MAX_ITERATIONS);\n\n    /**\n     * Decomposes a matrix into orthogonal and symmetric, positive-definite\n     * parts. If the number of iterations returned by this function is equal to\n     * the maximum number of iterations, the algorithm has failed to converge.\n     *\n     * @param a - the original matrix\n     * @param u - the resulting orthogonal matrix\n     * @param h - the resulting symmetric matrix\n     *\n     * @return the number of iterations performed by the algorithm.\n     */\n    unsigned int decompose(const btMatrix3x3& a, btMatrix3x3& u, btMatrix3x3& h) const; \n\n    /**\n     * Returns the maximum number of iterations that this algorithm will perform\n     * to achieve convergence.\n     *\n     * @return maximum number of iterations\n     */\n    unsigned int maxIterations() const;\n\n  private:\n    btScalar m_tolerance;\n    unsigned int m_maxIterations;\n};\n\n/**\n * This functions decomposes the matrix 'a' into two parts: an orthogonal matrix\n * 'u' and a symmetric, positive-definite matrix 'h'. If the number of\n * iterations returned by this function is equal to\n * btPolarDecomposition::DEFAULT_MAX_ITERATIONS, the algorithm has failed to\n * converge.\n *\n * @param a - the original matrix\n * @param u - the resulting orthogonal matrix\n * @param h - the resulting symmetric matrix\n *\n * @return the number of iterations performed by the algorithm.\n */\nunsigned int polarDecompose(const btMatrix3x3& a, btMatrix3x3& u, btMatrix3x3& h); \n\n#endif // POLARDECOMPOSITION_H\n\n"
  },
  {
    "path": "Sources/NativeDAABBTree/LinearMath/btPoolAllocator.h",
    "content": "/*\nCopyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n\n#ifndef _BT_POOL_ALLOCATOR_H\n#define _BT_POOL_ALLOCATOR_H\n\n#include \"btScalar.h\"\n#include \"btAlignedAllocator.h\"\n\n///The btPoolAllocator class allows to efficiently allocate a large pool of objects, instead of dynamically allocating them separately.\nclass btPoolAllocator\n{\n\tint\t\t\t\tm_elemSize;\n\tint\t\t\t\tm_maxElements;\n\tint\t\t\t\tm_freeCount;\n\tvoid*\t\t\tm_firstFree;\n\tunsigned char*\tm_pool;\n\npublic:\n\n\tbtPoolAllocator(int elemSize, int maxElements)\n\t\t:m_elemSize(elemSize),\n\t\tm_maxElements(maxElements)\n\t{\n\t\tm_pool = (unsigned char*) btAlignedAlloc( static_cast<unsigned int>(m_elemSize*m_maxElements),16);\n\n\t\tunsigned char* p = m_pool;\n        m_firstFree = p;\n        m_freeCount = m_maxElements;\n        int count = m_maxElements;\n        while (--count) {\n            *(void**)p = (p + m_elemSize);\n            p += m_elemSize;\n        }\n        *(void**)p = 0;\n    }\n\n\t~btPoolAllocator()\n\t{\n\t\tbtAlignedFree( m_pool);\n\t}\n\n\tint\tgetFreeCount() const\n\t{\n\t\treturn m_freeCount;\n\t}\n\n\tint getUsedCount() const\n\t{\n\t\treturn m_maxElements - m_freeCount;\n\t}\n\n\tint getMaxCount() const\n\t{\n\t\treturn m_maxElements;\n\t}\n\n\tvoid*\tallocate(int size)\n\t{\n\t\t// release mode fix\n\t\t(void)size;\n\t\tbtAssert(!size || size<=m_elemSize);\n\t\tbtAssert(m_freeCount>0);\n        void* result = m_firstFree;\n        m_firstFree = *(void**)m_firstFree;\n        --m_freeCount;\n        return result;\n\t}\n\n\tbool validPtr(void* ptr)\n\t{\n\t\tif (ptr) {\n\t\t\tif (((unsigned char*)ptr >= m_pool && (unsigned char*)ptr < m_pool + m_maxElements * m_elemSize))\n\t\t\t{\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\tvoid\tfreeMemory(void* ptr)\n\t{\n\t\t if (ptr) {\n            btAssert((unsigned char*)ptr >= m_pool && (unsigned char*)ptr < m_pool + m_maxElements * m_elemSize);\n\n            *(void**)ptr = m_firstFree;\n            m_firstFree = ptr;\n            ++m_freeCount;\n        }\n\t}\n\n\tint\tgetElementSize() const\n\t{\n\t\treturn m_elemSize;\n\t}\n\n\tunsigned char*\tgetPoolAddress()\n\t{\n\t\treturn m_pool;\n\t}\n\n\tconst unsigned char*\tgetPoolAddress() const\n\t{\n\t\treturn m_pool;\n\t}\n\n};\n\n#endif //_BT_POOL_ALLOCATOR_H\n"
  },
  {
    "path": "Sources/NativeDAABBTree/LinearMath/btQuadWord.h",
    "content": "/*\nCopyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n\n#ifndef BT_SIMD_QUADWORD_H\n#define BT_SIMD_QUADWORD_H\n\n#include \"btScalar.h\"\n#include \"btMinMax.h\"\n\n\n\n\n\n#if defined (__CELLOS_LV2) && defined (__SPU__)\n#include <altivec.h>\n#endif\n\n/**@brief The btQuadWord class is base class for btVector3 and btQuaternion. \n * Some issues under PS3 Linux with IBM 2.1 SDK, gcc compiler prevent from using aligned quadword.\n */\n#ifndef USE_LIBSPE2\nATTRIBUTE_ALIGNED16(class) btQuadWord\n#else\nclass btQuadWord\n#endif\n{\nprotected:\n\n#if defined (__SPU__) && defined (__CELLOS_LV2__)\n\tunion {\n\t\tvec_float4 mVec128;\n\t\tbtScalar\tm_floats[4];\n\t};\npublic:\n\tvec_float4\tget128() const\n\t{\n\t\treturn mVec128;\n\t}\nprotected:\n#else //__CELLOS_LV2__ __SPU__\n\n#if defined(BT_USE_SSE) || defined(BT_USE_NEON) \n\tunion {\n\t\tbtSimdFloat4 mVec128;\n\t\tbtScalar\tm_floats[4];\n\t};\npublic:\n\tSIMD_FORCE_INLINE\tbtSimdFloat4\tget128() const\n\t{\n\t\treturn mVec128;\n\t}\n\tSIMD_FORCE_INLINE\tvoid\tset128(btSimdFloat4 v128)\n\t{\n\t\tmVec128 = v128;\n\t}\n#else\n\tbtScalar\tm_floats[4];\n#endif // BT_USE_SSE\n\n#endif //__CELLOS_LV2__ __SPU__\n\n\tpublic:\n  \n#if defined(BT_USE_SSE) || defined(BT_USE_NEON)\n\n\t// Set Vector \n\tSIMD_FORCE_INLINE btQuadWord(const btSimdFloat4 vec)\n\t{\n\t\tmVec128 = vec;\n\t}\n\n\t// Copy constructor\n\tSIMD_FORCE_INLINE btQuadWord(const btQuadWord& rhs)\n\t{\n\t\tmVec128 = rhs.mVec128;\n\t}\n\n\t// Assignment Operator\n\tSIMD_FORCE_INLINE btQuadWord& \n\toperator=(const btQuadWord& v) \n\t{\n\t\tmVec128 = v.mVec128;\n\t\t\n\t\treturn *this;\n\t}\n\t\n#endif\n\n  /**@brief Return the x value */\n\t\tSIMD_FORCE_INLINE const btScalar& getX() const { return m_floats[0]; }\n  /**@brief Return the y value */\n\t\tSIMD_FORCE_INLINE const btScalar& getY() const { return m_floats[1]; }\n  /**@brief Return the z value */\n\t\tSIMD_FORCE_INLINE const btScalar& getZ() const { return m_floats[2]; }\n  /**@brief Set the x value */\n\t\tSIMD_FORCE_INLINE void\tsetX(btScalar _x) { m_floats[0] = _x;};\n  /**@brief Set the y value */\n\t\tSIMD_FORCE_INLINE void\tsetY(btScalar _y) { m_floats[1] = _y;};\n  /**@brief Set the z value */\n\t\tSIMD_FORCE_INLINE void\tsetZ(btScalar _z) { m_floats[2] = _z;};\n  /**@brief Set the w value */\n\t\tSIMD_FORCE_INLINE void\tsetW(btScalar _w) { m_floats[3] = _w;};\n  /**@brief Return the x value */\n\t\tSIMD_FORCE_INLINE const btScalar& x() const { return m_floats[0]; }\n  /**@brief Return the y value */\n\t\tSIMD_FORCE_INLINE const btScalar& y() const { return m_floats[1]; }\n  /**@brief Return the z value */\n\t\tSIMD_FORCE_INLINE const btScalar& z() const { return m_floats[2]; }\n  /**@brief Return the w value */\n\t\tSIMD_FORCE_INLINE const btScalar& w() const { return m_floats[3]; }\n\n\t//SIMD_FORCE_INLINE btScalar&       operator[](int i)       { return (&m_floats[0])[i];\t}      \n\t//SIMD_FORCE_INLINE const btScalar& operator[](int i) const { return (&m_floats[0])[i]; }\n\t///operator btScalar*() replaces operator[], using implicit conversion. We added operator != and operator == to avoid pointer comparisons.\n\tSIMD_FORCE_INLINE\toperator       btScalar *()       { return &m_floats[0]; }\n\tSIMD_FORCE_INLINE\toperator const btScalar *() const { return &m_floats[0]; }\n\n\tSIMD_FORCE_INLINE\tbool\toperator==(const btQuadWord& other) const\n\t{\n#ifdef BT_USE_SSE\n        return (0xf == _mm_movemask_ps((__m128)_mm_cmpeq_ps(mVec128, other.mVec128)));\n#else \n\t\treturn ((m_floats[3]==other.m_floats[3]) && \n                (m_floats[2]==other.m_floats[2]) && \n                (m_floats[1]==other.m_floats[1]) && \n                (m_floats[0]==other.m_floats[0]));\n#endif\n\t}\n\n\tSIMD_FORCE_INLINE\tbool\toperator!=(const btQuadWord& other) const\n\t{\n\t\treturn !(*this == other);\n\t}\n\n  /**@brief Set x,y,z and zero w \n   * @param x Value of x\n   * @param y Value of y\n   * @param z Value of z\n   */\n\t\tSIMD_FORCE_INLINE void \tsetValue(const btScalar& _x, const btScalar& _y, const btScalar& _z)\n\t\t{\n\t\t\tm_floats[0]=_x;\n\t\t\tm_floats[1]=_y;\n\t\t\tm_floats[2]=_z;\n\t\t\tm_floats[3] = 0.f;\n\t\t}\n\n/*\t\tvoid getValue(btScalar *m) const \n\t\t{\n\t\t\tm[0] = m_floats[0];\n\t\t\tm[1] = m_floats[1];\n\t\t\tm[2] = m_floats[2];\n\t\t}\n*/\n/**@brief Set the values \n   * @param x Value of x\n   * @param y Value of y\n   * @param z Value of z\n   * @param w Value of w\n   */\n\t\tSIMD_FORCE_INLINE void\tsetValue(const btScalar& _x, const btScalar& _y, const btScalar& _z,const btScalar& _w)\n\t\t{\n\t\t\tm_floats[0]=_x;\n\t\t\tm_floats[1]=_y;\n\t\t\tm_floats[2]=_z;\n\t\t\tm_floats[3]=_w;\n\t\t}\n  /**@brief No initialization constructor */\n\t\tSIMD_FORCE_INLINE btQuadWord()\n\t\t//\t:m_floats[0](btScalar(0.)),m_floats[1](btScalar(0.)),m_floats[2](btScalar(0.)),m_floats[3](btScalar(0.))\n\t\t{\n\t\t}\n \n  /**@brief Three argument constructor (zeros w)\n   * @param x Value of x\n   * @param y Value of y\n   * @param z Value of z\n   */\n\t\tSIMD_FORCE_INLINE btQuadWord(const btScalar& _x, const btScalar& _y, const btScalar& _z)\t\t\n\t\t{\n\t\t\tm_floats[0] = _x, m_floats[1] = _y, m_floats[2] = _z, m_floats[3] = 0.0f;\n\t\t}\n\n/**@brief Initializing constructor\n   * @param x Value of x\n   * @param y Value of y\n   * @param z Value of z\n   * @param w Value of w\n   */\n\t\tSIMD_FORCE_INLINE btQuadWord(const btScalar& _x, const btScalar& _y, const btScalar& _z,const btScalar& _w) \n\t\t{\n\t\t\tm_floats[0] = _x, m_floats[1] = _y, m_floats[2] = _z, m_floats[3] = _w;\n\t\t}\n\n  /**@brief Set each element to the max of the current values and the values of another btQuadWord\n   * @param other The other btQuadWord to compare with \n   */\n\t\tSIMD_FORCE_INLINE void\tsetMax(const btQuadWord& other)\n\t\t{\n        #ifdef BT_USE_SSE\n            mVec128 = _mm_max_ps(mVec128, other.mVec128);\n        #elif defined(BT_USE_NEON)\n            mVec128 = vmaxq_f32(mVec128, other.mVec128);\n        #else\n        \tbtSetMax(m_floats[0], other.m_floats[0]);\n\t\t\tbtSetMax(m_floats[1], other.m_floats[1]);\n\t\t\tbtSetMax(m_floats[2], other.m_floats[2]);\n\t\t\tbtSetMax(m_floats[3], other.m_floats[3]);\n\t\t#endif\n        }\n  /**@brief Set each element to the min of the current values and the values of another btQuadWord\n   * @param other The other btQuadWord to compare with \n   */\n\t\tSIMD_FORCE_INLINE void\tsetMin(const btQuadWord& other)\n\t\t{\n        #ifdef BT_USE_SSE\n            mVec128 = _mm_min_ps(mVec128, other.mVec128);\n        #elif defined(BT_USE_NEON)\n            mVec128 = vminq_f32(mVec128, other.mVec128);\n        #else\n        \tbtSetMin(m_floats[0], other.m_floats[0]);\n\t\t\tbtSetMin(m_floats[1], other.m_floats[1]);\n\t\t\tbtSetMin(m_floats[2], other.m_floats[2]);\n\t\t\tbtSetMin(m_floats[3], other.m_floats[3]);\n\t\t#endif\n        }\n\n\n\n};\n\n#endif //BT_SIMD_QUADWORD_H\n"
  },
  {
    "path": "Sources/NativeDAABBTree/LinearMath/btQuaternion.h",
    "content": "/*\nCopyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n\n\n#ifndef BT_SIMD__QUATERNION_H_\n#define BT_SIMD__QUATERNION_H_\n\n\n#include \"btVector3.h\"\n#include \"btQuadWord.h\"\n\n\n\n\n\n#ifdef BT_USE_SSE\n\nconst __m128 ATTRIBUTE_ALIGNED16(vOnes) = {1.0f, 1.0f, 1.0f, 1.0f};\n\n#endif\n\n#if defined(BT_USE_SSE) || defined(BT_USE_NEON)\n\nconst btSimdFloat4 ATTRIBUTE_ALIGNED16(vQInv) = {-0.0f, -0.0f, -0.0f, +0.0f};\nconst btSimdFloat4 ATTRIBUTE_ALIGNED16(vPPPM) = {+0.0f, +0.0f, +0.0f, -0.0f};\n\n#endif\n\n/**@brief The btQuaternion implements quaternion to perform linear algebra rotations in combination with btMatrix3x3, btVector3 and btTransform. */\nclass btQuaternion : public btQuadWord {\npublic:\n  /**@brief No initialization constructor */\n\tbtQuaternion() {}\n\n#if (defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE))|| defined(BT_USE_NEON) \n\t// Set Vector \n\tSIMD_FORCE_INLINE btQuaternion(const btSimdFloat4 vec)\n\t{\n\t\tmVec128 = vec;\n\t}\n\n\t// Copy constructor\n\tSIMD_FORCE_INLINE btQuaternion(const btQuaternion& rhs)\n\t{\n\t\tmVec128 = rhs.mVec128;\n\t}\n\n\t// Assignment Operator\n\tSIMD_FORCE_INLINE btQuaternion& \n\toperator=(const btQuaternion& v) \n\t{\n\t\tmVec128 = v.mVec128;\n\t\t\n\t\treturn *this;\n\t}\n\t\n#endif\n\n\t//\t\ttemplate <typename btScalar>\n\t//\t\texplicit Quaternion(const btScalar *v) : Tuple4<btScalar>(v) {}\n  /**@brief Constructor from scalars */\n\tbtQuaternion(const btScalar& _x, const btScalar& _y, const btScalar& _z, const btScalar& _w) \n\t\t: btQuadWord(_x, _y, _z, _w) \n\t{}\n  /**@brief Axis angle Constructor\n   * @param axis The axis which the rotation is around\n   * @param angle The magnitude of the rotation around the angle (Radians) */\n\tbtQuaternion(const btVector3& _axis, const btScalar& _angle) \n\t{ \n\t\tsetRotation(_axis, _angle); \n\t}\n  /**@brief Constructor from Euler angles\n   * @param yaw Angle around Y unless BT_EULER_DEFAULT_ZYX defined then Z\n   * @param pitch Angle around X unless BT_EULER_DEFAULT_ZYX defined then Y\n   * @param roll Angle around Z unless BT_EULER_DEFAULT_ZYX defined then X */\n\tbtQuaternion(const btScalar& yaw, const btScalar& pitch, const btScalar& roll)\n\t{ \n#ifndef BT_EULER_DEFAULT_ZYX\n\t\tsetEuler(yaw, pitch, roll); \n#else\n\t\tsetEulerZYX(yaw, pitch, roll); \n#endif \n\t}\n  /**@brief Set the rotation using axis angle notation \n   * @param axis The axis around which to rotate\n   * @param angle The magnitude of the rotation in Radians */\n\tvoid setRotation(const btVector3& axis, const btScalar& _angle)\n\t{\n\t\tbtScalar d = axis.length();\n\t\tbtAssert(d != btScalar(0.0));\n\t\tbtScalar s = btSin(_angle * btScalar(0.5)) / d;\n\t\tsetValue(axis.x() * s, axis.y() * s, axis.z() * s, \n\t\t\tbtCos(_angle * btScalar(0.5)));\n\t}\n  /**@brief Set the quaternion using Euler angles\n   * @param yaw Angle around Y\n   * @param pitch Angle around X\n   * @param roll Angle around Z */\n\tvoid setEuler(const btScalar& yaw, const btScalar& pitch, const btScalar& roll)\n\t{\n\t\tbtScalar halfYaw = btScalar(yaw) * btScalar(0.5);  \n\t\tbtScalar halfPitch = btScalar(pitch) * btScalar(0.5);  \n\t\tbtScalar halfRoll = btScalar(roll) * btScalar(0.5);  \n\t\tbtScalar cosYaw = btCos(halfYaw);\n\t\tbtScalar sinYaw = btSin(halfYaw);\n\t\tbtScalar cosPitch = btCos(halfPitch);\n\t\tbtScalar sinPitch = btSin(halfPitch);\n\t\tbtScalar cosRoll = btCos(halfRoll);\n\t\tbtScalar sinRoll = btSin(halfRoll);\n\t\tsetValue(cosRoll * sinPitch * cosYaw + sinRoll * cosPitch * sinYaw,\n\t\t\tcosRoll * cosPitch * sinYaw - sinRoll * sinPitch * cosYaw,\n\t\t\tsinRoll * cosPitch * cosYaw - cosRoll * sinPitch * sinYaw,\n\t\t\tcosRoll * cosPitch * cosYaw + sinRoll * sinPitch * sinYaw);\n\t}\n  /**@brief Set the quaternion using euler angles \n   * @param yaw Angle around Z\n   * @param pitch Angle around Y\n   * @param roll Angle around X */\n\tvoid setEulerZYX(const btScalar& yaw, const btScalar& pitch, const btScalar& roll)\n\t{\n\t\tbtScalar halfYaw = btScalar(yaw) * btScalar(0.5);  \n\t\tbtScalar halfPitch = btScalar(pitch) * btScalar(0.5);  \n\t\tbtScalar halfRoll = btScalar(roll) * btScalar(0.5);  \n\t\tbtScalar cosYaw = btCos(halfYaw);\n\t\tbtScalar sinYaw = btSin(halfYaw);\n\t\tbtScalar cosPitch = btCos(halfPitch);\n\t\tbtScalar sinPitch = btSin(halfPitch);\n\t\tbtScalar cosRoll = btCos(halfRoll);\n\t\tbtScalar sinRoll = btSin(halfRoll);\n\t\tsetValue(sinRoll * cosPitch * cosYaw - cosRoll * sinPitch * sinYaw, //x\n                         cosRoll * sinPitch * cosYaw + sinRoll * cosPitch * sinYaw, //y\n                         cosRoll * cosPitch * sinYaw - sinRoll * sinPitch * cosYaw, //z\n                         cosRoll * cosPitch * cosYaw + sinRoll * sinPitch * sinYaw); //formerly yzx\n\t}\n  /**@brief Add two quaternions\n   * @param q The quaternion to add to this one */\n\tSIMD_FORCE_INLINE\tbtQuaternion& operator+=(const btQuaternion& q)\n\t{\n#if defined (BT_USE_SSE_IN_API) && defined (BT_USE_SSE)\n\t\tmVec128 = _mm_add_ps(mVec128, q.mVec128);\n#elif defined(BT_USE_NEON)\n\t\tmVec128 = vaddq_f32(mVec128, q.mVec128);\n#else\t\n\t\tm_floats[0] += q.x(); \n        m_floats[1] += q.y(); \n        m_floats[2] += q.z(); \n        m_floats[3] += q.m_floats[3];\n#endif\n\t\treturn *this;\n\t}\n\n  /**@brief Subtract out a quaternion\n   * @param q The quaternion to subtract from this one */\n\tbtQuaternion& operator-=(const btQuaternion& q) \n\t{\n#if defined (BT_USE_SSE_IN_API) && defined (BT_USE_SSE)\n\t\tmVec128 = _mm_sub_ps(mVec128, q.mVec128);\n#elif defined(BT_USE_NEON)\n\t\tmVec128 = vsubq_f32(mVec128, q.mVec128);\n#else\t\n\t\tm_floats[0] -= q.x(); \n        m_floats[1] -= q.y(); \n        m_floats[2] -= q.z(); \n        m_floats[3] -= q.m_floats[3];\n#endif\n        return *this;\n\t}\n\n  /**@brief Scale this quaternion\n   * @param s The scalar to scale by */\n\tbtQuaternion& operator*=(const btScalar& s)\n\t{\n#if defined (BT_USE_SSE_IN_API) && defined (BT_USE_SSE)\n\t\t__m128\tvs = _mm_load_ss(&s);\t//\t(S 0 0 0)\n\t\tvs = bt_pshufd_ps(vs, 0);\t//\t(S S S S)\n\t\tmVec128 = _mm_mul_ps(mVec128, vs);\n#elif defined(BT_USE_NEON)\n\t\tmVec128 = vmulq_n_f32(mVec128, s);\n#else\n\t\tm_floats[0] *= s; \n        m_floats[1] *= s; \n        m_floats[2] *= s; \n        m_floats[3] *= s;\n#endif\n\t\treturn *this;\n\t}\n\n  /**@brief Multiply this quaternion by q on the right\n   * @param q The other quaternion \n   * Equivilant to this = this * q */\n\tbtQuaternion& operator*=(const btQuaternion& q)\n\t{\n#if defined (BT_USE_SSE_IN_API) && defined (BT_USE_SSE)\n\t\t__m128 vQ2 = q.get128();\n\t\t\n\t\t__m128 A1 = bt_pshufd_ps(mVec128, BT_SHUFFLE(0,1,2,0));\n\t\t__m128 B1 = bt_pshufd_ps(vQ2, BT_SHUFFLE(3,3,3,0));\n\t\t\n\t\tA1 = A1 * B1;\n\t\t\n\t\t__m128 A2 = bt_pshufd_ps(mVec128, BT_SHUFFLE(1,2,0,1));\n\t\t__m128 B2 = bt_pshufd_ps(vQ2, BT_SHUFFLE(2,0,1,1));\n\t\t\n\t\tA2 = A2 * B2;\n\t\t\n\t\tB1 = bt_pshufd_ps(mVec128, BT_SHUFFLE(2,0,1,2));\n\t\tB2 = bt_pshufd_ps(vQ2, BT_SHUFFLE(1,2,0,2));\n\t\t\n\t\tB1 = B1 * B2;\t//\tA3 *= B3\n\t\t\n\t\tmVec128 = bt_splat_ps(mVec128, 3);\t//\tA0\n\t\tmVec128 = mVec128 * vQ2;\t//\tA0 * B0\n\t\t\n\t\tA1 = A1 + A2;\t//\tAB12\n\t\tmVec128 = mVec128 - B1;\t//\tAB03 = AB0 - AB3 \n\t\tA1 = _mm_xor_ps(A1, vPPPM);\t//\tchange sign of the last element\n\t\tmVec128 = mVec128+ A1;\t//\tAB03 + AB12\n\n#elif defined(BT_USE_NEON)     \n\n        float32x4_t vQ1 = mVec128;\n        float32x4_t vQ2 = q.get128();\n        float32x4_t A0, A1, B1, A2, B2, A3, B3;\n        float32x2_t vQ1zx, vQ2wx, vQ1yz, vQ2zx, vQ2yz, vQ2xz;\n        \n        {\n        float32x2x2_t tmp;\n        tmp = vtrn_f32( vget_high_f32(vQ1), vget_low_f32(vQ1) );       // {z x}, {w y}\n        vQ1zx = tmp.val[0];\n\n        tmp = vtrn_f32( vget_high_f32(vQ2), vget_low_f32(vQ2) );       // {z x}, {w y}\n        vQ2zx = tmp.val[0];\n        }\n        vQ2wx = vext_f32(vget_high_f32(vQ2), vget_low_f32(vQ2), 1); \n\n        vQ1yz = vext_f32(vget_low_f32(vQ1), vget_high_f32(vQ1), 1);\n\n        vQ2yz = vext_f32(vget_low_f32(vQ2), vget_high_f32(vQ2), 1);\n        vQ2xz = vext_f32(vQ2zx, vQ2zx, 1);\n\n        A1 = vcombine_f32(vget_low_f32(vQ1), vQ1zx);                    // X Y  z x \n        B1 = vcombine_f32(vdup_lane_f32(vget_high_f32(vQ2), 1), vQ2wx); // W W  W X \n\n        A2 = vcombine_f32(vQ1yz, vget_low_f32(vQ1));\n        B2 = vcombine_f32(vQ2zx, vdup_lane_f32(vget_low_f32(vQ2), 1));\n\n        A3 = vcombine_f32(vQ1zx, vQ1yz);        // Z X Y Z\n        B3 = vcombine_f32(vQ2yz, vQ2xz);        // Y Z x z\n\n        A1 = vmulq_f32(A1, B1);\n        A2 = vmulq_f32(A2, B2);\n        A3 = vmulq_f32(A3, B3);\t//\tA3 *= B3\n        A0 = vmulq_lane_f32(vQ2, vget_high_f32(vQ1), 1); //\tA0 * B0\n\n        A1 = vaddq_f32(A1, A2);\t//\tAB12 = AB1 + AB2\n        A0 = vsubq_f32(A0, A3);\t//\tAB03 = AB0 - AB3 \n        \n        //\tchange the sign of the last element\n        A1 = (btSimdFloat4)veorq_s32((int32x4_t)A1, (int32x4_t)vPPPM);\t\n        A0 = vaddq_f32(A0, A1);\t//\tAB03 + AB12\n        \n        mVec128 = A0;\n#else\n\t\tsetValue(\n            m_floats[3] * q.x() + m_floats[0] * q.m_floats[3] + m_floats[1] * q.z() - m_floats[2] * q.y(),\n\t\t\tm_floats[3] * q.y() + m_floats[1] * q.m_floats[3] + m_floats[2] * q.x() - m_floats[0] * q.z(),\n\t\t\tm_floats[3] * q.z() + m_floats[2] * q.m_floats[3] + m_floats[0] * q.y() - m_floats[1] * q.x(),\n\t\t\tm_floats[3] * q.m_floats[3] - m_floats[0] * q.x() - m_floats[1] * q.y() - m_floats[2] * q.z());\n#endif\n\t\treturn *this;\n\t}\n  /**@brief Return the dot product between this quaternion and another\n   * @param q The other quaternion */\n\tbtScalar dot(const btQuaternion& q) const\n\t{\n#if defined (BT_USE_SSE_IN_API) && defined (BT_USE_SSE)\n\t\t__m128\tvd;\n\t\t\n\t\tvd = _mm_mul_ps(mVec128, q.mVec128);\n\t\t\n        __m128 t = _mm_movehl_ps(vd, vd);\n\t\tvd = _mm_add_ps(vd, t);\n\t\tt = _mm_shuffle_ps(vd, vd, 0x55);\n\t\tvd = _mm_add_ss(vd, t);\n\t\t\n        return _mm_cvtss_f32(vd);\n#elif defined(BT_USE_NEON)\n\t\tfloat32x4_t vd = vmulq_f32(mVec128, q.mVec128);\n\t\tfloat32x2_t x = vpadd_f32(vget_low_f32(vd), vget_high_f32(vd));  \n\t\tx = vpadd_f32(x, x);\n\t\treturn vget_lane_f32(x, 0);\n#else    \n\t\treturn  m_floats[0] * q.x() + \n                m_floats[1] * q.y() + \n                m_floats[2] * q.z() + \n                m_floats[3] * q.m_floats[3];\n#endif\n\t}\n\n  /**@brief Return the length squared of the quaternion */\n\tbtScalar length2() const\n\t{\n\t\treturn dot(*this);\n\t}\n\n  /**@brief Return the length of the quaternion */\n\tbtScalar length() const\n\t{\n\t\treturn btSqrt(length2());\n\t}\n\n  /**@brief Normalize the quaternion \n   * Such that x^2 + y^2 + z^2 +w^2 = 1 */\n\tbtQuaternion& normalize() \n\t{\n#if defined (BT_USE_SSE_IN_API) && defined (BT_USE_SSE)\n\t\t__m128\tvd;\n\t\t\n\t\tvd = _mm_mul_ps(mVec128, mVec128);\n\t\t\n        __m128 t = _mm_movehl_ps(vd, vd);\n\t\tvd = _mm_add_ps(vd, t);\n\t\tt = _mm_shuffle_ps(vd, vd, 0x55);\n\t\tvd = _mm_add_ss(vd, t);\n\n\t\tvd = _mm_sqrt_ss(vd);\n\t\tvd = _mm_div_ss(vOnes, vd);\n        vd = bt_pshufd_ps(vd, 0); // splat\n\t\tmVec128 = _mm_mul_ps(mVec128, vd);\n    \n\t\treturn *this;\n#else    \n\t\treturn *this /= length();\n#endif\n\t}\n\n  /**@brief Return a scaled version of this quaternion\n   * @param s The scale factor */\n\tSIMD_FORCE_INLINE btQuaternion\n\toperator*(const btScalar& s) const\n\t{\n#if defined (BT_USE_SSE_IN_API) && defined (BT_USE_SSE)\n\t\t__m128\tvs = _mm_load_ss(&s);\t//\t(S 0 0 0)\n\t\tvs = bt_pshufd_ps(vs, 0x00);\t//\t(S S S S)\n\t\t\n\t\treturn btQuaternion(_mm_mul_ps(mVec128, vs));\n#elif defined(BT_USE_NEON)\n\t\treturn btQuaternion(vmulq_n_f32(mVec128, s));\n#else\n\t\treturn btQuaternion(x() * s, y() * s, z() * s, m_floats[3] * s);\n#endif\n\t}\n\n  /**@brief Return an inversely scaled versionof this quaternion\n   * @param s The inverse scale factor */\n\tbtQuaternion operator/(const btScalar& s) const\n\t{\n\t\tbtAssert(s != btScalar(0.0));\n\t\treturn *this * (btScalar(1.0) / s);\n\t}\n\n  /**@brief Inversely scale this quaternion\n   * @param s The scale factor */\n\tbtQuaternion& operator/=(const btScalar& s) \n\t{\n\t\tbtAssert(s != btScalar(0.0));\n\t\treturn *this *= btScalar(1.0) / s;\n\t}\n\n  /**@brief Return a normalized version of this quaternion */\n\tbtQuaternion normalized() const \n\t{\n\t\treturn *this / length();\n\t} \n  /**@brief Return the angle between this quaternion and the other \n   * @param q The other quaternion */\n\tbtScalar angle(const btQuaternion& q) const \n\t{\n\t\tbtScalar s = btSqrt(length2() * q.length2());\n\t\tbtAssert(s != btScalar(0.0));\n\t\treturn btAcos(dot(q) / s);\n\t}\n  /**@brief Return the angle of rotation represented by this quaternion */\n\tbtScalar getAngle() const \n\t{\n\t\tbtScalar s = btScalar(2.) * btAcos(m_floats[3]);\n\t\treturn s;\n\t}\n\n\t/**@brief Return the axis of the rotation represented by this quaternion */\n\tbtVector3 getAxis() const\n\t{\n\t\tbtScalar s_squared = 1.f-m_floats[3]*m_floats[3];\n\t\t\n\t\tif (s_squared < btScalar(10.) * SIMD_EPSILON) //Check for divide by zero\n\t\t\treturn btVector3(1.0, 0.0, 0.0);  // Arbitrary\n\t\tbtScalar s = 1.f/btSqrt(s_squared);\n\t\treturn btVector3(m_floats[0] * s, m_floats[1] * s, m_floats[2] * s);\n\t}\n\n\t/**@brief Return the inverse of this quaternion */\n\tbtQuaternion inverse() const\n\t{\n#if defined (BT_USE_SSE_IN_API) && defined (BT_USE_SSE)\n\t\treturn btQuaternion(_mm_xor_ps(mVec128, vQInv));\n#elif defined(BT_USE_NEON)\n        return btQuaternion((btSimdFloat4)veorq_s32((int32x4_t)mVec128, (int32x4_t)vQInv));\n#else\t\n\t\treturn btQuaternion(-m_floats[0], -m_floats[1], -m_floats[2], m_floats[3]);\n#endif\n\t}\n\n  /**@brief Return the sum of this quaternion and the other \n   * @param q2 The other quaternion */\n\tSIMD_FORCE_INLINE btQuaternion\n\toperator+(const btQuaternion& q2) const\n\t{\n#if defined (BT_USE_SSE_IN_API) && defined (BT_USE_SSE)\n\t\treturn btQuaternion(_mm_add_ps(mVec128, q2.mVec128));\n#elif defined(BT_USE_NEON)\n        return btQuaternion(vaddq_f32(mVec128, q2.mVec128));\n#else\t\n\t\tconst btQuaternion& q1 = *this;\n\t\treturn btQuaternion(q1.x() + q2.x(), q1.y() + q2.y(), q1.z() + q2.z(), q1.m_floats[3] + q2.m_floats[3]);\n#endif\n\t}\n\n  /**@brief Return the difference between this quaternion and the other \n   * @param q2 The other quaternion */\n\tSIMD_FORCE_INLINE btQuaternion\n\toperator-(const btQuaternion& q2) const\n\t{\n#if defined (BT_USE_SSE_IN_API) && defined (BT_USE_SSE)\n\t\treturn btQuaternion(_mm_sub_ps(mVec128, q2.mVec128));\n#elif defined(BT_USE_NEON)\n        return btQuaternion(vsubq_f32(mVec128, q2.mVec128));\n#else\t\n\t\tconst btQuaternion& q1 = *this;\n\t\treturn btQuaternion(q1.x() - q2.x(), q1.y() - q2.y(), q1.z() - q2.z(), q1.m_floats[3] - q2.m_floats[3]);\n#endif\n\t}\n\n  /**@brief Return the negative of this quaternion \n   * This simply negates each element */\n\tSIMD_FORCE_INLINE btQuaternion operator-() const\n\t{\n#if defined (BT_USE_SSE_IN_API) && defined (BT_USE_SSE)\n\t\treturn btQuaternion(_mm_xor_ps(mVec128, btvMzeroMask));\n#elif defined(BT_USE_NEON)\n\t\treturn btQuaternion((btSimdFloat4)veorq_s32((int32x4_t)mVec128, (int32x4_t)btvMzeroMask) );\n#else\t\n\t\tconst btQuaternion& q2 = *this;\n\t\treturn btQuaternion( - q2.x(), - q2.y(),  - q2.z(),  - q2.m_floats[3]);\n#endif\n\t}\n  /**@todo document this and it's use */\n\tSIMD_FORCE_INLINE btQuaternion farthest( const btQuaternion& qd) const \n\t{\n\t\tbtQuaternion diff,sum;\n\t\tdiff = *this - qd;\n\t\tsum = *this + qd;\n\t\tif( diff.dot(diff) > sum.dot(sum) )\n\t\t\treturn qd;\n\t\treturn (-qd);\n\t}\n\n\t/**@todo document this and it's use */\n\tSIMD_FORCE_INLINE btQuaternion nearest( const btQuaternion& qd) const \n\t{\n\t\tbtQuaternion diff,sum;\n\t\tdiff = *this - qd;\n\t\tsum = *this + qd;\n\t\tif( diff.dot(diff) < sum.dot(sum) )\n\t\t\treturn qd;\n\t\treturn (-qd);\n\t}\n\n\n  /**@brief Return the quaternion which is the result of Spherical Linear Interpolation between this and the other quaternion\n   * @param q The other quaternion to interpolate with \n   * @param t The ratio between this and q to interpolate.  If t = 0 the result is this, if t=1 the result is q.\n   * Slerp interpolates assuming constant velocity.  */\n\tbtQuaternion slerp(const btQuaternion& q, const btScalar& t) const\n\t{\n\t  btScalar magnitude = btSqrt(length2() * q.length2()); \n\t  btAssert(magnitude > btScalar(0));\n\n    btScalar product = dot(q) / magnitude;\n    if (btFabs(product) != btScalar(1))\n\t\t{\n      // Take care of long angle case see http://en.wikipedia.org/wiki/Slerp\n      const btScalar sign = (product < 0) ? btScalar(-1) : btScalar(1);\n\n      const btScalar theta = btAcos(sign * product);\n      const btScalar s1 = btSin(sign * t * theta);   \n      const btScalar d = btScalar(1.0) / btSin(theta);\n      const btScalar s0 = btSin((btScalar(1.0) - t) * theta);\n\n      return btQuaternion(\n          (m_floats[0] * s0 + q.x() * s1) * d,\n          (m_floats[1] * s0 + q.y() * s1) * d,\n          (m_floats[2] * s0 + q.z() * s1) * d,\n          (m_floats[3] * s0 + q.m_floats[3] * s1) * d);\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn *this;\n\t\t}\n\t}\n\n\tstatic const btQuaternion&\tgetIdentity()\n\t{\n\t\tstatic const btQuaternion identityQuat(btScalar(0.),btScalar(0.),btScalar(0.),btScalar(1.));\n\t\treturn identityQuat;\n\t}\n\n\tSIMD_FORCE_INLINE const btScalar& getW() const { return m_floats[3]; }\n\n\t\n};\n\n\n\n\n\n/**@brief Return the product of two quaternions */\nSIMD_FORCE_INLINE btQuaternion\noperator*(const btQuaternion& q1, const btQuaternion& q2) \n{\n#if defined (BT_USE_SSE_IN_API) && defined (BT_USE_SSE)\n\t__m128 vQ1 = q1.get128();\n\t__m128 vQ2 = q2.get128();\n\t__m128 A0, A1, B1, A2, B2;\n    \n\tA1 = bt_pshufd_ps(vQ1, BT_SHUFFLE(0,1,2,0)); // X Y  z x     //      vtrn\n\tB1 = bt_pshufd_ps(vQ2, BT_SHUFFLE(3,3,3,0)); // W W  W X     // vdup vext\n\n\tA1 = A1 * B1;\n\t\n\tA2 = bt_pshufd_ps(vQ1, BT_SHUFFLE(1,2,0,1)); // Y Z  X Y     // vext \n\tB2 = bt_pshufd_ps(vQ2, BT_SHUFFLE(2,0,1,1)); // z x  Y Y     // vtrn vdup\n\n\tA2 = A2 * B2;\n\n\tB1 = bt_pshufd_ps(vQ1, BT_SHUFFLE(2,0,1,2)); // z x Y Z      // vtrn vext\n\tB2 = bt_pshufd_ps(vQ2, BT_SHUFFLE(1,2,0,2)); // Y Z x z      // vext vtrn\n\t\n\tB1 = B1 * B2;\t//\tA3 *= B3\n\n\tA0 = bt_splat_ps(vQ1, 3);\t//\tA0\n\tA0 = A0 * vQ2;\t//\tA0 * B0\n\n\tA1 = A1 + A2;\t//\tAB12\n\tA0 =  A0 - B1;\t//\tAB03 = AB0 - AB3 \n\t\n    A1 = _mm_xor_ps(A1, vPPPM);\t//\tchange sign of the last element\n\tA0 = A0 + A1;\t//\tAB03 + AB12\n\t\n\treturn btQuaternion(A0);\n\n#elif defined(BT_USE_NEON)     \n\n\tfloat32x4_t vQ1 = q1.get128();\n\tfloat32x4_t vQ2 = q2.get128();\n\tfloat32x4_t A0, A1, B1, A2, B2, A3, B3;\n    float32x2_t vQ1zx, vQ2wx, vQ1yz, vQ2zx, vQ2yz, vQ2xz;\n    \n    {\n    float32x2x2_t tmp;\n    tmp = vtrn_f32( vget_high_f32(vQ1), vget_low_f32(vQ1) );       // {z x}, {w y}\n    vQ1zx = tmp.val[0];\n\n    tmp = vtrn_f32( vget_high_f32(vQ2), vget_low_f32(vQ2) );       // {z x}, {w y}\n    vQ2zx = tmp.val[0];\n    }\n    vQ2wx = vext_f32(vget_high_f32(vQ2), vget_low_f32(vQ2), 1); \n\n    vQ1yz = vext_f32(vget_low_f32(vQ1), vget_high_f32(vQ1), 1);\n\n    vQ2yz = vext_f32(vget_low_f32(vQ2), vget_high_f32(vQ2), 1);\n    vQ2xz = vext_f32(vQ2zx, vQ2zx, 1);\n\n    A1 = vcombine_f32(vget_low_f32(vQ1), vQ1zx);                    // X Y  z x \n    B1 = vcombine_f32(vdup_lane_f32(vget_high_f32(vQ2), 1), vQ2wx); // W W  W X \n\n\tA2 = vcombine_f32(vQ1yz, vget_low_f32(vQ1));\n    B2 = vcombine_f32(vQ2zx, vdup_lane_f32(vget_low_f32(vQ2), 1));\n\n    A3 = vcombine_f32(vQ1zx, vQ1yz);        // Z X Y Z\n    B3 = vcombine_f32(vQ2yz, vQ2xz);        // Y Z x z\n\n\tA1 = vmulq_f32(A1, B1);\n\tA2 = vmulq_f32(A2, B2);\n\tA3 = vmulq_f32(A3, B3);\t//\tA3 *= B3\n\tA0 = vmulq_lane_f32(vQ2, vget_high_f32(vQ1), 1); //\tA0 * B0\n\n\tA1 = vaddq_f32(A1, A2);\t//\tAB12 = AB1 + AB2\n\tA0 = vsubq_f32(A0, A3);\t//\tAB03 = AB0 - AB3 \n\t\n    //\tchange the sign of the last element\n    A1 = (btSimdFloat4)veorq_s32((int32x4_t)A1, (int32x4_t)vPPPM);\t\n\tA0 = vaddq_f32(A0, A1);\t//\tAB03 + AB12\n\t\n\treturn btQuaternion(A0);\n\n#else\n\treturn btQuaternion(\n        q1.w() * q2.x() + q1.x() * q2.w() + q1.y() * q2.z() - q1.z() * q2.y(),\n\t\tq1.w() * q2.y() + q1.y() * q2.w() + q1.z() * q2.x() - q1.x() * q2.z(),\n\t\tq1.w() * q2.z() + q1.z() * q2.w() + q1.x() * q2.y() - q1.y() * q2.x(),\n\t\tq1.w() * q2.w() - q1.x() * q2.x() - q1.y() * q2.y() - q1.z() * q2.z()); \n#endif\n}\n\nSIMD_FORCE_INLINE btQuaternion\noperator*(const btQuaternion& q, const btVector3& w)\n{\n#if defined (BT_USE_SSE_IN_API) && defined (BT_USE_SSE)\n\t__m128 vQ1 = q.get128();\n\t__m128 vQ2 = w.get128();\n\t__m128 A1, B1, A2, B2, A3, B3;\n\t\n\tA1 = bt_pshufd_ps(vQ1, BT_SHUFFLE(3,3,3,0));\n\tB1 = bt_pshufd_ps(vQ2, BT_SHUFFLE(0,1,2,0));\n\n\tA1 = A1 * B1;\n\t\n\tA2 = bt_pshufd_ps(vQ1, BT_SHUFFLE(1,2,0,1));\n\tB2 = bt_pshufd_ps(vQ2, BT_SHUFFLE(2,0,1,1));\n\n\tA2 = A2 * B2;\n\n\tA3 = bt_pshufd_ps(vQ1, BT_SHUFFLE(2,0,1,2));\n\tB3 = bt_pshufd_ps(vQ2, BT_SHUFFLE(1,2,0,2));\n\t\n\tA3 = A3 * B3;\t//\tA3 *= B3\n\n\tA1 = A1 + A2;\t//\tAB12\n\tA1 = _mm_xor_ps(A1, vPPPM);\t//\tchange sign of the last element\n    A1 = A1 - A3;\t//\tAB123 = AB12 - AB3 \n\t\n\treturn btQuaternion(A1);\n    \n#elif defined(BT_USE_NEON)     \n\n\tfloat32x4_t vQ1 = q.get128();\n\tfloat32x4_t vQ2 = w.get128();\n\tfloat32x4_t A1, B1, A2, B2, A3, B3;\n    float32x2_t vQ1wx, vQ2zx, vQ1yz, vQ2yz, vQ1zx, vQ2xz;\n    \n    vQ1wx = vext_f32(vget_high_f32(vQ1), vget_low_f32(vQ1), 1); \n    {\n    float32x2x2_t tmp;\n\n    tmp = vtrn_f32( vget_high_f32(vQ2), vget_low_f32(vQ2) );       // {z x}, {w y}\n    vQ2zx = tmp.val[0];\n\n    tmp = vtrn_f32( vget_high_f32(vQ1), vget_low_f32(vQ1) );       // {z x}, {w y}\n    vQ1zx = tmp.val[0];\n    }\n\n    vQ1yz = vext_f32(vget_low_f32(vQ1), vget_high_f32(vQ1), 1);\n\n    vQ2yz = vext_f32(vget_low_f32(vQ2), vget_high_f32(vQ2), 1);\n    vQ2xz = vext_f32(vQ2zx, vQ2zx, 1);\n\n    A1 = vcombine_f32(vdup_lane_f32(vget_high_f32(vQ1), 1), vQ1wx); // W W  W X \n    B1 = vcombine_f32(vget_low_f32(vQ2), vQ2zx);                    // X Y  z x \n\n\tA2 = vcombine_f32(vQ1yz, vget_low_f32(vQ1));\n    B2 = vcombine_f32(vQ2zx, vdup_lane_f32(vget_low_f32(vQ2), 1));\n\n    A3 = vcombine_f32(vQ1zx, vQ1yz);        // Z X Y Z\n    B3 = vcombine_f32(vQ2yz, vQ2xz);        // Y Z x z\n\n\tA1 = vmulq_f32(A1, B1);\n\tA2 = vmulq_f32(A2, B2);\n\tA3 = vmulq_f32(A3, B3);\t//\tA3 *= B3\n\n\tA1 = vaddq_f32(A1, A2);\t//\tAB12 = AB1 + AB2\n\t\n    //\tchange the sign of the last element\n    A1 = (btSimdFloat4)veorq_s32((int32x4_t)A1, (int32x4_t)vPPPM);\t\n\t\n    A1 = vsubq_f32(A1, A3);\t//\tAB123 = AB12 - AB3\n\t\n\treturn btQuaternion(A1);\n    \n#else\n\treturn btQuaternion( \n         q.w() * w.x() + q.y() * w.z() - q.z() * w.y(),\n\t\t q.w() * w.y() + q.z() * w.x() - q.x() * w.z(),\n\t\t q.w() * w.z() + q.x() * w.y() - q.y() * w.x(),\n\t\t-q.x() * w.x() - q.y() * w.y() - q.z() * w.z()); \n#endif\n}\n\nSIMD_FORCE_INLINE btQuaternion\noperator*(const btVector3& w, const btQuaternion& q)\n{\n#if defined (BT_USE_SSE_IN_API) && defined (BT_USE_SSE)\n\t__m128 vQ1 = w.get128();\n\t__m128 vQ2 = q.get128();\n\t__m128 A1, B1, A2, B2, A3, B3;\n\t\n\tA1 = bt_pshufd_ps(vQ1, BT_SHUFFLE(0,1,2,0));  // X Y  z x\n\tB1 = bt_pshufd_ps(vQ2, BT_SHUFFLE(3,3,3,0));  // W W  W X \n\n\tA1 = A1 * B1;\n\t\n\tA2 = bt_pshufd_ps(vQ1, BT_SHUFFLE(1,2,0,1));\n\tB2 = bt_pshufd_ps(vQ2, BT_SHUFFLE(2,0,1,1));\n\n\tA2 = A2 *B2;\n\n\tA3 = bt_pshufd_ps(vQ1, BT_SHUFFLE(2,0,1,2));\n\tB3 = bt_pshufd_ps(vQ2, BT_SHUFFLE(1,2,0,2));\n\t\n\tA3 = A3 * B3;\t//\tA3 *= B3\n\n\tA1 = A1 + A2;\t//\tAB12\n\tA1 = _mm_xor_ps(A1, vPPPM);\t//\tchange sign of the last element\n\tA1 = A1 - A3;\t//\tAB123 = AB12 - AB3 \n\t\n\treturn btQuaternion(A1);\n\n#elif defined(BT_USE_NEON)     \n\n\tfloat32x4_t vQ1 = w.get128();\n\tfloat32x4_t vQ2 = q.get128();\n\tfloat32x4_t  A1, B1, A2, B2, A3, B3;\n    float32x2_t vQ1zx, vQ2wx, vQ1yz, vQ2zx, vQ2yz, vQ2xz;\n    \n    {\n    float32x2x2_t tmp;\n   \n    tmp = vtrn_f32( vget_high_f32(vQ1), vget_low_f32(vQ1) );       // {z x}, {w y}\n    vQ1zx = tmp.val[0];\n\n    tmp = vtrn_f32( vget_high_f32(vQ2), vget_low_f32(vQ2) );       // {z x}, {w y}\n    vQ2zx = tmp.val[0];\n    }\n    vQ2wx = vext_f32(vget_high_f32(vQ2), vget_low_f32(vQ2), 1); \n\n    vQ1yz = vext_f32(vget_low_f32(vQ1), vget_high_f32(vQ1), 1);\n\n    vQ2yz = vext_f32(vget_low_f32(vQ2), vget_high_f32(vQ2), 1);\n    vQ2xz = vext_f32(vQ2zx, vQ2zx, 1);\n\n    A1 = vcombine_f32(vget_low_f32(vQ1), vQ1zx);                    // X Y  z x \n    B1 = vcombine_f32(vdup_lane_f32(vget_high_f32(vQ2), 1), vQ2wx); // W W  W X \n\n\tA2 = vcombine_f32(vQ1yz, vget_low_f32(vQ1));\n    B2 = vcombine_f32(vQ2zx, vdup_lane_f32(vget_low_f32(vQ2), 1));\n\n    A3 = vcombine_f32(vQ1zx, vQ1yz);        // Z X Y Z\n    B3 = vcombine_f32(vQ2yz, vQ2xz);        // Y Z x z\n\n\tA1 = vmulq_f32(A1, B1);\n\tA2 = vmulq_f32(A2, B2);\n\tA3 = vmulq_f32(A3, B3);\t//\tA3 *= B3\n\n\tA1 = vaddq_f32(A1, A2);\t//\tAB12 = AB1 + AB2\n\t\n    //\tchange the sign of the last element\n    A1 = (btSimdFloat4)veorq_s32((int32x4_t)A1, (int32x4_t)vPPPM);\t\n\t\n    A1 = vsubq_f32(A1, A3);\t//\tAB123 = AB12 - AB3\n\t\n\treturn btQuaternion(A1);\n    \n#else\n\treturn btQuaternion( \n        +w.x() * q.w() + w.y() * q.z() - w.z() * q.y(),\n\t\t+w.y() * q.w() + w.z() * q.x() - w.x() * q.z(),\n\t\t+w.z() * q.w() + w.x() * q.y() - w.y() * q.x(),\n\t\t-w.x() * q.x() - w.y() * q.y() - w.z() * q.z()); \n#endif\n}\n\n/**@brief Calculate the dot product between two quaternions */\nSIMD_FORCE_INLINE btScalar \ndot(const btQuaternion& q1, const btQuaternion& q2) \n{ \n\treturn q1.dot(q2); \n}\n\n\n/**@brief Return the length of a quaternion */\nSIMD_FORCE_INLINE btScalar\nlength(const btQuaternion& q) \n{ \n\treturn q.length(); \n}\n\n/**@brief Return the angle between two quaternions*/\nSIMD_FORCE_INLINE btScalar\nbtAngle(const btQuaternion& q1, const btQuaternion& q2) \n{ \n\treturn q1.angle(q2); \n}\n\n/**@brief Return the inverse of a quaternion*/\nSIMD_FORCE_INLINE btQuaternion\ninverse(const btQuaternion& q) \n{\n\treturn q.inverse();\n}\n\n/**@brief Return the result of spherical linear interpolation betwen two quaternions \n * @param q1 The first quaternion\n * @param q2 The second quaternion \n * @param t The ration between q1 and q2.  t = 0 return q1, t=1 returns q2 \n * Slerp assumes constant velocity between positions. */\nSIMD_FORCE_INLINE btQuaternion\nslerp(const btQuaternion& q1, const btQuaternion& q2, const btScalar& t) \n{\n\treturn q1.slerp(q2, t);\n}\n\nSIMD_FORCE_INLINE btVector3 \nquatRotate(const btQuaternion& rotation, const btVector3& v) \n{\n\tbtQuaternion q = rotation * v;\n\tq *= rotation.inverse();\n#if defined (BT_USE_SSE_IN_API) && defined (BT_USE_SSE)\n\treturn btVector3(_mm_and_ps(q.get128(), btvFFF0fMask));\n#elif defined(BT_USE_NEON)\n    return btVector3((float32x4_t)vandq_s32((int32x4_t)q.get128(), btvFFF0Mask));\n#else\t\n\treturn btVector3(q.getX(),q.getY(),q.getZ());\n#endif\n}\n\nSIMD_FORCE_INLINE btQuaternion \nshortestArcQuat(const btVector3& v0, const btVector3& v1) // Game Programming Gems 2.10. make sure v0,v1 are normalized\n{\n\tbtVector3 c = v0.cross(v1);\n\tbtScalar  d = v0.dot(v1);\n\n\tif (d < -1.0 + SIMD_EPSILON)\n\t{\n\t\tbtVector3 n,unused;\n\t\tbtPlaneSpace1(v0,n,unused);\n\t\treturn btQuaternion(n.x(),n.y(),n.z(),0.0f); // just pick any vector that is orthogonal to v0\n\t}\n\n\tbtScalar  s = btSqrt((1.0f + d) * 2.0f);\n\tbtScalar rs = 1.0f / s;\n\n\treturn btQuaternion(c.getX()*rs,c.getY()*rs,c.getZ()*rs,s * 0.5f);\n}\n\nSIMD_FORCE_INLINE btQuaternion \nshortestArcQuatNormalize2(btVector3& v0,btVector3& v1)\n{\n\tv0.normalize();\n\tv1.normalize();\n\treturn shortestArcQuat(v0,v1);\n}\n\n#endif //BT_SIMD__QUATERNION_H_\n\n\n\n"
  },
  {
    "path": "Sources/NativeDAABBTree/LinearMath/btQuickprof.cpp",
    "content": "/*\n\n***************************************************************************************************\n**\n** profile.cpp\n**\n** Real-Time Hierarchical Profiling for Game Programming Gems 3\n**\n** by Greg Hjelstrom & Byon Garrabrant\n**\n***************************************************************************************************/\n\n// Credits: The Clock class was inspired by the Timer classes in \n// Ogre (www.ogre3d.org).\n\n#include \"btQuickprof.h\"\n\n#ifndef BT_NO_PROFILE\n\n\nstatic btClock gProfileClock;\n\n\n#ifdef __CELLOS_LV2__\n#include <sys/sys_time.h>\n#include <sys/time_util.h>\n#include <stdio.h>\n#endif\n\n#if defined (SUNOS) || defined (__SUNOS__) \n#include <stdio.h> \n#endif\n\n#if defined(WIN32) || defined(_WIN32)\n\n#define BT_USE_WINDOWS_TIMERS\n#define WIN32_LEAN_AND_MEAN\n#define NOWINRES\n#define NOMCX\n#define NOIME \n\n#ifdef _XBOX\n\t#include <Xtl.h>\n#else //_XBOX\n\t#include <windows.h>\n#endif //_XBOX\n\n#include <time.h>\n\n\n#else //_WIN32\n#include <sys/time.h>\n#endif //_WIN32\n\n#define mymin(a,b) (a > b ? a : b)\n\nstruct btClockData\n{\n\n#ifdef BT_USE_WINDOWS_TIMERS\n\tLARGE_INTEGER mClockFrequency;\n\tDWORD mStartTick;\n\tLONGLONG mPrevElapsedTime;\n\tLARGE_INTEGER mStartTime;\n#else\n#ifdef __CELLOS_LV2__\n\tuint64_t\tmStartTime;\n#else\n\tstruct timeval mStartTime;\n#endif\n#endif //__CELLOS_LV2__\n\n};\n\n///The btClock is a portable basic clock that measures accurate time in seconds, use for profiling.\nbtClock::btClock()\n{\n\tm_data = new btClockData;\n#ifdef BT_USE_WINDOWS_TIMERS\n\tQueryPerformanceFrequency(&m_data->mClockFrequency);\n#endif\n\treset();\n}\n\nbtClock::~btClock()\n{\n\tdelete m_data;\n}\n\nbtClock::btClock(const btClock& other)\n{\n\tm_data = new btClockData;\n\t*m_data = *other.m_data;\n}\n\nbtClock& btClock::operator=(const btClock& other)\n{\n\t*m_data = *other.m_data;\n\treturn *this;\n}\n\n\n\t/// Resets the initial reference time.\nvoid btClock::reset()\n{\n#ifdef BT_USE_WINDOWS_TIMERS\n\tQueryPerformanceCounter(&m_data->mStartTime);\n\tm_data->mStartTick = GetTickCount();\n\tm_data->mPrevElapsedTime = 0;\n#else\n#ifdef __CELLOS_LV2__\n\n\ttypedef uint64_t  ClockSize;\n\tClockSize newTime;\n\t//__asm __volatile__( \"mftb %0\" : \"=r\" (newTime) : : \"memory\");\n\tSYS_TIMEBASE_GET( newTime );\n\tm_data->mStartTime = newTime;\n#else\n\tgettimeofday(&m_data->mStartTime, 0);\n#endif\n#endif\n}\n\n/// Returns the time in ms since the last call to reset or since \n/// the btClock was created.\nunsigned long int btClock::getTimeMilliseconds()\n{\n#ifdef BT_USE_WINDOWS_TIMERS\n\tLARGE_INTEGER currentTime;\n\tQueryPerformanceCounter(&currentTime);\n\tLONGLONG elapsedTime = currentTime.QuadPart - \n\t\tm_data->mStartTime.QuadPart;\n\t\t// Compute the number of millisecond ticks elapsed.\n\tunsigned long msecTicks = (unsigned long)(1000 * elapsedTime / \n\t\tm_data->mClockFrequency.QuadPart);\n\t\t// Check for unexpected leaps in the Win32 performance counter.  \n\t// (This is caused by unexpected data across the PCI to ISA \n\t\t// bridge, aka south bridge.  See Microsoft KB274323.)\n\t\tunsigned long elapsedTicks = GetTickCount() - m_data->mStartTick;\n\t\tsigned long msecOff = (signed long)(msecTicks - elapsedTicks);\n\t\tif (msecOff < -100 || msecOff > 100)\n\t\t{\n\t\t\t// Adjust the starting time forwards.\n\t\t\tLONGLONG msecAdjustment = mymin(msecOff * \n\t\t\t\tm_data->mClockFrequency.QuadPart / 1000, elapsedTime - \n\t\t\t\tm_data->mPrevElapsedTime);\n\t\t\tm_data->mStartTime.QuadPart += msecAdjustment;\n\t\t\telapsedTime -= msecAdjustment;\n\n\t\t\t// Recompute the number of millisecond ticks elapsed.\n\t\t\tmsecTicks = (unsigned long)(1000 * elapsedTime / \n\t\t\t\tm_data->mClockFrequency.QuadPart);\n\t\t}\n\n\t\t// Store the current elapsed time for adjustments next time.\n\t\tm_data->mPrevElapsedTime = elapsedTime;\n\n\t\treturn msecTicks;\n#else\n\n#ifdef __CELLOS_LV2__\n\t\tuint64_t freq=sys_time_get_timebase_frequency();\n\t\tdouble dFreq=((double) freq) / 1000.0;\n\t\ttypedef uint64_t  ClockSize;\n\t\tClockSize newTime;\n\t\tSYS_TIMEBASE_GET( newTime );\n\t\t//__asm __volatile__( \"mftb %0\" : \"=r\" (newTime) : : \"memory\");\n\n\t\treturn (unsigned long int)((double(newTime-m_data->mStartTime)) / dFreq);\n#else\n\n\t\tstruct timeval currentTime;\n\t\tgettimeofday(&currentTime, 0);\n\t\treturn (currentTime.tv_sec - m_data->mStartTime.tv_sec) * 1000 + \n\t\t\t(currentTime.tv_usec - m_data->mStartTime.tv_usec) / 1000;\n#endif //__CELLOS_LV2__\n#endif\n}\n\n\t/// Returns the time in us since the last call to reset or since \n\t/// the Clock was created.\nunsigned long int btClock::getTimeMicroseconds()\n{\n#ifdef BT_USE_WINDOWS_TIMERS\n\t\tLARGE_INTEGER currentTime;\n\t\tQueryPerformanceCounter(&currentTime);\n\t\tLONGLONG elapsedTime = currentTime.QuadPart - \n\t\t\tm_data->mStartTime.QuadPart;\n\n\t\t// Compute the number of millisecond ticks elapsed.\n\t\tunsigned long msecTicks = (unsigned long)(1000 * elapsedTime / \n\t\t\tm_data->mClockFrequency.QuadPart);\n\n\t\t// Check for unexpected leaps in the Win32 performance counter.  \n\t\t// (This is caused by unexpected data across the PCI to ISA \n\t\t// bridge, aka south bridge.  See Microsoft KB274323.)\n\t\tunsigned long elapsedTicks = GetTickCount() - m_data->mStartTick;\n\t\tsigned long msecOff = (signed long)(msecTicks - elapsedTicks);\n\t\tif (msecOff < -100 || msecOff > 100)\n\t\t{\n\t\t\t// Adjust the starting time forwards.\n\t\t\tLONGLONG msecAdjustment = mymin(msecOff * \n\t\t\t\tm_data->mClockFrequency.QuadPart / 1000, elapsedTime - \n\t\t\t\tm_data->mPrevElapsedTime);\n\t\t\tm_data->mStartTime.QuadPart += msecAdjustment;\n\t\t\telapsedTime -= msecAdjustment;\n\t\t}\n\n\t\t// Store the current elapsed time for adjustments next time.\n\t\tm_data->mPrevElapsedTime = elapsedTime;\n\n\t\t// Convert to microseconds.\n\t\tunsigned long usecTicks = (unsigned long)(1000000 * elapsedTime / \n\t\t\tm_data->mClockFrequency.QuadPart);\n\n\t\treturn usecTicks;\n#else\n\n#ifdef __CELLOS_LV2__\n\t\tuint64_t freq=sys_time_get_timebase_frequency();\n\t\tdouble dFreq=((double) freq)/ 1000000.0;\n\t\ttypedef uint64_t  ClockSize;\n\t\tClockSize newTime;\n\t\t//__asm __volatile__( \"mftb %0\" : \"=r\" (newTime) : : \"memory\");\n\t\tSYS_TIMEBASE_GET( newTime );\n\n\t\treturn (unsigned long int)((double(newTime-m_data->mStartTime)) / dFreq);\n#else\n\n\t\tstruct timeval currentTime;\n\t\tgettimeofday(&currentTime, 0);\n\t\treturn (currentTime.tv_sec - m_data->mStartTime.tv_sec) * 1000000 + \n\t\t\t(currentTime.tv_usec - m_data->mStartTime.tv_usec);\n#endif//__CELLOS_LV2__\n#endif \n}\n\n\n\n\n\ninline void Profile_Get_Ticks(unsigned long int * ticks)\n{\n\t*ticks = gProfileClock.getTimeMicroseconds();\n}\n\ninline float Profile_Get_Tick_Rate(void)\n{\n//\treturn 1000000.f;\n\treturn 1000.f;\n\n}\n\n\n\n/***************************************************************************************************\n**\n** CProfileNode\n**\n***************************************************************************************************/\n\n/***********************************************************************************************\n * INPUT:                                                                                      *\n * name - pointer to a static string which is the name of this profile node                    *\n * parent - parent pointer                                                                     *\n *                                                                                             *\n * WARNINGS:                                                                                   *\n * The name is assumed to be a static pointer, only the pointer is stored and compared for     *\n * efficiency reasons.                                                                         *\n *=============================================================================================*/\nCProfileNode::CProfileNode( const char * name, CProfileNode * parent ) :\n\tName( name ),\n\tTotalCalls( 0 ),\n\tTotalTime( 0 ),\n\tStartTime( 0 ),\n\tRecursionCounter( 0 ),\n\tParent( parent ),\n\tChild( NULL ),\n\tSibling( NULL ),\n\tm_userPtr(0)\n{\n\tReset();\n}\n\n\nvoid\tCProfileNode::CleanupMemory()\n{\n\tdelete ( Child);\n\tChild = NULL;\n\tdelete ( Sibling);\n\tSibling = NULL;\n}\n\nCProfileNode::~CProfileNode( void )\n{\n\tdelete ( Child);\n\tdelete ( Sibling);\n}\n\n\n/***********************************************************************************************\n * INPUT:                                                                                      *\n * name - static string pointer to the name of the node we are searching for                   *\n *                                                                                             *\n * WARNINGS:                                                                                   *\n * All profile names are assumed to be static strings so this function uses pointer compares   *\n * to find the named node.                                                                     *\n *=============================================================================================*/\nCProfileNode * CProfileNode::Get_Sub_Node( const char * name )\n{\n\t// Try to find this sub node\n\tCProfileNode * child = Child;\n\twhile ( child ) {\n\t\tif ( child->Name == name ) {\n\t\t\treturn child;\n\t\t}\n\t\tchild = child->Sibling;\n\t}\n\n\t// We didn't find it, so add it\n\t\n\tCProfileNode * node = new CProfileNode( name, this );\n\tnode->Sibling = Child;\n\tChild = node;\n\treturn node;\n}\n\n\nvoid\tCProfileNode::Reset( void )\n{\n\tTotalCalls = 0;\n\tTotalTime = 0.0f;\n\t\n\n\tif ( Child ) {\n\t\tChild->Reset();\n\t}\n\tif ( Sibling ) {\n\t\tSibling->Reset();\n\t}\n}\n\n\nvoid\tCProfileNode::Call( void )\n{\n\tTotalCalls++;\n\tif (RecursionCounter++ == 0) {\n\t\tProfile_Get_Ticks(&StartTime);\n\t}\n}\n\n\nbool\tCProfileNode::Return( void )\n{\n\tif ( --RecursionCounter == 0 && TotalCalls != 0 ) { \n\t\tunsigned long int time;\n\t\tProfile_Get_Ticks(&time);\n\t\ttime-=StartTime;\n\t\tTotalTime += (float)time / Profile_Get_Tick_Rate();\n\t}\n\treturn ( RecursionCounter == 0 );\n}\n\n\n/***************************************************************************************************\n**\n** CProfileIterator\n**\n***************************************************************************************************/\nCProfileIterator::CProfileIterator( CProfileNode * start )\n{\n\tCurrentParent = start;\n\tCurrentChild = CurrentParent->Get_Child();\n}\n\n\nvoid\tCProfileIterator::First(void)\n{\n\tCurrentChild = CurrentParent->Get_Child();\n}\n\n\nvoid\tCProfileIterator::Next(void)\n{\n\tCurrentChild = CurrentChild->Get_Sibling();\n}\n\n\nbool\tCProfileIterator::Is_Done(void)\n{\n\treturn CurrentChild == NULL;\n}\n\n\nvoid\tCProfileIterator::Enter_Child( int index )\n{\n\tCurrentChild = CurrentParent->Get_Child();\n\twhile ( (CurrentChild != NULL) && (index != 0) ) {\n\t\tindex--;\n\t\tCurrentChild = CurrentChild->Get_Sibling();\n\t}\n\n\tif ( CurrentChild != NULL ) {\n\t\tCurrentParent = CurrentChild;\n\t\tCurrentChild = CurrentParent->Get_Child();\n\t}\n}\n\n\nvoid\tCProfileIterator::Enter_Parent( void )\n{\n\tif ( CurrentParent->Get_Parent() != NULL ) {\n\t\tCurrentParent = CurrentParent->Get_Parent();\n\t}\n\tCurrentChild = CurrentParent->Get_Child();\n}\n\n\n/***************************************************************************************************\n**\n** CProfileManager\n**\n***************************************************************************************************/\n\nCProfileNode\tCProfileManager::Root( \"Root\", NULL );\nCProfileNode *\tCProfileManager::CurrentNode = &CProfileManager::Root;\nint\t\t\t\tCProfileManager::FrameCounter = 0;\nunsigned long int\t\t\tCProfileManager::ResetTime = 0;\n\n\n/***********************************************************************************************\n * CProfileManager::Start_Profile -- Begin a named profile                                    *\n *                                                                                             *\n * Steps one level deeper into the tree, if a child already exists with the specified name     *\n * then it accumulates the profiling; otherwise a new child node is added to the profile tree. *\n *                                                                                             *\n * INPUT:                                                                                      *\n * name - name of this profiling record                                                        *\n *                                                                                             *\n * WARNINGS:                                                                                   *\n * The string used is assumed to be a static string; pointer compares are used throughout      *\n * the profiling code for efficiency.                                                          *\n *=============================================================================================*/\nvoid\tCProfileManager::Start_Profile( const char * name )\n{\n\tif (name != CurrentNode->Get_Name()) {\n\t\tCurrentNode = CurrentNode->Get_Sub_Node( name );\n\t} \n\t\n\tCurrentNode->Call();\n}\n\n\n/***********************************************************************************************\n * CProfileManager::Stop_Profile -- Stop timing and record the results.                       *\n *=============================================================================================*/\nvoid\tCProfileManager::Stop_Profile( void )\n{\n\t// Return will indicate whether we should back up to our parent (we may\n\t// be profiling a recursive function)\n\tif (CurrentNode->Return()) {\n\t\tCurrentNode = CurrentNode->Get_Parent();\n\t}\n}\n\n\n/***********************************************************************************************\n * CProfileManager::Reset -- Reset the contents of the profiling system                       *\n *                                                                                             *\n *    This resets everything except for the tree structure.  All of the timing data is reset.  *\n *=============================================================================================*/\nvoid\tCProfileManager::Reset( void )\n{ \n\tgProfileClock.reset();\n\tRoot.Reset();\n    Root.Call();\n\tFrameCounter = 0;\n\tProfile_Get_Ticks(&ResetTime);\n}\n\n\n/***********************************************************************************************\n * CProfileManager::Increment_Frame_Counter -- Increment the frame counter                    *\n *=============================================================================================*/\nvoid CProfileManager::Increment_Frame_Counter( void )\n{\n\tFrameCounter++;\n}\n\n\n/***********************************************************************************************\n * CProfileManager::Get_Time_Since_Reset -- returns the elapsed time since last reset         *\n *=============================================================================================*/\nfloat CProfileManager::Get_Time_Since_Reset( void )\n{\n\tunsigned long int time;\n\tProfile_Get_Ticks(&time);\n\ttime -= ResetTime;\n\treturn (float)time / Profile_Get_Tick_Rate();\n}\n\n#include <stdio.h>\n\nvoid\tCProfileManager::dumpRecursive(CProfileIterator* profileIterator, int spacing)\n{\n\tprofileIterator->First();\n\tif (profileIterator->Is_Done())\n\t\treturn;\n\n\tfloat accumulated_time=0,parent_time = profileIterator->Is_Root() ? CProfileManager::Get_Time_Since_Reset() : profileIterator->Get_Current_Parent_Total_Time();\n\tint i;\n\tint frames_since_reset = CProfileManager::Get_Frame_Count_Since_Reset();\n\tfor (i=0;i<spacing;i++)\tprintf(\".\");\n\tprintf(\"----------------------------------\\n\");\n\tfor (i=0;i<spacing;i++)\tprintf(\".\");\n\tprintf(\"Profiling: %s (total running time: %.3f ms) ---\\n\",\tprofileIterator->Get_Current_Parent_Name(), parent_time );\n\tfloat totalTime = 0.f;\n\n\t\n\tint numChildren = 0;\n\t\n\tfor (i = 0; !profileIterator->Is_Done(); i++,profileIterator->Next())\n\t{\n\t\tnumChildren++;\n\t\tfloat current_total_time = profileIterator->Get_Current_Total_Time();\n\t\taccumulated_time += current_total_time;\n\t\tfloat fraction = parent_time > SIMD_EPSILON ? (current_total_time / parent_time) * 100 : 0.f;\n\t\t{\n\t\t\tint i;\tfor (i=0;i<spacing;i++)\tprintf(\".\");\n\t\t}\n\t\tprintf(\"%d -- %s (%.2f %%) :: %.3f ms / frame (%d calls)\\n\",i, profileIterator->Get_Current_Name(), fraction,(current_total_time / (double)frames_since_reset),profileIterator->Get_Current_Total_Calls());\n\t\ttotalTime += current_total_time;\n\t\t//recurse into children\n\t}\n\n\tif (parent_time < accumulated_time)\n\t{\n\t\tprintf(\"what's wrong\\n\");\n\t}\n\tfor (i=0;i<spacing;i++)\tprintf(\".\");\n\tprintf(\"%s (%.3f %%) :: %.3f ms\\n\", \"Unaccounted:\",parent_time > SIMD_EPSILON ? ((parent_time - accumulated_time) / parent_time) * 100 : 0.f, parent_time - accumulated_time);\n\t\n\tfor (i=0;i<numChildren;i++)\n\t{\n\t\tprofileIterator->Enter_Child(i);\n\t\tdumpRecursive(profileIterator,spacing+3);\n\t\tprofileIterator->Enter_Parent();\n\t}\n}\n\n\n\nvoid\tCProfileManager::dumpAll()\n{\n\tCProfileIterator* profileIterator = 0;\n\tprofileIterator = CProfileManager::Get_Iterator();\n\n\tdumpRecursive(profileIterator,0);\n\n\tCProfileManager::Release_Iterator(profileIterator);\n}\n\n\n\n\n#endif //BT_NO_PROFILE\n"
  },
  {
    "path": "Sources/NativeDAABBTree/LinearMath/btQuickprof.h",
    "content": "\n/***************************************************************************************************\n**\n** Real-Time Hierarchical Profiling for Game Programming Gems 3\n**\n** by Greg Hjelstrom & Byon Garrabrant\n**\n***************************************************************************************************/\n\n// Credits: The Clock class was inspired by the Timer classes in \n// Ogre (www.ogre3d.org).\n\n\n\n#ifndef BT_QUICK_PROF_H\n#define BT_QUICK_PROF_H\n\n//To disable built-in profiling, please comment out next line\n//#define BT_NO_PROFILE 1\n#ifndef BT_NO_PROFILE\n#include <stdio.h>//@todo remove this, backwards compatibility\n#include \"btScalar.h\"\n#include \"btAlignedAllocator.h\"\n#include <new>\n\n\n\n\n\n#define USE_BT_CLOCK 1\n\n#ifdef USE_BT_CLOCK\n\n///The btClock is a portable basic clock that measures accurate time in seconds, use for profiling.\nclass btClock\n{\npublic:\n\tbtClock();\n\n\tbtClock(const btClock& other);\n\tbtClock& operator=(const btClock& other);\n\n\t~btClock();\n\n\t/// Resets the initial reference time.\n\tvoid reset();\n\n\t/// Returns the time in ms since the last call to reset or since \n\t/// the btClock was created.\n\tunsigned long int getTimeMilliseconds();\n\n\t/// Returns the time in us since the last call to reset or since \n\t/// the Clock was created.\n\tunsigned long int getTimeMicroseconds();\nprivate:\n\tstruct btClockData* m_data;\n};\n\n#endif //USE_BT_CLOCK\n\n\n\n\n///A node in the Profile Hierarchy Tree\nclass\tCProfileNode {\n\npublic:\n\tCProfileNode( const char * name, CProfileNode * parent );\n\t~CProfileNode( void );\n\n\tCProfileNode * Get_Sub_Node( const char * name );\n\n\tCProfileNode * Get_Parent( void )\t\t{ return Parent; }\n\tCProfileNode * Get_Sibling( void )\t\t{ return Sibling; }\n\tCProfileNode * Get_Child( void )\t\t\t{ return Child; }\n\n\tvoid\t\t\t\tCleanupMemory();\n\tvoid\t\t\t\tReset( void );\n\tvoid\t\t\t\tCall( void );\n\tbool\t\t\t\tReturn( void );\n\n\tconst char *\tGet_Name( void )\t\t\t\t{ return Name; }\n\tint\t\t\t\tGet_Total_Calls( void )\t\t{ return TotalCalls; }\n\tfloat\t\t\t\tGet_Total_Time( void )\t\t{ return TotalTime; }\n\tvoid*\t\t\tGetUserPointer() const {return m_userPtr;}\n\tvoid\t\t\tSetUserPointer(void* ptr) { m_userPtr = ptr;}\nprotected:\n\n\tconst char *\tName;\n\tint\t\t\t\tTotalCalls;\n\tfloat\t\t\t\tTotalTime;\n\tunsigned long int\t\t\tStartTime;\n\tint\t\t\t\tRecursionCounter;\n\n\tCProfileNode *\tParent;\n\tCProfileNode *\tChild;\n\tCProfileNode *\tSibling;\n\tvoid*\tm_userPtr;\n};\n\n///An iterator to navigate through the tree\nclass CProfileIterator\n{\npublic:\n\t// Access all the children of the current parent\n\tvoid\t\t\t\tFirst(void);\n\tvoid\t\t\t\tNext(void);\n\tbool\t\t\t\tIs_Done(void);\n\tbool                Is_Root(void) { return (CurrentParent->Get_Parent() == 0); }\n\n\tvoid\t\t\t\tEnter_Child( int index );\t\t// Make the given child the new parent\n\tvoid\t\t\t\tEnter_Largest_Child( void );\t// Make the largest child the new parent\n\tvoid\t\t\t\tEnter_Parent( void );\t\t\t// Make the current parent's parent the new parent\n\n\t// Access the current child\n\tconst char *\tGet_Current_Name( void )\t\t\t{ return CurrentChild->Get_Name(); }\n\tint\t\t\t\tGet_Current_Total_Calls( void )\t{ return CurrentChild->Get_Total_Calls(); }\n\tfloat\t\t\t\tGet_Current_Total_Time( void )\t{ return CurrentChild->Get_Total_Time(); }\n\n\tvoid*\tGet_Current_UserPointer( void )\t\t\t{ return CurrentChild->GetUserPointer(); }\n\tvoid\tSet_Current_UserPointer(void* ptr) {CurrentChild->SetUserPointer(ptr);}\n\t// Access the current parent\n\tconst char *\tGet_Current_Parent_Name( void )\t\t\t{ return CurrentParent->Get_Name(); }\n\tint\t\t\t\tGet_Current_Parent_Total_Calls( void )\t{ return CurrentParent->Get_Total_Calls(); }\n\tfloat\t\t\t\tGet_Current_Parent_Total_Time( void )\t{ return CurrentParent->Get_Total_Time(); }\n\n\t\n\nprotected:\n\n\tCProfileNode *\tCurrentParent;\n\tCProfileNode *\tCurrentChild;\n\t\n\n\tCProfileIterator( CProfileNode * start );\n\tfriend\tclass\t\tCProfileManager;\n};\n\n\n///The Manager for the Profile system\nclass\tCProfileManager {\npublic:\n\tstatic\tvoid\t\t\t\t\t\tStart_Profile( const char * name );\n\tstatic\tvoid\t\t\t\t\t\tStop_Profile( void );\n\n\tstatic\tvoid\t\t\t\t\t\tCleanupMemory(void)\n\t{\n\t\tRoot.CleanupMemory();\n\t}\n\n\tstatic\tvoid\t\t\t\t\t\tReset( void );\n\tstatic\tvoid\t\t\t\t\t\tIncrement_Frame_Counter( void );\n\tstatic\tint\t\t\t\t\t\tGet_Frame_Count_Since_Reset( void )\t\t{ return FrameCounter; }\n\tstatic\tfloat\t\t\t\t\t\tGet_Time_Since_Reset( void );\n\n\tstatic\tCProfileIterator *\tGet_Iterator( void )\t\n\t{ \n\t\t\n\t\treturn new CProfileIterator( &Root ); \n\t}\n\tstatic\tvoid\t\t\t\t\t\tRelease_Iterator( CProfileIterator * iterator ) { delete ( iterator); }\n\n\tstatic void\tdumpRecursive(CProfileIterator* profileIterator, int spacing);\n\n\tstatic void\tdumpAll();\n\nprivate:\n\tstatic\tCProfileNode\t\t\tRoot;\n\tstatic\tCProfileNode *\t\t\tCurrentNode;\n\tstatic\tint\t\t\t\t\t\tFrameCounter;\n\tstatic\tunsigned long int\t\t\t\t\tResetTime;\n};\n\n\n///ProfileSampleClass is a simple way to profile a function's scope\n///Use the BT_PROFILE macro at the start of scope to time\nclass\tCProfileSample {\npublic:\n\tCProfileSample( const char * name )\n\t{ \n\t\tCProfileManager::Start_Profile( name ); \n\t}\n\n\t~CProfileSample( void )\t\t\t\t\t\n\t{ \n\t\tCProfileManager::Stop_Profile(); \n\t}\n};\n\n\n#define\tBT_PROFILE( name )\t\t\tCProfileSample __profile( name )\n\n#else\n\n#define\tBT_PROFILE( name )\n\n#endif //#ifndef BT_NO_PROFILE\n\n\n\n#endif //BT_QUICK_PROF_H\n\n\n"
  },
  {
    "path": "Sources/NativeDAABBTree/LinearMath/btRandom.h",
    "content": "/*\nCopyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n\n\n#ifndef BT_GEN_RANDOM_H\n#define BT_GEN_RANDOM_H\n\n#ifdef MT19937\n\n#include <limits.h>\n#include <mt19937.h>\n\n#define GEN_RAND_MAX UINT_MAX\n\nSIMD_FORCE_INLINE void         GEN_srand(unsigned int seed) { init_genrand(seed); }\nSIMD_FORCE_INLINE unsigned int GEN_rand()                   { return genrand_int32(); }\n\n#else\n\n#include <stdlib.h>\n\n#define GEN_RAND_MAX RAND_MAX\n\nSIMD_FORCE_INLINE void         GEN_srand(unsigned int seed) { srand(seed); } \nSIMD_FORCE_INLINE unsigned int GEN_rand()                   { return rand(); }\n\n#endif\n\n#endif //BT_GEN_RANDOM_H\n\n"
  },
  {
    "path": "Sources/NativeDAABBTree/LinearMath/btScalar.h",
    "content": "/*\nCopyright (c) 2003-2009 Erwin Coumans  http://bullet.googlecode.com\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n\n\n#ifndef BT_SCALAR_H\n#define BT_SCALAR_H\n\n#ifdef BT_MANAGED_CODE\n//Aligned data types not supported in managed code\n#pragma unmanaged\n#endif\n\n\n#include <math.h>\n#include <stdlib.h>//size_t for MSVC 6.0\n#include <float.h>\n\n/* SVN $Revision$ on $Date$ from http://bullet.googlecode.com*/\n#define BT_BULLET_VERSION 281\n\ninline int\tbtGetVersion()\n{\n\treturn BT_BULLET_VERSION;\n}\n\n#if defined(DEBUG) || defined (_DEBUG)\n#define BT_DEBUG\n#endif\n\n\n#ifdef _WIN32\n\n\t\t#if defined(__MINGW32__) || defined(__CYGWIN__) || (defined (_MSC_VER) && _MSC_VER < 1300)\n\n\t\t\t#define SIMD_FORCE_INLINE inline\n\t\t\t#define ATTRIBUTE_ALIGNED16(a) a\n\t\t\t#define ATTRIBUTE_ALIGNED64(a) a\n\t\t\t#define ATTRIBUTE_ALIGNED128(a) a\n\t\t#else\n\t\t\t//#define BT_HAS_ALIGNED_ALLOCATOR\n\t\t\t#pragma warning(disable : 4324) // disable padding warning\n//\t\t\t#pragma warning(disable:4530) // Disable the exception disable but used in MSCV Stl warning.\n//\t\t\t#pragma warning(disable:4996) //Turn off warnings about deprecated C routines\n//\t\t\t#pragma warning(disable:4786) // Disable the \"debug name too long\" warning\n\n\t\t\t#define SIMD_FORCE_INLINE __forceinline\n\t\t\t#define ATTRIBUTE_ALIGNED16(a) __declspec(align(16)) a\n\t\t\t#define ATTRIBUTE_ALIGNED64(a) __declspec(align(64)) a\n\t\t\t#define ATTRIBUTE_ALIGNED128(a) __declspec (align(128)) a\n\t\t#ifdef _XBOX\n\t\t\t#define BT_USE_VMX128\n\n\t\t\t#include <ppcintrinsics.h>\n \t\t\t#define BT_HAVE_NATIVE_FSEL\n \t\t\t#define btFsel(a,b,c) __fsel((a),(b),(c))\n\t\t#else\n\n#if (defined (_WIN32) && (_MSC_VER) && _MSC_VER >= 1400) && (!defined (BT_USE_DOUBLE_PRECISION))\n\t\t\t#define BT_USE_SSE\n\t\t\t#ifdef BT_USE_SSE\n\t\t\t//BT_USE_SSE_IN_API is disabled under Windows by default, because \n\t\t\t//it makes it harder to integrate Bullet into your application under Windows \n\t\t\t//(structured embedding Bullet structs/classes need to be 16-byte aligned)\n\t\t\t//with relatively little performance gain\n\t\t\t//If you are not embedded Bullet data in your classes, or make sure that you align those classes on 16-byte boundaries\n\t\t\t//you can manually enable this line or set it in the build system for a bit of performance gain (a few percent, dependent on usage)\n\t\t\t//#define BT_USE_SSE_IN_API\n\t\t\t#endif //BT_USE_SSE\n\t\t\t#include <emmintrin.h>\n#endif\n\n\t\t#endif//_XBOX\n\n\t\t#endif //__MINGW32__\n\n#ifdef BT_DEBUG\n\t#ifdef _MSC_VER\n\t\t#include <stdio.h>\n\t\t#define btAssert(x) { if(!(x)){printf(\"Assert \"__FILE__ \":%u (\"#x\")\\n\", __LINE__);__debugbreak();\t}}\n\t#else//_MSC_VER\n\t\t#include <assert.h>\n\t\t#define btAssert assert\n\t#endif//_MSC_VER\n#else\n\t\t#define btAssert(x)\n#endif\n\t\t//btFullAssert is optional, slows down a lot\n\t\t#define btFullAssert(x)\n\n\t\t#define btLikely(_c)  _c\n\t\t#define btUnlikely(_c) _c\n\n#else\n\t\n#if defined\t(__CELLOS_LV2__)\n\t\t#define SIMD_FORCE_INLINE inline __attribute__((always_inline))\n\t\t#define ATTRIBUTE_ALIGNED16(a) a __attribute__ ((aligned (16)))\n\t\t#define ATTRIBUTE_ALIGNED64(a) a __attribute__ ((aligned (64)))\n\t\t#define ATTRIBUTE_ALIGNED128(a) a __attribute__ ((aligned (128)))\n\t\t#ifndef assert\n\t\t#include <assert.h>\n\t\t#endif\n#ifdef BT_DEBUG\n#ifdef __SPU__\n#include <spu_printf.h>\n#define printf spu_printf\n\t#define btAssert(x) {if(!(x)){printf(\"Assert \"__FILE__ \":%u (\"#x\")\\n\", __LINE__);spu_hcmpeq(0,0);}}\n#else\n\t#define btAssert assert\n#endif\n\t\n#else\n\t\t#define btAssert(x)\n#endif\n\t\t//btFullAssert is optional, slows down a lot\n\t\t#define btFullAssert(x)\n\n\t\t#define btLikely(_c)  _c\n\t\t#define btUnlikely(_c) _c\n\n#else\n\n#ifdef USE_LIBSPE2\n\n\t\t#define SIMD_FORCE_INLINE __inline\n\t\t#define ATTRIBUTE_ALIGNED16(a) a __attribute__ ((aligned (16)))\n\t\t#define ATTRIBUTE_ALIGNED64(a) a __attribute__ ((aligned (64)))\n\t\t#define ATTRIBUTE_ALIGNED128(a) a __attribute__ ((aligned (128)))\n\t\t#ifndef assert\n\t\t#include <assert.h>\n\t\t#endif\n#ifdef BT_DEBUG\n\t\t#define btAssert assert\n#else\n\t\t#define btAssert(x)\n#endif\n\t\t//btFullAssert is optional, slows down a lot\n\t\t#define btFullAssert(x)\n\n\n\t\t#define btLikely(_c)   __builtin_expect((_c), 1)\n\t\t#define btUnlikely(_c) __builtin_expect((_c), 0)\n\t\t\n\n#else\n\t//non-windows systems\n\n#if (defined (__APPLE__) && (!defined (BT_USE_DOUBLE_PRECISION)))\n    #if defined (__i386__) || defined (__x86_64__)\n        #define BT_USE_SSE\n\t\t//BT_USE_SSE_IN_API is enabled on Mac OSX by default, because memory is automatically aligned on 16-byte boundaries\n\t\t//if apps run into issues, we will disable the next line\n\t\t#define BT_USE_SSE_IN_API\n        #ifdef BT_USE_SSE\n            // include appropriate SSE level\n            #if defined (__SSE4_1__)\n                #include <smmintrin.h>\n            #elif defined (__SSSE3__)\n                #include <tmmintrin.h>\n            #elif defined (__SSE3__)\n                #include <pmmintrin.h>\n            #else\n                #include <emmintrin.h>\n            #endif\n        #endif //BT_USE_SSE\n    #elif defined( __armv7__ )\n        #ifdef __clang__\n            #define BT_USE_NEON 1\n\n            #if defined BT_USE_NEON && defined (__clang__)\n                #include <arm_neon.h>\n            #endif//BT_USE_NEON\n       #endif //__clang__\n    #endif//__arm__\n\n\t#define SIMD_FORCE_INLINE inline __attribute__ ((always_inline))\n///@todo: check out alignment methods for other platforms/compilers\n\t#define ATTRIBUTE_ALIGNED16(a) a __attribute__ ((aligned (16)))\n\t#define ATTRIBUTE_ALIGNED64(a) a __attribute__ ((aligned (64)))\n\t#define ATTRIBUTE_ALIGNED128(a) a __attribute__ ((aligned (128)))\n\t#ifndef assert\n\t#include <assert.h>\n\t#endif\n\n\t#if defined(DEBUG) || defined (_DEBUG)\n\t #if defined (__i386__) || defined (__x86_64__)\n\t#include <stdio.h>\n\t #define btAssert(x)\\\n\t{\\\n\tif(!(x))\\\n\t{\\\n\t\tprintf(\"Assert %s in line %d, file %s\\n\",#x, __LINE__, __FILE__);\\\n\t\tasm volatile (\"int3\");\\\n\t}\\\n\t}\n\t#else//defined (__i386__) || defined (__x86_64__)\n\t\t#define btAssert assert\n\t#end//defined (__i386__) || defined (__x86_64__)\n\t#endif\n\t#else//defined(DEBUG) || defined (_DEBUG)\n\t\t#define btAssert(x)\n\t#endif//defined(DEBUG) || defined (_DEBUG)\n\n\t//btFullAssert is optional, slows down a lot\n\t#define btFullAssert(x)\n\t#define btLikely(_c)  _c\n\t#define btUnlikely(_c) _c\n\n#else\n\n\t\t#define SIMD_FORCE_INLINE inline\n\t\t///@todo: check out alignment methods for other platforms/compilers\n\t\t///#define ATTRIBUTE_ALIGNED16(a) a __attribute__ ((aligned (16)))\n\t\t///#define ATTRIBUTE_ALIGNED64(a) a __attribute__ ((aligned (64)))\n\t\t///#define ATTRIBUTE_ALIGNED128(a) a __attribute__ ((aligned (128)))\n\t\t#define ATTRIBUTE_ALIGNED16(a) a\n\t\t#define ATTRIBUTE_ALIGNED64(a) a\n\t\t#define ATTRIBUTE_ALIGNED128(a) a\n\t\t#ifndef assert\n\t\t#include <assert.h>\n\t\t#endif\n\n#if defined(DEBUG) || defined (_DEBUG)\n\t\t#define btAssert assert\n#else\n\t\t#define btAssert(x)\n#endif\n\n\t\t//btFullAssert is optional, slows down a lot\n\t\t#define btFullAssert(x)\n\t\t#define btLikely(_c)  _c\n\t\t#define btUnlikely(_c) _c\n#endif //__APPLE__ \n\n#endif // LIBSPE2\n\n#endif\t//__CELLOS_LV2__\n#endif\n\n\n///The btScalar type abstracts floating point numbers, to easily switch between double and single floating point precision.\n#if defined(BT_USE_DOUBLE_PRECISION)\ntypedef double btScalar;\n//this number could be bigger in double precision\n#define BT_LARGE_FLOAT 1e30\n#else\ntypedef float btScalar;\n//keep BT_LARGE_FLOAT*BT_LARGE_FLOAT < FLT_MAX\n#define BT_LARGE_FLOAT 1e18f\n#endif\n\n#ifdef BT_USE_SSE\ntypedef __m128 btSimdFloat4;\n#endif//BT_USE_SSE\n\n#if defined BT_USE_SSE_IN_API && defined (BT_USE_SSE)\n#ifdef _WIN32\n\n#ifndef BT_NAN\nstatic int btNanMask = 0x7F800001;\n#define BT_NAN (*(float*)&btNanMask)\n#endif\n\n#ifndef BT_INFINITY\nstatic  int btInfinityMask = 0x7F800000;\n#define BT_INFINITY (*(float*)&btInfinityMask)\n#endif\n\ninline __m128 operator + (const __m128 A, const __m128 B)\n{\n    return _mm_add_ps(A, B);\n}\n\ninline __m128 operator - (const __m128 A, const __m128 B)\n{\n    return _mm_sub_ps(A, B);\n}\n\ninline __m128 operator * (const __m128 A, const __m128 B)\n{\n    return _mm_mul_ps(A, B);\n}\n\n#define btCastfTo128i(a) (_mm_castps_si128(a))\n#define btCastfTo128d(a) (_mm_castps_pd(a))\n#define btCastiTo128f(a) (_mm_castsi128_ps(a))\n#define btCastdTo128f(a) (_mm_castpd_ps(a))\n#define btCastdTo128i(a) (_mm_castpd_si128(a))\n#define btAssign128(r0,r1,r2,r3) _mm_setr_ps(r0,r1,r2,r3)\n\n#else//_WIN32\n\n#define btCastfTo128i(a) ((__m128i)(a))\n#define btCastfTo128d(a) ((__m128d)(a))\n#define btCastiTo128f(a)  ((__m128) (a))\n#define btCastdTo128f(a) ((__m128) (a))\n#define btCastdTo128i(a) ((__m128i)(a))\n#define btAssign128(r0,r1,r2,r3) (__m128){r0,r1,r2,r3}\n#define BT_INFINITY INFINITY\n#define BT_NAN NAN\n#endif//_WIN32\n#endif //BT_USE_SSE_IN_API\n\n#ifdef BT_USE_NEON\n#include <arm_neon.h>\n\ntypedef float32x4_t btSimdFloat4;\n#define BT_INFINITY INFINITY\n#define BT_NAN NAN\n#define btAssign128(r0,r1,r2,r3) (float32x4_t){r0,r1,r2,r3}\n#endif\n\n\n\n\n\n#define BT_DECLARE_ALIGNED_ALLOCATOR() \\\n   SIMD_FORCE_INLINE void* operator new(size_t sizeInBytes)   { return btAlignedAlloc(sizeInBytes,16); }   \\\n   SIMD_FORCE_INLINE void  operator delete(void* ptr)         { btAlignedFree(ptr); }   \\\n   SIMD_FORCE_INLINE void* operator new(size_t, void* ptr)   { return ptr; }   \\\n   SIMD_FORCE_INLINE void  operator delete(void*, void*)      { }   \\\n   SIMD_FORCE_INLINE void* operator new[](size_t sizeInBytes)   { return btAlignedAlloc(sizeInBytes,16); }   \\\n   SIMD_FORCE_INLINE void  operator delete[](void* ptr)         { btAlignedFree(ptr); }   \\\n   SIMD_FORCE_INLINE void* operator new[](size_t, void* ptr)   { return ptr; }   \\\n   SIMD_FORCE_INLINE void  operator delete[](void*, void*)      { }   \\\n\n\n\n#if defined(BT_USE_DOUBLE_PRECISION) || defined(BT_FORCE_DOUBLE_FUNCTIONS)\n\t\t\nSIMD_FORCE_INLINE btScalar btSqrt(btScalar x) { return sqrt(x); }\nSIMD_FORCE_INLINE btScalar btFabs(btScalar x) { return fabs(x); }\nSIMD_FORCE_INLINE btScalar btCos(btScalar x) { return cos(x); }\nSIMD_FORCE_INLINE btScalar btSin(btScalar x) { return sin(x); }\nSIMD_FORCE_INLINE btScalar btTan(btScalar x) { return tan(x); }\nSIMD_FORCE_INLINE btScalar btAcos(btScalar x) { if (x<btScalar(-1))\tx=btScalar(-1); if (x>btScalar(1))\tx=btScalar(1); return acos(x); }\nSIMD_FORCE_INLINE btScalar btAsin(btScalar x) { if (x<btScalar(-1))\tx=btScalar(-1); if (x>btScalar(1))\tx=btScalar(1); return asin(x); }\nSIMD_FORCE_INLINE btScalar btAtan(btScalar x) { return atan(x); }\nSIMD_FORCE_INLINE btScalar btAtan2(btScalar x, btScalar y) { return atan2(x, y); }\nSIMD_FORCE_INLINE btScalar btExp(btScalar x) { return exp(x); }\nSIMD_FORCE_INLINE btScalar btLog(btScalar x) { return log(x); }\nSIMD_FORCE_INLINE btScalar btPow(btScalar x,btScalar y) { return pow(x,y); }\nSIMD_FORCE_INLINE btScalar btFmod(btScalar x,btScalar y) { return fmod(x,y); }\n\n#else\n\t\t\nSIMD_FORCE_INLINE btScalar btSqrt(btScalar y) \n{ \n#ifdef USE_APPROXIMATION\n    double x, z, tempf;\n    unsigned long *tfptr = ((unsigned long *)&tempf) + 1;\n\n\ttempf = y;\n\t*tfptr = (0xbfcdd90a - *tfptr)>>1; /* estimate of 1/sqrt(y) */\n\tx =  tempf;\n\tz =  y*btScalar(0.5);\n\tx = (btScalar(1.5)*x)-(x*x)*(x*z);         /* iteration formula     */\n\tx = (btScalar(1.5)*x)-(x*x)*(x*z);\n\tx = (btScalar(1.5)*x)-(x*x)*(x*z);\n\tx = (btScalar(1.5)*x)-(x*x)*(x*z);\n\tx = (btScalar(1.5)*x)-(x*x)*(x*z);\n\treturn x*y;\n#else\n\treturn sqrtf(y); \n#endif\n}\nSIMD_FORCE_INLINE btScalar btFabs(btScalar x) { return fabsf(x); }\nSIMD_FORCE_INLINE btScalar btCos(btScalar x) { return cosf(x); }\nSIMD_FORCE_INLINE btScalar btSin(btScalar x) { return sinf(x); }\nSIMD_FORCE_INLINE btScalar btTan(btScalar x) { return tanf(x); }\nSIMD_FORCE_INLINE btScalar btAcos(btScalar x) { \n\tif (x<btScalar(-1))\t\n\t\tx=btScalar(-1); \n\tif (x>btScalar(1))\t\n\t\tx=btScalar(1);\n\treturn acosf(x); \n}\nSIMD_FORCE_INLINE btScalar btAsin(btScalar x) { \n\tif (x<btScalar(-1))\t\n\t\tx=btScalar(-1); \n\tif (x>btScalar(1))\t\n\t\tx=btScalar(1);\n\treturn asinf(x); \n}\nSIMD_FORCE_INLINE btScalar btAtan(btScalar x) { return atanf(x); }\nSIMD_FORCE_INLINE btScalar btAtan2(btScalar x, btScalar y) { return atan2f(x, y); }\nSIMD_FORCE_INLINE btScalar btExp(btScalar x) { return expf(x); }\nSIMD_FORCE_INLINE btScalar btLog(btScalar x) { return logf(x); }\nSIMD_FORCE_INLINE btScalar btPow(btScalar x,btScalar y) { return powf(x,y); }\nSIMD_FORCE_INLINE btScalar btFmod(btScalar x,btScalar y) { return fmodf(x,y); }\n\t\n#endif\n\n#define SIMD_2_PI         btScalar(6.283185307179586232)\n#define SIMD_PI           (SIMD_2_PI * btScalar(0.5))\n#define SIMD_HALF_PI      (SIMD_2_PI * btScalar(0.25))\n#define SIMD_RADS_PER_DEG (SIMD_2_PI / btScalar(360.0))\n#define SIMD_DEGS_PER_RAD  (btScalar(360.0) / SIMD_2_PI)\n#define SIMDSQRT12 btScalar(0.7071067811865475244008443621048490)\n\n#define btRecipSqrt(x) ((btScalar)(btScalar(1.0)/btSqrt(btScalar(x))))\t\t/* reciprocal square root */\n\n\n#ifdef BT_USE_DOUBLE_PRECISION\n#define SIMD_EPSILON      DBL_EPSILON\n#define SIMD_INFINITY     DBL_MAX\n#else\n#define SIMD_EPSILON      FLT_EPSILON\n#define SIMD_INFINITY     FLT_MAX\n#endif\n\nSIMD_FORCE_INLINE btScalar btAtan2Fast(btScalar y, btScalar x) \n{\n\tbtScalar coeff_1 = SIMD_PI / 4.0f;\n\tbtScalar coeff_2 = 3.0f * coeff_1;\n\tbtScalar abs_y = btFabs(y);\n\tbtScalar angle;\n\tif (x >= 0.0f) {\n\t\tbtScalar r = (x - abs_y) / (x + abs_y);\n\t\tangle = coeff_1 - coeff_1 * r;\n\t} else {\n\t\tbtScalar r = (x + abs_y) / (abs_y - x);\n\t\tangle = coeff_2 - coeff_1 * r;\n\t}\n\treturn (y < 0.0f) ? -angle : angle;\n}\n\nSIMD_FORCE_INLINE bool      btFuzzyZero(btScalar x) { return btFabs(x) < SIMD_EPSILON; }\n\nSIMD_FORCE_INLINE bool\tbtEqual(btScalar a, btScalar eps) {\n\treturn (((a) <= eps) && !((a) < -eps));\n}\nSIMD_FORCE_INLINE bool\tbtGreaterEqual (btScalar a, btScalar eps) {\n\treturn (!((a) <= eps));\n}\n\n\nSIMD_FORCE_INLINE int       btIsNegative(btScalar x) {\n    return x < btScalar(0.0) ? 1 : 0;\n}\n\nSIMD_FORCE_INLINE btScalar btRadians(btScalar x) { return x * SIMD_RADS_PER_DEG; }\nSIMD_FORCE_INLINE btScalar btDegrees(btScalar x) { return x * SIMD_DEGS_PER_RAD; }\n\n#define BT_DECLARE_HANDLE(name) typedef struct name##__ { int unused; } *name\n\n#ifndef btFsel\nSIMD_FORCE_INLINE btScalar btFsel(btScalar a, btScalar b, btScalar c)\n{\n\treturn a >= 0 ? b : c;\n}\n#endif\n#define btFsels(a,b,c) (btScalar)btFsel(a,b,c)\n\n\nSIMD_FORCE_INLINE bool btMachineIsLittleEndian()\n{\n   long int i = 1;\n   const char *p = (const char *) &i;\n   if (p[0] == 1)  // Lowest address contains the least significant byte\n\t   return true;\n   else\n\t   return false;\n}\n\n\n\n///btSelect avoids branches, which makes performance much better for consoles like Playstation 3 and XBox 360\n///Thanks Phil Knight. See also http://www.cellperformance.com/articles/2006/04/more_techniques_for_eliminatin_1.html\nSIMD_FORCE_INLINE unsigned btSelect(unsigned condition, unsigned valueIfConditionNonZero, unsigned valueIfConditionZero) \n{\n    // Set testNz to 0xFFFFFFFF if condition is nonzero, 0x00000000 if condition is zero\n    // Rely on positive value or'ed with its negative having sign bit on\n    // and zero value or'ed with its negative (which is still zero) having sign bit off \n    // Use arithmetic shift right, shifting the sign bit through all 32 bits\n    unsigned testNz = (unsigned)(((int)condition | -(int)condition) >> 31);\n    unsigned testEqz = ~testNz;\n    return ((valueIfConditionNonZero & testNz) | (valueIfConditionZero & testEqz)); \n}\nSIMD_FORCE_INLINE int btSelect(unsigned condition, int valueIfConditionNonZero, int valueIfConditionZero)\n{\n    unsigned testNz = (unsigned)(((int)condition | -(int)condition) >> 31);\n    unsigned testEqz = ~testNz; \n    return static_cast<int>((valueIfConditionNonZero & testNz) | (valueIfConditionZero & testEqz));\n}\nSIMD_FORCE_INLINE float btSelect(unsigned condition, float valueIfConditionNonZero, float valueIfConditionZero)\n{\n#ifdef BT_HAVE_NATIVE_FSEL\n    return (float)btFsel((btScalar)condition - btScalar(1.0f), valueIfConditionNonZero, valueIfConditionZero);\n#else\n    return (condition != 0) ? valueIfConditionNonZero : valueIfConditionZero; \n#endif\n}\n\ntemplate<typename T> SIMD_FORCE_INLINE void btSwap(T& a, T& b)\n{\n\tT tmp = a;\n\ta = b;\n\tb = tmp;\n}\n\n\n//PCK: endian swapping functions\nSIMD_FORCE_INLINE unsigned btSwapEndian(unsigned val)\n{\n\treturn (((val & 0xff000000) >> 24) | ((val & 0x00ff0000) >> 8) | ((val & 0x0000ff00) << 8)  | ((val & 0x000000ff) << 24));\n}\n\nSIMD_FORCE_INLINE unsigned short btSwapEndian(unsigned short val)\n{\n\treturn static_cast<unsigned short>(((val & 0xff00) >> 8) | ((val & 0x00ff) << 8));\n}\n\nSIMD_FORCE_INLINE unsigned btSwapEndian(int val)\n{\n\treturn btSwapEndian((unsigned)val);\n}\n\nSIMD_FORCE_INLINE unsigned short btSwapEndian(short val)\n{\n\treturn btSwapEndian((unsigned short) val);\n}\n\n///btSwapFloat uses using char pointers to swap the endianness\n////btSwapFloat/btSwapDouble will NOT return a float, because the machine might 'correct' invalid floating point values\n///Not all values of sign/exponent/mantissa are valid floating point numbers according to IEEE 754. \n///When a floating point unit is faced with an invalid value, it may actually change the value, or worse, throw an exception. \n///In most systems, running user mode code, you wouldn't get an exception, but instead the hardware/os/runtime will 'fix' the number for you. \n///so instead of returning a float/double, we return integer/long long integer\nSIMD_FORCE_INLINE unsigned int  btSwapEndianFloat(float d)\n{\n    unsigned int a = 0;\n    unsigned char *dst = (unsigned char *)&a;\n    unsigned char *src = (unsigned char *)&d;\n\n    dst[0] = src[3];\n    dst[1] = src[2];\n    dst[2] = src[1];\n    dst[3] = src[0];\n    return a;\n}\n\n// unswap using char pointers\nSIMD_FORCE_INLINE float btUnswapEndianFloat(unsigned int a) \n{\n    float d = 0.0f;\n    unsigned char *src = (unsigned char *)&a;\n    unsigned char *dst = (unsigned char *)&d;\n\n    dst[0] = src[3];\n    dst[1] = src[2];\n    dst[2] = src[1];\n    dst[3] = src[0];\n\n    return d;\n}\n\n\n// swap using char pointers\nSIMD_FORCE_INLINE void  btSwapEndianDouble(double d, unsigned char* dst)\n{\n    unsigned char *src = (unsigned char *)&d;\n\n    dst[0] = src[7];\n    dst[1] = src[6];\n    dst[2] = src[5];\n    dst[3] = src[4];\n    dst[4] = src[3];\n    dst[5] = src[2];\n    dst[6] = src[1];\n    dst[7] = src[0];\n\n}\n\n// unswap using char pointers\nSIMD_FORCE_INLINE double btUnswapEndianDouble(const unsigned char *src) \n{\n    double d = 0.0;\n    unsigned char *dst = (unsigned char *)&d;\n\n    dst[0] = src[7];\n    dst[1] = src[6];\n    dst[2] = src[5];\n    dst[3] = src[4];\n    dst[4] = src[3];\n    dst[5] = src[2];\n    dst[6] = src[1];\n    dst[7] = src[0];\n\n\treturn d;\n}\n\n// returns normalized value in range [-SIMD_PI, SIMD_PI]\nSIMD_FORCE_INLINE btScalar btNormalizeAngle(btScalar angleInRadians) \n{\n\tangleInRadians = btFmod(angleInRadians, SIMD_2_PI);\n\tif(angleInRadians < -SIMD_PI)\n\t{\n\t\treturn angleInRadians + SIMD_2_PI;\n\t}\n\telse if(angleInRadians > SIMD_PI)\n\t{\n\t\treturn angleInRadians - SIMD_2_PI;\n\t}\n\telse\n\t{\n\t\treturn angleInRadians;\n\t}\n}\n\n///rudimentary class to provide type info\nstruct btTypedObject\n{\n\tbtTypedObject(int objectType)\n\t\t:m_objectType(objectType)\n\t{\n\t}\n\tint\tm_objectType;\n\tinline int getObjectType() const\n\t{\n\t\treturn m_objectType;\n\t}\n};\n\n\n  \n///align a pointer to the provided alignment, upwards\ntemplate <typename T>T* btAlignPointer(T* unalignedPtr, size_t alignment)\n{\n\t\t\n\tstruct btConvertPointerSizeT\n\t{\n\t\tunion \n\t\t{\n\t\t\t\tT* ptr;\n\t\t\t\tsize_t integer;\n\t\t};\n\t};\n    btConvertPointerSizeT converter;\n    \n    \n\tconst size_t bit_mask = ~(alignment - 1);\n    converter.ptr = unalignedPtr;\n\tconverter.integer += alignment-1;\n\tconverter.integer &= bit_mask;\n\treturn converter.ptr;\n}\n\n#endif //BT_SCALAR_H\n"
  },
  {
    "path": "Sources/NativeDAABBTree/LinearMath/btSerializer.cpp",
    "content": "char sBulletDNAstr[]= {\nchar(83),char(68),char(78),char(65),char(78),char(65),char(77),char(69),char(63),char(1),char(0),char(0),char(109),char(95),char(115),char(105),char(122),char(101),char(0),char(109),\nchar(95),char(99),char(97),char(112),char(97),char(99),char(105),char(116),char(121),char(0),char(42),char(109),char(95),char(100),char(97),char(116),char(97),char(0),char(109),char(95),\nchar(99),char(111),char(108),char(108),char(105),char(115),char(105),char(111),char(110),char(83),char(104),char(97),char(112),char(101),char(115),char(0),char(109),char(95),char(99),char(111),\nchar(108),char(108),char(105),char(115),char(105),char(111),char(110),char(79),char(98),char(106),char(101),char(99),char(116),char(115),char(0),char(109),char(95),char(99),char(111),char(110),\nchar(115),char(116),char(114),char(97),char(105),char(110),char(116),char(115),char(0),char(42),char(102),char(105),char(114),char(115),char(116),char(0),char(42),char(108),char(97),char(115),\nchar(116),char(0),char(109),char(95),char(102),char(108),char(111),char(97),char(116),char(115),char(91),char(52),char(93),char(0),char(109),char(95),char(101),char(108),char(91),char(51),\nchar(93),char(0),char(109),char(95),char(98),char(97),char(115),char(105),char(115),char(0),char(109),char(95),char(111),char(114),char(105),char(103),char(105),char(110),char(0),char(109),\nchar(95),char(114),char(111),char(111),char(116),char(78),char(111),char(100),char(101),char(73),char(110),char(100),char(101),char(120),char(0),char(109),char(95),char(115),char(117),char(98),\nchar(116),char(114),char(101),char(101),char(83),char(105),char(122),char(101),char(0),char(109),char(95),char(113),char(117),char(97),char(110),char(116),char(105),char(122),char(101),char(100),\nchar(65),char(97),char(98),char(98),char(77),char(105),char(110),char(91),char(51),char(93),char(0),char(109),char(95),char(113),char(117),char(97),char(110),char(116),char(105),char(122),\nchar(101),char(100),char(65),char(97),char(98),char(98),char(77),char(97),char(120),char(91),char(51),char(93),char(0),char(109),char(95),char(97),char(97),char(98),char(98),char(77),\nchar(105),char(110),char(79),char(114),char(103),char(0),char(109),char(95),char(97),char(97),char(98),char(98),char(77),char(97),char(120),char(79),char(114),char(103),char(0),char(109),\nchar(95),char(101),char(115),char(99),char(97),char(112),char(101),char(73),char(110),char(100),char(101),char(120),char(0),char(109),char(95),char(115),char(117),char(98),char(80),char(97),\nchar(114),char(116),char(0),char(109),char(95),char(116),char(114),char(105),char(97),char(110),char(103),char(108),char(101),char(73),char(110),char(100),char(101),char(120),char(0),char(109),\nchar(95),char(112),char(97),char(100),char(91),char(52),char(93),char(0),char(109),char(95),char(101),char(115),char(99),char(97),char(112),char(101),char(73),char(110),char(100),char(101),\nchar(120),char(79),char(114),char(84),char(114),char(105),char(97),char(110),char(103),char(108),char(101),char(73),char(110),char(100),char(101),char(120),char(0),char(109),char(95),char(98),\nchar(118),char(104),char(65),char(97),char(98),char(98),char(77),char(105),char(110),char(0),char(109),char(95),char(98),char(118),char(104),char(65),char(97),char(98),char(98),char(77),\nchar(97),char(120),char(0),char(109),char(95),char(98),char(118),char(104),char(81),char(117),char(97),char(110),char(116),char(105),char(122),char(97),char(116),char(105),char(111),char(110),\nchar(0),char(109),char(95),char(99),char(117),char(114),char(78),char(111),char(100),char(101),char(73),char(110),char(100),char(101),char(120),char(0),char(109),char(95),char(117),char(115),\nchar(101),char(81),char(117),char(97),char(110),char(116),char(105),char(122),char(97),char(116),char(105),char(111),char(110),char(0),char(109),char(95),char(110),char(117),char(109),char(67),\nchar(111),char(110),char(116),char(105),char(103),char(117),char(111),char(117),char(115),char(76),char(101),char(97),char(102),char(78),char(111),char(100),char(101),char(115),char(0),char(109),\nchar(95),char(110),char(117),char(109),char(81),char(117),char(97),char(110),char(116),char(105),char(122),char(101),char(100),char(67),char(111),char(110),char(116),char(105),char(103),char(117),\nchar(111),char(117),char(115),char(78),char(111),char(100),char(101),char(115),char(0),char(42),char(109),char(95),char(99),char(111),char(110),char(116),char(105),char(103),char(117),char(111),\nchar(117),char(115),char(78),char(111),char(100),char(101),char(115),char(80),char(116),char(114),char(0),char(42),char(109),char(95),char(113),char(117),char(97),char(110),char(116),char(105),\nchar(122),char(101),char(100),char(67),char(111),char(110),char(116),char(105),char(103),char(117),char(111),char(117),char(115),char(78),char(111),char(100),char(101),char(115),char(80),char(116),\nchar(114),char(0),char(42),char(109),char(95),char(115),char(117),char(98),char(84),char(114),char(101),char(101),char(73),char(110),char(102),char(111),char(80),char(116),char(114),char(0),\nchar(109),char(95),char(116),char(114),char(97),char(118),char(101),char(114),char(115),char(97),char(108),char(77),char(111),char(100),char(101),char(0),char(109),char(95),char(110),char(117),\nchar(109),char(83),char(117),char(98),char(116),char(114),char(101),char(101),char(72),char(101),char(97),char(100),char(101),char(114),char(115),char(0),char(42),char(109),char(95),char(110),\nchar(97),char(109),char(101),char(0),char(109),char(95),char(115),char(104),char(97),char(112),char(101),char(84),char(121),char(112),char(101),char(0),char(109),char(95),char(112),char(97),\nchar(100),char(100),char(105),char(110),char(103),char(91),char(52),char(93),char(0),char(109),char(95),char(99),char(111),char(108),char(108),char(105),char(115),char(105),char(111),char(110),\nchar(83),char(104),char(97),char(112),char(101),char(68),char(97),char(116),char(97),char(0),char(109),char(95),char(108),char(111),char(99),char(97),char(108),char(83),char(99),char(97),\nchar(108),char(105),char(110),char(103),char(0),char(109),char(95),char(112),char(108),char(97),char(110),char(101),char(78),char(111),char(114),char(109),char(97),char(108),char(0),char(109),\nchar(95),char(112),char(108),char(97),char(110),char(101),char(67),char(111),char(110),char(115),char(116),char(97),char(110),char(116),char(0),char(109),char(95),char(105),char(109),char(112),\nchar(108),char(105),char(99),char(105),char(116),char(83),char(104),char(97),char(112),char(101),char(68),char(105),char(109),char(101),char(110),char(115),char(105),char(111),char(110),char(115),\nchar(0),char(109),char(95),char(99),char(111),char(108),char(108),char(105),char(115),char(105),char(111),char(110),char(77),char(97),char(114),char(103),char(105),char(110),char(0),char(109),\nchar(95),char(112),char(97),char(100),char(100),char(105),char(110),char(103),char(0),char(109),char(95),char(112),char(111),char(115),char(0),char(109),char(95),char(114),char(97),char(100),\nchar(105),char(117),char(115),char(0),char(109),char(95),char(99),char(111),char(110),char(118),char(101),char(120),char(73),char(110),char(116),char(101),char(114),char(110),char(97),char(108),\nchar(83),char(104),char(97),char(112),char(101),char(68),char(97),char(116),char(97),char(0),char(42),char(109),char(95),char(108),char(111),char(99),char(97),char(108),char(80),char(111),\nchar(115),char(105),char(116),char(105),char(111),char(110),char(65),char(114),char(114),char(97),char(121),char(80),char(116),char(114),char(0),char(109),char(95),char(108),char(111),char(99),\nchar(97),char(108),char(80),char(111),char(115),char(105),char(116),char(105),char(111),char(110),char(65),char(114),char(114),char(97),char(121),char(83),char(105),char(122),char(101),char(0),\nchar(109),char(95),char(118),char(97),char(108),char(117),char(101),char(0),char(109),char(95),char(112),char(97),char(100),char(91),char(50),char(93),char(0),char(109),char(95),char(118),\nchar(97),char(108),char(117),char(101),char(115),char(91),char(51),char(93),char(0),char(109),char(95),char(112),char(97),char(100),char(0),char(42),char(109),char(95),char(118),char(101),\nchar(114),char(116),char(105),char(99),char(101),char(115),char(51),char(102),char(0),char(42),char(109),char(95),char(118),char(101),char(114),char(116),char(105),char(99),char(101),char(115),\nchar(51),char(100),char(0),char(42),char(109),char(95),char(105),char(110),char(100),char(105),char(99),char(101),char(115),char(51),char(50),char(0),char(42),char(109),char(95),char(51),\nchar(105),char(110),char(100),char(105),char(99),char(101),char(115),char(49),char(54),char(0),char(42),char(109),char(95),char(51),char(105),char(110),char(100),char(105),char(99),char(101),\nchar(115),char(56),char(0),char(42),char(109),char(95),char(105),char(110),char(100),char(105),char(99),char(101),char(115),char(49),char(54),char(0),char(109),char(95),char(110),char(117),\nchar(109),char(84),char(114),char(105),char(97),char(110),char(103),char(108),char(101),char(115),char(0),char(109),char(95),char(110),char(117),char(109),char(86),char(101),char(114),char(116),\nchar(105),char(99),char(101),char(115),char(0),char(42),char(109),char(95),char(109),char(101),char(115),char(104),char(80),char(97),char(114),char(116),char(115),char(80),char(116),char(114),\nchar(0),char(109),char(95),char(115),char(99),char(97),char(108),char(105),char(110),char(103),char(0),char(109),char(95),char(110),char(117),char(109),char(77),char(101),char(115),char(104),\nchar(80),char(97),char(114),char(116),char(115),char(0),char(109),char(95),char(109),char(101),char(115),char(104),char(73),char(110),char(116),char(101),char(114),char(102),char(97),char(99),\nchar(101),char(0),char(42),char(109),char(95),char(113),char(117),char(97),char(110),char(116),char(105),char(122),char(101),char(100),char(70),char(108),char(111),char(97),char(116),char(66),\nchar(118),char(104),char(0),char(42),char(109),char(95),char(113),char(117),char(97),char(110),char(116),char(105),char(122),char(101),char(100),char(68),char(111),char(117),char(98),char(108),\nchar(101),char(66),char(118),char(104),char(0),char(42),char(109),char(95),char(116),char(114),char(105),char(97),char(110),char(103),char(108),char(101),char(73),char(110),char(102),char(111),\nchar(77),char(97),char(112),char(0),char(109),char(95),char(112),char(97),char(100),char(51),char(91),char(52),char(93),char(0),char(109),char(95),char(116),char(114),char(105),char(109),\nchar(101),char(115),char(104),char(83),char(104),char(97),char(112),char(101),char(68),char(97),char(116),char(97),char(0),char(109),char(95),char(116),char(114),char(97),char(110),char(115),\nchar(102),char(111),char(114),char(109),char(0),char(42),char(109),char(95),char(99),char(104),char(105),char(108),char(100),char(83),char(104),char(97),char(112),char(101),char(0),char(109),\nchar(95),char(99),char(104),char(105),char(108),char(100),char(83),char(104),char(97),char(112),char(101),char(84),char(121),char(112),char(101),char(0),char(109),char(95),char(99),char(104),\nchar(105),char(108),char(100),char(77),char(97),char(114),char(103),char(105),char(110),char(0),char(42),char(109),char(95),char(99),char(104),char(105),char(108),char(100),char(83),char(104),\nchar(97),char(112),char(101),char(80),char(116),char(114),char(0),char(109),char(95),char(110),char(117),char(109),char(67),char(104),char(105),char(108),char(100),char(83),char(104),char(97),\nchar(112),char(101),char(115),char(0),char(109),char(95),char(117),char(112),char(65),char(120),char(105),char(115),char(0),char(109),char(95),char(102),char(108),char(97),char(103),char(115),\nchar(0),char(109),char(95),char(101),char(100),char(103),char(101),char(86),char(48),char(86),char(49),char(65),char(110),char(103),char(108),char(101),char(0),char(109),char(95),char(101),\nchar(100),char(103),char(101),char(86),char(49),char(86),char(50),char(65),char(110),char(103),char(108),char(101),char(0),char(109),char(95),char(101),char(100),char(103),char(101),char(86),\nchar(50),char(86),char(48),char(65),char(110),char(103),char(108),char(101),char(0),char(42),char(109),char(95),char(104),char(97),char(115),char(104),char(84),char(97),char(98),char(108),\nchar(101),char(80),char(116),char(114),char(0),char(42),char(109),char(95),char(110),char(101),char(120),char(116),char(80),char(116),char(114),char(0),char(42),char(109),char(95),char(118),\nchar(97),char(108),char(117),char(101),char(65),char(114),char(114),char(97),char(121),char(80),char(116),char(114),char(0),char(42),char(109),char(95),char(107),char(101),char(121),char(65),\nchar(114),char(114),char(97),char(121),char(80),char(116),char(114),char(0),char(109),char(95),char(99),char(111),char(110),char(118),char(101),char(120),char(69),char(112),char(115),char(105),\nchar(108),char(111),char(110),char(0),char(109),char(95),char(112),char(108),char(97),char(110),char(97),char(114),char(69),char(112),char(115),char(105),char(108),char(111),char(110),char(0),\nchar(109),char(95),char(101),char(113),char(117),char(97),char(108),char(86),char(101),char(114),char(116),char(101),char(120),char(84),char(104),char(114),char(101),char(115),char(104),char(111),\nchar(108),char(100),char(0),char(109),char(95),char(101),char(100),char(103),char(101),char(68),char(105),char(115),char(116),char(97),char(110),char(99),char(101),char(84),char(104),char(114),\nchar(101),char(115),char(104),char(111),char(108),char(100),char(0),char(109),char(95),char(122),char(101),char(114),char(111),char(65),char(114),char(101),char(97),char(84),char(104),char(114),\nchar(101),char(115),char(104),char(111),char(108),char(100),char(0),char(109),char(95),char(110),char(101),char(120),char(116),char(83),char(105),char(122),char(101),char(0),char(109),char(95),\nchar(104),char(97),char(115),char(104),char(84),char(97),char(98),char(108),char(101),char(83),char(105),char(122),char(101),char(0),char(109),char(95),char(110),char(117),char(109),char(86),\nchar(97),char(108),char(117),char(101),char(115),char(0),char(109),char(95),char(110),char(117),char(109),char(75),char(101),char(121),char(115),char(0),char(109),char(95),char(103),char(105),\nchar(109),char(112),char(97),char(99),char(116),char(83),char(117),char(98),char(84),char(121),char(112),char(101),char(0),char(42),char(109),char(95),char(117),char(110),char(115),char(99),\nchar(97),char(108),char(101),char(100),char(80),char(111),char(105),char(110),char(116),char(115),char(70),char(108),char(111),char(97),char(116),char(80),char(116),char(114),char(0),char(42),\nchar(109),char(95),char(117),char(110),char(115),char(99),char(97),char(108),char(101),char(100),char(80),char(111),char(105),char(110),char(116),char(115),char(68),char(111),char(117),char(98),\nchar(108),char(101),char(80),char(116),char(114),char(0),char(109),char(95),char(110),char(117),char(109),char(85),char(110),char(115),char(99),char(97),char(108),char(101),char(100),char(80),\nchar(111),char(105),char(110),char(116),char(115),char(0),char(109),char(95),char(112),char(97),char(100),char(100),char(105),char(110),char(103),char(51),char(91),char(52),char(93),char(0),\nchar(42),char(109),char(95),char(98),char(114),char(111),char(97),char(100),char(112),char(104),char(97),char(115),char(101),char(72),char(97),char(110),char(100),char(108),char(101),char(0),\nchar(42),char(109),char(95),char(99),char(111),char(108),char(108),char(105),char(115),char(105),char(111),char(110),char(83),char(104),char(97),char(112),char(101),char(0),char(42),char(109),\nchar(95),char(114),char(111),char(111),char(116),char(67),char(111),char(108),char(108),char(105),char(115),char(105),char(111),char(110),char(83),char(104),char(97),char(112),char(101),char(0),\nchar(109),char(95),char(119),char(111),char(114),char(108),char(100),char(84),char(114),char(97),char(110),char(115),char(102),char(111),char(114),char(109),char(0),char(109),char(95),char(105),\nchar(110),char(116),char(101),char(114),char(112),char(111),char(108),char(97),char(116),char(105),char(111),char(110),char(87),char(111),char(114),char(108),char(100),char(84),char(114),char(97),\nchar(110),char(115),char(102),char(111),char(114),char(109),char(0),char(109),char(95),char(105),char(110),char(116),char(101),char(114),char(112),char(111),char(108),char(97),char(116),char(105),\nchar(111),char(110),char(76),char(105),char(110),char(101),char(97),char(114),char(86),char(101),char(108),char(111),char(99),char(105),char(116),char(121),char(0),char(109),char(95),char(105),\nchar(110),char(116),char(101),char(114),char(112),char(111),char(108),char(97),char(116),char(105),char(111),char(110),char(65),char(110),char(103),char(117),char(108),char(97),char(114),char(86),\nchar(101),char(108),char(111),char(99),char(105),char(116),char(121),char(0),char(109),char(95),char(97),char(110),char(105),char(115),char(111),char(116),char(114),char(111),char(112),char(105),\nchar(99),char(70),char(114),char(105),char(99),char(116),char(105),char(111),char(110),char(0),char(109),char(95),char(99),char(111),char(110),char(116),char(97),char(99),char(116),char(80),\nchar(114),char(111),char(99),char(101),char(115),char(115),char(105),char(110),char(103),char(84),char(104),char(114),char(101),char(115),char(104),char(111),char(108),char(100),char(0),char(109),\nchar(95),char(100),char(101),char(97),char(99),char(116),char(105),char(118),char(97),char(116),char(105),char(111),char(110),char(84),char(105),char(109),char(101),char(0),char(109),char(95),\nchar(102),char(114),char(105),char(99),char(116),char(105),char(111),char(110),char(0),char(109),char(95),char(114),char(111),char(108),char(108),char(105),char(110),char(103),char(70),char(114),\nchar(105),char(99),char(116),char(105),char(111),char(110),char(0),char(109),char(95),char(114),char(101),char(115),char(116),char(105),char(116),char(117),char(116),char(105),char(111),char(110),\nchar(0),char(109),char(95),char(104),char(105),char(116),char(70),char(114),char(97),char(99),char(116),char(105),char(111),char(110),char(0),char(109),char(95),char(99),char(99),char(100),\nchar(83),char(119),char(101),char(112),char(116),char(83),char(112),char(104),char(101),char(114),char(101),char(82),char(97),char(100),char(105),char(117),char(115),char(0),char(109),char(95),\nchar(99),char(99),char(100),char(77),char(111),char(116),char(105),char(111),char(110),char(84),char(104),char(114),char(101),char(115),char(104),char(111),char(108),char(100),char(0),char(109),\nchar(95),char(104),char(97),char(115),char(65),char(110),char(105),char(115),char(111),char(116),char(114),char(111),char(112),char(105),char(99),char(70),char(114),char(105),char(99),char(116),\nchar(105),char(111),char(110),char(0),char(109),char(95),char(99),char(111),char(108),char(108),char(105),char(115),char(105),char(111),char(110),char(70),char(108),char(97),char(103),char(115),\nchar(0),char(109),char(95),char(105),char(115),char(108),char(97),char(110),char(100),char(84),char(97),char(103),char(49),char(0),char(109),char(95),char(99),char(111),char(109),char(112),\nchar(97),char(110),char(105),char(111),char(110),char(73),char(100),char(0),char(109),char(95),char(97),char(99),char(116),char(105),char(118),char(97),char(116),char(105),char(111),char(110),\nchar(83),char(116),char(97),char(116),char(101),char(49),char(0),char(109),char(95),char(105),char(110),char(116),char(101),char(114),char(110),char(97),char(108),char(84),char(121),char(112),\nchar(101),char(0),char(109),char(95),char(99),char(104),char(101),char(99),char(107),char(67),char(111),char(108),char(108),char(105),char(100),char(101),char(87),char(105),char(116),char(104),\nchar(0),char(109),char(95),char(115),char(111),char(108),char(118),char(101),char(114),char(73),char(110),char(102),char(111),char(0),char(109),char(95),char(103),char(114),char(97),char(118),\nchar(105),char(116),char(121),char(0),char(109),char(95),char(99),char(111),char(108),char(108),char(105),char(115),char(105),char(111),char(110),char(79),char(98),char(106),char(101),char(99),\nchar(116),char(68),char(97),char(116),char(97),char(0),char(109),char(95),char(105),char(110),char(118),char(73),char(110),char(101),char(114),char(116),char(105),char(97),char(84),char(101),\nchar(110),char(115),char(111),char(114),char(87),char(111),char(114),char(108),char(100),char(0),char(109),char(95),char(108),char(105),char(110),char(101),char(97),char(114),char(86),char(101),\nchar(108),char(111),char(99),char(105),char(116),char(121),char(0),char(109),char(95),char(97),char(110),char(103),char(117),char(108),char(97),char(114),char(86),char(101),char(108),char(111),\nchar(99),char(105),char(116),char(121),char(0),char(109),char(95),char(97),char(110),char(103),char(117),char(108),char(97),char(114),char(70),char(97),char(99),char(116),char(111),char(114),\nchar(0),char(109),char(95),char(108),char(105),char(110),char(101),char(97),char(114),char(70),char(97),char(99),char(116),char(111),char(114),char(0),char(109),char(95),char(103),char(114),\nchar(97),char(118),char(105),char(116),char(121),char(95),char(97),char(99),char(99),char(101),char(108),char(101),char(114),char(97),char(116),char(105),char(111),char(110),char(0),char(109),\nchar(95),char(105),char(110),char(118),char(73),char(110),char(101),char(114),char(116),char(105),char(97),char(76),char(111),char(99),char(97),char(108),char(0),char(109),char(95),char(116),\nchar(111),char(116),char(97),char(108),char(70),char(111),char(114),char(99),char(101),char(0),char(109),char(95),char(116),char(111),char(116),char(97),char(108),char(84),char(111),char(114),\nchar(113),char(117),char(101),char(0),char(109),char(95),char(105),char(110),char(118),char(101),char(114),char(115),char(101),char(77),char(97),char(115),char(115),char(0),char(109),char(95),\nchar(108),char(105),char(110),char(101),char(97),char(114),char(68),char(97),char(109),char(112),char(105),char(110),char(103),char(0),char(109),char(95),char(97),char(110),char(103),char(117),\nchar(108),char(97),char(114),char(68),char(97),char(109),char(112),char(105),char(110),char(103),char(0),char(109),char(95),char(97),char(100),char(100),char(105),char(116),char(105),char(111),\nchar(110),char(97),char(108),char(68),char(97),char(109),char(112),char(105),char(110),char(103),char(70),char(97),char(99),char(116),char(111),char(114),char(0),char(109),char(95),char(97),\nchar(100),char(100),char(105),char(116),char(105),char(111),char(110),char(97),char(108),char(76),char(105),char(110),char(101),char(97),char(114),char(68),char(97),char(109),char(112),char(105),\nchar(110),char(103),char(84),char(104),char(114),char(101),char(115),char(104),char(111),char(108),char(100),char(83),char(113),char(114),char(0),char(109),char(95),char(97),char(100),char(100),\nchar(105),char(116),char(105),char(111),char(110),char(97),char(108),char(65),char(110),char(103),char(117),char(108),char(97),char(114),char(68),char(97),char(109),char(112),char(105),char(110),\nchar(103),char(84),char(104),char(114),char(101),char(115),char(104),char(111),char(108),char(100),char(83),char(113),char(114),char(0),char(109),char(95),char(97),char(100),char(100),char(105),\nchar(116),char(105),char(111),char(110),char(97),char(108),char(65),char(110),char(103),char(117),char(108),char(97),char(114),char(68),char(97),char(109),char(112),char(105),char(110),char(103),\nchar(70),char(97),char(99),char(116),char(111),char(114),char(0),char(109),char(95),char(108),char(105),char(110),char(101),char(97),char(114),char(83),char(108),char(101),char(101),char(112),\nchar(105),char(110),char(103),char(84),char(104),char(114),char(101),char(115),char(104),char(111),char(108),char(100),char(0),char(109),char(95),char(97),char(110),char(103),char(117),char(108),\nchar(97),char(114),char(83),char(108),char(101),char(101),char(112),char(105),char(110),char(103),char(84),char(104),char(114),char(101),char(115),char(104),char(111),char(108),char(100),char(0),\nchar(109),char(95),char(97),char(100),char(100),char(105),char(116),char(105),char(111),char(110),char(97),char(108),char(68),char(97),char(109),char(112),char(105),char(110),char(103),char(0),\nchar(109),char(95),char(110),char(117),char(109),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(82),char(111),char(119),char(115),char(0),\nchar(110),char(117),char(98),char(0),char(42),char(109),char(95),char(114),char(98),char(65),char(0),char(42),char(109),char(95),char(114),char(98),char(66),char(0),char(109),char(95),\nchar(111),char(98),char(106),char(101),char(99),char(116),char(84),char(121),char(112),char(101),char(0),char(109),char(95),char(117),char(115),char(101),char(114),char(67),char(111),char(110),\nchar(115),char(116),char(114),char(97),char(105),char(110),char(116),char(84),char(121),char(112),char(101),char(0),char(109),char(95),char(117),char(115),char(101),char(114),char(67),char(111),\nchar(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(73),char(100),char(0),char(109),char(95),char(110),char(101),char(101),char(100),char(115),char(70),char(101),\nchar(101),char(100),char(98),char(97),char(99),char(107),char(0),char(109),char(95),char(97),char(112),char(112),char(108),char(105),char(101),char(100),char(73),char(109),char(112),char(117),\nchar(108),char(115),char(101),char(0),char(109),char(95),char(100),char(98),char(103),char(68),char(114),char(97),char(119),char(83),char(105),char(122),char(101),char(0),char(109),char(95),\nchar(100),char(105),char(115),char(97),char(98),char(108),char(101),char(67),char(111),char(108),char(108),char(105),char(115),char(105),char(111),char(110),char(115),char(66),char(101),char(116),\nchar(119),char(101),char(101),char(110),char(76),char(105),char(110),char(107),char(101),char(100),char(66),char(111),char(100),char(105),char(101),char(115),char(0),char(109),char(95),char(111),\nchar(118),char(101),char(114),char(114),char(105),char(100),char(101),char(78),char(117),char(109),char(83),char(111),char(108),char(118),char(101),char(114),char(73),char(116),char(101),char(114),\nchar(97),char(116),char(105),char(111),char(110),char(115),char(0),char(109),char(95),char(98),char(114),char(101),char(97),char(107),char(105),char(110),char(103),char(73),char(109),char(112),\nchar(117),char(108),char(115),char(101),char(84),char(104),char(114),char(101),char(115),char(104),char(111),char(108),char(100),char(0),char(109),char(95),char(105),char(115),char(69),char(110),\nchar(97),char(98),char(108),char(101),char(100),char(0),char(109),char(95),char(116),char(121),char(112),char(101),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),\nchar(110),char(116),char(68),char(97),char(116),char(97),char(0),char(109),char(95),char(112),char(105),char(118),char(111),char(116),char(73),char(110),char(65),char(0),char(109),char(95),\nchar(112),char(105),char(118),char(111),char(116),char(73),char(110),char(66),char(0),char(109),char(95),char(114),char(98),char(65),char(70),char(114),char(97),char(109),char(101),char(0),\nchar(109),char(95),char(114),char(98),char(66),char(70),char(114),char(97),char(109),char(101),char(0),char(109),char(95),char(117),char(115),char(101),char(82),char(101),char(102),char(101),\nchar(114),char(101),char(110),char(99),char(101),char(70),char(114),char(97),char(109),char(101),char(65),char(0),char(109),char(95),char(97),char(110),char(103),char(117),char(108),char(97),\nchar(114),char(79),char(110),char(108),char(121),char(0),char(109),char(95),char(101),char(110),char(97),char(98),char(108),char(101),char(65),char(110),char(103),char(117),char(108),char(97),\nchar(114),char(77),char(111),char(116),char(111),char(114),char(0),char(109),char(95),char(109),char(111),char(116),char(111),char(114),char(84),char(97),char(114),char(103),char(101),char(116),\nchar(86),char(101),char(108),char(111),char(99),char(105),char(116),char(121),char(0),char(109),char(95),char(109),char(97),char(120),char(77),char(111),char(116),char(111),char(114),char(73),\nchar(109),char(112),char(117),char(108),char(115),char(101),char(0),char(109),char(95),char(108),char(111),char(119),char(101),char(114),char(76),char(105),char(109),char(105),char(116),char(0),\nchar(109),char(95),char(117),char(112),char(112),char(101),char(114),char(76),char(105),char(109),char(105),char(116),char(0),char(109),char(95),char(108),char(105),char(109),char(105),char(116),\nchar(83),char(111),char(102),char(116),char(110),char(101),char(115),char(115),char(0),char(109),char(95),char(98),char(105),char(97),char(115),char(70),char(97),char(99),char(116),char(111),\nchar(114),char(0),char(109),char(95),char(114),char(101),char(108),char(97),char(120),char(97),char(116),char(105),char(111),char(110),char(70),char(97),char(99),char(116),char(111),char(114),\nchar(0),char(109),char(95),char(115),char(119),char(105),char(110),char(103),char(83),char(112),char(97),char(110),char(49),char(0),char(109),char(95),char(115),char(119),char(105),char(110),\nchar(103),char(83),char(112),char(97),char(110),char(50),char(0),char(109),char(95),char(116),char(119),char(105),char(115),char(116),char(83),char(112),char(97),char(110),char(0),char(109),\nchar(95),char(100),char(97),char(109),char(112),char(105),char(110),char(103),char(0),char(109),char(95),char(108),char(105),char(110),char(101),char(97),char(114),char(85),char(112),char(112),\nchar(101),char(114),char(76),char(105),char(109),char(105),char(116),char(0),char(109),char(95),char(108),char(105),char(110),char(101),char(97),char(114),char(76),char(111),char(119),char(101),\nchar(114),char(76),char(105),char(109),char(105),char(116),char(0),char(109),char(95),char(97),char(110),char(103),char(117),char(108),char(97),char(114),char(85),char(112),char(112),char(101),\nchar(114),char(76),char(105),char(109),char(105),char(116),char(0),char(109),char(95),char(97),char(110),char(103),char(117),char(108),char(97),char(114),char(76),char(111),char(119),char(101),\nchar(114),char(76),char(105),char(109),char(105),char(116),char(0),char(109),char(95),char(117),char(115),char(101),char(76),char(105),char(110),char(101),char(97),char(114),char(82),char(101),\nchar(102),char(101),char(114),char(101),char(110),char(99),char(101),char(70),char(114),char(97),char(109),char(101),char(65),char(0),char(109),char(95),char(117),char(115),char(101),char(79),\nchar(102),char(102),char(115),char(101),char(116),char(70),char(111),char(114),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(70),char(114),\nchar(97),char(109),char(101),char(0),char(109),char(95),char(54),char(100),char(111),char(102),char(68),char(97),char(116),char(97),char(0),char(109),char(95),char(115),char(112),char(114),\nchar(105),char(110),char(103),char(69),char(110),char(97),char(98),char(108),char(101),char(100),char(91),char(54),char(93),char(0),char(109),char(95),char(101),char(113),char(117),char(105),\nchar(108),char(105),char(98),char(114),char(105),char(117),char(109),char(80),char(111),char(105),char(110),char(116),char(91),char(54),char(93),char(0),char(109),char(95),char(115),char(112),\nchar(114),char(105),char(110),char(103),char(83),char(116),char(105),char(102),char(102),char(110),char(101),char(115),char(115),char(91),char(54),char(93),char(0),char(109),char(95),char(115),\nchar(112),char(114),char(105),char(110),char(103),char(68),char(97),char(109),char(112),char(105),char(110),char(103),char(91),char(54),char(93),char(0),char(109),char(95),char(116),char(97),\nchar(117),char(0),char(109),char(95),char(116),char(105),char(109),char(101),char(83),char(116),char(101),char(112),char(0),char(109),char(95),char(109),char(97),char(120),char(69),char(114),\nchar(114),char(111),char(114),char(82),char(101),char(100),char(117),char(99),char(116),char(105),char(111),char(110),char(0),char(109),char(95),char(115),char(111),char(114),char(0),char(109),\nchar(95),char(101),char(114),char(112),char(0),char(109),char(95),char(101),char(114),char(112),char(50),char(0),char(109),char(95),char(103),char(108),char(111),char(98),char(97),char(108),\nchar(67),char(102),char(109),char(0),char(109),char(95),char(115),char(112),char(108),char(105),char(116),char(73),char(109),char(112),char(117),char(108),char(115),char(101),char(80),char(101),\nchar(110),char(101),char(116),char(114),char(97),char(116),char(105),char(111),char(110),char(84),char(104),char(114),char(101),char(115),char(104),char(111),char(108),char(100),char(0),char(109),\nchar(95),char(115),char(112),char(108),char(105),char(116),char(73),char(109),char(112),char(117),char(108),char(115),char(101),char(84),char(117),char(114),char(110),char(69),char(114),char(112),\nchar(0),char(109),char(95),char(108),char(105),char(110),char(101),char(97),char(114),char(83),char(108),char(111),char(112),char(0),char(109),char(95),char(119),char(97),char(114),char(109),\nchar(115),char(116),char(97),char(114),char(116),char(105),char(110),char(103),char(70),char(97),char(99),char(116),char(111),char(114),char(0),char(109),char(95),char(109),char(97),char(120),\nchar(71),char(121),char(114),char(111),char(115),char(99),char(111),char(112),char(105),char(99),char(70),char(111),char(114),char(99),char(101),char(0),char(109),char(95),char(115),char(105),\nchar(110),char(103),char(108),char(101),char(65),char(120),char(105),char(115),char(82),char(111),char(108),char(108),char(105),char(110),char(103),char(70),char(114),char(105),char(99),char(116),\nchar(105),char(111),char(110),char(84),char(104),char(114),char(101),char(115),char(104),char(111),char(108),char(100),char(0),char(109),char(95),char(110),char(117),char(109),char(73),char(116),\nchar(101),char(114),char(97),char(116),char(105),char(111),char(110),char(115),char(0),char(109),char(95),char(115),char(111),char(108),char(118),char(101),char(114),char(77),char(111),char(100),\nchar(101),char(0),char(109),char(95),char(114),char(101),char(115),char(116),char(105),char(110),char(103),char(67),char(111),char(110),char(116),char(97),char(99),char(116),char(82),char(101),\nchar(115),char(116),char(105),char(116),char(117),char(116),char(105),char(111),char(110),char(84),char(104),char(114),char(101),char(115),char(104),char(111),char(108),char(100),char(0),char(109),\nchar(95),char(109),char(105),char(110),char(105),char(109),char(117),char(109),char(83),char(111),char(108),char(118),char(101),char(114),char(66),char(97),char(116),char(99),char(104),char(83),\nchar(105),char(122),char(101),char(0),char(109),char(95),char(115),char(112),char(108),char(105),char(116),char(73),char(109),char(112),char(117),char(108),char(115),char(101),char(0),char(109),\nchar(95),char(108),char(105),char(110),char(101),char(97),char(114),char(83),char(116),char(105),char(102),char(102),char(110),char(101),char(115),char(115),char(0),char(109),char(95),char(97),\nchar(110),char(103),char(117),char(108),char(97),char(114),char(83),char(116),char(105),char(102),char(102),char(110),char(101),char(115),char(115),char(0),char(109),char(95),char(118),char(111),\nchar(108),char(117),char(109),char(101),char(83),char(116),char(105),char(102),char(102),char(110),char(101),char(115),char(115),char(0),char(42),char(109),char(95),char(109),char(97),char(116),\nchar(101),char(114),char(105),char(97),char(108),char(0),char(109),char(95),char(112),char(111),char(115),char(105),char(116),char(105),char(111),char(110),char(0),char(109),char(95),char(112),\nchar(114),char(101),char(118),char(105),char(111),char(117),char(115),char(80),char(111),char(115),char(105),char(116),char(105),char(111),char(110),char(0),char(109),char(95),char(118),char(101),\nchar(108),char(111),char(99),char(105),char(116),char(121),char(0),char(109),char(95),char(97),char(99),char(99),char(117),char(109),char(117),char(108),char(97),char(116),char(101),char(100),\nchar(70),char(111),char(114),char(99),char(101),char(0),char(109),char(95),char(110),char(111),char(114),char(109),char(97),char(108),char(0),char(109),char(95),char(97),char(114),char(101),\nchar(97),char(0),char(109),char(95),char(97),char(116),char(116),char(97),char(99),char(104),char(0),char(109),char(95),char(110),char(111),char(100),char(101),char(73),char(110),char(100),\nchar(105),char(99),char(101),char(115),char(91),char(50),char(93),char(0),char(109),char(95),char(114),char(101),char(115),char(116),char(76),char(101),char(110),char(103),char(116),char(104),\nchar(0),char(109),char(95),char(98),char(98),char(101),char(110),char(100),char(105),char(110),char(103),char(0),char(109),char(95),char(110),char(111),char(100),char(101),char(73),char(110),\nchar(100),char(105),char(99),char(101),char(115),char(91),char(51),char(93),char(0),char(109),char(95),char(114),char(101),char(115),char(116),char(65),char(114),char(101),char(97),char(0),\nchar(109),char(95),char(99),char(48),char(91),char(52),char(93),char(0),char(109),char(95),char(110),char(111),char(100),char(101),char(73),char(110),char(100),char(105),char(99),char(101),\nchar(115),char(91),char(52),char(93),char(0),char(109),char(95),char(114),char(101),char(115),char(116),char(86),char(111),char(108),char(117),char(109),char(101),char(0),char(109),char(95),\nchar(99),char(49),char(0),char(109),char(95),char(99),char(50),char(0),char(109),char(95),char(99),char(48),char(0),char(109),char(95),char(108),char(111),char(99),char(97),char(108),\nchar(70),char(114),char(97),char(109),char(101),char(0),char(42),char(109),char(95),char(114),char(105),char(103),char(105),char(100),char(66),char(111),char(100),char(121),char(0),char(109),\nchar(95),char(110),char(111),char(100),char(101),char(73),char(110),char(100),char(101),char(120),char(0),char(109),char(95),char(97),char(101),char(114),char(111),char(77),char(111),char(100),\nchar(101),char(108),char(0),char(109),char(95),char(98),char(97),char(117),char(109),char(103),char(97),char(114),char(116),char(101),char(0),char(109),char(95),char(100),char(114),char(97),\nchar(103),char(0),char(109),char(95),char(108),char(105),char(102),char(116),char(0),char(109),char(95),char(112),char(114),char(101),char(115),char(115),char(117),char(114),char(101),char(0),\nchar(109),char(95),char(118),char(111),char(108),char(117),char(109),char(101),char(0),char(109),char(95),char(100),char(121),char(110),char(97),char(109),char(105),char(99),char(70),char(114),\nchar(105),char(99),char(116),char(105),char(111),char(110),char(0),char(109),char(95),char(112),char(111),char(115),char(101),char(77),char(97),char(116),char(99),char(104),char(0),char(109),\nchar(95),char(114),char(105),char(103),char(105),char(100),char(67),char(111),char(110),char(116),char(97),char(99),char(116),char(72),char(97),char(114),char(100),char(110),char(101),char(115),\nchar(115),char(0),char(109),char(95),char(107),char(105),char(110),char(101),char(116),char(105),char(99),char(67),char(111),char(110),char(116),char(97),char(99),char(116),char(72),char(97),\nchar(114),char(100),char(110),char(101),char(115),char(115),char(0),char(109),char(95),char(115),char(111),char(102),char(116),char(67),char(111),char(110),char(116),char(97),char(99),char(116),\nchar(72),char(97),char(114),char(100),char(110),char(101),char(115),char(115),char(0),char(109),char(95),char(97),char(110),char(99),char(104),char(111),char(114),char(72),char(97),char(114),\nchar(100),char(110),char(101),char(115),char(115),char(0),char(109),char(95),char(115),char(111),char(102),char(116),char(82),char(105),char(103),char(105),char(100),char(67),char(108),char(117),\nchar(115),char(116),char(101),char(114),char(72),char(97),char(114),char(100),char(110),char(101),char(115),char(115),char(0),char(109),char(95),char(115),char(111),char(102),char(116),char(75),\nchar(105),char(110),char(101),char(116),char(105),char(99),char(67),char(108),char(117),char(115),char(116),char(101),char(114),char(72),char(97),char(114),char(100),char(110),char(101),char(115),\nchar(115),char(0),char(109),char(95),char(115),char(111),char(102),char(116),char(83),char(111),char(102),char(116),char(67),char(108),char(117),char(115),char(116),char(101),char(114),char(72),\nchar(97),char(114),char(100),char(110),char(101),char(115),char(115),char(0),char(109),char(95),char(115),char(111),char(102),char(116),char(82),char(105),char(103),char(105),char(100),char(67),\nchar(108),char(117),char(115),char(116),char(101),char(114),char(73),char(109),char(112),char(117),char(108),char(115),char(101),char(83),char(112),char(108),char(105),char(116),char(0),char(109),\nchar(95),char(115),char(111),char(102),char(116),char(75),char(105),char(110),char(101),char(116),char(105),char(99),char(67),char(108),char(117),char(115),char(116),char(101),char(114),char(73),\nchar(109),char(112),char(117),char(108),char(115),char(101),char(83),char(112),char(108),char(105),char(116),char(0),char(109),char(95),char(115),char(111),char(102),char(116),char(83),char(111),\nchar(102),char(116),char(67),char(108),char(117),char(115),char(116),char(101),char(114),char(73),char(109),char(112),char(117),char(108),char(115),char(101),char(83),char(112),char(108),char(105),\nchar(116),char(0),char(109),char(95),char(109),char(97),char(120),char(86),char(111),char(108),char(117),char(109),char(101),char(0),char(109),char(95),char(116),char(105),char(109),char(101),\nchar(83),char(99),char(97),char(108),char(101),char(0),char(109),char(95),char(118),char(101),char(108),char(111),char(99),char(105),char(116),char(121),char(73),char(116),char(101),char(114),\nchar(97),char(116),char(105),char(111),char(110),char(115),char(0),char(109),char(95),char(112),char(111),char(115),char(105),char(116),char(105),char(111),char(110),char(73),char(116),char(101),\nchar(114),char(97),char(116),char(105),char(111),char(110),char(115),char(0),char(109),char(95),char(100),char(114),char(105),char(102),char(116),char(73),char(116),char(101),char(114),char(97),\nchar(116),char(105),char(111),char(110),char(115),char(0),char(109),char(95),char(99),char(108),char(117),char(115),char(116),char(101),char(114),char(73),char(116),char(101),char(114),char(97),\nchar(116),char(105),char(111),char(110),char(115),char(0),char(109),char(95),char(114),char(111),char(116),char(0),char(109),char(95),char(115),char(99),char(97),char(108),char(101),char(0),\nchar(109),char(95),char(97),char(113),char(113),char(0),char(109),char(95),char(99),char(111),char(109),char(0),char(42),char(109),char(95),char(112),char(111),char(115),char(105),char(116),\nchar(105),char(111),char(110),char(115),char(0),char(42),char(109),char(95),char(119),char(101),char(105),char(103),char(104),char(116),char(115),char(0),char(109),char(95),char(110),char(117),\nchar(109),char(80),char(111),char(115),char(105),char(116),char(105),char(111),char(110),char(115),char(0),char(109),char(95),char(110),char(117),char(109),char(87),char(101),char(105),char(103),\nchar(116),char(115),char(0),char(109),char(95),char(98),char(118),char(111),char(108),char(117),char(109),char(101),char(0),char(109),char(95),char(98),char(102),char(114),char(97),char(109),\nchar(101),char(0),char(109),char(95),char(102),char(114),char(97),char(109),char(101),char(120),char(102),char(111),char(114),char(109),char(0),char(109),char(95),char(108),char(111),char(99),\nchar(105),char(105),char(0),char(109),char(95),char(105),char(110),char(118),char(119),char(105),char(0),char(109),char(95),char(118),char(105),char(109),char(112),char(117),char(108),char(115),\nchar(101),char(115),char(91),char(50),char(93),char(0),char(109),char(95),char(100),char(105),char(109),char(112),char(117),char(108),char(115),char(101),char(115),char(91),char(50),char(93),\nchar(0),char(109),char(95),char(108),char(118),char(0),char(109),char(95),char(97),char(118),char(0),char(42),char(109),char(95),char(102),char(114),char(97),char(109),char(101),char(114),\nchar(101),char(102),char(115),char(0),char(42),char(109),char(95),char(110),char(111),char(100),char(101),char(73),char(110),char(100),char(105),char(99),char(101),char(115),char(0),char(42),\nchar(109),char(95),char(109),char(97),char(115),char(115),char(101),char(115),char(0),char(109),char(95),char(110),char(117),char(109),char(70),char(114),char(97),char(109),char(101),char(82),\nchar(101),char(102),char(115),char(0),char(109),char(95),char(110),char(117),char(109),char(78),char(111),char(100),char(101),char(115),char(0),char(109),char(95),char(110),char(117),char(109),\nchar(77),char(97),char(115),char(115),char(101),char(115),char(0),char(109),char(95),char(105),char(100),char(109),char(97),char(115),char(115),char(0),char(109),char(95),char(105),char(109),\nchar(97),char(115),char(115),char(0),char(109),char(95),char(110),char(118),char(105),char(109),char(112),char(117),char(108),char(115),char(101),char(115),char(0),char(109),char(95),char(110),\nchar(100),char(105),char(109),char(112),char(117),char(108),char(115),char(101),char(115),char(0),char(109),char(95),char(110),char(100),char(97),char(109),char(112),char(105),char(110),char(103),\nchar(0),char(109),char(95),char(108),char(100),char(97),char(109),char(112),char(105),char(110),char(103),char(0),char(109),char(95),char(97),char(100),char(97),char(109),char(112),char(105),\nchar(110),char(103),char(0),char(109),char(95),char(109),char(97),char(116),char(99),char(104),char(105),char(110),char(103),char(0),char(109),char(95),char(109),char(97),char(120),char(83),\nchar(101),char(108),char(102),char(67),char(111),char(108),char(108),char(105),char(115),char(105),char(111),char(110),char(73),char(109),char(112),char(117),char(108),char(115),char(101),char(0),\nchar(109),char(95),char(115),char(101),char(108),char(102),char(67),char(111),char(108),char(108),char(105),char(115),char(105),char(111),char(110),char(73),char(109),char(112),char(117),char(108),\nchar(115),char(101),char(70),char(97),char(99),char(116),char(111),char(114),char(0),char(109),char(95),char(99),char(111),char(110),char(116),char(97),char(105),char(110),char(115),char(65),\nchar(110),char(99),char(104),char(111),char(114),char(0),char(109),char(95),char(99),char(111),char(108),char(108),char(105),char(100),char(101),char(0),char(109),char(95),char(99),char(108),\nchar(117),char(115),char(116),char(101),char(114),char(73),char(110),char(100),char(101),char(120),char(0),char(42),char(109),char(95),char(98),char(111),char(100),char(121),char(65),char(0),\nchar(42),char(109),char(95),char(98),char(111),char(100),char(121),char(66),char(0),char(109),char(95),char(114),char(101),char(102),char(115),char(91),char(50),char(93),char(0),char(109),\nchar(95),char(99),char(102),char(109),char(0),char(109),char(95),char(115),char(112),char(108),char(105),char(116),char(0),char(109),char(95),char(100),char(101),char(108),char(101),char(116),\nchar(101),char(0),char(109),char(95),char(114),char(101),char(108),char(80),char(111),char(115),char(105),char(116),char(105),char(111),char(110),char(91),char(50),char(93),char(0),char(109),\nchar(95),char(98),char(111),char(100),char(121),char(65),char(116),char(121),char(112),char(101),char(0),char(109),char(95),char(98),char(111),char(100),char(121),char(66),char(116),char(121),\nchar(112),char(101),char(0),char(109),char(95),char(106),char(111),char(105),char(110),char(116),char(84),char(121),char(112),char(101),char(0),char(42),char(109),char(95),char(112),char(111),\nchar(115),char(101),char(0),char(42),char(42),char(109),char(95),char(109),char(97),char(116),char(101),char(114),char(105),char(97),char(108),char(115),char(0),char(42),char(109),char(95),\nchar(110),char(111),char(100),char(101),char(115),char(0),char(42),char(109),char(95),char(108),char(105),char(110),char(107),char(115),char(0),char(42),char(109),char(95),char(102),char(97),\nchar(99),char(101),char(115),char(0),char(42),char(109),char(95),char(116),char(101),char(116),char(114),char(97),char(104),char(101),char(100),char(114),char(97),char(0),char(42),char(109),\nchar(95),char(97),char(110),char(99),char(104),char(111),char(114),char(115),char(0),char(42),char(109),char(95),char(99),char(108),char(117),char(115),char(116),char(101),char(114),char(115),\nchar(0),char(42),char(109),char(95),char(106),char(111),char(105),char(110),char(116),char(115),char(0),char(109),char(95),char(110),char(117),char(109),char(77),char(97),char(116),char(101),\nchar(114),char(105),char(97),char(108),char(115),char(0),char(109),char(95),char(110),char(117),char(109),char(76),char(105),char(110),char(107),char(115),char(0),char(109),char(95),char(110),\nchar(117),char(109),char(70),char(97),char(99),char(101),char(115),char(0),char(109),char(95),char(110),char(117),char(109),char(84),char(101),char(116),char(114),char(97),char(104),char(101),\nchar(100),char(114),char(97),char(0),char(109),char(95),char(110),char(117),char(109),char(65),char(110),char(99),char(104),char(111),char(114),char(115),char(0),char(109),char(95),char(110),\nchar(117),char(109),char(67),char(108),char(117),char(115),char(116),char(101),char(114),char(115),char(0),char(109),char(95),char(110),char(117),char(109),char(74),char(111),char(105),char(110),\nchar(116),char(115),char(0),char(109),char(95),char(99),char(111),char(110),char(102),char(105),char(103),char(0),char(84),char(89),char(80),char(69),char(76),char(0),char(0),char(0),\nchar(99),char(104),char(97),char(114),char(0),char(117),char(99),char(104),char(97),char(114),char(0),char(115),char(104),char(111),char(114),char(116),char(0),char(117),char(115),char(104),\nchar(111),char(114),char(116),char(0),char(105),char(110),char(116),char(0),char(108),char(111),char(110),char(103),char(0),char(117),char(108),char(111),char(110),char(103),char(0),char(102),\nchar(108),char(111),char(97),char(116),char(0),char(100),char(111),char(117),char(98),char(108),char(101),char(0),char(118),char(111),char(105),char(100),char(0),char(80),char(111),char(105),\nchar(110),char(116),char(101),char(114),char(65),char(114),char(114),char(97),char(121),char(0),char(98),char(116),char(80),char(104),char(121),char(115),char(105),char(99),char(115),char(83),\nchar(121),char(115),char(116),char(101),char(109),char(0),char(76),char(105),char(115),char(116),char(66),char(97),char(115),char(101),char(0),char(98),char(116),char(86),char(101),char(99),\nchar(116),char(111),char(114),char(51),char(70),char(108),char(111),char(97),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(86),char(101),char(99),char(116),\nchar(111),char(114),char(51),char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(77),char(97),char(116),char(114),\nchar(105),char(120),char(51),char(120),char(51),char(70),char(108),char(111),char(97),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(77),char(97),char(116),\nchar(114),char(105),char(120),char(51),char(120),char(51),char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(84),\nchar(114),char(97),char(110),char(115),char(102),char(111),char(114),char(109),char(70),char(108),char(111),char(97),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),\nchar(84),char(114),char(97),char(110),char(115),char(102),char(111),char(114),char(109),char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97),char(116),char(97),char(0),\nchar(98),char(116),char(66),char(118),char(104),char(83),char(117),char(98),char(116),char(114),char(101),char(101),char(73),char(110),char(102),char(111),char(68),char(97),char(116),char(97),\nchar(0),char(98),char(116),char(79),char(112),char(116),char(105),char(109),char(105),char(122),char(101),char(100),char(66),char(118),char(104),char(78),char(111),char(100),char(101),char(70),\nchar(108),char(111),char(97),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(79),char(112),char(116),char(105),char(109),char(105),char(122),char(101),char(100),\nchar(66),char(118),char(104),char(78),char(111),char(100),char(101),char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),\nchar(81),char(117),char(97),char(110),char(116),char(105),char(122),char(101),char(100),char(66),char(118),char(104),char(78),char(111),char(100),char(101),char(68),char(97),char(116),char(97),\nchar(0),char(98),char(116),char(81),char(117),char(97),char(110),char(116),char(105),char(122),char(101),char(100),char(66),char(118),char(104),char(70),char(108),char(111),char(97),char(116),\nchar(68),char(97),char(116),char(97),char(0),char(98),char(116),char(81),char(117),char(97),char(110),char(116),char(105),char(122),char(101),char(100),char(66),char(118),char(104),char(68),\nchar(111),char(117),char(98),char(108),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(67),char(111),char(108),char(108),char(105),char(115),char(105),char(111),\nchar(110),char(83),char(104),char(97),char(112),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(83),char(116),char(97),char(116),char(105),char(99),char(80),\nchar(108),char(97),char(110),char(101),char(83),char(104),char(97),char(112),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(67),char(111),char(110),char(118),\nchar(101),char(120),char(73),char(110),char(116),char(101),char(114),char(110),char(97),char(108),char(83),char(104),char(97),char(112),char(101),char(68),char(97),char(116),char(97),char(0),\nchar(98),char(116),char(80),char(111),char(115),char(105),char(116),char(105),char(111),char(110),char(65),char(110),char(100),char(82),char(97),char(100),char(105),char(117),char(115),char(0),\nchar(98),char(116),char(77),char(117),char(108),char(116),char(105),char(83),char(112),char(104),char(101),char(114),char(101),char(83),char(104),char(97),char(112),char(101),char(68),char(97),\nchar(116),char(97),char(0),char(98),char(116),char(73),char(110),char(116),char(73),char(110),char(100),char(101),char(120),char(68),char(97),char(116),char(97),char(0),char(98),char(116),\nchar(83),char(104),char(111),char(114),char(116),char(73),char(110),char(116),char(73),char(110),char(100),char(101),char(120),char(68),char(97),char(116),char(97),char(0),char(98),char(116),\nchar(83),char(104),char(111),char(114),char(116),char(73),char(110),char(116),char(73),char(110),char(100),char(101),char(120),char(84),char(114),char(105),char(112),char(108),char(101),char(116),\nchar(68),char(97),char(116),char(97),char(0),char(98),char(116),char(67),char(104),char(97),char(114),char(73),char(110),char(100),char(101),char(120),char(84),char(114),char(105),char(112),\nchar(108),char(101),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(77),char(101),char(115),char(104),char(80),char(97),char(114),char(116),char(68),char(97),\nchar(116),char(97),char(0),char(98),char(116),char(83),char(116),char(114),char(105),char(100),char(105),char(110),char(103),char(77),char(101),char(115),char(104),char(73),char(110),char(116),\nchar(101),char(114),char(102),char(97),char(99),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(84),char(114),char(105),char(97),char(110),char(103),char(108),\nchar(101),char(77),char(101),char(115),char(104),char(83),char(104),char(97),char(112),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(84),char(114),char(105),\nchar(97),char(110),char(103),char(108),char(101),char(73),char(110),char(102),char(111),char(77),char(97),char(112),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(83),\nchar(99),char(97),char(108),char(101),char(100),char(84),char(114),char(105),char(97),char(110),char(103),char(108),char(101),char(77),char(101),char(115),char(104),char(83),char(104),char(97),\nchar(112),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(67),char(111),char(109),char(112),char(111),char(117),char(110),char(100),char(83),char(104),char(97),\nchar(112),char(101),char(67),char(104),char(105),char(108),char(100),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(67),char(111),char(109),char(112),char(111),char(117),\nchar(110),char(100),char(83),char(104),char(97),char(112),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(67),char(121),char(108),char(105),char(110),char(100),\nchar(101),char(114),char(83),char(104),char(97),char(112),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(67),char(97),char(112),char(115),char(117),char(108),\nchar(101),char(83),char(104),char(97),char(112),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(84),char(114),char(105),char(97),char(110),char(103),char(108),\nchar(101),char(73),char(110),char(102),char(111),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(71),char(73),char(109),char(112),char(97),char(99),char(116),char(77),\nchar(101),char(115),char(104),char(83),char(104),char(97),char(112),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(67),char(111),char(110),char(118),char(101),\nchar(120),char(72),char(117),char(108),char(108),char(83),char(104),char(97),char(112),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(67),char(111),char(108),\nchar(108),char(105),char(115),char(105),char(111),char(110),char(79),char(98),char(106),char(101),char(99),char(116),char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97),\nchar(116),char(97),char(0),char(98),char(116),char(67),char(111),char(108),char(108),char(105),char(115),char(105),char(111),char(110),char(79),char(98),char(106),char(101),char(99),char(116),\nchar(70),char(108),char(111),char(97),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(68),char(121),char(110),char(97),char(109),char(105),char(99),char(115),\nchar(87),char(111),char(114),char(108),char(100),char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(67),char(111),\nchar(110),char(116),char(97),char(99),char(116),char(83),char(111),char(108),char(118),char(101),char(114),char(73),char(110),char(102),char(111),char(68),char(111),char(117),char(98),char(108),\nchar(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(68),char(121),char(110),char(97),char(109),char(105),char(99),char(115),char(87),char(111),char(114),char(108),\nchar(100),char(70),char(108),char(111),char(97),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(67),char(111),char(110),char(116),char(97),char(99),char(116),\nchar(83),char(111),char(108),char(118),char(101),char(114),char(73),char(110),char(102),char(111),char(70),char(108),char(111),char(97),char(116),char(68),char(97),char(116),char(97),char(0),\nchar(98),char(116),char(82),char(105),char(103),char(105),char(100),char(66),char(111),char(100),char(121),char(70),char(108),char(111),char(97),char(116),char(68),char(97),char(116),char(97),\nchar(0),char(98),char(116),char(82),char(105),char(103),char(105),char(100),char(66),char(111),char(100),char(121),char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97),\nchar(116),char(97),char(0),char(98),char(116),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(73),char(110),char(102),char(111),char(49),\nchar(0),char(98),char(116),char(84),char(121),char(112),char(101),char(100),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(68),char(97),\nchar(116),char(97),char(0),char(98),char(116),char(82),char(105),char(103),char(105),char(100),char(66),char(111),char(100),char(121),char(68),char(97),char(116),char(97),char(0),char(98),\nchar(116),char(80),char(111),char(105),char(110),char(116),char(50),char(80),char(111),char(105),char(110),char(116),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),\nchar(110),char(116),char(70),char(108),char(111),char(97),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(80),char(111),char(105),char(110),char(116),char(50),\nchar(80),char(111),char(105),char(110),char(116),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(68),char(111),char(117),char(98),char(108),\nchar(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(72),char(105),char(110),char(103),char(101),char(67),char(111),char(110),char(115),char(116),char(114),char(97),\nchar(105),char(110),char(116),char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(72),char(105),char(110),char(103),\nchar(101),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(70),char(108),char(111),char(97),char(116),char(68),char(97),char(116),char(97),\nchar(0),char(98),char(116),char(67),char(111),char(110),char(101),char(84),char(119),char(105),char(115),char(116),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),\nchar(110),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(71),char(101),char(110),char(101),char(114),char(105),char(99),char(54),char(68),char(111),char(102),\nchar(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(71),char(101),char(110),\nchar(101),char(114),char(105),char(99),char(54),char(68),char(111),char(102),char(83),char(112),char(114),char(105),char(110),char(103),char(67),char(111),char(110),char(115),char(116),char(114),\nchar(97),char(105),char(110),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(83),char(108),char(105),char(100),char(101),char(114),char(67),char(111),char(110),\nchar(115),char(116),char(114),char(97),char(105),char(110),char(116),char(68),char(97),char(116),char(97),char(0),char(83),char(111),char(102),char(116),char(66),char(111),char(100),char(121),\nchar(77),char(97),char(116),char(101),char(114),char(105),char(97),char(108),char(68),char(97),char(116),char(97),char(0),char(83),char(111),char(102),char(116),char(66),char(111),char(100),\nchar(121),char(78),char(111),char(100),char(101),char(68),char(97),char(116),char(97),char(0),char(83),char(111),char(102),char(116),char(66),char(111),char(100),char(121),char(76),char(105),\nchar(110),char(107),char(68),char(97),char(116),char(97),char(0),char(83),char(111),char(102),char(116),char(66),char(111),char(100),char(121),char(70),char(97),char(99),char(101),char(68),\nchar(97),char(116),char(97),char(0),char(83),char(111),char(102),char(116),char(66),char(111),char(100),char(121),char(84),char(101),char(116),char(114),char(97),char(68),char(97),char(116),\nchar(97),char(0),char(83),char(111),char(102),char(116),char(82),char(105),char(103),char(105),char(100),char(65),char(110),char(99),char(104),char(111),char(114),char(68),char(97),char(116),\nchar(97),char(0),char(83),char(111),char(102),char(116),char(66),char(111),char(100),char(121),char(67),char(111),char(110),char(102),char(105),char(103),char(68),char(97),char(116),char(97),\nchar(0),char(83),char(111),char(102),char(116),char(66),char(111),char(100),char(121),char(80),char(111),char(115),char(101),char(68),char(97),char(116),char(97),char(0),char(83),char(111),\nchar(102),char(116),char(66),char(111),char(100),char(121),char(67),char(108),char(117),char(115),char(116),char(101),char(114),char(68),char(97),char(116),char(97),char(0),char(98),char(116),\nchar(83),char(111),char(102),char(116),char(66),char(111),char(100),char(121),char(74),char(111),char(105),char(110),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),\nchar(83),char(111),char(102),char(116),char(66),char(111),char(100),char(121),char(70),char(108),char(111),char(97),char(116),char(68),char(97),char(116),char(97),char(0),char(0),char(0),\nchar(84),char(76),char(69),char(78),char(1),char(0),char(1),char(0),char(2),char(0),char(2),char(0),char(4),char(0),char(4),char(0),char(4),char(0),char(4),char(0),\nchar(8),char(0),char(0),char(0),char(12),char(0),char(36),char(0),char(8),char(0),char(16),char(0),char(32),char(0),char(48),char(0),char(96),char(0),char(64),char(0),\nchar(-128),char(0),char(20),char(0),char(48),char(0),char(80),char(0),char(16),char(0),char(84),char(0),char(-124),char(0),char(12),char(0),char(52),char(0),char(52),char(0),\nchar(20),char(0),char(64),char(0),char(4),char(0),char(4),char(0),char(8),char(0),char(4),char(0),char(32),char(0),char(28),char(0),char(60),char(0),char(56),char(0),\nchar(76),char(0),char(76),char(0),char(24),char(0),char(60),char(0),char(60),char(0),char(16),char(0),char(64),char(0),char(68),char(0),char(-48),char(1),char(0),char(1),\nchar(-72),char(0),char(-104),char(0),char(104),char(0),char(88),char(0),char(-24),char(1),char(-96),char(3),char(8),char(0),char(52),char(0),char(0),char(0),char(84),char(0),\nchar(116),char(0),char(92),char(1),char(-36),char(0),char(-44),char(0),char(-4),char(0),char(92),char(1),char(-52),char(0),char(16),char(0),char(100),char(0),char(20),char(0),\nchar(36),char(0),char(100),char(0),char(92),char(0),char(104),char(0),char(-64),char(0),char(92),char(1),char(104),char(0),char(-84),char(1),char(83),char(84),char(82),char(67),\nchar(65),char(0),char(0),char(0),char(10),char(0),char(3),char(0),char(4),char(0),char(0),char(0),char(4),char(0),char(1),char(0),char(9),char(0),char(2),char(0),\nchar(11),char(0),char(3),char(0),char(10),char(0),char(3),char(0),char(10),char(0),char(4),char(0),char(10),char(0),char(5),char(0),char(12),char(0),char(2),char(0),\nchar(9),char(0),char(6),char(0),char(9),char(0),char(7),char(0),char(13),char(0),char(1),char(0),char(7),char(0),char(8),char(0),char(14),char(0),char(1),char(0),\nchar(8),char(0),char(8),char(0),char(15),char(0),char(1),char(0),char(13),char(0),char(9),char(0),char(16),char(0),char(1),char(0),char(14),char(0),char(9),char(0),\nchar(17),char(0),char(2),char(0),char(15),char(0),char(10),char(0),char(13),char(0),char(11),char(0),char(18),char(0),char(2),char(0),char(16),char(0),char(10),char(0),\nchar(14),char(0),char(11),char(0),char(19),char(0),char(4),char(0),char(4),char(0),char(12),char(0),char(4),char(0),char(13),char(0),char(2),char(0),char(14),char(0),\nchar(2),char(0),char(15),char(0),char(20),char(0),char(6),char(0),char(13),char(0),char(16),char(0),char(13),char(0),char(17),char(0),char(4),char(0),char(18),char(0),\nchar(4),char(0),char(19),char(0),char(4),char(0),char(20),char(0),char(0),char(0),char(21),char(0),char(21),char(0),char(6),char(0),char(14),char(0),char(16),char(0),\nchar(14),char(0),char(17),char(0),char(4),char(0),char(18),char(0),char(4),char(0),char(19),char(0),char(4),char(0),char(20),char(0),char(0),char(0),char(21),char(0),\nchar(22),char(0),char(3),char(0),char(2),char(0),char(14),char(0),char(2),char(0),char(15),char(0),char(4),char(0),char(22),char(0),char(23),char(0),char(12),char(0),\nchar(13),char(0),char(23),char(0),char(13),char(0),char(24),char(0),char(13),char(0),char(25),char(0),char(4),char(0),char(26),char(0),char(4),char(0),char(27),char(0),\nchar(4),char(0),char(28),char(0),char(4),char(0),char(29),char(0),char(20),char(0),char(30),char(0),char(22),char(0),char(31),char(0),char(19),char(0),char(32),char(0),\nchar(4),char(0),char(33),char(0),char(4),char(0),char(34),char(0),char(24),char(0),char(12),char(0),char(14),char(0),char(23),char(0),char(14),char(0),char(24),char(0),\nchar(14),char(0),char(25),char(0),char(4),char(0),char(26),char(0),char(4),char(0),char(27),char(0),char(4),char(0),char(28),char(0),char(4),char(0),char(29),char(0),\nchar(21),char(0),char(30),char(0),char(22),char(0),char(31),char(0),char(4),char(0),char(33),char(0),char(4),char(0),char(34),char(0),char(19),char(0),char(32),char(0),\nchar(25),char(0),char(3),char(0),char(0),char(0),char(35),char(0),char(4),char(0),char(36),char(0),char(0),char(0),char(37),char(0),char(26),char(0),char(5),char(0),\nchar(25),char(0),char(38),char(0),char(13),char(0),char(39),char(0),char(13),char(0),char(40),char(0),char(7),char(0),char(41),char(0),char(0),char(0),char(21),char(0),\nchar(27),char(0),char(5),char(0),char(25),char(0),char(38),char(0),char(13),char(0),char(39),char(0),char(13),char(0),char(42),char(0),char(7),char(0),char(43),char(0),\nchar(4),char(0),char(44),char(0),char(28),char(0),char(2),char(0),char(13),char(0),char(45),char(0),char(7),char(0),char(46),char(0),char(29),char(0),char(4),char(0),\nchar(27),char(0),char(47),char(0),char(28),char(0),char(48),char(0),char(4),char(0),char(49),char(0),char(0),char(0),char(37),char(0),char(30),char(0),char(1),char(0),\nchar(4),char(0),char(50),char(0),char(31),char(0),char(2),char(0),char(2),char(0),char(50),char(0),char(0),char(0),char(51),char(0),char(32),char(0),char(2),char(0),\nchar(2),char(0),char(52),char(0),char(0),char(0),char(51),char(0),char(33),char(0),char(2),char(0),char(0),char(0),char(52),char(0),char(0),char(0),char(53),char(0),\nchar(34),char(0),char(8),char(0),char(13),char(0),char(54),char(0),char(14),char(0),char(55),char(0),char(30),char(0),char(56),char(0),char(32),char(0),char(57),char(0),\nchar(33),char(0),char(58),char(0),char(31),char(0),char(59),char(0),char(4),char(0),char(60),char(0),char(4),char(0),char(61),char(0),char(35),char(0),char(4),char(0),\nchar(34),char(0),char(62),char(0),char(13),char(0),char(63),char(0),char(4),char(0),char(64),char(0),char(0),char(0),char(37),char(0),char(36),char(0),char(7),char(0),\nchar(25),char(0),char(38),char(0),char(35),char(0),char(65),char(0),char(23),char(0),char(66),char(0),char(24),char(0),char(67),char(0),char(37),char(0),char(68),char(0),\nchar(7),char(0),char(43),char(0),char(0),char(0),char(69),char(0),char(38),char(0),char(2),char(0),char(36),char(0),char(70),char(0),char(13),char(0),char(39),char(0),\nchar(39),char(0),char(4),char(0),char(17),char(0),char(71),char(0),char(25),char(0),char(72),char(0),char(4),char(0),char(73),char(0),char(7),char(0),char(74),char(0),\nchar(40),char(0),char(4),char(0),char(25),char(0),char(38),char(0),char(39),char(0),char(75),char(0),char(4),char(0),char(76),char(0),char(7),char(0),char(43),char(0),\nchar(41),char(0),char(3),char(0),char(27),char(0),char(47),char(0),char(4),char(0),char(77),char(0),char(0),char(0),char(37),char(0),char(42),char(0),char(3),char(0),\nchar(27),char(0),char(47),char(0),char(4),char(0),char(77),char(0),char(0),char(0),char(37),char(0),char(43),char(0),char(4),char(0),char(4),char(0),char(78),char(0),\nchar(7),char(0),char(79),char(0),char(7),char(0),char(80),char(0),char(7),char(0),char(81),char(0),char(37),char(0),char(14),char(0),char(4),char(0),char(82),char(0),\nchar(4),char(0),char(83),char(0),char(43),char(0),char(84),char(0),char(4),char(0),char(85),char(0),char(7),char(0),char(86),char(0),char(7),char(0),char(87),char(0),\nchar(7),char(0),char(88),char(0),char(7),char(0),char(89),char(0),char(7),char(0),char(90),char(0),char(4),char(0),char(91),char(0),char(4),char(0),char(92),char(0),\nchar(4),char(0),char(93),char(0),char(4),char(0),char(94),char(0),char(0),char(0),char(37),char(0),char(44),char(0),char(5),char(0),char(25),char(0),char(38),char(0),\nchar(35),char(0),char(65),char(0),char(13),char(0),char(39),char(0),char(7),char(0),char(43),char(0),char(4),char(0),char(95),char(0),char(45),char(0),char(5),char(0),\nchar(27),char(0),char(47),char(0),char(13),char(0),char(96),char(0),char(14),char(0),char(97),char(0),char(4),char(0),char(98),char(0),char(0),char(0),char(99),char(0),\nchar(46),char(0),char(25),char(0),char(9),char(0),char(100),char(0),char(9),char(0),char(101),char(0),char(25),char(0),char(102),char(0),char(0),char(0),char(35),char(0),\nchar(18),char(0),char(103),char(0),char(18),char(0),char(104),char(0),char(14),char(0),char(105),char(0),char(14),char(0),char(106),char(0),char(14),char(0),char(107),char(0),\nchar(8),char(0),char(108),char(0),char(8),char(0),char(109),char(0),char(8),char(0),char(110),char(0),char(8),char(0),char(111),char(0),char(8),char(0),char(112),char(0),\nchar(8),char(0),char(113),char(0),char(8),char(0),char(114),char(0),char(8),char(0),char(115),char(0),char(4),char(0),char(116),char(0),char(4),char(0),char(117),char(0),\nchar(4),char(0),char(118),char(0),char(4),char(0),char(119),char(0),char(4),char(0),char(120),char(0),char(4),char(0),char(121),char(0),char(4),char(0),char(122),char(0),\nchar(0),char(0),char(37),char(0),char(47),char(0),char(25),char(0),char(9),char(0),char(100),char(0),char(9),char(0),char(101),char(0),char(25),char(0),char(102),char(0),\nchar(0),char(0),char(35),char(0),char(17),char(0),char(103),char(0),char(17),char(0),char(104),char(0),char(13),char(0),char(105),char(0),char(13),char(0),char(106),char(0),\nchar(13),char(0),char(107),char(0),char(7),char(0),char(108),char(0),char(7),char(0),char(109),char(0),char(7),char(0),char(110),char(0),char(7),char(0),char(111),char(0),\nchar(7),char(0),char(112),char(0),char(7),char(0),char(113),char(0),char(7),char(0),char(114),char(0),char(7),char(0),char(115),char(0),char(4),char(0),char(116),char(0),\nchar(4),char(0),char(117),char(0),char(4),char(0),char(118),char(0),char(4),char(0),char(119),char(0),char(4),char(0),char(120),char(0),char(4),char(0),char(121),char(0),\nchar(4),char(0),char(122),char(0),char(0),char(0),char(37),char(0),char(48),char(0),char(2),char(0),char(49),char(0),char(123),char(0),char(14),char(0),char(124),char(0),\nchar(50),char(0),char(2),char(0),char(51),char(0),char(123),char(0),char(13),char(0),char(124),char(0),char(52),char(0),char(21),char(0),char(47),char(0),char(125),char(0),\nchar(15),char(0),char(126),char(0),char(13),char(0),char(127),char(0),char(13),char(0),char(-128),char(0),char(13),char(0),char(-127),char(0),char(13),char(0),char(-126),char(0),\nchar(13),char(0),char(124),char(0),char(13),char(0),char(-125),char(0),char(13),char(0),char(-124),char(0),char(13),char(0),char(-123),char(0),char(13),char(0),char(-122),char(0),\nchar(7),char(0),char(-121),char(0),char(7),char(0),char(-120),char(0),char(7),char(0),char(-119),char(0),char(7),char(0),char(-118),char(0),char(7),char(0),char(-117),char(0),\nchar(7),char(0),char(-116),char(0),char(7),char(0),char(-115),char(0),char(7),char(0),char(-114),char(0),char(7),char(0),char(-113),char(0),char(4),char(0),char(-112),char(0),\nchar(53),char(0),char(22),char(0),char(46),char(0),char(125),char(0),char(16),char(0),char(126),char(0),char(14),char(0),char(127),char(0),char(14),char(0),char(-128),char(0),\nchar(14),char(0),char(-127),char(0),char(14),char(0),char(-126),char(0),char(14),char(0),char(124),char(0),char(14),char(0),char(-125),char(0),char(14),char(0),char(-124),char(0),\nchar(14),char(0),char(-123),char(0),char(14),char(0),char(-122),char(0),char(8),char(0),char(-121),char(0),char(8),char(0),char(-120),char(0),char(8),char(0),char(-119),char(0),\nchar(8),char(0),char(-118),char(0),char(8),char(0),char(-117),char(0),char(8),char(0),char(-116),char(0),char(8),char(0),char(-115),char(0),char(8),char(0),char(-114),char(0),\nchar(8),char(0),char(-113),char(0),char(4),char(0),char(-112),char(0),char(0),char(0),char(37),char(0),char(54),char(0),char(2),char(0),char(4),char(0),char(-111),char(0),\nchar(4),char(0),char(-110),char(0),char(55),char(0),char(13),char(0),char(56),char(0),char(-109),char(0),char(56),char(0),char(-108),char(0),char(0),char(0),char(35),char(0),\nchar(4),char(0),char(-107),char(0),char(4),char(0),char(-106),char(0),char(4),char(0),char(-105),char(0),char(4),char(0),char(-104),char(0),char(7),char(0),char(-103),char(0),\nchar(7),char(0),char(-102),char(0),char(4),char(0),char(-101),char(0),char(4),char(0),char(-100),char(0),char(7),char(0),char(-99),char(0),char(4),char(0),char(-98),char(0),\nchar(57),char(0),char(3),char(0),char(55),char(0),char(-97),char(0),char(13),char(0),char(-96),char(0),char(13),char(0),char(-95),char(0),char(58),char(0),char(3),char(0),\nchar(55),char(0),char(-97),char(0),char(14),char(0),char(-96),char(0),char(14),char(0),char(-95),char(0),char(59),char(0),char(13),char(0),char(55),char(0),char(-97),char(0),\nchar(18),char(0),char(-94),char(0),char(18),char(0),char(-93),char(0),char(4),char(0),char(-92),char(0),char(4),char(0),char(-91),char(0),char(4),char(0),char(-90),char(0),\nchar(7),char(0),char(-89),char(0),char(7),char(0),char(-88),char(0),char(7),char(0),char(-87),char(0),char(7),char(0),char(-86),char(0),char(7),char(0),char(-85),char(0),\nchar(7),char(0),char(-84),char(0),char(7),char(0),char(-83),char(0),char(60),char(0),char(13),char(0),char(55),char(0),char(-97),char(0),char(17),char(0),char(-94),char(0),\nchar(17),char(0),char(-93),char(0),char(4),char(0),char(-92),char(0),char(4),char(0),char(-91),char(0),char(4),char(0),char(-90),char(0),char(7),char(0),char(-89),char(0),\nchar(7),char(0),char(-88),char(0),char(7),char(0),char(-87),char(0),char(7),char(0),char(-86),char(0),char(7),char(0),char(-85),char(0),char(7),char(0),char(-84),char(0),\nchar(7),char(0),char(-83),char(0),char(61),char(0),char(11),char(0),char(55),char(0),char(-97),char(0),char(17),char(0),char(-94),char(0),char(17),char(0),char(-93),char(0),\nchar(7),char(0),char(-82),char(0),char(7),char(0),char(-81),char(0),char(7),char(0),char(-80),char(0),char(7),char(0),char(-85),char(0),char(7),char(0),char(-84),char(0),\nchar(7),char(0),char(-83),char(0),char(7),char(0),char(-79),char(0),char(0),char(0),char(21),char(0),char(62),char(0),char(9),char(0),char(55),char(0),char(-97),char(0),\nchar(17),char(0),char(-94),char(0),char(17),char(0),char(-93),char(0),char(13),char(0),char(-78),char(0),char(13),char(0),char(-77),char(0),char(13),char(0),char(-76),char(0),\nchar(13),char(0),char(-75),char(0),char(4),char(0),char(-74),char(0),char(4),char(0),char(-73),char(0),char(63),char(0),char(5),char(0),char(62),char(0),char(-72),char(0),\nchar(4),char(0),char(-71),char(0),char(7),char(0),char(-70),char(0),char(7),char(0),char(-69),char(0),char(7),char(0),char(-68),char(0),char(64),char(0),char(9),char(0),\nchar(55),char(0),char(-97),char(0),char(17),char(0),char(-94),char(0),char(17),char(0),char(-93),char(0),char(7),char(0),char(-78),char(0),char(7),char(0),char(-77),char(0),\nchar(7),char(0),char(-76),char(0),char(7),char(0),char(-75),char(0),char(4),char(0),char(-74),char(0),char(4),char(0),char(-73),char(0),char(49),char(0),char(22),char(0),\nchar(8),char(0),char(-67),char(0),char(8),char(0),char(-79),char(0),char(8),char(0),char(110),char(0),char(8),char(0),char(-66),char(0),char(8),char(0),char(112),char(0),\nchar(8),char(0),char(-65),char(0),char(8),char(0),char(-64),char(0),char(8),char(0),char(-63),char(0),char(8),char(0),char(-62),char(0),char(8),char(0),char(-61),char(0),\nchar(8),char(0),char(-60),char(0),char(8),char(0),char(-59),char(0),char(8),char(0),char(-58),char(0),char(8),char(0),char(-57),char(0),char(8),char(0),char(-56),char(0),\nchar(8),char(0),char(-55),char(0),char(4),char(0),char(-54),char(0),char(4),char(0),char(-53),char(0),char(4),char(0),char(-52),char(0),char(4),char(0),char(-51),char(0),\nchar(4),char(0),char(-50),char(0),char(0),char(0),char(37),char(0),char(51),char(0),char(22),char(0),char(7),char(0),char(-67),char(0),char(7),char(0),char(-79),char(0),\nchar(7),char(0),char(110),char(0),char(7),char(0),char(-66),char(0),char(7),char(0),char(112),char(0),char(7),char(0),char(-65),char(0),char(7),char(0),char(-64),char(0),\nchar(7),char(0),char(-63),char(0),char(7),char(0),char(-62),char(0),char(7),char(0),char(-61),char(0),char(7),char(0),char(-60),char(0),char(7),char(0),char(-59),char(0),\nchar(7),char(0),char(-58),char(0),char(7),char(0),char(-57),char(0),char(7),char(0),char(-56),char(0),char(7),char(0),char(-55),char(0),char(4),char(0),char(-54),char(0),\nchar(4),char(0),char(-53),char(0),char(4),char(0),char(-52),char(0),char(4),char(0),char(-51),char(0),char(4),char(0),char(-50),char(0),char(0),char(0),char(37),char(0),\nchar(65),char(0),char(4),char(0),char(7),char(0),char(-49),char(0),char(7),char(0),char(-48),char(0),char(7),char(0),char(-47),char(0),char(4),char(0),char(78),char(0),\nchar(66),char(0),char(10),char(0),char(65),char(0),char(-46),char(0),char(13),char(0),char(-45),char(0),char(13),char(0),char(-44),char(0),char(13),char(0),char(-43),char(0),\nchar(13),char(0),char(-42),char(0),char(13),char(0),char(-41),char(0),char(7),char(0),char(-121),char(0),char(7),char(0),char(-40),char(0),char(4),char(0),char(-39),char(0),\nchar(4),char(0),char(53),char(0),char(67),char(0),char(4),char(0),char(65),char(0),char(-46),char(0),char(4),char(0),char(-38),char(0),char(7),char(0),char(-37),char(0),\nchar(4),char(0),char(-36),char(0),char(68),char(0),char(4),char(0),char(13),char(0),char(-41),char(0),char(65),char(0),char(-46),char(0),char(4),char(0),char(-35),char(0),\nchar(7),char(0),char(-34),char(0),char(69),char(0),char(7),char(0),char(13),char(0),char(-33),char(0),char(65),char(0),char(-46),char(0),char(4),char(0),char(-32),char(0),\nchar(7),char(0),char(-31),char(0),char(7),char(0),char(-30),char(0),char(7),char(0),char(-29),char(0),char(4),char(0),char(53),char(0),char(70),char(0),char(6),char(0),\nchar(15),char(0),char(-28),char(0),char(13),char(0),char(-30),char(0),char(13),char(0),char(-27),char(0),char(56),char(0),char(-26),char(0),char(4),char(0),char(-25),char(0),\nchar(7),char(0),char(-29),char(0),char(71),char(0),char(26),char(0),char(4),char(0),char(-24),char(0),char(7),char(0),char(-23),char(0),char(7),char(0),char(-79),char(0),\nchar(7),char(0),char(-22),char(0),char(7),char(0),char(-21),char(0),char(7),char(0),char(-20),char(0),char(7),char(0),char(-19),char(0),char(7),char(0),char(-18),char(0),\nchar(7),char(0),char(-17),char(0),char(7),char(0),char(-16),char(0),char(7),char(0),char(-15),char(0),char(7),char(0),char(-14),char(0),char(7),char(0),char(-13),char(0),\nchar(7),char(0),char(-12),char(0),char(7),char(0),char(-11),char(0),char(7),char(0),char(-10),char(0),char(7),char(0),char(-9),char(0),char(7),char(0),char(-8),char(0),\nchar(7),char(0),char(-7),char(0),char(7),char(0),char(-6),char(0),char(7),char(0),char(-5),char(0),char(4),char(0),char(-4),char(0),char(4),char(0),char(-3),char(0),\nchar(4),char(0),char(-2),char(0),char(4),char(0),char(-1),char(0),char(4),char(0),char(117),char(0),char(72),char(0),char(12),char(0),char(15),char(0),char(0),char(1),\nchar(15),char(0),char(1),char(1),char(15),char(0),char(2),char(1),char(13),char(0),char(3),char(1),char(13),char(0),char(4),char(1),char(7),char(0),char(5),char(1),\nchar(4),char(0),char(6),char(1),char(4),char(0),char(7),char(1),char(4),char(0),char(8),char(1),char(4),char(0),char(9),char(1),char(7),char(0),char(-31),char(0),\nchar(4),char(0),char(53),char(0),char(73),char(0),char(27),char(0),char(17),char(0),char(10),char(1),char(15),char(0),char(11),char(1),char(15),char(0),char(12),char(1),\nchar(13),char(0),char(3),char(1),char(13),char(0),char(13),char(1),char(13),char(0),char(14),char(1),char(13),char(0),char(15),char(1),char(13),char(0),char(16),char(1),\nchar(13),char(0),char(17),char(1),char(4),char(0),char(18),char(1),char(7),char(0),char(19),char(1),char(4),char(0),char(20),char(1),char(4),char(0),char(21),char(1),\nchar(4),char(0),char(22),char(1),char(7),char(0),char(23),char(1),char(7),char(0),char(24),char(1),char(4),char(0),char(25),char(1),char(4),char(0),char(26),char(1),\nchar(7),char(0),char(27),char(1),char(7),char(0),char(28),char(1),char(7),char(0),char(29),char(1),char(7),char(0),char(30),char(1),char(7),char(0),char(31),char(1),\nchar(7),char(0),char(32),char(1),char(4),char(0),char(33),char(1),char(4),char(0),char(34),char(1),char(4),char(0),char(35),char(1),char(74),char(0),char(12),char(0),\nchar(9),char(0),char(36),char(1),char(9),char(0),char(37),char(1),char(13),char(0),char(38),char(1),char(7),char(0),char(39),char(1),char(7),char(0),char(-63),char(0),\nchar(7),char(0),char(40),char(1),char(4),char(0),char(41),char(1),char(13),char(0),char(42),char(1),char(4),char(0),char(43),char(1),char(4),char(0),char(44),char(1),\nchar(4),char(0),char(45),char(1),char(4),char(0),char(53),char(0),char(75),char(0),char(19),char(0),char(47),char(0),char(125),char(0),char(72),char(0),char(46),char(1),\nchar(65),char(0),char(47),char(1),char(66),char(0),char(48),char(1),char(67),char(0),char(49),char(1),char(68),char(0),char(50),char(1),char(69),char(0),char(51),char(1),\nchar(70),char(0),char(52),char(1),char(73),char(0),char(53),char(1),char(74),char(0),char(54),char(1),char(4),char(0),char(55),char(1),char(4),char(0),char(21),char(1),\nchar(4),char(0),char(56),char(1),char(4),char(0),char(57),char(1),char(4),char(0),char(58),char(1),char(4),char(0),char(59),char(1),char(4),char(0),char(60),char(1),\nchar(4),char(0),char(61),char(1),char(71),char(0),char(62),char(1),};\nint sBulletDNAlen= sizeof(sBulletDNAstr);\nchar sBulletDNAstr64[]= {\nchar(83),char(68),char(78),char(65),char(78),char(65),char(77),char(69),char(63),char(1),char(0),char(0),char(109),char(95),char(115),char(105),char(122),char(101),char(0),char(109),\nchar(95),char(99),char(97),char(112),char(97),char(99),char(105),char(116),char(121),char(0),char(42),char(109),char(95),char(100),char(97),char(116),char(97),char(0),char(109),char(95),\nchar(99),char(111),char(108),char(108),char(105),char(115),char(105),char(111),char(110),char(83),char(104),char(97),char(112),char(101),char(115),char(0),char(109),char(95),char(99),char(111),\nchar(108),char(108),char(105),char(115),char(105),char(111),char(110),char(79),char(98),char(106),char(101),char(99),char(116),char(115),char(0),char(109),char(95),char(99),char(111),char(110),\nchar(115),char(116),char(114),char(97),char(105),char(110),char(116),char(115),char(0),char(42),char(102),char(105),char(114),char(115),char(116),char(0),char(42),char(108),char(97),char(115),\nchar(116),char(0),char(109),char(95),char(102),char(108),char(111),char(97),char(116),char(115),char(91),char(52),char(93),char(0),char(109),char(95),char(101),char(108),char(91),char(51),\nchar(93),char(0),char(109),char(95),char(98),char(97),char(115),char(105),char(115),char(0),char(109),char(95),char(111),char(114),char(105),char(103),char(105),char(110),char(0),char(109),\nchar(95),char(114),char(111),char(111),char(116),char(78),char(111),char(100),char(101),char(73),char(110),char(100),char(101),char(120),char(0),char(109),char(95),char(115),char(117),char(98),\nchar(116),char(114),char(101),char(101),char(83),char(105),char(122),char(101),char(0),char(109),char(95),char(113),char(117),char(97),char(110),char(116),char(105),char(122),char(101),char(100),\nchar(65),char(97),char(98),char(98),char(77),char(105),char(110),char(91),char(51),char(93),char(0),char(109),char(95),char(113),char(117),char(97),char(110),char(116),char(105),char(122),\nchar(101),char(100),char(65),char(97),char(98),char(98),char(77),char(97),char(120),char(91),char(51),char(93),char(0),char(109),char(95),char(97),char(97),char(98),char(98),char(77),\nchar(105),char(110),char(79),char(114),char(103),char(0),char(109),char(95),char(97),char(97),char(98),char(98),char(77),char(97),char(120),char(79),char(114),char(103),char(0),char(109),\nchar(95),char(101),char(115),char(99),char(97),char(112),char(101),char(73),char(110),char(100),char(101),char(120),char(0),char(109),char(95),char(115),char(117),char(98),char(80),char(97),\nchar(114),char(116),char(0),char(109),char(95),char(116),char(114),char(105),char(97),char(110),char(103),char(108),char(101),char(73),char(110),char(100),char(101),char(120),char(0),char(109),\nchar(95),char(112),char(97),char(100),char(91),char(52),char(93),char(0),char(109),char(95),char(101),char(115),char(99),char(97),char(112),char(101),char(73),char(110),char(100),char(101),\nchar(120),char(79),char(114),char(84),char(114),char(105),char(97),char(110),char(103),char(108),char(101),char(73),char(110),char(100),char(101),char(120),char(0),char(109),char(95),char(98),\nchar(118),char(104),char(65),char(97),char(98),char(98),char(77),char(105),char(110),char(0),char(109),char(95),char(98),char(118),char(104),char(65),char(97),char(98),char(98),char(77),\nchar(97),char(120),char(0),char(109),char(95),char(98),char(118),char(104),char(81),char(117),char(97),char(110),char(116),char(105),char(122),char(97),char(116),char(105),char(111),char(110),\nchar(0),char(109),char(95),char(99),char(117),char(114),char(78),char(111),char(100),char(101),char(73),char(110),char(100),char(101),char(120),char(0),char(109),char(95),char(117),char(115),\nchar(101),char(81),char(117),char(97),char(110),char(116),char(105),char(122),char(97),char(116),char(105),char(111),char(110),char(0),char(109),char(95),char(110),char(117),char(109),char(67),\nchar(111),char(110),char(116),char(105),char(103),char(117),char(111),char(117),char(115),char(76),char(101),char(97),char(102),char(78),char(111),char(100),char(101),char(115),char(0),char(109),\nchar(95),char(110),char(117),char(109),char(81),char(117),char(97),char(110),char(116),char(105),char(122),char(101),char(100),char(67),char(111),char(110),char(116),char(105),char(103),char(117),\nchar(111),char(117),char(115),char(78),char(111),char(100),char(101),char(115),char(0),char(42),char(109),char(95),char(99),char(111),char(110),char(116),char(105),char(103),char(117),char(111),\nchar(117),char(115),char(78),char(111),char(100),char(101),char(115),char(80),char(116),char(114),char(0),char(42),char(109),char(95),char(113),char(117),char(97),char(110),char(116),char(105),\nchar(122),char(101),char(100),char(67),char(111),char(110),char(116),char(105),char(103),char(117),char(111),char(117),char(115),char(78),char(111),char(100),char(101),char(115),char(80),char(116),\nchar(114),char(0),char(42),char(109),char(95),char(115),char(117),char(98),char(84),char(114),char(101),char(101),char(73),char(110),char(102),char(111),char(80),char(116),char(114),char(0),\nchar(109),char(95),char(116),char(114),char(97),char(118),char(101),char(114),char(115),char(97),char(108),char(77),char(111),char(100),char(101),char(0),char(109),char(95),char(110),char(117),\nchar(109),char(83),char(117),char(98),char(116),char(114),char(101),char(101),char(72),char(101),char(97),char(100),char(101),char(114),char(115),char(0),char(42),char(109),char(95),char(110),\nchar(97),char(109),char(101),char(0),char(109),char(95),char(115),char(104),char(97),char(112),char(101),char(84),char(121),char(112),char(101),char(0),char(109),char(95),char(112),char(97),\nchar(100),char(100),char(105),char(110),char(103),char(91),char(52),char(93),char(0),char(109),char(95),char(99),char(111),char(108),char(108),char(105),char(115),char(105),char(111),char(110),\nchar(83),char(104),char(97),char(112),char(101),char(68),char(97),char(116),char(97),char(0),char(109),char(95),char(108),char(111),char(99),char(97),char(108),char(83),char(99),char(97),\nchar(108),char(105),char(110),char(103),char(0),char(109),char(95),char(112),char(108),char(97),char(110),char(101),char(78),char(111),char(114),char(109),char(97),char(108),char(0),char(109),\nchar(95),char(112),char(108),char(97),char(110),char(101),char(67),char(111),char(110),char(115),char(116),char(97),char(110),char(116),char(0),char(109),char(95),char(105),char(109),char(112),\nchar(108),char(105),char(99),char(105),char(116),char(83),char(104),char(97),char(112),char(101),char(68),char(105),char(109),char(101),char(110),char(115),char(105),char(111),char(110),char(115),\nchar(0),char(109),char(95),char(99),char(111),char(108),char(108),char(105),char(115),char(105),char(111),char(110),char(77),char(97),char(114),char(103),char(105),char(110),char(0),char(109),\nchar(95),char(112),char(97),char(100),char(100),char(105),char(110),char(103),char(0),char(109),char(95),char(112),char(111),char(115),char(0),char(109),char(95),char(114),char(97),char(100),\nchar(105),char(117),char(115),char(0),char(109),char(95),char(99),char(111),char(110),char(118),char(101),char(120),char(73),char(110),char(116),char(101),char(114),char(110),char(97),char(108),\nchar(83),char(104),char(97),char(112),char(101),char(68),char(97),char(116),char(97),char(0),char(42),char(109),char(95),char(108),char(111),char(99),char(97),char(108),char(80),char(111),\nchar(115),char(105),char(116),char(105),char(111),char(110),char(65),char(114),char(114),char(97),char(121),char(80),char(116),char(114),char(0),char(109),char(95),char(108),char(111),char(99),\nchar(97),char(108),char(80),char(111),char(115),char(105),char(116),char(105),char(111),char(110),char(65),char(114),char(114),char(97),char(121),char(83),char(105),char(122),char(101),char(0),\nchar(109),char(95),char(118),char(97),char(108),char(117),char(101),char(0),char(109),char(95),char(112),char(97),char(100),char(91),char(50),char(93),char(0),char(109),char(95),char(118),\nchar(97),char(108),char(117),char(101),char(115),char(91),char(51),char(93),char(0),char(109),char(95),char(112),char(97),char(100),char(0),char(42),char(109),char(95),char(118),char(101),\nchar(114),char(116),char(105),char(99),char(101),char(115),char(51),char(102),char(0),char(42),char(109),char(95),char(118),char(101),char(114),char(116),char(105),char(99),char(101),char(115),\nchar(51),char(100),char(0),char(42),char(109),char(95),char(105),char(110),char(100),char(105),char(99),char(101),char(115),char(51),char(50),char(0),char(42),char(109),char(95),char(51),\nchar(105),char(110),char(100),char(105),char(99),char(101),char(115),char(49),char(54),char(0),char(42),char(109),char(95),char(51),char(105),char(110),char(100),char(105),char(99),char(101),\nchar(115),char(56),char(0),char(42),char(109),char(95),char(105),char(110),char(100),char(105),char(99),char(101),char(115),char(49),char(54),char(0),char(109),char(95),char(110),char(117),\nchar(109),char(84),char(114),char(105),char(97),char(110),char(103),char(108),char(101),char(115),char(0),char(109),char(95),char(110),char(117),char(109),char(86),char(101),char(114),char(116),\nchar(105),char(99),char(101),char(115),char(0),char(42),char(109),char(95),char(109),char(101),char(115),char(104),char(80),char(97),char(114),char(116),char(115),char(80),char(116),char(114),\nchar(0),char(109),char(95),char(115),char(99),char(97),char(108),char(105),char(110),char(103),char(0),char(109),char(95),char(110),char(117),char(109),char(77),char(101),char(115),char(104),\nchar(80),char(97),char(114),char(116),char(115),char(0),char(109),char(95),char(109),char(101),char(115),char(104),char(73),char(110),char(116),char(101),char(114),char(102),char(97),char(99),\nchar(101),char(0),char(42),char(109),char(95),char(113),char(117),char(97),char(110),char(116),char(105),char(122),char(101),char(100),char(70),char(108),char(111),char(97),char(116),char(66),\nchar(118),char(104),char(0),char(42),char(109),char(95),char(113),char(117),char(97),char(110),char(116),char(105),char(122),char(101),char(100),char(68),char(111),char(117),char(98),char(108),\nchar(101),char(66),char(118),char(104),char(0),char(42),char(109),char(95),char(116),char(114),char(105),char(97),char(110),char(103),char(108),char(101),char(73),char(110),char(102),char(111),\nchar(77),char(97),char(112),char(0),char(109),char(95),char(112),char(97),char(100),char(51),char(91),char(52),char(93),char(0),char(109),char(95),char(116),char(114),char(105),char(109),\nchar(101),char(115),char(104),char(83),char(104),char(97),char(112),char(101),char(68),char(97),char(116),char(97),char(0),char(109),char(95),char(116),char(114),char(97),char(110),char(115),\nchar(102),char(111),char(114),char(109),char(0),char(42),char(109),char(95),char(99),char(104),char(105),char(108),char(100),char(83),char(104),char(97),char(112),char(101),char(0),char(109),\nchar(95),char(99),char(104),char(105),char(108),char(100),char(83),char(104),char(97),char(112),char(101),char(84),char(121),char(112),char(101),char(0),char(109),char(95),char(99),char(104),\nchar(105),char(108),char(100),char(77),char(97),char(114),char(103),char(105),char(110),char(0),char(42),char(109),char(95),char(99),char(104),char(105),char(108),char(100),char(83),char(104),\nchar(97),char(112),char(101),char(80),char(116),char(114),char(0),char(109),char(95),char(110),char(117),char(109),char(67),char(104),char(105),char(108),char(100),char(83),char(104),char(97),\nchar(112),char(101),char(115),char(0),char(109),char(95),char(117),char(112),char(65),char(120),char(105),char(115),char(0),char(109),char(95),char(102),char(108),char(97),char(103),char(115),\nchar(0),char(109),char(95),char(101),char(100),char(103),char(101),char(86),char(48),char(86),char(49),char(65),char(110),char(103),char(108),char(101),char(0),char(109),char(95),char(101),\nchar(100),char(103),char(101),char(86),char(49),char(86),char(50),char(65),char(110),char(103),char(108),char(101),char(0),char(109),char(95),char(101),char(100),char(103),char(101),char(86),\nchar(50),char(86),char(48),char(65),char(110),char(103),char(108),char(101),char(0),char(42),char(109),char(95),char(104),char(97),char(115),char(104),char(84),char(97),char(98),char(108),\nchar(101),char(80),char(116),char(114),char(0),char(42),char(109),char(95),char(110),char(101),char(120),char(116),char(80),char(116),char(114),char(0),char(42),char(109),char(95),char(118),\nchar(97),char(108),char(117),char(101),char(65),char(114),char(114),char(97),char(121),char(80),char(116),char(114),char(0),char(42),char(109),char(95),char(107),char(101),char(121),char(65),\nchar(114),char(114),char(97),char(121),char(80),char(116),char(114),char(0),char(109),char(95),char(99),char(111),char(110),char(118),char(101),char(120),char(69),char(112),char(115),char(105),\nchar(108),char(111),char(110),char(0),char(109),char(95),char(112),char(108),char(97),char(110),char(97),char(114),char(69),char(112),char(115),char(105),char(108),char(111),char(110),char(0),\nchar(109),char(95),char(101),char(113),char(117),char(97),char(108),char(86),char(101),char(114),char(116),char(101),char(120),char(84),char(104),char(114),char(101),char(115),char(104),char(111),\nchar(108),char(100),char(0),char(109),char(95),char(101),char(100),char(103),char(101),char(68),char(105),char(115),char(116),char(97),char(110),char(99),char(101),char(84),char(104),char(114),\nchar(101),char(115),char(104),char(111),char(108),char(100),char(0),char(109),char(95),char(122),char(101),char(114),char(111),char(65),char(114),char(101),char(97),char(84),char(104),char(114),\nchar(101),char(115),char(104),char(111),char(108),char(100),char(0),char(109),char(95),char(110),char(101),char(120),char(116),char(83),char(105),char(122),char(101),char(0),char(109),char(95),\nchar(104),char(97),char(115),char(104),char(84),char(97),char(98),char(108),char(101),char(83),char(105),char(122),char(101),char(0),char(109),char(95),char(110),char(117),char(109),char(86),\nchar(97),char(108),char(117),char(101),char(115),char(0),char(109),char(95),char(110),char(117),char(109),char(75),char(101),char(121),char(115),char(0),char(109),char(95),char(103),char(105),\nchar(109),char(112),char(97),char(99),char(116),char(83),char(117),char(98),char(84),char(121),char(112),char(101),char(0),char(42),char(109),char(95),char(117),char(110),char(115),char(99),\nchar(97),char(108),char(101),char(100),char(80),char(111),char(105),char(110),char(116),char(115),char(70),char(108),char(111),char(97),char(116),char(80),char(116),char(114),char(0),char(42),\nchar(109),char(95),char(117),char(110),char(115),char(99),char(97),char(108),char(101),char(100),char(80),char(111),char(105),char(110),char(116),char(115),char(68),char(111),char(117),char(98),\nchar(108),char(101),char(80),char(116),char(114),char(0),char(109),char(95),char(110),char(117),char(109),char(85),char(110),char(115),char(99),char(97),char(108),char(101),char(100),char(80),\nchar(111),char(105),char(110),char(116),char(115),char(0),char(109),char(95),char(112),char(97),char(100),char(100),char(105),char(110),char(103),char(51),char(91),char(52),char(93),char(0),\nchar(42),char(109),char(95),char(98),char(114),char(111),char(97),char(100),char(112),char(104),char(97),char(115),char(101),char(72),char(97),char(110),char(100),char(108),char(101),char(0),\nchar(42),char(109),char(95),char(99),char(111),char(108),char(108),char(105),char(115),char(105),char(111),char(110),char(83),char(104),char(97),char(112),char(101),char(0),char(42),char(109),\nchar(95),char(114),char(111),char(111),char(116),char(67),char(111),char(108),char(108),char(105),char(115),char(105),char(111),char(110),char(83),char(104),char(97),char(112),char(101),char(0),\nchar(109),char(95),char(119),char(111),char(114),char(108),char(100),char(84),char(114),char(97),char(110),char(115),char(102),char(111),char(114),char(109),char(0),char(109),char(95),char(105),\nchar(110),char(116),char(101),char(114),char(112),char(111),char(108),char(97),char(116),char(105),char(111),char(110),char(87),char(111),char(114),char(108),char(100),char(84),char(114),char(97),\nchar(110),char(115),char(102),char(111),char(114),char(109),char(0),char(109),char(95),char(105),char(110),char(116),char(101),char(114),char(112),char(111),char(108),char(97),char(116),char(105),\nchar(111),char(110),char(76),char(105),char(110),char(101),char(97),char(114),char(86),char(101),char(108),char(111),char(99),char(105),char(116),char(121),char(0),char(109),char(95),char(105),\nchar(110),char(116),char(101),char(114),char(112),char(111),char(108),char(97),char(116),char(105),char(111),char(110),char(65),char(110),char(103),char(117),char(108),char(97),char(114),char(86),\nchar(101),char(108),char(111),char(99),char(105),char(116),char(121),char(0),char(109),char(95),char(97),char(110),char(105),char(115),char(111),char(116),char(114),char(111),char(112),char(105),\nchar(99),char(70),char(114),char(105),char(99),char(116),char(105),char(111),char(110),char(0),char(109),char(95),char(99),char(111),char(110),char(116),char(97),char(99),char(116),char(80),\nchar(114),char(111),char(99),char(101),char(115),char(115),char(105),char(110),char(103),char(84),char(104),char(114),char(101),char(115),char(104),char(111),char(108),char(100),char(0),char(109),\nchar(95),char(100),char(101),char(97),char(99),char(116),char(105),char(118),char(97),char(116),char(105),char(111),char(110),char(84),char(105),char(109),char(101),char(0),char(109),char(95),\nchar(102),char(114),char(105),char(99),char(116),char(105),char(111),char(110),char(0),char(109),char(95),char(114),char(111),char(108),char(108),char(105),char(110),char(103),char(70),char(114),\nchar(105),char(99),char(116),char(105),char(111),char(110),char(0),char(109),char(95),char(114),char(101),char(115),char(116),char(105),char(116),char(117),char(116),char(105),char(111),char(110),\nchar(0),char(109),char(95),char(104),char(105),char(116),char(70),char(114),char(97),char(99),char(116),char(105),char(111),char(110),char(0),char(109),char(95),char(99),char(99),char(100),\nchar(83),char(119),char(101),char(112),char(116),char(83),char(112),char(104),char(101),char(114),char(101),char(82),char(97),char(100),char(105),char(117),char(115),char(0),char(109),char(95),\nchar(99),char(99),char(100),char(77),char(111),char(116),char(105),char(111),char(110),char(84),char(104),char(114),char(101),char(115),char(104),char(111),char(108),char(100),char(0),char(109),\nchar(95),char(104),char(97),char(115),char(65),char(110),char(105),char(115),char(111),char(116),char(114),char(111),char(112),char(105),char(99),char(70),char(114),char(105),char(99),char(116),\nchar(105),char(111),char(110),char(0),char(109),char(95),char(99),char(111),char(108),char(108),char(105),char(115),char(105),char(111),char(110),char(70),char(108),char(97),char(103),char(115),\nchar(0),char(109),char(95),char(105),char(115),char(108),char(97),char(110),char(100),char(84),char(97),char(103),char(49),char(0),char(109),char(95),char(99),char(111),char(109),char(112),\nchar(97),char(110),char(105),char(111),char(110),char(73),char(100),char(0),char(109),char(95),char(97),char(99),char(116),char(105),char(118),char(97),char(116),char(105),char(111),char(110),\nchar(83),char(116),char(97),char(116),char(101),char(49),char(0),char(109),char(95),char(105),char(110),char(116),char(101),char(114),char(110),char(97),char(108),char(84),char(121),char(112),\nchar(101),char(0),char(109),char(95),char(99),char(104),char(101),char(99),char(107),char(67),char(111),char(108),char(108),char(105),char(100),char(101),char(87),char(105),char(116),char(104),\nchar(0),char(109),char(95),char(115),char(111),char(108),char(118),char(101),char(114),char(73),char(110),char(102),char(111),char(0),char(109),char(95),char(103),char(114),char(97),char(118),\nchar(105),char(116),char(121),char(0),char(109),char(95),char(99),char(111),char(108),char(108),char(105),char(115),char(105),char(111),char(110),char(79),char(98),char(106),char(101),char(99),\nchar(116),char(68),char(97),char(116),char(97),char(0),char(109),char(95),char(105),char(110),char(118),char(73),char(110),char(101),char(114),char(116),char(105),char(97),char(84),char(101),\nchar(110),char(115),char(111),char(114),char(87),char(111),char(114),char(108),char(100),char(0),char(109),char(95),char(108),char(105),char(110),char(101),char(97),char(114),char(86),char(101),\nchar(108),char(111),char(99),char(105),char(116),char(121),char(0),char(109),char(95),char(97),char(110),char(103),char(117),char(108),char(97),char(114),char(86),char(101),char(108),char(111),\nchar(99),char(105),char(116),char(121),char(0),char(109),char(95),char(97),char(110),char(103),char(117),char(108),char(97),char(114),char(70),char(97),char(99),char(116),char(111),char(114),\nchar(0),char(109),char(95),char(108),char(105),char(110),char(101),char(97),char(114),char(70),char(97),char(99),char(116),char(111),char(114),char(0),char(109),char(95),char(103),char(114),\nchar(97),char(118),char(105),char(116),char(121),char(95),char(97),char(99),char(99),char(101),char(108),char(101),char(114),char(97),char(116),char(105),char(111),char(110),char(0),char(109),\nchar(95),char(105),char(110),char(118),char(73),char(110),char(101),char(114),char(116),char(105),char(97),char(76),char(111),char(99),char(97),char(108),char(0),char(109),char(95),char(116),\nchar(111),char(116),char(97),char(108),char(70),char(111),char(114),char(99),char(101),char(0),char(109),char(95),char(116),char(111),char(116),char(97),char(108),char(84),char(111),char(114),\nchar(113),char(117),char(101),char(0),char(109),char(95),char(105),char(110),char(118),char(101),char(114),char(115),char(101),char(77),char(97),char(115),char(115),char(0),char(109),char(95),\nchar(108),char(105),char(110),char(101),char(97),char(114),char(68),char(97),char(109),char(112),char(105),char(110),char(103),char(0),char(109),char(95),char(97),char(110),char(103),char(117),\nchar(108),char(97),char(114),char(68),char(97),char(109),char(112),char(105),char(110),char(103),char(0),char(109),char(95),char(97),char(100),char(100),char(105),char(116),char(105),char(111),\nchar(110),char(97),char(108),char(68),char(97),char(109),char(112),char(105),char(110),char(103),char(70),char(97),char(99),char(116),char(111),char(114),char(0),char(109),char(95),char(97),\nchar(100),char(100),char(105),char(116),char(105),char(111),char(110),char(97),char(108),char(76),char(105),char(110),char(101),char(97),char(114),char(68),char(97),char(109),char(112),char(105),\nchar(110),char(103),char(84),char(104),char(114),char(101),char(115),char(104),char(111),char(108),char(100),char(83),char(113),char(114),char(0),char(109),char(95),char(97),char(100),char(100),\nchar(105),char(116),char(105),char(111),char(110),char(97),char(108),char(65),char(110),char(103),char(117),char(108),char(97),char(114),char(68),char(97),char(109),char(112),char(105),char(110),\nchar(103),char(84),char(104),char(114),char(101),char(115),char(104),char(111),char(108),char(100),char(83),char(113),char(114),char(0),char(109),char(95),char(97),char(100),char(100),char(105),\nchar(116),char(105),char(111),char(110),char(97),char(108),char(65),char(110),char(103),char(117),char(108),char(97),char(114),char(68),char(97),char(109),char(112),char(105),char(110),char(103),\nchar(70),char(97),char(99),char(116),char(111),char(114),char(0),char(109),char(95),char(108),char(105),char(110),char(101),char(97),char(114),char(83),char(108),char(101),char(101),char(112),\nchar(105),char(110),char(103),char(84),char(104),char(114),char(101),char(115),char(104),char(111),char(108),char(100),char(0),char(109),char(95),char(97),char(110),char(103),char(117),char(108),\nchar(97),char(114),char(83),char(108),char(101),char(101),char(112),char(105),char(110),char(103),char(84),char(104),char(114),char(101),char(115),char(104),char(111),char(108),char(100),char(0),\nchar(109),char(95),char(97),char(100),char(100),char(105),char(116),char(105),char(111),char(110),char(97),char(108),char(68),char(97),char(109),char(112),char(105),char(110),char(103),char(0),\nchar(109),char(95),char(110),char(117),char(109),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(82),char(111),char(119),char(115),char(0),\nchar(110),char(117),char(98),char(0),char(42),char(109),char(95),char(114),char(98),char(65),char(0),char(42),char(109),char(95),char(114),char(98),char(66),char(0),char(109),char(95),\nchar(111),char(98),char(106),char(101),char(99),char(116),char(84),char(121),char(112),char(101),char(0),char(109),char(95),char(117),char(115),char(101),char(114),char(67),char(111),char(110),\nchar(115),char(116),char(114),char(97),char(105),char(110),char(116),char(84),char(121),char(112),char(101),char(0),char(109),char(95),char(117),char(115),char(101),char(114),char(67),char(111),\nchar(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(73),char(100),char(0),char(109),char(95),char(110),char(101),char(101),char(100),char(115),char(70),char(101),\nchar(101),char(100),char(98),char(97),char(99),char(107),char(0),char(109),char(95),char(97),char(112),char(112),char(108),char(105),char(101),char(100),char(73),char(109),char(112),char(117),\nchar(108),char(115),char(101),char(0),char(109),char(95),char(100),char(98),char(103),char(68),char(114),char(97),char(119),char(83),char(105),char(122),char(101),char(0),char(109),char(95),\nchar(100),char(105),char(115),char(97),char(98),char(108),char(101),char(67),char(111),char(108),char(108),char(105),char(115),char(105),char(111),char(110),char(115),char(66),char(101),char(116),\nchar(119),char(101),char(101),char(110),char(76),char(105),char(110),char(107),char(101),char(100),char(66),char(111),char(100),char(105),char(101),char(115),char(0),char(109),char(95),char(111),\nchar(118),char(101),char(114),char(114),char(105),char(100),char(101),char(78),char(117),char(109),char(83),char(111),char(108),char(118),char(101),char(114),char(73),char(116),char(101),char(114),\nchar(97),char(116),char(105),char(111),char(110),char(115),char(0),char(109),char(95),char(98),char(114),char(101),char(97),char(107),char(105),char(110),char(103),char(73),char(109),char(112),\nchar(117),char(108),char(115),char(101),char(84),char(104),char(114),char(101),char(115),char(104),char(111),char(108),char(100),char(0),char(109),char(95),char(105),char(115),char(69),char(110),\nchar(97),char(98),char(108),char(101),char(100),char(0),char(109),char(95),char(116),char(121),char(112),char(101),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),\nchar(110),char(116),char(68),char(97),char(116),char(97),char(0),char(109),char(95),char(112),char(105),char(118),char(111),char(116),char(73),char(110),char(65),char(0),char(109),char(95),\nchar(112),char(105),char(118),char(111),char(116),char(73),char(110),char(66),char(0),char(109),char(95),char(114),char(98),char(65),char(70),char(114),char(97),char(109),char(101),char(0),\nchar(109),char(95),char(114),char(98),char(66),char(70),char(114),char(97),char(109),char(101),char(0),char(109),char(95),char(117),char(115),char(101),char(82),char(101),char(102),char(101),\nchar(114),char(101),char(110),char(99),char(101),char(70),char(114),char(97),char(109),char(101),char(65),char(0),char(109),char(95),char(97),char(110),char(103),char(117),char(108),char(97),\nchar(114),char(79),char(110),char(108),char(121),char(0),char(109),char(95),char(101),char(110),char(97),char(98),char(108),char(101),char(65),char(110),char(103),char(117),char(108),char(97),\nchar(114),char(77),char(111),char(116),char(111),char(114),char(0),char(109),char(95),char(109),char(111),char(116),char(111),char(114),char(84),char(97),char(114),char(103),char(101),char(116),\nchar(86),char(101),char(108),char(111),char(99),char(105),char(116),char(121),char(0),char(109),char(95),char(109),char(97),char(120),char(77),char(111),char(116),char(111),char(114),char(73),\nchar(109),char(112),char(117),char(108),char(115),char(101),char(0),char(109),char(95),char(108),char(111),char(119),char(101),char(114),char(76),char(105),char(109),char(105),char(116),char(0),\nchar(109),char(95),char(117),char(112),char(112),char(101),char(114),char(76),char(105),char(109),char(105),char(116),char(0),char(109),char(95),char(108),char(105),char(109),char(105),char(116),\nchar(83),char(111),char(102),char(116),char(110),char(101),char(115),char(115),char(0),char(109),char(95),char(98),char(105),char(97),char(115),char(70),char(97),char(99),char(116),char(111),\nchar(114),char(0),char(109),char(95),char(114),char(101),char(108),char(97),char(120),char(97),char(116),char(105),char(111),char(110),char(70),char(97),char(99),char(116),char(111),char(114),\nchar(0),char(109),char(95),char(115),char(119),char(105),char(110),char(103),char(83),char(112),char(97),char(110),char(49),char(0),char(109),char(95),char(115),char(119),char(105),char(110),\nchar(103),char(83),char(112),char(97),char(110),char(50),char(0),char(109),char(95),char(116),char(119),char(105),char(115),char(116),char(83),char(112),char(97),char(110),char(0),char(109),\nchar(95),char(100),char(97),char(109),char(112),char(105),char(110),char(103),char(0),char(109),char(95),char(108),char(105),char(110),char(101),char(97),char(114),char(85),char(112),char(112),\nchar(101),char(114),char(76),char(105),char(109),char(105),char(116),char(0),char(109),char(95),char(108),char(105),char(110),char(101),char(97),char(114),char(76),char(111),char(119),char(101),\nchar(114),char(76),char(105),char(109),char(105),char(116),char(0),char(109),char(95),char(97),char(110),char(103),char(117),char(108),char(97),char(114),char(85),char(112),char(112),char(101),\nchar(114),char(76),char(105),char(109),char(105),char(116),char(0),char(109),char(95),char(97),char(110),char(103),char(117),char(108),char(97),char(114),char(76),char(111),char(119),char(101),\nchar(114),char(76),char(105),char(109),char(105),char(116),char(0),char(109),char(95),char(117),char(115),char(101),char(76),char(105),char(110),char(101),char(97),char(114),char(82),char(101),\nchar(102),char(101),char(114),char(101),char(110),char(99),char(101),char(70),char(114),char(97),char(109),char(101),char(65),char(0),char(109),char(95),char(117),char(115),char(101),char(79),\nchar(102),char(102),char(115),char(101),char(116),char(70),char(111),char(114),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(70),char(114),\nchar(97),char(109),char(101),char(0),char(109),char(95),char(54),char(100),char(111),char(102),char(68),char(97),char(116),char(97),char(0),char(109),char(95),char(115),char(112),char(114),\nchar(105),char(110),char(103),char(69),char(110),char(97),char(98),char(108),char(101),char(100),char(91),char(54),char(93),char(0),char(109),char(95),char(101),char(113),char(117),char(105),\nchar(108),char(105),char(98),char(114),char(105),char(117),char(109),char(80),char(111),char(105),char(110),char(116),char(91),char(54),char(93),char(0),char(109),char(95),char(115),char(112),\nchar(114),char(105),char(110),char(103),char(83),char(116),char(105),char(102),char(102),char(110),char(101),char(115),char(115),char(91),char(54),char(93),char(0),char(109),char(95),char(115),\nchar(112),char(114),char(105),char(110),char(103),char(68),char(97),char(109),char(112),char(105),char(110),char(103),char(91),char(54),char(93),char(0),char(109),char(95),char(116),char(97),\nchar(117),char(0),char(109),char(95),char(116),char(105),char(109),char(101),char(83),char(116),char(101),char(112),char(0),char(109),char(95),char(109),char(97),char(120),char(69),char(114),\nchar(114),char(111),char(114),char(82),char(101),char(100),char(117),char(99),char(116),char(105),char(111),char(110),char(0),char(109),char(95),char(115),char(111),char(114),char(0),char(109),\nchar(95),char(101),char(114),char(112),char(0),char(109),char(95),char(101),char(114),char(112),char(50),char(0),char(109),char(95),char(103),char(108),char(111),char(98),char(97),char(108),\nchar(67),char(102),char(109),char(0),char(109),char(95),char(115),char(112),char(108),char(105),char(116),char(73),char(109),char(112),char(117),char(108),char(115),char(101),char(80),char(101),\nchar(110),char(101),char(116),char(114),char(97),char(116),char(105),char(111),char(110),char(84),char(104),char(114),char(101),char(115),char(104),char(111),char(108),char(100),char(0),char(109),\nchar(95),char(115),char(112),char(108),char(105),char(116),char(73),char(109),char(112),char(117),char(108),char(115),char(101),char(84),char(117),char(114),char(110),char(69),char(114),char(112),\nchar(0),char(109),char(95),char(108),char(105),char(110),char(101),char(97),char(114),char(83),char(108),char(111),char(112),char(0),char(109),char(95),char(119),char(97),char(114),char(109),\nchar(115),char(116),char(97),char(114),char(116),char(105),char(110),char(103),char(70),char(97),char(99),char(116),char(111),char(114),char(0),char(109),char(95),char(109),char(97),char(120),\nchar(71),char(121),char(114),char(111),char(115),char(99),char(111),char(112),char(105),char(99),char(70),char(111),char(114),char(99),char(101),char(0),char(109),char(95),char(115),char(105),\nchar(110),char(103),char(108),char(101),char(65),char(120),char(105),char(115),char(82),char(111),char(108),char(108),char(105),char(110),char(103),char(70),char(114),char(105),char(99),char(116),\nchar(105),char(111),char(110),char(84),char(104),char(114),char(101),char(115),char(104),char(111),char(108),char(100),char(0),char(109),char(95),char(110),char(117),char(109),char(73),char(116),\nchar(101),char(114),char(97),char(116),char(105),char(111),char(110),char(115),char(0),char(109),char(95),char(115),char(111),char(108),char(118),char(101),char(114),char(77),char(111),char(100),\nchar(101),char(0),char(109),char(95),char(114),char(101),char(115),char(116),char(105),char(110),char(103),char(67),char(111),char(110),char(116),char(97),char(99),char(116),char(82),char(101),\nchar(115),char(116),char(105),char(116),char(117),char(116),char(105),char(111),char(110),char(84),char(104),char(114),char(101),char(115),char(104),char(111),char(108),char(100),char(0),char(109),\nchar(95),char(109),char(105),char(110),char(105),char(109),char(117),char(109),char(83),char(111),char(108),char(118),char(101),char(114),char(66),char(97),char(116),char(99),char(104),char(83),\nchar(105),char(122),char(101),char(0),char(109),char(95),char(115),char(112),char(108),char(105),char(116),char(73),char(109),char(112),char(117),char(108),char(115),char(101),char(0),char(109),\nchar(95),char(108),char(105),char(110),char(101),char(97),char(114),char(83),char(116),char(105),char(102),char(102),char(110),char(101),char(115),char(115),char(0),char(109),char(95),char(97),\nchar(110),char(103),char(117),char(108),char(97),char(114),char(83),char(116),char(105),char(102),char(102),char(110),char(101),char(115),char(115),char(0),char(109),char(95),char(118),char(111),\nchar(108),char(117),char(109),char(101),char(83),char(116),char(105),char(102),char(102),char(110),char(101),char(115),char(115),char(0),char(42),char(109),char(95),char(109),char(97),char(116),\nchar(101),char(114),char(105),char(97),char(108),char(0),char(109),char(95),char(112),char(111),char(115),char(105),char(116),char(105),char(111),char(110),char(0),char(109),char(95),char(112),\nchar(114),char(101),char(118),char(105),char(111),char(117),char(115),char(80),char(111),char(115),char(105),char(116),char(105),char(111),char(110),char(0),char(109),char(95),char(118),char(101),\nchar(108),char(111),char(99),char(105),char(116),char(121),char(0),char(109),char(95),char(97),char(99),char(99),char(117),char(109),char(117),char(108),char(97),char(116),char(101),char(100),\nchar(70),char(111),char(114),char(99),char(101),char(0),char(109),char(95),char(110),char(111),char(114),char(109),char(97),char(108),char(0),char(109),char(95),char(97),char(114),char(101),\nchar(97),char(0),char(109),char(95),char(97),char(116),char(116),char(97),char(99),char(104),char(0),char(109),char(95),char(110),char(111),char(100),char(101),char(73),char(110),char(100),\nchar(105),char(99),char(101),char(115),char(91),char(50),char(93),char(0),char(109),char(95),char(114),char(101),char(115),char(116),char(76),char(101),char(110),char(103),char(116),char(104),\nchar(0),char(109),char(95),char(98),char(98),char(101),char(110),char(100),char(105),char(110),char(103),char(0),char(109),char(95),char(110),char(111),char(100),char(101),char(73),char(110),\nchar(100),char(105),char(99),char(101),char(115),char(91),char(51),char(93),char(0),char(109),char(95),char(114),char(101),char(115),char(116),char(65),char(114),char(101),char(97),char(0),\nchar(109),char(95),char(99),char(48),char(91),char(52),char(93),char(0),char(109),char(95),char(110),char(111),char(100),char(101),char(73),char(110),char(100),char(105),char(99),char(101),\nchar(115),char(91),char(52),char(93),char(0),char(109),char(95),char(114),char(101),char(115),char(116),char(86),char(111),char(108),char(117),char(109),char(101),char(0),char(109),char(95),\nchar(99),char(49),char(0),char(109),char(95),char(99),char(50),char(0),char(109),char(95),char(99),char(48),char(0),char(109),char(95),char(108),char(111),char(99),char(97),char(108),\nchar(70),char(114),char(97),char(109),char(101),char(0),char(42),char(109),char(95),char(114),char(105),char(103),char(105),char(100),char(66),char(111),char(100),char(121),char(0),char(109),\nchar(95),char(110),char(111),char(100),char(101),char(73),char(110),char(100),char(101),char(120),char(0),char(109),char(95),char(97),char(101),char(114),char(111),char(77),char(111),char(100),\nchar(101),char(108),char(0),char(109),char(95),char(98),char(97),char(117),char(109),char(103),char(97),char(114),char(116),char(101),char(0),char(109),char(95),char(100),char(114),char(97),\nchar(103),char(0),char(109),char(95),char(108),char(105),char(102),char(116),char(0),char(109),char(95),char(112),char(114),char(101),char(115),char(115),char(117),char(114),char(101),char(0),\nchar(109),char(95),char(118),char(111),char(108),char(117),char(109),char(101),char(0),char(109),char(95),char(100),char(121),char(110),char(97),char(109),char(105),char(99),char(70),char(114),\nchar(105),char(99),char(116),char(105),char(111),char(110),char(0),char(109),char(95),char(112),char(111),char(115),char(101),char(77),char(97),char(116),char(99),char(104),char(0),char(109),\nchar(95),char(114),char(105),char(103),char(105),char(100),char(67),char(111),char(110),char(116),char(97),char(99),char(116),char(72),char(97),char(114),char(100),char(110),char(101),char(115),\nchar(115),char(0),char(109),char(95),char(107),char(105),char(110),char(101),char(116),char(105),char(99),char(67),char(111),char(110),char(116),char(97),char(99),char(116),char(72),char(97),\nchar(114),char(100),char(110),char(101),char(115),char(115),char(0),char(109),char(95),char(115),char(111),char(102),char(116),char(67),char(111),char(110),char(116),char(97),char(99),char(116),\nchar(72),char(97),char(114),char(100),char(110),char(101),char(115),char(115),char(0),char(109),char(95),char(97),char(110),char(99),char(104),char(111),char(114),char(72),char(97),char(114),\nchar(100),char(110),char(101),char(115),char(115),char(0),char(109),char(95),char(115),char(111),char(102),char(116),char(82),char(105),char(103),char(105),char(100),char(67),char(108),char(117),\nchar(115),char(116),char(101),char(114),char(72),char(97),char(114),char(100),char(110),char(101),char(115),char(115),char(0),char(109),char(95),char(115),char(111),char(102),char(116),char(75),\nchar(105),char(110),char(101),char(116),char(105),char(99),char(67),char(108),char(117),char(115),char(116),char(101),char(114),char(72),char(97),char(114),char(100),char(110),char(101),char(115),\nchar(115),char(0),char(109),char(95),char(115),char(111),char(102),char(116),char(83),char(111),char(102),char(116),char(67),char(108),char(117),char(115),char(116),char(101),char(114),char(72),\nchar(97),char(114),char(100),char(110),char(101),char(115),char(115),char(0),char(109),char(95),char(115),char(111),char(102),char(116),char(82),char(105),char(103),char(105),char(100),char(67),\nchar(108),char(117),char(115),char(116),char(101),char(114),char(73),char(109),char(112),char(117),char(108),char(115),char(101),char(83),char(112),char(108),char(105),char(116),char(0),char(109),\nchar(95),char(115),char(111),char(102),char(116),char(75),char(105),char(110),char(101),char(116),char(105),char(99),char(67),char(108),char(117),char(115),char(116),char(101),char(114),char(73),\nchar(109),char(112),char(117),char(108),char(115),char(101),char(83),char(112),char(108),char(105),char(116),char(0),char(109),char(95),char(115),char(111),char(102),char(116),char(83),char(111),\nchar(102),char(116),char(67),char(108),char(117),char(115),char(116),char(101),char(114),char(73),char(109),char(112),char(117),char(108),char(115),char(101),char(83),char(112),char(108),char(105),\nchar(116),char(0),char(109),char(95),char(109),char(97),char(120),char(86),char(111),char(108),char(117),char(109),char(101),char(0),char(109),char(95),char(116),char(105),char(109),char(101),\nchar(83),char(99),char(97),char(108),char(101),char(0),char(109),char(95),char(118),char(101),char(108),char(111),char(99),char(105),char(116),char(121),char(73),char(116),char(101),char(114),\nchar(97),char(116),char(105),char(111),char(110),char(115),char(0),char(109),char(95),char(112),char(111),char(115),char(105),char(116),char(105),char(111),char(110),char(73),char(116),char(101),\nchar(114),char(97),char(116),char(105),char(111),char(110),char(115),char(0),char(109),char(95),char(100),char(114),char(105),char(102),char(116),char(73),char(116),char(101),char(114),char(97),\nchar(116),char(105),char(111),char(110),char(115),char(0),char(109),char(95),char(99),char(108),char(117),char(115),char(116),char(101),char(114),char(73),char(116),char(101),char(114),char(97),\nchar(116),char(105),char(111),char(110),char(115),char(0),char(109),char(95),char(114),char(111),char(116),char(0),char(109),char(95),char(115),char(99),char(97),char(108),char(101),char(0),\nchar(109),char(95),char(97),char(113),char(113),char(0),char(109),char(95),char(99),char(111),char(109),char(0),char(42),char(109),char(95),char(112),char(111),char(115),char(105),char(116),\nchar(105),char(111),char(110),char(115),char(0),char(42),char(109),char(95),char(119),char(101),char(105),char(103),char(104),char(116),char(115),char(0),char(109),char(95),char(110),char(117),\nchar(109),char(80),char(111),char(115),char(105),char(116),char(105),char(111),char(110),char(115),char(0),char(109),char(95),char(110),char(117),char(109),char(87),char(101),char(105),char(103),\nchar(116),char(115),char(0),char(109),char(95),char(98),char(118),char(111),char(108),char(117),char(109),char(101),char(0),char(109),char(95),char(98),char(102),char(114),char(97),char(109),\nchar(101),char(0),char(109),char(95),char(102),char(114),char(97),char(109),char(101),char(120),char(102),char(111),char(114),char(109),char(0),char(109),char(95),char(108),char(111),char(99),\nchar(105),char(105),char(0),char(109),char(95),char(105),char(110),char(118),char(119),char(105),char(0),char(109),char(95),char(118),char(105),char(109),char(112),char(117),char(108),char(115),\nchar(101),char(115),char(91),char(50),char(93),char(0),char(109),char(95),char(100),char(105),char(109),char(112),char(117),char(108),char(115),char(101),char(115),char(91),char(50),char(93),\nchar(0),char(109),char(95),char(108),char(118),char(0),char(109),char(95),char(97),char(118),char(0),char(42),char(109),char(95),char(102),char(114),char(97),char(109),char(101),char(114),\nchar(101),char(102),char(115),char(0),char(42),char(109),char(95),char(110),char(111),char(100),char(101),char(73),char(110),char(100),char(105),char(99),char(101),char(115),char(0),char(42),\nchar(109),char(95),char(109),char(97),char(115),char(115),char(101),char(115),char(0),char(109),char(95),char(110),char(117),char(109),char(70),char(114),char(97),char(109),char(101),char(82),\nchar(101),char(102),char(115),char(0),char(109),char(95),char(110),char(117),char(109),char(78),char(111),char(100),char(101),char(115),char(0),char(109),char(95),char(110),char(117),char(109),\nchar(77),char(97),char(115),char(115),char(101),char(115),char(0),char(109),char(95),char(105),char(100),char(109),char(97),char(115),char(115),char(0),char(109),char(95),char(105),char(109),\nchar(97),char(115),char(115),char(0),char(109),char(95),char(110),char(118),char(105),char(109),char(112),char(117),char(108),char(115),char(101),char(115),char(0),char(109),char(95),char(110),\nchar(100),char(105),char(109),char(112),char(117),char(108),char(115),char(101),char(115),char(0),char(109),char(95),char(110),char(100),char(97),char(109),char(112),char(105),char(110),char(103),\nchar(0),char(109),char(95),char(108),char(100),char(97),char(109),char(112),char(105),char(110),char(103),char(0),char(109),char(95),char(97),char(100),char(97),char(109),char(112),char(105),\nchar(110),char(103),char(0),char(109),char(95),char(109),char(97),char(116),char(99),char(104),char(105),char(110),char(103),char(0),char(109),char(95),char(109),char(97),char(120),char(83),\nchar(101),char(108),char(102),char(67),char(111),char(108),char(108),char(105),char(115),char(105),char(111),char(110),char(73),char(109),char(112),char(117),char(108),char(115),char(101),char(0),\nchar(109),char(95),char(115),char(101),char(108),char(102),char(67),char(111),char(108),char(108),char(105),char(115),char(105),char(111),char(110),char(73),char(109),char(112),char(117),char(108),\nchar(115),char(101),char(70),char(97),char(99),char(116),char(111),char(114),char(0),char(109),char(95),char(99),char(111),char(110),char(116),char(97),char(105),char(110),char(115),char(65),\nchar(110),char(99),char(104),char(111),char(114),char(0),char(109),char(95),char(99),char(111),char(108),char(108),char(105),char(100),char(101),char(0),char(109),char(95),char(99),char(108),\nchar(117),char(115),char(116),char(101),char(114),char(73),char(110),char(100),char(101),char(120),char(0),char(42),char(109),char(95),char(98),char(111),char(100),char(121),char(65),char(0),\nchar(42),char(109),char(95),char(98),char(111),char(100),char(121),char(66),char(0),char(109),char(95),char(114),char(101),char(102),char(115),char(91),char(50),char(93),char(0),char(109),\nchar(95),char(99),char(102),char(109),char(0),char(109),char(95),char(115),char(112),char(108),char(105),char(116),char(0),char(109),char(95),char(100),char(101),char(108),char(101),char(116),\nchar(101),char(0),char(109),char(95),char(114),char(101),char(108),char(80),char(111),char(115),char(105),char(116),char(105),char(111),char(110),char(91),char(50),char(93),char(0),char(109),\nchar(95),char(98),char(111),char(100),char(121),char(65),char(116),char(121),char(112),char(101),char(0),char(109),char(95),char(98),char(111),char(100),char(121),char(66),char(116),char(121),\nchar(112),char(101),char(0),char(109),char(95),char(106),char(111),char(105),char(110),char(116),char(84),char(121),char(112),char(101),char(0),char(42),char(109),char(95),char(112),char(111),\nchar(115),char(101),char(0),char(42),char(42),char(109),char(95),char(109),char(97),char(116),char(101),char(114),char(105),char(97),char(108),char(115),char(0),char(42),char(109),char(95),\nchar(110),char(111),char(100),char(101),char(115),char(0),char(42),char(109),char(95),char(108),char(105),char(110),char(107),char(115),char(0),char(42),char(109),char(95),char(102),char(97),\nchar(99),char(101),char(115),char(0),char(42),char(109),char(95),char(116),char(101),char(116),char(114),char(97),char(104),char(101),char(100),char(114),char(97),char(0),char(42),char(109),\nchar(95),char(97),char(110),char(99),char(104),char(111),char(114),char(115),char(0),char(42),char(109),char(95),char(99),char(108),char(117),char(115),char(116),char(101),char(114),char(115),\nchar(0),char(42),char(109),char(95),char(106),char(111),char(105),char(110),char(116),char(115),char(0),char(109),char(95),char(110),char(117),char(109),char(77),char(97),char(116),char(101),\nchar(114),char(105),char(97),char(108),char(115),char(0),char(109),char(95),char(110),char(117),char(109),char(76),char(105),char(110),char(107),char(115),char(0),char(109),char(95),char(110),\nchar(117),char(109),char(70),char(97),char(99),char(101),char(115),char(0),char(109),char(95),char(110),char(117),char(109),char(84),char(101),char(116),char(114),char(97),char(104),char(101),\nchar(100),char(114),char(97),char(0),char(109),char(95),char(110),char(117),char(109),char(65),char(110),char(99),char(104),char(111),char(114),char(115),char(0),char(109),char(95),char(110),\nchar(117),char(109),char(67),char(108),char(117),char(115),char(116),char(101),char(114),char(115),char(0),char(109),char(95),char(110),char(117),char(109),char(74),char(111),char(105),char(110),\nchar(116),char(115),char(0),char(109),char(95),char(99),char(111),char(110),char(102),char(105),char(103),char(0),char(84),char(89),char(80),char(69),char(76),char(0),char(0),char(0),\nchar(99),char(104),char(97),char(114),char(0),char(117),char(99),char(104),char(97),char(114),char(0),char(115),char(104),char(111),char(114),char(116),char(0),char(117),char(115),char(104),\nchar(111),char(114),char(116),char(0),char(105),char(110),char(116),char(0),char(108),char(111),char(110),char(103),char(0),char(117),char(108),char(111),char(110),char(103),char(0),char(102),\nchar(108),char(111),char(97),char(116),char(0),char(100),char(111),char(117),char(98),char(108),char(101),char(0),char(118),char(111),char(105),char(100),char(0),char(80),char(111),char(105),\nchar(110),char(116),char(101),char(114),char(65),char(114),char(114),char(97),char(121),char(0),char(98),char(116),char(80),char(104),char(121),char(115),char(105),char(99),char(115),char(83),\nchar(121),char(115),char(116),char(101),char(109),char(0),char(76),char(105),char(115),char(116),char(66),char(97),char(115),char(101),char(0),char(98),char(116),char(86),char(101),char(99),\nchar(116),char(111),char(114),char(51),char(70),char(108),char(111),char(97),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(86),char(101),char(99),char(116),\nchar(111),char(114),char(51),char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(77),char(97),char(116),char(114),\nchar(105),char(120),char(51),char(120),char(51),char(70),char(108),char(111),char(97),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(77),char(97),char(116),\nchar(114),char(105),char(120),char(51),char(120),char(51),char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(84),\nchar(114),char(97),char(110),char(115),char(102),char(111),char(114),char(109),char(70),char(108),char(111),char(97),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),\nchar(84),char(114),char(97),char(110),char(115),char(102),char(111),char(114),char(109),char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97),char(116),char(97),char(0),\nchar(98),char(116),char(66),char(118),char(104),char(83),char(117),char(98),char(116),char(114),char(101),char(101),char(73),char(110),char(102),char(111),char(68),char(97),char(116),char(97),\nchar(0),char(98),char(116),char(79),char(112),char(116),char(105),char(109),char(105),char(122),char(101),char(100),char(66),char(118),char(104),char(78),char(111),char(100),char(101),char(70),\nchar(108),char(111),char(97),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(79),char(112),char(116),char(105),char(109),char(105),char(122),char(101),char(100),\nchar(66),char(118),char(104),char(78),char(111),char(100),char(101),char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),\nchar(81),char(117),char(97),char(110),char(116),char(105),char(122),char(101),char(100),char(66),char(118),char(104),char(78),char(111),char(100),char(101),char(68),char(97),char(116),char(97),\nchar(0),char(98),char(116),char(81),char(117),char(97),char(110),char(116),char(105),char(122),char(101),char(100),char(66),char(118),char(104),char(70),char(108),char(111),char(97),char(116),\nchar(68),char(97),char(116),char(97),char(0),char(98),char(116),char(81),char(117),char(97),char(110),char(116),char(105),char(122),char(101),char(100),char(66),char(118),char(104),char(68),\nchar(111),char(117),char(98),char(108),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(67),char(111),char(108),char(108),char(105),char(115),char(105),char(111),\nchar(110),char(83),char(104),char(97),char(112),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(83),char(116),char(97),char(116),char(105),char(99),char(80),\nchar(108),char(97),char(110),char(101),char(83),char(104),char(97),char(112),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(67),char(111),char(110),char(118),\nchar(101),char(120),char(73),char(110),char(116),char(101),char(114),char(110),char(97),char(108),char(83),char(104),char(97),char(112),char(101),char(68),char(97),char(116),char(97),char(0),\nchar(98),char(116),char(80),char(111),char(115),char(105),char(116),char(105),char(111),char(110),char(65),char(110),char(100),char(82),char(97),char(100),char(105),char(117),char(115),char(0),\nchar(98),char(116),char(77),char(117),char(108),char(116),char(105),char(83),char(112),char(104),char(101),char(114),char(101),char(83),char(104),char(97),char(112),char(101),char(68),char(97),\nchar(116),char(97),char(0),char(98),char(116),char(73),char(110),char(116),char(73),char(110),char(100),char(101),char(120),char(68),char(97),char(116),char(97),char(0),char(98),char(116),\nchar(83),char(104),char(111),char(114),char(116),char(73),char(110),char(116),char(73),char(110),char(100),char(101),char(120),char(68),char(97),char(116),char(97),char(0),char(98),char(116),\nchar(83),char(104),char(111),char(114),char(116),char(73),char(110),char(116),char(73),char(110),char(100),char(101),char(120),char(84),char(114),char(105),char(112),char(108),char(101),char(116),\nchar(68),char(97),char(116),char(97),char(0),char(98),char(116),char(67),char(104),char(97),char(114),char(73),char(110),char(100),char(101),char(120),char(84),char(114),char(105),char(112),\nchar(108),char(101),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(77),char(101),char(115),char(104),char(80),char(97),char(114),char(116),char(68),char(97),\nchar(116),char(97),char(0),char(98),char(116),char(83),char(116),char(114),char(105),char(100),char(105),char(110),char(103),char(77),char(101),char(115),char(104),char(73),char(110),char(116),\nchar(101),char(114),char(102),char(97),char(99),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(84),char(114),char(105),char(97),char(110),char(103),char(108),\nchar(101),char(77),char(101),char(115),char(104),char(83),char(104),char(97),char(112),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(84),char(114),char(105),\nchar(97),char(110),char(103),char(108),char(101),char(73),char(110),char(102),char(111),char(77),char(97),char(112),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(83),\nchar(99),char(97),char(108),char(101),char(100),char(84),char(114),char(105),char(97),char(110),char(103),char(108),char(101),char(77),char(101),char(115),char(104),char(83),char(104),char(97),\nchar(112),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(67),char(111),char(109),char(112),char(111),char(117),char(110),char(100),char(83),char(104),char(97),\nchar(112),char(101),char(67),char(104),char(105),char(108),char(100),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(67),char(111),char(109),char(112),char(111),char(117),\nchar(110),char(100),char(83),char(104),char(97),char(112),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(67),char(121),char(108),char(105),char(110),char(100),\nchar(101),char(114),char(83),char(104),char(97),char(112),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(67),char(97),char(112),char(115),char(117),char(108),\nchar(101),char(83),char(104),char(97),char(112),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(84),char(114),char(105),char(97),char(110),char(103),char(108),\nchar(101),char(73),char(110),char(102),char(111),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(71),char(73),char(109),char(112),char(97),char(99),char(116),char(77),\nchar(101),char(115),char(104),char(83),char(104),char(97),char(112),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(67),char(111),char(110),char(118),char(101),\nchar(120),char(72),char(117),char(108),char(108),char(83),char(104),char(97),char(112),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(67),char(111),char(108),\nchar(108),char(105),char(115),char(105),char(111),char(110),char(79),char(98),char(106),char(101),char(99),char(116),char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97),\nchar(116),char(97),char(0),char(98),char(116),char(67),char(111),char(108),char(108),char(105),char(115),char(105),char(111),char(110),char(79),char(98),char(106),char(101),char(99),char(116),\nchar(70),char(108),char(111),char(97),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(68),char(121),char(110),char(97),char(109),char(105),char(99),char(115),\nchar(87),char(111),char(114),char(108),char(100),char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(67),char(111),\nchar(110),char(116),char(97),char(99),char(116),char(83),char(111),char(108),char(118),char(101),char(114),char(73),char(110),char(102),char(111),char(68),char(111),char(117),char(98),char(108),\nchar(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(68),char(121),char(110),char(97),char(109),char(105),char(99),char(115),char(87),char(111),char(114),char(108),\nchar(100),char(70),char(108),char(111),char(97),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(67),char(111),char(110),char(116),char(97),char(99),char(116),\nchar(83),char(111),char(108),char(118),char(101),char(114),char(73),char(110),char(102),char(111),char(70),char(108),char(111),char(97),char(116),char(68),char(97),char(116),char(97),char(0),\nchar(98),char(116),char(82),char(105),char(103),char(105),char(100),char(66),char(111),char(100),char(121),char(70),char(108),char(111),char(97),char(116),char(68),char(97),char(116),char(97),\nchar(0),char(98),char(116),char(82),char(105),char(103),char(105),char(100),char(66),char(111),char(100),char(121),char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97),\nchar(116),char(97),char(0),char(98),char(116),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(73),char(110),char(102),char(111),char(49),\nchar(0),char(98),char(116),char(84),char(121),char(112),char(101),char(100),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(68),char(97),\nchar(116),char(97),char(0),char(98),char(116),char(82),char(105),char(103),char(105),char(100),char(66),char(111),char(100),char(121),char(68),char(97),char(116),char(97),char(0),char(98),\nchar(116),char(80),char(111),char(105),char(110),char(116),char(50),char(80),char(111),char(105),char(110),char(116),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),\nchar(110),char(116),char(70),char(108),char(111),char(97),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(80),char(111),char(105),char(110),char(116),char(50),\nchar(80),char(111),char(105),char(110),char(116),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(68),char(111),char(117),char(98),char(108),\nchar(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(72),char(105),char(110),char(103),char(101),char(67),char(111),char(110),char(115),char(116),char(114),char(97),\nchar(105),char(110),char(116),char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(72),char(105),char(110),char(103),\nchar(101),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(70),char(108),char(111),char(97),char(116),char(68),char(97),char(116),char(97),\nchar(0),char(98),char(116),char(67),char(111),char(110),char(101),char(84),char(119),char(105),char(115),char(116),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),\nchar(110),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(71),char(101),char(110),char(101),char(114),char(105),char(99),char(54),char(68),char(111),char(102),\nchar(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(71),char(101),char(110),\nchar(101),char(114),char(105),char(99),char(54),char(68),char(111),char(102),char(83),char(112),char(114),char(105),char(110),char(103),char(67),char(111),char(110),char(115),char(116),char(114),\nchar(97),char(105),char(110),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(83),char(108),char(105),char(100),char(101),char(114),char(67),char(111),char(110),\nchar(115),char(116),char(114),char(97),char(105),char(110),char(116),char(68),char(97),char(116),char(97),char(0),char(83),char(111),char(102),char(116),char(66),char(111),char(100),char(121),\nchar(77),char(97),char(116),char(101),char(114),char(105),char(97),char(108),char(68),char(97),char(116),char(97),char(0),char(83),char(111),char(102),char(116),char(66),char(111),char(100),\nchar(121),char(78),char(111),char(100),char(101),char(68),char(97),char(116),char(97),char(0),char(83),char(111),char(102),char(116),char(66),char(111),char(100),char(121),char(76),char(105),\nchar(110),char(107),char(68),char(97),char(116),char(97),char(0),char(83),char(111),char(102),char(116),char(66),char(111),char(100),char(121),char(70),char(97),char(99),char(101),char(68),\nchar(97),char(116),char(97),char(0),char(83),char(111),char(102),char(116),char(66),char(111),char(100),char(121),char(84),char(101),char(116),char(114),char(97),char(68),char(97),char(116),\nchar(97),char(0),char(83),char(111),char(102),char(116),char(82),char(105),char(103),char(105),char(100),char(65),char(110),char(99),char(104),char(111),char(114),char(68),char(97),char(116),\nchar(97),char(0),char(83),char(111),char(102),char(116),char(66),char(111),char(100),char(121),char(67),char(111),char(110),char(102),char(105),char(103),char(68),char(97),char(116),char(97),\nchar(0),char(83),char(111),char(102),char(116),char(66),char(111),char(100),char(121),char(80),char(111),char(115),char(101),char(68),char(97),char(116),char(97),char(0),char(83),char(111),\nchar(102),char(116),char(66),char(111),char(100),char(121),char(67),char(108),char(117),char(115),char(116),char(101),char(114),char(68),char(97),char(116),char(97),char(0),char(98),char(116),\nchar(83),char(111),char(102),char(116),char(66),char(111),char(100),char(121),char(74),char(111),char(105),char(110),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),\nchar(83),char(111),char(102),char(116),char(66),char(111),char(100),char(121),char(70),char(108),char(111),char(97),char(116),char(68),char(97),char(116),char(97),char(0),char(0),char(0),\nchar(84),char(76),char(69),char(78),char(1),char(0),char(1),char(0),char(2),char(0),char(2),char(0),char(4),char(0),char(4),char(0),char(4),char(0),char(4),char(0),\nchar(8),char(0),char(0),char(0),char(16),char(0),char(48),char(0),char(16),char(0),char(16),char(0),char(32),char(0),char(48),char(0),char(96),char(0),char(64),char(0),\nchar(-128),char(0),char(20),char(0),char(48),char(0),char(80),char(0),char(16),char(0),char(96),char(0),char(-112),char(0),char(16),char(0),char(56),char(0),char(56),char(0),\nchar(20),char(0),char(72),char(0),char(4),char(0),char(4),char(0),char(8),char(0),char(4),char(0),char(56),char(0),char(32),char(0),char(80),char(0),char(72),char(0),\nchar(96),char(0),char(80),char(0),char(32),char(0),char(64),char(0),char(64),char(0),char(16),char(0),char(72),char(0),char(80),char(0),char(-32),char(1),char(16),char(1),\nchar(-72),char(0),char(-104),char(0),char(104),char(0),char(88),char(0),char(-8),char(1),char(-80),char(3),char(8),char(0),char(64),char(0),char(0),char(0),char(96),char(0),\nchar(-128),char(0),char(104),char(1),char(-24),char(0),char(-32),char(0),char(8),char(1),char(104),char(1),char(-40),char(0),char(16),char(0),char(104),char(0),char(24),char(0),\nchar(40),char(0),char(104),char(0),char(96),char(0),char(104),char(0),char(-56),char(0),char(104),char(1),char(112),char(0),char(-32),char(1),char(83),char(84),char(82),char(67),\nchar(65),char(0),char(0),char(0),char(10),char(0),char(3),char(0),char(4),char(0),char(0),char(0),char(4),char(0),char(1),char(0),char(9),char(0),char(2),char(0),\nchar(11),char(0),char(3),char(0),char(10),char(0),char(3),char(0),char(10),char(0),char(4),char(0),char(10),char(0),char(5),char(0),char(12),char(0),char(2),char(0),\nchar(9),char(0),char(6),char(0),char(9),char(0),char(7),char(0),char(13),char(0),char(1),char(0),char(7),char(0),char(8),char(0),char(14),char(0),char(1),char(0),\nchar(8),char(0),char(8),char(0),char(15),char(0),char(1),char(0),char(13),char(0),char(9),char(0),char(16),char(0),char(1),char(0),char(14),char(0),char(9),char(0),\nchar(17),char(0),char(2),char(0),char(15),char(0),char(10),char(0),char(13),char(0),char(11),char(0),char(18),char(0),char(2),char(0),char(16),char(0),char(10),char(0),\nchar(14),char(0),char(11),char(0),char(19),char(0),char(4),char(0),char(4),char(0),char(12),char(0),char(4),char(0),char(13),char(0),char(2),char(0),char(14),char(0),\nchar(2),char(0),char(15),char(0),char(20),char(0),char(6),char(0),char(13),char(0),char(16),char(0),char(13),char(0),char(17),char(0),char(4),char(0),char(18),char(0),\nchar(4),char(0),char(19),char(0),char(4),char(0),char(20),char(0),char(0),char(0),char(21),char(0),char(21),char(0),char(6),char(0),char(14),char(0),char(16),char(0),\nchar(14),char(0),char(17),char(0),char(4),char(0),char(18),char(0),char(4),char(0),char(19),char(0),char(4),char(0),char(20),char(0),char(0),char(0),char(21),char(0),\nchar(22),char(0),char(3),char(0),char(2),char(0),char(14),char(0),char(2),char(0),char(15),char(0),char(4),char(0),char(22),char(0),char(23),char(0),char(12),char(0),\nchar(13),char(0),char(23),char(0),char(13),char(0),char(24),char(0),char(13),char(0),char(25),char(0),char(4),char(0),char(26),char(0),char(4),char(0),char(27),char(0),\nchar(4),char(0),char(28),char(0),char(4),char(0),char(29),char(0),char(20),char(0),char(30),char(0),char(22),char(0),char(31),char(0),char(19),char(0),char(32),char(0),\nchar(4),char(0),char(33),char(0),char(4),char(0),char(34),char(0),char(24),char(0),char(12),char(0),char(14),char(0),char(23),char(0),char(14),char(0),char(24),char(0),\nchar(14),char(0),char(25),char(0),char(4),char(0),char(26),char(0),char(4),char(0),char(27),char(0),char(4),char(0),char(28),char(0),char(4),char(0),char(29),char(0),\nchar(21),char(0),char(30),char(0),char(22),char(0),char(31),char(0),char(4),char(0),char(33),char(0),char(4),char(0),char(34),char(0),char(19),char(0),char(32),char(0),\nchar(25),char(0),char(3),char(0),char(0),char(0),char(35),char(0),char(4),char(0),char(36),char(0),char(0),char(0),char(37),char(0),char(26),char(0),char(5),char(0),\nchar(25),char(0),char(38),char(0),char(13),char(0),char(39),char(0),char(13),char(0),char(40),char(0),char(7),char(0),char(41),char(0),char(0),char(0),char(21),char(0),\nchar(27),char(0),char(5),char(0),char(25),char(0),char(38),char(0),char(13),char(0),char(39),char(0),char(13),char(0),char(42),char(0),char(7),char(0),char(43),char(0),\nchar(4),char(0),char(44),char(0),char(28),char(0),char(2),char(0),char(13),char(0),char(45),char(0),char(7),char(0),char(46),char(0),char(29),char(0),char(4),char(0),\nchar(27),char(0),char(47),char(0),char(28),char(0),char(48),char(0),char(4),char(0),char(49),char(0),char(0),char(0),char(37),char(0),char(30),char(0),char(1),char(0),\nchar(4),char(0),char(50),char(0),char(31),char(0),char(2),char(0),char(2),char(0),char(50),char(0),char(0),char(0),char(51),char(0),char(32),char(0),char(2),char(0),\nchar(2),char(0),char(52),char(0),char(0),char(0),char(51),char(0),char(33),char(0),char(2),char(0),char(0),char(0),char(52),char(0),char(0),char(0),char(53),char(0),\nchar(34),char(0),char(8),char(0),char(13),char(0),char(54),char(0),char(14),char(0),char(55),char(0),char(30),char(0),char(56),char(0),char(32),char(0),char(57),char(0),\nchar(33),char(0),char(58),char(0),char(31),char(0),char(59),char(0),char(4),char(0),char(60),char(0),char(4),char(0),char(61),char(0),char(35),char(0),char(4),char(0),\nchar(34),char(0),char(62),char(0),char(13),char(0),char(63),char(0),char(4),char(0),char(64),char(0),char(0),char(0),char(37),char(0),char(36),char(0),char(7),char(0),\nchar(25),char(0),char(38),char(0),char(35),char(0),char(65),char(0),char(23),char(0),char(66),char(0),char(24),char(0),char(67),char(0),char(37),char(0),char(68),char(0),\nchar(7),char(0),char(43),char(0),char(0),char(0),char(69),char(0),char(38),char(0),char(2),char(0),char(36),char(0),char(70),char(0),char(13),char(0),char(39),char(0),\nchar(39),char(0),char(4),char(0),char(17),char(0),char(71),char(0),char(25),char(0),char(72),char(0),char(4),char(0),char(73),char(0),char(7),char(0),char(74),char(0),\nchar(40),char(0),char(4),char(0),char(25),char(0),char(38),char(0),char(39),char(0),char(75),char(0),char(4),char(0),char(76),char(0),char(7),char(0),char(43),char(0),\nchar(41),char(0),char(3),char(0),char(27),char(0),char(47),char(0),char(4),char(0),char(77),char(0),char(0),char(0),char(37),char(0),char(42),char(0),char(3),char(0),\nchar(27),char(0),char(47),char(0),char(4),char(0),char(77),char(0),char(0),char(0),char(37),char(0),char(43),char(0),char(4),char(0),char(4),char(0),char(78),char(0),\nchar(7),char(0),char(79),char(0),char(7),char(0),char(80),char(0),char(7),char(0),char(81),char(0),char(37),char(0),char(14),char(0),char(4),char(0),char(82),char(0),\nchar(4),char(0),char(83),char(0),char(43),char(0),char(84),char(0),char(4),char(0),char(85),char(0),char(7),char(0),char(86),char(0),char(7),char(0),char(87),char(0),\nchar(7),char(0),char(88),char(0),char(7),char(0),char(89),char(0),char(7),char(0),char(90),char(0),char(4),char(0),char(91),char(0),char(4),char(0),char(92),char(0),\nchar(4),char(0),char(93),char(0),char(4),char(0),char(94),char(0),char(0),char(0),char(37),char(0),char(44),char(0),char(5),char(0),char(25),char(0),char(38),char(0),\nchar(35),char(0),char(65),char(0),char(13),char(0),char(39),char(0),char(7),char(0),char(43),char(0),char(4),char(0),char(95),char(0),char(45),char(0),char(5),char(0),\nchar(27),char(0),char(47),char(0),char(13),char(0),char(96),char(0),char(14),char(0),char(97),char(0),char(4),char(0),char(98),char(0),char(0),char(0),char(99),char(0),\nchar(46),char(0),char(25),char(0),char(9),char(0),char(100),char(0),char(9),char(0),char(101),char(0),char(25),char(0),char(102),char(0),char(0),char(0),char(35),char(0),\nchar(18),char(0),char(103),char(0),char(18),char(0),char(104),char(0),char(14),char(0),char(105),char(0),char(14),char(0),char(106),char(0),char(14),char(0),char(107),char(0),\nchar(8),char(0),char(108),char(0),char(8),char(0),char(109),char(0),char(8),char(0),char(110),char(0),char(8),char(0),char(111),char(0),char(8),char(0),char(112),char(0),\nchar(8),char(0),char(113),char(0),char(8),char(0),char(114),char(0),char(8),char(0),char(115),char(0),char(4),char(0),char(116),char(0),char(4),char(0),char(117),char(0),\nchar(4),char(0),char(118),char(0),char(4),char(0),char(119),char(0),char(4),char(0),char(120),char(0),char(4),char(0),char(121),char(0),char(4),char(0),char(122),char(0),\nchar(0),char(0),char(37),char(0),char(47),char(0),char(25),char(0),char(9),char(0),char(100),char(0),char(9),char(0),char(101),char(0),char(25),char(0),char(102),char(0),\nchar(0),char(0),char(35),char(0),char(17),char(0),char(103),char(0),char(17),char(0),char(104),char(0),char(13),char(0),char(105),char(0),char(13),char(0),char(106),char(0),\nchar(13),char(0),char(107),char(0),char(7),char(0),char(108),char(0),char(7),char(0),char(109),char(0),char(7),char(0),char(110),char(0),char(7),char(0),char(111),char(0),\nchar(7),char(0),char(112),char(0),char(7),char(0),char(113),char(0),char(7),char(0),char(114),char(0),char(7),char(0),char(115),char(0),char(4),char(0),char(116),char(0),\nchar(4),char(0),char(117),char(0),char(4),char(0),char(118),char(0),char(4),char(0),char(119),char(0),char(4),char(0),char(120),char(0),char(4),char(0),char(121),char(0),\nchar(4),char(0),char(122),char(0),char(0),char(0),char(37),char(0),char(48),char(0),char(2),char(0),char(49),char(0),char(123),char(0),char(14),char(0),char(124),char(0),\nchar(50),char(0),char(2),char(0),char(51),char(0),char(123),char(0),char(13),char(0),char(124),char(0),char(52),char(0),char(21),char(0),char(47),char(0),char(125),char(0),\nchar(15),char(0),char(126),char(0),char(13),char(0),char(127),char(0),char(13),char(0),char(-128),char(0),char(13),char(0),char(-127),char(0),char(13),char(0),char(-126),char(0),\nchar(13),char(0),char(124),char(0),char(13),char(0),char(-125),char(0),char(13),char(0),char(-124),char(0),char(13),char(0),char(-123),char(0),char(13),char(0),char(-122),char(0),\nchar(7),char(0),char(-121),char(0),char(7),char(0),char(-120),char(0),char(7),char(0),char(-119),char(0),char(7),char(0),char(-118),char(0),char(7),char(0),char(-117),char(0),\nchar(7),char(0),char(-116),char(0),char(7),char(0),char(-115),char(0),char(7),char(0),char(-114),char(0),char(7),char(0),char(-113),char(0),char(4),char(0),char(-112),char(0),\nchar(53),char(0),char(22),char(0),char(46),char(0),char(125),char(0),char(16),char(0),char(126),char(0),char(14),char(0),char(127),char(0),char(14),char(0),char(-128),char(0),\nchar(14),char(0),char(-127),char(0),char(14),char(0),char(-126),char(0),char(14),char(0),char(124),char(0),char(14),char(0),char(-125),char(0),char(14),char(0),char(-124),char(0),\nchar(14),char(0),char(-123),char(0),char(14),char(0),char(-122),char(0),char(8),char(0),char(-121),char(0),char(8),char(0),char(-120),char(0),char(8),char(0),char(-119),char(0),\nchar(8),char(0),char(-118),char(0),char(8),char(0),char(-117),char(0),char(8),char(0),char(-116),char(0),char(8),char(0),char(-115),char(0),char(8),char(0),char(-114),char(0),\nchar(8),char(0),char(-113),char(0),char(4),char(0),char(-112),char(0),char(0),char(0),char(37),char(0),char(54),char(0),char(2),char(0),char(4),char(0),char(-111),char(0),\nchar(4),char(0),char(-110),char(0),char(55),char(0),char(13),char(0),char(56),char(0),char(-109),char(0),char(56),char(0),char(-108),char(0),char(0),char(0),char(35),char(0),\nchar(4),char(0),char(-107),char(0),char(4),char(0),char(-106),char(0),char(4),char(0),char(-105),char(0),char(4),char(0),char(-104),char(0),char(7),char(0),char(-103),char(0),\nchar(7),char(0),char(-102),char(0),char(4),char(0),char(-101),char(0),char(4),char(0),char(-100),char(0),char(7),char(0),char(-99),char(0),char(4),char(0),char(-98),char(0),\nchar(57),char(0),char(3),char(0),char(55),char(0),char(-97),char(0),char(13),char(0),char(-96),char(0),char(13),char(0),char(-95),char(0),char(58),char(0),char(3),char(0),\nchar(55),char(0),char(-97),char(0),char(14),char(0),char(-96),char(0),char(14),char(0),char(-95),char(0),char(59),char(0),char(13),char(0),char(55),char(0),char(-97),char(0),\nchar(18),char(0),char(-94),char(0),char(18),char(0),char(-93),char(0),char(4),char(0),char(-92),char(0),char(4),char(0),char(-91),char(0),char(4),char(0),char(-90),char(0),\nchar(7),char(0),char(-89),char(0),char(7),char(0),char(-88),char(0),char(7),char(0),char(-87),char(0),char(7),char(0),char(-86),char(0),char(7),char(0),char(-85),char(0),\nchar(7),char(0),char(-84),char(0),char(7),char(0),char(-83),char(0),char(60),char(0),char(13),char(0),char(55),char(0),char(-97),char(0),char(17),char(0),char(-94),char(0),\nchar(17),char(0),char(-93),char(0),char(4),char(0),char(-92),char(0),char(4),char(0),char(-91),char(0),char(4),char(0),char(-90),char(0),char(7),char(0),char(-89),char(0),\nchar(7),char(0),char(-88),char(0),char(7),char(0),char(-87),char(0),char(7),char(0),char(-86),char(0),char(7),char(0),char(-85),char(0),char(7),char(0),char(-84),char(0),\nchar(7),char(0),char(-83),char(0),char(61),char(0),char(11),char(0),char(55),char(0),char(-97),char(0),char(17),char(0),char(-94),char(0),char(17),char(0),char(-93),char(0),\nchar(7),char(0),char(-82),char(0),char(7),char(0),char(-81),char(0),char(7),char(0),char(-80),char(0),char(7),char(0),char(-85),char(0),char(7),char(0),char(-84),char(0),\nchar(7),char(0),char(-83),char(0),char(7),char(0),char(-79),char(0),char(0),char(0),char(21),char(0),char(62),char(0),char(9),char(0),char(55),char(0),char(-97),char(0),\nchar(17),char(0),char(-94),char(0),char(17),char(0),char(-93),char(0),char(13),char(0),char(-78),char(0),char(13),char(0),char(-77),char(0),char(13),char(0),char(-76),char(0),\nchar(13),char(0),char(-75),char(0),char(4),char(0),char(-74),char(0),char(4),char(0),char(-73),char(0),char(63),char(0),char(5),char(0),char(62),char(0),char(-72),char(0),\nchar(4),char(0),char(-71),char(0),char(7),char(0),char(-70),char(0),char(7),char(0),char(-69),char(0),char(7),char(0),char(-68),char(0),char(64),char(0),char(9),char(0),\nchar(55),char(0),char(-97),char(0),char(17),char(0),char(-94),char(0),char(17),char(0),char(-93),char(0),char(7),char(0),char(-78),char(0),char(7),char(0),char(-77),char(0),\nchar(7),char(0),char(-76),char(0),char(7),char(0),char(-75),char(0),char(4),char(0),char(-74),char(0),char(4),char(0),char(-73),char(0),char(49),char(0),char(22),char(0),\nchar(8),char(0),char(-67),char(0),char(8),char(0),char(-79),char(0),char(8),char(0),char(110),char(0),char(8),char(0),char(-66),char(0),char(8),char(0),char(112),char(0),\nchar(8),char(0),char(-65),char(0),char(8),char(0),char(-64),char(0),char(8),char(0),char(-63),char(0),char(8),char(0),char(-62),char(0),char(8),char(0),char(-61),char(0),\nchar(8),char(0),char(-60),char(0),char(8),char(0),char(-59),char(0),char(8),char(0),char(-58),char(0),char(8),char(0),char(-57),char(0),char(8),char(0),char(-56),char(0),\nchar(8),char(0),char(-55),char(0),char(4),char(0),char(-54),char(0),char(4),char(0),char(-53),char(0),char(4),char(0),char(-52),char(0),char(4),char(0),char(-51),char(0),\nchar(4),char(0),char(-50),char(0),char(0),char(0),char(37),char(0),char(51),char(0),char(22),char(0),char(7),char(0),char(-67),char(0),char(7),char(0),char(-79),char(0),\nchar(7),char(0),char(110),char(0),char(7),char(0),char(-66),char(0),char(7),char(0),char(112),char(0),char(7),char(0),char(-65),char(0),char(7),char(0),char(-64),char(0),\nchar(7),char(0),char(-63),char(0),char(7),char(0),char(-62),char(0),char(7),char(0),char(-61),char(0),char(7),char(0),char(-60),char(0),char(7),char(0),char(-59),char(0),\nchar(7),char(0),char(-58),char(0),char(7),char(0),char(-57),char(0),char(7),char(0),char(-56),char(0),char(7),char(0),char(-55),char(0),char(4),char(0),char(-54),char(0),\nchar(4),char(0),char(-53),char(0),char(4),char(0),char(-52),char(0),char(4),char(0),char(-51),char(0),char(4),char(0),char(-50),char(0),char(0),char(0),char(37),char(0),\nchar(65),char(0),char(4),char(0),char(7),char(0),char(-49),char(0),char(7),char(0),char(-48),char(0),char(7),char(0),char(-47),char(0),char(4),char(0),char(78),char(0),\nchar(66),char(0),char(10),char(0),char(65),char(0),char(-46),char(0),char(13),char(0),char(-45),char(0),char(13),char(0),char(-44),char(0),char(13),char(0),char(-43),char(0),\nchar(13),char(0),char(-42),char(0),char(13),char(0),char(-41),char(0),char(7),char(0),char(-121),char(0),char(7),char(0),char(-40),char(0),char(4),char(0),char(-39),char(0),\nchar(4),char(0),char(53),char(0),char(67),char(0),char(4),char(0),char(65),char(0),char(-46),char(0),char(4),char(0),char(-38),char(0),char(7),char(0),char(-37),char(0),\nchar(4),char(0),char(-36),char(0),char(68),char(0),char(4),char(0),char(13),char(0),char(-41),char(0),char(65),char(0),char(-46),char(0),char(4),char(0),char(-35),char(0),\nchar(7),char(0),char(-34),char(0),char(69),char(0),char(7),char(0),char(13),char(0),char(-33),char(0),char(65),char(0),char(-46),char(0),char(4),char(0),char(-32),char(0),\nchar(7),char(0),char(-31),char(0),char(7),char(0),char(-30),char(0),char(7),char(0),char(-29),char(0),char(4),char(0),char(53),char(0),char(70),char(0),char(6),char(0),\nchar(15),char(0),char(-28),char(0),char(13),char(0),char(-30),char(0),char(13),char(0),char(-27),char(0),char(56),char(0),char(-26),char(0),char(4),char(0),char(-25),char(0),\nchar(7),char(0),char(-29),char(0),char(71),char(0),char(26),char(0),char(4),char(0),char(-24),char(0),char(7),char(0),char(-23),char(0),char(7),char(0),char(-79),char(0),\nchar(7),char(0),char(-22),char(0),char(7),char(0),char(-21),char(0),char(7),char(0),char(-20),char(0),char(7),char(0),char(-19),char(0),char(7),char(0),char(-18),char(0),\nchar(7),char(0),char(-17),char(0),char(7),char(0),char(-16),char(0),char(7),char(0),char(-15),char(0),char(7),char(0),char(-14),char(0),char(7),char(0),char(-13),char(0),\nchar(7),char(0),char(-12),char(0),char(7),char(0),char(-11),char(0),char(7),char(0),char(-10),char(0),char(7),char(0),char(-9),char(0),char(7),char(0),char(-8),char(0),\nchar(7),char(0),char(-7),char(0),char(7),char(0),char(-6),char(0),char(7),char(0),char(-5),char(0),char(4),char(0),char(-4),char(0),char(4),char(0),char(-3),char(0),\nchar(4),char(0),char(-2),char(0),char(4),char(0),char(-1),char(0),char(4),char(0),char(117),char(0),char(72),char(0),char(12),char(0),char(15),char(0),char(0),char(1),\nchar(15),char(0),char(1),char(1),char(15),char(0),char(2),char(1),char(13),char(0),char(3),char(1),char(13),char(0),char(4),char(1),char(7),char(0),char(5),char(1),\nchar(4),char(0),char(6),char(1),char(4),char(0),char(7),char(1),char(4),char(0),char(8),char(1),char(4),char(0),char(9),char(1),char(7),char(0),char(-31),char(0),\nchar(4),char(0),char(53),char(0),char(73),char(0),char(27),char(0),char(17),char(0),char(10),char(1),char(15),char(0),char(11),char(1),char(15),char(0),char(12),char(1),\nchar(13),char(0),char(3),char(1),char(13),char(0),char(13),char(1),char(13),char(0),char(14),char(1),char(13),char(0),char(15),char(1),char(13),char(0),char(16),char(1),\nchar(13),char(0),char(17),char(1),char(4),char(0),char(18),char(1),char(7),char(0),char(19),char(1),char(4),char(0),char(20),char(1),char(4),char(0),char(21),char(1),\nchar(4),char(0),char(22),char(1),char(7),char(0),char(23),char(1),char(7),char(0),char(24),char(1),char(4),char(0),char(25),char(1),char(4),char(0),char(26),char(1),\nchar(7),char(0),char(27),char(1),char(7),char(0),char(28),char(1),char(7),char(0),char(29),char(1),char(7),char(0),char(30),char(1),char(7),char(0),char(31),char(1),\nchar(7),char(0),char(32),char(1),char(4),char(0),char(33),char(1),char(4),char(0),char(34),char(1),char(4),char(0),char(35),char(1),char(74),char(0),char(12),char(0),\nchar(9),char(0),char(36),char(1),char(9),char(0),char(37),char(1),char(13),char(0),char(38),char(1),char(7),char(0),char(39),char(1),char(7),char(0),char(-63),char(0),\nchar(7),char(0),char(40),char(1),char(4),char(0),char(41),char(1),char(13),char(0),char(42),char(1),char(4),char(0),char(43),char(1),char(4),char(0),char(44),char(1),\nchar(4),char(0),char(45),char(1),char(4),char(0),char(53),char(0),char(75),char(0),char(19),char(0),char(47),char(0),char(125),char(0),char(72),char(0),char(46),char(1),\nchar(65),char(0),char(47),char(1),char(66),char(0),char(48),char(1),char(67),char(0),char(49),char(1),char(68),char(0),char(50),char(1),char(69),char(0),char(51),char(1),\nchar(70),char(0),char(52),char(1),char(73),char(0),char(53),char(1),char(74),char(0),char(54),char(1),char(4),char(0),char(55),char(1),char(4),char(0),char(21),char(1),\nchar(4),char(0),char(56),char(1),char(4),char(0),char(57),char(1),char(4),char(0),char(58),char(1),char(4),char(0),char(59),char(1),char(4),char(0),char(60),char(1),\nchar(4),char(0),char(61),char(1),char(71),char(0),char(62),char(1),};\nint sBulletDNAlen64= sizeof(sBulletDNAstr64);\n"
  },
  {
    "path": "Sources/NativeDAABBTree/LinearMath/btSerializer.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_SERIALIZER_H\n#define BT_SERIALIZER_H\n\n#include \"btScalar.h\" // has definitions like SIMD_FORCE_INLINE\n#include \"btStackAlloc.h\"\n#include \"btHashMap.h\"\n\n#if !defined( __CELLOS_LV2__) && !defined(__MWERKS__)\n#include <memory.h>\n#endif\n#include <string.h>\n\n\n\n///only the 32bit versions for now\nextern char sBulletDNAstr[];\nextern int sBulletDNAlen;\nextern char sBulletDNAstr64[];\nextern int sBulletDNAlen64;\n\nSIMD_FORCE_INLINE\tint btStrLen(const char* str) \n{\n    if (!str) \n\t\treturn(0);\n\tint len = 0;\n    \n\twhile (*str != 0)\n\t{\n        str++;\n        len++;\n    }\n\n    return len;\n}\n\n\nclass btChunk\n{\npublic:\n\tint\t\tm_chunkCode;\n\tint\t\tm_length;\n\tvoid\t*m_oldPtr;\n\tint\t\tm_dna_nr;\n\tint\t\tm_number;\n};\n\nenum\tbtSerializationFlags\n{\n\tBT_SERIALIZE_NO_BVH = 1,\n\tBT_SERIALIZE_NO_TRIANGLEINFOMAP = 2,\n\tBT_SERIALIZE_NO_DUPLICATE_ASSERT = 4\n};\n\nclass\tbtSerializer\n{\n\npublic:\n\n\tvirtual ~btSerializer() {}\n\n\tvirtual\tconst unsigned char*\t\tgetBufferPointer() const = 0;\n\n\tvirtual\tint\t\tgetCurrentBufferSize() const = 0;\n\n\tvirtual\tbtChunk*\tallocate(size_t size, int numElements) = 0;\n\n\tvirtual\tvoid\tfinalizeChunk(btChunk* chunk, const char* structType, int chunkCode,void* oldPtr)= 0;\n\n\tvirtual\t void*\tfindPointer(void* oldPtr)  = 0;\n\n\tvirtual\tvoid*\tgetUniquePointer(void*oldPtr) = 0;\n\n\tvirtual\tvoid\tstartSerialization() = 0;\n\t\n\tvirtual\tvoid\tfinishSerialization() = 0;\n\n\tvirtual\tconst char*\tfindNameForPointer(const void* ptr) const = 0;\n\n\tvirtual\tvoid\tregisterNameForPointer(const void* ptr, const char* name) = 0;\n\n\tvirtual void\tserializeName(const char* ptr) = 0;\n\n\tvirtual int\t\tgetSerializationFlags() const = 0;\n\n\tvirtual void\tsetSerializationFlags(int flags) = 0;\n\n\n};\n\n\n\n#define BT_HEADER_LENGTH 12\n#if defined(__sgi) || defined (__sparc) || defined (__sparc__) || defined (__PPC__) || defined (__ppc__) || defined (__BIG_ENDIAN__)\n#\tdefine BT_MAKE_ID(a,b,c,d) ( (int)(a)<<24 | (int)(b)<<16 | (c)<<8 | (d) )\n#else\n#\tdefine BT_MAKE_ID(a,b,c,d) ( (int)(d)<<24 | (int)(c)<<16 | (b)<<8 | (a) )\n#endif\n\n#define BT_SOFTBODY_CODE\t\tBT_MAKE_ID('S','B','D','Y')\n#define BT_COLLISIONOBJECT_CODE BT_MAKE_ID('C','O','B','J')\n#define BT_RIGIDBODY_CODE\t\tBT_MAKE_ID('R','B','D','Y')\n#define BT_CONSTRAINT_CODE\t\tBT_MAKE_ID('C','O','N','S')\n#define BT_BOXSHAPE_CODE\t\tBT_MAKE_ID('B','O','X','S')\n#define BT_QUANTIZED_BVH_CODE\tBT_MAKE_ID('Q','B','V','H')\n#define BT_TRIANLGE_INFO_MAP\tBT_MAKE_ID('T','M','A','P')\n#define BT_SHAPE_CODE\t\t\tBT_MAKE_ID('S','H','A','P')\n#define BT_ARRAY_CODE\t\t\tBT_MAKE_ID('A','R','A','Y')\n#define BT_SBMATERIAL_CODE\t\tBT_MAKE_ID('S','B','M','T')\n#define BT_SBNODE_CODE\t\t\tBT_MAKE_ID('S','B','N','D')\n#define BT_DYNAMICSWORLD_CODE\tBT_MAKE_ID('D','W','L','D')\n#define BT_DNA_CODE\t\t\t\tBT_MAKE_ID('D','N','A','1')\n\n\nstruct\tbtPointerUid\n{\n\tunion\n\t{\n\t\tvoid*\tm_ptr;\n\t\tint\t\tm_uniqueIds[2];\n\t};\n};\n\n///The btDefaultSerializer is the main Bullet serialization class.\n///The constructor takes an optional argument for backwards compatibility, it is recommended to leave this empty/zero.\nclass btDefaultSerializer\t:\tpublic btSerializer\n{\n\n\n\tbtAlignedObjectArray<char*>\t\t\tmTypes;\n\tbtAlignedObjectArray<short*>\t\t\tmStructs;\n\tbtAlignedObjectArray<short>\t\t\tmTlens;\n\tbtHashMap<btHashInt, int>\t\t\tmStructReverse;\n\tbtHashMap<btHashString,int>\tmTypeLookup;\n\n\t\n\tbtHashMap<btHashPtr,void*>\tm_chunkP;\n\t\n\tbtHashMap<btHashPtr,const char*>\tm_nameMap;\n\n\tbtHashMap<btHashPtr,btPointerUid>\tm_uniquePointers;\n\tint\tm_uniqueIdGenerator;\n\n\tint\t\t\t\t\tm_totalSize;\n\tunsigned char*\t\tm_buffer;\n\tint\t\t\t\t\tm_currentSize;\n\tvoid*\t\t\t\tm_dna;\n\tint\t\t\t\t\tm_dnaLength;\n\n\tint\t\t\t\t\tm_serializationFlags;\n\n\n\tbtAlignedObjectArray<btChunk*>\tm_chunkPtrs;\n\t\nprotected:\n\n\tvirtual\tvoid*\tfindPointer(void* oldPtr) \n\t{\n\t\tvoid** ptr = m_chunkP.find(oldPtr);\n\t\tif (ptr && *ptr)\n\t\t\treturn *ptr;\n\t\treturn 0;\n\t}\n\n\t\n\n\n\n\t\tvoid\twriteDNA()\n\t\t{\n\t\t\tbtChunk* dnaChunk = allocate(m_dnaLength,1);\n\t\t\tmemcpy(dnaChunk->m_oldPtr,m_dna,m_dnaLength);\n\t\t\tfinalizeChunk(dnaChunk,\"DNA1\",BT_DNA_CODE, m_dna);\n\t\t}\n\n\t\tint getReverseType(const char *type) const\n\t\t{\n\n\t\t\tbtHashString key(type);\n\t\t\tconst int* valuePtr = mTypeLookup.find(key);\n\t\t\tif (valuePtr)\n\t\t\t\treturn *valuePtr;\n\t\t\t\n\t\t\treturn -1;\n\t\t}\n\n\t\tvoid initDNA(const char* bdnaOrg,int dnalen)\n\t\t{\n\t\t\t///was already initialized\n\t\t\tif (m_dna)\n\t\t\t\treturn;\n\n\t\t\tint littleEndian= 1;\n\t\t\tlittleEndian= ((char*)&littleEndian)[0];\n\t\t\t\n\n\t\t\tm_dna = btAlignedAlloc(dnalen,16);\n\t\t\tmemcpy(m_dna,bdnaOrg,dnalen);\n\t\t\tm_dnaLength = dnalen;\n\n\t\t\tint *intPtr=0;\n\t\t\tshort *shtPtr=0;\n\t\t\tchar *cp = 0;int dataLen =0;\n\t\t\tintPtr = (int*)m_dna;\n\n\t\t\t/*\n\t\t\t\tSDNA (4 bytes) (magic number)\n\t\t\t\tNAME (4 bytes)\n\t\t\t\t<nr> (4 bytes) amount of names (int)\n\t\t\t\t<string>\n\t\t\t\t<string>\n\t\t\t*/\n\n\t\t\tif (strncmp((const char*)m_dna, \"SDNA\", 4)==0)\n\t\t\t{\n\t\t\t\t// skip ++ NAME\n\t\t\t\tintPtr++; intPtr++;\n\t\t\t}\n\n\t\t\t// Parse names\n\t\t\tif (!littleEndian)\n\t\t\t\t*intPtr = btSwapEndian(*intPtr);\n\t\t\t\t\n\t\t\tdataLen = *intPtr;\n\t\t\t\n\t\t\tintPtr++;\n\n\t\t\tcp = (char*)intPtr;\n\t\t\tint i;\n\t\t\tfor ( i=0; i<dataLen; i++)\n\t\t\t{\n\t\t\t\t\n\t\t\t\twhile (*cp)cp++;\n\t\t\t\tcp++;\n\t\t\t}\n\t\t\tcp = btAlignPointer(cp,4);\n\n\t\t\t/*\n\t\t\t\tTYPE (4 bytes)\n\t\t\t\t<nr> amount of types (int)\n\t\t\t\t<string>\n\t\t\t\t<string>\n\t\t\t*/\n\n\t\t\tintPtr = (int*)cp;\n\t\t\tbtAssert(strncmp(cp, \"TYPE\", 4)==0); intPtr++;\n\n\t\t\tif (!littleEndian)\n\t\t\t\t*intPtr =  btSwapEndian(*intPtr);\n\t\t\t\n\t\t\tdataLen = *intPtr;\n\t\t\tintPtr++;\n\n\t\t\t\n\t\t\tcp = (char*)intPtr;\n\t\t\tfor (i=0; i<dataLen; i++)\n\t\t\t{\n\t\t\t\tmTypes.push_back(cp);\n\t\t\t\twhile (*cp)cp++;\n\t\t\t\tcp++;\n\t\t\t}\n\n\t\t\tcp = btAlignPointer(cp,4);\n\n\n\t\t\t/*\n\t\t\t\tTLEN (4 bytes)\n\t\t\t\t<len> (short) the lengths of types\n\t\t\t\t<len>\n\t\t\t*/\n\n\t\t\t// Parse type lens\n\t\t\tintPtr = (int*)cp;\n\t\t\tbtAssert(strncmp(cp, \"TLEN\", 4)==0); intPtr++;\n\n\t\t\tdataLen = (int)mTypes.size();\n\n\t\t\tshtPtr = (short*)intPtr;\n\t\t\tfor (i=0; i<dataLen; i++, shtPtr++)\n\t\t\t{\n\t\t\t\tif (!littleEndian)\n\t\t\t\t\tshtPtr[0] = btSwapEndian(shtPtr[0]);\n\t\t\t\tmTlens.push_back(shtPtr[0]);\n\t\t\t}\n\n\t\t\tif (dataLen & 1) shtPtr++;\n\n\t\t\t/*\n\t\t\t\tSTRC (4 bytes)\n\t\t\t\t<nr> amount of structs (int)\n\t\t\t\t<typenr>\n\t\t\t\t<nr_of_elems>\n\t\t\t\t<typenr>\n\t\t\t\t<namenr>\n\t\t\t\t<typenr>\n\t\t\t\t<namenr>\n\t\t\t*/\n\n\t\t\tintPtr = (int*)shtPtr;\n\t\t\tcp = (char*)intPtr;\n\t\t\tbtAssert(strncmp(cp, \"STRC\", 4)==0); intPtr++;\n\n\t\t\tif (!littleEndian)\n\t\t\t\t*intPtr = btSwapEndian(*intPtr);\n\t\t\tdataLen = *intPtr ; \n\t\t\tintPtr++;\n\n\n\t\t\tshtPtr = (short*)intPtr;\n\t\t\tfor (i=0; i<dataLen; i++)\n\t\t\t{\n\t\t\t\tmStructs.push_back (shtPtr);\n\t\t\t\t\n\t\t\t\tif (!littleEndian)\n\t\t\t\t{\n\t\t\t\t\tshtPtr[0]= btSwapEndian(shtPtr[0]);\n\t\t\t\t\tshtPtr[1]= btSwapEndian(shtPtr[1]);\n\n\t\t\t\t\tint len = shtPtr[1];\n\t\t\t\t\tshtPtr+= 2;\n\n\t\t\t\t\tfor (int a=0; a<len; a++, shtPtr+=2)\n\t\t\t\t\t{\n\t\t\t\t\t\t\tshtPtr[0]= btSwapEndian(shtPtr[0]);\n\t\t\t\t\t\t\tshtPtr[1]= btSwapEndian(shtPtr[1]);\n\t\t\t\t\t}\n\n\t\t\t\t} else\n\t\t\t\t{\n\t\t\t\t\tshtPtr+= (2*shtPtr[1])+2;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// build reverse lookups\n\t\t\tfor (i=0; i<(int)mStructs.size(); i++)\n\t\t\t{\n\t\t\t\tshort *strc = mStructs.at(i);\n\t\t\t\tmStructReverse.insert(strc[0], i);\n\t\t\t\tmTypeLookup.insert(btHashString(mTypes[strc[0]]),i);\n\t\t\t}\n\t\t}\n\npublic:\t\n\t\n\n\t\n\n\t\tbtDefaultSerializer(int totalSize=0)\n\t\t\t:m_totalSize(totalSize),\n\t\t\tm_currentSize(0),\n\t\t\tm_dna(0),\n\t\t\tm_dnaLength(0),\n\t\t\tm_serializationFlags(0)\n\t\t{\n\t\t\tm_buffer = m_totalSize?(unsigned char*)btAlignedAlloc(totalSize,16):0;\n\t\t\t\n\t\t\tconst bool VOID_IS_8 = ((sizeof(void*)==8));\n\n#ifdef BT_INTERNAL_UPDATE_SERIALIZATION_STRUCTURES\n\t\t\tif (VOID_IS_8)\n\t\t\t{\n#if _WIN64\n\t\t\t\tinitDNA((const char*)sBulletDNAstr64,sBulletDNAlen64);\n#else\n\t\t\t\tbtAssert(0);\n#endif\n\t\t\t} else\n\t\t\t{\n#ifndef _WIN64\n\t\t\t\tinitDNA((const char*)sBulletDNAstr,sBulletDNAlen);\n#else\n\t\t\t\tbtAssert(0);\n#endif\n\t\t\t}\n\t\n#else //BT_INTERNAL_UPDATE_SERIALIZATION_STRUCTURES\n\t\t\tif (VOID_IS_8)\n\t\t\t{\n\t\t\t\tinitDNA((const char*)sBulletDNAstr64,sBulletDNAlen64);\n\t\t\t} else\n\t\t\t{\n\t\t\t\tinitDNA((const char*)sBulletDNAstr,sBulletDNAlen);\n\t\t\t}\n#endif //BT_INTERNAL_UPDATE_SERIALIZATION_STRUCTURES\n\t\n\t\t}\n\n\t\tvirtual ~btDefaultSerializer() \n\t\t{\n\t\t\tif (m_buffer)\n\t\t\t\tbtAlignedFree(m_buffer);\n\t\t\tif (m_dna)\n\t\t\t\tbtAlignedFree(m_dna);\n\t\t}\n\n\t\tvoid\twriteHeader(unsigned char* buffer) const\n\t\t{\n\t\t\t\n\n#ifdef  BT_USE_DOUBLE_PRECISION\n\t\t\tmemcpy(buffer, \"BULLETd\", 7);\n#else\n\t\t\tmemcpy(buffer, \"BULLETf\", 7);\n#endif //BT_USE_DOUBLE_PRECISION\n\t\n\t\t\tint littleEndian= 1;\n\t\t\tlittleEndian= ((char*)&littleEndian)[0];\n\n\t\t\tif (sizeof(void*)==8)\n\t\t\t{\n\t\t\t\tbuffer[7] = '-';\n\t\t\t} else\n\t\t\t{\n\t\t\t\tbuffer[7] = '_';\n\t\t\t}\n\n\t\t\tif (littleEndian)\n\t\t\t{\n\t\t\t\tbuffer[8]='v';\t\t\t\t\n\t\t\t} else\n\t\t\t{\n\t\t\t\tbuffer[8]='V';\n\t\t\t}\n\n\n\t\t\tbuffer[9] = '2';\n\t\t\tbuffer[10] = '8';\n\t\t\tbuffer[11] = '1';\n\n\t\t}\n\n\t\tvirtual\tvoid\tstartSerialization()\n\t\t{\n\t\t\tm_uniqueIdGenerator= 1;\n\t\t\tif (m_totalSize)\n\t\t\t{\n\t\t\t\tunsigned char* buffer = internalAlloc(BT_HEADER_LENGTH);\n\t\t\t\twriteHeader(buffer);\n\t\t\t}\n\t\t\t\n\t\t}\n\n\t\tvirtual\tvoid\tfinishSerialization()\n\t\t{\n\t\t\twriteDNA();\n\n\t\t\t//if we didn't pre-allocate a buffer, we need to create a contiguous buffer now\n\t\t\tint mysize = 0;\n\t\t\tif (!m_totalSize)\n\t\t\t{\n\t\t\t\tif (m_buffer)\n\t\t\t\t\tbtAlignedFree(m_buffer);\n\n\t\t\t\tm_currentSize += BT_HEADER_LENGTH;\n\t\t\t\tm_buffer = (unsigned char*)btAlignedAlloc(m_currentSize,16);\n\n\t\t\t\tunsigned char* currentPtr = m_buffer;\n\t\t\t\twriteHeader(m_buffer);\n\t\t\t\tcurrentPtr += BT_HEADER_LENGTH;\n\t\t\t\tmysize+=BT_HEADER_LENGTH;\n\t\t\t\tfor (int i=0;i<\tm_chunkPtrs.size();i++)\n\t\t\t\t{\n\t\t\t\t\tint curLength = sizeof(btChunk)+m_chunkPtrs[i]->m_length;\n\t\t\t\t\tmemcpy(currentPtr,m_chunkPtrs[i], curLength);\n\t\t\t\t\tbtAlignedFree(m_chunkPtrs[i]);\n\t\t\t\t\tcurrentPtr+=curLength;\n\t\t\t\t\tmysize+=curLength;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tmTypes.clear();\n\t\t\tmStructs.clear();\n\t\t\tmTlens.clear();\n\t\t\tmStructReverse.clear();\n\t\t\tmTypeLookup.clear();\n\t\t\tm_chunkP.clear();\n\t\t\tm_nameMap.clear();\n\t\t\tm_uniquePointers.clear();\n\t\t\tm_chunkPtrs.clear();\n\t\t}\n\n\t\tvirtual\tvoid*\tgetUniquePointer(void*oldPtr)\n\t\t{\n\t\t\tif (!oldPtr)\n\t\t\t\treturn 0;\n\n\t\t\tbtPointerUid* uptr = (btPointerUid*)m_uniquePointers.find(oldPtr);\n\t\t\tif (uptr)\n\t\t\t{\n\t\t\t\treturn uptr->m_ptr;\n\t\t\t}\n\t\t\tm_uniqueIdGenerator++;\n\t\t\t\n\t\t\tbtPointerUid uid;\n\t\t\tuid.m_uniqueIds[0] = m_uniqueIdGenerator;\n\t\t\tuid.m_uniqueIds[1] = m_uniqueIdGenerator;\n\t\t\tm_uniquePointers.insert(oldPtr,uid);\n\t\t\treturn uid.m_ptr;\n\n\t\t}\n\n\t\tvirtual\tconst unsigned char*\t\tgetBufferPointer() const\n\t\t{\n\t\t\treturn m_buffer;\n\t\t}\n\n\t\tvirtual\tint\t\t\t\t\tgetCurrentBufferSize() const\n\t\t{\n\t\t\treturn\tm_currentSize;\n\t\t}\n\n\t\tvirtual\tvoid\tfinalizeChunk(btChunk* chunk, const char* structType, int chunkCode,void* oldPtr)\n\t\t{\n\t\t\tif (!(m_serializationFlags&BT_SERIALIZE_NO_DUPLICATE_ASSERT))\n\t\t\t{\n\t\t\t\tbtAssert(!findPointer(oldPtr));\n\t\t\t}\n\n\t\t\tchunk->m_dna_nr = getReverseType(structType);\n\t\t\t\n\t\t\tchunk->m_chunkCode = chunkCode;\n\t\t\t\n\t\t\tvoid* uniquePtr = getUniquePointer(oldPtr);\n\t\t\t\n\t\t\tm_chunkP.insert(oldPtr,uniquePtr);//chunk->m_oldPtr);\n\t\t\tchunk->m_oldPtr = uniquePtr;//oldPtr;\n\t\t\t\n\t\t}\n\n\t\t\n\t\tvirtual unsigned char* internalAlloc(size_t size)\n\t\t{\n\t\t\tunsigned char* ptr = 0;\n\n\t\t\tif (m_totalSize)\n\t\t\t{\n\t\t\t\tptr = m_buffer+m_currentSize;\n\t\t\t\tm_currentSize += int(size);\n\t\t\t\tbtAssert(m_currentSize<m_totalSize);\n\t\t\t} else\n\t\t\t{\n\t\t\t\tptr = (unsigned char*)btAlignedAlloc(size,16);\n\t\t\t\tm_currentSize += int(size);\n\t\t\t}\n\t\t\treturn ptr;\n\t\t}\n\n\t\t\n\n\t\tvirtual\tbtChunk*\tallocate(size_t size, int numElements)\n\t\t{\n\n\t\t\tunsigned char* ptr = internalAlloc(int(size)*numElements+sizeof(btChunk));\n\n\t\t\tunsigned char* data = ptr + sizeof(btChunk);\n\t\t\t\n\t\t\tbtChunk* chunk = (btChunk*)ptr;\n\t\t\tchunk->m_chunkCode = 0;\n\t\t\tchunk->m_oldPtr = data;\n\t\t\tchunk->m_length = int(size)*numElements;\n\t\t\tchunk->m_number = numElements;\n\t\t\t\n\t\t\tm_chunkPtrs.push_back(chunk);\n\t\t\t\n\n\t\t\treturn chunk;\n\t\t}\n\n\t\tvirtual\tconst char*\tfindNameForPointer(const void* ptr) const\n\t\t{\n\t\t\tconst char*const * namePtr = m_nameMap.find(ptr);\n\t\t\tif (namePtr && *namePtr)\n\t\t\t\treturn *namePtr;\n\t\t\treturn 0;\n\n\t\t}\n\n\t\tvirtual\tvoid\tregisterNameForPointer(const void* ptr, const char* name)\n\t\t{\n\t\t\tm_nameMap.insert(ptr,name);\n\t\t}\n\n\t\tvirtual void\tserializeName(const char* name)\n\t\t{\n\t\t\tif (name)\n\t\t\t{\n\t\t\t\t//don't serialize name twice\n\t\t\t\tif (findPointer((void*)name))\n\t\t\t\t\treturn;\n\n\t\t\t\tint len = btStrLen(name);\n\t\t\t\tif (len)\n\t\t\t\t{\n\n\t\t\t\t\tint newLen = len+1;\n\t\t\t\t\tint padding = ((newLen+3)&~3)-newLen;\n\t\t\t\t\tnewLen += padding;\n\n\t\t\t\t\t//serialize name string now\n\t\t\t\t\tbtChunk* chunk = allocate(sizeof(char),newLen);\n\t\t\t\t\tchar* destinationName = (char*)chunk->m_oldPtr;\n\t\t\t\t\tfor (int i=0;i<len;i++)\n\t\t\t\t\t{\n\t\t\t\t\t\tdestinationName[i] = name[i];\n\t\t\t\t\t}\n\t\t\t\t\tdestinationName[len] = 0;\n\t\t\t\t\tfinalizeChunk(chunk,\"char\",BT_ARRAY_CODE,(void*)name);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tvirtual int\t\tgetSerializationFlags() const\n\t\t{\n\t\t\treturn m_serializationFlags;\n\t\t}\n\n\t\tvirtual void\tsetSerializationFlags(int flags)\n\t\t{\n\t\t\tm_serializationFlags = flags;\n\t\t}\n\n};\n\n\n#endif //BT_SERIALIZER_H\n\n"
  },
  {
    "path": "Sources/NativeDAABBTree/LinearMath/btStackAlloc.h",
    "content": "/*\nCopyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n/*\nStackAlloc extracted from GJK-EPA collision solver by Nathanael Presson\nNov.2006\n*/\n\n#ifndef BT_STACK_ALLOC\n#define BT_STACK_ALLOC\n\n#include \"btScalar.h\" //for btAssert\n#include \"btAlignedAllocator.h\"\n\n///The btBlock class is an internal structure for the btStackAlloc memory allocator.\nstruct btBlock\n{\n\tbtBlock*\t\t\tprevious;\n\tunsigned char*\t\taddress;\n};\n\n///The StackAlloc class provides some fast stack-based memory allocator (LIFO last-in first-out)\nclass btStackAlloc\n{\npublic:\n\n\tbtStackAlloc(unsigned int size)\t{ ctor();create(size); }\n\t~btStackAlloc()\t\t{ destroy(); }\n\t\n\tinline void\t\tcreate(unsigned int size)\n\t{\n\t\tdestroy();\n\t\tdata\t\t=  (unsigned char*) btAlignedAlloc(size,16);\n\t\ttotalsize\t=\tsize;\n\t}\n\tinline void\t\tdestroy()\n\t{\n\t\tbtAssert(usedsize==0);\n\t\t//Raise(L\"StackAlloc is still in use\");\n\n\t\tif(usedsize==0)\n\t\t{\n\t\t\tif(!ischild && data)\t\t\n\t\t\t\tbtAlignedFree(data);\n\n\t\t\tdata\t\t\t\t=\t0;\n\t\t\tusedsize\t\t\t=\t0;\n\t\t}\n\t\t\n\t}\n\n\tint\tgetAvailableMemory() const\n\t{\n\t\treturn static_cast<int>(totalsize - usedsize);\n\t}\n\n\tunsigned char*\t\t\tallocate(unsigned int size)\n\t{\n\t\tconst unsigned int\tnus(usedsize+size);\n\t\tif(nus<totalsize)\n\t\t{\n\t\t\tusedsize=nus;\n\t\t\treturn(data+(usedsize-size));\n\t\t}\n\t\tbtAssert(0);\n\t\t//&& (L\"Not enough memory\"));\n\t\t\n\t\treturn(0);\n\t}\n\tSIMD_FORCE_INLINE btBlock*\t\tbeginBlock()\n\t{\n\t\tbtBlock*\tpb = (btBlock*)allocate(sizeof(btBlock));\n\t\tpb->previous\t=\tcurrent;\n\t\tpb->address\t\t=\tdata+usedsize;\n\t\tcurrent\t\t\t=\tpb;\n\t\treturn(pb);\n\t}\n\tSIMD_FORCE_INLINE void\t\tendBlock(btBlock* block)\n\t{\n\t\tbtAssert(block==current);\n\t\t//Raise(L\"Unmatched blocks\");\n\t\tif(block==current)\n\t\t{\n\t\t\tcurrent\t\t=\tblock->previous;\n\t\t\tusedsize\t=\t(unsigned int)((block->address-data)-sizeof(btBlock));\n\t\t}\n\t}\n\nprivate:\n\tvoid\t\tctor()\n\t{\n\t\tdata\t\t=\t0;\n\t\ttotalsize\t=\t0;\n\t\tusedsize\t=\t0;\n\t\tcurrent\t\t=\t0;\n\t\tischild\t\t=\tfalse;\n\t}\n\tunsigned char*\t\tdata;\n\tunsigned int\t\ttotalsize;\n\tunsigned int\t\tusedsize;\n\tbtBlock*\tcurrent;\n\tbool\t\tischild;\n};\n\n#endif //BT_STACK_ALLOC\n"
  },
  {
    "path": "Sources/NativeDAABBTree/LinearMath/btTransform.h",
    "content": "/*\nCopyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n\n\n#ifndef BT_TRANSFORM_H\n#define BT_TRANSFORM_H\n\n\n#include \"btMatrix3x3.h\"\n\n#ifdef BT_USE_DOUBLE_PRECISION\n#define btTransformData btTransformDoubleData\n#else\n#define btTransformData btTransformFloatData\n#endif\n\n\n\n\n/**@brief The btTransform class supports rigid transforms with only translation and rotation and no scaling/shear.\n *It can be used in combination with btVector3, btQuaternion and btMatrix3x3 linear algebra classes. */\nATTRIBUTE_ALIGNED16(class) btTransform {\n\t\n  ///Storage for the rotation\n\tbtMatrix3x3 m_basis;\n  ///Storage for the translation\n\tbtVector3   m_origin;\n\npublic:\n\t\n  /**@brief No initialization constructor */\n\tbtTransform() {}\n  /**@brief Constructor from btQuaternion (optional btVector3 )\n   * @param q Rotation from quaternion \n   * @param c Translation from Vector (default 0,0,0) */\n\texplicit SIMD_FORCE_INLINE btTransform(const btQuaternion& q, \n\t\tconst btVector3& c = btVector3(btScalar(0), btScalar(0), btScalar(0))) \n\t\t: m_basis(q),\n\t\tm_origin(c)\n\t{}\n\n  /**@brief Constructor from btMatrix3x3 (optional btVector3)\n   * @param b Rotation from Matrix \n   * @param c Translation from Vector default (0,0,0)*/\n\texplicit SIMD_FORCE_INLINE btTransform(const btMatrix3x3& b, \n\t\tconst btVector3& c = btVector3(btScalar(0), btScalar(0), btScalar(0)))\n\t\t: m_basis(b),\n\t\tm_origin(c)\n\t{}\n  /**@brief Copy constructor */\n\tSIMD_FORCE_INLINE btTransform (const btTransform& other)\n\t\t: m_basis(other.m_basis),\n\t\tm_origin(other.m_origin)\n\t{\n\t}\n  /**@brief Assignment Operator */\n\tSIMD_FORCE_INLINE btTransform& operator=(const btTransform& other)\n\t{\n\t\tm_basis = other.m_basis;\n\t\tm_origin = other.m_origin;\n\t\treturn *this;\n\t}\n\n\n  /**@brief Set the current transform as the value of the product of two transforms\n   * @param t1 Transform 1\n   * @param t2 Transform 2\n   * This = Transform1 * Transform2 */\n\t\tSIMD_FORCE_INLINE void mult(const btTransform& t1, const btTransform& t2) {\n\t\t\tm_basis = t1.m_basis * t2.m_basis;\n\t\t\tm_origin = t1(t2.m_origin);\n\t\t}\n\n/*\t\tvoid multInverseLeft(const btTransform& t1, const btTransform& t2) {\n\t\t\tbtVector3 v = t2.m_origin - t1.m_origin;\n\t\t\tm_basis = btMultTransposeLeft(t1.m_basis, t2.m_basis);\n\t\t\tm_origin = v * t1.m_basis;\n\t\t}\n\t\t*/\n\n/**@brief Return the transform of the vector */\n\tSIMD_FORCE_INLINE btVector3 operator()(const btVector3& x) const\n\t{\n        return x.dot3(m_basis[0], m_basis[1], m_basis[2]) + m_origin;\n\t}\n\n  /**@brief Return the transform of the vector */\n\tSIMD_FORCE_INLINE btVector3 operator*(const btVector3& x) const\n\t{\n\t\treturn (*this)(x);\n\t}\n\n  /**@brief Return the transform of the btQuaternion */\n\tSIMD_FORCE_INLINE btQuaternion operator*(const btQuaternion& q) const\n\t{\n\t\treturn getRotation() * q;\n\t}\n\n  /**@brief Return the basis matrix for the rotation */\n\tSIMD_FORCE_INLINE btMatrix3x3&       getBasis()          { return m_basis; }\n  /**@brief Return the basis matrix for the rotation */\n\tSIMD_FORCE_INLINE const btMatrix3x3& getBasis()    const { return m_basis; }\n\n  /**@brief Return the origin vector translation */\n\tSIMD_FORCE_INLINE btVector3&         getOrigin()         { return m_origin; }\n  /**@brief Return the origin vector translation */\n\tSIMD_FORCE_INLINE const btVector3&   getOrigin()   const { return m_origin; }\n\n  /**@brief Return a quaternion representing the rotation */\n\tbtQuaternion getRotation() const { \n\t\tbtQuaternion q;\n\t\tm_basis.getRotation(q);\n\t\treturn q;\n\t}\n\t\n\t\n  /**@brief Set from an array \n   * @param m A pointer to a 15 element array (12 rotation(row major padded on the right by 1), and 3 translation */\n\tvoid setFromOpenGLMatrix(const btScalar *m)\n\t{\n\t\tm_basis.setFromOpenGLSubMatrix(m);\n\t\tm_origin.setValue(m[12],m[13],m[14]);\n\t}\n\n  /**@brief Fill an array representation\n   * @param m A pointer to a 15 element array (12 rotation(row major padded on the right by 1), and 3 translation */\n\tvoid getOpenGLMatrix(btScalar *m) const \n\t{\n\t\tm_basis.getOpenGLSubMatrix(m);\n\t\tm[12] = m_origin.x();\n\t\tm[13] = m_origin.y();\n\t\tm[14] = m_origin.z();\n\t\tm[15] = btScalar(1.0);\n\t}\n\n  /**@brief Set the translational element\n   * @param origin The vector to set the translation to */\n\tSIMD_FORCE_INLINE void setOrigin(const btVector3& origin) \n\t{ \n\t\tm_origin = origin;\n\t}\n\n\tSIMD_FORCE_INLINE btVector3 invXform(const btVector3& inVec) const;\n\n\n  /**@brief Set the rotational element by btMatrix3x3 */\n\tSIMD_FORCE_INLINE void setBasis(const btMatrix3x3& basis)\n\t{ \n\t\tm_basis = basis;\n\t}\n\n  /**@brief Set the rotational element by btQuaternion */\n\tSIMD_FORCE_INLINE void setRotation(const btQuaternion& q)\n\t{\n\t\tm_basis.setRotation(q);\n\t}\n\n\n  /**@brief Set this transformation to the identity */\n\tvoid setIdentity()\n\t{\n\t\tm_basis.setIdentity();\n\t\tm_origin.setValue(btScalar(0.0), btScalar(0.0), btScalar(0.0));\n\t}\n\n  /**@brief Multiply this Transform by another(this = this * another) \n   * @param t The other transform */\n\tbtTransform& operator*=(const btTransform& t) \n\t{\n\t\tm_origin += m_basis * t.m_origin;\n\t\tm_basis *= t.m_basis;\n\t\treturn *this;\n\t}\n\n  /**@brief Return the inverse of this transform */\n\tbtTransform inverse() const\n\t{ \n\t\tbtMatrix3x3 inv = m_basis.transpose();\n\t\treturn btTransform(inv, inv * -m_origin);\n\t}\n\n  /**@brief Return the inverse of this transform times the other transform\n   * @param t The other transform \n   * return this.inverse() * the other */\n\tbtTransform inverseTimes(const btTransform& t) const;  \n\n  /**@brief Return the product of this transform and the other */\n\tbtTransform operator*(const btTransform& t) const;\n\n  /**@brief Return an identity transform */\n\tstatic const btTransform&\tgetIdentity()\n\t{\n\t\tstatic const btTransform identityTransform(btMatrix3x3::getIdentity());\n\t\treturn identityTransform;\n\t}\n\n\tvoid\tserialize(struct\tbtTransformData& dataOut) const;\n\n\tvoid\tserializeFloat(struct\tbtTransformFloatData& dataOut) const;\n\n\tvoid\tdeSerialize(const struct\tbtTransformData& dataIn);\n\n\tvoid\tdeSerializeDouble(const struct\tbtTransformDoubleData& dataIn);\n\n\tvoid\tdeSerializeFloat(const struct\tbtTransformFloatData& dataIn);\n\n};\n\n\nSIMD_FORCE_INLINE btVector3\nbtTransform::invXform(const btVector3& inVec) const\n{\n\tbtVector3 v = inVec - m_origin;\n\treturn (m_basis.transpose() * v);\n}\n\nSIMD_FORCE_INLINE btTransform \nbtTransform::inverseTimes(const btTransform& t) const  \n{\n\tbtVector3 v = t.getOrigin() - m_origin;\n\t\treturn btTransform(m_basis.transposeTimes(t.m_basis),\n\t\t\tv * m_basis);\n}\n\nSIMD_FORCE_INLINE btTransform \nbtTransform::operator*(const btTransform& t) const\n{\n\treturn btTransform(m_basis * t.m_basis, \n\t\t(*this)(t.m_origin));\n}\n\n/**@brief Test if two transforms have all elements equal */\nSIMD_FORCE_INLINE bool operator==(const btTransform& t1, const btTransform& t2)\n{\n   return ( t1.getBasis()  == t2.getBasis() &&\n            t1.getOrigin() == t2.getOrigin() );\n}\n\n\n///for serialization\nstruct\tbtTransformFloatData\n{\n\tbtMatrix3x3FloatData\tm_basis;\n\tbtVector3FloatData\tm_origin;\n};\n\nstruct\tbtTransformDoubleData\n{\n\tbtMatrix3x3DoubleData\tm_basis;\n\tbtVector3DoubleData\tm_origin;\n};\n\n\n\nSIMD_FORCE_INLINE\tvoid\tbtTransform::serialize(btTransformData& dataOut) const\n{\n\tm_basis.serialize(dataOut.m_basis);\n\tm_origin.serialize(dataOut.m_origin);\n}\n\nSIMD_FORCE_INLINE\tvoid\tbtTransform::serializeFloat(btTransformFloatData& dataOut) const\n{\n\tm_basis.serializeFloat(dataOut.m_basis);\n\tm_origin.serializeFloat(dataOut.m_origin);\n}\n\n\nSIMD_FORCE_INLINE\tvoid\tbtTransform::deSerialize(const btTransformData& dataIn)\n{\n\tm_basis.deSerialize(dataIn.m_basis);\n\tm_origin.deSerialize(dataIn.m_origin);\n}\n\nSIMD_FORCE_INLINE\tvoid\tbtTransform::deSerializeFloat(const btTransformFloatData& dataIn)\n{\n\tm_basis.deSerializeFloat(dataIn.m_basis);\n\tm_origin.deSerializeFloat(dataIn.m_origin);\n}\n\nSIMD_FORCE_INLINE\tvoid\tbtTransform::deSerializeDouble(const btTransformDoubleData& dataIn)\n{\n\tm_basis.deSerializeDouble(dataIn.m_basis);\n\tm_origin.deSerializeDouble(dataIn.m_origin);\n}\n\n\n#endif //BT_TRANSFORM_H\n\n\n\n\n\n\n"
  },
  {
    "path": "Sources/NativeDAABBTree/LinearMath/btTransformUtil.h",
    "content": "/*\nCopyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n\n#ifndef BT_TRANSFORM_UTIL_H\n#define BT_TRANSFORM_UTIL_H\n\n#include \"btTransform.h\"\n#define ANGULAR_MOTION_THRESHOLD btScalar(0.5)*SIMD_HALF_PI\n\n\n\n\nSIMD_FORCE_INLINE btVector3 btAabbSupport(const btVector3& halfExtents,const btVector3& supportDir)\n{\n\treturn btVector3(supportDir.x() < btScalar(0.0) ? -halfExtents.x() : halfExtents.x(),\n      supportDir.y() < btScalar(0.0) ? -halfExtents.y() : halfExtents.y(),\n      supportDir.z() < btScalar(0.0) ? -halfExtents.z() : halfExtents.z()); \n}\n\n\n\n\n\n\n/// Utils related to temporal transforms\nclass btTransformUtil\n{\n\npublic:\n\n\tstatic void integrateTransform(const btTransform& curTrans,const btVector3& linvel,const btVector3& angvel,btScalar timeStep,btTransform& predictedTransform)\n\t{\n\t\tpredictedTransform.setOrigin(curTrans.getOrigin() + linvel * timeStep);\n//\t#define QUATERNION_DERIVATIVE\n\t#ifdef QUATERNION_DERIVATIVE\n\t\tbtQuaternion predictedOrn = curTrans.getRotation();\n\t\tpredictedOrn += (angvel * predictedOrn) * (timeStep * btScalar(0.5));\n\t\tpredictedOrn.normalize();\n\t#else\n\t\t//Exponential map\n\t\t//google for \"Practical Parameterization of Rotations Using the Exponential Map\", F. Sebastian Grassia\n\n\t\tbtVector3 axis;\n\t\tbtScalar\tfAngle = angvel.length(); \n\t\t//limit the angular motion\n\t\tif (fAngle*timeStep > ANGULAR_MOTION_THRESHOLD)\n\t\t{\n\t\t\tfAngle = ANGULAR_MOTION_THRESHOLD / timeStep;\n\t\t}\n\n\t\tif ( fAngle < btScalar(0.001) )\n\t\t{\n\t\t\t// use Taylor's expansions of sync function\n\t\t\taxis   = angvel*( btScalar(0.5)*timeStep-(timeStep*timeStep*timeStep)*(btScalar(0.020833333333))*fAngle*fAngle );\n\t\t}\n\t\telse\n\t\t{\n\t\t\t// sync(fAngle) = sin(c*fAngle)/t\n\t\t\taxis   = angvel*( btSin(btScalar(0.5)*fAngle*timeStep)/fAngle );\n\t\t}\n\t\tbtQuaternion dorn (axis.x(),axis.y(),axis.z(),btCos( fAngle*timeStep*btScalar(0.5) ));\n\t\tbtQuaternion orn0 = curTrans.getRotation();\n\n\t\tbtQuaternion predictedOrn = dorn * orn0;\n\t\tpredictedOrn.normalize();\n\t#endif\n\t\tpredictedTransform.setRotation(predictedOrn);\n\t}\n\n\tstatic void\tcalculateVelocityQuaternion(const btVector3& pos0,const btVector3& pos1,const btQuaternion& orn0,const btQuaternion& orn1,btScalar timeStep,btVector3& linVel,btVector3& angVel)\n\t{\n\t\tlinVel = (pos1 - pos0) / timeStep;\n\t\tbtVector3 axis;\n\t\tbtScalar  angle;\n\t\tif (orn0 != orn1)\n\t\t{\n\t\t\tcalculateDiffAxisAngleQuaternion(orn0,orn1,axis,angle);\n\t\t\tangVel = axis * angle / timeStep;\n\t\t} else\n\t\t{\n\t\t\tangVel.setValue(0,0,0);\n\t\t}\n\t}\n\n\tstatic void calculateDiffAxisAngleQuaternion(const btQuaternion& orn0,const btQuaternion& orn1a,btVector3& axis,btScalar& angle)\n\t{\n\t\tbtQuaternion orn1 = orn0.nearest(orn1a);\n\t\tbtQuaternion dorn = orn1 * orn0.inverse();\n\t\tangle = dorn.getAngle();\n\t\taxis = btVector3(dorn.x(),dorn.y(),dorn.z());\n\t\taxis[3] = btScalar(0.);\n\t\t//check for axis length\n\t\tbtScalar len = axis.length2();\n\t\tif (len < SIMD_EPSILON*SIMD_EPSILON)\n\t\t\taxis = btVector3(btScalar(1.),btScalar(0.),btScalar(0.));\n\t\telse\n\t\t\taxis /= btSqrt(len);\n\t}\n\n\tstatic void\tcalculateVelocity(const btTransform& transform0,const btTransform& transform1,btScalar timeStep,btVector3& linVel,btVector3& angVel)\n\t{\n\t\tlinVel = (transform1.getOrigin() - transform0.getOrigin()) / timeStep;\n\t\tbtVector3 axis;\n\t\tbtScalar  angle;\n\t\tcalculateDiffAxisAngle(transform0,transform1,axis,angle);\n\t\tangVel = axis * angle / timeStep;\n\t}\n\n\tstatic void calculateDiffAxisAngle(const btTransform& transform0,const btTransform& transform1,btVector3& axis,btScalar& angle)\n\t{\n\t\tbtMatrix3x3 dmat = transform1.getBasis() * transform0.getBasis().inverse();\n\t\tbtQuaternion dorn;\n\t\tdmat.getRotation(dorn);\n\n\t\t///floating point inaccuracy can lead to w component > 1..., which breaks \n\t\tdorn.normalize();\n\t\t\n\t\tangle = dorn.getAngle();\n\t\taxis = btVector3(dorn.x(),dorn.y(),dorn.z());\n\t\taxis[3] = btScalar(0.);\n\t\t//check for axis length\n\t\tbtScalar len = axis.length2();\n\t\tif (len < SIMD_EPSILON*SIMD_EPSILON)\n\t\t\taxis = btVector3(btScalar(1.),btScalar(0.),btScalar(0.));\n\t\telse\n\t\t\taxis /= btSqrt(len);\n\t}\n\n};\n\n\n///The btConvexSeparatingDistanceUtil can help speed up convex collision detection \n///by conservatively updating a cached separating distance/vector instead of re-calculating the closest distance\nclass\tbtConvexSeparatingDistanceUtil\n{\n\tbtQuaternion\tm_ornA;\n\tbtQuaternion\tm_ornB;\n\tbtVector3\tm_posA;\n\tbtVector3\tm_posB;\n\t\n\tbtVector3\tm_separatingNormal;\n\n\tbtScalar\tm_boundingRadiusA;\n\tbtScalar\tm_boundingRadiusB;\n\tbtScalar\tm_separatingDistance;\n\npublic:\n\n\tbtConvexSeparatingDistanceUtil(btScalar\tboundingRadiusA,btScalar\tboundingRadiusB)\n\t\t:m_boundingRadiusA(boundingRadiusA),\n\t\tm_boundingRadiusB(boundingRadiusB),\n\t\tm_separatingDistance(0.f)\n\t{\n\t}\n\n\tbtScalar\tgetConservativeSeparatingDistance()\n\t{\n\t\treturn m_separatingDistance;\n\t}\n\n\tvoid\tupdateSeparatingDistance(const btTransform& transA,const btTransform& transB)\n\t{\n\t\tconst btVector3& toPosA = transA.getOrigin();\n\t\tconst btVector3& toPosB = transB.getOrigin();\n\t\tbtQuaternion toOrnA = transA.getRotation();\n\t\tbtQuaternion toOrnB = transB.getRotation();\n\n\t\tif (m_separatingDistance>0.f)\n\t\t{\n\t\t\t\n\n\t\t\tbtVector3 linVelA,angVelA,linVelB,angVelB;\n\t\t\tbtTransformUtil::calculateVelocityQuaternion(m_posA,toPosA,m_ornA,toOrnA,btScalar(1.),linVelA,angVelA);\n\t\t\tbtTransformUtil::calculateVelocityQuaternion(m_posB,toPosB,m_ornB,toOrnB,btScalar(1.),linVelB,angVelB);\n\t\t\tbtScalar maxAngularProjectedVelocity = angVelA.length() * m_boundingRadiusA + angVelB.length() * m_boundingRadiusB;\n\t\t\tbtVector3 relLinVel = (linVelB-linVelA);\n\t\t\tbtScalar relLinVelocLength = relLinVel.dot(m_separatingNormal);\n\t\t\tif (relLinVelocLength<0.f)\n\t\t\t{\n\t\t\t\trelLinVelocLength = 0.f;\n\t\t\t}\n\t\n\t\t\tbtScalar\tprojectedMotion = maxAngularProjectedVelocity +relLinVelocLength;\n\t\t\tm_separatingDistance -= projectedMotion;\n\t\t}\n\t\n\t\tm_posA = toPosA;\n\t\tm_posB = toPosB;\n\t\tm_ornA = toOrnA;\n\t\tm_ornB = toOrnB;\n\t}\n\n\tvoid\tinitSeparatingDistance(const btVector3& separatingVector,btScalar separatingDistance,const btTransform& transA,const btTransform& transB)\n\t{\n\t\tm_separatingDistance = separatingDistance;\n\n\t\tif (m_separatingDistance>0.f)\n\t\t{\n\t\t\tm_separatingNormal = separatingVector;\n\t\t\t\n\t\t\tconst btVector3& toPosA = transA.getOrigin();\n\t\t\tconst btVector3& toPosB = transB.getOrigin();\n\t\t\tbtQuaternion toOrnA = transA.getRotation();\n\t\t\tbtQuaternion toOrnB = transB.getRotation();\n\t\t\tm_posA = toPosA;\n\t\t\tm_posB = toPosB;\n\t\t\tm_ornA = toOrnA;\n\t\t\tm_ornB = toOrnB;\n\t\t}\n\t}\n\n};\n\n\n#endif //BT_TRANSFORM_UTIL_H\n\n"
  },
  {
    "path": "Sources/NativeDAABBTree/LinearMath/btVector3.cpp",
    "content": "/*\n Copyright (c) 2011 Apple Inc.\n http://continuousphysics.com/Bullet/\n \n This software is provided 'as-is', without any express or implied warranty.\n In no event will the authors be held liable for any damages arising from the use of this software.\n Permission is granted to anyone to use this software for any purpose, \n including commercial applications, and to alter it and redistribute it freely, \n subject to the following restrictions:\n \n 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n 3. This notice may not be removed or altered from any source distribution.\n \n This source version has been altered.\n */\n\n#if defined (_WIN32) || defined (__i386__)\n#define BT_USE_SSE_IN_API\n#endif\n\n#include \"btVector3.h\"\n\n#if defined (BT_USE_SSE) || defined (BT_USE_NEON)\n\n#ifdef __APPLE__\n#include <stdint.h>\ntypedef  float float4 __attribute__ ((vector_size(16)));\n#else\n#define float4 __m128\n#endif\n//typedef  uint32_t uint4 __attribute__ ((vector_size(16)));\n\n\n#if defined BT_USE_SSE || defined _WIN32\n\n#define LOG2_ARRAY_SIZE     6\n#define STACK_ARRAY_COUNT   (1UL << LOG2_ARRAY_SIZE)\n\n#include <emmintrin.h>\n\nlong _maxdot_large( const float *vv, const float *vec, unsigned long count, float *dotResult );\nlong _maxdot_large( const float *vv, const float *vec, unsigned long count, float *dotResult )\n{\n    const float4 *vertices = (const float4*) vv;\n    static const unsigned char indexTable[16] = {-1, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0 };\n    float4 dotMax = btAssign128( -BT_INFINITY,  -BT_INFINITY,  -BT_INFINITY,  -BT_INFINITY );\n    float4 vvec = _mm_loadu_ps( vec );\n    float4 vHi = btCastiTo128f(_mm_shuffle_epi32( btCastfTo128i( vvec), 0xaa ));          /// zzzz\n    float4 vLo = _mm_movelh_ps( vvec, vvec );                               /// xyxy\n    \n    long maxIndex = -1L;\n    \n    size_t segment = 0;\n    float4 stack_array[ STACK_ARRAY_COUNT ];\n    \n#if DEBUG\n    memset( stack_array, -1, STACK_ARRAY_COUNT * sizeof(stack_array[0]) );\n#endif\n    \n    size_t index;\n    float4 max;\n    // Faster loop without cleanup code for full tiles\n    for ( segment = 0; segment + STACK_ARRAY_COUNT*4 <= count; segment += STACK_ARRAY_COUNT*4 ) \n    {\n        max = dotMax;\n        \n        for( index = 0; index < STACK_ARRAY_COUNT; index+= 4 )   \n        { // do four dot products at a time. Carefully avoid touching the w element.\n            float4 v0 = vertices[0];\n            float4 v1 = vertices[1];\n            float4 v2 = vertices[2];\n            float4 v3 = vertices[3];            vertices += 4;\n            \n            float4 lo0 = _mm_movelh_ps( v0, v1);    // x0y0x1y1\n            float4 hi0 = _mm_movehl_ps( v1, v0);    // z0?0z1?1\n            float4 lo1 = _mm_movelh_ps( v2, v3);    // x2y2x3y3\n            float4 hi1 = _mm_movehl_ps( v3, v2);    // z2?2z3?3\n            \n            lo0 = lo0*vLo;\n            lo1 = lo1*vLo;\n            float4 z = _mm_shuffle_ps(hi0, hi1, 0x88);\n            float4 x = _mm_shuffle_ps(lo0, lo1, 0x88);\n            float4 y = _mm_shuffle_ps(lo0, lo1, 0xdd);\n            z = z*vHi;\n            x = x+y;\n            x = x+z;\n            stack_array[index] = x;\n            max = _mm_max_ps( x, max );         // control the order here so that max is never NaN even if x is nan\n            \n            v0 = vertices[0];\n            v1 = vertices[1];\n            v2 = vertices[2];\n            v3 = vertices[3];            vertices += 4;\n            \n            lo0 = _mm_movelh_ps( v0, v1);    // x0y0x1y1\n            hi0 = _mm_movehl_ps( v1, v0);    // z0?0z1?1\n            lo1 = _mm_movelh_ps( v2, v3);    // x2y2x3y3\n            hi1 = _mm_movehl_ps( v3, v2);    // z2?2z3?3\n            \n            lo0 = lo0*vLo;\n            lo1 = lo1*vLo;\n            z = _mm_shuffle_ps(hi0, hi1, 0x88);\n            x = _mm_shuffle_ps(lo0, lo1, 0x88);\n            y = _mm_shuffle_ps(lo0, lo1, 0xdd);\n            z = z*vHi;\n            x = x+y;\n            x = x+z;\n            stack_array[index+1] = x;\n            max = _mm_max_ps( x, max );         // control the order here so that max is never NaN even if x is nan\n            \n            v0 = vertices[0];\n            v1 = vertices[1];\n            v2 = vertices[2];\n            v3 = vertices[3];            vertices += 4;\n            \n            lo0 = _mm_movelh_ps( v0, v1);    // x0y0x1y1\n            hi0 = _mm_movehl_ps( v1, v0);    // z0?0z1?1\n            lo1 = _mm_movelh_ps( v2, v3);    // x2y2x3y3\n            hi1 = _mm_movehl_ps( v3, v2);    // z2?2z3?3\n            \n            lo0 = lo0*vLo;\n            lo1 = lo1*vLo;\n            z = _mm_shuffle_ps(hi0, hi1, 0x88);\n            x = _mm_shuffle_ps(lo0, lo1, 0x88);\n            y = _mm_shuffle_ps(lo0, lo1, 0xdd);\n            z = z*vHi;\n            x = x+y;\n            x = x+z;\n            stack_array[index+2] = x;\n            max = _mm_max_ps( x, max );         // control the order here so that max is never NaN even if x is nan\n            \n            v0 = vertices[0];\n            v1 = vertices[1];\n            v2 = vertices[2];\n            v3 = vertices[3];            vertices += 4;\n            \n            lo0 = _mm_movelh_ps( v0, v1);    // x0y0x1y1\n            hi0 = _mm_movehl_ps( v1, v0);    // z0?0z1?1\n            lo1 = _mm_movelh_ps( v2, v3);    // x2y2x3y3\n            hi1 = _mm_movehl_ps( v3, v2);    // z2?2z3?3\n            \n            lo0 = lo0*vLo;\n            lo1 = lo1*vLo;\n            z = _mm_shuffle_ps(hi0, hi1, 0x88);\n            x = _mm_shuffle_ps(lo0, lo1, 0x88);\n            y = _mm_shuffle_ps(lo0, lo1, 0xdd);\n            z = z*vHi;\n            x = x+y;\n            x = x+z;\n            stack_array[index+3] = x;\n            max = _mm_max_ps( x, max );         // control the order here so that max is never NaN even if x is nan\n            \n            // It is too costly to keep the index of the max here. We will look for it again later.  We save a lot of work this way.\n        }\n        \n        // If we found a new max\n        if( 0xf != _mm_movemask_ps( (float4) _mm_cmpeq_ps(max, dotMax)))\n        { \n            // copy the new max across all lanes of our max accumulator\n            max = _mm_max_ps(max, (float4) _mm_shuffle_ps( max, max, 0x4e));\n            max = _mm_max_ps(max, (float4) _mm_shuffle_ps( max, max, 0xb1));\n            \n            dotMax = max;\n            \n            // find first occurrence of that max  \n            size_t test;\n            for( index = 0; 0 == (test=_mm_movemask_ps( _mm_cmpeq_ps( stack_array[index], max))); index++ )   // local_count must be a multiple of 4\n            {}\n            // record where it is.\n            maxIndex = 4*index + segment + indexTable[test];\n        }\n    }\n    \n    // account for work we've already done\n    count -= segment;\n    \n    // Deal with the last < STACK_ARRAY_COUNT vectors\n    max = dotMax;\n    index = 0;\n    \n    \n    if( btUnlikely( count > 16) )\n    {\n        for( ; index + 4 <= count / 4; index+=4 )   \n        { // do four dot products at a time. Carefully avoid touching the w element.\n            float4 v0 = vertices[0];\n            float4 v1 = vertices[1];\n            float4 v2 = vertices[2];\n            float4 v3 = vertices[3];            vertices += 4;\n            \n            float4 lo0 = _mm_movelh_ps( v0, v1);    // x0y0x1y1\n            float4 hi0 = _mm_movehl_ps( v1, v0);    // z0?0z1?1\n            float4 lo1 = _mm_movelh_ps( v2, v3);    // x2y2x3y3\n            float4 hi1 = _mm_movehl_ps( v3, v2);    // z2?2z3?3\n            \n            lo0 = lo0*vLo;\n            lo1 = lo1*vLo;\n            float4 z = _mm_shuffle_ps(hi0, hi1, 0x88);\n            float4 x = _mm_shuffle_ps(lo0, lo1, 0x88);\n            float4 y = _mm_shuffle_ps(lo0, lo1, 0xdd);\n            z = z*vHi;\n            x = x+y;\n            x = x+z;\n            stack_array[index] = x;\n            max = _mm_max_ps( x, max );         // control the order here so that max is never NaN even if x is nan\n            \n            v0 = vertices[0];\n            v1 = vertices[1];\n            v2 = vertices[2];\n            v3 = vertices[3];            vertices += 4;\n            \n            lo0 = _mm_movelh_ps( v0, v1);    // x0y0x1y1\n            hi0 = _mm_movehl_ps( v1, v0);    // z0?0z1?1\n            lo1 = _mm_movelh_ps( v2, v3);    // x2y2x3y3\n            hi1 = _mm_movehl_ps( v3, v2);    // z2?2z3?3\n            \n            lo0 = lo0*vLo;\n            lo1 = lo1*vLo;\n            z = _mm_shuffle_ps(hi0, hi1, 0x88);\n            x = _mm_shuffle_ps(lo0, lo1, 0x88);\n            y = _mm_shuffle_ps(lo0, lo1, 0xdd);\n            z = z*vHi;\n            x = x+y;\n            x = x+z;\n            stack_array[index+1] = x;\n            max = _mm_max_ps( x, max );         // control the order here so that max is never NaN even if x is nan\n            \n            v0 = vertices[0];\n            v1 = vertices[1];\n            v2 = vertices[2];\n            v3 = vertices[3];            vertices += 4;\n            \n            lo0 = _mm_movelh_ps( v0, v1);    // x0y0x1y1\n            hi0 = _mm_movehl_ps( v1, v0);    // z0?0z1?1\n            lo1 = _mm_movelh_ps( v2, v3);    // x2y2x3y3\n            hi1 = _mm_movehl_ps( v3, v2);    // z2?2z3?3\n            \n            lo0 = lo0*vLo;\n            lo1 = lo1*vLo;\n            z = _mm_shuffle_ps(hi0, hi1, 0x88);\n            x = _mm_shuffle_ps(lo0, lo1, 0x88);\n            y = _mm_shuffle_ps(lo0, lo1, 0xdd);\n            z = z*vHi;\n            x = x+y;\n            x = x+z;\n            stack_array[index+2] = x;\n            max = _mm_max_ps( x, max );         // control the order here so that max is never NaN even if x is nan\n            \n            v0 = vertices[0];\n            v1 = vertices[1];\n            v2 = vertices[2];\n            v3 = vertices[3];            vertices += 4;\n            \n            lo0 = _mm_movelh_ps( v0, v1);    // x0y0x1y1\n            hi0 = _mm_movehl_ps( v1, v0);    // z0?0z1?1\n            lo1 = _mm_movelh_ps( v2, v3);    // x2y2x3y3\n            hi1 = _mm_movehl_ps( v3, v2);    // z2?2z3?3\n            \n            lo0 = lo0*vLo;\n            lo1 = lo1*vLo;\n            z = _mm_shuffle_ps(hi0, hi1, 0x88);\n            x = _mm_shuffle_ps(lo0, lo1, 0x88);\n            y = _mm_shuffle_ps(lo0, lo1, 0xdd);\n            z = z*vHi;\n            x = x+y;\n            x = x+z;\n            stack_array[index+3] = x;\n            max = _mm_max_ps( x, max );         // control the order here so that max is never NaN even if x is nan\n            \n            // It is too costly to keep the index of the max here. We will look for it again later.  We save a lot of work this way.\n        }\n    }\n    \n    size_t localCount = (count & -4L) - 4*index;\n    if( localCount )\n    {\n#ifdef __APPLE__\n        float4 t0, t1, t2, t3, t4;\n        float4 * sap = &stack_array[index + localCount / 4];\n          vertices += localCount;      // counter the offset\n         size_t byteIndex = -(localCount) * sizeof(float);\n        //AT&T Code style assembly\n        asm volatile\n        (   \".align 4                                                                   \\n\\\n             0: movaps  %[max], %[t2]                            // move max out of the way to avoid propagating NaNs in max \\n\\\n          movaps  (%[vertices], %[byteIndex], 4),    %[t0]    // vertices[0]      \\n\\\n          movaps  16(%[vertices], %[byteIndex], 4),  %[t1]    // vertices[1]      \\n\\\n          movaps  %[t0], %[max]                               // vertices[0]      \\n\\\n          movlhps %[t1], %[max]                               // x0y0x1y1         \\n\\\n         movaps  32(%[vertices], %[byteIndex], 4),  %[t3]    // vertices[2]      \\n\\\n         movaps  48(%[vertices], %[byteIndex], 4),  %[t4]    // vertices[3]      \\n\\\n          mulps   %[vLo], %[max]                              // x0y0x1y1 * vLo   \\n\\\n         movhlps %[t0], %[t1]                                // z0w0z1w1         \\n\\\n         movaps  %[t3], %[t0]                                // vertices[2]      \\n\\\n         movlhps %[t4], %[t0]                                // x2y2x3y3         \\n\\\n         mulps   %[vLo], %[t0]                               // x2y2x3y3 * vLo   \\n\\\n          movhlps %[t3], %[t4]                                // z2w2z3w3         \\n\\\n          shufps  $0x88, %[t4], %[t1]                         // z0z1z2z3         \\n\\\n          mulps   %[vHi], %[t1]                               // z0z1z2z3 * vHi   \\n\\\n         movaps  %[max], %[t3]                               // x0y0x1y1 * vLo   \\n\\\n         shufps  $0x88, %[t0], %[max]                        // x0x1x2x3 * vLo.x \\n\\\n         shufps  $0xdd, %[t0], %[t3]                         // y0y1y2y3 * vLo.y \\n\\\n         addps   %[t3], %[max]                               // x + y            \\n\\\n         addps   %[t1], %[max]                               // x + y + z        \\n\\\n         movaps  %[max], (%[sap], %[byteIndex])              // record result for later scrutiny \\n\\\n         maxps   %[t2], %[max]                               // record max, restore max   \\n\\\n         add     $16, %[byteIndex]                           // advance loop counter\\n\\\n         jnz     0b                                          \\n\\\n     \"\n         : [max] \"+x\" (max), [t0] \"=&x\" (t0), [t1] \"=&x\" (t1), [t2] \"=&x\" (t2), [t3] \"=&x\" (t3), [t4] \"=&x\" (t4), [byteIndex] \"+r\" (byteIndex)\n         : [vLo] \"x\" (vLo), [vHi] \"x\" (vHi), [vertices] \"r\" (vertices), [sap] \"r\" (sap)\n         : \"memory\", \"cc\"\n         );\n        index += localCount/4;\n#else\n        {\n            for( unsigned int i=0; i<localCount/4; i++,index++)   \n            { // do four dot products at a time. Carefully avoid touching the w element.\n                float4 v0 = vertices[0];\n                float4 v1 = vertices[1];\n                float4 v2 = vertices[2];\n                float4 v3 = vertices[3];            \n                vertices += 4;\n                \n                float4 lo0 = _mm_movelh_ps( v0, v1);    // x0y0x1y1\n                float4 hi0 = _mm_movehl_ps( v1, v0);    // z0?0z1?1\n                float4 lo1 = _mm_movelh_ps( v2, v3);    // x2y2x3y3\n                float4 hi1 = _mm_movehl_ps( v3, v2);    // z2?2z3?3\n                \n                lo0 = lo0*vLo;\n                lo1 = lo1*vLo;\n                float4 z = _mm_shuffle_ps(hi0, hi1, 0x88);\n                float4 x = _mm_shuffle_ps(lo0, lo1, 0x88);\n                float4 y = _mm_shuffle_ps(lo0, lo1, 0xdd);\n                z = z*vHi;\n                x = x+y;\n                x = x+z;\n                stack_array[index] = x;\n                max = _mm_max_ps( x, max );         // control the order here so that max is never NaN even if x is nan\n            }\n        }\n#endif //__APPLE__\n    }\n\n    // process the last few points\n    if( count & 3 )\n    {\n        float4 v0, v1, v2, x, y, z;\n        switch( count & 3 )\n        {\n            case 3:\n            {\n                v0 = vertices[0];\n                v1 = vertices[1];\n                v2 = vertices[2];\n                \n                // Calculate 3 dot products, transpose, duplicate v2\n                float4 lo0 = _mm_movelh_ps( v0, v1);        // xyxy.lo\n                float4 hi0 = _mm_movehl_ps( v1, v0);        // z?z?.lo\n                lo0 = lo0*vLo;\n                z = _mm_shuffle_ps(hi0, v2,  0xa8 );           // z0z1z2z2\n                z = z*vHi;\n                float4 lo1 = _mm_movelh_ps(v2, v2);          // xyxy\n                lo1 = lo1*vLo;\n                x = _mm_shuffle_ps(lo0, lo1, 0x88);\n                y = _mm_shuffle_ps(lo0, lo1, 0xdd);\n            }\n                break;\n            case 2:\n            {\n                v0 = vertices[0];\n                v1 = vertices[1];\n                float4 xy = _mm_movelh_ps(v0, v1);\n                z = _mm_movehl_ps(v1, v0);\n                xy = xy*vLo;\n                z = _mm_shuffle_ps( z, z,  0xa8);\n                x = _mm_shuffle_ps( xy, xy, 0xa8);\n                y = _mm_shuffle_ps( xy, xy, 0xfd);\n                z = z*vHi;\n            }\n                break;\n            case 1:\n            {\n                float4 xy = vertices[0];\n                z =  _mm_shuffle_ps( xy, xy, 0xaa);\n                xy = xy*vLo;\n                z = z*vHi;\n                x = _mm_shuffle_ps(xy, xy, 0);\n                y = _mm_shuffle_ps(xy, xy, 0x55);\n            }\n                break;\n        }\n        x = x+y;\n        x = x+z;\n        stack_array[index] = x;\n        max = _mm_max_ps( x, max );         // control the order here so that max is never NaN even if x is nan\n        index++;\n    }\n    \n    // if we found a new max. \n    if( 0 == segment || 0xf != _mm_movemask_ps( (float4) _mm_cmpeq_ps(max, dotMax)))\n    { // we found a new max. Search for it\n      // find max across the max vector, place in all elements of max -- big latency hit here\n        max = _mm_max_ps(max, (float4) _mm_shuffle_ps( max, max, 0x4e));\n        max = _mm_max_ps(max, (float4) _mm_shuffle_ps( max, max, 0xb1));\n        \n        // It is slightly faster to do this part in scalar code when count < 8. However, the common case for\n        // this where it actually makes a difference is handled in the early out at the top of the function, \n        // so it is less than a 1% difference here. I opted for improved code size, fewer branches and reduced \n        // complexity, and removed it.\n        \n        dotMax = max;\n        \n        // scan for the first occurence of max in the array  \n        size_t test;\n        for( index = 0; 0 == (test=_mm_movemask_ps( _mm_cmpeq_ps( stack_array[index], max))); index++ )   // local_count must be a multiple of 4\n        {}\n        maxIndex = 4*index + segment + indexTable[test];\n    }\n    \n    _mm_store_ss( dotResult, dotMax);\n    return maxIndex;\n}\n\nlong _mindot_large( const float *vv, const float *vec, unsigned long count, float *dotResult );\n\nlong _mindot_large( const float *vv, const float *vec, unsigned long count, float *dotResult )\n{\n    const float4 *vertices = (const float4*) vv;\n    static const unsigned char indexTable[16] = {-1, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0 };\n    float4 dotmin = btAssign128( BT_INFINITY,  BT_INFINITY,  BT_INFINITY,  BT_INFINITY );\n    float4 vvec = _mm_loadu_ps( vec );\n    float4 vHi = btCastiTo128f(_mm_shuffle_epi32( btCastfTo128i( vvec), 0xaa ));          /// zzzz\n    float4 vLo = _mm_movelh_ps( vvec, vvec );                               /// xyxy\n    \n    long minIndex = -1L;\n\n    size_t segment = 0;\n    float4 stack_array[ STACK_ARRAY_COUNT ];\n    \n#if DEBUG\n    memset( stack_array, -1, STACK_ARRAY_COUNT * sizeof(stack_array[0]) );\n#endif\n    \n    size_t index;\n    float4 min;\n    // Faster loop without cleanup code for full tiles\n    for ( segment = 0; segment + STACK_ARRAY_COUNT*4 <= count; segment += STACK_ARRAY_COUNT*4 ) \n    {\n        min = dotmin;\n        \n        for( index = 0; index < STACK_ARRAY_COUNT; index+= 4 )   \n        { // do four dot products at a time. Carefully avoid touching the w element.\n            float4 v0 = vertices[0];\n            float4 v1 = vertices[1];\n            float4 v2 = vertices[2];\n            float4 v3 = vertices[3];            vertices += 4;\n            \n            float4 lo0 = _mm_movelh_ps( v0, v1);    // x0y0x1y1\n            float4 hi0 = _mm_movehl_ps( v1, v0);    // z0?0z1?1\n            float4 lo1 = _mm_movelh_ps( v2, v3);    // x2y2x3y3\n            float4 hi1 = _mm_movehl_ps( v3, v2);    // z2?2z3?3\n            \n            lo0 = lo0*vLo;\n            lo1 = lo1*vLo;\n            float4 z = _mm_shuffle_ps(hi0, hi1, 0x88);\n            float4 x = _mm_shuffle_ps(lo0, lo1, 0x88);\n            float4 y = _mm_shuffle_ps(lo0, lo1, 0xdd);\n            z = z*vHi;\n            x = x+y;\n            x = x+z;\n            stack_array[index] = x;\n            min = _mm_min_ps( x, min );         // control the order here so that min is never NaN even if x is nan\n            \n            v0 = vertices[0];\n            v1 = vertices[1];\n            v2 = vertices[2];\n            v3 = vertices[3];            vertices += 4;\n            \n            lo0 = _mm_movelh_ps( v0, v1);    // x0y0x1y1\n            hi0 = _mm_movehl_ps( v1, v0);    // z0?0z1?1\n            lo1 = _mm_movelh_ps( v2, v3);    // x2y2x3y3\n            hi1 = _mm_movehl_ps( v3, v2);    // z2?2z3?3\n            \n            lo0 = lo0*vLo;\n            lo1 = lo1*vLo;\n            z = _mm_shuffle_ps(hi0, hi1, 0x88);\n            x = _mm_shuffle_ps(lo0, lo1, 0x88);\n            y = _mm_shuffle_ps(lo0, lo1, 0xdd);\n            z = z*vHi;\n            x = x+y;\n            x = x+z;\n            stack_array[index+1] = x;\n            min = _mm_min_ps( x, min );         // control the order here so that min is never NaN even if x is nan\n            \n            v0 = vertices[0];\n            v1 = vertices[1];\n            v2 = vertices[2];\n            v3 = vertices[3];            vertices += 4;\n            \n            lo0 = _mm_movelh_ps( v0, v1);    // x0y0x1y1\n            hi0 = _mm_movehl_ps( v1, v0);    // z0?0z1?1\n            lo1 = _mm_movelh_ps( v2, v3);    // x2y2x3y3\n            hi1 = _mm_movehl_ps( v3, v2);    // z2?2z3?3\n            \n            lo0 = lo0*vLo;\n            lo1 = lo1*vLo;\n            z = _mm_shuffle_ps(hi0, hi1, 0x88);\n            x = _mm_shuffle_ps(lo0, lo1, 0x88);\n            y = _mm_shuffle_ps(lo0, lo1, 0xdd);\n            z = z*vHi;\n            x = x+y;\n            x = x+z;\n            stack_array[index+2] = x;\n            min = _mm_min_ps( x, min );         // control the order here so that min is never NaN even if x is nan\n            \n            v0 = vertices[0];\n            v1 = vertices[1];\n            v2 = vertices[2];\n            v3 = vertices[3];            vertices += 4;\n            \n            lo0 = _mm_movelh_ps( v0, v1);    // x0y0x1y1\n            hi0 = _mm_movehl_ps( v1, v0);    // z0?0z1?1\n            lo1 = _mm_movelh_ps( v2, v3);    // x2y2x3y3\n            hi1 = _mm_movehl_ps( v3, v2);    // z2?2z3?3\n            \n            lo0 = lo0*vLo;\n            lo1 = lo1*vLo;\n            z = _mm_shuffle_ps(hi0, hi1, 0x88);\n            x = _mm_shuffle_ps(lo0, lo1, 0x88);\n            y = _mm_shuffle_ps(lo0, lo1, 0xdd);\n            z = z*vHi;\n            x = x+y;\n            x = x+z;\n            stack_array[index+3] = x;\n            min = _mm_min_ps( x, min );         // control the order here so that min is never NaN even if x is nan\n            \n            // It is too costly to keep the index of the min here. We will look for it again later.  We save a lot of work this way.\n        }\n        \n        // If we found a new min\n        if( 0xf != _mm_movemask_ps( (float4) _mm_cmpeq_ps(min, dotmin)))\n        { \n            // copy the new min across all lanes of our min accumulator\n            min = _mm_min_ps(min, (float4) _mm_shuffle_ps( min, min, 0x4e));\n            min = _mm_min_ps(min, (float4) _mm_shuffle_ps( min, min, 0xb1));\n            \n            dotmin = min;\n            \n            // find first occurrence of that min  \n            size_t test;\n            for( index = 0; 0 == (test=_mm_movemask_ps( _mm_cmpeq_ps( stack_array[index], min))); index++ )   // local_count must be a multiple of 4\n            {}\n            // record where it is.\n            minIndex = 4*index + segment + indexTable[test];\n        }\n    }\n    \n    // account for work we've already done\n    count -= segment;\n    \n    // Deal with the last < STACK_ARRAY_COUNT vectors\n    min = dotmin;\n    index = 0;\n    \n    \n    if(btUnlikely( count > 16) )\n    {\n        for( ; index + 4 <= count / 4; index+=4 )   \n        { // do four dot products at a time. Carefully avoid touching the w element.\n            float4 v0 = vertices[0];\n            float4 v1 = vertices[1];\n            float4 v2 = vertices[2];\n            float4 v3 = vertices[3];            vertices += 4;\n            \n            float4 lo0 = _mm_movelh_ps( v0, v1);    // x0y0x1y1\n            float4 hi0 = _mm_movehl_ps( v1, v0);    // z0?0z1?1\n            float4 lo1 = _mm_movelh_ps( v2, v3);    // x2y2x3y3\n            float4 hi1 = _mm_movehl_ps( v3, v2);    // z2?2z3?3\n            \n            lo0 = lo0*vLo;\n            lo1 = lo1*vLo;\n            float4 z = _mm_shuffle_ps(hi0, hi1, 0x88);\n            float4 x = _mm_shuffle_ps(lo0, lo1, 0x88);\n            float4 y = _mm_shuffle_ps(lo0, lo1, 0xdd);\n            z = z*vHi;\n            x = x+y;\n            x = x+z;\n            stack_array[index] = x;\n            min = _mm_min_ps( x, min );         // control the order here so that min is never NaN even if x is nan\n            \n            v0 = vertices[0];\n            v1 = vertices[1];\n            v2 = vertices[2];\n            v3 = vertices[3];            vertices += 4;\n            \n            lo0 = _mm_movelh_ps( v0, v1);    // x0y0x1y1\n            hi0 = _mm_movehl_ps( v1, v0);    // z0?0z1?1\n            lo1 = _mm_movelh_ps( v2, v3);    // x2y2x3y3\n            hi1 = _mm_movehl_ps( v3, v2);    // z2?2z3?3\n            \n            lo0 = lo0*vLo;\n            lo1 = lo1*vLo;\n            z = _mm_shuffle_ps(hi0, hi1, 0x88);\n            x = _mm_shuffle_ps(lo0, lo1, 0x88);\n            y = _mm_shuffle_ps(lo0, lo1, 0xdd);\n            z = z*vHi;\n            x = x+y;\n            x = x+z;\n            stack_array[index+1] = x;\n            min = _mm_min_ps( x, min );         // control the order here so that min is never NaN even if x is nan\n            \n            v0 = vertices[0];\n            v1 = vertices[1];\n            v2 = vertices[2];\n            v3 = vertices[3];            vertices += 4;\n            \n            lo0 = _mm_movelh_ps( v0, v1);    // x0y0x1y1\n            hi0 = _mm_movehl_ps( v1, v0);    // z0?0z1?1\n            lo1 = _mm_movelh_ps( v2, v3);    // x2y2x3y3\n            hi1 = _mm_movehl_ps( v3, v2);    // z2?2z3?3\n            \n            lo0 = lo0*vLo;\n            lo1 = lo1*vLo;\n            z = _mm_shuffle_ps(hi0, hi1, 0x88);\n            x = _mm_shuffle_ps(lo0, lo1, 0x88);\n            y = _mm_shuffle_ps(lo0, lo1, 0xdd);\n            z = z*vHi;\n            x = x+y;\n            x = x+z;\n            stack_array[index+2] = x;\n            min = _mm_min_ps( x, min );         // control the order here so that min is never NaN even if x is nan\n            \n            v0 = vertices[0];\n            v1 = vertices[1];\n            v2 = vertices[2];\n            v3 = vertices[3];            vertices += 4;\n            \n            lo0 = _mm_movelh_ps( v0, v1);    // x0y0x1y1\n            hi0 = _mm_movehl_ps( v1, v0);    // z0?0z1?1\n            lo1 = _mm_movelh_ps( v2, v3);    // x2y2x3y3\n            hi1 = _mm_movehl_ps( v3, v2);    // z2?2z3?3\n            \n            lo0 = lo0*vLo;\n            lo1 = lo1*vLo;\n            z = _mm_shuffle_ps(hi0, hi1, 0x88);\n            x = _mm_shuffle_ps(lo0, lo1, 0x88);\n            y = _mm_shuffle_ps(lo0, lo1, 0xdd);\n            z = z*vHi;\n            x = x+y;\n            x = x+z;\n            stack_array[index+3] = x;\n            min = _mm_min_ps( x, min );         // control the order here so that min is never NaN even if x is nan\n            \n            // It is too costly to keep the index of the min here. We will look for it again later.  We save a lot of work this way.\n        }\n    }\n    \n    size_t localCount = (count & -4L) - 4*index;\n    if( localCount )\n    {\n        \n        \n#ifdef __APPLE__\n        vertices += localCount;      // counter the offset\n        float4 t0, t1, t2, t3, t4;\n        size_t byteIndex = -(localCount) * sizeof(float);\n        float4 * sap = &stack_array[index + localCount / 4];\n        \n        asm volatile\n        (   \".align 4                                                                   \\n\\\n             0: movaps  %[min], %[t2]                            // move min out of the way to avoid propagating NaNs in min \\n\\\n             movaps  (%[vertices], %[byteIndex], 4),    %[t0]    // vertices[0]      \\n\\\n             movaps  16(%[vertices], %[byteIndex], 4),  %[t1]    // vertices[1]      \\n\\\n             movaps  %[t0], %[min]                               // vertices[0]      \\n\\\n             movlhps %[t1], %[min]                               // x0y0x1y1         \\n\\\n             movaps  32(%[vertices], %[byteIndex], 4),  %[t3]    // vertices[2]      \\n\\\n             movaps  48(%[vertices], %[byteIndex], 4),  %[t4]    // vertices[3]      \\n\\\n             mulps   %[vLo], %[min]                              // x0y0x1y1 * vLo   \\n\\\n             movhlps %[t0], %[t1]                                // z0w0z1w1         \\n\\\n             movaps  %[t3], %[t0]                                // vertices[2]      \\n\\\n             movlhps %[t4], %[t0]                                // x2y2x3y3         \\n\\\n             movhlps %[t3], %[t4]                                // z2w2z3w3         \\n\\\n             mulps   %[vLo], %[t0]                               // x2y2x3y3 * vLo   \\n\\\n             shufps  $0x88, %[t4], %[t1]                         // z0z1z2z3         \\n\\\n             mulps   %[vHi], %[t1]                               // z0z1z2z3 * vHi   \\n\\\n             movaps  %[min], %[t3]                               // x0y0x1y1 * vLo   \\n\\\n             shufps  $0x88, %[t0], %[min]                        // x0x1x2x3 * vLo.x \\n\\\n             shufps  $0xdd, %[t0], %[t3]                         // y0y1y2y3 * vLo.y \\n\\\n             addps   %[t3], %[min]                               // x + y            \\n\\\n             addps   %[t1], %[min]                               // x + y + z        \\n\\\n             movaps  %[min], (%[sap], %[byteIndex])              // record result for later scrutiny \\n\\\n             minps   %[t2], %[min]                               // record min, restore min   \\n\\\n             add     $16, %[byteIndex]                           // advance loop counter\\n\\\n             jnz     0b                                          \\n\\\n             \"\n         : [min] \"+x\" (min), [t0] \"=&x\" (t0), [t1] \"=&x\" (t1), [t2] \"=&x\" (t2), [t3] \"=&x\" (t3), [t4] \"=&x\" (t4), [byteIndex] \"+r\" (byteIndex)\n         : [vLo] \"x\" (vLo), [vHi] \"x\" (vHi), [vertices] \"r\" (vertices), [sap] \"r\" (sap)\n         : \"memory\", \"cc\"\n         );\n        index += localCount/4;\n#else\n        {\n            for( unsigned int i=0; i<localCount/4; i++,index++)   \n            { // do four dot products at a time. Carefully avoid touching the w element.\n                float4 v0 = vertices[0];\n                float4 v1 = vertices[1];\n                float4 v2 = vertices[2];\n                float4 v3 = vertices[3];            \n                vertices += 4;\n                \n                float4 lo0 = _mm_movelh_ps( v0, v1);    // x0y0x1y1\n                float4 hi0 = _mm_movehl_ps( v1, v0);    // z0?0z1?1\n                float4 lo1 = _mm_movelh_ps( v2, v3);    // x2y2x3y3\n                float4 hi1 = _mm_movehl_ps( v3, v2);    // z2?2z3?3\n                \n                lo0 = lo0*vLo;\n                lo1 = lo1*vLo;\n                float4 z = _mm_shuffle_ps(hi0, hi1, 0x88);\n                float4 x = _mm_shuffle_ps(lo0, lo1, 0x88);\n                float4 y = _mm_shuffle_ps(lo0, lo1, 0xdd);\n                z = z*vHi;\n                x = x+y;\n                x = x+z;\n                stack_array[index] = x;\n                min = _mm_min_ps( x, min );         // control the order here so that max is never NaN even if x is nan\n            }\n        }\n\n#endif\n    }\n    \n    // process the last few points\n    if( count & 3 )\n    {\n        float4 v0, v1, v2, x, y, z;\n        switch( count & 3 )\n        {\n            case 3:\n            {\n                v0 = vertices[0];\n                v1 = vertices[1];\n                v2 = vertices[2];\n                \n                // Calculate 3 dot products, transpose, duplicate v2\n                float4 lo0 = _mm_movelh_ps( v0, v1);        // xyxy.lo\n                float4 hi0 = _mm_movehl_ps( v1, v0);        // z?z?.lo\n                lo0 = lo0*vLo;\n                z = _mm_shuffle_ps(hi0, v2,  0xa8 );           // z0z1z2z2\n                z = z*vHi;\n                float4 lo1 = _mm_movelh_ps(v2, v2);          // xyxy\n                lo1 = lo1*vLo;\n                x = _mm_shuffle_ps(lo0, lo1, 0x88);\n                y = _mm_shuffle_ps(lo0, lo1, 0xdd);\n            }\n                break;\n            case 2:\n            {\n                v0 = vertices[0];\n                v1 = vertices[1];\n                float4 xy = _mm_movelh_ps(v0, v1);\n                z = _mm_movehl_ps(v1, v0);\n                xy = xy*vLo;\n                z = _mm_shuffle_ps( z, z,  0xa8);\n                x = _mm_shuffle_ps( xy, xy, 0xa8);\n                y = _mm_shuffle_ps( xy, xy, 0xfd);\n                z = z*vHi;\n            }\n                break;\n            case 1:\n            {\n                float4 xy = vertices[0];\n                z =  _mm_shuffle_ps( xy, xy, 0xaa);\n                xy = xy*vLo;\n                z = z*vHi;\n                x = _mm_shuffle_ps(xy, xy, 0);\n                y = _mm_shuffle_ps(xy, xy, 0x55);\n            }\n                break;\n        }\n        x = x+y;\n        x = x+z;\n        stack_array[index] = x;\n        min = _mm_min_ps( x, min );         // control the order here so that min is never NaN even if x is nan\n        index++;\n    }\n    \n    // if we found a new min. \n    if( 0 == segment || 0xf != _mm_movemask_ps( (float4) _mm_cmpeq_ps(min, dotmin)))\n    { // we found a new min. Search for it\n      // find min across the min vector, place in all elements of min -- big latency hit here\n        min = _mm_min_ps(min, (float4) _mm_shuffle_ps( min, min, 0x4e));\n        min = _mm_min_ps(min, (float4) _mm_shuffle_ps( min, min, 0xb1));\n        \n        // It is slightly faster to do this part in scalar code when count < 8. However, the common case for\n        // this where it actually makes a difference is handled in the early out at the top of the function, \n        // so it is less than a 1% difference here. I opted for improved code size, fewer branches and reduced \n        // complexity, and removed it.\n        \n        dotmin = min;\n        \n        // scan for the first occurence of min in the array  \n        size_t test;\n        for( index = 0; 0 == (test=_mm_movemask_ps( _mm_cmpeq_ps( stack_array[index], min))); index++ )   // local_count must be a multiple of 4\n        {}\n        minIndex = 4*index + segment + indexTable[test];\n    }\n    \n    _mm_store_ss( dotResult, dotmin);\n    return minIndex;\n}\n\n\n#elif defined BT_USE_NEON\n#define ARM_NEON_GCC_COMPATIBILITY  1\n#include <arm_neon.h>\n\n\nstatic long _maxdot_large_v0( const float *vv, const float *vec, unsigned long count, float *dotResult );\nstatic long _maxdot_large_v1( const float *vv, const float *vec, unsigned long count, float *dotResult );\nstatic long _maxdot_large_sel( const float *vv, const float *vec, unsigned long count, float *dotResult );\nstatic long _mindot_large_v0( const float *vv, const float *vec, unsigned long count, float *dotResult );\nstatic long _mindot_large_v1( const float *vv, const float *vec, unsigned long count, float *dotResult );\nstatic long _mindot_large_sel( const float *vv, const float *vec, unsigned long count, float *dotResult );\n\nlong (*_maxdot_large)( const float *vv, const float *vec, unsigned long count, float *dotResult ) = _maxdot_large_sel;\nlong (*_mindot_large)( const float *vv, const float *vec, unsigned long count, float *dotResult ) = _mindot_large_sel;\n\nextern \"C\" {int  _get_cpu_capabilities( void );}\n\nstatic long _maxdot_large_sel( const float *vv, const float *vec, unsigned long count, float *dotResult )\n{\n    if( _get_cpu_capabilities() & 0x2000 )\n        _maxdot_large = _maxdot_large_v1;\n    else\n        _maxdot_large = _maxdot_large_v0;\n    \n    return _maxdot_large(vv, vec, count, dotResult);\n}\n\nstatic long _mindot_large_sel( const float *vv, const float *vec, unsigned long count, float *dotResult )\n{\n    if( _get_cpu_capabilities() & 0x2000 )\n        _mindot_large = _mindot_large_v1;\n    else\n        _mindot_large = _mindot_large_v0;\n    \n    return _mindot_large(vv, vec, count, dotResult);\n}\n\n\n\n#define vld1q_f32_aligned_postincrement( _ptr ) ({ float32x4_t _r; asm( \"vld1.f32  {%0}, [%1, :128]!\\n\" : \"=w\" (_r), \"+r\" (_ptr) ); /*return*/ _r; })\n\n\nlong _maxdot_large_v0( const float *vv, const float *vec, unsigned long count, float *dotResult )\n{\n    unsigned long i = 0;\n    float32x4_t vvec = vld1q_f32_aligned_postincrement( vec );\n    float32x2_t vLo = vget_low_f32(vvec);\n    float32x2_t vHi = vdup_lane_f32(vget_high_f32(vvec), 0);\n    float32x2_t dotMaxLo = (float32x2_t) { -BT_INFINITY, -BT_INFINITY };\n    float32x2_t dotMaxHi = (float32x2_t) { -BT_INFINITY, -BT_INFINITY };\n    uint32x2_t indexLo = (uint32x2_t) {0, 1};\n    uint32x2_t indexHi = (uint32x2_t) {2, 3};\n    uint32x2_t iLo = (uint32x2_t) {-1, -1};\n    uint32x2_t iHi = (uint32x2_t) {-1, -1};\n    const uint32x2_t four = (uint32x2_t) {4,4};\n\n    for( ; i+8 <= count; i+= 8 )\n    {\n        float32x4_t v0 = vld1q_f32_aligned_postincrement( vv );\n        float32x4_t v1 = vld1q_f32_aligned_postincrement( vv );\n        float32x4_t v2 = vld1q_f32_aligned_postincrement( vv );\n        float32x4_t v3 = vld1q_f32_aligned_postincrement( vv );\n        \n        float32x2_t xy0 = vmul_f32( vget_low_f32(v0), vLo);\n        float32x2_t xy1 = vmul_f32( vget_low_f32(v1), vLo);\n        float32x2_t xy2 = vmul_f32( vget_low_f32(v2), vLo);\n        float32x2_t xy3 = vmul_f32( vget_low_f32(v3), vLo);\n        \n        float32x2x2_t z0 = vtrn_f32( vget_high_f32(v0), vget_high_f32(v1));\n        float32x2x2_t z1 = vtrn_f32( vget_high_f32(v2), vget_high_f32(v3));\n        float32x2_t zLo = vmul_f32( z0.val[0], vHi);\n        float32x2_t zHi = vmul_f32( z1.val[0], vHi);\n        \n        float32x2_t rLo = vpadd_f32( xy0, xy1);\n        float32x2_t rHi = vpadd_f32( xy2, xy3);\n        rLo = vadd_f32(rLo, zLo);\n        rHi = vadd_f32(rHi, zHi);\n        \n        uint32x2_t maskLo = vcgt_f32( rLo, dotMaxLo );\n        uint32x2_t maskHi = vcgt_f32( rHi, dotMaxHi );\n        dotMaxLo = vbsl_f32( maskLo, rLo, dotMaxLo);\n        dotMaxHi = vbsl_f32( maskHi, rHi, dotMaxHi);\n        iLo = vbsl_u32(maskLo, indexLo, iLo);\n        iHi = vbsl_u32(maskHi, indexHi, iHi);\n        indexLo = vadd_u32(indexLo, four); \n        indexHi = vadd_u32(indexHi, four);\n\n        v0 = vld1q_f32_aligned_postincrement( vv );\n        v1 = vld1q_f32_aligned_postincrement( vv );\n        v2 = vld1q_f32_aligned_postincrement( vv );\n        v3 = vld1q_f32_aligned_postincrement( vv );\n        \n        xy0 = vmul_f32( vget_low_f32(v0), vLo);\n        xy1 = vmul_f32( vget_low_f32(v1), vLo);\n        xy2 = vmul_f32( vget_low_f32(v2), vLo);\n        xy3 = vmul_f32( vget_low_f32(v3), vLo);\n        \n        z0 = vtrn_f32( vget_high_f32(v0), vget_high_f32(v1));\n        z1 = vtrn_f32( vget_high_f32(v2), vget_high_f32(v3));\n        zLo = vmul_f32( z0.val[0], vHi);\n        zHi = vmul_f32( z1.val[0], vHi);\n        \n        rLo = vpadd_f32( xy0, xy1);\n        rHi = vpadd_f32( xy2, xy3);\n        rLo = vadd_f32(rLo, zLo);\n        rHi = vadd_f32(rHi, zHi);\n        \n        maskLo = vcgt_f32( rLo, dotMaxLo );\n        maskHi = vcgt_f32( rHi, dotMaxHi );\n        dotMaxLo = vbsl_f32( maskLo, rLo, dotMaxLo);\n        dotMaxHi = vbsl_f32( maskHi, rHi, dotMaxHi);\n        iLo = vbsl_u32(maskLo, indexLo, iLo);\n        iHi = vbsl_u32(maskHi, indexHi, iHi);\n        indexLo = vadd_u32(indexLo, four);\n        indexHi = vadd_u32(indexHi, four);\n    }\n\n    for( ; i+4 <= count; i+= 4 )\n    {\n        float32x4_t v0 = vld1q_f32_aligned_postincrement( vv );\n        float32x4_t v1 = vld1q_f32_aligned_postincrement( vv );\n        float32x4_t v2 = vld1q_f32_aligned_postincrement( vv );\n        float32x4_t v3 = vld1q_f32_aligned_postincrement( vv );\n        \n        float32x2_t xy0 = vmul_f32( vget_low_f32(v0), vLo);\n        float32x2_t xy1 = vmul_f32( vget_low_f32(v1), vLo);\n        float32x2_t xy2 = vmul_f32( vget_low_f32(v2), vLo);\n        float32x2_t xy3 = vmul_f32( vget_low_f32(v3), vLo);\n        \n        float32x2x2_t z0 = vtrn_f32( vget_high_f32(v0), vget_high_f32(v1));\n        float32x2x2_t z1 = vtrn_f32( vget_high_f32(v2), vget_high_f32(v3));\n        float32x2_t zLo = vmul_f32( z0.val[0], vHi);\n        float32x2_t zHi = vmul_f32( z1.val[0], vHi);\n        \n        float32x2_t rLo = vpadd_f32( xy0, xy1);\n        float32x2_t rHi = vpadd_f32( xy2, xy3);\n        rLo = vadd_f32(rLo, zLo);\n        rHi = vadd_f32(rHi, zHi);\n        \n        uint32x2_t maskLo = vcgt_f32( rLo, dotMaxLo );\n        uint32x2_t maskHi = vcgt_f32( rHi, dotMaxHi );\n        dotMaxLo = vbsl_f32( maskLo, rLo, dotMaxLo);\n        dotMaxHi = vbsl_f32( maskHi, rHi, dotMaxHi);\n        iLo = vbsl_u32(maskLo, indexLo, iLo);\n        iHi = vbsl_u32(maskHi, indexHi, iHi);\n        indexLo = vadd_u32(indexLo, four);\n        indexHi = vadd_u32(indexHi, four);\n    }\n    \n    switch( count & 3 )\n    {\n        case 3:\n        {\n            float32x4_t v0 = vld1q_f32_aligned_postincrement( vv );\n            float32x4_t v1 = vld1q_f32_aligned_postincrement( vv );\n            float32x4_t v2 = vld1q_f32_aligned_postincrement( vv );\n            \n            float32x2_t xy0 = vmul_f32( vget_low_f32(v0), vLo);\n            float32x2_t xy1 = vmul_f32( vget_low_f32(v1), vLo);\n            float32x2_t xy2 = vmul_f32( vget_low_f32(v2), vLo);\n            \n            float32x2x2_t z0 = vtrn_f32( vget_high_f32(v0), vget_high_f32(v1));\n            float32x2_t zLo = vmul_f32( z0.val[0], vHi);\n            float32x2_t zHi = vmul_f32( vdup_lane_f32(vget_high_f32(v2), 0), vHi);\n            \n            float32x2_t rLo = vpadd_f32( xy0, xy1);\n            float32x2_t rHi = vpadd_f32( xy2, xy2);\n            rLo = vadd_f32(rLo, zLo);\n            rHi = vadd_f32(rHi, zHi);\n            \n            uint32x2_t maskLo = vcgt_f32( rLo, dotMaxLo );\n            uint32x2_t maskHi = vcgt_f32( rHi, dotMaxHi );\n            dotMaxLo = vbsl_f32( maskLo, rLo, dotMaxLo);\n            dotMaxHi = vbsl_f32( maskHi, rHi, dotMaxHi);\n            iLo = vbsl_u32(maskLo, indexLo, iLo);\n            iHi = vbsl_u32(maskHi, indexHi, iHi);\n        }\n            break;\n        case 2:\n        {\n            float32x4_t v0 = vld1q_f32_aligned_postincrement( vv );\n            float32x4_t v1 = vld1q_f32_aligned_postincrement( vv );\n            \n            float32x2_t xy0 = vmul_f32( vget_low_f32(v0), vLo);\n            float32x2_t xy1 = vmul_f32( vget_low_f32(v1), vLo);\n            \n            float32x2x2_t z0 = vtrn_f32( vget_high_f32(v0), vget_high_f32(v1));\n            float32x2_t zLo = vmul_f32( z0.val[0], vHi);\n            \n            float32x2_t rLo = vpadd_f32( xy0, xy1);\n            rLo = vadd_f32(rLo, zLo);\n            \n            uint32x2_t maskLo = vcgt_f32( rLo, dotMaxLo );\n            dotMaxLo = vbsl_f32( maskLo, rLo, dotMaxLo);\n            iLo = vbsl_u32(maskLo, indexLo, iLo);\n        }\n            break;\n        case 1:\n        {\n            float32x4_t v0 = vld1q_f32_aligned_postincrement( vv );\n            float32x2_t xy0 = vmul_f32( vget_low_f32(v0), vLo);\n            float32x2_t z0 = vdup_lane_f32(vget_high_f32(v0), 0);\n            float32x2_t zLo = vmul_f32( z0, vHi);\n            float32x2_t rLo = vpadd_f32( xy0, xy0);\n            rLo = vadd_f32(rLo, zLo);\n            uint32x2_t maskLo = vcgt_f32( rLo, dotMaxLo );\n            dotMaxLo = vbsl_f32( maskLo, rLo, dotMaxLo);\n            iLo = vbsl_u32(maskLo, indexLo, iLo);\n        }\n            break;\n        \n        default:\n            break;\n    }\n    \n    // select best answer between hi and lo results\n    uint32x2_t mask = vcgt_f32( dotMaxHi, dotMaxLo );\n    dotMaxLo = vbsl_f32(mask, dotMaxHi, dotMaxLo);\n    iLo = vbsl_u32(mask, iHi, iLo);\n    \n    // select best answer between even and odd results\n    dotMaxHi = vdup_lane_f32(dotMaxLo, 1);\n    iHi = vdup_lane_u32(iLo, 1);\n    mask = vcgt_f32( dotMaxHi, dotMaxLo );\n    dotMaxLo = vbsl_f32(mask, dotMaxHi, dotMaxLo);\n    iLo = vbsl_u32(mask, iHi, iLo);\n    \n    *dotResult = vget_lane_f32( dotMaxLo, 0);\n    return vget_lane_u32(iLo, 0);\n}\n\n\nlong _maxdot_large_v1( const float *vv, const float *vec, unsigned long count, float *dotResult )\n{\n    float32x4_t vvec = vld1q_f32_aligned_postincrement( vec );\n    float32x4_t vLo = vcombine_f32(vget_low_f32(vvec), vget_low_f32(vvec));\n    float32x4_t vHi = vdupq_lane_f32(vget_high_f32(vvec), 0);\n    const uint32x4_t four = (uint32x4_t){ 4, 4, 4, 4 };\n    uint32x4_t local_index = (uint32x4_t) {0, 1, 2, 3};\n    uint32x4_t index = (uint32x4_t) { -1, -1, -1, -1 };\n    float32x4_t maxDot = (float32x4_t) { -BT_INFINITY, -BT_INFINITY, -BT_INFINITY, -BT_INFINITY };\n    \n    unsigned long i = 0;\n    for( ; i + 8 <= count; i += 8 )\n    {\n        float32x4_t v0 = vld1q_f32_aligned_postincrement( vv );\n        float32x4_t v1 = vld1q_f32_aligned_postincrement( vv );\n        float32x4_t v2 = vld1q_f32_aligned_postincrement( vv );\n        float32x4_t v3 = vld1q_f32_aligned_postincrement( vv );\n        \n        // the next two lines should resolve to a single vswp d, d\n        float32x4_t xy0 = vcombine_f32( vget_low_f32(v0), vget_low_f32(v1));\n        float32x4_t xy1 = vcombine_f32( vget_low_f32(v2), vget_low_f32(v3));\n        // the next two lines should resolve to a single vswp d, d\n        float32x4_t z0 = vcombine_f32( vget_high_f32(v0), vget_high_f32(v1));\n        float32x4_t z1 = vcombine_f32( vget_high_f32(v2), vget_high_f32(v3));\n        \n        xy0 = vmulq_f32(xy0, vLo);\n        xy1 = vmulq_f32(xy1, vLo);\n        \n        float32x4x2_t zb = vuzpq_f32( z0, z1);\n        float32x4_t z = vmulq_f32( zb.val[0], vHi);\n        float32x4x2_t xy = vuzpq_f32( xy0, xy1);\n        float32x4_t x = vaddq_f32(xy.val[0], xy.val[1]);\n        x = vaddq_f32(x, z);\n        \n        uint32x4_t mask = vcgtq_f32(x, maxDot);\n        maxDot = vbslq_f32( mask, x, maxDot);\n        index = vbslq_u32(mask, local_index, index);\n        local_index = vaddq_u32(local_index, four);\n\n        v0 = vld1q_f32_aligned_postincrement( vv );\n        v1 = vld1q_f32_aligned_postincrement( vv );\n        v2 = vld1q_f32_aligned_postincrement( vv );\n        v3 = vld1q_f32_aligned_postincrement( vv );\n        \n        // the next two lines should resolve to a single vswp d, d\n        xy0 = vcombine_f32( vget_low_f32(v0), vget_low_f32(v1));\n        xy1 = vcombine_f32( vget_low_f32(v2), vget_low_f32(v3));\n        // the next two lines should resolve to a single vswp d, d\n        z0 = vcombine_f32( vget_high_f32(v0), vget_high_f32(v1));\n        z1 = vcombine_f32( vget_high_f32(v2), vget_high_f32(v3));\n        \n        xy0 = vmulq_f32(xy0, vLo);\n        xy1 = vmulq_f32(xy1, vLo);\n        \n        zb = vuzpq_f32( z0, z1);\n        z = vmulq_f32( zb.val[0], vHi);\n        xy = vuzpq_f32( xy0, xy1);\n        x = vaddq_f32(xy.val[0], xy.val[1]);\n        x = vaddq_f32(x, z);\n        \n        mask = vcgtq_f32(x, maxDot);\n        maxDot = vbslq_f32( mask, x, maxDot);\n        index = vbslq_u32(mask, local_index, index);\n        local_index = vaddq_u32(local_index, four);\n    }\n\n    for( ; i + 4 <= count; i += 4 )\n    {\n        float32x4_t v0 = vld1q_f32_aligned_postincrement( vv );\n        float32x4_t v1 = vld1q_f32_aligned_postincrement( vv );\n        float32x4_t v2 = vld1q_f32_aligned_postincrement( vv );\n        float32x4_t v3 = vld1q_f32_aligned_postincrement( vv );\n\n        // the next two lines should resolve to a single vswp d, d\n        float32x4_t xy0 = vcombine_f32( vget_low_f32(v0), vget_low_f32(v1));\n        float32x4_t xy1 = vcombine_f32( vget_low_f32(v2), vget_low_f32(v3));\n        // the next two lines should resolve to a single vswp d, d\n        float32x4_t z0 = vcombine_f32( vget_high_f32(v0), vget_high_f32(v1));\n        float32x4_t z1 = vcombine_f32( vget_high_f32(v2), vget_high_f32(v3));\n        \n        xy0 = vmulq_f32(xy0, vLo);\n        xy1 = vmulq_f32(xy1, vLo);\n        \n        float32x4x2_t zb = vuzpq_f32( z0, z1);\n        float32x4_t z = vmulq_f32( zb.val[0], vHi);\n        float32x4x2_t xy = vuzpq_f32( xy0, xy1);\n        float32x4_t x = vaddq_f32(xy.val[0], xy.val[1]);\n        x = vaddq_f32(x, z);\n        \n        uint32x4_t mask = vcgtq_f32(x, maxDot);\n        maxDot = vbslq_f32( mask, x, maxDot);\n        index = vbslq_u32(mask, local_index, index);\n        local_index = vaddq_u32(local_index, four);\n    }\n    \n    switch (count & 3) {\n        case 3:\n        {\n            float32x4_t v0 = vld1q_f32_aligned_postincrement( vv );\n            float32x4_t v1 = vld1q_f32_aligned_postincrement( vv );\n            float32x4_t v2 = vld1q_f32_aligned_postincrement( vv );\n            \n            // the next two lines should resolve to a single vswp d, d\n            float32x4_t xy0 = vcombine_f32( vget_low_f32(v0), vget_low_f32(v1));\n            float32x4_t xy1 = vcombine_f32( vget_low_f32(v2), vget_low_f32(v2));\n            // the next two lines should resolve to a single vswp d, d\n            float32x4_t z0 = vcombine_f32( vget_high_f32(v0), vget_high_f32(v1));\n            float32x4_t z1 = vcombine_f32( vget_high_f32(v2), vget_high_f32(v2));\n            \n            xy0 = vmulq_f32(xy0, vLo);\n            xy1 = vmulq_f32(xy1, vLo);\n            \n            float32x4x2_t zb = vuzpq_f32( z0, z1);\n            float32x4_t z = vmulq_f32( zb.val[0], vHi);\n            float32x4x2_t xy = vuzpq_f32( xy0, xy1);\n            float32x4_t x = vaddq_f32(xy.val[0], xy.val[1]);\n            x = vaddq_f32(x, z);\n            \n            uint32x4_t mask = vcgtq_f32(x, maxDot);\n            maxDot = vbslq_f32( mask, x, maxDot);\n            index = vbslq_u32(mask, local_index, index);\n            local_index = vaddq_u32(local_index, four);\n        }\n            break;\n\n        case 2:\n        {\n            float32x4_t v0 = vld1q_f32_aligned_postincrement( vv );\n            float32x4_t v1 = vld1q_f32_aligned_postincrement( vv );\n            \n            // the next two lines should resolve to a single vswp d, d\n            float32x4_t xy0 = vcombine_f32( vget_low_f32(v0), vget_low_f32(v1));\n            // the next two lines should resolve to a single vswp d, d\n            float32x4_t z0 = vcombine_f32( vget_high_f32(v0), vget_high_f32(v1));\n            \n            xy0 = vmulq_f32(xy0, vLo);\n            \n            float32x4x2_t zb = vuzpq_f32( z0, z0);\n            float32x4_t z = vmulq_f32( zb.val[0], vHi);\n            float32x4x2_t xy = vuzpq_f32( xy0, xy0);\n            float32x4_t x = vaddq_f32(xy.val[0], xy.val[1]);\n            x = vaddq_f32(x, z);\n            \n            uint32x4_t mask = vcgtq_f32(x, maxDot);\n            maxDot = vbslq_f32( mask, x, maxDot);\n            index = vbslq_u32(mask, local_index, index);\n            local_index = vaddq_u32(local_index, four);\n        }\n            break;\n\n        case 1:\n        {\n            float32x4_t v0 = vld1q_f32_aligned_postincrement( vv );\n            \n            // the next two lines should resolve to a single vswp d, d\n            float32x4_t xy0 = vcombine_f32( vget_low_f32(v0), vget_low_f32(v0));\n            // the next two lines should resolve to a single vswp d, d\n            float32x4_t z = vdupq_lane_f32(vget_high_f32(v0), 0); \n            \n            xy0 = vmulq_f32(xy0, vLo);\n            \n            z = vmulq_f32( z, vHi);\n            float32x4x2_t xy = vuzpq_f32( xy0, xy0);\n            float32x4_t x = vaddq_f32(xy.val[0], xy.val[1]);\n            x = vaddq_f32(x, z);\n            \n            uint32x4_t mask = vcgtq_f32(x, maxDot);\n            maxDot = vbslq_f32( mask, x, maxDot);\n            index = vbslq_u32(mask, local_index, index);\n            local_index = vaddq_u32(local_index, four);\n        }\n            break;\n\n        default:\n            break;\n    }\n    \n    \n    // select best answer between hi and lo results\n    uint32x2_t mask = vcgt_f32( vget_high_f32(maxDot), vget_low_f32(maxDot));\n    float32x2_t maxDot2 = vbsl_f32(mask, vget_high_f32(maxDot), vget_low_f32(maxDot));\n    uint32x2_t index2 = vbsl_u32(mask, vget_high_u32(index), vget_low_u32(index));\n    \n    // select best answer between even and odd results\n    float32x2_t maxDotO = vdup_lane_f32(maxDot2, 1);\n    uint32x2_t indexHi = vdup_lane_u32(index2, 1);\n    mask = vcgt_f32( maxDotO, maxDot2 );\n    maxDot2 = vbsl_f32(mask, maxDotO, maxDot2);\n    index2 = vbsl_u32(mask, indexHi, index2);\n    \n    *dotResult = vget_lane_f32( maxDot2, 0);\n    return vget_lane_u32(index2, 0);\n    \n}\n\nlong _mindot_large_v0( const float *vv, const float *vec, unsigned long count, float *dotResult )\n{\n    unsigned long i = 0;\n    float32x4_t vvec = vld1q_f32_aligned_postincrement( vec );\n    float32x2_t vLo = vget_low_f32(vvec);\n    float32x2_t vHi = vdup_lane_f32(vget_high_f32(vvec), 0);\n    float32x2_t dotMinLo = (float32x2_t) { BT_INFINITY, BT_INFINITY };\n    float32x2_t dotMinHi = (float32x2_t) { BT_INFINITY, BT_INFINITY };\n    uint32x2_t indexLo = (uint32x2_t) {0, 1};\n    uint32x2_t indexHi = (uint32x2_t) {2, 3};\n    uint32x2_t iLo = (uint32x2_t) {-1, -1};\n    uint32x2_t iHi = (uint32x2_t) {-1, -1};\n    const uint32x2_t four = (uint32x2_t) {4,4};\n    \n    for( ; i+8 <= count; i+= 8 )\n    {\n        float32x4_t v0 = vld1q_f32_aligned_postincrement( vv );\n        float32x4_t v1 = vld1q_f32_aligned_postincrement( vv );\n        float32x4_t v2 = vld1q_f32_aligned_postincrement( vv );\n        float32x4_t v3 = vld1q_f32_aligned_postincrement( vv );\n        \n        float32x2_t xy0 = vmul_f32( vget_low_f32(v0), vLo);\n        float32x2_t xy1 = vmul_f32( vget_low_f32(v1), vLo);\n        float32x2_t xy2 = vmul_f32( vget_low_f32(v2), vLo);\n        float32x2_t xy3 = vmul_f32( vget_low_f32(v3), vLo);\n        \n        float32x2x2_t z0 = vtrn_f32( vget_high_f32(v0), vget_high_f32(v1));\n        float32x2x2_t z1 = vtrn_f32( vget_high_f32(v2), vget_high_f32(v3));\n        float32x2_t zLo = vmul_f32( z0.val[0], vHi);\n        float32x2_t zHi = vmul_f32( z1.val[0], vHi);\n        \n        float32x2_t rLo = vpadd_f32( xy0, xy1);\n        float32x2_t rHi = vpadd_f32( xy2, xy3);\n        rLo = vadd_f32(rLo, zLo);\n        rHi = vadd_f32(rHi, zHi);\n        \n        uint32x2_t maskLo = vclt_f32( rLo, dotMinLo );\n        uint32x2_t maskHi = vclt_f32( rHi, dotMinHi );\n        dotMinLo = vbsl_f32( maskLo, rLo, dotMinLo);\n        dotMinHi = vbsl_f32( maskHi, rHi, dotMinHi);\n        iLo = vbsl_u32(maskLo, indexLo, iLo);\n        iHi = vbsl_u32(maskHi, indexHi, iHi);\n        indexLo = vadd_u32(indexLo, four);\n        indexHi = vadd_u32(indexHi, four);\n        \n        v0 = vld1q_f32_aligned_postincrement( vv );\n        v1 = vld1q_f32_aligned_postincrement( vv );\n        v2 = vld1q_f32_aligned_postincrement( vv );\n        v3 = vld1q_f32_aligned_postincrement( vv );\n        \n        xy0 = vmul_f32( vget_low_f32(v0), vLo);\n        xy1 = vmul_f32( vget_low_f32(v1), vLo);\n        xy2 = vmul_f32( vget_low_f32(v2), vLo);\n        xy3 = vmul_f32( vget_low_f32(v3), vLo);\n        \n        z0 = vtrn_f32( vget_high_f32(v0), vget_high_f32(v1));\n        z1 = vtrn_f32( vget_high_f32(v2), vget_high_f32(v3));\n        zLo = vmul_f32( z0.val[0], vHi);\n        zHi = vmul_f32( z1.val[0], vHi);\n        \n        rLo = vpadd_f32( xy0, xy1);\n        rHi = vpadd_f32( xy2, xy3);\n        rLo = vadd_f32(rLo, zLo);\n        rHi = vadd_f32(rHi, zHi);\n        \n        maskLo = vclt_f32( rLo, dotMinLo );\n        maskHi = vclt_f32( rHi, dotMinHi );\n        dotMinLo = vbsl_f32( maskLo, rLo, dotMinLo);\n        dotMinHi = vbsl_f32( maskHi, rHi, dotMinHi);\n        iLo = vbsl_u32(maskLo, indexLo, iLo);\n        iHi = vbsl_u32(maskHi, indexHi, iHi);\n        indexLo = vadd_u32(indexLo, four);\n        indexHi = vadd_u32(indexHi, four);\n    }\n\n    for( ; i+4 <= count; i+= 4 )\n    {\n        float32x4_t v0 = vld1q_f32_aligned_postincrement( vv );\n        float32x4_t v1 = vld1q_f32_aligned_postincrement( vv );\n        float32x4_t v2 = vld1q_f32_aligned_postincrement( vv );\n        float32x4_t v3 = vld1q_f32_aligned_postincrement( vv );\n        \n        float32x2_t xy0 = vmul_f32( vget_low_f32(v0), vLo);\n        float32x2_t xy1 = vmul_f32( vget_low_f32(v1), vLo);\n        float32x2_t xy2 = vmul_f32( vget_low_f32(v2), vLo);\n        float32x2_t xy3 = vmul_f32( vget_low_f32(v3), vLo);\n        \n        float32x2x2_t z0 = vtrn_f32( vget_high_f32(v0), vget_high_f32(v1));\n        float32x2x2_t z1 = vtrn_f32( vget_high_f32(v2), vget_high_f32(v3));\n        float32x2_t zLo = vmul_f32( z0.val[0], vHi);\n        float32x2_t zHi = vmul_f32( z1.val[0], vHi);\n        \n        float32x2_t rLo = vpadd_f32( xy0, xy1);\n        float32x2_t rHi = vpadd_f32( xy2, xy3);\n        rLo = vadd_f32(rLo, zLo);\n        rHi = vadd_f32(rHi, zHi);\n        \n        uint32x2_t maskLo = vclt_f32( rLo, dotMinLo );\n        uint32x2_t maskHi = vclt_f32( rHi, dotMinHi );\n        dotMinLo = vbsl_f32( maskLo, rLo, dotMinLo);\n        dotMinHi = vbsl_f32( maskHi, rHi, dotMinHi);\n        iLo = vbsl_u32(maskLo, indexLo, iLo);\n        iHi = vbsl_u32(maskHi, indexHi, iHi);\n        indexLo = vadd_u32(indexLo, four);\n        indexHi = vadd_u32(indexHi, four);\n    }\n    switch( count & 3 )\n    {\n        case 3:\n        {\n            float32x4_t v0 = vld1q_f32_aligned_postincrement( vv );\n            float32x4_t v1 = vld1q_f32_aligned_postincrement( vv );\n            float32x4_t v2 = vld1q_f32_aligned_postincrement( vv );\n            \n            float32x2_t xy0 = vmul_f32( vget_low_f32(v0), vLo);\n            float32x2_t xy1 = vmul_f32( vget_low_f32(v1), vLo);\n            float32x2_t xy2 = vmul_f32( vget_low_f32(v2), vLo);\n            \n            float32x2x2_t z0 = vtrn_f32( vget_high_f32(v0), vget_high_f32(v1));\n            float32x2_t zLo = vmul_f32( z0.val[0], vHi);\n            float32x2_t zHi = vmul_f32( vdup_lane_f32(vget_high_f32(v2), 0), vHi);\n            \n            float32x2_t rLo = vpadd_f32( xy0, xy1);\n            float32x2_t rHi = vpadd_f32( xy2, xy2);\n            rLo = vadd_f32(rLo, zLo);\n            rHi = vadd_f32(rHi, zHi);\n            \n            uint32x2_t maskLo = vclt_f32( rLo, dotMinLo );\n            uint32x2_t maskHi = vclt_f32( rHi, dotMinHi );\n            dotMinLo = vbsl_f32( maskLo, rLo, dotMinLo);\n            dotMinHi = vbsl_f32( maskHi, rHi, dotMinHi);\n            iLo = vbsl_u32(maskLo, indexLo, iLo);\n            iHi = vbsl_u32(maskHi, indexHi, iHi);\n        }\n            break;\n        case 2:\n        {\n            float32x4_t v0 = vld1q_f32_aligned_postincrement( vv );\n            float32x4_t v1 = vld1q_f32_aligned_postincrement( vv );\n            \n            float32x2_t xy0 = vmul_f32( vget_low_f32(v0), vLo);\n            float32x2_t xy1 = vmul_f32( vget_low_f32(v1), vLo);\n            \n            float32x2x2_t z0 = vtrn_f32( vget_high_f32(v0), vget_high_f32(v1));\n            float32x2_t zLo = vmul_f32( z0.val[0], vHi);\n            \n            float32x2_t rLo = vpadd_f32( xy0, xy1);\n            rLo = vadd_f32(rLo, zLo);\n            \n            uint32x2_t maskLo = vclt_f32( rLo, dotMinLo );\n            dotMinLo = vbsl_f32( maskLo, rLo, dotMinLo);\n            iLo = vbsl_u32(maskLo, indexLo, iLo);\n        }\n            break;\n        case 1:\n        {\n            float32x4_t v0 = vld1q_f32_aligned_postincrement( vv );\n            float32x2_t xy0 = vmul_f32( vget_low_f32(v0), vLo);\n            float32x2_t z0 = vdup_lane_f32(vget_high_f32(v0), 0);\n            float32x2_t zLo = vmul_f32( z0, vHi);\n            float32x2_t rLo = vpadd_f32( xy0, xy0);\n            rLo = vadd_f32(rLo, zLo);\n            uint32x2_t maskLo = vclt_f32( rLo, dotMinLo );\n            dotMinLo = vbsl_f32( maskLo, rLo, dotMinLo);\n            iLo = vbsl_u32(maskLo, indexLo, iLo);\n        }\n            break;\n            \n        default:\n            break;\n    }\n    \n    // select best answer between hi and lo results\n    uint32x2_t mask = vclt_f32( dotMinHi, dotMinLo );\n    dotMinLo = vbsl_f32(mask, dotMinHi, dotMinLo);\n    iLo = vbsl_u32(mask, iHi, iLo);\n    \n    // select best answer between even and odd results\n    dotMinHi = vdup_lane_f32(dotMinLo, 1);\n    iHi = vdup_lane_u32(iLo, 1);\n    mask = vclt_f32( dotMinHi, dotMinLo );\n    dotMinLo = vbsl_f32(mask, dotMinHi, dotMinLo);\n    iLo = vbsl_u32(mask, iHi, iLo);\n    \n    *dotResult = vget_lane_f32( dotMinLo, 0);\n    return vget_lane_u32(iLo, 0);\n}\n\nlong _mindot_large_v1( const float *vv, const float *vec, unsigned long count, float *dotResult )\n{\n    float32x4_t vvec = vld1q_f32_aligned_postincrement( vec );\n    float32x4_t vLo = vcombine_f32(vget_low_f32(vvec), vget_low_f32(vvec));\n    float32x4_t vHi = vdupq_lane_f32(vget_high_f32(vvec), 0);\n    const uint32x4_t four = (uint32x4_t){ 4, 4, 4, 4 };\n    uint32x4_t local_index = (uint32x4_t) {0, 1, 2, 3};\n    uint32x4_t index = (uint32x4_t) { -1, -1, -1, -1 };\n    float32x4_t minDot = (float32x4_t) { BT_INFINITY, BT_INFINITY, BT_INFINITY, BT_INFINITY };\n    \n    unsigned long i = 0;\n    for( ; i + 8 <= count; i += 8 )\n    {\n        float32x4_t v0 = vld1q_f32_aligned_postincrement( vv );\n        float32x4_t v1 = vld1q_f32_aligned_postincrement( vv );\n        float32x4_t v2 = vld1q_f32_aligned_postincrement( vv );\n        float32x4_t v3 = vld1q_f32_aligned_postincrement( vv );\n        \n        // the next two lines should resolve to a single vswp d, d\n        float32x4_t xy0 = vcombine_f32( vget_low_f32(v0), vget_low_f32(v1));\n        float32x4_t xy1 = vcombine_f32( vget_low_f32(v2), vget_low_f32(v3));\n        // the next two lines should resolve to a single vswp d, d\n        float32x4_t z0 = vcombine_f32( vget_high_f32(v0), vget_high_f32(v1));\n        float32x4_t z1 = vcombine_f32( vget_high_f32(v2), vget_high_f32(v3));\n        \n        xy0 = vmulq_f32(xy0, vLo);\n        xy1 = vmulq_f32(xy1, vLo);\n        \n        float32x4x2_t zb = vuzpq_f32( z0, z1);\n        float32x4_t z = vmulq_f32( zb.val[0], vHi);\n        float32x4x2_t xy = vuzpq_f32( xy0, xy1);\n        float32x4_t x = vaddq_f32(xy.val[0], xy.val[1]);\n        x = vaddq_f32(x, z);\n        \n        uint32x4_t mask = vcltq_f32(x, minDot);\n        minDot = vbslq_f32( mask, x, minDot);\n        index = vbslq_u32(mask, local_index, index);\n        local_index = vaddq_u32(local_index, four);\n        \n        v0 = vld1q_f32_aligned_postincrement( vv );\n        v1 = vld1q_f32_aligned_postincrement( vv );\n        v2 = vld1q_f32_aligned_postincrement( vv );\n        v3 = vld1q_f32_aligned_postincrement( vv );\n        \n        // the next two lines should resolve to a single vswp d, d\n        xy0 = vcombine_f32( vget_low_f32(v0), vget_low_f32(v1));\n        xy1 = vcombine_f32( vget_low_f32(v2), vget_low_f32(v3));\n        // the next two lines should resolve to a single vswp d, d\n        z0 = vcombine_f32( vget_high_f32(v0), vget_high_f32(v1));\n        z1 = vcombine_f32( vget_high_f32(v2), vget_high_f32(v3));\n        \n        xy0 = vmulq_f32(xy0, vLo);\n        xy1 = vmulq_f32(xy1, vLo);\n        \n        zb = vuzpq_f32( z0, z1);\n        z = vmulq_f32( zb.val[0], vHi);\n        xy = vuzpq_f32( xy0, xy1);\n        x = vaddq_f32(xy.val[0], xy.val[1]);\n        x = vaddq_f32(x, z);\n        \n        mask = vcltq_f32(x, minDot);\n        minDot = vbslq_f32( mask, x, minDot);\n        index = vbslq_u32(mask, local_index, index);\n        local_index = vaddq_u32(local_index, four);\n    }\n    \n    for( ; i + 4 <= count; i += 4 )\n    {\n        float32x4_t v0 = vld1q_f32_aligned_postincrement( vv );\n        float32x4_t v1 = vld1q_f32_aligned_postincrement( vv );\n        float32x4_t v2 = vld1q_f32_aligned_postincrement( vv );\n        float32x4_t v3 = vld1q_f32_aligned_postincrement( vv );\n        \n        // the next two lines should resolve to a single vswp d, d\n        float32x4_t xy0 = vcombine_f32( vget_low_f32(v0), vget_low_f32(v1));\n        float32x4_t xy1 = vcombine_f32( vget_low_f32(v2), vget_low_f32(v3));\n        // the next two lines should resolve to a single vswp d, d\n        float32x4_t z0 = vcombine_f32( vget_high_f32(v0), vget_high_f32(v1));\n        float32x4_t z1 = vcombine_f32( vget_high_f32(v2), vget_high_f32(v3));\n        \n        xy0 = vmulq_f32(xy0, vLo);\n        xy1 = vmulq_f32(xy1, vLo);\n        \n        float32x4x2_t zb = vuzpq_f32( z0, z1);\n        float32x4_t z = vmulq_f32( zb.val[0], vHi);\n        float32x4x2_t xy = vuzpq_f32( xy0, xy1);\n        float32x4_t x = vaddq_f32(xy.val[0], xy.val[1]);\n        x = vaddq_f32(x, z);\n        \n        uint32x4_t mask = vcltq_f32(x, minDot);\n        minDot = vbslq_f32( mask, x, minDot);\n        index = vbslq_u32(mask, local_index, index);\n        local_index = vaddq_u32(local_index, four);\n    }\n    \n    switch (count & 3) {\n        case 3:\n        {\n            float32x4_t v0 = vld1q_f32_aligned_postincrement( vv );\n            float32x4_t v1 = vld1q_f32_aligned_postincrement( vv );\n            float32x4_t v2 = vld1q_f32_aligned_postincrement( vv );\n            \n            // the next two lines should resolve to a single vswp d, d\n            float32x4_t xy0 = vcombine_f32( vget_low_f32(v0), vget_low_f32(v1));\n            float32x4_t xy1 = vcombine_f32( vget_low_f32(v2), vget_low_f32(v2));\n            // the next two lines should resolve to a single vswp d, d\n            float32x4_t z0 = vcombine_f32( vget_high_f32(v0), vget_high_f32(v1));\n            float32x4_t z1 = vcombine_f32( vget_high_f32(v2), vget_high_f32(v2));\n            \n            xy0 = vmulq_f32(xy0, vLo);\n            xy1 = vmulq_f32(xy1, vLo);\n            \n            float32x4x2_t zb = vuzpq_f32( z0, z1);\n            float32x4_t z = vmulq_f32( zb.val[0], vHi);\n            float32x4x2_t xy = vuzpq_f32( xy0, xy1);\n            float32x4_t x = vaddq_f32(xy.val[0], xy.val[1]);\n            x = vaddq_f32(x, z);\n            \n            uint32x4_t mask = vcltq_f32(x, minDot);\n            minDot = vbslq_f32( mask, x, minDot);\n            index = vbslq_u32(mask, local_index, index);\n            local_index = vaddq_u32(local_index, four);\n        }\n            break;\n            \n        case 2:\n        {\n            float32x4_t v0 = vld1q_f32_aligned_postincrement( vv );\n            float32x4_t v1 = vld1q_f32_aligned_postincrement( vv );\n            \n            // the next two lines should resolve to a single vswp d, d\n            float32x4_t xy0 = vcombine_f32( vget_low_f32(v0), vget_low_f32(v1));\n            // the next two lines should resolve to a single vswp d, d\n            float32x4_t z0 = vcombine_f32( vget_high_f32(v0), vget_high_f32(v1));\n            \n            xy0 = vmulq_f32(xy0, vLo);\n            \n            float32x4x2_t zb = vuzpq_f32( z0, z0);\n            float32x4_t z = vmulq_f32( zb.val[0], vHi);\n            float32x4x2_t xy = vuzpq_f32( xy0, xy0);\n            float32x4_t x = vaddq_f32(xy.val[0], xy.val[1]);\n            x = vaddq_f32(x, z);\n            \n            uint32x4_t mask = vcltq_f32(x, minDot);\n            minDot = vbslq_f32( mask, x, minDot);\n            index = vbslq_u32(mask, local_index, index);\n            local_index = vaddq_u32(local_index, four);\n        }\n            break;\n            \n        case 1:\n        {\n            float32x4_t v0 = vld1q_f32_aligned_postincrement( vv );\n            \n            // the next two lines should resolve to a single vswp d, d\n            float32x4_t xy0 = vcombine_f32( vget_low_f32(v0), vget_low_f32(v0));\n            // the next two lines should resolve to a single vswp d, d\n            float32x4_t z = vdupq_lane_f32(vget_high_f32(v0), 0); \n            \n            xy0 = vmulq_f32(xy0, vLo);\n            \n            z = vmulq_f32( z, vHi);\n            float32x4x2_t xy = vuzpq_f32( xy0, xy0);\n            float32x4_t x = vaddq_f32(xy.val[0], xy.val[1]);\n            x = vaddq_f32(x, z);\n            \n            uint32x4_t mask = vcltq_f32(x, minDot);\n            minDot = vbslq_f32( mask, x, minDot);\n            index = vbslq_u32(mask, local_index, index);\n            local_index = vaddq_u32(local_index, four);\n        }\n            break;\n            \n        default:\n            break;\n    }\n    \n    \n    // select best answer between hi and lo results\n    uint32x2_t mask = vclt_f32( vget_high_f32(minDot), vget_low_f32(minDot));\n    float32x2_t minDot2 = vbsl_f32(mask, vget_high_f32(minDot), vget_low_f32(minDot));\n    uint32x2_t index2 = vbsl_u32(mask, vget_high_u32(index), vget_low_u32(index));\n    \n    // select best answer between even and odd results\n    float32x2_t minDotO = vdup_lane_f32(minDot2, 1);\n    uint32x2_t indexHi = vdup_lane_u32(index2, 1);\n    mask = vclt_f32( minDotO, minDot2 );\n    minDot2 = vbsl_f32(mask, minDotO, minDot2);\n    index2 = vbsl_u32(mask, indexHi, index2);\n    \n    *dotResult = vget_lane_f32( minDot2, 0);\n    return vget_lane_u32(index2, 0);\n    \n}\n\n#else\n    #error Unhandled __APPLE__ arch\n#endif\n\n#endif  /* __APPLE__ */\n\n\n"
  },
  {
    "path": "Sources/NativeDAABBTree/LinearMath/btVector3.h",
    "content": "/*\nCopyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n\n\n#ifndef BT_VECTOR3_H\n#define BT_VECTOR3_H\n\n//#include <stdint.h>\n#include \"btScalar.h\"\n#include \"btMinMax.h\"\n#include \"btAlignedAllocator.h\"\n\n#ifdef BT_USE_DOUBLE_PRECISION\n#define btVector3Data btVector3DoubleData\n#define btVector3DataName \"btVector3DoubleData\"\n#else\n#define btVector3Data btVector3FloatData\n#define btVector3DataName \"btVector3FloatData\"\n#endif //BT_USE_DOUBLE_PRECISION\n\n#if defined BT_USE_SSE\n\n//typedef  uint32_t __m128i __attribute__ ((vector_size(16)));\n\n#ifdef _MSC_VER\n#pragma warning(disable: 4556) // value of intrinsic immediate argument '4294967239' is out of range '0 - 255'\n#endif\n\n\n#define BT_SHUFFLE(x,y,z,w) ((w)<<6 | (z)<<4 | (y)<<2 | (x))\n//#define bt_pshufd_ps( _a, _mask ) (__m128) _mm_shuffle_epi32((__m128i)(_a), (_mask) )\n#define bt_pshufd_ps( _a, _mask ) _mm_shuffle_ps((_a), (_a), (_mask) )\n#define bt_splat3_ps( _a, _i ) bt_pshufd_ps((_a), BT_SHUFFLE(_i,_i,_i, 3) )\n#define bt_splat_ps( _a, _i )  bt_pshufd_ps((_a), BT_SHUFFLE(_i,_i,_i,_i) )\n\n#define btv3AbsiMask (_mm_set_epi32(0x00000000, 0x7FFFFFFF, 0x7FFFFFFF, 0x7FFFFFFF))\n#define btvAbsMask (_mm_set_epi32( 0x7FFFFFFF, 0x7FFFFFFF, 0x7FFFFFFF, 0x7FFFFFFF))\n#define btvFFF0Mask (_mm_set_epi32(0x00000000, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF))\n#define btv3AbsfMask btCastiTo128f(btv3AbsiMask)\n#define btvFFF0fMask btCastiTo128f(btvFFF0Mask)\n#define btvxyzMaskf btvFFF0fMask\n#define btvAbsfMask btCastiTo128f(btvAbsMask)\n\n\n\nconst __m128 ATTRIBUTE_ALIGNED16(btvMzeroMask) = {-0.0f, -0.0f, -0.0f, -0.0f};\nconst __m128 ATTRIBUTE_ALIGNED16(v1110) = {1.0f, 1.0f, 1.0f, 0.0f};\nconst __m128 ATTRIBUTE_ALIGNED16(vHalf) = {0.5f, 0.5f, 0.5f, 0.5f};\nconst __m128 ATTRIBUTE_ALIGNED16(v1_5)  = {1.5f, 1.5f, 1.5f, 1.5f};\n\n#endif\n\n#ifdef BT_USE_NEON\n\nconst float32x4_t ATTRIBUTE_ALIGNED16(btvMzeroMask) = (float32x4_t){-0.0f, -0.0f, -0.0f, -0.0f};\nconst int32x4_t ATTRIBUTE_ALIGNED16(btvFFF0Mask) = (int32x4_t){0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x0};\nconst int32x4_t ATTRIBUTE_ALIGNED16(btvAbsMask) = (int32x4_t){0x7FFFFFFF, 0x7FFFFFFF, 0x7FFFFFFF, 0x7FFFFFFF};\nconst int32x4_t ATTRIBUTE_ALIGNED16(btv3AbsMask) = (int32x4_t){0x7FFFFFFF, 0x7FFFFFFF, 0x7FFFFFFF, 0x0};\n\n#endif\n\n/**@brief btVector3 can be used to represent 3D points and vectors.\n * It has an un-used w component to suit 16-byte alignment when btVector3 is stored in containers. This extra component can be used by derived classes (Quaternion?) or by user\n * Ideally, this class should be replaced by a platform optimized SIMD version that keeps the data in registers\n */\nATTRIBUTE_ALIGNED16(class) btVector3\n{\npublic:\n\n\tBT_DECLARE_ALIGNED_ALLOCATOR();\n\n#if defined (__SPU__) && defined (__CELLOS_LV2__)\n\t\tbtScalar\tm_floats[4];\npublic:\n\tSIMD_FORCE_INLINE const vec_float4&\tget128() const\n\t{\n\t\treturn *((const vec_float4*)&m_floats[0]);\n\t}\npublic:\n#else //__CELLOS_LV2__ __SPU__\n    #if defined (BT_USE_SSE) || defined(BT_USE_NEON) // _WIN32 || ARM\n        union {\n            btSimdFloat4      mVec128;\n            btScalar\tm_floats[4];\n        };\n        SIMD_FORCE_INLINE\tbtSimdFloat4\tget128() const\n        {\n            return mVec128;\n        }\n        SIMD_FORCE_INLINE\tvoid\tset128(btSimdFloat4 v128)\n        {\n            mVec128 = v128;\n        }\n    #else\n        btScalar\tm_floats[4];\n    #endif\n#endif //__CELLOS_LV2__ __SPU__\n\n\tpublic:\n\n  /**@brief No initialization constructor */\n\tSIMD_FORCE_INLINE btVector3() \n\t{\n\n\t}\n\n \n\t\n  /**@brief Constructor from scalars \n   * @param x X value\n   * @param y Y value \n   * @param z Z value \n   */\n\tSIMD_FORCE_INLINE btVector3(const btScalar& _x, const btScalar& _y, const btScalar& _z)\n\t{\n\t\tm_floats[0] = _x;\n\t\tm_floats[1] = _y;\n\t\tm_floats[2] = _z;\n\t\tm_floats[3] = btScalar(0.f);\n\t}\n\n#if (defined (BT_USE_SSE_IN_API) && defined (BT_USE_SSE) )|| defined (BT_USE_NEON)\n\t// Set Vector \n\tSIMD_FORCE_INLINE btVector3( btSimdFloat4 v)\n\t{\n\t\tmVec128 = v;\n\t}\n\n\t// Copy constructor\n\tSIMD_FORCE_INLINE btVector3(const btVector3& rhs)\n\t{\n\t\tmVec128 = rhs.mVec128;\n\t}\n\n\t// Assignment Operator\n\tSIMD_FORCE_INLINE btVector3& \n\toperator=(const btVector3& v) \n\t{\n\t\tmVec128 = v.mVec128;\n\t\t\n\t\treturn *this;\n\t}\n#endif // #if defined (BT_USE_SSE_IN_API) || defined (BT_USE_NEON) \n    \n/**@brief Add a vector to this one \n * @param The vector to add to this one */\n\tSIMD_FORCE_INLINE btVector3& operator+=(const btVector3& v)\n\t{\n#if defined(BT_USE_SSE_IN_API) && defined (BT_USE_SSE)\n\t\tmVec128 = _mm_add_ps(mVec128, v.mVec128);\n#elif defined(BT_USE_NEON)\n\t\tmVec128 = vaddq_f32(mVec128, v.mVec128);\n#else\n\t\tm_floats[0] += v.m_floats[0]; \n\t\tm_floats[1] += v.m_floats[1];\n\t\tm_floats[2] += v.m_floats[2];\n#endif\n\t\treturn *this;\n\t}\n\n\n  /**@brief Subtract a vector from this one\n   * @param The vector to subtract */\n\tSIMD_FORCE_INLINE btVector3& operator-=(const btVector3& v) \n\t{\n#if defined(BT_USE_SSE_IN_API) && defined (BT_USE_SSE)\n\t\tmVec128 = _mm_sub_ps(mVec128, v.mVec128);\n#elif defined(BT_USE_NEON)\n\t\tmVec128 = vsubq_f32(mVec128, v.mVec128);\n#else\n\t\tm_floats[0] -= v.m_floats[0]; \n\t\tm_floats[1] -= v.m_floats[1];\n\t\tm_floats[2] -= v.m_floats[2];\n#endif\n\t\treturn *this;\n\t}\n\t\n  /**@brief Scale the vector\n   * @param s Scale factor */\n\tSIMD_FORCE_INLINE btVector3& operator*=(const btScalar& s)\n\t{\n#if defined(BT_USE_SSE_IN_API) && defined (BT_USE_SSE)\n\t\t__m128\tvs = _mm_load_ss(&s);\t//\t(S 0 0 0)\n\t\tvs = bt_pshufd_ps(vs, 0x80);\t//\t(S S S 0.0)\n\t\tmVec128 = _mm_mul_ps(mVec128, vs);\n#elif defined(BT_USE_NEON)\n\t\tmVec128 = vmulq_n_f32(mVec128, s);\n#else\n\t\tm_floats[0] *= s; \n\t\tm_floats[1] *= s;\n\t\tm_floats[2] *= s;\n#endif\n\t\treturn *this;\n\t}\n\n  /**@brief Inversely scale the vector \n   * @param s Scale factor to divide by */\n\tSIMD_FORCE_INLINE btVector3& operator/=(const btScalar& s) \n\t{\n\t\tbtFullAssert(s != btScalar(0.0));\n\n#if 0 //defined(BT_USE_SSE_IN_API)\n// this code is not faster !\n\t\t__m128 vs = _mm_load_ss(&s);\n\t\tvs = _mm_div_ss(v1110, vs);\n\t\tvs = bt_pshufd_ps(vs, 0x00);\t//\t(S S S S)\n\n\t\tmVec128 = _mm_mul_ps(mVec128, vs);\n\t\t\n\t\treturn *this;\n#else\n\t\treturn *this *= btScalar(1.0) / s;\n#endif\n\t}\n\n  /**@brief Return the dot product\n   * @param v The other vector in the dot product */\n\tSIMD_FORCE_INLINE btScalar dot(const btVector3& v) const\n\t{\n#if defined(BT_USE_SSE_IN_API) && defined (BT_USE_SSE)\t\t\n\t\t__m128 vd = _mm_mul_ps(mVec128, v.mVec128);\n\t\t__m128 z = _mm_movehl_ps(vd, vd);\n\t\t__m128 y = _mm_shuffle_ps(vd, vd, 0x55);\n\t\tvd = _mm_add_ss(vd, y);\n\t\tvd = _mm_add_ss(vd, z);\n\t\treturn _mm_cvtss_f32(vd);\n#elif defined(BT_USE_NEON)\n\t\tfloat32x4_t vd = vmulq_f32(mVec128, v.mVec128);\n\t\tfloat32x2_t x = vpadd_f32(vget_low_f32(vd), vget_low_f32(vd));  \n\t\tx = vadd_f32(x, vget_high_f32(vd));\n\t\treturn vget_lane_f32(x, 0);\n#else\t\n\t\treturn\tm_floats[0] * v.m_floats[0] + \n\t\t\t\tm_floats[1] * v.m_floats[1] + \n\t\t\t\tm_floats[2] * v.m_floats[2];\n#endif\n\t}\n\n  /**@brief Return the length of the vector squared */\n\tSIMD_FORCE_INLINE btScalar length2() const\n\t{\n\t\treturn dot(*this);\n\t}\n\n  /**@brief Return the length of the vector */\n\tSIMD_FORCE_INLINE btScalar length() const\n\t{\n\t\treturn btSqrt(length2());\n\t}\n\n  /**@brief Return the distance squared between the ends of this and another vector\n   * This is symantically treating the vector like a point */\n\tSIMD_FORCE_INLINE btScalar distance2(const btVector3& v) const;\n\n  /**@brief Return the distance between the ends of this and another vector\n   * This is symantically treating the vector like a point */\n\tSIMD_FORCE_INLINE btScalar distance(const btVector3& v) const;\n\n\tSIMD_FORCE_INLINE btVector3& safeNormalize() \n\t{\n\t\tbtVector3 absVec = this->absolute();\n\t\tint maxIndex = absVec.maxAxis();\n\t\tif (absVec[maxIndex]>0)\n\t\t{\n\t\t\t*this /= absVec[maxIndex];\n\t\t\treturn *this /= length();\n\t\t}\n\t\tsetValue(1,0,0);\n\t\treturn *this;\n\t}\n\n  /**@brief Normalize this vector \n   * x^2 + y^2 + z^2 = 1 */\n\tSIMD_FORCE_INLINE btVector3& normalize() \n\t{\n#if defined(BT_USE_SSE_IN_API) && defined (BT_USE_SSE)\t\t\n        // dot product first\n\t\t__m128 vd = _mm_mul_ps(mVec128, mVec128);\n\t\t__m128 z = _mm_movehl_ps(vd, vd);\n\t\t__m128 y = _mm_shuffle_ps(vd, vd, 0x55);\n\t\tvd = _mm_add_ss(vd, y);\n\t\tvd = _mm_add_ss(vd, z);\n\t\t\n        #if 0\n        vd = _mm_sqrt_ss(vd);\n\t\tvd = _mm_div_ss(v1110, vd);\n\t\tvd = bt_splat_ps(vd, 0x80);\n\t\tmVec128 = _mm_mul_ps(mVec128, vd);\n        #else\n        \n        // NR step 1/sqrt(x) - vd is x, y is output \n        y = _mm_rsqrt_ss(vd); // estimate \n        \n        //  one step NR \n        z = v1_5;\n        vd = _mm_mul_ss(vd, vHalf); // vd * 0.5\t\n        //x2 = vd;\n        vd = _mm_mul_ss(vd, y); // vd * 0.5 * y0\n        vd = _mm_mul_ss(vd, y); // vd * 0.5 * y0 * y0\n        z = _mm_sub_ss(z, vd);  // 1.5 - vd * 0.5 * y0 * y0 \n\n        y = _mm_mul_ss(y, z);   // y0 * (1.5 - vd * 0.5 * y0 * y0)\n\n\t\ty = bt_splat_ps(y, 0x80);\n\t\tmVec128 = _mm_mul_ps(mVec128, y);\n\n        #endif\n\n\t\t\n\t\treturn *this;\n#else\t\n\t\treturn *this /= length();\n#endif\n\t}\n\n  /**@brief Return a normalized version of this vector */\n\tSIMD_FORCE_INLINE btVector3 normalized() const;\n\n  /**@brief Return a rotated version of this vector\n   * @param wAxis The axis to rotate about \n   * @param angle The angle to rotate by */\n\tSIMD_FORCE_INLINE btVector3 rotate( const btVector3& wAxis, const btScalar angle ) const;\n\n  /**@brief Return the angle between this and another vector\n   * @param v The other vector */\n\tSIMD_FORCE_INLINE btScalar angle(const btVector3& v) const \n\t{\n\t\tbtScalar s = btSqrt(length2() * v.length2());\n\t\tbtFullAssert(s != btScalar(0.0));\n\t\treturn btAcos(dot(v) / s);\n\t}\n\t\n  /**@brief Return a vector will the absolute values of each element */\n\tSIMD_FORCE_INLINE btVector3 absolute() const \n\t{\n#if defined(BT_USE_SSE_IN_API) && defined (BT_USE_SSE) \n\t\treturn btVector3(_mm_and_ps(mVec128, btv3AbsfMask));\n#elif defined(BT_USE_NEON)\n\t\treturn btVector3(vabsq_f32(mVec128));\n#else\t\n\t\treturn btVector3(\n\t\t\tbtFabs(m_floats[0]), \n\t\t\tbtFabs(m_floats[1]), \n\t\t\tbtFabs(m_floats[2]));\n#endif\n\t}\n\t\n  /**@brief Return the cross product between this and another vector \n   * @param v The other vector */\n\tSIMD_FORCE_INLINE btVector3 cross(const btVector3& v) const\n\t{\n#if defined(BT_USE_SSE_IN_API) && defined (BT_USE_SSE)\n\t\t__m128\tT, V;\n\t\t\n\t\tT = bt_pshufd_ps(mVec128, BT_SHUFFLE(1, 2, 0, 3));\t//\t(Y Z X 0)\n\t\tV = bt_pshufd_ps(v.mVec128, BT_SHUFFLE(1, 2, 0, 3));\t//\t(Y Z X 0)\n\t\t\n\t\tV = _mm_mul_ps(V, mVec128);\n\t\tT = _mm_mul_ps(T, v.mVec128);\n\t\tV = _mm_sub_ps(V, T);\n\t\t\n\t\tV = bt_pshufd_ps(V, BT_SHUFFLE(1, 2, 0, 3));\n\t\treturn btVector3(V);\n#elif defined(BT_USE_NEON)\n\t\tfloat32x4_t T, V;\n\t\t// form (Y, Z, X, _) of mVec128 and v.mVec128\n\t\tfloat32x2_t Tlow = vget_low_f32(mVec128);\n\t\tfloat32x2_t Vlow = vget_low_f32(v.mVec128);\n\t\tT = vcombine_f32(vext_f32(Tlow, vget_high_f32(mVec128), 1), Tlow);\n\t\tV = vcombine_f32(vext_f32(Vlow, vget_high_f32(v.mVec128), 1), Vlow);\n\t\t\n\t\tV = vmulq_f32(V, mVec128);\n\t\tT = vmulq_f32(T, v.mVec128);\n\t\tV = vsubq_f32(V, T);\n\t\tVlow = vget_low_f32(V);\n\t\t// form (Y, Z, X, _);\n\t\tV = vcombine_f32(vext_f32(Vlow, vget_high_f32(V), 1), Vlow);\n\t\tV = (float32x4_t)vandq_s32((int32x4_t)V, btvFFF0Mask);\n\t\t\n\t\treturn btVector3(V);\n#else\n\t\treturn btVector3(\n\t\t\tm_floats[1] * v.m_floats[2] - m_floats[2] * v.m_floats[1],\n\t\t\tm_floats[2] * v.m_floats[0] - m_floats[0] * v.m_floats[2],\n\t\t\tm_floats[0] * v.m_floats[1] - m_floats[1] * v.m_floats[0]);\n#endif\n\t}\n\n\tSIMD_FORCE_INLINE btScalar triple(const btVector3& v1, const btVector3& v2) const\n\t{\n#if defined(BT_USE_SSE_IN_API) && defined (BT_USE_SSE)\n\t\t// cross:\n\t\t__m128 T = _mm_shuffle_ps(v1.mVec128, v1.mVec128, BT_SHUFFLE(1, 2, 0, 3));\t//\t(Y Z X 0)\n\t\t__m128 V = _mm_shuffle_ps(v2.mVec128, v2.mVec128, BT_SHUFFLE(1, 2, 0, 3));\t//\t(Y Z X 0)\n\t\t\n\t\tV = _mm_mul_ps(V, v1.mVec128);\n\t\tT = _mm_mul_ps(T, v2.mVec128);\n\t\tV = _mm_sub_ps(V, T);\n\t\t\n\t\tV = _mm_shuffle_ps(V, V, BT_SHUFFLE(1, 2, 0, 3));\n\n\t\t// dot: \n\t\tV = _mm_mul_ps(V, mVec128);\n\t\t__m128 z = _mm_movehl_ps(V, V);\n\t\t__m128 y = _mm_shuffle_ps(V, V, 0x55);\n\t\tV = _mm_add_ss(V, y);\n\t\tV = _mm_add_ss(V, z);\n\t\treturn _mm_cvtss_f32(V);\n\n#elif defined(BT_USE_NEON)\n\t\t// cross:\n\t\tfloat32x4_t T, V;\n\t\t// form (Y, Z, X, _) of mVec128 and v.mVec128\n\t\tfloat32x2_t Tlow = vget_low_f32(v1.mVec128);\n\t\tfloat32x2_t Vlow = vget_low_f32(v2.mVec128);\n\t\tT = vcombine_f32(vext_f32(Tlow, vget_high_f32(v1.mVec128), 1), Tlow);\n\t\tV = vcombine_f32(vext_f32(Vlow, vget_high_f32(v2.mVec128), 1), Vlow);\n\t\t\n\t\tV = vmulq_f32(V, v1.mVec128);\n\t\tT = vmulq_f32(T, v2.mVec128);\n\t\tV = vsubq_f32(V, T);\n\t\tVlow = vget_low_f32(V);\n\t\t// form (Y, Z, X, _);\n\t\tV = vcombine_f32(vext_f32(Vlow, vget_high_f32(V), 1), Vlow);\n\n\t\t// dot: \n\t\tV = vmulq_f32(mVec128, V);\n\t\tfloat32x2_t x = vpadd_f32(vget_low_f32(V), vget_low_f32(V));  \n\t\tx = vadd_f32(x, vget_high_f32(V));\n\t\treturn vget_lane_f32(x, 0);\n#else\n\t\treturn \n\t\t\tm_floats[0] * (v1.m_floats[1] * v2.m_floats[2] - v1.m_floats[2] * v2.m_floats[1]) + \n\t\t\tm_floats[1] * (v1.m_floats[2] * v2.m_floats[0] - v1.m_floats[0] * v2.m_floats[2]) + \n\t\t\tm_floats[2] * (v1.m_floats[0] * v2.m_floats[1] - v1.m_floats[1] * v2.m_floats[0]);\n#endif\n\t}\n\n  /**@brief Return the axis with the smallest value \n   * Note return values are 0,1,2 for x, y, or z */\n\tSIMD_FORCE_INLINE int minAxis() const\n\t{\n\t\treturn m_floats[0] < m_floats[1] ? (m_floats[0] <m_floats[2] ? 0 : 2) : (m_floats[1] <m_floats[2] ? 1 : 2);\n\t}\n\n  /**@brief Return the axis with the largest value \n   * Note return values are 0,1,2 for x, y, or z */\n\tSIMD_FORCE_INLINE int maxAxis() const \n\t{\n\t\treturn m_floats[0] < m_floats[1] ? (m_floats[1] <m_floats[2] ? 2 : 1) : (m_floats[0] <m_floats[2] ? 2 : 0);\n\t}\n\n\tSIMD_FORCE_INLINE int furthestAxis() const\n\t{\n\t\treturn absolute().minAxis();\n\t}\n\n\tSIMD_FORCE_INLINE int closestAxis() const \n\t{\n\t\treturn absolute().maxAxis();\n\t}\n\n\t\n\tSIMD_FORCE_INLINE void setInterpolate3(const btVector3& v0, const btVector3& v1, btScalar rt)\n\t{\n#if defined(BT_USE_SSE_IN_API) && defined (BT_USE_SSE)\n\t\t__m128\tvrt = _mm_load_ss(&rt);\t//\t(rt 0 0 0)\n\t\tbtScalar s = btScalar(1.0) - rt;\n\t\t__m128\tvs = _mm_load_ss(&s);\t//\t(S 0 0 0)\n\t\tvs = bt_pshufd_ps(vs, 0x80);\t//\t(S S S 0.0)\n\t\t__m128 r0 = _mm_mul_ps(v0.mVec128, vs);\n\t\tvrt = bt_pshufd_ps(vrt, 0x80);\t//\t(rt rt rt 0.0)\n\t\t__m128 r1 = _mm_mul_ps(v1.mVec128, vrt);\n\t\t__m128 tmp3 = _mm_add_ps(r0,r1);\n\t\tmVec128 = tmp3;\n#elif defined(BT_USE_NEON)\n\t\tmVec128 = vsubq_f32(v1.mVec128, v0.mVec128);\n\t\tmVec128 = vmulq_n_f32(mVec128, rt);\n\t\tmVec128 = vaddq_f32(mVec128, v0.mVec128);\n#else\t\n\t\tbtScalar s = btScalar(1.0) - rt;\n\t\tm_floats[0] = s * v0.m_floats[0] + rt * v1.m_floats[0];\n\t\tm_floats[1] = s * v0.m_floats[1] + rt * v1.m_floats[1];\n\t\tm_floats[2] = s * v0.m_floats[2] + rt * v1.m_floats[2];\n\t\t//don't do the unused w component\n\t\t//\t\tm_co[3] = s * v0[3] + rt * v1[3];\n#endif\n\t}\n\n  /**@brief Return the linear interpolation between this and another vector \n   * @param v The other vector \n   * @param t The ration of this to v (t = 0 => return this, t=1 => return other) */\n\tSIMD_FORCE_INLINE btVector3 lerp(const btVector3& v, const btScalar& t) const \n\t{\n#if defined(BT_USE_SSE_IN_API) && defined (BT_USE_SSE)\n\t\t__m128\tvt = _mm_load_ss(&t);\t//\t(t 0 0 0)\n\t\tvt = bt_pshufd_ps(vt, 0x80);\t//\t(rt rt rt 0.0)\n\t\t__m128 vl = _mm_sub_ps(v.mVec128, mVec128);\n\t\tvl = _mm_mul_ps(vl, vt);\n\t\tvl = _mm_add_ps(vl, mVec128);\n\t\t\n\t\treturn btVector3(vl);\n#elif defined(BT_USE_NEON)\n\t\tfloat32x4_t vl = vsubq_f32(v.mVec128, mVec128);\n\t\tvl = vmulq_n_f32(vl, t);\n\t\tvl = vaddq_f32(vl, mVec128);\n\t\t\n\t\treturn btVector3(vl);\n#else\t\n\t\treturn \n\t\t\tbtVector3(\tm_floats[0] + (v.m_floats[0] - m_floats[0]) * t,\n\t\t\t\t\t\tm_floats[1] + (v.m_floats[1] - m_floats[1]) * t,\n\t\t\t\t\t\tm_floats[2] + (v.m_floats[2] - m_floats[2]) * t);\n#endif\n\t}\n\n  /**@brief Elementwise multiply this vector by the other \n   * @param v The other vector */\n\tSIMD_FORCE_INLINE btVector3& operator*=(const btVector3& v)\n\t{\n#if defined(BT_USE_SSE_IN_API) && defined (BT_USE_SSE)\n\t\tmVec128 = _mm_mul_ps(mVec128, v.mVec128);\n#elif defined(BT_USE_NEON)\n\t\tmVec128 = vmulq_f32(mVec128, v.mVec128);\n#else\t\n\t\tm_floats[0] *= v.m_floats[0]; \n\t\tm_floats[1] *= v.m_floats[1];\n\t\tm_floats[2] *= v.m_floats[2];\n#endif\n\t\treturn *this;\n\t}\n\n\t /**@brief Return the x value */\n\t\tSIMD_FORCE_INLINE const btScalar& getX() const { return m_floats[0]; }\n  /**@brief Return the y value */\n\t\tSIMD_FORCE_INLINE const btScalar& getY() const { return m_floats[1]; }\n  /**@brief Return the z value */\n\t\tSIMD_FORCE_INLINE const btScalar& getZ() const { return m_floats[2]; }\n  /**@brief Set the x value */\n\t\tSIMD_FORCE_INLINE void\tsetX(btScalar _x) { m_floats[0] = _x;};\n  /**@brief Set the y value */\n\t\tSIMD_FORCE_INLINE void\tsetY(btScalar _y) { m_floats[1] = _y;};\n  /**@brief Set the z value */\n\t\tSIMD_FORCE_INLINE void\tsetZ(btScalar _z) { m_floats[2] = _z;};\n  /**@brief Set the w value */\n\t\tSIMD_FORCE_INLINE void\tsetW(btScalar _w) { m_floats[3] = _w;};\n  /**@brief Return the x value */\n\t\tSIMD_FORCE_INLINE const btScalar& x() const { return m_floats[0]; }\n  /**@brief Return the y value */\n\t\tSIMD_FORCE_INLINE const btScalar& y() const { return m_floats[1]; }\n  /**@brief Return the z value */\n\t\tSIMD_FORCE_INLINE const btScalar& z() const { return m_floats[2]; }\n  /**@brief Return the w value */\n\t\tSIMD_FORCE_INLINE const btScalar& w() const { return m_floats[3]; }\n\n\t//SIMD_FORCE_INLINE btScalar&       operator[](int i)       { return (&m_floats[0])[i];\t}      \n\t//SIMD_FORCE_INLINE const btScalar& operator[](int i) const { return (&m_floats[0])[i]; }\n\t///operator btScalar*() replaces operator[], using implicit conversion. We added operator != and operator == to avoid pointer comparisons.\n\tSIMD_FORCE_INLINE\toperator       btScalar *()       { return &m_floats[0]; }\n\tSIMD_FORCE_INLINE\toperator const btScalar *() const { return &m_floats[0]; }\n\n\tSIMD_FORCE_INLINE\tbool\toperator==(const btVector3& other) const\n\t{\n#if defined(BT_USE_SSE_IN_API) && defined (BT_USE_SSE)\n        return (0xf == _mm_movemask_ps((__m128)_mm_cmpeq_ps(mVec128, other.mVec128)));\n#else \n\t\treturn ((m_floats[3]==other.m_floats[3]) && \n                (m_floats[2]==other.m_floats[2]) && \n                (m_floats[1]==other.m_floats[1]) && \n                (m_floats[0]==other.m_floats[0]));\n#endif\n\t}\n\n\tSIMD_FORCE_INLINE\tbool\toperator!=(const btVector3& other) const\n\t{\n\t\treturn !(*this == other);\n\t}\n\n  /**@brief Set each element to the max of the current values and the values of another btVector3\n   * @param other The other btVector3 to compare with \n   */\n\tSIMD_FORCE_INLINE void\tsetMax(const btVector3& other)\n\t{\n#if defined(BT_USE_SSE_IN_API) && defined (BT_USE_SSE)\n\t\tmVec128 = _mm_max_ps(mVec128, other.mVec128);\n#elif defined(BT_USE_NEON)\n\t\tmVec128 = vmaxq_f32(mVec128, other.mVec128);\n#else\n\t\tbtSetMax(m_floats[0], other.m_floats[0]);\n\t\tbtSetMax(m_floats[1], other.m_floats[1]);\n\t\tbtSetMax(m_floats[2], other.m_floats[2]);\n\t\tbtSetMax(m_floats[3], other.w());\n#endif\n\t}\n\n  /**@brief Set each element to the min of the current values and the values of another btVector3\n   * @param other The other btVector3 to compare with \n   */\n\tSIMD_FORCE_INLINE void\tsetMin(const btVector3& other)\n\t{\n#if defined(BT_USE_SSE_IN_API) && defined (BT_USE_SSE)\n\t\tmVec128 = _mm_min_ps(mVec128, other.mVec128);\n#elif defined(BT_USE_NEON)\n\t\tmVec128 = vminq_f32(mVec128, other.mVec128);\n#else\n\t\tbtSetMin(m_floats[0], other.m_floats[0]);\n\t\tbtSetMin(m_floats[1], other.m_floats[1]);\n\t\tbtSetMin(m_floats[2], other.m_floats[2]);\n\t\tbtSetMin(m_floats[3], other.w());\n#endif\n\t}\n\n\tSIMD_FORCE_INLINE void \tsetValue(const btScalar& _x, const btScalar& _y, const btScalar& _z)\n\t{\n\t\tm_floats[0]=_x;\n\t\tm_floats[1]=_y;\n\t\tm_floats[2]=_z;\n\t\tm_floats[3] = btScalar(0.f);\n\t}\n\n\tvoid\tgetSkewSymmetricMatrix(btVector3* v0,btVector3* v1,btVector3* v2) const\n\t{\n#if defined(BT_USE_SSE_IN_API) && defined (BT_USE_SSE)\n \n\t\t__m128 V  = _mm_and_ps(mVec128, btvFFF0fMask);\n\t\t__m128 V0 = _mm_xor_ps(btvMzeroMask, V);\n\t\t__m128 V2 = _mm_movelh_ps(V0, V);\n\t\t\n\t\t__m128 V1 = _mm_shuffle_ps(V, V0, 0xCE);\n\t\t\n        V0 = _mm_shuffle_ps(V0, V, 0xDB);\n\t\tV2 = _mm_shuffle_ps(V2, V, 0xF9);\n\t\t\n\t\tv0->mVec128 = V0;\n\t\tv1->mVec128 = V1;\n\t\tv2->mVec128 = V2;\n#else\n\t\tv0->setValue(0.\t\t,-z()\t\t,y());\n\t\tv1->setValue(z()\t,0.\t\t\t,-x());\n\t\tv2->setValue(-y()\t,x()\t,0.);\n#endif\n\t}\n\n\tvoid setZero()\n\t{\n#if defined(BT_USE_SSE_IN_API) && defined (BT_USE_SSE)\n\t\tmVec128 = (__m128)_mm_xor_ps(mVec128, mVec128);\n#elif defined(BT_USE_NEON)\n\t\tint32x4_t vi = vdupq_n_s32(0); \n\t\tmVec128 = vreinterpretq_f32_s32(vi);\n#else\t\n\t\tsetValue(btScalar(0.),btScalar(0.),btScalar(0.));\n#endif\n\t}\n\n\tSIMD_FORCE_INLINE bool isZero() const \n\t{\n\t\treturn m_floats[0] == btScalar(0) && m_floats[1] == btScalar(0) && m_floats[2] == btScalar(0);\n\t}\n\n\tSIMD_FORCE_INLINE bool fuzzyZero() const \n\t{\n\t\treturn length2() < SIMD_EPSILON;\n\t}\n\n\tSIMD_FORCE_INLINE\tvoid\tserialize(struct\tbtVector3Data& dataOut) const;\n\n\tSIMD_FORCE_INLINE\tvoid\tdeSerialize(const struct\tbtVector3Data& dataIn);\n\n\tSIMD_FORCE_INLINE\tvoid\tserializeFloat(struct\tbtVector3FloatData& dataOut) const;\n\n\tSIMD_FORCE_INLINE\tvoid\tdeSerializeFloat(const struct\tbtVector3FloatData& dataIn);\n\n\tSIMD_FORCE_INLINE\tvoid\tserializeDouble(struct\tbtVector3DoubleData& dataOut) const;\n\n\tSIMD_FORCE_INLINE\tvoid\tdeSerializeDouble(const struct\tbtVector3DoubleData& dataIn);\n    \n        /**@brief returns index of maximum dot product between this and vectors in array[]\n         * @param array The other vectors \n         * @param array_count The number of other vectors \n         * @param dotOut The maximum dot product */\n        SIMD_FORCE_INLINE   long    maxDot( const btVector3 *array, long array_count, btScalar &dotOut ) const; \n\n        /**@brief returns index of minimum dot product between this and vectors in array[]\n         * @param array The other vectors \n         * @param array_count The number of other vectors \n         * @param dotOut The minimum dot product */    \n        SIMD_FORCE_INLINE   long    minDot( const btVector3 *array, long array_count, btScalar &dotOut ) const; \n\n    /* create a vector as  btVector3( this->dot( btVector3 v0 ), this->dot( btVector3 v1), this->dot( btVector3 v2 ))  */\n    SIMD_FORCE_INLINE btVector3  dot3( const btVector3 &v0, const btVector3 &v1, const btVector3 &v2 ) const\n    {\n#if defined(BT_USE_SSE_IN_API) && defined (BT_USE_SSE)\n\n        __m128 a0 = _mm_mul_ps( v0.mVec128, this->mVec128 );\n        __m128 a1 = _mm_mul_ps( v1.mVec128, this->mVec128 );\n        __m128 a2 = _mm_mul_ps( v2.mVec128, this->mVec128 );\n        __m128 b0 = _mm_unpacklo_ps( a0, a1 );\n        __m128 b1 = _mm_unpackhi_ps( a0, a1 );\n        __m128 b2 = _mm_unpacklo_ps( a2, _mm_setzero_ps() );\n        __m128 r = _mm_movelh_ps( b0, b2 );\n        r = _mm_add_ps( r, _mm_movehl_ps( b2, b0 ));\n        a2 = _mm_and_ps( a2, btvxyzMaskf);\n        r = _mm_add_ps( r, btCastdTo128f (_mm_move_sd( btCastfTo128d(a2), btCastfTo128d(b1) )));\n        return btVector3(r);\n        \n#elif defined(BT_USE_NEON)\n        static const uint32x4_t xyzMask = (const uint32x4_t){ -1, -1, -1, 0 };\n        float32x4_t a0 = vmulq_f32( v0.mVec128, this->mVec128);\n        float32x4_t a1 = vmulq_f32( v1.mVec128, this->mVec128);\n        float32x4_t a2 = vmulq_f32( v2.mVec128, this->mVec128);\n        float32x2x2_t zLo = vtrn_f32( vget_high_f32(a0), vget_high_f32(a1));\n        a2 = (float32x4_t) vandq_u32((uint32x4_t) a2, xyzMask );\n        float32x2_t b0 = vadd_f32( vpadd_f32( vget_low_f32(a0), vget_low_f32(a1)), zLo.val[0] );\n        float32x2_t b1 = vpadd_f32( vpadd_f32( vget_low_f32(a2), vget_high_f32(a2)), vdup_n_f32(0.0f));\n        return btVector3( vcombine_f32(b0, b1) );\n#else\t\n\t\treturn btVector3( dot(v0), dot(v1), dot(v2));\n#endif\n    }\n};\n\n/**@brief Return the sum of two vectors (Point symantics)*/\nSIMD_FORCE_INLINE btVector3 \noperator+(const btVector3& v1, const btVector3& v2) \n{\n#if defined(BT_USE_SSE_IN_API) && defined (BT_USE_SSE)\n\treturn btVector3(_mm_add_ps(v1.mVec128, v2.mVec128));\n#elif defined(BT_USE_NEON)\n\treturn btVector3(vaddq_f32(v1.mVec128, v2.mVec128));\n#else\n\treturn btVector3(\n\t\t\tv1.m_floats[0] + v2.m_floats[0], \n\t\t\tv1.m_floats[1] + v2.m_floats[1], \n\t\t\tv1.m_floats[2] + v2.m_floats[2]);\n#endif\n}\n\n/**@brief Return the elementwise product of two vectors */\nSIMD_FORCE_INLINE btVector3 \noperator*(const btVector3& v1, const btVector3& v2) \n{\n#if defined(BT_USE_SSE_IN_API) && defined (BT_USE_SSE)\n\treturn btVector3(_mm_mul_ps(v1.mVec128, v2.mVec128));\n#elif defined(BT_USE_NEON)\n\treturn btVector3(vmulq_f32(v1.mVec128, v2.mVec128));\n#else\n\treturn btVector3(\n\t\t\tv1.m_floats[0] * v2.m_floats[0], \n\t\t\tv1.m_floats[1] * v2.m_floats[1], \n\t\t\tv1.m_floats[2] * v2.m_floats[2]);\n#endif\n}\n\n/**@brief Return the difference between two vectors */\nSIMD_FORCE_INLINE btVector3 \noperator-(const btVector3& v1, const btVector3& v2)\n{\n#if (defined(BT_USE_SSE_IN_API)  && defined(BT_USE_SSE))\n\n\t//\twithout _mm_and_ps this code causes slowdown in Concave moving\n\t__m128 r = _mm_sub_ps(v1.mVec128, v2.mVec128);\n\treturn btVector3(_mm_and_ps(r, btvFFF0fMask));\n#elif defined(BT_USE_NEON)\n\tfloat32x4_t r = vsubq_f32(v1.mVec128, v2.mVec128);\n\treturn btVector3((float32x4_t)vandq_s32((int32x4_t)r, btvFFF0Mask));\n#else\n\treturn btVector3(\n\t\t\tv1.m_floats[0] - v2.m_floats[0], \n\t\t\tv1.m_floats[1] - v2.m_floats[1], \n\t\t\tv1.m_floats[2] - v2.m_floats[2]);\n#endif\n}\n\n/**@brief Return the negative of the vector */\nSIMD_FORCE_INLINE btVector3 \noperator-(const btVector3& v)\n{\n#if (defined(BT_USE_SSE_IN_API) && defined (BT_USE_SSE))\n\t__m128 r = _mm_xor_ps(v.mVec128, btvMzeroMask);\n\treturn btVector3(_mm_and_ps(r, btvFFF0fMask)); \n#elif defined(BT_USE_NEON)\n\treturn btVector3((btSimdFloat4)veorq_s32((int32x4_t)v.mVec128, (int32x4_t)btvMzeroMask));\n#else\t\n\treturn btVector3(-v.m_floats[0], -v.m_floats[1], -v.m_floats[2]);\n#endif\n}\n\n/**@brief Return the vector scaled by s */\nSIMD_FORCE_INLINE btVector3 \noperator*(const btVector3& v, const btScalar& s)\n{\n#if defined(BT_USE_SSE_IN_API) && defined (BT_USE_SSE)\n\t__m128\tvs = _mm_load_ss(&s);\t//\t(S 0 0 0)\n\tvs = bt_pshufd_ps(vs, 0x80);\t//\t(S S S 0.0)\n\treturn btVector3(_mm_mul_ps(v.mVec128, vs));\n#elif defined(BT_USE_NEON)\n\tfloat32x4_t r = vmulq_n_f32(v.mVec128, s);\n\treturn btVector3((float32x4_t)vandq_s32((int32x4_t)r, btvFFF0Mask));\n#else\n\treturn btVector3(v.m_floats[0] * s, v.m_floats[1] * s, v.m_floats[2] * s);\n#endif\n}\n\n/**@brief Return the vector scaled by s */\nSIMD_FORCE_INLINE btVector3 \noperator*(const btScalar& s, const btVector3& v)\n{ \n\treturn v * s; \n}\n\n/**@brief Return the vector inversely scaled by s */\nSIMD_FORCE_INLINE btVector3\noperator/(const btVector3& v, const btScalar& s)\n{\n\tbtFullAssert(s != btScalar(0.0));\n#if 0 //defined(BT_USE_SSE_IN_API)\n// this code is not faster !\n\t__m128 vs = _mm_load_ss(&s);\n    vs = _mm_div_ss(v1110, vs);\n\tvs = bt_pshufd_ps(vs, 0x00);\t//\t(S S S S)\n\n\treturn btVector3(_mm_mul_ps(v.mVec128, vs));\n#else\n\treturn v * (btScalar(1.0) / s);\n#endif\n}\n\n/**@brief Return the vector inversely scaled by s */\nSIMD_FORCE_INLINE btVector3\noperator/(const btVector3& v1, const btVector3& v2)\n{\n#if (defined(BT_USE_SSE_IN_API)&& defined (BT_USE_SSE))\n\t__m128 vec = _mm_div_ps(v1.mVec128, v2.mVec128);\n\tvec = _mm_and_ps(vec, btvFFF0fMask);\n\treturn btVector3(vec); \n#elif defined(BT_USE_NEON)\n\tfloat32x4_t x, y, v, m;\n\n\tx = v1.mVec128;\n\ty = v2.mVec128;\n\t\n\tv = vrecpeq_f32(y);\t\t\t// v ~ 1/y\n\tm = vrecpsq_f32(y, v);\t\t// m = (2-v*y)\n\tv = vmulq_f32(v, m);\t\t// vv = v*m ~~ 1/y\n\tm = vrecpsq_f32(y, v);\t\t// mm = (2-vv*y)\n\tv = vmulq_f32(v, x);\t\t// x*vv\n\tv = vmulq_f32(v, m);\t\t// (x*vv)*(2-vv*y) = x*(vv(2-vv*y)) ~~~ x/y\n\n\treturn btVector3(v);\n#else\n\treturn btVector3(\n\t\t\tv1.m_floats[0] / v2.m_floats[0], \n\t\t\tv1.m_floats[1] / v2.m_floats[1],\n\t\t\tv1.m_floats[2] / v2.m_floats[2]);\n#endif\n}\n\n/**@brief Return the dot product between two vectors */\nSIMD_FORCE_INLINE btScalar \nbtDot(const btVector3& v1, const btVector3& v2) \n{ \n\treturn v1.dot(v2); \n}\n\n\n/**@brief Return the distance squared between two vectors */\nSIMD_FORCE_INLINE btScalar\nbtDistance2(const btVector3& v1, const btVector3& v2) \n{ \n\treturn v1.distance2(v2); \n}\n\n\n/**@brief Return the distance between two vectors */\nSIMD_FORCE_INLINE btScalar\nbtDistance(const btVector3& v1, const btVector3& v2) \n{ \n\treturn v1.distance(v2); \n}\n\n/**@brief Return the angle between two vectors */\nSIMD_FORCE_INLINE btScalar\nbtAngle(const btVector3& v1, const btVector3& v2) \n{ \n\treturn v1.angle(v2); \n}\n\n/**@brief Return the cross product of two vectors */\nSIMD_FORCE_INLINE btVector3 \nbtCross(const btVector3& v1, const btVector3& v2) \n{ \n\treturn v1.cross(v2); \n}\n\nSIMD_FORCE_INLINE btScalar\nbtTriple(const btVector3& v1, const btVector3& v2, const btVector3& v3)\n{\n\treturn v1.triple(v2, v3);\n}\n\n/**@brief Return the linear interpolation between two vectors\n * @param v1 One vector \n * @param v2 The other vector \n * @param t The ration of this to v (t = 0 => return v1, t=1 => return v2) */\nSIMD_FORCE_INLINE btVector3 \nlerp(const btVector3& v1, const btVector3& v2, const btScalar& t)\n{\n\treturn v1.lerp(v2, t);\n}\n\n\n\nSIMD_FORCE_INLINE btScalar btVector3::distance2(const btVector3& v) const\n{\n\treturn (v - *this).length2();\n}\n\nSIMD_FORCE_INLINE btScalar btVector3::distance(const btVector3& v) const\n{\n\treturn (v - *this).length();\n}\n\nSIMD_FORCE_INLINE btVector3 btVector3::normalized() const\n{\n#if defined(BT_USE_SSE_IN_API) && defined (BT_USE_SSE)\n\tbtVector3 norm = *this;\n\n\treturn norm.normalize();\n#else\n\treturn *this / length();\n#endif\n} \n\nSIMD_FORCE_INLINE btVector3 btVector3::rotate( const btVector3& wAxis, const btScalar _angle ) const\n{\n\t// wAxis must be a unit lenght vector\n\n#if defined(BT_USE_SSE_IN_API) && defined (BT_USE_SSE)\n\n    __m128 O = _mm_mul_ps(wAxis.mVec128, mVec128);\n\tbtScalar ssin = btSin( _angle );\n    __m128 C = wAxis.cross( mVec128 ).mVec128;\n\tO = _mm_and_ps(O, btvFFF0fMask);\n    btScalar scos = btCos( _angle );\n\t\n\t__m128 vsin = _mm_load_ss(&ssin);\t//\t(S 0 0 0)\n    __m128 vcos = _mm_load_ss(&scos);\t//\t(S 0 0 0)\n\t\n\t__m128 Y = bt_pshufd_ps(O, 0xC9);\t//\t(Y Z X 0)\n\t__m128 Z = bt_pshufd_ps(O, 0xD2);\t//\t(Z X Y 0)\n\tO = _mm_add_ps(O, Y);\n\tvsin = bt_pshufd_ps(vsin, 0x80);\t//\t(S S S 0)\n\tO = _mm_add_ps(O, Z);\n    vcos = bt_pshufd_ps(vcos, 0x80);\t//\t(S S S 0)\n\t\n    vsin = vsin * C; \n\tO = O * wAxis.mVec128; \n\t__m128 X = mVec128 - O; \n\t\n    O = O + vsin;\n\tvcos = vcos * X;\n\tO = O + vcos;\t\n\t\n\treturn btVector3(O);\n#else\n\tbtVector3 o = wAxis * wAxis.dot( *this );\n\tbtVector3 _x = *this - o;\n\tbtVector3 _y;\n\n\t_y = wAxis.cross( *this );\n\n\treturn ( o + _x * btCos( _angle ) + _y * btSin( _angle ) );\n#endif\n}\n\nSIMD_FORCE_INLINE   long    btVector3::maxDot( const btVector3 *array, long array_count, btScalar &dotOut ) const\n{\n#if defined (BT_USE_SSE) || defined (BT_USE_NEON)\n    #if defined _WIN32 || defined (BT_USE_SSE)\n        const long scalar_cutoff = 10;\n        long _maxdot_large( const float *array, const float *vec, unsigned long array_count, float *dotOut );\n    #elif defined BT_USE_NEON\n        const long scalar_cutoff = 4;\n        extern long (*_maxdot_large)( const float *array, const float *vec, unsigned long array_count, float *dotOut );\n    #endif\n    if( array_count < scalar_cutoff )\n#else\n\t\n#endif//BT_USE_SSE || BT_USE_NEON\n    {\n        btScalar maxDot = -SIMD_INFINITY;\n        int i = 0;\n        int ptIndex = -1;\n        for( i = 0; i < array_count; i++ )\n        {\n            btScalar dot = array[i].dot(*this);\n            \n            if( dot > maxDot )\n            {\n                maxDot = dot;\n                ptIndex = i;\n            }\n        }\n        \n        dotOut = maxDot;\n        return ptIndex;\n    }\n#if defined (BT_USE_SSE) || defined (BT_USE_NEON)\n    return _maxdot_large( (float*) array, (float*) &m_floats[0], array_count, &dotOut );\n#endif\n}\n\nSIMD_FORCE_INLINE   long    btVector3::minDot( const btVector3 *array, long array_count, btScalar &dotOut ) const\n{\n#if defined (BT_USE_SSE) || defined (BT_USE_NEON)\n    #if defined BT_USE_SSE\n        const long scalar_cutoff = 10;\n        long _mindot_large( const float *array, const float *vec, unsigned long array_count, float *dotOut );\n    #elif defined BT_USE_NEON\n        const long scalar_cutoff = 4;\n        extern long (*_mindot_large)( const float *array, const float *vec, unsigned long array_count, float *dotOut );\n    #else\n        #error unhandled arch!\n    #endif\n    \n    if( array_count < scalar_cutoff )\n#endif//BT_USE_SSE || BT_USE_NEON\n    {\n        btScalar  minDot = SIMD_INFINITY;\n        int i = 0;\n        int ptIndex = -1;\n        \n        for( i = 0; i < array_count; i++ )\n        {\n            btScalar dot = array[i].dot(*this);\n            \n            if( dot < minDot )\n            {\n                minDot = dot;\n                ptIndex = i;\n            }\n        }\n        \n        dotOut = minDot;\n        \n        return ptIndex;\n    }\n#if defined (BT_USE_SSE) || defined (BT_USE_NEON)\n    return _mindot_large( (float*) array, (float*) &m_floats[0], array_count, &dotOut );\n#endif\n}\n\n\nclass btVector4 : public btVector3\n{\npublic:\n\n\tSIMD_FORCE_INLINE btVector4() {}\n\n\n\tSIMD_FORCE_INLINE btVector4(const btScalar& _x, const btScalar& _y, const btScalar& _z,const btScalar& _w) \n\t\t: btVector3(_x,_y,_z)\n\t{\n\t\tm_floats[3] = _w;\n\t}\n\n#if (defined (BT_USE_SSE_IN_API)&& defined (BT_USE_SSE)) || defined (BT_USE_NEON) \n\tSIMD_FORCE_INLINE btVector4(const btSimdFloat4 vec)\n\t{\n\t\tmVec128 = vec;\n\t}\n\n\tSIMD_FORCE_INLINE btVector4(const btVector3& rhs)\n\t{\n\t\tmVec128 = rhs.mVec128;\n\t}\n\n\tSIMD_FORCE_INLINE btVector4& \n\toperator=(const btVector4& v) \n\t{\n\t\tmVec128 = v.mVec128;\n\t\treturn *this;\n\t}\n#endif // #if defined (BT_USE_SSE_IN_API) || defined (BT_USE_NEON) \n\n\tSIMD_FORCE_INLINE btVector4 absolute4() const \n\t{\n#if defined(BT_USE_SSE_IN_API) && defined (BT_USE_SSE) \n\t\treturn btVector4(_mm_and_ps(mVec128, btvAbsfMask));\n#elif defined(BT_USE_NEON)\n\t\treturn btVector4(vabsq_f32(mVec128));\n#else\t\n\t\treturn btVector4(\n\t\t\tbtFabs(m_floats[0]), \n\t\t\tbtFabs(m_floats[1]), \n\t\t\tbtFabs(m_floats[2]),\n\t\t\tbtFabs(m_floats[3]));\n#endif\n\t}\n\n\n\tbtScalar\tgetW() const { return m_floats[3];}\n\n\n\t\tSIMD_FORCE_INLINE int maxAxis4() const\n\t{\n\t\tint maxIndex = -1;\n\t\tbtScalar maxVal = btScalar(-BT_LARGE_FLOAT);\n\t\tif (m_floats[0] > maxVal)\n\t\t{\n\t\t\tmaxIndex = 0;\n\t\t\tmaxVal = m_floats[0];\n\t\t}\n\t\tif (m_floats[1] > maxVal)\n\t\t{\n\t\t\tmaxIndex = 1;\n\t\t\tmaxVal = m_floats[1];\n\t\t}\n\t\tif (m_floats[2] > maxVal)\n\t\t{\n\t\t\tmaxIndex = 2;\n\t\t\tmaxVal =m_floats[2];\n\t\t}\n\t\tif (m_floats[3] > maxVal)\n\t\t{\n\t\t\tmaxIndex = 3;\n\t\t\tmaxVal = m_floats[3];\n\t\t}\n\n\t\treturn maxIndex;\n\t}\n\n\n\tSIMD_FORCE_INLINE int minAxis4() const\n\t{\n\t\tint minIndex = -1;\n\t\tbtScalar minVal = btScalar(BT_LARGE_FLOAT);\n\t\tif (m_floats[0] < minVal)\n\t\t{\n\t\t\tminIndex = 0;\n\t\t\tminVal = m_floats[0];\n\t\t}\n\t\tif (m_floats[1] < minVal)\n\t\t{\n\t\t\tminIndex = 1;\n\t\t\tminVal = m_floats[1];\n\t\t}\n\t\tif (m_floats[2] < minVal)\n\t\t{\n\t\t\tminIndex = 2;\n\t\t\tminVal =m_floats[2];\n\t\t}\n\t\tif (m_floats[3] < minVal)\n\t\t{\n\t\t\tminIndex = 3;\n\t\t\tminVal = m_floats[3];\n\t\t}\n\t\t\n\t\treturn minIndex;\n\t}\n\n\n\tSIMD_FORCE_INLINE int closestAxis4() const \n\t{\n\t\treturn absolute4().maxAxis4();\n\t}\n\n\t\n \n\n  /**@brief Set x,y,z and zero w \n   * @param x Value of x\n   * @param y Value of y\n   * @param z Value of z\n   */\n\t\t\n\n/*\t\tvoid getValue(btScalar *m) const \n\t\t{\n\t\t\tm[0] = m_floats[0];\n\t\t\tm[1] = m_floats[1];\n\t\t\tm[2] =m_floats[2];\n\t\t}\n*/\n/**@brief Set the values \n   * @param x Value of x\n   * @param y Value of y\n   * @param z Value of z\n   * @param w Value of w\n   */\n\t\tSIMD_FORCE_INLINE void\tsetValue(const btScalar& _x, const btScalar& _y, const btScalar& _z,const btScalar& _w)\n\t\t{\n\t\t\tm_floats[0]=_x;\n\t\t\tm_floats[1]=_y;\n\t\t\tm_floats[2]=_z;\n\t\t\tm_floats[3]=_w;\n\t\t}\n\n\n};\n\n\n///btSwapVector3Endian swaps vector endianness, useful for network and cross-platform serialization\nSIMD_FORCE_INLINE void\tbtSwapScalarEndian(const btScalar& sourceVal, btScalar& destVal)\n{\n\t#ifdef BT_USE_DOUBLE_PRECISION\n\tunsigned char* dest = (unsigned char*) &destVal;\n\tunsigned char* src  = (unsigned char*) &sourceVal;\n\tdest[0] = src[7];\n    dest[1] = src[6];\n    dest[2] = src[5];\n    dest[3] = src[4];\n    dest[4] = src[3];\n    dest[5] = src[2];\n    dest[6] = src[1];\n    dest[7] = src[0];\n#else\n\tunsigned char* dest = (unsigned char*) &destVal;\n\tunsigned char* src  = (unsigned char*) &sourceVal;\n\tdest[0] = src[3];\n    dest[1] = src[2];\n    dest[2] = src[1];\n    dest[3] = src[0];\n#endif //BT_USE_DOUBLE_PRECISION\n}\n///btSwapVector3Endian swaps vector endianness, useful for network and cross-platform serialization\nSIMD_FORCE_INLINE void\tbtSwapVector3Endian(const btVector3& sourceVec, btVector3& destVec)\n{\n\tfor (int i=0;i<4;i++)\n\t{\n\t\tbtSwapScalarEndian(sourceVec[i],destVec[i]);\n\t}\n\n}\n\n///btUnSwapVector3Endian swaps vector endianness, useful for network and cross-platform serialization\nSIMD_FORCE_INLINE void\tbtUnSwapVector3Endian(btVector3& vector)\n{\n\n\tbtVector3\tswappedVec;\n\tfor (int i=0;i<4;i++)\n\t{\n\t\tbtSwapScalarEndian(vector[i],swappedVec[i]);\n\t}\n\tvector = swappedVec;\n}\n\ntemplate <class T>\nSIMD_FORCE_INLINE void btPlaneSpace1 (const T& n, T& p, T& q)\n{\n  if (btFabs(n[2]) > SIMDSQRT12) {\n    // choose p in y-z plane\n    btScalar a = n[1]*n[1] + n[2]*n[2];\n    btScalar k = btRecipSqrt (a);\n    p[0] = 0;\n\tp[1] = -n[2]*k;\n\tp[2] = n[1]*k;\n    // set q = n x p\n    q[0] = a*k;\n\tq[1] = -n[0]*p[2];\n\tq[2] = n[0]*p[1];\n  }\n  else {\n    // choose p in x-y plane\n    btScalar a = n[0]*n[0] + n[1]*n[1];\n    btScalar k = btRecipSqrt (a);\n    p[0] = -n[1]*k;\n\tp[1] = n[0]*k;\n\tp[2] = 0;\n    // set q = n x p\n    q[0] = -n[2]*p[1];\n\tq[1] = n[2]*p[0];\n\tq[2] = a*k;\n  }\n}\n\n\nstruct\tbtVector3FloatData\n{\n\tfloat\tm_floats[4];\n};\n\nstruct\tbtVector3DoubleData\n{\n\tdouble\tm_floats[4];\n\n};\n\nSIMD_FORCE_INLINE\tvoid\tbtVector3::serializeFloat(struct\tbtVector3FloatData& dataOut) const\n{\n\t///could also do a memcpy, check if it is worth it\n\tfor (int i=0;i<4;i++)\n\t\tdataOut.m_floats[i] = float(m_floats[i]);\n}\n\nSIMD_FORCE_INLINE void\tbtVector3::deSerializeFloat(const struct\tbtVector3FloatData& dataIn)\n{\n\tfor (int i=0;i<4;i++)\n\t\tm_floats[i] = btScalar(dataIn.m_floats[i]);\n}\n\n\nSIMD_FORCE_INLINE\tvoid\tbtVector3::serializeDouble(struct\tbtVector3DoubleData& dataOut) const\n{\n\t///could also do a memcpy, check if it is worth it\n\tfor (int i=0;i<4;i++)\n\t\tdataOut.m_floats[i] = double(m_floats[i]);\n}\n\nSIMD_FORCE_INLINE void\tbtVector3::deSerializeDouble(const struct\tbtVector3DoubleData& dataIn)\n{\n\tfor (int i=0;i<4;i++)\n\t\tm_floats[i] = btScalar(dataIn.m_floats[i]);\n}\n\n\nSIMD_FORCE_INLINE\tvoid\tbtVector3::serialize(struct\tbtVector3Data& dataOut) const\n{\n\t///could also do a memcpy, check if it is worth it\n\tfor (int i=0;i<4;i++)\n\t\tdataOut.m_floats[i] = m_floats[i];\n}\n\nSIMD_FORCE_INLINE void\tbtVector3::deSerialize(const struct\tbtVector3Data& dataIn)\n{\n\tfor (int i=0;i<4;i++)\n\t\tm_floats[i] = dataIn.m_floats[i];\n}\n\n#endif //BT_VECTOR3_H\n"
  },
  {
    "path": "Sources/NativeDAABBTree/LinearMath/premake4.lua",
    "content": "\tproject \"LinearMath\"\n\t\t\n\tkind \"StaticLib\"\n\ttargetdir \"../../lib\"\n\tincludedirs {\n\t\t\"..\",\n\t}\n\tfiles {\n\t\t\"**.cpp\",\n\t\t\"**.h\"\n\t}"
  },
  {
    "path": "Sources/NativeDAABBTree/NativeDAABBTree.cpp",
    "content": "// NativeDAABBTree.cpp : Defines the exported functions for the DLL application.\n//\n\n#include \"stdafx.h\"\n#include \"NativeDAABBTree.h\"\n\n\nNATIVEDAABBTREE_API btDbvt* Create()\n{\n\treturn new btDbvt();\n}\n\nNATIVEDAABBTREE_API void Destroy(btDbvt* tree)\n{\n\tdelete tree;\n}\n\nNATIVEDAABBTREE_API void Clear(btDbvt* tree)\n{\n\ttree->clear();\n}\n\nNATIVEDAABBTREE_API btDbvtNode* Insert(btDbvt* tree, aabb& box, int data)\n{\n\treturn tree->insert(makeVolume(box), (void*)data);\n}\n\nNATIVEDAABBTREE_API void Remove(btDbvt* tree, btDbvtNode* node)\n{\n\ttree->remove(node);\n}\n\nNATIVEDAABBTREE_API void ChangeData(btDbvt* tree, btDbvtNode* node, int newData)\n{\n\tnode->dataAsInt = newData;\n}\n\nNATIVEDAABBTREE_API int RemoveAndChangeData(btDbvt* tree, btDbvtNode* removedNode, btDbvtNode* changeDataNode)\n{\n\tchangeDataNode->dataAsInt = removedNode->dataAsInt;\n\ttree->remove(removedNode);\n\treturn changeDataNode->dataAsInt;\n}\n\nNATIVEDAABBTREE_API void Move(btDbvt* tree, btDbvtNode* node, aabb& box)\n{\n\ttree->update(node, makeVolume(box));\n}\n\nNATIVEDAABBTREE_API void Move2(btDbvt* tree, btDbvtNode* node, aabb& box, vector& velocity)\n{\n\tbtVector3 vel(velocity.x, velocity.y, velocity.z);\n\ttree->update(node, makeVolume(box), vel);\n}\n\nNATIVEDAABBTREE_API void Move3(btDbvt* tree, btDbvtNode* node, aabb& box, float margin)\n{\n\ttree->update(node, makeVolume(box), margin);\n}\n\nNATIVEDAABBTREE_API void Move4(btDbvt* tree, btDbvtNode* node, aabb& box, vector& velocity, float margin)\n{\n\tbtVector3 vel(velocity.x, velocity.y, velocity.z);\n\ttree->update(node, makeVolume(box), vel, margin);\n}\n\nNATIVEDAABBTREE_API int MaxDepth(btDbvt* tree, btDbvtNode* node)\n{\n\treturn tree->maxdepth(node);\n}\n\nNATIVEDAABBTREE_API int CountLeaves(btDbvt* tree, btDbvtNode* node)\n{\n\treturn tree->countLeaves(node);\n}\n\nNATIVEDAABBTREE_API bool IsEmpty(btDbvt* tree)\n{\n\treturn tree->empty();\n}\n\nNATIVEDAABBTREE_API void OptimizeBottomUp(btDbvt* tree)\n{\n\ttree->optimizeBottomUp();\n}\n\nNATIVEDAABBTREE_API void OptimizeTopDown(btDbvt* tree, int bu_treshold)\n{\n\ttree->optimizeTopDown(bu_treshold);\n}\n\nNATIVEDAABBTREE_API void OptimizeIncremental(btDbvt* tree, int passes)\n{\n\ttree->optimizeIncremental(passes);\n}\n\n// Gets all nodes, node pointers are written to [nodePointerArray] at [offset], no more than [count] nodes are written\n// Return true on success, when array is too small, returns false\nNATIVEDAABBTREE_API int QueryAll(btDbvt* tree, int* nodePointerArray, int offset, int count)\n{\n\tCollideArrayWriter result(nodePointerArray, offset, count);\n\ttree->enumLeaves(tree->m_root, result);\n\treturn result.GetResult();\n}\n\nNATIVEDAABBTREE_API int QueryAABB(btDbvt* tree, aabb& box, int* nodePointerArray, int offset, int count)\n{\n\tCollideArrayWriter result(nodePointerArray, offset, count);\n\ttree->collideTV(tree->m_root, makeVolume(box), result);\n\treturn result.GetResult();\n}\n\nNATIVEDAABBTREE_API int QuerySixPlanes(btDbvt* tree, float* x, float* y, float* z, float* offsets, int* nodePointerArray, int offset, int count)\n{\n\tbtVector3 normals[6];\n\tfor(int i = 0; i < 6; i++)\n\t{\n\t\tnormals[i] = btVector3(x[i], y[i], z[i]);\n\t}\n\n\tCollideArrayWriter result(nodePointerArray, offset, count);\n\ttree->collideKDOP(tree->m_root, normals, offsets, 6, result);\n\n\treturn result.GetResult();\n}\n\nNATIVEDAABBTREE_API int QuerySphere(btDbvt* tree, vector& sphereCenter, float sphereRadius, int* nodePointerArray, int offset, int count)\n{\n\tbtVector3 center(sphereCenter.x, sphereCenter.y, sphereCenter.z);\n\tCollideArrayWriterSphere result(nodePointerArray, offset, count, center, sphereRadius);\n\ttree->collideTU(tree->m_root, result);\n\treturn result.GetResult();\n}\n\nNATIVEDAABBTREE_API int QueryRay(btDbvt* tree, vector& from, vector& to, int* nodePointerArray, int offset, int count)\n{\n\tbtVector3 btFrom(from.x, from.y, from.z);\n\tbtVector3 btTo(to.x, to.y, to.z);\n\n\tCollideArrayWriter result(nodePointerArray, offset, count);\n\ttree->rayTest(tree->m_root, btFrom, btTo, result);\n\treturn result.GetResult();\n}\n\nNATIVEDAABBTREE_API int QueryRayNotThreadSafe(btDbvt* tree, vector& from, vector& to, int* nodePointerArray, int offset, int count)\n{\n\tbtVector3 rayFrom(from.x, from.y, from.z);\n\tbtVector3 rayTo(to.x, to.y, to.z);\n\n\tbtVector3 rayDir = (rayTo-rayFrom);\n\trayDir.normalize ();\n\n\tbtVector3 zero(0,0,0);\n\n\tbtVector3 rayDirectionInverse;\n\trayDirectionInverse[0] = rayDir[0] == btScalar(0.0) ? btScalar(BT_LARGE_FLOAT) : btScalar(1.0) / rayDir[0];\n\trayDirectionInverse[1] = rayDir[1] == btScalar(0.0) ? btScalar(BT_LARGE_FLOAT) : btScalar(1.0) / rayDir[1];\n\trayDirectionInverse[2] = rayDir[2] == btScalar(0.0) ? btScalar(BT_LARGE_FLOAT) : btScalar(1.0) / rayDir[2];\n\tunsigned int signs[3] = { rayDirectionInverse[0] < 0.0, rayDirectionInverse[1] < 0.0, rayDirectionInverse[2] < 0.0};\n\n\tbtScalar lambda_max = rayDir.dot(rayTo-rayFrom);\n\n\tCollideArrayWriter result(nodePointerArray, offset, count);\n\ttree->rayTestInternal(tree->m_root, rayFrom, rayTo, rayDirectionInverse, signs, lambda_max, zero, zero, result);\n\treturn result.GetResult();\n}"
  },
  {
    "path": "Sources/NativeDAABBTree/NativeDAABBTree.h",
    "content": "// The following ifdef block is the standard way of creating macros which make exporting \n// from a DLL simpler. All files within this DLL are compiled with the NATIVEDAABBTREE_EXPORTS\n// symbol defined on the command line. This symbol should not be defined on any project\n// that uses this DLL. This way any other project whose source files include this file see \n// NATIVEDAABBTREE_API functions as being imported from a DLL, whereas this DLL sees symbols\n// defined with this macro as being exported.\n#ifdef NATIVEDAABBTREE_EXPORTS\n#define NATIVEDAABBTREE_API __declspec(dllexport)\n#else\n#define NATIVEDAABBTREE_API __declspec(dllimport)\n#endif\n\n#include \"btDbvt.h\"\n#include \"CollideArrayWriter.h\"\n#include \"CollideArrayWriterSphere.h\"\n\nstruct vector\n{\n\tfloat x,y,z;\n};\n\nstruct aabb\n{\n\tvector min, max;\n};\n\n__forceinline btDbvtVolume makeVolume(const aabb& box)\n{\n\treturn btDbvtVolume::FromMM(btVector3(box.min.x, box.min.y, box.min.z), btVector3(box.max.x, box.max.y, box.max.z));\n}\n\nextern \"C\" NATIVEDAABBTREE_API btDbvt* Create();\nextern \"C\" NATIVEDAABBTREE_API void Destroy(btDbvt* tree);\nextern \"C\" NATIVEDAABBTREE_API void Clear(btDbvt* tree);\nextern \"C\" NATIVEDAABBTREE_API btDbvtNode* Insert(btDbvt* tree, aabb& box, int data);\nextern \"C\" NATIVEDAABBTREE_API void Remove(btDbvt* tree, btDbvtNode* node);\nextern \"C\" NATIVEDAABBTREE_API void ChangeData(btDbvt* tree, btDbvtNode* node, int newData);\nextern \"C\" NATIVEDAABBTREE_API int RemoveAndChangeData(btDbvt* tree, btDbvtNode* removedNode, btDbvtNode* changeDataNode);\nextern \"C\" NATIVEDAABBTREE_API void Move(btDbvt* tree, btDbvtNode* node, aabb& box);\nextern \"C\" NATIVEDAABBTREE_API void Move2(btDbvt* tree, btDbvtNode* node, aabb& box, vector& velocity);\nextern \"C\" NATIVEDAABBTREE_API void Move3(btDbvt* tree, btDbvtNode* node, aabb& box, float margin);\nextern \"C\" NATIVEDAABBTREE_API void Move4(btDbvt* tree, btDbvtNode* node, aabb& box, vector& velocity, float margin);\nextern \"C\" NATIVEDAABBTREE_API int MaxDepth(btDbvt* tree, btDbvtNode* node);\nextern \"C\" NATIVEDAABBTREE_API int CountLeaves(btDbvt* tree, btDbvtNode* node);\nextern \"C\" NATIVEDAABBTREE_API bool IsEmpty(btDbvt* tree);\nextern \"C\" NATIVEDAABBTREE_API void OptimizeBottomUp(btDbvt* tree);\nextern \"C\" NATIVEDAABBTREE_API void OptimizeTopDown(btDbvt* tree, int bu_treshold);\nextern \"C\" NATIVEDAABBTREE_API void OptimizeIncremental(btDbvt* tree, int passes);\n\n// Gets all nodes, node pointers are written to [nodePointerArray] at [offset], no more than [count] nodes are written\n// Return true on success, when array is too small, returns false\nextern \"C\" NATIVEDAABBTREE_API int QueryAll(btDbvt* tree, int* nodePointerArray, int offset, int count);\nextern \"C\" NATIVEDAABBTREE_API int QueryAABB(btDbvt* tree, aabb& box, int* nodePointerArray, int offset, int count);\nextern \"C\" NATIVEDAABBTREE_API int QuerySixPlanes(btDbvt* tree, float* x, float* y, float* z, float* d, int* nodePointerArray, int offset, int count);\nextern \"C\" NATIVEDAABBTREE_API int QuerySphere(btDbvt* tree, vector& sphereCenter, float sphereRadius, int* nodePointerArray, int offset, int count);\nextern \"C\" NATIVEDAABBTREE_API int QueryRay(btDbvt* tree, vector& start, vector& dir, int* nodePointerArray, int offset, int count);\nextern \"C\" NATIVEDAABBTREE_API int QueryRayNotThreadSafe(btDbvt* tree, vector& start, vector& dir, int* nodePointerArray, int offset, int count);\n"
  },
  {
    "path": "Sources/NativeDAABBTree/NativeDAABBTree.vcxproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project DefaultTargets=\"Build\" ToolsVersion=\"4.0\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <ItemGroup Label=\"ProjectConfigurations\">\n    <ProjectConfiguration Include=\"Debug|Win32\">\n      <Configuration>Debug</Configuration>\n      <Platform>Win32</Platform>\n    </ProjectConfiguration>\n    <ProjectConfiguration Include=\"Release|Win32\">\n      <Configuration>Release</Configuration>\n      <Platform>Win32</Platform>\n    </ProjectConfiguration>\n  </ItemGroup>\n  <PropertyGroup Label=\"Globals\">\n    <ProjectGuid>{FA70EFDD-B850-426A-B546-4E8A81D6C520}</ProjectGuid>\n    <Keyword>Win32Proj</Keyword>\n    <RootNamespace>NativeDAABBTree</RootNamespace>\n  </PropertyGroup>\n  <Import Project=\"$(VCTargetsPath)\\Microsoft.Cpp.Default.props\" />\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)'=='Debug|Win32'\" Label=\"Configuration\">\n    <ConfigurationType>DynamicLibrary</ConfigurationType>\n    <UseDebugLibraries>true</UseDebugLibraries>\n    <CharacterSet>Unicode</CharacterSet>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)'=='Release|Win32'\" Label=\"Configuration\">\n    <ConfigurationType>DynamicLibrary</ConfigurationType>\n    <UseDebugLibraries>false</UseDebugLibraries>\n    <WholeProgramOptimization>true</WholeProgramOptimization>\n    <CharacterSet>Unicode</CharacterSet>\n  </PropertyGroup>\n  <Import Project=\"$(VCTargetsPath)\\Microsoft.Cpp.props\" />\n  <ImportGroup Label=\"ExtensionSettings\">\n  </ImportGroup>\n  <ImportGroup Label=\"PropertySheets\" Condition=\"'$(Configuration)|$(Platform)'=='Debug|Win32'\">\n    <Import Project=\"$(UserRootDir)\\Microsoft.Cpp.$(Platform).user.props\" Condition=\"exists('$(UserRootDir)\\Microsoft.Cpp.$(Platform).user.props')\" Label=\"LocalAppDataPlatform\" />\n  </ImportGroup>\n  <ImportGroup Label=\"PropertySheets\" Condition=\"'$(Configuration)|$(Platform)'=='Release|Win32'\">\n    <Import Project=\"$(UserRootDir)\\Microsoft.Cpp.$(Platform).user.props\" Condition=\"exists('$(UserRootDir)\\Microsoft.Cpp.$(Platform).user.props')\" Label=\"LocalAppDataPlatform\" />\n  </ImportGroup>\n  <PropertyGroup Label=\"UserMacros\" />\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)'=='Debug|Win32'\">\n    <LinkIncremental>true</LinkIncremental>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)'=='Release|Win32'\">\n    <LinkIncremental>false</LinkIncremental>\n  </PropertyGroup>\n  <ItemDefinitionGroup Condition=\"'$(Configuration)|$(Platform)'=='Debug|Win32'\">\n    <ClCompile>\n      <PrecompiledHeader>NotUsing</PrecompiledHeader>\n      <WarningLevel>Level3</WarningLevel>\n      <Optimization>Disabled</Optimization>\n      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;NATIVEDAABBTREE_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>\n    </ClCompile>\n    <Link>\n      <SubSystem>Windows</SubSystem>\n      <GenerateDebugInformation>true</GenerateDebugInformation>\n    </Link>\n  </ItemDefinitionGroup>\n  <ItemDefinitionGroup Condition=\"'$(Configuration)|$(Platform)'=='Release|Win32'\">\n    <ClCompile>\n      <WarningLevel>Level3</WarningLevel>\n      <PrecompiledHeader>NotUsing</PrecompiledHeader>\n      <Optimization>MaxSpeed</Optimization>\n      <FunctionLevelLinking>true</FunctionLevelLinking>\n      <IntrinsicFunctions>true</IntrinsicFunctions>\n      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;NATIVEDAABBTREE_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>\n    </ClCompile>\n    <Link>\n      <SubSystem>Windows</SubSystem>\n      <GenerateDebugInformation>true</GenerateDebugInformation>\n      <EnableCOMDATFolding>true</EnableCOMDATFolding>\n      <OptimizeReferences>true</OptimizeReferences>\n    </Link>\n  </ItemDefinitionGroup>\n  <ItemGroup>\n    <None Include=\"ReadMe.txt\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ClInclude Include=\"btDbvt.h\" />\n    <ClInclude Include=\"CollideArrayWriter.h\" />\n    <ClInclude Include=\"CollideArrayWriterSphere.h\" />\n    <ClInclude Include=\"LinearMath\\btAabbUtil2.h\" />\n    <ClInclude Include=\"LinearMath\\btAlignedAllocator.h\" />\n    <ClInclude Include=\"LinearMath\\btAlignedObjectArray.h\" />\n    <ClInclude Include=\"LinearMath\\btMatrix3x3.h\" />\n    <ClInclude Include=\"LinearMath\\btMinMax.h\" />\n    <ClInclude Include=\"LinearMath\\btQuadWord.h\" />\n    <ClInclude Include=\"LinearMath\\btQuaternion.h\" />\n    <ClInclude Include=\"LinearMath\\btScalar.h\" />\n    <ClInclude Include=\"LinearMath\\btTransform.h\" />\n    <ClInclude Include=\"LinearMath\\btVector3.h\" />\n    <ClInclude Include=\"NativeDAABBTree.h\" />\n    <ClInclude Include=\"stdafx.h\" />\n    <ClInclude Include=\"targetver.h\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ClCompile Include=\"btDbvt.cpp\" />\n    <ClCompile Include=\"dllmain.cpp\">\n      <CompileAsManaged Condition=\"'$(Configuration)|$(Platform)'=='Debug|Win32'\">false</CompileAsManaged>\n      <PrecompiledHeader Condition=\"'$(Configuration)|$(Platform)'=='Debug|Win32'\">\n      </PrecompiledHeader>\n      <CompileAsManaged Condition=\"'$(Configuration)|$(Platform)'=='Release|Win32'\">false</CompileAsManaged>\n      <PrecompiledHeader Condition=\"'$(Configuration)|$(Platform)'=='Release|Win32'\">\n      </PrecompiledHeader>\n    </ClCompile>\n    <ClCompile Include=\"LinearMath\\btAlignedAllocator.cpp\" />\n    <ClCompile Include=\"LinearMath\\btVector3.cpp\" />\n    <ClCompile Include=\"NativeDAABBTree.cpp\" />\n    <ClCompile Include=\"stdafx.cpp\">\n      <PrecompiledHeader Condition=\"'$(Configuration)|$(Platform)'=='Debug|Win32'\">Create</PrecompiledHeader>\n      <PrecompiledHeader Condition=\"'$(Configuration)|$(Platform)'=='Release|Win32'\">Create</PrecompiledHeader>\n    </ClCompile>\n  </ItemGroup>\n  <Import Project=\"$(VCTargetsPath)\\Microsoft.Cpp.targets\" />\n  <ImportGroup Label=\"ExtensionTargets\">\n  </ImportGroup>\n</Project>"
  },
  {
    "path": "Sources/NativeDAABBTree/NativeDAABBTree.vcxproj.filters",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"4.0\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <ItemGroup>\n    <Filter Include=\"Source Files\">\n      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>\n      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>\n    </Filter>\n    <Filter Include=\"Header Files\">\n      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>\n      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>\n    </Filter>\n    <Filter Include=\"Resource Files\">\n      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>\n      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>\n    </Filter>\n  </ItemGroup>\n  <ItemGroup>\n    <None Include=\"ReadMe.txt\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ClInclude Include=\"stdafx.h\">\n      <Filter>Header Files</Filter>\n    </ClInclude>\n    <ClInclude Include=\"targetver.h\">\n      <Filter>Header Files</Filter>\n    </ClInclude>\n    <ClInclude Include=\"NativeDAABBTree.h\">\n      <Filter>Header Files</Filter>\n    </ClInclude>\n    <ClInclude Include=\"btDbvt.h\">\n      <Filter>Header Files</Filter>\n    </ClInclude>\n    <ClInclude Include=\"LinearMath\\btAlignedObjectArray.h\">\n      <Filter>Header Files</Filter>\n    </ClInclude>\n    <ClInclude Include=\"LinearMath\\btVector3.h\">\n      <Filter>Header Files</Filter>\n    </ClInclude>\n    <ClInclude Include=\"LinearMath\\btTransform.h\">\n      <Filter>Header Files</Filter>\n    </ClInclude>\n    <ClInclude Include=\"LinearMath\\btAabbUtil2.h\">\n      <Filter>Header Files</Filter>\n    </ClInclude>\n    <ClInclude Include=\"LinearMath\\btMinMax.h\">\n      <Filter>Header Files</Filter>\n    </ClInclude>\n    <ClInclude Include=\"LinearMath\\btAlignedAllocator.h\">\n      <Filter>Header Files</Filter>\n    </ClInclude>\n    <ClInclude Include=\"LinearMath\\btScalar.h\">\n      <Filter>Header Files</Filter>\n    </ClInclude>\n    <ClInclude Include=\"LinearMath\\btMatrix3x3.h\">\n      <Filter>Header Files</Filter>\n    </ClInclude>\n    <ClInclude Include=\"LinearMath\\btQuaternion.h\">\n      <Filter>Header Files</Filter>\n    </ClInclude>\n    <ClInclude Include=\"LinearMath\\btQuadWord.h\">\n      <Filter>Header Files</Filter>\n    </ClInclude>\n    <ClInclude Include=\"CollideArrayWriter.h\">\n      <Filter>Header Files</Filter>\n    </ClInclude>\n    <ClInclude Include=\"CollideArrayWriterSphere.h\">\n      <Filter>Header Files</Filter>\n    </ClInclude>\n  </ItemGroup>\n  <ItemGroup>\n    <ClCompile Include=\"stdafx.cpp\">\n      <Filter>Source Files</Filter>\n    </ClCompile>\n    <ClCompile Include=\"NativeDAABBTree.cpp\">\n      <Filter>Source Files</Filter>\n    </ClCompile>\n    <ClCompile Include=\"dllmain.cpp\">\n      <Filter>Source Files</Filter>\n    </ClCompile>\n    <ClCompile Include=\"btDbvt.cpp\">\n      <Filter>Source Files</Filter>\n    </ClCompile>\n    <ClCompile Include=\"LinearMath\\btVector3.cpp\">\n      <Filter>Source Files</Filter>\n    </ClCompile>\n    <ClCompile Include=\"LinearMath\\btAlignedAllocator.cpp\">\n      <Filter>Source Files</Filter>\n    </ClCompile>\n  </ItemGroup>\n</Project>"
  },
  {
    "path": "Sources/NativeDAABBTree/ReadMe.txt",
    "content": "========================================================================\n    DYNAMIC LINK LIBRARY : NativeDAABBTree Project Overview\n========================================================================\n\nAppWizard has created this NativeDAABBTree DLL for you.\n\nThis file contains a summary of what you will find in each of the files that\nmake up your NativeDAABBTree application.\n\n\nNativeDAABBTree.vcxproj\n    This is the main project file for VC++ projects generated using an Application Wizard.\n    It contains information about the version of Visual C++ that generated the file, and\n    information about the platforms, configurations, and project features selected with the\n    Application Wizard.\n\nNativeDAABBTree.vcxproj.filters\n    This is the filters file for VC++ projects generated using an Application Wizard. \n    It contains information about the association between the files in your project \n    and the filters. This association is used in the IDE to show grouping of files with\n    similar extensions under a specific node (for e.g. \".cpp\" files are associated with the\n    \"Source Files\" filter).\n\nNativeDAABBTree.cpp\n    This is the main DLL source file.\n\n/////////////////////////////////////////////////////////////////////////////\nOther standard files:\n\nStdAfx.h, StdAfx.cpp\n    These files are used to build a precompiled header (PCH) file\n    named NativeDAABBTree.pch and a precompiled types file named StdAfx.obj.\n\n/////////////////////////////////////////////////////////////////////////////\nOther notes:\n\nAppWizard uses \"TODO:\" comments to indicate parts of the source code you\nshould add to or customize.\n\n/////////////////////////////////////////////////////////////////////////////\n"
  },
  {
    "path": "Sources/NativeDAABBTree/btDbvt.cpp",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose,\nincluding commercial applications, and to alter it and redistribute it freely,\nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n///btDbvt implementation by Nathanael Presson\n\n#include \"btDbvt.h\"\n\n//\ntypedef btAlignedObjectArray<btDbvtNode*>\t\t\ttNodeArray;\ntypedef btAlignedObjectArray<const btDbvtNode*>\ttConstNodeArray;\n\n//\nstruct btDbvtNodeEnumerator : btDbvt::ICollide\n{\n\ttConstNodeArray\tnodes;\n\tvoid Process(const btDbvtNode* n) { nodes.push_back(n); }\n};\n\n//\nstatic DBVT_INLINE int\t\t\tindexof(const btDbvtNode* node)\n{\n\treturn(node->parent->childs[1]==node);\n}\n\n//\nstatic DBVT_INLINE btDbvtVolume\tmerge(\tconst btDbvtVolume& a,\n\t\t\t\t\t\t\t\t\t  const btDbvtVolume& b)\n{\n#if (DBVT_MERGE_IMPL==DBVT_IMPL_SSE)\n\tATTRIBUTE_ALIGNED16(char locals[sizeof(btDbvtAabbMm)]);\n\tbtDbvtVolume&\tres=*(btDbvtVolume*)locals;\n#else\n\t\tbtDbvtVolume\tres;\n#endif\n\tMerge(a,b,res);\n\treturn(res);\n}\n\n// volume+edge lengths\nstatic DBVT_INLINE btScalar\t\tsize(const btDbvtVolume& a)\n{\n\tconst btVector3\tedges=a.Lengths();\n\treturn(\tedges.x()*edges.y()*edges.z()+\n\t\tedges.x()+edges.y()+edges.z());\n}\n\n//\nstatic void\t\t\t\t\t\tgetmaxdepth(const btDbvtNode* node,int depth,int& maxdepth)\n{\n\tif(node->isinternal())\n\t{\n\t\tgetmaxdepth(node->childs[0],depth+1,maxdepth);\n\t\tgetmaxdepth(node->childs[1],depth+1,maxdepth);\n\t} else maxdepth=btMax(maxdepth,depth);\n}\n\n//\nstatic DBVT_INLINE void\t\t\tdeletenode(\tbtDbvt* pdbvt,\n\t\t\t\t\t\t\t\t\t\t   btDbvtNode* node)\n{\n\tbtAlignedFree(pdbvt->m_free);\n\tpdbvt->m_free=node;\n}\n\n//\nstatic void\t\t\t\t\t\trecursedeletenode(\tbtDbvt* pdbvt,\n\t\t\t\t\t\t\t\t\t\t\t\t  btDbvtNode* node)\n{\n\tif(!node->isleaf())\n\t{\n\t\trecursedeletenode(pdbvt,node->childs[0]);\n\t\trecursedeletenode(pdbvt,node->childs[1]);\n\t}\n\tif(node==pdbvt->m_root) pdbvt->m_root=0;\n\tdeletenode(pdbvt,node);\n}\n\n//\nstatic DBVT_INLINE btDbvtNode*\tcreatenode(\tbtDbvt* pdbvt,\n\t\t\t\t\t\t\t\t\t\t   btDbvtNode* parent,\n\t\t\t\t\t\t\t\t\t\t   void* data)\n{\n\tbtDbvtNode*\tnode;\n\tif(pdbvt->m_free)\n\t{ node=pdbvt->m_free;pdbvt->m_free=0; }\n\telse\n\t{ node=new(btAlignedAlloc(sizeof(btDbvtNode),16)) btDbvtNode(); }\n\tnode->parent\t=\tparent;\n\tnode->data\t\t=\tdata;\n\tnode->childs[1]\t=\t0;\n\treturn(node);\n}\n\n//\nstatic DBVT_INLINE btDbvtNode*\tcreatenode(\tbtDbvt* pdbvt,\n\t\t\t\t\t\t\t\t\t\t   btDbvtNode* parent,\n\t\t\t\t\t\t\t\t\t\t   const btDbvtVolume& volume,\n\t\t\t\t\t\t\t\t\t\t   void* data)\n{\n\tbtDbvtNode*\tnode=createnode(pdbvt,parent,data);\n\tnode->volume=volume;\n\treturn(node);\n}\n\n//\nstatic DBVT_INLINE btDbvtNode*\tcreatenode(\tbtDbvt* pdbvt,\n\t\t\t\t\t\t\t\t\t\t   btDbvtNode* parent,\n\t\t\t\t\t\t\t\t\t\t   const btDbvtVolume& volume0,\n\t\t\t\t\t\t\t\t\t\t   const btDbvtVolume& volume1,\n\t\t\t\t\t\t\t\t\t\t   void* data)\n{\n\tbtDbvtNode*\tnode=createnode(pdbvt,parent,data);\n\tMerge(volume0,volume1,node->volume);\n\treturn(node);\n}\n\n//\nstatic void\t\t\t\t\t\tinsertleaf(\tbtDbvt* pdbvt,\n\t\t\t\t\t\t\t\t\t\t   btDbvtNode* root,\n\t\t\t\t\t\t\t\t\t\t   btDbvtNode* leaf)\n{\n\tif(!pdbvt->m_root)\n\t{\n\t\tpdbvt->m_root\t=\tleaf;\n\t\tleaf->parent\t=\t0;\n\t}\n\telse\n\t{\n\t\tif(!root->isleaf())\n\t\t{\n\t\t\tdo\t{\n\t\t\t\troot=root->childs[Select(\tleaf->volume,\n\t\t\t\t\troot->childs[0]->volume,\n\t\t\t\t\troot->childs[1]->volume)];\n\t\t\t} while(!root->isleaf());\n\t\t}\n\t\tbtDbvtNode*\tprev=root->parent;\n\t\tbtDbvtNode*\tnode=createnode(pdbvt,prev,leaf->volume,root->volume,0);\n\t\tif(prev)\n\t\t{\n\t\t\tprev->childs[indexof(root)]\t=\tnode;\n\t\t\tnode->childs[0]\t\t\t\t=\troot;root->parent=node;\n\t\t\tnode->childs[1]\t\t\t\t=\tleaf;leaf->parent=node;\n\t\t\tdo\t{\n\t\t\t\tif(!prev->volume.Contain(node->volume))\n\t\t\t\t\tMerge(prev->childs[0]->volume,prev->childs[1]->volume,prev->volume);\n\t\t\t\telse\n\t\t\t\t\tbreak;\n\t\t\t\tnode=prev;\n\t\t\t} while(0!=(prev=node->parent));\n\t\t}\n\t\telse\n\t\t{\n\t\t\tnode->childs[0]\t=\troot;root->parent=node;\n\t\t\tnode->childs[1]\t=\tleaf;leaf->parent=node;\n\t\t\tpdbvt->m_root\t=\tnode;\n\t\t}\n\t}\n}\n\n//\nstatic btDbvtNode*\t\t\t\tremoveleaf(\tbtDbvt* pdbvt,\n\t\t\t\t\t\t\t\t\t\t   btDbvtNode* leaf)\n{\n\tif(leaf==pdbvt->m_root)\n\t{\n\t\tpdbvt->m_root=0;\n\t\treturn(0);\n\t}\n\telse\n\t{\n\t\tbtDbvtNode*\tparent=leaf->parent;\n\t\tbtDbvtNode*\tprev=parent->parent;\n\t\tbtDbvtNode*\tsibling=parent->childs[1-indexof(leaf)];\t\t\t\n\t\tif(prev)\n\t\t{\n\t\t\tprev->childs[indexof(parent)]=sibling;\n\t\t\tsibling->parent=prev;\n\t\t\tdeletenode(pdbvt,parent);\n\t\t\twhile(prev)\n\t\t\t{\n\t\t\t\tconst btDbvtVolume\tpb=prev->volume;\n\t\t\t\tMerge(prev->childs[0]->volume,prev->childs[1]->volume,prev->volume);\n\t\t\t\tif(NotEqual(pb,prev->volume))\n\t\t\t\t{\n\t\t\t\t\tprev=prev->parent;\n\t\t\t\t} else break;\n\t\t\t}\n\t\t\treturn(prev?prev:pdbvt->m_root);\n\t\t}\n\t\telse\n\t\t{\t\t\t\t\t\t\t\t\n\t\t\tpdbvt->m_root=sibling;\n\t\t\tsibling->parent=0;\n\t\t\tdeletenode(pdbvt,parent);\n\t\t\treturn(pdbvt->m_root);\n\t\t}\t\t\t\n\t}\n}\n\n//\nstatic void\t\t\t\t\t\tfetchleaves(btDbvt* pdbvt,\n\t\t\t\t\t\t\t\t\t\t\tbtDbvtNode* root,\n\t\t\t\t\t\t\t\t\t\t\ttNodeArray& leaves,\n\t\t\t\t\t\t\t\t\t\t\tint depth=-1)\n{\n\tif(root->isinternal()&&depth)\n\t{\n\t\tfetchleaves(pdbvt,root->childs[0],leaves,depth-1);\n\t\tfetchleaves(pdbvt,root->childs[1],leaves,depth-1);\n\t\tdeletenode(pdbvt,root);\n\t}\n\telse\n\t{\n\t\tleaves.push_back(root);\n\t}\n}\n\n//\nstatic void\t\t\t\t\t\tsplit(\tconst tNodeArray& leaves,\n\t\t\t\t\t\t\t\t\t  tNodeArray& left,\n\t\t\t\t\t\t\t\t\t  tNodeArray& right,\n\t\t\t\t\t\t\t\t\t  const btVector3& org,\n\t\t\t\t\t\t\t\t\t  const btVector3& axis)\n{\n\tleft.resize(0);\n\tright.resize(0);\n\tfor(int i=0,ni=leaves.size();i<ni;++i)\n\t{\n\t\tif(btDot(axis,leaves[i]->volume.Center()-org)<0)\n\t\t\tleft.push_back(leaves[i]);\n\t\telse\n\t\t\tright.push_back(leaves[i]);\n\t}\n}\n\n//\nstatic btDbvtVolume\t\t\t\tbounds(\tconst tNodeArray& leaves)\n{\n#if DBVT_MERGE_IMPL==DBVT_IMPL_SSE\n\tATTRIBUTE_ALIGNED16(char\tlocals[sizeof(btDbvtVolume)]);\n\tbtDbvtVolume&\tvolume=*(btDbvtVolume*)locals;\n\tvolume=leaves[0]->volume;\n#else\n\tbtDbvtVolume volume=leaves[0]->volume;\n#endif\n\tfor(int i=1,ni=leaves.size();i<ni;++i)\n\t{\n\t\tMerge(volume,leaves[i]->volume,volume);\n\t}\n\treturn(volume);\n}\n\n//\nstatic void\t\t\t\t\t\tbottomup(\tbtDbvt* pdbvt,\n\t\t\t\t\t\t\t\t\t\t tNodeArray& leaves)\n{\n\twhile(leaves.size()>1)\n\t{\n\t\tbtScalar\tminsize=SIMD_INFINITY;\n\t\tint\t\t\tminidx[2]={-1,-1};\n\t\tfor(int i=0;i<leaves.size();++i)\n\t\t{\n\t\t\tfor(int j=i+1;j<leaves.size();++j)\n\t\t\t{\n\t\t\t\tconst btScalar\tsz=size(merge(leaves[i]->volume,leaves[j]->volume));\n\t\t\t\tif(sz<minsize)\n\t\t\t\t{\n\t\t\t\t\tminsize\t\t=\tsz;\n\t\t\t\t\tminidx[0]\t=\ti;\n\t\t\t\t\tminidx[1]\t=\tj;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tbtDbvtNode*\tn[]\t=\t{leaves[minidx[0]],leaves[minidx[1]]};\n\t\tbtDbvtNode*\tp\t=\tcreatenode(pdbvt,0,n[0]->volume,n[1]->volume,0);\n\t\tp->childs[0]\t\t=\tn[0];\n\t\tp->childs[1]\t\t=\tn[1];\n\t\tn[0]->parent\t\t=\tp;\n\t\tn[1]->parent\t\t=\tp;\n\t\tleaves[minidx[0]]\t=\tp;\n\t\tleaves.swap(minidx[1],leaves.size()-1);\n\t\tleaves.pop_back();\n\t}\n}\n\n//\nstatic btDbvtNode*\t\t\ttopdown(btDbvt* pdbvt,\n\t\t\t\t\t\t\t\t\ttNodeArray& leaves,\n\t\t\t\t\t\t\t\t\tint bu_treshold)\n{\n\tstatic const btVector3\taxis[]={btVector3(1,0,0),\n\t\tbtVector3(0,1,0),\n\t\tbtVector3(0,0,1)};\n\tif(leaves.size()>1)\n\t{\n\t\tif(leaves.size()>bu_treshold)\n\t\t{\n\t\t\tconst btDbvtVolume\tvol=bounds(leaves);\n\t\t\tconst btVector3\t\t\torg=vol.Center();\n\t\t\ttNodeArray\t\t\t\tsets[2];\n\t\t\tint\t\t\t\t\t\tbestaxis=-1;\n\t\t\tint\t\t\t\t\t\tbestmidp=leaves.size();\n\t\t\tint\t\t\t\t\t\tsplitcount[3][2]={{0,0},{0,0},{0,0}};\n\t\t\tint i;\n\t\t\tfor( i=0;i<leaves.size();++i)\n\t\t\t{\n\t\t\t\tconst btVector3\tx=leaves[i]->volume.Center()-org;\n\t\t\t\tfor(int j=0;j<3;++j)\n\t\t\t\t{\n\t\t\t\t\t++splitcount[j][btDot(x,axis[j])>0?1:0];\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor( i=0;i<3;++i)\n\t\t\t{\n\t\t\t\tif((splitcount[i][0]>0)&&(splitcount[i][1]>0))\n\t\t\t\t{\n\t\t\t\t\tconst int\tmidp=(int)btFabs(btScalar(splitcount[i][0]-splitcount[i][1]));\n\t\t\t\t\tif(midp<bestmidp)\n\t\t\t\t\t{\n\t\t\t\t\t\tbestaxis=i;\n\t\t\t\t\t\tbestmidp=midp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(bestaxis>=0)\n\t\t\t{\n\t\t\t\tsets[0].reserve(splitcount[bestaxis][0]);\n\t\t\t\tsets[1].reserve(splitcount[bestaxis][1]);\n\t\t\t\tsplit(leaves,sets[0],sets[1],org,axis[bestaxis]);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tsets[0].reserve(leaves.size()/2+1);\n\t\t\t\tsets[1].reserve(leaves.size()/2);\n\t\t\t\tfor(int i=0,ni=leaves.size();i<ni;++i)\n\t\t\t\t{\n\t\t\t\t\tsets[i&1].push_back(leaves[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t\tbtDbvtNode*\tnode=createnode(pdbvt,0,vol,0);\n\t\t\tnode->childs[0]=topdown(pdbvt,sets[0],bu_treshold);\n\t\t\tnode->childs[1]=topdown(pdbvt,sets[1],bu_treshold);\n\t\t\tnode->childs[0]->parent=node;\n\t\t\tnode->childs[1]->parent=node;\n\t\t\treturn(node);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tbottomup(pdbvt,leaves);\n\t\t\treturn(leaves[0]);\n\t\t}\n\t}\n\treturn(leaves[0]);\n}\n\n//\nstatic DBVT_INLINE btDbvtNode*\tsort(btDbvtNode* n,btDbvtNode*& r)\n{\n\tbtDbvtNode*\tp=n->parent;\n\tbtAssert(n->isinternal());\n\tif(p>n)\n\t{\n\t\tconst int\t\ti=indexof(n);\n\t\tconst int\t\tj=1-i;\n\t\tbtDbvtNode*\ts=p->childs[j];\n\t\tbtDbvtNode*\tq=p->parent;\n\t\tbtAssert(n==p->childs[i]);\n\t\tif(q) q->childs[indexof(p)]=n; else r=n;\n\t\ts->parent=n;\n\t\tp->parent=n;\n\t\tn->parent=q;\n\t\tp->childs[0]=n->childs[0];\n\t\tp->childs[1]=n->childs[1];\n\t\tn->childs[0]->parent=p;\n\t\tn->childs[1]->parent=p;\n\t\tn->childs[i]=p;\n\t\tn->childs[j]=s;\n\t\tbtSwap(p->volume,n->volume);\n\t\treturn(p);\n\t}\n\treturn(n);\n}\n\n#if 0\nstatic DBVT_INLINE btDbvtNode*\twalkup(btDbvtNode* n,int count)\n{\n\twhile(n&&(count--)) n=n->parent;\n\treturn(n);\n}\n#endif\n\n//\n// Api\n//\n\n//\nbtDbvt::btDbvt()\n{\n\tm_root\t\t=\t0;\n\tm_free\t\t=\t0;\n\tm_lkhd\t\t=\t-1;\n\tm_leaves\t=\t0;\n\tm_opath\t\t=\t0;\n}\n\n//\nbtDbvt::~btDbvt()\n{\n\tclear();\n}\n\n//\nvoid\t\t\tbtDbvt::clear()\n{\n\tif(m_root)\t\n\t\trecursedeletenode(this,m_root);\n\tbtAlignedFree(m_free);\n\tm_free=0;\n\tm_lkhd\t\t=\t-1;\n\tm_stkStack.clear();\n\tm_opath\t\t=\t0;\n\t\n}\n\n//\nvoid\t\t\tbtDbvt::optimizeBottomUp()\n{\n\tif(m_root)\n\t{\n\t\ttNodeArray leaves;\n\t\tleaves.reserve(m_leaves);\n\t\tfetchleaves(this,m_root,leaves);\n\t\tbottomup(this,leaves);\n\t\tm_root=leaves[0];\n\t}\n}\n\n//\nvoid\t\t\tbtDbvt::optimizeTopDown(int bu_treshold)\n{\n\tif(m_root)\n\t{\n\t\ttNodeArray\tleaves;\n\t\tleaves.reserve(m_leaves);\n\t\tfetchleaves(this,m_root,leaves);\n\t\tm_root=topdown(this,leaves,bu_treshold);\n\t}\n}\n\n//\nvoid\t\t\tbtDbvt::optimizeIncremental(int passes)\n{\n\tif(passes<0) passes=m_leaves;\n\tif(m_root&&(passes>0))\n\t{\n\t\tdo\t{\n\t\t\tbtDbvtNode*\t\tnode=m_root;\n\t\t\tunsigned\tbit=0;\n\t\t\twhile(node->isinternal())\n\t\t\t{\n\t\t\t\tnode=sort(node,m_root)->childs[(m_opath>>bit)&1];\n\t\t\t\tbit=(bit+1)&(sizeof(unsigned)*8-1);\n\t\t\t}\n\t\t\tupdate(node);\n\t\t\t++m_opath;\n\t\t} while(--passes);\n\t}\n}\n\n//\nbtDbvtNode*\tbtDbvt::insert(const btDbvtVolume& volume,void* data)\n{\n\tbtDbvtNode*\tleaf=createnode(this,0,volume,data);\n\tinsertleaf(this,m_root,leaf);\n\t++m_leaves;\n\treturn(leaf);\n}\n\n//\nvoid\t\t\tbtDbvt::update(btDbvtNode* leaf,int lookahead)\n{\n\tbtDbvtNode*\troot=removeleaf(this,leaf);\n\tif(root)\n\t{\n\t\tif(lookahead>=0)\n\t\t{\n\t\t\tfor(int i=0;(i<lookahead)&&root->parent;++i)\n\t\t\t{\n\t\t\t\troot=root->parent;\n\t\t\t}\n\t\t} else root=m_root;\n\t}\n\tinsertleaf(this,root,leaf);\n}\n\n//\nvoid\t\t\tbtDbvt::update(btDbvtNode* leaf,btDbvtVolume& volume)\n{\n\tbtDbvtNode*\troot=removeleaf(this,leaf);\n\tif(root)\n\t{\n\t\tif(m_lkhd>=0)\n\t\t{\n\t\t\tfor(int i=0;(i<m_lkhd)&&root->parent;++i)\n\t\t\t{\n\t\t\t\troot=root->parent;\n\t\t\t}\n\t\t} else root=m_root;\n\t}\n\tleaf->volume=volume;\n\tinsertleaf(this,root,leaf);\n}\n\n//\nbool\t\t\tbtDbvt::update(btDbvtNode* leaf,btDbvtVolume& volume,const btVector3& velocity,btScalar margin)\n{\n\tif(leaf->volume.Contain(volume)) return(false);\n\tvolume.Expand(btVector3(margin,margin,margin));\n\tvolume.SignedExpand(velocity);\n\tupdate(leaf,volume);\n\treturn(true);\n}\n\n//\nbool\t\t\tbtDbvt::update(btDbvtNode* leaf,btDbvtVolume& volume,const btVector3& velocity)\n{\n\tif(leaf->volume.Contain(volume)) return(false);\n\tvolume.SignedExpand(velocity);\n\tupdate(leaf,volume);\n\treturn(true);\n}\n\n//\nbool\t\t\tbtDbvt::update(btDbvtNode* leaf,btDbvtVolume& volume,btScalar margin)\n{\n\tif(leaf->volume.Contain(volume)) return(false);\n\tvolume.Expand(btVector3(margin,margin,margin));\n\tupdate(leaf,volume);\n\treturn(true);\n}\n\n//\nvoid\t\t\tbtDbvt::remove(btDbvtNode* leaf)\n{\n\tremoveleaf(this,leaf);\n\tdeletenode(this,leaf);\n\t--m_leaves;\n}\n\n//\nvoid\t\t\tbtDbvt::write(IWriter* iwriter) const\n{\n\tbtDbvtNodeEnumerator\tnodes;\n\tnodes.nodes.reserve(m_leaves*2);\n\tenumNodes(m_root,nodes);\n\tiwriter->Prepare(m_root,nodes.nodes.size());\n\tfor(int i=0;i<nodes.nodes.size();++i)\n\t{\n\t\tconst btDbvtNode* n=nodes.nodes[i];\n\t\tint\t\t\tp=-1;\n\t\tif(n->parent) p=nodes.nodes.findLinearSearch(n->parent);\n\t\tif(n->isinternal())\n\t\t{\n\t\t\tconst int\tc0=nodes.nodes.findLinearSearch(n->childs[0]);\n\t\t\tconst int\tc1=nodes.nodes.findLinearSearch(n->childs[1]);\n\t\t\tiwriter->WriteNode(n,i,p,c0,c1);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tiwriter->WriteLeaf(n,i,p);\n\t\t}\t\n\t}\n}\n\n//\nvoid\t\t\tbtDbvt::clone(btDbvt& dest,IClone* iclone) const\n{\n\tdest.clear();\n\tif(m_root!=0)\n\t{\t\n\t\tbtAlignedObjectArray<sStkCLN>\tstack;\n\t\tstack.reserve(m_leaves);\n\t\tstack.push_back(sStkCLN(m_root,0));\n\t\tdo\t{\n\t\t\tconst int\t\ti=stack.size()-1;\n\t\t\tconst sStkCLN\te=stack[i];\n\t\t\tbtDbvtNode*\t\t\tn=createnode(&dest,e.parent,e.node->volume,e.node->data);\n\t\t\tstack.pop_back();\n\t\t\tif(e.parent!=0)\n\t\t\t\te.parent->childs[i&1]=n;\n\t\t\telse\n\t\t\t\tdest.m_root=n;\n\t\t\tif(e.node->isinternal())\n\t\t\t{\n\t\t\t\tstack.push_back(sStkCLN(e.node->childs[0],n));\n\t\t\t\tstack.push_back(sStkCLN(e.node->childs[1],n));\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\ticlone->CloneLeaf(n);\n\t\t\t}\n\t\t} while(stack.size()>0);\n\t}\n}\n\n//\nint\t\t\t\tbtDbvt::maxdepth(const btDbvtNode* node)\n{\n\tint\tdepth=0;\n\tif(node) getmaxdepth(node,1,depth);\n\treturn(depth);\n}\n\n//\nint\t\t\t\tbtDbvt::countLeaves(const btDbvtNode* node)\n{\n\tif(node->isinternal())\n\t\treturn(countLeaves(node->childs[0])+countLeaves(node->childs[1]));\n\telse\n\t\treturn(1);\n}\n\n//\nvoid\t\t\tbtDbvt::extractLeaves(const btDbvtNode* node,btAlignedObjectArray<const btDbvtNode*>& leaves)\n{\n\tif(node->isinternal())\n\t{\n\t\textractLeaves(node->childs[0],leaves);\n\t\textractLeaves(node->childs[1],leaves);\n\t}\n\telse\n\t{\n\t\tleaves.push_back(node);\n\t}\t\n}\n\n//\n#if DBVT_ENABLE_BENCHMARK\n\n#include <stdio.h>\n#include <stdlib.h>\n#include \"LinearMath/btQuickProf.h\"\n\n/*\nq6600,2.4ghz\n\n/Ox /Ob2 /Oi /Ot /I \".\" /I \"..\\..\" /I \"..\\..\\src\" /D \"NDEBUG\" /D \"_LIB\" /D \"_WINDOWS\" /D \"_CRT_SECURE_NO_DEPRECATE\" /D \"_CRT_NONSTDC_NO_DEPRECATE\" /D \"WIN32\"\n/GF /FD /MT /GS- /Gy /arch:SSE2 /Zc:wchar_t- /Fp\"..\\..\\out\\release8\\build\\libbulletcollision\\libbulletcollision.pch\"\n/Fo\"..\\..\\out\\release8\\build\\libbulletcollision\\\\\"\n/Fd\"..\\..\\out\\release8\\build\\libbulletcollision\\bulletcollision.pdb\"\n/W3 /nologo /c /Wp64 /Zi /errorReport:prompt\n\nBenchmarking dbvt...\nWorld scale: 100.000000\nExtents base: 1.000000\nExtents range: 4.000000\nLeaves: 8192\nsizeof(btDbvtVolume): 32 bytes\nsizeof(btDbvtNode):   44 bytes\n[1] btDbvtVolume intersections: 3499 ms (-1%)\n[2] btDbvtVolume merges: 1934 ms (0%)\n[3] btDbvt::collideTT: 5485 ms (-21%)\n[4] btDbvt::collideTT self: 2814 ms (-20%)\n[5] btDbvt::collideTT xform: 7379 ms (-1%)\n[6] btDbvt::collideTT xform,self: 7270 ms (-2%)\n[7] btDbvt::rayTest: 6314 ms (0%),(332143 r/s)\n[8] insert/remove: 2093 ms (0%),(1001983 ir/s)\n[9] updates (teleport): 1879 ms (-3%),(1116100 u/s)\n[10] updates (jitter): 1244 ms (-4%),(1685813 u/s)\n[11] optimize (incremental): 2514 ms (0%),(1668000 o/s)\n[12] btDbvtVolume notequal: 3659 ms (0%)\n[13] culling(OCL+fullsort): 2218 ms (0%),(461 t/s)\n[14] culling(OCL+qsort): 3688 ms (5%),(2221 t/s)\n[15] culling(KDOP+qsort): 1139 ms (-1%),(7192 t/s)\n[16] insert/remove batch(256): 5092 ms (0%),(823704 bir/s)\n[17] btDbvtVolume select: 3419 ms (0%)\n*/\n\nstruct btDbvtBenchmark\n{\n\tstruct NilPolicy : btDbvt::ICollide\n\t{\n\t\tNilPolicy() : m_pcount(0),m_depth(-SIMD_INFINITY),m_checksort(true)\t\t{}\n\t\tvoid\tProcess(const btDbvtNode*,const btDbvtNode*)\t\t\t\t{ ++m_pcount; }\n\t\tvoid\tProcess(const btDbvtNode*)\t\t\t\t\t\t\t\t\t{ ++m_pcount; }\n\t\tvoid\tProcess(const btDbvtNode*,btScalar depth)\n\t\t{\n\t\t\t++m_pcount;\n\t\t\tif(m_checksort)\n\t\t\t{ if(depth>=m_depth) m_depth=depth; else printf(\"wrong depth: %f (should be >= %f)\\r\\n\",depth,m_depth); }\n\t\t}\n\t\tint\t\t\tm_pcount;\n\t\tbtScalar\tm_depth;\n\t\tbool\t\tm_checksort;\n\t};\n\tstruct P14 : btDbvt::ICollide\n\t{\n\t\tstruct Node\n\t\t{\n\t\t\tconst btDbvtNode*\tleaf;\n\t\t\tbtScalar\t\t\tdepth;\n\t\t};\n\t\tvoid Process(const btDbvtNode* leaf,btScalar depth)\n\t\t{\n\t\t\tNode\tn;\n\t\t\tn.leaf\t=\tleaf;\n\t\t\tn.depth\t=\tdepth;\n\t\t}\n\t\tstatic int sortfnc(const Node& a,const Node& b)\n\t\t{\n\t\t\tif(a.depth<b.depth) return(+1);\n\t\t\tif(a.depth>b.depth) return(-1);\n\t\t\treturn(0);\n\t\t}\n\t\tbtAlignedObjectArray<Node>\t\tm_nodes;\n\t};\n\tstruct P15 : btDbvt::ICollide\n\t{\n\t\tstruct Node\n\t\t{\n\t\t\tconst btDbvtNode*\tleaf;\n\t\t\tbtScalar\t\t\tdepth;\n\t\t};\n\t\tvoid Process(const btDbvtNode* leaf)\n\t\t{\n\t\t\tNode\tn;\n\t\t\tn.leaf\t=\tleaf;\n\t\t\tn.depth\t=\tdot(leaf->volume.Center(),m_axis);\n\t\t}\n\t\tstatic int sortfnc(const Node& a,const Node& b)\n\t\t{\n\t\t\tif(a.depth<b.depth) return(+1);\n\t\t\tif(a.depth>b.depth) return(-1);\n\t\t\treturn(0);\n\t\t}\n\t\tbtAlignedObjectArray<Node>\t\tm_nodes;\n\t\tbtVector3\t\t\t\t\t\tm_axis;\n\t};\n\tstatic btScalar\t\t\tRandUnit()\n\t{\n\t\treturn(rand()/(btScalar)RAND_MAX);\n\t}\n\tstatic btVector3\t\tRandVector3()\n\t{\n\t\treturn(btVector3(RandUnit(),RandUnit(),RandUnit()));\n\t}\n\tstatic btVector3\t\tRandVector3(btScalar cs)\n\t{\n\t\treturn(RandVector3()*cs-btVector3(cs,cs,cs)/2);\n\t}\n\tstatic btDbvtVolume\tRandVolume(btScalar cs,btScalar eb,btScalar es)\n\t{\n\t\treturn(btDbvtVolume::FromCE(RandVector3(cs),btVector3(eb,eb,eb)+RandVector3()*es));\n\t}\n\tstatic btTransform\t\tRandTransform(btScalar cs)\n\t{\n\t\tbtTransform\tt;\n\t\tt.setOrigin(RandVector3(cs));\n\t\tt.setRotation(btQuaternion(RandUnit()*SIMD_PI*2,RandUnit()*SIMD_PI*2,RandUnit()*SIMD_PI*2).normalized());\n\t\treturn(t);\n\t}\n\tstatic void\t\t\t\tRandTree(btScalar cs,btScalar eb,btScalar es,int leaves,btDbvt& dbvt)\n\t{\n\t\tdbvt.clear();\n\t\tfor(int i=0;i<leaves;++i)\n\t\t{\n\t\t\tdbvt.insert(RandVolume(cs,eb,es),0);\n\t\t}\n\t}\n};\n\nvoid\t\t\tbtDbvt::benchmark()\n{\n\tstatic const btScalar\tcfgVolumeCenterScale\t\t=\t100;\n\tstatic const btScalar\tcfgVolumeExentsBase\t\t\t=\t1;\n\tstatic const btScalar\tcfgVolumeExentsScale\t\t=\t4;\n\tstatic const int\t\tcfgLeaves\t\t\t\t\t=\t8192;\n\tstatic const bool\t\tcfgEnable\t\t\t\t\t=\ttrue;\n\n\t//[1] btDbvtVolume intersections\n\tbool\t\t\t\t\tcfgBenchmark1_Enable\t\t=\tcfgEnable;\n\tstatic const int\t\tcfgBenchmark1_Iterations\t=\t8;\n\tstatic const int\t\tcfgBenchmark1_Reference\t\t=\t3499;\n\t//[2] btDbvtVolume merges\n\tbool\t\t\t\t\tcfgBenchmark2_Enable\t\t=\tcfgEnable;\n\tstatic const int\t\tcfgBenchmark2_Iterations\t=\t4;\n\tstatic const int\t\tcfgBenchmark2_Reference\t\t=\t1945;\n\t//[3] btDbvt::collideTT\n\tbool\t\t\t\t\tcfgBenchmark3_Enable\t\t=\tcfgEnable;\n\tstatic const int\t\tcfgBenchmark3_Iterations\t=\t512;\n\tstatic const int\t\tcfgBenchmark3_Reference\t\t=\t5485;\n\t//[4] btDbvt::collideTT self\n\tbool\t\t\t\t\tcfgBenchmark4_Enable\t\t=\tcfgEnable;\n\tstatic const int\t\tcfgBenchmark4_Iterations\t=\t512;\n\tstatic const int\t\tcfgBenchmark4_Reference\t\t=\t2814;\n\t//[5] btDbvt::collideTT xform\n\tbool\t\t\t\t\tcfgBenchmark5_Enable\t\t=\tcfgEnable;\n\tstatic const int\t\tcfgBenchmark5_Iterations\t=\t512;\n\tstatic const btScalar\tcfgBenchmark5_OffsetScale\t=\t2;\n\tstatic const int\t\tcfgBenchmark5_Reference\t\t=\t7379;\n\t//[6] btDbvt::collideTT xform,self\n\tbool\t\t\t\t\tcfgBenchmark6_Enable\t\t=\tcfgEnable;\n\tstatic const int\t\tcfgBenchmark6_Iterations\t=\t512;\n\tstatic const btScalar\tcfgBenchmark6_OffsetScale\t=\t2;\n\tstatic const int\t\tcfgBenchmark6_Reference\t\t=\t7270;\n\t//[7] btDbvt::rayTest\n\tbool\t\t\t\t\tcfgBenchmark7_Enable\t\t=\tcfgEnable;\n\tstatic const int\t\tcfgBenchmark7_Passes\t\t=\t32;\n\tstatic const int\t\tcfgBenchmark7_Iterations\t=\t65536;\n\tstatic const int\t\tcfgBenchmark7_Reference\t\t=\t6307;\n\t//[8] insert/remove\n\tbool\t\t\t\t\tcfgBenchmark8_Enable\t\t=\tcfgEnable;\n\tstatic const int\t\tcfgBenchmark8_Passes\t\t=\t32;\n\tstatic const int\t\tcfgBenchmark8_Iterations\t=\t65536;\n\tstatic const int\t\tcfgBenchmark8_Reference\t\t=\t2105;\n\t//[9] updates (teleport)\n\tbool\t\t\t\t\tcfgBenchmark9_Enable\t\t=\tcfgEnable;\n\tstatic const int\t\tcfgBenchmark9_Passes\t\t=\t32;\n\tstatic const int\t\tcfgBenchmark9_Iterations\t=\t65536;\n\tstatic const int\t\tcfgBenchmark9_Reference\t\t=\t1879;\n\t//[10] updates (jitter)\n\tbool\t\t\t\t\tcfgBenchmark10_Enable\t\t=\tcfgEnable;\n\tstatic const btScalar\tcfgBenchmark10_Scale\t\t=\tcfgVolumeCenterScale/10000;\n\tstatic const int\t\tcfgBenchmark10_Passes\t\t=\t32;\n\tstatic const int\t\tcfgBenchmark10_Iterations\t=\t65536;\n\tstatic const int\t\tcfgBenchmark10_Reference\t=\t1244;\n\t//[11] optimize (incremental)\n\tbool\t\t\t\t\tcfgBenchmark11_Enable\t\t=\tcfgEnable;\n\tstatic const int\t\tcfgBenchmark11_Passes\t\t=\t64;\n\tstatic const int\t\tcfgBenchmark11_Iterations\t=\t65536;\n\tstatic const int\t\tcfgBenchmark11_Reference\t=\t2510;\n\t//[12] btDbvtVolume notequal\n\tbool\t\t\t\t\tcfgBenchmark12_Enable\t\t=\tcfgEnable;\n\tstatic const int\t\tcfgBenchmark12_Iterations\t=\t32;\n\tstatic const int\t\tcfgBenchmark12_Reference\t=\t3677;\n\t//[13] culling(OCL+fullsort)\n\tbool\t\t\t\t\tcfgBenchmark13_Enable\t\t=\tcfgEnable;\n\tstatic const int\t\tcfgBenchmark13_Iterations\t=\t1024;\n\tstatic const int\t\tcfgBenchmark13_Reference\t=\t2231;\n\t//[14] culling(OCL+qsort)\n\tbool\t\t\t\t\tcfgBenchmark14_Enable\t\t=\tcfgEnable;\n\tstatic const int\t\tcfgBenchmark14_Iterations\t=\t8192;\n\tstatic const int\t\tcfgBenchmark14_Reference\t=\t3500;\n\t//[15] culling(KDOP+qsort)\n\tbool\t\t\t\t\tcfgBenchmark15_Enable\t\t=\tcfgEnable;\n\tstatic const int\t\tcfgBenchmark15_Iterations\t=\t8192;\n\tstatic const int\t\tcfgBenchmark15_Reference\t=\t1151;\n\t//[16] insert/remove batch\n\tbool\t\t\t\t\tcfgBenchmark16_Enable\t\t=\tcfgEnable;\n\tstatic const int\t\tcfgBenchmark16_BatchCount\t=\t256;\n\tstatic const int\t\tcfgBenchmark16_Passes\t\t=\t16384;\n\tstatic const int\t\tcfgBenchmark16_Reference\t=\t5138;\n\t//[17] select\n\tbool\t\t\t\t\tcfgBenchmark17_Enable\t\t=\tcfgEnable;\n\tstatic const int\t\tcfgBenchmark17_Iterations\t=\t4;\n\tstatic const int\t\tcfgBenchmark17_Reference\t=\t3390;\n\n\tbtClock\t\t\t\t\twallclock;\n\tprintf(\"Benchmarking dbvt...\\r\\n\");\n\tprintf(\"\\tWorld scale: %f\\r\\n\",cfgVolumeCenterScale);\n\tprintf(\"\\tExtents base: %f\\r\\n\",cfgVolumeExentsBase);\n\tprintf(\"\\tExtents range: %f\\r\\n\",cfgVolumeExentsScale);\n\tprintf(\"\\tLeaves: %u\\r\\n\",cfgLeaves);\n\tprintf(\"\\tsizeof(btDbvtVolume): %u bytes\\r\\n\",sizeof(btDbvtVolume));\n\tprintf(\"\\tsizeof(btDbvtNode):   %u bytes\\r\\n\",sizeof(btDbvtNode));\n\tif(cfgBenchmark1_Enable)\n\t{// Benchmark 1\t\n\t\tsrand(380843);\n\t\tbtAlignedObjectArray<btDbvtVolume>\tvolumes;\n\t\tbtAlignedObjectArray<bool>\t\t\tresults;\n\t\tvolumes.resize(cfgLeaves);\n\t\tresults.resize(cfgLeaves);\n\t\tfor(int i=0;i<cfgLeaves;++i)\n\t\t{\n\t\t\tvolumes[i]=btDbvtBenchmark::RandVolume(cfgVolumeCenterScale,cfgVolumeExentsBase,cfgVolumeExentsScale);\n\t\t}\n\t\tprintf(\"[1] btDbvtVolume intersections: \");\n\t\twallclock.reset();\n\t\tfor(int i=0;i<cfgBenchmark1_Iterations;++i)\n\t\t{\n\t\t\tfor(int j=0;j<cfgLeaves;++j)\n\t\t\t{\n\t\t\t\tfor(int k=0;k<cfgLeaves;++k)\n\t\t\t\t{\n\t\t\t\t\tresults[k]=Intersect(volumes[j],volumes[k]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tconst int time=(int)wallclock.getTimeMilliseconds();\n\t\tprintf(\"%u ms (%i%%)\\r\\n\",time,(time-cfgBenchmark1_Reference)*100/time);\n\t}\n\tif(cfgBenchmark2_Enable)\n\t{// Benchmark 2\t\n\t\tsrand(380843);\n\t\tbtAlignedObjectArray<btDbvtVolume>\tvolumes;\n\t\tbtAlignedObjectArray<btDbvtVolume>\tresults;\n\t\tvolumes.resize(cfgLeaves);\n\t\tresults.resize(cfgLeaves);\n\t\tfor(int i=0;i<cfgLeaves;++i)\n\t\t{\n\t\t\tvolumes[i]=btDbvtBenchmark::RandVolume(cfgVolumeCenterScale,cfgVolumeExentsBase,cfgVolumeExentsScale);\n\t\t}\n\t\tprintf(\"[2] btDbvtVolume merges: \");\n\t\twallclock.reset();\n\t\tfor(int i=0;i<cfgBenchmark2_Iterations;++i)\n\t\t{\n\t\t\tfor(int j=0;j<cfgLeaves;++j)\n\t\t\t{\n\t\t\t\tfor(int k=0;k<cfgLeaves;++k)\n\t\t\t\t{\n\t\t\t\t\tMerge(volumes[j],volumes[k],results[k]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tconst int time=(int)wallclock.getTimeMilliseconds();\n\t\tprintf(\"%u ms (%i%%)\\r\\n\",time,(time-cfgBenchmark2_Reference)*100/time);\n\t}\n\tif(cfgBenchmark3_Enable)\n\t{// Benchmark 3\t\n\t\tsrand(380843);\n\t\tbtDbvt\t\t\t\t\t\tdbvt[2];\n\t\tbtDbvtBenchmark::NilPolicy\tpolicy;\n\t\tbtDbvtBenchmark::RandTree(cfgVolumeCenterScale,cfgVolumeExentsBase,cfgVolumeExentsScale,cfgLeaves,dbvt[0]);\n\t\tbtDbvtBenchmark::RandTree(cfgVolumeCenterScale,cfgVolumeExentsBase,cfgVolumeExentsScale,cfgLeaves,dbvt[1]);\n\t\tdbvt[0].optimizeTopDown();\n\t\tdbvt[1].optimizeTopDown();\n\t\tprintf(\"[3] btDbvt::collideTT: \");\n\t\twallclock.reset();\n\t\tfor(int i=0;i<cfgBenchmark3_Iterations;++i)\n\t\t{\n\t\t\tbtDbvt::collideTT(dbvt[0].m_root,dbvt[1].m_root,policy);\n\t\t}\n\t\tconst int time=(int)wallclock.getTimeMilliseconds();\n\t\tprintf(\"%u ms (%i%%)\\r\\n\",time,(time-cfgBenchmark3_Reference)*100/time);\n\t}\n\tif(cfgBenchmark4_Enable)\n\t{// Benchmark 4\n\t\tsrand(380843);\n\t\tbtDbvt\t\t\t\t\t\tdbvt;\n\t\tbtDbvtBenchmark::NilPolicy\tpolicy;\n\t\tbtDbvtBenchmark::RandTree(cfgVolumeCenterScale,cfgVolumeExentsBase,cfgVolumeExentsScale,cfgLeaves,dbvt);\n\t\tdbvt.optimizeTopDown();\n\t\tprintf(\"[4] btDbvt::collideTT self: \");\n\t\twallclock.reset();\n\t\tfor(int i=0;i<cfgBenchmark4_Iterations;++i)\n\t\t{\n\t\t\tbtDbvt::collideTT(dbvt.m_root,dbvt.m_root,policy);\n\t\t}\n\t\tconst int time=(int)wallclock.getTimeMilliseconds();\n\t\tprintf(\"%u ms (%i%%)\\r\\n\",time,(time-cfgBenchmark4_Reference)*100/time);\n\t}\n\tif(cfgBenchmark5_Enable)\n\t{// Benchmark 5\t\n\t\tsrand(380843);\n\t\tbtDbvt\t\t\t\t\t\t\t\tdbvt[2];\n\t\tbtAlignedObjectArray<btTransform>\ttransforms;\n\t\tbtDbvtBenchmark::NilPolicy\t\t\tpolicy;\n\t\ttransforms.resize(cfgBenchmark5_Iterations);\n\t\tfor(int i=0;i<transforms.size();++i)\n\t\t{\n\t\t\ttransforms[i]=btDbvtBenchmark::RandTransform(cfgVolumeCenterScale*cfgBenchmark5_OffsetScale);\n\t\t}\n\t\tbtDbvtBenchmark::RandTree(cfgVolumeCenterScale,cfgVolumeExentsBase,cfgVolumeExentsScale,cfgLeaves,dbvt[0]);\n\t\tbtDbvtBenchmark::RandTree(cfgVolumeCenterScale,cfgVolumeExentsBase,cfgVolumeExentsScale,cfgLeaves,dbvt[1]);\n\t\tdbvt[0].optimizeTopDown();\n\t\tdbvt[1].optimizeTopDown();\n\t\tprintf(\"[5] btDbvt::collideTT xform: \");\n\t\twallclock.reset();\n\t\tfor(int i=0;i<cfgBenchmark5_Iterations;++i)\n\t\t{\n\t\t\tbtDbvt::collideTT(dbvt[0].m_root,dbvt[1].m_root,transforms[i],policy);\n\t\t}\n\t\tconst int time=(int)wallclock.getTimeMilliseconds();\n\t\tprintf(\"%u ms (%i%%)\\r\\n\",time,(time-cfgBenchmark5_Reference)*100/time);\n\t}\n\tif(cfgBenchmark6_Enable)\n\t{// Benchmark 6\t\n\t\tsrand(380843);\n\t\tbtDbvt\t\t\t\t\t\t\t\tdbvt;\n\t\tbtAlignedObjectArray<btTransform>\ttransforms;\n\t\tbtDbvtBenchmark::NilPolicy\t\t\tpolicy;\n\t\ttransforms.resize(cfgBenchmark6_Iterations);\n\t\tfor(int i=0;i<transforms.size();++i)\n\t\t{\n\t\t\ttransforms[i]=btDbvtBenchmark::RandTransform(cfgVolumeCenterScale*cfgBenchmark6_OffsetScale);\n\t\t}\n\t\tbtDbvtBenchmark::RandTree(cfgVolumeCenterScale,cfgVolumeExentsBase,cfgVolumeExentsScale,cfgLeaves,dbvt);\n\t\tdbvt.optimizeTopDown();\n\t\tprintf(\"[6] btDbvt::collideTT xform,self: \");\n\t\twallclock.reset();\n\t\tfor(int i=0;i<cfgBenchmark6_Iterations;++i)\n\t\t{\n\t\t\tbtDbvt::collideTT(dbvt.m_root,dbvt.m_root,transforms[i],policy);\t\t\n\t\t}\n\t\tconst int time=(int)wallclock.getTimeMilliseconds();\n\t\tprintf(\"%u ms (%i%%)\\r\\n\",time,(time-cfgBenchmark6_Reference)*100/time);\n\t}\n\tif(cfgBenchmark7_Enable)\n\t{// Benchmark 7\t\n\t\tsrand(380843);\n\t\tbtDbvt\t\t\t\t\t\t\t\tdbvt;\n\t\tbtAlignedObjectArray<btVector3>\t\trayorg;\n\t\tbtAlignedObjectArray<btVector3>\t\traydir;\n\t\tbtDbvtBenchmark::NilPolicy\t\t\tpolicy;\n\t\trayorg.resize(cfgBenchmark7_Iterations);\n\t\traydir.resize(cfgBenchmark7_Iterations);\n\t\tfor(int i=0;i<rayorg.size();++i)\n\t\t{\n\t\t\trayorg[i]=btDbvtBenchmark::RandVector3(cfgVolumeCenterScale*2);\n\t\t\traydir[i]=btDbvtBenchmark::RandVector3(cfgVolumeCenterScale*2);\n\t\t}\n\t\tbtDbvtBenchmark::RandTree(cfgVolumeCenterScale,cfgVolumeExentsBase,cfgVolumeExentsScale,cfgLeaves,dbvt);\n\t\tdbvt.optimizeTopDown();\n\t\tprintf(\"[7] btDbvt::rayTest: \");\n\t\twallclock.reset();\n\t\tfor(int i=0;i<cfgBenchmark7_Passes;++i)\n\t\t{\n\t\t\tfor(int j=0;j<cfgBenchmark7_Iterations;++j)\n\t\t\t{\n\t\t\t\tbtDbvt::rayTest(dbvt.m_root,rayorg[j],rayorg[j]+raydir[j],policy);\n\t\t\t}\n\t\t}\n\t\tconst int\ttime=(int)wallclock.getTimeMilliseconds();\n\t\tunsigned\trays=cfgBenchmark7_Passes*cfgBenchmark7_Iterations;\n\t\tprintf(\"%u ms (%i%%),(%u r/s)\\r\\n\",time,(time-cfgBenchmark7_Reference)*100/time,(rays*1000)/time);\n\t}\n\tif(cfgBenchmark8_Enable)\n\t{// Benchmark 8\t\n\t\tsrand(380843);\n\t\tbtDbvt\t\t\t\t\t\t\t\tdbvt;\n\t\tbtDbvtBenchmark::RandTree(cfgVolumeCenterScale,cfgVolumeExentsBase,cfgVolumeExentsScale,cfgLeaves,dbvt);\n\t\tdbvt.optimizeTopDown();\n\t\tprintf(\"[8] insert/remove: \");\n\t\twallclock.reset();\n\t\tfor(int i=0;i<cfgBenchmark8_Passes;++i)\n\t\t{\n\t\t\tfor(int j=0;j<cfgBenchmark8_Iterations;++j)\n\t\t\t{\n\t\t\t\tdbvt.remove(dbvt.insert(btDbvtBenchmark::RandVolume(cfgVolumeCenterScale,cfgVolumeExentsBase,cfgVolumeExentsScale),0));\n\t\t\t}\n\t\t}\n\t\tconst int\ttime=(int)wallclock.getTimeMilliseconds();\n\t\tconst int\tir=cfgBenchmark8_Passes*cfgBenchmark8_Iterations;\n\t\tprintf(\"%u ms (%i%%),(%u ir/s)\\r\\n\",time,(time-cfgBenchmark8_Reference)*100/time,ir*1000/time);\n\t}\n\tif(cfgBenchmark9_Enable)\n\t{// Benchmark 9\t\n\t\tsrand(380843);\n\t\tbtDbvt\t\t\t\t\t\t\t\t\t\tdbvt;\n\t\tbtAlignedObjectArray<const btDbvtNode*>\tleaves;\n\t\tbtDbvtBenchmark::RandTree(cfgVolumeCenterScale,cfgVolumeExentsBase,cfgVolumeExentsScale,cfgLeaves,dbvt);\n\t\tdbvt.optimizeTopDown();\n\t\tdbvt.extractLeaves(dbvt.m_root,leaves);\n\t\tprintf(\"[9] updates (teleport): \");\n\t\twallclock.reset();\n\t\tfor(int i=0;i<cfgBenchmark9_Passes;++i)\n\t\t{\n\t\t\tfor(int j=0;j<cfgBenchmark9_Iterations;++j)\n\t\t\t{\n\t\t\t\tdbvt.update(const_cast<btDbvtNode*>(leaves[rand()%cfgLeaves]),\n\t\t\t\t\tbtDbvtBenchmark::RandVolume(cfgVolumeCenterScale,cfgVolumeExentsBase,cfgVolumeExentsScale));\n\t\t\t}\n\t\t}\n\t\tconst int\ttime=(int)wallclock.getTimeMilliseconds();\n\t\tconst int\tup=cfgBenchmark9_Passes*cfgBenchmark9_Iterations;\n\t\tprintf(\"%u ms (%i%%),(%u u/s)\\r\\n\",time,(time-cfgBenchmark9_Reference)*100/time,up*1000/time);\n\t}\n\tif(cfgBenchmark10_Enable)\n\t{// Benchmark 10\t\n\t\tsrand(380843);\n\t\tbtDbvt\t\t\t\t\t\t\t\t\t\tdbvt;\n\t\tbtAlignedObjectArray<const btDbvtNode*>\tleaves;\n\t\tbtAlignedObjectArray<btVector3>\t\t\t\tvectors;\n\t\tvectors.resize(cfgBenchmark10_Iterations);\n\t\tfor(int i=0;i<vectors.size();++i)\n\t\t{\n\t\t\tvectors[i]=(btDbvtBenchmark::RandVector3()*2-btVector3(1,1,1))*cfgBenchmark10_Scale;\n\t\t}\n\t\tbtDbvtBenchmark::RandTree(cfgVolumeCenterScale,cfgVolumeExentsBase,cfgVolumeExentsScale,cfgLeaves,dbvt);\n\t\tdbvt.optimizeTopDown();\n\t\tdbvt.extractLeaves(dbvt.m_root,leaves);\n\t\tprintf(\"[10] updates (jitter): \");\n\t\twallclock.reset();\n\n\t\tfor(int i=0;i<cfgBenchmark10_Passes;++i)\n\t\t{\n\t\t\tfor(int j=0;j<cfgBenchmark10_Iterations;++j)\n\t\t\t{\t\t\t\n\t\t\t\tconst btVector3&\td=vectors[j];\n\t\t\t\tbtDbvtNode*\t\tl=const_cast<btDbvtNode*>(leaves[rand()%cfgLeaves]);\n\t\t\t\tbtDbvtVolume\t\tv=btDbvtVolume::FromMM(l->volume.Mins()+d,l->volume.Maxs()+d);\n\t\t\t\tdbvt.update(l,v);\n\t\t\t}\n\t\t}\n\t\tconst int\ttime=(int)wallclock.getTimeMilliseconds();\n\t\tconst int\tup=cfgBenchmark10_Passes*cfgBenchmark10_Iterations;\n\t\tprintf(\"%u ms (%i%%),(%u u/s)\\r\\n\",time,(time-cfgBenchmark10_Reference)*100/time,up*1000/time);\n\t}\n\tif(cfgBenchmark11_Enable)\n\t{// Benchmark 11\t\n\t\tsrand(380843);\n\t\tbtDbvt\t\t\t\t\t\t\t\t\t\tdbvt;\n\t\tbtDbvtBenchmark::RandTree(cfgVolumeCenterScale,cfgVolumeExentsBase,cfgVolumeExentsScale,cfgLeaves,dbvt);\n\t\tdbvt.optimizeTopDown();\n\t\tprintf(\"[11] optimize (incremental): \");\n\t\twallclock.reset();\t\n\t\tfor(int i=0;i<cfgBenchmark11_Passes;++i)\n\t\t{\n\t\t\tdbvt.optimizeIncremental(cfgBenchmark11_Iterations);\n\t\t}\n\t\tconst int\ttime=(int)wallclock.getTimeMilliseconds();\n\t\tconst int\top=cfgBenchmark11_Passes*cfgBenchmark11_Iterations;\n\t\tprintf(\"%u ms (%i%%),(%u o/s)\\r\\n\",time,(time-cfgBenchmark11_Reference)*100/time,op/time*1000);\n\t}\n\tif(cfgBenchmark12_Enable)\n\t{// Benchmark 12\t\n\t\tsrand(380843);\n\t\tbtAlignedObjectArray<btDbvtVolume>\tvolumes;\n\t\tbtAlignedObjectArray<bool>\t\t\t\tresults;\n\t\tvolumes.resize(cfgLeaves);\n\t\tresults.resize(cfgLeaves);\n\t\tfor(int i=0;i<cfgLeaves;++i)\n\t\t{\n\t\t\tvolumes[i]=btDbvtBenchmark::RandVolume(cfgVolumeCenterScale,cfgVolumeExentsBase,cfgVolumeExentsScale);\n\t\t}\n\t\tprintf(\"[12] btDbvtVolume notequal: \");\n\t\twallclock.reset();\n\t\tfor(int i=0;i<cfgBenchmark12_Iterations;++i)\n\t\t{\n\t\t\tfor(int j=0;j<cfgLeaves;++j)\n\t\t\t{\n\t\t\t\tfor(int k=0;k<cfgLeaves;++k)\n\t\t\t\t{\n\t\t\t\t\tresults[k]=NotEqual(volumes[j],volumes[k]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tconst int time=(int)wallclock.getTimeMilliseconds();\n\t\tprintf(\"%u ms (%i%%)\\r\\n\",time,(time-cfgBenchmark12_Reference)*100/time);\n\t}\n\tif(cfgBenchmark13_Enable)\n\t{// Benchmark 13\t\n\t\tsrand(380843);\n\t\tbtDbvt\t\t\t\t\t\t\t\tdbvt;\n\t\tbtAlignedObjectArray<btVector3>\t\tvectors;\n\t\tbtDbvtBenchmark::NilPolicy\t\t\tpolicy;\n\t\tvectors.resize(cfgBenchmark13_Iterations);\n\t\tfor(int i=0;i<vectors.size();++i)\n\t\t{\n\t\t\tvectors[i]=(btDbvtBenchmark::RandVector3()*2-btVector3(1,1,1)).normalized();\n\t\t}\n\t\tbtDbvtBenchmark::RandTree(cfgVolumeCenterScale,cfgVolumeExentsBase,cfgVolumeExentsScale,cfgLeaves,dbvt);\n\t\tdbvt.optimizeTopDown();\n\t\tprintf(\"[13] culling(OCL+fullsort): \");\n\t\twallclock.reset();\t\n\t\tfor(int i=0;i<cfgBenchmark13_Iterations;++i)\n\t\t{\n\t\t\tstatic const btScalar\toffset=0;\n\t\t\tpolicy.m_depth=-SIMD_INFINITY;\n\t\t\tdbvt.collideOCL(dbvt.m_root,&vectors[i],&offset,vectors[i],1,policy);\n\t\t}\n\t\tconst int\ttime=(int)wallclock.getTimeMilliseconds();\n\t\tconst int\tt=cfgBenchmark13_Iterations;\n\t\tprintf(\"%u ms (%i%%),(%u t/s)\\r\\n\",time,(time-cfgBenchmark13_Reference)*100/time,(t*1000)/time);\n\t}\n\tif(cfgBenchmark14_Enable)\n\t{// Benchmark 14\t\n\t\tsrand(380843);\n\t\tbtDbvt\t\t\t\t\t\t\t\tdbvt;\n\t\tbtAlignedObjectArray<btVector3>\t\tvectors;\n\t\tbtDbvtBenchmark::P14\t\t\t\tpolicy;\n\t\tvectors.resize(cfgBenchmark14_Iterations);\n\t\tfor(int i=0;i<vectors.size();++i)\n\t\t{\n\t\t\tvectors[i]=(btDbvtBenchmark::RandVector3()*2-btVector3(1,1,1)).normalized();\n\t\t}\n\t\tbtDbvtBenchmark::RandTree(cfgVolumeCenterScale,cfgVolumeExentsBase,cfgVolumeExentsScale,cfgLeaves,dbvt);\n\t\tdbvt.optimizeTopDown();\n\t\tpolicy.m_nodes.reserve(cfgLeaves);\n\t\tprintf(\"[14] culling(OCL+qsort): \");\n\t\twallclock.reset();\t\n\t\tfor(int i=0;i<cfgBenchmark14_Iterations;++i)\n\t\t{\n\t\t\tstatic const btScalar\toffset=0;\n\t\t\tpolicy.m_nodes.resize(0);\n\t\t\tdbvt.collideOCL(dbvt.m_root,&vectors[i],&offset,vectors[i],1,policy,false);\n\t\t\tpolicy.m_nodes.quickSort(btDbvtBenchmark::P14::sortfnc);\n\t\t}\n\t\tconst int\ttime=(int)wallclock.getTimeMilliseconds();\n\t\tconst int\tt=cfgBenchmark14_Iterations;\n\t\tprintf(\"%u ms (%i%%),(%u t/s)\\r\\n\",time,(time-cfgBenchmark14_Reference)*100/time,(t*1000)/time);\n\t}\n\tif(cfgBenchmark15_Enable)\n\t{// Benchmark 15\t\n\t\tsrand(380843);\n\t\tbtDbvt\t\t\t\t\t\t\t\tdbvt;\n\t\tbtAlignedObjectArray<btVector3>\t\tvectors;\n\t\tbtDbvtBenchmark::P15\t\t\t\tpolicy;\n\t\tvectors.resize(cfgBenchmark15_Iterations);\n\t\tfor(int i=0;i<vectors.size();++i)\n\t\t{\n\t\t\tvectors[i]=(btDbvtBenchmark::RandVector3()*2-btVector3(1,1,1)).normalized();\n\t\t}\n\t\tbtDbvtBenchmark::RandTree(cfgVolumeCenterScale,cfgVolumeExentsBase,cfgVolumeExentsScale,cfgLeaves,dbvt);\n\t\tdbvt.optimizeTopDown();\n\t\tpolicy.m_nodes.reserve(cfgLeaves);\n\t\tprintf(\"[15] culling(KDOP+qsort): \");\n\t\twallclock.reset();\t\n\t\tfor(int i=0;i<cfgBenchmark15_Iterations;++i)\n\t\t{\n\t\t\tstatic const btScalar\toffset=0;\n\t\t\tpolicy.m_nodes.resize(0);\n\t\t\tpolicy.m_axis=vectors[i];\n\t\t\tdbvt.collideKDOP(dbvt.m_root,&vectors[i],&offset,1,policy);\n\t\t\tpolicy.m_nodes.quickSort(btDbvtBenchmark::P15::sortfnc);\n\t\t}\n\t\tconst int\ttime=(int)wallclock.getTimeMilliseconds();\n\t\tconst int\tt=cfgBenchmark15_Iterations;\n\t\tprintf(\"%u ms (%i%%),(%u t/s)\\r\\n\",time,(time-cfgBenchmark15_Reference)*100/time,(t*1000)/time);\n\t}\n\tif(cfgBenchmark16_Enable)\n\t{// Benchmark 16\t\n\t\tsrand(380843);\n\t\tbtDbvt\t\t\t\t\t\t\t\tdbvt;\n\t\tbtAlignedObjectArray<btDbvtNode*>\tbatch;\n\t\tbtDbvtBenchmark::RandTree(cfgVolumeCenterScale,cfgVolumeExentsBase,cfgVolumeExentsScale,cfgLeaves,dbvt);\n\t\tdbvt.optimizeTopDown();\n\t\tbatch.reserve(cfgBenchmark16_BatchCount);\n\t\tprintf(\"[16] insert/remove batch(%u): \",cfgBenchmark16_BatchCount);\n\t\twallclock.reset();\n\t\tfor(int i=0;i<cfgBenchmark16_Passes;++i)\n\t\t{\n\t\t\tfor(int j=0;j<cfgBenchmark16_BatchCount;++j)\n\t\t\t{\n\t\t\t\tbatch.push_back(dbvt.insert(btDbvtBenchmark::RandVolume(cfgVolumeCenterScale,cfgVolumeExentsBase,cfgVolumeExentsScale),0));\n\t\t\t}\n\t\t\tfor(int j=0;j<cfgBenchmark16_BatchCount;++j)\n\t\t\t{\n\t\t\t\tdbvt.remove(batch[j]);\n\t\t\t}\n\t\t\tbatch.resize(0);\n\t\t}\n\t\tconst int\ttime=(int)wallclock.getTimeMilliseconds();\n\t\tconst int\tir=cfgBenchmark16_Passes*cfgBenchmark16_BatchCount;\n\t\tprintf(\"%u ms (%i%%),(%u bir/s)\\r\\n\",time,(time-cfgBenchmark16_Reference)*100/time,int(ir*1000.0/time));\n\t}\n\tif(cfgBenchmark17_Enable)\n\t{// Benchmark 17\n\t\tsrand(380843);\n\t\tbtAlignedObjectArray<btDbvtVolume>\tvolumes;\n\t\tbtAlignedObjectArray<int>\t\t\tresults;\n\t\tbtAlignedObjectArray<int>\t\t\tindices;\n\t\tvolumes.resize(cfgLeaves);\n\t\tresults.resize(cfgLeaves);\n\t\tindices.resize(cfgLeaves);\n\t\tfor(int i=0;i<cfgLeaves;++i)\n\t\t{\n\t\t\tindices[i]=i;\n\t\t\tvolumes[i]=btDbvtBenchmark::RandVolume(cfgVolumeCenterScale,cfgVolumeExentsBase,cfgVolumeExentsScale);\n\t\t}\n\t\tfor(int i=0;i<cfgLeaves;++i)\n\t\t{\n\t\t\tbtSwap(indices[i],indices[rand()%cfgLeaves]);\n\t\t}\n\t\tprintf(\"[17] btDbvtVolume select: \");\n\t\twallclock.reset();\n\t\tfor(int i=0;i<cfgBenchmark17_Iterations;++i)\n\t\t{\n\t\t\tfor(int j=0;j<cfgLeaves;++j)\n\t\t\t{\n\t\t\t\tfor(int k=0;k<cfgLeaves;++k)\n\t\t\t\t{\n\t\t\t\t\tconst int idx=indices[k];\n\t\t\t\t\tresults[idx]=Select(volumes[idx],volumes[j],volumes[k]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tconst int time=(int)wallclock.getTimeMilliseconds();\n\t\tprintf(\"%u ms (%i%%)\\r\\n\",time,(time-cfgBenchmark17_Reference)*100/time);\n\t}\n\tprintf(\"\\r\\n\\r\\n\");\n}\n#endif\n"
  },
  {
    "path": "Sources/NativeDAABBTree/btDbvt.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2007 Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n///btDbvt implementation by Nathanael Presson\n\n#ifndef BT_DYNAMIC_BOUNDING_VOLUME_TREE_H\n#define BT_DYNAMIC_BOUNDING_VOLUME_TREE_H\n\n#include \"LinearMath/btAlignedObjectArray.h\"\n#include \"LinearMath/btVector3.h\"\n#include \"LinearMath/btTransform.h\"\n#include \"LinearMath/btAabbUtil2.h\"\n\n//\n// Compile time configuration\n//\n\n\n// Implementation profiles\n#define DBVT_IMPL_GENERIC\t\t0\t// Generic implementation\t\n#define DBVT_IMPL_SSE\t\t\t1\t// SSE\n\n// Template implementation of ICollide\n#ifdef _WIN32\n#if (defined (_MSC_VER) && _MSC_VER >= 1400)\n#define\tDBVT_USE_TEMPLATE\t\t1\n#else\n#define\tDBVT_USE_TEMPLATE\t\t0\n#endif\n#else\n#define\tDBVT_USE_TEMPLATE\t\t0\n#endif\n\n// Use only intrinsics instead of inline asm\n#define DBVT_USE_INTRINSIC_SSE\t1\n\n// Using memmov for collideOCL\n#define DBVT_USE_MEMMOVE\t\t1\n\n// Enable benchmarking code\n#define\tDBVT_ENABLE_BENCHMARK\t0\n\n// Inlining\n#define DBVT_INLINE\t\t\t\tSIMD_FORCE_INLINE\n\n// Specific methods implementation\n\n//SSE gives errors on a MSVC 7.1\n#if defined (BT_USE_SSE) //&& defined (_WIN32)\n#define DBVT_SELECT_IMPL\t\tDBVT_IMPL_SSE\n#define DBVT_MERGE_IMPL\t\t\tDBVT_IMPL_SSE\n#define DBVT_INT0_IMPL\t\t\tDBVT_IMPL_SSE\n#else\n#define DBVT_SELECT_IMPL\t\tDBVT_IMPL_GENERIC\n#define DBVT_MERGE_IMPL\t\t\tDBVT_IMPL_GENERIC\n#define DBVT_INT0_IMPL\t\t\tDBVT_IMPL_GENERIC\n#endif\n\n#if\t(DBVT_SELECT_IMPL==DBVT_IMPL_SSE)||\t\\\n\t(DBVT_MERGE_IMPL==DBVT_IMPL_SSE)||\t\\\n\t(DBVT_INT0_IMPL==DBVT_IMPL_SSE)\n#include <emmintrin.h>\n#endif\n\n//\n// Auto config and checks\n//\n\n#if DBVT_USE_TEMPLATE\n#define\tDBVT_VIRTUAL\n#define DBVT_VIRTUAL_DTOR(a)\n#define DBVT_PREFIX\t\t\t\t\ttemplate <typename T>\n#define DBVT_IPOLICY\t\t\t\tT& policy\n#define DBVT_CHECKTYPE\t\t\t\tstatic const ICollide&\ttypechecker=*(T*)1;(void)typechecker;\n#else\n#define\tDBVT_VIRTUAL_DTOR(a)\t\tvirtual ~a() {}\n#define DBVT_VIRTUAL\t\t\t\tvirtual\n#define DBVT_PREFIX\n#define DBVT_IPOLICY\t\t\t\tICollide& policy\n#define DBVT_CHECKTYPE\n#endif\n\n#if DBVT_USE_MEMMOVE\n#if !defined( __CELLOS_LV2__) && !defined(__MWERKS__)\n#include <memory.h>\n#endif\n#include <string.h>\n#endif\n\n#ifndef DBVT_USE_TEMPLATE\n#error \"DBVT_USE_TEMPLATE undefined\"\n#endif\n\n#ifndef DBVT_USE_MEMMOVE\n#error \"DBVT_USE_MEMMOVE undefined\"\n#endif\n\n#ifndef DBVT_ENABLE_BENCHMARK\n#error \"DBVT_ENABLE_BENCHMARK undefined\"\n#endif\n\n#ifndef DBVT_SELECT_IMPL\n#error \"DBVT_SELECT_IMPL undefined\"\n#endif\n\n#ifndef DBVT_MERGE_IMPL\n#error \"DBVT_MERGE_IMPL undefined\"\n#endif\n\n#ifndef DBVT_INT0_IMPL\n#error \"DBVT_INT0_IMPL undefined\"\n#endif\n\n//\n// Defaults volumes\n//\n\n/* btDbvtAabbMm\t\t\t*/ \nstruct\tbtDbvtAabbMm\n{\n\tDBVT_INLINE btVector3\t\t\tCenter() const\t{ return((mi+mx)/2); }\n\tDBVT_INLINE btVector3\t\t\tLengths() const\t{ return(mx-mi); }\n\tDBVT_INLINE btVector3\t\t\tExtents() const\t{ return((mx-mi)/2); }\n\tDBVT_INLINE const btVector3&\tMins() const\t{ return(mi); }\n\tDBVT_INLINE const btVector3&\tMaxs() const\t{ return(mx); }\n\tstatic inline btDbvtAabbMm\t\tFromCE(const btVector3& c,const btVector3& e);\n\tstatic inline btDbvtAabbMm\t\tFromCR(const btVector3& c,btScalar r);\n\tstatic inline btDbvtAabbMm\t\tFromMM(const btVector3& mi,const btVector3& mx);\n\tstatic inline btDbvtAabbMm\t\tFromPoints(const btVector3* pts,int n);\n\tstatic inline btDbvtAabbMm\t\tFromPoints(const btVector3** ppts,int n);\n\tDBVT_INLINE void\t\t\t\tExpand(const btVector3& e);\n\tDBVT_INLINE void\t\t\t\tSignedExpand(const btVector3& e);\n\tDBVT_INLINE bool\t\t\t\tContain(const btDbvtAabbMm& a) const;\n\tDBVT_INLINE int\t\t\t\t\tClassify(const btVector3& n,btScalar o,int s) const;\n\tDBVT_INLINE btScalar\t\t\tProjectMinimum(const btVector3& v,unsigned signs) const;\n\tDBVT_INLINE friend bool\t\t\tIntersect(\tconst btDbvtAabbMm& a,\n\t\tconst btDbvtAabbMm& b);\n\t\n\tDBVT_INLINE friend bool\t\t\tIntersect(\tconst btDbvtAabbMm& a,\n\t\tconst btVector3& b);\n\n\tDBVT_INLINE friend btScalar\t\tProximity(\tconst btDbvtAabbMm& a,\n\t\tconst btDbvtAabbMm& b);\n\tDBVT_INLINE friend int\t\t\tSelect(\t\tconst btDbvtAabbMm& o,\n\t\tconst btDbvtAabbMm& a,\n\t\tconst btDbvtAabbMm& b);\n\tDBVT_INLINE friend void\t\t\tMerge(\t\tconst btDbvtAabbMm& a,\n\t\tconst btDbvtAabbMm& b,\n\t\tbtDbvtAabbMm& r);\n\tDBVT_INLINE friend bool\t\t\tNotEqual(\tconst btDbvtAabbMm& a,\n\t\tconst btDbvtAabbMm& b);\n    \n    DBVT_INLINE btVector3&\ttMins()\t{ return(mi); }\n\tDBVT_INLINE btVector3&\ttMaxs()\t{ return(mx); }\n    \nprivate:\n\tDBVT_INLINE void\t\t\t\tAddSpan(const btVector3& d,btScalar& smi,btScalar& smx) const;\nprivate:\n\tbtVector3\tmi,mx;\n};\n\n// Types\t\ntypedef\tbtDbvtAabbMm\tbtDbvtVolume;\n\n/* btDbvtNode\t\t\t\t*/ \nstruct\tbtDbvtNode\n{\n\tbtDbvtVolume\tvolume;\n\tbtDbvtNode*\t\tparent;\n\tDBVT_INLINE bool\tisleaf() const\t\t{ return(childs[1]==0); }\n\tDBVT_INLINE bool\tisinternal() const\t{ return(!isleaf()); }\n\tunion\n\t{\n\t\tbtDbvtNode*\tchilds[2];\n\t\tvoid*\tdata;\n\t\tint\t\tdataAsInt;\n\t};\n};\n\n///The btDbvt class implements a fast dynamic bounding volume tree based on axis aligned bounding boxes (aabb tree).\n///This btDbvt is used for soft body collision detection and for the btDbvtBroadphase. It has a fast insert, remove and update of nodes.\n///Unlike the btQuantizedBvh, nodes can be dynamically moved around, which allows for change in topology of the underlying data structure.\nstruct\tbtDbvt\n{\n\t/* Stack element\t*/ \n\tstruct\tsStkNN\n\t{\n\t\tconst btDbvtNode*\ta;\n\t\tconst btDbvtNode*\tb;\n\t\tsStkNN() {}\n\t\tsStkNN(const btDbvtNode* na,const btDbvtNode* nb) : a(na),b(nb) {}\n\t};\n\tstruct\tsStkNP\n\t{\n\t\tconst btDbvtNode*\tnode;\n\t\tint\t\t\tmask;\n\t\tsStkNP(const btDbvtNode* n,unsigned m) : node(n),mask(m) {}\n\t};\n\tstruct\tsStkNPS\n\t{\n\t\tconst btDbvtNode*\tnode;\n\t\tint\t\t\tmask;\n\t\tbtScalar\tvalue;\n\t\tsStkNPS() {}\n\t\tsStkNPS(const btDbvtNode* n,unsigned m,btScalar v) : node(n),mask(m),value(v) {}\n\t};\n\tstruct\tsStkCLN\n\t{\n\t\tconst btDbvtNode*\tnode;\n\t\tbtDbvtNode*\t\tparent;\n\t\tsStkCLN(const btDbvtNode* n,btDbvtNode* p) : node(n),parent(p) {}\n\t};\n\t// Policies/Interfaces\n\n\t/* ICollide\t*/ \n\tstruct\tICollide\n\t{\t\t\n\t\tDBVT_VIRTUAL_DTOR(ICollide)\n\t\t\tDBVT_VIRTUAL void\tProcess(const btDbvtNode*,const btDbvtNode*)\t\t{}\n\t\tDBVT_VIRTUAL void\tProcess(const btDbvtNode*)\t\t\t\t\t{}\n\t\tDBVT_VIRTUAL void\tProcess(const btDbvtNode* n,btScalar)\t\t\t{ Process(n); }\n\t\tDBVT_VIRTUAL bool\tDescent(const btDbvtNode*)\t\t\t\t\t{ return(true); }\n\t\tDBVT_VIRTUAL bool\tAllLeaves(const btDbvtNode*)\t\t\t\t\t{ return(true); }\n\t};\n\t/* IWriter\t*/ \n\tstruct\tIWriter\n\t{\n\t\tvirtual ~IWriter() {}\n\t\tvirtual void\t\tPrepare(const btDbvtNode* root,int numnodes)=0;\n\t\tvirtual void\t\tWriteNode(const btDbvtNode*,int index,int parent,int child0,int child1)=0;\n\t\tvirtual void\t\tWriteLeaf(const btDbvtNode*,int index,int parent)=0;\n\t};\n\t/* IClone\t*/ \n\tstruct\tIClone\n\t{\n\t\tvirtual ~IClone()\t{}\n\t\tvirtual void\t\tCloneLeaf(btDbvtNode*) {}\n\t};\n\n\t// Constants\n\tenum\t{\n\t\tSIMPLE_STACKSIZE\t=\t64,\n\t\tDOUBLE_STACKSIZE\t=\tSIMPLE_STACKSIZE*2\n\t};\n\n\t// Fields\n\tbtDbvtNode*\t\tm_root;\n\tbtDbvtNode*\t\tm_free;\n\tint\t\t\t\tm_lkhd;\n\tint\t\t\t\tm_leaves;\n\tunsigned\t\tm_opath;\n\n\t\n\tbtAlignedObjectArray<sStkNN>\tm_stkStack;\n\tmutable btAlignedObjectArray<const btDbvtNode*>\tm_rayTestStack;\n\n\n\t// Methods\n\tbtDbvt();\n\t~btDbvt();\n\tvoid\t\t\tclear();\n\tbool\t\t\tempty() const { return(0==m_root); }\n\tvoid\t\t\toptimizeBottomUp();\n\tvoid\t\t\toptimizeTopDown(int bu_treshold=128);\n\tvoid\t\t\toptimizeIncremental(int passes);\n\tbtDbvtNode*\t\tinsert(const btDbvtVolume& box,void* data);\n\tvoid\t\t\tupdate(btDbvtNode* leaf,int lookahead=-1);\n\tvoid\t\t\tupdate(btDbvtNode* leaf,btDbvtVolume& volume);\n\tbool\t\t\tupdate(btDbvtNode* leaf,btDbvtVolume& volume,const btVector3& velocity,btScalar margin);\n\tbool\t\t\tupdate(btDbvtNode* leaf,btDbvtVolume& volume,const btVector3& velocity);\n\tbool\t\t\tupdate(btDbvtNode* leaf,btDbvtVolume& volume,btScalar margin);\t\n\tvoid\t\t\tremove(btDbvtNode* leaf);\n\tvoid\t\t\twrite(IWriter* iwriter) const;\n\tvoid\t\t\tclone(btDbvt& dest,IClone* iclone=0) const;\n\tstatic int\t\tmaxdepth(const btDbvtNode* node);\n\tstatic int\t\tcountLeaves(const btDbvtNode* node);\n\tstatic void\t\textractLeaves(const btDbvtNode* node,btAlignedObjectArray<const btDbvtNode*>& leaves);\n#if DBVT_ENABLE_BENCHMARK\n\tstatic void\t\tbenchmark();\n#else\n\tstatic void\t\tbenchmark(){}\n#endif\n\t// DBVT_IPOLICY must support ICollide policy/interface\n\tDBVT_PREFIX\n\t\tstatic void\t\tenumNodes(\tconst btDbvtNode* root,\n\t\tDBVT_IPOLICY);\n\tDBVT_PREFIX\n\t\tstatic void\t\tenumLeaves(\tconst btDbvtNode* root,\n\t\tDBVT_IPOLICY);\n\tDBVT_PREFIX\n\t\tvoid\t\tcollideTT(\tconst btDbvtNode* root0,\n\t\tconst btDbvtNode* root1,\n\t\tDBVT_IPOLICY);\n\n\tDBVT_PREFIX\n\t\tvoid\t\tcollideTTpersistentStack(\tconst btDbvtNode* root0,\n\t\t  const btDbvtNode* root1,\n\t\t  DBVT_IPOLICY);\n#if 0\n\tDBVT_PREFIX\n\t\tvoid\t\tcollideTT(\tconst btDbvtNode* root0,\n\t\tconst btDbvtNode* root1,\n\t\tconst btTransform& xform,\n\t\tDBVT_IPOLICY);\n\tDBVT_PREFIX\n\t\tvoid\t\tcollideTT(\tconst btDbvtNode* root0,\n\t\tconst btTransform& xform0,\n\t\tconst btDbvtNode* root1,\n\t\tconst btTransform& xform1,\n\t\tDBVT_IPOLICY);\n#endif\n\n\tDBVT_PREFIX\n\t\tvoid\t\tcollideTV(\tconst btDbvtNode* root,\n\t\tconst btDbvtVolume& volume,\n\t\tDBVT_IPOLICY) const;\n\t///rayTest is a re-entrant ray test, and can be called in parallel as long as the btAlignedAlloc is thread-safe (uses locking etc)\n\t///rayTest is slower than rayTestInternal, because it builds a local stack, using memory allocations, and it recomputes signs/rayDirectionInverses each time\n\tDBVT_PREFIX\n\t\tstatic void\t\trayTest(\tconst btDbvtNode* root,\n\t\tconst btVector3& rayFrom,\n\t\tconst btVector3& rayTo,\n\t\tDBVT_IPOLICY);\n\t///rayTestInternal is faster than rayTest, because it uses a persistent stack (to reduce dynamic memory allocations to a minimum) and it uses precomputed signs/rayInverseDirections\n\t///rayTestInternal is used by btDbvtBroadphase to accelerate world ray casts\n\tDBVT_PREFIX\n\t\tvoid\t\trayTestInternal(\tconst btDbvtNode* root,\n\t\t\t\t\t\t\t\tconst btVector3& rayFrom,\n\t\t\t\t\t\t\t\tconst btVector3& rayTo,\n\t\t\t\t\t\t\t\tconst btVector3& rayDirectionInverse,\n\t\t\t\t\t\t\t\tunsigned int signs[3],\n\t\t\t\t\t\t\t\tbtScalar lambda_max,\n\t\t\t\t\t\t\t\tconst btVector3& aabbMin,\n\t\t\t\t\t\t\t\tconst btVector3& aabbMax,\n\t\t\t\t\t\t\t\tDBVT_IPOLICY) const;\n\n\tDBVT_PREFIX\n\t\tstatic void\t\tcollideKDOP(const btDbvtNode* root,\n\t\tconst btVector3* normals,\n\t\tconst btScalar* offsets,\n\t\tint count,\n\t\tDBVT_IPOLICY);\n\tDBVT_PREFIX\n\t\tstatic void\t\tcollideOCL(\tconst btDbvtNode* root,\n\t\tconst btVector3* normals,\n\t\tconst btScalar* offsets,\n\t\tconst btVector3& sortaxis,\n\t\tint count,\t\t\t\t\t\t\t\t\n\t\tDBVT_IPOLICY,\n\t\tbool fullsort=true);\n\tDBVT_PREFIX\n\t\tstatic void\t\tcollideTU(\tconst btDbvtNode* root,\n\t\tDBVT_IPOLICY);\n\t// Helpers\t\n\tstatic DBVT_INLINE int\tnearest(const int* i,const btDbvt::sStkNPS* a,btScalar v,int l,int h)\n\t{\n\t\tint\tm=0;\n\t\twhile(l<h)\n\t\t{\n\t\t\tm=(l+h)>>1;\n\t\t\tif(a[i[m]].value>=v) l=m+1; else h=m;\n\t\t}\n\t\treturn(h);\n\t}\n\tstatic DBVT_INLINE int\tallocate(\tbtAlignedObjectArray<int>& ifree,\n\t\tbtAlignedObjectArray<sStkNPS>& stock,\n\t\tconst sStkNPS& value)\n\t{\n\t\tint\ti;\n\t\tif(ifree.size()>0)\n\t\t{ i=ifree[ifree.size()-1];ifree.pop_back();stock[i]=value; }\n\t\telse\n\t\t{ i=stock.size();stock.push_back(value); }\n\t\treturn(i); \n\t}\n\t//\nprivate:\n\tbtDbvt(const btDbvt&)\t{}\t\n};\n\n//\n// Inline's\n//\n\n//\ninline btDbvtAabbMm\t\t\tbtDbvtAabbMm::FromCE(const btVector3& c,const btVector3& e)\n{\n\tbtDbvtAabbMm box;\n\tbox.mi=c-e;box.mx=c+e;\n\treturn(box);\n}\n\n//\ninline btDbvtAabbMm\t\t\tbtDbvtAabbMm::FromCR(const btVector3& c,btScalar r)\n{\n\treturn(FromCE(c,btVector3(r,r,r)));\n}\n\n//\ninline btDbvtAabbMm\t\t\tbtDbvtAabbMm::FromMM(const btVector3& mi,const btVector3& mx)\n{\n\tbtDbvtAabbMm box;\n\tbox.mi=mi;box.mx=mx;\n\treturn(box);\n}\n\n//\ninline btDbvtAabbMm\t\t\tbtDbvtAabbMm::FromPoints(const btVector3* pts,int n)\n{\n\tbtDbvtAabbMm box;\n\tbox.mi=box.mx=pts[0];\n\tfor(int i=1;i<n;++i)\n\t{\n\t\tbox.mi.setMin(pts[i]);\n\t\tbox.mx.setMax(pts[i]);\n\t}\n\treturn(box);\n}\n\n//\ninline btDbvtAabbMm\t\t\tbtDbvtAabbMm::FromPoints(const btVector3** ppts,int n)\n{\n\tbtDbvtAabbMm box;\n\tbox.mi=box.mx=*ppts[0];\n\tfor(int i=1;i<n;++i)\n\t{\n\t\tbox.mi.setMin(*ppts[i]);\n\t\tbox.mx.setMax(*ppts[i]);\n\t}\n\treturn(box);\n}\n\n//\nDBVT_INLINE void\t\tbtDbvtAabbMm::Expand(const btVector3& e)\n{\n\tmi-=e;mx+=e;\n}\n\n//\nDBVT_INLINE void\t\tbtDbvtAabbMm::SignedExpand(const btVector3& e)\n{\n\tif(e.x()>0) mx.setX(mx.x()+e[0]); else mi.setX(mi.x()+e[0]);\n\tif(e.y()>0) mx.setY(mx.y()+e[1]); else mi.setY(mi.y()+e[1]);\n\tif(e.z()>0) mx.setZ(mx.z()+e[2]); else mi.setZ(mi.z()+e[2]);\n}\n\n//\nDBVT_INLINE bool\t\tbtDbvtAabbMm::Contain(const btDbvtAabbMm& a) const\n{\n\treturn(\t(mi.x()<=a.mi.x())&&\n\t\t(mi.y()<=a.mi.y())&&\n\t\t(mi.z()<=a.mi.z())&&\n\t\t(mx.x()>=a.mx.x())&&\n\t\t(mx.y()>=a.mx.y())&&\n\t\t(mx.z()>=a.mx.z()));\n}\n\n//\nDBVT_INLINE int\t\tbtDbvtAabbMm::Classify(const btVector3& n,btScalar o,int s) const\n{\n\tbtVector3\t\t\tpi,px;\n\tswitch(s)\n\t{\n\tcase\t(0+0+0):\tpx=btVector3(mi.x(),mi.y(),mi.z());\n\t\tpi=btVector3(mx.x(),mx.y(),mx.z());break;\n\tcase\t(1+0+0):\tpx=btVector3(mx.x(),mi.y(),mi.z());\n\t\tpi=btVector3(mi.x(),mx.y(),mx.z());break;\n\tcase\t(0+2+0):\tpx=btVector3(mi.x(),mx.y(),mi.z());\n\t\tpi=btVector3(mx.x(),mi.y(),mx.z());break;\n\tcase\t(1+2+0):\tpx=btVector3(mx.x(),mx.y(),mi.z());\n\t\tpi=btVector3(mi.x(),mi.y(),mx.z());break;\n\tcase\t(0+0+4):\tpx=btVector3(mi.x(),mi.y(),mx.z());\n\t\tpi=btVector3(mx.x(),mx.y(),mi.z());break;\n\tcase\t(1+0+4):\tpx=btVector3(mx.x(),mi.y(),mx.z());\n\t\tpi=btVector3(mi.x(),mx.y(),mi.z());break;\n\tcase\t(0+2+4):\tpx=btVector3(mi.x(),mx.y(),mx.z());\n\t\tpi=btVector3(mx.x(),mi.y(),mi.z());break;\n\tcase\t(1+2+4):\tpx=btVector3(mx.x(),mx.y(),mx.z());\n\t\tpi=btVector3(mi.x(),mi.y(),mi.z());break;\n\t}\n\tif((btDot(n,px)+o)<0)\t\treturn(-1);\n\tif((btDot(n,pi)+o)>=0)\treturn(+1);\n\treturn(0);\n}\n\n//\nDBVT_INLINE btScalar\tbtDbvtAabbMm::ProjectMinimum(const btVector3& v,unsigned signs) const\n{\n\tconst btVector3*\tb[]={&mx,&mi};\n\tconst btVector3\t\tp(\tb[(signs>>0)&1]->x(),\n\t\tb[(signs>>1)&1]->y(),\n\t\tb[(signs>>2)&1]->z());\n\treturn(btDot(p,v));\n}\n\n//\nDBVT_INLINE void\t\tbtDbvtAabbMm::AddSpan(const btVector3& d,btScalar& smi,btScalar& smx) const\n{\n\tfor(int i=0;i<3;++i)\n\t{\n\t\tif(d[i]<0)\n\t\t{ smi+=mx[i]*d[i];smx+=mi[i]*d[i]; }\n\t\telse\n\t\t{ smi+=mi[i]*d[i];smx+=mx[i]*d[i]; }\n\t}\n}\n\n//\nDBVT_INLINE bool\t\tIntersect(\tconst btDbvtAabbMm& a,\n\t\t\t\t\t\t\t\t  const btDbvtAabbMm& b)\n{\n#if\tDBVT_INT0_IMPL == DBVT_IMPL_SSE\n\tconst __m128\trt(_mm_or_ps(\t_mm_cmplt_ps(_mm_load_ps(b.mx),_mm_load_ps(a.mi)),\n\t\t_mm_cmplt_ps(_mm_load_ps(a.mx),_mm_load_ps(b.mi))));\n#if defined (_WIN32)\n\tconst __int32*\tpu((const __int32*)&rt);\n#else\n    const int*\tpu((const int*)&rt);\n#endif\n\treturn((pu[0]|pu[1]|pu[2])==0);\n#else\n\treturn(\t(a.mi.x()<=b.mx.x())&&\n\t\t(a.mx.x()>=b.mi.x())&&\n\t\t(a.mi.y()<=b.mx.y())&&\n\t\t(a.mx.y()>=b.mi.y())&&\n\t\t(a.mi.z()<=b.mx.z())&&\t\t\n\t\t(a.mx.z()>=b.mi.z()));\n#endif\n}\n\n\n\n//\nDBVT_INLINE bool\t\tIntersect(\tconst btDbvtAabbMm& a,\n\t\t\t\t\t\t\t\t  const btVector3& b)\n{\n\treturn(\t(b.x()>=a.mi.x())&&\n\t\t(b.y()>=a.mi.y())&&\n\t\t(b.z()>=a.mi.z())&&\n\t\t(b.x()<=a.mx.x())&&\n\t\t(b.y()<=a.mx.y())&&\n\t\t(b.z()<=a.mx.z()));\n}\n\n\n\n\n\n//////////////////////////////////////\n\n\n//\nDBVT_INLINE btScalar\tProximity(\tconst btDbvtAabbMm& a,\n\t\t\t\t\t\t\t\t  const btDbvtAabbMm& b)\n{\n\tconst btVector3\td=(a.mi+a.mx)-(b.mi+b.mx);\n\treturn(btFabs(d.x())+btFabs(d.y())+btFabs(d.z()));\n}\n\n\n\n//\nDBVT_INLINE int\t\t\tSelect(\tconst btDbvtAabbMm& o,\n\t\t\t\t\t\t\t   const btDbvtAabbMm& a,\n\t\t\t\t\t\t\t   const btDbvtAabbMm& b)\n{\n#if\tDBVT_SELECT_IMPL == DBVT_IMPL_SSE\n    \n#if defined (_WIN32)\n\tstatic ATTRIBUTE_ALIGNED16(const unsigned __int32)\tmask[]={0x7fffffff,0x7fffffff,0x7fffffff,0x7fffffff};\n#else\n    static ATTRIBUTE_ALIGNED16(const unsigned int)\tmask[]={0x7fffffff,0x7fffffff,0x7fffffff,0x00000000 /*0x7fffffff*/};\n#endif\n\t///@todo: the intrinsic version is 11% slower\n#if DBVT_USE_INTRINSIC_SSE\n\n\tunion btSSEUnion ///NOTE: if we use more intrinsics, move btSSEUnion into the LinearMath directory\n\t{\n\t   __m128\t\tssereg;\n\t   float\t\tfloats[4];\n\t   int\t\t\tints[4];\n\t};\n\n\t__m128\tomi(_mm_load_ps(o.mi));\n\tomi=_mm_add_ps(omi,_mm_load_ps(o.mx));\n\t__m128\tami(_mm_load_ps(a.mi));\n\tami=_mm_add_ps(ami,_mm_load_ps(a.mx));\n\tami=_mm_sub_ps(ami,omi);\n\tami=_mm_and_ps(ami,_mm_load_ps((const float*)mask));\n\t__m128\tbmi(_mm_load_ps(b.mi));\n\tbmi=_mm_add_ps(bmi,_mm_load_ps(b.mx));\n\tbmi=_mm_sub_ps(bmi,omi);\n\tbmi=_mm_and_ps(bmi,_mm_load_ps((const float*)mask));\n\t__m128\tt0(_mm_movehl_ps(ami,ami));\n\tami=_mm_add_ps(ami,t0);\n\tami=_mm_add_ss(ami,_mm_shuffle_ps(ami,ami,1));\n\t__m128 t1(_mm_movehl_ps(bmi,bmi));\n\tbmi=_mm_add_ps(bmi,t1);\n\tbmi=_mm_add_ss(bmi,_mm_shuffle_ps(bmi,bmi,1));\n\t\n\tbtSSEUnion tmp;\n\ttmp.ssereg = _mm_cmple_ss(bmi,ami);\n\treturn tmp.ints[0]&1;\n\n#else\n\tATTRIBUTE_ALIGNED16(__int32\tr[1]);\n\t__asm\n\t{\n\t\tmov\t\teax,o\n\t\t\tmov\t\tecx,a\n\t\t\tmov\t\tedx,b\n\t\t\tmovaps\txmm0,[eax]\n\t\tmovaps\txmm5,mask\n\t\t\taddps\txmm0,[eax+16]\t\n\t\tmovaps\txmm1,[ecx]\n\t\tmovaps\txmm2,[edx]\n\t\taddps\txmm1,[ecx+16]\n\t\taddps\txmm2,[edx+16]\n\t\tsubps\txmm1,xmm0\n\t\t\tsubps\txmm2,xmm0\n\t\t\tandps\txmm1,xmm5\n\t\t\tandps\txmm2,xmm5\n\t\t\tmovhlps\txmm3,xmm1\n\t\t\tmovhlps\txmm4,xmm2\n\t\t\taddps\txmm1,xmm3\n\t\t\taddps\txmm2,xmm4\n\t\t\tpshufd\txmm3,xmm1,1\n\t\t\tpshufd\txmm4,xmm2,1\n\t\t\taddss\txmm1,xmm3\n\t\t\taddss\txmm2,xmm4\n\t\t\tcmpless\txmm2,xmm1\n\t\t\tmovss\tr,xmm2\n\t}\n\treturn(r[0]&1);\n#endif\n#else\n\treturn(Proximity(o,a)<Proximity(o,b)?0:1);\n#endif\n}\n\n//\nDBVT_INLINE void\t\tMerge(\tconst btDbvtAabbMm& a,\n\t\t\t\t\t\t\t  const btDbvtAabbMm& b,\n\t\t\t\t\t\t\t  btDbvtAabbMm& r)\n{\n#if DBVT_MERGE_IMPL==DBVT_IMPL_SSE\n\t__m128\tami(_mm_load_ps(a.mi));\n\t__m128\tamx(_mm_load_ps(a.mx));\n\t__m128\tbmi(_mm_load_ps(b.mi));\n\t__m128\tbmx(_mm_load_ps(b.mx));\n\tami=_mm_min_ps(ami,bmi);\n\tamx=_mm_max_ps(amx,bmx);\n\t_mm_store_ps(r.mi,ami);\n\t_mm_store_ps(r.mx,amx);\n#else\n\tfor(int i=0;i<3;++i)\n\t{\n\t\tif(a.mi[i]<b.mi[i]) r.mi[i]=a.mi[i]; else r.mi[i]=b.mi[i];\n\t\tif(a.mx[i]>b.mx[i]) r.mx[i]=a.mx[i]; else r.mx[i]=b.mx[i];\n\t}\n#endif\n}\n\n//\nDBVT_INLINE bool\t\tNotEqual(\tconst btDbvtAabbMm& a,\n\t\t\t\t\t\t\t\t const btDbvtAabbMm& b)\n{\n\treturn(\t(a.mi.x()!=b.mi.x())||\n\t\t(a.mi.y()!=b.mi.y())||\n\t\t(a.mi.z()!=b.mi.z())||\n\t\t(a.mx.x()!=b.mx.x())||\n\t\t(a.mx.y()!=b.mx.y())||\n\t\t(a.mx.z()!=b.mx.z()));\n}\n\n//\n// Inline's\n//\n\n//\nDBVT_PREFIX\ninline void\t\tbtDbvt::enumNodes(\tconst btDbvtNode* root,\n\t\t\t\t\t\t\t\t  DBVT_IPOLICY)\n{\n\tDBVT_CHECKTYPE\n\t\tpolicy.Process(root);\n\tif(root->isinternal())\n\t{\n\t\tenumNodes(root->childs[0],policy);\n\t\tenumNodes(root->childs[1],policy);\n\t}\n}\n\n//\nDBVT_PREFIX\ninline void\t\tbtDbvt::enumLeaves(\tconst btDbvtNode* root,\n\t\t\t\t\t\t\t\t   DBVT_IPOLICY)\n{\n\tDBVT_CHECKTYPE\n\t\tif(root->isinternal())\n\t\t{\n\t\t\tenumLeaves(root->childs[0],policy);\n\t\t\tenumLeaves(root->childs[1],policy);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tpolicy.Process(root);\n\t\t}\n}\n\n//\nDBVT_PREFIX\ninline void\t\tbtDbvt::collideTT(\tconst btDbvtNode* root0,\n\t\t\t\t\t\t\t\t  const btDbvtNode* root1,\n\t\t\t\t\t\t\t\t  DBVT_IPOLICY)\n{\n\tDBVT_CHECKTYPE\n\t\tif(root0&&root1)\n\t\t{\n\t\t\tint\t\t\t\t\t\t\t\tdepth=1;\n\t\t\tint\t\t\t\t\t\t\t\ttreshold=DOUBLE_STACKSIZE-4;\n\t\t\tbtAlignedObjectArray<sStkNN>\tstkStack;\n\t\t\tstkStack.resize(DOUBLE_STACKSIZE);\n\t\t\tstkStack[0]=sStkNN(root0,root1);\n\t\t\tdo\t{\t\t\n\t\t\t\tsStkNN\tp=stkStack[--depth];\n\t\t\t\tif(depth>treshold)\n\t\t\t\t{\n\t\t\t\t\tstkStack.resize(stkStack.size()*2);\n\t\t\t\t\ttreshold=stkStack.size()-4;\n\t\t\t\t}\n\t\t\t\tif(p.a==p.b)\n\t\t\t\t{\n\t\t\t\t\tif(p.a->isinternal())\n\t\t\t\t\t{\n\t\t\t\t\t\tstkStack[depth++]=sStkNN(p.a->childs[0],p.a->childs[0]);\n\t\t\t\t\t\tstkStack[depth++]=sStkNN(p.a->childs[1],p.a->childs[1]);\n\t\t\t\t\t\tstkStack[depth++]=sStkNN(p.a->childs[0],p.a->childs[1]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if(Intersect(p.a->volume,p.b->volume))\n\t\t\t\t{\n\t\t\t\t\tif(p.a->isinternal())\n\t\t\t\t\t{\n\t\t\t\t\t\tif(p.b->isinternal())\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tstkStack[depth++]=sStkNN(p.a->childs[0],p.b->childs[0]);\n\t\t\t\t\t\t\tstkStack[depth++]=sStkNN(p.a->childs[1],p.b->childs[0]);\n\t\t\t\t\t\t\tstkStack[depth++]=sStkNN(p.a->childs[0],p.b->childs[1]);\n\t\t\t\t\t\t\tstkStack[depth++]=sStkNN(p.a->childs[1],p.b->childs[1]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tstkStack[depth++]=sStkNN(p.a->childs[0],p.b);\n\t\t\t\t\t\t\tstkStack[depth++]=sStkNN(p.a->childs[1],p.b);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tif(p.b->isinternal())\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tstkStack[depth++]=sStkNN(p.a,p.b->childs[0]);\n\t\t\t\t\t\t\tstkStack[depth++]=sStkNN(p.a,p.b->childs[1]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpolicy.Process(p.a,p.b);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} while(depth);\n\t\t}\n}\n\n\n\nDBVT_PREFIX\ninline void\t\tbtDbvt::collideTTpersistentStack(\tconst btDbvtNode* root0,\n\t\t\t\t\t\t\t\t  const btDbvtNode* root1,\n\t\t\t\t\t\t\t\t  DBVT_IPOLICY)\n{\n\tDBVT_CHECKTYPE\n\t\tif(root0&&root1)\n\t\t{\n\t\t\tint\t\t\t\t\t\t\t\tdepth=1;\n\t\t\tint\t\t\t\t\t\t\t\ttreshold=DOUBLE_STACKSIZE-4;\n\t\t\t\n\t\t\tm_stkStack.resize(DOUBLE_STACKSIZE);\n\t\t\tm_stkStack[0]=sStkNN(root0,root1);\n\t\t\tdo\t{\t\t\n\t\t\t\tsStkNN\tp=m_stkStack[--depth];\n\t\t\t\tif(depth>treshold)\n\t\t\t\t{\n\t\t\t\t\tm_stkStack.resize(m_stkStack.size()*2);\n\t\t\t\t\ttreshold=m_stkStack.size()-4;\n\t\t\t\t}\n\t\t\t\tif(p.a==p.b)\n\t\t\t\t{\n\t\t\t\t\tif(p.a->isinternal())\n\t\t\t\t\t{\n\t\t\t\t\t\tm_stkStack[depth++]=sStkNN(p.a->childs[0],p.a->childs[0]);\n\t\t\t\t\t\tm_stkStack[depth++]=sStkNN(p.a->childs[1],p.a->childs[1]);\n\t\t\t\t\t\tm_stkStack[depth++]=sStkNN(p.a->childs[0],p.a->childs[1]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if(Intersect(p.a->volume,p.b->volume))\n\t\t\t\t{\n\t\t\t\t\tif(p.a->isinternal())\n\t\t\t\t\t{\n\t\t\t\t\t\tif(p.b->isinternal())\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tm_stkStack[depth++]=sStkNN(p.a->childs[0],p.b->childs[0]);\n\t\t\t\t\t\t\tm_stkStack[depth++]=sStkNN(p.a->childs[1],p.b->childs[0]);\n\t\t\t\t\t\t\tm_stkStack[depth++]=sStkNN(p.a->childs[0],p.b->childs[1]);\n\t\t\t\t\t\t\tm_stkStack[depth++]=sStkNN(p.a->childs[1],p.b->childs[1]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tm_stkStack[depth++]=sStkNN(p.a->childs[0],p.b);\n\t\t\t\t\t\t\tm_stkStack[depth++]=sStkNN(p.a->childs[1],p.b);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tif(p.b->isinternal())\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tm_stkStack[depth++]=sStkNN(p.a,p.b->childs[0]);\n\t\t\t\t\t\t\tm_stkStack[depth++]=sStkNN(p.a,p.b->childs[1]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpolicy.Process(p.a,p.b);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} while(depth);\n\t\t}\n}\n\n#if 0\n//\nDBVT_PREFIX\ninline void\t\tbtDbvt::collideTT(\tconst btDbvtNode* root0,\n\t\t\t\t\t\t\t\t  const btDbvtNode* root1,\n\t\t\t\t\t\t\t\t  const btTransform& xform,\n\t\t\t\t\t\t\t\t  DBVT_IPOLICY)\n{\n\tDBVT_CHECKTYPE\n\t\tif(root0&&root1)\n\t\t{\n\t\t\tint\t\t\t\t\t\t\t\tdepth=1;\n\t\t\tint\t\t\t\t\t\t\t\ttreshold=DOUBLE_STACKSIZE-4;\n\t\t\tbtAlignedObjectArray<sStkNN>\tstkStack;\n\t\t\tstkStack.resize(DOUBLE_STACKSIZE);\n\t\t\tstkStack[0]=sStkNN(root0,root1);\n\t\t\tdo\t{\n\t\t\t\tsStkNN\tp=stkStack[--depth];\n\t\t\t\tif(Intersect(p.a->volume,p.b->volume,xform))\n\t\t\t\t{\n\t\t\t\t\tif(depth>treshold)\n\t\t\t\t\t{\n\t\t\t\t\t\tstkStack.resize(stkStack.size()*2);\n\t\t\t\t\t\ttreshold=stkStack.size()-4;\n\t\t\t\t\t}\n\t\t\t\t\tif(p.a->isinternal())\n\t\t\t\t\t{\n\t\t\t\t\t\tif(p.b->isinternal())\n\t\t\t\t\t\t{\t\t\t\t\t\n\t\t\t\t\t\t\tstkStack[depth++]=sStkNN(p.a->childs[0],p.b->childs[0]);\n\t\t\t\t\t\t\tstkStack[depth++]=sStkNN(p.a->childs[1],p.b->childs[0]);\n\t\t\t\t\t\t\tstkStack[depth++]=sStkNN(p.a->childs[0],p.b->childs[1]);\n\t\t\t\t\t\t\tstkStack[depth++]=sStkNN(p.a->childs[1],p.b->childs[1]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tstkStack[depth++]=sStkNN(p.a->childs[0],p.b);\n\t\t\t\t\t\t\tstkStack[depth++]=sStkNN(p.a->childs[1],p.b);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tif(p.b->isinternal())\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tstkStack[depth++]=sStkNN(p.a,p.b->childs[0]);\n\t\t\t\t\t\t\tstkStack[depth++]=sStkNN(p.a,p.b->childs[1]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpolicy.Process(p.a,p.b);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} while(depth);\n\t\t}\n}\n//\nDBVT_PREFIX\ninline void\t\tbtDbvt::collideTT(\tconst btDbvtNode* root0,\n\t\t\t\t\t\t\t\t  const btTransform& xform0,\n\t\t\t\t\t\t\t\t  const btDbvtNode* root1,\n\t\t\t\t\t\t\t\t  const btTransform& xform1,\n\t\t\t\t\t\t\t\t  DBVT_IPOLICY)\n{\n\tconst btTransform\txform=xform0.inverse()*xform1;\n\tcollideTT(root0,root1,xform,policy);\n}\n#endif \n\n//\nDBVT_PREFIX\ninline void\t\tbtDbvt::collideTV(\tconst btDbvtNode* root,\n\t\t\t\t\t\t\t\t  const btDbvtVolume& vol,\n\t\t\t\t\t\t\t\t  DBVT_IPOLICY) const\n{\n\tDBVT_CHECKTYPE\n\t\tif(root)\n\t\t{\n\t\t\tATTRIBUTE_ALIGNED16(btDbvtVolume)\t\tvolume(vol);\n\t\t\tbtAlignedObjectArray<const btDbvtNode*>\tstack;\n\t\t\tstack.resize(0);\n\t\t\tstack.reserve(SIMPLE_STACKSIZE);\n\t\t\tstack.push_back(root);\n\t\t\tdo\t{\n\t\t\t\tconst btDbvtNode*\tn=stack[stack.size()-1];\n\t\t\t\tstack.pop_back();\n\t\t\t\tif(Intersect(n->volume,volume))\n\t\t\t\t{\n\t\t\t\t\tif(n->isinternal())\n\t\t\t\t\t{\n\t\t\t\t\t\tstack.push_back(n->childs[0]);\n\t\t\t\t\t\tstack.push_back(n->childs[1]);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tpolicy.Process(n);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} while(stack.size()>0);\n\t\t}\n}\n\nDBVT_PREFIX\ninline void\t\tbtDbvt::rayTestInternal(\tconst btDbvtNode* root,\n\t\t\t\t\t\t\t\tconst btVector3& rayFrom,\n\t\t\t\t\t\t\t\tconst btVector3& rayTo,\n\t\t\t\t\t\t\t\tconst btVector3& rayDirectionInverse,\n\t\t\t\t\t\t\t\tunsigned int signs[3],\n\t\t\t\t\t\t\t\tbtScalar lambda_max,\n\t\t\t\t\t\t\t\tconst btVector3& aabbMin,\n\t\t\t\t\t\t\t\tconst btVector3& aabbMax,\n\t\t\t\t\t\t\t\tDBVT_IPOLICY) const\n{\n        (void) rayTo;\n\tDBVT_CHECKTYPE\n\tif(root)\n\t{\n\t\tbtVector3 resultNormal;\n\n\t\tint\t\t\t\t\t\t\t\tdepth=1;\n\t\tint\t\t\t\t\t\t\t\ttreshold=DOUBLE_STACKSIZE-2;\n\t\tbtAlignedObjectArray<const btDbvtNode*>&\tstack = m_rayTestStack;\n\t\tstack.resize(DOUBLE_STACKSIZE);\n\t\tstack[0]=root;\n\t\tbtVector3 bounds[2];\n\t\tdo\t\n\t\t{\n\t\t\tconst btDbvtNode*\tnode=stack[--depth];\n\t\t\tbounds[0] = node->volume.Mins()-aabbMax;\n\t\t\tbounds[1] = node->volume.Maxs()-aabbMin;\n\t\t\tbtScalar tmin=1.f,lambda_min=0.f;\n\t\t\tunsigned int result1=false;\n\t\t\tresult1 = btRayAabb2(rayFrom,rayDirectionInverse,signs,bounds,tmin,lambda_min,lambda_max);\n\t\t\tif(result1)\n\t\t\t{\n\t\t\t\tif(node->isinternal())\n\t\t\t\t{\n\t\t\t\t\tif(depth>treshold)\n\t\t\t\t\t{\n\t\t\t\t\t\tstack.resize(stack.size()*2);\n\t\t\t\t\t\ttreshold=stack.size()-2;\n\t\t\t\t\t}\n\t\t\t\t\tstack[depth++]=node->childs[0];\n\t\t\t\t\tstack[depth++]=node->childs[1];\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tpolicy.Process(node);\n\t\t\t\t}\n\t\t\t}\n\t\t} while(depth);\n\t}\n}\n\n//\nDBVT_PREFIX\ninline void\t\tbtDbvt::rayTest(\tconst btDbvtNode* root,\n\t\t\t\t\t\t\t\tconst btVector3& rayFrom,\n\t\t\t\t\t\t\t\tconst btVector3& rayTo,\n\t\t\t\t\t\t\t\tDBVT_IPOLICY)\n{\n\tDBVT_CHECKTYPE\n\t\tif(root)\n\t\t{\n\t\t\tbtVector3 rayDir = (rayTo-rayFrom);\n\t\t\trayDir.normalize ();\n\n\t\t\t///what about division by zero? --> just set rayDirection[i] to INF/BT_LARGE_FLOAT\n\t\t\tbtVector3 rayDirectionInverse;\n\t\t\trayDirectionInverse[0] = rayDir[0] == btScalar(0.0) ? btScalar(BT_LARGE_FLOAT) : btScalar(1.0) / rayDir[0];\n\t\t\trayDirectionInverse[1] = rayDir[1] == btScalar(0.0) ? btScalar(BT_LARGE_FLOAT) : btScalar(1.0) / rayDir[1];\n\t\t\trayDirectionInverse[2] = rayDir[2] == btScalar(0.0) ? btScalar(BT_LARGE_FLOAT) : btScalar(1.0) / rayDir[2];\n\t\t\tunsigned int signs[3] = { rayDirectionInverse[0] < 0.0, rayDirectionInverse[1] < 0.0, rayDirectionInverse[2] < 0.0};\n\n\t\t\tbtScalar lambda_max = rayDir.dot(rayTo-rayFrom);\n\n\t\t\tbtVector3 resultNormal;\n\n\t\t\tbtAlignedObjectArray<const btDbvtNode*>\tstack;\n\n\t\t\tint\t\t\t\t\t\t\t\tdepth=1;\n\t\t\tint\t\t\t\t\t\t\t\ttreshold=DOUBLE_STACKSIZE-2;\n\n\t\t\tstack.resize(DOUBLE_STACKSIZE);\n\t\t\tstack[0]=root;\n\t\t\tbtVector3 bounds[2];\n\t\t\tdo\t{\n\t\t\t\tconst btDbvtNode*\tnode=stack[--depth];\n\n\t\t\t\tbounds[0] = node->volume.Mins();\n\t\t\t\tbounds[1] = node->volume.Maxs();\n\t\t\t\t\n\t\t\t\tbtScalar tmin=1.f,lambda_min=0.f;\n\t\t\t\tunsigned int result1 = btRayAabb2(rayFrom,rayDirectionInverse,signs,bounds,tmin,lambda_min,lambda_max);\n\n#ifdef COMPARE_BTRAY_AABB2\n\t\t\t\tbtScalar param=1.f;\n\t\t\t\tbool result2 = btRayAabb(rayFrom,rayTo,node->volume.Mins(),node->volume.Maxs(),param,resultNormal);\n\t\t\t\tbtAssert(result1 == result2);\n#endif //TEST_BTRAY_AABB2\n\n\t\t\t\tif(result1)\n\t\t\t\t{\n\t\t\t\t\tif(node->isinternal())\n\t\t\t\t\t{\n\t\t\t\t\t\tif(depth>treshold)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tstack.resize(stack.size()*2);\n\t\t\t\t\t\t\ttreshold=stack.size()-2;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tstack[depth++]=node->childs[0];\n\t\t\t\t\t\tstack[depth++]=node->childs[1];\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tpolicy.Process(node);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} while(depth);\n\n\t\t}\n}\n\n//\nDBVT_PREFIX\ninline void\t\tbtDbvt::collideKDOP(const btDbvtNode* root,\n\t\t\t\t\t\t\t\t\tconst btVector3* normals,\n\t\t\t\t\t\t\t\t\tconst btScalar* offsets,\n\t\t\t\t\t\t\t\t\tint count,\n\t\t\t\t\t\t\t\t\tDBVT_IPOLICY)\n{\n\tDBVT_CHECKTYPE\n\t\tif(root)\n\t\t{\n\t\t\tconst int\t\t\t\t\t\tinside=(1<<count)-1;\n\t\t\tbtAlignedObjectArray<sStkNP>\tstack;\n\t\t\tint\t\t\t\t\t\t\t\tsigns[sizeof(unsigned)*8];\n\t\t\tbtAssert(count<int (sizeof(signs)/sizeof(signs[0])));\n\t\t\tfor(int i=0;i<count;++i)\n\t\t\t{\n\t\t\t\tsigns[i]=\t((normals[i].x()>=0)?1:0)+\n\t\t\t\t\t((normals[i].y()>=0)?2:0)+\n\t\t\t\t\t((normals[i].z()>=0)?4:0);\n\t\t\t}\n\t\t\tstack.reserve(SIMPLE_STACKSIZE);\n\t\t\tstack.push_back(sStkNP(root,0));\n\t\t\tdo\t{\n\t\t\t\tsStkNP\tse=stack[stack.size()-1];\n\t\t\t\tbool\tout=false;\n\t\t\t\tstack.pop_back();\n\t\t\t\tfor(int i=0,j=1;(!out)&&(i<count);++i,j<<=1)\n\t\t\t\t{\n\t\t\t\t\tif(0==(se.mask&j))\n\t\t\t\t\t{\n\t\t\t\t\t\tconst int\tside=se.node->volume.Classify(normals[i],offsets[i],signs[i]);\n\t\t\t\t\t\tswitch(side)\n\t\t\t\t\t\t{\n\t\t\t\t\t\tcase\t-1:\tout=true;break;\n\t\t\t\t\t\tcase\t+1:\tse.mask|=j;break;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(!out)\n\t\t\t\t{\n\t\t\t\t\tif((se.mask!=inside)&&(se.node->isinternal()))\n\t\t\t\t\t{\n\t\t\t\t\t\tstack.push_back(sStkNP(se.node->childs[0],se.mask));\n\t\t\t\t\t\tstack.push_back(sStkNP(se.node->childs[1],se.mask));\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tif(policy.AllLeaves(se.node)) enumLeaves(se.node,policy);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} while(stack.size());\n\t\t}\n}\n\n//\nDBVT_PREFIX\ninline void\t\tbtDbvt::collideOCL(\tconst btDbvtNode* root,\n\t\t\t\t\t\t\t\t   const btVector3* normals,\n\t\t\t\t\t\t\t\t   const btScalar* offsets,\n\t\t\t\t\t\t\t\t   const btVector3& sortaxis,\n\t\t\t\t\t\t\t\t   int count,\n\t\t\t\t\t\t\t\t   DBVT_IPOLICY,\n\t\t\t\t\t\t\t\t   bool fsort)\n{\n\tDBVT_CHECKTYPE\n\t\tif(root)\n\t\t{\n\t\t\tconst unsigned\t\t\t\t\tsrtsgns=(sortaxis[0]>=0?1:0)+\n\t\t\t\t(sortaxis[1]>=0?2:0)+\n\t\t\t\t(sortaxis[2]>=0?4:0);\n\t\t\tconst int\t\t\t\t\t\tinside=(1<<count)-1;\n\t\t\tbtAlignedObjectArray<sStkNPS>\tstock;\n\t\t\tbtAlignedObjectArray<int>\t\tifree;\n\t\t\tbtAlignedObjectArray<int>\t\tstack;\n\t\t\tint\t\t\t\t\t\t\t\tsigns[sizeof(unsigned)*8];\n\t\t\tbtAssert(count<int (sizeof(signs)/sizeof(signs[0])));\n\t\t\tfor(int i=0;i<count;++i)\n\t\t\t{\n\t\t\t\tsigns[i]=\t((normals[i].x()>=0)?1:0)+\n\t\t\t\t\t((normals[i].y()>=0)?2:0)+\n\t\t\t\t\t((normals[i].z()>=0)?4:0);\n\t\t\t}\n\t\t\tstock.reserve(SIMPLE_STACKSIZE);\n\t\t\tstack.reserve(SIMPLE_STACKSIZE);\n\t\t\tifree.reserve(SIMPLE_STACKSIZE);\n\t\t\tstack.push_back(allocate(ifree,stock,sStkNPS(root,0,root->volume.ProjectMinimum(sortaxis,srtsgns))));\n\t\t\tdo\t{\n\t\t\t\tconst int\tid=stack[stack.size()-1];\n\t\t\t\tsStkNPS\t\tse=stock[id];\n\t\t\t\tstack.pop_back();ifree.push_back(id);\n\t\t\t\tif(se.mask!=inside)\n\t\t\t\t{\n\t\t\t\t\tbool\tout=false;\n\t\t\t\t\tfor(int i=0,j=1;(!out)&&(i<count);++i,j<<=1)\n\t\t\t\t\t{\n\t\t\t\t\t\tif(0==(se.mask&j))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tconst int\tside=se.node->volume.Classify(normals[i],offsets[i],signs[i]);\n\t\t\t\t\t\t\tswitch(side)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcase\t-1:\tout=true;break;\n\t\t\t\t\t\t\tcase\t+1:\tse.mask|=j;break;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif(out) continue;\n\t\t\t\t}\n\t\t\t\tif(policy.Descent(se.node))\n\t\t\t\t{\n\t\t\t\t\tif(se.node->isinternal())\n\t\t\t\t\t{\n\t\t\t\t\t\tconst btDbvtNode* pns[]={\tse.node->childs[0],se.node->childs[1]};\n\t\t\t\t\t\tsStkNPS\t\tnes[]={\tsStkNPS(pns[0],se.mask,pns[0]->volume.ProjectMinimum(sortaxis,srtsgns)),\n\t\t\t\t\t\t\tsStkNPS(pns[1],se.mask,pns[1]->volume.ProjectMinimum(sortaxis,srtsgns))};\n\t\t\t\t\t\tconst int\tq=nes[0].value<nes[1].value?1:0;\t\t\t\t\n\t\t\t\t\t\tint\t\t\tj=stack.size();\n\t\t\t\t\t\tif(fsort&&(j>0))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t/* Insert 0\t*/ \n\t\t\t\t\t\t\tj=nearest(&stack[0],&stock[0],nes[q].value,0,stack.size());\n\t\t\t\t\t\t\tstack.push_back(0);\n#if DBVT_USE_MEMMOVE\n\t\t\t\t\t\t\tmemmove(&stack[j+1],&stack[j],sizeof(int)*(stack.size()-j-1));\n#else\n\t\t\t\t\t\t\tfor(int k=stack.size()-1;k>j;--k) stack[k]=stack[k-1];\n#endif\n\t\t\t\t\t\t\tstack[j]=allocate(ifree,stock,nes[q]);\n\t\t\t\t\t\t\t/* Insert 1\t*/ \n\t\t\t\t\t\t\tj=nearest(&stack[0],&stock[0],nes[1-q].value,j,stack.size());\n\t\t\t\t\t\t\tstack.push_back(0);\n#if DBVT_USE_MEMMOVE\n\t\t\t\t\t\t\tmemmove(&stack[j+1],&stack[j],sizeof(int)*(stack.size()-j-1));\n#else\n\t\t\t\t\t\t\tfor(int k=stack.size()-1;k>j;--k) stack[k]=stack[k-1];\n#endif\n\t\t\t\t\t\t\tstack[j]=allocate(ifree,stock,nes[1-q]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tstack.push_back(allocate(ifree,stock,nes[q]));\n\t\t\t\t\t\t\tstack.push_back(allocate(ifree,stock,nes[1-q]));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tpolicy.Process(se.node,se.value);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} while(stack.size());\n\t\t}\n}\n\n//\nDBVT_PREFIX\ninline void\t\tbtDbvt::collideTU(\tconst btDbvtNode* root,\n\t\t\t\t\t\t\t\t  DBVT_IPOLICY)\n{\n\tDBVT_CHECKTYPE\n\t\tif(root)\n\t\t{\n\t\t\tbtAlignedObjectArray<const btDbvtNode*>\tstack;\n\t\t\tstack.reserve(SIMPLE_STACKSIZE);\n\t\t\tstack.push_back(root);\n\t\t\tdo\t{\n\t\t\t\tconst btDbvtNode*\tn=stack[stack.size()-1];\n\t\t\t\tstack.pop_back();\n\t\t\t\tif(policy.Descent(n))\n\t\t\t\t{\n\t\t\t\t\tif(n->isinternal())\n\t\t\t\t\t{ stack.push_back(n->childs[0]);stack.push_back(n->childs[1]); }\n\t\t\t\t\telse\n\t\t\t\t\t{ policy.Process(n); }\n\t\t\t\t}\n\t\t\t} while(stack.size()>0);\n\t\t}\n}\n\n//\n// PP Cleanup\n//\n\n#undef DBVT_USE_MEMMOVE\n#undef DBVT_USE_TEMPLATE\n#undef DBVT_VIRTUAL_DTOR\n#undef DBVT_VIRTUAL\n#undef DBVT_PREFIX\n#undef DBVT_IPOLICY\n#undef DBVT_CHECKTYPE\n#undef DBVT_IMPL_GENERIC\n#undef DBVT_IMPL_SSE\n#undef DBVT_USE_INTRINSIC_SSE\n#undef DBVT_SELECT_IMPL\n#undef DBVT_MERGE_IMPL\n#undef DBVT_INT0_IMPL\n\n#endif\n"
  },
  {
    "path": "Sources/NativeDAABBTree/dllmain.cpp",
    "content": "// dllmain.cpp : Defines the entry point for the DLL application.\n#include \"stdafx.h\"\n\nBOOL APIENTRY DllMain( HMODULE hModule,\n                       DWORD  ul_reason_for_call,\n                       LPVOID lpReserved\n\t\t\t\t\t )\n{\n\tswitch (ul_reason_for_call)\n\t{\n\tcase DLL_PROCESS_ATTACH:\n\tcase DLL_THREAD_ATTACH:\n\tcase DLL_THREAD_DETACH:\n\tcase DLL_PROCESS_DETACH:\n\t\tbreak;\n\t}\n\treturn TRUE;\n}\n\n"
  },
  {
    "path": "Sources/NativeDAABBTree/stdafx.cpp",
    "content": "// stdafx.cpp : source file that includes just the standard includes\n// NativeDAABBTree.pch will be the pre-compiled header\n// stdafx.obj will contain the pre-compiled type information\n\n#include \"stdafx.h\"\n\n// TODO: reference any additional headers you need in STDAFX.H\n// and not in this file\n"
  },
  {
    "path": "Sources/NativeDAABBTree/stdafx.h",
    "content": "// stdafx.h : include file for standard system include files,\n// or project specific include files that are used frequently, but\n// are changed infrequently\n//\n\n#pragma once\n\n#include \"targetver.h\"\n\n#define WIN32_LEAN_AND_MEAN             // Exclude rarely-used stuff from Windows headers\n// Windows Header Files:\n#include <windows.h>\n\n\n\n// TODO: reference additional headers your program requires here\n"
  },
  {
    "path": "Sources/NativeDAABBTree/targetver.h",
    "content": "#pragma once\n\n// Including SDKDDKVer.h defines the highest available Windows platform.\n\n// If you wish to build your application for a previous Windows platform, include WinSDKVer.h and\n// set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h.\n\n#include <SDKDDKVer.h>\n"
  },
  {
    "path": "Sources/ParallelTasks/ActionWork.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace ParallelTasks\n{\n    public class ActionWork: IWork\n    {\n        public readonly Action Action;\n\n        public ActionWork(Action action)\n            :this(action, Parallel.DefaultOptions)\n        {\n        }\n\n        public ActionWork(Action action, WorkOptions options)\n        {\n            this.Action = action;\n            this.Options = options;\n        }\n\n        public void DoWork()\n        {\n            Action();\n        }\n\n        public WorkOptions Options\n        {\n            get;\n            private set;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/ParallelTasks/BackgroundWorker.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading;\n\nnamespace ParallelTasks\n{\n    class BackgroundWorker\n    {\n        static Stack<BackgroundWorker> idleWorkers = new Stack<BackgroundWorker>();\n\n        Thread thread;\n        AutoResetEvent resetEvent;\n        Task work;\n\n        public BackgroundWorker()\n        {\n            resetEvent = new AutoResetEvent(false);\n            thread = new Thread(WorkLoop);\n            thread.IsBackground = true;\n            thread.Start();\n        }\n\n        private void WorkLoop()\n        {\n            while (true)\n            {\n                resetEvent.WaitOne();\n                work.DoWork();\n\n                lock (idleWorkers)\n                {\n                    idleWorkers.Push(this);\n                }\n            }\n        }\n\n        private void Start(Task work)\n        {\n            this.work = work;\n            this.resetEvent.Set();\n        }\n\n        public static void StartWork(Task work)\n        {\n            BackgroundWorker worker = null;\n            lock (idleWorkers)\n            {\n                if (idleWorkers.Count > 0)\n                    worker = idleWorkers.Pop();\n            }\n\n            if (worker == null)\n                worker = new BackgroundWorker();\n\n            worker.Start(work);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/ParallelTasks/DelegateWork.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace ParallelTasks\n{\n    class DelegateWork: IWork\n    {\n        static Pool<DelegateWork> instances = new Pool<DelegateWork>();\n\n        public Action Action { get; set; }\n        public WorkOptions Options { get; set; }\n\n        public DelegateWork()\n        {\n        }\n\n        public void DoWork()\n        {\n            Action();\n            instances.Return(System.Threading.Thread.CurrentThread, this);\n        }\n\n        internal static DelegateWork GetInstance()\n        {\n            return instances.Get(System.Threading.Thread.CurrentThread);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/ParallelTasks/Deque.cs",
    "content": "﻿// Implemention from Joe Duffy's blog:\n// http://www.bluebytesoftware.com/blog/2008/08/12/BuildingACustomThreadPoolSeriesPart2AWorkStealingQueue.aspx\n\nusing System;\nusing System.Threading;\n\nclass Deque<T>\n{\n    private const int INITIAL_SIZE = 32;\n    private T[] m_array = new T[INITIAL_SIZE];\n    private int m_mask = INITIAL_SIZE - 1;\n    private volatile int m_headIndex = 0;\n    private volatile int m_tailIndex = 0;\n    private object m_foreignLock = new object();\n\n    public bool IsEmpty\n    {\n        get { return m_headIndex >= m_tailIndex; }\n    }\n\n    public int Count\n    {\n        get { return m_tailIndex - m_headIndex; }\n    }\n\n    public void LocalPush(T obj)\n    {\n        lock (m_foreignLock)\n        {\n            int tail = m_tailIndex;\n            if (tail < m_headIndex + m_mask)\n            {\n                m_array[tail & m_mask] = obj;\n                m_tailIndex = tail + 1;\n            }\n            else\n            {\n\n                int head = m_headIndex;\n                int count = m_tailIndex - m_headIndex;\n\n                if (count >= m_mask)\n                {\n                    T[] newArray = new T[m_array.Length << 1];\n                    for (int i = 0; i < count; i++)\n                        newArray[i] = m_array[(i + head) & m_mask];\n\n                    // Reset the field values, incl. the mask.\n                    m_array = newArray;\n                    m_headIndex = 0;\n                    m_tailIndex = tail = count;\n                    m_mask = (m_mask << 1) | 1;\n                }\n                m_array[tail & m_mask] = obj;\n                m_tailIndex = tail + 1;\n            }\n        }\n    }\n\n    public bool LocalPop(ref T obj)\n    {\n        lock (m_foreignLock)\n        {\n            int tail = m_tailIndex;\n            if (m_headIndex >= tail)\n                return false;\n\n#pragma warning disable 0420\n\n            tail -= 1;\n            Interlocked.Exchange(ref m_tailIndex, tail);\n\n            if (m_headIndex <= tail)\n            {\n                obj = m_array[tail & m_mask];\n                return true;\n            }\n            else\n            {\n\n                if (m_headIndex <= tail)\n                {\n                    // Element still available. Take it.\n                    obj = m_array[tail & m_mask];\n                    return true;\n                }\n                else\n                {\n                    // We lost the race, element was stolen, restore the tail.\n                    m_tailIndex = tail + 1;\n                    return false;\n                }\n            }\n        }\n    }\n\n    public bool TrySteal(ref T obj)\n    {\n        bool taken = false;\n        try\n        {\n            taken = Monitor.TryEnter(m_foreignLock);\n            if (taken)\n            {\n                int head = m_headIndex;\n                Interlocked.Exchange(ref m_headIndex, head + 1);\n                if (head < m_tailIndex)\n                {\n                    obj = m_array[head & m_mask];\n                    return true;\n                }\n                else\n                {\n                    m_headIndex = head;\n                    return false;\n                }\n            }\n        }\n        finally\n        {\n            if (taken)\n                Monitor.Exit(m_foreignLock);\n        }\n\n        return false;\n    }\n\n    public void Clear()\n    {\n        for (int i = 0; i < m_array.Length; i++)\n        {\n            m_array[i] = default(T);\n        }\n        m_headIndex = 0;\n        m_tailIndex = 0;\n    }\n}"
  },
  {
    "path": "Sources/ParallelTasks/Future.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading;\n\nnamespace ParallelTasks\n{\n    /// <summary>\n    /// A task struct which can return a result.\n    /// </summary>\n    /// <typeparam name=\"T\">The type of result this future calculates.</typeparam>\n    public struct Future<T>\n    {\n        private Task task;\n        private FutureWork<T> work;\n        private int id;\n\n        /// <summary>\n        /// Gets a value which indicates if this future has completed.\n        /// </summary>\n        public bool IsComplete\n        {\n            get { return task.IsComplete; }\n        }\n\n        /// <summary>\n        /// Gets an array containing any exceptions thrown by this future.\n        /// </summary>\n        public Exception[] Exceptions\n        {\n            get { return task.Exceptions; }\n        }\n\n        internal Future(Task task, FutureWork<T> work)\n        {\n            this.task = task;\n            this.work = work;\n            this.id = work.ID;\n        }\n\n        /// <summary>\n        /// Gets the result. Blocks the calling thread until the future has completed execution.\n        /// This can only be called once!\n        /// </summary>\n        /// <returns></returns>\n        public T GetResult()\n        {\n            if (work == null || work.ID != id)\n                throw new InvalidOperationException(\"The result of a future can only be retrieved once.\");\n\n            task.Wait();\n            var result = work.Result;\n            work.ReturnToPool();\n            work = null;\n\n            return result;\n        }\n    }\n\n    class FutureWork<T>\n        : IWork\n    {\n        public int ID { get; private set; }\n        public WorkOptions Options { get; set; }\n        public Func<T> Function { get; set; }\n        public T Result { get; set; }\n\n        public void DoWork()\n        {\n            Result = Function();            \n        }\n\n        public static FutureWork<T> GetInstance()\n        {\n            return Pool<FutureWork<T>>.Instance.Get(System.Threading.Thread.CurrentThread);\n        }\n\n        public void ReturnToPool()\n        {\n            if (ID < int.MaxValue)\n            {\n                ID++;\n\n                // MartinG@DigitalRune: Reset properties before recycling to avoid \"memory leaks\".\n                Function = null;\n                Result = default(T);\n\n                Pool<FutureWork<T>>.Instance.Return(System.Threading.Thread.CurrentThread, this);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/ParallelTasks/Hashtable.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading;\n\nnamespace ParallelTasks\n{\n    /// <summary>\n    /// A thread safe hashtable.\n    /// </summary>\n    /// <typeparam name=\"Key\">The type of item to use as keys.</typeparam>\n    /// <typeparam name=\"Data\">The type of data stored.</typeparam>\n    public class Hashtable<Key, Data>\n        : IEnumerable<KeyValuePair<Key, Data>>\n    {\n        struct Node\n        {\n            public Key Key;\n            public Data Data;\n            public Token Token;\n        }\n\n        enum Token\n        {\n            Empty,\n            Used,\n            Deleted\n        }\n\n        class Enumerator\n            : IEnumerator<KeyValuePair<Key, Data>>\n        {\n            int currentIndex = -1;\n            Hashtable<Key, Data> table;\n\n            public Enumerator(Hashtable<Key, Data> table)\n            {\n                this.table = table;\n            }\n\n            public KeyValuePair<Key, Data> Current\n            {\n                get;\n                private set;\n            }\n\n            public void Dispose()\n            {\n            }\n\n            object System.Collections.IEnumerator.Current\n            {\n                get { return Current; }\n            }\n\n            public bool MoveNext()\n            {\n                Node node;\n                do\n                {\n                    currentIndex++;\n                    if (table.array.Length <= currentIndex)\n                        return false;\n\n                    node = table.array[currentIndex];\n                } while (node.Token != Hashtable<Key,Data>.Token.Used);\n\n                Current = new KeyValuePair<Key,Data>(node.Key, node.Data);\n                return true;\n            }\n\n            public void Reset()\n            {\n                currentIndex = -1;\n            }\n        }\n\n\n        // MartinG@DigitalRune: Use EqualityComparer.Equals() instead of object.Equals(). \n        // object.Equals() casts value types to object and can therefore create \"garbage\".\n        private static readonly EqualityComparer<Key> KeyComparer = EqualityComparer<Key>.Default;\n\n        volatile Node[] array;\n        SpinLock writeLock;\n\n        static readonly Node DeletedNode = new Node() { Key = default(Key), Data = default(Data), Token = Token.Deleted };\n\n        /// <summary>\n        /// Initializes a new instance of the <see cref=\"Hashtable&lt;Key, Data&gt;\"/> class.\n        /// </summary>\n        /// <param name=\"initialCapacity\">The initial capacity of the table.</param>\n        public Hashtable(int initialCapacity)\n        {\n            if (initialCapacity < 1)\n                throw new ArgumentOutOfRangeException(\"initialCapacity\", \"cannot be < 1\");\n            array = new Hashtable<Key, Data>.Node[initialCapacity];\n            writeLock = new SpinLock();\n        }\n\n        /// <summary>\n        /// Adds an item to this hashtable.\n        /// </summary>\n        /// <param name=\"key\">The key at which to add the item.</param>\n        /// <param name=\"data\">The data to add.</param>\n        public void Add(Key key, Data data)\n        {\n            try\n            {\n                writeLock.Enter();\n                bool inserted = Insert(array, key, data);\n\n                if (!inserted)\n                {\n                    Resize();\n                    Insert(array, key, data);\n                }\n            }\n            finally\n            {\n                writeLock.Exit();\n            }\n        }\n\n        private void Resize()\n        {\n            var newArray = new Node[array.Length * 2];\n            for (int i = 0; i < array.Length; i++)\n            {\n                var item = array[i];\n                if (item.Token == Token.Used)\n                    Insert(newArray, item.Key, item.Data);\n            }\n\n            array = newArray;\n        }\n\n        private bool Insert(Node[] table, Key key, Data data)\n        {\n            var initialHash = Math.Abs(key.GetHashCode()) % table.Length;\n            var hash = initialHash;\n            bool inserted = false;\n            do\n            {\n                var node = table[hash];\n                // if node is empty, or marked with a tombstone\n                if (node.Token == Token.Empty || node.Token == Token.Deleted || KeyComparer.Equals(key, node.Key))\n                {\n                    table[hash] = new Node()\n                    {\n                        Key = key,\n                        Data = data,\n                        Token = Token.Used\n                    };\n                    inserted = true;\n                    break;\n                }\n                else\n                    hash = (hash + 1) % table.Length;\n            } while (hash != initialHash);\n\n            return inserted;\n        }\n\n        /// <summary>\n        /// Sets the value of the item at the specified key location.\n        /// This is only guaranteed to work correctly if no other thread is modifying the same key.\n        /// </summary>\n        /// <param name=\"key\">The key.</param>\n        /// <param name=\"value\">The new value.</param>\n        public void UnsafeSet(Key key, Data value)\n        {\n            Node[] table;\n            bool inserted = false;\n\n            do\n            {\n                table = array;\n                var initialHash = Math.Abs(key.GetHashCode()) % table.Length;\n                var hash = initialHash;\n\n                do\n                {\n                    var node = table[hash];\n                    if (KeyComparer.Equals(key, node.Key))\n                    {\n                        table[hash] = new Node()\n                        {\n                            Key = key,\n                            Data = value,\n                            Token = Token.Used\n                        };\n                        inserted = true;\n                        break;\n                    }\n                    else\n                        hash = (hash + 1) % table.Length;\n                } while (hash != initialHash);\n            } while (table != array);\n\n            // MartinG@DigitalRune: I have moved the Add() outside the loop because it uses a \n            // write-lock and the loop above should run without locks.\n            if (!inserted)\n                Add(key, value);\n        }\n\n        private bool Find(Key key, out Node node)\n        {\n            node = new Hashtable<Key, Data>.Node();\n            var table = array;\n            var initialHash = Math.Abs(key.GetHashCode()) % table.Length;\n            var hash = initialHash;\n            \n            do\n            {\n                Node n = table[hash];\n                if (n.Token == Token.Empty)\n                    return false;\n                if (n.Token == Token.Deleted || !KeyComparer.Equals(key, n.Key))\n                    hash = (hash + 1) % table.Length;\n                else\n                {\n                    node = n;\n                    return true;\n                }\n            } while (hash != initialHash);\n\n            return false;\n        }\n\n        /// <summary>\n        /// Tries to get the data at the specified key location.\n        /// </summary>\n        /// <param name=\"key\">The key to search for.</param>\n        /// <param name=\"data\">The data at the key location.</param>\n        /// <returns><c>true</c> if the data was found; else <c>false</c>.</returns>\n        public bool TryGet(Key key, out Data data)\n        {\n            Node n;\n            if (Find(key, out n))\n            {\n                data = n.Data;\n                return true;\n            }\n            else\n            {\n                data = default(Data);\n                return false;\n            }\n        }\n\n        /// <summary>\n        /// Removes the data at the specified key location.\n        /// </summary>\n        /// <param name=\"key\">The key.</param>\n        public void Remove(Key key)\n        {\n            try\n            {\n                writeLock.Enter();\n\n\n                Node[] table = array;\n                var initialHash = Math.Abs(key.GetHashCode()) % table.Length;\n                var hash = initialHash;\n\n                do\n                {\n                    Node n = table[hash];\n                    if (n.Token == Token.Empty)\n                        return;\n                    if (n.Token == Token.Deleted || !KeyComparer.Equals(key, n.Key))\n                        hash = (hash + 1) % table.Length;\n                    else\n                        table[hash] = DeletedNode;\n                } while (hash != initialHash);      // MartinG@DigitalRune: Stop when all entries are checked!\n            }\n            finally\n            {\n                writeLock.Exit();\n            }\n        }\n\n        /// <summary>\n        /// Returns an enumerator that iterates through the collection.\n        /// </summary>\n        /// <returns>\n        /// A <see cref=\"T:System.Collections.Generic.IEnumerator`1\"/> that can be used to iterate through the collection.\n        /// </returns>\n        public IEnumerator<KeyValuePair<Key, Data>> GetEnumerator()\n        {\n            return new Enumerator(this);\n        }\n\n        /// <summary>\n        /// Returns an enumerator that iterates through a collection.\n        /// </summary>\n        /// <returns>\n        /// An <see cref=\"T:System.Collections.IEnumerator\"/> object that can be used to iterate through the collection.\n        /// </returns>\n        System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()\n        {\n            return GetEnumerator();\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/ParallelTasks/IWork.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace ParallelTasks\n{\n    /// <summary>\n    /// An interface for a piece of work which can be executed by ParallelTasks.\n    /// </summary>\n    public interface IWork\n    {\n        /// <summary>\n        /// Executes the work.\n        /// </summary>\n        void DoWork();\n\n        /// <summary>\n        /// Gets options specifying how this work may be executed.\n        /// </summary>\n        WorkOptions Options { get; }\n    }\n}\n"
  },
  {
    "path": "Sources/ParallelTasks/IWorkScheduler.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace ParallelTasks\n{\n    /// <summary>\n    /// An interface defining a task scheduler.\n    /// </summary>\n    public interface IWorkScheduler\n    {\n        /// <summary>\n        /// Schedules a task for execution.\n        /// </summary>\n        /// <param name=\"item\">The task to schedule.</param>\n        void Schedule(Task item);\n    }\n}"
  },
  {
    "path": "Sources/ParallelTasks/LoopWork.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading;\n\nnamespace ParallelTasks\n{\n    class ForLoopWork\n        : IWork\n    {\n        private static Pool<ForLoopWork> pool = new Pool<ForLoopWork>();\n\n        private Action<int> action;\n        private int length;\n        private int stride;\n        private volatile int index;\n\n        public WorkOptions Options { get; private set; }\n\n        public ForLoopWork()\n        {\n            Options = new WorkOptions() { MaximumThreads = int.MaxValue };\n        }\n\n        public void Prepare(Action<int> action, int startInclusive, int endExclusive, int stride)\n        {\n            this.action = action;\n            this.index = startInclusive;\n            this.length = endExclusive;\n            this.stride = stride;\n        }\n\n        public void DoWork()\n        {\n            int start;\n            while ((start = IncrementIndex()) < length)\n            {\n                int end = Math.Min(start + stride, length);\n                for (int i = start; i < end; i++)\n                {\n                    action(i);\n                }\n            }\n        }\n\n        private int IncrementIndex()\n        {\n#if XBOX\n            int x;\n            do\n            {\n                x = index;\n            } while (Interlocked.CompareExchange(ref index, x + stride, x) != x);\n            return x;\n#else\n            return Interlocked.Add(ref index, stride) - stride;\n#endif\n        }\n\n        public static ForLoopWork Get()\n        {\n            return pool.Get(System.Threading.Thread.CurrentThread);\n        }\n\n        public void Return()\n        {\n            action = null;\n            pool.Return(System.Threading.Thread.CurrentThread, this);\n        }\n    }\n\n    class ForEachLoopWork<T>\n        : IWork\n    {\n        static Pool<ForEachLoopWork<T>> pool = Pool<ForEachLoopWork<T>>.Instance;\n\n        private Action<T> action;\n        private IEnumerator<T> enumerator;\n        private volatile bool notDone;\n        private object syncLock;\n\n        public WorkOptions Options { get; private set; }\n\n        public ForEachLoopWork()\n        {\n            Options = new WorkOptions() { MaximumThreads = int.MaxValue };\n            syncLock = new object();\n        }\n\n        public void Prepare(Action<T> action, IEnumerator<T> enumerator)\n        {\n            this.action = action;\n            this.enumerator = enumerator;\n            this.notDone = true;\n        }\n\n        public void DoWork()\n        {\n            T item = default(T);\n            while (notDone)\n            {\n                bool haveValue = false;\n                lock (syncLock)\n                {\n                    if (notDone = enumerator.MoveNext())\n                    {\n                        item = enumerator.Current;\n                        haveValue = true;\n                    }\n                }\n\n                if (haveValue)\n                    action(item);\n            }\n        }\n\n        public static ForEachLoopWork<T> Get()\n        {\n            return pool.Get(System.Threading.Thread.CurrentThread);\n        }\n\n        public void Return()\n        {\n            enumerator = null;\n            action = null;\n            pool.Return(System.Threading.Thread.CurrentThread, this);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/ParallelTasks/Parallel.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading;\n\nnamespace ParallelTasks\n{\n    /// <summary>\n    /// A static class containing factory methods for creating tasks.\n    /// </summary>\n    public static class Parallel\n    {\n        public static readonly WorkOptions DefaultOptions = new WorkOptions() { DetachFromParent = false, MaximumThreads = 1 };\n\n        static IWorkScheduler scheduler;\n        static Pool<List<Task>> taskPool = new Pool<List<Task>>();\n        static List<WorkItem> callbackBuffer = new List<WorkItem>();\n\n        /// <summary>\n        /// Executes all task callbacks on a single thread.\n        /// This method is not re-entrant. It is suggested you call it only on the main thread.\n        /// </summary>\n        public static void RunCallbacks()\n        {\n            lock (WorkItem.AwaitingCallbacks)\n            {\n                callbackBuffer.AddRange(WorkItem.AwaitingCallbacks);\n                WorkItem.AwaitingCallbacks.Clear();\n            }\n\n            for (int i = 0; i < callbackBuffer.Count; i++)\n            {\n                var item = callbackBuffer[i];\n                item.Callback();\n                item.Callback = null;\n                item.Requeue();\n            }\n\n            callbackBuffer.Clear();\n        }\n\n\n        // MartinG@DigitalRune: I made the processor affinity configurable. In some cases a we want \n        // to dedicate a hardware thread to a certain service and don't want the ParallelTasks worker \n        // to run on that same hardware thread.\n\n        /// <summary>\n        /// Gets or sets the processor affinity of the worker threads.\n        /// </summary>\n        /// <value>\n        /// The processor affinity of the worker threads. The default value is <c>{ 3, 4, 5, 1 }</c>.\n        /// </value>\n        /// <remarks>\n        /// <para>\n        /// In the .NET Compact Framework for Xbox 360 the processor affinity determines the processors \n        /// on which a thread runs. \n        /// </para>\n        /// <para>\n        /// <strong>Note:</strong> The processor affinity is only relevant in the .NET Compact Framework \n        /// for Xbox 360. Setting the processor affinity has no effect in Windows!\n        /// </para>\n        /// <para>\n        /// <strong>Important:</strong> The processor affinity needs to be set before any parallel tasks\n        /// are created. Changing the processor affinity afterwards has no effect.\n        /// </para>\n        /// </remarks>\n        /// <exception cref=\"ArgumentNullException\">\n        /// <paramref name=\"value\" /> is <see langword=\"null\"/>.\n        /// </exception>\n        /// <exception cref=\"ArgumentException\">\n        /// The specified array is empty or contains invalid values.\n        /// </exception>\n        public static int[] ProcessorAffinity\n        {\n            get { return _processorAffinity; }\n            set\n            {\n                if (value == null)\n                    throw new ArgumentNullException(\"value\");\n\n                if (value.Length < 1)\n                    throw new ArgumentException(\"The Parallel.ProcessorAffinity must contain at least one value.\", \"value\");\n\n                if (value.Any(id => id < 0))\n                    throw new ArgumentException(\"The processor affinity must not be negative.\", \"value\");\n\n#if XBOX\n                if (value.Any(id => id == 0 || id == 2))\n                    throw new ArgumentException(\"The hardware threads 0 and 2 are reserved and should not be used on Xbox 360.\", \"value\");\n\n                if (value.Any(id => id > 5))\n                    throw new ArgumentException(\"Invalid value. The Xbox 360 has max. 6 hardware threads.\", \"value\");\n#endif\n\n                _processorAffinity = value;\n            }\n        }\n        private static int[] _processorAffinity = { 3, 4, 5, 1 };\n\n\n        /// <summary>\n        /// Gets or sets the work scheduler.\n        /// This defaults to a <see cref=\"SimpleScheduler\"/> instance.\n        /// </summary>\n        /// <exception cref=\"ArgumentNullException\">\n        /// <paramref name=\"value\"/> is <see langword=\"null\"/>.\n        /// </exception>\n        public static IWorkScheduler Scheduler\n        {\n            get\n            {\n                if (scheduler == null)\n                {\n                    IWorkScheduler newScheduler = new WorkStealingScheduler();\n                    Interlocked.CompareExchange(ref scheduler, newScheduler, null);\n                }\n\n                return scheduler;\n            }\n\n            set\n            {\n                if (value == null)\n                    throw new ArgumentNullException(\"value\");\n\n                Interlocked.Exchange(ref scheduler, value);\n            }\n        }\n\n        /// <summary>\n        /// Starts a task in a secondary worker thread. Intended for long running, blocking, work\n        /// such as I/O.\n        /// </summary>\n        /// <param name=\"work\">The work to execute.</param>\n        /// <returns>A task which represents one execution of the work.</returns>\n        public static Task StartBackground(IWork work)\n        {\n            return StartBackground(work, null);\n        }\n\n        /// <summary>\n        /// Starts a task in a secondary worker thread. Intended for long running, blocking, work\n        /// such as I/O.\n        /// </summary>\n        /// <param name=\"work\">The work to execute.</param>\n        /// <param name=\"completionCallback\">A method which will be called in Parallel.RunCallbacks() once this task has completed.</param>\n        /// <returns>A task which represents one execution of the work.</returns>\n        /// <exception cref=\"ArgumentNullException\">\n        /// <paramref name=\"work\"/> is <see langword=\"null\"/>.\n        /// </exception>\n        /// <exception cref=\"ArgumentException\">\n        /// Invalid number of maximum threads set in <see cref=\"IWork.Options\"/>.\n        /// </exception>\n        public static Task StartBackground(IWork work, Action completionCallback)\n        {\n            if (work == null)\n                throw new ArgumentNullException(\"work\");\n\n            if (work.Options.MaximumThreads < 1)\n                throw new ArgumentException(\"work.Options.MaximumThreads cannot be less than one.\");\n            var workItem = WorkItem.Get(Thread.CurrentThread);\n            workItem.Callback = completionCallback;\n            var task = workItem.PrepareStart(work);\n            BackgroundWorker.StartWork(task);\n            return task;\n        }\n\n        /// <summary>\n        /// Starts a task in a secondary worker thread. Intended for long running, blocking, work\n        /// such as I/O.\n        /// </summary>\n        /// <param name=\"action\">The work to execute.</param>\n        /// <returns>A task which represents one execution of the action.</returns>\n        public static Task StartBackground(Action action)\n        {\n            return StartBackground(action, null);\n        }\n\n        /// <summary>\n        /// Starts a task in a secondary worker thread. Intended for long running, blocking, work\n        /// such as I/O.\n        /// </summary>\n        /// <param name=\"action\">The work to execute.</param>\n        /// <param name=\"completionCallback\">A method which will be called in Parallel.RunCallbacks() once this task has completed.</param>\n        /// <returns>A task which represents one execution of the action.</returns>\n        /// <exception cref=\"ArgumentNullException\">\n        /// <paramref name=\"action\"/> is <see langword=\"null\"/>.\n        /// </exception>\n        public static Task StartBackground(Action action, Action completionCallback)\n        {\n            if (action == null)\n                throw new ArgumentNullException(\"action\");\n\n            var work = DelegateWork.GetInstance();\n            work.Action = action;\n            work.Options = DefaultOptions;\n            return StartBackground(work, completionCallback);\n        }\n\n        /// <summary>\n        /// Creates and starts a task to execute the given work.\n        /// </summary>\n        /// <param name=\"work\">The work to execute in parallel.</param>\n        /// <returns>A task which represents one execution of the work.</returns>\n        public static Task Start(IWork work)\n        {\n            return Start(work, null);\n        }\n\n        /// <summary>\n        /// Creates and starts a task to execute the given work.\n        /// </summary>\n        /// <param name=\"work\">The work to execute in parallel.</param>\n        /// <param name=\"completionCallback\">A method which will be called in Parallel.RunCallbacks() once this task has completed.</param>\n        /// <returns>A task which represents one execution of the work.</returns>\n        /// <exception cref=\"ArgumentNullException\">\n        /// <paramref name=\"work\"/> is <see langword=\"null\"/>.\n        /// </exception>\n        /// <exception cref=\"ArgumentException\">\n        /// Invalid number of maximum threads set in <see cref=\"IWork.Options\"/>.\n        /// </exception>\n        public static Task Start(IWork work, Action completionCallback)\n        {\n            if (work == null)\n                throw new ArgumentNullException(\"work\");\n\n            if (work.Options.MaximumThreads < 1)\n                throw new ArgumentException(\"work.Options.MaximumThreads cannot be less than one.\");\n\n            var workItem = WorkItem.Get(Thread.CurrentThread);\n            workItem.Callback = completionCallback;\n            var task = workItem.PrepareStart(work);\n            Scheduler.Schedule(task);\n            return task;\n        }\n\n        /// <summary>\n        /// Creates and starts a task to execute the given work.\n        /// </summary>\n        /// <param name=\"action\">The work to execute in parallel.</param>\n        /// <returns>A task which represents one execution of the work.</returns>\n        public static Task Start(Action action)\n        {\n            return Start(action, null);\n        }\n\n        /// <summary>\n        /// Creates and starts a task to execute the given work.\n        /// </summary>\n        /// <param name=\"action\">The work to execute in parallel.</param>\n        /// <param name=\"completionCallback\">A method which will be called in Parallel.RunCallbacks() once this task has completed.</param>\n        /// <returns>A task which represents one execution of the work.</returns>\n        public static Task Start(Action action, Action completionCallback)\n        {\n            return Start(action, new WorkOptions() { MaximumThreads = 1, DetachFromParent = false, QueueFIFO = false }, completionCallback);\n        }\n\n        /// <summary>\n        /// Creates and starts a task to execute the given work.\n        /// </summary>\n        /// <param name=\"action\">The work to execute in parallel.</param>\n        /// <param name=\"options\">The work options to use with this action.</param>\n        /// <returns>A task which represents one execution of the work.</returns>\n        public static Task Start(Action action, WorkOptions options)\n        {\n            return Start(action, options, null);\n        }\n\n        /// <summary>\n        /// Creates and starts a task to execute the given work.\n        /// </summary>\n        /// <param name=\"action\">The work to execute in parallel.</param>\n        /// <param name=\"options\">The work options to use with this action.</param>\n        /// <param name=\"completionCallback\">A method which will be called in Parallel.RunCallbacks() once this task has completed.</param>\n        /// <returns>A task which represents one execution of the work.</returns>\n        public static Task Start(Action action, WorkOptions options, Action completionCallback)\n        {\n            if (options.MaximumThreads < 1)\n                throw new ArgumentOutOfRangeException(\"options\", \"options.MaximumThreads cannot be less than 1.\");\n            var work = DelegateWork.GetInstance();\n            work.Action = action;\n            work.Options = options;\n            return Start(work, completionCallback);\n        }\n\n        /// <summary>\n        /// Creates and starts a task which executes the given function and stores the result for later retrieval.\n        /// </summary>\n        /// <typeparam name=\"T\">The type of result the function returns.</typeparam>\n        /// <param name=\"function\">The function to execute in parallel.</param>\n        /// <returns>A future which represults one execution of the function.</returns>\n        public static Future<T> Start<T>(Func<T> function)\n        {\n            return Start(function, null);\n        }\n\n        /// <summary>\n        /// Creates and starts a task which executes the given function and stores the result for later retrieval.\n        /// </summary>\n        /// <typeparam name=\"T\">The type of result the function returns.</typeparam>\n        /// <param name=\"function\">The function to execute in parallel.</param>\n        /// <param name=\"completionCallback\">A method which will be called in Parallel.RunCallbacks() once this task has completed.</param>\n        /// <returns>A future which represults one execution of the function.</returns>\n        public static Future<T> Start<T>(Func<T> function, Action completionCallback)\n        {\n            return Start<T>(function, DefaultOptions, completionCallback);\n        }\n\n        /// <summary>\n        /// Creates and starts a task which executes the given function and stores the result for later retrieval.\n        /// </summary>\n        /// <typeparam name=\"T\">The type of result the function returns.</typeparam>\n        /// <param name=\"function\">The function to execute in parallel.</param>\n        /// <param name=\"options\">The work options to use with this action.</param>\n        /// <returns>A future which represents one execution of the function.</returns>\n        public static Future<T> Start<T>(Func<T> function, WorkOptions options)\n        {\n            return Start<T>(function, options, null);\n        }\n\n        /// <summary>\n        /// Creates and starts a task which executes the given function and stores the result for later retrieval.\n        /// </summary>\n        /// <typeparam name=\"T\">The type of result the function returns.</typeparam>\n        /// <param name=\"function\">The function to execute in parallel.</param>\n        /// <param name=\"options\">The work options to use with this action.</param>\n        /// <param name=\"completionCallback\">A method which will be called in Parallel.RunCallbacks() once this task has completed.</param>\n        /// <returns>A future which represents one execution of the function.</returns>\n        public static Future<T> Start<T>(Func<T> function, WorkOptions options, Action completionCallback)\n        {\n            if (options.MaximumThreads < 1)\n                throw new ArgumentOutOfRangeException(\"options\", \"options.MaximumThreads cannot be less than 1.\");\n            var work = FutureWork<T>.GetInstance();\n            work.Function = function;\n            work.Options = options;\n            var task = Start(work, completionCallback);\n            return new Future<T>(task, work);\n        }\n\n        /// <summary>\n        /// Executes the given work items potentially in parallel with each other.\n        /// This method will block until all work is completed.\n        /// </summary>\n        /// <param name=\"a\">Work to execute.</param>\n        /// <param name=\"b\">Work to execute.</param>\n        public static void Do(IWork a, IWork b)\n        {\n            Task task = Start(b);\n            a.DoWork();\n            task.Wait();\n        }\n\n        /// <summary>\n        /// Executes the given work items potentially in parallel with each other.\n        /// This method will block until all work is completed.\n        /// </summary>\n        /// <param name=\"work\">The work to execute.</param>\n        public static void Do(params IWork[] work)\n        {\n            List<Task> tasks = taskPool.Get(Thread.CurrentThread);\n\n            for (int i = 0; i < work.Length; i++)\n            {\n                tasks.Add(Start(work[i]));\n            }\n\n            for (int i = 0; i < tasks.Count; i++)\n            {\n                tasks[i].Wait();\n            }\n\n            tasks.Clear();\n            taskPool.Return(Thread.CurrentThread, tasks);\n        }\n\n        /// <summary>\n        /// Executes the given work items potentially in parallel with each other.\n        /// This method will block until all work is completed.\n        /// </summary>\n        /// <param name=\"action1\">The work to execute.</param>\n        /// <param name=\"action2\">The work to execute.</param>\n        public static void Do(Action action1, Action action2)\n        {\n            var work = DelegateWork.GetInstance();\n            work.Action = action2;\n            work.Options = DefaultOptions;\n            var task = Start(work);\n            action1();\n            task.Wait();\n        }\n\n        /// <summary>\n        /// Executes the given work items potentially in parallel with each other.\n        /// This method will block until all work is completed.\n        /// </summary>\n        /// <param name=\"actions\">The work to execute.</param>\n        public static void Do(params Action[] actions)\n        {\n            List<Task> tasks = taskPool.Get(Thread.CurrentThread);\n\n            for (int i = 0; i < actions.Length; i++)\n            {\n                var work = DelegateWork.GetInstance();\n                work.Action = actions[i];\n                work.Options = DefaultOptions;\n                tasks.Add(Start(work));\n            }\n\n            for (int i = 0; i < actions.Length; i++)\n            {\n                tasks[i].Wait();\n            }\n\n            tasks.Clear();\n            taskPool.Return(Thread.CurrentThread, tasks);\n        }\n\n        /// <summary>\n        /// Executes a for loop, where each iteration can potentially occur in parallel with others.\n        /// </summary>\n        /// <param name=\"startInclusive\">The index (inclusive) at which to start iterating.</param>\n        /// <param name=\"endExclusive\">The index (exclusive) at which to end iterating.</param>\n        /// <param name=\"body\">The method to execute at each iteration. The current index is supplied as the parameter.</param>\n        public static void For(int startInclusive, int endExclusive, Action<int> body)\n        {\n            For(startInclusive, endExclusive, body, 8);\n        }\n\n        /// <summary>\n        /// Executes a for loop, where each iteration can potentially occur in parallel with others.\n        /// </summary>\n        /// <param name=\"startInclusive\">The index (inclusive) at which to start iterating.</param>\n        /// <param name=\"endExclusive\">The index (exclusive) at which to end iterating.</param>\n        /// <param name=\"body\">The method to execute at each iteration. The current index is supplied as the parameter.</param>\n        /// <param name=\"stride\">The number of iterations that each processor takes at a time.</param>\n        public static void For(int startInclusive, int endExclusive, Action<int> body, int stride)\n        {\n            var work = ForLoopWork.Get();\n            work.Prepare(body, startInclusive, endExclusive, stride);\n            var task = Start(work);\n            task.Wait();\n            work.Return();\n        }\n\n        /// <summary>\n        /// Executes a foreach loop, where each iteration can potentially occur in parallel with others.\n        /// </summary>\n        /// <typeparam name=\"T\">The type of item to iterate over.</typeparam>\n        /// <param name=\"collection\">The enumerable data source.</param>\n        /// <param name=\"action\">The method to execute at each iteration. The item to process is supplied as the parameter.</param>\n        public static void ForEach<T>(IEnumerable<T> collection, Action<T> action)\n        {\n            var work = ForEachLoopWork<T>.Get();\n            work.Prepare(action, collection.GetEnumerator());\n            var task = Start(work);\n            task.Wait();\n            work.Return();\n        }\n\n        public static void Clean()\n        {\n            taskPool.Clean();\n            callbackBuffer.Clear();\n            WorkItem.Clean();\n        }\n    }\n}"
  },
  {
    "path": "Sources/ParallelTasks/ParallelTasks.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\" ToolsVersion=\"4.0\">\n  <PropertyGroup>\n    <ProjectGuid>{D0B69D3D-70AD-4C7C-BEFB-AFF902AB9BD2}</ProjectGuid>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">x86</Platform>\n    <OutputType>Library</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>ParallelTasks</RootNamespace>\n    <AssemblyName>ParallelTasks</AssemblyName>\n    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|x86' \">\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>bin\\x86\\Debug</OutputPath>\n    <DefineConstants>DEBUG;TRACE;WINDOWS</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n    <NoStdLib>true</NoStdLib>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <PlatformTarget>x86</PlatformTarget>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|x86' \">\n    <DebugType>pdbonly</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>bin\\x86\\Release</OutputPath>\n    <DefineConstants>TRACE;WINDOWS</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n    <NoStdLib>true</NoStdLib>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <PlatformTarget>x86</PlatformTarget>\n    <AllowUnsafeBlocks>false</AllowUnsafeBlocks>\n  </PropertyGroup>\n  <ItemGroup>\n    <Reference Include=\"mscorlib\">\n      <Private>False</Private>\n    </Reference>\n    <Reference Include=\"System\">\n      <Private>False</Private>\n    </Reference>\n  </ItemGroup>\n  <ItemGroup>\n    <Compile Include=\"ActionWork.cs\" />\n    <Compile Include=\"BackgroundWorker.cs\" />\n    <Compile Include=\"DelegateWork.cs\" />\n    <Compile Include=\"Deque.cs\" />\n    <Compile Include=\"LoopWork.cs\" />\n    <Compile Include=\"Future.cs\" />\n    <Compile Include=\"Hashtable.cs\" />\n    <Compile Include=\"IWork.cs\" />\n    <Compile Include=\"IWorkScheduler.cs\" />\n    <Compile Include=\"Parallel.cs\" />\n    <Compile Include=\"Pool.cs\" />\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n    <Compile Include=\"Semaphore.cs\" />\n    <Compile Include=\"SimpleScheduler.cs\" />\n    <Compile Include=\"Singleton.cs\" />\n    <Compile Include=\"SpinLock.cs\" />\n    <Compile Include=\"Task.cs\" />\n    <Compile Include=\"TaskException.cs\" />\n    <Compile Include=\"Worker.cs\" />\n    <Compile Include=\"WorkItem.cs\" />\n    <Compile Include=\"WorkOptions.cs\" />\n    <Compile Include=\"WorkStealingScheduler.cs\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ProjectReference Include=\"..\\Library\\Library.csproj\">\n      <Project>{26FE022E-42AB-40BE-BA9D-97CBE34E7D99}</Project>\n      <Name>Library</Name>\n    </ProjectReference>\n  </ItemGroup>\n  <Import Project=\"$(MSBuildBinPath)\\Microsoft.CSharp.targets\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "Sources/ParallelTasks/Pool.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading;\n\nnamespace ParallelTasks\n{\n    /// <summary>\n    /// A thread safe, non-blocking, object pool.\n    /// </summary>\n    /// <typeparam name=\"T\">The type of item to store. Must be a class with a parameterless constructor.</typeparam>\n    public class Pool<T>\n        : Singleton<Pool<T>>\n        where T: class, new()\n    {\n        struct DequeEnumerator\n        {\n            public Deque<T> Deque;\n            public IEnumerator<KeyValuePair<Thread, DequeEnumerator>> Enumerator;\n        }\n\n        Hashtable<Thread, DequeEnumerator> instances;\n\n        /// <summary>\n        /// Initializes a new instance of the <see cref=\"Pool&lt;T&gt;\"/> class.\n        /// </summary>\n        public Pool()\n        {\n#if WINDOWS_PHONE\n            instances = new Hashtable<Thread, DequeEnumerator>(1);\n#else\n            instances = new Hashtable<Thread, DequeEnumerator>(Environment.ProcessorCount);\n#endif\n        }\n\n        /// <summary>\n        /// Gets an instance from the pool.\n        /// </summary>\n        /// <returns>An instance of <typeparamref name=\"T\"/>.</returns>\n        public T Get(Thread thread)\n        {\n            DequeEnumerator de;\n            if (instances.TryGet(thread, out de))\n            {\n                T instance = default(T);\n                if (de.Deque.LocalPop(ref instance))\n                    return instance;\n                else\n                {\n                    de.Enumerator.Reset();\n                    while (de.Enumerator.MoveNext())\n                    {\n                        if (de.Enumerator.Current.Value.Deque.TrySteal(ref instance))\n                            return instance;\n                    }\n                }\n            }\n\n            return new T();\n        }\n\n        /// <summary>\n        /// Returns an instance to the pool, so it is available for re-use.\n        /// It is advised that the item is reset to a default state before being returned.\n        /// </summary>\n        /// <param name=\"instance\">The instance to return to the pool.</param>\n        public void Return(Thread thread, T instance)\n        {\n            DequeEnumerator de;\n            if (instances.TryGet(thread, out de))\n                de.Deque.LocalPush(instance);\n            else\n            {\n                de = new DequeEnumerator()\n                {\n                    Deque = new Deque<T>(),\n                    Enumerator = instances.GetEnumerator()\n                };\n\n                de.Deque.LocalPush(instance);\n\n                instances.Add(thread, de);\n            }\n        }\n\n\n        public void Clean()\n        {\n            foreach (var instance in instances)\n            {\n                instance.Value.Deque.Clear();\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/ParallelTasks/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"ParallelTasks\")]\n[assembly: AssemblyProduct(\"ParallelTasks\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2009\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Setting ComVisible to false makes the types in this assembly not visible \n// to COM components.  If you need to access a type in this assembly from \n// COM, set the ComVisible attribute to true on that type.\n[assembly: ComVisible(false)]\n\n// The following GUID is for the ID of the typelib if this project is exposed to COM\n[assembly: Guid(\"3c02d49e-8aa1-4213-af3d-6001bc0f876d\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n"
  },
  {
    "path": "Sources/ParallelTasks/Semaphore.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading;\n\nnamespace ParallelTasks\n{\n    /// <summary>\n    /// A semaphore class.\n    /// </summary>\n    public class Semaphore\n    {\n        AutoResetEvent gate;\n        int free;\n        object free_lock = new object();\n\n        /// <summary>\n        /// Creates a new instance of the <see cref=\"Semaphore\"/> class.\n        /// </summary>\n        /// <param name=\"maximumCount\"></param>\n        public Semaphore(int maximumCount)\n        {\n            free = maximumCount;\n            gate = new AutoResetEvent(free > 0);\n        }\n\n        /// <summary>\n        /// Blocks the calling thread until resources are made available, then consumes one resource.\n        /// </summary>\n        public void WaitOne()\n        {\n            gate.WaitOne(); //Enter and close gate\n\n            lock (free_lock)\n            {\n                free--;\n\n                if (free > 0)// If not is full\n                    gate.Set(); //Open gate\n            }\n        }\n\n        /// <summary>\n        /// Adds one resource.\n        /// </summary>\n        public void Release()\n        {\n            lock (free_lock)\n            {\n                free++;\n                gate.Set();//Open gate\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/ParallelTasks/SimpleScheduler.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading;\n\nnamespace ParallelTasks\n{\n    /// <summary>\n    /// A simple work scheduler class, implemented with\n    /// a blocking queue (producer-consumer).\n    /// </summary>\n    public class SimpleScheduler\n        :IWorkScheduler\n    {\n#if XBOX\n        static int affinityIndex;\n#endif\n\n        Stack<Task> scheduledItems;\n        //Semaphore semaphore;\n        AutoResetEvent fastLock;\n\n        /// <summary>\n        /// Creates a new instance of the <see cref=\"SimpleScheduler\"/> class.\n        /// </summary>\n        public SimpleScheduler()\n#if XBOX\n            : this(3)     // MartinG@DigitalRune: I recommend using 3 hardware threads on the Xbox 360 \n                          // (hardware threads 3, 4, 5). Hardware thread 1 usually runs the main game \n                          // logic and will automatically pick up a Task if it is idle and a Task is \n                          // still queued. My performance experiments (using an actual game) have shown \n                          // that using all 4 hardware threads is not optimal.\n#elif WINDOWS_PHONE\n            : this(1)     // Cannot access Environment.ProcessorCount on WP7. (Security issue.)\n#else\n            : this(Environment.ProcessorCount)\n#endif\n        {\n        }\n\n        /// <summary>\n        /// Creates a new instance of the <see cref=\"SimpleScheduler\"/> class.\n        /// </summary>\n        /// <param name=\"threadCount\">The number of worker threads to create.</param>\n        public SimpleScheduler(int threadCount)\n        {\n            scheduledItems = new Stack<Task>();\n           // semaphore = new Semaphore(0);\n            fastLock = new AutoResetEvent(false);\n\n            for (int i = 0; i < threadCount; i++)\n            {\n                Thread thread = new Thread(new ThreadStart(WorkerLoop));\n                thread.IsBackground = true;\n                thread.Name = \"ParallelTasks Worker\";\n                thread.Start();\n            }\n        }\n\n        void WorkerLoop()\n        {\n#if XBOX\n            int i = Interlocked.Increment(ref affinityIndex) - 1;\n            int affinity = Parallel.ProcessorAffinity[i % Parallel.ProcessorAffinity.Length];\n            Thread.CurrentThread.SetProcessorAffinity((int)affinity);\n#endif\n            //semaphore.WaitOne();\n            //mujevent.WaitOne();\n            Task work = new Task();\n\n            while (true)\n            {\n                fastLock.WaitOne();\n\n                if (scheduledItems.Count > 0)\n                {\n                    bool foundWork = false;\n                    lock (scheduledItems)\n                    {\n                        if (scheduledItems.Count > 0)\n                        {\n                            work = scheduledItems.Pop();\n                            foundWork = true;\n                        }\n                    }\n\n                    if (foundWork)\n                    {\n                        work.DoWork();\n                        //semaphore.WaitOne();\n                    }\n                }  \n                else\n                {\n                    var replicable = WorkItem.Replicable;\n                    if (replicable.HasValue)\n                        replicable.Value.DoWork();\n                    WorkItem.SetReplicableNull(replicable);\n                }\n            }\n        }\n\n        /// <summary>\n        /// Schedules a task for execution.\n        /// </summary>\n        /// <param name=\"work\">The task to schedule.</param>\n        public void Schedule(Task work)\n        {\n            //Unfortunatelly this can happen, who knows why\n            if (work.Item.Work == null)\n                return;\n\n            int threads = work.Item.Work.Options.MaximumThreads;\n            lock (scheduledItems)\n                scheduledItems.Push(work);\n            if (threads > 0)\n                WorkItem.Replicable = work;\n           // semaphore.Release();\n           // semaphore.Release();\n            fastLock.Set();\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/ParallelTasks/Singleton.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading;\n\nnamespace ParallelTasks\n{\n    /// <summary>\n    /// Implements a singleton instance of type <typeparamref name=\"T\"/>.\n    /// </summary>\n    /// <typeparam name=\"T\">The type of object to create a singleton instance of.</typeparam>\n    public abstract class Singleton<T> where T : class, new()\n    {\n        private static T instance;\n\n        /// <summary>\n        /// Gets a singleton instance.\n        /// </summary>\n        /// <value>The instance.</value>\n        public static T Instance\n        {\n            get\n            {\n                if (instance == null)\n                {\n                    var newInstance = new T();\n                    Interlocked.CompareExchange(ref instance, newInstance, null);\n                }\n\n                return instance;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/ParallelTasks/SpinLock.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading;\n\nnamespace ParallelTasks\n{\n    /// <summary>\n    /// A struct which implements a spin lock.\n    /// </summary>\n    public struct SpinLock\n    {\n        private Thread owner;\n        private int recursion;\n\n        /// <summary>\n        /// Enters the lock. The calling thread will spin wait until it gains ownership of the lock.\n        /// </summary>\n        public void Enter()\n        {\n            // get the current thread\n            var caller = Thread.CurrentThread;\n\n            // early out: return if the current thread already has ownership.\n            if (owner == caller)\n            {\n                Interlocked.Increment(ref recursion);\n                return;\n            }\n\n            // only set the owner to this thread if the current owner is null. keep trying.\n            while (Interlocked.CompareExchange(ref owner, caller, null) != null) ;\n            Interlocked.Increment(ref recursion);\n        }\n\n        /// <summary>\n        /// Tries to enter the lock.\n        /// </summary>\n        /// <returns><c>true</c> if the lock was successfully taken; else <c>false</c>.</returns>\n        public bool TryEnter()\n        {\n            // get the current thead\n            var caller = Thread.CurrentThread;\n\n            // early out: return if the current thread already has ownership.\n            if (owner == caller)\n            {\n                Interlocked.Increment(ref recursion);\n                return true;\n            }\n\n            // try to take the lock, if the current owner is null.\n            bool success = Interlocked.CompareExchange(ref owner, caller, null) == null;\n            if (success)\n                Interlocked.Increment(ref recursion);\n            return success;\n        }\n\n        /// <summary>\n        /// Tries to enter the lock.\n        /// Fails after the specified time has elapsed without aquiring the lock.\n        /// </summary>\n        /// <param name=\"timeout\">The timeout.</param>\n        /// <returns><c>true</c> if the lock was successfully taken; else <c>false</c>.</returns>\n        public bool TryEnter(TimeSpan timeout)\n        {\n            // get start time and current thread\n            var startTime = DateTime.Now;\n            var caller = Thread.CurrentThread;\n\n            // early out: return if the current thread already has ownership.\n            if (owner == caller)\n            {\n                Interlocked.Increment(ref recursion);\n                return true;\n            }\n\n            // keep trying to set the owner as the current thread, but only if the owner is null.\n            while (Interlocked.CompareExchange(ref owner, caller, null) != null)\n            {\n                // give up if we have taken too long\n                if (DateTime.Now - startTime > timeout)\n                    return false;\n            }\n\n            Interlocked.Increment(ref recursion);\n            return true;\n        }\n\n        /// <summary>\n        /// Exits the lock. This allows other threads to take ownership of the lock.\n        /// </summary>\n        public void Exit()\n        {\n            // get the current thread.\n            var caller = Thread.CurrentThread;\n\n            if (caller == owner)\n            {\n                Interlocked.Decrement(ref recursion);\n                if (recursion == 0)\n                    owner = null;\n            }\n            else\n                throw new InvalidOperationException(\"Exit cannot be called by a thread which does not currently own the lock.\");\n        }\n    }\n}"
  },
  {
    "path": "Sources/ParallelTasks/Task.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading;\n\nnamespace ParallelTasks\n{\n    /// <summary>\n    /// A struct which represents a single execution of an IWork instance.\n    /// </summary>\n    public struct Task\n    {\n        public bool valid ;\n        internal WorkItem Item { get; private set; }\n        internal int ID { get; private set; }\n\n        /// <summary>\n        /// Gets a value which indicates if this task has completed.\n        /// </summary>\n        public bool IsComplete\n        {\n            get { return !valid || Item.RunCount != ID; }\n        }\n\n        /// <summary>\n        /// Gets an array containing any exceptions thrown by this task.\n        /// </summary>\n        public Exception[] Exceptions\n        {\n            get\n            {\n                if (valid && IsComplete)\n                {\n                    Exception[] e;\n                    Item.Exceptions.TryGet(ID, out e);\n                    return e;\n                }\n                return null;\n            }\n        }\n\n        internal Task(WorkItem item)\n            : this()\n        {\n            ID = item.RunCount;\n            Item = item;\n            valid = true;\n        }\n\n        /// <summary>\n        /// Waits for the task to complete.\n        /// </summary>\n        public void Wait()\n        {\n            if (valid)\n            {\n                var currentTask = WorkItem.CurrentTask;\n                if (currentTask.HasValue && currentTask.Value.Item == Item && currentTask.Value.ID == ID)\n                    throw new InvalidOperationException(\"A task cannot wait on itself.\");\n                Item.Wait(ID);\n            }\n        }\n\n        internal void DoWork()\n        {\n            if (valid)\n                Item.DoWork(ID);\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/ParallelTasks/TaskException.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace ParallelTasks\n{\n    /// <summary>\n    /// An exception thrown when an unhandled exception is thrown within a task.\n    /// </summary>\n#if WINDOWS\n    [global::System.Serializable]\n#endif\n    public class TaskException : Exception\n    {\n        /// <summary>\n        /// Gets an array containing any unhandled exceptions that were thrown by the task.\n        /// </summary>\n        public Exception[] InnerExceptions { get; private set; }\n\n        /// <summary>\n        /// Creates a new instance of the <see cref=\"TaskException\"/> class.\n        /// </summary>\n        /// <param name=\"inner\">The unhandled exceptions thrown by the task.</param>\n        public TaskException(Exception[] inner) \n            : base(\"An exception(s) was thrown while executing a task.\", null) \n        {\n            InnerExceptions = inner;\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/ParallelTasks/WorkItem.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading;\nusing KeenSoftwareHouse.Library.Parallelization.Threading;\n\nnamespace ParallelTasks\n{\n    class WorkItem\n    {\n        // MartinG@DigitalRune: I replaced the SpinLocks in this class with normal locks. The \n        // SpinLocks could cause severe problems where threads are blocked up to several milliseconds. \n        // (This behavior was extremely hard to reproduce.)\n\n        // In my applications I often use nested parallel for-loops and need to keep track of all \n        // replicable tasks, not just the most recent. Otherwise, threads can run out of work, \n        // although there are still replicable tasks left. I store the replicable tasks in a stack \n        // (the most recent task on top). - Not sure if this makes sense in all cases.\n        private static readonly Stack<Task> replicables = new Stack<Task>();\n        private static readonly object replicablesLock = new object();\n        private static Task? topReplicable;\n\n        internal static Task? Replicable\n        {\n            get\n            {\n                bool taken = false;\n                try\n                {\n                    taken = Monitor.TryEnter(replicablesLock);\n                    if (taken)\n                    {\n                        return topReplicable;\n                    }\n                    else\n                    {\n                        return null;\n                    }\n                }\n                finally\n                {\n                    if (taken)\n                        Monitor.Exit(replicablesLock);\n                }\n            }\n            set\n            {\n                lock (replicablesLock)\n                {\n                    replicables.Push(value.Value);\n                    topReplicable = value.Value;\n                }\n            }\n        }\n\n\n        internal static void SetReplicableNull(Task? task)\n        {\n            if (!topReplicable.HasValue)\n            {\n                return;\n            }\n\n            if (!task.HasValue)\n            {\n                // SetReplicableNull(null) can be called to clear all replicables.\n                lock (replicablesLock)\n                {\n                    replicables.Clear();\n                    topReplicable = null;\n                }\n            }\n            else\n            {\n                // When called for a specific task, the task is removed from the stack if it is the \n                // top item. (If it is not the top item or we don't get the lock ignore it.)       \n                bool taken = false;\n                try\n                {\n                    taken = Monitor.TryEnter(replicablesLock);\n                    if (taken)\n                    {\n                        if (replicables.Count > 0)\n                        {\n                            Task replicable = replicables.Peek();\n                            if (replicable.ID == task.Value.ID && replicable.Item == task.Value.Item)\n                                replicables.Pop();\n\n                            if (replicables.Count > 0)\n                                topReplicable = replicables.Peek();\n                            else\n                                topReplicable = null;\n                        }\n                    }\n                }\n                finally\n                {\n                    if (taken)\n                        Monitor.Exit(replicablesLock);\n                }\n            }\n        }\n\n        private static List<WorkItem> awaitingCallbacks;\n        internal static List<WorkItem> AwaitingCallbacks\n        {\n            get\n            {\n                if (awaitingCallbacks == null)\n                {\n                    var instance = new List<WorkItem>();\n                    Interlocked.CompareExchange(ref awaitingCallbacks, instance, null);\n                }\n\n                return awaitingCallbacks;\n            }\n        }\n\n        List<Exception> exceptionBuffer;\n        Hashtable<int, Exception[]> exceptions;\n        ManualResetEvent resetEvent;\n        IWork work;\n        volatile int runCount;\n        volatile int executing;\n        List<Task> children;\n        volatile int waitCount;\n        \n        //object executionLock = new object();\n        FastResourceLock executionLock = new FastResourceLock();\n\n        Thread ExecutingThread;\n\n        static Pool<WorkItem> idleWorkItems = new Pool<WorkItem>();\n\n#if WINDOWS_PHONE\n        static Hashtable<Thread, Stack<Task>> runningTasks = new Hashtable<Thread, Stack<Task>>(1);\n#else\n        static Hashtable<Thread, Stack<Task>> runningTasks = new Hashtable<Thread, Stack<Task>>(Environment.ProcessorCount);\n#endif\n\n        public int RunCount\n        {\n            get { return runCount; }\n        }\n\n        public Hashtable<int, Exception[]> Exceptions\n        {\n            get { return exceptions; }\n        }\n\n        public IWork Work\n        {\n            get { return work; }\n        }\n\n        public Action Callback { get; set; }\n\n        public static Task? CurrentTask\n        {\n            get\n            {\n                Stack<Task> tasks;\n                if (runningTasks.TryGet(Thread.CurrentThread, out tasks))\n                {\n                    if (tasks.Count > 0)\n                        return tasks.Peek();\n                }\n                return null;\n            }\n        }\n\n        public WorkItem()\n        {\n            resetEvent = new ManualResetEvent(true);\n            exceptions = new Hashtable<int, Exception[]>(1);\n            children = new List<Task>();\n        }\n\n        public Task PrepareStart(IWork work)\n        {\n            this.work = work;\n            resetEvent.Reset();\n            children.Clear();\n            exceptionBuffer = null;\n            ExecutingThread = Thread.CurrentThread;\n\n            var task = new Task(this);\n            var currentTask = WorkItem.CurrentTask;\n            if (currentTask.HasValue && currentTask.Value.Item == this)\n                throw new Exception(\"whadafak?\");\n            if (!work.Options.DetachFromParent && currentTask.HasValue)\n                currentTask.Value.Item.AddChild(task);\n\n            return task;\n        }\n\n        public bool DoWork(int expectedID)\n        {\n            using (executionLock.AcquireExclusiveUsing())\n            {\n                if (expectedID < runCount)\n                    return true;\n                if (work == null)\n                    return false;\n                if (executing == work.Options.MaximumThreads)\n                    return false;\n                executing++;\n            }\n\n            // associate the current task with this thread, so that Task.CurrentTask gives the correct result\n            Stack<Task> tasks = null;\n            if (!runningTasks.TryGet(Thread.CurrentThread, out tasks))\n            {\n                tasks = new Stack<Task>();\n                runningTasks.Add(Thread.CurrentThread, tasks);\n            }\n            tasks.Push(new Task(this));\n\n            // execute the task\n            try { work.DoWork(); }\n            catch (Exception e)\n            {\n                if (exceptionBuffer == null)\n                {\n                    var newExceptions = new List<Exception>();\n                    Interlocked.CompareExchange(ref exceptionBuffer, newExceptions, null);\n                }\n\n                lock (exceptionBuffer)\n                    exceptionBuffer.Add(e);\n            }\n\n            if (tasks != null)\n                tasks.Pop();\n\n            using (executionLock.AcquireExclusiveUsing())\n            {\n                executing--;\n                if (executing == 0)\n                {\n                    if (exceptionBuffer != null)\n                        exceptions.Add(runCount, exceptionBuffer.ToArray());\n\n                    // wait for all children to complete\n                    foreach (var child in children)\n                        child.Wait();\n\n                    runCount++;\n\n                    // open the reset event, so tasks waiting on this one can continue\n                    resetEvent.Set();\n\n                    // wait for waiting tasks to all exit\n                    while (waitCount > 0) ;\n\n                    if (Callback == null)\n                    {\n                        Requeue();\n                    }\n                    else\n                    {\n                        // if we have a callback, then queue for execution\n                        lock (AwaitingCallbacks)\n                            AwaitingCallbacks.Add(this);\n                    }\n\n                    return true;\n                }\n                return false;\n            }\n\n        }\n\n        public void Requeue()\n        {\n            // requeue the WorkItem for reuse, but only if the runCount hasnt reached the maximum value\n            // dont requeue if an exception has been caught, to stop potential memory leaks.\n            if (runCount < int.MaxValue && exceptionBuffer == null)\n            {\n                //Still problems\n                work = null;\n\n                idleWorkItems.Return(ExecutingThread, this);\n            }\n        }\n\n        public void Wait(int id)\n        {\n            WaitOrExecute(id);\n\n            Exception[] e;\n            if (exceptions.TryGet(id, out e))\n                throw new TaskException(e);\n        }\n\n        private void WaitOrExecute(int id)\n        {\n            if (runCount != id)\n                return;\n\n            if (DoWork(id))\n                return;\n\n            try\n            {\n                Interlocked.Increment(ref waitCount);\n                int i = 0;\n                while (runCount == id)\n                {\n                    if (i > 1000)\n                        resetEvent.WaitOne();\n                    else\n                        Thread.Sleep(0);\n                    i++;\n                }\n            }\n            finally\n            {\n                Interlocked.Decrement(ref waitCount);\n            }\n        }\n\n        public void AddChild(Task item)\n        {\n            using (executionLock.AcquireExclusiveUsing())\n            {\n                children.Add(item);\n            }\n        }\n\n        public static WorkItem Get(Thread thread)\n        {\n            return idleWorkItems.Get(thread);\n        }\n\n        public static void Clean()\n        {\n            replicables.Clear();\n            if (awaitingCallbacks != null)\n            {\n                awaitingCallbacks.Clear();\n            }\n            idleWorkItems.Clean();\n        }\n    }\n}"
  },
  {
    "path": "Sources/ParallelTasks/WorkOptions.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace ParallelTasks\n{\n    /// <summary>\n    /// A struct containing options about how an IWork instance can be executed.\n    /// </summary>\n    public struct WorkOptions\n    {\n        /// <summary>\n        /// Gets or sets a value indicating if the work will be created detached from its parent.\n        /// If <c>false</c>, the parent task will wait for this work to complete before itself completing.\n        /// </summary>\n        public bool DetachFromParent { get; set; }\n\n        /// <summary>\n        /// Gets or sets the maximum number of threads which can concurrently execute this work.\n        /// </summary>\n        public int MaximumThreads { get; set; }\n\n        /// <summary>\n        /// Gets or sets a value indicating that this work should be queued in a first in first out fashion.\n        /// </summary>\n        public bool QueueFIFO { get; set; }\n    }\n}\n"
  },
  {
    "path": "Sources/ParallelTasks/WorkStealingScheduler.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing KeenSoftwareHouse.Library.Parallelization.Threading;\n\nnamespace ParallelTasks\n{\n    /// <summary>\n    /// A \"work stealing\" work scheduler class.\n    /// This can give much better performance than <see cref=\"SimpleScheduler\"/> when tasks often launch sub-tasks.\n    /// </summary>\n    public class WorkStealingScheduler\n        : IWorkScheduler\n    {\n        internal List<Worker> Workers { get; private set; }\n        private Queue<Task> tasks;\n        private FastResourceLock tasksLock;\n\n        /// <summary>\n        /// Creates a new instance of the <see cref=\"WorkStealingScheduler\"/> class.\n        /// </summary>\n        public WorkStealingScheduler()\n#if XBOX\n            : this(3)     // MartinG@DigitalRune: I recommend using 3 hardware threads on the Xbox 360 \n                          // (hardware threads 3, 4, 5). Hardware thread 1 usually runs the main game \n                          // logic and will automatically pick up a Task if it is idle and a Task is \n                          // still queued. My performance experiments (using an actual game) have shown \n                          // that using all 4 hardware threads is not optimal.\n#elif WINDOWS_PHONE\n            : this(1)     // Cannot access Environment.ProcessorCount on WP7. (Security issue.)\n#else\n            : this(Environment.ProcessorCount)\n#endif\n        {\n        }\n\n        /// <summary>\n        /// Creates a new instance of the <see cref=\"WorkStealingScheduler\"/> class.\n        /// </summary>\n        /// <param name=\"numThreads\">The number of threads to create.</param>\n        public WorkStealingScheduler(int numThreads)\n        {\n            tasks = new Queue<Task>();\n            tasksLock = new FastResourceLock();\n            Workers = new List<Worker>(numThreads);\n            for (int i = 0; i < numThreads; i++)\n                Workers.Add(new Worker(this, i));\n\n            for (int i = 0; i < numThreads; i++)\n            {\n                Workers[i].Start();\n            }\n        }\n\n        internal bool TryGetTask(out Task task)\n        {\n            if (tasks.Count == 0)\n            {\n                task = default(Task);\n                return false;\n            }\n\n            using (tasksLock.AcquireExclusiveUsing())\n            {\n                if (tasks.Count > 0)\n                {\n                    task = tasks.Dequeue();\n                    return true;\n                }\n\n                task = default(Task);\n                return false;\n            }\n        }\n\n        /// <summary>\n        /// Schedules a task for execution.\n        /// </summary>\n        /// <param name=\"task\">The task to schedule.</param>\n        public void Schedule(Task task)\n        {\n            System.Diagnostics.Debug.Assert(task.Item.Work != null);\n            if (task.Item.Work == null)\n                return;\n\n            int threads = task.Item.Work.Options.MaximumThreads;\n            var worker = Worker.CurrentWorker;\n\n            if (!task.Item.Work.Options.QueueFIFO && worker != null)\n                worker.AddWork(task);\n            else\n            {\n                using (tasksLock.AcquireExclusiveUsing())\n                    tasks.Enqueue(task);\n            }\n\n            /*\n            if (threads > 1)\n                WorkItem.Replicable = task;\n              */\n            for (int i = 0; i < Workers.Count; i++)\n            {\n                Workers[i].Gate.Set();\n            }\n        }\n    }\n}"
  },
  {
    "path": "Sources/ParallelTasks/Worker.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading;\nusing System.Diagnostics;\nusing System.Threading;\n\n\nnamespace ParallelTasks\n{\n    class Worker\n    {\n        Thread thread;\n        Deque<Task> tasks;\n        WorkStealingScheduler scheduler;\n\n        public bool LookingForWork { get; private set; }\n        public AutoResetEvent Gate { get; private set; }\n\n#if WINDOWS_PHONE\n        // Cannot access Environment.ProcessorCount in phone app. (Security issue).\n        static Hashtable<Thread, Worker> workers = new Hashtable<Thread, Worker>(1);\n#else\n        static Hashtable<Thread, Worker> workers = new Hashtable<Thread, Worker>(Environment.ProcessorCount);\n#endif\n        public static Worker CurrentWorker\n        {\n            get\n            {\n                var currentThread = Thread.CurrentThread;\n                Worker worker;\n                if (workers.TryGet(currentThread, out worker))\n                    return worker;\n                return null;\n            }\n        }\n\n#if XBOX\n        static int affinityIndex;\n#endif\n\n        public Worker(WorkStealingScheduler scheduler, int index)\n        {\n            this.thread = new Thread(Work);\n            this.thread.Name = \"ParallelTasks Worker \" + index;\n            this.thread.IsBackground = true;\n            this.tasks = new Deque<Task>();\n            this.scheduler = scheduler;\n            this.Gate = new AutoResetEvent(false);\n\n            workers.Add(thread, this);\n        }\n\n        public void Start()\n        {\n            thread.Start();\n        }\n\n        public void AddWork(Task task)\n        {\n            tasks.LocalPush(task);\n        }\n\n        private void Work()\n        {\n#if XBOX\n            int i = Interlocked.Increment(ref affinityIndex) - 1;\n            int affinity = Parallel.ProcessorAffinity[i % Parallel.ProcessorAffinity.Length];\n            Thread.CurrentThread.SetProcessorAffinity((int)affinity);\n#endif\n\n            Task task;\n            while (true)\n            {\n                FindWork(out task);\n                task.DoWork();\n\n                //if (tasks.LocalPop(ref task))\n                //{\n                //    task.DoWork();\n                //}\n                //else\n                //    FindWork();\n            }\n        }\n\n        private void FindWork(out Task task)\n        {\n            bool foundWork = false;\n            task = default(Task);\n\n            do\n            {\n                // check our local queue for work\n                if (tasks.LocalPop(ref task))\n                    break;\n\n                // check the global queue for work\n                if (scheduler.TryGetTask(out task))\n                    break;\n\n                /*\n                // look for any replicable tasks\n                var replicable = WorkItem.Replicable;\n                if (replicable.HasValue)\n                {\n                    replicable.Value.DoWork();\n                    WorkItem.SetReplicableNull(replicable);\n\n                    // MartinG@DigitalRune: Continue checking local queue and replicables. \n                    // No need to steal work yet.\n                    continue;\n                }*/\n\n                // try to steal work off other workers\n                for (int i = 0; i < scheduler.Workers.Count; i++)\n                {\n                    var worker = scheduler.Workers[i];\n                    if (worker == this)\n                        continue;\n\n                    if (worker.tasks.TrySteal(ref task))\n                    {\n                        //they are valid right after create\n                        //System.Diagnostics.Debug.Assert(!task.valid);\n                        foundWork = true;\n                        break;\n                    }\n                }   \n                \n                // Wait until a new task gets scheduled.\n                if (!foundWork)\n                    Gate.WaitOne();\n\n            } while (!foundWork);\n        }\n    }\n}\n"
  },
  {
    "path": "Utils/MwmBuilder/Models.bat",
    "content": "%~dp0MwmBuilder.exe /o:%~dp0Output /s:%~dp0Content /v:Centered=false;RescaleFactor=0.01;RescaleToLengthInMeters=false;SpecularPower=10;SpecularShininess=0.8 /l:%~dp0models.log"
  },
  {
    "path": "Utils/MwmBuilder/models.log",
    "content": "Processing model: 'C:\\Users\\OndrejPetrzilka\\MyDocs\\MinerWars_Git\\Utils\\MwmBuilder\\Content\\Custom\\SmallShip_Stanislav.FBX\nProcessing model: 'C:\\Users\\OndrejPetrzilka\\MyDocs\\MinerWars_Git\\Utils\\MwmBuilder\\Content\\Custom\\SmallShip_Stanislav_LOD1.FBX\n"
  },
  {
    "path": "Utils/TraceTool/License.txt",
    "content": "The accompanying program , along with any associated source code and files,\nis licensed under The Common Public License Version 1.0 (CPL) :\nhttp://www.opensource.org/licenses/cpl1.0.php\n"
  },
  {
    "path": "steam_appid.txt",
    "content": "223430"
  }
]